diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..1fb2bc7
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/**|com/ibm/icu/dev/eclipse/|com/ibm/icu/dev/tool/docs/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Java5"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/.externalToolBuilders/icu4j_Resources.launch b/.externalToolBuilders/icu4j_Resources.launch
new file mode 100644
index 0000000..4e3cd7a
--- /dev/null
+++ b/.externalToolBuilders/icu4j_Resources.launch
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="resources,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="resources,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+</launchConfiguration>
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..25edb15
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,316 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+/.classpath -text
+/.project -text
+/eclipseFragment.txt -text
+eclipseProjectMisc/initSrc.launch -text
+eclipseProjectMisc/normSrc.launch -text
+/ee.foundation.jar -text
+localespi/.classpath -text
+localespi/.externalToolBuilders/localespi_jar.launch -text
+localespi/.project -text
+localespi/.settings/org.eclipse.core.resources.prefs -text
+localespi/.settings/org.eclipse.jdt.core.prefs -text
+localespi/.settings/org.eclipse.jdt.ui.prefs -text
+localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider -text
+localespi/src/META-INF/services/java.text.spi.CollatorProvider -text
+localespi/src/META-INF/services/java.text.spi.DateFormatProvider -text
+localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider -text
+localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider -text
+localespi/src/META-INF/services/java.text.spi.NumberFormatProvider -text
+localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider -text
+localespi/src/META-INF/services/java.util.spi.LocaleNameProvider -text
+localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider -text
+localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties -text
+/preprocessor.txt -text
+src/com/ibm/icu/ICUConfig.properties -text
+src/com/ibm/icu/dev/data/rbbi/english.dict -text
+src/com/ibm/icu/dev/data/testdata.jar -text
+src/com/ibm/icu/dev/data/thai6.ucs -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties -text
+src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml -text
+src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml -text
+src/com/ibm/icu/dev/eclipse/pdebuild/build.properties -text
+src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties -text
+src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties -text
+src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt -text
+src/com/ibm/icu/dev/test/rbbi/rbbitst.txt -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat -text
+src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz -text
+src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages -text
+src/com/ibm/icu/dev/tool/tzu/icu.gif -text
+src/com/ibm/icu/dev/tool/tzu/runicutzu.bat -text
+src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd -text
+src/com/ibm/icu/dev/tool/tzu/runicutzu.sh -text
+src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat -text
+src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd -text
+src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh -text
+src/com/ibm/icu/impl/data/icudata.jar -text
+src/com/ibm/icu/impl/duration/impl/data/index.txt -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml -text
+src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml -text
+src/com/ibm/richtext/textapps/resources/unicode.arabic.red -text
+src/com/ibm/richtext/textapps/resources/unicode.hebrew.red -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b8d1806
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/*.jar
+/.clover
+/classes
+/classes.wrapper
+/doc
diff --git a/.project b/.project
new file mode 100644
index 0000000..1a303d7
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>LaunchConfigHandle</key>
+					<value>&lt;project&gt;/.externalToolBuilders/icu4j_Resources.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..c961391
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+#Mon Dec 17 14:42:45 PST 2007
+eclipse.preferences.version=1
+encoding//src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt=UTF-8
+encoding/<project>=US-ASCII
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2ca9d5c
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,329 @@
+#Thu Jul 17 14:46:50 EDT 2008
+eclipse.preferences.version=1
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.3
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=80
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..691a0c0
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,11 @@
+#Thu Jul 17 14:46:50 EDT 2008
+eclipse.preferences.version=1
+formatter_profile=_ICU4J standard
+formatter_settings_version=11
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=false
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n *******************************************************************************\r\n * Copyright (C) ${year}, International Business Machines Corporation and         *\r\n * others. All Rights Reserved.                                                *\r\n *******************************************************************************\r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/APIChangeReport.html b/APIChangeReport.html
new file mode 100644
index 0000000..3c810b5
--- /dev/null
+++ b/APIChangeReport.html
@@ -0,0 +1,577 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>ICU4J API Comparison: ICU4J 3.8.1 with ICU4J 4.0</title>
+<!-- Copyright 2008, IBM, All Rights Reserved. -->
+</head>
+<body>
+<h1>ICU4J API Comparison: ICU4J 3.8.1 with ICU4J 4.0</h1>
+
+<hr/>
+<h2>Removed from ICU4J 3.8.1</h2>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+DateTimePatternGenerator.FormatParser
+<ul>
+<li><span style='color:red'>*internal*  </span>public java.util.List <i>getAutoPatterns</i>(java.lang.String, java.util.List)</li>
+<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getVariableFieldString</i>()</li>
+</ul>
+PluralFormat
+<ul>
+<li>(draft)      public final java.lang.String <i>format</i>(long)</li>
+</ul>
+PluralRules
+<ul>
+<li>(draft)      public java.lang.String <i>select</i>(long)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+CopticCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+DateFormatSymbols
+<ul>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(Calendar, ULocale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(Calendar, java.util.Locale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(java.lang.Class, ULocale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(java.lang.Class, java.util.Locale)</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>initializeData</i>(ULocale, CalendarData)</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Changed in ICU4J 4.0 (old, new)</h2>
+<p>(no API changed)</p>
+
+<hr/>
+<h2>Promoted to stable in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter
+<ul>
+<li>(stable)     public static final int TITLECASE_NO_BREAK_ADJUSTMENT</li>
+<li>(stable)     public static final int TITLECASE_NO_LOWERCASE</li>
+<li>(stable)     public static java.lang.String <i>getName</i>(java.lang.String, java.lang.String)</li>
+<li>(stable)     public static java.lang.String <i>toTitleCase</i>(ULocale, java.lang.String, BreakIterator, int)</li>
+</ul>
+UCharacter.UnicodeBlock
+<ul>
+<li>(stable)     public static final UCharacter.UnicodeBlock BALINESE</li>
+<li>(stable)     public static final int BALINESE_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS</li>
+<li>(stable)     public static final int COUNTING_ROD_NUMERALS_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock CUNEIFORM</li>
+<li>(stable)     public static final int CUNEIFORM_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION</li>
+<li>(stable)     public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock LATIN_EXTENDED_C</li>
+<li>(stable)     public static final int LATIN_EXTENDED_C_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock LATIN_EXTENDED_D</li>
+<li>(stable)     public static final int LATIN_EXTENDED_D_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock NKO</li>
+<li>(stable)     public static final int NKO_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock PHAGS_PA</li>
+<li>(stable)     public static final int PHAGS_PA_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock PHOENICIAN</li>
+<li>(stable)     public static final int PHOENICIAN_ID</li>
+</ul>
+UScript
+<ul>
+<li>(stable)     public static final int BALINESE</li>
+<li>(stable)     public static final int BATAK</li>
+<li>(stable)     public static final int BLISSYMBOLS</li>
+<li>(stable)     public static final int BRAHMI</li>
+<li>(stable)     public static final int CARIAN</li>
+<li>(stable)     public static final int CHAM</li>
+<li>(stable)     public static final int CIRTH</li>
+<li>(stable)     public static final int CUNEIFORM</li>
+<li>(stable)     public static final int DEMOTIC_EGYPTIAN</li>
+<li>(stable)     public static final int EASTERN_SYRIAC</li>
+<li>(stable)     public static final int EGYPTIAN_HIEROGLYPHS</li>
+<li>(stable)     public static final int ESTRANGELO_SYRIAC</li>
+<li>(stable)     public static final int HARAPPAN_INDUS</li>
+<li>(stable)     public static final int HIERATIC_EGYPTIAN</li>
+<li>(stable)     public static final int JAPANESE</li>
+<li>(stable)     public static final int JAVANESE</li>
+<li>(stable)     public static final int KAYAH_LI</li>
+<li>(stable)     public static final int KHUTSURI</li>
+<li>(stable)     public static final int LANNA</li>
+<li>(stable)     public static final int LATIN_FRAKTUR</li>
+<li>(stable)     public static final int LATIN_GAELIC</li>
+<li>(stable)     public static final int LEPCHA</li>
+<li>(stable)     public static final int LINEAR_A</li>
+<li>(stable)     public static final int LYCIAN</li>
+<li>(stable)     public static final int LYDIAN</li>
+<li>(stable)     public static final int MANDAEAN</li>
+<li>(stable)     public static final int MAYAN_HIEROGLYPHS</li>
+<li>(stable)     public static final int MEITEI_MAYEK</li>
+<li>(stable)     public static final int MEROITIC</li>
+<li>(stable)     public static final int MOON</li>
+<li>(stable)     public static final int NKO</li>
+<li>(stable)     public static final int OLD_CHURCH_SLAVONIC_CYRILLIC</li>
+<li>(stable)     public static final int OLD_HUNGARIAN</li>
+<li>(stable)     public static final int OLD_PERMIC</li>
+<li>(stable)     public static final int OL_CHIKI</li>
+<li>(stable)     public static final int ORKHON</li>
+<li>(stable)     public static final int PAHAWH_HMONG</li>
+<li>(stable)     public static final int PHAGS_PA</li>
+<li>(stable)     public static final int PHOENICIAN</li>
+<li>(stable)     public static final int PHONETIC_POLLARD</li>
+<li>(stable)     public static final int REJANG</li>
+<li>(stable)     public static final int RONGORONGO</li>
+<li>(stable)     public static final int SARATI</li>
+<li>(stable)     public static final int SAURASHTRA</li>
+<li>(stable)     public static final int SIGN_WRITING</li>
+<li>(stable)     public static final int SIMPLIFIED_HAN</li>
+<li>(stable)     public static final int SUNDANESE</li>
+<li>(stable)     public static final int TENGWAR</li>
+<li>(stable)     public static final int TRADITIONAL_HAN</li>
+<li>(stable)     public static final int UNKNOWN</li>
+<li>(stable)     public static final int UNWRITTEN_LANGUAGES</li>
+<li>(stable)     public static final int VAI</li>
+<li>(stable)     public static final int VISIBLE_SPEECH</li>
+<li>(stable)     public static final int WESTERN_SYRIAC</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li>(stable)     public class <i>DateTimePatternGenerator</i></li>
+<li>(stable)     public static final class <i>DateTimePatternGenerator.PatternInfo</i></li>
+<li>(stable)     public interface <i>StringTransform</i></li>
+ArabicShapingException
+<ul>
+<li>(stable)     public <i>ArabicShapingException</i>(java.lang.String)</li>
+</ul>
+DateFormat
+<ul>
+<li>(stable)     public static final int NONE</li>
+<li>(stable)     public static final int QUARTER_FIELD</li>
+<li>(stable)     public static final int STANDALONE_QUARTER_FIELD</li>
+<li>(stable)     public static final DateFormat <i>getDateTimeInstance</i>(int, int, ULocale)</li>
+<li>(stable)     public static final DateFormat <i>getInstance</i>(Calendar, ULocale)</li>
+</ul>
+DateFormat.Field
+<ul>
+<li>(stable)     public static final DateFormat.Field QUARTER</li>
+</ul>
+DateFormatSymbols
+<ul>
+<li>(stable)     public static final int ABBREVIATED</li>
+<li>(stable)     public static final int FORMAT</li>
+<li>(stable)     public static final int NARROW</li>
+<li>(stable)     public static final int STANDALONE</li>
+<li>(stable)     public static final int WIDE</li>
+<li>(stable)     public java.lang.String[] <i>getQuarters</i>(int, int)</li>
+<li>(stable)     public void <i>setQuarters</i>(java.lang.String[], int, int)</li>
+</ul>
+DecimalFormatSymbols
+<ul>
+<li>(stable)     public char <i>getMonetaryGroupingSeparator</i>()</li>
+<li>(stable)     public void <i>setMonetaryGroupingSeparator</i>(char)</li>
+</ul>
+MessageFormat
+<ul>
+<li>(stable)     public static java.lang.String <i>format</i>(java.lang.String, java.util.Map)</li>
+<li>(stable)     public final java.lang.StringBuffer <i>format</i>(java.util.Map, java.lang.StringBuffer, java.text.FieldPosition)</li>
+<li>(stable)     public java.util.Map <i>parseToMap</i>(java.lang.String)</li>
+<li>(stable)     public java.util.Map <i>parseToMap</i>(java.lang.String, java.text.ParsePosition)</li>
+<li>(stable)     public void <i>setFormatByArgumentName</i>(java.lang.String, java.text.Format)</li>
+<li>(stable)     public void <i>setFormatsByArgumentName</i>(java.util.Map)</li>
+<li>(stable)     public boolean <i>usesNamedArguments</i>()</li>
+</ul>
+Normalizer
+<ul>
+<li>(stable)     public static int <i>getFC_NFKC_Closure</i>(int, char[])</li>
+<li>(stable)     public static java.lang.String <i>getFC_NFKC_Closure</i>(int)</li>
+</ul>
+NumberFormat
+<ul>
+<li>(stable)     public boolean <i>isParseStrict</i>()</li>
+<li>(stable)     public void <i>setParseStrict</i>(boolean)</li>
+</ul>
+StringPrepParseException
+<ul>
+<li>(stable)     public static final int DOMAIN_NAME_TOO_LONG_ERROR</li>
+<li>(stable)     public int <i>getError</i>()</li>
+</ul>
+Transliterator
+<ul>
+<li>(stable)     public java.lang.String <i>transform</i>(java.lang.String)</li>
+</ul>
+UnicodeSet
+<ul>
+<li>(stable)     public static final int CASE</li>
+<li>(stable)     public static final int IGNORE_SPACE</li>
+<li>(stable)     public <i>UnicodeSet</i>(java.lang.String, int)</li>
+<li>(stable)     public java.lang.StringBuffer <i>_generatePattern</i>(java.lang.StringBuffer, boolean, boolean)</li>
+<li>(stable)     public UnicodeSet <i>applyPattern</i>(java.lang.String, int)</li>
+<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
+<li>(stable)     public UnicodeSet <i>closeOver</i>(int)</li>
+<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
+<li>(stable)     public boolean <i>isFrozen</i>()</li>
+</ul>
+UnicodeSetIterator
+<ul>
+<li>(draft)      public java.lang.String <i>getString</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li>(stable)     public class <i>AnnualTimeZoneRule</i></li>
+<li>(stable)     public abstract class <i>BasicTimeZone</i></li>
+<li>(stable)     public class <i>DateTimeRule</i></li>
+<li>(stable)     public class <i>IndianCalendar</i></li>
+<li>(stable)     public class <i>InitialTimeZoneRule</i></li>
+<li>(stable)     public class <i>RuleBasedTimeZone</i></li>
+<li>(stable)     public class <i>TaiwanCalendar</i></li>
+<li>(stable)     public class <i>TimeArrayTimeZoneRule</i></li>
+<li>(stable)     public abstract class <i>TimeZoneRule</i></li>
+<li>(stable)     public class <i>TimeZoneTransition</i></li>
+<li>(stable)     public class <i>UResourceBundleIterator</i></li>
+<li>(stable)     public class <i>VTimeZone</i></li>
+BuddhistCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+ByteArrayWrapper
+<ul>
+<li>(stable)     public <i>ByteArrayWrapper</i>(byte[], int)</li>
+<li>(stable)     public <i>ByteArrayWrapper</i>(java.nio.ByteBuffer)</li>
+<li>(stable)     public final ByteArrayWrapper <i>append</i>(byte[], int, int)</li>
+<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
+<li>(stable)     public ByteArrayWrapper <i>ensureCapacity</i>(int)</li>
+<li>(stable)     public boolean <i>equals</i>(java.lang.Object)</li>
+<li>(stable)     public int <i>hashCode</i>()</li>
+<li>(stable)     public final ByteArrayWrapper <i>set</i>(byte[], int, int)</li>
+<li>(stable)     public java.lang.String <i>toString</i>()</li>
+</ul>
+Calendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+ChineseCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+CopticCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+GregorianCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+HebrewCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+IslamicCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+JapaneseCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+SimpleTimeZone
+<ul>
+<li>(stable)     public TimeZoneTransition <i>getNextTransition</i>(long, boolean)</li>
+<li>(stable)     public TimeZoneTransition <i>getPreviousTransition</i>(long, boolean)</li>
+<li>(stable)     public TimeZoneRule[] <i>getTimeZoneRules</i>()</li>
+</ul>
+TimeZone
+<ul>
+<li>(stable)     public static synchronized java.lang.String <i>getTZDataVersion</i>()</li>
+</ul>
+UResourceBundle
+<ul>
+<li>(stable)     public static final int ARRAY</li>
+<li>(stable)     public static final int BINARY</li>
+<li>(stable)     public static final int INT</li>
+<li>(stable)     public static final int INT_VECTOR</li>
+<li>(stable)     public static final int NONE</li>
+<li>(stable)     public static final int STRING</li>
+<li>(stable)     public static final int TABLE</li>
+<li>(stable)     public UResourceBundle <i>get</i>(int)</li>
+<li>(stable)     public UResourceBundle <i>get</i>(java.lang.String)</li>
+<li>(stable)     public byte[] <i>getBinary</i>(byte[])</li>
+<li>(stable)     public java.nio.ByteBuffer <i>getBinary</i>()</li>
+<li>(stable)     public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, ULocale, java.lang.ClassLoader)</li>
+<li>(stable)     public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, java.util.Locale, java.lang.ClassLoader)</li>
+<li>(stable)     public int <i>getInt</i>()</li>
+<li>(stable)     public int[] <i>getIntVector</i>()</li>
+<li>(stable)     public UResourceBundleIterator <i>getIterator</i>()</li>
+<li>(stable)     public java.lang.String <i>getKey</i>()</li>
+<li>(stable)     public java.util.Enumeration <i>getKeys</i>()</li>
+<li>(stable)     public int <i>getSize</i>()</li>
+<li>(stable)     public java.lang.String <i>getString</i>()</li>
+<li>(stable)     public java.lang.String <i>getString</i>(int)</li>
+<li>(stable)     public java.lang.String[] <i>getStringArray</i>()</li>
+<li>(stable)     public int <i>getType</i>()</li>
+<li>(stable)     public int <i>getUInt</i>()</li>
+<li>(stable)     public VersionInfo <i>getVersion</i>()</li>
+<li>(stable)     protected UResourceBundle <i>handleGet</i>(int, java.util.HashMap, UResourceBundle)</li>
+<li>(stable)     protected UResourceBundle <i>handleGet</i>(java.lang.String, java.util.HashMap, UResourceBundle)</li>
+<li>(stable)     protected java.util.Enumeration <i>handleGetKeys</i>()</li>
+<li>(stable)     protected java.lang.Object <i>handleGetObject</i>(java.lang.String)</li>
+<li>(stable)     protected java.lang.String[] <i>handleGetStringArray</i>()</li>
+</ul>
+UniversalTimeScale
+<ul>
+<li>(stable)     public static final int UNIX_MICROSECONDS_TIME</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Added in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter.GraphemeClusterBreak
+<ul>
+<li>(stable)     public static final int PREPEND</li>
+<li>(stable)     public static final int SPACING_MARK</li>
+</ul>
+UCharacter.JoiningGroup
+<ul>
+<li>(stable)     public static final int BURUSHASKI_YEH_BARREE</li>
+</ul>
+UCharacter.SentenceBreak
+<ul>
+<li>(stable)     public static final int CR</li>
+<li>(stable)     public static final int EXTEND</li>
+<li>(stable)     public static final int LF</li>
+<li>(stable)     public static final int SCONTINUE</li>
+</ul>
+UCharacter.UnicodeBlock
+<ul>
+<li>(draft)      public static final UCharacter.UnicodeBlock ANCIENT_SYMBOLS</li>
+<li>(draft)      public static final int ANCIENT_SYMBOLS_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CARIAN</li>
+<li>(draft)      public static final int CARIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CHAM</li>
+<li>(draft)      public static final int CHAM_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CYRILLIC_EXTENDED_A</li>
+<li>(draft)      public static final int CYRILLIC_EXTENDED_A_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CYRILLIC_EXTENDED_B</li>
+<li>(draft)      public static final int CYRILLIC_EXTENDED_B_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock DOMINO_TILES</li>
+<li>(draft)      public static final int DOMINO_TILES_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock KAYAH_LI</li>
+<li>(draft)      public static final int KAYAH_LI_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LEPCHA</li>
+<li>(draft)      public static final int LEPCHA_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LYCIAN</li>
+<li>(draft)      public static final int LYCIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LYDIAN</li>
+<li>(draft)      public static final int LYDIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock MAHJONG_TILES</li>
+<li>(draft)      public static final int MAHJONG_TILES_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock OL_CHIKI</li>
+<li>(draft)      public static final int OL_CHIKI_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock PHAISTOS_DISC</li>
+<li>(draft)      public static final int PHAISTOS_DISC_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock REJANG</li>
+<li>(draft)      public static final int REJANG_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock SAURASHTRA</li>
+<li>(draft)      public static final int SAURASHTRA_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock SUNDANESE</li>
+<li>(draft)      public static final int SUNDANESE_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock VAI</li>
+<li>(draft)      public static final int VAI_ID</li>
+</ul>
+UCharacter.WordBreak
+<ul>
+<li>(stable)     public static final int CR</li>
+<li>(stable)     public static final int EXTEND</li>
+<li>(stable)     public static final int LF</li>
+<li>(stable)     public static final int MIDNUMLET</li>
+<li>(stable)     public static final int NEWLINE</li>
+</ul>
+UScript
+<ul>
+<li>(draft)      public static final int AVESTAN</li>
+<li>(draft)      public static final int BOOK_PAHLAVI</li>
+<li>(draft)      public static final int CHAKMA</li>
+<li>(draft)      public static final int IMPERIAL_ARAMAIC</li>
+<li>(draft)      public static final int INSCRIPTIONAL_PAHLAVI</li>
+<li>(draft)      public static final int INSCRIPTIONAL_PARTHIAN</li>
+<li>(draft)      public static final int KAITHI</li>
+<li>(draft)      public static final int KOREAN</li>
+<li>(draft)      public static final int MANICHAEAN</li>
+<li>(draft)      public static final int MATHEMATICAL_NOTATION</li>
+<li>(draft)      public static final int PSALTER_PAHLAVI</li>
+<li>(draft)      public static final int SAMARITAN</li>
+<li>(draft)      public static final int SYMBOLS</li>
+<li>(draft)      public static final int TAI_VIET</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li>(draft)      public class <i>DateIntervalFormat</i></li>
+<li>(draft)      public class <i>DateIntervalInfo</i></li>
+<li>(draft)      public static final class <i>DateIntervalInfo.PatternInfo</i></li>
+<li>(draft)      public class <i>TimeUnitFormat</i></li>
+DateFormat
+<ul>
+<li>(draft)      public static final java.lang.String ABBR_MONTH</li>
+<li>(draft)      public static final java.lang.String ABBR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String ABBR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String ABBR_STANDALONE_MONTH</li>
+<li>(draft)      public static final java.lang.String DAY</li>
+<li>(draft)      public static final java.lang.String HOUR</li>
+<li>(draft)      public static final java.lang.String HOUR24_MINUTE</li>
+<li>(draft)      public static final java.lang.String HOUR24_MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String HOUR_GENERIC_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_GENERIC_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_TZ</li>
+<li>(draft)      public static final java.lang.String MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String MONTH</li>
+<li>(draft)      public static final java.lang.String MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String STANDALONE_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_QUARTER</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_QUARTER</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(Calendar, java.lang.String, ULocale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(Calendar, java.lang.String, java.util.Locale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String, ULocale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String, java.util.Locale)</li>
+</ul>
+DateTimePatternGenerator.FormatParser
+<ul>
+<li><span style='color:red'>*internal*  </span>public DateTimePatternGenerator.FormatParser <i>set</i>(java.lang.String, boolean)</li>
+</ul>
+DateTimePatternGenerator.VariableField
+<ul>
+<li><span style='color:red'>*internal*  </span>public <i>DateTimePatternGenerator.VariableField</i>(java.lang.String, boolean)</li>
+<li><span style='color:red'>*internal*  </span>public int <i>getType</i>()</li>
+</ul>
+DictionaryBasedBreakIterator
+<ul>
+<li><span style='color:red'>*internal*  </span>protected <i>DictionaryBasedBreakIterator</i>(java.io.InputStream)</li>
+</ul>
+NumberFormat
+<ul>
+<li>(draft)      public int <i>getRoundingMode</i>()</li>
+<li>(draft)      public void <i>setRoundingMode</i>(int)</li>
+</ul>
+PluralFormat
+<ul>
+<li>(draft)      public final java.lang.String <i>format</i>(double)</li>
+</ul>
+PluralRules
+<ul>
+<li>(draft)      public java.lang.String <i>select</i>(double)</li>
+</ul>
+SimpleDateFormat
+<ul>
+<li><span style='color:red'>*internal*  </span>public final java.lang.StringBuffer <i>intervalFormatByAlgorithm</i>(Calendar, Calendar, java.lang.StringBuffer, java.text.FieldPosition)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li>(draft)      public final class <i>DateInterval</i></li>
+<li>(draft)      public class <i>TimeUnit</i></li>
+<li>(draft)      public class <i>TimeUnitAmount</i></li>
+ChineseCalendar
+<ul>
+<li>(draft)      public <i>ChineseCalendar</i>(TimeZone)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(ULocale)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(int, int, int, int)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(int, int, int, int, int, int, int)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(java.util.Date)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(java.util.Locale)</li>
+</ul>
+CopticCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>protected int <i>getJDEpochOffset</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>handleComputeFields</i>(int)</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetExtendedYear</i>()</li>
+</ul>
+Currency
+<ul>
+<li>(draft)      public static java.lang.String[] <i>getAvailableCurrencyCodes</i>(ULocale, java.util.Date)</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>protected int <i>getJDEpochOffset</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>handleComputeFields</i>(int)</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetExtendedYear</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetLimit</i>(int, int)</li>
+</ul>
+JapaneseCalendar
+<ul>
+<li>(draft)      public int <i>getActualMaximum</i>(int)</li>
+</ul>
+Measure
+<ul>
+<li>(draft)      public static boolean <i>numbersEqual</i>(java.lang.Number, java.lang.Number)</li>
+</ul>
+TimeZone
+<ul>
+<li>(draft)      public static final int TIMEZONE_ICU</li>
+<li>(draft)      public static final int TIMEZONE_JDK</li>
+<li>(draft)      public static java.lang.String <i>getCanonicalID</i>(java.lang.String)</li>
+<li>(draft)      public static java.lang.String <i>getCanonicalID</i>(java.lang.String, boolean[])</li>
+<li>(draft)      public static int <i>getDefaultTimeZoneType</i>()</li>
+<li>(draft)      public static synchronized TimeZone <i>getTimeZone</i>(java.lang.String, int)</li>
+<li>(draft)      public static synchronized void <i>setDefaultTimeZoneType</i>(int)</li>
+</ul>
+ULocale
+<ul>
+<li>(draft)      public static ULocale <i>addLikelySubtags</i>(ULocale)</li>
+<li>(draft)      public java.lang.String <i>getCharacterOrientation</i>()</li>
+<li>(draft)      public java.lang.String <i>getLineOrientation</i>()</li>
+<li>(draft)      public static ULocale <i>minimizeSubtags</i>(ULocale)</li>
+</ul>
+</ul>
+
+<hr/>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Thu Jun 26 01:29:42 EDT 2008<br/>Copyright (C) 2008, International Business Machines Corporation, All Rights Reserved.</font></i></p>
+</body>
+</html>
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..a4e66f8
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,30 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties file for ICU4J builds. 
+#*
+
+# spec version won't be changed in a feature stream
+icu4j.spec.version.string=4.1
+
+# impl version will be updated for maintenance releases.
+# It must be <icu4j.spec.version.string>[.<maint-version>]
+icu4j.impl.version.string=4.1.1
+
+# data version number won't be changed in a feature stream
+icu4j.data.version.number=41
+
+# these version numbers are used by API change report
+icu4j.version.number=411
+icu4j.previous.version.number=400
+
+current.year=2008
+api.report.out=${api.dir}/icu4j_compare_${icu4j.previous.version.number}_${icu4j.version.number}.html
+copyright=Copyright (c) 2000-2008, International Business Machines Corporation and others.  All Rights Reserved.
+corp=IBM Corporation
+default.target.rt.version=J2SE15
+
+icu4j.plugin.impl.version.string=4.1.0
+copyright.eclipse=Licensed Materials - Property of IBM \n (C) Copyright IBM Corp. 2000, 2008. All Rights Reserved. \n IBM is a registered trademark of IBM Corp.
\ No newline at end of file
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..3424e0e
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,2227 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 1997-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+* This is the ant build file for ICU4J.  See readme.html for more information.
+*/
+-->
+
+<project name="icu4j" default="core" basedir=".">
+
+  <!-- ### Begin Clover 2.x setup ### -->
+  <taskdef resource="cloverlib.xml" onerror="ignore" />
+
+  <target name="with.clover">
+    <mkdir dir="tmp/" />
+    <clover-setup initString="tmp/icu4j.db">
+      <files>
+        <exclude name="**/dev/**/*.java" />
+      </files>
+      <methodContext name="API" regexp="(.* )?public .*" />
+    </clover-setup>
+  </target>
+
+  <target name="clover.summary" depends="with.clover">
+    <clover-report>
+      <current outfile="icu4j_html" summary="true">
+        <format type="html" srcLevel="false" />
+      </current>
+    </clover-report>
+  </target>
+  <target name="clover.report" depends="with.clover">
+    <clover-report>
+      <current outfile="icu4j_html">
+        <format type="html" />
+      </current>
+    </clover-report>
+  </target>
+  <target name="clover.log" depends="with.clover">
+    <clover-log level="method" filter="private">
+      <package name="com.ibm.icu.text" />
+      <package name="com.ibm.icu.lang" />
+      <package name="com.ibm.icu.math" />
+      <package name="com.ibm.icu.util" />
+      <package name="com.ibm.icu.charset" />
+    </clover-log>
+  </target>
+
+  <!-- ### End Clover 2.x setup ### -->
+
+  <target name="checkAntVersion">
+    <condition property="supported.ant.version">
+      <or>
+        <contains string="${ant.version}" substring="1.6." />
+        <contains string="${ant.version}" substring="1.7." />
+        <contains string="${ant.version}" substring="1.8." /> <!-- just in case -->
+      </or>
+    </condition>
+    <antcall target="warnAntVersion" />
+  </target>
+
+  <target name="warnAntVersion" unless="supported.ant.version">
+    <echo message="####################### WARNING #######################" />
+    <echo message="The version of ant used by the current configuration" />
+    <echo message="may not work well with this build script file.  Please" />
+    <echo message="use ant 1.6 or later version." />
+    <echo message="#######################################################" />
+  </target>
+
+  <target name="init" depends="initBase,initSrc"/>
+
+  <target name="initBase"
+          depends="checkAntVersion"
+          description="Initialized ICU4J build environment">
+    <tstamp />
+    <property name="src.dir" value="src" />
+    <property name="build.dir" value="classes" />
+    <property name="api.dir" value="${src.dir}/com/ibm/icu/dev/tool/docs" />
+    <property name="doc.dir" value="doc" />
+    <property name="icudatajar.file" value="${src.dir}/com/ibm/icu/impl/data/icudata.jar" />
+    <property name="testjar.file" value="icu4jtests.jar" />
+    <property name="jar.file" value="icu4j.jar" />
+    <property name="demos-jar.file" value="icu4jdemos.jar" />
+    <property name="charsets.jar.file" value="icu4j-charsets.jar" />
+    <property name="jarSrc.file" value="icu4jsrc.jar" />
+    <property name="zipTestSrc.file" value="icu4jtsrc.zip" />
+    <property name="jdk.wrapper.jar.file" value="icu4jwrapper.jar" />
+    <property name="fragment.jar.file" value="icu4jfragment.jar" />
+    <property name="eclipse.dir" value="${src.dir}/com/ibm/icu/dev/eclipse" />
+    <property name="eclipse.projects.dir" value="eclipseProjects" />
+    <property name="wrapper.build.dir" value="classes.wrapper" />
+    <property name="jarDocs.file" value="icu4jdocs.jar" />
+    <property name="ime.translit.jar.file" value="icutransime.jar" />
+    <property name="ime.indic.jar.file" value="icuindicime.jar" />
+    <property name="ime.translit.manifest" value="${src.dir}/com/ibm/icu/dev/tool/ime/translit/manifest.stub" />
+    <property name="ime.indic.manifest" value="${src.dir}/com/ibm/icu/dev/tool/ime/indic/manifest.stub" />
+    <property name="zip.file" value="../icu4j${DSTAMP}.zip" />
+    <property name="zipSrc.file" value="../icu4jSrc${DSTAMP}.zip" />
+    <property name="tzu.src.path" value="com/ibm/icu/dev/tool/tzu" />
+    <property name="tzu.bin.dir" value="${basedir}/icu4jtzu" />
+    <property name="tzu.jar.file" value="icutzu.jar" />
+    <property name="tzu.test.dir" value="${basedir}/icu4jtzu/test" />
+    <property name="tzu.temp.dir" value="${basedir}/icu4jtzu/Temp" />
+    <property name="tzu.src.zip.file" value="icutzu-src.zip" />
+    <property name="tzu.bin.zip.file" value="icutzu-bin.zip" />
+    <property file="build.properties" />
+    <!-- fix the data folder every time there is a version update-->
+
+    <property name="icu4j.data.path" value="com/ibm/icu/impl/data/icudt${icu4j.data.version.number}b" />
+    <property name="icu4j.testdata.path" value="com/ibm/icu/dev/data/testdata" />
+    <property name="icu4j.javac.source" value="1.3" />
+    <property name="icu4j.javac.target" value="1.3" />
+
+    <path id="build.classpath">
+      <pathelement path="${build.dir}" />
+    </path>
+
+    <property name="richedit.dir" value="richedit" />
+    <property name="richedit.doc.dir" value="${richedit.dir}/doc" />
+    <property name="richedit.jar.file" value="${richedit.dir}/richedit.jar" />
+    <property name="richedit.zip.file" value="${richedit.dir}/richedit.zip" />
+    <property name="richedit.manifest" value="${src.dir}/com/ibm/richtext/manifest.stub" />
+
+    <!-- Load environment variables -->
+    <property environment="env" />
+
+    <!-- Capture the computer name in a cross-platform manner -->
+    <property name="env.COMPUTERNAME" value="${env.HOSTNAME}" />
+
+    <!-- JavaDoc params -->
+    <property name="doc.params" value="-breakiterator -use -tagletpath ./classes -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -group 'ICU Core' 'com.ibm.icu.lang*:com.ibm.icu.math*:com.ibm.icu.text*:com.ibm.icu.util*:com.ibm.icu.charset' -group 'ICU Tests' 'com.ibm.icu.dev.test*' -group 'Demos' 'com.ibm.icu.dev.demo*' -group 'ICU Tools' 'com.ibm.icu.dev*'" />
+    <property name="richeditdoc.params" value="-breakiterator -use -tagletpath ./classes -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -group 'Rich Text Editing' 'com.ibm.richtext*'" />
+
+    <mkdir dir="${build.dir}" />
+
+    <echo message="java home: ${java.home}" />
+    <echo message="java version: ${java.version}" />
+    <echo message="ant java version: ${ant.java.version}" />
+    <echo message="${ant.version}" />
+    <echo message="${env.COMPUTERNAME} with ${os.name} ${os.version} on ${os.arch}" />
+    <echo message="clover initstring = '${clover.initstring}'" />
+
+    <!-- ## Java version dependent build configuration ##-->
+ 
+    <!-- JRE lib version used for building ICU4J -->
+    <condition property="target.rt.version" value="J2SE13">
+      <contains string="${java.version}" substring="1.3." />
+    </condition>
+    <condition property="target.rt.version" value="J2SE14">
+      <contains string="${java.version}" substring="1.4." />
+    </condition>
+    <condition property="target.rt.version" value="J2SE15">
+      <contains string="${java.version}" substring="1.5." />
+    </condition>
+    <condition property="target.rt.version" value="JAVASE6">
+      <contains string="${java.version}" substring="1.6." />
+    </condition>
+
+    <fail message="Failed to detect Java runtime library version used for building ICU4J"
+          unless="target.rt.version" />
+    <echo message="target runtime environment: ${target.rt.version}" />
+
+    <condition property="default.java.build.target">
+      <equals arg1="${target.rt.version}" arg2="${default.target.rt.version}" />
+    </condition>
+
+    <!-- Specification title in manifest file -->
+    <condition property="manifest.specification.title" value="ICU4J Compatible Build for ${target.rt.version}">
+      <not>
+        <isset property="default.java.build.target" />
+      </not>
+    </condition>
+    <property name="manifest.specification.title" value="ICU4J" />
+
+    <condition property="before.java14">
+      <or>
+        <equals arg1="${target.rt.version}" arg2="FOUNDATION10"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE13"/>
+      </or>
+    </condition>
+
+    <condition property="before.java15">
+      <or>
+        <equals arg1="${target.rt.version}" arg2="FOUNDATION10"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE13"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE14"/>
+      </or>
+    </condition>
+
+    <!-- JVM arguments for running test cases -->
+    <condition property="test.jvm.args" value="-Xms224m -Xmx256m">
+        <isset property="before.java14" />
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m -Xdisableexcessivegc">
+      <and>
+        <not>
+          <isset property="before.java15" />
+        </not>
+        <equals arg1="${java.vm.vendor}" arg2="IBM Corporation"/>
+      </and>
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m -Djava.awt.headless=true">
+      <and>
+        <equals arg1="${os.name}" arg2="Mac OS X"/>
+      </and>
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m">
+      <not>
+        <isset property="test.jvm.args" />
+      </not>
+    </condition>
+
+    <uptodate property="icu4j.resources" targetfile="${src.dir}/com/ibm/icu/impl/data">
+      <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
+      <srcfiles dir="${build.dir}" includes="${icu4j.data.path}/res_index.res" />
+    </uptodate>
+
+    <uptodate property="icu4j.testdata.resources" targetfile="${src.dir}/com/ibm/icu/dev/data">
+      <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
+      <srcfiles dir="${build.dir}" includes="${icu4j.testdatadata.path}/root.res" />
+    </uptodate>
+
+    <uptodate property="icu4j.module.resources" targetfile="${icudatajar.file}">
+      <srcfiles dir="${build.dir}" includes="${icu4j.data.path}/*.icu" />
+    </uptodate>
+    <!-- <echo message="icu4j.module.resources result: ${icu4j.module.resources}" /> -->
+    <tstamp>
+      <format property="date.time" pattern="yyyy-MM-dd 'at' hh:mm:ss z" locale="en,US" />
+    </tstamp>
+
+    <echo message="Initialized at ${date.time}" />
+  </target>
+
+  <target name="displayBuildEnvWarning" unless="default.java.build.target">
+    <echo message="####################### WARNING #######################" />
+    <echo message="The JDK version used by the current build environment" />
+    <echo message="does not match the reference JDK version for this" />
+    <echo message="ICU4J release.  The build outputs may not be identical" />
+    <echo message="to the official ICU4J binary distribution." />
+    <echo message="#######################################################" />
+  </target>
+
+  <target name="initSrc"
+          depends="buildMangle"
+          description="Run the preprocessor tool to modify Java sources for the Java runtime lib currently used.">
+    <antcall target="displayBuildEnvWarning" />
+    <!-- Build CodeMangler -->
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}">
+      <include name="com/ibm/icu/dev/tool/docs/CodeMangler.java" />
+    </javac>
+    <!-- Run CodeMangler -->
+    <antcall target="doMangle">
+      <param name="target.defs" value="${target.rt.version}" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="normSrc"
+          depends="buildMangle"
+          description="Run the preprocessor to normalize Java sources to the ICU source repository target JDK version">
+    <antcall target="doMangle">
+      <param name="target.defs" value="${default.target.rt.version}" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="buildMangle" depends="initBase">
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}">
+      <include name="com/ibm/icu/dev/tool/docs/CodeMangler.java" />
+    </javac>
+  </target>
+
+  <target name="doMangle" unless="dontMangle">
+    <echo message="Running source code preprocessor for [${target.defs}]"/>
+    <java classname="com.ibm.icu.dev.tool.docs.CodeMangler" classpath="${build.dir}" logError="true" fork="true" dir="${basedir}">
+      <arg value="-d${target.defs}" />
+      <arg value="${input.file}" />
+    </java>
+  </target>
+
+  <!-- build everything but dist-related stuff -->
+  <target name="all" depends="core,tests,tools,richedit,demos,jar,docs" description="build all primary targets" />
+
+  <target name="resources" depends="icudata,coreData,durationdata,testdata" description="builds all the resources" />
+
+  <target name="icudata" depends="initBase" if="icu4j.resources">
+    <!-- use this target to force resources to be rebuilt -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}" />
+    <touch file="${build.dir}/${icu4j.data.path}/res_index.res" />
+    <copy todir="${build.dir}/META-INF">
+      <fileset dir="${src.dir}/META-INF" includes="**/*" />
+    </copy>
+  </target>
+
+  <target name="durationdata" depends="initBase">
+    <copy todir="${build.dir}/com/ibm/icu/impl/duration/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/duration/impl/data" includes="index.txt, pfd*.xml"/>
+    </copy>
+  </target>
+
+  <!--
+    use this target to conditionally build resources only if icu4j.resources is set
+    <target name="icu" depends="init" if="icu4j.resources">
+        <unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
+        <touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
+    </target>
+ -->
+
+  <!-- core does not build richedit or tests -->
+  <target name="core" depends="init,coreData,icudata,durationdata" description="build core classes and data">
+    <javac  sourcepath=""
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off"
+            encoding="ascii">
+      <include name="com/ibm/icu/charset/**/*.java" unless="before.java14" />
+      <include name="com/ibm/icu/impl/**/*.java" />
+      <include name="com/ibm/icu/lang/**/*.java" />
+      <include name="com/ibm/icu/math/**/*.java" />
+      <include name="com/ibm/icu/text/**/*.java" />
+      <include name="com/ibm/icu/util/**/*.java" />
+    </javac>
+  </target>
+
+  <target name="tests" depends="core,testdata" description="build tests">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <exclude name="com/ibm/icu/dev/test/charset/**/*.java" if="before.java14" />
+      <exclude name="com/ibm/icu/dev/test/perf/**/*.java" if="before.java14" />
+      <include name="com/ibm/icu/dev/test/**/*.java" />
+    </javac>
+
+  </target>
+
+  <target name="demos" depends="core,testdata" unless="before.java14" description="build demos">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/demo/**/*.java" />
+      <include name="com/ibm/icu/dev/demo/*.java" />
+    </javac>
+  </target>
+
+  <target name="indices" depends="icudata,build_indexgenerator">
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/rbnf" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/coll" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/translit" />
+    </java>
+  </target>
+
+  <target name="tools"
+          depends="core"
+          unless="before.java14"
+          description="build tools">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <exclude name="com/ibm/icu/dev/tool/cldr/*" />
+      <exclude name="com/ibm/icu/dev/tool/localeconverter/*" if="before.java15" />
+      <include name="com/ibm/icu/dev/tool/**/*.java" />
+    </javac>
+  </target>
+
+  <target name="build_indexgenerator" depends="initBase">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/tool/index/IndexGenerator.java" />
+    </javac>
+  </target>
+
+  <target name="docs" depends="init,docs13,docs14plus" description="build user javadoc" />
+
+  <target name="docs13" if="before.java14">
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.lang,com.ibm.icu.text,com.ibm.icu.util,com.ibm.icu.math"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              link="http://java.sun.com/j2se/1.3/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="docs14plus" depends="tools" unless="before.java14">
+    <echo message="doc params: ${doc.params}" />
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.lang,com.ibm.icu.text,com.ibm.icu.util,com.ibm.icu.charset,com.ibm.icu.math,com.ibm.icu.dev"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              additionalparam="${doc.params}"
+              link="http://java.sun.com/j2se/1.5/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="fulldocs" depends="tools" unless="before.java14" description="build all javadoc">
+    <echo message="doc params: ${doc.params}" />
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.*"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              additionalparam="${doc.params}"
+              link="http://java.sun.com/j2se/1.5/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="coreData" depends="initBase">
+    <copy todir="${build.dir}/com/ibm/icu/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/data" includes="*.icu,*.spp,*.brk" excludes="Transliterator_Han_Latin_*.txt" />
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/ICUConfig.properties" todir="${build.dir}/com/ibm/icu"/>
+  </target>
+
+  <target name="testdata" depends="initBase">
+    <copy file="${src.dir}/com/ibm/icu/dev/data/rbbi/english.dict" todir="${build.dir}/com/ibm/icu/dev/data/rbbi" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/rbbi/rbbitst.txt" todir="${build.dir}/com/ibm/icu/dev/test/rbbi" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml" todir="${build.dir}/com/ibm/icu/dev/test/charsetdet" />
+    <copy todir="${build.dir}/com/ibm/icu/dev/test/serializable/data">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/test/serializable/data">
+        <include name="**/*.dat" />
+      </fileset>
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/dev/data/riwords.txt" todir="${build.dir}/com/ibm/icu/dev/data" />
+    <copy file="${src.dir}/com/ibm/icu/dev/data/IDNATestInput.txt" todir="${build.dir}/com/ibm/icu/dev/data" />
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/data/*.java" />
+      <include name="com/ibm/icu/dev/data/resources/*.java" />
+    </javac>
+    <copy todir="${build.dir}/com/ibm/icu/dev/data">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data" includes="*.spp,*.txt" />
+    </copy>
+    <copy todir="${build.dir}/com/ibm/icu/dev/data/unicode/">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data/unicode/" includes="*.txt" />
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt" todir="${build.dir}/com/ibm/icu/dev/test/format" />
+    <copy todir="${build.dir}/com/ibm/icu/dev/data/resources/">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data/resources/" includes="*.properties" />
+    </copy>
+    <copy todir="${build.dir}/com/ibm/icu/dev/test/duration/testdata">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/test/duration/testdata/" includes="testdata*.txt" />
+    </copy>
+    <!-- use this target to force resources to be rebuilt -->
+    <unjar src="${src.dir}/com/ibm/icu/dev/data/testdata.jar" dest="${build.dir}" />
+    <touch file="${build.dir}/${icu4j.testdata.path}/root.res" />
+  </target>
+
+  <!-- builds richedit and richedit tests -->
+  <target name="richedit" depends="init" description="build richedit classes and tests">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/richtext/**/*.java" />
+    </javac>
+    <copy todir="${build.dir}/com/ibm/richtext/textapps/resources" overwrite="yes" includeEmptyDirs="no">
+      <fileset dir="${src.dir}/com/ibm/richtext/textapps/resources" includes="*.red" />
+    </copy>
+  </target>
+
+  <!-- Creates the 3 release jar archives for distribution -->
+  <target name="jarRelease" depends="jar,jarSrc,jarDocs" />
+
+  <target name="jar"
+          depends="core,indices,charsetsJar"
+          description="build 'icu4j.jar' jar file">
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html,unicode-license.txt" />
+      <fileset dir="${src.dir}" includes="com/ibm/icu/ICUConfig.properties" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*" excludes="META-INF/services/**/*,com/ibm/icu/charset/**/*,${icu4j.data.path}/*.cnv,${icu4j.data.path}/cnvalias.icu" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="${manifest.specification.title}" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="charsetsJar"
+          depends="core,indices"
+          unless="before.java14"
+          description="build  'icu4j-charstes.jar' jar file">
+    <echo message="${icu4j.data.path}/cnvalias.icu"/>
+    <jar jarfile="${charsets.jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html, unicode-license.txt" />
+      <fileset dir="${build.dir}"
+        includes="META-INF/services/**/*,com/ibm/icu/charset/**/*,${icu4j.data.path}/*.cnv,${icu4j.data.path}/cnvalias.icu" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Charsets" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Charsets" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarTests" depends="tests,jar" description="build runtime 'icu4jtests.jar' jar file">
+    <jar jarfile="${testjar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/test/**/*" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/data/**/*" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Tests" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Tests" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarSrc" depends="init,normSrc" description="build source 'icu4jsrc.jar' jar file">
+    <!--Create a jar archive of just the source for distribution.  The
+        jar file will be created in the directory above the root ICU4J
+        directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
+        and ${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt
+        eliminates old archive copies like SpecialCasing-2.txt and
+        UnicodeData-2.1.8.txt -->
+    <jar  jarfile="${jarSrc.file}"
+          compress="true">
+      <fileset dir=".">
+        <exclude name="${richedit.dir}/**/*" />
+        <exclude name="test_*" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt" />
+        <exclude name="${obsolete.dir}/**" />
+        <exclude name="**/*~" />
+        <exclude name="${src.dir}/**/*.class" />
+        <exclude name="${build.dir}/**" />
+        <exclude name="${doc.dir}/**" />
+        <exclude name="*.jar" />
+        <exclude name="*.zip" />
+        <exclude name="*.gz" />
+      </fileset>
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Sources" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java source files" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarDocs" depends="docs" description="build documentation 'icu4jdocs.jar' jar file">
+    <jar jarfile="${jarDocs.file}" compress="true" basedir="${doc.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Documents" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java documents" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarDemos" depends="demos" description="build demos to 'icu4jdemos.jar' jar file">
+    <jar jarfile="${demos-jar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/demo/**" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <attribute name="Main-Class" value="com.ibm.icu.dev.demo.Launcher" />
+        <attribute name="Class-Path" value="icu4j.jar" />
+        <section name="common">
+          <attribute name="Specification-Title" value="${manifest.specification.title}" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Demos" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="translitIMEJar" depends="collator, transliterator" description="build transliterator IME 'icutransime.jar' jar file">
+    <javac includes="com/ibm/icu/dev/tool/ime/translit/*.java" excludes="**/CVS/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" />
+    <copy file="${src.dir}/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties" todir="${build.dir}/com/ibm/icu/dev/tool/ime/translit" />
+    <jar jarfile="${ime.translit.jar.file}" compress="true" basedir="${build.dir}" includes="com/ibm/icu/dev/tool/ime/translit/**/*" manifest="${ime.translit.manifest}">
+      <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="services/*" />
+    </jar>
+  </target>
+
+  <target name="indicIMEJar" depends="init" description="build indic IME 'icuindicime.jar' jar file">
+    <javac includes="com/ibm/icu/dev/tool/ime/indic/*.java" excludes="**/CVS/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" />
+    <copy file="${src.dir}/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties" todir="${build.dir}/com/ibm/icu/dev/tool/ime/indic" />
+    <jar jarfile="${ime.indic.jar.file}" compress="true" basedir="${build.dir}" includes="com/ibm/icu/dev/tool/ime/indic/**/*" manifest="${ime.indic.manifest}">
+      <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/indic" includes="services/*" />
+    </jar>
+  </target>
+
+  <!--
+    <target name="translitimeStandaloneJar" depends="collator, transliterator">
+        <javac includes="com/ibm/icu/dev/tool/ime/translit/*.java"
+            excludes="**/CVS/**/*"
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on" deprecation="off"/>
+        <copy toDir="${build.dir}/com/ibm/icu/dev/tool/ime/translit">
+            <fileset dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="*.properties"/>
+        </copy>
+        <jar jarfile="${ime.jar.file}"
+            compress="true"
+            basedir="${build.dir}"
+            includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*,com/ibm/icu/dev/tool/ime/translit/**/*"
+            manifest="${ime.translit.manifest}">
+            <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="services/*"/>
+        </jar>
+    </target>
+-->
+
+  <!-- jars up richedit but without tests -->
+  <target name="richeditJar" depends="richedit" description="build richedit runtime 'richedit.jar' jar file">
+    <mkdir dir="${richedit.dir}" />
+    <jar jarfile="${richedit.jar.file}" compress="true" includes="com/ibm/richtext/**/*" excludes="com/ibm/richtext/test/**/*" basedir="${build.dir}" manifest="${richedit.manifest}" />
+  </target>
+
+  <!--
+        Note:  I used to use -linkoffline http://java.sun.com/products/jdk/1.2/docs/api/ C:\jdk1.2.2\docs\api
+        This links to core docs on Sun's site - a very nice feature.  But it requires the 1.2 docs to be
+        on the build machine at a known location.
+    -->
+
+  <!-- the 'public' docs for richedit -->
+  <target name="richeditDocs" depends="init" description="build richedit javadoc">
+    <mkdir dir="${richedit.doc.dir}" />
+    <javadoc  packagenames="com.ibm.richtext.demo,com.ibm.richtext.awtui,com.ibm.richtext.swingui,com.ibm.richtext.textpanel,com.ibm.richtext.styledtext,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.print"
+              sourcepath="${src.dir}"
+              destdir="${richedit.doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="RichEdit Control"
+              doctitle="RichEdit Control"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) 1998-2004 IBM Corporation and others.&lt;/font>" />
+  </target>
+
+  <!-- richedit alphaworks distribution - jar and docs, but no source -->
+  <target name="richeditZip" depends="richeditJar,richeditDocs" description="build richedit zip file">
+    <!--Create a zip archive of the richedit jar and readme -->
+    <copy file="license.html" todir="${richedit.dir}" />
+    <zip zipfile="${richedit.zip.file}" basedir="${richedit.dir}" includes="doc/**/*,richedit.jar,license.html" />
+  </target>
+  <target name="deleteCore" depends="initBase">
+    <delete failonerror="no">
+      <fileset dir="${build.dir}/com/ibm/icu/text" />
+      <fileset dir="${build.dir}/com/ibm/icu/impl" />
+      <fileset dir="${build.dir}/com/ibm/icu/math" />
+      <fileset dir="${build.dir}/com/ibm/icu/lang" />
+      <fileset dir="${build.dir}/com/ibm/icu/util" />
+      <fileset dir="${build.dir}/com/ibm/icu/charset" />
+    </delete>
+  </target>
+
+  <target name="check" depends="tests, jar, deleteCore" description="run standard icu4j test suite">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="jdktzCheck" depends="tests, jar, deleteCore" description="run icu4j test suite with JDK timezone">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args} -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=JDK"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="exhaustiveCheck" depends="tests, jar, deleteCore" description="run standard icu4j test suite in exhaustive mode">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <arg value="-e10" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="secure" depends="jarTests" description="builds icu4j.jar and icu4jtests.jar" />
+
+  <target name="secureCheck" depends="secure" description="run secure (applet-like) icu4j test suite">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <!-- jvmarg value="-verbose"/ -->
+      <!-- (use for debugging, LOTS of output) <jvmarg value="-Djava.security.debug=access:trace"/ -->
+      <!-- <jvmarg value="-Djava.security.debug=access:failure,domain"/> -->
+      <jvmarg value="-Djava.security.manager" />
+      <jvmarg value="-Djava.security.policy=${src.dir}/com/ibm/icu/dev/test/security.policy" />
+      <!--<jvmarg value="-Djava.security.debug=access:failure"/>-->
+      <arg value="-w" />
+      <arg value="-nothrow" />
+      <classpath>
+        <pathelement location="clover.jar" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="${testjar.file}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="noData" depends="core, tests" description="builds ICU4J without any data">
+    <delete failonerror="no">
+      <fileset dir="${build.dir}/${icu4j.data.path}/../" includes="Holiday*.class" />
+      <fileset dir="${build.dir}/${icu4j.data.path}/../" includes="BreakIterator*.class" />
+      <fileset dir="${build.dir}/${icu4j.data.path}" />
+      <fileset dir="${build.dir}/${icu4j.testdata.path}" />
+      <fileset dir="${build.dir}/${icu4j.testdata.path}/../" />
+    </delete>
+  </target>
+  <target name="noDataCheck" depends="noData" description="runs the tests when no data is present">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <arg value="-nothrow" />
+      <arg value="-nodata" />
+      <classpath>
+        <pathelement location="clover.jar" />
+        <pathelement location="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="_requires14" if="before.java14">
+    <echo message="One of your targets requires JAVA_HOME to be set to JDK version 1.4 or newer" />
+  </target>
+
+  <target name="_checktags" depends="tools" unless="before.java14">
+    <echo message="doc params: ${doc.params}" />
+    <javadoc sourcepath="${src.dir}" packagenames="com.ibm.icu.*" excludepackagenames="com.ibm.icu.dev.*,com.ibm.icu.impl.*" classpath="${build.dir}" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.CheckTags" path="${build.dir}">
+        <!-- <param name="-short"/> -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="checktags" depends="_requires14,_checktags" description="check API tags before release" />
+
+  <target name="gatherapi" depends="tools" unless="before.java14" description="run API database generator tool">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.lang,com.ibm.icu.math,com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J ${icu4j.impl.version.string}" />
+        <param name="-output" value="${api.dir}/icu4j${icu4j.version.number}.api" />
+        <param name="-internal" />
+        <param name="-gzip" />
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="gatherapi.with.version" depends="tools" unless="before.java14" description="run API database generator tool">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.lang,com.ibm.icu.math,com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J ${icu4j.impl.version.string}" />
+        <param name="-output" value="${api.dir}/icu4j${icu4j.version.number}.stver.api" />
+        <param name="-internal" />
+        <param name="-version" />
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="apireport" depends="tools, gatherapi" unless="beofre.java14" description="run API report generator tool">
+    <java classname="com.ibm.icu.dev.tool.docs.ReportAPI" classpath="${build.dir}" failonerror="true">
+      <arg value="-old:" />
+      <arg value="${api.dir}/icu4j${icu4j.previous.version.number}.api.gz" />
+      <arg value="-new:" />
+      <arg value="${api.dir}/icu4j${icu4j.version.number}.api.gz" />
+      <arg value="-html" />
+      <arg value="-internal" />
+      <arg value="-out:" />
+      <arg value="${api.report.out}" />
+    </java>
+  </target>
+
+  <target name="clean" depends="initBase" description="remove all build targets">
+    <delete dir="${build.dir}" />
+    <delete dir="${doc.dir}" />
+    <delete file="${jar.file}" />
+    <delete file="${charsets.jar.file}" />
+    <delete dir="${richedit.dir}" />
+    <delete file="${testjar.file}" />
+    <delete file="${jarSrc.file}" />
+
+    <delete dir="${eclipse.projects.dir}" />
+    <delete dir="${wrapper.build.dir}" />
+    <delete file="${zipTestSrc.file}" />
+    <delete file="${jdk.wrapper.jar.file}" />
+    <delete file="${fragment.jar.file}"/>
+
+    <delete dir="${tzu.bin.dir}" />
+    <delete file="${tzu.bin.zip.file}" />
+    <delete file="${tzu.src.zip.file}" />
+  </target>
+
+  <target name="moduleJar" depends="initBase" description="modular build of 'icu4j.jar' jar file">
+    <jar jarfile="${jar.file}" compress="true" includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Modularized Build" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Module" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <patternset id="common.test.sources">
+    <include name="com/ibm/icu/dev/test/TestFmwk.java" />
+    <include name="com/ibm/icu/dev/test/TestLog.java" />
+    <include name="com/ibm/icu/dev/test/TestUtil.java" />
+    <include name="com/ibm/icu/dev/test/UTF16Util.java" />
+    <include name="com/ibm/icu/dev/test/TestAll.java" />
+  </patternset>
+
+  <!-- Module: BreakIterator -->
+  <target name="breakIterator" depends="init,copyFullPropsData" description="modular build of break iterator services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/UCharacterName.java"/>
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/lang/**/*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="breakIteratorTests" depends="breakIterator" description="test breakIterator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on" deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/rbbi/**/*.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/rbbi/rbbitst.txt"
+          todir="${build.dir}/com/ibm/icu/dev/test/rbbi"/>
+  </target>
+
+  <!-- Module: Calendar -->
+  <target name="copyCalendarData" depends="initBase">
+    <!-- Calendar does not require Collation data, BreakIterator data -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/pnames.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/*.res" />
+        <exclude name="**/coll/*.res" />
+        <exclude name="**/translit/*.res" />
+        <exclude name="**/rbnf/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="calendar" depends="init,copyCalendarData" description="modular build of calendar services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Holiday*.java"/>
+      <include name="com/ibm/icu/lang/UCharacter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/NumberFormatServiceShim.java"/>
+      <include name="com/ibm/icu/util/*Calendar*.java"/>
+    </javac>
+  </target>
+
+  <target name="calendarTests" depends="calendar,testdata" description="test calendar modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/calendar/**/*.java" />
+    </javac>
+  </target>
+
+  <!-- Module: Collator -->
+  <target name="copyCollatorData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.icu" />
+        <include name="**/coll/*.res" />
+        <include name="**/*.brk" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="collator" depends="init,copyCollatorData" description="modular build of collator services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/*Collation*.java"/>
+      <include name="com/ibm/icu/text/*Collator*.java"/>
+      <include name="com/ibm/icu/text/Normalizer.java"/>
+      <include name="com/ibm/icu/text/Replaceable.java"/>
+      <include name="com/ibm/icu/text/ReplaceableString.java"/>
+      <include name="com/ibm/icu/text/UnicodeFilter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/UTF16.java"/>
+    </javac>
+  </target>
+
+  <target name="collatorTests" depends="collator,testdata" description="test collator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/collator/**/*.java"/>
+      <include name="java,com/ibm/icu/dev/test/search/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/collator/RandomCollator.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Compression -->
+  <target name="compression" depends="init" description="modular build of compression services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/text/SCSU.java"/>
+      <include name="com/ibm/icu/text/UnicodeCompressor.java"/>
+      <include name="com/ibm/icu/text/UnicodeDecompressor.java"/>
+    </javac>
+  </target>
+
+  <target name="compressionTests" depends="compression" description="test compression modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/compression/**/*.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Format -->
+  <target name="copyFormatData" depends="initBase" if="icu4j.module.resources">
+    <!-- Format does not require BreakIterator data -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.icu" />
+        <include name="**/*.res" />
+        <exclude name="**/translit/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="format" depends="init,copyFormatData" description="modular build of formatting services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/lang/UCharacter.java"/>
+      <include name="com/ibm/icu/text/*Collator*.java"/>
+      <include name="com/ibm/icu/text/*Format*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/util/CalendarServiceShim.java"/>    </javac>
+  </target>
+
+  <target name="formatTests" depends="format,testdata" description="test format modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/format/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt"
+          todir="${build.dir}/com/ibm/icu/dev/test/format"/>
+  </target>
+
+  <!-- Module: Normalizer -->
+  <target name="normalizerData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="normalizer" depends="init,normalizerData" description="modular build of normalizer services">
+    <javac includes="com/ibm/icu/text/Normalizer.java,com/ibm/icu/text/CanonicalIterator.java,com/ibm/icu/text/UTF16.java,com/ibm/icu/text/UCharacterIterator.java,com/ibm/icu/text/UForwardCharacterIterator.java,com/ibm/icu/text/Replaceable.java,com/ibm/icu/text/ReplaceableString.java,com/ibm/icu/text/UnicodeFilter.java,com/ibm/icu/text/UnicodeSetIterator.java,com/ibm/icu/lang/**/*"
+           excludes="**/CVS/**/*,com/ibm/icu/lang/UScriptRun.java,com/ibm/icu/impl/UtilityExtensions.java,com/ibm/icu/impl/TrieBuilder.java,com/ibm/icu/impl/IntTrieBuilder.java,com/ibm/icu/impl/BOCU.java,com/ibm/icu/impl/UnicodeCharacterIterator.java"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/lang/**/*"/>
+      <include name="com/ibm/icu/text/CanonicalIterator.java"/>
+      <include name="com/ibm/icu/text/Normalizer.java"/>
+      <include name="com/ibm/icu/text/Replaceable.java"/>
+      <include name="com/ibm/icu/text/ReplaceableString.java"/>
+      <include name="com/ibm/icu/text/UCharacterIterator.java"/>
+      <include name="com/ibm/icu/text/UForwardCharacterIterator.java"/>
+      <include name="com/ibm/icu/text/UnicodeFilter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/UTF16.java"/>
+    </javac>
+  </target>
+
+  <target name="normalizerTests" depends="normalizer">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/normalizer/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Basic Properties / Full Properties -->
+  <target name="copyBasicPropsData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="copyFullPropsData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/*.res" />
+        <include name="**/*.brk" />
+        <include name="**/*.ctd" />
+        <exclude name="**/coll/*.res" />
+        <exclude name="**/translit/*.res" />
+        <exclude name="**/rbnf/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="propertiesBasic" depends="init,propertiesClasses,copyBasicPropsData" description="modular build of basic character properties">
+  </target>
+
+  <target name="propertiesFull" depends="init,propertiesClasses,copyFullPropsData" description="modular build of full character properties">
+  </target>
+
+  <target name="propertiesBasicTests" depends="propertiesBasic,propertiesTests" description="modular build of basic character properties">
+  </target>
+
+  <target name="propertiesFullTests" depends="propertiesFull,propertiesTests" description="modular build of full character properties">
+  </target>
+
+  <target name="propertiesClasses">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/lang/**/*"/>
+      <include name="com/ibm/icu/text/*BreakDictionary*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="propertiesTests">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/lang/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/lang/TestUScriptRun.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing.txt"
+          todir="${build.dir}/com/ibm/icu/dev/data/unicode/" />
+  </target>
+
+  <!-- Module: Transliterator -->
+  <target name="copyTranslitData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/*.brk" />
+        <include name="**/*.ctd" />
+        <include name="**/brkitr/*.res" />
+        <include name="**/translit/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="transliterator" depends="init,propertiesClasses,copyTranslitData" description="modular build of unicode transform services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/*Iterator*.java"/>
+      <include name="com/ibm/icu/impl/*Property*.java"/>
+      <include name="com/ibm/icu/impl/data/ResourceReader.java"/>
+      <include name="com/ibm/icu/impl/UtilityExtensions.java"/>
+      <include name="com/ibm/icu/text/*Transliterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="transliteratorTests" depends="transliterator" description = "test transliterator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/translit/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/translit/UnicodeFilterLogic*.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: StringPrep, IDNA -->
+  <target name="copyStringPrepData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.spp" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+  </target>
+
+  <target name="stringPrep" depends="init,normalizer,copyStringPrepData" description="modular build of stringprep services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/*StringPrep*.java"/>
+      <include name="com/ibm/icu/text/*IDNA*.java"/>
+      <include name="com/ibm/icu/text/*StringPrep*.java"/>
+    </javac>
+  </target>
+
+  <target name="stringPrepTests" depends="stringPrep" description="test stringPrep modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/stringprep/**/*.java"/>
+    </javac>
+    <unjar src="${src.dir}/com/ibm/icu/dev/data/testdata.jar" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.spp"/>
+        <include name="**/idna_rules.res"/>
+      </patternset>
+    </unjar>
+  </target>
+
+
+
+  <target name="excludeCharset" depends="core" description="excludes charset module from ICU4J">
+    <delete failonerror="yes">
+      <fileset dir="${build.dir}/com/ibm/icu/impl/data/icudt${icu4j.data.version.number}b/">
+        <include name="*.cnv" />
+        <include name="cnvalias.icu" />
+      </fileset>
+      <fileset dir="${build.dir}/com/ibm/icu/charset" />
+      <fileset dir="${build.dir}/META-INF/" />
+    </delete>
+  </target>
+  <target name="excludeCharsetTests" depends="tests" description="excludes charset  test from ICU4J">
+    <delete failonerror="yes">
+      <fileset dir="${build.dir}/com/ibm/icu/dev/test/charset" />
+    </delete>
+  </target>
+
+  <target name="moduleCheck" depends="initBase" description="run tests for module jar">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-nothrow" />
+      <arg value="-nodata" />
+      <classpath>
+        <pathelement location="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <!-- build the extra Transliterator data pertaining to Han-Latin transliteration -->
+  <target name="extraTransliteratorData" depends="initBase" description="build han-to-latin transliterator data (normally omitted)">
+    <copy todir="${build.dir}/com/ibm/icu/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/data" includes="Transliterator_Han_Latin_*.txt" />
+    </copy>
+  </target>
+
+  <!-- Target for builing XLIFF2ICUConverter Jar -->
+
+  <target name="xliff" depends="init" description="build xliff converter tool">
+    <javac sourcepath="" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off">
+
+      <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java" />
+      <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java" />
+      <include name="com/ibm/icu/dev/tool/UOption.java" />
+      <include name="com/ibm/icu/dev/tool/xmlcomparator/XMLValidator.java" />
+    </javac>
+    <jar jarfile="xliff.jar" compress="true" includes="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter*.class,com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.class,com/ibm/icu/dev/tool/UOption.class" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="XLIFF To ICU Converter" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="XLIFF2ICUConverter" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+
+    <jar jarfile="xliff-src.jar" compress="true" includes="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java,com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java,com/ibm/icu/dev/tool/UOption.java" basedir="${src.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="XLIFF To ICU Converter Sources" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="XLIFF2ICUConverter Sources" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <!-- Target for builing Utilities Jar for CLDR -->
+
+  <target name="cldrUtil" depends="init" description="build Utilities for CLDR">
+    <javac srcdir="${src.dir}" destdir="${build.dir}" source="${icu4j.javac.source}" target="${icu4j.javac.target}" classpathref="build.classpath" debug="on" deprecation="off">
+
+      <include name="com/ibm/icu/dev/test/TestFmwk.java" />
+      <include name="com/ibm/icu/dev/test/util/*.java" />
+      <include name="com/ibm/icu/dev/tool/UOption.java" />
+    </javac>
+    <jar jarfile="utilities.jar" compress="true" includes="com/ibm/icu/dev/test/util/*.class,com/ibm/icu/dev/test/TestFmwk*.class,com/ibm/icu/dev/test/AbstractTest*.class,com/ibm/icu/dev/test/TestLog*.class,com/ibm/icu/dev/tool/UOption*.class" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="Utilities for CLDR Tools" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="CLDR Utilities" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <!--Target for building jars -->
+  <target name="distJars" depends="jarSrc, jar, jarDocs" />
+
+  <!-- Target for checking the loading of bundles from the default package.
+          This is hack to get around Eclipse's build problems. 
+     -->
+  <target name="defaultPackage" depends="tests" description="Tests for loading resources in the default package">
+    <copy file="${src.dir}/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp" tofile="${src.dir}/TestDefaultPackageLoading.java" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/util/TestData_en.jpp" tofile="${src.dir}/TestData_en.java" />
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off">
+
+      <exclude name="**/CVS/**/*" />
+      <include name="TestData_en.java" />
+      <include name="TestDefaultPackageLoading.java" />
+    </javac>
+    <!-- copy the file to default package and test if we can load it -->
+    <copy file="${build.dir}/com/ibm/icu/dev/data/testdata/te.res" todir="${build.dir}/" />
+    <!-- copy the file up one level and test if java style base name loading works -->
+    <copy file="${build.dir}/com/ibm/icu/dev/data/testdata/te.res" tofile="${build.dir}/com/ibm/icu/dev/data/TestData_bge.res" />
+  </target>
+
+  <target name="defaultPackageCheck" depends="tests, defaultPackage" description="Run Tests for loading resources in the default package">
+    <!--run the tests -->
+    <java classname="TestDefaultPackageLoading" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <!-- convert @deprecated @draft tags to @provisional -->
+  <target name="swatDeprecated" depends="initBase, tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated" classpath="${build.dir}" failonerror="true">
+      <arg value="-src" />
+      <arg value="${src.dir}" />
+      <arg value="-dst" />
+      <arg value="${src.dir}" />
+      <arg value="-overwrite" />
+      <arg value="-verbose" />
+    </java>
+  </target>
+
+  <!-- convert @provisional tags to @deprecated -->
+  <target name="restoreDeprecated" depends="initBase, tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated" classpath="${build.dir}" failonerror="true">
+      <arg value="-prov" />
+      <arg value="-src" />
+      <arg value="${src.dir}" />
+      <arg value="-dst" />
+      <arg value="${src.dir}" />
+      <arg value="-overwrite" />
+      <arg value="-verbose" />
+    </java>
+  </target>
+
+<!-- Eclipse plug-in build targets --> 
+  <!-- for building eclipse distribution -->
+  <target name="initIcuEclipseVersion" depends="initBase">
+    <tstamp>
+      <format property="build.date" pattern="yyyyMMdd"/>
+    </tstamp>
+    <property name="icu4j.eclipse.build.version.string" value="${icu4j.plugin.impl.version.string}.v${build.date}"/>
+  </target>
+
+  <target name="eclipseProjects" 
+          depends="eclipseCoreProject,eclipseTestProject,eclipseWrapperProject,eclipseFragmentProject"
+          description="create all eclipse icu projects"/>
+
+  <target name="eclipsePDEBuild"
+          depends="initEclipsePDEBuildEnv, eclipseProjects"
+          description="build icu4j plugin files">
+
+    <!-- copy OSGi jar file to baseLocation -->
+    <mkdir dir="${eclipse.projects.dir}/baseLocation/features"/>
+    <mkdir dir="${eclipse.projects.dir}/baseLocation/plugins"/>
+    <copy toDir="${eclipse.projects.dir}/baseLocation/plugins" file="${eclipse.osgi.jar}"/>
+
+    <!-- copy PDE build script files and run the build -->
+    <pathconvert property="eclipse.projects.dir.full" dirsep="/">
+      <path location="${basedir}/${eclipse.projects.dir}"/>
+    </pathconvert>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu"/>
+    </antcall>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu.base"/>
+    </antcall>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu.jse4"/>
+    </antcall>
+  </target>
+
+  <target name="initEclipsePDEBuildEnv"
+          depends="initBase,initEclipseHome,initEclipseLauncher,initEclipseOSGiJar,initEclipsePDE"
+          description="Initialize eclipse PDE build environment">
+    <echo message="[PDE build configuration properties]"/>
+    <echo message="    Eclipse home:    ${eclipse.home}"/>
+    <echo message="    Launcher jar:    ${eclipse.launcher}"/>
+    <echo message="    OSGi bundle jar: ${eclipse.osgi.jar}"/>
+    <echo message="    Base OS:         ${eclipse.baseos}"/>
+    <echo message="    Base WS:         ${eclipse.basews}"/>
+    <echo message="    Base ARCH:       ${eclipse.basearch}"/>
+  </target>
+
+  <target name="initEclipseHome"
+          if="env.ECLIPSE_HOME"
+          unless="eclipse.home"
+          description="Initialize the property eclipse.home from the environment variable ECLIPSE_HOME">
+    <property name="eclipse.home" value="${env.ECLIPSE_HOME}"/>
+  </target>
+
+  <target name="initEclipseLauncher"
+          if="eclipse.home"
+          description="Locate org.eclipse.equinox.launcher jar file for eclipse 3.3 and beyond">
+    <first id="equinox.launcher">
+      <fileset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.equinox.launcher_*.jar"/>
+      </fileset>
+    </first>
+    <pathconvert property="eclipse.launcher" dirsep="/" refid="equinox.launcher"/>
+  </target>
+
+  <target name="initEclipseOSGiJar"
+          if="eclipse.home"
+          description="Locate org.eclipse.osgi plugin jar file">
+    <first id="osgi.bundle">
+      <fileset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.osgi_*.jar"/>
+      </fileset>
+    </first>
+    <pathconvert property="eclipse.osgi.jar" dirsep="/" refid="osgi.bundle"/>
+  </target>
+
+  <target name="initEclipsePDE"
+          depends="locateEclipsePDE"
+          if="eclipse.pde.dir"
+          description="Set up PDE runtime arguments">
+    <property file="${eclipse.pde.dir}/templates/headless-build/build.properties" prefix="pde.template"/>
+    <property name="eclipse.baseos" value="${pde.template.baseos}"/>
+    <property name="eclipse.basews" value="${pde.template.basews}"/>
+    <property name="eclipse.basearch" value="${pde.template.basearch}"/>
+  </target>
+
+  <target name="locateEclipsePDE"
+          if="eclipse.home"
+          description="Locate org.eclipse.pde.build plug-in and set the property 'eclipse.pde.dir'">
+    <first id="eclipse.pde.plugin.dir">
+      <dirset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.pde.build_*"/>
+      </dirset>
+    </first>
+    <pathconvert property="eclipse.pde.dir" dirsep="/" refid="eclipse.pde.plugin.dir"/>
+  </target>
+
+  <target name="runEclipsePDEBuild">
+    <mkdir dir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}"/>
+      <copy toDir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}">
+        <fileset dir="${eclipse.dir}/pdebuild" includes="**/*"/>
+          <filterset>
+            <filter token="PLUGIN_ID" value="${icu.plugin.id}"/>
+            <filter token="BUILD_DIR" value="${eclipse.projects.dir.full}"/>
+            <filter token="BUILD_TYPE" value="ICU4J"/>
+            <filter token="BUILD_ID" value="${icu.plugin.id}"/>
+            <filter token="BASE_LOCATION" value="${eclipse.projects.dir.full}/baseLocation"/>
+            <filter token="BASE_OS" value="${eclipse.baseos}"/>
+            <filter token="BASE_WS" value="${eclipse.basews}"/>
+            <filter token="BASE_ARCH" value="${eclipse.basearch}"/>
+          </filterset>
+      </copy>
+
+      <java jar="${eclipse.launcher}" fork="true" failonerror="true">
+        <arg value="-application"/>
+        <arg value="org.eclipse.ant.core.antRunner"/>
+        <arg value="-buildfile"/>
+        <arg value="${eclipse.pde.dir}/scripts/build.xml"/>
+        <arg value="-Dbuilder=${eclipse.projects.dir.full}/buildScripts/${icu.plugin.id}"/>
+      </java>
+  </target>
+
+  <target name="eclipseMangle" depends="buildMangle">
+    <antcall target="doMangle">
+      <param name="target.defs" value="FOUNDATION10" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="eclipseCore" depends="coreData,icudata,durationdata,eclipseMangle">
+    <javac  includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java,com/ibm/icu/math/**/*.java,com/ibm/icu/impl/**/*.java,com/ibm/icu/lang/*.java"
+            compiler="javac1.3"
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            bootclasspath="ee.foundation.jar"
+            source="1.3"
+            target="1.1"
+            debug="on"
+            deprecation="off"
+            encoding="ascii" />
+    <antcall target="indices" />
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html, unicode-license.txt" />
+      <fileset dir="${build.dir}">
+        <exclude name="META-INF/services/**/*" />
+        <exclude name="com/ibm/icu/charset/**/*" />
+        <exclude name="${icu4j.data.path}/*.cnv" />
+        <exclude name="${icu4j.data.path}/cnvalias.icu" />
+        <include name="com/ibm/icu/util/**/*" />
+        <include name="com/ibm/icu/text/**/*" />
+        <include name="com/ibm/icu/math/**/*" />
+        <include name="com/ibm/icu/impl/**/*" />
+        <include name="com/ibm/icu/lang/**/*" />
+      </fileset>
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Eclipse Build" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="ICU for Java Eclipse plug-in" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="eclipseCoreProject"
+          depends="eclipseCore,initIcuEclipseVersion"
+          description="gather eclipse icu core project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu" />
+    </delete>
+
+    <!-- PLUGIN FILES -->
+    <!-- icu source -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu">
+      <fileset dir="src/com/ibm/icu"
+               includes="impl/**/*,lang/**/*,math/**/*,text/**/*,util/**/*"
+               excludes="**/.svn/**/*,**/*.jar,**/Transliterator_Han_Latin*.txt" />
+    </copy>
+    <!-- icu data -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu/impl/data">
+      <fileset dir="${build.dir}/com/ibm/icu/impl/data"
+               includes="**/*.brk,**/*.icu,**/*.res,**/*.spp,**/*.txt,**/*.ctd"
+               excludes="**/Transliterator_Han_Latin*.txt" />
+    </copy>
+    <!-- plugin project -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu">
+      <fileset dir="${eclipse.dir}/plugins/com.ibm.icu" excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu/about_files" />
+    <!-- ucd terms -->
+    <copy file="src/com/ibm/icu/dev/data/unicode/ucdterms.txt"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu/about.html" />
+
+    <!-- FEATURE FILES -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu">
+      <fileset dir="${eclipse.dir}/features/com.ibm.icu" excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <!-- ensure eclipse wrapper code builds with foundation1.0/java1.3 -->
+  <target name="eclipseWrapper" depends="initBase">
+    <mkdir dir="${wrapper.build.dir}" />
+    <javac includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java"
+           compiler="javac1.3"
+           srcdir="${eclipse.dir}/plugins/com.ibm.icu.base/src"
+           destdir="${wrapper.build.dir}"
+           classpathref="build.classpath"
+           bootclasspath="ee.foundation.jar"
+           source="1.3"
+           target="1.1"
+           debug="on" 
+           deprecation="off"
+           encoding="ascii" />
+    <jar jarfile="${jdk.wrapper.jar.file}"
+         compress="true"
+         basedir="${wrapper.build.dir}" />
+  </target>
+
+  <target name="eclipseWrapperTest" depends="eclipseWrapper">
+    <!-- TODO: build the wrapper test code this ant target -->
+  </target>
+
+  <target name="eclipseWrapperProject"
+          depends="eclipseWrapper,eclipseWrapperTest,initIcuEclipseVersion"
+          description="gather eclipse icu core project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base" />
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu.base" />
+    </delete>
+    <!-- PLUGIN FILES -->
+    <!-- source and project files -->
+    <copy todir="${eclipse.projects.dir}/plugins">
+      <fileset dir="${eclipse.dir}/plugins"
+               includes="com.ibm.icu.base/**/*,com.ibm.icu.base.tests/**/*"
+               excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu_base.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about.html" />
+
+    <!-- FEATURE FILES -->
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu.base">
+      <fileset dir="${eclipse.dir}/features/com.ibm.icu.base"
+               excludes="**/.svn/**/*"/>
+      <filterset>
+      <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <target name="eclipseTests"
+          depends="eclipseCore,testdata,eclipseMangle"
+          description="build tests trimmed for eclipse API">
+    <!-- TODO: we should actually use ee.foundation.jar for eclipse env -->
+    <javac includes="com/ibm/icu/dev/test/**/*.java"
+           excludes="com/ibm/icu/dev/test/charset/**/*.*,com/ibm/icu/dev/test/perf/**/*.*"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="1.3"
+           target="1.3"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off" />
+    <antcall target="indices"/>
+    <jar jarfile="${testjar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/test/**/*" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/data/**/*" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Eclipse Tests"/>
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}"/>
+          <attribute name="Specification-Vendor" value="ICU"/>
+          <attribute name="Implementation-Title" value="ICU for Java Eclipse plug-in Tests"/>
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}"/> 
+          <attribute name="Implementation-Vendor" value="${corp}"/>
+          <attribute name="Implementation-Vendor-Id" value="com.ibm"/>
+          <attribute name="Copyright-Info" value="${copyright}"/>
+          <attribute name="Sealed" value="false"/>
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="eclipseTestProject" depends="eclipseTests,eclipseZipTestSrc" description="gather eclipse icu test project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests"/>
+    </delete>
+    <!-- copy eclipse test source and project files -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests">
+      <fileset  dir="${eclipse.dir}/plugins/com.ibm.icu.tests"
+                excludes="**/.svn/**/"/>
+      <filterset>
+        <filter token="COPYRIGHT" value="${copyright.eclipse}"/>
+      </filterset>
+    </copy>
+    <!-- copy icu test jar -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests" file="${testjar.file}"/>
+    <!-- copy icu test source zip -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests" file="${zipTestSrc.file}"/>
+  </target>
+
+  <target name="eclipseFragmentMangle" depends="buildMangle">
+    <antcall target="initSrc"/>
+    <antcall target="doMangle">
+      <param name="target.defs" value="ECLIPSE_FRAGMENT" />
+      <param name="input.file" value="@eclipseFragment.txt" />
+    </antcall>
+  </target>
+
+  <target name="eclipseFragment" depends="eclipseCore,eclipseFragmentMangle">
+    <javac compiler="javac1.4"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="1.3"
+           target="1.2"
+           debug="on"
+           deprecation="off"
+           encoding="ascii"
+           listfiles="true">
+      <include name="com/ibm/icu/impl/DateNumberFormat.java" />
+      <include name="com/ibm/icu/impl/duration/BasicDurationFormat.java" />
+      <include name="com/ibm/icu/impl/ICUResourceBundleReader.java" />
+      <include name="com/ibm/icu/impl/PatternTokenizer.java" />
+      <include name="com/ibm/icu/impl/Utility.java" />
+      <include name="com/ibm/icu/lang/UCharacter.java" />
+      <include name="com/ibm/icu/math/BigDecimal.java" />
+      <include name="com/ibm/icu/text/Bidi.java" />
+      <include name="com/ibm/icu/text/ChineseDateFormat.java" />
+      <include name="com/ibm/icu/text/DateFormat.java" />
+      <include name="com/ibm/icu/text/DateTimePatternGenerator.java" />
+      <include name="com/ibm/icu/text/DecimalFormat.java" />
+      <include name="com/ibm/icu/text/DigitList.java" />
+      <include name="com/ibm/icu/text/MessageFormat.java" />
+      <include name="com/ibm/icu/text/NumberFormat.java" />
+      <include name="com/ibm/icu/text/RuleBasedBreakIterator.java" />
+      <include name="com/ibm/icu/text/RuleBasedNumberFormat.java" />
+      <include name="com/ibm/icu/text/SimpleDateFormat.java" />
+      <include name="com/ibm/icu/text/UnicodeSet.java" />
+      <include name="com/ibm/icu/text/UTF16.java" />
+    </javac>
+
+    <!-- collect fragment specific files -->
+    <jar jarfile="${fragment.jar.file}" compress="true">
+      <fileset dir="${build.dir}">
+        <include name="com/ibm/icu/impl/DateNumberFormat.class" />
+        <include name="com/ibm/icu/impl/duration/BasicDurationFormat.class" />
+        <include name="com/ibm/icu/impl/ICUResourceBundleReader.class" />
+        <include name="com/ibm/icu/impl/PatternTokenizer.class" />
+        <include name="com/ibm/icu/impl/Utility.class" />
+        <include name="com/ibm/icu/lang/UCharacter.class" />
+        <include name="com/ibm/icu/math/BigDecimal.class" />
+        <include name="com/ibm/icu/text/Bidi.class" />
+        <include name="com/ibm/icu/text/ChineseDateFormat.class" />
+        <include name="com/ibm/icu/text/DateFormat.class" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator.class" />
+        <include name="com/ibm/icu/text/DecimalFormat.class" />
+        <include name="com/ibm/icu/text/DigitList.class" />
+        <include name="com/ibm/icu/text/MessageFormat.class" />
+        <include name="com/ibm/icu/text/NumberFormat.class" />
+        <include name="com/ibm/icu/text/RuleBasedBreakIterator.class" />
+        <include name="com/ibm/icu/text/RuleBasedNumberFormat.class" />
+        <include name="com/ibm/icu/text/SimpleDateFormat.class" />
+        <include name="com/ibm/icu/text/UnicodeSet.class" />
+        <include name="com/ibm/icu/text/UTF16.class" />
+
+        <include name="com/ibm/icu/lang/UCharacter$*.class" />
+        <include name="com/ibm/icu/text/Bidi$*.class" />
+        <include name="com/ibm/icu/text/ChineseDateFormat$*.class" />
+        <include name="com/ibm/icu/text/DateFormat$*.class" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator$*.class" />
+        <include name="com/ibm/icu/text/MessageFormat$*.class" />
+        <include name="com/ibm/icu/text/NumberFormat$*.class" />
+        <include name="com/ibm/icu/text/SimpleDateFormat$*.class" />
+        <include name="com/ibm/icu/text/UnicodeSet$*.class" />
+        <include name="com/ibm/icu/text/UTF16$*.class" />
+      </fileset>
+    </jar>
+  </target>
+
+  <target name="eclipseFragmentProject"
+          depends="eclipseFragment,initIcuEclipseVersion"
+          description="gather eclipse icu fragment project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu.jse4" />
+    </delete>
+
+    <!-- PLUGIN FILES -->
+    <!-- source -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/src">
+      <!-- TODO: Better way to collect files? -->
+      <fileset dir="${src.dir}">
+        <include name="com/ibm/icu/impl/DateNumberFormat.java" />
+        <include name="com/ibm/icu/impl/duration/BasicDurationFormat.java" />
+        <include name="com/ibm/icu/impl/ICUResourceBundleReader.java" />
+        <include name="com/ibm/icu/impl/PatternTokenizer.java" />
+        <include name="com/ibm/icu/impl/Utility.java" />
+        <include name="com/ibm/icu/lang/UCharacter.java" />
+        <include name="com/ibm/icu/math/BigDecimal.java" />
+        <include name="com/ibm/icu/text/Bidi.java" />
+        <include name="com/ibm/icu/text/ChineseDateFormat.java" />
+        <include name="com/ibm/icu/text/DateFormat.java" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator.java" />
+        <include name="com/ibm/icu/text/DecimalFormat.java" />
+        <include name="com/ibm/icu/text/DigitList.java" />
+        <include name="com/ibm/icu/text/MessageFormat.java" />
+        <include name="com/ibm/icu/text/NumberFormat.java" />
+        <include name="com/ibm/icu/text/RuleBasedBreakIterator.java" />
+        <include name="com/ibm/icu/text/RuleBasedNumberFormat.java" />
+        <include name="com/ibm/icu/text/SimpleDateFormat.java" />
+        <include name="com/ibm/icu/text/UnicodeSet.java" />
+        <include name="com/ibm/icu/text/UTF16.java" />
+      </fileset>
+    </copy>
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4">
+      <fileset  dir="${eclipse.dir}/plugins/com.ibm.icu.jse4"
+                excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about_files" />
+    <!-- ucd terms -->
+    <copy file="src/com/ibm/icu/dev/data/unicode/ucdterms.txt"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about.html" />
+
+    <!-- FEATURE FILES -->
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu.jse4">
+      <fileset  dir="${eclipse.dir}/features/com.ibm.icu.jse4"
+                excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <target name="eclipseZipTestSrc" depends="eclipseMangle" description="build zip of test sources for debugging">
+    <!-- for eclipse -->
+    <zip destfile="${zipTestSrc.file}" compress="true" basedir="${src.dir}" includes="com/ibm/icu/dev/test/**/*" excludes="com/ibm/icu/dev/test/cldr/**/*, com/ibm/icu/dev/test/perf/**/*" />
+  </target>
+
+  <target name="gatherICU4JWrapperAPI" depends="tools" unless="before.java14">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J 3.6" />
+        <param name="-base" value="com.ibm.icu" />
+        <param name="-output" value="${api.dir}/icu4j36w_i.api" />
+        <param name="-filter" value="BreakIterator|CollationKey|Collator|DateFormat|DecimalFormat|MessageFormat|NumberFormat|SimpleDateFormat|StringTokenizer|Calendar|TimeZone|ULocale|DateFormatSymbols|DecimalFormatSymbols|Calendar|TimeZone" />
+        <!-- param name="-gzip"/ -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="gatherEclipseWrapperAPI" depends="tools" unless="before.java14">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}/com/ibm/icu/dev/eclipse/com.ibm.icu.base/src" packagenames="com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J 3.6 Wrapper" />
+        <param name="-base" value="com.ibm.icu" />
+        <param name="-output" value="${api.dir}/icu4j36w_e.api" />
+        <!-- param name="-gzip"/ -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="reportWrapperAPI" depends="tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.ReportAPI" classpath="${build.dir}" failonerror="true">
+      <arg value="-old:" />
+      <arg value="${api.dir}/icu4j${icu4j.previous.version.number}w_i.api" />
+      <arg value="-new:" />
+      <arg value="${api.dir}/icu4j${icu4j.version.number}w_e.api" />
+      <arg value="-html" />
+      <arg value="-out:" />
+      <arg value="${api.dir}/icu4j_compare_${icu4j.previous.version.number}_wrapper_java.html" />
+    </java>
+  </target>
+
+<!-- Test suite launcher targets -->
+  <target name="runCheck" depends="tests">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="eclipseRunCheck" depends="eclipseTests">
+    <delete dir="${build.dir}/META-INF"/>
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="icu4j.jar" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="eclipseCompat" depends="initBase, eclipseCore" />
+  <target name="eclipseCompatTests" depends="initBase, eclipseTests" />
+  <target name="eclipseCompatCheck" depends="initBase, eclipseCompat, eclipseCompatTests, deleteCore, eclipseRunCheck" />
+
+<!-- ICU TimeZone Update Utility targets -->
+  <target name="icutzu" depends="init" description="build ICU4J TimeZone Update Utility Classes">
+    <javac includes="${tzu.src.path}/**/*.java" excludes="**/.svn/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" encoding="ascii" />
+  </target>
+
+  <target name="icutzudata" depends="initBase, jar">
+    <mkdir dir="${tzu.bin.dir}" />
+    <copy todir="${tzu.bin.dir}">
+      <fileset dir="${src.dir}/${tzu.src.path}">
+        <include name="*.cmd" />
+        <include name="*.bat" />
+        <include name="*.sh" />
+        <include name="*.gif" />
+        <include name="*.txt" />
+        <include name="*.html" />
+        <include name="*.css" />
+      </fileset>
+      <fileset file="${basedir}/${jar.file}" />
+      <fileset file="${build.dir}/${icu4j.data.path}/zoneinfo.res" />
+      <fileset file="${build.dir}/${icu4j.data.path}/metazoneInfo.res" />
+    </copy>
+  </target>
+
+  <target name="icutzujar" depends="initBase, icutzu, icutzudata" description="build ICU4J TimeZone Update Utility classes">
+    <jar jarfile="${tzu.bin.dir}/${tzu.jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html" />
+      <fileset dir="${build.dir}" includes="${tzu.src.path}/**/*.class" />
+      <manifest>
+        <attribute name="Main-Class" value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J TimeZone Update Utility" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="ICUTZU" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+    <echo message="Please see ${tzu.bin.dir} directory for the files." />
+  </target>
+
+  <target name="icutzucheck" depends="icutzujar" description="check ICU4J TimeZone Update Utility">
+    <echo>Testing ICUTZU ...</echo>
+
+    <mkdir dir="${tzu.temp.dir}" />
+    <move todir="${tzu.temp.dir}">
+      <fileset file="${tzu.bin.dir}/DirectorySearch.txt" />
+      <fileset file="${tzu.bin.dir}/zoneinfo.res" />
+      <fileset file="${tzu.bin.dir}/metazoneInfo.res" />
+    </move>
+
+    <echo file="${tzu.bin.dir}/DirectorySearch.txt">+${tzu.test.dir}</echo>
+    <get dest="${tzu.bin.dir}/zoneinfo.res" src="http://icu-project.org/tzdata/2008d/be/zoneinfo.res" />
+    <get dest="${tzu.bin.dir}/metazoneInfo.res" src="http://icu-project.org/tzdata/2008d/be/metazoneInfo.res" />
+    <copy todir="${tzu.test.dir}" file="${tzu.bin.dir}/icu4j.jar" />
+
+    <echo>Running ICUTZU in Discovery Mode ...</echo>
+    <exec dir="${tzu.bin.dir}" executable="${java.home}/bin/java">
+      <arg value="-cp" />
+      <arg path="${tzu.bin.dir}/${jar.file};${tzu.bin.dir}/${tzu.jar.file}" />
+      <arg value="-Dnogui=true" />
+      <arg value="-Ddiscoveronly=true" />
+      <arg value="-Dsilentpatch=true" />
+      <arg value="-Doffline=true" />
+      <arg value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+      <arg file="${tzu.bin.dir}" />
+      <arg value="DirectorySearch.txt" />
+      <arg value="ICUList.txt" />
+      <arg value="zoneinfo.res" />
+      <arg value="Temp" />
+      <arg value="icu.gif" />
+    </exec>
+
+    <echo>Running ICUTZU in Patch Mode ...</echo>
+    <exec dir="${tzu.bin.dir}" executable="${java.home}/bin/java">
+      <arg value="-cp" />
+      <arg path="${tzu.bin.dir}/${jar.file};${tzu.bin.dir}/${tzu.jar.file}" />
+      <arg value="-Dnogui=true" />
+      <arg value="-Ddiscoveronly=false" />
+      <arg value="-Dsilentpatch=true" />
+      <arg value="-Doffline=true" />
+      <arg value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+      <arg file="${tzu.bin.dir}" />
+      <arg value="DirectorySearch.txt" />
+      <arg value="ICUList.txt" />
+      <arg value="zoneinfo.res" />
+      <arg value="Temp" />
+      <arg value="icu.gif" />
+    </exec>
+
+    <echo>Comparing results ...</echo>
+    <unjar src="${tzu.test.dir}/${jar.file}" dest="${tzu.test.dir}">
+      <patternset>
+        <include name="**/zoneinfo.res" />
+        <include name="**/metazoneInfo.res" />
+      </patternset>
+    </unjar>
+    <copy todir="${tzu.test.dir}" file="${tzu.test.dir}/${icu4j.data.path}/zoneinfo.res" />
+    <copy todir="${tzu.test.dir}" file="${tzu.test.dir}/${icu4j.data.path}/metazoneInfo.res" />
+
+    <condition property="tzu.zoneinfo.match">
+      <filesmatch file1="${tzu.bin.dir}/zoneinfo.res" file2="${tzu.test.dir}/zoneinfo.res" />
+    </condition>
+    <fail unless="tzu.zoneinfo.match">ICUTZU test failed. ${tzu.bin.dir}/zoneinfo.res does not match ${tzu.test.dir}/zoneinfo.res</fail>
+
+    <condition property="tzu.metazoneinfo.match">
+      <filesmatch file1="${tzu.bin.dir}/metazoneInfo.res" file2="${tzu.test.dir}/metazoneInfo.res" />
+    </condition>
+    <fail unless="tzu.metazoneinfo.match">ICUTZU test failed. ${tzu.bin.dir}/metazoneInfo.res does not match ${tzu.test.dir}/metazoneInfo.res</fail>
+
+    <echo>Cleaning up ...</echo>
+    <move todir="${tzu.bin.dir}">
+      <fileset file="${tzu.temp.dir}/DirectorySearch.txt" />
+      <fileset file="${tzu.temp.dir}/zoneinfo.res" />
+      <fileset file="${tzu.temp.dir}/metazoneInfo.res" />
+    </move>
+    <delete includeEmptyDirs="true">
+        <fileset file="${tzu.temp.dir}" />
+        <fileset dir="${tzu.test.dir}" />
+    </delete>
+    <echo>ICUTZU test successful.</echo>
+  </target>
+
+  <target name="icutzusrc-dist" depends="init" description="ICUTZU source distributable zip">
+    <zip zipfile="${basedir}/${tzu.src.zip.file}" basedir="${basedir}" includes="${src.dir}/${tzu.src.path}/**/*" />
+  </target>
+
+  <target name="icutzubin-dist" depends="icutzujar" description="ICUTZU binaries distributable zip">
+    <zip zipfile="${basedir}/${tzu.bin.zip.file}" basedir="${tzu.bin.dir}" includes="*" />
+  </target>
+</project>
diff --git a/eclipseFragment.txt b/eclipseFragment.txt
new file mode 100644
index 0000000..fd80d93
--- /dev/null
+++ b/eclipseFragment.txt
@@ -0,0 +1,10 @@
+# Copyright (C) 2006-2007, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+# These files contains special code blocks for the ICU Eclipse fragment
+src/com/ibm/icu/impl/ByteBuffer.java
+src/com/ibm/icu/impl/ICUResourceBundleImpl.java
+src/com/ibm/icu/lang/UCharacter.java
+src/com/ibm/icu/text/DecimalFormat.java
+src/com/ibm/icu/text/RuleBasedCollator.java
+src/com/ibm/icu/util/UResourceBundle.java
diff --git a/eclipseProjectMisc/initSrc.launch b/eclipseProjectMisc/initSrc.launch
new file mode 100644
index 0000000..9a1b84e
--- /dev/null
+++ b/eclipseProjectMisc/initSrc.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_BUILD_SCOPE" value="${none}"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/icu4j/src&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="jre1.6.0"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_TARGETS" value="initSrc,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/eclipseProjectMisc/normSrc.launch b/eclipseProjectMisc/normSrc.launch
new file mode 100644
index 0000000..179d952
--- /dev/null
+++ b/eclipseProjectMisc/normSrc.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_BUILD_SCOPE" value="${none}"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/icu4j/src&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="jre1.6.0"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_TARGETS" value="normSrc,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/ee.foundation.jar b/ee.foundation.jar
new file mode 100644
index 0000000..60168e8
--- /dev/null
+++ b/ee.foundation.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f730fd4a8ca71fcddc61a4f62490cea7805efffc7eb2b8669942f6d123f7249
+size 1059077
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..cd07b36
--- /dev/null
+++ b/license.html
@@ -0,0 +1,51 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
+<title>ICU License - ICU 1.8.1 and later</title>
+</head>
+
+<body BGCOLOR="#ffffff">
+<h2>ICU License - ICU 1.8.1 and later</h2>
+
+<p>COPYRIGHT AND PERMISSION NOTICE</p>
+
+<p>
+Copyright (c) 1995-2008 International Business Machines Corporation and others
+</p>
+<p>
+All rights reserved.
+</p>
+<p>
+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, and/or sell
+copies of the 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 in all copies
+of the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+</p>
+<p>
+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 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 THIS SOFTWARE.
+</p>
+<p>
+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
+this Software without prior written authorization of the copyright holder.
+</p>
+
+<hr>
+<p><small>
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+</small></p>
+</body>
+</html>
diff --git a/localespi/.classpath b/localespi/.classpath
new file mode 100644
index 0000000..78c99a3
--- /dev/null
+++ b/localespi/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/**" kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Java6"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/localespi/.externalToolBuilders/localespi_jar.launch b/localespi/.externalToolBuilders/localespi_jar.launch
new file mode 100644
index 0000000..05caed4
--- /dev/null
+++ b/localespi/.externalToolBuilders/localespi_jar.launch
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="jar,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AUTO_TARGETS" value="jar,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="jar,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/localespi/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-localespi"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-localespi/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j-localespi}"/>
+</launchConfiguration>
diff --git a/localespi/.project b/localespi/.project
new file mode 100644
index 0000000..f754268
--- /dev/null
+++ b/localespi/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-localespi</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+			<triggers>auto,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>LaunchConfigHandle</key>
+					<value>&lt;project&gt;/.externalToolBuilders/localespi_jar.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/localespi/.settings/org.eclipse.core.resources.prefs b/localespi/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..5dcfaac
--- /dev/null
+++ b/localespi/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Jun 03 11:37:05 EDT 2008
+eclipse.preferences.version=1
+encoding/<project>=US-ASCII
diff --git a/localespi/.settings/org.eclipse.jdt.core.prefs b/localespi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f814717
--- /dev/null
+++ b/localespi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,274 @@
+#Tue May 20 15:13:23 EDT 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=80
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/localespi/.settings/org.eclipse.jdt.ui.prefs b/localespi/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..2499b0e
--- /dev/null
+++ b/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Tue Jun 03 11:18:15 EDT 2008
+eclipse.preferences.version=1
+formatter_profile=_ICU4J standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n *******************************************************************************\r\n * Copyright (C) ${year}, International Business Machines Corporation and         *\r\n * others. All Rights Reserved.                                                *\r\n *******************************************************************************\r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/localespi/build.xml b/localespi/build.xml
new file mode 100644
index 0000000..d1a8f4f
--- /dev/null
+++ b/localespi/build.xml
@@ -0,0 +1,119 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 2008, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+* This is the ant build file for ICU4J Locale SPI implementation.
+*/
+-->
+<project name="icu4j-localespi" default="build-jar" basedir=".">
+  <property file="../build.properties"/>
+  <property name="build.dir" value="classes"/>
+  <property name="src.dir" value="src"/>
+  <property name="javac.src.ver" value="1.6"/>
+  <property name="javac.bin.ver" value="1.6"/>
+  <property name="jar.file" value="icu4j-localespi.jar"/>
+  <property name="icu4j.jar.file" value="../icu4j.jar"/>
+  <property name="icu4j.build.dir" value="../classes"/>
+  <property name="icu4j.core.build.file" value="../build.xml"/>
+  <property name="ext.dir" value="ext"/>
+  <condition property="is.java6">
+    <contains string="${java.version}" substring="1.6."/>
+  </condition>
+  <available file="${icu4j.jar.file}" property="is.icu4j.jar.available"/>
+
+  <target name="check-env-java6" unless="is.java6">
+    <echo message="######################## ERROR ########################"/>
+    <echo message="Java SE 6 SDK is required for building the ICU4J Locale"/>
+    <echo message="Service Provider module.  Terminating the build task."/>
+    <echo message="#######################################################"/>
+    <fail message="Java SE 6 SDK is required"/>
+  </target>
+
+  <target name="icu4j-jar" unless="is.icu4j.jar.available">
+    <!-- Building icu4j.jar if missing.  We do not want to build
+         icu4j.jar here, because Java 6 is not the standard JDK
+         for icu4j core library. -->
+    <echo message="WARNING: Building icu4j.jar with Java 6"/>
+    <ant antfile="${icu4j.core.build.file}" target="jar" inheritAll="false"/>
+  </target>
+
+  <target name="compile" depends="check-env-java6,icu4j-jar">
+    <mkdir dir="${build.dir}"/>
+    <javac  srcdir="${src.dir}"
+            includes="com/ibm/icu/impl/**/*.java"
+            destdir="${build.dir}"
+            classpath="${icu4j.jar.file}"
+            source="${javac.src.ver}"
+            target="${javac.bin.ver}"
+            debug="on"
+            encoding="ascii">
+    </javac>
+  </target>
+
+  <target name="jar">
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${src.dir}">
+        <include name="META-INF/services/java.*Provider"/>
+        <include name="com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties"/>
+      </fileset>
+      <fileset dir="${build.dir}">
+        <include name="com/ibm/icu/impl/**/*"/>
+      </fileset>
+        <fileset dir="../" includes="license.html"/>
+      <manifest>
+        <attribute name="Built-By" value="${corp}"/>
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Locale Service Provider" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU4J Locale Service Providers for Java 6" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="tests" depends="check-env-java6">
+    <ant antfile="${icu4j.core.build.file}" target="tests" inheritAll="false"/>
+    <javac  srcdir="${src.dir}"
+            includes="com/ibm/icu/dev/test/**/*.java"
+            destdir="${build.dir}"
+            classpath="${icu4j.build.dir}"
+            source="${javac.src.ver}"
+            target="${javac.bin.ver}"
+            debug="on"
+            encoding="ascii">
+    </javac>
+  </target>
+
+  <target name="run-check">
+    <mkdir dir="${ext.dir}"/>
+    <copy file="${icu4j.jar.file}" todir="${ext.dir}"/>
+    <copy file="${jar.file}" todir="${ext.dir}"/>
+	
+    <java classname="com.ibm.icu.dev.test.localespi.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="-Djava.ext.dirs=${java.ext.dirs}${path.separator}${ext.dir}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${build.dir}" />
+        <pathelement path="${icu4j.build.dir}/"/>
+      </classpath>
+    </java>
+  </target>
+
+  <target name="clean">
+    <delete dir="${build.dir}"/>
+    <delete file="${jar.file}"/>
+    <delete dir="${ext.dir}"/>
+  </target>
+
+  <target name="build-jar" depends="compile,jar"/>
+  <target name="check" depends="build-jar,tests,run-check"/>
+
+</project>
\ No newline at end of file
diff --git a/localespi/readme.html b/localespi/readme.html
new file mode 100644
index 0000000..e2790f2
--- /dev/null
+++ b/localespi/readme.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta http-equiv="Content-Style-Type" content="text/css2">
+  <title>ReadMe for ICU4J Locale Service Provider</title>
+  <meta name="COPYRIGHT" content="Copyright 2008, International Business Machines Corporation and others. All Rights Reserved.">
+  <style type="text/css">
+h3.doc { background: #CCCCFF }
+  </style>
+</head>
+<body style="background-color: rgb(255, 255, 255);" lang="EN-US"
+ link="#0000ff" vlink="#800080">
+<h2>ICU4J Locale Service Provider</h2>
+<h3>Read Me for ICU4J Locale Service Provider</h3>
+<hr size="2" width="100%">
+<p><b>Note:</b> This is a technical preview for ICU4J Locale Service Provider.
+This component may be changed or removed in future release of ICU4J.
+</p>
+<h3 class="doc">Contents</h3>
+<ul type="disc">
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#usage">Using ICU4J Locale Service Provider</a></li>
+  <li><a href="#config">Optional Configuration</a></li>
+  <li><a href="#build">Building and Testing ICU4J Locale Service Provider</a></li>
+</ul>
+
+<h3 class="doc"><a name="intro"></a>Introduction</h3>
+
+<p>Java SE 6 introduced a new feature which allows Java user code to extend locale support
+in Java runtime environment.  JREs shipped by Sun or IBM come with decent locale coverage,
+but some users may want more locale support.  Java SE 6 includes abstract classes extending
+<a href="http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleServiceProvider.html">
+java.util.spi.LocaleServiceProvider</a>.  Java SE 6 users can create a subclass of these
+abstract class to supply their own locale support for text break, collation, date/number
+formatting or providing translations for currency, locale and time zone names.</p>
+
+<p>ICU4J has been providing more comprehensive locale coverage than standard JREs.  However,
+Java programmers have to use ICU4J's own internationalization service APIs (com.ibm.icu.*)
+to utilize the rich locale support.  Sometimes, the migration is not an option for various
+reasons.  For example, your code may depend on existing Java libraries utilizing JDK
+internationalization service APIs, but you have no access to the source code.  In this case,
+it is not possible to modify the libraries to use ICU4J APIs.</p>
+
+<p>ICU4J Locale Service Provider is a component consists of classes implementing the Java
+SE 6 locale sensitive service provider interfaces.  Available service providers are -
+<ul>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/BreakIteratorProvider.html">BreakIteratorProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/CollatorProvider.html">CollatorProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DateFormatProvider.html">DateFormatProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DateFormatSymbolsProvider.html">DateFormatSymbolsProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DecimalFormatSymbolsProvider.html">DecimalFormatSymbolsProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/NumberFormatProvider.html">NumberFormatProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/CurrencyNameProvider.html">CurrencyNameProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleNameProvider.html">LocaleNameProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/TimeZoneNameProvider.html">TimeZoneNameProvider</a></li>
+</ul>
+ICU4J Locale Service Provider is designed to work as installed extensions in a JRE.
+Once the component is configured properly, Java application running on the JRE automatically
+picks the ICU4J's internationalization service implementation when a requested locale is not
+available in the JRE.</p>
+
+<h3 class="doc"><a name="usage"></a>Using ICU4J Locale Service Provider</h3>
+
+<p>Java SE 6 locale sensitive service providers are using the
+<a href="http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html">Java Extension Mechanism</a>.
+An implementation of a locale sensitive service provider is installed as an optional package
+to extend the functionality of the Java core platform.  To install an optional package, its JAR
+files must be placed in the Java extension directory.  The standard location is 
+&lt;<i>java-home</i>&gt;/lib/ext.  You can alternatively use the system property <i>java.ext.dirs</i>
+to specify one or more locations where optional packages are installed.  For example,
+if the JRE root directry is JAVA_HOME and you put ICU4J Locale Service Provider files
+in ICU_SPI_DIR, the ICU4J Locale Service Provider is enabled by the following command.
+<pre>
+  java -Djava.ext.dirs=%JAVA_HOME%\lib\ext;%ICU_SPI_DIR% &lt;your_java_app&gt;  [Microsoft Windows]
+  java -Djava.ext.dirs=$JAVA_HOME/lib/ext:$ICU_SPI_DIR &lt;your_java_app&gt;    [Linux, Solaris and other unix like platforms]
+</pre>
+</p>
+
+<p>The ICU4J's implementations of Java SE 6 locale sensitive service provider interfaces
+and configuration files are packaged in a single JAR file (icu4j-localespi-&lt;<i>version</i>&gt;.jar).
+But the actual implementation of the service classes and data are in the ICU4J core JAR
+file (icu4j-&lt;<i>version</i>&gt;.jar).  So you need to put the localespi JAR file along
+with the core JAR file in the Java extension directory.</p>
+
+<p>Once the ICU4J Locale Service Provider is installed properly, factory methods in
+JDK internationalization classes look for the implementation provided by ICU4J when
+a requested locale is not supported by the JDK service class.  For example, locale
+af_ZA (Afrikaans - South Africa) is not supported by JDK DateFormat in Sun Java SE 6.
+The following code snippet returns an instance of DateFormat from ICU4J Locale Service
+Provider and prints out the current date localized for af_ZA.
+<pre>
+  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, new Locale("af", "ZA"));
+  System.out.println(df.format(new Date()));
+</pre>
+Sample output:
+<pre>
+  2008 Junie 19     [With ICU4J Locale Service Provider enabled]
+  June 19, 2008     [Without ICU4J Locale Service Provider]
+</pre>
+</p>
+
+<h3 class="doc"><a name="config"></a>Optional Configuration</h3>
+
+<h4>Enabling or disabling individual service</h4>
+<p>By default, all Java 6 SE locale sensitive service providers are enabled in the
+ICU4J Locale Service Provider JAR file.  If you want to disable specific providers
+supported by ICU4J, you can remove the corresponding provider configuration files
+from META-INF/services in the localespi JAR file.  For example, if you do not want
+to use ICU's time zone name service at all, you can remove the file: 
+META-INF/services/java.util.spi.TimeZoneNameProvider from the JAR file.</p>
+
+<p><b>Note:</b> Disabling DateFormatSymbolsProvider/DecimalFormatSymbolsProvider
+won't affect the localized symbols actually used by DateFormatProvider/NumberFormatProvider
+by the current implementation.  These services are implemented independently.</p>
+
+<h4>Configuring the behavior of ICU4J Locale Service Provider</h4>
+<p>com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties in the localespi
+JAR file is used for configuring the behavior of the ICU4J Locale Service Provider
+implementation.  There are some configuration properties available.  See the table below
+for each configuration in detail.</p>
+<table border="1">
+<tr>
+  <th>Property</th>
+  <th>Value</th>
+  <th>Default</th>
+  <th>Description</th>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants</td>
+  <td>"true" or "false"</td>
+  <td>"true"</td>
+  <td>
+    Whether if Locales with ICU's variant suffix will be included in getAvailableLocales.
+    The current Java SE 6 locale sensitive service does not allow user provided provider
+    implementations to override locales supported by JRE itself.  When this property is
+    "true"(default), ICU4J Locale Service Provider includes Locales with
+    the suffix(com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix)
+    in the variant field.  For example, the ICU4J provider includes locales fr_FR and
+    fr_FR_ICU in the available locale list.  So JDK API user can still access the
+    internationalization service object created by the ICU4J provider by the special locale
+    fr_FR_ICU.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix</td>
+  <td><i>Any String</i></td>
+  <td>"ICU"</td>
+  <td>
+    Suffix string used in Locale's variant field to specify the ICU implementation.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages</td>
+  <td>"true" or "false"</td>
+  <td>"true"</td>
+  <td>
+    Whether if 3-letter language Locales are included in getAvailabeLocales.  Use of
+    3-letter language codes in java.util.Locale is not supported by the API reference
+    document.  However, the implementation does not check the length of language code,
+    so there is no practical problem with it.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat</td>
+  <td>"true" or "false"</td>
+  <td>"false"</td>
+  <td>
+    Whether if java.text.DecimalFormat subclass is used for NumberFormat#getXXXInstance.
+    DecimalFormat#format(Object,StringBuffer,FieldPosition) is declared as final, so
+    ICU cannot override the implementation.  As a result, some number types such as
+    BigInteger/BigDecimal are not handled by the ICU implementation.  If a client expects
+    NumberFormat#getXXXInstance returns a DecimalFormat (for example, need to manipulate
+    decimal format patterns), he/she can set true to this setting.  However, in this case,
+    BigInteger/BigDecimal support is not done by ICU's implementation.
+  </td>
+</tr>
+</table>
+
+<h3 class="doc"><a name="build"></a>Building and Testing ICU4J Locale Service Provider</h3>
+
+<p>ICU4J Locale Service Provider classes depend on the ICU4J core files.  To build the
+component, you should build the ICU4J core JAR file first.  Please refer <a href="../readme.html">
+ReadMe for ICU4J</a> to set up the build environment.  The actual steps building the
+ICU4J Locale Service Provider JAR file are described below.  The examples used in these steps
+assume the ICU4J source package is extracted to C:\icu4j on Microsoft Windows.</p>
+<p>1. Build the ICU4J core JAR file (icu4j.jar).  The preferred JDK version for building
+the ICU4J core classes/JAR files is JDK 5.0.
+<pre>
+  C:\icu4j>ant jar
+</pre>
+</p>
+<p>2. Set JAVA_HOME to JDK 6.0.  The ICU4J Locale Service Provider requires JDK 6.0.
+If you used JDK 6.0 for building the ICU4J core JAR file, this step is not necessary.
+<pre>
+  C:\icu4j>set JAVA_HOME=C:\jdk1.6.0
+</pre>
+</p>
+<p>3. Change directory to a subdirectory named "localespi"</p>
+<p>4. Run <b>ant</b> with the default target ("jar").
+<pre>
+  C:\icu4j\localespi>ant
+  Buildfile: build.xml
+
+  check-env-java6:
+
+  icu4j-jar:
+
+  compile:
+      [mkdir] Created dir: C:\icu4j\localespi\classes
+      [javac] Compiling 22 source files to C:\icu4j\localespi\classes
+
+  jar:
+        [jar] Building jar: C:\icu4j\localespi\icu4j-localespi.jar
+
+  build-jar:
+
+  BUILD SUCCESSFUL
+  Total time: 5 seconds
+</pre>
+</p>
+<p>With above steps, icu4j-localespi.jar is created in localespi subdirectory.  To
+verify the ICU4J Locale Service Provider component, you can run <b>ant</b> with the
+target "check". (Note: The target "check" actually creates icu4j-localespi.jar, so
+you can simply run this target to build and test the component.)
+<pre>
+  C:\icu4j\localespi\ant check
+</pre>
+After compiling classes used for testing, the test cases for ICU4J Locale Service
+Provider are executed.  The test output looks like below.
+<pre>
+     [java] TestAll {
+     [java]   BreakIteratorTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   CollatorTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   CurrencyNameTest {
+     [java]     TestCurrencySymbols Passe
+     [java]   } Passed
+     [java]   DateFormatSymbolsTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestNynorsk Passed
+     [java]     TestSetSymbols Passed
+     [java]   } Passed
+     [java]   DateFormatTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestThaiDigit Passed
+     [java]   } Passed
+     [java]   DecimalFormatSymbolsTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestSetSymbols Passed
+     [java]   } Passed
+     [java]   LocaleNameTest {
+     [java]     TestCountryNames Passed
+     [java]     TestLanguageNames Passed
+     [java]     TestVariantNames Passed
+     [java]   } Passed
+     [java]   NumberFormatTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   TimeZoneNameTest {
+     [java]     TestTimeZoneNames Passed
+     [java]   } Passed
+     [java] } Passed
+</pre>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider b/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
new file mode 100644
index 0000000..1c84a78
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j break iterator
+com.ibm.icu.impl.javaspi.text.BreakIteratorProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.CollatorProvider b/localespi/src/META-INF/services/java.text.spi.CollatorProvider
new file mode 100644
index 0000000..df5c518
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.CollatorProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j collator
+com.ibm.icu.impl.javaspi.text.CollatorProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DateFormatProvider b/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
new file mode 100644
index 0000000..410eda0
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j date formatter
+com.ibm.icu.impl.javaspi.text.DateFormatProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider b/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
new file mode 100644
index 0000000..91f0279
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j date format symbpols
+com.ibm.icu.impl.javaspi.text.DateFormatSymbolsProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider b/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
new file mode 100644
index 0000000..7b060b3
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j decimal format symbols
+com.ibm.icu.impl.javaspi.text.DecimalFormatSymbolsProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider b/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
new file mode 100644
index 0000000..1287b13
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j number formatter
+com.ibm.icu.impl.javaspi.text.NumberFormatProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider b/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
new file mode 100644
index 0000000..5b61edb
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j currency name
+com.ibm.icu.impl.javaspi.util.CurrencyNameProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider b/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
new file mode 100644
index 0000000..31cbcc7
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j locale name
+com.ibm.icu.impl.javaspi.util.LocaleNameProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider b/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
new file mode 100644
index 0000000..57ce8f6
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j time zone name
+com.ibm.icu.impl.javaspi.util.TimeZoneNameProviderICU
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
new file mode 100644
index 0000000..afbd308
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
@@ -0,0 +1,224 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class BreakIteratorTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    private static final int CHARACTER_BRK = 0;
+    private static final int WORD_BRK = 1;
+    private static final int LINE_BRK = 2;
+    private static final int SENTENCE_BRK = 3;
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : BreakIterator.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(CHARACTER_BRK, loc);
+            checkGetInstance(WORD_BRK, loc);
+            checkGetInstance(LINE_BRK, loc);
+            checkGetInstance(SENTENCE_BRK, loc);
+        }
+    }
+
+    private void checkGetInstance(int type, Locale loc) {
+        BreakIterator brkitr = null;
+        String method = null;
+        switch (type) {
+        case CHARACTER_BRK:
+            brkitr = BreakIterator.getCharacterInstance(loc);
+            method = "getCharacterInstance";
+            break;
+        case WORD_BRK:
+            brkitr = BreakIterator.getWordInstance(loc);
+            method = "getWordInstance";
+            break;
+        case LINE_BRK:
+            brkitr = BreakIterator.getLineInstance(loc);
+            method = "getLineInstance";
+            break;
+        case SENTENCE_BRK:
+            brkitr = BreakIterator.getSentenceInstance(loc);
+            method = "getSentenceInstance";
+            break;
+        default:
+            errln("FAIL: Unknown break iterator type");
+            return;
+        }
+
+        boolean isIcuImpl = (brkitr instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU);
+
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method + " returned JDK BreakIterator for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method + " returned ICU BreakIterator for locale " + loc);
+            } 
+            BreakIterator brkitrIcu = null;
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            switch (type) {
+            case CHARACTER_BRK:
+                brkitrIcu = BreakIterator.getCharacterInstance(iculoc);
+                break;
+            case WORD_BRK:
+                brkitrIcu = BreakIterator.getWordInstance(iculoc);
+                break;
+            case LINE_BRK:
+                brkitrIcu = BreakIterator.getLineInstance(iculoc);
+                break;
+            case SENTENCE_BRK:
+                brkitrIcu = BreakIterator.getSentenceInstance(iculoc);
+                break;
+            }
+            if (isIcuImpl) {
+                if (!brkitr.equals(brkitrIcu)) {
+                    // BreakIterator.getXXXInstance returns a cached BreakIterator instance.
+                    // BreakIterator does not override Object#equals, so the result may not be
+                    // consistent.
+//                        logln("INFO: " + method + " returned ICU BreakIterator for locale " + loc
+//                                + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(brkitrIcu instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU)) {
+                    errln("FAIL: " + method + " returned JDK BreakIterator for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the behavior of text break between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("fr", "FR"),
+                new Locale("th", "TH"),
+                new Locale("zh", "CN"),
+        };
+
+        String[] TEST_DATA = {
+                "International Components for Unicode (ICU) is an open source project of mature "
+                + "C/C++ and Java libraries for Unicode support, software internationalization and "
+                + "software globalization. ICU is widely portable to many operating systems and "
+                + "environments. It gives applications the same results on all platforms and between "
+                + "C/C++ and Java software. The ICU project is an open source development project "
+                + "that is sponsored, supported and used by IBM and many other companies.",
+
+                "L'International Components for Unicode (ICU) est un projet open source qui fourni "
+                + "des biblioth\u00e8ques pour les langages informatique C/C++ et Java pour supporter "
+                + "Unicode, l'internationalisation et la mondialisation des logiciels. ICU est largement "
+                + "portable vers beaucoup de syst\u00e8mes d'exploitations et d'environnements. Il "
+                + "donne aux applications les m\u00eames comportements et r\u00e9sultats sur toutes "
+                + "les plateformes et entre les logiciels C/C++ et Java. Le projet ICU est un projet "
+                + "dont les code sources sont disponibles qui est sponsoris\u00e9, support\u00e9 et "
+                + "utilis\u00e9 par IBM et beaucoup d'autres entreprises.",
+
+                "\u5728IBM\u7b49\u4f01\u696d\u4e2d\uff0c\u56fd\u9645\u5316\u7ecf\u5e38\u7b80\u5199"
+                + "\u4e3aI18N (\u6216i18n\u6216I18n)\uff0c\u5176\u4e2d18\u4ee3\u8868\u4e86\u4e2d\u95f4"
+                + "\u7701\u7565\u768418\u4e2a\u5b57\u6bcd\uff1b\u800c\u201c\u672c\u5730\u5316\u201d"
+                + "\u540c\u53ef\u7b80\u5199\u4e3al10n\u3002\u9019\u4e24\u4e2a\u6982\u5ff5\u6709\u65f6"
+                + "\u5408\u79f0\u5168\u7403\u5316\uff08g11n\uff09\uff0c\u4f46\u662f\u5168\u7403\u5316"
+                + "\u7684\u6db5\u4e49\u66f4\u4e3a\u4e00\u822c\u5316\u3002\u53e6\u5916\u5076\u5c14\u4f1a"
+                + "\u51fa\u73b0\u201cp13n\u201d\uff0c\u4ee3\u8868\u4e2a\u4eba\u5316\uff08personalization"
+                + "\uff09\u3002",
+
+                "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23"
+                + "\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e40\u0e1b\u0e47"
+                + "\u0e19\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e25\u0e32\u0e07\u0e01\u0e32\u0e23"
+                + "\u0e1b\u0e01\u0e04\u0e23\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29"
+                + "\u0e32 \u0e01\u0e32\u0e23\u0e04\u0e21\u0e19\u0e32\u0e04\u0e21\u0e02\u0e19\u0e2a"
+                + "\u0e48\u0e07 \u0e01\u0e32\u0e23\u0e40\u0e07\u0e34\u0e19\u0e01\u0e32\u0e23\u0e18"
+                + "\u0e19\u0e32\u0e04\u0e32\u0e23 \u0e01\u0e32\u0e23\u0e1e\u0e32\u0e13\u0e34\u0e0a"
+                + "\u0e22\u0e4c \u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e2f"
+                + "\u0e25\u0e2f \u0e42\u0e14\u0e22\u0e21\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35"
+                + "\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 1,562.2 \u0e15\u0e32\u0e23\u0e32"
+                + "\u0e07\u0e01\u0e34\u0e42\u0e25\u0e40\u0e21\u0e15\u0e23 \u0e1e\u0e34\u0e01\u0e31"
+                + "\u0e14\u0e17\u0e32\u0e07\u0e20\u0e39\u0e21\u0e34\u0e28\u0e32\u0e2a\u0e15\u0e23"
+                + "\u0e4c\u0e04\u0e37\u0e2d \u0e25\u0e30\u0e15\u0e34\u0e08\u0e39\u0e14 13\u00b0 45"
+                + "\u2019 \u0e40\u0e2b\u0e19\u0e37\u0e2d \u0e25\u0e2d\u0e07\u0e08\u0e34\u0e08\u0e39"
+                + "\u0e14 100\u00b0 31\u2019 \u0e15\u0e30\u0e27\u0e31\u0e19\u0e2d\u0e2d\u0e01"
+        };
+
+        BreakIterator[] jdkBrkItrs = new BreakIterator[4];
+        com.ibm.icu.text.BreakIterator[] icuBrkItrs = new com.ibm.icu.text.BreakIterator[4];
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+
+            jdkBrkItrs[0] = BreakIterator.getCharacterInstance(iculoc);
+            jdkBrkItrs[1] = BreakIterator.getWordInstance(iculoc);
+            jdkBrkItrs[2] = BreakIterator.getLineInstance(iculoc);
+            jdkBrkItrs[3] = BreakIterator.getSentenceInstance(iculoc);
+ 
+            icuBrkItrs[0] = com.ibm.icu.text.BreakIterator.getCharacterInstance(iculoc);
+            icuBrkItrs[1] = com.ibm.icu.text.BreakIterator.getWordInstance(iculoc);
+            icuBrkItrs[2] = com.ibm.icu.text.BreakIterator.getLineInstance(iculoc);
+            icuBrkItrs[3] = com.ibm.icu.text.BreakIterator.getSentenceInstance(iculoc);
+
+            for (String text : TEST_DATA) {
+                for (int i = 0; i < 4; i++) {
+                    compareBreaks(text, jdkBrkItrs[i], icuBrkItrs[i]);
+                }
+            }
+        }
+    }
+
+    private void compareBreaks(String text, BreakIterator jdkBrk, com.ibm.icu.text.BreakIterator icuBrk) {
+        jdkBrk.setText(text);
+        icuBrk.setText(text);
+
+        // Forward
+        int jidx = jdkBrk.first();
+        int iidx = icuBrk.first();
+        if (jidx != iidx) {
+            errln("FAIL: Different first boundaries (jdk=" + jidx + ",icu=" + iidx + ") for text:\n" + text);
+        }
+        while (true) {
+            jidx = jdkBrk.next();
+            iidx = icuBrk.next();
+            if (jidx != iidx) {
+                errln("FAIL: Different boundaries (jdk=" + jidx + ",icu=" + iidx + "direction=forward) for text:\n" + text);
+            }
+            if (jidx == BreakIterator.DONE) {
+                break;
+            }
+        }
+
+        // Backward
+        jidx = jdkBrk.last();
+        iidx = jdkBrk.last();
+        if (jidx != iidx) {
+            errln("FAIL: Different last boundaries (jdk=" + jidx + ",icu=" + iidx + ") for text:\n" + text);
+        }
+        while (true) {
+            jidx = jdkBrk.previous();
+            iidx = icuBrk.previous();
+            if (jidx != iidx) {
+                errln("FAIL: Different boundaries (jdk=" + jidx + ",icu=" + iidx + "direction=backward) for text:\n" + text);
+            }
+            if (jidx == BreakIterator.DONE) {
+                break;
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
new file mode 100644
index 0000000..9ef9457
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
@@ -0,0 +1,132 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.CollationKey;
+import java.text.Collator;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class CollatorTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollatorTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : Collator.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            Collator coll = Collator.getInstance(loc);
+
+            boolean isIcuImpl = (coll instanceof com.ibm.icu.impl.jdkadapter.CollatorICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK Collator for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU Collator for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                Collator collIcu = Collator.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!coll.equals(collIcu)) {
+                        errln("FAIL: getInstance returned ICU Collator for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(collIcu instanceof com.ibm.icu.impl.jdkadapter.CollatorICU)) {
+                        errln("FAIL: getInstance returned JDK Collator for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the behavior of text collation between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("de", "DE"),
+                new Locale("ja", "JP"),
+        };
+
+        String[] TEST_DATA = {
+                "Cafe",
+                "cafe",
+                "CAFE",
+                "caf\u00e9",
+                "cafe\u0301",
+                "\u304b\u3075\u3047",
+                "\u304c\u3075\u3047",
+                "\u304b\u3075\u3048",
+                "\u30ab\u30d5\u30a7",
+                "\uff76\uff8c\uff6a",
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            Collator jdkColl = Collator.getInstance(iculoc);
+            com.ibm.icu.text.Collator icuColl = com.ibm.icu.text.Collator.getInstance(loc);
+
+            // Default strength = TERITIARY
+            checkCollation(jdkColl, icuColl, TEST_DATA, "TERITIARY", loc);
+
+            // PRIMARY
+            jdkColl.setStrength(Collator.PRIMARY);
+            icuColl.setStrength(com.ibm.icu.text.Collator.PRIMARY);
+            checkCollation(jdkColl, icuColl, TEST_DATA, "PRIMARY", loc);
+
+            // SECONDARY
+            jdkColl.setStrength(Collator.SECONDARY);
+            icuColl.setStrength(com.ibm.icu.text.Collator.SECONDARY);
+            checkCollation(jdkColl, icuColl, TEST_DATA, "SECONDARY", loc);
+        }
+    }
+
+    private void checkCollation(Collator jdkColl, com.ibm.icu.text.Collator icuColl,
+            String[] data, String strength, Locale loc) {
+        for (String text1 : data) {
+            for (String text2 : data) {
+                int jdkRes = jdkColl.compare(text1, text2);
+                int icuRes = icuColl.compare(text1, text2);
+
+                if (jdkRes != icuRes) {
+                    errln("FAIL: Different results for [text1=" + text1 + ",text2=" + text2 + ") for locale "
+                            + loc + " with strength " + strength + " - Result (jdk=" + jdkRes + ",icu=" + icuRes + ")");
+                }
+
+                // Evaluate collationKey
+                CollationKey jdkKey1 = jdkColl.getCollationKey(text1);
+                CollationKey jdkKey2 = jdkColl.getCollationKey(text2);
+
+                com.ibm.icu.text.CollationKey icuKey1 = icuColl.getCollationKey(text1);
+                com.ibm.icu.text.CollationKey icuKey2 = icuColl.getCollationKey(text2);
+
+                int jdkKeyRes = jdkKey1.compareTo(jdkKey2);
+                int icuKeyRes = icuKey1.compareTo(icuKey2);
+
+                if (jdkKeyRes != icuKeyRes) {
+                    errln("FAIL: Different collationKey comparison results for [text1=" + text1 + ",text2=" + text2
+                            + ") for locale " + loc + " with strength " + strength
+                            + " - Result (jdk=" + jdkRes + ",icu=" + icuRes + ")");
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
new file mode 100644
index 0000000..dd62fa7
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
@@ -0,0 +1,82 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Currency;
+import java.util.HashSet;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class CurrencyNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CurrencyNameTest().run(args);
+    }
+
+    public void TestCurrencySymbols() {
+        // Make a set of unique currencies
+        HashSet<Currency> currencies = new HashSet<Currency>();
+        for (Locale l : Locale.getAvailableLocales()) {
+            if (l.getCountry().length() == 0) {
+                continue;
+            }
+            Currency currency = Currency.getInstance(l);
+            if (currency == null) {
+                continue;
+            }
+            currencies.add(currency);
+        }
+
+        for (Currency currency : currencies) {
+            String currencyCode = currency.getCurrencyCode();
+            com.ibm.icu.util.Currency currencyIcu = com.ibm.icu.util.Currency.getInstance(currencyCode);
+            if (currencyIcu == null) {
+                logln("INFO: Currency code " + currencyCode + " is not supported by ICU");
+                continue;
+            }
+            for (Locale loc : Locale.getAvailableLocales()) {
+                if (TestUtil.isProblematicIBMLocale(loc)) {
+                    logln("Skipped " + loc);
+                    continue;
+                }
+
+                String curSymbol = currency.getSymbol(loc);
+                String curSymbolIcu = currencyIcu.getSymbol(loc);
+
+                if (curSymbolIcu.equals(currencyCode)) {
+                    // No data in ICU
+                    if (!curSymbol.equals(currencyCode)) {
+                        logln("INFO: JDK has currency symbol " + curSymbol + " for locale " +
+                                loc + ", but ICU does not");
+                    }
+                    continue;
+                }
+
+                if (TestUtil.isICUExtendedLocale(loc)) {
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        if (!curSymbol.equals(curSymbolIcu)) {
+                            errln("FAIL: Currency symbol for " + currencyCode + " by ICU is " + curSymbolIcu
+                                    + ", but got " + curSymbol + " in locale " + loc);
+                        }
+                    }
+                } else {
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        logln("INFO: Currency symbol for " + currencyCode +  " by ICU is " + curSymbolIcu
+                                + ", but " + curSymbol + " by JDK in locale " + loc);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    Locale locIcu = TestUtil.toICUExtendedLocale(loc);
+                    curSymbol = currency.getSymbol(locIcu);
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        errln("FAIL: Currency symbol for " + currencyCode + " by ICU is " + curSymbolIcu
+                                + ", but got " + curSymbol + " in locale " + locIcu);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..d9357dd
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DateFormatSymbolsTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DateFormatSymbolsTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DateFormatSymbols.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            DateFormatSymbols dfs = DateFormatSymbols.getInstance(loc);
+
+            boolean isIcuImpl = (dfs instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU DateFormatSymbols for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                DateFormatSymbols dfsIcu = DateFormatSymbols.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!dfs.equals(dfsIcu)) {
+                        errln("FAIL: getInstance returned ICU DateFormatSymbols for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(dfsIcu instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU)) {
+                        errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the contents of DateFormatSymbols between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("es", "ES"),
+                new Locale("ja", "JP", "JP"),
+                new Locale("th", "TH"),
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DateFormatSymbols jdkDfs = DateFormatSymbols.getInstance(iculoc);
+            com.ibm.icu.text.DateFormatSymbols icuDfs = com.ibm.icu.text.DateFormatSymbols.getInstance(loc);
+
+            compareArrays(jdkDfs.getAmPmStrings(), icuDfs.getAmPmStrings(), loc, "getAmPmStrings");
+            compareArrays(jdkDfs.getEras(), icuDfs.getEras(), loc, "getEras");
+            compareArrays(jdkDfs.getMonths(), icuDfs.getMonths(), loc, "getMonths");
+            compareArrays(jdkDfs.getShortMonths(), icuDfs.getShortMonths(), loc, "getShortMonths");
+            compareArrays(jdkDfs.getShortWeekdays(), icuDfs.getShortWeekdays(), loc, "getShortWeekdays");
+            compareArrays(jdkDfs.getWeekdays(), icuDfs.getWeekdays(), loc, "getWeekdays");
+            compareArrays(jdkDfs.getZoneStrings(), icuDfs.getZoneStrings(), loc, "getZoneStrings");
+        }
+    }
+
+    /*
+     * Testing setters
+     */
+    public void TestSetSymbols() {
+        // ICU's JDK DateFormatSymbols implementation for ja_JP locale
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(new Locale("ja", "JP", "ICU"));
+
+        // en_US is supported by JDK, so this is the JDK's own DateFormatSymbols
+        Locale loc = new Locale("en", "US");
+        DateFormatSymbols dfsEnUS = DateFormatSymbols.getInstance(loc);
+
+        // Copying over all symbols
+        dfs.setAmPmStrings(dfsEnUS.getAmPmStrings());
+        dfs.setEras(dfsEnUS.getEras());
+        dfs.setMonths(dfsEnUS.getMonths());
+        dfs.setShortMonths(dfsEnUS.getShortMonths());
+        dfs.setShortWeekdays(dfsEnUS.getShortWeekdays());
+        dfs.setWeekdays(dfsEnUS.getWeekdays());
+        dfs.setZoneStrings(dfsEnUS.getZoneStrings());
+
+        compareArrays(dfs.getAmPmStrings(), dfsEnUS.getAmPmStrings(), loc, "getAmPmStrings");
+        compareArrays(dfs.getEras(), dfsEnUS.getEras(), loc, "getEras");
+        compareArrays(dfs.getMonths(), dfsEnUS.getMonths(), loc, "getMonths");
+        compareArrays(dfs.getShortMonths(), dfsEnUS.getShortMonths(), loc, "getShortMonths");
+        compareArrays(dfs.getShortWeekdays(), dfsEnUS.getShortWeekdays(), loc, "getShortWeekdays");
+        compareArrays(dfs.getWeekdays(), dfsEnUS.getWeekdays(), loc, "getWeekdays");
+        compareArrays(dfs.getZoneStrings(), dfsEnUS.getZoneStrings(), loc, "getZoneStrings");
+    }
+
+    private void compareArrays(Object jarray, Object iarray, Locale loc, String method) {
+        if (jarray instanceof String[][]) {
+            String[][] jaa = (String[][])jarray;
+            String[][] iaa = (String[][])iarray;
+
+            if (jaa.length != iaa.length || jaa[0].length != iaa[0].length) {
+                errln("FAIL: Different array size returned by " + method + "for locale "
+                        + loc + "(jdksize=" + jaa.length + "x" + jaa[0].length
+                        + ",icusize=" + iaa.length + "x" + iaa[0].length + ")");
+            }
+
+            for (int i = 0; i < jaa.length; i++) {
+                for (int j = 0; j < jaa[i].length; j++) {
+                    if (!TestUtil.equals(jaa[i][j], iaa[i][j])) {
+                        errln("FAIL: Different symbols returned by " + method + "for locale "
+                                + loc + " at index " + i + "," + j
+                                + " (jdk=" + jaa[i][j] + ",icu=" + iaa[i][j] + ")");
+                    }
+                }
+            }
+
+        } else {
+            String[] ja = (String[])jarray;
+            String[] ia = (String[])iarray;
+
+            if (ja.length != ia.length) {
+                errln("FAIL: Different array size returned by " + method + "for locale "
+                        + loc + "(jdksize=" + ja.length
+                        + ",icusize=" + ia.length + ")");
+            } else {
+                for (int i = 0; i < ja.length; i++) {
+                    if (!TestUtil.equals(ja[i], ia[i])) {
+                        errln("FAIL: Different symbols returned by " + method + "for locale "
+                                + loc + " at index " + i + " (jdk=" + ja[i] + ",icu=" + ia[i] + ")");
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing Nynorsk locales
+     */
+    public void TestNynorsk() {
+        Locale nnNO = new Locale("nn", "NO");
+        Locale noNONY = new Locale("no", "NO", "NY");
+
+        DateFormatSymbols dfs_nnNO = DateFormatSymbols.getInstance(nnNO);
+        DateFormatSymbols dfs_nnNO_ICU = DateFormatSymbols.getInstance(TestUtil.toICUExtendedLocale(nnNO));
+        DateFormatSymbols dfs_noNONY_ICU = DateFormatSymbols.getInstance(TestUtil.toICUExtendedLocale(noNONY));
+
+        // Weekday names should be identical for these three.
+        // If data is taken from no/nb, then this check will fail.
+        String[] dow_nnNO = dfs_nnNO.getWeekdays();
+        String[] dow_nnNO_ICU = dfs_nnNO_ICU.getWeekdays();
+        String[] dow_noNONY_ICU = dfs_noNONY_ICU.getWeekdays();
+
+        for (int i = 1; i < dow_nnNO.length; i++) {
+            if (!dow_nnNO[i].equals(dow_nnNO_ICU[i])) {
+                errln("FAIL: Different weekday name - index=" + i
+                        + ", nn_NO:" + dow_nnNO[i] + ", nn_NO_ICU:" + dow_nnNO_ICU[i]);
+            }
+        }
+        for (int i = 1; i < dow_nnNO.length; i++) {
+            if (!dow_nnNO[i].equals(dow_noNONY_ICU[i])) {
+                errln("FAIL: Different weekday name - index=" + i
+                        + ", nn_NO:" + dow_nnNO[i] + ", no_NO_NY_ICU:" + dow_nnNO_ICU[i]);
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
new file mode 100644
index 0000000..8bef67f
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
@@ -0,0 +1,196 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DateFormatTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DateFormat.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(DateFormat.FULL, DateFormat.LONG, loc);
+            checkGetInstance(DateFormat.MEDIUM, -1, loc);
+            checkGetInstance(1, DateFormat.SHORT, loc);
+        }
+    }
+
+    private void checkGetInstance(int dstyle, int tstyle, Locale loc) {
+        String method[] = new String[1];
+        DateFormat df = getJDKInstance(dstyle, tstyle, loc, method);
+
+        boolean isIcuImpl = (df instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU);
+
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method[0] + " returned JDK DateFormat for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method[0] + " returned ICU DateFormat for locale " + loc);
+            }
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DateFormat dfIcu = getJDKInstance(dstyle, tstyle, iculoc, null);
+            if (isIcuImpl) {
+                if (!df.equals(dfIcu)) {
+                    errln("FAIL: " + method[0] + " returned ICU DateFormat for locale " + loc
+                            + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(dfIcu instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU)) {
+                    errln("FAIL: " + method[0] + " returned JDK DateFormat for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    private DateFormat getJDKInstance(int dstyle, int tstyle, Locale loc, String[] methodName) {
+        DateFormat df;
+        String method;
+        if (dstyle < 0) {
+            df = DateFormat.getTimeInstance(tstyle, loc);
+            method = "getTimeInstance";
+        } else if (tstyle < 0) {
+            df = DateFormat.getDateInstance(dstyle, loc);
+            method = "getDateInstance";
+        } else {
+            df = DateFormat.getDateTimeInstance(dstyle, tstyle, loc);
+            method = "getDateTimeInstance";
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return df;
+    }
+
+    private com.ibm.icu.text.DateFormat getICUInstance(int dstyle, int tstyle, Locale loc, String[] methodName) {
+        com.ibm.icu.text.DateFormat icudf;
+        String method;
+        if (dstyle < 0) {
+            icudf = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, loc);
+            method = "getTimeInstance";
+        } else if (tstyle < 0) {
+            icudf = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, loc);
+            method = "getDateInstance";
+        } else {
+            icudf = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, loc);
+            method = "getDateTimeInstance";
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return icudf;
+    }
+
+    /*
+     * Testing the behavior of date format between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("it", "IT"),
+                new Locale("iw", "IL"),
+                new Locale("ja", "JP", "JP"),
+                new Locale("th", "TH"),
+                new Locale("zh", "TW"),
+        };
+
+        long[] TEST_DATES = {
+                1199499330543L, // 2008-01-05T02:15:30.543Z
+                1217001308085L, // 2008-07-25T15:55:08.085Z
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            for (int dstyle = -1; dstyle <= 3; dstyle++) {
+                for (int tstyle = -1; tstyle <= 3; tstyle++) {
+                    if (tstyle == -1 && dstyle == -1) {
+                        continue;
+                    }
+                    Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                    DateFormat df = getJDKInstance(dstyle, tstyle, iculoc, null);
+                    com.ibm.icu.text.DateFormat icudf = getICUInstance(dstyle, tstyle, loc, null);
+
+                    for (long t : TEST_DATES) {
+                        // Format
+                        Date d = new Date(t);
+                        String dstr1 = df.format(d);
+                        String dstr2 = icudf.format(d);
+
+                        if (!dstr1.equals(dstr2)) {
+                            errln("FAIL: Different format results for locale " + loc + " (dstyle=" + dstyle
+                                    + ",tstyle=" + tstyle + ") at time " + t + " - JDK:" + dstr1
+                                    + " ICU:" + dstr2);
+                            continue;
+                        }
+
+                        // Parse
+                        Date d1, d2;
+                        try {
+                            d1 = df.parse(dstr1);
+                        } catch (ParseException e) {
+                            errln("FAIL: ParseException thrown for JDK DateFormat for string "
+                                    + dstr1 + "(locale=" + iculoc + ",dstyle=" + dstyle + ",tstyle=" + tstyle + ")");
+                            continue;
+                        }
+                        try {
+                            d2 = icudf.parse(dstr1);
+                        } catch (ParseException e) {
+                            errln("FAIL: ParseException thrown for ICU DateFormat for string "
+                                    + dstr1 + "(locale=" + loc + ",dstyle=" + dstyle + ",tstyle=" + tstyle + ")");
+                            continue;
+                        }
+                        if (!d1.equals(d2)) {
+                            errln("FAIL: Different parse results for locale " + loc
+                                    + " for date string " + dstr1 + " (dstyle=" + dstyle
+                                    + ",tstyle=" + tstyle + ") at time " + t + " - JDK:" + dstr1
+                                    + " ICU:" + dstr2);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Check if ICU DateFormatProvider uses Thai native digit for Locale
+     * th_TH_TH.
+     */
+    public void TestThaiDigit() {
+        Locale thTHTH = new Locale("th", "TH", "TH");
+        String pattern = "yyyy-MM-dd";
+
+        DateFormat dfmt = DateFormat.getDateInstance(DateFormat.FULL, thTHTH);
+        DateFormat dfmtIcu = DateFormat.getDateInstance(DateFormat.FULL, TestUtil.toICUExtendedLocale(thTHTH));
+
+        ((java.text.SimpleDateFormat)dfmt).applyPattern(pattern);
+        ((java.text.SimpleDateFormat)dfmtIcu).applyPattern(pattern);
+
+        Date d = new Date();
+        String str1 = dfmt.format(d);
+        String str2 = dfmtIcu.format(d);
+
+        if (!str1.equals(str2)) {
+            errln("FAIL: ICU DateFormat returned a result different from JDK for th_TH_TH");
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..cbb51c3
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
@@ -0,0 +1,159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DecimalFormatSymbols;
+import java.util.Currency;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DecimalFormatSymbolsTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DecimalFormatSymbolsTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DecimalFormatSymbols.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            DecimalFormatSymbols decfs = DecimalFormatSymbols.getInstance(loc);
+
+            boolean isIcuImpl = (decfs instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU DecimalFormatSymbols for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                DecimalFormatSymbols decfsIcu = DecimalFormatSymbols.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!decfs.equals(decfsIcu)) {
+                        errln("FAIL: getInstance returned ICU DecimalFormatSymbols for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(decfsIcu instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU)) {
+                        errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the contents of DecimalFormatSymbols between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("pt", "BR"),
+                new Locale("ko", "KR"),
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DecimalFormatSymbols jdkDecfs = DecimalFormatSymbols.getInstance(iculoc);
+            com.ibm.icu.text.DecimalFormatSymbols icuDecfs = com.ibm.icu.text.DecimalFormatSymbols.getInstance(loc);
+
+            Currency jdkCur = jdkDecfs.getCurrency();
+            com.ibm.icu.util.Currency icuCur = icuDecfs.getCurrency();
+            if ((jdkCur != null && icuCur == null)
+                    || (jdkCur == null && icuCur != null)
+                    || !jdkCur.getCurrencyCode().equals(icuCur.getCurrencyCode())) {
+                errln("FAIL: Different results returned by getCurrency for locale " + loc);
+            }
+
+            checkEquivalence(jdkDecfs.getCurrencySymbol(), icuDecfs.getCurrencySymbol(), loc, "getCurrencySymbol");
+            checkEquivalence(jdkDecfs.getDecimalSeparator(), icuDecfs.getDecimalSeparator(), loc, "getDecimalSeparator");
+            checkEquivalence(jdkDecfs.getDigit(), icuDecfs.getDigit(), loc, "getDigit");
+            checkEquivalence(jdkDecfs.getExponentSeparator(), icuDecfs.getExponentSeparator(), loc, "getExponentSeparator");
+            checkEquivalence(jdkDecfs.getGroupingSeparator(), icuDecfs.getGroupingSeparator(), loc, "getGroupingSeparator");
+            checkEquivalence(jdkDecfs.getInfinity(), icuDecfs.getInfinity(), loc, "getInfinity");
+            checkEquivalence(jdkDecfs.getInternationalCurrencySymbol(), icuDecfs.getInternationalCurrencySymbol(), loc, "getInternationalCurrencySymbol");
+            checkEquivalence(jdkDecfs.getMinusSign(), icuDecfs.getMinusSign(), loc, "getMinusSign");
+            checkEquivalence(jdkDecfs.getMonetaryDecimalSeparator(), icuDecfs.getMonetaryDecimalSeparator(), loc, "getMonetaryDecimalSeparator");
+            checkEquivalence(jdkDecfs.getNaN(), icuDecfs.getNaN(), loc, "getNaN");
+            checkEquivalence(jdkDecfs.getPatternSeparator(), icuDecfs.getPatternSeparator(), loc, "getPatternSeparator");
+            checkEquivalence(jdkDecfs.getPercent(), icuDecfs.getPercent(), loc, "getPercent");
+            checkEquivalence(jdkDecfs.getPerMill(), icuDecfs.getPerMill(), loc, "getPerMill");
+            checkEquivalence(jdkDecfs.getZeroDigit(), icuDecfs.getZeroDigit(), loc, "getZeroDigit");
+        }
+    }
+
+    private void checkEquivalence(Object jo, Object io, Locale loc, String method) {
+        if (!jo.equals(io)) {
+            errln("FAIL: Different results returned by " + method + " for locale "
+                    + loc + " (jdk=" + jo + ",icu=" + io + ")");
+        }
+    }
+
+    /*
+     * Testing setters
+     */
+    public void TestSetSymbols() {
+        // ICU's JDK DecimalFormatSymbols implementation for de_DE locale
+        DecimalFormatSymbols decfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE", "ICU"));
+
+        // en_US is supported by JDK, so this is the JDK's own DecimalFormatSymbols
+        Locale loc = new Locale("en", "US");
+        DecimalFormatSymbols decfsEnUS = DecimalFormatSymbols.getInstance(loc);
+
+        // Copying over all symbols
+        decfs.setCurrency(decfsEnUS.getCurrency());
+
+        decfs.setCurrencySymbol(decfsEnUS.getCurrencySymbol());
+        decfs.setDecimalSeparator(decfsEnUS.getDecimalSeparator());
+        decfs.setDigit(decfsEnUS.getDigit());
+        decfs.setExponentSeparator(decfsEnUS.getExponentSeparator());
+        decfs.setGroupingSeparator(decfsEnUS.getGroupingSeparator());
+        decfs.setInfinity(decfsEnUS.getInfinity());
+        decfs.setInternationalCurrencySymbol(decfsEnUS.getInternationalCurrencySymbol());
+        decfs.setMinusSign(decfsEnUS.getMinusSign());
+        decfs.setMonetaryDecimalSeparator(decfsEnUS.getMonetaryDecimalSeparator());
+        decfs.setNaN(decfsEnUS.getNaN());
+        decfs.setPatternSeparator(decfsEnUS.getPatternSeparator());
+        decfs.setPercent(decfsEnUS.getPercent());
+        decfs.setPerMill(decfsEnUS.getPerMill());
+        decfs.setZeroDigit(decfsEnUS.getZeroDigit());
+
+        // Check
+        Currency cur = decfs.getCurrency();
+        Currency curEnUS = decfsEnUS.getCurrency();
+        if ((cur != null && curEnUS == null)
+                || (cur == null && curEnUS != null)
+                || !cur.equals(curEnUS)) {
+            errln("FAIL: Different results returned by getCurrency");
+        }
+
+        checkEquivalence(decfs.getCurrencySymbol(), decfsEnUS.getCurrencySymbol(), loc, "getCurrencySymbol");
+        checkEquivalence(decfs.getDecimalSeparator(), decfsEnUS.getDecimalSeparator(), loc, "getDecimalSeparator");
+        checkEquivalence(decfs.getDigit(), decfsEnUS.getDigit(), loc, "getDigit");
+        checkEquivalence(decfs.getExponentSeparator(), decfsEnUS.getExponentSeparator(), loc, "getExponentSeparator");
+        checkEquivalence(decfs.getGroupingSeparator(), decfsEnUS.getGroupingSeparator(), loc, "getGroupingSeparator");
+        checkEquivalence(decfs.getInfinity(), decfsEnUS.getInfinity(), loc, "getInfinity");
+        checkEquivalence(decfs.getInternationalCurrencySymbol(), decfsEnUS.getInternationalCurrencySymbol(), loc, "getInternationalCurrencySymbol");
+        checkEquivalence(decfs.getMinusSign(), decfsEnUS.getMinusSign(), loc, "getMinusSign");
+        checkEquivalence(decfs.getMonetaryDecimalSeparator(), decfsEnUS.getMonetaryDecimalSeparator(), loc, "getMonetaryDecimalSeparator");
+        checkEquivalence(decfs.getNaN(), decfsEnUS.getNaN(), loc, "getNaN");
+        checkEquivalence(decfs.getPatternSeparator(), decfsEnUS.getPatternSeparator(), loc, "getPatternSeparator");
+        checkEquivalence(decfs.getPercent(), decfsEnUS.getPercent(), loc, "getPercent");
+        checkEquivalence(decfs.getPerMill(), decfsEnUS.getPerMill(), loc, "getPerMill");
+        checkEquivalence(decfs.getZeroDigit(), decfsEnUS.getZeroDigit(), loc, "getZeroDigit");
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
new file mode 100644
index 0000000..7142439
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
@@ -0,0 +1,181 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+
+public class LocaleNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new LocaleNameTest().run(args);
+    }
+
+    public void TestLanguageNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        StringBuffer icuid = new StringBuffer();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getLanguage().length() == 0) {
+                    continue;
+                }
+                icuid.setLength(0);
+                icuid.append(forLocale.getLanguage());
+                String country = forLocale.getCountry();
+                String variant = forLocale.getVariant();
+                if (country.length() != 0) {
+                    icuid.append("_");
+                    icuid.append(country);
+                }
+                if (variant.length() != 0) {
+                    if (country.length() == 0) {
+                        icuid.append("_");
+                    }
+                    icuid.append("_");
+                    icuid.append(variant);
+                }
+                ULocale forULocale = new ULocale(icuid.toString());
+                String icuname = ULocale.getDisplayLanguage(forULocale.getLanguage(), inULocale);
+                if (icuname.equals(forULocale.getLanguage()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayLanguage(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Language name by JDK is " + name + ", but " + icuname + 
+                              " by ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayLanguage(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestCountryNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getCountry().length() == 0) {
+                    continue;
+                }
+                // ULocale#forLocale preserves country always
+                ULocale forULocale = ULocale.forLocale(forLocale);
+                String icuname = ULocale.getDisplayCountry(forULocale.getCountry(), inULocale);
+                if (icuname.equals(forULocale.getCountry()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayCountry(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    // The name might be taken from JDK
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Country name by JDK is " + name + ", but " + icuname + 
+                              " in ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayCountry(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestVariantNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        StringBuffer icuid = new StringBuffer();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getVariant().length() == 0) {
+                    continue;
+                }
+                icuid.setLength(0);
+                icuid.append(forLocale.getLanguage());
+                String country = forLocale.getCountry();
+                String variant = forLocale.getVariant();
+                if (country.length() != 0) {
+                    icuid.append("_");
+                    icuid.append(country);
+                }
+                if (variant.length() != 0) {
+                    if (country.length() == 0) {
+                        icuid.append("_");
+                    }
+                    icuid.append("_");
+                    icuid.append(variant);
+                }
+                ULocale forULocale = new ULocale(icuid.toString());
+                String icuname = ULocale.getDisplayVariant(forULocale.getVariant(), inULocale);
+                if (icuname.equals(forULocale.getVariant()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayVariant(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Variant name by JDK is " + name + ", but " + icuname + 
+                              " in ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayVariant(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
new file mode 100644
index 0000000..b881182
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
@@ -0,0 +1,291 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class NumberFormatTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new NumberFormatTest().run(args);
+    }
+
+    private static final int DEFAULT_TYPE = 0;
+    private static final int NUMBER_TYPE = 1;
+    private static final int INTEGER_TYPE  = 2;
+    private static final int PERCENT_TYPE = 3;
+    private static final int CURRENCY_TYPE = 4;
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : NumberFormat.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(DEFAULT_TYPE, loc);
+            checkGetInstance(NUMBER_TYPE, loc);
+            checkGetInstance(INTEGER_TYPE, loc);
+            checkGetInstance(PERCENT_TYPE, loc);
+            checkGetInstance(CURRENCY_TYPE, loc);
+        }
+    }
+
+    private void checkGetInstance(int type, Locale loc) {
+        NumberFormat nf;
+        String[] method = new String[1];
+        nf = getJDKInstance(type, loc, method);
+
+        boolean isIcuImpl = (nf instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)
+                            || (nf instanceof com.ibm.icu.impl.jdkadapter.NumberFormatICU);
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method[0] + " returned JDK NumberFormat for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method[0] + " returned ICU NumberFormat for locale " + loc);
+            }
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            NumberFormat nfIcu = null;
+            nfIcu = getJDKInstance(type, iculoc, null);
+            if (isIcuImpl) {
+                if (!nf.equals(nfIcu)) {
+                    errln("FAIL: " + method[0] + " returned ICU NumberFormat for locale " + loc
+                            + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(nfIcu instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)
+                        && !(nfIcu instanceof com.ibm.icu.impl.jdkadapter.NumberFormatICU)) {
+                    errln("FAIL: " + method[0] + " returned JDK NumberFormat for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    private NumberFormat getJDKInstance(int type, Locale loc, String[] methodName) {
+        NumberFormat nf = null;
+        String method = null;
+
+        switch (type) {
+        case DEFAULT_TYPE:
+            nf = NumberFormat.getInstance(loc);
+            method = "getInstance";
+            break;
+        case NUMBER_TYPE:
+            nf = NumberFormat.getNumberInstance(loc);
+            method = "getNumberInstance";
+            break;
+        case INTEGER_TYPE:
+            nf = NumberFormat.getIntegerInstance(loc);
+            method = "getIntegerInstance";
+            break;
+        case PERCENT_TYPE:
+            nf = NumberFormat.getPercentInstance(loc);
+            method = "getPercentInstance";
+            break;
+        case CURRENCY_TYPE:
+            nf = NumberFormat.getCurrencyInstance(loc);
+            method = "getCurrencyInstance";
+            break;
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return nf;
+    }
+
+    private com.ibm.icu.text.NumberFormat getICUInstance(int type, Locale loc, String[] methodName) {
+        com.ibm.icu.text.NumberFormat icunf = null;
+        String method = null;
+
+        switch (type) {
+        case DEFAULT_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getInstance(loc);
+            method = "getInstance";
+            break;
+        case NUMBER_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getNumberInstance(loc);
+            method = "getNumberInstance";
+            break;
+        case INTEGER_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getIntegerInstance(loc);
+            method = "getIntegerInstance";
+            break;
+        case PERCENT_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getPercentInstance(loc);
+            method = "getPercentInstance";
+            break;
+        case CURRENCY_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getCurrencyInstance(loc);
+            method = "getCurrencyInstance";
+            break;
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return icunf;
+    }
+
+    /*
+     * Testing the behavior of number format between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("de", "DE"),
+                new Locale("zh"),
+        };
+
+        long[] TEST_LONGS = {
+                40L,
+                -1578L,
+                112233445566778899L,
+        };
+
+        double[] TEST_DOUBLES = {
+                0.0451D,
+                -1.679D,
+                124578.369D,
+        };
+
+        Object[] TEST_NUMBERS = {
+                Byte.valueOf((byte)13),
+                Integer.valueOf(3961),
+                Long.valueOf(-3451237890000L),
+                Float.valueOf(1.754F),
+                Double.valueOf(-129.942362353D),
+                new BigInteger("-15253545556575859505"),
+                new BigDecimal("3.14159265358979323846264338"),
+        };
+
+        String[] methodName = new String[1];
+        for (Locale loc : TEST_LOCALES) {
+            for (int type = 0; type <= 4; type++) {
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                NumberFormat nf = getJDKInstance(type, iculoc, methodName);
+                com.ibm.icu.text.NumberFormat icunf = getICUInstance(type, loc, null);
+
+                String s1, s2;
+                Number n1, n2;
+                boolean pe1, pe2;
+                for (long l : TEST_LONGS) {
+                    s1 = nf.format(l);
+                    s2 = icunf.format(l);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting long " + l + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing long" + l
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing long " + l + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing long " + l + " in locale " + loc);
+                    }
+                }
+
+                for (double d : TEST_DOUBLES) {
+                    s1 = nf.format(d);
+                    s2 = icunf.format(d);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting double " + d + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing double" + d
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing double " + d + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing double " + d + " in locale " + loc);
+                    }
+                }
+
+                for (Object o : TEST_NUMBERS) {
+                    s1 = nf.format(o);
+                    s2 = icunf.format(o);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting " + o.getClass().getName() + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing " + o.getClass().getName()
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing " + o.getClass().getName() + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing " + o.getClass().getName() + " in locale " + loc);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java b/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java
new file mode 100644
index 0000000..d3775fa
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "BreakIteratorTest",
+            "CollatorTest",
+            "DateFormatSymbolsTest",
+            "DateFormatTest",
+            "DecimalFormatSymbolsTest",
+            "NumberFormatTest",
+            "CurrencyNameTest",
+            "LocaleNameTest",
+            "TimeZoneNameTest",
+        });
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java b/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
new file mode 100644
index 0000000..ded4dfd
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
@@ -0,0 +1,83 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+
+public class TestUtil {
+
+    private static final String ICU_VARIANT = "ICU";
+    private static final String ICU_VARIANT_SUFFIX = "_ICU";
+
+    public static Locale toICUExtendedLocale(Locale locale) {
+        if (isICUExtendedLocale(locale)) {
+            return locale;
+        }
+        String variant = locale.getVariant();
+        variant = variant.length() == 0 ? ICU_VARIANT : variant + ICU_VARIANT_SUFFIX;
+        return new Locale(locale.getLanguage(), locale.getCountry(), variant);
+    }
+
+    public static boolean isICUExtendedLocale(Locale locale) {
+        String variant = locale.getVariant();
+        if (variant.equals(ICU_VARIANT) || variant.endsWith(ICU_VARIANT_SUFFIX)) {
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean equals(Object o1, Object o2) {
+        if (o1 == null && o2 == null) {
+            return true;
+        }
+        if (o1 == null || o2 == null) {
+            return false;
+        }
+        return o1.equals(o2);
+    }
+
+    /*
+     * Ticket#6368
+     * 
+     * The ICU4J locale spi test cases reports many errors on IBM Java 6. There are two kinds
+     * of problems observed and both of them look like implementation problems in IBM Java 6.
+     * 
+     * - When a locale has variant field (for example, sr_RS_Cyrl, de_DE_PREEURO), adding ICU
+     *   suffix in the variant field (for example, sr_RS_Cyrl_ICU, de_DE_PREEURO_ICU) has no effects.
+     *   For these locales, IBM JRE 6 ignores installed Locale providers.
+     *   
+     * - For "sh" sublocales with "ICU" variant (for example, sh__ICU, sh_CS_ICU), IBM JRE 6 also
+     *   ignores installed ICU locale providers. Probably, "sh" is internally mapped to "sr_RS_Cyrl"
+     *   internally before locale look up.
+     * 
+     * For now, we exclude these problematic locales from locale spi test cases on IBM Java 6.
+     */
+    private static final boolean IBMJRE;
+    static {
+        String javaVendor = System.getProperty("java.vendor");
+        if (javaVendor != null && javaVendor.indexOf("IBM") >= 0) {
+            IBMJRE = true;
+        } else {
+            IBMJRE = false;
+        }
+    }
+
+    public static boolean isProblematicIBMLocale(Locale loc) {
+        if (!IBMJRE) {
+            return false;
+        }
+        if (loc.getLanguage().equals("sh")) {
+            return true;
+        }
+        String variant = loc.getVariant();
+        if (variant.startsWith("EURO") || variant.startsWith("PREEURO")
+                || variant.startsWith("Cyrl") || variant.startsWith("Latn")) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
new file mode 100644
index 0000000..d831a76
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
@@ -0,0 +1,104 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TimeZoneNameTest().run(args);
+    }
+
+    public void TestTimeZoneNames() {
+        String[] tzids = TimeZone.getAvailableIDs();
+        for (Locale loc : Locale.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            for (String tzid : tzids) {
+                TimeZone tz = TimeZone.getTimeZone(tzid);
+                com.ibm.icu.util.TimeZone tzIcu = com.ibm.icu.util.TimeZone.getTimeZone(tzid);
+                checkDisplayNamePair(TimeZone.SHORT, tz, tzIcu, loc);
+                checkDisplayNamePair(TimeZone.LONG, tz, tzIcu, loc);
+            }
+        }
+    }
+
+    private void checkDisplayNamePair(int style, TimeZone tz, com.ibm.icu.util.TimeZone icuTz, Locale loc) {
+        /* Note: There are two problems here.
+         * 
+         * It looks Java 6 requires a TimeZoneNameProvider to return both standard name and daylight name
+         * for a zone.  If the provider implementation only returns either of them, Java 6 also ignore
+         * the other.  In ICU, there are zones which do not have daylight names, especially zones which
+         * do not use daylight time.  This test case does not check a standard name if its daylight name
+         * is not available because of the Java 6 implementation problem.
+         * 
+         * Another problem is that ICU always use a standard name for a zone which does not use daylight
+         * saving time even daylight name is requested.
+         */
+
+        String icuStdName = getIcuDisplayName(icuTz, false, style, loc);
+        String icuDstName = getIcuDisplayName(icuTz, true, style, loc);
+        if (icuStdName != null && icuDstName != null && !icuStdName.equals(icuDstName)) {
+            checkDisplayName(false, style, tz, loc, icuStdName);
+            checkDisplayName(true, style, tz, loc, icuDstName);
+        }
+    }
+
+    private String getIcuDisplayName(com.ibm.icu.util.TimeZone icuTz, boolean daylight, int style, Locale loc) {
+        ULocale uloc = ULocale.forLocale(loc);
+        boolean shortStyle = (style == TimeZone.SHORT);
+        String icuname = icuTz.getDisplayName(daylight,
+                (shortStyle ? com.ibm.icu.util.TimeZone.SHORT : com.ibm.icu.util.TimeZone.LONG),
+                uloc);
+        int numDigits = 0;
+        for (int i = 0; i < icuname.length(); i++) {
+            if (UCharacter.isDigit(icuname.charAt(i))) {
+                numDigits++;
+            }
+        }
+        if (numDigits >= 3) {
+            // ICU does not have the localized name
+            return null;
+        }
+        return icuname;
+    }
+
+    private void checkDisplayName(boolean daylight, int style, TimeZone tz, Locale loc, String icuname) {
+        String styleStr = (style == TimeZone.SHORT) ? "SHORT" : "LONG";
+
+        String name = tz.getDisplayName(daylight, style, loc);
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            // The name should be taken from ICU
+            if (!name.equals(icuname)) {
+                errln("FAIL: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + loc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+        } else {
+            if (!name.equals(icuname)) {
+                logln("INFO: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + loc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+            // Try explicit ICU locale (xx_yy_ICU)
+            Locale icuLoc = TestUtil.toICUExtendedLocale(loc);
+            name = tz.getDisplayName(daylight, style, icuLoc);
+            if (!name.equals(icuname)) {
+                errln("FAIL: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + icuLoc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java b/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
new file mode 100644
index 0000000..8332e24
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
@@ -0,0 +1,283 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.icuadapter;
+
+import java.math.RoundingMode;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+
+import com.ibm.icu.impl.jdkadapter.NumberFormatICU;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+
+/**
+ * NumberFormatJDK is an adapter class which wraps java.text.NumberFormat and
+ * implements ICU4J NumberFormat APIs.
+ */
+public class NumberFormatJDK extends com.ibm.icu.text.NumberFormat {
+
+    private static final long serialVersionUID = -1739846528146803964L;
+
+    private NumberFormat fJdkNfmt;
+
+    private NumberFormatJDK(NumberFormat jdkNfmt) {
+        fJdkNfmt = jdkNfmt;
+    }
+
+    public static com.ibm.icu.text.NumberFormat wrap(NumberFormat jdkNfmt) {
+        if (jdkNfmt instanceof NumberFormatICU) {
+            return ((NumberFormatICU)jdkNfmt).unwrap();
+        }
+        return new NumberFormatJDK(jdkNfmt);
+    }
+
+    public NumberFormat unwrap() {
+        return fJdkNfmt;
+    }
+
+    @Override
+    public Object clone() {
+        NumberFormatJDK other = (NumberFormatJDK)super.clone();
+        other.fJdkNfmt = (NumberFormat)fJdkNfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)obj).fJdkNfmt.equals(fJdkNfmt);
+        }
+        return false;
+    }
+
+    //public String format(java.math.BigDecimal number)
+    //public String format(BigDecimal number)
+
+    @Override
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number.toBigDecimal(), toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(java.math.BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(java.math.BigInteger number) 
+
+    //String format(CurrencyAmount currAmt)
+
+    @Override
+    public StringBuffer format(CurrencyAmount currAmt, StringBuffer toAppendTo, FieldPosition pos) {
+        java.util.Currency save = fJdkNfmt.getCurrency();
+        String currCode = currAmt.getCurrency().getCurrencyCode();
+        boolean same = save.getCurrencyCode().equals(currCode);
+        if (!same) {
+            fJdkNfmt.setCurrency(java.util.Currency.getInstance(currCode));
+        }
+        fJdkNfmt.format(currAmt.getNumber(), toAppendTo, pos);
+        if (!same) {
+            fJdkNfmt.setCurrency(save);
+        }
+        return toAppendTo;
+    }
+
+    //public String format(double number)
+
+    @Override
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(long number)
+
+    @Override
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public Currency getCurrency() {
+        java.util.Currency jdkCurrency = fJdkNfmt.getCurrency();
+        if (jdkCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(jdkCurrency.getCurrencyCode());
+    }
+
+    //protected Currency getEffectiveCurrency()
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fJdkNfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fJdkNfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fJdkNfmt.getMinimumFractionDigits();
+    }
+
+    public int getMinumumIntegerDigits() {
+        return fJdkNfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public int getRoundingMode() {
+        RoundingMode jdkMode = fJdkNfmt.getRoundingMode();
+        int icuMode = BigDecimal.ROUND_UP;
+
+        if (jdkMode.equals(RoundingMode.CEILING)) {
+            icuMode = BigDecimal.ROUND_CEILING;
+        } else if (jdkMode.equals(RoundingMode.DOWN)) {
+            icuMode = BigDecimal.ROUND_DOWN;
+        } else if (jdkMode.equals(RoundingMode.FLOOR)) {
+            icuMode = BigDecimal.ROUND_FLOOR;
+        } else if (jdkMode.equals(RoundingMode.HALF_DOWN)) {
+            icuMode = BigDecimal.ROUND_HALF_DOWN;
+        } else if (jdkMode.equals(RoundingMode.HALF_EVEN)) {
+            icuMode = BigDecimal.ROUND_HALF_EVEN;
+        } else if (jdkMode.equals(RoundingMode.HALF_UP)) {
+            icuMode = BigDecimal.ROUND_HALF_UP;
+        } else if (jdkMode.equals(RoundingMode.UNNECESSARY)) {
+            icuMode = BigDecimal.ROUND_UNNECESSARY;
+        } else if (jdkMode.equals(RoundingMode.UP)) {
+            icuMode = BigDecimal.ROUND_UP;
+        }
+        return icuMode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fJdkNfmt.hashCode();
+    }
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fJdkNfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fJdkNfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public boolean isParseStrict() {
+        // JDK NumberFormat does not support strict parsing
+        return false;
+    }
+
+    @Override
+    public Number parse(String text) throws ParseException {
+        return fJdkNfmt.parse(text);
+    }
+
+    @Override
+    public Number parse(String text, ParsePosition parsePosition) {
+        return fJdkNfmt.parse(text, parsePosition);
+    }
+
+    //public Object parseObject(String source, ParsePosition parsePosition)
+
+    @Override
+    public void setCurrency(Currency theCurrency) {
+        if (theCurrency == null) {
+            fJdkNfmt.setCurrency(null);
+            return;
+        } else {
+            fJdkNfmt.setCurrency(java.util.Currency.getInstance(theCurrency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        fJdkNfmt.setGroupingUsed(newValue);
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        fJdkNfmt.setMaximumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        fJdkNfmt.setMaximumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        fJdkNfmt.setMinimumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        fJdkNfmt.setMinimumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fJdkNfmt.setParseIntegerOnly(value);
+    }
+
+    @Override
+    public void setParseStrict(boolean value) {
+        // JDK NumberFormat does not support strict parsing - ignore this operation
+    }
+
+    @Override
+    public void setRoundingMode(int roundingMode) {
+        RoundingMode mode = null;
+        switch (roundingMode) {
+        case BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        if (mode == null) {
+            throw new IllegalArgumentException("Invalid rounding mode: " + roundingMode);
+        }
+        fJdkNfmt.setRoundingMode(mode);
+    }
+}
\ No newline at end of file
diff --git a/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java b/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
new file mode 100644
index 0000000..24025a0
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
@@ -0,0 +1,174 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.icuadapter;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.impl.jdkadapter.TimeZoneICU;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * TimeZoneJDK is an adapter class which wraps java.util.TimeZone and
+ * implements ICU4J TimeZone APIs.
+ */
+public class TimeZoneJDK extends com.ibm.icu.util.TimeZone {
+
+    private static final long serialVersionUID = -1137052823551791933L;
+
+    private TimeZone fJdkTz;
+    private transient Calendar fJdkCal;
+
+    private TimeZoneJDK(TimeZone jdkTz) {
+        fJdkTz = jdkTz;
+    }
+    
+    public static com.ibm.icu.util.TimeZone wrap(TimeZone jdkTz) {
+        if (jdkTz instanceof TimeZoneICU) {
+            return ((TimeZoneICU)jdkTz).unwrap();
+        }
+        return new TimeZoneJDK(jdkTz);
+    }
+    
+    public TimeZone unwrap() {
+        return fJdkTz;
+    }
+
+    @Override
+    public Object clone() {
+        TimeZoneJDK other = (TimeZoneJDK)super.clone();
+        other.fJdkTz = (TimeZone)fJdkTz.clone();
+        return other;
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof TimeZoneJDK) {
+            return (((TimeZoneJDK)obj).fJdkTz).equals(fJdkTz);
+        }
+        return false;
+    }
+
+    //public String getDisplayName()
+    //public String getDisplayName(boolean daylight, int style)
+    //public String getDisplayName(Locale locale)
+    //public String getDisplayName(ULocale locale)
+    @Override
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return fJdkTz.getDisplayName(daylight, style, locale);
+    }
+    
+    @Override
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        return fJdkTz.getDisplayName(daylight, style, locale.toLocale());
+    }
+
+    @Override
+    public int getDSTSavings() {
+        return fJdkTz.getDSTSavings();
+    }
+
+    @Override
+    public String getID() {
+        return fJdkTz.getID();
+    }
+
+    @Override
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return fJdkTz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    @Override
+    public int getOffset(long date) {
+        return fJdkTz.getOffset(date);
+    }
+
+    @Override
+    public void getOffset(long date, boolean local, int[] offsets) {
+        synchronized(this) {
+            if (fJdkCal == null) {
+                fJdkCal = new GregorianCalendar(fJdkTz);
+            }
+            if (local) {
+                int fields[] = new int[6];
+                Grego.timeToFields(date, fields);
+                int hour, min, sec, mil;
+                int tmp = fields[5];
+                mil = tmp % 1000;
+                tmp /= 1000;
+                sec = tmp % 60;
+                tmp /= 60;
+                min = tmp % 60;
+                hour = tmp / 60;
+                fJdkCal.clear();
+                fJdkCal.set(fields[0], fields[1], fields[2], hour, min, sec);
+                fJdkCal.set(java.util.Calendar.MILLISECOND, mil);
+
+                int doy1, hour1, min1, sec1, mil1;
+                doy1 = fJdkCal.get(java.util.Calendar.DAY_OF_YEAR);
+                hour1 = fJdkCal.get(java.util.Calendar.HOUR_OF_DAY);
+                min1 = fJdkCal.get(java.util.Calendar.MINUTE);
+                sec1 = fJdkCal.get(java.util.Calendar.SECOND);
+                mil1 = fJdkCal.get(java.util.Calendar.MILLISECOND);
+
+                if (fields[4] != doy1 || hour != hour1 || min != min1 || sec != sec1 || mil != mil1) {
+                    // Calendar field(s) were changed due to the adjustment for non-existing time
+                    // Note: This code does not support non-existing local time at year boundary properly.
+                    // But, it should work fine for real timezones.
+                    int dayDelta = Math.abs(doy1 - fields[4]) > 1 ? 1 : doy1 - fields[4];
+                    int delta = ((((dayDelta * 24) + hour1 - hour) * 60 + min1 - min) * 60 + sec1 - sec) * 1000 + mil1 - mil;
+
+                    // In this case, we use the offsets before the transition
+                    fJdkCal.setTimeInMillis(fJdkCal.getTimeInMillis() - delta - 1);
+                }
+            } else {
+                fJdkCal.setTimeInMillis(date);
+            }
+            offsets[0] = fJdkCal.get(java.util.Calendar.ZONE_OFFSET);
+            offsets[1] = fJdkCal.get(java.util.Calendar.DST_OFFSET);
+        }
+    }
+
+    @Override
+    public int getRawOffset() {
+        return fJdkTz.getRawOffset();
+    }
+
+    @Override
+    public int hashCode() {
+        return fJdkTz.hashCode();
+    }
+
+    @Override
+    public boolean hasSameRules(com.ibm.icu.util.TimeZone other) {
+        return other.hasSameRules(TimeZoneJDK.wrap(fJdkTz));
+    }
+
+    @Override
+    public boolean inDaylightTime(Date date) {
+        return fJdkTz.inDaylightTime(date);
+    }
+
+    @Override
+    public void setID(String ID) {
+        fJdkTz.setID(ID);
+    }
+
+    @Override
+    public void setRawOffset(int offsetMillis) {
+        fJdkTz.setRawOffset(offsetMillis);
+    }
+
+    @Override
+    public boolean useDaylightTime() {
+        return fJdkTz.useDaylightTime();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
new file mode 100644
index 0000000..8b06446
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class ICULocaleServiceProvider {
+    private static final String SPI_PROP_FILE = "com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties";
+
+    private static final String SUFFIX_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix";
+    private static final String ENABLE_VARIANTS_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants";
+    private static final String ENABLE_ISO3_LANG_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages";
+    private static final String USE_DECIMALFORMAT_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat";
+
+    private static boolean configLoaded = false;
+
+    private static String suffix = "ICU";
+    private static boolean enableVariants = true;
+    private static boolean enableIso3Lang = true;
+    private static boolean useDecimalFormat = false;
+
+    private static final Locale[] SPECIAL_LOCALES = {
+        new Locale("ja", "JP", "JP"),
+        new Locale("no"),
+        new Locale("no", "NO"),
+        new Locale("no", "NO", "NY"),
+        new Locale("sr", "CS"),
+        new Locale("th", "TH", "TH"),
+    };
+
+    private static Locale[] LOCALES = null;
+
+    public static Locale[] getAvailableLocales() {
+        Locale[] all = getLocales();
+        return Arrays.copyOf(all, all.length);
+    }
+
+    public static Locale canonicalize(Locale locale) {
+        Locale result = locale;
+        String variant = locale.getVariant();
+        String suffix = getIcuSuffix();
+        if (variant.equals(suffix)) {
+            result = new Locale(locale.getLanguage(), locale.getCountry());
+        } else if (variant.endsWith(suffix)
+                && variant.charAt(variant.length() - suffix.length() - 1) == '_') {
+            variant = variant.substring(0, variant.length() - suffix.length() - 1);
+            result = new Locale(locale.getLanguage(), locale.getCountry(), variant);
+        }
+        return result;
+    }
+
+    public static boolean useDecimalFormat() {
+        loadConfiguration();
+        return useDecimalFormat;
+    }
+
+    private static final Locale THAI_NATIVE_DIGIT_LOCALE = new Locale("th", "TH", "TH");
+    private static final char THAI_NATIVE_ZERO = '\u0E50';
+    private static DecimalFormatSymbols THAI_NATIVE_DECIMAL_SYMBOLS = null;
+
+    /*
+     * Returns a DecimalFormatSymbols if the given locale requires
+     * non-standard symbols, more specifically, native digits used
+     * by JDK Locale th_TH_TH.  If the locale does not requre a special
+     * symbols, null is returned.
+     */
+    public static synchronized DecimalFormatSymbols getDecimalFormatSymbolsForLocale(Locale loc) {
+        if (loc.equals(THAI_NATIVE_DIGIT_LOCALE)) {
+            if (THAI_NATIVE_DECIMAL_SYMBOLS == null) {
+                THAI_NATIVE_DECIMAL_SYMBOLS = new DecimalFormatSymbols(new ULocale("th_TH"));
+                THAI_NATIVE_DECIMAL_SYMBOLS.setDigit(THAI_NATIVE_ZERO);
+            }
+            return (DecimalFormatSymbols)THAI_NATIVE_DECIMAL_SYMBOLS.clone();
+        }
+        return null;
+    }
+
+    private static synchronized Locale[] getLocales() {
+        if (LOCALES != null) {
+            return LOCALES;
+        }
+
+        Set<Locale> localeSet = new HashSet<Locale>();
+        ULocale[] icuLocales = ICUResourceBundle.getAvailableULocales();
+
+        for (ULocale uloc : icuLocales) {
+            String language = uloc.getLanguage();
+            String country = uloc.getCountry();
+            String variant = uloc.getVariant();
+            if (language.length() >= 3 && !enableIso3Languages()) {
+                continue;
+            }
+            addLocale(new Locale(language, country, variant), localeSet);
+        }
+
+        for (Locale l : SPECIAL_LOCALES) {
+            addLocale(l, localeSet);
+        }
+
+        LOCALES = localeSet.toArray(new Locale[0]);
+        return LOCALES;
+    }
+
+    private static void addLocale(Locale loc, Set<Locale> locales) {
+        locales.add(loc);
+
+        if (enableIcuVariants()) {
+            // Add ICU variant
+            String language = loc.getLanguage();
+            String country = loc.getCountry();
+            String variant = loc.getVariant();
+
+            StringBuffer var = new StringBuffer(variant);
+            if (var.length() != 0) {
+                var.append("_");
+            }
+            var.append(getIcuSuffix());
+            locales.add(new Locale(language, country, var.toString()));
+        }
+    }
+
+    private static boolean enableIso3Languages() {
+        return enableIso3Lang;
+    }
+
+    private static boolean enableIcuVariants() {
+        loadConfiguration();
+        return enableVariants;
+    }
+
+    private static String getIcuSuffix() {
+        loadConfiguration();
+        return suffix;
+    }
+
+    private static synchronized void loadConfiguration() {
+        if (configLoaded) {
+            return;
+        }
+        Properties spiConfigProps = new Properties();
+        try {
+            InputStream is = ClassLoader.getSystemResourceAsStream(SPI_PROP_FILE);
+            spiConfigProps.load(is);
+
+            String val = (String)spiConfigProps.get(SUFFIX_KEY);
+            if (val != null && val.length() > 0) {
+                suffix = val;
+            }
+            enableVariants = parseBooleanString((String)spiConfigProps.get(ENABLE_VARIANTS_KEY), enableVariants);
+            enableIso3Lang = parseBooleanString((String)spiConfigProps.get(ENABLE_ISO3_LANG_KEY), enableIso3Lang);
+            useDecimalFormat = parseBooleanString((String)spiConfigProps.get(USE_DECIMALFORMAT_KEY), useDecimalFormat);
+        } catch (IOException ioe) {
+            // Any IO errors, ignore
+        }
+        configLoaded = true;
+    }
+
+    private static boolean parseBooleanString(String str, boolean defaultVal) {
+        if (str == null) {
+            return defaultVal;
+        }
+        if (str.equalsIgnoreCase("true")) {
+            return true;
+        } else if (str.equalsIgnoreCase("false")) {
+            return false;
+        }
+        return defaultVal;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
new file mode 100644
index 0000000..5103af2
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
@@ -0,0 +1,30 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2008, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties is used for configuring ICU locale service provider
+#* implementation.
+#*
+
+# Whether if Locales with ICU's variant suffix will be included in getAvailableLocales.
+# [default: true]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants = true
+
+# Suffix string used in Locale's variant field to specify the ICU implementation.
+# [default: ICU]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix = ICU
+
+# Whether if 3-letter language Locales are included in getAvailabeLocales.
+# [default: true]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages = true
+
+# Whether if java.text.DecimalFormat subclass is used for NumberFormat#getXXXInstance.
+# DecimalFormat#format(Object,StringBuffer,FieldPosition) is declared as final, so
+# ICU cannot override the implementation.  As a result, some number types such as
+# BigInteger/BigDecimal are not handled by the ICU implementation.  If a client expects
+# NumberFormat#getXXXInstance returns a DecimalFormat (for example, need to manipulate
+# decimal format patterns), he/she can set true to this setting.  However, in this case,
+# BigInteger/BigDecimal support is not done by ICU's implementation.
+# [default: false]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat = false
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
new file mode 100644
index 0000000..15b8709
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
@@ -0,0 +1,51 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.BreakIterator;
+import java.text.spi.BreakIteratorProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.BreakIteratorICU;
+
+public class BreakIteratorProviderICU extends BreakIteratorProvider {
+
+    @Override
+    public BreakIterator getCharacterInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getCharacterInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getLineInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getLineInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getSentenceInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getSentenceInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getWordInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getWordInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
new file mode 100644
index 0000000..0f5195a
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.Collator;
+import java.text.spi.CollatorProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.CollatorICU;
+
+public class CollatorProviderICU extends CollatorProvider {
+
+    @Override
+    public Collator getInstance(Locale locale) {
+        com.ibm.icu.text.Collator icuCollator = com.ibm.icu.text.Collator.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return CollatorICU.wrap(icuCollator);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
new file mode 100644
index 0000000..8971c57
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
@@ -0,0 +1,68 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DateFormat;
+import java.text.spi.DateFormatProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU;
+
+public class DateFormatProviderICU extends DateFormatProvider {
+
+    private static final int NONE = -1;
+
+    @Override
+    public DateFormat getDateInstance(int style, Locale locale) {
+        return getInstance(style, NONE, locale);
+    }
+
+    @Override
+    public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {
+        return getInstance(dateStyle, timeStyle, locale);
+    }
+
+    @Override
+    public DateFormat getTimeInstance(int style, Locale locale) {
+        return getInstance(NONE, style, locale);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+    private DateFormat getInstance(int dstyle, int tstyle, Locale locale) {
+        com.ibm.icu.text.DateFormat icuDfmt;
+        Locale actual = ICULocaleServiceProvider.canonicalize(locale);
+        if (dstyle == NONE) {
+            icuDfmt = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, actual);
+        } else if (tstyle == NONE) {
+            icuDfmt = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, actual);
+        } else {
+            icuDfmt = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, actual);
+        }
+        if (!(icuDfmt instanceof com.ibm.icu.text.SimpleDateFormat)) {
+            // icuDfmt must be always SimpleDateFormat
+            return null;
+        }
+
+        com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);
+        if (decfs != null) {
+            com.ibm.icu.text.NumberFormat icuNfmt = icuDfmt.getNumberFormat();
+            if (icuNfmt instanceof com.ibm.icu.text.DecimalFormat) {
+                ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);
+            } else if (icuNfmt instanceof com.ibm.icu.impl.DateNumberFormat) {
+                ((com.ibm.icu.impl.DateNumberFormat)icuNfmt).setZeroDigit(decfs.getDigit());
+            }
+            icuDfmt.setNumberFormat(icuNfmt);
+        }
+
+        return SimpleDateFormatICU.wrap((com.ibm.icu.text.SimpleDateFormat)icuDfmt);
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..c1e1b79
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DateFormatSymbols;
+import java.text.spi.DateFormatSymbolsProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU;
+
+public class DateFormatSymbolsProviderICU extends DateFormatSymbolsProvider {
+
+    @Override
+    public DateFormatSymbols getInstance(Locale locale) {
+        com.ibm.icu.text.DateFormatSymbols icuDfs = com.ibm.icu.text.DateFormatSymbols.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return DateFormatSymbolsICU.wrap(icuDfs);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..96c483d
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DecimalFormatSymbols;
+import java.text.spi.DecimalFormatSymbolsProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU;
+
+public class DecimalFormatSymbolsProviderICU extends
+        DecimalFormatSymbolsProvider {
+
+    @Override
+    public DecimalFormatSymbols getInstance(Locale locale) {
+        com.ibm.icu.text.DecimalFormatSymbols icuDecfs = com.ibm.icu.text.DecimalFormatSymbols.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return DecimalFormatSymbolsICU.wrap(icuDecfs);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
new file mode 100644
index 0000000..a786d72
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
@@ -0,0 +1,88 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.NumberFormat;
+import java.text.spi.NumberFormatProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DecimalFormatICU;
+import com.ibm.icu.impl.jdkadapter.NumberFormatICU;
+
+public class NumberFormatProviderICU extends NumberFormatProvider {
+
+    private final int NUMBER = 0;
+    private final int INTEGER = 1;
+    private final int CURRENCY = 2;
+    private final int PERCENT = 3;
+
+    @Override
+    public NumberFormat getCurrencyInstance(Locale locale) {
+        return getInstance(CURRENCY, locale);
+    }
+
+    @Override
+    public NumberFormat getIntegerInstance(Locale locale) {
+        return getInstance(INTEGER, locale);
+    }
+
+    @Override
+    public NumberFormat getNumberInstance(Locale locale) {
+        return getInstance(NUMBER, locale);
+    }
+
+    @Override
+    public NumberFormat getPercentInstance(Locale locale) {
+        return getInstance(PERCENT, locale);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+    private NumberFormat getInstance(int type, Locale locale) {
+        com.ibm.icu.text.NumberFormat icuNfmt;
+        Locale actual = ICULocaleServiceProvider.canonicalize(locale);
+        switch (type) {
+        case NUMBER:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getNumberInstance(actual);
+            break;
+        case INTEGER:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getIntegerInstance(actual);
+            break;
+        case CURRENCY:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getCurrencyInstance(actual);
+            break;
+        case PERCENT:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getPercentInstance(actual);
+            break;
+        default:
+            return null;
+        }
+
+        if (!(icuNfmt instanceof com.ibm.icu.text.DecimalFormat)) {
+            // icuNfmt must be always DecimalFormat
+            return null;
+        }
+
+        NumberFormat nf = null;
+        if (ICULocaleServiceProvider.useDecimalFormat()) {
+            nf = DecimalFormatICU.wrap((com.ibm.icu.text.DecimalFormat)icuNfmt);
+        } else {
+            nf = NumberFormatICU.wrap(icuNfmt);
+        }
+
+        com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);
+        if (decfs != null) {
+            ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);
+        }
+
+        return nf;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
new file mode 100644
index 0000000..423f3b8
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+import java.util.spi.CurrencyNameProvider;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.util.Currency;
+
+public class CurrencyNameProviderICU extends CurrencyNameProvider {
+
+    @Override
+    public String getSymbol(String currencyCode, Locale locale) {
+        Currency cur = Currency.getInstance(currencyCode);
+        String sym = cur.getSymbol(ICULocaleServiceProvider.canonicalize(locale));
+        if (sym.length() == 0 || sym.equals(currencyCode)) {
+            return null;
+        }
+        return sym;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
new file mode 100644
index 0000000..8ab8b58
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+import java.util.spi.LocaleNameProvider;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.util.ULocale;
+
+public class LocaleNameProviderICU extends LocaleNameProvider {
+
+    @Override
+    public String getDisplayCountry(String countryCode, Locale locale) {
+        String id = "und_" + countryCode;
+        String disp = ULocale.getDisplayCountry(id, ULocale.forLocale(ICULocaleServiceProvider.canonicalize(locale)));
+        if (disp.length() == 0 || disp.equals(countryCode)) {
+            return null;
+        }
+        return disp;
+    }
+
+    @Override
+    public String getDisplayLanguage(String languageCode, Locale locale) {
+        String disp = ULocale.getDisplayLanguage(languageCode, ULocale.forLocale(ICULocaleServiceProvider.canonicalize(locale)));
+        if (disp.length() == 0 || disp.equals(languageCode)) {
+            return null;
+        }
+        return disp;
+    }
+
+    @Override
+    public String getDisplayVariant(String variant, Locale locale) {
+        // ICU does not support JDK Locale variant names
+        return null;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
new file mode 100644
index 0000000..cfbd2db
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.TimeZone;
+
+public class TimeZoneNameProviderICU extends java.util.spi.TimeZoneNameProvider {
+
+    @Override
+    public String getDisplayName(String ID, boolean daylight, int style, Locale locale) {
+        TimeZone tz = TimeZone.getTimeZone(ID);
+        Locale actualLocale = ICULocaleServiceProvider.canonicalize(locale);
+        String disp = tz.getDisplayName(daylight, style, actualLocale);
+        if (disp.length() == 0) {
+            return null;
+        }
+        // This is ugly hack, but no simple solution to check if
+        // the localized name was picked up.
+        int numDigits = 0;
+        for (int i = 0; i < disp.length(); i++) {
+            char c = disp.charAt(i);
+            if (UCharacter.isDigit(c)) {
+                numDigits++;
+            }
+        }
+        // If there are more than 3 numbers, this code assume GMT format was used.
+        if (numDigits >= 3) {
+            return null;
+        }
+
+        if (daylight) {
+            // ICU uses standard name for daylight name when the zone does not use
+            // daylight saving time.
+
+            // This is yet another ugly hack to support the JDK's behavior
+            String stdDisp = tz.getDisplayName(false, style, actualLocale);
+            if (disp.equals(stdDisp)) {
+                return null;
+            }
+        }
+        return disp;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
new file mode 100644
index 0000000..6f9a479
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
@@ -0,0 +1,100 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.BreakIterator;
+
+/**
+ * BreakIteratorICU is an adapter class which wraps ICU4J BreakIterator and
+ * implements java.text.BreakIterator APIs.
+ */
+public class BreakIteratorICU extends java.text.BreakIterator {
+
+    private BreakIterator fIcuBrkItr;
+
+    private BreakIteratorICU(BreakIterator icuBrkItr) {
+        fIcuBrkItr = icuBrkItr;
+    }
+
+    public static java.text.BreakIterator wrap(BreakIterator icuBrkItr) {
+        return new BreakIteratorICU(icuBrkItr);
+    }
+
+    public BreakIterator unwrap() {
+        return fIcuBrkItr;
+    }
+
+    @Override
+    public Object clone() {
+        BreakIteratorICU other = (BreakIteratorICU)super.clone();
+        other.fIcuBrkItr = (BreakIterator)fIcuBrkItr.clone();
+        return other;
+    }
+
+    @Override
+    public int current() {
+        return fIcuBrkItr.current();
+    }
+
+    @Override
+    public int first() {
+        return fIcuBrkItr.first();
+    }
+
+    @Override
+    public int following(int offset) {
+        return fIcuBrkItr.following(offset);
+    }
+
+    @Override
+    public CharacterIterator getText() {
+        return fIcuBrkItr.getText();
+    }
+
+    @Override
+    public boolean isBoundary(int offset) {
+        return fIcuBrkItr.isBoundary(offset);
+    }
+
+    @Override
+    public int last() {
+        return fIcuBrkItr.last();
+    }
+
+    @Override
+    public int next() {
+        return fIcuBrkItr.next();
+    }
+
+    @Override
+    public int next(int n) {
+        return fIcuBrkItr.next(n);
+    }
+
+    @Override
+    public int preceding(int offset) {
+        return fIcuBrkItr.preceding(offset);
+    }
+
+    @Override
+    public int previous() {
+        return fIcuBrkItr.previous();
+    }
+
+    @Override
+    public void setText(CharacterIterator newText) {
+        fIcuBrkItr.setText(newText);
+    }
+
+    @Override
+    public void setText(String newText) {
+        fIcuBrkItr.setText(newText);
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
new file mode 100644
index 0000000..f111b4b
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
@@ -0,0 +1,329 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.Calendar;
+
+/**
+ * CalendarICU is an adapter class which wraps ICU4J Calendar and
+ * implements java.util.Calendar APIs.
+ */
+public class CalendarICU extends java.util.Calendar {
+
+    private static final long serialVersionUID = -8641226371713600671L;
+
+    private Calendar fIcuCal;
+    
+    private CalendarICU(Calendar icuCal) {
+        fIcuCal = icuCal;
+        init();
+    }
+
+    public static java.util.Calendar wrap(Calendar icuCal) {
+        return new CalendarICU(icuCal);
+    }
+
+    public Calendar unwrap() {
+        sync();
+        return fIcuCal;
+    }
+
+    @Override
+    public void add(int field, int amount) {
+        sync();
+        fIcuCal.add(field, amount);
+    }
+
+    // Note:    We do not need to override followings.  These methods
+    //          call int compareTo(Calendar anotherCalendar) and we
+    //          override the method.
+    //public boolean after(Object when)
+    //public boolean before(Object when)
+
+    // Note:    Jeez!  These methods are final and we cannot override them.
+    //          We do not want to rewrite ICU Calendar implementation classes
+    //          as subclasses of java.util.Calendar.  This adapter class
+    //          wraps an ICU Calendar instance and the calendar calculation
+    //          is actually done independently from java.util.Calendar
+    //          implementation.  Thus, we need to monitor the status of
+    //          superclass fields in some methods and call ICU Calendar's
+    //          clear if superclass clear update the status of superclass's
+    //          calendar fields.  See private void sync().
+    //public void clear()
+    //public void clear(int field)
+    
+    @Override
+    public Object clone() {
+        sync();
+        CalendarICU other = (CalendarICU)super.clone();
+        other.fIcuCal = (Calendar)fIcuCal.clone();
+        return other;
+    }
+
+    public int compareTo(Calendar anotherCalendar)  {
+        sync();
+        long thisMillis = getTimeInMillis();
+        long otherMillis = anotherCalendar.getTimeInMillis();
+        return thisMillis > otherMillis ? 1 : (thisMillis == otherMillis ? 0 : -1);
+    }
+
+    // Note:    These methods are supposed to be implemented by java.util.Calendar
+    //          subclasses.  But we actually use a instance of ICU Calendar
+    //          for all calendar calculation, we do nothing here.
+    @Override
+    protected void complete() {}
+    @Override
+    protected void computeFields() {}
+    @Override
+    protected void computeTime() {}
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof CalendarICU) {
+            sync();
+            return ((CalendarICU)obj).fIcuCal.equals(fIcuCal);
+        }
+        return false;
+    }
+
+    @Override
+    public int get(int field) {
+        sync();
+        return fIcuCal.get(field);
+    }
+
+    @Override
+    public int getActualMaximum(int field) {
+        return fIcuCal.getActualMaximum(field);
+    }
+
+    @Override
+    public int getActualMinimum(int field) {
+        return fIcuCal.getActualMinimum(field);
+    }
+
+    @Override
+    public String getDisplayName(int field, int style, Locale locale) {
+        if (field < 0 || field >= FIELD_COUNT || (style != SHORT && style != LONG && style != ALL_STYLES)) {
+            throw new IllegalArgumentException("Bad field or style.");
+        }
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(locale);
+        String[] array = getFieldStrings(field, style, dfs);
+        if (array != null) {
+            int fieldVal = get(field);
+            if (fieldVal < array.length) {
+                return array[fieldVal];
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String,Integer> getDisplayNames(int field, int style, Locale locale) {
+        if (field < 0 || field >= FIELD_COUNT || (style != SHORT && style != LONG && style != ALL_STYLES)) {
+            throw new IllegalArgumentException("Bad field or style.");
+        }
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(locale);
+        if (style != ALL_STYLES) {
+            return getFieldStringsMap(field, style, dfs);
+        }
+
+        Map<String,Integer> result = getFieldStringsMap(field, SHORT, dfs);
+        if (result == null) {
+            return null;
+        }
+        if (field == MONTH || field == DAY_OF_WEEK) {
+            Map<String,Integer> longMap = getFieldStringsMap(field, LONG, dfs);
+            if (longMap != null) {
+                result.putAll(longMap);
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public int getGreatestMinimum(int field) {
+        return fIcuCal.getGreatestMinimum(field);
+    }
+
+    @Override
+    public int getLeastMaximum(int field) {
+        return fIcuCal.getLeastMaximum(field);
+    }
+
+    @Override
+    public int getMaximum(int field) {
+        return fIcuCal.getMaximum(field);
+    }
+
+    @Override
+    public int getMinimalDaysInFirstWeek() {
+        return fIcuCal.getMinimalDaysInFirstWeek();
+    }
+
+    @Override
+    public int getMinimum(int field) {
+        return fIcuCal.getMinimum(field);
+    }
+
+    // Note:    getTime() calls getTimeInMillis()
+    //public Date getTime()
+
+    @Override
+    public long getTimeInMillis() {
+        sync();
+        return fIcuCal.getTimeInMillis();
+    }
+
+    @Override
+    public TimeZone getTimeZone() {
+        return TimeZoneICU.wrap(fIcuCal.getTimeZone());
+    }
+
+    @Override
+    public int hashCode() {
+        sync();
+        return fIcuCal.hashCode();
+    }
+
+    //protected int internalGet(int field)
+
+    @Override
+    public boolean isLenient() {
+        return fIcuCal.isLenient();
+    }
+
+    //public boolean isSet(int field)
+
+    @Override
+    public void roll(int field, boolean up) {
+        sync();
+        fIcuCal.roll(field, up);
+    }
+
+    @Override
+    public void roll(int field, int amount) {
+        sync();
+        fIcuCal.roll(field, amount);
+    }
+
+    @Override
+    public void set(int field, int value) {
+        sync();
+        fIcuCal.set(field, value);
+    }
+
+    // Note:    These set methods call set(int field, int value) for each field.
+    //          These are final, so we cannot override them, but we override
+    //          set(int field, int value), so the superclass implementations
+    //          still work as we want.
+    //public void set(int year, int month, int date)
+    //public void set(int year, int month, int date, int hourOfDay, int minute)
+    //public void set(int year, int month, int date, int hourOfDay, int minute, int second)
+
+    @Override
+    public void setFirstDayOfWeek(int value) {
+        fIcuCal.setFirstDayOfWeek(value);
+    }
+
+    @Override
+    public void setLenient(boolean lenient) {
+        fIcuCal.setLenient(lenient);
+    }
+
+    @Override
+    public void setMinimalDaysInFirstWeek(int value) {
+        fIcuCal.setMinimalDaysInFirstWeek(value);
+    }
+
+    // Note:    This method calls setTimeInMillis(long millis).
+    //          This method is final, so we cannot override it, but we
+    //          override setTimeInMillis(long millis), so the superclass
+    //          implementation still works as we want.
+    //public void setTime(Date date)
+
+    @Override
+    public void setTimeInMillis(long millis) {
+        fIcuCal.setTimeInMillis(millis);
+    }
+
+    @Override
+    public void setTimeZone(TimeZone value) {
+        fIcuCal.setTimeZone(TimeZoneJDK.wrap(value));
+    }
+
+    @Override
+    public String toString() {
+        sync();
+        return "CalendarICU: " + fIcuCal.toString();
+    }
+
+    private void sync() {
+        // Check if clear is called for each JDK Calendar field.
+        // If it was, then call clear for the field in the wrapped
+        // ICU Calendar.
+        for (int i = 0; i < isSet.length; i++) {
+            if (!isSet[i]) {
+                isSet[i] = true;
+                try {
+                    fIcuCal.clear(i);
+                } catch (ArrayIndexOutOfBoundsException e) {
+                    // More fields in JDK calendar, which is unlikely
+                }
+            }
+        }
+    }
+
+    private void init() {
+        // Mark "set" for all fields, so we can detect the invocation of
+        // clear() later.
+        for (int i = 0; i < isSet.length; i++) {
+            isSet[i] = true;
+        }
+    }
+
+    private static String[] getFieldStrings(int field, int style, DateFormatSymbols dfs) {
+        String[] result = null;
+        switch (field) {
+        case AM_PM:
+            result = dfs.getAmPmStrings();
+            break;
+        case DAY_OF_WEEK:
+            result = (style == LONG) ? dfs.getWeekdays() : dfs.getShortWeekdays();
+            break;
+        case ERA:
+            //result = (style == LONG) ? dfs.getEraNames() : dfs.getEras();
+            result = dfs.getEras();
+            break;
+        case MONTH:
+            result = (style == LONG) ? dfs.getMonths() : dfs.getShortMonths();
+            break;
+        }
+        return result;
+    }
+
+    private static Map<String,Integer> getFieldStringsMap(int field, int style, DateFormatSymbols dfs) {
+        String[] strings = getFieldStrings(field, style, dfs);
+        if (strings == null) {
+            return null;
+        }
+        Map<String,Integer> res = new HashMap<String,Integer>();
+        for (int i = 0; i < strings.length; i++) {
+            if (strings[i].length() != 0) {
+                res.put(strings[i], Integer.valueOf(i));
+            }
+        }
+        return res;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
new file mode 100644
index 0000000..546992b
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
@@ -0,0 +1,62 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import com.ibm.icu.text.CollationKey;
+
+/**
+ * CollationKeyICU is an adapter class which wraps ICU4J CollationKey and
+ * implements java.text.CollationKey APIs.
+ */
+public class CollationKeyICU extends java.text.CollationKey {
+
+    private CollationKey fIcuCollKey;
+
+    private CollationKeyICU(CollationKey icuCollKey) {
+        super(icuCollKey.getSourceString());
+        fIcuCollKey = icuCollKey;
+    }
+
+    public static java.text.CollationKey wrap(CollationKey icuCollKey) {
+        return new CollationKeyICU(icuCollKey);
+    }
+
+    public CollationKey unwrap() {
+        return fIcuCollKey;
+    }
+
+    @Override
+    public int compareTo(java.text.CollationKey target) {
+        if (target instanceof CollationKeyICU) {
+            return fIcuCollKey.compareTo(((CollationKeyICU)target).fIcuCollKey);
+        }
+        return 0;
+    }
+
+    @Override
+    public String getSourceString() {
+        return fIcuCollKey.getSourceString();
+    }
+
+    @Override
+    public byte[] toByteArray() {
+        return fIcuCollKey.toByteArray();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof CollationKeyICU) {
+            return ((CollationKeyICU)obj).fIcuCollKey.equals(fIcuCollKey);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuCollKey.hashCode();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
new file mode 100644
index 0000000..a89c0a6
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
@@ -0,0 +1,158 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.CollationKey;
+
+import com.ibm.icu.text.Collator;
+
+/**
+ * CollatorICU is an adapter class which wraps ICU4J Collator and
+ * implements java.text.Collator APIs.
+ */
+public class CollatorICU extends java.text.Collator {
+
+    private Collator fIcuCollator;
+
+    private CollatorICU(Collator icuCollator) {
+        fIcuCollator = icuCollator;
+    }
+
+    public static java.text.Collator wrap(Collator icuCollator) {
+        return new CollatorICU(icuCollator);
+    }
+
+    public Collator unwrap() {
+        return fIcuCollator;
+    }
+
+    public Object clone() {
+        CollatorICU other = (CollatorICU)super.clone();
+        try {
+            other.fIcuCollator = (Collator)fIcuCollator.clone();
+        } catch (CloneNotSupportedException e) {
+            // ICU Collator clone() may throw CloneNotSupportedException,
+            // but JDK does not.  We use UnsupportedOperationException instead
+            // as workwround.
+            throw new UnsupportedOperationException("clone() is not supported by this ICU Collator.");
+        }
+        return other;
+    }
+
+    public int compare(Object o1, Object o2) {
+        return fIcuCollator.compare(o1, o2);
+    }
+
+    public int compare(String source, String target) {
+        return fIcuCollator.compare(source, target);
+    }
+
+    public boolean equals(Object that) {
+        if (that instanceof CollatorICU) {
+            return ((CollatorICU)that).fIcuCollator.equals(fIcuCollator);
+        }
+        return false;
+    }
+
+    public boolean equals(String source, String target) {
+        return fIcuCollator.equals(source, target);
+    }
+
+    public CollationKey getCollationKey(String source) {
+        com.ibm.icu.text.CollationKey icuCollKey = fIcuCollator.getCollationKey(source);
+        return CollationKeyICU.wrap(icuCollKey);
+    }
+
+    public int getDecomposition() {
+        int mode = java.text.Collator.NO_DECOMPOSITION;
+
+        if (fIcuCollator.getStrength() == Collator.IDENTICAL) {
+            return java.text.Collator.FULL_DECOMPOSITION;
+        }
+        int icuMode = fIcuCollator.getDecomposition();
+        if (icuMode == Collator.CANONICAL_DECOMPOSITION) {
+            mode = java.text.Collator.CANONICAL_DECOMPOSITION;
+        }
+//        else if (icuMode == Collator.NO_DECOMPOSITION) {
+//            mode = java.text.Collator.NO_DECOMPOSITION;
+//        }
+//        else {
+//            throw new IllegalStateException("Unknown decomposition mode is used by the ICU Collator.");
+//        }
+
+        return mode;
+    }
+
+    public int getStrength() {
+        int strength;
+        int icuStrength = fIcuCollator.getStrength();
+        switch (icuStrength) {
+        case Collator.IDENTICAL:
+            strength = java.text.Collator.IDENTICAL;
+            break;
+        case Collator.PRIMARY:
+            strength = java.text.Collator.PRIMARY;
+            break;
+        case Collator.SECONDARY:
+            strength = java.text.Collator.SECONDARY;
+            break;
+        case Collator.TERTIARY:
+            strength = java.text.Collator.TERTIARY;
+            break;
+        case Collator.QUATERNARY:
+            // Note: No quaternary support in Java..
+            // Return tertiary instead for now.
+            strength = java.text.Collator.TERTIARY;
+            break;
+        default:
+            throw new IllegalStateException("Unknown strength is used by the ICU Collator.");
+        }
+        return strength;
+    }
+
+    public int hashCode() {
+        return fIcuCollator.hashCode();
+    }
+
+    public void setDecomposition(int decompositionMode) {
+        switch (decompositionMode) {
+        case java.text.Collator.CANONICAL_DECOMPOSITION:
+            fIcuCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            break;
+        case java.text.Collator.NO_DECOMPOSITION:
+            fIcuCollator.setDecomposition(Collator.NO_DECOMPOSITION);
+            break;
+        case java.text.Collator.FULL_DECOMPOSITION:
+            // Not supported by ICU.
+            // This option is interpreted as IDENTICAL strength.
+            fIcuCollator.setStrength(Collator.IDENTICAL);
+            break;
+        default:
+            throw new IllegalArgumentException("Invalid decomposition mode.");
+        }
+    }
+
+    public void setStrength(int newStrength) {
+        switch (newStrength) {
+        case java.text.Collator.IDENTICAL:
+            fIcuCollator.setStrength(Collator.IDENTICAL);
+            break;
+        case java.text.Collator.PRIMARY:
+            fIcuCollator.setStrength(Collator.PRIMARY);
+            break;
+        case java.text.Collator.SECONDARY:
+            fIcuCollator.setStrength(Collator.SECONDARY);
+            break;
+        case java.text.Collator.TERTIARY:
+            fIcuCollator.setStrength(Collator.TERTIARY);
+            break;
+        default:
+            throw new IllegalArgumentException("Invalid strength.");
+        }
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
new file mode 100644
index 0000000..e4d36bc
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
@@ -0,0 +1,131 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import com.ibm.icu.text.DateFormatSymbols;
+
+/**
+ * DateFormatSymbolsICU is an adapter class which wraps ICU4J DateFormatSymbols and
+ * implements java.text.DateFormatSymbols APIs.
+ */
+public class DateFormatSymbolsICU extends java.text.DateFormatSymbols {
+
+    private static final long serialVersionUID = -7313618555550964943L;
+
+    private DateFormatSymbols fIcuDfs;
+
+    private DateFormatSymbolsICU(DateFormatSymbols icuDfs) {
+        fIcuDfs = icuDfs;
+    }
+
+    public static java.text.DateFormatSymbols wrap(DateFormatSymbols icuDfs) {
+        return new DateFormatSymbolsICU(icuDfs);
+    }
+
+    public DateFormatSymbols unwrap() {
+        return fIcuDfs;
+    }
+
+    @Override
+    public Object clone() {
+        DateFormatSymbolsICU other = (DateFormatSymbolsICU)super.clone();
+        other.fIcuDfs = (DateFormatSymbols)this.fIcuDfs.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DateFormatSymbolsICU) {
+            return ((DateFormatSymbolsICU)obj).fIcuDfs.equals(this.fIcuDfs);
+        }
+        return false;
+    }
+
+    @Override
+    public String[] getAmPmStrings() {
+        return fIcuDfs.getAmPmStrings();
+    }
+
+    @Override
+    public String[] getEras() {
+        return fIcuDfs.getEras();
+    }
+
+    public String getLocalePatternChars() {
+        return fIcuDfs.getLocalPatternChars();
+    }
+
+    @Override
+    public String[] getMonths() {
+        return fIcuDfs.getMonths();
+    }
+
+    @Override
+    public String[] getShortMonths() {
+        return fIcuDfs.getShortMonths();
+    }
+
+    @Override
+    public String[] getShortWeekdays() {
+        return fIcuDfs.getShortWeekdays();
+    }
+
+    @Override
+    public String[] getWeekdays() {
+        return fIcuDfs.getWeekdays();
+    }
+
+    @Override
+    public String[][] getZoneStrings() {
+        return fIcuDfs.getZoneStrings();
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDfs.hashCode();
+    }
+
+    @Override
+    public void setAmPmStrings(String[] newAmpms) {
+        fIcuDfs.setAmPmStrings(newAmpms);
+    }
+
+    @Override
+    public void setEras(String[] newEras) {
+        fIcuDfs.setEras(newEras);
+    }
+
+    @Override
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        fIcuDfs.setLocalPatternChars(newLocalPatternChars);
+    }
+
+    @Override
+    public void setMonths(String[] newMonths) {
+        fIcuDfs.setMonths(newMonths);
+    }
+
+    @Override
+    public void setShortMonths(String[] newShortMonths) {
+        fIcuDfs.setShortMonths(newShortMonths);
+    }
+
+    @Override
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        fIcuDfs.setShortWeekdays(newShortWeekdays);
+    }
+
+    @Override
+    public void setWeekdays(String[] newWeekdays) {
+        fIcuDfs.setWeekdays(newWeekdays);
+    }
+
+    @Override
+    public void setZoneStrings(String[][] newZoneStrings) {
+        fIcuDfs.setZoneStrings(newZoneStrings);
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
new file mode 100644
index 0000000..e5bda5c
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
@@ -0,0 +1,449 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.math.RoundingMode;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.text.DecimalFormatSymbols;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Currency;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+
+/**
+ * DecimalFormatICU is an adapter class which wraps ICU4J DecimalFormat and
+ * implements java.text.DecimalFormat APIs.
+ */
+public class DecimalFormatICU extends java.text.DecimalFormat {
+
+    private static final long serialVersionUID = 6441573352964019403L;
+
+    private DecimalFormat fIcuDecfmt;
+
+    private DecimalFormatICU(DecimalFormat icuDecfmt) {
+        fIcuDecfmt = icuDecfmt;
+    }
+
+    public static java.text.DecimalFormat wrap(DecimalFormat icuDecfmt) {
+        return new DecimalFormatICU(icuDecfmt);
+    }
+
+    public DecimalFormat unwrap() {
+        return fIcuDecfmt;
+    }
+
+    // Methods overriding java.text.DecimalFormat
+    @Override
+    public void applyLocalizedPattern(String pattern) {
+        fIcuDecfmt.applyLocalizedPattern(pattern);
+    }
+
+    @Override
+    public void applyPattern(String pattern) {
+        fIcuDecfmt.applyPattern(pattern);
+    }
+
+    @Override
+    public Object clone() {
+        DecimalFormatICU other = (DecimalFormatICU)super.clone();
+        other.fIcuDecfmt = (DecimalFormat)fIcuDecfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DecimalFormatICU) {
+            return ((DecimalFormatICU)obj).fIcuDecfmt.equals(fIcuDecfmt);
+        }
+        return false;
+    }
+
+    @Override
+    public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) {
+        return fIcuDecfmt.format(number, result, fieldPosition);
+    }
+
+    @Override
+    public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) {
+        return fIcuDecfmt.format(number, result, fieldPosition);
+    }
+
+    @Override
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        AttributedCharacterIterator aci = fIcuDecfmt.formatToCharacterIterator(obj);
+
+        // Create a new AttributedString
+        StringBuilder sb = new StringBuilder(aci.getEndIndex() - aci.getBeginIndex());
+        char c = aci.first();
+        while (true) {
+            sb.append(c);
+            c = aci.next();
+            if (c == CharacterIterator.DONE) {
+                break;
+            }
+        }
+        AttributedString resstr = new AttributedString(sb.toString());
+
+        // Mapping attributes
+        Map<AttributedCharacterIterator.Attribute,Object> attributes = null;
+        int index = aci.getBeginIndex();
+        int residx = 0;
+        while (true) {
+            if (aci.setIndex(index) == CharacterIterator.DONE) {
+                break;
+            }
+            attributes = aci.getAttributes();
+            if (attributes != null) {
+                int end = aci.getRunLimit();
+                Map<AttributedCharacterIterator.Attribute,Object> jdkAttributes = 
+                    new HashMap<AttributedCharacterIterator.Attribute,Object>();
+                Set<AttributedCharacterIterator.Attribute> keys = attributes.keySet();
+                for (AttributedCharacterIterator.Attribute key : keys) {
+                    AttributedCharacterIterator.Attribute jdkKey = mapAttribute(key);
+                    Object jdkVal = attributes.get(key);
+                    if (jdkVal instanceof AttributedCharacterIterator.Attribute) {
+                        jdkVal = mapAttribute((AttributedCharacterIterator.Attribute)jdkVal);
+                    }
+                    jdkAttributes.put(jdkKey, jdkVal);
+                }
+                int resend = residx + (end - index);
+                resstr.addAttributes(jdkAttributes, residx, resend);
+
+                index = end;
+                residx = resend;
+            }
+        }
+        return resstr.getIterator();
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuDecfmt.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        return DecimalFormatSymbolsICU.wrap(fIcuDecfmt.getDecimalFormatSymbols());
+    }
+
+    @Override
+    public int getGroupingSize() {
+        return fIcuDecfmt.getGroupingSize();
+    }
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fIcuDecfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fIcuDecfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fIcuDecfmt.getMinimumFractionDigits();
+    }
+
+    @Override
+    public int getMinimumIntegerDigits() {
+        return fIcuDecfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public int getMultiplier() {
+        return fIcuDecfmt.getMultiplier();
+    }
+
+    @Override
+    public String getNegativePrefix() {
+        return fIcuDecfmt.getNegativePrefix();
+    }
+
+    @Override
+    public String getNegativeSuffix() {
+        return fIcuDecfmt.getNegativeSuffix();
+    }
+
+    @Override
+    public String getPositivePrefix() {
+        return fIcuDecfmt.getPositivePrefix();
+    }
+
+    @Override
+    public String getPositiveSuffix() {
+        return fIcuDecfmt.getPositiveSuffix();
+    }
+
+    @Override
+    public RoundingMode getRoundingMode() {
+        int icuMode = fIcuDecfmt.getRoundingMode();
+        RoundingMode mode = RoundingMode.UP;
+        switch (icuMode) {
+        case com.ibm.icu.math.BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        return mode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDecfmt.hashCode();
+    }
+
+    @Override
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return fIcuDecfmt.isDecimalSeparatorAlwaysShown();
+    }
+
+    @Override
+    public boolean isParseBigDecimal() {
+        return fIcuDecfmt.isParseBigDecimal();
+    }
+
+    @Override
+    public Number parse(String text, ParsePosition pos) {
+        return fIcuDecfmt.parse(text, pos);
+    }
+
+    @Override
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            fIcuDecfmt.setCurrency(null);
+        } else {
+            fIcuDecfmt.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        com.ibm.icu.text.DecimalFormatSymbols icuDecfs = null;
+        if (newSymbols instanceof DecimalFormatSymbolsICU) {
+            icuDecfs = ((DecimalFormatSymbolsICU)newSymbols).unwrap();
+        } else {
+            icuDecfs = fIcuDecfmt.getDecimalFormatSymbols();
+
+            Currency currency = newSymbols.getCurrency();
+            if (currency == null) {
+                icuDecfs.setCurrency(null);
+            } else {
+                icuDecfs.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+            }
+
+            // Copy symbols
+            icuDecfs.setCurrencySymbol(newSymbols.getCurrencySymbol());
+            icuDecfs.setDecimalSeparator(newSymbols.getDecimalSeparator());
+            icuDecfs.setDigit(newSymbols.getDigit());
+            icuDecfs.setExponentSeparator(newSymbols.getExponentSeparator());
+            icuDecfs.setGroupingSeparator(newSymbols.getGroupingSeparator());
+            icuDecfs.setInfinity(newSymbols.getInfinity());
+            icuDecfs.setInternationalCurrencySymbol(newSymbols.getInternationalCurrencySymbol());
+            icuDecfs.setMinusSign(newSymbols.getMinusSign());
+            icuDecfs.setMonetaryDecimalSeparator(newSymbols.getMonetaryDecimalSeparator());
+            icuDecfs.setNaN(newSymbols.getNaN());
+            icuDecfs.setPatternSeparator(newSymbols.getPatternSeparator());
+            icuDecfs.setPercent(newSymbols.getPercent());
+            icuDecfs.setPerMill(newSymbols.getPerMill());
+            icuDecfs.setZeroDigit(newSymbols.getZeroDigit());
+        }
+        fIcuDecfmt.setDecimalFormatSymbols(icuDecfs);
+    }
+
+    @Override
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setDecimalSeparatorAlwaysShown(newValue);
+        }
+    }
+
+    @Override
+    public void setGroupingSize(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setGroupingSize(newValue);
+        }
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMaximumFractionDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMaximumIntegerDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMinimumFractionDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMinimumIntegerDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMultiplier(int newValue) {
+        fIcuDecfmt.setMultiplier(newValue);
+    }
+
+    @Override
+    public void setNegativePrefix(String newValue) {
+        fIcuDecfmt.setNegativePrefix(newValue);
+    }
+
+    @Override
+    public void setNegativeSuffix(String newValue) {
+        fIcuDecfmt.setNegativeSuffix(newValue);
+    }
+
+    @Override
+    public void setParseBigDecimal(boolean newValue) {
+        fIcuDecfmt.setParseBigDecimal(newValue);
+    }
+
+    @Override
+    public void setPositivePrefix(String newValue) {
+        fIcuDecfmt.setPositivePrefix(newValue);
+    }
+
+    @Override
+    public void setPositiveSuffix(String newValue) {
+        fIcuDecfmt.setPositiveSuffix(newValue);
+    }
+
+    @Override
+    public void setRoundingMode(RoundingMode roundingMode) {
+        if (roundingMode.equals(RoundingMode.CEILING)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_CEILING);
+        } else if (roundingMode.equals(RoundingMode.DOWN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_DOWN);
+        } else if (roundingMode.equals(RoundingMode.FLOOR)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_FLOOR);
+        } else if (roundingMode.equals(RoundingMode.HALF_DOWN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN);
+        } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN);
+        } else if (roundingMode.equals(RoundingMode.HALF_UP)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_UP);
+        } else if (roundingMode.equals(RoundingMode.UNNECESSARY)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY);
+        } else if (roundingMode.equals(RoundingMode.UP)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UP);
+        } else {
+            throw new IllegalArgumentException("Invalid rounding mode was specified.");
+        }
+    }
+
+    @Override
+    public String toLocalizedPattern() {
+        return fIcuDecfmt.toLocalizedPattern();
+    }
+
+    @Override
+    public String toPattern() {
+        return fIcuDecfmt.toPattern();
+    }
+
+    // Methods overriding java.text.NumberFormat
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fIcuDecfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fIcuDecfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setGroupingUsed(newValue);
+        }
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fIcuDecfmt.setParseIntegerOnly(value);
+    }
+
+    private static AttributedCharacterIterator.Attribute mapAttribute(AttributedCharacterIterator.Attribute icuAttribute) {
+        AttributedCharacterIterator.Attribute jdkAttribute = icuAttribute;
+
+        if (icuAttribute == NumberFormat.Field.CURRENCY) {
+            jdkAttribute = java.text.NumberFormat.Field.CURRENCY;
+        } else if (icuAttribute == NumberFormat.Field.DECIMAL_SEPARATOR) {
+            jdkAttribute = java.text.NumberFormat.Field.DECIMAL_SEPARATOR;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT_SIGN) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SIGN;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT_SYMBOL) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SYMBOL;
+        } else if (icuAttribute == NumberFormat.Field.FRACTION) {
+            jdkAttribute = java.text.NumberFormat.Field.FRACTION;
+        } else if (icuAttribute == NumberFormat.Field.GROUPING_SEPARATOR) {
+            jdkAttribute = java.text.NumberFormat.Field.GROUPING_SEPARATOR;
+        } else if (icuAttribute == NumberFormat.Field.INTEGER) {
+            jdkAttribute = java.text.NumberFormat.Field.INTEGER;
+        } else if (icuAttribute == NumberFormat.Field.PERCENT) {
+            jdkAttribute = java.text.NumberFormat.Field.PERCENT;
+        } else if (icuAttribute == NumberFormat.Field.PERMILLE) {
+            jdkAttribute = java.text.NumberFormat.Field.PERMILLE;
+        } else if (icuAttribute == NumberFormat.Field.SIGN) {
+            jdkAttribute = java.text.NumberFormat.Field.SIGN;
+        }
+
+        return jdkAttribute;
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
new file mode 100644
index 0000000..a7d0a2e
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
@@ -0,0 +1,212 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.Currency;
+
+import com.ibm.icu.text.DecimalFormatSymbols;
+
+/**
+ * DecimalFormatSymbolsICU is an adapter class which wraps ICU4J DecimalFormatSymbols and
+ * implements java.text.DecimalFormatSymbols APIs.
+ */
+public class DecimalFormatSymbolsICU extends java.text.DecimalFormatSymbols {
+
+    private static final long serialVersionUID = -8226875908479009580L;
+
+    private DecimalFormatSymbols fIcuDecfs;
+
+    private DecimalFormatSymbolsICU(DecimalFormatSymbols icuDecfs) {
+        fIcuDecfs = icuDecfs;
+    }
+
+    public static java.text.DecimalFormatSymbols wrap(DecimalFormatSymbols icuDecfs) {
+        return new DecimalFormatSymbolsICU(icuDecfs);
+    }
+
+    public DecimalFormatSymbols unwrap() {
+        return fIcuDecfs;
+    }
+
+    @Override
+    public Object clone() {
+        DecimalFormatSymbolsICU other = (DecimalFormatSymbolsICU)super.clone();
+        other.fIcuDecfs = (DecimalFormatSymbols)fIcuDecfs.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DecimalFormatSymbolsICU) {
+            return ((DecimalFormatSymbolsICU)obj).fIcuDecfs.equals(fIcuDecfs);
+        }
+        return false;
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuDecfs.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public String getCurrencySymbol() {
+        return fIcuDecfs.getCurrencySymbol();
+    }
+
+    @Override
+    public char getDecimalSeparator() {
+        return fIcuDecfs.getDecimalSeparator();
+    }
+
+    @Override
+    public char getDigit() {
+        return fIcuDecfs.getDigit();
+    }
+
+    @Override
+    public String getExponentSeparator() {
+        return fIcuDecfs.getExponentSeparator();
+    }
+
+    @Override
+    public char getGroupingSeparator() {
+        return fIcuDecfs.getGroupingSeparator();
+    }
+
+    @Override
+    public String getInfinity() {
+        return fIcuDecfs.getInfinity();
+    }
+
+    @Override
+    public String getInternationalCurrencySymbol() {
+        return fIcuDecfs.getInternationalCurrencySymbol();
+    }
+
+    @Override
+    public char getMinusSign() {
+        return fIcuDecfs.getMinusSign();
+    }
+
+    @Override
+    public char getMonetaryDecimalSeparator() {
+        return fIcuDecfs.getMonetaryDecimalSeparator();
+    }
+
+    @Override
+    public String getNaN() {
+        return fIcuDecfs.getNaN();
+    }
+
+    @Override
+    public char getPatternSeparator() {
+        return fIcuDecfs.getPatternSeparator();
+    }
+
+    @Override
+    public char getPercent() {
+        return fIcuDecfs.getPercent();
+    }
+
+    @Override
+    public char getPerMill() {
+        return fIcuDecfs.getPerMill();
+    }
+
+    @Override
+    public char getZeroDigit() {
+        return fIcuDecfs.getZeroDigit();
+    }
+
+    @Override
+    public void setCurrency(Currency currency) {
+        com.ibm.icu.util.Currency icuCurrency = null;
+        if (currency != null) {
+            icuCurrency = com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode());
+        }
+        fIcuDecfs.setCurrency(icuCurrency);
+    }
+
+    @Override
+    public void setCurrencySymbol(String currency) {
+        fIcuDecfs.setCurrencySymbol(currency);
+    }
+
+    @Override
+    public void setDecimalSeparator(char decimalSeparator) {
+        fIcuDecfs.setDecimalSeparator(decimalSeparator);
+    }
+
+    @Override
+    public void setDigit(char digit) {
+        fIcuDecfs.setDigit(digit);
+    }
+
+    @Override
+    public void setExponentSeparator(String exp) {
+        fIcuDecfs.setExponentSeparator(exp);
+    }
+
+    @Override
+    public void setGroupingSeparator(char groupingSeparator) {
+        fIcuDecfs.setGroupingSeparator(groupingSeparator);
+    }
+
+    @Override
+    public void setInfinity(String infinity) {
+        fIcuDecfs.setInfinity(infinity);
+    }
+
+    @Override
+    public void setInternationalCurrencySymbol(String currencyCode) {
+        fIcuDecfs.setInternationalCurrencySymbol(currencyCode);
+    }
+
+    @Override
+    public void setMinusSign(char minusSign) {
+        fIcuDecfs.setMinusSign(minusSign);
+    }
+
+    @Override
+    public void setMonetaryDecimalSeparator(char sep) {
+        fIcuDecfs.setMonetaryDecimalSeparator(sep);
+    }
+
+    @Override
+    public void setNaN(String NaN) {
+        fIcuDecfs.setNaN(NaN);
+    }
+
+    @Override
+    public void setPatternSeparator(char patternSeparator) {
+        fIcuDecfs.setPatternSeparator(patternSeparator);
+    }
+
+    @Override
+    public void setPercent(char percent) {
+        fIcuDecfs.setPercent(percent);
+    }
+
+    @Override
+    public void setPerMill(char perMill) {
+        fIcuDecfs.setPerMill(perMill);
+    }
+
+    @Override
+    public void setZeroDigit(char zeroDigit) {
+        fIcuDecfs.setZeroDigit(zeroDigit);
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDecfs.hashCode();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
new file mode 100644
index 0000000..32b408f
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
@@ -0,0 +1,227 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.math.RoundingMode;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Currency;
+
+import com.ibm.icu.impl.icuadapter.NumberFormatJDK;
+import com.ibm.icu.text.NumberFormat;
+
+/**
+ * NumberFormatICU is an adapter class which wraps ICU4J NumberFormat and
+ * implements java.text.NumberFormat APIs.
+ */
+public class NumberFormatICU extends java.text.NumberFormat {
+
+    private static final long serialVersionUID = 4892903815641574060L;
+
+    private NumberFormat fIcuNfmt;
+
+    private NumberFormatICU(NumberFormat icuNfmt) {
+        fIcuNfmt = icuNfmt;
+    }
+
+    public static java.text.NumberFormat wrap(NumberFormat icuNfmt) {
+        if (icuNfmt instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)icuNfmt).unwrap();
+        }
+        return new NumberFormatICU(icuNfmt);
+    }
+
+    public NumberFormat unwrap() {
+        return fIcuNfmt;
+    }
+
+    @Override
+    public Object clone() {
+        NumberFormatICU other = (NumberFormatICU)super.clone();
+        other.fIcuNfmt = (NumberFormat)fIcuNfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof NumberFormatICU) {
+            return ((NumberFormatICU)obj).fIcuNfmt.equals(fIcuNfmt);
+        }
+        return false;
+    }
+
+    //public String format(double number)
+
+    @Override
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(long number);
+
+    @Override
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuNfmt.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fIcuNfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fIcuNfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fIcuNfmt.getMinimumFractionDigits();
+    }
+
+    @Override
+    public int getMinimumIntegerDigits() {
+        return fIcuNfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public RoundingMode getRoundingMode() {
+        int icuMode = fIcuNfmt.getRoundingMode();
+        RoundingMode mode = RoundingMode.UP;
+        switch (icuMode) {
+        case com.ibm.icu.math.BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        return mode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuNfmt.hashCode();
+    }
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fIcuNfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fIcuNfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public Number parse(String source) throws ParseException {
+        return fIcuNfmt.parse(source);
+    }
+
+    @Override
+    public Number parse(String source, ParsePosition parsePosition) {
+        return fIcuNfmt.parse(source, parsePosition);
+    }
+
+    //public Object parseObject(String source, ParsePosition pos)
+
+    @Override
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            fIcuNfmt.setCurrency(null);
+        } else {
+            fIcuNfmt.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        fIcuNfmt.setGroupingUsed(newValue);
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        fIcuNfmt.setMaximumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        fIcuNfmt.setMaximumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        fIcuNfmt.setMinimumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        fIcuNfmt.setMinimumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fIcuNfmt.setParseIntegerOnly(value);
+    }
+
+    @Override
+    public void setRoundingMode(RoundingMode roundingMode) {
+        if (roundingMode.equals(RoundingMode.CEILING)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_CEILING);
+        } else if (roundingMode.equals(RoundingMode.DOWN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_DOWN);
+        } else if (roundingMode.equals(RoundingMode.FLOOR)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_FLOOR);
+        } else if (roundingMode.equals(RoundingMode.HALF_DOWN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN);
+        } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN);
+        } else if (roundingMode.equals(RoundingMode.HALF_UP)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_UP);
+        } else if (roundingMode.equals(RoundingMode.UNNECESSARY)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY);
+        } else if (roundingMode.equals(RoundingMode.UP)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UP);
+        } else {
+            throw new IllegalArgumentException("Invalid rounding mode was specified.");
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
new file mode 100644
index 0000000..3a5ca02
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
@@ -0,0 +1,373 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.text.DateFormatSymbols;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+import java.text.ParsePosition;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.icuadapter.NumberFormatJDK;
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * SimpleDateFormatICU is an adapter class which wraps ICU4J SimpleDateFormat and
+ * implements java.text.SimpleDateFormat APIs.
+ */
+public class SimpleDateFormatICU extends java.text.SimpleDateFormat {
+
+    private static final long serialVersionUID = -2060890659010258983L;
+
+    private SimpleDateFormat fIcuSdf;
+
+    private SimpleDateFormatICU(SimpleDateFormat icuSdf) {
+        fIcuSdf = icuSdf;
+    }
+
+    public static java.text.SimpleDateFormat wrap(SimpleDateFormat icuSdf) {
+        return new SimpleDateFormatICU(icuSdf);
+    }
+
+    // Methods overriding java.text.SimpleDateFormat
+
+    @Override
+    public void applyLocalizedPattern(String pattern) {
+        fIcuSdf.applyLocalizedPattern(pattern);
+    }
+
+    @Override
+    public void applyPattern(String pattern) {
+        fIcuSdf.applyPattern(pattern);
+    }
+
+    @Override
+    public Object clone() {
+        SimpleDateFormatICU other = (SimpleDateFormatICU)super.clone();
+        other.fIcuSdf = (SimpleDateFormat)this.fIcuSdf.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof SimpleDateFormatICU) {
+            return ((SimpleDateFormatICU)obj).fIcuSdf.equals(this.fIcuSdf);
+        }
+        return false;
+    }
+
+    @Override
+    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuSdf.format(date, toAppendTo, pos);
+    }
+
+    @Override
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        AttributedCharacterIterator aci = fIcuSdf.formatToCharacterIterator(obj);
+
+        // Create a new AttributedString
+        StringBuilder sb = new StringBuilder(aci.getEndIndex() - aci.getBeginIndex());
+        char c = aci.first();
+        while (true) {
+            sb.append(c);
+            c = aci.next();
+            if (c == CharacterIterator.DONE) {
+                break;
+            }
+        }
+        AttributedString resstr = new AttributedString(sb.toString());
+
+        // Mapping attributes
+        Map<AttributedCharacterIterator.Attribute,Object> attributes = null;
+        int index = aci.getBeginIndex();
+        int residx = 0;
+        while (true) {
+            if (aci.setIndex(index) == CharacterIterator.DONE) {
+                break;
+            }
+            attributes = aci.getAttributes();
+            if (attributes != null) {
+                int end = aci.getRunLimit();
+                Map<AttributedCharacterIterator.Attribute,Object> jdkAttributes = 
+                    new HashMap<AttributedCharacterIterator.Attribute,Object>();
+                Set<AttributedCharacterIterator.Attribute> keys = attributes.keySet();
+                for (AttributedCharacterIterator.Attribute key : keys) {
+                    AttributedCharacterIterator.Attribute jdkKey = mapAttribute(key);
+                    Object jdkVal = attributes.get(key);
+                    if (jdkVal instanceof AttributedCharacterIterator.Attribute) {
+                        jdkVal = mapAttribute((AttributedCharacterIterator.Attribute)jdkVal);
+                    }
+                    jdkAttributes.put(jdkKey, jdkVal);
+                }
+                int resend = residx + (end - index);
+                resstr.addAttributes(jdkAttributes, residx, resend);
+
+                index = end;
+                residx = resend;
+            }
+        }
+        return resstr.getIterator();
+    }
+
+    @Override
+    public Date get2DigitYearStart() {
+        return fIcuSdf.get2DigitYearStart();
+    }
+
+    @Override
+    public DateFormatSymbols getDateFormatSymbols() {
+        return DateFormatSymbolsICU.wrap(fIcuSdf.getDateFormatSymbols());
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuSdf.hashCode();
+    }
+
+    @Override
+    public Date parse(String text, ParsePosition pos) {
+        return fIcuSdf.parse(text, pos);
+    }
+
+    @Override
+    public void set2DigitYearStart(Date startDate) {
+        fIcuSdf.set2DigitYearStart(startDate);
+    }
+
+    @Override
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) {
+        com.ibm.icu.text.DateFormatSymbols icuDfs = null;
+        if (newFormatSymbols instanceof DateFormatSymbolsICU) {
+            icuDfs = ((DateFormatSymbolsICU)newFormatSymbols).unwrap();
+        } else if (fIcuSdf.getCalendar() instanceof com.ibm.icu.util.GregorianCalendar) {
+            // Java 6 uses DateFormatSymbols exclusively for Gregorian
+            // calendar.
+
+            String[] newJDK, curICU, newICU;
+            icuDfs = fIcuSdf.getDateFormatSymbols();
+
+            // Eras
+            newJDK = newFormatSymbols.getEras();
+            curICU = icuDfs.getEras();
+            newICU = copySymbols(newJDK, curICU, true);
+
+            // Months
+            newJDK = newFormatSymbols.getMonths();
+            curICU = icuDfs.getMonths();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setMonths(newICU);
+
+            // ShortMonths
+            newJDK = newFormatSymbols.getShortMonths();
+            curICU = icuDfs.getShortMonths();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setShortMonths(newICU);
+
+            // Weekdays
+            newJDK = newFormatSymbols.getWeekdays();
+            curICU = icuDfs.getWeekdays();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setWeekdays(newICU);
+
+            // ShortWeekdays
+            newJDK = newFormatSymbols.getShortWeekdays();
+            curICU = icuDfs.getShortWeekdays();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setShortWeekdays(newICU);
+
+            // AmPm
+            newJDK = newFormatSymbols.getAmPmStrings();
+            curICU = icuDfs.getAmPmStrings();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setAmPmStrings(newICU);
+        } else {
+            // For other calendars, JDK's standard DateFormatSymbols
+            // cannot be used.
+            throw new UnsupportedOperationException("JDK DateFormatSymbols cannot be used for the calendar type.");
+        }
+        fIcuSdf.setDateFormatSymbols(icuDfs);
+    }
+
+    @Override
+    public String toLocalizedPattern() {
+        return fIcuSdf.toLocalizedPattern();
+    }
+
+    @Override
+    public String toPattern() {
+        return fIcuSdf.toLocalizedPattern();
+    }
+
+    // Methods overriding java.text.DateFormat
+
+    @Override
+    public Calendar getCalendar() {
+        return CalendarICU.wrap(fIcuSdf.getCalendar());
+    }
+
+    @Override
+    public NumberFormat getNumberFormat() {
+        com.ibm.icu.text.NumberFormat nfmt = fIcuSdf.getNumberFormat();
+        if (nfmt instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)nfmt).unwrap();
+        }
+        if (nfmt instanceof com.ibm.icu.text.DecimalFormat) {
+            return DecimalFormatICU.wrap((com.ibm.icu.text.DecimalFormat)nfmt);
+        }
+        return NumberFormatICU.wrap(nfmt);
+    }
+
+    @Override
+    public TimeZone getTimeZone() {
+        return getCalendar().getTimeZone();
+    }
+
+    @Override
+    public boolean isLenient() {
+        return fIcuSdf.isLenient();
+    }
+
+    private static final long SAMPLE_TIME = 962409600000L; //2000-07-01T00:00:00Z
+    private static final int JAPANESE_YEAR = 12; // Japanese calendar year @ SAMPLE_TIME
+    private static final int THAI_YEAR = 2543; // Thai Buddhist calendar year @ SAMPLE_TIME
+
+    @Override
+    public void setCalendar(Calendar newCalendar) {
+        com.ibm.icu.util.Calendar icuCal = null;
+        if (newCalendar instanceof CalendarICU) {
+            icuCal = ((CalendarICU)newCalendar).unwrap();
+        } else {
+            // Note:    There is no easy way to implement ICU Calendar with
+            //          JDK Calendar implementation.  For now, this code assumes
+            //          the given calendar is either Gregorian, Buddhist or
+            //          JapaneseImperial.  Once the type is detected, this code
+            //          creates an instance of ICU Calendar with the same type.
+            com.ibm.icu.util.TimeZone icuTz = TimeZoneJDK.wrap(newCalendar.getTimeZone());
+            if (newCalendar instanceof GregorianCalendar) {
+                icuCal = new com.ibm.icu.util.GregorianCalendar(icuTz);
+            } else {
+                newCalendar.setTimeInMillis(SAMPLE_TIME);
+                int year = newCalendar.get(Calendar.YEAR);
+                if (year == JAPANESE_YEAR) {
+                    icuCal = new com.ibm.icu.util.JapaneseCalendar(icuTz);
+                } else if (year == THAI_YEAR) {
+                    icuCal = new com.ibm.icu.util.BuddhistCalendar(icuTz);
+                } else {
+                    // We cannot support the case
+                    throw new UnsupportedOperationException("Unsupported calendar type by ICU Calendar adapter.");
+                }
+            }
+            // Copy the original calendar settings
+            icuCal.setFirstDayOfWeek(newCalendar.getFirstDayOfWeek());
+            icuCal.setLenient(newCalendar.isLenient());
+            icuCal.setMinimalDaysInFirstWeek(newCalendar.getMinimalDaysInFirstWeek());
+        }
+        fIcuSdf.setCalendar(icuCal);
+    }
+
+    @Override
+    public void setLenient(boolean lenient) {
+        fIcuSdf.setLenient(lenient);
+    }
+
+    @Override
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        if (newNumberFormat instanceof DecimalFormatICU) {
+            fIcuSdf.setNumberFormat(((DecimalFormatICU)newNumberFormat).unwrap());
+        } else if (newNumberFormat instanceof NumberFormatICU) {
+            fIcuSdf.setNumberFormat(((NumberFormatICU)newNumberFormat).unwrap());
+        } else {
+            fIcuSdf.setNumberFormat(NumberFormatJDK.wrap(newNumberFormat));
+        }
+    }
+
+    @Override
+    public void setTimeZone(TimeZone zone) {
+        fIcuSdf.setTimeZone(TimeZoneJDK.wrap(zone));
+    }
+
+    private String[] copySymbols(String[] newData, String[] curData, boolean alignEnd) {
+        if (newData.length >= curData.length) {
+            return newData;
+        }
+        int startOffset = alignEnd ? curData.length - newData.length : 0;
+        System.arraycopy(newData, 0, curData, startOffset, newData.length);
+        return curData;
+    }
+
+    private static AttributedCharacterIterator.Attribute mapAttribute(AttributedCharacterIterator.Attribute icuAttribute) {
+        AttributedCharacterIterator.Attribute jdkAttribute = icuAttribute;
+
+        if (icuAttribute == DateFormat.Field.AM_PM) {
+            jdkAttribute = java.text.DateFormat.Field.AM_PM;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_MONTH;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_WEEK) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_WEEK;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_WEEK_IN_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_WEEK_IN_MONTH;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_YEAR;
+        } else if (icuAttribute == DateFormat.Field.ERA) {
+            jdkAttribute = java.text.DateFormat.Field.ERA;
+        } else if (icuAttribute == DateFormat.Field.HOUR_OF_DAY0) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR_OF_DAY0;
+        } else if (icuAttribute == DateFormat.Field.HOUR_OF_DAY1) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR_OF_DAY1;
+        } else if (icuAttribute == DateFormat.Field.HOUR0) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR0;
+        } else if (icuAttribute == DateFormat.Field.HOUR1) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR1;
+        } else if (icuAttribute == DateFormat.Field.MILLISECOND) {
+            jdkAttribute = java.text.DateFormat.Field.MILLISECOND;
+        } else if (icuAttribute == DateFormat.Field.MINUTE) {
+            jdkAttribute = java.text.DateFormat.Field.MINUTE;
+        } else if (icuAttribute == DateFormat.Field.MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.MONTH;
+        } else if (icuAttribute == DateFormat.Field.SECOND) {
+            jdkAttribute = java.text.DateFormat.Field.SECOND;
+        } else if (icuAttribute == DateFormat.Field.TIME_ZONE) {
+            jdkAttribute = java.text.DateFormat.Field.TIME_ZONE;
+        } else if (icuAttribute == DateFormat.Field.WEEK_OF_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.WEEK_OF_MONTH;
+        } else if (icuAttribute == DateFormat.Field.WEEK_OF_YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.WEEK_OF_YEAR;
+        } else if (icuAttribute == DateFormat.Field.YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.YEAR;
+        }
+        // There are other DateFormat.Field constants defined in
+        // ICU4J DateFormat below.
+        //
+        //   DOW_LOCAL
+        //   EXTENDED_YEAR
+        //   JULIAN_DAY
+        //   MILLISECONDS_IN_DAY
+        //   QUARTER
+        //   YEAR_WOY
+        //
+        // However, the corresponding pattern characters are not used by
+        // the default factory method - getXXXInstance.  So these constants
+        // are only used when user intentionally set a pattern including
+        // these ICU4J specific pattern letters.  Even it happens,
+        // ICU4J's DateFormat.Field extends java.text.Format.Field, so
+        // it does not break the contract of formatToCharacterIterator.
+
+        return jdkAttribute;
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
new file mode 100644
index 0000000..014c959
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
@@ -0,0 +1,105 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * TimeZoneICU is an adapter class which wraps ICU4J TimeZone and
+ * implements java.util.TimeZone APIs.
+ */
+public class TimeZoneICU extends java.util.TimeZone {
+
+    private static final long serialVersionUID = 6019030618408620277L;
+
+    private TimeZone fIcuTz;
+
+    private TimeZoneICU(TimeZone icuTz) {
+        fIcuTz = icuTz;
+    }
+
+    public static java.util.TimeZone wrap(TimeZone icuTz) {
+        if (icuTz instanceof TimeZoneJDK) {
+            return ((TimeZoneJDK)icuTz).unwrap();
+        }
+        return new TimeZoneICU(icuTz);
+    }
+
+    public TimeZone unwrap() {
+        return fIcuTz;
+    }
+
+    @Override
+    public Object clone() {
+        TimeZoneICU other = (TimeZoneICU)super.clone();
+        other.fIcuTz = (TimeZone)fIcuTz.clone();
+        return other;
+    }
+
+    //public String getDisplayName()
+    //public String getDisplayName(boolean daylight, int style)
+    //public String getDisplayName(Locale locale)
+
+    @Override
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return fIcuTz.getDisplayName(daylight, style, locale);
+    }
+
+    @Override
+    public int getDSTSavings() {
+        return fIcuTz.getDSTSavings();
+    }
+
+    @Override
+    public String getID() {
+        return fIcuTz.getID();
+    }
+
+    @Override
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return fIcuTz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    @Override
+    public int getOffset(long date) {
+        return fIcuTz.getOffset(date);
+    }
+
+    @Override
+    public int getRawOffset() {
+        return fIcuTz.getRawOffset();
+    }
+
+    @Override
+    public boolean hasSameRules(java.util.TimeZone other) {
+        return other.hasSameRules(TimeZoneICU.wrap(fIcuTz));
+    }
+
+    @Override
+    public boolean inDaylightTime(Date date) {
+        return fIcuTz.inDaylightTime(date);
+    }
+
+    @Override
+    public void setID(String ID) {
+        fIcuTz.setID(ID);
+    }
+
+    @Override
+    public void setRawOffset(int offsetMillis) {
+        fIcuTz.setRawOffset(offsetMillis);
+    }
+
+    @Override
+    public boolean useDaylightTime() {
+        return fIcuTz.useDaylightTime();
+    }
+}
diff --git a/preprocessor.txt b/preprocessor.txt
new file mode 100644
index 0000000..909c8b6
--- /dev/null
+++ b/preprocessor.txt
@@ -0,0 +1,81 @@
+# Copyright (C) 2007-2008, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+## core sources
+src/com/ibm/icu/impl/ByteBuffer.java
+src/com/ibm/icu/impl/DateNumberFormat.java
+src/com/ibm/icu/impl/duration/BasicDurationFormat.java
+src/com/ibm/icu/impl/ICUResourceBundleImpl.java
+src/com/ibm/icu/impl/JavaTimeZone.java
+src/com/ibm/icu/impl/PatternTokenizer.java
+src/com/ibm/icu/impl/Utility.java
+src/com/ibm/icu/lang/UCharacter.java
+src/com/ibm/icu/math/BigDecimal.java
+src/com/ibm/icu/text/Bidi.java
+src/com/ibm/icu/text/ChineseDateFormat.java
+src/com/ibm/icu/text/DateFormat.java
+src/com/ibm/icu/text/DateTimePatternGenerator.java
+src/com/ibm/icu/text/DecimalFormat.java
+src/com/ibm/icu/text/DigitList.java
+src/com/ibm/icu/text/IndexCharacters.java
+src/com/ibm/icu/text/MessageFormat.java
+src/com/ibm/icu/text/NumberFormat.java
+src/com/ibm/icu/text/RuleBasedCollator.java
+src/com/ibm/icu/text/RuleBasedNumberFormat.java
+src/com/ibm/icu/text/SimpleDateFormat.java
+src/com/ibm/icu/text/UnicodeSet.java
+src/com/ibm/icu/text/UTF16.java
+src/com/ibm/icu/util/ByteArrayWrapper.java
+src/com/ibm/icu/util/UResourceBundle.java
+
+## test sources
+src/com/ibm/icu/dev/test/bidi/TestAll.java
+src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
+src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
+src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
+src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
+src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
+src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
+src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
+src/com/ibm/icu/dev/test/collator/RandomCollator.java
+src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
+src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
+src/com/ibm/icu/dev/test/format/DateFormatTest.java
+src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
+src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
+src/com/ibm/icu/dev/test/format/NumberFormatTest.java
+src/com/ibm/icu/dev/test/format/NumberRegression.java
+src/com/ibm/icu/dev/test/format/RbnfTest.java
+src/com/ibm/icu/dev/test/format/TestMessageFormat.java
+src/com/ibm/icu/dev/test/ResourceModule.java
+src/com/ibm/icu/dev/test/serializable/FormatTests.java
+src/com/ibm/icu/dev/test/serializable/SerializableTest.java
+src/com/ibm/icu/dev/test/TestAll.java
+src/com/ibm/icu/dev/test/TestDataModule.java
+src/com/ibm/icu/dev/test/TestFmwk.java
+src/com/ibm/icu/dev/test/TestUtil.java
+src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
+src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
+src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
+src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
+src/com/ibm/icu/dev/test/util/BagFormatter.java
+src/com/ibm/icu/dev/test/util/BNF.java
+src/com/ibm/icu/dev/test/util/CollectionUtilities.java
+src/com/ibm/icu/dev/test/util/DataInputCompressor.java
+src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
+src/com/ibm/icu/dev/test/util/FileUtilities.java
+src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
+src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
+src/com/ibm/icu/dev/test/util/TestBagFormatter.java
+src/com/ibm/icu/dev/test/util/TestBNF.java
+src/com/ibm/icu/dev/test/util/TestUtilities.java
+src/com/ibm/icu/dev/test/util/Tokenizer.java
+src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
+src/com/ibm/icu/dev/test/util/UnicodeMap.java
+src/com/ibm/icu/dev/test/util/UnicodeProperty.java
+src/com/ibm/icu/dev/test/util/UtilityTest.java
+src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
+
+## tool sources
+src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
\ No newline at end of file
diff --git a/readme.html b/readme.html
new file mode 100644
index 0000000..acbe599
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,1023 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta http-equiv="Content-Style-Type" content="text/css2">
+  <title>ReadMe for ICU4J</title>
+  <meta name="COPYRIGHT" content="Copyright 2000-2008, International Business Machines Corporation and others. All Rights Reserved.">
+  <style type="text/css">
+h3.doc { background: #CCCCFF }
+  </style>
+</head>
+<body style="background-color: rgb(255, 255, 255);" lang="EN-US"
+ link="#0000ff" vlink="#800080">
+<h2>International Components for Unicode for Java (ICU4J)</h2>
+<h3>Read Me for ICU4J 4.0</h3>
+<hr size="2" width="100%">
+<p><b>Release Date</b><br>
+July 2, 2008<br>
+</p>
+<!-- <p><b>Note:</b> This is major release of ICU4J.  It contains bug fixes
+and adds implementations of inherited API and introduces new API
+or functionality. -->
+
+<p><b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds
+implementations of inherited API and introduces new API or functionality. 
+</p>
+
+<p>For the most recent release, see the <a
+ href="http://www.icu-project.org/download/"> ICU4J
+download site</a>. </p>
+<h3 class="doc">Contents</h3>
+<ul type="disc">
+  <li><a href="#introduction">Introduction to ICU4J</a></li>
+  <li><a href="#news">What Is New In This Release?</a></li>
+  <li><a href="#license">License Information</a></li>
+  <li><a href="#PlatformDependencies">Platform Dependencies</a></li>
+  <li><a href="#download">How to Download ICU4J</a></li>
+  <li><a href="#WhatContain">The Structure and Contents of ICU4J</a></li>
+  <li><a href="#API">Where to Get Documentation</a></li>
+  <li><a href="#HowToInstallJavac">How to Install and Build</a></li>
+  <li><a href="#HowToModularize">How to modularize ICU4J</a></li>
+  <li><a href="#tryingout">Trying Out ICU4J</a></li>
+  <li><a href="#resources">ICU4J Resource Information</a></li>
+  <li><a href="#timezone">About ICU4J Time Zone</a></li>
+  <li><a href="#WhereToFindMore">Where to Find More Information</a></li>
+  <li><a href="#SubmittingComments">Submitting Comments, Requesting
+Features and Reporting Bugs</a></li>
+</ul>
+<h3 class="doc"><a name="introduction"></a>Introduction to ICU4J</h3>
+<p>The International Components for Unicode (ICU) library provides
+robust and
+full-featured Unicode services on a wide variety of platforms. ICU
+supports the
+most current version of the Unicode standard, including support for
+supplementary characters (needed for GB 18030 repertoire support).</p>
+<p>Java provides a strong foundation for global programs, and IBM and
+the
+ICU team played a key role in providing globalization technology to
+Java. But because of its long release schedule, Java cannot always keep
+up with evolving standards. The ICU team continues to extend Java's
+Unicode and internationalization support, focusing on improving
+performance,
+keeping current with the Unicode standard, and providing richer APIs,
+while
+remaining as compatible as possible with the original Java text and
+internationalization API design.</p>
+<p>ICU4J is an add-on to the regular JRE that provides:
+</p>
+<ul>
+  <li><a
+ href="http://www.icu-project.org/userguide/Collate_Intro.html"><b>Collation</b></a>
+&#8211; rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br>
+&nbsp;&nbsp;&nbsp;&nbsp;For fast multilingual string comparison; faster
+and more complete than
+the J2SE implementation</li>
+  <li><a href="http://www.icu-project.org/userguide/strings.html"><b>Supplementary
+Characters</b></a> &#8211; String manipulation and character properties<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for proper GB 18030 and JIS X 0213
+repertoire support</li>
+  <li><a href="http://www.icu-project.org/userguide/charsetDetection.html"><b>Charset
+Detection</b></a> &#8211; Recognition of various single and multibyte charsets<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Useful for recognizing untagged text data</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/unicodeSet.html"><b>UnicodeSet</b></a>
+&#8211; standard set operations optimized for sets of Unicode characters<br>
+&nbsp;&nbsp;&nbsp;&nbsp;UnicodeSets can be built from string patterns
+using any Unicode properties.</li>
+  <li><a href="http://www.icu-project.org/userguide/Transform.html"><b>Transforms</b></a>
+&#8211; a flexible mechanism for Unicode text conversions<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Including Full/Halfwidth conversions,
+Normalization, Case conversions, Hex
+conversions, and transliterations between scripts (50+ pairs)</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/normalization.html"><b>Unicode
+Normalization</b></a> &#8211; NFC, NFD, NFKD, NFKC<br>
+&nbsp;&nbsp;&nbsp;&nbsp;For canonical text representations, needed for
+XML and the net</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/dateCalendar.html"><b>International
+Calendars</b></a> &#8211; Arabic, Buddhist, Chinese, Hebrew, Japanese, Ethiopic, Islamic, Coptic and other calendars<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for correct presentation of dates in
+certain countries</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/formatNumbers.html"><b>Number
+Format
+Enhancements</b></a> &#8211; Scientific Notation, Spelled-out, etc.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Enhancements to the normal Java number
+formatting. The spell-out format is
+used for checks and similar documents</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/boundaryAnalysis.html"><b>Enhanced
+Word-Break Detection</b></a> &#8211; Rule-based, supports Thai<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for correct support of Thai</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/compression.html"><b>Unicode
+Text
+Compression</b></a> &#8211; Standard compression of Unicode text<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Suitable for large numbers of small fields,
+where LZW and similar schemes
+do not apply</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/conversion.html"><b>Charset Conversion</b></a> &#8211; Conversion to and from different charsets.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Plugs into Java CharsetProvider Service Provider Interface (SPI)</li>
+
+</ul>
+<blockquote>
+  <p><b>Note:</b> We continue to provide assistance to Sun, and in some
+cases, ICU4J support has been rolled into a later release of Java. For
+example, the Thai word-break is now in Java 1.4. However, the most
+current and complete version is always found in ICU4J.</p>
+</blockquote>
+
+<h3 class="doc"><a name="news"></a>What Is New In This Release?</h3>
+
+<p><b>Status of ICU4J charset converter</b></p>
+<p>The ICU4J implementation of java.nio.charset.Charset was included in ICU4J 3.8 as
+a Technology Preview.  In this release, all functionality from the java.nio.Charset
+interfaces is operational and promoted to the draft status.
+</p>
+
+<p><b>ICU4J Locale Service Provider</b></p>
+<p>The ICU4J implementation of Java SE 6 locale sensitive service provider
+insterfaces (java.util.spi.LocaleServiceProvider subclasses) is newly added
+in this release as a Technology Preview.  Please refer to the
+<a href="localespi/readme.html">Read Me for ICU4J Locale Service Provider</a>
+for more details.
+</p>
+
+<p><b>New features</b></p>
+<p>
+See the <a href="http://www.icu-project.org/download/">ICU 4.0 download page</a> about other
+new features in this release.
+</p>
+<h3 class="doc"><a name="license"></a>License Information</h3>
+<p>
+The ICU projects (ICU4C and ICU4J) use the X license. The X
+license is <b>suitable for commercial use</b> and is a recommended free software license
+that is compatible with the GNU GPL license. This became
+effective with release 1.8.1 of ICU4C and release 1.3.1 of ICU4J in
+mid-2001. All new ICU releases will adopt the X license; previous ICU
+releases continue to utilize the IPL (IBM Public License). Users
+of previous releases of ICU who want to adopt new ICU releases will
+need to accept the terms and conditions of the X license.
+</p>
+<p>
+The main effect of the change is to provide GPL compatibility.
+The X license is listed as GPL compatible, see the GNU page at 
+<a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">
+http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses</a>.
+This means that GPL projects can now use ICU code, it does <b>not</b>
+mean that projects using ICU become subject to GPL.
+</p>
+<p>
+ The IBM version contains the essential text of the license, omitting the
+X-specific trademarks and copyright notices. The full copy of <a
+ href="license.html">ICU's license</a> is included in the download
+package.
+</p>
+<h3 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h3>
+<p> By default ICU4J depends on functionality available
+in J2SE 1.4 or later releases.  Some new ICU4J features support types
+introduced in J2SE 5, you can still use the same ICU4J binaries on JRE
+1.4.  We provide the ability to build a variant of ICU4J that will run
+on JRE 1.3, but not all build targets work on that platform. Currently
+1.1.x and 1.2.x JREs are unsupported and untested, and you use the
+components on these JREs at your own risk.
+<p>The table below shows operating systems and JRE/JDK versions currently
+used by the ICU development team.
+</p>
+<table bgcolor="#CCCCFF">
+<tr>
+  <th rowspan="2" bgcolor="#FFFFFF">Operating System</th>
+  <th colspan="3" bgcolor="#FFFFFF">Sun Java SE</th>
+  <th colspan="3" bgcolor="#FFFFFF">IBM Java SE</th>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">1.6.0</th>
+  <th bgcolor="#FFFFFF">1.5.0</th>
+  <th bgcolor="#FFFFFF">1.4.2</th>
+  <th bgcolor="#FFFFFF">1.6.0</th>
+  <th bgcolor="#FFFFFF">1.5.0</th>
+  <th bgcolor="#FFFFFF">1.4.2</th>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 5.2</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 5.3</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 6.1</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">HP-UX 11 (PA-RISC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">HP-UX 11 (IA64)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Redhat Enterprise Linux 4 (x86)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Redhat Enterprise Linux 5 (x86)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Solaris 9 (SPARC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Solaris 10 (SPARC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows XP</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows Vista</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows 2003 Server</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+</table>
+
+<h3 class="doc"><a name="download"></a>How to Download ICU4J</h3>
+<p>There are two ways to download the ICU4J releases.
+</p>
+<ul type="disc">
+  <li><b>Official Release:</b><br>
+If you want to use ICU4J (as opposed to developing it), your best bet
+is to download an official, packaged version of the ICU4J library files.
+These versions are tested more thoroughly than day-to-day development
+builds, and they are packaged in jar files for convenient download.
+These packaged files can be found at the
+<a href="http://www.icu-project.org/download/">ICU Downloads page</a>.
+</li></ul>
+<ul type="disc">
+  <li><b>Subversion Source Repository:</b><br>
+If you are interested in developing features, patches, or bug fixes for
+ICU4J, you should probably be working with the latest version of the
+ICU4J source code. You will need to check the code out of our Subversion
+repository to ensure that you have the most recent version of all of
+the files. There are several ways to do this. Please follow the
+directions that are contained on the <a
+ href="http://www.icu-project.org/repository/">Source
+ Repository page</a> for details.
+  </li>
+</ul>
+<p>For more details on how to download ICU4J directly from the web
+site, please see the ICU downloads page at <a
+ href="http://www.icu-project.org/download/">http://www.icu-project.org/download/</a>
+</p>
+<h3 class="doc"><a name="WhatContain"></a>The Structure and Contents of
+ICU4J</h3>
+<p>Below, <b>$icu4j_root</b> is the placement of the icu directory in your
+file system, like
+"drive:\...\icu4j" in your environment. "drive:\..." stands for any
+drive and any directory on that drive that you chose to install icu4j
+into. </p>
+<p><b>Information and build files:</b></p>
+<table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">
+  <tbody>
+    <tr>
+      <td align="right" bgcolor="#ffffff" valign="baseline"><b>readme.html</b><br>
+(this file)</td>
+      <td bgcolor="#ffffff" valign="baseline">A description of ICU4J
+(International Components for Unicode for Java)</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">license.html</th>
+      <td bgcolor="#ffffff" valign="baseline">The X license, used by
+ICU4J</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">build.xml</th>
+      <td bgcolor="#ffffff" valign="baseline">Ant build file. See <a
+ href="#HowToInstallJavac">How to Install and Build</a> for more
+information</td>
+    </tr>
+  </tbody>
+</table>
+<p><b>The source directories mirror the package structure of the code.</b><br>
+<font color="red">Core</font> packages become part of the ICU4J jar
+file.<br>
+<font color="red">Charset</font> packages become part of the ICU4J charset jar
+file.<br>
+<font color="red">LocaleSPI</font> packages become part of the ICU4J Locale
+service provider jar file.<br>
+<font color="red">RichText</font> classes are Core and API, but can be
+removed from icu4j.jar, and can be built into their own jar.<br>
+<font color="red">API</font> packages contain classes with supported
+API.<br>
+</p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/charset<br>
+      <font color="red">Charset, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Packages that provide Charset conversion
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/dev<br>
+      <font color="red">Non-Core, Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Packages used for
+internal development:
+      <ul>
+        <li>Data: data used by tests and in building ICU</li>
+        <li>Demos: Calendar, Holiday, Break Iterator, Rule-based Number
+Format, Transformations<br>
+(See <a href="#tryingout">below</a> for more information about the
+demos.)</li>
+        <li>Tests: API and coverage tests of all functionality.<br>
+For information about running the tests, see
+$icu4j_root/src/com/ibm/icu/dev/test/TestAll.java.</li>
+        <li>Tools: tools used to build data tables, etc.</li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/impl<br>
+      <font color="red">Core, Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">These are utility classes
+used from different ICU4J core packages.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/lang<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Character properties
+package.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/math<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional math classes.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/text<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional text classes.
+These add to, and in some cases replace, related core Java classes:
+      <ul>
+        <li>Arabic shaping </li>
+        <li>Break iteration </li>
+        <li>Date formatting </li>
+        <li>Number formatting </li>
+        <li>Transliteration </li>
+        <li>Normalization </li>
+        <li>String manipulation </li>
+        <li>Collation </li>
+        <li>String search </li>
+        <li>Unicode compression </li>
+        <li>Unicode sets </li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/util<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional utility
+classes:
+      <ul>
+        <li>Calendars - Gregorian, Buddhist, Coptic, Ethiopic, Hebrew, Islamic, Japanese, Chinese and others</li>
+        <li>Holiday</li>
+        <li>TimeZone</li>
+        <li>VersionInfo</li>
+        <li>Iteration</li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/richtext<br>
+      <font color="red">RichText,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Styled text editing
+package. This includes demos, tests, and GUIs for editing and
+displaying styled text. The richtext package provides a scrollable
+display, typing, arrow-key support, tabs, alignment and justification,
+word- and sentence-selection (by double-clicking and triple-clicking,
+respectively), text styles, clipboard operations (cut, copy and paste)
+and a log of changes for undo-redo. Richtext uses Java's TextLayout and
+complex text support (provided to Sun by the ICU4J team).</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/impl<br>
+      <font color="red">LocaleSPI,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">
+        Packages for ICU4J Locale Service Provider runtime
+        code implementing the Java SE 6 locale sensitive service provider interfaces.
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/dev<br>
+      <font color="red">LocaleSPI,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">
+        Packages used for internal development for ICU4J Locale Service Provider, including
+        test cases. 
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p><b>Building ICU4J creates and populates the following directories:</b></p>
+<table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/classes</th>
+      <td bgcolor="#ffffff" valign="baseline">contains all class files</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/doc</th>
+      <td bgcolor="#ffffff" valign="baseline">contains JavaDoc for all
+packages</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<p><b>ICU4J data is stored in the following locations:</b></p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.impl.data</code></th>
+      <td bgcolor="#ffffff" valign="baseline">Holds data used by the
+ICU4J core and charset packages (<code>com.ibm.icu.lang</code>, <code>com.ibm.icu.text</code>,
+      <code>com.ibm.icu.util</code>, <code>com.ibm.icu.math</code>,
+      <code>com.ibm.icu.text</code> and <code>com.ibm.icu.charset</code>). In particular, all resource
+information is stored here.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.dev.data</code></th>
+      <td bgcolor="#ffffff" valign="baseline">Holds data that is not
+part of ICU4J core, but rather part of a test, sample, or demo.</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3 class="doc"><a name="API"></a>Where to get Documentation</h3>
+<p>The <a href="http://www.icu-project.org/userguide/">ICU user's
+guide</a> contains lots of general information about ICU, in its C,
+C++, and Java incarnations.</p>
+<p>The complete API documentation for ICU4J (javadoc) is available on
+the ICU4J web site, and can be built from the sources:
+</p>
+<ul>
+  <li><a href="http://www.icu-project.org/apiref/icu4j/">Index
+to all ICU4J API</a></li>
+  <li><a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/CharsetDetector.html">Charset Detector</a> &#8211; Detection of charset from a byte stream</li>
+  <li>International Calendars &#8211; 
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/ChineseCalendar.html">Chinese</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/CopticCalendar.html">Coptic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/EthiopicCalendar.html">Ethiopic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/GregorianCalendar.html">Gregorian</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Normalizer.html">Unicode
+Normalization</a> &#8211; Canonical text representation for W3C.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/NumberFormat.html">Number
+Format Enhancements</a> &#8211; Scientific Notation, Spelled out.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html">Enhanced
+word-break detection</a> &#8211; Rule-based, supports Thai</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Transliterator.html">Transliteration</a>
+&#8211; A general framework for converting text from one format to another,
+e.g. Cyrillic to Latin, or Hex to Unicode. </li>
+  <li>Unicode Text <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeCompressor.html">Compression</a>
+&amp; <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a>
+&#8211; 2:1 compression on English Unicode text.</li>
+  <li>Collation - <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/RuleBasedCollator.html">Rule-based
+sorting</a>, <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/StringSearch.html">Efficient
+multi-lingual searching</a> </li>
+</ul>
+<h3 class="doc"><a name="HowToInstallJavac"></a>How to Install and Build</h3>
+<p>To install ICU4J, simply place the prebuilt jar file <strong>icu4j.jar</strong>
+on your Java CLASSPATH. If you need Charset API support please place
+<strong>icu4j-charsets.jar</strong> on your class path. No other files are needed.</p>
+<p>To build ICU4J, you will need a J2SE SDK and the Ant build system.
+We strongly recommend using the Ant build system to build ICU4J.
+It's recommended to install both the J2SE SDK and Ant somewhere <em>outside</em>
+the ICU4J directory. For example, on Linux you might install these in
+/usr/local.</p>
+<ul>
+  <li>Install J2SE SDK 5.0.  (You can use any version of J2SE SDK 1.4 or newer,
+  but for J2SE SDK 5.0 is required to enable the all available ICU4J features.)</li>
+  <li>Install the <a href="http://ant.apache.org/"><strong>Ant</strong></a>
+build system. Ant is a portable, Java-based build system similar to
+make. ICU4J uses Ant because it introduces no other dependencies, it's
+portable, and it's easier to manage than a collection of makefiles. We
+currently build ICU4J using a single makefile on all platforms Ant.
+The build system requires Ant 1.6 or later.
+    <p>Installing Ant is straightforward. Download it (see <a
+ href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>),
+extract it onto your system, set some environment variables, and add
+its bin directory to your path. For example: </p>
+    <pre>
+        set JAVA_HOME=C:\jdk1.5.0
+        set ANT_HOME=C:\ant
+        set PATH=%PATH%;%ANT_HOME%\bin</pre>
+    <p>See the current Ant documentation for details.</p>
+  </li>
+</ul>
+<p>Once the J2SE SDK and Ant are installed, building is just a matter of
+typing <strong>ant</strong> in the ICU4J root directory. This causes
+the Ant build system to perform a build as specified by the file
+<strong>build.xml</strong>, located in the ICU4J root directory. You
+can give Ant options like -verbose, and you can specify targets. Ant
+will only build what's been changed and will resolve dependencies
+properly. For example:</p>
+<blockquote>
+<pre>C:\icu4j&gt;ant
+Buildfile: build.xml
+
+checkAntVersion:
+
+warnAntVersion:
+
+initBase:
+    [mkdir] Created dir: C:\icu4j\classes
+     [echo] java home: C:\jdk1.5.0
+     [echo] java version: 1.5.0
+     [echo] ant java version: 1.5
+     [echo] Apache Ant version 1.7.0 compiled on December 13 2006
+     [echo] ICU4JDEV with Windows XP 5.1 build 2600 Service Pack 2 on x86
+     [echo] clover initstring = '${clover.initstring}'
+     [echo] target runtime environment: J2SE15
+     [echo] Initialized at 2007-08-30 at 04:14:09 EDT
+
+buildMangle:
+    [javac] Compiling 1 source file to C:\icu4j\classes
+
+initSrc:
+
+displayBuildEnvWarning:
+
+doMangle:
+     [echo] Running source code preprocessor for [J2SE15]
+
+init:
+
+coreData:
+     [copy] Copying 1 file to C:\icu4j\classes\com\ibm\icu\impl\data
+
+icudata:
+    [unjar] Expanding: C:\icu4j\src\com\ibm\icu\impl\data\icudata.jar into C:\ic
+u4j\classes
+     [copy] Copying 1 file to C:\icu4j\classes\META-INF
+
+durationdata:
+     [copy] Copying 16 files to C:\icu4j\classes\com\ibm\icu\impl\duration\impl\
+data
+
+core:
+    [javac] Compiling 317 source files to C:\icu4j\classes
+    [javac] Note: * uses or overrides a deprecated API.
+    [javac] Note: Recompile with -Xlint:deprecation for details.
+
+BUILD SUCCESSFUL
+Total time: 10 seconds</pre>
+</blockquote>
+<I>Note: The above output is an example. The numbers are likely to be different with the current version ICU4J.</I>
+<p>The following are some targets that you can provide to <b>ant</b>.
+For more targets run <code>ant -projecthelp</code> or see the build.xml file.</p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">all</th>
+      <td bgcolor="#ffffff" valign="baseline">Build all targets.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">core</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the main class
+files in the subdirectory <strong>classes</strong>. If no target is
+specified, core is assumed.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">tests</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the test class
+files.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">demos</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the demos.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">tools</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the tools.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">docs</th>
+      <td bgcolor="#ffffff" valign="baseline">Run javadoc over the main
+class files, generating an HTML documentation tree in the subdirectory <strong>doc</strong>.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jar</th>
+      <td bgcolor="#ffffff" valign="baseline">Create a jar archive <strong>icu4j.jar</strong>
+in the root ICU4J directory containing the main class files.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jarSrc</th>
+      <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>
+target, but containing only the source files. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jarDocs</th>
+      <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>
+target, but containing only the docs. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richedit</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the richedit core
+class files and tests. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richeditJar</th>
+      <td bgcolor="#ffffff" valign="baseline">Create the richedit jar
+file (which contains only the richedit core class files). The file <strong>richedit.jar</strong>
+will be created in the <strong>./richedit</strong> subdirectory. Any
+existing file of that name will be overwritten.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richeditZip</th>
+      <td bgcolor="#ffffff" valign="baseline">Create a zip archive of
+the richedit docs and jar file for distribution. The zip file <strong>richedit.zip</strong>
+will be created in the <strong>./richedit</strong> subdirectory. Any
+existing file of that name will be overwritten.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">clean</th>
+      <td bgcolor="#ffffff" valign="baseline">Remove all built targets,
+leaving the source.</td>
+    </tr>
+  </tbody>
+</table>
+<p>For more information, read the Ant documentation and the <strong>build.xml</strong>
+file.</p>
+<p>After doing a build it is a good idea to run all the icu4j tests by
+typing<br>
+<tt>"ant check"</tt> or
+"java -classpath classes com.ibm.icu.dev.test.TestAll -nothrow".</p>
+
+<p><b>Eclipse users:</b> See the ICU4J site for information on<a
+ href="http://www.icu-project.org/docs/eclipse_howto/eclipse_howto.html">
+how to configure Eclipse</a> to build and develop ICU4J on Eclipse IDE.</p>
+
+<p><b>Note: </b>To install/build ICU4J Locale Service Provider, please refer
+<a href="localespi/readme.html">Read Me for ICU4J Locale Service Provider</a>.</p>
+
+<h3 class="doc"><a name="HowToModularize"></a>How to modularize ICU4J</h3>
+<p>Some clients may not wish to ship all of ICU4J with their
+application, since the application might only use a small part of ICU4J.
+ICU4J release 2.6 and later provide build options to build individual
+ICU4J 'modules' for a more compact distribution.  For more details, please
+refer to the section <em>Modularization of ICU4J</em> in the ICU user's
+guide article <a href="http://www.icu-project.org/userguide/packaging.html">Packaging ICU</a>.
+
+<h3 class="doc"><a name="tryingout"></a>Trying Out ICU4J</h3>
+<p><strong>Note:</strong> the demos provided with ICU4J are for the
+most part undocumented. This list can show you where to look, but
+you'll
+have to experiment a bit. The demos (with the
+exception of richedit) are <strong>unsupported</strong> and may change
+or disappear without notice.</p>
+<p>The icu4j.jar file contains only the core ICU4J classes, not the
+demo classes, so unless you build ICU4J there is little to try out.
+</p>
+<h4>Charset</h4>
+To try out the <strong>Charset</strong> package, build <strong>icu4j.jar</strong> and <strong>icu4j-charsets.jar</strong> using 'jar' target.
+You can use the charsets by placing these files on your classpath.
+<blockquote><tt>java -cp $icu4j_root/icu4j.jar:$icu4j_root/icu4j-charsets.jar &lt;your program&gt;</tt></blockquote>
+<h4>Rich Edit</h4>
+To try out the <strong>richedit</strong> package, first build the
+richeditJar target.
+This is a 'runnable' jar file. To run the richedit demo, type:
+<blockquote><tt>java -jar $icu4j_root/richedit/richedit.jar</tt></blockquote>
+This will present an empty edit pane with an awt interface.
+<p>With a fuller command line you can try out other options, for
+example:</p>
+<blockquote><tt>java -classpath $icu4j_root/richedit/richedit.jar
+com.ibm.richtext.demo.EditDemo [-swing][file]</tt></blockquote>
+<p>This will use an awt GUI, or a swing GUI if
+<tt>-swing</tt> is passed on the command line. It will open a text
+file if one is provided, otherwise it will open a blank page. Click
+to type.</p>
+<p>
+You can add tabs to the tab ruler by clicking in the ruler while
+holding down the control key.
+Clicking on an existing tab changes between left, right, center, and
+decimal tabs. Dragging
+a tab moves it, dragging it off the ruler removes it.</p>
+<p>
+You can experiment with complex text by using the keymap functions.
+Please note that these are mainly for demo purposes, for real work
+with Arabic or Hebrew you will want to use an input method. You will
+need to use a font that supports Arabic or Hebrew, 'Lucida Sans'
+(provided
+with Java) supports these languages.</p>
+<h4>Other demos</h4>
+<p>The other demo programs are <strong>not supported</strong> and
+exist only to let you
+experiment with the ICU4J classes. First, build ICU4J using <tt>ant&nbsp;all</tt>.
+Then try
+one of the following:
+</p>
+<ul>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.calendar.CalendarApp</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.holiday.HolidayCalendarDemo</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.rbnf.RbnfDemo</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.translit.Demo</tt></li>
+</ul>
+
+<h3 class="doc"><a name="resources">ICU4J Resource Information</a></h3>
+Starting with release 2.1, ICU4J includes its own
+resource information
+which is completely independent of the JRE resource information. (Note,
+ICU4J 2.8 to 3.4, time zone information depends on the underlying JRE).
+The ICU4J resource information is equivalent to the information in ICU4C and
+many resources are, in fact, the same binary files that ICU4C uses.
+<p>
+By default the ICU4J distribution includes all of the standard resource
+information. It is located under the directory com/ibm/icu/impl/data.
+Depending on the service, the data is in different locations and in
+different formats. <strong>Note:</strong> This will continue to change
+from release to release, so clients should not depend on the exact
+organization
+of the data in ICU4J.</p>
+<ul>
+  <li>The primary <b>locale data</b> is under the directory <tt>icudt40b</tt>,
+as a set of <tt>".res"</tt> files whose names are the locale identifiers. 
+Locale naming is documented the <code>com.ibm.icu.util.ULocale</code>
+class, and the use of these names in searching for resources is documented 
+in <code>com.ibm.icu.util.UResourceBundle</code>.
+  </li>
+  <li>The <b>collation data</b> is under the directory <tt>icudt40b/coll</tt>,
+as a set of <tt>".res"</tt> files.</li>
+  <li>The <b>rule-based transliterator data</b> is under the directory
+<tt>icudt40b/translit</tt> as a set of <tt>".res"</tt> files.  (<b>Note:</b> the
+Han transliterator test data is no longer included in the core icu4j.jar 
+file by default.)</li>
+  <li>The <b>rule-based number format data</b> is under the directory
+<tt>icudt40b/rbnf</tt> as a set of <tt>".res"</tt> files.
+  <li>The <b>break iterator data</b> is directly under the data
+directory, as a set of <tt>".brk"</tt> files, named according to the
+type of break and the locale where there are locale-specific versions.</li>
+  <li>The <b>holiday data</b> is under the <tt>data</tt> directory,
+as a set of <tt>".class"</tt> files, named <tt>"HolidayBundle_"</tt>
+followed by the locale ID.</li>
+  <li>The <b>character property data</b> as well as assorted <b>normalization
+data</b> and default <b>unicode collation algorithm (UCA) data</b>
+is found under the <tt>data</tt> directory as a set of <tt>".icu"</tt>
+files. </li>
+  <li>The <b>character set converter data</b> is under the directory
+  <tt>icudt40b</tt>, as a set of <tt>".cnv"</tt> files.  These files are
+  currently included only in icu-charset.jar.</li>
+  <li>The <b>time zone data</b> is named <tt>zoneinfo.res</tt> under
+  the directory <tt>icudt40b</tt>.</li>
+</ul>
+<p>
+Some of the data files alias or otherwise reference data from other
+data files. One reason for this is because some locale names have
+changed. For example, <tt>he_IL</tt> used to be <tt>iw_IL</tt>. In
+order to support both names but not duplicate the data, one of the
+resource files refers to the other file's data. In other cases, a
+file may alias a portion of another file's data in order to save
+space. Currently ICU4J provides no tool for revealing these
+dependencies.</p>
+<blockquote><strong>Note:</strong>  Java's <code>Locale</code> class
+silently converts the language code <tt>"he"</tt> to <tt>"iw"</tt>
+when you construct the Locale (for versions of Java through Java 5). Thus
+Java cannot be used to locate resources that use the <tt>"he"</tt>
+language code. ICU, on the other hand, does not perform this
+conversion in ULocale, and instead uses aliasing in the locale data to
+represent the same set of data under different locale
+ids.</blockquote>
+<p>
+Resource files that use locale ids form a hierarchy, with up to four
+levels: a root, language, region (country), and variant. Searches for
+locale data attempt to match as far down the hierarchy as possible,
+for example, <tt>"he_IL"</tt> will match <tt>he_IL</tt>, but
+<tt>"he_US"</tt> will match <tt>he</tt> (since there is no <tt>US</tt>
+variant for he, and <tt>"xx_YY</tt> will match root (the
+default fallback locale) since there is no <tt>xx</tt> language code
+in the locale hierarchy. Again, see
+<code>java.util.ResourceBundle</code> for more information.
+</p>
+<p>
+<strong>Currently ICU4J provides no tool for revealing these
+dependencies</strong> between data files, so trimming the data
+directly in the ICU4J project is a hit-or-miss affair. The key point
+when you remove data is to make sure to remove all dependencies on
+that data as well. For example, if you remove <tt>he.res</tt>, you
+need to remove <tt>he_IL.res</tt>, since it is lower in the hierarchy,
+and you must remove iw.res, since it references <tt>he.res</tt>, and
+<tt>iw_IL.res</tt>, since it depends on it (and also references
+<tt>he_IL.res</tt>).
+</p>
+<p>
+Unfortunately, the jar tool in the JDK provides no way to remove items
+from a jar file. Thus you have to extract the resources, remove the
+ones you don't want, and then create a new jar file with the remining
+resources. See the jar tool information for how to do this. Before
+'rejaring' the files, be sure to thoroughly test your application with
+the remaining resources, making sure each required resource is
+present.
+</p>
+<h4>Using additional resource files with ICU4J</h4>
+<blockquote>
+  <table cellpadding="3" frame="border" rules="none" width="50%">
+    <tbody>
+      <tr>
+        <td><b><font color="red" size="+1">Warning:</font> Resource
+file formats can change across releases of ICU4J!</b></td>
+      </tr>
+      <tr>
+        <td>The format of ICU4J resources is not part of the API.
+Clients who develop their own resources for use with ICU4J should be
+prepared to
+regenerate them when they move to new releases of ICU4J.</td>
+      </tr>
+    </tbody>
+  </table>
+</blockquote>
+<p>
+We are still developing ICU4J's resource mechanism. Currently it 
+is not possible to mix icu's new binary <tt>.res</tt>
+resources
+with traditional java-style <tt>.class</tt> or <tt>.txt</tt>
+resources. We might
+allow for this in a future release, but since the resource data and
+format is not formally
+supported, you run the risk of incompatibilities with future releases
+of ICU4J.
+</p>
+<p>
+Resource data in ICU4J is checked in to the repository as a jar file
+containing the resource binaries, <tt>icudata.jar</tt>. This
+means that inspecting the contents of these resources is difficult.
+They currently are compiled from ICU4C <tt>.txt</tt> file data. You
+can view the contents of the ICU4C text resource files to understand
+the contents of the ICU4J resources.
+</p>
+<p>
+The files in <tt>icudata.jar</tt> get extracted to <tt>com/ibm/icu/impl/data</tt>
+in
+the build directory when the 'core' target is built.
+Building the <tt>'resources'</tt> target will force the
+resources to once again be extracted. Extraction will
+overwrite any corresponding resource files already in that directory.
+</p>
+<h4><a name="resourcesICU4C">Building ICU4J Resources from ICU4C</a></h4>
+ICU4J data is built by ICU4C tools. Please see "icu4j-readme.txt" in <I>$icu4c_root</I>/source/data for the procedures.
+<h5> Generating Data from CLDR </h5>
+<I> Note: This procedure assumes that all 3 sources are in sibling directories</I>
+<ol>
+    <li>Checkout CLDR.  $cldr_root in the following steps is the root directory where
+    the CLDR source files checked out.</li>
+    <li>Update <I>$cldr_root</I>/common to 'release-1-6-0' tag</li>
+    <li>Update <I>$cldr_root</I>/tools to 'release-1-6-0' tag</li>
+    <li>Checkout ICU4C with tag 'release-4-0'</li>
+    <li>Checkout ICU4J with tag 'release-4-0'</li>
+    <li>Build ICU4J</li>
+    <li>Build ICU4C</li>
+    <li>Change to <I>$cldr_root</I>/tools/java directory</li>
+    <li>Build CLDR using ant after pointing ICU4J_CLASSES env var to the newly build ICU4J</li>
+    <li>cd to <I>$icu4c_root</I>/source/data directory</li>
+    <li>Follow the instructions in the cldr-icu-readme.txt</li>
+    <li>Build ICU4C data from CLDR</li>
+    <li>Build ICU4J data from ICU4C data by following the procedures in <I>$icu4c_root</I>/source/data/icu4j-readme.txt</li>
+    <li>cd to <I>$icu4j_root</I> dir</li>
+    <li>Build and test icu4j</li>
+</ol>
+
+<h3 class="doc"><a name="timezone"></a>About ICU4J Time Zone</h3>
+<p>ICU4J 4.0 includes time zone data version 2008c, which is the latest one as of
+the release date.  However, time zone data is frequently updated in response
+to changes made by local governments around the world.  If you need to update
+the time zone data, please refer the ICU user guide topic
+<a href="http://www.icu-project.org/userguide/dateTimezone.html#tzupdate">Updating the Time Zone Data</a>.</p>
+<p>Starting with ICU4J 4.0, you can optionally configure ICU4J date and time
+service classes to use underlying JDK TimeZone implementation (see the ICU4J API reference
+<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/TimeZone.html">TimeZone</a>
+for the details).  When this configuration is enabled, ICU's own time zone data
+won't be used and you have to get time zone data patches from the JRE vendor.</p>
+
+<h3 class="doc"><a name="WhereToFindMore"></a>Where to Find More
+Information</h3>
+<p><a href="http://www.ibm.com/software/globalization/icu/">http://www.ibm.com/software/globalization/icu/</a>
+is a
+pointer to general information about the International Components for
+Unicode in Java </p>
+<p><a href="http://www.ibm.com/software/globalization/">http://www.ibm.com/software/globalization/</a>
+is a pointer to
+information on how to make applications global. </p>
+<h3 class="doc"><a name="SubmittingComments"></a>Submitting Comments,
+Requesting Features and
+Reporting Bugs</h3>
+<p>Your comments are important to making ICU4J successful. We are
+committed
+to fixing any bugs, and will use your feedback to help plan future
+releases.</p>
+<p>To submit comments, request features and report bugs, contact us
+through the <a
+ href="http://www.icu-project.org/contacts.html">ICU Support
+mailing list</a>.<br>
+While we are not able to respond individually to each comment, we do
+review all comments.</p>
+<br>
+<br>
+<h2>Thank you for your interest in ICU4J!</h2>
+<br>
+<hr align="center" size="2" width="100%">
+<p><I><font size="-1">Copyright &copy; 2002-2008 International Business
+Machines Corporation and others. All Rights
+Reserved.<br>
+4400 North First Street, San Jos&eacute;, CA 95193, USA
+</font></I></p>
+</body>
+</html>
diff --git a/src/META-INF/services/java.nio.charset.spi.CharsetProvider b/src/META-INF/services/java.nio.charset.spi.CharsetProvider
new file mode 100644
index 0000000..ca798e7
--- /dev/null
+++ b/src/META-INF/services/java.nio.charset.spi.CharsetProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2006, International Business Machines Corporation and others. All Rights Reserved.   
+# icu4j converters
+com.ibm.icu.charset.CharsetProviderICU
diff --git a/src/com/ibm/icu/ICUConfig.properties b/src/com/ibm/icu/ICUConfig.properties
new file mode 100644
index 0000000..d9100a4
--- /dev/null
+++ b/src/com/ibm/icu/ICUConfig.properties
@@ -0,0 +1,13 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2008, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties contains ICU runtime configuration 
+#*
+
+#
+# The default TimeZone implementation type used by the ICU TimeZone
+# factory method. [ ICU | JDK ]
+#
+com.ibm.icu.util.TimeZone.DefaultTimeZoneType = ICU
diff --git a/src/com/ibm/icu/charset/Charset88591.java b/src/com/ibm/icu/charset/Charset88591.java
new file mode 100644
index 0000000..a74a1f7
--- /dev/null
+++ b/src/com/ibm/icu/charset/Charset88591.java
@@ -0,0 +1,128 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UnicodeSet;
+
+class Charset88591 extends CharsetASCII {
+    public Charset88591(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+
+    class CharsetDecoder88591 extends CharsetDecoderASCII {
+        public CharsetDecoder88591(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoopCoreOptimized(ByteBuffer source, CharBuffer target,
+                byte[] sourceArray, char[] targetArray, int oldSource, int offset, int limit) {
+
+            /*
+             * perform 88591 conversion from the source array to the target array. no range check is
+             * necessary.
+             */
+            for (int i = oldSource; i < limit; i++)
+                targetArray[i + offset] = (char) (sourceArray[i] & 0xff);
+
+            return null;
+        }
+
+        protected CoderResult decodeLoopCoreUnoptimized(ByteBuffer source, CharBuffer target)
+                throws BufferUnderflowException, BufferOverflowException {
+
+            /*
+             * perform 88591 conversion from the source buffer to the target buffer. no range check
+             * is necessary (an exception will be generated to end the loop).
+             */
+            while (true)
+                target.put((char) (source.get() & 0xff));
+        }
+    }
+
+    class CharsetEncoder88591 extends CharsetEncoderASCII {
+        public CharsetEncoder88591(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected final CoderResult encodeLoopCoreOptimized(CharBuffer source, ByteBuffer target,
+                char[] sourceArray, byte[] targetArray, int oldSource, int offset, int limit,
+                boolean flush) {
+            int i, ch = 0;
+
+            /*
+             * perform 88591 conversion from the source array to the target array, making sure each
+             * char in the source is within the correct range
+             */
+            for (i = oldSource; i < limit; i++) {
+                ch = (int) sourceArray[i];
+                if ((ch & 0xff00) == 0) {
+                    targetArray[i + offset] = (byte) ch;
+                } else {
+                    break;
+                }
+            }
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * encodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0xff00) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return encodeMalformedOrUnmappable(source, ch, flush);
+            } else
+                return null;
+        }
+
+        protected final CoderResult encodeLoopCoreUnoptimized(CharBuffer source, ByteBuffer target,
+                boolean flush) throws BufferUnderflowException, BufferOverflowException {
+            int ch;
+
+            /*
+             * perform 88591 conversion from the source buffer to the target buffer, making sure
+             * each char in the source is within the correct range
+             */
+            
+            while (true) {
+                ch = (int) source.get();
+                if ((ch & 0xff00) == 0) {
+                    target.put((byte) ch);
+                } else {
+                    break;
+                }
+            }
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling encodeMalformedOrUnmappable.
+             */
+            return encodeMalformedOrUnmappable(source, ch, flush);
+        }
+
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoder88591(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoder88591(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0xff);
+     }
+}
diff --git a/src/com/ibm/icu/charset/CharsetASCII.java b/src/com/ibm/icu/charset/CharsetASCII.java
new file mode 100644
index 0000000..419a460
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetASCII.java
@@ -0,0 +1,357 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetASCII extends CharsetICU {
+    protected byte[] fromUSubstitution = new byte[] { (byte) 0x1a };
+
+    public CharsetASCII(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 1;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderASCII extends CharsetDecoderICU {
+
+        public CharsetDecoderASCII(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            CoderResult cr;
+            int oldSource = source.position();
+            int oldTarget = target.position();
+
+            if (source.hasArray() && target.hasArray()) {
+                /* optimized loop */
+
+                /*
+                 * extract arrays from the buffers and obtain various constant values that will be
+                 * necessary in the core loop
+                 */
+                byte[] sourceArray = source.array();
+                int sourceOffset = source.arrayOffset();
+                int sourceIndex = oldSource + sourceOffset;
+                int sourceLength = source.limit() - oldSource;
+                
+                char[] targetArray = target.array();
+                int targetOffset = target.arrayOffset();
+                int targetIndex = oldTarget + targetOffset;
+                int targetLength = target.limit() - oldTarget;
+
+                int limit = ((sourceLength < targetLength) ? sourceLength : targetLength)
+                        + sourceIndex;
+                int offset = targetIndex - sourceIndex;
+
+                /*
+                 * perform the core loop... if it returns null, it must be due to an overflow or
+                 * underflow
+                 */
+                cr = decodeLoopCoreOptimized(source, target, sourceArray, targetArray, sourceIndex, offset, limit);
+                if (cr == null) {
+                    if (sourceLength <= targetLength) {
+                        source.position(oldSource + sourceLength);
+                        target.position(oldTarget + sourceLength);
+                        cr = CoderResult.UNDERFLOW;
+                    } else {
+                        source.position(oldSource + targetLength);
+                        target.position(oldTarget + targetLength);
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            } else {
+                /* unoptimized loop */
+
+                try {
+                    /*
+                     * perform the core loop... if it throws an exception, it must be due to an
+                     * overflow or underflow
+                     */
+                    cr = decodeLoopCoreUnoptimized(source, target);
+
+                } catch (BufferUnderflowException ex) {
+                    /* all of the source has been read */
+                    cr = CoderResult.UNDERFLOW;
+                } catch (BufferOverflowException ex) {
+                    /* the target is full */
+                    source.position(source.position() - 1); /* rewind by 1 */
+                    cr = CoderResult.OVERFLOW;
+                }
+            }
+
+            /* set offsets since the start */
+            if (offsets != null) {
+                int count = target.position() - oldTarget;
+                int sourceIndex = -1;
+                while (--count >= 0) offsets.put(++sourceIndex);
+            }
+
+            return cr;
+        }
+
+        protected CoderResult decodeLoopCoreOptimized(ByteBuffer source, CharBuffer target,
+                byte[] sourceArray, char[] targetArray, int oldSource, int offset, int limit) {
+            int i, ch = 0;
+
+            /*
+             * perform ascii conversion from the source array to the target array, making sure each
+             * byte in the source is within the correct range
+             */
+            for (i = oldSource; i < limit && (((ch = (sourceArray[i] & 0xff)) & 0x80) == 0); i++)
+                targetArray[i + offset] = (char) ch;
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * decodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0x80) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return decodeMalformedOrUnmappable(ch);
+            } else
+                return null;
+        }
+
+        protected CoderResult decodeLoopCoreUnoptimized(ByteBuffer source, CharBuffer target)
+                throws BufferUnderflowException, BufferOverflowException {
+            int ch = 0;
+
+            /*
+             * perform ascii conversion from the source buffer to the target buffer, making sure
+             * each byte in the source is within the correct range
+             */
+            while (((ch = (source.get() & 0xff)) & 0x80) == 0)
+                target.put((char) ch);
+
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling decodeMalformedOrUnmappable
+             */
+            return decodeMalformedOrUnmappable(ch);
+        }
+
+        protected CoderResult decodeMalformedOrUnmappable(int ch) {
+            /*
+             * put the guilty character into toUBytesArray and return a message saying that the
+             * character was malformed and of length 1.
+             */
+            toUBytesArray[0] = (byte) ch;
+            toULength = 1;
+            return CoderResult.malformedForLength(1);
+        }
+    }
+
+    class CharsetEncoderASCII extends CharsetEncoderICU {
+
+        public CharsetEncoderASCII(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+
+        private final static int NEED_TO_WRITE_BOM = 1;
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            CoderResult cr;
+            int oldSource = source.position();
+            int oldTarget = target.position();
+
+            if (fromUChar32 != 0) {
+                /*
+                 * if we have a leading character in fromUChar32 that needs to be dealt with, we
+                 * need to check for a matching trail character and taking the appropriate action as
+                 * dictated by encodeTrail.
+                 */
+                cr = encodeTrail(source, (char) fromUChar32, flush);
+            } else {
+                if (source.hasArray() && target.hasArray()) {
+                    /* optimized loop */
+
+                    /*
+                     * extract arrays from the buffers and obtain various constant values that will
+                     * be necessary in the core loop
+                     */
+                    char[] sourceArray = source.array();
+                    int sourceOffset = source.arrayOffset();
+                    int sourceIndex = oldSource + sourceOffset;
+                    int sourceLength = source.limit() - oldSource;
+
+                    byte[] targetArray = target.array();
+                    int targetOffset = target.arrayOffset();
+                    int targetIndex = oldTarget + targetOffset;
+                    int targetLength = target.limit() - oldTarget;
+
+                    int limit = ((sourceLength < targetLength) ? sourceLength : targetLength)
+                            + sourceIndex;
+                    int offset = targetIndex - sourceIndex;
+
+                    /*
+                     * perform the core loop... if it returns null, it must be due to an overflow or
+                     * underflow
+                     */
+                    cr = encodeLoopCoreOptimized(source, target, sourceArray, targetArray, sourceIndex, offset, limit, flush);
+                    if (cr == null) {
+                        if (sourceLength <= targetLength) {
+                            source.position(oldSource + sourceLength);
+                            target.position(oldTarget + sourceLength);
+                            cr = CoderResult.UNDERFLOW;
+                        } else {
+                            source.position(oldSource + targetLength);
+                            target.position(oldTarget + targetLength);
+                            cr = CoderResult.OVERFLOW;
+                        }
+                    }
+                } else {
+                    /* unoptimized loop */
+
+                    try {
+                        /*
+                         * perform the core loop... if it throws an exception, it must be due to an
+                         * overflow or underflow
+                         */
+                        cr = encodeLoopCoreUnoptimized(source, target, flush);
+
+                    } catch (BufferUnderflowException ex) {
+                        cr = CoderResult.UNDERFLOW;
+                    } catch (BufferOverflowException ex) {
+                        source.position(source.position() - 1); /* rewind by 1 */
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            }
+
+            /* set offsets since the start */
+            if (offsets != null) {
+                int count = target.position() - oldTarget;
+                int sourceIndex = -1;
+                while (--count >= 0) offsets.put(++sourceIndex);
+            }
+
+            return cr;
+        }
+
+        protected CoderResult encodeLoopCoreOptimized(CharBuffer source, ByteBuffer target,
+                char[] sourceArray, byte[] targetArray, int oldSource, int offset, int limit,
+                boolean flush) {
+            int i, ch = 0;
+
+            /*
+             * perform ascii conversion from the source array to the target array, making sure each
+             * char in the source is within the correct range
+             */
+            for (i = oldSource; i < limit && (((ch = (int) sourceArray[i]) & 0xff80) == 0); i++)
+                targetArray[i + offset] = (byte) ch;
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * encodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0xff80) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return encodeMalformedOrUnmappable(source, ch, flush);
+            } else
+                return null;
+        }
+
+        protected CoderResult encodeLoopCoreUnoptimized(CharBuffer source, ByteBuffer target,
+                boolean flush) throws BufferUnderflowException, BufferOverflowException {
+            int ch;
+
+            /*
+             * perform ascii conversion from the source buffer to the target buffer, making sure
+             * each char in the source is within the correct range
+             */
+            while (((ch = (int) source.get()) & 0xff80) == 0)
+                target.put((byte) ch);
+
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling encodeMalformedOrUnmappable.
+             */
+            return encodeMalformedOrUnmappable(source, ch, flush);
+        }
+
+        protected final CoderResult encodeMalformedOrUnmappable(CharBuffer source, int ch, boolean flush) {
+            /*
+             * if the character is a lead surrogate, we need to call encodeTrail to attempt to match
+             * it up with a trail surrogate. if not, the character is unmappable.
+             */
+            return (UTF16.isSurrogate((char) ch))
+                    ? encodeTrail(source, (char) ch, flush)
+                    : CoderResult.unmappableForLength(1);
+        }
+
+        private final CoderResult encodeTrail(CharBuffer source, char lead, boolean flush) {
+            /*
+             * ASCII doesn't support characters in the BMP, so if handleSurrogates returns null,
+             * we leave fromUChar32 alone (it should store a new codepoint) and call it unmappable. 
+             */
+            CoderResult cr = handleSurrogates(source, lead);
+            if (cr != null) {
+                return cr;
+            } else {
+                //source.position(source.position() - 2);
+                return CoderResult.unmappableForLength(2);
+            }
+        }
+
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderASCII(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderASCII(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0x7f);
+     }
+}
diff --git a/src/com/ibm/icu/charset/CharsetBOCU1.java b/src/com/ibm/icu/charset/CharsetBOCU1.java
new file mode 100644
index 0000000..ace38c8
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetBOCU1.java
@@ -0,0 +1,1064 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author krajwade
+ *
+ */
+class CharsetBOCU1 extends CharsetICU {   
+    /* BOCU constants and macros */
+    
+    /* initial value for "prev": middle of the ASCII range */
+    private static final byte BOCU1_ASCII_PREV = 0x40;
+    
+    /* bounding byte values for differences */
+    private static final int BOCU1_MIN = 0x21;
+    private static final int BOCU1_MIDDLE = 0x90;
+    //private static final int BOCU1_MAX_LEAD = 0xfe;
+    private static final int BOCU1_MAX_TRAIL = 0xff;
+    private static final int BOCU1_RESET = 0xff;
+
+    /* number of lead bytes */
+    //private static final int BOCU1_COUNT = (BOCU1_MAX_LEAD-BOCU1_MIN+1);
+
+    /* adjust trail byte counts for the use of some C0 control byte values */
+    private static final int BOCU1_TRAIL_CONTROLS_COUNT =  20;
+    private static final int BOCU1_TRAIL_BYTE_OFFSET = (BOCU1_MIN-BOCU1_TRAIL_CONTROLS_COUNT);
+
+    /* number of trail bytes */
+    private static final int BOCU1_TRAIL_COUNT =((BOCU1_MAX_TRAIL-BOCU1_MIN+1)+BOCU1_TRAIL_CONTROLS_COUNT);
+    
+    /*
+     * number of positive and negative single-byte codes
+     * (counting 0==BOCU1_MIDDLE among the positive ones)
+     */
+    private static final int BOCU1_SINGLE = 64;
+
+    /* number of lead bytes for positive and negative 2/3/4-byte sequences */
+    private static final int BOCU1_LEAD_2 = 43;
+    private static final int BOCU1_LEAD_3 = 3;
+    //private static final int BOCU1_LEAD_4 = 1;
+
+    /* The difference value range for single-byters. */
+    private static final int BOCU1_REACH_POS_1 = (BOCU1_SINGLE-1);
+    private static final int BOCU1_REACH_NEG_1 = (-BOCU1_SINGLE);
+
+    /* The difference value range for double-byters. */
+    private static final int BOCU1_REACH_POS_2 = (BOCU1_REACH_POS_1+BOCU1_LEAD_2*BOCU1_TRAIL_COUNT);
+    private static final int BOCU1_REACH_NEG_2 = (BOCU1_REACH_NEG_1-BOCU1_LEAD_2*BOCU1_TRAIL_COUNT);
+
+    /* The difference value range for 3-byters. */
+    private static final int BOCU1_REACH_POS_3  =
+        (BOCU1_REACH_POS_2+BOCU1_LEAD_3*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+
+    private static final int BOCU1_REACH_NEG_3 = (BOCU1_REACH_NEG_2-BOCU1_LEAD_3*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+
+    /* The lead byte start values. */
+    private static final int BOCU1_START_POS_2 =  (BOCU1_MIDDLE+BOCU1_REACH_POS_1+1);
+    private static final int BOCU1_START_POS_3  = (BOCU1_START_POS_2+BOCU1_LEAD_2);
+    private static final int BOCU1_START_POS_4  = (BOCU1_START_POS_3+BOCU1_LEAD_3);
+         /* ==BOCU1_MAX_LEAD */
+
+    private static final int BOCU1_START_NEG_2 = (BOCU1_MIDDLE+BOCU1_REACH_NEG_1);
+    private static final int BOCU1_START_NEG_3 = (BOCU1_START_NEG_2-BOCU1_LEAD_2);
+    //private static final int BOCU1_START_NEG_4 = (BOCU1_START_NEG_3-BOCU1_LEAD_3);
+         /* ==BOCU1_MIN+1 */
+
+    /* The length of a byte sequence, according to the lead byte (!=BOCU1_RESET). */
+   /* private static int BOCU1_LENGTH_FROM_LEAD(int lead) {
+       return ((BOCU1_START_NEG_2<=(lead) && (lead)<BOCU1_START_POS_2) ? 1 : 
+         (BOCU1_START_NEG_3<=(lead) && (lead)<BOCU1_START_POS_3) ? 2 : 
+         (BOCU1_START_NEG_4<=(lead) && (lead)<BOCU1_START_POS_4) ? 3 : 4);
+    }*/
+
+    /* The length of a byte sequence, according to its packed form. */
+    private static int BOCU1_LENGTH_FROM_PACKED(int packed) {
+        return (((packed)&UConverterConstants.UNSIGNED_INT_MASK)<0x04000000 ? (packed)>>24 : 4);
+    }
+    
+    /*
+     * Byte value map for control codes,
+     * from external byte values 0x00..0x20
+     * to trail byte values 0..19 (0..0x13) as used in the difference calculation.
+     * External byte values that are illegal as trail bytes are mapped to -1.
+     */
+    private static final int[]
+    bocu1ByteToTrail={
+    /*  0     1     2     3     4     5     6     7    */
+        -1,   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -1,
+
+    /*  8     9     a     b     c     d     e     f    */
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+
+    /*  10    11    12    13    14    15    16    17   */
+        0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+
+    /*  18    19    1a    1b    1c    1d    1e    1f   */
+        0x0e, 0x0f, -1,   -1,   0x10, 0x11, 0x12, 0x13,
+
+    /*  20   */
+        -1
+    };
+
+    /*
+     * Byte value map for control codes,
+     * from trail byte values 0..19 (0..0x13) as used in the difference calculation
+     * to external byte values 0x00..0x20.
+     */
+    private static final int[] 
+    bocu1TrailToByte = {
+    /*  0     1     2     3     4     5     6     7    */
+        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x10, 0x11,
+
+    /*  8     9     a     b     c     d     e     f    */
+        0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+
+    /*  10    11    12    13   */
+        0x1c, 0x1d, 0x1e, 0x1f
+    };
+    
+    
+    /*
+     * 12 commonly used C0 control codes (and space) are only used to encode
+     * themselves directly,
+     * which makes BOCU-1 MIME-usable and reasonably safe for
+     * ASCII-oriented software.
+     *
+     * These controls are
+     *  0   NUL
+     *
+     *  7   BEL
+     *  8   BS
+     *
+     *  9   TAB
+     *  a   LF
+     *  b   VT
+     *  c   FF
+     *  d   CR
+     *
+     *  e   SO
+     *  f   SI
+     *
+     * 1a   SUB
+     * 1b   ESC
+     *
+     * The other 20 C0 controls are also encoded directly (to preserve order)
+     * but are also used as trail bytes in difference encoding
+     * (for better compression).
+     */
+    private static int BOCU1_TRAIL_TO_BYTE(int trail) {
+        return ((trail)>=BOCU1_TRAIL_CONTROLS_COUNT ? (trail)+BOCU1_TRAIL_BYTE_OFFSET : bocu1TrailToByte[trail]);
+    }    
+    
+    /* BOCU-1 implementation functions ------------------------------------------ */
+    private static int BOCU1_SIMPLE_PREV(int c){
+        return (((c)&~0x7f)+BOCU1_ASCII_PREV);
+    }
+
+    /**
+     * Compute the next "previous" value for differencing
+     * from the current code point.
+     *
+     * @param c current code point, 0x3040..0xd7a3 (rest handled by macro below)
+     * @return "previous code point" state value
+     */
+    private static  int bocu1Prev(int c) {
+        /* compute new prev */
+        if(/* 0x3040<=c && */ c<=0x309f) {
+            /* Hiragana is not 128-aligned */
+            return 0x3070;
+        } else if(0x4e00<=c && c<=0x9fa5) {
+            /* CJK Unihan */
+            return 0x4e00-BOCU1_REACH_NEG_2;
+        } else if(0xac00<=c /* && c<=0xd7a3 */) {
+            /* Korean Hangul */
+            return (0xd7a3+0xac00)/2;
+        } else {
+            /* mostly small scripts */
+            return BOCU1_SIMPLE_PREV(c);
+        }
+    }
+
+    /** Fast version of bocu1Prev() for most scripts. */
+    private static int BOCU1_PREV(int c) {
+        return ((c)<0x3040 || (c)>0xd7a3 ? BOCU1_SIMPLE_PREV(c) : bocu1Prev(c));
+    }
+    
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x1A};
+
+    /* Faster versions of packDiff() for single-byte-encoded diff values. */
+
+    /** Is a diff value encodable in a single byte? */
+    private static boolean DIFF_IS_SINGLE(int diff){
+        return (BOCU1_REACH_NEG_1<=(diff) && (diff)<=BOCU1_REACH_POS_1);
+    }
+
+    /** Encode a diff value in a single byte. */
+    private static int PACK_SINGLE_DIFF(int diff){
+        return (BOCU1_MIDDLE+(diff));
+    }
+
+    /** Is a diff value encodable in two bytes? */
+    private static boolean DIFF_IS_DOUBLE(int diff){
+        return (BOCU1_REACH_NEG_2<=(diff) && (diff)<=BOCU1_REACH_POS_2);
+    }   
+      
+    public CharsetBOCU1(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 4; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+     }
+    
+    class CharsetEncoderBOCU extends CharsetEncoderICU {
+        public CharsetEncoderBOCU(CharsetICU cs) {
+            super(cs,fromUSubstitution);
+        }
+        
+        int sourceIndex, nextSourceIndex;
+        int prev, c , diff;
+        boolean checkNegative;
+        boolean LoopAfterTrail;
+        int targetCapacity;
+        CoderResult cr;        
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int fastSingle=0;
+        private static final int getTrail=1;
+        private static final int regularLoop=2;
+        
+        private boolean LabelLoop; //used to break the while loop
+        private int labelType = fastSingle; //labeType is set to fastSingle to start the code from fastSingle:
+        
+        /**
+         * Integer division and modulo with negative numerators
+         * yields negative modulo results and quotients that are one more than
+         * what we need here.
+         * This macro adjust the results so that the modulo-value m is always >=0.
+         *
+         * For positive n, the if() condition is always FALSE.
+         *
+         * @param n Number to be split into quotient and rest.
+         *          Will be modified to contain the quotient.
+         * @param d Divisor.
+         * @param m Output variable for the rest (modulo result).
+         */
+        private int NEGDIVMOD(int n, int d, int m) {
+            diff = n;
+            (m)=(diff)%(d); 
+            (diff)/=(d); 
+            if((m)<0) { 
+                --(diff);
+                (m)+=(d);
+            }
+            return m;
+        }
+        
+        /**
+         * Encode a difference -0x10ffff..0x10ffff in 1..4 bytes
+         * and return a packed integer with them.
+         *
+         * The encoding favors small absolute differences with short encodings
+         * to compress runs of same-script characters.
+         *
+         * Optimized version with unrolled loops and fewer floating-point operations
+         * than the standard packDiff().
+         *
+         * @param diff difference value -0x10ffff..0x10ffff
+         * @return
+         *      0x010000zz for 1-byte sequence zz
+         *      0x0200yyzz for 2-byte sequence yy zz
+         *      0x03xxyyzz for 3-byte sequence xx yy zz
+         *      0xwwxxyyzz for 4-byte sequence ww xx yy zz (ww>0x03)
+         */
+        private int packDiff(int n) {
+            int result, m = 0;
+            diff = n;
+
+            if(diff>=BOCU1_REACH_NEG_1) {
+                /* mostly positive differences, and single-byte negative ones */
+                if(diff<=BOCU1_REACH_POS_2) {
+                    /* two bytes */
+                    diff-=BOCU1_REACH_POS_1+1;
+                    result=0x02000000;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    result|=(BOCU1_START_POS_2+diff)<<8;
+                } else if(diff<=BOCU1_REACH_POS_3) {
+                    /* three bytes */
+                    diff-=BOCU1_REACH_POS_2+1;
+                    result=0x03000000;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    result|=(BOCU1_START_POS_3+diff)<<16;
+                } else {
+                    /* four bytes */
+                    diff-=BOCU1_REACH_POS_3+1;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    /*
+                     * We know that / and % would deliver quotient 0 and rest=diff.
+                     * Avoid division and modulo for performance.
+                     */
+                    result|=BOCU1_TRAIL_TO_BYTE(diff)<<16;
+
+                    result|=((BOCU1_START_POS_4&UConverterConstants.UNSIGNED_INT_MASK))<<24;
+                }
+            } else {
+                /* two- to four-byte negative differences */
+                if(diff>=BOCU1_REACH_NEG_2) {
+                    /* two bytes */
+                    diff-=BOCU1_REACH_NEG_1;
+                    result=0x02000000;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    result|=(BOCU1_START_NEG_2+diff)<<8;
+                } else if(diff>=BOCU1_REACH_NEG_3) {
+                    /* three bytes */
+                    diff-=BOCU1_REACH_NEG_2;
+                    result=0x03000000;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    result|=(BOCU1_START_NEG_3+diff)<<16;
+                } else {
+                    /* four bytes */
+                    diff-=BOCU1_REACH_NEG_3;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    /*
+                     * We know that NEGDIVMOD would deliver
+                     * quotient -1 and rest=diff+BOCU1_TRAIL_COUNT.
+                     * Avoid division and modulo for performance.
+                     */
+                    m=diff+BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<16;
+
+                    result|=BOCU1_MIN<<24;
+                }
+            }
+            return result;
+        }
+           
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush){
+            cr = CoderResult.UNDERFLOW;
+            
+            LabelLoop = true; //used to break the while loop
+            checkNegative = false; // its value is set to true to get out of while loop when c = -c
+            LoopAfterTrail = false; // its value is set to true to ignore code before getTrail:
+            
+            /*set up the local pointers*/
+            targetCapacity = target.limit() - target.position();
+            c = fromUChar32;
+            prev = fromUnicodeStatus;
+            
+            if(prev==0){
+                prev = BOCU1_ASCII_PREV;
+            }
+            
+            /*sourceIndex ==-1 if the current characte began in the previous buffer*/
+            sourceIndex = c == 0 ? 0: -1;
+            nextSourceIndex = 0;
+            
+            /*conversion loop*/
+            if(c!=0 && targetCapacity>0){
+                labelType = getTrail;
+            }
+            
+            while(LabelLoop){
+                switch(labelType){
+                    case fastSingle:
+                        labelType = fastSingle(source, target, offsets);
+                        break;
+                    case getTrail:
+                        labelType = getTrail(source, target, offsets);
+                        break;
+                    case regularLoop:
+                        labelType = regularLoop(source, target, offsets);
+                        break;
+                }
+            }
+                    
+            return cr;
+        }
+        
+        private int fastSingle(CharBuffer source, ByteBuffer target, IntBuffer offsets){                     
+//fastSingle:        
+            /*fast loop for single-byte differences*/
+            /*use only one loop counter variable , targetCapacity, not also source*/
+            diff = source.limit() - source.position();
+            if(targetCapacity>diff){
+                targetCapacity = diff;
+            }
+            while(targetCapacity>0 && (c=source.get(source.position()))<0x3000){
+                if(c<=0x20){
+                    if(c!=0x20){
+                        prev = BOCU1_ASCII_PREV;
+                    }
+                    target.put((byte)c);
+                    if(offsets!=null){
+                        offsets.put(nextSourceIndex++);
+                    }
+                    source.position(source.position()+1);
+                    --targetCapacity;
+                }else {
+                    diff = c-prev;
+                    if(DIFF_IS_SINGLE(diff)){
+                        prev = BOCU1_SIMPLE_PREV(c);
+                        target.put((byte)PACK_SINGLE_DIFF(diff));
+                        if(offsets!=null){
+                            offsets.put(nextSourceIndex++);
+                        }
+                        source.position(source.position()+1);
+                        --targetCapacity;
+                    }else {
+                        break;
+                    }
+                }
+            }
+            return regularLoop;
+        }
+        
+        private int getTrail(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            if(source.hasRemaining()){
+                /*test the following code unit*/
+                char trail = source.get(source.position());
+                if(UTF16.isTrailSurrogate(trail)){
+                    source.position(source.position()+1);
+                    ++nextSourceIndex;
+                    c=UCharacter.getCodePoint((char)c, trail);
+                }
+            } else {
+                /*no more input*/
+                c = -c; /*negative lead surrogate as "incomplete" indicator to avoid c=0 everywhere else*/
+                checkNegative = true;
+            }
+            LoopAfterTrail = true;
+            return regularLoop;
+        }
+        
+        private int regularLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            if(!LoopAfterTrail){
+                /*restore real values*/
+                targetCapacity = target.limit()-target.position();
+                sourceIndex = nextSourceIndex; /*wrong if offsets==null but does not matter*/
+            }
+            /*regular loop for all classes*/
+            while(LoopAfterTrail || source.hasRemaining()){
+                if(LoopAfterTrail || targetCapacity>0){
+                    
+                    if(!LoopAfterTrail){
+                        c = source.get();
+                        ++nextSourceIndex;
+                        
+                        if(c<=0x20){
+                            /*
+                             * ISO C0 control & space:
+                             * Encode directly for MIME compatibility,
+                             * and reset state except for space, to not disrupt compression.
+                             */
+                            if(c!=0x20) {
+                                prev=BOCU1_ASCII_PREV;
+                            }
+                            target.put((byte)c);
+                            if(offsets != null){
+                                offsets.put(sourceIndex++);
+                            }
+                            --targetCapacity;
+                         
+                            sourceIndex=nextSourceIndex;
+                            continue;
+                        }
+                        
+                        if(UTF16.isLeadSurrogate((char)c)){
+                            getTrail(source, target, offsets);
+                            if(checkNegative){
+                                break;
+                            }
+                        }
+                    }
+                        
+                    if(LoopAfterTrail){
+                        LoopAfterTrail = false; 
+                    }
+                    
+                    /*
+                     * all other Unicode code points c==U+0021..U+10ffff
+                     * are encoded with the difference c-prev
+                     *
+                     * a new prev is computed from c,
+                     * placed in the middle of a 0x80-block (for most small scripts) or
+                     * in the middle of the Unihan and Hangul blocks
+                     * to statistically minimize the following difference
+                     */
+                    diff = c- prev;
+                    prev = BOCU1_PREV(c);
+                    if(DIFF_IS_SINGLE(diff)){
+                        target.put((byte)PACK_SINGLE_DIFF(diff));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex++);
+                        }
+                        --targetCapacity;
+                        sourceIndex=nextSourceIndex;
+                        if(c<0x3000){
+                            labelType = fastSingle;
+                            return labelType;
+                        }
+                    } else if(DIFF_IS_DOUBLE(diff) && 2<=targetCapacity){
+                        /*optimize 2 byte case*/
+                        int m = 0;
+                        if(diff>=0){
+                            diff -= BOCU1_REACH_POS_1 +1;
+                            m = diff%BOCU1_TRAIL_COUNT;
+                            diff/=BOCU1_TRAIL_COUNT;
+                            diff+=BOCU1_START_POS_2;
+                        } else {
+                            diff -= BOCU1_REACH_NEG_1;
+                            m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                            diff+=BOCU1_START_NEG_2;
+                        }
+                        target.put((byte)diff);
+                        target.put((byte)BOCU1_TRAIL_TO_BYTE(m));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                        targetCapacity -= 2;
+                        sourceIndex = nextSourceIndex;
+                    } else {
+                        int length; /*will be 2..4*/
+                        diff = packDiff(diff);
+                        length = BOCU1_LENGTH_FROM_PACKED(diff);
+                        
+                        /*write the output character bytes from diff and length*/
+                        /*from the first if in the loop we know that targetCapacity>0*/
+                        if(length<=targetCapacity){
+                            switch(length){
+                                /*each branch falls through the next one*/
+                                case 4:
+                                    target.put((byte)(diff>>24));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 3:
+                                    target.put((byte)(diff>>16));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte)(diff>>8));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    /*case 1 handled above*/
+                                    target.put((byte)diff);
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /*will never occur*/
+                                    break;
+                            }
+                            targetCapacity -= length;
+                            sourceIndex = nextSourceIndex;
+                        } else {
+                            ByteBuffer error = ByteBuffer.wrap(errorBuffer);
+                            /*
+                             * We actually do this backwards here:
+                             * In order to save an intermediate variable, we output
+                             * first to the overflow buffer what does not fit into the
+                             * regular target.
+                             */
+                            /* we know that 1<=targetCapacity<length<=4 */
+                            length-=targetCapacity;
+                            switch(length) {
+                                /* each branch falls through to the next one */
+                            case 3:
+                                error.put((byte)(diff>>16));
+                            case 2:
+                                error.put((byte)(diff>>8));
+                            case 1:
+                                error.put((byte)diff);
+                            default:
+                                /* will never occur */
+                                break;
+                            }
+                            errorBufferLength = length;
+                            
+                            /* now output what fits into the regular target */
+                            diff>>=8*length; /* length was reduced by targetCapacity */
+                            switch(targetCapacity) {
+                                /* each branch falls through to the next one */
+                            case 3:
+                                target.put((byte)(diff>>16));
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            case 2:
+                                target.put((byte)(diff>>8));
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            case 1:
+                                target.put((byte)diff);
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            default:
+                                /* will never occur */
+                                break;
+                            }
+
+                            /* target overflow */
+                            targetCapacity=0;
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                    }
+                } else{
+                    /*target is full*/
+                    cr = CoderResult.OVERFLOW;
+                    break;
+                }
+                   
+            }
+            /*set the converter state back into UConverter*/
+            fromUChar32 = c<0 ? -c :0;
+            fromUnicodeStatus = prev;
+            LabelLoop = false;
+            labelType = fastSingle;
+            return labelType;
+        }
+       
+    }
+    
+    class CharsetDecoderBOCU extends CharsetDecoderICU{
+        public CharsetDecoderBOCU(CharsetICU cs) {
+            super(cs);
+        }
+        
+        int byteIndex;
+        int sourceIndex, nextSourceIndex;
+        int prev, c , diff, count;
+        byte[] bytes;
+        int targetCapacity;
+        CoderResult cr;
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int fastSingle=0;
+        private static final int getTrail=1;
+        private static final int regularLoop=2;
+        private static final int endLoop=3;
+        
+        private boolean LabelLoop;//used to break the while loop
+        private boolean afterTrail; // its value is set to true to ignore code after getTrail:
+        private int labelType;
+        /*
+         * The BOCU-1 converter uses the standard setup code in ucnv.c/ucnv_bld.c.
+         * The UConverter fields are used as follows:
+         *
+         * fromUnicodeStatus    encoder's prev (0 will be interpreted as BOCU1_ASCII_PREV)
+         *
+         * toUnicodeStatus      decoder's prev (0 will be interpreted as BOCU1_ASCII_PREV)
+         * mode                 decoder's incomplete (diff<<2)|count (ignored when toULength==0)
+         */
+
+        /* BOCU-1-from-Unicode conversion functions --------------------------------- */
+
+        
+        
+        /**
+         * Function for BOCU-1 decoder; handles multi-byte lead bytes.
+         *
+         * @param b lead byte;
+         *          BOCU1_MIN<=b<BOCU1_START_NEG_2 or BOCU1_START_POS_2<=b<BOCU1_MAX_LEAD
+         * @return (diff<<2)|count
+         */
+        private int decodeBocu1LeadByte(int b) {
+            int diffValue, countValue;
+
+            if(b >= BOCU1_START_NEG_2) {
+                /* positive difference */
+                if(b < BOCU1_START_POS_3) {
+                    /* two bytes */
+                    diffValue = (b - BOCU1_START_POS_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_POS_1+1;
+                    countValue = 1;
+                } else if(b < BOCU1_START_POS_4) {
+                    /* three bytes */
+                    diffValue = (b-BOCU1_START_POS_3)*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT+BOCU1_REACH_POS_2+1;
+                    countValue = 2;
+                } else {
+                    /* four bytes */
+                    diffValue = BOCU1_REACH_POS_3+1;
+                    countValue = 3;
+                }
+            } else {
+                /* negative difference */
+                if(b >= BOCU1_START_NEG_3) {
+                    /* two bytes */
+                    diffValue=(b -BOCU1_START_NEG_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_1;
+                    countValue=1;
+                } else if(b>BOCU1_MIN) {
+                    /* three bytes */
+                    diffValue=(b - BOCU1_START_NEG_3)*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_2;
+                    countValue = 2;
+                } else {
+                    /* four bytes */
+                    diffValue=-BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT+BOCU1_REACH_NEG_3;
+                    countValue=3;
+                }
+            }
+
+            /* return the state for decoding the trail byte(s) */
+            return (diffValue<<2)|countValue;
+        }
+        
+        /**
+         * Function for BOCU-1 decoder; handles multi-byte trail bytes.
+         *
+         * @param count number of remaining trail bytes including this one
+         * @param b trail byte
+         * @return new delta for diff including b - <0 indicates an error
+         *
+         * @see decodeBocu1
+         */
+        private int decodeBocu1TrailByte(int countValue, int b) {
+            b = b&UConverterConstants.UNSIGNED_BYTE_MASK;
+            if((b)<=0x20) {
+                /* skip some C0 controls and make the trail byte range contiguous */
+                b = bocu1ByteToTrail[b];
+                /* b<0 for an illegal trail byte value will result in return<0 below */
+            } else {
+                //b-= BOCU1_TRAIL_BYTE_OFFSET;
+                b = b - BOCU1_TRAIL_BYTE_OFFSET;
+            }
+
+            /* add trail byte into difference and decrement count */
+            if(countValue==1) {
+                return b;
+            } else if(countValue==2) {
+                return b*BOCU1_TRAIL_COUNT;
+            } else /* count==3 */ {
+                return b*(BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+            }
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush){
+            cr = CoderResult.UNDERFLOW;
+            
+            LabelLoop = true; 
+            afterTrail = false; 
+            labelType = fastSingle; // labelType is set to fastSingle so t
+            
+            /*get the converter state*/
+            prev = toUnicodeStatus;
+            
+            if(prev==0){
+                prev = BOCU1_ASCII_PREV;
+            }
+            diff = mode;
+            count = diff&3;
+            diff>>=2;
+            
+            byteIndex = toULength;
+            bytes = toUBytesArray;
+            
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex=byteIndex==0 ? 0 : -1;
+            nextSourceIndex=0;
+            
+            /* conversion "loop" similar to _SCSUToUnicodeWithOffsets() */
+            if(count>0 && byteIndex>0 && target.position()<target.limit()) {
+                //labelType = getTrail;
+                labelType = getTrail(source, target, offsets);
+            }
+            
+            while(LabelLoop){
+                switch(labelType){
+                    case fastSingle:
+                        labelType = fastSingle(source, target, offsets);
+                        break;
+                    case getTrail:
+                        labelType = getTrail(source, target, offsets);
+                        break;
+                    case regularLoop:
+                        labelType = afterGetTrail(source, target, offsets);
+                        break;
+                    case endLoop:
+                        endLoop(source, target, offsets);
+                        break;
+                }
+            }
+            
+            return cr;
+        }
+        
+        private int fastSingle(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            labelType = regularLoop;
+            /* fast loop for single-byte differences */
+            /* use count as the only loop counter variable */
+            diff = source.limit() - source.position();
+            count = target.limit()-target.position();
+            if(count>diff) {
+                count = diff;
+            }
+            while(count>0) {
+                if(BOCU1_START_NEG_2 <=(c=source.get(source.position())) && c< BOCU1_START_POS_2) {
+                    c = prev + (c-BOCU1_MIDDLE);
+                    if(c<0x3000) {
+                        target.put((char)c);
+                        if(offsets!=null){
+                            offsets.put(nextSourceIndex++);
+                        } 
+                        prev = BOCU1_SIMPLE_PREV(c);
+                    } else {
+                        break;
+                    }
+                } else if((c&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0x20) {
+                    if((c&UConverterConstants.UNSIGNED_BYTE_MASK) != 0x20) {
+                        prev = BOCU1_ASCII_PREV;
+                    }
+                    target.put((char)c);
+                    if(offsets!=null){
+                        offsets.put(nextSourceIndex++);
+                    } 
+                } else {
+                    break;
+                }
+                source.position(source.position()+1);
+                --count;
+            }
+            sourceIndex=nextSourceIndex; /* wrong if offsets==NULL but does not matter */
+            return labelType;
+        }
+        
+        private int getTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            labelType = regularLoop;
+            for(;;) {
+                if(source.position() >= source.limit()) {
+                    labelType = endLoop;
+                    return labelType;
+                }
+                ++nextSourceIndex;
+                c = bytes[byteIndex++] = source.get();
+
+                /* trail byte in any position */
+                c = decodeBocu1TrailByte(count, c);
+                if(c<0) {
+                    cr = CoderResult.malformedForLength(1);
+                    labelType = endLoop;
+                    return labelType;
+                }
+
+                diff+=c;
+                if(--count==0) {
+                    /* final trail byte, deliver a code point */
+                    byteIndex=0;
+                    c = prev + diff;
+                    if(c > 0x10ffff) {
+                        cr = CoderResult.malformedForLength(1);
+                        labelType = endLoop;
+                        return labelType;
+                    }
+                    break;
+                }
+            }
+            afterTrail = true;
+            return labelType;
+            
+        }
+        
+        private int afterGetTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            /* decode a sequence of single and lead bytes */
+            while(afterTrail || source.hasRemaining()) {
+                if(!afterTrail){
+                    if(target.position() >= target.limit()) {
+                        /* target is full */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++nextSourceIndex;
+                    c = source.get()&UConverterConstants.UNSIGNED_BYTE_MASK;
+                    if(BOCU1_START_NEG_2 <= c && c < BOCU1_START_POS_2) {
+                        /* Write a code point directly from a single-byte difference. */
+                        c = prev + (c-BOCU1_MIDDLE);
+                        if(c<0x3000) {
+                            target.put((char)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            prev = BOCU1_SIMPLE_PREV(c);
+                            sourceIndex = nextSourceIndex;
+                            labelType = fastSingle;
+                            return labelType;
+                        }
+                    } else if(c <= 0x20) {
+                        /*
+                         * Direct-encoded C0 control code or space.
+                         * Reset prev for C0 control codes but not for space.
+                         */
+                        if(c != 0x20) {
+                            prev=BOCU1_ASCII_PREV;
+                        }
+                        target.put((char)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex=nextSourceIndex;
+                        continue;
+                    } else if(BOCU1_START_NEG_3 <= c && c < BOCU1_START_POS_3 && source.hasRemaining()) {
+                        /* Optimize two-byte case. */
+                        if(c >= BOCU1_MIDDLE) {
+                            diff=(c - BOCU1_START_POS_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_POS_1 + 1;
+                        } else {
+                            diff=(c-BOCU1_START_NEG_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_1;
+                        }
+
+                        /* trail byte */
+                        ++nextSourceIndex;
+                        c = decodeBocu1TrailByte(1, source.get());
+                        if(c<0 || ((c = prev + diff + c)&UConverterConstants.UNSIGNED_INT_MASK)>0x10ffff) {
+                            bytes[0]= source.get(-2);
+                            bytes[1]= source.get(-1);
+                            byteIndex = 2;
+                            cr = CoderResult.malformedForLength(1);
+                            break;
+                        }
+                    } else if(c == BOCU1_RESET) {
+                        /* only reset the state, no code point */
+                        prev=BOCU1_ASCII_PREV;
+                        sourceIndex=nextSourceIndex;
+                        continue;
+                    } else {
+                        /*
+                         * For multi-byte difference lead bytes, set the decoder state
+                         * with the partial difference value from the lead byte and
+                         * with the number of trail bytes.
+                         */
+                        bytes[0]= (byte)c;
+                        byteIndex = 1;
+
+                        diff = decodeBocu1LeadByte(c);
+                        count = diff&3;
+                        diff>>=2;
+                        getTrail(source, target, offsets);
+                        if(labelType != regularLoop){
+                            return labelType;
+                        }
+                    }
+                }
+                
+                if(afterTrail){
+                    afterTrail = false;
+                }
+                
+                /* calculate the next prev and output c */
+                prev = BOCU1_PREV(c);
+                if(c<=0xffff) {
+                    target.put((char)c);
+                    if(offsets!=null){
+                        offsets.put(sourceIndex);
+                    }
+                } else {
+                    /* output surrogate pair */
+                    target.put((char)UTF16.getLeadSurrogate(c));
+                    if(target.hasRemaining()) {
+                        target.put((char)UTF16.getTrailSurrogate(c));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        charErrorBufferArray[0] = UTF16.getTrailSurrogate(c);
+                        charErrorBufferLength = 1;
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                }
+            }
+            sourceIndex=nextSourceIndex;
+          }
+          labelType = endLoop;
+          return labelType;
+        }
+        
+        private void endLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            if(cr.isMalformed()) {
+                /* set the converter state in UConverter to deal with the next character */
+                toUnicodeStatus = BOCU1_ASCII_PREV;
+                mode = 0;
+            } else {
+                /* set the converter state back into UConverter */
+                toUnicodeStatus=prev;
+                mode=(diff<<2)|count;
+            }
+            toULength=byteIndex;
+            LabelLoop = false;
+        }
+    
+    }
+    
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderBOCU(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderBOCU(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        CharsetICU.getCompleteUnicodeSet(setFillIn);
+    }
+
+}
diff --git a/src/com/ibm/icu/charset/CharsetCESU8.java b/src/com/ibm/icu/charset/CharsetCESU8.java
new file mode 100644
index 0000000..bf2c204
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetCESU8.java
@@ -0,0 +1,26 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * The purpose of this class is to set isCESU8 to true in the super class, and to allow the Charset framework to open
+ * the variant UTF-8 converter without extra setup work. CESU-8 encodes/decodes supplementary characters as 6 bytes
+ * instead of the proper 4 bytes.
+ */
+class CharsetCESU8 extends CharsetUTF8 {
+    public CharsetCESU8(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+            
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetCallback.java b/src/com/ibm/icu/charset/CharsetCallback.java
new file mode 100644
index 0000000..5d9d50e
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetCallback.java
@@ -0,0 +1,430 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CoderResult;
+
+/**
+ * <h2> Callback API for CharsetICU API </h2>
+ * 
+ *  CharsetCallback class defines some error behaviour functions called 
+ *  by CharsetDecoderICU and CharsetEncoderICU. The class also provides
+ *  the facility by which clients can write their own callbacks.
+ *
+ *  These functions, although public, should NEVER be called directly.
+ *  They should be used as parameters to the onUmappableCharacter() and 
+ *  onMalformedInput() methods, to set the behaviour of a converter
+ *  when it encounters UNMAPPED/INVALID sequences.
+ *  Currently the only way to set callbacks is by using CodingErrorAction.
+ *  In the future we will provide set methods on CharsetEncoder and CharsetDecoder
+ *  that will accept CharsetCallback fields.
+ *
+ * @draft ICU 3.6
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class CharsetCallback {
+   /**
+     * FROM_U, TO_U context options for sub callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String SUB_STOP_ON_ILLEGAL = "i";
+
+    /**
+     * FROM_U, TO_U context options for skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String SKIP_STOP_ON_ILLEGAL = "i";
+
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) 
+     * @draft ICU 3.6
+     */
+    /*public*/ static final String ESCAPE_ICU  = null;
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to JAVA (\\uXXXX)
+     * @draft ICU 3.6
+     */
+    /*public*/ static final String ESCAPE_JAVA     =  "J";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to C (\\uXXXX \\UXXXXXXXX)
+     * TO_U_CALLBACK_ESCAPE option to escape the character value accoding to C (\\xXXXX)
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_C        = "C";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
+     * TO_U_CALLBACK_ESCAPE context option to escape the character value accoding to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_XML_DEC  = "D";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
+     * TO_U_CALLBACK_ESCAPE context option to escape the character value according to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_XML_HEX  = "X";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_UNICODE  = "U";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_CSS2  = "S";
+
+    /**
+     * Decoder Callback interface
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public interface Decoder {
+        /**
+         * This function is called when the bytes in the source cannot be handled,
+         * and this function is meant to handle or fix the error if possible.
+         * 
+         * @return Result of decoding action. This returned object is set to an error
+         *  if this function could not handle the conversion.
+         * @draft ICU 3.6
+         * @provisional This API might change or be removed in a future release.
+         */
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                                char[] buffer, int length, CoderResult cr);
+    }
+    /**
+     * Encoder Callback interface
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public interface Encoder {
+        /**
+         * This function is called when the Unicode characters in the source cannot be handled,
+         * and this function is meant to handle or fix the error if possible.
+         * @return Result of decoding action. This returned object is set to an error
+         *  if this function could not handle the conversion.
+         * @draft ICU 3.6
+         * @provisional This API might change or be removed in a future release.
+         */
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                                char[] buffer, int length, int cp, CoderResult cr);
+    }    
+    /**
+     * Skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_SKIP = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            if(context==null){
+                return CoderResult.UNDERFLOW;
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                    return CoderResult.UNDERFLOW;
+                }
+            }
+            return cr;
+        }
+    };
+    /**
+     * Skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_SKIP = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            if(context==null){
+                return CoderResult.UNDERFLOW;
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                    return CoderResult.UNDERFLOW;
+                }
+            }
+            return cr;
+        }
+    };
+    /**
+     * Write substitute callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_SUBSTITUTE = new Encoder(){        
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            if(context==null){
+                return encoder.cbFromUWriteSub(encoder, source, target, offsets);
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                   return encoder.cbFromUWriteSub(encoder, source, target, offsets);
+                }
+            }
+            return cr;
+        }
+    };
+    private static final char[] kSubstituteChar1 = new char[]{0x1A};
+    private static final char[] kSubstituteChar = new char[] {0xFFFD};
+    /**
+     * Write substitute callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_SUBSTITUTE  = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+
+            CharsetICU cs = (CharsetICU) decoder.charset();
+            /* could optimize this case, just one uchar */
+            if(decoder.invalidCharLength == 1 && cs.subChar1 != 0) {
+                return CharsetDecoderICU.toUWriteUChars(decoder, kSubstituteChar1, 0, 1, target, offsets, source.position());
+            } else {
+                return CharsetDecoderICU.toUWriteUChars(decoder, kSubstituteChar, 0, 1, target, offsets, source.position());
+            }
+        }
+    };
+    /**
+     * Stop callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_STOP = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            return cr;
+        }
+    };
+    /**
+     * Stop callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_STOP = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            return cr;
+        }
+    };  
+    private static final int VALUE_STRING_LENGTH = 32;
+    private static final char UNICODE_PERCENT_SIGN_CODEPOINT    = 0x0025;
+    private static final char UNICODE_U_CODEPOINT               = 0x0055;
+    private static final char UNICODE_X_CODEPOINT               = 0x0058;
+    private static final char UNICODE_RS_CODEPOINT              = 0x005C;
+    private static final char UNICODE_U_LOW_CODEPOINT           = 0x0075;
+    private static final char UNICODE_X_LOW_CODEPOINT           = 0x0078;
+    private static final char UNICODE_AMP_CODEPOINT             = 0x0026;
+    private static final char UNICODE_HASH_CODEPOINT            = 0x0023;
+    private static final char UNICODE_SEMICOLON_CODEPOINT       = 0x003B;
+    private static final char UNICODE_PLUS_CODEPOINT            = 0x002B;
+    private static final char UNICODE_LEFT_CURLY_CODEPOINT      = 0x007B;
+    private static final char UNICODE_RIGHT_CURLY_CODEPOINT     = 0x007D;
+    private static final char UNICODE_SPACE_CODEPOINT           = 0x0020;
+    /**
+     * Write escape callback
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_ESCAPE = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            char[] valueString = new char[VALUE_STRING_LENGTH];
+            int valueStringLength = 0;
+            int i = 0;
+            
+            cr = CoderResult.UNDERFLOW;
+            
+            if (context == null || !(context instanceof String)) {
+                while (i < length) {
+                    valueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+                    valueString[valueStringLength++] = UNICODE_U_CODEPOINT; /* adding U */
+                    valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                }
+            } else {
+                if (((String)context).equals(ESCAPE_JAVA)) {
+                    while (i < length) {
+                        valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                        valueString[valueStringLength++] = UNICODE_U_LOW_CODEPOINT; /* adding u */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                } else if (((String)context).equals(ESCAPE_C)) {
+                    valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                    
+                    if (length == 2) {
+                        valueString[valueStringLength++] = UNICODE_U_CODEPOINT; /* adding U */
+                        valueStringLength = itou(valueString, valueStringLength, cp, 16, 8);
+                    } else {
+                        valueString[valueStringLength++] = UNICODE_U_LOW_CODEPOINT; /* adding u */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                } else if (((String)context).equals(ESCAPE_XML_DEC)) {
+                    valueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;   /* adding & */
+                    valueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;  /* adding # */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength, cp, 10, 0);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 10, 0);
+                    }
+                    valueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+                } else if (((String)context).equals(ESCAPE_XML_HEX)) {
+                    valueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;   /* adding & */
+                    valueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;  /* adding # */
+                    valueString[valueStringLength++] = UNICODE_X_LOW_CODEPOINT; /* adding x */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength, cp, 16, 0);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 0);
+                    }
+                    valueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+                } else if (((String)context).equals(ESCAPE_UNICODE)) {
+                    valueString[valueStringLength++] = UNICODE_LEFT_CURLY_CODEPOINT;    /* adding { */
+                    valueString[valueStringLength++] = UNICODE_U_CODEPOINT;             /* adding U */
+                    valueString[valueStringLength++] = UNICODE_PLUS_CODEPOINT;          /* adding + */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength,cp, 16, 4);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                    valueString[valueStringLength++] = UNICODE_RIGHT_CURLY_CODEPOINT;   /* adding } */
+                } else if (((String)context).equals(ESCAPE_CSS2)) {
+                    valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                    valueStringLength += itou(valueString, valueStringLength, cp, 16, 0);
+                    /* Always add space character, because the next character might be whitespace,
+                       which would erroneously be considered the termination of the escape sequence. */
+                    valueString[valueStringLength++] = UNICODE_SPACE_CODEPOINT;
+                } else {
+                    while (i < length) {
+                        valueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
+                        valueString[valueStringLength++] = UNICODE_U_CODEPOINT;             /* adding U */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                }
+            }
+            
+            /* reset the error */
+            cr = CoderResult.UNDERFLOW;
+            
+            cr = encoder.cbFromUWriteUChars(encoder, CharBuffer.wrap(valueString, 0, valueStringLength), target, offsets);
+            return cr;
+        }
+    };
+    /**
+     * Write escape callback
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_ESCAPE = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            char[] uniValueString = new char[VALUE_STRING_LENGTH];
+            int valueStringLength = 0;
+            int i = 0;
+            
+            if (context == null || !(context instanceof String)) {
+                while (i < length) {
+                    uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                    uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                    valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                }
+            } else {
+                if (((String)context).equals(ESCAPE_XML_DEC)) {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;    /* adding & */
+                        uniValueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;   /* adding # */
+                        valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 10, 0);
+                        uniValueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT;  /* adding ; */
+                    }
+                } else if (((String)context).equals(ESCAPE_XML_HEX)) {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;    /* adding & */
+                        uniValueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;   /* adding # */
+                        uniValueString[valueStringLength++] = UNICODE_X_LOW_CODEPOINT;  /* adding x */
+                        valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 0);
+                        uniValueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT;  /* adding ; */
+                    }
+                } else if (((String)context).equals(ESCAPE_C)) {
+                    uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                    uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                    valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                } else {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                        uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                        itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                        valueStringLength += 2;
+                    }
+                }
+            }
+            /* reset the error */
+            cr = CoderResult.UNDERFLOW;
+            
+            CharsetDecoderICU.toUWriteUChars(decoder, uniValueString, 0, valueStringLength, target, offsets, 0);
+            
+            return cr;
+        }
+    };  
+    /***
+     * Java port of uprv_itou() in ICU4C used by TO_U_CALLBACK_ESCAPE and FROM_U_CALLBACK_ESCAPE.
+     * Fills in a char string with the radix-based representation of a number padded with zeroes
+     * to minwidth.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    private static final int itou(char[] buffer, int sourceIndex, int i, int radix, int minwidth) {
+        int length = 0;
+        int digit;
+        int j;
+        char temp;
+        
+        do {
+            digit = (int)(i % radix);
+            buffer[sourceIndex + length++] = (char)(digit <= 9 ? (0x0030+digit) : (0x0030+digit+7));
+            i = i/radix;
+        } while (i != 0 && (sourceIndex + length) < buffer.length);
+        
+        while (length < minwidth) {
+            buffer[sourceIndex + length++] = (char)0x0030; /* zero padding */
+        }
+        /* reverses the string */
+        for (j = 0; j < (length / 2); j++) {
+            temp = buffer[(sourceIndex + length - 1) - j];
+            buffer[(sourceIndex + length-1) -j] = buffer[sourceIndex + j];
+            buffer[sourceIndex + j] = temp;
+        }
+        
+        return length;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetDecoderICU.java b/src/com/ibm/icu/charset/CharsetDecoderICU.java
new file mode 100644
index 0000000..af26085
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetDecoderICU.java
@@ -0,0 +1,720 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.impl.Assert;
+
+/**
+ * An abstract class that provides framework methods of decoding operations for concrete
+ * subclasses. 
+ * In the future this class will contain API that will implement converter sematics of ICU4C.
+ * @stable ICU 3.6
+ */
+public abstract class CharsetDecoderICU extends CharsetDecoder{ 
+
+    int    toUnicodeStatus;
+    byte[] toUBytesArray = new byte[128];
+    int    toUBytesBegin = 0;
+    int    toULength;
+    char[] charErrorBufferArray = new char[128];
+    int    charErrorBufferLength;
+    int    charErrorBufferBegin;
+    char[] invalidCharBuffer = new char[128];
+    int    invalidCharLength;
+    
+    /* maximum number of indexed bytes */
+    private static final int EXT_MAX_BYTES = 0x1f;
+
+    /* store previous UChars/chars to continue partial matches */
+    byte[] preToUArray = new byte[EXT_MAX_BYTES];
+    int    preToUBegin;
+    int    preToULength;       /* negative: replay */
+    int    preToUFirstLength;  /* length of first character */
+    int mode;
+    
+    Object toUContext = null;
+    private CharsetCallback.Decoder onUnmappableCharacter = CharsetCallback.TO_U_CALLBACK_STOP;
+    private CharsetCallback.Decoder onMalformedInput = CharsetCallback.TO_U_CALLBACK_STOP;
+    CharsetCallback.Decoder toCharErrorBehaviour = new CharsetCallback.Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, ByteBuffer source,
+                CharBuffer target, IntBuffer offsets, char[] buffer, int length, CoderResult cr) {
+            if (cr.isUnmappable()) {
+                return onUnmappableCharacter.call(decoder, context, source, target, offsets, buffer,
+                        length, cr);
+            } else /* if (cr.isMalformed()) */ {
+                return onMalformedInput.call(decoder, context, source, target, offsets, buffer,
+                        length, cr);
+            }
+            // return CharsetCallback.TO_U_CALLBACK_STOP.call(decoder, context, source, target, offsets, buffer, length, cr);
+        }
+    };
+                                              
+    // exist to keep implOnMalformedInput and implOnUnmappableInput from being too recursive
+    private boolean malformedInputCalled = false;
+    private boolean unmappableCharacterCalled = false;
+    
+    /*
+     * Construct a CharsetDecorderICU based on the information provided from a CharsetICU object.
+     * 
+     * @param cs The CharsetICU object containing information about how to charset to decode.
+     */
+    CharsetDecoderICU(CharsetICU cs) {
+        super(cs, (float) (1/(float)cs.maxCharsPerByte), cs.maxCharsPerByte);
+    }
+
+    /*
+     * Is this Decoder allowed to use fallbacks? A fallback mapping is a mapping
+     * that will convert a byte sequence to a Unicode codepoint sequence, but
+     * the encoded Unicode codepoint sequence will round trip convert to a different
+     * byte sequence. In ICU, this is can be called a reverse fallback.
+     * @return A boolean
+     */
+    final boolean isFallbackUsed() {
+        return true;
+    }
+    
+    /**
+     * Fallback is currently always used by icu4j decoders.
+     */
+    static final boolean isToUUseFallback() {
+        return isToUUseFallback(true);
+    }
+    
+    /**
+     * Fallback is currently always used by icu4j decoders.
+     */
+    static final boolean isToUUseFallback(boolean iUseFallback) {
+        return true;
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected final void implOnMalformedInput(CodingErrorAction newAction) {
+        // don't run infinitely
+        if (malformedInputCalled)
+            return;
+        
+        // if we get a replace, do not let the nio replace
+        if (newAction == CodingErrorAction.REPLACE) {
+            malformedInputCalled = true;
+            super.onMalformedInput(CodingErrorAction.IGNORE);
+            malformedInputCalled = false;
+        }
+        
+        onMalformedInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected final void implOnUnmappableCharacter(CodingErrorAction newAction) {
+        // dont run infinitely
+        if (unmappableCharacterCalled)
+            return;
+        
+        // if we get a replace, do not let the nio replace
+        if (newAction == CodingErrorAction.REPLACE) {
+            unmappableCharacterCalled = true;
+            super.onUnmappableCharacter(CodingErrorAction.IGNORE);
+            unmappableCharacterCalled = false;
+        }
+        
+        onUnmappableCharacter = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the callback encoder method and context to be used if an illegal sequence is encounterd.
+     * You would normally call this twice to set both the malform and unmappable error. In this case,
+     * newContext should remain the same since using a different newContext each time will negate the last
+     * one used.
+     * @param err CoderResult
+     * @param newCallback CharsetCallback.Encoder
+     * @param newContext Object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setToUCallback(CoderResult err, CharsetCallback.Decoder newCallback, Object newContext) {
+        if (err.isMalformed()) {
+            onMalformedInput = newCallback;
+        } else if (err.isUnmappable()) {
+            onUnmappableCharacter = newCallback;
+        } else {
+            /* Error: Only malformed and unmappable are handled. */
+        }
+        
+        if (toUContext == null || !toUContext.equals(newContext)) {
+            toUContext = newContext;
+        }
+    }
+    
+    private static CharsetCallback.Decoder getCallback(CodingErrorAction action){
+        if(action==CodingErrorAction.REPLACE){
+            return CharsetCallback.TO_U_CALLBACK_SUBSTITUTE;
+        }else if(action==CodingErrorAction.IGNORE){
+            return CharsetCallback.TO_U_CALLBACK_SKIP;
+        }else /* if(action==CodingErrorAction.REPORT) */ {
+            return CharsetCallback.TO_U_CALLBACK_STOP;
+        }
+    }
+    private final ByteBuffer EMPTY = ByteBuffer.allocate(0);
+    /**
+     * Flushes any characters saved in the converter's internal buffer and
+     * resets the converter.
+     * @param out action to be taken
+     * @return result of flushing action and completes the decoding all input. 
+     *         Returns CoderResult.UNDERFLOW if the action succeeds.
+     * @stable ICU 3.6
+     */
+    protected final CoderResult implFlush(CharBuffer out) {
+        return decode(EMPTY, out, null, true);
+    }
+    
+    /**
+     * Resets the to Unicode mode of converter
+     * @stable ICU 3.6
+     */
+    protected void implReset() {
+        toUnicodeStatus = 0 ;
+        toULength = 0;
+        charErrorBufferLength = 0;
+        charErrorBufferBegin = 0;
+        
+        /* store previous UChars/chars to continue partial matches */
+        preToUBegin = 0;
+        preToULength = 0;       /* negative: replay */
+        preToUFirstLength = 0; 
+
+        mode = 0;
+    }
+      
+    /**
+     * Decodes one or more bytes. The default behaviour of the converter
+     * is stop and report if an error in input stream is encountered. 
+     * To set different behaviour use @see CharsetDecoder.onMalformedInput()
+     * This  method allows a buffer by buffer conversion of a data stream.  
+     * The state of the conversion is saved between calls to convert.  
+     * Among other things, this means multibyte input sequences can be 
+     * split between calls. If a call to convert results in an Error, the 
+     * conversion may be continued by calling convert again with suitably 
+     * modified parameters.All conversions should be finished with a call to 
+     * the flush method.
+     * @param in buffer to decode
+     * @param out buffer to populate with decoded result
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     * @stable ICU 3.6
+     */
+    protected CoderResult decodeLoop(ByteBuffer in,CharBuffer out){
+        if(in.remaining() < toUCountPending()){
+            return CoderResult.UNDERFLOW;
+        }
+//        if (!in.hasRemaining()) {
+//            toULength = 0;
+//            return CoderResult.UNDERFLOW;
+//        }
+        
+        in.position(in.position() + toUCountPending());
+        
+        /* do the conversion */
+        CoderResult ret = decode(in, out, null, false);
+
+        // ok was there input held in the previous invocation of decodeLoop 
+        // that resulted in output in this invocation?
+        in.position(in.position() - toUCountPending());
+        
+        return ret;
+    }
+
+    /*
+     * Implements the ICU semantic for decode operation
+     * @param in The input byte buffer
+     * @param out The output character buffer
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     */
+    abstract CoderResult decodeLoop(ByteBuffer in, CharBuffer out, IntBuffer offsets, boolean flush);
+    
+    /*
+     * Implements the ICU semantic for decode operation
+     * @param source The input byte buffer
+     * @param target The output character buffer
+     * @param offsets
+     * @param flush true if, and only if, the invoker can provide no
+     *  additional input bytes beyond those in the given buffer.
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     */
+    final CoderResult decode(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+    
+        /* check parameters */
+        if (target == null || source == null) {
+            throw new IllegalArgumentException();
+        }
+        
+        /*
+         * Make sure that the buffer sizes do not exceed the number range for
+         * int32_t because some functions use the size (in units or bytes)
+         * rather than comparing pointers, and because offsets are int32_t values.
+         *
+         * size_t is guaranteed to be unsigned and large enough for the job.
+         *
+         * Return with an error instead of adjusting the limits because we would
+         * not be able to maintain the semantics that either the source must be
+         * consumed or the target filled (unless an error occurs).
+         * An adjustment would be sourceLimit=t+0x7fffffff; for example.
+         */
+            /*agljport:fix
+        if(
+            ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s) ||
+            ((size_t)(targetLimit-t)>(size_t)0x3fffffff && targetLimit>t)
+        ) {
+            *err=U_ILLEGAL_ARGUMENT_ERROR;
+            return;
+        }
+            */
+        
+        /* flush the target overflow buffer */
+        if (charErrorBufferLength > 0) {
+            int i = 0;
+            do {
+                if (!target.hasRemaining()) {
+                    /* the overflow buffer contains too much, keep the rest */
+                    int j = 0;
+
+                    do {
+                        charErrorBufferArray[j++] = charErrorBufferArray[i++];
+                    } while (i < charErrorBufferLength);
+
+                    charErrorBufferLength = (byte) j;
+                    return CoderResult.OVERFLOW;
+                }
+
+                /* copy the overflow contents to the target */
+                target.put(charErrorBufferArray[i++]);
+                if (offsets != null) {
+                    offsets.put(-1); /* no source index available for old output */
+                }
+            } while (i < charErrorBufferLength);
+
+            /* the overflow buffer is completely copied to the target */
+            charErrorBufferLength = 0;
+        }
+    
+        if (!flush && !source.hasRemaining() && preToULength >= 0) {
+            /* the overflow buffer is emptied and there is no new input: we are done */
+            return CoderResult.UNDERFLOW;
+        }
+    
+        /*
+         * Do not simply return with a buffer overflow error if
+         * !flush && t==targetLimit
+         * because it is possible that the source will not generate any output.
+         * For example, the skip callback may be called;
+         * it does not output anything.
+         */
+        
+        return toUnicodeWithCallback(source, target, offsets, flush);
+    }
+
+    /* Currently, we are not using offsets in ICU4J. */
+    /* private void updateOffsets(IntBuffer offsets,int length, int sourceIndex, int errorInputLength) {
+        int limit;
+        int delta, offset;
+
+        if(sourceIndex>=0) {
+            /*
+             * adjust each offset by adding the previous sourceIndex
+             * minus the length of the input sequence that caused an
+             * error, if any
+             */
+       /*     delta=sourceIndex-errorInputLength;
+        } else {
+            /*
+             * set each offset to -1 because this conversion function
+             * does not handle offsets
+             */
+        /*    delta=-1;
+        }
+        limit=offsets.position()+length;
+        if(delta==0) {
+            /* most common case, nothing to do */
+        /* } else if(delta>0) {
+            /* add the delta to each offset (but not if the offset is <0) */
+        /*    while(offsets.position()<limit) {
+                offset=offsets.get(offsets.position());
+                if(offset>=0) {
+                    offsets.put(offset+delta);
+                }
+                //FIXME: ++offsets;
+            }
+        } else /* delta<0 */ /* {
+            /*
+             * set each offset to -1 because this conversion function
+             * does not handle offsets
+             * or the error input sequence started in a previous buffer
+             */
+        /*    while(offsets.position()<limit) {
+                offsets.put(-1);
+            }
+        }
+    } */
+    final CoderResult toUnicodeWithCallback(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush){
+        
+        int sourceIndex;
+        int errorInputLength;
+        boolean converterSawEndOfInput, calledCallback;
+        //int t=target.position();
+        int s=source.position();
+        /* variables for m:n conversion */
+        ByteBuffer replayArray = ByteBuffer.allocate(EXT_MAX_BYTES);
+        int replayArrayIndex = 0;
+            
+        ByteBuffer realSource=null;
+        boolean realFlush=false;
+        int realSourceIndex=0;
+    
+
+        CoderResult cr = CoderResult.UNDERFLOW;
+        
+        /* get the converter implementation function */
+        sourceIndex=0;
+
+        if(preToULength>=0) {
+            /* normal mode */
+        } else {
+            /*
+             * Previous m:n conversion stored source units from a partial match
+             * and failed to consume all of them.
+             * We need to "replay" them from a temporary buffer and convert them first.
+             */
+            realSource=source;
+            realFlush=flush;
+            realSourceIndex=sourceIndex;
+            //UConverterUtility.uprv_memcpy(replayArray, replayBegin, preToUArray, preToUBegin, -preToULength);
+            replayArray.put(preToUArray,0, -preToULength);
+            source=replayArray;
+            source.position(0);
+            source.limit(replayArrayIndex-preToULength);
+            flush=false;
+            sourceIndex=-1;
+            preToULength=0;
+        }
+    
+        /*
+         * loop for conversion and error handling
+         *
+         * loop {
+         *   convert
+         *   loop {
+         *     update offsets
+         *     handle end of input
+         *     handle errors/call callback
+         *   }
+         * }
+         */
+        for(;;) {
+
+            /* convert */
+            cr = decodeLoop(source, target, offsets, flush);
+
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv->preToULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput= (cr.isUnderflow() && flush && source.remaining()==0 && toULength == 0);
+            
+            /* no callback called yet for this iteration */
+            calledCallback=false;
+    
+            /* no sourceIndex adjustment for conversion, only for callback output */
+            errorInputLength=0;
+    
+            /*
+             * loop for offsets and error handling
+             *
+             * iterates at most 3 times:
+             * 1. to clean up after the conversion function
+             * 2. after the callback
+             * 3. after the callback again if there was truncated input
+             */
+            for(;;) {
+                /* update offsets if we write any */
+                /* Currently offsets are not being used in ICU4J */
+                /* if(offsets!=null) {
+
+                    int length=(target.position()-t);
+                    if(length>0) {
+                        updateOffsets(offsets, length, sourceIndex, errorInputLength);
+    
+                                            
+                        /*
+                         * if a converter handles offsets and updates the offsets
+                         * pointer at the end, then pArgs->offset should not change
+                         * here;
+                         * however, some converters do not handle offsets at all
+                         * (sourceIndex<0) or may not update the offsets pointer
+                         */
+                        //TODO: pArgs->offsets=offsets+=length;
+                  /*  }
+    
+                    if(sourceIndex>=0) {
+                        sourceIndex+=(source.position()-s);
+                    }
+                                    
+                } */
+    
+                if(preToULength<0) {
+                    /*
+                     * switch the source to new replay units (cannot occur while replaying)
+                     * after offset handling and before end-of-input and callback handling
+                     */
+                    if(realSource==null)
+                                    {
+                        realSource=source;
+                        realFlush=flush;
+                        realSourceIndex=sourceIndex;
+    
+                        //UConverterUtility.uprv_memcpy(replayArray, replayBegin, preToUArray, preToUBegin, -preToULength);
+                        replayArray.put(preToUArray,0, -preToULength);
+
+                        source=replayArray;
+                        source.limit(replayArrayIndex-preToULength);
+                        flush=false;
+                        if((sourceIndex+=preToULength)<0) {
+                            sourceIndex=-1;
+                        }
+    
+                        preToULength=0;
+                    } else {
+                        /* see implementation note before _fromUnicodeWithCallback() */
+                        //agljport:todo U_ASSERT(realSource==NULL);
+                       Assert.assrt(realSource==null);
+                    }
+                }
+    
+                /* update pointers */
+                s=source.position();
+                //t=target.position();
+    
+                if(cr.isUnderflow()) {
+                    if(s<source.limit())
+                                    {
+                        /*
+                         * continue with the conversion loop while there is still input left
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        break;
+                    } else if(realSource!=null) {
+                        /* switch back from replaying to the real source and continue */
+                        source = realSource;
+                        flush=realFlush;
+                        sourceIndex=realSourceIndex;
+                        realSource=null;
+                        break;
+                    } else if(flush && toULength>0) {
+                        /*
+                         * the entire input stream is consumed
+                         * and there is a partial, truncated input sequence left
+                         */
+    
+                        /* inject an error and continue with callback handling */
+                        cr = CoderResult.malformedForLength(toULength);
+                        calledCallback=false; /* new error condition */
+                    } else {
+                        /* input consumed */
+                        if(flush) {
+                            /*
+                             * return to the conversion loop once more if the flush
+                             * flag is set and the conversion function has not
+                             * successfully processed the end of the input yet
+                             *
+                             * (continue converting by breaking out of only the inner loop)
+                             */
+                            if(!converterSawEndOfInput) {
+                                break;
+                            }
+    
+                            /* reset the converter without calling the callback function */
+                            implReset();
+                        }
+    
+                        /* done successfully */
+                        return cr;
+                    }
+                }
+    
+                /* U_FAILURE(*err) */
+                {
+    
+                    if( calledCallback || cr.isOverflow() ||
+                        (cr.isMalformed() && cr.isUnmappable())
+                      ) {
+                        /*
+                         * the callback did not or cannot resolve the error:
+                         * set output pointers and return
+                         *
+                         * the check for buffer overflow is redundant but it is
+                         * a high-runner case and hopefully documents the intent
+                         * well
+                         *
+                         * if we were replaying, then the replay buffer must be
+                         * copied back into the UConverter
+                         * and the real arguments must be restored
+                         */
+                        if(realSource!=null) {
+                            int length;
+                            Assert.assrt(preToULength==0);
+                            length=(int)(source.limit()-source.position());
+                            if(length>0) {
+                                //UConverterUtility.uprv_memcpy(preToUArray, preToUBegin, pArgs.sourceArray, pArgs.sourceBegin, length);
+                                source.get(preToUArray, preToUBegin, length);
+                                preToULength=(byte)-length;
+                            }
+    
+                            source=realSource;
+                            flush=realFlush;
+                        }
+                        return cr;
+                    }
+                }
+    
+                /* copy toUBytes[] to invalidCharBuffer[] */
+                errorInputLength=invalidCharLength=toULength;
+                if(errorInputLength>0) {
+                    copy(toUBytesArray, 0, invalidCharBuffer, 0, errorInputLength);
+                }
+    
+                /* set the converter state to deal with the next character */
+                toULength=0;
+    
+                /* call the callback function */
+                cr = toCharErrorBehaviour.call(this, toUContext, source, target, offsets, invalidCharBuffer, errorInputLength, cr);
+                /*
+                 * loop back to the offset handling
+                 *
+                 * this flag will indicate after offset handling
+                 * that a callback was called;
+                 * if the callback did not resolve the error, then we return
+                 */
+                calledCallback=true;
+            }
+        }
+    }
+
+    /*
+     * Returns the number of chars held in the converter's internal state
+     * because more input is needed for completing the conversion. This function is 
+     * useful for mapping semantics of ICU's converter interface to those of iconv,
+     * and this information is not needed for normal conversion.
+     * @return The number of chars in the state. -1 if an error is encountered.
+     */
+    /*public*/ int toUCountPending()    {
+        if(preToULength > 0){
+            return preToULength ;
+        } else if(preToULength < 0){
+            return -preToULength;
+        } else if(toULength > 0){
+            return toULength;
+        } else {
+            return 0;
+        }
+    }
+    
+
+    private void copy(byte[] src, int srcOffset, char[] dst, int dstOffset, int length) {
+        for(int i=srcOffset; i<length; i++){
+            dst[dstOffset++]=(char)src[srcOffset++];
+        }
+    }
+    /*
+     * ONLY used by ToU callback functions.
+     * This function will write out the specified characters to the target
+     * character buffer.
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    static final CoderResult toUWriteUChars( CharsetDecoderICU cnv,
+                                                char[] ucharsArray, int ucharsBegin, int length,  
+                                                CharBuffer target, IntBuffer offsets, int sourceIndex) {
+        
+        CoderResult cr = CoderResult.UNDERFLOW;
+        
+        /* write UChars */
+        if(offsets==null) {
+            while(length>0 && target.hasRemaining()) {
+                target.put(ucharsArray[ucharsBegin++]);
+                --length;
+            }
+
+        } else {
+            /* output with offsets */
+            while(length>0 && target.hasRemaining()) {
+                target.put(ucharsArray[ucharsBegin++]);
+                offsets.put(sourceIndex);
+                --length;
+            }
+        }
+        /* write overflow */
+        if(length>0) {        
+            cnv.charErrorBufferLength= 0;
+            cr = CoderResult.OVERFLOW;
+            do {
+                cnv.charErrorBufferArray[cnv.charErrorBufferLength++]=ucharsArray[ucharsBegin++];
+            } while(--length>0);
+        }
+        return cr;
+    }
+    /*
+     * This function will write out the Unicode substitution character to the
+     * target character buffer.
+     * Sub classes to override this method if required
+     * @param decoder
+     * @param source
+     * @param target
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    /* Note: Currently, this method is not being used because the callback method calls toUWriteUChars with
+     * the substitution characters. Will leave in here for the time being. To be removed later. (4.0)
+     */
+     /*CoderResult cbToUWriteSub(CharsetDecoderICU decoder, 
+                                        ByteBuffer source, CharBuffer target, 
+                                        IntBuffer offsets){
+        String sub = decoder.replacement();
+        CharsetICU cs = (CharsetICU) decoder.charset();
+        if (decoder.invalidCharLength==1 && cs.subChar1 != 0x00) {
+            char[] subArr = new char[] { 0x1a };
+            return CharsetDecoderICU.toUWriteUChars(decoder, subArr, 0, sub
+                    .length(), target, offsets, source.position());
+        } else {
+            return CharsetDecoderICU.toUWriteUChars(decoder, sub.toCharArray(),
+                    0, sub.length(), target, offsets, source.position());
+            
+        }
+    }*/
+}
diff --git a/src/com/ibm/icu/charset/CharsetEncoderICU.java b/src/com/ibm/icu/charset/CharsetEncoderICU.java
new file mode 100644
index 0000000..73ce459
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetEncoderICU.java
@@ -0,0 +1,922 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An abstract class that provides framework methods of decoding operations for concrete
+ * subclasses. 
+ * In the future this class will contain API that will implement converter semantics of ICU4C.
+ * @stable ICU 3.6
+ */
+public abstract class CharsetEncoderICU extends CharsetEncoder {
+
+    /* this is used in fromUnicode DBCS tables as an "unassigned" marker */
+    static final char MISSING_CHAR_MARKER = '\uFFFF';
+
+    byte[] errorBuffer = new byte[30];
+
+    int errorBufferLength = 0;
+
+    /** these are for encodeLoopICU */
+    int fromUnicodeStatus;
+
+    int fromUChar32;
+
+    boolean useSubChar1;
+
+    boolean useFallback;
+
+    /* maximum number of indexed UChars */
+    static final int EXT_MAX_UCHARS = 19;
+
+    /* store previous UChars/chars to continue partial matches */
+    int preFromUFirstCP; /* >=0: partial match */
+
+    char[] preFromUArray = new char[EXT_MAX_UCHARS];
+
+    int preFromUBegin;
+
+    int preFromULength; /* negative: replay */
+
+    char[] invalidUCharBuffer = new char[2];
+
+    int invalidUCharLength;
+
+    Object fromUContext;
+
+    private CharsetCallback.Encoder onUnmappableInput = CharsetCallback.FROM_U_CALLBACK_STOP;
+
+    private CharsetCallback.Encoder onMalformedInput = CharsetCallback.FROM_U_CALLBACK_STOP;
+
+    CharsetCallback.Encoder fromCharErrorBehaviour = new CharsetCallback.Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context,
+                CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                char[] buffer, int length, int cp, CoderResult cr) {
+            if (cr.isUnmappable()) {
+                return onUnmappableInput.call(encoder, context, source, target,
+                        offsets, buffer, length, cp, cr);
+            } else /* if (cr.isMalformed()) */ {
+                return onMalformedInput.call(encoder, context, source, target,
+                        offsets, buffer, length, cp, cr);
+            }
+            // return CharsetCallback.FROM_U_CALLBACK_STOP.call(encoder, context, source, target, offsets, buffer, length, cp, cr);
+
+        }
+    };
+
+    /*
+     * Construcs a new encoder for the given charset
+     * 
+     * @param cs
+     *            for which the decoder is created
+     * @param replacement
+     *            the substitution bytes
+     */
+    CharsetEncoderICU(CharsetICU cs, byte[] replacement) {
+        super(cs, (cs.minBytesPerChar + cs.maxBytesPerChar) / 2,
+                cs.maxBytesPerChar, replacement);
+    }
+
+    /**
+     * Is this Encoder allowed to use fallbacks? A fallback mapping is a mapping
+     * that will convert a Unicode codepoint sequence to a byte sequence, but
+     * the encoded byte sequence will round trip convert to a different
+     * Unicode codepoint sequence.
+     * @return true if the converter uses fallback, false otherwise.
+     * @stable ICU 3.8
+     */
+    public boolean isFallbackUsed() {
+        return useFallback;
+    }
+
+    /**
+     * Sets whether this Encoder can use fallbacks?
+     * @param usesFallback true if the user wants the converter to take
+     *  advantage of the fallback mapping, false otherwise.
+     * @stable ICU 3.8
+     */
+    public void setFallbackUsed(boolean usesFallback) {
+        useFallback = usesFallback;
+    }
+
+    /*
+     * Use fallbacks from Unicode to codepage when useFallback or for private-use code points
+     * @param c A codepoint
+     */
+    final boolean isFromUUseFallback(int c) {
+        return (useFallback)
+                || (UCharacter.getType(c) == UCharacter.PRIVATE_USE);
+    }
+
+    /**
+     * Use fallbacks from Unicode to codepage when useFallback or for private-use code points
+     */
+    static final boolean isFromUUseFallback(boolean iUseFallback, int c) {
+        return (iUseFallback)
+                || (UCharacter.getType(c) == UCharacter.PRIVATE_USE);
+    }
+
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction
+     *            action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected void implOnMalformedInput(CodingErrorAction newAction) {
+        onMalformedInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction
+     *            action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected void implOnUnmappableCharacter(CodingErrorAction newAction) {
+        onUnmappableInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the callback encoder method and context to be used if an illegal sequence is encounterd.
+     * You would normally call this twice to set both the malform and unmappable error. In this case,
+     * newContext should remain the same since using a different newContext each time will negate the last
+     * one used.
+     * @param err CoderResult
+     * @param newCallback CharsetCallback.Encoder
+     * @param newContext Object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setFromUCallback(CoderResult err, CharsetCallback.Encoder newCallback, Object newContext) {
+        if (err.isMalformed()) {
+            onMalformedInput = newCallback;
+        } else if (err.isUnmappable()) {
+            onUnmappableInput = newCallback;
+        } else {
+            /* Error: Only malformed and unmappable are handled. */
+        }
+        
+        if (fromUContext == null || !fromUContext.equals(newContext)) {
+            setFromUContext(newContext);
+        }
+    }
+
+    /**
+     * Sets fromUContext used in callbacks.
+     * 
+     * @param newContext Object
+     * @exception IllegalArgumentException
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setFromUContext(Object newContext) {
+        fromUContext = newContext;
+    }
+    
+    private static CharsetCallback.Encoder getCallback(CodingErrorAction action) {
+        if (action == CodingErrorAction.REPLACE) {
+            return CharsetCallback.FROM_U_CALLBACK_SUBSTITUTE;
+        } else if (action == CodingErrorAction.IGNORE) {
+            return CharsetCallback.FROM_U_CALLBACK_SKIP;
+        } else /* if (action == CodingErrorAction.REPORT) */ {
+            return CharsetCallback.FROM_U_CALLBACK_STOP;
+        }
+    }
+
+    private static final CharBuffer EMPTY = CharBuffer.allocate(0);
+
+    /**
+     * Flushes any characters saved in the converter's internal buffer and
+     * resets the converter.
+     * @param out action to be taken
+     * @return result of flushing action and completes the decoding all input. 
+     *         Returns CoderResult.UNDERFLOW if the action succeeds.
+     * @stable ICU 3.6
+     */
+    protected CoderResult implFlush(ByteBuffer out) {
+        return encode(EMPTY, out, null, true);
+    }
+
+    /**
+     * Resets the from Unicode mode of converter
+     * @stable ICU 3.6
+     */
+    protected void implReset() {
+        errorBufferLength = 0;
+        fromUnicodeStatus = 0;
+        fromUChar32 = 0;
+        fromUnicodeReset();
+    }
+
+    private void fromUnicodeReset() {
+        preFromUBegin = 0;
+        preFromUFirstCP = UConverterConstants.U_SENTINEL;
+        preFromULength = 0;
+    }
+
+    /**
+     * Encodes one or more chars. The default behaviour of the
+     * converter is stop and report if an error in input stream is encountered.
+     * To set different behaviour use @see CharsetEncoder.onMalformedInput()
+     * @param in buffer to decode
+     * @param out buffer to populate with decoded result
+     * @return result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     * @stable ICU 3.6
+     */
+    protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {
+        if (!in.hasRemaining() && this.errorBufferLength == 0) { // make sure the errorBuffer is empty
+            // The Java framework should have already substituted what was left.
+            fromUChar32 = 0;
+            //fromUnicodeReset();
+            return CoderResult.UNDERFLOW;
+        }
+        in.position(in.position() + fromUCountPending());
+        /* do the conversion */
+        CoderResult ret = encode(in, out, null, false);
+        setSourcePosition(in);
+        /* No need to reset to keep the proper state of the encoder.
+         if (ret.isUnderflow() && in.hasRemaining()) {
+            // The Java framework is going to substitute what is left.
+            //fromUnicodeReset();
+        } */
+        return ret;
+    }
+
+    /*
+     * Implements ICU semantics of buffer management
+     * @param source
+     * @param target
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    abstract CoderResult encodeLoop(CharBuffer source, ByteBuffer target,
+            IntBuffer offsets, boolean flush);
+
+    /*
+     * Implements ICU semantics for encoding the buffer
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @param flush true if, and only if, the invoker can provide no
+     *  additional input bytes beyond those in the given buffer.
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    final CoderResult encode(CharBuffer source, ByteBuffer target,
+            IntBuffer offsets, boolean flush) {
+
+        /* check parameters */
+        if (target == null || source == null) {
+            throw new IllegalArgumentException();
+        }
+
+        /*
+         * Make sure that the buffer sizes do not exceed the number range for
+         * int32_t because some functions use the size (in units or bytes)
+         * rather than comparing pointers, and because offsets are int32_t values.
+         *
+         * size_t is guaranteed to be unsigned and large enough for the job.
+         *
+         * Return with an error instead of adjusting the limits because we would
+         * not be able to maintain the semantics that either the source must be
+         * consumed or the target filled (unless an error occurs).
+         * An adjustment would be targetLimit=t+0x7fffffff; for example.
+         */
+
+        /* flush the target overflow buffer */
+        if (errorBufferLength > 0) {
+            byte[] overflowArray;
+            int i, length;
+
+            overflowArray = errorBuffer;
+            length = errorBufferLength;
+            i = 0;
+            do {
+                if (target.remaining() == 0) {
+                    /* the overflow buffer contains too much, keep the rest */
+                    int j = 0;
+
+                    do {
+                        overflowArray[j++] = overflowArray[i++];
+                    } while (i < length);
+
+                    errorBufferLength = (byte) j;
+                    return CoderResult.OVERFLOW;
+                }
+
+                /* copy the overflow contents to the target */
+                target.put(overflowArray[i++]);
+                if (offsets != null) {
+                    offsets.put(-1); /* no source index available for old output */
+                }
+            } while (i < length);
+
+            /* the overflow buffer is completely copied to the target */
+            errorBufferLength = 0;
+        }
+
+        if (!flush && source.remaining() == 0 && preFromULength >= 0) {
+            /* the overflow buffer is emptied and there is no new input: we are done */
+            return CoderResult.UNDERFLOW;
+        }
+
+        /*
+         * Do not simply return with a buffer overflow error if
+         * !flush && t==targetLimit
+         * because it is possible that the source will not generate any output.
+         * For example, the skip callback may be called;
+         * it does not output anything.
+         */
+
+        return fromUnicodeWithCallback(source, target, offsets, flush);
+
+    }
+
+    /*
+     * Implementation note for m:n conversions
+     *
+     * While collecting source units to find the longest match for m:n conversion,
+     * some source units may need to be stored for a partial match.
+     * When a second buffer does not yield a match on all of the previously stored
+     * source units, then they must be "replayed", i.e., fed back into the converter.
+     *
+     * The code relies on the fact that replaying will not nest -
+     * converting a replay buffer will not result in a replay.
+     * This is because a replay is necessary only after the _continuation_ of a
+     * partial match failed, but a replay buffer is converted as a whole.
+     * It may result in some of its units being stored again for a partial match,
+     * but there will not be a continuation _during_ the replay which could fail.
+     *
+     * It is conceivable that a callback function could call the converter
+     * recursively in a way that causes another replay to be stored, but that
+     * would be an error in the callback function.
+     * Such violations will cause assertion failures in a debug build,
+     * and wrong output, but they will not cause a crash.
+     */
+    final CoderResult fromUnicodeWithCallback(CharBuffer source,
+            ByteBuffer target, IntBuffer offsets, boolean flush) {
+        int sBufferIndex;
+        int sourceIndex;
+        int errorInputLength;
+        boolean converterSawEndOfInput, calledCallback;
+
+        /* variables for m:n conversion */
+        CharBuffer replayArray = CharBuffer.allocate(EXT_MAX_UCHARS);
+        int replayArrayIndex = 0;
+        CharBuffer realSource;
+        boolean realFlush;
+
+        CoderResult cr = CoderResult.UNDERFLOW;
+
+        /* get the converter implementation function */
+        sourceIndex = 0;
+
+        if (preFromULength >= 0) {
+            /* normal mode */
+            realSource = null;
+            realFlush = false;
+        } else {
+            /*
+             * Previous m:n conversion stored source units from a partial match
+             * and failed to consume all of them.
+             * We need to "replay" them from a temporary buffer and convert them first.
+             */
+            realSource = source;
+            realFlush = flush;
+
+            //UConverterUtility.uprv_memcpy(replayArray, replayArrayIndex, preFromUArray, 0, -preFromULength*UMachine.U_SIZEOF_UCHAR);
+            replayArray.put(preFromUArray, 0, -preFromULength);
+            source = replayArray;
+            source.position(replayArrayIndex);
+            source.limit(replayArrayIndex - preFromULength); //preFromULength is negative, see declaration
+            flush = false;
+
+            preFromULength = 0;
+        }
+
+        /*
+         * loop for conversion and error handling
+         *
+         * loop {
+         *   convert
+         *   loop {
+         *     update offsets
+         *     handle end of input
+         *     handle errors/call callback
+         *   }
+         * }
+         */
+        for (;;) {
+            /* convert */
+            cr = encodeLoop(source, target, offsets, flush);
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv.preFromULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput = (boolean) (cr.isUnderflow() && flush
+                    && source.remaining() == 0 && fromUChar32 == 0);
+
+            /* no callback called yet for this iteration */
+            calledCallback = false;
+
+            /* no sourceIndex adjustment for conversion, only for callback output */
+            errorInputLength = 0;
+
+            /*
+             * loop for offsets and error handling
+             *
+             * iterates at most 3 times:
+             * 1. to clean up after the conversion function
+             * 2. after the callback
+             * 3. after the callback again if there was truncated input
+             */
+            for (;;) {
+                /* update offsets if we write any */
+                /* Currently offsets are not being used in ICU4J */
+                /* if (offsets != null) {
+                    int length = target.remaining();
+                    if (length > 0) {
+
+                        /*
+                         * if a converter handles offsets and updates the offsets
+                         * pointer at the end, then offset should not change
+                         * here;
+                         * however, some converters do not handle offsets at all
+                         * (sourceIndex<0) or may not update the offsets pointer
+                         */
+                 /*       offsets.position(offsets.position() + length);
+                    }
+
+                    if (sourceIndex >= 0) {
+                        sourceIndex += (int) (source.position());
+                    }
+                } */
+
+                if (preFromULength < 0) {
+                    /*
+                     * switch the source to new replay units (cannot occur while replaying)
+                     * after offset handling and before end-of-input and callback handling
+                     */
+                    if (realSource == null) {
+                        realSource = source;
+                        realFlush = flush;
+
+                        //UConverterUtility.uprv_memcpy(replayArray, replayArrayIndex, preFromUArray, 0, -preFromULength*UMachine.U_SIZEOF_UCHAR);
+                        replayArray.put(preFromUArray, 0, -preFromULength);
+
+                        source = replayArray;
+                        source.position(replayArrayIndex);
+                        source.limit(replayArrayIndex - preFromULength);
+                        flush = false;
+                        if ((sourceIndex += preFromULength) < 0) {
+                            sourceIndex = -1;
+                        }
+
+                        preFromULength = 0;
+                    } else {
+                        /* see implementation note before _fromUnicodeWithCallback() */
+                        //agljport:todo U_ASSERT(realSource==NULL);
+                        Assert.assrt(realSource == null);
+                    }
+                }
+
+                /* update pointers */
+                sBufferIndex = source.position();
+                if (cr.isUnderflow()) {
+                    if (sBufferIndex < source.limit()) {
+                        /*
+                         * continue with the conversion loop while there is still input left
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        break;
+                    } else if (realSource != null) {
+                        /* switch back from replaying to the real source and continue */
+                        source = realSource;
+                        flush = realFlush;
+                        sourceIndex = source.position();
+                        realSource = null;
+                        break;
+                    } else if (flush && fromUChar32 != 0) {
+                        /*
+                         * the entire input stream is consumed
+                         * and there is a partial, truncated input sequence left
+                         */
+
+                        /* inject an error and continue with callback handling */
+                        //err[0]=ErrorCode.U_TRUNCATED_CHAR_FOUND;
+                        cr = CoderResult.malformedForLength(1);
+                        calledCallback = false; /* new error condition */
+                    } else {
+                        /* input consumed */
+                        if (flush) {
+                            /*
+                             * return to the conversion loop once more if the flush
+                             * flag is set and the conversion function has not
+                             * successfully processed the end of the input yet
+                             *
+                             * (continue converting by breaking out of only the inner loop)
+                             */
+                            if (!converterSawEndOfInput) {
+                                break;
+                            }
+
+                            /* reset the converter without calling the callback function */
+                            implReset();
+                        }
+
+                        /* done successfully */
+                        return cr;
+                    }
+                }
+
+                /*U_FAILURE(*err) */
+                {
+
+                    if (calledCallback || cr.isOverflow()
+                            || (!cr.isMalformed() && !cr.isUnmappable())) {
+                        /*
+                         * the callback did not or cannot resolve the error:
+                         * set output pointers and return
+                         *
+                         * the check for buffer overflow is redundant but it is
+                         * a high-runner case and hopefully documents the intent
+                         * well
+                         *
+                         * if we were replaying, then the replay buffer must be
+                         * copied back into the UConverter
+                         * and the real arguments must be restored
+                         */
+                        if (realSource != null) {
+                            int length;
+
+                            //agljport:todo U_ASSERT(cnv.preFromULength==0);
+
+                            length = source.remaining();
+                            if (length > 0) {
+                                //UConverterUtility.uprv_memcpy(preFromUArray, 0, sourceArray, pArgs.sourceBegin, length*UMachine.U_SIZEOF_UCHAR);
+                                source.get(preFromUArray, 0, length);
+                                preFromULength = (byte) -length;
+                            }
+                            source = realSource;
+                            flush = realFlush;
+                        }
+                        return cr;
+                    }
+                }
+
+                /* callback handling */
+                {
+                    int codePoint;
+                    
+                    /* get and write the code point */
+                    codePoint = fromUChar32;
+                    errorInputLength = UTF16.append(invalidUCharBuffer, 0,
+                            fromUChar32);
+                    invalidUCharLength = errorInputLength;
+
+                    /* set the converter state to deal with the next character */
+                    fromUChar32 = 0;
+
+                    /* call the callback function */
+                    cr = fromCharErrorBehaviour.call(this, fromUContext,
+                            source, target, offsets, invalidUCharBuffer,
+                            invalidUCharLength, codePoint, cr);
+                }
+
+                /*
+                 * loop back to the offset handling
+                 *
+                 * this flag will indicate after offset handling
+                 * that a callback was called;
+                 * if the callback did not resolve the error, then we return
+                 */
+                calledCallback = true;
+            }
+        }
+    }
+
+    /*
+     * Ascertains if a given Unicode code point (32bit value for handling surrogates)
+     * can be converted to the target encoding. If the caller wants to test if a
+     * surrogate pair can be converted to target encoding then the
+     * responsibility of assembling the int value lies with the caller.
+     * For assembling a code point the caller can use UTF16 class of ICU4J and do something like:
+     * <pre>
+     *  while(i<mySource.length){
+     *      if(UTF16.isLeadSurrogate(mySource[i])&& i+1< mySource.length){
+     *          if(UTF16.isTrailSurrogate(mySource[i+1])){
+     *              int temp = UTF16.charAt(mySource,i,i+1,0);
+     *              if(!((CharsetEncoderICU) myConv).canEncode(temp)){
+     *                  passed=false;
+     *              }
+     *              i++;
+     *              i++;
+     *          }
+     *      }
+     *  }
+     * </pre>
+     * or
+     * <pre>
+     *  String src = new String(mySource);
+     *  int i,codepoint;
+     *  boolean passed = false;
+     *  while(i<src.length()){
+     *      codepoint = UTF16.charAt(src,i);
+     *      i+= (codepoint>0xfff)? 2:1;
+     *      if(!(CharsetEncoderICU) myConv).canEncode(codepoint)){
+     *          passed = false;
+     *      }
+     *  }
+     * </pre>
+     *
+     * @param codepoint Unicode code point as int value
+     * @return true if a character can be converted
+     */
+    /* TODO This is different from Java's canEncode(char) API.
+     * ICU's API should implement getUnicodeSet,
+     * and override canEncode(char) which queries getUnicodeSet.
+     * The getUnicodeSet should return a frozen UnicodeSet or use a fillin parameter, like ICU4C.
+     */
+    /*public boolean canEncode(int codepoint) {
+        return true;
+    }*/
+    /**
+     * Overrides super class method
+     * @stable ICU 3.6 
+     */
+    public boolean isLegalReplacement(byte[] repl) {
+        return true;
+    }
+
+    /*
+     * Writes out the specified output bytes to the target byte buffer or to converter internal buffers.
+     * @param cnv
+     * @param bytesArray
+     * @param bytesBegin
+     * @param bytesLength
+     * @param out
+     * @param offsets
+     * @param sourceIndex
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    static final CoderResult fromUWriteBytes(CharsetEncoderICU cnv,
+            byte[] bytesArray, int bytesBegin, int bytesLength, ByteBuffer out,
+            IntBuffer offsets, int sourceIndex) {
+
+        //write bytes
+        int obl = bytesLength;
+        CoderResult cr = CoderResult.UNDERFLOW;
+        int bytesLimit = bytesBegin + bytesLength;
+        try {
+            for (; bytesBegin < bytesLimit;) {
+                out.put(bytesArray[bytesBegin]);
+                bytesBegin++;
+            }
+            // success 
+            bytesLength = 0;
+        } catch (BufferOverflowException ex) {
+            cr = CoderResult.OVERFLOW;
+        }
+
+        if (offsets != null) {
+            while (obl > bytesLength) {
+                offsets.put(sourceIndex);
+                --obl;
+            }
+        }
+        //write overflow 
+        cnv.errorBufferLength = bytesLimit - bytesBegin;
+        if (cnv.errorBufferLength > 0) {
+            int index = 0;
+            while (bytesBegin < bytesLimit) {
+                cnv.errorBuffer[index++] = bytesArray[bytesBegin++];
+            }
+            cr = CoderResult.OVERFLOW;
+        }
+        return cr;
+    }
+
+    /*
+     * Returns the number of chars held in the converter's internal state
+     * because more input is needed for completing the conversion. This function is 
+     * useful for mapping semantics of ICU's converter interface to those of iconv,
+     * and this information is not needed for normal conversion.
+     * @return The number of chars in the state. -1 if an error is encountered.
+     */
+    /*public*/int fromUCountPending() {
+        if (preFromULength > 0) {
+            return UTF16.getCharCount(preFromUFirstCP) + preFromULength;
+        } else if (preFromULength < 0) {
+            return -preFromULength;
+        } else if (fromUChar32 > 0) {
+            return 1;
+        } else if (preFromUFirstCP > 0) {
+            return UTF16.getCharCount(preFromUFirstCP);
+        }
+        return 0;
+    }
+
+    /**
+     * 
+     * @param source
+     */
+    private final void setSourcePosition(CharBuffer source) {
+
+        // ok was there input held in the previous invocation of encodeLoop 
+        // that resulted in output in this invocation?
+        source.position(source.position() - fromUCountPending());
+    }
+
+    /*
+     * Write the codepage substitution character.
+     * Subclasses to override this method.
+     * For stateful converters, it is typically necessary to handle this
+     * specificially for the converter in order to properly maintain the state.
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    CoderResult cbFromUWriteSub(CharsetEncoderICU encoder, CharBuffer source,
+            ByteBuffer target, IntBuffer offsets) {
+        CharsetICU cs = (CharsetICU) encoder.charset();
+        byte[] sub = encoder.replacement();
+        if (cs.subChar1 != 0 && encoder.invalidUCharBuffer[0] <= 0xff) {
+            return CharsetEncoderICU.fromUWriteBytes(encoder,
+                    new byte[] { cs.subChar1 }, 0, 1, target, offsets, source
+                            .position());
+        } else {
+            return CharsetEncoderICU.fromUWriteBytes(encoder, sub, 0,
+                    sub.length, target, offsets, source.position());
+        }
+    }
+
+    /*
+     * Write the characters to target.
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    CoderResult cbFromUWriteUChars(CharsetEncoderICU encoder,
+            CharBuffer source, ByteBuffer target, IntBuffer offsets) {
+        CoderResult cr = CoderResult.UNDERFLOW;
+
+        /* This is a fun one.  Recursion can occur - we're basically going to
+         * just retry shoving data through the same converter. Note, if you got
+         * here through some kind of invalid sequence, you maybe should emit a
+         * reset sequence of some kind. Since this IS an actual conversion,
+         * take care that you've changed the callback or the data, or you'll
+         * get an infinite loop.
+         */
+
+        int oldTargetPosition = target.position();
+        int offsetIndex = source.position();
+
+        cr = encoder.encode(source, target, null, false); /* no offsets and no flush */
+
+        if (offsets != null) {
+            while (target.position() != oldTargetPosition) {
+                offsets.put(offsetIndex);
+                oldTargetPosition++;
+            }
+        }
+
+        /* Note, if you did something like used a stop subcallback, things would get interesting.
+         * In fact, here's where we want to return the partially consumed in-source!
+         */
+        if (cr.isOverflow()) {
+            /* Overflowed target. Now, we'll write into the charErrorBuffer.
+             * It's a fixed size. If we overflow it...Hm 
+             */
+
+            /* start the new target at the first free slot in the error buffer */
+            int errBuffLen = encoder.errorBufferLength;
+            ByteBuffer newTarget = ByteBuffer.wrap(encoder.errorBuffer);
+            newTarget.position(errBuffLen); /* set the position at the end of the error buffer */
+            encoder.errorBufferLength = 0;
+
+            encoder.encode(source, newTarget, null, false);
+
+            encoder.errorBuffer = newTarget.array();
+            encoder.errorBufferLength = newTarget.position();
+        }
+
+        return cr;
+    }
+
+    /**
+     * <p>
+     * Handles a common situation where a character has been read and it may be
+     * a lead surrogate followed by a trail surrogate. This method can change
+     * the source position and will modify fromUChar32.
+     * </p>
+     * 
+     * <p>
+     * If <code>null</code> is returned, then there was success in reading a
+     * surrogate pair, the codepoint is stored in <code>fromUChar32</code> and
+     * <code>fromUChar32</code> should be reset (to 0) after being read.
+     * </p>
+     * 
+     * @param source
+     *            The encoding source.
+     * @param lead
+     *            A character that may be the first in a surrogate pair.
+     * @return <code>CoderResult.malformedForLength(1)</code> or
+     *         <code>CoderResult.UNDERFLOW</code> if there is a problem, or
+     *         <code>null</code> if there isn't.
+     * @see handleSurrogates(CharBuffer, char)
+     * @see handleSurrogates(CharBuffer, int, char)
+     * @see handleSurrogates(char[], int, int, char)
+     */
+    final CoderResult handleSurrogates(CharBuffer source, char lead) {
+        if (!UTF16.isLeadSurrogate(lead)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        if (!source.hasRemaining()) {
+            fromUChar32 = lead;
+            return CoderResult.UNDERFLOW;
+        }
+
+        char trail = source.get();
+
+        if (!UTF16.isTrailSurrogate(trail)) {
+            fromUChar32 = lead;
+            source.position(source.position() - 1);
+            return CoderResult.malformedForLength(1);
+        }
+
+        fromUChar32 = UCharacter.getCodePoint(lead, trail);
+        return null;
+    }
+
+    /**
+     * <p>
+     * Same as <code>handleSurrogates(CharBuffer, char)</code>, but with arrays. As an added
+     * requirement, the calling method must also increment the index if this method returns
+     * <code>null</code>.
+     * </p>
+     * 
+     * 
+     * @param source
+     *            The encoding source.
+     * @param lead
+     *            A character that may be the first in a surrogate pair.
+     * @return <code>CoderResult.malformedForLength(1)</code> or
+     *         <code>CoderResult.UNDERFLOW</code> if there is a problem, or <code>null</code> if
+     *         there isn't.
+     * @see handleSurrogates(CharBuffer, char)
+     * @see handleSurrogates(CharBuffer, int, char)
+     * @see handleSurrogates(char[], int, int, char)
+     */
+    final CoderResult handleSurrogates(char[] sourceArray, int sourceIndex,
+            int sourceLimit, char lead) {
+        if (!UTF16.isLeadSurrogate(lead)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        if (sourceIndex >= sourceLimit) {
+            fromUChar32 = lead;
+            return CoderResult.UNDERFLOW;
+        }
+
+        char trail = sourceArray[sourceIndex];
+
+        if (!UTF16.isTrailSurrogate(trail)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        fromUChar32 = UCharacter.getCodePoint(lead, trail);
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetHZ.java b/src/com/ibm/icu/charset/CharsetHZ.java
new file mode 100644
index 0000000..3b0e02c
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetHZ.java
@@ -0,0 +1,352 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetHZ extends CharsetICU {
+
+    private static final int UCNV_TILDE = 0x7E; /* ~ */
+    private static final int UCNV_OPEN_BRACE = 0x7B; /* { */
+    private static final int UCNV_CLOSE_BRACE = 0x7D; /* } */
+    private static final byte[] SB_ESCAPE = new byte[] { 0x7E, 0x7D };
+    private static final byte[] DB_ESCAPE = new byte[] { 0x7E, 0x7B };
+    private static final byte[] TILDE_ESCAPE = new byte[] { 0x7E, 0x7E };
+    private static final byte[] fromUSubstitution = new byte[] { (byte) 0x1A };
+
+    private CharsetMBCS gbCharset;
+    private boolean isEmptySegment;
+
+    public CharsetHZ(String icuCanonicalName, String canonicalName, String[] aliases) {
+        super(icuCanonicalName, canonicalName, aliases);
+        gbCharset = (CharsetMBCS) new CharsetProviderICU().charsetForName("GBK");
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        isEmptySegment = false;
+    }
+
+    class CharsetDecoderHZ extends CharsetDecoderICU {
+        CharsetMBCS.CharsetDecoderMBCS gbDecoder;
+        boolean isStateDBCS = false;
+
+        public CharsetDecoderHZ(CharsetICU cs) {
+            super(cs);
+            gbDecoder = (CharsetMBCS.CharsetDecoderMBCS) gbCharset.newDecoder();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            gbDecoder.implReset();
+
+            isStateDBCS = false;
+            isEmptySegment = false;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            byte[] tempBuf = new byte[2];
+            int targetUniChar = 0;
+            int mySourceChar = 0;
+
+            if (!source.hasRemaining())
+                return CoderResult.UNDERFLOW;
+            else if (!target.hasRemaining())
+                return CoderResult.OVERFLOW;
+
+            while (source.hasRemaining()) {
+
+                if (target.hasRemaining()) {
+
+                    // get the byte as unsigned
+                    mySourceChar = source.get() & 0xff;
+
+                    if (mode == UCNV_TILDE) {
+                        /* second byte after ~ */
+                        mode = 0;
+                        switch (mySourceChar) {
+                        case 0x0A:
+                            /* no output for ~\n (line-continuation marker) */
+                            continue;
+                        case UCNV_TILDE:
+                            if (offsets != null) {
+                                offsets.put(source.position() - 2);
+                            }
+                            target.put((char) mySourceChar);
+                            continue;
+                        case UCNV_OPEN_BRACE:
+                        case UCNV_CLOSE_BRACE:
+                            isStateDBCS = (mySourceChar == UCNV_OPEN_BRACE);
+                            if (isEmptySegment) {
+                                isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                                this.toUBytesArray[0] = UCNV_TILDE;
+                                this.toUBytesArray[1] = (byte)mySourceChar;
+                                this.toULength = 2;
+                                return CoderResult.malformedForLength(1);
+                            }
+                            isEmptySegment = true;
+                            continue;
+                        default:
+                            /*
+                             * if the first byte is equal to TILDE and the trail byte is not a valid byte then it is an
+                             * error condition
+                             */
+                            mySourceChar |= 0x7e00;
+                            targetUniChar = 0xffff;
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious future error */ 
+                            break;
+                        }
+                    } else if (isStateDBCS) {
+                        if (toUnicodeStatus == 0) {
+                            /* lead byte */
+                            if (mySourceChar == UCNV_TILDE) {
+                                mode = UCNV_TILDE;
+                            } else {
+                                /*
+                                 * add another bit to distinguish a 0 byte from not having seen a lead byte
+                                 */
+                                toUnicodeStatus = mySourceChar | 0x100;
+                                isEmptySegment = false; /* the segment has something, either valid or will produce a different error, so reset this */ 
+                            }
+                            continue;
+                        } else {
+                            /* trail byte */
+                            int leadByte = toUnicodeStatus & 0xff;
+                            if (0x21 <= leadByte && leadByte <= 0x7d && 0x21 <= mySourceChar && mySourceChar <= 0x7e) {
+                                tempBuf[0] = (byte) (leadByte + 0x80);
+                                tempBuf[1] = (byte) (mySourceChar + 0x80);
+                                targetUniChar = gbDecoder.simpleGetNextUChar(ByteBuffer.wrap(tempBuf), super.isFallbackUsed());
+                            } else {
+                                targetUniChar = 0xffff;
+                            }
+                            /*
+                             * add another bit so that the code below writes 2 bytes in case of error
+                             */
+                            mySourceChar |= 0x10000 | (leadByte << 8);
+                            toUnicodeStatus = 0;
+                        }
+                    } else {
+                        if (mySourceChar == UCNV_TILDE) {
+                            mode = UCNV_TILDE;
+                            continue;
+                        } else if (mySourceChar <= 0x7f) {
+                            targetUniChar = mySourceChar; /* ASCII */
+                            isEmptySegment = false; /* the segment has something valid */
+                        } else {
+                            targetUniChar = 0xffff;
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious future error */
+                        }
+                    }
+
+                    if (targetUniChar < 0xfffe) {
+                        if (offsets != null) {
+                            offsets.put(source.position() - 1 - (isStateDBCS ? 1 : 0));
+                        }
+
+                        target.put((char) targetUniChar);
+                    } else /* targetUniChar >= 0xfffe */{
+                        if (mySourceChar > 0xff) {
+                            toUBytesArray[toUBytesBegin + 0] = (byte) (mySourceChar >> 8);
+                            toUBytesArray[toUBytesBegin + 1] = (byte) mySourceChar;
+                            toULength = 2;
+                        } else {
+                            toUBytesArray[toUBytesBegin + 0] = (byte) mySourceChar;
+                            toULength = 1;
+                        }
+                        if (targetUniChar == 0xfffe) {
+                            return CoderResult.unmappableForLength(toULength);
+                        } else {
+                            return CoderResult.malformedForLength(toULength);
+                        }
+                    }
+                } else {
+                    return CoderResult.OVERFLOW;
+                }
+            }
+
+            return CoderResult.UNDERFLOW;
+        }
+    }
+
+    class CharsetEncoderHZ extends CharsetEncoderICU {
+        CharsetMBCS.CharsetEncoderMBCS gbEncoder;
+        boolean isEscapeAppended = false;
+        boolean isTargetUCharDBCS = false;
+
+        public CharsetEncoderHZ(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            gbEncoder = (CharsetMBCS.CharsetEncoderMBCS) gbCharset.newEncoder();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            gbEncoder.implReset();
+
+            isEscapeAppended = false;
+            isTargetUCharDBCS = false;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            int length = 0;
+            int[] targetUniChar = new int[] { 0 };
+            int mySourceChar = 0;
+            boolean oldIsTargetUCharDBCS = isTargetUCharDBCS;
+
+            if (!source.hasRemaining())
+                return CoderResult.UNDERFLOW;
+            else if (!target.hasRemaining())
+                return CoderResult.OVERFLOW;
+
+            if (fromUChar32 != 0 && target.hasRemaining()) {
+                CoderResult cr = handleSurrogates(source, (char) fromUChar32);
+                return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+            }
+            /* writing the char to the output stream */
+            while (source.hasRemaining()) {
+                targetUniChar[0] = MISSING_CHAR_MARKER;
+                if (target.hasRemaining()) {
+
+                    mySourceChar = source.get();
+
+                    oldIsTargetUCharDBCS = isTargetUCharDBCS;
+                    if (mySourceChar == UCNV_TILDE) {
+                        /*
+                         * concatEscape(args, &myTargetIndex, &targetLength,"\x7E\x7E",err,2,&mySourceIndex);
+                         */
+                        concatEscape(source, target, offsets, TILDE_ESCAPE);
+                        continue;
+                    } else if (mySourceChar <= 0x7f) {
+                        length = 1;
+                        targetUniChar[0] = mySourceChar;
+                    } else {
+                        length = gbEncoder.fromUChar32(mySourceChar, targetUniChar, super.isFallbackUsed());
+
+                        /*
+                         * we can only use lead bytes 21..7D and trail bytes 21..7E
+                         */
+                        if (length == 2 && 0xa1a1 <= targetUniChar[0] && targetUniChar[0] <= 0xfdfe
+                                && 0xa1 <= (targetUniChar[0] & 0xff) && (targetUniChar[0] & 0xff) <= 0xfe) {
+                            targetUniChar[0] -= 0x8080;
+                        } else {
+                            targetUniChar[0] = MISSING_CHAR_MARKER;
+                        }
+                    }
+                    if (targetUniChar[0] != MISSING_CHAR_MARKER) {
+                        isTargetUCharDBCS = (targetUniChar[0] > 0x00FF);
+                        if (oldIsTargetUCharDBCS != isTargetUCharDBCS || !isEscapeAppended) {
+                            /* Shifting from a double byte to single byte mode */
+                            if (!isTargetUCharDBCS) {
+                                concatEscape(source, target, offsets, SB_ESCAPE);
+                                isEscapeAppended = true;
+                            } else { /*
+                                         * Shifting from a single byte to double byte mode
+                                         */
+                                concatEscape(source, target, offsets, DB_ESCAPE);
+                                isEscapeAppended = true;
+
+                            }
+                        }
+
+                        if (isTargetUCharDBCS) {
+                            if (target.hasRemaining()) {
+                                target.put((byte) (targetUniChar[0] >> 8));
+                                if (offsets != null) {
+                                    offsets.put(source.position() - 1);
+                                }
+                                if (target.hasRemaining()) {
+                                    target.put((byte) targetUniChar[0]);
+                                    if (offsets != null) {
+                                        offsets.put(source.position() - 1);
+                                    }
+                                } else {
+                                    errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                    // *err = U_BUFFER_OVERFLOW_ERROR;
+                                }
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte) (targetUniChar[0] >> 8);
+                                errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                // *err = U_BUFFER_OVERFLOW_ERROR;
+                            }
+
+                        } else {
+                            if (target.hasRemaining()) {
+                                target.put((byte) targetUniChar[0]);
+                                if (offsets != null) {
+                                    offsets.put(source.position() - 1);
+                                }
+
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                // *err = U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        }
+
+                    } else {
+                        /* oops.. the code point is unassigned */
+                        /* Handle surrogates */
+                        /* check if the char is a First surrogate */
+
+                        if (UTF16.isSurrogate((char) mySourceChar)) {
+                            // use that handy handleSurrogates method everyone's been talking about!
+                            CoderResult cr = handleSurrogates(source, (char) mySourceChar);
+                            return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+                        } else {
+                            /* callback(unassigned) for a BMP code point */
+                            // *err = U_INVALID_CHAR_FOUND;
+                            fromUChar32 = mySourceChar;
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                } else {
+                    // *err = U_BUFFER_OVERFLOW_ERROR;
+                    return CoderResult.OVERFLOW;
+                }
+            }
+
+            return CoderResult.UNDERFLOW;
+        }
+
+        private CoderResult concatEscape(CharBuffer source, ByteBuffer target, IntBuffer offsets, byte[] strToAppend) {
+            CoderResult cr = null;
+            for (int i=0; i<strToAppend.length; i++) {
+                byte b = strToAppend[i];
+                if (target.hasRemaining()) {
+                    target.put(b);
+                    if (offsets != null)
+                        offsets.put(source.position() - 1);
+                } else {
+                    errorBuffer[errorBufferLength++] = b;
+                    cr = CoderResult.OVERFLOW;
+                }
+            }
+            return cr;
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderHZ(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderHZ(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0x7f);
+       // CharsetMBCS mbcshz = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+        gbCharset.MBCSGetFilteredUnicodeSetForUnicode(gbCharset.sharedData, setFillIn, which, CharsetMBCS.UCNV_SET_FILTER_HZ);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetICU.java b/src/com/ibm/icu/charset/CharsetICU.java
new file mode 100644
index 0000000..86454ec
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetICU.java
@@ -0,0 +1,372 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+//import java.io.ByteArrayInputStream;
+//import java.io.InputStreamReader;
+import java.lang.reflect.Constructor;
+
+import java.lang.reflect.InvocationTargetException;
+import java.nio.charset.*;
+import java.util.HashMap;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * <p>A subclass of java.nio.Charset for providing implementation of ICU's charset converters.
+ * This API is used to convert codepage or character encoded data to and
+ * from UTF-16. You can open a converter with {@link Charset#forName } and {@link #forNameICU }. With that
+ * converter, you can get its properties, set options, convert your data.</p>
+ *
+ * <p>Since many software programs recogize different converter names for
+ * different types of converters, there are other functions in this API to
+ * iterate over the converter aliases. 
+ * 
+ * @stable ICU 3.6
+ */
+public abstract class CharsetICU extends Charset{
+
+     String icuCanonicalName;
+     String javaCanonicalName;
+     int options;
+
+     float  maxCharsPerByte;
+    
+     String name; /* +4: 60  internal name of the converter- invariant chars */
+
+     int codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
+
+     byte platform;                /* +68: 1 platform of the converter (only IBM now) */
+     byte conversionType;          /* +69: 1 conversion type */
+
+     int minBytesPerChar;         /* +70: 1 Minimum # bytes per char in this codepage */
+     int maxBytesPerChar;         /* +71: 1 Maximum # bytes output per UChar in this codepage */
+
+     byte subChar[/*UCNV_MAX_SUBCHAR_LEN*/]; /* +72: 4  [note:  4 and 8 byte boundary] */
+     byte subCharLen;              /* +76: 1 */
+    
+     byte hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
+     byte hasFromUnicodeFallback; /* +78: 1 */
+     short unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
+     byte subChar1;               /* +80: 1  single-byte substitution character for IBM MBCS (0 if none) */
+     //byte reserved[/*19*/];           /* +81: 19 to round out the structure */
+     
+     
+    // typedef enum UConverterUnicodeSet {
+     /** 
+      * Parameter that select the set of roundtrippable Unicode code points. 
+      * @draft ICU 4.0
+      * @provisional This API might change or be removed in a future release.
+      */
+      public static final int ROUNDTRIP_SET=0; 
+      /**
+       * Select the set of Unicode code points with roundtrip or fallback mappings.
+       * Not supported at this point.
+       * @internal
+       * @deprecated This API is ICU internal only.
+       */
+      public static final int ROUNDTRIP_AND_FALLBACK_SET =1;
+      
+    //} UConverterUnicodeSet;
+     
+    /**
+     * 
+     * @param icuCanonicalName
+     * @param canonicalName
+     * @param aliases
+     * @stable ICU 3.6
+     */
+    protected CharsetICU(String icuCanonicalName, String canonicalName, String[] aliases) {
+        super(canonicalName,aliases);
+        if(canonicalName.length() == 0){
+            throw new IllegalCharsetNameException(canonicalName);
+        }
+        this.javaCanonicalName = canonicalName;
+        this.icuCanonicalName  = icuCanonicalName;
+    }
+    
+    /**
+     * Ascertains if a charset is a sub set of this charset
+     * Implements the abstract method of super class.
+     * @param cs charset to test
+     * @return true if the given charset is a subset of this charset
+     * @stable ICU 3.6
+     */
+    public boolean contains(Charset cs){
+        if (null == cs) {
+            return false;
+        } else if (this.equals(cs)) {
+            return true;
+        }
+        return false;
+    }
+    private static final HashMap algorithmicCharsets = new HashMap();
+    static{
+        algorithmicCharsets.put("LMBCS-1",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("BOCU-1",                "com.ibm.icu.charset.CharsetBOCU1" );
+        algorithmicCharsets.put("SCSU",                  "com.ibm.icu.charset.CharsetSCSU" ); 
+        algorithmicCharsets.put("US-ASCII",              "com.ibm.icu.charset.CharsetASCII" );
+        algorithmicCharsets.put("ISO-8859-1",            "com.ibm.icu.charset.Charset88591" );
+        algorithmicCharsets.put("UTF-16",                "com.ibm.icu.charset.CharsetUTF16" );
+        algorithmicCharsets.put("UTF-16BE",              "com.ibm.icu.charset.CharsetUTF16BE" );
+        algorithmicCharsets.put("UTF-16LE",              "com.ibm.icu.charset.CharsetUTF16LE" );
+        algorithmicCharsets.put("UTF16_OppositeEndian",  "com.ibm.icu.charset.CharsetUTF16LE" );
+        algorithmicCharsets.put("UTF16_PlatformEndian",  "com.ibm.icu.charset.CharsetUTF16" );
+        algorithmicCharsets.put("UTF-32",                "com.ibm.icu.charset.CharsetUTF32" );
+        algorithmicCharsets.put("UTF-32BE",              "com.ibm.icu.charset.CharsetUTF32BE" );
+        algorithmicCharsets.put("UTF-32LE",              "com.ibm.icu.charset.CharsetUTF32LE" );
+        algorithmicCharsets.put("UTF32_OppositeEndian",  "com.ibm.icu.charset.CharsetUTF32LE" );
+        algorithmicCharsets.put("UTF32_PlatformEndian",  "com.ibm.icu.charset.CharsetUTF32" );
+        algorithmicCharsets.put("UTF-8",                 "com.ibm.icu.charset.CharsetUTF8" );
+        algorithmicCharsets.put("CESU-8",                "com.ibm.icu.charset.CharsetCESU8" );
+        algorithmicCharsets.put("UTF-7",                 "com.ibm.icu.charset.CharsetUTF7" );
+        algorithmicCharsets.put("ISCII,version=0",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=1",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=2",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=3",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=4",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=5",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=6",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=7",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=8",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("IMAP-mailbox-name",     "com.ibm.icu.charset.CharsetUTF7" );
+        algorithmicCharsets.put("HZ",                    "com.ibm.icu.charset.CharsetHZ" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=2",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=3",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=4",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=zh,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=zh,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ko,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ko,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        }
+
+    /*public*/ static final Charset getCharset(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+       String className = (String) algorithmicCharsets.get(icuCanonicalName);
+       if(className==null){
+           //all the cnv files are loaded as MBCS
+           className = "com.ibm.icu.charset.CharsetMBCS";
+       }
+       try{
+           CharsetICU conv = null;
+           Class cs = Class.forName(className);
+           Class[] paramTypes = new Class[]{ String.class, String.class,  String[].class};
+           final Constructor c = cs.getConstructor(paramTypes);
+           Object[] params = new Object[]{ icuCanonicalName, javaCanonicalName, aliases};
+           
+           // Run constructor
+           try {
+               Object obj = c.newInstance(params);
+               if(obj!=null && obj instanceof CharsetICU){
+                   conv = (CharsetICU)obj;
+                   return conv;
+               }
+           }catch (InvocationTargetException e) {
+               throw new UnsupportedCharsetException( icuCanonicalName+": "+"Could not load " + className+ ". Exception:" + e.getTargetException());    
+           }
+       }catch(ClassNotFoundException ex){
+       }catch(NoSuchMethodException ex){
+       }catch (IllegalAccessException ex){ 
+       }catch (InstantiationException ex){ 
+       }
+       throw new UnsupportedCharsetException( icuCanonicalName+": "+"Could not load " + className);    
+    }
+    
+    static final boolean isSurrogate(int c){
+        return (((c)&0xfffff800)==0xd800);
+    }
+    
+    /*
+     * Returns the default charset name 
+     */
+//    static final String getDefaultCharsetName(){
+//        String defaultEncoding = new InputStreamReader(new ByteArrayInputStream(new byte[0])).getEncoding();
+//        return defaultEncoding;
+//    }
+
+    /**
+     * Returns a charset object for the named charset.
+     * This method gurantee that ICU charset is returned when
+     * available.  If the ICU charset provider does not support
+     * the specified charset, then try other charset providers
+     * including the standard Java charset provider.
+     * 
+     * @param charsetName The name of the requested charset,
+     * may be either a canonical name or an alias
+     * @return A charset object for the named charset
+     * @throws IllegalCharsetNameException If the given charset name
+     * is illegal
+     * @throws UnsupportedCharsetException If no support for the
+     * named charset is available in this instance of th Java
+     * virtual machine
+     * @stable ICU 3.6
+     */
+    public static Charset forNameICU(String charsetName) throws IllegalCharsetNameException, UnsupportedCharsetException {
+        CharsetProviderICU icuProvider = new CharsetProviderICU();
+        CharsetICU cs = (CharsetICU) icuProvider.charsetForName(charsetName);
+        if (cs != null) {
+            return cs;
+        }
+        return Charset.forName(charsetName);
+    }
+
+//    /**
+//     * @see java.lang.Comparable#compareTo(java.lang.Object)
+//     * @stable 3.8
+//     */
+//    public int compareTo(Object otherObj) {
+//        if (!(otherObj instanceof CharsetICU)) {
+//            return -1;
+//        }
+//        return icuCanonicalName.compareTo(((CharsetICU)otherObj).icuCanonicalName);
+//    }
+
+    /**
+     * This follows ucnv.c method ucnv_detectUnicodeSignature() to detect the
+     * start of the stream for example U+FEFF (the Unicode BOM/signature
+     * character) that can be ignored.
+     * 
+     * Detects Unicode signature byte sequences at the start of the byte stream
+     * and returns number of bytes of the BOM of the indicated Unicode charset.
+     * 0 is returned when no Unicode signature is recognized.
+     * 
+     */
+    // TODO This should be proposed as CharsetDecoderICU API.
+//    static String detectUnicodeSignature(ByteBuffer source) {
+//        int signatureLength = 0; // number of bytes of the signature
+//        final int SIG_MAX_LEN = 5;
+//        String sigUniCharset = null; // states what unicode charset is the BOM
+//        int i = 0;
+//
+//        /*
+//         * initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN bytes we
+//         * don't misdetect something
+//         */
+//        byte start[] = { (byte) 0xa5, (byte) 0xa5, (byte) 0xa5, (byte) 0xa5,
+//                (byte) 0xa5 };
+//
+//        while (i < source.remaining() && i < SIG_MAX_LEN) {
+//            start[i] = source.get(i);
+//            i++;
+//        }
+//
+//        if (start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+//            signatureLength = 2;
+//            sigUniCharset = "UTF-16BE";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+//            if (start[2] == (byte) 0x00 && start[3] == (byte) 0x00) {
+//                signatureLength = 4;
+//                sigUniCharset = "UTF-32LE";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            } else {
+//                signatureLength = 2;
+//                sigUniCharset = "UTF-16LE";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            }
+//        } else if (start[0] == (byte) 0xEF && start[1] == (byte) 0xBB
+//                && start[2] == (byte) 0xBF) {
+//            signatureLength = 3;
+//            sigUniCharset = "UTF-8";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x00 && start[1] == (byte) 0x00
+//                && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+//            signatureLength = 4;
+//            sigUniCharset = "UTF-32BE";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x0E && start[1] == (byte) 0xFE
+//                && start[2] == (byte) 0xFF) {
+//            signatureLength = 3;
+//            sigUniCharset = "SCSU";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0xFB && start[1] == (byte) 0xEE
+//                && start[2] == (byte) 0x28) {
+//            signatureLength = 3;
+//            sigUniCharset = "BOCU-1";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x2B && start[1] == (byte) 0x2F
+//                && start[2] == (byte) 0x76) {
+//
+//            if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+//                signatureLength = 5;
+//                sigUniCharset = "UTF-7";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39
+//                    || start[3] == (byte) 0x2B || start[3] == (byte) 0x2F) {
+//                signatureLength = 4;
+//                sigUniCharset = "UTF-7";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            }
+//        } else if (start[0] == (byte) 0xDD && start[2] == (byte) 0x73
+//                && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+//            signatureLength = 4;
+//            sigUniCharset = "UTF-EBCDIC";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        }
+//
+//        /* no known Unicode signature byte sequence recognized */
+//        return null;
+//    }
+    
+    
+    abstract void getUnicodeSetImpl(UnicodeSet setFillIn, int which);
+    
+    /**
+    * <p>Returns the set of Unicode code points that can be converted by an ICU Converter. 
+    * <p>
+    * The current implementation returns only one kind of set (UCNV_ROUNDTRIP_SET): The set of all Unicode code points that can be 
+    * roundtrip-converted (converted without any data loss) with the converter This set will not include code points that have fallback 
+    * mappings or are only the result of reverse fallback mappings.  See UTR #22 "Character Mapping Markup Language" at  <a href="http://www.unicode.org/reports/tr22/">http://www.unicode.org/reports/tr22/</a>
+    * <p>* In the future, there may be more UConverterUnicodeSet choices to select sets with different properties.
+    * <p>
+    * <p>This is useful for example for
+    * <ul><li>checking that a string or document can be roundtrip-converted with a converter,
+    *   without/before actually performing the conversion</li>
+    * <li>testing if a converter can be used for text for typical text for a certain locale,
+    *   by comparing its roundtrip set with the set of ExemplarCharacters from
+    *   ICU's locale data or other sources</li></ul>
+    *
+    * @param setFillIn A valid UnicodeSet. It will be cleared by this function before 
+    *                   the converter's specific set is filled in.
+    * @param which A selector; currently ROUNDTRIP_SET is the only supported value.
+    * @throws IllegalArgumentException if the parameters does not match.              
+    * @draft ICU 4.0
+    * @provisional This API might change or be removed in a future release.
+    */
+       public void getUnicodeSet(UnicodeSet setFillIn, int which){
+           if( setFillIn == null || which != ROUNDTRIP_SET ){
+               throw new IllegalArgumentException();
+           }
+           setFillIn.clear();
+           getUnicodeSetImpl(setFillIn, which);
+       }
+      
+       static void getNonSurrogateUnicodeSet(UnicodeSet setFillIn){
+           setFillIn.add(0, 0xd7ff);
+           setFillIn.add(0xe000, 0x10ffff);
+       }
+       
+       static void getCompleteUnicodeSet(UnicodeSet setFillIn){
+           setFillIn.add(0, 0x10ffff);
+       }
+
+}
+
diff --git a/src/com/ibm/icu/charset/CharsetISCII.java b/src/com/ibm/icu/charset/CharsetISCII.java
new file mode 100644
index 0000000..e671a6b
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetISCII.java
@@ -0,0 +1,1456 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Michael Ow
+ *
+ */
+class CharsetISCII extends CharsetICU {
+    private static final short UCNV_OPTIONS_VERSION_MASK = 0X0f;
+    //private static final short NUKTA = 0x093c;
+    //private static final short HALANT = 0x094d;
+    private static final short ZWNJ = 0x200c; /* Zero Width Non Joiner */
+    private static final short ZWJ = 0x200d; /* Zero Width Joiner */
+    //private static final int   INVALID_CHAR = 0xffff;
+    private static final short ATR = 0xef; /* Attribute code */
+    private static final short EXT = 0xf0; /* Extension code */
+    private static final short DANDA = 0x0964;
+    private static final short DOUBLE_DANDA = 0x0965;
+    private static final short ISCII_NUKTA = 0xe9;
+    private static final short ISCII_HALANT = 0xe8;
+    private static final short ISCII_DANDA = 0xea;
+    private static final short ISCII_VOWEL_SIGN_E = 0xe0;
+    private static final short ISCII_INV = 0xd9;
+    private static final short INDIC_BLOCK_BEGIN = 0x0900;
+    private static final short INDIC_BLOCK_END = 0x0d7f;
+    private static final short INDIC_RANGE = (INDIC_BLOCK_END - INDIC_BLOCK_BEGIN);
+    private static final short VOCALLIC_RR = 0x0931;
+    private static final short LF = 0x0a;
+    private static final short ASCII_END = 0xa0;
+    private static final short TELUGU_DELTA = (UniLang.DELTA * UniLang.TELUGU);
+    private static final short DEV_ABBR_SIGN = 0x0970;
+    private static final short DEV_ANUDATTA = 0x0952;
+    private static final short EXT_RANGE_BEGIN = 0xa1;
+    private static final short EXT_RANGE_END = 0xee;
+    private static final short PNJ_DELTA = 0x100;
+    private static final int   NO_CHAR_MARKER = 0xfffe;
+    
+    /* Used for proper conversion to and from Gurmukhi */
+    private static UnicodeSet  PNJ_BINDI_TIPPI_SET;
+    private static UnicodeSet  PNJ_CONSONANT_SET;
+    private static final short PNJ_BINDI        = 0x0a02;
+    private static final short PNJ_TIPPI        = 0x0a70;
+    private static final short PNJ_SIGN_VIRAMA  = 0x0a4d;
+    private static final short PNJ_ADHAK        = 0x0a71;
+    private static final short PNJ_HA           = 0x0a39;
+    private static final short PNJ_RRA          = 0x0a5c;
+    
+    private static final class UniLang {
+        static final short DEVALANGARI = 0;
+        static final short BENGALI = DEVALANGARI + 1;
+        static final short GURMUKHI = BENGALI + 1;
+        static final short GUJARATI = GURMUKHI + 1;
+        static final short ORIYA = GUJARATI + 1;
+        static final short TAMIL = ORIYA + 1;
+        static final short TELUGU = TAMIL + 1;
+        static final short KANNADA = TELUGU + 1;
+        static final short MALAYALAM = KANNADA + 1;
+        static final short DELTA = 0x80;
+    }
+    
+    private static final class ISCIILang {
+        static final short DEF = 0x40;
+        static final short RMN = 0x41;
+        static final short DEV = 0x42;
+        static final short BNG = 0x43;
+        static final short TML = 0x44;
+        static final short TLG = 0x45;
+        static final short ASM = 0x46;
+        static final short ORI = 0x47;
+        static final short KND = 0x48;
+        static final short MLM = 0x49;
+        static final short GJR = 0x4a;
+        static final short PNJ = 0x4b;
+        static final short ARB = 0x71;
+        static final short PES = 0x72;
+        static final short URD = 0x73;
+        static final short SND = 0x74;
+        static final short KSM = 0x75;
+        static final short PST = 0x76;
+    }
+    
+    private static final class MaskEnum {
+        static final short DEV_MASK = 0x80;
+        static final short PNJ_MASK = 0x40;
+        static final short GJR_MASK = 0x20;
+        static final short ORI_MASK = 0x10;
+        static final short BNG_MASK = 0x08;
+        static final short KND_MASK = 0x04;
+        static final short MLM_MASK = 0x02;
+        static final short TML_MASK = 0x01;
+        static final short ZERO = 0x00;
+    }
+    
+    private final String ISCII_CNV_PREFIX = "ISCII,version=";
+    
+    private final class UConverterDataISCII {
+        int option;
+        int contextCharToUnicode;      /* previous Unicode codepoint for contextual analysis */
+        int contextCharFromUnicode;    /* previous Unicode codepoint for contextual analysis */
+        short defDeltaToUnicode;             /* delta for switching to default state when DEF is encountered */
+        short currentDeltaFromUnicode;   /* current delta in Indic block */
+        short currentDeltaToUnicode;         /* current delta in Indic block */
+        short currentMaskFromUnicode;    /* mask for current state in fromUnicode */
+        short currentMaskToUnicode;          /* mask for current state in toUnicode */
+        short defMaskToUnicode;           /* mask for default state in toUnicode */
+        boolean isFirstBuffer;          /* boolean for fromUnicode to see if we need to announce the first script */
+        boolean resetToDefaultToUnicode;    /* boolean for reseting to default delta and mask when a newline is encountered */
+        String name;
+        int prevToUnicodeStatus;        /* Hold the previous toUnicodeStatus. This is necessary because we may need to know the last two code points. */
+        
+        UConverterDataISCII(int option, String name) {
+            this.option = option;
+            this.name = name;
+            
+            initialize();
+        }
+        
+        void initialize() {          
+            this.contextCharToUnicode = NO_CHAR_MARKER; /* contextCharToUnicode */
+            this.currentDeltaFromUnicode = 0x0000; /* contextCharFromUnicode */
+            this.defDeltaToUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* defDeltaToUnicode */ 
+            this.currentDeltaFromUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* currentDeltaFromUnicode */ 
+            this.currentDeltaToUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* currentDeltaToUnicode */ 
+            this.currentMaskToUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskToUnicode */
+            this.currentMaskFromUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskFromUnicode */
+            this.defMaskToUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* defMaskToUnicode */
+            this.isFirstBuffer = true; /* isFirstBuffer */
+            this.resetToDefaultToUnicode = false; /* resetToDefaultToUnicode */   
+            this.prevToUnicodeStatus = 0x0000;
+        }
+    }
+    
+    private static final class LookupDataStruct {
+        short uniLang;
+        short maskEnum;
+        short isciiLang;
+        
+        LookupDataStruct(short uniLang, short maskEnum, short isciiLang) {
+            this.uniLang = uniLang;
+            this.maskEnum = maskEnum;
+            this.isciiLang = isciiLang;
+        }
+    }
+    
+    private static final LookupDataStruct [] lookupInitialData = {
+        new LookupDataStruct(UniLang.DEVALANGARI, MaskEnum.DEV_MASK, ISCIILang.DEV),
+        new LookupDataStruct(UniLang.BENGALI, MaskEnum.BNG_MASK, ISCIILang.BNG),
+        new LookupDataStruct(UniLang.GURMUKHI, MaskEnum.PNJ_MASK, ISCIILang.PNJ),
+        new LookupDataStruct(UniLang.GUJARATI, MaskEnum.GJR_MASK, ISCIILang.GJR),
+        new LookupDataStruct(UniLang.ORIYA, MaskEnum.ORI_MASK, ISCIILang.ORI),
+        new LookupDataStruct(UniLang.TAMIL, MaskEnum.TML_MASK, ISCIILang.TML),
+        new LookupDataStruct(UniLang.TELUGU, MaskEnum.KND_MASK, ISCIILang.TLG),
+        new LookupDataStruct(UniLang.KANNADA, MaskEnum.KND_MASK, ISCIILang.KND),
+        new LookupDataStruct(UniLang.MALAYALAM, MaskEnum.MLM_MASK, ISCIILang.MLM)
+    };
+    
+    /*
+     * The values in validity table are indexed by the lower bits of Unicode
+     * range 0x0900 - 0x09ff. The values have a structure like:
+     * -----------------------------------------------------------------
+     * |DEV | PNJ | GJR | ORI | BNG | TLG | MLM | TML |
+     * |    |    |    |    | ASM | KND |    |    |
+     * -----------------------------------------------------------------
+     * If a code point is valid in a particular script
+     * then that bit is turned on
+     * 
+     * Unicode does not distinguish between Bengali and Assamese aso we use 1 bit for
+     * to represent these languages
+     * 
+     * Telugu and Kannda have same codepoints except for Vocallic_RR which we special case
+     * and combine and use 1 bit to represent these languages
+     */
+    private static final short validityTable[] = {
+        /* This state table is tool generated so please do not edit unless you know exactly what you are doing */
+        /* Note:  This table was edited to mirror the Windows XP implementation */
+        /* ISCII: Valid: Unicode */
+        /* 0xa0: 0x00: 0x900 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa1: 0xb8: 0x901 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa2: 0xfe: 0x902 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK, 
+        /* 0xa3: 0xbf: 0x903 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x00: 0x904 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa4: 0xff: 0x905 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa5: 0xff: 0x906 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa6: 0xff: 0x907 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa7: 0xff: 0x908 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa8: 0xff: 0x909 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa9: 0xff: 0x90a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xaa: 0xfe: 0x90b */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x90c */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xae: 0x80: 0x90d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xab: 0x87: 0x90e */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xac: 0xff: 0x90f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xad: 0xff: 0x910 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb2: 0x80: 0x911 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xaf: 0x87: 0x912 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb0: 0xff: 0x913 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb1: 0xff: 0x914 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb3: 0xff: 0x915 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb4: 0xfe: 0x916 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb5: 0xfe: 0x917 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb6: 0xfe: 0x918 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb7: 0xff: 0x919 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb8: 0xff: 0x91a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb9: 0xfe: 0x91b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xba: 0xff: 0x91c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbb: 0xfe: 0x91d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xbc: 0xff: 0x91e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbd: 0xff: 0x91f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbe: 0xfe: 0x920 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xbf: 0xfe: 0x921 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc0: 0xfe: 0x922 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc1: 0xff: 0x923 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc2: 0xff: 0x924 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc3: 0xfe: 0x925 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc4: 0xfe: 0x926 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc5: 0xfe: 0x927 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc6: 0xff: 0x928 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc7: 0x81: 0x929 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.TML_MASK,
+        /* 0xc8: 0xff: 0x92a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc9: 0xfe: 0x92b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xca: 0xfe: 0x92c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xcb: 0xfe: 0x92d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xcc: 0xfe: 0x92e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xcd: 0xff: 0x92f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xcf: 0xff: 0x930 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd0: 0x87: 0x931 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd1: 0xff: 0x932 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd2: 0xb7: 0x933 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd3: 0x83: 0x934 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd4: 0xff: 0x935 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd5: 0xfe: 0x936 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xd6: 0xbf: 0x937 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd7: 0xff: 0x938 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd8: 0xff: 0x939 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x00: 0x93a */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x93b */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe9: 0xda: 0x93c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x93d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xda: 0xff: 0x93e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdb: 0xff: 0x93f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdc: 0xff: 0x940 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdd: 0xff: 0x941 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xde: 0xff: 0x942 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdf: 0xbe: 0x943 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x944 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe3: 0x80: 0x945 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe0: 0x87: 0x946 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe1: 0xff: 0x947 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe2: 0xff: 0x948 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe7: 0x80: 0x949 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe4: 0x87: 0x94a */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe5: 0xff: 0x94b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe6: 0xff: 0x94c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe8: 0xff: 0x94d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xec: 0x00: 0x94e */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xed: 0x00: 0x94f */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x950 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x951 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x952 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x953 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x954 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x955 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x956 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x957 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x958 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x959 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xce: 0x98: 0x95f */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x960 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x961 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x962 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x963 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xea: 0xf8: 0x964 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xeaea: 0x00: 0x965 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xf1: 0xff: 0x966 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf2: 0xff: 0x967 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf3: 0xff: 0x968 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf4: 0xff: 0x969 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf5: 0xff: 0x96a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf6: 0xff: 0x96b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf7: 0xff: 0x96c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf8: 0xff: 0x96d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf9: 0xff: 0x96e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xfa: 0xff: 0x96f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x80: 0x970 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        
+        /*
+         * The length of the array is 128 to provide values for 0x900..0x97f.
+         * The last 15 entries for 0x971..0x97f of the table are all zero
+         * because no Indic script uses such Unicode code points.
+         */
+        
+        /* 0x00: 0x00: 0x971 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x972 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x973 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x974 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x975 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x976 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x977 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x978 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x979 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97A */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97B */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97C */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97D */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97E */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97F */ MaskEnum.ZERO,
+    };
+    
+    private static final char fromUnicodeTable[] = {
+      0x00a0, /* 0x0900 */ 
+      0x00a1, /* 0x0901 */
+      0x00a2, /* 0x0902 */
+      0x00a3, /* 0x0903 */
+      0xa4e0, /* 0x0904 */
+      0x00a4, /* 0x0905 */
+      0x00a5, /* 0x0906 */
+      0x00a6, /* 0x0907 */
+      0x00a7, /* 0x0908 */ 
+      0x00a8, /* 0x0909 */
+      0x00a9, /* 0x090a */
+      0x00aa, /* 0x090b */
+      0xA6E9, /* 0x090c */
+      0x00ae, /* 0x090d */
+      0x00ab, /* 0x090e */
+      0x00ac, /* 0x090f */
+      0x00ad, /* 0x0910 */ 
+      0x00b2, /* 0x0911 */
+      0x00af, /* 0x0912 */
+      0x00b0, /* 0x0913 */
+      0x00b1, /* 0x0914 */
+      0x00b3, /* 0x0915 */
+      0x00b4, /* 0x0916 */
+      0x00b5, /* 0x0917 */
+      0x00b6, /* 0x0918 */ 
+      0x00b7, /* 0x0919 */
+      0x00b8, /* 0x091a */
+      0x00b9, /* 0x091b */
+      0x00ba, /* 0x091c */
+      0x00bb, /* 0x091d */
+      0x00bc, /* 0x091e */
+      0x00bd, /* 0x091f */
+      0x00be, /* 0x0920 */ 
+      0x00bf, /* 0x0921 */
+      0x00c0, /* 0x0922 */
+      0x00c1, /* 0x0923 */
+      0x00c2, /* 0x0924 */
+      0x00c3, /* 0x0925 */
+      0x00c4, /* 0x0926 */
+      0x00c5, /* 0x0927 */
+      0x00c6, /* 0x0928 */ 
+      0x00c7, /* 0x0929 */
+      0x00c8, /* 0x092a */
+      0x00c9, /* 0x092b */
+      0x00ca, /* 0x092c */
+      0x00cb, /* 0x092d */
+      0x00cc, /* 0x092e */
+      0x00cd, /* 0x092f */
+      0x00cf, /* 0x0930 */ 
+      0x00d0, /* 0x0931 */
+      0x00d1, /* 0x0932 */
+      0x00d2, /* 0x0933 */
+      0x00d3, /* 0x0934 */
+      0x00d4, /* 0x0935 */
+      0x00d5, /* 0x0936 */
+      0x00d6, /* 0x0937 */
+      0x00d7, /* 0x0938 */ 
+      0x00d8, /* 0x0939 */
+      0xFFFF, /* 0x093a */
+      0xFFFF, /* 0x093b */
+      0x00e9, /* 0x093c */
+      0xEAE9, /* 0x093d */
+      0x00da, /* 0x093e */
+      0x00db, /* 0x093f */
+      0x00dc, /* 0x0940 */ 
+      0x00dd, /* 0x0941 */
+      0x00de, /* 0x0942 */
+      0x00df, /* 0x0943 */
+      0xDFE9, /* 0x0944 */
+      0x00e3, /* 0x0945 */
+      0x00e0, /* 0x0946 */
+      0x00e1, /* 0x0947 */
+      0x00e2, /* 0x0948 */ 
+      0x00e7, /* 0x0949 */
+      0x00e4, /* 0x094a */
+      0x00e5, /* 0x094b */
+      0x00e6, /* 0x094c */
+      0x00e8, /* 0x094d */
+      0x00ec, /* 0x094e */
+      0x00ed, /* 0x094f */
+      0xA1E9, /* 0x0950 */ /* OM Symbol */ 
+      0xFFFF, /* 0x0951 */
+      0xF0B8, /* 0x0952 */
+      0xFFFF, /* 0x0953 */
+      0xFFFF, /* 0x0954 */
+      0xFFFF, /* 0x0955 */
+      0xFFFF, /* 0x0956 */
+      0xFFFF, /* 0x0957 */
+      0xb3e9, /* 0x0958 */ 
+      0xb4e9, /* 0x0959 */
+      0xb5e9, /* 0x095a */
+      0xbae9, /* 0x095b */
+      0xbfe9, /* 0x095c */
+      0xC0E9, /* 0x095d */
+      0xc9e9, /* 0x095e */
+      0x00ce, /* 0x095f */
+      0xAAe9, /* 0x0960 */ 
+      0xA7E9, /* 0x0961 */
+      0xDBE9, /* 0x0962 */
+      0xDCE9, /* 0x0963 */
+      0x00ea, /* 0x0964 */
+      0xeaea, /* 0x0965 */
+      0x00f1, /* 0x0966 */
+      0x00f2, /* 0x0967 */
+      0x00f3, /* 0x0968 */ 
+      0x00f4, /* 0x0969 */
+      0x00f5, /* 0x096a */
+      0x00f6, /* 0x096b */
+      0x00f7, /* 0x096c */
+      0x00f8, /* 0x096d */
+      0x00f9, /* 0x096e */
+      0x00fa, /* 0x096f */
+      0xF0BF, /* 0x0970 */ 
+      0xFFFF, /* 0x0971 */
+      0xFFFF, /* 0x0972 */
+      0xFFFF, /* 0x0973 */
+      0xFFFF, /* 0x0974 */
+      0xFFFF, /* 0x0975 */
+      0xFFFF, /* 0x0976 */
+      0xFFFF, /* 0x0977 */
+      0xFFFF, /* 0x0978 */ 
+      0xFFFF, /* 0x0979 */
+      0xFFFF, /* 0x097a */
+      0xFFFF, /* 0x097b */
+      0xFFFF, /* 0x097c */
+      0xFFFF, /* 0x097d */
+      0xFFFF, /* 0x097e */
+      0xFFFF, /* 0x097f */
+    };
+    private static final char toUnicodeTable[] = {
+        0x0000, /* 0x00 */
+        0x0001, /* 0x01 */
+        0x0002, /* 0x02 */
+        0x0003, /* 0x03 */
+        0x0004, /* 0x04 */
+        0x0005, /* 0x05 */
+        0x0006, /* 0x06 */
+        0x0007, /* 0x07 */
+        0x0008, /* 0x08 */
+        0x0009, /* 0x09 */
+        0x000a, /* 0x0a */
+        0x000b, /* 0x0b */
+        0x000c, /* 0x0c */
+        0x000d, /* 0x0d */
+        0x000e, /* 0x0e */
+        0x000f, /* 0x0f */
+        0x0010, /* 0x10 */
+        0x0011, /* 0x11 */
+        0x0012, /* 0x12 */
+        0x0013, /* 0x13 */
+        0x0014, /* 0x14 */
+        0x0015, /* 0x15 */
+        0x0016, /* 0x16 */
+        0x0017, /* 0x17 */
+        0x0018, /* 0x18 */
+        0x0019, /* 0x19 */
+        0x001a, /* 0x1a */
+        0x001b, /* 0x1b */
+        0x001c, /* 0x1c */
+        0x001d, /* 0x1d */
+        0x001e, /* 0x1e */
+        0x001f, /* 0x1f */
+        0x0020, /* 0x20 */
+        0x0021, /* 0x21 */
+        0x0022, /* 0x22 */
+        0x0023, /* 0x23 */
+        0x0024, /* 0x24 */
+        0x0025, /* 0x25 */
+        0x0026, /* 0x26 */
+        0x0027, /* 0x27 */
+        0x0028, /* 0x28 */
+        0x0029, /* 0x29 */
+        0x002a, /* 0x2a */
+        0x002b, /* 0x2b */
+        0x002c, /* 0x2c */
+        0x002d, /* 0x2d */
+        0x002e, /* 0x2e */
+        0x002f, /* 0x2f */
+        0x0030, /* 0x30 */
+        0x0031, /* 0x31 */
+        0x0032, /* 0x32 */
+        0x0033, /* 0x33 */
+        0x0034, /* 0x34 */
+        0x0035, /* 0x35 */
+        0x0036, /* 0x36 */
+        0x0037, /* 0x37 */
+        0x0038, /* 0x38 */
+        0x0039, /* 0x39 */
+        0x003A, /* 0x3A */
+        0x003B, /* 0x3B */
+        0x003c, /* 0x3c */
+        0x003d, /* 0x3d */
+        0x003e, /* 0x3e */
+        0x003f, /* 0x3f */
+        0x0040, /* 0x40 */
+        0x0041, /* 0x41 */
+        0x0042, /* 0x42 */
+        0x0043, /* 0x43 */
+        0x0044, /* 0x44 */
+        0x0045, /* 0x45 */
+        0x0046, /* 0x46 */
+        0x0047, /* 0x47 */
+        0x0048, /* 0x48 */
+        0x0049, /* 0x49 */
+        0x004a, /* 0x4a */
+        0x004b, /* 0x4b */
+        0x004c, /* 0x4c */
+        0x004d, /* 0x4d */
+        0x004e, /* 0x4e */
+        0x004f, /* 0x4f */
+        0x0050, /* 0x50 */
+        0x0051, /* 0x51 */
+        0x0052, /* 0x52 */
+        0x0053, /* 0x53 */
+        0x0054, /* 0x54 */
+        0x0055, /* 0x55 */
+        0x0056, /* 0x56 */
+        0x0057, /* 0x57 */
+        0x0058, /* 0x58 */
+        0x0059, /* 0x59 */
+        0x005a, /* 0x5a */
+        0x005b, /* 0x5b */
+        0x005c, /* 0x5c */
+        0x005d, /* 0x5d */
+        0x005e, /* 0x5e */
+        0x005f, /* 0x5f */
+        0x0060, /* 0x60 */
+        0x0061, /* 0x61 */
+        0x0062, /* 0x62 */
+        0x0063, /* 0x63 */
+        0x0064, /* 0x64 */
+        0x0065, /* 0x65 */
+        0x0066, /* 0x66 */
+        0x0067, /* 0x67 */
+        0x0068, /* 0x68 */
+        0x0069, /* 0x69 */
+        0x006a, /* 0x6a */
+        0x006b, /* 0x6b */
+        0x006c, /* 0x6c */
+        0x006d, /* 0x6d */
+        0x006e, /* 0x6e */
+        0x006f, /* 0x6f */
+        0x0070, /* 0x70 */
+        0x0071, /* 0x71 */
+        0x0072, /* 0x72 */
+        0x0073, /* 0x73 */
+        0x0074, /* 0x74 */
+        0x0075, /* 0x75 */
+        0x0076, /* 0x76 */
+        0x0077, /* 0x77 */
+        0x0078, /* 0x78 */
+        0x0079, /* 0x79 */
+        0x007a, /* 0x7a */
+        0x007b, /* 0x7b */
+        0x007c, /* 0x7c */
+        0x007d, /* 0x7d */
+        0x007e, /* 0x7e */
+        0x007f, /* 0x7f */
+        0x0080, /* 0x80 */
+        0x0081, /* 0x81 */
+        0x0082, /* 0x82 */
+        0x0083, /* 0x83 */
+        0x0084, /* 0x84 */
+        0x0085, /* 0x85 */
+        0x0086, /* 0x86 */
+        0x0087, /* 0x87 */
+        0x0088, /* 0x88 */
+        0x0089, /* 0x89 */
+        0x008a, /* 0x8a */
+        0x008b, /* 0x8b */
+        0x008c, /* 0x8c */
+        0x008d, /* 0x8d */
+        0x008e, /* 0x8e */
+        0x008f, /* 0x8f */
+        0x0090, /* 0x90 */
+        0x0091, /* 0x91 */
+        0x0092, /* 0x92 */
+        0x0093, /* 0x93 */
+        0x0094, /* 0x94 */
+        0x0095, /* 0x95 */
+        0x0096, /* 0x96 */
+        0x0097, /* 0x97 */
+        0x0098, /* 0x98 */
+        0x0099, /* 0x99 */
+        0x009a, /* 0x9a */
+        0x009b, /* 0x9b */
+        0x009c, /* 0x9c */
+        0x009d, /* 0x9d */
+        0x009e, /* 0x9e */
+        0x009f, /* 0x9f */
+        0x00A0, /* 0xa0 */
+        0x0901, /* 0xa1 */
+        0x0902, /* 0xa2 */
+        0x0903, /* 0xa3 */
+        0x0905, /* 0xa4 */
+        0x0906, /* 0xa5 */
+        0x0907, /* 0xa6 */
+        0x0908, /* 0xa7 */
+        0x0909, /* 0xa8 */
+        0x090a, /* 0xa9 */
+        0x090b, /* 0xaa */
+        0x090e, /* 0xab */
+        0x090f, /* 0xac */
+        0x0910, /* 0xad */
+        0x090d, /* 0xae */
+        0x0912, /* 0xaf */
+        0x0913, /* 0xb0 */
+        0x0914, /* 0xb1 */
+        0x0911, /* 0xb2 */
+        0x0915, /* 0xb3 */
+        0x0916, /* 0xb4 */
+        0x0917, /* 0xb5 */
+        0x0918, /* 0xb6 */
+        0x0919, /* 0xb7 */
+        0x091a, /* 0xb8 */
+        0x091b, /* 0xb9 */
+        0x091c, /* 0xba */
+        0x091d, /* 0xbb */
+        0x091e, /* 0xbc */
+        0x091f, /* 0xbd */
+        0x0920, /* 0xbe */
+        0x0921, /* 0xbf */
+        0x0922, /* 0xc0 */
+        0x0923, /* 0xc1 */
+        0x0924, /* 0xc2 */
+        0x0925, /* 0xc3 */
+        0x0926, /* 0xc4 */
+        0x0927, /* 0xc5 */
+        0x0928, /* 0xc6 */
+        0x0929, /* 0xc7 */
+        0x092a, /* 0xc8 */
+        0x092b, /* 0xc9 */
+        0x092c, /* 0xca */
+        0x092d, /* 0xcb */
+        0x092e, /* 0xcc */
+        0x092f, /* 0xcd */
+        0x095f, /* 0xce */
+        0x0930, /* 0xcf */
+        0x0931, /* 0xd0 */
+        0x0932, /* 0xd1 */
+        0x0933, /* 0xd2 */
+        0x0934, /* 0xd3 */
+        0x0935, /* 0xd4 */
+        0x0936, /* 0xd5 */
+        0x0937, /* 0xd6 */
+        0x0938, /* 0xd7 */
+        0x0939, /* 0xd8 */
+        0x200D, /* 0xd9 */
+        0x093e, /* 0xda */
+        0x093f, /* 0xdb */
+        0x0940, /* 0xdc */
+        0x0941, /* 0xdd */
+        0x0942, /* 0xde */
+        0x0943, /* 0xdf */
+        0x0946, /* 0xe0 */
+        0x0947, /* 0xe1 */
+        0x0948, /* 0xe2 */
+        0x0945, /* 0xe3 */
+        0x094a, /* 0xe4 */
+        0x094b, /* 0xe5 */
+        0x094c, /* 0xe6 */
+        0x0949, /* 0xe7 */
+        0x094d, /* 0xe8 */
+        0x093c, /* 0xe9 */
+        0x0964, /* 0xea */
+        0xFFFF, /* 0xeb */
+        0xFFFF, /* 0xec */
+        0xFFFF, /* 0xed */
+        0xFFFF, /* 0xee */
+        0xFFFF, /* 0xef */
+        0xFFFF, /* 0xf0 */
+        0x0966, /* 0xf1 */
+        0x0967, /* 0xf2 */
+        0x0968, /* 0xf3 */
+        0x0969, /* 0xf4 */
+        0x096a, /* 0xf5 */
+        0x096b, /* 0xf6 */
+        0x096c, /* 0xf7 */
+        0x096d, /* 0xf8 */
+        0x096e, /* 0xf9 */
+        0x096f, /* 0xfa */
+        0xFFFF, /* 0xfb */
+        0xFFFF, /* 0xfc */
+        0xFFFF, /* 0xfd */
+        0xFFFF, /* 0xfe */
+        0xFFFF, /* 0xff */
+    };
+    private static final char nuktaSpecialCases[][] = {
+        { 16 /* length of array */ , 0 },
+        { 0xa6, 0x090c },
+        { 0xea, 0x093d },
+        { 0xdf, 0x0944 },
+        { 0xa1, 0x0950 },
+        { 0xb3, 0x0958 },
+        { 0xb4, 0x0959 },
+        { 0xb5, 0x095a },
+        { 0xba, 0x095b },
+        { 0xbf, 0x095c },
+        { 0xc0, 0x095d },
+        { 0xc9, 0x095e },
+        { 0xaa, 0x0960 },
+        { 0xa7, 0x0961 },
+        { 0xdb, 0x0962 },
+        { 0xdc, 0x0963 }
+    };
+    private static final char vowelSignESpecialCases[][] = {
+        { 2 /* length of array */ , 0 },
+        { 0xA4, 0x0904 }
+    };
+    
+    private static final short lookupTable[][] = {
+        { MaskEnum.ZERO, MaskEnum.ZERO }, /* DEFAULT */
+        { MaskEnum.ZERO, MaskEnum.ZERO }, /* ROMAN */
+        { UniLang.DEVALANGARI, MaskEnum.DEV_MASK },
+        { UniLang.BENGALI, MaskEnum.BNG_MASK },
+        { UniLang.TAMIL, MaskEnum.TML_MASK },
+        { UniLang.TELUGU, MaskEnum.KND_MASK },
+        { UniLang.BENGALI, MaskEnum.BNG_MASK },
+        { UniLang.ORIYA, MaskEnum.ORI_MASK },
+        { UniLang.KANNADA, MaskEnum.KND_MASK },
+        { UniLang.MALAYALAM, MaskEnum.MLM_MASK },
+        { UniLang.GUJARATI, MaskEnum.GJR_MASK },
+        { UniLang.GURMUKHI, MaskEnum.PNJ_MASK }
+    };
+    
+    private UConverterDataISCII extraInfo = null;
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x1A};
+    
+    public CharsetISCII(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 4; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        //get the version number of the ISCII converter
+        int option = Integer.parseInt(icuCanonicalName.substring(14));
+        
+        extraInfo = new UConverterDataISCII( 
+                            option,
+                            new String(ISCII_CNV_PREFIX + (option & UCNV_OPTIONS_VERSION_MASK))  /* name */
+                        );
+        
+        initializePNJSets();
+    }
+    
+    /* Initialize the two UnicodeSets use for proper Gurmukhi conversion if they have not already been created. */
+    private void initializePNJSets() {
+        if (PNJ_BINDI_TIPPI_SET != null && PNJ_CONSONANT_SET != null) {
+            return;
+        }
+        PNJ_BINDI_TIPPI_SET = new UnicodeSet();
+        PNJ_CONSONANT_SET = new UnicodeSet();
+        
+        PNJ_CONSONANT_SET.add(0x0a15, 0x0a28);
+        PNJ_CONSONANT_SET.add(0x0a2a, 0x0a30);
+        PNJ_CONSONANT_SET.add(0x0a35, 0x0a36);
+        PNJ_CONSONANT_SET.add(0x0a38, 0x0a39);
+        
+        PNJ_BINDI_TIPPI_SET.addAll(PNJ_CONSONANT_SET);
+        PNJ_BINDI_TIPPI_SET.add(0x0a05);
+        PNJ_BINDI_TIPPI_SET.add(0x0a07);
+        
+        PNJ_BINDI_TIPPI_SET.add(0x0a41, 0x0a42);
+        PNJ_BINDI_TIPPI_SET.add(0x0a3f);
+        
+        PNJ_CONSONANT_SET.compact();
+        PNJ_BINDI_TIPPI_SET.compact();
+    }
+    
+    /*
+     * Rules for ISCII to Unicode converter
+     * ISCII is a stateful encoding. To convert ISCII bytes to Unicode,
+     * which is both precomposed and decomposed from characters
+     * pre-context and post-context need to be considered.
+     * 
+     * Post context
+     * i) ATR : Attribute code is used to declare the font and script switching.
+     *    Currently we only switch scripts and font codes consumed without generating an error
+     * ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
+     *     obsolete characters
+     * Pre context
+     * i) Halant: if preceeded by a halant then it is a explicit halant
+     * ii) Nukta:
+     *     a) if preceeded by a halant then it is a soft halant
+     *     b) if preceeded by specific consonants and the ligatures have pre-composed
+     *        characters in Unicode then convert to pre-composed characters
+     * iii) Danda: If Danda is preceeded by a Danda then convert to Double Danda 
+     */
+    class CharsetDecoderISCII extends CharsetDecoderICU {
+        public CharsetDecoderISCII(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+            this.toUnicodeStatus = 0xFFFF;
+            extraInfo.initialize();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int targetUniChar = 0x0000;
+            short sourceChar = 0x0000;
+            UConverterDataISCII data;
+            boolean gotoCallBack = false;
+            int offset = 0;
+            
+            data = extraInfo;
+            //data.contextCharToUnicode; /* contains previous ISCII codepoint visited */
+            //this.toUnicodeStatus; /* contains the mapping to Unicode of the above codepoint */
+            
+            while (source.hasRemaining()) {
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining()) {
+                    sourceChar = (short)((short)source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    
+                    /* look at the post-context perform special processing */
+                    if (data.contextCharToUnicode == ATR) {
+                        /* If we have ATR in data.contextCharToUnicode then we need to change our
+                         * state to Indic Script specified by sourceChar
+                         */
+                        /* check if the sourceChar is supported script range */
+                        if (((short)(ISCIILang.PNJ - sourceChar) & UConverterConstants.UNSIGNED_BYTE_MASK) <= (ISCIILang.PNJ - ISCIILang.DEV)) {
+                            data.currentDeltaToUnicode = (short)(lookupTable[sourceChar & 0x0F][0] * UniLang.DELTA);
+                            data.currentMaskToUnicode = lookupTable[sourceChar & 0x0F][1];
+                        } else if (sourceChar == ISCIILang.DEF) {
+                            /* switch back to default */
+                            data.currentDeltaToUnicode = data.defDeltaToUnicode;
+                            data.currentMaskToUnicode = data.defMaskToUnicode;
+                        } else {
+                            if ((sourceChar >= 0x21 && sourceChar <= 0x3F)) {
+                                /* these are display codes consume and continue */
+                            } else {
+                                cr = CoderResult.malformedForLength(1);
+                                /* reset */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                gotoCallBack = true;
+                            }
+                        }
+                        /* reset */
+                        if (!gotoCallBack) {
+                            data.contextCharToUnicode = NO_CHAR_MARKER;
+                            continue;
+                        }
+                    } else if (data.contextCharToUnicode == EXT) {
+                        /* check if sourceChar is in 0xA1 - 0xEE range */
+                        if (((short)(EXT_RANGE_END - sourceChar) & UConverterConstants.UNSIGNED_BYTE_MASK) <= (EXT_RANGE_END - EXT_RANGE_BEGIN)) {
+                            /* We currently support only Anudatta and Devanagari abbreviation sign */
+                            if (sourceChar == 0xBF || sourceChar == 0xB8) {
+                                targetUniChar = (sourceChar == 0xBF) ? DEV_ABBR_SIGN : DEV_ANUDATTA;
+                                
+                                /* find out if the mappling is valid in this state */
+                                if ((validityTable[((short)targetUniChar) & UConverterConstants.UNSIGNED_BYTE_MASK] & data.currentMaskToUnicode) > 0) {
+                                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                                    
+                                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                    if (data.prevToUnicodeStatus != 0) {
+                                        cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                        data.prevToUnicodeStatus = 0x0000;
+                                    }
+                                    /* write to target */
+                                    cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                                    
+                                    continue;
+                                }
+                            }
+                            /* byte unit is unassigned */
+                            targetUniChar = UConverterConstants.missingCharMarker;
+                            cr = CoderResult.unmappableForLength(1);
+                        } else {
+                            /* only 0xA1 - 0xEE are legal after EXT char */
+                            data.contextCharToUnicode = NO_CHAR_MARKER;
+                            cr = CoderResult.malformedForLength(1); 
+                        }
+                        gotoCallBack = true;
+                    } else if (data.contextCharToUnicode == ISCII_INV) {
+                        if (sourceChar == ISCII_HALANT) {
+                            targetUniChar = 0x0020; /* replace with space according to Indic FAQ */
+                        } else {
+                            targetUniChar = ZWJ;
+                        }
+                        
+                        /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                        if (data.prevToUnicodeStatus != 0) {
+                            cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                            data.prevToUnicodeStatus = 0x0000;
+                        }
+                        
+                        /* write to target */
+                        cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                        /* reset */
+                        data.contextCharToUnicode = NO_CHAR_MARKER;
+                    }
+                    
+                    /* look at the pre-context and perform special processing */
+                    if (!gotoCallBack) {
+                        switch (sourceChar) {
+                        case ISCII_INV:
+                        case EXT: /* falls through */
+                        case ATR:
+                            data.contextCharToUnicode = (char)sourceChar;
+                            
+                            if (this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                if (data.prevToUnicodeStatus != 0) {
+                                    cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                    data.prevToUnicodeStatus = 0x0000;
+                                }
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode); 
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            }
+                            continue;
+                        case ISCII_DANDA:
+                            /* handle double danda */
+                            if (data.contextCharToUnicode == ISCII_DANDA) {
+                                targetUniChar = DOUBLE_DANDA;
+                                /* clear the context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            } else {
+                                targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                                data.contextCharToUnicode = (char)sourceChar;
+                            }
+                            break;
+                        case ISCII_HALANT:
+                            /* handle explicit halant */
+                            if (data.contextCharToUnicode == ISCII_HALANT) {
+                                targetUniChar = ZWNJ;
+                                /* clear context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                            } else {
+                                targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                                data.contextCharToUnicode = (char)sourceChar;
+                            }
+                            break;
+                        case 0x0A:
+                            /* fall through */
+                        case 0x0D:
+                            data.resetToDefaultToUnicode = true;
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;
+                        case ISCII_VOWEL_SIGN_E:
+                            /* find <CHAR> + SIGN_VOWEL_E special mapping */
+                            int n = 1;
+                            boolean find = false;
+                            for (; n < vowelSignESpecialCases[0][0]; n++) {
+                                if (vowelSignESpecialCases[n][0] == ((short)data.contextCharToUnicode & UConverterConstants.UNSIGNED_BYTE_MASK)) {
+                                    targetUniChar = vowelSignESpecialCases[n][1];
+                                    find = true;
+                                    break;
+                                }
+                            }
+                            if (find) {
+                                /* find out if the mapping is valid in this state */
+                                if ((validityTable[(byte)targetUniChar] & data.currentMaskFromUnicode) > 0) {
+                                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                                    this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                    break;
+                                }
+                            }
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;                         
+                        case ISCII_NUKTA:
+                            /* handle soft halant */
+                            if (data.contextCharToUnicode == ISCII_HALANT) {
+                                targetUniChar = ZWJ;
+                                /* clear the context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                break;
+                            } else if (data.currentDeltaToUnicode == PNJ_DELTA && data.contextCharToUnicode == 0xc0) {
+                                /* We got here because ISCII_NUKTA was preceded by 0xc0 and we are converting Gurmukhi.
+                                 * In that case we must convert (0xc0 0xe9) to (\u0a5c\u0a4d\u0a39).
+                                 * WriteToTargetToU is given 0x095c instead of 0xa5c because that method will automatically
+                                 * convert the code point given based on the delta provided.
+                                 */
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_RRA, (short)0);
+                                if (!cr.isOverflow()) {
+                                    cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_SIGN_VIRAMA, (short)0);
+                                    if (!cr.isOverflow()) {
+                                        cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_HA, (short)0);
+                                    } else {
+                                        this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_HA;
+                                    }
+                                } else {
+                                    this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_SIGN_VIRAMA;
+                                    this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_HA;
+                                }
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                if (!cr.isError()) {
+                                    continue;
+                                }
+                                break;
+                            } else {
+                                /* try to handle <CHAR> + ISCII_NUKTA special mappings */
+                                int i = 1;
+                                boolean found = false;
+                                for (; i < nuktaSpecialCases[0][0]; i++) {
+                                    if (nuktaSpecialCases[i][0] == ((short)data.contextCharToUnicode & UConverterConstants.UNSIGNED_BYTE_MASK)) {
+                                        targetUniChar  = nuktaSpecialCases[i][1];
+                                        found = true;
+                                        break;
+                                    }
+                                }
+                                if (found) {
+                                    /* find out if the mapping is valid in this state */
+                                    if ((validityTable[(byte)targetUniChar] & data.currentMaskToUnicode) > 0) {
+                                        data.contextCharToUnicode = NO_CHAR_MARKER;
+                                        this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                        if (data.currentDeltaToUnicode == PNJ_DELTA) {
+                                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                            if (data.prevToUnicodeStatus != 0) {
+                                                cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                                data.prevToUnicodeStatus = 0x0000;
+                                            }
+                                            cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                                            continue;
+                                        }
+                                        break;
+                                    }
+                                    /* else fall through to default */
+                                }
+                                /* else fall through to default */
+                            }
+                        
+                        default:
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;
+                        } //end of switch
+                    }//end of CallBack if statement
+                    
+                    if (!gotoCallBack && this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                        /* Check to make sure that consonant clusters are handled correctly for Gurmukhi script. */
+                        if (data.currentDeltaToUnicode == PNJ_DELTA && data.prevToUnicodeStatus != 0 && PNJ_CONSONANT_SET.contains(data.prevToUnicodeStatus) &&
+                                (this.toUnicodeStatus + PNJ_DELTA) == PNJ_SIGN_VIRAMA && (targetUniChar + PNJ_DELTA) == data.prevToUnicodeStatus) {
+                            if (offsets != null) {
+                                offset = source.position() - 3;
+                            }
+                            cr = WriteToTargetToU(offsets, offset, source, target, PNJ_ADHAK, (short)0);
+                            cr = WriteToTargetToU(offsets, offset, source, target, data.prevToUnicodeStatus, (short)0);
+                            data.prevToUnicodeStatus = 0x0000; /* reset the previous unicode code point */
+                            toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            continue;
+                        } else {
+                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                            if (data.prevToUnicodeStatus != 0) {
+                                cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                data.prevToUnicodeStatus = 0x0000;
+                            }
+                            /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. 
+                             * If 0xA2 is preceded by a codepoint in the PNJ_BINDI_TIPPI_SET then the target codepoint should be Tippi instead of Bindi.
+                             */
+                            if (data.currentDeltaToUnicode == PNJ_DELTA  && (targetUniChar + PNJ_DELTA) == PNJ_BINDI && PNJ_BINDI_TIPPI_SET.contains(this.toUnicodeStatus + PNJ_DELTA)) {
+                                targetUniChar = PNJ_TIPPI - PNJ_DELTA;
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, PNJ_DELTA);
+                            } else if (data.currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_SIGN_VIRAMA && PNJ_CONSONANT_SET.contains(this.toUnicodeStatus + PNJ_DELTA)) {
+                                /* Store the current toUnicodeStatus code point for later handling of consonant cluster in Gurmukhi. */
+                                data.prevToUnicodeStatus = this.toUnicodeStatus + PNJ_DELTA;
+                            } else {
+                                /* write the previously mapped codepoint */
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode);
+                            }
+                        }
+                        this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                    }
+                    
+                    if (!gotoCallBack && targetUniChar != UConverterConstants.missingCharMarker) {
+                        /* now save the targetUniChar for delayed write */
+                        this.toUnicodeStatus = (char)targetUniChar;
+                        if (data.resetToDefaultToUnicode) {
+                            data.currentDeltaToUnicode = data.defDeltaToUnicode;
+                            data.currentMaskToUnicode = data.defMaskToUnicode;
+                            data.resetToDefaultToUnicode = false;
+                        }
+                    } else {
+                        /* we reach here only if targetUniChar == missingCharMarker
+                         * so assign codes to reason and err
+                         */
+                        if (!gotoCallBack) {
+                            cr = CoderResult.unmappableForLength(1);
+                        }
+//CallBack :
+                        toUBytesArray[0] = (byte)sourceChar;
+                        toULength = 1;
+                        gotoCallBack = false;
+                        break;
+                    }
+                } else {
+                    cr = CoderResult.OVERFLOW;
+                    break;
+                }
+                
+            } //end of while
+            
+            if (cr.isUnderflow() && flush && !source.hasRemaining()) {
+                /*end of the input stream */
+                if (data.contextCharToUnicode == ATR || data.contextCharToUnicode == EXT || data.contextCharToUnicode == ISCII_INV) {
+                    /* set toUBytes[] */
+                    toUBytesArray[0] = (byte)data.contextCharToUnicode;
+                    toULength = 1;
+                    
+                    /* avoid looping on truncated sequences */
+                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                } else {
+                    toULength = 0;
+                }
+                
+                if (this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                    /* output a remaining target character */
+                    WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode);
+                    this.toUnicodeStatus = UConverterConstants.missingCharMarker;    
+                }
+            }
+            return cr;
+        }
+        
+        private CoderResult WriteToTargetToU(IntBuffer offsets, int offset, ByteBuffer source, CharBuffer target, int targetUniChar, short delta) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            /* add offset to current Indic Block */
+            if (targetUniChar > ASCII_END &&
+                    targetUniChar != ZWJ &&
+                    targetUniChar != ZWNJ &&
+                    targetUniChar != DANDA &&
+                    targetUniChar != DOUBLE_DANDA) {
+                targetUniChar += delta;
+            }
+            
+            /* now write the targetUniChar */
+            if (target.hasRemaining()) {
+                target.put((char)targetUniChar);
+                if (offsets != null) {
+                    offsets.put(offset);
+                }
+            } else {
+                charErrorBufferArray[charErrorBufferLength++] = (char)targetUniChar;
+                cr = CoderResult.OVERFLOW;
+            }
+            return cr;
+        }
+        
+        private int GetMapping(short sourceChar, int targetUniChar, UConverterDataISCII data) {
+            targetUniChar = toUnicodeTable[sourceChar];
+            /* is the code point valid in current script? */
+            if (sourceChar > ASCII_END &&
+                    (validityTable[(short)targetUniChar & UConverterConstants.UNSIGNED_BYTE_MASK] & data.currentMaskToUnicode) == 0) {
+                /* Vocallic RR is assigne in ISCII Telugu and Unicode */
+                if (data.currentDeltaToUnicode != (TELUGU_DELTA) || targetUniChar != VOCALLIC_RR) {
+                    targetUniChar = UConverterConstants.missingCharMarker;
+                }
+            }
+            return targetUniChar;
+        }
+    }
+    
+    /*
+     * Rules:
+     *   Explicit Halant :
+     *     <HALANT> + <ZWNJ>
+     *   Soft Halant :
+     *     <HALANT> + <ZWJ>
+     */
+    class CharsetEncoderISCII extends CharsetEncoderICU {
+        public CharsetEncoderISCII(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            extraInfo.initialize();
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            int targetByteUnit = 0x0000;
+            int sourceChar = 0x0000;
+            UConverterDataISCII converterData;
+            short newDelta = 0;
+            short range = 0;
+            boolean deltaChanged = false;
+            int tempContextFromUnicode = 0x0000;    /* For special handling of the Gurmukhi script. */
+            CoderResult cr = CoderResult.UNDERFLOW;
+            
+            /* initialize data */
+            converterData = extraInfo;
+            newDelta = converterData.currentDeltaFromUnicode;
+            range = (short)(newDelta / UniLang.DELTA);
+            
+            if ((sourceChar = fromUChar32) != 0) {
+                cr = handleSurrogates(source, (char) sourceChar);
+                return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+            }
+            
+            /* writing the char to the output stream */
+            while (source.hasRemaining()) {
+                if (!target.hasRemaining()) {
+                    return CoderResult.OVERFLOW;
+                }
+                
+                /* Write the language code following LF only if LF is not the last character. */
+                if (fromUnicodeStatus == LF) {
+                    targetByteUnit = ATR << 8;
+                    targetByteUnit += (byte)lookupInitialData[range].isciiLang;
+                    fromUnicodeStatus = 0x0000;
+                    /* now append ATR and language code */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                }
+                
+                sourceChar = source.get();
+                tempContextFromUnicode = converterData.contextCharFromUnicode;
+                
+                targetByteUnit = UConverterConstants.missingCharMarker;
+                
+                /* check if input is in ASCII and C0 control codes range */
+                if (sourceChar <= ASCII_END) {
+                    fromUnicodeStatus = sourceChar;
+                    cr = WriteToTargetFromU(offsets, source, target, sourceChar);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                    continue;
+                }
+                
+                switch (sourceChar) {
+                case ZWNJ:
+                    /* contextChar has HALANT */
+                    if (converterData.contextCharFromUnicode != 0) {
+                        converterData.contextCharFromUnicode = 0x00;
+                        targetByteUnit = ISCII_HALANT;
+                    } else {
+                        /* consume ZWNJ and continue */
+                        converterData.contextCharFromUnicode = 0x00;
+                        continue;
+                    }
+                    break;
+                case ZWJ:
+                    /* contextChar has HALANT */
+                    if (converterData.contextCharFromUnicode != 0) {
+                        targetByteUnit = ISCII_NUKTA;
+                    } else {
+                        targetByteUnit = ISCII_INV;
+                    }
+                    converterData.contextCharFromUnicode = 0x00;
+                    break;
+                default:
+                    /* is the sourceChar in the INDIC_RANGE? */
+                    if((char)(INDIC_BLOCK_END - sourceChar) <= INDIC_RANGE) {
+                        /* Danda and Doube Danda are valid in Northern scripts.. since Unicode
+                         * does not include these codepoints in all Northern scripts we need to
+                         * filter them out
+                         */
+                        if (sourceChar != DANDA && sourceChar != DOUBLE_DANDA) {
+                            /* find out to which block the sourceChar belongs */
+                            range = (short)((sourceChar - INDIC_BLOCK_BEGIN) / UniLang.DELTA);
+                            newDelta = (short)(range * UniLang.DELTA);
+                        
+                            /* Now are we in the same block as previous? */
+                            if (newDelta != converterData.currentDeltaFromUnicode || converterData.isFirstBuffer) {
+                                converterData.currentDeltaFromUnicode = newDelta;
+                                converterData.currentMaskFromUnicode = lookupInitialData[range].maskEnum;
+                                deltaChanged = true;
+                                converterData.isFirstBuffer = false;
+                            }
+                            if (converterData.currentDeltaFromUnicode == PNJ_DELTA) {
+                                if (sourceChar == PNJ_TIPPI) {
+                                    /* Make sure Tippi is converterd to Bindi. */
+                                    sourceChar = PNJ_BINDI;
+                                } else if (sourceChar == PNJ_ADHAK) {
+                                    /* This is for consonant cluster handling. */
+                                    converterData.contextCharFromUnicode = PNJ_ADHAK;
+                                }
+                            }
+                            /* Normalize all Indic codepoints to Devanagari and map them to ISCII */
+                            /* now subtract the new delta from sourceChar */
+                            sourceChar -= converterData.currentDeltaFromUnicode;
+                        }
+                        /* get the target byte unit */
+                        targetByteUnit = fromUnicodeTable[(short)sourceChar & UConverterConstants.UNSIGNED_BYTE_MASK];
+                        
+                        /* is the code point valid in current script? */
+                        if ((validityTable[(short)sourceChar & UConverterConstants.UNSIGNED_BYTE_MASK] & converterData.currentMaskFromUnicode) == 0) {
+                            /* Vocallic RR is assigned in ISCII Telugu and Unicode */
+                            if (converterData.currentDeltaFromUnicode != (TELUGU_DELTA) || sourceChar != VOCALLIC_RR) {
+                                targetByteUnit = UConverterConstants.missingCharMarker;
+                            }
+                        }
+                        
+                        if (deltaChanged) {
+                            /* we are in a script block which is different than
+                             * previous sourceChar's script block write ATR and language codes
+                             */
+                            char temp = 0;
+                            temp = (char)(ATR << 8);
+                            temp += (char)((short)lookupInitialData[range].isciiLang & UConverterConstants.UNSIGNED_BYTE_MASK);
+                            /* reset */
+                            deltaChanged = false;
+                            /* now append ATR and language code */
+                            cr = WriteToTargetFromU(offsets, source, target, temp);
+                            if (cr.isOverflow()) {
+                                break;
+                            }
+                        }
+                        if (converterData.currentDeltaFromUnicode == PNJ_DELTA && (sourceChar + PNJ_DELTA) == PNJ_ADHAK) {
+                            continue;
+                        }
+                    }
+                    /* reset context char */
+                    converterData.contextCharFromUnicode = 0x00;
+                    break;
+                } //end of switch
+                if (converterData.currentDeltaFromUnicode == PNJ_DELTA && tempContextFromUnicode == PNJ_ADHAK && PNJ_CONSONANT_SET.contains(sourceChar + PNJ_DELTA)) {
+                    /* If the previous codepoint is Adhak and the current codepoint is a consonant, the targetByteUnit should be C + Halant + C. */
+                    /* reset context char */
+                    converterData.contextCharFromUnicode = 0x0000;
+                    targetByteUnit = targetByteUnit << 16 | ISCII_HALANT << 8 | targetByteUnit;
+                    /*write targetByteUnit to target */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                } else if (targetByteUnit != UConverterConstants.missingCharMarker) {
+                    if (targetByteUnit == ISCII_HALANT) {
+                        converterData.contextCharFromUnicode = (char)targetByteUnit;
+                    }
+                    /*write targetByteUnit to target */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                } else if (UTF16.isSurrogate((char)sourceChar)) {
+                    cr = handleSurrogates(source, (char) sourceChar);
+                    return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+                } else {
+                    return CoderResult.unmappableForLength(1);
+                }
+            } /* end of while */
+            
+            /* save the state and return */
+            return cr;
+        }
+        
+        private CoderResult WriteToTargetFromU(IntBuffer offsets, CharBuffer source, ByteBuffer target, int targetByteUnit) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int offset = source.position() - 1;
+            /* write the targetUniChar to target */
+            if (target.hasRemaining()) {
+                if (targetByteUnit <= 0xFF) {
+                    target.put((byte)targetByteUnit);
+                    if (offsets != null) {
+                        offsets.put(offset);
+                    }
+                } else {
+                    if (targetByteUnit > 0xFFFF) {
+                        target.put((byte)(targetByteUnit >> 16));
+                        if (offsets != null) {
+                            --offset;
+                            offsets.put(offset);
+                        }
+                    } 
+                    if (!target.hasRemaining()) {
+                        errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 8);
+                        errorBuffer[errorBufferLength++] = (byte)targetByteUnit;
+                        cr = CoderResult.OVERFLOW;
+                        return cr;
+                    }
+                    target.put((byte)(targetByteUnit >> 8));
+                    if (offsets != null) {
+                        offsets.put(offset);
+                    }
+                    if (target.hasRemaining()) {
+                        target.put((byte)targetByteUnit);
+                        if (offsets != null) {
+                            offsets.put(offset);
+                        }
+                    } else {
+                        errorBuffer[errorBufferLength++] = (byte)targetByteUnit;
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            } else {
+                if ((targetByteUnit > 0xFFFF)) {
+                    errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 16);
+                } else if ((targetByteUnit & 0xFF00) > 0) {
+                    errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 8);
+                }
+                errorBuffer[errorBufferLength++] = (byte)(targetByteUnit);
+                cr = CoderResult.OVERFLOW;
+            }
+            return cr;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderISCII(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderISCII(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        int idx,script;
+        char mask;
+        
+        setFillIn.add(0,ASCII_END );
+        for(script = UniLang.DEVALANGARI ; script<= UniLang.MALAYALAM ;script++){
+            mask = (char)lookupInitialData[script].maskEnum;
+            for(idx=0; idx < UniLang.DELTA ; idx++){
+                // Special check for telugu character
+                if((validityTable[idx] & mask)!=0 || (script == UniLang.TELUGU && idx==0x31)){ 
+                   setFillIn.add(idx+(script*UniLang.DELTA)+INDIC_BLOCK_BEGIN );
+                }
+            }
+        }
+        setFillIn.add(DANDA);
+        setFillIn.add(DOUBLE_DANDA);
+        setFillIn.add(ZWNJ);
+        setFillIn.add(ZWJ);
+             
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetISO2022.java b/src/com/ibm/icu/charset/CharsetISO2022.java
new file mode 100644
index 0000000..54c81b7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetISO2022.java
@@ -0,0 +1,2882 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.util.Arrays;
+
+import com.ibm.icu.charset.CharsetMBCS.CharsetDecoderMBCS;
+import com.ibm.icu.charset.CharsetMBCS.CharsetEncoderMBCS;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetISO2022 extends CharsetICU {
+    private UConverterDataISO2022 myConverterData;
+    private int variant;           // one of enum {ISO_2022_JP, ISO_2022_KR, or ISO_2022_CN}
+    
+    private static final byte[] SHIFT_IN_STR    = { 0x0f };
+//    private static final byte[] SHIFT_OUT_STR   = { 0x0e };
+
+    private static final byte CR    = 0x0D;
+    private static final byte LF    = 0x0A;
+/*
+    private static final byte H_TAB = 0x09;
+    private static final byte SPACE = 0x20;
+*/
+    private static final char HWKANA_START  = 0xff61;
+    private static final char HWKANA_END    = 0xff9f;
+    
+    /*
+     * 94-character sets with native byte values A1..FE are encoded in ISO 2022
+     * as bytes 21..7E. (Subtract 0x80.)
+     * 96-character  sets with native bit values A0..FF are encoded in ISO 2022
+     * as bytes 20..7F. (Subtract 0x80.)
+     * Do not encode C1 control codes with native bytes 80..9F
+     * as bytes 00..1F (C0 control codes).
+     */
+/*
+    private static final char GR94_START    = 0xa1;
+    private static final char GR94_END      = 0xfe;
+*/
+    private static final char GR96_START    = 0xa0;
+    private static final char GR96_END      = 0xff;
+    
+    /* for ISO-2022-JP and -CN implementations */
+    // typedef enum {
+        /* shared values */
+        private static final byte INVALID_STATE = -1;
+        private static final byte ASCII         = 0;
+        
+        private static final byte SS2_STATE = 0x10;
+        private static final byte SS3_STATE = 0x11;
+        
+        /* JP */
+        private static final byte ISO8859_1 = 1;
+        private static final byte ISO8859_7 = 2;
+        private static final byte JISX201   = 3;
+        private static final byte JISX208   = 4;
+        private static final byte JISX212   = 5;
+        private static final byte GB2312    = 6;
+        private static final byte KSC5601   = 7;
+        private static final byte HWKANA_7BIT  = 8; /* Halfwidth Katakana 7 bit */
+        
+        /* CN */
+        /* the first few enum constants must keep their values because they corresponds to myConverterArray[] */
+        private static final byte GB2312_1  = 1;
+        private static final byte ISO_IR_165= 2;
+        private static final byte CNS_11643 = 3;
+        
+        /*
+         * these are used in StateEnum and ISO2022State variables,
+         * but CNS_11643 must be used to index into myConverterArray[]
+         */
+        private static final byte CNS_11643_0 = 0x20;
+        private static final byte CNS_11643_1 = 0x21;
+        private static final byte CNS_11643_2 = 0x22;
+        private static final byte CNS_11643_3 = 0x23;
+        private static final byte CNS_11643_4 = 0x24;
+        private static final byte CNS_11643_5 = 0x25;
+        private static final byte CNS_11643_6 = 0x26;
+        private static final byte CNS_11643_7 = 0x27;
+    // } StateEnum;
+    
+
+    public CharsetISO2022(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        
+        myConverterData = new UConverterDataISO2022();
+        
+        int versionIndex = icuCanonicalName.indexOf("version=");
+        int version = Integer.decode(icuCanonicalName.substring(versionIndex+8, versionIndex+9)).intValue();
+        
+        myConverterData.version = version;
+        
+        if (icuCanonicalName.indexOf("locale=ja") > 0) {
+            ISO2022InitJP(version);
+        } else if (icuCanonicalName.indexOf("locale=zh") > 0) {
+            ISO2022InitCN(version);
+        } else /* if (icuCanonicalName.indexOf("locale=ko") > 0) */ {
+            ISO2022InitKR(version);
+        }
+        
+        myConverterData.currentEncoder = (CharsetEncoderMBCS)myConverterData.currentConverter.newEncoder();
+        myConverterData.currentDecoder = (CharsetDecoderMBCS)myConverterData.currentConverter.newDecoder();
+    }
+    
+    private void ISO2022InitJP(int version) {
+        variant = ISO_2022_JP;
+        
+        maxBytesPerChar = 6;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        // open the required converters and cache them 
+        if((jpCharsetMasks[version]&CSM(ISO8859_7)) != 0) {
+            myConverterData.myConverterArray[ISO8859_7] = ((CharsetMBCS)CharsetICU.forNameICU("ISO8859_7")).sharedData;
+        }
+        // myConverterData.myConverterArray[JISX201] = ((CharsetMBCS)CharsetICU.forNameICU("jisx-201")).sharedData;
+        myConverterData.myConverterArray[JISX208] = ((CharsetMBCS)CharsetICU.forNameICU("Shift-JIS")).sharedData;
+        if ((jpCharsetMasks[version]&CSM(JISX212)) != 0) {
+            myConverterData.myConverterArray[JISX212] = ((CharsetMBCS)CharsetICU.forNameICU("jisx-212")).sharedData;
+        }
+        if ((jpCharsetMasks[version]&CSM(GB2312)) != 0) {
+            myConverterData.myConverterArray[GB2312] = ((CharsetMBCS)CharsetICU.forNameICU("ibm-5478")).sharedData;
+        }
+        if ((jpCharsetMasks[version]&CSM(KSC5601)) != 0) {
+            myConverterData.myConverterArray[KSC5601] = ((CharsetMBCS)CharsetICU.forNameICU("ksc_5601")).sharedData;
+        }
+        
+        // create a generic CharsetMBCS object
+        myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+    }
+    
+    private void ISO2022InitCN(int version) {
+        variant = ISO_2022_CN;
+        
+        maxBytesPerChar = 8;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        // open the required coverters and cache them.
+        myConverterData.myConverterArray[GB2312_1] = ((CharsetMBCS)CharsetICU.forNameICU("ibm-5478")).sharedData;
+        if (version == 1) {
+            myConverterData.myConverterArray[ISO_IR_165] = ((CharsetMBCS)CharsetICU.forNameICU("iso-ir-165")).sharedData;
+        } 
+        myConverterData.myConverterArray[CNS_11643] = ((CharsetMBCS)CharsetICU.forNameICU("cns-11643-1992")).sharedData;
+        
+        // create a generic CharsetMBCS object
+        myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+    }
+    
+    private void ISO2022InitKR(int version) {
+        variant = ISO_2022_KR;
+        
+        maxBytesPerChar = 3;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        if (version == 1) {
+            myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+            myConverterData.currentConverter.subChar1 = fromUSubstitutionChar[0][0];
+        } else {
+            myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("ibm-949");
+        }
+        
+        myConverterData.currentEncoder = (CharsetEncoderMBCS)myConverterData.currentConverter.newEncoder();
+        myConverterData.currentDecoder = (CharsetDecoderMBCS)myConverterData.currentConverter.newDecoder();
+    }
+    
+    /*
+     * ISO 2022 control codes must not be converted from Unicode
+     * because they would mess up the byte stream.
+     * The bit mask 0x0800c000 has bits set at bit positions 0xe, 0xf, 0x1b
+     * corresponding to SO, SI, and ESC.
+     */
+    private static boolean IS_2022_CONTROL(int c) { 
+        return (((c)<0x20) && ((((int)1<<c) & 0x0800c000) != 0));
+    }
+    
+    /*
+     * Check that the result is a 2-byte value with each byte in the range A1..FE
+     * (strict EUC DBCS) before accepting it and subtracting 0x80 from each byte
+     * to move it to the ISO 2022 range 21..7E.
+     * return 0 if out of range.
+     */
+    private static int _2022FromGR94DBCS(int value) {
+        if ((value <= 0xfefe && value >= 0xa1a1) && 
+                ((short)(value&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0xfe && ((short)(value&UConverterConstants.UNSIGNED_BYTE_MASK) >= 0xa1))) {
+            return (value - 0x8080); /* shift down to 21..7e byte range */
+        } else {
+            return 0; /* not valid for ISO 2022 */
+        }
+    }
+    
+    /*
+     * This method does the reverse of _2022FromGR94DBCS(). Given the 2022 code point, it returns the
+     * 2 byte value that is in the range A1..FE for each byte. Otherwise it returns the 2022 code point
+     * unchanged. 
+     */
+    private static int _2022ToGR94DBCS(int value) {
+        int returnValue = value + 0x8080;
+        
+        if ((returnValue <= 0xfefe && returnValue >= 0xa1a1) && 
+                ((short)(returnValue&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0xfe && ((short)(returnValue&UConverterConstants.UNSIGNED_BYTE_MASK) >= 0xa1))) {
+            return returnValue;
+        } else {
+            return value;
+        }
+    }
+    
+    /* is the StateEnum charset value for a DBCS charset? */
+    private static boolean IS_JP_DBCS(byte cs) {
+        return ((JISX208 <= cs) && (cs <= KSC5601));
+    }
+    
+    private static short CSM(short cs) {
+        return (short)(1<<cs);
+    }
+    
+    /* This gets the valid index of the end of buffer when decoding. */
+    private static int getEndOfBuffer_2022(ByteBuffer source) {
+        int sourceIndex = source.position();
+        byte mySource = 0;
+        mySource = source.get(sourceIndex);
+        
+        while (source.hasRemaining() && mySource != ESC_2022) {
+            mySource = source.get();
+            if (mySource == ESC_2022) {
+                break;
+            }
+            sourceIndex++;
+        }
+        return sourceIndex;
+    }
+    
+    /*
+     * This is a simple version of _MBCSGetNextUChar() calls the method in CharsetDecoderMBCS and returns
+     * the value given.
+     *
+     * Return value:
+     * U+fffe   unassigned
+     * U+ffff   illegal
+     * otherwise the Unicode code point
+     */
+     private int MBCSSimpleGetNextUChar(UConverterSharedData sharedData,
+                               ByteBuffer   source, 
+                               boolean      useFallback) {
+         int returnValue;
+         UConverterSharedData tempSharedData = myConverterData.currentConverter.sharedData;
+         myConverterData.currentConverter.sharedData = sharedData;
+         returnValue = ((CharsetDecoderMBCS)myConverterData.currentDecoder).simpleGetNextUChar(source, useFallback);
+         myConverterData.currentConverter.sharedData = tempSharedData;
+         
+         return returnValue;
+    }
+
+    /*
+     * @param is the the output byte
+     * @return 1 roundtrip byte  0 no mapping  -1 fallback byte
+     */
+    static int MBCSSingleFromUChar32(UConverterSharedData sharedData, int c, int[] retval, boolean useFallback) {
+        char[] table;
+        int value;
+        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+        if (c >= 0x10000 && (sharedData.mbcs.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+            return 0;
+        }
+        /* convert the Unicode code point in c into codepage bytes */
+        table = sharedData.mbcs.fromUnicodeTable;
+        /* get the byte for the output */
+        value = CharsetMBCS.MBCS_SINGLE_RESULT_FROM_U(table, sharedData.mbcs.fromUnicodeBytes, c);
+        /* get the byte for the output */
+        retval[0] = value & 0xff;
+        if (value >= 0xf00) {
+            return 1; /* roundtrip */
+        } else if (useFallback ? value>=0x800 : value>=0xc00) {
+            return -1; /* fallback taken */
+        } else {
+            return 0; /* no mapping */
+        }
+    }
+    
+    /*
+     * Each of these charset masks (with index x) contains a bit for a charset in exact correspondence
+     * to whether that charset is used in the corresponding version x of ISO_2022, locale=ja,version=x
+     * 
+     * Note: The converter uses some leniency:
+     * - The escape sequence ESC ( I for half-width 7-bit Katakana is recognized in
+     *   all versions, not just JIS7 and JIS8.
+     * - ICU does not distinguish between different version so of JIS X 0208.
+     */
+    private static final short jpCharsetMasks[] = {
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7))
+    };
+
+/*
+    // typedef enum {
+        private static final byte ASCII1 = 0;
+        private static final byte LATIN1 = 1;
+        private static final byte SBCS   = 2;
+        private static final byte DBCS   = 3;
+        private static final byte MBCS   = 4;
+        private static final byte HWKANA = 5;
+    // } Cnv2002Type;
+*/
+
+    private class ISO2022State {
+        private byte []cs;  /* Charset number for SI (G0)/SO (G1)/SS2 (G2)/SS3 (G3) */
+        private byte g;     /* 0..3 for G0..G3 (SI/SO/SS2/SS3) */
+        private byte prevG; /* g before single shift (SS2 or SS3) */
+        
+        ISO2022State() {
+            cs = new byte[4];
+        }
+        
+        void reset() {
+            Arrays.fill(cs, (byte)0);
+            g = 0;
+            prevG = 0;
+        }
+    }
+    
+//    private static final byte UCNV_OPTIONS_VERSION_MASK = 0xf;
+    private static final byte UCNV_2022_MAX_CONVERTERS  = 10;
+    
+    private class UConverterDataISO2022 {
+        UConverterSharedData []myConverterArray;
+        CharsetEncoderMBCS currentEncoder;
+        CharsetDecoderMBCS currentDecoder;
+        CharsetMBCS currentConverter;
+        int currentType; // Cnv2022Type;
+        ISO2022State toU2022State;
+        ISO2022State fromU2022State;
+        int key;
+        int version;
+        boolean isEmptySegment;
+        
+        UConverterDataISO2022() {
+            myConverterArray = new UConverterSharedData[UCNV_2022_MAX_CONVERTERS];
+            toU2022State = new ISO2022State();
+            fromU2022State = new ISO2022State();
+            currentType = 0;
+            key = 0;
+            version = 0;
+            isEmptySegment = false;
+        }
+        
+        void reset() {
+            toU2022State.reset();
+            fromU2022State.reset();
+            isEmptySegment = false;
+        }
+    }
+    
+    private static final byte ESC_2022 = 0x1B; /* ESC */
+    
+    // typedef enum {
+        private static final byte INVALID_2022              = -1; /* Doesn't correspond to a valid iso 2022 escape sequence */
+        private static final byte VALID_NON_TERMINAL_2022   =  0;  /* so far corresponds to a valid iso 2022 escape sequence */
+        private static final byte VALID_TERMINAL_2022       =  1;  /* corresponds to a valid iso 2022 escape sequence */
+        private static final byte VALID_MAYBE_TERMINAL_2022 =  2;  /* so far matches one iso 2022 escape sequence, but by adding
+                                                                     more characters might match another escape sequence */
+    // } UCNV_TableStates_2022;
+        
+    /*
+     * The way these state transition arrays work is:
+     * ex : ESC$B is the sequence for JISX208
+     *      a) First Iteration: char is ESC
+     *          i) Get the value of ESC from normalize_esq_chars_2022[] with int value of ESC as index
+     *             int x = normalize_esq_chars_2022[27] which is equal to 1
+     *         ii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[0]
+     *        iii) Save this index as offset
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[]
+     *             escSeqStateTable_value_2022[offset], which is VALID_NON_TERMINAL_2022
+     *      b) Switch on this state and continue to next char
+     *          i) Get the value of $ from normalize_esq_chars_2022[] with int value of $ as index
+     *             which is normalize_esq_chars_2022[36] == 4
+     *         ii) x is currently 1(from above)
+     *             x<<=5 -- x is now 32
+     *             x+=normalize_esq_chars_2022[36]
+     *             now x is 36
+     *        iii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[2], so offset is 2
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[]
+     *             escSeqStateTable_Value_2022[offset], which is VALID_NON_TERMINAL_2022
+     *      c) Switch on this state and continue to next char
+     *          i) Get the value of B from normalize_esq_chars_2022[] with int value of B as index
+     *         ii) x is currently 36 (from above)
+     *             x<<=5 -- x is now 1152
+     *             x+= normalize_esq_chars_2022[66]
+     *             now x is 1161
+     *        iii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[21], so offset is 21
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[1]
+     *             escSeqStateTable_Value_2022[offset], which is VALID_TERMINAL_2022
+     *          v) Get the converter name from escSeqStateTable_Result_2022[21] which is JISX208
+     */
+     /* Below are the 3 arrays depicting a state transition table */
+     private static final byte normalize_esq_chars_2022[] = {
+         /* 0       1       2       3       4       5       6       7       8       9 */
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      1,      0,      0,
+            0,      0,      0,      0,      0,      0,      4,      7,     29,      0,
+            2,     24,     26,     27,      0,      3,     23,      6,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      5,      8,      9,     10,     11,     12,
+           13,     14,     15,     16,     17,     18,     19,     20,     25,     28,
+            0,      0,     21,      0,      0,      0,      0,      0,      0,      0,
+           22,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0
+     };
+     
+     private static final short MAX_STATES_2022 = 74;
+     private static final int escSeqStateTable_Key_2022[/* MAX_STATES_2022 */] = {
+         /* 0        1          2         3        4          5         6         7         8         9 */
+            1,      34,        36,       39,      55,        57,       60,       61,     1093,     1096,
+         1097,    1098,      1099,     1100,     1101,     1102,     1103,     1104,     1105,     1106,
+         1109,    1154,      1157,     1160,     1161,     1176,     1178,     1179,     1254,     1257,
+         1768,    1773,      1957,    35105,    36933,    36936,    36937,    36938,    36939,    36940,
+        36942,   36943,     36944,    36945,    36946,    36947,    36948,    37640,    37642,    37644,
+        37646,   37711,     37744,    37745,    37746,    37747,    37748,    40133,    40136,    40138,
+        40139,   40140,     40141,  1123363, 35947624, 35947625, 35947626, 35947627, 35947629, 35947630,
+     35947631, 35947635, 35947636, 35947638
+     };
+     
+     private static final byte escSeqStateTable_Value_2022[/* MAX_STATES_2022 */] = {
+         /*         0                           1                           2                           3                       4               */
+         VALID_NON_TERMINAL_2022,   VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+       VALID_MAYBE_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,   VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+         VALID_NON_TERMINAL_2022,   VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022
+     };
+     
+     /* Type def for refactoring changeState_2022 code */
+     // typedef enum {
+         private static final byte ISO_2022_JP = 1;
+         private static final byte ISO_2022_KR = 2;
+         private static final byte ISO_2022_CN = 3;
+     // } Variant2022;
+         
+    /* const UConverterSharedData _ISO2022Data; */
+    //private UConverterSharedData _ISO2022JPData;
+    //private UConverterSharedData _ISO2022KRData;
+    //private UConverterSharedData _ISO2022CNData;
+    
+    /******************** to unicode ********************/
+    /****************************************************
+     * Recognized escape sequenes are
+     * <ESC>(B  ASCII
+     * <ESC>.A  ISO-8859-1
+     * <ESC>.F  ISO-8859-7
+     * <ESC>(J  JISX-201
+     * <ESC>(I  JISX-201
+     * <ESC>$B  JISX-208
+     * <ESC>$@  JISX-208
+     * <ESC>$(D JISX-212
+     * <ESC>$A  GB2312
+     * <ESC>$(C KSC5601
+     */
+    private final static byte nextStateToUnicodeJP[/* MAX_STATES_2022 */] = {
+        /*     0               1               2               3               4               5               6               7               8               9    */
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,      SS2_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+                ASCII,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,        JISX201,    HWKANA_7BIT,        JISX201,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,        JISX208,         GB2312,        JISX208,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+            ISO8859_1,      ISO8859_7,        JISX208,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,        KSC5601,        JISX212,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE
+    };
+    
+    private final static byte nextStateToUnicodeCN[/* MAX_STATES_2022 */] = {
+        /*     0               1               2               3               4               5               6               7               8               9    */
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,      SS2_STATE,      SS3_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,       GB2312_1,  INVALID_STATE,     ISO_IR_165,
+          CNS_11643_1,    CNS_11643_2,    CNS_11643_3,    CNS_11643_4,    CNS_11643_5,    CNS_11643_6,    CNS_11643_7,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE
+    };
+    
+    /* runs through a state machine to determine the escape sequence - codepage correspondence */
+    private CoderResult changeState_2022(CharsetDecoderICU decoder, ByteBuffer source, int var) {
+        CoderResult err = CoderResult.UNDERFLOW;
+        boolean DONE = false;
+        byte value;
+        int key[] = {myConverterData.key};
+        int offset[] = {0};
+        byte c;
+        int malformLength = 0;
+        
+        value = VALID_NON_TERMINAL_2022;
+        while (source.hasRemaining()) {
+            c = source.get();
+            malformLength++;
+            decoder.toUBytesArray[decoder.toULength++] = c;
+            value = getKey_2022(c, key, offset);
+            
+            switch(value) {
+            
+            case VALID_NON_TERMINAL_2022:
+                /* continue with the loop */
+                break;
+                
+            case VALID_TERMINAL_2022:
+                key[0] = 0;
+                DONE = true;
+                break;
+                
+            case INVALID_2022:
+                DONE = true;
+                break;
+                
+            case VALID_MAYBE_TERMINAL_2022:
+                /* not ISO_2022 itself, finish here */
+                value = VALID_TERMINAL_2022;
+                key[0] = 0;
+                DONE = true;
+                break;
+            }
+            if (DONE) {
+                break;
+            }
+        }
+// DONE:
+        myConverterData.key = key[0];
+        
+        if (value == VALID_NON_TERMINAL_2022) {
+            /* indicate that the escape sequence is incomplete: key !=0 */
+            return err;
+        } else if (value == INVALID_2022) {
+            return CoderResult.malformedForLength(malformLength);
+        } else /* value == VALID_TERMINAL_2022 */ {
+            switch (var) {
+            case ISO_2022_JP: {
+                byte tempState = nextStateToUnicodeJP[offset[0]];
+                switch (tempState) {
+                case INVALID_STATE:
+                    err = CoderResult.malformedForLength(malformLength);
+                    break;
+                case SS2_STATE:
+                    if (myConverterData.toU2022State.cs[2] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 2;
+                    } else { 
+                        /* illegal to have SS2 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                /* case SS3_STATE: not used in ISO-2022-JP-x */
+                case ISO8859_1:
+                case ISO8859_7:
+                    if ((jpCharsetMasks[myConverterData.version] & CSM(tempState)) == 0) {
+                        err = CoderResult.unmappableForLength(malformLength);
+                    } else {
+                        /* G2 charset for SS2 */
+                        myConverterData.toU2022State.cs[2] = tempState;
+                    }
+                    break;
+                default:
+                    if ((jpCharsetMasks[myConverterData.version] & CSM(tempState)) == 0) {
+                        err = CoderResult.unmappableForLength(source.position() - 1);
+                    } else {
+                        /* G0 charset */
+                        myConverterData.toU2022State.cs[0] = tempState;
+                    }
+                    break;
+                } // end of switch
+                break;
+            }
+            case ISO_2022_CN: {
+                byte tempState = nextStateToUnicodeCN[offset[0]];
+                switch (tempState) {
+                case INVALID_STATE:
+                    err = CoderResult.unmappableForLength(malformLength);
+                    break;
+                case SS2_STATE:
+                    if (myConverterData.toU2022State.cs[2] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 2;
+                    } else {
+                        /* illegal to have SS2 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                case SS3_STATE:
+                    if (myConverterData.toU2022State.cs[3] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 3;
+                    } else {
+                        /* illegal to have SS3 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                case ISO_IR_165:
+                    if (myConverterData.version == 0) {
+                        err = CoderResult.unmappableForLength(malformLength);
+                        break;
+                    }
+                    /* fall through */
+                case GB2312_1:
+                    /* fall through */
+                case CNS_11643_1:
+                    myConverterData.toU2022State.cs[1] = tempState;
+                    break;
+                case CNS_11643_2:
+                    myConverterData.toU2022State.cs[2] = tempState;
+                    break;
+                default:
+                    /* other CNS 11643 planes */
+                    if (myConverterData.version == 0) {
+                        err = CoderResult.unmappableForLength(source.position() - 1);
+                    } else {
+                        myConverterData.toU2022State.cs[3] = tempState;
+                    }
+                    break;
+                } //end of switch
+            }
+            break;
+            case ISO_2022_KR:
+                if (offset[0] == 0x30) {
+                    /* nothing to be done, just accept this one escape sequence */
+                } else {
+                    err = CoderResult.unmappableForLength(malformLength);
+                }
+                break;
+            default:
+                err = CoderResult.malformedForLength(malformLength);
+                break;
+            } // end of switch
+        }
+        if (!err.isError()) {
+            decoder.toULength = 0;
+        }
+        return err;
+    }
+    
+    private static byte getKey_2022(byte c, int[]key, int[]offset) {
+        int togo;
+        int low = 0;
+        int hi = MAX_STATES_2022;
+        int oldmid = 0;
+        
+        togo = normalize_esq_chars_2022[(short)c&UConverterConstants.UNSIGNED_BYTE_MASK];
+        
+        if (togo == 0) {
+            /* not a valid character anywhere in an escape sequence */
+            key[0] = 0;
+            offset[0] = 0;
+            return INVALID_2022;
+        }
+        togo = (key[0] << 5) + togo;
+        
+        while (hi != low) { /* binary search */
+            int mid = (hi+low) >> 1; /* Finds median */
+        
+            if (mid == oldmid) {
+                break;
+            }
+            
+            if (escSeqStateTable_Key_2022[mid] > togo) {
+                hi = mid;
+            } else if (escSeqStateTable_Key_2022[mid] < togo) {
+                low = mid;
+            } else /* we found it */ {
+                key[0] = togo;
+                offset[0] = mid;
+                return escSeqStateTable_Value_2022[mid];
+            }
+            oldmid = mid;
+        }
+        return INVALID_2022;
+    }
+    
+    /*
+     * To Unicode Callback helper function
+     */
+    private static CoderResult toUnicodeCallback(CharsetDecoderICU cnv, int sourceChar, int targetUniChar) {
+        CoderResult err = CoderResult.UNDERFLOW;
+        if (sourceChar > 0xff) {
+            cnv.toUBytesArray[0] = (byte)(sourceChar>>8);
+            cnv.toUBytesArray[1] = (byte)sourceChar;
+            cnv.toULength = 2;
+        } else {
+            cnv.toUBytesArray[0] = (byte)sourceChar;
+            cnv.toULength = 1;
+        }
+        
+        if (targetUniChar == (UConverterConstants.missingCharMarker-1/* 0xfffe */)) {
+            err = CoderResult.unmappableForLength(1);
+        } else {
+            err = CoderResult.malformedForLength(1);
+        }
+        
+        return err;
+    }
+    
+    /****************************ISO-2022-JP************************************/
+    private class CharsetDecoderISO2022JP extends CharsetDecoderICU {
+        public CharsetDecoderISO2022JP(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        /* 
+         * Map 00..7F to Unicode according to JIS X 0201. 
+         * */
+        private int jisx201ToU(int value) {
+            if (value < 0x5c) {
+                return value;
+            } else if (value == 0x5c) {
+                return 0xa5;
+            } else if (value == 0x7e) {
+                return 0x203e;
+            } else { /* value <= 0x7f */
+                return value;
+            }
+        }
+        /*
+         * Convert a pair of JIS X 208 21..7E bytes to Shift-JIS.
+         * If either byte is outside 21..7E make sure that the result is not valid
+         * for Shift-JIS so that the converter catches it.
+         * Some invalid byte values already turn into equally invalid Shift-JIS
+         * byte values and need not be tested explicitly.
+         */
+        private void _2022ToSJIS(char c1, char c2, byte []bytes) {
+            if ((c1&1) > 0) {
+                ++c1;
+                if (c2 <= 0x5f) {
+                    c2 += 0x1f;
+                } else if (c2 <= 0x7e) {
+                    c2 += 0x20;
+                } else {
+                    c2 = 0; /* invalid */
+                }
+            } else {
+                if ((c2 >= 0x21) && (c2 <= 0x7e)) {
+                    c2 += 0x7e;
+                } else {
+                    c2 = 0; /* invalid */
+                }
+            }
+            
+            c1 >>=1;
+            if (c1 <= 0x2f) {
+                c1 += 0x70;
+            } else if (c1 <= 0x3f) {
+                c1 += 0xb0;
+            } else {
+                c1 = 0; /* invalid */
+            }
+            bytes[0] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & c1);
+            bytes[1] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & c2);
+        }
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            boolean gotoGetTrail = false;
+            boolean gotoEscape = false;
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte []tempBuf = new byte[2];
+            int targetUniChar = 0x0000;
+            int mySourceChar = 0x0000;
+            int mySourceCharTemp = 0x0000; // use for getTrail label call.
+            byte cs; /* StateEnum */
+            byte csTemp= 0; // use for getTrail label call.
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                // goto escape;
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = toUBytesArray[0];
+                toULength = 0;
+                cs = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                // goto getTrailByte;
+                mySourceCharTemp = 0x99;
+                gotoGetTrail = true;
+            }
+            
+            while (source.hasRemaining() || gotoEscape || gotoGetTrail) {
+                // This code is here for the goto escape label call above.
+                if (gotoEscape) {
+                    mySourceCharTemp = ESC_2022;
+                }
+                
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (gotoEscape || gotoGetTrail || target.hasRemaining()) {
+                    if (!gotoEscape && !gotoGetTrail) {
+                        mySourceChar = UConverterConstants.UNSIGNED_BYTE_MASK & source.get();
+                        mySourceCharTemp = mySourceChar;
+                    }
+                    
+                    switch (mySourceCharTemp) {
+                    case UConverterConstants.SI:
+                        if (myConverterData.version == 3) {
+                            myConverterData.toU2022State.g = 0;
+                            continue;
+                        } else {
+                            /* only JIS7 uses SI/SO, not ISO-2022-JP-x */
+                            myConverterData.isEmptySegment = false;
+                            break;
+                        }
+                        
+                    case UConverterConstants.SO:
+                        if (myConverterData.version == 3) {
+                            /* JIS7: switch to G1 half-width Katakana */
+                            myConverterData.toU2022State.cs[1] = HWKANA_7BIT;
+                            myConverterData.toU2022State.g = 1;
+                            continue; 
+                        } else {
+                            /* only JIS7 uses SI/SO, not ISO-2022-JP-x */
+                            myConverterData.isEmptySegment = false; /* reset this, we have a different error */
+                            break;
+                        }
+                        
+                    case ESC_2022:
+                        if (!gotoEscape) {
+                            source.position(source.position() - 1);
+                        } else {
+                            gotoEscape = false;
+                        }
+// escape:
+                        {
+                            int mySourceBefore = source.position();
+                            int toULengthBefore = this.toULength;
+                            
+                            err = changeState_2022(this, source, variant);
+
+                            /* If in ISO-2022-JP only and we successully completed an escape sequence, but previous segment was empty, create an error */
+                            if(myConverterData.version == 0 && myConverterData.key == 0 && !err.isError() && myConverterData.isEmptySegment) {
+                                err = CoderResult.malformedForLength(source.position() - mySourceBefore);
+                                this.toULength = toULengthBefore + (source.position() - mySourceBefore);
+                            }
+                        }
+
+                        /* invalid or illegal escape sequence */
+                        if(err.isError()){
+                            myConverterData.isEmptySegment = false; /* Reset to avoid future spurious errors */
+                            return err;
+                        }
+                        /* If we successfully completed an escape sequence, we begin a new segment, empty so far */
+                        if(myConverterData.key == 0) {
+                            myConverterData.isEmptySegment = true;
+                        }
+
+                        continue;
+                    /* ISO-2022-JP does not use single-byte (C1) SS2 and SS3 */
+                    case CR:
+                        /* falls through */
+                    case LF:
+                        /* automatically reset to single-byte mode */
+                        if (myConverterData.toU2022State.cs[0] != ASCII && myConverterData.toU2022State.cs[0] != JISX201) {
+                            myConverterData.toU2022State.cs[0] = ASCII;
+                        }
+                        myConverterData.toU2022State.cs[2] = 0;
+                        myConverterData.toU2022State.g = 0;
+                        /* falls through */
+                    default :
+                        /* convert one or two bytes */
+                        myConverterData.isEmptySegment = false;
+                        cs = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                        csTemp = cs;
+                        if (gotoGetTrail) {
+                            csTemp = (byte)0x99;
+                        }
+                        if (!gotoGetTrail && ((mySourceChar >= 0xa1) && (mySourceChar <= 0xdf) && myConverterData.version == 4 && !IS_JP_DBCS(cs))) {
+                            /* 8-bit halfwidth katakana in any single-byte mode for JIS8 */
+                            targetUniChar = mySourceChar + (HWKANA_START - 0xa1);
+                            
+                            /* return from a single-shift state to the previous one */
+                            if (myConverterData.toU2022State.g >= 2) {
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                            }
+                        } else {
+                            switch(csTemp) {
+                            case ASCII:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = mySourceChar;
+                                }
+                                break;
+                            case ISO8859_1:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = mySourceChar + 0x80;
+                                }
+                                /* return from a single-shift state to the prevous one */
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                break;
+                            case ISO8859_7:
+                                if (mySourceChar <= 0x7f) {
+                                    /* convert mySourceChar+0x80 to use a normal 8-bit table */
+                                    targetUniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(myConverterData.myConverterArray[cs].mbcs,
+                                            mySourceChar+0x80);
+                                }
+                                /* return from a single-shift state to the previous one */
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                break;
+                            case JISX201:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = jisx201ToU(mySourceChar);
+                                }
+                                break;
+                            case HWKANA_7BIT:
+                                if ((mySourceChar >= 0x21) && (mySourceChar <= 0x5f)) {
+                                    /* 7-bit halfwidth Katakana */
+                                    targetUniChar = mySourceChar + (HWKANA_START - 0x21);
+                                    break;
+                                }
+                            default :
+                                /* G0 DBCS */
+                                if (gotoGetTrail || source.hasRemaining()) {
+// getTrailByte:
+                                    int tmpSourceChar;
+                                    gotoGetTrail = false;
+                                    byte trailByte;
+                                    trailByte = source.get();
+                                    tmpSourceChar = (mySourceChar << 8) | (short)(UConverterConstants.UNSIGNED_BYTE_MASK & trailByte);
+                                    if (cs == JISX208) {
+                                        _2022ToSJIS((char)(UConverterConstants.UNSIGNED_BYTE_MASK & mySourceChar), 
+                                                (char)(UConverterConstants.UNSIGNED_BYTE_MASK & trailByte), tempBuf);
+                                    } else {
+                                        if (cs == KSC5601) {
+                                            tmpSourceChar = _2022ToGR94DBCS(tmpSourceChar);
+                                        }
+                                        tempBuf[0] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (tmpSourceChar >> 8));
+                                        tempBuf[1] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & tmpSourceChar);
+                                    }
+                                    ByteBuffer tempByteBuf = ByteBuffer.wrap(tempBuf);
+                                    targetUniChar = MBCSSimpleGetNextUChar(myConverterData.myConverterArray[cs], tempByteBuf, false);
+                                    mySourceChar = tmpSourceChar;
+                                } else {
+                                    toUBytesArray[0] = (byte)mySourceChar;
+                                    toULength = 1;
+                                    // goto endloop;
+                                    return err;
+                                }
+                            } /* end of inner switch */
+                        }
+                        break;
+                    } /* end of outer switch */
+                    
+                    if (targetUniChar < (UConverterConstants.missingCharMarker-1/*0xfffe*/)) {
+                        if (offsets != null) {
+                            offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        target.put((char)targetUniChar);
+                    } else if (targetUniChar > UConverterConstants.missingCharMarker) {
+                        /* disassemble the surrogate pair and write to output */
+                        targetUniChar -= 0x0010000;
+                        target.put((char)(0xd800 + (char)(targetUniChar>>10)));
+                        target.position(target.position()-1);
+                        if (offsets != null) {
+                            offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        target.get();
+                        if (target.hasRemaining()) {
+                            target.put((char)(0xdc00+(char)(targetUniChar&0x3ff)));
+                            target.position(target.position()-1);
+                            if (offsets != null) {
+                                offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                            }
+                            target.get();
+                        } else {
+                            charErrorBufferArray[charErrorBufferLength++] = 
+                                (char)(0xdc00+(char)(targetUniChar&0x3ff));
+                        }
+                    } else {
+                        /* Call the callback function */
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                } else { /* goes with "if (target.hasRemaining())" way up near the top of the function */
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+//endloop:
+            return err;
+        }
+    } // end of class CharsetDecoderISO2022JP
+    
+    /****************************ISO-2022-CN************************************/
+    private class CharsetDecoderISO2022CN extends CharsetDecoderICU {
+        public CharsetDecoderISO2022CN(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] tempBuf = new byte[3];
+            int targetUniChar = 0x0000;
+            int mySourceChar = 0x0000;
+            int mySourceCharTemp = 0x0000;
+            boolean gotoEscape = false;
+            boolean gotoGetTrailByte = false;
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                // goto escape;
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = toUBytesArray[0];
+                toULength = 0;
+                // goto getTrailByte
+                gotoGetTrailByte = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining() || gotoEscape) {
+                    if (gotoEscape) {
+                        mySourceChar = ESC_2022; // goto escape label
+                        mySourceCharTemp = mySourceChar;
+                    } else if (gotoGetTrailByte) {
+                        mySourceCharTemp = 0xff; // goto getTrailByte; set mySourceCharTemp to go to default
+                    } else {
+                        mySourceChar = UConverterConstants.UNSIGNED_BYTE_MASK & source.get();
+                        mySourceCharTemp = mySourceChar;
+                    }
+                    
+                    switch (mySourceCharTemp) {
+                    case UConverterConstants.SI:
+                        myConverterData.toU2022State.g = 0;
+                        if (myConverterData.isEmptySegment) {
+                            myConverterData.isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                            err = CoderResult.malformedForLength(1);
+                            this.toUBytesArray[0] = (byte)mySourceChar;
+                            this.toULength = 1;
+                            return err;
+                        }
+                        continue;
+                        
+                    case UConverterConstants.SO:
+                        if (myConverterData.toU2022State.cs[1] != 0) {
+                            myConverterData.toU2022State.g = 1;
+                            myConverterData.isEmptySegment = true;  /* Begin a new segment, empty so far */
+                            continue;
+                        } else {
+                            /* illegal to have SO before a matching designator */
+                            myConverterData.isEmptySegment = false; /* Handling a different error, reset this to avoid future spurious errs */
+                            break;
+                        }
+                        
+                    case ESC_2022:
+                        if (!gotoEscape) {
+                            source.position(source.position()-1);
+                        }
+// escape label
+                        gotoEscape = false;
+                        {
+                            int mySourceBefore = source.position();
+                            int toULengthBefore = this.toULength;
+
+                            err = changeState_2022(this, source, ISO_2022_CN);
+
+                            /* After SO there must be at least one character before a designator (designator error handled separately) */
+                            if(myConverterData.key == 0 && !err.isError() && myConverterData.isEmptySegment) {
+                                err = CoderResult.malformedForLength(source.position() - mySourceBefore);
+                                this.toULength = toULengthBefore + (source.position() - mySourceBefore);
+                            }
+                        }
+
+                        /* invalid or illegal escape sequence */
+                        if(err.isError()){
+                            myConverterData.isEmptySegment = false; /* Reset to avoid future spurious errors */
+                            return err;
+                        }
+                        continue;
+                        
+                    /*ISO-2022-CN does not use single-byte (C1) SS2 and SS3 */
+                    case CR:
+                        /* falls through */
+                    case LF:
+                        myConverterData.toU2022State.reset();
+                        /* falls through */
+                    default:
+                        /* converter one or two bytes */
+                        myConverterData.isEmptySegment = false;
+                        if (myConverterData.toU2022State.g != 0 || gotoGetTrailByte) {
+                            if (source.hasRemaining() || gotoGetTrailByte) {
+                                UConverterSharedData cnv;
+                                byte tempState;
+                                int tempBufLen;
+                                byte trailByte;
+// getTrailByte: label
+                                gotoGetTrailByte = false; // reset gotoGetTrailByte
+                                
+                                trailByte = source.get();
+                                tempState = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                                if (tempState > CNS_11643_0) {
+                                    cnv = myConverterData.myConverterArray[CNS_11643];
+                                    tempBuf[0] = (byte)(0x80 + (tempState - CNS_11643_0));
+                                    tempBuf[1] = (byte)(mySourceChar);
+                                    tempBuf[2] = trailByte;
+                                    tempBufLen = 3;
+                                } else {
+                                    cnv = myConverterData.myConverterArray[tempState];
+                                    tempBuf[0] = (byte)(mySourceChar);
+                                    tempBuf[1] = trailByte;
+                                    tempBufLen = 2;
+                                }
+                                mySourceChar = (mySourceChar << 8) | (UConverterConstants.UNSIGNED_BYTE_MASK & trailByte);
+                                if (myConverterData.toU2022State.g >= 2) {
+                                    /* return from a single-shift state to the previous one */
+                                    myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                }
+                                ByteBuffer tempBuffer = ByteBuffer.wrap(tempBuf);
+                                tempBuffer.limit(tempBufLen);
+                                tempBuffer.position(0);
+                                targetUniChar = MBCSSimpleGetNextUChar(cnv, tempBuffer, false);
+                            } else {
+                                toUBytesArray[0] = (byte)mySourceChar;
+                                toULength = 1;
+                                return err;
+                            }
+                        } else {
+                            if (mySourceChar <= 0x7f) {
+                                targetUniChar = (char)mySourceChar;
+                            }
+                        }
+                        break;
+                    }
+                    if ((UConverterConstants.UNSIGNED_INT_MASK&targetUniChar) < (UConverterConstants.UNSIGNED_INT_MASK&(UConverterConstants.missingCharMarker-1))) {
+                        if (offsets != null) {
+                            offsets.array()[target.position()] = source.remaining() - (mySourceChar <= 0xff ? 1 : 2);
+                        }
+                        target.put((char)targetUniChar);
+                    } else if ((UConverterConstants.UNSIGNED_INT_MASK&targetUniChar) > (UConverterConstants.UNSIGNED_INT_MASK&(UConverterConstants.missingCharMarker))) {
+                        /* disassemble the surrogate pair and write to output */
+                        targetUniChar -= 0x0010000;
+                        target.put((char)(0xd800+(char)(targetUniChar>>10)));
+                        if (offsets != null) {
+                            offsets.array()[target.position()-1] = (int)(source.position() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        if (target.hasRemaining()) {
+                            target.put((char)(0xdc00+(char)(targetUniChar&0x3ff)));
+                            if (offsets != null) {
+                                offsets.array()[target.position()-1] = (int)(source.position() - (mySourceChar <= 0xff ? 1 : 2));
+                            }
+                        } else {
+                            charErrorBufferArray[charErrorBufferLength++] = (char)(0xdc00+(char)(targetUniChar&0x3ff));
+                        }
+                    } else {
+                        /* Call the callback function */ 
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                    
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            return err;
+        }
+        
+    }
+    /************************ ISO-2022-KR ********************/
+    private class CharsetDecoderISO2022KR extends CharsetDecoderICU {
+        public CharsetDecoderISO2022KR(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            setInitialStateToUnicodeKR();
+            myConverterData.reset();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            char mySourceChar = 0x0000;
+            int targetUniChar = 0x0000;
+            byte[] tempBuf = new byte[2];
+            boolean usingFallback;
+            boolean gotoGetTrailByte = false;
+            boolean gotoEscape = false;
+            
+            if (myConverterData.version == 1) {
+                return decodeLoopIBM(myConverterData.currentDecoder, source, target, offsets, flush);
+            }
+            
+            /* initialize state */
+            usingFallback = isFallbackUsed();
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = (char)toUBytesArray[0];
+                toULength = 0;
+                gotoGetTrailByte = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                if (target.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                    if (!gotoGetTrailByte && !gotoEscape) {
+                        mySourceChar = (char)(source.get()&UConverterConstants.UNSIGNED_BYTE_MASK);
+                    }
+                    
+                    if (!gotoGetTrailByte && !gotoEscape && mySourceChar == UConverterConstants.SI) {
+                        myConverterData.toU2022State.g = 0;
+                        if (myConverterData.isEmptySegment) {
+                            myConverterData.isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                            err = CoderResult.malformedForLength(1);
+                            this.toUBytesArray[0] = (byte)mySourceChar;
+                            this.toULength = 1;
+                            return err;
+                        }
+                        /* consume the source */
+                        continue;
+                    } else if (!gotoGetTrailByte && !gotoEscape && mySourceChar == UConverterConstants.SO) {
+                        myConverterData.toU2022State.g = 1;
+                        myConverterData.isEmptySegment = true;
+                        /* consume the source */
+                        continue;
+                    } else if (!gotoGetTrailByte && (gotoEscape || mySourceChar == ESC_2022)) {
+                        if (!gotoEscape) {
+                            source.position(source.position()-1);
+                        }
+// escape label
+                        gotoEscape = false; // reset gotoEscape flag
+                        myConverterData.isEmptySegment = false; /* Any invalid ESC sequences will be detected separately, so just reset this */ 
+                        err = changeState_2022(this, source, ISO_2022_KR);
+                        if (err.isError()) {
+                            return err;
+                        }
+                        continue;
+                    }
+                    myConverterData.isEmptySegment = false; /* Any invalid char errors will be detected separately, so just reset this */
+                    if (myConverterData.toU2022State.g == 1 || gotoGetTrailByte) {
+                        if (source.hasRemaining() || gotoGetTrailByte) {
+// getTrailByte label
+                            gotoGetTrailByte = false; // reset gotoGetTrailByte flag
+                            
+                            byte trailByte;
+                            trailByte = source.get();
+                            tempBuf[0] = (byte)(mySourceChar + 0x80);
+                            tempBuf[1] = (byte)(trailByte + 0x80);
+                            mySourceChar = (char)((mySourceChar << 8) | (short)(trailByte&UConverterConstants.UNSIGNED_BYTE_MASK));
+                            if ((mySourceChar & 0x8080) == 0) {
+                                targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, ByteBuffer.wrap(tempBuf), usingFallback);
+                            } else {
+                                /* illegal bytes > 0x7f */
+                                targetUniChar = UConverterConstants.missingCharMarker;
+                            }
+                        } else {
+                            toUBytesArray[0] = (byte)mySourceChar;
+                            toULength = 1;
+                            break;
+                        }
+                    } else {
+                        int oldSourceLimit = source.limit();
+                        source.limit(source.position());
+                        source.position(source.position()-1); 
+                        targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, source, usingFallback);
+                        source.limit(oldSourceLimit);
+                    }
+                    if (targetUniChar < 0xfffe) {
+                        target.put((char)targetUniChar);
+                        if (offsets != null) {
+                            offsets.array()[target.position()] = source.position() - (mySourceChar <= 0xff ? 1 : 2);
+                        }
+                    } else {
+                        /* Call the callback function */
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            return err;
+        }
+        
+        protected CoderResult decodeLoopIBM(CharsetDecoderMBCS cnv, ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceStart;
+            int sourceLimit;
+            int argSource;
+            int argTarget;
+            boolean gotoEscape = false;
+            int oldSourceLimit;
+            
+            /* remember the original start of the input for offsets */
+            sourceStart = argSource = source.position();
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                gotoEscape = true;
+            }
+            
+            while (gotoEscape || (!err.isError() && source.hasRemaining())) {
+                if (!gotoEscape) {
+                    /* Find the end of the buffer e.g : Next Escape Seq | end of Buffer */
+                    int oldSourcePos = source.position();
+                    sourceLimit = getEndOfBuffer_2022(source);
+                    source.position(oldSourcePos);
+                    if (source.position() != sourceLimit) {
+                        /*
+                         * get the current partial byte sequence
+                         * 
+                         * it needs to be moved between the public and the subconverter
+                         * so that the conversion frameword, which only sees the public
+                         * converter, can handle truncated and illegal input etc.
+                         */
+                        if (toULength > 0) {
+                            cnv.toUBytesArray = (byte[])(toUBytesArray.clone());
+                        }
+                        cnv.toULength = toULength;
+                        
+                        /*
+                         * Convert up to the end of the input, or to before the next escape character.
+                         * Does not handle conversion extensions because the preToU[] state etc.
+                         * is not copied.
+                         */
+                        argTarget = target.position();
+                        oldSourceLimit = source.limit(); // save the old source limit change to new one
+                        source.limit(sourceLimit);
+                        err = myConverterData.currentDecoder.cnvMBCSToUnicodeWithOffsets(source, target, offsets, flush);
+                        source.limit(oldSourceLimit); // restore source limit;
+                        if (offsets != null && sourceStart != argSource) {
+                            /* update offsets to base them on the actual start of the input */
+                            int delta = argSource - sourceStart;
+                            while (argTarget < target.position()) {
+                                int currentOffset = offsets.get();
+                                offsets.position(offsets.position()-1);
+                                if (currentOffset >= 0) {
+                                    offsets.put(currentOffset + delta);
+                                    offsets.position(offsets.position()-1);
+                                }
+                                offsets.get();
+                                target.get();
+                            }
+                        }
+                        argSource = source.position();
+                        
+                        /* copy input/error/overflow buffers */
+                        if (cnv.toULength > 0) {
+                            toUBytesArray = (byte[])(cnv.toUBytesArray.clone());
+                        }
+                        toULength = cnv.toULength;
+                        
+                        if (err.isOverflow()) {
+                            if (cnv.charErrorBufferLength > 0) {
+                                charErrorBufferArray = (char[])(cnv.charErrorBufferArray.clone());
+                            }
+                            charErrorBufferLength = cnv.charErrorBufferLength;
+                            cnv.charErrorBufferLength = 0;
+                        }
+                    }
+                    
+                    if (err.isError() || (source.position() == source.limit())) {
+                        return err;
+                    }
+                }
+// escape label
+                gotoEscape = false;
+                err = changeState_2022(this, source, ISO_2022_KR);
+            }
+            return err;
+        }
+    }
+    
+    /******************** from unicode **********************/
+    /* preference order of JP charsets */
+    private final static byte []jpCharsetPref = {
+        ASCII,
+        JISX201,
+        ISO8859_1,
+        ISO8859_7,
+        JISX208,
+        JISX212,
+        GB2312,
+        KSC5601,
+        HWKANA_7BIT
+    };
+    /*
+     * The escape sequences must be in order of the enum constants like JISX201 = 3,
+     * not in order of jpCharsetPref[]!
+     */
+    private final static byte [][]escSeqChars = {
+            { 0x1B, 0x28, 0x42},        /* <ESC>(B  ASCII       */
+            { 0x1B, 0x2E, 0x41},        /* <ESC>.A  ISO-8859-1  */
+            { 0x1B, 0x2E, 0x46},        /* <ESC>.F  ISO-8859-7  */
+            { 0x1B, 0x28, 0x4A},        /* <ESC>(J  JISX-201    */
+            { 0x1B, 0x24, 0x42},        /* <ESC>$B  JISX-208    */
+            { 0x1B, 0x24, 0x28, 0x44},  /* <ESC>$(D JISX-212    */
+            { 0x1B, 0x24, 0x41},        /* <ESC>$A  GB2312      */
+            { 0x1B, 0x24, 0x28, 0x43},  /* <ESC>$(C KSC5601     */
+            { 0x1B, 0x28, 0x49}         /* <ESC>(I  HWKANA_7BIT */
+    };
+    /*
+     * JIS X 0208 has fallbacks from Unicode half-width Katakana to full-width (DBCS)
+     * Katakana.
+     * Now that we use a Shift-JIS table for JIS X 0208 we need to hardcode these fallbacks
+     * because Shift-JIS roundtrips half-width Katakana to single bytes.
+     * These were the only fallbacks in ICU's jisx-208.ucm file.
+     */
+    private final static char []hwkana_fb = {
+        0x2123,  /* U+FF61 */
+        0x2156,
+        0x2157,
+        0x2122,
+        0x2126,
+        0x2572,
+        0x2521,
+        0x2523,
+        0x2525,
+        0x2527,
+        0x2529,
+        0x2563,
+        0x2565,
+        0x2567,
+        0x2543,
+        0x213C,  /* U+FF70 */
+        0x2522,
+        0x2524,
+        0x2526,
+        0x2528,
+        0x252A,
+        0x252B,
+        0x252D,
+        0x252F,
+        0x2531,
+        0x2533,
+        0x2535,
+        0x2537,
+        0x2539,
+        0x253B,
+        0x253D,
+        0x253F,  /* U+FF80 */
+        0x2541,
+        0x2544,
+        0x2546,
+        0x2548,
+        0x254A,
+        0x254B,
+        0x254C,
+        0x254D,
+        0x254E,
+        0x254F,
+        0x2552,
+        0x2555,
+        0x2558,
+        0x255B,
+        0x255E,
+        0x255F,  /* U+FF90 */
+        0x2560,
+        0x2561,
+        0x2562,
+        0x2564,
+        0x2566,
+        0x2568,
+        0x2569,
+        0x256A,
+        0x256B,
+        0x256C,
+        0x256D,
+        0x256F,
+        0x2573,
+        0x212B,
+        0x212C   /* U+FF9F */
+    };
+    
+    protected byte [][]fromUSubstitutionChar = new byte[][]{ { (byte)0x1A }, { (byte)0x2F, (byte)0x7E} };
+    /****************************ISO-2022-JP************************************/
+    private class CharsetEncoderISO2022JP extends CharsetEncoderICU {
+        public CharsetEncoderISO2022JP(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[0]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        /* Map Unicode to 00..7F according to JIS X 0201. Return U+FFFE if unmappable. */
+        private int jisx201FromU(int value) {
+            if (value <= 0x7f) {
+                if (value != 0x5c && value != 0x7e) {
+                    return value;
+                }
+            } else if (value == 0xa5) {
+                return 0x5c;
+            } else if (value == 0x203e) {
+                return 0x7e;
+            }
+            return (int)(UConverterConstants.UNSIGNED_INT_MASK & 0xfffe);
+        }
+        
+        /*
+         * Take a valid Shift-JIS byte pair, check that it is in the range corresponding
+         * to JIS X 0208, and convert it to a pair of 21..7E bytes.
+         * Return 0 if the byte pair is out of range.
+         */
+        private int _2022FromSJIS(int value) {
+            short trail;
+            
+            if (value > 0xEFFC) {
+                return 0; /* beyond JIS X 0208 */
+            }
+            
+            trail = (short)(value & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            value &= 0xff00; /* lead byte */
+            if (value <= 0x9f00) {
+                value -= 0x7000;
+            } else { /* 0xe000 <= value <= 0xef00 */
+                value -= 0xb000;
+            }
+            
+            value <<= 1;
+            
+            if (trail <= 0x9e) {
+                value -= 0x100;
+                if (trail <= 0x7e) {
+                    value |= ((trail - 0x1f) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else {
+                    value |= ((trail - 0x20) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                }
+            } else { /* trail <= 0xfc */
+                value |= ((trail - 0x7e) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            }
+            
+            return value;
+        }
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets){
+                CoderResult err = CoderResult.UNDERFLOW;
+                byte[] buffer = new byte[8];
+                int i = 0;
+                byte[] subchar;
+                subchar = encoder.replacement();
+                
+                byte cs;
+                if (myConverterData.fromU2022State.g == 1) {
+                    /* JIS7: switch from G1 to G0 */
+                    myConverterData.fromU2022State.g = 0;
+                    buffer[i++] = UConverterConstants.SI;
+                }
+                cs = myConverterData.fromU2022State.cs[0];
+                
+                if (cs != ASCII && cs != JISX201) {
+                    /* not in ASCII or JIS X 0201: switch to ASCII */
+                    myConverterData.fromU2022State.cs[0] = ASCII;
+                    buffer[i++] = 0x1B;
+                    buffer[i++] = 0x28;
+                    buffer[i++] = 0x42;
+                }
+                
+                buffer[i++] = subchar[0];
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+
+                return err;
+            }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceChar;
+            byte cs, g;
+            int choiceCount;
+            int len, outLen;
+            byte[] choices = new byte[10];
+            int targetValue = 0;
+            boolean usingFallback;
+            byte[] buffer = new byte[8];
+            boolean getTrail = false; // use for getTrail label
+            int oldSourcePos; // for proper error handling
+            
+            choiceCount = 0;
+            
+            /* check if the last codepoint of previous buffer was a lead surrogate */
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                getTrail = true;
+            }
+            
+            while (getTrail || source.hasRemaining()) {
+                if (getTrail || target.hasRemaining()) {
+                    oldSourcePos = source.position();
+                    if (!getTrail) { /* skip if going to getTrail label */
+                        sourceChar = source.get();
+                    }
+                    /* check if the char is a First surrogate */
+                    if (getTrail || UTF16.isSurrogate((char)sourceChar)) {
+                        if (getTrail || UTF16.isLeadSurrogate((char)sourceChar)) {
+// getTrail:                 
+                            if (getTrail) {
+                                getTrail = false;
+                            }
+                            /* look ahead to find the trail surrogate */
+                            if (source.hasRemaining()) {
+                                /* test the following code unit */
+                                char trail = source.get();
+                                /* go back to the previous position */
+                                source.position(source.position()-1);
+                                if (UTF16.isTrailSurrogate(trail)) {
+                                    source.get();
+                                    sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                    fromUChar32 = 0x00;
+                                    /* convert this supplementary code point */
+                                    /* exit this condition tree */
+                                } else {
+                                    /* this is an unmatched lead code unit (1st surrogate) */
+                                    /* callback(illegal) */
+                                    err = CoderResult.malformedForLength(1);
+                                    fromUChar32 = sourceChar;
+                                    break;
+                                }
+                            } else {
+                                /* no more input */
+                                fromUChar32 = sourceChar;
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    
+                    /* do not convert SO/SI/ESC */
+                    if (IS_2022_CONTROL(sourceChar)) {
+                        /* callback(illegal) */
+                        err = CoderResult.malformedForLength(1);
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                    
+                    /* do the conversion */
+                    
+                    if (choiceCount == 0) {
+                        char csm;
+                        /*
+                         * The csm variable keeps track of which charsets are allowed
+                         * and not used yet while building the choices[].
+                         */
+                        csm = (char)jpCharsetMasks[myConverterData.version];
+                        choiceCount = 0;
+                        
+                        /* JIS7/8: try single-byte half-width Katakana before JISX208 */
+                        if (myConverterData.version == 3 || myConverterData.version == 4) {
+                            choices[choiceCount++] = HWKANA_7BIT;
+                        }
+                        /* Do not try single-bit half-width Katakana for other versions. */
+                        csm &= ~CSM(HWKANA_7BIT);
+                        
+                        /* try the current G0 charset */
+                        choices[choiceCount++] = cs = myConverterData.fromU2022State.cs[0];
+                        csm &= ~CSM(cs);
+                        
+                        /* try the current G2 charset */
+                        if ((cs = myConverterData.fromU2022State.cs[2]) != 0) {
+                            choices[choiceCount++] = cs;
+                            csm &= ~CSM(cs);
+                        }
+                        
+                        /* try all the other charsets */
+                        for (int i = 0; i < jpCharsetPref.length; i++) {
+                            cs = jpCharsetPref[i];
+                            if ((CSM(cs) & csm) != 0) {
+                                choices[choiceCount++] = cs;
+                                csm &= ~CSM(cs);
+                            }
+                        }
+                    }
+                    
+                    cs = g = 0;
+                    /* 
+                     * len==0:  no mapping found yet
+                     * len<0:   found a fallback result:  continue looking for a roundtrip but no further fallbacks
+                     * len>0:   found a roundtrip result, done
+                     */
+                    len = 0;
+                    /*
+                     * We will turn off usingFallBack after finding a fallback,
+                     * but we still get fallbacks from PUA code points as usual.
+                     * Therefore, we will also need to check that we don't overwrite
+                     * an early fallback with a later one.
+                     */
+                    usingFallback = useFallback;
+                    
+                    for (int i = 0; i < choiceCount && len <= 0; i++) {
+                        int[] value = new int[1];
+                        int len2;
+                        byte cs0 = choices[i];
+                        switch (cs0) {
+                        case ASCII:
+                            if (sourceChar <= 0x7f) {
+                                targetValue = sourceChar;
+                                len = 1;
+                                cs = cs0;
+                                g = 0;
+                            }
+                            break;
+                        case ISO8859_1:
+                            if (GR96_START <= sourceChar && sourceChar <= GR96_END) {
+                                targetValue = sourceChar - 0x80;
+                                len = 1;
+                                cs = cs0;
+                                g = 2;
+                            }
+                            break;
+                        case HWKANA_7BIT:
+                            if (sourceChar <= HWKANA_END && sourceChar >= HWKANA_START) {
+                                if (myConverterData.version == 3) {
+                                    /* JIS7: use G1 (SO) */
+                                    /* Shift U+FF61..U+FF9F to bytes 21..5F. */
+                                    targetValue = (int)(UConverterConstants.UNSIGNED_INT_MASK & (sourceChar - (HWKANA_START - 0x21)));
+                                    len = 1;
+                                    myConverterData.fromU2022State.cs[1] = cs = cs0; /* do not output an escape sequence */
+                                    g = 1;
+                                } else if (myConverterData.version == 4) {
+                                    /* JIS8: use 8-bit bytes with any single-byte charset, see escape sequence output below */
+                                    /* Shift U+FF61..U+FF9F to bytes A1..DF. */
+                                    targetValue = (int)(UConverterConstants.UNSIGNED_INT_MASK & (sourceChar - (HWKANA_START - 0xa1)));
+                                    len = 1;
+                                    
+                                    cs = myConverterData.fromU2022State.cs[0];
+                                    if (IS_JP_DBCS(cs)) {
+                                        /* switch from a DBCS charset to JISX201 */
+                                        cs = JISX201;
+                                    }
+                                    /* else stay in the current G0 charset */
+                                    g = 0;
+                                }
+                                /* else do not use HWKANA_7BIT with other versions */
+                            }
+                            break;
+                        case JISX201:
+                            /* G0 SBCS */
+                            value[0] = jisx201FromU(sourceChar);
+                            if (value[0] <= 0x7f) {
+                                targetValue = value[0];
+                                len = 1;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        case JISX208:
+                            /* G0 DBCS from JIS table */
+                            myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                            myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                            len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                            //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                            if (len2 == 2 || (len2 == -2 && len == 0)) { /* only accept DBCS: abs(len) == 2 */
+                                value[0] = _2022FromSJIS(value[0]);
+                                if (value[0] != 0) {
+                                    targetValue = value[0];
+                                    len = len2;
+                                    cs = cs0;
+                                    g = 0;
+                                    usingFallback = false;
+                                }
+                            } else if (len == 0 && usingFallback  && sourceChar <= HWKANA_END && sourceChar >= HWKANA_START) {
+                                targetValue = hwkana_fb[sourceChar - HWKANA_START];
+                                len = -2;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        case ISO8859_7:
+                            /* G0 SBCS forced to 7-bit output */
+                            len2 = MBCSSingleFromUChar32(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback);
+                            if (len2 != 0 && !(len2 < 0 && len != 0) && GR96_START <= value[0] && value[0] <= GR96_END) {
+                                targetValue = value[0] - 0x80;
+                                len = len2;
+                                cs = cs0;
+                                g = 2;
+                                usingFallback = false;
+                            }
+                            break;
+                        default :
+                            /* G0 DBCS */
+                            myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                            myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                            len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                            //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                            if (len2 == 2 || (len2 == -2 && len == 0)) { /* only accept DBCS: abs(len)==2 */
+                                if (cs0 == KSC5601) {
+                                    /*
+                                     * Check for valid bytes for the encoding scheme.
+                                     * This is necessary because the sub-converter (windows-949)
+                                     * has a broader encoding scheme than is valid for 2022.
+                                     */
+                                    value[0] = _2022FromGR94DBCS(value[0]);
+                                    if (value[0] == 0) {
+                                        break;
+                                    }
+                                }
+                                targetValue = value[0];
+                                len = len2;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        }
+                    }
+                    
+                    if (len != 0) {
+                        if (len < 0) {
+                            len = -len; /* fallback */
+                        }
+                        outLen = 0;
+                        
+                        /* write SI if necessary (only for JIS7 */
+                        if (myConverterData.fromU2022State.g == 1 && g == 0) {
+                            buffer[outLen++] = UConverterConstants.SI;
+                            myConverterData.fromU2022State.g = 0;
+                        }
+                        
+                        /* write the designation sequence if necessary */
+                        if (cs != myConverterData.fromU2022State.cs[g]) {
+                            for (int i = 0; i < escSeqChars[cs].length; i++) {
+                                buffer[outLen++] = escSeqChars[cs][i];
+                            }
+                            myConverterData.fromU2022State.cs[g] = cs;
+                            
+                            /* invalidate the choices[] */
+                            choiceCount = 0;
+                        }
+                        
+                        /* write the shift sequence if necessary */
+                        if (g != myConverterData.fromU2022State.g) {
+                            switch (g) {
+                            /* case 0 handled before writing escapes */
+                            case 1:
+                                buffer[outLen++] = UConverterConstants.SO;
+                                myConverterData.fromU2022State.g = 1;
+                                break;
+                            default : /* case 2 */
+                                buffer[outLen++] = 0x1b;
+                                buffer[outLen++] = 0x4e;
+                                break;
+                            /* case 3: no SS3 in ISO-2022-JP-x */
+                            }
+                        }
+                        
+                        /* write the output bytes */
+                        if (len == 1) {
+                            buffer[outLen++] = (byte)targetValue;
+                        } else { /* len == 2 */
+                            buffer[outLen++] = (byte)(targetValue >> 8);
+                            buffer[outLen++] = (byte)targetValue;
+                        }
+                    }else {
+                        /*
+                         * if we cannot find the character after checking all codepages
+                         * then this is an error.
+                         */
+                        err = CoderResult.unmappableForLength(source.position()-oldSourcePos);
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                    
+                    if (sourceChar == CR || sourceChar == LF) {
+                        /* reset the G2 state at the end of a line (conversion got use into ASCII or JISX201 already) */
+                        myConverterData.fromU2022State.cs[2] = 0;
+                        choiceCount = 0;
+                    }
+                    
+                    /* output outLen>0 bytes in buffer[] */
+                    if (outLen == 1) {
+                        target.put(buffer[0]);
+                        if (offsets != null) {
+                            offsets.put(source.remaining() - 1); /* -1 known to be ASCII */
+                        }
+                    } else if (outLen == 2 && (target.position() + 2) <= target.limit()) {
+                        target.put(buffer[0]);
+                        target.put(buffer[1]);
+                        if (offsets != null) {
+                            int sourceIndex = source.position() - 1;
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, outLen, target, offsets, source.position()-1);
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-JP conversion
+             * we need to be in ASCII mode at the very end
+             * 
+             * conditions:
+             *  successful
+             *  in SO mode or not in ASCII mode
+             *  end of input and no truncated input
+             */
+            if (!err.isError() &&
+                    (myConverterData.fromU2022State.g != 0 || myConverterData.fromU2022State.cs[0] != ASCII) &&
+                    flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                outLen = 0;
+                
+                if (myConverterData.fromU2022State.g != 0) {
+                    buffer[outLen++] = UConverterConstants.SI;
+                    myConverterData.fromU2022State.g = 0;
+                }
+                
+                if (myConverterData.fromU2022State.cs[0] != ASCII) {
+                    for (int i = 0; i < escSeqChars[ASCII].length; i++) {
+                        buffer[outLen++] = escSeqChars[ASCII][i];
+                    }
+                    myConverterData.fromU2022State.cs[0] = ASCII;
+                }
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) &&
+                            (sourceIndex == 0 || UTF16.isLeadSurrogate(source.get(sourceIndex-1)))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, outLen, target, offsets, sourceIndex);
+            }
+            return err;
+        }
+    }
+    /****************************ISO-2022-CN************************************/
+    /*
+     * Rules for ISO-2022-CN Encoding:
+     * i)   The designator sequence must appear once on a line before any instance
+     *      of chracter set it designates.
+     * ii)  If two lines contain characters from the same character set, both lines
+     *      must include the designator sequence.
+     * iii) Once the designator sequence is known, a shifting sequence has to be found
+     *      to invoke the shifting
+     * iv)  All lines start in ASCII and end in ASCII.
+     * v)   Four shifting sequences are employed for this purpose:
+     *      Sequence    ASCII Eq    Charsets
+     *      ---------   ---------   --------
+     *      SI          <SI>        US-ASCII
+     *      SO          <SO>        CNS-11643-1992 Plane 1, GB2312, ISO-IR-165
+     *      SS2         <ESC>N      CNS-11643-1992 Plane 2
+     *      SS3         <ESC>O      CNS-11643-1992 Planes 3-7
+     * vi)  
+     *      SOdesignator    : ESC "$" ")" finalchar_for_SO
+     *      SS2designator   : ESC "$" "*" finalchar_for_SS2
+     *      SS3designator   : ESC "$" "+" finalchar_for_SS3
+     *      
+     *      ESC $ ) A       Indicates the bytes following SO are Chinese
+     *       characters as defined in GB 2312-80, until
+     *       another SOdesignation appears
+     *      
+     *      ESC $ ) E       Indicates the bytes following SO are as defined
+     *       in ISO-IR-165 (for details, see section 2.1),
+     *       until another SOdesignation appears
+     *       
+     *      ESC $ ) G       Indicates the bytes following SO are as defined
+     *       in CNS 11643-plane-1, until another SOdesignation appears
+     *       
+     *      ESC $ * H       Indicates teh two bytes immediately following
+     *       SS2 is a Chinese character as defined in CNS
+     *       11643-plane-2, until another SS2designation
+     *       appears
+     *       (Meaning <ESC>N must preceed ever 2 byte sequence.)
+     *      
+     *      ESC $ + I       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-3, until another SS3designation
+     *       appears
+     *       (Meaning <ESC>O must preceed every 2 byte sequence.)
+     *      
+     *      ESC $ + J       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-4, until another SS3designation
+     *       appears
+     *       (In English: <ESC>O must preceed every 2 byte sequence.)
+     *      
+     *      ESC $ + K       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-5, until another SS3designation
+     *       appears
+     *       
+     *      ESC $ + L       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-6, until another SS3designation
+     *       appears
+     *       
+     *      ESC $ + M       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-7, until another SS3designation
+     *       appears
+     *       
+     *      As in ISO-2022-CN, each line starts in ASCII, and ends in ASCII, and
+     *      has its own designation information before any Chinese chracters
+     *      appears
+     */
+    
+    /* The following are defined this way to make strings truely readonly */
+    private final static byte[] GB_2312_80_STR = { 0x1B, 0x24, 0x29, 0x41 };
+    private final static byte[] ISO_IR_165_STR = { 0x1B, 0x24, 0x29, 0x45 };
+    private final static byte[] CNS_11643_1992_Plane_1_STR = { 0x1B, 0x24, 0x29, 0x47 };
+    private final static byte[] CNS_11643_1992_Plane_2_STR = { 0x1B, 0x24, 0x2A, 0x48 };
+    private final static byte[] CNS_11643_1992_Plane_3_STR = { 0x1B, 0x24, 0x2B, 0x49 };
+    private final static byte[] CNS_11643_1992_Plane_4_STR = { 0x1B, 0x24, 0x2B, 0x4A };
+    private final static byte[] CNS_11643_1992_Plane_5_STR = { 0x1B, 0x24, 0x2B, 0x4B };
+    private final static byte[] CNS_11643_1992_Plane_6_STR = { 0x1B, 0x24, 0x2B, 0x4C };
+    private final static byte[] CNS_11643_1992_Plane_7_STR = { 0x1B, 0x24, 0x2B, 0x4D };
+    
+    /************************ ISO2022-CN Data *****************************/
+    private final static byte[][] escSeqCharsCN = {
+        SHIFT_IN_STR,
+        GB_2312_80_STR,
+        ISO_IR_165_STR,
+        CNS_11643_1992_Plane_1_STR,
+        CNS_11643_1992_Plane_2_STR,
+        CNS_11643_1992_Plane_3_STR,
+        CNS_11643_1992_Plane_4_STR,
+        CNS_11643_1992_Plane_5_STR,
+        CNS_11643_1992_Plane_6_STR,
+        CNS_11643_1992_Plane_7_STR,
+    };
+    
+    private class CharsetEncoderISO2022CN extends CharsetEncoderICU {
+        public CharsetEncoderISO2022CN(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[0]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+            CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] buffer = new byte[8];
+            int i = 0;
+            byte[] subchar;
+            subchar = encoder.replacement();
+            
+            if (myConverterData.fromU2022State.g != 0) {
+                /* not in ASCII mode: switch to ASCII */
+                myConverterData.fromU2022State.g = 0;
+                buffer[i++] = UConverterConstants.SI;
+            }
+            buffer[i++] = subchar[0];
+            
+            err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+
+            return err;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceChar;
+            byte[] buffer = new byte[8];
+            int len;
+            byte[] choices = new byte[3];
+            int choiceCount;
+            int targetValue = 0;
+            boolean usingFallback;
+            boolean gotoGetTrail = false;
+            int oldSourcePos; // For proper error handling
+            
+            choiceCount = 0;
+            
+            /* check if the last codepoint of previous buffer was a lead surrogate */
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                // goto getTrail label
+                gotoGetTrail = true; 
+            }
+            
+            while (source.hasRemaining() || gotoGetTrail) {
+                if (target.hasRemaining() || gotoGetTrail) {
+                    oldSourcePos = source.position();
+                    if (!gotoGetTrail) {
+                        sourceChar = source.get();
+                    }
+                    /* check if the char is a First surrogate */
+                    if (UTF16.isSurrogate((char)sourceChar) || gotoGetTrail) {
+                        if (UTF16.isLeadSurrogate((char)sourceChar) || gotoGetTrail) {
+// getTrail label
+                            /* reset gotoGetTrail flag*/
+                             gotoGetTrail = false;
+                            
+                            /* look ahead to find the trail surrogate */
+                            if (source.hasRemaining()) {
+                                /* test the following code unit */
+                                char trail = source.get();
+                                source.position(source.position()-1);
+                                if (UTF16.isTrailSurrogate(trail)) {
+                                    source.get();
+                                    sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                    fromUChar32 = 0x00;
+                                    /* convert this supplementary code point */
+                                    /* exit this condition tree */
+                                } else {
+                                    /* this is an unmatched lead code unit (1st surrogate) */
+                                    /* callback(illegal) */
+                                    err = CoderResult.malformedForLength(1);
+                                    fromUChar32 = sourceChar;
+                                    break;
+                                }
+                            } else {
+                                /* no more input */
+                                fromUChar32 = sourceChar;
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    
+                    /* do the conversion */
+                    if (sourceChar <= 0x007f) {
+                        /* do not converter SO/SI/ESC */
+                        if (IS_2022_CONTROL(sourceChar)) {
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                        
+                        /* US-ASCII */
+                        if (myConverterData.fromU2022State.g == 0) {
+                            buffer[0] = (byte)sourceChar;
+                            len = 1;
+                        } else {
+                            buffer[0] = UConverterConstants.SI;
+                            buffer[1] = (byte)sourceChar;
+                            len = 2;
+                            myConverterData.fromU2022State.g = 0;
+                            choiceCount = 0;
+                        }
+                        
+                        if (sourceChar == CR || sourceChar == LF) {
+                            /* reset the state at the end of a line */
+                            myConverterData.fromU2022State.reset();
+                            choiceCount = 0;
+                        }
+                    } else {
+                        /* convert U+0080..U+10ffff */
+                        int i;
+                        byte cs, g;
+                        
+                        if (choiceCount == 0) {
+                            /* try the current SO/G1 converter first */
+                            choices[0] = myConverterData.fromU2022State.cs[1];
+                            
+                            /* default to GB2312_1 if none is designated yet */
+                            if (choices[0] == 0) {
+                                choices[0] = GB2312_1;
+                            }
+                            if (myConverterData.version == 0) {
+                                /* ISO-2022-CN */
+                                /* try other SO/G1 converter; a CNS_11643_1 lookup may result in any plane */
+                                if (choices[0] == GB2312_1) {
+                                    choices[1] = CNS_11643_1;
+                                } else {
+                                    choices[1] = GB2312_1;
+                                }
+                                
+                                choiceCount = 2;
+                            } else {
+                                /* ISO-2022-CN-EXT */
+                                
+                                /* try one of the other converters */
+                                switch (choices[0]) {
+                                case GB2312_1:
+                                    choices[1] = CNS_11643_1;
+                                    choices[2] = ISO_IR_165;
+                                    break;
+                                case ISO_IR_165:
+                                    choices[1] = GB2312_1;
+                                    choices[2] = CNS_11643_1;
+                                    break;
+                                default :
+                                    choices[1] = GB2312_1;
+                                    choices[2] = ISO_IR_165;
+                                    break;
+                                }
+                                
+                                choiceCount = 3;
+                            }
+                        }
+                        
+                        cs = g = 0;
+                        /*
+                         * len==0:  no mapping found yet
+                         * len<0:   found a fallback result: continue looking for a roundtrip but no further fallbacks
+                         * len>0:   found a roundtrip result, done
+                         */
+                        len = 0;
+                        /*
+                         * We will turn off usingFallback after finding a fallback,
+                         * but we still get fallbacks from PUA code points as usual.
+                         * Therefore, we will also need to check that we don't overwrite
+                         * an early fallback with a later one.
+                         */
+                        usingFallback = useFallback;
+                        
+                        for (i = 0; i < choiceCount && len <= 0; ++i) {
+                            byte cs0 = choices[i];
+                            if (cs0 > 0) {
+                                int[] value = new int[1];
+                                int len2;
+                                if (cs0 > CNS_11643_0) {
+                                    myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[CNS_11643];
+                                    myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_3;
+                                    len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                                    //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[CNS_11643],
+                                    //        sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_3);
+                                    if (len2 == 3 || (len2 == -3 && len == 0)) {
+                                        targetValue = value[0];
+                                        cs = (byte)(CNS_11643_0 + (value[0] >> 16) - 0x80);
+                                        if (len2 >= 0) {
+                                            len = 2;
+                                        } else {
+                                            len = -2;
+                                            usingFallback = false;
+                                        }
+                                        if (cs == CNS_11643_1) {
+                                            g = 1;
+                                        } else if (cs == CNS_11643_2) {
+                                            g = 2;
+                                        } else if (myConverterData.version == 1) { /* plane 3..7 */
+                                            g = 3;
+                                        } else {
+                                            /* ISO-2022-CN (without -EXT) does not support plane 3..7 */
+                                            len = 0;
+                                        }
+                                    }
+                                } else {
+                                    /* GB2312_1 or ISO-IR-165 */
+                                    myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                                    myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                                    len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                                    //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0],
+                                    //        sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                                    if (len2 == 2 || (len2 == -2 && len == 0)) {
+                                        targetValue = value[0];
+                                        len = len2;
+                                        cs = cs0;
+                                        g = 1;
+                                        usingFallback = false;
+                                    }
+                                }
+                            }
+                        }
+                        
+                        if (len != 0) {
+                            len = 0; /* count output bytes; it must have ben abs(len) == 2 */
+                            
+                            /* write the designation sequence if necessary */
+                            if (cs != myConverterData.fromU2022State.cs[g]) {
+                                if (cs < CNS_11643) {
+                                    for (int n = 0; n < escSeqCharsCN[cs].length; n++) {
+                                        buffer[n] = escSeqCharsCN[cs][n];
+                                    }
+                                } else {
+                                    for (int n = 0; n < escSeqCharsCN[CNS_11643 + (cs - CNS_11643_1)].length; n++) {
+                                        buffer[n] = escSeqCharsCN[CNS_11643 + (cs - CNS_11643_1)][n];
+                                    }
+                                }
+                                len = 4;
+                                myConverterData.fromU2022State.cs[g] = cs;
+                                if (g == 1) {
+                                    /* changing the SO/G1 charset invalidates the choices[] */
+                                    choiceCount = 0;
+                                }
+                            }
+                            
+                            /* write the shift sequence if necessary */
+                            if (g != myConverterData.fromU2022State.g) {
+                                switch (g) {
+                                case 1:
+                                    buffer[len++] = UConverterConstants.SO;
+                                    
+                                    /* set the new state only if it is the locking shift SO/G1, not for SS2 or SS3 */
+                                    myConverterData.fromU2022State.g = 1;
+                                    break;
+                                case 2:
+                                    buffer[len++] = 0x1b;
+                                    buffer[len++] = 0x4e;
+                                    break;
+                                default: /* case 3 */
+                                    buffer[len++] = 0x1b;
+                                    buffer[len++] = 0x4f;
+                                    break;
+                                }
+                            }
+                            
+                            /* write the two output bytes */
+                            buffer[len++] = (byte)(targetValue >> 8);
+                            buffer[len++] = (byte)targetValue;
+                        } else {
+                            /* if we cannot find the character after checking all codepages
+                             * then this is an error
+                             */
+                            err = CoderResult.unmappableForLength(source.position()-oldSourcePos);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    /* output len>0 bytes in buffer[] */
+                    if (len == 1) {
+                        target.put(buffer[0]);
+                        if (offsets != null) {
+                            offsets.put(source.position()-1);
+                        }
+                    } else if (len == 2 && (target.remaining() >= 2)) {
+                        target.put(buffer[0]);
+                        target.put(buffer[1]);
+                        if (offsets != null) {
+                            int sourceIndex = source.position();
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, len, target, offsets, source.position()-1);
+                        if (err.isError()) {
+                            break;
+                        }
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            } /* end while (source.hasRemaining() */
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-CN conversion
+             * we need to be in ASCII mode at the very end
+             * 
+             * condtions:
+             *   succesful
+             *   not in ASCII mode
+             *   end of input and no truncated input
+             */
+            if (!err.isError() && myConverterData.fromU2022State.g != 0 && flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                /* we are switching to ASCII */
+                myConverterData.fromU2022State.g = 0;
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) && 
+                            (sourceIndex == 0 || UTF16.isLeadSurrogate(source.get(sourceIndex-1)))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, SHIFT_IN_STR, 0, 1, target, offsets, sourceIndex);
+            }
+            
+            return err;
+        }
+    }
+    /******************************** ISO-2022-KR *****************************/
+    /*
+     *   Rules for ISO-2022-KR encoding
+     *   i) The KSC5601 designator sequence should appear only once in a file,
+     *      at the begining of a line before any KSC5601 characters. This usually
+     *      means that it appears by itself on the first line of the file
+     *  ii) There are only 2 shifting sequences SO to shift into double byte mode
+     *      and SI to shift into single byte mode
+     */
+    private class CharsetEncoderISO2022KR extends CharsetEncoderICU {
+        public CharsetEncoderISO2022KR(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[myConverterData.version]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+            setInitialStateFromUnicodeKR(this);
+        }
+        
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+            CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] buffer = new byte[8];
+            int length, i = 0;
+            byte[] subchar;
+            
+            subchar = encoder.replacement();
+            length = subchar.length;
+            
+            if (myConverterData.version == 0) {
+                if (length == 1) {
+                    if (encoder.fromUnicodeStatus != 0) {
+                        /* in DBCS mode: switch to SBCS */
+                        encoder.fromUnicodeStatus = 0;
+                        buffer[i++] = UConverterConstants.SI;
+                    }
+                    buffer[i++] = subchar[0];
+                } else { /* length == 2 */
+                    if (encoder.fromUnicodeStatus == 0) {
+                        /* in SBCS mode: switch to DBCS */
+                        encoder.fromUnicodeStatus = 1;
+                        buffer[i++] = UConverterConstants.SO;
+                    }
+                    buffer[i++] = subchar[0];
+                    buffer[i++] = subchar[1];
+                }
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+            } else { 
+                /* save the subvonverter's substitution string */
+                byte[] currentSubChars = myConverterData.currentEncoder.replacement();
+                
+                /* set our substitution string into the subconverter */
+                myConverterData.currentEncoder.replaceWith(subchar);
+                myConverterData.currentConverter.subChar1 = fromUSubstitutionChar[0][0];
+                /* let the subconverter write the subchar, set/retrieve fromUChar32 state */
+                myConverterData.currentEncoder.fromUChar32 = encoder.fromUChar32;
+                err = myConverterData.currentEncoder.cbFromUWriteSub(myConverterData.currentEncoder, source, target, offsets);
+                encoder.fromUChar32 = myConverterData.currentEncoder.fromUChar32;
+                
+                /* restore the subconverter's substitution string */
+                myConverterData.currentEncoder.replaceWith(currentSubChars);
+                
+                if (err.isOverflow()) {
+                    if (myConverterData.currentEncoder.errorBufferLength > 0) {
+                        encoder.errorBuffer = (byte[])(myConverterData.currentEncoder.errorBuffer.clone());
+                    }
+                    encoder.errorBufferLength = myConverterData.currentEncoder.errorBufferLength;
+                    myConverterData.currentEncoder.errorBufferLength = 0;
+                }
+            }
+            
+            return err;
+        }
+        
+        private CoderResult encodeLoopIBM(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+
+            myConverterData.currentEncoder.fromUChar32 = fromUChar32;
+            err = myConverterData.currentEncoder.cnvMBCSFromUnicodeWithOffsets(source, target, offsets, flush);
+            fromUChar32 = myConverterData.currentEncoder.fromUChar32;
+            
+            if (err.isOverflow()) {
+                if (myConverterData.currentEncoder.errorBufferLength > 0) {
+                    errorBuffer = (byte[])(myConverterData.currentEncoder.errorBuffer.clone());
+                }
+                errorBufferLength = myConverterData.currentEncoder.errorBufferLength;
+                myConverterData.currentEncoder.errorBufferLength = 0;
+            }
+            
+            return err;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int[] targetByteUnit = { 0x0000 };
+            int sourceChar = 0x0000;
+            boolean isTargetByteDBCS;
+            boolean oldIsTargetByteDBCS;
+            boolean usingFallback;
+            int length = 0;
+            boolean gotoGetTrail = false; // for goto getTrail label call
+            
+            /*
+             * if the version is 1 then the user is requesting
+             * conversion with ibm-25546 pass the argument to
+             * MBCS converter and return
+             */
+            if (myConverterData.version == 1) {
+                return encodeLoopIBM(source, target, offsets, flush);
+            }
+            
+            usingFallback = useFallback;
+            isTargetByteDBCS = fromUnicodeStatus == 0 ? false : true;
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                gotoGetTrail = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrail) {
+                targetByteUnit[0] = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining() || gotoGetTrail) {
+                    if (!gotoGetTrail) {
+                        sourceChar = source.get();
+                    
+                        /* do not convert SO/SI/ESC */
+                        if (IS_2022_CONTROL(sourceChar)) {
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                        myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                        length = myConverterData.currentEncoder.fromUChar32(sourceChar, targetByteUnit, usingFallback);
+                        //length = MBCSFromUChar32_ISO2022(myConverterData.currentConverter.sharedData, sourceChar, targetByteUnit, usingFallback, CharsetMBCS.MBCS_OUTPUT_2); 
+                        if (length < 0) {
+                            length = -length; /* fallback */
+                        }
+                        /* only DBCS or SBCS characters are expected */
+                        /* DB characters with high bit set to 1 are expected */
+                        if (length > 2 || length == 0 || (((targetByteUnit[0] & 0x8080) != 0x8080) && length == 2)) {
+                            targetByteUnit[0] = UConverterConstants.missingCharMarker;
+                        }
+                    }
+                    if (!gotoGetTrail && targetByteUnit[0] != UConverterConstants.missingCharMarker) {
+                        oldIsTargetByteDBCS = isTargetByteDBCS;
+                        isTargetByteDBCS = (targetByteUnit[0] > 0x00FF);
+                        /* append the shift sequence */
+                        if (oldIsTargetByteDBCS != isTargetByteDBCS) {
+                            if (isTargetByteDBCS) {
+                                target.put((byte)UConverterConstants.SO);
+                            } else {
+                                target.put((byte)UConverterConstants.SI);
+                            }
+                            if (offsets != null) {
+                                offsets.put(source.position()-1);
+                            }
+                        }
+                        /* write the targetUniChar to target */
+                        if (targetByteUnit[0] <= 0x00FF) {
+                            if (target.hasRemaining()) {
+                                target.put((byte)targetByteUnit[0]);
+                                if (offsets != null) {
+                                    offsets.put(source.position()-1);
+                                }
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte)targetByteUnit[0];
+                                err = CoderResult.OVERFLOW;
+                            }
+                        } else {
+                            if (target.hasRemaining()) {
+                                target.put((byte)(UConverterConstants.UNSIGNED_BYTE_MASK & ((targetByteUnit[0]>>8) - 0x80)));
+                                if (offsets != null) {
+                                    offsets.put(source.position()-1);
+                                }
+                                if (target.hasRemaining()) {
+                                    target.put((byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0]- 0x80)));
+                                    if (offsets != null) {
+                                        offsets.put(source.position()-1);
+                                    }
+                                } else {
+                                    errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0] - 0x80));
+                                    err = CoderResult.OVERFLOW;
+                                }
+                                
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & ((targetByteUnit[0]>>8) - 0x80));
+                                errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0]- 0x80));
+                                err = CoderResult.OVERFLOW;
+                            }
+                        }
+                    } else {
+                        /* oops.. the code point is unassigned
+                         * set the error and reason
+                         */
+                        
+                        /* check if the char is a First surrogate */
+                        if (gotoGetTrail || UTF16.isSurrogate((char)sourceChar)) {
+                            if (gotoGetTrail || UTF16.isLeadSurrogate((char)sourceChar)) {
+// getTrail label
+                                // reset gotoGetTrail flag
+                                gotoGetTrail = false;
+                                
+                                /* look ahead to find the trail surrogate */
+                                if (source.hasRemaining()) {
+                                    /* test the following code unit */
+                                    char trail = source.get();
+                                    source.position(source.position()-1);
+                                    if (UTF16.isTrailSurrogate(trail)) {
+                                        source.get();
+                                         sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                         err = CoderResult.unmappableForLength(2);
+                                         /* convert this surrogate code point */
+                                         /* exit this condition tree */
+                                    } else {
+                                        /* this is an unmatched lead code unit (1st surrogate) */
+                                        /* callback(illegal) */
+                                        err = CoderResult.malformedForLength(1);
+                                    }
+                                } else {
+                                    /* no more input */
+                                    err = CoderResult.UNDERFLOW;
+                                }
+                            } else {
+                                /* this is an unmatched trail code unit (2nd surrogate ) */
+                                /* callback(illegal) */
+                                err = CoderResult.malformedForLength(1);
+                            }
+                        } else {
+                            /* callback(unassigned) for a BMP code point */
+                            err = CoderResult.unmappableForLength(1);
+                        }
+                        
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-KR conversion
+             * we need to be inASCII mode at the very end
+             * 
+             * conditions:
+             *  successful
+             *  not in ASCII mode
+             *  end of  input and no truncated input
+             */
+            if (!err.isError() && isTargetByteDBCS && flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                /* we are switching to ASCII */
+                isTargetByteDBCS = false;
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) && UTF16.isLeadSurrogate(source.get(sourceIndex-1))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                CharsetEncoderICU.fromUWriteBytes(this, SHIFT_IN_STR, 0, 1, target, offsets, sourceIndex);
+            }
+            /*save the state and return */
+            fromUnicodeStatus = isTargetByteDBCS ? 1 : 0;
+            
+            return err;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        switch (variant) {
+        case ISO_2022_JP:
+            return new CharsetDecoderISO2022JP(this);
+        
+        case ISO_2022_CN:
+            return new CharsetDecoderISO2022CN(this);
+            
+        case ISO_2022_KR:
+            setInitialStateToUnicodeKR();
+            return new CharsetDecoderISO2022KR(this);
+            
+        default: /* should not happen */
+            return null;
+        }
+    }
+    
+    public CharsetEncoder newEncoder() {
+        CharsetEncoderICU cnv;
+        
+        switch (variant) {
+        case ISO_2022_JP:
+            return new CharsetEncoderISO2022JP(this);
+            
+        case ISO_2022_CN:
+            return new CharsetEncoderISO2022CN(this);
+            
+        case ISO_2022_KR:
+            cnv = new CharsetEncoderISO2022KR(this);
+            setInitialStateFromUnicodeKR(cnv);
+            return cnv;
+            
+        default: /* should not happen */
+            return null;
+        }
+    }
+    
+    private void setInitialStateToUnicodeKR() {
+        if (myConverterData.version == 1) {
+            myConverterData.currentDecoder.toUnicodeStatus = 0;     /* offset */
+            myConverterData.currentDecoder.mode = 0;                /* state */
+            myConverterData.currentDecoder.toULength = 0;           /* byteIndex */
+        }
+    }
+    private void setInitialStateFromUnicodeKR(CharsetEncoderICU cnv) {
+        /* ISO-2022-KR the designator sequence appears only once
+         * in a file so we append it only once
+         */
+        if (cnv.errorBufferLength == 0) {
+            cnv.errorBufferLength = 4;
+            cnv.errorBuffer[0] = 0x1b;
+            cnv.errorBuffer[1] = 0x24;
+            cnv.errorBuffer[2] = 0x29;
+            cnv.errorBuffer[3] = 0x43;
+        }
+        if (myConverterData.version == 1) {
+            ((CharsetMBCS)myConverterData.currentEncoder.charset()).subChar1 = 0x1A;
+            myConverterData.currentEncoder.fromUChar32 = 0;
+            myConverterData.currentEncoder.fromUnicodeStatus = 1; /* prevLength */
+        }
+    }
+    
+    void getUnicodeSetImpl(UnicodeSet setFillIn, int which) {
+        int i;
+        /*open a set and initialize it with code points that are algorithmically round-tripped */
+        
+        switch(variant){
+        case ISO_2022_JP:
+           /*include JIS X 0201 which is hardcoded */
+            setFillIn.add(0xa5);
+            setFillIn.add(0x203e);
+            if((jpCharsetMasks[myConverterData.version]&CSM(ISO8859_1))!=0){
+                /*include Latin-1 some variants of JP */
+                setFillIn.add(0, 0xff);
+            
+            }
+            else {
+                /* include ASCII for JP */
+                setFillIn.add(0, 0x7f);
+             }
+            if(myConverterData.version==3 || myConverterData.version==4 ||which == ROUNDTRIP_AND_FALLBACK_SET){
+            /*
+             * Do not test(jpCharsetMasks[myConverterData.version]&CSM(HWKANA_7BIT))!=0 because the bit
+             * is on for all JP versions although version 3 & 4 (JIS7 and JIS8) use half-width Katakana.
+             * This is because all ISO_2022_JP variant are lenient in that they accept (in toUnicode) half-width
+             * Katakana via ESC.
+             * However, we only emit (fromUnicode) half-width Katakana according to the
+             * definition of each variant.
+             *
+             * When including fallbacks,
+             * we need to include half-width Katakana Unicode code points for all JP variants because
+             * JIS X 0208 has hardcoded fallbacks for them (which map to full-width Katakana).
+             */
+            /* include half-width Katakana for JP */
+                setFillIn.add(HWKANA_START, HWKANA_END);
+             }
+            break;
+        case ISO_2022_CN:
+            /* Include ASCII for CN */
+            setFillIn.add(0, 0x7f);
+            break;
+        case ISO_2022_KR:
+            /* there is only one converter for KR */
+          myConverterData.currentConverter.getUnicodeSetImpl(setFillIn, which);
+          break;
+        default:
+            break;
+        }
+        
+        //TODO Replaced by ucnv_MBCSGetFilteredUnicodeSetForUnicode() until
+        for(i=0; i<UCNV_2022_MAX_CONVERTERS;i++){
+            int filter;
+            if(myConverterData.myConverterArray[i]!=null){
+                if(variant==ISO_2022_CN && myConverterData.version==0 && i==CNS_11643){
+                    /*
+                     * 
+                     * version -specific for CN:
+                     * CN version 0 does not map CNS planes 3..7 although
+                     * they are all available in the CNS conversion table;
+                     * CN version 1 (-EXT) does map them all.
+                     * The two versions create different Unicode sets.
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_2022_CN;
+                } else if(variant==ISO_2022_JP && i == JISX208){
+                    /* 
+                     * Only add code points that map to Shift-JIS codes
+                     * corrosponding to JIS X 208
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_SJIS;
+                } else if(i==KSC5601){
+                    /*
+                     * Some of the KSC 5601 tables (Convrtrs.txt has this aliases on multiple tables)
+                     * are broader than GR94.
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_GR94DBCS;
+                } else {
+                    filter=CharsetMBCS.UCNV_SET_FILTER_NONE;
+                }
+                
+                myConverterData.currentConverter.MBCSGetFilteredUnicodeSetForUnicode(myConverterData.myConverterArray[i],setFillIn, which, filter);
+           }
+        }
+        /*
+         * ISO Converter must not convert SO/SI/ESC despite what sub-converters do by themselves
+         * Remove these characters from the set.
+         */
+        setFillIn.remove(0x0e);
+        setFillIn.remove(0x0f);
+        setFillIn.remove(0x1b);
+        
+        /* ISO 2022 converter do not convert C! controls either */
+        setFillIn.remove(0x80, 0x9f);
+    }
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/com/ibm/icu/charset/CharsetLMBCS.java b/src/com/ibm/icu/charset/CharsetLMBCS.java
new file mode 100644
index 0000000..61e3860
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetLMBCS.java
@@ -0,0 +1,1023 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.charset.CharsetMBCS.CharsetDecoderMBCS;
+import com.ibm.icu.charset.CharsetMBCS.CharsetEncoderMBCS;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.text.UnicodeSet;
+/**
+ * @author Michael Ow
+ *
+ */
+
+/*
+ * LMBCS
+ * 
+ * (Lotus Multi-Byte Character Set)
+ * 
+ * LMBS was invented in the alte 1980's and is primarily used in Lotus Notes
+ * databases and in Lotus 1-2-3 files. Programmers who work with the APIs
+ * into these products will sometimes need to deal with strings in this format.
+ * 
+ * The code in this file provides an implementation for an ICU converter of
+ * LMBCS to and from Unicode.
+ * 
+ * Since the LMBCS character set is only sparsely documented in existing
+ * printed or online material, we have added extensive annotation to this
+ * file to serve as a guide to understanding LMBCS.
+ * 
+ * LMBCS was originally designed with these four sometimes-competing design goals:
+ * -Provide encodings for characters in 12 existing national standards
+ *  (plus a few other characters)
+ * -Minimal memory footprint
+ * -Maximal speed of conversion into the existing national character sets
+ * -No need to track a changing state as you interpret a string.
+ * 
+ * All of the national character sets LMBCS was trying to encode are 'ANSI'
+ * based, in that the bytes from 0x20 - 0x7F are almost exactly the
+ * same common Latin unaccented characters and symbols in all character sets.
+ * 
+ * So, in order to help meet the speed & memory design goals, the common ANSI
+ * bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS.
+ */
+class CharsetLMBCS extends CharsetICU {
+    /*
+     * The general LMBCS code unit is from 1-3 bytes. We can describe the 3 bytes as
+     * follows:
+     * [G] D1 [D2]
+     * That is, a sometimes-optional 'group' byte, followed by 1 and sometimes 2
+     * data bytes. The maximum size of a LMBCS character is 3 bytes:
+     */
+    private static final short ULMBCS_CHARSIZE_MAX = 3;
+    /*
+     * The single-byte values from 0x20 to 0x7F are examples of single D1 bytes.
+     * We often have to figure out if byte values are below or above this, so we
+     * use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control
+     * characters just above & below the common lower-ANSI range.
+     */
+    private static final short ULMBCS_C0END    = 0x1F;
+    private static final short ULMBCS_C1START  = 0x80;
+    /*
+     * Most of the values less than 0x20 are reserved in LMBCS to announce
+     * which national character standard is being used for the 'D' bytes.
+     * In the comments we show that common name and the IBM character-set ID
+     * for these character-set announcers:
+     */
+    private static final short ULMBCS_GRP_L1   = 0x01; /* Latin-1      :ibm-850    */
+    private static final short ULMBCS_GRP_GR   = 0x02; /* Greek        :ibm-851    */
+    private static final short ULMBCS_GRP_HE   = 0x03; /* Hebrew       :ibm-1255   */
+    private static final short ULMBCS_GRP_AR   = 0x04; /* Arabic       :ibm-1256   */
+    private static final short ULMBCS_GRP_RU   = 0x05; /* Cyrillic     :ibm-1251   */
+    private static final short ULMBCS_GRP_L2   = 0x06; /* Latin-2      :ibm-852    */
+    private static final short ULMBCS_GRP_TR   = 0x08; /* Turkish      :ibm-1254   */
+    private static final short ULMBCS_GRP_TH   = 0x0B; /* Thai         :ibm-874    */
+    private static final short ULMBCS_GRP_JA   = 0x10; /* Japanese     :ibm-943    */
+    private static final short ULMBCS_GRP_KO   = 0x11; /* Korean       :ibm-1261   */
+    private static final short ULMBCS_GRP_TW   = 0x12; /* Chinese SC   :ibm-950    */
+    private static final short ULMBCS_GRP_CN   = 0x13; /* Chinese TC   :ibm-1386   */
+    /* 
+     * So, the beginnning of understanding LMBCS is that IF the first byte of a LMBCS
+     * character is one of those 12 values, you can interpret the remaining bytes of 
+     * that character as coming from one of those character sets. Since the lower
+     * ANSI bytes already are represented in singl bytes, using one of the chracter
+     * set announcers is used to announce a character that starts with a byte of
+     * 0x80 or greater.
+     * 
+     * The character sets are arranged so that the single byte sets all appear
+     * before the multi-byte character sets. When we need to tell whether a
+     * group byte is for a single byte char set or not we use this definition:
+     */
+    private static final short ULMBCS_DOUBLEOPTGROUP_START = 0x10;
+    /*
+     * However, to fully understand LMBCS, you must also understand a series of
+     * exceptions & optimizations made in service of the design goals.
+     * 
+     * First, those of you who are character set mavens may have noticed that
+     * the 'double-byte' character sets are actually multi-byte chracter sets
+     * that can have 1 or two bytes, even in upper-ascii range. To force
+     * each group byte to introduce a fixed-width encoding (to make it faster to
+     * count characters), we use a convention of doubling up on the group byte
+     * to introduce any single-byte character > 0x80 in an otherwise double-byte
+     * character set. So, for example, the LMBCS sequence x10 x10 xAE is the
+     * same as '0xAE' in the Japanese code page 943.
+     * 
+     * Next, you will notice that the list of group bytes has some gaps.
+     * These are used in various ways.
+     * 
+     * We reserve a few special single byte values for common control
+     * characters. These are in the same place as their ANSI equivalents for speed.
+     */
+    private static final short ULMBCS_HT   = 0x09; /* Fixed control-char - Horizontal Tab */
+    private static final short ULMBCS_LF   = 0x0A; /* Fixed control-char - Line Feed */
+    private static final short ULMBCS_CR   = 0x0D; /* Fixed control-char - Carriage Return */
+    /*
+     * Then, 1-2-3 reserved a special single-byte character to put at the
+     * beginning of internal 'system' range names:
+     */
+    private static final short ULMBCS_123SYSTEMRANGE   = 0x19;
+    /*
+     * Then we needed a place to put all the other ansi control characters
+     * that must be moved to different values because LMBCS reserves those
+     * values for other purposes. To represent the control characters, we start
+     * with a first byte of 0x0F & add the control character value as the
+     * second byte.
+     */
+    private static final short ULMBCS_GRP_CTRL = 0x0F;
+    /*
+     * For the C0 controls (less than 0x20), we add 0x20 to preserve the
+     * useful doctrine that any byte less than 0x20 in a LMBCS char must be
+     * the first byte of a character:
+     */
+    private static final short ULMBCS_CTRLOFFSET   = 0x20;
+    /*
+     * Where to put the characters that aren't part of any of the 12 national
+     * character sets? The first thing that was done, in the earlier years of
+     * LMBCS, was to use up the spaces of the form
+     *  [G] D1,
+     * where 'G' was one of the single-byte character groups, and
+     * D1 was less than 0x80. These sequences are gathered together
+     * into a Lotus-invented doublebyte character set to represent a
+     * lot of stray values. Internally, in this implementation, we track this
+     * as group '0', as a place to tuck this exceptions list.
+     */
+    private static final short ULMBCS_GRP_EXCEPT   = 0x00;
+    /*
+     * Finally, as the durability and usefulness of UNICODE became clear,
+     * LOTUS added a new group 0x14 to hold Unicode values not otherwise
+     * represented in LMBCS:
+     */
+    private static final short ULMBCS_GRP_UNICODE  = 0x14;
+    /*
+     * The two bytes appearing after a 0x14 are interpreted as UTF-16 BE
+     * (Big Endian) characters. The exception comes when UTF16 
+     * representation would have a zero as the second byte. In that case,
+     * 'F6' is used in its place, and the bytes are swapped. (This prevents
+     * LMBCS from encoding any Unicode values of the form U+F6xx, but that's OK:
+     * 0xF6xx is in the middle of the Private Use Area.)
+     */
+    private static char ULMBCS_UNICOMPATZERO    = 0x00F6;
+    /*
+     * It is also useful in our code to have a constant for the size of
+     * a LMBCS char that holds a literal Unicode value.
+     */
+    private static final short ULMBCS_UNICODE_SIZE = 3;
+    /*
+     * To squish the LMBCS representation down even further, and to make
+     * translations even faster, sometimes the optimization group byte can be dropped
+     * from a LMBCS character. This is decided on a process-by-process basis. The
+     * group byte that is dropped is called the 'optimization group.'
+     * 
+     * For Notes, the optimization group is always 0x1.
+     */
+    //private static final short ULMBCS_DEFAULTOPTGROUP  = 0x01;
+    /* For 1-2-3 files, the optimization group is stored in the header of the 1-2-3
+     * file.
+     * In any case, when using ICU, you either pass in the
+     * optimization group as part of the name of the converter (LMBCS-1, LMBCS-2,
+     * etc.). Using plain 'LMBCS' as the name of the converter will give you
+     * LMBCS-1.
+     */
+    
+    /* Implementation strategy */
+    /* 
+     * Because of the extensive use of other character sets, the LMBCS converter
+     * keeps a mapping between optimization groups and IBM character sets, so that
+     * ICU converters can be created and used as needed.
+     * 
+     * As you can see, even though any byte below 0x20 could be an optimization
+     * byte, only those at 0x13 or below can map to an actual converter. To limit
+     * some loops and searches, we define a value for that last group converter:
+     */
+    private static final short ULMBCS_GRP_LAST = 0x13; /* last LMBCS group that has a converter */
+    
+    private static final String[] OptGroupByteToCPName = {
+        /* 0x0000 */ "lmb-excp", /* internal home for the LOTUS exceptions list */
+        /* 0x0001 */ "ibm-850",
+        /* 0x0002 */ "ibm-851",
+        /* 0x0003 */ "windows-1255",
+        /* 0x0004 */ "windows-1256",
+        /* 0x0005 */ "windows-1251",
+        /* 0x0006 */ "ibm-852",
+        /* 0x0007 */ null,      /* Unused */
+        /* 0x0008 */ "windows-1254",
+        /* 0x0009 */ null,      /* Control char HT */
+        /* 0x000A */ null,      /* Control char LF */
+        /* 0x000B */ "windows-874",
+        /* 0x000C */ null,      /* Unused */
+        /* 0x000D */ null,      /* Control char CR */
+        /* 0x000E */ null,      /* Unused */
+        /* 0x000F */ null,      /* Control chars: 0x0F20 + C0/C1 character: algorithmic */
+        /* 0x0010 */ "windows-932",
+        /* 0x0011 */ "windows-949",
+        /* 0x0012 */ "windows-950",
+        /* 0x0013 */ "windows-936",
+        /* The rest are null, including the 0x0014 Unicode compatibility region
+         * and 0x0019, the 1-2-3 system range control char */
+        /* 0x0014 */ null 
+    };
+    
+    /* That's approximately all the data that's needed for translating
+     * LMBCS to Unicode.
+     * 
+     * However, to translate Unicode to LMBCS, we need some more support.
+     * 
+     * That's because there are often more than one possible mappings from a Unicode
+     * code point back into LMBCS. The first thing we do is look up into a table
+     * to figure out if there are more than one possible mapplings. This table,
+     * arranged by Unicode values (including ranges) either lists which group
+     * to use, or says that it could go into one or more of the SBCS sets, or
+     * into one or more of the DBCS sets. (If the character exists in both DBCS &
+     * SBCS, the table will place it in the SBCS sets, to make the LMBCS code point
+     * length as small as possible. Here's the two special markers we use to indicate
+     * ambiguous mappings:
+     */
+    private static final short ULMBCS_AMBIGUOUS_SBCS   = 0x80; /* could fit in more than one
+                                                           LMBCS sbcs native encoding
+                                                           (example: most accented latin) */
+    private static final short ULMBCS_AMBIGUOUS_MBCS   = 0x81; /* could fit in more than one
+                                                           LMBCS mbcs native encoding
+                                                           (example: Unihan) */
+    
+    /* And here's a simple way to see if a group falls in an appropriate range */
+    private boolean ULMBCS_AMBIGUOUS_MATCH(short agroup, short xgroup) {
+        return (((agroup == ULMBCS_AMBIGUOUS_SBCS) &&
+                 (xgroup < ULMBCS_DOUBLEOPTGROUP_START)) ||
+                ((agroup == ULMBCS_AMBIGUOUS_MBCS) &&
+                 (xgroup >= ULMBCS_DOUBLEOPTGROUP_START)));
+    }
+    
+    /* The table & some code to use it: */
+    private static class _UniLMBCSGrpMap {
+        int uniStartRange;
+        int uniEndRange;
+        short GrpType;
+        _UniLMBCSGrpMap(int uniStartRange, int uniEndRange, short GrpType) {
+            this.uniStartRange  = uniStartRange;
+            this.uniEndRange    = uniEndRange;
+            this.GrpType        = GrpType;
+        }
+    }
+    
+    private static final _UniLMBCSGrpMap[] UniLMBCSGrpMap = {
+        new _UniLMBCSGrpMap(0x0001, 0x001F, ULMBCS_GRP_CTRL),
+        new _UniLMBCSGrpMap(0x0080, 0x009F, ULMBCS_GRP_CTRL),
+        new _UniLMBCSGrpMap(0x00A0, 0x01CD, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x01CE, 0x01CE, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x01CF, 0x02B9, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x02BA, 0x02BA, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x02BC, 0x02C8, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x02C9, 0x02D0, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x02D8, 0x02DD, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x0384, 0x03CE, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x0400, 0x044E, ULMBCS_GRP_RU),
+        new _UniLMBCSGrpMap(0x044F, 0x044F, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x0450, 0x0491, ULMBCS_GRP_RU),
+        new _UniLMBCSGrpMap(0x05B0, 0x05F2, ULMBCS_GRP_HE),
+        new _UniLMBCSGrpMap(0x060C, 0x06AF, ULMBCS_GRP_AR),
+        new _UniLMBCSGrpMap(0x0E01, 0x0E5B, ULMBCS_GRP_TH),
+        new _UniLMBCSGrpMap(0x200C, 0x200F, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2010, 0x2010, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2013, 0x2015, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2016, 0x2016, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2017, 0x2024, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2025, 0x2025, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2026, 0x2026, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2027, 0x2027, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2030, 0x2033, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2035, 0x2035, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2039, 0x203A, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x203B, 0x203B, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2074, 0x2074, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x207F, 0x207F, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2081, 0x2084, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x20A4, 0x20AC, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2103, 0x2109, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2111, 0x2126, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x212B, 0x212B, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2135, 0x2135, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2153, 0x2154, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x215B, 0x215E, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2160, 0x2179, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2190, 0x2195, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2196, 0x2199, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x21A8, 0x21A8, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x21B8, 0x21B9, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x21D0, 0x21D5, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x21E7, 0x21E7, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2200, 0x220B, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x220F, 0x2215, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2219, 0x2220, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2223, 0x2228, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2229, 0x222B, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x222C, 0x223D, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2245, 0x2248, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x224C, 0x224C, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x2252, 0x2252, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2260, 0x2265, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2266, 0x226F, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2282, 0x2297, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2299, 0x22BF, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x22C0, 0x22C0, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2310, 0x2310, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2312, 0x2312, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2318, 0x2321, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2318, 0x2321, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2460, 0x24E9, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2500, 0x2500, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2501, 0x2501, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2502, 0x2502, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2503, 0x2503, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2504, 0x2505, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x2506, 0x2665, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2666, 0x2666, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2666, 0x2666, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2667, 0x2E7F, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2E80, 0xF861, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xF862, 0xF8FF, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0xF900, 0xFA2D, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xFB00, 0xFEFF, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0xFF01, 0xFFEE, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xFFFF, 0xFFFF, ULMBCS_GRP_UNICODE)
+    };
+    
+    static short FindLMBCSUniRange(char uniChar) {
+        int index = 0;
+        
+        while (uniChar > UniLMBCSGrpMap[index].uniEndRange) {
+            index++;
+        }
+        
+        if (uniChar >= UniLMBCSGrpMap[index].uniStartRange) {
+            return UniLMBCSGrpMap[index].GrpType;
+        }
+        return ULMBCS_GRP_UNICODE;
+    }
+    
+    /*
+     * We also ask the creator of a converter to send in a preferred locale
+     * that we can use in resolving ambiguous mappings. They send the locale
+     * in as a string, and we map it, if possible, to one of the
+     * LMBCS groups. We use this table, and the associated code, to
+     * do the lookup:
+     * 
+     *     This table maps locale ID's to LMBCS opt groups.
+     *     The default return is group 0x01. Note that for
+     *     performance reasons, the table is sorted in
+     *     increasing alphabetic order, with the notable
+     *     exception of zhTW. This is to force the check
+     *     for Traditional Chinese before dropping back to
+     *     Simplified.
+     *     Note too that the Latin-1 groups have been
+     *     commented out because it's the default, and
+     *     this shortens the table, allowing a serial
+     *     search to go quickly.
+     */
+    private static class _LocaleLMBCSGrpMap {
+        String LocaleID;
+        short OptGroup;
+        _LocaleLMBCSGrpMap(String LocaleID, short OptGroup) {
+            this.LocaleID = LocaleID;
+            this.OptGroup = OptGroup;
+        }
+    }
+    private static final _LocaleLMBCSGrpMap[] LocaleLMBCSGrpMap = {
+        new _LocaleLMBCSGrpMap("ar", ULMBCS_GRP_AR),
+        new _LocaleLMBCSGrpMap("be", ULMBCS_GRP_RU),
+        new _LocaleLMBCSGrpMap("bg", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("ca", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("cs", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("da", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("de", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("el", ULMBCS_GRP_GR),
+        // new _LocaleLMBCSGrpMap("en", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("es", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("et", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("fi", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("fr", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("he", ULMBCS_GRP_HE),
+        new _LocaleLMBCSGrpMap("hu", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("is", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("it", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("iw", ULMBCS_GRP_HE),
+        new _LocaleLMBCSGrpMap("ja", ULMBCS_GRP_JA),
+        new _LocaleLMBCSGrpMap("ko", ULMBCS_GRP_KO),
+        // new _LocaleLMBCSGrpMap("lt", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("lv", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("mk", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("nl", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("no", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("pl", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("pt", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("ro", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("ru", ULMBCS_GRP_RU),
+        new _LocaleLMBCSGrpMap("sh", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sk", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sl", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sq", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sr", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("sv", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("th", ULMBCS_GRP_TH),
+        new _LocaleLMBCSGrpMap("tr", ULMBCS_GRP_TR),
+        new _LocaleLMBCSGrpMap("uk", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("vi", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("zhTW", ULMBCS_GRP_TW),
+        new _LocaleLMBCSGrpMap("zh", ULMBCS_GRP_CN),
+        new _LocaleLMBCSGrpMap(null, ULMBCS_GRP_L1)
+    };
+    static short FindLMBCSLocale(String LocaleID) {
+        int index = 0;
+        
+        if (LocaleID == null) {
+            return 0;
+        }
+        
+        while (LocaleLMBCSGrpMap[index].LocaleID != null) {
+            if (LocaleLMBCSGrpMap[index].LocaleID == LocaleID) {
+                return LocaleLMBCSGrpMap[index].OptGroup;
+            } else if (LocaleLMBCSGrpMap[index].LocaleID.compareTo(LocaleID) > 0){
+               break;
+            }
+            index++;
+        }
+        return ULMBCS_GRP_L1;
+    }
+    
+    /*
+     * Before we get to the main body of code, here's how we hook up the rest
+     * of ICU. ICU converters are required to define a structure that includes
+     * some function pointers, and some common data, in the style of a C++
+     * vtable. There is also room in there for converter-specific data. LMBCS
+     * uses that converter-specific data to keep track of the 12 subconverters
+     * we use, the optimization group, and the group (if any) that matches the
+     * locale. We have one structure instantiated for each of the 12 possible
+     * optimization groups.
+     */
+    private class UConverterDataLMBCS {
+        UConverterSharedData[] OptGrpConverter; /* Converter per Opt. grp. */
+        short OptGroup;                         /* default Opt. grp. for this LMBCS session */
+        short localeConverterIndex;             /* reasonable locale match for index */
+        CharsetDecoderMBCS decoder;
+        CharsetEncoderMBCS encoder;
+        CharsetMBCS charset;
+        UConverterDataLMBCS() {
+            OptGrpConverter = new UConverterSharedData[ULMBCS_GRP_LAST + 1];
+            charset = (CharsetMBCS)CharsetICU.forNameICU("ibm-850");
+            encoder = (CharsetEncoderMBCS)charset.newEncoder();
+            decoder = (CharsetDecoderMBCS)charset.newDecoder();
+        }
+    }
+    
+    private UConverterDataLMBCS extraInfo; /* extraInfo in ICU4C implementation */
+    
+    public CharsetLMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = ULMBCS_CHARSIZE_MAX; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        extraInfo = new UConverterDataLMBCS();
+        
+        for (int i = 0; i <= ULMBCS_GRP_LAST; i++) {
+            if (OptGroupByteToCPName[i] != null) {
+                extraInfo.OptGrpConverter[i] = ((CharsetMBCS)CharsetICU.forNameICU(OptGroupByteToCPName[i])).sharedData;
+            }
+        }
+        
+      //get the Opt Group number for the LMBCS converter
+        int option = Integer.parseInt(icuCanonicalName.substring(6));
+        extraInfo.OptGroup = (short)option;
+        extraInfo.localeConverterIndex = FindLMBCSLocale(ULocale.getDefault().getBaseName());
+    }
+    
+    class CharsetDecoderLMBCS extends CharsetDecoderICU {
+        public CharsetDecoderLMBCS(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+        }
+        
+        /* A function to call when we are looking at the Unicode group byte in LMBCS */
+        private char GetUniFromLMBCSUni(ByteBuffer ppLMBCSin) {
+            short HighCh = (short)(ppLMBCSin.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            short LowCh  = (short)(ppLMBCSin.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            if (HighCh == ULMBCS_UNICOMPATZERO) {
+                HighCh = LowCh;
+                LowCh = 0; /* zero-byte in LSB special character */
+            }
+            
+            return (char)((HighCh << 8) | LowCh);
+        }
+        
+        private int LMBCS_SimpleGetNextUChar(UConverterSharedData cnv, ByteBuffer source, int positionOffset, int length) {
+            int uniChar;
+            int oldSourceLimit;
+            int oldSourcePos;
+            
+            extraInfo.charset.sharedData = cnv;
+            
+            oldSourceLimit = source.limit();
+            oldSourcePos = source.position();
+            
+            source.position(oldSourcePos + positionOffset);
+            source.limit(source.position() + length);
+            
+            uniChar = extraInfo.decoder.simpleGetNextUChar(source, false);
+            
+            source.limit(oldSourceLimit);
+            source.position(oldSourcePos);
+
+            return uniChar;
+        }
+        /* Return the Unicode representation for the current LMBCS character. */
+        /*
+         * Note: Because there is no U_TRUNCATED_CHAR_FOUND error code in ICU4J, we
+         *       are going to use BufferOverFlow. The error will be handled correctly
+         *       by the calling function.
+         */
+        private int LMBCSGetNextUCharWorker(ByteBuffer source, CoderResult[] err) {
+            int uniChar = 0;  /* an output Unicode char */
+            short CurByte;   /* A byte from the input stream */
+            
+            /* error check */
+            if (!source.hasRemaining()) {
+                err[0] = CoderResult.malformedForLength(0);
+                return 0xffff;
+            }
+            /* Grab first byte & save address for error recovery */
+            CurByte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            /*
+             * at entry of each if clause:
+             * 1. 'CurByte' points at the first byte of a LMBCS character
+             * 2. 'source' points to the next byte of the source stream after 'CurByte'
+             * 
+             * the job of each if clause is:
+             * 1. set 'source' to the point at the beginning of the next char (not if LMBCS char is only 1 byte)
+             * 2. set 'uniChar' up with the right Unicode value, or set 'err' appropriately
+             */
+            /* First lets check the simple fixed values. */
+            if ((CurByte > ULMBCS_C0END && CurByte < ULMBCS_C1START) /* ascii range */ ||
+                CurByte == 0 || CurByte == ULMBCS_HT || CurByte == ULMBCS_CR || CurByte == ULMBCS_LF ||
+                CurByte == ULMBCS_123SYSTEMRANGE) {
+                
+                uniChar = CurByte;
+            } else {
+                short group;
+                UConverterSharedData cnv;
+                
+                if (CurByte == ULMBCS_GRP_CTRL) {  /* Control character group - no opt group update */
+                    short C0C1byte;
+                    /* CHECK_SOURCE_LIMIT(1) */
+                    if (source.position() + 1 > source.limit()) {
+                        err[0] = CoderResult.OVERFLOW;
+                        source.position(source.limit());
+                        return 0xFFFF;
+                    }
+                    C0C1byte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    uniChar = (C0C1byte < ULMBCS_C1START) ? C0C1byte - ULMBCS_CTRLOFFSET : C0C1byte;
+                } else if (CurByte == ULMBCS_GRP_UNICODE) { /* Unicode Compatibility group: Big Endian UTF16 */
+                    /* CHECK_SOURCE_LIMIT(2) */
+                    if (source.position() + 2 > source.limit()) {
+                        err[0] = CoderResult.OVERFLOW;
+                        source.position(source.limit());
+                        return 0xFFFF;
+                    }
+                    
+                    /* don't check for error indicators fffe/ffff below */
+                    return GetUniFromLMBCSUni(source);
+                } else if (CurByte <= ULMBCS_CTRLOFFSET) {
+                    group = CurByte;
+                    if (group > ULMBCS_GRP_LAST || (cnv = extraInfo.OptGrpConverter[group]) == null) {
+                        /* this is not a valid group byte - no converter */
+                        err[0] = CoderResult.unmappableForLength(1);
+                    } else if (group >= ULMBCS_DOUBLEOPTGROUP_START) {
+                        /* CHECK_SOURCE_LIMIT(2) */
+                        if (source.position() + 2 > source.limit()) {
+                            err[0] = CoderResult.OVERFLOW;
+                            source.position(source.limit());
+                            return 0xFFFF;
+                        }
+                        
+                        /* check for LMBCS doubled-group-byte case */
+                        if (source.get(source.position()) == group) {
+                            /* single byte */
+                            source.get();
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, 0, 1);
+                            source.get();
+                        } else {
+                            /* double byte */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, 0, 2);
+                            source.get();
+                            source.get();
+                        }
+                    } else { /* single byte conversion */
+                        /* CHECK_SOURCE_LIMIT(1) */
+                        if (source.position() + 1 > source.limit()) {
+                            err[0] = CoderResult.OVERFLOW;
+                            source.position(source.limit());
+                            return 0xFFFF;
+                        }
+                        CurByte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                        
+                        if (CurByte >= ULMBCS_C1START) {
+                            uniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv.mbcs, CurByte);
+                        } else {
+                            /*
+                             * The non-optimizable oddballs where there is an explicit byte
+                             * AND the second byte is not in the upper ascii range
+                             */
+                            byte[] bytes = new byte[2];
+                            
+                            cnv = extraInfo.OptGrpConverter[ULMBCS_GRP_EXCEPT];
+                            
+                            /* Lookup value must include opt group */
+                            bytes[0] = (byte)group;
+                            bytes[1] = (byte)CurByte;
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, ByteBuffer.wrap(bytes), 0, 2);
+                        }
+                    }
+                    
+                } else if (CurByte >= ULMBCS_C1START) { /* group byte is implicit */
+                    group = extraInfo.OptGroup;
+                    cnv = extraInfo.OptGrpConverter[group];
+                    if (group >= ULMBCS_DOUBLEOPTGROUP_START) { /* double byte conversion */
+                        if (CharsetMBCS.MBCS_ENTRY_IS_TRANSITION(cnv.mbcs.stateTable[0][CurByte]) /* isLeadByte */) {
+                            /* CHECK_SOURCE_LIMIT(0) */
+                            if (source.position() + 0 > source.limit()) {
+                                err[0] = CoderResult.OVERFLOW;
+                                source.position(source.limit());
+                                return 0xFFFF;
+                            }
+                            
+                            /* let the MBCS conversion consume CurByte again */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, -1, 1);
+                        } else {
+                            /* CHECK_SOURCE_LIMIT(1) */
+                            if (source.position() + 1 > source.limit()) {
+                                err[0] = CoderResult.OVERFLOW;
+                                source.position(source.limit());
+                                return 0xFFFF;
+                            }
+                            
+                            /* let the MBCS conversion consume CurByte again */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, -1, 2);
+                            source.get();
+                        }
+                    } else {
+                        uniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv.mbcs, CurByte);
+                    }
+                }
+            }
+            
+            return uniChar;
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult[] err = new CoderResult[1];
+            err[0] = CoderResult.UNDERFLOW;
+            byte[] LMBCS = new byte[ULMBCS_CHARSIZE_MAX * 2]; /* Increase the size for proper handling in subsequent calls to MBCS functions */
+            char uniChar;   /* one output Unicode char */
+            int saveSource; /* beginning of current code point */
+            int errSource = 0; /* index to actual input in case an error occurs */
+            byte savebytes = 0;
+            
+            /* Process from source to limit, or until error */
+            while (err[0].isUnderflow() && source.hasRemaining() && target.hasRemaining()) {
+                saveSource = source.position(); /* beginning of current code point */
+                if (toULength > 0) { /* reassemble char from previous call */
+                    int size_old = toULength;
+                    ByteBuffer tmpSourceBuffer;
+                    
+                    /* limit from source is either remainder of temp buffer, or user limit on source */
+                    int size_new_maybe_1 = ULMBCS_CHARSIZE_MAX - size_old;
+                    int size_new_maybe_2 = source.remaining();
+                    int size_new = (size_new_maybe_1 < size_new_maybe_2) ? size_new_maybe_1 : size_new_maybe_2;
+                    savebytes = (byte)(size_old + size_new);
+                    for (int i = 0; i < savebytes; i++) {
+                        if (i < size_old) {
+                            LMBCS[i] = toUBytesArray[i];
+                        } else {
+                            LMBCS[i] = source.get();
+                        }
+                    }
+                    tmpSourceBuffer = ByteBuffer.wrap(LMBCS);
+                    tmpSourceBuffer.limit(savebytes);
+                    uniChar = (char)LMBCSGetNextUCharWorker(tmpSourceBuffer, err);
+                    source.position(saveSource + tmpSourceBuffer.position() - size_old);
+                    errSource = saveSource - size_old;
+                    
+                    if (err[0].isOverflow()) { /* err == U_TRUNCATED_CHAR_FOUND */ 
+                        /* evil special case: source buffers so small a char spans more than 2 buffers */
+                        toULength = savebytes;
+                        for (int i = 0; i < savebytes; i++) {
+                            toUBytesArray[i] = LMBCS[i];
+                        }
+                        source.position(source.limit());
+                        err[0] = CoderResult.UNDERFLOW;
+                        return err[0];
+                    } else {
+                        /* clear the partial-char marker */
+                        toULength = 0;
+                    }
+                } else {
+                    errSource = saveSource;
+                    uniChar = (char)LMBCSGetNextUCharWorker(source, err);
+                    savebytes = (byte)(source.position() - saveSource);
+                }
+                
+                if (err[0].isUnderflow()) {
+                    if (uniChar < 0x0fffe) {
+                        target.put(uniChar);
+                        if (offsets != null) {
+                            offsets.put(saveSource);
+                        }
+                    } else if (uniChar == 0xfffe) {
+                        err[0] = CoderResult.unmappableForLength(source.position() - saveSource);
+                    } else /* if (uniChar == 0xffff) */ {
+                        err[0] = CoderResult.malformedForLength(source.position() - saveSource);
+                    }
+                }
+            }
+            /* If target ran out before source, return over flow buffer error. */
+            if (err[0].isUnderflow() && source.hasRemaining() && !target.hasRemaining()) {
+                err[0] = CoderResult.OVERFLOW;
+            } else if (!err[0].isUnderflow()) {
+                /* If character incomplete or unmappable/illegal, store it in toUBytesArray[] */
+                toULength = savebytes;
+                if (savebytes > 0) {
+                    for (int i = 0; i < savebytes; i++) {
+                        toUBytesArray[i] = source.get(errSource + i);
+                    }
+                }
+                if (err[0].isOverflow()) { /* err == U_TRUNCATED_CHAR_FOUND */
+                    err[0] = CoderResult.UNDERFLOW;
+                }
+            }
+            return err[0];
+        }
+    }
+    
+    class CharsetEncoderLMBCS extends CharsetEncoderICU {
+        public CharsetEncoderLMBCS(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+        }
+        /*
+         * Here's the basic helper function that we use when converting from
+         * Unicode to LMBCS, and we suspect that a Unicode character will fit into
+         * one of the 12 groups. The return value is the number of bytes written
+         * starting at pStartLMBCS (if any).
+         */
+        private int LMBCSConversionWorker(short group, byte[] LMBCS, char pUniChar, short[] lastConverterIndex, boolean[] groups_tried) {
+            byte pLMBCS = 0;
+            UConverterSharedData xcnv = extraInfo.OptGrpConverter[group];
+            
+            int bytesConverted;
+            int[] value = new int[1];
+            short firstByte;
+            
+            extraInfo.charset.sharedData = xcnv;
+            bytesConverted = extraInfo.encoder.fromUChar32(pUniChar, value, false);
+            
+            /* get the first result byte */
+            if (bytesConverted > 0) {
+                firstByte = (short)((value[0] >> ((bytesConverted - 1) * 8)) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            } else {
+                /* most common failure mode is an unassigned character */
+                groups_tried[group] = true;
+                return 0;
+            }
+            
+            lastConverterIndex[0] = group;
+            
+            /* 
+             * All initial byte values in lower ascii range should have been caught by now,
+             * except with the exception group.
+             */
+            
+            /* use converted data: first write 0, 1 or two group bytes */
+            if (group != ULMBCS_GRP_EXCEPT && extraInfo.OptGroup != group) {
+                LMBCS[pLMBCS++] = (byte)group;
+                if (bytesConverted == 1 && group >= ULMBCS_DOUBLEOPTGROUP_START) {
+                    LMBCS[pLMBCS++] = (byte)group;
+                }
+            }
+            
+            /* don't emit control chars */
+            if (bytesConverted == 1 && firstByte < 0x20) {
+                return 0;
+            }
+            
+            /* then move over the converted data */
+            switch (bytesConverted) {
+            case 4:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 24);
+            case 3:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 16);
+            case 2:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 8);
+            case 1:
+                LMBCS[pLMBCS++] = (byte)value[0];
+            default:
+                /* will never occur */
+                break;
+            }
+            
+            return pLMBCS;
+        }
+        /*
+         * This is a much simpler version of above, when we
+         * know we are writing LMBCS using the Unicode group.
+         */
+        private int LMBCSConvertUni(byte[] LMBCS, char uniChar) {
+            int index = 0;
+            short LowCh  = (short)(uniChar & UConverterConstants.UNSIGNED_BYTE_MASK);
+            short HighCh = (short)((uniChar >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            LMBCS[index++] = (byte)ULMBCS_GRP_UNICODE;
+            
+            if (LowCh == 0) {
+                LMBCS[index++] = (byte)ULMBCS_UNICOMPATZERO;
+                LMBCS[index++] = (byte)HighCh;
+            } else {
+                LMBCS[index++] = (byte)HighCh;
+                LMBCS[index++] = (byte)LowCh;
+            }
+            return ULMBCS_UNICODE_SIZE;
+        }
+        /* The main Unicode to LMBCS conversion function */
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            short[] lastConverterIndex = new short[1];
+            char uniChar;
+            byte[] LMBCS = new byte[ULMBCS_CHARSIZE_MAX];
+            byte pLMBCS;
+            int bytes_written;
+            boolean[] groups_tried = new boolean[ULMBCS_GRP_LAST+1];
+            int sourceIndex = 0;
+            
+            /*
+             * Basic strategy: attempt to fill in local LMBCS 1-char buffer.(LMBCS)
+             * If that succeeds, see if it will all fit into the target & copy it over
+             * if it does.
+             * 
+             * We try conversions in the following order:
+             * 1. Single-byte ascii & special fixed control chars (&null)
+             * 2. Look up group in table & try that (could b
+             *     A) Unicode group
+             *     B) control group
+             *     C) national encodeing
+             *        or ambiguous SBCS or MBCS group (on to step 4...)
+             * 3. If its ambiguous, try this order:
+             *     A) The optimization group
+             *     B) The locale group
+             *     C) The last group that succeeded with this string.
+             *     D) every other group that's relevant
+             *     E) If its single-byte ambiguous, try the exceptions group
+             * 4. And as a grand fallback: Unicode
+             */
+            while (source.hasRemaining() && err.isUnderflow()) {
+                if (!target.hasRemaining()) {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+                uniChar = source.get(source.position());
+                bytes_written = 0;
+                pLMBCS = 0;
+                
+                /* check cases in rough order of how common they are, for speed */
+                
+                /* single-byte matches: strategy 1 */
+                if (((uniChar > ULMBCS_C0END) && (uniChar < ULMBCS_C1START)) ||
+                    uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR ||
+                    uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE) {
+                    LMBCS[pLMBCS++] = (byte)uniChar;
+                    bytes_written = 1;
+                }
+                
+                if (bytes_written == 0) {
+                    /* Check by Unicode rage (Strategy 2) */
+                    short group = FindLMBCSUniRange(uniChar);
+                    if (group == ULMBCS_GRP_UNICODE) { /* (Strategy 2A) */
+                        bytes_written = LMBCSConvertUni(LMBCS, uniChar);
+                    } else if (group == ULMBCS_GRP_CTRL) { /* Strategy 2B) */
+                        /* Handle control characters here */
+                        if (uniChar <= ULMBCS_C0END) {
+                            LMBCS[pLMBCS++] = ULMBCS_GRP_CTRL;
+                            LMBCS[pLMBCS++] = (byte)(ULMBCS_CTRLOFFSET + uniChar);
+                        } else if (uniChar >= ULMBCS_C1START && uniChar <= (ULMBCS_C1START + ULMBCS_CTRLOFFSET)) {
+                            LMBCS[pLMBCS++] = ULMBCS_GRP_CTRL;
+                            LMBCS[pLMBCS++] = (byte)uniChar;
+                        }
+                        bytes_written = pLMBCS;
+                    } else if (group < ULMBCS_GRP_UNICODE) { /* (Strategy 2C) */
+                        /* a specific converter has been identified - use it */
+                        bytes_written = LMBCSConversionWorker(group, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                    }
+                    if (bytes_written == 0) { /* the ambiguous group cases (Strategy 3) */
+                        groups_tried = new boolean[ULMBCS_GRP_LAST+1];
+                        
+                        /* check for non-default optimization group (Strategy 3A) */
+                        if (extraInfo.OptGroup != 1 && ULMBCS_AMBIGUOUS_MATCH(group, extraInfo.OptGroup)) {
+                            bytes_written = LMBCSConversionWorker(extraInfo.OptGroup, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        /* check for locale optimization group (Strategy 3B) */
+                        if (bytes_written == 0 && extraInfo.localeConverterIndex > 0 &&
+                            ULMBCS_AMBIGUOUS_MATCH(group, extraInfo.localeConverterIndex)) {
+                            
+                            bytes_written = LMBCSConversionWorker(extraInfo.localeConverterIndex, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        /* check for last optimization group used for this string (Strategy 3C) */
+                        if (bytes_written == 0 && lastConverterIndex[0] > 0 &&
+                            ULMBCS_AMBIGUOUS_MATCH(group, lastConverterIndex[0])) {
+                            
+                            bytes_written = LMBCSConversionWorker(lastConverterIndex[0], LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        if (bytes_written == 0) {
+                            /* just check every possible matching converter (Strategy 3D) */
+                            short grp_start;
+                            short grp_end;
+                            short grp_ix;
+                            
+                            grp_start = (group == ULMBCS_AMBIGUOUS_MBCS) ? ULMBCS_DOUBLEOPTGROUP_START : ULMBCS_GRP_L1;
+                            grp_end   = (group == ULMBCS_AMBIGUOUS_MBCS) ? ULMBCS_GRP_LAST : ULMBCS_GRP_TH;
+                            for (grp_ix = grp_start; grp_ix <= grp_end && bytes_written == 0; grp_ix++) {
+                                if (extraInfo.OptGrpConverter[grp_ix] != null && !groups_tried[grp_ix]) {
+                                    bytes_written = LMBCSConversionWorker(grp_ix, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                                }
+                            }
+                            /* 
+                             * a final conversion fallback to the exceptions group if its likely
+                             * to be single byte (Strategy 3E) 
+                             */
+                            if (bytes_written == 0 && grp_start == ULMBCS_GRP_L1) {
+                                bytes_written = LMBCSConversionWorker(ULMBCS_GRP_EXCEPT, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                            }
+                        }
+                        /* all of our other strategies failed. Fallback to Unicode. (Strategy 4) */
+                        if (bytes_written == 0) {
+                            bytes_written = LMBCSConvertUni(LMBCS, uniChar);
+                        }
+                    }
+                }
+                /* we have a translation. increment source and write as much as possible to target */
+                source.get();
+                pLMBCS = 0;
+                while (target.hasRemaining() && bytes_written > 0) {
+                    bytes_written--;
+                    target.put(LMBCS[pLMBCS++]);
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                }
+                sourceIndex++;
+                if (bytes_written > 0) {
+                    /*
+                     * write any bytes that didn't fit in target to the error buffer,
+                     * common code will move this to target if we get called back with
+                     * enough target room
+                     */
+                    err = CoderResult.OVERFLOW;
+                    errorBufferLength = bytes_written;
+                    for (int i = 0; bytes_written > 0; i++, bytes_written--) {
+                        errorBuffer[i] = LMBCS[pLMBCS++];
+                    }
+                }
+            }
+            
+            return err;
+        }
+    }
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderLMBCS(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderLMBCS(this);
+    }
+    
+    void getUnicodeSetImpl(UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+    }
+    private byte[] fromUSubstitution = new byte[]{ 0x3F };
+}
diff --git a/src/com/ibm/icu/charset/CharsetMBCS.java b/src/com/ibm/icu/charset/CharsetMBCS.java
new file mode 100644
index 0000000..9b90761
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -0,0 +1,5537 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.Buffer;
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.charset.UConverterSharedData.UConverterType;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.charset.UConverterConstants;
+
+class CharsetMBCS extends CharsetICU {
+
+    private byte[] fromUSubstitution = null;
+    UConverterSharedData sharedData = null;
+    private static final int MAX_VERSION_LENGTH = 4;
+    
+    // these variables are used in getUnicodeSet() and may be changed in future
+    // typedef enum UConverterSetFilter {
+      static final int UCNV_SET_FILTER_NONE = 1;
+      static final int UCNV_SET_FILTER_DBCS_ONLY = 2;
+      static final int UCNV_SET_FILTER_2022_CN = 3;
+      static final int UCNV_SET_FILTER_SJIS= 4 ;
+      static final int UCNV_SET_FILTER_GR94DBCS = 5;
+      static final int UCNV_SET_FILTER_HZ = 6;
+      static final int UCNV_SET_FILTER_COUNT = 7;
+   //  } UConverterSetFilter;
+
+    /**
+     * Fallbacks to Unicode are stored outside the normal state table and code point structures in a vector of items of
+     * this type. They are sorted by offset.
+     */
+    final class MBCSToUFallback {
+        int offset;
+        int codePoint;
+    }
+
+    /**
+     * This is the MBCS part of the UConverterTable union (a runtime data structure). It keeps all the per-converter
+     * data and points into the loaded mapping tables.
+     */
+    static final class UConverterMBCSTable {
+        /* toUnicode */
+        short countStates;
+        byte dbcsOnlyState;
+        boolean stateTableOwned;
+        int countToUFallbacks;
+
+        int stateTable[/* countStates */][/* 256 */];
+        int swapLFNLStateTable[/* countStates */][/* 256 */]; /* for swaplfnl */
+        char unicodeCodeUnits[/* countUnicodeResults */];
+        MBCSToUFallback toUFallbacks[/* countToUFallbacks */];
+
+        /* fromUnicode */
+        char fromUnicodeTable[];
+        byte fromUnicodeBytes[];
+        byte swapLFNLFromUnicodeBytes[]; /* for swaplfnl */
+        int fromUBytesLength;
+        short outputType, unicodeMask;
+
+        /* converter name for swaplfnl */
+        String swapLFNLName;
+
+        /* extension data */
+        UConverterSharedData baseSharedData;
+        // int extIndexes[];
+        ByteBuffer extIndexes; // create int[] view etc. as needed
+        
+        CharBuffer mbcsIndex;                     /* for fast conversion from most of BMP to MBCS (utf8Friendly data) */
+        char sbcsIndex[/* SBCS_FAST_LIMIT>>6 */]; /* for fast conversion from low BMP to SBCS (utf8Friendly data) */
+        boolean utf8Friendly;                     /* for utf8Friendly data */
+        char maxFastUChar;                        /* for utf8Friendly data */
+
+        /* roundtrips */
+        long asciiRoundtrips;
+
+        UConverterMBCSTable() {
+            utf8Friendly = false;
+            mbcsIndex = null;
+            sbcsIndex = new char[SBCS_FAST_LIMIT>>6];
+        }
+
+        /*
+         * UConverterMBCSTable(UConverterMBCSTable t) { countStates = t.countStates; dbcsOnlyState = t.dbcsOnlyState;
+         * stateTableOwned = t.stateTableOwned; countToUFallbacks = t.countToUFallbacks; stateTable = t.stateTable;
+         * swapLFNLStateTable = t.swapLFNLStateTable; unicodeCodeUnits = t.unicodeCodeUnits; toUFallbacks =
+         * t.toUFallbacks; fromUnicodeTable = t.fromUnicodeTable; fromUnicodeBytes = t.fromUnicodeBytes;
+         * swapLFNLFromUnicodeBytes = t.swapLFNLFromUnicodeBytes; fromUBytesLength = t.fromUBytesLength; outputType =
+         * t.outputType; unicodeMask = t.unicodeMask; swapLFNLName = t.swapLFNLName; baseSharedData = t.baseSharedData;
+         * extIndexes = t.extIndexes; }
+         */
+    }
+
+    /* Constants used in MBCS data header */
+    // enum {
+        static final int MBCS_OPT_LENGTH_MASK=0x3f;
+        static final int MBCS_OPT_NO_FROM_U=0x40;
+        /*
+         * If any of the following options bits are set,
+         * then the file must be rejected.
+         */
+        static final int MBCS_OPT_INCOMPATIBLE_MASK=0xffc0;
+        /*
+         * Remove bits from this mask as more options are recognized
+         * by all implementations that use this constant.
+         */
+        static final int MBCS_OPT_UNKNOWN_INCOMPATIBLE_MASK=0xff80;
+    // };
+    /* Constants for fast and UTF-8-friendly conversion. */
+    // enum {
+        static final int SBCS_FAST_MAX=0x0fff;               /* maximum code point with UTF-8-friendly SBCS runtime code, see makeconv SBCS_UTF8_MAX */
+        static final int SBCS_FAST_LIMIT=SBCS_FAST_MAX+1;    /* =0x1000 */
+        static final int MBCS_FAST_MAX=0xd7ff;               /* maximum code point with UTF-8-friendly MBCS runtime code, see makeconv MBCS_UTF8_MAX */
+        static final int MBCS_FAST_LIMIT=MBCS_FAST_MAX+1;    /* =0xd800 */
+    // };
+    /**
+     * MBCS data header. See data format description above.
+     */
+    final class MBCSHeader {
+        byte version[/* U_MAX_VERSION_LENGTH */];
+        int countStates, countToUFallbacks, offsetToUCodeUnits, offsetFromUTable, offsetFromUBytes;
+        int flags;
+        int fromUBytesLength;
+        
+        /* new and required in version 5 */
+        int options;
+
+        /* new and optional in version 5; used if options&MBCS_OPT_NO_FROM_U */
+        int fullStage2Length;  /* number of 32-bit units */
+
+        MBCSHeader() {
+            version = new byte[MAX_VERSION_LENGTH];
+        }
+    }
+
+    public CharsetMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases, String classPath,
+            ClassLoader loader) throws InvalidFormatException {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+
+        // now try to load the data
+        sharedData = loadConverter(1, icuCanonicalName, classPath, loader);
+
+        maxBytesPerChar = sharedData.staticData.maxBytesPerChar;
+        minBytesPerChar = sharedData.staticData.minBytesPerChar;
+        maxCharsPerByte = 1;
+        fromUSubstitution = sharedData.staticData.subChar;
+        subChar = sharedData.staticData.subChar;
+        subCharLen = sharedData.staticData.subCharLen;
+        subChar1 = sharedData.staticData.subChar1;
+        fromUSubstitution = new byte[sharedData.staticData.subCharLen];
+        System.arraycopy(sharedData.staticData.subChar, 0, fromUSubstitution, 0, sharedData.staticData.subCharLen);
+
+        // TODO: pass options
+        initializeConverter(0);
+    }
+
+    public CharsetMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases)
+            throws InvalidFormatException {
+        this(icuCanonicalName, javaCanonicalName, aliases, ICUResourceBundle.ICU_BUNDLE, null);
+    }
+
+    private UConverterSharedData loadConverter(int nestedLoads, String myName, String classPath, ClassLoader loader)
+            throws InvalidFormatException {
+        boolean noFromU = false;
+        // Read converter data from file
+        UConverterStaticData staticData = new UConverterStaticData();
+        UConverterDataReader reader = null;
+        try {
+            String resourceName = classPath + "/" + myName + "." + UConverterSharedData.DATA_TYPE;
+            InputStream i;
+
+            if (loader != null) {
+                i = ICUData.getRequiredStream(loader, resourceName);
+            } else {
+                i = ICUData.getRequiredStream(resourceName);
+            }
+            BufferedInputStream b = new BufferedInputStream(i, UConverterConstants.CNV_DATA_BUFFER_SIZE);
+            reader = new UConverterDataReader(b);
+            reader.readStaticData(staticData);
+        } catch (IOException e) {
+            throw new InvalidFormatException();
+        } catch (Exception e) {
+            throw new InvalidFormatException();
+        }
+
+        UConverterSharedData data = null;
+        int type = staticData.conversionType;
+
+        if (type != UConverterSharedData.UConverterType.MBCS
+                || staticData.structSize != UConverterStaticData.SIZE_OF_UCONVERTER_STATIC_DATA) {
+            throw new InvalidFormatException();
+        }
+
+        data = new UConverterSharedData(1, null, false, 0);
+        data.dataReader = reader;
+        data.staticData = staticData;
+        data.sharedDataCached = false;
+
+        // Load data
+        UConverterMBCSTable mbcsTable = data.mbcs;
+        MBCSHeader header = new MBCSHeader();
+        try {
+            reader.readMBCSHeader(header);
+        } catch (IOException e) {
+            throw new InvalidFormatException();
+        }
+
+        int offset;
+        // int[] extIndexesArray = null;
+        String baseNameString = null;
+        int[][] stateTableArray = null;
+        MBCSToUFallback[] toUFallbacksArray = null;
+        char[] unicodeCodeUnitsArray = null;
+        char[] fromUnicodeTableArray = null;
+        byte[] fromUnicodeBytesArray = null;
+
+        if (header.version[0] == 5 && header.version[1] >= 3 && (header.options & MBCS_OPT_UNKNOWN_INCOMPATIBLE_MASK) == 0) {
+            noFromU = ((header.options & MBCS_OPT_NO_FROM_U) != 0);
+        } else if (header.version[0] != 4) {
+            throw new InvalidFormatException();
+        }
+
+        mbcsTable.outputType = (byte) header.flags;
+
+        /* extension data, header version 4.2 and higher */
+        offset = header.flags >>> 8;
+        // if(offset!=0 && mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+        if (mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+            try {
+                baseNameString = reader.readBaseTableName();
+                if (offset != 0) {
+                    // agljport:commment subtract 32 for sizeof(_MBCSHeader) and length of baseNameString and 1 null
+                    // terminator byte all already read;
+                    mbcsTable.extIndexes = reader.readExtIndexes(offset
+                            - (reader.bytesRead - reader.staticDataBytesRead));
+                }
+            } catch (IOException e) {
+                throw new InvalidFormatException();
+            }
+        }
+
+        // agljport:add this would be unnecessary if extIndexes were memory mapped
+        /*
+         * if(mbcsTable.extIndexes != null) {
+         * 
+         * try { //int nbytes = mbcsTable.extIndexes[UConverterExt.UCNV_EXT_TO_U_LENGTH]*4 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_TO_U_UCHARS_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_LENGTH]*6 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_BYTES_LENGTH] +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_12_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_3_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_3B_LENGTH]*4; //int nbytes =
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_SIZE] //byte[] extTables = dataReader.readExtTables(nbytes);
+         * //mbcsTable.extTables = ByteBuffer.wrap(extTables); } catch(IOException e) { System.err.println("Caught
+         * IOException: " + e.getMessage()); pErrorCode[0] = UErrorCode.U_INVALID_FORMAT_ERROR; return; } }
+         */
+        if (mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+            UConverterSharedData baseSharedData = null;
+            ByteBuffer extIndexes;
+            String baseName;
+
+            /* extension-only file, load the base table and set values appropriately */
+            extIndexes = mbcsTable.extIndexes;
+            if (extIndexes == null) {
+                /* extension-only file without extension */
+                throw new InvalidFormatException();
+            }
+
+            if (nestedLoads != 1) {
+                /* an extension table must not be loaded as a base table */
+                throw new InvalidFormatException();
+            }
+
+            /* load the base table */
+            baseName = baseNameString;
+            if (baseName.equals(staticData.name)) {
+                /* forbid loading this same extension-only file */
+                throw new InvalidFormatException();
+            }
+
+            // agljport:fix args.size=sizeof(UConverterLoadArgs);
+            baseSharedData = loadConverter(2, baseName, classPath, loader);
+
+            if (baseSharedData.staticData.conversionType != UConverterType.MBCS
+                    || baseSharedData.mbcs.baseSharedData != null) {
+                // agljport:fix ucnv_unload(baseSharedData);
+                throw new InvalidFormatException();
+            }
+
+            /* copy the base table data */
+            // agljport:comment deep copy in C changes mbcs through local reference mbcsTable; in java we probably don't
+            // need the deep copy so can just make sure mbcs and its local reference both refer to the same new object
+            mbcsTable = data.mbcs = baseSharedData.mbcs;
+
+            /* overwrite values with relevant ones for the extension converter */
+            mbcsTable.baseSharedData = baseSharedData;
+            mbcsTable.extIndexes = extIndexes;
+
+            /*
+             * It would be possible to share the swapLFNL data with a base converter, but the generated name would have
+             * to be different, and the memory would have to be free'd only once. It is easier to just create the data
+             * for the extension converter separately when it is requested.
+             */
+            mbcsTable.swapLFNLStateTable = null;
+            mbcsTable.swapLFNLFromUnicodeBytes = null;
+            mbcsTable.swapLFNLName = null;
+
+            /*
+             * Set a special, runtime-only outputType if the extension converter is a DBCS version of a base converter
+             * that also maps single bytes.
+             */
+            if (staticData.conversionType == UConverterType.DBCS
+                    || (staticData.conversionType == UConverterType.MBCS && staticData.minBytesPerChar >= 2)) {
+
+                if (baseSharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO) {
+                    /* the base converter is SI/SO-stateful */
+                    int entry;
+
+                    /* get the dbcs state from the state table entry for SO=0x0e */
+                    entry = mbcsTable.stateTable[0][0xe];
+                    if (MBCS_ENTRY_IS_FINAL(entry) && MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_CHANGE_ONLY
+                            && MBCS_ENTRY_FINAL_STATE(entry) != 0) {
+                        mbcsTable.dbcsOnlyState = (byte) MBCS_ENTRY_FINAL_STATE(entry);
+
+                        mbcsTable.outputType = MBCS_OUTPUT_DBCS_ONLY;
+                    }
+                } else if (baseSharedData.staticData.conversionType == UConverterType.MBCS
+                        && baseSharedData.staticData.minBytesPerChar == 1
+                        && baseSharedData.staticData.maxBytesPerChar == 2 && mbcsTable.countStates <= 127) {
+
+                    /* non-stateful base converter, need to modify the state table */
+                    int newStateTable[][/* 256 */];
+                    int state[]; // this works because java 2-D array is array of references and we can have state =
+                    // newStateTable[i];
+                    int i, count;
+
+                    /* allocate a new state table and copy the base state table contents */
+                    count = mbcsTable.countStates;
+                    newStateTable = new int[(count + 1) * 1024][256];
+
+                    for (i = 0; i < mbcsTable.stateTable.length; ++i)
+                        System.arraycopy(mbcsTable.stateTable[i], 0, newStateTable[i], 0,
+                                mbcsTable.stateTable[i].length);
+
+                    /* change all final single-byte entries to go to a new all-illegal state */
+                    state = newStateTable[0];
+                    for (i = 0; i < 256; ++i) {
+                        if (MBCS_ENTRY_IS_FINAL(state[i])) {
+                            state[i] = MBCS_ENTRY_TRANSITION(count, 0);
+                        }
+                    }
+
+                    /* build the new all-illegal state */
+                    state = newStateTable[count];
+                    for (i = 0; i < 256; ++i) {
+                        state[i] = MBCS_ENTRY_FINAL(0, MBCS_STATE_ILLEGAL, 0);
+                    }
+                    mbcsTable.stateTable = newStateTable;
+                    mbcsTable.countStates = (byte) (count + 1);
+                    mbcsTable.stateTableOwned = true;
+
+                    mbcsTable.outputType = MBCS_OUTPUT_DBCS_ONLY;
+                }
+            }
+
+            /*
+             * unlike below for files with base tables, do not get the unicodeMask from the sharedData; instead, use the
+             * base table's unicodeMask, which we copied in the memcpy above; this is necessary because the static data
+             * unicodeMask, especially the UCNV_HAS_SUPPLEMENTARY flag, is part of the base table data
+             */
+        } else {
+            /* conversion file with a base table; an additional extension table is optional */
+            /* make sure that the output type is known */
+            switch (mbcsTable.outputType) {
+            case MBCS_OUTPUT_1:
+            case MBCS_OUTPUT_2:
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4:
+            case MBCS_OUTPUT_3_EUC:
+            case MBCS_OUTPUT_4_EUC:
+            case MBCS_OUTPUT_2_SISO:
+                /* OK */
+                break;
+            default:
+                throw new InvalidFormatException();
+            }
+
+            stateTableArray = new int[header.countStates][256];
+            toUFallbacksArray = new MBCSToUFallback[header.countToUFallbacks];
+            for (int i = 0; i < toUFallbacksArray.length; ++i)
+                toUFallbacksArray[i] = new MBCSToUFallback();
+            unicodeCodeUnitsArray = new char[(header.offsetFromUTable - header.offsetToUCodeUnits) / 2];
+            fromUnicodeTableArray = new char[(header.offsetFromUBytes - header.offsetFromUTable) / 2];
+            fromUnicodeBytesArray = new byte[header.fromUBytesLength];
+            try {
+                reader.readMBCSTable(stateTableArray, toUFallbacksArray, unicodeCodeUnitsArray, fromUnicodeTableArray,
+                        fromUnicodeBytesArray);
+            } catch (IOException e) {
+                throw new InvalidFormatException();
+            }
+
+            mbcsTable.countStates = (byte) header.countStates;
+            mbcsTable.countToUFallbacks = header.countToUFallbacks;
+            mbcsTable.stateTable = stateTableArray;
+            mbcsTable.toUFallbacks = toUFallbacksArray;
+            mbcsTable.unicodeCodeUnits = unicodeCodeUnitsArray;
+
+            mbcsTable.fromUnicodeTable = fromUnicodeTableArray;
+            mbcsTable.fromUnicodeBytes = fromUnicodeBytesArray;
+            mbcsTable.fromUBytesLength = header.fromUBytesLength;
+
+            /*
+             * converter versions 6.1 and up contain a unicodeMask that is used here to select the most efficient
+             * function implementations
+             */
+            // agljport:fix info.size=sizeof(UDataInfo);
+            // agljport:fix udata_getInfo((UDataMemory *)sharedData->dataMemory, &info);
+            // agljport:fix if(info.formatVersion[0]>6 || (info.formatVersion[0]==6 && info.formatVersion[1]>=1)) {
+            /* mask off possible future extensions to be safe */
+            mbcsTable.unicodeMask = (short) (staticData.unicodeMask & 3);
+            // agljport:fix } else {
+            /* for older versions, assume worst case: contains anything possible (prevent over-optimizations) */
+            // agljport:fix mbcsTable->unicodeMask=UCNV_HAS_SUPPLEMENTARY|UCNV_HAS_SURROGATES;
+            // agljport:fix }
+            if (offset != 0) {
+                try {
+                    // agljport:commment subtract 32 for sizeof(_MBCSHeader) and length of baseNameString and 1 null
+                    // terminator byte all already read;
+                    // int namelen = baseNameString != null? baseNameString.length() + 1: 0;
+                    mbcsTable.extIndexes = reader.readExtIndexes(offset
+                            - (reader.bytesRead - reader.staticDataBytesRead));
+                } catch (IOException e) {
+                    throw new InvalidFormatException();
+                }
+            }
+            
+            if (header.version[1] >= 3 && (mbcsTable.unicodeMask & UConverterConstants.HAS_SURROGATES) == 0 &&
+                    (mbcsTable.countStates == 1 ? ((char)header.version[2] >= (SBCS_FAST_MAX>>8)) : ((char)header.version[2] >= (MBCS_FAST_MAX>>8)))) {
+                mbcsTable.utf8Friendly = true;
+                
+                if (mbcsTable.countStates == 1) {
+                    /*
+                     * SBCS: Stage 3 is allocated in 64-entry blocks for U+0000..SBCS_FAST_MAX or higher.
+                     * Build a table with indexes to each block, to be used instaed of
+                     * the regular stage 1/2 table.
+                     */
+                    for (int i = 0; i < (SBCS_FAST_LIMIT>>6); ++i) {
+                        mbcsTable.sbcsIndex[i] = mbcsTable.fromUnicodeTable[mbcsTable.fromUnicodeTable[i>>4]+((i<<2)&0x3c)];
+                    }
+                    /* set SBCS_FAST_MAX to reflect the reach of sbcsIndex[] even if header.version[2]>(SBCS_FAST_MAX>>8) */
+                    mbcsTable.maxFastUChar = SBCS_FAST_MAX;
+                } else {
+                    /*
+                     * MBCS: Stage 3 is allocated in 64-entry blocks for U+0000..MBCS_FAST_MAX or higher.
+                     * The .cnv file is prebuilt with an additional stage table with indexes to each block.
+                     */
+                    if (noFromU) {
+                        mbcsTable.mbcsIndex = ByteBuffer.wrap(mbcsTable.fromUnicodeBytes).asCharBuffer();
+                    }
+                    mbcsTable.maxFastUChar = (char)((header.version[2]<<8) | 0xff);
+                }
+            }
+            /* calculate a bit set of 4 ASCII characters per bit that round-trip to ASCII bytes */
+            {
+                long asciiRoundtrips = 0xffffffff;
+                for (int i = 0; i < 0x80; ++i) {
+                    if (mbcsTable.stateTable[0][i] != MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, i)) {
+                        asciiRoundtrips&=~((long)1<<(i>>2))&UConverterConstants.UNSIGNED_INT_MASK;
+                    }
+                }
+                mbcsTable.asciiRoundtrips = asciiRoundtrips&UConverterConstants.UNSIGNED_INT_MASK;
+            }
+            
+            if (noFromU) {
+                int stage1Length = (mbcsTable.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) != 0 ? 0x440 : 0x40;
+                int stage2Length = (header.offsetFromUBytes - header.offsetFromUTable)/4 - stage1Length/2;
+                reconstituteData(mbcsTable, stage1Length, stage2Length, header.fullStage2Length);
+            }
+            if (mbcsTable.outputType == MBCS_OUTPUT_DBCS_ONLY || mbcsTable.outputType == MBCS_OUTPUT_2_SISO) {
+                /*
+                 * MBCS_OUTPUT_DBCS_ONLY: No SBCS mappings, therefore ASCII does not roundtrip.
+                 * MBCS_OUTPUT_2_SISO: Bypass the ASCII fastpath to handle prevLength correctly.
+                 */
+                mbcsTable.asciiRoundtrips = 0;
+            }
+        }
+        return data;
+    }
+    
+    private static boolean writeStage3Roundtrip(UConverterMBCSTable mbcsTable, long value, int codePoints[]) {
+        char[] table;
+        byte[] bytes;
+        int stage2;
+        int p;
+        int c;
+        int i, st3;
+        long temp;
+
+        table = mbcsTable.fromUnicodeTable;
+        bytes = mbcsTable.fromUnicodeBytes;
+
+        /* for EUC outputTypes, modify the value like genmbcs.c's transformEUC() */
+        switch(mbcsTable.outputType) {
+        case MBCS_OUTPUT_3_EUC:
+            if(value<=0xffff) {
+                /* short sequences are stored directly */
+                /* code set 0 or 1 */
+            } else if(value<=0x8effff) {
+                /* code set 2 */
+                value&=0x7fff;
+            } else /* first byte is 0x8f */ {
+                /* code set 3 */
+                value&=0xff7f;
+            }
+            break;
+        case MBCS_OUTPUT_4_EUC:
+            if(value<=0xffffff) {
+                /* short sequences are stored directly */
+                /* code set 0 or 1 */
+            } else if(value<=0x8effffff) {
+                /* code set 2 */
+                value&=0x7fffff;
+            } else /* first byte is 0x8f */ {
+                /* code set 3 */
+                value&=0xff7fff;
+            }
+            break;
+        default:
+            break;
+        }
+
+        for(i=0; i<=0x1f; ++value, ++i) {
+            c=codePoints[i];
+            if(c<0) {
+                continue;
+            }
+
+            /* locate the stage 2 & 3 data */
+            stage2 = table[c>>10] + ((c>>4)&0x3f);
+            st3 = table[stage2*2]<<16|table[stage2*2 + 1];
+            st3 = (int)(char)(st3 * 16 + (c&0xf));
+
+            /* write the codepage bytes into stage 3 */
+            switch(mbcsTable.outputType) {
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4_EUC:
+                p = st3*3;
+                bytes[p] = (byte)(value>>16);
+                bytes[p+1] = (byte)(value>>8);
+                bytes[p+2] = (byte)value;
+                break;
+            case MBCS_OUTPUT_4:
+                bytes[st3*4] = (byte)(value >> 24);
+                bytes[st3*4 + 1] = (byte)(value >> 16);
+                bytes[st3*4 + 2] = (byte)(value >> 8);
+                bytes[st3*4 + 3] = (byte)value;
+                break;
+            default:
+                /* 2 bytes per character */
+                bytes[st3*2] = (byte)(value >> 8);
+                bytes[st3*2 + 1] = (byte)value;
+                break;
+            }
+
+            /* set the roundtrip flag */
+            temp = (1L<<(16+(c&0xf)));
+            table[stage2*2] |= (char)(temp>>16);
+            table[stage2*2 + 1] |= (char)temp;
+        }
+        return true;
+     }
+    
+    private static void reconstituteData(UConverterMBCSTable mbcsTable, int stage1Length, int stage2Length, int fullStage2Length) {
+        int datalength = stage1Length*2+fullStage2Length*4+mbcsTable.fromUBytesLength;
+        int offset = 0;
+        byte[] stage = new byte[datalength];
+        
+        for (int i = 0; i < stage1Length; ++i) {
+            stage[i*2]   = (byte)(mbcsTable.fromUnicodeTable[i]>>8);
+            stage[i*2+1] = (byte)(mbcsTable.fromUnicodeTable[i]);
+        }
+        
+        offset = ((fullStage2Length - stage2Length) * 4) + (stage1Length * 2);
+        for (int i = 0; i < stage2Length; ++i) {
+            stage[offset + i*4]   = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2]>>8);
+            stage[offset + i*4+1] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2]);
+            stage[offset + i*4+2] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2+1]>>8);
+            stage[offset + i*4+3] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2+1]);
+        }
+        
+        /* indexes into stage 2 count from the bottom of the fromUnicodeTable */
+        
+        /* reconsitute the initial part of stage 2 from the mbcsIndex */
+        {
+            int stageUTF8Length=((int)(mbcsTable.maxFastUChar+1))>>6;
+            int stageUTF8Index=0;
+            int st1, st2, st3, i;
+            
+            for (st1 = 0; stageUTF8Index < stageUTF8Length; ++st1) {
+                st2 = ((char)stage[2*st1]<<8) | stage[2*st1+1];
+                if (st2 != stage1Length/2) {
+                    /* each stage 2 block has 64 entries corresponding to 16 entries in the mbcsIndex */
+                    for (i = 0; i < 16; ++i) {
+                        st3 = mbcsTable.mbcsIndex.get(stageUTF8Index++);
+                        if (st3 != 0) {
+                            /* a stage 2 entry's index is per stage 3 16-block, not per stage 3 entry */
+                            st3>>=4;
+                            /*
+                             * 4 stage 2 entries point to 4 consecutive stage 3 16-blocks which are
+                             * allocated together as a single 64-block for access from the mbcsIndex
+                             */
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3);
+                        } else {
+                            /* no stage 3 block, skip */
+                            st2+=4;
+                        }
+                    }
+                } else {
+                    /* no stage 2 block, skip */
+                    stageUTF8Index+=16;
+                }
+            }
+        }
+        
+        char[] stage1 = new char[stage.length/2];
+        for (int i = 0; i < stage1.length; ++i) {
+            stage1[i] = (char)(((stage[i*2])<<8)|(stage[i*2+1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+        }
+        byte[] stage2 = new byte[stage.length - ((stage1Length * 2) + (fullStage2Length * 4))];
+        System.arraycopy(stage, ((stage1Length * 2) + (fullStage2Length * 4)), stage2, 0, stage2.length);
+        
+        mbcsTable.fromUnicodeTable = stage1;
+        mbcsTable.fromUnicodeBytes = stage2;
+        
+        /* reconstitute fromUnicodeBytes with roundtrips from toUnicode data */
+        MBCSEnumToUnicode(mbcsTable);
+    }
+    
+    /*
+     * Internal function enumerating the toUnicode data of an MBCS converter.
+     * Currently only used for reconstituting data for a MBCS_OPT_NO_FROM_U
+     * table, but could also be used for a future getUnicodeSet() option
+     * that includes reverse fallbacks (after updating this function's implementation).
+     * Currently only handles roundtrip mappings.
+     * Does not currently handle extensions.
+     */
+    private static void MBCSEnumToUnicode(UConverterMBCSTable mbcsTable) {
+        /*
+         * Properties for each state, to speed up the enumeration.
+         * Ignorable actions are unassigned/illegal/state-change-only:
+         * They do not lead to mappings.
+         * 
+         * Bits 7..6
+         * 1 direct/initial state (stateful converters have mulitple)
+         * 0 non-initial state with transitions or with nonignorable result actions
+         * -1 final state with only ignorable actions
+         * 
+         * Bits 5..3
+         * The lowest byte value with non-ignorable actions is
+         * value<<5 (rounded down).
+         * 
+         * Bits 2..0:
+         * The highest byte value with non-ignorable actions is
+         * (value<<5)&0x1f (rounded up).
+         */
+        byte stateProps[] = new byte[MBCS_MAX_STATE_COUNT];
+        int state;
+        
+        /* recurse from state 0 and set all stateProps */
+        getStateProp(mbcsTable.stateTable, stateProps, 0);
+        
+        for (state = 0; state < mbcsTable.countStates; ++state) {
+            if (stateProps[state] >= 0x40) {
+                /* start from each direct state */
+                enumToU(mbcsTable, stateProps, state, 0, 0);
+            }
+        }
+        
+        
+    }
+    
+    private static boolean enumToU(UConverterMBCSTable mbcsTable, byte stateProps[], int state, int offset, int value) {
+        int[] codePoints = new int[32];
+        int[] row;
+        char[] unicodeCodeUnits;
+        int anyCodePoints;
+        int b, limit;
+        
+        row = mbcsTable.stateTable[state];
+        unicodeCodeUnits = mbcsTable.unicodeCodeUnits;
+        
+        value<<=8;
+        anyCodePoints = -1; /* becomes non-negative if there is a mapping */
+        
+        b = (stateProps[state]&0x38)<<2;
+        if (b == 0 && stateProps[state] >= 0x40) {
+            /* skip byte sequences with leading zeros because they are note stored in the fromUnicode table */
+            codePoints[0] = UConverterConstants.U_SENTINEL;
+            b = 1;
+        }
+        limit = ((stateProps[state]&7)+1)<<5;
+        while (b < limit) {
+            int entry = row[b];
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                int nextState = MBCS_ENTRY_TRANSITION_STATE(entry);
+                if (stateProps[nextState] >= 0) {
+                    /* recurse to a state with non-ignorable actions */
+                    if (!enumToU(mbcsTable, stateProps, nextState, offset+MBCS_ENTRY_TRANSITION_OFFSET(entry), value|b)) {
+                        return false;
+                    }
+                }
+                codePoints[b&0x1f] = UConverterConstants.U_SENTINEL;
+            } else {
+                int c;
+                int action;
+                
+                /*
+                 * An if-else-if chain provides more reliable performance for
+                 * the most common cases compared to a switch.
+                 */
+                action = MBCS_ENTRY_FINAL_ACTION(entry);
+                if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    c = (char)MBCS_ENTRY_FINAL_VALUE_16(entry);
+                } else if (action == MBCS_STATE_VALID_16) {
+                    int finalOffset = offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[finalOffset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                    } else {
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    int finalOffset = offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[finalOffset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                    } else if (c <= 0xdbff) {
+                        /* output roundtrip or fallback supplementary code point */
+                        c = ((c&0x3ff)<<10)+unicodeCodeUnits[finalOffset]+(0x10000-0xdc00);
+                    } else if (c == 0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        c = unicodeCodeUnits[finalOffset];
+                    } else {
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20) {
+                    /* output supplementary code point */
+                    c = (int)(MBCS_ENTRY_FINAL_VALUE(entry)+0x10000);
+                } else {
+                    c = UConverterConstants.U_SENTINEL;
+                }
+                
+                codePoints[b&0x1f] = c;
+                anyCodePoints&=c;
+            }
+            if (((++b)&0x1f) == 0) {
+                if(anyCodePoints>=0) {
+                    if(!writeStage3Roundtrip(mbcsTable, value|(b-0x20)&UConverterConstants.UNSIGNED_INT_MASK, codePoints)) {
+                        return false;
+                    }
+                    anyCodePoints=-1;
+                }
+            }
+        }
+        
+        return true;
+    }
+    
+    /*
+     * Only called if stateProps[state]==-1.
+     * A recursive call may do stateProps[state]|=0x40 if this state is the target of an
+     * MBCS_STATE_CHANGE_ONLY.
+     */
+    private static byte getStateProp(int stateTable[][], byte stateProps[], int state) {
+        int[] row;
+        int min, max, entry, nextState;
+        
+        row = stateTable[state];
+        stateProps[state] = 0;
+        
+        /* find first non-ignorable state */
+        for (min = 0;;++min) {
+            entry = row[min];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                if (stateProps[nextState] >- 0) {
+                    break;
+                }
+            } else if (MBCS_ENTRY_FINAL_ACTION(entry) < MBCS_STATE_UNASSIGNED) {
+                break;
+            }
+            if (min == 0xff) {
+                stateProps[state] = -0x40;  /* (byte)0xc0 */
+                return stateProps[state];
+            }
+        }
+        stateProps[state]|=(byte)((min>>5)<<3);
+        
+        /* find last non-ignorable state */
+        for (max = 0xff; min < max; --max) {
+            entry = row[max];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                if (stateProps[nextState] >- 0) {
+                    break;
+                }
+            } else if (MBCS_ENTRY_FINAL_ACTION(entry) < MBCS_STATE_UNASSIGNED) {
+                break;
+            }
+        }
+        stateProps[state]|=(byte)(max>>5);
+        
+        /* recurse further and collect direct-state information */
+        while (min <= max) {
+            entry = row[min];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                stateProps[nextState]|=0x40;
+                if (MBCS_ENTRY_FINAL_ACTION(entry) <= MBCS_STATE_FALLBACK_DIRECT_20) {
+                    stateProps[state]|=0x40;
+                }
+            }
+            ++min;
+        }
+        return stateProps[state];
+    }
+
+    protected void initializeConverter(int myOptions) {
+        UConverterMBCSTable mbcsTable;
+        ByteBuffer extIndexes;
+        short outputType;
+        byte maxBytesPerUChar;
+
+        mbcsTable = sharedData.mbcs;
+        outputType = mbcsTable.outputType;
+
+        if (outputType == MBCS_OUTPUT_DBCS_ONLY) {
+            /* the swaplfnl option does not apply, remove it */
+            this.options = myOptions &= ~UConverterConstants.OPTION_SWAP_LFNL;
+        }
+
+        if ((myOptions & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+            /* do this because double-checked locking is broken */
+            boolean isCached;
+
+            // agljport:todo umtx_lock(NULL);
+            isCached = mbcsTable.swapLFNLStateTable != null;
+            // agljport:todo umtx_unlock(NULL);
+
+            if (!isCached) {
+                // agljport:fix if(!_EBCDICSwapLFNL(cnv->sharedData, pErrorCode)) {
+                // agljport:fix if(U_FAILURE(*pErrorCode)) {
+                // agljport:fix return; /* something went wrong */
+                // agljport:fix }
+
+                /* the option does not apply, remove it */
+                // agljport:fix cnv->options=options&=~UCNV_OPTION_SWAP_LFNL;
+                // agljport:fix }
+            }
+        }
+
+        if (icuCanonicalName.toLowerCase().indexOf("gb18030") >= 0) {
+            /* set a flag for GB 18030 mode, which changes the callback behavior */
+            this.options |= MBCS_OPTION_GB18030;
+        }
+
+        /* fix maxBytesPerUChar depending on outputType and options etc. */
+        if (outputType == MBCS_OUTPUT_2_SISO) {
+            maxBytesPerChar = 3; /* SO+DBCS */
+        }
+
+        extIndexes = mbcsTable.extIndexes;
+        if (extIndexes != null) {
+            maxBytesPerUChar = (byte) GET_MAX_BYTES_PER_UCHAR(extIndexes);
+            if (outputType == MBCS_OUTPUT_2_SISO) {
+                ++maxBytesPerUChar; /* SO + multiple DBCS */
+            }
+
+            if (maxBytesPerUChar > maxBytesPerChar) {
+                maxBytesPerChar = maxBytesPerUChar;
+            }
+        }
+    }
+
+    /**
+     * MBCS output types for conversions from Unicode. These per-converter types determine the storage method in stage 3
+     * of the lookup table, mostly how many bytes are stored per entry.
+     */
+    static final int MBCS_OUTPUT_1 = 0; /* 0 */
+    static final int MBCS_OUTPUT_2 = MBCS_OUTPUT_1 + 1; /* 1 */
+    static final int MBCS_OUTPUT_3 = MBCS_OUTPUT_2 + 1; /* 2 */
+    static final int MBCS_OUTPUT_4 = MBCS_OUTPUT_3 + 1; /* 3 */
+    static final int MBCS_OUTPUT_3_EUC = 8; /* 8 */
+    static final int MBCS_OUTPUT_4_EUC = MBCS_OUTPUT_3_EUC + 1; /* 9 */
+    static final int MBCS_OUTPUT_2_SISO = 12; /* c */
+    static final int MBCS_OUTPUT_2_HZ = MBCS_OUTPUT_2_SISO + 1; /* d */
+    static final int MBCS_OUTPUT_EXT_ONLY = MBCS_OUTPUT_2_HZ + 1; /* e */
+    // static final int MBCS_OUTPUT_COUNT = MBCS_OUTPUT_EXT_ONLY + 1;
+    static final int MBCS_OUTPUT_DBCS_ONLY = 0xdb; /* runtime-only type for DBCS-only handling of SISO tables */
+
+    /* GB 18030 data ------------------------------------------------------------ */
+
+    /* helper macros for linear values for GB 18030 four-byte sequences */
+    private static long LINEAR_18030(long a, long b, long c, long d) {
+        return ((((a & 0xff) * 10 + (b & 0xff)) * 126L + (c & 0xff)) * 10L + (d & 0xff));
+    }
+
+    private static long LINEAR_18030_BASE = LINEAR_18030(0x81, 0x30, 0x81, 0x30);
+
+    private static long LINEAR(long x) {
+        return LINEAR_18030(x >>> 24, (x >>> 16) & 0xff, (x >>> 8) & 0xff, x & 0xff);
+    }
+
+    /*
+     * Some ranges of GB 18030 where both the Unicode code points and the GB four-byte sequences are contiguous and are
+     * handled algorithmically by the special callback functions below. The values are start & end of Unicode & GB
+     * codes.
+     * 
+     * Note that single surrogates are not mapped by GB 18030 as of the re-released mapping tables from 2000-nov-30.
+     */
+    private static final long gb18030Ranges[][] = new long[/* 13 */][/* 4 */] {
+            { 0x10000L, 0x10FFFFL, LINEAR(0x90308130L), LINEAR(0xE3329A35L) },
+            { 0x9FA6L, 0xD7FFL, LINEAR(0x82358F33L), LINEAR(0x8336C738L) },
+            { 0x0452L, 0x200FL, LINEAR(0x8130D330L), LINEAR(0x8136A531L) },
+            { 0xE865L, 0xF92BL, LINEAR(0x8336D030L), LINEAR(0x84308534L) },
+            { 0x2643L, 0x2E80L, LINEAR(0x8137A839L), LINEAR(0x8138FD38L) },
+            { 0xFA2AL, 0xFE2FL, LINEAR(0x84309C38L), LINEAR(0x84318537L) },
+            { 0x3CE1L, 0x4055L, LINEAR(0x8231D438L), LINEAR(0x8232AF32L) },
+            { 0x361BL, 0x3917L, LINEAR(0x8230A633L), LINEAR(0x8230F237L) },
+            { 0x49B8L, 0x4C76L, LINEAR(0x8234A131L), LINEAR(0x8234E733L) },
+            { 0x4160L, 0x4336L, LINEAR(0x8232C937L), LINEAR(0x8232F837L) },
+            { 0x478EL, 0x4946L, LINEAR(0x8233E838L), LINEAR(0x82349638L) },
+            { 0x44D7L, 0x464BL, LINEAR(0x8233A339L), LINEAR(0x8233C931L) },
+            { 0xFFE6L, 0xFFFFL, LINEAR(0x8431A234L), LINEAR(0x8431A439L) } };
+
+    /* bit flag for UConverter.options indicating GB 18030 special handling */
+    private static final int MBCS_OPTION_GB18030 = 0x8000;
+
+    // enum {
+        static final int MBCS_MAX_STATE_COUNT = 128;
+    // };
+    /**
+     * MBCS action codes for conversions to Unicode. These values are in bits 23..20 of the state table entries.
+     */
+    static final int MBCS_STATE_VALID_DIRECT_16 = 0;
+    static final int MBCS_STATE_VALID_DIRECT_20 = MBCS_STATE_VALID_DIRECT_16 + 1;
+    static final int MBCS_STATE_FALLBACK_DIRECT_16 = MBCS_STATE_VALID_DIRECT_20 + 1;
+    static final int MBCS_STATE_FALLBACK_DIRECT_20 = MBCS_STATE_FALLBACK_DIRECT_16 + 1;
+    static final int MBCS_STATE_VALID_16 = MBCS_STATE_FALLBACK_DIRECT_20 + 1;
+    static final int MBCS_STATE_VALID_16_PAIR = MBCS_STATE_VALID_16 + 1;
+    static final int MBCS_STATE_UNASSIGNED = MBCS_STATE_VALID_16_PAIR + 1;
+    static final int MBCS_STATE_ILLEGAL = MBCS_STATE_UNASSIGNED + 1;
+    static final int MBCS_STATE_CHANGE_ONLY = MBCS_STATE_ILLEGAL + 1;
+    
+    static int MBCS_ENTRY_SET_STATE(int entry, int state) { 
+        return (int)(((entry)&0x80ffffff)|((int)(state)<<24L));
+    }
+
+    static int MBCS_ENTRY_STATE(int entry) {
+        return (((entry)>>24)&0x7f);
+    }
+
+    /* Methods for state table entries */
+    static int MBCS_ENTRY_TRANSITION(int state, int offset) {
+        return (state << 24L) | offset;
+    }
+
+    static int MBCS_ENTRY_FINAL(int state, int action, int value) {
+        return (int) (0x80000000 | ((int) (state) << 24L) | ((action) << 20L) | (value));
+    }
+
+    static boolean MBCS_ENTRY_IS_TRANSITION(int entry) {
+        return (entry) >= 0;
+    }
+
+    static boolean MBCS_ENTRY_IS_FINAL(int entry) {
+        return (entry) < 0;
+    }
+
+    static int MBCS_ENTRY_TRANSITION_STATE(int entry) {
+        return ((entry) >>> 24);
+    }
+
+    static int MBCS_ENTRY_TRANSITION_OFFSET(int entry) {
+        return ((entry) & 0xffffff);
+    }
+
+    static int MBCS_ENTRY_FINAL_STATE(int entry) {
+        return ((entry) >>> 24) & 0x7f;
+    }
+
+    static boolean MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(int entry) {
+        return ((entry) < 0x80100000);
+    }
+
+    static int MBCS_ENTRY_FINAL_ACTION(int entry) {
+        return ((entry) >>> 20) & 0xf;
+    }
+
+    static int MBCS_ENTRY_FINAL_VALUE(int entry) {
+        return ((entry) & 0xfffff);
+    }
+
+    static char MBCS_ENTRY_FINAL_VALUE_16(int entry) {
+        return (char) (entry);
+    }
+    
+    static boolean MBCS_IS_ASCII_ROUNDTRIP(int b, long asciiRoundtrips) {
+        return (((asciiRoundtrips) & (1<<((b)>>2)))!=0);
+    }
+    
+    /**
+     * This macro version of _MBCSSingleSimpleGetNextUChar() gets a code point from a byte. It works for single-byte,
+     * single-state codepages that only map to and from BMP code points, and it always returns fallback values.
+     */
+    static char MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(UConverterMBCSTable mbcs, final int b) {
+        return MBCS_ENTRY_FINAL_VALUE_16(mbcs.stateTable[0][b & UConverterConstants.UNSIGNED_BYTE_MASK]);
+    }
+
+    /* single-byte fromUnicode: get the 16-bit result word */
+    static char MBCS_SINGLE_RESULT_FROM_U(char[] table, byte[] results, int c) {
+        int i1 = table[c >>> 10] + ((c >>> 4) & 0x3f);
+        int i = 2 * (table[i1] + (c & 0xf)); // used as index into byte[] array treated as char[] array
+        return (char) (((results[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | (results[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+    }
+
+    /* multi-byte fromUnicode: get the 32-bit stage 2 entry */
+    static int MBCS_STAGE_2_FROM_U(char[] table, int c) {
+        int i = 2 * (table[(c) >>> 10] + ((c >>> 4) & 0x3f)); // 2x because used as index into char[] array treated as
+        // int[] array
+        return ((table[i] & UConverterConstants.UNSIGNED_SHORT_MASK) << 16)
+                | (table[i + 1] & UConverterConstants.UNSIGNED_SHORT_MASK);
+    }
+
+    private static boolean MBCS_FROM_U_IS_ROUNDTRIP(int stage2Entry, int c) {
+        return (((stage2Entry) & (1 << (16 + ((c) & 0xf)))) != 0);
+    }
+
+    static char MBCS_VALUE_2_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        int i = 2 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        return (char) (((bytes[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | (bytes[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+    }
+
+    private static int MBCS_VALUE_4_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        int i = 4 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        return ((bytes[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 24)
+                | ((bytes[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                | ((bytes[i + 2] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                | (bytes[i + 3] & UConverterConstants.UNSIGNED_BYTE_MASK);
+    }
+
+    static int MBCS_POINTER_3_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        return ((16 * ((char) (stage2Entry) & UConverterConstants.UNSIGNED_SHORT_MASK) + ((c) & 0xf)) * 3);
+    }
+
+    // ------------UConverterExt-------------------------------------------------------
+
+    static final int EXT_INDEXES_LENGTH = 0; /* 0 */
+
+    static final int EXT_TO_U_INDEX = EXT_INDEXES_LENGTH + 1; /* 1 */
+    static final int EXT_TO_U_LENGTH = EXT_TO_U_INDEX + 1;
+    static final int EXT_TO_U_UCHARS_INDEX = EXT_TO_U_LENGTH + 1;
+    static final int EXT_TO_U_UCHARS_LENGTH = EXT_TO_U_UCHARS_INDEX + 1;
+
+    static final int EXT_FROM_U_UCHARS_INDEX = EXT_TO_U_UCHARS_LENGTH + 1; /* 5 */
+    static final int EXT_FROM_U_VALUES_INDEX = EXT_FROM_U_UCHARS_INDEX + 1;
+    static final int EXT_FROM_U_LENGTH = EXT_FROM_U_VALUES_INDEX + 1;
+    static final int EXT_FROM_U_BYTES_INDEX = EXT_FROM_U_LENGTH + 1;
+    static final int EXT_FROM_U_BYTES_LENGTH = EXT_FROM_U_BYTES_INDEX + 1;
+
+    static final int EXT_FROM_U_STAGE_12_INDEX = EXT_FROM_U_BYTES_LENGTH + 1; /* 10 */
+    static final int EXT_FROM_U_STAGE_1_LENGTH = EXT_FROM_U_STAGE_12_INDEX + 1;
+    static final int EXT_FROM_U_STAGE_12_LENGTH = EXT_FROM_U_STAGE_1_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3_INDEX = EXT_FROM_U_STAGE_12_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3_LENGTH = EXT_FROM_U_STAGE_3_INDEX + 1;
+    static final int EXT_FROM_U_STAGE_3B_INDEX = EXT_FROM_U_STAGE_3_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3B_LENGTH = EXT_FROM_U_STAGE_3B_INDEX + 1;
+
+    private static final int EXT_COUNT_BYTES = EXT_FROM_U_STAGE_3B_LENGTH + 1; /* 17 */
+    // private static final int EXT_COUNT_UCHARS = EXT_COUNT_BYTES + 1;
+    // private static final int EXT_FLAGS = EXT_COUNT_UCHARS + 1;
+    //
+    // private static final int EXT_RESERVED_INDEX = EXT_FLAGS + 1; /* 20, moves with additional indexes */
+    //
+    // private static final int EXT_SIZE=31;
+    // private static final int EXT_INDEXES_MIN_LENGTH=32;
+
+    static final int EXT_FROM_U_MAX_DIRECT_LENGTH = 3;
+
+    /* toUnicode helpers -------------------------------------------------------- */
+
+    private static final int TO_U_BYTE_SHIFT = 24;
+    private static final int TO_U_VALUE_MASK = 0xffffff;
+    private static final int TO_U_MIN_CODE_POINT = 0x1f0000;
+    private static final int TO_U_MAX_CODE_POINT = 0x2fffff;
+    private static final int TO_U_ROUNDTRIP_FLAG = (1 << 23);
+    private static final int TO_U_INDEX_MASK = 0x3ffff;
+    private static final int TO_U_LENGTH_SHIFT = 18;
+    private static final int TO_U_LENGTH_OFFSET = 12;
+
+    /* maximum number of indexed UChars */
+    static final int MAX_UCHARS = 19;
+
+    static int TO_U_GET_BYTE(int word) {
+        return word >>> TO_U_BYTE_SHIFT;
+    }
+
+    static int TO_U_GET_VALUE(int word) {
+        return word & TO_U_VALUE_MASK;
+    }
+
+    static boolean TO_U_IS_ROUNDTRIP(int value) {
+        return (value & TO_U_ROUNDTRIP_FLAG) != 0;
+    }
+
+    static boolean TO_U_IS_PARTIAL(int value) {
+        return (value & UConverterConstants.UNSIGNED_INT_MASK) < TO_U_MIN_CODE_POINT;
+    }
+
+    static int TO_U_GET_PARTIAL_INDEX(int value) {
+        return value;
+    }
+
+    static int TO_U_MASK_ROUNDTRIP(int value) {
+        return value & ~TO_U_ROUNDTRIP_FLAG;
+    }
+
+    private static int TO_U_MAKE_WORD(byte b, int value) {
+        return ((b & UConverterConstants.UNSIGNED_BYTE_MASK) << TO_U_BYTE_SHIFT) | value;
+    }
+
+    /* use after masking off the roundtrip flag */
+    static boolean TO_U_IS_CODE_POINT(int value) {
+        return (value & UConverterConstants.UNSIGNED_INT_MASK) <= TO_U_MAX_CODE_POINT;
+    }
+
+    static int TO_U_GET_CODE_POINT(int value) {
+        return (int) ((value & UConverterConstants.UNSIGNED_INT_MASK) - TO_U_MIN_CODE_POINT);
+    }
+
+    private static int TO_U_GET_INDEX(int value) {
+        return value & TO_U_INDEX_MASK;
+    }
+
+    private static int TO_U_GET_LENGTH(int value) {
+        return (value >>> TO_U_LENGTH_SHIFT) - TO_U_LENGTH_OFFSET;
+    }
+
+    /* fromUnicode helpers ------------------------------------------------------ */
+
+    /* most trie constants are shared with ucnvmbcs.h */
+    private static final int STAGE_2_LEFT_SHIFT = 2;
+
+    // private static final int STAGE_3_GRANULARITY = 4;
+
+    /* trie access, returns the stage 3 value=index to stage 3b; s1Index=c>>10 */
+    static int FROM_U(CharBuffer stage12, CharBuffer stage3, int s1Index, int c) {
+        return stage3.get(((int) stage12.get((stage12.get(s1Index) + ((c >>> 4) & 0x3f))) << STAGE_2_LEFT_SHIFT)
+                + (c & 0xf));
+    }
+
+    private static final int FROM_U_LENGTH_SHIFT = 24;
+    private static final int FROM_U_ROUNDTRIP_FLAG = 1 << 31;
+    static final int FROM_U_RESERVED_MASK = 0x60000000;
+    private static final int FROM_U_DATA_MASK = 0xffffff;
+
+    /* special value for "no mapping" to <subchar1> (impossible roundtrip to 0 bytes, value 01) */
+    static final int FROM_U_SUBCHAR1 = 0x80000001;
+
+    /* at most 3 bytes in the lower part of the value */
+    private static final int FROM_U_MAX_DIRECT_LENGTH = 3;
+
+    /* maximum number of indexed bytes */
+    static final int MAX_BYTES = 0x1f;
+
+    static boolean FROM_U_IS_PARTIAL(int value) {
+        return (value >>> FROM_U_LENGTH_SHIFT) == 0;
+    }
+
+    static int FROM_U_GET_PARTIAL_INDEX(int value) {
+        return value;
+    }
+
+    static boolean FROM_U_IS_ROUNDTRIP(int value) {
+        return (value & FROM_U_ROUNDTRIP_FLAG) != 0;
+    }
+
+    private static int FROM_U_MASK_ROUNDTRIP(int value) {
+        return value & ~FROM_U_ROUNDTRIP_FLAG;
+    }
+
+    /* use after masking off the roundtrip flag */
+    static int FROM_U_GET_LENGTH(int value) {
+        return (value >>> FROM_U_LENGTH_SHIFT) & MAX_BYTES;
+    }
+
+    /* get bytes or bytes index */
+    static int FROM_U_GET_DATA(int value) {
+        return value & FROM_U_DATA_MASK;
+    }
+
+    /* get the pointer to an extension array from indexes[index] */
+    static Buffer ARRAY(ByteBuffer indexes, int index, Class itemType) {
+        int oldpos = indexes.position();
+        Buffer b;
+
+        indexes.position(indexes.getInt(index << 2));
+        if (itemType == int.class)
+            b = indexes.asIntBuffer();
+        else if (itemType == char.class)
+            b = indexes.asCharBuffer();
+        else if (itemType == short.class)
+            b = indexes.asShortBuffer();
+        else
+            // default or (itemType == byte.class)
+            b = indexes.slice();
+        indexes.position(oldpos);
+        return b;
+    }
+
+    private static int GET_MAX_BYTES_PER_UCHAR(ByteBuffer indexes) {
+        indexes.position(0);
+        return indexes.getInt(EXT_COUNT_BYTES) & 0xff;
+    }
+
+    /*
+     * @return index of the UChar, if found; else <0
+     */
+    static int findFromU(CharBuffer fromUSection, int length, char u) {
+        int i, start, limit;
+
+        /* binary search */
+        start = 0;
+        limit = length;
+        for (;;) {
+            i = limit - start;
+            if (i <= 1) {
+                break; /* done */
+            }
+            /* start<limit-1 */
+
+            if (i <= 4) {
+                /* linear search for the last part */
+                if (u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                if (++start < limit && u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                if (++start < limit && u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                /* always break at start==limit-1 */
+                ++start;
+                break;
+            }
+
+            i = (start + limit) / 2;
+            if (u < fromUSection.get(fromUSection.position() + i)) {
+                limit = i;
+            } else {
+                start = i;
+            }
+        }
+
+        /* did we really find it? */
+        if (start < limit && u == fromUSection.get(fromUSection.position() + start)) {
+            return start;
+        } else {
+            return -1; /* not found */
+        }
+    }
+
+    /*
+     * @return lookup value for the byte, if found; else 0
+     */
+    static int findToU(IntBuffer toUSection, int length, short byt) {
+        long word0, word;
+        int i, start, limit;
+
+        /* check the input byte against the lowest and highest section bytes */
+        // agljport:comment instead of receiving a start position parameter for toUSection we'll rely on its position
+        // property
+        start = TO_U_GET_BYTE(toUSection.get(toUSection.position()));
+        limit = TO_U_GET_BYTE(toUSection.get(toUSection.position() + length - 1));
+        if (byt < start || limit < byt) {
+            return 0; /* the byte is out of range */
+        }
+
+        if (length == ((limit - start) + 1)) {
+            /* direct access on a linear array */
+            return TO_U_GET_VALUE(toUSection.get(toUSection.position() + byt - start)); /* could be 0 */
+        }
+
+        /* word0 is suitable for <=toUSection[] comparison, word for <toUSection[] */
+        word0 = TO_U_MAKE_WORD((byte) byt, 0) & UConverterConstants.UNSIGNED_INT_MASK;
+
+        /*
+         * Shift byte once instead of each section word and add 0xffffff. We will compare the shifted/added byte
+         * (bbffffff) against section words which have byte values in the same bit position. If and only if byte bb <
+         * section byte ss then bbffffff<ssvvvvvv for all v=0..f so we need not mask off the lower 24 bits of each
+         * section word.
+         */
+        word = word0 | TO_U_VALUE_MASK;
+
+        /* binary search */
+        start = 0;
+        limit = length;
+        for (;;) {
+            i = limit - start;
+            if (i <= 1) {
+                break; /* done */
+            }
+            /* start<limit-1 */
+
+            if (i <= 4) {
+                /* linear search for the last part */
+                if (word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                if (++start < limit
+                        && word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                if (++start < limit
+                        && word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                /* always break at start==limit-1 */
+                ++start;
+                break;
+            }
+
+            i = (start + limit) / 2;
+            if (word < (toUSection.get(toUSection.position() + i) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                limit = i;
+            } else {
+                start = i;
+            }
+        }
+
+        /* did we really find it? */
+        if (start < limit) {
+            word = (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK);
+            if (byt == TO_U_GET_BYTE((int)word)) {
+                return TO_U_GET_VALUE((int) word); /* never 0 */
+            }
+        } 
+        return 0; /* not found */
+    }
+
+    /*
+     * TRUE if not an SI/SO stateful converter, or if the match length fits with the current converter state
+     */
+    static boolean TO_U_VERIFY_SISO_MATCH(byte sisoState, int match) {
+        return sisoState < 0 || (sisoState == 0) == (match == 1);
+    }
+
+    /*
+     * get the SI/SO toU state (state 0 is for SBCS, 1 for DBCS), or 1 for DBCS-only, or -1 if the converter is not
+     * SI/SO stateful
+     * 
+     * Note: For SI/SO stateful converters getting here, cnv->mode==0 is equivalent to firstLength==1.
+     */
+    private static int SISO_STATE(UConverterSharedData sharedData, int mode) {
+        return sharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO ? (byte) mode
+                : sharedData.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY ? 1 : -1;
+    }
+
+    class CharsetDecoderMBCS extends CharsetDecoderICU {
+
+        CharsetDecoderMBCS(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+            int stateTable[][/* 256 */];
+            char[] unicodeCodeUnits;
+
+            int offset;
+            byte state;
+            int byteIndex;
+            byte[] bytes;
+
+            int sourceIndex, nextSourceIndex;
+
+            int entry = 0;
+            char c;
+            byte action;
+
+            if (preToULength > 0) {
+                /*
+                 * pass sourceIndex=-1 because we continue from an earlier buffer in the future, this may change with
+                 * continuous offsets
+                 */
+                cr[0] = continueMatchToU(source, target, offsets, -1, flush);
+
+                if (cr[0].isError() || preToULength < 0) {
+                    return cr[0];
+                }
+            }
+
+            if (sharedData.mbcs.countStates == 1) {
+                if ((sharedData.mbcs.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                    cr[0] = cnvMBCSSingleToBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleToUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+            unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+
+            /* get the converter state from UConverter */
+            offset = (int) toUnicodeStatus;
+            byteIndex = toULength;
+            bytes = toUBytesArray;
+
+            /*
+             * if we are in the SBCS state for a DBCS-only converter, then load the DBCS state from the MBCS data
+             * (dbcsOnlyState==0 if it is not a DBCS-only converter)
+             */
+            state = (byte)mode;
+            if (state == 0) {
+                state = sharedData.mbcs.dbcsOnlyState;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = byteIndex == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            /* conversion loop */
+            while (sourceArrayIndex < source.limit()) {
+                /*
+                 * This following test is to see if available input would overflow the output. It does not catch output
+                 * of more than one code unit that overflows as a result of a surrogate pair or callback output from the
+                 * last source byte. Therefore, those situations also test for overflows and will then break the loop,
+                 * too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+
+                if (byteIndex == 0) {
+                    /* optimized loop for 1/2-byte input and BMP output */
+                    // agljport:todo see ucnvmbcs.c for deleted block
+                    do {
+                        entry = stateTable[state][source.get(sourceArrayIndex)&UConverterConstants.UNSIGNED_BYTE_MASK];
+                        if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                            state = (byte) MBCS_ENTRY_TRANSITION_STATE(entry);
+                            offset = MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                            ++sourceArrayIndex;
+                            if (sourceArrayIndex < source.limit()
+                                    && MBCS_ENTRY_IS_FINAL(entry = stateTable[state][source.get(sourceArrayIndex)&UConverterConstants.UNSIGNED_BYTE_MASK])
+                                    && MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_VALID_16
+                                    && (c = unicodeCodeUnits[offset + MBCS_ENTRY_FINAL_VALUE_16(entry)]) < 0xfffe) {
+                                ++sourceArrayIndex;
+                                target.put(c);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = (nextSourceIndex += 2);
+                                }
+                                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+                                offset = 0;
+                            } else {
+                                /* set the state and leave the optimized loop */
+                                ++nextSourceIndex;
+                                bytes[0] = source.get(sourceArrayIndex - 1);
+                                byteIndex = 1;
+                                break;
+                            }
+                        } else {
+                            if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                                /* output BMP code point */
+                                ++sourceArrayIndex;
+                                target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = ++nextSourceIndex;
+                                }
+                                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+                            } else {
+                                /* leave the optimized loop */
+                                break;
+                            }
+                        }
+                    } while (sourceArrayIndex < source.limit() && target.hasRemaining());
+                    /*
+                     * these tests and break statements could be put inside the loop if C had "break outerLoop" like
+                     * Java
+                     */
+                    if (sourceArrayIndex >= source.limit()) {
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++nextSourceIndex;
+                    bytes[byteIndex++] = source.get(sourceArrayIndex++);
+                } else /* byteIndex>0 */{
+                    ++nextSourceIndex;
+                    entry = stateTable[state][(bytes[byteIndex++] = source.get(sourceArrayIndex++))
+                            & UConverterConstants.UNSIGNED_BYTE_MASK];
+                }
+
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = (byte) MBCS_ENTRY_TRANSITION_STATE(entry);
+                    offset += MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                    continue;
+                }
+
+                /* save the previous state for proper extension mapping with SI/SO-stateful converters */
+                mode = state;
+
+                /* set the next state early so that we can reuse the entry variable */
+                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_16) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xfffe) {
+                        if (isFallbackUsed() && (entry = (int) getFallback(sharedData.mbcs, offset)) != 0xfffe) {
+                            /* output fallback BMP code point */
+                            target.put((char) entry);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                            byteIndex = 0;
+                        }
+                    } else {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (isFallbackUsed() ? c <= 0xdfff : c <= 0xdbff) {
+                        /* output roundtrip or fallback surrogate pair */
+                        target.put((char) (c & 0xdbff));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                        if (target.hasRemaining()) {
+                            target.put(unicodeCodeUnits[offset]);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else {
+                            /* target overflow */
+                            charErrorBufferArray[0] = unicodeCodeUnits[offset];
+                            charErrorBufferLength = 1;
+                            cr[0] = CoderResult.OVERFLOW;
+
+                            offset = 0;
+                            break;
+                        }
+                    } else if (isFallbackUsed() ? (c & 0xfffe) == 0xe000 : c == 0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        target.put(unicodeCodeUnits[offset]);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xffff) {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20
+                        || (action == MBCS_STATE_FALLBACK_DIRECT_20 && isFallbackUsed())) {
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char) (0xd800 | (char) (entry >> 10)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                    c = (char) (0xdc00 | (char) (entry & 0x3ff));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+
+                        offset = 0;
+                        break;
+                    }
+                } else if (action == MBCS_STATE_CHANGE_ONLY) {
+                    /*
+                     * This serves as a state change without any output. It is useful for reading simple stateful
+                     * encodings, for example using just Shift-In/Shift-Out codes. The 21 unused bits may later be used
+                     * for more sophisticated state transitions.
+                     */
+                    if (sharedData.mbcs.dbcsOnlyState == 0) {
+                        byteIndex = 0;
+                    } else {
+                        /* SI/SO are illegal for DBCS-only conversion */
+                        state = (byte) (mode); /* restore the previous state */
+
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(byteIndex);
+                } else {
+                    /* reserved, must never occur */
+                    byteIndex = 0;
+                }
+
+                /* end of action codes: prepare for a new character */
+                offset = 0;
+
+                if (byteIndex == 0) {
+                    sourceIndex = nextSourceIndex;
+                } else if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    int sourceBeginIndex = sourceArrayIndex;
+                    source.position(sourceArrayIndex);
+                    byteIndex = toU(byteIndex, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex = nextSourceIndex + (int) (sourceArrayIndex - sourceBeginIndex);
+
+                    if (cr[0].isError() || cr[0].isOverflow()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            toUnicodeStatus = offset;
+            mode = state;
+            toULength = byteIndex;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /*
+         * continue partial match with new input never called for simple, single-character conversion
+         */
+        private CoderResult continueMatchToU(ByteBuffer source, CharBuffer target, IntBuffer offsets, int srcIndex,
+                boolean flush) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+
+            int[] value = new int[1];
+            int match, length;
+
+            match = matchToU((byte) SISO_STATE(sharedData, mode), preToUArray, preToUBegin, preToULength, source,
+                    value, isToUUseFallback(), flush);
+
+            if (match > 0) {
+                if (match >= preToULength) {
+                    /* advance src pointer for the consumed input */
+                    source.position(source.position() + match - preToULength);
+                    preToULength = 0;
+                } else {
+                    /* the match did not use all of preToU[] - keep the rest for replay */
+                    length = preToULength - match;
+                    System.arraycopy(preToUArray, preToUBegin + match, preToUArray, preToUBegin, length);
+                    preToULength = (byte) -length;
+                }
+
+                /* write result */
+                cr = writeToU(value[0], target, offsets, srcIndex);
+            } else if (match < 0) {
+                /* save state for partial match */
+                int j, sArrayIndex;
+
+                /* just _append_ the newly consumed input to preToU[] */
+                sArrayIndex = source.position();
+                match = -match;
+                for (j = preToULength; j < match; ++j) {
+                    preToUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preToULength = (byte) match;
+            } else /* match==0 */{
+                /*
+                 * no match
+                 * 
+                 * We need to split the previous input into two parts:
+                 * 
+                 * 1. The first codepage character is unmappable - that's how we got into trying the extension data in
+                 * the first place. We need to move it from the preToU buffer to the error buffer, set an error code,
+                 * and prepare the rest of the previous input for 2.
+                 * 
+                 * 2. The rest of the previous input must be converted once we come back from the callback for the first
+                 * character. At that time, we have to try again from scratch to convert these input characters. The
+                 * replay will be handled by the ucnv.c conversion code.
+                 */
+
+                /* move the first codepage character to the error field */
+                System.arraycopy(preToUArray, preToUBegin, toUBytesArray, toUBytesBegin, preToUFirstLength);
+                toULength = preToUFirstLength;
+
+                /* move the rest up inside the buffer */
+                length = preToULength - preToUFirstLength;
+                if (length > 0) {
+                    System.arraycopy(preToUArray, preToUBegin + preToUFirstLength, preToUArray, preToUBegin, length);
+                }
+
+                /* mark preToU for replay */
+                preToULength = (byte) -length;
+
+                /* set the error code for unassigned */
+                cr = CoderResult.unmappableForLength(preToUFirstLength);
+            }
+            return cr;
+        }
+
+        /*
+         * this works like natchFromU() except - the first character is in pre - no trie is used - the returned
+         * matchLength is not offset by 2
+         */
+        private int matchToU(byte sisoState, byte[] preArray, int preArrayBegin, int preLength, ByteBuffer source,
+                int[] pMatchValue, boolean isUseFallback, boolean flush) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+            IntBuffer toUTable, toUSection;
+
+            int value, matchValue, srcLength = 0;
+            int i, j, index, length, matchLength;
+            short b;
+
+            if (cx == null || cx.asIntBuffer().get(EXT_TO_U_LENGTH) <= 0) {
+                return 0; /* no extension data, no match */
+            }
+
+            /* initialize */
+            toUTable = (IntBuffer) ARRAY(cx, EXT_TO_U_INDEX, int.class);
+            index = 0;
+
+            matchValue = 0;
+            i = j = matchLength = 0;
+            if (source != null) { 
+                srcLength = source.remaining();
+            }
+
+            if (sisoState == 0) {
+                /* SBCS state of an SI/SO stateful converter, look at only exactly 1 byte */
+                if (preLength > 1) {
+                    return 0; /* no match of a DBCS sequence in SBCS mode */
+                } else if (preLength == 1) {
+                    srcLength = 0;
+                } else /* preLength==0 */{
+                    if (srcLength > 1) {
+                        srcLength = 1;
+                    }
+                }
+                flush = true;
+            }
+
+            /* we must not remember fallback matches when not using fallbacks */
+
+            /* match input units until there is a full match or the input is consumed */
+            for (;;) {
+                /* go to the next section */
+                int oldpos = toUTable.position();
+                toUSection = ((IntBuffer) toUTable.position(index)).slice();
+                toUTable.position(oldpos);
+
+                /* read first pair of the section */
+                value = toUSection.get();
+                length = TO_U_GET_BYTE(value);
+                value = TO_U_GET_VALUE(value);
+                if (value != 0 && (TO_U_IS_ROUNDTRIP(value) || isToUUseFallback(isUseFallback))
+                        && TO_U_VERIFY_SISO_MATCH(sisoState, i + j)) {
+                    /* remember longest match so far */
+                    matchValue = value;
+                    matchLength = i + j;
+                }
+
+                /* match pre[] then src[] */
+                if (i < preLength) {
+                    b = (short) (preArray[preArrayBegin + i++] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else if (j < srcLength) {
+                    b = (short) (source.get(source.position() + j++) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else {
+                    /* all input consumed, partial match */
+                    if (flush || (length = (i + j)) > MAX_BYTES) {
+                        /*
+                         * end of the entire input stream, stop with the longest match so far or: partial match must not
+                         * be longer than UCNV_EXT_MAX_BYTES because it must fit into state buffers
+                         */
+                        break;
+                    } else {
+                        /* continue with more input next time */
+                        return -length;
+                    }
+                }
+
+                /* search for the current UChar */
+                value = findToU(toUSection, length, b);
+                if (value == 0) {
+                    /* no match here, stop with the longest match so far */
+                    break;
+                } else {
+                    if (TO_U_IS_PARTIAL(value)) {
+                        /* partial match, continue */
+                        index = TO_U_GET_PARTIAL_INDEX(value);
+                    } else {
+                        if ((TO_U_IS_ROUNDTRIP(value) || isToUUseFallback(isUseFallback)) && TO_U_VERIFY_SISO_MATCH(sisoState, i + j)) {
+                            /* full match, stop with result */
+                            matchValue = value;
+                            matchLength = i + j;
+                        } else {
+                            /* full match on fallback not taken, stop with the longest match so far */
+                        }
+                        break;
+                    }
+                }
+            }
+
+            if (matchLength == 0) {
+                /* no match at all */
+                return 0;
+            }
+
+            /* return result */
+            pMatchValue[0] = TO_U_MASK_ROUNDTRIP(matchValue);
+            return matchLength;
+        }
+
+        private CoderResult writeToU(int value, CharBuffer target, IntBuffer offsets, int srcIndex) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+            /* output the result */
+            if (TO_U_IS_CODE_POINT(value)) {
+                /* output a single code point */
+                return toUWriteCodePoint(TO_U_GET_CODE_POINT(value), target, offsets, srcIndex);
+            } else {
+                /* output a string - with correct data we have resultLength>0 */
+
+                char[] a = new char[TO_U_GET_LENGTH(value)];
+                CharBuffer cb = ((CharBuffer) ARRAY(cx, EXT_TO_U_UCHARS_INDEX, char.class));
+                cb.position(TO_U_GET_INDEX(value));
+                cb.get(a, 0, a.length);
+                return toUWriteUChars(this, a, 0, a.length, target, offsets, srcIndex);
+            }
+        }
+
+        private CoderResult toUWriteCodePoint(int c, CharBuffer target, IntBuffer offsets, int sourceIndex) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int tBeginIndex = target.position();
+
+            if (target.hasRemaining()) {
+                if (c <= 0xffff) {
+                    target.put((char) c);
+                    c = UConverterConstants.U_SENTINEL;
+                } else /* c is a supplementary code point */{
+                    target.put(UTF16.getLeadSurrogate(c));
+                    c = UTF16.getTrailSurrogate(c);
+                    if (target.hasRemaining()) {
+                        target.put((char) c);
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                }
+
+                /* write offsets */
+                if (offsets != null) {
+                    offsets.put(sourceIndex);
+                    if ((tBeginIndex + 1) < target.position()) {
+                        offsets.put(sourceIndex);
+                    }
+                }
+            }
+
+            /* write overflow from c */
+            if (c >= 0) {
+                charErrorBufferLength = UTF16.append(charErrorBufferArray, 0, c);
+                cr = CoderResult.OVERFLOW;
+            }
+
+            return cr;
+        }
+
+        /*
+         * Input sequence: cnv->toUBytes[0..length[ @return if(U_FAILURE) return the length (toULength, byteIndex) for
+         * the input else return 0 after output has been written to the target
+         */
+        private int toU(int length, ByteBuffer source, CharBuffer target, IntBuffer offsets, int sourceIndex,
+                boolean flush, CoderResult[] cr) {
+            // ByteBuffer cx;
+
+            if (sharedData.mbcs.extIndexes != null
+                    && initialMatchToU(length, source, target, offsets, sourceIndex, flush, cr)) {
+                return 0; /* an extension mapping handled the input */
+            }
+
+            /* GB 18030 */
+            if (length == 4 && (options & MBCS_OPTION_GB18030) != 0) {
+                long[] range;
+                long linear;
+                int i;
+
+                linear = LINEAR_18030(toUBytesArray[0], toUBytesArray[1], toUBytesArray[2], toUBytesArray[3]);
+                for (i = 0; i < gb18030Ranges.length; ++i) {
+                    range = gb18030Ranges[i];
+                    if (range[2] <= linear && linear <= range[3]) {
+                        /* found the sequence, output the Unicode code point for it */
+                        cr[0] = CoderResult.UNDERFLOW;
+
+                        /* add the linear difference between the input and start sequences to the start code point */
+                        linear = range[0] + (linear - range[2]);
+
+                        /* output this code point */
+                        cr[0] = toUWriteCodePoint((int) linear, target, offsets, sourceIndex);
+
+                        return 0;
+                    }
+                }
+            }
+
+            /* no mapping */
+            cr[0] = CoderResult.unmappableForLength(length);
+            return length;
+        }
+
+        /*
+         * target<targetLimit; set error code for overflow
+         */
+        private boolean initialMatchToU(int firstLength, ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                int srcIndex, boolean flush, CoderResult[] cr) {
+            int[] value = new int[1];
+            int match = 0;
+
+            /* try to match */
+            match = matchToU((byte) SISO_STATE(sharedData, mode), toUBytesArray, toUBytesBegin, firstLength, source,
+                    value, isToUUseFallback(), flush);
+            if (match > 0) {
+                /* advance src pointer for the consumed input */
+                source.position(source.position() + match - firstLength);
+
+                /* write result to target */
+                cr[0] = writeToU(value[0], target, offsets, srcIndex);
+                return true;
+            } else if (match < 0) {
+                /* save state for partial match */
+                byte[] sArray;
+                int sArrayIndex;
+                int j;
+
+                /* copy the first code point */
+                sArray = toUBytesArray;
+                sArrayIndex = toUBytesBegin;
+                preToUFirstLength = (byte) firstLength;
+                for (j = 0; j < firstLength; ++j) {
+                    preToUArray[j] = sArray[sArrayIndex++];
+                }
+
+                /* now copy the newly consumed input */
+                sArrayIndex = source.position();
+                match = -match;
+                for (; j < match; ++j) {
+                    preToUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex);
+                preToULength = (byte) match;
+                return true;
+            } else /* match==0 no match */{
+                return false;
+            }
+        }
+
+        private int simpleMatchToU(ByteBuffer source, boolean useFallback) {
+            int[] value = new int[1];
+            int match;
+
+            if (source.remaining() <= 0) {
+                return 0xffff;
+            }
+
+            /* try to match */
+            match = matchToU((byte) -1, source.array(), source.position(), source.limit(), null, value, useFallback, true);
+
+            if (match == source.limit()) {
+                /* write result for simple, single-character conversion */
+                if (TO_U_IS_CODE_POINT(value[0])) {
+                    return TO_U_GET_CODE_POINT(value[0]);
+                }
+            }
+
+            /*
+             * return no match because - match>0 && value points to string: simple conversion cannot handle multiple
+             * code points - match>0 && match!=length: not all input consumed, forbidden for this function - match==0:
+             * no match found in the first place - match<0: partial match, not supported for simple conversion (and
+             * flush==TRUE)
+             */
+            return 0xfffe;
+        }
+
+        CoderResult cnvMBCSToUnicodeWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            
+            int[][] stateTable;
+            char[] unicodeCodeUnits;
+            
+            int sourceIndex, nextSourceIndex;
+            
+            int offset;
+            short state;
+            int byteIndex;
+            byte[] bytes;
+            
+            int entry;
+            char c;
+            short action;
+            
+            if (this.preToULength > 0) {
+                /*
+                 * pass sourceIndex-1 because we continue from an earlier buffer
+                 * in the future, this may change with continuous offsets
+                 */
+                cr[0] = continueMatchToU(source, target, offsets, -1, flush);
+                if (cr[0].isError() || this.preToULength < 0) {
+                    return cr[0];
+                }
+            }
+            
+            if (sharedData.mbcs.countStates == 1) {
+                if ((sharedData.mbcs.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                    cr[0] = cnvMBCSSingleToBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleToUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }
+            
+            if ((options&UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+            unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+            
+            /* get the converter state from UConverter */
+            offset = this.toUnicodeStatus;
+            byteIndex = this.toULength;
+            bytes = this.toUBytesArray;
+            
+            /*
+             * if we are in the SBCS state for a DBCS-only converter,
+             * then load the DBCS state from the MBCS data
+             * (dbcsOnlyState==0 if it is not a DBCS-only converter)
+             */
+            state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&this.mode);
+            if (state == 0) {
+                state = sharedData.mbcs.dbcsOnlyState;
+            }
+            
+            /* sourceIndex=-1 if the current character begain in the previous buffer */
+            sourceIndex = byteIndex == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+            
+            /* conversion loop */
+            while (source.hasRemaining()) {
+                /*
+                 * This following test is to see if available input would overflow the output.
+                 * It does not catch output of more than one code unit that
+                 * overflows as a result of a surrogate pair or callback output
+                 * from the last source byte.
+                 * Therefore, those situations also test for overflows and will
+                 * then break the loop, too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+                
+                if (byteIndex == 0) {
+                    /* optimized loop for 1/2-byte input and BMP output */
+                    do {
+                        entry = stateTable[state][(short)source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                        if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                            state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_TRANSITION_STATE(entry));
+                            offset = MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                            
+                            source.get();
+                            if (source.hasRemaining() &&
+                                    MBCS_ENTRY_IS_FINAL(entry=stateTable[state][(short)source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK]) &&
+                                    MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_VALID_16 &&
+                                    (c = unicodeCodeUnits[offset+MBCS_ENTRY_FINAL_VALUE_16(entry)]) < 0xfffe) {
+                                source.get();
+                                target.put(c);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = (nextSourceIndex + 2);
+                                }
+                                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                                offset = 0;
+                            } else {
+                                /* set the state and leave the optimized loop */
+                                ++nextSourceIndex;
+                                bytes[0] = source.get(source.position()-1);
+                                byteIndex = 1;
+                                break;
+                            }
+                        } else {
+                            if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                                /* output BMP code point */
+                                source.get();
+                                target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = ++nextSourceIndex;
+                                }
+                                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                            } else {
+                                /* leave the optimized loop */
+                                break;
+                            }
+                        }
+                    } while (source.hasRemaining() && target.hasRemaining());
+                    
+                    /* these tests and break statements could be put inside the loop
+                     * if C had "break outerLoop" like Java
+                     */
+                    if (!source.hasRemaining()) {
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                    
+                    ++nextSourceIndex;
+                    bytes[byteIndex++] = source.get();
+                } else { /* byteIndex>0 */
+                    ++nextSourceIndex;
+                    entry = stateTable[state][(short)(bytes[byteIndex++]=source.get()) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                }
+                
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_TRANSITION_STATE(entry));
+                    offset+=MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    continue;
+                }
+                
+                /* save the previous state for proper extension mapping with SI/SO-stateful converters */
+                mode = state;
+                
+                /* set the next state early so that we can reuse the entry variable */
+                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                
+                /*
+                 * An if-else-if chain provides more reliable performance for
+                 * the most common cases compared to a switch.
+                 */
+                action = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_16) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xfffe) {
+                        if (CharsetDecoderICU.isToUUseFallback() && (entry = (int)getFallback(sharedData.mbcs, offset)) != 0xfffe) {
+                            /* output fallback BMP code point */
+                            target.put((char)entry);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                            byteIndex = 0;
+                        }
+                    } else {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (CharsetDecoderICU.isToUUseFallback() ? c<=0xdfff : c<=0xdbff) {
+                        /* output roundtrip or fallback surrogate pair */
+                        target.put((char)(c&0xdbff));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                        if (target.hasRemaining()) {
+                            target.put(unicodeCodeUnits[offset]);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else {
+                            /* target overflow */
+                            charErrorBufferArray[0] = unicodeCodeUnits[offset];
+                            charErrorBufferLength = 1;
+                            cr[0] = CoderResult.OVERFLOW;
+                            
+                            offset = 0;
+                            break;
+                        }
+                    } else if (CharsetDecoderICU.isToUUseFallback() ? (c&0xfffe)==0xe000 : c==0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        target.put(unicodeCodeUnits[offset]);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xffff) {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20 ||
+                        action == MBCS_STATE_FALLBACK_DIRECT_20 && CharsetDecoderICU.isToUUseFallback()) {
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char)(0xd800 | (char)(entry&0x3ff)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                    c = (char)(0xdc00 | (char)(entry>>10));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                        
+                        offset = 0;
+                        break;
+                    }
+                    
+                } else if (action == MBCS_STATE_CHANGE_ONLY) {
+                    /*
+                     * This serves as a state change without any output.
+                     * It is useful for reading simple stateful encodings,
+                     * for example using just Shift-In/Shift-Out codes.
+                     * The 21 unused bits may later be used for more sophisticated
+                     * state transistions.
+                     */
+                    if (sharedData.mbcs.dbcsOnlyState == 0) {
+                        byteIndex = 0;
+                    } else {
+                        /* SI/SO are illegal for DBCS-only conversion */
+                        state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&mode); /* restore the previous state */
+                        
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (CharsetDecoderICU.isToUUseFallback()) {
+                        /* output BMP code point */
+                        target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                } else {
+                    /* reserved, must never occur */
+                    byteIndex = 0;
+                }
+                
+                /* end of action codes: prepare for new character */
+                offset = 0;
+                
+                if (byteIndex == 0) {
+                    sourceIndex = nextSourceIndex;
+                } else if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else { /* unassigned sequences indicated with byteIndex>0 */
+                    /* try an extension mapping */
+                    byteIndex = toU(byteIndex, source, target, offsets, sourceIndex, flush, cr);
+                    sourceIndex = nextSourceIndex + source.position();
+                    
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+            
+            /* set the converter state back into UConverter */
+            toUnicodeStatus = offset;
+            mode = state;
+            toULength = byteIndex;
+            
+            return cr[0];
+        }
+        /*
+         * This version of cnvMBCSSingleToUnicodeWithOffsets() is optimized for single-byte, single-state codepages that
+         * only map to and from the BMP. In addition to single-byte optimizations, the offset calculations become much
+         * easier.
+         */
+        private CoderResult cnvMBCSSingleToBMPWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex, lastSource;
+            int targetCapacity, length;
+            int[][] stateTable;
+
+            int sourceIndex;
+
+            int entry;
+            byte action;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+            targetCapacity = target.remaining();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = 0;
+            lastSource = sourceArrayIndex;
+
+            /*
+             * since the conversion here is 1:1 UChar:uint8_t, we need only one counter for the minimum of the
+             * sourceLength and targetCapacity
+             */
+            length = source.remaining();
+            if (length < targetCapacity) {
+                targetCapacity = length;
+            }
+
+            /* conversion loop */
+            while (targetCapacity > 0) {
+                entry = stateTable[0][source.get(sourceArrayIndex++) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                /* MBCS_ENTRY_IS_FINAL(entry) */
+
+                /* test the most common case first */
+                if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    --targetCapacity;
+                    continue;
+                }
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        --targetCapacity;
+                        continue;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(sourceArrayIndex - lastSource);
+                } else {
+                    /* reserved, must never occur */
+                    continue;
+                }
+
+                /* set offsets since the start or the last extension */
+                if (offsets != null) {
+                    int count = sourceArrayIndex - lastSource;
+
+                    /* predecrement: do not set the offset for the callback-causing character */
+                    while (--count > 0) {
+                        offsets.put(sourceIndex++);
+                    }
+                    /* offset and sourceIndex are now set for the current character */
+                }
+
+                if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    lastSource = sourceArrayIndex;
+                    toUBytesArray[0] = source.get(sourceArrayIndex - 1);
+                    source.position(sourceArrayIndex);
+                    toULength = toU((byte) 1, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += 1 + (int) (sourceArrayIndex - lastSource);
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+
+                    /* recalculate the targetCapacity after an extension mapping */
+                    targetCapacity = target.remaining();
+                    length = source.remaining();
+                    if (length < targetCapacity) {
+                        targetCapacity = length;
+                    }
+                }
+            }
+
+            if (!cr[0].isError() && sourceArrayIndex < source.capacity() && !target.hasRemaining()) {
+                /* target is full */
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            /* set offsets since the start or the last callback */
+            if (offsets != null) {
+                int count = sourceArrayIndex - lastSource;
+                while (count > 0) {
+                    offsets.put(sourceIndex++);
+                    --count;
+                }
+            }
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of cnvMBCSToUnicodeWithOffsets() is optimized for single-byte, single-state codepages. */
+        private CoderResult cnvMBCSSingleToUnicodeWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+            int[][] stateTable;
+
+            int sourceIndex;
+
+            int entry;
+            char c;
+            byte action;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = 0;
+
+            /* conversion loop */
+            while (sourceArrayIndex < source.limit()) {
+                /*
+                 * This following test is to see if available input would overflow the output. It does not catch output
+                 * of more than one code unit that overflows as a result of a surrogate pair or callback output from the
+                 * last source byte. Therefore, those situations also test for overflows and will then break the loop,
+                 * too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+
+                entry = stateTable[0][source.get(sourceArrayIndex++) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                /* MBCS_ENTRY_IS_FINAL(entry) */
+
+                /* test the most common case first */
+                if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+
+                    /* normal end of action codes: prepare for a new character */
+                    ++sourceIndex;
+                    continue;
+                }
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_DIRECT_20
+                        || (action == MBCS_STATE_FALLBACK_DIRECT_20 && isFallbackUsed())) {
+
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char) (0xd800 | (char) (entry >>> 10)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    c = (char) (0xdc00 | (char) (entry & 0x3ff));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++sourceIndex;
+                    continue;
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+
+                        ++sourceIndex;
+                        continue;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                } else {
+                    /* reserved, must never occur */
+                    ++sourceIndex;
+                    continue;
+                }
+
+                if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    int sourceBeginIndex = sourceArrayIndex;
+                    toUBytesArray[0] = source.get(sourceArrayIndex - 1);
+                    source.position(sourceArrayIndex);
+                    toULength = toU((byte) 1, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += 1 + (int) (sourceArrayIndex - sourceBeginIndex);
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        private int getFallback(UConverterMBCSTable mbcsTable, int offset) {
+            MBCSToUFallback[] toUFallbacks;
+            int i, start, limit;
+
+            limit = mbcsTable.countToUFallbacks;
+            if (limit > 0) {
+                /* do a binary search for the fallback mapping */
+                toUFallbacks = mbcsTable.toUFallbacks;
+                start = 0;
+                while (start < limit - 1) {
+                    i = (start + limit) / 2;
+                    if (offset < toUFallbacks[i].offset) {
+                        limit = i;
+                    } else {
+                        start = i;
+                    }
+                }
+
+                /* did we really find it? */
+                if (offset == toUFallbacks[start].offset) {
+                    return toUFallbacks[start].codePoint;
+                }
+            }
+
+            return 0xfffe;
+        }
+
+        /**
+         * This is a simple version of _MBCSGetNextUChar() that is used by other converter implementations. It only
+         * returns an "assigned" result if it consumes the entire input. It does not use state from the converter, nor
+         * error codes. It does not handle the EBCDIC swaplfnl option (set in UConverter). It handles conversion
+         * extensions but not GB 18030.
+         * 
+         * @return U+fffe unassigned U+ffff illegal otherwise the Unicode code point
+         */
+        int simpleGetNextUChar(ByteBuffer source, boolean useFallback) {
+
+            // #if 0
+            // /*
+            // * Code disabled 2002dec09 (ICU 2.4) because it is not currently used in ICU. markus
+            // * TODO In future releases, verify that this function is never called for SBCS
+            // * conversions, i.e., that sharedData->mbcs.countStates==1 is still true.
+            // * Removal improves code coverage.
+            // */
+            // /* use optimized function if possible */
+            // if(sharedData->mbcs.countStates==1) {
+            // if(length==1) {
+            // return ucnv_MBCSSingleSimpleGetNextUChar(sharedData, (uint8_t)*source, useFallback);
+            // } else {
+            // return 0xffff; /* illegal: more than a single byte for an SBCS converter */
+            // }
+            // }
+            // #endif
+
+            /* set up the local pointers */
+            int[][] stateTable = sharedData.mbcs.stateTable;
+            char[] unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+
+            /* converter state */
+            int offset = 0;
+            int state = sharedData.mbcs.dbcsOnlyState;
+
+            int action;
+            int entry;
+            int c;
+            int i = source.position();
+            int length = source.limit() - i;
+
+            /* conversion loop */
+            while (true) {
+                // entry=stateTable[state][(uint8_t)source[i++]];
+                entry = stateTable[state][source.get() & UConverterConstants.UNSIGNED_BYTE_MASK];
+                i = source.position();
+
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = MBCS_ENTRY_TRANSITION_STATE(entry);
+                    offset += MBCS_ENTRY_TRANSITION_OFFSET(entry);
+
+                    if (i == source.limit()) {
+                        return 0xffff; /* truncated character */
+                    }
+                } else {
+                    /*
+                     * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                     * switch.
+                     */
+                    action = MBCS_ENTRY_FINAL_ACTION(entry);
+                    if (action == MBCS_STATE_VALID_16) {
+                        offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        c = unicodeCodeUnits[offset];
+                        if (c != 0xfffe) {
+                            /* done */
+                        } else if (isToUUseFallback()) {
+                            c = getFallback(sharedData.mbcs, offset);
+                        }
+                        /* else done with 0xfffe */
+                    } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                        // /* output BMP code point */
+                        c = MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                        offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        c = unicodeCodeUnits[offset++];
+                        if (c < 0xd800) {
+                            /* output BMP code point below 0xd800 */
+                        } else if (isToUUseFallback() ? c <= 0xdfff : c <= 0xdbff) {
+                            /* output roundtrip or fallback supplementary code point */
+                            c = (((c & 0x3ff) << 10) + unicodeCodeUnits[offset] + (0x10000 - 0xdc00));
+                        } else if (isToUUseFallback() ? (c & 0xfffe) == 0xe000 : c == 0xe000) {
+                            /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                            c = unicodeCodeUnits[offset];
+                        } else if (c == 0xffff) {
+                            return 0xffff;
+                        } else {
+                            c = 0xfffe;
+                        }
+                    } else if (action == MBCS_STATE_VALID_DIRECT_20) {
+                        /* output supplementary code point */
+                        c = 0x10000 + MBCS_ENTRY_FINAL_VALUE(entry);
+                    } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                        if (!isToUUseFallback(useFallback)) {
+                            c = 0xfffe;
+                        } else {
+                            /* output BMP code point */
+                            c = MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        }
+                    } else if (action == MBCS_STATE_FALLBACK_DIRECT_20) {
+                        if (!isToUUseFallback(useFallback)) {
+                            c = 0xfffe;
+                        } else {
+                            /* output supplementary code point */
+                            c = 0x10000 + MBCS_ENTRY_FINAL_VALUE(entry);
+                        }
+                    } else if (action == MBCS_STATE_UNASSIGNED) {
+                        c = 0xfffe;
+                    } else {
+                        /*
+                         * forbid MBCS_STATE_CHANGE_ONLY for this function, and MBCS_STATE_ILLEGAL and reserved action
+                         * codes
+                         */
+                        return 0xffff;
+                    }
+                    break;
+                }
+            }
+
+            if (i != source.limit()) {
+                /* illegal for this function: not all input consumed */
+                return 0xffff;
+            }
+
+            if (c == 0xfffe) {
+                /* try an extension mapping */
+                if (sharedData.mbcs.extIndexes != null) {
+                    /* Increase the limit for proper handling. Used in LMBCS. */
+                    if (source.capacity() >= source.position() + length) {
+                        source.limit(source.position() + length);
+                    }
+                    return simpleMatchToU(source, useFallback);
+                }
+            }
+
+            return c;
+        }
+
+    }
+
+    class CharsetEncoderMBCS extends CharsetEncoderICU {
+        private boolean allowReplacementChanges = false;
+
+        CharsetEncoderMBCS(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            allowReplacementChanges = true; // allow changes in implReplaceWith
+            implReset();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            preFromUFirstCP = UConverterConstants.U_SENTINEL;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            // if (!source.hasRemaining() && fromUChar32 == 0)
+            // return cr[0];
+
+            int sourceArrayIndex;
+            char[] table;
+            byte[] pArray, bytes;
+            int pArrayIndex, outputType, c;
+            int prevSourceIndex, sourceIndex, nextSourceIndex;
+            int stage2Entry = 0, value = 0, length = 0, prevLength;
+            short uniMask;
+            // long asciiRoundtrips;
+            
+            boolean gotoUnassigned = false;
+
+            try {
+
+                if (!flush && preFromUFirstCP >= 0) {
+                    /*
+                     * pass sourceIndex=-1 because we continue from an earlier buffer in the future, this may change
+                     * with continuous offsets
+                     */
+                    cr[0] = continueMatchFromU(source, target, offsets, flush, -1);
+
+                    if (cr[0].isError() || preFromULength < 0) {
+                        return cr[0];
+                    }
+                }
+
+                /* use optimized function if possible */
+                outputType = sharedData.mbcs.outputType;
+                uniMask = sharedData.mbcs.unicodeMask;
+                if (outputType == MBCS_OUTPUT_1 && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        cr[0] = cnvMBCSSingleFromBMPWithOffsets(source, target, offsets, flush);
+                    } else {
+                        cr[0] = cnvMBCSSingleFromUnicodeWithOffsets(source, target, offsets, flush);
+                    }
+                    return cr[0];
+                } else if (outputType == MBCS_OUTPUT_2) {
+                    cr[0] = cnvMBCSDoubleFromUnicodeWithOffsets(source, target, offsets, flush);
+                    return cr[0];
+                }
+
+                table = sharedData.mbcs.fromUnicodeTable;
+                sourceArrayIndex = source.position();
+
+                if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                    bytes = sharedData.mbcs.swapLFNLFromUnicodeBytes;
+                } else {
+                    bytes = sharedData.mbcs.fromUnicodeBytes;
+                }
+
+                // asciiRoundtrips = sharedData.mbcs.asciiRoundtrips;
+
+                /* get the converter state from UConverter */
+                c = fromUChar32;
+
+                if (outputType == MBCS_OUTPUT_2_SISO) {
+                    prevLength = (int) fromUnicodeStatus;
+                    if (prevLength == 0) {
+                        /* set the real value */
+                        prevLength = 1;
+                    }
+                } else {
+                    /* prevent fromUnicodeStatus from being set to something non-0 */
+                    prevLength = 0;
+                }
+
+                /* sourceIndex=-1 if the current character began in the previous buffer */
+                prevSourceIndex = -1;
+                sourceIndex = c == 0 ? 0 : -1;
+                nextSourceIndex = 0;
+
+                /* conversion loop */
+                /*
+                 * This is another piece of ugly code: A goto into the loop if the converter state contains a first
+                 * surrogate from the previous function call. It saves me to check in each loop iteration a check of
+                 * if(c==0) and duplicating the trail-surrogate-handling code in the else branch of that check. I could
+                 * not find any other way to get around this other than using a function call for the conversion and
+                 * callback, which would be even more inefficient.
+                 * 
+                 * Markus Scherer 2000-jul-19
+                 */
+                boolean doloop = true;
+                boolean doread = true;
+                if (c != 0 && target.hasRemaining()) {
+                    if (UTF16.isLeadSurrogate((char) c) && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                        // c is a lead surrogate, read another input
+                        SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex, nextSourceIndex,
+                                prevSourceIndex, prevLength);
+                        doloop = getTrail(source, target, uniMask, x, flush, cr);
+                        doread = x.doread;
+                        c = x.c;
+                        sourceArrayIndex = x.sourceArrayIndex;
+                        sourceIndex = x.sourceIndex;
+                        nextSourceIndex = x.nextSourceIndex;
+                        prevSourceIndex = x.prevSourceIndex;
+                        prevLength = x.prevLength;
+                    } else {
+                        // c is not a lead surrogate, do not read another input
+                        doread = false;
+                    }
+                }
+
+                if (doloop) {
+                    while (!doread || sourceArrayIndex < source.limit()) {
+                        /*
+                         * This following test is to see if available input would overflow the output. It does not catch
+                         * output of more than one byte that overflows as a result of a multi-byte character or callback
+                         * output from the last source character. Therefore, those situations also test for overflows
+                         * and will then break the loop, too.
+                         */
+                        if (target.hasRemaining()) {
+                            /*
+                             * Get a correct Unicode code point: a single UChar for a BMP code point or a matched
+                             * surrogate pair for a "supplementary code point".
+                             */
+
+                            if (doread) {
+                                // doread might be false only on the first looping
+
+                                c = source.get(sourceArrayIndex++);
+                                ++nextSourceIndex;
+
+                                /*
+                                 * This also tests if the codepage maps single surrogates. If it does, then surrogates
+                                 * are not paired but mapped separately. Note that in this case unmatched surrogates are
+                                 * not detected.
+                                 */
+                                if (UTF16.isSurrogate((char) c)
+                                        && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                                    if (UTF16.isLeadSurrogate((char) c)) {
+                                        // getTrail:
+                                        SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex,
+                                                nextSourceIndex, prevSourceIndex, prevLength);
+                                        doloop = getTrail(source, target, uniMask, x, flush, cr);
+                                        c = x.c;
+                                        sourceArrayIndex = x.sourceArrayIndex;
+                                        sourceIndex = x.sourceIndex;
+                                        nextSourceIndex = x.nextSourceIndex;
+                                        prevSourceIndex = x.prevSourceIndex;
+
+                                        if (x.doread) {
+                                            if (doloop)
+                                                continue;
+                                            else
+                                                break;
+                                        }
+                                    } else {
+                                        /* this is an unmatched trail code unit (2nd surrogate) */
+                                        /* callback(illegal) */
+                                        cr[0] = CoderResult.malformedForLength(1);
+                                        break;
+                                    }
+                                }
+                            } else {
+                                doread = true;
+                            }
+                            /* convert the Unicode code point in c into codepage bytes */
+
+                            /*
+                             * The basic lookup is a triple-stage compact array (trie) lookup. For details see the
+                             * beginning of this file.
+                             * 
+                             * Single-byte codepages are handled with a different data structure by _MBCSSingle...
+                             * functions.
+                             * 
+                             * The result consists of a 32-bit value from stage 2 and a pointer to as many bytes as are
+                             * stored per character. The pointer points to the character's bytes in stage 3. Bits 15..0
+                             * of the stage 2 entry contain the stage 3 index for that pointer, while bits 31..16 are
+                             * flags for which of the 16 characters in the block are roundtrip-assigned.
+                             * 
+                             * For 2-byte and 4-byte codepages, the bytes are stored as uint16_t respectively as
+                             * uint32_t, in the platform encoding. For 3-byte codepages, the bytes are always stored in
+                             * big-endian order.
+                             * 
+                             * For EUC encodings that use only either 0x8e or 0x8f as the first byte of their longest
+                             * byte sequences, the first two bytes in this third stage indicate with their 7th bits
+                             * whether these bytes are to be written directly or actually need to be preceeded by one of
+                             * the two Single-Shift codes. With this, the third stage stores one byte fewer per
+                             * character than the actual maximum length of EUC byte sequences.
+                             * 
+                             * Other than that, leading zero bytes are removed and the other bytes output. A single zero
+                             * byte may be output if the "assigned" bit in stage 2 was on. The data structure does not
+                             * support zero byte output as a fallback, and also does not allow output of leading zeros.
+                             */
+                            stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                            /* get the bytes and the length for the output */
+                            switch (outputType) {
+                            /* This is handled above with the method cnvMBCSDoubleFromUnicodeWithOffsets() */
+                            /* case MBCS_OUTPUT_2:
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else {
+                                    length = 2;
+                                }
+                                break; */
+                            case MBCS_OUTPUT_2_SISO:
+                                /* 1/2-byte stateful with Shift-In/Shift-Out */
+                                /*
+                                 * Save the old state in the converter object right here, then change the local
+                                 * prevLength state variable if necessary. Then, if this character turns out to be
+                                 * unassigned or a fallback that is not taken, the callback code must not save the new
+                                 * state in the converter because the new state is for a character that is not output.
+                                 * However, the callback must still restore the state from the converter in case the
+                                 * callback function changed it for its output.
+                                 */
+                                fromUnicodeStatus = prevLength; /* save the old state */
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    if (value == 0 && MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) == false) {
+                                        /* no mapping, leave value==0 */
+                                        length = 0;
+                                    } else if (prevLength <= 1) {
+                                        length = 1;
+                                    } else {
+                                        /* change from double-byte mode to single-byte */
+                                        value |= UConverterConstants.SI << 8;
+                                        length = 2;
+                                        prevLength = 1;
+                                    }
+                                } else {
+                                    if (prevLength == 2) {
+                                        length = 2;
+                                    } else {
+                                        /* change from single-byte mode to double-byte */
+                                        value |= UConverterConstants.SO << 16;
+                                        length = 3;
+                                        prevLength = 2;
+                                    }
+                                }
+                                break;
+                            case MBCS_OUTPUT_DBCS_ONLY:
+                                /* table with single-byte results, but only DBCS mappings used */
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    /* no mapping or SBCS result, not taken for DBCS-only */
+                                    value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                                    length = 0;
+                                } else {
+                                    length = 2;
+                                }
+                                break;
+                            case MBCS_OUTPUT_3:
+                                pArray = bytes;
+                                pArrayIndex = MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                                value = ((pArray[pArrayIndex] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                                        | ((pArray[pArrayIndex + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                                        | (pArray[pArrayIndex + 2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else {
+                                    length = 3;
+                                }
+                                break;
+                            case MBCS_OUTPUT_4:
+                                value = MBCS_VALUE_4_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffffff) {
+                                    length = 3;
+                                } else {
+                                    length = 4;
+                                }
+                                break;
+                            case MBCS_OUTPUT_3_EUC:
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                /* EUC 16-bit fixed-length representation */
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & 0x8000) == 0) {
+                                    value |= 0x8e8000;
+                                    length = 3;
+                                } else if ((value & 0x80) == 0) {
+                                    value |= 0x8f0080;
+                                    length = 3;
+                                } else {
+                                    length = 2;
+                                }
+                                break;
+                            case MBCS_OUTPUT_4_EUC:
+                                pArray = bytes;
+                                pArrayIndex = MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                                value = ((pArray[pArrayIndex] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                                        | ((pArray[pArrayIndex + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                                        | (pArray[pArrayIndex + 2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else if ((value & 0x800000) == 0) {
+                                    value |= 0x8e800000;
+                                    length = 4;
+                                } else if ((value & 0x8000) == 0) {
+                                    value |= 0x8f008000;
+                                    length = 4;
+                                } else {
+                                    length = 3;
+                                }
+                                break;
+                            default:
+                                /* must not occur */
+                                /*
+                                 * To avoid compiler warnings that value & length may be used without having been
+                                 * initialized, we set them here. In reality, this is unreachable code. Not having a
+                                 * default branch also causes warnings with some compilers.
+                                 */
+                                value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                                length = 0;
+                                break;
+                            }
+                            
+                            /* is this code point assigned, or do we use fallbacks? */
+                            if (gotoUnassigned || (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) || (isFromUUseFallback(c) && value != 0)))) {
+                                gotoUnassigned = false;
+                                /*
+                                 * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way
+                                 * with this data structure for fallback output to be a zero byte.
+                                 */
+
+                                // unassigned:
+                                SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex, nextSourceIndex,
+                                        prevSourceIndex, prevLength);
+                                doloop = unassigned(source, target, offsets, x, flush, cr);
+                                c = x.c;
+                                sourceArrayIndex = x.sourceArrayIndex;
+                                sourceIndex = x.sourceIndex;
+                                nextSourceIndex = x.nextSourceIndex;
+                                prevSourceIndex = x.prevSourceIndex;
+                                prevLength = x.prevLength;
+                                if (doloop)
+                                    continue;
+                                else
+                                    break;
+                            }
+
+                            /* write the output character bytes from value and length */
+                            /* from the first if in the loop we know that targetCapacity>0 */
+                            if (length <= target.remaining()) {
+                                switch (length) {
+                                /* each branch falls through to the next one */
+                                case 4:
+                                    target.put((byte) (value >>> 24));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 3:
+                                    target.put((byte) (value >>> 16));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte) (value >>> 8));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 1:
+                                    target.put((byte) value);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+                            } else {
+                                int errorBufferArrayIndex;
+
+                                /*
+                                 * We actually do this backwards here: In order to save an intermediate variable, we
+                                 * output first to the overflow buffer what does not fit into the regular target.
+                                 */
+                                /* we know that 1<=targetCapacity<length<=4 */
+                                length -= target.remaining();
+
+                                errorBufferArrayIndex = 0;
+                                switch (length) {
+                                /* each branch falls through to the next one */
+                                case 3:
+                                    errorBuffer[errorBufferArrayIndex++] = (byte) (value >>> 16);
+                                case 2:
+                                    errorBuffer[errorBufferArrayIndex++] = (byte) (value >>> 8);
+                                case 1:
+                                    errorBuffer[errorBufferArrayIndex] = (byte) value;
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+                                errorBufferLength = (byte) length;
+
+                                /* now output what fits into the regular target */
+                                value >>>= 8 * length; /* length was reduced by targetCapacity */
+                                switch (target.remaining()) {
+                                /* each branch falls through to the next one */
+                                case 3:
+                                    target.put((byte) (value >>> 16));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte) (value >>> 8));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 1:
+                                    target.put((byte) value);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+
+                                /* target overflow */
+                                cr[0] = CoderResult.OVERFLOW;
+                                c = 0;
+                                break;
+                            }
+
+                            /* normal end of conversion: prepare for a new character */
+                            c = 0;
+                            if (offsets != null) {
+                                prevSourceIndex = sourceIndex;
+                                sourceIndex = nextSourceIndex;
+                            }
+                            continue;
+                        } else {
+                            /* target is full */
+                            cr[0] = CoderResult.OVERFLOW;
+                            break;
+                        }
+                    }
+                }
+
+                /*
+                 * the end of the input stream and detection of truncated input are handled by the framework, but for
+                 * EBCDIC_STATEFUL conversion we need to emit an SI at the very end
+                 * 
+                 * conditions: successful EBCDIC_STATEFUL in DBCS mode end of input and no truncated input
+                 */
+                if (outputType == MBCS_OUTPUT_2_SISO && prevLength == 2 && flush && sourceArrayIndex >= source.limit()
+                        && c == 0) {
+
+                    /* EBCDIC_STATEFUL ending with DBCS: emit an SI to return the output stream to SBCS */
+                    if (target.hasRemaining()) {
+                        target.put((byte) UConverterConstants.SI);
+                        if (offsets != null) {
+                            /* set the last source character's index (sourceIndex points at sourceLimit now) */
+                            offsets.put(prevSourceIndex);
+                        }
+                    } else {
+                        /* target is full */
+                        errorBuffer[0] = (byte) UConverterConstants.SI;
+                        errorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                    }
+                    prevLength = 1; /* we switched into SBCS */
+                }
+
+                /* set the converter state back into UConverter */
+                fromUChar32 = c;
+                fromUnicodeStatus = prevLength;
+
+                source.position(sourceArrayIndex);
+            } catch (BufferOverflowException ex) {
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            return cr[0];
+        }
+
+        /*
+         * This is another simple conversion function for internal use by other conversion implementations. It does not
+         * use the converter state nor call callbacks. It does not handle the EBCDIC swaplfnl option (set in
+         * UConverter). It handles conversion extensions but not GB 18030.
+         * 
+         * It converts one single Unicode code point into codepage bytes, encoded as one 32-bit value. The function
+         * returns the number of bytes in *pValue: 1..4 the number of bytes in *pValue 0 unassigned (*pValue undefined)
+         * -1 illegal (currently not used, *pValue undefined)
+         * 
+         * *pValue will contain the resulting bytes with the last byte in bits 7..0, the second to last byte in bits
+         * 15..8, etc. Currently, the function assumes but does not check that 0<=c<=0x10ffff.
+         */
+        int fromUChar32(int c, int[] pValue, boolean isUseFallback) {
+            // #if 0
+            // /* #if 0 because this is not currently used in ICU - reduce code, increase code coverage */
+            // const uint8_t *p;
+            // #endif
+
+            char[] table;
+            int stage2Entry;
+            int value;
+            int length;
+            int p;
+
+            /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+            if (c <= 0xffff || ((sharedData.mbcs.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY) != 0)) {
+                table = sharedData.mbcs.fromUnicodeTable;
+
+                /* convert the Unicode code point in c into codepage bytes (same as in _MBCSFromUnicodeWithOffsets) */
+                if (sharedData.mbcs.outputType == MBCS_OUTPUT_1) {
+                    value = MBCS_SINGLE_RESULT_FROM_U(table, sharedData.mbcs.fromUnicodeBytes, c);
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (isUseFallback ? value >= 0x800 : value >= 0xc00) {
+                        pValue[0] = value & 0xff;
+                        return 1;
+                    }
+                } else /* outputType!=MBCS_OUTPUT_1 */{
+                    stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                    /* get the bytes and the length for the output */
+                    switch (sharedData.mbcs.outputType) {
+                    case MBCS_OUTPUT_2:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(sharedData.mbcs.fromUnicodeBytes, stage2Entry, c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    // #if 0
+                    // /* #if 0 because this is not currently used in ICU - reduce code, increase code coverage */
+                    // case MBCS_OUTPUT_DBCS_ONLY:
+                    // /* table with single-byte results, but only DBCS mappings used */
+                    // value=MBCS_VALUE_2_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // if(value<=0xff) {
+                    // /* no mapping or SBCS result, not taken for DBCS-only */
+                    // value=stage2Entry=0; /* stage2Entry=0 to reset roundtrip flags */
+                    // length=0;
+                    // } else {
+                    // length=2;
+                    // }
+                    // break;
+                    case MBCS_OUTPUT_3:
+                        byte[] bytes = sharedData.mbcs.fromUnicodeBytes;
+                        p = CharsetMBCS.MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                        value = ((bytes[p] & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) |
+                            ((bytes[p+1] & UConverterConstants.UNSIGNED_BYTE_MASK)<<8) |
+                            (bytes[p+2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    // case MBCS_OUTPUT_4:
+                    // value=MBCS_VALUE_4_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if(value<=0xffff) {
+                    // length=2;
+                    // } else if(value<=0xffffff) {
+                    // length=3;
+                    // } else {
+                    // length=4;
+                    // }
+                    // break;
+                    // case MBCS_OUTPUT_3_EUC:
+                    // value=MBCS_VALUE_2_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // /* EUC 16-bit fixed-length representation */
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if((value&0x8000)==0) {
+                    // value|=0x8e8000;
+                    // length=3;
+                    // } else if((value&0x80)==0) {
+                    // value|=0x8f0080;
+                    // length=3;
+                    // } else {
+                    // length=2;
+                    // }
+                    // break;
+                    // case MBCS_OUTPUT_4_EUC:
+                    // p=MBCS_POINTER_3_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // value=((uint32_t)*p<<16)|((uint32_t)p[1]<<8)|p[2];
+                    // /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if(value<=0xffff) {
+                    // length=2;
+                    // } else if((value&0x800000)==0) {
+                    // value|=0x8e800000;
+                    // length=4;
+                    // } else if((value&0x8000)==0) {
+                    // value|=0x8f008000;
+                    // length=4;
+                    // } else {
+                    // length=3;
+                    // }
+                    // break;
+                    // #endif
+                    default:
+                        /* must not occur */
+                        return -1;
+                    }
+
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c)
+                            || (CharsetEncoderICU.isFromUUseFallback(isUseFallback, c) && value != 0)) {
+                        /*
+                         * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way with
+                         * this data structure for fallback output to be a zero byte.
+                         */
+                        /* assigned */
+                        pValue[0] = value;
+                        return length;
+                    }
+                }
+            }
+
+            if (sharedData.mbcs.extIndexes != null) {
+                length = simpleMatchFromU(c, pValue, isUseFallback);
+                return length >= 0 ? length : -length; /* return abs(length); */
+            }
+
+            /* unassigned */
+            return 0;
+        }
+
+        /*
+         * continue partial match with new input, requires cnv->preFromUFirstCP>=0 never called for simple,
+         * single-character conversion
+         */
+        private CoderResult continueMatchFromU(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush,
+                int srcIndex) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int[] value = new int[1];
+            int match;
+
+            match = matchFromU(preFromUFirstCP, preFromUArray, preFromUBegin, preFromULength, source, value, useFallback, flush);
+            if (match >= 2) {
+                match -= 2; /* remove 2 for the initial code point */
+
+                if (match >= preFromULength) {
+                    /* advance src pointer for the consumed input */
+                    source.position(source.position() + match - preFromULength);
+                    preFromULength = 0;
+                } else {
+                    /* the match did not use all of preFromU[] - keep the rest for replay */
+                    int length = preFromULength - match;
+                    System.arraycopy(preFromUArray, preFromUBegin + match, preFromUArray, preFromUBegin, length);
+                    preFromULength = (byte) -length;
+                }
+
+                /* finish the partial match */
+                preFromUFirstCP = UConverterConstants.U_SENTINEL;
+
+                /* write result */
+                writeFromU(value[0], target, offsets, srcIndex);
+            } else if (match < 0) {
+                /* save state for partial match */
+                int sArrayIndex;
+                int j;
+
+                /* just _append_ the newly consumed input to preFromU[] */
+                sArrayIndex = source.position();
+                match = -match - 2; /* remove 2 for the initial code point */
+                for (j = preFromULength; j < match; ++j) {
+                    preFromUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preFromULength = (byte) match;
+            } else { /* match==0 or 1 */
+                /*
+                 * no match
+                 * 
+                 * We need to split the previous input into two parts:
+                 * 
+                 * 1. The first code point is unmappable - that's how we got into trying the extension data in the first
+                 * place. We need to move it from the preFromU buffer to the error buffer, set an error code, and
+                 * prepare the rest of the previous input for 2.
+                 * 
+                 * 2. The rest of the previous input must be converted once we come back from the callback for the first
+                 * code point. At that time, we have to try again from scratch to convert these input characters. The
+                 * replay will be handled by the ucnv.c conversion code.
+                 */
+
+                if (match == 1) {
+                    /* matched, no mapping but request for <subchar1> */
+                    useSubChar1 = true;
+                }
+
+                /* move the first code point to the error field */
+                fromUChar32 = preFromUFirstCP;
+                preFromUFirstCP = UConverterConstants.U_SENTINEL;
+
+                /* mark preFromU for replay */
+                preFromULength = (byte) -preFromULength;
+
+                /* set the error code for unassigned */
+                // TODO: figure out what the unmappable length really should be
+                cr = CoderResult.unmappableForLength(1);
+            }
+            return cr;
+        }
+
+        /**
+         * @param cx
+         *            pointer to extension data; if NULL, returns 0
+         * @param firstCP
+         *            the first code point before all the other UChars
+         * @param pre
+         *            UChars that must match; !initialMatch: partial match with them
+         * @param preLength
+         *            length of pre, >=0
+         * @param src
+         *            UChars that can be used to complete a match
+         * @param srcLength
+         *            length of src, >=0
+         * @param pMatchValue
+         *            [out] output result value for the match from the data structure
+         * @param useFallback
+         *            "use fallback" flag, usually from cnv->useFallback
+         * @param flush
+         *            TRUE if the end of the input stream is reached
+         * @return >1: matched, return value=total match length (number of input units matched) 1: matched, no mapping
+         *         but request for <subchar1> (only for the first code point) 0: no match <0: partial match, return
+         *         value=negative total match length (partial matches are never returned for flush==TRUE) (partial
+         *         matches are never returned as being longer than UCNV_EXT_MAX_UCHARS) the matchLength is 2 if only
+         *         firstCP matched, and >2 if firstCP and further code units matched
+         */
+        // static int32_t ucnv_extMatchFromU(const int32_t *cx, UChar32 firstCP, const UChar *pre, int32_t preLength,
+        // const UChar *src, int32_t srcLength, uint32_t *pMatchValue, UBool useFallback, UBool flush)
+        private int matchFromU(int firstCP, char[] preArray, int preArrayBegin, int preLength, CharBuffer source,
+                int[] pMatchValue, boolean isUseFallback, boolean flush) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+
+            CharBuffer stage12, stage3;
+            IntBuffer stage3b;
+
+            CharBuffer fromUTableUChars, fromUSectionUChars;
+            IntBuffer fromUTableValues, fromUSectionValues;
+
+            int value, matchValue;
+            int i, j, index, length, matchLength;
+            char c;
+
+            if (cx == null) {
+                return 0; /* no extension data, no match */
+            }
+
+            /* trie lookup of firstCP */
+            index = firstCP >>> 10; /* stage 1 index */
+            if (index >= cx.asIntBuffer().get(EXT_FROM_U_STAGE_1_LENGTH)) {
+                return 0; /* the first code point is outside the trie */
+            }
+
+            stage12 = (CharBuffer) ARRAY(cx, EXT_FROM_U_STAGE_12_INDEX, char.class);
+            stage3 = (CharBuffer) ARRAY(cx, EXT_FROM_U_STAGE_3_INDEX, char.class);
+            index = FROM_U(stage12, stage3, index, firstCP);
+
+            stage3b = (IntBuffer) ARRAY(cx, EXT_FROM_U_STAGE_3B_INDEX, int.class);
+            value = stage3b.get(stage3b.position() + index);
+            if (value == 0) {
+                return 0;
+            }
+
+            if (TO_U_IS_PARTIAL(value)) {
+                /* partial match, enter the loop below */
+                index = FROM_U_GET_PARTIAL_INDEX(value);
+
+                /* initialize */
+                fromUTableUChars = (CharBuffer) ARRAY(cx, EXT_FROM_U_UCHARS_INDEX, char.class);
+                fromUTableValues = (IntBuffer) ARRAY(cx, EXT_FROM_U_VALUES_INDEX, int.class);
+
+                matchValue = 0;
+                i = j = matchLength = 0;
+
+                /* we must not remember fallback matches when not using fallbacks */
+
+                /* match input units until there is a full match or the input is consumed */
+                for (;;) {
+                    /* go to the next section */
+                    int oldpos = fromUTableUChars.position();
+                    fromUSectionUChars = ((CharBuffer) fromUTableUChars.position(index)).slice();
+                    fromUTableUChars.position(oldpos);
+                    oldpos = fromUTableValues.position();
+                    fromUSectionValues = ((IntBuffer) fromUTableValues.position(index)).slice();
+                    fromUTableValues.position(oldpos);
+
+                    /* read first pair of the section */
+                    length = fromUSectionUChars.get();
+                    value = fromUSectionValues.get();
+                    if (value != 0 && (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP))) {
+                        /* remember longest match so far */
+                        matchValue = value;
+                        matchLength = 2 + i + j;
+                    }
+
+                    /* match pre[] then src[] */
+                    if (i < preLength) {
+                        c = preArray[preArrayBegin + i++];
+                    } else if (source != null && j < source.remaining()) {
+                        c = source.get(source.position() + j++);
+                    } else {
+                        /* all input consumed, partial match */
+                        if (flush || (length = (i + j)) > MAX_UCHARS) {
+                            /*
+                             * end of the entire input stream, stop with the longest match so far or: partial match must
+                             * not be longer than UCNV_EXT_MAX_UCHARS because it must fit into state buffers
+                             */
+                            break;
+                        } else {
+                            /* continue with more input next time */
+                            return -(2 + length);
+                        }
+                    }
+
+                    /* search for the current UChar */
+                    index = findFromU(fromUSectionUChars, length, c);
+                    if (index < 0) {
+                        /* no match here, stop with the longest match so far */
+                        break;
+                    } else {
+                        value = fromUSectionValues.get(fromUSectionValues.position() + index);
+                        if (FROM_U_IS_PARTIAL(value)) {
+                            /* partial match, continue */
+                            index = FROM_U_GET_PARTIAL_INDEX(value);
+                        } else {
+                            if (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP)) {
+                                /* full match, stop with result */
+                                matchValue = value;
+                                matchLength = 2 + i + j;
+                            } else {
+                                /* full match on fallback not taken, stop with the longest match so far */
+                            }
+                            break;
+                        }
+                    }
+                }
+
+                if (matchLength == 0) {
+                    /* no match at all */
+                    return 0;
+                }
+            } else /* result from firstCP trie lookup */{
+                if (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP)) {
+                    /* full match, stop with result */
+                    matchValue = value;
+                    matchLength = 2;
+                } else {
+                    /* fallback not taken */
+                    return 0;
+                }
+            }
+
+            if ((matchValue & FROM_U_RESERVED_MASK) != 0) {
+                /* do not interpret values with reserved bits used, for forward compatibility */
+                return 0;
+            }
+
+            /* return result */
+            if (matchValue == FROM_U_SUBCHAR1) {
+                return 1; /* assert matchLength==2 */
+            }
+
+            pMatchValue[0] = FROM_U_MASK_ROUNDTRIP(matchValue);
+            return matchLength;
+        }
+
+        private int simpleMatchFromU(int cp, int[] pValue, boolean isUseFallback) {
+            int[] value = new int[1];
+            int match; // signed
+
+            /* try to match */
+            match = matchFromU(cp, null, 0, 0, null, value, isUseFallback, true);
+            if (match >= 2) {
+                /* write result for simple, single-character conversion */
+                int length;
+                boolean isRoundtrip;
+
+                isRoundtrip = FROM_U_IS_ROUNDTRIP(value[0]);
+                length = FROM_U_GET_LENGTH(value[0]);
+                value[0] = FROM_U_GET_DATA(value[0]);
+
+                if (length <= EXT_FROM_U_MAX_DIRECT_LENGTH) {
+                    pValue[0] = value[0];
+                    return isRoundtrip ? length : -length;
+                    // #if 0 /* not currently used */
+                    // } else if(length==4) {
+                    // /* de-serialize a 4-byte result */
+                    // const uint8_t *result=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_BYTES_INDEX, uint8_t)+value;
+                    // *pValue=
+                    // ((uint32_t)result[0]<<24)|
+                    // ((uint32_t)result[1]<<16)|
+                    // ((uint32_t)result[2]<<8)|
+                    // result[3];
+                    // return isRoundtrip ? 4 : -4;
+                    // #endif
+                }
+            }
+
+            /*
+             * return no match because - match>1 && resultLength>4: result too long for simple conversion - match==1: no
+             * match found, <subchar1> preferred - match==0: no match found in the first place - match<0: partial
+             * match, not supported for simple conversion (and flush==TRUE)
+             */
+            return 0;
+        }
+
+        private CoderResult writeFromU(int value, ByteBuffer target, IntBuffer offsets, int srcIndex) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+
+            byte bufferArray[] = new byte[1 + MAX_BYTES];
+            int bufferArrayIndex = 0;
+            byte[] resultArray;
+            int resultArrayIndex;
+            int length, prevLength;
+
+            length = FROM_U_GET_LENGTH(value);
+            value = FROM_U_GET_DATA(value);
+
+            /* output the result */
+            if (length <= FROM_U_MAX_DIRECT_LENGTH) {
+                /*
+                 * Generate a byte array and then write it below. This is not the fastest possible way, but it should be
+                 * ok for extension mappings, and it is much simpler. Offset and overflow handling are only done once
+                 * this way.
+                 */
+                int p = bufferArrayIndex + 1; /* reserve buffer[0] for shiftByte below */
+                switch (length) {
+                case 3:
+                    bufferArray[p++] = (byte) (value >>> 16);
+                case 2:
+                    bufferArray[p++] = (byte) (value >>> 8);
+                case 1:
+                    bufferArray[p++] = (byte) value;
+                default:
+                    break; /* will never occur */
+                }
+                resultArray = bufferArray;
+                resultArrayIndex = bufferArrayIndex + 1;
+            } else {
+                byte[] slice = new byte[length];
+
+                ByteBuffer bb = ((ByteBuffer) ARRAY(cx, EXT_FROM_U_BYTES_INDEX, byte.class));
+                bb.position(value);
+                bb.get(slice, 0, slice.length);
+
+                resultArray = slice;
+                resultArrayIndex = 0;
+            }
+
+            /* with correct data we have length>0 */
+
+            if ((prevLength = (int) fromUnicodeStatus) != 0) {
+                /* handle SI/SO stateful output */
+                byte shiftByte;
+
+                if (prevLength > 1 && length == 1) {
+                    /* change from double-byte mode to single-byte */
+                    shiftByte = (byte) UConverterConstants.SI;
+                    fromUnicodeStatus = 1;
+                } else if (prevLength == 1 && length > 1) {
+                    /* change from single-byte mode to double-byte */
+                    shiftByte = (byte) UConverterConstants.SO;
+                    fromUnicodeStatus = 2;
+                } else {
+                    shiftByte = 0;
+                }
+
+                if (shiftByte != 0) {
+                    /* prepend the shift byte to the result bytes */
+                    bufferArray[0] = shiftByte;
+                    if (resultArray != bufferArray || resultArrayIndex != bufferArrayIndex + 1) {
+                        System.arraycopy(resultArray, resultArrayIndex, bufferArray, bufferArrayIndex + 1, length);
+                    }
+                    resultArray = bufferArray;
+                    resultArrayIndex = bufferArrayIndex;
+                    ++length;
+                }
+            }
+
+            return fromUWriteBytes(this, resultArray, resultArrayIndex, length, target, offsets, srcIndex);
+        }
+
+        /*
+         * @return if(U_FAILURE) return the code point for cnv->fromUChar32 else return 0 after output has been written
+         * to the target
+         */
+        private int fromU(int cp_, CharBuffer source, ByteBuffer target, IntBuffer offsets, int sourceIndex,
+                int length, boolean flush, CoderResult[] cr) {
+            // ByteBuffer cx;
+            long cp = cp_ & UConverterConstants.UNSIGNED_INT_MASK;
+
+            useSubChar1 = false;
+
+            if (sharedData.mbcs.extIndexes != null
+                    && initialMatchFromU((int) cp, source, target, offsets, sourceIndex, flush, cr)) {
+                return 0; /* an extension mapping handled the input */
+            }
+
+            /* GB 18030 */
+            if ((options & MBCS_OPTION_GB18030) != 0) {
+                long[] range;
+                int i;
+
+                for (i = 0; i < gb18030Ranges.length; ++i) {
+                    range = gb18030Ranges[i];
+                    if (range[0] <= cp && cp <= range[1]) {
+                        /* found the Unicode code point, output the four-byte sequence for it */
+                        long linear;
+                        byte bytes[] = new byte[4];
+
+                        /* get the linear value of the first GB 18030 code in this range */
+                        linear = range[2] - LINEAR_18030_BASE;
+
+                        /* add the offset from the beginning of the range */
+                        linear += (cp - range[0]);
+
+                        bytes[3] = (byte) (0x30 + linear % 10);
+                        linear /= 10;
+                        bytes[2] = (byte) (0x81 + linear % 126);
+                        linear /= 126;
+                        bytes[1] = (byte) (0x30 + linear % 10);
+                        linear /= 10;
+                        bytes[0] = (byte) (0x81 + linear);
+
+                        /* output this sequence */
+                        cr[0] = fromUWriteBytes(this, bytes, 0, 4, target, offsets, sourceIndex);
+                        return 0;
+                    }
+                }
+            }
+
+            /* no mapping */
+            cr[0] = CoderResult.unmappableForLength(length);
+            return (int) cp;
+        }
+
+        /*
+         * target<targetLimit; set error code for overflow
+         */
+        private boolean initialMatchFromU(int cp, CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                int srcIndex, boolean flush, CoderResult[] cr) {
+            int[] value = new int[1];
+            int match;
+
+            /* try to match */
+            match = matchFromU(cp, null, 0, 0, source, value, useFallback, flush);
+
+            /* reject a match if the result is a single byte for DBCS-only */
+            if (match >= 2
+                    && !(FROM_U_GET_LENGTH(value[0]) == 1 && sharedData.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY)) {
+                /* advance src pointer for the consumed input */
+                source.position(source.position() + match - 2); /* remove 2 for the initial code point */
+
+                /* write result to target */
+                cr[0] = writeFromU(value[0], target, offsets, srcIndex);
+                return true;
+            } else if (match < 0) {
+                /* save state for partial match */
+                int sArrayIndex;
+                int j;
+
+                /* copy the first code point */
+                preFromUFirstCP = cp;
+
+                /* now copy the newly consumed input */
+                sArrayIndex = source.position();
+                match = -match - 2; /* remove 2 for the initial code point */
+                for (j = 0; j < match; ++j) {
+                    preFromUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preFromULength = (byte) match;
+                return true;
+            } else if (match == 1) {
+                /* matched, no mapping but request for <subchar1> */
+                useSubChar1 = true;
+                return false;
+            } else /* match==0 no match */{
+                return false;
+            }
+        }
+        
+        CoderResult cnvMBCSFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            
+            char[] table;
+            int p;
+            ByteBuffer bytes;
+            short outputType;
+            
+            SideEffects x = new SideEffects(0, 0, 0, 0, 0, 0);
+            
+            int targetCapacity = target.limit() - target.position();
+            
+            int stage2Entry = 0;
+            //int asciiRoundtrips;
+            long value;
+            int length = 0;
+            int uniMask;
+            
+            boolean doLoop = true;
+            boolean gotoGetTrail = false;
+            
+            if (preFromUFirstCP >= 0) {
+                /*
+                 * pass sourceIndex=-1 because we continue from an earlier buffer
+                 * in the future, this may change with continuous offsets.
+                 */
+                cr[0] = continueMatchFromU(source, target, offsets, flush, -1);
+                if (cr[0].isError() || preFromULength < 0) {
+                    return cr[0];
+                }
+            }
+            
+            /* use optimized function if possible */
+            outputType = sharedData.mbcs.outputType;
+            uniMask = sharedData.mbcs.unicodeMask;
+            if (outputType == MBCS_OUTPUT_1 && ((uniMask&UConverterConstants.HAS_SURROGATES) == 0)) {
+                if ((uniMask&UConverterConstants.HAS_SURROGATES) == 0) {
+                    cr[0] = cnvMBCSSingleFromBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleFromUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }/* else if (outputType == MBCS_OUTPUT_2 && mbcs.sharedData.mbcs.utf8Friendly) {
+                cr[0] = cnvMBCSDoubleFromUnicodeWithOffsets(source, target, offsets, flush);
+                return cr[0];
+            }*/
+            
+            table = sharedData.mbcs.fromUnicodeTable;
+            /* if (mbcs.sharedData.mbcs.utf8Friendly) {
+                mbcsIndex = mbcs.sharedData.mbcs.mbcsIndex;
+            } else {
+                mbcsIndex = null;
+            } */
+            
+            if ((options&UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                bytes = ByteBuffer.wrap(sharedData.mbcs.swapLFNLFromUnicodeBytes);
+            } else {
+                bytes = ByteBuffer.wrap(sharedData.mbcs.fromUnicodeBytes);
+            }
+            //asciiRoundtrips = mbcs.sharedData.mbcs.asciiRoundtrips;
+            
+            /* get the converter state from UConverter */
+            x.c = fromUChar32;
+            if (outputType == MBCS_OUTPUT_2_SISO) {
+                x.prevLength = fromUnicodeStatus;
+                if (x.prevLength == 0) {
+                    /* set the real value */
+                    x.prevLength = 1;
+                }
+            } else {
+                /* prevent fromUnicodeStatus from being set to something non-0 */
+                x.prevLength = 0;
+            }
+            
+            /* sourceIndex = -1 if the current character began in the previous buffer */
+            x.prevSourceIndex = -1;
+            x.sourceIndex = x.c==0 ? 0 : -1;
+            x.nextSourceIndex = 0;
+            
+            /* conversion loop */
+            if (x.c != 0 && targetCapacity > 0) {
+                gotoGetTrail = true; // set gotoGetTrail flag and go to gotoGetTrail label
+            }
+            
+            while (gotoGetTrail || source.hasRemaining()) {
+                /*
+                 * This following test is to see if available input would overflow the output.
+                 * It does not catch output of more than one byte that
+                 * overflows as a result of a multi-byte character or callback output
+                 * from the last source character.
+                 * Therefore, those situations also test for overflows and will
+                 * then break the loop, too.
+                 */
+                if (gotoGetTrail || targetCapacity > 0) {
+                    /*
+                     * Get a correct Unicode code point:
+                     * a single UChar for a BMP code point or 
+                     * a matched surrogate pair for a "supplementary code point."
+                     */
+                    if (!gotoGetTrail) {
+                        x.c = source.get();
+                        ++x.nextSourceIndex;
+                        /* This is commented out because of the fact that IS_ASCII_ROUNDTRIP is not
+                         * being used in ICU4J.
+                         */
+                        /*if (x.c <= 0x7f && IS_ASCII_ROUNDTRIP(c, asciiRoundtrips)) {
+                            target.put((byte)x.c);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                                x.prevSourceIndex = x.sourceIndex;
+                                x.sourceIndex = x.nextSourceIndex;
+                            }
+                            targetCapacity--;
+                            x.c = 0;
+                            continue;
+                        }*/
+                    }
+                  /* Code to use utf8friendly code was removed since it is not needed in Java. */
+                    /* This also tests if the codepage maps single surrogates.
+                     * If it does, then surrogates are not paired but mapped separately.
+                     * Note that in this case unmatched surrogates are not detected.
+                     */
+                    if (gotoGetTrail || (UTF16.isSurrogate((char)x.c) && (uniMask&UConverterConstants.HAS_SURROGATES) == 0)) {
+                        if (gotoGetTrail || (UTF16.isLeadSurrogate((char)x.c))) {
+// getTrail label
+                            gotoGetTrail = false; // reset gotoGetTrail flag
+                            
+                            x.sourceArrayIndex = source.position();
+                            
+                            doLoop = getTrail(source, target, uniMask, x, flush, cr);
+                            if (x.doread && doLoop) {
+                                continue;
+                            } else if (!x.doread && !doLoop) {
+                                break;
+                            } else if (!doLoop) {
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            cr[0] = CoderResult.malformedForLength(1);
+                            break;
+                        }
+                    }
+                    
+                    /* convert the Unicode point in c into codepage bytes */
+                    /*
+                     * The basic lookup is a triple-stage compact array (trie) lookup.
+                     * 
+                     * Single-byte codepages are handled with a different data structure
+                     * by _MBCSSingle... functions.
+                     * 
+                     * The result consists of a 32-bit value from stage 2 and
+                     * a pointer to as many bytes as are stored per character.
+                     * The pointer points to the character's bytes in stage 3.
+                     * Bits 15..0 of the stage 2 entry contain the stage 3 index
+                     * for that pointer, while bits 31..16 are flags for which of
+                     * the 16 characters in the block are roundtrip-assigned.
+                     * 
+                     * For 2-byte and 4 byte codepages, the bytes are stored as uint16_t
+                     * respectively as uint32_t, in the platform encoding.
+                     * For 3-byte codepages, the bytes are always stored in big-endian order.
+                     * 
+                     * For EUC encodings that use only either 0x8e or 0x8f as the first
+                     * byte of their longest byte sequences, the first two bytes in 
+                     * this third stage indicate with their 7th bits whether these bytes
+                     * are to be writeen directly or actually need to be preceeded by
+                     * one of the two Single-Shift codes. With this, the third stage
+                     * stores one byte fewer per character than the actual maximum length of
+                     * EUC byte sequences.
+                     * 
+                     * Other than that, leading zero bytes are removed and the other
+                     * bytes output. A single zero byte may be ouput if the "assigned"
+                     * bit in stage 2 was on.
+                     * The data structure does not support zero byte output as a fallback,
+                     * and also does not allow output of leading zeros.
+                     */
+                    stage2Entry = MBCS_STAGE_2_FROM_U(table, x.c);
+                    
+                    /* get the bytes and the length for the output */
+                    switch (outputType) {
+                    case MBCS_OUTPUT_2:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_2_SISO:
+                        /* 1/2-byte stateful with Shift-In/Shift-Out */
+                        /*
+                         * Save the old state in the converter object
+                         * right here, then change the local pervLength state variable if necessary.
+                         * Then, if this character turns out to be unassigned or a fallback that
+                         * is not taken, the callback code must not save the new state in the converter
+                         * because the new state is for a character that is not output.
+                         * However, the callback must still restore the state from the converter
+                         * in case the callback function changed it for its output.
+                         */
+                        fromUnicodeStatus = x.prevLength; /* save the old state */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            if (value == 0 && MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, x.c)) {
+                                /* no mapping, leave value == 0 */
+                                length = 0;
+                            } else if (x.prevLength <= 1) {
+                                length = 1;
+                            } else {
+                                /* change from double-byte mode to single-byte */
+                                value |= UConverterConstants.UNSIGNED_INT_MASK & (UConverterConstants.SI<<8);
+                                length = 2;
+                                x.prevLength = 1;
+                            }
+                        } else {
+                            if (x.prevLength == 2) {
+                                length = 2;
+                            } else {
+                                /* change from single-byte mode to double-byte */
+                                value |= UConverterConstants.UNSIGNED_INT_MASK & (UConverterConstants.SO<<16);
+                                length = 3;
+                                x.prevLength = 2;
+                            }
+                        }
+                        break;
+                    case MBCS_OUTPUT_DBCS_ONLY:
+                        /* table with single-byte results, but only DBCS mappings used */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            /* no mapping or SBCS result, not taken for DBCS-only */
+                            value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                            length = 0;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_3:
+                        p = MBCS_POINTER_3_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        value = UConverterConstants.UNSIGNED_INT_MASK&((int)bytes.get(p)<<16 | (int)bytes.get(p+1)<<8 | bytes.get(p+2));
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    case MBCS_OUTPUT_4:
+                        value = MBCS_VALUE_4_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else if (value <= 0xffffff) {
+                            length = 3;
+                        } else {
+                            length = 4;
+                        }
+                        break;
+                    case MBCS_OUTPUT_3_EUC:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        /* EUC 16-bit fixed-length representation */
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if ((value&0x8000) == 0) {
+                            value |= 0x8e8000;
+                            length = 3;
+                        } else if ((value&0x80) == 0) {
+                            value |= 0x8f0080;
+                            length = 3;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_4_EUC:
+                        p = MBCS_POINTER_3_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        value = UConverterConstants.UNSIGNED_INT_MASK&((int)bytes.get(p)<<16 | (int)bytes.get(p+1)<<8 | bytes.get(p+2));
+                        /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else if ((value&0x800000) == 0) {
+                            value |= 0x08e800000;
+                            length = 4;
+                        } else if ((value&0x8000) == 0) {
+                            value |= 0x08f008000;
+                            length = 4;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    default :
+                        /* must not occur */
+                        value = stage2Entry = 0;
+                        length = 0;
+                        break;
+                    }
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, x.c)) || 
+                            (CharsetEncoderICU.isFromUUseFallback(useFallback, x.c) && value != 0)) {
+                        /*
+                         * We allow a 0 byte output if the "assigned" bit is set for this entry.
+                         * There is no way with this data structure for fallback output
+                         * to be a zero byte.
+                         */
+// unassigned label 
+                        int currentSourcePos = source.position();
+                        doLoop = unassigned(source, target, offsets, x, flush, cr);
+                        if (doLoop) {
+                            continue;
+                        } else {
+                            if (source.position() < currentSourcePos) {
+                                source.position(currentSourcePos);
+                            }
+                            break;
+                        }
+                    }
+                    
+                    /* write the output character bytes from value and length */
+                    /* from the first if in the loop we know that targetCapacity>0 */
+                    if (length <= targetCapacity) {
+                        switch (length) {
+                        /* each branch falls through to the next one */
+                        case 4:
+                            target.put((byte)(value>>24));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 3:
+                            target.put((byte)(value>>16));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(value>>8));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)value);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        
+                        targetCapacity -= length;
+                    } else {
+                        /*
+                         * We actually do this backwards here:
+                         * In order to save an intermediate variable, we output
+                         * first to the overflow buffer what does not fit into the
+                         * regular target.
+                         */
+                        /* we know that 1<=targetCapacity<length<=4 */
+                        length -= targetCapacity;
+                        int i = 0; // index for errorBuffer
+                        switch (length) {
+                            /* each branch falls through to the next one */
+                        case 3:
+                            errorBuffer[i++] = (byte)(value>>16);
+                        case 2:
+                            errorBuffer[i++] = (byte)(value>>8);
+                        case 1:
+                            errorBuffer[i++] = (byte)value;
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        errorBufferLength = length;
+                        
+                        /* now output what fits into the regular target */
+                        value>>=8*length; /* length was reduced by targetCapacity */
+                        switch (targetCapacity) {
+                            /* each branch falls through to the next one */
+                        case 3:
+                            target.put((byte)(value>>16));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(value>>8));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)value);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        
+                        /* target overflow */
+                        targetCapacity = 0;
+                        cr[0] = CoderResult.OVERFLOW;
+                        x.c = 0;
+                        break;
+                    }
+                    
+                    /* normal end of conversion: prepare for a new character */
+                    x.c = 0;
+                    if (offsets != null) {
+                        x.prevSourceIndex = x.sourceIndex;
+                        x.sourceIndex = x.nextSourceIndex;
+                    }
+                    continue;
+                } else {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for EBCDIC_STATEFUL conversion
+             * we need to emit an SI at the very end
+             * 
+             * conditions:
+             *  successful
+             *  EBCDIC_STATEFUL in DBCS mode
+             *  end of input and no truncated input
+             */
+            if (!cr[0].isError() && outputType == MBCS_OUTPUT_2_SISO && x.prevLength == 2 && flush && !source.hasRemaining() && x.c == 0) {
+                /* EBCDIC_STATEFUL ending with DBCS: emit an SI to return the output stream to SBCS */
+                if (targetCapacity > 0) {
+                    target.put((byte)UConverterConstants.SI);
+                    if (offsets != null) {
+                        /* set the last source character's index (sourceIndex points at sourceLimit now) */
+                        offsets.put(x.prevSourceIndex);
+                    }
+                } else {
+                    /* target is full */
+                    errorBuffer[0] = UConverterConstants.SI;
+                    errorBufferLength = 1;
+                    cr[0] = CoderResult.OVERFLOW;
+                }
+                x.prevLength = 1; /* we switched into SBCS */
+            }
+            /* set the converter state back into UConverter */
+            fromUChar32 = x.c;
+            fromUnicodeStatus = x.prevLength;
+            
+            return cr[0];
+        }
+
+        /*
+         * This version of ucnv_MBCSFromUnicode() is optimized for single-byte codepages that map only to and from the
+         * BMP. In addition to single-byte/state optimizations, the offset calculations become much easier.
+         */
+        private CoderResult cnvMBCSSingleFromBMPWithOffsets(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex, lastSource;
+            int targetCapacity, length;
+            char[] table;
+            byte[] results;
+
+            int c, sourceIndex;
+            char value, minValue;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+            targetCapacity = target.remaining();
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                results = sharedData.mbcs.swapLFNLFromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes
+                // be a ByteBuffer so results can be a 16-bit view
+                // of it?
+            } else {
+                results = sharedData.mbcs.fromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes be a
+                // ByteBuffer so results can be a 16-bit view of it?
+            }
+
+            if (useFallback) {
+                /* use all roundtrip and fallback results */
+                minValue = 0x800;
+            } else {
+                /* use only roundtrips and fallbacks from private-use characters */
+                minValue = 0xc00;
+            }
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            lastSource = sourceArrayIndex;
+
+            /*
+             * since the conversion here is 1:1 UChar:uint8_t, we need only one counter for the minimum of the
+             * sourceLength and targetCapacity
+             */
+            length = source.limit() - sourceArrayIndex;
+            if (length < targetCapacity) {
+                targetCapacity = length;
+            }
+
+            boolean doloop = true;
+            if (c != 0 && targetCapacity > 0) {
+                SideEffectsSingleBMP x = new SideEffectsSingleBMP(c, sourceArrayIndex);
+                doloop = getTrailSingleBMP(source, x, cr);
+                c = x.c;
+                sourceArrayIndex = x.sourceArrayIndex;
+            }
+
+            if (doloop) {
+                while (targetCapacity > 0) {
+                    /*
+                     * Get a correct Unicode code point: a single UChar for a BMP code point or a matched surrogate pair
+                     * for a "supplementary code point".
+                     */
+                    c = source.get(sourceArrayIndex++);
+                    /*
+                     * Do not immediately check for single surrogates: Assume that they are unassigned and check for
+                     * them in that case. This speeds up the conversion of assigned characters.
+                     */
+                    /* convert the Unicode code point in c into codepage bytes */
+                    value = MBCS_SINGLE_RESULT_FROM_U(table, results, c);
+
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (value >= minValue) {
+                        /* assigned, write the output character bytes from value and length */
+                        /* length==1 */
+                        /* this is easy because we know that there is enough space */
+                        target.put((byte) value);
+                        --targetCapacity;
+
+                        /* normal end of conversion: prepare for a new character */
+                        c = 0;
+                        continue;
+                    } else if (!UTF16.isSurrogate((char) c)) {
+                        /* normal, unassigned BMP character */
+                    } else if (UTF16.isLeadSurrogate((char) c)) {
+                        // getTrail:
+                        SideEffectsSingleBMP x = new SideEffectsSingleBMP(c, sourceArrayIndex);
+                        doloop = getTrailSingleBMP(source, x, cr);
+                        c = x.c;
+                        sourceArrayIndex = x.sourceArrayIndex;
+                        if (!doloop)
+                            break;
+                    } else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                        break;
+                    }
+
+                    /* c does not have a mapping */
+
+                    /* get the number of code units for c to correctly advance sourceIndex */
+                    length = UTF16.getCharCount(c);
+
+                    /* set offsets since the start or the last extension */
+                    if (offsets != null) {
+                        int count = sourceArrayIndex - lastSource;
+
+                        /* do not set the offset for this character */
+                        count -= length;
+
+                        while (count > 0) {
+                            offsets.put(sourceIndex++);
+                            --count;
+                        }
+                        /* offsets and sourceIndex are now set for the current character */
+                    }
+
+                    /* try an extension mapping */
+                    lastSource = sourceArrayIndex;
+                    source.position(sourceArrayIndex);
+                    c = fromU(c, source, target, offsets, sourceIndex, length, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += length + (sourceArrayIndex - lastSource);
+                    lastSource = sourceArrayIndex;
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    } else {
+                        /* a mapping was written to the target, continue */
+
+                        /* recalculate the targetCapacity after an extension mapping */
+                        targetCapacity = target.remaining();
+                        length = source.limit() - sourceArrayIndex;
+                        if (length < targetCapacity) {
+                            targetCapacity = length;
+                        }
+                    }
+                }
+            }
+
+            if (sourceArrayIndex < source.limit() && !target.hasRemaining()) {
+                /* target is full */
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            /* set offsets since the start or the last callback */
+            if (offsets != null) {
+                int count = sourceArrayIndex - lastSource;
+                while (count > 0) {
+                    offsets.put(sourceIndex++);
+                    --count;
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of ucnv_MBCSFromUnicodeWithOffsets() is optimized for single-byte codepages. */
+        private CoderResult cnvMBCSSingleFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target,
+                IntBuffer offsets, boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+
+            char[] table;
+            byte[] results; // agljport:comment results is used to to get 16-bit values out of byte[] array
+
+            int c;
+            int sourceIndex, nextSourceIndex;
+
+            char value, minValue;
+
+            /* set up the local pointers */
+            short uniMask;
+            sourceArrayIndex = source.position();
+
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                results = sharedData.mbcs.swapLFNLFromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes
+                // be a ByteBuffer so results can be a 16-bit view
+                // of it?
+            } else {
+                results = sharedData.mbcs.fromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes be a
+                // ByteBuffer so results can be a 16-bit view of it?
+            }
+
+            if (useFallback) {
+                /* use all roundtrip and fallback results */
+                minValue = 0x800;
+            } else {
+                /* use only roundtrips and fallbacks from private-use characters */
+                minValue = 0xc00;
+            }
+            // agljport:comment hasSupplementary only used in getTrail block which now simply repeats the mask operation
+            uniMask = sharedData.mbcs.unicodeMask;
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            boolean doloop = true;
+            boolean doread = true;
+            if (c != 0 && target.hasRemaining()) {
+                if (UTF16.isLeadSurrogate((char) c)) {
+                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex, nextSourceIndex);
+                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                    doread = x.doread;
+                    c = x.c;
+                    sourceArrayIndex = x.sourceArrayIndex;
+                    sourceIndex = x.sourceIndex;
+                    nextSourceIndex = x.nextSourceIndex;
+                } else {
+                    doread = false;
+                }
+            }
+
+            if (doloop) {
+                while (!doread || sourceArrayIndex < source.limit()) {
+                    /*
+                     * This following test is to see if available input would overflow the output. It does not catch
+                     * output of more than one byte that overflows as a result of a multi-byte character or callback
+                     * output from the last source character. Therefore, those situations also test for overflows and
+                     * will then break the loop, too.
+                     */
+                    if (target.hasRemaining()) {
+                        /*
+                         * Get a correct Unicode code point: a single UChar for a BMP code point or a matched surrogate
+                         * pair for a "supplementary code point".
+                         */
+
+                        if (doread) {
+                            c = source.get(sourceArrayIndex++);
+                            ++nextSourceIndex;
+                            if (UTF16.isSurrogate((char) c)) {
+                                if (UTF16.isLeadSurrogate((char) c)) {
+                                    // getTrail:
+                                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                            nextSourceIndex);
+                                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                                    c = x.c;
+                                    sourceArrayIndex = x.sourceArrayIndex;
+                                    sourceIndex = x.sourceIndex;
+                                    nextSourceIndex = x.nextSourceIndex;
+                                    if (x.doread) {
+                                        if (doloop)
+                                            continue;
+                                        else
+                                            break;
+                                    }
+                                } else {
+                                    /* this is an unmatched trail code unit (2nd surrogate) */
+                                    /* callback(illegal) */
+                                    cr[0] = CoderResult.malformedForLength(1);
+                                    break;
+                                }
+                            }
+                        } else {
+                            doread = true;
+                        }
+
+                        /* convert the Unicode code point in c into codepage bytes */
+                        value = MBCS_SINGLE_RESULT_FROM_U(table, results, c);
+
+                        /* is this code point assigned, or do we use fallbacks? */
+                        if (value >= minValue) {
+                            /* assigned, write the output character bytes from value and length */
+                            /* length==1 */
+                            /* this is easy because we know that there is enough space */
+                            target.put((byte) value);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+
+                            /* normal end of conversion: prepare for a new character */
+                            c = 0;
+                            sourceIndex = nextSourceIndex;
+                        } else { /* unassigned */
+                            /* try an extension mapping */
+                            SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                    nextSourceIndex);
+                            doloop = unassignedDouble(source, target, x, flush, cr);
+                            c = x.c;
+                            sourceArrayIndex = x.sourceArrayIndex;
+                            sourceIndex = x.sourceIndex;
+                            nextSourceIndex = x.nextSourceIndex;
+                            if (!doloop)
+                                break;
+                        }
+                    } else {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of ucnv_MBCSFromUnicodeWithOffsets() is optimized for double-byte codepages. */
+        private CoderResult cnvMBCSDoubleFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target,
+                IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+
+            char[] table;
+            byte[] bytes;
+
+            int c, sourceIndex, nextSourceIndex;
+
+            int stage2Entry;
+            int value;
+            int length;
+            short uniMask;
+
+            /* use optimized function if possible */
+            uniMask = sharedData.mbcs.unicodeMask;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                bytes = sharedData.mbcs.swapLFNLFromUnicodeBytes;
+            } else {
+                bytes = sharedData.mbcs.fromUnicodeBytes;
+            }
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            /* conversion loop */
+            boolean doloop = true;
+            boolean doread = true;
+            if (c != 0 && target.hasRemaining()) {
+                if (UTF16.isLeadSurrogate((char) c)) {
+                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex, nextSourceIndex);
+                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                    doread = x.doread;
+                    c = x.c;
+                    sourceArrayIndex = x.sourceArrayIndex;
+                    sourceIndex = x.sourceIndex;
+                    nextSourceIndex = x.nextSourceIndex;
+                } else {
+                    doread = false;
+                }
+            }
+
+            if (doloop) {
+                while (!doread || sourceArrayIndex < source.limit()) {
+                    /*
+                     * This following test is to see if available input would overflow the output. It does not catch
+                     * output of more than one byte that overflows as a result of a multi-byte character or callback
+                     * output from the last source character. Therefore, those situations also test for overflows and
+                     * will then break the loop, too.
+                     */
+                    if (target.hasRemaining()) {
+                        if (doread) {
+                            /*
+                             * Get a correct Unicode code point: a single UChar for a BMP code point or a matched
+                             * surrogate pair for a "supplementary code point".
+                             */
+                            c = source.get(sourceArrayIndex++);
+                            ++nextSourceIndex;
+                            /*
+                             * This also tests if the codepage maps single surrogates. If it does, then surrogates are
+                             * not paired but mapped separately. Note that in this case unmatched surrogates are not
+                             * detected.
+                             */
+                            if (UTF16.isSurrogate((char) c) && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                                if (UTF16.isLeadSurrogate((char) c)) {
+                                    // getTrail:
+                                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                            nextSourceIndex);
+                                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                                    c = x.c;
+                                    sourceArrayIndex = x.sourceArrayIndex;
+                                    sourceIndex = x.sourceIndex;
+                                    nextSourceIndex = x.nextSourceIndex;
+
+                                    if (x.doread) {
+                                        if (doloop)
+                                            continue;
+                                        else
+                                            break;
+                                    }
+                                } else {
+                                    /* this is an unmatched trail code unit (2nd surrogate) */
+                                    /* callback(illegal) */
+                                    cr[0] = CoderResult.malformedForLength(1);
+                                    break;
+                                }
+                            }
+                        } else {
+                            doread = true;
+                        }
+
+                        /* convert the Unicode code point in c into codepage bytes */
+                        stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                        /* get the bytes and the length for the output */
+                        /* MBCS_OUTPUT_2 */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                        if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+
+                        /* is this code point assigned, or do we use fallbacks? */
+                        if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) || (isFromUUseFallback(c) && value != 0))) {
+                            /*
+                             * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way
+                             * with this data structure for fallback output to be a zero byte.
+                             */
+
+                            // unassigned:
+                            SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                    nextSourceIndex);
+
+                            doloop = unassignedDouble(source, target, x, flush, cr);
+                            c = x.c;
+                            sourceArrayIndex = x.sourceArrayIndex;
+                            sourceIndex = x.sourceIndex;
+                            nextSourceIndex = x.nextSourceIndex;
+                            if (doloop)
+                                continue;
+                            else
+                                break;
+                        }
+
+                        /* write the output character bytes from value and length */
+                        /* from the first if in the loop we know that targetCapacity>0 */
+                        if (length == 1) {
+                            /* this is easy because we know that there is enough space */
+                            target.put((byte) value);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else /* length==2 */{
+                            target.put((byte) (value >>> 8));
+                            if (2 <= target.remaining()) {
+                                target.put((byte) value);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    offsets.put(sourceIndex);
+                                }
+                            } else {
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                }
+                                errorBuffer[0] = (byte) value;
+                                errorBufferLength = 1;
+
+                                /* target overflow */
+                                cr[0] = CoderResult.OVERFLOW;
+                                c = 0;
+                                break;
+                            }
+                        }
+
+                        /* normal end of conversion: prepare for a new character */
+                        c = 0;
+                        sourceIndex = nextSourceIndex;
+                        continue;
+                    } else {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        private final class SideEffectsSingleBMP {
+            int c, sourceArrayIndex;
+
+            SideEffectsSingleBMP(int c_, int sourceArrayIndex_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSSingleFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrailSingleBMP(CharBuffer source, SideEffectsSingleBMP x, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    /* this codepage does not map supplementary code points */
+                    /* callback(unassigned) */
+                    cr[0] = CoderResult.unmappableForLength(2);
+                    return false;
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+            // return true;
+        }
+
+        private final class SideEffects {
+            int c, sourceArrayIndex, sourceIndex, nextSourceIndex, prevSourceIndex, prevLength;
+            boolean doread = true;
+
+            SideEffects(int c_, int sourceArrayIndex_, int sourceIndex_, int nextSourceIndex_, int prevSourceIndex_,
+                    int prevLength_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+                sourceIndex = sourceIndex_;
+                nextSourceIndex = nextSourceIndex_;
+                prevSourceIndex = prevSourceIndex_;
+                prevLength = prevLength_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrail(CharBuffer source, ByteBuffer target, int uniMask, SideEffects x,
+                boolean flush, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    ++x.nextSourceIndex;
+                    /* convert this supplementary code point */
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+                        fromUnicodeStatus = x.prevLength; /* save the old state */
+                        /* callback(unassigned) */
+                        x.doread = true;
+                        return unassigned(source, target, null, x, flush, cr);
+                    } else {
+                        x.doread = false;
+                        return true;
+                    }
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+        }
+
+        // function made out of block labeled unassigned in ucnv_MBCSFromUnicodeWithOffsets
+        private final boolean unassigned(CharBuffer source, ByteBuffer target, IntBuffer offsets, SideEffects x,
+                boolean flush, CoderResult[] cr) {
+            /* try an extension mapping */
+            int sourceBegin = x.sourceArrayIndex;
+            source.position(x.sourceArrayIndex);
+            x.c = fromU(x.c, source, target, null, x.sourceIndex, x.nextSourceIndex, flush, cr);
+            x.sourceArrayIndex = source.position();
+            x.nextSourceIndex += x.sourceArrayIndex - sourceBegin;
+            x.prevLength = (int) fromUnicodeStatus;
+
+            if (cr[0].isError()) {
+                /* not mappable or buffer overflow */
+                return false;
+            } else {
+                /* a mapping was written to the target, continue */
+
+                /* recalculate the targetCapacity after an extension mapping */
+                // x.targetCapacity=pArgs.targetLimit-x.targetArrayIndex;
+                /* normal end of conversion: prepare for a new character */
+                if (offsets != null) {
+                    x.prevSourceIndex = x.sourceIndex;
+                    x.sourceIndex = x.nextSourceIndex;
+                }
+                return true;
+            }
+        }
+
+        private final class SideEffectsDouble {
+            int c, sourceArrayIndex, sourceIndex, nextSourceIndex;
+            boolean doread = true;
+
+            SideEffectsDouble(int c_, int sourceArrayIndex_, int sourceIndex_, int nextSourceIndex_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+                sourceIndex = sourceIndex_;
+                nextSourceIndex = nextSourceIndex_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSDoubleFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrailDouble(CharBuffer source, ByteBuffer target, int uniMask,
+                SideEffectsDouble x, boolean flush, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    ++x.nextSourceIndex;
+                    /* convert this supplementary code point */
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+                        /* callback(unassigned) */
+                        x.doread = true;
+                        return unassignedDouble(source, target, x, flush, cr);
+                    } else {
+                        x.doread = false;
+                        return true;
+                    }
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+        }
+
+        // function made out of block labeled unassigned in ucnv_MBCSDoubleFromUnicodeWithOffsets
+        private final boolean unassignedDouble(CharBuffer source, ByteBuffer target, SideEffectsDouble x,
+                boolean flush, CoderResult[] cr) {
+            /* try an extension mapping */
+            int sourceBegin = x.sourceArrayIndex;
+            source.position(x.sourceArrayIndex);
+            x.c = fromU(x.c, source, target, null, x.sourceIndex, x.nextSourceIndex, flush, cr);
+            x.sourceArrayIndex = source.position();
+            x.nextSourceIndex += x.sourceArrayIndex - sourceBegin;
+
+            if (cr[0].isError()) {
+                /* not mappable or buffer overflow */
+                return false;
+            } else {
+                /* a mapping was written to the target, continue */
+
+                /* recalculate the targetCapacity after an extension mapping */
+                // x.targetCapacity=pArgs.targetLimit-x.targetArrayIndex;
+                /* normal end of conversion: prepare for a new character */
+                x.sourceIndex = x.nextSourceIndex;
+                return true;
+            }
+        }
+
+        /**
+         * Overrides super class method
+         * 
+         * @param encoder
+         * @param source
+         * @param target
+         * @param offsets
+         * @return
+         */
+        protected CoderResult cbFromUWriteSub(CharsetEncoderICU encoder, CharBuffer source, ByteBuffer target,
+                IntBuffer offsets) {
+            CharsetMBCS cs = (CharsetMBCS) encoder.charset();
+            byte[] subchar;
+            int length;
+
+            if (cs.subChar1 != 0
+                    && (cs.sharedData.mbcs.extIndexes != null ? encoder.useSubChar1
+                            : (encoder.invalidUCharBuffer[0] <= 0xff))) {
+                /*
+                 * select subChar1 if it is set (not 0) and the unmappable Unicode code point is up to U+00ff (IBM MBCS
+                 * behavior)
+                 */
+                subchar = new byte[] { cs.subChar1 };
+                length = 1;
+            } else {
+                /* select subChar in all other cases */
+                subchar = cs.subChar;
+                length = cs.subCharLen;
+            }
+
+            /* reset the selector for the next code point */
+            encoder.useSubChar1 = false;
+
+            if (cs.sharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO) {
+                byte[] buffer = new byte[4];
+                int i = 0;
+
+                /* fromUnicodeStatus contains prevLength */
+                switch (length) {
+                case 1:
+                    if (encoder.fromUnicodeStatus == 2) {
+                        /* DBCS mode and SBCS sub char: change to SBCS */
+                        encoder.fromUnicodeStatus = 1;
+                        buffer[i++] = UConverterConstants.SI;
+                    }
+                    buffer[i++] = subchar[0];
+                    break;
+                case 2:
+                    if (encoder.fromUnicodeStatus <= 1) {
+                        /* SBCS mode and DBCS sub char: change to DBCS */
+                        encoder.fromUnicodeStatus = 2;
+                        buffer[i++] = UConverterConstants.SO;
+                    }
+                    buffer[i++] = subchar[0];
+                    buffer[i++] = subchar[1];
+                    break;
+                default:
+                    throw new IllegalArgumentException();
+                }
+
+                subchar = buffer;
+                length = i;
+            }
+            return CharsetEncoderICU.fromUWriteBytes(encoder, subchar, 0, length, target, offsets, source.position());
+        }
+
+        /**
+         * Gets called whenever CharsetEncoder.replaceWith gets called. allowReplacementChanges only allows subChar and
+         * subChar1 to be modified outside construction (since replaceWith is called once during construction).
+         * 
+         * @param replacement
+         *            The replacement for subchar.
+         */
+        protected void implReplaceWith(byte[] replacement) {
+            if (allowReplacementChanges) {
+                CharsetMBCS cs = (CharsetMBCS) this.charset();
+
+                System.arraycopy(replacement, 0, cs.subChar, 0, replacement.length);
+                cs.subCharLen = (byte) replacement.length;
+                cs.subChar1 = 0;
+            }
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderMBCS(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderMBCS(this);
+    }
+    
+    void MBCSGetFilteredUnicodeSetForUnicode(UConverterSharedData data, UnicodeSet setFillIn, int which, int filter){
+        UConverterMBCSTable mbcsTable;
+        char[] table;
+        char st1,maxStage1, st2;
+        int st3;
+        int c ;
+        
+        mbcsTable = data.mbcs;
+        table = mbcsTable.fromUnicodeTable; 
+        if((mbcsTable.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY)!=0){
+            maxStage1 = 0x440;
+        }
+        else{
+            maxStage1 = 0x40;
+        }
+        c=0; /* keep track of current code point while enumerating */
+        
+        if(mbcsTable.outputType==MBCS_OUTPUT_1){
+            char stage2, stage3;
+            char minValue;
+            CharBuffer results;
+            results = ByteBuffer.wrap(mbcsTable.fromUnicodeBytes).asCharBuffer();
+                                   
+            if(which==ROUNDTRIP_SET) {
+                /* use only roundtrips */
+                minValue=0xf00;
+            } else {
+                /* use all roundtrip and fallback results */
+                minValue=0x800;
+            }
+            for(st1=0;st1<maxStage1;++st1){
+                st2 = table[st1];
+                if(st2>maxStage1){
+                    stage2 = st2;
+                    for(st2=0; st2<64; ++st2){
+                        st3 = table[stage2 + st2];
+                        if(st3!=0){
+                            /*read the stage 3 block */
+                            stage3 = (char)st3;
+                            do {
+                                if(results.get(stage3++)>=minValue){
+                                     setFillIn.add(c);
+                                }
+                               
+                            }while((++c&0xf) !=0);
+                          } else {
+                            c+= 16; /*empty stage 2 block */
+                        }
+                    }
+                } else {
+                    c+=1024; /* empty stage 2 block */
+                }
+            }
+        } else {
+            int stage2,stage3;
+            byte[] bytes;
+            int st3Multiplier;
+            int value;
+            boolean useFallBack;
+            bytes = mbcsTable.fromUnicodeBytes;
+            useFallBack = (which == ROUNDTRIP_AND_FALLBACK_SET);
+            switch(mbcsTable.outputType) {
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4_EUC:
+                st3Multiplier = 3;
+                break;
+            case MBCS_OUTPUT_4:
+                st3Multiplier =4;
+                break;
+            default:
+                st3Multiplier =2;
+                break;
+            }
+            //ByteBuffer buffer = (ByteBuffer)charTobyte(table);
+            
+            for(st1=0;st1<maxStage1;++st1){
+                st2 = table[st1]; 
+                if(st2>(maxStage1>>1)){
+                    stage2 =  st2 ;
+                    for(st2=0;st2<128;++st2){
+                        /*read the stage 3 block */
+                        st3 = table[stage2*2 + st2]<<16;
+                        st3+=table[stage2*2 + ++st2];
+                        if(st3!=0){
+                        //if((st3=table[stage2+st2])!=0){
+                            stage3 = st3Multiplier*16*(int)(st3&UConverterConstants.UNSIGNED_SHORT_MASK);
+                            
+                            /* get the roundtrip flags for the stage 3 block */
+                            st3>>=16;
+                            st3 &= UConverterConstants.UNSIGNED_SHORT_MASK;
+                            switch(filter) {
+                            case UCNV_SET_FILTER_NONE:
+                                do {
+                                    
+                                   if((st3&1)!=0){
+                                        setFillIn.add(c);
+                                        stage3+=st3Multiplier;
+                                   }else if (useFallBack) {
+                                        
+                                        char b =0;
+                                        switch(st3Multiplier) {
+                                        case 4 :
+                                           
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3++);
+                                           
+                                        case 3 :
+                                            
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3++);
+                                           
+                                        case 2 :
+                                           
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3) | ByteBuffer.wrap(bytes).getChar(stage3+1);
+                                            stage3+=2;
+                                        default:
+                                            break;
+                                        }
+                                        if(b!=0) {
+                                            setFillIn.add(c);
+                                        }
+                                    }
+                                    st3>>=1;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_DBCS_ONLY:
+                                /* Ignore single bytes results (<0x100). */
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))) >= 0x100){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf) != 0);
+                               break;
+                            case UCNV_SET_FILTER_2022_CN :
+                                /* only add code points that map to CNS 11643 planes 1&2 for non-EXT ISO-2202-CN. */
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            ((value= (UConverterConstants.UNSIGNED_BYTE_MASK & (ByteBuffer.wrap(bytes).get(stage3))))==0x81 || value==0x82) ){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=3;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_SJIS:
+                                /* only add code points that map tp Shift-JIS codes corrosponding to JIS X 0280. */
+                                do{
+                                    
+                                    if(((st3&1) != 0 || useFallBack) && (value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))>=0x8140 && value<=0xeffc){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_GR94DBCS:
+                                /* only add code points that maps to ISO 2022 GR 94 DBCS codes*/
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))- 0xa1a1))<=(0xfefe - 0xa1a1) && 
+                                            (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1)) <= (0xfe - 0xa1)){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_HZ:
+                                /*Only add code points that are suitable for HZ DBCS*/
+                                do {
+                                    if( ((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))-0xa1a1))<=(0xfdfe - 0xa1a1) &&
+                                            (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1)) <= (0xfe - 0xa1)){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf) != 0);
+                                break;
+                            default:
+                                return;
+                            }
+                        } else {
+                            c+=16; /* empty stage 3 block */
+                        }
+                    }
+                } else {
+                    c+=1024; /*empty stage2 block */
+                }
+            }
+        }
+        extGetUnicodeSet(setFillIn, which, filter, data);
+    }
+   
+    static void extGetUnicodeSetString(ByteBuffer cx,UnicodeSet setFillIn, boolean useFallback, 
+        int minLength, int c, char s[],int length,int sectionIndex){
+        CharBuffer fromUSectionUChar;
+        IntBuffer fromUSectionValues;
+        fromUSectionUChar = (CharBuffer)ARRAY(cx, EXT_FROM_U_UCHARS_INDEX,char.class );
+        fromUSectionValues = (IntBuffer)ARRAY(cx, EXT_FROM_U_VALUES_INDEX,int.class );
+        int fromUSectionUCharIndex = fromUSectionUChar.position()+sectionIndex;
+        int fromUSectionValuesIndex = fromUSectionValues.position()+sectionIndex;
+        int value, i, count;
+        
+        /* read first pair of the section */
+       count = fromUSectionUChar.get(fromUSectionUCharIndex++);
+       value = fromUSectionValues.get(fromUSectionValuesIndex++);
+       if(value!=0 && (FROM_U_IS_ROUNDTRIP(value) || useFallback) && FROM_U_GET_LENGTH(value)>=minLength) {
+           if(c>=0){
+               setFillIn.add(c);
+           } else {
+               String normalizedString=""; // String for composite characters 
+               for(int j=0; j<length;j++){
+                   normalizedString+=s[j];
+               }
+               for(int j=0;j<length;j++){
+                   setFillIn.add(normalizedString);
+               }
+             
+             }
+       }
+       
+       for(i=0; i<count; ++i){
+           s[length] = fromUSectionUChar.get(fromUSectionUCharIndex + i);
+           value = fromUSectionValues.get(fromUSectionValuesIndex + i);
+           
+           if(value==0) {
+               /* no mapping, do nothing */
+           } else if (FROM_U_IS_PARTIAL(value)) {
+               extGetUnicodeSetString( cx, setFillIn, useFallback, minLength, UConverterConstants.U_SENTINEL, s, length+1,
+                       FROM_U_GET_PARTIAL_INDEX(value));
+           } else if ((useFallback ? (value&FROM_U_RESERVED_MASK)==0:((value&(FROM_U_ROUNDTRIP_FLAG|FROM_U_RESERVED_MASK))==FROM_U_ROUNDTRIP_FLAG)) 
+                   && FROM_U_GET_LENGTH(value)>=minLength) {
+               String normalizedString=""; // String for composite characters 
+               for(int j=0; j<(length+1);j++){
+                   normalizedString+=s[j];
+               }
+             setFillIn.add(normalizedString);
+           }
+       }
+        
+    }
+    
+    
+    static void extGetUnicodeSet(UnicodeSet setFillIn, int which, int filter, UConverterSharedData Data){
+        int st1, stage1Length, st2, st3, minLength;
+        int ps2, ps3;
+        
+        CharBuffer stage12, stage3;
+        int value, length;
+        IntBuffer stage3b;
+        boolean useFallback;
+        char s[] = new char[MAX_UCHARS];
+        int c;
+        ByteBuffer cx = Data.mbcs.extIndexes;
+        if(cx == null){
+            return;
+        }
+        stage12 = (CharBuffer)ARRAY(cx, EXT_FROM_U_STAGE_12_INDEX,char.class );
+        stage3 = (CharBuffer)ARRAY(cx, EXT_FROM_U_STAGE_3_INDEX,char.class );
+        stage3b = (IntBuffer)ARRAY(cx, EXT_FROM_U_STAGE_3B_INDEX,int.class );
+        
+        stage1Length = cx.asIntBuffer().get(EXT_FROM_U_STAGE_1_LENGTH);
+        useFallback =(boolean)(which==ROUNDTRIP_AND_FALLBACK_SET);
+        
+        c = 0;
+        if(filter == UCNV_SET_FILTER_2022_CN) {
+            minLength = 3;
+        } else if (Data.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY || filter != UCNV_SET_FILTER_NONE) {
+            /* DBCS-only, ignore single-byte results */
+            minLength = 2;
+        } else {
+            minLength = 1;
+        }
+        
+        for(st1=0; st1< stage1Length; ++st1){
+            st2 = stage12.get(st1);
+            if(st2>stage1Length) {
+                ps2 = st2;
+                for(st2=0;st2<64;++st2){
+                    st3=((int) stage12.get(ps2+st2))<<STAGE_2_LEFT_SHIFT;
+                    if(st3!= 0){
+                        ps3 = st3;
+                        do {
+                            value = stage3b.get((int)(UConverterConstants.UNSIGNED_SHORT_MASK&stage3.get(ps3++)));
+                            if(value==0){
+                                /* no mapping do nothing */
+                            }else if (FROM_U_IS_PARTIAL(value)){
+                                length = 0;
+                                length=UTF16.append(s, length, c);
+                                extGetUnicodeSetString(cx,setFillIn,useFallback,minLength,c,s,length,(int)FROM_U_GET_PARTIAL_INDEX(value));
+                            } else if ((useFallback ?  (value&FROM_U_RESERVED_MASK)==0 :((value&(FROM_U_ROUNDTRIP_FLAG|FROM_U_RESERVED_MASK))== FROM_U_ROUNDTRIP_FLAG)) && 
+                                    FROM_U_GET_LENGTH(value)>=minLength){
+                                
+                                switch(filter) {
+                                case UCNV_SET_FILTER_2022_CN:
+                                    if(!(FROM_U_GET_LENGTH(value)==3 && FROM_U_GET_DATA(value)<=0x82ffff)){
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_SJIS:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (value=FROM_U_GET_DATA(value))>=0x8140 && value<=0xeffc)){
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_GR94DBCS:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=FROM_U_GET_DATA(value)) - 0xa1a1))<=(0xfefe - 0xa1a1) 
+                                            && (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1))<= (0xfe - 0xa1))){
+                                        
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_HZ:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=FROM_U_GET_DATA(value)) - 0xa1a1))<=(0xfdfe - 0xa1a1) 
+                                            && (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1))<= (0xfe - 0xa1))){
+                                        continue;
+                                    }
+                                    break;
+                                default:
+                                    /*
+                                     * UCNV_SET_FILTER_NONE,
+                                     * or UCNV_SET_FILTER_DBCS_ONLY which is handled via minLength
+                                     */
+                                    break;
+                                }
+                                setFillIn.add(c);
+                              
+                            }
+                        }while((++c&0xf) != 0);
+                      
+                    } else {
+                        c+=16;   /* emplty stage3 block */
+                    }
+                }
+            } else {
+                c+=1024;  /* empty stage 2 block*/
+            }
+        }
+    }
+    
+    void MBCSGetUnicodeSetForUnicode(UConverterSharedData data, UnicodeSet setFillIn, int which){
+        MBCSGetFilteredUnicodeSetForUnicode(data, setFillIn, which, 
+                this.sharedData.mbcs.outputType==MBCS_OUTPUT_DBCS_ONLY ? UCNV_SET_FILTER_DBCS_ONLY : UCNV_SET_FILTER_NONE );
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        if((options & MBCS_OPTION_GB18030)!=0){
+            setFillIn.add(0, 0xd7ff);
+            setFillIn.add(0xe000, 0x10ffff);
+        }
+        else {
+            this.MBCSGetUnicodeSetForUnicode(sharedData, setFillIn, which);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/charset/CharsetProviderICU.java b/src/com/ibm/icu/charset/CharsetProviderICU.java
new file mode 100644
index 0000000..21b225f
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetProviderICU.java
@@ -0,0 +1,303 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.charset;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import com.ibm.icu.impl.InvalidFormatException;
+
+
+/**
+ * A concrete subclass of CharsetProvider for loading and providing charset converters
+ * in ICU.
+ * @stable ICU 3.6
+ */
+public final class CharsetProviderICU extends CharsetProvider{
+    
+    /**
+     * Default constructor 
+     * @stable ICU 3.6
+     */
+    public CharsetProviderICU() {
+    }
+
+    /**
+     * Constructs a charset for the given charset name. 
+     * Implements the abstract method of super class.
+     * @param charsetName charset name
+     * @return charset objet for the given charset name, null if unsupported
+     * @stable ICU 3.6
+     */
+    public final Charset charsetForName(String charsetName){
+        try{
+            // get the canonical name
+            String icuCanonicalName = getICUCanonicalName(charsetName);      
+    
+                // create the converter object and return it
+            if(icuCanonicalName==null || icuCanonicalName.length()==0){
+                // Try the original name, may be something added and not in the alias table. 
+                // Will get an unsupported encoding exception if it doesn't work.
+                return getCharset(charsetName);
+            }
+            return getCharset(icuCanonicalName);
+        }catch(UnsupportedCharsetException ex){
+        }catch(IOException ex){
+        }
+        return null;
+    }
+    
+    /**
+     * Constructs a charset for the given ICU conversion table from the specified class path.
+     * Example use: <code>cnv = CharsetProviderICU.charsetForName("myConverter", "com/myCompany/myDataPackage");</code>.
+     * In this example myConverter.cnv would exist in the com/myCompany/myDataPackage Java package.
+     * Conversion tables can be made with ICU4C's makeconv tool.
+     * This function allows you to allows you to load user defined conversion
+     * tables that are outside of ICU's core data.
+     * @param charsetName The name of the charset conversion table.
+     * @param classPath The class path that contain the conversion table.
+     * @return charset object for the given charset name, null if unsupported
+     * @stable ICU 3.8
+     */
+    public final Charset charsetForName(String charsetName, String classPath) {
+        return charsetForName(charsetName, classPath, null);
+    }
+    
+    /**
+     * Constructs a charset for the given ICU conversion table from the specified class path.
+     * This function is similar to {@link #charsetForName(String, String)}.
+     * @param charsetName The name of the charset conversion table.
+     * @param classPath The class path that contain the conversion table.
+     * @param loader the class object from which to load the charset conversion table
+     * @return charset object for the given charset name, null if unsupported
+     * @stable ICU 3.8
+     */
+    public Charset charsetForName(String charsetName, String classPath, ClassLoader loader) {
+        CharsetMBCS cs = null;
+        try {
+             cs = new CharsetMBCS(charsetName, charsetName, new String[0], classPath, loader);
+        } catch (InvalidFormatException e) {
+            // return null;
+        }
+        return cs;
+    }
+    
+    /**
+     * Gets the canonical name of the converter as defined by Java
+     * @param enc converter name
+     * @return canonical name of the converter
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final String getICUCanonicalName(String enc)
+                                throws UnsupportedCharsetException{
+        String canonicalName = null;
+        String ret = null;
+        try{
+            if(enc!=null){
+                 if((canonicalName = UConverterAlias.getCanonicalName(enc, "MIME"))!=null){
+                    ret = canonicalName;
+                } else if((canonicalName = UConverterAlias.getCanonicalName(enc, "IANA"))!=null){
+                    ret = canonicalName;
+                } else if((canonicalName = UConverterAlias.getAlias(enc, 0))!=null){
+                    /* we have some aliases in the form x-blah .. match those */
+                    ret = canonicalName;
+                }/*else if((canonicalName = UConverterAlias.getCanonicalName(enc, ""))!=null){
+                    ret = canonicalName;
+                }*/else if(enc.indexOf("x-")==0){
+                    /* TODO: Match with getJavaCanonicalName method */
+                    /*
+                    char temp[ UCNV_MAX_CONVERTER_NAME_LENGTH] = {0};
+                    strcpy(temp, encName+2);
+                    */
+                    // Remove the 'x-' and get the ICU canonical name
+                    if ((canonicalName = UConverterAlias.getAlias(enc.substring(2), 0))!=null) {
+                        ret = canonicalName;
+                    } else {
+                        ret = "";
+                    }
+                    
+                }else{
+                    /* unsupported encoding */
+                   ret = "";
+                }
+            }
+            return ret;
+        }catch(IOException ex){
+            throw new UnsupportedCharsetException(enc);
+        } 
+    }
+    private static final Charset getCharset(String icuCanonicalName) throws IOException{
+       String[] aliases = (String[])getAliases(icuCanonicalName);    
+       String canonicalName = getJavaCanonicalName(icuCanonicalName);
+       return (CharsetICU.getCharset(icuCanonicalName,canonicalName, aliases));  
+    }
+    /**
+     * Gets the canonical name of the converter as defined by Java
+     * @param charsetName converter name
+     * @return canonical name of the converter
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static String getJavaCanonicalName(String charsetName){
+        /*
+        If a charset listed in the IANA Charset Registry is supported by an implementation 
+        of the Java platform then its canonical name must be the name listed in the registry. 
+        Many charsets are given more than one name in the registry, in which case the registry 
+        identifies one of the names as MIME-preferred. If a charset has more than one registry 
+        name then its canonical name must be the MIME-preferred name and the other names in 
+        the registry must be valid aliases. If a supported charset is not listed in the IANA 
+        registry then its canonical name must begin with one of the strings "X-" or "x-".
+        */
+        if(charsetName==null ){
+            return null;
+        }  
+        try{
+            String cName = null;
+            /* find out the alias with MIME tag */
+            if((cName=UConverterAlias.getStandardName(charsetName, "MIME"))!=null){
+            /* find out the alias with IANA tag */
+            }else if((cName=UConverterAlias.getStandardName(charsetName, "IANA"))!=null){
+            }else {
+                /*  
+                    check to see if an alias already exists with x- prefix, if yes then 
+                    make that the canonical name
+                */
+                int aliasNum = UConverterAlias.countAliases(charsetName);
+                String name;
+                for(int i=0;i<aliasNum;i++){
+                    name = UConverterAlias.getAlias(charsetName, i);
+                    if(name!=null && name.indexOf("x-")==0){
+                        cName = name;
+                        break;
+                    }
+                }
+                /* last resort just append x- to any of the alias and 
+                make it the canonical name */
+                if((cName==null || cName.length()==0)){
+                    name = UConverterAlias.getStandardName(charsetName, "UTR22");
+                    if(name==null && charsetName.indexOf(",")!=-1){
+                        name = UConverterAlias.getAlias(charsetName, 1);
+                    }
+                    /* if there is no UTR22 canonical name .. then just return itself*/
+                    if(name==null){
+                        name = charsetName;
+                    }
+                    cName = "x-"+ name;
+                }
+            }
+            /* After getting the java canonical name from ICU alias table, get the
+             * java canonical name from the current JDK. This is neccessary because
+             * different versions of the JVM (Sun and IBM) may have a different
+             * canonical name then the one given by ICU. So the java canonical name
+             * will depend on the current JVM.  Since java cannot use the ICU canonical 
+             * we have to try to use a java compatible name.
+             */
+            if (cName != null) {
+                if (Charset.isSupported(cName)) {
+                    cName = Charset.forName(cName).name();
+                }
+            }
+            return cName;
+        }catch (IOException ex){
+            
+        }
+        return null;
+     }
+
+    /** 
+     * Gets the aliases associated with the converter name
+     * @param encName converter name
+     * @return converter names as elements in an object array
+     * @internal ICU 3.6
+     */
+    private static final String[] getAliases(String encName)throws IOException{
+        String[] ret = null;
+        int aliasNum = 0;
+        int i=0;
+        int j=0;
+        String aliasArray[/*50*/] = new String[50];
+    
+        if(encName != null){
+            aliasNum = UConverterAlias.countAliases(encName);
+            for(i=0,j=0;i<aliasNum;i++){
+                String name = UConverterAlias.getAlias(encName,i);
+                if(name.indexOf('+')==-1 && name.indexOf(',')==-1){
+                    aliasArray[j++]= name;
+                }
+            }
+            ret = new String[j];
+            for(;--j>=0;) {
+                ret[j] = aliasArray[j];
+            }
+                        
+        }
+        return (ret);
+    
+    }
+
+    private static final void putCharsets(Map map){
+        int num = UConverterAlias.countAvailable();
+        for(int i=0;i<num;i++) {
+            String name = UConverterAlias.getAvailableName(i);
+            try {
+                Charset cs =  getCharset(name);
+                map.put(cs, getJavaCanonicalName(name));
+            }catch(UnsupportedCharsetException ex){
+            }catch (IOException e) {
+            }
+            // add only charsets that can be created!
+        }
+    }
+
+    /**
+     * Returns an iterator for the available charsets.
+     * Implements the abstract method of super class.
+     * @return Iterator the charset name iterator
+     * @stable ICU 3.6
+     */
+    public final Iterator charsets(){
+        HashMap map = new HashMap();
+        putCharsets(map);
+        return map.keySet().iterator();
+    }
+    
+    /**
+     * Gets the canonical names of available converters 
+     * @return Object[] names as an object array
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final Object[] getAvailableNames(){
+        HashMap map = new HashMap();
+        putCharsets(map);
+        return map.values().toArray();
+    }
+     
+    /**
+     * Return all names available
+     * @return String[] an arrya of all available names
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final String[] getAllNames(){
+        int num = UConverterAlias.countAvailable();
+        String[] names = new String[num];
+        for(int i=0;i<num;i++) {
+            names[i] = UConverterAlias.getAvailableName(i);
+        }
+        return names;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetSCSU.java b/src/com/ibm/icu/charset/CharsetSCSU.java
new file mode 100644
index 0000000..aeb4bd4
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetSCSU.java
@@ -0,0 +1,1281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author krajwade
+ *
+ */
+class CharsetSCSU extends CharsetICU{
+    /* SCSU definitions --------------------------------------------------------- */
+
+    /* SCSU command byte values */
+    //enum {
+    private static final short SQ0=0x01; /* Quote from window pair 0 */
+    private static final short SQ7=0x08; /* Quote from window pair 7 */
+    private static final short SDX=0x0B; /* Define a window as extended */
+    //private static final short Srs=0x0C; /* reserved */
+    private static final short SQU=0x0E; /* Quote a single Unicode character */
+    private static final short SCU=0x0F; /* Change to Unicode mode */
+    private static final short SC0=0x10; /* Select window 0 */
+    private static final short SC7=0x17; /* Select window 7 */
+    private static final short SD0=0x18; /* Define and select window 0 */
+    //private static final short SD7=0x1F; /* Define and select window 7 */
+    
+    private static final short UC0=0xE0; /* Select window 0 */
+    private static final short UC7=0xE7; /* Select window 7 */
+    private static final short UD0=0xE8; /* Define and select window 0 */
+    private static final short UD7=0xEF; /* Define and select window 7 */
+    private static final short UQU=0xF0; /* Quote a single Unicode character */
+    private static final short UDX=0xF1; /* Define a Window as extended */
+    private static final short Urs=0xF2;  /* reserved */
+   // };
+   
+  //  enum {
+        /*
+         * Unicode code points from 3400 to E000 are not adressible by
+         * dynamic window, since in these areas no short run alphabets are
+         * found. Therefore add gapOffset to all values from gapThreshold.
+         */
+    private static final int gapThreshold=0x68;
+    private static final int gapOffset = 0xAC00 ;
+    /* values between reservedStart and fixedThreshold are reserved */
+    private static final int reservedStart=0xA8;
+    /* use table of predefined fixed offsets for values from fixedThreshold */
+    private static final int fixedThreshold=0xF;
+    //};
+    
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x0E,(byte)0xFF, (byte)0xFD};
+    
+    /* constant offsets for the 8 static windows */
+    private static final int staticOffsets[]={
+        0x0000, /* ASCII for quoted tags */
+        0x0080, /* Latin - 1 Supplement (for access to punctuation) */
+        0x0100, /* Latin Extended-A */
+        0x0300, /* Combining Diacritical Marks */
+        0x2000, /* General Punctuation */
+        0x2080, /* Currency Symbols */
+        0x2100, /* Letterlike Symbols and Number Forms */
+        0x3000  /* CJK Symbols and punctuation */
+    };
+
+    /* initial offsets for the 8 dynamic (sliding) windows */
+   private static final int initialDynamicOffsets[]={
+        0x0080, /* Latin-1 */
+        0x00C0, /* Latin Extended A */
+        0x0400, /* Cyrillic */
+        0x0600, /* Arabic */
+        0x0900, /* Devanagari */
+        0x3040, /* Hiragana */
+        0x30A0, /* Katakana */
+        0xFF00  /* Fullwidth ASCII */
+    };
+
+    /* Table of fixed predefined Offsets */
+    private static final int fixedOffsets[]={
+        /* 0xF9 */ 0x00C0, /* Latin-1 Letters + half of Latin Extended A */
+        /* 0xFA */ 0x0250, /* IPA extensions */
+        /* 0xFB */ 0x0370, /* Greek */
+        /* 0xFC */ 0x0530, /* Armenian */
+        /* 0xFD */ 0x3040, /* Hiragana */
+        /* 0xFE */ 0x30A0, /* Katakana */
+        /* 0xFF */ 0xFF60  /* Halfwidth Katakana */
+    };
+
+    /* state values */
+    //enum {
+    private static final int readCommand=0;
+    private static final int quotePairOne=1;
+    private static final int quotePairTwo=2;
+    private static final int quoteOne=3;
+    private static final int definePairOne=4;
+    private static final int definePairTwo=5;
+    private static final int defineOne=6;
+  //  };
+       
+    private final class SCSUData{   
+        /* dynamic window offsets, intitialize to default values from initialDynamicOffsets */
+        int toUDynamicOffsets[] = new int[8] ;
+        int fromUDynamicOffsets[] = new int[8] ; 
+
+        /* state machine state - toUnicode */
+        boolean toUIsSingleByteMode;
+        short toUState;
+        byte toUQuoteWindow, toUDynamicWindow;
+        short toUByteOne;
+        short toUPadding[];
+
+        /* state machine state - fromUnicode */
+        boolean fromUIsSingleByteMode;
+        byte fromUDynamicWindow;
+
+        /*
+         * windowUse[] keeps track of the use of the dynamic windows:
+         * At nextWindowUseIndex there is the least recently used window,
+         * and the following windows (in a wrapping manner) are more and more
+         * recently used.
+         * At nextWindowUseIndex-1 there is the most recently used window.
+         */
+        byte locale;
+        byte nextWindowUseIndex;
+        byte windowUse[] = new byte[8];
+        
+        SCSUData(){
+            initialize();
+        }
+        
+        void initialize(){
+            for(int i=0;i<8;i++){
+                this.toUDynamicOffsets[i] = initialDynamicOffsets[i];
+            }
+            this.toUIsSingleByteMode = true;
+            this.toUState = readCommand;
+            this.toUQuoteWindow = 0;
+            this.toUDynamicWindow = 0;
+            this.toUByteOne = 0;
+            this.fromUIsSingleByteMode = true;
+            this.fromUDynamicWindow = 0;
+            for(int i=0;i<8;i++){
+                this.fromUDynamicOffsets[i] = initialDynamicOffsets[i];
+            }
+            this.nextWindowUseIndex = 0; 
+            switch(this.locale){
+                case l_ja:
+                    for(int i=0;i<8;i++){
+                        this.windowUse[i] = initialWindowUse_ja[i];
+                    }
+                    break;
+                default:
+                    for(int i=0;i<8;i++){
+                        this.windowUse[i] = initialWindowUse[i];
+                    }
+                    
+            }
+        }
+    }
+    
+    static final byte initialWindowUse[]={ 7, 0, 3, 2, 4, 5, 6, 1 };
+    static final byte initialWindowUse_ja[]={ 3, 2, 4, 1, 0, 7, 5, 6 };
+
+    //enum {
+    //private static final int lGeneric = 0;
+    private static final int l_ja = 1;
+    //};
+    
+    private SCSUData extraInfo = null; 
+    
+    public CharsetSCSU(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 3; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        extraInfo = new SCSUData();
+    }
+    
+    class CharsetDecoderSCSU extends CharsetDecoderICU {       
+        /* label values for supporting behavior similar to goto in C */
+        private static final int FastSingle=0;
+        private static final int SingleByteMode=1;
+        private static final int EndLoop=2;
+        
+        /* Mode Type */
+        private static final int ByteMode = 0;
+        private static final int UnicodeMode =1;       
+        
+        public CharsetDecoderSCSU(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+        
+        //private SCSUData data ;
+        protected void implReset(){
+            super.implReset();
+            toULength = 0;
+            extraInfo.initialize();
+        }
+        
+        short b;
+        
+        //Get the state machine state 
+        private boolean isSingleByteMode ;
+        private short state ;
+        private byte quoteWindow ;
+        private byte dynamicWindow ;
+        private short byteOne;
+        
+        
+        //sourceIndex=-1 if the current character began in the previous buffer
+        private int sourceIndex  ;
+        private int nextSourceIndex ;
+        
+        CoderResult cr;
+        SCSUData data ;
+        private boolean LabelLoop;// used to break the while loop
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush){
+            data = extraInfo;
+            
+            //Get the state machine state 
+            isSingleByteMode = data.toUIsSingleByteMode;
+            state = data.toUState;
+            quoteWindow = data.toUQuoteWindow;
+            dynamicWindow = data.toUDynamicWindow;
+            byteOne = data.toUByteOne;
+            
+            LabelLoop = true;
+            
+            //sourceIndex=-1 if the current character began in the previous buffer
+            sourceIndex = data.toUState == readCommand ? 0: -1 ;
+            nextSourceIndex = 0;
+            
+            cr = CoderResult.UNDERFLOW;
+            int labelType = 0;
+            while(LabelLoop){
+                if(isSingleByteMode){
+                    switch(labelType){
+                        case FastSingle:
+                            /*fast path for single-byte mode*/
+                            labelType = fastSingle(source, target, offsets, ByteMode);
+                            break;
+                        case SingleByteMode:
+                            /* normal state machine for single-byte mode, minus handling for what fastSingleCovers */
+                            labelType = singleByteMode(source, target, offsets, ByteMode);
+                            break;
+                        case EndLoop:
+                            endLoop(source, target, offsets);
+                            break;
+                    }
+                }else{
+                    switch(labelType){
+                        case FastSingle:
+                            /*fast path for single-byte mode*/
+                            labelType = fastSingle(source, target, offsets, UnicodeMode);
+                            break;
+                        case SingleByteMode:
+                            /* normal state machine for single-byte mode, minus handling for what fastSingleCovers */
+                            labelType = singleByteMode(source, target, offsets, UnicodeMode);
+                            break;
+                        case EndLoop:
+                            endLoop(source, target, offsets);
+                            break;
+                    }
+                    //LabelLoop = false;
+                }
+            }
+            return cr;
+        }
+        
+        private int fastSingle(ByteBuffer source, CharBuffer target, IntBuffer offsets, int modeType){
+            int label = 0;
+            if(modeType==ByteMode){
+                
+                if(state==readCommand){
+                    while(source.hasRemaining() && target.hasRemaining() && (b=(short)(source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK)) >= 0x20){
+                        source.position(source.position()+1);
+                        ++nextSourceIndex;
+                        if(b <= 0x7f){
+                            /*Write US graphic character or DEL*/
+                            target.put((char)b);
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                        }else{
+                            /*Write from dynamic window*/
+                            int c = data.toUDynamicOffsets[dynamicWindow] + (b&0x7f);
+                            if(c <= 0xffff){
+                                target.put((char)c);
+                                if(offsets != null){
+                                    offsets.put(sourceIndex);
+                                }
+                            }else{
+                                /*Output surrogate pair */
+                                target.put((char)(0xd7c0 + (c>>10)));
+                                if(target.hasRemaining()){
+                                    target.put((char)(0xdc00 | (c&0x3ff)));
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex);
+                                    }
+                                }else{
+                                    /* target overflow */
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    charErrorBufferArray[0] = (char)(0xdc00 | (c&0x3ff));
+                                    charErrorBufferLength = 1;
+                                    label = EndLoop;
+                                    cr = CoderResult.OVERFLOW;
+                                    LabelLoop = false;
+                                    return label;
+                                }
+                            }
+                        }
+                        sourceIndex = nextSourceIndex;
+                    }
+                   // label = SingleByteMode;
+                }
+            }else if(modeType==UnicodeMode){
+                /* fast path for unicode mode */
+                if(state == readCommand){
+                    while((source.position()+1)<source.limit() && target.hasRemaining() && (((b=source.get(source.position()))-UC0)&UConverterConstants.UNSIGNED_BYTE_MASK)>(Urs-UC0)){
+                        target.put((char)((b<<8)|(source.get(source.position()+1)&UConverterConstants.UNSIGNED_BYTE_MASK)));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        nextSourceIndex+=2;
+                        source.position(source.position()+2);
+                    }
+                }
+            }
+            label = SingleByteMode;
+            return label;
+        }
+        
+        private int singleByteMode(ByteBuffer source, CharBuffer target, IntBuffer offsets, int modeType){
+            int label = SingleByteMode;
+            if(modeType == ByteMode){
+                while(source.hasRemaining()){
+                    if(!target.hasRemaining()){
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        return label;
+                     }
+                    b = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    ++nextSourceIndex;
+                    switch(state){
+                    case readCommand:
+                        /*redundant conditions are commented out */
+                        if(((1L<<b)&0x2601)!=0){
+                            target.put((char)b);
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                            sourceIndex = nextSourceIndex;
+                            label = FastSingle;
+                            return label;
+                        }else if(SC0 <= b){
+                            if(b<=SC7){
+                                dynamicWindow = (byte)(b-SC0);
+                                sourceIndex = nextSourceIndex;
+                                label = FastSingle;
+                                return label;
+                            }else /* if(SD0<=b && b<=SQ7)*/{
+                                dynamicWindow = (byte)(b - SD0);
+                                state = defineOne;
+                            }
+                        }else if(/* SQ0<=b &&*/b <= SQ7){
+                            quoteWindow = (byte)(b - SQ0);
+                            state = quoteOne;
+                        }else if(b==SDX){
+                            state = definePairOne;
+                        }else if(b==SQU){
+                            state = quotePairOne;
+                        }else if(b==SCU){
+                            sourceIndex = nextSourceIndex;
+                            isSingleByteMode = false;
+                            label = FastSingle;
+                            return label;
+                        }else{
+                            /*callback (illegal)*/
+                            cr = CoderResult.malformedForLength(1);
+                            toUBytesArray[0] = (byte)b;
+                            toULength =1;
+                            label = EndLoop;
+                            return label;
+                        }
+                        
+                        /* Store the first byte of a multibyte sequence in toUByte[] */
+                        toUBytesArray[0] = (byte)b;
+                        toULength = 1;
+                        break;
+                    case quotePairOne:
+                        byteOne = b;
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = quotePairTwo;
+                        break;
+                    case quotePairTwo:
+                        target.put((char)((byteOne<< 8) | b));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case quoteOne:
+                        if(b<0x80){
+                            /* all static offsets are in the BMP */
+                            target.put((char)(staticOffsets[quoteWindow] + b));
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                        }else {
+                            /*write from dynamic window */
+                            int c = data.toUDynamicOffsets[quoteWindow] + (b&0x7f);
+                            if(c<=0xffff){
+                                target.put((char)c);
+                                if(offsets != null){
+                                    offsets.put(sourceIndex);
+                                }
+                            }else {
+                                /* output surrogate pair */
+                                target.put((char)(0xd7c0+(c>>10)));
+                                if(target.hasRemaining()){
+                                    target.put((char)(0xdc00 | (c&0x3ff)));
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex);
+                                    }
+                                }else {
+                                    /* target overflow */
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    charErrorBufferArray[0] = (char)(0xdc00 | (c&0x3ff));
+                                    charErrorBufferLength = 1;
+                                    label = EndLoop;
+                                    cr = CoderResult.OVERFLOW;
+                                    LabelLoop = false;
+                                    return label;
+                                }
+                            }
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case definePairOne:
+                        dynamicWindow = (byte)((b>>5)&7);
+                        byteOne = (byte)(b&0x1f);
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = definePairTwo;
+                        break;
+                    case definePairTwo:
+                        data.toUDynamicOffsets[dynamicWindow] = 0x10000 + (byteOne<<15L | b<<7L);
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case defineOne:
+                        if(b==0){
+                            /*callback (illegal)*/
+                            toUBytesArray[1] = (byte)b;
+                            toULength =2;
+                            label = EndLoop;
+                            return label;
+                        }else if(b<gapThreshold){
+                            data.toUDynamicOffsets[dynamicWindow] = b<<7L;
+                        }else if((byte)(b - gapThreshold)<(reservedStart - gapThreshold)){
+                            data.toUDynamicOffsets[dynamicWindow] = (b<<7L) + gapOffset;
+                        }else if(b>=fixedThreshold){
+                            data.toUDynamicOffsets[dynamicWindow] = fixedOffsets[b-fixedThreshold];
+                        }else{
+                            /*callback (illegal)*/
+                            toUBytesArray[1] = (byte)b;
+                            toULength =2;
+                            label = EndLoop;
+                            return label;
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    }
+                }
+                
+            }else if(modeType==UnicodeMode){
+                while(source.hasRemaining()){
+                    if(!target.hasRemaining()){
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        return label;
+                    }
+                    b = source.get();
+                    ++nextSourceIndex;
+                    switch(state){
+                    case readCommand:
+                        if((byte)(b -UC0)>(Urs - UC0)){
+                            byteOne = b;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = quotePairOne;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) <= UC7){
+                            dynamicWindow = (byte)(b - UC0);
+                            sourceIndex = nextSourceIndex;
+                            isSingleByteMode = true;
+                            label = FastSingle;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) <= UD7){
+                            dynamicWindow = (byte)(b - UD0);
+                            isSingleByteMode = true;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = defineOne;
+                            label = SingleByteMode;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) == UDX){
+                            isSingleByteMode = true;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = definePairOne;
+                            label = SingleByteMode;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) == UQU){
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = quotePairOne;
+                        }else {
+                            /* callback (illegal)*/
+                            cr = CoderResult.malformedForLength(1);
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            label = EndLoop;
+                            return label;
+                        }
+                        break;
+                    case quotePairOne:
+                        byteOne = b;
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = quotePairTwo;
+                        break;
+                    case quotePairTwo:
+                        target.put((char)((byteOne<<8) | b));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    }
+                }
+            }
+            label = EndLoop;
+            return label;
+        }
+        
+        private void endLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            if(cr==CoderResult.OVERFLOW){
+                state = readCommand;
+            }else if(state == readCommand){
+                toULength = 0;
+            }
+            data.toUIsSingleByteMode = isSingleByteMode;
+            data.toUState = state;
+            data.toUQuoteWindow = quoteWindow;
+            data.toUDynamicWindow = dynamicWindow;
+            data.toUByteOne = byteOne;
+            LabelLoop = false;
+        }
+    }
+    
+    class CharsetEncoderSCSU extends CharsetEncoderICU{
+        public CharsetEncoderSCSU(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        //private SCSUData data;
+        protected void implReset() {
+            super.implReset();
+            extraInfo.initialize();
+        }
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int Loop=0; 
+        private static final int GetTrailUnicode=1;
+        private static final int OutputBytes=2;
+        private static final int EndLoop =3;
+        
+        private int delta;
+        private int length;
+        
+        ///variables of compression heuristics
+        private int offset;
+        private char lead, trail;
+        private int code;
+        private byte window;
+        
+        //Get the state machine state 
+        private boolean isSingleByteMode;
+        private byte dynamicWindow ;
+        private int currentOffset;
+        int c;
+        
+        SCSUData data ;
+        
+        //sourceIndex=-1 if the current character began in the previous buffer
+        private int sourceIndex ;
+        private int nextSourceIndex;
+        private int targetCapacity;
+        
+        private boolean LabelLoop;//used to break the while loop
+        private boolean AfterGetTrail;// its value is set to true in order to ignore the code before getTrailSingle:
+        private boolean AfterGetTrailUnicode;// is value is set to true in order to ignore the code before getTrailUnicode:
+        
+        CoderResult cr;
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            data = extraInfo;
+            cr = CoderResult.UNDERFLOW;
+            
+            //Get the state machine state 
+            isSingleByteMode = data.fromUIsSingleByteMode;
+            dynamicWindow = data.fromUDynamicWindow;
+            currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+            c = fromUChar32;
+            
+            sourceIndex = c== 0 ? 0: -1 ;
+            nextSourceIndex = 0;
+                        
+            
+            targetCapacity = target.limit()-target.position();
+            
+            //sourceIndex=-1 if the current character began in the previous buffer
+            sourceIndex = c== 0 ? 0: -1 ;
+            nextSourceIndex = 0;
+            
+            int labelType = Loop; // set to Loop so that the code starts from loop:
+            LabelLoop = true; 
+            AfterGetTrail = false; 
+            AfterGetTrailUnicode = false; 
+            
+            while(LabelLoop){
+                switch(labelType){
+                case Loop:
+                    labelType = loop(source, target, offsets);
+                    break;
+                case GetTrailUnicode:
+                    labelType = getTrailUnicode(source, target, offsets);
+                    break;
+                case OutputBytes:
+                    labelType = outputBytes(source, target, offsets);
+                    break;
+                case EndLoop:
+                    endLoop(source, target, offsets);
+                    break;
+                }
+            }
+            return cr;
+        }
+        
+        private byte getWindow(int[] offsets){
+            int i;
+            for (i=0;i<8;i++){
+                if(((c-offsets[i]) & UConverterConstants.UNSIGNED_INT_MASK) <= 0x7f){
+                    return (byte)i;
+                }
+            }
+            return -1;
+        }
+        
+        private boolean isInOffsetWindowOrDirect(int offsetValue, int a){
+            return (boolean)((a & UConverterConstants.UNSIGNED_INT_MASK)<=(offsetValue & UConverterConstants.UNSIGNED_INT_MASK)+0x7f & 
+                    ((a & UConverterConstants.UNSIGNED_INT_MASK)>=(offsetValue & UConverterConstants.UNSIGNED_INT_MASK) || 
+                            ((a & UConverterConstants.UNSIGNED_INT_MASK)<=0x7f && ((a & UConverterConstants.UNSIGNED_INT_MASK)>=0x20 
+                                    || ((1L<<(a & UConverterConstants.UNSIGNED_INT_MASK))&0x2601)!=0))));
+        }
+        
+        private byte getNextDynamicWindow(){
+            byte windowValue = data.windowUse[data.nextWindowUseIndex];
+            if(++data.nextWindowUseIndex==8){
+                data.nextWindowUseIndex=0;
+            }
+            return windowValue;
+        }
+        
+        private void useDynamicWindow(byte windowValue){
+            /*first find the index of the window*/
+            int i,j;
+            i = data.nextWindowUseIndex;
+            do{
+                if(--i<0){
+                    i=7;
+                }
+            }while(data.windowUse[i]!=windowValue);
+            
+            /*now copy each window[i+1] to [i]*/
+            j= i+1;
+            if(j==8){
+                j=0;
+            }
+            while(j!=data.nextWindowUseIndex){
+                data.windowUse[i] = data.windowUse[j];
+                i=j;
+                if(++j==8){
+                    j=0;
+                }
+            }
+            
+            /*finally, set the window into the most recently used index*/
+            data.windowUse[i]= windowValue;
+        }
+        
+        
+       private int getDynamicOffset(){
+            int i;
+            for(i=0;i<7;++i){
+                if(((c-fixedOffsets[i])&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f){
+                    offset = fixedOffsets[i];
+                    return 0xf9+i;
+                }
+            }
+            if((c&UConverterConstants.UNSIGNED_INT_MASK)<0x80){
+                /*No dynamic window for US-ASCII*/
+                return -1;
+            }else if((c&UConverterConstants.UNSIGNED_INT_MASK)<0x3400 || ((c-0x10000)&UConverterConstants.UNSIGNED_INT_MASK)<(0x14000-0x10000) || 
+                    ((c-0x1d000)&UConverterConstants.UNSIGNED_INT_MASK)<=(0x1ffff-0x1d000)){
+                /*This character is in the code range for a "small", i.e, reasonably windowable, script*/
+                offset = c&0x7fffff80;
+                return (int)(c>>7);
+            }else if(0xe000<=(c&UConverterConstants.UNSIGNED_INT_MASK) && (c&UConverterConstants.UNSIGNED_INT_MASK)!=0xfeff && (c&UConverterConstants.UNSIGNED_INT_MASK) < 0xfff0){
+                /*for these characters we need to take the gapOffset into account*/
+                offset=(c)&0x7fffff80;
+                return (int)((c-gapOffset)>>7);
+            }else{
+                return -1;
+            }
+        }
+        
+        private int loop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label = 0;
+            if(isSingleByteMode){
+                if(c!=0 && targetCapacity>0 && !AfterGetTrail){
+                    label = getTrail(source, target, offsets);
+                    return label;
+                }
+                /*state machine for single byte mode*/
+                while(AfterGetTrail || source.hasRemaining()){
+                    if(targetCapacity<=0 && !AfterGetTrail){
+                        /*target is full*/
+                        cr = CoderResult.OVERFLOW;
+                        label = EndLoop;
+                        return label;
+                    }
+                    if(!AfterGetTrail){
+                        c = source.get();
+                        ++nextSourceIndex;
+                        
+                    }
+                    if(((c -0x20)&UConverterConstants.UNSIGNED_INT_MASK)<=0x5f && !AfterGetTrail){
+                        /*pass US-ASCII graphic character through*/
+                        target.put((byte)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        --targetCapacity;
+                    }else if((c & UConverterConstants.UNSIGNED_INT_MASK)<0x20 && !AfterGetTrail){
+                        if(((1L<<(c & UConverterConstants.UNSIGNED_INT_MASK))&0x2601)!=0){
+                            /*CR/LF/TAB/NUL*/
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                        } else {
+                            /*quote c0 control character*/
+                            c|=SQ0<<8;
+                            length = 2;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if(((delta=(c-currentOffset))&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f && !AfterGetTrail){
+                        /*use the current dynamic window*/
+                        target.put((byte)(delta|0x80));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        --targetCapacity;
+                    } else if(AfterGetTrail || UTF16.isSurrogate((char)c)){
+                        if(!AfterGetTrail){
+                            if(UTF16.isLeadSurrogate((char)c)){
+                                label = getTrail(source, target, offsets);
+                                if(label==EndLoop){
+                                    return label;
+                                }
+                            } else {
+                                /*this is unmatched lead code unit (2nd Surrogate)*/
+                                /*callback(illegal)*/
+                                cr = CoderResult.malformedForLength(1);
+                                label = EndLoop;
+                                return label;
+                            }
+                        }
+                                                
+                        
+                        if(AfterGetTrail){
+                            AfterGetTrail = false;
+                        }
+                        
+                        /*Compress supplementary character U+10000...U+10ffff */
+                        if(((delta=(c-currentOffset))&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f){
+                            /*use the current dynamic window*/
+                            target.put((byte)(delta|0x80));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                        } else if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                            /*there is a dynamic window that contains this character, change to it*/
+                            dynamicWindow = window;
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                            useDynamicWindow(dynamicWindow);
+                            c = (((int)(SC0+dynamicWindow))<<8 | (c-currentOffset)|0x80);
+                            length = 2;
+                            label  = OutputBytes;
+                            return label;
+                        } else if((code=getDynamicOffset())>=0){
+                            /*might check if there are come character in this window to come */
+                            /*define an extended window with this character*/
+                            code-=0x200;
+                            dynamicWindow=getNextDynamicWindow();
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                            useDynamicWindow(dynamicWindow);
+                            c = ((int)(SDX<<24) | (int)(dynamicWindow<<21)|
+                                 (int)(code<<8)| (c- currentOffset) |0x80  );
+                           // c = (((SDX)<<25) | (dynamicWindow<<21)|
+                             //           (code<<8)| (c- currentOffset) |0x80  );
+                            length = 4;
+                            label = OutputBytes;
+                            return label;
+                        } else {
+                            /*change to unicode mode and output this (lead, trail) pair*/
+                            isSingleByteMode = false;
+                            target.put((byte)SCU);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                            c = ((int)(lead<<16))|trail;
+                            length = 4;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if((c&UConverterConstants.UNSIGNED_INT_MASK)<0xa0){
+                        /*quote C1 control character*/
+                        c = (c&0x7f) | (SQ0+1)<<8; /*SQ0+1 == SQ1*/
+                        length = 2;
+                        label = OutputBytes;
+                        return label;
+                    } else if((c&UConverterConstants.UNSIGNED_INT_MASK)==0xfeff || (c&UConverterConstants.UNSIGNED_INT_MASK)>= 0xfff0){
+                        /*quote signature character = byte order mark and specials*/
+                        c |= SQU<<16;
+                        length = 3;
+                        label = OutputBytes;
+                        return label;
+                    } else {
+                        /*compress all other BMP characters*/
+                        if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                            /*there is a window defined that contains this character - switch to it or quote from it*/
+                            if(source.position()>=source.limit() || isInOffsetWindowOrDirect(data.fromUDynamicOffsets[window], source.get(source.position()))){
+                                /*change to dynamic window*/
+                                dynamicWindow = window;
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((SC0+window)<<8)) | (c- currentOffset) | 0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else {
+                                /*quote from dynamic window*/
+                                c = ((int)((SQ0+window)<<8)) | (c - data.fromUDynamicOffsets[window]) |
+                                    0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            }
+                        } else if((window = getWindow(staticOffsets))>=0){
+                            /*quote from static window*/
+                            c = ((int)((SQ0+window)<<8)) | (c - staticOffsets[window]);
+                            length = 2;
+                            label = OutputBytes;
+                            return label;
+                        }else if((code=getDynamicOffset())>=0){
+                            /*define a dynamic window with this character*/
+                            dynamicWindow = getNextDynamicWindow();
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                            useDynamicWindow(dynamicWindow);
+                            c = ((int)((SD0+dynamicWindow)<<16)) | (int)(code<<8)|
+                                (c- currentOffset) | 0x80;
+                            length = 3;
+                            label = OutputBytes;
+                            return label;
+                        } else if(((int)((c-0x3400)&UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400) && (source.position()>=source.limit() || 
+                                ((int)((source.get(source.position())-0x3400)&UConverterConstants.UNSIGNED_INT_MASK))< (0xd800 - 0x3400))){
+                            
+                            /*
+                             * this character is not compressible (a BMP ideograph of similar)
+                             * switch to Unicode mode if this is the last character in the block
+                             * or there is at least one more ideograph following immediately
+                             */
+                             isSingleByteMode = false;
+                             c|=SCU<<16;
+                             length =3;
+                             label = OutputBytes;
+                             return label;
+                        } else {
+                            /*quote Unicode*/
+                            c|=SQU<<16;
+                            length = 3;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    }
+                    /*normal end of conversion : prepare for new character */
+                    c = 0;
+                    sourceIndex = nextSourceIndex;
+                }
+            } else {
+                if(c!=0 && targetCapacity>0 && !AfterGetTrailUnicode){
+                    label = GetTrailUnicode;
+                    return label;
+                }
+            
+                /*state machine for Unicode*/
+                /*unicodeByteMode*/
+                while(AfterGetTrailUnicode || source.hasRemaining()){
+                    if(targetCapacity<=0 && !AfterGetTrailUnicode){
+                        /*target is full*/
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        break;
+                    }
+                    if(!AfterGetTrailUnicode){
+                        c = source.get();
+                        ++nextSourceIndex;
+                    }
+                    
+                    if((((c-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400) && !AfterGetTrailUnicode){
+                        /*not compressible, write character directly */
+                        if(targetCapacity>=2){
+                            target.put((byte)(c>>8));
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                                offsets.put(sourceIndex);
+                            }
+                            targetCapacity-=2;
+                        } else {
+                            length =2;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if((((c-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300*/&& !AfterGetTrailUnicode){
+                        /*compress BMP character if the following one is not an uncompressible ideograph*/
+                        if(!(source.hasRemaining() && (((source.get(source.position())-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400))){
+                            if(((((c-0x30)&UConverterConstants.UNSIGNED_INT_MASK))<10 || (((c-0x61)&UConverterConstants.UNSIGNED_INT_MASK))<26 
+                                    || (((c-0x41)&UConverterConstants.UNSIGNED_INT_MASK))<26)){
+                                /*ASCII digit or letter*/
+                                isSingleByteMode = true;
+                                c |=((int)((UC0+dynamicWindow)<<8))|c;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                                /*there is a dynamic window that contains this character, change to it*/
+                                isSingleByteMode = true;
+                                dynamicWindow = window;
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((UC0+dynamicWindow)<<8)) | (c- currentOffset) | 0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else if((code=getDynamicOffset())>=0){
+                                /*define a dynamic window with this character*/
+                                isSingleByteMode = true;
+                                dynamicWindow = getNextDynamicWindow();
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((UD0+dynamicWindow)<<16)) | (int)(code<<8) 
+                                    |(c- currentOffset) | 0x80;
+                                length = 3;
+                                label = OutputBytes;
+                                return label;
+                            }
+                        }
+                        
+                        /*don't know how to compress these character, just write it directly*/
+                        length = 2;
+                        label = OutputBytes;
+                        return label;
+                    } else if(c<0xe000 && !AfterGetTrailUnicode){
+                        label = GetTrailUnicode;
+                        return label;
+                    } else {
+                        /*quote to avoid SCSU tags*/
+                        c|=UQU<<16;
+                        length = 3;
+                        label = OutputBytes;
+                        return label;
+                    }
+                    
+                    if(AfterGetTrailUnicode){
+                        AfterGetTrailUnicode = false;
+                    }
+                    /*normal end of conversion, prepare for a new character*/
+                    c = 0;
+                    sourceIndex = nextSourceIndex;
+                }
+            }
+            label = EndLoop;
+            return label;
+        }
+        
+        private int getTrail(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            lead = (char)c;
+            int label = Loop;
+            if(source.hasRemaining()){
+                /*test the following code unit*/
+                trail = source.get(source.position());
+                if(UTF16.isTrailSurrogate((char)trail)){
+                    source.position(source.position()+1);
+                    ++nextSourceIndex;
+                    c = UCharacter.getCodePoint((char)c, trail);
+                    label = Loop;
+                } else {
+                    /*this is unmatched lead code unit (1st Surrogate)*/
+                    /*callback(illegal)*/
+                    cr = CoderResult.malformedForLength(1);
+                    label = EndLoop;
+                }
+            }else {
+                /*no more input*/
+                label = EndLoop;
+            }
+            AfterGetTrail = true;
+            return label;
+        }
+        
+        private int getTrailUnicode(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label = EndLoop;
+            AfterGetTrailUnicode = true;
+            /*c is surrogate*/
+            if(UTF16.isLeadSurrogate((char)c)){
+      // getTrailUnicode:   
+                lead = (char)c;
+                if(source.hasRemaining()){
+                    /*test the following code unit*/
+                    trail = source.get(source.position());
+                    if(UTF16.isTrailSurrogate(trail)){
+                        source.get();
+                        ++nextSourceIndex;
+                        c = UCharacter.getCodePoint((char)c, trail);
+                        /*convert this surrogate code point*/
+                        /*exit this condition tree*/
+                    } else {
+                        /*this is unmatched lead code unit(1st surrogate)*/
+                        /*callback(illegal)*/
+                        cr = CoderResult.malformedForLength(1);
+                        label = EndLoop;
+                        return label;
+                    }
+                } else {
+                    /*no more input*/
+                    label = EndLoop;
+                    return label;
+                }
+            } else {
+                /*this is an unmatched trail code point (2nd surrogate)*/
+                /*callback (illegal)*/
+                cr = CoderResult.malformedForLength(1);
+                label = EndLoop;
+                return label;
+            }
+            
+            /*compress supplementary character*/
+            if((window=getWindow(data.fromUDynamicOffsets))>=0 && 
+                    !(source.hasRemaining() && ((source.get(source.position())-0x3400)&UConverterConstants.UNSIGNED_INT_MASK) < 
+                            (0xd800 - 0x3400))){
+                /*
+                 * this is the dynamic window that contains this character and the following
+                 * character is not uncompressible,
+                 * change to the window
+                 */
+                isSingleByteMode = true;
+                dynamicWindow = window;
+                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                useDynamicWindow(dynamicWindow);
+                c = ((UC0+dynamicWindow)<<8 | (c-currentOffset) | 0x80);
+                length = 2;
+                label = OutputBytes;
+                return label;
+            } else if(source.hasRemaining() && lead == source.get(source.position()) && (code=getDynamicOffset())>=0){
+                /*two supplementary characters in (probably) the same window - define an extended one*/
+                isSingleByteMode = true;
+                dynamicWindow = getNextDynamicWindow();
+                currentOffset = data.fromUDynamicOffsets[dynamicWindow] = offset;
+                useDynamicWindow(dynamicWindow);
+                c = (UDX<<24) | (dynamicWindow<<21) |(code<<8) |(c - currentOffset) | 0x80;
+                length = 4;
+                label = OutputBytes;
+                return label;
+            } else {
+                /*don't know how to compress this character, just write it directly*/
+                c = (lead<<16)|trail;
+                length = 4;
+                label = OutputBytes;
+                return label;
+            }
+            
+        }
+        
+        private void endLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            /*set the converter state back to UConverter*/
+            data.fromUIsSingleByteMode = isSingleByteMode;
+            data.fromUDynamicWindow = dynamicWindow;
+            fromUChar32 = c;
+            LabelLoop = false;
+        }
+        
+        private int outputBytes(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label;
+            //int targetCapacity = target.limit()-target.position();
+            /*write the output character byte from c and length*/
+            /*from the first if in the loop we know that targetCapacity>0*/
+            if(length<=targetCapacity){
+                if(offsets==null){
+                    switch(length){
+                    /*each branch falls through the next one*/
+                        case 4:
+                            target.put((byte)(c>>24));
+                        case 3:
+                            target.put((byte)(c>>16));
+                        case 2:
+                            target.put((byte)(c>>8));
+                        case 1:
+                            target.put((byte)c);
+                        default:
+                            /*will never occur*/
+                            break;
+                    }
+                }else {
+                    switch(length){
+                        /*each branch falls through to the next one*/
+                        case 4:
+                            target.put((byte)(c>>24));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 3:
+                            target.put((byte)(c>>16));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(c>>8));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        default:
+                            /*will never occur*/
+                            break;
+                    }
+                }
+                targetCapacity-=length;
+                
+                /*normal end of conversion: prepare for a new character*/
+                c = 0;
+                sourceIndex = nextSourceIndex;
+                label = Loop;
+                return label;
+            } else {
+                ByteBuffer p = ByteBuffer.wrap(errorBuffer);
+                /*
+                 * We actually do this backwards here:
+                 * In order to save an intermediate variable, we output
+                 * first to the overflow buffer what does not fit into the 
+                 * regular target
+                 */
+                /* we know that 0<=targetCapacity<length<=4 */
+                /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
+                length -= targetCapacity;
+                switch(length){
+                    /*each branch falls through the next one*/
+                    case 4:
+                        p.put((byte)(c>>24));
+                    case 3:
+                        p.put((byte)(c>>16));
+                    case 2:
+                        p.put((byte)(c>>8));
+                    case 1:
+                        p.put((byte)c);
+                    default:
+                        /*will never occur*/
+                        break;
+                }
+                errorBufferLength = length;
+                
+                /*now output what fits into the regular target*/
+                c>>=8*length; //length was reduced by targetCapacity
+                switch(targetCapacity){
+                    /*each branch falls through the next one*/
+                    case 3:
+                        target.put((byte)(c>>16));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    case 2:
+                        target.put((byte)(c>>8));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    case 1:
+                        target.put((byte)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    default:
+                        break;
+                }
+                
+                /*target overflow*/
+                targetCapacity = 0;
+                cr = CoderResult.OVERFLOW;
+                c = 0;
+                label = EndLoop;
+                return label;
+            }
+        }
+        
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderSCSU(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderSCSU(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        CharsetICU.getCompleteUnicodeSet(setFillIn);
+    }
+    
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16.java b/src/com/ibm/icu/charset/CharsetUTF16.java
new file mode 100644
index 0000000..43c13ce
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16.java
@@ -0,0 +1,288 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF16 extends CharsetICU {
+
+    private static final int SIGNATURE_LENGTH = 2;
+    private static final byte[] fromUSubstitution_BE = { (byte) 0xff, (byte) 0xfd };
+    private static final byte[] fromUSubstitution_LE = { (byte) 0xfd, (byte) 0xff };
+    private static final byte[] BOM_BE = { (byte) 0xfe, (byte) 0xff };
+    private static final byte[] BOM_LE = { (byte) 0xff, (byte) 0xfe };
+    private static final int ENDIAN_XOR_BE = 0;
+    private static final int ENDIAN_XOR_LE = 1;
+    private static final int NEED_TO_WRITE_BOM = 1;
+
+    private boolean isEndianSpecified;
+    private boolean isBigEndian;
+    private int endianXOR;
+    private byte[] bom;
+    private byte[] fromUSubstitution;
+
+    public CharsetUTF16(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+
+        this.isEndianSpecified = (this instanceof CharsetUTF16BE || this instanceof CharsetUTF16LE);
+        this.isBigEndian = !(this instanceof CharsetUTF16LE);
+
+        if (isBigEndian) {
+            this.bom = BOM_BE;
+            this.fromUSubstitution = fromUSubstitution_BE;
+            this.endianXOR = ENDIAN_XOR_BE;
+        } else {
+            this.bom = BOM_LE;
+            this.fromUSubstitution = fromUSubstitution_LE;
+            this.endianXOR = ENDIAN_XOR_LE;
+        }
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 2;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderUTF16 extends CharsetDecoderICU {
+        
+        private boolean isBOMReadYet;
+        private int actualEndianXOR;
+        private byte[] actualBOM;
+
+        public CharsetDecoderUTF16(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected void implReset() {
+            super.implReset();
+            isBOMReadYet = false;
+            actualBOM = null;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            /*
+             * If we detect a BOM in this buffer, then we must add the BOM size to the offsets because the actual
+             * converter function will not see and count the BOM. offsetDelta will have the number of the BOM bytes that
+             * are in the current buffer.
+             */
+            if (!isBOMReadYet) {
+                while (true) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+
+                    toUBytesArray[toULength++] = source.get();
+
+                    if (toULength == 1) {
+                        // on the first byte, we haven't decided whether or not it's bigEndian yet
+                        if ((!isEndianSpecified || isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_BE[toULength - 1]) {
+                            actualBOM = BOM_BE;
+                            actualEndianXOR = ENDIAN_XOR_BE;
+                        } else if ((!isEndianSpecified || !isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_LE[toULength - 1]) {
+                            actualBOM = BOM_LE;
+                            actualEndianXOR = ENDIAN_XOR_LE;
+                        } else {
+                            // we do not have a BOM (and we have toULength==1 bytes)
+                            actualBOM = null;
+                            actualEndianXOR = endianXOR;
+                            break;
+                        }
+                    } else if (toUBytesArray[toULength - 1] != actualBOM[toULength - 1]) {
+                        // we do not have a BOM (and we have toULength bytes)
+                        actualBOM = null;
+                        actualEndianXOR = endianXOR;
+                        break;
+                    } else if (toULength == SIGNATURE_LENGTH) {
+                        // we found a BOM! at last!
+                        // too bad we have to get ignore it now (like it was unwanted or something)
+                        toULength = 0;
+                        break;
+                    }
+                }
+
+                isBOMReadYet = true;
+            }
+
+            // now that we no longer need to look for a BOM, let's do some work
+
+            // if we have unfinished business
+            if (toUnicodeStatus != 0) {
+                CoderResult cr = decodeTrail(source, target, offsets, (char) toUnicodeStatus);
+                if (cr != null)
+                    return cr;
+            }
+
+            char char16;
+
+            while (true) {
+                while (toULength < 2) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+                    toUBytesArray[toULength++] = source.get();
+                }
+
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                char16 = (char) (((toUBytesArray[0 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | ((toUBytesArray[1 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK)));
+
+                if (!UTF16.isSurrogate(char16)) {
+                    toULength = 0;
+                    target.put(char16);
+                } else {
+                    CoderResult cr = decodeTrail(source, target, offsets, char16);
+                    if (cr != null)
+                        return cr;
+                }
+            }
+        }
+
+        private final CoderResult decodeTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets, char lead) {
+            if (!UTF16.isLeadSurrogate(lead)) {
+                // 2 bytes, lead malformed
+                toUnicodeStatus = 0;
+                return CoderResult.malformedForLength(2);
+            }
+
+            while (toULength < 4) {
+                if (!source.hasRemaining()) {
+                    // let this be unfinished business
+                    toUnicodeStatus = lead;
+                    return CoderResult.UNDERFLOW;
+                }
+                toUBytesArray[toULength++] = source.get();
+            }
+
+            char trail = (char) (((toUBytesArray[2 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | ((toUBytesArray[3 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK)));
+
+            if (!UTF16.isTrailSurrogate(trail)) {
+                // pretend like we didnt read the last 2 bytes
+                toULength = 2;
+                source.position(source.position() - 2);
+
+                // 2 bytes, lead malformed
+                toUnicodeStatus = 0;
+                return CoderResult.malformedForLength(2);
+            }
+
+            toUnicodeStatus = 0;
+            toULength = 0;
+
+            target.put(lead);
+
+            if (target.hasRemaining()) {
+                target.put(trail);
+                return null;
+            } else {
+                /* Put in overflow buffer (not handled here) */
+                charErrorBufferArray[0] = trail;
+                charErrorBufferLength = 1;
+                return CoderResult.OVERFLOW;
+            }
+        }
+    }
+
+    class CharsetEncoderUTF16 extends CharsetEncoderICU {
+        private final byte[] temp = new byte[4];
+
+        public CharsetEncoderUTF16(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr;
+
+            /* write the BOM if necessary */
+            if (fromUnicodeStatus == NEED_TO_WRITE_BOM) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                fromUnicodeStatus = 0;
+                cr = fromUWriteBytes(this, bom, 0, bom.length, target, offsets, -1);
+                if (cr.isOverflow())
+                    return cr;
+            }
+
+            if (fromUChar32 != 0) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                // a note: fromUChar32 will either be 0 or a lead surrogate
+                cr = encodeChar(source, target, offsets, (char) fromUChar32);
+                if (cr != null)
+                    return cr;
+            }
+
+            while (true) {
+                if (!source.hasRemaining())
+                    return CoderResult.UNDERFLOW;
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                cr = encodeChar(source, target, offsets, source.get());
+                if (cr != null)
+                    return cr;
+            }
+        }
+
+        private final CoderResult encodeChar(CharBuffer source, ByteBuffer target, IntBuffer offsets, char ch) {
+            int sourceIndex = source.position() - 1;
+            CoderResult cr;
+
+            if (UTF16.isSurrogate(ch)) {
+                cr = handleSurrogates(source, ch);
+                if (cr != null)
+                    return cr;
+
+                char trail = UTF16.getTrailSurrogate(fromUChar32);
+                fromUChar32 = 0;
+
+                // 4 bytes
+                temp[0 ^ endianXOR] = (byte) (ch >>> 8);
+                temp[1 ^ endianXOR] = (byte) (ch);
+                temp[2 ^ endianXOR] = (byte) (trail >>> 8);
+                temp[3 ^ endianXOR] = (byte) (trail);
+                cr = fromUWriteBytes(this, temp, 0, 4, target, offsets, sourceIndex);
+            } else {
+                // 2 bytes
+                temp[0 ^ endianXOR] = (byte) (ch >>> 8);
+                temp[1 ^ endianXOR] = (byte) (ch);
+                cr = fromUWriteBytes(this, temp, 0, 2, target, offsets, sourceIndex);
+            }
+            return (cr.isUnderflow() ? null : cr);
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF16(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF16(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);            
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16BE.java b/src/com/ibm/icu/charset/CharsetUTF16BE.java
new file mode 100644
index 0000000..b1bb374
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16BE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to true and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-16 converter without extra setup work.
+ */
+class CharsetUTF16BE extends CharsetUTF16 {
+    public CharsetUTF16BE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16LE.java b/src/com/ibm/icu/charset/CharsetUTF16LE.java
new file mode 100644
index 0000000..07607a0
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16LE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to false and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-16 converter without extra setup work.
+ */
+class CharsetUTF16LE extends CharsetUTF16 {
+    public CharsetUTF16LE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32.java b/src/com/ibm/icu/charset/CharsetUTF32.java
new file mode 100644
index 0000000..d2a8a5f
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32.java
@@ -0,0 +1,251 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF32 extends CharsetICU {
+
+    private static final int SIGNATURE_LENGTH = 4;
+    private static final byte[] fromUSubstitution_BE = { (byte) 0, (byte) 0, (byte) 0xff, (byte) 0xfd };
+    private static final byte[] fromUSubstitution_LE = { (byte) 0xfd, (byte) 0xff, (byte) 0, (byte) 0 };
+    private static final byte[] BOM_BE = { 0, 0, (byte) 0xfe, (byte) 0xff };
+    private static final byte[] BOM_LE = { (byte) 0xff, (byte) 0xfe, 0, 0 };
+    private static final int ENDIAN_XOR_BE = 0;
+    private static final int ENDIAN_XOR_LE = 3;
+    private static final int NEED_TO_WRITE_BOM = 1;
+
+    private boolean isEndianSpecified;
+    private boolean isBigEndian;
+    private int endianXOR;
+    private byte[] bom;
+    private byte[] fromUSubstitution;
+
+    public CharsetUTF32(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+
+        this.isEndianSpecified = (this instanceof CharsetUTF32BE || this instanceof CharsetUTF32LE);
+        this.isBigEndian = !(this instanceof CharsetUTF32LE);
+
+        if (isBigEndian) {
+            this.bom = BOM_BE;
+            this.fromUSubstitution = fromUSubstitution_BE;
+            this.endianXOR = ENDIAN_XOR_BE;
+        } else {
+            this.bom = BOM_LE;
+            this.fromUSubstitution = fromUSubstitution_LE;
+            this.endianXOR = ENDIAN_XOR_LE;
+        }
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 4;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderUTF32 extends CharsetDecoderICU {
+
+        private boolean isBOMReadYet;
+        private int actualEndianXOR;
+        private byte[] actualBOM;
+
+        public CharsetDecoderUTF32(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected void implReset() {
+            super.implReset();
+            isBOMReadYet = false;
+            actualBOM = null;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            /*
+             * If we detect a BOM in this buffer, then we must add the BOM size to the offsets because the actual
+             * converter function will not see and count the BOM. offsetDelta will have the number of the BOM bytes that
+             * are in the current buffer.
+             */
+            if (!isBOMReadYet) {
+                while (true) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+
+                    toUBytesArray[toULength++] = source.get();
+
+                    if (toULength == 1) {
+                        // on the first byte, we haven't decided whether or not it's bigEndian yet
+                        if ((!isEndianSpecified || isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_BE[toULength - 1]) {
+                            actualBOM = BOM_BE;
+                            actualEndianXOR = ENDIAN_XOR_BE;
+                        } else if ((!isEndianSpecified || !isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_LE[toULength - 1]) {
+                            actualBOM = BOM_LE;
+                            actualEndianXOR = ENDIAN_XOR_LE;
+                        } else {
+                            // we do not have a BOM (and we have toULength==1 bytes)
+                            actualBOM = null;
+                            actualEndianXOR = endianXOR;
+                            break;
+                        }
+                    } else if (toUBytesArray[toULength - 1] != actualBOM[toULength - 1]) {
+                        // we do not have a BOM (and we have toULength bytes)
+                        actualBOM = null;
+                        actualEndianXOR = endianXOR;
+                        break;
+                    } else if (toULength == SIGNATURE_LENGTH) {
+                        // we found a BOM! at last!
+                        // too bad we have to get ignore it now (like it was unwanted or something)
+                        toULength = 0;
+                        break;
+                    }
+                }
+
+                isBOMReadYet = true;
+            }
+
+            // now that we no longer need to look for a BOM, let's do some work
+            int char32;
+
+            while (true) {
+                while (toULength < 4) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+                    toUBytesArray[toULength++] = source.get();
+                }
+
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                char32 = 0;
+                for (int i = 0; i < 4; i++)
+                    char32 = (char32 << 8)
+                            | (toUBytesArray[i ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK);
+
+                if (0 <= char32 && char32 <= UConverterConstants.MAXIMUM_UTF && !isSurrogate(char32)) {
+                    toULength = 0;
+                    if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                        /* fits in 16 bits */
+                        target.put((char) char32);
+                    } else {
+                        /* write out the surrogates */
+                        target.put(UTF16.getLeadSurrogate(char32));
+                        char32 = UTF16.getTrailSurrogate(char32);
+                        if (target.hasRemaining()) {
+                            target.put((char) char32);
+                        } else {
+                            /* Put in overflow buffer (not handled here) */
+                            charErrorBufferArray[0] = (char) char32;
+                            charErrorBufferLength = 1;
+                            return CoderResult.OVERFLOW;
+                        }
+                    }
+                } else {
+                    return CoderResult.malformedForLength(toULength);
+                }
+            }
+        }
+    }
+
+    class CharsetEncoderUTF32 extends CharsetEncoderICU {
+        private final byte[] temp = new byte[4];
+
+        public CharsetEncoderUTF32(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr;
+
+            /* write the BOM if necessary */
+            if (fromUnicodeStatus == NEED_TO_WRITE_BOM) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                fromUnicodeStatus = 0;
+                cr = fromUWriteBytes(this, bom, 0, bom.length, target, offsets, -1);
+                if (cr.isOverflow())
+                    return cr;
+            }
+
+            if (fromUChar32 != 0) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                // a note: fromUChar32 will either be 0 or a lead surrogate
+                cr = encodeChar(source, target, offsets, (char) fromUChar32);
+                if (cr != null)
+                    return cr;
+            }
+
+            while (true) {
+                if (!source.hasRemaining())
+                    return CoderResult.UNDERFLOW;
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                cr = encodeChar(source, target, offsets, source.get());
+                if (cr != null)
+                    return cr;
+            }
+        }
+
+        private final CoderResult encodeChar(CharBuffer source, ByteBuffer target, IntBuffer offsets, char ch) {
+            int sourceIndex = source.position() - 1;
+            CoderResult cr;
+            int char32;
+
+            if (UTF16.isSurrogate(ch)) {
+                cr = handleSurrogates(source, ch);
+                if (cr != null)
+                    return cr;
+
+                char32 = fromUChar32;
+                fromUChar32 = 0;
+            } else {
+                char32 = ch;
+            }
+
+            /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+            // temp[0 ^ endianXOR] = (byte) (char32 >>> 24); // (always 0)
+            temp[1 ^ endianXOR] = (byte) (char32 >>> 16); // same as (byte)((char32 >>> 16) & 0x1f)
+            temp[2 ^ endianXOR] = (byte) (char32 >>> 8);
+            temp[3 ^ endianXOR] = (byte) (char32);
+            cr = fromUWriteBytes(this, temp, 0, 4, target, offsets, sourceIndex);
+            return (cr.isUnderflow() ? null : cr);
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF32(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF32(this);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);                    
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32BE.java b/src/com/ibm/icu/charset/CharsetUTF32BE.java
new file mode 100644
index 0000000..177b1f7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32BE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to true and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-32 converter without extra setup work.
+ */
+class CharsetUTF32BE extends CharsetUTF32 {
+    public CharsetUTF32BE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32LE.java b/src/com/ibm/icu/charset/CharsetUTF32LE.java
new file mode 100644
index 0000000..beb8303
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32LE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to false and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-32 converter without extra setup work.
+ */
+class CharsetUTF32LE extends CharsetUTF32 {
+    public CharsetUTF32LE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF7.java b/src/com/ibm/icu/charset/CharsetUTF7.java
new file mode 100644
index 0000000..29be66a
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF7.java
@@ -0,0 +1,756 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Michael Ow
+ *
+ */
+class CharsetUTF7 extends CharsetICU {
+    private final String IMAP_NAME="IMAP-mailbox-name";
+    private boolean useIMAP;
+    protected byte[] fromUSubstitution=new byte[]{0x3F};
+   
+    public CharsetUTF7(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar=4; /* max 3 bytes per code unit from UTF-7 (base64) */
+        minBytesPerChar=1;
+        maxCharsPerByte=1;
+        
+        useIMAP=false;
+        
+        if (icuCanonicalName.equals(IMAP_NAME)) {
+            useIMAP=true;
+        }
+    }
+    
+    //private static boolean inSetD(char c) {
+    //    return (
+    //            (char)(c - 97) < 26 || (char)(c - 65) < 26 || /* letters */
+    //            (char)(c - 48) < 10 ||                        /* digits */
+    //            (char)(c - 39) < 3 ||                          /* ' () */
+    //            (char)(c - 44) < 4 ||                          /* ,-./ */
+    //            (c==58) || (c==63)            /* :? */
+    //            );
+    //}
+    
+    //private static boolean inSetO(char c) {
+    //    return (
+    //            (char)(c - 33) < 6 ||                           /* !"#$%& */
+    //            (char)(c - 59) < 4 ||                           /* ;<=> */
+    //            (char)(c - 93) < 4 ||                           /* ]^_` */
+    //            (char)(c - 123) < 3 ||                         /* {|} */
+    //            (c==58) || (c==63)             /* *@[ */
+    //            );
+    //}
+    
+    private static boolean isCRLFTAB(char c) {
+        return (
+                (c==13) || (c==10) || (c==9)
+                );
+    }
+    
+    //private static boolean isCRLFSPTAB(char c) {
+    //   return (
+    //            (c==32) || (c==13) || (c==10) || (c==9)
+    //            );
+    //}
+    
+    private static final byte PLUS=43;
+    private static final byte MINUS=45;
+    private static final byte BACKSLASH=92;
+    //private static final byte TILDE=126;
+    private static final byte AMPERSAND=0x26;
+    private static final byte COMMA=0x2c;
+    private static final byte SLASH=0x2f;
+    
+    // legal byte values: all US-ASCII graphic characters 0x20..0x7e
+    private static boolean isLegal(char c, boolean useIMAP) {
+        if (useIMAP) {
+            return (
+                    (0x20 <= c) && (c <= 0x7e)
+                    );
+        } else {
+            return (
+                    ((char)(c - 32) < 94 && (c != BACKSLASH)) || isCRLFTAB(c)
+                    );
+        }
+    }
+    
+    // directly encode all of printable ASCII 0x20..0x7e except '&' 0x26
+    private static boolean inSetDIMAP(char c) {
+        return (
+                (isLegal(c, true) && c != AMPERSAND)
+                );
+    }
+    
+    private static byte TO_BASE64_IMAP(int n) {
+        return (n < 63 ? TO_BASE_64[n] : COMMA);
+    }
+    
+    private static byte FROM_BASE64_IMAP(char c) {
+        return (c==COMMA ? 63 : c==SLASH ? -1 : FROM_BASE_64[c]);
+    }
+    
+    /* encode directly sets D and O and CR LF SP TAB */
+    private static final byte ENCODE_DIRECTLY_MAXIMUM[] =
+    {
+     /*0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f*/
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+    };
+    
+    /* encode directly set D and CR LF SP TAB but not set O */
+    private static final byte ENCODE_DIRECTLY_RESTRICTED[] =
+    {
+     /*0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f*/
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        
+        1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
+        
+        0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
+        
+        0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
+    };
+    
+    private static final byte TO_BASE_64[] =
+    {
+       /* A-Z */
+       65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+       78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+       /* a-z */
+       97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+       110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+       /* 0-9 */
+       48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+       /* +/ */
+       43, 47
+    };
+    
+    private static final byte FROM_BASE_64[] =
+    {
+       /* C0 controls, -1 for legal ones (CR LF TAB), -3 for illegal ones */
+       -3, -3, -3, -3, -3, -3, -3, -3, -3, -1, -1, -3, -3, -1, -3, -3,
+       -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+       /* general punctuation with + and / and a special value (-2) for - */
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -2, -1, 63,
+       /* digits */
+       52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
+       /* A-Z */
+       -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+       15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -3, -1, -1, -1,       
+       /* a-z*/
+       -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+       41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -3, -3
+    };
+    
+    class CharsetDecoderUTF7 extends CharsetDecoderICU {
+        public CharsetDecoderUTF7(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+            toUnicodeStatus=(toUnicodeStatus & 0xf0000000) | 0x1000000;
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult cr=CoderResult.UNDERFLOW;
+            byte base64Value;
+            byte base64Counter;
+            byte inDirectMode;
+            char bits;
+            int byteIndex;
+            int sourceIndex, nextSourceIndex;
+            
+            int length;
+            
+            char b;
+            char c;
+            
+            int sourceArrayIndex=source.position();
+            
+            //get the state of the machine state
+            {
+            int status=toUnicodeStatus;
+            inDirectMode=(byte)((status >> 24) & 1);
+            base64Counter=(byte)(status >> 16);
+            bits=(char)status;
+            }
+            byteIndex=toULength;
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex=byteIndex==0 ? 0 : -1;
+            nextSourceIndex=0;            
+            
+            directMode:  while (true) {
+                if (inDirectMode==1) {
+                    /* 
+                     * In Direct Mode, most US-ASCII characters are encoded directly, i.e.,
+                     * with their US-ASCII byte values.
+                     * Backslash and Tilde and most control characters are not alled in UTF-7.
+                     * A plus sign starts Unicode (or "escape") Mode.
+                     * An ampersand starts Unicode Mode for IMAP.
+                     * 
+                     * In Direct Mode, only the sourceIndex is used.
+                     */
+                    byteIndex=0;
+                    length=source.remaining();
+                    //targetCapacity=target.remaining();
+                    //Commented out because length of source may be larger than target when it comes to bytes 
+                    /*if (useIMAP && length > targetCapacity) {
+                        length=targetCapacity;
+                    }*/
+                    while (length > 0) {
+                        b=(char)(source.get());
+                        sourceArrayIndex++;
+                        if (!isLegal(b, useIMAP)) {
+                            toUBytesArray[0]=(byte)b;
+                            byteIndex=1;
+                            cr=CoderResult.malformedForLength(sourceArrayIndex);
+                            break;
+                        } else if ((!useIMAP && b!=PLUS) || (useIMAP && b!=AMPERSAND)) {
+                            // write directly encoded character
+                            if (target.hasRemaining()) { // Check to make sure that there is room in target.
+                                target.put(b);
+                                if (offsets!= null) {
+                                    offsets.put(sourceIndex++);
+                                }
+                            } else {  // Get out and set the CoderResult.
+                                break;
+                            }
+                        } else { /* PLUS or (AMPERSAND in IMAP)*/
+                            /* switch to Unicode mode */
+                            nextSourceIndex=++sourceIndex;
+                            inDirectMode=0;
+                            byteIndex=0;
+                            bits=0;
+                            base64Counter=-1;
+                            continue directMode;
+                        }
+                        --length;
+                    }//end of while
+                    if (source.hasRemaining() && target.position() >= target.limit()) {
+                        /* target is full */
+                        cr=CoderResult.OVERFLOW;
+                    }
+                    break directMode;
+                } else { /* Unicode Mode*/
+                    /* 
+                     * In Unicode Mode, UTF-16BE is base64-encoded.
+                     * The base64 sequence ends with any character that is not in the base64 alphabet.
+                     * A terminating minus sign is consumed.
+                     * 
+                     * In Unicode Mode, the sourceIndex has the index to the start of the current
+                     * base64 bytes, while nextSourceIndex is precisely parallel to source,
+                     * keeping the index to the following byte.
+                     */
+                    while(source.hasRemaining()) {
+                        if (target.hasRemaining()) {
+                            b=(char)source.get();
+                            sourceArrayIndex++;
+                            toUBytesArray[byteIndex++]=(byte)b;
+                            if ((!useIMAP && b>=126) || (useIMAP && b>0x7e)) {
+                                /* illegal - test other illegal US-ASCII values by base64Value==-3 */
+                                inDirectMode=1;
+                                cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                break directMode;
+                            } else if (((base64Value=FROM_BASE_64[b])>=0 && !useIMAP) || ((base64Value=FROM_BASE64_IMAP(b))>=0) && useIMAP) {
+                                /* collect base64 bytes */
+                                switch (base64Counter) {
+                                case -1: /* -1 is immediately after the + */
+                                case 0:
+                                    bits=(char)base64Value;
+                                    base64Counter=1;
+                                    break;
+                                case 1:
+                                case 3:
+                                case 4:
+                                case 6:
+                                    bits=(char)((bits<<6) | base64Value);
+                                    ++base64Counter;
+                                    break;
+                                case 2:
+                                    c=(char)((bits<<4) | (base64Value>>2));
+                                    if (useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex - 1;
+                                    }
+                                    toUBytesArray[0]=(byte)b; /* keep this byte in case an error occurs */
+                                    byteIndex=1;
+                                    bits=(char)(base64Value&3);
+                                    base64Counter=3;
+                                    break;
+                                case 5:
+                                    c=(char)((bits<<2) | (base64Value>>4));
+                                    if(useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex - 1;
+                                    }
+                                    toUBytesArray[0]=(byte)b; /* keep this byte in case an error occurs */
+                                    byteIndex=1;
+                                    bits=(char)(base64Value&15);
+                                    base64Counter=6;
+                                    break;
+                                case 7:
+                                    c=(char)((bits<<6) | base64Value);
+                                    if (useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex;
+                                    }
+                                    byteIndex=0;
+                                    bits=0;
+                                    base64Counter=0;
+                                    break;
+                                //default:                  
+                                    /* will never occur */
+                                    //break;                                                           
+                                }//end of switch
+                            } else if (base64Value==-2) {
+                                /* minus sign terminates the base64 sequence */
+                                inDirectMode=1;
+                                if (base64Counter==-1) {
+                                    /* +- i.e. a minus immediately following a plus */
+                                    target.put(useIMAP ? (char)AMPERSAND : (char)PLUS);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex - 1);
+                                    }
+                                } else {
+                                    /* absorb the minus and leave the Unicode Mode */
+                                    if (bits!=0 || (useIMAP && base64Counter!=0 && base64Counter!=3 && base64Counter!=6)) {
+                                        /*bits are illegally left over, a unicode character is incomplete */
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        break;
+                                    }
+                                }
+                                sourceIndex=nextSourceIndex;
+                                continue directMode;
+                            } else if (!useIMAP && base64Value==-1) { /* for any legal character except base64 and minus sign */
+                                /* leave the Unicode Mode */
+                                inDirectMode=1;
+                                if (base64Counter==-1) {
+                                    /* illegal:  + immediately followed by something other than base64 minus sign */
+                                    /* include the plus sign in the reported sequence */
+                                    --sourceIndex;
+                                    toUBytesArray[0]=(byte)PLUS;
+                                    toUBytesArray[1]=(byte)b;
+                                    byteIndex=2;
+                                    cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                    break;
+                                } else if (bits==0) {
+                                    /* un-read the character in case it is a plus sign */
+                                    source.position(--sourceArrayIndex);
+                                    sourceIndex=nextSourceIndex - 1;
+                                    continue directMode;
+                                } else {
+                                    /* bits are illegally left over, a unicode character is incomplete */
+                                    cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                    break;
+                                }
+                            } else { 
+                                if (useIMAP && base64Counter==-1) {
+                                    // illegal: & immediately followed by something other than base64 or minus sign
+                                    // include the ampersand in the reported sequence
+                                    --sourceIndex;
+                                    toUBytesArray[0]=(byte)AMPERSAND;
+                                    toUBytesArray[1]=(byte)b;
+                                    byteIndex=2;
+                                }
+                                /* base64Value==-3 for illegal characters */
+                                /* illegal */
+                                inDirectMode=1;
+                                cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                break;
+                            }
+                        } else {
+                            /* target is full */
+                            cr=CoderResult.OVERFLOW;
+                            break;
+                        }
+                    } //end of while
+                    break directMode;
+                }
+            }//end of direct mode label
+            if (useIMAP) {
+                if (!cr.isError() && inDirectMode==0 && flush && byteIndex==0 && !source.hasRemaining()) {
+                    if (base64Counter==-1) {
+                        /* & at the very end of the input */
+                        /* make the ampersand the reported sequence */
+                        toUBytesArray[0]=(byte)AMPERSAND;
+                        byteIndex=1;
+                    }
+                    /* else if (base64Counter!=-1) byteIndex remains 0 because ther is no particular byte sequence */
+                    inDirectMode=1;
+                    cr=CoderResult.malformedForLength(sourceIndex);
+                }
+                
+            } else {
+                if (!cr.isError() && flush && !source.hasRemaining() && bits  ==0) {
+                    /*
+                     * if we are in Unicode Mode, then the byteIndex might not be 0,
+                     * but that is ok if bits -- 0
+                     * -> we set byteIndex=0 at the end of the stream to avoid a truncated error 
+                     * (not true for IMAP-mailbox-name where we must end in direct mode)
+                     */
+                    if (!cr.isOverflow()) {
+                        byteIndex=0;
+                    }
+                }
+            }
+            /* set the converter state */
+            toUnicodeStatus=((int)inDirectMode<<24 | (int)(((short)base64Counter & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) | (int)bits);
+            toULength=byteIndex;
+   
+            return cr;
+        }
+    }
+    
+    class CharsetEncoderUTF7 extends CharsetEncoderICU {
+        public CharsetEncoderUTF7(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus=(fromUnicodeStatus & 0xf0000000) | 0x1000000;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr=CoderResult.UNDERFLOW;
+            byte inDirectMode;
+            byte encodeDirectly[];
+            int status;
+            
+            int length, targetCapacity, sourceIndex;
+            
+            byte base64Counter;
+            char bits;
+            char c;
+            char b;
+            /* get the state machine state */
+            {
+                status=fromUnicodeStatus;
+                encodeDirectly=(((long)status) < 0x10000000) ? ENCODE_DIRECTLY_MAXIMUM : ENCODE_DIRECTLY_RESTRICTED;
+                inDirectMode=(byte)((status >> 24) & 1);
+                base64Counter=(byte)(status >> 16);
+                bits=(char)((byte)status);
+            }
+            /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
+            sourceIndex=0;
+            
+            directMode: while(true) {
+            if(inDirectMode==1) {
+                length=source.remaining();
+                targetCapacity=target.remaining();
+                if(length > targetCapacity) {
+                    length=targetCapacity;
+                }
+                while (length > 0) {
+                    c=source.get();
+                    /* UTF7: currently always encode CR LF SP TAB directly */
+                    /* IMAP: encode 0x20..0x7e except '&' directly */
+                    if ((!useIMAP && c<=127 && encodeDirectly[c]==1) || (useIMAP && inSetDIMAP(c))) {
+                        /* encode directly */
+                        target.put((byte)c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex++);
+                        }
+                    } else if ((!useIMAP && c==PLUS) || (useIMAP && c==AMPERSAND)) {
+                        /* IMAP: output &- for & */
+                        /* UTF-7: output +- for + */
+                        target.put(useIMAP ? (byte)AMPERSAND : (byte)PLUS);
+                        if (target.hasRemaining()) {
+                            target.put((byte)MINUS);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                                offsets.put(sourceIndex++);
+                            }
+                            /* realign length and targetCapacity */
+                            continue directMode;
+                        } else {
+                            if (offsets != null) {
+                                offsets.put(sourceIndex++);
+                            }
+                            errorBuffer[0]=MINUS;
+                            errorBufferLength=1;
+                            cr=CoderResult.OVERFLOW;
+                            break;
+                        }
+                    } else {
+                        /* un-read this character and switch to unicode mode */
+                        source.position(source.position() - 1);
+                        target.put(useIMAP ? (byte)AMPERSAND : (byte)PLUS);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        inDirectMode=0;
+                        base64Counter=0;
+                        continue directMode;
+                    }
+                    --length;
+                } //end of while
+                if (source.hasRemaining() && !target.hasRemaining()) {
+                    /* target is full */
+                    cr=CoderResult.OVERFLOW;
+                }
+                break directMode;
+            } else { 
+                /* Unicode Mode */
+                while (source.hasRemaining()) {
+                    if (target.hasRemaining()) {
+                        c=source.get();
+                        if ((!useIMAP && c<=127 && encodeDirectly[c]==1) || (useIMAP && isLegal(c, useIMAP))) {
+                            /* encode directly */
+                            inDirectMode=1;
+                            
+                            /* trick: back out this character to make this easier */
+                            source.position(source.position() - 1);
+                            
+                            /* terminate the base64 sequence */
+                            if (base64Counter!=0) {
+                                /* write remaining bits for the previous character */
+                                target.put(useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits]);
+                                if (offsets!=null) {
+                                    offsets.put(sourceIndex-1);
+                                }
+                            }
+                            if (FROM_BASE_64[c]!=-1 || useIMAP) {
+                                /* need to terminate with a minus */
+                                if (target.hasRemaining()) {
+                                    target.put((byte)MINUS);
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex-1);
+                                    }
+                                } else {
+                                    errorBuffer[0]=MINUS;
+                                    errorBufferLength=1;
+                                    cr=CoderResult.OVERFLOW;
+                                    break;
+                                }
+                            }
+                            continue directMode;
+                        } else {
+                            /*
+                             * base64 this character:
+                             * Output 2 or 3 base64 bytres for the remaining bits of the previous character
+                             * and the bits of this character, each implicitly in UTF-16BE.
+                             * 
+                             * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
+                             * character to the next.  The actual 2 or 4 bits are shifted to the left edge
+                             * of the 6-bits filed 5..0 to make the termination of the base64 sequence easier.
+                             */
+                            switch (base64Counter) {
+                            case 0:
+                                b=(char)(c>>10);
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>4)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex++);
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>4)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=1;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=(char)((c&15)<<2);
+                                base64Counter=1;
+                                break;
+                            case 1:
+                                b=(char)(bits|(c>>14));
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>8)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (target.hasRemaining()) {
+                                        b=(char)((c>>2)&0x3f);
+                                        target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                    } else {
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                        b=(char)((c>>2)&0x3f);
+                                        errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                        errorBufferLength=1;
+                                        cr=CoderResult.OVERFLOW;
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>8)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    b=(char)((c>>2)&0x3f);
+                                    errorBuffer[1]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=2;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=(char)((c&3)<<4);
+                                base64Counter=2;
+                                break;
+                            case 2:
+                                b=(char)(bits|(c>>12));
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>6)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (target.hasRemaining()) {
+                                        b=(char)(c&0x3f);
+                                        target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                    } else {
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                        b=(char)(c&0x3f);
+                                        errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                        errorBufferLength=1;
+                                        cr=CoderResult.OVERFLOW;
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>6)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    b=(char)(c&0x3f);
+                                    errorBuffer[1]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=2;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=0;
+                                base64Counter=0;
+                                break;
+                           //default:
+                               /* will never occur */
+                               //break;
+                           } //end of switch 
+                        }                      
+                    } else {
+                        /* target is full */
+                        cr=CoderResult.OVERFLOW;
+                        break;
+                    }
+                } //end of while
+                break directMode;
+            }
+            } //end of directMode label
+            
+            if (flush && !source.hasRemaining()) {
+                /* flush remaining bits to the target */
+                if (inDirectMode==0) {
+                    if (base64Counter!=0) {
+                        if (target.hasRemaining()) {
+                            target.put(useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits]);
+                            if (offsets!=null) {
+                                offsets.put(sourceIndex - 1);
+                            }
+                        } else {
+                            errorBuffer[errorBufferLength++]=useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits];
+                            cr=CoderResult.OVERFLOW;
+                        }
+                    }
+                    if (useIMAP) {
+                        /* IMAP: need to terminate with a minus */
+                        if (target.hasRemaining()) {
+                            target.put((byte)MINUS);
+                            if (offsets!=null) {
+                                offsets.put(sourceIndex - 1);
+                            }
+                        } else {
+                            errorBuffer[errorBufferLength++]=MINUS;
+                            cr=CoderResult.OVERFLOW;
+                        }
+                    }
+                }
+                /*reset the state for the next conversion */
+                fromUnicodeStatus=((status&0xf0000000) | 0x1000000); /* keep version, inDirectMode=TRUE */
+            } else {
+                /* set the converter state back */
+                fromUnicodeStatus=((status&0xf0000000) | ((int)inDirectMode<<24) | (int)(((short)base64Counter & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) | ((int)bits));
+            }
+            
+            return cr;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF7(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF7(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF8.java b/src/com/ibm/icu/charset/CharsetUTF8.java
new file mode 100644
index 0000000..60f33a7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF8.java
@@ -0,0 +1,694 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF8 extends CharsetICU {
+
+    private static final byte[] fromUSubstitution = new byte[] { (byte) 0xef, (byte) 0xbf, (byte) 0xbd };
+
+    public CharsetUTF8(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        /* max 3 bytes per code unit from UTF-8 (4 bytes from surrogate _pair_) */
+        maxBytesPerChar = 3;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+    }
+
+    private static final int BITMASK_FROM_UTF8[] = { -1, 0x7f, 0x1f, 0xf, 0x7, 0x3, 0x1 };
+
+    private static final byte BYTES_FROM_UTF8[] = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
+    };
+
+    /*
+     * Starting with Unicode 3.0.1: UTF-8 byte sequences of length N _must_ encode code points of or
+     * above utf8_minChar32[N]; byte sequences with more than 4 bytes are illegal in UTF-8, which is
+     * tested with impossible values for them
+     */
+    private static final int UTF8_MIN_CHAR32[] = { 0, 0, 0x80, 0x800, 0x10000,
+            Integer.MAX_VALUE, Integer.MAX_VALUE };
+
+    private final boolean isCESU8 = this instanceof CharsetCESU8;
+
+    class CharsetDecoderUTF8 extends CharsetDecoderICU {
+
+        public CharsetDecoderUTF8(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            if (source.hasArray() && target.hasArray()) {
+                /* source and target are backed by arrays, so use the arrays for optimal performance */
+                byte[] sourceArray = source.array();
+                int sourceIndex = source.arrayOffset() + source.position();
+                int sourceLimit = source.arrayOffset() + source.limit();
+                char[] targetArray = target.array();
+                int targetIndex = target.arrayOffset() + target.position();
+                int targetLimit = target.arrayOffset() + target.limit();
+
+                byte ch;
+                int char32, bytesExpected, bytesSoFar;
+                CoderResult cr;
+
+                if (mode == 0) {
+                    /* nothing is stored in toUnicodeStatus, read a byte as input */
+                    char32 = (toUBytesArray[0] = sourceArray[sourceIndex++]) & 0xff;
+                    bytesExpected = BYTES_FROM_UTF8[char32];
+                    char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                    bytesSoFar = 1;
+                } else {
+                    /* a partially or fully built code point is stored in toUnicodeStatus */
+                    char32 = toUnicodeStatus;
+                    bytesExpected = mode;
+                    bytesSoFar = toULength;
+
+                    toUnicodeStatus = 0;
+                    mode = 0;
+                    toULength = 0;
+                }
+
+                outer: while (true) {
+                    if (bytesSoFar < bytesExpected) {
+                        /* read a trail byte and insert its relevant bits into char32 */
+                        if (sourceIndex >= sourceLimit) {
+                            /* no source left, save the state for later and break out of the loop */
+                            toUnicodeStatus = char32;
+                            mode = bytesExpected;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (((ch = toUBytesArray[bytesSoFar] = sourceArray[sourceIndex++]) & 0xc0) != 0x80) {
+                            /* not a trail byte (is not of the form 10xxxxxx) */
+                            sourceIndex--;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.malformedForLength(bytesSoFar);
+                            break;
+                        }
+                        char32 = (char32 << 6) | (ch & 0x3f);
+                        bytesSoFar++;
+                    } else if (bytesSoFar == bytesExpected && UTF8_MIN_CHAR32[bytesExpected] <= char32 && char32 <= 0x10ffff
+                            && (isCESU8 ? bytesExpected <= 3 : !UTF16.isSurrogate((char) char32))) {
+                        /*
+                         * char32 is a valid code point and is composed of the correct number of
+                         * bytes ... we now need to output it in UTF-16
+                         */
+
+                        if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                            /* fits in 16 bits */
+                            targetArray[targetIndex++] = (char) char32;
+                        } else {
+                            /* fit char32 into 20 bits */
+                            char32 -= UConverterConstants.HALF_BASE;
+
+                            /* write out the surrogates */
+                            targetArray[targetIndex++] = (char) ((char32 >>> UConverterConstants.HALF_SHIFT) + UConverterConstants.SURROGATE_HIGH_START);
+
+                            if (targetIndex >= targetLimit) {
+                                /* put in overflow buffer (not handled here) */
+                                charErrorBufferArray[charErrorBufferBegin++] = (char) char32;
+                                cr = CoderResult.OVERFLOW;
+                                break;
+                            }
+                            targetArray[targetIndex++] = (char) ((char32 & UConverterConstants.HALF_MASK) + UConverterConstants.SURROGATE_LOW_START);
+                        }
+
+                        /*
+                         * we're finished outputing, so now we need to read in the first byte of the
+                         * next byte sequence that could form a code point
+                         */
+
+                        if (sourceIndex >= sourceLimit) {
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (targetIndex >= targetLimit) {
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+
+                        /* keep reading the next input (and writing it) while bytes == 1 */
+                        while ((bytesExpected = BYTES_FROM_UTF8[char32 = (toUBytesArray[0] = sourceArray[sourceIndex++]) & 0xff]) == 1) {
+                            targetArray[targetIndex++] = (char) char32;
+                            if (sourceIndex >= sourceLimit) {
+                                cr = CoderResult.UNDERFLOW;
+                                break outer;
+                            }
+                            if (targetIndex >= targetLimit) {
+                                cr = CoderResult.OVERFLOW;
+                                break outer;
+                            }
+                        }
+
+                        /* remove the bits that indicate the number of bytes */
+                        char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                        bytesSoFar = 1;
+                    } else {
+                        /*
+                         * either the lead byte in the code sequence is invalid (bytes == 0) or the
+                         * lead byte combined with all the trail chars does not form a valid code
+                         * point
+                         */
+                        toULength = bytesSoFar;
+                        cr = CoderResult.malformedForLength(bytesSoFar);
+                        break;
+                    }
+                }
+
+                source.position(sourceIndex - source.arrayOffset());
+                target.position(targetIndex - target.arrayOffset());
+                return cr;
+
+            } else {
+
+                int sourceIndex = source.position();
+                int sourceLimit = source.limit();
+                int targetIndex = target.position();
+                int targetLimit = target.limit();
+
+                byte ch;
+                int char32, bytesExpected, bytesSoFar;
+                CoderResult cr;
+
+                if (mode == 0) {
+                    /* nothing is stored in toUnicodeStatus, read a byte as input */
+                    char32 = (toUBytesArray[0] = source.get(sourceIndex++)) & 0xff;
+                    bytesExpected = BYTES_FROM_UTF8[char32];
+                    char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                    bytesSoFar = 1;
+                } else {
+                    /* a partially or fully built code point is stored in toUnicodeStatus */
+                    char32 = toUnicodeStatus;
+                    bytesExpected = mode;
+                    bytesSoFar = toULength;
+
+                    toUnicodeStatus = 0;
+                    mode = 0;
+                    toULength = 0;
+                }
+
+                outer: while (true) {
+                    if (bytesSoFar < bytesExpected) {
+                        /* read a trail byte and insert its relevant bits into char32 */
+                        if (sourceIndex >= sourceLimit) {
+                            /* no source left, save the state for later and break out of the loop */
+                            toUnicodeStatus = char32;
+                            mode = bytesExpected;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (((ch = toUBytesArray[bytesSoFar] = source.get(sourceIndex++)) & 0xc0) != 0x80) {
+                            /* not a trail byte (is not of the form 10xxxxxx) */
+                            sourceIndex--;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.malformedForLength(bytesSoFar);
+                            break;
+                        }
+                        char32 = (char32 << 6) | (ch & 0x3f);
+                        bytesSoFar++;
+                    }
+                    /*
+                     * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
+                     * - use only trail bytes after a lead byte (checked above)
+                     * - use the right number of trail bytes for a given lead byte
+                     * - encode a code point <= U+10ffff
+                     * - use the fewest possible number of bytes for their code points
+                     * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
+                     *
+                     * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
+                     * There are no irregular sequences any more.
+                     * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
+                     */
+                    else if (bytesSoFar == bytesExpected && UTF8_MIN_CHAR32[bytesExpected] <= char32 && char32 <= 0x10ffff
+                            && (isCESU8 ? bytesExpected <= 3 : !UTF16.isSurrogate((char) char32))) {
+                        /*
+                         * char32 is a valid code point and is composed of the correct number of
+                         * bytes ... we now need to output it in UTF-16
+                         */
+
+                        if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                            /* fits in 16 bits */
+                            target.put(targetIndex++, (char) char32);
+                        } else {
+                            /* fit char32 into 20 bits */
+                            char32 -= UConverterConstants.HALF_BASE;
+
+                            /* write out the surrogates */
+                            target.put(
+                                    targetIndex++,
+                                    (char) ((char32 >>> UConverterConstants.HALF_SHIFT) + UConverterConstants.SURROGATE_HIGH_START));
+
+                            if (targetIndex >= targetLimit) {
+                                /* put in overflow buffer (not handled here) */
+                                charErrorBufferArray[charErrorBufferBegin++] = (char) char32;
+                                cr = CoderResult.OVERFLOW;
+                                break;
+                            }
+                            target.put(
+                                    targetIndex++,
+                                    (char) ((char32 & UConverterConstants.HALF_MASK) + UConverterConstants.SURROGATE_LOW_START));
+                        }
+
+                        /*
+                         * we're finished outputing, so now we need to read in the first byte of the
+                         * next byte sequence that could form a code point
+                         */
+
+                        if (sourceIndex >= sourceLimit) {
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (targetIndex >= targetLimit) {
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+
+                        /* keep reading the next input (and writing it) while bytes == 1 */
+                        while ((bytesExpected = BYTES_FROM_UTF8[char32 = (toUBytesArray[0] = source.get(sourceIndex++)) & 0xff]) == 1) {
+                            target.put(targetIndex++, (char) char32);
+                            if (sourceIndex >= sourceLimit) {
+                                cr = CoderResult.UNDERFLOW;
+                                break outer;
+                            }
+                            if (targetIndex >= targetLimit) {
+                                cr = CoderResult.OVERFLOW;
+                                break outer;
+                            }
+                        }
+
+                        /* remove the bits that indicate the number of bytes */
+                        char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                        bytesSoFar = 1;
+                    } else {
+                        /*
+                         * either the lead byte in the code sequence is invalid (bytes == 0) or the
+                         * lead byte combined with all the trail chars does not form a valid code
+                         * point
+                         */
+                        toULength = bytesSoFar;
+                        cr = CoderResult.malformedForLength(bytesSoFar);
+                        break;
+                    }
+                }
+
+                source.position(sourceIndex);
+                target.position(targetIndex);
+                return cr;
+            }
+        }
+
+    }
+
+    class CharsetEncoderUTF8 extends CharsetEncoderICU {
+
+        public CharsetEncoderUTF8(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+
+        protected void implReset() {
+            super.implReset();
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            if (source.hasArray() && target.hasArray()) {
+                /* source and target are backed by arrays, so use the arrays for optimal performance */
+                char[] sourceArray = source.array();
+                int srcIdx = source.arrayOffset() + source.position();
+                int sourceLimit = source.arrayOffset() + source.limit();
+                byte[] targetArray = target.array();
+                int tgtIdx = target.arrayOffset() + target.position();
+                int targetLimit = target.arrayOffset() + target.limit();
+
+                int char32;
+                CoderResult cr;
+
+                /* take care of the special condition of fromUChar32 not being 0 (it is a surrogate) */
+                if (fromUChar32 != 0) {
+                    /* 4 bytes to encode from char32 and a following char in source */
+
+                    sourceIndex = srcIdx;
+                    targetIndex = tgtIdx;
+                    cr = encodeFourBytes(sourceArray, targetArray, sourceLimit, targetLimit,
+                            fromUChar32);
+                    srcIdx = sourceIndex;
+                    tgtIdx = targetIndex;
+                    if (cr != null) {
+                        source.position(srcIdx - source.arrayOffset());
+                        target.position(tgtIdx - target.arrayOffset());
+                        return cr;
+                    }
+                }
+
+                while (true) {
+                    if (srcIdx >= sourceLimit) {
+                        /* nothing left to read */
+                        cr = CoderResult.UNDERFLOW;
+                        break;
+                    }
+                    if (tgtIdx >= targetLimit) {
+                        /* no space left to write */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    /* reach the next char into char32 */
+                    char32 = sourceArray[srcIdx++];
+
+                    if (char32 <= 0x7f) {
+                        /* 1 byte to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf1(char32);
+
+                    } else if (char32 <= 0x7ff) {
+                        /* 2 bytes to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf2(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeLastTail(char32);
+
+                    } else if (!UTF16.isSurrogate((char) char32) || isCESU8) {
+                        /* 3 bytes to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf3(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeSecondToLastTail(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeLastTail(char32);
+
+                    } else {
+                        /* 4 bytes to encode from char32 and a following char in source */
+
+                        sourceIndex = srcIdx;
+                        targetIndex = tgtIdx;
+                        cr = encodeFourBytes(sourceArray, targetArray, sourceLimit, targetLimit,
+                                char32);
+                        srcIdx = sourceIndex;
+                        tgtIdx = targetIndex;
+                        if (cr != null)
+                            break;
+                    }
+                }
+
+                /* set the new source and target positions and return the CoderResult stored in cr */
+                source.position(srcIdx - source.arrayOffset());
+                target.position(tgtIdx - target.arrayOffset());
+                return cr;
+
+            } else {
+                int char32;
+                CoderResult cr;
+
+                /* take care of the special condition of fromUChar32 not being 0 (it is a surrogate) */
+                if (fromUChar32 != 0) {
+                    /* 4 bytes to encode from char32 and a following char in source */
+
+                    cr = encodeFourBytes(source, target, fromUChar32);
+                    if (cr != null)
+                        return cr;
+                }
+
+                while (true) {
+                    if (!source.hasRemaining()) {
+                        /* nothing left to read */
+                        cr = CoderResult.UNDERFLOW;
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* no space left to write */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    /* reach the next char into char32 */
+                    char32 = source.get();
+
+                    if (char32 <= 0x7f) {
+                        /* 1 byte to encode from char32 */
+
+                        target.put(encodeHeadOf1(char32));
+
+                    } else if (char32 <= 0x7ff) {
+                        /* 2 bytes to encode from char32 */
+
+                        target.put(encodeHeadOf2(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeLastTail(char32));
+
+                    } else if (!UTF16.isSurrogate((char) char32) || isCESU8) {
+                        /* 3 bytes to encode from char32 */
+
+                        target.put(encodeHeadOf3(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeSecondToLastTail(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeLastTail(char32));
+
+                    } else {
+                        /* 4 bytes to encode from char32 and a following char in source */
+
+                        cr = encodeFourBytes(source, target, char32);
+                        if (cr != null)
+                            break;
+                    }
+                }
+
+                /* set the new source and target positions and return the CoderResult stored in cr */
+                return cr;
+            }
+        }
+
+        private final CoderResult encodeFourBytes(char[] sourceArray, byte[] targetArray,
+                int sourceLimit, int targetLimit, int char32) {
+
+            /* we need to read another char to match up the surrogate stored in char32 */
+            /* handle the surrogate stuff, returning on a non-null CoderResult */
+            CoderResult cr = handleSurrogates(sourceArray, sourceIndex, sourceLimit, (char)char32);
+            if (cr != null)
+                return cr;
+            
+            sourceIndex++;
+            char32 = fromUChar32;
+            fromUChar32 = 0;
+
+            /* the rest is routine -- encode four bytes, stopping on overflow */
+
+            targetArray[targetIndex++] = encodeHeadOf4(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeThirdToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeThirdToLastTail(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeSecondToLastTail(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeLastTail(char32);
+
+            /* return null for success */
+            return null;
+        }
+
+        private final CoderResult encodeFourBytes(CharBuffer source, ByteBuffer target, int char32) {
+
+            /* handle the surrogate stuff, returning on a non-null CoderResult */
+            CoderResult cr = handleSurrogates(source, (char)char32);
+            if (cr != null)
+                return cr;
+            
+            char32 = fromUChar32;
+            fromUChar32 = 0;
+            
+            /* the rest is routine -- encode four bytes, stopping on overflow */
+
+            target.put(encodeHeadOf4(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeThirdToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeThirdToLastTail(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeSecondToLastTail(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeLastTail(char32));
+
+            /* return null for success */
+            return null;
+        }
+
+        private int sourceIndex;
+
+        private int targetIndex;
+
+    }
+
+    private static final byte encodeHeadOf1(int char32) {
+        return (byte) char32;
+    }
+
+    private static final byte encodeHeadOf2(int char32) {
+        return (byte) (0xc0 | (char32 >>> 6));
+    }
+
+    private static final byte encodeHeadOf3(int char32) {
+        return (byte) (0xe0 | ((char32 >>> 12)));
+    }
+
+    private static final byte encodeHeadOf4(int char32) {
+        return (byte) (0xf0 | ((char32 >>> 18)));
+    }
+
+    private static final byte encodeThirdToLastTail(int char32) {
+        return (byte) (0x80 | ((char32 >>> 12) & 0x3f));
+    }
+
+    private static final byte encodeSecondToLastTail(int char32) {
+        return (byte) (0x80 | ((char32 >>> 6) & 0x3f));
+    }
+
+    private static final byte encodeLastTail(int char32) {
+        return (byte) (0x80 | (char32 & 0x3f));
+    }
+
+    /* single-code point definitions -------------------------------------------- */
+
+    /*
+     * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
+     * @param c 8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    // static final boolean isSingle(byte c) {return (((c)&0x80)==0);}
+    /*
+     * Is this code unit (byte) a UTF-8 lead byte?
+     * @param c 8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    // static final boolean isLead(byte c) {return ((((c)-0xc0) &
+    // UConverterConstants.UNSIGNED_BYTE_MASK)<0x3e);}
+    /*
+     * Is this code unit (byte) a UTF-8 trail byte?
+     * 
+     * @param c
+     *            8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    /*private static final boolean isTrail(byte c) {
+        return (((c) & 0xc0) == 0x80);
+    }*/
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF8(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF8(this);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);
+    }
+}
diff --git a/src/com/ibm/icu/charset/UConverterAlias.java b/src/com/ibm/icu/charset/UConverterAlias.java
new file mode 100644
index 0000000..12c9b24
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterAlias.java
@@ -0,0 +1,831 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+
+final class UConverterAlias {
+    static final int UNNORMALIZED = 0;
+
+    static final int STD_NORMALIZED = 1;
+
+    static final int AMBIGUOUS_ALIAS_MAP_BIT = 0x8000;
+    
+    static final int CONTAINS_OPTION_BIT = 0x4000;
+
+    static final int CONVERTER_INDEX_MASK = 0xFFF;
+
+    static final int NUM_RESERVED_TAGS = 2;
+
+    static final int NUM_HIDDEN_TAGS = 1;
+
+    static int[] gConverterList = null;
+
+    static int[] gTagList = null;
+
+    static int[] gAliasList = null;
+
+    static int[] gUntaggedConvArray = null;
+
+    static int[] gTaggedAliasArray = null;
+
+    static int[] gTaggedAliasLists = null;
+
+    static int[] gOptionTable = null;
+
+    static byte[] gStringTable = null;
+
+    static byte[] gNormalizedStringTable = null;
+
+    static final String GET_STRING(int idx) {
+        return new String(gStringTable, 2 * idx, (int) strlen(gStringTable, 2 * idx));
+    }
+
+    private static final String GET_NORMALIZED_STRING(int idx) {
+        return new String(gNormalizedStringTable, 2 * idx, (int) strlen(gNormalizedStringTable, 2 * idx));
+    }
+
+    public static final int strlen(byte[] sArray, int sBegin)
+    {
+        int i = sBegin;
+        while(i < sArray.length && sArray[i++] != 0) {}
+        return i - sBegin - 1;
+    }
+
+    /*private*/ static final int tocLengthIndex = 0;
+
+    private static final int converterListIndex = 1;
+
+    private static final int tagListIndex = 2;
+
+    private static final int aliasListIndex = 3;
+
+    private static final int untaggedConvArrayIndex = 4;
+
+    private static final int taggedAliasArrayIndex = 5;
+
+    private static final int taggedAliasListsIndex = 6;
+
+    private static final int optionTableIndex = 7;
+
+    private static final int stringTableIndex = 8;
+
+    private static final int normalizedStringTableIndex = 9;
+
+    private static final int minTocLength = 9; /*
+                                                 * min. tocLength in the file,
+                                                 * does not count the
+                                                 * tocLengthIndex!
+                                                 */
+
+    private static final int offsetsCount = minTocLength + 1; /*
+                                                                 * length of the
+                                                                 * swapper's
+                                                                 * temporary
+                                                                 * offsets[]
+                                                                 */
+
+    static ByteBuffer gAliasData = null;
+
+    private static final boolean isAlias(String alias) {
+        if (alias == null) {
+            throw new IllegalArgumentException("Alias param is null!");
+        }
+        return (alias.length() != 0);
+    }
+
+    private static final String CNVALIAS_DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE + "/cnvalias.icu";
+
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int CNVALIAS_DATA_BUFFER_SIZE = 25000;
+
+    private static final synchronized boolean haveAliasData() 
+                                               throws IOException{
+        boolean needInit;
+
+        // agljport:todo umtx_lock(NULL);
+        needInit = gAliasData == null;
+
+        /* load converter alias data from file if necessary */
+        if (needInit) {
+            ByteBuffer data = null;
+            int[] tableArray = null;
+            int tableStart;
+            //byte[] reservedBytes = null;
+
+            InputStream i = ICUData.getRequiredStream(CNVALIAS_DATA_FILE_NAME);
+            BufferedInputStream b = new BufferedInputStream(i, CNVALIAS_DATA_BUFFER_SIZE);
+            UConverterAliasDataReader reader = new UConverterAliasDataReader(b);
+            tableArray = reader.readToc(offsetsCount);
+
+            tableStart = tableArray[0];
+            if (tableStart < minTocLength) {
+                throw new IOException("Invalid data format.");
+            }
+            gConverterList = new int[(int)tableArray[converterListIndex]];
+            gTagList= new int[(int)tableArray[tagListIndex]];
+            gAliasList = new int[(int)tableArray[aliasListIndex]];
+            gUntaggedConvArray = new int[(int)tableArray[untaggedConvArrayIndex]];
+            gTaggedAliasArray = new int[(int)tableArray[taggedAliasArrayIndex]];
+            gTaggedAliasLists = new int[(int)tableArray[taggedAliasListsIndex]];
+            gOptionTable = new int[(int)tableArray[optionTableIndex]];
+            gStringTable = new byte[(int)tableArray[stringTableIndex]*2];
+            gNormalizedStringTable = new byte[(int)tableArray[normalizedStringTableIndex]*2];
+
+            reader.read(gConverterList, gTagList,
+                    gAliasList, gUntaggedConvArray,
+                    gTaggedAliasArray, gTaggedAliasLists,
+                    gOptionTable, gStringTable, gNormalizedStringTable);
+            data =  ByteBuffer.allocate(0); // dummy UDataMemory object in absence
+                                        // of memory mapping
+
+            if (gOptionTable[0] != STD_NORMALIZED) {
+                throw new IOException("Unsupported alias normalization");
+            }
+            
+            // agljport:todo umtx_lock(NULL);
+            if (gAliasData == null) {
+                gAliasData = data;
+                data = null;
+
+                // agljport:fix ucln_common_registerCleanup(UCLN_COMMON_IO,
+                // io_cleanup);
+            }
+            // agljport:todo umtx_unlock(NULL);
+
+            /* if a different thread set it first, then close the extra data */
+            if (data != null) {
+                // agljport:fix udata_close(data); /* NULL if it was set
+                // correctly */
+            }
+        }
+
+        return true;
+    }
+
+    // U_CFUNC const char * io_getConverterName(const char *alias, UErrorCode
+    // *pErrorCode)
+//    public static final String io_getConverterName(String alias)
+//                                    throws IOException{
+//        if (haveAliasData() && isAlias(alias)) {
+//            boolean[] isAmbigous = new boolean[1];
+//            int convNum = findConverter(alias, isAmbigous);
+//            if (convNum < gConverterList.length) {
+//                return GET_STRING(gConverterList[(int) convNum]);
+//            }
+//            /* else converter not found */
+//        }
+//        return null;
+//    }
+
+    /*
+     * search for an alias return the converter number index for gConverterList
+     */
+    // static U_INLINE uint32_t findConverter(const char *alias, UErrorCode
+    // *pErrorCode)
+    private static final int findConverter(String alias, boolean[] isAmbigous) {
+        int mid, start, limit;
+        int lastMid;
+        int result;
+        StringBuffer strippedName = new StringBuffer();
+        String aliasToCompare;
+
+        stripForCompare(strippedName, alias);
+        alias = strippedName.toString();
+
+        /* do a binary search for the alias */
+        start = 0;
+        limit = gUntaggedConvArray.length;
+        mid = limit;
+        lastMid = Integer.MAX_VALUE;
+
+        for (;;) {
+            mid = (start + limit) / 2;
+            if (lastMid == mid) { /* Have we moved? */
+                break; /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+            aliasToCompare = GET_NORMALIZED_STRING(gAliasList[(int) mid]);
+            result = alias.compareTo(aliasToCompare);
+
+            if (result < 0) {
+                limit = mid;
+            } else if (result > 0) {
+                start = mid;
+            } else {
+                /*
+                 * Since the gencnval tool folds duplicates into one entry, this
+                 * alias in gAliasList is unique, but different standards may
+                 * map an alias to different converters.
+                 */
+                if ((gUntaggedConvArray[(int) mid] & AMBIGUOUS_ALIAS_MAP_BIT) != 0) {
+                    isAmbigous[0]=true;
+                }
+                /* State whether the canonical converter name contains an option.
+                This information is contained in this list in order to maintain backward & forward compatibility. */
+                /*if (containsOption) {
+                    UBool containsCnvOptionInfo = (UBool)gMainTable.optionTable->containsCnvOptionInfo;
+                    *containsOption = (UBool)((containsCnvOptionInfo
+                        && ((gMainTable.untaggedConvArray[mid] & UCNV_CONTAINS_OPTION_BIT) != 0))
+                        || !containsCnvOptionInfo);
+                }*/
+                return gUntaggedConvArray[(int) mid] & CONVERTER_INDEX_MASK;
+            }
+        }
+        return Integer.MAX_VALUE;
+    }
+
+    /**
+     * stripForCompare Remove the underscores, dashes and spaces from
+     * the name, and convert the name to lower case.
+     * 
+     * @param dst The destination buffer, which is <= the buffer of name.
+     * @param name The alias to strip
+     * @return the destination buffer.
+     */
+    public static final StringBuffer stripForCompare(StringBuffer dst, String name) {
+        return io_stripASCIIForCompare(dst, name);
+    }
+
+    // enum {
+    private static final byte IGNORE = 0;
+    private static final byte ZERO = 1;
+    private static final byte NONZERO = 2;
+    static final byte MINLETTER = 3; /* any values from here on are lowercase letter mappings */
+    // }
+    
+    /* character types for ASCII 00..7F */
+    static final byte asciiTypes[] = new byte[] {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        ZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, 0, 0, 0, 0, 0, 0,
+        0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
+        0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0, 0, 0, 0, 0
+    };
+
+    private static final char GET_CHAR_TYPE(char c) {
+        return (char)((c < asciiTypes.length) ? asciiTypes[c] : (char)IGNORE);
+    }
+    
+    /** @see UConverterAlias#compareNames */
+    private static final StringBuffer io_stripASCIIForCompare(StringBuffer dst, String name) {
+        int nameIndex = 0;
+        char type, nextType;
+        char c1;
+        boolean afterDigit = false;
+
+        while (nameIndex < name.length()) {
+            c1 = name.charAt(nameIndex++);
+            type = GET_CHAR_TYPE(c1);
+            switch (type) {
+            case IGNORE:
+                afterDigit = false;
+                continue; /* ignore all but letters and digits */
+            case ZERO:
+                if (!afterDigit && nameIndex < name.length()) {
+                    nextType = GET_CHAR_TYPE(name.charAt(nameIndex));
+                    if (nextType == ZERO || nextType == NONZERO) {
+                        continue; /* ignore leading zero before another digit */
+                    }
+                }
+                break;
+            case NONZERO:
+                afterDigit = true;
+                break;
+            default:
+                c1 = (char)type; /* lowercased letter */
+                afterDigit = false;
+                break;
+            }
+            dst.append(c1);
+        }
+        return dst;
+    }
+
+    /**
+     * Do a fuzzy compare of a two converter/alias names. The comparison is
+     * case-insensitive. It also ignores the characters '-', '_', and ' ' (dash,
+     * underscore, and space). Thus the strings "UTF-8", "utf_8", and "Utf 8"
+     * are exactly equivalent.
+     * 
+     * This is a symmetrical (commutative) operation; order of arguments is
+     * insignificant. This is an important property for sorting the list (when
+     * the list is preprocessed into binary form) and for performing binary
+     * searches on it at run time.
+     * 
+     * @param name1
+     *            a converter name or alias, zero-terminated
+     * @param name2
+     *            a converter name or alias, zero-terminated
+     * @return 0 if the names match, or a negative value if the name1 lexically
+     *         precedes name2, or a positive value if the name1 lexically
+     *         follows name2.
+     * 
+     * @see UConverterAlias#stripForCompare
+     */
+    static int compareNames(String name1, String name2){
+        int rc, name1Index = 0, name2Index = 0;
+        char type, nextType;
+        char c1 = 0, c2 = 0;
+        boolean afterDigit1 = false, afterDigit2 = false;
+
+        for (;;) {
+            while (name1Index < name1.length()) {
+                c1 = name1.charAt(name1Index++);
+                type = GET_CHAR_TYPE(c1);
+                switch (type) {
+                case IGNORE:
+                    afterDigit1 = false;
+                    continue; /* ignore all but letters and digits */
+                case ZERO:
+                    if (!afterDigit1 && name1Index < name1.length()) {
+                        nextType = GET_CHAR_TYPE(name1.charAt(name1Index));
+                        if (nextType == ZERO || nextType == NONZERO) {
+                            continue; /* ignore leading zero before another digit */
+                        }
+                    }
+                    break;
+                case NONZERO:
+                    afterDigit1 = true;
+                    break;
+                default:
+                    c1 = (char)type; /* lowercased letter */
+                    afterDigit1 = false;
+                    break;
+                }
+                break; /* deliver c1 */
+            }
+            while (name2Index < name2.length()) {
+                c2 = name2.charAt(name2Index++);
+                type = GET_CHAR_TYPE(c2);
+                switch (type) {
+                case IGNORE:
+                    afterDigit2 = false;
+                    continue; /* ignore all but letters and digits */
+                case ZERO:
+                    if (!afterDigit2 && name1Index < name1.length()) {
+                        nextType = GET_CHAR_TYPE(name2.charAt(name2Index));
+                        if (nextType == ZERO || nextType == NONZERO) {
+                            continue; /* ignore leading zero before another digit */
+                        }
+                    }
+                    break;
+                case NONZERO:
+                    afterDigit2 = true;
+                    break;
+                default:
+                    c2 = (char)type; /* lowercased letter */
+                    afterDigit2 = false;
+                    break;
+                }
+                break; /* deliver c2 */
+            }
+
+            /* If we reach the ends of both strings then they match */
+            if (name1Index >= name1.length() && name2Index >= name2.length()) {
+                return 0;
+            }
+
+            /* Case-insensitive comparison */
+            rc = (int)c1 - (int)c2;
+            if (rc != 0) {
+                return rc;
+            }
+        }
+    }
+
+    static int io_countAliases(String alias) 
+                        throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            boolean[] isAmbigous = new boolean[1];
+            int convNum = findConverter(alias, isAmbigous);
+            if (convNum < gConverterList.length) {
+                /* tagListNum - 1 is the ALL tag */
+                int listOffset = gTaggedAliasArray[(int) ((gTagList.length - 1)
+                        * gConverterList.length + convNum)];
+
+                if (listOffset != 0) {
+                    return gTaggedAliasLists[listOffset];
+                }
+                /* else this shouldn't happen. internal program error */
+            }
+            /* else converter not found */
+        }
+        return 0;
+    }
+
+    /**
+     * Return the number of all aliases (and converter names).
+     * 
+     * @return the number of all aliases
+     */
+    // U_CFUNC uint16_t io_countTotalAliases(UErrorCode *pErrorCode);
+//    static int io_countTotalAliases() throws IOException{
+//        if (haveAliasData()) {
+//            return (int) gAliasList.length;
+//        }
+//        return 0;
+//    }
+
+    // U_CFUNC const char * io_getAlias(const char *alias, uint16_t n,
+    // UErrorCode *pErrorCode)
+    static String io_getAlias(String alias, int n) throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            boolean[] isAmbigous = new boolean[1];
+            int convNum = findConverter(alias,isAmbigous);
+            if (convNum < gConverterList.length) {
+                /* tagListNum - 1 is the ALL tag */
+                int listOffset = gTaggedAliasArray[(int) ((gTagList.length - 1)
+                        * gConverterList.length + convNum)];
+
+                if (listOffset != 0) {
+                    //int listCount = gTaggedAliasListsArray[listOffset];
+                    /* +1 to skip listCount */
+                    int[] currListArray = gTaggedAliasLists;
+                    int currListArrayIndex = listOffset + 1;
+
+                    return GET_STRING(currListArray[currListArrayIndex + n]);
+                    
+                }
+                /* else this shouldn't happen. internal program error */
+            }
+            /* else converter not found */
+        }
+        return null;
+    }
+
+    // U_CFUNC uint16_t io_countStandards(UErrorCode *pErrorCode) {
+//    static int io_countStandards() throws IOException{
+//        if (haveAliasData()) {
+//            return (int) (gTagList.length - NUM_HIDDEN_TAGS);
+//        }
+//        return 0;
+//    }
+
+    // U_CAPI const char * U_EXPORT2getStandard(uint16_t n, UErrorCode
+    // *pErrorCode)
+//    static String getStandard(int n) throws IOException{
+//        if (haveAliasData()) {
+//            return GET_STRING(gTagList[n]);
+//        }
+//        return null;
+//    }
+
+    // U_CAPI const char * U_EXPORT2 getStandardName(const char *alias, const
+    // char *standard, UErrorCode *pErrorCode)
+    static final String getStandardName(String alias, String standard)throws IOException {
+        if (haveAliasData() && isAlias(alias)) {
+            int listOffset = findTaggedAliasListsOffset(alias, standard);
+
+            if (0 < listOffset && listOffset < gTaggedAliasLists.length) {
+                int[] currListArray = gTaggedAliasLists;
+                int currListArrayIndex = listOffset + 1;
+                if (currListArray[0] != 0) {
+                    return GET_STRING(currListArray[(int) currListArrayIndex]);
+                }
+            }
+        }
+        return null;
+    }
+
+    // U_CAPI uint16_t U_EXPORT2 countAliases(const char *alias, UErrorCode
+    // *pErrorCode)
+    static int countAliases(String alias) throws IOException{
+        return io_countAliases(alias);
+    }
+
+    // U_CAPI const char* U_EXPORT2 getAlias(const char *alias, uint16_t n,
+    // UErrorCode *pErrorCode)
+    static String getAlias(String alias, int n) throws IOException{
+        return io_getAlias(alias, n);
+    }
+
+    // U_CFUNC uint16_t countStandards(void)
+//    static int countStandards()throws IOException{
+//        return io_countStandards();
+//    }
+    
+    /*returns a single Name from the list, will return NULL if out of bounds
+     */
+    static String getAvailableName (int n){
+        try{
+          if (0 <= n && n <= 0xffff) {
+            String name = bld_getAvailableConverter(n);
+            return name;
+          }
+        }catch(IOException ex){
+            //throw away exception
+        }
+        return null;
+    }
+    // U_CAPI const char * U_EXPORT2 getCanonicalName(const char *alias, const
+    // char *standard, UErrorCode *pErrorCode) {
+    static String getCanonicalName(String alias, String standard) throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            int convNum = findTaggedConverterNum(alias, standard);
+
+            if (convNum < gConverterList.length) {
+                return GET_STRING(gConverterList[(int) convNum]);
+            }
+        }
+
+        return null;
+    }
+    static int countAvailable (){
+        try{
+            return bld_countAvailableConverters();
+        }catch(IOException ex){
+            //throw away exception
+        }
+        return -1;
+    }
+        
+    // U_CAPI UEnumeration * U_EXPORT2 openStandardNames(const char *convName,
+    // const char *standard, UErrorCode *pErrorCode)
+/*    static final UConverterAliasesEnumeration openStandardNames(String convName, String standard)throws IOException {
+        UConverterAliasesEnumeration aliasEnum = null;
+        if (haveAliasData() && isAlias(convName)) {
+            int listOffset = findTaggedAliasListsOffset(convName, standard);
+
+            
+             * When listOffset == 0, we want to acknowledge that the converter
+             * name and standard are okay, but there is nothing to enumerate.
+             
+            if (listOffset < gTaggedAliasLists.length) {
+
+                UConverterAliasesEnumeration.UAliasContext context = new UConverterAliasesEnumeration.UAliasContext(listOffset, 0);
+                aliasEnum = new UConverterAliasesEnumeration();
+                aliasEnum.setContext(context);
+            }
+             else converter or tag not found 
+        }
+        return aliasEnum;
+    }*/
+
+    // static uint32_t getTagNumber(const char *tagname)
+    private static int getTagNumber(String tagName) {
+        if (gTagList != null) {
+            int tagNum;
+            for (tagNum = 0; tagNum < gTagList.length; tagNum++) {
+                if (tagName.equals(GET_STRING(gTagList[(int) tagNum]))) {
+                    return tagNum;
+                }
+            }
+        }
+
+        return Integer.MAX_VALUE;
+    }
+
+    // static uint32_t findTaggedAliasListsOffset(const char *alias, const char
+    // *standard, UErrorCode *pErrorCode)
+    private static int findTaggedAliasListsOffset(String alias, String standard) {
+        int idx;
+        int listOffset;
+        int convNum;
+        int tagNum = getTagNumber(standard);
+        boolean[] isAmbigous = new boolean[1];
+        /* Make a quick guess. Hopefully they used a TR22 canonical alias. */
+        convNum = findConverter(alias, isAmbigous);
+
+        if (tagNum < (gTagList.length - NUM_HIDDEN_TAGS)
+                && convNum < gConverterList.length) {
+            listOffset = gTaggedAliasArray[(int) (tagNum
+                    * gConverterList.length + convNum)];
+            if (listOffset != 0
+                    && gTaggedAliasLists[(int) listOffset + 1] != 0) {
+                return listOffset;
+            }
+            if (isAmbigous[0]==true) {
+                /*
+                 * Uh Oh! They used an ambiguous alias. We have to search the
+                 * whole swiss cheese starting at the highest standard affinity.
+                 * This may take a while.
+                 */
+
+                for (idx = 0; idx < gTaggedAliasArray.length; idx++) {
+                    listOffset = gTaggedAliasArray[(int) idx];
+                    if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                        int currTagNum = idx / gConverterList.length;
+                        int currConvNum = (idx - currTagNum
+                                * gConverterList.length);
+                        int tempListOffset = gTaggedAliasArray[(int) (tagNum
+                                * gConverterList.length + currConvNum)];
+                        if (tempListOffset != 0
+                                && gTaggedAliasLists[(int) tempListOffset + 1] != 0) {
+                            return tempListOffset;
+                        }
+                        /*
+                         * else keep on looking We could speed this up by
+                         * starting on the next row because an alias is unique
+                         * per row, right now. This would change if alias
+                         * versioning appears.
+                         */
+                    }
+                }
+                /* The standard doesn't know about the alias */
+            }
+            /* else no default name */
+            return 0;
+        }
+        /* else converter or tag not found */
+
+        return Integer.MAX_VALUE;
+    }
+
+    /* Return the canonical name */
+    // static uint32_t findTaggedConverterNum(const char *alias, const char
+    // *standard, UErrorCode *pErrorCode)
+    private static int findTaggedConverterNum(String alias, String standard) {
+        int idx;
+        int listOffset;
+        int convNum;
+        int tagNum = getTagNumber(standard);
+        boolean[] isAmbigous = new boolean[1];
+        
+        /* Make a quick guess. Hopefully they used a TR22 canonical alias. */
+        convNum = findConverter(alias, isAmbigous);        
+
+        if (tagNum < (gTagList.length - NUM_HIDDEN_TAGS)
+                && convNum < gConverterList.length) {
+            listOffset = gTaggedAliasArray[(int) (tagNum
+                    * gConverterList.length + convNum)];
+            if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                return convNum;
+            }
+            if (isAmbigous[0] == true) {
+                /*
+                 * Uh Oh! They used an ambiguous alias. We have to search one
+                 * slice of the swiss cheese. We search only in the requested
+                 * tag, not the whole thing. This may take a while.
+                 */
+                int convStart = (tagNum) * gConverterList.length;
+                int convLimit = (tagNum + 1) * gConverterList.length;
+                for (idx = convStart; idx < convLimit; idx++) {
+                    listOffset = gTaggedAliasArray[(int) idx];
+                    if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                        return idx - convStart;
+                    }
+                }
+                /* The standard doesn't know about the alias */
+            }
+            /* else no canonical name */
+        }
+        /* else converter or tag not found */
+
+        return Integer.MAX_VALUE;
+    }
+
+    // static U_INLINE UBool isAliasInList(const char *alias, uint32_t
+    // listOffset)
+    private static boolean isAliasInList(String alias, int listOffset) {
+        if (listOffset != 0) {
+            int currAlias;
+            int listCount = gTaggedAliasLists[(int) listOffset];
+            /* +1 to skip listCount */
+            int[] currList = gTaggedAliasLists;
+            int currListArrayIndex = listOffset + 1;
+            for (currAlias = 0; currAlias < listCount; currAlias++) {
+                if (currList[(int) (currAlias + currListArrayIndex)] != 0
+                        && compareNames(
+                                alias,
+                                GET_STRING(currList[(int) (currAlias + currListArrayIndex)])) == 0) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    // begin bld.c
+    static String[] gAvailableConverters = null;
+
+    static int gAvailableConverterCount = 0;
+
+    static byte[] gDefaultConverterNameBuffer; // [MAX_CONVERTER_NAME_LENGTH +
+                                                // 1]; /* +1 for NULL */
+
+    static String gDefaultConverterName = null;
+
+    // static UBool haveAvailableConverterList(UErrorCode *pErrorCode)
+    static boolean haveAvailableConverterList() throws IOException{
+        if (gAvailableConverters == null) {
+            int idx;
+            int localConverterCount;
+            String converterName;
+            String[] localConverterList;
+
+            if (!haveAliasData()) {
+                return false;
+            }
+
+            /* We can't have more than "*converterTable" converters to open */
+            localConverterList = new String[(int) gConverterList.length];
+
+            localConverterCount = 0;
+
+            for (idx = 0; idx < gConverterList.length; idx++) {
+                converterName = GET_STRING(gConverterList[idx]);
+                //UConverter cnv = UConverter.open(converterName);
+                //TODO: Fix me
+                localConverterList[localConverterCount++] = converterName;
+                
+            }
+
+            // agljport:todo umtx_lock(NULL);
+            if (gAvailableConverters == null) {
+                gAvailableConverters = localConverterList;
+                gAvailableConverterCount = localConverterCount;
+                /* haveData should have already registered the cleanup function */
+            } else {
+                // agljport:todo free((char **)localConverterList);
+            }
+            // agljport:todo umtx_unlock(NULL);
+        }
+        return true;
+    }
+
+    // U_CFUNC uint16_t bld_countAvailableConverters(UErrorCode *pErrorCode)
+    static int bld_countAvailableConverters() throws IOException{
+        if (haveAvailableConverterList()) {
+            return gAvailableConverterCount;
+        }
+        return 0;
+    }
+
+    // U_CFUNC const char * bld_getAvailableConverter(uint16_t n, UErrorCode
+    // *pErrorCode)
+    static String bld_getAvailableConverter(int n) throws IOException{
+        if (haveAvailableConverterList()) {
+            if (n < gAvailableConverterCount) {
+                return gAvailableConverters[n];
+            }
+        }
+        return null;
+    }
+
+    /* default converter name --------------------------------------------------- */
+
+    /*
+     * In order to be really thread-safe, the get function would have to take
+     * a buffer parameter and copy the current string inside a mutex block.
+     * This implementation only tries to be really thread-safe while
+     * setting the name.
+     * It assumes that setting a pointer is atomic.
+     */
+
+    // U_CFUNC const char * getDefaultName()
+//    static final synchronized String getDefaultName() {
+//        /* local variable to be thread-safe */
+//        String name;
+//
+//        //agljport:todo umtx_lock(null);
+//        name = gDefaultConverterName;
+//        //agljport:todo umtx_unlock(null);
+//
+//        if (name == null) {
+//            //UConverter cnv = null;
+//            int length = 0;
+//
+//            name = CharsetICU.getDefaultCharsetName();
+//
+//            /* if the name is there, test it out and get the canonical name with options */
+//            if (name != null) {
+//               // cnv = UConverter.open(name); 
+//               // name = cnv.getName(cnv);
+//                // TODO: fix me
+//            }
+//
+//            if (name == null || name.length() == 0 ||/* cnv == null ||*/
+//                     length >= gDefaultConverterNameBuffer.length) {
+//                /* Panic time, let's use a fallback. */
+//                name = new String("US-ASCII");
+//            }
+//
+//            //length=(int32_t)(strlen(name));
+//
+//            /* Copy the name before we close the converter. */
+//            name = gDefaultConverterName;
+//        }
+//
+//        return name;
+//    }
+
+    //end bld.c
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/charset/UConverterAliasDataReader.java b/src/com/ibm/icu/charset/UConverterAliasDataReader.java
new file mode 100644
index 0000000..fa1b21e
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterAliasDataReader.java
@@ -0,0 +1,219 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+import java.io.*;
+
+import com.ibm.icu.impl.ICUBinary;
+
+
+/* Format of cnvalias.icu -----------------------------------------------------
+ *
+ * cnvalias.icu is a binary, memory-mappable form of convrtrs.txt.
+ * This binary form contains several tables. All indexes are to uint16_t
+ * units, and not to the bytes (uint8_t units). Addressing everything on
+ * 16-bit boundaries allows us to store more information with small index
+ * numbers, which are also 16-bit in size. The majority of the table (except
+ * the string table) are 16-bit numbers.
+ *
+ * First there is the size of the Table of Contents (TOC). The TOC
+ * entries contain the size of each section. In order to find the offset
+ * you just need to sum up the previous offsets.
+ * The TOC length and entries are an array of uint32_t values.
+ * The first section after the TOC starts immediately after the TOC.
+ *
+ * 1) This section contains a list of converters. This list contains indexes
+ * into the string table for the converter name. The index of this list is
+ * also used by other sections, which are mentioned later on.
+ * This list is not sorted.
+ *
+ * 2) This section contains a list of tags. This list contains indexes
+ * into the string table for the tag name. The index of this list is
+ * also used by other sections, which are mentioned later on.
+ * This list is in priority order of standards.
+ *
+ * 3) This section contains a list of sorted unique aliases. This
+ * list contains indexes into the string table for the alias name. The
+ * index of this list is also used by other sections, like the 4th section.
+ * The index for the 3rd and 4th section is used to get the
+ * alias -> converter name mapping. Section 3 and 4 form a two column table.
+ *
+ * 4) This section contains a list of mapped converter names. Consider this
+ * as a table that maps the 3rd section to the 1st section. This list contains
+ * indexes into the 1st section. The index of this list is the same index in
+ * the 3rd section. There is also some extra information in the high bits of
+ * each converter index in this table. Currently it's only used to say that
+ * an alias mapped to this converter is ambiguous. See UCNV_CONVERTER_INDEX_MASK
+ * and UCNV_AMBIGUOUS_ALIAS_MAP_BIT for more information. This section is
+ * the predigested form of the 5th section so that an alias lookup can be fast.
+ *
+ * 5) This section contains a 2D array with indexes to the 6th section. This
+ * section is the full form of all alias mappings. The column index is the
+ * index into the converter list (column header). The row index is the index
+ * to tag list (row header). This 2D array is the top part a 3D array. The
+ * third dimension is in the 6th section.
+ *
+ * 6) This is blob of variable length arrays. Each array starts with a size,
+ * and is followed by indexes to alias names in the string table. This is
+ * the third dimension to the section 5. No other section should be referencing
+ * this section.
+ *
+ * 7) Reserved at this time (There is no information). This _usually_ has a
+ * size of 0. Future versions may add more information here.
+ *
+ * 8) This is the string table. All strings are indexed on an even address.
+ * There are two reasons for this. First many chip architectures locate strings
+ * faster on even address boundaries. Second, since all indexes are 16-bit
+ * numbers, this string table can be 128KB in size instead of 64KB when we
+ * only have strings starting on an even address.
+ *
+ *
+ * Here is the concept of section 5 and 6. It's a 3D cube. Each tag
+ * has a unique alias among all converters. That same alias can
+ * be mentioned in other standards on different converters,
+ * but only one alias per tag can be unique.
+ *
+ *
+ *              Converter Names (Usually in TR22 form)
+ *           -------------------------------------------.
+ *     T    /                                          /|
+ *     a   /                                          / |
+ *     g  /                                          /  |
+ *     s /                                          /   |
+ *      /                                          /    |
+ *      ------------------------------------------/     |
+ *    A |                                         |     |
+ *    l |                                         |     |
+ *    i |                                         |    /
+ *    a |                                         |   /
+ *    s |                                         |  /
+ *    e |                                         | /
+ *    s |                                         |/
+ *      -------------------------------------------
+ *
+ *
+ *
+ * Here is what it really looks like. It's like swiss cheese.
+ * There are holes. Some converters aren't recognized by
+ * a standard, or they are really old converters that the
+ * standard doesn't recognize anymore.
+ *
+ *              Converter Names (Usually in TR22 form)
+ *           -------------------------------------------.
+ *     T    /##########################################/|
+ *     a   /     #            #                       /#
+ *     g  /  #      ##     ##     ### # ### ### ### #/
+ *     s / #             #####  ####        ##  ## #/#
+ *      / ### # # ##  #  #   #          ### # #   #/##
+ *      ------------------------------------------/# #
+ *    A |### # # ##  #  #   #          ### # #   #|# #
+ *    l |# # #    #     #               ## #     #|# #
+ *    i |# # #    #     #                #       #|#
+ *    a |#                                       #|#
+ *    s |                                        #|#
+ *    e
+ *    s
+ *
+ */
+
+final class UConverterAliasDataReader implements ICUBinary.Authenticate {
+//    private final static boolean debug = ICUDebug.enabled("UConverterAliasDataReader");
+    
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UConverterAliasDataReader(InputStream inputStream) 
+                                        throws IOException{
+        //if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        /*unicodeVersion = */ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        //if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        //if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected int[] readToc(int n)throws IOException
+    {
+        int[] toc = new int[n];
+        //Read the toc
+        for (int i = 0; i < n ; ++i) {
+            toc[i] = dataInputStream.readInt() & UNSIGNED_INT_MASK;
+        }
+        return toc;
+    } 
+        
+    protected void read(int[] convList, int[] tagList, int[] aliasList, int[]untaggedConvArray, int[] taggedAliasArray, int[] taggedAliasLists, int[] optionTable, byte[] stringTable, byte[] normalizedStringTable) throws IOException{
+        int i;
+        //int listnum = 1;
+        //long listsize;
+
+        for(i = 0; i < convList.length; ++i)
+            convList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < tagList.length; ++i)
+            tagList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < aliasList.length; ++i)
+            aliasList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < untaggedConvArray.length; ++i)
+            untaggedConvArray[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < taggedAliasArray.length; ++i)
+            taggedAliasArray[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < taggedAliasLists.length; ++i)
+            taggedAliasLists[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < optionTable.length; ++i)
+            optionTable[i] = dataInputStream.readUnsignedShort();
+
+        dataInputStream.readFully(stringTable);
+        dataInputStream.readFully(normalizedStringTable);
+    }
+
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version.length >= DATA_FORMAT_VERSION.length
+            && version[0] == DATA_FORMAT_VERSION[0]
+            && version[1] == DATA_FORMAT_VERSION[1]
+            && version[2] == DATA_FORMAT_VERSION[2];
+    }
+    
+    /*byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }*/
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    
+//    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+        // DATA_FORMAT_ID_ values taken from icu4c isAcceptable (ucnv_io.c)
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x43, (byte)0x76, (byte)0x41, (byte)0x6c}; // dataFormat="CvAl"
+    private static final byte DATA_FORMAT_VERSION[] = {3, 0, 1};
+
+    //private static final int UNSIGNED_SHORT_MASK = 0xffff;
+    private static final int UNSIGNED_INT_MASK = 0xffffffff;
+    
+}
diff --git a/src/com/ibm/icu/charset/UConverterConstants.java b/src/com/ibm/icu/charset/UConverterConstants.java
new file mode 100644
index 0000000..4c0c17e
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterConstants.java
@@ -0,0 +1,167 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+interface UConverterConstants {
+
+    static final short UNSIGNED_BYTE_MASK = 0xff;
+    static final int UNSIGNED_SHORT_MASK = 0xffff;
+    static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    
+    static final int U_IS_BIG_ENDIAN = 0;
+
+    /**
+     * Useful constant for the maximum size of the whole locale ID
+     * (including the terminating NULL).
+     */
+    static final int ULOC_FULLNAME_CAPACITY = 56;
+
+    /**
+     * This value is intended for sentinel values for APIs that
+     * (take or) return single code points (UChar32).
+     * It is outside of the Unicode code point range 0..0x10ffff.
+     * 
+     * For example, a "done" or "error" value in a new API
+     * could be indicated with U_SENTINEL.
+     *
+     * ICU APIs designed before ICU 2.4 usually define service-specific "done"
+     * values, mostly 0xffff.
+     * Those may need to be distinguished from
+     * actual U+ffff text contents by calling functions like
+     * CharacterIterator::hasNext() or UnicodeString::length().
+     */
+    static final int U_SENTINEL = -1;
+
+    //end utf.h
+
+    //begin ucnv.h
+    /**
+     * Character that separates converter names from options and options from each other.
+     * @see CharsetICU#forNameICU(String)
+     */
+    static final byte OPTION_SEP_CHAR  = ',';
+
+    /** Maximum length of a converter name including the terminating NULL */
+    static final int MAX_CONVERTER_NAME_LENGTH  = 60;
+    /** Maximum length of a converter name including path and terminating NULL */
+    static final int MAX_FULL_FILE_NAME_LENGTH = (600+MAX_CONVERTER_NAME_LENGTH);
+
+    /** Shift in for EBDCDIC_STATEFUL and iso2022 states */
+    static final int SI = 0x0F;
+    /** Shift out for EBDCDIC_STATEFUL and iso2022 states */
+    static final int SO = 0x0E;
+
+    //end ucnv.h
+
+    // begin bld.h
+    /* size of the overflow buffers in UConverter, enough for escaping callbacks */
+    //#define ERROR_BUFFER_LENGTH 32
+    static final int ERROR_BUFFER_LENGTH = 32;
+
+    /* at most 4 bytes per substitution character (part of .cnv file format! see UConverterStaticData) */
+    static final int MAX_SUBCHAR_LEN = 4;
+
+    /* at most 8 bytes per character in toUBytes[] (UTF-8 uses up to 6) */
+    static final int MAX_CHAR_LEN = 8;
+
+    /* converter options bits */
+    static final int OPTION_VERSION     = 0xf;
+    static final int OPTION_SWAP_LFNL   = 0x10;
+    static final int OPTION_MAC   = 0x20; //agljport:comment added for Mac ISCII encodings
+
+    /** values for the unicodeMask */
+    static final int HAS_SUPPLEMENTARY = 1;
+    static final int HAS_SURROGATES =   2;
+    // end bld.h
+
+    // begin cnv.h
+    /* this is used in fromUnicode DBCS tables as an "unassigned" marker */
+    static final int missingCharMarker = 0xFFFF;
+     /**
+      * 
+      * @author ram
+      */
+    static interface UConverterResetChoice {
+        static final int RESET_BOTH = 0;
+        static final int RESET_TO_UNICODE = RESET_BOTH + 1;
+        static final int RESET_FROM_UNICODE = RESET_TO_UNICODE + 1;
+    }
+
+    // begin utf16.h
+    /**
+     * The maximum number of 16-bit code units per Unicode code point (U+0000..U+10ffff).
+     */
+    static final int U16_MAX_LENGTH = 2;
+    // end utf16.h
+
+    // begin err.h
+    /**
+     * FROM_U, TO_U context options for sub callback
+     */
+    static byte[] SUB_STOP_ON_ILLEGAL = {'i'};
+
+    /**
+     * FROM_U, TO_U context options for skip callback
+     */
+    static byte[] SKIP_STOP_ON_ILLEGAL = {'i'};
+
+    /** 
+     * The process condition code to be used with the callbacks.  
+     * Codes which are greater than IRREGULAR should be 
+     * passed on to any chained callbacks.
+     */
+    static interface UConverterCallbackReason {
+         static final int UNASSIGNED = 0;  /**< The code point is unassigned.
+                                 The error code U_INVALID_CHAR_FOUND will be set. */
+         static final int ILLEGAL = 1;     /**< The code point is illegal. For example, 
+                                 \\x81\\x2E is illegal in SJIS because \\x2E
+                                 is not a valid trail byte for the \\x81 
+                                 lead byte.
+                                 Also, starting with Unicode 3.0.1, non-shortest byte sequences
+                                 in UTF-8 (like \\xC1\\xA1 instead of \\x61 for U+0061)
+                                 are also illegal, not just irregular.
+                                 The error code U_ILLEGAL_CHAR_FOUND will be set. */
+         static final int IRREGULAR = 2;   /**< The codepoint is not a regular sequence in 
+                                 the encoding. For example, \\xED\\xA0\\x80..\\xED\\xBF\\xBF
+                                 are irregular UTF-8 byte sequences for single surrogate
+                                 code points.
+                                 The error code U_INVALID_CHAR_FOUND will be set. */
+         static final int RESET = 3;       /**< The callback is called with this reason when a
+                                 'reset' has occured. Callback should reset all
+                                 state. */
+         static final int CLOSE = 4;        /**< Called when the converter is closed. The
+                                 callback should release any allocated memory.*/
+         static final int CLONE = 5;         /**< Called when safeClone() is called on the
+                                  converter. the pointer available as the
+                                  'context' is an alias to the original converters'
+                                  context pointer. If the context must be owned
+                                  by the new converter, the callback must clone 
+                                  the data and call setFromUCallback 
+                                  (or setToUCallback) with the correct pointer.
+                               */
+    }
+    //end err.h
+
+
+    static final String DATA_TYPE = "cnv";
+    static final int CNV_DATA_BUFFER_SIZE = 25000;
+    static final int SIZE_OF_UCONVERTER_SHARED_DATA = 100;
+
+    static final int MAXIMUM_UCS2 =            0x0000FFFF;
+    static final int MAXIMUM_UTF =             0x0010FFFF;
+    //static final int MAXIMUM_UCS4 =            0x7FFFFFFF;
+    static final int HALF_SHIFT =              10;
+    static final int HALF_BASE =               0x0010000;
+    static final int HALF_MASK =               0x3FF;
+    static final int SURROGATE_HIGH_START =    0xD800;
+    static final int SURROGATE_HIGH_END =      0xDBFF;
+    static final int SURROGATE_LOW_START =     0xDC00;
+    static final int SURROGATE_LOW_END =       0xDFFF;
+    
+    /* -SURROGATE_LOW_START + HALF_BASE */
+    static final int SURROGATE_LOW_BASE =      9216;
+}
diff --git a/src/com/ibm/icu/charset/UConverterDataReader.java b/src/com/ibm/icu/charset/UConverterDataReader.java
new file mode 100644
index 0000000..4b7d866
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterDataReader.java
@@ -0,0 +1,612 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+ 
+package com.ibm.icu.charset;
+
+import com.ibm.icu.impl.ICUBinary;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+
+/**
+ * ucnvmbcs.h
+ *
+ * ICU conversion (.cnv) data file structure, following the usual UDataInfo
+ * header.
+ *
+ * Format version: 6.2
+ *
+ * struct UConverterStaticData -- struct containing the converter name, IBM CCSID,
+ *                                min/max bytes per character, etc.
+ *                                see ucnv_bld.h
+ *
+ * --------------------
+ *
+ * The static data is followed by conversionType-specific data structures.
+ * At the moment, there are only variations of MBCS converters. They all have
+ * the same toUnicode structures, while the fromUnicode structures for SBCS
+ * differ from those for other MBCS-style converters.
+ *
+ * _MBCSHeader.version 4.2 adds an optional conversion extension data structure.
+ * If it is present, then an ICU version reading header versions 4.0 or 4.1
+ * will be able to use the base table and ignore the extension.
+ *
+ * The unicodeMask in the static data is part of the base table data structure.
+ * Especially, the UCNV_HAS_SUPPLEMENTARY flag determines the length of the
+ * fromUnicode stage 1 array.
+ * The static data unicodeMask refers only to the base table's properties if
+ * a base table is included.
+ * In an extension-only file, the static data unicodeMask is 0.
+ * The extension data indexes have a separate field with the unicodeMask flags.
+ *
+ * MBCS-style data structure following the static data.
+ * Offsets are counted in bytes from the beginning of the MBCS header structure.
+ * Details about usage in comments in ucnvmbcs.c.
+ *
+ * struct _MBCSHeader (see the definition in this header file below)
+ * contains 32-bit fields as follows:
+ * 8 values:
+ *  0   uint8_t[4]  MBCS version in UVersionInfo format (currently 4.2.0.0)
+ *  1   uint32_t    countStates
+ *  2   uint32_t    countToUFallbacks
+ *  3   uint32_t    offsetToUCodeUnits
+ *  4   uint32_t    offsetFromUTable
+ *  5   uint32_t    offsetFromUBytes
+ *  6   uint32_t    flags, bits:
+ *                      31.. 8 offsetExtension -- _MBCSHeader.version 4.2 (ICU 2.8) and higher
+ *                                                0 for older versions and if
+ *                                                there is not extension structure
+ *                       7.. 0 outputType
+ *  7   uint32_t    fromUBytesLength -- _MBCSHeader.version 4.1 (ICU 2.4) and higher
+ *                  counts bytes in fromUBytes[]
+ *
+ * if(outputType==MBCS_OUTPUT_EXT_ONLY) {
+ *     -- base table name for extension-only table
+ *     char baseTableName[variable]; -- with NUL plus padding for 4-alignment
+ *
+ *     -- all _MBCSHeader fields except for version and flags are 0
+ * } else {
+ *     -- normal base table with optional extension
+ *
+ *     int32_t stateTable[countStates][256];
+ *    
+ *     struct _MBCSToUFallback { (fallbacks are sorted by offset)
+ *         uint32_t offset;
+ *         UChar32 codePoint;
+ *     } toUFallbacks[countToUFallbacks];
+ *    
+ *     uint16_t unicodeCodeUnits[(offsetFromUTable-offsetToUCodeUnits)/2];
+ *                  (padded to an even number of units)
+ *    
+ *     -- stage 1 tables
+ *     if(staticData.unicodeMask&UCNV_HAS_SUPPLEMENTARY) {
+ *         -- stage 1 table for all of Unicode
+ *         uint16_t fromUTable[0x440]; (32-bit-aligned)
+ *     } else {
+ *         -- BMP-only tables have a smaller stage 1 table
+ *         uint16_t fromUTable[0x40]; (32-bit-aligned)
+ *     }
+ *    
+ *     -- stage 2 tables
+ *        length determined by top of stage 1 and bottom of stage 3 tables
+ *     if(outputType==MBCS_OUTPUT_1) {
+ *         -- SBCS: pure indexes
+ *         uint16_t stage 2 indexes[?];
+ *     } else {
+ *         -- DBCS, MBCS, EBCDIC_STATEFUL, ...: roundtrip flags and indexes
+ *         uint32_t stage 2 flags and indexes[?];
+ *     }
+ *    
+ *     -- stage 3 tables with byte results
+ *     if(outputType==MBCS_OUTPUT_1) {
+ *         -- SBCS: each 16-bit result contains flags and the result byte, see ucnvmbcs.c
+ *         uint16_t fromUBytes[fromUBytesLength/2];
+ *     } else {
+ *         -- DBCS, MBCS, EBCDIC_STATEFUL, ... 2/3/4 bytes result, see ucnvmbcs.c
+ *         uint8_t fromUBytes[fromUBytesLength]; or
+ *         uint16_t fromUBytes[fromUBytesLength/2]; or
+ *         uint32_t fromUBytes[fromUBytesLength/4];
+ *     }
+ * }
+ *
+ * -- extension table, details see ucnv_ext.h
+ * int32_t indexes[>=32]; ...
+ */
+/*
+ * ucnv_ext.h
+ *
+ * See icuhtml/design/conversion/conversion_extensions.html
+ *
+ * Conversion extensions serve two purposes:
+ * 1. They support m:n mappings.
+ * 2. They support extension-only conversion files that are used together
+ *    with the regular conversion data in base files.
+ *
+ * A base file may contain an extension table (explicitly requested or
+ * implicitly generated for m:n mappings), but its extension table is not
+ * used when an extension-only file is used.
+ *
+ * It is an error if a base file contains any regular (not extension) mapping
+ * from the same sequence as a mapping in the extension file
+ * because the base mapping would hide the extension mapping.
+ *
+ *
+ * Data for conversion extensions:
+ *
+ * One set of data structures per conversion direction (to/from Unicode).
+ * The data structures are sorted by input units to allow for binary search.
+ * Input sequences of more than one unit are handled like contraction tables
+ * in collation:
+ * The lookup value of a unit points to another table that is to be searched
+ * for the next unit, recursively.
+ *
+ * For conversion from Unicode, the initial code point is looked up in
+ * a 3-stage trie for speed,
+ * with an additional table of unique results to save space.
+ *
+ * Long output strings are stored in separate arrays, with length and index
+ * in the lookup tables.
+ * Output results also include a flag distinguishing roundtrip from
+ * (reverse) fallback mappings.
+ *
+ * Input Unicode strings must not begin or end with unpaired surrogates
+ * to avoid problems with matches on parts of surrogate pairs.
+ *
+ * Mappings from multiple characters (code points or codepage state
+ * table sequences) must be searched preferring the longest match.
+ * For this to work and be efficient, the variable-width table must contain
+ * all mappings that contain prefixes of the multiple characters.
+ * If an extension table is built on top of a base table in another file
+ * and a base table entry is a prefix of a multi-character mapping, then
+ * this is an error.
+ *
+ *
+ * Implementation note:
+ *
+ * Currently, the parser and several checks in the code limit the number
+ * of UChars or bytes in a mapping to
+ * UCNV_EXT_MAX_UCHARS and UCNV_EXT_MAX_BYTES, respectively,
+ * which are output value limits in the data structure.
+ *
+ * For input, this is not strictly necessary - it is a hard limit only for the
+ * buffers in UConverter that are used to store partial matches.
+ *
+ * Input sequences could otherwise be arbitrarily long if partial matches
+ * need not be stored (i.e., if a sequence does not span several buffers with too
+ * many units before the last buffer), although then results would differ
+ * depending on whether partial matches exceed the limits or not,
+ * which depends on the pattern of buffer sizes.
+ *
+ *
+ * Data structure:
+ *
+ * int32_t indexes[>=32];
+ *
+ *   Array of indexes and lengths etc. The length of the array is at least 32.
+ *   The actual length is stored in indexes[0] to be forward compatible.
+ *
+ *   Each index to another array is the number of bytes from indexes[].
+ *   Each length of an array is the number of array base units in that array.
+ *
+ *   Some of the structures may not be present, in which case their indexes
+ *   and lengths are 0.
+ *
+ *   Usage of indexes[i]:
+ *   [0]  length of indexes[]
+ *
+ *   // to Unicode table
+ *   [1]  index of toUTable[] (array of uint32_t)
+ *   [2]  length of toUTable[]
+ *   [3]  index of toUUChars[] (array of UChar)
+ *   [4]  length of toUUChars[]
+ *
+ *   // from Unicode table, not for the initial code point
+ *   [5]  index of fromUTableUChars[] (array of UChar)
+ *   [6]  index of fromUTableValues[] (array of uint32_t)
+ *   [7]  length of fromUTableUChars[] and fromUTableValues[]
+ *   [8]  index of fromUBytes[] (array of char)
+ *   [9]  length of fromUBytes[]
+ *
+ *   // from Unicode trie for initial-code point lookup
+ *   [10] index of fromUStage12[] (combined array of uint16_t for stages 1 & 2)
+ *   [11] length of stage 1 portion of fromUStage12[]
+ *   [12] length of fromUStage12[]
+ *   [13] index of fromUStage3[] (array of uint16_t indexes into fromUStage3b[])
+ *   [14] length of fromUStage3[]
+ *   [15] index of fromUStage3b[] (array of uint32_t like fromUTableValues[])
+ *   [16] length of fromUStage3b[]
+ *
+ *   [17] Bit field containing numbers of bytes:
+ *        31..24 reserved, 0
+ *        23..16 maximum input bytes
+ *        15.. 8 maximum output bytes
+ *         7.. 0 maximum bytes per UChar
+ *
+ *   [18] Bit field containing numbers of UChars:
+ *        31..24 reserved, 0
+ *        23..16 maximum input UChars
+ *        15.. 8 maximum output UChars
+ *         7.. 0 maximum UChars per byte
+ *
+ *   [19] Bit field containing flags:
+ *               (extension table unicodeMask)
+ *         1     UCNV_HAS_SURROGATES flag for the extension table
+ *         0     UCNV_HAS_SUPPLEMENTARY flag for the extension table
+ *
+ *   [20]..[30] reserved, 0
+ *   [31] number of bytes for the entire extension structure
+ *   [>31] reserved; there are indexes[0] indexes
+ *
+ *
+ * uint32_t toUTable[];
+ *
+ *   Array of byte/value pairs for lookups for toUnicode conversion.
+ *   The array is partitioned into sections like collation contraction tables.
+ *   Each section contains one word with the number of following words and
+ *   a default value for when the lookup in this section yields no match.
+ *
+ *   A section is sorted in ascending order of input bytes,
+ *   allowing for fast linear or binary searches.
+ *   The builder may store entries for a contiguous range of byte values
+ *   (compare difference between the first and last one with count),
+ *   which then allows for direct array access.
+ *   The builder should always do this for the initial table section.
+ *
+ *   Entries may have 0 values, see below.
+ *   No two entries in a section have the same byte values.
+ *
+ *   Each uint32_t contains an input byte value in bits 31..24 and the
+ *   corresponding lookup value in bits 23..0.
+ *   Interpret the value as follows:
+ *     if(value==0) {
+ *       no match, see below
+ *     } else if(value<0x1f0000) {
+ *       partial match - use value as index to the next toUTable section
+ *       and match the next unit; (value indexes toUTable[value])
+ *     } else {
+ *       if(bit 23 set) {
+ *         roundtrip;
+ *       } else {
+ *         fallback;
+ *       }
+ *       unset value bit 23;
+ *       if(value<=0x2fffff) {
+ *         (value-0x1f0000) is a code point; (BMP: value<=0x1fffff)
+ *       } else {
+ *         bits 17..0 (value&0x3ffff) is an index to
+ *           the result UChars in toUUChars[]; (0 indexes toUUChars[0])
+ *         length of the result=((value>>18)-12); (length=0..19)
+ *       }
+ *     }
+ *
+ *   The first word in a section contains the number of following words in the
+ *   input byte position (bits 31..24, number=1..0xff).
+ *   The value of the initial word is used when the current byte is not found
+ *   in this section.
+ *   If the value is not 0, then it represents a result as above.
+ *   If the value is 0, then the search has to return a shorter match with an
+ *   earlier default value as the result, or result in "unmappable" even for the
+ *   initial bytes.
+ *   If the value is 0 for the initial toUTable entry, then the initial byte
+ *   does not start any mapping input.
+ *
+ *
+ * UChar toUUChars[];
+ *
+ *   Contains toUnicode mapping results, stored as sequences of UChars.
+ *   Indexes and lengths stored in the toUTable[].
+ *
+ *
+ * UChar fromUTableUChars[];
+ * uint32_t fromUTableValues[];
+ *
+ *   The fromUTable is split into two arrays, but works otherwise much like
+ *   the toUTable. The array is partitioned into sections like collation
+ *   contraction tables and toUTable.
+ *   A row in the table consists of same-index entries in fromUTableUChars[]
+ *   and fromUTableValues[].
+ *
+ *   Interpret a value as follows:
+ *     if(value==0) {
+ *       no match, see below
+ *     } else if(value<=0xffffff) { (bits 31..24 are 0)
+ *       partial match - use value as index to the next fromUTable section
+ *       and match the next unit; (value indexes fromUTable[value])
+ *     } else {
+ *       if(value==0x80000001) {
+ *         return no mapping, but request for <subchar1>;
+ *       }
+ *       if(bit 31 set) {
+ *         roundtrip;
+ *       } else {
+ *         fallback;
+ *       }
+ *       // bits 30..29 reserved, 0
+ *       length=(value>>24)&0x1f; (bits 28..24)
+ *       if(length==1..3) {
+ *         bits 23..0 contain 1..3 bytes, padded with 00s on the left;
+ *       } else {
+ *         bits 23..0 (value&0xffffff) is an index to
+ *           the result bytes in fromUBytes[]; (0 indexes fromUBytes[0])
+ *       }
+ *     }
+ *       
+ *   The first pair in a section contains the number of following pairs in the
+ *   UChar position (16 bits, number=1..0xffff).
+ *   The value of the initial pair is used when the current UChar is not found
+ *   in this section.
+ *   If the value is not 0, then it represents a result as above.
+ *   If the value is 0, then the search has to return a shorter match with an
+ *   earlier default value as the result, or result in "unmappable" even for the
+ *   initial UChars.
+ *
+ *   If the from Unicode trie is present, then the from Unicode search tables
+ *   are not used for initial code points.
+ *   In this case, the first entries (index 0) in the tables are not used
+ *   (reserved, set to 0) because a value of 0 is used in trie results
+ *   to indicate no mapping.
+ *
+ *
+ * uint16_t fromUStage12[];
+ *
+ *   Stages 1 & 2 of a trie that maps an initial code point.
+ *   Indexes in stage 1 are all offset by the length of stage 1 so that the
+ *   same array pointer can be used for both stages.
+ *   If (c>>10)>=(length of stage 1) then c does not start any mapping.
+ *   Same bit distribution as for regular conversion tries.
+ *
+ *
+ * uint16_t fromUStage3[];
+ * uint32_t fromUStage3b[];
+ *
+ *   Stage 3 of the trie. The first array simply contains indexes to the second,
+ *   which contains words in the same format as fromUTableValues[].
+ *   Use a stage 3 granularity of 4, which allows for 256k stage 3 entries,
+ *   and 16-bit entries in stage 3 allow for 64k stage 3b entries.
+ *   The stage 3 granularity means that the stage 2 entry needs to be left-shifted.
+ *
+ *   Two arrays are used because it is expected that more than half of the stage 3
+ *   entries will be zero. The 16-bit index stage 3 array saves space even
+ *   considering storing a total of 6 bytes per non-zero entry in both arrays
+ *   together.
+ *   Using a stage 3 granularity of >1 diminishes the compactability in that stage
+ *   but provides a larger effective addressing space in stage 2.
+ *   All but the final result stage use 16-bit entries to save space.
+ *
+ *   fromUStage3b[] contains a zero for "no mapping" at its index 0,
+ *   and may contain UCNV_EXT_FROM_U_SUBCHAR1 at index 1 for "<subchar1> SUB mapping"
+ *   (i.e., "no mapping" with preference for <subchar1> rather than <subchar>),
+ *   and all other items are unique non-zero results.
+ *
+ *   The default value of a fromUTableValues[] section that is referenced
+ *   _directly_ from a fromUStage3b[] item may also be UCNV_EXT_FROM_U_SUBCHAR1,
+ *   but this value must not occur anywhere else in fromUTableValues[]
+ *   because "no mapping" is always a property of a single code point,
+ *   never of multiple.
+ *
+ *
+ * char fromUBytes[];
+ *
+ *   Contains fromUnicode mapping results, stored as sequences of chars.
+ *   Indexes and lengths stored in the fromUTableValues[].
+ */
+
+final class UConverterDataReader implements ICUBinary.Authenticate {
+    //private final static boolean debug = ICUDebug.enabled("UConverterDataReader");
+
+    /*
+     *  UConverterDataReader(UConverterDataReader r)
+        {
+            dataInputStream = new DataInputStream(r.dataInputStream);
+            unicodeVersion = r.unicodeVersion;
+        }
+        */
+   /* the number bytes read from the stream */ 
+   int bytesRead = 0;
+   /* the number of bytes read for static data */
+   int staticDataBytesRead = 0;
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UConverterDataReader(InputStream inputStream) 
+                                        throws IOException{
+        //if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        /*unicodeVersion = */ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        //if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        //if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected void readStaticData(UConverterStaticData sd) throws IOException
+    {
+        int bRead = 0;
+        sd.structSize = dataInputStream.readInt();
+        bRead +=4;
+        byte[] name = new byte[UConverterConstants.MAX_CONVERTER_NAME_LENGTH];
+        dataInputStream.readFully(name);
+        bRead +=name.length;
+        sd.name = new String(name, 0, name.length);
+        sd.codepage = dataInputStream.readInt();
+        bRead +=4;
+        sd.platform = dataInputStream.readByte();
+        bRead++;
+        sd.conversionType = dataInputStream.readByte();
+        bRead++;
+        sd.minBytesPerChar = dataInputStream.readByte();
+        bRead++;
+        sd.maxBytesPerChar = dataInputStream.readByte();
+        bRead++;
+        dataInputStream.readFully(sd.subChar);
+        bRead += sd.subChar.length;
+        sd.subCharLen = dataInputStream.readByte();
+        bRead++;
+        sd.hasToUnicodeFallback = dataInputStream.readByte();
+        bRead++;
+        sd.hasFromUnicodeFallback = dataInputStream.readByte();
+        bRead++;
+        sd.unicodeMask = (short)dataInputStream.readUnsignedByte();
+        bRead++;
+        sd.subChar1 = dataInputStream.readByte();
+        bRead++;
+        dataInputStream.readFully(sd.reserved);
+        bRead += sd.reserved.length;
+        staticDataBytesRead = bRead;
+        bytesRead += bRead;
+    }
+
+    protected void readMBCSHeader(CharsetMBCS.MBCSHeader h) throws IOException
+    {
+        dataInputStream.readFully(h.version);
+        bytesRead += h.version.length;
+        h.countStates = dataInputStream.readInt();
+        bytesRead+=4;
+        h.countToUFallbacks = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetToUCodeUnits = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetFromUTable = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetFromUBytes = dataInputStream.readInt();
+        bytesRead+=4;
+        h.flags = dataInputStream.readInt();
+        bytesRead+=4;
+        h.fromUBytesLength = dataInputStream.readInt();
+        bytesRead+=4;
+        if (h.version[0] == 5 && h.version[1] >= 3) {
+            h.options = dataInputStream.readInt();
+            bytesRead+=4;
+            if ((h.options & CharsetMBCS.MBCS_OPT_NO_FROM_U) != 0) {
+                h.fullStage2Length = dataInputStream.readInt();
+                bytesRead+=4;
+            }
+        }
+    }
+    
+    protected void readMBCSTable(int[][] stateTableArray, CharsetMBCS.MBCSToUFallback[] toUFallbacksArray, char[] unicodeCodeUnitsArray, char[] fromUnicodeTableArray, byte[] fromUnicodeBytesArray) throws IOException
+    {
+        int i, j;
+        for(i = 0; i < stateTableArray.length; ++i){
+            for(j = 0; j < stateTableArray[i].length; ++j){
+                stateTableArray[i][j] = dataInputStream.readInt();
+                bytesRead+=4;
+            }
+        }
+        for(i = 0; i < toUFallbacksArray.length; ++i) {
+            toUFallbacksArray[i].offset = dataInputStream.readInt();
+            bytesRead+=4;
+            toUFallbacksArray[i].codePoint = dataInputStream.readInt();
+            bytesRead+=4;
+        }
+        for(i = 0; i < unicodeCodeUnitsArray.length; ++i){
+            unicodeCodeUnitsArray[i] = dataInputStream.readChar();
+            bytesRead+=2;
+        }
+        for(i = 0; i < fromUnicodeTableArray.length; ++i){
+            fromUnicodeTableArray[i] = dataInputStream.readChar();
+            bytesRead+=2;
+        }
+        for(i = 0; i < fromUnicodeBytesArray.length; ++i){
+            fromUnicodeBytesArray[i] = dataInputStream.readByte();
+            bytesRead++;
+        }
+    }
+
+    protected String readBaseTableName() throws IOException
+    {
+        char c;
+        StringBuffer name = new StringBuffer();
+        while((c = (char)dataInputStream.readByte()) !=  0){
+            name.append(c);
+            bytesRead++;
+        }
+        bytesRead++/*for null terminator*/;
+        return name.toString();
+    }
+
+    //protected int[] readExtIndexes(int skip) throws IOException
+    protected ByteBuffer readExtIndexes(int skip) throws IOException
+    {
+        int skipped = dataInputStream.skipBytes(skip);
+        if(skipped != skip){
+            throw new IOException("could not skip "+ skip +" bytes");
+        }
+        int n = dataInputStream.readInt();
+        bytesRead+=4;
+        int[] indexes = new int[n];
+        indexes[0] = n;
+        for(int i = 1; i < n; ++i) {
+            indexes[i] = dataInputStream.readInt();
+            bytesRead+=4;
+        }
+        //return indexes;
+
+        ByteBuffer b = ByteBuffer.allocate(indexes[31]);
+        for(int i = 0; i < n; ++i) {
+            b.putInt(indexes[i]);
+        }
+        int len = dataInputStream.read(b.array(), b.position(), b.remaining());
+        if(len==-1){
+            throw new IOException("Read failed");
+        }
+        bytesRead += len;
+        return b;
+    }
+
+    /*protected byte[] readExtTables(int n) throws IOException
+    {
+        byte[] tables = new byte[n];
+        int len =dataInputStream.read(tables);
+        if(len==-1){
+            throw new IOException("Read failed");
+        }
+        bytesRead += len;
+        return tables;
+    }*/
+
+    byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    /**
+     * Inherited method
+     */
+    public boolean isDataVersionAcceptable(byte version[]){
+        return version[0] == DATA_FORMAT_VERSION[0];
+    }
+    
+/*    byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }*/
+    // private data members -------------------------------------------------
+      
+    /**
+    * ICU data file input stream
+    */
+    DataInputStream dataInputStream;
+    
+//    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    // DATA_FORMAT_ID_ values taken from icu4c isCnvAcceptable (ucnv_bld.c)
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x63, (byte)0x6e, (byte)0x76, (byte)0x74}; // dataFormat="cnvt"
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x6};
+
+}
+
diff --git a/src/com/ibm/icu/charset/UConverterSharedData.java b/src/com/ibm/icu/charset/UConverterSharedData.java
new file mode 100644
index 0000000..e69f40a
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterSharedData.java
@@ -0,0 +1,448 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * Defines the UConverterSharedData struct, the immutable, shared part of
+ * UConverter.
+ */
+final class UConverterSharedData {
+    // uint32_t structSize; /* Size of this structure */
+    // int structSize; /* Size of this structure */
+    /**
+     * used to count number of clients, 0xffffffff for static SharedData
+     */
+    int referenceCounter;
+
+    // agljport:todo const void *dataMemory; /* from udata_openChoice() - for cleanup */
+    // agljport:todo void *table; /* Unused. This used to be a UConverterTable - Pointer to conversion data - see mbcs below */
+
+    // const UConverterStaticData *staticData; /* pointer to the static (non changing) data. */
+    /**
+     * pointer to the static (non changing)
+     * data.
+     */
+    UConverterStaticData staticData;
+
+    // UBool sharedDataCached; /* TRUE: shared data is in cache, don't destroy
+    // on close() if 0 ref. FALSE: shared data isn't in the cache, do attempt to
+    // clean it up if the ref is 0 */
+    
+    /**
+     * TRUE: shared data is in cache, don't destroy
+     * on close() if 0 ref. FALSE: shared data isn't
+     * in the cache, do attempt to clean it up if
+     * the ref is 0
+     */
+    boolean sharedDataCached; 
+
+    /*
+     * UBool staticDataOwned; TRUE if static data owned by shared data & should
+     * be freed with it, NEVER true for udata() loaded statics. This ignored
+     * variable was removed to make space for sharedDataCached.
+     */
+
+    // const UConverterImpl *impl; /* vtable-style struct of mostly function pointers */
+    // UConverterImpl impl; /* vtable-style struct of mostly function pointers */
+    /** initial values of some members of the mutable part of object */
+    long toUnicodeStatus;
+
+    /**
+     * Shared data structures currently come in two flavors:
+     * - readonly for built-in algorithmic converters
+     * - allocated for MBCS, with a pointer to an allocated UConverterTable
+     *   which always has a UConverterMBCSTable
+     *   
+     * To eliminate one allocation, I am making the UConverterMBCSTable a member
+     * of the shared data. It is the last member so that static definitions of
+     * UConverterSharedData work as before. The table field above also remains
+     * to avoid updating all static definitions, but is now unused.
+     * 
+     */
+    CharsetMBCS.UConverterMBCSTable mbcs;
+
+    UConverterSharedData() {
+        mbcs = new CharsetMBCS.UConverterMBCSTable();
+    }
+
+    UConverterSharedData(int referenceCounter_, UConverterStaticData staticData_, boolean sharedDataCached_, long toUnicodeStatus_)
+    {
+        this();
+        referenceCounter = referenceCounter_;
+        staticData = staticData_;
+        sharedDataCached = sharedDataCached_;
+        // impl = impl_;
+        toUnicodeStatus = toUnicodeStatus_;
+    }
+
+    /**
+     * UConverterImpl contains all the data and functions for a converter type.
+     * Its function pointers work much like a C++ vtable. Many converter types
+     * need to define only a subset of the functions; when a function pointer is
+     * NULL, then a default action will be performed.
+     * 
+     * Every converter type must implement toUnicode, fromUnicode, and
+     * getNextUChar, otherwise the converter may crash. Every converter type
+     * that has variable-length codepage sequences should also implement
+     * toUnicodeWithOffsets and fromUnicodeWithOffsets for correct offset
+     * handling. All other functions may or may not be implemented - it depends
+     * only on whether the converter type needs them.
+     * 
+     * When open() fails, then close() will be called, if present.
+     */
+/* class UConverterImpl {
+    UConverterType type;
+    UConverterToUnicode toUnicode;
+    protected void doToUnicode(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+     final void toUnicode(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        doToUnicode(args, pErrorCode);
+    }
+    
+    //UConverterFromUnicode fromUnicode;
+    protected void doFromUnicode(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+     final void fromUnicode(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+        doFromUnicode(args, pErrorCode);
+    }
+    
+    protected int doGetNextUChar(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        return 0;
+    }
+    
+    //UConverterGetNextUChar getNextUChar;
+     final int getNextUChar(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        return doGetNextUChar(args, pErrorCode);
+    }
+    
+    // interface UConverterImplLoadable extends UConverterImpl
+    protected void doLoad(UConverterLoadArgs pArgs, short[] raw, int[] pErrorCode)
+    {
+    }
+    
+    protected void doUnload()
+    {
+    }
+
+    // interface UConverterImplOpenable extends UConverterImpl
+    protected void doOpen(UConverter cnv, String name, String locale, long options, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterOpen open;
+     final void open(UConverter cnv, String name, String locale, long options, int[] pErrorCode)
+    {
+        doOpen(cnv, name, locale, options, pErrorCode);
+    }
+    
+    protected void doClose(UConverter cnv)
+    {
+    }
+    
+    //UConverterClose close;
+     final void close(UConverter cnv)
+    {
+        doClose(cnv);
+    }
+    
+    protected void doReset(UConverter cnv, int choice)
+    {
+    }
+    
+    //typedef void (*UConverterReset) (UConverter *cnv, UConverterResetChoice choice);
+    //UConverterReset reset;
+     final void reset(UConverter cnv, int choice)
+    {
+        doReset(cnv, choice);
+    }
+
+    // interface UConverterImplVariableLength extends UConverterImpl
+    protected void doToUnicodeWithOffsets(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterToUnicode toUnicodeWithOffsets;
+     final void toUnicodeWithOffsets(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        doToUnicodeWithOffsets(args, pErrorCode);
+    }
+    
+    protected void doFromUnicodeWithOffsets(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterFromUnicode fromUnicodeWithOffsets;
+     final void fromUnicodeWithOffsets(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+        doFromUnicodeWithOffsets(args, pErrorCode);
+    }
+
+    // interface UConverterImplMisc extends UConverterImpl
+    protected void doGetStarters(UConverter converter, boolean starters[], int[] pErrorCode)
+    {
+    }
+    
+    //UConverterGetStarters getStarters;
+     final void getStarters(UConverter converter, boolean starters[], int[] pErrorCode)
+    {
+        doGetStarters(converter, starters, pErrorCode);
+    }
+    
+    protected String doGetName(UConverter cnv)
+    {
+        return "";
+    }
+    
+    //UConverterGetName getName;
+     final String getName(UConverter cnv)
+    {
+        return doGetName(cnv);
+    }
+    
+    protected void doWriteSub(UConverterFromUnicodeArgs pArgs, long offsetIndex, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterWriteSub writeSub;
+     final void writeSub(UConverterFromUnicodeArgs pArgs, long offsetIndex, int[] pErrorCode)
+    {
+        doWriteSub(pArgs, offsetIndex, pErrorCode);
+    }
+    
+    protected UConverter doSafeClone(UConverter cnv, byte[] stackBuffer, int[] pBufferSize, int[] status)
+    {
+        return new UConverter();
+    }
+
+    //UConverterSafeClone safeClone;
+     final UConverter  safeClone(UConverter cnv, byte[] stackBuffer, int[] pBufferSize, int[] status)
+    {
+        return doSafeClone(cnv, stackBuffer, pBufferSize, status);
+    }
+    
+    protected void doGetUnicodeSet(UConverter cnv, UnicodeSet /*USetAdder* / sa, int /*UConverterUnicodeSet* / which, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterGetUnicodeSet getUnicodeSet;
+    // final void getUnicodeSet(UConverter cnv, UnicodeSet /*USetAdder* / sa, int /*UConverterUnicodeSet* / which, int[] pErrorCode)
+    //{
+    //  doGetUnicodeSet(cnv, sa, which, pErrorCode);
+    //}
+
+    //}
+
+    static final String DATA_TYPE = "cnv";
+    private static final int CNV_DATA_BUFFER_SIZE = 25000;
+     static final int sizeofUConverterSharedData = 100;
+    
+    //static UDataMemoryIsAcceptable isCnvAcceptable;
+
+    /**
+     * Load a non-algorithmic converter.
+     * If pkg==NULL, then this function must be called inside umtx_lock(&cnvCacheMutex).
+     
+    // UConverterSharedData * load(UConverterLoadArgs *pArgs, UErrorCode *err)
+     static final UConverterSharedData load(UConverterLoadArgs pArgs, int[] err)
+    {
+        UConverterSharedData mySharedConverterData = null;
+    
+        if(err == null || ErrorCode.isFailure(err[0])) {
+            return null;
+        }
+    
+        if(pArgs.pkg != null && pArgs.pkg.length() != 0) {
+             application-provided converters are not currently cached 
+            return UConverterSharedData.createConverterFromFile(pArgs, err);
+        }
+    
+        //agljport:fix mySharedConverterData = getSharedConverterData(pArgs.name);
+        if (mySharedConverterData == null)
+        {
+            Not cached, we need to stream it in from file 
+            mySharedConverterData = UConverterSharedData.createConverterFromFile(pArgs, err);
+            if (ErrorCode.isFailure(err[0]) || (mySharedConverterData == null))
+            {
+                return null;
+            }
+            else
+            {
+                 share it with other library clients 
+                //agljport:fix shareConverterData(mySharedConverterData);
+            }
+        }
+        else
+        {
+             The data for this converter was already in the cache.            
+             Update the reference counter on the shared data: one more client 
+            mySharedConverterData.referenceCounter++;
+        }
+    
+        return mySharedConverterData;
+    }
+    
+    Takes an alias name gets an actual converter file name
+     *goes to disk and opens it.
+     *allocates the memory and returns a new UConverter object
+     
+    //static UConverterSharedData *createConverterFromFile(UConverterLoadArgs *pArgs, UErrorCode * err)
+     static final UConverterSharedData createConverterFromFile(UConverterLoadArgs pArgs, int[] err)
+    {
+        UDataMemory data = null;
+        UConverterSharedData sharedData = null;
+    
+        //agljport:todo UTRACE_ENTRY_OC(UTRACE_LOAD);
+    
+        if (err == null || ErrorCode.isFailure(err[0])) {
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        //agljport:todo UTRACE_DATA2(UTRACE_OPEN_CLOSE, "load converter %s from package %s", pArgs->name, pArgs->pkg);
+    
+        //agljport:fix data = udata_openChoice(pArgs.pkgArray, DATA_TYPE.getBytes(), pArgs.name, isCnvAcceptable, null, err);
+        if(ErrorCode.isFailure(err[0]))
+        {
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        sharedData = data_unFlattenClone(pArgs, data, err);
+        if(ErrorCode.isFailure(err[0]))
+        {
+            //agljport:fix udata_close(data);
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        
+         * TODO Store pkg in a field in the shared data so that delta-only converters
+         * can load base converters from the same package.
+         * If the pkg name is longer than the field, then either do not load the converter
+         * in the first place, or just set the pkg field to "".
+         
+    
+        return sharedData;
+    }
+*/
+    UConverterDataReader dataReader = null;
+
+    /*
+     * returns a converter type from a string
+     */
+    /*   static final UConverterSharedData getAlgorithmicTypeFromName(String realName)
+    {
+        long mid, start, limit;
+        long lastMid;
+        int result;
+        StringBuffer strippedName = new StringBuffer(UConverterConstants.MAX_CONVERTER_NAME_LENGTH);
+    
+        // Lower case and remove ignoreable characters.
+        UConverterAlias.stripForCompare(strippedName, realName);
+    
+        // do a binary search for the alias
+        start = 0;
+        limit = cnvNameType.length;
+        mid = limit;
+        lastMid = -1;
+    
+        for (;;) {
+            mid = (long)((start + limit) / 2);
+            if (lastMid == mid) {   // Have we moved?
+                break;  // We haven't moved, and it wasn't found.
+            }
+            lastMid = mid;
+            result = strippedName.substring(0).compareTo(cnvNameType[(int)mid].name);
+    
+            if (result < 0) {
+                limit = mid;
+            } else if (result > 0) {
+                start = mid;
+            } else {
+                return converterData[cnvNameType[(int)mid].type];
+            }
+        }
+    
+        return null;
+    }*/
+    
+    /*
+     * Enum for specifying basic types of converters
+     */
+    static final class UConverterType {
+        static final int UNSUPPORTED_CONVERTER = -1;
+        static final int SBCS = 0;
+        static final int DBCS = 1;
+        static final int MBCS = 2;
+        static final int LATIN_1 = 3;
+        static final int UTF8 = 4;
+        static final int UTF16_BigEndian = 5;
+        static final int UTF16_LittleEndian = 6;
+        static final int UTF32_BigEndian = 7;
+        static final int UTF32_LittleEndian = 8;
+        static final int EBCDIC_STATEFUL = 9;
+        static final int ISO_2022 = 10;
+        static final int LMBCS_1 = 11;
+        static final int LMBCS_2 = LMBCS_1 + 1; // 12
+        static final int LMBCS_3 = LMBCS_2 + 1; // 13
+        static final int LMBCS_4 = LMBCS_3 + 1; // 14
+        static final int LMBCS_5 = LMBCS_4 + 1; // 15
+        static final int LMBCS_6 = LMBCS_5 + 1; // 16
+        static final int LMBCS_8 = LMBCS_6 + 1; // 17
+        static final int LMBCS_11 = LMBCS_8 + 1; // 18
+        static final int LMBCS_16 = LMBCS_11 + 1; // 19
+        static final int LMBCS_17 = LMBCS_16 + 1; // 20
+        static final int LMBCS_18 = LMBCS_17 + 1; // 21
+        static final int LMBCS_19 = LMBCS_18 + 1; // 22
+        static final int LMBCS_LAST = LMBCS_19; // 22
+        static final int HZ = LMBCS_LAST + 1; // 23
+        static final int SCSU = HZ + 1; // 24
+        static final int ISCII = SCSU + 1; // 25
+        static final int US_ASCII = ISCII + 1; // 26
+        static final int UTF7 = US_ASCII + 1; // 27
+        static final int BOCU1 = UTF7 + 1; // 28
+        static final int UTF16 = BOCU1 + 1; // 29
+        static final int UTF32 = UTF16 + 1; // 30
+        static final int CESU8 = UTF32 + 1; // 31
+        static final int IMAP_MAILBOX = CESU8 + 1; // 32
+
+        // Number of converter types for which we have conversion routines.
+        static final int NUMBER_OF_SUPPORTED_CONVERTER_TYPES = IMAP_MAILBOX + 1;
+    }
+
+    /**
+     * Enum for specifying which platform a converter ID refers to. The use of
+     * platform/CCSID is not recommended. See openCCSID().
+     */
+    static final class UConverterPlatform {
+        static final int UNKNOWN = -1;
+        static final int IBM = 0;
+    }
+
+    // static UConverterSharedData[] converterData;
+    /*  static class cnvNameTypeClass {
+      String name;
+        int type;
+        cnvNameTypeClass(String name_, int type_) { name = name_; type = type_; }
+    } 
+    
+    static cnvNameTypeClass cnvNameType[];*/
+
+
+    static final String DATA_TYPE = "cnv";
+    //static final int CNV_DATA_BUFFER_SIZE = 25000;
+    //static final int SIZE_OF_UCONVERTER_SHARED_DATA = 228;
+
+}
diff --git a/src/com/ibm/icu/charset/UConverterStaticData.java b/src/com/ibm/icu/charset/UConverterStaticData.java
new file mode 100644
index 0000000..0ccd49b
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterStaticData.java
@@ -0,0 +1,61 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+final class UConverterStaticData {   /* +offset: size */
+    int structSize;                /* +0: 4 Size of this structure */
+    
+    String name; /* +4: 60  internal name of the converter- invariant chars */
+
+    int codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
+
+    byte platform;                /* +68: 1 platform of the converter (only IBM now) */
+    byte conversionType;          /* +69: 1 conversion type */
+
+    byte minBytesPerChar;         /* +70: 1 Minimum # bytes per char in this codepage */
+    byte maxBytesPerChar;         /* +71: 1 Maximum # bytes output per UChar in this codepage */
+
+    byte subChar[/*UCNV_MAX_SUBCHAR_LEN*/]; /* +72: 4  [note:  4 and 8 byte boundary] */
+    byte subCharLen;              /* +76: 1 */
+    
+    byte hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
+    byte hasFromUnicodeFallback; /* +78: 1 */
+    short unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
+    byte subChar1;               /* +80: 1  single-byte substitution character for IBM MBCS (0 if none) */
+    byte reserved[/*19*/];           /* +81: 19 to round out the structure */
+                                    /* total size: 100 */
+    public UConverterStaticData()
+    {
+        subChar = new byte[UConverterConstants.MAX_SUBCHAR_LEN];
+        reserved = new byte[19];
+    }
+
+/*    public UConverterStaticData(int structSize_, String name_, int codepage_, byte platform_, byte conversionType_, byte minBytesPerChar_, byte maxBytesPerChar_, byte[] subChar_, byte subCharLen_, byte hasToUnicodeFallback_, byte hasFromUnicodeFallback_, short unicodeMask_, byte subChar1_, byte[] reserved_)
+    {
+        structSize = structSize_;
+        name = name_;
+        codepage = codepage_;
+        platform = platform_;
+        conversionType = conversionType_;
+        minBytesPerChar = minBytesPerChar_;
+        maxBytesPerChar = maxBytesPerChar_;
+        subChar = new byte[UConverterConstants.MAX_SUBCHAR_LEN];
+        System.arraycopy(subChar_, 0, subChar, 0, (subChar.length < subChar_.length? subChar.length : subChar_.length));
+        subCharLen = subCharLen_;
+        hasToUnicodeFallback = hasToUnicodeFallback_;
+        hasFromUnicodeFallback = hasFromUnicodeFallback_;
+        unicodeMask = unicodeMask_;
+        subChar1 = subChar1_;
+        reserved = new byte[19];
+        System.arraycopy(reserved_, 0, reserved, 0, (reserved.length < reserved_.length? reserved.length : reserved_.length));
+    }*/
+
+    public static final int SIZE_OF_UCONVERTER_STATIC_DATA = 100;
+}
+
diff --git a/src/com/ibm/icu/charset/package.html b/src/com/ibm/icu/charset/package.html
new file mode 100644
index 0000000..a9e87ef
--- /dev/null
+++ b/src/com/ibm/icu/charset/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2006, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .charset Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Enhanced charset conversion support.</p>
+CharsetICU, CharsetProviderICU, CharsetEncoderICU and CharsetDecoderICU  provide conversion services for many charsets.
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt b/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt
new file mode 100644
index 0000000..3c70444
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt
@@ -0,0 +1,13830 @@
+0338 0334;
+0334 059A;
+0334 05A4;
+0334 05AE;
+0334 0615;
+0334 06E1;
+0334 0F18;
+0334 1B6C;
+0334 1D165;
+0334 1D17D;
+0334 1D189;
+0591 0334;
+059B 0334;
+05A5 0334;
+05AF 0334;
+0616 0334;
+06DB 0334;
+06EA 0334;
+0F86 0334;
+1B72 0334;
+1D168 0334;
+1D17D 0334;
+1D189 0334;
+0332 0334;
+0334 0341;
+030C 0334;
+0334 0308 0301;
+0328 0334;
+030E 0334;
+0315 0334;
+031A 0334;
+031F 0334;
+0324 0334;
+032B 0334;
+0330 0334;
+033A 0334;
+033F 0334;
+0349 0334;
+034E 0334;
+0354 0334;
+0359 0334;
+035E 0334;
+FE20 0334;
+1DC3 0334;
+1DC8 0334;
+0334 1DFE;
+0334 0486;
+0334 05B2;
+0334 05B7;
+0334 05BB;
+0334 FB1E;
+0334 064F;
+0334 0654;
+0334 0659;
+0334 065E;
+0334 0732;
+0334 0737;
+0334 073C;
+0334 0741;
+0334 0746;
+0334 07EB;
+0334 07F0;
+0334 0951;
+0334 0A3C;
+0334 10A0D;
+0334 0E49;
+0334 0ECA;
+0334 1037;
+193A 0334;
+302D 0334;
+20D0 0334;
+20D7 0334;
+20E8 0334;
+20EF 0334;
+20D9 0334;
+0009 0062;
+000B 0062;
+000D 0062;
+2028 0062;
+2002 0021;
+2007 0021;
+2006 003F;
+3000 0061;
+2009 0061;
+2008 0041;
+0020 0062;
+2009 0062;
+1680 0062;
+07FA 0062;
+1FEF 0041;
+0384 003F;
+1FFD 0062;
+005E 0061;
+00AF 0061;
+FE4C 0021;
+FE4B 0061;
+FE4C 0062;
+02D9 0062;
+00A8 0342 0334;
+1FED 003F;
+1FC1 0061;
+02DA 0041;
+1FCE 0334;
+1FCE 0021;
+1FBD 0041;
+1FCE 0062;
+1FFE 0334 0340;
+1FDD 003F;
+1FFE 0062;
+02DB 003F;
+FE34 0021;
+FF3F 0061;
+FE33 0041;
+2017 003F;
+309B 003F;
+00AD 003F;
+002D 0061;
+058A 003F;
+1806 003F;
+2011 0021;
+2012 003F;
+FE32 0061;
+2014 0061;
+2015 003F;
+2E17 003F;
+3030 003F;
+FF65 0021;
+FF0C 0021;
+FF0C 0041;
+055D 003F;
+060D 003F;
+066C 003F;
+1802 003F;
+A60D 003F;
+FF64 003F;
+3001 0062;
+FE46 003F;
+037E 003F;
+FE54 0061;
+061B 003F;
+2A74 003F;
+FE55 003F;
+003A 0062;
+061E 003F;
+0704 003F;
+0706 003F;
+0708 003F;
+1363 003F;
+1365 003F;
+1804 003F;
+0F14 003F;
+1B5D 003F;
+16EC 003F;
+0001 0021;
+0010 0021;
+001A 0021;
+0083 0021;
+008E 0021;
+0098 0021;
+0489 0021;
+059A 0021;
+05A4 0021;
+05AE 0021;
+0611 0021;
+06D6 0021;
+06E0 0021;
+06ED 0021;
+0FC6 0021;
+1B70 0021;
+202B 0021;
+206B 0021;
+D802 0021;
+FDD5 0021;
+FE09 0021;
+FE25 0021;
+1D166 0021;
+1D173 0021;
+1D17D 0021;
+1D189 0021;
+1FFFE 0021;
+6FFFE 0021;
+BFFFE 0021;
+E0023 0021;
+E002D 0021;
+E0037 0021;
+E0041 0021;
+E004B 0021;
+E0055 0021;
+E005F 0021;
+E0069 0021;
+E0073 0021;
+E007D 0021;
+E0107 0021;
+E0111 0021;
+E011B 0021;
+E0125 0021;
+E012F 0021;
+E0139 0021;
+E0143 0021;
+E014D 0021;
+E0157 0021;
+E0161 0021;
+E016B 0021;
+E0175 0021;
+E017F 0021;
+E0189 0021;
+E0193 0021;
+E019D 0021;
+E01A7 0021;
+E01B1 0021;
+E01BB 0021;
+E01C5 0021;
+E01CF 0021;
+E01D9 0021;
+E01E3 0021;
+E01ED 0021;
+0314 0021;
+0308 0021;
+0309 0021;
+0318 0021;
+0322 0021;
+032E 0021;
+033A 0021;
+0349 0021;
+0354 0021;
+035E 0021;
+1DC3 0021;
+1DCE 0021;
+0487 0021;
+05B6 0021;
+05BF 0021;
+FC5F 0021;
+FC61 0021;
+0652 0021;
+065A 0021;
+0733 0021;
+073D 0021;
+0747 0021;
+07F1 0021;
+0954 0021;
+0A71 0021;
+0C01 0021;
+1B34 0021;
+A880 0021;
+0E48 0021;
+0ECC 0021;
+1037 0021;
+17CC 0021;
+193B 0021;
+FF9F 0021;
+20D9 0021;
+20E3 0021;
+20ED 0021;
+203C 003F;
+2049 0061;
+FE15 0041;
+055C 0021;
+1944 0021;
+0005 003F;
+0014 003F;
+001E 003F;
+0088 003F;
+0092 003F;
+009C 003F;
+0594 003F;
+059E 003F;
+05A8 003F;
+05C5 003F;
+0615 003F;
+06DA 003F;
+06E4 003F;
+0F35 003F;
+180E 003F;
+200B 003F;
+2060 003F;
+206F 003F;
+DFFF 003F;
+FE03 003F;
+FE0D 003F;
+FFF9 003F;
+1D16D 003F;
+1D177 003F;
+1D181 003F;
+1D1AB 003F;
+3FFFE 003F;
+8FFFE 003F;
+DFFFE 003F;
+E0027 003F;
+E0031 003F;
+E003B 003F;
+E0045 003F;
+E004F 003F;
+E0059 003F;
+E0063 003F;
+E006D 003F;
+E0077 003F;
+E0101 003F;
+E010B 003F;
+E0115 003F;
+E011F 003F;
+E0129 003F;
+E0133 003F;
+E013D 003F;
+E0147 003F;
+E0151 003F;
+E015B 003F;
+E0165 003F;
+E016F 003F;
+E0179 003F;
+E0183 003F;
+E018D 003F;
+E0197 003F;
+E01A1 003F;
+E01AB 003F;
+E01B5 003F;
+E01BF 003F;
+E01C9 003F;
+E01D3 003F;
+E01DD 003F;
+E01E7 003F;
+EFFFF 003F;
+0340 003F;
+0307 003F;
+0310 003F;
+031C 003F;
+0326 003F;
+0333 003F;
+033E 003F;
+034D 003F;
+0358 003F;
+0361 003F;
+1DC7 003F;
+1DFE 003F;
+05B0 003F;
+05B9 003F;
+FE70 003F;
+FCF2 003F;
+FCF4 003F;
+0654 003F;
+065E 003F;
+0737 003F;
+0741 003F;
+07EB 003F;
+0901 003F;
+0983 003F;
+0A83 003F;
+0C82 003F;
+1B03 003F;
+10A0F 003F;
+0E4C 003F;
+0F7F 003F;
+17C6 003F;
+17D0 003F;
+302D 003F;
+20D3 003F;
+20DD 003F;
+20E7 003F;
+101FD 003F;
+003F 003F;
+003F 0041;
+FE16 0062;
+2E2E 0062;
+061F 0062;
+1367 0062;
+2CFA 0062;
+A60F 0062;
+2E18 0062;
+FE30 0021;
+FE19 0041;
+002E 0041;
+FE52 0062;
+06D4 0062;
+0702 0062;
+1803 0062;
+166E 0062;
+2CF9 0062;
+2E30 0062;
+FF61 003F;
+FE12 0062;
+0387 0062;
+0965 0062;
+A8CF 0062;
+1C3C 0062;
+A877 0062;
+1736 0062;
+104A 0062;
+17D4 0062;
+1B5E 0062;
+AA5D 0062;
+AA5F 0062;
+10A57 0062;
+1C7F 0062;
+07F7 0062;
+1360 0062;
+1A1E 0062;
+1B5A 0062;
+A95F 0062;
+2056 0062;
+2059 0062;
+205B 0062;
+205D 0062;
+2E2A 0062;
+2E2C 0062;
+2CFC 0062;
+2E19 0062;
+10100 0062;
+10102 0062;
+103D0 0062;
+12470 0062;
+12472 0062;
+0027 0061;
+2018 0062;
+201A 0062;
+2039 0062;
+0022 0061;
+201C 0062;
+201E 0062;
+301D 0062;
+301F 0062;
+00BB 0062;
+207D 003F;
+247D 0061;
+247F 0061;
+2481 0061;
+2483 0061;
+2485 0061;
+2475 0061;
+2476 0061;
+2478 0061;
+247A 0061;
+247C 0061;
+207D 0041;
+0028 0062;
+249D 0062;
+249F 0062;
+24A1 0062;
+24A3 0062;
+24A5 0062;
+24A7 0062;
+24A9 0062;
+24AB 0062;
+24AD 0062;
+24AF 0062;
+24B1 0062;
+24B3 0062;
+24B5 0062;
+320E 0062;
+320F 0062;
+3210 0062;
+3211 0062;
+3212 0062;
+3213 0062;
+3214 0062;
+3215 0062;
+321E 0062;
+3216 0062;
+3209 0062;
+320A 0062;
+320B 0062;
+320C 0062;
+320D 0062;
+3220 0062;
+3222 0062;
+3221 0062;
+3239 0062;
+3241 0062;
+3225 0062;
+3229 0062;
+3234 0062;
+3223 0062;
+323B 0062;
+322A 0062;
+322D 0062;
+322C 0062;
+3235 0062;
+3233 0062;
+3240 0062;
+3243 0062;
+323E 0062;
+208E 0021;
+FF09 0061;
+0029 0062;
+FF3B 003F;
+FE47 0062;
+FF3D 0041;
+007B 003F;
+FE37 0061;
+007D 003F;
+FE38 0061;
+0F3A 0062;
+0F3C 0062;
+169B 0062;
+2045 0062;
+29FC 0062;
+2983 0062;
+2985 0061;
+2986 0061;
+2987 0062;
+2989 0062;
+298B 0062;
+298D 0062;
+298F 0062;
+2991 0062;
+2993 0062;
+2995 0062;
+2997 0062;
+27EC 0062;
+27EE 0062;
+2E02 0062;
+2E04 0062;
+2E09 0062;
+2E0C 0062;
+2E1C 0062;
+2E20 0062;
+2E22 0062;
+2E24 0062;
+2E26 0062;
+2E28 0062;
+3008 003F;
+FE3F 0062;
+3009 0041;
+300A 0061;
+300B 0061;
+FF62 003F;
+FE41 0062;
+FF63 0041;
+300E 0061;
+300F 0061;
+3010 0061;
+3011 0061;
+FE5D 003F;
+FE39 0062;
+FE5E 0041;
+3016 0061;
+3017 0061;
+3018 0062;
+301A 0062;
+FD3E 0062;
+00A7 0062;
+204B 0062;
+00AE 0062;
+FF20 0041;
+FF0A 003F;
+FE61 0062;
+2051 0062;
+A673 0062;
+FF0F 0062;
+FF3C 003F;
+FE68 0062;
+FF06 0041;
+214B 0062;
+FF03 003F;
+FE5F 0062;
+FF05 0041;
+066A 0062;
+0609 0062;
+060A 0062;
+2020 0062;
+2022 0062;
+2027 0062;
+204C 0062;
+2034 0021;
+2033 0061;
+2037 0021;
+2035 0062;
+303D 0062;
+203B 0062;
+2054 0062;
+2050 0062;
+2042 0062;
+2E01 0062;
+2E07 0062;
+2E0B 0062;
+2E0F 0062;
+2E11 0062;
+2E13 0062;
+2E15 0062;
+2E1A 0062;
+2E1E 0062;
+A67E 0062;
+055B 0062;
+05BE 0062;
+05C3 0062;
+05F3 0062;
+070A 0062;
+070C 0062;
+1800 0062;
+0970 0062;
+0E5A 0062;
+0F04 0062;
+0F06 0062;
+0F08 0062;
+0F0A 0062;
+0FD1 0062;
+0F0C 0062;
+0F0E 0062;
+0F10 0062;
+0F12 0062;
+0FD2 0062;
+0FD4 0062;
+1C3E 0062;
+1940 0062;
+104D 0062;
+104F 0062;
+109F 0062;
+17D8 0062;
+17DA 0062;
+A874 0062;
+A92E 0062;
+10A50 0062;
+10A52 0062;
+10A54 0062;
+10A58 0062;
+0374 0062;
+02BA 0062;
+02C3 0062;
+02C5 0062;
+02C7 0062;
+02C9 0062;
+02CB 0062;
+02CD 0062;
+02CF 0062;
+02D3 0062;
+02D5 0062;
+02D7 0062;
+02DF 0062;
+02E6 0062;
+02E8 0062;
+02EA 0062;
+02EC 0062;
+02EF 0062;
+02F1 0062;
+02F3 0062;
+02F5 0062;
+02F7 0062;
+02F9 0062;
+02FB 0062;
+02FD 0062;
+02FF 0062;
+1391 0062;
+1393 0062;
+1395 0062;
+1397 0062;
+1399 0062;
+A701 0062;
+A703 0062;
+A705 0062;
+A707 0062;
+A709 0062;
+A70B 0062;
+A70D 0062;
+A70F 0062;
+A711 0062;
+A713 0062;
+A715 0062;
+A717 0062;
+A719 0062;
+A71B 0062;
+A71D 0062;
+A71F 0062;
+A721 0062;
+A789 0062;
+00B0 0062;
+2109 0062;
+0608 0062;
+060F 0062;
+FDFD 0062;
+09FA 0062;
+0BF3 0062;
+0BF5 0062;
+0BF7 0062;
+0BFA 0062;
+0CF1 0062;
+0D79 0062;
+A829 0062;
+A82B 0062;
+0F01 0062;
+0F03 0062;
+0F15 0062;
+0F17 0062;
+0F1B 0062;
+0F1D 0062;
+0F1F 0062;
+0F36 0062;
+0F3E 0062;
+0FBE 0062;
+0FC0 0062;
+0FC2 0062;
+0FC4 0062;
+0FC7 0062;
+0FC9 0062;
+0FCB 0062;
+0FCE 0062;
+19E0 0062;
+19E2 0062;
+19E4 0062;
+19E6 0062;
+19E8 0062;
+19EA 0062;
+19EC 0062;
+19EE 0062;
+19F0 0062;
+19F2 0062;
+19F4 0062;
+19F6 0062;
+19F8 0062;
+19FA 0062;
+19FC 0062;
+19FE 0062;
+1B61 0062;
+1B63 0062;
+1B65 0062;
+1B67 0062;
+1B69 0062;
+1B74 0062;
+1B76 0062;
+1B78 0062;
+1B7A 0062;
+1B7C 0062;
+2108 0062;
+2117 0062;
+211E 0062;
+2123 0062;
+2127 0062;
+212E 0062;
+2141 0062;
+2143 0062;
+214A 0062;
+214D 0062;
+219A 0021;
+2190 0062;
+219B 003F;
+2191 0021;
+2193 0021;
+2194 0338 0334;
+2194 0062;
+2196 0041;
+2198 0041;
+219C 0041;
+219E 0041;
+21A0 0041;
+21A2 0041;
+21A4 0041;
+21A6 0041;
+21A8 0041;
+21AA 0041;
+21AC 0041;
+21AF 0041;
+21B1 0041;
+21B3 0041;
+21B5 0041;
+21B7 0041;
+21B9 0041;
+21BB 0041;
+21BD 0041;
+21BF 0041;
+21C1 0041;
+21C3 0041;
+21C5 0041;
+21C7 0041;
+21C9 0041;
+21CB 0041;
+21CD 0021;
+21D1 003F;
+21D2 0061;
+21D3 0062;
+21CE 0041;
+21D6 0061;
+21D8 0061;
+21DA 0061;
+21DC 0061;
+21DE 0061;
+21E0 0061;
+21E2 0061;
+21E4 0061;
+21E6 0061;
+21E8 0061;
+21EA 0061;
+21EC 0061;
+21EE 0061;
+21F0 0061;
+21F2 0061;
+21F4 0061;
+21F6 0061;
+21F8 0061;
+21FA 0061;
+21FC 0061;
+21FE 0061;
+2200 0061;
+1D715 0021;
+2202 0061;
+1D789 0041;
+2203 0021;
+2205 0021;
+2207 0021;
+1D76F 003F;
+1D6FB 0041;
+2208 0338 0334;
+2208 0062;
+220C 0021;
+220D 003F;
+220E 003F;
+2210 003F;
+2140 0061;
+002B 003F;
+FB29 0061;
+FB29 0062;
+00F7 003F;
+226E 0334;
+003C 0041;
+226E 0062;
+FF1D 003F;
+2A76 0041;
+FE66 0041;
+207C 0062;
+FF1E 003F;
+226F 0041;
+00AC 0041;
+007C 0041;
+00A6 0041;
+007E 0021;
+2212 0021;
+208B 0061;
+2214 0021;
+2216 0021;
+2218 0021;
+221A 0021;
+0606 0021;
+0607 0021;
+221E 0021;
+2220 0021;
+2222 0021;
+2224 003F;
+2226 0021;
+2227 003F;
+2229 003F;
+222B 003F;
+222D 0061;
+222E 003F;
+222F 0062;
+2232 003F;
+2234 003F;
+2236 003F;
+2238 003F;
+223A 003F;
+2241 0334;
+2241 0062;
+223E 0062;
+2240 0062;
+2243 003F;
+2245 0021;
+2246 0021;
+2249 003F;
+224A 0041;
+224C 0041;
+226D 0061;
+224F 003F;
+2251 003F;
+2253 003F;
+2255 003F;
+2257 003F;
+2259 003F;
+225B 003F;
+225D 003F;
+225F 003F;
+2261 0061;
+2263 0062;
+2270 0041;
+2265 0041;
+2267 0021;
+2269 0021;
+226B 0021;
+2272 0338 0334;
+2272 0062;
+2275 0061;
+2276 0061;
+2277 003F;
+227A 0021;
+227B 0338 0334;
+227B 0062;
+22E0 0061;
+227D 0061;
+227E 0062;
+2282 003F;
+2283 0021;
+2286 0338 0334;
+2286 0062;
+2289 0061;
+228B 003F;
+228D 003F;
+228F 003F;
+22E2 0334;
+22E2 0062;
+22E3 0041;
+2294 0061;
+2296 0061;
+2298 0061;
+229A 0061;
+229C 0061;
+229E 0061;
+22A0 0061;
+22A2 0021;
+22A3 0021;
+22A5 0021;
+22A7 0021;
+22AD 003F;
+22AE 0021;
+22AA 003F;
+22AB 0061;
+22B0 0062;
+22B2 003F;
+22B3 0021;
+22B4 0338 0334;
+22B4 0062;
+22ED 0061;
+22B7 003F;
+22B9 003F;
+22BB 003F;
+22BD 003F;
+22BF 003F;
+22C1 003F;
+22C3 003F;
+22C5 003F;
+22C7 003F;
+22C9 003F;
+22CB 003F;
+22CD 003F;
+22CF 003F;
+22D1 003F;
+22D3 003F;
+22D5 003F;
+22D7 003F;
+22D9 003F;
+22DB 003F;
+22DD 003F;
+22DF 003F;
+22E5 003F;
+22E7 003F;
+22E9 003F;
+22EF 003F;
+22F1 003F;
+22F3 003F;
+22F5 003F;
+22F7 003F;
+22F9 003F;
+22FB 003F;
+22FD 003F;
+22FF 003F;
+2301 003F;
+2303 003F;
+2305 003F;
+2307 003F;
+2309 003F;
+230B 003F;
+230D 003F;
+230F 003F;
+2311 003F;
+2313 003F;
+2315 003F;
+2317 003F;
+2319 003F;
+231B 003F;
+231D 003F;
+231F 003F;
+2321 003F;
+2323 003F;
+2325 003F;
+2327 003F;
+232B 003F;
+232D 003F;
+232F 003F;
+2331 003F;
+2333 003F;
+2335 003F;
+2337 003F;
+2339 003F;
+233B 003F;
+233D 003F;
+233F 003F;
+2341 003F;
+2343 003F;
+2345 003F;
+2347 003F;
+2349 003F;
+234B 003F;
+234D 003F;
+234F 003F;
+2351 003F;
+2353 003F;
+2355 003F;
+2357 003F;
+2359 003F;
+235B 003F;
+235D 003F;
+235F 003F;
+2361 003F;
+2363 003F;
+2365 003F;
+2367 003F;
+2369 003F;
+236B 003F;
+236D 003F;
+236F 003F;
+2371 003F;
+2373 003F;
+2375 003F;
+2377 003F;
+2379 003F;
+237B 003F;
+237D 003F;
+237F 003F;
+2381 003F;
+2383 003F;
+2385 003F;
+2387 003F;
+2389 003F;
+238B 003F;
+238D 003F;
+238F 003F;
+2391 003F;
+2393 003F;
+2395 003F;
+2397 003F;
+2399 003F;
+239B 003F;
+239D 003F;
+239F 003F;
+23A1 003F;
+23A3 003F;
+23A5 003F;
+23A7 003F;
+23A9 003F;
+23AB 003F;
+23AD 003F;
+23AF 003F;
+23B1 003F;
+23B3 003F;
+23B5 003F;
+23B7 003F;
+23B9 003F;
+23BB 003F;
+23BD 003F;
+23BF 003F;
+23C1 003F;
+23C3 003F;
+23C5 003F;
+23C7 003F;
+23C9 003F;
+23CB 003F;
+23CD 003F;
+23CF 003F;
+23D1 003F;
+23D3 003F;
+23D5 003F;
+23D7 003F;
+23D9 003F;
+23DB 003F;
+23DD 003F;
+23DF 003F;
+23E1 003F;
+23E3 003F;
+23E5 003F;
+23E7 003F;
+2401 003F;
+2403 003F;
+2405 003F;
+2407 003F;
+2409 003F;
+240B 003F;
+240D 003F;
+240F 003F;
+2411 003F;
+2413 003F;
+2415 003F;
+2417 003F;
+2419 003F;
+241B 003F;
+241D 003F;
+241F 003F;
+2421 003F;
+2423 003F;
+2425 003F;
+2440 003F;
+2442 003F;
+2444 003F;
+2446 003F;
+2448 003F;
+244A 003F;
+2501 003F;
+FFE8 0061;
+2504 003F;
+2506 003F;
+2508 003F;
+250A 003F;
+250C 003F;
+250E 003F;
+2510 003F;
+2512 003F;
+2514 003F;
+2516 003F;
+2518 003F;
+251A 003F;
+251C 003F;
+251E 003F;
+2520 003F;
+2522 003F;
+2524 003F;
+2526 003F;
+2528 003F;
+252A 003F;
+252C 003F;
+252E 003F;
+2530 003F;
+2532 003F;
+2534 003F;
+2536 003F;
+2538 003F;
+253A 003F;
+253C 003F;
+253E 003F;
+2540 003F;
+2542 003F;
+2544 003F;
+2546 003F;
+2548 003F;
+254A 003F;
+254C 003F;
+254E 003F;
+2550 003F;
+2552 003F;
+2554 003F;
+2556 003F;
+2558 003F;
+255A 003F;
+255C 003F;
+255E 003F;
+2560 003F;
+2562 003F;
+2564 003F;
+2566 003F;
+2568 003F;
+256A 003F;
+256C 003F;
+256E 003F;
+2570 003F;
+2572 003F;
+2574 003F;
+2576 003F;
+2578 003F;
+257A 003F;
+257C 003F;
+257E 003F;
+2580 003F;
+2582 003F;
+2584 003F;
+2586 003F;
+2588 003F;
+258A 003F;
+258C 003F;
+258E 003F;
+2590 003F;
+2592 003F;
+2594 003F;
+2596 003F;
+2598 003F;
+259A 003F;
+259C 003F;
+259E 003F;
+FFED 0021;
+25A1 003F;
+25A3 003F;
+25A5 003F;
+25A7 003F;
+25A9 003F;
+25AB 003F;
+25AD 003F;
+25AF 003F;
+25B1 003F;
+25B3 003F;
+25B5 003F;
+25B7 003F;
+25B9 003F;
+25BB 003F;
+25BD 003F;
+25BF 003F;
+25C1 003F;
+25C3 003F;
+25C5 003F;
+25C7 003F;
+25C9 003F;
+FFEE 0021;
+25CC 003F;
+25CE 003F;
+25D0 003F;
+25D2 003F;
+25D4 003F;
+25D6 003F;
+25D8 003F;
+25DA 003F;
+25DC 003F;
+25DE 003F;
+25E0 003F;
+25E2 003F;
+25E4 003F;
+25E6 003F;
+25E8 003F;
+25EA 003F;
+25EC 003F;
+25EE 003F;
+25F0 003F;
+25F2 003F;
+25F4 003F;
+25F6 003F;
+25F8 003F;
+25FA 003F;
+25FC 003F;
+25FE 003F;
+2600 003F;
+2602 003F;
+2604 003F;
+2606 003F;
+2608 003F;
+260A 003F;
+260C 003F;
+260E 003F;
+2610 003F;
+2612 003F;
+2614 003F;
+2616 003F;
+2618 003F;
+261A 003F;
+261C 003F;
+261E 003F;
+2620 003F;
+2622 003F;
+2624 003F;
+2626 003F;
+2628 003F;
+262A 003F;
+262C 003F;
+262E 003F;
+2638 003F;
+263A 003F;
+263C 003F;
+263E 003F;
+2640 003F;
+2642 003F;
+2644 003F;
+2646 003F;
+2648 003F;
+264A 003F;
+264C 003F;
+264E 003F;
+2650 003F;
+2652 003F;
+2654 003F;
+2656 003F;
+2658 003F;
+265A 003F;
+265C 003F;
+265E 003F;
+2660 003F;
+2662 003F;
+2664 003F;
+2666 003F;
+2668 003F;
+266A 003F;
+266C 003F;
+2671 003F;
+2673 003F;
+2675 003F;
+2677 003F;
+2679 003F;
+267B 003F;
+267D 003F;
+267F 003F;
+2681 003F;
+2683 003F;
+2685 003F;
+2687 003F;
+2689 003F;
+2691 003F;
+2693 003F;
+2695 003F;
+2697 003F;
+2699 003F;
+269B 003F;
+269D 003F;
+26A1 003F;
+26A3 003F;
+26A5 003F;
+26A7 003F;
+26A9 003F;
+26AB 003F;
+26AD 003F;
+26AF 003F;
+26B1 003F;
+26B3 003F;
+26B5 003F;
+26B7 003F;
+26B9 003F;
+26BB 003F;
+26C0 003F;
+26C2 003F;
+2701 003F;
+2703 003F;
+2706 003F;
+2708 003F;
+270C 003F;
+270E 003F;
+2710 003F;
+2712 003F;
+2714 003F;
+2716 003F;
+2718 003F;
+271A 003F;
+271C 003F;
+271E 003F;
+2720 003F;
+2722 003F;
+2724 003F;
+2726 003F;
+2729 003F;
+272B 003F;
+272D 003F;
+272F 003F;
+2731 003F;
+2733 003F;
+2735 003F;
+2737 003F;
+2739 003F;
+273B 003F;
+273D 003F;
+273F 003F;
+2741 003F;
+2743 003F;
+2745 003F;
+2747 003F;
+2749 003F;
+274B 003F;
+274F 003F;
+2751 003F;
+2756 003F;
+2759 003F;
+275B 003F;
+275D 003F;
+2761 003F;
+2763 003F;
+2765 003F;
+2767 003F;
+2769 003F;
+276B 003F;
+276D 003F;
+276F 003F;
+2771 003F;
+2773 003F;
+2775 003F;
+2798 003F;
+279A 003F;
+279C 003F;
+279E 003F;
+27A0 003F;
+27A2 003F;
+27A4 003F;
+27A6 003F;
+27A8 003F;
+27AA 003F;
+27AC 003F;
+27AE 003F;
+27B1 003F;
+27B3 003F;
+27B5 003F;
+27B7 003F;
+27B9 003F;
+27BB 003F;
+27BD 003F;
+27C0 003F;
+27C2 003F;
+27C4 003F;
+27C6 003F;
+27C8 003F;
+27CA 003F;
+27D0 003F;
+27D2 003F;
+27D4 003F;
+27D6 003F;
+27D8 003F;
+27DA 003F;
+27DC 003F;
+27DE 003F;
+27E0 003F;
+27E2 003F;
+27E4 003F;
+27E6 003F;
+27E8 003F;
+27EA 003F;
+27F0 003F;
+27F2 003F;
+27F4 003F;
+27F6 003F;
+27F8 003F;
+27FA 003F;
+27FC 003F;
+27FE 003F;
+2900 003F;
+2902 003F;
+2904 003F;
+2906 003F;
+2908 003F;
+290A 003F;
+290C 003F;
+290E 003F;
+2910 003F;
+2912 003F;
+2914 003F;
+2916 003F;
+2918 003F;
+291A 003F;
+291C 003F;
+291E 003F;
+2920 003F;
+2922 003F;
+2924 003F;
+2926 003F;
+2928 003F;
+292A 003F;
+292C 003F;
+292E 003F;
+2930 003F;
+2932 003F;
+2934 003F;
+2936 003F;
+2938 003F;
+293A 003F;
+293C 003F;
+293E 003F;
+2940 003F;
+2942 003F;
+2944 003F;
+2946 003F;
+2948 003F;
+294A 003F;
+294C 003F;
+294E 003F;
+2950 003F;
+2952 003F;
+2954 003F;
+2956 003F;
+2958 003F;
+295A 003F;
+295C 003F;
+295E 003F;
+2960 003F;
+2962 003F;
+2964 003F;
+2966 003F;
+2968 003F;
+296A 003F;
+296C 003F;
+296E 003F;
+2970 003F;
+2972 003F;
+2974 003F;
+2976 003F;
+2978 003F;
+297A 003F;
+297C 003F;
+297E 003F;
+2980 003F;
+2982 003F;
+299A 003F;
+299C 003F;
+299E 003F;
+29A0 003F;
+29A2 003F;
+29A4 003F;
+29A6 003F;
+29A8 003F;
+29AA 003F;
+29AC 003F;
+29AE 003F;
+29B0 003F;
+29B2 003F;
+29B4 003F;
+29B6 003F;
+29B8 003F;
+29BA 003F;
+29BC 003F;
+29BE 003F;
+29C0 003F;
+29C2 003F;
+29C4 003F;
+29C6 003F;
+29C8 003F;
+29CA 003F;
+29CC 003F;
+29CE 003F;
+29D0 003F;
+29D2 003F;
+29D4 003F;
+29D6 003F;
+29D8 003F;
+29DA 003F;
+29DC 003F;
+29DE 003F;
+29E0 003F;
+29E2 003F;
+29E4 003F;
+29E6 003F;
+29E8 003F;
+29EA 003F;
+29EC 003F;
+29EE 003F;
+29F0 003F;
+29F2 003F;
+29F4 003F;
+29F6 003F;
+29F8 003F;
+29FA 003F;
+29FE 003F;
+2A00 003F;
+2A02 003F;
+2A04 003F;
+2A06 003F;
+2A08 003F;
+2A0A 003F;
+2A0D 003F;
+2A0F 003F;
+2A11 003F;
+2A13 003F;
+2A15 003F;
+2A17 003F;
+2A19 003F;
+2A1B 003F;
+2A1D 003F;
+2A1F 003F;
+2A21 003F;
+2A23 003F;
+2A25 003F;
+2A27 003F;
+2A29 003F;
+2A2B 003F;
+2A2D 003F;
+2A2F 003F;
+2A31 003F;
+2A33 003F;
+2A35 003F;
+2A37 003F;
+2A39 003F;
+2A3B 003F;
+2A3D 003F;
+2A3F 003F;
+2A41 003F;
+2A43 003F;
+2A45 003F;
+2A47 003F;
+2A49 003F;
+2A4B 003F;
+2A4D 003F;
+2A4F 003F;
+2A51 003F;
+2A53 003F;
+2A55 003F;
+2A57 003F;
+2A59 003F;
+2A5B 003F;
+2A5D 003F;
+2A5F 003F;
+2A61 003F;
+2A63 003F;
+2A65 003F;
+2A67 003F;
+2A69 003F;
+2A6B 003F;
+2A6D 003F;
+2A6F 003F;
+2A71 003F;
+2A73 003F;
+2A78 003F;
+2A7A 003F;
+2A7C 003F;
+2A7E 003F;
+2A80 003F;
+2A82 003F;
+2A84 003F;
+2A86 003F;
+2A88 003F;
+2A8A 003F;
+2A8C 003F;
+2A8E 003F;
+2A90 003F;
+2A92 003F;
+2A94 003F;
+2A96 003F;
+2A98 003F;
+2A9A 003F;
+2A9C 003F;
+2A9E 003F;
+2AA0 003F;
+2AA2 003F;
+2AA4 003F;
+2AA6 003F;
+2AA8 003F;
+2AAA 003F;
+2AAC 003F;
+2AAE 003F;
+2AB0 003F;
+2AB2 003F;
+2AB4 003F;
+2AB6 003F;
+2AB8 003F;
+2ABA 003F;
+2ABC 003F;
+2ABE 003F;
+2AC0 003F;
+2AC2 003F;
+2AC4 003F;
+2AC6 003F;
+2AC8 003F;
+2ACA 003F;
+2ACC 003F;
+2ACE 003F;
+2AD0 003F;
+2AD2 003F;
+2AD4 003F;
+2AD6 003F;
+2AD8 003F;
+2ADA 003F;
+2ADD 0338 0334;
+2ADC 0062;
+2ADF 0062;
+2AE1 0062;
+2AE3 0062;
+2AE5 0062;
+2AE7 0062;
+2AE9 0062;
+2AEB 0062;
+2AED 0062;
+2AEF 0062;
+2AF1 0062;
+2AF3 0062;
+2AF5 0062;
+2AF7 0062;
+2AF9 0062;
+2AFB 0062;
+2AFD 0062;
+2AFF 0062;
+2B01 0062;
+2B03 0062;
+2B05 0062;
+2B07 0062;
+2B09 0062;
+2B0B 0062;
+2B0D 0062;
+2B0F 0062;
+2B11 0062;
+2B13 0062;
+2B15 0062;
+2B17 0062;
+2B19 0062;
+2B1B 0062;
+2B1D 0062;
+2B1F 0062;
+2B21 0062;
+2B23 0062;
+2B25 0062;
+2B27 0062;
+2B29 0062;
+2B2B 0062;
+2B2D 0062;
+2B2F 0062;
+2B31 0062;
+2B33 0062;
+2B35 0062;
+2B37 0062;
+2B39 0062;
+2B3B 0062;
+2B3D 0062;
+2B3F 0062;
+2B41 0062;
+2B43 0062;
+2B45 0062;
+2B47 0062;
+2B49 0062;
+2B4B 0062;
+2B50 0062;
+2B52 0062;
+2B54 0062;
+2CE6 0062;
+2CE8 0062;
+2CEA 0062;
+2801 0062;
+2803 0062;
+2805 0062;
+2807 0062;
+2809 0062;
+280B 0062;
+280D 0062;
+280F 0062;
+2811 0062;
+2813 0062;
+2815 0062;
+2817 0062;
+2819 0062;
+281B 0062;
+281D 0062;
+281F 0062;
+2821 0062;
+2823 0062;
+2825 0062;
+2827 0062;
+2829 0062;
+282B 0062;
+282D 0062;
+282F 0062;
+2831 0062;
+2833 0062;
+2835 0062;
+2837 0062;
+2839 0062;
+283B 0062;
+283D 0062;
+283F 0062;
+2841 0062;
+2843 0062;
+2845 0062;
+2847 0062;
+2849 0062;
+284B 0062;
+284D 0062;
+284F 0062;
+2851 0062;
+2853 0062;
+2855 0062;
+2857 0062;
+2859 0062;
+285B 0062;
+285D 0062;
+285F 0062;
+2861 0062;
+2863 0062;
+2865 0062;
+2867 0062;
+2869 0062;
+286B 0062;
+286D 0062;
+286F 0062;
+2871 0062;
+2873 0062;
+2875 0062;
+2877 0062;
+2879 0062;
+287B 0062;
+287D 0062;
+287F 0062;
+2881 0062;
+2883 0062;
+2885 0062;
+2887 0062;
+2889 0062;
+288B 0062;
+288D 0062;
+288F 0062;
+2891 0062;
+2893 0062;
+2895 0062;
+2897 0062;
+2899 0062;
+289B 0062;
+289D 0062;
+289F 0062;
+28A1 0062;
+28A3 0062;
+28A5 0062;
+28A7 0062;
+28A9 0062;
+28AB 0062;
+28AD 0062;
+28AF 0062;
+28B1 0062;
+28B3 0062;
+28B5 0062;
+28B7 0062;
+28B9 0062;
+28BB 0062;
+28BD 0062;
+28BF 0062;
+28C1 0062;
+28C3 0062;
+28C5 0062;
+28C7 0062;
+28C9 0062;
+28CB 0062;
+28CD 0062;
+28CF 0062;
+28D1 0062;
+28D3 0062;
+28D5 0062;
+28D7 0062;
+28D9 0062;
+28DB 0062;
+28DD 0062;
+28DF 0062;
+28E1 0062;
+28E3 0062;
+28E5 0062;
+28E7 0062;
+28E9 0062;
+28EB 0062;
+28ED 0062;
+28EF 0062;
+28F1 0062;
+28F3 0062;
+28F5 0062;
+28F7 0062;
+28F9 0062;
+28FB 0062;
+28FD 0062;
+28FF 0062;
+268B 0062;
+268D 0062;
+268F 0062;
+2631 0062;
+2633 0062;
+2635 0062;
+2637 0062;
+4DC1 0062;
+4DC3 0062;
+4DC5 0062;
+4DC7 0062;
+4DC9 0062;
+4DCB 0062;
+4DCD 0062;
+4DCF 0062;
+4DD1 0062;
+4DD3 0062;
+4DD5 0062;
+4DD7 0062;
+4DD9 0062;
+4DDB 0062;
+4DDD 0062;
+4DDF 0062;
+4DE1 0062;
+4DE3 0062;
+4DE5 0062;
+4DE7 0062;
+4DE9 0062;
+4DEB 0062;
+4DED 0062;
+4DEF 0062;
+4DF1 0062;
+4DF3 0062;
+4DF5 0062;
+4DF7 0062;
+4DF9 0062;
+4DFB 0062;
+4DFD 0062;
+4DFF 0062;
+1D301 0062;
+1D303 0062;
+1D305 0062;
+1D307 0062;
+1D309 0062;
+1D30B 0062;
+1D30D 0062;
+1D30F 0062;
+1D311 0062;
+1D313 0062;
+1D315 0062;
+1D317 0062;
+1D319 0062;
+1D31B 0062;
+1D31D 0062;
+1D31F 0062;
+1D321 0062;
+1D323 0062;
+1D325 0062;
+1D327 0062;
+1D329 0062;
+1D32B 0062;
+1D32D 0062;
+1D32F 0062;
+1D331 0062;
+1D333 0062;
+1D335 0062;
+1D337 0062;
+1D339 0062;
+1D33B 0062;
+1D33D 0062;
+1D33F 0062;
+1D341 0062;
+1D343 0062;
+1D345 0062;
+1D347 0062;
+1D349 0062;
+1D34B 0062;
+1D34D 0062;
+1D34F 0062;
+1D351 0062;
+1D353 0062;
+1D355 0062;
+A490 0062;
+A492 0062;
+A494 0062;
+A496 0062;
+A498 0062;
+A49A 0062;
+A49C 0062;
+A49E 0062;
+A4A0 0062;
+A4A2 0062;
+A4A4 0062;
+A4A6 0062;
+A4A8 0062;
+A4AA 0062;
+A4AC 0062;
+A4AE 0062;
+A4B0 0062;
+A4B2 0062;
+A4B4 0062;
+A4B6 0062;
+A4B8 0062;
+A4BA 0062;
+A4BC 0062;
+A4BE 0062;
+A4C0 0062;
+A4C2 0062;
+A4C4 0062;
+A4C6 0062;
+10138 0062;
+1013A 0062;
+1013C 0062;
+1013E 0062;
+10179 0062;
+1017B 0062;
+1017D 0062;
+1017F 0062;
+10181 0062;
+10183 0062;
+10185 0062;
+10187 0062;
+10189 0062;
+10191 0062;
+10193 0062;
+10195 0062;
+10197 0062;
+10199 0062;
+1019B 0062;
+101D1 0062;
+101D3 0062;
+101D5 0062;
+101D7 0062;
+101D9 0062;
+101DB 0062;
+101DD 0062;
+101DF 0062;
+101E1 0062;
+101E3 0062;
+101E5 0062;
+101E7 0062;
+101E9 0062;
+101EB 0062;
+101ED 0062;
+101EF 0062;
+101F1 0062;
+101F3 0062;
+101F5 0062;
+101F7 0062;
+101F9 0062;
+101FB 0062;
+1D000 0062;
+1D002 0062;
+1D004 0062;
+1D006 0062;
+1D008 0062;
+1D00A 0062;
+1D00C 0062;
+1D00E 0062;
+1D010 0062;
+1D012 0062;
+1D014 0062;
+1D016 0062;
+1D018 0062;
+1D01A 0062;
+1D01C 0062;
+1D01E 0062;
+1D020 0062;
+1D022 0062;
+1D024 0062;
+1D026 0062;
+1D028 0062;
+1D02A 0062;
+1D02C 0062;
+1D02E 0062;
+1D030 0062;
+1D032 0062;
+1D034 0062;
+1D036 0062;
+1D038 0062;
+1D03A 0062;
+1D03C 0062;
+1D03E 0062;
+1D040 0062;
+1D042 0062;
+1D044 0062;
+1D046 0062;
+1D048 0062;
+1D04A 0062;
+1D04C 0062;
+1D04E 0062;
+1D050 0062;
+1D052 0062;
+1D054 0062;
+1D056 0062;
+1D058 0062;
+1D05A 0062;
+1D05C 0062;
+1D05E 0062;
+1D060 0062;
+1D062 0062;
+1D064 0062;
+1D066 0062;
+1D068 0062;
+1D06A 0062;
+1D06C 0062;
+1D06E 0062;
+1D070 0062;
+1D072 0062;
+1D074 0062;
+1D076 0062;
+1D078 0062;
+1D07A 0062;
+1D07C 0062;
+1D07E 0062;
+1D080 0062;
+1D082 0062;
+1D084 0062;
+1D086 0062;
+1D088 0062;
+1D08A 0062;
+1D08C 0062;
+1D08E 0062;
+1D090 0062;
+1D092 0062;
+1D094 0062;
+1D096 0062;
+1D098 0062;
+1D09A 0062;
+1D09C 0062;
+1D09E 0062;
+1D0A0 0062;
+1D0A2 0062;
+1D0A4 0062;
+1D0A6 0062;
+1D0A8 0062;
+1D0AA 0062;
+1D0AC 0062;
+1D0AE 0062;
+1D0B0 0062;
+1D0B2 0062;
+1D0B4 0062;
+1D0B6 0062;
+1D0B8 0062;
+1D0BA 0062;
+1D0BC 0062;
+1D0BE 0062;
+1D0C0 0062;
+1D0C2 0062;
+1D0C4 0062;
+1D0C6 0062;
+1D0C8 0062;
+1D0CA 0062;
+1D0CC 0062;
+1D0CE 0062;
+1D0D0 0062;
+1D0D2 0062;
+1D0D4 0062;
+1D0D6 0062;
+1D0D8 0062;
+1D0DA 0062;
+1D0DC 0062;
+1D0DE 0062;
+1D0E0 0062;
+1D0E2 0062;
+1D0E4 0062;
+1D0E6 0062;
+1D0E8 0062;
+1D0EA 0062;
+1D0EC 0062;
+1D0EE 0062;
+1D0F0 0062;
+1D0F2 0062;
+1D0F4 0062;
+1D100 0062;
+1D102 0062;
+1D104 0062;
+1D106 0062;
+1D108 0062;
+1D10A 0062;
+1D10C 0062;
+1D10E 0062;
+1D110 0062;
+1D112 0062;
+1D114 0062;
+1D116 0062;
+1D118 0062;
+1D11A 0062;
+1D11C 0062;
+1D11E 0062;
+1D120 0062;
+1D122 0062;
+1D124 0062;
+1D126 0062;
+266E 0062;
+1D12A 0062;
+1D12C 0062;
+1D12E 0062;
+1D130 0062;
+1D132 0062;
+1D134 0062;
+1D136 0062;
+1D138 0062;
+1D129 0062;
+1D13B 0062;
+1D13D 0062;
+1D13F 0062;
+1D141 0062;
+1D143 0062;
+1D145 0062;
+1D147 0062;
+1D149 0062;
+1D14B 0062;
+1D14D 0062;
+1D14F 0062;
+1D151 0062;
+1D153 0062;
+1D155 0062;
+1D15E 0021;
+1D158 0334 1D165 1D16E;
+1D158 1D165 1D170 0334;
+1D15F 1D171 0334;
+1D15F 003F;
+1D162 0061;
+1D158 0062;
+1D159 0041;
+1D15B 0041;
+1D15D 0041;
+1D16B 0041;
+1D183 0041;
+1D18C 0041;
+1D18E 0041;
+1D190 0041;
+1D192 0041;
+1D194 0041;
+1D196 0041;
+1D198 0041;
+1D19A 0041;
+1D19C 0041;
+1D19E 0041;
+1D1A0 0041;
+1D1A2 0041;
+1D1A4 0041;
+1D1A6 0041;
+1D1A8 0041;
+1D1AE 0041;
+1D1B0 0041;
+1D1B2 0041;
+1D1B4 0041;
+1D1B6 0041;
+1D1B8 0041;
+1D1BB 0334 1D16E;
+1D1BF 003F;
+1D1BB 0062;
+1D1BC 1D16E 0334;
+1D1BE 003F;
+1D1BA 0062;
+1D1C2 003F;
+1D1C4 003F;
+1D1C6 003F;
+1D1C8 003F;
+1D1CA 003F;
+1D1CC 003F;
+1D1CE 003F;
+1D1D0 003F;
+1D1D2 003F;
+1D1D4 003F;
+1D1D6 003F;
+1D1D8 003F;
+1D1DA 003F;
+1D1DC 003F;
+1D200 003F;
+1D202 003F;
+1D204 003F;
+1D206 003F;
+1D208 003F;
+1D20A 003F;
+1D20C 003F;
+1D20E 003F;
+1D210 003F;
+1D212 003F;
+1D214 003F;
+1D216 003F;
+1D218 003F;
+1D21A 003F;
+1D21C 003F;
+1D21E 003F;
+1D220 003F;
+1D222 003F;
+1D224 003F;
+1D226 003F;
+1D228 003F;
+1D22A 003F;
+1D22C 003F;
+1D22E 003F;
+1D230 003F;
+1D232 003F;
+1D234 003F;
+1D236 003F;
+1D238 003F;
+1D23A 003F;
+1D23C 003F;
+1D23E 003F;
+1D240 003F;
+1D245 003F;
+1F001 003F;
+1F003 003F;
+1F005 003F;
+1F007 003F;
+1F009 003F;
+1F00B 003F;
+1F00D 003F;
+1F00F 003F;
+1F011 003F;
+1F013 003F;
+1F015 003F;
+1F017 003F;
+1F019 003F;
+1F01B 003F;
+1F01D 003F;
+1F01F 003F;
+1F021 003F;
+1F023 003F;
+1F025 003F;
+1F027 003F;
+1F029 003F;
+1F02B 003F;
+1F031 003F;
+1F033 003F;
+1F035 003F;
+1F037 003F;
+1F039 003F;
+1F03B 003F;
+1F03D 003F;
+1F03F 003F;
+1F041 003F;
+1F043 003F;
+1F045 003F;
+1F047 003F;
+1F049 003F;
+1F04B 003F;
+1F04D 003F;
+1F04F 003F;
+1F051 003F;
+1F053 003F;
+1F055 003F;
+1F057 003F;
+1F059 003F;
+1F05B 003F;
+1F05D 003F;
+1F05F 003F;
+1F061 003F;
+1F063 003F;
+1F065 003F;
+1F067 003F;
+1F069 003F;
+1F06B 003F;
+1F06D 003F;
+1F06F 003F;
+1F071 003F;
+1F073 003F;
+1F075 003F;
+1F077 003F;
+1F079 003F;
+1F07B 003F;
+1F07D 003F;
+1F07F 003F;
+1F081 003F;
+1F083 003F;
+1F085 003F;
+1F087 003F;
+1F089 003F;
+1F08B 003F;
+1F08D 003F;
+1F08F 003F;
+1F091 003F;
+1F093 003F;
+2FF1 003F;
+2FF3 003F;
+2FF5 003F;
+2FF7 003F;
+2FF9 003F;
+2FFB 003F;
+31C1 003F;
+31C3 003F;
+31C5 003F;
+31C7 003F;
+31C9 003F;
+31CB 003F;
+31CD 003F;
+31CF 003F;
+31D1 003F;
+31D3 003F;
+31D5 003F;
+31D7 003F;
+31D9 003F;
+31DB 003F;
+31DD 003F;
+31DF 003F;
+31E1 003F;
+31E3 003F;
+3036 0021;
+3013 003F;
+3037 003F;
+303F 003F;
+3191 003F;
+FFFC 003F;
+09F8 003F;
+0BF0 003F;
+0BF2 003F;
+0D71 003F;
+0D73 003F;
+0D75 003F;
+1373 003F;
+1375 003F;
+1377 003F;
+1379 003F;
+137B 003F;
+2180 003F;
+2182 003F;
+2187 003F;
+2CFD 003F;
+10323 003F;
+10111 003F;
+10113 003F;
+10115 003F;
+10117 003F;
+10119 003F;
+1011B 003F;
+1011D 003F;
+1011F 003F;
+10121 003F;
+10123 003F;
+10125 003F;
+10127 003F;
+10129 003F;
+1012B 003F;
+1012D 003F;
+1012F 003F;
+10131 003F;
+10133 003F;
+10141 003F;
+10145 003F;
+10147 003F;
+1014A 003F;
+1014C 003F;
+1014E 003F;
+10151 003F;
+10153 003F;
+10155 003F;
+10157 003F;
+10161 003F;
+10163 003F;
+10165 003F;
+10167 003F;
+10169 003F;
+1016B 003F;
+1016D 003F;
+1016F 003F;
+10171 003F;
+10174 003F;
+10176 003F;
+10178 003F;
+103D4 003F;
+10917 003F;
+10919 003F;
+10A45 003F;
+10A47 003F;
+12433 003F;
+12457 003F;
+1245B 003F;
+1245D 003F;
+1245F 003F;
+12461 003F;
+1D369 003F;
+1D36B 003F;
+1D36D 003F;
+1D36F 003F;
+1D371 003F;
+02D1 003F;
+0E46 003F;
+3005 003F;
+3032 0021;
+3034 0021;
+3035 003F;
+309E 003F;
+FF70 003F;
+30FD 0021;
+00A4 0021;
+00A2 0041;
+FE69 003F;
+00A3 0021;
+00A5 0021;
+060B 0021;
+09F3 0021;
+0BF9 0021;
+17DB 0021;
+20A1 0021;
+20A3 0021;
+20A5 0021;
+20A7 0021;
+20A9 0041;
+20AB 0021;
+20AD 0021;
+20AF 0021;
+20B1 0021;
+20B3 0021;
+20B5 0021;
+1D7EC 0021;
+0966 0021;
+A8D0 0021;
+1090 0021;
+1018A 0021;
+2070 003F;
+0B66 003F;
+0ED0 003F;
+1B50 003F;
+FF10 0041;
+1D7F6 0041;
+0660 0041;
+09E6 0041;
+0C78 0061;
+1946 0041;
+0F33 0041;
+17E0 0041;
+1810 0041;
+FF10 0062;
+0660 0062;
+0C66 0062;
+0F33 0062;
+1810 0062;
+0031 0021;
+2780 0021;
+09E7 0021;
+0D67 0021;
+1041 0021;
+3021 0021;
+1242C 0021;
+1D7D9 003F;
+2081 003F;
+0AE7 003F;
+19D1 003F;
+17F1 003F;
+10158 003F;
+12458 003F;
+215F 003F;
+2153 0062;
+2155 0062;
+215B 0062;
+24FE 003F;
+24FE 0061;
+24FE 0062;
+32C9 003F;
+24EB 0021;
+246A 0041;
+32CA 003F;
+24EC 0021;
+246B 0041;
+32CB 003F;
+24ED 0021;
+246C 0041;
+3365 003F;
+2495 0061;
+33ED 003F;
+24EF 0021;
+246E 0041;
+3367 003F;
+2497 0061;
+33EF 003F;
+24F1 0021;
+2470 0041;
+3369 003F;
+2499 0061;
+33F1 003F;
+24F3 0021;
+2472 0041;
+336B 003F;
+1D7E3 0061;
+2776 0061;
+2081 0061;
+104A1 0061;
+0AE7 0061;
+0C79 0041;
+19D1 0061;
+1C41 0061;
+17F1 0061;
+1C51 0061;
+10159 0061;
+12415 0061;
+1244F 0041;
+1D7CF 0062;
+00B9 0062;
+0A67 0062;
+1947 0062;
+17E1 0062;
+10142 0062;
+1244F 0062;
+32C0 0021;
+0032 0021;
+2781 0021;
+09E8 0021;
+0D68 0021;
+1042 0021;
+3022 0021;
+12423 0021;
+1D7D0 003F;
+00B2 003F;
+0A68 003F;
+1948 003F;
+17E2 003F;
+1015B 003F;
+12435 003F;
+2489 0062;
+2156 0062;
+2473 0061;
+33F3 0062;
+3251 0062;
+336D 0062;
+33F5 0062;
+3253 0062;
+336F 0062;
+33F7 0062;
+3255 0062;
+3256 0062;
+3257 0062;
+3258 0062;
+3259 0062;
+1D7D0 0061;
+2461 0061;
+00B2 0061;
+136A 0061;
+0A68 0061;
+0C7D 0061;
+1948 0061;
+0F2B 0061;
+17E2 0061;
+1812 0061;
+1015B 0061;
+12400 0061;
+12416 0041;
+1D361 0061;
+24F6 0062;
+104A2 0062;
+0C7D 0062;
+1C42 0062;
+1C52 0062;
+12416 0062;
+33E1 0021;
+335A 0021;
+1D7EF 0021;
+06F3 0021;
+0BE9 0021;
+0ED3 0021;
+1B53 0021;
+12420 0021;
+12451 0021;
+2462 003F;
+136B 003F;
+0C7B 003F;
+0F2C 003F;
+1813 003F;
+12425 003F;
+1D362 003F;
+00BE 0062;
+215C 0062;
+33FD 0062;
+33FE 0062;
+325D 0062;
+325F 0062;
+32B2 0062;
+32B4 0062;
+1D7D1 0041;
+2462 0041;
+0663 0041;
+0969 0041;
+0B69 0041;
+0CE9 0041;
+0E53 0041;
+A903 0041;
+AA53 0041;
+A623 0041;
+12425 0061;
+12408 0041;
+1243B 0041;
+1D7DB 0062;
+2083 0062;
+0AE9 0062;
+19D3 0062;
+17F3 0062;
+12408 0062;
+1243B 0062;
+32C2 0021;
+0034 0021;
+2783 0021;
+09EA 0021;
+194A 0021;
+17E4 0021;
+12402 0021;
+1243E 0021;
+1D7DC 003F;
+2084 003F;
+0AEA 003F;
+0ED4 003F;
+1B54 003F;
+12418 003F;
+12452 003F;
+2158 003F;
+32B6 003F;
+32B8 003F;
+32BA 003F;
+32BC 003F;
+32BE 003F;
+1D7E6 0061;
+2779 0061;
+2084 0061;
+104A4 0061;
+0AEA 0061;
+0D6A 0061;
+0ED4 0061;
+1044 0061;
+1B54 0061;
+3024 0061;
+12430 0061;
+12409 0041;
+1243F 0041;
+1D7D2 0062;
+2074 0062;
+0A6A 0062;
+0E54 0062;
+AA54 0062;
+1240F 0062;
+1244C 0062;
+32C3 0021;
+0035 0021;
+2784 0021;
+09EB 0021;
+19D5 0021;
+17F5 0021;
+10148 0021;
+12427 0021;
+1D7DD 003F;
+2085 003F;
+0B6B 003F;
+0F25 003F;
+1BB5 003F;
+10173 003F;
+1244D 003F;
+215A 003F;
+32BF 003F;
+1D7E7 0061;
+277A 0061;
+2085 0061;
+104A5 0061;
+0B6B 0061;
+A8D5 0061;
+0F25 0061;
+1095 0061;
+1BB5 0061;
+1010B 0061;
+1015F 0041;
+12431 0061;
+12427 0041;
+1D7D3 0062;
+2075 0062;
+0AEB 0062;
+0ED5 0062;
+1B55 0062;
+1015F 0062;
+12439 0062;
+32C4 0021;
+0036 0021;
+2785 0021;
+09EC 0021;
+19D6 0021;
+17F6 0021;
+12404 0021;
+1D7D4 003F;
+2076 003F;
+0AEC 003F;
+0ED6 003F;
+1B56 003F;
+12411 003F;
+248D 0062;
+1D7D4 0041;
+2465 0041;
+0666 0041;
+096C 0041;
+0BEC 0041;
+194C 0041;
+0F2F 0041;
+17E6 0041;
+1816 0041;
+2185 0041;
+12411 0041;
+1D7DE 0062;
+2086 0062;
+0B6C 0062;
+0F26 0062;
+1BB6 0062;
+1241A 0062;
+32C5 0021;
+0037 0021;
+2786 0021;
+09ED 0021;
+19D7 0021;
+17F7 0021;
+1240C 0021;
+1D7D5 003F;
+2077 003F;
+0AED 003F;
+0ED7 003F;
+1B57 003F;
+1241B 003F;
+248E 0062;
+1D7D5 0061;
+2466 0061;
+2077 0061;
+136F 0061;
+0AED 0061;
+0D6D 0061;
+0ED7 0061;
+1047 0061;
+1B57 0061;
+3027 0061;
+12442 0061;
+1D366 0061;
+24FB 0062;
+104A7 0062;
+A8D7 0062;
+1097 0062;
+1010D 0062;
+33E6 0021;
+335F 0021;
+1D7F4 0021;
+06F8 0021;
+0C6E 0021;
+1C48 0021;
+1C58 0021;
+12445 0021;
+24FC 003F;
+104A8 003F;
+A8D8 003F;
+1098 003F;
+1010E 003F;
+248F 003F;
+1D7EA 0061;
+277D 0061;
+2088 0061;
+104A8 0061;
+0B6E 0061;
+A8D8 0061;
+0F28 0061;
+1098 0061;
+1BB8 0061;
+1010E 0061;
+1240D 0041;
+1D7D6 0062;
+2078 0062;
+0AEE 0062;
+0ED8 0062;
+1B58 0062;
+1241C 0062;
+32C7 0021;
+0039 0021;
+2788 0021;
+09EF 0021;
+19D9 0021;
+17F9 0021;
+1240E 0021;
+FF19 003F;
+2792 003F;
+0A6F 003F;
+0E59 003F;
+AA59 003F;
+12414 003F;
+2490 0061;
+1D7F5 0061;
+2788 0061;
+2089 0041;
+104A9 0041;
+0B6F 0041;
+A8D9 0041;
+0F29 0041;
+1099 0041;
+1BB9 0041;
+1010F 0041;
+12407 0041;
+1D368 0041;
+277E 0062;
+096F 0062;
+194F 0062;
+17E9 0062;
+12407 0062;
+33E8 0021;
+3361 0021;
+0005 0061;
+0014 0061;
+001E 0061;
+0088 0061;
+0092 0061;
+009C 0061;
+0594 0061;
+059E 0061;
+05A8 0061;
+05C5 0061;
+0615 0061;
+06DA 0061;
+06E4 0061;
+0F35 0061;
+180E 0061;
+200B 0061;
+2060 0061;
+206F 0061;
+DFFF 0061;
+FE03 0061;
+FE0D 0061;
+FFF9 0061;
+1D16D 0061;
+1D177 0061;
+1D181 0061;
+1D1AB 0061;
+3FFFE 0061;
+8FFFE 0061;
+DFFFE 0061;
+E0027 0061;
+E0031 0061;
+E003B 0061;
+E0045 0061;
+E004F 0061;
+E0059 0061;
+E0063 0061;
+E006D 0061;
+E0077 0061;
+E0101 0061;
+E010B 0061;
+E0115 0061;
+E011F 0061;
+E0129 0061;
+E0133 0061;
+E013D 0061;
+E0147 0061;
+E0151 0061;
+E015B 0061;
+E0165 0061;
+E016F 0061;
+E0179 0061;
+E0183 0061;
+E018D 0061;
+E0197 0061;
+E01A1 0061;
+E01AB 0061;
+E01B5 0061;
+E01BF 0061;
+E01C9 0061;
+E01D3 0061;
+E01DD 0061;
+E01E7 0061;
+EFFFF 0061;
+0007 0041;
+0016 0041;
+007F 0041;
+008A 0041;
+0094 0041;
+009E 0041;
+0596 0041;
+05A0 0041;
+05AA 0041;
+0601 0041;
+0617 0041;
+06DC 0041;
+06E8 0041;
+0F82 0041;
+1B6C 0041;
+200D 0041;
+2062 0041;
+A671 0041;
+FDD1 0041;
+FE05 0041;
+FE0F 0041;
+FFFB 0041;
+1D16F 0041;
+1D179 0041;
+1D185 0041;
+1D1AD 0041;
+4FFFE 0041;
+9FFFE 0041;
+E0001 0041;
+E0029 0041;
+E0033 0041;
+E003D 0041;
+E0047 0041;
+E0051 0041;
+E005B 0041;
+E0065 0041;
+E006F 0041;
+E0079 0041;
+E0103 0041;
+E010D 0041;
+E0117 0041;
+E0121 0041;
+E012B 0041;
+E0135 0041;
+E013F 0041;
+E0149 0041;
+E0153 0041;
+E015D 0041;
+E0167 0041;
+E0171 0041;
+E017B 0041;
+E0185 0041;
+E018F 0041;
+E0199 0041;
+E01A3 0041;
+E01AD 0041;
+E01B7 0041;
+E01C1 0041;
+E01CB 0041;
+E01D5 0041;
+E01DF 0041;
+E01E9 0041;
+10FFFF 0041;
+0061 0334 0340;
+0041 0306 0334;
+1EAE 0334;
+0103 0303 0334;
+0103 0309 0334;
+00C2 0334;
+0061 0302 0334 0340;
+1EAB 0334;
+0041 0334 0302 0309;
+0061 0334 030A;
+0041 030A 0334 0341;
+0061 0308 0304 0334;
+00E3 0334;
+0061 0307 0334 0304;
+0105 0334;
+0061 0309 0334;
+0041 0334 030F;
+1EA1 0334;
+0102 0323 0334;
+0061 0325 0334;
+0313 0041;
+0300 0041;
+0342 0061;
+0307 0061;
+0305 0061;
+0310 0061;
+0317 0061;
+031C 0061;
+0321 0061;
+0326 0061;
+032D 0061;
+0333 0061;
+0336 0041;
+033C 0041;
+0346 0041;
+034B 0041;
+0351 0041;
+0356 0041;
+035B 0041;
+FE22 0061;
+1DC0 0041;
+1DC5 0041;
+1DCB 0041;
+1DD0 0041;
+0484 0041;
+A67C 0041;
+05B3 0041;
+05B8 0041;
+05C2 0041;
+064B 0041;
+FC5E 0041;
+FE77 0041;
+FE79 0041;
+FE7B 0041;
+FE7D 0041;
+FE7E 0041;
+0657 0041;
+065C 0041;
+0730 0041;
+0735 0041;
+073A 0041;
+073F 0041;
+0744 0041;
+0749 0041;
+07EE 0041;
+07F3 0041;
+0951 0041;
+0981 0041;
+0A02 0041;
+0A81 0041;
+0B02 0041;
+0C03 0041;
+0D03 0041;
+1B01 0041;
+1B81 0041;
+10A0D 0041;
+10A3A 0041;
+0E4A 0041;
+0EC9 0041;
+0F39 0041;
+A92C 0041;
+108D 0041;
+17C9 0041;
+17CE 0041;
+17DD 0041;
+302B 0041;
+3099 0041;
+20D1 0041;
+20D6 0041;
+20DB 0041;
+20E0 0041;
+20E5 0041;
+20EA 0041;
+20EF 0041;
+1D482 0021;
+1D68A 0021;
+1D538 0021;
+2090 0021;
+1EB1 0021;
+1EA7 0021;
+212B 0021;
+0226 0021;
+0200 0021;
+1E00 0021;
+1D51E 003F;
+FF21 003F;
+1D5D4 003F;
+00C1 003F;
+1EB4 003F;
+1EAA 003F;
+00E4 003F;
+0105 003F;
+1EA1 003F;
+33C2 003F;
+2101 003F;
+0061 0041;
+1D51E 0061;
+1D482 0041;
+1D68A 0041;
+1D49C 0061;
+1D400 0041;
+1D608 0041;
+2090 0041;
+00C0 0041;
+1EB1 0041;
+1EB2 0041;
+1EA7 0041;
+1EA8 0041;
+212B 0041;
+01DF 0041;
+0226 0041;
+0101 0041;
+0200 0041;
+1EB7 0041;
+1E00 0041;
+A732 0041;
+1D4EA 0062;
+0041 0062;
+1D5A0 0062;
+00E1 0062;
+1EB5 0062;
+1EAB 0062;
+01FA 0062;
+01E0 0062;
+0202 0062;
+00E6 0334 0301;
+01E3 0334;
+01FC 0021;
+01E2 003F;
+01FD 0041;
+1D2D 0062;
+A735 003F;
+A734 0062;
+A736 0041;
+A73B 0021;
+A739 0041;
+A73B 0062;
+A73D 0062;
+1D00 0041;
+2C65 0062;
+1D01 0041;
+1D02 0062;
+2C6F 0061;
+0251 003F;
+2C6D 0062;
+1D9B 003F;
+0003 0062;
+0012 0062;
+001C 0062;
+0086 0062;
+0090 0062;
+009A 0062;
+0592 0062;
+059C 0062;
+05A6 0062;
+05BD 0062;
+0613 0062;
+06D8 0062;
+06E2 0062;
+0F18 0062;
+180C 0062;
+1B72 0062;
+202D 0062;
+206D 0062;
+D804 0062;
+FE01 0062;
+FE0B 0062;
+FE73 0062;
+1D168 0062;
+1D175 0062;
+1D17F 0062;
+1D18B 0062;
+2FFFE 0062;
+7FFFE 0062;
+CFFFE 0062;
+E0025 0062;
+E002F 0062;
+E0039 0062;
+E0043 0062;
+E004D 0062;
+E0057 0062;
+E0061 0062;
+E006B 0062;
+E0075 0062;
+E007F 0062;
+E0109 0062;
+E0113 0062;
+E011D 0062;
+E0127 0062;
+E0131 0062;
+E013B 0062;
+E0145 0062;
+E014F 0062;
+E0159 0062;
+E0163 0062;
+E016D 0062;
+E0177 0062;
+E0181 0062;
+E018B 0062;
+E0195 0062;
+E019F 0062;
+E01A9 0062;
+E01B3 0062;
+E01BD 0062;
+E01C7 0062;
+E01D1 0062;
+E01DB 0062;
+E01E5 0062;
+E01EF 0062;
+1E02 0334;
+0042 0331 0334;
+0340 0062;
+0307 0062;
+0310 0062;
+031C 0062;
+0326 0062;
+0333 0062;
+033E 0062;
+034D 0062;
+0358 0062;
+0361 0062;
+1DC7 0062;
+1DFE 0062;
+05B0 0062;
+05B9 0062;
+FE70 0062;
+FCF2 0062;
+FCF4 0062;
+0654 0062;
+065E 0062;
+0737 0062;
+0741 0062;
+07EB 0062;
+0901 0062;
+0983 0062;
+0A83 0062;
+0C82 0062;
+1B03 0062;
+10A0F 0062;
+0E4C 0062;
+0F7F 0062;
+17C6 0062;
+17D0 0062;
+302D 0062;
+20D3 0062;
+20DD 0062;
+20E7 0062;
+101FD 0062;
+1D587 0021;
+1D401 0021;
+1D63D 0021;
+1E06 0021;
+1D587 003F;
+1D401 003F;
+1D63D 003F;
+1E06 003F;
+1D51F 0061;
+1D483 0041;
+1D68B 0041;
+1D469 0061;
+212C 0041;
+1D609 0041;
+1E03 0041;
+1E06 0041;
+1D483 0062;
+1D68B 0062;
+1D539 0062;
+1E03 0062;
+33C3 0062;
+0180 0061;
+1D2F 0062;
+1D6C 0062;
+0253 0061;
+0183 0061;
+0043 0334 0301;
+0063 030C 0334;
+0043 0334 0307;
+0063 0341 0327 0334;
+FF43 0021;
+1D588 0021;
+2102 0021;
+1D60A 0021;
+010C 0021;
+0368 003F;
+1D5BC 003F;
+212D 003F;
+1D63E 003F;
+010B 003F;
+2105 0041;
+33C6 0041;
+1D41C 0061;
+1D624 0061;
+1D588 0041;
+FF23 0061;
+1D4D2 0061;
+1D436 0041;
+24B8 0061;
+0108 0061;
+00E7 0061;
+3388 0021;
+1D450 0062;
+1D658 0062;
+1D46A 0062;
+1D9C 0062;
+1DD7 0062;
+33C5 003F;
+33A0 0062;
+33C7 003F;
+023B 0021;
+0187 0021;
+1D9D 0021;
+2183 0021;
+A73E 0021;
+0064 0334 030C;
+1E0A 0334;
+0044 0323 0334;
+0064 0334 0331;
+FF44 0021;
+1D555 0021;
+216E 0021;
+1D5A3 0021;
+1E0B 0021;
+0111 0021;
+FF44 003F;
+1D555 003F;
+216E 003F;
+1D5A3 003F;
+1E0B 003F;
+0111 003F;
+0064 0041;
+1D485 0061;
+1D68D 0061;
+1D5BD 0041;
+FF24 0041;
+1D53B 0061;
+1D46B 0041;
+1D673 0041;
+010E 0041;
+1E0D 0041;
+1E0E 0041;
+00D0 0041;
+3372 003F;
+1D451 0062;
+1D659 0062;
+1D49F 0062;
+24B9 0062;
+1E0C 0062;
+1D9E 0062;
+33C8 0061;
+3377 003F;
+3379 0062;
+01C4 0021;
+01F3 0041;
+01C4 0061;
+02A5 003F;
+1D05 003F;
+1D6D 003F;
+0189 0021;
+018A 0021;
+1D91 003F;
+018B 0061;
+A771 003F;
+0065 0334 0301;
+0065 0340 0334;
+0114 0334;
+00EA 0334 0301;
+00CA 0300 0334;
+00CA 0303 0334;
+0065 0334 030C;
+00CB 0334;
+0045 0307 0334;
+0065 0334 0327 0306;
+0045 0328 0334;
+0065 0304 0341 0334;
+1E15 0334;
+1EBA 0334;
+0045 0311 0334;
+00EA 0334 0323;
+0045 032D 0334;
+0364 0334;
+1D522 0021;
+FF25 0021;
+1D5D8 0021;
+00E8 0021;
+1EC5 0021;
+0117 0021;
+1E17 0021;
+1EB9 0021;
+0364 003F;
+1D5BE 003F;
+1D438 003F;
+1D674 003F;
+0114 003F;
+1EC2 003F;
+0228 003F;
+1E14 003F;
+1EC6 003F;
+0364 0041;
+1D5BE 0061;
+1D4EE 0041;
+24D4 0041;
+1D508 0061;
+1D438 0041;
+1D674 0041;
+00E9 0041;
+0114 0041;
+1EC1 0041;
+1EC2 0041;
+1EBD 0041;
+0228 0041;
+0113 0041;
+1E14 0041;
+0207 0041;
+1EC6 0041;
+FF45 0062;
+1D58A 0062;
+1D404 0062;
+1D640 0062;
+0115 0062;
+1EC3 0062;
+0229 0062;
+1E15 0062;
+1EC7 0062;
+32CD 0062;
+1D07 0062;
+0246 0062;
+2C78 0062;
+018E 0041;
+2C7B 0062;
+0259 0041;
+2094 0062;
+025B 003F;
+1D4B 0061;
+1D93 0062;
+025A 0062;
+1D9F 0062;
+1D08 0061;
+025D 0062;
+029A 0062;
+0046 0334 0307;
+1D557 0021;
+2131 0021;
+1D60D 0021;
+FF46 003F;
+1D5F3 003F;
+1D46D 003F;
+24BB 003F;
+1D41F 0061;
+1D627 0061;
+1D58B 0041;
+FF26 0061;
+1D5A5 0061;
+1D509 0041;
+1DA0 0061;
+213B 0021;
+1D4BB 0062;
+24D5 0062;
+1D571 0062;
+A77C 0062;
+FB03 0041;
+FB01 0041;
+3399 0041;
+A730 0041;
+1D82 0041;
+0192 0062;
+214E 0062;
+01F5 0334;
+011E 0334;
+0047 030C 0334;
+0067 0334 0327;
+1E20 0334;
+1D524 0021;
+FF27 0021;
+1D5DA 0021;
+011E 0021;
+1E20 0021;
+1D4F0 003F;
+0047 003F;
+1D5A6 003F;
+011F 003F;
+1E21 003F;
+210A 0061;
+1D628 0061;
+1D58C 0041;
+FF27 0061;
+1D5A6 0061;
+1D50A 0041;
+1D4D 0061;
+011E 0061;
+0121 0061;
+1E20 0061;
+33FF 0062;
+1D558 0062;
+1D406 0062;
+1D60E 0062;
+011D 0062;
+1D79 0062;
+3393 0041;
+33C9 0041;
+0261 0062;
+1DDB 0041;
+01E4 0041;
+0260 003F;
+029B 0061;
+A77F 003F;
+02E0 0021;
+0263 0062;
+01A2 0041;
+0068 0334 030C;
+1E26 0334;
+0048 0327 0334;
+0068 0334 032E;
+0068 0021;
+1D58D 0021;
+210C 0021;
+1D643 0021;
+1E26 0021;
+0127 0021;
+1D4F1 003F;
+0048 003F;
+1D5A7 003F;
+021F 003F;
+1E2B 003F;
+036A 0061;
+1D5C1 0061;
+1D525 0041;
+0048 0061;
+1D4D7 0061;
+1D407 0041;
+24BD 0061;
+021F 0061;
+1E22 0061;
+1E2B 0061;
+0126 0061;
+210E 0062;
+1D629 0062;
+1D43B 0062;
+02B0 0062;
+1E29 0062;
+32CC 0021;
+3371 003F;
+029C 0021;
+0195 0041;
+0266 0041;
+2C68 0041;
+2C76 0041;
+A727 0041;
+02BB 0021;
+0069 0301 0334;
+0069 0340 0334;
+0049 0334 0306;
+01D0 0334;
+0069 0308 0334 0301;
+0129 0334;
+0049 0328 0334;
+0069 0334 0309;
+0208 0334;
+0049 0323 0334;
+0365 0334;
+1D4BE 0021;
+24D8 0021;
+1D540 0021;
+1D35 0021;
+01CF 0021;
+012B 0021;
+1E2D 0021;
+1D48A 003F;
+1D692 003F;
+1D4D8 003F;
+1D62 003F;
+01D0 003F;
+012E 003F;
+1ECA 003F;
+2170 0041;
+1D58E 0061;
+1D48A 0041;
+1D692 0041;
+2111 0061;
+1D644 0061;
+1D5A8 0041;
+1D62 0041;
+00CC 0041;
+01D0 0041;
+1E2E 0041;
+012E 0041;
+0209 0041;
+1ECA 0041;
+2148 0062;
+1D5F6 0062;
+1D408 0062;
+1D678 0062;
+012C 0062;
+0128 0062;
+020B 0062;
+2171 0061;
+2172 0061;
+0133 0061;
+33CC 0062;
+2173 0061;
+2178 0061;
+0131 0061;
+026A 0061;
+A7FE 0062;
+1D4E 0062;
+0197 0041;
+1D7B 0061;
+1D96 0062;
+0196 0041;
+1D7C 0062;
+006A 0021;
+1D58F 0021;
+1D43D 0021;
+1D645 0021;
+FF4A 003F;
+1D5C3 003F;
+1D471 003F;
+1D679 003F;
+FF4A 0061;
+1D58F 0061;
+1D4BF 0041;
+24D9 0061;
+1D4D9 0061;
+1D43D 0041;
+1D645 0041;
+0135 0061;
+1D457 0062;
+1D65F 0062;
+1D50D 0062;
+2C7C 0062;
+0237 0041;
+0249 0021;
+029D 0021;
+025F 0021;
+0284 0021;
+004B 0334 0341;
+006B 0327 0334;
+004B 0323 0334;
+212A 0334 0331;
+1D528 0021;
+212A 0021;
+1D5AA 0021;
+01E9 0021;
+1DDC 003F;
+1D5F8 003F;
+1D472 003F;
+1D67A 003F;
+1E33 003F;
+1D424 0061;
+1D62C 0061;
+1D590 0041;
+004B 0041;
+1D542 0061;
+1D4A6 0041;
+24C0 0061;
+01E9 0061;
+1E32 0061;
+3384 0062;
+1D55C 0062;
+FF2B 0062;
+1D5DE 0062;
+01E8 0062;
+3385 0041;
+338F 0041;
+33CD 0041;
+33CE 003F;
+33A6 0062;
+33AA 0041;
+33B8 0041;
+33C0 0041;
+1D84 0041;
+0199 0062;
+2C6A 0062;
+A741 0062;
+A743 0062;
+A745 0062;
+013A 0334;
+013D 0334;
+004C 0323 0334;
+004C 0334 0323 0304;
+004C 0331 0334;
+1D459 0021;
+1D661 0021;
+1D4DB 0021;
+02E1 0021;
+1E39 0021;
+0140 0021;
+1D459 003F;
+1D661 003F;
+1D4DB 003F;
+02E1 003F;
+1E39 003F;
+0140 003F;
+004C 0001 00B7 0061;
+1DDD 0061;
+1D529 0061;
+1D459 0041;
+1D661 0041;
+2112 0061;
+1D613 0061;
+1D577 0041;
+1D38 0061;
+013C 0061;
+1E38 0061;
+0142 0061;
+004C 00B7 0061;
+2113 0062;
+1D5F9 0062;
+1D43F 0062;
+1D67B 0062;
+1E37 0062;
+006C 00B7 0062;
+01C8 003F;
+01C7 0062;
+1EFB 0062;
+33D1 0062;
+02AA 0062;
+33D3 0062;
+029F 003F;
+1DDE 0062;
+A747 0062;
+A748 003F;
+023D 003F;
+2C60 003F;
+2C62 003F;
+026C 0041;
+1D85 0062;
+026D 0062;
+A772 0041;
+A780 003F;
+019B 0041;
+1E3F 0334;
+1E40 0334;
+FF4D 0021;
+1D592 0021;
+2133 0021;
+1D614 0021;
+1E43 0021;
+1D4F6 003F;
+004D 003F;
+1D578 003F;
+1E3E 003F;
+33A8 0041;
+33A5 0021;
+217F 0061;
+1D592 0061;
+1D4F6 0041;
+24DC 0041;
+1D474 0061;
+2133 0041;
+1D614 0041;
+1E3F 0041;
+1E42 0041;
+1D426 0062;
+1D62E 0062;
+1D474 0062;
+24C2 0062;
+3386 0021;
+338E 003F;
+33D5 003F;
+339C 003F;
+33A3 0062;
+33AB 003F;
+33B9 0021;
+33BF 0021;
+33C1 003F;
+1D0D 0041;
+1D86 0021;
+1DAC 003F;
+A7FD 0021;
+A773 0021;
+004E 0334 0341;
+004E 0340 0334;
+004E 0303 0334;
+006E 0334 0327;
+1E46 0334;
+004E 0331 0334;
+1D4C3 0021;
+24DD 0021;
+1D579 0021;
+0143 0021;
+0145 0021;
+1D427 003F;
+1D62F 003F;
+1D4A9 003F;
+207F 003F;
+1E45 003F;
+006E 0061;
+1D4F7 0061;
+1D45B 0041;
+1D663 0041;
+1D441 0061;
+1D67D 0061;
+1D5E1 0041;
+0144 0061;
+0147 0061;
+0146 0061;
+1E4A 0061;
+3381 0062;
+1D55F 0062;
+2115 0062;
+1D615 0062;
+0148 0062;
+1E4B 0062;
+01CB 0021;
+01CA 0041;
+2116 003F;
+33B5 003F;
+0274 0021;
+1DB0 0061;
+1D0E 0021;
+0272 0021;
+1DAE 0061;
+019E 0041;
+0273 0021;
+0235 0021;
+014B 0021;
+1D51 0061;
+00D8 0334 0301;
+00D3 0334;
+006F 0334 0306;
+00D4 0334;
+006F 0302 0334 0300;
+1ED7 0334;
+004F 0302 0334 0309;
+006F 0334 0308;
+004F 0308 0334 0304;
+006F 0334 0303;
+00D5 0334 0301;
+1E4E 0334;
+006F 0334 0307;
+004F 0307 0334 0304;
+006F 0334 0328 0304;
+004F 0304 0334;
+1E52 0334;
+006F 0334 0309;
+020C 0334;
+004F 031B 0334;
+004F 0334 031B 0341;
+00F5 031B 0334;
+01A1 0309 0334;
+004F 0323 0334 031B;
+006F 0334 0323 0302;
+FF4F 0021;
+1D5C8 0021;
+1D476 0021;
+1D67E 0021;
+014F 0021;
+1ED5 0021;
+00F5 0021;
+0231 0021;
+014D 0021;
+020F 0021;
+1EDF 0021;
+0366 003F;
+1D5FC 003F;
+1D4AA 003F;
+24C4 003F;
+014E 003F;
+1ED4 003F;
+00D5 003F;
+0230 003F;
+014C 003F;
+020E 003F;
+1EDE 003F;
+FF4F 0041;
+1D594 0061;
+1D4F8 0041;
+24DE 0041;
+1D512 0061;
+1D476 0041;
+1D67E 0041;
+1D3C 0041;
+014F 0041;
+1ED0 0041;
+1ED5 0041;
+00D6 0041;
+00F5 0041;
+1E4E 0041;
+0231 0041;
+01FE 0041;
+014D 0041;
+1E50 0041;
+020F 0041;
+1EDA 0041;
+1EDF 0041;
+1ECC 0041;
+1D45C 0062;
+1D698 0062;
+1D546 0062;
+2092 0062;
+1ED1 0062;
+00F6 0062;
+1E4F 0062;
+01FF 0062;
+1E51 0062;
+1EDB 0062;
+1ECD 0062;
+0152 0061;
+A74E 0061;
+1D0F 003F;
+0276 003F;
+1D13 003F;
+0254 0061;
+1D10 003F;
+1D97 003F;
+A74C 0061;
+1D54 0061;
+1D55 0061;
+019F 0021;
+1DB1 0041;
+A74A 0061;
+0222 0021;
+1D3D 0041;
+0070 0334 0301;
+0050 0307 0334;
+1D52D 0021;
+FF30 0021;
+1D5E3 0021;
+1E56 0021;
+1D595 003F;
+1D40F 003F;
+1D64B 003F;
+33D8 003F;
+1D491 0061;
+1D699 0061;
+1D5FD 0041;
+2119 0061;
+1D617 0061;
+1D57B 0041;
+1D3E 0061;
+3380 0021;
+0070 0062;
+1D5C9 0062;
+1D443 0062;
+1D67F 0062;
+3376 0061;
+33D7 0061;
+33DA 0061;
+3250 0061;
+33BA 0061;
+1D7D 003F;
+A751 003F;
+1D71 0061;
+01A5 003F;
+A753 003F;
+A755 003F;
+A7FC 0061;
+1DB2 0041;
+1D42A 0021;
+1D632 0021;
+1D4AC 0021;
+0071 003F;
+1D5CA 003F;
+1D444 003F;
+1D680 003F;
+1D4FA 0061;
+1D45E 0041;
+1D666 0041;
+1D444 0061;
+1D680 0061;
+1D5E4 0041;
+1D492 0062;
+1D69A 0062;
+1D514 0062;
+0239 0061;
+A756 0041;
+A758 0041;
+024B 003F;
+0138 0061;
+0154 0334;
+0052 0307 0334;
+0072 0334 030F;
+0212 0334;
+1E5B 0334 0304;
+1E5E 0334;
+1D45F 0021;
+1D667 0021;
+1D479 0021;
+1D63 0021;
+0211 0021;
+A783 0021;
+1D4FB 003F;
+0052 003F;
+1D5B1 003F;
+0154 003F;
+0212 003F;
+0072 0041;
+1D4C7 0061;
+1D42B 0041;
+1D633 0041;
+211C 0061;
+1D64D 0061;
+1D5B1 0041;
+1D63 0041;
+0158 0041;
+0211 0041;
+1E5A 0041;
+A783 0041;
+33AF 0041;
+036C 0062;
+1D5CB 0062;
+211D 0062;
+1D681 0062;
+1E58 0062;
+1E5C 0062;
+1DE2 0334;
+1DE2 0041;
+A75B 003F;
+1DE3 0062;
+024C 003F;
+1D72 0041;
+0279 0062;
+027A 0041;
+02B5 003F;
+2C79 0041;
+2C64 003F;
+027E 0041;
+027F 0041;
+0281 0062;
+A776 0041;
+A75D 0062;
+0073 0301 0307 0334;
+015D 0334;
+0073 0334 030C 0307;
+1E61 0334;
+0073 0323 0334;
+0053 0307 0323 0334;
+017F 0307 0334;
+1D494 0021;
+1D69C 0021;
+1D54A 0021;
+015A 0021;
+1E60 0021;
+1DE5 0021;
+1D4C8 003F;
+24E2 003F;
+1D57E 003F;
+1E65 003F;
+015F 003F;
+A785 003F;
+1D460 0061;
+1D668 0061;
+1D5CC 0041;
+FF33 0041;
+1D5E6 0061;
+1D54A 0041;
+02E2 0041;
+015D 0041;
+1E66 0041;
+1E63 0041;
+0218 0041;
+1E9B 0041;
+1D564 0062;
+1D412 0062;
+1D61A 0062;
+015C 0062;
+1E62 0062;
+2120 0021;
+00DF 0021;
+FB06 0021;
+33DC 0021;
+1D74 0021;
+0282 0021;
+023F 0021;
+1E9D 0021;
+1DB4 003F;
+1D8B 0021;
+0285 0021;
+0286 0021;
+0164 0334;
+0074 0327 0334;
+0054 0334 0323;
+1E71 0334;
+0334 036D;
+1D531 0021;
+FF34 0021;
+1D5E7 0021;
+1E6B 0021;
+1E6F 0021;
+1D4C9 003F;
+24E3 003F;
+1D57F 003F;
+0164 003F;
+1E71 003F;
+036D 0061;
+1D5CD 0061;
+1D531 0041;
+0054 0061;
+1D54B 0061;
+1D4AF 0041;
+24C9 0061;
+1E97 0061;
+1E6D 0061;
+1E70 0061;
+0074 0062;
+1D599 0062;
+1D447 0062;
+1D64F 0062;
+0163 0062;
+A787 0062;
+2121 0041;
+3394 0041;
+02A6 003F;
+02A7 0041;
+A729 0062;
+0166 003F;
+023E 003F;
+1D75 0041;
+01AB 0062;
+01AD 0062;
+0288 0062;
+A777 0041;
+00FA 0334;
+0055 0334 0340;
+0075 0334 0302;
+01D3 0334;
+0055 0308 0334;
+0055 0344 0334;
+0075 0308 0334 030C;
+01D6 0334;
+0170 0334;
+0169 0334 0341;
+0172 0334;
+1E7B 0334;
+1EE6 0334;
+0055 0311 0334;
+0075 0334 0301 031B;
+0075 0334 0340 031B;
+0168 0334 031B;
+1EE6 0334 031B;
+0075 0334 0323;
+1E72 0334;
+0055 0330 0334;
+1D496 0021;
+1D69E 0021;
+1D54C 0021;
+1D41 0021;
+01D3 0021;
+01D9 0021;
+0172 0021;
+0216 0021;
+1EEC 0021;
+1E74 0021;
+1D566 003F;
+1D414 003F;
+1D61C 003F;
+00D9 003F;
+00DC 003F;
+0170 003F;
+1E7A 003F;
+1EE8 003F;
+1EE4 003F;
+FF55 0041;
+1D59A 0061;
+1D4FE 0041;
+24E4 0041;
+1D518 0061;
+1D47C 0041;
+1D684 0041;
+00FA 0041;
+016C 0041;
+016F 0041;
+01D7 0041;
+01D6 0041;
+0168 0041;
+016B 0041;
+1EE6 0041;
+01B0 0041;
+1EEA 0041;
+1EF1 0041;
+1E72 0041;
+FF55 0062;
+1D5CE 0062;
+1D47C 0062;
+1D684 0062;
+016C 0062;
+01D7 0062;
+0168 0062;
+1EE6 0062;
+1EEA 0062;
+1E72 0062;
+1D1C 0041;
+1D1D 0041;
+1D6B 0021;
+1DB6 003F;
+1D7E 0021;
+0265 0021;
+02AE 0021;
+026F 0021;
+1D5A 0061;
+0270 0021;
+028A 0021;
+1DB7 0061;
+0076 0303 0334;
+0056 0334 0323;
+1D497 0021;
+1D69F 0021;
+1D519 0021;
+1D65 0021;
+1D42F 003F;
+1D637 003F;
+1D4B1 003F;
+24CB 003F;
+33DE 0061;
+2174 0041;
+1D603 0061;
+1D567 0041;
+0056 0041;
+1D519 0061;
+1D47D 0041;
+1D685 0041;
+1E7D 0041;
+2174 0062;
+1D603 0062;
+1D47D 0062;
+1D685 0062;
+2165 0021;
+2166 0021;
+2167 0021;
+A760 0021;
+1D20 003F;
+A75E 0061;
+01B2 0021;
+1DB9 0041;
+2C74 003F;
+1EFC 0061;
+028C 0061;
+0077 0334 0341;
+1E81 0334;
+0174 0334;
+0077 0307 0334;
+0057 0334 0323;
+1D568 0021;
+1D416 0021;
+1D61E 0021;
+0175 0021;
+FF57 003F;
+1D604 003F;
+1D4B2 003F;
+24CC 003F;
+1E85 003F;
+1D430 0061;
+1D638 0061;
+1D59C 0041;
+FF37 0061;
+1D5B6 0061;
+1D51A 0041;
+02B7 0061;
+1E80 0061;
+1E84 0061;
+0077 0062;
+1D5D0 0062;
+1D47E 0062;
+1D686 0062;
+1E98 0062;
+33DD 0041;
+2C72 003F;
+028D 0041;
+1E8B 0334;
+1D431 0021;
+1D639 0021;
+1D4B3 0021;
+24CD 0021;
+2179 003F;
+1D605 003F;
+1D47F 003F;
+1D687 003F;
+FF58 0061;
+1D501 0061;
+1D465 0041;
+1D66D 0041;
+1D417 0061;
+1D61F 0061;
+1D583 0041;
+2093 0061;
+0078 0062;
+1D569 0062;
+2169 0062;
+1D5EB 0062;
+1E8A 0062;
+216A 0062;
+216B 0062;
+0059 0301 0334;
+0059 0340 0334;
+1E99 0334;
+0059 0303 0334;
+0079 0334 0304;
+1EF6 0334;
+1D466 0021;
+1D66E 0021;
+1D51C 0021;
+00FD 0021;
+1EF8 0021;
+FF59 003F;
+1D606 003F;
+1D4B4 003F;
+24CE 003F;
+0178 003F;
+1EF4 003F;
+1D536 0061;
+1D49A 0041;
+1D6A2 0041;
+1D4B4 0061;
+1D418 0041;
+1D620 0041;
+00DD 0041;
+1E99 0041;
+1E8F 0041;
+1EF6 0041;
+1D4CE 0062;
+24E8 0062;
+1D584 0062;
+1EF3 0062;
+1E8E 0062;
+028F 0041;
+024F 0062;
+01B4 0062;
+1EFF 0062;
+007A 0302 0334;
+005A 0334 030C;
+1E93 0334;
+1DE6 0334;
+1D56B 0021;
+2124 0021;
+1D621 0021;
+017D 0021;
+1D433 003F;
+1D63B 003F;
+1D481 003F;
+1DBB 003F;
+1E92 003F;
+1D467 0061;
+1D66F 0061;
+1D5D3 0041;
+FF3A 0041;
+1D5ED 0061;
+1D4E9 0041;
+1DBB 0041;
+017E 0041;
+1E92 0041;
+1D49B 0062;
+1D6A3 0062;
+1D4E9 0062;
+0179 0062;
+1E94 0062;
+1D22 0062;
+01B5 0062;
+1D8E 0062;
+0224 0062;
+1DBC 0062;
+1DBD 0062;
+2C6C 0061;
+A763 0061;
+01B7 0334 030C;
+01EF 003F;
+01EE 0061;
+1D23 0041;
+01B9 0062;
+01BA 0041;
+021C 003F;
+00DE 003F;
+A764 003F;
+A766 003F;
+01F7 003F;
+A768 003F;
+A76A 003F;
+A76C 003F;
+A76E 0021;
+A76E 0061;
+A778 0061;
+A72B 003F;
+A72D 003F;
+A72F 003F;
+01A8 003F;
+01BD 003F;
+0185 003F;
+0294 0061;
+0241 0041;
+02BC 0061;
+02EE 0061;
+A723 003F;
+A78C 003F;
+0295 003F;
+02BF 0061;
+1D24 0061;
+1D5C 0041;
+A724 0041;
+02A2 0061;
+01C0 0061;
+01C2 0061;
+0297 0061;
+02AC 0061;
+03B1 0343 0334;
+0391 0313 0301 0334;
+1F0C 0345 0334;
+03B1 0343 0300 0334 0345;
+03B1 0343 0334 0342;
+0391 0334 0313 0345 0342;
+0391 0345 0334 0313;
+1F01 0301 0334;
+0391 0345 0314 0341 0334;
+1F09 0300 0334;
+03B1 0314 0334 0342;
+03B1 0345 0334 0314 0342;
+0391 0314 0345 0334;
+0391 0334 0301;
+0391 0300 0334;
+1FB0 0334;
+1FB3 0334 0342;
+0391 0334 0345;
+1D6A8 0021;
+1F8C 0021;
+1F88 0021;
+1F8B 0021;
+1FBB 0021;
+1FB9 0021;
+1D6A8 003F;
+1F8C 003F;
+1F88 003F;
+1F8B 003F;
+1FBB 003F;
+1FB9 003F;
+1D6C2 0041;
+1D756 0061;
+1F08 0041;
+1F02 0041;
+1F0E 0041;
+1F01 0041;
+1F8D 0041;
+1F07 0041;
+1F89 0041;
+1FB4 0041;
+1FB8 0041;
+1FB3 0041;
+1D6A8 0062;
+1F8C 0062;
+1F88 0062;
+1F8B 0062;
+1FBB 0062;
+1FB9 0062;
+0392 0021;
+1D6C3 003F;
+1D791 003F;
+1D771 0061;
+1D6E3 0061;
+1D5D 0041;
+0392 0062;
+1D6C4 0021;
+1D758 0021;
+1D7AC 003F;
+03B3 0061;
+1D6FE 0041;
+1D758 0061;
+1D67 0061;
+213E 0062;
+1D26 0061;
+1D6AB 0021;
+1D773 003F;
+03B4 0041;
+1D7AD 0041;
+1D71F 0041;
+1D7AD 0062;
+03B5 0343 0334;
+0395 0334 0313 0301;
+1F18 0334 0300;
+1F11 0301 0334;
+0395 0314 0300 0334;
+0395 0334 0341;
+03B5 0021;
+1D7AE 0021;
+1F14 0021;
+03AD 0021;
+1D700 003F;
+1D6E6 003F;
+1F11 003F;
+1F72 003F;
+1D73A 0061;
+1D73A 0041;
+1D720 0061;
+1F18 0061;
+1F11 0061;
+1F1B 0061;
+1F72 0061;
+1D73A 0062;
+1D75A 0062;
+1F15 0062;
+03DD 0021;
+1D7CB 0061;
+0377 0021;
+03DB 0021;
+03B6 0021;
+1D75B 0021;
+1D6E7 003F;
+1D7AF 0061;
+1D721 0061;
+1D701 0062;
+0371 0021;
+03B7 0334 0313;
+03B7 0343 0301 0334;
+0397 0313 0301 0334 0345;
+1F28 0334 0340;
+03B7 0313 0334 0342;
+1F20 0345 0334 0342;
+0397 0334 0343 0345;
+03B7 0334 0314 0301;
+1F21 0345 0334 0341;
+0397 0314 0334 0300;
+1F29 0334 0300 0345;
+03B7 0345 0314 0334 0342;
+03B7 0334 0314 0345;
+0389 0334;
+03B7 0340 0334;
+03B7 0334 0342;
+0397 0334 0345;
+1D6AE 0021;
+1F9C 0021;
+1F98 0021;
+1F9B 0021;
+1FCB 0021;
+1D6C8 003F;
+1D796 003F;
+1F9A 003F;
+1F2D 003F;
+1F9F 003F;
+1FC2 003F;
+1D776 0061;
+1D6E8 0061;
+1F20 0041;
+1F9C 0041;
+1F26 0041;
+1F98 0041;
+1F95 0041;
+1F9B 0041;
+1F91 0041;
+1FCB 0041;
+1FC6 0041;
+1D73C 0062;
+1F28 0062;
+1F2E 0062;
+1F9D 0062;
+1F99 0062;
+1FC7 0062;
+1D751 0021;
+1D6F3 0021;
+1D6C9 003F;
+0398 003F;
+1D797 003F;
+1D717 0061;
+1D717 0041;
+03F4 0041;
+1D7A1 0061;
+1D7A1 0041;
+1D751 0062;
+1D6F3 0062;
+1FBE 0334 0313;
+0399 0313 0334 0341;
+0399 0334 0343 0340;
+03B9 0314 0334;
+1FBE 0334 0314 0341;
+0399 0334 0314 0340;
+1F3F 0334;
+1F76 0334;
+1FD0 0334;
+1FBE 0308 0334;
+03CA 0300 0334;
+1FD1 0334;
+1D778 0021;
+1F34 0021;
+1F33 0021;
+1FD0 0021;
+1FD9 0021;
+1D6B0 003F;
+1F3A 003F;
+1F3F 003F;
+03CA 003F;
+03B9 0041;
+1D704 0041;
+1D798 0061;
+1F34 0061;
+1F3E 0061;
+1F33 0061;
+03AF 0041;
+1FD0 0061;
+0390 0061;
+1FD9 0061;
+0399 0062;
+1F32 0062;
+1F37 0062;
+1FD6 0062;
+03F3 003F;
+1D73F 0021;
+1D75F 0021;
+1D779 003F;
+03BA 0061;
+1D779 0061;
+1D779 0041;
+1D799 0061;
+1D705 0062;
+1D6EB 0062;
+03CF 0061;
+039B 0021;
+1D77A 003F;
+1D6CC 0061;
+039B 0061;
+1D760 0041;
+1D6EC 0062;
+00B5 0021;
+1D761 0021;
+1D6B3 003F;
+1D707 0061;
+039C 0041;
+1D79B 0041;
+1D741 0062;
+338C 003F;
+3395 003F;
+33B2 003F;
+33BC 003F;
+039D 0021;
+1D77C 003F;
+1D6CE 0061;
+039D 0061;
+1D762 0041;
+1D6EE 0062;
+039E 0021;
+1D77D 003F;
+1D6CF 0061;
+039E 0061;
+1D763 0041;
+1D6EF 0062;
+039F 0334 0343;
+03BF 0343 0300 0334;
+1F41 0334;
+1F49 0301 0334;
+03BF 0301 0334;
+03BF 0340 0334;
+1D77E 0021;
+1F44 0021;
+03CC 0021;
+1D77E 003F;
+1F44 003F;
+03CC 003F;
+1D744 0061;
+1D6B6 0061;
+1F40 0061;
+1F4A 0061;
+1F43 0061;
+038C 0041;
+1D77E 0062;
+1F44 0062;
+03CC 0062;
+1D6E1 0021;
+213F 0021;
+1D6E1 003F;
+213F 003F;
+213C 0061;
+1D7C9 0061;
+1D7B9 0041;
+213F 0041;
+1D6E1 0062;
+213F 0062;
+1D28 0062;
+03FA 0062;
+03DE 0062;
+03D8 0062;
+1FEC 0334;
+1D78E 0021;
+1FE4 0021;
+1D754 003F;
+1D7A0 003F;
+1D6E0 0061;
+1D6E0 0041;
+03A1 0041;
+1D7A0 0041;
+03F1 0062;
+1D7C8 0062;
+1FEC 0062;
+03FC 0062;
+1D782 0021;
+03C2 0021;
+1D782 003F;
+03C2 003F;
+1D748 0061;
+1D748 0041;
+1D6F4 0061;
+03C2 0041;
+1D782 0062;
+03C2 0062;
+03FE 0062;
+03FD 0062;
+03FF 0062;
+1D72F 0021;
+1D6BB 003F;
+1D783 0061;
+1D6F5 0061;
+1D6D5 0062;
+1D7A3 0062;
+03C5 0313 0334 0300;
+03A5 0314 0334;
+1F59 0341 0334;
+03C5 0314 0342 0334;
+1F7B 0334;
+03C5 0334 0300;
+03A5 0306 0334;
+03A5 0334 0308;
+03C5 0334 0308 0340;
+03A5 0304 0334;
+03D2 0021;
+1F51 0021;
+038E 0021;
+03D4 0021;
+1D74A 003F;
+1F50 003F;
+1F57 003F;
+1FE8 003F;
+1FE9 003F;
+1D74A 0041;
+1D76A 0061;
+1F54 0041;
+1F55 0041;
+1F5F 0041;
+03D3 0041;
+1FE6 0041;
+1FE3 0041;
+1D6D6 0062;
+1D76A 0062;
+1F53 0062;
+1FEA 0062;
+1FE7 0062;
+1D753 0021;
+1D7A5 0021;
+1D753 003F;
+1D7A5 003F;
+1D719 0061;
+1D719 0041;
+1D6F7 0061;
+1D60 0041;
+1D753 0062;
+1D7A5 0062;
+1D6BE 0021;
+1D74C 003F;
+1D6A 003F;
+1D74C 0041;
+1D6BE 0041;
+1D6D8 0062;
+1D7A6 0062;
+1D6BF 0021;
+1D7C1 003F;
+1D713 0061;
+03A8 0041;
+1D7A7 0041;
+1D733 0062;
+03C9 0334 0343;
+03A9 0334 0343 0341;
+2126 0343 0334 0345 0301;
+03C9 0313 0345 0300 0334;
+1F60 0342 0334;
+03A9 0313 0342 0334 0345;
+2126 0345 0334 0313;
+1F61 0301 0334;
+1FA1 0301 0334;
+03A9 0334 0314 0340;
+2126 0314 0345 0334 0300;
+03C9 0314 0345 0342 0334;
+1F61 0345 0334;
+03A9 0334 0341;
+1F7C 0334;
+03C9 0342 0334;
+03A9 0345 0334;
+2126 0021;
+1FA4 0021;
+1FA0 0021;
+1FA3 0021;
+038F 0021;
+03C9 003F;
+1D734 003F;
+1F6A 003F;
+1F69 003F;
+1F6F 003F;
+1F7C 003F;
+1D714 0061;
+2126 0061;
+1D734 0041;
+1F6C 0041;
+1FA2 0041;
+1FAE 0041;
+1F65 0041;
+1F6B 0041;
+1FA7 0041;
+1F7D 0041;
+1FFA 0041;
+1FFC 0041;
+1D6FA 0062;
+1F62 0062;
+1F61 0062;
+1F67 0062;
+1FF4 0062;
+03E1 003F;
+0373 003F;
+03F8 003F;
+2C81 003F;
+2C83 003F;
+2C85 003F;
+2C87 003F;
+2C89 003F;
+2CB7 003F;
+2C8B 003F;
+2C8D 003F;
+2C8F 003F;
+2C91 003F;
+2C93 003F;
+2C95 003F;
+2CE4 0061;
+2CB8 0041;
+2C96 0041;
+2C98 0041;
+2C9A 0041;
+2CBA 0041;
+2CBC 0041;
+2C9C 0041;
+2C9E 0041;
+2CA0 0041;
+2CA2 0041;
+2CA4 0041;
+2CA6 0041;
+2CA8 0041;
+2CAA 0041;
+2CAC 0041;
+2CAE 0041;
+2CB0 0041;
+2CBE 0041;
+2CC0 0041;
+03E2 0041;
+2CC2 0041;
+2CC4 0041;
+2CC6 0041;
+03E4 0041;
+03E6 0041;
+2CC8 0041;
+03E8 0041;
+2CCA 0041;
+2CCC 0041;
+2CCE 0041;
+2CD0 0041;
+2CD2 0041;
+2CD4 0041;
+03EA 0041;
+2CD6 0041;
+03EC 0041;
+2CD8 0041;
+2CDA 0041;
+2CDC 0041;
+03EE 0041;
+2CB2 0041;
+2CB4 0041;
+2CDE 0041;
+2CE0 0041;
+2CE2 0041;
+0430 0061;
+0430 0062;
+04D1 0021;
+04D1 0061;
+04D1 0062;
+04D3 0021;
+04D3 0061;
+04D3 0062;
+04D8 0041;
+04DA 0334;
+04D9 0591 0308 0061;
+04DA 0041;
+04D5 0041;
+2DE0 003F;
+0411 0062;
+2DE1 0061;
+0413 0021;
+2DE2 0061;
+0490 0061;
+0492 003F;
+04FA 003F;
+0494 003F;
+04F6 003F;
+0414 0021;
+0434 0062;
+0500 0041;
+A680 0041;
+0402 0041;
+A662 0041;
+0502 0041;
+0413 0334 0341;
+0403 003F;
+0433 0301 0041;
+0403 0041;
+0498 0021;
+0435 0334 0300;
+0401 0334;
+0401 0021;
+2DF7 0061;
+0451 0061;
+0401 0062;
+04D6 0021;
+04D7 0041;
+04D6 0062;
+0404 0062;
+0416 0021;
+2DE4 0061;
+0436 0062;
+A685 0041;
+04DC 0334;
+0436 0591 0308 0061;
+04DC 0041;
+0497 0041;
+2DE5 003F;
+0437 0062;
+A640 0041;
+0504 0041;
+0510 0041;
+04DF 0021;
+04DF 0061;
+04DF 0062;
+A642 0041;
+0405 0041;
+A644 0041;
+04E0 0041;
+A688 0041;
+0506 0041;
+A682 0041;
+0418 0340 0334;
+040D 0021;
+0438 0041;
+0418 0001 0308 0061;
+04E2 0062;
+048A 0062;
+04E4 0021;
+04E5 0041;
+04E4 0062;
+0406 0001 0308 0061;
+A646 0041;
+0457 0021;
+0457 0061;
+0457 0062;
+0439 0021;
+0439 0061;
+0439 0062;
+0408 0041;
+A649 0061;
+043A 0021;
+041A 0061;
+049A 0021;
+04C3 0021;
+04A0 0021;
+049E 0021;
+049C 0021;
+051E 0021;
+051A 0021;
+043B 0021;
+041B 0061;
+04C6 0021;
+0513 0021;
+0521 0021;
+0459 0021;
+A665 0021;
+0509 0021;
+0515 0021;
+2DE8 0334;
+2DE8 0041;
+04CE 0061;
+A667 0061;
+1D78 0021;
+041D 0041;
+04C9 003F;
+04A2 003F;
+04C7 003F;
+0522 003F;
+04A4 003F;
+040A 003F;
+050A 003F;
+A669 0021;
+A669 003F;
+2DEA 0061;
+041E 0061;
+043E 0062;
+043E 0308 0334;
+043E 0308 003F;
+041E 0308 0061;
+04E9 0021;
+04E9 0062;
+04E8 0308 0021;
+04E9 0308 0041;
+04E8 0308 0062;
+043F 0041;
+04A7 003F;
+0481 003F;
+2DEC 0021;
+0420 0041;
+048E 0061;
+0516 0061;
+0421 003F;
+2DF5 0334;
+050D 0061;
+04AB 0061;
+0442 003F;
+2DEE 0062;
+A68D 0062;
+050F 0062;
+04AD 0062;
+A68B 0062;
+045B 0062;
+043A 0301 0021;
+041A 0301 003F;
+043A 0341 0041;
+041A 0301 0041;
+04EF 0334;
+04EF 003F;
+0443 0001 030B 0061;
+0443 0306 0334;
+0443 0306 003F;
+040E 0061;
+0443 0308 0334;
+0443 0308 003F;
+0423 0308 0061;
+0443 030B 0334;
+0443 030B 003F;
+0423 030B 0061;
+04AF 0021;
+04B1 0021;
+2DF9 0334;
+2DF9 0041;
+0479 0061;
+0444 0061;
+0445 003F;
+2DEF 0062;
+04FD 0062;
+04FF 0062;
+04B3 0062;
+04BB 0062;
+A695 0062;
+0461 0062;
+047F 0062;
+A64D 0062;
+047D 0062;
+047B 0062;
+0446 0041;
+A68F 003F;
+04B5 003F;
+A691 003F;
+2DF1 0021;
+0427 0041;
+A693 0061;
+0427 0334 0308;
+0447 0308 0061;
+0427 0308 0041;
+04B7 0061;
+04CC 0061;
+04B9 0061;
+A687 0061;
+04BD 0061;
+04BF 0061;
+045F 0061;
+0448 003F;
+2DF2 0062;
+A697 0062;
+0449 0041;
+A64F 003F;
+2E2F 0061;
+044A 003F;
+A651 003F;
+044B 003F;
+044B 0308 0334;
+044B 0308 003F;
+042B 0308 0061;
+044C 0021;
+048D 0021;
+2DFA 0334;
+2DFA 0041;
+A653 0061;
+044D 0061;
+04ED 0334;
+042D 0308 003F;
+042D 1D165 0308 0061;
+2DFB 0021;
+042E 0041;
+A654 0061;
+A656 003F;
+044F 0021;
+0519 0021;
+0465 0021;
+2DFD 0334;
+2DFD 0041;
+A659 0061;
+046B 003F;
+2DFE 0062;
+A65B 0062;
+0469 0062;
+A65D 0062;
+046D 0041;
+046F 003F;
+0471 003F;
+2DF4 0021;
+0472 0041;
+0474 0061;
+0474 0334 030F;
+0475 030F 0061;
+0474 030F 0041;
+A65F 0061;
+04A9 0061;
+051D 0061;
+04CF 0061;
+2C30 0061;
+2C31 0061;
+2C32 0061;
+2C33 0061;
+2C34 0061;
+2C35 0061;
+2C36 0061;
+2C37 0061;
+2C38 0061;
+2C39 0061;
+2C3A 0061;
+2C3B 0061;
+2C3C 0061;
+2C3D 0061;
+2C3E 0061;
+2C3F 0061;
+2C40 0061;
+2C41 0061;
+2C42 0061;
+2C43 0061;
+2C44 0061;
+2C45 0061;
+2C46 0061;
+2C47 0061;
+2C48 0061;
+2C49 0061;
+2C4A 0061;
+2C4B 0061;
+2C4C 0061;
+2C4D 0061;
+2C4E 0061;
+2C4F 0061;
+2C50 0061;
+2C51 0061;
+2C52 0061;
+2C53 0061;
+2C54 0061;
+2C55 0061;
+2C56 0061;
+2C57 0061;
+2C58 0061;
+2C59 0061;
+2C5A 0061;
+2C5B 0061;
+2C5C 0061;
+2C5D 0061;
+2C5E 0061;
+10D0 0062;
+10A0 0062;
+2D01 0061;
+10D2 0062;
+10A2 0062;
+2D03 0061;
+10D4 0062;
+10A4 0062;
+2D05 0061;
+10D6 0062;
+10A6 0062;
+2D21 0061;
+10D7 0062;
+10A7 0062;
+2D08 0061;
+10D9 0062;
+10A9 0062;
+2D0A 0061;
+10DB 0062;
+10AB 0062;
+10FC 0062;
+10AC 0062;
+2D22 0061;
+10DD 0062;
+10AD 0062;
+2D0E 0061;
+10DF 0062;
+10AF 0062;
+2D10 0061;
+10E1 0062;
+10B1 0062;
+2D12 0061;
+10F3 0062;
+10C3 0062;
+2D13 0061;
+10E4 0062;
+10B4 0062;
+2D15 0061;
+10E6 0062;
+10B6 0062;
+2D17 0061;
+10E8 0062;
+10B8 0062;
+2D19 0061;
+10EA 0062;
+10BA 0062;
+2D1B 0061;
+10EC 0062;
+10BC 0062;
+2D1D 0061;
+10EE 0062;
+10BE 0062;
+2D24 0061;
+10EF 0062;
+10BF 0062;
+2D20 0061;
+10F5 0062;
+10C5 0062;
+10F7 0062;
+10F9 0062;
+0561 0061;
+0562 0061;
+0563 0061;
+0564 0061;
+0565 0061;
+0587 0062;
+0536 0062;
+0537 0062;
+0538 0062;
+0539 0062;
+053A 0062;
+053B 0062;
+053C 0062;
+053D 0062;
+053E 0062;
+053F 0062;
+0540 0062;
+0541 0062;
+0542 0062;
+0543 0062;
+0544 0062;
+FB15 0062;
+FB13 0062;
+0545 0062;
+0546 0062;
+0547 0062;
+0548 0062;
+0549 0062;
+054A 0062;
+054B 0062;
+054C 0062;
+054D 0062;
+054E 0062;
+057F 0061;
+0580 0061;
+0581 0061;
+0582 0061;
+0583 0061;
+0584 0061;
+0585 0061;
+0586 0061;
+0559 0062;
+05D0 0021;
+FB2F 003F;
+FB2F 0061;
+FB4F 0021;
+FB4C 0334;
+05D1 0041;
+FB4C 0062;
+05D2 0061;
+05D3 05BC 0334;
+05D3 0061;
+FB22 0062;
+FB34 003F;
+05D5 0334 05B9;
+FB4B 003F;
+FB35 0062;
+05F1 0062;
+FB36 0061;
+05D8 05BC 0334;
+05D8 0062;
+FB39 0021;
+05D9 0062;
+05F2 0061;
+05DA 05BC 0334;
+FB4D 0021;
+FB24 0041;
+FB24 0062;
+FB3C 0021;
+05DC 0062;
+05DE 003F;
+FB3E 0061;
+05DF 0021;
+FB40 0041;
+FB41 003F;
+FB20 003F;
+05E3 0334 05BC;
+FB4E 0021;
+FB44 0061;
+FB4E 0062;
+05E6 0061;
+05E7 05BC 0334;
+05E7 0062;
+FB48 003F;
+05E9 0334 05C2;
+05E9 05BC 0334 05C2;
+FB49 0021;
+05E9 0041;
+FB2C 0041;
+05EA 0021;
+FB4A 0061;
+10901 0021;
+10903 0021;
+10905 0021;
+10907 0021;
+10909 0021;
+1090B 0021;
+1090D 0021;
+1090F 0021;
+10911 0021;
+10913 0021;
+10915 0021;
+0674 003F;
+06FD 0041;
+FE82 0021;
+0622 0041;
+0623 0334;
+FE83 003F;
+FE83 0041;
+0671 0021;
+FB50 0061;
+FE86 0021;
+0624 0041;
+0625 0334;
+FE87 003F;
+0625 0062;
+0773 003F;
+064A 0334 0654;
+FE8B 003F;
+FE8B 0061;
+FE8B 0062;
+FBEA 0061;
+FC00 0061;
+FC01 0061;
+FC64 003F;
+FCDF 0021;
+FCDF 0041;
+FC67 003F;
+FCE0 0061;
+FBEC 0061;
+FBEE 0061;
+FBF2 0061;
+FBF0 0061;
+FBF4 0061;
+FBFA 003F;
+FBF9 0061;
+FC04 0021;
+FBF7 0021;
+FBF6 0041;
+FE8E 003F;
+FD3C 0061;
+FE8D 0062;
+FDF3 0061;
+066E 0061;
+FE92 003F;
+FE90 0041;
+FC9C 003F;
+FC9D 003F;
+FDC2 0061;
+FC07 0041;
+FC6A 0061;
+FC6C 0021;
+FC6C 0061;
+FC6D 0061;
+FCE2 0041;
+FC09 0041;
+FC0A 0041;
+FB55 003F;
+FB53 0041;
+FB59 0021;
+FB58 0061;
+FB59 0062;
+FB5D 003F;
+FB5B 0041;
+0750 0061;
+0752 0061;
+0754 0061;
+0756 0061;
+0629 0041;
+FE98 0021;
+FE97 0061;
+FE98 0062;
+FC0B 0041;
+FDA0 0061;
+FCA2 003F;
+FD52 003F;
+FD53 0061;
+FC0D 0041;
+FDA2 0061;
+FC70 0061;
+FC72 0021;
+FC72 0061;
+FD55 0061;
+FD57 0061;
+FDA3 0061;
+FCA5 003F;
+FC74 003F;
+FC75 003F;
+FE9C 0021;
+FE9B 0061;
+FE9C 0062;
+FC76 0061;
+FC78 0021;
+FC78 0061;
+FC79 0061;
+FC7A 003F;
+FC7B 003F;
+FB69 0021;
+FB68 0061;
+FB69 0062;
+FB61 003F;
+FB5F 0041;
+067C 0061;
+FB65 0021;
+FB64 0061;
+FB65 0062;
+FEA0 003F;
+FE9E 0041;
+FCA7 003F;
+FDA6 0061;
+FDFB 0061;
+FC16 0041;
+FD58 0041;
+FDA5 0061;
+FD01 0041;
+FD02 0041;
+FB79 003F;
+FB77 0041;
+FB75 0021;
+FB74 0061;
+FB75 0062;
+FB7D 003F;
+FB7B 0041;
+06BF 0061;
+FB81 003F;
+FB7F 0041;
+FEA4 0021;
+FEA3 0061;
+FEA4 0062;
+FC17 0041;
+FCAA 003F;
+FD5B 0061;
+FD1B 003F;
+FD1C 003F;
+FEA8 0021;
+FEA7 0061;
+FEA8 0062;
+FC19 0041;
+FCAC 003F;
+FD1F 003F;
+FD20 003F;
+0681 0061;
+0685 0061;
+0758 0061;
+076F 0061;
+077C 0061;
+062F 0041;
+FEAB 0021;
+FEAB 0061;
+FB88 0021;
+0688 0062;
+068A 0061;
+FB84 0021;
+068C 0062;
+068D 0041;
+FB86 0021;
+068E 0062;
+0690 0061;
+0759 0061;
+FEAD 0021;
+FEAD 0061;
+FDF6 0061;
+FEAF 0021;
+0632 0062;
+0691 0041;
+0692 0061;
+0694 0061;
+0696 0061;
+FB8A 0021;
+0698 0062;
+06EF 0061;
+076B 0061;
+0771 0061;
+FEB4 003F;
+FEB2 0041;
+FC1C 0021;
+FCAD 0062;
+FD5E 0061;
+FCAE 0041;
+FD5C 0061;
+FCAF 0041;
+FDA8 0061;
+FD2A 003F;
+FC1F 0021;
+FCB0 0062;
+FD60 003F;
+FD63 003F;
+FD31 003F;
+FD17 003F;
+FD18 003F;
+FEB8 0021;
+FEB7 0061;
+FEB8 0062;
+FD09 003F;
+FD37 0062;
+FD26 0021;
+FD26 0061;
+FD68 003F;
+FDAA 0061;
+FD0B 003F;
+FD39 0062;
+FD0D 0041;
+FD0C 003F;
+FCE9 0062;
+FD6A 0041;
+FD6C 0041;
+FCEA 0041;
+FCFD 0041;
+FCFE 0041;
+069B 0061;
+06FA 0061;
+076D 0061;
+077D 0061;
+FEBC 0021;
+FEBB 0061;
+FEBC 0062;
+FC20 0041;
+FD64 0041;
+FCB2 0061;
+FD0F 0041;
+FDFA 0061;
+FDF0 0061;
+FC21 0041;
+FD66 0041;
+FD05 0041;
+FD06 0041;
+FEC0 003F;
+FEBE 0041;
+FCB4 003F;
+FCB5 003F;
+FD6E 0061;
+FCB6 003F;
+FD70 003F;
+FD2C 003F;
+FCB7 003F;
+FD23 003F;
+FD24 003F;
+069D 0061;
+06FB 0061;
+FEC4 003F;
+FEC2 0041;
+FCB8 003F;
+FC27 0021;
+FD33 0062;
+FD71 0041;
+FD74 0061;
+FCF5 0041;
+FCF6 0041;
+FEC8 003F;
+FEC6 0041;
+FC28 0021;
+FCB9 0062;
+FECC 0021;
+FECB 0061;
+FECC 0062;
+FC29 0041;
+FD75 0041;
+FCBB 003F;
+FD77 003F;
+FD78 0061;
+FD13 003F;
+FD14 003F;
+FED0 0021;
+FECF 0061;
+FED0 0062;
+FC2B 0041;
+FC2C 0041;
+FD7B 0061;
+FD15 003F;
+FD16 003F;
+06A0 0061;
+075D 0061;
+075F 0061;
+FED4 003F;
+FED2 0041;
+FCBE 003F;
+FCBF 003F;
+FCC0 003F;
+FD7D 003F;
+FCC1 003F;
+FDC1 0061;
+FC31 0041;
+FC32 0041;
+06A2 0061;
+FB6D 0021;
+FB6C 0061;
+FB6D 0062;
+FB71 0021;
+FB70 0061;
+FB71 0062;
+0761 0061;
+FED8 0021;
+FED7 0061;
+FED8 0062;
+FC33 0041;
+FCC3 003F;
+FDB4 003F;
+FD7F 0061;
+FC7E 003F;
+FC7F 003F;
+06A7 0061;
+FEDC 0021;
+FEDB 0061;
+FEDC 0062;
+FC37 0041;
+FC38 0041;
+FC39 0041;
+FC3A 0041;
+FC3B 003F;
+FCEB 0062;
+FC3C 003F;
+FCEC 0062;
+FDBB 0041;
+FC83 003F;
+FC84 003F;
+FB91 0021;
+FB90 0061;
+FB91 0062;
+06AB 0061;
+077F 0061;
+FBD6 003F;
+FBD4 0041;
+06AE 0061;
+FB95 003F;
+FB93 0041;
+06B0 0061;
+FB9D 003F;
+FB9B 0041;
+06B2 0061;
+FB99 003F;
+FB97 0041;
+06B4 0061;
+063B 0061;
+0763 0061;
+FEE0 0021;
+FEDF 0061;
+FEE0 0062;
+FEF5 0041;
+FEF7 0041;
+FEF9 0041;
+FEFB 0041;
+FC3F 0041;
+FD84 0041;
+FDBC 0041;
+FCCA 003F;
+FDB5 003F;
+FD82 0061;
+FCCB 003F;
+FD86 003F;
+FC85 0021;
+FC85 0061;
+FD88 003F;
+FDAD 0061;
+FC86 003F;
+FC87 003F;
+06B5 0061;
+06B7 0061;
+076A 0061;
+FEE3 003F;
+FEE4 0041;
+FEE2 0062;
+FCCE 003F;
+FD8C 0061;
+FD8D 0061;
+FCCF 003F;
+FD89 0061;
+FDF4 0061;
+FCD0 003F;
+FD8E 0061;
+FDB9 0061;
+FCD1 0041;
+FDB1 0061;
+FC4A 0061;
+0766 0061;
+FEE8 003F;
+FEE6 0041;
+FCD2 003F;
+FDB8 003F;
+FD98 003F;
+FD99 0061;
+FCD3 003F;
+FD95 0061;
+FDB3 0061;
+FC4D 0041;
+FC8B 0061;
+FC4E 003F;
+FCEE 0062;
+FD9A 0061;
+FCD6 003F;
+FC8E 003F;
+FC8F 003F;
+FB9E 0021;
+06BA 0062;
+FBA3 003F;
+FBA1 0041;
+06BC 0061;
+06B9 0061;
+0768 0061;
+FEEC 0021;
+0647 0061;
+FCD9 0061;
+FCD7 003F;
+FCD8 003F;
+FD93 0061;
+FC53 0061;
+FBAD 0021;
+FBAC 0061;
+FBAD 0062;
+FBA6 0021;
+FBA8 0061;
+06C1 0062;
+06C3 0062;
+06C0 0021;
+06C0 0041;
+06E5 0021;
+06E5 0041;
+0676 0021;
+06C4 0021;
+FBE0 003F;
+06C6 0021;
+FBD9 0061;
+FBD7 003F;
+0677 0021;
+06C8 0021;
+FBDB 0061;
+FBE2 003F;
+06CA 0021;
+FBDE 003F;
+06CF 0021;
+0779 0021;
+FC90 0021;
+0649 0041;
+FC90 0041;
+064A 0021;
+FEF2 003F;
+FEF2 0061;
+FEF1 0062;
+FCDA 0061;
+FDAF 0062;
+FC56 0062;
+FCDC 0061;
+FC91 0062;
+FCDD 003F;
+FC58 0061;
+FD9D 0061;
+FDB0 0062;
+FCDE 0061;
+FC95 0061;
+FC96 0061;
+FBFC 0021;
+FBFF 0061;
+FBFC 0062;
+06CE 0062;
+FBE4 003F;
+FBE4 0041;
+06D1 0062;
+063E 0062;
+0775 0062;
+0777 0062;
+06D2 003F;
+FBAE 0061;
+FBAE 0062;
+077B 003F;
+072D 0021;
+0714 0021;
+072E 0041;
+072F 0021;
+0717 003F;
+0719 003F;
+071A 003F;
+071C 0061;
+071E 003F;
+074E 003F;
+0721 003F;
+0724 0021;
+0725 003F;
+0727 0061;
+0728 003F;
+072A 003F;
+072C 003F;
+0799 003F;
+0781 003F;
+0783 003F;
+0784 003F;
+0786 003F;
+07A2 003F;
+0788 003F;
+0789 003F;
+078B 003F;
+078C 003F;
+07A0 003F;
+078D 003F;
+07A4 003F;
+0790 003F;
+079E 003F;
+0791 003F;
+0793 003F;
+0795 003F;
+0797 003F;
+07A6 003F;
+07A8 003F;
+07AA 003F;
+07AC 003F;
+07AE 003F;
+07B0 003F;
+07CB 003F;
+07CD 003F;
+07CF 003F;
+07D1 003F;
+07D3 003F;
+07D5 003F;
+07E8 0061;
+07E9 0061;
+07EA 0021;
+07DA 003F;
+07DC 003F;
+07DE 003F;
+07E0 003F;
+07E2 003F;
+07E4 003F;
+07E6 003F;
+07F4 003F;
+2D30 003F;
+2D32 003F;
+2D34 003F;
+2D36 003F;
+2D38 003F;
+2D3A 003F;
+2D3C 003F;
+2D3E 003F;
+2D40 003F;
+2D42 003F;
+2D44 003F;
+2D46 003F;
+2D48 003F;
+2D4A 003F;
+2D4C 003F;
+2D4E 003F;
+2D50 003F;
+2D52 003F;
+2D54 003F;
+2D56 003F;
+2D58 003F;
+2D5A 003F;
+2D5C 003F;
+2D5E 003F;
+2D60 003F;
+2D62 003F;
+2D64 003F;
+2D6F 003F;
+1201 003F;
+1203 003F;
+1205 003F;
+1207 003F;
+1209 003F;
+120B 003F;
+120D 003F;
+120F 003F;
+1210 003F;
+1212 003F;
+1214 003F;
+1216 003F;
+1218 003F;
+121A 003F;
+121C 003F;
+121E 003F;
+1380 003F;
+1382 003F;
+2D81 003F;
+1221 003F;
+1223 003F;
+1225 003F;
+1227 003F;
+1229 003F;
+122B 003F;
+122D 003F;
+122F 003F;
+1230 003F;
+1232 003F;
+1234 003F;
+1236 003F;
+2D83 003F;
+1239 003F;
+123B 003F;
+123D 003F;
+123F 003F;
+1240 003F;
+1242 003F;
+1244 003F;
+1246 003F;
+1248 003F;
+124B 003F;
+124D 003F;
+1251 003F;
+1253 003F;
+1255 003F;
+1258 003F;
+125B 003F;
+125D 003F;
+1261 003F;
+1263 003F;
+1265 003F;
+1267 003F;
+1385 003F;
+1387 003F;
+1268 003F;
+126A 003F;
+126C 003F;
+126E 003F;
+1270 003F;
+1272 003F;
+1274 003F;
+1276 003F;
+2D86 003F;
+1279 003F;
+127B 003F;
+127D 003F;
+127F 003F;
+1280 003F;
+1282 003F;
+1284 003F;
+1286 003F;
+1288 003F;
+128B 003F;
+128D 003F;
+1291 003F;
+1293 003F;
+1295 003F;
+1297 003F;
+1298 003F;
+129A 003F;
+129C 003F;
+129E 003F;
+2D89 003F;
+12A1 003F;
+12A3 003F;
+12A5 003F;
+12A7 003F;
+12A8 003F;
+12AA 003F;
+12AC 003F;
+12AE 003F;
+12B0 003F;
+12B3 003F;
+12B5 003F;
+12B9 003F;
+12BB 003F;
+12BD 003F;
+12C0 003F;
+12C3 003F;
+12C5 003F;
+12C9 003F;
+12CB 003F;
+12CD 003F;
+12CF 003F;
+12D1 003F;
+12D3 003F;
+12D5 003F;
+12D8 003F;
+12DA 003F;
+12DC 003F;
+12DE 003F;
+2D8B 003F;
+12E1 003F;
+12E3 003F;
+12E5 003F;
+12E7 003F;
+12E9 003F;
+12EB 003F;
+12ED 003F;
+12EF 003F;
+12F1 003F;
+12F3 003F;
+12F5 003F;
+12F7 003F;
+12F8 003F;
+12FA 003F;
+12FC 003F;
+12FE 003F;
+2D8D 003F;
+1301 003F;
+1303 003F;
+1305 003F;
+1307 003F;
+1308 003F;
+130A 003F;
+130C 003F;
+130E 003F;
+1310 003F;
+1313 003F;
+1315 003F;
+1319 003F;
+131B 003F;
+131D 003F;
+131F 003F;
+2D94 003F;
+2D96 003F;
+1321 003F;
+1323 003F;
+1325 003F;
+1327 003F;
+1328 003F;
+132A 003F;
+132C 003F;
+132E 003F;
+2D90 003F;
+1331 003F;
+1333 003F;
+1335 003F;
+1337 003F;
+1338 003F;
+133A 003F;
+133C 003F;
+133E 003F;
+1340 003F;
+1342 003F;
+1344 003F;
+1346 003F;
+1348 003F;
+134A 003F;
+134C 003F;
+134E 003F;
+1388 003F;
+138A 003F;
+1350 003F;
+1352 003F;
+1354 003F;
+1356 003F;
+138C 003F;
+138E 003F;
+2D92 003F;
+1359 003F;
+2DA0 003F;
+2DA2 003F;
+2DA4 003F;
+2DA6 003F;
+2DA9 003F;
+2DAB 003F;
+2DAD 003F;
+2DB0 003F;
+2DB2 003F;
+2DB4 003F;
+2DB6 003F;
+2DB9 003F;
+2DBB 003F;
+2DBD 003F;
+2DC0 003F;
+2DC2 003F;
+2DC4 003F;
+2DC6 003F;
+2DC9 003F;
+2DCB 003F;
+2DCD 003F;
+2DD0 003F;
+2DD2 003F;
+2DD4 003F;
+2DD6 003F;
+2DD9 003F;
+2DDB 003F;
+2DDD 003F;
+0950 003F;
+0904 003F;
+0906 003F;
+0908 003F;
+090A 003F;
+0960 003F;
+0961 003F;
+090E 003F;
+0910 003F;
+0912 003F;
+0914 003F;
+0958 003F;
+0916 0021;
+0917 0334 093C;
+095A 0041;
+0918 0061;
+091A 0061;
+095B 0334;
+095B 0062;
+091D 0062;
+091F 0062;
+095C 0021;
+097E 003F;
+095D 003F;
+0923 0041;
+0925 0041;
+0927 0041;
+0928 0041;
+092B 0334 093C;
+095E 0041;
+097F 0061;
+092E 0061;
+092F 0061;
+0931 0021;
+0932 003F;
+0934 003F;
+0935 0041;
+0937 0041;
+0939 0041;
+097D 0041;
+093F 0041;
+0941 0041;
+0943 0041;
+0962 0041;
+0945 0041;
+0947 0041;
+0949 0041;
+094B 0041;
+094D 003F;
+0986 003F;
+0988 003F;
+098A 003F;
+09E0 003F;
+09E1 003F;
+0990 003F;
+0994 003F;
+0996 003F;
+0998 003F;
+099A 003F;
+099C 003F;
+099E 003F;
+09A0 003F;
+09DC 003F;
+09A2 0021;
+09A3 0021;
+09CE 0021;
+09A6 0021;
+09A8 0021;
+09AB 0021;
+09AD 0021;
+09AF 0334 09BC;
+09DF 0041;
+09F0 0061;
+09F1 0061;
+09B7 0061;
+09B9 0061;
+09BE 0061;
+09C0 0061;
+09C2 0061;
+09C4 0061;
+09E3 0061;
+09C7 1D165 09BE 0061;
+09CB 0021;
+09CC 0021;
+09CD 0334;
+09D7 0062;
+0A73 0062;
+0A0A 0062;
+0A05 0062;
+0A10 0062;
+0A72 0062;
+0A08 0062;
+0A36 0021;
+0A39 003F;
+0A15 003F;
+0A59 003F;
+0A17 0021;
+0A18 0021;
+0A1A 0021;
+0A1C 0334 0A3C;
+0A5B 0041;
+0A1E 0061;
+0A20 0061;
+0A22 0061;
+0A24 0061;
+0A26 0061;
+0A28 0061;
+0A5E 0334;
+0A5E 0062;
+0A2D 0062;
+0A2F 0062;
+0A30 0062;
+0A33 0061;
+0A5C 003F;
+0A3F 003F;
+0A41 003F;
+0A47 003F;
+0A4B 003F;
+0A4D 0334;
+0AD0 0062;
+0A86 0062;
+0A88 0062;
+0A8A 0062;
+0AE0 0062;
+0AE1 0062;
+0A8F 0062;
+0A91 0062;
+0A94 0062;
+0A96 0062;
+0A98 0062;
+0A9A 0062;
+0A9C 0062;
+0A9E 0062;
+0AA0 0062;
+0AA2 0062;
+0AA4 0062;
+0AA6 0062;
+0AA8 0062;
+0AAB 0062;
+0AAD 0062;
+0AAF 0062;
+0AB2 0062;
+0AB5 0062;
+0AB7 0062;
+0AB9 0062;
+0ABE 0062;
+0AC0 0062;
+0AC2 0062;
+0AC4 0062;
+0AE3 0062;
+0AC7 0062;
+0AC9 0062;
+0ACC 0062;
+0B05 0061;
+0B07 0061;
+0B09 0061;
+0B0B 0061;
+0B0C 0061;
+0B0F 0061;
+0B13 0061;
+0B15 0061;
+0B17 0061;
+0B19 0061;
+0B1B 0061;
+0B1D 0061;
+0B1F 0061;
+0B5C 0334;
+0B5C 0062;
+0B5D 0061;
+0B24 003F;
+0B26 003F;
+0B28 003F;
+0B2B 003F;
+0B2D 003F;
+0B2F 003F;
+0B30 003F;
+0B33 003F;
+0B71 003F;
+0B37 003F;
+0B39 003F;
+0B3E 003F;
+0B40 003F;
+0B42 003F;
+0B44 003F;
+0B63 003F;
+0B47 0591 0B3E 0061;
+0B47 0B56 003F;
+0B47 0B3E 003F;
+0B47 0B57 003F;
+0B4D 0021;
+0B57 0021;
+0B83 0021;
+0B86 0021;
+0B88 0021;
+0B8A 0021;
+0B8F 0021;
+0B92 0021;
+0B93 0061;
+0B94 0041;
+0B99 0061;
+0B9C 0061;
+0B9F 0061;
+0BA4 0061;
+0BA9 0061;
+0BAE 0061;
+0BB0 0061;
+0BB2 0061;
+0BB4 0061;
+0BB6 0061;
+0BB8 0061;
+0BBE 0061;
+0BC0 0061;
+0BC2 0061;
+0BC6 1D165 0BBE 0061;
+0BC7 0591 0BBE 0061;
+0BCA 003F;
+0BCB 003F;
+0BCC 003F;
+0BCD 003F;
+0C05 003F;
+0C07 003F;
+0C09 003F;
+0C0B 003F;
+0C0C 003F;
+0C0E 003F;
+0C10 003F;
+0C13 003F;
+0C15 003F;
+0C17 003F;
+0C19 003F;
+0C58 003F;
+0C1C 003F;
+0C1D 003F;
+0C1F 003F;
+0C21 003F;
+0C23 003F;
+0C25 003F;
+0C27 003F;
+0C2A 003F;
+0C2C 003F;
+0C2E 003F;
+0C30 003F;
+0C32 003F;
+0C35 003F;
+0C37 003F;
+0C39 003F;
+0C3E 003F;
+0C40 003F;
+0C42 003F;
+0C44 003F;
+0C63 003F;
+0C47 0021;
+0C46 0C56 003F;
+0C4A 0021;
+0C4C 0021;
+0C4D 0041;
+0C56 0334;
+0C85 0062;
+0C87 0062;
+0C89 0062;
+0C8B 0062;
+0C8C 0062;
+0C8E 0062;
+0C90 0062;
+0C93 0062;
+0C95 0062;
+0C97 0062;
+0C99 0062;
+0C9B 0062;
+0C9D 0062;
+0C9F 0062;
+0CA1 0062;
+0CA3 0062;
+0CA5 0062;
+0CA7 0062;
+0CAA 0062;
+0CAC 0062;
+0CAE 0062;
+0CB0 0062;
+0CB2 0062;
+0CB6 0062;
+0CB8 0062;
+0CB3 0062;
+0CBD 0062;
+0CBF 0062;
+0CBF 0CD5 0041;
+0CC2 003F;
+0CC4 003F;
+0CE3 003F;
+0CC6 0591 0CC2 0061;
+0CC6 1D165 0CD6 0061;
+0CC7 0062;
+0CC8 0062;
+0CCA 0062;
+0CC6 0CC2 0CD5 003F;
+0CCA 0CD5 0062;
+0CCD 003F;
+0CD6 003F;
+0D06 003F;
+0D08 003F;
+0D0A 003F;
+0D60 003F;
+0D61 003F;
+0D0F 003F;
+0D12 003F;
+0D14 003F;
+0D15 003F;
+0D17 003F;
+0D19 003F;
+0D1B 003F;
+0D1D 003F;
+0D1F 003F;
+0D21 003F;
+0D7A 003F;
+0D24 003F;
+0D26 003F;
+0D7B 003F;
+0D2A 003F;
+0D2C 003F;
+0D2E 003F;
+0D30 003F;
+0D31 003F;
+0D32 003F;
+0D33 003F;
+0D35 003F;
+0D37 003F;
+0D39 003F;
+0D3E 003F;
+0D40 003F;
+0D42 003F;
+0D44 003F;
+0D63 003F;
+0D46 0591 0D3E 0061;
+0D47 0001 0D3E 0061;
+0D46 0D3E 003F;
+0D47 0D3E 003F;
+0D46 0D57 003F;
+0D57 0061;
+0D85 0021;
+0D87 0021;
+0D89 0021;
+0D8B 0021;
+0D8D 0021;
+0D8F 0021;
+0D91 0021;
+0D93 0021;
+0D95 0021;
+0D9A 0021;
+0D9C 0021;
+0D9E 0021;
+0DA0 0021;
+0DA2 0021;
+0DA4 0021;
+0DA6 0021;
+0DA8 0021;
+0DAA 0021;
+0DAC 0021;
+0DAE 0021;
+0DB0 0021;
+0DB3 0021;
+0DB5 0021;
+0DB7 0021;
+0DB9 0021;
+0DBB 0021;
+0DC0 0021;
+0DC2 0021;
+0DC4 0021;
+0DC6 0021;
+0DCA 0041;
+0DD0 0041;
+0DD2 0041;
+0DD4 0041;
+0DD8 0041;
+0DD9 1D165 0DCF 0061;
+0DD9 0DCA 0021;
+0DD9 0DCA 0062;
+0DDC 003F;
+0DD9 0DCF 0DCA 0334;
+0DD9 0DCF 0DCA 0061;
+0DDC 0DCA 0062;
+0DD9 0DDF 0062;
+0DF2 0041;
+A800 0041;
+A802 0041;
+A804 0041;
+A806 003F;
+A808 003F;
+A80A 003F;
+A80D 003F;
+A80F 003F;
+A811 003F;
+A813 003F;
+A815 003F;
+A817 003F;
+A819 003F;
+A81B 003F;
+A81D 003F;
+A81F 003F;
+A821 003F;
+A823 003F;
+A825 003F;
+A827 003F;
+A883 003F;
+A885 003F;
+A887 003F;
+A889 003F;
+A88B 003F;
+A88D 003F;
+A88F 003F;
+A891 003F;
+A893 003F;
+A895 003F;
+A897 003F;
+A899 003F;
+A89B 003F;
+A89D 003F;
+A89F 003F;
+A8A1 003F;
+A8A3 003F;
+A8A5 003F;
+A8A7 003F;
+A8A9 003F;
+A8AB 003F;
+A8AD 003F;
+A8AF 003F;
+A8B1 003F;
+A8B3 003F;
+A8B5 003F;
+A8B7 003F;
+A8B9 003F;
+A8BB 003F;
+A8BD 003F;
+A8BF 003F;
+A8C1 003F;
+A8C3 003F;
+1B83 0021;
+1B85 0021;
+1B87 0021;
+1B89 0021;
+1BAE 0021;
+1B8C 0021;
+1B8E 0021;
+1B90 0021;
+1B92 0021;
+1B94 0021;
+1B96 0021;
+1B98 0021;
+1B9A 0021;
+1B9B 0021;
+1B9C 0021;
+1B9D 0021;
+1B9F 0021;
+1BA0 0021;
+1BA5 0021;
+1BA7 0021;
+1BA9 0021;
+1BAA 0062;
+10A01 0062;
+10A03 0062;
+10A06 0062;
+10A10 0062;
+10A12 0062;
+10A15 0062;
+10A17 0062;
+10A1A 0062;
+10A1C 0062;
+10A1E 0062;
+10A20 0062;
+10A22 0062;
+10A24 0062;
+10A26 0062;
+10A28 0062;
+10A2A 0062;
+10A2C 0062;
+10A2E 0062;
+10A30 0062;
+10A32 0062;
+10A3F 0061;
+0E40 0E01 0061;
+0E42 0E01 0061;
+0E44 0E01 0061;
+0E40 0E02 0061;
+0E42 0E02 0061;
+0E44 0E02 0061;
+0E40 0E03 0061;
+0E42 0E03 0061;
+0E44 0E03 0061;
+0E40 0E04 0061;
+0E42 0E04 0061;
+0E44 0E04 0061;
+0E40 0E05 0061;
+0E42 0E05 0061;
+0E44 0E05 0061;
+0E40 0E06 0061;
+0E42 0E06 0061;
+0E44 0E06 0061;
+0E40 0E07 0061;
+0E42 0E07 0061;
+0E44 0E07 0061;
+0E40 0E08 0061;
+0E42 0E08 0061;
+0E44 0E08 0061;
+0E40 0E09 0061;
+0E42 0E09 0061;
+0E44 0E09 0061;
+0E40 0E0A 0061;
+0E42 0E0A 0061;
+0E44 0E0A 0061;
+0E40 0E0B 0061;
+0E42 0E0B 0061;
+0E44 0E0B 0061;
+0E40 0E0C 0061;
+0E42 0E0C 0061;
+0E44 0E0C 0061;
+0E40 0E0D 0061;
+0E42 0E0D 0061;
+0E44 0E0D 0061;
+0E40 0E0E 0061;
+0E42 0E0E 0061;
+0E44 0E0E 0061;
+0E40 0E0F 0061;
+0E42 0E0F 0061;
+0E44 0E0F 0061;
+0E40 0E10 0061;
+0E42 0E10 0061;
+0E44 0E10 0061;
+0E40 0E11 0061;
+0E42 0E11 0061;
+0E44 0E11 0061;
+0E40 0E12 0061;
+0E42 0E12 0061;
+0E44 0E12 0061;
+0E40 0E13 0061;
+0E42 0E13 0061;
+0E44 0E13 0061;
+0E40 0E14 0061;
+0E42 0E14 0061;
+0E44 0E14 0061;
+0E40 0E15 0061;
+0E42 0E15 0061;
+0E44 0E15 0061;
+0E40 0E16 0061;
+0E42 0E16 0061;
+0E44 0E16 0061;
+0E40 0E17 0061;
+0E42 0E17 0061;
+0E44 0E17 0061;
+0E40 0E18 0061;
+0E42 0E18 0061;
+0E44 0E18 0061;
+0E40 0E19 0061;
+0E42 0E19 0061;
+0E44 0E19 0061;
+0E40 0E1A 0061;
+0E42 0E1A 0061;
+0E44 0E1A 0061;
+0E40 0E1B 0061;
+0E42 0E1B 0061;
+0E44 0E1B 0061;
+0E40 0E1C 0061;
+0E42 0E1C 0061;
+0E44 0E1C 0061;
+0E40 0E1D 0061;
+0E42 0E1D 0061;
+0E44 0E1D 0061;
+0E40 0E1E 0061;
+0E42 0E1E 0061;
+0E44 0E1E 0061;
+0E40 0E1F 0061;
+0E42 0E1F 0061;
+0E44 0E1F 0061;
+0E40 0E20 0061;
+0E42 0E20 0061;
+0E44 0E20 0061;
+0E40 0E21 0061;
+0E42 0E21 0061;
+0E44 0E21 0061;
+0E40 0E22 0061;
+0E42 0E22 0061;
+0E44 0E22 0061;
+0E40 0E23 0061;
+0E42 0E23 0061;
+0E44 0E23 0061;
+0E40 0E24 0061;
+0E42 0E24 0061;
+0E44 0E24 0061;
+0E40 0E25 0061;
+0E42 0E25 0061;
+0E44 0E25 0061;
+0E40 0E26 0061;
+0E42 0E26 0061;
+0E44 0E26 0061;
+0E40 0E27 0061;
+0E42 0E27 0061;
+0E44 0E27 0061;
+0E40 0E28 0061;
+0E42 0E28 0061;
+0E44 0E28 0061;
+0E40 0E29 0061;
+0E42 0E29 0061;
+0E44 0E29 0061;
+0E40 0E2A 0061;
+0E42 0E2A 0061;
+0E44 0E2A 0061;
+0E40 0E2B 0061;
+0E42 0E2B 0061;
+0E44 0E2B 0061;
+0E40 0E2C 0061;
+0E42 0E2C 0061;
+0E44 0E2C 0061;
+0E40 0E2D 0061;
+0E42 0E2D 0061;
+0E44 0E2D 0061;
+0E40 0E2E 0061;
+0E42 0E2E 0061;
+0E44 0E2E 0061;
+0E30 0061;
+0E32 0061;
+0E33 0061;
+0E34 0062;
+0E36 0062;
+0E38 0061;
+0334 0E3A;
+0E40 0041;
+0E40 1D165 0E03 0061;
+0E40 0001 0E07 0061;
+0E40 0591 0E0A 0061;
+0E40 1D165 0E0D 0061;
+0E40 0001 0E11 0061;
+0E40 0591 0E14 0061;
+0E40 1D165 0E17 0061;
+0E40 0001 0E1B 0061;
+0E40 0591 0E1E 0061;
+0E40 1D165 0E21 0061;
+0E40 0001 0E25 0061;
+0E40 0591 0E28 0061;
+0E40 1D165 0E2B 0061;
+0E41 0021;
+0E41 1D165 0E02 0061;
+0E41 0001 0E06 0061;
+0E41 0591 0E09 0061;
+0E41 1D165 0E0C 0061;
+0E41 0001 0E10 0061;
+0E41 0591 0E13 0061;
+0E41 1D165 0E16 0061;
+0E41 0001 0E1A 0061;
+0E41 0591 0E1D 0061;
+0E41 1D165 0E20 0061;
+0E41 0001 0E24 0061;
+0E41 0591 0E27 0061;
+0E41 1D165 0E2A 0061;
+0E41 0001 0E2E 0061;
+0E42 1D165 0E01 0061;
+0E42 0001 0E05 0061;
+0E42 0591 0E08 0061;
+0E42 1D165 0E0B 0061;
+0E42 0001 0E0F 0061;
+0E42 0591 0E12 0061;
+0E42 1D165 0E15 0061;
+0E42 0001 0E19 0061;
+0E42 0591 0E1C 0061;
+0E42 1D165 0E1F 0061;
+0E42 0001 0E23 0061;
+0E42 0591 0E26 0061;
+0E42 1D165 0E29 0061;
+0E42 0001 0E2D 0061;
+0E43 0062;
+0E43 0001 0E04 0061;
+0E43 0591 0E07 0061;
+0E43 1D165 0E0A 0061;
+0E43 0001 0E0E 0061;
+0E43 0591 0E11 0061;
+0E43 1D165 0E14 0061;
+0E43 0001 0E18 0061;
+0E43 0591 0E1B 0061;
+0E43 1D165 0E1E 0061;
+0E43 0001 0E22 0061;
+0E43 0591 0E25 0061;
+0E43 1D165 0E28 0061;
+0E43 0001 0E2C 0061;
+0E44 003F;
+0E44 0001 0E03 0061;
+0E44 0591 0E06 0061;
+0E44 1D165 0E09 0061;
+0E44 0001 0E0D 0061;
+0E44 0591 0E10 0061;
+0E44 1D165 0E13 0061;
+0E44 0001 0E17 0061;
+0E44 0591 0E1A 0061;
+0E44 1D165 0E1D 0061;
+0E44 0001 0E21 0061;
+0E44 0591 0E24 0061;
+0E44 1D165 0E27 0061;
+0E44 0001 0E2B 0061;
+0E44 0591 0E2E 0061;
+0E81 0041;
+0EC1 0E81 0041;
+0EC3 0E81 0041;
+0E82 0041;
+0EC1 0E82 0041;
+0EC3 0E82 0041;
+0E84 0041;
+0EC1 0E84 0041;
+0EC3 0E84 0041;
+0E87 0041;
+0EC1 0E87 0041;
+0EC3 0E87 0041;
+0E88 0041;
+0EC1 0E88 0041;
+0EC3 0E88 0041;
+0E8A 0041;
+0EC1 0E8A 0041;
+0EC3 0E8A 0041;
+0E8D 0041;
+0EC1 0E8D 0041;
+0EC3 0E8D 0041;
+0E94 0041;
+0EC1 0E94 0041;
+0EC3 0E94 0041;
+0E95 0041;
+0EC1 0E95 0041;
+0EC3 0E95 0041;
+0E96 0041;
+0EC1 0E96 0041;
+0EC3 0E96 0041;
+0E97 0041;
+0EC1 0E97 0041;
+0EC3 0E97 0041;
+0E99 0041;
+0EC1 0E99 0041;
+0EC3 0E99 0041;
+0E9A 0041;
+0EC1 0E9A 0041;
+0EC3 0E9A 0041;
+0E9B 0041;
+0EC1 0E9B 0041;
+0EC3 0E9B 0041;
+0E9C 0041;
+0EC1 0E9C 0041;
+0EC3 0E9C 0041;
+0E9D 0041;
+0EC1 0E9D 0041;
+0EC3 0E9D 0041;
+0E9E 0041;
+0EC1 0E9E 0041;
+0EC3 0E9E 0041;
+0E9F 0041;
+0EC1 0E9F 0041;
+0EC3 0E9F 0041;
+0EA1 0041;
+0EC1 0EA1 0041;
+0EC3 0EA1 0041;
+0EA2 0041;
+0EC1 0EA2 0041;
+0EC3 0EA2 0041;
+0EA3 0041;
+0EC1 0EA3 0041;
+0EC3 0EA3 0041;
+0EA5 0041;
+0EC1 0EA5 0041;
+0EC3 0EA5 0041;
+0EA7 0041;
+0EC1 0EA7 0041;
+0EC3 0EA7 0041;
+0EAA 0041;
+0EC1 0EAA 0041;
+0EC3 0EAA 0041;
+0EAB 0041;
+0EC0 0EDC 0041;
+0EC2 0EDC 0041;
+0EC4 0EDC 0041;
+0EC0 0EDD 0041;
+0EC2 0EDD 0041;
+0EC4 0EDD 0041;
+0EC1 0EAB 0041;
+0EC3 0EAB 0041;
+0EAD 0041;
+0EC1 0EAD 0041;
+0EC3 0EAD 0041;
+0EAE 0041;
+0EC1 0EAE 0041;
+0EC3 0EAE 0041;
+0EAF 0041;
+0EB1 0041;
+0EB3 0021;
+0EB4 0021;
+0EB6 0021;
+0334 0EB8;
+0EB9 003F;
+0EBC 003F;
+0EC0 003F;
+0EC0 0001 0E84 0061;
+0EC0 0591 0E8A 0061;
+0EC0 1D165 0E95 0061;
+0EC0 0001 0E9A 0061;
+0EC0 0591 0E9D 0061;
+0EC0 1D165 0EA1 0061;
+0EC0 0001 0EA7 0061;
+0EC0 0591 0EDC 0061;
+0EC0 1D165 0EAE 0061;
+0EC1 0591 0E82 0061;
+0EC1 1D165 0E88 0061;
+0EC1 0001 0E95 0061;
+0EC1 0591 0E99 0061;
+0EC1 1D165 0E9C 0061;
+0EC1 0001 0EA1 0061;
+0EC1 0591 0EA5 0061;
+0EC1 1D165 0EAB 0061;
+0EC1 0001 0EAE 0061;
+0EC2 1D165 0E81 0061;
+0EC2 0001 0E88 0061;
+0EC2 0591 0E94 0061;
+0EC2 1D165 0E97 0061;
+0EC2 0001 0E9C 0061;
+0EC2 0591 0E9F 0061;
+0EC2 1D165 0EA3 0061;
+0EC2 0001 0EAB 0061;
+0EC2 0591 0EAD 0061;
+0EC3 0001 0E81 0061;
+0EC3 0591 0E87 0061;
+0EC3 1D165 0E8D 0061;
+0EC3 0001 0E97 0061;
+0EC3 0591 0E9B 0061;
+0EC3 1D165 0E9E 0061;
+0EC3 0001 0EA3 0061;
+0EC3 0591 0EAA 0061;
+0EC3 1D165 0EDD 0061;
+0EC4 0041;
+0EC4 1D165 0E84 0061;
+0EC4 0001 0E8D 0061;
+0EC4 0591 0E96 0061;
+0EC4 1D165 0E9A 0061;
+0EC4 0001 0E9E 0061;
+0EC4 0591 0EA2 0061;
+0EC4 1D165 0EA7 0061;
+0EC4 0001 0EDD 0061;
+0F40 003F;
+0F90 003F;
+0F6B 003F;
+0F91 003F;
+0F43 003F;
+0F93 003F;
+0F94 003F;
+0F95 003F;
+0F96 003F;
+0F97 003F;
+0F99 003F;
+0F9A 003F;
+0F9B 003F;
+0F4D 003F;
+0F9D 003F;
+0F9E 003F;
+0F9F 003F;
+0FA0 003F;
+0F52 003F;
+0FA2 003F;
+0FA3 003F;
+0FA4 003F;
+0FA5 003F;
+0F57 003F;
+0FA7 003F;
+0FA8 003F;
+0FA9 003F;
+0FAA 003F;
+0F5C 003F;
+0FAC 003F;
+0FBA 0021;
+0F5E 003F;
+0F5F 003F;
+0F60 003F;
+0F61 003F;
+0FBB 0061;
+0F6A 0061;
+0FBC 0061;
+0FB2 0F71 0041;
+0F6C 0062;
+0FB3 0062;
+0FB3 0001 0F80 0061;
+0FB4 0061;
+0FB5 0061;
+0FB6 0061;
+0FB7 0061;
+0F00 0061;
+0F88 0061;
+0F8A 0061;
+0F71 0021;
+0F72 0021;
+0F73 0021;
+0F73 0062;
+0F71 0334 0F80;
+0F71 0F80 0041;
+0F74 0062;
+0F71 0F74 0061;
+0F76 0021;
+0F76 0062;
+0FB2 0591 0F81 0061;
+0F77 0062;
+0F78 0061;
+0FB3 0F81 0021;
+0FB3 0F81 0061;
+0F7A 0334;
+0F7B 0061;
+0334 0F7D;
+0F84 003F;
+1C01 003F;
+1C03 003F;
+1C05 003F;
+1C07 003F;
+1C09 003F;
+1C4E 003F;
+1C0A 003F;
+1C0C 003F;
+1C0E 003F;
+1C10 003F;
+1C12 003F;
+1C14 003F;
+1C16 003F;
+1C18 003F;
+1C1A 003F;
+1C1B 003F;
+1C1C 003F;
+1C1E 003F;
+1C20 003F;
+1C22 003F;
+1C36 003F;
+1C27 003F;
+1C29 003F;
+1C2B 003F;
+1C2D 003F;
+1C2F 003F;
+1C31 003F;
+1C33 003F;
+1C35 003F;
+A841 003F;
+A843 003F;
+A845 003F;
+A847 003F;
+A86A 003F;
+A86C 003F;
+A849 003F;
+A84B 003F;
+A84D 003F;
+A84F 003F;
+A851 003F;
+A853 003F;
+A854 003F;
+A856 003F;
+A868 003F;
+A858 003F;
+A872 003F;
+A85A 003F;
+A85B 003F;
+A86F 003F;
+A85D 003F;
+A863 003F;
+A865 003F;
+A85F 003F;
+A861 003F;
+A873 003F;
+1901 003F;
+1903 003F;
+1905 003F;
+1907 003F;
+1909 003F;
+190B 003F;
+190D 003F;
+190F 003F;
+1911 003F;
+1913 003F;
+1915 003F;
+1917 003F;
+1919 003F;
+191B 003F;
+1920 003F;
+1922 003F;
+1924 003F;
+1926 003F;
+1928 003F;
+192A 003F;
+1930 003F;
+1932 003F;
+1934 003F;
+1936 003F;
+1938 003F;
+1701 003F;
+1703 003F;
+1705 003F;
+1707 003F;
+1709 003F;
+170B 003F;
+170E 003F;
+1710 003F;
+1712 003F;
+1714 0334;
+1720 0062;
+1722 0062;
+1724 0062;
+1726 0062;
+1728 0062;
+172A 0062;
+172C 0062;
+172E 0062;
+1730 0062;
+1732 0062;
+1734 0061;
+1741 0061;
+1743 0061;
+1745 0061;
+1747 0061;
+1749 0061;
+174B 0061;
+174D 0061;
+174F 0061;
+1751 0061;
+1753 0061;
+1761 0061;
+1763 0061;
+1765 0061;
+1767 0061;
+1769 0061;
+176B 0061;
+176E 0061;
+1770 0061;
+1773 0061;
+1A01 0061;
+1A03 0061;
+1A05 0061;
+1A07 0061;
+1A09 0061;
+1A0B 0061;
+1A0D 0061;
+1A0F 0061;
+1A11 0061;
+1A13 0061;
+1A15 0061;
+1A17 0021;
+1A18 0041;
+1A1A 0041;
+A930 0041;
+A932 0041;
+A934 0041;
+A936 0041;
+A938 0041;
+A93A 0041;
+A93C 0041;
+A93E 0041;
+A940 0041;
+A942 0041;
+A944 0041;
+A946 0041;
+A948 0041;
+A94A 0041;
+A94C 0041;
+A94E 0041;
+A950 0041;
+A952 0041;
+A90A 0061;
+A90C 0061;
+A90E 0061;
+A910 0061;
+A912 0061;
+A914 0061;
+A916 0061;
+A918 0061;
+A91A 0061;
+A91C 0061;
+A91E 0061;
+A920 0061;
+A922 0061;
+A924 0061;
+A926 0061;
+A928 0061;
+A92A 0061;
+1075 0061;
+1076 0061;
+1077 0061;
+1004 0061;
+1005 0061;
+1006 0061;
+1079 0061;
+105B 0061;
+1009 0061;
+100A 0061;
+100C 0061;
+100E 0061;
+106E 0061;
+1011 0061;
+107B 0061;
+1014 0061;
+105E 0061;
+1016 0061;
+107E 0061;
+1017 0061;
+1018 0061;
+105F 0061;
+103B 0061;
+103C 0061;
+1060 0061;
+103D 0061;
+1080 0061;
+1051 0061;
+101E 0061;
+101F 0061;
+103E 0061;
+105C 0061;
+106F 0061;
+1066 0061;
+1022 0061;
+1024 0061;
+1025 1D165 102E 0061;
+1026 0062;
+1053 0062;
+1055 0062;
+1028 0062;
+102A 0062;
+102B 0062;
+1072 0062;
+1071 0062;
+1033 0062;
+1073 0062;
+1030 0062;
+1057 0062;
+1059 0062;
+1084 0062;
+1085 0062;
+1034 0062;
+1067 0062;
+1086 0062;
+103A 003F;
+1064 003F;
+106A 003F;
+106C 003F;
+1087 003F;
+1088 003F;
+1089 003F;
+108F 003F;
+1781 003F;
+1783 003F;
+1785 003F;
+1787 003F;
+1789 003F;
+178B 003F;
+178D 003F;
+178F 003F;
+1791 003F;
+1793 003F;
+1795 003F;
+1797 003F;
+1799 003F;
+179B 003F;
+179D 003F;
+179F 003F;
+17A1 003F;
+17DC 003F;
+17A4 003F;
+17A6 003F;
+17A8 003F;
+17AA 003F;
+17AC 003F;
+17AE 003F;
+17B0 003F;
+17B2 003F;
+17B4 003F;
+17B6 003F;
+17B8 003F;
+17BA 003F;
+17BC 003F;
+17BE 003F;
+17C0 003F;
+17C2 003F;
+17C4 003F;
+17D2 0334;
+1950 0062;
+1952 0062;
+1954 0062;
+1956 0062;
+1958 0062;
+195A 0062;
+195C 0062;
+195E 0062;
+1960 0062;
+1962 0062;
+1964 0062;
+1966 0062;
+1968 0062;
+196A 0062;
+196C 0062;
+1970 0062;
+1972 0062;
+1974 0062;
+1981 0062;
+1983 0062;
+1985 0062;
+1987 0062;
+1989 0062;
+198B 0062;
+198D 0062;
+198F 0062;
+1991 0062;
+1993 0062;
+1995 0062;
+1997 0062;
+1999 0062;
+199B 0062;
+19DE 0062;
+199D 0062;
+199F 0062;
+19A1 0062;
+19A3 0062;
+19A5 0062;
+19A7 0062;
+19A9 0062;
+19B1 0062;
+19B3 0062;
+19B5 0062;
+19B7 0062;
+19B9 0062;
+19BB 0062;
+19BD 0062;
+19BF 0062;
+19C1 0062;
+19C3 0062;
+19C5 0062;
+19C7 0062;
+19C9 0062;
+AA01 0062;
+AA03 0062;
+AA05 0062;
+AA07 0062;
+AA09 0062;
+AA0B 0062;
+AA0D 0062;
+AA0F 0062;
+AA11 0062;
+AA13 0062;
+AA15 0062;
+AA17 0062;
+AA19 0062;
+AA1B 0062;
+AA1D 0062;
+AA1F 0062;
+AA21 0062;
+AA23 0062;
+AA25 0062;
+AA27 0062;
+AA33 0062;
+AA35 0062;
+AA29 0062;
+AA2B 0062;
+AA2D 0062;
+AA2F 0062;
+AA31 0062;
+AA40 0062;
+AA42 0062;
+AA44 0062;
+AA46 0062;
+AA48 0062;
+AA4A 0062;
+AA4C 0062;
+1B05 0062;
+1B05 1B35 0041;
+1B07 0591 1B35 0061;
+1B07 1B35 0062;
+1B09 1B35 0021;
+1B0B 0021;
+1B0B 1B35 003F;
+1B0D 0061;
+1B0D 1B35 0061;
+1B0F 0062;
+1B11 0062;
+1B11 1B35 0041;
+1B45 003F;
+1B14 003F;
+1B16 003F;
+1B18 003F;
+1B1A 003F;
+1B1C 003F;
+1B1E 003F;
+1B20 003F;
+1B22 003F;
+1B23 003F;
+1B25 003F;
+1B27 003F;
+1B28 003F;
+1B2A 003F;
+1B2C 003F;
+1B2E 003F;
+1B49 003F;
+1B31 003F;
+1B4A 003F;
+1B33 003F;
+1B36 003F;
+1B38 003F;
+1B3A 003F;
+1B3B 003F;
+1B3C 0041;
+1B3D 0061;
+1B3E 0001 1B35 0061;
+1B3F 1D165 1B35 0061;
+1B40 0062;
+1B41 0062;
+1B43 0021;
+1B44 0334;
+1880 0062;
+1882 0062;
+1884 0062;
+1886 0062;
+1820 0062;
+1821 0062;
+185D 0062;
+1845 0062;
+1873 0062;
+185F 0062;
+1846 0062;
+1847 0062;
+1825 0062;
+1826 0062;
+1860 0062;
+1828 0062;
+184A 0062;
+188A 0062;
+182A 0062;
+182B 0062;
+1866 0062;
+184D 0062;
+184E 0062;
+189A 0062;
+182E 0062;
+182F 0062;
+1831 0062;
+189C 0062;
+18A2 0062;
+18A5 0062;
+1850 0062;
+1833 0062;
+1869 0062;
+1852 0062;
+185C 0062;
+1835 0062;
+186A 0062;
+1836 0062;
+1872 0062;
+1875 0062;
+1856 0062;
+186B 0062;
+183A 0062;
+1863 0062;
+1889 0062;
+183C 0062;
+186E 0062;
+186F 0062;
+186C 0062;
+1859 0062;
+183F 0062;
+1841 0062;
+185A 0062;
+1870 0062;
+189E 0062;
+188E 0062;
+188F 0062;
+1898 0062;
+1891 0062;
+1892 0062;
+18A8 0062;
+18A3 0062;
+1899 0062;
+1897 0062;
+18A7 0062;
+18A9 0061;
+1C5B 0061;
+1C5D 0061;
+1C5F 0061;
+1C61 0061;
+1C63 0061;
+1C65 0061;
+1C67 0061;
+1C69 0061;
+1C6B 0061;
+1C6D 0061;
+1C6F 0061;
+1C71 0061;
+1C73 0061;
+1C75 0061;
+1C77 0061;
+1C79 0061;
+1C7B 0061;
+1C7D 0061;
+13A1 0061;
+13A3 0061;
+13A5 0061;
+13A7 0061;
+13A9 0061;
+13AB 0061;
+13AD 0061;
+13AF 0061;
+13B1 0061;
+13B3 0061;
+13B5 0061;
+13B7 0061;
+13B9 0061;
+13BB 0061;
+13BD 0061;
+13BF 0061;
+13C1 0061;
+13C3 0061;
+13C5 0061;
+13C7 0061;
+13C9 0061;
+13CB 0061;
+13CD 0061;
+13CF 0061;
+13D1 0061;
+13D3 0061;
+13D5 0061;
+13D7 0061;
+13D9 0061;
+13DB 0061;
+13DD 0061;
+13DF 0061;
+13E1 0061;
+13E3 0061;
+13E5 0061;
+13E7 0061;
+13E9 0061;
+13EB 0061;
+13ED 0061;
+13EF 0061;
+13F1 0061;
+13F3 0061;
+1401 0061;
+1403 0061;
+1405 0061;
+1407 0061;
+1409 0061;
+140B 0061;
+140D 0061;
+140F 0061;
+1411 0061;
+1413 0061;
+1415 0061;
+1417 0061;
+1419 0061;
+141B 0061;
+141D 0061;
+141F 0061;
+1421 0061;
+1423 0061;
+1425 0061;
+1427 0061;
+1429 0061;
+142B 0061;
+142D 0061;
+142F 0061;
+1431 0061;
+1433 0061;
+1435 0061;
+1437 0061;
+1439 0061;
+143B 0061;
+143D 0061;
+143F 0061;
+1441 0061;
+1443 0061;
+1445 0061;
+1447 0061;
+1449 0061;
+144B 0061;
+144D 0061;
+144F 0061;
+1451 0061;
+1453 0061;
+1455 0061;
+1457 0061;
+1459 0061;
+145B 0061;
+145D 0061;
+145F 0061;
+1461 0061;
+1463 0061;
+1465 0061;
+1467 0061;
+1469 0061;
+146B 0061;
+146D 0061;
+146F 0061;
+1471 0061;
+1473 0061;
+1475 0061;
+1477 0061;
+1479 0061;
+147B 0061;
+147D 0061;
+147F 0061;
+1481 0061;
+1483 0061;
+1485 0061;
+1487 0061;
+1489 0061;
+148B 0061;
+148D 0061;
+148F 0061;
+1491 0061;
+1493 0061;
+1495 0061;
+1497 0061;
+1499 0061;
+149B 0061;
+149D 0061;
+149F 0061;
+14A1 0061;
+14A3 0061;
+14A5 0061;
+14A7 0061;
+14A9 0061;
+14AB 0061;
+14AD 0061;
+14AF 0061;
+14B1 0061;
+14B3 0061;
+14B5 0061;
+14B7 0061;
+14B9 0061;
+14BB 0061;
+14BD 0061;
+14BF 0061;
+14C1 0061;
+14C3 0061;
+14C5 0061;
+14C7 0061;
+14C9 0061;
+14CB 0061;
+14CD 0061;
+14CF 0061;
+14D1 0061;
+14D3 0061;
+14D5 0061;
+14D7 0061;
+14D9 0061;
+14DB 0061;
+14DD 0061;
+14DF 0061;
+14E1 0061;
+14E3 0061;
+14E5 0061;
+14E7 0061;
+14E9 0061;
+14EB 0061;
+14ED 0061;
+14EF 0061;
+14F1 0061;
+14F3 0061;
+14F5 0061;
+14F7 0061;
+14F9 0061;
+14FB 0061;
+14FD 0061;
+14FF 0061;
+1501 0061;
+1503 0061;
+1505 0061;
+1507 0061;
+1509 0061;
+150B 0061;
+150D 0061;
+150F 0061;
+1511 0061;
+1513 0061;
+1515 0061;
+1517 0061;
+1519 0061;
+151B 0061;
+151D 0061;
+151F 0061;
+1521 0061;
+1523 0061;
+1525 0061;
+1527 0061;
+1529 0061;
+152B 0061;
+152D 0061;
+152F 0061;
+1531 0061;
+1533 0061;
+1535 0061;
+1537 0061;
+1539 0061;
+153B 0061;
+153D 0061;
+153F 0061;
+1541 0061;
+1543 0061;
+1545 0061;
+1547 0061;
+1549 0061;
+154B 0061;
+154D 0061;
+154F 0061;
+1551 0061;
+1553 0061;
+1555 0061;
+1557 0061;
+1559 0061;
+155B 0061;
+155D 0061;
+155F 0061;
+1561 0061;
+1563 0061;
+1565 0061;
+1567 0061;
+1569 0061;
+156B 0061;
+156D 0061;
+156F 0061;
+1571 0061;
+1573 0061;
+1575 0061;
+1577 0061;
+1579 0061;
+157B 0061;
+166F 0061;
+157F 0061;
+1581 0061;
+1583 0061;
+1585 0061;
+1587 0061;
+1589 0061;
+158B 0061;
+158D 0061;
+158E 0061;
+1590 0061;
+1592 0061;
+1594 0061;
+1671 0061;
+1673 0061;
+1675 0061;
+1596 0061;
+1598 0061;
+159A 0061;
+159C 0061;
+159E 0061;
+15A0 0061;
+15A2 0061;
+15A4 0061;
+15A6 0061;
+15A7 0061;
+15A9 0061;
+15AB 0061;
+15AD 0061;
+15AF 0061;
+15B1 0061;
+15B3 0061;
+15B5 0061;
+15B7 0061;
+15B9 0061;
+15BB 0061;
+15BD 0061;
+15BF 0061;
+15C1 0061;
+15C3 0061;
+15C5 0061;
+15C7 0061;
+15C9 0061;
+15CB 0061;
+15CD 0061;
+15CF 0061;
+15D1 0061;
+15D3 0061;
+15D5 0061;
+15D7 0061;
+15D9 0061;
+15DB 0061;
+15DD 0061;
+15DF 0061;
+15E1 0061;
+15E3 0061;
+15E5 0061;
+15E7 0061;
+15E9 0061;
+15EB 0061;
+15ED 0061;
+15EF 0061;
+15F1 0061;
+15F3 0061;
+15F5 0061;
+15F7 0061;
+15F9 0061;
+15FB 0061;
+15FD 0061;
+15FF 0061;
+1601 0061;
+1603 0061;
+1605 0061;
+1607 0061;
+1609 0061;
+160B 0061;
+160D 0061;
+160F 0061;
+1611 0061;
+1613 0061;
+1615 0061;
+1617 0061;
+1619 0061;
+161B 0061;
+161D 0061;
+161F 0061;
+1621 0061;
+1623 0061;
+1625 0061;
+1627 0061;
+1629 0061;
+162B 0061;
+162D 0061;
+162F 0061;
+1631 0061;
+1633 0061;
+1635 0061;
+1637 0061;
+1639 0061;
+163B 0061;
+163D 0061;
+163F 0061;
+1641 0061;
+1643 0061;
+1645 0061;
+1647 0061;
+1649 0061;
+164B 0061;
+164D 0061;
+164F 0061;
+1651 0061;
+1653 0061;
+1655 0061;
+1657 0061;
+1659 0061;
+165B 0061;
+165D 0061;
+165F 0061;
+1661 0061;
+1663 0061;
+1665 0061;
+1667 0061;
+1669 0061;
+166B 0061;
+1681 0061;
+1683 0061;
+1685 0061;
+1687 0061;
+1689 0061;
+168B 0061;
+168D 0061;
+168F 0061;
+1691 0061;
+1693 0061;
+1695 0061;
+1697 0061;
+1699 0061;
+16A0 003F;
+16A5 0021;
+16A2 0062;
+16A7 0041;
+16AC 0021;
+16A9 0061;
+16AC 0062;
+16B0 0061;
+16B4 0021;
+16B3 0061;
+16B4 0062;
+16B9 003F;
+16BC 0021;
+16BC 0061;
+16C0 0021;
+16BE 0062;
+16C2 0041;
+16C4 0041;
+16C6 0041;
+16C7 0061;
+16D5 0041;
+16EA 0021;
+16CA 0061;
+16CE 0061;
+16D1 0021;
+16CF 0062;
+16D2 0041;
+16D6 0061;
+16D7 0041;
+16EF 0061;
+16DB 0041;
+16DD 0041;
+16DF 0061;
+16AB 0061;
+16E0 0061;
+16B8 0061;
+16E1 0061;
+16E5 0061;
+16E6 0041;
+A500 0061;
+A502 0061;
+A504 0061;
+A506 0061;
+A508 0061;
+A50A 0061;
+A50C 0061;
+A50D 0061;
+A50F 0061;
+A511 0061;
+A513 0061;
+A515 0061;
+A517 0061;
+A519 0061;
+A51B 0061;
+A51D 0061;
+A614 0061;
+A520 0061;
+A522 0061;
+A524 0061;
+A526 0061;
+A528 0061;
+A52A 0061;
+A52C 0061;
+A52E 0061;
+A530 0061;
+A532 0061;
+A615 0061;
+A535 0061;
+A537 0061;
+A539 0061;
+A53B 0061;
+A53D 0061;
+A53F 0061;
+A541 0061;
+A543 0061;
+A545 0061;
+A547 0061;
+A548 0061;
+A54A 0061;
+A54C 0061;
+A54E 0061;
+A550 0061;
+A552 0061;
+A553 0061;
+A555 0061;
+A557 0061;
+A610 0041;
+A559 0061;
+A619 0061;
+A55C 0061;
+A55E 0061;
+A560 0061;
+A561 0061;
+A563 0061;
+A565 0061;
+A567 0061;
+A569 0061;
+A611 0041;
+A56C 0061;
+A56E 003F;
+A56F 0061;
+A571 0061;
+A573 0061;
+A575 0061;
+A577 0061;
+A579 0061;
+A57B 0061;
+A57D 0061;
+A57F 0061;
+A581 0061;
+A583 0061;
+A585 0061;
+A586 0061;
+A612 0041;
+A589 0061;
+A58B 0061;
+A58D 0061;
+A58F 0061;
+A591 0061;
+A593 0061;
+A595 0061;
+A597 0061;
+A599 0061;
+A59B 0061;
+A59D 0061;
+A59F 0061;
+A5A1 0061;
+A5A3 0061;
+A5A5 0061;
+A5A7 0061;
+A5A9 0061;
+A5AB 0061;
+A5AD 0061;
+A5AF 0061;
+A5B1 0061;
+A5B3 0061;
+A61C 0061;
+A5B6 0061;
+A5B8 0061;
+A5BA 0061;
+A5BC 0061;
+A5BE 0061;
+A5C0 0061;
+A5C2 0061;
+A5C4 0061;
+A5C6 0061;
+A5C8 0061;
+A5CA 0061;
+A61D 0061;
+A5CD 0061;
+A5CF 0061;
+A5D1 003F;
+A61E 0061;
+A5D3 0061;
+A5D5 0061;
+A5D7 0061;
+A61F 0061;
+A5DA 0061;
+A5DC 0061;
+A5DE 0061;
+A5E0 0061;
+A5E2 0061;
+A5E4 0061;
+A5E6 0061;
+A5E8 0061;
+A5EA 0061;
+A5EC 0061;
+A5EE 0061;
+A5F0 0061;
+A5F2 0061;
+A5F4 0061;
+A5F6 0061;
+A5F8 0061;
+A5FA 0061;
+A5FC 0061;
+A5FE 0061;
+A600 0061;
+A602 0061;
+A604 0061;
+A606 0061;
+A608 0061;
+A60A 0061;
+A60C 0061;
+FFA1 003F;
+3131 0062;
+1100 0591 1161 0061;
+326E 0062;
+AC00 1175 003F;
+AC01 0041;
+AC03 0041;
+AC05 0041;
+1101 0021;
+FFA2 0061;
+3134 003F;
+FFA4 0041;
+1103 0021;
+3137 0061;
+3270 0021;
+FFA8 003F;
+1105 0021;
+3139 0061;
+3271 0021;
+3141 003F;
+FFB1 0041;
+1107 0021;
+3142 0061;
+3273 0021;
+FFB3 003F;
+1109 0021;
+3145 0061;
+3274 0021;
+FFB6 003F;
+110B 0021;
+3147 0061;
+3275 0021;
+110C 0021;
+3148 0061;
+3276 0021;
+110D 0021;
+FFB9 0061;
+314A 003F;
+FFBA 0041;
+327C 0021;
+314B 003F;
+FFBB 0041;
+1110 0021;
+314C 0061;
+3279 0021;
+314D 003F;
+FFBD 0041;
+1112 0021;
+314E 0061;
+1112 1161 0021;
+327B 0041;
+1112 1175 0062;
+D788 1175 003F;
+D79E 0041;
+D7A0 0041;
+D7A2 0041;
+1113 0041;
+1114 0062;
+1115 0062;
+1117 0041;
+1119 0041;
+3140 0061;
+111B 0041;
+111C 0062;
+111D 0062;
+111E 0062;
+3173 003F;
+1121 003F;
+3144 0062;
+1122 0062;
+1123 0062;
+1125 0041;
+3176 003F;
+1128 0041;
+1129 0062;
+3178 003F;
+3179 003F;
+317A 003F;
+317B 003F;
+317C 003F;
+1130 0041;
+317D 003F;
+1133 0041;
+1135 0041;
+1136 0062;
+1138 0041;
+113A 0041;
+113C 0041;
+113E 0041;
+317F 003F;
+1141 0041;
+1143 0041;
+1145 0041;
+3180 003F;
+1148 0041;
+114A 0041;
+3181 003F;
+114D 0041;
+114F 0041;
+1151 0041;
+1153 0041;
+1155 0041;
+3184 003F;
+3185 003F;
+3186 003F;
+115F 0041;
+3164 0061;
+1161 003F;
+314F 0062;
+3150 0061;
+1163 003F;
+3151 0062;
+3152 0061;
+1165 003F;
+3153 0062;
+3154 0061;
+1167 003F;
+3155 0062;
+3156 0061;
+1169 003F;
+3157 0062;
+3158 0061;
+116B 003F;
+3159 0062;
+315A 0061;
+116D 003F;
+315B 0062;
+315C 0061;
+116F 003F;
+315D 0062;
+315E 0061;
+1171 003F;
+315F 0062;
+3160 0061;
+1173 003F;
+3161 0062;
+3162 0061;
+1175 003F;
+3163 0062;
+1177 0041;
+1179 0041;
+117B 0041;
+117D 0041;
+117F 0041;
+1181 0041;
+1183 0041;
+1184 0062;
+1185 0062;
+1187 0041;
+1188 0062;
+118A 0041;
+118C 0041;
+118E 0041;
+1190 0041;
+1191 0062;
+1192 0062;
+318C 003F;
+1195 0041;
+1197 0041;
+1199 0041;
+119B 0041;
+119D 0041;
+119E 0062;
+11A0 0041;
+11A1 0062;
+11A8 0041;
+11AA 003F;
+3133 0062;
+11AC 003F;
+3135 0062;
+3136 0061;
+11AE 0041;
+11B0 003F;
+313A 0062;
+313B 0061;
+11B2 003F;
+313C 0062;
+313D 0061;
+11B4 003F;
+313E 0062;
+313F 0061;
+11B6 0041;
+11B8 0041;
+11BA 0041;
+11BC 0041;
+11BE 0041;
+11C0 0041;
+11C2 0041;
+11C4 0041;
+11C6 0041;
+11C7 0062;
+11C8 0062;
+11CA 0041;
+3169 003F;
+11CD 0041;
+11CE 0062;
+11D0 0041;
+11D2 0041;
+11D3 0062;
+11D5 0041;
+316C 003F;
+11D8 0041;
+11D9 0062;
+11DB 0041;
+316F 003F;
+11DE 0041;
+11DF 0062;
+11E1 0041;
+11E3 0041;
+11E5 0041;
+11E7 0041;
+11E9 0041;
+11EB 0041;
+11ED 0041;
+11EF 0041;
+3182 003F;
+3183 003F;
+11F3 0041;
+11F5 0041;
+11F7 0041;
+11F9 0041;
+3042 003F;
+3303 0062;
+30A2 0041;
+FF71 0062;
+3301 0041;
+FF68 0021;
+32D1 003F;
+30A4 0041;
+FF72 0062;
+3305 0041;
+30A5 0021;
+FF69 003F;
+30A5 0061;
+3094 0061;
+32D2 0062;
+30A7 0021;
+FF74 003F;
+3048 0041;
+32D3 0041;
+3307 0061;
+3049 003F;
+330A 0041;
+30AA 0061;
+30AA 0062;
+304C 0334;
+304C 0021;
+3095 0061;
+32D5 0061;
+FF76 0062;
+330C 003F;
+330E 003F;
+304D 3099 0334;
+30AE 0021;
+30AD 0041;
+30AD 0062;
+3311 0021;
+3313 0021;
+3315 0021;
+3317 0021;
+30B0 0334;
+30AF 003F;
+30AF 0041;
+31F0 0062;
+3318 0062;
+331A 0062;
+30B1 3099 0334;
+3096 003F;
+331C 0061;
+30B1 0041;
+3051 0062;
+30B3 0334 3099;
+30B3 003F;
+3053 0061;
+30B4 0061;
+30FF 0061;
+3056 0334;
+3055 003F;
+FF7B 0061;
+FF7B 0062;
+3320 003F;
+3057 0021;
+FF7C 003F;
+FF7C 0061;
+30B7 0062;
+3321 0021;
+30BA 0334;
+30B9 003F;
+30B9 0041;
+31F2 0062;
+30BB 3099 0334;
+FF7E 003F;
+32DD 0061;
+305C 0062;
+3323 0041;
+FF7F 0021;
+305D 0061;
+30BE 0061;
+3060 0334;
+305F 003F;
+3324 0062;
+3060 0041;
+3061 3099 0334;
+30C2 0021;
+30C1 0041;
+30C1 0062;
+30C5 0334;
+3063 003F;
+3063 0041;
+FF82 0041;
+FF6F 0062;
+30C6 3099 0334;
+FF83 003F;
+32E2 0061;
+3067 0062;
+30C8 0334 3099;
+3068 003F;
+31F3 0041;
+30C9 0041;
+3326 0061;
+FF85 0021;
+FF85 0061;
+3328 0061;
+32E5 003F;
+30CB 0062;
+30CC 003F;
+FF87 0041;
+FF88 0021;
+FF88 0061;
+FF89 0021;
+FF89 0061;
+3329 0061;
+306F 309A 0334;
+3070 0021;
+30D0 003F;
+332C 0061;
+31F5 0061;
+30D0 0061;
+32E9 0062;
+3072 0334 3099;
+30D2 309A 0334;
+30D4 0021;
+3072 0061;
+3073 0061;
+30D2 0062;
+332E 0041;
+3330 0041;
+30D5 0334 3099;
+31F7 0021;
+30D5 003F;
+31F7 0041;
+30D6 0041;
+3076 0062;
+3333 003F;
+3335 003F;
+3078 0334 309A;
+32EC 0021;
+3079 003F;
+333C 003F;
+FF8D 0061;
+30DA 0061;
+30DA 0062;
+3337 0062;
+3339 0062;
+30DB 3099 0334;
+30DB 0021;
+FF8E 003F;
+3341 0062;
+30DB 0061;
+307D 0061;
+30DC 0062;
+333E 0061;
+3340 0061;
+32EE 003F;
+30DE 0062;
+3344 0061;
+3345 0061;
+3347 0061;
+32EF 003F;
+30DF 0062;
+3349 0061;
+30E0 0021;
+31FA 0061;
+30E0 0062;
+32F1 003F;
+FF92 0061;
+334B 0061;
+FF93 0021;
+FF93 0061;
+30E3 0021;
+FF94 003F;
+334F 0041;
+30E4 0061;
+30E4 0062;
+3085 003F;
+3086 0041;
+32F4 0041;
+3350 0061;
+3087 003F;
+3088 0041;
+32F5 0041;
+309F 0061;
+30E9 003F;
+FF97 0041;
+30EA 0021;
+31FC 0061;
+30EA 0062;
+3352 0061;
+30EB 003F;
+31FD 0061;
+30EB 0062;
+30EC 0021;
+31FE 0061;
+30EC 0062;
+3356 0061;
+30ED 003F;
+FF9B 0041;
+30F7 0334;
+30EE 003F;
+30EE 0041;
+308F 0062;
+3357 0062;
+32FC 003F;
+3090 0062;
+30F9 0021;
+32FD 0041;
+3092 0021;
+3092 0061;
+3092 0062;
+FF9D 003F;
+3105 0021;
+3106 0021;
+3107 0021;
+312A 0021;
+310A 0021;
+310B 0021;
+310D 0021;
+310E 0021;
+312B 0021;
+310F 0021;
+3110 0021;
+3111 0021;
+312C 0021;
+3114 0021;
+3116 0021;
+3117 0041;
+3119 0021;
+311A 0041;
+311B 0041;
+311C 0021;
+31A4 0021;
+311E 0021;
+311F 0021;
+3120 0041;
+3122 0021;
+3124 0021;
+3125 0021;
+31B1 0021;
+3126 0021;
+31B3 003F;
+3128 0021;
+31A8 0061;
+312D 0021;
+A001 0021;
+A003 0021;
+A005 0021;
+A007 0021;
+A009 0021;
+A00B 0021;
+A00D 0021;
+A00F 0021;
+A011 0021;
+A013 0021;
+A015 0021;
+A017 0021;
+A019 0021;
+A01B 0021;
+A01D 0021;
+A01F 0021;
+A021 0021;
+A023 0021;
+A025 0021;
+A027 0021;
+A029 0021;
+A02B 0021;
+A02D 0021;
+A02F 0021;
+A031 0021;
+A033 0021;
+A035 0021;
+A037 0021;
+A039 0021;
+A03B 0021;
+A03D 0021;
+A03F 0021;
+A041 0021;
+A043 0021;
+A045 0021;
+A047 0021;
+A049 0021;
+A04B 0021;
+A04D 0021;
+A04F 0021;
+A051 0021;
+A053 0021;
+A055 0021;
+A057 0021;
+A059 0021;
+A05B 0021;
+A05D 0021;
+A05F 0021;
+A061 0021;
+A063 0021;
+A065 0021;
+A067 0021;
+A069 0021;
+A06B 0021;
+A06D 0021;
+A06F 0021;
+A071 0021;
+A073 0021;
+A075 0021;
+A077 0021;
+A079 0021;
+A07B 0021;
+A07D 0021;
+A07F 0021;
+A081 0021;
+A083 0021;
+A085 0021;
+A087 0021;
+A089 0021;
+A08B 0021;
+A08D 0021;
+A08F 0021;
+A091 0021;
+A093 0021;
+A095 0021;
+A097 0021;
+A099 0021;
+A09B 0021;
+A09D 0021;
+A09F 0021;
+A0A1 0021;
+A0A3 0021;
+A0A5 0021;
+A0A7 0021;
+A0A9 0021;
+A0AB 0021;
+A0AD 0021;
+A0AF 0021;
+A0B1 0021;
+A0B3 0021;
+A0B5 0021;
+A0B7 0021;
+A0B9 0021;
+A0BB 0021;
+A0BD 0021;
+A0BF 0021;
+A0C1 0021;
+A0C3 0021;
+A0C5 0021;
+A0C7 0021;
+A0C9 0021;
+A0CB 0021;
+A0CD 0021;
+A0CF 0021;
+A0D1 0021;
+A0D3 0021;
+A0D5 0021;
+A0D7 0021;
+A0D9 0021;
+A0DB 0021;
+A0DD 0021;
+A0DF 0021;
+A0E1 0021;
+A0E3 0021;
+A0E5 0021;
+A0E7 0021;
+A0E9 0021;
+A0EB 0021;
+A0ED 0021;
+A0EF 0021;
+A0F1 0021;
+A0F3 0021;
+A0F5 0021;
+A0F7 0021;
+A0F9 0021;
+A0FB 0021;
+A0FD 0021;
+A0FF 0021;
+A101 0021;
+A103 0021;
+A105 0021;
+A107 0021;
+A109 0021;
+A10B 0021;
+A10D 0021;
+A10F 0021;
+A111 0021;
+A113 0021;
+A115 0021;
+A117 0021;
+A119 0021;
+A11B 0021;
+A11D 0021;
+A11F 0021;
+A121 0021;
+A123 0021;
+A125 0021;
+A127 0021;
+A129 0021;
+A12B 0021;
+A12D 0021;
+A12F 0021;
+A131 0021;
+A133 0021;
+A135 0021;
+A137 0021;
+A139 0021;
+A13B 0021;
+A13D 0021;
+A13F 0021;
+A141 0021;
+A143 0021;
+A145 0021;
+A147 0021;
+A149 0021;
+A14B 0021;
+A14D 0021;
+A14F 0021;
+A151 0021;
+A153 0021;
+A155 0021;
+A157 0021;
+A159 0021;
+A15B 0021;
+A15D 0021;
+A15F 0021;
+A161 0021;
+A163 0021;
+A165 0021;
+A167 0021;
+A169 0021;
+A16B 0021;
+A16D 0021;
+A16F 0021;
+A171 0021;
+A173 0021;
+A175 0021;
+A177 0021;
+A179 0021;
+A17B 0021;
+A17D 0021;
+A17F 0021;
+A181 0021;
+A183 0021;
+A185 0021;
+A187 0021;
+A189 0021;
+A18B 0021;
+A18D 0021;
+A18F 0021;
+A191 0021;
+A193 0021;
+A195 0021;
+A197 0021;
+A199 0021;
+A19B 0021;
+A19D 0021;
+A19F 0021;
+A1A1 0021;
+A1A3 0021;
+A1A5 0021;
+A1A7 0021;
+A1A9 0021;
+A1AB 0021;
+A1AD 0021;
+A1AF 0021;
+A1B1 0021;
+A1B3 0021;
+A1B5 0021;
+A1B7 0021;
+A1B9 0021;
+A1BB 0021;
+A1BD 0021;
+A1BF 0021;
+A1C1 0021;
+A1C3 0021;
+A1C5 0021;
+A1C7 0021;
+A1C9 0021;
+A1CB 0021;
+A1CD 0021;
+A1CF 0021;
+A1D1 0021;
+A1D3 0021;
+A1D5 0021;
+A1D7 0021;
+A1D9 0021;
+A1DB 0021;
+A1DD 0021;
+A1DF 0021;
+A1E1 0021;
+A1E3 0021;
+A1E5 0021;
+A1E7 0021;
+A1E9 0021;
+A1EB 0021;
+A1ED 0021;
+A1EF 0021;
+A1F1 0021;
+A1F3 0021;
+A1F5 0021;
+A1F7 0021;
+A1F9 0021;
+A1FB 0021;
+A1FD 0021;
+A1FF 0021;
+A201 0021;
+A203 0021;
+A205 0021;
+A207 0021;
+A209 0021;
+A20B 0021;
+A20D 0021;
+A20F 0021;
+A211 0021;
+A213 0021;
+A215 0021;
+A217 0021;
+A219 0021;
+A21B 0021;
+A21D 0021;
+A21F 0021;
+A221 0021;
+A223 0021;
+A225 0021;
+A227 0021;
+A229 0021;
+A22B 0021;
+A22D 0021;
+A22F 0021;
+A231 0021;
+A233 0021;
+A235 0021;
+A237 0021;
+A239 0021;
+A23B 0021;
+A23D 0021;
+A23F 0021;
+A241 0021;
+A243 0021;
+A245 0021;
+A247 0021;
+A249 0021;
+A24B 0021;
+A24D 0021;
+A24F 0021;
+A251 0021;
+A253 0021;
+A255 0021;
+A257 0021;
+A259 0021;
+A25B 0021;
+A25D 0021;
+A25F 0021;
+A261 0021;
+A263 0021;
+A265 0021;
+A267 0021;
+A269 0021;
+A26B 0021;
+A26D 0021;
+A26F 0021;
+A271 0021;
+A273 0021;
+A275 0021;
+A277 0021;
+A279 0021;
+A27B 0021;
+A27D 0021;
+A27F 0021;
+A281 0021;
+A283 0021;
+A285 0021;
+A287 0021;
+A289 0021;
+A28B 0021;
+A28D 0021;
+A28F 0021;
+A291 0021;
+A293 0021;
+A295 0021;
+A297 0021;
+A299 0021;
+A29B 0021;
+A29D 0021;
+A29F 0021;
+A2A1 0021;
+A2A3 0021;
+A2A5 0021;
+A2A7 0021;
+A2A9 0021;
+A2AB 0021;
+A2AD 0021;
+A2AF 0021;
+A2B1 0021;
+A2B3 0021;
+A2B5 0021;
+A2B7 0021;
+A2B9 0021;
+A2BB 0021;
+A2BD 0021;
+A2BF 0021;
+A2C1 0021;
+A2C3 0021;
+A2C5 0021;
+A2C7 0021;
+A2C9 0021;
+A2CB 0021;
+A2CD 0021;
+A2CF 0021;
+A2D1 0021;
+A2D3 0021;
+A2D5 0021;
+A2D7 0021;
+A2D9 0021;
+A2DB 0021;
+A2DD 0021;
+A2DF 0021;
+A2E1 0021;
+A2E3 0021;
+A2E5 0021;
+A2E7 0021;
+A2E9 0021;
+A2EB 0021;
+A2ED 0021;
+A2EF 0021;
+A2F1 0021;
+A2F3 0021;
+A2F5 0021;
+A2F7 0021;
+A2F9 0021;
+A2FB 0021;
+A2FD 0021;
+A2FF 0021;
+A301 0021;
+A303 0021;
+A305 0021;
+A307 0021;
+A309 0021;
+A30B 0021;
+A30D 0021;
+A30F 0021;
+A311 0021;
+A313 0021;
+A315 0021;
+A317 0021;
+A319 0021;
+A31B 0021;
+A31D 0021;
+A31F 0021;
+A321 0021;
+A323 0021;
+A325 0021;
+A327 0021;
+A329 0021;
+A32B 0021;
+A32D 0021;
+A32F 0021;
+A331 0021;
+A333 0021;
+A335 0021;
+A337 0021;
+A339 0021;
+A33B 0021;
+A33D 0021;
+A33F 0021;
+A341 0021;
+A343 0021;
+A345 0021;
+A347 0021;
+A349 0021;
+A34B 0021;
+A34D 0021;
+A34F 0021;
+A351 0021;
+A353 0021;
+A355 0021;
+A357 0021;
+A359 0021;
+A35B 0021;
+A35D 0021;
+A35F 0021;
+A361 0021;
+A363 0021;
+A365 0021;
+A367 0021;
+A369 0021;
+A36B 0021;
+A36D 0021;
+A36F 0021;
+A371 0021;
+A373 0021;
+A375 0021;
+A377 0021;
+A379 0021;
+A37B 0021;
+A37D 0021;
+A37F 0021;
+A381 0021;
+A383 0021;
+A385 0021;
+A387 0021;
+A389 0021;
+A38B 0021;
+A38D 0021;
+A38F 0021;
+A391 0021;
+A393 0021;
+A395 0021;
+A397 0021;
+A399 0021;
+A39B 0021;
+A39D 0021;
+A39F 0021;
+A3A1 0021;
+A3A3 0021;
+A3A5 0021;
+A3A7 0021;
+A3A9 0021;
+A3AB 0021;
+A3AD 0021;
+A3AF 0021;
+A3B1 0021;
+A3B3 0021;
+A3B5 0021;
+A3B7 0021;
+A3B9 0021;
+A3BB 0021;
+A3BD 0021;
+A3BF 0021;
+A3C1 0021;
+A3C3 0021;
+A3C5 0021;
+A3C7 0021;
+A3C9 0021;
+A3CB 0021;
+A3CD 0021;
+A3CF 0021;
+A3D1 0021;
+A3D3 0021;
+A3D5 0021;
+A3D7 0021;
+A3D9 0021;
+A3DB 0021;
+A3DD 0021;
+A3DF 0021;
+A3E1 0021;
+A3E3 0021;
+A3E5 0021;
+A3E7 0021;
+A3E9 0021;
+A3EB 0021;
+A3ED 0021;
+A3EF 0021;
+A3F1 0021;
+A3F3 0021;
+A3F5 0021;
+A3F7 0021;
+A3F9 0021;
+A3FB 0021;
+A3FD 0021;
+A3FF 0021;
+A401 0021;
+A403 0021;
+A405 0021;
+A407 0021;
+A409 0021;
+A40B 0021;
+A40D 0021;
+A40F 0021;
+A411 0021;
+A413 0021;
+A415 0021;
+A417 0021;
+A419 0021;
+A41B 0021;
+A41D 0021;
+A41F 0021;
+A421 0021;
+A423 0021;
+A425 0021;
+A427 0021;
+A429 0021;
+A42B 0021;
+A42D 0021;
+A42F 0021;
+A431 0021;
+A433 0021;
+A435 0021;
+A437 0021;
+A439 0021;
+A43B 0021;
+A43D 0021;
+A43F 0021;
+A441 0021;
+A443 0021;
+A445 0021;
+A447 0021;
+A449 0021;
+A44B 0021;
+A44D 0021;
+A44F 0021;
+A451 0021;
+A453 0021;
+A455 0021;
+A457 0021;
+A459 0021;
+A45B 0021;
+A45D 0021;
+A45F 0021;
+A461 0021;
+A463 0021;
+A465 0021;
+A467 0021;
+A469 0021;
+A46B 0021;
+A46D 0021;
+A46F 0021;
+A471 0021;
+A473 0021;
+A475 0021;
+A477 0021;
+A479 0021;
+A47B 0021;
+A47D 0021;
+A47F 0021;
+A481 0021;
+A483 0021;
+A485 0021;
+A487 0021;
+A489 0021;
+A48B 0021;
+10280 0021;
+10282 0021;
+10284 0021;
+10286 0021;
+10288 0021;
+1028A 0021;
+1028C 0021;
+1028E 0021;
+10290 0021;
+10292 0021;
+10294 0021;
+10296 0021;
+10298 0021;
+1029A 0021;
+1029C 0021;
+102A1 0021;
+102A3 0021;
+102A5 0021;
+102A7 0021;
+102A9 0021;
+102AB 0021;
+102AD 0021;
+102AF 0021;
+102B1 0021;
+102B3 0021;
+102B5 0021;
+102B7 0021;
+102B9 0021;
+102BB 0021;
+102BD 0021;
+102BF 0021;
+102C1 0021;
+102C3 0021;
+102C5 0021;
+102C7 0021;
+102C9 0021;
+102CB 0021;
+102CD 0021;
+102CF 0021;
+10920 0021;
+10922 0021;
+10924 0021;
+10926 0021;
+10928 0021;
+1092A 0021;
+1092C 0021;
+1092E 0021;
+10930 0021;
+10932 0021;
+10934 0021;
+10936 0021;
+10938 0021;
+10300 0021;
+10302 0021;
+10304 0021;
+10306 0021;
+10308 0021;
+1030A 0021;
+1030C 0021;
+1030E 0021;
+10310 0021;
+10312 0021;
+10314 0021;
+10316 0021;
+10318 0021;
+1031A 0021;
+1031C 0021;
+1031E 0021;
+10331 0021;
+10333 0021;
+10335 0021;
+10337 0021;
+10339 0021;
+1033B 0021;
+1033D 0021;
+1033F 0021;
+10341 0021;
+10343 0021;
+10345 0021;
+10347 0021;
+10349 0021;
+10428 0021;
+10429 0021;
+1042A 0021;
+1042B 0021;
+1042C 0021;
+1042D 0021;
+1042E 0021;
+1042F 0021;
+10430 0021;
+10431 0021;
+10432 0021;
+10433 0021;
+10434 0021;
+10435 0021;
+10436 0021;
+10437 0021;
+10438 0021;
+10439 0021;
+1043A 0021;
+1043B 0021;
+1043C 0021;
+1043D 0021;
+1043E 0021;
+1043F 0021;
+10440 0021;
+10441 0021;
+10442 0021;
+10443 0021;
+10444 0021;
+10445 0021;
+10446 0021;
+10447 0021;
+10448 0021;
+10449 0021;
+1044A 0021;
+1044B 0021;
+1044C 0021;
+1044D 0021;
+1044E 0021;
+1044F 0021;
+10450 0021;
+10452 0021;
+10454 0021;
+10456 0021;
+10458 0021;
+1045A 0021;
+1045C 0021;
+1045E 0021;
+10460 0021;
+10462 0021;
+10464 0021;
+10466 0021;
+10468 0021;
+1046A 0021;
+1046C 0021;
+1046E 0021;
+10470 0021;
+10472 0021;
+10474 0021;
+10476 0021;
+10478 0021;
+1047A 0021;
+1047C 0021;
+1047E 0021;
+10480 0021;
+10482 0021;
+10484 0021;
+10486 0021;
+10488 0021;
+1048A 0021;
+1048C 0021;
+1048E 0021;
+10490 0021;
+10492 0021;
+10494 0021;
+10496 0021;
+10498 0021;
+1049A 0021;
+1049C 0021;
+10000 0021;
+10002 0021;
+10004 0021;
+10006 0021;
+10008 0021;
+1000A 0021;
+1000D 0021;
+1000F 0021;
+10011 0021;
+10013 0021;
+10015 0021;
+10017 0021;
+10019 0021;
+1001B 0021;
+1001D 0021;
+1001F 0021;
+10021 0021;
+10023 0021;
+10025 0021;
+10028 0021;
+1002A 0021;
+1002C 0021;
+1002E 0021;
+10030 0021;
+10032 0021;
+10034 0021;
+10036 0021;
+10038 0021;
+1003A 0021;
+1003D 0021;
+10040 0021;
+10042 0021;
+10044 0021;
+10046 0021;
+10048 0021;
+1004A 0021;
+1004C 0021;
+10050 0021;
+10052 0021;
+10054 0021;
+10056 0021;
+10058 0021;
+1005A 0021;
+1005C 0021;
+10080 0021;
+10082 0021;
+10084 0021;
+10086 0021;
+10088 0021;
+1008A 0021;
+1008C 0021;
+1008E 0021;
+10090 0021;
+10092 0021;
+10094 0021;
+10096 0021;
+10098 0021;
+1009A 0021;
+1009C 0021;
+1009E 0021;
+100A0 0021;
+100A2 0021;
+100A4 0021;
+100A6 0021;
+100A8 0021;
+100AA 0021;
+100AC 0021;
+100AE 0021;
+100B0 0021;
+100B2 0021;
+100B4 0021;
+100B6 0021;
+100B8 0021;
+100BA 0021;
+100BC 0021;
+100BE 0021;
+100C0 0021;
+100C2 0021;
+100C4 0021;
+100C6 0021;
+100C8 0021;
+100CA 0021;
+100CC 0021;
+100CE 0021;
+100D0 0021;
+100D2 0021;
+100D4 0021;
+100D6 0021;
+100D8 0021;
+100DA 0021;
+100DC 0021;
+100DE 0021;
+100E0 0021;
+100E2 0021;
+100E4 0021;
+100E6 0021;
+100E8 0021;
+100EA 0021;
+100EC 0021;
+100EE 0021;
+100F0 0021;
+100F2 0021;
+100F4 0021;
+100F6 0021;
+100F8 0021;
+100FA 0021;
+10801 0021;
+10803 0021;
+10805 0021;
+1080A 0021;
+1080C 0021;
+1080E 0021;
+10810 0021;
+10812 0021;
+10814 0021;
+10816 0021;
+10818 0021;
+1081A 0021;
+1081C 0021;
+1081E 0021;
+10820 0021;
+10822 0021;
+10824 0021;
+10826 0021;
+10828 0021;
+1082A 0021;
+1082C 0021;
+1082E 0021;
+10830 0021;
+10832 0021;
+10834 0021;
+10837 0021;
+1083C 0021;
+10380 0021;
+10382 0021;
+10384 0021;
+10386 0021;
+10388 0021;
+1038A 0021;
+1038C 0021;
+1038E 0021;
+10390 0021;
+10392 0021;
+10394 0021;
+10396 0021;
+10398 0021;
+1039A 0021;
+1039C 0021;
+103A0 0021;
+103A2 0021;
+103A4 0021;
+103A6 0021;
+103A8 0021;
+103AA 0021;
+103AC 0021;
+103AE 0021;
+103B0 0021;
+103B2 0021;
+103B4 0021;
+103B6 0021;
+103B8 0021;
+103BA 0021;
+103BC 0021;
+103BE 0021;
+103C0 0021;
+103C2 0021;
+103C8 0021;
+103CA 0021;
+103CC 0021;
+103CE 0021;
+12000 0021;
+12002 0021;
+12004 0021;
+12006 0021;
+12008 0021;
+1200A 0021;
+1200C 0021;
+1200E 0021;
+12010 0021;
+12012 0021;
+12014 0021;
+12016 0021;
+12018 0021;
+1201A 0021;
+1201C 0021;
+1201E 0021;
+12020 0021;
+12022 0021;
+12024 0021;
+12026 0021;
+12028 0021;
+1202A 0021;
+1202C 0021;
+1202E 0021;
+12030 0021;
+12032 0021;
+12034 0021;
+12036 0021;
+12038 0021;
+1203A 0021;
+1203C 0021;
+1203E 0021;
+12040 0021;
+12042 0021;
+12044 0021;
+12046 0021;
+12048 0021;
+1204A 0021;
+1204C 0021;
+1204E 0021;
+12050 0021;
+12052 0021;
+12054 0021;
+12056 0021;
+12058 0021;
+1205A 0021;
+1205C 0021;
+1205E 0021;
+12060 0021;
+12062 0021;
+12064 0021;
+12066 0021;
+12068 0021;
+1206A 0021;
+1206C 0021;
+1206E 0021;
+12070 0021;
+12072 0021;
+12074 0021;
+12076 0021;
+12078 0021;
+1207A 0021;
+1207C 0021;
+1207E 0021;
+12080 0021;
+12082 0021;
+12084 0021;
+12086 0021;
+12088 0021;
+1208A 0021;
+1208C 0021;
+1208E 0021;
+12090 0021;
+12092 0021;
+12094 0021;
+12096 0021;
+12098 0021;
+1209A 0021;
+1209C 0021;
+1209E 0021;
+120A0 0021;
+120A2 0021;
+120A4 0021;
+120A6 0021;
+120A8 0021;
+120AA 0021;
+120AC 0021;
+120AE 0021;
+120B0 0021;
+120B2 0021;
+120B4 0021;
+120B6 0021;
+120B8 0021;
+120BA 0021;
+120BC 0021;
+120BE 0021;
+120C0 0021;
+120C2 0021;
+120C4 0021;
+120C6 0021;
+120C8 0021;
+120CA 0021;
+120CC 0021;
+120CE 0021;
+120D0 0021;
+120D2 0021;
+120D4 0021;
+120D6 0021;
+120D8 0021;
+120DA 0021;
+120DC 0021;
+120DE 0021;
+120E0 0021;
+120E2 0021;
+120E4 0021;
+120E6 0021;
+120E8 0021;
+120EA 0021;
+120EC 0021;
+120EE 0021;
+120F0 0021;
+120F2 0021;
+120F4 0021;
+120F6 0021;
+120F8 0021;
+120FA 0021;
+120FC 0021;
+120FE 0021;
+12100 0021;
+12102 0021;
+12104 0021;
+12106 0021;
+12108 0021;
+1210A 0021;
+1210C 0021;
+1210E 0021;
+12110 0021;
+12112 0021;
+12114 0021;
+12116 0021;
+12118 0021;
+1211A 0021;
+1211C 0021;
+1211E 0021;
+12120 0021;
+12122 0021;
+12124 0021;
+12126 0021;
+12128 0021;
+1212A 0021;
+1212C 0021;
+1212E 0021;
+12130 0021;
+12132 0021;
+12134 0021;
+12136 0021;
+12138 0021;
+1213A 0021;
+1213C 0021;
+1213E 0021;
+12140 0021;
+12142 0021;
+12144 0021;
+12146 0021;
+12148 0021;
+1214A 0021;
+1214C 0021;
+1214E 0021;
+12150 0021;
+12152 0021;
+12154 0021;
+12156 0021;
+12158 0021;
+1215A 0021;
+1215C 0021;
+1215E 0021;
+12160 0021;
+12162 0021;
+12164 0021;
+12166 0021;
+12168 0021;
+1216A 0021;
+1216C 0021;
+1216E 0021;
+12170 0021;
+12172 0021;
+12174 0021;
+12176 0021;
+12178 0021;
+1217A 0021;
+1217C 0021;
+1217E 0021;
+12180 0021;
+12182 0021;
+12184 0021;
+12186 0021;
+12188 0021;
+1218A 0021;
+1218C 0021;
+1218E 0021;
+12190 0021;
+12192 0021;
+12194 0021;
+12196 0021;
+12198 0021;
+1219A 0021;
+1219C 0021;
+1219E 0021;
+121A0 0021;
+121A2 0021;
+121A4 0021;
+121A6 0021;
+121A8 0021;
+121AA 0021;
+121AC 0021;
+121AE 0021;
+121B0 0021;
+121B2 0021;
+121B4 0021;
+121B6 0021;
+121B8 0021;
+121BA 0021;
+121BC 0021;
+121BE 0021;
+121C0 0021;
+121C2 0021;
+121C4 0021;
+121C6 0021;
+121C8 0021;
+121CA 0021;
+121CC 0021;
+121CE 0021;
+121D0 0021;
+121D2 0021;
+121D4 0021;
+121D6 0021;
+121D8 0021;
+121DA 0021;
+121DC 0021;
+121DE 0021;
+121E0 0021;
+121E2 0021;
+121E4 0021;
+121E6 0021;
+121E8 0021;
+121EA 0021;
+121EC 0021;
+121EE 0021;
+121F0 0021;
+121F2 0021;
+121F4 0021;
+121F6 0021;
+121F8 0021;
+121FA 0021;
+121FC 0021;
+121FE 0021;
+12200 0021;
+12202 0021;
+12204 0021;
+12206 0021;
+12208 0021;
+1220A 0021;
+1220C 0021;
+1220E 0021;
+12210 0021;
+12212 0021;
+12214 0021;
+12216 0021;
+12218 0021;
+1221A 0021;
+1221C 0021;
+1221E 0021;
+12220 0021;
+12222 0021;
+12224 0021;
+12226 0021;
+12228 0021;
+1222A 0021;
+1222C 0021;
+1222E 0021;
+12230 0021;
+12232 0021;
+12234 0021;
+12236 0021;
+12238 0021;
+1223A 0021;
+1223C 0021;
+1223E 0021;
+12240 0021;
+12242 0021;
+12244 0021;
+12246 0021;
+12248 0021;
+1224A 0021;
+1224C 0021;
+1224E 0021;
+12250 0021;
+12252 0021;
+12254 0021;
+12256 0021;
+12258 0021;
+1225A 0021;
+1225C 0021;
+1225E 0021;
+12260 0021;
+12262 0021;
+12264 0021;
+12266 0021;
+12268 0021;
+1226A 0021;
+1226C 0021;
+1226E 0021;
+12270 0021;
+12272 0021;
+12274 0021;
+12276 0021;
+12278 0021;
+1227A 0021;
+1227C 0021;
+1227E 0021;
+12280 0021;
+12282 0021;
+12284 0021;
+12286 0021;
+12288 0021;
+1228A 0021;
+1228C 0021;
+1228E 0021;
+12290 0021;
+12292 0021;
+12294 0021;
+12296 0021;
+12298 0021;
+1229A 0021;
+1229C 0021;
+1229E 0021;
+122A0 0021;
+122A2 0021;
+122A4 0021;
+122A6 0021;
+122A8 0021;
+122AA 0021;
+122AC 0021;
+122AE 0021;
+122B0 0021;
+122B2 0021;
+122B4 0021;
+122B6 0021;
+122B8 0021;
+122BA 0021;
+122BC 0021;
+122BE 0021;
+122C0 0021;
+122C2 0021;
+122C4 0021;
+122C6 0021;
+122C8 0021;
+122CA 0021;
+122CC 0021;
+122CE 0021;
+122D0 0021;
+122D2 0021;
+122D4 0021;
+122D6 0021;
+122D8 0021;
+122DA 0021;
+122DC 0021;
+122DE 0021;
+122E0 0021;
+122E2 0021;
+122E4 0021;
+122E6 0021;
+122E8 0021;
+122EA 0021;
+122EC 0021;
+122EE 0021;
+122F0 0021;
+122F2 0021;
+122F4 0021;
+122F6 0021;
+122F8 0021;
+122FA 0021;
+122FC 0021;
+122FE 0021;
+12300 0021;
+12302 0021;
+12304 0021;
+12306 0021;
+12308 0021;
+1230A 0021;
+1230C 0021;
+1230E 0021;
+12310 0021;
+12312 0021;
+12314 0021;
+12316 0021;
+12318 0021;
+1231A 0021;
+1231C 0021;
+1231E 0021;
+12320 0021;
+12322 0021;
+12324 0021;
+12326 0021;
+12328 0021;
+1232A 0021;
+1232C 0021;
+1232E 0021;
+12330 0021;
+12332 0021;
+12334 0021;
+12336 0021;
+12338 0021;
+1233A 0021;
+1233C 0021;
+1233E 0021;
+12340 0021;
+12342 0021;
+12344 0021;
+12346 0021;
+12348 0021;
+1234A 0021;
+1234C 0021;
+1234E 0021;
+12350 0021;
+12352 0021;
+12354 0021;
+12356 0021;
+12358 0021;
+1235A 0021;
+1235C 0021;
+1235E 0021;
+12360 0021;
+12362 0021;
+12364 0021;
+12366 0021;
+12368 0021;
+1236A 0021;
+1236C 0021;
+1236E 0021;
+2F00 003F;
+3192 0041;
+4E01 0041;
+4E03 0021;
+4E04 0021;
+3282 0021;
+32A4 0021;
+32A6 0021;
+F967 0021;
+FA70 0021;
+2EA6 0021;
+32A5 0041;
+2F02 0021;
+2F801 0021;
+2F800 0021;
+2F802 0021;
+2E84 003F;
+2E83 0021;
+3288 0021;
+2F05 0021;
+2F06 0021;
+3193 0061;
+2F07 0021;
+2F08 0021;
+2E85 0021;
+2F819 0021;
+32AD 0021;
+2F804 0021;
+F92D 0021;
+FA30 0021;
+2F806 0021;
+2F807 0021;
+2F808 0021;
+2F80B 0021;
+FA31 0021;
+329D 0021;
+FA0C 0021;
+FA32 0021;
+2F80F 0021;
+2F0A 0021;
+FA72 0021;
+2F0B 0021;
+F9D1 0021;
+2F811 0021;
+2F0C 0021;
+2F815 0021;
+2F8D3 0021;
+2F817 0021;
+2F818 0021;
+2F81A 0021;
+2F81B 0061;
+F979 0021;
+F954 0021;
+2F0F 0021;
+2F81D 0021;
+2F11 0021;
+2E89 0021;
+FA00 0021;
+F99C 0021;
+F9FF 0021;
+2F821 0021;
+2F823 0021;
+F98A 0021;
+F99D 0021;
+3298 0021;
+2F825 0061;
+2F826 0061;
+F92F 0021;
+2F827 0061;
+2F13 0021;
+2F828 0061;
+2F82A 0021;
+F963 0021;
+2F15 0021;
+32A9 0021;
+2F17 0021;
+3289 0061;
+303A 0021;
+FA35 0021;
+32AF 0021;
+2F18 0021;
+2F19 0021;
+329E 0021;
+F91C 0021;
+2F831 0021;
+2F832 0041;
+2F1A 0041;
+F96B 0021;
+2F836 0021;
+2F1D 0021;
+2F839 0021;
+32A8 0021;
+3294 0021;
+F9ED 0021;
+F980 0021;
+2F83F 0021;
+2F840 0021;
+2F841 0021;
+2F843 0021;
+2F844 0021;
+2F846 0061;
+FA7A 0021;
+FA36 0021;
+2F848 0021;
+FA0D 0021;
+FA7B 0021;
+2F84C 0061;
+FA38 0021;
+2F1E 0021;
+3283 0041;
+2F84B 0021;
+2F1F 0021;
+319E 0021;
+2F852 0021;
+2F854 0021;
+2F856 0021;
+FA10 0021;
+F96C 0021;
+2F858 0021;
+F94A 0021;
+2F20 0021;
+2F85A 0021;
+2F21 0021;
+2F22 0021;
+2F85D 0021;
+2F85E 0021;
+337D 0021;
+FA7E 0021;
+F909 0021;
+2F85F 0021;
+329B 003F;
+2F865 0021;
+2F863 0021;
+FA80 0021;
+2F986 0021;
+FA81 0021;
+2F86B 0061;
+32AB 0021;
+FA04 0021;
+2F86D 0021;
+F95F 0021;
+F9AA 0041;
+2F870 0021;
+2F872 0021;
+2F29 0021;
+2E8D 0061;
+2E90 003F;
+2E8E 0041;
+2E8F 0041;
+F9BD 0021;
+F94B 0021;
+F9DF 0021;
+2F2C 003F;
+2F2D 0021;
+2F879 0021;
+2F87C 0021;
+2F87F 0021;
+2F880 0021;
+F9AB 0021;
+2F881 0021;
+2F2F 0021;
+2F30 0021;
+2F884 0021;
+2F885 0021;
+2F887 0021;
+337B 0021;
+2E93 0021;
+2F34 0021;
+2F88B 0021;
+2F88D 0021;
+F928 0021;
+FA82 0021;
+FA83 0021;
+2F35 0021;
+2F890 0041;
+2F37 0021;
+2F894 0021;
+2F39 0021;
+2E94 0021;
+2F3A 0021;
+FA84 0021;
+2F3B 0021;
+2F89C 0021;
+FA85 0021;
+2F3C 0041;
+2F89D 0021;
+F9A3 0021;
+F960 0021;
+2F8A0 0021;
+2F8A3 0061;
+FA86 0021;
+FA88 0021;
+2F8A6 0021;
+2F8A9 0061;
+2F8A8 0061;
+FA3E 0021;
+FA3F 0021;
+FA89 0041;
+2F8AD 0021;
+2F8AC 0021;
+FA40 0021;
+FA8B 0041;
+2F8B1 0061;
+2F3D 0021;
+2F8B3 0021;
+FA8C 0021;
+2F3F 0021;
+2F8B4 0021;
+F925 0021;
+FA02 0021;
+2F8BA 0021;
+2F8B9 0021;
+2F8BB 0021;
+2F8BC 0021;
+2F8C1 0021;
+2F8C0 0021;
+FA8E 0021;
+FA8F 0021;
+2F8C6 0021;
+F991 0021;
+F930 0021;
+2F41 0021;
+FA41 0021;
+FA90 0021;
+F969 0021;
+2F43 0021;
+2F44 0021;
+F983 0021;
+2E9B 0021;
+2F8CB 0021;
+2E9C 003F;
+337E 0021;
+337C 0021;
+FA12 0021;
+F9C5 0021;
+2F8CF 0061;
+FA06 0021;
+2F48 0021;
+2F8CC 0021;
+2F49 0021;
+2E9D 0061;
+F929 0021;
+FA92 0041;
+2F8D9 0061;
+2F4A 0021;
+F9E1 0021;
+FA94 0021;
+F9C8 0021;
+F9F4 0021;
+2F8DF 0021;
+2F8E5 0021;
+337F 0021;
+F97A 0021;
+2F8E2 0061;
+F9E2 0021;
+2F8E8 0021;
+2F8EA 0021;
+F9BF 003F;
+F94C 0021;
+F931 0021;
+F91D 0021;
+2F8EF 0021;
+2F4C 0021;
+2F8F3 0021;
+FA95 0021;
+2E9E 0021;
+F9A5 0021;
+F970 0021;
+FA96 0041;
+2F4F 0021;
+2F50 0021;
+2F52 0021;
+2F53 0021;
+2F54 0041;
+2EA2 0021;
+2F8FE 0021;
+2F8FC 0021;
+2F8FD 0021;
+329F 0021;
+F915 0021;
+2F907 0021;
+F9CA 0021;
+FA97 0041;
+F92A 0021;
+2F901 0061;
+2F905 0021;
+F94D 0021;
+2F90E 0021;
+2F908 0021;
+F9CB 0021;
+2F90C 0021;
+2F90B 0061;
+FA98 0021;
+FA47 0021;
+F992 0021;
+2F912 0021;
+F984 0021;
+FA9B 0021;
+2F913 0021;
+2F55 0021;
+2EA3 0021;
+2F919 0021;
+F9FB 0021;
+F99F 0021;
+2F91C 0021;
+FA48 0021;
+2F91E 0021;
+F9EE 0021;
+F91E 0021;
+2F56 0021;
+2EA5 003F;
+FA9E 0021;
+2F57 0021;
+2F59 0021;
+2F922 0021;
+2F5C 0021;
+F946 0021;
+2F924 0021;
+2F5D 0021;
+FA9F 0021;
+F92B 0021;
+FAA0 0061;
+2F928 0021;
+F961 0021;
+2F5F 0021;
+2F929 0041;
+F9AD 0021;
+F9E4 0021;
+FA4A 0021;
+2F92F 0021;
+FAA1 0021;
+2F931 0021;
+F9EF 0021;
+2F60 0021;
+FAA2 0021;
+2F63 0021;
+2F64 0021;
+3199 0021;
+FAA3 0021;
+F9CD 0021;
+F962 0021;
+2F66 0021;
+2F67 0021;
+2F93A 0021;
+FAA5 0021;
+F90E 0021;
+2F69 0021;
+2F6B 0021;
+FAA6 0061;
+32AC 0021;
+2F6C 0021;
+FAA8 0021;
+F96D 0021;
+2F946 0021;
+FAAA 0021;
+2F948 0061;
+FA9D 0021;
+2F6E 0021;
+2F94E 0021;
+F93B 0021;
+FA4B 0021;
+FAAB 0021;
+F964 0021;
+2F70 0021;
+2EAD 0021;
+FA4C 0021;
+FA4E 0021;
+FA4F 0021;
+2F953 0061;
+FA51 0041;
+FA1A 0021;
+FA52 0021;
+FA1B 0021;
+F9B6 0021;
+2F72 0021;
+3299 0021;
+F956 0021;
+2F959 0061;
+2F95B 0021;
+FA55 0021;
+F9F7 0021;
+2F95F 0021;
+2F75 0041;
+FA56 0021;
+2F962 0021;
+F9A6 0021;
+2F76 0021;
+F9F9 0021;
+2F966 0021;
+2F969 0021;
+2F968 0021;
+2EAF 0021;
+F9CF 0021;
+F94F 0021;
+2F96C 0021;
+F957 0021;
+F996 0021;
+FA57 0041;
+FA58 0021;
+FA59 0021;
+2EB0 0021;
+FAB1 0021;
+2EB2 0021;
+2EB1 0021;
+2EB4 0061;
+F9E6 0021;
+F90F 0021;
+2EB7 003F;
+2EB8 0021;
+F9AF 0021;
+FA1E 0041;
+F934 0021;
+2EB9 0021;
+2F97A 003F;
+2F7D 0021;
+2F7F 0021;
+2F97D 0021;
+2F97F 0021;
+2F80 0021;
+2EBA 0021;
+2F81 0041;
+2F8D6 0021;
+2F983 0021;
+F926 0021;
+F9F6 0021;
+FA5C 0021;
+2F85 0021;
+2F893 0021;
+2F98C 0021;
+2F87 0021;
+2F89 0021;
+2F8A 0021;
+FA5D 0021;
+FA5D 0061;
+FA5D 0062;
+2F98F 0021;
+2F993 0021;
+2F995 0021;
+2F998 0061;
+2F999 0021;
+F9FE 0021;
+2F9A0 0021;
+2F99B 0021;
+F93E 0021;
+2F9A2 0021;
+2F99E 0021;
+F958 0021;
+F96E 0021;
+2F99F 0061;
+2F9A8 0021;
+F9C2 0021;
+2F9AC 0021;
+F9F0 0021;
+FA20 0021;
+F910 0021;
+2EC1 0021;
+F936 0021;
+2F9B5 0021;
+2F8D 0021;
+2F9B7 0021;
+2F9B9 0021;
+2F9BD 0021;
+2F9BB 0061;
+F911 0021;
+2F9C1 0021;
+2F8E 0021;
+FA08 0041;
+2F9C4 0021;
+2EC2 0021;
+F9E7 0021;
+2F9C7 0021;
+F912 0021;
+FA60 0021;
+F924 0021;
+2EC4 0021;
+FAB7 0021;
+FA0A 0041;
+FAB8 0061;
+2EC6 0021;
+2EC7 0061;
+2F9CF 0021;
+F9A1 0061;
+FABB 0021;
+F941 0021;
+2F9D0 0061;
+FABA 0061;
+FABD 0061;
+FABC 0061;
+FABF 0061;
+F95A 0021;
+2F9D1 0061;
+2F95 0021;
+F900 0021;
+2F9D2 0041;
+2F99 0021;
+2F9D4 0021;
+F948 0021;
+F903 0021;
+FA65 0021;
+2F9D6 0021;
+2F9A 0021;
+2F9D7 0021;
+2F9C 0041;
+2F9DA 0021;
+2F9DC 0021;
+F902 0021;
+2F9DE 0021;
+F9D7 0021;
+2F9DF 0061;
+F98D 0021;
+2F9F 0021;
+F971 0021;
+2FA1 0021;
+2ECC 003F;
+2ECE 0041;
+FA25 0021;
+329C 0021;
+F9C3 0021;
+2FA2 0021;
+2F9E2 0021;
+2F9E3 0021;
+2F9E4 0021;
+2FA3 0021;
+FAC4 0021;
+2FA4 0021;
+F9E9 0041;
+F90A 0021;
+328E 0061;
+2F9E7 0021;
+2F9EA 0021;
+2F9E9 0021;
+F99B 0021;
+2F9EC 0021;
+2ED1 0021;
+2ED2 0021;
+2FA8 0021;
+F986 0021;
+2ED4 0021;
+2FA9 0041;
+F9C6 0021;
+FA09 0021;
+F9D3 0021;
+F9DC 0021;
+2FAA 0021;
+2FAB 0021;
+F9EA 0021;
+FAC7 0061;
+2FAC 0041;
+F949 0021;
+F938 0021;
+2FAD 0021;
+FA1C 0021;
+2FAE 0021;
+2FB0 0021;
+FAC9 0021;
+2ED9 0021;
+2FB3 0021;
+FACA 0061;
+32A0 0021;
+2F9FF 003F;
+F9B4 0021;
+FA6A 0021;
+F9D0 0021;
+2FB5 0021;
+2FB6 0021;
+2EDD 0021;
+2EDF 0021;
+2FA02 0021;
+FA2B 0021;
+2FA04 0021;
+2FB8 0021;
+2FB9 0021;
+2FBA 0021;
+F91A 0021;
+F987 0021;
+2FBB 0021;
+2FBC 0021;
+FACD 0021;
+2FBE 0021;
+2FC0 0021;
+2FC1 0041;
+F939 0021;
+F9F2 0021;
+2FC3 0021;
+2FA0F 0021;
+F93A 0021;
+2EE6 0021;
+2FC4 0041;
+F940 0041;
+F9F3 0021;
+2EE8 0021;
+2FA15 0041;
+2EE9 0021;
+F989 0021;
+2FA17 0021;
+2FCC 0021;
+2FA18 0041;
+2FCD 0021;
+2FCE 0021;
+2FCF 0021;
+2FA1C 0041;
+2FD1 0021;
+2EEC 0021;
+2FD2 0041;
+F9C4 0021;
+2EEF 0061;
+2EF0 0021;
+2EF2 0021;
+F907 0041;
+F908 0062;
+9FA0 0021;
+9FA1 0021;
+9FA3 0021;
+9FA5 0021;
+FA0F 0021;
+FA13 0021;
+FA1F 0021;
+FA23 0021;
+FA27 0021;
+FA29 0021;
+3401 0021;
+3403 0021;
+3405 0021;
+3407 0021;
+3409 0021;
+340B 0021;
+340D 0021;
+340F 0021;
+3411 0021;
+3413 0021;
+3415 0021;
+3417 0021;
+3419 0021;
+341B 0021;
+341D 0021;
+341F 0021;
+3421 0021;
+3423 0021;
+3425 0021;
+3427 0021;
+3429 0021;
+342B 0021;
+342D 0021;
+342F 0021;
+3431 0021;
+3433 0021;
+3435 0021;
+3437 0021;
+3439 0021;
+343B 0021;
+343D 0021;
+343F 0021;
+3441 0021;
+3443 0021;
+3445 0021;
+3447 0021;
+3449 0021;
+344B 0021;
+344D 0021;
+344F 0021;
+3451 0021;
+3453 0021;
+3455 0021;
+3457 0021;
+3459 0021;
+345B 0021;
+345D 0021;
+345F 0021;
+3461 0021;
+3463 0021;
+3465 0021;
+3467 0021;
+3469 0021;
+346B 0021;
+346D 0021;
+346F 0021;
+3471 0021;
+3473 0021;
+3475 0021;
+3477 0021;
+3479 0021;
+347B 0021;
+347D 0021;
+347F 0021;
+3481 0021;
+3483 0021;
+3485 0021;
+3487 0021;
+3489 0021;
+348B 0021;
+348D 0021;
+348F 0021;
+3491 0021;
+3493 0021;
+3495 0021;
+3497 0021;
+3499 0021;
+349B 0021;
+349D 0021;
+2F80C 0061;
+34A0 0021;
+34A2 0021;
+34A4 0021;
+34A6 0021;
+34A8 0021;
+34AA 0021;
+34AC 0021;
+34AE 0021;
+34B0 0021;
+34B2 0021;
+34B4 0021;
+34B6 0021;
+34B8 0021;
+2F813 0061;
+34BB 0021;
+34BC 0021;
+34BE 0021;
+34C0 0021;
+34C2 0021;
+34C4 0021;
+34C6 0021;
+34C8 0021;
+34CA 0021;
+34CC 0021;
+34CE 0021;
+34D0 0021;
+34D2 0021;
+34D4 0021;
+34D6 0021;
+34D8 0021;
+34DA 0021;
+34DC 0021;
+34DE 0021;
+2F81F 0061;
+34E1 0021;
+34E3 0021;
+34E5 0021;
+34E7 0021;
+34E9 0021;
+34EB 0021;
+34ED 0021;
+34EF 0021;
+34F1 0021;
+34F3 0021;
+34F5 0021;
+34F7 0021;
+34F9 0021;
+34FB 0021;
+34FD 0021;
+34FF 0021;
+3501 0021;
+3503 0021;
+3505 0021;
+3507 0021;
+3509 0021;
+350B 0021;
+350D 0021;
+350F 0021;
+3511 0021;
+3513 0021;
+3515 0021;
+3516 0021;
+3518 0021;
+351A 0021;
+351C 0021;
+351E 0021;
+3520 0021;
+3522 0021;
+3524 0021;
+3526 0021;
+3528 0021;
+352A 0021;
+352C 0021;
+352E 0021;
+3530 0021;
+3532 0021;
+3534 0021;
+3536 0021;
+3538 0021;
+353A 0021;
+353C 0021;
+353E 0021;
+3540 0021;
+3542 0021;
+3544 0021;
+3546 0021;
+3548 0021;
+354A 0021;
+354C 0021;
+354E 0021;
+3550 0021;
+3552 0021;
+3554 0021;
+3556 0021;
+3558 0021;
+355A 0021;
+355C 0021;
+355E 0021;
+3560 0021;
+3562 0021;
+3564 0021;
+3566 0021;
+3568 0021;
+356A 0021;
+356C 0021;
+356E 0021;
+3570 0021;
+3572 0021;
+3574 0021;
+3576 0021;
+3578 0021;
+357A 0021;
+357C 0021;
+357E 0021;
+3580 0021;
+3582 0021;
+3584 0021;
+3586 0021;
+3588 0021;
+358A 0021;
+358C 0021;
+358E 0021;
+3590 0021;
+3592 0021;
+3594 0021;
+3596 0021;
+3598 0021;
+359A 0021;
+359C 0021;
+359E 0021;
+35A0 0021;
+35A2 0021;
+35A4 0021;
+35A6 0021;
+35A8 0021;
+35AA 0021;
+35AC 0021;
+35AE 0021;
+35B0 0021;
+35B2 0021;
+35B4 0021;
+35B6 0021;
+35B8 0021;
+35BA 0021;
+35BC 0021;
+35BE 0021;
+35C0 0021;
+35C2 0021;
+35C4 0021;
+35C6 0021;
+35C8 0021;
+35CA 0021;
+35CC 0021;
+35CE 0021;
+35D0 0021;
+35D2 0021;
+35D4 0021;
+35D6 0021;
+35D8 0021;
+35DA 0021;
+35DC 0021;
+35DE 0021;
+35E0 0021;
+35E2 0021;
+35E4 0021;
+35E6 0021;
+35E8 0021;
+35EA 0021;
+35EC 0021;
+35EE 0021;
+35F0 0021;
+35F2 0021;
+35F4 0021;
+35F6 0021;
+35F8 0021;
+35FA 0021;
+35FC 0021;
+35FE 0021;
+3600 0021;
+3602 0021;
+3604 0021;
+3606 0021;
+3608 0021;
+360A 0021;
+360C 0021;
+360E 0021;
+3610 0021;
+3612 0021;
+3614 0021;
+3616 0021;
+3618 0021;
+361A 0021;
+361C 0021;
+361E 0021;
+3620 0021;
+3622 0021;
+3624 0021;
+3626 0021;
+3628 0021;
+362A 0021;
+362C 0021;
+362E 0021;
+3630 0021;
+3632 0021;
+3634 0021;
+3636 0021;
+3638 0021;
+363A 0021;
+363C 0021;
+363E 0021;
+3640 0021;
+3642 0021;
+3644 0021;
+3646 0021;
+3648 0021;
+364A 0021;
+364C 0021;
+364E 0021;
+3650 0021;
+3652 0021;
+3654 0021;
+3656 0021;
+3658 0021;
+365A 0021;
+365C 0021;
+365E 0021;
+3660 0021;
+3662 0021;
+3664 0021;
+3666 0021;
+3668 0021;
+366A 0021;
+366C 0021;
+366E 0021;
+3670 0021;
+3672 0021;
+3674 0021;
+3676 0021;
+3678 0021;
+367A 0021;
+367C 0021;
+367E 0021;
+3680 0021;
+3682 0021;
+3684 0021;
+3686 0021;
+3688 0021;
+368A 0021;
+368C 0021;
+368E 0021;
+3690 0021;
+3692 0021;
+3694 0021;
+3696 0021;
+3698 0021;
+369A 0021;
+369C 0021;
+369E 0021;
+36A0 0021;
+36A2 0021;
+36A4 0021;
+36A6 0021;
+36A8 0021;
+36AA 0021;
+36AC 0021;
+36AE 0021;
+36B0 0021;
+36B2 0021;
+36B4 0021;
+36B6 0021;
+36B8 0021;
+36BA 0021;
+36BC 0021;
+36BE 0021;
+36C0 0021;
+36C2 0021;
+36C4 0021;
+36C6 0021;
+36C8 0021;
+36CA 0021;
+36CC 0021;
+36CE 0021;
+36D0 0021;
+36D2 0021;
+36D4 0021;
+36D6 0021;
+36D8 0021;
+36DA 0021;
+36DC 0021;
+36DE 0021;
+36E0 0021;
+36E2 0021;
+36E4 0021;
+36E6 0021;
+36E8 0021;
+36EA 0021;
+36EC 0021;
+36EE 0021;
+36EF 0021;
+36F1 0021;
+36F3 0021;
+36F5 0021;
+36F7 0021;
+36F9 0021;
+36FB 0021;
+2F868 0061;
+36FE 0021;
+3700 0021;
+3702 0021;
+3704 0021;
+3706 0021;
+3708 0021;
+370A 0021;
+370C 0021;
+370E 0021;
+3710 0021;
+3712 0021;
+3714 0021;
+3716 0021;
+3718 0021;
+371A 0021;
+371C 0021;
+371E 0021;
+3720 0021;
+3722 0021;
+3724 0021;
+3726 0021;
+3728 0021;
+372A 0021;
+372C 0021;
+372E 0021;
+3730 0021;
+3732 0021;
+3734 0021;
+3736 0021;
+3738 0021;
+373A 0021;
+373C 0021;
+373E 0021;
+3740 0021;
+3742 0021;
+3744 0021;
+3746 0021;
+3748 0021;
+374A 0021;
+374C 0021;
+374E 0021;
+3750 0021;
+3752 0021;
+3754 0021;
+3756 0021;
+3758 0021;
+375A 0021;
+375C 0021;
+375E 0021;
+3760 0021;
+3762 0021;
+3764 0021;
+3766 0021;
+3768 0021;
+376A 0021;
+376C 0021;
+376E 0021;
+3770 0021;
+3772 0021;
+3774 0021;
+3776 0021;
+3778 0021;
+377A 0021;
+377C 0021;
+377E 0021;
+3780 0021;
+2F876 0061;
+3783 0021;
+3785 0021;
+3787 0021;
+3789 0021;
+378B 0021;
+378D 0021;
+378F 0021;
+3791 0021;
+3793 0021;
+3795 0021;
+3797 0021;
+3799 0021;
+379B 0021;
+379D 0021;
+379F 0021;
+37A1 0021;
+37A3 0021;
+37A5 0021;
+37A7 0021;
+37A9 0021;
+37AB 0021;
+37AD 0021;
+37AF 0021;
+37B1 0021;
+37B3 0021;
+37B5 0021;
+37B7 0021;
+37B9 0021;
+37BB 0021;
+37BD 0021;
+37BF 0021;
+37C1 0021;
+37C3 0021;
+37C5 0021;
+37C7 0021;
+37C9 0021;
+37CB 0021;
+37CD 0021;
+37CF 0021;
+37D1 0021;
+37D3 0021;
+37D5 0021;
+37D7 0021;
+37D9 0021;
+37DB 0021;
+37DD 0021;
+37DF 0021;
+37E1 0021;
+37E3 0021;
+37E5 0021;
+37E7 0021;
+37E9 0021;
+37EB 0021;
+37ED 0021;
+37EF 0021;
+37F1 0021;
+37F3 0021;
+37F5 0021;
+37F7 0021;
+37F9 0021;
+37FB 0021;
+37FD 0021;
+37FF 0021;
+3801 0021;
+3803 0021;
+3805 0021;
+3807 0021;
+3809 0021;
+380B 0021;
+380D 0021;
+380F 0021;
+3811 0021;
+3813 0021;
+3815 0021;
+3817 0021;
+3819 0021;
+381B 0021;
+381D 0021;
+381F 0021;
+3821 0021;
+3823 0021;
+3825 0021;
+3827 0021;
+3829 0021;
+382B 0021;
+382D 0021;
+382F 0021;
+3830 0021;
+3832 0021;
+3834 0021;
+3836 0021;
+3838 0021;
+383A 0021;
+383C 0021;
+383E 0021;
+3840 0021;
+3842 0021;
+3844 0021;
+3846 0021;
+3848 0021;
+384A 0021;
+384C 0021;
+384E 0021;
+3850 0021;
+3852 0021;
+3854 0021;
+3856 0021;
+3858 0021;
+385A 0021;
+385C 0021;
+385E 0021;
+3860 0021;
+3862 0021;
+3863 0021;
+3865 0021;
+3867 0021;
+3869 0021;
+386B 0021;
+386D 0021;
+386F 0021;
+3871 0021;
+3873 0021;
+3875 0021;
+3877 0021;
+3879 0021;
+387B 0021;
+2F88A 0061;
+387E 0021;
+3880 0021;
+3882 0021;
+3884 0021;
+3886 0021;
+3888 0021;
+388A 0021;
+388C 0021;
+388E 0021;
+3890 0021;
+3892 0021;
+3894 0021;
+3896 0021;
+3898 0021;
+389A 0021;
+389C 0021;
+389E 0021;
+38A0 0021;
+38A2 0021;
+38A4 0021;
+38A6 0021;
+38A8 0021;
+38AA 0021;
+38AC 0021;
+38AE 0021;
+38B0 0021;
+38B2 0021;
+38B4 0021;
+38B6 0021;
+38B8 0021;
+38BA 0021;
+38BC 0021;
+38BE 0021;
+38C0 0021;
+38C2 0021;
+38C4 0021;
+38C6 0021;
+2F896 0061;
+38C9 0021;
+38CB 0021;
+38CD 0021;
+38CF 0021;
+38D1 0021;
+38D3 0021;
+38D5 0021;
+38D7 0021;
+38D9 0021;
+38DB 0021;
+38DD 0021;
+38DF 0021;
+38E1 0021;
+38E3 0021;
+38E4 0021;
+38E6 0021;
+38E8 0021;
+38EA 0021;
+38EC 0021;
+38EE 0021;
+38F0 0021;
+38F2 0021;
+38F4 0021;
+38F6 0021;
+38F8 0021;
+38FA 0021;
+38FC 0021;
+38FE 0021;
+3900 0021;
+3902 0021;
+3904 0021;
+3906 0021;
+3908 0021;
+390A 0021;
+390C 0021;
+390E 0021;
+3910 0021;
+3912 0021;
+3914 0021;
+3916 0021;
+3918 0021;
+391A 0021;
+391C 0021;
+391D 0021;
+391F 0021;
+3921 0021;
+3923 0021;
+3925 0021;
+3927 0021;
+3929 0021;
+392B 0021;
+392D 0021;
+392F 0021;
+3931 0021;
+3933 0021;
+3935 0021;
+3937 0021;
+3939 0021;
+2F8A1 0061;
+393C 0021;
+393E 0021;
+3940 0021;
+3942 0021;
+3944 0021;
+3946 0021;
+3948 0021;
+394A 0021;
+394C 0021;
+394E 0021;
+3950 0021;
+3952 0021;
+3954 0021;
+3956 0021;
+3958 0021;
+395A 0021;
+395C 0021;
+395E 0021;
+3960 0021;
+3962 0021;
+3964 0021;
+3966 0021;
+3968 0021;
+396A 0021;
+396C 0021;
+396E 0021;
+3970 0021;
+3972 0021;
+3974 0021;
+3976 0021;
+3978 0021;
+397A 0021;
+397C 0021;
+397E 0021;
+3980 0021;
+3982 0021;
+3984 0021;
+3986 0021;
+3988 0021;
+398A 0021;
+398C 0021;
+398E 0021;
+3990 0021;
+3992 0021;
+3994 0021;
+3996 0021;
+3998 0021;
+399A 0021;
+399C 0021;
+399E 0021;
+39A0 0021;
+39A2 0021;
+39A4 0021;
+39A6 0021;
+39A8 0021;
+39AA 0021;
+39AC 0021;
+39AE 0021;
+39B0 0021;
+39B2 0021;
+39B4 0021;
+39B6 0021;
+39B8 0021;
+39BA 0021;
+39BC 0021;
+39BE 0021;
+39C0 0021;
+39C2 0021;
+39C4 0021;
+39C6 0021;
+39C8 0021;
+39CA 0021;
+39CC 0021;
+39CE 0021;
+39D0 0021;
+39D2 0021;
+39D4 0021;
+39D6 0021;
+39D8 0021;
+39DA 0021;
+39DC 0021;
+39DE 0021;
+39E0 0021;
+39E2 0021;
+39E4 0021;
+39E6 0021;
+39E8 0021;
+39EA 0021;
+39EC 0021;
+39EE 0021;
+39F0 0021;
+39F2 0021;
+39F4 0021;
+39F6 0021;
+39F8 0021;
+39FA 0021;
+39FC 0021;
+39FE 0021;
+3A00 0021;
+3A02 0021;
+3A04 0021;
+3A06 0021;
+3A08 0021;
+3A0A 0021;
+3A0C 0021;
+3A0E 0021;
+3A10 0021;
+3A12 0021;
+3A14 0021;
+3A16 0021;
+3A18 0021;
+3A1A 0021;
+3A1C 0021;
+3A1E 0021;
+3A20 0021;
+3A22 0021;
+3A24 0021;
+3A26 0021;
+3A28 0021;
+3A2A 0021;
+3A2C 0021;
+3A2E 0021;
+3A2F 0021;
+3A31 0021;
+3A33 0021;
+3A35 0021;
+3A37 0021;
+3A39 0021;
+3A3B 0021;
+3A3D 0021;
+3A3F 0021;
+3A41 0021;
+3A43 0021;
+3A45 0021;
+3A47 0021;
+3A49 0021;
+3A4B 0021;
+3A4D 0021;
+3A4F 0021;
+3A51 0021;
+3A53 0021;
+3A55 0021;
+3A57 0021;
+3A59 0021;
+3A5B 0021;
+3A5D 0021;
+3A5F 0021;
+3A61 0021;
+3A63 0021;
+3A65 0021;
+3A67 0021;
+3A69 0021;
+3A6B 0021;
+2F8C7 0061;
+3A6E 0021;
+3A70 0021;
+3A72 0021;
+3A74 0021;
+3A76 0021;
+3A78 0021;
+3A7A 0021;
+3A7C 0021;
+3A7E 0021;
+3A80 0021;
+3A82 0021;
+3A84 0021;
+3A86 0021;
+3A88 0021;
+3A8A 0021;
+3A8C 0021;
+3A8E 0021;
+3A90 0021;
+3A92 0021;
+3A94 0021;
+3A96 0021;
+3A98 0021;
+3A9A 0021;
+3A9C 0021;
+3A9E 0021;
+3AA0 0021;
+3AA2 0021;
+3AA4 0021;
+3AA6 0021;
+3AA8 0021;
+3AAA 0021;
+3AAC 0021;
+3AAE 0021;
+3AB0 0021;
+3AB2 0021;
+3AB4 0021;
+3AB6 0021;
+3AB8 0021;
+3ABA 0021;
+3ABC 0021;
+3ABE 0021;
+3AC0 0021;
+3AC2 0021;
+3AC4 0021;
+3AC6 0021;
+3AC8 0021;
+3ACA 0021;
+3ACC 0021;
+3ACE 0021;
+3AD0 0021;
+3AD2 0021;
+3AD4 0021;
+3AD6 0021;
+3AD8 0021;
+3ADA 0021;
+3ADC 0021;
+3ADE 0021;
+3AE0 0021;
+3AE2 0021;
+3AE4 0021;
+3AE5 0021;
+3AE7 0021;
+3AE9 0021;
+3AEB 0021;
+3AED 0021;
+3AEF 0021;
+3AF1 0021;
+3AF3 0021;
+3AF5 0021;
+3AF7 0021;
+3AF9 0021;
+3AFB 0021;
+3AFD 0021;
+3AFF 0021;
+3B01 0021;
+3B03 0021;
+3B05 0021;
+3B07 0021;
+2F8D0 0061;
+3B0A 0021;
+3B0C 0021;
+3B0E 0021;
+3B10 0021;
+3B12 0021;
+3B14 0021;
+3B16 0021;
+3B18 0021;
+2F8CE 0061;
+3B1B 0021;
+3B1D 0021;
+3B1F 0021;
+3B21 0021;
+3B23 0021;
+3B25 0021;
+3B27 0021;
+3B29 0021;
+3B2B 0021;
+3B2D 0021;
+3B2F 0021;
+3B31 0021;
+3B33 0021;
+3B35 0021;
+3B37 0021;
+3B39 0021;
+3B3B 0021;
+3B3D 0021;
+3B3F 0021;
+3B41 0021;
+3B43 0021;
+3B45 0021;
+3B47 0021;
+3B49 0021;
+3B4A 0021;
+3B4C 0021;
+3B4E 0021;
+3B50 0021;
+3B52 0021;
+3B54 0021;
+3B56 0021;
+3B58 0021;
+3B5A 0021;
+3B5C 0021;
+3B5E 0021;
+3B60 0021;
+3B62 0021;
+3B64 0021;
+3B66 0021;
+3B68 0021;
+3B6A 0021;
+3B6C 0021;
+3B6E 0021;
+3B70 0021;
+3B72 0021;
+3B74 0021;
+3B76 0021;
+3B78 0021;
+3B7A 0021;
+3B7C 0021;
+3B7E 0021;
+3B80 0021;
+3B82 0021;
+3B84 0021;
+3B86 0021;
+3B88 0021;
+3B8A 0021;
+3B8C 0021;
+3B8E 0021;
+3B90 0021;
+3B92 0021;
+3B94 0021;
+3B96 0021;
+3B98 0021;
+3B9A 0021;
+3B9C 0021;
+2F8E7 003F;
+3B9E 0021;
+3BA0 0021;
+3BA2 0021;
+3BA4 0021;
+3BA6 0021;
+3BA8 0021;
+3BAA 0021;
+3BAC 0021;
+3BAE 0021;
+3BB0 0021;
+3BB2 0021;
+3BB4 0021;
+3BB6 0021;
+3BB8 0021;
+3BBA 0021;
+3BBC 0021;
+3BBE 0021;
+3BC0 0021;
+3BC2 0021;
+3BC4 0021;
+3BC6 0021;
+3BC8 0021;
+3BCA 0021;
+3BCC 0021;
+3BCE 0021;
+3BD0 0021;
+3BD2 0021;
+3BD4 0021;
+3BD6 0021;
+3BD8 0021;
+3BDA 0021;
+3BDC 0021;
+3BDE 0021;
+3BE0 0021;
+3BE2 0021;
+3BE4 0021;
+3BE6 0021;
+3BE8 0021;
+3BEA 0021;
+3BEC 0021;
+3BEE 0021;
+3BF0 0021;
+3BF2 0021;
+3BF4 0021;
+3BF6 0021;
+3BF8 0021;
+3BFA 0021;
+3BFC 0021;
+3BFE 0021;
+3C00 0021;
+3C02 0021;
+3C04 0021;
+3C06 0021;
+3C08 0021;
+3C0A 0021;
+3C0C 0021;
+3C0E 0021;
+3C10 0021;
+3C12 0021;
+3C14 0021;
+3C16 0021;
+3C18 0021;
+3C19 0021;
+3C1B 0021;
+3C1D 0021;
+3C1F 0021;
+3C21 0021;
+3C23 0021;
+3C25 0021;
+3C27 0021;
+3C29 0021;
+3C2B 0021;
+3C2D 0021;
+3C2F 0021;
+3C31 0021;
+3C33 0021;
+3C35 0021;
+3C37 0021;
+3C39 0021;
+3C3B 0021;
+3C3D 0021;
+3C3F 0021;
+3C41 0021;
+3C43 0021;
+3C45 0021;
+3C47 0021;
+3C49 0021;
+3C4B 0021;
+3C4D 0021;
+2F8F2 0061;
+3C50 0021;
+3C52 0021;
+3C54 0021;
+3C56 0021;
+3C58 0021;
+3C5A 0021;
+3C5C 0021;
+3C5E 0021;
+3C60 0021;
+3C62 0021;
+3C64 0021;
+3C66 0021;
+3C68 0021;
+3C6A 0021;
+3C6C 0021;
+3C6E 0021;
+3C70 0021;
+3C72 0021;
+3C74 0021;
+3C76 0021;
+3C78 0021;
+3C7A 0021;
+3C7C 0021;
+3C7E 0021;
+3C80 0021;
+3C82 0021;
+3C84 0021;
+3C86 0021;
+3C88 0021;
+3C8A 0021;
+3C8C 0021;
+3C8E 0021;
+3C90 0021;
+3C92 0021;
+3C94 0021;
+3C96 0021;
+3C98 0021;
+3C9A 0021;
+3C9C 0021;
+3C9E 0021;
+3CA0 0021;
+3CA2 0021;
+3CA4 0021;
+3CA6 0021;
+3CA8 0021;
+3CAA 0021;
+3CAC 0021;
+3CAE 0021;
+3CB0 0021;
+3CB2 0021;
+3CB4 0021;
+3CB6 0021;
+3CB8 0021;
+3CBA 0021;
+3CBC 0021;
+3CBE 0021;
+3CC0 0021;
+3CC2 0021;
+3CC4 0021;
+3CC6 0021;
+3CC8 0021;
+3CCA 0021;
+3CCC 0021;
+3CCE 0021;
+3CD0 0021;
+3CD2 0021;
+3CD4 0021;
+3CD6 0021;
+3CD8 0021;
+3CDA 0021;
+3CDC 0021;
+3CDE 0021;
+3CE0 0021;
+3CE2 0021;
+3CE4 0021;
+3CE6 0021;
+3CE8 0021;
+3CEA 0021;
+3CEC 0021;
+3CEE 0021;
+3CF0 0021;
+3CF2 0021;
+3CF4 0021;
+3CF6 0021;
+3CF8 0021;
+3CFA 0021;
+3CFC 0021;
+3CFE 0021;
+3D00 0021;
+3D02 0021;
+3D04 0021;
+3D06 0021;
+3D08 0021;
+3D0A 0021;
+3D0C 0021;
+3D0E 0021;
+3D10 0021;
+3D12 0021;
+3D14 0021;
+3D16 0021;
+3D18 0021;
+3D1A 0021;
+3D1C 0021;
+3D1E 0021;
+3D20 0021;
+3D22 0021;
+3D24 0021;
+3D26 0021;
+3D28 0021;
+3D2A 0021;
+3D2C 0021;
+3D2E 0021;
+3D30 0021;
+3D32 0021;
+2F90A 0061;
+3D35 0021;
+3D37 0021;
+3D39 0021;
+3D3B 0021;
+3D3D 0021;
+3D3F 0021;
+3D41 0021;
+3D43 0021;
+3D45 0021;
+3D47 0021;
+3D49 0021;
+3D4B 0021;
+3D4D 0021;
+3D4F 0021;
+3D51 0021;
+3D53 0021;
+3D55 0021;
+3D57 0021;
+3D59 0021;
+3D5B 0021;
+3D5D 0021;
+3D5F 0021;
+3D61 0021;
+3D63 0021;
+3D65 0021;
+3D67 0021;
+3D69 0021;
+3D6B 0021;
+3D6D 0021;
+3D6F 0021;
+3D71 0021;
+3D73 0021;
+3D75 0021;
+3D77 0021;
+3D79 0021;
+3D7B 0021;
+3D7D 0021;
+3D7F 0021;
+3D81 0021;
+3D83 0021;
+3D85 0021;
+3D87 0021;
+3D89 0021;
+3D8B 0021;
+3D8D 0021;
+3D8F 0021;
+3D91 0021;
+3D93 0021;
+3D95 0021;
+2F916 0061;
+3D98 0021;
+3D9A 0021;
+3D9C 0021;
+3D9E 0021;
+3DA0 0021;
+3DA2 0021;
+3DA4 0021;
+3DA6 0021;
+3DA8 0021;
+3DAA 0021;
+3DAC 0021;
+3DAE 0021;
+3DB0 0021;
+3DB2 0021;
+3DB4 0021;
+3DB6 0021;
+3DB8 0021;
+3DBA 0021;
+3DBC 0021;
+3DBE 0021;
+3DC0 0021;
+3DC2 0021;
+3DC4 0021;
+3DC6 0021;
+3DC8 0021;
+3DCA 0021;
+3DCC 0021;
+3DCE 0021;
+3DD0 0021;
+3DD2 0021;
+3DD4 0021;
+3DD6 0021;
+3DD8 0021;
+3DDA 0021;
+3DDC 0021;
+3DDE 0021;
+3DE0 0021;
+3DE2 0021;
+3DE4 0021;
+3DE6 0021;
+3DE8 0021;
+3DEA 0021;
+3DEC 0021;
+3DEE 0021;
+3DF0 0021;
+3DF2 0021;
+3DF4 0021;
+3DF6 0021;
+3DF8 0021;
+3DFA 0021;
+3DFC 0021;
+3DFE 0021;
+3E00 0021;
+3E02 0021;
+3E04 0021;
+3E06 0021;
+3E08 0021;
+3E0A 0021;
+3E0C 0021;
+3E0E 0021;
+3E10 0021;
+3E12 0021;
+3E14 0021;
+3E16 0021;
+3E18 0021;
+3E1A 0021;
+3E1C 0021;
+3E1E 0021;
+3E20 0021;
+3E22 0021;
+3E24 0021;
+3E26 0021;
+3E28 0021;
+3E2A 0021;
+3E2C 0021;
+3E2E 0021;
+3E30 0021;
+3E32 0021;
+3E34 0021;
+3E36 0021;
+3E38 0021;
+3E3A 0021;
+3E3C 0021;
+3E3E 0021;
+3E40 0021;
+3E42 0021;
+3E44 0021;
+3E46 0021;
+3E48 0021;
+3E4A 0021;
+3E4C 0021;
+3E4E 0021;
+3E50 0021;
+3E52 0021;
+3E54 0021;
+3E56 0021;
+3E58 0021;
+3E5A 0021;
+3E5C 0021;
+3E5E 0021;
+3E60 0021;
+3E62 0021;
+3E64 0021;
+3E66 0021;
+3E68 0021;
+3E6A 0021;
+3E6C 0021;
+3E6E 0021;
+3E70 0021;
+3E72 0021;
+3E74 0021;
+3E76 0021;
+3E78 0021;
+3E7A 0021;
+3E7C 0021;
+3E7E 0021;
+3E80 0021;
+3E82 0021;
+3E84 0021;
+3E86 0021;
+3E88 0021;
+3E8A 0021;
+3E8C 0021;
+3E8E 0021;
+3E90 0021;
+3E92 0021;
+3E94 0021;
+3E96 0021;
+3E98 0021;
+3E9A 0021;
+3E9C 0021;
+3E9E 0021;
+3EA0 0021;
+3EA2 0021;
+3EA4 0021;
+3EA6 0021;
+3EA8 0021;
+3EAA 0021;
+3EAC 0021;
+3EAD 0021;
+3EAF 0021;
+3EB1 0021;
+3EB3 0021;
+3EB5 0021;
+3EB7 0021;
+2F92D 003F;
+3EB9 0021;
+3EBB 0021;
+3EBD 0021;
+3EBF 0021;
+3EC1 0021;
+3EC3 0021;
+3EC5 0021;
+3EC7 0021;
+3EC9 0021;
+3ECB 0021;
+3ECD 0021;
+3ECF 0021;
+3ED1 0021;
+3ED3 0021;
+3ED5 0021;
+3ED7 0021;
+3ED9 0021;
+3EDB 0021;
+3EDD 0021;
+3EDF 0021;
+3EE1 0021;
+3EE3 0021;
+3EE5 0021;
+3EE7 0021;
+3EE9 0021;
+3EEB 0021;
+3EED 0021;
+3EEF 0021;
+3EF1 0021;
+3EF3 0021;
+3EF5 0021;
+3EF7 0021;
+3EF9 0021;
+3EFB 0021;
+3EFD 0021;
+3EFF 0021;
+3F01 0021;
+3F03 0021;
+3F05 0021;
+3F07 0021;
+3F09 0021;
+3F0B 0021;
+3F0D 0021;
+3F0F 0021;
+3F11 0021;
+3F13 0021;
+3F15 0021;
+3F17 0021;
+3F19 0021;
+3F1B 0021;
+3F1C 0021;
+3F1E 0021;
+3F20 0021;
+3F22 0021;
+3F24 0021;
+3F26 0021;
+3F28 0021;
+3F2A 0021;
+3F2C 0021;
+3F2E 0021;
+3F30 0021;
+3F32 0021;
+3F34 0021;
+3F36 0021;
+3F38 0021;
+3F3A 0021;
+3F3C 0021;
+3F3E 0021;
+3F40 0021;
+3F42 0021;
+3F44 0021;
+3F46 0021;
+3F48 0021;
+3F4A 0021;
+3F4C 0021;
+3F4E 0021;
+3F50 0021;
+3F52 0021;
+3F54 0021;
+3F56 0021;
+3F58 0021;
+3F5A 0021;
+3F5C 0021;
+3F5E 0021;
+3F60 0021;
+3F62 0021;
+3F64 0021;
+3F66 0021;
+3F68 0021;
+3F6A 0021;
+3F6C 0021;
+3F6E 0021;
+3F70 0021;
+3F72 0021;
+3F74 0021;
+3F76 0021;
+3F78 0021;
+3F7A 0021;
+3F7C 0021;
+3F7E 0021;
+3F80 0021;
+3F82 0021;
+3F84 0021;
+3F86 0021;
+3F88 0021;
+3F8A 0021;
+3F8C 0021;
+3F8E 0021;
+3F90 0021;
+3F92 0021;
+3F94 0021;
+3F96 0021;
+3F98 0021;
+3F9A 0021;
+3F9C 0021;
+3F9E 0021;
+3FA0 0021;
+3FA2 0021;
+3FA4 0021;
+3FA6 0021;
+3FA8 0021;
+3FAA 0021;
+3FAC 0021;
+3FAE 0021;
+3FB0 0021;
+3FB2 0021;
+3FB4 0021;
+3FB6 0021;
+3FB8 0021;
+3FBA 0021;
+3FBC 0021;
+3FBE 0021;
+3FC0 0021;
+3FC2 0021;
+3FC4 0021;
+3FC6 0021;
+3FC8 0021;
+3FCA 0021;
+3FCC 0021;
+3FCE 0021;
+3FD0 0021;
+3FD2 0021;
+3FD4 0021;
+3FD6 0021;
+3FD8 0021;
+3FDA 0021;
+3FDC 0021;
+3FDE 0021;
+3FE0 0021;
+3FE2 0021;
+3FE4 0021;
+3FE6 0021;
+3FE8 0021;
+3FEA 0021;
+3FEC 0021;
+3FEE 0021;
+3FF0 0021;
+3FF2 0021;
+3FF4 0021;
+3FF6 0021;
+3FF8 0021;
+3FFA 0021;
+3FFC 0021;
+3FFD 0021;
+3FFF 0021;
+4001 0021;
+4003 0021;
+4005 0021;
+4007 0021;
+2F93F 0061;
+400A 0021;
+400C 0021;
+400E 0021;
+4010 0021;
+4012 0021;
+4014 0021;
+4016 0021;
+4018 0021;
+4019 0021;
+401B 0021;
+401D 0021;
+401F 0021;
+4021 0021;
+4023 0021;
+4025 0021;
+4027 0021;
+4029 0021;
+402B 0021;
+402D 0021;
+402F 0021;
+4031 0021;
+4033 0021;
+4035 0021;
+4037 0021;
+4039 0021;
+FAD4 0041;
+403B 0021;
+403D 0021;
+403F 0021;
+4041 0021;
+4043 0021;
+4045 0021;
+2F94B 0061;
+4048 0021;
+404A 0021;
+404C 0021;
+404E 0021;
+4050 0021;
+4052 0021;
+4054 0021;
+4056 0021;
+4058 0021;
+405A 0021;
+405C 0021;
+405E 0021;
+4060 0021;
+4062 0021;
+4064 0021;
+4066 0021;
+4068 0021;
+406A 0021;
+406C 0021;
+406E 0021;
+4070 0021;
+4072 0021;
+4074 0021;
+4076 0021;
+4078 0021;
+407A 0021;
+407C 0021;
+407E 0021;
+4080 0021;
+4082 0021;
+4084 0021;
+4086 0021;
+4088 0021;
+408A 0021;
+408C 0021;
+408E 0021;
+4090 0021;
+4092 0021;
+4094 0021;
+4096 0021;
+4097 0021;
+4099 0021;
+409B 0021;
+409D 0021;
+409F 0021;
+40A1 0021;
+40A3 0021;
+40A5 0021;
+40A7 0021;
+40A9 0021;
+40AB 0021;
+40AD 0021;
+40AF 0021;
+40B1 0021;
+40B3 0021;
+40B5 0021;
+40B7 0021;
+40B9 0021;
+40BB 0021;
+40BD 0021;
+40BF 0021;
+40C1 0021;
+40C3 0021;
+40C5 0021;
+40C7 0021;
+40C9 0021;
+40CB 0021;
+40CD 0021;
+40CF 0021;
+40D1 0021;
+40D3 0021;
+40D5 0021;
+40D7 0021;
+40D9 0021;
+40DB 0021;
+40DD 0021;
+40DF 0021;
+40E1 0021;
+40E3 0021;
+40E4 0021;
+40E6 0021;
+40E8 0021;
+40EA 0021;
+40EC 0021;
+40EE 0021;
+40F0 0021;
+40F2 0021;
+40F4 0021;
+40F6 0021;
+40F8 0021;
+40FA 0021;
+40FC 0021;
+40FE 0021;
+4100 0021;
+4102 0021;
+4104 0021;
+4106 0021;
+4108 0021;
+410A 0021;
+410C 0021;
+410E 0021;
+4110 0021;
+4112 0021;
+4114 0021;
+4116 0021;
+4118 0021;
+411A 0021;
+411C 0021;
+411E 0021;
+4120 0021;
+4122 0021;
+4124 0021;
+4126 0021;
+4128 0021;
+412A 0021;
+412C 0021;
+412E 0021;
+2F958 0061;
+4131 0021;
+4133 0021;
+4135 0021;
+4137 0021;
+4139 0021;
+413B 0021;
+413D 0021;
+413F 0021;
+4141 0021;
+4143 0021;
+4145 0021;
+4147 0021;
+4149 0021;
+414B 0021;
+414D 0021;
+414F 0021;
+4151 0021;
+4153 0021;
+4155 0021;
+4157 0021;
+4159 0021;
+415B 0021;
+415D 0021;
+415F 0021;
+4161 0021;
+4163 0021;
+4165 0021;
+4167 0021;
+4169 0021;
+416B 0021;
+416D 0021;
+416F 0021;
+4171 0021;
+4173 0021;
+4175 0021;
+4177 0021;
+4179 0021;
+417B 0021;
+417D 0021;
+417F 0021;
+4181 0021;
+4183 0021;
+4185 0021;
+4187 0021;
+4189 0021;
+418B 0021;
+418D 0021;
+418F 0021;
+4191 0021;
+4193 0021;
+4195 0021;
+4197 0021;
+4199 0021;
+419B 0021;
+419D 0021;
+419F 0021;
+41A1 0021;
+41A3 0021;
+41A5 0021;
+41A7 0021;
+41A9 0021;
+41AB 0021;
+41AD 0021;
+41AF 0021;
+41B1 0021;
+41B3 0021;
+41B5 0021;
+41B7 0021;
+41B9 0021;
+41BB 0021;
+41BD 0021;
+41BF 0021;
+41C1 0021;
+41C3 0021;
+41C5 0021;
+41C7 0021;
+41C9 0021;
+41CB 0021;
+41CD 0021;
+41CF 0021;
+41D1 0021;
+41D3 0021;
+41D5 0021;
+41D7 0021;
+41D9 0021;
+41DB 0021;
+41DD 0021;
+41DF 0021;
+41E1 0021;
+41E3 0021;
+41E5 0021;
+41E7 0021;
+41E9 0021;
+41EB 0021;
+41ED 0021;
+41EF 0021;
+41F1 0021;
+41F3 0021;
+41F5 0021;
+41F7 0021;
+41F9 0021;
+41FB 0021;
+41FD 0021;
+41FF 0021;
+4201 0021;
+2F960 0061;
+4204 0021;
+4206 0021;
+4208 0021;
+420A 0021;
+420C 0021;
+420E 0021;
+4210 0021;
+4212 0021;
+4214 0021;
+4216 0021;
+4218 0021;
+421A 0021;
+421C 0021;
+421E 0021;
+4220 0021;
+4222 0021;
+4224 0021;
+4226 0021;
+2F964 0061;
+4229 0021;
+422B 0021;
+422D 0021;
+422F 0021;
+4231 0021;
+4233 0021;
+4235 0021;
+4237 0021;
+4239 0021;
+423B 0021;
+423D 0021;
+423F 0021;
+4241 0021;
+4243 0021;
+4245 0021;
+4247 0021;
+4249 0021;
+424B 0021;
+424D 0021;
+424F 0021;
+4251 0021;
+4253 0021;
+4255 0021;
+4257 0021;
+4259 0021;
+425B 0021;
+425D 0021;
+425F 0021;
+4261 0021;
+4263 0021;
+4265 0021;
+4267 0021;
+4269 0021;
+426B 0021;
+426D 0021;
+426F 0021;
+4271 0021;
+4273 0021;
+4275 0021;
+4277 0021;
+4279 0021;
+427B 0021;
+427D 0021;
+427F 0021;
+4281 0021;
+4283 0021;
+4285 0021;
+4287 0021;
+4289 0021;
+428B 0021;
+428D 0021;
+428F 0021;
+4291 0021;
+4293 0021;
+4295 0021;
+4297 0021;
+4299 0021;
+429B 0021;
+429D 0021;
+429F 0021;
+2F967 0061;
+42A2 0021;
+42A4 0021;
+42A6 0021;
+42A8 0021;
+42AA 0021;
+42AC 0021;
+42AE 0021;
+42B0 0021;
+42B2 0021;
+42B4 0021;
+42B6 0021;
+42B8 0021;
+42BA 0021;
+42BC 0021;
+42BE 0021;
+42C0 0021;
+42C2 0021;
+42C4 0021;
+42C6 0021;
+42C8 0021;
+42CA 0021;
+42CC 0021;
+42CE 0021;
+42D0 0021;
+42D2 0021;
+42D4 0021;
+42D6 0021;
+42D8 0021;
+42DA 0021;
+42DC 0021;
+42DE 0021;
+42E0 0021;
+42E2 0021;
+42E4 0021;
+42E6 0021;
+42E8 0021;
+42EA 0021;
+42EC 0021;
+42EE 0021;
+42F0 0021;
+42F2 0021;
+42F4 0021;
+42F6 0021;
+42F8 0021;
+42FA 0021;
+42FC 0021;
+42FE 0021;
+4300 0021;
+2F96D 0061;
+4303 0021;
+4305 0021;
+4307 0021;
+4309 0021;
+430B 0021;
+430D 0021;
+430F 0021;
+4311 0021;
+4313 0021;
+4315 0021;
+4317 0021;
+4319 0021;
+431B 0021;
+431D 0021;
+431F 0021;
+4321 0021;
+4323 0021;
+4325 0021;
+4327 0021;
+4329 0021;
+432B 0021;
+432D 0021;
+432F 0021;
+4331 0021;
+4333 0021;
+2F971 0061;
+4336 0021;
+4338 0021;
+433A 0021;
+433C 0021;
+433E 0021;
+4340 0021;
+4342 0021;
+4344 0021;
+4346 0021;
+4348 0021;
+434A 0021;
+434C 0021;
+434E 0021;
+4350 0021;
+4352 0021;
+4354 0021;
+4356 0021;
+4358 0021;
+2F974 0061;
+435B 0021;
+435D 0021;
+435F 0021;
+4361 0021;
+4363 0021;
+4365 0021;
+4367 0021;
+4369 0021;
+436B 0021;
+436D 0021;
+436F 0021;
+4371 0021;
+4373 0021;
+4375 0021;
+4377 0021;
+4379 0021;
+437B 0021;
+437D 0021;
+437F 0021;
+4381 0021;
+4383 0021;
+4385 0021;
+4387 0021;
+4389 0021;
+438B 0021;
+438D 0021;
+438F 0021;
+4391 0021;
+4393 0021;
+4395 0021;
+4397 0021;
+4399 0021;
+439B 0021;
+439D 0021;
+439F 0021;
+43A1 0021;
+43A3 0021;
+43A5 0021;
+43A7 0021;
+43A9 0021;
+43AB 0021;
+43AD 0021;
+43AF 0021;
+43B1 0021;
+43B3 0021;
+43B5 0021;
+43B7 0021;
+43B9 0021;
+43BB 0021;
+43BD 0021;
+43BF 0021;
+43C1 0021;
+43C3 0021;
+43C5 0021;
+43C7 0021;
+43C9 0021;
+43CB 0021;
+43CD 0021;
+43CF 0021;
+43D1 0021;
+43D3 0021;
+43D5 0021;
+43D6 0021;
+43D8 0021;
+2F8D7 0061;
+43DB 0021;
+43DD 0021;
+43DF 0021;
+43E1 0021;
+43E3 0021;
+43E5 0021;
+43E7 0021;
+43E9 0021;
+43EB 0021;
+43ED 0021;
+43EF 0021;
+43F1 0021;
+43F3 0021;
+43F5 0021;
+43F7 0021;
+43F9 0021;
+43FB 0021;
+43FD 0021;
+43FF 0021;
+4401 0021;
+4403 0021;
+4405 0021;
+4407 0021;
+4409 0021;
+440B 0021;
+440C 0021;
+440E 0021;
+4410 0021;
+4412 0021;
+4414 0021;
+4416 0021;
+4418 0021;
+441A 0021;
+441C 0021;
+441E 0021;
+4420 0021;
+4422 0021;
+4424 0021;
+4426 0021;
+4428 0021;
+442A 0021;
+442C 0021;
+442E 0021;
+4430 0021;
+4432 0021;
+4434 0021;
+4436 0021;
+4438 0021;
+443A 0021;
+443C 0021;
+443E 0021;
+4440 0021;
+4442 0021;
+4444 0021;
+4446 0021;
+4448 0021;
+444A 0021;
+444C 0021;
+444E 0021;
+4450 0021;
+4452 0021;
+4454 0021;
+4456 0021;
+4458 0021;
+445A 0021;
+445C 0021;
+445E 0021;
+4460 0021;
+4462 0021;
+4464 0021;
+4466 0021;
+4468 0021;
+446A 0021;
+2F98E 0061;
+446D 0021;
+446F 0021;
+4471 0021;
+4473 0021;
+4475 0021;
+4477 0021;
+4479 0021;
+447B 0021;
+447D 0021;
+447F 0021;
+4481 0021;
+4483 0021;
+4485 0021;
+4487 0021;
+4489 0021;
+448B 0021;
+448D 0021;
+448F 0021;
+4491 0021;
+4493 0021;
+4495 0021;
+4497 0021;
+4499 0021;
+449B 0021;
+449D 0021;
+449F 0021;
+44A1 0021;
+44A3 0021;
+44A5 0021;
+44A7 0021;
+44A9 0021;
+44AB 0021;
+44AD 0021;
+44AF 0021;
+44B1 0021;
+44B3 0021;
+44B5 0021;
+44B7 0021;
+44B9 0021;
+44BB 0021;
+44BD 0021;
+44BF 0021;
+44C1 0021;
+44C3 0021;
+44C5 0021;
+44C7 0021;
+44C9 0021;
+44CB 0021;
+44CD 0021;
+44CF 0021;
+44D1 0021;
+44D3 0021;
+44D5 0021;
+44D7 0021;
+44D9 0021;
+44DB 0021;
+44DD 0021;
+44DF 0021;
+44E1 0021;
+44E3 0021;
+44E5 0021;
+44E7 0021;
+44E9 0021;
+44EB 0021;
+44ED 0021;
+44EF 0021;
+44F1 0021;
+44F3 0021;
+44F5 0021;
+44F7 0021;
+44F9 0021;
+44FB 0021;
+44FD 0021;
+44FF 0021;
+4501 0021;
+4503 0021;
+4505 0021;
+4507 0021;
+4509 0021;
+450B 0021;
+450D 0021;
+450F 0021;
+4511 0021;
+4513 0021;
+4515 0021;
+4517 0021;
+4519 0021;
+451B 0021;
+451D 0021;
+451F 0021;
+4521 0021;
+4523 0021;
+4525 0021;
+4527 0021;
+4529 0021;
+452B 0021;
+452C 0021;
+452E 0021;
+4530 0021;
+4532 0021;
+4534 0021;
+4536 0021;
+4538 0021;
+453A 0021;
+453C 0021;
+453E 0021;
+4540 0021;
+4542 0021;
+4544 0021;
+4546 0021;
+4548 0021;
+454A 0021;
+454C 0021;
+454E 0021;
+4550 0021;
+4552 0021;
+4554 0021;
+4556 0021;
+4558 0021;
+455A 0021;
+455C 0021;
+2F9AE 0061;
+455F 0021;
+4561 0021;
+4562 0021;
+4564 0021;
+4566 0021;
+4568 0021;
+456A 0021;
+2F9B2 0061;
+456D 0021;
+456F 0021;
+4571 0021;
+4573 0021;
+4575 0021;
+4577 0021;
+4579 0021;
+457B 0021;
+457D 0021;
+457F 0021;
+4581 0021;
+4583 0021;
+4585 0021;
+4587 0021;
+4589 0021;
+458B 0021;
+458D 0021;
+458F 0021;
+4591 0021;
+4593 0021;
+4595 0021;
+4597 0021;
+4599 0021;
+459B 0021;
+459D 0021;
+459F 0021;
+45A1 0021;
+45A3 0021;
+45A5 0021;
+45A7 0021;
+45A9 0021;
+45AB 0021;
+45AD 0021;
+45AF 0021;
+45B1 0021;
+45B3 0021;
+45B5 0021;
+45B7 0021;
+45B9 0021;
+45BB 0021;
+45BD 0021;
+45BF 0021;
+45C1 0021;
+45C3 0021;
+45C5 0021;
+45C7 0021;
+45C9 0021;
+45CB 0021;
+45CD 0021;
+45CF 0021;
+45D1 0021;
+45D3 0021;
+45D5 0021;
+45D7 0021;
+45D8 0021;
+45DA 0021;
+45DC 0021;
+45DE 0021;
+45E0 0021;
+45E2 0021;
+45E4 0021;
+45E6 0021;
+45E8 0021;
+45EA 0021;
+45EC 0021;
+45EE 0021;
+45F0 0021;
+45F2 0021;
+45F4 0021;
+45F6 0021;
+45F8 0021;
+2F9C2 0061;
+45FB 0021;
+45FD 0021;
+45FF 0021;
+4601 0021;
+4603 0021;
+4605 0021;
+4607 0021;
+4609 0021;
+460B 0021;
+460D 0021;
+460F 0021;
+4611 0021;
+4613 0021;
+4615 0021;
+4617 0021;
+4619 0021;
+461B 0021;
+461D 0021;
+461F 0021;
+4621 0021;
+4623 0021;
+4625 0021;
+4627 0021;
+4629 0021;
+462B 0021;
+462D 0021;
+462F 0021;
+4631 0021;
+4633 0021;
+4635 0021;
+4636 0021;
+4638 0021;
+463A 0021;
+463C 0021;
+463E 0021;
+4640 0021;
+4642 0021;
+4644 0021;
+4646 0021;
+4648 0021;
+464A 0021;
+464C 0021;
+464E 0021;
+4650 0021;
+4652 0021;
+4654 0021;
+4656 0021;
+4658 0021;
+465A 0021;
+465C 0021;
+465E 0021;
+4660 0021;
+4662 0021;
+4664 0021;
+4666 0021;
+4668 0021;
+466A 0021;
+466C 0021;
+466E 0021;
+4670 0021;
+4672 0021;
+4674 0021;
+4676 0021;
+4678 0021;
+467A 0021;
+467C 0021;
+467E 0021;
+4680 0021;
+4682 0021;
+4684 0021;
+4686 0021;
+4688 0021;
+468A 0021;
+468C 0021;
+468E 0021;
+4690 0021;
+4692 0021;
+4694 0021;
+4696 0021;
+4698 0021;
+469A 0021;
+469C 0021;
+469E 0021;
+46A0 0021;
+46A2 0021;
+46A4 0021;
+46A6 0021;
+46A8 0021;
+46AA 0021;
+46AC 0021;
+46AE 0021;
+46B0 0021;
+46B2 0021;
+46B4 0021;
+46B6 0021;
+46B8 0021;
+46BA 0021;
+46BC 0021;
+46BE 0021;
+46BF 0021;
+46C1 0021;
+46C3 0021;
+46C5 0021;
+46C7 0021;
+46C8 0021;
+46CA 0021;
+46CC 0021;
+46CE 0021;
+46D0 0021;
+46D2 0021;
+46D4 0021;
+46D6 0021;
+46D8 0021;
+46DA 0021;
+46DC 0021;
+46DE 0021;
+46E0 0021;
+46E2 0021;
+46E4 0021;
+46E6 0021;
+46E8 0021;
+46EA 0021;
+46EC 0021;
+46EE 0021;
+46F0 0021;
+46F2 0021;
+46F4 0021;
+46F6 0021;
+46F8 0021;
+46FA 0021;
+46FC 0021;
+46FE 0021;
+4700 0021;
+4702 0021;
+4704 0021;
+4706 0021;
+4708 0021;
+470A 0021;
+470C 0021;
+470E 0021;
+4710 0021;
+4712 0021;
+4714 0021;
+4716 0021;
+4718 0021;
+471A 0021;
+471C 0021;
+471E 0021;
+4720 0021;
+4722 0021;
+4724 0021;
+4726 0021;
+4728 0021;
+472A 0021;
+472C 0021;
+472E 0021;
+4730 0021;
+4732 0021;
+4734 0021;
+4736 0021;
+4738 0021;
+473A 0021;
+473C 0021;
+473E 0021;
+4740 0021;
+4742 0021;
+4744 0021;
+4746 0021;
+4748 0021;
+474A 0021;
+474C 0021;
+474E 0021;
+4750 0021;
+4752 0021;
+4754 0021;
+4756 0021;
+4758 0021;
+475A 0021;
+475C 0021;
+475E 0021;
+4760 0021;
+4762 0021;
+4764 0021;
+4766 0021;
+4768 0021;
+476A 0021;
+476C 0021;
+476E 0021;
+4770 0021;
+4772 0021;
+4774 0021;
+4776 0021;
+4778 0021;
+477A 0021;
+477C 0021;
+477E 0021;
+4780 0021;
+4782 0021;
+4784 0021;
+4786 0021;
+4788 0021;
+478A 0021;
+478C 0021;
+478E 0021;
+4790 0021;
+4792 0021;
+4794 0021;
+4796 0021;
+4798 0021;
+479A 0021;
+479C 0021;
+479E 0021;
+47A0 0021;
+47A2 0021;
+47A4 0021;
+47A6 0021;
+47A8 0021;
+47AA 0021;
+47AC 0021;
+47AE 0021;
+47B0 0021;
+47B2 0021;
+47B4 0021;
+47B6 0021;
+47B8 0021;
+47BA 0021;
+47BC 0021;
+47BE 0021;
+47C0 0021;
+47C2 0021;
+47C4 0021;
+47C6 0021;
+47C8 0021;
+47CA 0021;
+47CC 0021;
+47CE 0021;
+47D0 0021;
+47D2 0021;
+47D4 0021;
+47D6 0021;
+47D8 0021;
+47DA 0021;
+47DC 0021;
+47DE 0021;
+47E0 0021;
+47E2 0021;
+47E4 0021;
+47E6 0021;
+47E8 0021;
+47EA 0021;
+47EC 0021;
+47EE 0021;
+47F0 0021;
+47F2 0021;
+47F4 0021;
+47F6 0021;
+47F8 0021;
+47FA 0021;
+47FC 0021;
+47FE 0021;
+4800 0021;
+4802 0021;
+4804 0021;
+4806 0021;
+4808 0021;
+480A 0021;
+480C 0021;
+480E 0021;
+4810 0021;
+4812 0021;
+4814 0021;
+4816 0021;
+4818 0021;
+481A 0021;
+481C 0021;
+481E 0021;
+4820 0021;
+4822 0021;
+4824 0021;
+4826 0021;
+4828 0021;
+482A 0021;
+482C 0021;
+482E 0021;
+4830 0021;
+4832 0021;
+4834 0021;
+4836 0021;
+4838 0021;
+483A 0021;
+483C 0021;
+483E 0021;
+4840 0021;
+4842 0021;
+4844 0021;
+4846 0021;
+4848 0021;
+484A 0021;
+484C 0021;
+484E 0021;
+4850 0021;
+4852 0021;
+4854 0021;
+4856 0021;
+4858 0021;
+485A 0021;
+485C 0021;
+485E 0021;
+4860 0021;
+4862 0021;
+4864 0021;
+4866 0021;
+4868 0021;
+486A 0021;
+486C 0021;
+486E 0021;
+4870 0021;
+4872 0021;
+4874 0021;
+4876 0021;
+4878 0021;
+487A 0021;
+487C 0021;
+487E 0021;
+4880 0021;
+4882 0021;
+4884 0021;
+4886 0021;
+4888 0021;
+488A 0021;
+488C 0021;
+488E 0021;
+4890 0021;
+4892 0021;
+4894 0021;
+4896 0021;
+4898 0021;
+489A 0021;
+489C 0021;
+489E 0021;
+48A0 0021;
+48A2 0021;
+48A4 0021;
+48A6 0021;
+48A8 0021;
+48AA 0021;
+48AC 0021;
+48AE 0021;
+48B0 0021;
+48B2 0021;
+48B4 0021;
+48B6 0021;
+48B8 0021;
+48BA 0021;
+48BC 0021;
+48BE 0021;
+48C0 0021;
+48C2 0021;
+48C4 0021;
+48C6 0021;
+48C8 0021;
+48CA 0021;
+48CC 0021;
+48CE 0021;
+48D0 0021;
+48D2 0021;
+48D4 0021;
+48D6 0021;
+48D8 0021;
+48DA 0021;
+48DC 0021;
+48DE 0021;
+48E0 0021;
+48E2 0021;
+48E4 0021;
+48E6 0021;
+48E8 0021;
+48EA 0021;
+48EC 0021;
+48EE 0021;
+48F0 0021;
+48F2 0021;
+48F4 0021;
+48F6 0021;
+48F8 0021;
+48FA 0021;
+48FC 0021;
+48FE 0021;
+4900 0021;
+4902 0021;
+4904 0021;
+4906 0021;
+4908 0021;
+490A 0021;
+490C 0021;
+490E 0021;
+4910 0021;
+4912 0021;
+4914 0021;
+4916 0021;
+4918 0021;
+491A 0021;
+491C 0021;
+491E 0021;
+4920 0021;
+4922 0021;
+4924 0021;
+4926 0021;
+4928 0021;
+492A 0021;
+492C 0021;
+492E 0021;
+4930 0021;
+4932 0021;
+4934 0021;
+4936 0021;
+4938 0021;
+493A 0021;
+493C 0021;
+493E 0021;
+4940 0021;
+4942 0021;
+4944 0021;
+4946 0021;
+4948 0021;
+494A 0021;
+494C 0021;
+494E 0021;
+4950 0021;
+4952 0021;
+4954 0021;
+4956 0021;
+4958 0021;
+495A 0021;
+495C 0021;
+495E 0021;
+4960 0021;
+4962 0021;
+4964 0021;
+4966 0021;
+4968 0021;
+496A 0021;
+496C 0021;
+496E 0021;
+4970 0021;
+4972 0021;
+4974 0021;
+4976 0021;
+4978 0021;
+497A 0021;
+497C 0021;
+497E 0021;
+4980 0021;
+4982 0021;
+4984 0021;
+4986 0021;
+4988 0021;
+498A 0021;
+498C 0021;
+498E 0021;
+4990 0021;
+4992 0021;
+4994 0021;
+2F9EF 0061;
+4997 0021;
+4999 0021;
+499B 0021;
+499D 0021;
+499F 0021;
+49A1 0021;
+49A3 0021;
+49A5 0021;
+49A7 0021;
+49A9 0021;
+49AB 0021;
+49AD 0021;
+49AF 0021;
+49B1 0021;
+49B3 0021;
+49B5 0021;
+49B7 0021;
+49B9 0021;
+49BB 0021;
+49BD 0021;
+49BF 0021;
+49C1 0021;
+49C3 0021;
+49C5 0021;
+49C7 0021;
+49C9 0021;
+49CB 0021;
+49CD 0021;
+49CF 0021;
+49D1 0021;
+49D3 0021;
+49D5 0021;
+49D7 0021;
+49D9 0021;
+49DB 0021;
+49DD 0021;
+49DF 0021;
+49E1 0021;
+49E3 0021;
+49E5 0021;
+2F9F2 0061;
+49E8 0021;
+49EA 0021;
+49EC 0021;
+49EE 0021;
+49F0 0021;
+49F2 0021;
+49F4 0021;
+49F6 0021;
+49F8 0021;
+49FA 0021;
+49FC 0021;
+49FE 0021;
+4A00 0021;
+4A02 0021;
+4A04 0021;
+4A06 0021;
+4A08 0021;
+4A0A 0021;
+4A0C 0021;
+4A0E 0021;
+4A10 0021;
+4A12 0021;
+4A14 0021;
+4A16 0021;
+4A18 0021;
+4A1A 0021;
+4A1C 0021;
+4A1E 0021;
+4A20 0021;
+4A22 0021;
+4A24 0021;
+4A26 0021;
+4A28 0021;
+4A2A 0021;
+4A2C 0021;
+4A2E 0021;
+4A30 0021;
+4A32 0021;
+4A34 0021;
+4A36 0021;
+4A38 0021;
+4A3A 0021;
+4A3C 0021;
+4A3E 0021;
+4A40 0021;
+4A42 0021;
+4A44 0021;
+4A46 0021;
+4A48 0021;
+4A4A 0021;
+4A4C 0021;
+4A4E 0021;
+4A50 0021;
+4A52 0021;
+4A54 0021;
+4A56 0021;
+4A58 0021;
+4A5A 0021;
+4A5C 0021;
+4A5E 0021;
+4A60 0021;
+4A62 0021;
+4A64 0021;
+4A66 0021;
+4A68 0021;
+4A6A 0021;
+4A6C 0021;
+4A6E 0021;
+4A6F 0021;
+4A71 0021;
+4A73 0021;
+4A75 0021;
+2F9F9 0061;
+4A78 0021;
+4A7A 0021;
+4A7C 0021;
+4A7E 0021;
+4A80 0021;
+4A82 0021;
+4A84 0021;
+4A86 0021;
+4A88 0021;
+4A8A 0021;
+4A8C 0021;
+4A8E 0021;
+4A90 0021;
+4A92 0021;
+4A94 0021;
+4A96 0021;
+4A98 0021;
+4A9A 0021;
+4A9C 0021;
+4A9E 0021;
+4AA0 0021;
+4AA2 0021;
+4AA4 0021;
+4AA6 0021;
+4AA8 0021;
+4AAA 0021;
+4AAC 0021;
+4AAE 0021;
+4AB0 0021;
+4AB2 0021;
+4AB3 0021;
+4AB5 0021;
+4AB7 0021;
+4AB9 0021;
+4ABB 0021;
+4ABD 0021;
+4ABF 0021;
+4AC1 0021;
+4AC3 0021;
+4AC5 0021;
+4AC7 0021;
+4AC9 0021;
+4ACB 0021;
+4ACD 0021;
+4ACF 0021;
+4AD1 0021;
+4AD3 0021;
+4AD5 0021;
+4AD7 0021;
+4AD9 0021;
+4ADB 0021;
+4ADD 0021;
+4ADF 0021;
+4AE1 0021;
+4AE3 0021;
+4AE5 0021;
+4AE7 0021;
+4AE9 0021;
+4AEB 0021;
+4AED 0021;
+4AEF 0021;
+4AF1 0021;
+4AF3 0021;
+4AF5 0021;
+4AF7 0021;
+4AF9 0021;
+4AFB 0021;
+4AFD 0021;
+4AFF 0021;
+4B01 0021;
+4B03 0021;
+4B05 0021;
+4B07 0021;
+4B09 0021;
+4B0B 0021;
+4B0D 0021;
+4B0F 0021;
+4B11 0021;
+4B13 0021;
+4B15 0021;
+4B17 0021;
+4B19 0021;
+4B1B 0021;
+4B1D 0021;
+4B1F 0021;
+4B21 0021;
+4B23 0021;
+4B25 0021;
+4B27 0021;
+4B29 0021;
+4B2B 0021;
+4B2D 0021;
+4B2F 0021;
+4B31 0021;
+4B33 0021;
+4B34 0021;
+4B36 0021;
+4B38 0021;
+4B3A 0021;
+4B3C 0021;
+4B3E 0021;
+4B40 0021;
+4B42 0021;
+4B44 0021;
+4B46 0021;
+4B48 0021;
+4B4A 0021;
+4B4C 0021;
+4B4E 0021;
+4B50 0021;
+4B52 0021;
+4B54 0021;
+4B56 0021;
+4B58 0021;
+4B5A 0021;
+4B5C 0021;
+4B5E 0021;
+4B60 0021;
+4B62 0021;
+4B64 0021;
+4B66 0021;
+4B68 0021;
+4B6A 0021;
+4B6C 0021;
+4B6E 0021;
+4B70 0021;
+4B72 0021;
+4B74 0021;
+4B76 0021;
+4B78 0021;
+4B7A 0021;
+4B7C 0021;
+4B7E 0021;
+4B80 0021;
+4B82 0021;
+4B84 0021;
+4B86 0021;
+4B88 0021;
+4B8A 0021;
+4B8C 0021;
+4B8E 0021;
+4B90 0021;
+4B92 0021;
+4B94 0021;
+4B96 0021;
+4B98 0021;
+4B9A 0021;
+4B9C 0021;
+4B9E 0021;
+4BA0 0021;
+4BA2 0021;
+4BA4 0021;
+4BA6 0021;
+4BA8 0021;
+4BAA 0021;
+4BAC 0021;
+4BAE 0021;
+4BB0 0021;
+4BB2 0021;
+4BB4 0021;
+4BB6 0021;
+4BB8 0021;
+4BBA 0021;
+4BBC 0021;
+4BBE 0021;
+4BC0 0021;
+4BC2 0021;
+4BC4 0021;
+4BC6 0021;
+4BC8 0021;
+4BCA 0021;
+4BCC 0021;
+4BCE 0021;
+4BCF 0021;
+4BD1 0021;
+4BD3 0021;
+4BD5 0021;
+4BD7 0021;
+4BD9 0021;
+4BDB 0021;
+4BDD 0021;
+4BDF 0021;
+4BE1 0021;
+4BE3 0021;
+4BE5 0021;
+4BE7 0021;
+4BE9 0021;
+4BEB 0021;
+4BED 0021;
+4BEF 0021;
+4BF1 0021;
+4BF3 0021;
+4BF5 0021;
+4BF7 0021;
+4BF9 0021;
+4BFB 0021;
+4BFD 0021;
+4BFF 0021;
+4C01 0021;
+4C03 0021;
+4C05 0021;
+4C07 0021;
+4C09 0021;
+4C0B 0021;
+4C0D 0021;
+4C0F 0021;
+4C11 0021;
+4C13 0021;
+4C15 0021;
+4C17 0021;
+4C19 0021;
+4C1B 0021;
+4C1D 0021;
+4C1F 0021;
+4C21 0021;
+4C23 0021;
+4C25 0021;
+4C27 0021;
+4C29 0021;
+4C2B 0021;
+4C2D 0021;
+4C2F 0021;
+4C31 0021;
+4C33 0021;
+4C35 0021;
+4C37 0021;
+4C39 0021;
+4C3B 0021;
+4C3D 0021;
+4C3F 0021;
+4C41 0021;
+4C43 0021;
+4C45 0021;
+4C47 0021;
+4C49 0021;
+4C4B 0021;
+4C4D 0021;
+4C4F 0021;
+4C51 0021;
+4C53 0021;
+4C55 0021;
+4C57 0021;
+4C59 0021;
+4C5B 0021;
+4C5D 0021;
+4C5F 0021;
+4C61 0021;
+4C63 0021;
+4C65 0021;
+4C67 0021;
+4C69 0021;
+4C6B 0021;
+4C6D 0021;
+4C6F 0021;
+4C71 0021;
+4C73 0021;
+4C75 0021;
+4C77 0021;
+4C79 0021;
+4C7B 0021;
+4C7D 0021;
+4C7F 0021;
+4C81 0021;
+4C83 0021;
+4C85 0021;
+4C87 0021;
+4C89 0021;
+4C8B 0021;
+4C8D 0021;
+4C8F 0021;
+4C91 0021;
+4C93 0021;
+4C95 0021;
+4C97 0021;
+4C99 0021;
+4C9B 0021;
+4C9D 0021;
+4C9F 0021;
+4CA1 0021;
+4CA3 0021;
+4CA5 0021;
+4CA7 0021;
+4CA9 0021;
+4CAB 0021;
+4CAD 0021;
+4CAF 0021;
+4CB1 0021;
+4CB3 0021;
+4CB5 0021;
+4CB7 0021;
+4CB9 0021;
+4CBB 0021;
+4CBD 0021;
+4CBF 0021;
+4CC1 0021;
+4CC3 0021;
+4CC5 0021;
+4CC7 0021;
+4CC9 0021;
+4CCB 0021;
+4CCD 0021;
+2FA0D 0061;
+4CD0 0021;
+4CD2 0021;
+4CD4 0021;
+4CD6 0021;
+4CD8 0021;
+4CDA 0021;
+4CDC 0021;
+4CDE 0021;
+4CE0 0021;
+4CE2 0021;
+4CE4 0021;
+4CE6 0021;
+4CE8 0021;
+4CEA 0021;
+4CEC 0021;
+2FA0E 0061;
+4CEF 0021;
+4CF1 0021;
+4CF3 0021;
+4CF5 0021;
+4CF7 0021;
+2FA11 0061;
+4CFA 0021;
+4CFC 0021;
+4CFE 0021;
+4D00 0021;
+4D02 0021;
+4D04 0021;
+4D06 0021;
+4D08 0021;
+4D0A 0021;
+4D0C 0021;
+4D0E 0021;
+4D10 0021;
+4D12 0021;
+4D14 0021;
+4D16 0021;
+4D18 0021;
+4D1A 0021;
+4D1C 0021;
+4D1E 0021;
+4D20 0021;
+4D22 0021;
+4D24 0021;
+4D26 0021;
+4D28 0021;
+4D2A 0021;
+4D2C 0021;
+4D2E 0021;
+4D30 0021;
+4D32 0021;
+4D34 0021;
+4D36 0021;
+4D38 0021;
+4D3A 0021;
+4D3C 0021;
+4D3E 0021;
+4D40 0021;
+4D42 0021;
+4D44 0021;
+4D46 0021;
+4D48 0021;
+4D4A 0021;
+4D4C 0021;
+4D4E 0021;
+4D50 0021;
+4D52 0021;
+4D54 0021;
+4D56 0021;
+4D57 0021;
+4D59 0021;
+4D5B 0021;
+4D5D 0021;
+4D5F 0021;
+4D61 0021;
+4D63 0021;
+4D65 0021;
+4D67 0021;
+4D69 0021;
+4D6B 0021;
+4D6D 0021;
+4D6F 0021;
+4D71 0021;
+4D73 0021;
+4D75 0021;
+4D77 0021;
+4D79 0021;
+4D7B 0021;
+4D7D 0021;
+4D7F 0021;
+4D81 0021;
+4D83 0021;
+4D85 0021;
+4D87 0021;
+4D89 0021;
+4D8B 0021;
+4D8D 0021;
+4D8F 0021;
+4D91 0021;
+4D93 0021;
+4D95 0021;
+4D97 0021;
+4D99 0021;
+4D9B 0021;
+4D9D 0021;
+4D9F 0021;
+4DA1 0021;
+4DA3 0021;
+4DA5 0021;
+4DA7 0021;
+4DA9 0021;
+4DAB 0021;
+4DAD 0021;
+4DAF 0021;
+4DB1 0021;
+4DB3 0021;
+4DB5 0021;
+20001 0021;
+20003 0021;
+20005 0021;
+2F812 0021;
+2F816 0021;
+2F9D9 0021;
+2F834 0021;
+2F859 0021;
+2F861 0021;
+2F871 0021;
+2F87B 0021;
+2F889 0021;
+2F891 0021;
+2F8A4 0021;
+FACF 0021;
+2F8BE 0021;
+2F897 0021;
+2F989 0021;
+2F8DD 0021;
+2F8E3 0021;
+2F8F0 0021;
+2F8F9 0021;
+2F906 0021;
+2F910 0021;
+2F91D 0021;
+2F923 0021;
+2F927 0021;
+2F937 0021;
+2F93C 0021;
+2F942 0021;
+2F943 0021;
+FAD5 0021;
+2F952 0021;
+2F955 0021;
+2F95D 0021;
+2F961 0021;
+FAD6 0021;
+2F898 0021;
+2F973 0021;
+2F977 0021;
+2F97C 0021;
+2F987 0021;
+2F997 0021;
+2F9A6 0021;
+2F9AD 0021;
+2F9B1 0021;
+2F9C5 0021;
+2F9CC 0021;
+FAD7 0021;
+2F9E0 0021;
+2F9E5 0021;
+2F9F1 0021;
+2F81C 0021;
+2F9FB 0021;
+2FA01 0021;
+2FA10 0021;
+2FA13 0021;
+2F88F 0021;
+2A6D1 0021;
+2A6D3 0021;
+2A6D5 0021;
+0378 0021;
+E001 0021;
+E003 0021;
+E005 0021;
+F8FB 0021;
+F8FD 0021;
+F8FF 0021;
+C0000 0021;
+E0000 0021;
+E0003 0021;
+E0005 0021;
+F0001 0021;
+F0003 0021;
+F0005 0021;
+F00F9 0021;
+F00FB 0021;
+F00FD 0021;
+FFF01 0021;
+FFF03 0021;
+FFF05 0021;
+FFFF9 0021;
+FFFFB 0021;
+FFFFD 0021;
+100001 0021;
+100003 0021;
+100005 0021;
+1000F9 0021;
+1000FB 0021;
+1000FD 0021;
+10FF01 0021;
+10FF03 0021;
+10FF05 0021;
+10FFF9 0021;
+10FFFB 0021;
+10FFFD 0021;
+10FFFD 0062;
diff --git a/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt b/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt
new file mode 100644
index 0000000..9ca911e
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt
@@ -0,0 +1,13830 @@
+0009 0021;
+0085 0021;
+2002 0021;
+205F 0021;
+2006 003F;
+0640 0021;
+00B4 0021;
+005E 003F;
+FE4C 0021;
+00A8 0300 0334;
+1FEE 0334;
+1FEE 003F;
+1FBF 0334 0342;
+1FCF 0021;
+1FFE 0334 0300;
+1FFE 0021;
+FE33 0021;
+FE4E 003F;
+309C 003F;
+058A 003F;
+2011 003F;
+2014 003F;
+301C 003F;
+FE10 0021;
+060C 003F;
+1802 003F;
+FE11 003F;
+FE54 0021;
+204F 003F;
+FF1A 003F;
+0705 003F;
+1363 003F;
+1805 003F;
+16EC 003F;
+0007 0021;
+0016 0021;
+007F 0021;
+008A 0021;
+0094 0021;
+009E 0021;
+0596 0021;
+05A0 0021;
+05AA 0021;
+0601 0021;
+0617 0021;
+06DC 0021;
+06E8 0021;
+0F82 0021;
+1B6C 0021;
+200D 0021;
+2062 0021;
+A671 0021;
+FDD1 0021;
+FE05 0021;
+FE0F 0021;
+FFFB 0021;
+1D16F 0021;
+1D179 0021;
+1D185 0021;
+1D1AD 0021;
+4FFFE 0021;
+9FFFE 0021;
+E0001 0021;
+E0029 0021;
+E0033 0021;
+E003D 0021;
+E0047 0021;
+E0051 0021;
+E005B 0021;
+E0065 0021;
+E006F 0021;
+E0079 0021;
+E0103 0021;
+E010D 0021;
+E0117 0021;
+E0121 0021;
+E012B 0021;
+E0135 0021;
+E013F 0021;
+E0149 0021;
+E0153 0021;
+E015D 0021;
+E0167 0021;
+E0171 0021;
+E017B 0021;
+E0185 0021;
+E018F 0021;
+E0199 0021;
+E01A3 0021;
+E01AD 0021;
+E01B7 0021;
+E01C1 0021;
+E01CB 0021;
+E01D5 0021;
+E01DF 0021;
+E01E9 0021;
+10FFFF 0021;
+FF01 003F;
+1944 003F;
+000E 003F;
+0018 003F;
+0081 003F;
+008C 003F;
+0096 003F;
+034F 003F;
+0598 003F;
+05A2 003F;
+05AC 003F;
+0603 003F;
+0619 003F;
+06DE 003F;
+06EB 003F;
+0F86 003F;
+1B6E 003F;
+200F 003F;
+2064 003F;
+D800 003F;
+FDD3 003F;
+FE07 003F;
+FE23 003F;
+FFFF 003F;
+1D171 003F;
+1D17B 003F;
+1D187 003F;
+1D243 003F;
+5FFFE 003F;
+AFFFE 003F;
+E0021 003F;
+E002B 003F;
+E0035 003F;
+E003F 003F;
+E0049 003F;
+E0053 003F;
+E005D 003F;
+E0067 003F;
+E0071 003F;
+E007B 003F;
+E0105 003F;
+E010F 003F;
+E0119 003F;
+E0123 003F;
+E012D 003F;
+E0137 003F;
+E0141 003F;
+E014B 003F;
+E0155 003F;
+E015F 003F;
+E0169 003F;
+E0173 003F;
+E017D 003F;
+E0187 003F;
+E0191 003F;
+E019B 003F;
+E01A5 003F;
+E01AF 003F;
+E01B9 003F;
+E01C3 003F;
+E01CD 003F;
+E01D7 003F;
+E01E1 003F;
+E01EB 003F;
+FE16 0021;
+2047 003F;
+0709 003F;
+A60F 003F;
+2024 003F;
+FE19 003F;
+1362 003F;
+2CF9 003F;
+3002 003F;
+0965 003F;
+A876 003F;
+104A 003F;
+1B5F 003F;
+10A57 003F;
+10FB 003F;
+1B5A 003F;
+2058 003F;
+205D 003F;
+2E2D 003F;
+10100 003F;
+1091F 003F;
+FF07 0021;
+201B 003F;
+201C 003F;
+301E 003F;
+FE35 0021;
+207E 0021;
+FF09 003F;
+005D 003F;
+FF5B 003F;
+0F3A 003F;
+169C 003F;
+2983 003F;
+FF60 003F;
+298B 003F;
+2990 003F;
+2995 003F;
+27ED 003F;
+2E04 003F;
+2E0D 003F;
+2E22 003F;
+2E27 003F;
+FE3F 003F;
+FE3D 003F;
+FF62 003F;
+FE43 003F;
+FE3C 0021;
+FE3A 0021;
+FE18 0021;
+301B 003F;
+204B 003F;
+FF20 003F;
+2051 003F;
+2044 003F;
+0026 003F;
+0023 003F;
+066A 003F;
+2052 003F;
+2027 003F;
+2033 003F;
+2037 003F;
+203F 003F;
+2042 003F;
+2E08 003F;
+2E11 003F;
+2E16 003F;
+A67E 003F;
+05C0 003F;
+070A 003F;
+180A 003F;
+0F04 003F;
+0F09 003F;
+0F0C 003F;
+0F11 003F;
+0FD4 003F;
+104C 003F;
+109F 003F;
+166D 003F;
+10A50 003F;
+10A55 003F;
+02BA 003F;
+02C6 003F;
+02CB 003F;
+02D2 003F;
+02D7 003F;
+02E7 003F;
+02EC 003F;
+02F2 003F;
+02F7 003F;
+02FC 003F;
+1391 003F;
+1396 003F;
+A701 003F;
+A706 003F;
+A70B 003F;
+A710 003F;
+A715 003F;
+A71A 003F;
+A71F 003F;
+A78A 003F;
+060F 003F;
+0B70 003F;
+0BF7 003F;
+0CF2 003F;
+A82B 003F;
+0F13 003F;
+0F1B 003F;
+0F34 003F;
+0FBE 003F;
+0FC3 003F;
+0FC9 003F;
+0FCF 003F;
+19E4 003F;
+19E9 003F;
+19EE 003F;
+19F3 003F;
+19F8 003F;
+19FD 003F;
+1B63 003F;
+1B68 003F;
+1B76 003F;
+1B7B 003F;
+2117 003F;
+2125 003F;
+2141 003F;
+214C 003F;
+2190 003F;
+FFEB 003F;
+21AE 0334;
+2197 003F;
+219E 003F;
+21A3 003F;
+21A8 003F;
+21AD 003F;
+21B3 003F;
+21B8 003F;
+21BD 003F;
+21C2 003F;
+21C7 003F;
+21CC 003F;
+21D2 0338 0334;
+21D4 0021;
+21D8 003F;
+21DD 003F;
+21E2 003F;
+21E7 003F;
+21EC 003F;
+21F1 003F;
+21F6 003F;
+21FB 003F;
+2200 003F;
+1D6DB 003F;
+2204 003F;
+1D7A9 0021;
+2209 0021;
+220C 003F;
+2210 003F;
+FF0B 0021;
+00F7 003F;
+226E 003F;
+FF1D 0021;
+2A76 003F;
+FF1E 003F;
+FFE4 0021;
+208B 0021;
+2215 003F;
+221A 003F;
+221D 003F;
+2222 003F;
+2226 0021;
+222A 003F;
+222E 003F;
+2233 003F;
+2238 003F;
+2241 0021;
+2240 003F;
+2247 0334;
+2249 0021;
+226D 0334;
+2250 003F;
+2255 003F;
+225A 003F;
+225F 003F;
+2270 0334;
+2271 003F;
+226A 003F;
+2274 003F;
+2278 0021;
+2280 0334;
+2281 003F;
+22E1 0021;
+2284 0021;
+2288 0334;
+2289 003F;
+228E 003F;
+22E2 003F;
+2294 003F;
+2299 003F;
+229E 003F;
+22AC 0021;
+22A6 003F;
+22AE 0334;
+22AF 0021;
+22EA 0021;
+22EC 0334;
+22ED 003F;
+22BA 003F;
+22BF 003F;
+22C4 003F;
+22C9 003F;
+22CE 003F;
+22D3 003F;
+22D8 003F;
+22DD 003F;
+22E6 003F;
+22EF 003F;
+22F4 003F;
+22F9 003F;
+22FE 003F;
+2303 003F;
+2308 003F;
+230D 003F;
+2312 003F;
+2317 003F;
+231C 003F;
+2321 003F;
+2326 003F;
+232D 003F;
+2332 003F;
+2337 003F;
+233C 003F;
+2341 003F;
+2346 003F;
+234B 003F;
+2350 003F;
+2355 003F;
+235A 003F;
+235F 003F;
+2364 003F;
+2369 003F;
+236E 003F;
+2373 003F;
+2378 003F;
+237D 003F;
+2382 003F;
+2387 003F;
+238C 003F;
+2391 003F;
+2396 003F;
+239B 003F;
+23A0 003F;
+23A5 003F;
+23AA 003F;
+23AF 003F;
+23B4 003F;
+23B9 003F;
+23BE 003F;
+23C3 003F;
+23C8 003F;
+23CD 003F;
+23D2 003F;
+23D7 003F;
+23DC 003F;
+23E1 003F;
+23E6 003F;
+2403 003F;
+2408 003F;
+240D 003F;
+2412 003F;
+2417 003F;
+241C 003F;
+2421 003F;
+2426 003F;
+2444 003F;
+2449 003F;
+FFE8 003F;
+2507 003F;
+250C 003F;
+2511 003F;
+2516 003F;
+251B 003F;
+2520 003F;
+2525 003F;
+252A 003F;
+252F 003F;
+2534 003F;
+2539 003F;
+253E 003F;
+2543 003F;
+2548 003F;
+254D 003F;
+2552 003F;
+2557 003F;
+255C 003F;
+2561 003F;
+2566 003F;
+256B 003F;
+2570 003F;
+2575 003F;
+257A 003F;
+257F 003F;
+2584 003F;
+2589 003F;
+258E 003F;
+2593 003F;
+2598 003F;
+259D 003F;
+25A1 003F;
+25A6 003F;
+25AB 003F;
+25B0 003F;
+25B5 003F;
+25BA 003F;
+25BF 003F;
+25C4 003F;
+25C9 003F;
+25CD 003F;
+25D2 003F;
+25D7 003F;
+25DC 003F;
+25E1 003F;
+25E6 003F;
+25EB 003F;
+25F0 003F;
+25F5 003F;
+25FA 003F;
+25FF 003F;
+2604 003F;
+2609 003F;
+260E 003F;
+2613 003F;
+2618 003F;
+261D 003F;
+2622 003F;
+2627 003F;
+262C 003F;
+2639 003F;
+263E 003F;
+2643 003F;
+2648 003F;
+264D 003F;
+2652 003F;
+2657 003F;
+265C 003F;
+2661 003F;
+2666 003F;
+266B 003F;
+2673 003F;
+2678 003F;
+267D 003F;
+2682 003F;
+2687 003F;
+2692 003F;
+2697 003F;
+269C 003F;
+26A3 003F;
+26A8 003F;
+26AD 003F;
+26B2 003F;
+26B7 003F;
+26BC 003F;
+2701 003F;
+2707 003F;
+270E 003F;
+2713 003F;
+2718 003F;
+271D 003F;
+2722 003F;
+2727 003F;
+272D 003F;
+2732 003F;
+2737 003F;
+273C 003F;
+2741 003F;
+2746 003F;
+274B 003F;
+2752 003F;
+275B 003F;
+2762 003F;
+2767 003F;
+276C 003F;
+2771 003F;
+2794 003F;
+279C 003F;
+27A1 003F;
+27A6 003F;
+27AB 003F;
+27B1 003F;
+27B6 003F;
+27BB 003F;
+27C1 003F;
+27C6 003F;
+27CC 003F;
+27D4 003F;
+27D9 003F;
+27DE 003F;
+27E3 003F;
+27E8 003F;
+27F1 003F;
+27F6 003F;
+27FB 003F;
+2900 003F;
+2905 003F;
+290A 003F;
+290F 003F;
+2914 003F;
+2919 003F;
+291E 003F;
+2923 003F;
+2928 003F;
+292D 003F;
+2932 003F;
+2937 003F;
+293C 003F;
+2941 003F;
+2946 003F;
+294B 003F;
+2950 003F;
+2955 003F;
+295A 003F;
+295F 003F;
+2964 003F;
+2969 003F;
+296E 003F;
+2973 003F;
+2978 003F;
+297D 003F;
+2982 003F;
+299D 003F;
+29A2 003F;
+29A7 003F;
+29AC 003F;
+29B1 003F;
+29B6 003F;
+29BB 003F;
+29C0 003F;
+29C5 003F;
+29CA 003F;
+29CF 003F;
+29D4 003F;
+29D9 003F;
+29DE 003F;
+29E3 003F;
+29E8 003F;
+29ED 003F;
+29F2 003F;
+29F7 003F;
+29FE 003F;
+2A03 003F;
+2A08 003F;
+2A0E 003F;
+2A13 003F;
+2A18 003F;
+2A1D 003F;
+2A22 003F;
+2A27 003F;
+2A2C 003F;
+2A31 003F;
+2A36 003F;
+2A3B 003F;
+2A40 003F;
+2A45 003F;
+2A4A 003F;
+2A4F 003F;
+2A54 003F;
+2A59 003F;
+2A5E 003F;
+2A63 003F;
+2A68 003F;
+2A6D 003F;
+2A72 003F;
+2A7A 003F;
+2A7F 003F;
+2A84 003F;
+2A89 003F;
+2A8E 003F;
+2A93 003F;
+2A98 003F;
+2A9D 003F;
+2AA2 003F;
+2AA7 003F;
+2AAC 003F;
+2AB1 003F;
+2AB6 003F;
+2ABB 003F;
+2AC0 003F;
+2AC5 003F;
+2ACA 003F;
+2ACF 003F;
+2AD4 003F;
+2AD9 003F;
+2ADD 003F;
+2AE2 003F;
+2AE7 003F;
+2AEC 003F;
+2AF1 003F;
+2AF6 003F;
+2AFB 003F;
+2B00 003F;
+2B05 003F;
+2B0A 003F;
+2B0F 003F;
+2B14 003F;
+2B19 003F;
+2B1E 003F;
+2B23 003F;
+2B28 003F;
+2B2D 003F;
+2B32 003F;
+2B37 003F;
+2B3C 003F;
+2B41 003F;
+2B46 003F;
+2B4B 003F;
+2B53 003F;
+2CE8 003F;
+2802 003F;
+2807 003F;
+280C 003F;
+2811 003F;
+2816 003F;
+281B 003F;
+2820 003F;
+2825 003F;
+282A 003F;
+282F 003F;
+2834 003F;
+2839 003F;
+283E 003F;
+2843 003F;
+2848 003F;
+284D 003F;
+2852 003F;
+2857 003F;
+285C 003F;
+2861 003F;
+2866 003F;
+286B 003F;
+2870 003F;
+2875 003F;
+287A 003F;
+287F 003F;
+2884 003F;
+2889 003F;
+288E 003F;
+2893 003F;
+2898 003F;
+289D 003F;
+28A2 003F;
+28A7 003F;
+28AC 003F;
+28B1 003F;
+28B6 003F;
+28BB 003F;
+28C0 003F;
+28C5 003F;
+28CA 003F;
+28CF 003F;
+28D4 003F;
+28D9 003F;
+28DE 003F;
+28E3 003F;
+28E8 003F;
+28ED 003F;
+28F2 003F;
+28F7 003F;
+28FC 003F;
+268B 003F;
+2630 003F;
+2635 003F;
+4DC2 003F;
+4DC7 003F;
+4DCC 003F;
+4DD1 003F;
+4DD6 003F;
+4DDB 003F;
+4DE0 003F;
+4DE5 003F;
+4DEA 003F;
+4DEF 003F;
+4DF4 003F;
+4DF9 003F;
+4DFE 003F;
+1D303 003F;
+1D308 003F;
+1D30D 003F;
+1D312 003F;
+1D317 003F;
+1D31C 003F;
+1D321 003F;
+1D326 003F;
+1D32B 003F;
+1D330 003F;
+1D335 003F;
+1D33A 003F;
+1D33F 003F;
+1D344 003F;
+1D349 003F;
+1D34E 003F;
+1D353 003F;
+A491 003F;
+A496 003F;
+A49B 003F;
+A4A0 003F;
+A4A5 003F;
+A4AA 003F;
+A4AF 003F;
+A4B4 003F;
+A4B9 003F;
+A4BE 003F;
+A4C3 003F;
+10138 003F;
+1013D 003F;
+1017B 003F;
+10180 003F;
+10185 003F;
+10190 003F;
+10195 003F;
+1019A 003F;
+101D3 003F;
+101D8 003F;
+101DD 003F;
+101E2 003F;
+101E7 003F;
+101EC 003F;
+101F1 003F;
+101F6 003F;
+101FB 003F;
+1D003 003F;
+1D008 003F;
+1D00D 003F;
+1D012 003F;
+1D017 003F;
+1D01C 003F;
+1D021 003F;
+1D026 003F;
+1D02B 003F;
+1D030 003F;
+1D035 003F;
+1D03A 003F;
+1D03F 003F;
+1D044 003F;
+1D049 003F;
+1D04E 003F;
+1D053 003F;
+1D058 003F;
+1D05D 003F;
+1D062 003F;
+1D067 003F;
+1D06C 003F;
+1D071 003F;
+1D076 003F;
+1D07B 003F;
+1D080 003F;
+1D085 003F;
+1D08A 003F;
+1D08F 003F;
+1D094 003F;
+1D099 003F;
+1D09E 003F;
+1D0A3 003F;
+1D0A8 003F;
+1D0AD 003F;
+1D0B2 003F;
+1D0B7 003F;
+1D0BC 003F;
+1D0C1 003F;
+1D0C6 003F;
+1D0CB 003F;
+1D0D0 003F;
+1D0D5 003F;
+1D0DA 003F;
+1D0DF 003F;
+1D0E4 003F;
+1D0E9 003F;
+1D0EE 003F;
+1D0F3 003F;
+1D102 003F;
+1D107 003F;
+1D10C 003F;
+1D111 003F;
+1D116 003F;
+1D11B 003F;
+1D120 003F;
+1D125 003F;
+1D12A 003F;
+1D12F 003F;
+1D134 003F;
+1D139 003F;
+1D13D 003F;
+1D142 003F;
+1D147 003F;
+1D14C 003F;
+1D151 003F;
+1D156 003F;
+1D158 0334 1D165 1D16F;
+1D158 1D165 1D171 0334;
+1D161 0334;
+1D160 003F;
+1D15B 003F;
+1D16C 003F;
+1D18E 003F;
+1D193 003F;
+1D198 003F;
+1D19D 003F;
+1D1A2 003F;
+1D1A7 003F;
+1D1B0 003F;
+1D1B5 003F;
+1D1B9 1D165 0334 1D16E;
+1D1BD 0021;
+1D1BC 0334;
+1D1C0 0021;
+1D1C3 003F;
+1D1C8 003F;
+1D1CD 003F;
+1D1D2 003F;
+1D1D7 003F;
+1D1DC 003F;
+1D203 003F;
+1D208 003F;
+1D20D 003F;
+1D212 003F;
+1D217 003F;
+1D21C 003F;
+1D221 003F;
+1D226 003F;
+1D22B 003F;
+1D230 003F;
+1D235 003F;
+1D23A 003F;
+1D23F 003F;
+1F001 003F;
+1F006 003F;
+1F00B 003F;
+1F010 003F;
+1F015 003F;
+1F01A 003F;
+1F01F 003F;
+1F024 003F;
+1F029 003F;
+1F032 003F;
+1F037 003F;
+1F03C 003F;
+1F041 003F;
+1F046 003F;
+1F04B 003F;
+1F050 003F;
+1F055 003F;
+1F05A 003F;
+1F05F 003F;
+1F064 003F;
+1F069 003F;
+1F06E 003F;
+1F073 003F;
+1F078 003F;
+1F07D 003F;
+1F082 003F;
+1F087 003F;
+1F08C 003F;
+1F091 003F;
+2FF2 003F;
+2FF7 003F;
+31C0 003F;
+31C5 003F;
+31CA 003F;
+31CF 003F;
+31D4 003F;
+31D9 003F;
+31DE 003F;
+31E3 003F;
+3020 003F;
+3191 003F;
+09F9 003F;
+0D71 003F;
+1372 003F;
+1377 003F;
+137C 003F;
+2187 003F;
+10110 003F;
+10115 003F;
+1011A 003F;
+1011F 003F;
+10124 003F;
+10129 003F;
+1012E 003F;
+10133 003F;
+10146 003F;
+1014C 003F;
+10152 003F;
+10157 003F;
+10164 003F;
+10169 003F;
+1016E 003F;
+10174 003F;
+103D3 003F;
+10919 003F;
+12432 003F;
+1245B 003F;
+12460 003F;
+1D36B 003F;
+1D370 003F;
+0314 003F;
+0306 003F;
+0308 003F;
+0338 003F;
+0309 0021;
+0311 0021;
+0318 0021;
+031D 0021;
+0322 0021;
+0329 0021;
+032E 0021;
+0334 0591;
+0334 059B;
+0334 05A5;
+0334 05AF;
+0334 06D6;
+0334 06E2;
+0334 0F19;
+0334 1B6D;
+0334 1D166;
+0334 1D17E;
+0334 1D18A;
+0592 0334;
+059C 0334;
+05A6 0334;
+05BD 0334;
+0617 0334;
+06DC 0334;
+06EB 0334;
+0F87 0334;
+1B73 0334;
+1D169 0334;
+1D17E 0334;
+1D18A 0334;
+0334 003F;
+0334 0301;
+0334 0302;
+0308 0334 0341;
+0334 0327;
+0334 030D;
+0334 0312;
+0334 0319;
+0334 031E;
+0334 0323;
+0334 032A;
+0334 032F;
+0334 033A;
+0334 033F;
+0334 0349;
+0334 034E;
+0334 0354;
+0334 0359;
+0334 035E;
+0361 0334;
+0334 1DC3;
+0334 1DC8;
+1DD1 0334;
+0485 0334;
+05B1 0334;
+05B6 0334;
+05BA 0334;
+05BF 0334;
+064E 0334;
+0653 0334;
+0658 0334;
+065D 0334;
+0731 0334;
+0736 0334;
+073B 0334;
+0740 0334;
+0745 0334;
+074A 0334;
+07EF 0334;
+093C 0334;
+09BC 0334;
+1B34 0334;
+0E48 0334;
+0EC9 0334;
+A92D 0334;
+0334 193A;
+0334 302D;
+0334 20D0;
+0334 20D7;
+0334 20E8;
+0334 20EF;
+0337 0021;
+033C 003F;
+0346 003F;
+034B 003F;
+0351 003F;
+0356 003F;
+035B 003F;
+FE22 0021;
+1DC0 003F;
+1DC5 003F;
+1DCB 003F;
+1DD0 003F;
+0484 003F;
+A67C 003F;
+05B3 003F;
+05B8 003F;
+05C2 003F;
+064B 003F;
+FC5E 003F;
+FE77 003F;
+FE79 003F;
+FE7B 003F;
+FE7D 003F;
+FE7E 003F;
+0657 003F;
+065C 003F;
+0730 003F;
+0735 003F;
+073A 003F;
+073F 003F;
+0744 003F;
+0749 003F;
+07EE 003F;
+07F3 003F;
+0951 003F;
+0981 003F;
+0A02 003F;
+0A81 003F;
+0B02 003F;
+0C03 003F;
+0D03 003F;
+1B01 003F;
+1B81 003F;
+10A0D 003F;
+10A3A 0021;
+0E4A 0021;
+0EC9 0021;
+0F39 0021;
+A92C 0021;
+108D 0021;
+17C9 0021;
+17CE 0021;
+17DD 0021;
+302B 0021;
+3099 0021;
+20D1 0021;
+20D5 0021;
+20D9 003F;
+20DD 003F;
+20E2 003F;
+20E6 0334;
+20EB 0021;
+20EF 003F;
+02D1 0021;
+0E46 0021;
+3005 0021;
+3031 0021;
+3033 0021;
+3035 0021;
+309E 0021;
+FF70 0021;
+30FD 0334 3099;
+30FE 0062;
+00A2 0061;
+FE69 0021;
+FE69 0062;
+FFE1 0062;
+FFE5 0062;
+09F2 0062;
+0AF1 0062;
+0E3F 0062;
+20A0 0062;
+20A2 0062;
+20A4 0062;
+20A6 0062;
+20A9 0061;
+20AA 0062;
+20AC 0062;
+20AE 0062;
+20B0 0062;
+20B2 0062;
+20B4 0062;
+1D7CE 0021;
+24EA 0021;
+06F0 0021;
+0A66 0021;
+0C66 003F;
+19D0 0021;
+1C40 0021;
+17F0 0021;
+1C50 0021;
+FF10 0061;
+1D7EC 0041;
+0660 0061;
+09E6 0061;
+0C66 0061;
+1946 0061;
+0F33 0061;
+17E0 0061;
+1810 0061;
+0030 0062;
+2080 0062;
+0BE6 0062;
+0F20 0062;
+1BB0 0062;
+3358 0062;
+1D7D9 0021;
+24F5 0021;
+00B9 003F;
+07C1 003F;
+09F4 003F;
+0C79 0021;
+A8D1 003F;
+0F21 003F;
+1091 003F;
+1BB1 003F;
+10107 003F;
+10320 003F;
+1241E 003F;
+1D360 003F;
+2469 003F;
+24FE 0061;
+247D 0062;
+33E9 0062;
+3362 0062;
+2492 0041;
+24EB 0062;
+32CA 0062;
+246B 0021;
+246B 0061;
+00BD 0062;
+32CB 0062;
+246C 0021;
+246C 0061;
+2153 0062;
+3365 0062;
+00BC 003F;
+00BC 0041;
+33ED 0062;
+246E 0021;
+246E 0061;
+2155 0062;
+3367 0062;
+2159 003F;
+2159 0041;
+33EF 0062;
+2470 0021;
+2470 0041;
+33F0 0062;
+2471 0021;
+2471 0061;
+215B 0062;
+336A 0062;
+249A 0041;
+24F3 0062;
+336B 0062;
+1D7D9 0061;
+24F5 0061;
+00B9 0041;
+07C1 0041;
+09F4 0041;
+0C79 0061;
+A8D1 0041;
+0F21 0041;
+1091 0041;
+1BB1 0041;
+10107 0041;
+10320 0041;
+1241E 0041;
+1D360 0041;
+2460 0062;
+07C1 0062;
+0C67 0062;
+0F21 0062;
+1BB1 0062;
+10320 0062;
+1D360 0062;
+32C0 0062;
+2475 0021;
+1D7DA 003F;
+24F6 003F;
+06F2 0021;
+09E8 0021;
+0BE8 0021;
+0D68 0021;
+0ED2 0021;
+1042 0021;
+1B52 0021;
+3022 0021;
+1015D 003F;
+1244A 0021;
+12450 003F;
+2473 0021;
+2473 0041;
+33F3 0062;
+3251 0062;
+336D 0062;
+33F5 0062;
+3253 0061;
+33F6 0062;
+3254 0062;
+3370 0062;
+2156 0062;
+3256 0062;
+3257 0062;
+3258 0062;
+3259 0062;
+2475 0061;
+1D7DA 0041;
+24F6 0041;
+06F2 0061;
+09E8 0061;
+0BE8 0061;
+0D68 0061;
+0ED2 0061;
+1042 0061;
+1B52 0061;
+3022 0061;
+1015D 0041;
+1244A 0061;
+12450 0041;
+1D7D0 0062;
+00B2 0062;
+0A68 0062;
+1948 0062;
+17E2 0062;
+1015B 0062;
+12435 0062;
+33E1 0062;
+335A 0062;
+1D7DB 0021;
+24F7 0021;
+00B3 003F;
+136B 003F;
+0A69 003F;
+0C69 003F;
+1949 003F;
+0F2C 003F;
+17E3 003F;
+1813 003F;
+12408 0021;
+1243B 0021;
+1242F 003F;
+1D362 003F;
+33FD 0062;
+33FE 0062;
+325D 0062;
+00BE 0062;
+2157 0062;
+32B2 0062;
+215C 0062;
+2476 0061;
+1D7DB 0041;
+24F7 0041;
+06F3 0061;
+09E9 0061;
+0BE9 0061;
+0D69 0061;
+0ED3 0061;
+1043 0061;
+1B53 0061;
+3023 0061;
+1242E 0061;
+12417 0041;
+1244B 0041;
+1D7D1 0062;
+00B3 0062;
+0A69 0062;
+1949 0062;
+17E3 0062;
+12401 0062;
+1243A 0062;
+33E2 0062;
+335B 0062;
+1D7DC 0021;
+24F8 0021;
+2074 003F;
+136C 003F;
+0A6A 003F;
+0CEA 003F;
+0E54 003F;
+A904 003F;
+AA54 003F;
+A624 003F;
+12426 0021;
+12402 003F;
+1243E 003F;
+32B5 003F;
+32B7 003F;
+32B9 003F;
+2158 0061;
+32BC 003F;
+32BE 003F;
+2477 0041;
+1D7F0 0041;
+2783 0041;
+07C4 0061;
+09EA 0041;
+0C6A 0061;
+19D4 0061;
+1C44 0061;
+17F4 0061;
+1C54 0061;
+1240F 0061;
+1244C 0061;
+12438 0041;
+1D363 0061;
+1D7FA 0062;
+07C4 0062;
+0C6A 0062;
+1C44 0062;
+1C54 0062;
+12430 0062;
+1D363 0062;
+32C3 0062;
+2478 0021;
+1D7DD 003F;
+24F9 003F;
+06F5 0021;
+09EB 0021;
+0C6B 0021;
+19D5 0021;
+1C45 0021;
+17F5 0021;
+1C55 0021;
+1014F 0021;
+12403 0021;
+12455 0021;
+12454 003F;
+215A 003F;
+0035 0041;
+1D7F1 0061;
+2784 0061;
+2085 0041;
+104A5 0041;
+0B6B 0041;
+A8D5 0041;
+0F25 0041;
+1095 0041;
+1BB5 0041;
+1010B 0041;
+10173 0041;
+12439 0061;
+12431 0041;
+248C 0062;
+278E 0062;
+0A6B 0062;
+0E55 0062;
+AA55 0062;
+1014F 0062;
+12431 0062;
+33E4 0062;
+335D 0062;
+1D7DE 0021;
+24FA 0021;
+2076 003F;
+136E 003F;
+0AEC 003F;
+0D6C 003F;
+0ED6 003F;
+1046 003F;
+1B56 003F;
+3026 003F;
+12440 0021;
+1D365 003F;
+1D7DE 0061;
+24FA 0061;
+2076 0041;
+136E 0041;
+0AEC 0041;
+0D6C 0041;
+0ED6 0041;
+1046 0041;
+1B56 0041;
+3026 0041;
+12440 0061;
+1D365 0041;
+2465 0062;
+136E 0062;
+0D6C 0062;
+1046 0062;
+3026 0062;
+1D365 0062;
+32C5 0062;
+247A 0021;
+1D7DF 003F;
+24FB 003F;
+06F7 0021;
+09ED 0021;
+0C6D 0021;
+19D7 0021;
+1C47 0021;
+17F7 0021;
+1C57 0021;
+12412 0021;
+12429 003F;
+215E 0062;
+1D7DF 0061;
+24FB 0061;
+2077 0041;
+136F 0041;
+0AED 0041;
+0D6D 0041;
+0ED7 0041;
+1047 0041;
+1B57 0041;
+3027 0041;
+12443 0061;
+1D366 0041;
+2466 0062;
+136F 0062;
+0D6D 0062;
+1047 0062;
+3027 0062;
+1D366 0062;
+32C6 0062;
+247B 0021;
+1D7E0 003F;
+24FC 003F;
+06F8 0021;
+09EE 0021;
+0C6E 0021;
+19D8 0021;
+1C48 0021;
+17F8 0021;
+1C58 0021;
+12413 0021;
+12444 003F;
+247B 0041;
+1D7F4 0041;
+2787 0041;
+07C8 0061;
+0A6E 0061;
+0CEE 0061;
+0E58 0061;
+A908 0061;
+AA58 0061;
+A628 0061;
+1242A 0061;
+1D367 0061;
+1D7FE 0062;
+07C8 0062;
+0CEE 0062;
+A908 0062;
+A628 0062;
+1D367 0062;
+32C7 0062;
+247C 0021;
+1D7E1 003F;
+24FD 003F;
+06F9 0021;
+09EF 0021;
+0C6F 0021;
+19D9 0021;
+1C49 0021;
+17F9 0021;
+1C59 0021;
+12414 0021;
+1241D 003F;
+FF19 0061;
+1D7FF 0061;
+2792 0061;
+0669 0061;
+096F 0061;
+0BEF 0061;
+194F 0061;
+0F32 0061;
+17E9 0061;
+1819 0061;
+12407 0061;
+1240E 0041;
+0039 0062;
+24FD 0062;
+104A9 0062;
+A8D9 0062;
+1099 0062;
+1010F 0062;
+1D368 0062;
+32C8 0062;
+000D 0061;
+2004 0061;
+1680 0061;
+005E 0061;
+02D9 0061;
+1FCD 0061;
+FE33 0061;
+00AD 0061;
+2012 0061;
+3030 0061;
+060D 0061;
+FF64 0061;
+2A74 0061;
+0706 0061;
+0F14 0061;
+FE57 0061;
+FE56 0061;
+2CFB 0061;
+FE52 0061;
+1B5C 0061;
+0964 0061;
+A92F 0061;
+10A56 0061;
+1A1F 0061;
+205C 0061;
+1093F 0061;
+12473 0061;
+FF02 0061;
+0028 0061;
+FE5A 0061;
+FE5B 0061;
+169B 0061;
+2986 0061;
+298F 0061;
+27EC 0061;
+2E0C 0061;
+2E26 0061;
+300A 0061;
+300E 0061;
+FE5D 0061;
+301A 0061;
+FE6B 0061;
+FF0F 0061;
+0023 0061;
+060A 0061;
+2057 0061;
+203B 0061;
+2E07 0061;
+2E15 0061;
+05BE 0061;
+1800 0061;
+0F08 0061;
+0F10 0061;
+1940 0061;
+17DA 0061;
+10A54 0061;
+02C5 0061;
+02CF 0061;
+02E6 0061;
+02F1 0061;
+02FB 0061;
+1395 0061;
+A705 0061;
+A70F 0061;
+A719 0061;
+A789 0061;
+09FA 0061;
+0CF1 0061;
+0F03 0061;
+0F1F 0061;
+0FC2 0061;
+0FCE 0061;
+19E8 0061;
+19F2 0061;
+19FC 0061;
+1B67 0061;
+1B7A 0061;
+2123 0061;
+214A 0061;
+2191 0061;
+2199 0061;
+21A5 0061;
+21B0 0061;
+21BA 0061;
+21C4 0061;
+21D0 0061;
+21D8 0061;
+21E2 0061;
+21EC 0061;
+21F6 0061;
+2200 0061;
+2205 0061;
+220A 0061;
+002B 0061;
+226E 0061;
+FF1D 0061;
+FFE4 0061;
+2216 0061;
+221E 0061;
+2228 0061;
+2231 0061;
+223B 0061;
+2245 0061;
+224E 0061;
+2258 0061;
+2263 0061;
+226B 0061;
+227A 0061;
+2282 0061;
+228C 0061;
+2294 0061;
+229E 0061;
+22A7 0061;
+22B2 0061;
+22B8 0061;
+22C2 0061;
+22CC 0061;
+22D6 0061;
+22E4 0061;
+22F2 0061;
+22FC 0061;
+2306 0061;
+2310 0061;
+231A 0061;
+2324 0061;
+2330 0061;
+233A 0061;
+2344 0061;
+234E 0061;
+2358 0061;
+2362 0061;
+236C 0061;
+2376 0061;
+2380 0061;
+238A 0061;
+2394 0061;
+239E 0061;
+23A8 0061;
+23B2 0061;
+23BC 0061;
+23C6 0061;
+23D0 0061;
+23DA 0061;
+23E4 0061;
+2406 0061;
+2410 0061;
+241A 0061;
+2424 0061;
+2447 0061;
+2505 0061;
+250F 0061;
+2519 0061;
+2523 0061;
+252D 0061;
+2537 0061;
+2541 0061;
+254B 0061;
+2555 0061;
+255F 0061;
+2569 0061;
+2573 0061;
+257D 0061;
+2587 0061;
+2591 0061;
+259B 0061;
+25A4 0061;
+25AE 0061;
+25B8 0061;
+25C2 0061;
+FFEE 0061;
+25D5 0061;
+25DF 0061;
+25E9 0061;
+25F3 0061;
+25FD 0061;
+2607 0061;
+2611 0061;
+261B 0061;
+2625 0061;
+262F 0061;
+2641 0061;
+264B 0061;
+2655 0061;
+265F 0061;
+2669 0061;
+2676 0061;
+2680 0061;
+2690 0061;
+269A 0061;
+26A6 0061;
+26B0 0061;
+26BA 0061;
+2704 0061;
+2711 0061;
+271B 0061;
+2725 0061;
+2730 0061;
+273A 0061;
+2744 0061;
+2750 0061;
+275E 0061;
+276A 0061;
+2774 0061;
+279F 0061;
+27A9 0061;
+27B4 0061;
+27BE 0061;
+27C9 0061;
+27D7 0061;
+27E1 0061;
+27EB 0061;
+27F9 0061;
+2903 0061;
+290D 0061;
+2917 0061;
+2921 0061;
+292B 0061;
+2935 0061;
+293F 0061;
+2949 0061;
+2953 0061;
+295D 0061;
+2967 0061;
+2971 0061;
+297B 0061;
+299B 0061;
+29A5 0061;
+29AF 0061;
+29B9 0061;
+29C3 0061;
+29CD 0061;
+29D7 0061;
+29E1 0061;
+29EB 0061;
+29F5 0061;
+2A01 0061;
+2A0B 0061;
+2A16 0061;
+2A20 0061;
+2A2A 0061;
+2A34 0061;
+2A3E 0061;
+2A48 0061;
+2A52 0061;
+2A5C 0061;
+2A66 0061;
+2A70 0061;
+2A7D 0061;
+2A87 0061;
+2A91 0061;
+2A9B 0061;
+2AA5 0061;
+2AAF 0061;
+2AB9 0061;
+2AC3 0061;
+2ACD 0061;
+2AD7 0061;
+2AE1 0061;
+2AEB 0061;
+2AF5 0061;
+2AFF 0061;
+2B09 0061;
+2B13 0061;
+2B1D 0061;
+2B27 0061;
+2B31 0061;
+2B3B 0061;
+2B45 0061;
+2B52 0061;
+2801 0061;
+280B 0061;
+2815 0061;
+281F 0061;
+2829 0061;
+2833 0061;
+283D 0061;
+2847 0061;
+2851 0061;
+285B 0061;
+2865 0061;
+286F 0061;
+2879 0061;
+2883 0061;
+288D 0061;
+2897 0061;
+28A1 0061;
+28AB 0061;
+28B5 0061;
+28BF 0061;
+28C9 0061;
+28D3 0061;
+28DD 0061;
+28E7 0061;
+28F1 0061;
+28FB 0061;
+268F 0061;
+4DC1 0061;
+4DCB 0061;
+4DD5 0061;
+4DDF 0061;
+4DE9 0061;
+4DF3 0061;
+4DFD 0061;
+1D307 0061;
+1D311 0061;
+1D31B 0061;
+1D325 0061;
+1D32F 0061;
+1D339 0061;
+1D343 0061;
+1D34D 0061;
+A490 0061;
+A49A 0061;
+A4A4 0061;
+A4AE 0061;
+A4B8 0061;
+A4C2 0061;
+1013C 0061;
+1017F 0061;
+10189 0061;
+10199 0061;
+101D7 0061;
+101E1 0061;
+101EB 0061;
+101F5 0061;
+1D002 0061;
+1D00C 0061;
+1D016 0061;
+1D020 0061;
+1D02A 0061;
+1D034 0061;
+1D03E 0061;
+1D048 0061;
+1D052 0061;
+1D05C 0061;
+1D066 0061;
+1D070 0061;
+1D07A 0061;
+1D084 0061;
+1D08E 0061;
+1D098 0061;
+1D0A2 0061;
+1D0AC 0061;
+1D0B6 0061;
+1D0C0 0061;
+1D0CA 0061;
+1D0D4 0061;
+1D0DE 0061;
+1D0E8 0061;
+1D0F2 0061;
+1D106 0061;
+1D110 0061;
+1D11A 0061;
+1D124 0061;
+1D12E 0061;
+1D138 0061;
+1D141 0061;
+1D14B 0061;
+1D155 0061;
+1D164 0061;
+1D184 0061;
+1D195 0061;
+1D19F 0061;
+1D1A9 0061;
+1D1B7 0061;
+1D1C1 0061;
+1D1CB 0061;
+1D1D5 0061;
+1D201 0061;
+1D20B 0061;
+1D215 0061;
+1D21F 0061;
+1D229 0061;
+1D233 0061;
+1D23D 0061;
+1F004 0061;
+1F00E 0061;
+1F018 0061;
+1F022 0061;
+1F030 0061;
+1F03A 0061;
+1F044 0061;
+1F04E 0061;
+1F058 0061;
+1F062 0061;
+1F06C 0061;
+1F076 0061;
+1F080 0061;
+1F08A 0061;
+2FF0 0061;
+2FFA 0061;
+31C8 0061;
+31D2 0061;
+31DC 0061;
+3036 0061;
+FFFD 0061;
+0D74 0061;
+137A 0061;
+10322 0061;
+10118 0061;
+10122 0061;
+1012C 0061;
+10144 0061;
+10150 0061;
+10162 0061;
+1016C 0061;
+10177 0061;
+10A46 0061;
+1245E 0061;
+1D36E 0061;
+0006 0061;
+0015 0061;
+001F 0061;
+0089 0061;
+0093 0061;
+009D 0061;
+0595 0061;
+059F 0061;
+05A9 0061;
+0600 0061;
+0616 0061;
+06DB 0061;
+06E7 0061;
+0F37 0061;
+1B6B 0061;
+200C 0061;
+2061 0061;
+A670 0061;
+FDD0 0061;
+FE04 0061;
+FE0E 0061;
+FFFA 0061;
+1D16E 0061;
+1D178 0061;
+1D182 0061;
+1D1AC 0061;
+3FFFF 0061;
+8FFFF 0061;
+DFFFF 0061;
+E0028 0061;
+E0032 0061;
+E003C 0061;
+E0046 0061;
+E0050 0061;
+E005A 0061;
+E0064 0061;
+E006E 0061;
+E0078 0061;
+E0102 0061;
+E010C 0061;
+E0116 0061;
+E0120 0061;
+E012A 0061;
+E0134 0061;
+E013E 0061;
+E0148 0061;
+E0152 0061;
+E015C 0061;
+E0166 0061;
+E0170 0061;
+E017A 0061;
+E0184 0061;
+E018E 0061;
+E0198 0061;
+E01A2 0061;
+E01AC 0061;
+E01B6 0061;
+E01C0 0061;
+E01CA 0061;
+E01D4 0061;
+E01DE 0061;
+E01E8 0061;
+10FFFE 0061;
+1D41A 0021;
+1D622 0021;
+1D586 003F;
+000B 0041;
+2002 0041;
+205F 0041;
+1FFD 0041;
+FE4C 0041;
+1FBD 0041;
+02DB 0041;
+309B 0041;
+2010 0041;
+2E17 0041;
+055D 0041;
+FE11 0041;
+061B 0041;
+0704 0041;
+1804 0041;
+0021 0041;
+003F 0041;
+1945 0041;
+002E 0041;
+1809 0041;
+00B7 0041;
+1735 0041;
+AA5E 0041;
+1368 0041;
+205A 0041;
+2CFF 0041;
+12471 0041;
+203A 0041;
+00AB 0041;
+208E 0041;
+007B 0041;
+0F3C 0041;
+2985 0041;
+298D 0041;
+2997 0041;
+2E09 0041;
+2E24 0041;
+3009 0041;
+FE42 0041;
+3014 0041;
+3018 0041;
+00AE 0041;
+A673 0041;
+214B 0041;
+0609 0041;
+204C 0041;
+303D 0041;
+2E01 0041;
+2E13 0041;
+055B 0041;
+070C 0041;
+0F06 0041;
+0F0E 0041;
+1C3E 0041;
+17D8 0041;
+10A52 0041;
+02C3 0041;
+02CD 0041;
+02DF 0041;
+02EF 0041;
+02F9 0041;
+1393 0041;
+A703 0041;
+A70D 0041;
+A717 0041;
+A721 0041;
+FDFD 0041;
+0BFA 0041;
+0F01 0041;
+0F1D 0041;
+0FC0 0041;
+0FCB 0041;
+19E6 0041;
+19F0 0041;
+19FA 0041;
+1B65 0041;
+1B78 0041;
+211E 0041;
+2143 0041;
+219B 0041;
+2197 0041;
+21A3 0041;
+21AD 0041;
+21B8 0041;
+21C2 0041;
+21CC 0041;
+21D6 0041;
+21E0 0041;
+21EA 0041;
+21F4 0041;
+21FE 0041;
+2203 0041;
+2208 0041;
+2140 0041;
+00D7 0041;
+2260 0041;
+FF5C 0041;
+2214 0041;
+0607 0041;
+2226 0041;
+222F 0041;
+2239 0041;
+2243 0041;
+224D 0041;
+2256 0041;
+2261 0041;
+2269 0041;
+2277 0041;
+227E 0041;
+228A 0041;
+22E3 0041;
+229C 0041;
+22A5 0041;
+22B0 0041;
+22B6 0041;
+22C0 0041;
+22CA 0041;
+22D4 0041;
+22DE 0041;
+22F0 0041;
+22FA 0041;
+2304 0041;
+230E 0041;
+2318 0041;
+2322 0041;
+232E 0041;
+2338 0041;
+2342 0041;
+234C 0041;
+2356 0041;
+2360 0041;
+236A 0041;
+2374 0041;
+237E 0041;
+2388 0041;
+2392 0041;
+239C 0041;
+23A6 0041;
+23B0 0041;
+23BA 0041;
+23C4 0041;
+23CE 0041;
+23D8 0041;
+23E2 0041;
+2404 0041;
+240E 0041;
+2418 0041;
+2422 0041;
+2445 0041;
+2503 0041;
+250D 0041;
+2517 0041;
+2521 0041;
+252B 0041;
+2535 0041;
+253F 0041;
+2549 0041;
+2553 0041;
+255D 0041;
+2567 0041;
+2571 0041;
+257B 0041;
+2585 0041;
+258F 0041;
+2599 0041;
+25A2 0041;
+25AC 0041;
+25B6 0041;
+25C0 0041;
+25CA 0041;
+25D3 0041;
+25DD 0041;
+25E7 0041;
+25F1 0041;
+25FB 0041;
+2605 0041;
+260F 0041;
+2619 0041;
+2623 0041;
+262D 0041;
+263F 0041;
+2649 0041;
+2653 0041;
+265D 0041;
+2667 0041;
+2674 0041;
+267E 0041;
+2688 0041;
+2698 0041;
+26A4 0041;
+26AE 0041;
+26B8 0041;
+2702 0041;
+270F 0041;
+2719 0041;
+2723 0041;
+272E 0041;
+2738 0041;
+2742 0041;
+274D 0041;
+275C 0041;
+2768 0041;
+2772 0041;
+279D 0041;
+27A7 0041;
+27B2 0041;
+27BC 0041;
+27C7 0041;
+27D5 0041;
+27DF 0041;
+27E9 0041;
+27F7 0041;
+2901 0041;
+290B 0041;
+2915 0041;
+291F 0041;
+2929 0041;
+2933 0041;
+293D 0041;
+2947 0041;
+2951 0041;
+295B 0041;
+2965 0041;
+296F 0041;
+2979 0041;
+2999 0041;
+29A3 0041;
+29AD 0041;
+29B7 0041;
+29C1 0041;
+29CB 0041;
+29D5 0041;
+29DF 0041;
+29E9 0041;
+29F3 0041;
+29FF 0041;
+2A09 0041;
+2A14 0041;
+2A1E 0041;
+2A28 0041;
+2A32 0041;
+2A3C 0041;
+2A46 0041;
+2A50 0041;
+2A5A 0041;
+2A64 0041;
+2A6E 0041;
+2A7B 0041;
+2A85 0041;
+2A8F 0041;
+2A99 0041;
+2AA3 0041;
+2AAD 0041;
+2AB7 0041;
+2AC1 0041;
+2ACB 0041;
+2AD5 0041;
+2ADF 0041;
+2AE9 0041;
+2AF3 0041;
+2AFD 0041;
+2B07 0041;
+2B11 0041;
+2B1B 0041;
+2B25 0041;
+2B2F 0041;
+2B39 0041;
+2B43 0041;
+2B50 0041;
+2CEA 0041;
+2809 0041;
+2813 0041;
+281D 0041;
+2827 0041;
+2831 0041;
+283B 0041;
+2845 0041;
+284F 0041;
+2859 0041;
+2863 0041;
+286D 0041;
+2877 0041;
+2881 0041;
+288B 0041;
+2895 0041;
+289F 0041;
+28A9 0041;
+28B3 0041;
+28BD 0041;
+28C7 0041;
+28D1 0041;
+28DB 0041;
+28E5 0041;
+28EF 0041;
+28F9 0041;
+268D 0041;
+2637 0041;
+4DC9 0041;
+4DD3 0041;
+4DDD 0041;
+4DE7 0041;
+4DF1 0041;
+4DFB 0041;
+1D305 0041;
+1D30F 0041;
+1D319 0041;
+1D323 0041;
+1D32D 0041;
+1D337 0041;
+1D341 0041;
+1D34B 0041;
+1D355 0041;
+A498 0041;
+A4A2 0041;
+A4AC 0041;
+A4B6 0041;
+A4C0 0041;
+1013A 0041;
+1017D 0041;
+10187 0041;
+10197 0041;
+101D5 0041;
+101DF 0041;
+101E9 0041;
+101F3 0041;
+1D000 0041;
+1D00A 0041;
+1D014 0041;
+1D01E 0041;
+1D028 0041;
+1D032 0041;
+1D03C 0041;
+1D046 0041;
+1D050 0041;
+1D05A 0041;
+1D064 0041;
+1D06E 0041;
+1D078 0041;
+1D082 0041;
+1D08C 0041;
+1D096 0041;
+1D0A0 0041;
+1D0AA 0041;
+1D0B4 0041;
+1D0BE 0041;
+1D0C8 0041;
+1D0D2 0041;
+1D0DC 0041;
+1D0E6 0041;
+1D0F0 0041;
+1D104 0041;
+1D10E 0041;
+1D118 0041;
+1D122 0041;
+1D12C 0041;
+1D136 0041;
+1D13F 0041;
+1D149 0041;
+1D153 0041;
+1D162 0041;
+1D16C 0041;
+1D193 0041;
+1D19D 0041;
+1D1A7 0041;
+1D1B5 0041;
+1D1BE 0041;
+1D1C9 0041;
+1D1D3 0041;
+1D1DD 0041;
+1D209 0041;
+1D213 0041;
+1D21D 0041;
+1D227 0041;
+1D231 0041;
+1D23B 0041;
+1F002 0041;
+1F00C 0041;
+1F016 0041;
+1F020 0041;
+1F02A 0041;
+1F038 0041;
+1F042 0041;
+1F04C 0041;
+1F056 0041;
+1F060 0041;
+1F06A 0041;
+1F074 0041;
+1F07E 0041;
+1F088 0041;
+1F092 0041;
+2FF8 0041;
+31C6 0041;
+31D0 0041;
+31DA 0041;
+3004 0041;
+327F 0041;
+0D72 0041;
+1378 0041;
+2188 0041;
+10116 0041;
+10120 0041;
+1012A 0041;
+10140 0041;
+1014D 0041;
+10160 0041;
+1016A 0041;
+10175 0041;
+10A44 0041;
+1245C 0041;
+1D36C 0041;
+0004 0041;
+0013 0041;
+001D 0041;
+0087 0041;
+0091 0041;
+009B 0041;
+0593 0041;
+059D 0041;
+05A7 0041;
+05C4 0041;
+0614 0041;
+06D9 0041;
+06E3 0041;
+0F19 0041;
+180D 0041;
+1B73 0041;
+202E 0041;
+206E 0041;
+D805 0041;
+FE02 0041;
+FE0C 0041;
+FEFF 0041;
+1D169 0041;
+1D176 0041;
+1D180 0041;
+1D1AA 0041;
+2FFFF 0041;
+7FFFF 0041;
+CFFFF 0041;
+E0026 0041;
+E0030 0041;
+E003A 0041;
+E0044 0041;
+E004E 0041;
+E0058 0041;
+E0062 0041;
+E006C 0041;
+E0076 0041;
+E0100 0041;
+E010A 0041;
+E0114 0041;
+E011E 0041;
+E0128 0041;
+E0132 0041;
+E013C 0041;
+E0146 0041;
+E0150 0041;
+E015A 0041;
+E0164 0041;
+E016E 0041;
+E0178 0041;
+E0182 0041;
+E018C 0041;
+E0196 0041;
+E01A0 0041;
+E01AA 0041;
+E01B4 0041;
+E01BE 0041;
+E01C8 0041;
+E01D2 0041;
+E01DC 0041;
+E01E6 0041;
+EFFFE 0041;
+1D468 0021;
+1D670 0021;
+1D5D4 003F;
+2090 0021;
+00C0 0021;
+1EB1 0021;
+1EB2 0021;
+1EA7 0021;
+1EA8 0021;
+00C5 003F;
+01DF 0021;
+0226 0021;
+0101 0021;
+0200 0021;
+1EB7 0021;
+1E00 0021;
+0061 0334 0300;
+0103 0334;
+0102 0341 0334;
+0061 0334 0306 0303;
+0061 0334 0306 0309;
+0041 0334 0302;
+0061 0302 0300 0334;
+00E2 0303 0334;
+0041 0302 0334 0309;
+0061 030A 0334;
+01FB 0334;
+00C4 0334;
+0061 0334 0303;
+0226 0334;
+0061 0334 0328;
+0100 0334;
+0041 030F 0334;
+0061 0334 0323;
+0041 0334 0323 0306;
+1EAC 0334;
+0332 0041;
+0341 0041;
+030C 0041;
+030B 0041;
+0328 0041;
+030E 0041;
+0315 0041;
+031A 0041;
+031F 0041;
+0324 0041;
+032B 0041;
+0330 0041;
+0335 0061;
+033B 0061;
+0345 0061;
+034A 0061;
+0350 0061;
+0355 0061;
+035A 0061;
+035F 0061;
+0362 0061;
+1DC4 0061;
+1DC9 0061;
+1DCF 0061;
+0483 0061;
+A66F 0061;
+05B2 0061;
+05B7 0061;
+05BB 0061;
+FB1E 0061;
+FE72 0061;
+064E 0061;
+064F 0061;
+0650 0061;
+0651 0061;
+FE7F 0061;
+0656 0061;
+065B 0061;
+0711 0061;
+0734 0061;
+0739 0061;
+073E 0061;
+0743 0061;
+0748 0061;
+07ED 0061;
+07F2 0061;
+0903 0061;
+09BC 0061;
+0A01 0061;
+0ABC 0061;
+0B01 0061;
+0C02 0061;
+0D02 0061;
+1B00 0061;
+1B80 0061;
+A881 0061;
+10A39 0061;
+0E49 0061;
+0EC8 0061;
+0ECD 0061;
+A92B 0061;
+1038 0061;
+17C8 0061;
+17CD 0061;
+17D3 0061;
+302A 0061;
+302F 0061;
+20D0 0061;
+20D5 0061;
+20DA 0061;
+20DF 0061;
+20E4 0061;
+20E9 0061;
+20EE 0061;
+FF41 0061;
+1D482 0061;
+1D68A 0061;
+1D5EE 0041;
+A732 0021;
+1D5A0 0061;
+1D504 0041;
+00AA 0061;
+00C1 0061;
+1EAF 0061;
+1EB4 0061;
+1EA5 0061;
+1EAA 0061;
+00E5 0061;
+00E4 0061;
+00C3 0061;
+0105 0061;
+1EA2 0061;
+1EA1 0061;
+1EAC 0061;
+A732 0061;
+1D482 0062;
+1D68A 0062;
+1D538 0062;
+2090 0062;
+1EB1 0062;
+1EA7 0062;
+212B 0062;
+0226 0062;
+0200 0062;
+1E00 0062;
+1DD4 003F;
+01E3 003F;
+01FC 0334;
+00E6 0041;
+01E3 0061;
+01E3 0062;
+33C2 0062;
+A735 0061;
+2101 0061;
+A737 0041;
+1DD6 003F;
+A739 0061;
+A739 0062;
+A73C 0061;
+1D00 003F;
+023A 0061;
+1D01 003F;
+1D46 0061;
+0250 0061;
+0251 003F;
+1D45 0041;
+0252 003F;
+000A 0062;
+2001 0062;
+202F 0062;
+0384 0062;
+FE4B 0062;
+02DD 0062;
+00B8 0062;
+1FC0 0062;
+1807 0062;
+2053 0062;
+FF0C 0062;
+3001 0062;
+FF1B 0062;
+0703 0062;
+1366 0062;
+2049 0062;
+2047 0062;
+1367 0062;
+FE30 0062;
+1803 0062;
+FF61 0062;
+A877 0062;
+AA5D 0062;
+1360 0062;
+2059 0062;
+2CFC 0062;
+12470 0062;
+2039 0062;
+301F 0062;
+207E 0062;
+FF3D 0062;
+0F3B 0062;
+2984 0062;
+298C 0062;
+2996 0062;
+2E05 0062;
+2E23 0062;
+232A 0062;
+300D 0062;
+FE3C 0062;
+FE18 0062;
+00A9 0062;
+066D 0062;
+FF06 0062;
+2030 0062;
+2043 0062;
+3003 0062;
+2E00 0062;
+2E12 0062;
+055A 0062;
+070B 0062;
+0F05 0062;
+0F0D 0062;
+1C3D 0062;
+17D7 0062;
+10A51 0062;
+02C2 0062;
+02CC 0062;
+02DE 0062;
+02ED 0062;
+02F8 0062;
+1392 0062;
+A702 0062;
+A70C 0062;
+A716 0062;
+A720 0062;
+06E9 0062;
+0BF8 0062;
+0E4F 0062;
+0F1C 0062;
+0FBF 0062;
+0FCA 0062;
+19E5 0062;
+19EF 0062;
+19F9 0062;
+1B64 0062;
+1B77 0062;
+2118 0062;
+2142 0062;
+2192 0062;
+2196 0062;
+21A2 0062;
+21AC 0062;
+21B7 0062;
+21C1 0062;
+21CB 0062;
+21D5 0062;
+21DF 0062;
+21E9 0062;
+21F3 0062;
+21FD 0062;
+1D7C3 0062;
+1D7A9 0062;
+2210 0062;
+00F7 0062;
+208C 0062;
+007C 0062;
+2213 0062;
+221C 0062;
+2225 0062;
+2230 0062;
+2238 0062;
+2242 0062;
+224C 0062;
+2255 0062;
+225F 0062;
+2268 0062;
+2278 0062;
+22E1 0062;
+2289 0062;
+2292 0062;
+229B 0062;
+22A4 0062;
+22AF 0062;
+22ED 0062;
+22BF 0062;
+22C9 0062;
+22D3 0062;
+22DD 0062;
+22EF 0062;
+22F9 0062;
+2303 0062;
+230D 0062;
+2317 0062;
+2321 0062;
+232D 0062;
+2337 0062;
+2341 0062;
+234B 0062;
+2355 0062;
+235F 0062;
+2369 0062;
+2373 0062;
+237D 0062;
+2387 0062;
+2391 0062;
+239B 0062;
+23A5 0062;
+23AF 0062;
+23B9 0062;
+23C3 0062;
+23CD 0062;
+23D7 0062;
+23E1 0062;
+2403 0062;
+240D 0062;
+2417 0062;
+2421 0062;
+2444 0062;
+FFE8 0062;
+250C 0062;
+2516 0062;
+2520 0062;
+252A 0062;
+2534 0062;
+253E 0062;
+2548 0062;
+2552 0062;
+255C 0062;
+2566 0062;
+2570 0062;
+257A 0062;
+2584 0062;
+258E 0062;
+2598 0062;
+25A1 0062;
+25AB 0062;
+25B5 0062;
+25BF 0062;
+25C9 0062;
+25D2 0062;
+25DC 0062;
+25E6 0062;
+25F0 0062;
+25FA 0062;
+2604 0062;
+260E 0062;
+2618 0062;
+2622 0062;
+262C 0062;
+263E 0062;
+2648 0062;
+2652 0062;
+265C 0062;
+2666 0062;
+2673 0062;
+267D 0062;
+2687 0062;
+2697 0062;
+26A3 0062;
+26AD 0062;
+26B7 0062;
+2701 0062;
+270E 0062;
+2718 0062;
+2722 0062;
+272D 0062;
+2737 0062;
+2741 0062;
+274B 0062;
+275B 0062;
+2767 0062;
+2771 0062;
+279C 0062;
+27A6 0062;
+27B1 0062;
+27BB 0062;
+27C6 0062;
+27D4 0062;
+27DE 0062;
+27E8 0062;
+27F6 0062;
+2900 0062;
+290A 0062;
+2914 0062;
+291E 0062;
+2928 0062;
+2932 0062;
+293C 0062;
+2946 0062;
+2950 0062;
+295A 0062;
+2964 0062;
+296E 0062;
+2978 0062;
+2982 0062;
+29A2 0062;
+29AC 0062;
+29B6 0062;
+29C0 0062;
+29CA 0062;
+29D4 0062;
+29DE 0062;
+29E8 0062;
+29F2 0062;
+29FE 0062;
+2A08 0062;
+2A13 0062;
+2A1D 0062;
+2A27 0062;
+2A31 0062;
+2A3B 0062;
+2A45 0062;
+2A4F 0062;
+2A59 0062;
+2A63 0062;
+2A6D 0062;
+2A7A 0062;
+2A84 0062;
+2A8E 0062;
+2A98 0062;
+2AA2 0062;
+2AAC 0062;
+2AB6 0062;
+2AC0 0062;
+2ACA 0062;
+2AD4 0062;
+2ADE 0062;
+2AE8 0062;
+2AF2 0062;
+2AFC 0062;
+2B06 0062;
+2B10 0062;
+2B1A 0062;
+2B24 0062;
+2B2E 0062;
+2B38 0062;
+2B42 0062;
+2B4C 0062;
+2CE9 0062;
+2808 0062;
+2812 0062;
+281C 0062;
+2826 0062;
+2830 0062;
+283A 0062;
+2844 0062;
+284E 0062;
+2858 0062;
+2862 0062;
+286C 0062;
+2876 0062;
+2880 0062;
+288A 0062;
+2894 0062;
+289E 0062;
+28A8 0062;
+28B2 0062;
+28BC 0062;
+28C6 0062;
+28D0 0062;
+28DA 0062;
+28E4 0062;
+28EE 0062;
+28F8 0062;
+268C 0062;
+2636 0062;
+4DC8 0062;
+4DD2 0062;
+4DDC 0062;
+4DE6 0062;
+4DF0 0062;
+4DFA 0062;
+1D304 0062;
+1D30E 0062;
+1D318 0062;
+1D322 0062;
+1D32C 0062;
+1D336 0062;
+1D340 0062;
+1D34A 0062;
+1D354 0062;
+A497 0062;
+A4A1 0062;
+A4AB 0062;
+A4B5 0062;
+A4BF 0062;
+10139 0062;
+1017C 0062;
+10186 0062;
+10196 0062;
+101D4 0062;
+101DE 0062;
+101E8 0062;
+101F2 0062;
+101FC 0062;
+1D009 0062;
+1D013 0062;
+1D01D 0062;
+1D027 0062;
+1D031 0062;
+1D03B 0062;
+1D045 0062;
+1D04F 0062;
+1D059 0062;
+1D063 0062;
+1D06D 0062;
+1D077 0062;
+1D081 0062;
+1D08B 0062;
+1D095 0062;
+1D09F 0062;
+1D0A9 0062;
+1D0B3 0062;
+1D0BD 0062;
+1D0C7 0062;
+1D0D1 0062;
+1D0DB 0062;
+1D0E5 0062;
+1D0EF 0062;
+1D103 0062;
+1D10D 0062;
+1D117 0062;
+1D121 0062;
+1D12B 0062;
+1D135 0062;
+1D13E 0062;
+1D148 0062;
+1D152 0062;
+1D161 0062;
+1D16B 0062;
+1D192 0062;
+1D19C 0062;
+1D1A6 0062;
+1D1B4 0062;
+1D1BC 0062;
+1D1C8 0062;
+1D1D2 0062;
+1D1DC 0062;
+1D208 0062;
+1D212 0062;
+1D21C 0062;
+1D226 0062;
+1D230 0062;
+1D23A 0062;
+1F001 0062;
+1F00B 0062;
+1F015 0062;
+1F01F 0062;
+1F029 0062;
+1F037 0062;
+1F041 0062;
+1F04B 0062;
+1F055 0062;
+1F05F 0062;
+1F069 0062;
+1F073 0062;
+1F07D 0062;
+1F087 0062;
+1F091 0062;
+2FF7 0062;
+31C5 0062;
+31CF 0062;
+31D9 0062;
+31E3 0062;
+3191 0062;
+0D71 0062;
+1377 0062;
+2187 0062;
+10115 0062;
+1011F 0062;
+10129 0062;
+10133 0062;
+1014C 0062;
+10157 0062;
+10169 0062;
+10174 0062;
+10919 0062;
+1245B 0062;
+1D36B 0062;
+0003 0062;
+0012 0062;
+001C 0062;
+0086 0062;
+0090 0062;
+009A 0062;
+0592 0062;
+059C 0062;
+05A6 0062;
+05BD 0062;
+0613 0062;
+06D8 0062;
+06E2 0062;
+0F18 0062;
+180C 0062;
+1B72 0062;
+202D 0062;
+206D 0062;
+D804 0062;
+FE01 0062;
+FE0B 0062;
+FE73 0062;
+1D168 0062;
+1D175 0062;
+1D17F 0062;
+1D18B 0062;
+2FFFE 0062;
+7FFFE 0062;
+CFFFE 0062;
+E0025 0062;
+E002F 0062;
+E0039 0062;
+E0043 0062;
+E004D 0062;
+E0057 0062;
+E0061 0062;
+E006B 0062;
+E0075 0062;
+E007F 0062;
+E0109 0062;
+E0113 0062;
+E011D 0062;
+E0127 0062;
+E0131 0062;
+E013B 0062;
+E0145 0062;
+E014F 0062;
+E0159 0062;
+E0163 0062;
+E016D 0062;
+E0177 0062;
+E0181 0062;
+E018B 0062;
+E0195 0062;
+E019F 0062;
+E01A9 0062;
+E01B3 0062;
+E01BD 0062;
+E01C7 0062;
+E01D1 0062;
+E01DB 0062;
+E01E5 0062;
+E01EF 0062;
+249D 003F;
+1D5EF 0021;
+1D553 003F;
+0042 003F;
+1D56D 0021;
+1D4D1 003F;
+24B7 003F;
+1E05 003F;
+0042 0307 0334;
+0062 0334 0331;
+0341 0062;
+030B 0062;
+030E 0062;
+031A 0062;
+0324 0062;
+0330 0062;
+033C 0062;
+034B 0062;
+0356 0062;
+0360 0062;
+1DC5 0062;
+1DD0 0062;
+A67C 0062;
+05B8 0062;
+064B 0062;
+FE77 0062;
+FE7B 0062;
+FE7E 0062;
+065C 0062;
+0735 0062;
+073F 0062;
+0749 0062;
+07F3 0062;
+0981 0062;
+0A81 0062;
+0C03 0062;
+1B01 0062;
+10A0D 0062;
+0E4A 0062;
+0F39 0062;
+108D 0062;
+17CE 0062;
+302B 0062;
+20D1 0062;
+20DB 0062;
+20E5 0062;
+20EF 0062;
+1D44F 0061;
+1D657 0061;
+1D5BB 0041;
+FF22 0041;
+1D5D5 0061;
+1D539 0041;
+1D47 0041;
+1E04 0041;
+0062 0062;
+1D587 0062;
+1D401 0062;
+1D63D 0062;
+1E06 0062;
+0299 0062;
+0243 0062;
+1D03 0062;
+1D80 0062;
+0181 0062;
+0182 0062;
+217D 003F;
+1D5F0 0021;
+1D554 003F;
+0043 003F;
+1D436 0021;
+2102 003F;
+1D60A 003F;
+0106 003F;
+010B 003F;
+1E09 003F;
+0106 0334;
+0043 030C 0334;
+0063 0334 0327;
+0043 0334 0327 0341;
+249E 0061;
+1D4EC 0061;
+1D450 0041;
+1D658 0041;
+2103 0041;
+1D5A2 0061;
+1D49E 0041;
+1D9C 0061;
+010D 0061;
+1DD7 0061;
+3388 0061;
+1D484 0062;
+1D68C 0062;
+1D46A 0062;
+1D9C 0062;
+1DD7 0062;
+33C5 003F;
+339D 003F;
+33A4 0062;
+33C7 0061;
+1D04 003F;
+023B 0061;
+0187 0061;
+1D9D 0061;
+2183 0061;
+A73E 0061;
+0369 0021;
+1D521 0021;
+1D451 003F;
+1D659 003F;
+2145 0021;
+1D5D7 0021;
+1D507 003F;
+1D48 0021;
+1E0A 0021;
+1E13 0021;
+010F 0334;
+0064 0327 0334;
+0044 0334 0323;
+1E0F 0334;
+00F0 003F;
+A779 0021;
+249F 0061;
+1D4B9 0061;
+2146 0041;
+1D5F1 0041;
+216E 0061;
+1D56F 0061;
+1D49F 0041;
+24B9 0061;
+010E 0061;
+1E0D 0061;
+1E0E 0061;
+00D0 0061;
+3372 0061;
+2146 0062;
+1D5F1 0062;
+1D437 0062;
+1D63F 0062;
+1E0A 0062;
+0110 0062;
+33C8 0061;
+3377 003F;
+3379 0062;
+01F1 0021;
+01F3 0041;
+01C4 0061;
+02A5 003F;
+1D05 003F;
+1D6D 003F;
+0256 003F;
+0257 003F;
+1D91 003F;
+018B 0061;
+A771 003F;
+0065 003F;
+1D452 0021;
+1D68E 0021;
+1D5BE 003F;
+FF25 003F;
+1D5D8 0021;
+1D53C 003F;
+1D49 003F;
+00E8 003F;
+00CA 003F;
+1EC5 003F;
+011A 003F;
+0117 003F;
+1E1C 003F;
+1E17 003F;
+1EBA 003F;
+1EB9 003F;
+1E18 003F;
+0045 0334 0301;
+00C8 0334;
+0045 0302 0334;
+1EBE 0334;
+0065 0302 0334 0303;
+1EC3 0334;
+011A 0334;
+0045 0303 0334;
+0065 0334 0327;
+0045 0334 0306 0327;
+0065 0334 0304;
+0045 0304 0334 0341;
+1E14 0334;
+0045 030F 0334;
+0065 0334 0323;
+0045 0334 0302 0323;
+0065 0334 0330;
+FF45 0041;
+1D4EE 0061;
+2147 0041;
+1D626 0041;
+1D404 0061;
+1D640 0061;
+1D5A4 0041;
+2091 0041;
+00C8 0041;
+1EBF 0041;
+1EC4 0041;
+00EB 0041;
+0116 0041;
+0119 0041;
+1E16 0041;
+0205 0041;
+1EB8 0041;
+1E1B 0041;
+1D452 0062;
+1D68E 0062;
+1D53C 0062;
+1D31 0062;
+1EBE 0062;
+00CB 0062;
+0118 0062;
+0204 0062;
+1E1A 0062;
+32CE 0062;
+0247 0061;
+1D92 0062;
+1D32 0021;
+1D32 0062;
+1D4A 0021;
+2094 0061;
+1D95 0062;
+025B 0041;
+1D4B 0062;
+0258 0062;
+025C 0061;
+1D94 0062;
+1D4C 0062;
+025E 0062;
+0264 0062;
+1D4BB 0021;
+1D41F 003F;
+1D627 003F;
+2109 003F;
+1D5D9 0021;
+1D53D 003F;
+1DA0 003F;
+1E1E 0334;
+24A1 0041;
+1D5F3 0061;
+1D557 0041;
+0046 0041;
+1D509 0061;
+1D439 0041;
+1D675 0041;
+A77C 0041;
+24A1 0062;
+1D5F3 0062;
+1D439 0062;
+1D675 0062;
+FB00 0041;
+FB04 0041;
+FB02 0041;
+02A9 0041;
+1D6E 0041;
+0191 003F;
+2132 003F;
+A7FB 0041;
+210A 0021;
+1D628 0021;
+1D58C 003F;
+FF27 0021;
+1D5A6 0021;
+1D50A 003F;
+1D4D 0021;
+011E 0021;
+0121 0021;
+1E20 0021;
+0067 0306 0334;
+0047 0334 0302;
+0121 0334;
+0067 0304 0334;
+1DDA 0334;
+1D420 0061;
+1D65C 0061;
+1D5C0 0041;
+FF27 0041;
+1D5DA 0061;
+1D53E 0041;
+1D4D 0041;
+011E 0041;
+0121 0041;
+1E20 0041;
+0067 0062;
+1D558 0062;
+1D406 0062;
+1D60E 0062;
+011F 0062;
+1E21 0062;
+3393 0041;
+33C9 0041;
+0261 0062;
+1DDB 0041;
+01E4 0041;
+0193 0021;
+029B 0061;
+A77E 0021;
+0194 0021;
+0263 0062;
+01A2 0041;
+036A 003F;
+1D5F5 0021;
+1D559 003F;
+0048 003F;
+1D573 0021;
+1D43B 003F;
+24BD 003F;
+021F 003F;
+1E22 003F;
+1E2B 003F;
+0124 0334;
+0048 0308 0334;
+0068 0334 0327;
+1E24 0334;
+0127 0021;
+FF48 0061;
+1D4F1 0061;
+1D421 0041;
+1D65D 0041;
+210D 0061;
+1D677 0061;
+1D5DB 0041;
+1D34 0061;
+1E27 0061;
+1E28 0061;
+1E96 0061;
+33CA 0062;
+1D525 0062;
+FF28 0062;
+1D5DB 0062;
+021E 0062;
+1E2A 0062;
+33CB 0021;
+3390 0021;
+0195 0021;
+0266 0021;
+2C68 0021;
+2C76 0021;
+A727 0021;
+0267 0021;
+02BD 0021;
+24A4 003F;
+1D4BE 0021;
+2139 003F;
+1D5C2 003F;
+FF29 003F;
+1D574 0021;
+1D470 003F;
+24BE 003F;
+00CD 003F;
+00EE 003F;
+00CF 003F;
+0130 003F;
+1EC9 003F;
+020A 003F;
+0069 0334 0301;
+00EC 0334;
+012C 0334;
+0049 030C 0334;
+0069 0308 0334 0341;
+0049 0303 0334;
+0049 0334 0328;
+1EC9 0334;
+0069 0311 0334;
+0049 0334 0323;
+0069 0061;
+2139 0061;
+1D5C2 0061;
+1D4BE 0041;
+24D8 0061;
+1D408 0061;
+1D678 0061;
+1D5DC 0041;
+1D35 0061;
+012D 0061;
+01CF 0061;
+0129 0061;
+012B 0061;
+0208 0061;
+1E2D 0061;
+2148 0062;
+1D5F6 0062;
+1D408 0062;
+1D678 0062;
+012C 0062;
+0128 0062;
+020B 0062;
+2171 0061;
+2172 0061;
+0133 0061;
+33CC 0062;
+2173 0061;
+2178 0061;
+0131 0061;
+026A 0061;
+A7FE 0062;
+1D4E 0062;
+0197 0041;
+1D7B 0061;
+1D96 0062;
+0196 0041;
+1D7C 0062;
+1D48B 0021;
+1D693 0021;
+1D5C3 003F;
+FF2A 003F;
+1D5DD 0021;
+1D541 003F;
+02B2 003F;
+01F0 003F;
+006A 0061;
+1D4BF 0061;
+2149 0041;
+1D5F7 0041;
+1D409 0061;
+1D611 0061;
+1D575 0041;
+2C7C 0061;
+006A 0062;
+1D55B 0062;
+1D409 0062;
+1D611 0062;
+0237 0021;
+1D0A 0021;
+0249 0041;
+029D 0041;
+025F 0041;
+006B 0021;
+1D48C 0021;
+1D694 0021;
+1D5F8 003F;
+FF2B 0021;
+1D5AA 0021;
+1D50E 003F;
+1D4F 0021;
+01E8 0021;
+1E35 0021;
+212A 0334 0341;
+006B 0334 0327;
+1E32 0334;
+1DDC 0334;
+1D458 0061;
+1D660 0061;
+1D5C4 0041;
+212A 0041;
+1D576 0061;
+1D4DA 0041;
+24C0 0041;
+1E30 0041;
+1E33 0041;
+006B 0062;
+1D55C 0062;
+FF2B 0062;
+1D5DE 0062;
+1E30 0062;
+3385 0041;
+338F 0041;
+33CD 0041;
+33CE 003F;
+33A6 0062;
+33AA 0041;
+33B8 0041;
+33C0 0041;
+1D84 0041;
+0199 0062;
+2C6A 0062;
+A741 0062;
+A743 0062;
+A745 0062;
+FF4C 003F;
+1D48D 0021;
+1D695 0021;
+1D5C5 003F;
+FF2C 003F;
+1D577 0021;
+1D4DB 003F;
+24C1 003F;
+013E 003F;
+1E36 003F;
+1E3B 003F;
+0139 0334;
+004C 0327 0334;
+1E37 0304 0334;
+004C 032D 0334;
+0142 003F;
+004C 0387 0021;
+006C 1D165 00B7 0061;
+1DDD 0041;
+1D591 0061;
+1D4C1 0041;
+24DB 0061;
+FF2C 0061;
+1D543 0061;
+1D473 0041;
+24C1 0061;
+013E 0061;
+1E36 0061;
+1E3B 0061;
+0140 0061;
+006C 0062;
+1D4F5 0062;
+004C 0062;
+1D577 0062;
+0139 0062;
+1E3C 0062;
+013F 0062;
+01C8 0041;
+1EFA 0061;
+33D0 0062;
+33D2 0062;
+32CF 0062;
+02AB 0062;
+1DDE 0061;
+A746 003F;
+1D0C 0041;
+A749 0062;
+019A 0062;
+2C61 0062;
+026B 0062;
+1DAA 003F;
+1DA9 003F;
+0234 0041;
+026E 0041;
+A781 0062;
+028E 0041;
+036B 003F;
+1D5C6 0021;
+1D52A 003F;
+004D 0021;
+1D4DC 0021;
+1D40C 003F;
+1D648 003F;
+1E3E 0021;
+006D 0334 0301;
+1E41 0334;
+0334 036B;
+33A5 0041;
+036B 0041;
+1D5C6 0061;
+1D52A 0041;
+004D 0061;
+1D4DC 0061;
+1D40C 0041;
+1D648 0041;
+1E3F 0061;
+1E42 0061;
+1D426 0062;
+1D62E 0062;
+1D474 0062;
+24C2 0062;
+1E40 0062;
+338E 003F;
+33D5 003F;
+339C 003F;
+33A3 0062;
+33AB 003F;
+33A8 0061;
+33B7 003F;
+33BD 003F;
+33C1 003F;
+1D0D 0041;
+1D86 0021;
+1DAC 003F;
+A7FD 0021;
+A773 0021;
+24A9 003F;
+1D593 0021;
+1D4F7 003F;
+24DD 003F;
+1D4DD 0021;
+1D441 003F;
+1D67D 003F;
+0143 003F;
+00F1 003F;
+0145 003F;
+1E49 003F;
+0143 0334;
+006E 0334 030C;
+00D1 0334;
+004E 0327 0334;
+006E 0334 032D;
+1E48 0334;
+1D427 0061;
+1D62F 0061;
+1D593 0041;
+FF2E 0061;
+1D5AD 0061;
+1D4DD 0041;
+207F 0061;
+01F9 0061;
+00D1 0061;
+1E47 0061;
+1E48 0061;
+1D45B 0062;
+1D663 0062;
+1D4DD 0062;
+1D3A 0062;
+1E44 0062;
+338B 003F;
+01CC 0061;
+339A 003F;
+33B1 003F;
+33BB 003F;
+1DE1 0334;
+1D3B 0021;
+1D70 0021;
+1DAE 003F;
+019E 0021;
+1D87 0021;
+0273 0041;
+A774 0021;
+1D51 003F;
+006F 0021;
+1D45C 0021;
+1D698 0021;
+1D5FC 003F;
+1D40E 0021;
+1D616 0021;
+1D57A 003F;
+00BA 003F;
+00F2 0021;
+00D4 0021;
+1ED7 0021;
+01D1 0021;
+0151 0021;
+1E4C 0021;
+022F 0021;
+00D8 0021;
+00D8 0301 0334;
+01EC 0021;
+1E51 0021;
+020C 0021;
+1EDB 0021;
+1EE0 0021;
+1ECD 0021;
+006F 0334 0341;
+004F 0334 0300;
+006F 0302 0334;
+004F 0302 0301 0334;
+00D4 0334 0340;
+006F 0302 0309 0334;
+01D2 0334;
+006F 0334 0308 0304;
+0151 0334;
+006F 0334 0303 0301;
+00F5 0334 0308;
+004F 0303 0304 0334;
+006F 0307 0304 0334;
+01EB 0334;
+01EA 0334 0304;
+006F 0304 0341 0334;
+004F 0304 0340 0334;
+006F 030F 0334;
+004F 0334 0311;
+01A1 0301 0334;
+004F 031B 0334 0300;
+00D5 031B 0334;
+006F 031B 0323 0334;
+1ECD 0334;
+00D4 0334 0323;
+24AA 0041;
+1D5C8 0061;
+1D52C 0041;
+004F 0061;
+1D546 0061;
+1D4AA 0041;
+24C4 0061;
+00F3 0061;
+014E 0061;
+1ED3 0061;
+1ED4 0061;
+022B 0061;
+00D5 0061;
+022D 0061;
+0230 0061;
+01EB 0061;
+014C 0061;
+1ECF 0061;
+020E 0061;
+1EDD 0061;
+1EDE 0061;
+1ED9 0061;
+1D45C 0062;
+1D698 0062;
+1D546 0062;
+2092 0062;
+1ED1 0062;
+00F6 0062;
+1E4F 0062;
+01FF 0062;
+1E51 0062;
+1EDB 0062;
+1ECD 0062;
+0152 0061;
+A74E 0061;
+1D0F 003F;
+0276 003F;
+1D13 003F;
+0254 0061;
+1D10 003F;
+1D97 003F;
+A74C 0061;
+1D54 0061;
+1D55 0061;
+0275 003F;
+1DB1 0041;
+A74A 0061;
+0223 003F;
+1D3D 0041;
+0070 003F;
+1D52D 0021;
+1D491 003F;
+1D699 003F;
+1D477 0021;
+2119 003F;
+1D617 003F;
+1E55 003F;
+1E55 0334;
+1E56 0334;
+1D4C5 0061;
+1D429 0041;
+1D631 0041;
+1D40F 0061;
+1D64B 0061;
+1D5AF 0041;
+3380 003F;
+1E57 0041;
+FF50 0062;
+1D5C9 0062;
+1D443 0062;
+1D67F 0062;
+3376 0061;
+33D7 0061;
+33D9 0061;
+33B0 0061;
+33B4 0061;
+1D18 0061;
+2C63 0041;
+A750 0041;
+1D88 0061;
+01A4 0041;
+A752 0041;
+A754 0041;
+1DB2 0021;
+2C77 0061;
+1D45E 0021;
+1D666 0021;
+1D5CA 003F;
+FF31 003F;
+1D5E4 0021;
+1D514 003F;
+0071 0041;
+1D52E 0061;
+1D492 0041;
+1D69A 0041;
+1D478 0061;
+211A 0041;
+1D618 0041;
+1D492 0062;
+1D69A 0062;
+1D514 0062;
+0239 0061;
+A756 0041;
+A758 0041;
+024A 0021;
+0138 0061;
+1DCA 0021;
+1D597 0021;
+1D4FB 003F;
+24E1 003F;
+1D479 0021;
+211D 003F;
+1D681 003F;
+0155 003F;
+1E58 003F;
+0213 003F;
+1E5C 003F;
+0052 0334 0301;
+0072 0334 0307;
+0156 0334;
+0052 0311 0334;
+0072 0323 0334 0304;
+0052 0331 0334;
+1DCA 0334;
+1DCA 0041;
+1D5FF 0061;
+1D563 0041;
+0052 0041;
+1D57D 0061;
+1D445 0041;
+24C7 0041;
+0154 0041;
+0157 0041;
+0212 0041;
+1E5F 0041;
+33AD 0041;
+33AE 0041;
+1D4C7 0062;
+24E1 0062;
+1D57D 0062;
+0155 0062;
+0213 0062;
+20A8 0021;
+01A6 003F;
+01A6 0062;
+1DE3 0061;
+1D19 0041;
+024D 0062;
+02B4 003F;
+1D1A 0041;
+1D89 0041;
+027B 0062;
+027C 0041;
+027D 0062;
+1D73 0041;
+02B6 003F;
+A775 0041;
+A75C 003F;
+FF53 003F;
+1D530 0021;
+1D494 003F;
+1D69C 003F;
+1D4AE 0021;
+1D412 003F;
+1D61A 003F;
+015A 003F;
+0161 003F;
+1E60 003F;
+1E69 003F;
+015B 0334;
+0053 0334 0341 0307;
+0073 0334 030C;
+0160 0307 0334;
+0073 0334 0327;
+1E62 0334;
+0073 0334 0326;
+A785 003F;
+0073 0061;
+1D494 0061;
+1D69C 0061;
+1D600 0041;
+1D412 0061;
+1D61A 0061;
+1D57E 0041;
+015B 0061;
+015C 0061;
+1E61 0061;
+1E62 0061;
+017F 0061;
+0073 0062;
+1D564 0062;
+1D412 0062;
+1D61A 0062;
+015C 0062;
+1E62 0062;
+2120 0021;
+00DF 0021;
+FB06 0021;
+33DC 0021;
+1D74 0021;
+0282 0021;
+023F 0021;
+1E9D 0021;
+1DB4 003F;
+1D8B 0021;
+0285 0021;
+0286 0021;
+24AF 003F;
+1D599 0021;
+1D4FD 003F;
+24E3 003F;
+1D517 0021;
+1D47B 003F;
+1D683 003F;
+0164 003F;
+0162 003F;
+1E71 003F;
+0054 030C 0334;
+0054 0334 0307;
+1E6D 0334;
+0074 032D 0334;
+0054 0334 0331;
+FF54 0061;
+1D4FD 0061;
+1D461 0041;
+1D669 0041;
+1D47B 0061;
+1D683 0061;
+1D5E7 0041;
+0165 0061;
+0163 0061;
+021A 0061;
+A787 0061;
+1D495 0062;
+1D69D 0062;
+1D54B 0062;
+0165 0062;
+021A 0062;
+02A8 0041;
+1D7A 0041;
+2122 0041;
+01BE 0062;
+A728 003F;
+1D1B 0041;
+0167 0062;
+2C66 0062;
+1DB5 003F;
+01AC 003F;
+01AE 003F;
+0236 0041;
+0287 0041;
+1D42E 0021;
+1D636 0021;
+1D59A 003F;
+FF35 0021;
+1D5B4 0021;
+1D518 003F;
+1D58 0021;
+00F9 0021;
+00DB 0021;
+00FC 0021;
+01DB 0021;
+0171 0021;
+1E78 0021;
+1E7B 0021;
+0214 0021;
+1EE9 0021;
+1EEE 0021;
+1EE5 0021;
+1E76 0021;
+0055 0301 0334;
+0055 0340 0334;
+00FB 0334;
+0075 030A 0334;
+0055 0334 0308;
+0075 0308 0300 0334;
+0075 0334 0308 030C;
+0055 0308 0334 0304;
+0075 0303 0334;
+0055 0303 0301 0334;
+0075 0304 0334;
+0055 0304 0308 0334;
+0075 030F 0334;
+0055 0334 0311;
+0075 0341 031B 0334;
+0055 0334 031B 0340;
+01AF 0303 0334;
+01B0 0323 0334;
+1EE5 0334;
+0075 032D 0334;
+0055 0334 0330;
+24B0 0041;
+1D5CE 0061;
+1D532 0041;
+0055 0061;
+1D54C 0061;
+1D4B0 0041;
+24CA 0061;
+00DA 0061;
+00FB 0061;
+016E 0061;
+01DC 0061;
+01D5 0061;
+1E79 0061;
+016A 0061;
+0215 0061;
+01AF 0061;
+1EEF 0061;
+1EF0 0061;
+1E77 0061;
+24B0 0062;
+1D5CE 0062;
+1D47C 0062;
+1D684 0062;
+016C 0062;
+01D7 0062;
+0168 0062;
+1EE6 0062;
+1EEA 0062;
+1E72 0062;
+1D1C 0041;
+1D1D 0041;
+1D6B 0021;
+1DB6 003F;
+1D7E 0021;
+0265 0021;
+02AE 0021;
+026F 0021;
+1D5A 0061;
+0270 0021;
+028A 0021;
+1DB7 0061;
+0076 0021;
+1D42F 0021;
+1D637 0021;
+1D59B 003F;
+FF36 0021;
+1D54D 0021;
+1D4B1 003F;
+24CB 0021;
+1E7C 0021;
+0056 0334 0303;
+0076 0061;
+1D42F 0061;
+1D637 0061;
+1D59B 0041;
+FF36 0061;
+1D54D 0061;
+1D4B1 0041;
+24CB 0061;
+1E7C 0061;
+2174 0062;
+1D603 0062;
+1D47D 0062;
+1D685 0062;
+2175 003F;
+2176 003F;
+2177 003F;
+33DE 003F;
+A760 0061;
+A75F 003F;
+1D8C 003F;
+028B 0061;
+2C71 003F;
+1EFD 003F;
+028C 003F;
+1DBA 0041;
+1D430 0021;
+1D638 0021;
+1D59C 003F;
+FF37 0021;
+1D5B6 0021;
+1D51A 003F;
+02B7 0021;
+1E80 0021;
+1E84 0021;
+0077 0334 0301;
+0077 0334 0340;
+0057 0334 0302;
+1E84 0334;
+0057 0323 0334;
+1D464 0061;
+1D66C 0061;
+1D5D0 0041;
+FF37 0041;
+1D5EA 0061;
+1D54E 0041;
+02B7 0041;
+1E80 0041;
+1E84 0041;
+FF57 0062;
+1D5D0 0062;
+1D47E 0062;
+1D686 0062;
+0175 0062;
+33DD 0041;
+2C72 003F;
+028D 0041;
+036F 003F;
+1D5D1 0021;
+1D535 003F;
+0058 0021;
+1D4E7 0021;
+1D44B 003F;
+1D653 003F;
+1E8C 0021;
+0058 0334 0308;
+0078 0061;
+1D431 0061;
+1D639 0061;
+1D59D 0041;
+FF38 0061;
+1D54F 0061;
+1D4B3 0041;
+24CD 0061;
+1E8B 0061;
+1D465 0062;
+1D66D 0062;
+1D4E7 0062;
+02E3 0062;
+217A 0061;
+217B 0061;
+1D8D 0062;
+1D4CE 0021;
+1D432 003F;
+1D63A 003F;
+1D44C 0021;
+1D654 0021;
+1D5B8 003F;
+00FD 003F;
+0176 003F;
+1EF8 003F;
+1EF7 003F;
+0079 0341 0334;
+0059 0334 0340;
+0079 0334 030A;
+1EF9 0334;
+0079 0304 0334;
+0059 0334 0309;
+FF59 0061;
+1D56A 0061;
+1D4CE 0041;
+24E8 0061;
+1D4E8 0061;
+1D44C 0041;
+1D654 0041;
+1EF3 0061;
+00FF 0061;
+1E8E 0061;
+1EF5 0061;
+1D4CE 0062;
+24E8 0062;
+1D584 0062;
+1EF3 0062;
+1E8E 0062;
+028F 0041;
+024F 0062;
+01B4 0062;
+1EFF 0062;
+1D433 0021;
+1D63B 0021;
+1D59F 003F;
+FF3A 0021;
+1D5B9 0021;
+1D4B5 003F;
+1DBB 0021;
+017E 0021;
+1E92 0021;
+005A 0301 0334;
+007A 030C 0334;
+005A 0334 0307;
+1E95 0334;
+1DE6 0061;
+1D59F 0061;
+1D503 0041;
+24E9 0041;
+1D4B5 0061;
+1D419 0041;
+1D689 0041;
+1E91 0041;
+017B 0041;
+FF5A 0062;
+1D59F 0062;
+2128 0062;
+1D655 0062;
+017C 0062;
+018D 0062;
+01B6 0061;
+1D76 0062;
+0225 0061;
+0290 0061;
+0291 0061;
+0240 0062;
+2C6B 0062;
+A762 0062;
+01EE 003F;
+01B7 0041;
+01EF 0062;
+01B8 003F;
+1D9A 0041;
+0293 0041;
+021D 0062;
+00FE 0062;
+A765 0062;
+A767 0062;
+01BF 0062;
+A769 0062;
+A76B 0062;
+A76D 0062;
+1DD2 0334;
+1DD2 0062;
+01BB 0061;
+A72A 0041;
+A72C 0041;
+A72E 0041;
+01A7 0041;
+01BC 0041;
+0184 0041;
+0241 0021;
+02C0 0061;
+0149 0061;
+02BE 0061;
+A722 0041;
+A78B 0041;
+02E4 0041;
+02C1 0061;
+1D5C 0021;
+A724 0021;
+02A1 0061;
+0296 0061;
+01C1 0061;
+01C3 0061;
+0298 0061;
+02AD 0061;
+1D6C2 003F;
+1D756 0021;
+1F08 003F;
+1F02 003F;
+1F0E 003F;
+1F01 003F;
+1F8D 003F;
+1F07 003F;
+1F89 003F;
+1FB4 003F;
+1FB8 003F;
+03B1 0334 0313;
+1F00 0334 0301;
+0391 0334 0313 0345 0341;
+1F08 0334 0300;
+03B1 0334 0343 0342;
+1FB3 0343 0342 0334;
+0391 0345 0313 0334;
+03B1 0334 0314 0301;
+1F01 0334 0345 0301;
+0391 0314 0340 0334;
+1F0B 0334 0345;
+03B1 0314 0345 0334 0342;
+1F01 0345 0334;
+0391 0301 0334;
+1F70 0334;
+03B1 0334 0306;
+03B1 0345 0334 0342;
+1FB3 0334;
+1D6C2 0061;
+0391 0061;
+1D756 0041;
+1F84 0061;
+1F8A 0061;
+1F80 0061;
+1F0D 0061;
+1F83 0061;
+1F8F 0061;
+0386 0061;
+1FB2 0061;
+1FB1 0061;
+1D6FC 0062;
+1F00 0062;
+1F06 0062;
+1F85 0062;
+1F81 0062;
+1FB0 0062;
+03D0 0021;
+1D771 003F;
+1D6E3 003F;
+03D0 0061;
+1D771 0041;
+1D6E3 0041;
+1D6C3 0062;
+1D791 0062;
+1D7AC 0021;
+1D6AA 0021;
+1D792 003F;
+1D738 0061;
+0393 0041;
+1D71E 0041;
+1D6FE 0062;
+1D792 0062;
+1D6C5 0021;
+0394 0021;
+1D759 003F;
+1D7AD 0061;
+1D71F 0061;
+03B4 0062;
+1D759 0062;
+1D716 0021;
+1D716 003F;
+1D6E6 0021;
+1F10 003F;
+1F1A 003F;
+1F13 003F;
+1FC9 003F;
+0395 0334 0313;
+1F18 0334 0341;
+03B5 0334 0314;
+1F19 0301 0334;
+1F19 0340 0334;
+03B5 0334 0300;
+03F5 0041;
+1D7C4 0061;
+1D7C4 0041;
+1D720 0041;
+1F1C 0041;
+1F15 0041;
+1F73 0041;
+03F5 0062;
+1D7C4 0062;
+1F1C 0062;
+1F73 0062;
+03DC 003F;
+1D7CA 0041;
+0377 0041;
+03DB 0041;
+1D775 0021;
+1D6E7 0021;
+03B6 0041;
+1D7AF 0041;
+1D721 0041;
+1D6AD 0062;
+0371 0041;
+1D776 0021;
+1D6E8 0021;
+1F20 003F;
+1F9C 003F;
+1F26 003F;
+1F98 003F;
+1F95 003F;
+1F9B 003F;
+1F91 003F;
+1FCB 003F;
+1FC6 003F;
+1F28 0334;
+03B7 0334 0345 0343 0341;
+03B7 0334 0343 0340;
+1F28 0345 0334 0340;
+1F28 0342 0334;
+1FC3 0313 0334;
+0397 0314 0334;
+1F29 0341 0334;
+03B7 0314 0334 0340;
+1F23 0334 0345;
+0397 0334 0314 0342;
+1FCC 0314 0342 0334;
+03B7 0334 0301;
+1F75 0345 0334;
+03B7 0334 0340 0345;
+03B7 0334 0345;
+03B7 0061;
+1D776 0041;
+1D6E8 0041;
+1F2C 0061;
+1F92 0061;
+1F9E 0061;
+1F25 0061;
+1F2B 0061;
+1F97 0061;
+03AE 0041;
+1FCA 0061;
+1FCC 0061;
+1D6E8 0062;
+1F22 0062;
+1F21 0062;
+1F27 0062;
+1FC4 0062;
+03D1 0021;
+1D7B1 0021;
+1D7B1 003F;
+1D723 0021;
+1D723 003F;
+03D1 0061;
+1D7B1 0061;
+1D7B1 0041;
+1D723 0061;
+1D723 0041;
+1D6C9 0062;
+0398 0062;
+1D797 0062;
+1D704 0021;
+0399 003F;
+1D798 003F;
+1F32 003F;
+1F39 003F;
+1F37 003F;
+1FDB 003F;
+1FD6 003F;
+1FD2 003F;
+1FBE 0343 0334;
+0399 0334 0313 0301;
+1F38 0300 0334;
+03B9 0334 0314;
+0399 0314 0341 0334;
+1F39 0340 0334;
+03B9 0334 0301;
+1FBE 0334 0300;
+0399 0306 0334;
+1FBE 0334 0308;
+03CA 0340 0334;
+0399 0304 0334;
+1D704 0061;
+0399 0041;
+1D798 0041;
+1F32 0041;
+1F39 0041;
+1F37 0041;
+1FDB 0041;
+1FD6 0041;
+1FD2 0041;
+1D6CA 0062;
+1D798 0062;
+1F39 0062;
+1FDB 0062;
+1FD2 0062;
+03BA 003F;
+1D78C 0021;
+1D78C 003F;
+1D6B1 003F;
+1D6DE 0061;
+1D6DE 0041;
+039A 0041;
+1D799 0041;
+1D78C 0062;
+03D7 003F;
+03BB 003F;
+1D7B4 003F;
+1D726 003F;
+1D6CC 0041;
+1D760 0061;
+1D740 0062;
+1D27 003F;
+1D741 0021;
+1D6B3 0021;
+03BC 0061;
+1D707 0041;
+1D79B 0061;
+3382 0062;
+1D6ED 0062;
+338D 003F;
+339B 003F;
+33B6 003F;
+03BD 003F;
+1D7B6 003F;
+1D728 003F;
+1D6CE 0041;
+1D762 0061;
+1D742 0062;
+03BE 003F;
+1D7B7 003F;
+1D729 003F;
+1D6CF 0041;
+1D763 0061;
+1D743 0062;
+03BF 003F;
+1D7B8 003F;
+1D72A 003F;
+1F4C 003F;
+1F45 003F;
+1F79 003F;
+03BF 0334 0343;
+1F44 0334;
+039F 0334 0343 0300;
+03BF 0334 0314 0301;
+1F43 0334;
+039F 0334 0301;
+1FF8 0334;
+1D744 0041;
+1D6B6 0041;
+1F44 0041;
+1F49 0041;
+1F79 0061;
+1FF8 0041;
+1D72A 0062;
+1F49 0062;
+1FF8 0062;
+1D745 0021;
+1D71B 003F;
+1D6B7 0021;
+1D79F 003F;
+1D745 0061;
+1D71B 0041;
+1D6B7 0061;
+1D79F 0041;
+1D77F 0062;
+1D79F 0062;
+03FB 0061;
+03DF 0061;
+03D9 0061;
+1D6D2 0021;
+1D6D2 003F;
+03A1 0021;
+1D766 003F;
+03C1 0334 0313;
+03C1 0061;
+1D780 0061;
+1D780 0041;
+1D7A0 0061;
+1FE5 0061;
+1D746 0062;
+1D766 0062;
+1D29 0062;
+1D6D3 0021;
+1D6D3 003F;
+03A3 0021;
+1D6F4 003F;
+1D6D3 0061;
+1D6D3 0041;
+03A3 0061;
+1D6F4 0041;
+1D70D 0062;
+1D6BA 0062;
+037C 0061;
+037B 0061;
+037D 0061;
+1D749 0021;
+1D6BB 0021;
+03C4 0061;
+1D783 0041;
+1D6F5 0041;
+03A4 0062;
+1D74A 0021;
+03D2 0021;
+1D76A 003F;
+1F51 0021;
+1F5B 0021;
+038E 0021;
+1FE0 0021;
+03D4 0021;
+1FE1 0021;
+03C5 0334 0343 0341;
+03C5 0314 0334;
+03A5 0314 0301 0334;
+1F59 0334 0300;
+03C5 0334 0301;
+03D2 0341 0334;
+03C5 0306 0334;
+03C5 0334 0308;
+03C5 0344 0334;
+03C5 0304 0334;
+1D74A 0061;
+03D2 0061;
+1D76A 0041;
+1F51 0061;
+1F5B 0061;
+038E 0061;
+1FE0 0061;
+03D4 0061;
+1FE1 0061;
+03A5 0062;
+1F56 0062;
+1F7B 0062;
+03AB 0062;
+03D5 0021;
+1D7BF 0021;
+1D7BF 003F;
+1D6F7 003F;
+03D5 0061;
+1D7BF 0061;
+1D7BF 0041;
+1D6F7 0041;
+1D6D7 0062;
+03A6 0062;
+1D6D8 0021;
+03A7 0021;
+1D76C 003F;
+1D74C 0061;
+1D6BE 0061;
+1D61 0061;
+03A7 0062;
+1D6D9 0021;
+03A8 0021;
+1D76D 003F;
+1D713 0041;
+1D7A7 0061;
+1D787 0062;
+1D2A 0061;
+1D6DA 003F;
+1D6FA 0021;
+1F60 003F;
+1FAC 003F;
+1F66 003F;
+1FA8 003F;
+1FA5 003F;
+1FAB 003F;
+1FA1 003F;
+1FFB 003F;
+1FF6 003F;
+2126 0334 0343;
+03C9 0343 0345 0301 0334;
+03C9 0334 0343 0340;
+1FA8 0334 0300;
+2126 0343 0342 0334;
+03C9 0343 0345 0334;
+03A9 0314 0334;
+03A9 0314 0341 0334;
+03C9 0314 0300 0334;
+1F61 0334 0345 0300;
+03A9 0314 0334 0342;
+1F6F 0345 0334;
+03C9 0301 0334;
+1F7D 0345 0334;
+03C9 0300 0345 0334;
+1FF6 0334 0345;
+1FFC 0021;
+1D714 0041;
+1D734 0061;
+1F68 0061;
+1F62 0061;
+1F6E 0061;
+1F61 0061;
+1FAD 0061;
+1F67 0061;
+1FA9 0061;
+1FF4 0061;
+1FF7 0061;
+1D788 0062;
+1F68 0062;
+1F6E 0062;
+1FAD 0062;
+1FA9 0062;
+1FF7 0062;
+03E0 0041;
+0372 0041;
+03F7 0041;
+2C80 0041;
+2C82 0041;
+2C84 0041;
+2C86 0041;
+2C88 0041;
+2CB6 0041;
+2C8A 0041;
+2C8C 0041;
+2C8E 0041;
+2C90 0041;
+2C92 0041;
+2C94 0041;
+2CB8 0021;
+2C96 0021;
+2C98 0021;
+2C9A 0021;
+2CBA 0021;
+2CBC 0021;
+2C9C 0021;
+2C9E 0021;
+2CA0 0021;
+2CA2 0021;
+2CA4 0021;
+2CA6 0021;
+2CA8 0021;
+2CAA 0021;
+2CAC 0021;
+2CAE 0021;
+2CB0 0021;
+2CBE 0021;
+2CC0 0021;
+03E2 0021;
+2CC2 0021;
+2CC4 0021;
+2CC6 0021;
+03E4 0021;
+03E6 0021;
+2CC8 0021;
+03E8 0021;
+2CCA 0021;
+2CCC 0021;
+2CCE 0021;
+2CD0 0021;
+2CD2 0021;
+2CD4 0021;
+03EA 0021;
+2CD6 0021;
+03EC 0021;
+2CD8 0021;
+2CDA 0021;
+2CDC 0021;
+03EE 0021;
+2CB2 0021;
+2CB4 0021;
+2CDE 0021;
+2CE0 0021;
+2CE2 0021;
+2DF6 0021;
+0410 0041;
+0430 0306 003F;
+0410 0334 0306;
+0410 1D165 0306 0061;
+0430 0308 003F;
+0410 0334 0308;
+0410 1D165 0308 0061;
+04D8 0021;
+04D9 0308 0021;
+04DB 0334;
+04D8 0308 0061;
+04D5 0021;
+0431 0021;
+2DE0 0041;
+0412 0021;
+2DE1 0062;
+0490 0021;
+0433 0001 0341 0061;
+0491 0062;
+0493 0062;
+04FB 0062;
+0495 0062;
+04F7 0062;
+0434 0041;
+0500 0021;
+A680 0021;
+0402 0021;
+A662 0021;
+0502 0021;
+0453 0021;
+0433 0334 0301;
+0433 0591 0301 0061;
+0413 0341 0061;
+0453 0062;
+0498 0061;
+0450 0021;
+0435 0334 0340;
+0415 0308 0334;
+0450 0041;
+2DF7 0062;
+0415 0306 0021;
+0435 0306 0061;
+0415 0306 0041;
+0454 0061;
+0416 0021;
+0416 0334 0306;
+04C2 0041;
+A685 0021;
+0436 0308 0021;
+04DD 0334;
+0416 0308 0061;
+0497 0021;
+0437 0021;
+2DE5 0041;
+A640 0021;
+0504 0021;
+0510 0021;
+0437 0308 003F;
+0417 0334 0308;
+0417 1D165 0308 0061;
+A642 0021;
+0405 0021;
+A644 0021;
+04E0 0021;
+A688 0021;
+0506 0021;
+A682 0021;
+0418 0021;
+0438 0300 0334;
+04E3 0334;
+040D 0061;
+0438 0062;
+048B 0061;
+0418 0308 0021;
+0438 0308 0061;
+0418 0308 0041;
+0456 0061;
+A646 0021;
+0456 0308 003F;
+0406 0334 0308;
+0406 1D165 0308 0061;
+0438 0306 003F;
+0418 0334 0306;
+0418 1D165 0306 0061;
+0408 0021;
+2DF8 0021;
+A648 0041;
+2DE6 0334;
+041A 0001 0341 0061;
+049A 0061;
+04C3 0061;
+04A0 0061;
+049E 0061;
+049C 0061;
+051E 0061;
+051A 0061;
+2DE7 0334;
+1D2B 0021;
+04C6 0041;
+0513 0041;
+0521 0041;
+0459 0041;
+A665 0041;
+0509 0041;
+0515 0041;
+041C 003F;
+041C 0062;
+04CD 0062;
+A666 0062;
+043D 0061;
+041D 0062;
+04CA 0062;
+04A3 0062;
+04C8 0062;
+0523 0062;
+04A5 0062;
+045A 0062;
+050B 0062;
+A669 003F;
+A66A 003F;
+2DEA 0041;
+A668 0041;
+A66E 0062;
+04E6 0021;
+043E 0591 0308 0061;
+04E6 0041;
+04E9 0041;
+04EB 003F;
+04EA 0334;
+04EA 0061;
+2DEB 003F;
+043F 0062;
+04A6 0041;
+0480 0041;
+0440 0061;
+048F 003F;
+0517 003F;
+0441 003F;
+0421 0061;
+2DF5 0062;
+050C 0062;
+04AA 0062;
+2DEE 0061;
+A68C 003F;
+050E 003F;
+04AC 003F;
+A68A 003F;
+040B 003F;
+043A 0301 003F;
+043A 0334 0301;
+043A 0591 0341 0061;
+041A 0591 0301 0061;
+040C 0062;
+04EE 003F;
+0423 0041;
+04EE 0041;
+0423 0306 0021;
+0443 0591 0306 0061;
+0423 0306 0041;
+04F0 0021;
+0443 0591 0308 0061;
+04F0 0041;
+04F2 0021;
+0443 0591 030B 0061;
+04F2 0041;
+04AF 0041;
+04B1 0041;
+A64A 003F;
+A64A 0062;
+0478 0062;
+0424 0062;
+2DEF 0061;
+04FC 003F;
+04FE 003F;
+04B2 003F;
+04BA 003F;
+A694 003F;
+0460 003F;
+047E 003F;
+A64C 003F;
+047C 003F;
+047A 003F;
+2DF0 003F;
+0446 0062;
+A68E 0041;
+04B4 0041;
+A690 0041;
+0447 0061;
+0427 0062;
+A692 0062;
+0447 0334 0308;
+04F5 0041;
+04F4 0062;
+04B6 0062;
+04CB 0062;
+04B8 0062;
+A686 0062;
+04BC 0062;
+04BE 0062;
+040F 0062;
+2DF2 0061;
+A696 003F;
+2DF3 003F;
+0449 0062;
+A64E 0041;
+A67F 0061;
+042A 0041;
+A650 0041;
+042B 0041;
+04F8 0021;
+044B 0591 0308 0061;
+04F8 0041;
+044C 0041;
+048D 0041;
+0462 003F;
+0462 0062;
+A652 0062;
+042D 0001 0308 0061;
+04EC 003F;
+04ED 0061;
+04ED 0062;
+044E 0061;
+A655 003F;
+A657 003F;
+A656 0061;
+044F 0041;
+0519 0041;
+0465 0041;
+0466 003F;
+0466 0062;
+A658 0062;
+2DFE 0061;
+A65A 003F;
+0468 003F;
+A65C 003F;
+2DFF 003F;
+046D 0062;
+046E 0041;
+0470 0041;
+0473 0061;
+0475 003F;
+0474 0062;
+0475 0334 030F;
+0477 0041;
+0476 0062;
+A65E 0062;
+04A8 0062;
+051C 0062;
+04C0 0062;
+2C00 0062;
+2C01 0062;
+2C02 0062;
+2C03 0062;
+2C04 0062;
+2C05 0062;
+2C06 0062;
+2C07 0062;
+2C08 0062;
+2C09 0062;
+2C0A 0062;
+2C0B 0062;
+2C0C 0062;
+2C0D 0062;
+2C0E 0062;
+2C0F 0062;
+2C10 0062;
+2C11 0062;
+2C12 0062;
+2C13 0062;
+2C14 0062;
+2C15 0062;
+2C16 0062;
+2C17 0062;
+2C18 0062;
+2C19 0062;
+2C1A 0062;
+2C1B 0062;
+2C1C 0062;
+2C1D 0062;
+2C1E 0062;
+2C1F 0062;
+2C20 0062;
+2C21 0062;
+2C22 0062;
+2C23 0062;
+2C24 0062;
+2C25 0062;
+2C26 0062;
+2C27 0062;
+2C28 0062;
+2C29 0062;
+2C2A 0062;
+2C2B 0062;
+2C2C 0062;
+2C2D 0062;
+2C2E 0062;
+2D00 0061;
+10D1 0062;
+10A1 0062;
+2D02 0061;
+10D3 0062;
+10A3 0062;
+2D04 0061;
+10D5 0062;
+10A5 0062;
+2D06 0061;
+10F1 0062;
+10C1 0062;
+2D07 0061;
+10D8 0062;
+10A8 0062;
+2D09 0061;
+10DA 0062;
+10AA 0062;
+2D0B 0061;
+10DC 0061;
+2D0C 0061;
+10F2 0062;
+10C2 0062;
+2D0D 0061;
+10DE 0062;
+10AE 0062;
+2D0F 0061;
+10E0 0062;
+10B0 0062;
+2D11 0061;
+10E2 0062;
+10B2 0062;
+2D23 0061;
+10E3 0062;
+10B3 0062;
+2D14 0061;
+10E5 0062;
+10B5 0062;
+2D16 0061;
+10E7 0062;
+10B7 0062;
+2D18 0061;
+10E9 0062;
+10B9 0062;
+2D1A 0061;
+10EB 0062;
+10BB 0062;
+2D1C 0061;
+10ED 0062;
+10BD 0062;
+2D1E 0061;
+10F4 0062;
+10C4 0062;
+2D1F 0061;
+10F0 0062;
+10C0 0062;
+2D25 0061;
+10F6 0062;
+10F8 0062;
+10FA 0062;
+0531 0062;
+0532 0062;
+0533 0062;
+0534 0062;
+0535 0062;
+0566 0061;
+0567 0061;
+0568 0061;
+0569 0061;
+056A 0061;
+056B 0061;
+056C 0061;
+056D 0061;
+056E 0061;
+056F 0061;
+0570 0061;
+0571 0061;
+0572 0061;
+0573 0061;
+0574 0061;
+FB14 0062;
+FB17 0062;
+0575 0061;
+0576 0061;
+0577 0061;
+0578 0061;
+0579 0061;
+057A 0061;
+057B 0061;
+057C 0061;
+057D 0061;
+057E 0061;
+FB16 0062;
+054F 0062;
+0550 0062;
+0551 0062;
+0552 0062;
+0553 0062;
+0554 0062;
+0555 0062;
+0556 0062;
+FB21 0021;
+FB30 0334;
+2135 0041;
+2135 0062;
+05D1 0021;
+FB31 0021;
+FB4C 0061;
+05D2 0334 05BC;
+FB32 0041;
+05D3 0334 05BC;
+FB22 0041;
+FB23 003F;
+FB34 0061;
+05D5 0334 05BC;
+FB4B 0041;
+05F0 0062;
+FB36 0334;
+05D7 003F;
+FB38 003F;
+05D9 05B4 0334;
+05D9 0041;
+05F2 0334 05B7;
+FB1F 0062;
+05DA 0334 05BC;
+FB4D 0021;
+FB3A 0061;
+05DC 0021;
+05DC 0041;
+FB26 0021;
+05DE 0041;
+FB3E 0062;
+05E0 0061;
+05E1 003F;
+05E1 0062;
+05E2 0062;
+05E3 05BC 0334;
+FB4E 003F;
+FB4E 0041;
+05E6 0334 05BC;
+FB46 0041;
+FB47 003F;
+FB27 003F;
+FB48 0061;
+05E9 0334 05C1;
+05E9 0334 05BC 05C1;
+FB2D 0021;
+FB49 0061;
+FB2D 0062;
+FB4A 003F;
+10900 0021;
+10902 0021;
+10904 0021;
+10906 0021;
+10908 0021;
+1090A 0021;
+1090C 0021;
+1090E 0021;
+10910 0021;
+10912 0021;
+10914 0021;
+0621 0021;
+0674 0061;
+0622 0021;
+0627 0653 0334;
+FE81 0041;
+FE84 003F;
+0623 0041;
+0672 0021;
+FB50 003F;
+0624 0021;
+0648 0654 0334;
+FE85 0041;
+FE88 003F;
+0627 0655 0041;
+0673 003F;
+0774 003F;
+FE8C 0021;
+064A 0591 0654 0061;
+FE8A 0041;
+FBEB 003F;
+FC97 003F;
+FC98 003F;
+FC99 003F;
+FC65 003F;
+FC02 0021;
+FC9A 0062;
+FC9B 003F;
+FBED 003F;
+FBEF 003F;
+FBF3 003F;
+FBF1 003F;
+FBF5 003F;
+FBFB 003F;
+FBFB 0041;
+FBFA 0062;
+FC04 0061;
+FBF8 0061;
+0627 003F;
+0627 0041;
+0627 0001 0654 0061;
+0675 0061;
+FDF2 0061;
+FE91 0021;
+FE91 0061;
+FE92 0062;
+FC05 0041;
+FC06 0041;
+FC07 0021;
+FD9E 0061;
+FC6B 0061;
+FC08 003F;
+FCE1 0062;
+FCE2 0021;
+FC09 0021;
+FC0A 0021;
+FB54 0021;
+FB54 0061;
+FB55 0062;
+FB57 003F;
+FB57 0041;
+FB5C 0021;
+FB5C 0061;
+FB5D 0062;
+0751 0061;
+0753 0061;
+0755 0061;
+FE94 0021;
+0629 0062;
+FE96 003F;
+FE96 0041;
+FC0B 0021;
+FD50 0061;
+FD9F 0061;
+FC0C 0041;
+FD51 0041;
+FC0D 0021;
+FD54 0061;
+FDA1 0061;
+FC71 0061;
+FC0E 003F;
+FCE3 0062;
+FD56 0061;
+FDA4 0061;
+FC73 0061;
+FCE4 0041;
+FC0F 0041;
+FC10 0041;
+FE9A 003F;
+FE9A 0041;
+FC11 0061;
+FC77 0061;
+FC12 003F;
+FCE5 0062;
+FCE6 0061;
+FC13 0041;
+FC14 0041;
+FB67 003F;
+FB67 0041;
+FB60 0021;
+FB60 0061;
+FB61 0062;
+067D 0061;
+FB63 003F;
+FB63 0041;
+FE9F 0021;
+FE9F 0061;
+FEA0 0062;
+FC15 0041;
+FDBE 0061;
+FC16 0021;
+FD58 0021;
+FDA7 0061;
+FD01 0021;
+FD02 0021;
+FB78 0021;
+FB78 0061;
+FB79 0062;
+FB73 003F;
+FB73 0041;
+FB7C 0021;
+FB7C 0061;
+FB7D 0062;
+FB80 0021;
+FB80 0061;
+FB81 0062;
+FEA2 003F;
+FEA2 0041;
+FC17 0021;
+FDBF 0061;
+FC18 0041;
+FD5A 0061;
+FCFF 0041;
+FD00 0041;
+FEA6 003F;
+FEA6 0041;
+FC19 0021;
+FC1A 0061;
+FC1B 0041;
+FD03 0041;
+FD04 0041;
+0682 0061;
+0757 0061;
+076E 0061;
+0772 0061;
+FEAA 0021;
+062F 0062;
+FC5B 003F;
+FEAC 0062;
+0688 0041;
+0689 0061;
+068B 0061;
+068C 0041;
+FB83 0021;
+068D 0062;
+068E 0041;
+068F 0061;
+06EE 0061;
+075A 0061;
+FC5C 003F;
+FEAE 0062;
+FDFC 0061;
+0632 0041;
+FB8D 0021;
+0691 0062;
+0693 0061;
+0695 0061;
+0697 0061;
+0698 0041;
+0699 0061;
+075B 0061;
+076C 0061;
+FEB3 0021;
+FEB3 0061;
+FEB4 0062;
+FCAD 0041;
+FD5D 0061;
+FD35 0021;
+FCAE 0062;
+FD36 0021;
+FCAF 0062;
+FDC6 0061;
+FD0E 0041;
+FCB0 0041;
+FD61 0061;
+FD5F 0041;
+FD62 0041;
+FCE8 0041;
+FCFB 0041;
+FCFC 0041;
+FEB6 003F;
+FEB6 0041;
+FD37 0021;
+FD25 0061;
+FD69 0061;
+FD0A 003F;
+FD38 0062;
+FD67 0041;
+FD39 0021;
+FD27 0061;
+FD0D 0021;
+FCE9 0021;
+FD28 0061;
+FD6A 0021;
+FD6C 0021;
+FCEA 0021;
+FCFD 0021;
+FCFE 0021;
+069A 0061;
+069C 0061;
+075C 0061;
+0770 0061;
+077E 0061;
+FEBA 003F;
+FEBA 0041;
+FC20 0021;
+FD64 0021;
+FDA9 0061;
+FD0F 0021;
+FDF5 0061;
+FDFA 0061;
+FC21 0021;
+FD66 0021;
+FD05 0021;
+FD06 0021;
+FEBF 0021;
+FEBF 0061;
+FEC0 0062;
+FC22 0041;
+FC23 0041;
+FDAB 0061;
+FC24 0041;
+FD6F 0041;
+FD10 0041;
+FC25 0041;
+FD07 0041;
+FD08 0041;
+069E 0061;
+FEC3 0021;
+FEC3 0061;
+FEC4 0062;
+FC26 0041;
+FD33 0041;
+FD71 0021;
+FD73 0061;
+FCF5 0021;
+FCF6 0021;
+FEC7 0021;
+FEC7 0061;
+FEC8 0062;
+FCB9 0041;
+069F 0061;
+FECA 003F;
+FECA 0041;
+FC29 0021;
+FD75 0021;
+FDF7 0061;
+FC2A 0041;
+FD76 0041;
+FDB6 0061;
+FCF7 0041;
+FCF8 0041;
+FECE 003F;
+FECE 0041;
+FC2B 0021;
+FC2C 0021;
+FD79 0061;
+FD7A 0061;
+FCF9 0041;
+FCFA 0041;
+06FC 0061;
+075E 0061;
+FED3 0021;
+FED3 0061;
+FED4 0062;
+FC2D 0041;
+FC2E 0041;
+FC2F 0041;
+FD7C 0041;
+FC30 0041;
+FC31 0021;
+FC32 0021;
+06A1 0061;
+06A3 0061;
+FB6B 003F;
+FB6B 0041;
+06A5 0061;
+FB6F 003F;
+FB6F 0041;
+0760 0061;
+066F 0061;
+FED6 003F;
+FED6 0041;
+FC33 0021;
+FDF1 0061;
+FC34 0041;
+FD7E 0041;
+FDB2 0061;
+FC35 0041;
+FC36 0041;
+06A8 0061;
+FEDA 003F;
+FEDA 0041;
+FC37 0021;
+FC38 0021;
+FC39 0021;
+FC3A 0021;
+FCEB 0021;
+FC81 0061;
+FCEC 0021;
+FC82 0061;
+FDBB 0021;
+FDB7 0061;
+FC3D 0041;
+FC3E 0041;
+FB8F 003F;
+FB8F 0041;
+06AA 0061;
+06AC 0061;
+FBD5 0021;
+FBD5 0061;
+FBD6 0062;
+FB94 0021;
+FB94 0061;
+FB95 0062;
+FB9C 0021;
+FB9C 0061;
+FB9D 0062;
+FB98 0021;
+FB98 0061;
+FB99 0062;
+0762 0061;
+063C 0061;
+0764 0061;
+FEDE 003F;
+FEDE 0041;
+FEF5 0021;
+FEF7 0021;
+FEF9 0021;
+FEFB 0021;
+FC3F 0021;
+FD84 0021;
+FDBC 0021;
+FDAC 0061;
+FC40 0041;
+FD80 0041;
+FD81 0061;
+FC41 0041;
+FD85 0041;
+FC42 003F;
+FCED 0062;
+FD87 0041;
+FCCD 0061;
+FC43 0041;
+FC44 0041;
+06B6 0061;
+06B8 0061;
+FEE3 0021;
+0645 0061;
+06FE 0061;
+FC88 0061;
+FC45 0041;
+FD92 0061;
+FDC0 0061;
+FC46 0041;
+FD8A 0061;
+FD8B 0061;
+FC47 0041;
+FD8F 0061;
+FC89 0021;
+FCD1 0062;
+FC49 0061;
+0765 0061;
+FEE7 0021;
+FEE7 0061;
+FEE8 0062;
+FC4B 0041;
+FDBD 0041;
+FD97 0041;
+FDC7 0061;
+FC4C 0041;
+FD96 0061;
+FC4D 0021;
+FC8A 0061;
+FCEE 0021;
+FC8C 0061;
+FD9B 0061;
+FC8D 0061;
+FCEF 0041;
+FC4F 0041;
+FC50 0041;
+06BA 0041;
+FBA2 0021;
+FBA2 0061;
+FBA3 0062;
+06BD 0061;
+0767 0061;
+0769 0061;
+FEEA 003F;
+FEEC 0041;
+FEEA 0062;
+FC51 0041;
+FC52 0041;
+FD94 0061;
+FC54 0061;
+FBAB 003F;
+FBAB 0041;
+FBA8 0021;
+06C2 0334;
+FBA7 0041;
+06C2 0062;
+06FF 0062;
+FBA4 0021;
+06D5 0062;
+FEED 0021;
+0648 0001 0654 0061;
+FDF8 0021;
+06C5 0021;
+FBE0 0061;
+FBD9 003F;
+06C7 0021;
+FBD7 0061;
+0677 0041;
+FBDB 003F;
+06C9 0021;
+FBE2 0061;
+06CB 0021;
+FBDE 0061;
+0778 0021;
+0649 0021;
+FC90 0021;
+FEF0 0061;
+FBE9 0062;
+FEF3 003F;
+06E6 0041;
+064A 0062;
+0678 0062;
+FC55 0062;
+FCDB 0061;
+FDAE 0062;
+FC57 0062;
+FC92 0062;
+FCDD 0041;
+FC58 0062;
+FD9C 0062;
+FC94 0062;
+FCF1 0062;
+FC59 0062;
+FC5A 0062;
+FBFC 003F;
+FBFC 0041;
+06CD 0062;
+FBE7 0021;
+FBE7 0061;
+FBE4 0062;
+063D 0062;
+063F 0062;
+0776 0062;
+FBAE 0021;
+FBB0 003F;
+FBB1 0041;
+077A 003F;
+0710 003F;
+072D 0061;
+0713 0061;
+0716 003F;
+072F 0061;
+0718 003F;
+074D 003F;
+071B 003F;
+071D 003F;
+071F 003F;
+0720 003F;
+0722 003F;
+0724 0061;
+0726 003F;
+074F 003F;
+0729 003F;
+072B 003F;
+0780 003F;
+079A 003F;
+0782 003F;
+079C 003F;
+0785 003F;
+0787 003F;
+07A3 003F;
+07A5 003F;
+078A 003F;
+079B 003F;
+0798 003F;
+07A1 003F;
+078E 003F;
+078F 003F;
+079D 003F;
+079F 003F;
+0792 003F;
+0794 003F;
+0796 003F;
+07B1 003F;
+07A7 003F;
+07A9 003F;
+07AB 003F;
+07AD 003F;
+07AF 003F;
+07CA 003F;
+07CC 003F;
+07CE 003F;
+07D0 003F;
+07D2 003F;
+07D4 003F;
+07D6 003F;
+07D7 003F;
+07D8 003F;
+07EA 0061;
+07DB 003F;
+07DD 003F;
+07DF 003F;
+07E1 003F;
+07E3 003F;
+07E5 003F;
+07E7 003F;
+07F5 003F;
+2D31 003F;
+2D33 003F;
+2D35 003F;
+2D37 003F;
+2D39 003F;
+2D3B 003F;
+2D3D 003F;
+2D3F 003F;
+2D41 003F;
+2D43 003F;
+2D45 003F;
+2D47 003F;
+2D49 003F;
+2D4B 003F;
+2D4D 003F;
+2D4F 003F;
+2D51 003F;
+2D53 003F;
+2D55 003F;
+2D57 003F;
+2D59 003F;
+2D5B 003F;
+2D5D 003F;
+2D5F 003F;
+2D61 003F;
+2D63 003F;
+2D65 003F;
+1200 003F;
+1202 003F;
+1204 003F;
+1206 003F;
+1208 003F;
+120A 003F;
+120C 003F;
+120E 003F;
+2D80 003F;
+1211 003F;
+1213 003F;
+1215 003F;
+1217 003F;
+1219 003F;
+121B 003F;
+121D 003F;
+121F 003F;
+1381 003F;
+1383 003F;
+1220 003F;
+1222 003F;
+1224 003F;
+1226 003F;
+1228 003F;
+122A 003F;
+122C 003F;
+122E 003F;
+2D82 003F;
+1231 003F;
+1233 003F;
+1235 003F;
+1237 003F;
+1238 003F;
+123A 003F;
+123C 003F;
+123E 003F;
+2D84 003F;
+1241 003F;
+1243 003F;
+1245 003F;
+1247 003F;
+124A 003F;
+124C 003F;
+1250 003F;
+1252 003F;
+1254 003F;
+1256 003F;
+125A 003F;
+125C 003F;
+1260 003F;
+1262 003F;
+1264 003F;
+1266 003F;
+1384 003F;
+1386 003F;
+2D85 003F;
+1269 003F;
+126B 003F;
+126D 003F;
+126F 003F;
+1271 003F;
+1273 003F;
+1275 003F;
+1277 003F;
+1278 003F;
+127A 003F;
+127C 003F;
+127E 003F;
+2D87 003F;
+1281 003F;
+1283 003F;
+1285 003F;
+1287 003F;
+128A 003F;
+128C 003F;
+1290 003F;
+1292 003F;
+1294 003F;
+1296 003F;
+2D88 003F;
+1299 003F;
+129B 003F;
+129D 003F;
+129F 003F;
+12A0 003F;
+12A2 003F;
+12A4 003F;
+12A6 003F;
+2D8A 003F;
+12A9 003F;
+12AB 003F;
+12AD 003F;
+12AF 003F;
+12B2 003F;
+12B4 003F;
+12B8 003F;
+12BA 003F;
+12BC 003F;
+12BE 003F;
+12C2 003F;
+12C4 003F;
+12C8 003F;
+12CA 003F;
+12CC 003F;
+12CE 003F;
+12D0 003F;
+12D2 003F;
+12D4 003F;
+12D6 003F;
+12D9 003F;
+12DB 003F;
+12DD 003F;
+12DF 003F;
+12E0 003F;
+12E2 003F;
+12E4 003F;
+12E6 003F;
+12E8 003F;
+12EA 003F;
+12EC 003F;
+12EE 003F;
+12F0 003F;
+12F2 003F;
+12F4 003F;
+12F6 003F;
+2D8C 003F;
+12F9 003F;
+12FB 003F;
+12FD 003F;
+12FF 003F;
+1300 003F;
+1302 003F;
+1304 003F;
+1306 003F;
+2D8E 003F;
+1309 003F;
+130B 003F;
+130D 003F;
+130F 003F;
+1312 003F;
+1314 003F;
+1318 003F;
+131A 003F;
+131C 003F;
+131E 003F;
+2D93 003F;
+2D95 003F;
+1320 003F;
+1322 003F;
+1324 003F;
+1326 003F;
+2D8F 003F;
+1329 003F;
+132B 003F;
+132D 003F;
+132F 003F;
+1330 003F;
+1332 003F;
+1334 003F;
+1336 003F;
+2D91 003F;
+1339 003F;
+133B 003F;
+133D 003F;
+133F 003F;
+1341 003F;
+1343 003F;
+1345 003F;
+1347 003F;
+1349 003F;
+134B 003F;
+134D 003F;
+134F 003F;
+1389 003F;
+138B 003F;
+1351 003F;
+1353 003F;
+1355 003F;
+1357 003F;
+138D 003F;
+138F 003F;
+1358 003F;
+135A 003F;
+2DA1 003F;
+2DA3 003F;
+2DA5 003F;
+2DA8 003F;
+2DAA 003F;
+2DAC 003F;
+2DAE 003F;
+2DB1 003F;
+2DB3 003F;
+2DB5 003F;
+2DB8 003F;
+2DBA 003F;
+2DBC 003F;
+2DBE 003F;
+2DC1 003F;
+2DC3 003F;
+2DC5 003F;
+2DC8 003F;
+2DCA 003F;
+2DCC 003F;
+2DCE 003F;
+2DD1 003F;
+2DD3 003F;
+2DD5 003F;
+2DD8 003F;
+2DDA 003F;
+2DDC 003F;
+2DDE 003F;
+0972 003F;
+0905 003F;
+0907 003F;
+0909 003F;
+090B 003F;
+090C 003F;
+090D 003F;
+090F 003F;
+0911 003F;
+0913 003F;
+0915 003F;
+0915 0062;
+0916 0041;
+095A 0021;
+097B 0061;
+0919 0061;
+091B 0061;
+091C 0061;
+097C 0062;
+091E 0062;
+0920 0062;
+095C 0061;
+0922 003F;
+0922 0062;
+0924 0041;
+0926 0041;
+0928 093C 0334;
+092A 0021;
+095E 0021;
+092C 0061;
+092D 0061;
+092F 0334 093C;
+095F 0062;
+0931 0061;
+0933 003F;
+0933 0062;
+0936 0041;
+0938 0041;
+093D 0041;
+093E 0041;
+0940 0041;
+0942 0041;
+0944 0041;
+0963 0041;
+0946 0041;
+0948 0041;
+094A 0041;
+094C 0041;
+0985 003F;
+0987 003F;
+0989 003F;
+098B 003F;
+098C 003F;
+098F 003F;
+0993 003F;
+0995 003F;
+0997 003F;
+0999 003F;
+099B 003F;
+099D 003F;
+099F 003F;
+09A1 003F;
+09A1 0062;
+09A2 0041;
+09A4 0021;
+09A5 0021;
+09A7 0021;
+09AA 0021;
+09AC 0021;
+09AE 0021;
+09DF 0021;
+09B0 0061;
+09B2 0061;
+09B6 0061;
+09B8 0061;
+09BD 0061;
+09BF 0061;
+09C1 0061;
+09C3 0061;
+09E2 0061;
+09C7 0061;
+09C8 003F;
+09C7 09BE 0041;
+09C7 09D7 0041;
+09CD 0062;
+0A74 0062;
+0A09 0062;
+0A13 0062;
+0A06 0062;
+0A14 0062;
+0A07 0062;
+0A0F 0062;
+0A36 0061;
+0A51 003F;
+0A16 003F;
+0A16 0062;
+0A17 0041;
+0A19 0021;
+0A1B 0021;
+0A5B 0021;
+0A1D 0061;
+0A1F 0061;
+0A21 0061;
+0A23 0061;
+0A25 0061;
+0A27 0061;
+0A2A 0061;
+0A2B 0061;
+0A2C 0062;
+0A2E 0062;
+0A75 0062;
+0A33 0334;
+0A35 003F;
+0A3E 003F;
+0A40 003F;
+0A42 003F;
+0A48 003F;
+0A4C 003F;
+0A4D 0062;
+0A85 0062;
+0A87 0062;
+0A89 0062;
+0A8B 0062;
+0A8C 0062;
+0A8D 0062;
+0A90 0062;
+0A93 0062;
+0A95 0062;
+0A97 0062;
+0A99 0062;
+0A9B 0062;
+0A9D 0062;
+0A9F 0062;
+0AA1 0062;
+0AA3 0062;
+0AA5 0062;
+0AA7 0062;
+0AAA 0062;
+0AAC 0062;
+0AAE 0062;
+0AB0 0062;
+0AB3 0062;
+0AB6 0062;
+0AB8 0062;
+0ABD 0062;
+0ABF 0062;
+0AC1 0062;
+0AC3 0062;
+0AE2 0062;
+0AC5 0062;
+0AC8 0062;
+0ACB 0062;
+0ACD 0061;
+0B06 0061;
+0B08 0061;
+0B0A 0061;
+0B60 0061;
+0B61 0061;
+0B10 0061;
+0B14 0061;
+0B16 0061;
+0B18 0061;
+0B1A 0061;
+0B1C 0061;
+0B1E 0061;
+0B20 0061;
+0B21 0061;
+0B5D 0334;
+0B23 003F;
+0B25 003F;
+0B27 003F;
+0B2A 003F;
+0B2C 003F;
+0B2E 003F;
+0B5F 003F;
+0B32 003F;
+0B35 003F;
+0B36 003F;
+0B38 003F;
+0B3D 003F;
+0B3F 003F;
+0B41 003F;
+0B43 003F;
+0B62 003F;
+0B47 003F;
+0B47 0001 0B57 0061;
+0B48 0041;
+0B4B 0041;
+0B4C 0041;
+0B56 0021;
+0BD0 0021;
+0B85 0021;
+0B87 0021;
+0B89 0021;
+0B8E 0021;
+0B90 0021;
+0B92 0001 0BD7 0061;
+0B92 0BD7 003F;
+0B95 0061;
+0B9A 0061;
+0B9E 0061;
+0BA3 0061;
+0BA8 0061;
+0BAA 0061;
+0BAF 0061;
+0BB1 0061;
+0BB3 0061;
+0BB5 0061;
+0BB7 0061;
+0BB9 0061;
+0BBF 0061;
+0BC1 0061;
+0BC6 0061;
+0BC7 003F;
+0BC8 0041;
+0BC6 0BBE 0062;
+0BC7 0BBE 0062;
+0BC6 0BD7 0062;
+0BD7 003F;
+0C06 003F;
+0C08 003F;
+0C0A 003F;
+0C60 003F;
+0C61 003F;
+0C0F 003F;
+0C12 003F;
+0C14 003F;
+0C16 003F;
+0C18 003F;
+0C1A 003F;
+0C1B 003F;
+0C59 003F;
+0C1E 003F;
+0C20 003F;
+0C22 003F;
+0C24 003F;
+0C26 003F;
+0C28 003F;
+0C2B 003F;
+0C2D 003F;
+0C2F 003F;
+0C31 003F;
+0C33 003F;
+0C36 003F;
+0C38 003F;
+0C3D 003F;
+0C3F 003F;
+0C41 003F;
+0C43 003F;
+0C62 003F;
+0C46 003F;
+0C46 0C56 0021;
+0C48 0061;
+0C4B 0021;
+0C4D 0021;
+0C55 0334;
+0C56 0062;
+0C86 0062;
+0C88 0062;
+0C8A 0062;
+0CE0 0062;
+0CE1 0062;
+0C8F 0062;
+0C92 0062;
+0C94 0062;
+0C96 0062;
+0C98 0062;
+0C9A 0062;
+0C9C 0062;
+0C9E 0062;
+0CA0 0062;
+0CA2 0062;
+0CA4 0062;
+0CA6 0062;
+0CA8 0062;
+0CAB 0062;
+0CAD 0062;
+0CAF 0062;
+0CB1 0062;
+0CB5 0062;
+0CB7 0062;
+0CB9 0062;
+0CDE 0062;
+0CBE 0062;
+0CC0 0021;
+0CC1 003F;
+0CC3 003F;
+0CE2 003F;
+0CC6 003F;
+0CC6 0001 0CD5 0061;
+0CC6 0CD5 0061;
+0CC6 0CD6 0061;
+0CC6 0CC2 0061;
+0CCA 0591 0CD5 0061;
+0CCB 0061;
+0CCC 0041;
+0CD5 003F;
+0D05 003F;
+0D07 003F;
+0D09 003F;
+0D0B 003F;
+0D0C 003F;
+0D0E 003F;
+0D10 003F;
+0D13 003F;
+0D7F 003F;
+0D16 003F;
+0D18 003F;
+0D1A 003F;
+0D1C 003F;
+0D1E 003F;
+0D20 003F;
+0D22 003F;
+0D23 003F;
+0D25 003F;
+0D27 003F;
+0D28 003F;
+0D2B 003F;
+0D2D 003F;
+0D2F 003F;
+0D7C 003F;
+0D7D 003F;
+0D7E 003F;
+0D34 003F;
+0D36 003F;
+0D38 003F;
+0D3D 003F;
+0D3F 003F;
+0D41 003F;
+0D43 003F;
+0D62 003F;
+0D46 003F;
+0D47 0021;
+0D48 0061;
+0D4A 0041;
+0D4B 0041;
+0D4C 0041;
+0334 0D4D;
+0D86 0021;
+0D88 0021;
+0D8A 0021;
+0D8C 0021;
+0D8E 0021;
+0D90 0021;
+0D92 0021;
+0D94 0021;
+0D96 0021;
+0D9B 0021;
+0D9D 0021;
+0D9F 0021;
+0DA1 0021;
+0DA3 0021;
+0DA5 0021;
+0DA7 0021;
+0DA9 0021;
+0DAB 0021;
+0DAD 0021;
+0DAF 0021;
+0DB1 0021;
+0DB4 0021;
+0DB6 0021;
+0DB8 0021;
+0DBA 0021;
+0DBD 0021;
+0DC1 0021;
+0DC3 0021;
+0DC5 0021;
+0DCA 0021;
+0DCF 0041;
+0DD1 0041;
+0DD3 0041;
+0DD6 0041;
+0DD9 0041;
+0DD9 0591 0DDF 0061;
+0DD9 0DCA 0061;
+0DDB 0041;
+0DD9 0DCF 0062;
+0DD9 0DCF 0334 0DCA;
+0DDD 0061;
+0DDE 003F;
+0DDF 0041;
+0DF3 0041;
+A801 0041;
+A803 0041;
+A805 0041;
+A807 003F;
+A809 003F;
+A80C 003F;
+A80E 003F;
+A810 003F;
+A812 003F;
+A814 003F;
+A816 003F;
+A818 003F;
+A81A 003F;
+A81C 003F;
+A81E 003F;
+A820 003F;
+A822 003F;
+A824 003F;
+A826 003F;
+A882 003F;
+A884 003F;
+A886 003F;
+A888 003F;
+A88A 003F;
+A88C 003F;
+A88E 003F;
+A890 003F;
+A892 003F;
+A894 003F;
+A896 003F;
+A898 003F;
+A89A 003F;
+A89C 003F;
+A89E 003F;
+A8A0 003F;
+A8A2 003F;
+A8A4 003F;
+A8A6 003F;
+A8A8 003F;
+A8AA 003F;
+A8AC 003F;
+A8AE 003F;
+A8B0 003F;
+A8B2 003F;
+A8B4 003F;
+A8B6 003F;
+A8B8 003F;
+A8BA 003F;
+A8BC 003F;
+A8BE 003F;
+A8C0 003F;
+A8C2 003F;
+A8C4 003F;
+1B84 0021;
+1B86 0021;
+1B88 0021;
+1B8A 0021;
+1B8B 0021;
+1B8D 0021;
+1B8F 0021;
+1B91 0021;
+1B93 0021;
+1B95 0021;
+1B97 0021;
+1B99 0021;
+1BA1 0021;
+1BA2 0021;
+1BA3 0021;
+1B9E 0021;
+1BAF 0021;
+1BA4 0021;
+1BA6 0021;
+1BA8 0021;
+1BAA 0021;
+10A00 0062;
+10A02 0062;
+10A05 0062;
+10A0C 0062;
+10A11 0062;
+10A13 0062;
+10A16 0062;
+10A19 0062;
+10A1B 0062;
+10A1D 0062;
+10A1F 0062;
+10A21 0062;
+10A23 0062;
+10A25 0062;
+10A27 0062;
+10A29 0062;
+10A2B 0062;
+10A2D 0062;
+10A2F 0062;
+10A31 0062;
+10A33 0062;
+0E01 0061;
+0E41 0E01 0061;
+0E43 0E01 0061;
+0E02 0061;
+0E41 0E02 0061;
+0E43 0E02 0061;
+0E03 0061;
+0E41 0E03 0061;
+0E43 0E03 0061;
+0E04 0061;
+0E41 0E04 0061;
+0E43 0E04 0061;
+0E05 0061;
+0E41 0E05 0061;
+0E43 0E05 0061;
+0E06 0061;
+0E41 0E06 0061;
+0E43 0E06 0061;
+0E07 0061;
+0E41 0E07 0061;
+0E43 0E07 0061;
+0E08 0061;
+0E41 0E08 0061;
+0E43 0E08 0061;
+0E09 0061;
+0E41 0E09 0061;
+0E43 0E09 0061;
+0E0A 0061;
+0E41 0E0A 0061;
+0E43 0E0A 0061;
+0E0B 0061;
+0E41 0E0B 0061;
+0E43 0E0B 0061;
+0E0C 0061;
+0E41 0E0C 0061;
+0E43 0E0C 0061;
+0E0D 0061;
+0E41 0E0D 0061;
+0E43 0E0D 0061;
+0E0E 0061;
+0E41 0E0E 0061;
+0E43 0E0E 0061;
+0E0F 0061;
+0E41 0E0F 0061;
+0E43 0E0F 0061;
+0E10 0061;
+0E41 0E10 0061;
+0E43 0E10 0061;
+0E11 0061;
+0E41 0E11 0061;
+0E43 0E11 0061;
+0E12 0061;
+0E41 0E12 0061;
+0E43 0E12 0061;
+0E13 0061;
+0E41 0E13 0061;
+0E43 0E13 0061;
+0E14 0061;
+0E41 0E14 0061;
+0E43 0E14 0061;
+0E15 0061;
+0E41 0E15 0061;
+0E43 0E15 0061;
+0E16 0061;
+0E41 0E16 0061;
+0E43 0E16 0061;
+0E17 0061;
+0E41 0E17 0061;
+0E43 0E17 0061;
+0E18 0061;
+0E41 0E18 0061;
+0E43 0E18 0061;
+0E19 0061;
+0E41 0E19 0061;
+0E43 0E19 0061;
+0E1A 0061;
+0E41 0E1A 0061;
+0E43 0E1A 0061;
+0E1B 0061;
+0E41 0E1B 0061;
+0E43 0E1B 0061;
+0E1C 0061;
+0E41 0E1C 0061;
+0E43 0E1C 0061;
+0E1D 0061;
+0E41 0E1D 0061;
+0E43 0E1D 0061;
+0E1E 0061;
+0E41 0E1E 0061;
+0E43 0E1E 0061;
+0E1F 0061;
+0E41 0E1F 0061;
+0E43 0E1F 0061;
+0E20 0061;
+0E41 0E20 0061;
+0E43 0E20 0061;
+0E21 0061;
+0E41 0E21 0061;
+0E43 0E21 0061;
+0E22 0061;
+0E41 0E22 0061;
+0E43 0E22 0061;
+0E23 0061;
+0E41 0E23 0061;
+0E43 0E23 0061;
+0E24 0061;
+0E41 0E24 0061;
+0E43 0E24 0061;
+0E25 0061;
+0E41 0E25 0061;
+0E43 0E25 0061;
+0E26 0061;
+0E41 0E26 0061;
+0E43 0E26 0061;
+0E27 0061;
+0E41 0E27 0061;
+0E43 0E27 0061;
+0E28 0061;
+0E41 0E28 0061;
+0E43 0E28 0061;
+0E29 0061;
+0E41 0E29 0061;
+0E43 0E29 0061;
+0E2A 0061;
+0E41 0E2A 0061;
+0E43 0E2A 0061;
+0E2B 0061;
+0E41 0E2B 0061;
+0E43 0E2B 0061;
+0E2C 0061;
+0E41 0E2C 0061;
+0E43 0E2C 0061;
+0E2D 0061;
+0E41 0E2D 0061;
+0E43 0E2D 0061;
+0E2E 0061;
+0E41 0E2E 0061;
+0E43 0E2E 0061;
+0E2F 0061;
+0E31 0061;
+0E32 0062;
+0E4D 0E32 0062;
+0E35 0062;
+0E37 0062;
+0334 0E39;
+0E3A 0041;
+0E40 0001 0E02 0061;
+0E40 0591 0E05 0061;
+0E40 1D165 0E08 0061;
+0E40 0001 0E0C 0061;
+0E40 0591 0E0F 0061;
+0E40 1D165 0E12 0061;
+0E40 0001 0E16 0061;
+0E40 0591 0E19 0061;
+0E40 1D165 0E1C 0061;
+0E40 0001 0E20 0061;
+0E40 0591 0E23 0061;
+0E40 1D165 0E26 0061;
+0E40 0001 0E2A 0061;
+0E40 0591 0E2D 0061;
+0E41 0001 0E01 0061;
+0E41 0591 0E04 0061;
+0E41 1D165 0E07 0061;
+0E41 0001 0E0B 0061;
+0E41 0591 0E0E 0061;
+0E41 1D165 0E11 0061;
+0E41 0001 0E15 0061;
+0E41 0591 0E18 0061;
+0E41 1D165 0E1B 0061;
+0E41 0001 0E1F 0061;
+0E41 0591 0E22 0061;
+0E41 1D165 0E25 0061;
+0E41 0001 0E29 0061;
+0E41 0591 0E2C 0061;
+0E42 0061;
+0E42 0591 0E03 0061;
+0E42 1D165 0E06 0061;
+0E42 0001 0E0A 0061;
+0E42 0591 0E0D 0061;
+0E42 1D165 0E10 0061;
+0E42 0001 0E14 0061;
+0E42 0591 0E17 0061;
+0E42 1D165 0E1A 0061;
+0E42 0001 0E1E 0061;
+0E42 0591 0E21 0061;
+0E42 1D165 0E24 0061;
+0E42 0001 0E28 0061;
+0E42 0591 0E2B 0061;
+0E42 1D165 0E2E 0061;
+0E43 0591 0E02 0061;
+0E43 1D165 0E05 0061;
+0E43 0001 0E09 0061;
+0E43 0591 0E0C 0061;
+0E43 1D165 0E0F 0061;
+0E43 0001 0E13 0061;
+0E43 0591 0E16 0061;
+0E43 1D165 0E19 0061;
+0E43 0001 0E1D 0061;
+0E43 0591 0E20 0061;
+0E43 1D165 0E23 0061;
+0E43 0001 0E27 0061;
+0E43 0591 0E2A 0061;
+0E43 1D165 0E2D 0061;
+0E44 0591 0E01 0061;
+0E44 1D165 0E04 0061;
+0E44 0001 0E08 0061;
+0E44 0591 0E0B 0061;
+0E44 1D165 0E0E 0061;
+0E44 0001 0E12 0061;
+0E44 0591 0E15 0061;
+0E44 1D165 0E18 0061;
+0E44 0001 0E1C 0061;
+0E44 0591 0E1F 0061;
+0E44 1D165 0E22 0061;
+0E44 0001 0E26 0061;
+0E44 0591 0E29 0061;
+0E44 1D165 0E2C 0061;
+0E45 0041;
+0EC0 0E81 0041;
+0EC2 0E81 0041;
+0EC4 0E81 0041;
+0EC0 0E82 0041;
+0EC2 0E82 0041;
+0EC4 0E82 0041;
+0EC0 0E84 0041;
+0EC2 0E84 0041;
+0EC4 0E84 0041;
+0EC0 0E87 0041;
+0EC2 0E87 0041;
+0EC4 0E87 0041;
+0EC0 0E88 0041;
+0EC2 0E88 0041;
+0EC4 0E88 0041;
+0EC0 0E8A 0041;
+0EC2 0E8A 0041;
+0EC4 0E8A 0041;
+0EC0 0E8D 0041;
+0EC2 0E8D 0041;
+0EC4 0E8D 0041;
+0EC0 0E94 0041;
+0EC2 0E94 0041;
+0EC4 0E94 0041;
+0EC0 0E95 0041;
+0EC2 0E95 0041;
+0EC4 0E95 0041;
+0EC0 0E96 0041;
+0EC2 0E96 0041;
+0EC4 0E96 0041;
+0EC0 0E97 0041;
+0EC2 0E97 0041;
+0EC4 0E97 0041;
+0EC0 0E99 0041;
+0EC2 0E99 0041;
+0EC4 0E99 0041;
+0EC0 0E9A 0041;
+0EC2 0E9A 0041;
+0EC4 0E9A 0041;
+0EC0 0E9B 0041;
+0EC2 0E9B 0041;
+0EC4 0E9B 0041;
+0EC0 0E9C 0041;
+0EC2 0E9C 0041;
+0EC4 0E9C 0041;
+0EC0 0E9D 0041;
+0EC2 0E9D 0041;
+0EC4 0E9D 0041;
+0EC0 0E9E 0041;
+0EC2 0E9E 0041;
+0EC4 0E9E 0041;
+0EC0 0E9F 0041;
+0EC2 0E9F 0041;
+0EC4 0E9F 0041;
+0EC0 0EA1 0041;
+0EC2 0EA1 0041;
+0EC4 0EA1 0041;
+0EC0 0EA2 0041;
+0EC2 0EA2 0041;
+0EC4 0EA2 0041;
+0EC0 0EA3 0041;
+0EC2 0EA3 0041;
+0EC4 0EA3 0041;
+0EC0 0EA5 0041;
+0EC2 0EA5 0041;
+0EC4 0EA5 0041;
+0EC0 0EA7 0041;
+0EC2 0EA7 0041;
+0EC4 0EA7 0041;
+0EC0 0EAA 0041;
+0EC2 0EAA 0041;
+0EC4 0EAA 0041;
+0EDC 0041;
+0EC1 0EDC 0041;
+0EC3 0EDC 0041;
+0EDD 0041;
+0EC1 0EDD 0041;
+0EC3 0EDD 0041;
+0EC0 0EAB 0041;
+0EC2 0EAB 0041;
+0EC4 0EAB 0041;
+0EC0 0EAD 0041;
+0EC2 0EAD 0041;
+0EC4 0EAD 0041;
+0EC0 0EAE 0041;
+0EC2 0EAE 0041;
+0EC4 0EAE 0041;
+0EB0 0041;
+0EB2 0041;
+0ECD 0EB2 0061;
+0EB5 0021;
+0EB7 0021;
+0EB8 0041;
+0EBB 003F;
+0EBD 003F;
+0EC0 0591 0E81 0061;
+0EC0 1D165 0E87 0061;
+0EC0 0001 0E94 0061;
+0EC0 0591 0E97 0061;
+0EC0 1D165 0E9B 0061;
+0EC0 0001 0E9F 0061;
+0EC0 0591 0EA3 0061;
+0EC0 1D165 0EAA 0061;
+0EC0 0001 0EAD 0061;
+0EC1 0062;
+0EC1 0001 0E87 0061;
+0EC1 0591 0E8D 0061;
+0EC1 1D165 0E96 0061;
+0EC1 0001 0E9B 0061;
+0EC1 0591 0E9E 0061;
+0EC1 1D165 0EA2 0061;
+0EC1 0001 0EAA 0061;
+0EC1 0591 0EDD 0061;
+0EC2 0061;
+0EC2 0591 0E84 0061;
+0EC2 1D165 0E8A 0061;
+0EC2 0001 0E96 0061;
+0EC2 0591 0E9A 0061;
+0EC2 1D165 0E9D 0061;
+0EC2 0001 0EA2 0061;
+0EC2 0591 0EA7 0061;
+0EC2 1D165 0EDC 0061;
+0EC3 0021;
+0EC3 1D165 0E82 0061;
+0EC3 0001 0E8A 0061;
+0EC3 0591 0E95 0061;
+0EC3 1D165 0E99 0061;
+0EC3 0001 0E9D 0061;
+0EC3 0591 0EA1 0061;
+0EC3 1D165 0EA5 0061;
+0EC3 0001 0EDC 0061;
+0EC3 0591 0EAE 0061;
+0EC4 0001 0E82 0061;
+0EC4 0591 0E88 0061;
+0EC4 1D165 0E94 0061;
+0EC4 0001 0E99 0061;
+0EC4 0591 0E9C 0061;
+0EC4 1D165 0E9F 0061;
+0EC4 0001 0EA5 0061;
+0EC4 0591 0EAB 0061;
+0EC4 1D165 0EAD 0061;
+0F69 003F;
+0FB9 003F;
+0F41 003F;
+0F42 003F;
+0F92 003F;
+0F44 003F;
+0F45 003F;
+0F46 003F;
+0F47 003F;
+0F49 003F;
+0F4A 003F;
+0F4B 003F;
+0F4C 003F;
+0F9C 003F;
+0F4E 003F;
+0F4F 003F;
+0F50 003F;
+0F51 003F;
+0FA1 003F;
+0F53 003F;
+0F54 003F;
+0F55 003F;
+0F56 003F;
+0FA6 003F;
+0F58 003F;
+0F59 003F;
+0F5A 003F;
+0F5B 003F;
+0FAB 003F;
+0F5D 003F;
+0FBA 0061;
+0FAE 003F;
+0FAF 003F;
+0FB0 003F;
+0FB1 003F;
+0F62 003F;
+0FB2 003F;
+0FB2 0F71 003F;
+0FB2 0001 0F81 0061;
+0F63 0062;
+0FB3 0F71 0061;
+0F64 0061;
+0F65 0061;
+0F66 0061;
+0F67 0061;
+0F68 0061;
+0FB8 0061;
+0F89 0061;
+0F8B 0061;
+0F71 0001 0F72 0061;
+0F71 0F72 0021;
+0F71 1D165 0F72 0061;
+0F80 0061;
+0F71 0F80 0334;
+0F74 003F;
+0334 0F74 0F71;
+0F71 0F74 0062;
+0FB2 0591 0F80 0061;
+0F77 003F;
+0FB2 1D165 0F71 0F80 0061;
+0F78 003F;
+0FB3 0F80 0041;
+0FB3 0591 0F71 0F80 0061;
+0FB3 0F81 0041;
+0F7A 0062;
+0334 0F7C;
+0F7D 0041;
+1C00 003F;
+1C02 003F;
+1C04 003F;
+1C06 003F;
+1C08 003F;
+1C4D 003F;
+1C4F 003F;
+1C0B 003F;
+1C0D 003F;
+1C0F 003F;
+1C11 003F;
+1C13 003F;
+1C15 003F;
+1C17 003F;
+1C19 003F;
+1C24 003F;
+1C25 003F;
+1C1D 003F;
+1C1F 003F;
+1C21 003F;
+1C23 003F;
+1C26 003F;
+1C28 003F;
+1C2A 003F;
+1C2C 003F;
+1C2E 003F;
+1C30 003F;
+1C32 003F;
+1C34 003F;
+A840 003F;
+A842 003F;
+A844 003F;
+A846 003F;
+A869 003F;
+A86B 003F;
+A848 003F;
+A84A 003F;
+A84C 003F;
+A84E 003F;
+A850 003F;
+A852 003F;
+A867 003F;
+A855 003F;
+A857 003F;
+A86D 003F;
+A871 003F;
+A859 003F;
+A86E 003F;
+A85C 003F;
+A870 003F;
+A862 003F;
+A864 003F;
+A85E 003F;
+A860 003F;
+A866 003F;
+1900 003F;
+1902 003F;
+1904 003F;
+1906 003F;
+1908 003F;
+190A 003F;
+190C 003F;
+190E 003F;
+1910 003F;
+1912 003F;
+1914 003F;
+1916 003F;
+1918 003F;
+191A 003F;
+191C 003F;
+1921 003F;
+1923 003F;
+1925 003F;
+1927 003F;
+1929 003F;
+192B 003F;
+1931 003F;
+1933 003F;
+1935 003F;
+1937 003F;
+1700 003F;
+1702 003F;
+1704 003F;
+1706 003F;
+1708 003F;
+170A 003F;
+170C 003F;
+170F 003F;
+1711 003F;
+1713 003F;
+1714 0062;
+1721 0062;
+1723 0062;
+1725 0062;
+1727 0062;
+1729 0062;
+172B 0062;
+172D 0062;
+172F 0062;
+1731 0062;
+1733 0062;
+1740 0061;
+1742 0061;
+1744 0061;
+1746 0061;
+1748 0061;
+174A 0061;
+174C 0061;
+174E 0061;
+1750 0061;
+1752 0061;
+1760 0061;
+1762 0061;
+1764 0061;
+1766 0061;
+1768 0061;
+176A 0061;
+176C 0061;
+176F 0061;
+1772 0061;
+1A00 0061;
+1A02 0061;
+1A04 0061;
+1A06 0061;
+1A08 0061;
+1A0A 0061;
+1A0C 0061;
+1A0E 0061;
+1A10 0061;
+1A12 0061;
+1A14 0061;
+1A16 0061;
+1A18 0021;
+1A19 0041;
+1A1B 0041;
+A931 0041;
+A933 0041;
+A935 0041;
+A937 0041;
+A939 0041;
+A93B 0041;
+A93D 0041;
+A93F 0041;
+A941 0041;
+A943 0041;
+A945 0041;
+A947 0041;
+A949 0041;
+A94B 0041;
+A94D 0041;
+A94F 0041;
+A951 0041;
+A953 0061;
+A90B 0061;
+A90D 0061;
+A90F 0061;
+A911 0061;
+A913 0061;
+A915 0061;
+A917 0061;
+A919 0061;
+A91B 0061;
+A91D 0061;
+A91F 0061;
+A921 0061;
+A923 0061;
+A925 0061;
+A927 0061;
+A929 0061;
+1000 0061;
+1001 0061;
+1002 0061;
+1003 0061;
+105A 0061;
+1078 0061;
+1007 0061;
+1008 0061;
+1061 0061;
+107A 0061;
+100B 0061;
+100D 0061;
+100F 0061;
+1010 0061;
+1012 0061;
+1013 0061;
+107C 0061;
+1015 0061;
+107D 0061;
+108E 0061;
+107F 0061;
+1019 0061;
+101A 0061;
+101B 0061;
+101C 0061;
+101D 0061;
+1082 0061;
+1050 0061;
+1065 0061;
+103F 0061;
+1081 0061;
+1020 0061;
+105D 0061;
+1070 0061;
+1021 0061;
+1023 0061;
+1025 0061;
+1025 102E 0061;
+1052 0062;
+1054 0062;
+1027 0062;
+1029 0062;
+102C 0061;
+1083 0062;
+102D 0062;
+102E 0062;
+102F 0062;
+1074 0062;
+1056 0062;
+1058 0062;
+1031 0062;
+1035 0062;
+1032 0062;
+1062 0062;
+1068 0062;
+1039 0061;
+1063 003F;
+1069 003F;
+106B 003F;
+106D 003F;
+108B 003F;
+108C 003F;
+108A 003F;
+1780 003F;
+1782 003F;
+1784 003F;
+1786 003F;
+1788 003F;
+178A 003F;
+178C 003F;
+178E 003F;
+1790 003F;
+1792 003F;
+1794 003F;
+1796 003F;
+1798 003F;
+179A 003F;
+179C 003F;
+179E 003F;
+17A0 003F;
+17A2 003F;
+17A3 003F;
+17A5 003F;
+17A7 003F;
+17A9 003F;
+17AB 003F;
+17AD 003F;
+17AF 003F;
+17B1 003F;
+17B3 003F;
+17B5 003F;
+17B7 003F;
+17B9 003F;
+17BB 003F;
+17BD 003F;
+17BF 003F;
+17C1 003F;
+17C3 003F;
+17C5 003F;
+17D2 0062;
+1951 0062;
+1953 0062;
+1955 0062;
+1957 0062;
+1959 0062;
+195B 0062;
+195D 0062;
+195F 0062;
+1961 0062;
+1963 0062;
+1965 0062;
+1967 0062;
+1969 0062;
+196B 0062;
+196D 0062;
+1971 0062;
+1973 0062;
+1980 0062;
+1982 0062;
+1984 0062;
+1986 0062;
+1988 0062;
+198A 0062;
+198C 0062;
+198E 0062;
+1990 0062;
+1992 0062;
+1994 0062;
+1996 0062;
+1998 0062;
+199A 0062;
+199C 0062;
+19DF 0062;
+199E 0062;
+19A0 0062;
+19A2 0062;
+19A4 0062;
+19A6 0062;
+19A8 0062;
+19B0 0062;
+19B2 0062;
+19B4 0062;
+19B6 0062;
+19B8 0062;
+19BA 0062;
+19BC 0062;
+19BE 0062;
+19C0 0062;
+19C2 0062;
+19C4 0062;
+19C6 0062;
+19C8 0062;
+AA00 0062;
+AA02 0062;
+AA04 0062;
+AA06 0062;
+AA08 0062;
+AA0A 0062;
+AA0C 0062;
+AA0E 0062;
+AA10 0062;
+AA12 0062;
+AA14 0062;
+AA16 0062;
+AA18 0062;
+AA1A 0062;
+AA1C 0062;
+AA1E 0062;
+AA20 0062;
+AA22 0062;
+AA24 0062;
+AA26 0062;
+AA28 0062;
+AA34 0062;
+AA36 0062;
+AA2A 0062;
+AA2C 0062;
+AA2E 0062;
+AA30 0062;
+AA32 0062;
+AA41 0062;
+AA43 0062;
+AA45 0062;
+AA47 0062;
+AA49 0062;
+AA4B 0062;
+AA4D 0062;
+1B06 0021;
+1B07 003F;
+1B08 003F;
+1B09 0041;
+1B0A 0061;
+1B0B 0001 1B35 0061;
+1B0C 0041;
+1B0D 1D165 1B35 0061;
+1B0E 0062;
+1B10 0062;
+1B12 0021;
+1B13 003F;
+1B46 003F;
+1B15 003F;
+1B17 003F;
+1B19 003F;
+1B1B 003F;
+1B1D 003F;
+1B1F 003F;
+1B21 003F;
+1B47 003F;
+1B24 003F;
+1B26 003F;
+1B48 003F;
+1B29 003F;
+1B2B 003F;
+1B2D 003F;
+1B2F 003F;
+1B30 003F;
+1B32 003F;
+1B4B 003F;
+1B35 003F;
+1B37 003F;
+1B39 003F;
+1B3A 0591 1B35 0061;
+1B3A 1B35 0062;
+1B3C 1B35 0021;
+1B3E 0021;
+1B3F 0061;
+1B3E 1B35 0061;
+1B3F 1B35 0061;
+1B42 0062;
+1B42 1B35 0041;
+1B44 0062;
+1881 0062;
+1883 0062;
+1885 0062;
+1843 0062;
+1887 0062;
+1844 0062;
+1822 0062;
+185E 0062;
+1888 0062;
+1823 0062;
+1824 0062;
+1861 0062;
+1848 0062;
+1849 0062;
+1827 0062;
+1829 0062;
+1862 0062;
+189B 0062;
+184B 0062;
+184C 0062;
+182C 0062;
+182D 0062;
+1864 0062;
+1865 0062;
+184F 0062;
+1830 0062;
+1867 0062;
+189D 0062;
+18A4 0062;
+1832 0062;
+1868 0062;
+1851 0062;
+1834 0062;
+1871 0062;
+188B 0062;
+1853 0062;
+1877 0062;
+1855 0062;
+1837 0062;
+1838 0062;
+1839 0062;
+1876 0062;
+1857 0062;
+1874 0062;
+183B 0062;
+1854 0062;
+183D 0062;
+1858 0062;
+183E 0062;
+186D 0062;
+1840 0062;
+1842 0062;
+185B 0062;
+188C 0062;
+188D 0062;
+189F 0062;
+1890 0062;
+18A0 0062;
+18A1 0062;
+1893 0062;
+1894 0062;
+1895 0062;
+1896 0062;
+18A6 0062;
+18AA 0062;
+1C5A 0061;
+1C5C 0061;
+1C5E 0061;
+1C60 0061;
+1C62 0061;
+1C64 0061;
+1C66 0061;
+1C68 0061;
+1C6A 0061;
+1C6C 0061;
+1C6E 0061;
+1C70 0061;
+1C72 0061;
+1C74 0061;
+1C76 0061;
+1C78 0061;
+1C7A 0061;
+1C7C 0061;
+13A0 0061;
+13A2 0061;
+13A4 0061;
+13A6 0061;
+13A8 0061;
+13AA 0061;
+13AC 0061;
+13AE 0061;
+13B0 0061;
+13B2 0061;
+13B4 0061;
+13B6 0061;
+13B8 0061;
+13BA 0061;
+13BC 0061;
+13BE 0061;
+13C0 0061;
+13C2 0061;
+13C4 0061;
+13C6 0061;
+13C8 0061;
+13CA 0061;
+13CC 0061;
+13CE 0061;
+13D0 0061;
+13D2 0061;
+13D4 0061;
+13D6 0061;
+13D8 0061;
+13DA 0061;
+13DC 0061;
+13DE 0061;
+13E0 0061;
+13E2 0061;
+13E4 0061;
+13E6 0061;
+13E8 0061;
+13EA 0061;
+13EC 0061;
+13EE 0061;
+13F0 0061;
+13F2 0061;
+13F4 0061;
+1402 0061;
+1404 0061;
+1406 0061;
+1408 0061;
+140A 0061;
+140C 0061;
+140E 0061;
+1410 0061;
+1412 0061;
+1414 0061;
+1416 0061;
+1418 0061;
+141A 0061;
+141C 0061;
+141E 0061;
+1420 0061;
+1422 0061;
+1424 0061;
+1426 0061;
+1428 0061;
+142A 0061;
+142C 0061;
+142E 0061;
+1430 0061;
+1432 0061;
+1434 0061;
+1436 0061;
+1438 0061;
+143A 0061;
+143C 0061;
+143E 0061;
+1440 0061;
+1442 0061;
+1444 0061;
+1446 0061;
+1448 0061;
+144A 0061;
+144C 0061;
+144E 0061;
+1450 0061;
+1452 0061;
+1454 0061;
+1456 0061;
+1458 0061;
+145A 0061;
+145C 0061;
+145E 0061;
+1460 0061;
+1462 0061;
+1464 0061;
+1466 0061;
+1468 0061;
+146A 0061;
+146C 0061;
+146E 0061;
+1470 0061;
+1472 0061;
+1474 0061;
+1476 0061;
+1478 0061;
+147A 0061;
+147C 0061;
+147E 0061;
+1480 0061;
+1482 0061;
+1484 0061;
+1486 0061;
+1488 0061;
+148A 0061;
+148C 0061;
+148E 0061;
+1490 0061;
+1492 0061;
+1494 0061;
+1496 0061;
+1498 0061;
+149A 0061;
+149C 0061;
+149E 0061;
+14A0 0061;
+14A2 0061;
+14A4 0061;
+14A6 0061;
+14A8 0061;
+14AA 0061;
+14AC 0061;
+14AE 0061;
+14B0 0061;
+14B2 0061;
+14B4 0061;
+14B6 0061;
+14B8 0061;
+14BA 0061;
+14BC 0061;
+14BE 0061;
+14C0 0061;
+14C2 0061;
+14C4 0061;
+14C6 0061;
+14C8 0061;
+14CA 0061;
+14CC 0061;
+14CE 0061;
+14D0 0061;
+14D2 0061;
+14D4 0061;
+14D6 0061;
+14D8 0061;
+14DA 0061;
+14DC 0061;
+14DE 0061;
+14E0 0061;
+14E2 0061;
+14E4 0061;
+14E6 0061;
+14E8 0061;
+14EA 0061;
+14EC 0061;
+14EE 0061;
+14F0 0061;
+14F2 0061;
+14F4 0061;
+14F6 0061;
+14F8 0061;
+14FA 0061;
+14FC 0061;
+14FE 0061;
+1500 0061;
+1502 0061;
+1504 0061;
+1506 0061;
+1508 0061;
+150A 0061;
+150C 0061;
+150E 0061;
+1510 0061;
+1512 0061;
+1514 0061;
+1516 0061;
+1518 0061;
+151A 0061;
+151C 0061;
+151E 0061;
+1520 0061;
+1522 0061;
+1524 0061;
+1526 0061;
+1528 0061;
+152A 0061;
+152C 0061;
+152E 0061;
+1530 0061;
+1532 0061;
+1534 0061;
+1536 0061;
+1538 0061;
+153A 0061;
+153C 0061;
+153E 0061;
+1540 0061;
+1542 0061;
+1544 0061;
+1546 0061;
+1548 0061;
+154A 0061;
+154C 0061;
+154E 0061;
+1550 0061;
+1552 0061;
+1554 0061;
+1556 0061;
+1558 0061;
+155A 0061;
+155C 0061;
+155E 0061;
+1560 0061;
+1562 0061;
+1564 0061;
+1566 0061;
+1568 0061;
+156A 0061;
+156C 0061;
+156E 0061;
+1570 0061;
+1572 0061;
+1574 0061;
+1576 0061;
+1578 0061;
+157A 0061;
+157D 0061;
+157E 0061;
+1580 0061;
+1582 0061;
+1584 0061;
+1586 0061;
+1588 0061;
+158A 0061;
+158C 0061;
+1670 0061;
+158F 0061;
+1591 0061;
+1593 0061;
+1595 0061;
+1672 0061;
+1674 0061;
+1676 0061;
+1597 0061;
+1599 0061;
+159B 0061;
+159D 0061;
+159F 0061;
+15A1 0061;
+15A3 0061;
+15A5 0061;
+157C 0061;
+15A8 0061;
+15AA 0061;
+15AC 0061;
+15AE 0061;
+15B0 0061;
+15B2 0061;
+15B4 0061;
+15B6 0061;
+15B8 0061;
+15BA 0061;
+15BC 0061;
+15BE 0061;
+15C0 0061;
+15C2 0061;
+15C4 0061;
+15C6 0061;
+15C8 0061;
+15CA 0061;
+15CC 0061;
+15CE 0061;
+15D0 0061;
+15D2 0061;
+15D4 0061;
+15D6 0061;
+15D8 0061;
+15DA 0061;
+15DC 0061;
+15DE 0061;
+15E0 0061;
+15E2 0061;
+15E4 0061;
+15E6 0061;
+15E8 0061;
+15EA 0061;
+15EC 0061;
+15EE 0061;
+15F0 0061;
+15F2 0061;
+15F4 0061;
+15F6 0061;
+15F8 0061;
+15FA 0061;
+15FC 0061;
+15FE 0061;
+1600 0061;
+1602 0061;
+1604 0061;
+1606 0061;
+1608 0061;
+160A 0061;
+160C 0061;
+160E 0061;
+1610 0061;
+1612 0061;
+1614 0061;
+1616 0061;
+1618 0061;
+161A 0061;
+161C 0061;
+161E 0061;
+1620 0061;
+1622 0061;
+1624 0061;
+1626 0061;
+1628 0061;
+162A 0061;
+162C 0061;
+162E 0061;
+1630 0061;
+1632 0061;
+1634 0061;
+1636 0061;
+1638 0061;
+163A 0061;
+163C 0061;
+163E 0061;
+1640 0061;
+1642 0061;
+1644 0061;
+1646 0061;
+1648 0061;
+164A 0061;
+164C 0061;
+164E 0061;
+1650 0061;
+1652 0061;
+1654 0061;
+1656 0061;
+1658 0061;
+165A 0061;
+165C 0061;
+165E 0061;
+1660 0061;
+1662 0061;
+1664 0061;
+1666 0061;
+1668 0061;
+166A 0061;
+166C 0061;
+1682 0061;
+1684 0061;
+1686 0061;
+1688 0061;
+168A 0061;
+168C 0061;
+168E 0061;
+1690 0061;
+1692 0061;
+1694 0061;
+1696 0061;
+1698 0061;
+169A 0061;
+16A1 0041;
+16A2 0041;
+16A7 0021;
+16F0 0061;
+16AD 003F;
+16AD 0041;
+16AF 0061;
+16B1 0061;
+16B5 003F;
+16B5 0041;
+16B7 0061;
+16E9 0041;
+16BD 003F;
+16BB 0062;
+16BE 0041;
+16C2 0021;
+16C4 0021;
+16C6 0021;
+16EE 0061;
+16D5 0021;
+16C9 0061;
+16CC 003F;
+16EA 0041;
+16CC 0062;
+16CF 0041;
+16D3 0021;
+16D2 0062;
+16D8 0021;
+16D7 0062;
+16DB 0021;
+16DD 0021;
+16DE 0061;
+16AA 0061;
+16A3 0061;
+16E3 0061;
+16E4 0061;
+16E2 0061;
+16E7 0021;
+16E6 0062;
+A501 0061;
+A503 0061;
+A505 0061;
+A507 0061;
+A509 0061;
+A50B 0061;
+A613 0061;
+A50E 0061;
+A510 0061;
+A512 0061;
+A514 0061;
+A516 0061;
+A518 0061;
+A51A 0061;
+A51C 0061;
+A51E 0061;
+A51F 0061;
+A521 0061;
+A523 0061;
+A525 0061;
+A527 0061;
+A529 0061;
+A52B 0061;
+A52D 0061;
+A52F 0061;
+A531 0061;
+A533 0061;
+A534 0061;
+A536 0061;
+A538 0061;
+A53A 0061;
+A53C 0061;
+A53E 0061;
+A540 0061;
+A542 0061;
+A544 0061;
+A546 0061;
+A616 0061;
+A549 0061;
+A54B 0061;
+A54D 0061;
+A54F 0061;
+A551 0061;
+A617 0061;
+A554 0061;
+A556 0061;
+A610 0021;
+A618 0061;
+A55A 0061;
+A55B 0061;
+A55D 0061;
+A55F 0061;
+A61A 0061;
+A562 0061;
+A564 0061;
+A566 0061;
+A568 0061;
+A611 0021;
+A56B 0061;
+A56D 0061;
+A62A 0041;
+A570 0061;
+A572 0061;
+A574 0061;
+A576 0061;
+A578 0061;
+A57A 0061;
+A57C 0061;
+A57E 0061;
+A580 0061;
+A582 0061;
+A584 0061;
+A61B 0061;
+A612 0021;
+A588 0061;
+A58A 0061;
+A58C 0061;
+A58E 0061;
+A590 0061;
+A592 0061;
+A594 0061;
+A596 0061;
+A598 0061;
+A59A 0061;
+A59C 0061;
+A59E 0061;
+A5A0 0061;
+A5A2 0061;
+A5A4 0061;
+A5A6 0061;
+A5A8 0061;
+A5AA 0061;
+A5AC 0061;
+A5AE 0061;
+A5B0 0061;
+A5B2 0061;
+A5B4 0061;
+A5B5 0061;
+A5B7 0061;
+A5B9 0061;
+A5BB 0061;
+A5BD 0061;
+A5BF 0061;
+A5C1 0061;
+A5C3 0061;
+A5C5 0061;
+A5C7 0061;
+A5C9 0061;
+A5CB 0061;
+A5CC 0061;
+A5CE 0061;
+A5D0 0061;
+A62B 0041;
+A5D2 0061;
+A5D4 0061;
+A5D6 0061;
+A5D8 0061;
+A5D9 0061;
+A5DB 0061;
+A5DD 0061;
+A5DF 0061;
+A5E1 0061;
+A5E3 0061;
+A5E5 0061;
+A5E7 0061;
+A5E9 0061;
+A5EB 0061;
+A5ED 0061;
+A5EF 0061;
+A5F1 0061;
+A5F3 0061;
+A5F5 0061;
+A5F7 0061;
+A5F9 0061;
+A5FB 0061;
+A5FD 0061;
+A5FF 0061;
+A601 0061;
+A603 0061;
+A605 0061;
+A607 0061;
+A609 0061;
+A60B 0061;
+3200 0021;
+3200 0061;
+3131 0062;
+326E 003F;
+326E 0061;
+AC00 1161 0061;
+AC00 1175 0041;
+AC02 0041;
+AC04 0041;
+1100 0591 1175 0061;
+FFA2 003F;
+1102 0021;
+1102 0061;
+1102 0062;
+320F 0041;
+3137 003F;
+3137 0041;
+3210 0021;
+1104 0021;
+FFA8 0061;
+3139 003F;
+3139 0041;
+3211 0021;
+1106 0021;
+1106 0061;
+1106 0062;
+3212 0041;
+3142 003F;
+3142 0041;
+3213 0021;
+1108 0021;
+FFB3 0061;
+3145 003F;
+3145 0041;
+3214 0021;
+110A 0021;
+FFB6 0061;
+3147 003F;
+3147 0041;
+3215 0021;
+321D 0021;
+327E 0021;
+3148 003F;
+3148 0041;
+3216 0021;
+321C 0021;
+110D 0021;
+FFB9 0061;
+314A 003F;
+314A 0041;
+3217 0021;
+327C 0021;
+314B 003F;
+314B 0041;
+3218 0021;
+1110 0021;
+1110 0061;
+1110 0062;
+3219 0041;
+314D 003F;
+314D 0041;
+321A 0021;
+1112 0021;
+1112 0061;
+1112 0062;
+327B 003F;
+1112 1161 0062;
+1112 1175 0062;
+D788 1175 003F;
+D79E 0041;
+D7A0 0041;
+D7A2 0041;
+1113 0041;
+1114 0062;
+1115 0062;
+1117 0041;
+1119 0041;
+3140 0061;
+111B 0041;
+111C 0062;
+111D 0062;
+111E 0062;
+3173 003F;
+3144 003F;
+3144 0062;
+1122 0062;
+1123 0062;
+1125 0041;
+3176 003F;
+1128 0041;
+1129 0062;
+3178 003F;
+3179 003F;
+317A 003F;
+317B 003F;
+317C 003F;
+1130 0041;
+317D 003F;
+1133 0041;
+1135 0041;
+1136 0062;
+1138 0041;
+113A 0041;
+113C 0041;
+113E 0041;
+317F 003F;
+1141 0041;
+1143 0041;
+1145 0041;
+3180 003F;
+1148 0041;
+114A 0041;
+3181 003F;
+114D 0041;
+114F 0041;
+1151 0041;
+1153 0041;
+1155 0041;
+3184 003F;
+3185 003F;
+3186 003F;
+115F 0041;
+3164 0061;
+314F 003F;
+314F 0062;
+3150 0061;
+3151 003F;
+3151 0062;
+3152 0061;
+3153 003F;
+3153 0062;
+3154 0061;
+3155 003F;
+3155 0062;
+3156 0061;
+3157 003F;
+3157 0062;
+3158 0061;
+3159 003F;
+3159 0062;
+315A 0061;
+315B 003F;
+315B 0062;
+315C 0061;
+315D 003F;
+315D 0062;
+315E 0061;
+315F 003F;
+315F 0062;
+3160 0061;
+3161 003F;
+3161 0062;
+3162 0061;
+3163 003F;
+3163 0062;
+1177 0041;
+1179 0041;
+117B 0041;
+117D 0041;
+117F 0041;
+1181 0041;
+1183 0041;
+1184 0062;
+1185 0062;
+1187 0041;
+1188 0062;
+118A 0041;
+118C 0041;
+118E 0041;
+1190 0041;
+1191 0062;
+1192 0062;
+318C 003F;
+1195 0041;
+1197 0041;
+1199 0041;
+119B 0041;
+119D 0041;
+119E 0062;
+11A0 0041;
+11A1 0062;
+11A8 0041;
+3133 003F;
+3133 0062;
+3135 003F;
+3135 0062;
+3136 0061;
+11AE 0041;
+313A 003F;
+313A 0062;
+313B 0061;
+313C 003F;
+313C 0062;
+313D 0061;
+313E 003F;
+313E 0062;
+313F 0061;
+11B6 0041;
+11B8 0041;
+11BA 0041;
+11BC 0041;
+11BE 0041;
+11C0 0041;
+11C2 0041;
+11C4 0041;
+11C6 0041;
+11C7 0062;
+11C8 0062;
+11CA 0041;
+3169 003F;
+11CD 0041;
+11CE 0062;
+11D0 0041;
+11D2 0041;
+11D3 0062;
+11D5 0041;
+316C 003F;
+11D8 0041;
+11D9 0062;
+11DB 0041;
+316F 003F;
+11DE 0041;
+11DF 0062;
+11E1 0041;
+11E3 0041;
+11E5 0041;
+11E7 0041;
+11E9 0041;
+11EB 0041;
+11ED 0041;
+11EF 0041;
+3182 003F;
+3183 003F;
+11F3 0041;
+11F5 0041;
+11F7 0041;
+11F9 0041;
+30A2 0021;
+3303 0062;
+30A2 0041;
+FF71 0062;
+3301 0041;
+3044 003F;
+32D1 003F;
+30A4 0041;
+FF72 0062;
+3305 0041;
+30A6 0021;
+30A6 3099 0334;
+30A5 0061;
+3094 0061;
+32D2 0062;
+3048 0021;
+32D3 0021;
+3048 0041;
+32D3 0041;
+3307 0061;
+FF6B 003F;
+330A 0041;
+30AA 0061;
+30AA 0062;
+304B 0021;
+304B 0334 3099;
+3095 0061;
+32D5 0061;
+FF76 0062;
+330C 003F;
+330E 003F;
+304D 003F;
+30AD 0334 3099;
+30AD 0041;
+30AD 0062;
+3311 0021;
+3313 0021;
+3315 0021;
+3317 0021;
+30AF 003F;
+30B0 0334;
+30AF 0041;
+31F0 0062;
+3318 0062;
+331A 0062;
+30F6 0021;
+3052 0334;
+331C 0061;
+30B1 0041;
+3051 0062;
+30B3 003F;
+30B4 0334;
+3053 0061;
+30B4 0061;
+30FF 0061;
+30B5 0021;
+30B5 3099 0334;
+FF7B 0061;
+FF7B 0062;
+3320 003F;
+FF7C 0021;
+3058 0021;
+FF7C 0061;
+30B7 0062;
+3321 0021;
+30B9 003F;
+30BA 0334;
+30B9 0041;
+31F2 0062;
+FF7E 0021;
+305C 0021;
+32DD 0061;
+305C 0062;
+3323 0041;
+305D 0334 3099;
+305D 0061;
+30BE 0061;
+30BF 0021;
+30BF 3099 0334;
+3324 0062;
+3060 0041;
+3061 003F;
+30C1 0334 3099;
+30C1 0041;
+30C1 0062;
+30C3 003F;
+3064 3099 0334;
+3063 0041;
+FF82 0041;
+FF6F 0062;
+FF83 0021;
+3067 0021;
+32E2 0061;
+3067 0062;
+31F3 003F;
+30C8 0334 3099;
+31F3 0041;
+30C9 0041;
+3326 0061;
+30CA 0021;
+FF85 0061;
+3328 0061;
+32E5 003F;
+30CB 0062;
+FF87 003F;
+FF87 0041;
+30CD 0021;
+FF88 0061;
+30CE 0021;
+FF89 0061;
+3329 0061;
+FF8A 003F;
+306F 309A 0334;
+3071 003F;
+332C 0061;
+31F5 0061;
+30D0 0061;
+32E9 0062;
+3072 0021;
+3072 0334 3099;
+30D2 309A 0334;
+3072 0061;
+3073 0061;
+30D2 0062;
+332E 0041;
+3330 0041;
+31F7 003F;
+30D5 0334 3099;
+3076 003F;
+31F7 0041;
+30D6 0041;
+3076 0062;
+3333 003F;
+3335 003F;
+FF8D 0021;
+3078 0334 309A;
+307A 0021;
+333C 003F;
+FF8D 0061;
+30DA 0061;
+30DA 0062;
+3337 0062;
+3339 0062;
+30DB 0021;
+30DB 3099 0334;
+30DC 0021;
+3341 0062;
+30DB 0061;
+307D 0061;
+30DC 0062;
+333E 0061;
+3340 0061;
+32EE 003F;
+30DE 0062;
+3344 0061;
+3345 0061;
+3347 0061;
+32EF 003F;
+30DF 0062;
+3349 0061;
+31FA 0021;
+31FA 0061;
+30E0 0062;
+32F1 003F;
+FF92 0061;
+334B 0061;
+30E2 0021;
+FF93 0061;
+3084 0021;
+32F3 0021;
+334F 0041;
+30E4 0061;
+30E4 0062;
+FF6D 003F;
+3086 0041;
+32F4 0041;
+3350 0061;
+FF6E 003F;
+3088 0041;
+32F5 0041;
+309F 0061;
+FF97 003F;
+FF97 0041;
+31FC 0021;
+31FC 0061;
+30EA 0062;
+3352 0061;
+FF99 003F;
+31FD 0061;
+30EB 0062;
+31FE 0021;
+31FE 0061;
+30EC 0062;
+3356 0061;
+FF9B 003F;
+FF9B 0041;
+308F 0021;
+30EF 0334 3099;
+30EE 0041;
+308F 0062;
+3357 0062;
+30F8 0021;
+3090 0062;
+30F1 0334 3099;
+32FD 0041;
+30F2 003F;
+3092 0061;
+3092 0062;
+FF9D 003F;
+3105 0021;
+3106 0021;
+3107 0021;
+312A 0021;
+310A 0021;
+310B 0021;
+310D 0021;
+310E 0021;
+312B 0021;
+310F 0021;
+3110 0021;
+3111 0021;
+312C 0021;
+3114 0021;
+3116 0021;
+3117 0041;
+3119 0021;
+311A 0041;
+311B 0041;
+311C 0021;
+31A4 0021;
+311E 0021;
+311F 0021;
+3120 0041;
+3122 0021;
+3124 0021;
+3125 0021;
+31B1 0021;
+3126 0021;
+31B3 003F;
+3128 0021;
+31A8 0061;
+312D 0021;
+A001 0021;
+A003 0021;
+A005 0021;
+A007 0021;
+A009 0021;
+A00B 0021;
+A00D 0021;
+A00F 0021;
+A011 0021;
+A013 0021;
+A015 0021;
+A017 0021;
+A019 0021;
+A01B 0021;
+A01D 0021;
+A01F 0021;
+A021 0021;
+A023 0021;
+A025 0021;
+A027 0021;
+A029 0021;
+A02B 0021;
+A02D 0021;
+A02F 0021;
+A031 0021;
+A033 0021;
+A035 0021;
+A037 0021;
+A039 0021;
+A03B 0021;
+A03D 0021;
+A03F 0021;
+A041 0021;
+A043 0021;
+A045 0021;
+A047 0021;
+A049 0021;
+A04B 0021;
+A04D 0021;
+A04F 0021;
+A051 0021;
+A053 0021;
+A055 0021;
+A057 0021;
+A059 0021;
+A05B 0021;
+A05D 0021;
+A05F 0021;
+A061 0021;
+A063 0021;
+A065 0021;
+A067 0021;
+A069 0021;
+A06B 0021;
+A06D 0021;
+A06F 0021;
+A071 0021;
+A073 0021;
+A075 0021;
+A077 0021;
+A079 0021;
+A07B 0021;
+A07D 0021;
+A07F 0021;
+A081 0021;
+A083 0021;
+A085 0021;
+A087 0021;
+A089 0021;
+A08B 0021;
+A08D 0021;
+A08F 0021;
+A091 0021;
+A093 0021;
+A095 0021;
+A097 0021;
+A099 0021;
+A09B 0021;
+A09D 0021;
+A09F 0021;
+A0A1 0021;
+A0A3 0021;
+A0A5 0021;
+A0A7 0021;
+A0A9 0021;
+A0AB 0021;
+A0AD 0021;
+A0AF 0021;
+A0B1 0021;
+A0B3 0021;
+A0B5 0021;
+A0B7 0021;
+A0B9 0021;
+A0BB 0021;
+A0BD 0021;
+A0BF 0021;
+A0C1 0021;
+A0C3 0021;
+A0C5 0021;
+A0C7 0021;
+A0C9 0021;
+A0CB 0021;
+A0CD 0021;
+A0CF 0021;
+A0D1 0021;
+A0D3 0021;
+A0D5 0021;
+A0D7 0021;
+A0D9 0021;
+A0DB 0021;
+A0DD 0021;
+A0DF 0021;
+A0E1 0021;
+A0E3 0021;
+A0E5 0021;
+A0E7 0021;
+A0E9 0021;
+A0EB 0021;
+A0ED 0021;
+A0EF 0021;
+A0F1 0021;
+A0F3 0021;
+A0F5 0021;
+A0F7 0021;
+A0F9 0021;
+A0FB 0021;
+A0FD 0021;
+A0FF 0021;
+A101 0021;
+A103 0021;
+A105 0021;
+A107 0021;
+A109 0021;
+A10B 0021;
+A10D 0021;
+A10F 0021;
+A111 0021;
+A113 0021;
+A115 0021;
+A117 0021;
+A119 0021;
+A11B 0021;
+A11D 0021;
+A11F 0021;
+A121 0021;
+A123 0021;
+A125 0021;
+A127 0021;
+A129 0021;
+A12B 0021;
+A12D 0021;
+A12F 0021;
+A131 0021;
+A133 0021;
+A135 0021;
+A137 0021;
+A139 0021;
+A13B 0021;
+A13D 0021;
+A13F 0021;
+A141 0021;
+A143 0021;
+A145 0021;
+A147 0021;
+A149 0021;
+A14B 0021;
+A14D 0021;
+A14F 0021;
+A151 0021;
+A153 0021;
+A155 0021;
+A157 0021;
+A159 0021;
+A15B 0021;
+A15D 0021;
+A15F 0021;
+A161 0021;
+A163 0021;
+A165 0021;
+A167 0021;
+A169 0021;
+A16B 0021;
+A16D 0021;
+A16F 0021;
+A171 0021;
+A173 0021;
+A175 0021;
+A177 0021;
+A179 0021;
+A17B 0021;
+A17D 0021;
+A17F 0021;
+A181 0021;
+A183 0021;
+A185 0021;
+A187 0021;
+A189 0021;
+A18B 0021;
+A18D 0021;
+A18F 0021;
+A191 0021;
+A193 0021;
+A195 0021;
+A197 0021;
+A199 0021;
+A19B 0021;
+A19D 0021;
+A19F 0021;
+A1A1 0021;
+A1A3 0021;
+A1A5 0021;
+A1A7 0021;
+A1A9 0021;
+A1AB 0021;
+A1AD 0021;
+A1AF 0021;
+A1B1 0021;
+A1B3 0021;
+A1B5 0021;
+A1B7 0021;
+A1B9 0021;
+A1BB 0021;
+A1BD 0021;
+A1BF 0021;
+A1C1 0021;
+A1C3 0021;
+A1C5 0021;
+A1C7 0021;
+A1C9 0021;
+A1CB 0021;
+A1CD 0021;
+A1CF 0021;
+A1D1 0021;
+A1D3 0021;
+A1D5 0021;
+A1D7 0021;
+A1D9 0021;
+A1DB 0021;
+A1DD 0021;
+A1DF 0021;
+A1E1 0021;
+A1E3 0021;
+A1E5 0021;
+A1E7 0021;
+A1E9 0021;
+A1EB 0021;
+A1ED 0021;
+A1EF 0021;
+A1F1 0021;
+A1F3 0021;
+A1F5 0021;
+A1F7 0021;
+A1F9 0021;
+A1FB 0021;
+A1FD 0021;
+A1FF 0021;
+A201 0021;
+A203 0021;
+A205 0021;
+A207 0021;
+A209 0021;
+A20B 0021;
+A20D 0021;
+A20F 0021;
+A211 0021;
+A213 0021;
+A215 0021;
+A217 0021;
+A219 0021;
+A21B 0021;
+A21D 0021;
+A21F 0021;
+A221 0021;
+A223 0021;
+A225 0021;
+A227 0021;
+A229 0021;
+A22B 0021;
+A22D 0021;
+A22F 0021;
+A231 0021;
+A233 0021;
+A235 0021;
+A237 0021;
+A239 0021;
+A23B 0021;
+A23D 0021;
+A23F 0021;
+A241 0021;
+A243 0021;
+A245 0021;
+A247 0021;
+A249 0021;
+A24B 0021;
+A24D 0021;
+A24F 0021;
+A251 0021;
+A253 0021;
+A255 0021;
+A257 0021;
+A259 0021;
+A25B 0021;
+A25D 0021;
+A25F 0021;
+A261 0021;
+A263 0021;
+A265 0021;
+A267 0021;
+A269 0021;
+A26B 0021;
+A26D 0021;
+A26F 0021;
+A271 0021;
+A273 0021;
+A275 0021;
+A277 0021;
+A279 0021;
+A27B 0021;
+A27D 0021;
+A27F 0021;
+A281 0021;
+A283 0021;
+A285 0021;
+A287 0021;
+A289 0021;
+A28B 0021;
+A28D 0021;
+A28F 0021;
+A291 0021;
+A293 0021;
+A295 0021;
+A297 0021;
+A299 0021;
+A29B 0021;
+A29D 0021;
+A29F 0021;
+A2A1 0021;
+A2A3 0021;
+A2A5 0021;
+A2A7 0021;
+A2A9 0021;
+A2AB 0021;
+A2AD 0021;
+A2AF 0021;
+A2B1 0021;
+A2B3 0021;
+A2B5 0021;
+A2B7 0021;
+A2B9 0021;
+A2BB 0021;
+A2BD 0021;
+A2BF 0021;
+A2C1 0021;
+A2C3 0021;
+A2C5 0021;
+A2C7 0021;
+A2C9 0021;
+A2CB 0021;
+A2CD 0021;
+A2CF 0021;
+A2D1 0021;
+A2D3 0021;
+A2D5 0021;
+A2D7 0021;
+A2D9 0021;
+A2DB 0021;
+A2DD 0021;
+A2DF 0021;
+A2E1 0021;
+A2E3 0021;
+A2E5 0021;
+A2E7 0021;
+A2E9 0021;
+A2EB 0021;
+A2ED 0021;
+A2EF 0021;
+A2F1 0021;
+A2F3 0021;
+A2F5 0021;
+A2F7 0021;
+A2F9 0021;
+A2FB 0021;
+A2FD 0021;
+A2FF 0021;
+A301 0021;
+A303 0021;
+A305 0021;
+A307 0021;
+A309 0021;
+A30B 0021;
+A30D 0021;
+A30F 0021;
+A311 0021;
+A313 0021;
+A315 0021;
+A317 0021;
+A319 0021;
+A31B 0021;
+A31D 0021;
+A31F 0021;
+A321 0021;
+A323 0021;
+A325 0021;
+A327 0021;
+A329 0021;
+A32B 0021;
+A32D 0021;
+A32F 0021;
+A331 0021;
+A333 0021;
+A335 0021;
+A337 0021;
+A339 0021;
+A33B 0021;
+A33D 0021;
+A33F 0021;
+A341 0021;
+A343 0021;
+A345 0021;
+A347 0021;
+A349 0021;
+A34B 0021;
+A34D 0021;
+A34F 0021;
+A351 0021;
+A353 0021;
+A355 0021;
+A357 0021;
+A359 0021;
+A35B 0021;
+A35D 0021;
+A35F 0021;
+A361 0021;
+A363 0021;
+A365 0021;
+A367 0021;
+A369 0021;
+A36B 0021;
+A36D 0021;
+A36F 0021;
+A371 0021;
+A373 0021;
+A375 0021;
+A377 0021;
+A379 0021;
+A37B 0021;
+A37D 0021;
+A37F 0021;
+A381 0021;
+A383 0021;
+A385 0021;
+A387 0021;
+A389 0021;
+A38B 0021;
+A38D 0021;
+A38F 0021;
+A391 0021;
+A393 0021;
+A395 0021;
+A397 0021;
+A399 0021;
+A39B 0021;
+A39D 0021;
+A39F 0021;
+A3A1 0021;
+A3A3 0021;
+A3A5 0021;
+A3A7 0021;
+A3A9 0021;
+A3AB 0021;
+A3AD 0021;
+A3AF 0021;
+A3B1 0021;
+A3B3 0021;
+A3B5 0021;
+A3B7 0021;
+A3B9 0021;
+A3BB 0021;
+A3BD 0021;
+A3BF 0021;
+A3C1 0021;
+A3C3 0021;
+A3C5 0021;
+A3C7 0021;
+A3C9 0021;
+A3CB 0021;
+A3CD 0021;
+A3CF 0021;
+A3D1 0021;
+A3D3 0021;
+A3D5 0021;
+A3D7 0021;
+A3D9 0021;
+A3DB 0021;
+A3DD 0021;
+A3DF 0021;
+A3E1 0021;
+A3E3 0021;
+A3E5 0021;
+A3E7 0021;
+A3E9 0021;
+A3EB 0021;
+A3ED 0021;
+A3EF 0021;
+A3F1 0021;
+A3F3 0021;
+A3F5 0021;
+A3F7 0021;
+A3F9 0021;
+A3FB 0021;
+A3FD 0021;
+A3FF 0021;
+A401 0021;
+A403 0021;
+A405 0021;
+A407 0021;
+A409 0021;
+A40B 0021;
+A40D 0021;
+A40F 0021;
+A411 0021;
+A413 0021;
+A415 0021;
+A417 0021;
+A419 0021;
+A41B 0021;
+A41D 0021;
+A41F 0021;
+A421 0021;
+A423 0021;
+A425 0021;
+A427 0021;
+A429 0021;
+A42B 0021;
+A42D 0021;
+A42F 0021;
+A431 0021;
+A433 0021;
+A435 0021;
+A437 0021;
+A439 0021;
+A43B 0021;
+A43D 0021;
+A43F 0021;
+A441 0021;
+A443 0021;
+A445 0021;
+A447 0021;
+A449 0021;
+A44B 0021;
+A44D 0021;
+A44F 0021;
+A451 0021;
+A453 0021;
+A455 0021;
+A457 0021;
+A459 0021;
+A45B 0021;
+A45D 0021;
+A45F 0021;
+A461 0021;
+A463 0021;
+A465 0021;
+A467 0021;
+A469 0021;
+A46B 0021;
+A46D 0021;
+A46F 0021;
+A471 0021;
+A473 0021;
+A475 0021;
+A477 0021;
+A479 0021;
+A47B 0021;
+A47D 0021;
+A47F 0021;
+A481 0021;
+A483 0021;
+A485 0021;
+A487 0021;
+A489 0021;
+A48B 0021;
+10280 0021;
+10282 0021;
+10284 0021;
+10286 0021;
+10288 0021;
+1028A 0021;
+1028C 0021;
+1028E 0021;
+10290 0021;
+10292 0021;
+10294 0021;
+10296 0021;
+10298 0021;
+1029A 0021;
+1029C 0021;
+102A1 0021;
+102A3 0021;
+102A5 0021;
+102A7 0021;
+102A9 0021;
+102AB 0021;
+102AD 0021;
+102AF 0021;
+102B1 0021;
+102B3 0021;
+102B5 0021;
+102B7 0021;
+102B9 0021;
+102BB 0021;
+102BD 0021;
+102BF 0021;
+102C1 0021;
+102C3 0021;
+102C5 0021;
+102C7 0021;
+102C9 0021;
+102CB 0021;
+102CD 0021;
+102CF 0021;
+10920 0021;
+10922 0021;
+10924 0021;
+10926 0021;
+10928 0021;
+1092A 0021;
+1092C 0021;
+1092E 0021;
+10930 0021;
+10932 0021;
+10934 0021;
+10936 0021;
+10938 0021;
+10300 0021;
+10302 0021;
+10304 0021;
+10306 0021;
+10308 0021;
+1030A 0021;
+1030C 0021;
+1030E 0021;
+10310 0021;
+10312 0021;
+10314 0021;
+10316 0021;
+10318 0021;
+1031A 0021;
+1031C 0021;
+1031E 0021;
+10331 0021;
+10333 0021;
+10335 0021;
+10337 0021;
+10339 0021;
+1033B 0021;
+1033D 0021;
+1033F 0021;
+10341 0021;
+10343 0021;
+10345 0021;
+10347 0021;
+10349 0021;
+10428 0021;
+10429 0021;
+1042A 0021;
+1042B 0021;
+1042C 0021;
+1042D 0021;
+1042E 0021;
+1042F 0021;
+10430 0021;
+10431 0021;
+10432 0021;
+10433 0021;
+10434 0021;
+10435 0021;
+10436 0021;
+10437 0021;
+10438 0021;
+10439 0021;
+1043A 0021;
+1043B 0021;
+1043C 0021;
+1043D 0021;
+1043E 0021;
+1043F 0021;
+10440 0021;
+10441 0021;
+10442 0021;
+10443 0021;
+10444 0021;
+10445 0021;
+10446 0021;
+10447 0021;
+10448 0021;
+10449 0021;
+1044A 0021;
+1044B 0021;
+1044C 0021;
+1044D 0021;
+1044E 0021;
+1044F 0021;
+10450 0021;
+10452 0021;
+10454 0021;
+10456 0021;
+10458 0021;
+1045A 0021;
+1045C 0021;
+1045E 0021;
+10460 0021;
+10462 0021;
+10464 0021;
+10466 0021;
+10468 0021;
+1046A 0021;
+1046C 0021;
+1046E 0021;
+10470 0021;
+10472 0021;
+10474 0021;
+10476 0021;
+10478 0021;
+1047A 0021;
+1047C 0021;
+1047E 0021;
+10480 0021;
+10482 0021;
+10484 0021;
+10486 0021;
+10488 0021;
+1048A 0021;
+1048C 0021;
+1048E 0021;
+10490 0021;
+10492 0021;
+10494 0021;
+10496 0021;
+10498 0021;
+1049A 0021;
+1049C 0021;
+10000 0021;
+10002 0021;
+10004 0021;
+10006 0021;
+10008 0021;
+1000A 0021;
+1000D 0021;
+1000F 0021;
+10011 0021;
+10013 0021;
+10015 0021;
+10017 0021;
+10019 0021;
+1001B 0021;
+1001D 0021;
+1001F 0021;
+10021 0021;
+10023 0021;
+10025 0021;
+10028 0021;
+1002A 0021;
+1002C 0021;
+1002E 0021;
+10030 0021;
+10032 0021;
+10034 0021;
+10036 0021;
+10038 0021;
+1003A 0021;
+1003D 0021;
+10040 0021;
+10042 0021;
+10044 0021;
+10046 0021;
+10048 0021;
+1004A 0021;
+1004C 0021;
+10050 0021;
+10052 0021;
+10054 0021;
+10056 0021;
+10058 0021;
+1005A 0021;
+1005C 0021;
+10080 0021;
+10082 0021;
+10084 0021;
+10086 0021;
+10088 0021;
+1008A 0021;
+1008C 0021;
+1008E 0021;
+10090 0021;
+10092 0021;
+10094 0021;
+10096 0021;
+10098 0021;
+1009A 0021;
+1009C 0021;
+1009E 0021;
+100A0 0021;
+100A2 0021;
+100A4 0021;
+100A6 0021;
+100A8 0021;
+100AA 0021;
+100AC 0021;
+100AE 0021;
+100B0 0021;
+100B2 0021;
+100B4 0021;
+100B6 0021;
+100B8 0021;
+100BA 0021;
+100BC 0021;
+100BE 0021;
+100C0 0021;
+100C2 0021;
+100C4 0021;
+100C6 0021;
+100C8 0021;
+100CA 0021;
+100CC 0021;
+100CE 0021;
+100D0 0021;
+100D2 0021;
+100D4 0021;
+100D6 0021;
+100D8 0021;
+100DA 0021;
+100DC 0021;
+100DE 0021;
+100E0 0021;
+100E2 0021;
+100E4 0021;
+100E6 0021;
+100E8 0021;
+100EA 0021;
+100EC 0021;
+100EE 0021;
+100F0 0021;
+100F2 0021;
+100F4 0021;
+100F6 0021;
+100F8 0021;
+100FA 0021;
+10801 0021;
+10803 0021;
+10805 0021;
+1080A 0021;
+1080C 0021;
+1080E 0021;
+10810 0021;
+10812 0021;
+10814 0021;
+10816 0021;
+10818 0021;
+1081A 0021;
+1081C 0021;
+1081E 0021;
+10820 0021;
+10822 0021;
+10824 0021;
+10826 0021;
+10828 0021;
+1082A 0021;
+1082C 0021;
+1082E 0021;
+10830 0021;
+10832 0021;
+10834 0021;
+10837 0021;
+1083C 0021;
+10380 0021;
+10382 0021;
+10384 0021;
+10386 0021;
+10388 0021;
+1038A 0021;
+1038C 0021;
+1038E 0021;
+10390 0021;
+10392 0021;
+10394 0021;
+10396 0021;
+10398 0021;
+1039A 0021;
+1039C 0021;
+103A0 0021;
+103A2 0021;
+103A4 0021;
+103A6 0021;
+103A8 0021;
+103AA 0021;
+103AC 0021;
+103AE 0021;
+103B0 0021;
+103B2 0021;
+103B4 0021;
+103B6 0021;
+103B8 0021;
+103BA 0021;
+103BC 0021;
+103BE 0021;
+103C0 0021;
+103C2 0021;
+103C8 0021;
+103CA 0021;
+103CC 0021;
+103CE 0021;
+12000 0021;
+12002 0021;
+12004 0021;
+12006 0021;
+12008 0021;
+1200A 0021;
+1200C 0021;
+1200E 0021;
+12010 0021;
+12012 0021;
+12014 0021;
+12016 0021;
+12018 0021;
+1201A 0021;
+1201C 0021;
+1201E 0021;
+12020 0021;
+12022 0021;
+12024 0021;
+12026 0021;
+12028 0021;
+1202A 0021;
+1202C 0021;
+1202E 0021;
+12030 0021;
+12032 0021;
+12034 0021;
+12036 0021;
+12038 0021;
+1203A 0021;
+1203C 0021;
+1203E 0021;
+12040 0021;
+12042 0021;
+12044 0021;
+12046 0021;
+12048 0021;
+1204A 0021;
+1204C 0021;
+1204E 0021;
+12050 0021;
+12052 0021;
+12054 0021;
+12056 0021;
+12058 0021;
+1205A 0021;
+1205C 0021;
+1205E 0021;
+12060 0021;
+12062 0021;
+12064 0021;
+12066 0021;
+12068 0021;
+1206A 0021;
+1206C 0021;
+1206E 0021;
+12070 0021;
+12072 0021;
+12074 0021;
+12076 0021;
+12078 0021;
+1207A 0021;
+1207C 0021;
+1207E 0021;
+12080 0021;
+12082 0021;
+12084 0021;
+12086 0021;
+12088 0021;
+1208A 0021;
+1208C 0021;
+1208E 0021;
+12090 0021;
+12092 0021;
+12094 0021;
+12096 0021;
+12098 0021;
+1209A 0021;
+1209C 0021;
+1209E 0021;
+120A0 0021;
+120A2 0021;
+120A4 0021;
+120A6 0021;
+120A8 0021;
+120AA 0021;
+120AC 0021;
+120AE 0021;
+120B0 0021;
+120B2 0021;
+120B4 0021;
+120B6 0021;
+120B8 0021;
+120BA 0021;
+120BC 0021;
+120BE 0021;
+120C0 0021;
+120C2 0021;
+120C4 0021;
+120C6 0021;
+120C8 0021;
+120CA 0021;
+120CC 0021;
+120CE 0021;
+120D0 0021;
+120D2 0021;
+120D4 0021;
+120D6 0021;
+120D8 0021;
+120DA 0021;
+120DC 0021;
+120DE 0021;
+120E0 0021;
+120E2 0021;
+120E4 0021;
+120E6 0021;
+120E8 0021;
+120EA 0021;
+120EC 0021;
+120EE 0021;
+120F0 0021;
+120F2 0021;
+120F4 0021;
+120F6 0021;
+120F8 0021;
+120FA 0021;
+120FC 0021;
+120FE 0021;
+12100 0021;
+12102 0021;
+12104 0021;
+12106 0021;
+12108 0021;
+1210A 0021;
+1210C 0021;
+1210E 0021;
+12110 0021;
+12112 0021;
+12114 0021;
+12116 0021;
+12118 0021;
+1211A 0021;
+1211C 0021;
+1211E 0021;
+12120 0021;
+12122 0021;
+12124 0021;
+12126 0021;
+12128 0021;
+1212A 0021;
+1212C 0021;
+1212E 0021;
+12130 0021;
+12132 0021;
+12134 0021;
+12136 0021;
+12138 0021;
+1213A 0021;
+1213C 0021;
+1213E 0021;
+12140 0021;
+12142 0021;
+12144 0021;
+12146 0021;
+12148 0021;
+1214A 0021;
+1214C 0021;
+1214E 0021;
+12150 0021;
+12152 0021;
+12154 0021;
+12156 0021;
+12158 0021;
+1215A 0021;
+1215C 0021;
+1215E 0021;
+12160 0021;
+12162 0021;
+12164 0021;
+12166 0021;
+12168 0021;
+1216A 0021;
+1216C 0021;
+1216E 0021;
+12170 0021;
+12172 0021;
+12174 0021;
+12176 0021;
+12178 0021;
+1217A 0021;
+1217C 0021;
+1217E 0021;
+12180 0021;
+12182 0021;
+12184 0021;
+12186 0021;
+12188 0021;
+1218A 0021;
+1218C 0021;
+1218E 0021;
+12190 0021;
+12192 0021;
+12194 0021;
+12196 0021;
+12198 0021;
+1219A 0021;
+1219C 0021;
+1219E 0021;
+121A0 0021;
+121A2 0021;
+121A4 0021;
+121A6 0021;
+121A8 0021;
+121AA 0021;
+121AC 0021;
+121AE 0021;
+121B0 0021;
+121B2 0021;
+121B4 0021;
+121B6 0021;
+121B8 0021;
+121BA 0021;
+121BC 0021;
+121BE 0021;
+121C0 0021;
+121C2 0021;
+121C4 0021;
+121C6 0021;
+121C8 0021;
+121CA 0021;
+121CC 0021;
+121CE 0021;
+121D0 0021;
+121D2 0021;
+121D4 0021;
+121D6 0021;
+121D8 0021;
+121DA 0021;
+121DC 0021;
+121DE 0021;
+121E0 0021;
+121E2 0021;
+121E4 0021;
+121E6 0021;
+121E8 0021;
+121EA 0021;
+121EC 0021;
+121EE 0021;
+121F0 0021;
+121F2 0021;
+121F4 0021;
+121F6 0021;
+121F8 0021;
+121FA 0021;
+121FC 0021;
+121FE 0021;
+12200 0021;
+12202 0021;
+12204 0021;
+12206 0021;
+12208 0021;
+1220A 0021;
+1220C 0021;
+1220E 0021;
+12210 0021;
+12212 0021;
+12214 0021;
+12216 0021;
+12218 0021;
+1221A 0021;
+1221C 0021;
+1221E 0021;
+12220 0021;
+12222 0021;
+12224 0021;
+12226 0021;
+12228 0021;
+1222A 0021;
+1222C 0021;
+1222E 0021;
+12230 0021;
+12232 0021;
+12234 0021;
+12236 0021;
+12238 0021;
+1223A 0021;
+1223C 0021;
+1223E 0021;
+12240 0021;
+12242 0021;
+12244 0021;
+12246 0021;
+12248 0021;
+1224A 0021;
+1224C 0021;
+1224E 0021;
+12250 0021;
+12252 0021;
+12254 0021;
+12256 0021;
+12258 0021;
+1225A 0021;
+1225C 0021;
+1225E 0021;
+12260 0021;
+12262 0021;
+12264 0021;
+12266 0021;
+12268 0021;
+1226A 0021;
+1226C 0021;
+1226E 0021;
+12270 0021;
+12272 0021;
+12274 0021;
+12276 0021;
+12278 0021;
+1227A 0021;
+1227C 0021;
+1227E 0021;
+12280 0021;
+12282 0021;
+12284 0021;
+12286 0021;
+12288 0021;
+1228A 0021;
+1228C 0021;
+1228E 0021;
+12290 0021;
+12292 0021;
+12294 0021;
+12296 0021;
+12298 0021;
+1229A 0021;
+1229C 0021;
+1229E 0021;
+122A0 0021;
+122A2 0021;
+122A4 0021;
+122A6 0021;
+122A8 0021;
+122AA 0021;
+122AC 0021;
+122AE 0021;
+122B0 0021;
+122B2 0021;
+122B4 0021;
+122B6 0021;
+122B8 0021;
+122BA 0021;
+122BC 0021;
+122BE 0021;
+122C0 0021;
+122C2 0021;
+122C4 0021;
+122C6 0021;
+122C8 0021;
+122CA 0021;
+122CC 0021;
+122CE 0021;
+122D0 0021;
+122D2 0021;
+122D4 0021;
+122D6 0021;
+122D8 0021;
+122DA 0021;
+122DC 0021;
+122DE 0021;
+122E0 0021;
+122E2 0021;
+122E4 0021;
+122E6 0021;
+122E8 0021;
+122EA 0021;
+122EC 0021;
+122EE 0021;
+122F0 0021;
+122F2 0021;
+122F4 0021;
+122F6 0021;
+122F8 0021;
+122FA 0021;
+122FC 0021;
+122FE 0021;
+12300 0021;
+12302 0021;
+12304 0021;
+12306 0021;
+12308 0021;
+1230A 0021;
+1230C 0021;
+1230E 0021;
+12310 0021;
+12312 0021;
+12314 0021;
+12316 0021;
+12318 0021;
+1231A 0021;
+1231C 0021;
+1231E 0021;
+12320 0021;
+12322 0021;
+12324 0021;
+12326 0021;
+12328 0021;
+1232A 0021;
+1232C 0021;
+1232E 0021;
+12330 0021;
+12332 0021;
+12334 0021;
+12336 0021;
+12338 0021;
+1233A 0021;
+1233C 0021;
+1233E 0021;
+12340 0021;
+12342 0021;
+12344 0021;
+12346 0021;
+12348 0021;
+1234A 0021;
+1234C 0021;
+1234E 0021;
+12350 0021;
+12352 0021;
+12354 0021;
+12356 0021;
+12358 0021;
+1235A 0021;
+1235C 0021;
+1235E 0021;
+12360 0021;
+12362 0021;
+12364 0021;
+12366 0021;
+12368 0021;
+1236A 0021;
+1236C 0021;
+1236E 0021;
+2F00 003F;
+2F00 0041;
+4E01 0021;
+4E02 0021;
+3286 003F;
+4E04 0021;
+3222 0021;
+3194 0061;
+32A4 0041;
+32A6 0041;
+319B 0021;
+2F01 0021;
+32A5 0021;
+F905 0021;
+2F02 0041;
+F95E 0021;
+2F03 0021;
+2F04 0021;
+2E84 0061;
+2E82 0021;
+3228 0041;
+2F05 0021;
+3221 0021;
+3221 0041;
+3224 0021;
+2F07 0021;
+2F08 0021;
+2E85 0021;
+2F819 0021;
+F9A8 0021;
+323D 0041;
+3241 0041;
+FA73 0021;
+F9B5 0021;
+2F805 0061;
+F965 0021;
+F9D4 0021;
+2F809 0021;
+F9BB 0021;
+2F80A 0061;
+2F09 0021;
+FA74 0021;
+2F80E 0061;
+2F810 0021;
+2F814 0021;
+F978 0021;
+3287 003F;
+F9D1 0021;
+3285 0061;
+FA75 0021;
+2F0C 0041;
+2F8D2 0021;
+2F0D 0021;
+32A2 0021;
+2F0E 0021;
+FA71 0021;
+F92E 0021;
+F955 0021;
+FA15 0021;
+2F0F 0041;
+2F81D 0041;
+2F11 0041;
+2F81E 0021;
+2F850 0061;
+F9DD 0021;
+2F820 0021;
+2F822 0021;
+F9C7 0021;
+F98A 0041;
+2F992 0021;
+3238 0041;
+2F825 0061;
+2F826 0061;
+F92F 0021;
+2F827 0061;
+2F13 0021;
+2F828 0061;
+2F82A 0021;
+F963 0021;
+2F15 0021;
+32A9 0021;
+3229 0021;
+3038 0061;
+3039 0021;
+2F82C 0021;
+2F82D 0061;
+323F 0041;
+2F18 0021;
+2F19 0021;
+329E 0021;
+F91C 0021;
+2F831 0021;
+2F832 0041;
+2F1A 0041;
+F96B 0021;
+2F836 0021;
+2F1D 0021;
+2F839 0021;
+32A8 0021;
+3234 0021;
+F9DE 0021;
+2F83D 0021;
+2F83E 0021;
+323A 0021;
+2F840 0021;
+2F841 0021;
+2F843 0021;
+2F844 0021;
+2F846 0061;
+FA7A 0021;
+FA36 0021;
+2F848 0021;
+FA0D 0021;
+FA7B 0021;
+2F84C 0061;
+FA38 0021;
+2F1E 0021;
+3195 003F;
+F9A9 0021;
+2F84D 0021;
+328F 003F;
+319E 0021;
+2F852 0021;
+2F854 0021;
+2F856 0021;
+FA10 0021;
+F96C 0021;
+2F858 0021;
+F94A 0021;
+2F20 0021;
+2F85A 0021;
+2F21 0021;
+2F22 0021;
+2F85D 0021;
+2F85E 0021;
+337D 0021;
+FA7E 0021;
+F909 0021;
+2F85F 0021;
+329B 003F;
+2F865 0021;
+2F863 0021;
+FA80 0021;
+2F986 0021;
+FA81 0021;
+2F86B 0061;
+323B 0021;
+2F27 0021;
+32AA 0021;
+2F86E 0021;
+2F86F 003F;
+F9BC 0021;
+2F28 0021;
+2F873 0021;
+2E8D 003F;
+2F875 0021;
+2E90 0061;
+2E8F 0021;
+2F2B 0021;
+2F877 0021;
+FA3B 0021;
+FA3C 0021;
+2F2C 0061;
+2F87A 0021;
+F9D5 0021;
+F921 0021;
+2F87E 0021;
+2F9F4 0021;
+2F2E 0021;
+2F882 0021;
+32A7 0021;
+2E92 0021;
+2F31 0021;
+2F886 0021;
+2F32 0021;
+F98E 0021;
+2F33 0061;
+FA01 0021;
+2F88C 0021;
+F9A2 0021;
+2F88E 0061;
+FA0B 0021;
+F982 0021;
+2F890 0021;
+F943 0021;
+2F38 0021;
+2F895 0061;
+2F39 0041;
+2F874 0021;
+2F899 0021;
+2F89A 0021;
+F9D8 0021;
+F966 0021;
+2F3C 0021;
+2E96 0021;
+2F89E 0021;
+2F89F 0021;
+F9AC 0021;
+FA3D 0021;
+2F8A5 0021;
+F9B9 0021;
+F9D9 0021;
+2F8A7 0021;
+FA87 0021;
+FA8A 0021;
+2F8AA 0021;
+2F8AB 003F;
+F98F 0021;
+2F8AE 0021;
+2F8AF 0021;
+2F8B0 003F;
+F90D 0021;
+F990 0021;
+2F8B2 0021;
+F9D2 0021;
+2F3E 0021;
+2E98 0021;
+2F8B5 0021;
+F95B 0021;
+2F8B6 0021;
+F973 0021;
+2F8B7 0021;
+F9A4 0021;
+F975 0021;
+FA8D 0021;
+2F8BD 0021;
+2F8BF 0021;
+2F8C3 0021;
+2F8C4 0021;
+2F8C5 0021;
+2F40 0021;
+2E99 0021;
+2F8C8 0061;
+2F8C9 0021;
+2F42 0021;
+F9BE 0021;
+2F45 0021;
+2F46 0021;
+FA42 0021;
+3230 0021;
+3230 0041;
+337E 0021;
+337C 0021;
+FA12 0021;
+F9C5 0021;
+2F8CF 0061;
+FA06 0021;
+2F48 0021;
+2F8CC 0021;
+322A 0021;
+322A 0041;
+3232 0021;
+F929 0021;
+FA92 0041;
+2F8D9 0061;
+322D 0021;
+328D 0061;
+2F8DC 0021;
+2F8DB 0021;
+2F8E0 0021;
+F9C9 0021;
+F9DA 0021;
+3231 0021;
+337F 0021;
+F97A 0021;
+2F8E2 0061;
+F9E2 0021;
+2F8E8 0021;
+2F8EA 0021;
+F9BF 003F;
+F94C 0021;
+F931 0021;
+F91D 0021;
+2F8EF 0021;
+2F4C 0021;
+2F8F3 0021;
+FA95 0021;
+2E9E 0021;
+F9A5 0021;
+F970 0021;
+FA96 0041;
+2F4F 0021;
+2F50 0021;
+2F52 0021;
+2F53 0021;
+328C 003F;
+2EA1 0021;
+2F8FA 0021;
+F972 0021;
+F968 0021;
+F9E3 0021;
+2F8FF 0021;
+FA05 0021;
+2F900 0021;
+2F902 003F;
+2F903 0021;
+FA45 0021;
+2F904 0021;
+F9F5 0021;
+F9D6 0021;
+FA46 0021;
+2F909 0021;
+F9EC 0021;
+FA99 0021;
+F904 0021;
+F94E 0021;
+FA9A 0061;
+2F90F 0021;
+F922 0021;
+2F915 0021;
+2F914 0061;
+2F917 0021;
+328B 003F;
+2EA3 0021;
+2F919 0021;
+F9FB 0021;
+F99F 0021;
+2F91C 0021;
+FA48 0021;
+2F91E 0021;
+F9EE 0021;
+F91E 0021;
+2F56 0021;
+2EA5 003F;
+FA9E 0021;
+2F57 0021;
+2F59 0021;
+2F922 0021;
+2F5C 0021;
+F946 0021;
+3235 0041;
+2F925 0021;
+2EA8 0021;
+F9FA 0021;
+FA16 0021;
+F9A7 0021;
+2F5E 0021;
+F9DB 0061;
+2F929 0021;
+2F92B 0021;
+F917 0021;
+F9CC 0021;
+2F92E 0021;
+F9AE 0021;
+2F930 0061;
+F994 0021;
+2F932 0021;
+2F61 0021;
+2F62 0021;
+2F934 0021;
+2F65 0021;
+329A 0021;
+2F936 0021;
+F976 0021;
+2F938 0061;
+2F66 0041;
+F9E5 0021;
+FAA4 0021;
+F9C1 0021;
+2F68 0021;
+2F6A 0021;
+FA17 0021;
+FAA7 0021;
+323C 0041;
+2F6C 0021;
+FAA8 0021;
+F96D 0021;
+2F946 0021;
+FAAA 0021;
+2F948 0061;
+FA9D 0021;
+2F6E 0021;
+2F94E 0021;
+F93B 0021;
+FA4B 0021;
+FAAB 0021;
+F964 0021;
+2F70 0021;
+2EAD 0021;
+FA4C 0021;
+3293 0061;
+FA4D 0021;
+FA50 0021;
+FA51 0021;
+3297 0061;
+FA1A 0021;
+F93C 0021;
+FA53 0021;
+2F956 0061;
+2F71 0021;
+F995 0021;
+2F957 0021;
+FA54 0021;
+2F95A 0021;
+2F73 0021;
+FAAC 0021;
+F9F7 0041;
+2F75 0021;
+F9F8 0021;
+FAAD 0061;
+2F963 0021;
+F944 0021;
+FAAE 0021;
+FA1D 0021;
+FA03 0021;
+F97B 0021;
+2F77 0021;
+2F96A 0021;
+F96A 0021;
+FAAF 0021;
+F93D 0021;
+2F96E 0021;
+FAB0 003F;
+2F96F 0021;
+F950 0021;
+2F970 0021;
+2F78 0021;
+2F79 0021;
+2EB2 0041;
+2EB4 003F;
+FA5A 0021;
+2F976 0021;
+2F7A 0021;
+2EB7 0061;
+2F978 0021;
+FA1E 0021;
+2F979 0021;
+F934 0041;
+FA5B 0021;
+FAB2 0041;
+2F7E 0021;
+F9B0 0021;
+F997 0021;
+F945 0021;
+2F80 0041;
+2F81 0021;
+F953 0021;
+2F982 0021;
+2F985 0021;
+2F82 0021;
+3242 0021;
+FA5C 0021;
+2F84 0061;
+2F85 0041;
+2F98B 0061;
+2F86 0021;
+2F88 0021;
+F97C 0021;
+2F8B 0021;
+2EBE 003F;
+2EBE 0041;
+2F990 0021;
+2F991 0021;
+2F994 0021;
+F974 0021;
+2F996 0021;
+2F99C 0021;
+FAB3 0021;
+2F99A 0021;
+2F99D 0021;
+2F9A1 0021;
+2F9A3 0021;
+FAB4 0021;
+F918 0021;
+FA5F 0021;
+F999 0021;
+2F9A9 0021;
+2F9AA 0021;
+F923 0021;
+F935 0021;
+F91F 0021;
+2F8C 0021;
+2F9B3 0021;
+2F9B4 0061;
+2F9B6 0021;
+2F9B8 0021;
+2F9BA 0021;
+2F9BC 0021;
+FAB5 0021;
+2F9BE 0021;
+2F9C0 0021;
+F927 0021;
+FA08 0021;
+2F9C3 0021;
+2F9C4 0041;
+F9A0 0021;
+2F9C6 0021;
+F9E8 0021;
+2F9C9 0021;
+FAB6 0021;
+2F91 0021;
+2EC3 0021;
+FA0A 0021;
+FA61 0021;
+2EC5 0021;
+2EC7 003F;
+2F94 0021;
+F96F 0021;
+FAB9 0021;
+F97D 0021;
+FABE 0021;
+FA22 0021;
+F95D 0021;
+FA62 0021;
+FA63 0021;
+F9FC 0021;
+FAC0 0021;
+2EC8 0021;
+2F96 0021;
+2F9D2 0021;
+2F98 0021;
+3236 0021;
+2F9D4 0021;
+F948 0021;
+323E 0041;
+FA64 0021;
+FAC1 0061;
+2EC9 0021;
+2F9B 0021;
+2F9C 0021;
+2F9DB 0021;
+F937 0021;
+2F9D 0021;
+F902 0041;
+F998 0021;
+FAC2 0021;
+FA07 0021;
+2ECB 0021;
+2F98D 0021;
+F971 0041;
+FA66 0021;
+2ECC 0061;
+F99A 0021;
+FA67 0061;
+FAC3 0021;
+F913 0021;
+2FA2 0041;
+F92C 0021;
+FA26 0021;
+2F9E6 0021;
+F919 0021;
+F9B7 0021;
+F9E9 0021;
+F97E 0021;
+2FA6 003F;
+328E 0041;
+2F9E7 0021;
+2F9EA 0021;
+2F9E9 0021;
+F99B 0021;
+2F9EC 0021;
+2ED1 0021;
+2ED2 0021;
+2FA8 0021;
+F986 0021;
+2ED4 0021;
+2FA9 0041;
+F9C6 0021;
+FA09 0021;
+F9D3 0021;
+F9DC 0021;
+2FAA 0021;
+2FAB 0021;
+F9EA 0021;
+FAC7 0061;
+2FAC 0041;
+F949 0021;
+F938 0021;
+2FAD 0021;
+FA1C 0021;
+2FAE 0021;
+2FB0 0021;
+FAC9 0021;
+2ED9 0021;
+2FB3 0021;
+FACA 0061;
+32A0 0021;
+2F9FF 003F;
+F9B4 0021;
+FA6A 0021;
+F9D0 0021;
+2FB5 0021;
+2FB6 0021;
+2EDD 0021;
+2EDF 0021;
+2FA02 0021;
+FA2B 0021;
+2FA04 0021;
+2FB8 0021;
+2FB9 0021;
+2FBA 0021;
+F91A 0021;
+F987 0021;
+2FBB 0021;
+2FBC 0021;
+FACD 0021;
+2FBE 0021;
+2FC0 0021;
+2FC1 0041;
+F939 0021;
+F9F2 0021;
+2FC3 0021;
+2FA0F 0021;
+F93A 0021;
+2EE6 0021;
+2FC4 0041;
+F940 0041;
+F9F3 0021;
+2EE8 0021;
+2FA15 0041;
+2EE9 0021;
+F989 0021;
+2FA17 0021;
+2FCC 0021;
+2FA18 0041;
+2FCD 0021;
+2FCE 0021;
+2FCF 0021;
+2FA1C 0041;
+2FD1 0021;
+2EEC 0021;
+2FD2 0041;
+F9C4 0021;
+2EEF 0061;
+2EF0 0021;
+FACE 003F;
+F907 0041;
+F908 0062;
+9FA0 0021;
+9FA1 0021;
+9FA3 0021;
+9FA5 0021;
+FA0F 0021;
+FA13 0021;
+FA1F 0021;
+FA23 0021;
+FA27 0021;
+FA29 0021;
+3401 0021;
+3403 0021;
+3405 0021;
+3407 0021;
+3409 0021;
+340B 0021;
+340D 0021;
+340F 0021;
+3411 0021;
+3413 0021;
+3415 0021;
+3417 0021;
+3419 0021;
+341B 0021;
+341D 0021;
+341F 0021;
+3421 0021;
+3423 0021;
+3425 0021;
+3427 0021;
+3429 0021;
+342B 0021;
+342D 0021;
+342F 0021;
+3431 0021;
+3433 0021;
+3435 0021;
+3437 0021;
+3439 0021;
+343B 0021;
+343D 0021;
+343F 0021;
+3441 0021;
+3443 0021;
+3445 0021;
+3447 0021;
+3449 0021;
+344B 0021;
+344D 0021;
+344F 0021;
+3451 0021;
+3453 0021;
+3455 0021;
+3457 0021;
+3459 0021;
+345B 0021;
+345D 0021;
+345F 0021;
+3461 0021;
+3463 0021;
+3465 0021;
+3467 0021;
+3469 0021;
+346B 0021;
+346D 0021;
+346F 0021;
+3471 0021;
+3473 0021;
+3475 0021;
+3477 0021;
+3479 0021;
+347B 0021;
+347D 0021;
+347F 0021;
+3481 0021;
+3483 0021;
+3485 0021;
+3487 0021;
+3489 0021;
+348B 0021;
+348D 0021;
+348F 0021;
+3491 0021;
+3493 0021;
+3495 0021;
+3497 0021;
+3499 0021;
+349B 0021;
+349D 0021;
+2F80C 0061;
+34A0 0021;
+34A2 0021;
+34A4 0021;
+34A6 0021;
+34A8 0021;
+34AA 0021;
+34AC 0021;
+34AE 0021;
+34B0 0021;
+34B2 0021;
+34B4 0021;
+34B6 0021;
+34B8 0021;
+2F813 0061;
+34BB 0021;
+34BC 0021;
+34BE 0021;
+34C0 0021;
+34C2 0021;
+34C4 0021;
+34C6 0021;
+34C8 0021;
+34CA 0021;
+34CC 0021;
+34CE 0021;
+34D0 0021;
+34D2 0021;
+34D4 0021;
+34D6 0021;
+34D8 0021;
+34DA 0021;
+34DC 0021;
+34DE 0021;
+2F81F 0061;
+34E1 0021;
+34E3 0021;
+34E5 0021;
+34E7 0021;
+34E9 0021;
+34EB 0021;
+34ED 0021;
+34EF 0021;
+34F1 0021;
+34F3 0021;
+34F5 0021;
+34F7 0021;
+34F9 0021;
+34FB 0021;
+34FD 0021;
+34FF 0021;
+3501 0021;
+3503 0021;
+3505 0021;
+3507 0021;
+3509 0021;
+350B 0021;
+350D 0021;
+350F 0021;
+3511 0021;
+3513 0021;
+3515 0021;
+3516 0021;
+3518 0021;
+351A 0021;
+351C 0021;
+351E 0021;
+3520 0021;
+3522 0021;
+3524 0021;
+3526 0021;
+3528 0021;
+352A 0021;
+352C 0021;
+352E 0021;
+3530 0021;
+3532 0021;
+3534 0021;
+3536 0021;
+3538 0021;
+353A 0021;
+353C 0021;
+353E 0021;
+3540 0021;
+3542 0021;
+3544 0021;
+3546 0021;
+3548 0021;
+354A 0021;
+354C 0021;
+354E 0021;
+3550 0021;
+3552 0021;
+3554 0021;
+3556 0021;
+3558 0021;
+355A 0021;
+355C 0021;
+355E 0021;
+3560 0021;
+3562 0021;
+3564 0021;
+3566 0021;
+3568 0021;
+356A 0021;
+356C 0021;
+356E 0021;
+3570 0021;
+3572 0021;
+3574 0021;
+3576 0021;
+3578 0021;
+357A 0021;
+357C 0021;
+357E 0021;
+3580 0021;
+3582 0021;
+3584 0021;
+3586 0021;
+3588 0021;
+358A 0021;
+358C 0021;
+358E 0021;
+3590 0021;
+3592 0021;
+3594 0021;
+3596 0021;
+3598 0021;
+359A 0021;
+359C 0021;
+359E 0021;
+35A0 0021;
+35A2 0021;
+35A4 0021;
+35A6 0021;
+35A8 0021;
+35AA 0021;
+35AC 0021;
+35AE 0021;
+35B0 0021;
+35B2 0021;
+35B4 0021;
+35B6 0021;
+35B8 0021;
+35BA 0021;
+35BC 0021;
+35BE 0021;
+35C0 0021;
+35C2 0021;
+35C4 0021;
+35C6 0021;
+35C8 0021;
+35CA 0021;
+35CC 0021;
+35CE 0021;
+35D0 0021;
+35D2 0021;
+35D4 0021;
+35D6 0021;
+35D8 0021;
+35DA 0021;
+35DC 0021;
+35DE 0021;
+35E0 0021;
+35E2 0021;
+35E4 0021;
+35E6 0021;
+35E8 0021;
+35EA 0021;
+35EC 0021;
+35EE 0021;
+35F0 0021;
+35F2 0021;
+35F4 0021;
+35F6 0021;
+35F8 0021;
+35FA 0021;
+35FC 0021;
+35FE 0021;
+3600 0021;
+3602 0021;
+3604 0021;
+3606 0021;
+3608 0021;
+360A 0021;
+360C 0021;
+360E 0021;
+3610 0021;
+3612 0021;
+3614 0021;
+3616 0021;
+3618 0021;
+361A 0021;
+361C 0021;
+361E 0021;
+3620 0021;
+3622 0021;
+3624 0021;
+3626 0021;
+3628 0021;
+362A 0021;
+362C 0021;
+362E 0021;
+3630 0021;
+3632 0021;
+3634 0021;
+3636 0021;
+3638 0021;
+363A 0021;
+363C 0021;
+363E 0021;
+3640 0021;
+3642 0021;
+3644 0021;
+3646 0021;
+3648 0021;
+364A 0021;
+364C 0021;
+364E 0021;
+3650 0021;
+3652 0021;
+3654 0021;
+3656 0021;
+3658 0021;
+365A 0021;
+365C 0021;
+365E 0021;
+3660 0021;
+3662 0021;
+3664 0021;
+3666 0021;
+3668 0021;
+366A 0021;
+366C 0021;
+366E 0021;
+3670 0021;
+3672 0021;
+3674 0021;
+3676 0021;
+3678 0021;
+367A 0021;
+367C 0021;
+367E 0021;
+3680 0021;
+3682 0021;
+3684 0021;
+3686 0021;
+3688 0021;
+368A 0021;
+368C 0021;
+368E 0021;
+3690 0021;
+3692 0021;
+3694 0021;
+3696 0021;
+3698 0021;
+369A 0021;
+369C 0021;
+369E 0021;
+36A0 0021;
+36A2 0021;
+36A4 0021;
+36A6 0021;
+36A8 0021;
+36AA 0021;
+36AC 0021;
+36AE 0021;
+36B0 0021;
+36B2 0021;
+36B4 0021;
+36B6 0021;
+36B8 0021;
+36BA 0021;
+36BC 0021;
+36BE 0021;
+36C0 0021;
+36C2 0021;
+36C4 0021;
+36C6 0021;
+36C8 0021;
+36CA 0021;
+36CC 0021;
+36CE 0021;
+36D0 0021;
+36D2 0021;
+36D4 0021;
+36D6 0021;
+36D8 0021;
+36DA 0021;
+36DC 0021;
+36DE 0021;
+36E0 0021;
+36E2 0021;
+36E4 0021;
+36E6 0021;
+36E8 0021;
+36EA 0021;
+36EC 0021;
+36EE 0021;
+36EF 0021;
+36F1 0021;
+36F3 0021;
+36F5 0021;
+36F7 0021;
+36F9 0021;
+36FB 0021;
+2F868 0061;
+36FE 0021;
+3700 0021;
+3702 0021;
+3704 0021;
+3706 0021;
+3708 0021;
+370A 0021;
+370C 0021;
+370E 0021;
+3710 0021;
+3712 0021;
+3714 0021;
+3716 0021;
+3718 0021;
+371A 0021;
+371C 0021;
+371E 0021;
+3720 0021;
+3722 0021;
+3724 0021;
+3726 0021;
+3728 0021;
+372A 0021;
+372C 0021;
+372E 0021;
+3730 0021;
+3732 0021;
+3734 0021;
+3736 0021;
+3738 0021;
+373A 0021;
+373C 0021;
+373E 0021;
+3740 0021;
+3742 0021;
+3744 0021;
+3746 0021;
+3748 0021;
+374A 0021;
+374C 0021;
+374E 0021;
+3750 0021;
+3752 0021;
+3754 0021;
+3756 0021;
+3758 0021;
+375A 0021;
+375C 0021;
+375E 0021;
+3760 0021;
+3762 0021;
+3764 0021;
+3766 0021;
+3768 0021;
+376A 0021;
+376C 0021;
+376E 0021;
+3770 0021;
+3772 0021;
+3774 0021;
+3776 0021;
+3778 0021;
+377A 0021;
+377C 0021;
+377E 0021;
+3780 0021;
+2F876 0061;
+3783 0021;
+3785 0021;
+3787 0021;
+3789 0021;
+378B 0021;
+378D 0021;
+378F 0021;
+3791 0021;
+3793 0021;
+3795 0021;
+3797 0021;
+3799 0021;
+379B 0021;
+379D 0021;
+379F 0021;
+37A1 0021;
+37A3 0021;
+37A5 0021;
+37A7 0021;
+37A9 0021;
+37AB 0021;
+37AD 0021;
+37AF 0021;
+37B1 0021;
+37B3 0021;
+37B5 0021;
+37B7 0021;
+37B9 0021;
+37BB 0021;
+37BD 0021;
+37BF 0021;
+37C1 0021;
+37C3 0021;
+37C5 0021;
+37C7 0021;
+37C9 0021;
+37CB 0021;
+37CD 0021;
+37CF 0021;
+37D1 0021;
+37D3 0021;
+37D5 0021;
+37D7 0021;
+37D9 0021;
+37DB 0021;
+37DD 0021;
+37DF 0021;
+37E1 0021;
+37E3 0021;
+37E5 0021;
+37E7 0021;
+37E9 0021;
+37EB 0021;
+37ED 0021;
+37EF 0021;
+37F1 0021;
+37F3 0021;
+37F5 0021;
+37F7 0021;
+37F9 0021;
+37FB 0021;
+37FD 0021;
+37FF 0021;
+3801 0021;
+3803 0021;
+3805 0021;
+3807 0021;
+3809 0021;
+380B 0021;
+380D 0021;
+380F 0021;
+3811 0021;
+3813 0021;
+3815 0021;
+3817 0021;
+3819 0021;
+381B 0021;
+381D 0021;
+381F 0021;
+3821 0021;
+3823 0021;
+3825 0021;
+3827 0021;
+3829 0021;
+382B 0021;
+382D 0021;
+382F 0021;
+3830 0021;
+3832 0021;
+3834 0021;
+3836 0021;
+3838 0021;
+383A 0021;
+383C 0021;
+383E 0021;
+3840 0021;
+3842 0021;
+3844 0021;
+3846 0021;
+3848 0021;
+384A 0021;
+384C 0021;
+384E 0021;
+3850 0021;
+3852 0021;
+3854 0021;
+3856 0021;
+3858 0021;
+385A 0021;
+385C 0021;
+385E 0021;
+3860 0021;
+3862 0021;
+3863 0021;
+3865 0021;
+3867 0021;
+3869 0021;
+386B 0021;
+386D 0021;
+386F 0021;
+3871 0021;
+3873 0021;
+3875 0021;
+3877 0021;
+3879 0021;
+387B 0021;
+2F88A 0061;
+387E 0021;
+3880 0021;
+3882 0021;
+3884 0021;
+3886 0021;
+3888 0021;
+388A 0021;
+388C 0021;
+388E 0021;
+3890 0021;
+3892 0021;
+3894 0021;
+3896 0021;
+3898 0021;
+389A 0021;
+389C 0021;
+389E 0021;
+38A0 0021;
+38A2 0021;
+38A4 0021;
+38A6 0021;
+38A8 0021;
+38AA 0021;
+38AC 0021;
+38AE 0021;
+38B0 0021;
+38B2 0021;
+38B4 0021;
+38B6 0021;
+38B8 0021;
+38BA 0021;
+38BC 0021;
+38BE 0021;
+38C0 0021;
+38C2 0021;
+38C4 0021;
+38C6 0021;
+2F896 0061;
+38C9 0021;
+38CB 0021;
+38CD 0021;
+38CF 0021;
+38D1 0021;
+38D3 0021;
+38D5 0021;
+38D7 0021;
+38D9 0021;
+38DB 0021;
+38DD 0021;
+38DF 0021;
+38E1 0021;
+38E3 0021;
+38E4 0021;
+38E6 0021;
+38E8 0021;
+38EA 0021;
+38EC 0021;
+38EE 0021;
+38F0 0021;
+38F2 0021;
+38F4 0021;
+38F6 0021;
+38F8 0021;
+38FA 0021;
+38FC 0021;
+38FE 0021;
+3900 0021;
+3902 0021;
+3904 0021;
+3906 0021;
+3908 0021;
+390A 0021;
+390C 0021;
+390E 0021;
+3910 0021;
+3912 0021;
+3914 0021;
+3916 0021;
+3918 0021;
+391A 0021;
+391C 0021;
+391D 0021;
+391F 0021;
+3921 0021;
+3923 0021;
+3925 0021;
+3927 0021;
+3929 0021;
+392B 0021;
+392D 0021;
+392F 0021;
+3931 0021;
+3933 0021;
+3935 0021;
+3937 0021;
+3939 0021;
+2F8A1 0061;
+393C 0021;
+393E 0021;
+3940 0021;
+3942 0021;
+3944 0021;
+3946 0021;
+3948 0021;
+394A 0021;
+394C 0021;
+394E 0021;
+3950 0021;
+3952 0021;
+3954 0021;
+3956 0021;
+3958 0021;
+395A 0021;
+395C 0021;
+395E 0021;
+3960 0021;
+3962 0021;
+3964 0021;
+3966 0021;
+3968 0021;
+396A 0021;
+396C 0021;
+396E 0021;
+3970 0021;
+3972 0021;
+3974 0021;
+3976 0021;
+3978 0021;
+397A 0021;
+397C 0021;
+397E 0021;
+3980 0021;
+3982 0021;
+3984 0021;
+3986 0021;
+3988 0021;
+398A 0021;
+398C 0021;
+398E 0021;
+3990 0021;
+3992 0021;
+3994 0021;
+3996 0021;
+3998 0021;
+399A 0021;
+399C 0021;
+399E 0021;
+39A0 0021;
+39A2 0021;
+39A4 0021;
+39A6 0021;
+39A8 0021;
+39AA 0021;
+39AC 0021;
+39AE 0021;
+39B0 0021;
+39B2 0021;
+39B4 0021;
+39B6 0021;
+39B8 0021;
+39BA 0021;
+39BC 0021;
+39BE 0021;
+39C0 0021;
+39C2 0021;
+39C4 0021;
+39C6 0021;
+39C8 0021;
+39CA 0021;
+39CC 0021;
+39CE 0021;
+39D0 0021;
+39D2 0021;
+39D4 0021;
+39D6 0021;
+39D8 0021;
+39DA 0021;
+39DC 0021;
+39DE 0021;
+39E0 0021;
+39E2 0021;
+39E4 0021;
+39E6 0021;
+39E8 0021;
+39EA 0021;
+39EC 0021;
+39EE 0021;
+39F0 0021;
+39F2 0021;
+39F4 0021;
+39F6 0021;
+39F8 0021;
+39FA 0021;
+39FC 0021;
+39FE 0021;
+3A00 0021;
+3A02 0021;
+3A04 0021;
+3A06 0021;
+3A08 0021;
+3A0A 0021;
+3A0C 0021;
+3A0E 0021;
+3A10 0021;
+3A12 0021;
+3A14 0021;
+3A16 0021;
+3A18 0021;
+3A1A 0021;
+3A1C 0021;
+3A1E 0021;
+3A20 0021;
+3A22 0021;
+3A24 0021;
+3A26 0021;
+3A28 0021;
+3A2A 0021;
+3A2C 0021;
+3A2E 0021;
+3A2F 0021;
+3A31 0021;
+3A33 0021;
+3A35 0021;
+3A37 0021;
+3A39 0021;
+3A3B 0021;
+3A3D 0021;
+3A3F 0021;
+3A41 0021;
+3A43 0021;
+3A45 0021;
+3A47 0021;
+3A49 0021;
+3A4B 0021;
+3A4D 0021;
+3A4F 0021;
+3A51 0021;
+3A53 0021;
+3A55 0021;
+3A57 0021;
+3A59 0021;
+3A5B 0021;
+3A5D 0021;
+3A5F 0021;
+3A61 0021;
+3A63 0021;
+3A65 0021;
+3A67 0021;
+3A69 0021;
+3A6B 0021;
+2F8C7 0061;
+3A6E 0021;
+3A70 0021;
+3A72 0021;
+3A74 0021;
+3A76 0021;
+3A78 0021;
+3A7A 0021;
+3A7C 0021;
+3A7E 0021;
+3A80 0021;
+3A82 0021;
+3A84 0021;
+3A86 0021;
+3A88 0021;
+3A8A 0021;
+3A8C 0021;
+3A8E 0021;
+3A90 0021;
+3A92 0021;
+3A94 0021;
+3A96 0021;
+3A98 0021;
+3A9A 0021;
+3A9C 0021;
+3A9E 0021;
+3AA0 0021;
+3AA2 0021;
+3AA4 0021;
+3AA6 0021;
+3AA8 0021;
+3AAA 0021;
+3AAC 0021;
+3AAE 0021;
+3AB0 0021;
+3AB2 0021;
+3AB4 0021;
+3AB6 0021;
+3AB8 0021;
+3ABA 0021;
+3ABC 0021;
+3ABE 0021;
+3AC0 0021;
+3AC2 0021;
+3AC4 0021;
+3AC6 0021;
+3AC8 0021;
+3ACA 0021;
+3ACC 0021;
+3ACE 0021;
+3AD0 0021;
+3AD2 0021;
+3AD4 0021;
+3AD6 0021;
+3AD8 0021;
+3ADA 0021;
+3ADC 0021;
+3ADE 0021;
+3AE0 0021;
+3AE2 0021;
+3AE4 0021;
+3AE5 0021;
+3AE7 0021;
+3AE9 0021;
+3AEB 0021;
+3AED 0021;
+3AEF 0021;
+3AF1 0021;
+3AF3 0021;
+3AF5 0021;
+3AF7 0021;
+3AF9 0021;
+3AFB 0021;
+3AFD 0021;
+3AFF 0021;
+3B01 0021;
+3B03 0021;
+3B05 0021;
+3B07 0021;
+2F8D0 0061;
+3B0A 0021;
+3B0C 0021;
+3B0E 0021;
+3B10 0021;
+3B12 0021;
+3B14 0021;
+3B16 0021;
+3B18 0021;
+2F8CE 0061;
+3B1B 0021;
+3B1D 0021;
+3B1F 0021;
+3B21 0021;
+3B23 0021;
+3B25 0021;
+3B27 0021;
+3B29 0021;
+3B2B 0021;
+3B2D 0021;
+3B2F 0021;
+3B31 0021;
+3B33 0021;
+3B35 0021;
+3B37 0021;
+3B39 0021;
+3B3B 0021;
+3B3D 0021;
+3B3F 0021;
+3B41 0021;
+3B43 0021;
+3B45 0021;
+3B47 0021;
+3B49 0021;
+3B4A 0021;
+3B4C 0021;
+3B4E 0021;
+3B50 0021;
+3B52 0021;
+3B54 0021;
+3B56 0021;
+3B58 0021;
+3B5A 0021;
+3B5C 0021;
+3B5E 0021;
+3B60 0021;
+3B62 0021;
+3B64 0021;
+3B66 0021;
+3B68 0021;
+3B6A 0021;
+3B6C 0021;
+3B6E 0021;
+3B70 0021;
+3B72 0021;
+3B74 0021;
+3B76 0021;
+3B78 0021;
+3B7A 0021;
+3B7C 0021;
+3B7E 0021;
+3B80 0021;
+3B82 0021;
+3B84 0021;
+3B86 0021;
+3B88 0021;
+3B8A 0021;
+3B8C 0021;
+3B8E 0021;
+3B90 0021;
+3B92 0021;
+3B94 0021;
+3B96 0021;
+3B98 0021;
+3B9A 0021;
+3B9C 0021;
+2F8E7 003F;
+3B9E 0021;
+3BA0 0021;
+3BA2 0021;
+3BA4 0021;
+3BA6 0021;
+3BA8 0021;
+3BAA 0021;
+3BAC 0021;
+3BAE 0021;
+3BB0 0021;
+3BB2 0021;
+3BB4 0021;
+3BB6 0021;
+3BB8 0021;
+3BBA 0021;
+3BBC 0021;
+3BBE 0021;
+3BC0 0021;
+3BC2 0021;
+3BC4 0021;
+3BC6 0021;
+3BC8 0021;
+3BCA 0021;
+3BCC 0021;
+3BCE 0021;
+3BD0 0021;
+3BD2 0021;
+3BD4 0021;
+3BD6 0021;
+3BD8 0021;
+3BDA 0021;
+3BDC 0021;
+3BDE 0021;
+3BE0 0021;
+3BE2 0021;
+3BE4 0021;
+3BE6 0021;
+3BE8 0021;
+3BEA 0021;
+3BEC 0021;
+3BEE 0021;
+3BF0 0021;
+3BF2 0021;
+3BF4 0021;
+3BF6 0021;
+3BF8 0021;
+3BFA 0021;
+3BFC 0021;
+3BFE 0021;
+3C00 0021;
+3C02 0021;
+3C04 0021;
+3C06 0021;
+3C08 0021;
+3C0A 0021;
+3C0C 0021;
+3C0E 0021;
+3C10 0021;
+3C12 0021;
+3C14 0021;
+3C16 0021;
+3C18 0021;
+3C19 0021;
+3C1B 0021;
+3C1D 0021;
+3C1F 0021;
+3C21 0021;
+3C23 0021;
+3C25 0021;
+3C27 0021;
+3C29 0021;
+3C2B 0021;
+3C2D 0021;
+3C2F 0021;
+3C31 0021;
+3C33 0021;
+3C35 0021;
+3C37 0021;
+3C39 0021;
+3C3B 0021;
+3C3D 0021;
+3C3F 0021;
+3C41 0021;
+3C43 0021;
+3C45 0021;
+3C47 0021;
+3C49 0021;
+3C4B 0021;
+3C4D 0021;
+2F8F2 0061;
+3C50 0021;
+3C52 0021;
+3C54 0021;
+3C56 0021;
+3C58 0021;
+3C5A 0021;
+3C5C 0021;
+3C5E 0021;
+3C60 0021;
+3C62 0021;
+3C64 0021;
+3C66 0021;
+3C68 0021;
+3C6A 0021;
+3C6C 0021;
+3C6E 0021;
+3C70 0021;
+3C72 0021;
+3C74 0021;
+3C76 0021;
+3C78 0021;
+3C7A 0021;
+3C7C 0021;
+3C7E 0021;
+3C80 0021;
+3C82 0021;
+3C84 0021;
+3C86 0021;
+3C88 0021;
+3C8A 0021;
+3C8C 0021;
+3C8E 0021;
+3C90 0021;
+3C92 0021;
+3C94 0021;
+3C96 0021;
+3C98 0021;
+3C9A 0021;
+3C9C 0021;
+3C9E 0021;
+3CA0 0021;
+3CA2 0021;
+3CA4 0021;
+3CA6 0021;
+3CA8 0021;
+3CAA 0021;
+3CAC 0021;
+3CAE 0021;
+3CB0 0021;
+3CB2 0021;
+3CB4 0021;
+3CB6 0021;
+3CB8 0021;
+3CBA 0021;
+3CBC 0021;
+3CBE 0021;
+3CC0 0021;
+3CC2 0021;
+3CC4 0021;
+3CC6 0021;
+3CC8 0021;
+3CCA 0021;
+3CCC 0021;
+3CCE 0021;
+3CD0 0021;
+3CD2 0021;
+3CD4 0021;
+3CD6 0021;
+3CD8 0021;
+3CDA 0021;
+3CDC 0021;
+3CDE 0021;
+3CE0 0021;
+3CE2 0021;
+3CE4 0021;
+3CE6 0021;
+3CE8 0021;
+3CEA 0021;
+3CEC 0021;
+3CEE 0021;
+3CF0 0021;
+3CF2 0021;
+3CF4 0021;
+3CF6 0021;
+3CF8 0021;
+3CFA 0021;
+3CFC 0021;
+3CFE 0021;
+3D00 0021;
+3D02 0021;
+3D04 0021;
+3D06 0021;
+3D08 0021;
+3D0A 0021;
+3D0C 0021;
+3D0E 0021;
+3D10 0021;
+3D12 0021;
+3D14 0021;
+3D16 0021;
+3D18 0021;
+3D1A 0021;
+3D1C 0021;
+3D1E 0021;
+3D20 0021;
+3D22 0021;
+3D24 0021;
+3D26 0021;
+3D28 0021;
+3D2A 0021;
+3D2C 0021;
+3D2E 0021;
+3D30 0021;
+3D32 0021;
+2F90A 0061;
+3D35 0021;
+3D37 0021;
+3D39 0021;
+3D3B 0021;
+3D3D 0021;
+3D3F 0021;
+3D41 0021;
+3D43 0021;
+3D45 0021;
+3D47 0021;
+3D49 0021;
+3D4B 0021;
+3D4D 0021;
+3D4F 0021;
+3D51 0021;
+3D53 0021;
+3D55 0021;
+3D57 0021;
+3D59 0021;
+3D5B 0021;
+3D5D 0021;
+3D5F 0021;
+3D61 0021;
+3D63 0021;
+3D65 0021;
+3D67 0021;
+3D69 0021;
+3D6B 0021;
+3D6D 0021;
+3D6F 0021;
+3D71 0021;
+3D73 0021;
+3D75 0021;
+3D77 0021;
+3D79 0021;
+3D7B 0021;
+3D7D 0021;
+3D7F 0021;
+3D81 0021;
+3D83 0021;
+3D85 0021;
+3D87 0021;
+3D89 0021;
+3D8B 0021;
+3D8D 0021;
+3D8F 0021;
+3D91 0021;
+3D93 0021;
+3D95 0021;
+2F916 0061;
+3D98 0021;
+3D9A 0021;
+3D9C 0021;
+3D9E 0021;
+3DA0 0021;
+3DA2 0021;
+3DA4 0021;
+3DA6 0021;
+3DA8 0021;
+3DAA 0021;
+3DAC 0021;
+3DAE 0021;
+3DB0 0021;
+3DB2 0021;
+3DB4 0021;
+3DB6 0021;
+3DB8 0021;
+3DBA 0021;
+3DBC 0021;
+3DBE 0021;
+3DC0 0021;
+3DC2 0021;
+3DC4 0021;
+3DC6 0021;
+3DC8 0021;
+3DCA 0021;
+3DCC 0021;
+3DCE 0021;
+3DD0 0021;
+3DD2 0021;
+3DD4 0021;
+3DD6 0021;
+3DD8 0021;
+3DDA 0021;
+3DDC 0021;
+3DDE 0021;
+3DE0 0021;
+3DE2 0021;
+3DE4 0021;
+3DE6 0021;
+3DE8 0021;
+3DEA 0021;
+3DEC 0021;
+3DEE 0021;
+3DF0 0021;
+3DF2 0021;
+3DF4 0021;
+3DF6 0021;
+3DF8 0021;
+3DFA 0021;
+3DFC 0021;
+3DFE 0021;
+3E00 0021;
+3E02 0021;
+3E04 0021;
+3E06 0021;
+3E08 0021;
+3E0A 0021;
+3E0C 0021;
+3E0E 0021;
+3E10 0021;
+3E12 0021;
+3E14 0021;
+3E16 0021;
+3E18 0021;
+3E1A 0021;
+3E1C 0021;
+3E1E 0021;
+3E20 0021;
+3E22 0021;
+3E24 0021;
+3E26 0021;
+3E28 0021;
+3E2A 0021;
+3E2C 0021;
+3E2E 0021;
+3E30 0021;
+3E32 0021;
+3E34 0021;
+3E36 0021;
+3E38 0021;
+3E3A 0021;
+3E3C 0021;
+3E3E 0021;
+3E40 0021;
+3E42 0021;
+3E44 0021;
+3E46 0021;
+3E48 0021;
+3E4A 0021;
+3E4C 0021;
+3E4E 0021;
+3E50 0021;
+3E52 0021;
+3E54 0021;
+3E56 0021;
+3E58 0021;
+3E5A 0021;
+3E5C 0021;
+3E5E 0021;
+3E60 0021;
+3E62 0021;
+3E64 0021;
+3E66 0021;
+3E68 0021;
+3E6A 0021;
+3E6C 0021;
+3E6E 0021;
+3E70 0021;
+3E72 0021;
+3E74 0021;
+3E76 0021;
+3E78 0021;
+3E7A 0021;
+3E7C 0021;
+3E7E 0021;
+3E80 0021;
+3E82 0021;
+3E84 0021;
+3E86 0021;
+3E88 0021;
+3E8A 0021;
+3E8C 0021;
+3E8E 0021;
+3E90 0021;
+3E92 0021;
+3E94 0021;
+3E96 0021;
+3E98 0021;
+3E9A 0021;
+3E9C 0021;
+3E9E 0021;
+3EA0 0021;
+3EA2 0021;
+3EA4 0021;
+3EA6 0021;
+3EA8 0021;
+3EAA 0021;
+3EAC 0021;
+3EAD 0021;
+3EAF 0021;
+3EB1 0021;
+3EB3 0021;
+3EB5 0021;
+3EB7 0021;
+2F92D 003F;
+3EB9 0021;
+3EBB 0021;
+3EBD 0021;
+3EBF 0021;
+3EC1 0021;
+3EC3 0021;
+3EC5 0021;
+3EC7 0021;
+3EC9 0021;
+3ECB 0021;
+3ECD 0021;
+3ECF 0021;
+3ED1 0021;
+3ED3 0021;
+3ED5 0021;
+3ED7 0021;
+3ED9 0021;
+3EDB 0021;
+3EDD 0021;
+3EDF 0021;
+3EE1 0021;
+3EE3 0021;
+3EE5 0021;
+3EE7 0021;
+3EE9 0021;
+3EEB 0021;
+3EED 0021;
+3EEF 0021;
+3EF1 0021;
+3EF3 0021;
+3EF5 0021;
+3EF7 0021;
+3EF9 0021;
+3EFB 0021;
+3EFD 0021;
+3EFF 0021;
+3F01 0021;
+3F03 0021;
+3F05 0021;
+3F07 0021;
+3F09 0021;
+3F0B 0021;
+3F0D 0021;
+3F0F 0021;
+3F11 0021;
+3F13 0021;
+3F15 0021;
+3F17 0021;
+3F19 0021;
+3F1B 0021;
+3F1C 0021;
+3F1E 0021;
+3F20 0021;
+3F22 0021;
+3F24 0021;
+3F26 0021;
+3F28 0021;
+3F2A 0021;
+3F2C 0021;
+3F2E 0021;
+3F30 0021;
+3F32 0021;
+3F34 0021;
+3F36 0021;
+3F38 0021;
+3F3A 0021;
+3F3C 0021;
+3F3E 0021;
+3F40 0021;
+3F42 0021;
+3F44 0021;
+3F46 0021;
+3F48 0021;
+3F4A 0021;
+3F4C 0021;
+3F4E 0021;
+3F50 0021;
+3F52 0021;
+3F54 0021;
+3F56 0021;
+3F58 0021;
+3F5A 0021;
+3F5C 0021;
+3F5E 0021;
+3F60 0021;
+3F62 0021;
+3F64 0021;
+3F66 0021;
+3F68 0021;
+3F6A 0021;
+3F6C 0021;
+3F6E 0021;
+3F70 0021;
+3F72 0021;
+3F74 0021;
+3F76 0021;
+3F78 0021;
+3F7A 0021;
+3F7C 0021;
+3F7E 0021;
+3F80 0021;
+3F82 0021;
+3F84 0021;
+3F86 0021;
+3F88 0021;
+3F8A 0021;
+3F8C 0021;
+3F8E 0021;
+3F90 0021;
+3F92 0021;
+3F94 0021;
+3F96 0021;
+3F98 0021;
+3F9A 0021;
+3F9C 0021;
+3F9E 0021;
+3FA0 0021;
+3FA2 0021;
+3FA4 0021;
+3FA6 0021;
+3FA8 0021;
+3FAA 0021;
+3FAC 0021;
+3FAE 0021;
+3FB0 0021;
+3FB2 0021;
+3FB4 0021;
+3FB6 0021;
+3FB8 0021;
+3FBA 0021;
+3FBC 0021;
+3FBE 0021;
+3FC0 0021;
+3FC2 0021;
+3FC4 0021;
+3FC6 0021;
+3FC8 0021;
+3FCA 0021;
+3FCC 0021;
+3FCE 0021;
+3FD0 0021;
+3FD2 0021;
+3FD4 0021;
+3FD6 0021;
+3FD8 0021;
+3FDA 0021;
+3FDC 0021;
+3FDE 0021;
+3FE0 0021;
+3FE2 0021;
+3FE4 0021;
+3FE6 0021;
+3FE8 0021;
+3FEA 0021;
+3FEC 0021;
+3FEE 0021;
+3FF0 0021;
+3FF2 0021;
+3FF4 0021;
+3FF6 0021;
+3FF8 0021;
+3FFA 0021;
+3FFC 0021;
+3FFD 0021;
+3FFF 0021;
+4001 0021;
+4003 0021;
+4005 0021;
+4007 0021;
+2F93F 0061;
+400A 0021;
+400C 0021;
+400E 0021;
+4010 0021;
+4012 0021;
+4014 0021;
+4016 0021;
+4018 0021;
+4019 0021;
+401B 0021;
+401D 0021;
+401F 0021;
+4021 0021;
+4023 0021;
+4025 0021;
+4027 0021;
+4029 0021;
+402B 0021;
+402D 0021;
+402F 0021;
+4031 0021;
+4033 0021;
+4035 0021;
+4037 0021;
+4039 0021;
+FAD4 0041;
+403B 0021;
+403D 0021;
+403F 0021;
+4041 0021;
+4043 0021;
+4045 0021;
+2F94B 0061;
+4048 0021;
+404A 0021;
+404C 0021;
+404E 0021;
+4050 0021;
+4052 0021;
+4054 0021;
+4056 0021;
+4058 0021;
+405A 0021;
+405C 0021;
+405E 0021;
+4060 0021;
+4062 0021;
+4064 0021;
+4066 0021;
+4068 0021;
+406A 0021;
+406C 0021;
+406E 0021;
+4070 0021;
+4072 0021;
+4074 0021;
+4076 0021;
+4078 0021;
+407A 0021;
+407C 0021;
+407E 0021;
+4080 0021;
+4082 0021;
+4084 0021;
+4086 0021;
+4088 0021;
+408A 0021;
+408C 0021;
+408E 0021;
+4090 0021;
+4092 0021;
+4094 0021;
+4096 0021;
+4097 0021;
+4099 0021;
+409B 0021;
+409D 0021;
+409F 0021;
+40A1 0021;
+40A3 0021;
+40A5 0021;
+40A7 0021;
+40A9 0021;
+40AB 0021;
+40AD 0021;
+40AF 0021;
+40B1 0021;
+40B3 0021;
+40B5 0021;
+40B7 0021;
+40B9 0021;
+40BB 0021;
+40BD 0021;
+40BF 0021;
+40C1 0021;
+40C3 0021;
+40C5 0021;
+40C7 0021;
+40C9 0021;
+40CB 0021;
+40CD 0021;
+40CF 0021;
+40D1 0021;
+40D3 0021;
+40D5 0021;
+40D7 0021;
+40D9 0021;
+40DB 0021;
+40DD 0021;
+40DF 0021;
+40E1 0021;
+40E3 0021;
+40E4 0021;
+40E6 0021;
+40E8 0021;
+40EA 0021;
+40EC 0021;
+40EE 0021;
+40F0 0021;
+40F2 0021;
+40F4 0021;
+40F6 0021;
+40F8 0021;
+40FA 0021;
+40FC 0021;
+40FE 0021;
+4100 0021;
+4102 0021;
+4104 0021;
+4106 0021;
+4108 0021;
+410A 0021;
+410C 0021;
+410E 0021;
+4110 0021;
+4112 0021;
+4114 0021;
+4116 0021;
+4118 0021;
+411A 0021;
+411C 0021;
+411E 0021;
+4120 0021;
+4122 0021;
+4124 0021;
+4126 0021;
+4128 0021;
+412A 0021;
+412C 0021;
+412E 0021;
+2F958 0061;
+4131 0021;
+4133 0021;
+4135 0021;
+4137 0021;
+4139 0021;
+413B 0021;
+413D 0021;
+413F 0021;
+4141 0021;
+4143 0021;
+4145 0021;
+4147 0021;
+4149 0021;
+414B 0021;
+414D 0021;
+414F 0021;
+4151 0021;
+4153 0021;
+4155 0021;
+4157 0021;
+4159 0021;
+415B 0021;
+415D 0021;
+415F 0021;
+4161 0021;
+4163 0021;
+4165 0021;
+4167 0021;
+4169 0021;
+416B 0021;
+416D 0021;
+416F 0021;
+4171 0021;
+4173 0021;
+4175 0021;
+4177 0021;
+4179 0021;
+417B 0021;
+417D 0021;
+417F 0021;
+4181 0021;
+4183 0021;
+4185 0021;
+4187 0021;
+4189 0021;
+418B 0021;
+418D 0021;
+418F 0021;
+4191 0021;
+4193 0021;
+4195 0021;
+4197 0021;
+4199 0021;
+419B 0021;
+419D 0021;
+419F 0021;
+41A1 0021;
+41A3 0021;
+41A5 0021;
+41A7 0021;
+41A9 0021;
+41AB 0021;
+41AD 0021;
+41AF 0021;
+41B1 0021;
+41B3 0021;
+41B5 0021;
+41B7 0021;
+41B9 0021;
+41BB 0021;
+41BD 0021;
+41BF 0021;
+41C1 0021;
+41C3 0021;
+41C5 0021;
+41C7 0021;
+41C9 0021;
+41CB 0021;
+41CD 0021;
+41CF 0021;
+41D1 0021;
+41D3 0021;
+41D5 0021;
+41D7 0021;
+41D9 0021;
+41DB 0021;
+41DD 0021;
+41DF 0021;
+41E1 0021;
+41E3 0021;
+41E5 0021;
+41E7 0021;
+41E9 0021;
+41EB 0021;
+41ED 0021;
+41EF 0021;
+41F1 0021;
+41F3 0021;
+41F5 0021;
+41F7 0021;
+41F9 0021;
+41FB 0021;
+41FD 0021;
+41FF 0021;
+4201 0021;
+2F960 0061;
+4204 0021;
+4206 0021;
+4208 0021;
+420A 0021;
+420C 0021;
+420E 0021;
+4210 0021;
+4212 0021;
+4214 0021;
+4216 0021;
+4218 0021;
+421A 0021;
+421C 0021;
+421E 0021;
+4220 0021;
+4222 0021;
+4224 0021;
+4226 0021;
+2F964 0061;
+4229 0021;
+422B 0021;
+422D 0021;
+422F 0021;
+4231 0021;
+4233 0021;
+4235 0021;
+4237 0021;
+4239 0021;
+423B 0021;
+423D 0021;
+423F 0021;
+4241 0021;
+4243 0021;
+4245 0021;
+4247 0021;
+4249 0021;
+424B 0021;
+424D 0021;
+424F 0021;
+4251 0021;
+4253 0021;
+4255 0021;
+4257 0021;
+4259 0021;
+425B 0021;
+425D 0021;
+425F 0021;
+4261 0021;
+4263 0021;
+4265 0021;
+4267 0021;
+4269 0021;
+426B 0021;
+426D 0021;
+426F 0021;
+4271 0021;
+4273 0021;
+4275 0021;
+4277 0021;
+4279 0021;
+427B 0021;
+427D 0021;
+427F 0021;
+4281 0021;
+4283 0021;
+4285 0021;
+4287 0021;
+4289 0021;
+428B 0021;
+428D 0021;
+428F 0021;
+4291 0021;
+4293 0021;
+4295 0021;
+4297 0021;
+4299 0021;
+429B 0021;
+429D 0021;
+429F 0021;
+2F967 0061;
+42A2 0021;
+42A4 0021;
+42A6 0021;
+42A8 0021;
+42AA 0021;
+42AC 0021;
+42AE 0021;
+42B0 0021;
+42B2 0021;
+42B4 0021;
+42B6 0021;
+42B8 0021;
+42BA 0021;
+42BC 0021;
+42BE 0021;
+42C0 0021;
+42C2 0021;
+42C4 0021;
+42C6 0021;
+42C8 0021;
+42CA 0021;
+42CC 0021;
+42CE 0021;
+42D0 0021;
+42D2 0021;
+42D4 0021;
+42D6 0021;
+42D8 0021;
+42DA 0021;
+42DC 0021;
+42DE 0021;
+42E0 0021;
+42E2 0021;
+42E4 0021;
+42E6 0021;
+42E8 0021;
+42EA 0021;
+42EC 0021;
+42EE 0021;
+42F0 0021;
+42F2 0021;
+42F4 0021;
+42F6 0021;
+42F8 0021;
+42FA 0021;
+42FC 0021;
+42FE 0021;
+4300 0021;
+2F96D 0061;
+4303 0021;
+4305 0021;
+4307 0021;
+4309 0021;
+430B 0021;
+430D 0021;
+430F 0021;
+4311 0021;
+4313 0021;
+4315 0021;
+4317 0021;
+4319 0021;
+431B 0021;
+431D 0021;
+431F 0021;
+4321 0021;
+4323 0021;
+4325 0021;
+4327 0021;
+4329 0021;
+432B 0021;
+432D 0021;
+432F 0021;
+4331 0021;
+4333 0021;
+2F971 0061;
+4336 0021;
+4338 0021;
+433A 0021;
+433C 0021;
+433E 0021;
+4340 0021;
+4342 0021;
+4344 0021;
+4346 0021;
+4348 0021;
+434A 0021;
+434C 0021;
+434E 0021;
+4350 0021;
+4352 0021;
+4354 0021;
+4356 0021;
+4358 0021;
+2F974 0061;
+435B 0021;
+435D 0021;
+435F 0021;
+4361 0021;
+4363 0021;
+4365 0021;
+4367 0021;
+4369 0021;
+436B 0021;
+436D 0021;
+436F 0021;
+4371 0021;
+4373 0021;
+4375 0021;
+4377 0021;
+4379 0021;
+437B 0021;
+437D 0021;
+437F 0021;
+4381 0021;
+4383 0021;
+4385 0021;
+4387 0021;
+4389 0021;
+438B 0021;
+438D 0021;
+438F 0021;
+4391 0021;
+4393 0021;
+4395 0021;
+4397 0021;
+4399 0021;
+439B 0021;
+439D 0021;
+439F 0021;
+43A1 0021;
+43A3 0021;
+43A5 0021;
+43A7 0021;
+43A9 0021;
+43AB 0021;
+43AD 0021;
+43AF 0021;
+43B1 0021;
+43B3 0021;
+43B5 0021;
+43B7 0021;
+43B9 0021;
+43BB 0021;
+43BD 0021;
+43BF 0021;
+43C1 0021;
+43C3 0021;
+43C5 0021;
+43C7 0021;
+43C9 0021;
+43CB 0021;
+43CD 0021;
+43CF 0021;
+43D1 0021;
+43D3 0021;
+43D5 0021;
+43D6 0021;
+43D8 0021;
+2F8D7 0061;
+43DB 0021;
+43DD 0021;
+43DF 0021;
+43E1 0021;
+43E3 0021;
+43E5 0021;
+43E7 0021;
+43E9 0021;
+43EB 0021;
+43ED 0021;
+43EF 0021;
+43F1 0021;
+43F3 0021;
+43F5 0021;
+43F7 0021;
+43F9 0021;
+43FB 0021;
+43FD 0021;
+43FF 0021;
+4401 0021;
+4403 0021;
+4405 0021;
+4407 0021;
+4409 0021;
+440B 0021;
+440C 0021;
+440E 0021;
+4410 0021;
+4412 0021;
+4414 0021;
+4416 0021;
+4418 0021;
+441A 0021;
+441C 0021;
+441E 0021;
+4420 0021;
+4422 0021;
+4424 0021;
+4426 0021;
+4428 0021;
+442A 0021;
+442C 0021;
+442E 0021;
+4430 0021;
+4432 0021;
+4434 0021;
+4436 0021;
+4438 0021;
+443A 0021;
+443C 0021;
+443E 0021;
+4440 0021;
+4442 0021;
+4444 0021;
+4446 0021;
+4448 0021;
+444A 0021;
+444C 0021;
+444E 0021;
+4450 0021;
+4452 0021;
+4454 0021;
+4456 0021;
+4458 0021;
+445A 0021;
+445C 0021;
+445E 0021;
+4460 0021;
+4462 0021;
+4464 0021;
+4466 0021;
+4468 0021;
+446A 0021;
+2F98E 0061;
+446D 0021;
+446F 0021;
+4471 0021;
+4473 0021;
+4475 0021;
+4477 0021;
+4479 0021;
+447B 0021;
+447D 0021;
+447F 0021;
+4481 0021;
+4483 0021;
+4485 0021;
+4487 0021;
+4489 0021;
+448B 0021;
+448D 0021;
+448F 0021;
+4491 0021;
+4493 0021;
+4495 0021;
+4497 0021;
+4499 0021;
+449B 0021;
+449D 0021;
+449F 0021;
+44A1 0021;
+44A3 0021;
+44A5 0021;
+44A7 0021;
+44A9 0021;
+44AB 0021;
+44AD 0021;
+44AF 0021;
+44B1 0021;
+44B3 0021;
+44B5 0021;
+44B7 0021;
+44B9 0021;
+44BB 0021;
+44BD 0021;
+44BF 0021;
+44C1 0021;
+44C3 0021;
+44C5 0021;
+44C7 0021;
+44C9 0021;
+44CB 0021;
+44CD 0021;
+44CF 0021;
+44D1 0021;
+44D3 0021;
+44D5 0021;
+44D7 0021;
+44D9 0021;
+44DB 0021;
+44DD 0021;
+44DF 0021;
+44E1 0021;
+44E3 0021;
+44E5 0021;
+44E7 0021;
+44E9 0021;
+44EB 0021;
+44ED 0021;
+44EF 0021;
+44F1 0021;
+44F3 0021;
+44F5 0021;
+44F7 0021;
+44F9 0021;
+44FB 0021;
+44FD 0021;
+44FF 0021;
+4501 0021;
+4503 0021;
+4505 0021;
+4507 0021;
+4509 0021;
+450B 0021;
+450D 0021;
+450F 0021;
+4511 0021;
+4513 0021;
+4515 0021;
+4517 0021;
+4519 0021;
+451B 0021;
+451D 0021;
+451F 0021;
+4521 0021;
+4523 0021;
+4525 0021;
+4527 0021;
+4529 0021;
+452B 0021;
+452C 0021;
+452E 0021;
+4530 0021;
+4532 0021;
+4534 0021;
+4536 0021;
+4538 0021;
+453A 0021;
+453C 0021;
+453E 0021;
+4540 0021;
+4542 0021;
+4544 0021;
+4546 0021;
+4548 0021;
+454A 0021;
+454C 0021;
+454E 0021;
+4550 0021;
+4552 0021;
+4554 0021;
+4556 0021;
+4558 0021;
+455A 0021;
+455C 0021;
+2F9AE 0061;
+455F 0021;
+4561 0021;
+4562 0021;
+4564 0021;
+4566 0021;
+4568 0021;
+456A 0021;
+2F9B2 0061;
+456D 0021;
+456F 0021;
+4571 0021;
+4573 0021;
+4575 0021;
+4577 0021;
+4579 0021;
+457B 0021;
+457D 0021;
+457F 0021;
+4581 0021;
+4583 0021;
+4585 0021;
+4587 0021;
+4589 0021;
+458B 0021;
+458D 0021;
+458F 0021;
+4591 0021;
+4593 0021;
+4595 0021;
+4597 0021;
+4599 0021;
+459B 0021;
+459D 0021;
+459F 0021;
+45A1 0021;
+45A3 0021;
+45A5 0021;
+45A7 0021;
+45A9 0021;
+45AB 0021;
+45AD 0021;
+45AF 0021;
+45B1 0021;
+45B3 0021;
+45B5 0021;
+45B7 0021;
+45B9 0021;
+45BB 0021;
+45BD 0021;
+45BF 0021;
+45C1 0021;
+45C3 0021;
+45C5 0021;
+45C7 0021;
+45C9 0021;
+45CB 0021;
+45CD 0021;
+45CF 0021;
+45D1 0021;
+45D3 0021;
+45D5 0021;
+45D7 0021;
+45D8 0021;
+45DA 0021;
+45DC 0021;
+45DE 0021;
+45E0 0021;
+45E2 0021;
+45E4 0021;
+45E6 0021;
+45E8 0021;
+45EA 0021;
+45EC 0021;
+45EE 0021;
+45F0 0021;
+45F2 0021;
+45F4 0021;
+45F6 0021;
+45F8 0021;
+2F9C2 0061;
+45FB 0021;
+45FD 0021;
+45FF 0021;
+4601 0021;
+4603 0021;
+4605 0021;
+4607 0021;
+4609 0021;
+460B 0021;
+460D 0021;
+460F 0021;
+4611 0021;
+4613 0021;
+4615 0021;
+4617 0021;
+4619 0021;
+461B 0021;
+461D 0021;
+461F 0021;
+4621 0021;
+4623 0021;
+4625 0021;
+4627 0021;
+4629 0021;
+462B 0021;
+462D 0021;
+462F 0021;
+4631 0021;
+4633 0021;
+4635 0021;
+4636 0021;
+4638 0021;
+463A 0021;
+463C 0021;
+463E 0021;
+4640 0021;
+4642 0021;
+4644 0021;
+4646 0021;
+4648 0021;
+464A 0021;
+464C 0021;
+464E 0021;
+4650 0021;
+4652 0021;
+4654 0021;
+4656 0021;
+4658 0021;
+465A 0021;
+465C 0021;
+465E 0021;
+4660 0021;
+4662 0021;
+4664 0021;
+4666 0021;
+4668 0021;
+466A 0021;
+466C 0021;
+466E 0021;
+4670 0021;
+4672 0021;
+4674 0021;
+4676 0021;
+4678 0021;
+467A 0021;
+467C 0021;
+467E 0021;
+4680 0021;
+4682 0021;
+4684 0021;
+4686 0021;
+4688 0021;
+468A 0021;
+468C 0021;
+468E 0021;
+4690 0021;
+4692 0021;
+4694 0021;
+4696 0021;
+4698 0021;
+469A 0021;
+469C 0021;
+469E 0021;
+46A0 0021;
+46A2 0021;
+46A4 0021;
+46A6 0021;
+46A8 0021;
+46AA 0021;
+46AC 0021;
+46AE 0021;
+46B0 0021;
+46B2 0021;
+46B4 0021;
+46B6 0021;
+46B8 0021;
+46BA 0021;
+46BC 0021;
+46BE 0021;
+46BF 0021;
+46C1 0021;
+46C3 0021;
+46C5 0021;
+46C7 0021;
+46C8 0021;
+46CA 0021;
+46CC 0021;
+46CE 0021;
+46D0 0021;
+46D2 0021;
+46D4 0021;
+46D6 0021;
+46D8 0021;
+46DA 0021;
+46DC 0021;
+46DE 0021;
+46E0 0021;
+46E2 0021;
+46E4 0021;
+46E6 0021;
+46E8 0021;
+46EA 0021;
+46EC 0021;
+46EE 0021;
+46F0 0021;
+46F2 0021;
+46F4 0021;
+46F6 0021;
+46F8 0021;
+46FA 0021;
+46FC 0021;
+46FE 0021;
+4700 0021;
+4702 0021;
+4704 0021;
+4706 0021;
+4708 0021;
+470A 0021;
+470C 0021;
+470E 0021;
+4710 0021;
+4712 0021;
+4714 0021;
+4716 0021;
+4718 0021;
+471A 0021;
+471C 0021;
+471E 0021;
+4720 0021;
+4722 0021;
+4724 0021;
+4726 0021;
+4728 0021;
+472A 0021;
+472C 0021;
+472E 0021;
+4730 0021;
+4732 0021;
+4734 0021;
+4736 0021;
+4738 0021;
+473A 0021;
+473C 0021;
+473E 0021;
+4740 0021;
+4742 0021;
+4744 0021;
+4746 0021;
+4748 0021;
+474A 0021;
+474C 0021;
+474E 0021;
+4750 0021;
+4752 0021;
+4754 0021;
+4756 0021;
+4758 0021;
+475A 0021;
+475C 0021;
+475E 0021;
+4760 0021;
+4762 0021;
+4764 0021;
+4766 0021;
+4768 0021;
+476A 0021;
+476C 0021;
+476E 0021;
+4770 0021;
+4772 0021;
+4774 0021;
+4776 0021;
+4778 0021;
+477A 0021;
+477C 0021;
+477E 0021;
+4780 0021;
+4782 0021;
+4784 0021;
+4786 0021;
+4788 0021;
+478A 0021;
+478C 0021;
+478E 0021;
+4790 0021;
+4792 0021;
+4794 0021;
+4796 0021;
+4798 0021;
+479A 0021;
+479C 0021;
+479E 0021;
+47A0 0021;
+47A2 0021;
+47A4 0021;
+47A6 0021;
+47A8 0021;
+47AA 0021;
+47AC 0021;
+47AE 0021;
+47B0 0021;
+47B2 0021;
+47B4 0021;
+47B6 0021;
+47B8 0021;
+47BA 0021;
+47BC 0021;
+47BE 0021;
+47C0 0021;
+47C2 0021;
+47C4 0021;
+47C6 0021;
+47C8 0021;
+47CA 0021;
+47CC 0021;
+47CE 0021;
+47D0 0021;
+47D2 0021;
+47D4 0021;
+47D6 0021;
+47D8 0021;
+47DA 0021;
+47DC 0021;
+47DE 0021;
+47E0 0021;
+47E2 0021;
+47E4 0021;
+47E6 0021;
+47E8 0021;
+47EA 0021;
+47EC 0021;
+47EE 0021;
+47F0 0021;
+47F2 0021;
+47F4 0021;
+47F6 0021;
+47F8 0021;
+47FA 0021;
+47FC 0021;
+47FE 0021;
+4800 0021;
+4802 0021;
+4804 0021;
+4806 0021;
+4808 0021;
+480A 0021;
+480C 0021;
+480E 0021;
+4810 0021;
+4812 0021;
+4814 0021;
+4816 0021;
+4818 0021;
+481A 0021;
+481C 0021;
+481E 0021;
+4820 0021;
+4822 0021;
+4824 0021;
+4826 0021;
+4828 0021;
+482A 0021;
+482C 0021;
+482E 0021;
+4830 0021;
+4832 0021;
+4834 0021;
+4836 0021;
+4838 0021;
+483A 0021;
+483C 0021;
+483E 0021;
+4840 0021;
+4842 0021;
+4844 0021;
+4846 0021;
+4848 0021;
+484A 0021;
+484C 0021;
+484E 0021;
+4850 0021;
+4852 0021;
+4854 0021;
+4856 0021;
+4858 0021;
+485A 0021;
+485C 0021;
+485E 0021;
+4860 0021;
+4862 0021;
+4864 0021;
+4866 0021;
+4868 0021;
+486A 0021;
+486C 0021;
+486E 0021;
+4870 0021;
+4872 0021;
+4874 0021;
+4876 0021;
+4878 0021;
+487A 0021;
+487C 0021;
+487E 0021;
+4880 0021;
+4882 0021;
+4884 0021;
+4886 0021;
+4888 0021;
+488A 0021;
+488C 0021;
+488E 0021;
+4890 0021;
+4892 0021;
+4894 0021;
+4896 0021;
+4898 0021;
+489A 0021;
+489C 0021;
+489E 0021;
+48A0 0021;
+48A2 0021;
+48A4 0021;
+48A6 0021;
+48A8 0021;
+48AA 0021;
+48AC 0021;
+48AE 0021;
+48B0 0021;
+48B2 0021;
+48B4 0021;
+48B6 0021;
+48B8 0021;
+48BA 0021;
+48BC 0021;
+48BE 0021;
+48C0 0021;
+48C2 0021;
+48C4 0021;
+48C6 0021;
+48C8 0021;
+48CA 0021;
+48CC 0021;
+48CE 0021;
+48D0 0021;
+48D2 0021;
+48D4 0021;
+48D6 0021;
+48D8 0021;
+48DA 0021;
+48DC 0021;
+48DE 0021;
+48E0 0021;
+48E2 0021;
+48E4 0021;
+48E6 0021;
+48E8 0021;
+48EA 0021;
+48EC 0021;
+48EE 0021;
+48F0 0021;
+48F2 0021;
+48F4 0021;
+48F6 0021;
+48F8 0021;
+48FA 0021;
+48FC 0021;
+48FE 0021;
+4900 0021;
+4902 0021;
+4904 0021;
+4906 0021;
+4908 0021;
+490A 0021;
+490C 0021;
+490E 0021;
+4910 0021;
+4912 0021;
+4914 0021;
+4916 0021;
+4918 0021;
+491A 0021;
+491C 0021;
+491E 0021;
+4920 0021;
+4922 0021;
+4924 0021;
+4926 0021;
+4928 0021;
+492A 0021;
+492C 0021;
+492E 0021;
+4930 0021;
+4932 0021;
+4934 0021;
+4936 0021;
+4938 0021;
+493A 0021;
+493C 0021;
+493E 0021;
+4940 0021;
+4942 0021;
+4944 0021;
+4946 0021;
+4948 0021;
+494A 0021;
+494C 0021;
+494E 0021;
+4950 0021;
+4952 0021;
+4954 0021;
+4956 0021;
+4958 0021;
+495A 0021;
+495C 0021;
+495E 0021;
+4960 0021;
+4962 0021;
+4964 0021;
+4966 0021;
+4968 0021;
+496A 0021;
+496C 0021;
+496E 0021;
+4970 0021;
+4972 0021;
+4974 0021;
+4976 0021;
+4978 0021;
+497A 0021;
+497C 0021;
+497E 0021;
+4980 0021;
+4982 0021;
+4984 0021;
+4986 0021;
+4988 0021;
+498A 0021;
+498C 0021;
+498E 0021;
+4990 0021;
+4992 0021;
+4994 0021;
+2F9EF 0061;
+4997 0021;
+4999 0021;
+499B 0021;
+499D 0021;
+499F 0021;
+49A1 0021;
+49A3 0021;
+49A5 0021;
+49A7 0021;
+49A9 0021;
+49AB 0021;
+49AD 0021;
+49AF 0021;
+49B1 0021;
+49B3 0021;
+49B5 0021;
+49B7 0021;
+49B9 0021;
+49BB 0021;
+49BD 0021;
+49BF 0021;
+49C1 0021;
+49C3 0021;
+49C5 0021;
+49C7 0021;
+49C9 0021;
+49CB 0021;
+49CD 0021;
+49CF 0021;
+49D1 0021;
+49D3 0021;
+49D5 0021;
+49D7 0021;
+49D9 0021;
+49DB 0021;
+49DD 0021;
+49DF 0021;
+49E1 0021;
+49E3 0021;
+49E5 0021;
+2F9F2 0061;
+49E8 0021;
+49EA 0021;
+49EC 0021;
+49EE 0021;
+49F0 0021;
+49F2 0021;
+49F4 0021;
+49F6 0021;
+49F8 0021;
+49FA 0021;
+49FC 0021;
+49FE 0021;
+4A00 0021;
+4A02 0021;
+4A04 0021;
+4A06 0021;
+4A08 0021;
+4A0A 0021;
+4A0C 0021;
+4A0E 0021;
+4A10 0021;
+4A12 0021;
+4A14 0021;
+4A16 0021;
+4A18 0021;
+4A1A 0021;
+4A1C 0021;
+4A1E 0021;
+4A20 0021;
+4A22 0021;
+4A24 0021;
+4A26 0021;
+4A28 0021;
+4A2A 0021;
+4A2C 0021;
+4A2E 0021;
+4A30 0021;
+4A32 0021;
+4A34 0021;
+4A36 0021;
+4A38 0021;
+4A3A 0021;
+4A3C 0021;
+4A3E 0021;
+4A40 0021;
+4A42 0021;
+4A44 0021;
+4A46 0021;
+4A48 0021;
+4A4A 0021;
+4A4C 0021;
+4A4E 0021;
+4A50 0021;
+4A52 0021;
+4A54 0021;
+4A56 0021;
+4A58 0021;
+4A5A 0021;
+4A5C 0021;
+4A5E 0021;
+4A60 0021;
+4A62 0021;
+4A64 0021;
+4A66 0021;
+4A68 0021;
+4A6A 0021;
+4A6C 0021;
+4A6E 0021;
+4A6F 0021;
+4A71 0021;
+4A73 0021;
+4A75 0021;
+2F9F9 0061;
+4A78 0021;
+4A7A 0021;
+4A7C 0021;
+4A7E 0021;
+4A80 0021;
+4A82 0021;
+4A84 0021;
+4A86 0021;
+4A88 0021;
+4A8A 0021;
+4A8C 0021;
+4A8E 0021;
+4A90 0021;
+4A92 0021;
+4A94 0021;
+4A96 0021;
+4A98 0021;
+4A9A 0021;
+4A9C 0021;
+4A9E 0021;
+4AA0 0021;
+4AA2 0021;
+4AA4 0021;
+4AA6 0021;
+4AA8 0021;
+4AAA 0021;
+4AAC 0021;
+4AAE 0021;
+4AB0 0021;
+4AB2 0021;
+4AB3 0021;
+4AB5 0021;
+4AB7 0021;
+4AB9 0021;
+4ABB 0021;
+4ABD 0021;
+4ABF 0021;
+4AC1 0021;
+4AC3 0021;
+4AC5 0021;
+4AC7 0021;
+4AC9 0021;
+4ACB 0021;
+4ACD 0021;
+4ACF 0021;
+4AD1 0021;
+4AD3 0021;
+4AD5 0021;
+4AD7 0021;
+4AD9 0021;
+4ADB 0021;
+4ADD 0021;
+4ADF 0021;
+4AE1 0021;
+4AE3 0021;
+4AE5 0021;
+4AE7 0021;
+4AE9 0021;
+4AEB 0021;
+4AED 0021;
+4AEF 0021;
+4AF1 0021;
+4AF3 0021;
+4AF5 0021;
+4AF7 0021;
+4AF9 0021;
+4AFB 0021;
+4AFD 0021;
+4AFF 0021;
+4B01 0021;
+4B03 0021;
+4B05 0021;
+4B07 0021;
+4B09 0021;
+4B0B 0021;
+4B0D 0021;
+4B0F 0021;
+4B11 0021;
+4B13 0021;
+4B15 0021;
+4B17 0021;
+4B19 0021;
+4B1B 0021;
+4B1D 0021;
+4B1F 0021;
+4B21 0021;
+4B23 0021;
+4B25 0021;
+4B27 0021;
+4B29 0021;
+4B2B 0021;
+4B2D 0021;
+4B2F 0021;
+4B31 0021;
+4B33 0021;
+4B34 0021;
+4B36 0021;
+4B38 0021;
+4B3A 0021;
+4B3C 0021;
+4B3E 0021;
+4B40 0021;
+4B42 0021;
+4B44 0021;
+4B46 0021;
+4B48 0021;
+4B4A 0021;
+4B4C 0021;
+4B4E 0021;
+4B50 0021;
+4B52 0021;
+4B54 0021;
+4B56 0021;
+4B58 0021;
+4B5A 0021;
+4B5C 0021;
+4B5E 0021;
+4B60 0021;
+4B62 0021;
+4B64 0021;
+4B66 0021;
+4B68 0021;
+4B6A 0021;
+4B6C 0021;
+4B6E 0021;
+4B70 0021;
+4B72 0021;
+4B74 0021;
+4B76 0021;
+4B78 0021;
+4B7A 0021;
+4B7C 0021;
+4B7E 0021;
+4B80 0021;
+4B82 0021;
+4B84 0021;
+4B86 0021;
+4B88 0021;
+4B8A 0021;
+4B8C 0021;
+4B8E 0021;
+4B90 0021;
+4B92 0021;
+4B94 0021;
+4B96 0021;
+4B98 0021;
+4B9A 0021;
+4B9C 0021;
+4B9E 0021;
+4BA0 0021;
+4BA2 0021;
+4BA4 0021;
+4BA6 0021;
+4BA8 0021;
+4BAA 0021;
+4BAC 0021;
+4BAE 0021;
+4BB0 0021;
+4BB2 0021;
+4BB4 0021;
+4BB6 0021;
+4BB8 0021;
+4BBA 0021;
+4BBC 0021;
+4BBE 0021;
+4BC0 0021;
+4BC2 0021;
+4BC4 0021;
+4BC6 0021;
+4BC8 0021;
+4BCA 0021;
+4BCC 0021;
+4BCE 0021;
+4BCF 0021;
+4BD1 0021;
+4BD3 0021;
+4BD5 0021;
+4BD7 0021;
+4BD9 0021;
+4BDB 0021;
+4BDD 0021;
+4BDF 0021;
+4BE1 0021;
+4BE3 0021;
+4BE5 0021;
+4BE7 0021;
+4BE9 0021;
+4BEB 0021;
+4BED 0021;
+4BEF 0021;
+4BF1 0021;
+4BF3 0021;
+4BF5 0021;
+4BF7 0021;
+4BF9 0021;
+4BFB 0021;
+4BFD 0021;
+4BFF 0021;
+4C01 0021;
+4C03 0021;
+4C05 0021;
+4C07 0021;
+4C09 0021;
+4C0B 0021;
+4C0D 0021;
+4C0F 0021;
+4C11 0021;
+4C13 0021;
+4C15 0021;
+4C17 0021;
+4C19 0021;
+4C1B 0021;
+4C1D 0021;
+4C1F 0021;
+4C21 0021;
+4C23 0021;
+4C25 0021;
+4C27 0021;
+4C29 0021;
+4C2B 0021;
+4C2D 0021;
+4C2F 0021;
+4C31 0021;
+4C33 0021;
+4C35 0021;
+4C37 0021;
+4C39 0021;
+4C3B 0021;
+4C3D 0021;
+4C3F 0021;
+4C41 0021;
+4C43 0021;
+4C45 0021;
+4C47 0021;
+4C49 0021;
+4C4B 0021;
+4C4D 0021;
+4C4F 0021;
+4C51 0021;
+4C53 0021;
+4C55 0021;
+4C57 0021;
+4C59 0021;
+4C5B 0021;
+4C5D 0021;
+4C5F 0021;
+4C61 0021;
+4C63 0021;
+4C65 0021;
+4C67 0021;
+4C69 0021;
+4C6B 0021;
+4C6D 0021;
+4C6F 0021;
+4C71 0021;
+4C73 0021;
+4C75 0021;
+4C77 0021;
+4C79 0021;
+4C7B 0021;
+4C7D 0021;
+4C7F 0021;
+4C81 0021;
+4C83 0021;
+4C85 0021;
+4C87 0021;
+4C89 0021;
+4C8B 0021;
+4C8D 0021;
+4C8F 0021;
+4C91 0021;
+4C93 0021;
+4C95 0021;
+4C97 0021;
+4C99 0021;
+4C9B 0021;
+4C9D 0021;
+4C9F 0021;
+4CA1 0021;
+4CA3 0021;
+4CA5 0021;
+4CA7 0021;
+4CA9 0021;
+4CAB 0021;
+4CAD 0021;
+4CAF 0021;
+4CB1 0021;
+4CB3 0021;
+4CB5 0021;
+4CB7 0021;
+4CB9 0021;
+4CBB 0021;
+4CBD 0021;
+4CBF 0021;
+4CC1 0021;
+4CC3 0021;
+4CC5 0021;
+4CC7 0021;
+4CC9 0021;
+4CCB 0021;
+4CCD 0021;
+2FA0D 0061;
+4CD0 0021;
+4CD2 0021;
+4CD4 0021;
+4CD6 0021;
+4CD8 0021;
+4CDA 0021;
+4CDC 0021;
+4CDE 0021;
+4CE0 0021;
+4CE2 0021;
+4CE4 0021;
+4CE6 0021;
+4CE8 0021;
+4CEA 0021;
+4CEC 0021;
+2FA0E 0061;
+4CEF 0021;
+4CF1 0021;
+4CF3 0021;
+4CF5 0021;
+4CF7 0021;
+2FA11 0061;
+4CFA 0021;
+4CFC 0021;
+4CFE 0021;
+4D00 0021;
+4D02 0021;
+4D04 0021;
+4D06 0021;
+4D08 0021;
+4D0A 0021;
+4D0C 0021;
+4D0E 0021;
+4D10 0021;
+4D12 0021;
+4D14 0021;
+4D16 0021;
+4D18 0021;
+4D1A 0021;
+4D1C 0021;
+4D1E 0021;
+4D20 0021;
+4D22 0021;
+4D24 0021;
+4D26 0021;
+4D28 0021;
+4D2A 0021;
+4D2C 0021;
+4D2E 0021;
+4D30 0021;
+4D32 0021;
+4D34 0021;
+4D36 0021;
+4D38 0021;
+4D3A 0021;
+4D3C 0021;
+4D3E 0021;
+4D40 0021;
+4D42 0021;
+4D44 0021;
+4D46 0021;
+4D48 0021;
+4D4A 0021;
+4D4C 0021;
+4D4E 0021;
+4D50 0021;
+4D52 0021;
+4D54 0021;
+4D56 0021;
+4D57 0021;
+4D59 0021;
+4D5B 0021;
+4D5D 0021;
+4D5F 0021;
+4D61 0021;
+4D63 0021;
+4D65 0021;
+4D67 0021;
+4D69 0021;
+4D6B 0021;
+4D6D 0021;
+4D6F 0021;
+4D71 0021;
+4D73 0021;
+4D75 0021;
+4D77 0021;
+4D79 0021;
+4D7B 0021;
+4D7D 0021;
+4D7F 0021;
+4D81 0021;
+4D83 0021;
+4D85 0021;
+4D87 0021;
+4D89 0021;
+4D8B 0021;
+4D8D 0021;
+4D8F 0021;
+4D91 0021;
+4D93 0021;
+4D95 0021;
+4D97 0021;
+4D99 0021;
+4D9B 0021;
+4D9D 0021;
+4D9F 0021;
+4DA1 0021;
+4DA3 0021;
+4DA5 0021;
+4DA7 0021;
+4DA9 0021;
+4DAB 0021;
+4DAD 0021;
+4DAF 0021;
+4DB1 0021;
+4DB3 0021;
+4DB5 0021;
+20001 0021;
+20003 0021;
+20005 0021;
+2F812 0021;
+2F816 0021;
+2F9D9 0021;
+2F834 0021;
+2F859 0021;
+2F861 0021;
+2F871 0021;
+2F87B 0021;
+2F889 0021;
+2F891 0021;
+2F8A4 0021;
+FACF 0021;
+2F8BE 0021;
+2F897 0021;
+2F989 0021;
+2F8DD 0021;
+2F8E3 0021;
+2F8F0 0021;
+2F8F9 0021;
+2F906 0021;
+2F910 0021;
+2F91D 0021;
+2F923 0021;
+2F927 0021;
+2F937 0021;
+2F93C 0021;
+2F942 0021;
+2F943 0021;
+FAD5 0021;
+2F952 0021;
+2F955 0021;
+2F95D 0021;
+2F961 0021;
+FAD6 0021;
+2F898 0021;
+2F973 0021;
+2F977 0021;
+2F97C 0021;
+2F987 0021;
+2F997 0021;
+2F9A6 0021;
+2F9AD 0021;
+2F9B1 0021;
+2F9C5 0021;
+2F9CC 0021;
+FAD7 0021;
+2F9E0 0021;
+2F9E5 0021;
+2F9F1 0021;
+2F81C 0021;
+2F9FB 0021;
+2FA01 0021;
+2FA10 0021;
+2FA13 0021;
+2F88F 0021;
+2A6D1 0021;
+2A6D3 0021;
+2A6D5 0021;
+0378 0021;
+E001 0021;
+E003 0021;
+E005 0021;
+F8FB 0021;
+F8FD 0021;
+F8FF 0021;
+C0000 0021;
+E0000 0021;
+E0003 0021;
+E0005 0021;
+F0001 0021;
+F0003 0021;
+F0005 0021;
+F00F9 0021;
+F00FB 0021;
+F00FD 0021;
+FFF01 0021;
+FFF03 0021;
+FFF05 0021;
+FFFF9 0021;
+FFFFB 0021;
+FFFFD 0021;
+100001 0021;
+100003 0021;
+100005 0021;
+1000F9 0021;
+1000FB 0021;
+1000FD 0021;
+10FF01 0021;
+10FF03 0021;
+10FF05 0021;
+10FFF9 0021;
+10FFFB 0021;
+10FFFD 0021;
+10FFFD 0062;
diff --git a/src/com/ibm/icu/dev/data/IDNATestInput.txt b/src/com/ibm/icu/dev/data/IDNATestInput.txt
new file mode 100644
index 0000000..adad095
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/IDNATestInput.txt
@@ -0,0 +1,1266 @@
+=====
+desc: Copyright 2003-2005 http://idnconnect.jdna.jp/testbed.html 
+namebase: <00ED>dn
+nameutf8: ??dn
+namezone: xn--dn-mja
+failzone1: 
+failzone2: 
+token: 25029153
+passfail: pass
+type: toascii
+
+=====
+desc: 1-1-1 Has one IDN
+namebase: <00ED>dn
+nameutf8: ??dn
+namezone: xn--dn-mja
+failzone1: 
+failzone2: 
+token: 25029153
+passfail: pass
+type: toascii
+
+=====
+desc: 1-1-2 Has two IDNs
+namebase: <00EB>x.<00ED>dn
+nameutf8: ??x.??dn
+namezone: xn--x-ega.xn--dn-mja
+failzone1: 
+failzone2: 
+token: 02721141
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-1 Latin-1
+namebase: <00E5><00FE><00E7>
+nameutf8: ??????
+namezone: xn--5cae2e
+failzone1: 
+failzone2: 
+token: 41542620
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-2 Latin Extended A
+namebase: <0103>b<0109>
+nameutf8: ??b??
+namezone: xn--b-rhat
+failzone1: 
+failzone2: 
+token: 72238617
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-3 Latin Extended B
+namebase: <0227><0180><0188>
+nameutf8: ??????
+namezone: xn--lhaq98b
+failzone1: 
+failzone2: 
+token: 48464361
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-4 Latin Extended Additional
+namebase: <1E01><1E03><1E09>
+nameutf8: ?????????
+namezone: xn--2fges
+failzone1: 
+failzone2: 
+token: 49301230
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-1 Han
+namebase: <4E3F><4EBA><5C38>
+nameutf8: ?????????
+namezone: xn--xiqplj17a
+failzone1: 
+failzone2: 
+token: 58367113
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-2 Hiragana
+namebase: <304B><304C><304D>
+nameutf8: ?????????
+namezone: xn--u8jcd
+failzone1: 
+failzone2: 
+token: 57006197
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-3 Katakana
+namebase: <30AB><30AC><30AD>
+nameutf8: ?????????
+namezone: xn--lckcd
+failzone1: 
+failzone2: 
+token: 81826992
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-4 Hangul Jamo
+namebase: <1100><1161><11A8>
+nameutf8: ?????????
+namezone: xn--p39a
+failzone1: xn--ypd8qrh
+failzone2: 
+token: 44228346
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-5 Hangul
+namebase: <AC69><B4C6><C03A>
+nameutf8: ?????????
+namezone: xn--o69aq2nl0j
+failzone1: 
+failzone2: 
+token: 79235608
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-6 Yi
+namebase: <A00A><A020><A2B8>
+nameutf8: ?????????
+namezone: xn--6l7arby7j
+failzone1: 
+failzone2: 
+token: 99549720
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-7 Greek
+namebase: <03B1><03B2><03B3>
+nameutf8: ??????
+namezone: xn--mxacd
+failzone1: 
+failzone2: 
+token: 83859912
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-8 Greek Extended
+namebase: <1F02><1F26><1F55>
+nameutf8: ?????????
+namezone: xn--fng7dpg
+failzone1: 
+failzone2: 
+token: 22501339
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-9 Cyrillic
+namebase: <0430><0431><0432>
+nameutf8: ??????
+namezone: xn--80acd
+failzone1: 
+failzone2: 
+token: 98871751
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-10 Armeian
+namebase: <0561><0562><0563>
+nameutf8: ??????
+namezone: xn--y9acd
+failzone1: 
+failzone2: 
+token: 23687015
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-11 Georgian
+namebase: <10D0><10D1><10D2>
+nameutf8: ?????????
+namezone: xn--lodcd
+failzone1: 
+failzone2: 
+token: 70499589
+passfail: pass
+type: toascii
+
+=====
+desc: 1-4-1 Symbols
+namebase: <2221><21BA><2282>
+nameutf8: ?????????
+namezone: xn--b7gxomk
+failzone1: 
+failzone2: 
+token: 24617638
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-1 Devanagari
+namebase: <0915><0916><0917>
+nameutf8: ?????????
+namezone: xn--11bcd
+failzone1: 
+failzone2: 
+token: 18477223
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-2 Bengali
+namebase: <0995><0996><0997>
+nameutf8: ?????????
+namezone: xn--p5bcd
+failzone1: 
+failzone2: 
+token: 11477904
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-3 Gurmukhi
+namebase: <0A15><0A16><0A17>
+nameutf8: ?????????
+namezone: xn--d9bcd
+failzone1: 
+failzone2: 
+token: 71543506
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-4 Gujarati
+namebase: <0A95><0A96><0A97>
+nameutf8: ?????????
+namezone: xn--0dccd
+failzone1: 
+failzone2: 
+token: 75268760
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-5 Oriya
+namebase: <0B15><0B16><0B17>
+nameutf8: ?????????
+namezone: xn--ohccd
+failzone1: 
+failzone2: 
+token: 36079747
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-6 Tamil
+namebase: <0B95><0B99><0B9A>
+nameutf8: ?????????
+namezone: xn--clcid
+failzone1: 
+failzone2: 
+token: 39841446
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-7 Telugu
+namebase: <0C15><0C16><0C17>
+nameutf8: ?????????
+namezone: xn--zoccd
+failzone1: 
+failzone2: 
+token: 34438808
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-8 Kannada
+namebase: <0C95><0C96><0C97>
+nameutf8: ?????????
+namezone: xn--nsccd
+failzone1: 
+failzone2: 
+token: 42303465
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-9 Malayalam
+namebase: <0D15><0D16><0D17>
+nameutf8: ?????????
+namezone: xn--bwccd
+failzone1: 
+failzone2: 
+token: 11813559
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-10 Sinhala
+namebase: <0D9A><0D9B><0D9C>
+nameutf8: ?????????
+namezone: xn--3zccd
+failzone1: 
+failzone2: 
+token: 89823209
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-11 Thai
+namebase: <0E01><0E02><0E03>
+nameutf8: ?????????
+namezone: xn--12ccd
+failzone1: 
+failzone2: 
+token: 94992842
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-12 Lao
+namebase: <0E81><0E82><0E84>
+nameutf8: ?????????
+namezone: xn--p6ccg
+failzone1: 
+failzone2: 
+token: 42424338
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-13 Tibetan
+namebase: <0F40><0F41><0F42>
+nameutf8: ?????????
+namezone: xn--5cdcd
+failzone1: 
+failzone2: 
+token: 26962778
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-14 Myanmar
+namebase: <1000><1001><1002>
+nameutf8: ?????????
+namezone: xn--nidcd
+failzone1: 
+failzone2: 
+token: 09824611
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-15 Khmer
+namebase: <1780><1781><1782>
+nameutf8: ?????????
+namezone: xn--i2ecd
+failzone1: 
+failzone2: 
+token: 48071156
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-16 Mongolian
+namebase: <1820><1821><1822>
+nameutf8: ?????????
+namezone: xn--26ecd
+failzone1: 
+failzone2: 
+token: 40131572
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-1 Arabic
+namebase: <0627><0628><0629>
+nameutf8: ??????
+namezone: xn--mgbcd
+failzone1: 
+failzone2: 
+token: 06414817
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-2 Hebrew
+namebase: <05D0><05D1><05D2>
+nameutf8: ??????
+namezone: xn--4dbcd
+failzone1: 
+failzone2: 
+token: 41996705
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-3 Syriac
+namebase: <0710><0711><0712>
+nameutf8: ??????
+namezone: xn--9mbcd
+failzone1: 
+failzone2: 
+token: 77925080
+passfail: pass
+type: toascii
+
+=====
+desc: 1-7-1 ASCII and non-Latin
+namebase: abc<30AB><30AC><30AD>
+nameutf8: abc?????????
+namezone: xn--abc-mj4bfg
+failzone1: 
+failzone2: 
+token: 14333380
+passfail: pass
+type: toascii
+
+=====
+desc: 1-7-2 Latin (non-ASCII) and non-Latin
+namebase: <00E5><00FE><00E7><30AB><30AC><30AD>
+nameutf8: ???????????????
+namezone: xn--5cae2e328wfag
+failzone1: 
+failzone2: 
+token: 00848299
+passfail: pass
+type: toascii
+
+=====
+desc: 2-3-1-1 If UseSTD3ASCIIRules: Includes ! before Nameprep
+namebase: <00ED><0021>dn
+nameutf8: ??!dn
+namezone: 
+failzone1: xn--!dn-qma
+failzone2: 
+token: 89571181
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-1-2 If UseSTD3ASCIIRules: Includes $ before Nameprep
+namebase: <00ED><0024>dn
+nameutf8: ??$dn
+namezone: 
+failzone1: xn--$dn-qma
+failzone2: 
+token: 06965937
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-1-3 If UseSTD3ASCIIRules: Includes + before Nameprep
+namebase: <00ED><002B>dn
+nameutf8: ??+dn
+namezone: 
+failzone1: xn--+dn-qma
+failzone2: 
+token: 98967951
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-2-1 If UseSTD3ASCIIRules: Leading hyphen before Nameprep
+namebase: <002D><00ED>1dn
+nameutf8: -??1dn
+namezone: 
+failzone1: xn---1dn-vpa
+failzone2: 
+token: 65457100
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-2-2 If UseSTD3ASCIIRules: Trailing hyphen before Nameprep
+namebase: <00ED>1dn<002D>
+nameutf8: ??1dn-
+namezone: 
+failzone1: xn--1dn--upa
+failzone2: 
+token: 85629714
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-3-1 If UseSTD3ASCIIRules: Gets a + after Nameprep
+namebase: <00ED><FF0B>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja0331x
+failzone2: 
+token: 95236620
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-3-2 If UseSTD3ASCIIRules: Gets a = after Nameprep
+namebase: <00ED><207C>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja0343a
+failzone2: 
+token: 04960664
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-4-1 If UseSTD3ASCIIRules: Leading hyphen after Nameprep
+namebase: <FE63><00ED>2dn
+nameutf8: ?????2dn
+namezone: 
+failzone1: xn--2dn-qma32863a
+failzone2: xn---2dn-vpa
+token: 53512069
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-4-2 If UseSTD3ASCIIRules: Trailing hyphen after Nameprep
+namebase: <00ED>2dn<FF0D>
+nameutf8: ??2dn???
+namezone: 
+failzone1: xn--2dn-qma79363a
+failzone2: xn--2dn--upa
+token: 39938653
+passfail: fail
+type: toascii
+
+=====
+desc: 2-4-1 All-ASCII check, Latin
+namebase: <00B9>1
+nameutf8: ??1
+namezone: 11
+failzone1: 
+failzone2: 
+token: 43611374
+passfail: pass
+type: toascii
+
+=====
+desc: 2-4-2 All-ASCII check, symbol
+namebase: <2165>vi
+nameutf8: ???vi
+namezone: vivi
+failzone1: 
+failzone2: 
+token: 79939993
+passfail: pass
+type: toascii
+
+=====
+desc: 2-4-3 All-ASCII check, sharp S
+namebase: <00DF>ss
+nameutf8: ??ss
+namezone: ssss
+failzone1: 
+failzone2: 
+token: 71292530
+passfail: pass
+type: toascii
+
+=====
+desc: 2-5-1 ACE prefix exists before Nameprep
+namebase: xn--<00EF>dn
+nameutf8: xn--??dn
+namezone: 
+failzone1: xn--xn--dn-sja
+failzone2: xn--dn-sja
+token: 32841515
+passfail: fail
+type: toascii
+
+=====
+desc: 2-5-2 ACE prefix appears after Nameprep
+namebase: <2179>n--<00E4>dn
+nameutf8: ???n--??dn
+namezone: 
+failzone1: xn--xn--dn-uia
+failzone2: xn--dn-uia
+token: 52994631
+passfail: fail
+type: toascii
+
+=====
+desc: 2-8-1 Zero-length label after Nameprep
+namebase: <00AD>
+nameutf8: 
+namezone: 
+failzone1: xn--kba
+failzone2: xn--
+token: 18420037
+passfail: fail
+type: toascii
+
+=====
+desc: 2-9-1 U+3002 acts as a label separator
+namebase: 3002-test<3002><00ED>dn
+nameutf8: 3002-test?????dn
+namezone: 3002-test.xn--dn-mja
+failzone1: xn--3002-testdn-wcb2087m
+failzone2: 
+token: 14217422
+passfail: pass
+type: toascii
+
+=====
+desc: 2-9-2 U+FF0E acts as a label separator
+namebase: ff0e-test<FF0E><00ED>dn
+nameutf8: ff0e-test?????dn
+namezone: ff0e-test.xn--dn-mja
+failzone1: xn--ff0e-testdn-wcb45865f
+failzone2: 
+token: 94579179
+passfail: pass
+type: toascii
+
+=====
+desc: 2-9-3 U+FF61 acts as a label separator
+namebase: ff61-test<FF61><00ED>dn
+nameutf8: ff61-test?????dn
+namezone: ff61-test.xn--dn-mja
+failzone1: xn--ff61-testdn-wcb33975f
+failzone2: 
+token: 27084042
+passfail: pass
+type: toascii
+
+=====
+desc: 3-2-1 Sharp S conversion; should display as m<00EB>ss
+namebase: xn--m<00DF>-jma
+nameutf8: xn--m??-jma
+namezone: m<00EB>ss
+failzone1: 
+failzone2: 
+token: 85142449
+passfail: pass
+type: tounicode
+
+=====
+desc: 3-3-1 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: iesg--dn-mja
+nameutf8: iesg--dn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 35996358
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-3-2 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: iesgdn-mja
+nameutf8: iesgdn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 13693467
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-3-3 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: bq--dn-mja
+nameutf8: bq--dn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 77049719
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-1 Non-ASCII code point before the last hyphen;\
+ should not display as Unicode
+namebase: xn--d<00F1>-mja
+nameutf8: xn--d??-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 53043171
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-2 Non-alphanumeric code point after the last hyphen;\
+ should not display as Unicode
+namebase: xn--dn-mj+
+nameutf8: xn--dn-mj+
+namezone: 
+failzone1: 
+failzone2: 
+token: 24626494
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-3 Ends in the middle of an encoded delta value;\
+ should not display as Unicode
+namebase: xn--dn-mj
+nameutf8: xn--dn-mj
+namezone: 
+failzone1: 
+failzone2: 
+token: 30921132
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-1 Nameprep -- prohibited character U+E000;\
+ should not display as Unicode
+namebase: xn--e000dn-l704a
+nameutf8: xn--e000dn-l704a
+namezone: 
+failzone1: 
+failzone2: 
+token: 02359753
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-2 If using UseSTD3ASCIIRules, Step 3a -- leading hyphen; should not display as Unicode
+namebase: xn---3dn-vpa
+nameutf8: xn---3dn-vpa
+namezone: 
+failzone1: 
+failzone2: 
+token: 99795165
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-3 If using UseSTD3ASCIIRules, Step 3b -- trailing hyphen; should not display as Unicode
+namebase: xn--3dn--upa
+nameutf8: xn--3dn--upa
+namezone: 
+failzone1: 
+failzone2: 
+token: 86051717
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-4 Step 5 -- prefix exists; should not display as Unicode
+namebase: xn--xn--dn-6va
+nameutf8: xn--xn--dn-6va
+namezone: 
+failzone1: 
+failzone2: 
+token: 02506789
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-7-1 Punycode was not necessary; should not display as Unicode
+namebase: xn--idn-
+nameutf8: xn--idn-
+namezone: 
+failzone1: 
+failzone2: 
+token: 21675918
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-7-2 String did not go through Nameprep;\
+ should not display as Unicode
+namebase: xn--dn-vga
+nameutf8: xn--dn-vga
+namezone: 
+failzone1: 
+failzone2: 
+token: 18832454
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-8-1 Should show the Unicode <00ED>4dn ; <icu> Changed namebase and nameutf8 from xn--4dn-lla to xn--4dn-qma </icu>
+namebase: xn--4dn-qma
+nameutf8: xn--4dn-qma
+namezone: <00ED>4dn
+failzone1: 
+failzone2: 
+token: 23377435
+passfail: pass
+type: tounicode
+
+=====
+desc: 4-1-1-1 00adout<00AD><00ED>dn ->\
+ 00adout<00ED>dn
+namebase: 00adout<00AD><00ED>dn
+nameutf8: 00adout????dn
+namezone: xn--00adoutdn-m5a
+failzone1: xn--00adoutdn-cna81e
+failzone2: 
+token: 04299950
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-1-2 200dout<200D><00ED>dn ->\
+ 200dout<00ED>dn
+namebase: 200dout<200D><00ED>dn
+nameutf8: 200dout?????dn
+namezone: xn--200doutdn-m5a
+failzone1: xn--200doutdn-m5a1678f
+failzone2: 
+token: 00643243
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-1 simplecap<0044><00ED>dn ->\
+ simplecap<0064><00ED>dn
+namebase: simplecap<0044><00ED>dn
+nameutf8: simplecapD??dn
+namezone: xn--simplecapddn-1fb
+failzone1: 
+failzone2: 
+token: 36249795
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-2 latintogreek<00B5><00ED>dn ->\
+ latintogreek<03BC><00ED>dn
+namebase: latintogreek<00B5><00ED>dn
+nameutf8: latintogreek????dn
+namezone: xn--latintogreekdn-cmb716i
+failzone1: xn--latintogreekdn-cxa01g
+failzone2: 
+token: 03117407
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-3 latinext<00C7><00ED>dn ->\
+ latinext<00E7><00ED>dn
+namebase: latinext<00C7><00ED>dn
+nameutf8: latinext????dn
+namezone: xn--latinextdn-v6a6e
+failzone1: xn--latinextdn-twa07b
+failzone2: 
+token: 10243505
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-4 sharps<00DF><00ED>dn ->\
+ sharpsss<00ED>dn
+namebase: sharps<00DF><00ED>dn
+nameutf8: sharps????dn
+namezone: xn--sharpsssdn-r8a
+failzone1: xn--sharpsdn-vya4l
+failzone2: 
+token: 84921656
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-5 turkishi<0130><00ED>dn ->\
+ turkishi<0069><0307><00ED>dn
+namebase: turkishi<0130><00ED>dn
+nameutf8: turkishi????dn
+namezone: xn--turkishiidn-wcb701e
+failzone1: xn--turkishidn-r8a71f
+failzone2: 
+token: 02381730
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-6 exptwo<0149><00ED>dn ->\
+ exptwo<02BC><006E><00ED>dn
+namebase: exptwo<0149><00ED>dn
+nameutf8: exptwo????dn
+namezone: xn--exptwondn-m5a502c
+failzone1: xn--exptwodn-h2a33g
+failzone2: 
+token: 10575203
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-7 addfold<03D2><00ED>dn ->\
+ addfold<03C5><00ED>dn
+namebase: addfold<03D2><00ED>dn
+nameutf8: addfold????dn
+namezone: xn--addfolddn-m5a121f
+failzone1: xn--addfolddn-m5a462f
+failzone2: 
+token: 31493044
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-8 expthree<1F52><00ED>dn ->\
+ expthree<03C5><0313><0300><00ED>dn
+namebase: expthree<1F52><00ED>dn
+nameutf8: expthree?????dn
+namezone: xn--expthreedn-r8a5844g
+failzone1: 
+failzone2: 
+token: 68144622
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-9 nonbmp<10400><00ED>dn ->\
+ nonbmp<10428><00ED>dn
+namebase: nonbmp<10400><00ED>dn
+nameutf8: nonbmp??????dn
+namezone: xn--nonbmpdn-h2a34747d
+failzone1: xn--nonbmpdn-h2a37046d
+failzone2: 
+token: 35393212
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-10 nonbmptoascii<1D400><00ED>dn ->\
+ nonbmptoasciia<00ED>dn
+namebase: nonbmptoascii<1D400><00ED>dn
+nameutf8: nonbmptoascii??????dn
+namezone: xn--nonbmptoasciiadn-msb
+failzone1: xn--nonbmptoasciidn-hpb54112i
+failzone2: 
+token: 78182502
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-1 regcomb<0065><0301><00ED>dn ->\
+ regcomb<00E9><00ED>dn
+namebase: regcomb<0065><0301><00ED>dn
+nameutf8: regcombe????dn
+namezone: xn--regcombdn-h4a8b
+failzone1: xn--regcombedn-r8a794d
+failzone2: 
+token: 87647045
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-2 combandcase<0045><0301><00ED>dn ->\
+ combandcase<00E9><00ED>dn
+namebase: combandcase<0045><0301><00ED>dn
+nameutf8: combandcaseE????dn
+namezone: xn--combandcasedn-lhb4d
+failzone1: xn--combandcaseedn-cmb526f
+failzone2: 
+token: 61741185
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-3 adjcomb<00BA><0301><00ED>dn ->\
+ adjcomb<00F3><00ED>dn
+namebase: adjcomb<00BA><0301><00ED>dn
+nameutf8: adjcomb??????dn
+namezone: xn--adjcombdn-m5a9d
+failzone1: xn--adjcombdn-1qa57cp3r
+failzone2: 
+token: 14828402
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-4 extcombo<0063><0301><00ED>dn ->\
+ extcombo<0107><00ED>dn
+namebase: extcombo<0063><0301><00ED>dn
+nameutf8: extcomboc????dn
+namezone: xn--extcombodn-r8a52a
+failzone1: xn--extcombocdn-wcb920e
+failzone2: 
+token: 26651277
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-5 doublediac1<0075><0308><0301><00ED>dn ->\
+ doublediac2<01D8><00ED>dn
+namebase: doublediac1<0075><0308><0301><00ED>dn
+nameutf8: doublediac1u??????dn
+namezone: xn--doublediac1dn-6ib836a
+failzone1: xn--doublediac1udn-cmb526fnd
+failzone2: 
+token: 30175595
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-6 doublediac2<0075><0301><0308><00ED>dn ->\
+ doublediac2<01D8><00ED>dn
+namebase: doublediac2<0075><0301><0308><00ED>dn
+nameutf8: doublediac2u??????dn
+namezone: xn--doublediac2dn-6ib8qs73a
+failzone1: xn--doublediac2udn-cmb526fod
+failzone2: 
+token: 35606109
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-2-1 newnorm<2F874><00ED>dn ->\
+ newnorm<5F33><00ED>dn should not become <5F53>
+namebase: newnorm<2F874><00ED>dn
+nameutf8: newnorm??????dn
+namezone: xn--newnormdn-m5a7856x
+failzone1: xn--newnormdn-m5a9396x
+failzone2: xn--newnormdn-m5a9968x
+token: 61901810
+passfail: pass
+type: toascii
+
+=====
+desc: 4-3-1 If UseSTD3ASCIIRules: Spacing; <icu> \u0020 is prohibited from the output only when UseSTD3ASCIIRules is set </icu>
+namebase: <2000><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3392a
+failzone2: 
+token: 13226878
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-2 Control
+namebase: <06DD><00ED>dn-2
+nameutf8: ????dn-2
+namezone: 
+failzone1: xn--dn-2-upa332g
+failzone2: 
+token: 09873312
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-3 Private use
+namebase: <E005><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja1659t
+failzone2: 
+token: 03937183
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-4 Private use, non-BMP
+namebase: <F0005><00ED>dn
+nameutf8: ??????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 78707823
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-5 Non-character
+namebase: <FDDD><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja1210x
+failzone2: 
+token: 44432178
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-6 Non-character, non-BMP
+namebase: <1FFFE><00ED>dn
+nameutf8: ??????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 69142686
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-7 Surrogate points
+namebase: <D805><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 05424571
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-8 Inappropriate for plain
+namebase: <FFFA><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja5822x
+failzone2: 
+token: 44825824
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-9 Inappropriate for canonical
+namebase: <2FF5><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3729b
+failzone2: 
+token: 50926136
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-10 Change display simple
+namebase: <206A><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja7533a
+failzone2: 
+token: 57953313
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-11 Change display RTL
+namebase: <200F><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3992a
+failzone2: 
+token: 30705279
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-12 Language tags
+namebase: <E0001><E0045><E004E><0068><0069>idn
+nameutf8: ????????????hiidn
+namezone: 
+failzone1: xn--hiidn-km43aaa
+failzone2: 
+token: 44598039
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-1 Arabic RandALCat-LCat-RandALCat
+namebase: <0628><006F><0638>
+nameutf8: ??o??
+namezone: 
+failzone1: xn--o-0mc3c
+failzone2: 
+token: 78233053
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-2 Arabic RandALCat-RandALCat-other
+namebase: <0628><0638><006F>
+nameutf8: ????o
+namezone: 
+failzone1: xn--o-0mc2c
+failzone2: 
+token: 95299621
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-3 Arabic other-RandALCat-RandALCat
+namebase: <006F><0628><0638>
+nameutf8: o????
+namezone: 
+failzone1: xn--o-1mc2c
+failzone2: 
+token: 79807176
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-4 Hebrew RandALCat-LCat-RandALCat
+namebase: <05D1><006F><05E1>
+nameutf8: ??o??
+namezone: 
+failzone1: xn--o-1hc3c
+failzone2: 
+token: 32229450
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-5 Hebrew RandALCat-RandALCat-other
+namebase: <05D1><05E1><006F>
+nameutf8: ????o
+namezone: 
+failzone1: xn--o-1hc2c
+failzone2: 
+token: 53213348
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-6 Hebrew other-RandALCat-RandALCat
+namebase: <006F><05D1><05E1>
+nameutf8: o????
+namezone: 
+failzone1: xn--o-2hc2c
+failzone2: 
+token: 90835860
+passfail: fail
+type: toascii
+
+=====
+desc: 5-1-1 Unassigned in BMP; zone editors should reject
+namebase: <0237><00ED>dn
+nameutf8: ????dn
+namezone: xn--dn-mja33k
+failzone1: 
+failzone2: 
+token: 83079602
+passfail: pass
+type: toascii
+
+=====
+desc: 5-1-2 Unassinged outside BMP; zone editors should reject
+namebase: <10205><00ED>dn
+nameutf8: ??????dn
+namezone: xn--dn-mja7734x
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 03682900
+passfail: pass
+type: toascii
+
+=====
+desc: 5-2-1 Newly assigned in BMP; zone editors should reject
+namebase: <0234><00ED>dn
+nameutf8: ????dn
+namezone: xn--dn-mja12k
+failzone1: 
+failzone2: 
+token: 96637501
+passfail: pass
+type: toascii
+
+=====
+desc: 5-2-2 Newly assigned outside of BMP; zone editors should reject
+namebase: <10005><00ED>dn
+nameutf8: ??????dn
+namezone: xn--dn-mja9232x
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 95537699
+passfail: pass
+type: toascii
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
new file mode 100644
index 0000000..32c5b32
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
@@ -0,0 +1,140 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.data;
+import java.util.ListResourceBundle;
+
+public class TestDataElements_testtypes extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public final Object[][] getContents() {
+          return  contents;
+    }
+
+    private static Object[][] contents = {
+                {
+                    "binarytest",
+                    new byte[] {
+                        0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+                    },
+                },
+                {
+                    "emptyarray",
+                    new String[] { 
+                    },
+                },
+                {
+                    "emptybin",
+                    new byte[] {},
+                },
+                {
+                    "emptyexplicitstring",
+                    "",
+                },
+                {
+                    "emptyint",
+                    new Integer(0),
+                },
+                {
+                    "emptyintv",
+                    new Integer[] {
+                    },
+                },
+                {
+                    "emptystring",
+                    "",
+                },
+                {
+                    "emptytable",
+                    new Object[][]{
+                    },
+                },
+                {
+                    "importtest",
+                    new byte[] {
+                        0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+                    },
+                },
+                {
+                    "integerarray",
+                    new Integer[] {
+                        new Integer(1),
+                        new Integer(2),
+                        new Integer(3),
+                        new Integer(-3),
+                        new Integer(4),
+                        new Integer(5),
+                        new Integer(6),
+                        new Integer(7),
+                    },
+                },
+                {
+                    "menu",
+                    new Object[][]{
+                        {
+                            "file",
+                            new Object[][]{
+                                {
+                                    "exit",
+                                    "Exit",
+                                },
+                                {
+                                    "open",
+                                    "Open",
+                                },
+                                {
+                                    "save",
+                                    "Save",
+                                },
+                            },
+                        },
+                    },
+                },
+                {
+                    "minusone",
+                    new Integer(-1),
+                },
+                {
+                    "one",
+                    new Integer(1),
+                },
+                {
+                    "onehundredtwentythree",
+                    new Integer(123),
+                },
+                {
+                    "plusone",
+                    new Integer(1),
+                },
+                {
+                    "string",
+                    new String[] { 
+                    },
+                },
+                {
+                    "stringTable",
+                    new Object[]{
+                        new String[] { 
+                        },
+
+                    },
+                },
+                {
+                    "test_underscores",
+                    "test message ....",
+                },
+                {
+                    "testescape",
+                    "tab:\u0009 cr:\f ff:\u000C newline:\n backslash:\\" +
+                    " quote=\\\' doubleQuote=\\\" singlequoutes=''",
+                },
+                {
+                    "zerotest",
+                    "abc\u0000def",
+                },
+    };
+}
diff --git a/src/com/ibm/icu/dev/data/rbbi/english.dict b/src/com/ibm/icu/dev/data/rbbi/english.dict
new file mode 100644
index 0000000..10f430b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/english.dict
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/rbbi/words.txt b/src/com/ibm/icu/dev/data/rbbi/words.txt
new file mode 100644
index 0000000..a7e06ac
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/words.txt
@@ -0,0 +1,2990 @@
+--
+--such
+a
+a'bel-mizraim
+a'iah
+abate
+abated
+abdicated
+abel
+abi'da
+abide
+abim'a-el
+abim'elech
+abim'elech's
+able
+abolish
+abolishing
+abomination
+about
+above
+abraham
+abraham's
+abram
+abram's
+abroad
+absent
+absolute
+absolved
+abundance
+abundantly
+abuses
+accad
+accept
+accepted
+accommodation
+according
+accordingly
+account
+accustomed
+achbor
+acknowledged
+acquiesce
+acquired
+across
+act
+acts
+adah
+adam
+adbeel
+add
+added
+admah
+administration
+adullamite
+advanced
+adviser
+afar
+affected
+afflicted
+affliction
+afraid
+after
+afterward
+afterwards
+again
+against
+age
+ages
+agile
+agree
+agreed
+ahuz'zath
+ai
+aid
+air
+akan
+al'lon-bacuth
+alighted
+alive
+all
+allegiance
+alliances
+allies
+allow
+allowance
+almighty
+almo'dad
+almond
+almonds
+alone
+along
+aloud
+already
+also
+altar
+alter
+altering
+although
+altogether
+alvah
+alvan
+am
+am'alek
+am'raphel
+amal'ekites
+amazement
+america
+ammonites
+among
+amongst
+amorite
+amorites
+amount
+an
+an'amim
+anah
+and
+aner
+angel
+angels
+anger
+angry
+animal
+animals
+annihilation
+anointed
+another
+another's
+answer
+answered
+any
+anything
+anywhere
+apart
+appealed
+appealing
+appear
+appeared
+appease
+appoint
+appointed
+approached
+approaching
+appropriations
+aprons
+ar'arat
+ar'ioch
+ar'vadites
+aram
+aramean
+aran
+arbitrary
+archers
+ard
+are
+are'li
+area
+arise
+ark
+arkites
+armed
+armies
+arms
+army
+aro'di
+arose
+around
+arpach'shad
+arrayed
+arrive
+art
+as
+as'enath
+ascending
+ash'kenaz
+ash'teroth-karna'im
+ashamed
+ashbel
+asher
+asher's
+ashes
+aside
+ask
+asked
+asks
+asleep
+ass
+ass's
+assemble
+assembled
+assent
+asses
+asshu'rim
+asshur
+assume
+assured
+assyria
+at
+atad
+ate
+attack
+attacked
+attained
+attempts
+attend
+attended
+attention
+authority
+avenged
+avith
+away
+awesome
+awoke
+ba'al-ha'nan
+ba'bel
+back
+backward
+bad
+bade
+bags
+baked
+baker
+balm
+bank
+banks
+barbarous
+barren
+bas'emath
+basket
+baskets
+battle
+bdellium
+be
+be'or
+be-e'ri
+bear
+bearing
+bears
+beast
+beasts
+beautiful
+became
+because
+becher
+become
+becomes
+bed
+bedad
+been
+beer-la'hai-roi
+beer-sheba
+befall
+befallen
+befalls
+before
+beg
+began
+beginning
+beguiled
+begun
+beheld
+behind
+behold
+being
+bela
+believe
+believed
+belly
+belong
+belonging
+belongs
+below
+ben-ammi
+ben-o'ni
+beneath
+benefits
+benjamin
+benjamin's
+bera
+bereaved
+bered
+bereft
+beri'ah
+beside
+besides
+besought
+best
+bethel
+bethlehem
+bethu'el
+better
+between
+beyond
+bilhah
+bilhan
+binding
+bird
+birds
+birsha
+birth
+birthday
+birthright
+bites
+bitter
+bitumen
+black
+blame
+blameless
+bless
+blessed
+blesses
+blessing
+blessings
+blighted
+blindness
+blood
+blossoms
+blot
+blotted
+blow
+bodies
+body
+boiling
+bonds
+bone
+bones
+book
+booths
+border
+bore
+born
+borne
+both
+bough
+bought
+bound
+boundaries
+bounties
+bow
+bowed
+bowing
+bowshot
+boys
+bozrah
+bracelets
+branches
+breach
+bread
+breadth
+break
+breaking
+breasts
+breath
+breathed
+bred
+breed
+breeding
+brethren
+brick
+bricks
+brimstone
+bring
+britain
+british
+broken
+bronze
+brother
+brother's
+brother-in-law
+brothers
+brought
+brow
+bruise
+budded
+build
+building
+built
+bulls
+bundle
+bundles
+buried
+burn
+burned
+burnt
+burst
+bury
+burying
+bushes
+but
+butler
+butlership
+buy
+buz
+by
+cain
+cake
+cakes
+calah
+calf
+call
+called
+calls
+came
+camel
+camel's
+camels
+camp
+camped
+can
+canaan
+canaan'
+canaanite
+canaanites
+canaanitish
+candid
+cannot
+caph'torim
+captain
+captive
+captives
+captured
+caravan
+carcasses
+care
+carefully
+carmi
+carried
+carry
+cases
+caslu'him
+cast
+cattle
+caught
+cause
+caused
+causes
+cave
+cease
+ceased
+certain
+chain
+chalde'ans
+chamber
+change
+changed
+character
+charge
+charged
+charging
+chariot
+chariots
+charters
+cheat
+cheated
+ched-or-lao'mer
+cheran
+cherubim
+chesed
+chezib
+chief
+chiefs
+child
+childbearing
+childless
+children
+children's
+choice
+choicest
+chose
+chosen
+circumcised
+circumstances
+cities
+citizens
+city
+civil
+civilized
+clans
+clean
+clear
+cleaves
+close
+closed
+clothed
+clothes
+clothing
+cloud
+clouds
+clusters
+coastland
+coasts
+coffin
+cold
+colonies
+colonies:
+colt
+colts
+combined
+come
+comely
+comes
+comfort
+comforted
+comforts
+coming
+command
+commanded
+commander
+commandments
+commerce
+commit
+committed
+common
+companies
+company
+complained
+complete
+completed
+compliance
+conceal
+conceived
+concern
+concerning
+conclude
+concubine
+concubines
+condition
+conditions
+confined
+confuse
+confused
+congress
+conjured
+connected
+connection
+connections
+consent
+consent:
+conspired
+constitution
+constrained
+constrains
+consume
+consumed
+contempt
+contended
+continually
+continue
+continued
+contract
+control
+controlling
+convulsions
+cool
+cord
+correspondence
+corrupt
+corrupted
+costly
+couch
+couched
+couches
+couching
+could
+council
+count
+counted
+countenance
+country
+course
+covenant
+cover
+covered
+covering
+cows
+created
+creation
+creator
+creature
+creatures
+creeping
+creeps
+cried
+crossed
+crossing
+crouching
+crown
+cruel
+cruelty
+cry
+crying
+cubit
+cubits
+cup
+curds
+current
+curse
+cursed
+curses
+cush
+custody
+cut
+cutting
+dainties
+damascus
+dan
+dangers
+dares
+dark
+darkness
+daughter
+daughter-in-law
+daughters
+dawned
+day
+days
+dead
+deal
+dealt
+death
+deb'orah
+deceitfully
+deceived
+decent
+decide
+decks
+declaration
+declare
+declaring
+dedan
+deed
+deep
+defeat
+defeated
+defiled
+define
+delay
+delayed
+delight
+deliver
+delivered
+delivery
+denied
+denounces
+depart
+departed
+departing
+dependent
+dependents
+depository
+depriving
+deriving
+descendants
+descending
+design
+desire
+desired
+desolate
+desolation
+despised
+despotism
+destroy
+destroyed
+destroys
+destruction
+destructive
+determined
+devoured
+devouring
+dew
+dictate
+did
+didst
+die
+died
+dies
+diklah
+dim
+din'habah
+dinah
+dinah's
+dine
+dipped
+direct
+direction
+disaster
+disavow
+discreet
+disgrace
+dishan
+dishon
+dismayed
+displeased
+displeasing
+disposed
+dissolutions
+dissolve
+dissolved
+distance
+distant
+distress
+distressed
+districts
+divide
+divided
+dividing
+divination
+divine
+divines
+do
+do'danim
+doer
+does
+doing
+domestic
+dominion
+done
+door
+dothan
+double
+doubling
+doubt
+dove
+down
+downcast
+dowry
+drank
+draw
+drawn
+dread
+dream
+dreamed
+dreamer
+dreams
+drew
+dried
+drink
+drinking
+drinks
+driven
+drove
+droves
+drunk
+dry
+dug
+dumah
+dungeon
+during
+dust
+duty
+dwell
+dwelling
+dwelt
+e'domites
+e'phraim
+e'phraim's
+each
+early
+ears
+earth
+easily
+east
+eastward
+eat
+eaten
+eating
+ebal
+eber
+eden
+eder
+edom
+effect
+egypt
+egyptian
+egyptian's
+egyptians
+ehi
+eight
+eighteen
+eighty
+eighty-seven
+eighty-six
+eighty-two
+either
+el'iphaz
+el-bethel
+el-el'ohe-israel
+el-paran
+elah
+elam
+elda'ah
+elder
+elders
+eldest
+elected
+eleven
+eli'shah
+elie'zer
+ella'sar
+elon
+else
+embalm
+embalmed
+embalming
+embrace
+embraced
+emigration
+emim
+emptied
+empty
+empty-handed
+enaim
+encamped
+encampments
+encourage
+end
+endeavored
+ended
+ending
+endowed
+ends
+enemies
+enemy
+english
+enlarge
+enlarging
+enmish'pat
+enmity
+enoch
+enosh
+enough
+enter
+entered
+entitle
+entrance
+entreat
+envied
+ephah
+epher
+ephrath
+ephron
+equal
+er
+erech
+erected
+eri
+errand
+esau
+esau's
+escape
+escaped
+esek
+eshban
+eshcol
+establish
+established
+establishing
+establishment
+eternal
+euphra'tes
+euphrates
+eve
+even
+evening
+events
+ever
+everlasting
+every
+everything
+everywhere
+evil
+evils
+evinces
+ewe
+ewes
+example
+exceedingly
+except
+exchange
+excited
+executioners
+exercise
+experience
+expert
+explain
+exposed
+exposing
+extend
+extended
+eyes
+ezbon
+ezer
+face
+faces
+facts
+failed
+fainted
+fair
+faithfulness
+fall
+fallen
+falls
+falsely
+families
+family
+famine
+famished
+far
+fare
+fared
+farewell
+fast
+fat
+father
+father's
+father-in-law
+fathers
+fatiguing
+fatness
+faults
+favor
+favorable
+fawns
+fear
+feared
+feast
+fed
+feebler
+feed
+feel
+feet
+fell
+fellow
+felt
+female
+festal
+fetch
+few
+field
+fields
+fierce
+fiercely
+fifteen
+fifth
+fifths
+fifty
+fig
+fill
+filled
+find
+finds
+fine
+finish
+finished
+fire
+firm
+firmament
+firmness
+first
+first-
+first-born
+firstlings
+fish
+fit
+five
+fixed
+flaming
+fled
+flee
+fleeing
+flesh
+floated
+flock
+flocks
+flood
+floor
+flowed
+flows
+fly
+foal
+follow
+followed
+following
+follows
+folly
+fondling
+food
+foolishly
+foot
+for
+forbidden
+force
+forced
+forces
+ford
+foreign
+foreigner
+foreigners
+foremost
+foreskin
+foreskins
+forger
+forget
+forgets
+forgive
+forgot
+forgotten
+form
+formed
+former
+formerly
+formidable
+forms
+forsaken
+forth
+fortune
+fortunes
+forty
+forty-five
+forty-seven
+found
+foundation
+fountains
+four
+fourteen
+fourteenth
+fourth
+frail
+free
+freely
+fresh
+freshly
+friend
+friendly
+friends
+fro
+from
+front
+frontiers
+fruit
+fruitful
+fruits
+fugitive
+fulfil
+fulfilled
+full
+fundamentally
+furnace
+fury
+future
+gad
+gaham
+gained
+galeed
+game
+garden
+garment
+garments
+gatam
+gate
+gather
+gathered
+gaunt
+gave
+gavest
+gaza
+gazed
+genealogies
+general
+generation
+generations
+gera
+gerar
+gershon
+get
+gether
+gift
+gifts
+gihon
+gilead
+gir'gashites
+give
+given
+givest
+giving
+go
+goat
+goats
+god
+god's
+gods
+goes
+goi'im
+going
+gold
+gomer
+gomor'rah
+gone
+good
+good-looking
+goods
+gopher
+goshen
+got
+gotten
+governed
+government
+governments
+governments:
+governor
+governors
+gracious
+graciously
+grain
+grandchildren
+grandson
+grant
+granted
+grapes
+grass
+grave
+gray
+great
+greater
+greatly
+green
+grew
+grieved
+grievous
+groping
+ground
+grow
+growing
+grown
+grows
+guard
+guards
+guile
+guilt
+guilty
+gum
+guni
+ha'mathites
+had
+hadad
+hadar
+hador'am
+hagar
+haggi
+hairs
+hairy
+half
+hallowed
+ham
+hamor
+hamor's
+hamstring
+hamul
+hand
+hands
+handsome
+hang
+hanged
+hanoch
+happened
+happiness
+happy
+haran
+harass
+harassed
+hard
+hardship
+harlot
+harlotry
+harm
+harshly
+harvest
+harvests
+has
+hast
+haste
+hastened
+hastily
+hate
+hated
+hath
+hav'ilah
+have
+haven
+havilah
+having
+haz'azon-ta'mar
+hazarma'veth
+hazo
+he
+he-asses
+he-goats
+head
+heads
+healed
+heap
+hear
+heard
+hearing
+hearken
+hearkened
+hears
+heart
+hearts
+heat
+heaven
+heavens
+heber
+hebrew
+hebrews
+hebron
+heed
+heeded
+heel
+heels
+heifer
+height
+heir
+held
+help
+helper
+heman
+hemdan
+her
+herb
+herd
+herds
+herdsmen
+here
+herself
+heth
+hewed
+hezron
+hid
+hidden
+hide
+high
+hill
+hills
+him
+himself
+hind
+hinder
+hip
+hirah
+hire
+hired
+his
+history
+hither
+hittite
+hittites
+hivite
+hivites
+hobah
+hold
+hollow
+home
+honest
+honesty
+honey
+honor
+honored
+hori
+horite
+horites
+horns
+horse's
+horsemen
+horses
+host
+hot
+hotly
+house
+household
+households
+houses
+how
+hul
+human
+humane
+humble
+humbled
+hundred
+hundredfold
+hundredth
+hunt
+hunted
+hunter
+hunting
+huppim
+husband
+husham
+hushim
+i
+if
+ill
+ill-treat
+image
+imagination
+immediate
+imnah
+impel
+importance
+imposing
+impossible
+in
+inasmuch
+incapable
+including
+increased
+indeed
+independent
+indian
+indignant
+inestimable
+inevitably
+inhabitants
+inheritance
+iniquity
+injuries
+injury
+innocence
+innocent
+inquire
+inquired
+inside
+instead
+institute
+instituted
+instructed
+instructing
+instrument
+instruments
+insult
+insurrections
+integrity
+intended
+intentions
+interpret
+interpretation
+interpretations
+interpreted
+interpreter
+interrupt
+into
+introducing
+invariably
+invasion
+invasions
+invested
+iob
+irad
+iram
+iron
+is
+is'sachar
+isaac
+isaac's
+iscah
+ish'mael
+ish'mael's
+ish'maelites
+ishbak
+ishvah
+ishvi
+israel
+israel's
+israelites
+it
+ithran
+its
+itself
+jabal
+jabbok
+jachin
+jacob
+jacob's
+jah'leel
+jahzeel
+jalam
+jamin
+japheth
+jar
+jared
+javan
+je'gar-sahadu'tha
+je'ush
+jealous
+jeb'usites
+jemu'el
+jerah
+jesting
+jetheth
+jetur
+jewelry
+jezer
+jidlaph
+jobab
+joined
+joint
+jokshan
+joktan
+jordan
+joseph
+joseph's
+journey
+journeyed
+jubal
+judah
+judah's
+judge
+judged
+judges
+judgment
+judiciary
+judith
+jurisdiction
+jury:
+just
+justice
+kad'monites
+kadesh
+ked'emah
+kedar
+keep
+keeper
+keepers
+kemu'el
+ken'ites
+ken'izzites
+kenan
+kenaz
+kept
+ketu'rah
+kid
+kids
+kill
+killed
+kind
+kindled
+kindness
+kindred
+kinds
+king
+king's
+kingdom
+kings
+kinsman
+kinsmen
+kir'iath-ar'ba
+kiss
+kissed
+kittim
+knead
+knee
+kneel
+knees
+knew
+knife
+know
+knowing
+knowledge
+known
+knows
+kohath
+korah
+laban
+laban's
+labor
+lack
+lacking
+lad
+lad's
+ladder
+lads
+laid
+lain
+lamb
+lambs
+lamech
+lamentation
+lamented
+land
+lands
+language
+languages
+languished
+large
+lasha
+last
+later
+laugh
+laughed
+laughter
+laws
+lay
+laying
+le-um'mim
+lead
+leaf
+leah
+leah's
+lean
+leap
+leaped
+learn
+learned
+least
+leave
+leaves
+led
+left
+legislate
+legislation:
+legislative
+legislature
+legislatures
+leha'bim
+length
+lentils
+lesser
+lest
+let
+letu'shim
+levey
+levi
+liberty
+lie
+lies
+life
+lifeblood
+lift
+lifted
+light
+lights
+like
+likely
+likeness
+likewise
+limping
+linen
+lingered
+lion
+lion's
+lioness
+listen
+listened
+listening
+little
+live
+lived
+lives
+livestock
+living
+lo
+load
+loaded
+lodge
+lodged
+lodging
+loins
+long
+longed
+longer
+longs
+look
+looked
+looking
+loose
+lord
+lord's
+lords
+loss
+lot
+lot's
+lotan
+lotan's
+loud
+love
+loved
+lovely
+loves
+lower
+lowered
+loyally
+lud
+ludim
+luz
+lying
+lyre
+ma'acah
+ma'halath
+ma-hal'alel
+mach-
+mach-pe'lah
+machir
+madai
+made
+mag'diel
+magicians
+magnanimity
+magog
+mahana'im
+maid
+maiden
+maids
+maidservants
+make
+maker
+making
+mal'chi-el
+male
+males
+mamre
+man
+man'ahath
+man's
+manas'seh
+manas'seh's
+mandrakes
+mankind
+manly
+manner
+mantle
+many
+mark
+marked
+marriage
+marriages
+married
+marries
+marry
+mash
+masre'kah
+massa
+master
+master's
+mate
+mating
+matred
+matter
+may
+me
+me'zahab
+me-hu'ja-el
+me-thu'sha-el
+meal
+mean
+meaning
+means
+meant
+meantime
+meanwhile
+measure
+measured
+measures
+medan
+meditate
+meet
+meets
+mehet'abel
+mel-chiz'edek
+members
+men
+men's
+mend
+mended
+menservants
+mention
+merar'i
+mercenaries
+merchants
+merciful
+merciless
+mercy
+merry
+mesha
+meshech
+mesopota'mia
+message
+messengers
+met
+methu'selah
+mibsam
+mibzar
+mid'ian
+mid'ianite
+mid'ianites
+midst
+midwife
+might
+mightier
+mightily
+mighty
+migrated
+migration
+milcah
+milch
+military
+milk
+mind
+mine
+mirth
+miscarried
+mishma
+mist
+mistress
+mizpah
+mizzah
+moab
+moabites
+mock
+mocking
+money
+monsters
+month
+months
+moon
+more
+moreh
+moreover
+mori'ah
+morning
+morsel
+mortar
+most
+mother
+mother's
+mothers
+mottled
+mount
+mountain
+mountains
+mourn
+mourned
+mourning
+mouth
+moved
+moves
+moving
+much
+multiplied
+multiply
+multitude
+muppim
+murders
+must
+mutually
+my
+myrrh
+myself
+na'amah
+na'aman
+nahath
+nahor
+nahor's
+naked
+nakedness
+name
+named
+names
+naph'tali
+naph-tu'him
+naphish
+nation
+nations
+native
+naturalization
+nature
+nature's
+near
+neba'ioth
+necessary
+necessity
+neck
+need
+negeb
+neglected
+neighboring
+neither
+nephilim
+never
+nevertheless
+new
+next
+night
+nights
+nile
+nimrod
+nin'eveh
+nine
+nineteen
+ninety
+ninety-five
+ninety-nine
+no
+noah
+noah's
+nod
+none
+noon
+nor
+north
+northward
+nose
+nostrils
+not
+nothing
+now
+number
+numbered
+numbers
+nurse
+nuts
+o
+oak
+oaks
+oath
+obal
+obedience
+obeisance
+obey
+obeyed
+object
+obstructed
+obstructing
+obtain
+obtained
+occasion
+occupation
+odious
+odor
+of
+off
+offended
+offense
+offenses:
+offer
+offered
+offering
+offerings
+office
+officer
+officers
+offices
+offspring
+oh
+ohad
+oholiba'mah
+oil
+old
+older
+oldest
+olive
+omar
+on
+onam
+onan
+once
+one
+ones
+only
+onyx
+open
+opened
+operation
+ophir
+opinions
+opposing
+opposite
+oppressed
+oppressions
+or
+order
+orders
+organizing
+ornaments
+other
+others
+ought
+our
+ours
+ourselves
+out
+outcry
+outside
+outwitted
+over
+overdriven
+overseer
+overseers
+oversight
+overtake
+overthrew
+overthrow
+overtook
+own
+owns
+oxen
+pace
+paddan
+paddan-aram
+paid
+pain
+pair
+pairs
+pallu
+paralleled
+paran
+part
+parts
+pass
+passed
+past
+pasture
+pastured
+pasturing
+path
+pathru'sim
+patient
+pau
+pay
+payment
+pe'lah
+peace
+peaceably
+peeled
+peleg
+peni'el
+penu'el
+people
+peopled
+peoples
+per'izzites
+perez
+perfidy
+perform
+perhaps
+perish
+permit
+perpetuated
+persons
+petitioned
+petitions
+pharaoh
+pharaoh's
+phicol
+philistines
+physicians
+piece
+pieces
+pigeon
+pildash
+pillar
+pinon
+pipe
+pishon
+pistachio
+pit
+pitch
+pitched
+pits
+place
+placed
+places
+plagues
+plain
+plainly
+plane
+planning
+plant
+planted
+plants
+play
+played
+playing
+pleasant
+please
+pleased
+pleases
+pleasing
+pleasure
+pledge
+plenteous
+plenty
+plowing
+plucked
+plump
+plundered
+point
+political
+poor
+poplar
+population
+portion
+portions
+possess
+possession
+possessions
+posterity
+pot
+pot'i-phar
+poti'phera
+pottage
+poured
+poverty
+power
+powers
+praise
+praised
+pray
+prayed
+prayer
+pre-eminence
+pre-eminent
+prepare
+prepared
+presence
+present
+presented
+preserve
+preserved
+pressed
+pressing
+pretended
+prevail
+prevailed
+prevent
+prevented
+prey
+price
+pride
+priest
+priests
+prince
+princes
+principles
+prison
+prisoners
+proceed
+produce
+profit
+promise
+promised
+pronounce
+property
+prophet
+proposal
+propose
+prosper
+prospered
+protecting
+protection
+prove
+provender
+provide
+provided
+providence
+province
+provision
+provisions
+prudence
+public
+publish
+punishment
+purchased
+purify
+purpose
+pursue
+pursued
+pursuing
+pursuit
+put
+putting
+puvah
+quarrel
+quarreled
+quartering
+questioned
+questions
+quickly
+quiet
+quiver
+ra'amah
+rachel
+rachel's
+raid
+raiders
+raiment
+rain
+rained
+raise
+raised
+raising
+ram
+ram'eses
+rams
+ran
+rather
+ravaged
+raven
+ravenous
+re'u
+reached
+ready
+really
+reaped
+reason
+reassured
+rebekah
+rebekah's
+rebelled
+rebuked
+receded
+receive
+received
+reckoned
+reckoning
+recognize
+recognized
+records
+rectitude
+red
+redeemed
+redress
+reduce
+reed
+refresh
+refused
+refusing
+regard
+regarded
+regards
+reho'both
+reho'both-ir
+reign
+reigned
+reliance
+relief
+relinquish
+remain
+remained
+remaining
+remains
+remember
+remembered
+reminded
+remnant
+remove
+removed
+removing
+render
+renown
+rent
+repeated
+repeatedly
+reph'aim
+replace
+replaced
+replied
+report
+representation
+representative
+representatives
+reproach
+require
+required
+requires
+rescue
+resen
+reserve
+reserved
+respect
+rest
+rested
+resting
+restore
+restored
+restrained
+return
+returned
+reu'el
+reuben
+reumah
+revealed
+revived
+reward
+rib
+ribs
+rich
+ride
+rider
+right
+righted
+righteous
+righteousness
+rightly
+rights
+ring
+rings
+ripened
+riphath
+rise
+risen
+river
+rivers
+road
+robe
+rock
+rode
+rods
+roll
+rolled
+roof
+room
+rooms
+rose
+rosh
+roughly
+round
+rouse
+routed
+royal
+rule
+ruler
+ruler's
+run
+runnels
+sab'teca
+sabtah
+sack
+sackcloth
+sacks
+sacred
+sacrifice
+sacrifices
+saddle
+saddled
+safely
+safety
+said
+sake
+salaries
+salem
+salt
+salvation
+same
+samlah
+sand
+sandal-thong
+sar'ai
+sarah
+sarah's
+sat
+savages
+saved
+saving
+savory
+saw
+say
+saying
+says
+scarcely
+scarlet
+scatter
+scattered
+scepter
+se'ir
+sea
+searched
+seas
+seashore
+season
+seasons
+seba
+second
+secretly
+secure
+security
+see
+seed
+seedtime
+seeing
+seek
+seeking
+seem
+seemed
+seen
+sees
+seize
+seized
+select
+self-evident
+sell
+semen
+send
+sent
+separate
+separated
+separation
+sephar
+sepulchre
+sepulchres
+serah
+sered
+serpent
+serug
+servant
+servant's
+servants
+serve
+served
+service
+serving
+set
+seth
+settle
+settled
+settlement
+seven
+sevenfold
+seventeen
+seventeenth
+seventh
+seventy
+seventy-five
+seventy-seven
+seventy-sevenfold
+severe
+sewed
+sexes
+sha'veh-kiriatha'im
+shall
+shammah
+share
+shaul
+shaved
+shaveh
+she
+she-asses
+she-goat
+she-goats
+sheaf
+shear
+sheaves
+sheba
+shechem
+shechem's
+shed
+sheds
+sheep
+sheepfolds
+sheepshearers
+shekel
+shekels
+shelah
+sheleph
+shelter
+shem
+sheme'ber
+sheol
+shepherd
+shepherding
+shepherds
+shepho
+shibah
+shield
+shillem
+shimron
+shinab
+shinar
+ships
+shobal
+shore
+short
+shortly
+shot
+should
+shoulder
+shoulders
+show
+showed
+shown
+shua
+shua's
+shuah
+shuni
+shur
+shut
+siddim
+side
+sidon
+sight
+sign
+signet
+signs
+silence
+silver
+simeon
+sin
+since
+sinew
+sinites
+sinned
+sinners
+sinning
+sister
+sister's
+sit
+sitnah
+sitting
+six
+sixteen
+sixth
+sixty
+sixty-five
+sixty-nine
+sixty-six
+sixty-two
+skilful
+skin
+skins
+slain
+slaughter
+slave
+slaves
+slay
+slays
+sleek
+sleep
+sleeves
+slept
+slew
+slope
+slowly
+small
+smell
+smelled
+smoke
+smoking
+smooth
+so
+sodom
+soil
+sojourn
+sojourned
+sojourner
+sojourners
+sojourning
+sojournings
+sold
+sole
+solemnly
+some
+son
+son's
+songs
+sons
+sons'
+sons-in-law
+soon
+sore
+sorely
+sorrow
+sorrowful
+sorry
+sort
+sorts
+sought
+soul
+sound
+south
+southward
+sow
+sowed
+space
+spare
+spared
+speak
+speaking
+speaks
+speckled
+speech
+spend
+spent
+spies
+spilled
+spirit
+splendor
+spoil
+spoke
+spoken
+spotted
+spread
+spring
+springing
+springs
+sprouted
+sprung
+staff
+stage
+stalk
+stand
+standing
+stands
+stars
+state
+states
+states:
+station
+statute
+statutes
+stay
+stayed
+stead
+steadfast
+steal
+steward
+still
+stole
+stolen
+stone
+stones
+stood
+stooped
+stop
+stopped
+store
+stored
+storehouses
+story
+stranger
+strangers
+straw
+streaks
+stream
+street
+strength
+stretched
+strife
+striking
+striped
+stripped
+striven
+strong
+stronger
+strongly
+struck
+struggled
+subdue
+subdued
+subject
+submit
+submitted
+subsided
+substance
+subtle
+success
+successful
+succoth
+such
+suck
+suckle
+suffer
+sufferable
+sufferance
+suitable
+summer
+summoned
+sun
+superior
+supplanted
+supplied
+support
+suppose
+supreme
+surely
+surety
+surrounded
+survivors
+suspended
+suspending
+sustained
+swallowed
+swarm
+swarming
+swarms
+swear
+sweat
+sword
+swords
+swore
+sworn
+system
+systems
+table
+tahash
+take
+taken
+taking
+talked
+talking
+tamar
+tamarisk
+tambourine
+tarried
+tarry
+tarshish
+taxes
+te'manites
+tebah
+teeth
+tell
+tells
+tema
+teman
+ten
+tender
+tenderly
+tent
+tenth
+tents
+tenure
+terah
+terms:
+territory
+terror
+tested
+than
+that
+the
+thee
+their
+theirs
+them
+themselves
+then
+thence
+there
+therefore
+therein
+these
+they
+thicket
+thigh
+thin
+thing
+things
+thinking
+third
+thirteen
+thirteenth
+thirty
+thirty-five
+thirty-four
+thirty-seven
+thirty-three
+thirty-two
+this
+thistles
+thorns
+thoroughly
+those
+thou
+thought
+thoughts
+thousand
+thousands
+thread
+three
+threshing
+throne
+through
+throughout
+throw
+thus
+thy
+tidal
+tidings
+ties
+tigris
+till
+tiller
+time
+times
+timna
+timnah
+tiras
+to
+today
+togar'mah
+together
+toil
+tola
+told
+tomb
+tonight
+too
+took
+top
+tops
+torch
+torn
+totally
+totaly
+touch
+touched
+touches
+toward
+tower
+towns
+trade
+traders
+train
+trained
+transgression
+transient
+transporting
+travailed
+treasure
+treat
+treated
+tree
+trees
+trembled
+trembling
+trial
+tribes
+tried
+troops
+trouble
+troubled
+troubles
+trough
+troughs
+truly
+truth
+truths
+tubal
+tubal-
+tubal-cain
+turn
+turned
+turns
+turtledove
+twelve
+twenty
+twenty-nine
+twenty-seven
+twenty-seventh
+twice
+twins
+two
+tyranny
+tyrant
+tyrants
+unacknowledged
+unalienable
+unawares
+uncircumcised
+uncomfortable
+uncovered
+under
+understand
+understood
+undistinguished
+unfit
+ungirded
+united
+unknown
+unleavened
+unless
+unmoved
+unstable
+until
+unusual
+unwarrantable
+unworth
+up
+upbraided
+upon
+uppermost
+upright
+ur
+urged
+us
+us:
+use
+using
+usurpations
+utterly
+uz
+uzal
+valley
+valuable
+vegetation
+veil
+vengeance
+vent
+vents
+verified
+very
+vesture
+villages
+vindication
+vine
+vineyard
+violence
+violently
+viper
+virgin
+vision
+visions
+visit
+visited
+voice
+void
+vow
+wages
+waging
+wagons
+wait
+waited
+walk
+walked
+walking
+wall
+wander
+wandered
+wanderer
+wandering
+wanting
+wantonness
+war
+warfare
+warned
+was
+wash
+washed
+washes
+watch
+water
+watered
+watering
+waters
+way
+wayside
+we
+weak
+weakness
+wealth
+wealthy
+weaned
+weapons
+wear
+wearied
+weary
+week
+weep
+weeping
+weighed
+weighing
+weight
+weights
+welfare
+well
+well's
+wells
+went
+wept
+were
+west
+westward
+what
+whatever
+whatsoever
+wheat
+whelp
+when
+whence
+whenever
+where
+whereby
+wherever
+whether
+which
+while
+white
+who
+whoever
+whole
+wholesome
+whom
+whomever
+whose
+why
+wicked
+wickedly
+wickedness
+widow
+widow's
+widowhood
+wife
+wife's
+wild
+wilderness
+will
+willing
+wilt
+wind
+window
+windows
+wine
+winged
+winter
+wise
+with
+withered
+withheld
+withhold
+within
+without
+witness
+wives
+wolf
+woman
+woman's
+womb
+wombs
+women
+wood
+word
+words
+wore
+work
+works
+world
+world:
+worse
+worship
+worshiped
+worth
+worthy
+would
+wounding
+wrapping
+wrath
+wrestled
+wrestlings
+wrong
+wrought
+year
+yearned
+years
+yes
+yet
+yield
+yielding
+yoke
+yonder
+you
+young
+younger
+youngest
+your
+yours
+yourself
+yourselves
+youth
+za'avan
+zaph'enath-pane'ah
+zeb'ulun
+zeboi'im
+zem'arites
+zepho
+zerah
+zib'eon
+zillah
+zilpah
+zimran
+ziph'ion
+zo'ar
+zohar
+zuzim
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements.java b/src/com/ibm/icu/dev/data/resources/TestDataElements.java
new file mode 100644
index 0000000..aae433e
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements.java
@@ -0,0 +1,34 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {    
+            "from_root",
+            "This data comes from root"
+        },
+        {
+            "from_en",
+            "In root should be overridden"
+        },
+        { 
+            "from_en_Latn",
+            "In root should be overridden"
+        },
+        {
+            "from_en_Latn_US",
+            "In root should be overridden"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties b/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
new file mode 100644
index 0000000..04c3f14
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
@@ -0,0 +1,10 @@
+# *
+# *******************************************************************************
+# * Copyright (C) 2005-2006, International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# *
+# TestDataElements_en.properties
+from_en=This data comes from en
+from_en_Latn=In en should be overridden
+from_en_Latn_US=In en should be overridden
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
new file mode 100644
index 0000000..e85eb94
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
@@ -0,0 +1,9 @@
+# *
+# *******************************************************************************
+# * Copyright (C) 2005-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# *
+# TestDataElements_en_Latn.properties
+from_en_Latn=This data comes from en_Latn
+from_en_Latn_US=In en_Latn should be overridden
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
new file mode 100644
index 0000000..efc5355
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
@@ -0,0 +1,21 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_en_Latn_US extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_en_Latn_US",
+            "This data comes from en_Latn_US"
+        }
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
new file mode 100644
index 0000000..dfa8468
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
@@ -0,0 +1,23 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_en_US extends ListResourceBundle {
+
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_en_US",
+            "This data comes from en_US"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
new file mode 100644
index 0000000..06d681f
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
@@ -0,0 +1,21 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_te extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_te",
+            "In root should be overridden"
+        }
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java b/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java
new file mode 100644
index 0000000..0c1b4a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java
@@ -0,0 +1,24 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElments_fr_Latn_FR extends ListResourceBundle {
+
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_fr_Latn_FR",
+            "This data comes from fr_Latn_FR"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/riwords.txt b/src/com/ibm/icu/dev/data/riwords.txt
new file mode 100644
index 0000000..67dab27
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/riwords.txt
@@ -0,0 +1,32943 @@
+﻿#*******************************************************************************
+#*
+#*   Copyright (C) 2003, National Electronics and Computer Technology Center
+#*   and others.  All Rights Reserved.
+#* 
+#*******************************************************************************
+# Sorted Thai word list used for testing the ThaiCollator class.
+# This list was taken from the Web: <http://www.links.nectec.or.th/itech/download.html>
+#
+# Lines starting with '#' are ignored; others are treated as single words
+# in the UTF-8 encoding.
+#
+#
+# License information:
+# RIWord License
+# 
+# COPYRIGHT AND PERMISSION NOTICE
+# 
+# Copyright (c) 2003 National Electronics and Computer Technology Center and others
+# 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, and/or sell copies of the 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 in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# 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
+# 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 THIS 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 this Software without prior written authorization
+# of the copyright holder.
+# 
+# --------------------------------------------------------------------------------
+# All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+ก
+ก็
+กก
+ก๊ก
+กกขนาก
+กกช้าง
+กกธูป
+กกหู
+ก กา
+กกุธภัณฑ์
+ก ข
+ก ข ไม่กระดิกหู
+กง
+ก่ง
+ก้ง
+ก๊ง
+กงกอน
+กงการ
+กงเกวียน
+กงเกวียนกำเกวียน
+กงโก้
+กงค้าง
+ก้งโค้ง
+ก้งง
+กงจักร
+กงฉาก
+กงไฉ่
+กงเต๊ก
+กงพัด
+กงวาน
+กงสี
+กงสุล
+กช
+กช-
+กชกร
+กฎ
+กฎกระทรวง
+กฎเกณฑ์
+กฎข้อบังคับ
+กฎทบวง
+กฎธรรมชาติ
+กฎธรรมดา
+กฎบัตร
+กฎบัตรกฎหมาย
+กฎบัตรสหประชาชาติ
+กฎมนเทียรบาล
+กฎยุทธวินัย
+กฎศีลธรรม
+กฎเสนาบดี
+กฎหมาย
+กฎหมายนานาประเทศ
+กฎหมายปิดปาก
+กฎหมายพาณิชย์
+กฎหมายแพ่ง
+กฎหมายระหว่างประเทศ
+กฎหมายเหตุ
+กฎหมายอาญา
+กฎหมู่
+กฎแห่งกรรม
+กฎอัยการศึก
+กฏิ
+กฏุก
+กฏุก-
+กฏุกผล
+กฐิน
+กฐิน-
+กฐินทาน
+กฐินัตถารกรรม
+กณิกนันต์
+กณิการ์
+กด
+กดขี่
+กดคอ
+กดชา
+กดดัน
+กดน้ำ
+กดราคา
+กดหัว
+กดเหลือง
+ก็ดี
+ก็ได้
+กตเวทิตา
+กตเวที
+กตัญชลี
+กตัญญุตา
+กตัญญู
+กตาธิการ
+กตาภินิหาร
+ก็ตาม
+กติกา
+กติกาสัญญา
+กถา
+กถามรรค
+กถามรรคเทศนา
+กถามุข
+กถิกาจารย์
+กทรรป
+กทลี
+กน
+ก่น
+ก้น
+กนก
+ก้นกบ
+ก้นกระดก
+ก้นกุฏิ
+ก้นขบ
+ก้นครัว
+ก่นโคตร
+ก้นตะกรน
+ก่นแต่
+กนน
+กนนเชอ
+ก่นนโถง
+กนนเหิม
+ก้นบึ้ง
+ก้นปล่อง
+ก้นปอด
+ก้นปิด
+ก้นปูด
+ก้นแมลงสาบ
+ก้นย้อย
+ก่นสร้าง
+ก้นหนัก
+ก้นหย่อน
+ก้นหอย
+ก้นอ้อย
+กนิษฐ-
+กนิษฐ์
+กนิษฐภคินี
+กนิษฐภาดา
+กนิษฐา
+กบ
+กบฏ
+กบดาน
+กบเต้น
+กบทู
+กบทูด
+กบบัว
+กบเลือกนาย
+กบาล
+กบินทร์
+กบิล
+กบี่
+กบี่ธุช
+กบูร
+กเบนทร์
+กโบร
+กโบล
+กปณ
+กปณก
+กปณา
+กปิ
+กปิตัน
+กม
+ก้ม
+กมณฑลาภิเษก
+กมณฑโลทก
+กมล
+กมลา
+กมลาศ
+กมลาสน์
+กมเลศ
+ก้มหน้า
+ก้มหน้าก้มตา
+ก้มหลัง
+ก้มหัว
+กมัณฑลุ
+กมุท
+กร
+กรก
+กรกช
+กรกฎ
+กรกฎาคม
+กรกฏ
+กรง
+กรงทอง
+กรงเล็บ
+กรชกาย
+กรณฑ์
+กรณิการ์
+กรณี
+กรณีย-
+กรณีย์
+กรณียะ
+กรด
+กรน
+กรนทา
+กรนนเช้า
+กรบ
+กรบูร
+กรพินธุ์
+กรภุม
+กรม
+กรมกรอม
+กรมการ
+กรมการพิเศษ
+กรมเกรียม
+กรมท่า
+กรมท่าขวา
+กรมท่าซ้าย
+กรมธรรม์
+กรมธรรม์ประกันภัย
+กรมนา
+กรมวัง
+กรมศักดิ์
+กรร
+กรรกง
+กรรกฎ
+กรรกศ
+กรรเกด
+กรรไกร
+กรรเจียก
+กรรชิง
+กรรชิด
+กรรเชอ
+กรรเช้า
+กรรเชียง
+กรรโชก
+กรรซ้นน
+กรรแซง
+กรรฐ์
+กรรฐา
+กรรณ
+กรรณยุคล
+กรรณา
+กรรณิกา
+กรรณิการ์
+กรรดิ
+กรรดิก
+กรรดึก
+กรรตุ
+กรรตุ-
+กรรตุการก
+กรรตุวาจก
+กรรตุสัญญา
+กรรไตร
+กรรทบ
+กรรแทก
+กรรแทรก
+กรรบาสิก
+กรรบาสิกพัสตร์
+กรรบิด
+กรรบูร
+กรรปาสิก
+กรรปุร
+กรรพุม
+กรรพุ่ม
+กรรภิรมย์
+กรรม
+กรรม-
+กรรม์
+กรรมกร
+กรรมกรณ์
+กรรมการ
+กรรมการก
+กรรมการิณี
+กรรมขัย
+กรรมคติ
+กรรมชรูป
+กรรมชวาต
+กรรมฐาน
+กรรมบถ
+กรรมพันธุ์
+กรรม์ภิรมย์
+กรรมวาจก
+กรรมวาจา
+กรรมวาจาจารย์
+กรรมวิธี
+กรรมวิบาก
+กรรมเวร
+กรรมศาลา
+กรรมสัมปาทิก
+กรรมสิทธิ์
+กรรมสิทธิ์เครื่องหมายและยี่ห้อการค้าขาย
+กรรมสิทธิ์ผู้แต่งหนังสือ
+กรรมสิทธิ์รวม
+กรรมัชวาต
+กรรมาชีพ
+กรรมาธิการ
+กรรมาร
+กรรลี
+กรรลึง
+กรรษก
+กรรสะ
+กรรแสง
+กรรหาย
+กรรเหิม
+กรรโหย
+กรรเอา
+กรรุณา
+กรวด
+กรวดน้ำ
+กรวน
+กรวบ
+กรวม
+กร้วม
+กรวย
+กรวยเชิง
+กรวยบ้าน
+กรวยป่า
+กรวิก
+กรสาปน์
+กรสุทธิ์
+กรอ
+กร้อ
+กรอก
+กร็อกกร๋อย
+กรอกแกรก
+กรอกรุย
+กรอง
+กรองกรอย
+กรองทอง
+กรอด
+กร่อน
+กรอบ
+กรอบเกรียบ
+กรอบแกรบ
+กรอบเช็ดหน้า
+กรอบหน้า
+กรอม
+กร่อม
+กร่อมๆ
+กร่อย
+กระ
+กระกร
+กระกรับกระเกรียบ
+กระกรี๊ด
+กระกรุ่น
+กระกลับกลอก
+กระกวด
+กระกอง
+กระกัด
+กระกี้
+กระกูล
+กระเกรอก
+กระเกริก
+กระเกริ่น
+-กระเกรียบ
+กระเกรียม
+กระเกรียว
+กระเกรี้ยว
+กระเกลือก
+กระคน
+กระคาย
+กระคุก
+กระงกกระงัน
+กระงกกระเงิ่น
+กระง่องกระแง่ง
+-กระงอด
+กระง่อนกระแง่น
+กระเง้ากระงอด
+กระโงก
+กระจก
+กระจกเงา
+กระจกตา
+กระจกนูน
+กระจกฝ้า
+กระจกเว้า
+กระจกหุง
+กระจง
+กระจร
+กระจอก
+กระจอกงอกง่อย
+กระจอกชวา
+กระจอกเทศ
+กระจองหง่อง
+กระจ๋องหง่อง
+กระจองอแง
+กระจ้อน
+กระจอนหู
+กระจ้อย
+กระจ้อยร่อย
+กระจ๋อหวอ
+กระจะ
+กระจัก
+กระจัง
+กระจังหลังเบี้ย
+กระจัด
+กระจัดกระจาย
+กระจัดพลัดพราย
+กระจับ
+กระจับบก
+กระจับปิ้ง
+กระจับปี่
+กระจ่า
+กระจ่าง
+กระจาด
+กระจาน
+กระจาบ
+-กระจาม
+กระจาย
+กระจายนะมณฑล
+กระจายเสียง
+กระจายหางดอก
+กระจาว
+-กระจิก
+-กระจิ๋ง
+กระจิด
+กระจิบ
+-กระจิบ
+-กระจิ๋ม
+กระจิริด
+กระจิ๋ว
+กระจิ๋วหลิว
+กระจี้
+-กระจี๋
+กระจุก
+กระจุกกระจิก
+กระจุกกระจุย
+กระจุ๋งกระจิ๋ง
+กระจุบ
+กระจุ๊บ
+กระจุบกระจิบ
+กระจุ๋มกระจิ๋ม
+กระจุย
+กระจุยกระจาย
+กระจู้
+กระจู๋กระจี๋
+กระจูด
+กระเจอะกระเจิง
+กระเจา
+กระเจ่า
+กระเจ้า
+กระเจาะ
+กระเจิง
+กระเจิดกระเจิง
+กระเจี้ยง
+กระเจี๊ยบ
+กระเจี๊ยบเปรี้ยว
+กระเจียว
+กระเจี๊ยว
+กระแจะ
+กระโจน
+กระโจม
+กระโจมกระจาม
+กระโจมทอง
+กระโจมไฟ
+กระโจมอก
+กระฉง
+กระฉอก
+กระฉอกกระแฉก
+กระฉ่อน
+กระฉับกระเฉง
+กระฉิ่ง
+กระฉีก
+กระฉูด
+กระเฉก
+-กระเฉง
+กระเฉด
+-กระแฉก
+กระแฉ่น
+กระโฉกกระเฉก
+กระโฉม
+กระชง
+กระชดกระช้อย
+-กระชวย
+กระชอก
+กระชอน
+กระชอม
+กระชอมดอก
+กระช้อย
+กระช้อยนางรำ
+กระชัง
+กระชังหน้าใหญ่
+กระชั้น
+กระชับ
+กระชาก
+กระช่าง
+กระชาเดิม
+กระชาย
+กระชิง
+กระชิด
+กระชุ
+กระชุก
+กระชุ่มกระชวย
+กระเชอ
+กระเชอก้นรั่ว
+กระเชา
+กระเช้า
+กระเช้าผีมด
+กระเช้าสวรรค์
+กระเช้าสีดา
+กระเชียง
+กระแชง
+กระแชะ
+กระโชก
+กระโชกกระชั้น
+กระโชกกระชาก
+กระโชกโฮกฮาก
+กระซวย
+-กระซวย
+-กระซ้อ
+กระซ่องกระแซ่ง
+กระซับ
+กระซ่าง
+กระซาบ
+กระซิก
+กระซิกๆ
+กระซิกกระซวย
+กระซิกกระซี้
+กระซิบ
+กระซิบกระซาบ
+-กระซี้
+กระซี้กระซ้อ
+กระซุง
+กระซุบกระซิบ
+กระซุ้ม
+กระซู่
+-กระเซ
+กระเซ็น
+กระเซอ
+กระเซอะกระเซอ
+กระเซอะกระเซิง
+กระเซ้า
+กระเซ้ากระซี้
+กระเซิง
+-กระเซิง
+กระแซ
+กระแซะ
+กระโซกระเซ
+กระฎี
+กระฎุมพี
+กระดก
+กระดกกระดนโด่
+กระด้ง
+-กระดนโด่
+กระดวง
+กระดวน
+กระด้วมกระเดี้ยม
+กระดอ
+กระดอง
+กระดองหาย
+กระดอน
+กระดอม
+กระดักกระเดี้ย
+กระดังงัว
+กระดังงา
+กระดังงาจีน
+กระดังงาเถา
+กระดังงาลนไฟ
+กระดาก
+กระดากกระเดื่อง
+กระด้าง
+กระด้างกระเดื่อง
+กระดางลาง
+กระดาด
+กระดาดขาว
+กระดาดดำ
+กระดาดแดง
+กระดาน
+กระดานชนวน
+กระดานชัย
+กระดานดำ
+กระดานโต้คลื่น
+กระดานถีบ
+กระดานพน
+กระดานพิง
+กระดานไฟ
+กระดานลื่น
+กระดานเลียบ
+กระดานหก
+กระดาษ
+กระดาษแก้ว
+กระดาษข่อย
+กระดาษไข
+กระดาษเงินกระดาษทอง
+กระดาษซับ
+กระดาษทราย
+กระดาษเทศ
+กระดาษฟาง
+กระดาษว่าว
+กระดาษสา
+กระดำกระด่าง
+กระดิก
+กระดิกกระเดี้ย
+กระดิ่ง
+-กระดิ้ง
+กระดิ่งทอง
+กระดิบ
+กระดิบๆ
+กระดี่
+กระดี้กระเดียม
+กระดี่ได้น้ำ
+กระดึง
+กระดึงช้างเผือก
+กระดึงพระราม
+กระดืบ
+กระดุ
+กระดุกกระดิก
+กระดุ้งกระดิ้ง
+กระดุบๆ
+กระดุบกระดิบ
+กระดุม
+กระดูก
+กระดูกกบ
+กระดูกไก่ดำ
+กระดูกขัดมัน
+กระดูกเขียด
+กระดูกแข็ง
+กระดูกค่าง
+กระดูกงู
+กระดูกดำ
+กระดูกร้องได้
+กระดูกสันหลัง
+กระดูกอึ่ง
+-กระเดก
+กระเด้ง
+กระเด็น
+กระเด้า
+กระเด้าดิน
+กระเด้าลม
+กระเดาะ
+กระเดาะปาก
+กระเดิด
+-กระเดี้ย
+กระเดียด
+-กระเดียม
+-กระเดี้ยม
+กระเดือก
+กระเดื่อง
+กระแด็กๆ
+กระแด้ง
+กระแด้แร่
+กระแด่วๆ
+กระแดะ
+กระแดะกระแด๋
+กระโดก
+กระโดกกระเดก
+กระโดง
+กระโดงคาง
+กระโดงแดง
+กระโดด
+กระโดดร่ม
+กระโดน
+กระโดนดิน
+กระใด
+กระได
+กระไดแก้ว
+กระไดลิง
+กระตรกกระตรำ
+กระตร้อ
+กระตรับ
+กระตราก
+-กระตรำ
+กระตรุด
+กระตรุม
+กระต้วมกระเตี้ยม
+กระต้อ
+กระต่องกระแต่ง
+กระต๊อบ
+กระต้อยตีวิด
+กระตัก
+กระตั้ว
+-กระตาก
+กระต่าย
+กระต่ายขูด
+กระต่ายจันทร์
+กระต่ายจาม
+กระต่ายจีน
+กระต่ายชมจันทร์
+กระต่ายต้องแร้ว
+กระต่ายตื่นตูม
+กระต่ายเต้น
+กระต่ายสามขา
+กระต่ายหมายจันทร์
+กระติก
+-กระติก
+-กระติ้ง
+กระติ๊ด
+กระติ๊ดขี้หมู
+กระติบ
+กระตือรือร้น
+กระตุก
+กระตุกกระติก
+กระตุ้งกระติ้ง
+กระตุ่น
+กระตุ้น
+กระตูบ
+กระเตง
+กระเต็น
+กระเตอะ
+กระเตาะ
+กระเตาะกระแตะ
+-กระเตี้ยม
+กระเตื้อง
+กระแต
+-กระแต่ง
+กระแตแต้แว้ด
+กระแตไต่ไม้
+กระแตวับ
+-กระแตะ
+กระโตกกระตาก
+กระโตน
+กระไตร
+กระถด
+กระถอบ
+กระถั่ว
+กระถาง
+กระถิก
+กระถิน
+กระถินหอม
+กระถึก
+กระเถิบ
+กระโถน
+กระโถนท้องพระโรง
+กระโถนปากแตร
+กระโถนฤๅษี
+กระทก
+กระทง
+กระทงแถลง
+กระทงน้อย
+กระทงป่า
+กระทงเพชร
+กระทงลอย
+กระทงลาย
+กระทงเหิน
+กระทด
+กระทดกระทัน
+กระทบ
+กระทบกระทั่ง
+กระทบกระเทียบ
+กระทบกระเทือน
+กระทบกระแทก
+กระทรวง
+กระทวย
+กระทอก
+กระท้อน
+กระท่อนกระแท่น
+กระท่อม
+กระท้อมกระแท้ม
+กระท่อมขี้หมู
+กระท่อมเลือด
+กระทะ
+กระทะใบบัว
+กระทั่ง
+กระทั่งติด
+-กระทัน
+-กระทั้น
+กระทา
+กระทาชาย
+กระทาย
+กระทายเหิน
+กระทาสี
+กระทาหอง
+กระทำ
+กระทำความผิด
+กระทิกกระทวย
+กระทิง
+กระทิงโทน
+กระทึง
+กระทืบ
+กระทืบธรณี
+กระทืบยอบ
+กระทุ
+กระทุง
+กระทุ้ง
+กระทุงลาย
+กระทุ้งเส้า
+กระทุงหมาบ้า
+กระทุงเหว
+กระทุ่ม
+กระทุ่มขี้หมู
+กระทุ่มนา
+กระทุ่มหมู
+กระทู้
+กระทู้ถาม
+กระเท่
+กระเท่เร่
+-กระเทียบ
+กระเทียม
+กระเทียมหอม
+กระเทือน
+กระเทือนใจ
+กระเทื้อม
+กระแทก
+กระแทกกระทั้น
+กระแท่น
+-กระแท้ม
+กระแทะ
+กระไทชาย
+กระนก
+กระน่อง
+กระนั้น
+กระนี้
+กระโน้น
+กระไน
+กระบก
+กระบกคาย
+กระบถ
+กระบม
+กระบวน
+กระบวนกระบิด
+กระบวนการ
+กระบวนการยุติธรรม
+กระบวนความ
+กระบวนจีน
+กระบวย
+กระบวร
+กระบอก
+กระบอกเพลา
+กระบอกสูบ
+กระบอกเสียง
+กระบอกหัว
+กระบอง
+กระบองกลึง
+กระบองกัน
+กระบองเพชร
+กระบองราหู
+กระบะ
+กระบัด
+กระบั้วกระเบี้ย
+กระบ่า
+กระบ้า
+กระบาก
+กระบาย
+กระบาล
+กระบิ
+กระบิ้ง
+กระบิด
+กระบิดกระบวน
+กระบิล
+กระบี่
+กระบี่กระบอง
+กระบี่ธุช
+กระบี่ลีลา
+กระบือ
+กระบือเจ็ดตัว
+กระบุง
+กระบุ่มกระบ่าม
+กระบู้กระบี้
+กระบูน
+กระบูนเลือด
+กระบูร
+กระเบง
+กระเบญ
+กระเบ็ดกระบวน
+กระเบน
+กระเบนเหน็บ
+กระเบา
+กระเบิก
+-กระเบี้ย
+กระเบียด
+กระเบียดกระตัก
+กระเบียดกระเสียร
+กระเบียน
+กระเบื้อง
+กระเบื้องเกล็ดเต่า
+กระเบื้องถ้วย
+กระเบื้องถ้วยกะลาแตก
+กระเบื้องปรุ
+กระเบื้องรู
+กระเบื้องหน้าวัว
+กระแบ่
+กระแบก
+กระแบกงา
+กระแบะ
+กระแบะมือ
+กระโบม
+กระปมกระปำ
+กระปมกระเปา
+กระปรอก
+กระปรอกว่าว
+กระปรี้กระเปร่า
+กระปอก
+กระป้อกระแป้
+กระป่อง
+กระป๋อง
+กระปอดกระแปด
+กระป๋อหลอ
+กระปั้วกระเปี้ย
+-กระปำ
+กระป่ำ
+-กระปิ่ม
+กระปุก
+กระปุกหลุก
+กระปุ่ม
+กระปุ่มกระป่ำ
+กระปุ่มกระปิ่ม
+-กระเปา
+กระเป๋า
+กระเป๋าหนัก
+กระเปาะ
+กระเปาะเหลาะ
+-กระเปี้ย
+-กระแป้
+-กระแปด
+กระโปก
+กระโปรง
+กระโปรงทอง
+กระผม
+-กระผลาม
+กระผลีกระผลาม
+กระผาน
+กระผีก
+กระผีกริ้น
+กระพรวน
+กระพริ้ม
+กระพอก
+กระพอกวัว
+กระพอง
+กระพ้อม
+กระพัก
+กระพัง
+กระพังเหิร
+กระพังโหม
+กระพัด
+กระพัดแม่ม่าย
+กระพัตร
+กระพัน
+กระพั่น
+กระพา
+กระพาก
+กระพี้
+กระพี้เขาควาย
+กระพือ
+กระพือข่าว
+กระพือปีก
+กระพุ้ง
+กระพุ่ม
+กระพุ่มมือ
+กระเพลิศ
+กระเพาะ
+กระเพาะปลา
+กระเพิง
+กระเพื่อม
+กระแพง
+กระแพ้ง
+กระฟัดกระเฟียด
+-กระฟาย
+กระฟูมกระฟาย
+-กระเฟียด
+กระมล
+กระมอบ
+กระมอมกระแมม
+กระมัง
+กระมัน
+กระมิดกระเมี้ยน
+กระมึน
+กระมุท
+กระเมาะ
+-กระเมี้ยน
+-กระแมม
+กระย่อง
+-กระย่อง
+กระย่องกระแย่ง
+กระย่อน
+กระย่อม
+กระยา
+กระยาคชวาง
+กระยาง
+กระยาจก
+-กระยาด
+กระยาดอก
+กระยาดอกเบี้ย
+กระยาทาน
+กระยาทิพย์
+กระยาบวช
+กระยาเบี้ย
+กระยารงค์
+กระยาเลย
+กระยาสนาน
+กระยาสังเวย
+กระยาสังแวง
+กระยาสารท
+กระยาเสวย
+กระยาหงัน
+กระยาหาร
+กระยิก
+กระยิ้มกระย่อง
+กระยึกกระยือ
+กระยืดกระยาด
+กระเย้อกระแหย่ง
+-กระแย่ง
+กระรอก
+กระรอกน้ำข้าว
+กระเรียน
+กระโรกน้ำข้าว
+กระโรกใหญ่
+กระไร
+กระลด
+กระลบ
+กระลอก
+กระลอม
+กระละหล่ำ
+กระลัด
+กระลับ
+กระลับกระเลือก
+กระลัมพร
+กระลา
+กระลาการ
+กระลาพิน
+กระลายกระลอก
+กระลาศรี
+กระลำ
+กระลำพร
+กระลำพัก
+กระลำพุก
+กระลิง
+กระลี
+กระลึง
+กระลุมพาง
+กระลุมพุก
+กระลุมพู
+กระลูน
+กระลู่น์
+กระเล็น
+กระเลียด
+กระเลือก
+กระโลง
+กระวน
+กระวนกระวาย
+กระวัด
+กระว่า
+-กระวาด
+กระวาน
+กระวาย
+กระวายกระวน
+กระวิน
+กระวี
+กระวีกระวาด
+กระวูดกระวาด
+กระเวน
+กระเวนกระวน
+กระเวยกระวาย
+กระแวน
+กระโวยกระวาย
+กระศก
+กระศัย
+กระษัตริย์
+กระษัตรี
+กระษัย
+กระษัยกล่อน
+กระษาปณ์
+กระษิร
+กระเษม
+กระเษมสานต์
+กระเษียร
+กระสง
+-กระสน
+กระสบ
+กระสม
+กระสรวล
+กระสร้อย
+กระสวน
+กระสวย
+กระสอบ
+กระสะ
+กระสัง
+กระสัน
+กระสับกระส่าย
+กระสา
+กระสานติ์
+กระสาบ
+กระสาย
+-กระส่าย
+กระสินธุ
+กระสือ
+กระสือดูด
+กระสุงกระสิง
+กระสุน
+กระสุนปืน
+กระสุนวิถี
+กระสูทธิ์
+กระสูบ
+กระเสด
+กระเส็นกระสาย
+กระเส่า
+กระเสาะกระแสะ
+กระเสียน
+กระเสียร
+กระเสือกกระสน
+กระแส
+กระแสการเงิน
+กระแสความ
+กระแสง
+กระแสจิต
+กระแสตรง
+กระแสน้ำ
+กระแสพระราชดำรัส
+กระแสรับสั่ง
+กระแสลม
+กระแสสลับ
+กระแสเสียง
+กระแสะ
+กระโสง
+กระไส
+กระหง่อง
+กระหน
+กระหนก
+กระหนกกินรี
+กระหนกนฤมิต
+กระหนกนารี
+กระหน่อง
+กระหนาก
+กระหนาบ
+กระหนาบคาบเกี่ยว
+กระหน่ำ
+กระหมวด
+กระหมอบ
+กระหม่อม
+กระหม่อมบาง
+กระหมั่ง
+กระหม่า
+-กระหมิด
+กระหมิบ
+กระหมุดกระหมิด
+กระหมุ่น
+กระหมุบ
+กระหมุบกระหมิบ
+กระหย่ง
+กระหยด
+กระหยบ
+กระหย่อน
+กระหย่อม
+กระหยะ
+กระหยัง
+กระหยับ
+กระหยิ่ม
+กระหรอด
+กระหริ่ง
+กระหวน
+กระหวัด
+กระหวัดเกล้า
+กระหว่า
+กระหอง
+กระหัง
+กระหัด
+กระหาง
+กระหาย
+กระหึม
+กระหึ่ม
+กระหืดกระหอบ
+กระเห็น
+กระเหน็จ
+กระเหน็จกระแหน่
+กระเหนียด
+กระเหม็ดกระเหมียด
+กระเหม็ดกระแหม่
+กระเหม่น
+กระเหม่า
+กระเหลียก
+กระเหว่า
+กระเห่อ
+กระเหิม
+กระเหี้ยนกระหือรือ
+กระแห
+กระแหทอง
+-กระแหน
+กระแหน่
+กระแหนบ
+กระแหนะ
+กระแหนะกระแหน
+กระแหมบ
+กระแหม่ว
+กระแหย่ง
+กระแหร่ม
+กระแหล่ง
+กระโห้
+กระโหนด
+กระโหม
+กระโหย
+กระโหย่ง
+-กระอ่วน
+กระอวล
+กระอ้อกระแอ้
+กระออดกระแอด
+กระออบ
+กระออม
+กระอ้อมกระแอ้ม
+กระออมน้ำ
+กระอัก
+กระอักกระอ่วน
+กระอักกระไอ
+กระอั้วแทงควาย
+กระอ้า
+กระอาน
+กระอิด
+กระอิดกระเอื้อน
+กระอึก
+กระอึกกระอัก
+กระอึด
+กระอืด
+กระอุ
+กระอุก
+กระเอบ
+กระเอา
+กระเอิก
+กระเอิบ
+-กระแอ้
+กระแอก
+-กระแอด
+กระแอบ
+กระแอม
+-กระแอ้ม
+กระไอ
+กระไอกระแอม
+กรัก
+กรักขี
+กรัง
+กรัชกาย
+กรัณฑ-
+กรัณฑ์
+กรัณย์
+กรัน
+กรับ
+กรัม
+กราก
+กราง
+กร่าง
+กรางเกรียง
+กราด
+-กราด
+กราดเกรี้ยว
+กราดวง
+กราน
+กร้าน
+กรานกฐิน
+กราบ
+กราบพระ
+กราฟ
+กราม
+กรามช้าง
+กรามพลู
+กราย
+กร่าย
+กราล
+กราว
+กร้าว
+กราวด่าง
+กราวรูด
+กราสิก
+กรำ
+กร่ำ
+กร่ำกรุ่น
+กริก
+กริ๊ก
+กริกกริว
+กริกกรี
+กริ่ง
+กริ๊ง
+กริงกริว
+กริ้งกริ้ว
+กริ่งเกรง
+กริ่งใจ
+กริช
+กริณี
+กริตย-
+กริน
+กรินทร์
+กรินี
+กริบ
+กริม
+กริ่ม
+กริยา
+กริยานุเคราะห์
+กริยาวิเศษณ์
+กริยาวิเศษณ์วลี
+กริยาวิเศษณานุประโยค
+กริว
+กริ้ว
+กริวกราว
+กริวลาย
+กรี
+กรีฑา
+กรีฑากร
+กรีฑาภิรมย์
+กรีฑารมย์
+กรีฑาสถาน
+กรีด
+กรี๊ด
+กรีดกราด
+กรีดกราย
+กรีดนิ้ว
+กรีธา
+กรีธาทัพ
+กรีธาพล
+กรีษ
+กรีส
+กรึง
+กรุ
+กรุก
+กรุกกรัก
+กรุกกรู๊
+กรุง
+กรุ้งกริ่ง
+กรุงเขมา
+กรุงพาลี
+กรุณ
+กรุณา
+กรุณาทฤคุณ
+กรุน
+กรุ่น
+กรุบ
+กรุบกริบ
+กรุ่ม
+กรุ้มกริ่ม
+กรุย
+กรุยกราย
+กรุยเกรียว
+กรู
+กรูด
+กรูม
+กเรณุ
+กเรณุกา
+กเรนทร
+กเรนทร์
+กฤช
+กฤด-
+กฤดยาเกียรณ
+กฤดา
+กฤดาการ
+กฤดาญชลี
+กฤดาธิการ
+กฤดาภินิหาร
+กฤดาอัญชลี
+กฤดิ
+กฤดีกา
+กฤตติกา
+กฤตย-
+กฤตยฎีกา
+กฤตยา
+กฤติกา
+กฤติยา
+กฤษฎา
+กฤษฎาญ
+กฤษฎาญชลิต
+กฤษฎาญชลี
+กฤษฎาญชวลิตวา
+กฤษฎาญชวลิศ
+กฤษฎาญชวเลศ
+กฤษฎาญชุลี
+กฤษฎาธาร
+กฤษฎาภินิหาร
+กฤษฎี
+กฤษฎีกา
+กฤษณา
+กล
+กล-
+กลไก
+กลฉ้อฉล
+กลด
+กลดกำมะลอ
+กลดพระสุเมรุ
+กล่น
+กลบ
+กลบเกลี่ย
+กลบเกลื่อน
+กลบท
+กลบบัตรสุมเพลิง
+กลพยาน
+กลไฟ
+กลม
+กลมกล่อม
+กลมกลืน
+กลมกลืนกลอน
+กลมเกลียว
+กลมดิก
+กลมเป็นลูกมะนาว
+กลมภ
+กลเม็ด
+กลยุทธ์
+กลละ
+กลวง
+กลวม
+กล้วย
+กล้วยกล้าย
+กล้วยแขก
+กล้วยงวงช้าง
+กล้วยเต่า
+กล้วยใต้
+กล้วยน้อย
+กล้วยไม้
+กล้วยสั้น
+กล้วยหมูสัง
+กลวิธี
+กลศ
+กลศาสตร์
+กลหาย
+กลเหย
+กล้อ
+กลอก
+กลอกกลับ
+กลอกแกลก
+กลอง
+กล่อง
+กล้อง
+กล้องแกล้ง
+กล้องจุลทรรศน์
+กล้องตุด
+กล้องโทรทรรศน์
+กลองเพล
+กล้องระดับ
+กล้องวัดมุม
+กล้องสนาม
+กล้องสลัด
+กล้องส่องทางไกล
+กล้องสำรวจ
+กลอน
+กล่อน
+กล้อน
+กลอนด้น
+กลอนตลาด
+กลอนลิลิต
+กลอนสด
+กลอนสวด
+กลอนสุภาพ
+กล่อม
+กล่อมเกลา
+กล่อมเกลี้ยง
+กล้อมแกล้ม
+กล่อมท้อง
+กล่อมมดลูก
+กล่อมหอ
+กลอย
+กลอักษร
+กลอุปกรณ์
+กลัก
+กลัง
+กลัด
+กลัดกลุ้ม
+กลัดมัน
+กลั่น
+กลั้น
+กลั่นกรอง
+กลั่นแกล้ง
+กลั้นใจ
+กลันท
+กลันทก์
+กลับ
+กลับกลอก
+กลับกลาย
+กลับเกลือก
+กลับคำ
+กลับคืน
+กลับตาลปัตร
+กลับเนื้อกลับตัว
+กลับไปกลับมา
+กลับหน้ามือเป็นหลังมือ
+กลัมพก
+กลัมพร
+กลัมพัก
+กลัว
+กลั้ว
+กลั้วเกลี้ย
+กลั้วคอ
+กลัวน้ำ
+กลัวลาน
+กลา
+กล่า
+กล้า
+กลาก
+กลากลาด
+กลาง
+กลางเก่ากลางใหม่
+กลางคน
+กลางคัน
+กลางค่ำ
+กลางคืน
+กลางแจ้ง
+กลางใจมือ
+กลางช้าง
+กลางดิน
+กลางดึก
+กลางเดือน
+กลางทาสี
+กลางนอก
+กลางบ้าน
+กลางแปลง
+กลางเมือง
+กลางวัน
+กลางหาว
+กลาด
+กลาดเกลื่อน
+กล้าได้กล้าเสีย
+กล้านักมักบิ่น
+กลาบาต
+กลาป
+กล้าม
+กลาย
+กล้าย
+กลายกลอก
+กล่าว
+กล่าวเกลี้ยง
+กล่าวขวัญ
+กล่าวโทษ
+กล่าวหา
+กล่าวโอม
+กลาโหม
+กล่ำ
+กล้ำ
+กล้ำกราย
+กล้ำกลืน
+กลิ่ง
+กลิ้ง
+กลิ้งกลอก
+กลิ้งกลางดง
+กลิ้งเกลือก
+กลิงค์
+กลิ้งครกขึ้นเขา
+กลิ้งเป็นลูกมะนาว
+กลิ่น
+กลิ่นอาย
+กลิ้ม
+กลี
+กลี่
+กลีบ
+กลีบตา
+กลีบบัว
+กลีบหิน
+กลึง
+กลึ้ง
+กลึงกล่อม
+กลึงค์
+กลืน
+กลืนไม่เข้าคายไม่ออก
+กลุ่ม
+กลุ้ม
+กลุ้มใจ
+กลุ้มรุม
+กลุ้มอกกลุ้มใจ
+กลู่
+กลูโคส
+กลูน
+กลูน์
+กเลวระ
+กวด
+กวดขัน
+กวน
+กวนน้ำให้ขุ่น
+กวม
+กวย
+กวยจั๊บ
+กวยจี๊
+ก๋วยเตี๋ยว
+กวะ
+กวะกวัก
+กวะแกว่ง
+กวัก
+กวัด
+กวัดแกว่ง
+กวัดไกว
+กวัดไกวไสส่ง
+กวา
+กว่า
+กว้า
+กวาง
+กว่าง
+กว้าง
+กว้างขวาง
+กวางเขน
+กวางแขม
+กวางจุก
+กวางโจน
+กว่างชน
+กวางชะมด
+กว่างโซ้ง
+กวางเดินดง
+กวางตุ้ง
+กวางทราย
+กวางทอง
+กวางป่า
+กวางม้า
+กว้างใหญ่
+กว่าชื่น
+กวาด
+กวาดต้อน
+กวาดตา
+กวาดล้าง
+กวาน
+กว่าน
+กว้าน
+กว๊าน
+กว่าเพื่อน
+กว้าว
+กวาวเครือ
+กวิน
+กวี
+กวีนิพนธ์
+กษณะ
+กษมา
+กษัตร
+กษัตรา
+กษัตราธิราช
+กษัตริย์
+กษัตริยชาติ
+กษัตรี
+กษัตรีย์
+กษัตรีศูร
+กษัย
+กษัย-
+กษัยกล่อน
+กษัยการ
+กษัยน้ำ
+กษัยเลือด
+กษาปณ์
+กษิดิ
+กษีณาศรพ
+กษีดิ
+กษีร
+กษีร-
+กษีรธารา
+กษีรรส
+กษีรามพุ
+กษีรารณพ
+กสานติ์
+กสิ
+กสิกร
+กสิกรรม
+กสิณ
+กหังปายา
+ก หัน
+กหาปณะ
+ก็แหละ
+กเฬวราก
+กอ
+ก่อ
+ก้อ
+ก๊อ
+กอก
+ก๊อก
+ก่อกรรมทำเข็ญ
+ก่อกวน
+ก่อการ
+กอแก
+กอง
+ก่อง
+ก้อง
+กองกลาง
+กองกอย
+กองกูณฑ์
+กองเกิน
+กองเกียรติยศ
+กองข้าว
+กองโจร
+กองทัพ
+กองทัพน้อย
+กองทุน
+กองพล
+กองพัน
+กองฟอน
+กองมรดก
+กองร้อย
+กองหนุน
+กอซ
+กอด
+กอดแข้งกอดขา
+กอดมือกอดตีน
+กอดอก
+ก่อตั้ง
+ก่อน
+ก้อน
+ก้อนขี้หมา
+ก้อนเส้า
+กอบ
+กอบโกย
+กอบด้วย
+กอบนาง
+ก๊อบปี้
+กอปร
+ก้อม
+กอมก้อ
+ก่อมก้อ
+กอย
+ก้อย
+ก๋อย
+ก้อร่อ
+ก้อร่อก้อติก
+ก่อร่างสร้างตัว
+กอริลลา
+ก่อฤกษ์
+กอล์ฟ
+ก่อแล้วต้องสาน
+กอและ
+ก่อสร้าง
+ก่อหวอด
+กอเอี๊ยะ
+กะ
+กะกร่อม
+กะกร้าว
+กะกลิ้ง
+กะก่อง
+กะกัง
+กะกึก
+กะเกณฑ์
+กะเกาะ
+กะโกระ
+กะง้อนกะแง้น
+กะจัง
+กะแจะ
+กะชะ
+กะชัง
+กะชามาศ
+กะชิง
+กะชึ่กกะชั่ก
+กะแช่
+กะซวก
+กะซ้าหอย
+กะซี่
+กะโซ่
+กะโซ้
+กะดก
+กะดง
+กะดวน
+กะดอกๆ
+กะดะ
+กะดังบาย
+กะดัด
+กะด้าง
+กะดำกะด่าง
+กะดี
+กะดี่
+กะดุ้ง
+กะเด้
+กะเดก
+กะเดี๋ยว
+กะได
+กะตรุด
+กะตอก
+กะต่อย
+กะตัก
+กะตัง
+กะตังกะติ้ว
+กะตังใบ
+กะตังมูตร
+กะต่า
+กะต๊าก
+กะต้ำ
+กะติ๊กริก
+กะติงกะแตง
+กะตีบ
+กะตึงกะแตง
+กะตุ๊ก
+กะตุด
+กะตุมู
+กะตูก
+กะเตก
+กะเตงๆ
+กะเตงเรง
+กะแตว
+กะแต่ว
+กะโต๊ก
+กะโตงกะเตง
+กะโต้งโห่ง
+กะถัว
+กะทกรก
+กะทอ
+กะทัง
+กะทังหัน
+กะทัดรัด
+กะทัน
+กะทันหัน
+กะทับ
+กะทำ
+กะทิ
+กะทิขูด
+กะทือ
+กะทุน
+กะเทย
+กะเทยนางหมั่น
+กะเทาะ
+กะแท้
+กะแท่ง
+กะแทน
+กะนวล
+กะนัด
+กะบอนกะบึง
+กะบ่อนกะแบ่น
+กะบัง
+กะบั้ง
+กะบังรังเฝือก
+กะบังลม
+กะบังหน้า
+กะบิ้ง
+กะบิล
+กะบึงกะบอน
+กะบุด
+กะเบ้อ
+กะเบียน
+กะเบือ
+กะปริดกะปรอย
+กะปริบ
+กะปริบกะปรอย
+กะปลกกะเปลี้ย
+กะปวกกะเปียก
+กะปอม
+กะปอมขาง
+กะปะ
+กะปั่น
+กะป้ำกะเป๋อ
+กะปิ
+กะปู
+กะปูด
+กะปูดหลูด
+กะเปะ
+กะเปิ๊บกะป๊าบ
+กะเปียด
+กะแป้น
+กะแปะ
+กะโปรง
+กะโปโล
+กะผลุบกะโผล่
+กะเผ่น
+กะเผลก
+กะโผลกกะเผลก
+กะพง
+กะพรวดกะพราด
+กะพร่องกะแพร่ง
+กะพริบ
+กะพรุน
+กะพรูดกะพราด
+กะพล้อ
+กะพล่องกะแพล่ง
+กะพ้อ
+กะเพรา
+กะเพียด
+กะเพียดช้าง
+กะเพียดหนู
+กะมง
+กะม่ง
+กะเม็ง
+กะเม็งตัวผู้
+กะเมีย
+กะยุ
+กะร่องกะแร่ง
+กะระตะ
+กะระหนะ
+กะรัง
+กะรัต
+กะรัตหลวง
+กะราง
+กะรางหัวขวาน
+กะริง
+กะริงกะเรียด
+กะรุงกะรัง
+กะรุ่งกะริ่ง
+กะรุน
+กะเร
+กะเรกะร่อน
+กะเร่กะร่อน
+กะเร่อ
+กะเร่อกะร่า
+กะเรี่ยกะราด
+กะโรกะเร
+กะลวย
+กะลอ
+กะล่อกะแล่
+กะลอจี๊
+กะล่อน
+กะล่อมกะแล่ม
+กะล่อยกะหลิบ
+กะละปังหา
+กะละมัง
+กะละแม
+กะละออม
+กะลังตังไก่
+กะลัน
+กะลันทา
+กะลา
+กะลาง
+กะลาซอ
+กะลาสี
+กะลำพอ
+กะลิง
+กะลิงปลิง
+กะลิ้มกะเหลี่ย
+กะลิอ่อง
+กะลุมพี
+กะเล็ง
+กะเล่อกะล่า
+กะเลิด
+กะเลียว
+กะแล
+กะโล่
+กะโลง
+กะวอกกะแวก
+กะวะ
+กะส้มชื่น
+กะส้าหอย
+กะหนอกะแหน
+กะหน็องกะแหน็ง
+กะหนะ
+กะหนุงกะหนิง
+กะหมอก
+กะหร่อง
+กะหรอด
+กะหร็อมกะแหร็ม
+กะหราน
+กะหรี่
+กะหรี่ปั๊บ
+กะหลาป๋า
+กะหล่ำ
+กะหลี่
+กะหลีกะหลอ
+กะหลุกกะหลิก
+กะหำ
+กะหำแพะ
+กะหือ
+กะหูด
+กะเหรี่ยง
+กะเหลาะเปาะ
+กะแหยก
+กะแหะ
+กะโหลก
+กะโหล้ง
+กะไหล่
+กะอวม
+กะออม
+กะอาน
+กะอาม
+กะอิด
+กะอุบ
+กะเอว
+กะแอ
+กะแอน
+กัก
+กั๊ก
+กักกรา
+กักกัน
+กักการุ
+กักขฬะ
+กักขัง
+กักคุม
+กักด่าน
+กักตัว
+กักตุน
+กักบริเวณ
+กัง
+กั้ง
+กังก
+กั้งกระดาน
+กังก้า
+กังเกียง
+กังขา
+กังฉิน
+กังฟู
+กังวล
+กังวาน
+กังเวียน
+กังส
+กังสดาล
+กังไส
+กังหัน
+กังหันใบพัด
+กังหันไอพ่น
+กัจฉปะ
+กัจฉะ
+กัจฉา
+กัญ
+กัญจุก
+กัญจุการา
+กัญชา
+กัญญา
+กัฐ
+กัณฏกะ
+กัณฐ-
+กัณฐก
+กัณฐกะ
+กัณฐชะ
+กัณฐัศ
+กัณฐัศว์
+กัณฐา
+กัณฐี
+กัณฑ์
+กัณฑ์เทศน์
+กัณณ์
+กัณห-
+กัณหธรรม
+กัณหปักษ์
+กัด
+กัดป่า
+กัดฟัน
+กัดลาก
+กัดวาง
+กัดหางตัวเอง
+กัตติกมาส
+กัตติกา
+กัตติเกยา
+กัตรทัณฑ์
+กัตรา
+กัทลี
+กัน
+กั่น
+กั้น
+กันกง
+กั้นกาง
+กันเกรา
+กันไกร
+กันเขากันเรา
+กันชน
+กันชิง
+กันชีพ
+กันเชอ
+กั้นซู่
+กันแซง
+กันดอง
+กันดาร
+กันดาล
+กันแดด
+กันได
+กันต์
+กันตัง
+กันตัว
+กันไตร
+กันทร
+กันทรากร
+กันทะ
+กันท่า
+กันแทรก
+กั้นบัง
+กันพิรุณ
+กันภัย
+กันภิรมย์
+กันเมียง
+กันย์
+กันยา
+กันยายน
+กันลง
+กันลอง
+กันลึง
+กันและกัน
+กันสาด
+กันแสง
+กั้นหยั่น
+กันเอง
+กันเอา
+กับ
+กับแก้
+กับแกล้ม
+กับข้าว
+กับบุเรศ
+กับระเบิด
+กัป
+กัปตัน
+กัปนก
+กัปบาสิก
+กัปปาสิก
+กัปปิย-
+กัปปิยการก
+กัปปิยภัณฑ์
+กัปปิยโวหาร
+กัปปิยะ
+กัปปีย์
+กัมบน
+กัมป-
+กัมปน-
+กัมปนาการ
+กัมปนาท
+กัมประโด
+กัมปี
+กัมพล
+กัมพุช
+กัมพุช-
+กัมพุชพากย์
+กัมพู
+กัมพูชา
+กัมโพช
+กัมมัชวาต
+กัมมัฏฐาน
+กัมมันตภาพรังสี
+กัมมันตรังสี
+กัมมาร
+กัมลาศ
+กัยวิกัย
+กัลชาญ
+กัลบก
+กัลป-
+กัลป์
+กัลปนา
+กัลปพฤกษ์
+กัลปังหา
+กัลปาวสาน
+กัลปิต
+กัลพุม
+กัลเม็ด
+กัลยา
+กัลยาณ-
+กัลยาณมิตร
+กัลยาณี
+กัลยาเยี่ยมห้อง
+กัลเว้า
+กัลหาย
+กัลโหย
+กัลออม
+กัลเอา
+กัศมล
+กัศยป
+กัษณ
+กา
+ก๋า
+กาก
+กาก-
+กากกะรุน
+กากขยาก
+กากข้าว
+กากคติ
+กากณึก
+กากบาท
+กากเพชร
+กากภาษา
+กากรุน
+กากหมู
+กากะทิง
+กากะเยีย
+ก๋ากั่น
+กากี
+กากีแกมเขียว
+กาคาบพริก
+กาง
+ก้าง
+กางเกง
+กางเกียง
+ก้างขวางคอ
+กางของ
+กางขี้มอด
+กางเขน
+ก้างปลา
+กางเวียน
+กาจับหลัก
+กาชาด
+ก๊าซ
+ก๊าซไข่เน่า
+ก๊าซเฉื่อย
+ก๊าซน้ำตา
+กาซะลอง
+กาซะลองคำ
+กาญจน-
+กาญจนา
+กาฐ
+กาด
+ก๊าด
+กาน
+ก่าน
+ก้าน
+ก๊าน
+ก้านขด
+ก้านแข็ง
+ก้านคอ
+กานดา
+กานต์
+ก้านตอง
+ก้านต่อดอก
+กานท์
+กานน
+ก้านบัว
+ก้านพร้าว
+กานพลู
+ก้านมะพร้าว
+ก้านยาว
+ก้านแย่ง
+ก้านเหลือง
+กาน้า
+กาน้ำ
+กาบ
+ก้าบๆ
+กาบกี้
+กาบเขียง
+กาบคู่
+กาบเดียว
+กาบเดี่ยว
+กาบน้ำจืด
+กาบบัว
+กาบปูเล
+กาบพรหมศร
+กาบหอย
+กาบุรุษ
+กาบู
+กาเปี้ยด
+กาฝาก
+กาพย์
+กาพย์กลอน
+กาฟักไข่
+กาเฟอีน
+กาแฟ
+กาม
+กาม-
+ก้าม
+ก้ามกราม
+กามกรีฑา
+กามกิจ
+ก้ามกุ้ง
+ก้ามเกลี้ยง
+กามคุณ
+กามฉันท์
+ก้ามดาบ
+กามตัณหา
+กามท-
+กามเทพ
+กามน
+ก้ามปู
+ก้ามปูหลุด
+กามภพ
+กามราค
+กามโรค
+กามวิตก
+กามวิตถาร
+กามสมังคี
+กามัช
+กามา
+กามาทีนพ
+กามาพจร
+กามามิศ
+กามารมณ์
+กามาวจร
+กามินี
+กามิศ
+กาเมศ
+กาเมสุมิจฉาจาร
+กาโมทย
+กาย
+กาย-
+ก่าย
+กายกรรม
+ก่ายกอง
+กายทวาร
+กายบริหาร
+กายพันธน์
+กายภาพ
+กายภาพบำบัด
+กายวิภาคศาสตร์
+กายสิทธิ์
+กายาพยพ
+กายินทรีย์
+กาเยน
+กาเยนทรีย์
+การ
+การก
+การกลั่นทำลาย
+การขนส่งมวลชน
+การครัว
+การคลัง
+การเงิน
+การจร
+การณ์
+การต่างประเทศ
+การ์ตูน
+การเต
+การนำ
+การบ้าน
+การบ้านการเมือง
+การบุเรียน
+การบูร
+การบูรป่า
+การเปรียญ
+การแผ่รังสี
+การพา
+การเมือง
+การย์
+การเรือน
+การละเล่น
+การวิก
+การเวก
+การะเกด
+การะบุหนิง
+การัณย์
+การันต์
+การางหัวขวาน
+การิตการก
+การิตวาจก
+การุญ
+การุณย์
+กาเรการ่อน
+กาเรียน
+กาเรียนทอง
+กาล
+กาล-
+กาลกรรณี
+กาลกิณี
+กาลกิริยา
+กาลจักร
+กาลเทศะ
+กาลโยค
+กาลสมุตถาน
+กาลักน้ำ
+กาลัญญุตา
+กาลัญญู
+กาลัด
+กาลานุกาล
+กาลิก
+กาลี
+กาแล็กซี
+กาแล็กโทส
+กาว
+ก้าว
+ก้าวก่าย
+ก้าวเฉียง
+ก้าวร้าว
+ก้าวล่วง
+กาววาว
+ก้าวหน้า
+กาวาง
+กาเวียน
+กาแวน
+กาศิก
+กาศิก-
+กาศิกพัสตร์
+กาษฐะ
+กาษา
+กาสร
+กาสะ
+กาสัก
+กาสา
+กาสามปีก
+กาสาร
+กาสาว-
+กาสาวพัสตร์
+กาสาวะ
+กาสิโน
+กาหล
+กาหลง
+กาหลงรัง
+กาหลา
+กาหัก
+กาเหว่า
+กาไหล่
+กาฬ
+กาฬ-
+กาฬจักร
+กาฬปักษ์
+กาฬปักษี
+กาฬพฤกษ์
+กาฬโรค
+กาฬวาต
+กาฬาวก
+กาฮัง
+กำ
+ก่ำ
+ก้ำ
+กำกวม
+กำกัด
+กำกับ
+ก้ำกึ่ง
+กำกูน
+กำเกรียก
+ก้ำเกิน
+กำเกียง
+กำขี้ดีกว่ากำตด
+กำคูน
+ก่ำเคือ
+กำจร
+กำจัด
+กำจาย
+กำชับ
+กำชับกำชา
+กำชำ
+กำโชก
+กำซาบ
+กำซำ
+กำด้น
+กำดัด
+กำดาล
+กำเดา
+กำเดาะ
+ก่ำต้น
+กำตัด
+กำตาก
+กำถั่ว
+กำทวน
+กำธร
+กำนล
+กำนัด
+กำนัน
+กำนัล
+กำเนิด
+กำเนียจ
+กำบด
+กำบน
+กำบัง
+กำบัด
+กำบิด
+ก่ำบึ้ง
+กำเบ้อ
+กำโบล
+กำปอ
+กำปั่น
+กำปั้น
+กำผลา
+กำพง
+กำพด
+กำพต
+กำพร้า
+กำพราก
+กำพวด
+กำพอง
+กำพืด
+กำพุด
+กำพู
+กำเพลิง
+กำแพง
+กำแพ้ง
+กำแพงแก้ว
+กำแพงขาว
+กำแพงเขย่ง
+กำแพงเจ็ดชั้น
+กำแพงมีหูประตูมีช่อง
+กำแพงมีหูประตูมีตา
+กำแพงเศียร
+กำภู
+กำม
+กำมพฤกษ์
+กำมลาศน์
+กำมเลศ
+กำมะถัน
+กำมะลอ
+กำมะหยี่
+กำมะหริด
+กำมังละการ
+กำมังวิลิต
+กำมัชพล
+กำมา
+กำมือ
+กำยาน
+กำยำ
+กำรอ
+กำราก
+กำราบ
+กำราล
+กำรู
+กำเริบ
+กำเริบเสิบสาน
+กำไร
+กำลอง
+กำลัง
+กำลังกิน
+กำลังกินกำลังนอน
+กำลังใจ
+กำลังช้างเผือก
+กำลังช้างสาร
+กำลังดี
+กำลังเทียน
+กำลังภายใน
+กำลังม้า
+กำลังวังชา
+กำลังวัวเถลิง
+กำลุง
+กำลูน
+กำเลา
+กำเลาะ
+กำไล
+กำไลคู่ผี
+กำสรด
+กำสรวล
+กำเสาะ
+กำแสง
+กำหนด
+กำหนดการ
+กำหนัด
+กำหมัด
+กำหราก
+กำเหน็จ
+กำแหง
+กิก
+กิ๊ก
+กิ่ง
+กิ่งก้อย
+กิ้งก่า
+กิ้งกือ
+กิ้งกือเหล็ก
+กิ้งโครง
+กิ่งทองใบหยก
+กิงบุรุษ
+กิ่งหาย
+กิจ
+กิจ-
+กิจกรรม
+กิจการ
+กิจจะ
+กิจจะลักษณะ
+กิจจา
+กิจจานุกิจ
+กิจวัตร
+กิดาการ
+กิดาหยัน
+กิตติ
+กิตติกรรมประกาศ
+กิตติคุณ
+กิตติมศักดิ์
+กิตติศัพท์
+กิน
+กินกริบ
+กินกัน
+กินกำไร
+กินเกลียว
+กินเกลือกินกะปิ
+กินแกลบกินรำ
+กินขวา
+กินขาด
+กินแขก
+กินความ
+กินเครา
+กินเจ
+กินแจ
+กินใจ
+กินช้อน
+กินชัน
+กินซ้าย
+กินดอก
+กินดอกเบี้ย
+กินดอง
+กินด่าง
+กินดาย
+กินดิบ
+กินตะเกียบ
+กินตัว
+กินตา
+กินตำแหน่ง
+กินโต๊ะ
+กินแถว
+กินทาง
+กินที่
+กินที่ลับไขที่แจ้ง
+กินนร
+กินนรเก็บบัว
+กินนรฟ้อนโอ่
+กินนรรำ
+กินนรเลียบถ้ำ
+กินนอกกินใน
+กินนอน
+กินน้ำ
+กินน้ำตา
+กินน้ำใต้ศอก
+กินน้ำพริกถ้วยเดียว
+กินน้ำไม่เผื่อแล้ง
+กินน้ำเห็นปลิง
+กินใน
+กินบนเรือนขี้บนหลังคา
+กินบวช
+กินบ้านกินเมือง
+กินบุญ
+กินบุญเก่า
+กินแบ่ง
+กินปลิง
+กินปลี
+กินปูนร้อนท้อง
+กินเปล่า
+กินเปี้ยว
+กินผัว
+กินเพรา
+กินมือ
+กินเมีย
+กินเมือง
+กินไม่ลง
+กินรังแตน
+กินริน
+กินรี
+กินรูป
+กินแรง
+กินลม
+กินลมกินแล้ง
+กินล้างกินผลาญ
+กินลึก
+กินเวลา
+กินเศษกินเลย
+กินส้อม
+กินสั่ง
+กินสำรับ
+กินสี่ถ้วย
+กินเส้น
+กินหน้า
+กินหลัง
+กินหาง
+กินหู้
+กินเหมือนหมู อยู่เหมือนหมา
+กินเหล็กกินไหล
+กินแหนง
+กินอยู่กับปาก อยากอยู่กับท้อง
+กินอยู่พูวาย
+กิ๊บ
+กิมตึ๋ง
+กิมิชาติ
+กิมิวิทยา
+กิโมโน
+กิโยตีน
+กิระ
+กิริณี
+กิรินท
+กิริเนศวร
+กิริยา
+กิริยาสะท้อน
+กิเลน
+กิเลส
+กิเลส-
+กิเลสมาร
+กิโล
+กิโล-
+กิโลกรัม
+กิโลไซเกิล
+กิโลมกะ
+กิโลเมตร
+กิโลลิตร
+กิโลเฮิรตซ์
+กิ่ว
+กิ๋ว
+กิ๋วๆ
+กี
+กี่
+กี้
+กี๋
+กี่กระตุก
+กีฏ-
+กีฏวิทยา
+กีด
+กีดกัน
+กีดกั้น
+กีดขวาง
+กีดหน้าขวางตา
+กีตาร์
+กีบ
+กีบแรด
+กี่มากน้อย
+กีรติ
+กีฬา
+กึก
+กึกก้อง
+กึกกัก
+กึกกือ
+กึกถอง
+กึง
+กึ่ง
+กึ่งกลาง
+กึงกัง
+กึ่งราชการ
+กึ๋น
+กุ
+กุก
+กุ๊ก
+กุกกัก
+กุกๆ กักๆ
+กุ๊กกิ๊ก
+กุ๊กๆ กิ๊กๆ
+กุกกุฏ-
+กุกกุร-
+กุกขี้หมู
+กุกรรม
+กุก่อง
+กุกะ
+กุกะมะเทิ่ง
+กุกุธภัณฑ์
+กุ้ง
+กุ้งดีด
+กุ้งดีดขัน
+กุ้งเต้น
+กุ้งนาง
+กุ้งฝอย
+กุ้งฟัด
+กุ้งมังกร
+กุ้งไม้
+กุ้งยิง
+กุ้งส้ม
+กุ้งหนามใหญ่
+กุ้งหลวง
+กุ้งเหลือง
+กุ้งแห
+กุ้งแห้ง
+กุงอน
+กุงาน
+กุโงก
+กุจี
+กุญแจ
+กุญแจกล
+กุญแจประจำหลัก
+กุญแจปากตาย
+กุญแจผี
+กุญแจมือ
+กุญแจรหัส
+กุญแจเลื่อน
+กุญแจเสียง
+กุญแจแหวน
+กุญชร
+กุฎ
+กุฎา
+กุฎาคาร
+กุฎาธาร
+กุฎี
+กุฎุมพี
+กุฏฐัง
+กุฏไต
+กุฏิ
+กุณฑ์
+กุณฑล
+กุณฑี
+กุณโฑ
+กุณาล
+กุณิ
+กุณี
+กุด
+กุดัง
+กุดั่น
+กุดา
+กุทัณฑ์
+กุน
+กุ๊น
+กุนเชียง
+กุนที
+กุโนกามอ
+กุบ
+กุบกับ
+กุม
+กุ่ม
+กุมฝอย
+กุมภ-
+กุมภ์
+กุมภการ
+กุมภนิยา
+กุมภัณฑ-
+กุมภัณฑ์
+กุมภัณฑยักษ์
+กุมภา
+กุมภาพันธ์
+กุมภิล
+กุมภีล์
+กุมลัคน์
+กุมเหง
+กุมาร
+กุมารลฬิตา
+กุมารา
+กุมารี
+กุมุท
+กุย
+กุ๊ย
+กุ๋ย
+กุ๋ยๆ
+กุยช่าย
+กุยเฮง
+กุรร
+กุระ
+กุรุง
+กุรุพินท์
+กุรุร
+กุเรา
+กุล
+กุล-
+กุลทูสก
+กุลธิดา
+กุลบดี
+กุลบุตร
+กุลสตรี
+กุลสัมพันธ์
+กุลา
+กุลาซ่อนผ้า
+กุลาดำ
+กุลาตีไม้
+กุลาตีอก
+กุลาลาย
+กุลาหล
+กุลี
+กุลีกุจอ
+กุเลา
+กุแล
+กุเวร
+กุศราช
+กุศล
+กุศลกรรมบถ
+กุศโลบาย
+กุสล
+กุสุม
+กุสุม-
+กุสุมภ์
+กุสุมวิจิตร
+กุสุมา
+กุสุมาลย์
+กุสุมิตลดาเวลลิตา
+กุหนี
+กุหนุง
+กุหร่า
+กุหล่า
+กุหลาบ
+กุแหละ
+กู
+กู่
+กู้
+กู๊ก
+กูฏ
+กูฏา
+กูฏาคาร
+กูณฑ์
+กูด
+กูน
+กูบ
+กูปรี
+กู้ภัย
+กู่ไม่กลับ
+กู้ยืม
+กูรม-
+กูรมะ
+กูรมาวตาร
+กูรำ
+กู้หน้า
+เก
+เก่
+เก๊
+เก๋
+เกก
+เก๊ก
+เกกมะเหรก
+เก๊กหน้า
+เก๊กฮวย
+เก้กัง
+เก้ๆ กังๆ
+เก็ง
+เก่ง
+เก้ง
+เก๋ง
+-เกงกอย
+เก้งก้าง
+เก่งกาจ
+เก็งกำไร
+เกงเขง
+เก๋งเคง
+เก่งแต่ปาก
+เก๋งพั้ง
+เก็จ
+เกจิอาจารย์
+เกชา
+เกณฑ์
+เกณฑ์ตะพัด
+เกณฑ์เมืองรั้ง
+เกณฑ์หัด
+เกด
+เก็ด
+เกตุ
+เกตุ-
+เกตุมาลา
+เกน
+เกนๆ
+เก่น
+เก็บ
+เก็บเกี่ยว
+เก็บข้าว
+เก็บข้าวตก
+เก็บความ
+เก็บงำ
+เก็บตก
+เก็บตัว
+เก็บเนื้อเก็บตัว
+เก็บเบี้ยใต้ถุนร้าน
+เก็บผม
+เก็บไร
+เก็บเล็กผสมน้อย
+เก็บเล็ม
+เก็บเล่ม
+เก็บสี
+เก็บหน้าผ้า
+เก็บหอมรอมริบ
+เกม
+เกย
+เกยลา
+เกยแห้ง
+เกยูร
+เกรง
+เกร็ง
+เกรงขาม
+เกรงใจ
+เกรงอกเกรงใจ
+เกร็ด
+เกรน
+เกร่อ
+เกรอะ
+เกรอะกรัง
+เกราะ
+เกริก
+เกริน
+เกริ่น
+เกรียก
+เกรียง
+เกรียงไกร
+เกรียด
+เกรียน
+เกรียบ
+เกรียม
+เกรียมกรม
+เกรียว
+เกรี้ยว
+เกรี้ยวๆ
+เกรี้ยวกราด
+เกรียวกราว
+เกเร
+เกเรเกตุง
+เกเรเกเส
+เกล็ด
+เกล็ดกระดี่
+เกล็ดกระโห้
+เกล็ดข้าวเม่า
+เกล็ดถี่
+เกล็ดนาค
+เกล็ดปลาช่อน
+เกล็ดหอย
+เกลศ
+เกลอ
+เกลา
+เกล้า
+เกล้ากระผม
+เกล้ากระหม่อม
+เกลาะ
+เกลี่ย
+เกลี้ย
+เกลี้ยกล่อม
+เกลี่ยไกล่
+เกลียง
+เกลี้ยง
+เกลี้ยงเกลา
+เกลียด
+เกลียดตัวกินไข่
+เกลียดปลาไหลกินน้ำแกง
+เกลียว
+เกลียวกลม
+เกลียวข้าง
+เกลียวคอ
+เกลี่ยวดำ
+เกลียวหวาน
+เกลือ
+เกลื้อ
+เกลือก
+เกลือกกลั้ว
+เกลือกกลิ้ง
+เกลือกรด
+เกลือแกง
+เกลือเงิน
+เกลือจิ้มเกลือ
+เกลือจืด
+เกลือด่าง
+เกลือด่างคลี
+เกลื่อน
+เกลื้อน
+เกลื่อนกล่น
+เกลื่อนกลาด
+เกลื่อนความ
+เกลือเบสิก
+เกลือปรกติ
+เกลือเป็นหนอน
+เกลือฟอง
+เกลือยูเรต
+เกลือสมุทร
+เกลือสินเธาว์
+เกไล
+เกวัฏ
+เกวียน
+เกวียนหลวง
+เกศ
+เกศ-
+เกศธาตุ
+เกศพ
+เกศว
+เกศา
+เกศากันต์
+เกศินี
+เกศี
+เกษตร
+เกษตรกร
+เกษตรกรรม
+เกษตรและสหกรณ์
+เกษตรศาสตร์
+เกษม
+เกษมศานต์
+เกษมสันต์
+เกษียณ
+เกษียณอายุ
+เกษียน
+เกษียร
+เกษียรสมุทร
+เกส
+เกสร
+เกสรทั้งห้า
+เกสรี
+เกสา
+เกสี
+เก้อ
+เกอิชา
+เกะ
+เกะกะ
+เกา
+เก่า
+เก้า
+เก๋า
+เกาต์
+เกาทัณฑ์
+เกาทุมพร
+เกาบิน
+เกาบิล
+เกามาร
+เกาลัด
+เกาลัดจีน
+เกาลิน
+เกาไศย
+เกาหลี
+เกาเหลา
+เกาเหลียง
+เก้าอี้
+เกาะ
+เกาะกิน
+เกาะแกะ
+เกิง
+เกิ้ง
+เกิด
+เกิดสูรย์
+เกิน
+เกินการ
+เกินกิน
+เกินคน
+เกินงาม
+เกินดี
+เกินตัว
+เกินไป
+เกินเลย
+เกินหน้า
+เกิบ
+เกีย
+เกียกกาย
+เกียง
+เกี่ยง
+เกี๋ยง
+เกี่ยงงอน
+เกี่ยงตาย
+เกียจ
+เกียจกล
+เกียจคร้าน
+เกียด
+เกียดกัน
+เกียน
+เกี้ยมไฉ่
+เกี้ยมอี๋
+เกียร์
+เกียรติ
+เกียรติ-
+เกียรติ์
+เกียรติคุณ
+เกียรตินิยม
+เกียรติประวัติ
+เกียรติภูมิ
+เกียรติยศ
+เกียรติศักดิ์
+เกี่ยว
+เกี้ยว
+เกี๊ยว
+เกี่ยวก้อย
+เกี้ยวเกไล
+เกี่ยวข้อง
+เกี่ยวข้าว
+เกี้ยวคอไก่
+เกี่ยวดอง
+เกี่ยวดองหนองยุ่ง
+เกี้ยวนวม
+เกี่ยวเบ็ด
+เกี้ยวประทีป
+เกี่ยวแฝกมุงป่า
+เกี่ยวพัน
+เกี้ยวพาน
+เกี้ยวพาราสี
+เกี่ยวโยง
+เกี๊ยะ
+เกื้อ
+เกือก
+เกือกม้า
+เกื้อกูล
+เกือบ
+เกือบไป
+แก
+แก่
+แก้
+แก่กล้า
+แก้เกี้ยว
+แก้ขัด
+แก้ไข
+แก้แค้น
+แกง
+แก่ง
+แก้ง
+แก๊ง
+แก้งก้น
+แกงขม
+แกงจืด
+แกงได
+แกงแนง
+แกงบวด
+แกงเผ็ด
+แก่งแย่ง
+แกงร้อน
+แกงส้ม
+แก่ดีกรี
+แก่แดด
+แกโดลิเนียม
+แก้ตก
+แก่ตัว
+แก้ตัว
+แก้ต่าง
+แก้ที
+แก้โทษ
+แกน
+แก่น
+แก่นแก้ว
+แก่นสาร
+แกนะ
+แกแน
+แก้บน
+แก่บ้าน
+แก้บาป
+แก๊ป
+แก้เผ็ด
+แก้ฝัน
+แก่ไฟ
+แกม
+แก้ม
+แก้มช้ำ
+แก้มแดง
+แกมมา
+แก้มแหม่ม
+แก้มือ
+แกรก
+แกร่ง
+แกร็น
+แกรนิต
+แกรไฟต์
+แกร่ว
+แกระ
+แก่แรด
+แกล
+แกล่
+แกล้ง
+แกล้งเกลา
+แกลน
+แกลบ
+แกลบหนู
+แกลบหูหนู
+แกล้ม
+แกลลอน
+แกลเลียม
+แกล้ว
+แกละ
+แก้ลำ
+แกแล
+แกว
+แก้ว
+แก้วก๊อ
+แก้วกุ้ง
+แก้วแกลบ
+แกว่ง
+แกว่งไกว
+แกว่งตีนหาเสี้ยน
+แก้วชิงดวง
+แก้วตา
+แกว่น
+แก้วผลึก
+แก้วมรกต
+แก้ววิเชียร
+แก้วสารพัดนึก
+แก้วสีไม้ไผ่
+แก้วหิน
+แก้วหู
+แก่วัด
+แก๊ส
+แก๊สไข่เน่า
+แก๊สเฉื่อย
+แก๊สน้ำตา
+แก้หน้า
+แกะ
+แกะดำ
+แกะรอย
+แกะสะเก็ด
+โก่
+โก้
+โก๋
+โกก
+โกกเกก
+โกกนุท
+โกกิล-
+โกกิลา
+โกโก้
+โกง
+โก่ง
+โกงกาง
+โก้งเก้ง
+โกงโก้
+โก้งโค้ง
+โกเชาว์
+โกญจ-
+โกญจน
+โกญจนาท
+โกญจา
+โกฏิ
+โกฐ
+โกฐกระดูก
+โกฐกะกลิ้ง
+โกฐกักกรา
+โกฐก้านพร้าว
+โกฐเขมา
+โกฐจุฬาลัมพา
+โกฐจุฬาลำพา
+โกฐชฎามังษี
+โกฐชฎามังสี
+โกฐเชียง
+โกฐน้ำเต้า
+โกฐพุงปลา
+โกฐสอ
+โกฐหอม
+โกฐหัวบัว
+โกฐาส
+โกณ
+โกณก
+โกดัง
+โกตไต
+โกทัณฑ์
+โกน
+โก่น
+โก๋น
+โกปินำ
+โกมล
+โกมุท
+โกเมน
+โกเมศ
+โกย
+โกยท้อง
+โกร้
+โกรก
+โกรกกราก
+โกรกไกร
+โกรกธาร
+โกรกหวัด
+โกรง
+โกร่ง
+โกร่งกร่าง
+โกรงเกรง
+โกร๋งเกร๋ง
+โกรญจ
+โกรด
+โกรต๋น
+โกรธ
+โกรธขึ้ง
+โกรธา
+โกร๋น
+โกร๋นเกร๋น
+โกรม
+โกรมธาตุ
+โกรย
+โกรศ
+โกโรโกเต
+โกโรโกโรก
+โกโรโกโส
+โกลง
+โกลน
+โกลาหล
+โกไล
+โกวิท
+โกวิฬาร
+โกศ
+โกศล
+โกษ
+โกษม
+โกษย
+โกษีย์
+โกส
+โกสน
+โกสัช
+โกสินทร์
+โกสีย์
+โกสุม
+โกไสย
+โกหก
+โกหวา
+ใกล้
+ใกล้เกลือกินด่าง
+ไก
+ไก่
+ไก้
+ไก๊
+ไก๋
+ไก่กอม
+ไก่แก่แม่ปลาช่อน
+ไก่แก้ว
+ไก่เขี่ย
+ไก่ชน
+ไก๋แดง
+ไก่เตี้ย
+ไก่นา
+ไก่ป่า
+ไกพัล
+ไก่ฟ้า
+ไก่ฟ้าพญาลอ
+ไกร
+ไกรพ
+ไกรลาส
+ไกรศร
+ไกรศรี
+ไกรสร
+ไกรสรี
+ไกรสิทธิ
+ไก่รองบ่อน
+ไกล
+ไกล่
+ไกล่เกลี่ย
+ไกลปืนเที่ยง
+ไกลาส
+ไกว
+ไกวัล
+ไก่สามอย่าง
+ไก่เห็นตีนงู งูเห็นนมไก่
+ไก่โห่
+ไก่ไห้
+ไก่อ่อน
+ข
+ขง
+ขงจื๊อ
+ขจร
+ขจรจบ
+ขจอก
+ขจัด
+ขจัดขจาย
+ขจ่าง
+ขจาย
+ขจาว
+ขจิต
+ขจิริด
+ขจี
+ขจุย
+ขเจา
+ขณะ
+ขด
+ขดถวาย
+ขดาน
+ขตอย
+ขทิง
+ขทึง
+ขน
+ข้น
+ข้นแค้น
+ขนง
+ขนงเนื้อ
+ขนด
+ขนทรายเข้าวัด
+ขนน
+ขนบ
+ขนบธรรมเนียม
+ขนบประเพณี
+ขนพอง
+ขนเพชร
+ขนม
+ขนมครก
+ขนมจีน
+ขนมทราย
+ขนมผสมน้ำยา
+ขนมผักกาด
+ขนมเส้น
+ขนมหัวผักกาด
+ขนแมว
+ขนลุก
+ขนลุกขนพอง
+ขนส่ง
+ขนสัตว์
+ขนหน้าแข้งไม่ร่วง
+ขนหนู
+ขนหยอง
+ขนอง
+ขนอน
+ขนอบ
+ขนอุย
+ขนัด
+ขนัน
+ขนาก
+ขนาง
+ขนาด
+ขนาน
+ขนานน้ำ
+ขนานลี่
+ขนาบ
+ขนาย
+ขนำ
+ขนิษฐ
+ขนิษฐา
+ขนุน
+ขนุนนก
+ขนุนป่า
+ขนุนสำปะลอ
+ขบ
+ขบขัน
+ขบเขี้ยวเคี้ยวฟัน
+ขบคิด
+ขบฉัน
+ขบถ
+ขบปัญหา
+ขบเผาะ
+ขบไม่แตก
+ขบวน
+ขบวนการ
+ขบวร
+ขบูร
+ขม
+ข่ม
+ข่มขวัญ
+ข่มขี่
+ขมขื่น
+ข่มขืน
+ข่มขืนกระทำชำเรา
+ข่มขืนใจ
+ข่มขู่
+ข่มเขาโคขืนให้กินหญ้า
+ขมงโกรย
+ข่มท้อง
+ข่มนาม
+ขมเป็นยา
+ขมม
+ขมวด
+ขมวดยา
+ขมวน
+ข่มหมู
+ขมหิน
+ข่มเหง
+ข่มเหงคะเนงร้าย
+ขมอง
+ขม่อม
+ขม่อมบาง
+ขมอย
+ขมัง
+ขมับ
+ขมา
+ขม้ำ
+ขมิ้น
+ขมิ้นกับปูน
+ขมิ้นขาว
+ขมิ้นขึ้น
+ขมิ้นเครือ
+ขมิ้นชัน
+ขมิ้นนาง
+ขมิ้นลิง
+ขมิ้นหัวขึ้น
+ขมิ้นอ้อย
+ขมิบ
+ขมีขมัน
+ขมึง
+ขมึงทึง
+ขมุ
+ขมุกขมัว
+ขมุดขมิด
+ขมุบ
+ขมุบขมิบ
+ขมุม
+ขโมย
+ขย-
+ขยด
+ขยม
+ขย่ม
+ขยล
+ขยอก
+ขยอง
+ขย่อน
+ขย้อน
+ขยะ
+ขยะแขยง
+ขยัก
+ขยักขย่อน
+ขยักขย้อน
+ขยัน
+ขยั้น
+ขยับ
+ขยับขยาย
+ขยับเขยื้อน
+ขยาด
+ขยาบ
+ขยาย
+ขยายขี้เท่อ
+ขยำ
+ขย้ำ
+ขยิก
+ขยิบ
+ขยิ่ม
+ขยี้
+ขยี่ขยัน
+ขยุกขยิก
+ขยุกขยุย
+ขยุบ
+ขยุบขยิบ
+ขยุม
+ขยุ้ม
+ขยุ้มตีนหมา
+ขยุย
+ขรม
+ขรรค-
+ขรรค์
+ขรัว
+ขรัวยาย
+ขริบ
+ขรี
+ขรึม
+ขรุขระ
+ขล้ง
+ขลบ
+ขลม
+ขลวน
+ขล้อเงาะ
+ขล้อเทียน
+ขลัง
+ขลับ
+ขลา
+ขลาด
+ขลาย
+ขลิบ
+ขลึง
+ขลุก
+ขลุกขลัก
+ขลุกขลิก
+ขลุกขลุ่ย
+ขลุบ
+ขลุม
+ขลุมประเจียด
+ขลุ่ย
+ขลู
+ขลู่
+ขวง
+ข่วง
+ขวด
+ขวดตีนช้าง
+ขวดโหล
+ขวน
+ข่วน
+ขวนขวาย
+ขวบ
+ขวย
+ขวยเขิน
+ขวยใจ
+ขวะไขว่เขวี่ย
+ขวักไขว่
+ขวัญ
+ขวัญเกี่ยง
+ขวัญข้าว
+ขวัญแขวน
+ขวัญใจ
+ขวัญดี
+ขวัญตา
+ขวัญบ่า
+ขวัญบิน
+ขวัญเมือง
+ขวัญหนี
+ขวัญหนีดีฝ่อ
+ขวัญหาย
+ขวัญอ่อน
+ขวัด
+ขวัดขวิด
+ขวัดแคว้ง
+ขวั้น
+ขวับ
+ขวับเขวียว
+ขวา
+ขวาก
+ขวากหนาม
+ขวาง
+ขว้าง
+ขว้างกา
+ขว้างข้าวเม่า
+ขว้างค้อน
+ขว้างงูไม่พ้นคอ
+ขว้างจักร
+ขวางเชิง
+ขวางๆ รีๆ
+ขวางโลก
+ขวาด
+ขวาน
+ขวานผ่าซาก
+ขวานฟ้า
+ขวายขวน
+ขวาว
+ขว้าว
+ขวิด
+ขษณะ
+ขษัย
+ขษีณาศรพ
+ขษีร
+ขอ
+ข่อ
+ข้อ
+ขอก
+ข้อกฎหมาย
+ข้อกติกา
+ข้อกำหนด
+ขอแกว
+ข้อเขียน
+ข้อไข
+ข้อความ
+ข้อคัดย่อ
+ขอคำน้อย
+ข้อคิด
+ข้อคิดเห็น
+ของ
+ข้อง
+ของกลาง
+ของกอง
+ของกำนัล
+ของกิน
+ของเก่า
+ของขบเคี้ยว
+ของขลัง
+ของขวัญ
+ข้องขัด
+ของแข็ง
+ของค้าง
+ของคาว
+ของเค็ม
+ของเคียง
+ของโจร
+ข้องใจ
+ของชำ
+ของใช้
+ของดี
+ของเถื่อน
+ของนอก
+ของร้อน
+ของลับ
+ของเล่น
+ของเลื่อน
+ของเลื่อนเตือนขันหมาก
+ของวัด
+ของว่าง
+ข้องแวะ
+ของสงฆ์
+ของสงวน
+ของสด
+ของสดของคาว
+ของสดคาว
+ของหลวง
+ของหวาน
+ของหายตะพายบาป
+ของเหลว
+ของแห้ง
+ของไหล
+ของไหว้
+ของ้อ
+ของ้าว
+ขอฉาย
+ขอช้าง
+ขอด
+ขอดค่อน
+ขอเดชะ
+ขอตัว
+ขอทอง
+ขอทาน
+ขอที
+ข้อเท็จจริง
+ขอโทษ
+ขอน
+ข่อน
+ข้อน
+ขอนดอก
+ขอนสัก
+ขอนิสัย
+ขอบ
+ขอบข่าย
+ขอบเขต
+ขอบคุณ
+ขอบใจ
+ขอบทาง
+ขอบพระคุณ
+ขอบไร
+ขอบเหล็ก
+ข้อบังคับ
+ข้อบัญญัติ
+ขอประทาน
+ขอประทานโทษ
+ข้อปลีกย่อย
+ขอไปที
+ขอเฝ้า
+ขอพระราชทาน
+ข้อพับ
+ขอม
+ข้อมือขาว
+ข้อมูล
+ข้อแม้
+ข่อย
+ข้อย
+ข่อยน้ำ
+ข่อยหนาม
+ข่อยหยอง
+ขอยืม
+ขอร้อง
+ขอรับ
+ขอรับกระผม
+ขอรับผม
+ข้อราชการ
+ขอแรง
+ข้อศอก
+ข้อสอบ
+ขอสับ
+ข้อเสือ
+ข้อหา
+ข้อใหญ่ใจความ
+ขออภัย
+ข้ออ้อย
+ข้ออ้าง
+ขะข่ำ
+ขะแข่น
+ขะแข้น
+ขะแจะ
+ขะแถก
+ขะนาน
+ขะเน็ด
+ขะมอมขะแมม
+ขะมักเขม้น
+ขะมุกขะมอม
+ขะแมซอ
+ขะแมธม
+ขะยิก
+ขะยุก
+ขะเย้อแขย่ง
+ขะแยะ
+ขัค
+ขัง
+ขังข้อ
+ขังขอก
+ขังปล้อง
+ขังหน่วย
+ขัช
+ขัชก
+ขัณฑ-
+ขัณฑสกร
+ขัณฑสีมา
+ขัด
+ขัดเกลา
+ขัดขวาง
+ขัดข้อง
+ขัดขืน
+ขัดเขมร
+ขัดเขิน
+ขัดแข็ง
+ขัดคอ
+ขัดเคือง
+ขัดแค้น
+ขัดจังหวะ
+ขัดใจ
+ขัดดอก
+ขัดตา
+ขัดตาทัพ
+ขัดตำนาน
+ขัดแตะ
+ขัดบท
+ขัดเบา
+ขัดมอน
+ขัดมอนตัวผู้
+ขัดมอนหลวง
+ขัดยอก
+ขัดแย้ง
+ขัดลาภ
+ขัดสน
+ขัดสมาธิ
+ขัดหนัก
+ขัดห้าง
+ขัดหู
+ขัตติย-
+ขัตติยมานะ
+ขัน
+ขั้น
+ขันกว้าน
+ขันแข็ง
+ขันชะเนาะ
+ขันเชิง
+ขันต่อ
+ขันติ
+ขันตี
+ขันโตก
+ขันทองพยาบาท
+ขันที
+ขันธ์
+ขันธาวาร
+ขันน้ำพานรอง
+ขันลงหิน
+ขันสมอ
+ขันสาคร
+ขันสู้
+ขันหมาก
+ขันเหม
+ขันอาสา
+ขับ
+ขับขัน
+ขับขี่
+ขับเคลื่อน
+ขับเคี่ยว
+ขับซอ
+ขับถ่าย
+ขับพล
+ขับไม้
+ขับไม้บัณเฑาะว์
+ขับร้อง
+ขัย
+ขัว
+ขั้ว
+ขั้วกระจก
+ขั้วบวก
+ขั้วแม่เหล็ก
+ขั้วแม่เหล็กโลก
+ขั้วลบ
+ขั้วโลก
+ขา
+ข่า
+ข้า
+ขาก
+ขากบ
+ขากรรไตร
+ขาก๊วย
+ขากอม
+ขาเกวียน
+ข้าเก่าเต่าเลี้ยง
+ขาไก่
+ขาเขียด
+ขาง
+ข่าง
+ข้าง
+ข้างๆ
+ข้างกบ
+ข้างกระดาน
+ข้างขึ้น
+ข้างควาย
+ข้างๆ คูๆ
+ข้างเงิน
+ข้างจัน
+ขางดัง
+ขางแดง
+ข้างตก
+ข้างตะเภา
+ข้างตีน
+ข้างแรม
+ข้างลาย
+ข้างหัวนอน
+ข้างออก
+ขาจร
+ข้าเจ้า
+ขาณุ
+ขาด
+ขาดกัน
+ขาดคราว
+ขาดคอช้าง
+ขาดค่า
+ขาดคำ
+ขาดแคลน
+ขาดใจ
+ขาดตกบกพร่อง
+ขาดตลาด
+ขาดตอน
+ขาดตัว
+ขาดทุน
+ขาดปาก
+ขาดมือ
+ขาดเม็ด
+ขาดลอย
+ขาดหัวช้าง
+ขาดเหลือ
+ขาดอายุ
+ข่าแดง
+ข่าต้น
+ขาทนียะ
+ขาทราย
+ข้าไท
+ขาน
+ขานกยาง
+ขานไข
+ขานนาค
+ขานรหัส
+ข้านอกเจ้า ข้าวนอกหม้อ
+ข้าน้อย
+ขานาง
+ขาบ
+ขาประจำ
+ข้าแผ่นดิน
+ข้าเฝ้า
+ข้าพเจ้า
+ข้าพระ
+ข้าพระพุทธเจ้า
+ขาพับ
+ขาม
+ข่าม
+ข้าม
+ข้ามๆ
+ข้ามน้ำข้ามทะเล
+ข้ามน้ำข้ามท่า
+ข้ามสมุทร
+ข้ามหน้า
+ข้ามหน้าข้ามตา
+ข้ามหัว
+ขาม้า
+ขาย
+ข่าย
+ขายขาด
+ข่ายงาน
+ขายชาติ
+ขายชื่อ
+ขายตัว
+ขายตามคำพรรณนา
+ขายตามตัวอย่าง
+ขายทอดตลาด
+ขายบ้านขายเมือง
+ขายปลีก
+ขายผ้าเอาหน้ารอด
+ขายเผื่อชอบ
+ขายฝาก
+ขายส่ง
+ขายหน้า
+ขายหน้าขายตา
+ขายหน้าวันละห้าเบี้ย
+ขายหู
+ขายเหมา
+ข้าราชการ
+ขาล
+ขาว
+ข่าว
+ข้าว
+ข่าวกรอง
+ข้าวกรู
+ข้าวกล้อง
+ข้าวกล้า
+ข้าวเกรียบ
+ข้าวเกรียบปากหม้อ
+ข้าวเกรียบอ่อน
+ข้าวเก่า
+ข้าวแกง
+ข้าวโกบ
+ข้าวขวัญ
+ข้าวของ
+ข้าวข้า
+ข้าวแขก
+ข่าวคราว
+ข้าวควบ
+ข้าวคำ
+ข้าวแคบ
+ข้าวงัน
+ข้าวจี่
+ขาวจีบ
+ข้าวเจ้า
+ข้าวแจก
+ข้าวแช่
+ข้าวซ้อม
+ข้าวซอย
+ข้าวแดกงา
+ข้าวแดงแกงร้อน
+ข้าวต้ม
+ข้าวต้มน้ำวุ้น
+ข้าวต้มปัด
+ข้าวตอก
+ข้าวตอกตั้ง
+ข้าวตอกแตก
+ข้าวตัง
+ข้าวตาก
+ข้าวตู
+ข้าวแตก
+ข้าวแตน
+ข้าวทิพย์
+ข้าวนก
+ข้าวนึ่ง
+ข้าวบาตร
+ข้าวบิณฑ์
+ข้าวบุหรี่
+ข้าวเบา
+ข้าวเบือ
+ข้าวประดับดิน
+ข้าวปลูก
+ข้าวปัด
+ข้าวป่า
+ข้าวปาด
+ข้าวปุ้น
+ข้าวเปรต
+ข้าวเปลือก
+ข้าวเปียก
+ข้าวผอก
+ข้าวผอกกระบอกน้ำ
+ข้าวพระ
+ขาวพวง
+ข้าวพอง
+ข่าวพาดหัว
+ข้าวโพด
+ข้าวฟ่าง
+ข้าวเภา
+ข้าวมัน
+ขาวม้า
+ข้าวมิ่น
+ข้าวเม่า
+ข้าวเม่าทอด
+ข่าวยกเมฆ
+ข้าวยากหมากแพง
+ข้าวยาคู
+ข้าวยำ
+ข้าวเย็นใต้
+ข้าวเย็นเหนือ
+ข้าวละมาน
+ข่าวล่า
+ข่าวสด
+ข้าวสวย
+ข้าวสาก
+ข่าวสาร
+ข้าวสาร
+ข้าวสุก
+ข้าวเส้น
+ข้าวหนัก
+ข้าวหมก
+ข้าวหมาก
+ข้าวหลาม
+ข้าวหลามตัด
+ข้าวหัวโขน
+ข้าวหางช้าง
+ข้าวเหนียว
+ข้าวเหนียวดำ
+ข้าวเหลือเกลืออิ่ม
+ขาวใหญ่
+ข้าวใหม่
+ข้าวใหม่น้อย
+ข้าวใหม่ปลามัน
+ข้าวใหม่ใหญ่
+ข้าวอังกุลี
+ข้าวฮาง
+ข้าศึก
+ขาหมา
+ขาหยั่ง
+ข้าหลวง
+ข้าหลวงเดิม
+ข้าหลวงน้อย
+ข้าหลวงหลังลาย
+ขาอ่อน
+ขำ
+ข่ำเขียว
+ขิก
+ขิกๆ
+ขิง
+ขิ่ง
+ขิงก็รา ข่าก็แรง
+ขิงแกลง
+ขิงแครง
+ขิงแห้ง
+ขิด
+ขิปสัทโท
+ขิม
+ขี่
+ขี้
+ขี้กบ
+ขี้กระทาเกลือ
+ขี้ก้อนใหญ่ให้เด็กเห็น
+ขี้กะโล้โท้
+ขี้กา
+ขี้ก้าง
+ขี้กาดง
+ขี้กาแดง
+ขี้กาเหลี่ยม
+ขี้เกลือ
+ขี้ขม
+ขี้ขวง
+ขี้ข้า
+ขี้ขุย
+ขี้เข็บ
+ขี้ครอก
+ขี้ครั่ง
+ขี้ควาย
+ขี้คุก
+ขี้เค้า
+ขี้โครง
+ขี้จาบ
+ขี่ช้างจับตั๊กแตน
+ขี้ซ้าย
+ขี้เซา
+ขี้ไซ้
+ขีณะ
+ขีณาสพ
+ขีด
+ขีดขั้น
+ขีดคร่อม
+ขีดคั่น
+ขีดเส้นตาย
+ขี้เดือด
+ขี้แดด
+ขี้ตด
+ขี้ตังนี
+ขี้ติ้ว
+ขี้ตืด
+ขี้เต่า
+ขี้แต้
+ขี้ไต้
+ขี้ถัง
+ขี้เถ้า
+ขี้ไถ
+ขี้ทา
+ขี้ทูด
+ขี้เท่อ
+ขี้เทา
+ขี้เทือก
+ขี้นก
+ขีปนาวุธ
+ขีปนาวุธนำวิถี
+ขี้ปะติ๋ว
+ขี้ปาก
+ขี้เป้
+ขี้เป็ด
+ขี้ผง
+ขี้ผึ้ง
+ขี้ฝิ่น
+ขี้แพ้ชวนตี
+ขี้มอด
+ขี้ม้า
+ขี่ม้าตีคลี
+ขี่ม้าเลียบค่าย
+ขี่ม้าส่งเมือง
+ขี้มิ่น
+ขี้มูก
+ขี้เมฆ
+ขี้แมลงวัน
+ขี้แมว
+ขี้ไม่ให้หมากิน
+ขี้ยอก
+ขี้ยา
+ขี้แย
+ขีร
+ขี้รังแค
+ขี้ราดโทษล่อง
+ขี้ริ้ว
+ขี้เรื้อน
+ขี้เรื้อนกวาง
+ขี้แรด
+ขี้แรดล้อมปรวด
+ขี้ลม
+ขี้ลอก
+ขี้ลีบ
+ขี้เล็บ
+ขี้โล้
+ขี้สูด
+ขี้หดตดหาย
+ขี้หนอน
+ขี้หน้า
+ขี้หนู
+ขี้หมา
+ขี้เหร่
+ขี้เหล็ก
+ขี้ใหม่หมาหอม
+ขี้อ้น
+ขี้อ้าย
+ขึง
+ขึ้ง
+ขึ้งโกรธ
+ขึงขัง
+ขึ้งเคียด
+ขึงตา
+ขึงพืด
+ขึงอูด
+ขึ้น
+ขึ้นเขียง
+ขึ้นครู
+ขึ้นคาน
+ขึ้นใจ
+ขึ้นฉ่าย
+ขึ้นชื่อ
+ขึ้นชื่อว่า
+ขึ้นซัง
+ขึ้นต้นไม้สุดยอด
+ขึ้นปาก
+ขึ้นพลับพลา
+ขึ้นไม้ขึ้นมือ
+ขึ้นระวาง
+ขึ้นร้าน
+ขึ้นสาย
+ขึ้นเสียง
+ขึ้นหน้าขึ้นตา
+ขึ้นหม้อ
+ขึ้นหา
+ขึ้นเหนือล่องใต้
+ขืน
+ขื่น
+ขื่นขม
+ขืนใจ
+ขื่อ
+ขื่อกะละปังหา
+ขื่อขวาง
+ขื่อคัด
+ขื่อจมูก
+ขื่อเท่าต่อ
+ขื่อผี
+ขื่อมุก
+ขื่อหมู่
+ขุก
+ขุด
+ขุดคุ้ย
+ขุดด้วยปากถากด้วยตา
+ขุดดินกินหญ้า
+ขุดบ่อล่อปลา
+ขุน
+ขุ่น
+ขุ่นข้องหมองใจ
+ขุ่นเคือง
+ขุ่นแค้น
+ขุ่นใจ
+ขุนทอง
+ขุนนาง
+ขุนนางใช่พ่อแม่ หินแง่ใช่ตายาย
+ขุนน้ำ
+ขุนบาล
+ขุนแผน
+ขุนพล
+ขุนพัฒน์
+ขุนเพ็ด
+ขุ่นมัว
+ขุนไม่ขึ้น
+ขุนศาล
+ขุนศึก
+ขุ่นหมอง
+ขุนหมื่น
+ขุนหลวง
+ขุม
+ขุย
+ขุยไผ่
+ขุยอินทรีย์
+ขู
+ขู่
+ขู่กรรโชก
+ขู่ขวัญ
+ขู่เข็ญ
+ขูด
+ขูดรีด
+ขูดเลือด
+ขูดเลือดขูดเนื้อ
+เข
+เข้
+เขก
+เข็ง
+เข่ง
+เขจร
+เข็ญ
+เข็ญใจ
+เข็ด
+เข็ดข้อ
+เข็ดข้อเข็ดลำ
+เข็ดเขี้ยว
+เข็ดฟัน
+เขดา
+เขต
+เขตแดน
+เขตเลือกตั้ง
+เขตอำนาจศาล
+เขน
+เข็น
+เข่น
+เข่นเขี้ยว
+เข็นครกขึ้นภูเขา
+เข่นฆ่า
+เขนง
+เขนงนายพราน
+เขน็ด
+เขนย
+เขบ็จขบวน
+เขบ็ต
+เขม-
+เข็ม
+เข้ม
+เข็มกลัด
+เข้มข้น
+เข็มขัด
+เข้มขาบ
+เข้มขาบไหม
+เข้มแข็ง
+เข็มควัก
+เขม็ง
+เข้มงวด
+เข็มซ่อนปลาย
+เขม็ดแขม่
+เข็มทิศ
+เขม่น
+เขม้น
+เขม้นขะมัก
+เขมร
+เขมรไทรโยค
+เขมรพวง
+เขมรราชบุรี
+เขมรเหลือง
+เขมรใหญ่
+เขมา
+เขม่า
+เขมาโกรย
+เขม่าซาง
+เขมือบ
+เขย
+เขยก
+เขย่ง
+เขย่งเก็งกอย
+เขยตาย
+เขย้อแขย่ง
+เขยอะขยะ
+เขย่า
+เขยิน
+เขยิบ
+เขยิบขยาบ
+เขยิบฐานะ
+เขยียวขยอน
+เขยื้อน
+เขรอะ
+เขลง
+เขลอะ
+เขละ
+เขลา
+เขลาะ
+เขว
+เขษตร
+เขษม
+เขษียร
+เขฬะ
+เขะขะ
+เขา
+เข่า
+เข้า
+เข้ากระโจม
+เข้ากระดูกดำ
+เขากวาง
+เข้าเกณฑ์
+เข้าเกีย
+เขาแกะ
+เข้าข้อ
+เข้าขา
+เข้าข้าง
+เข้าคอ
+เข้าคิว
+เข้าคู่
+เข้าเครื่อง
+เข้าเค้า
+เข้าไคล
+เข้าเงียบ
+เข้าแง่
+เข้าเจ้า
+เข้าเจ้าเข้านาย
+เข้าใจ
+เข้าชื่อ
+เข้าฌาน
+เข้าด้ายเข้าเข็ม
+เข้าเดือย
+เข้าตรีทูต
+เข้าตอง
+เข้าตัว
+เข้าตาจน
+เข้าตามตรอกออกตามประตู
+เข้าตาร้าย
+เข้าตำรา
+เข้าตู้
+เข้าไต้เข้าไฟ
+เข้าถ้ำ
+เข้าถึง
+เข้าเถื่อนอย่าลืมพร้า
+เข้าทรง
+เข้าท่า
+เข้าที
+เข้าที่
+เข้าทุน
+เข้านอกออกใน
+เข้าเนื้อ
+เข้าแบบ
+เข้าแบบเข้าแผน
+เข้าปก
+เข้าปากไม้
+เข้าปิ้ง
+เข้าปีก
+เขาเปล้า
+เข้าไป
+เข้าผี
+เข้าผู้เข้าคน
+เข้าฝัก
+เข้าฝัน
+เข้าเฝ้า
+เข้าเฝือก
+เข้าพกเข้าห่อ
+เข้าพรรษา
+เข้าพระเข้านาง
+เข้าพุง
+เขามอ
+เข้าม่าน
+เข้าเมืองตาหลิ่วต้องหลิ่วตาตาม
+เข้าไม้
+เข้ายา
+เข้ารกเข้าพง
+เข้ารหัส
+เข้าร่องเข้ารอย
+เข้ารอบ
+เข้ารอย
+เข้าร้าย
+เข้ารีต
+เข้ารูป
+เข้ารูปเข้ารอย
+เข่าลา
+เข้าลิ้น
+เข้าเล่ม
+เข้าเลือด
+เข้าเลือดเข้าเนื้อ
+เข้าโลง
+เข้าวัดเข้าวา
+เข้าว่า
+เข้าเวร
+เข้าแว่น
+เข้าเศียร
+เข้าสมาธิ
+เข้าสุหนัต
+เข้าใส่
+เข้าไส้
+เข้าหน้า
+เข้าหม้อ
+เข้าหมิ้น
+เข้าหลัก
+เข้าหา
+เข้าหุ้น
+เข้าหู
+เข้าหูซ้ายทะลุหูขวา
+เข้าให้
+เข้าไหนเข้าได้
+เขาอ่อน
+เข่าอ่อน
+เขิง
+เขิน
+เขิบ
+เขี่ย
+เขียง
+เขียงเท้า
+เขียงพระนางอี่
+เขียงพร้า
+เขียด
+เขียดตะปาด
+เขียน
+เขี่ยน
+เขียนด้วยมือลบด้วยตีน
+เขียนทอง
+เขียนไทย
+เขียนเสือให้วัวกลัว
+เขียม
+เขียว
+เขี้ยว
+เขี้ยวกระแต
+เขี้ยวแก้ว
+เขียวไข่กา
+เขี้ยวงู
+เขี้ยวตะขาบ
+เขี้ยวเนื้อ
+เขียวพระอินทร์
+เขี้ยวเล็บ
+เขียวเสวย
+เขี้ยวหนุมาน
+เขี้ยวหมา
+เขียวหวาน
+เขียวหางไหม้
+เขียะ
+เขือ
+เขือง
+เขื่อง
+เขื่อน
+เขื่อนเพชร
+เขือม
+แข
+แข้
+แขก
+แขกเต้า
+แขกเต้าเข้ารัง
+แขกเมือง
+แข็ง
+แข่ง
+แข้ง
+แข็งกร้าว
+แข็งกล้า
+แข็งแกร่ง
+แข้งไก่
+แข็งข้อ
+แข็งขัน
+แข่งขัน
+แข็งใจ
+แข็งตัว
+แข็งมือ
+แข็งเมือง
+แข็งแรง
+แข้งสิงห์
+แขน
+แข่น
+แข้น
+แขนขวา
+แขนคู้
+แขนง
+แขนซ้ายแขนขวา
+แขนทุกข์
+แขนนาง
+แขนพับ
+แขนะ
+แขม
+แขม็บ
+แขม่ว
+แขย็กๆ
+แขยง
+แขย่ง
+แขยงแขงขน
+แขยงหนู
+แขละ
+แขวก
+แขวง
+แขวน
+แขวนคอ
+แขวนนวม
+แขวนลอย
+แขวะ
+แขสร์
+โข
+โขก
+โขกสับ
+โขง
+โข่ง
+โข่งทะเล
+โขด
+โขดง
+โขน
+โขนง
+โขม
+โขม-
+โขมง
+โขมด
+โขมดยา
+โขยก
+โขยกเขยก
+โขยง
+โขย่ง
+โขยด
+โขยม
+โขลก
+โขลกๆ
+โขลง
+โขลน
+โขลนทวาร
+โขษม
+ไข
+ไข่
+ไข้
+ไขกระดูก
+ไข้กาฬ
+ไข้กาฬนกนางแอ่น
+ไข้กาฬหลังแอ่น
+ไข้กำเดา
+ไข่ไก่
+ไข่ขวัญ
+ไขข้อ
+ไข่ขาง
+ไข่ขาว
+ไข่ข้าว
+ไขควง
+ไข้ความร้อน
+ไข่เค็ม
+ไข่จระเข้
+ไข้จับสั่น
+ไข่จิ้งจก
+ไข่จิ้งหรีด
+ไข่เจียว
+ไข้ใจ
+ไข่ญี่ปุ่น
+ไข่ดัน
+ไข่ดันหมู
+ไข่ดาว
+ไข่แดง
+ไข้แดด
+ไข่ตายโคม
+ไข่ตุ๋น
+ไข่เต่า
+ไข้ทรพิษ
+ไข้ทับระดู
+ไข่นกกระสา
+ไขน้ำ
+ไข่น้ำ
+ไข่น้ำค้าง
+ไข่เน่า
+ไข่ในหิน
+ไข่ปลา
+ไข้ปอดบวม
+ไข้ป่า
+ไขพระวิสูตร
+ไข่พอก
+ไข้พิษ
+ไขมัน
+ไข้มาลาเรีย
+ไข่มุก
+ไขย่น
+ไข่เยี่ยวม้า
+ไขรา
+ไข่ลม
+ไขลาน
+ไข่ลูกเขย
+ไข่ลูกยอด
+ไข้เลือดออก
+ไขว่
+ไขว้
+ไขว้เขว
+ไขว่คว้า
+ไขว้โรง
+ไขว่ห้าง
+ไขษย
+ไข้สันนิบาต
+ไขสันหลัง
+ไขสันหลังอักเสบ
+ไข่สำเภา
+ไขสือ
+ไขเสนียด
+ไข่หงส์
+ไข้หวัด
+ไข้หวัดใหญ่
+ไข่หวาน
+ไข้หัว
+ไข้หัวลม
+ไข่หำ
+ไข่หิน
+ไขหู
+ไข้เหลือง
+ไข่เหา
+ไข่เหี้ย
+ไข่แหน
+ฃ
+ค
+คคน-
+คคนะ
+คคนัมพร
+คคนางค์
+คคนานต์
+คง
+คงกระพัน
+คงกระพันชาตรี
+คงแก่เรียน
+คงขาด
+คงคลัง
+คงคา
+คงคาเดือด
+คงคาลัย
+คงไคย
+คงตัว
+คงทน
+คงที่
+คงเส้นคงวา
+คงเหลือ
+คช-
+คชกรรม
+คชนาม
+คชราช
+คชลักษณ์
+คชศาสตร์
+คชส่าน
+คชสาร
+คชสีห์
+คชาชาติ
+คชาชีพ
+คชาธาร
+คชาภรณ์
+คชินทร์
+คเชนทร์
+คณ-
+คณน
+คณนา
+คณบดี
+คณะ
+คณะรัฐมนตรี
+คณาจารย์
+คณาธิการ
+คณาธิปไตย
+คณิกา
+คณิต
+คณิต-
+คณิตศาสตร์
+คเณศ
+คด
+คดกริช
+คดโกง
+คดเคี้ยว
+คดงอ
+คดซ่าง
+คดในข้องอในกระดูก
+คดสร้าง
+คดี
+คดีดำ
+คดีแดง
+คดีแพ่ง
+คดีมโนสาเร่
+คดีอนาถา
+คดีอาญา
+-คต
+คติ
+คติชาวบ้าน
+คติธรรม
+คตินิยม
+คติพจน์
+คทา
+คน
+ค้น
+คนกลาง
+คนไข้
+คนไข้นอก
+คนไข้ใน
+ค้นคว้า
+คนจร
+คนจริง
+คนใช้
+คนดีผีคุ้ม
+คนต้องขัง
+คนทรง
+คนทา
+คนทิสอ
+คนทิสอทะเล
+คนที
+คนทีเขมา
+คนทีสอ
+คนโท
+คนธ์
+คนธรรพ-
+คนธรรพ์
+คนธรรพวิวาห์
+คนธรรพศาสตร์
+คนนอก
+คนใน
+คนเมือง
+คนรักเท่าผืนหนัง คนชังเท่าผืนเสื่อ
+คนร้าย
+คนไร้ความสามารถ
+คนละ
+คนละไม้คนละมือ
+คนสวน
+คนสาบสูญ
+คนเสมือนไร้ความสามารถ
+ค้นหูก
+คนใหญ่คนโต
+คเนจร
+คบ
+คบคนให้ดูหน้า ซื้อผ้าให้ดูเนื้อ
+คบค้า
+คบคิด
+คบชู้
+คบเพลิง
+คบไฟ
+คบหา
+คม
+คมกริบ
+คมขำ
+คมคาย
+คมน-
+คมน์
+คมนาการ
+คมนาคม
+คมในฝัก
+คมบาง
+คมสัน
+คมิกภัต
+ครก
+ครกกะเบือ
+คร่ง
+ครบ
+ครบครัน
+ครบถ้วน
+ครบมือ
+ครรชิต
+ครรภ
+ครรภ-
+ครรภ์
+ครรภธาตุ
+ครรภธาตุมณฑล
+ครรภมณฑล
+ครรภมล
+ครรโภทร
+ครรลอง
+ครรโลง
+ครรไล
+ครรหิต
+ครวญ
+ครวญคราง
+ครวญหา
+ครวัก
+ครวี
+ครหา
+ครอก
+ครอง
+ครองแครง
+ครองราชสมบัติ
+คร่อเงาะ
+คร่อเทียน
+ครอบ
+ครอบครอง
+ครอบครองปรปักษ์
+ครอบครัว
+ครอบงำ
+ครอบจักรวาล
+ครอบตลับ
+คร่อม
+คระ
+คระเมิม
+คระแลง
+คระไล
+คระแวง
+คระหน
+คระหวน
+คระหาย
+คระหิว
+คระโหย
+ครั่ง
+ครั้ง
+ครัดเคร่ง
+ครัน
+ครั่น
+ครั้น
+ครั่นคร้าม
+ครั่นตัว
+ครั่นเนื้อครั่นตัว
+ครับ
+ครัว
+ครัวทาน
+ครัวไฟ
+ครัวเรือน
+ครา
+คร่า
+คราก
+คราง
+คราญ
+คราด
+คร้าน
+คราบ
+คราบหมู
+คราม
+คร้าม
+ครามครัน
+คราว
+คร่าว
+คร่าวๆ
+คราส
+ครำ
+คร่ำ
+คร่ำครวญ
+คร่ำคร่า
+คร่ำครึ
+คร่ำเคร่ง
+คร่ำเครอะ
+คร่ำเงิน
+คร่ำทอง
+คร่ำหวอด
+คริปทอน
+คริสต์
+คริสต์มาส
+คริสต์ศักราช
+คริสตัง
+คริสเตียน
+ครี้
+ครีครอ
+ครีบ
+ครีบสิงห์
+ครีม
+ครีษมายัน
+ครึ
+ครึกครื้น
+ครึกโครม
+ครึ่ง
+ครึ่งๆ กลางๆ
+ครึ่งชาติ
+ครึ่งต่อครึ่ง
+ครึน
+ครึม
+ครึ้ม
+ครึมครุ
+ครืด
+ครืน
+ครื้น
+ครืนครั่น
+ครื้นครั่น
+ครื้นครึก
+ครื้นเครง
+ครือ
+ครุ
+ครุก-
+ครุคระ
+ครุฑ
+ครุฑกระทง
+ครุฑพ่าห์
+ครุ่น
+ครุ่นคิด
+ครุภัณฑ์
+ครุมเครือ
+ครุย
+ครุวนา
+ครุวาร
+ครุศาสตร์
+ครู
+ครู่
+ครูด
+คฤโฆษ
+คฤนถ์
+คฤห
+คฤห-
+คฤหบดี
+คฤหปัตนี
+คฤหัสถ์
+คฤหา
+คฤหาสน์
+คล
+คลวง
+คลอ
+คล้อ
+คลอก
+คลอเคลีย
+คลอแคล
+คล้อแคล้
+คลอง
+คล่อง
+คล้อง
+คล่องแคล่ว
+คล้องจอง
+คล่องตัว
+คลองเลื่อย
+คลองส่งน้ำ
+คลอด
+คลอน
+คลอนแคลน
+คล้อย
+คล้อยคล้อย
+คลอรีน
+คลอโรฟอร์ม
+คลอโรฟีลล์
+คละ
+คละคล่ำ
+คละคลุ้ง
+คละปน
+คลัก
+คลั่ก
+คลั่กๆ
+คลัง
+คลั่ง
+คลังพิมานอากาศ
+คลังเลือด
+คลังสินค้า
+คลังสินค้าทัณฑ์บน
+คลัตช์
+คลับคล้าย
+คลับคล้ายคลับคลา
+คลา
+คล้า
+คลาคล่ำ
+คลาไคล
+คลางแคลง
+คลาด
+คลาดเคลื่อน
+คลาดแคล้ว
+คลาน
+คลาย
+คล้าย
+คลายคล้าย
+คล้ายคล้าย
+คล้ายคลึง
+คลายเคล่ง
+คล่าว
+คลาศ
+คลำ
+คล่ำ
+คล้ำ
+คลิง
+คลิ้งโคลง
+คลิด
+คลินิก
+คลี
+คลี่
+คลี่คลาย
+คลึง
+คลึงเคล้น
+คลึงเคล้า
+คลื่น
+คลื่นกระทบฝั่ง
+คลื่นใต้น้ำ
+คลื่นปานกลาง
+คลื่นแม่เหล็กไฟฟ้า
+คลื่นยาว
+คลื่นวิทยุ
+คลื่นสั้น
+คลื่นไส้
+คลื่นเหียน
+คลุก
+คลุกคลาน
+คลุกคลี
+คลุกคลีตีโมง
+คลุ้ง
+คลุบ
+คลุม
+คลุ่ม
+คลุ้ม
+คลุ้มคลั่ง
+คลุมเครือ
+คลุมถุงชน
+คลุมประทม
+คลุมโปง
+คลุมผทม
+ควง
+ควงแขน
+ควงสว่าน
+ควณ
+ควน
+ควบ
+ควบคุม
+ควบแน่น
+ควย
+ควร
+ควัก
+ควักค้อน
+ควักลงหลุม
+ควั่งคว้าง
+ควัน
+ควั่น
+ควั่นจุก
+ควันหลง
+คว้า
+ควาก
+คว้าไขว่
+คว้าง
+คว้างๆ
+คว้างเคว้ง
+ควาญ
+ควาน
+คว้าน
+คว้านท้อง
+คว้าน้ำเหลว
+ความ
+ความคลาด
+ความเค้น
+ความเครียด
+ความเฉื่อย
+ความชอบ
+ความชื้น
+ความชื้นสัมบูรณ์
+ความชื้นสัมพัทธ์
+ความถ่วง
+ความถ่วงจำเพาะ
+ความถี่
+ความถี่วิทยุ
+ความโน้มถ่วง
+ความยาวคลื่น
+ความรู้ท่วมหัวเอาตัวไม่รอด
+ความรู้สึกเขื่อง
+ความรู้สึกด้อย
+ความรู้สึกเด่น
+ความเร่ง
+ความเร็ว
+ความหน่วง
+ความหลัง
+ควาย
+ควายปละ
+ควายพระอินทร์
+คว่าว
+คว่ำ
+คว่ำบาตร
+คว่ำหลัง
+ควินิน
+ควิวๆ
+ควิวควัง
+ควิวคว่าง
+ควิวคว้าง
+ควีนสิริกิติ์
+คห-
+คหกรรมศาสตร์
+คหบดี
+คหปตานี
+คหัฐ
+คอ
+ค้อ
+คอก
+ค็อกคัส
+คอกช้าง
+ค็อกเทล
+คอกระเช้า
+คอกลม
+คอกะลาสี
+คอขาดบาดตาย
+คอแข็ง
+คอคอด
+คอเคซอยด์
+ค่องอ้อย
+คอเชิ้ต
+คอซอง
+คอด
+คอแดง
+คอตก
+คอต่อ
+คอตั้ง
+คอตั้งบ่า
+คอตีบ
+คอถ่วง
+คอทองแดง
+คอน
+ค่อน
+ค้อน
+คอนกรีต
+คอนกรีตเสริมเหล็ก
+คอนกรีตอัดแรง
+ค้อนกลอง
+ค่อนขอด
+ค่อนข้าง
+ค้อนควัก
+ค่อนแคะ
+คอนเดนเซอร์
+ค้อนติง
+ค้อนตีหมา
+ค้อนทอง
+คอนแวนต์
+คอนเสิร์ต
+ค้อนหอย
+คอนาค
+คอบ
+คอบัว
+คอแบะ
+คอปาด
+คอเป็นเอ็น
+คอพอก
+คอพับ
+คอไฟ
+คอม
+ค่อม
+ค้อม
+คอมพิวเตอร์
+คอมมานโด
+คอมมิวนิสต์
+คอม้า
+คอย
+ค่อย
+ค่อยๆ
+ค้อย
+ค่อยดีขึ้น
+คอยท่า
+ค่อยเป็นค่อยไป
+ค่อยยังชั่ว
+คอยล์
+คอยเหตุ
+คอร์ด
+คอรวง
+คอระฆัง
+คอแร้ง
+คอแลน
+คอวี
+คอสติกโซดา
+คอสอง
+คอสะพาน
+คอสูง
+คอเสื้อ
+คอหอย
+คอหอยกับลูกกระเดือก
+คอหอยตีบ
+คอหอยพอก
+คอห่าน
+คอแห้ง
+คอแหลม
+คออ่อน
+คอฮาวาย
+คะ
+ค่ะ
+คะไขว่
+คะค้อย
+คะคาน
+คะคึง
+คะนน
+คะนอง
+คะน้า
+คะนึง
+คะเน
+คะเนงร้าย
+คะเน็ด
+คะแนน
+คะแนนนิยม
+คะแนนเสียง
+คะใน
+คะมำ
+คะมึก
+คะยั้นคะยอ
+คะเยอ
+คัก
+คั่ก
+คัคน-
+คัคนะ
+คัคนัมพร
+คัคนางค์
+คัคนานต์
+คั่ง
+คั่งค้าง
+คั่งแค้น
+คังไคย
+คัจฉ
+คัณฑมาลา
+คัณฑสูตร
+คัด
+คัดค้าน
+คัดเค้า
+คัดง้าง
+คัดฉาก
+คัดช้อน
+คัดชุน
+คัดท้าย
+คัดมอน
+คัดเม็ง
+คัดเลือก
+คัดเลือด
+คัทลียา
+คัน
+คั่น
+คั้น
+คันขา
+คันจาม
+คันฉ่อง
+คันฉัตร
+คันฉาย
+คันชัก
+คันชั่ง
+คันชีพ
+คันดาลฉัตร
+คันโดง
+คันถ-
+คันถธุระ
+คันถรจนาจารย์
+คันทรง
+คันธ
+คันธ-
+คันธ์
+คันธกุฎี
+คันธมาทน์
+คันธารราษฎร์
+คันนา
+คันบวย
+คันโพง
+คันเร่ง
+คันหามเสือ
+คับ
+คับขัน
+คับค้อน
+คับคั่ง
+คับคา
+คับแค
+คับแค้น
+คับแคบ
+คับใจ
+คับอกคับใจ
+คัพภ-
+คัพภ์
+คัพภสาลี
+คัพโภทร
+คัมภีร-
+คัมภีร์
+คัมภีรภาพ
+คัล
+คัว
+คั่ว
+คา
+ค่า
+ค้า
+คากรอง
+ค้าขาย
+ค่าขึ้นศาล
+ค่าคบ
+ค่าครองชีพ
+ค้าความ
+ค้าค้า
+คาง
+ค่าง
+ค้าง
+คางคก
+คางคกขึ้นวอ
+คางคกไฟ
+ค้างคาว
+ค้างคืน
+ค้างเดือนค้างปี
+ค้างเติ่ง
+คางทูม
+คางโทน
+คางเบือน
+ค้างปี
+คางหมู
+คางเหลือง
+คาด
+คาดคั้น
+คาดค่า
+คาดไม่ถึง
+คาดหน้า
+คาดหมัด
+ค่าตัว
+คาถา
+คาถาพัน
+คาถาอาคม
+คาทอลิก
+ค่าที่
+คาธ
+ค่าธรรมเนียม
+ค่าธรรมเนียมศาล
+คาน
+ค้าน
+คานคอดิน
+คานหาม
+คาน้า
+ค่าน้ำ
+คาบ
+คาบเกี่ยว
+คาบชุด
+คาบลูกคาบดอก
+คาบศิลา
+คาบสมุทร
+คาบเส้น
+ค้าประเวณี
+ค่าป่วยการ
+ค่าปากเรือ
+ค่าเผา
+คาพยุต
+ค่าภาคหลวง
+คาม
+คาม-
+คามณี
+คามณีย์
+คามภีร์
+คามโภชก
+คามวาสี
+คามี
+คาย
+ค่าย
+คายก
+คายก-
+คายกคณะ
+ค่ายกักกัน
+ค่ายเยาวชน
+ค่ายอาสาพัฒนา
+คายัน
+คาร์บอน
+คาร์บอนไดออกไซด์
+คาร์บอนมอนอกไซด์
+คาร์บอเนต
+คาร์บอลิก
+คาร์บูเรเตอร์
+คาร์โบรันดัม
+คาร์โบไฮเดรต
+คารพ
+คารม
+คารวะ
+คาราคาก่า
+คาราคาซัง
+คาราเต้
+คาราวาน
+ค่าฤชาธรรมเนียม
+คาว
+ค่าว
+ค้าว
+คาวตอง
+คาวปลา
+คาวี
+คาวุต
+คาส
+ค่าสัมบูรณ์
+ค่าสินไหมทดแทน
+ค่าเสมอภาค
+ค่าเสียหาย
+ค่าหด
+คาหนังคาเขา
+ค่าหน้าดิน
+ค่าหัว
+คำ
+ค่ำ
+ค้ำ
+คำขวัญ
+คำขอ
+คำขาด
+คำคม
+ค้ำคอ
+ค่ำคืน
+คำคู่ความ
+ค้ำเงิน
+ค้ำจุน
+ค้ำชู
+คำดีควาย
+คำโดด
+คำตั้ง
+คำตาย
+คำติดต่อ
+คำเติม
+คำใต้
+คำแถลง
+คำแถลงการณ์
+คำทาย
+คำเทียบ
+คำนวณ
+คำนวร
+คำนับ
+คำนัล
+คำนำ
+คำนึง
+คำนูณ
+คำบังคับ
+คำโบล
+ค้ำประกัน
+คำประสม
+คำปรารภ
+คำเป็น
+คำฝอย
+คำพิพากษา
+คำเพลิง
+คำฟ้อง
+คำฟ้องแย้ง
+ค้ำฟ้า
+คำมั่น
+คำมั่นว่าจะให้รางวัล
+คำมากพยางค์
+คำมูล
+คำเมือง
+คำรน
+คำรบ
+คำร้อง
+คำร้องขอ
+คำร้องทุกข์
+คำราม
+คำสุภาพ
+คำแสด
+คำหลวง
+ค้ำหัว
+คำแหง
+คำโอง
+คิกๆ
+คิง
+คิด
+คิดการใหญ่
+คิดคด
+คิดค้น
+คิดตก
+คิดถึง
+คิดมาก
+คิดเล็กคิดน้อย
+คิดสมบัติบ้า
+คิดสั้น
+คิดหน้าคิดหลัง
+คิดเห็น
+คิดอ่าน
+คิมห
+คิมหันต์
+คิมหานะ
+คิริ
+คิรี
+คิลาน-
+คิลานปัจจัย
+คิลานเภสัช
+คิลานะ
+คิว
+คิ้ว
+คิ้วนาง
+คี่
+คีต
+คีตกะ
+คีบ
+คีม
+คีรี
+คีรีบูน
+คึก
+คึ่ก
+คึ่กๆ
+คึกคัก
+คึกคาม
+คืน
+คืนคำ
+คืนชีพ
+คืนดี
+คืนตัว
+คืนยังรุ่ง
+คืนให้
+คืบ
+คืบก็ทะเล ศอกก็ทะเล
+คือ
+คุ
+คุก
+คุกกี้
+คุกเข่า
+คุกคลาน
+คุกคาม
+คุกพาทย์
+คุคะ
+คุง
+คุ้ง
+คุณ
+คุณ-
+คุณชาย
+คุณธรรม
+คุณนาม
+คุณนาย
+คุณบท
+คุณพิเศษ
+คุณภาพ
+คุณลักษณะ
+คุณลุงคุณป้า
+คุณวิเศษ
+คุณวุฒิ
+คุณศัพท์
+คุณสมบัติ
+คุณหญิง
+คุณากร
+คุณูปการ
+คุโณปการ
+คุด
+คุดคู้
+คุดทะราด
+คุดทะราดเหยียบกรวด
+คุต
+คุตติ
+คุ่น
+คุ้น
+คุ้นเคย
+คุป
+คุปต์
+คุปติ
+คุม
+คุ่ม
+คุ้ม
+คุ้มกัน
+คุมกำเนิด
+คุ้มเกรง
+คุ้มครอง
+คุมแค้น
+คุมเชิง
+คุ้มดีคุ้มร้าย
+คุ้มเท้า
+คุ้มโทษ
+คุมธาตุ
+คุมนุม
+คุมฝอย
+คุ้มห้าม
+คุย
+คุ้ย
+คุ้ยเขี่ย
+คุยช้าง
+คุยห-
+คุยหฐาน
+คุยหประเทศ
+คุยหรหัสย์
+คุรุ
+คุรุกรรม
+คุรุวาร
+คุรุศึกษา
+คุลา
+คุลาซ่อนลูก
+คุลิก่า
+คุลีการ
+คุหา
+คู
+คู่
+คู้
+คู่กรณี
+คู่ขา
+คู่แข่ง
+คู่ครอง
+คู่ควร
+คู่ความ
+คู่ความร่วม
+คู่คิด
+คู่คี่
+คู่เคียง
+คู่โค
+คู่ใจ
+คู่ฉบับ
+คู่ฉีก
+คู่ชัก
+คู่ชีพ
+คู่ชีวิต
+คูณ
+คูณร่วมน้อย
+คูถ
+คู่ทุกข์คู่ยาก
+คูน
+คู้บัลลังก์
+คู่บ้านคู่เมือง
+คู่บารมี
+คู่บุญ
+คู่ปรปักษ์
+คู่ปรับ
+คูปอง
+คู่ผสม
+คู่ผัวตัวเมีย
+คู่พระคู่นาง
+คู่พิพาท
+คู่ม้า
+คู่มิตร
+คู่มือ
+คู่ยาก
+คู่รัก
+คูเรียงคูราย
+คู่เรียงเคียงหมอน
+คูเรียม
+คู่ลำดับ
+คู่ศัตรู
+คู่สร้าง
+คู่สวด
+คู่สัญญา
+คู่สายโทรศัพท์
+คู่หมั้น
+คูหา
+คู่หู
+คู่แห่
+คู่อริ
+คู่อาฆาต
+คู่อาศัย
+เค้ก
+เค้เก้
+เค้ง
+เคจฉ
+เคณฑะ
+เคด
+เคน
+เค้น
+เคเบิล
+เค็ม
+เคมี
+เคมีภัณฑ์
+เคมีอนินทรีย์
+เคมีอินทรีย์
+เคย
+เคยตัว
+เคยปาก
+เคยมือ
+เครง
+เคร่ง
+เคร่งขรึม
+เคร่งครัด
+เครงครา
+เครงครำ
+เครงคร่ำ
+เครงครื้น
+เคร่งเครียด
+เครงเครียว
+เครดิต
+เครดิตฟองซิเอร์
+เครน
+เครา
+เคร่า
+เคราแพะ
+เคราหณี
+เคราะห์
+เคราะห์หามยามร้าย
+เครียด
+เครียว
+เครือ
+เครือเขา
+เครือเขาน้ำ
+เครือเขามวก
+เครื่อง
+เครื่องกล
+เครื่องกัณฑ์
+เครื่องกิน
+เครื่องแกง
+เครื่องเขิน
+เครื่องครัว
+เครื่องควบแน่น
+เครื่องคู่
+เครื่องเครา
+เครื่องเงิน
+เครื่องจักร
+เครื่องช่วงล่าง
+เครื่องเซ่น
+เครื่องดนตรี
+เครื่องต้น
+เครื่องตั้ง
+เครื่องทอง
+เครื่องทองทิศ
+เครื่องทองน้อย
+เครื่องเทศ
+เครื่องใน
+เครื่องบน
+เครื่องบันทึกเสียง
+เครื่องบิน
+เครื่องบูชา
+เครื่องแบบ
+เครื่องประดับ
+เครื่องปรุง
+เครื่องปั้นดินเผา
+เครื่องผูก
+เครื่องมั่น
+เครื่องมือ
+เครื่องยนต์
+เครื่องยนต์ไอพ่น
+เครื่องร่อน
+เครื่องราง
+เครื่องราชอิสริยาภรณ์
+เครื่องร่ำ
+เครื่องเรือน
+เครื่องล่าง
+เครื่องเล่น
+เครื่องว่าง
+เครื่องสด
+เครื่องสะดุ้ง
+เครื่องสับ
+เครื่องสาย
+เครื่องสำอาง
+เครื่องสุกำศพ
+เครื่องสูง
+เครื่องหมาย
+เครื่องหมายการค้า
+เครื่องหยวก
+เครื่องหลัง
+เครื่องห้า
+เครื่องเหล็ก
+เครื่องใหญ่
+เครื่องอังทราย
+เครื่องอังน้ำ
+เครือจักรภพ
+เครือดิน
+เครือแย่ง
+เครือรัฐ
+เครือวัลย์พันไม้
+เคล้ง
+เคล็ด
+เคล้น
+เคล้า
+เคล่าคล่อง
+เคล้าคลึง
+เคล้าเคลีย
+เคลิบเคลิ้ม
+เคลิ้ม
+เคลีย
+เคลียคลอ
+เคลี้ยคลิง
+เคลียเคล้า
+เคลื่อน
+เคลื่อนคลาด
+เคลื่อนที่
+เคลื่อนไหว
+เคลือบ
+เคลือบคลุม
+เคลือบแคลง
+เคลือบแฝง
+เคลือบฟัน
+เคว้ง
+เคว้งคว้าง
+เคห-
+เคหศาสตร์
+เคหเศรษฐศาสตร์
+เคหสถาน
+เคหะ
+เคหา
+เคอย
+เคอะ
+เคา
+เค้า
+เค้าโครง
+เค้าเงื่อน
+เคาน์เตอร์
+เค้ามูล
+เคารพ
+เค้าสนามหลวง
+เคาะ
+เคาะแคะ
+เคี้ย
+เคียง
+เคียงบ่าเคียงไหล่
+เคียด
+เคียดแค้น
+เคียน
+เคียม
+เคี่ยม
+เคี่ยมคะนอง
+เคียร
+เคียว
+เคี่ยว
+เคี้ยว
+เคี่ยวขัน
+เคี่ยวขับ
+เคี่ยวเข็ญ
+เคี้ยวฟัน
+เคี้ยวเอื้อง
+เคื้อ
+เคือง
+แค
+แค่
+แค้
+แคแกล
+แคดเมียม
+แค็ตตาล็อก
+แคแตร
+แคโทด
+แคน
+แค่น
+แค้น
+แค้นคอ
+แค่นแคะ
+แค่นไค้
+แคบ
+แคบหมู
+แคปซูล
+แคฝรั่ง
+แคฝอย
+แคม
+แคร่
+แครก
+แครครั่ง
+แครง
+แครงเครียว
+แคระ
+แคลคูลัส
+แคลง
+แคลงใจ
+แคลเซียม
+แคลเซียมคาร์ไบด์
+แคลเซียมไซคลาเมต
+แคลน
+แคล้ว
+แคล่วคล่อง
+แคล้วคลาด
+แคลอรี
+แคลิฟอร์เนียม
+แคแล
+แคว
+แควก
+แคว้ง
+แคว้น
+แคแสด
+แคะ
+แคะไค้
+โค
+โคก
+โคกกระสุน
+โคกกระออม
+โคกม้า
+โคแก่ชอบกินหญ้าอ่อน
+โคคลาน
+โคเคน
+โค่ง
+โค้ง
+โคจร
+โคจร-
+โคจรคาม
+โคเซแคนต์
+โคไซน์
+โคตร
+โคตร-
+โคตรภู
+โคตรภูญาณ
+โคเถลิง
+โคแทนเจนต์
+โคธา
+โคน
+โค่น
+โคนดินสอ
+โคนตายปลายเป็น
+โคนม
+โคนสมอ
+โคบอลต์
+โคบาล
+โคบุตร
+โคปผกะ
+โคเพลาะ
+โคไพร
+โคม
+โคมดอกไม้
+โคมตาวัว
+โคมลอย
+โคมเวียน
+โคมัย
+โคม่า
+โคมูตร
+โครก
+โครกครอก
+โครกคราก
+โครง
+โคร่ง
+โครงการ
+โคร่งคร่าง
+โครงแคร
+โครงจมูก
+โครงเรื่อง
+โครงสร้าง
+โครม
+โครมคราม
+โครเมียม
+โครโมโซม
+โครส
+โคราช
+โครำ
+โคโรค
+โคล
+โคลง
+โคลงเคลง
+โคลน
+โควตา
+โควิถี
+โคศัพท์
+โคออร์ดิเนต
+ใคร
+ใคร่
+ใคร่ครวญ
+ไค
+ไค้
+ไคร้
+ไคร้เครือ
+ไคล
+ไคล้
+ฅ
+ฆ
+ฆน
+ฆราวาส
+ฆ้อง
+ฆ้องกระแต
+ฆ้องชัย
+ฆ้องปากแตก
+ฆ้องวง
+ฆ้องสามย่าน
+ฆ้องหุ่ย
+ฆ้องเหม่ง
+ฆ้องโหม่ง
+ฆ่า
+ฆ่าควายอย่าเสียดายพริก
+ฆาฏ
+ฆาต
+ฆาต-
+ฆาตกร
+ฆาตกรรม
+ฆาน
+ฆาน-
+ฆานประสาท
+ฆ่าไม่ตายขายไม่ขาด
+เฆี่ยน
+โฆรวิส
+โฆษก
+โฆษณา
+โฆษณาการ
+โฆษณาชวนเชื่อ
+โฆษะ
+โฆษิต
+ง
+งก
+งกเงิ่น
+งกๆ เงิ่นๆ
+งง
+งงงวย
+งงงัน
+งงิด
+งด
+งดงาม
+งบ
+งบดุล
+งบประมาณ
+งม
+งมเข็มในมหาสมุทร
+งมโข่ง
+งมงาย
+งวง
+ง่วง
+ง่วงงุน
+งวงช้าง
+ง่วงเหงา
+ง่วงเหงาหาวนอน
+งวด
+ง่วน
+ง้วน
+งวยงง
+งอ
+ง้อ
+งอก
+งอกงาม
+งอกเงย
+งอกแงก
+งอก่องอขิง
+ง่อง
+ง่องแง่ง
+ง้องอน
+งอแง
+งอด
+งอดแงด
+งอน
+ง่อน
+งอนง้อ
+ง่อนแง่น
+งอนไถ
+งอนหง่อ
+ง้อนหมู
+งอบ
+งอม
+ง้อม
+งอมแงม
+งอมพระราม
+งอมืองอตีน
+งอย
+ง่อย
+ง่อยเปลี้ยเสียขา
+งอหาย
+งะ
+งักๆ
+งั่กๆ
+งังๆ
+งั่ง
+งัด
+งัดข้อ
+งัน
+งันงก
+งับ
+งับแง
+งัว
+งั่ว
+งัวเงีย
+งัวซัง
+งัวเลีย
+งา
+ง่า
+งากำจาย
+งาเครือ
+ง้าง
+ง่าเงย
+งาช้าง
+งาแซง
+งาไซ
+งาตัด
+งาน
+ง่าน
+งานการ
+งานหลวงไม่ให้ขาด งานราษฎร์ไม่ให้เสีย
+งาบๆ
+งาม
+ง่าม
+งามงอน
+งามแงะ
+ง่ามถ่อ
+งามหน้า
+งาย
+ง่าย
+ง่ายๆ
+ง่ายดาย
+ง่าย้อย
+งาลั่ว
+ง้าว
+งาสาน
+งำ
+ง่ำ
+ง่ำๆ
+ง้ำ
+งิ้ว
+งีบ
+งึกๆ
+งึน
+งึม
+งึมงำ
+งุด
+งุดๆ
+งุนงง
+งุ่นง่าน
+งุบ
+งุบๆ
+งุบงิบ
+งุ้ม
+งุ่มง่าม
+งุย
+งู
+งูกลืนหาง
+งูกินหาง
+งูบ
+งูๆ ปลาๆ
+งูผู้
+งูเมีย
+งูสวัด
+งู่หนี
+งูเหลือม
+งูเห่า
+เง้
+เงก
+เง็น
+เงย
+เงยหน้าอ้าปาก
+เงอะ
+เงอะงะ
+เงา
+เงาๆ
+เง่า
+เง้า
+เง้างอด
+เง้าๆ งอดๆ
+เงาตามตัว
+เงามัว
+เงามืด
+เงาะ
+เงาะป่า
+เงิน
+เงินก้นถุง
+เงินก้อน
+เงินกู้
+เงินเชื่อ
+เงินดาวน์
+เงินเดือน
+เงินแดง
+เงินได้กำบัง
+เงินต้น
+เงินตรา
+เงินตาย
+เงินทองตรา
+เงินทอน
+เงินนอน
+เงินน้ำห้าน้ำหก
+เงินปลีก
+เงินปันผล
+เงินปากถุง
+เงินปากผี
+เงินปี
+เงินแป
+เงินผ่อน
+เงินฝืด
+เงินเฟ้อ
+เงินมุ่น
+เงินยวง
+เงินเยอรมัน
+เงินร้อน
+เงินรายปี
+เงินสด
+เงินสเตอร์ลิง
+เงินหลวง
+เงินแห้ง
+เงี่ยง
+เงี่ยน
+เงียบ
+เงียบกริบ
+เงียบเชียบ
+เงียบเป็นเป่าสาก
+เงียบเหงา
+เงี้ยว
+เงี้ยวระเริง
+เงี้ยวรำลึก
+เงี่ยหู
+เงื้อ
+เงือก
+เงื่อง
+เงื่องๆ
+เงื่องหงอย
+เงื้อง่าราคาแพง
+เงือด
+เงือดงด
+เงือดเงื้อ
+เงือน
+เงื่อน
+เงื่อนไข
+เงื่อนไขบังคับก่อน
+เงื่อนไขบังคับหลัง
+เงื่อนงำ
+เงื่อนเวลา
+เงื่อนเวลาเริ่มต้น
+เงื่อนเวลาสิ้นสุด
+เงือบ
+เงื้อม
+เงื้อมมือ
+แง
+แงๆ
+แง่
+แง่ง
+แง่งๆ
+แง่งขิง
+แง่งอน
+แง่น
+แง่นๆ
+แง้ม
+แงะ
+โง
+โง่
+โงก
+โงกเงก
+โง่แกมหยิ่ง
+โงง
+โง่งๆ
+โง้ง
+โงงเงง
+โง่งเง่ง
+โงเง
+โง่เง่า
+โง่เง่าเต่าตุ่น
+โงน
+โงนเงน
+โง่แล้วอยากนอนเตียง
+ไง้
+จ
+จก
+จง
+จ่ง
+จ๋ง
+จงกรม
+จงกรมแก้ว
+จงกล
+จงกลนี
+จงเกลียดจงชัง
+จงโคร่ง
+จงใจ
+จงดี
+จงรัก
+จงรักภักดี
+จงอร
+จงอาง
+จแจ้น
+จญ
+จด
+จดจ่อ
+จดจ้อง
+จดๆ จ้องๆ
+จดจำ
+จดทะเบียน
+จดหมัด
+จดหมาย
+จดหมายเวียน
+จดหมายเหตุ
+จดุร
+จดุรงค์
+จดูร-
+จตุ-
+จตุกาลธาตุ
+จตุตถ-
+จตุตถี
+จตุทิพยคันธา
+จตุบท
+จตุบริษัท
+จตุปัจจัย
+จตุปาริสุทธิศีล
+จตุร-
+จตุรคูณ
+จตุรงค์
+จตุรงคนายก
+จตุรงคประดับ
+จตุรงคยมก
+จตุรถ-
+จตุรพักตร์
+จตุรพิธ
+จตุรพิธพร
+จตุรภุช
+จตุรภูมิ
+จตุรยุค
+จตุราริยสัจ
+จตุลังคบาท
+จตุโลกบาล
+จตุสดมภ์
+จทึง
+จน
+จ้น
+จนกระทั่ง
+จนกว่า
+จนชั้น
+จนด้วยเกล้า
+จนถึง
+จนแล้วจนรอด
+จบ
+จบเห่
+จม
+จ่ม
+จมเบ้า
+จมปลัก
+จมไม่ลง
+จมร
+จมรี
+จมูก
+จมูกปลาหลด
+จมูกปลาไหล
+จมูกมด
+จมูกวัว
+จมูกหลอด
+จยุติ
+จร
+จร-
+จรก
+จรกลู่
+จรแกว่ง
+จรคั่ง
+จรจรัล
+จรจัด
+จรณะ
+จรด
+จรดพระกรรไตรกรรบิด
+จรดพระนังคัล
+จรดล
+จรบน
+จรบัน
+จรบาท
+จรมัน
+จรมูก
+จรรจา
+จรรโจษ
+จรรม
+จรรม-
+จรรมการ
+จรรมขัณฑ์
+จรรยา
+จรรยาบรรณ
+จรรโลง
+จรลวง
+จรล่วง
+จรลาด
+จรลาย
+จรล่ำ
+จรลิ่ว
+จรลี
+จรลู่
+จรวจ
+จรวจไจร
+จรวด
+จรวดจรี
+จรวดนำวิถี
+จรวัก
+จรส
+จรอก
+จระกล้าย
+จระขาบ
+จระเข้
+จระเข้ปากกระทุงเหว
+จระเข้หางยาว
+จระคลับ
+จระคล้าย
+จระคลุ่ม
+จระแคง
+จระจุ่ม
+จระทก
+จระเทิน
+จระนำ
+จระบาน
+จระบี
+จระลิ่ง
+จระลึง
+จระลุง
+จรัล
+จรัส
+จราก
+จราง
+จราจร
+จราญ
+จราย
+จราว
+จราส
+จริก
+จริง
+จริงๆ
+จริงจัง
+จริงใจ
+จริงอยู่
+จริต
+จริม-
+จริย-
+จริยธรรม
+จริยวัตร
+จริยศาสตร์
+จริยศึกษา
+จริยา
+จริยาปิฎก
+จริยาวัตร
+จริว
+จรี
+จรึง
+จรุก
+จรุง
+จรูง
+จรูญ
+จรูส
+จเร
+จล
+จลนพลศาสตร์
+จลนศาสตร์
+จลนี
+จลา
+จลาจล
+จวก
+จ๊วก
+จวง
+จ้วง
+จ๋วง
+จ๋วงเครือ
+จวงจันทน์
+จ้วงจาบ
+จวงหอม
+จวด
+จวดลาก
+จวน
+จวนเจียน
+จวนแจ
+จวนตัว
+จวบ
+จวบจวน
+จวัก
+จอ
+จ่อ
+จ้อ
+จ๋อ
+จอก
+จ้อก
+จ้อกๆ
+จ๊อก
+จ๊อกๆ
+จ้อกแจ้ก
+จ้อกวอก
+จอกหูหนู
+จอง
+จ่อง
+จ้อง
+จ๋อง
+จองคช
+จองจำ
+จ้องเต
+จองถนน
+จองเปรียง
+จองเวรจองกรรม
+จองหง่อง
+จ้องหน่อง
+จองหอง
+จองหองพองขน
+จอแจ
+จ๋อแจ๋
+จอด
+จอน
+จ้อน
+จอนจ่อ
+จอนหู
+จอบ
+จอม
+จ่อม
+จอมขวัญ
+จ่อมจ่าย
+จอมใจ
+จอมไตร
+จอมทอง
+จอมทัพ
+จอมปลวก
+จอมปลอม
+จ้อมป้อม
+จอมเปาะ
+จอมพล
+จอมมารดา
+จอมสุรางค์
+จ่อย
+จ้อย
+จ๋อย
+จ๋อยๆ
+จอแส
+จะ
+จ้ะ
+จ๊ะ
+จ๋ะ
+จะกรัจจะกราจ
+จะกรุน
+จะกรุมจะกราม
+จะกรูน
+จะกละ
+จะกลาม
+จะกวด
+จะกูด
+จะเกร็ง
+จะขาบ
+จะเข้
+จะเข็บ
+จะงอย
+จะจะ
+จะจ้า
+จะแจ้ง
+จะแจ่ม
+จะไจ้
+จะบัน
+จะปิ้ง
+จะปิ้งเรือ
+จะเพลิง
+จะละเม็ด
+จะละหวั่น
+จะลุง
+จ๊ะเอ๋
+จัก
+จั้กๆ
+จักกาย
+จั๊กกิ้ม
+จักขุ
+จักขุทวาร
+จักขุประสาท
+จักขุวิญญาณ
+จักขุสัมผัส
+จักจั่น
+จักจี้
+จั๊กจี้
+จั๊กเดียม
+จักร
+จักร-
+จักรปาณิ
+จักรปาณี
+จักรพรรดิ
+จักรพาก
+จักรพาล
+จักรภพ
+จักรยาน
+จักรยานยนต์
+จักรราศี
+จักรวรรดิ
+จักรวรรดินิยม
+จักรวาก
+จักรวาต
+จักรวาล
+จักริน
+จักรี
+จั๊กเล้อ
+จักษุ
+จักสาน
+จักแหล่น
+จัง
+จั้ง
+จั๋ง๑
+จังกวด
+จังกอบ
+จังกา
+จังก้า
+จังกูด
+จังเก
+จังโกฏก์
+จังงัง
+จังมัง
+จั้งมั่ง
+จังไร
+จังลอน
+จังเว็จ
+จังหนับ
+จังหน้า
+จังหรีด
+จังหล่อ
+จังหวะ
+จังหวัด
+จังหัน
+จังออน
+จัญไร
+จัณฑ-
+จัณฑ์
+จัณฑวาตา
+จัณฑาล
+จัด
+จัดการ
+จัดจอง
+จัดจ้า
+จัดจ้าน
+จัดเจน
+จัดแจง
+จัดตั้ง
+จัดประกัน
+จัดมั่น
+จัดสรร
+จัดหา
+จัตตาฬีส
+จัตวา
+จัตวาทัณฑี
+จัตวาศก
+จัตุ
+จัตุร-
+จัตุรงค์
+จัตุรพักตร์
+จัตุรภุช
+จัตุรมุข
+จัตุรัส
+จัตุโลกบาล
+จัตุสดมภ์
+จัน
+จั่น
+จันโจษ
+จั่นดิน
+จันท์
+จันทน์
+จันทน์กะพ้อ
+จันทน์ขาว
+จันทน์ชะมด
+จันทน์แดง
+จันทน์เทศ
+จันทน์ผา
+จันทน์หอม
+จันทนา
+จันทร-
+จันทร์
+จันทรกลา
+จันทรกานต์
+จันทรคติ
+จันทรคราส
+จันทรพิมพ์
+จันทรมณฑล
+จันทรเม็ด
+จันทรวงศ์
+จันทรเศขร
+จันทรุปราคา
+จันทัน
+จันทันพราง
+จันลอง
+จันเลา
+จันเลาะ
+จั้นหล่อ
+จั่นหับ
+จั่นห้าว
+จันอับ
+จับ
+จับกลุ่ม
+จับกัง
+จับกุม
+จับเขม่า
+จับไข้
+จับความ
+จับงูข้างหาง
+จับจด
+จับจอง
+จับจ่าย
+จับจิต
+จับเจ่า
+จับเจี๋ยว
+จับใจ
+จับฉ่าย
+จับเชิง
+จับดำถลำแดง
+จับเดิม
+จับตัววางตาย
+จับตา
+จับตาดู
+จับตาย
+จับปิ้ง
+จับเป็น
+จับโปง
+จับผิด
+จับพลัดจับผลู
+จับแพะชนแกะ
+จับยาม
+จับยี่กี
+จับระบำ
+จับเวลา
+จับสั่น
+จับสายสิญจน์
+จับเสือมือเปล่า
+จับหลัก
+จับหวัด
+จับหัวเข่าพูด
+จัมบก
+จัมปก
+จัมมะ
+จัว
+จั่ว
+จั๊วะ
+จา
+จ่า
+จ้า
+จ๋า
+จาก
+จากพราก
+จากพาก
+จ่ากลอง
+จาค-
+จาคี
+จาง
+จ่าง
+จ้าง
+จางวาง
+จาด
+จาดตะกั่ว
+จาตุ-
+จาตุกรณีย์
+จาตุทสี
+จาตุมหาราช
+จาตุร-
+จาตุรงค-
+จาตุรงค์
+จาตุรงคสันนิบาต
+จาตุรนต์
+จาตุรนต์รัศมี
+จาตุรราชการ
+จาตุรันต์
+จาน
+จ้าน
+จานจ่าย
+จานเจือ
+จานเชิง
+จานบิน
+จานผี
+จานเสียง
+จาบ
+จาบจ้วง
+จาบัล
+จาบัลย์
+จาป
+จ่าปี่
+จาม
+จ่ามงกุฎ
+จามจุรี
+จามร
+จามรี
+จามีกร
+จ่าย
+จ่ายตลาด
+จาร
+จ่ารง
+จารวาก
+จาระไน
+จาระบี
+จาริก
+จารี
+จารีต
+จารีตนครบาล
+จารีตประเพณี
+จารึก
+จารุ
+จ้าละหวั่น
+จาว
+จาวๆ
+จ่าว
+จ้าว
+จาวมะพร้าว
+จ่าหน้า
+จ่าหวัก
+จำ
+จ้ำ
+จำกว่า
+จำกัด
+จำกัดความ
+จำกัดจำเขี่ย
+จำกัดสินใช้
+จำครบ
+จำงาย
+จำจอง
+จ้ำจี้
+จ้ำจี้จ้ำไช
+จำเจ
+จำเดิม
+จำทวย
+จำทับ
+จำทาบ
+จำเทิด
+จำแทง
+จำนง
+จำนน
+จำนรรจ์
+จำนรรจา
+จำนวน
+จำนวนจริง
+จำนวนจินตภาพ
+จำนวนเชิงซ้อน
+จำนวนตรรกยะ
+จำนวนเต็ม
+จำนวนนับ
+จำนวนอตรรกยะ
+จำนอง
+จำนับ
+จำนัล
+จำนำ
+จำนำพรรษา
+จำเนียน
+จำเนียม
+จำเนียร
+จำแนก
+จำโนทย์
+จำบ่ม
+จำบัง
+จำบับ
+จำเบศ
+จ้ำเบ้า
+จำแบ
+จำปา
+จำปาขอม
+จำปาแขก
+จำปาดะ
+จำปาทองเทศ
+จำปาลาว
+จำปาหอม
+จำปี
+จำปีแขก
+จำปูน
+จำเป็น
+จำพรรษา
+จำพวก
+จำเพาะ
+จำแพรก
+จ้ำม่ำ
+จำรด
+จำรัส
+จำราญ
+จำราย
+จำรูญ
+จำเริญ
+จำเรียง
+จำลอง
+จำลองทอง
+จำลาย
+จำเลย
+จำเลาะ
+จำเลาะตา
+จำแลง
+จำแล่น
+จำวัด
+จำศีล
+จำหนับ
+จ๋ำหนับ
+จำหน่าย
+จำหระ
+จำหล่อ
+จำหลอก
+จำหลัก
+จำหัน
+จำห้าประการ
+จำหาย
+จำหุด
+จำเหียง
+จำอวด
+จำอื่น
+จิ
+จิก
+จิกปีก
+จิกหัว
+จิ่ง
+จิ้งจก
+จิงจ้อ
+จิ้งจอก
+จิงจัง
+จิ้งจัง
+จิงโจ้
+จิงโจ้น้ำ
+จิ้งหรีด
+จิ้งหรีดผี
+จิ้งเหลน
+จิ้งเหลนด้วง
+จิต
+จิต-
+จิตกาธาน
+จิตกึ่งสำนึก
+จิตใจ
+จิตต-
+จิตต์
+จิตตภาวนา
+จิตตวิสุทธิ
+จิตตานุปัสสนา
+จิตใต้สำนึก
+จิตนิยม
+จิตบำบัด
+จิตแพทย์
+จิตภาพ
+จิตร
+จิตร-
+จิตรกร
+จิตรกรรม
+จิตรจุล
+จิตรปทา
+จิตรลดา
+จิตรเลขา
+จิตระ
+จิตรา
+จิตไร้สำนึก
+จิตวิทยา
+จิตวิสัย
+จิตเวชศาสตร์
+จิตสำนึก
+จินเจา
+จินดา
+จินดามณี
+จินดามัย
+จินดาหนา
+จินดาหรา
+จินต-
+จินต์
+จินตกวี
+จินต์จล
+จินตนาการ
+จินตภาพ
+จิบ
+จิปาถะ
+จิ่ม
+จิ้ม
+จิ้มก้อง
+จิ้มฟันจระเข้
+จิ้มลิ้ม
+จิร-
+จิรกาล
+จิรัฐิติกาล
+จิ๋ว
+จี
+จี่
+จี้
+จี๋
+จี๋จ้อ
+จี่จู้
+จีแจ๊บ
+จี๊ด
+จีน
+จีนเต็ง
+จีนแส
+จีนแสโสกา
+จีบ
+จีบปากจีบคอ
+จีบพลู
+จีโบ
+จีพร
+จีม
+จีวร
+จีวร-
+จีวรกรรม
+จีวรการสมัย
+จีวรกาลสมัย
+จีวรทานสมัย
+จีวรภาชก
+จี้เส้น
+จึง
+จึ่ง
+จึ้ง
+จืด
+จืดจาง
+จืดชืด
+จืดตา
+จื้นเจือก
+จุ
+จุๆ
+จุก
+จุ๊กกรู๊
+จุกจิก
+จุกเจ่า
+จุกช่องล้อมวง
+จุกชี
+จุกผาม
+จุกผามม้ามย้อย
+จุกพราหมณ์
+จุกยา
+จุกโรหินี
+จุ่ง
+จุ้งจัง
+จุ๋งจิ๋ง
+จุใจ
+จุฑา
+จุฑาธิปไตย
+จุฑามณี
+จุฑามาศ
+จุฑารัตน์
+จุณ
+จุณณียบท
+จุด
+จุดจบ
+จุดเด่น
+จุดเดือด
+จุดไต้ตำตอ
+จุดทศนิยม
+จุดน้ำค้าง
+จุดบอด
+จุดยืน
+จุดยุทธศาสตร์
+จุดเยือกแข็ง
+จุดรวม
+จุดลูกน้ำ
+จุดศูนย์กลาง
+จุดศูนย์ถ่วง
+จุดสัมผัส
+จุดหมาย
+จุดหมายปลายทาง
+จุดหลอมเหลว
+จุดหลัง
+จุดเหี่ยวเฉา
+จุดอ่อน
+จุดอิ่มตัว
+จุติ
+จุตูปปาตญาณ
+จุทส
+จุทสมสุรทิน
+จุน
+จุ่น
+จุ้น
+จุ้นจ้าน
+จุนจู๋
+จุ้นจู๊
+จุนเจือ
+จุนทการ
+จุนสี
+จุบ
+จุ๊บ
+จุบจิบ
+จุ๊บแจง
+จุปาก
+จุ่ม
+จุ้ม
+จุ๋มจิ๋ม
+จุมพฏ
+จุมพรวด
+จุมพล
+จุมพิต
+จุมโพล่
+จุ้ย
+จุรณ
+จุรี
+จุไร
+จุล-
+จุลกฐิน
+จุลจอมเกล้า
+จุลชีพ
+จุลชีวัน
+จุลชีวิน
+จุลทรรศน์
+จุลภาค
+จุลวงศ์
+จุลวรรค
+จุลศักราช
+จุลสาร
+จุลินทรีย์
+จุฬา
+จุฬามณี
+จุฬาราชมนตรี
+จุฬาลักษณ์
+จุฬาลัมพา
+จู
+จู่
+จู่ๆ
+จู้
+จู๋
+จูง
+จูงจมูก
+จูงใจ
+จูงนางเข้าห้อง
+จูงนางลีลา
+จูงมือ
+จู้จี้
+จู๋จี๋
+จู่โจม
+จู๊ด
+จูบ
+จูบฝุ่น
+จูรณ
+จู่ลู่
+เจ
+เจ๊ก
+เจ๊กตื่นไฟ
+เจ่ง
+เจ้ง
+เจ๊ง
+เจ็ด
+เจ็ดชั่วโคตร
+เจ็ดตะคลี
+เจดีย-
+เจดีย์
+เจดียถาน
+เจดีย์ทิศ
+เจดียสถาน
+เจต
+เจต-
+เจตคติ
+เจตจำนง
+เจตนา
+เจตนารมณ์
+เจตพังคี
+เจตภูต
+เจตมูลเพลิง
+เจตมูลเพลิงฝรั่ง
+เจตสิก
+เจติย-
+เจโตวิมุติ
+เจน
+เจนจบ
+เจนจัด
+เจนใจ
+เจ็บ
+เจ็บไข้
+เจ็บแค้น
+เจ็บใจ
+เจ็บช้ำน้ำใจ
+เจ็บท้อง
+เจ็บปวด
+เจ็บป่วย
+เจ็บร้อน
+เจ็บแสบ
+เจรจา
+เจริญ
+เจริญตาเจริญใจ
+เจริญพร
+เจริญพันธุ์
+เจริญรอย
+เจริญสมณธรรม
+เจริญอาหาร
+เจริด
+เจรียง
+เจลียง
+เจว็ด
+เจษฎา
+เจ๊สัว
+เจอ
+เจ่อ
+เจ๋อ
+เจ๋อเจ๊อะ
+เจอร์เมเนียม
+เจอะ
+เจา
+เจ่า
+เจ้า
+เจ๊า
+เจ้ากรม
+เจ้ากรรม
+เจ้ากรรมนายเวร
+เจ้ากระทรวง
+เจ้ากี้เจ้าการ
+เจ้ากู
+เจ้าขรัว
+เจ้าของ
+เจ้าขา
+เจ้าข้า
+เจ้าข้าวแดงแกงร้อน
+เจ้าขุนมุลนาย
+เจ้าขุนมูลนาย
+เจ้าไข้
+เจ้าคณะ
+เจ้าครอก
+เจ้าคารม
+เจ้าคุณ
+เจ้าคุณจอม
+เจ้าแง่เจ้างอน
+เจ้าแง่แสนงอน
+เจ้าจอม
+เจ้าจอมมารดา
+เจ้าจำนวน
+เจ้าจำนำ
+เจ่าจุก
+เจ้าชีวิต
+เจ้าชู้
+เจ้าเซ็น
+เจ้าเซ็นเต้นต้ำบุด
+เจ้าตัว
+เจ้าถ้อยหมอความ
+เจ้าท่า
+เจ้าที่
+เจ้าทุกข์
+เจ้าไทย
+เจ้านาย
+เจ้าเนื้อ
+เจ้าบ้าน
+เจ้าบ่าว
+เจ้าบุญนายคุณ
+เจ้าเบี้ย
+เจ้าประคุณ
+เจ้าประคู้น
+เจ้าปู่
+เจ้าพนักงาน
+เจ้าพนักงานบังคับคดี
+เจ้าพนักงานพิทักษ์ทรัพย์
+เจ้าพนักงานภูษามาลา
+เจ้าพนักงานสนมพลเรือน
+เจ้าพระเดชนายพระคุณ
+เจ้าพระยา
+เจ้าพ่อ
+เจ้าพายุ
+เจ้าฟ้า
+เจ้าฟ้าหญิงสิรินธร
+เจ้าภาพ
+เจ้าภาษี
+เจ้ามรดก
+เจ้ามือ
+เจ้าแม่
+เจ้าไม่มีศาล สมภารไม่มีวัด
+เจ้ายศ
+เจ้าเรือน
+เจ้าเล่ห์
+เจ้าสัว
+เจ้าสาว
+เจ้าสำนวน
+เจ้าสำบัดสำนวน
+เจ้าสำราญ
+เจ้าหน้า
+เจ้าหน้าเจ้าตา
+เจ้าหน้าที่
+เจ้าหนี้
+เจ้าหลวง
+เจ้าหล่อน
+เจ้าหัว
+เจ้าอธิการ
+เจ้าอารมณ์
+เจ้าอาวาส
+เจาะ
+เจาะจง
+เจาะจมูก
+เจิ่ง
+เจิด
+เจิดจ้า
+เจิ่น
+เจิม
+เจีย
+เจียง
+เจียด
+เจียดยา
+เจียน
+เจี๋ยน
+เจี๊ยบ
+เจียม
+เจี๋ยมเจี้ยม
+เจียมสังขาร
+เจียร
+เจียระไน
+เจียระบาด
+เจียว
+เจี๊ยวจ๊าว
+เจือ
+เจือจาง
+เจือจาน
+เจื่อน
+เจือปน
+เจื้อย
+เจื้อยแจ้ว
+เจือสม
+แจ
+แจ้
+แจ๋
+แจก
+แจกจ่าย
+แจกแจง
+แจกไพ่
+แจกัน
+แจง
+แจ่ง
+แจ้ง
+แจ้งความ
+แจงรูป
+แจงลอน
+แจงสี่เบี้ย
+แจจน
+แจจัน
+แจ๊ด
+แจดแจ้
+แจ๊ดแจ๋
+แจตร
+แจ้น
+แจบ
+แจ่ม
+แจ่มแจ้ง
+แจ่มใส
+แจร
+แจรก
+แจรง
+แจว
+แจ่ว
+แจ้ว
+แจ้วๆ
+แจ๋ว
+แจ๋วแหวว
+แจะ
+โจก
+โจ๊ก
+โจง
+โจงกระเบน
+โจงกระเบนตีเหล็ก
+โจ่งครึ่ม
+โจ๋งครึ่ม
+โจ่งครุ่ม
+โจงโคร่ง
+โจ๋งเจ๋ง
+โจ่งแจ้ง
+โจท
+โจทก์
+โจทเจ้า
+โจทนา
+โจทย์
+โจน
+โจนร่ม
+โจม
+โจมตี
+โจมทัพ
+โจร
+โจร-
+โจรกรรม
+โจรสลัด
+โจล
+โจษ
+โจษจน
+โจษจัน
+โจษแจ
+ใจ
+ใจกลาง
+ใจกว้าง
+ใจขุ่น
+ใจแข็ง
+ใจความ
+ใจคอ
+ใจแคบ
+ใจง่าย
+ใจจดใจจ่อ
+ใจจืด
+ใจเฉื่อย
+ใจชื้น
+ใจดำ
+ใจดี
+ใจเด็ด
+ใจเดียว
+ใจเดียวกัน
+ใจต่ำ
+ใจเติบ
+ใจแตก
+ใจโต
+ใจถึง
+ใจน้อย
+ใจบาน
+ใจบุญ
+ใจเบา
+ใจปลาซิว
+ใจป้ำ
+ใจแป้ว
+ใจฝ่อ
+ใจเพชร
+ใจมา
+ใจมือ
+ใจไม่ดี
+ใจไม้ไส้ระกำ
+ใจยักษ์
+ใจเย็น
+ใจร้อน
+ใจร้าย
+ใจเร็ว
+ใจลอย
+ใจสูง
+ใจเสาะ
+ใจเสีย
+ใจหนักแน่น
+ใจหาย
+ใจเหี่ยวแห้ง
+ใจใหญ่ใจโต
+ใจอ่อน
+ไจ
+ไจ้
+ไจ้ๆ
+ไจร
+ฉ
+ฉก
+ฉกจวัก
+ฉกฉวย
+ฉกชิง
+ฉกรรจ์
+ฉกรรจ์ลำเครื่อง
+ฉกษัตริย์
+ฉกาจ
+ฉกาจฉกรรจ์
+ฉกามาพจร
+ฉกามาวจร
+ฉง
+ฉงน
+ฉงาย
+ฉทวาร
+ฉทานศาลา
+ฉทึง
+ฉนวน
+ฉนัง
+ฉนาก
+ฉนำ
+ฉบบ
+ฉบัง
+ฉบัด
+ฉบับ
+ฉบำ
+ฉพีสติม-
+ฉม
+ฉมบ
+ฉมวก
+ฉมวย
+ฉม่อง
+ฉมัง
+ฉมัน
+ฉมา
+ฉมำ
+ฉล
+ฉลวย
+ฉลวยฉลาด
+ฉลอง
+ฉลองได
+ฉลองพระกรน้อย
+ฉลองพระเนตร
+ฉลองพระบาท
+ฉลองพระศอ
+ฉลองพระหัตถ์
+ฉลองพระองค์
+ฉลององค์
+ฉลอม
+ฉลอมท้ายญวน
+ฉลัก
+ฉลับ
+ฉลาก
+ฉลากบาง
+ฉลาง
+ฉลาด
+ฉลาม
+ฉลามเสือ
+ฉลาย
+ฉลิว
+ฉลีก
+ฉลุ
+ฉลุกฉลวย
+ฉลุลาย
+ฉลู
+ฉวย
+ฉวยฉาบ
+ฉวะ
+ฉวัดเฉวียน
+ฉวาง
+ฉวี
+ฉศก
+ฉ้อ
+ฉอก
+ฉ้อโกง
+ฉ่อง
+ฉ้อฉล
+ฉอดๆ
+ฉ่อย
+ฉ้อราษฎร์บังหลวง
+ฉอเลาะ
+ฉะ
+ฉะกะ
+ฉะฉาด
+ฉะฉาน
+ฉะฉ่ำ
+ฉะฉี่
+ฉะเฉื่อย
+ฉะต้า
+ฉะนั้น
+ฉะนี้
+ฉะหน้าโรง
+ฉะอ้อน
+ฉักกะ
+ฉัฐ
+ฉัด
+ฉัตร
+ฉัตร-
+ฉัตรบรรณ
+ฉัตรมงคล
+ฉัตรสามชั้น
+ฉัททันต์
+ฉัน
+ฉันใด
+ฉันท-
+ฉันท์
+ฉันทลักษณ์
+ฉันทวิลาส
+ฉันทศาสตร์
+ฉันทะ
+ฉันทา
+ฉันทาคติ
+ฉันทานุมัติ
+ฉันนั้น
+ฉันวุติ
+ฉับ
+ฉับๆ
+ฉับพลัน
+ฉับไว
+ฉัพพรรณรังสี
+ฉัยยา
+ฉ่า
+ฉาก
+ฉากญี่ปุ่น
+ฉากตั้ง
+ฉากทิ้ง
+ฉากน้อย
+ฉากบังเพลิง
+ฉากใหญ่
+ฉาง
+ฉ่าง
+ฉ่าฉาว
+ฉาด
+ฉาดฉาน
+ฉาตกภัย
+ฉาทน
+ฉาน
+ฉาบ
+ฉาบฉวย
+ฉาป
+ฉาย
+ฉายเฉิด
+ฉายา
+ฉายาลักษณ์
+ฉาว
+ฉาวโฉ่
+ฉ่ำ
+ฉำฉา
+ฉำเฉง
+ฉำแฉะ
+ฉิ่ง
+ฉิ่งตรัง
+ฉิน
+ฉินท-
+ฉินท์
+ฉินทฤกษ์
+ฉิบ
+ฉิบหาย
+ฉิมพลี
+ฉิว
+ฉี่
+ฉีก
+ฉีกหน้า
+ฉีด
+ฉีดยา
+ฉุ
+ฉุก
+ฉุกคิด
+ฉุกใจ
+ฉุกเฉิน
+ฉุกละหุก
+ฉุด
+ฉุน
+ฉุนเฉียว
+ฉุป
+ฉุป-
+ฉุปศาสตร์
+ฉุย
+ฉุยฉาย
+ฉุยฉายเข้าวัง
+ฉู่
+ฉู่ฉี่
+ฉูด
+ฉูดฉาด
+เฉ
+เฉก
+เฉโก
+เฉ่ง
+เฉไฉ
+เฉด
+เฉท
+เฉนียน
+เฉพาะ
+เฉพาะกาล
+เฉพาะกิจ
+เฉพาะตัว
+เฉพาะพระพักตร์
+เฉพาะหน้า
+เฉย
+เฉยๆ
+เฉยเมย
+เฉลย
+เฉลว
+เฉลา
+เฉลิม
+เฉลิมพระชนมพรรษา
+เฉลี่ย
+เฉลียง
+เฉลี่ยง
+เฉลียบ
+เฉลียว
+เฉลียวใจ
+เฉลียวฉลาด
+เฉวียง
+เฉวียงบ่า
+เฉวียน
+เฉอะแฉะ
+เฉา
+เฉาก๊วย
+เฉาโฉด
+เฉาฮื้อ
+เฉาะ
+เฉาะๆ
+เฉาะปล่อง
+เฉิด
+เฉิดฉัน
+เฉิดฉาย
+เฉิดฉิน
+เฉิบ
+เฉิบๆ
+เฉียง
+เฉียงพร้าดำ
+เฉียงพร้านางแอ
+เฉียงพร้ามอญ
+เฉียด
+เฉียบ
+เฉียบขาด
+เฉียบพลัน
+เฉียบแหลม
+เฉียว
+เฉี่ยว
+เฉียวฉุน
+เฉือน
+เฉื่อย
+เฉื่อยๆ
+เฉื่อยชา
+แฉ
+แฉ่
+แฉก
+แฉกๆ
+แฉง
+แฉ่ง
+แฉโพย
+แฉลบ
+แฉล้ม
+แฉละ
+แฉว
+แฉะ
+แฉะแบะ
+โฉ
+โฉ่
+โฉเก
+โฉ่งฉ่าง
+โฉงเฉง
+โฉ่ฉาว
+โฉด
+โฉดเฉา
+โฉนด
+โฉบ
+โฉเบ๊
+โฉม
+โฉมงาม
+โฉมฉาย
+โฉมเฉลา
+โฉมตรู
+โฉมยง
+โฉมศรี
+โฉมหน้า
+โฉลก
+ไฉน
+ไฉไล
+ช
+ชก
+ชกมวย
+ชกา
+ชค-
+ชคดี
+ชคัตตรัย
+ชง
+ชงคา
+ชงโค
+ชงฆ-
+ชงฆ์
+ชงฆา
+ชงโลง
+ชฎา
+ชฎากลีบ
+ชฎาเดินหน
+ชฎาธาร
+ชฎาแปลง
+ชฎาพอก
+ชฎามหากฐิน
+ชฎามังษี
+ชฎามังสี
+ชฎิล
+ชด
+ชดช้อย
+ชดเชย
+ชดใช้
+ชทึง
+ชน
+ชน-
+ชนก
+ชนก-
+ชนกกรรม
+ชนช้าง
+ชนนี
+ชนบท
+ชนม-
+ชนม์
+ชนมพรรษา
+ชนมาพิธี
+ชนมายุพิธี
+ชนวน
+ชนหมู่น้อย
+ชนะ
+ชนัก
+ชนักติดหลัง
+ชนา
+ชนาง
+ชนิด
+ชนินทร์
+ชเนตตี
+ชบา
+ชบาหนู
+ชปโยค
+ชม
+ชมชัว
+ชมชาญ
+ชมเชย
+ชมไช
+ชมดชม้อย
+ชมนาด
+ชมบ
+ชมเปาะ
+ชมพู
+ชมพู่
+ชมพูทวีป
+ชมพูนท
+ชมพูนุท
+ชมพูพาดบ่า
+ชมรม
+ชมเลาะ
+ชมสวนสวรรค์
+ชม้อย
+ชมัน
+ชมา
+ชม้าย
+ชไม
+ชย
+ชย-
+ชยา
+ชโย
+ชร
+ชรทึง
+ชรโมล
+ชรไม
+ชรราง
+ชรริน
+ชรเรือด
+ชรแรง
+ชรแร่ง
+ชรโลง
+ชรอกชรัง
+ชรออบ
+ชรอัด
+ชรอ่ำ
+ชรอื้อ
+ชรอุ่ม
+ชระ
+ชระงม
+ชระง่อน
+ชระงำ
+ชระดัด
+ชระดื่น
+ชระเดียด
+ชระเดียดชระดัด
+ชระบอบ
+ชระบาบ
+ชระมด
+ชระมัว
+ชระมื่น
+ชระมุกชระมอม
+ชระมุ่น
+ชระเมียง
+ชระเมียน
+ชระลอ
+ชระลอง
+ชระล่อง
+ชระลั่ง
+ชระลัด
+ชระล้ำ
+ชระลุ
+ชระแลง
+ชระอับ
+ชระอาบ
+ชระเอม
+ชรัด
+ชรัว
+ชรา
+ชรากากี
+ชราธรรม
+ชราบ
+ชราบชรับ
+ชราภาพ
+ชรายุ
+ชริน
+ชรุก
+ชรูบ
+ชล
+ชล-
+ชลจร
+ชลจัณฑ์
+ชลชาติ
+ชลธาร
+ชลธารก
+ชลธิศ
+ชลธี
+ชลนัยน์
+ชลนา
+ชลเนตร
+ชลประทาน
+ชลมารค
+ชลสถาน
+ชลัมพุ
+ชลาธาร
+ชลาพุช
+ชลามพุช
+ชลาลัย
+ชลาศัย
+ชลี
+ชลูกา
+ชเล
+ชโลง
+ชโลทร
+ชโลม
+ชว-
+ช่วง
+ช่วงชัย
+ช่วงชิง
+ช่วงโชติ
+ช่วงใช้
+ช่วงทรัพย์
+ช่วงบาท
+ช่วงเมือง
+ช่วงสิทธิ์
+ชวด
+ชวน
+ชวนชม
+ชวนหัว
+ชวย
+ช่วย
+ช่วยเหลือ
+ชวร
+ชวลิต
+ชวัก
+ชวา
+ชวาล
+ชวาลา
+ช่อ
+ชอก
+ช็อกโกเลต
+ช็อกโกแลต
+ชอกช้ำ
+ชอง
+ช่อง
+ช้อง
+ช่องกุด
+ช่องเขา
+ช่องแคบ
+ช่องดาล
+ช่องตีนกา
+ช้องนาง
+ช้องนางคลี่
+ช่องไฟ
+ช้องแมว
+ชองระอา
+ชอน
+ช่อน
+ช้อน
+ช้อนนาง
+ช้อนหอย
+ชอบ
+ชอบกล
+ชอบใจ
+ชอบธรรม
+ชอบพอ
+ชอบมาพากล
+ช่อฟ้า
+ชอม
+ช่อม่วง
+ช่อย
+ช้อย
+ช้อยชด
+ช้อยช่างรำ
+ช้อยนางรำ
+ชอล์ก
+ช่ออินทนิล
+ชอ่ำ
+ชอื้อ
+ชอุ่ม
+ชะ
+ชะคราม
+ชะงอก
+ชะง่อน
+ชะงัก
+ชะงัด
+ชะงาบ
+ชะง้ำ
+ชะงุ้ม
+ชะเง้อ
+ชะเงื้อม
+ชะแง้
+ชะโงก
+ชะโงกผา
+ชะฉ่า
+ชะช่อง
+ชะชะ
+ชะช้า
+ชะชิด
+ชะดีชะร้าย
+ชะโด
+ชะตา
+ชะต้า
+ชะนี
+ชะนีร่ายไม้
+ชะนุง
+ชะเนาะ
+ชะเนียง
+ชะพลู
+ชะเพลิง
+ชะมด
+ชะมดเชียง
+ชะมดต้น
+ชะมบ
+ชะมวง
+ชะมัง
+ชะมัด
+ชะแม่
+ชะรอย
+ชะลอ
+ชะลอม
+ชะล่า
+ชะลาน
+ชะลิน
+ชะลูด
+ชะเลง
+ชะเลย
+ชะแล็ก
+ชะแลง
+ชะวัง
+ชะวาก
+ชะวากทะเล
+ชะวาด
+ชะวุ้ง
+ชะเวิกชะวาก
+ชะแวง
+ชะอม
+ชะอ้อน
+ชะเอม
+ชะโอน
+ชัก
+ชักกระบี่สี่ท่า
+ชักคราม
+ชักโครก
+ชักเงา
+ชักจูง
+ชักชวน
+ชักช้า
+ชักซอสามสาย
+ชักซุงตามขวาง
+ชักตะพานแหงนเถ่อ
+ชักนำ
+ชักน้ำเข้าลึก ชักศึกเข้าบ้าน
+ชักเนื้อ
+ชักใบให้เรือเสีย
+ชักแป้งผัดหน้า
+ชักพระ
+ชักแม่น้ำทั้งห้า
+ชักยันต์
+ชักเย่อ
+ชักใย
+ชักรูป
+ชักศพ
+ชักสองแถว
+ชักสื่อ
+ชักหน้า
+ชักหน้าไม่ถึงหลัง
+ชัค-
+ชัง
+ชั่ง
+ชังคา
+ชังฆ-
+ชังฆวิหาร
+ชั่งใจ
+ชั่งหลวง
+ชัชวาล
+ชัฏ
+ชัด
+ชัดเจน
+ชัดช้า
+ชัน
+ชั้น
+ชันกาด
+ชันคอ
+ชั้นฉาย
+ชั้นชั่ว
+ชันชี
+ชั้นเชิง
+ชันตาฆร
+ชันตุ
+ชันนะตุ
+ชันนุ
+ชันนุกะ
+ชันพอน
+ชันโรง
+ชันษา
+ชันสน
+ชันสูตร
+ชันสูตรพลิกศพ
+ชัปน
+ชัพ
+ชัมพูนท
+ชัย
+ชัย-
+ชัยบาน
+ชัยพฤกษ์
+ชัยภูมิ
+ชัยเภรี
+ชัยศรี
+ชัลลุกา
+ชั่ว
+ชั้ว
+ชั่วคน
+ชั่วคราว
+ชัวชม
+ชั่วช้า
+ชั่วช่างชี ดีช่างสงฆ์
+ชั่วแต่ว่า
+ชั่วนาตาปี
+ชั่วโมง
+ชั่วแล่น
+ชา
+ช้า
+ช้าก่อน
+ชาคร
+ชาคริต
+ชาคริยานุโยค
+ช่าง
+ช้าง
+ช่างกระไร
+ช่างเครื่อง
+ช้างงวง
+ช้างชำนิ
+ช้างชูงวง
+ช้างต่อ
+ช้างตายทั้งตัวเอาใบบัวมาปิด
+ช่างทอง
+ช้างทำลายโรง
+ช้างน้อย
+ช้างน้าว
+ช้างน้ำ
+ช้างประสานงา
+ช่างปะไร
+ช้างผะชด
+ช้างเผือก
+ช้างพลาย
+ช้างพัง
+ช่างฟิต
+ช่างไฟ
+ช้างร้อง
+ช้างสะบัดหญ้า
+ช้างเหยียบ
+ช่างเหล็ก
+ช้างใหญ่
+ช้าช่อน
+ชาญ
+ชาด
+ชาดก
+ชาดหรคุณ
+ช้าๆ ได้พร้าสองเล่มงาม
+ชาต-
+ชาตบุษย์
+ชาตรี
+ชาตรูป
+ชาตสระ
+ชาตะ
+ชาตา
+ชาติ
+ชาติ-
+ชาติธรรม
+ชาตินิยม
+ชาติพันธุ์
+ชาติพันธุ์วรรณนา
+ชาติพันธุ์วิทยา
+ชาติภูมิ
+ชาติมาลา
+ชาติรส
+ชาน
+ชานชาลา
+ชานวาทิก
+ช้านางนอน
+ช้านาน
+ชานุ
+ชานุกะ
+ชานุมณฑล
+ช้าปี่
+ชาปีไหน
+ช้าเป็นการ นานเป็นคุณ
+ช้าแป้น
+ช้าพลู
+ชาม
+ชามพูนท
+ชามาดร
+ชามาดา
+ชามาตุ
+ชาย
+ชายกระเบน
+ชายกระเบนเหน็บ
+ชายคา
+ชายแครง
+ชายชาตรี
+ชายตา
+ชายทะเล
+ชายธง
+ชายผ้าสีดา
+ชายฝั่ง
+ชายเฟือย
+ชายสามโบสถ์
+ชายไหว
+ชายา
+ชายาชีพ
+ชายานุชีพ
+ชาเยนทร์
+ชาเยศ
+ชาร
+ชารี
+ชาล
+ชาล-
+ชาลกรรม
+ชาลา
+ชาลินี
+ช้าลูกหลวง
+ช้าเลือด
+ชาว
+ชาวนอก
+ชาวน้ำ
+ชาวม่าน
+ชาวเล
+ชาววัง
+ชาวี
+ช้าหมอง
+ชำ
+ช่ำ
+ช้ำ
+ชำงัด
+ชำงาย
+ชำงือ
+ช่ำใจ
+ช้ำใจ
+ช้ำชอก
+ช่ำชอง
+ช่ำช่า
+ชำนน
+ชำนรร
+ชำนะ
+ชำนัญ
+ชำนัญพิเศษ
+ชำนัน
+ชำนาญ
+ชำนาญเกลากลอน
+ชำนิ
+ชำนิชำนาญ
+ชำเนียน
+ชำเนียร
+ช่ำปอด
+ชำมะนาด
+ชำมะเลียง
+ชำร่วย
+ชำระ
+ช้ำรั่ว
+ชำรุด
+ชำเรา
+ชำเราะ
+ชำแรก
+ชำแระ
+ชำลา
+ชำเลือง
+ช้ำเลือดช้ำหนอง
+ชำแหละ
+ชิ
+ชิง
+ชิ่ง
+ชิงคม
+ชิงช่วง
+ชิงชัง
+ชิงชัน
+ชิงชัย
+ชิงช้า
+ชิงช้าชาลี
+ชิงช้าสวรรค์
+ชิงชี่
+ชิงเชิง
+ชิงดวง
+ชิงดีชิงเด่น
+ชิงทรัพย์
+ชิงเปรต
+ชิงพลบ
+ชิงสุกก่อนห่าม
+ชิงไหวชิงพริบ
+ชิงฮื้อ
+ชิชะ
+ชิชิ
+ชิณณะ
+ชิด
+ชิเดนทรีย์
+ชิต
+ชิต-
+ชิตินทรีย์
+ชิน
+ชิ่น
+ชิ้น
+ชินโต
+ชินบุตร
+ชิ้นเอก
+ชิโนรส
+ชิม
+ชิมแปนซี
+ชิมลาง
+ชิยา
+ชิรณ-
+ชิรณะ
+ชิรณัคคิ
+ชิระ
+ชิวหา
+ชิวหาสดมภ์
+ชิสา
+ชี
+ชี่
+ชี้
+ชี้ขาด
+ชี้แจง
+ชี้ช่อง
+ชีต้น
+ชี้ตัว
+ชี้นกบนปลายไม้
+ชี้นกเป็นนก ชี้ไม้เป็นไม้
+ชี้นำ
+ชี้นิ้ว
+ชี้แนะ
+ชีปะขาว
+ชีเปลือย
+ชีผะขาว
+ชีผ้าขาว
+ชีฝรั่ง
+ชีพ
+ชีพ-
+ชีพจร
+ชีพิต
+ชีพิตักษัย
+ชีพุก
+ชีฟอง
+ชี้ฟ้า
+ชีมืด
+ชีรณ-
+ชีรณัคคิ
+ชีระ
+ชีล้อม
+ชีลา
+ชีลาว
+ชีว-
+ชีวเคมี
+ชีวงคต
+ชีวประวัติ
+ชีวโลก
+ชีววิทยา
+ชีวะ
+ชีวัน
+ชีวันตราย
+ชีวา
+ชีวาตม์
+ชีวาลัย
+ชีวิต
+ชีวิตชีวา
+ชีวิตักษัย
+ชีวิตินทรีย์
+ชีวิน
+ชีวี
+ชี้สองสถาน
+ชืด
+ชื่น
+ชื้น
+ชื่นชม
+ชื่นชมยินดี
+ชื่นบาน
+ชื่นมื่น
+ชื่อ
+ชื้อ
+ชื่อตัว
+ชื่อย่อ
+ชื่อเล่น
+ชื่อว่า
+ชื่อสกุล
+ชื่อเสียง
+ชุ
+ชุก
+ชุกชี
+ชุกชุม
+ชุ่ง
+ชุ้ง
+ชุณห-
+ชุณหปักษ์
+ชุด
+ชุติ
+ชุติมา
+ชุน
+ชุบ
+ชุบชีวิต
+ชุบชู
+ชุบตัว
+ชุบมือเปิบ
+ชุบย้อม
+ชุบเลี้ยง
+ชุบสรง
+ชุบอาบ
+ชุม
+ชุ่ม
+ชุ่มใจ
+ชุมชน
+ชุ่มชื่น
+ชุ่มชื้น
+ชุมทางรถไฟ
+ชุมนุม
+ชุมนุมชน
+ชุมพร
+ชุมพา
+ชุมเพ็ด
+ชุมแพรก
+ชุมรุม
+ชุมสาย
+ชุมสายโทรศัพท์
+ชุมแสง
+ชุมเห็ด
+ชุ่ย
+ชุ่ยๆ
+ชุลมุน
+ชุลี
+ชุษณ-
+ชุษณปักษ์
+ชุษณะ
+ชู
+ชู้
+ชูกลิ่น
+ชูคอ
+ชูใจ
+ชูชีพ
+ชูรส
+ชูโรง
+ชู้สาว
+ชูหน้าชูตา
+ชู้เหนือขันหมาก
+ชู้เหนือผัว
+ชู้เหนือผี
+เช็ค
+เช็คขีดคร่อม
+เช็คไปรษณีย์
+เช้ง
+เชงเลง
+เช้งวับ
+เช็ด
+เช็ดน้ำ
+เช็ดหน้า
+เช็ดหม้อ
+เชน
+เช่น
+เชย
+เชยชม
+เชรา
+เชราะ
+เชริด
+เชลง
+เชลย
+เชลยศักดิ์
+เชลยศึก
+เชลแล็ก
+เชลียง
+เชวง
+เชษฐ-
+เชษฐะ
+เชษฐา
+เชอ
+เช่า
+เช้า
+เช่าช่วง
+เช่าซื้อ
+เช้าตรู่
+เช่าถือสวน
+เช่าทรัพย์
+เช่าพระ
+เช้ามืด
+เชาว์
+เชาวน์
+เชิง
+เชิงกรวย
+เชิงกราน
+เชิงกล
+เชิงกลอน
+เชิงชั้น
+เชิงชาย
+เชิงซ้อน
+เชิงเดิน
+เชิงเดียว
+เชิงเดี่ยว
+เชิงตะกอน
+เชิงทรง
+เชิงเทิน
+เชิงมุม
+เชิงเวียน
+เชิงอรรถ
+เชิญ
+เชิด
+เชิดจีน
+เชิดฉิ่ง
+เชิดชู
+เชิดหนัง
+เชิดหน้าชูตา
+เชิดหุ่น
+เชิ้ต
+เชีย
+เชี้ย
+เชียง
+เชี่ยน
+เชี่ยนหมาก
+เชียบ
+เชี่ยม
+เชียร
+เชียร์
+เชียรณ์
+เชียว
+เชี่ยว
+เชี่ยวชาญ
+เชื่อ
+เชื้อ
+เชือก
+เชือกเขา
+เชือกบาศ
+เชื่อง
+เชื่องช้า
+เชื่อใจ
+เชื้อชาติ
+เชื้อเชิญ
+เชือด
+เชื่อถือ
+เชือน
+เชือนแช
+เชื้อเพลิง
+เชื่อฟัง
+เชื้อไฟ
+เชื่อม
+เชื่อมือ
+เชื้อไม่ทิ้งแถว
+เชื้อรา
+เชื้อโรค
+เชื่อวัน
+เชื้อสาย
+เชื้อหมัก
+แช
+แช่
+แช่ง
+แช่งชักหักกระดูก
+แช่งน้ำ
+แชงมา
+แชบ๊วย
+แช่เบ้า
+แช่ม
+แช่มช้อย
+แช่มชื่น
+แช่เย็น
+แชร์
+แชรง
+แชล่ม
+แช่อิ่ม
+แชะ
+โชก
+โชกๆ
+โชกโชน
+โชค
+โชงโลง
+โชดก
+โชดึก
+โชต
+โชตก
+โชติ
+โชติ-
+โชติก-
+โชติช่วง
+โชติรส
+โชน
+โชมโรม
+โชย
+โชยงการ
+โชยชาย
+โชยติส
+โชรม
+โชว์
+โชโหว
+ใช่
+ใช้
+ใช้กรรม
+ใช้ได้
+ใช้เนื้อ
+ใช้บน
+ใช้ใบ
+ใช้เรือ
+ใช้สอย
+ไช
+ไชนะ
+ไชย
+ไชย-
+ไชยเภท
+ไชโย
+ซ
+ซก
+ซ่ก
+ซงดำ
+ซ่งฮื้อ
+ซง้า
+ซด
+ซน
+ซ่น
+ซ้น
+ซบ
+ซบเซา
+ซม
+ซมซาน
+ซรอกซรัง
+ซวด
+ซวดเซ
+ซวดทรง
+ซวน
+ซวนเซ
+ซวย
+ซอ
+ซอก
+ซอกซอน
+ซอกซัง
+ซอกแซก
+ซอง
+ซ่อง
+ซ่องๆ
+ซ้อง
+ซ่องแซ่ง
+ซองพลู
+ซองมือ
+ซองแมว
+ซ้องแมว
+ซ่องสุม
+ซ่องเสพ
+ซองหาง
+ซอแซ
+ซ้อแซ้
+ซอน
+ซ่อน
+ซ้อน
+ซ้อนกล
+ซ่อนกลิ่น
+ซ่อนเงื่อน
+ซ้อนซับ
+ซ่อนทราย
+ซ่อนรูป
+ซ่อนหา
+ซอม
+ซ่อม
+ซ้อม
+ซ้อมค้าง
+ซอมซ่อ
+ซ้อมซัก
+ซ่อมแซม
+ซ่อมแปลง
+ซ้อมพยาน
+ซ้อมพวน
+ซ้อมใหญ่
+ซอย
+ซอยผม
+ซอส
+ซะซร้าว
+ซะซ่อง
+ซะซอเซีย
+ซะซิกซะแซ
+ซะซิบ
+ซะเซาะ
+ซะเซียบ
+ซัก
+ซักซ้อม
+ซักไซ้
+ซักฟอก
+ซักส้าว
+ซักแห้ง
+ซัง
+ซั้ง
+ซังกะตาย
+ซังแซว
+ซังตาย
+ซัด
+ซัดข้าวสาร
+ซัดเซ
+ซัดทอด
+ซัดน้ำ
+ซัดยา
+ซั้น
+ซับ
+ซับขนุน
+ซับซ้อน
+ซับซาบ
+ซับซี่
+ซับใน
+ซับพระพักตร์
+ซับมัน
+ซัม
+ซัลฟา
+ซั้ว
+ซา
+ซ่า
+ซาก
+ซากดึกดำบรรพ์
+ซากศพ
+ซาง
+ซ่าง
+ซาด
+ซาน
+ซ่าน
+ซ่านเซ็น
+ซาบซ่าน
+ซาบซึ้ง
+ซ่าโบะ
+ซาแมเรียม
+ซ้าย
+ซาลาเปา
+ซาว
+ซาวน้ำ
+ซาวเสียง
+ซ่าหริ่ม
+ซ้ำ
+ซ้ำซ้อน
+ซ้ำซาก
+ซ้ำเติม
+ซ้ำร้าย
+ซ้ำสาม
+ซิ
+ซิก
+ซิกๆ
+ซิกซี้
+ซิกแซ็ก
+ซิการ์
+ซิงโคนา
+ซิ่น
+ซินนามิก
+ซินแส
+ซิบ
+ซิบๆ
+ซิบซับ
+ซิป
+ซิฟิลิส
+ซิลิคอน
+ซิว
+ซี
+ซี่
+ซีก
+ซี่โครง
+ซี้ซอน
+ซีเซียม
+ซีด
+ซีดเซียว
+ซีนอน
+ซีป่าย
+ซีเมนต์
+ซีเรียม
+ซีลีเนียม
+ซึก
+ซึง
+ซึ่ง
+ซึ้ง
+ซึ่งหน้า
+ซึม
+ซึมกะทือ
+ซึมซาบ
+ซึมทราบ
+ซื่อ
+ซื่อๆ
+ซื้อ
+ซื้อขาย
+ซื้อควายหน้านา ซื้อผ้าหน้าตรุษ
+ซื้องัวหน้านา ซื้อผ้าหน้าหนาว
+ซื่อตรง
+ซื้อรำคาญ
+ซื้อรู้
+ซื่อสัตย์
+ซื้อหน้า
+ซื่อเหมือนแมวนอนหวด
+ซุก
+ซุกซน
+ซุกซ่อน
+ซุกซิก
+ซุง
+ซุน
+ซุบ
+ซุบซิบ
+ซุบซู่
+ซุป
+ซุ่ม
+ซุ้ม
+ซุ้มกระต่าย
+ซุ่มคม
+ซุ่มซ่าม
+ซุมแซว
+ซุ่มเสียง
+ซุย
+ซู่
+ซู่ๆ
+ซู่กั้นรั้วไซมาน
+ซูโครส
+ซู่ซ่า
+ซูด
+ซู้ด
+ซูดซาด
+ซูบ
+เซ
+เซ็ก
+เซแคนต์
+เซ็ง
+เซ่ง
+เซ้ง
+เซ็งแซ่
+เซซัง
+เซต
+เซน
+เซ็น
+เซ่น
+เซนติกรัม
+เซนติเกรด
+เซนติเมตร
+เซนติลิตร
+เซ่นเหล้า
+เซปักตะกร้อ
+เซรา
+เซราะ
+เซรุ่ม
+เซลเซียส
+เซลล์
+เซลล์ทุติยภูมิ
+เซลล์ปฐมภูมิ
+เซลลูลอยด์
+เซลลูโลส
+เซ่อ
+เซ่อซ่า
+เซอร์โคเนียม
+เซอะ
+เซา
+เซ้าซี้
+เซาะ
+เซาะลาย
+เซิง
+เซิ้ง
+เซียน
+เซียบ
+เซียมซี
+เซียว
+เซี่ยว
+เซี่ยวกาง
+เซื่อง
+แซ
+แซ่
+แซ็กคาริน
+แซ็กคารินโซเดียม
+แซง
+แซงแซว
+แซ่ซ้อง
+แซด
+แซดๆ
+แซบ
+แซม
+แซยิด
+แซ่ว
+แซะ
+โซ
+โซ่
+โซก
+โซ่ง
+โซงโขดง
+โซซัดโซเซ
+โซเซ
+โซดา
+โซดาแผดเผา
+โซดาไฟ
+โซเดียม
+โซเดียมคาร์บอเนต
+โซเดียมซัลเฟต
+โซเดียมไซคลาเมต
+โซเดียมไฮโดรเจนกลูทาเมต
+โซเดียมไฮโดรเจนคาร์บอเนต
+โซเดียมไฮโดรเจนซัลเฟต
+โซม
+โซรม
+โซรมประทยด
+โซรมโรม
+โซรมศัสตราวุธ
+โซลา
+ไซ
+ไซ้
+ไซเกิล
+ไซโคลน
+ไซน์
+ไซยาไนด์
+ไซร้
+ไซเรน
+ไซโล
+ฌ
+ฌาน
+ฌาปน-
+ฌาปนกิจ
+ฌาปนสถาน
+เฌอ
+เฌอเอม
+ญ
+ญญ่าย
+ญวน
+ญัตติ
+ญาณ
+ญาณ-
+ญาณทัสนะ
+ญาณวิทยา
+ญาณศาสตร์
+ญาติ
+ญาติ-
+ญาติกา
+ญาติดีกัน
+ญาติเภท
+ญิบ
+ญี่
+ญี่ปุ่น
+เญยธรรม
+ไญยธรรม
+ฎ
+ฎีกา
+ฏ
+ฐ
+ฐกัด
+ฐากูร
+ฐาน
+ฐาน-
+ฐานกรณ์
+ฐานเขียง
+ฐานเชิงบาตร
+ฐานเท้าสิงห์
+ฐานบัทม์
+ฐานราก
+ฐานสิงห์
+ฐานะ
+ฐานันดร
+ฐานานุกรม
+ฐานานุรูป
+ฐานานุศักดิ์
+ฐานียะ
+ฐาปน-
+ฐาปนา
+ฐายี
+ฐิต
+ฐิติ
+ฑ
+ฑังส-
+ฑาก-
+ฑาหก
+ฑาหะ
+ฒ
+เฒ่า
+เฒ่าแก่
+เฒ่าหัวงู
+ณ
+ณรงค์
+เณร
+เณรหน้าไฟ
+เณรหางนาค
+ด
+ดก
+ดกดื่น
+ดง
+ด้ง
+ดงดาน
+ดงดิบ
+ดงดึก
+ดงวาย
+ด้น
+ด้นดั้น
+ดนโด่
+ดนตรี
+ด้นถอยหลัง
+ดนย
+ดนัย
+ดนุ
+ดนุช
+ดนู
+ดบัสวิน
+ดบัสวี
+ดม
+ดมไร
+ดร
+ดรงค์
+ดรณี
+ดรธาน
+ดรรชนี
+ดรรชนีหักเห
+ดราฟต์
+ดรุ
+ดรุณ
+ดรุณาณัติ
+ดรุณี
+ดฤถี
+ดล
+ดล-
+ดลใจ
+ดลบันดาล
+ดลภาค
+ดวง
+ด้วง
+ดวงแก้ว
+ดวงใจ
+ดวงเดือนประดับดาว
+ดวงตา
+ดวงสมร
+ด้วงโสน
+ดวจ
+ดวด
+ด่วน
+ด้วน
+ด้วมเดี้ยม
+ด้วย
+ด้วยว่า
+ดอก
+ดอกกระบอก
+ดอกกะทือ
+ดอกก้าน
+ดอกข้าวใหม่
+ดอกจอก
+ดอกจัน
+ดอกจันทน์
+ดอกจิก
+ดอกชนต้น
+ดอกดั้ว
+ดอกด้าย
+ดอกดิน
+ดอกถวายพระ
+ดอกทอง
+ดอกน้ำผึ้ง
+ดอกบัว
+ดอกบุก
+ดอกเบี้ย
+ดอกเบี้ยทบต้น
+ดอกพิกุลร่วง
+ดอกฟ้อน
+ดอกฟ้า
+ดอกมะขาม
+ดอกมะตาด
+ดอกไม้
+ดอกไม้จันทน์
+ดอกไม้จีน
+ดอกไม้จีบ
+ดอกไม้เจ้า
+ดอกไม้ตาด
+ดอกไม้ทะเล
+ดอกไม้เทียน
+ดอกไม้ไทร
+ดอกไม้น้ำ
+ดอกไม้พวง
+ดอกไม้พุ่ม
+ดอกไม้เพลิง
+ดอกไม้ไฟ
+ดอกไม้ร่วง
+ดอกไม้รุ่ง
+ดอกไม้ไหว
+ดอกรัก
+ดอกลำดวน
+ดอกลำโพง
+ดอกเล็บ
+ดอกสร้อย
+ดอกหมาก
+ดอกหิน
+ดอกอาว
+ดอกอาวแดง
+ดอง
+ด่องๆ
+ด้อง
+ด้องๆ
+ดองฉาย
+ดองดึง
+ดองยา
+ดองหาย
+ดอด
+ดอน
+ด่อน
+ดอม
+ด่อม
+ด้อม
+ดอย
+ด้อย
+ดอลลาร์
+ดะ
+ดะโต๊ะยุติธรรม
+ดะหมัง
+ดัก
+ดักคอ
+ดักดน
+ดักดาน
+ดักเดี้ย
+ดักแด้
+ดักฟัง
+ดักษก
+ดักษณ
+ดักษณี
+ดักษัน
+ดัง
+ดั่ง
+ดั้ง
+ดังจริง
+ดั้งเดิม
+ดังนั้น
+ดังนี้
+ดังรือ
+ดังฤๅ
+ดังหนึ่ง
+ดัชนี
+ดัด
+ดัดจริต
+ดัดดั้น
+ดัดตน
+ดัดปลัก
+ดัดแปลง
+ดัดสันดาน
+ดัตช์
+ดัน
+ดั้น
+ดันทุรัง
+ดั้นเมฆ
+ดันเหิม
+ดับ
+ดับขันธ์
+ดับเครื่อง
+ดับจิต
+ดับชีพ
+ดับลม
+ดัมพ์
+ดั้วเดี้ย
+ดัสกร
+ดัสกรี
+ดา
+ด่า
+ดาก
+ด่าง
+ด้าง
+ด่างทับทิม
+ด่างพร้อย
+ดาด
+ดาดๆ
+ดาดตะกั่ว
+ดาดฟ้า
+ดาดาษ
+ดาดำ
+ด่าทอ
+ดาน
+ด่าน
+ด้าน
+ด้านไม้
+ด้านหน้า
+ดาบ
+ดาบเงิน
+ดาบปลายปืน
+ดาบลาว
+ดาบส
+ดาบสองคม
+ดาม
+ด้าม
+ด้ามจิ้ว
+ดามพ-
+ดามพ์
+ดามพวรรณ
+ดามร
+ดาย
+ด้าย
+ด้ายซัง
+ด้ายดิบ
+ดาร
+ดารก
+ดารณี
+ดารดาษ
+ดารา
+ดาราบถ
+ดาราศาสตร์
+ดาล
+ดาลฉัตร
+ดาลเดือด
+ดาลโทสะ
+ดาลัด
+ดาลุ
+ดาลุช
+ดาว
+ด่าว
+ด้าว
+ดาวกระจาย
+ดาวเคราะห์
+ดาวดึงส์
+ดาวตก
+ดาวเทียม
+ดาวบส
+ดาวรุ่ง
+ดาวเรือง
+ดาวฤกษ์
+ดาวล้อมเดือน
+ดาวหาง
+ดาวเหนือ
+ดาษ
+ดาษดา
+ดาษดื่น
+ดาษเดียร
+ดาหงัน
+ดาฬ
+ดำ
+ด่ำ
+ด้ำ
+ดำกล
+ดำเกิง
+ดำแคง
+ดำดง
+ดำดิน
+ดำแดง
+ดำๆ แดงๆ
+ดำนา
+ดำนาณ
+ดำนาน
+ดำนู
+ดำเนิน
+ดำเนินคดี
+ดำเนียน
+ดำเนียร
+ดำบล
+ดำปืน
+ดำพอง
+ดำโพง
+ดำรง
+ดำรวจ
+ดำรัส
+ดำริ
+ดำรี
+ดำรู
+ดำไร
+ดำฤษณา
+ดำเลิง
+ดำแลง
+ดำหนัก
+ดำหนิ
+ดำหัว
+ดำอวด
+ดิก
+ดิกๆ
+ดิง
+ดิ่ง
+ดิ่งพสุธา
+ดิฉัน
+ดิฐ
+ดิตถ์
+ดิถี
+ดิน
+ดิ้น
+ดินกรด
+ดินขาว
+ดินเค็ม
+ดินดอนสามเหลี่ยม
+ดินดำ
+ดินแดง
+ดินนวล
+ดินประสิว
+ดินปืน
+ดินเปรี้ยว
+ดินพอกหางหมู
+ดิ้นรน
+ดินร่วน
+ดินระเบิด
+ดินส้ม
+ดินสอ
+ดินสอพอง
+ดินสำลี
+ดินหู
+ดินอีหรอบ
+ดิบ
+ดิบดี
+ดิรัจฉาน
+ดิลก
+ดิ่ว
+ดิ้ว
+ดิ้วเดี้ยว
+ดิษฐ์
+ดิสโพรเซียม
+ดี
+ดีๆ
+ดีเกลือ
+ดีเกลือฝรั่ง
+ดีงู
+ดีใจ
+ดีฉัน
+ดีฉาน
+ดีซ่าน
+ดีเซล
+ดีด
+ดีดขัน
+ดีดดิ้น
+ดีดฝ้าย
+ดีดพิมพ์
+ดีดลูกคิด
+ดีดลูกคิดรางแก้ว
+-ดีดัก
+ดีดีที
+ดีเดือด
+ดีแตก
+ดีนาคราช
+ดีเนื้อดีใจ
+ดีบัว
+ดีบุก
+ดีปลี
+ดีเปรสชัน
+ดีผา
+ดีฝ่อ
+ดีพร
+ดีไม่ดี
+ดียา
+ดีร้าย
+ดีละ
+ดีแล้ว
+ดีหมี
+ดีหลี
+ดีหิน
+ดีอกดีใจ
+ดึก
+ดึกดำบรรพ์
+ดึกดื่น
+ดึง
+ดึ่ง
+ดึงดัน
+ดึงดื้อ
+ดึงดูด
+ดึงสะ
+ดึ่ม
+ดื่น
+ดื่นดาษ
+ดื่นดึก
+ดื่ม
+ดื่มด่ำ
+ดือ
+ดื้อ
+ดื้อดัน
+ดื้อด้าน
+ดื้อดึง
+ดื้อแพ่ง
+ดื้อยา
+ดุ
+ดุก
+ดุกดิก
+ดุกทะเล
+ดุกลำพัน
+ดุ้ง
+ดุ้งดิ้ง
+ดุจ
+ดุจดัง
+ดุจหนึ่ง
+ดุด
+ดุดัน
+ดุเดือด
+ดุน
+ดุ้น
+ดุบๆ
+ดุม
+ดุ่ม
+ดุ่มๆ
+ดุ่ย
+ดุรค
+ดุรงค์
+ดุรงคี
+ดุร้าย
+ดุริย-
+ดุริยะ
+ดุริยางค-
+ดุริยางค์
+ดุริยางค์จำเรียง
+ดุริยางคศาสตร์
+ดุริยางคศิลป์
+ดุล
+ดุล-
+ดุลการค้า
+ดุลการชำระเงิน
+ดุลชำระหนี้
+ดุลพินิจ
+ดุลภาค
+ดุลย-
+ดุลยพินิจ
+ดุลยภาพ
+ดุลอำนาจ
+ดุษฎี
+ดุษฎีนิพนธ์
+ดุษฎีบัณฑิต
+ดุษฎีมาลา
+ดุษฎีสังเวย
+ดุษณี
+ดุษณีภาพ
+ดุษิต
+ดุสิต
+ดุเหว่า
+ดู
+ดูกไก่ดำ
+ดูกค่าง
+ดูกร
+ดูก่อน
+ดูแคลน
+ดูใจ
+ดูช้างให้ดูหาง ดูนางให้ดูแม่
+ดูซิ
+ดูด
+ดูดดึง
+ดูดดื่ม
+ดูดอมดูดาย
+ดูดาย
+ดูดู๋
+ดูตาม้าตาเรือ
+ดูถูก
+ดูถูกดูแคลน
+ดูเถอะ
+ดูเถิด
+ดูแน่ะ
+ดูเบา
+ดูไปก่อน
+ดูรา
+ดูร้าย
+ดูรึ
+ดูแล
+ดูหมิ่น
+ดูหมิ่นถิ่นแคลน
+ดูหรือ
+ดูหรู
+ดูเหมือน
+เด
+เด่
+เดก
+เด็ก
+เด็กชา
+เด็กชาย
+เดกซ์โทรส
+เด็กแดง
+เด็กเมื่อวานซืน
+เด็กหญิง
+เด็กอมมือ
+เดคากรัม
+เดคาเมตร
+เดคาลิตร
+เด้ง
+เด็จ
+เดช
+เดชน์
+เดชนะ
+เดชะ
+เดโช
+เดโชชัย
+เดโชพล
+เดซิกรัม
+เดซิเมตร
+เดซิลิตร
+เด็ด
+เด็ดขาด
+เด็ดดวง
+เด็ดดอกไม้ร่วมต้น
+เด็ดดอกไม่ไว้ขั้ว
+เด็ดเดี่ยว
+เด็ดบัวไม่ไว้ใย
+เด็ดปลีไม่มีใย
+เดน
+เด่น
+เดนตาย
+เดนมาร์ก
+เดรัจฉาน
+เด๋อ
+เด๋อด๋า
+เดา
+เด่า
+เด่าๆ
+เด้า
+เด้าดิน
+เด้าลม
+เดาสวด
+เดาสุ่ม
+เดาะ
+เดิน
+เดิ่น
+เดินขบวน
+เดินคาถา
+เดินจักร
+เดินตลาด
+เดินตามหลังผู้ใหญ่หมาไม่กัด
+เดินแต้ม
+เดินโต๊ะ
+เดินทอง
+เดินทัพ
+เดินทาง
+เดินทุ่ง
+เดินเทียน
+เดินธุระให้
+เดินนา
+เดินป้าย
+เดินรถ
+เดินเรือ
+เดินเรื่อง
+เดินสวน
+เดินสะพัด
+เดินสาย
+เดินเส้น
+เดินหน
+เดินเหิน
+เดินไหม
+เดินอากาศ
+เดิม
+เดิมที
+เดิมพัน
+เดี้ย
+เดียง
+เดียงสา
+เดียด
+เดียดฉันท์
+เดียร
+เดียรดาษ
+เดียรถ์
+เดียรถีย์
+เดียรัจฉาน
+เดียว
+เดี่ยว
+เดี๋ยว
+เดี๋ยวก่อน
+เดียวกัน
+เดียวดาย
+เดี๋ยวเดียว
+เดี๋ยวนี้
+เดียะ
+เดื่อ
+เดือก
+เดื่อง
+เดือด
+เดือดดาล
+เดือดร้อน
+เดือน
+เดือนขาด
+เดือนค้างฟ้า
+เดือนคี่
+เดือนคู่
+เดือนเต็ม
+เดือนมืด
+เดือนเย็น
+เดือนร้อน
+เดือนหงาย
+เดือย
+เดือยไก่
+แด
+แด่
+แดก
+แด็กๆ
+แดกงา
+แดกดัน
+แดกแด้
+แด็กแด้
+แดกห่า
+แดง
+แดงน้ำ
+แดด
+แดดาล
+แดดิ้น
+แดน
+แด่น
+แดนไตร
+แดยัน
+แด่วๆ
+แดะ
+แดะแด๋
+โด
+โด่
+โดกเดก
+โด่ง
+โด่งดัง
+โดด
+โดดๆ
+โดดเดี่ยว
+โดดร่ม
+โด่เด่
+โดน
+โดนดี
+โดม
+โดมไพร
+โดมร
+โด่ไม่รู้ล้ม
+โดย
+โดยจริง
+โดยที่
+โดยพยัญชนะ
+โดยสาร
+โดยเสด็จ
+โดยอรรถ
+โดร
+โดรณ
+ใด
+...ใด...หนึ่ง
+ได
+ได้
+ได้กัน
+ได้การ
+ได้แก่
+ได้แกงเทน้ำพริก
+ได้ความ
+ได้คิด
+ได้ใจ
+ได้ช่อง
+ได้ชื่อ
+ไดแซ็กคาไรด์
+ได้ท่า
+ได้ท้าย
+ได้ที
+ได้ที่
+ได้ทีขี่แพะไล่
+ไดนาโม
+ไดนาไมต์
+ไดโนเสาร์
+ได้ยิน
+ไดเรกตริกซ์
+ได้ฤกษ์
+ได้สติ
+ได้ส่วน
+ได้ส่วนสัด
+ได้เสีย
+ได้เสียกัน
+ได้หน้า
+ได้หน้าลืมหลัง
+ต
+ตก
+ตกกระ
+ตกกระไดพลอยโจน
+ตกขอบ
+ตกขาว
+ตกข้าว
+ตกขุย
+ตกคลัก
+ตกค้าง
+ตกเครือ
+ตกงาน
+ตกจั่น
+ตกใจ
+ตกดิน
+ตกตะกอน
+ตกตะลึง
+ตกต่ำ
+ตกแต่ง
+ต๊กโต
+ตกใต้เถรเทวทัต
+ตกท้องช้าง
+ตกทอด
+ตกที่นั่ง
+ตกนรกทั้งเป็น
+ตกน้ำมัน
+ตกน้ำไม่ว่าย
+ตกน้ำไม่ไหล ตกไฟไม่ไหม้
+ตกใน
+ตกเบ็ด
+ตกเบิก
+ตกประหม่า
+ตกปลอก
+ตกปลัก
+ตกปากตกคำ
+ตกเป็น
+ตกเป็นเบี้ยล่าง
+ตกผลึก
+ตกพุ่มม่าย
+ตกฟอง
+ตกฟาก
+ตกมัน
+ตกมูก
+ตกยาก
+ตกรางวัล
+ตกลง
+ตกล่องปล่องชิ้น
+ตกลูก
+ตกเลือด
+ตกว่า
+ตกสนับ
+ตกสะเก็ด
+ตกแสก
+ตกหนัก
+ตกหมก
+ตกหล่น
+ตกหลุม
+ตกหลุมพราง
+ตกอับ
+ตง
+ต๋ง
+ตงฉิน
+ตงิด
+ตงุ่น
+ตจ-
+ตจปัญจกกรรมฐาน
+ตจสาร
+ตด
+ตดหมูตดหมา
+ตติย-
+ตถาคต
+ตน
+ต้น
+ต้นกล
+ต้นขั้ว
+ต้นคอ
+ต้นคิด
+ต้นเงิน
+ต้นฉบับ
+ต้นชนดอก
+ต้นเชือก
+ต้นตระกูล
+ต้นตอ
+ต้นตายใบเป็น
+ต้นตำรับ
+ต้นทาง
+ต้นทุน
+ต้นเทียม
+ต้นน้ำ
+ต้นบท
+ต้นแบบ
+ต้นเพลิง
+ต้นมือ
+ต้นไม้
+ต้นร่าง
+ต้นร้ายปลายดี
+ต้นเรือ
+ต้นเรื่อง
+ต้นวายปลายดก
+ต้นสังกัด
+ต้นสายปลายเหตุ
+ต้นเสียง
+ต้นหน
+ต้นเหตุ
+ตนัย
+ตนุ
+ตนุมัธยมา
+ตนุมัธยา
+ตบ
+ตบตา
+ตบแต่ง
+ตบเท้า
+ตบแผละ
+ตบมือ
+ตบมือข้างเดียวไม่ดัง
+ตบยุง
+ตบหัวกลางศาลา ขอขมาที่บ้าน
+ตบหัวลูบหลัง
+ตบะ
+ตปนียะ
+ตม-
+ต้ม
+ต้มกะทิ
+ต้มกะปิ
+ต้มข่า
+ต้มเค็ม
+ต้มโคล้ง
+ต้มปลาร้า
+ต้มเปรต
+ต้มเปอะ
+ต้มยำ
+ต้มยำกะทิ
+ต้มส้ม
+ต้มสุก
+ตมูก
+ตโม-
+ตโมนุท
+ตโมไพรี
+ตโมหร
+ตยาค
+ตยาคี
+ตยุติ
+ตรง
+ตรงๆ
+ตรงกัน
+ตรงกันข้าม
+ตรณี
+ตรม
+ตรมตรอม
+ตรมเตรียม
+ตรมวล
+ตรรก-
+ตรรกศาสตร์
+ตรรกะ
+ตรลบ
+ตรลอด
+ตรละ
+ตรลา
+ตรลาด
+ตรเลิด
+ตรวจ
+ตรวจการณ์
+ตรวจข่าว
+ตรวจตรา
+ตรวจเลือด
+ตรวด
+ตรวน
+ตรวย
+ตรอก
+ตรอง
+ตรอมใจ
+ตรอมตรม
+ตระ
+ตระกล
+ตระกวน
+ตระกอง
+ตระกัด
+ตระการ
+ตระกูล
+ตระกูลมูลชาติ
+ตระคัร
+ตระง่อง
+ตระจัก
+ตระชัก
+ตระเชิญ
+ตระดก
+ตระดาษ
+ตระเตรียม
+ตระแตร้น
+ตระทรวง
+ตระนาว
+ตระไน
+ตระบก
+ตระบอก
+ตระบอง
+ตระบัด
+ตระบัดสัตย์
+ตระบัน
+ตระเบ็ง
+ตระแบ่
+ตระแบก
+ตระแบง
+ตระแบน
+ตระแบ่น
+ตระโบม
+ตระพอง
+ตระพัง
+ตระมื่น
+ตระโมจ
+ตระลาการ
+ตระวัน
+ตระเว็ด
+ตระเวน
+ตระเวนไพร
+ตระเวนวัน
+ตระเวนเวหา
+ตระสัก
+ตระหง่อง
+ตระหง่าน
+ตระหนก
+ตระหนัก
+ตระหน่ำ
+ตระหนี่
+ตระหนี่ตัว
+ตระอร
+ตระอาล
+ตระโอม
+ตรัง
+ตรังค-
+ตรังค์
+ตรังคนที
+ตรังควชิราวดี
+ตรับ
+ตรับฟัง
+ตรัย
+ตรัยตรึงศ์
+ตรัส
+ตรัสรู้
+ตรัสสา
+ตรา
+ตรากตรำ
+ตราขุนพล
+ตราจอง
+ตราชู
+ตราแดง
+ตราตั้ง
+ตราบ
+ตราบเท่า
+ตราบาป
+ตราไปรษณียากร
+ตราภูมิ
+ตรายาง
+ตราสัง
+ตราสาร
+ตราสิน
+ตราหน้า
+ตรำ
+ตร่ำ
+ตริ
+ตริตรอง
+ตริว
+ตรี
+ตรีกฏุก
+ตรีกันสวาต
+ตรีกาล
+ตรีกาฬพิษ
+ตรีกูฏ
+ตรีเกสรมาศ
+ตรีโกณ
+ตรีโกณมิติ
+ตรีคูณ
+ตรีจีวร
+ตรีฉินทลามกา
+ตรีชาต
+ตรีญาณรส
+ตรีทศ
+ตรีทิพ
+ตรีทิพยรส
+ตรีทุรวสา
+ตรีทูต
+ตรีเทวตรีคันธา
+ตรีโทษ
+ตรีธารทิพย์
+ตรีนิศก
+ตรีเนตร
+ตรีบถ
+ตรีบูร
+ตรีประดับ
+ตรีปวาย
+ตรีปิฎก
+ตรีปิตผล
+ตรีผลธาตุ
+ตรีผลสมุตถาน
+ตรีผลา
+ตรีพิธพรรณ
+ตรีพิษจักร
+ตรีเพชรทัณฑี
+ตรีเพชรพวง
+ตรีเพชรสมคุณ
+ตรีภพ
+ตรีภพนาถ
+ตรีภูมิ
+ตรีภูว
+ตรีมธุร
+ตรีมูรติ
+ตรียมก
+ตรียัมปวาย
+ตรีรัตน์
+ตรีโลก
+ตรีโลกนาถ
+ตรีโลเกศ
+ตรีโลจน์
+ตรีโลหก
+ตรีโลหะ
+ตรีวาตผล
+ตรีศก
+ตรีศูล
+ตรีสมอ
+ตรีสมุตถาน
+ตรีสัตกุลา
+ตรีสันนิบาตผล
+ตรีสาร
+ตรีสินธุรส
+ตรีสุคนธ์
+ตรีสุรผล
+ตรีเสมหผล
+ตรีอมฤต
+ตรีอากาศผล
+ตรีเอกภาพ
+ตรีเอกานุภาพ
+ตรึก
+ตรึกตรอง
+ตรึกถอง
+ตรึง
+ตรึงตรา
+ตรึงศ-
+ตรุ
+ตรุณ
+ตรุย
+ตรุษ
+ตรุษจีน
+ตรู
+ตรู่
+ตฤณ
+ตฤณ-
+ตฤณชาติ
+ตฤณมัย
+ตฤตีย-
+ตฤตียะ
+ตฤท
+ตฤป
+ตฤษณา
+ตฤๅ
+ตล
+ตลก
+ตลกคะนอง
+ตลกบาตร
+ตลกโปกฮา
+ตลกหัวเราะ
+ตลบ
+ตลบตะแลง
+ตลบนก
+ตลบหลัง
+ตลอด
+ตลอดรอดฝั่ง
+ตละ
+ตลับ
+ตลับนาก
+ตลาด
+ตลาดเงิน
+ตลาดท้องน้ำ
+ตลาดนัด
+ตลาดน้ำ
+ตลาดมืด
+ตลาดยี่สาน
+ตลาดสด
+ตลาดหน้าคุก
+ตลาดหลักทรัพย์
+ตลาดหุ้น
+ตลิ่ง
+ตลึง
+ตวง
+ตวงพระธาตุ
+ต่วน
+ต้วมเตี้ยม
+ตวัก
+ตวัด
+ตวาด
+ตอ
+ต่อ
+ต้อ
+ตอก
+ต๊อก
+ต๊อกๆ
+ต๊อกต๋อย
+ต่อกร
+ต้อกระจก
+ตอกหน้า
+ต่อกิ่ง
+ต่อความยาวสาวความยืด
+ตอง
+ต้อง
+ตองกราย
+ต้องกัน
+ต้องการ
+ต้องคดี
+ต้องใจ
+ตองตอย
+ต้องตา
+ต้องเต
+ตองแตก
+ต่องแต่ง
+ต้องโทษ
+ต้องธรณีสาร
+ตองเปรียง
+ต้องสู้
+ต้องหา
+ตองเหลือง
+ตอด
+ตอดต่อ
+ต่อตา
+ต่อต้าน
+ต่อตาม
+ต่อตี
+ต่อแต้ม
+ตอน
+ต้อน
+ต้อนรับ
+ต้อนรับขับสู้
+ต้อนหมูเข้าเล้า
+ต่อนัดต่อแนง
+ต้อเนื้อ
+ตอบ
+ตอบโต้
+ตอบแทน
+ตอเบา
+ต่อปาก
+ต่อปากต่อคำ
+ต่อปากหลากคำ
+ตอม
+ต่อม
+ต๋อม
+ต่อมน้ำ
+ต่อมโลหิต
+ตอม่อ
+ต่อย
+ต้อย
+ต้อยๆ
+ต้อยตริ่ง
+ต้อยติ่ง
+ต้อยตีวิด
+ต่อยหอย
+ตอแย
+ต่อแย้ง
+ตอร์ปิโด
+ต่อล้อต่อเถียง
+ต้อลำไย
+ต้อลิ้นหมา
+ต่อว่า
+ต่อสู้
+ต่อไส้
+ต่อหน้า
+ต่อหน้ามะพลับ ลับหลังตะโก
+ต้อหิน
+ตอแหล
+ต่ออายุ
+ตะ
+ตะกรน
+ตะกรวย
+ตะกร้อ
+ตะกร่อม
+ตะกรัน
+ตะกรับ
+ตะกร้า
+ตะกราม
+ตะกรุด
+ตะกรุม
+ตะกรุมตะกราม
+ตะกละ
+ตะกลาม
+ตะกวด
+ตะกอ
+ตะกอน
+ตะกัง
+ตะกั่ว
+ตะกั่วเกรียบ
+ตะกั่วแดง
+ตะกั่วตัด
+ตะกาง
+ตะกาด
+ตะกาย
+ตะกาว
+ตะกุกตะกัก
+ตะกุย
+ตะกุยตะกาย
+ตะกู
+ตะกูด
+ตะเกียกตะกาย
+ตะเกียง
+ตะเกียงแก๊ส
+ตะเกียงรั้ว
+ตะเกียงลาน
+ตะเกียบ
+ตะแก
+ตะแก่
+ตะแกรง
+ตะโก
+ตะโก้
+ตะโกก
+ตะโกขาว
+ตะโกดำ
+ตะโกน
+ตะโกรง
+ตะโกรม
+ตะโกส้ม
+ตะไกร
+ตะขบ
+ตะขบฝรั่ง
+ตะขอ
+ตะขาบ
+ตะขิดตะขวง
+ตะเข้
+ตะเข้ขบฟัน
+ตะเข็บ
+ตะเข็บไต่ขอน
+ตะเขิง
+ตะโขง
+ตะคร้อ
+ตะครอง
+ตะครั่นตะครอ
+ตะคร้ำ
+ตะคริว
+ตะครุบ
+ตะครุบกบ
+ตะคลับตะคล้าย
+ตะคอก
+ตะคัน
+ตะค้า
+ตะคาก
+ตะคาง
+ตะค้าทอง
+ตะค้าน
+ตะคิว
+ตะคุ่ม
+ตะคุ่มๆ
+ตะเครียว
+ตะเคียน
+ตะเคียนทอง
+ตะเคียนเผือก
+ตะเคียว
+ตะแคง
+ตะไคร่
+ตะไคร้
+ตะไคร้แดง
+ตะไคร้น้ำ
+ตะไคร้บก
+ตะไคร้หอม
+ตะไคร้หางนาค
+ตะเฆ่
+ตะแง้
+ตะติน
+ตะแตร้น
+ตะนอย
+ตะนาว
+ตะบม
+ตะบอง
+ตะบองกัน
+ตะบองแดง
+ตะบองเพชร
+ตะบอย
+ตะบัน
+ตะบันไฟ
+ตะบิ้ง
+ตะบิด
+ตะบิดตะบอย
+ตะบี้ตะบัน
+ตะบึง
+ตะบุ้ย
+ตะบุ้ยๆ
+ตะบูน
+ตะเบ็ง
+ตะเบ็งมาน
+ตะแบก
+ตะแบง
+ตะแบงมาน
+ตะโบม
+ตะไบ
+ตะปบ
+ตะปลิง
+ตะปัดตะป่อง
+ตะปิ้ง
+ตะปุ่มตะป่ำ
+ตะปู
+ตะปูเข็ม
+ตะปูควง
+ตะปูหัวเห็ด
+ตะพง
+ตะพด
+ตะพอง
+ตะพัก
+ตะพัง
+ตะพัด
+ตะพั้น
+ตะพาก
+ตะพาน
+ตะพานช้าง
+ตะพานหนู
+ตะพาบ
+ตะพาบน้ำ
+ตะพาย
+ตะพายแล่ง
+ตะพึด
+ตะพึดตะพือ
+ตะพุ่น
+ตะพุ่นหญ้าช้าง
+ตะเพรา
+ตะเพิง
+ตะเพิด
+ตะเพิ่น
+ตะเพียน
+ตะเพียนทอง
+ตะเพียนน้ำเค็ม
+ตะโพก
+ตะโพง
+ตะโพน
+ตะเภา
+ตะเภาเดียวกัน
+ตะใภ้
+ตะม่อ
+ตะมอย
+ตะยองสะลา
+ตะรัง
+ตะรังกะนู
+ตะรังตังกวาง
+ตะรังตังช้าง
+ตะราง
+ตะลอง
+ตะลอน
+ตะล่อม
+ตะล่อมข้าว
+ตะล่อมป้อม
+ตะละ
+ตะลาน
+ตะลิงปลิง
+ตะลิบ
+ตะลีตะลาน
+ตะลึง
+ตะลึงพรึงเพริด
+ตะลุง
+ตะลุ่ม
+ตะลุ่มนก
+ตะลุมบอน
+ตะลุ่มโปง
+ตะลุมพอ
+ตะลุมพุก
+ตะลุ่มอิด
+ตะลุย
+ตะเลง
+ตะแลงแกง
+ตะไล
+ตะวัน
+ตะวันขึ้น
+ตะวันตก
+ตะวันยอแสง
+ตะวันออก
+ตะวันออกกลาง
+ตะวันออกใกล้
+ตะวันออกไกล
+ตะวันอ้อมข้าว
+ตะวาง
+ตะเวน
+ตะหนึ่งรัด
+ตะหลิว
+ตะหลุก
+ตะหลุง
+ตะเหลนเป๋น
+ตะเหลาะเปาะ
+ตะแหง่วๆ
+ตะแหมะแขะ
+ตะแหลนแป๋น
+ตะโหงก
+ตัก
+ตักกะ
+ตักตวง
+ตักเตือน
+ตั๊กแตน
+ตักน้ำรดหัวตอ
+ตักน้ำรดหัวสาก
+ตักน้ำใส่กะโหลก ชะโงกดูเงา
+ตักบาตร
+ตักบาตรอย่าถามพระ
+ตักษณ
+ตักษณี
+ตักษัย
+ตัง
+ตั่ง
+ตั้ง
+ตั้งกรม
+ตังเก
+ตั้งเข็ม
+ตั้งไข่
+ตั้งเค้า
+ตั้งแง่
+ตั้งใจ
+ตังฉ่าย
+ตั้งต้น
+ตั้งตัว
+ตั้งตาคอย
+ตังติด
+ตั้งแต่
+ตั้งแต่ง
+ตั้งโต๊ะ
+ตั้งท่า
+ตั้งธาตุ
+ตั้งนาฬิกา
+ตั้งนาฬิกาปลุก
+ตั้งเป้าหมาย
+ตังเม
+ตังวาย
+ตั้งหน้า
+ตั้งหน้าตั้งตา
+ตั้งหัวเรือ
+ตั้งอกตั้งใจ
+ตังโอ๋
+ตัจฉก
+ตัจฉนี
+ตัณฑุล
+ตัณหักษัย
+ตัณหา
+ตัด
+ตัดกัน
+ตัดขาด
+ตัดใจ
+ตัดช่องน้อยแต่พอตัว
+ตัดช่องย่องเบา
+ตัดเชือก
+ตัดญาติขาดมิตร
+ตัดต้นไฟ
+ตัดตอน
+ตัดถนน
+ตัดทาง
+ตัดบท
+ตัดประเด็น
+ตัดเป็นตัดตาย
+ตัดพ้อ
+ตัดไพ่
+ตัดไฟต้นลม
+ตัดไฟหัวลม
+ตัดไม้ข่มนาม
+ตัดรอน
+ตัดราคา
+ตัดสิน
+ตัดสินใจ
+ตัดเส้น
+ตัดหนทาง
+ตัดหน้า
+ตัดหน้าฉาน
+ตัดหนามอย่าไว้หน่อ
+ตัดหางปล่อยวัด
+ตัตว-
+ตัตวศาสตร์
+ตัถย์
+ตัน
+ตันคอหอย
+ตันตระ
+ตันติ
+ตันติภาษา
+ตันปัญญา
+ตันหยง
+ตันเหิม
+ตันอกตันใจ
+ตับ
+ตับแข็ง
+ตับเต่า
+ตับเต่าขาว
+ตับปิ้ง
+ตับเป็ด
+ตับเพลง
+ตับเรื่อง
+ตับเหล็ก
+ตับอ่อน
+ตัว
+ตั๋ว
+ตัวกลั่น
+ตัวกลาง
+ตัวการ
+ตัวเก็ง
+ตัวคูณร่วมน้อย
+ตัวโค
+ตัวใครตัวมัน
+ตัวเงิน
+ตั๋วเงิน
+ตั๋วเงินคลัง
+ตั๋วเงินจ่าย
+ตั๋วเงินรับ
+ตัวจักรใหญ่
+ตัวจำนำ
+ตัวจี๊ด
+ตัวเชิด
+ตัวดี
+ตัวต่อตัว
+ตัวตั้ง
+ตัวตั้งตัวตี
+ตัวตายตัวแทน
+ตัวตืด
+ตัวเต็ง
+ตัวแทน
+ตัวแทนค้าต่าง
+ตัวแทนช่วง
+ตัวแทนเชิด
+ตัวนาง
+ตัวนำ
+ตัวประกอบ
+ตัวประกัน
+ตัวเป็นเกลียว
+ตัวเปล่า
+ตัวแปร
+ตัวผู้
+ตั้วโผ
+ตัวพระ
+ตัวพิมพ์
+ตัวเมีย
+ตัวเมือง
+ตัวไม้
+ตัวยืน
+ตัวเลข
+ตั๋วแลกเงิน
+ตัวสะกด
+ตั๋วสัญญาใช้เงิน
+ตั้วสิว
+ตัวหนังสือ
+ตัวหารร่วมมาก
+ตั้วเหี่ย
+ตัวอย่าง
+ตัวเอก
+ตา
+ตาก
+ตากตน
+ตากบ
+ตากบตาเขียด
+ตากล้อง
+ตากลับ
+ตากล้า
+ตากวาง
+ตากสมอง
+ตากหน้า
+ตากอากาศ
+ตากุ้ง
+ตาโก้ง
+ตาไก่
+ตาขวาง
+ตาขอ
+ตาข่าย
+ตาขาว
+ตาขุ่นตาเขียว
+ตาเข
+ตาแข็ง
+ตาคม
+ตาค้าง
+ตาง
+ต่าง
+ต่างๆ
+ต่างด้าว
+ต่างว่า
+ต่างหาก
+ตางัว
+ตาจระเข้
+ตาชั่ง
+ตาช้าง
+ตาด
+ตาเดียว
+ตาแดง
+ตาตกกล้า
+ตาตั๊กแตน
+ตาตั้ง
+ตาตาราง
+ตาตี่
+ตาตุ่ม
+ตาเต็ง
+ตาโต
+ตาถั่ว
+ตาทวด
+ตาทัพ
+ตาน
+ต่าน
+ต้าน
+ตานกแก้ว
+ตานขโมย
+ต้านทาน
+ตานนกกด
+ตานเสี้ยน
+ตานหก
+ตานหม่อน
+ตานเหลือง
+ตาน้ำ
+ตานี
+ตาบ
+ตาบทับ
+ตาบทิศ
+ตาบอด
+ตาบอดคลำช้าง
+ตาบอดได้แว่น
+ตาบอดตาใส
+ตาบอดสอดตาเห็น
+ตาบอดสี
+ตาปลา
+ตาปลาดุก
+ตาปี
+ตาปีตาชาติ
+ตาปู
+ตาเป็นมัน
+ตาเป็นสับปะรด
+ตาโป่ง
+ตาฝั่ง
+ตาฝาด
+ตาพร่า
+ตาพอง
+ตาฟาง
+ตาฟางไก่
+ตาเฟื้องตาสลึง
+ตาม
+ตามกวาง
+ตามควาย
+ตามใจ
+ตามใจปากมากหนี้
+ตามใจปากลำบากท้อง
+ตามด
+ตามที
+ตามเนื้อผ้า
+ตามบุญตามกรรม
+ตามพ-
+ตามพหัตถี
+ตามพะ
+ตามเพลง
+ตามมี
+ตามมีตามเกิด
+ตามยถากรรม
+ตามเรื่องตามราว
+ตามลมตามแล้ง
+ตามลำพัง
+ตามอำเภอใจ
+ตามะแน
+ตามิน
+ตามีตามา
+ตาแมว
+ตาย
+ต้าย
+ตายขาน
+ตายขุย
+ตายคาที่
+ตายโคม
+ตายใจ
+ตายซาก
+ตายด้าน
+ตายดาบหน้า
+ตายตัว
+ตายทั้งกลม
+ตายน้อย
+ตายนึ่ง
+ตายประชดป่าช้า
+ตายเป็นเบือ
+ตายฝอย
+ตายฝังยังเลี้ยง
+ตายพราย
+ตายราบ
+ตายลาภ
+ตายห่า
+ตายโหง
+ตายอดตายอยาก
+ตาราง
+ตารางสอน
+ตารางเหลี่ยม
+ตาราไต
+ตาร้าย
+ตาริ้ว
+ตาเรือ
+ตาเรือชัย
+ตาล
+ตาลปัตร
+ตาลปัตรบังเพลิง
+ตาลปัตรฤๅษี
+ตาลม
+ตาลยอดด้วน
+ตาลอ
+ตาลอย
+ตาลาน
+ตาลาย
+ตาลีตาเหลือก
+ตาลุ
+ตาลุก
+ตาลุกตาชัน
+ตาลุชะ
+ตาเล็กตาน้อย
+ตาว
+ต๋าว
+ตาโศก
+ตาส่อน
+ตาสำเภา
+ตาสีตาสา
+ตาเสือ
+ตาหนู
+ตาหมากรุก
+ตาหยี
+ตาหลิ่ง
+ตาหวาน
+ตาเหล่
+ตาเหลว
+ตาเหลือก
+ตาเหลือกตาพอง
+ตาแหวน
+ตาฬ
+ตาอ้อย
+ตาเอก
+ตำ
+ต่ำ
+ตำข้าวสารกรอกหม้อ
+ต่ำใจ
+ต่ำช้า
+ต่ำตน
+ต่ำต้อย
+ตำตา
+ตำนาน
+ตำน้ำพริกละลายแม่น้ำ
+ตำเนิน
+ตำเนียน
+ตำบล
+ตำแบ
+ต้ำปุก
+ต้ำผาง
+ต้ำพรวด
+ตำแย
+ตำแยแมว
+ตำรวจ
+ตำรวจนครบาล
+ตำรวจภูธร
+ตำรวจวัง
+ตำรวจหลวง
+ตำรับ
+ตำรา
+ตำรุ
+ตำลึง
+ตำส้ม
+ตำเสา
+ตำหนัก
+ตำหนักน้ำ
+ตำหนักแพ
+ตำหนิ
+ตำหระ
+ตำแหน่ง
+ตำแหน่งที่ตั้ง
+ติ
+ติก-
+ติกะ
+ติกาหรัง
+ติง
+ติ่ง
+ติ๋ง
+ติ๋งๆ
+ติ่งตั่ง
+ติงทุเลา
+ติงส-
+ติงสติ
+ติงสติม-
+ติ่งหาย
+ติณ
+ติณ-
+ติณชาติ
+ติด
+ติดๆ
+ติดกระดุม
+ติดกัณฑ์เทศน์
+ติดเก้ง
+ติดขัด
+ติดเครื่อง
+ติดจะ
+ติดจักรยาน
+ติดใจ
+ติดตลก
+ติดตลาด
+ติดต่อ
+ติดต้อยห้อยตาม
+ติดตะกร้อ
+ติดตัว
+ติดตา
+ติดตาม
+ติดตื้น
+ติดบวก
+ติดบ่อน
+ติดปาก
+ติดพัน
+ติดไฟ
+ติดมือ
+ติดไม้ติดมือ
+ติดร่างแห
+ติดลบ
+ติดลม
+ติดศัพท์
+ติดสอยห้อยตาม
+ติดสัด
+ติดสำนวน
+ติดสินบน
+ติดหน้าตามหลัง
+ติดหมัด
+ติดหลังแห
+ติดแห้ง
+ติดอันดับ
+ติดอ่าง
+ติตติก
+ติตติร
+ติตถ
+ติเตียน
+ติถี
+ติปา
+ติปาถะ
+ติมิ
+ติมิงคละ
+ติร
+ติรัจฉาน
+ติเรือทั้งโกลน
+ติล
+ติลก
+ติ้ว
+ติ้วใบเลื่อม
+ตี
+ตี่
+ตีกรรเชียง
+ตีกาก
+ตีกิน
+ตีเกล็ด
+ตีเกลียว
+ตีไก่
+ตีขนาบ
+ตีขลุม
+ตีความ
+ตีคอ
+ตีคู่
+ตีงูให้กากิน
+ตีงูให้หลังหัก
+ตีจาก
+ตีชิง
+ตีตนก่อนไข้
+ตีตนตายก่อนไข้
+ตีตรวน
+ตีตั๋ว
+ตีต่าง
+ตีตื้น
+ตีแตะ
+ตีโต้
+ตีทอง
+ตีทะเบียน
+ตีท้ายครัว
+ตีท้ายน้ำ
+ตีน
+ตีนกา
+ตีนครุ
+ตีนคู้
+ตีนจก
+ตีนจ้ำ
+ตีนตะขาบ
+ตีนตุ๊กแก
+ตีนเต่า
+ตีนถีบปากกัด
+ตีนเท่าฝาหอย
+ตีนเทียน
+ตีนนก
+ตีนเป็ด
+ตีนผี
+ตีนแรด
+ตีนโรงตีนศาล
+ตีนเหยียด
+ตีบ
+ตีบรรทัด
+ตีบังกั้น
+ตี่ใบ้
+ตีปลาหน้าไซ
+ตีป่า
+ตี่ป้าบ
+ตีป่าให้เสือกลัว
+ตีปีก
+ตีแปลง
+ตีผี
+ตีผึ้ง
+ตีแผ่
+ตีฝีปาก
+ตีโพยตีพาย
+ตีมอง
+ตีรถะ
+ตีระ
+ตีรั้ง
+ตีลังกา
+ตีวง
+ตีวัวกระทบคราด
+ตีสนิท
+ตีสองหน้า
+ตีสำนวน
+ตีเส้น
+ตีเสมอ
+ตีเสียง
+ตีเสียว่า
+ตีหน้า
+ตีหน้าตาย
+ตีหน้ายักษ์
+ตีหลายหน้า
+ตีห่าง
+ตีอวน
+ตีอีตื้อ
+ตึ
+ตึๆ
+ตึก
+ตึกๆ
+ตึ้กๆ
+ตึ้กตั้ก
+ตึกแถว
+ตึกระฟ้า
+ตึง
+ตึงๆ
+ตึงเครียด
+ตึงตัง
+ตึงตัว
+ตึงเปรี๊ยะ
+ตึดตื๋อ
+ตึ๊ดตื๋อ
+ตึตัง
+ตืด
+ตื่น
+ตื้น
+ตื่นข่าว
+ตื้นตัน
+ตื้นตันใจ
+ตื่นตัว
+ตื่นตาตื่นใจ
+ตื่นตาย
+ตื่นตูม
+ตื่นเต้น
+ตื่นแต่ดึก สึกแต่หนุ่ม
+ตื่นฟ้า
+ตื้อ
+ตื๊อ
+ตื๋อ
+ตุ
+ตุๆ
+ตุ๊
+ตุ๊กแก
+ตุ๊กแกใบกลม
+ตุ๊กตา
+ตุ๊กตาล้มลุก
+ตุ๊กตาเสียกบาล
+ตุ๊กต่ำ
+ตุ๊กต่ำน้ำทอง
+ตุกติก
+ตุ๊กติ๊ก
+ตุ๊กตุ่น
+ตุ๊กตุ๋ย
+ตุง
+ตุ้งก่า
+ตุ้งติ้ง
+ตุ๊ดตู่
+ตุ๊ต๊ะ
+ตุตัง
+ตุน
+ตุ่น
+ตุ่นๆ
+ตุ๋น
+ตุ่นต่าน
+ตุนาหงัน
+ตุบๆ
+ตุ้บ
+ตุ้บๆ
+ตุ้บตั้บ
+ตุ๊บป่อง
+ตุปัดตุป่อง
+ตุปัดตุเป๋
+ตุ่ม
+ตุ้ม
+ตุ๋ม
+ตุ้มกว้าว
+ตุมกา
+ตุ้มแซะ
+ตุมตัง
+ตุ้มเต๋น
+ตุ้มปี่
+ตุมพ
+ตุมพรวด
+ตุ้มมะพร้าว
+ตุ้มหู
+ตุ่ย
+ตุ่ยๆ
+ตุ้ย
+ตุ้ยๆ
+ตุ๊ย
+ตุ๋ยตุ่ย
+ตุรค
+ตุรงค-
+ตุรงค์
+ตุรงคราวี
+ตุริยางค์
+ตุล
+ตุลสิ
+ตุลา
+ตุลาการ
+ตุลาคม
+ตุหรัดตุเหร่
+ตู
+ตู่
+ตู้
+ตูก
+ตูข้า
+ตูด
+ตูดงอน
+ตู่ตัว
+ตู้นิรภัย
+ตูบ
+ตู้พระมาลัย
+ตู่พุทธพจน์
+ตูม
+ตูมๆ
+ตูมตาม
+ตูลิ่นฮื้อ
+ตูหนา
+เต
+เตก
+เต๊ก
+เต็ง
+เต่ง
+เตช
+เตโช
+เตโชธาตุ
+เต้น
+เต้นกินรำกิน
+เต้นเขน
+เต็นท์
+เต้นรำ
+เต้นแร้งเต้นกา
+เต้นแร้งเต้นแฉ่ง
+เต็ม
+เต็มแกน
+เต็มคราบ
+เต็มใจ
+เต็มตัว
+เต็มตา
+เต็มตื้น
+เต็มเต็ง
+เต็มที
+เต็มที่
+เต็มบาท
+เต็มประดา
+เต็มประตู
+เต็มปาก
+เต็มเปา
+เต็มมือ
+เต็มเม็ดเต็มหน่วย
+เต็มไม้เต็มมือ
+เต็มยศ
+เต็มรัก
+เต็มหู
+เต็มเหนี่ยว
+เต็มเหยียด
+เต็มอก
+เต็มอกเต็มใจ
+เต็มอัตรา
+เตย
+เตยเลื้อย
+เตร่
+เตร็ด
+เตร็ดเตร่
+เตร็ดเตรน
+เตรน
+เตริง
+เตรียด
+เตรียบ
+เตรียม
+เตรียมตรม
+เตรียมตัว
+เตรียมพร้อม
+เตละ
+เตลิด
+เตว็ด
+เต่อ
+เตอะ
+เตะ
+เตะจมูก
+เตะฉาก
+เตะโด่ง
+เตะตา
+เตะฝุ่น
+เตา
+เต่า
+เต้า
+เต๋า
+เต่ากระสุน
+เต่ากินผักบุ้ง
+เต่าเกียด
+เตาแก๊ส
+เต๋าเขย่า
+เต้าแคน
+เต้าเจี้ยว
+เต่าดำ
+เต่าทอง
+เต่าทอเสื่อ
+เต้าทึง
+เตาทุเรียง
+เต่านา
+เต่าบ้า
+เต้าปืน
+เตาผิง
+เตาฟู่
+เตาไฟ
+เต่ารั้ง
+เต้ารับ
+เต่าร้าง
+เตารีด
+เต่าเลือน
+เต้าส่วน
+เตาสูบ
+เต้าเสียบ
+เต่าหก
+เต่าหวาย
+เต่าหับ
+เต้าหู้
+เต้าหู้ยี้
+เต่าเหลี่ยม
+เต่าเหลือง
+เต้าฮวย
+เต๊าะ
+เตาะแตะ
+เติ่ง
+เตินเต่อ
+เติบ
+เติบโต
+เติม
+เตี้ย
+เตียง
+เตียงลา
+เตี้ยตน
+เตียน
+เตียบ
+เตี๋ยม
+เตียรถ์
+เตียว
+เตี่ยว
+เตี้ยอุ้มค่อม
+เตื้อ
+เตือน
+เตือนใจ
+เตือนตา
+เตือนสติ
+แต่
+แต่ๆ
+แต้
+แตก
+แตกคอ
+แตกเงิน
+แตกฉาน
+แตกฉานซ่านเซ็น
+แตกดับ
+แตกตื่น
+แตกแตน
+แตกทัพ
+แตกเนื้อสาว
+แตกเนื้อหนุ่ม
+แตกฝูง
+แตกพาน
+แตกมัน
+แตกแยก
+แตกระแหง
+แตกร้าว
+แตกหัก
+แต่ก่อนแต่กี้
+แต่กี้แต่ก่อน
+แตง
+แต่ง
+แต่งกว้าน
+แต่งการ
+แต่งงาน
+แต่งตั้ง
+แต่งตัว
+แตงเถาตาย
+แตงเม
+แตงร่มใบ
+แต่งหน้า
+แต่งหน้าขนม
+แต้จิ๋ว
+แตด
+แต๊ดแต๋
+แต่ทว่า
+แตน
+แต้ม
+แต้มคู
+แต้มต่อ
+แตร
+แตรงอน
+แตรเดี่ยว
+แตรฝรั่ง
+แตรฟันฟาร์
+แตรรถยนต์
+แตรลำโพง
+แตรวง
+แตรวงโยธวาทิต
+แตระ
+แต่ละ
+แต้ว
+แต้วแร้ว
+แต้วแล้ว
+แต่ว่า
+แต้แว้ด
+แตะ
+แตะต้อง
+โต
+โต้
+โตก
+โต้คารม
+โต่ง
+โต้ง
+โต้งๆ
+โตงเตง
+โตงๆ เตงๆ
+โตฎก
+โต๊ด
+โต้ตอบ
+โต้เถียง
+โตน
+โตนด
+โต้โผ
+โตมร
+โตมร-
+โตมรธร
+โตย
+โต้แย้ง
+โตรก
+โตรกไตร
+โตรด
+โต้รุ่ง
+โตเล่นหาง
+โต้วาที
+โต้หลง
+โต๊ะ
+โต๊ะกลม
+โต๊ะโขก
+โต๊ะเท้าช้าง
+โต๊ะหมู่
+โต๊ะหมู่บูชา
+โต๊ะอิหม่าม
+ใต้
+ใต้ดิน
+ใต้ถุน
+ใต้เท้า
+ใต้เท้ากรุณา
+ใต้เท้ากรุณาเจ้า
+ใต้ฝ่าพระบาท
+ใต้ฝ่าละอองธุลีพระบาท
+ใต้ฝ่าละอองพระบาท
+ไต
+ไต่
+ไต้
+ไต๋
+ไต้ก๋ง
+ไต่คู้
+ไต่เต้า
+ไต่ถาม
+ไตปลา
+ไต้ฝุ่น
+ไต้ไฟ
+ไต่ไม้
+ไต่ไม้ลำเดียว
+ไตร
+ไตรกิศยา
+ไตรจักร
+ไตรจีวร
+ไตรดายุค
+ไตร่ตรอง
+ไตรตรา
+ไตรตรึงษ์
+ไตรทวาร
+ไตรทศ
+ไตรทิพ
+ไตรทิพย์
+ไตรปิฎก
+ไตรเพท
+ไตรภพ
+ไตรภาคี
+ไตรภูมิ
+ไตรย
+ไตรยางศ์
+ไตรรงค์
+ไตรรัตน์
+ไตรลักษณ์
+ไตรโลก
+ไตรโลกย์
+ไตรวัฏ
+ไตรวิชชา
+ไตรสรณคมน์
+ไตรสรณาคมน์
+ไตรสิกขา
+ไต่ลวด
+ไต่สวน
+ไต้หวัน
+ถ
+ถก
+ถกเขมร
+ถกเถียง
+ถกล
+ถงัน
+ถงาด
+ถด
+ถดถอย
+ถน
+ถนน
+ถนนลาดยาง
+ถนป
+ถนอม
+ถนอมอาหาร
+ถนัด
+ถนัดขวา
+ถนัดใจ
+ถนัดซ้าย
+ถนัดถนี่
+ถนัดปาก
+ถนัดมือ
+ถนัน
+ถนำ
+ถนำทึก
+ถนิม
+ถนิมกาม
+ถนิมสร้อย
+ถบ
+ถบดี
+ถม
+ถ่ม
+ถมเงิน
+ถมตะทอง
+ถมถืด
+ถมเถ
+ถมทอง
+ถ่มน้ำลายรดฟ้า
+ถมปรักมาศ
+ถมปัด
+ถมไป
+ถ่มร้าย
+ถมอ
+ถมึงทึง
+ถล
+ถลก
+ถลกบาตร
+ถลน
+ถลม
+ถล่ม
+ถลอก
+ถลัน
+ถลา
+ถลาก
+ถลากถลำ
+ถลากไถล
+ถลาย
+ถลำ
+ถลำใจ
+ถลำตัว
+ถลำถลาก
+ถลีถลำ
+ถลึงตา
+ถลุง
+ถลุน
+ถ่วง
+ถ่วงดุล
+ถ่วงล้อ
+ถ้วน
+ถ้วนถี่
+ถ้วย
+ถ้วยตวง
+ถ้วยโถง
+ถ้วยรางวัล
+ถวัด
+ถวัดถวัน
+ถวัล
+ถวัลย์
+ถวาย
+ถวายกร
+ถวายตัว
+ถวายเนตร
+ถวายพระพร
+ถวายหัว
+ถวิน
+ถวิล
+ถ่อ
+ถ้อ
+ถอก
+ถอง
+ถ่อง
+ถ้อง
+ถ่องแถว
+ถ่องแท้
+ถอด
+ถอดเขี้ยวถอดเล็บ
+ถอดความ
+ถอดถอน
+ถอดไพ่
+ถอดรหัส
+ถอดรูป
+ถอดสี
+ถอดหัวโขน
+ถ้อถอย
+ถ้อถ้อย
+ถอน
+ถอนเงิน
+ถอนใจใหญ่
+ถอนต้นก่นราก
+ถอนทุน
+ถอนพิษ
+ถอนยวง
+ถอนรากถอนโคน
+ถอนสมอ
+ถอนสายบัว
+ถอนหงอก
+ถอบ
+ถอบแถบ
+ถ่อม
+ถ่อมตัว
+ถอย
+ถ่อย
+ถ้อย
+ถอยกรูด
+ถ้อยความ
+ถ้อยคำ
+ถอยใจใหญ่
+ถอยฉะ
+ถอยฉาก
+ถอยถด
+ถ้อยแถลง
+ถอยทด
+ถอยทัพ
+ถ้อยทีถ้อยปฏิบัติต่อกัน
+ถ้อยทีถ้อยอาศัยกัน
+ถอยหลัง
+ถอยหลังเข้าคลอง
+ถะ
+ถะกัด
+ถะเกิน
+ถะโกน
+ถะถั่น
+ถะถับ
+ถะถุนถะถัน
+ถะมัดถะแมง
+ถัก
+ถัง
+ถั่ง
+ถั่งถ้อย
+ถัณฑิล
+ถัณฑิล-
+ถัณฑิลสายี
+ถัด
+ถัทธ
+ถัน
+ถั่น
+ถั่นๆ
+ถับ
+ถับๆ
+ถัมภ์
+ถัว
+ถั่ว
+ถั่วขาว
+ถั่วคร้า
+ถั่วค้าง
+ถั่วงอก
+ถั่วดำ
+ถั่วนา
+ถั่วแปบ
+ถั่วแปบช้าง
+ถั่วฝักยาว
+ถั่วพร้า
+ถั่วพู
+ถั่วเพาะ
+ถั่วแม่ตาย
+ถั่วแระ
+ถั่วเหลือง
+ถา
+ถ้า
+ถาก
+ถากถาง
+ถาง
+ถ่าง
+ถ่างตา
+ถาด
+ถาโถม
+ถาน
+ถ่าน
+ถ่านโค้ก
+ถ่านไฟเก่า
+ถ่านไฟฉาย
+ถ่านไฟแช็ก
+ถ่านหิน
+ถาบ
+ถาม
+ถามค้าน
+ถามติง
+ถามไถ่
+ถามนำ
+ถามปากคำ
+ถามะ
+ถ่าย
+ถ่ายเดียว
+ถ่ายทอด
+ถ่ายทุกข์
+ถ่ายเท
+ถ่ายแบบ
+ถ่ายปัสสาวะ
+ถ่ายภาพยนตร์
+ถ่ายยา
+ถ่ายรูป
+ถ่ายอุจจาระ
+ถ่าว
+ถาวร
+ถาวร-
+ถาวรธิรา
+ถาวรวัตถุ
+ถ้าว่า
+ถ้าหากว่า
+ถ้ำ
+ถ้ำชา
+ถ้ำมอง
+ถ้ำยาดม
+ถิ่น
+ถิร-
+ถี
+ถี่
+ถี่ๆ
+ถี่ถ้วน
+ถี่เท้า
+ถีน-
+ถีบ
+ถีบกระดาน
+ถีบจักร
+ถีบจักรยาน
+ถีบฉัด
+ถีบตัว
+ถีบทาง
+ถีบรถ
+ถีบหัวส่ง
+ถี่ยิบ
+ถี่ลอดตาช้าง ห่างลอดตาเล็น
+ถึก
+ถึง
+ถึงกัน
+ถึงแก่กรรม
+ถึงแก่น
+ถึงแก่พิราลัย
+ถึงแก่มรณภาพ
+ถึงแก่อนิจกรรม
+ถึงแก่อสัญกรรม
+ถึงขนาด
+ถึงคราว
+ถึงฆาต
+ถึงเงิน
+ถึงใจ
+ถึงชีพิตักษัย
+ถึงชีวิตันตราย
+ถึงที่
+ถึงเป็นถึงตาย
+ถึงผ้า
+ถึงพริกถึงขิง
+ถึงลูกถึงคน
+ถึงว่า
+ถึงไหนถึงกัน
+ถือ
+ถือกำเนิด
+ถือโกรธ
+ถือเขาถือเรา
+ถือใจ
+ถือดี
+ถือตัว
+ถือท้าย
+ถือน้ำพระพิพัฒน์สัตยา
+ถือบวช
+ถือบังเหียน
+ถือปูน
+ถือผิว
+ถือพล
+ถือยศ
+ถือยศถือศักดิ์
+ถือเราถือเขา
+ถือว่า
+ถือศักดินา
+ถือศีล
+ถือสา
+ถือสิทธิ์
+ถือหาง
+ถือโอกาส
+ถุง
+ถุงเค้า
+ถุงตะเครียว
+ถุงตะเคียว
+ถุงย่าม
+ถุงสำเร็จ
+ถุน
+ถุย
+ถุล-
+ถุลละ
+ถู
+ถูก
+ถูกกระทำ
+ถูกกัน
+ถูกขา
+ถูกคอ
+ถูกคู่
+ถูกใจ
+ถูกโฉลก
+ถูกชะตา
+ถูกตา
+ถูกน้อย
+ถูกปาก
+ถูกส่วน
+ถูกเส้น
+ถูกใหญ่
+ถูกอกถูกใจ
+ถูไถ
+ถูป-
+ถูปารหบุคคล
+ถูล-
+ถูลู่ถูกัง
+เถกิง
+เถน
+เถมิน
+เถมินเชิง
+เถมินไพร
+เถย-
+เถยจิต
+เถยเจตนา
+เถยสังวาส
+เถร
+เถร-
+เถรตรง
+เถรภูมิ
+เถรวาท
+เถรส่องบาตร
+เถระ
+เถรานุเถระ
+เถรี
+เถลไถล
+เถลิก
+เถลิง
+เถลิงศก
+เถลือกถลน
+เถ่อ
+เถอะ
+เถอะน่า
+เถะๆ
+เถา
+เถ้า
+เถ้าแก่
+เถาคัน
+เถาคันเหล็ก
+เถาเงาะ
+เถาดาน
+เถามวก
+เถ้ารึง
+เถาวัลย์
+เถาวัลย์กรด
+เถาวัลย์เขียว
+เถาวัลย์ปูน
+เถาวัลย์เปรียง
+เถาวัลย์ยอดด้วน
+เถาวัลย์เหล็ก
+เถาสิงโต
+เถาหัวด้วน
+เถาะ
+เถิก
+เถิง
+เถิด
+เถิดเทิง
+เถิดน่า
+เถิน
+เถียง
+เถียร
+เถือ
+เถือก
+เถื่อน
+แถ
+แถก
+แถง
+แถน
+แถบ
+แถบบันทึกภาพ
+แถบบันทึกเสียง
+แถบเหล็กพืด
+แถม
+แถมพก
+แถลง
+แถลงการณ์
+แถลงการณ์ร่วม
+แถลงข่าว
+แถลบ
+แถว
+โถ
+โถเครื่องแป้ง
+โถง
+โถงเถง
+โถบ
+โถปริก
+โถม
+โถมนาการ
+โถส้วม
+ไถ
+ไถ่
+ไถ้
+ไถกลบ
+ไถง
+ไถดะ
+ไถ่ถอน
+ไถ่ถาม
+ไถนา
+ไถ่บาป
+ไถแปร
+ไถย-
+ไถล
+ท
+ทก
+ทกล้า
+ทแกล้ว
+ท่ง
+ทงัน
+ทชี
+ทด
+ทดถอย
+ทดแทน
+ทดโทร่ห
+ทดรอง
+ทดลอง
+ทดเลข
+ทดสอบ
+ทท
+ทธิ
+ทน
+ท้น
+ทนดี
+ทนต-
+ทนต์
+ทนตกาษฐ์
+ทนทาน
+ทนโท่
+ทนม
+ทนาย
+ทนายความ
+ทนายเรือน
+ทนายเลือก
+ทนายหน้าหอ
+ทบ
+ทบทวน
+ทบวง
+ทบวงการ
+ทบวงการเมือง
+ทม
+ทมก
+ทมน
+ทมบ
+ทมอ
+ทมิฬ
+ทเมิน
+ทโมน
+ทยอย
+ทยา
+ทยาลุ
+ทยาลุก
+ทแยง
+ทแยงมุม
+ทร-
+ทรกรรม
+ทรง
+ทรงกระเทียม
+ทรงกลด
+ทรงข้าวบิณฑ์
+ทรงเครื่อง
+ทรงเครื่องใหญ่
+ทรงเจ้า
+ทรงเจ้าเข้าผี
+ทรงตัก
+ทรงบาดาล
+ทรงประพาส
+ทรงพระเครื่องใหญ่
+ทรงมัณฑ์
+ทรงลังกา
+ทรงหม้อตาล
+ทรชน
+ทรชาติ
+ทรทึง
+ทรธึก
+ทรพล
+ทรพิษ
+ทรพี
+ทรภิกษ์
+ทรมาทรกรรม
+ทรมาน
+ทรมุก
+ทรยศ
+ทรยุค
+ทรรทึง
+ทรรป
+ทรรปณ์
+ทรรปณะ
+ทรรศนะ
+ทรรศนาการ
+ทรรศนีย์
+ทรราช
+ทรลักษณ์
+ทรเล่ห์
+ทรวง
+ทรวด
+ทรวดทรง
+ทรวาร
+ทรสองทรสุม
+ทรสาย
+ทรสุม
+ทรหด
+ทรหน
+ทรหวล
+ทรหึง
+ทรหึงทรหวล
+ทรหู
+ทรเหล
+ทรอ
+ทรอมโบน
+ทรอึง
+ทรอุ้ม
+ทระนง
+ทระนาว
+ทรัพย-
+ทรัพย์
+ทรัพย์นอกพาณิชย์
+ทรัพย์ในดิน สินในน้ำ
+ทรัพย์สมบัติ
+ทรัพยสิทธิ
+ทรัพย์สิน
+ทรัพย์สินส่วนพระมหากษัตริย์
+ทรัพย์สินส่วนพระองค์
+ทรัพย์สินส่วนสาธารณสมบัติของแผ่นดิน
+ทรัพยากร
+ทรัพยากรธรณี
+ทรัพยากรธรรมชาติ
+ทรัมเป็ต
+ทรานซิสเตอร์
+ทราบ
+ทราบเกล้าทราบกระหม่อม
+ทราบฝ่าพระบาท
+ทราบฝ่าละอองธุลีพระบาท
+ทราบฝ่าละอองพระบาท
+ทราม
+ทรามชม
+ทรามเชย
+ทรามวัย
+ทรามสงวน
+ทรามสวาท
+ทราย
+ทรายแก้ว
+ทรายขาว
+ทรายแป้ง
+ทริทร
+ทรุด
+ทรุดโทรม
+ทรุดนั่ง
+ทรุม
+ทรู่
+ทฤฆ-
+ทฤษฎี
+ทฤษฎีบท
+ทล
+ทลบม
+ทลอึง
+ทลาย
+ทลิท
+ทลิททก
+ทวง
+ท้วง
+ท้วงติง
+ทวงถาม
+ท่วงท่า
+ท่วงทำนอง
+ท่วงที
+ทวด
+ทวดน้อย
+ทวดึงส์
+ทวน
+ท้วน
+ทวนทบ
+ทวนสบถ
+ทวนสาบาน
+ท่วม
+ท้วม
+ท้วมๆ
+ท่วมท้น
+ทวย
+ท่วย
+ท้วย
+ทวยโถง
+ท่วยโถง
+ทวยะ
+ทวอย
+ทวัตดึงส์
+ทวัตดึงสาการ
+ทวัย
+ทวา
+ทว่า
+ทวาตรึงประดับ
+ทวาทศ
+ทวาทศม-
+ทวาทศมณฑล
+ทวาทศี
+ทวาบร
+ทวาบรยุค
+ทวาย
+ทวาร
+ทวารทั้งเก้า
+ทวารบถ
+ทวารบาล
+ทวารประดับ
+ทวิ
+ทวิช
+ทวิช-
+ทวิชงค์
+ทวิชากร
+ทวิชาติ
+ทวิตีย
+ทวิตียา
+ทวิบถ
+ทวิบท
+ทวิบาท
+ทวิป
+ทวิภาค
+ทวิภาคี
+ทวิร
+ทวี
+ทวีคูณ
+ทวีธาภิเษก
+ทวีป
+ทวีปี
+ทศ
+ทศ-
+ทศชาติ
+ทศทิศ
+ทศนิยม
+ทศเบญจกูล
+ทศพร
+ทศพล
+ทศพิธราชธรรม
+ทศม-
+ทศมาส
+ทศมี
+ทศวรรษ
+ทศา
+ทศางค์
+ทสา
+ทหระ
+ทหาร
+ทหารกองประจำการ
+ทหารผ่านศึก
+ทหารเลว
+ทอ
+ท่อ
+ท้อ
+ทอก
+ทอง
+ท่อง
+ท้อง
+ทองกร
+ทองกวาว
+ท้องกาง
+ท้องแก่
+ทองขาว
+ท้องขาว
+ท้องขึ้น
+ท้องขึ้นท้องพอง
+ท้องแขน
+ท้องแขวน
+ท้องคัดท้องแข็ง
+ทองคำ
+ทองคำขาว
+ทองคำเปลว
+ท้องคุ้ง
+ทองเค
+ทองเครือ
+ท่องจำ
+ท้องฉนวน
+ทองชมพูนุท
+ทองชุบ
+ทองดอกบวบ
+ทองดำ
+ท้องเดิน
+ทองแดง
+ทองต้นแขน
+ท้องตรา
+ท้องตลาด
+ทองตากู
+ท้องถิ่น
+ทองทราย
+ทองทศ
+ท้องที่
+ทองทึบ
+ท่องเที่ยว
+ทองธรรมชาติ
+ทองนพคุณ
+ท้องน่อง
+ท้องน้อย
+ทองบรอนซ์
+ท้องแบน
+ทองใบ
+ทองปราย
+ทองปลายแขน
+ท้องปลิง
+ทองแป
+ท้องผุท้องพัง
+ท้องผูก
+ทองเผือก
+ทองแผ่นเดียวกัน
+ทองพระกร
+ทองพระขุน
+ท้องพระคลัง
+ท้องพระโรง
+ทองพลุ
+ท้องพลุ
+ท้องพอง
+ทองพัดดึงส์
+ทองพันชั่ง
+ทองพันดุล
+ทองพิศ
+ท้องเฟ้อ
+ทองภู
+ทองม้วน
+ท้องมาน
+ท้องไม้
+ทองไม่รู้ร้อน
+ทองย้อย
+ท้องยุ้งพุงกระสอบ
+ท้องร่วง
+ท้องร่อง
+ทองรูปพรรณ
+ท้องเรื่อง
+ท้องลาน
+ทองลิน
+ท้องเลว
+ทองแล่ง
+ทองวิทยาศาสตร์
+ทองสักโก
+ทองสัมฤทธิ์
+ท้องสาว
+ท้องสำนวน
+ท่องสื่อ
+ท้องเสีย
+ทองหมั้น
+ท้องหมา
+ท้องหมู
+ทองหยอง
+ทองหยอด
+ทองหยิบ
+ทองหลาง
+ทองเหลือง
+ท้องแห้ง
+ทองโหลง
+ทองอังกฤษ
+ท้องอัสดงคต
+ท้องอืด
+ทองอุไร
+ทองเอก
+ทอด
+ทอดกฐิน
+ทอดโกลน
+ทอดตัว
+ทอดตา
+ทอดทฤษฎี
+ทอดทิ้ง
+ทอดที่
+ทอดน่อง
+ทอดน้ำ
+ทอดผ้าป่า
+ทอดพระที่
+ทอดพระเนตร
+ทอดมัน
+ทอดยอด
+ทอดรวง
+ทอดสกา
+ทอดสมอ
+ทอดสะพาน
+ทอดสายตา
+ทอดเสียง
+ทอดหญ้า
+ทอดหุ่ย
+ทอดแห
+ทอดอาลัย
+ท่อถ้อย
+ท้อถอย
+ท้อถ้อย
+ท้อแท้
+ทอน
+ท่อน
+ทอนซิล
+ทอฟฟี่
+ท่อมๆ
+ทอย
+ทอยกอง
+ทอเรียม
+ทอแสง
+ทอหูก
+ท่อไอเสีย
+ทะ
+ทะงัน
+ทะทัด
+ทะทา
+ทะทาย
+ทะท่าว
+ทะท้าว
+ทะทึก
+ทะเทียด
+ทะนง
+ทะนงตัว
+ทะนงศักดิ์
+ทะนน
+ทะนะ
+ทะนา
+ทะนาน
+ทะนานหลวง
+ทะนุ
+ทะนุก
+ทะนุกถนอม
+ทะนุถนอม
+ทะนุบำรุง
+ทะบู
+ทะเบียน
+ทะเบียนบ้าน
+ทะเบียนราษฎร
+ทะเบียนสำมะโนครัว
+ทะมัดทะแมง
+ทะมึน
+ทะมื่น
+ทะแม่ง
+ทะแม่งๆ
+ทะยาทะแยแส
+ทะยาน
+ทะยานใจ
+ทะยานอยาก
+ทะเยอทะยาน
+ทะแย
+ทะแยสามชั้น
+ทะร่อทะแร่
+ทะลวง
+ทะลอก
+ทะลัก
+ทะลักทะแลง
+ทะลาย
+ทะลิ่น
+ทะลิ่นชระลั่ง
+ทะลึ่ง
+ทะลึ่งทะลั่ง
+ทะลุ
+ทะลุกลางปล้อง
+ทะลุดทะลาด
+ทะลุปรุโปร่ง
+ทะเล
+ทะเลทราย
+ทะเล้น
+ทะเลใน
+ทะเลบ้า
+ทะเลภายใน
+ทะเลสาบ
+ทะเลหน้าใน
+ทะเลหลวง
+ทะเลไหล่ทวีป
+ทะเล่อทะล่า
+ทะเลอาณาเขต
+ทะเลาะ
+ทะเลาะเบาะแว้ง
+ทะวาย
+ทะเวน
+ทัก
+ทักข์
+ทักขิญ
+ทักขิณ
+ทักขิณา
+ทักขิณาบถ
+ทักขิณาวัฏ
+ทักขิโณทก
+ทักขิไณยบุคคล
+ทักท้วง
+ทักทาย
+ทักทิน
+ทักนิมิต
+ทักษ-
+ทักษะ
+ทักษา
+ทักษิณ
+ทักษิณนิกาย
+ทักษิณา
+ทักษิณาจาร
+ทักษิณาทาน
+ทักษิณานุประทาน
+ทักษิณายัน
+ทักษิณาวรรต
+ทักษิโณทก
+ทัคธ์
+ทัง
+ทั่ง
+ทั้ง
+ทั้ง...กับ
+ทั้งขึ้นทั้งล่อง
+ทั้งคน
+ทั้งดุ้น
+ทั้ง...ทั้ง
+ทั้งที
+ทั้งที่
+ทั้งๆ ที่
+ทั้งนั้น
+ทั้งนี้
+ทั้งนี้ทั้งนั้น
+ทั้งเนื้อทั้งตัว
+ทั้งปวง
+ทั้งผอง
+ทั้งเพ
+ทั้งมวล
+ทั้ง...และ
+ทังวล
+ทังวี้ทังวล
+ทังสเตน
+ทั้งสิ้น
+ทั้งหมด
+ทั้งหลาย
+ทั้งอย่างนั้น
+ทัณฑ-
+ทัณฑ์
+ทัณฑกรรม
+ทัณฑฆาต
+ทัณฑนิคม
+ทัณฑ์บน
+ทัณฑวิทยา
+ทัณฑสถาน
+ทัณฑะ
+ทัณฑิกา
+ทัณฑิมา
+ทัณฑีบท
+ทัด
+ทัดดอกไม้
+ทัดทา
+ทัดทาน
+ทัดเทียม
+-ทัต
+ทัน
+ทันกิน
+ทันควัน
+ทันใจ
+ทันใด
+ทันต-
+ทันต์
+ทันตชะ
+ทันตแพทย์
+ทันตา
+ทันติน
+ทันตี
+ทันท่วงที
+ทันที
+ทันธ์
+ทันน้ำ
+ทันน้ำทันฝน
+ทันสมัย
+ทับ
+ทับเกษตร
+ทับถม
+ทับทรวง
+ทับทาง
+ทับทางขาว
+ทับทิม
+ทับที่
+ทับแพ
+ทับลัคน์
+ทับเล็ก
+ทับศัพท์
+ทับสมิงคลา
+ทับสิทธิ์
+ทับหลัง
+ทับหลังลัคน์
+ทัป
+ทัปน
+ทัพ
+ทัพพะ
+ทัพพี
+ทัพสัมภาระ
+ทั่ว
+ทั่วถึง
+ทั่วทุกสารทิศ
+ทั่วทุกหัวระแหง
+ทั่วไป
+ทั่วๆ ไป
+ทัศ
+ทัศน-
+ทัศน์
+ทัศนคติ
+ทัศนวิสัย
+ทัศนศาสตร์
+ทัศนศึกษา
+ทัศนะ
+ทัศนา
+ทัศนาการ
+ทัศนาจร
+ทัศนีย-
+ทัศนีย์
+ทัศนียภาพ
+ทัศนูปกรณ์
+ทัศไนย
+ทัสนานุตริยะ
+ทัฬห
+ทัฬหิ
+ทัฬหิกรณ์
+ทัฬหี
+ทัฬหีกรรม
+ทา
+ท่า
+ท้า
+ทาก
+ทาง
+ท้าง
+ทางการ
+ทางเก็บ
+ทางข้าม
+ทางช้างเผือก
+ทางด่วน
+ทางเท้า
+ทางโท
+ทางใน
+ทางผ่าน
+ทางพิเศษ
+ทางมะพร้าว
+ทางม้าลาย
+ทางสาธารณะ
+ทางหลวง
+ทางออก
+ทางเอก
+ทาฐะ
+ทาฐิกะ
+ทาฒะ
+ทาฒิกะ
+ท่าดีทีเหลว
+ท่าเดียว
+ท่าทาง
+ท้าทาย
+ท่าที
+ทาน
+ทาน-
+ท่าน
+ทานกัณฑ์
+ท่านชาย
+ทานต์
+ทานตะวัน
+ทานบดี
+ทานบารมี
+ท่านผู้หญิง
+ทานพ
+ทานมัย
+ทานศีล
+ท่านหญิง
+ท่านั้นท่านี้
+ทานาธิบดี
+ทาบ
+ทาบทาม
+ทาม
+ท่ามกลาง
+ทาย
+ท้าย
+ทายก
+ท้ายเขื่อน
+ท้ายครัว
+ท้ายโต่ง
+ท้ายทอย
+ท้ายน้ำ
+ท้ายฝน
+ทายัช
+ทายา
+ทายาด
+ทายาท
+ทายาทโดยธรรม
+ทาร-
+ทารก
+ทารพี
+ทาริกา
+ทารุ
+ทารุณ
+ทารุณ-
+ทารุณกรรม
+ท่าเรือ
+ทาว
+ท่าว
+ท้าว
+ท่าวกำลัง
+ท่าวทบระนับ
+ท้าวนาง
+ท้าวพญา
+ท้าวพระยา
+ทาษ
+ทาส
+ทาส-
+ทาสทาน
+ทาสปัญญา
+ทาสี
+ท่าอากาศยาน
+ทำ
+ทำกรรม
+ทำการบ้าน
+ทำขวัญ
+ทำครัว
+ทำคลอด
+ทำความ
+ทำคุณ
+ทำคุณบูชาโทษ
+ทำงน
+ทำเจ็บ
+ทำใจ
+ทำได้
+ทำได้ลงคอ
+ทำตัว
+ทำตา
+ทำท่า
+ทำที
+ทำแท้ง
+ทำโทษ
+ทำนบ
+ทำนวย
+ทำนอง
+ทำนองเสนาะ
+ทำนาบนหลังคน
+ทำนาย
+ทำนาออมกล้า ทำปลาออมเกลือ
+ทำนุ
+ทำนุบำรุง
+ทำนูล
+ทำเนา
+ทำเนียบ
+ทำเนียบท่าเรือ
+ทำเนียบนาม
+ทำเนียม
+ทำบาป
+ทำบุญ
+ทำบุญเอาหน้า
+ทำปลา
+ทำปากทำคอ
+ทำเป็น
+ทำไปทำมา
+ทำพิษ
+ทำไพ่
+ทำฟัน
+ทำไฟ
+ทำมัง
+ทำไม
+ทำร้าย
+ทำฤทธิ์
+ทำลาย
+ทำลายขวัญ
+ทำลายสถิติ
+ทำลิง
+ทำเล
+ทำวน
+ทำวัตร
+ทำวัตรค่ำ
+ทำวัตรเช้า
+ทำเวร
+ทำเวลา
+ทำสาว
+ทำเสน่ห์
+ทำเสียเจ็บ
+ทำหน้าทำตา
+ทำหมัน
+ทำหูทวนลม
+ทำเหตุ
+ทำให้
+ทำเอา
+ทำเอาเจ็บ
+ทิคัมพร
+ทิฆัมพร
+ทิ้ง
+ทิ้งกระจาด
+ทิ้งขว้าง
+ทิ้งๆ ขว้างๆ
+ทิ้งจดหมาย
+ทิงเจอร์
+ทิ้งถ่อน
+ทิ้งทวน
+ทิ้งทาน
+ทิ้งท้าย
+ทิ้งทูด
+ทิ้งไพ่
+ทิ้งฟ้อง
+ทิ้งมะพร้าวห้าว
+ทิ้งย่อ
+ทิช
+ทิช-
+ทิชากร
+ทิฏฐะ
+ทิฏฐานุคติ
+ทิฏฐุชุกรรม
+ทิฐ-
+ทิฐธรรม
+ทิฐิ
+ทิด
+ทิต
+ทิน
+ทิน-
+ทินกร
+ทินศูนย์
+ทินาท
+ทิพ
+ทิพ-
+ทิพย-
+ทิพย์
+ทิพยจักษุ
+ทิพยจักษุญาณ
+ทิพยญาณ
+ทิพยเนตร
+ทิพยพยาน
+ทิพยมานุษ
+ทิพยรส
+ทิพยโศรตร
+ทิพโสต
+ทิพา
+ทิพากร
+ทิม
+ทิ่ม
+ทิมดาบ
+ทิ่มตำ
+ทิมทอง
+ทิ่มแทง
+ทิว
+ทิว-
+ทิวกาล
+ทิวงคต
+ทิวทัศน์
+ทิวส-
+ทิวสภาค
+ทิวสะ
+ทิวา
+ทิวากร
+ทิวากาล
+ทิศ
+ทิศทาง
+ทิศา
+ทิศาดร
+ทิศานุทิศ
+ทิศาปาโมกข์
+ที
+ที่
+ที่กัลปนา
+ทีใครทีมัน
+ทีฆ-
+ทีฆชาติ
+ทีฆนิกาย
+ทีฆสระ
+ทีฆายุ
+ที่จริง
+ที่ดิน
+ที่ดินมือเปล่า
+ทีเด็ด
+ทีเดียว
+ทีท่า
+ที่ทาง
+ที่ทำการ
+ที่เท่าแมวดิ้นตาย
+ที่แท้
+ที่ธรณีสงฆ์
+ที่นอน
+ที่นั่ง
+ทีนี้
+ทีป
+ที่พึ่ง
+ทีม
+ที่มั่น
+ที่มา
+ทีรฆ-
+ที่รัก
+ที่ราบ
+ที่ราบสูง
+ทีเล่นทีจริง
+ที่วัด
+ที่ว่าการ
+ที่สุด
+ที่หมาย
+ทีหลัง
+ที่ไหน
+ที่ไหนได้
+ทีเอ็นที
+ทึก
+ทึกทัก
+ทึ่ง
+ทึ้ง
+ทึดทือ
+ทึนทึก
+ทึบ
+ทึม
+ทึมๆ
+ทึ่ม
+ทื่อ
+ทุ
+ทุก
+ทุกๆ
+ทุกข-
+ทุกข์
+ทุกขนิโรธ
+ทุกขลาภ
+ทุกขเวทนา
+ทุกขสมุทัย
+ทุกข์สุข
+ทุกขักษัย
+ทุกขารมณ์
+ทุกฏ
+ทุกที
+ทุกนิบาต
+ทุกพาย
+ทุกเมื่อ
+ทุกเมื่อเชื่อวัน
+ทุกร-
+ทุกรกิริยา
+ทุกวันนี้
+ทุกษดร
+ทุกสิ่งทุกอย่าง
+ทุกหน
+ทุกหนทุกแห่ง
+ทุกหย่อมหญ้า
+ทุกหัวระแหง
+ทุกแห่ง
+ทุกะ
+ทุกัง
+ทุกูล
+ทุคตะ
+ทุคติ
+ทุ่ง
+ทุ้ง
+ทุงงะ
+ทุงเทง
+ทุจจิณณะ
+ทุจริต
+ทุด
+ทุตวิลัมพิตมาลา
+ทุติย-
+ทุติยาสาฬห
+ทุทรรศนนิยม
+ทุน
+ทุ่น
+ทุนจดทะเบียน
+ทุนทรัพย์
+ทุนนอน
+ทุนนิมิต
+ทุนนิยม
+ทุ่นเบ็ด
+ทุนรอน
+ทุ่นระเบิด
+ทุนเรือนหุ้น
+ทุนสำรอง
+ทุนสำรองเงินตรา
+ทุนหมุนเวียน
+ทุ่นอวน
+ทุนิยม
+ทุบ
+ทุบตี
+ทุบทู
+ทุบหม้อข้าว
+ทุปปัญญา
+ทุพพรรณ
+ทุพพล
+ทุพพลภาพ
+ทุพภิกขภัย
+ทุพภิกขันดรกัป
+ทุม
+ทุม-
+ทุ่ม
+ทุ้ม
+ทุ่มตลาด
+ทุ่มเถียง
+ทุ่มเท
+ทุมโน
+ทุมราชา
+ทุย
+ทุ้ย
+ทุร-
+ทุรกันดาร
+ทุรคม
+ทุรชน
+ทุรชาติ
+ทุรน
+ทุรนทุราย
+ทุรพล
+ทุรภิกษ์
+ทุรลักษณ์
+ทุรัถยา
+ทุรัศ
+ทุราคม
+ทุราจาร
+ทุราธวา
+ทุเรศ
+ทุเรียน
+ทุเรียนแขก
+ทุเรียนเทศ
+ทุลักทุเล
+ทุเลา
+ทุวิธ
+ทุศีล
+ทุษฐ-
+ทุส-
+ทุสสะ
+ทุสสีล
+ทู
+ทู่
+ทู้
+ทูกัง
+ทู่ซี้
+ทูต
+ทูตานุทูต
+ทูน
+ทูน้ำจืด
+ทูบ
+ทูม
+ทูมทาม
+ทูโม่ง
+ทูร-
+ทูล
+ทูลกระหม่อม
+ทูลเกล้าทูลกระหม่อมถวาย
+ทูเลียม
+ทูษก
+เท
+เท่
+เทกระจาด
+เทกระเป๋า
+เทคนิค
+เทคนีเชียม
+เทคโนโลยี
+เทครัว
+เทคอนกรีต
+เทง
+เท้ง
+เท้งเต้ง
+เท้งทูด
+เท็จ
+เท็จจริง
+เท็จเทียม
+เทนนิส
+เทน้ำเทท่า
+เทปูน
+เทพ
+เทพ-
+เทพกุสุม
+เทพเจ้า
+เทพชุมนุม
+เทพดา
+เทพดำรู
+เทพทัณฑ์
+เทพทารู
+เทพทาโร
+เทพธิดา
+เทพนม
+เทพนารี
+เทพนิยม
+เทพนิยาย
+เทพนิยายวิทยา
+เทพนิรมิต
+เทพบดี
+เทพบริษัท
+เทพบุตร
+เทพประติมา
+เทพพยากรณ์
+เทพย-
+เทพยเจ้า
+เทพยดา
+เทพยุดา
+เทพสังหรณ์
+เทพา
+เทพาดิเทพ
+เทพาธิบดี
+เทพารักษ์
+เทพิน
+เทพินทร์
+เทพี
+เทพีปักษี
+เทเพนทร์
+เทโพ
+เทริด
+เทลลูเรียม
+เทว-
+เทวดา
+เทวทัณฑ์
+เทวทูต
+เทวธรรม
+เทวธิดา
+เทวนะ
+เทวนาครี
+เทวนิยม
+เทวภาวะ
+เทวระ
+เทวรูป
+เทวโลก
+เทววาจิกะ
+เทววิทยา
+เทวศ
+เทวษ
+เทวสถาน
+เทวสุคนธ์
+เทวอ
+เทวัญ
+เทวัน
+เทวาคาร
+เทวารัณย์
+เทวาลัย
+เทวาวาส
+เทวินทร์
+เทวี
+เทเวนทร์
+เทเวศ
+เทเวศร์
+เทเวศวร์
+เทศ
+เทศ-
+เทศก
+เทศกาล
+เทศน์
+เทศน์แจง
+เทศนา
+เทศบัญญัติ
+เทศบาล
+เทศมนตรี
+เทศะ
+เทศาจาร
+เทศาภิบาล
+เทห-
+เทห์
+เท่ห์
+เทห์ฟากฟ้า
+เทหวัตถุ
+เท่อ
+เท้อ
+เทอญ
+เทอม
+เทอร์เบียม
+เทอร์โมมิเตอร์
+เทอะทะ
+เทา
+เท่า
+เท้า
+เท่ากับ
+เท้าแขน
+เท้าคู้
+เท้าช้าง
+เท่าใด
+เท่าตัว
+เท่าทัน
+เท่าทุน
+เท่าเทียม
+เท่านั้น
+เท่าเผ้า
+เท้ายายม่อม
+เท่ารึง
+เท่าไร
+เท้าสาน
+เท้าสิงห์
+เทาะห์
+เทิก
+เทิ่ง
+เทิงบอง
+เทิด
+เทิดทูน
+เทิน
+เทิบ
+เทิบๆ
+เทิบทาบ
+เทิ้ม
+เทียง
+เที่ยง
+เที่ยงๆ
+เที่ยงตรง
+เที่ยงแท้
+เที่ยงธรรม
+เทียน
+เที้ยน
+เทียนกิ่ง
+เทียนเกล็ดหอย
+เทียนแกลบ
+เทียนขม
+เทียนขาว
+เทียนข้าวเปลือก
+เทียนดำ
+เทียนแดง
+เทียนตากบ
+เทียนตาตั๊กแตน
+เทียนบ้าน
+เทียนพรรษา
+เทียนเยาวพาณี
+เทียนรุ่ง
+เทียนลวด
+เทียนสัตตบุษย์
+เทียนอบ
+เทียบ
+เทียบเคียง
+เทียบเท่า
+เทียม
+เทียร
+เที้ยร
+เทียรฆ-
+เทียรฆชาติ
+เทียรฆราตร
+เทียว
+เที่ยว
+เทือ
+เทื่อ
+เทื้อ
+เทือก
+เทือกเขา
+เทือกเถาเหล่ากอ
+เทือน
+แท่
+แท้
+แท้ๆ
+แท็กซี่
+แท็กซี่มิเตอร์
+แทง
+แท่ง
+แท้ง
+แท็งก์น้ำ
+แทงใจ
+แทงใจดำ
+แทงตะไบ
+แทงทวย
+แทงวิสัย
+แทงหยวก
+แท้จริง
+แทตย์
+แท้ที่จริง
+แทน
+แท่น
+แทนเจนต์
+แทนทาลัม
+แทนที่จะ
+แท่นพิมพ์
+แท่นมณฑล
+แท่นลา
+แท่นหมึก
+แทบ
+แทรก
+แทรกซอน
+แทรกซ้อน
+แทรกซึม
+แทรกแซง
+แทรกเตอร์
+แทรกแผ่นดิน
+แทรกโพน
+แทลเลียม
+แทะ
+แทะโลม
+โท
+โท่
+โทกเทก
+โทงๆ
+โทงเทง
+โทณะ
+โทโทษ
+โทธก
+โทน
+โทนโท่
+โทมนัส
+โทร-
+โทรคมนาคม
+โทรทรรศน์
+โทรทัศน์
+โทรพิมพ์
+โทรภาพ
+โทรม
+โทรมศัสตราวุธ
+โทรมหญิง
+โทรเลข
+โทรศัพท์
+โทรสาร
+โทลา
+โทศก
+โทษ
+โทษ-
+โทษกรณ์
+โทษตรัย
+โทษทางวินัย
+โทษโพย
+โทษา
+โทษากร
+โทษาดิลก
+โทษานุโทษ
+โทษารมณ์
+โทส-
+โทสะ
+โทสาคติ
+โทโส
+โทหฬะ
+โทหฬินี
+ไท
+ไท้
+ไทเทเนียม
+ไทเทรต
+ไทย
+ไทยดำ
+ไทยทาน
+ไทยธรรม
+ไทยน้อย
+ไทยนับสาม
+ไทยนับห้า
+ไทยหลง
+ไทยหลวง
+ไทยใหญ่
+ไทร
+ไทรทอง
+ไทรเลียบ
+ไทวะ
+ธ
+ธง
+ธงก์
+ธงกระบี่ธุช
+ธงจระเข้
+ธงฉาน
+ธงชัย
+ธงชัยเฉลิมพลของทหารบก
+ธงชัยเฉลิมพลของทหารเรือ
+ธงชัยเฉลิมพลของทหารอากาศ
+ธงชาติ
+ธงชาย
+ธงตะขาบ
+ธงนำริ้ว
+ธงบรมราชวงศ์น้อย
+ธงบรมราชวงศ์ใหญ่
+ธงประจำกองทัพบก
+ธงประจำกองทัพเรือ
+ธงประจำกองทัพอากาศ
+ธงพระครุฑพ่าห์
+ธงพิทักษ์สันติราษฎร์
+ธงมหาราชน้อย
+ธงมหาราชใหญ่
+ธงเยาวราชน้อย
+ธงเยาวราชใหญ่
+ธงราชนาวี
+ธงราชินีน้อย
+ธงราชินีใหญ่
+ธงสามเหลี่ยม
+ธช
+ธชี
+ธตรฐ
+ธน
+ธน-
+ธนธานี
+ธนบดี
+ธนบัตร
+ธนสมบัติ
+ธนสาร
+ธนัง
+ธนาคม
+ธนาคาร
+ธนาคารพาณิชย์
+ธนาคารโลก
+ธนาคารออมสิน
+ธนาณัติ
+ธนิต
+ธนิษฐะ
+ธนิษฐา
+ธนุ
+ธนุร-
+ธนุรมารค
+ธนุรวิทยา
+ธนุรเวท
+ธนู
+ธนูศิลป์
+ธเนศ
+ธเนศวร
+ธโนปจัย
+ธไนศวรรย์
+ธม
+ธมกรก
+ธร
+ธรง
+ธรณ
+ธรณิน
+ธรณินทร์
+ธรณิศ
+ธรณิศร
+ธรณิศวร์
+ธรณี
+ธรณีกันแสง
+ธรณีประตู
+ธรณีมณฑล
+ธรณีร้องไห้
+ธรณีวิทยา
+ธรณีศวร
+ธรณีสงฆ์
+ธรณีสาร
+ธรณีสูบ
+ธรมาน
+ธรรม
+ธรรม-
+ธรรมกถา
+ธรรมกถึก
+ธรรมกาม
+ธรรมกาย
+ธรรมการ
+ธรรมการย์
+ธรรมเกษตร
+ธรรมขันธ์
+ธรรมคุณ
+ธรรมจรณะ
+ธรรมจรรยา
+ธรรมจริยา
+ธรรมจักร
+ธรรมจักษุ
+ธรรมจาคะ
+ธรรมจารี
+ธรรมจินดา
+ธรรมเจดีย์
+ธรรมชาติ
+ธรรมฐิติ
+ธรรมดา
+ธรรมทรรศนะ
+ธรรมธาดา
+ธรรมธาตุ
+ธรรมนาถ
+ธรรมนิตย์
+ธรรมนิยม
+ธรรมนิยาม
+ธรรมนิเวศ
+ธรรมนูญ
+ธรรมนูญการปกครองราชอาณาจักร
+ธรรมเนียม
+ธรรมเนียมประเพณี
+ธรรมบท
+ธรรมบาล
+ธรรมบิฐ
+ธรรมปฏิรูป
+ธรรมปฏิสัมภิทา
+ธรรมประติรูป
+ธรรมยุต
+ธรรมยุทธ์
+ธรรมรัตน์
+ธรรมราชา
+ธรรมวัตร
+ธรรมศาสตร์
+ธรรมสถิติ
+ธรรมสภา
+ธรรมสรีระ
+ธรรมสังคีติ
+ธรรมสังเวช
+ธรรมสากัจฉา
+ธรรมสามิสร
+ธรรมสามี
+ธรรมสาร
+ธรรมะ
+ธรรมะธัมโม
+ธรรมันเตวาสิก
+ธรรมาทิตย์
+ธรรมาธรรม
+ธรรมาธิปไตย
+ธรรมาธิษฐาน
+ธรรมานุธรรมปฏิบัติ
+ธรรมานุสาร
+ธรรมาภิมุข
+ธรรมาภิสมัย
+ธรรมายตนะ
+ธรรมารมณ์
+ธรรมาสน์
+ธรรมิก
+ธรรมิก-
+ธรา
+ธราดล
+ธราธร
+ธราธาร
+ธราธิบดี
+ธราธิป
+ธริษตรี
+ธเรศ
+ธเรษตรี
+ธเรษตรีศวร
+ธวัช
+ธังก
+ธัช
+ธัญ
+ธัญ-
+ธัญโกศ
+ธัญเขต
+ธัญชาติ
+ธัญญาหาร
+ธัญดัจ
+ธัญเบญจก
+ธัญพืช
+ธัญมาส
+ธันยา
+ธันยาวาท
+ธันวาคม
+ธัมมะ
+ธาดา
+ธาตรี
+ธาตวากร
+ธาตุ
+ธาตุ-
+ธาตุโขภ
+ธาตุครรภ
+ธาตุเจดีย์
+ธาตุเบา
+ธาตุมมิสสา
+ธาตุสถูป
+ธาตุหนัก
+ธานิน
+ธานินทร์
+ธานี
+ธาร
+ธารกำนัล
+ธารคำนัล
+ธารณ
+ธารณะ
+ธารณา
+ธารณามัย
+ธารพระกร
+ธารยักษ์
+ธารา
+ธาราเคหะ
+ธาราธิคุณ
+ธารายนต์
+ธาษตรี
+ธำมรงค์
+ธำรง
+ธิดา
+ธิติ
+ธีร-
+ธีรภาพ
+ธีรราช
+ธุช
+ธุดงค-
+ธุดงค์
+ธุดงควัตร
+ธุดงคสมาทาน
+ธุต
+ธุตตะ
+ธุม-
+ธุมเกตุ
+ธุมชาล
+ธุมเพลิง
+ธุมา
+ธุร-
+ธุรการ
+ธุรกิจ
+ธุระ
+ธุรำ
+ธุลี
+ธุว-
+ธุวดารา
+ธุวภาค
+ธุวมณฑล
+ธุวยัษฎี
+ธูป
+ธูป-
+ธูปบาตร
+ธูปแพเทียนแพ
+ธูปไม้ระกำ
+ธูปฤๅษี
+เธนุ
+เธอ
+เธียร
+โธ่
+โธวน
+น
+นก
+นกกระจอก
+นกกระจอกทอง
+นกกระทุง
+นกกะปูด
+นกกางปีก
+นกเขา
+นกคุ่ม
+นกจาก
+นกต่อ
+นกยูง
+นกรู้
+นกสองหัว
+นกหก
+นกหวีด
+นกอยู่ในปล่อง
+นกุล
+นข
+นข-
+นขทารณ์
+นขลิขิต
+นขเลขา
+นขา
+นค
+นคร
+นคร-
+นครบาล
+นครบาลจังหวัด
+นครรัฐ
+นครวาสี
+นครโสภิณี
+นครโสเภณี
+นคราทร
+นครินทร์
+นคเรศ
+นคินทร
+นคินทร์
+นเคนทร์
+นเคศวร
+นโคทร
+นง
+นงคราญ
+นงคุฐ
+นงนุช
+นงพะงา
+นงพาล
+นงพุธ
+นงโพธ
+นงเยาว์
+นงราม
+นงลักษณ์
+นท
+นที
+นทีรัย
+นนตรา
+นนท์
+นนทรี
+นนทลี
+นนทิ
+นบ
+นบนอบ
+นปุงสกลิงค์
+นปุงสกลึงค์
+นพ
+นพ-
+นพกะ
+นพเก้า
+นพคุณ
+นพเคราะห์
+นพนิต
+นพปฎล
+นพพล
+นพพวง
+นพพัน
+นพรัตน์
+นพศก
+นพศูล
+นภ-
+นภจร
+นภดล
+นภมณฑล
+นภวิถี
+นภศูล
+นภสินธุ์
+นภา
+นภาลัย
+นม
+นมกระแชง
+นมข้น
+นมควาย
+นมชะนี
+นมช้าง
+นมตาบอด
+นมตาสะแก
+นมตำเรีย
+นมตำเลีย
+นมนาง
+นมนาน
+นมบกอกพร่อง
+นมบอด
+นมผง
+นมผา
+นมพวง
+นมพิจิตร
+นมแมว
+นมไม้
+นมวัว
+นมสวรรค์
+นมสาว
+นมหนู
+นมะ
+นมักการ
+นมัสการ
+นมาซ
+นย-
+นยนะ
+นยนา
+นยะ
+นยักษ์
+นโยบาย
+นร-
+นรก
+นรกานต์
+นรการ
+นรเทพ
+นรนาถ
+นรนายก
+นรบดี
+นรบาล
+นรพยัคฆ์
+นรราช
+นรเศรษฐ์
+นรสิงห์
+นรสีห์
+นรา
+นราธิป
+นรินทร์
+นริศ
+นริศร
+นริศวร
+นรี
+นรีเวชวิทยา
+นเรนทรสูร
+นเรศ
+นเรศวร
+นเรศวร์ชนช้าง
+นเรศูร
+นโรดม
+นฤ-
+นฤคหิต
+นฤโฆษ
+นฤดม
+นฤตย-
+นฤตย์
+นฤตยศาลา
+นฤตยศาสตร์
+นฤตยสถาน
+นฤเทพ
+นฤนาท
+นฤบดี
+นฤบาล
+นฤเบศ
+นฤป
+นฤปนีติ
+นฤปเวศม์
+นฤปัตนี
+นฤพาน
+นฤมล
+นฤมาณ
+นฤมิต
+นลาฏ
+นลิน
+นลินี
+นว-
+นวก-
+นวกภูมิ
+นวกรรม
+นวกรรมิก
+นวกะ
+นวการ
+นวกิจ
+นวโกวาท
+นวครหะ
+นวคุณ
+นวเคราะห์
+นวชาต
+นวด
+นวดข้าว
+นวดแป้ง
+นวดฟั้น
+นวทวาร
+นวนิต
+นวนิยาย
+นวปฎล
+นวพธู
+นวม
+น่วม
+นวมี
+นวมุข
+นวย
+นวยนาด
+นวรัตน์
+นวล
+นวลจันทร์
+นวลจันทร์ทะเล
+นวลน้อย
+นวลระหง
+นวลลออ
+นวลละออง
+นวลหง
+นวโลหะ
+นววิธ
+นวอรหาทิคุณ
+นวังคสัตถุศาสน์
+นวารหาทิคุณ
+นวาระ
+นหาดก
+นหาน
+นหารุ
+นหุต
+นฬ
+นฬ-
+นฬการ
+นฬป
+นอ
+นอก
+นอกกฎหมาย
+นอกครู
+นอกคอก
+นอกจาก
+นอกใจ
+นอกชาน
+นอกตำรา
+นอกถนน
+นอกบาลี
+นอกรีต
+นอกรีตนอกรอย
+นอกลู่นอกทาง
+นอกเหนือ
+นอง
+น่อง
+น้อง
+น้องๆ
+นองเนือง
+น่องแน่ง
+น้องเพล
+นองเลือด
+น่องสิงห์
+นองหน้า
+นอต
+นอน
+นอนก้น
+นอนกิน
+นอนใจ
+นอนตาไม่หลับ
+นอนตีพุง
+นอนนก
+นอนแบ็บ
+นอนโรง
+นอนเล่น
+นอนวัน
+นอนเวร
+นอนหลับทับสิทธิ์
+นอนหลับไม่รู้ นอนคู้ไม่เห็น
+นอบ
+นอบนบ
+นอบน้อม
+น้อม
+น้อมเกล้าน้อมกระหม่อมถวาย
+น้อมนำ
+น้อย
+น้อยแง่
+น้อยใจ
+น้อยเนื้อต่ำใจ
+น้อยหน่า
+น้อยหน้า
+น้อยหรือ
+น้อยโหน่ง
+นะ
+นะแน่ง
+นัก
+นักกะ
+นักการ
+นักการเมือง
+นักกีฬา
+นักขัต
+นักขัต-
+นักขัตฤกษ์
+นักข่าว
+นักงาน
+นักตะ
+นักท่องเที่ยว
+นักเทศ
+นักเทศน์
+นักโทษ
+นักโทษเด็ดขาด
+นักโทษพิเศษ
+นักธรรม
+นักบวช
+นักบิน
+นักบุญ
+นักปราชญ์
+นักพรต
+นักร
+นักรบ
+นักเรียน
+นักเลง
+นักศึกษา
+นักษัตร
+นักษัตร-
+นักษัตรจักร
+นักษัตรเนมี
+นักษัตรบดี
+นักษัตรบถ
+นักษัตรปาฐก
+นักษัตรมณฑล
+นักษัตรมาลา
+นักษัตรโยค
+นักษัตรวิทยา
+นักสนม
+นักสราช
+นักสวด
+นักสิทธิ์
+นักสืบ
+นักหนา
+นัข
+นัค
+นัคคะ
+นั่ง
+นั่งกินนอนกิน
+นั่งขัดสมาธิ
+นังคัล
+นั่งคุกเข่า
+นั่งซัง
+นั่งทาง
+นั่งทางใน
+นั่งเทียน
+นั่งในหัวใจ
+นั่งปรก
+นั่งโป่ง
+นั่งพับเพียบ
+นั่งเมือง
+นั่งยองๆ
+นั่งร้าน
+นั่งราว
+นั่งเล่น
+นั่งห้าง
+นัจ
+นัฏ
+นัฏก
+นัฑ
+นัด
+นัดดา
+นัดแนะ
+นัดหมาย
+นัตถุ์
+นั่น
+นั้น
+นั่นซี
+นันท-
+นันททายี
+นันทน์
+นันทนาการ
+นันทปักษี
+นันทิ
+นั่นแน่
+นั่นปะไร
+นั้นแล
+นั่นแหละ
+นั่นเอง
+นับ
+นับถือ
+นับประสา
+นับหน้าถือตา
+นัย
+นัยน์
+นัยน์ตา
+นัยน์เนตร
+นัยนา
+นัยนามพุ
+นัยว่า
+นัว
+นัวเนีย
+นา
+น่า
+น้า
+นาก
+นากบุด
+นากสวาด
+นากาสาหรี
+น่าเกลียดน่าชัง
+นาขอบเหล็ก
+นาค
+นาค-
+นาคเกี่ยว
+นาคเกี้ยว
+นาคเกี้ยวกระหวัด
+นาคเกี่ยวพระสุเมรุ
+นาคทนต์
+นาคบริพันธ์
+นาคบาศ
+นาคปรก
+นาคปัก
+นาคพันธ์
+นาคร
+นาครวย
+นาคราช
+นาคราชแผลงฤทธิ์
+นาคลดา
+นาคเล่นน้ำ
+นาควิถี
+นาคสะดุ้ง
+นาคสังวัจฉร
+นาคา
+นาคาวโลก
+นาคินทร์
+นาคี
+นาคู่โค
+นาเคนทร์
+นาเคศ
+นาเคศวร
+นาโครคินทร
+นาง
+นางกราย
+นางกวัก
+นางเกล็ด
+นางงาม
+นางจรัล
+นางจุม
+นางชม
+นางดำ
+นางท้าว
+นางนวล
+นางนูน
+นางแนบ
+นางใน
+นางบำเรอ
+นางพญา
+นางพระกำนัล
+นางฟ้า
+นางเมือง
+นางไม้
+นางแย้ม
+นางรม
+นางรมใหญ่
+นางรอง
+นางร้องไห้
+นางรำ
+นางเรียง
+นางล้อม
+นางเล็ด
+นางเลิ้ง
+นางสนองพระโอษฐ์
+นางสาว
+นางหงส์
+นางห้าม
+นางอ้อม
+นางอาย
+นางเอก
+นางแอ่น
+นาเชิงทรง
+นาฏ
+นาฏ-
+นาฏก
+นาฏกรรม
+นาฏดนตรี
+นาฏย-
+นาฏศิลป์
+นาด
+นาดำ
+นาถ
+นาท
+นาที
+นาน
+น่าน
+นานนม
+น่านน้ำ
+น่านน้ำอาณาเขต
+น่านฟ้า
+นานสองนาน
+นานแสนนาน
+นานัครส
+นานัตว
+นานัปการ
+นานา
+นานาเนก
+นานาประการ
+นาเนก
+นาบ
+นาบข้าว
+นาปรัง
+นาปี
+นาฟางลอย
+นาภิ
+นาภี
+นาม
+นาม-
+นามกร
+นามธรรม
+นามไธย
+นามบัตร
+นามปากกา
+นามแฝง
+นามสกุล
+นามสงเคราะห์
+นามสมญา
+นามานุกรม
+นามานุศาสตร์
+นามาภิไธย
+นาเมือง
+นาย
+น่าย
+นายก
+นายกเทศมนตรี
+นายกรัฐมนตรี
+นายงาน
+นายเงิน
+นายจ้าง
+นายตรวจ
+นายท่า
+นายท้าย
+นายทุน
+นายธง
+นายประกัน
+นายประเพณี
+นายโรง
+นายว่าขี้ข้าพลอย
+นายเวร
+นายหน้า
+นายอากร
+นายอำเภอ
+นายิกา
+นารา
+นารายณ์
+นารายณ์ทรงเครื่อง
+นารายณ์ประลองศิลป์
+นารายณ์หัตถ์
+นารี
+นารีบูร
+นารีผล
+นารีสูร
+นาเรศ
+นาลิวัน
+นาลี
+นาว
+น้าว
+นาวา
+นาวิก
+นาวิก-
+นาวิกโยธิน
+นาวิน
+นาวี
+นาเวศ
+นาศ
+นาสวน
+นาสา
+นาสิก
+นาหว่าน
+นาฬิกา
+นาฬิกาแดด
+นาฬิกาทราย
+นาฬิกาน้ำ
+นาฬิเก
+นาฬี
+นำ
+น้ำ
+น้ำกรด
+น้ำกระด้าง
+น้ำกระสาย
+น้ำกะทิ
+น้ำกาม
+น้ำเกลือ
+น้ำเกิด
+น้ำขาว
+น้ำข้าว
+น้ำขึ้น
+น้ำขึ้นให้รีบตัก
+น้ำขุ่นไว้ใน น้ำใสไว้นอก
+น้ำแข็ง
+น้ำแข็งแห้ง
+น้ำครำ
+น้ำคร่ำ
+น้ำคัน
+น้ำค้าง
+น้ำค้างแข็ง
+น้ำคาวปลา
+น้ำคำ
+น้ำเค็ม
+น้ำเคย
+น้ำเงิน
+น้ำจัณฑ์
+นำจับ
+น้ำจิ้ม
+น้ำใจ
+น้ำใจใคร่
+น้ำชน
+น้ำชุบ
+น้ำเชี่ยวอย่าขวางเรือ
+น้ำเชื้อ
+น้ำเชื่อม
+น้ำซับ
+น้ำซาวข้าว
+น้ำซึม
+น้ำซึมบ่อทราย
+น้ำดอกไม้
+น้ำดอกไม้เทศ
+น้ำดอกไม้สด
+น้ำดับไฟ
+น้ำดิบ
+น้ำดี
+น้ำตก
+น้ำต้อย
+น้ำตะกู
+น้ำตะโก
+น้ำตะไคร้
+น้ำตับ
+น้ำตา
+น้ำตาเช็ดหัวเข่า
+น้ำตาตกใน
+น้ำตาเทียน
+น้ำตาย
+น้ำตาล
+น้ำตาลใกล้มด ใครจะอดได้
+น้ำตาลจีน
+น้ำเต้า
+น้ำใต้ดิน
+น้ำทรง
+น้ำท่วมทุ่ง ผักบุ้งโหรงเหรง
+น้ำท่วมปาก
+น้ำท่า
+นำทาง
+น้ำทูนหัว
+นำเที่ยว
+น้ำไทย
+น้ำนม
+น้ำนมแมว
+น้ำนมราชสีห์
+น้ำนวล
+น้ำนอง
+น้ำนอนคลอง
+น้ำน้อยแพ้ไฟ
+น้ำนิ่งไหลลึก
+น้ำบ่อน้อย
+น้ำโบย
+น้ำประสานทอง
+น้ำปลา
+น้ำป่า
+น้ำผลึก
+น้ำผึ้ง
+น้ำพระพิพัฒน์สัตยา
+น้ำพริก
+น้ำพริกเผา
+น้ำพักน้ำแรง
+นำพา
+น้ำพึ่งเรือเสือพึ่งป่า
+น้ำพุ
+น้ำมนต์
+น้ำมนตร์
+น้ำมัน
+น้ำมันก๊าด
+น้ำมันเขียว
+น้ำมันเครื่อง
+น้ำมันจันทน์
+น้ำมันโซลา
+น้ำมันดิน
+น้ำมันดิบ
+น้ำมันดีเซล
+น้ำมันตานี
+น้ำมันเตา
+น้ำมันเบนซิน
+น้ำมันพราย
+น้ำมันมนตร์
+น้ำมันยาง
+น้ำมันระกำ
+น้ำมันสน
+น้ำมันสลัด
+น้ำมันหม่อง
+น้ำมันหล่อลื่น
+น้ำมาปลากินมด น้ำลดมดกินปลา
+น้ำมือ
+น้ำมูก
+น้ำเมา
+น้ำย่อย
+น้ำยา
+น้ำยาเคมี
+น้ำเย็นปลาตาย
+นำร่อง
+น้ำร้อนปลาเป็น
+น้ำรัก
+น้ำแร่
+น้ำลง
+น้ำลดตอผุด
+น้ำละว้า
+น้ำลาย
+น้ำลายสอ
+น้ำลายหก
+น้ำลายไหล
+น้ำเลี้ยง
+น้ำวน
+น้ำว้า
+น้ำไว
+น้ำส้ม
+น้ำส้มสายชู
+นำสมัย
+น้ำสังข์
+น้ำสั่งฟ้า ปลาสั่งฝน
+นำสืบ
+น้ำสุก
+น้ำเสียง
+นำแสดง
+น้ำหนวก
+น้ำหนัก
+น้ำหน้า
+น้ำหนึ่ง
+น้ำหนึ่งใจเดียวกัน
+น้ำหมาก
+น้ำหอม
+น้ำเหลือง
+น้ำเหลืองน้ำตาล
+น้ำไหลไฟดับ
+น้ำอดน้ำทน
+น้ำอบ
+น้ำอบฝรั่ง
+น้ำอ่อน
+น้ำอ้อย
+น้ำอัดลม
+น้ำอาบงัว
+นิ
+นิกเกิล
+นิกขะ
+นิกขันต์
+นิกร
+นิกรอยด์
+นิกาย
+นิคม
+นิคมที่ดิน
+นิคมสร้างตนเอง
+นิคมสหกรณ์
+นิคมอุตสาหกรรม
+นิครนถ์
+นิคห-
+นิคหกรรม
+นิคหะ
+นิคหิต
+นิคาลัย
+นิคาหก
+นิคาหก-
+นิเคราะห์
+นิโคติน
+นิโครธ
+นิโครม
+นิง
+นิ่ง
+นิ่งเงียบ
+นิ่งเฉย
+นิ่งแน่
+นิจ
+นิจ-
+นิจศีล
+นิด
+นิดเดียว
+นิดหน่อย
+นิดหนึ่ง
+นิตย-
+นิตย์
+นิตยทาน
+นิตยภัต
+นิตยสาร
+นิติ
+นิติกร
+นิติกรณ์
+นิติกรรม
+นิติการ
+นิติการณ์
+นิติธรรม
+นิตินัย
+นิติบัญญัติ
+นิติบุคคล
+นิติภาวะ
+นิติวิทยาศาสตร์
+นิติเวชศาสตร์
+นิติศาสตร์
+นิติสมมติ
+นิติสัมพันธ์
+นิติเหตุ
+นิทร
+นิทรรศการ
+นิทรา
+นิทรารมณ์
+นิทัศน์
+นิทาฆ
+นิทาน
+นิทานวจนะ
+นิเทศ
+นิเทศศาสตร์
+นิธาน
+นิธิ
+นินทา
+นินนะ
+นินนาท
+นินหุต
+นินาท
+นิบาต
+นิปริยาย
+นิปัจการ
+นิพจน์
+นิพนธ์
+นิพพาน
+นิพพิทา
+นิพพิทาญาณ
+นิพัทธ-
+นิพัทธ์
+นิพัทธกุศล
+นิพันธ์
+นิพิท
+นิเพท
+นิภา
+นิ่ม
+นิ้ม
+นิมนต์
+นิ่มนวล
+นิมมาน
+นิมมานรดี
+นิมิต
+นิยต
+นิยต-
+นิยม
+นิยมนิยาย
+นิยยาน
+นิยยานิก-
+นิยัตินิยม
+นิยาม
+นิยาย
+นิยุต
+นิร
+นิรคุณ
+นิรโฆษ
+นิรชร
+นิรชรา
+นิรทุกข์
+นิรเทศ
+นิรโทษ
+นิรโทษกรรม
+นิรนัย
+นิรนาม
+นิรพัตร
+นิรภัย
+นิรมล
+นิรมาณ
+นิรมาณกาย
+นิรมาน
+นิรมิต
+นิรย-
+นิรยบาล
+นิรัติศัย
+นิรันดร
+นิรันตร-
+นิรันตราย
+นิรัพพุท
+นิรา
+นิราพาธ
+นิรามัย
+นิรามิษ
+นิราลัย
+นิราศ
+นิราศรพ
+นิราศรัย
+นิรินธน์
+นิรินธนพินาศ
+นิรุกติ
+นิรุกติศาสตร์
+นิรุตติ
+นิรุตติปฏิสัมภิทา
+นิรุทก
+นิรุทธ์
+นิโรช
+นิโรธ
+นิโรธ-
+นิโรธสมาบัติ
+นิล
+นิล-
+นิลบัตร
+นิลปัทม์
+นิลรัตน์
+นิลุบล
+นิโลตบล
+นิโลบล
+นิ่ว
+นิ้ว
+นิวคลิอิก
+นิวเคลียร์
+นิวเคลียส
+นิวตรอน
+นิวรณ์
+นิ้วไหนร้ายก็ตัดนิ้วนั้น
+นิวัต
+นิวัตน์
+นิวาต
+นิวาส
+นิเวศ
+นิเวศ-
+นิเวศน์
+นิเวศวิทยา
+นิศา
+นิศากร
+นิศากาล
+นิศาคม
+นิศาชล
+นิศาทิ
+นิศานาถ
+นิศาบดี
+นิศามณี
+นิศารัตน์
+นิษกรม
+นิษาท
+นิสภ-
+นิสัช
+นิสัชชาการ
+นิสัย
+นิสัยใจคอ
+นิสาท
+นิสิต
+นิสีทน-
+นิสีทนะ
+นิสีทนาการ
+นิเสธ
+นี่
+นี้
+นีติ
+นีติธรรม
+นีติศาสตร์
+นี่นัน
+นี่แน่ะ
+นีร-
+นีรจร
+นีรช
+นีรนาท
+นี่แหละ
+นีออน
+นี่เอง
+นีโอดิเมียม
+นึก
+นึกคิด
+นึกดู
+นึกถึง
+นึกเห็น
+นึกออก
+นึ่ง
+นึ่งหม้อเกลือ
+นุ
+นุง
+นุ่ง
+นุ่งกระโจมอก
+นุ่งเจียมห่มเจียม
+นุงถุง
+นุงนัง
+นุ่งห่ม
+นุช
+นุด
+นุต
+นุ่น
+นุ่ม
+นุ่มนวล
+นุ่มนิ่ม
+นุ่มเนื้อ
+นุ้ย
+นูน
+นู่น
+นู้น
+เนกขะ
+เนกขัม
+เน่ง
+เนตบอล
+เนตร
+เนติ
+เนติบัณฑิต
+เน้น
+เนบิวลา
+เนปจูน
+เนปทูเนียม
+เนมิ
+เนมิตก-
+เนมิตกนาม
+เนมิตกะ
+เนย
+เนยเทียม
+เนยใส
+เนรกัณฐี
+เนรคุณ
+เนรเทศ
+เนรนาด
+เนรนาถ
+เนรมิต
+เนระพูสี
+เนษาท
+เนอ
+เน้อ
+เนา
+เน่า
+เน่าไฟ
+เนาว-
+เนาวนิต
+เนาวรัตน์
+เนิน
+เนิ่น
+เนิ่นๆ
+เนิ่นนาน
+เนิบ
+เนิบๆ
+เนิบนาบ
+เนียง
+เนียน
+เนียม
+เนียร
+เนียรทุกข์
+เนียรเทศ
+เนียรนาท
+เนื้อ
+เนื้อกษัตริย์
+เนื้อความ
+เนื้อคู่
+เนื้อเค็ม
+เนือง
+เนืองๆ
+เนื่อง
+เนื่องจาก
+เนื่องด้วย
+เนื่องแต่
+เนืองนอง
+เนืองนิตย์
+เนืองแน่น
+เนื้องอก
+เนื้อตัว
+เนื้อตาย
+เนื้อเต่ายำเต่า
+เนื้อถ้อยกระทงความ
+เนื้อทราย
+เนื้อที่
+เนื้อแท้
+เนื้อเปื่อย
+เนื้อเพลง
+เนื้อไม้
+เนือย
+เนือยๆ
+เนื้อเยื่อ
+เนื้อเยื่อกล้ามเนื้อ
+เนื้อเยื่อบุผิว
+เนื้อเยื่อประสาท
+เนื้อเยื่อยึดต่อ
+เนื้อร้อง
+เนื้อร้าย
+เนื้อเรื่อง
+เนื้อสมัน
+เนื้อหา
+เนื้ออ่อน
+แน่
+แน่ง
+แน่งน้อย
+แน่ใจ
+แน่ชัด
+แน่แท้
+แน่น
+แน่นขนัด
+แน่นท้อง
+แน่นนันต์
+แน่นแฟ้น
+แน่นหนา
+แน่นหน้าอก
+แน่นอน
+แน่นิ่ง
+แน่แน่ว
+แนบ
+แนบเนียน
+แนบแน่น
+แนม
+แนว
+แน่ว
+แนวทาง
+แนวที่ห้า
+แน่วแน่
+แนวโน้ม
+แนวป่า
+แนวรบ
+แนวร่วม
+แนวเรือ
+แนวหน้า
+แนวหลัง
+แนะ
+แน่ะ
+แนะนัด
+แนะนำ
+แนะแนว
+แนะแหน
+โน
+โน้ต
+โน้ตเพลง
+โนน
+โน่น
+โน้น
+โนเน
+โนเบเลียม
+โน้ม
+โน้มน้าว
+โนมพรรณ
+โนรา
+โนรี
+ใน
+ในกรม
+ในไส้
+ในหลวง
+ไน
+ไนต์คลับ
+ไนโตรเจน
+ไนลอน
+ไนโอเบียม
+บ
+บ่
+บก
+บกพร่อง
+บง
+บ่ง
+บงก-
+บงก์
+บงกช
+บงกชกร
+บงการ
+บ๊งเบ๊ง
+บงสุ-
+บงสุ์
+บงสุกุล
+บงสุกูลิก
+บงอับบงรา
+บ่งอับบ่งรา
+บฏ
+บด
+บดขยี้
+บดบัง
+บดเอื้อง
+บดินทร์
+บดี
+บดีธรรม
+บดีพรต
+บดีวรดา
+บดีศร
+บถ
+บท
+บท-
+บทกลอน
+บทกวีนิพนธ์
+บทกำหนดโทษ
+บทความ
+บทคัดย่อ
+บทจร
+บทเจรจา
+บทเฉพาะกาล
+บทดอกสร้อย
+บทนำ
+บทบงกช
+บทบงสุ์
+บทบรรณาธิการ
+บทบัญญัติ
+บทบาท
+บทบาทมาก
+บทบูรณ์
+บทประพันธ์
+บทพากย์
+บทเพลง
+บทภาชน์
+บทภาชนีย์
+บทมาลย์
+บทร้อง
+บทรัช
+บทเรศ
+บทเรียน
+บทวเรศ
+บทวลัญช์
+บทวาร
+บทศรี
+บทสนทนา
+บทสังขยา
+บทามพุช
+บโทน
+บน
+บ่น
+บนข้าวผี ตีข้าวพระ
+บ่นถึง
+บนบาน
+บนบานศาลกล่าว
+บพิตร
+บพิตรพระราชสมภาร
+บพิธ
+บ่ม
+บ่มผิว
+บ่มมัน
+บ่มหนอง
+บมิ
+บร-
+บรทาร
+บรทารกรรม
+บรม
+บรม-
+บรมธาตุ
+บรมบพิตร
+บรมวงศานุวงศ์
+บรมอัฐิ
+บรมัตถ์
+บรรกวด
+บรรจง
+บรรจถรณ์
+บรรจบ
+บรรจวบ
+บรรจุ
+บรรเจิด
+บรรณ
+บรรณ-
+บรรณกุฎี
+บรรณพิภพ
+บรรณโลก
+บรรณศาลา
+บรรณสาร
+บรรณาการ
+บรรณาคม
+บรรณาธิกร
+บรรณาธิการ
+บรรณานุกรม
+บรรณารักษ์
+บรรณารักษศาสตร์
+บรรดา
+บรรดาก
+บรรดามี
+บรรดาศักดิ์
+บรรตานึก
+บรรถร
+บรรทม
+บรรทัด
+บรรทัดฐาน
+บรรทับ
+บรรทาน
+บรรทุก
+บรรเทา
+บรรเทือง
+บรรพ
+บรรพ-
+บรรพ์
+บรรพชา
+บรรพชิต
+บรรพต
+บรรพต-
+บรรพตกีลา
+บรรพตชาล
+บรรพตธาตุ
+บรรพตมาลา
+บรรพตราช
+บรรพตวาสี
+บรรพตศิขร
+บรรพบุรุษ
+บรรพภาค
+บรรพเภท
+บรรพมูล
+บรรพสตรี
+บรรยง
+บรรยงก์
+บรรยเวกษก์
+บรรยากาศ
+บรรยาย
+บรรลัย
+บรรลัยกัลป์
+บรรลัยจักร
+บรรลาย
+บรรลุ
+บรรลุนิติภาวะ
+บรรเลง
+บรรโลม
+บรรษัท
+บรรสบ
+บรรสพ
+บรรสม
+บรรสาน
+บรรสาร
+บรรหาน
+บรรหาร
+บรอนซ์
+บรัด
+บรั่นดี
+บรัศว์
+บรากรม
+บราง
+บราทุกรา
+บราลี
+บริกรม
+บริกรรม
+บริกัป
+บริการ
+บริขา
+บริขาร
+บริขารโจล
+บริคณห์
+บริคณห์สนธิ
+บริจาค
+บริจารก
+บริจาริกา
+บริเฉท
+บริเฉท-
+บริเฉทกาล
+บริชน
+บริณายก
+บริณายกรัตน์
+บริดจ์
+บริบท
+บริบวรณ์
+บริบาล
+บริบูรณ์
+บริพนธ์
+บริพัตร
+บริพันธ์
+บริพาชก
+บริพาชิกา
+บริพาชี
+บริพาร
+บริภัณฑ์
+บริภาษ
+บริโภค
+บริโภคเจดีย์
+บริมาส
+บริยาย
+บริรม
+บริรักษ์
+บริราช
+บริวรรต
+บริวาร
+บริวาส
+บริเวณ
+บริษการ
+บริษัท
+บริษัทเครดิตฟองซิเอร์
+บริษัทจำกัด
+บริษัทบริวาร
+บริษัทมหาชนจำกัด
+บริสชน
+บริสุทธิ์
+บริสุทธิ์ใจ
+บริหาร
+บริหาส
+บแรง
+บแรงภักษ์
+บฤงคพ
+บล็อก
+บวก
+บวง
+บ่วง
+บ่วงบาศ
+บวงสรวง
+บวช
+บวชชี
+บวน
+บ้วน
+บ้วนปาก
+บ้วนพระโอษฐ์
+บวบ
+บวบขม
+บวม
+บวมน้ำ
+บ๊วย
+บวร
+บวร-
+บวรโตฎก
+บหลิ่ม
+บอ
+บ่อ
+บอก
+บอกกล่าว
+บอกแขก
+บอกคำบอก
+บอกบท
+บอกบัญชี
+บอกบุญ
+บอกใบ้
+บอกปัด
+บอกเปิด
+บอกยี่ห้อ
+บอกเล่าเก้าสิบ
+บอกวัตร
+บอกศาลา
+บอกหนทาง
+บอกหนังสือสังฆราช
+บ่อเกิด
+บอง
+บ่อง
+บ้อง
+บ๊อง
+บ๊องๆ
+บ้องกัญชา
+บ้องตะลา
+บ้องตัน
+บ้องตื้น
+บ้องแบ๊ว
+บ้องไฟ
+บ้องยาแดง
+บองหลา
+บ้องหู
+บอด
+บอดสี
+บอน
+บ่อน
+บ่อนแตก
+บ่อนทำลาย
+บอนลายกระหนก
+บ่อน้ำร้อน
+บอบ
+บอบช้ำ
+บอบบาง
+บอบแบบ
+บ้อม
+บ๋อม
+บ่อย
+บ่อยๆ
+บอระเพ็ด
+บอระมาน
+บอล
+บอลลูน
+บ้อหุ้น
+บเอ
+บ๊ะ
+บะหมี่
+บัก
+บักโกรก
+บักอาน
+บัคเตรี
+บัง
+บั้ง
+บังกะโล
+บังกัด
+บังเกิด
+บังโกรยตัวผู้
+บังโกรยตัวเมีย
+บังโกลน
+บังคน
+บังคนเบา
+บังคนหนัก
+บังคม
+บังคล
+บังควร
+บังความ
+บังคับ
+บังคับการ
+บังคับครุ
+บังคับใจ
+บังคับโท
+บังคับบัญชา
+บังคับลหุ
+บังคับสัมผัส
+บังคับเอก
+บังคัล
+บังโคลน
+บังเงา
+บังตะวัน
+บังตา
+บังแทรก
+บังใบ
+บังเพลิง
+บังไพร
+บังฟัน
+บั้งไฟ
+บังมืด
+บังวาย
+บังเวียน
+บังสาด
+บังสุกุล
+บังสุกูลิก
+บังสูรย์
+บังหน้า
+บังหวนควัน
+บังเหตุ
+บังเหิน
+บังเหียน
+บังอร
+บังอวจ
+บังอาจ
+บังอิง
+บังอูร
+บังเอิญ
+บัญจก
+บัญจรงค์
+บัญชร
+บัญชา
+บัญชาการ
+บัญชี
+บัญชีกระแสรายวัน
+บัญชีเดินสะพัด
+บัญญัติ
+บัญญัติไตรยางศ์
+บัญหา
+บัฏ
+บัฐยาพฤต
+บัณฑร
+บัณฑร-
+บัณฑรนาค
+บัณฑิต
+บัณฑิตย์
+บัณฑุ
+บัณฑุกัมพล
+บัณฑุกัมพลศิลาอาสน์
+บัณฑุนาค
+บัณฑุโรค
+บัณฑูร
+บัณเฑาะก์
+บัณเฑาะว์
+บัณณาส
+บัณรส
+บัณรสี
+บัด
+บัดกรี
+บัดซบ
+บัดดล
+บัดเดี๋ยว
+บัดนั้น
+บัดนี้
+บัดบง
+บัดแบ่ง
+บัดแมล่ง
+บัดสี
+บัดสีบัดเถลิง
+บัตร
+บัตรเทวดา
+บัตรธนาคาร
+บัตรพลี
+บัตรสนเท่ห์
+บัตรหมาย
+บัทม์
+บัน
+บั่น
+บั้น
+บันกวด
+บันจวบ
+บันจอย
+บันดล
+บันดาล
+บันเดิน
+บันโดย
+บันได
+บันไดแก้ว
+บันไดลิง
+บันไดเลื่อน
+บันแถลง
+บั่นทอน
+บั้นท้าย
+บันทึก
+บันทึง
+บันเทิง
+บันเทิงคดี
+บันเบา
+บั้นปลาย
+บั้นพระองค์
+บันยะบันยัง
+บันลือ
+บั้นหลวง
+บันเหิน
+บั้นเอว
+บัปผาสะ
+บัพ
+บัพชา
+บัพชิต
+บัพพาช
+บัพพาชน์
+บัพพาชนียกรรม
+บัล
+บัลลพ
+บัลลังก์
+บัลลูน
+บัลวะ
+บัว
+บัวกลุ่ม
+บัวขาบ
+บัวคอเสื้อ
+บัวตะกั่ว
+บัวตูม
+บัวถลา
+บัวนาง
+บัวบก
+บัวบังใบ
+บัวบาท
+บัวผุด
+บัวไม่ช้ำ น้ำไม่ขุ่น
+บัวโรย
+บัวลอย
+บัวสวรรค์
+บัวสายติ่ง
+บัวสายทิ้ง
+บัวฮาดำ
+บา
+บ่า
+บ้า
+บ้าๆ
+บาก
+บากท่า
+บากบั่น
+บากหน้า
+บาง
+บ่าง
+บ้าง
+บางขุนนนท์
+บ่างช่างยุ
+บางตา
+บางที
+บางเบา
+บางสุ
+บาจก
+บาจรีย์
+บาจิกา
+บ้าจี้
+บาซิลลัส
+บาด
+บาดคอ
+บาดเจ็บ
+บาดใจ
+บาดตา
+บาดทะจิต
+บาดทะพิษ
+บาดทะยัก
+บาดแผล
+บาดเสี้ยนบาดหนาม
+บาดหมาง
+บาดหมาย
+บาดหู
+บาดไหม
+บาดาล
+บ้าดีเดือด
+บาแดง
+บาต
+บาตร
+บาตรแก้ว
+บาตรใหญ่
+บาท
+บาท-
+บาทนิเกต
+บาทบ
+บาทบงกช
+บาทบงสุ์
+บาทบริจาริกา
+บาทบูรณ์
+บาทภัฏ
+บาทภาค
+บาทมุทรา
+บาทมูล
+บาทมูลิกากร
+บาทยุคล
+บาทรช
+บาทรัช
+บาทสกุณี
+บาทหลวง
+บาทาธึก
+บาทุกา
+บาธรรม
+บาน
+บาน-
+บ้าน
+บานกบ
+บานเกล็ด
+บ้านเกิดเมืองนอน
+บ้านเคยอยู่ อู่เคยนอน
+บ้านจัดสรร
+บ้านช่อง
+บานชื่น
+บานเช้า
+บานตะเกียง
+บานตะโก้
+บานตะไท
+บ้านแตกสาแหรกขาด
+บานทะโรค
+บ้านนอก
+บ้านนอกขอกนา
+บานบาตร
+บานบุรี
+บานบุรีม่วง
+บานเบอะ
+บานเบิก
+บานเบียง
+บานแบะ
+บานปลาย
+บานแผนก
+บานแผละ
+บ้านพัก
+บานพับ
+บานแพนก
+บานโภชน์
+บานมงคล
+บ้านเมือง
+บ้านเมืองมีขื่อมีแป
+บานไม่รู้โรย
+บานเย็น
+บ้านรับรอง
+บ้านเรือน
+บ้าน้ำลาย
+บ่านี่
+บานียะ
+บานีโยทก
+บ้าบ่น
+บ้าบ๋า
+บ้าบิ่น
+บาบี
+บาป
+บาป-
+บาปกรรม
+บาปเคราะห์
+บาปมิตร
+บาปหนา
+บาพก
+บาย
+บ่าย
+บ้าย
+บ่ายควาย
+บ่ายเบี่ยง
+บายศรี
+บายศรีปากชาม
+บายสุหรี
+บ่ายหน้า
+บาร์
+บารนี
+บารมี
+บาร์เรล
+บาร์เลย์
+บารอมิเตอร์
+บ้าระบุ่น
+บ้าระห่ำ
+บ้าร่าท่า
+บาเรียน
+บาเรียม
+บาล
+บ้าลำโพง
+บาลี
+บ้าเลือด
+บ่าว
+บ่าวขุน
+บ่าวไพร่
+บาศ
+บาศก์
+บาสเกตบอล
+บ้าสมบัติ
+บ้าหมู
+บาหลี
+บ้าหว่า
+บ้าหอบฟาง
+บ้าห้าร้อยจำพวก
+บ๋ำ
+บำเทิง
+บำนาญ
+บำบวง
+บำบัด
+บำโบ
+บำโบย
+บำโบล
+บำเพ็ญ
+บำราบ
+บำราศ
+บำรุง
+บำรุงขวัญ
+บำรู
+บำเรอ
+บำเรอเชอภักดิ์
+บำหยัด
+บำเหน็จ
+บิ
+บิกู
+บิกูปะระมาหนา
+บิกูปะระหมั่นหนา
+บิฐ
+บิณฑ-
+บิณฑบาต
+บิด
+บิดขวา
+บิดขี้เกียจ
+บิดจะกูด
+บิดซ้าย
+บิดตะกูด
+บิดเบี้ยว
+บิดเบือน
+บิดพลิ้ว
+บิดร
+บิดไส้
+บิดหล่า
+บิดหัวลูก
+บิดา
+บิตุ
+บิตุจฉา
+บิตุรงค์
+บิตุเรศ
+บิตุล
+บิตุลา
+บิตุลานี
+บิน
+บิ่น
+บินยา
+บิลเลียด
+บิวเรตต์
+บิศาจ
+บิสมัท
+บี้
+บีกู
+บีฑา
+บีตา
+บีบ
+บีบขนมจีน
+บีบขมับ
+บีบคั้น
+บีบน้ำตา
+บีบบังคับ
+บีบรัด
+บี้แบน
+บีเยศ
+บึก
+บึกบึน
+บึง
+บึ่ง
+บึ้ง
+บึ้งตึง
+บึงบาง
+บึ้งบูด
+บุ
+บุก
+บุกบัน
+บุกบั่น
+บุกเบิก
+บุกป่าฝ่าดง
+บุกรุก
+บุคคล
+บุคคล-
+บุคคลธรรมดา
+บุคคลนิติสมมติ
+บุคคลผู้ไร้ความสามารถ
+บุคคลสิทธิ
+บุคลากร
+บุคลาธิษฐาน
+บุคลิก
+บุคลิก-
+บุคลิกทาน
+บุคลิกภาพ
+บุคลิกลักษณะ
+บุง
+บุ่ง
+บุ้ง
+บุ้งขัน
+บุ้งจีน
+บุ้งทะเล
+บุ้งฝรั่ง
+บุ้งร้วม
+บุญ
+บุญ-
+บุญเขต
+บุญญานุภาพ
+บุญญาภินิหาร
+บุญญาภิสังขาร
+บุญทาย
+บุญทำกรรมแต่ง
+บุญธรรม
+บุญนิธิ
+บุญมาวาสนาส่ง
+บุญราศี
+บุญฤทธิ์
+บุญหนักศักดิ์ใหญ่
+บุณฑริก
+บุณมี
+บุณย์
+บุตร
+บุตร-
+บุตรธรรม
+บุตรบุญธรรม
+บุตรา
+บุตรี
+บุตรีตระสุม
+บุถุชน
+บุทคล
+บุนนะบุนนัง
+บุนนาค
+บุบ
+บุบบิบ
+บุบสลาย
+บุปผ-
+บุปผชาติ
+บุปผวิกัติ
+บุพ-
+บุพกรรม
+บุพการี
+บุพกิจ
+บุพชาติ
+บุพทักษิณ
+บุพนิมิต
+บุพบท
+บุพเปตพลี
+บุพพ-
+บุพพัณชาติ
+บุพพัณหสมัย
+บุพพาจารย์
+บุพพาษาฒ
+บุพพาสาฬหะ
+บุพเพนิวาสานุสติญาณ
+บุพเพสันนิวาส
+บุพโพ
+บุพภาค
+บุพวิเทห์
+บุ๋ม
+บุ่มบ่าม
+บุ้ย
+บุ้ยใบ้
+บุ้ยปาก
+บุรณะ
+บุรพ-
+บุรพทิศ
+บุรพบท
+บุรพผลคุนี
+บุรพภัทรบท
+บุรพอาษาฒ
+บุรพาจารย์
+บุระ
+บุรัตถิมทิศ
+บุราณ
+บุราณทุติยิกา
+บุรินทร์
+บุริมทิศ
+บุริมพรรษา
+บุริมสิทธิ
+บุรี
+บุรุษ
+บุรุษ-
+บุรุษโทษ
+บุรุษธรรม
+บุโรทั่ง
+บุษกร
+บุษบ-
+บุษบก
+บุษบง
+บุษบราค
+บุษบวรรษ
+บุษบัน
+บุษบา
+บุษบากร
+บุษบาคม
+บุษบาบัณ
+บุษบามินตรา
+บุษบารักร้อย
+บุษป-
+บุษปราค
+บุษปะ
+บุษย-
+บุษย์
+บุษย์น้ำทอง
+บุษยมาส
+บุษยสนาน
+บุษยะ
+บุษยาภิเษก
+บุษราคัม
+บุหงง
+บุหงัน
+บุหงา
+บุหงาประหงัน
+บุหงามลาซอ
+บุหงารำไป
+บุหงาลำเจียก
+บุหรง
+บุหรี่
+บุหรี่พระราม
+บุหลัน
+บู่
+บู้
+บูชนีย-
+บูชนียสถาน
+บูชา
+บูชากัณฑ์เทศน์
+บูชายัญ
+บูชิต
+บูด
+บูดบึ้ง
+บูดเบี้ยว
+บู่ทะเล
+บู้บี้
+บูร
+บูรณ-
+บูรณ์
+บูรณภาพ
+บูรณมี
+บูรณะ
+บูรณาการรวมหน่วย
+บูรพ
+บูรพา
+บูรพาจารย์
+บูรพาษาฒ
+บูรี
+เบ้
+เบ่ง
+เบ๊จี๋
+เบญกานี
+เบญจ
+เบญจ-
+เบญจก
+เบญจกัลยาณี
+เบญจกามคุณ
+เบญจกูล
+เบญจขันธ์
+เบญจคัพย์
+เบญจคีรีนคร
+เบญจโครส
+เบญจดุริยางค์
+เบญจธรรม
+เบญจบรรพต
+เบญจพรรณ
+เบญจพล
+เบญจเพส
+เบญจภูต
+เบญจม-
+เบญจมสุรทิน
+เบญจมาศ
+เบญจมาศสวน
+เบญจมาศหนู
+เบญจรงค์
+เบญจโลหกะ
+เบญจวรรค
+เบญจวรรณ
+เบญจวรรณห้าสี
+เบญจศก
+เบญจศีล
+เบญจา
+เบญจางค-
+เบญจางค์
+เบญจางคประดิษฐ์
+เบญญา
+เบญพาด
+เบ็ด
+เบ็ดเตล็ด
+เบ็ดเสร็จ
+เบน
+เบนซิน
+เบรก
+เบริลเลียม
+เบรียน
+เบส
+เบ้อ
+เบอร์
+เบอร์คีเลียม
+เบ้อเร่อ
+เบ้อเร่อเท่อ
+เบ้อเริ่ม
+เบ้อเริ่มเทิ่ม
+เบอะ
+เบอะบะ
+เบะ
+เบา
+เบ้า
+เบ้าขลุบ
+เบาความ
+เบาใจ
+เบาตัว
+เบ้าตา
+เบาเต็ง
+เบาเนื้อเบาตัว
+เบาบาง
+เบาปัญญา
+เบามือ
+เบาไม้
+เบาไม้เบามือ
+เบาราณ
+เบาแรง
+เบาสมอง
+เบ้าหลุด
+เบาหวาน
+เบาเหวง
+เบาโหวง
+เบาะ
+เบาะๆ
+เบาะลม
+เบาะแส
+เบิก
+เบิกความ
+เบิกทาง
+เบิกทูต
+เบิกบาน
+เบิกพยาน
+เบิกพระเนตร
+เบิกพระโอษฐ์
+เบิกไพร
+เบิกไม้
+เบิกเรือ
+เบิกโรง
+เบิกโลง
+เบิกแว่นเวียนเทียน
+เบิกอรุณ
+เบิ่ง
+เบี้ย
+เบียก
+เบียกบ้าย
+เบี้ยกันดาร
+เบี้ยแก้
+เบี่ยง
+เบี่ยงบ่าย
+เบียด
+เบียดกรอ
+เบียดบัง
+เบียดเบียน
+เบียดแว้ง
+เบียดเสียด
+เบี้ยต่อไส้
+เบี้ยทำขวัญ
+เบียน
+เบียนธาตุ
+เบี้ยน้อยหอยน้อย
+เบี้ยบน
+เบี้ยบ้ายรายทาง
+เบี้ยบำนาญ
+เบี้ยโบก
+เบี้ยประกันภัย
+เบี้ยประชุม
+เบี้ยปรับ
+เบียร์
+เบี้ยล่าง
+เบี้ยเลี้ยง
+เบี้ยว
+เบี้ยวๆ บูดๆ
+เบี้ยหวัด
+เบี้ยหัวแตก
+เบี้ยหัวแหลก
+เบือ
+เบื่อ
+เบื้อ
+เบื้อง
+เบื้องญวน
+เบื้องต้น
+เบื้องบน
+เบื้องว่า
+เบื้องหน้า
+เบื้องหลัง
+เบือน
+แบ
+แบ้
+แบก
+แบกหน้า
+แบกะดิน
+แบคทีเรีย
+แบ่ง
+แบงก์
+แบ่งค้าง
+แบ่งเบา
+แบ่งปัน
+แบ่งภาค
+แบ่งแยก
+แบ่งรับแบ่งสู้
+แบ่งสันปันส่วน
+แบดมินตัน
+แบตเตอรี่
+แบไต๋
+แบน
+แบนโจ
+แบบ
+แบ็บ
+แบบข้อคำถาม
+แบบฉบับ
+แบบบาง
+แบบแผน
+แบบฝึกหัด
+แบบพิธี
+แบบพิมพ์
+แบบสอบถาม
+แบบอย่าง
+แบเบาะ
+แบมือ
+แบรก
+แบเรียม
+แบหลา
+แบะ
+แบะแฉะ
+แบะท่า
+แบะปาก
+แบะอก
+โบ
+โบ้
+โบ๋
+โบก
+โบกขร-
+โบกขรณี
+โบกขรพรรษ
+โบกมือ
+โบชุก
+โบดก
+โบแดง
+โบต
+โบนัส
+โบ๊เบ๊
+โบย
+โบยบิน
+โบรมีน
+โบรอน
+โบราณ
+โบราณ-
+โบราณคดี
+โบราณวัตถุ
+โบราณสถาน
+โบสถ์
+ใบ
+ใบ้
+ใบก้นปิด
+ใบกองเกิน
+ใบกองหนุน
+ใบขนสินค้า
+ใบขนุน
+ใบขับขี่
+ใบแข็ง
+ใบ้คลั่ง
+ใบเงิน
+ใบจอง
+ใบฎีกา
+ใบดาล
+ใบดำ
+ใบแดง
+ใบแดงแจ้งโทษ
+ใบตราส่ง
+ใบตอง
+ใบตาล
+ใบทอง
+ใบท้องแดง
+ใบแทรก
+ใบนาก
+ใบบอก
+ใบบุญ
+ใบเบิก
+ใบเบิกทาง
+ใบเบิกร่อง
+ใบปก
+ใบปรือ
+ใบปลิว
+ใบพัด
+ใบพัทธสีมา
+ใบโพ
+ใบเมี่ยง
+ใบไม้
+ใบระกา
+ใบรับ
+ใบรับรอง
+ใบลา
+ใบเลี้ยง
+ใบสอ
+ใบสั่ง
+ใบสั่งจ่าย
+ใบสัจ
+ใบสำคัญ
+ใบสำคัญคู่จ่าย
+ใบสีมา
+ใบสุทธิ
+ใบเสมา
+ใบเสร็จ
+ใบหน้า
+ใบหุ้น
+ใบหูช้าง
+ใบเหยียบย่ำ
+ใบอนุญาตขับขี่
+ไบ่ๆ
+ป
+ปก
+ปกกระพอง
+ปกเกศ
+ปกครอง
+ปกคลุม
+ปกติ
+ปกป้อง
+ปกปักรักษา
+ปกปิด
+ปกรณ์
+ปกรณัม
+ปการ
+ปกิณกะ
+ปกีรณัม
+ปโกฏิ
+ปง
+ป่ง
+ปงช้าง
+ปงปัง
+ปฎล
+ปฏัก
+ปฏิ-
+ปฏิกรณ์
+ปฏิกรรมสงคราม
+ปฏิการ-
+ปฏิการะ
+ปฏิกิริยา
+ปฏิกูล
+ปฏิคคหิต
+ปฏิคม
+ปฏิคหิต-
+ปฏิคาหก
+ปฏิฆะ
+ปฏิชีวนะ
+ปฏิญญา
+ปฏิญญาสากลว่าด้วยสิทธิมนุษยชน
+ปฏิญาณ
+ปฏิทิน
+ปฏิบถ
+ปฏิบัติ
+ปฏิบัติการ
+ปฏิบัติธรรม
+ปฏิปทา
+ปฏิปักษ์
+ปฏิปัน
+ปฏิปุจฉาพยากรณ์
+ปฏิปุจฉาวาที
+ปฏิพัทธ์
+ปฏิพากย์
+ปฏิภาค
+ปฏิภาค-
+ปฏิภาคนิมิต
+ปฏิภาณ
+ปฏิภาณ-
+ปฏิภาณกวี
+ปฏิภาณปฏิสัมภิทา
+ปฏิภาณโวหาร
+ปฏิมา
+ปฏิมากร
+ปฏิยุทธ์
+ปฏิรพ
+ปฏิรูป
+ปฏิรูป-
+ปฏิโลม
+ปฏิวัติ
+ปฏิวาต
+ปฏิวาท
+ปฏิเวธ
+ปฏิสนธิ
+ปฏิสวะ
+ปฏิสังขรณ์
+ปฏิสันถาร
+ปฏิสัมภิทา
+ปฏิเสธ
+ปฏิเสธข่าว
+ปฐพี
+ปฐพีวิทยา
+ปฐม
+ปฐม-
+ปฐมกรรม
+ปฐมฌาน
+ปฐมดุสิต
+ปฐมทัศน์
+ปฐมเทศนา
+ปฐมนิเทศ
+ปฐมบุรุษ
+ปฐมพยาบาล
+ปฐมโพธิกาล
+ปฐมยาม
+ปฐมฤกษ์
+ปฐมวัย
+ปฐมสมโพธิ
+ปฐมสุรทิน
+ปฐมาษาฒ
+ปฐวี
+ปณต
+ปณาม
+ปณิธาน
+ปณิธิ
+ปณีต
+ปด
+ปดโป้
+ปดิวรัดา
+ปติ
+ปติยัต
+ปติวัตร
+ปถพี
+ปถมัง
+ปถวี
+ปทัฏฐาน
+ปทัสถาน
+ปทานุกรม
+ปทีป
+ปทุม
+ปน
+ป่น
+ป่นปี้
+ปนเป
+ปนัดดา
+ปบ
+ปปัญจ-
+ปปัญจธรรม
+ปปัญจะ
+ปม
+ปมเขื่อง
+ปมจิต
+ปมด้อย
+ปมเด่น
+ปมประสาท
+ปมเปา
+ปโย-
+ปโยชนม์
+ปโยธร
+ปโยธรา
+ปโยนิธิ
+ปโยราศิ
+ปร-
+ปรก
+ปรกติ
+ปรง
+ปรด
+ปรตยักษ์
+ปรตยาค
+ปรตเยก
+ปรน
+ปรนนิบัติ
+ปรนปรือ
+ปรนเปรอ
+ปรนัย
+ปรบ
+ปรบไก่
+ปรบมือให้
+ปรปักษ์
+ปรม-
+ปรมัตถ์
+ปรมาจารย์
+ปรมาณู
+ปรมาตมัน
+ปรมาภิไธย
+ปรมาภิเษก
+ปรมินทร์
+ปรเมนทร์
+ปรเมศวร์
+ปรเมษฐ์
+ปรเมหะ
+ปรโลก
+ปรวด
+ปรวนแปร
+ปรวาที
+ปรศุ
+ปรสิต
+ปรสิต-
+ปรสิตวิทยา
+ปร๋อ
+ปรองดอง
+ปรอด
+ปรอดๆ
+ปรอท
+ปรอย
+ปรอยๆ
+ประ-
+ประกบ
+ประกบตัว
+ประกฤต
+ประกฤติ
+ประกล
+ประกวด
+ประกวดประขัน
+ประกวดราคา
+ประกอบ
+ประกอบด้วย
+ประกอบอาหาร
+ประกัน
+ประกันชีวิต
+ประกันเชิงลา
+ประกันตัวผู้ต้องหาหรือจำเลย
+ประกันภัย
+ประกันภัยค้ำจุน
+ประกันวินาศภัย
+ประกับ
+ประกาย
+ประกายพรึก
+ประการ
+ประกาศ
+ประกาศก
+ประกาศนียบัตร
+ประกาศิต
+ประกำ
+ประกิด
+ประกิต
+ประกีรณก
+ประเกียรณก
+ประแกก
+ประคด
+ประคนธรรพ
+ประคนธรรพ์
+ประคบ
+ประคบประหงม
+ประคอง
+ประคับประคอง
+ประคัลภ์
+ประคารม
+ประคำ
+ประคำไก่
+ประคำดีควาย
+ประคำร้อย
+ประคิ่น
+ประคิ่นวินชา
+ประคุณ
+ประเคน
+ประเคราะห์
+ประโคน
+ประโคนธรรพ
+ประโคนธรรพ์
+ประโคม
+ประโคมข่าว
+ประจง
+ประจญ
+ประจบ
+ประจบประแจง
+ประจวบ
+ประจ๋อประแจ๋
+ประจักษ-
+ประจักษ์
+ประจักษนิยม
+ประจักษ์พยาน
+ประจัญ
+ประจัญบาน
+ประจัน
+ประจันหน้า
+ประจาก
+ประจาค
+ประจาน
+ประจำ
+ประจำการ
+ประจำครั่ง
+ประจำฉัตร
+ประจำซอง
+ประจำเดือน
+ประจำตรา
+ประจำเมือง
+ประจำยาม
+ประจิม
+ประจิ้มประจ่อง
+ประจิ้มประเจ๋อ
+ประจุ
+ประจุขาด
+ประจุคมน์
+ประจุบัน
+ประจุไฟฟ้า
+ประจุโลหิต
+ประเจก
+ประเจิด
+ประเจิดประเจ้อ
+ประเจียด
+ประแจ
+ประแจจีน
+ประชด
+ประชดประชัน
+ประชน
+ประชวม
+ประชวร
+ประชัน
+ประชา
+ประชากร
+ประชากรศาสตร์
+ประชาคม
+ประชาชน
+ประชาชาติ
+ประชาทัณฑ์
+ประชาธิปไตย
+ประชานาถ
+ประชาบดี
+ประชาบาล
+ประชาภิบาล
+ประชามติ
+ประชาราษฎร์
+ประชาสงเคราะห์
+ประชาสัมพันธ์
+ประชิด
+ประชี
+ประชุม
+ประชุมเพลิง
+ประชุมสุดยอด
+ประเชิญ
+ประณต
+ประณม
+ประณาม
+ประณิธาน
+ประณิธิ
+ประณีต
+ประณุท
+ประดง
+ประดงแดง
+ประดน
+ประดนธรรม
+ประดวน
+ประดอน
+ประดอย
+ประดักๆ
+ประดักประเดิด
+ประดัง
+ประดับ
+ประดับประดา
+ประดา
+ประดาก
+ประดาตาย
+ประดาทัพ
+ประดาน้ำ
+ประดาป
+ประดาพล
+ประดามี
+ประดาษ
+ประดาเสีย
+ประดิ-
+ประดิชญา
+ประดิดประดอย
+ประดิทิน
+ประดิรพ
+ประดิษฐ-
+ประดิษฐ์
+ประดิษฐกรรม
+ประดิษฐาน
+ประดุง
+ประดุจ
+ประดู่
+ประดู่แขก
+ประดู่ชิงชัน
+ประดู่แดง
+ประดู่ลาย
+ประเด
+ประเด็น
+ประเดยก
+ประเดิม
+ประเดียง
+ประเดี๋ยว
+ประเดี๋ยวก่อน
+ประเดี๋ยวเดียว
+ประเดี๋ยวนี้
+ประเดี๋ยวประด๋าว
+ประแดง
+ประแดะ
+ประโดย
+ประตง
+ประตยาค
+ประตัก
+ประตาปะ
+ประติ-
+ประติชญา
+ประติญาณ
+ประติทิน
+ประติมากรรม
+ประติรพ
+ประติศรัพ
+ประตู
+ประตูชัย
+ประตูน้ำ
+ประตูป่า
+ประตูผี
+ประตูฟุตบอล
+ประตูระบาย
+ประตูรับน้ำ
+ประตูลม
+ประถม
+ประถมจินดา
+ประทม
+ประทยด
+ประท้วง
+ประทวน
+ประทวนสินค้า
+ประทักษ์
+ประทักษิณ
+ประทัง
+ประทัด
+ประทัดจีน
+ประทัดทอง
+ประทัดฝรั่ง
+ประทัดลม
+ประทัดเล็ก
+ประทัดใหญ่
+ประทับ
+ประทับใจ
+ประทับตรา
+ประทับฟ้อง
+ประทับแรม
+ประท่า
+ประทากล้อง
+ประทาน
+ประทานบัตร
+ประทาย
+ประทาศี
+ประทิน
+ประทิ่น
+ประทีป
+ประทุก
+ประทุฐ
+ประทุฐจิต
+ประทุน
+ประทุมราค
+ประทุษ
+ประทุษฏ์
+ประทุษฏจิต
+ประทุษฐ์
+ประทุษฐจิต
+ประทุษร้าย
+ประเทศ
+ประเทศกันชน
+ประเทศชาติ
+ประเทศราช
+ประเทา
+ประเท้า
+ประเทียด
+ประเทียบ
+ประเทือง
+ประธาน
+ประธานาธิบดี
+ประนม
+ประนมมือ
+ประนอ
+ประนอม
+ประนอมหนี้
+ประนัง
+ประนัปดา
+ประนี้
+ประนีประนอม
+ประนีประนอมยอมความ
+ประบัด
+ประบาต
+ประปราน
+ประปราย
+ประปา
+ประเปรี้ยง
+ประเปรียว
+ประแป้ง
+ประแปร้น
+ประพจน์
+ประพนธ์
+ประพรม
+ประพฤติ
+ประพฤทธิ์
+ประพัด
+ประพัทธ์
+ประพันธ์
+ประพาต
+ประพาส
+ประพาสต้น
+ประพาสมหรณพ
+ประพาฬ
+ประพิณ
+ประพิมพ์ประพาย
+ประพุทธ์
+ประเพณี
+ประเพณีนิยม
+ประเพ้อ
+ประแพร่งประแพรว
+ประโพธ
+ประไพ
+ประไพร
+ประภพ
+ประภัสสร
+ประภา
+ประภากร
+ประภาคาร
+ประภาพ
+ประภามณฑล
+ประภาษ
+ประภาส
+ประเภท
+ประมง
+ประมวญ
+ประมวล
+ประมวลกฎหมาย
+ประมวลการสอน
+ประมวลรัษฎากร
+ประมัตตะ
+ประมาณ
+ประมาณการ
+ประมาณตน
+ประมาณตัว
+ประมาท
+ประมาทหน้า
+ประมุข
+ประมุท
+ประมูล
+ประเมิน
+ประเมินภาษี
+ประโมง
+ประโมทย์
+ประยงค์
+ประยุกต์
+ประยุทธ์
+ประยุร
+ประยูร
+ประโยค
+ประโยคประธาน
+ประโยคสัมปทา
+ประโยชน์
+ประโรหิต
+ประลมพ์
+ประลอง
+ประลองยุทธ์
+ประลัย
+ประลัยกัลป์
+ประลัยวาต
+ประลาต
+ประลาย
+ประลึง
+ประลุ
+ประลุง
+ประเล่ห์
+ประเล้าประโลม
+ประโลประเล
+ประโลม
+ประโลมโลก
+ประวรรต
+ประวรรตน์
+ประวัติ
+ประวัติ-
+ประวัติการ
+ประวัติการณ์
+ประวัติกาล
+ประวัติศาสตร์
+ประวาต
+ประวาล
+ประวาลปัทม์
+ประวาลผล
+ประวาลวรรณ
+ประวาส
+ประวิง
+ประวิช
+ประวิตร
+ประวิสรรชนีย์
+ประวีณ
+ประเวณี
+ประเวประวิง
+ประเวศ
+ประเวศน์
+ประศม
+ประศาสน์
+ประศุ
+ประสก
+ประสงค์
+ประสงค์ร้าย
+ประสบ
+ประสบการณ์
+ประสบการณ์นิยม
+ประสพ
+ประสม
+ประสมประสาน
+ประสมประเส
+ประสมพันธุ์
+ประสมโรง
+ประสะ
+ประสัก
+ประสันนาการ
+ประสัยห-
+ประสัยห์
+ประสัยหาการ
+ประสัยหาวหาร
+ประสา
+ประสาท
+ประสาท-
+ประสาทการ
+ประสาทรูป
+ประสาทหลอน
+ประสาธน์
+ประสาน
+ประสานงา
+ประสานเนรมิต
+ประสานเสียง
+ประสาร
+ประสิทธิ-
+ประสิทธิ์
+ประสิทธิ์ประสาท
+ประสิทธิผล
+ประสิทธิภาพ
+ประสิทธิเม
+ประสีประสา
+ประสูต
+ประสูติ
+ประเสบันอากง
+ประเสริฐ
+ประแสบัน
+ประหนึ่ง
+ประหม่า
+ประหยัด
+ประหรณ์
+ประหลาด
+ประหล่ำ
+ประหลิ่ม
+ประหวัด
+ประหวั่น
+ประหว่า
+ประหัต
+ประหัตประหาร
+ประหาณ
+ประหาร
+ประหารชีวิต
+ประหาส
+ประเหล
+ประเหส
+ประเหียล
+ประอบ
+ประอร
+ประอรประเอียง
+ประอึง
+ประอุก
+ประเอียง
+ประแอก
+ประฮาม
+ปรัก
+ปรักปรำ
+ปรักมะ
+ปรักหักพัง
+ปรัง
+ปรัชญา
+ปรัด
+ปรัตถจริยา
+ปรัตยนต์
+ปรัตยักษ์
+ปรัตยันต์
+ปรัตยัย
+ปรัตยุตบัน
+ปรัตยุบัน
+ปรัตยูษ
+ปรัตยูห์
+ปรัตเยก
+ปรัน
+ปรั่น
+ปรั้น
+ปรับ
+ปรับทุกข์
+ปรับโทษ
+ปรับปรุง
+ปรับไหม
+ปรับอากาศ
+ปรับอาบัติ
+ปรัมปรา
+ปรัศจิม
+ปรัศนา
+ปรัศนี
+ปรัศว์
+ปร่า
+ปรากฏ
+ปรากฏการณ์
+ปรากรม
+ปรากฤต
+ปราการ
+ปราคภาร
+ปราคาร
+ปราง
+ปรางค์
+ปรางคณะ
+ปรางค์ปรา
+ปราจีน
+ปราชญ์
+ปราชญา
+ปราชัย
+ปราชาปัตยวิวาหะ
+ปราชิต
+ปราณ
+ปราณี
+ปราด
+ปราดเปรียว
+ปราดเปรื่อง
+ปราติหารย์
+ปราทุกรา
+ปราน
+ปรานี
+ปรานีตีเอาเรือ
+ปรานีปราศรัย
+ปราบ
+ปราบดาภิเษก
+ปราบปราม
+ปราปต์
+ปราภพ
+ปราม
+ปรามาส
+ปราโมช
+ปราโมทย์
+ปราย
+ปรารถนา
+ปรารภ
+ปรารมภ์
+ปราศ
+ปราศจาก
+ปราศรัย
+ปราษณี
+ปราษาณ
+ปราสัย
+ปราสาท
+ปรำ
+ปริ-
+ปริก
+ปริกขาร
+ปริกรรม
+ปริกัป
+ปริกัลป-
+ปริกัลปมาลา-
+ปริขา
+ปริคณห์
+ปริจาค
+ปริจาริกา
+ปริเฉท
+ปริชน
+ปริซึม
+ปริญญา
+ปริญญาบัตร
+ปริณาม
+ปริณามัคคิ
+ปริณายก
+ปริต
+ปริต-
+ปริตตะ
+ปริตโตทก
+ปริตทวีป
+ปริตยาค
+ปริตร
+ปริทรรศน์
+ปริทัยหัคคี
+ปริทัศน์
+ปริเทพ
+ปริเทพน์
+ปริเทวนะ
+ปริเทวะ
+ปรินิพพาน
+ปริบ
+ปริปันถ์
+ปริปาก
+ปริพนธ์
+ปริพัตร
+ปริพันธ์
+ปริพาชก
+ปริภัณฑ์
+ปริภาษ
+ปริภาษณ์
+ปริภุญช์
+ปริภูมิ
+ปริโภค
+ปริ่ม
+ปริมณฑล
+ปริมัท
+ปริมาณ
+ปริมาตร
+ปริย-
+ปริยรณ
+ปริยวาท
+ปริยวาที
+ปริยัติ
+ปริยัติธรรม
+ปริยานุช
+ปริยาย
+ปริเยศ
+ปริโยสาน
+ปริวรรต
+ปริวรรต-
+ปริวรรตกรรม
+ปริวัตร
+ปริวาร
+ปริวาส
+ปริวิตก
+ปริเวณ
+ปริศนา
+ปริศนาธรรม
+ปริศนาลายแทง
+ปริศนาอักษรไขว้
+ปริษการ
+ปริษัท
+ปริสัญญู
+ปริสุทธิ
+ปริหาน
+ปริหาร
+ปริหาส
+ปรี่
+ปรีชญา
+ปรีชา
+ปรี๊ด
+ปรีดา
+ปรีดิ
+ปรีดิ์
+ปรีดี
+ปรีติ
+ปรีย
+ปรียา
+ปรึก
+ปรึกษา
+ปรึง
+ปรือ
+ปรื๋อ
+ปรุ
+ปรุง
+ปรุโปร่ง
+ปรู
+ปรู๋
+ปรูด
+ปรูดปราด
+ปรู๊ดปร๊าด
+ปรู๊ฟ
+ปฤงคพ
+ปฤจฉา
+ปฤจฉาคุณศัพท์
+ปฤจฉาสรรพนาม
+ปฤษฎ์
+ปฤษฎางค์
+ปฤษฐ
+ปลก
+ปลกเปลี้ย
+ปลง
+ปล่ง
+ปลงกรรมฐาน
+ปลงใจ
+ปลงช้าง
+ปลงชีวิต
+ปลงตก
+ปลงธรรมสังเวช
+ปลงธุระ
+ปลงบริขาร
+ปลงผม
+ปลงศพ
+ปลงสังขาร
+ปลงสังเวช
+ปลงอนิจจัง
+ปลงอาบัติ
+ปลงอายุสังขาร
+ปลด
+ปลดเกษียณ
+ปลดเกษียณอายุ
+ปลดทุกข์
+ปลดปลง
+ปลดปล่อย
+ปลดเปลื้อง
+ปลดระวาง
+ปลดหนี้
+ปลดออก
+ปลดอาวุธ
+ปลดแอก
+ปล้น
+ปล้นทรัพย์
+ปลวก
+ปลวังค-
+ปลอก
+ปลอกกระสุน
+ปลอกคอ
+ปลอกมีด
+ปลอกมือ
+ปล่อง
+ปล้อง
+ปล้องขน
+ปล้องฉนวน
+ปล้องไฉน
+ปล้องทอง
+ปล้องอ้อย
+ปลอด
+ปลอดทหาร
+ปลอดโปร่ง
+ปลอดภัย
+ปล้อน
+ปลอบ
+ปลอบขวัญ
+ปลอบโยน
+ปลอม
+ปลอมปน
+ปลอมแปลง
+ปล่อย
+ปล่อยเกาะ
+ปล่อยแก่
+ปล่อยไก่
+ปล่อยของ
+ปล่อยใจ
+ปล่อยตัว
+ปล่อยตัวปล่อยใจ
+ปล่อยนกปล่อยกา
+ปล่อยเนื้อปล่อยตัว
+ปล่อยปละละเลย
+ปล่อยปลาลงน้ำ
+ปล่อยปลิง
+ปล่อยมือ
+ปล่อยเสือเข้าป่า
+ปละ
+ปลัก
+ปลั๊ก
+ปลั๊กไฟ
+ปลัง
+ปลั่ง
+ปลัด
+ปลัดขิก
+ปลา
+ปลาก
+ปลากริม
+ปลาเกลือ
+ปลาข้องเดียวกัน
+ปลาเค็ม
+ปลาเงินปลาทอง
+ปลาจ่อม
+ปลาจีน
+ปลาเจ่า
+ปลาชา
+ปลาดาว
+ปลาแดก
+ปลาแดง
+ปลาต
+ปลาตกน้ำตัวโต
+ปลาตะเพียน
+ปลาติดหลังแห
+ปลาตู้
+ปลาทอง
+ปลาแนม
+ปลาบ
+ปลาบปลื้ม
+ปลาบิน
+ปลาฝา
+ปลาม้ำ
+ปลาย
+ปลายข้าว
+ปลายตีน
+ปลายทาง
+ปลายนาการ
+ปลายน้ำ
+ปลายมือ
+ปลายอ้อปลายแขม
+ปลาร้า
+ปลาโลมา
+ปลาวาฬ
+ปลาสเตอร์
+ปลาสนาการ
+ปลาส้ม
+ปลาหน้าดิน
+ปลาหมอตายเพราะปาก
+ปลาหมึก
+ปลาเห็ด
+ปลาใหญ่กินปลาเล็ก
+ปลาไหลเผือก
+ปล้ำ
+ปล้ำปลุก
+ปล้ำผีลุกปลุกผีนั่ง
+ปลิง
+ปลิงทะเล
+ปลิด
+ปลิ้น
+ปลิ้นปลอก
+ปลิ้นปล้อน
+ปลิโพธ
+ปลิม
+ปลิ่ม
+ปลิว
+ปลี
+ปลีก
+ปลีกตัว
+ปลีกย่อย
+ปลีกเวลา
+ปลีแข้ง
+ปลื้ม
+ปลุก
+ปลุกใจ
+ปลุกตัว
+ปลุกปล้ำ
+ปลุกปั่น
+ปลุกผี
+ปลุกพระ
+ปลุกระดม
+ปลุกเสก
+ปลูก
+ปลูกฝัง
+ปลูกฝี
+ปลูกเรือนคร่อมตอ
+ปลูกเรือนตามใจผู้อยู่
+ปลูกเรือนพอตัว หวีหัวพอเกล้า
+ปวกเปียก
+ปวง
+ป่วง
+ปวด
+ปวดถ่วง
+ปวดท้องทุ่ง
+ปวดท้องเบา
+ปวดท้องเยี่ยว
+ปวดมวน
+ปวดร้าว
+ปวดเศียรเวียนเกล้า
+ปวดแสบปวดร้อน
+ป่วน
+ป้วน
+ป่วนปั่น
+ป้วนเปี้ยน
+ป่วย
+ป่วยกล่าว
+ป่วยการ
+ปวัตน-
+ปวัตน์
+ปวัตนาการ
+ปวารณา
+ปวาล
+ปวาส
+ปวาฬ
+ปวิช
+ปวิตร
+ปวิธ
+ปวิเวก
+ปวีณ
+ปวุติ
+ปเวณี
+ปเวส
+ปเวสน์
+ปศุ
+ปสพ
+ปสันน-
+ปสันนะ
+ปสันนาการ
+ปสัยห-
+ปสัยหะ
+ปสัยหาการ
+ปสัยหาวหาร
+ปสาท
+ปสาน
+ปสาสน์
+ปสุ
+ปสุต
+ปสูติ
+ปหังส
+ปหังสน
+ปหาน
+ปหาร
+ปหาส
+ปอ
+ป้อ
+ป๋อ
+ปอก
+ปอกกล้วยเข้าปาก
+ปอกลอก
+ปอง
+ป่อง
+ป่องๆ
+ป้อง
+ป้องกัน
+ป่องร่า
+ปอด
+ปอดชื้น
+ปอดบวม
+ปอดแปด
+ปอดลอย
+ปอดเหล็ก
+ปอน
+ปอนๆ
+ป้อน
+ปอนด์
+ปอเนาะ
+ปอบ
+ป้อแป้
+ปอม
+ป้อม
+ป้อมๆ
+ป๋อม
+ปอมขาง
+ปอมข่าง
+ป้อมบังคับการ
+ปอย
+ป้อย
+ป้อยอ
+ปอเลียงฝ้าย
+ปะ
+ปะกน
+ปะกัง
+ปะกาปะกัง
+ปะการัง
+ปะกำ
+ปะขาว
+ปะงับปะง่อน
+ปะตาปา
+ปะตาระกาหลา
+ปะติดปะต่อ
+ปะติยาน
+ปะเตะ
+ปะทะ
+ปะทะปะทัง
+ปะทุ
+ปะทุน
+ปะบุก
+ปะปน
+ปะมง
+ปะราลี
+ปะรำ
+ปะลอม
+ปะเลง
+ปะแล่ม
+ปะแล่มๆ
+ปะโลง
+ปะวะหล่ำ
+ปะวะหลิ่ม
+ปะว่า
+ปะเสหรันอากง
+ปะหงับ
+ปะหงับๆ
+ปะหงับปะง่อน
+ปะหนัน
+ปะหมันอาหยี
+ปะหลิ่ม
+ปะหัง
+ปะเหลาะ
+ปะเหลาะปะแหละ
+ปัก
+ปักข-
+ปักข์
+ปักขคณนา
+ปักขพิฬาร
+ปักขันดร
+ปักใจ
+ปักเป้า
+ปักษ-
+ปักษ์
+ปักษกษัย
+ปักษคณนา
+ปักษคม
+ปักษธร
+ปักษเภท
+ปักษวาหน
+ปักษา
+ปักษานดร
+ปักษาวสาน
+ปักษาสวรรค์
+ปักษิน
+ปักษี
+ปักหลัก
+ปัคหะ
+ปัง
+ปั๋ง
+ปังสุ์
+ปังสุกุล
+ปัจจัตตะ
+ปัจจัตถรณ์
+ปัจจันต-
+ปัจจันต์
+ปัจจันตคาม
+ปัจจันตชนบท
+ปัจจันตประเทศ
+ปัจจัย
+ปัจจามิตร
+ปัจจุคมน์
+ปัจจุทธรณ์
+ปัจจุบัน
+ปัจจุบันทันด่วน
+ปัจจุส-
+ปัจจุสกาล
+ปัจจุสมัย
+ปัจจูส
+ปัจจูหะ
+ปัจเจก
+ปัจเจก-
+ปัจเจกบุคคล
+ปัจเจกพุทธะ
+ปัจเจกโพธิ
+ปัจเจกสมาทาน
+ปัจโจปการกิจ
+ปัจโจสกาล
+ปัจฉา
+ปัจฉาภัต
+ปัจฉาสมณะ
+ปัจฉิม
+ปัจฉิม-
+ปัจฉิมชน
+ปัจฉิมภาค
+ปัจฉิมยาม
+ปัจฉิมลิขิต
+ปัจฉิมวัย
+ปัจฉิมวาจา
+ปัจถรณ์
+ปัจนึก
+ปัจยาการ
+ปัจเวกขณ์
+ปัชชร
+ปัชชุน
+ปัญจ-
+ปัญจก
+ปัญจนที
+ปัญจม-
+ปัญจมี
+ปัญจมีดิถี
+ปัญจวัคคีย์
+ปัญจวีสติ
+ปัญจสาขา
+ปัญญัติ
+ปัญญา
+ปัญญาแค่หางอึ่ง
+ปัญญาชน
+ปัญญาส-
+ปัญญาอ่อน
+ปัญหา
+ปัญหาโลกแตก
+ปัฏ
+ปัฏนะ
+ปัฐยาวัต
+ปัณฑรหัตถี
+ปัณณะ
+ปัณณาส
+ปัณณาสก์
+ปัณรส-
+ปัณรสม-
+ปัณรสมสุรทิน
+ปัณรสี
+ปัณรสีดิถี
+ปัณหิ
+ปัด
+ปัดๆ
+ปัดเกล้า
+ปัดขา
+ปัดแข้งปัดขา
+ปัดตลอด
+ปัดไถม
+ปัดเป่า
+ปัดรังควาน
+ปัดเศษ
+ปัดสวะ
+ปัตคาด
+ปัตตะ
+ปัตตานีกะ
+ปัตตานึก
+ปัตตานุโมทนา
+ปัตตาเวีย
+ปัตติ
+ปัตติก
+ปัตติทาน
+ปัตถร
+ปัตถะ
+ปัตนิ
+ปัตนี
+ปัตยัย
+ปัตหล่า
+ปัถพี
+ปัถวี
+ปัทม-
+ปัทม์
+ปัทมปาณี
+ปัทมราค
+ปัทมราช
+ปัทมะ
+ปัทมาสน์
+ปัน
+ปั่น
+ปั้น
+ปั้นจั่น
+ปั้นจิ้มปั้นเจ๋อ
+ปันจุเหร็จ
+ปั้นเจ๋อ
+ปั่นป่วน
+ปั้นปึ่ง
+ปั่นแปะ
+ปั่นฝ้าย
+ปั่นไฟ
+ปั้นยศ
+ปั้นลม
+ปั้นล่ำ
+ปันส่วน
+ปั้นสิบ
+ปั้นสีหน้า
+ปั้นหยา
+ปั่นหัว
+ปั้นเหน่ง
+ปับ
+ปั๊บ
+ปัปผาสะ
+ปัพพาชนะ
+ปัพพาชนียกรรม
+ปัพภาระ
+ปั๊มน้ำมัน
+ปัยกะ
+ปัยกา
+ปัยยิกา
+ปั่ว
+ปัวเปีย
+ปั้วเปี้ย
+ปัศจิม
+ปัศตัน
+ปัศตู
+ปัสสาวะ
+ปัสสาสะ
+ปา
+ป่า
+ป้า
+ปาก
+ปากกบ
+ปากกระจับ
+ปากกระบะ
+ปากกริว
+ปากกล้า
+ปากกว้าง
+ปากกา
+ปากกาลูกลื่น
+ปากกาหมึกซึม
+ปากกาหมึกแห้ง
+ปากไก่
+ปากขม
+ปากขอ
+ปากแข็ง
+ปากคม
+ปากคอก
+ปากคอเราะราย
+ปากคัน
+ปากคำ
+ปากคีบ
+ปากจอบ
+ปากจะขาบ
+ปากจัด
+ปากจิ้งจก
+ปากฉลาม
+ปากช้าง
+ปากซ่อม
+ปากตลาด
+ปากต่อปาก
+ปากตะกร้อ
+ปากตะไกร
+ปากตะขาบ
+ปากตำแย
+ปากแตร
+ปากใต้
+ปากนก
+ปากนกกระจอก
+ปากนกแก้ว
+ปากน้ำ
+ปากบอน
+ปากบาตร
+ปากเบา
+ปากแบะ
+ปากปราศรัยใจเชือดคอ
+ปากปลา
+ปากปลาร้า
+ปากปลิง
+ปากเป็ด
+ปากเป็นชักยนต์
+ปากเปราะ
+ปากเปราะเราะราย
+ปากเปล่า
+ปากเปียก
+ปากเปียกปากแฉะ
+ปากโป้ง
+ปากไปล่
+ปากมาก
+ปากไม้
+ปากไม่สิ้นกลิ่นน้ำนม
+ปากราก
+ปากร้าย
+ปากเรือ
+ปากว่าตาขยิบ
+ปากว่ามือถึง
+ปากสว่าง
+ปากหนัก
+ปากหวาน
+ปากหวานก้นเปรี้ยว
+ปากหอยปากปู
+ปากห่าง
+ปากเหยี่ยวปากกา
+ปากอ่าว
+ป่าแคระ
+ปาง
+ป่าง
+ป้าง
+ป้างป่า
+ปาจนะ
+ปาจรีย์
+ปาจารย์
+ปาจิตตีย์
+ปาจีน
+ป่าช้า
+ป่าชายเลน
+ปาฏลิ
+ปาฏิบท
+ปาฏิบุคลิก
+ปาฏิโภค
+ปาฏิหาริย์
+ปาฐ-
+ปาฐก
+ปาฐกถา
+ปาฐะ
+ปาณ-
+ปาณก-
+ปาณกชาติ
+ปาณทัณฑ์
+ปาณนาศ
+ปาณภูต
+ปาณวินาศ
+ปาณสาร
+ปาณะ
+ปาณาติบาต
+ปาณิ
+ปาณิเคราะห์
+ปาณิดล
+ปาณิธรรม
+ปาณิมุกต์
+ปาณิมูล
+ปาณี
+ปาด
+ป่าดงดิบ
+ปาดหาว
+ป่าดิบ
+ป่าแดง
+ปาติโมกข์
+ปาตี
+ปาเต๊ะ
+ป่าเถื่อน
+ปาท
+ปาทป
+ปาท่องโก๋
+ปาทังกา
+ปาทาน
+ป่าทึบ
+ปาทุกา
+ปาน
+ป่าน
+ป้าน
+ปานกลาง
+ป่านคม
+ปานฉะนี้
+ปานดง
+ปานนี้
+ป่านนี้
+ป้านลม
+ปานะ
+ปานิเยน
+ปานีย-
+ปานียะ
+ปานีโยทก
+ป้าบ
+ป๊าบ
+ป่าเบญจพรรณ
+ปาป-
+ปาปมุต
+ปาปอหยีสังฆาตา
+ป่าโปร่ง
+ป่าผลัดใบ
+ปาพจน์
+ป่าแพะ
+ปาม
+ปามปึงมา
+ปาโมกข์
+ป่าไม้พุ่ม
+ป่าย
+ป้าย
+ป้ายสี
+ปายาส
+ปาร-
+ปาร์เกต์
+ปารคู
+ปารมี
+ปารเมศ
+ปารษณี
+ป่าระนาม
+ปาราชิก
+ปาริฉัตร
+ปาริชาต
+ปารุปนะ
+ปาล
+ปาล์ม
+ป่าละเมาะ
+ปาลิไลยก์
+ปาลี
+ป่าเลน
+ปาวๆ
+ป่าว
+ป๊าว
+ปาวก
+ปาวจนะ
+ป่าวประกาศ
+ป่าวร้อง
+ปาวาร
+ปาษาณ
+ปาส
+ปาสาณ
+ปาสาทิกะ
+ป่าสูง
+ป่าเส็งเคร็ง
+ป่าใส
+ปาหนัน
+ปาหี่
+ปาหุณ
+ปาหุไณย-
+ปาหุไณยบุคคล
+ปำ
+ป้ำ
+ป้ำเป้อ
+ป้ำเป๋อ
+ป้ำๆ เป๋อๆ
+ปิกนิก
+ปิ้ง
+ปิงคล-
+ปิงคลหัตถี
+ปิงคละ
+ปิ้งปลาประชดแมว
+ปิงปอง
+ปิฎก
+ปิฏฐะ
+ปิฐิ
+ปิณฑะ
+ปิด
+ปิดกล้อง
+ปิดคดี
+ปิดควันไฟไม่มิด
+ปิดฉาก
+ปิดตาย
+ปิดเต๊าะ
+ปิดทองหลังพระ
+ปิดบัง
+ปิดบัญชี
+ปิดเบา
+ปิดประตูค้า
+ปิดประตูตีแมว
+ปิดปาก
+ปิดสำนวน
+ปิดหนัก
+ปิดหีบไม่ลง
+ปิตตะ
+ปิตา
+ปิตามหะ
+ปิตามหัยกา
+ปิตามหัยยิกา
+ปิตุ
+ปิตุฆาต
+ปิตุจฉา
+ปิตุภูมิ
+ปิตุล
+ปิตุลา
+ปิตุลานี
+ปิโตรเลียม
+ปิ่น
+ปิ่นแก้ว
+ปิ่นซ่น
+ปิ่นตอ
+ปิ่นโต
+ปิปผลี
+ปิ่ม
+ปิ้ม
+ปิย-
+ปิยังคุ
+ปิลันธน์
+ปิ๋ว
+ปิศาจ
+ปิศาจบดี
+ปิสัง
+ปิไส
+ปิหก
+ปิหลั่น
+ปี
+ปี่
+ปี้
+ปี๋
+ปีก
+ปีกกล้าขาแข็ง
+ปีกกา
+ปีกค้างคาว
+ปีกนก
+ปีกไม้
+ปีกลาย
+ปีกหัก
+ปีการศึกษา
+ปี่แก้ว
+ปีงบประมาณ
+ปีฐกะ
+ปีฐะ
+ปี๊ด
+ปีติ
+ปีน
+ปีนเกลียว
+ปีบ
+ปี๊บ
+ปีปฏิทิน
+ปี่พาทย์
+ปีมะโว้
+ปีศาจ
+ปีแสง
+ปีหน้าฟ้าใหม่
+ปีฬ
+ปีฬก
+ปีฬา
+ปึก
+ปึกแผ่น
+ปึง
+ปึ่ง
+ปึ๋ง
+ปึ่งชา
+ปึงปัง
+ปึ้ด
+ปึมปื้อ
+ปืดปึง
+ปืน
+ปื้น
+ปืนยา
+ปือ
+ปื้อ
+ปื๋อ
+ปุ
+ปุ๊
+ปุก
+ปุกปุย
+ปุคละ
+ปุ้งกี๋
+ปุงคพ
+ปุงควะ
+ปุงลิงค์
+ปุงลึงค์
+ปุจฉา
+ปุฏ
+ปุณฑริก
+ปุด
+ปุดกะลา
+ปุตตะ
+ปุถุชน
+ปุนนาค
+ปุนภพ
+ปุนัพพสู
+ปุนัพสุ
+ปุบ
+ปุ๊บ
+ปุบปับ
+ปุ๊บปั๊บ
+ปุปผะ
+ปุปะ
+ปุพพ-
+ปุพพผลคุนี
+ปุพพผลคุนี-
+ปุพพะ
+ปุพพะภัททะ
+ปุม-
+ปุ่ม
+ปุ้ม
+ปุ๋ม
+ปุ่มปลา
+ปุ่มป่ำ
+ปุ้มเป้ง
+ปุ่มเปือก
+ปุ้มเปือก
+ปุมา
+ปุย
+ปุ้ย
+ปุ๋ย
+ปุยกระโดน
+ปุยขาว
+ปุ๋ยคอก
+ปุยฝ้าย
+ปุร
+ปุรณะ
+ปุรพ-
+ปุรพผลคุนี
+ปุรพษาฒ
+ปุราณ
+ปุราณะ
+ปุเรจาริก
+ปุโรหิต
+ปุลลิงค์
+ปุลลึงค์
+ปุลินท์
+ปุลู
+ปุโลปุเล
+ปุษยะ
+ปุสสะ
+ปุฬวะ
+ปู
+ปู่
+ปู่ครู
+ปูจ๋า
+ปู่เจ้า
+ปูชกะ
+ปูชนีย-
+ปูชนียะ
+ปูชา
+ปูชิต
+ปูด
+ปูดกกส้มมอ
+ปูติ
+ปูติลดา
+ปู่ทวด
+ปูน
+ปูนขาว
+ปูนซีเมนต์
+ปูนดิบ
+ปูนแดง
+ปูนปลาสเตอร์
+ปูนปั้น
+ปูนเปียก
+ปูนผิว
+ปูนเพชร
+ปูนไฟ
+ปูนสอ
+ปูนสุก
+ปู่น้อย
+ปูม
+ปู่ย่า
+ปู้ยี่ปู้ยำ
+ปูระ
+ปูลู
+ปูเล
+ปูวา
+ปูเสฉวน
+เป้
+เป๋
+เปก
+เป๊ก
+-เปกข์
+เป่ง
+เป้ง
+เป๋ง
+เป็ด
+เป็ดก่า
+เป็ดแก้ว
+เป็ดขันประชันไก่
+เป็ดถบ
+เป็ดเทศ
+เป็ดน้ำ
+เป็ดผี
+เป็ดไฟแดง
+เป็ดหงส์
+เปต-
+เปตพลี
+เปตวิสัย
+เปตอง
+เปตา
+เป็น
+เป็นกลาง
+เป็นกอง
+เป็นกอบเป็นกำ
+เป็นการ
+เป็นควัน
+เป็นความ
+เป็นคุ้งเป็นแคว
+เป็นงานเป็นการ
+เป็นเงาตามตัว
+เป็นเงินเป็นทอง
+เป็นจริงเป็นจัง
+เป็นใจ
+เป็นชิ้นเป็นอัน
+เป็นชู้
+เป็นดั้งหน้า
+เป็นแดน
+เป็นใด
+เป็นได้
+เป็นต้น
+เป็นต่อ
+เป็นตัวเป็นตน
+เป็นตุเป็นตะ
+เป็นน้ำ
+เป็นน้ำเป็นนวล
+เป็นน้ำยาเย็น
+เป็นนิตย์
+เป็นเนื้อเป็นตัว
+เป็นเนื้อเป็นหนัง
+เป็นบ้า
+เป็นบ้าเป็นหลัง
+เป็นปากเสียง
+เป็นปี่เป็นขลุ่ย
+เป็นผู้เป็นคน
+เป็นฝั่งเป็นฝา
+เป็นฟืนเป็นไฟ
+เป็นไฟ
+เป็นมั่นเป็นเหมาะ
+เป็นรอง
+เป็นไร
+เป็นลมๆ
+เป็นล่ำเป็นสัน
+เป็นโล้เป็นพาย
+เป็นวรรคเป็นเวร
+เป็นหน้าเป็นตา
+เป็นหุ่นให้เชิด
+เป็นหูเป็นตา
+เป็นอัน
+เป็นอันขาด
+เป็นอันมาก
+เป็นเอง
+เปยยาล
+เปร
+เปร็ง
+เปรต
+เปรต-
+เปรตวิษัย
+เปรตวิสัย
+เปรม
+เปรมปรา
+เปรย
+เปรยๆ
+เปรยปราย
+เปรอ
+เปรอะ
+เปรา
+เปราะ
+เปราะแประ
+เปราะหอม
+เปรียง
+เปรี้ยง
+เปรียญ
+เปรียบ
+เปรียบเทียบ
+เปรียบปราย
+เปรียบเปรย
+เปรี่ยม
+เปรียว
+เปรี้ยว
+เปรี้ยวปาก
+เปรี้ยวหวาน
+เปรียะ
+เปรี๊ยะ
+เปรื่อง
+เปรื่องปราด
+เปรื้อย
+เปล
+เปล่ง
+เปลญวน
+เปลว
+เปลา
+เปล่า
+เปล้า
+เปล้าขลิบทอง
+เปล่าดาย
+เปลาะ
+เปลี้ย
+เปลี่ยน
+เปลี่ยนใจ
+เปลี่ยนตัว
+เปลี่ยนแปลง
+เปลี่ยนแผ่นดิน
+เปลี่ยนมือ
+เปลี่ยนมือไม่ได้
+เปลี่ยนหน้า
+เปลี่ยม
+เปลี่ยว
+เปลี่ยวดำ
+เปลือก
+เปลือกกระเทียม
+เปลือกตา
+เปลือกโลก
+เปลือง
+เปลื้อง
+เปลื้องเครื่องสุกำศพ
+เปลืองใจ
+เปลือย
+เปลือยกาย
+เปศ
+เปศล
+เปศลมัธย์
+เปศัส
+เปศัส-
+เปศัสการิน
+เปศัสการี
+เปสการ
+เปสล
+เปสุญ
+เปสุญ-
+เปสุญวาท
+เปสุไณย
+เป๋อ
+เป้อเย้อ
+เปอร์เซ็นต์
+เป๋อเหลอ
+เปะ
+เปะปะ
+เปา
+เป่า
+เป้า
+เป๊า
+เป๋า
+เป่ากบ
+เป่าแตร
+เป้าประสงค์
+เป่าปี่
+เป่าฝุ่น
+เป่าแล่น
+เป้าหมาย
+เป่าหลอด
+เป่าหู
+เป๋าฮื้อ
+เปาะ
+เปาะเปี๊ยะ
+เปาะแปะ
+เปาะเหลาะ
+เปิก
+เปิง
+เปิงๆ
+เปิงมาง
+เปิด
+เปิดกล้อง
+เปิดคดี
+เปิดฉาก
+เปิดบัญชี
+เปิดเปิง
+เปิดโปง
+เปิดเผย
+เปิดโลก
+เปิดหมวกลา
+เปิดหมวกให้
+เปิดหูเปิดตา
+เปิดอก
+เปิ่น
+เปิบ
+เปิ๊บ
+เปิบข้าว
+เปีย
+เปียก
+เปี๊ยก
+เปี่ยม
+เปียว
+เปี้ยว
+เปียะ
+เปี๊ยะ
+เปือก
+เปือกตม
+เปื้อน
+เปื่อย
+แป
+แป้ง
+แป๋ง
+แป้งข้าวสาลี
+แป้งข้าวหมาก
+แป้งแข็ง
+แป้งจี่
+แป้งแช่
+แป้งญวน
+แป้งนวล
+แป้งฝุ่น
+แป้งมัน
+แป้งมี่
+แป้งร่ำ
+แป้งสด
+แป้งสารภี
+แป้งสาลี
+แป้งสิงคโปร์
+แป้งหมี่
+แป้งเหล้า
+แปด
+แป๊ด
+แปดบท
+แปดปน
+แปดเปื้อน
+แปดสาแหรก
+แปดเหลี่ยมแปดคม
+แปดเหลี่ยมสิบสองคม
+แปทู
+แป้น
+แปบ
+แป๊บ
+แปม
+แปร
+แปร๋
+แปรก
+แปรขบวน
+แปรไข้
+แปรง
+แปร่ง
+แปรงล้างขวด
+แปรงหูหนู
+แปรญัตติ
+แปร๊ด
+แปรธาตุ
+แปร้น
+แปร้นแปร๋
+แปรปรวน
+แปรปากหลากคำ
+แปร๋แปร้น
+แปรผัน
+แปรผันโดยตรง
+แปรผันแบบผกผัน
+แปรพักตร์
+แปรรูป
+แปรอักษร
+แประ
+แปล
+แปล้
+แปลก
+แปลกปลอม
+แปลง
+แปลงชาติ
+แปลงผี
+แปลงสัญชาติ
+แปลตามเนื้อความ
+แปลตามพยัญชนะ
+แปลตามอรรถ
+แปลน
+แปลบ
+แปลยกศัพท์
+แปลร้อย
+แป้ว
+แป๊ว
+แปะ
+แป๊ะ
+แป๊ะซะ
+โป
+โป่
+โป้
+โป๊
+โปก
+โป๊ก
+โป๊กเกอร์
+โปกขร-
+โปกขรณี
+โปกขรพรรษ
+โปกำ
+โปเก
+โปง
+โป่ง
+โป้ง
+โป่งข่าม
+โป่งดิน
+โป่งน้ำ
+โป้งเป้ง
+โป้งโย้ง
+โปงลาง
+โป้งโล้ง
+โป่งวิด
+โป้งโหยง
+โปฐบท
+โปฐปทมาส
+โปดก
+โปตถกะ
+โปน
+โป้ปด
+โป๊ยเซียน
+โปรง
+โปร่ง
+โปร่งเปร่ง
+โปร่งฟ้า
+โปร่งแสง
+โปร่งใส
+โปรด
+โปรดปราน
+โปรดสัตว์
+โปรดสัตว์ได้บาป
+โปรตอน
+โปรตีน
+โปรเตสแตนต์
+โปรย
+โปรยปราย
+โปรีสภา
+โปล่ง
+โปลิโอ
+โปส
+โปสก
+โปสาวนิกมูล
+โปะ
+โป๊ะ
+โป๊ะจ้าย
+ไป
+ไป่
+ไป๋
+ไปค้าถ่าน
+ไปตายเอาดาบหน้า
+ไปทุ่ง
+ไปๆ มาๆ
+ไปย-
+ไปยาล
+ไปรษณีย-
+ไปรษณีย์
+ไปรษณียนิเทศ
+ไปรษณียบรรณ
+ไปรษณียบัตร
+ไปรษณียภัณฑ์
+ไปรษณีย์รับรอง
+ไปรษณียวัตถุ
+ไปรษณียากร
+ไปล่
+ไปล่ปลิว
+ไปลาด
+ไปวัดไปวาได้
+ไปศาจ
+ไปไหนมาสามวาสองศอก
+ไปอย่างน้ำขุ่นๆ
+ผ
+ผก
+ผกผงก
+ผกผัน
+ผกเรือก
+ผกา
+ผกากรอง
+ผกาย
+ผการาย
+ผคม
+ผง
+ผงก
+ผงขาว
+ผงเข้าตาตัวเอง
+ผงคลี
+ผงชูรส
+ผงซักฟอก
+ผงฟู
+ผงม
+ผงร
+ผงอน
+ผงอบ
+ผงะ
+ผงาด
+ผง่าน
+ผจง
+ผจญ
+ผจัญ
+ผจาน
+ผชุม
+ผณิน
+ผณินทร
+ผณินทรสมพัตสร
+ผณิศวร
+ผด
+ผดุง
+ผดุงครรภ์
+ผเดิน
+ผทม
+ผทมเพลิง
+ผนวก
+ผนวช
+ผนัง
+ผนิด
+ผนึก
+ผม
+ผมชิงเกิล
+ผมทรงมหาดไทย
+ผมทัด
+ผมนาง
+ผมบ๊อบ
+ผมปีก
+ผมเป๋
+ผมเปีย
+ผมโป่ง
+ผมไฟ
+ผมมหาดไทย
+ผมม้า
+ผมหลักแจว
+ผยอง
+ผย่ำเผยอ
+ผรณ-
+ผรณาปีติ
+ผรสุ
+ผริต
+ผริต-
+ผรุพก
+ผรุส-
+ผรุสวาท
+ผล
+ผลก
+ผลคุน
+ผลคุนี
+ผลคุนีบูรพมาส
+ผลง
+ผลพลอยได้
+ผลลัพธ์
+ผลอ
+ผล็อง
+ผล็อย
+ผละ
+ผลัก
+ผลัด
+ผลัดเปลี่ยน
+ผลัดแผ่นดิน
+ผลับ
+ผลัวะ
+ผลา
+ผลาญ
+ผลานิสงส์
+ผลาผล
+ผลาหาร
+ผลิ
+ผลิก-
+ผลิกศิขรี
+ผลิกศิลา
+ผลิกะ
+ผลิต
+ผลิต-
+ผลิตกรรม
+ผลิตผล
+ผลิตภัณฑ์
+ผลิน
+ผลี
+ผลีผลาม
+ผลึก
+ผลึ่ง
+ผลือ
+ผลุ
+ผลุง
+ผลุด
+ผลุน
+ผลุนผลัน
+ผลุบ
+ผลุบผลับ
+ผลุบโผล่
+ผลุบๆ โผล่ๆ
+ผลุย
+ผลู
+ผลูบด
+ผลูแบก
+ผวน
+ผวย
+ผวา
+ผสม
+ผสมเทียม
+ผสมผสาน
+ผสมผเส
+ผสมพันธุ์
+ผสมโรง
+ผสมเสร็จ
+ผสาน
+ผสาย
+ผสาร
+ผอก
+ผอง
+ผ่อง
+ผ่องแผ้ว
+ผ่องใส
+ผอด
+ผ่อน
+ผ่อนคลาย
+ผ่อนชำระ
+ผ่อนปรน
+ผ่อนผัน
+ผ่อนส่ง
+ผ่อนสั้นผ่อนยาว
+ผ่อนหนักเป็นเบา
+ผอบ
+ผอม
+ผอมเกร็ง
+ผอมโซ
+ผอมแห้ง
+ผ็อย
+ผ่อย
+ผอวด
+ผอูน
+ผะ
+ผะแคง
+ผะดา
+ผะสา
+ผะออบ
+ผัก
+ผักไก
+ผักขวง
+ผักขี้ขวง
+ผักโฉม
+ผักชี
+ผักชีโรยหน้า
+ผักตบชวา
+ผักต้มขนมยำ
+ผักทอดยอด
+ผักบุ้ง
+ผักบุ้งขัน
+ผักบุ้งจีน
+ผักบุ้งทะเล
+ผักบุ้งฝรั่ง
+ผักบุ้งร้วม
+ผักบุ้งรั้ว
+ผักเบี้ย
+ผักเบี้ยใหญ่
+ผักปลัง
+ผักปุ่มปลา
+ผักเผ็ด
+ผักไผ่
+ผักรู้นอน
+ผักแว่น
+ผักสาบ
+ผักสามหาว
+ผักเสี้ยน
+ผักหนอก
+ผักหนอง
+ผักหนาม
+ผักหวาน
+ผักหวานบ้าน
+ผักหวานป่า
+ผักไหม
+ผักอีแปะ
+ผัคคุณ
+ผัคคุณ-
+ผัคคุณมาส
+ผัคคุณี
+ผัง
+ผังเมือง
+ผัด
+ผัดเจ้าล่อ
+ผัดช้าง
+ผัดผ่อน
+ผัดผัน
+ผัดเพี้ยน
+ผัดวันประกันพรุ่ง
+ผัน
+ผันแปร
+ผันผยอง
+ผันผวน
+ผันผ่อน
+ผันผาด
+ผันผาย
+ผันหม้อ
+ผันอักษร
+ผับ
+ผับๆ
+ผัลคุนี
+ผัว
+ผัวหาบเมียคอน
+ผัวะ
+ผัสส-
+ผัสสะ
+ผัสสาหาร
+ผา
+ผ่า
+ผ้า
+ผาก
+ผากแผ้ง
+ผ้ากราบ
+ผ้าเกี้ยว
+ผ้าขาวม้า
+ผ้าขี้ริ้ว
+ผ้าขี้ริ้วห่อทอง
+ผาง
+ผ้าเช็ดตัว
+ผ้าเช็ดหน้า
+ผาณิต
+ผาด
+ผาดผัง
+ผาดแผลง
+ผาดโผน
+ผาดเพ่ง
+ผาดำ
+ผ้าดำ
+ผ้าดิบ
+ผ้าแดง
+ผ้าตา
+ผาติ
+ผาติกรรม
+ผ้าถุง
+ผ้าแถบ
+ผ้าทิพย์
+ผ้าเทศ
+ผ่าน
+ผ้านุ่ง
+ผ้าใบ
+ผ้าใบกลอย
+ผ้าใบเมี่ยง
+ผ้าป่า
+ผ้าผ่อน
+ผ่าเผย
+ผาเผือก
+ผ้าแฝง
+ผ้าพันคอ
+ผ้าพันแผล
+ผ้าพื้น
+ผาม
+ผ้ามัดหมี่
+ผาย
+ผ่าย
+ผ้าย
+ผายปอด
+ผ่ายผอม
+ผายผัง
+ผายผัน
+ผายลม
+ผ้ายาง
+ผาล
+ผาลคุน
+ผาลา
+ผาลาเพียงไหล่
+ผ้าลาย
+ผ้าลูกไม้
+ผ่าว
+ผาสามเส้า
+ผ้าสำลี
+ผาสุก
+ผ่าหมาก
+ผาหอม
+ผ้าห้อยหอ
+ผ่าเหล่า
+ผ้าเหลือง
+ผ้าเหลืองร้อน
+ผ้าไหว้
+ผ้าอนามัย
+ผ้าอ้อม
+ผ้าอาบ
+ผ้าฮาด
+ผำ
+ผ้ำๆ
+ผิ
+ผิง
+ผิด
+ผิดก
+ผิดใจ
+ผิดตา
+ผิดท่า
+ผิดนัก
+ผิดนัด
+ผิดน้ำ
+ผิดประหลาด
+ผิดผี
+ผิดผู้ผิดคน
+ผิดแผก
+ผิดฝาผิดตัว
+ผิดพ้องหมองใจ
+ผิดเพี้ยน
+ผิดเมีย
+ผิดรูปผิดร่าง
+ผิดสังเกต
+ผิดสำแลง
+ผิดเส้น
+ผิดหวัง
+ผิดหู
+ผิดหูผิดตา
+ผิต
+ผิน
+ผินหลังให้
+ผิว
+ผิวน้ำ
+ผิวบาง
+ผิวปาก
+ผิวเผิน
+ผิวพรรณ
+ผิวหนัง
+ผิว่า
+ผี
+ผีเข้าผีออก
+ผีซ้ำด้ำพลอย
+ผีดิบ
+ผีต
+ผีตองเหลือง
+ผีตากผ้าอ้อม
+ผีถ้วยแก้ว
+ผีถึงป่าช้า
+ผีบ้านไม่ดี ผีป่าก็พลอย
+ผีบุญ
+ผีพุ่งไต้
+ผีเพลีย
+ผีฟ้า
+ผีไม่มีศาล
+ผีเรือน
+ผีเรือนไม่ดี ผีป่าก็พลอย
+ผี้ว์
+ผีเสื้อ
+ผีเสื้อเงิน
+ผีเสื้อน้อย
+ผีเสื้อน้ำ
+ผีเสื้อยักษ์
+ผีหลอก
+ผีอำ
+ผึง
+ผึ่ง
+ผึ้ง
+ผึ่งผาย
+ผึ้งรวง
+ผืน
+ผื่น
+ผุ
+ผุด
+ผุดผ่อง
+ผุดผาด
+ผุดผาย
+ผุดผ้าย
+ผุดลุกผุดนั่ง
+ผุยผง
+ผุสราคา
+ผู้
+ผูก
+ผูกกระได
+ผูกขวัญ
+ผูกขาด
+ผูกดวง
+ผูกดอก
+ผูกพัทธสีมา
+ผูกพัน
+ผูกภาษี
+ผูกมัด
+ผู้กว้างขวาง
+ผูกหู
+ผู้ก่อการร้าย
+ผู้คน
+ผู้จัดการ
+ผู้ชาย
+ผู้ชายพายเรือ
+ผู้ชำนาญการพิเศษ
+ผู้เชี่ยวชาญ
+ผู้ญาณ
+ผู้ดี
+ผู้ดีแปดสาแหรก
+ผู้โดยสาร
+ผู้ต้องขัง
+ผู้ต้องหา
+ผู้ทรง
+ผู้แทนเฉพาะคดี
+ผู้แทนโดยชอบธรรม
+ผู้แทนราษฎร
+ผู้ไทย
+ผู้น้อย
+ผู้เป็นหุ้นส่วน
+ผู้พิทักษ์สันติราษฎร์
+ผู้เยาว์
+ผู้รั้ง
+ผู้รับประกันภัย
+ผู้รับประโยชน์
+ผู้รับเรือน
+ผู้รับเหมาก่อสร้าง
+ผู้ร้าย
+ผู้ลากมากดี
+ผู้วิเศษ
+ผู้สำเร็จ
+ผู้สืบตระกูล
+ผู้สืบสันดาน
+ผู้สื่อข่าว
+ผู้เสียหาย
+ผู้หญิง
+ผู้หญิงยิงเรือ
+ผู้ใหญ่
+ผู้ใหญ่บ้าน
+ผู้อนุบาล
+ผู้เอาประกันภัย
+เผ
+เผง
+เผชิญ
+เผชิญภัย
+เผชิญหน้า
+เผ็ด
+เผด็จ
+เผด็จการ
+เผ็ดร้อน
+เผดิม
+เผดียง
+เผน-
+เผ่น
+เผนธรรม
+เผนิก
+เผย
+เผยแผ่
+เผยแพร่
+เผยอ
+เผยิบ
+เผยิบผยาบ
+เผล
+เผล่
+เผล้
+เผล็ด
+เผลอ
+เผลอไผล
+เผละ
+เผลาะ
+เผลาะแผละ
+เผลียง
+เผอเรอ
+เผอเรอกระเชอก้นรั่ว
+เผอิญ
+เผอิล
+เผะ
+เผา
+เผ่า
+เผ้า
+เผาขน
+เผาจริง
+เผ้าผง
+เผ่าพันธุ์
+เผาหลอก
+เผาหัว
+เผาะ
+เผิ้ง
+เผิน
+เผินๆ
+เผียน
+เผือ
+เผื่อ
+เผือก
+เผือกกะลา
+เผือกโทป้าด
+เผื่อขาดเผื่อเหลือ
+เผือด
+เผือน
+เผื่อน
+เผื่อแผ่
+เผื่อว่า
+เผื่อเหนียว
+เผื่อเหลือเผื่อขาด
+แผ่
+แผก
+แผ่กระจาด
+แผง
+แผงคอ
+แผงลอย
+แผ่แง่
+แผ่ซ่าน
+แผด
+แผ่ตน
+แผน
+แผ่น
+แผนก
+แผนการ
+แผนงาน
+แผ่นดิน
+แผ่นดินกลบหน้า
+แผ่นดินไหว
+แผนที่
+แผ่นผงอน
+แผนผัง
+แผ่นพก
+แผ่นภพ
+แผนภาพ
+แผนภูมิ
+แผ่นเสียง
+แผ่เผื่อ
+แผ่เมตตา
+แผล
+แผลเก่า
+แผลง
+แผลงฤทธิ์
+แผล็บ
+แผล็บๆ
+แผลเป็น
+แผลริมแข็ง
+แผลริมอ่อน
+แผล็ว
+แผละ
+แผ่ว
+แผ่วๆ
+แผ้ว
+แผ้วพาน
+แผ่สองสลึง
+แผ่หลา
+แผ่อำนาจ
+โผ
+โผง
+โผงผาง
+โผงเผง
+โผฏฐัพ-
+โผฏฐัพธรรม
+โผฏฐัพพะ
+โผน
+โผเผ
+โผย
+โผล่
+โผลกเผลก
+โผละ
+โผอน
+โผะ
+ไผ
+ไผ่
+ไผท
+ไผทโกรม
+ไผ่ผัง
+ฝ
+ฝน
+ฝนชะช่อมะม่วง
+ฝนชะลาน
+ฝนซู่
+ฝนตกก็แช่ง ฝนแล้งก็ด่า
+ฝนตกขี้หมูไหล
+ฝนตกไม่ทั่วฟ้า
+ฝนตกไม่มีเค้า
+ฝนตกอย่าเชื่อดาว
+ฝนทอง
+ฝนทั่งให้เป็นเข็ม
+ฝนเทียม
+ฝนไล่ช้าง
+ฝนสั่งฟ้า
+ฝนสั่งฟ้า ปลาสั่งหนอง
+ฝนแสนห่า
+ฝนห่าแก้ว
+ฝรั่ง
+ฝรั่งกังไส
+ฝรั่งขี้นก
+ฝรั่งมังค่า
+ฝรั่งเศส
+ฝ่อ
+ฝอย
+ฝอยทอง
+ฝัก
+ฝักแค
+ฝักถั่ว
+ฝักบัว
+ฝักฝ่าย
+ฝักใฝ่
+ฝักพร้า
+ฝักเพกา
+ฝักมะขาม
+ฝักยาว
+ฝัง
+ฝั่ง
+ฝังเข็ม
+ฝังใจ
+ฝั่งฝา
+ฝังรกฝังราก
+ฝังรอย
+ฝังรูป
+ฝังหัว
+ฝัด
+ฝัน
+ฝันกลางวัน
+ฝันเปียก
+ฝันเฟื่อง
+ฝา
+ฝ่า
+ฝ้า
+ฝาก
+ฝากกอง
+ฝากกาย
+ฝากไข้
+ฝากครรภ์
+ฝากตัว
+ฝากท้อง
+ฝากเนื้อฝากตัว
+ฝากเนื้อไว้กับเสือ
+ฝากบำเรอ
+ฝากประจำ
+ฝากปลาไว้กับแมว
+ฝากผี
+ฝากผีฝากไข้
+ฝากเผื่อเรียก
+ฝากฝัง
+ฝากระดาน
+ฝากโรงเรียน
+ฝากไว้ก่อน
+ฝากสู่
+ฝ่าคมหอกคมดาบ
+ฝาง
+ฝาชี
+ฝาด
+ฝาน
+ฝ่าฝืน
+ฝาแฝด
+ฝ่าพระบาท
+ฝ่าฟัน
+ฝ่ามรสุม
+ฝาย
+ฝ่าย
+ฝ้าย
+ฝ่ายขวา
+ฝ่ายค้าน
+ฝ้ายคำ
+ฝ่ายซ้าย
+ฝ่ายใน
+ฝ่ายเป็นกลาง
+ฝ้ายผี
+ฝ่ายเสนอ
+ฝ่ายหน้า
+ฝาละมี
+ฝาสายบัว
+ฝาสำหรวด
+ฝาเสี้ยว
+ฝาหอยโข่ง
+ฝาหุ้มกลอง
+ฝาไหล
+ฝิ่น
+ฝิ่นต้น
+ฝี
+ฝี่
+ฝีก
+ฝีกาฬ
+ฝีจัก
+ฝีจักร
+ฝีดาษ
+ฝีดิบ
+ฝีเท้า
+ฝีในท้อง
+ฝีปาก
+ฝีพาย
+ฝีมะม่วง
+ฝีมือ
+ฝีไม้ลายมือ
+ฝีเย็บ
+ฝีหมอบ
+ฝึก
+ฝึกงาน
+ฝึกปรือ
+ฝึกฝน
+ฝึกสอน
+ฝึกหัด
+ฝืด
+ฝืดเคือง
+ฝืน
+ฝืนท้อง
+ฝุ่น
+ฝุ่นเมือง
+ฝูง
+ฝูงบิน
+เฝ้า
+เฝ้าไข้
+เฝ้าคอย
+เฝ้าแหน
+เฝือ
+เฝือก
+เฝือง
+เฝื่อน
+แฝก
+แฝกหอม
+แฝง
+แฝด
+แฝดน้ำ
+แฝดเลือด
+ใฝ่
+ใฝ่ใจ
+ใฝ่ต่ำ
+ใฝ่ฝัน
+ใฝ่ร้อนจะนอนเย็น ใฝ่เย็นจะดิ้นตาย
+ใฝ่สูง
+ใฝ่สูงจนเกินศักดิ์
+ใฝ่สูงให้เกินศักดิ์
+ไฝ
+พ
+พก
+พกจร
+พกนุ่น
+พกพ่าย
+พกลม
+พกหิน
+พกา
+พกุระ
+พกุล
+พง
+พงพี
+พงศ-
+พงศ์
+พงศกร
+พงศธร
+พงศ์พันธุ์
+พงศา
+พงศาวดาร
+พงศาวลี
+พจน-
+พจน์
+พจนา
+พจนานุกรม
+พจนารถ
+พจนีย์
+พจมาน
+พจี
+พชระ
+พญา
+พญากาสัก
+พญาขามป้อม
+พญาฉัททันต์
+พญาช้างเผือก
+พญาณ
+พญาดาบหัก
+พญาเดิน
+พญาไทย
+พญาปากกว้าง
+พญาแปแล
+พญาพยาต
+พญาไฟ
+พญามะขามป้อม
+พญามือเหล็ก
+พญามุตติ
+พญามูมิน
+พญาไม้
+พญายา
+พญารากดำ
+พญารากเดียว
+พญาไร้ใบ
+พญาลอ
+พญาโศก
+พญาสัตบรรณ
+ฯพณฯ
+พณิช
+พณิชย์
+พด
+พดกริช
+พดด้วง
+พธู
+พน
+พน-
+พ่น
+พ้น
+พนขัณฑ์
+พนโคจร
+พนจร
+พนจรก
+พนชีวี
+พนธารา
+พนม
+พนมเพลิง
+พนมศก
+พนมศพ
+พนมสวรรค์
+พนวาสี
+พ้นวิสัย
+พนสณฑ์
+พนอง
+พนอม
+พนัก
+พนักงาน
+พนักงานเจ้าหน้าที่
+พนักงานสอบสวน
+พนักงานอัยการ
+พนัง
+พนัน
+พนันดร
+พนัส
+พนัส-
+พนัสดม
+พนัสบดี
+พนา
+พนาด
+พนาดร
+พนาดอน
+พนาธวา
+พนานดร
+พนาย
+พนาราม
+พนาลัย
+พนาลี
+พนาวา
+พนาวาส
+พนาเวศ
+พนาศรม
+พนาศรัย
+พนาสณฑ์
+พนาสัณฑ์
+พนิดา
+พนิต
+พนียก
+พเนก
+พเนจร
+พบ
+พบปะ
+พบพาน
+พบไม้งามเมื่อขวานบิ่น
+พบู
+พม่า
+พม่าแทงกบ
+พม่ารำขวาน
+พยช
+พยชน์
+พยติเรก
+พยนต์
+พยศ
+พยัก
+พยักพเยิด
+พยักยิ้ม
+พยัคฆ-
+พยัคฆ์
+พยัคฆา
+พยัคฆิน
+พยัคฆินทร์
+พยัคฆี
+พยัคเฆนทร์
+พยัชน์
+พยัญชนะ
+พยัต
+พยับ
+พยับแดด
+พยับฝน
+พยับเมฆ
+พยับหมอก
+พยากรณ์
+พยาฆร์
+พยางค์
+พยาธิ
+พยาน
+พยาบาท
+พยาบาล
+พยาม
+พยายาม
+พยาล
+พยาล-
+พยาลมฤค
+พยุ
+พยุง
+พยุงปีก
+พยุห-
+พยุหบาตร
+พยุหบาตรา
+พยุหยาตรา
+พยุหโยธา
+พยุหร
+พยุหเสนา
+พยุหแสนยา
+พยุหแสนยากร
+พยุหะ
+พยู่ห์
+พเยีย
+พร
+พรต
+พรม
+พรมคด
+พรมคดตีนเต่า
+พรมแดน
+พรมน้ำมัน
+พรมนิ้ว
+พรมมิ
+พรรค
+พรรค-
+พรรค์
+พรรคกลิน
+พรรคการเมือง
+พรรคนาวิกโยธิน
+พรรคนาวิน
+พรรคพวก
+พรรคานต์
+พรรณ
+พรรณนา
+พรรณราย
+พรรดึก
+พรรลาย
+พรรษ
+พรรษ-
+พรรษประเวศ
+พรรษฤดู
+พรรษวุฒิ
+พรรษา
+พรรษากาล
+พรรษาคม
+พรรษายุต
+พรรโษทก
+พรรโษบล
+พรรเหา
+พรรเอิญ
+พรวงเพรียง
+พรวด
+พรวดพราด
+พรวน
+พรสวรรค์
+พรหม
+พรหม-
+พรหมกาย
+พรหมโคล
+พรหมจรรย์
+พรหมจักร
+พรหมจาริณี
+พรหมจารี
+พรหมชาติ
+พรหมทัณฑ์
+พรหมไทย
+พรหมธาดา
+พรหมบถ
+พรหมบท
+พรหมบริษัท
+พรหมบุตร
+พรหมปุโรหิต
+พรหมพักตร์
+พรหมพันธุ์
+พรหมภูติ
+พรหมยาน
+พรหมเรขา
+พรหมฤษี
+พรหมลิขิต
+พรหมวิหาร
+พรหมศร
+พรหมสี่หน้า
+พรหมสูตร
+พรหมหัวเหม็น
+พรหมโองการ
+พรหมัญตา
+พรหมา
+พรหมาณฑ์
+พรหมาสตร์
+พรหมินทร์
+พรหเมนทร์
+พรหเมศวร
+พรอก
+พร่อง
+พร้อง
+พร้องเพรียก
+พรอด
+พร้อม
+พร่อมพร้อ
+พร้อมพรัก
+พร้อมพรั่ง
+พร้อมเพรียง
+พร้อมมูล
+พร้อมหน้า
+พร้อมหน้าพร้อมตา
+พร่อย
+พร้อย
+พระ
+พระกรน้อย
+พระครู
+พระคุณเจ้า
+พระเคราะห์
+พระเครื่อง
+พระจันทร์ครึ่งซีก
+พระเจ้า
+พระเจ้าลอยถาด
+พระเจ้าหลวง
+พระเจ้าห้าพระองค์
+พระเจ้าอยู่หัว
+พระเดชพระคุณ
+พระทอง
+พระทัย
+พระธรรมศาสตร์
+พระนม
+พระนอม
+พระนาง
+พระนางเจ้า
+พระนางเธอ
+พระนาด
+พระนาย
+พระบฏ
+พระบท
+พระประธาน
+พระเป็นเจ้า
+พระผู้เป็นเจ้า
+พระแผง
+พระพิมพ์
+พระพุทธเจ้า
+พระพุทธเจ้าข้า
+พระพุทธเจ้าข้าขอรับ
+พระพุทธเจ้าข้าขอรับใส่เกล้าใส่กระหม่อม
+พระพุทธเจ้าหลวง
+พระพุทธเจ้าอยู่หัว
+พระพุทธองค์
+พระภูมิ
+พระมาลัยมาโปรด
+พระยา
+พระยาเทครัว
+พระยาเล็บครุฑ
+พระยาวัน
+พระรอง
+พระราชกฤษฎีกา
+พระราชกำหนด
+พระราชบัญญัติ
+พระรูป
+พระรูปชี
+พระฤๅษี
+พระลบ
+พระลือ
+พระแวว
+พระศุกร์เข้าพระเสาร์แทรก
+พระหา
+พระหาม
+พระหารณย์
+พระหารัณย์
+พระหิด
+พระองค์
+พระองค์เจ้า
+พระอันดับ
+พระอิฐพระปูน
+พระเอก
+พระฮาม
+พรักพร้อม
+พรั่ง
+พรั่งพร้อม
+พรั่งพรู
+พรัด
+พรั่น
+พรั่นพรึง
+พรับ
+พร่า
+พร้า
+พราก
+พรากเด็ก
+พรากผู้เยาว์
+พรากลูกนกลูกกา
+พราง
+พร่าง
+พรางพรอก
+พร้างัดปากไม่ออก
+พราด
+พราน
+พราย
+พรายทะเล
+พรายน้ำ
+พรายแพรว
+พรายย้ำ
+พราว
+พราวแพรว
+พราหมณ์
+พราหมณ์เก็บหัวแหวน
+พราหมณ์ขายเมีย
+พราหมณ์ดีดน้ำเต้า
+พราหมณัศบดี
+พราหมณี
+พราหมี
+พรำ
+พรำๆ
+พร่ำ
+พร้ำ
+พร่ำพลอด
+พร่ำเพรื่อ
+พร่ำเพ้อ
+พริก
+พริกกระต่าย
+พริกกะเกลือ
+พริกแกว
+พริกขิง
+พริกดอง
+พริกเทศ
+พริกไทย
+พริกน้ำส้ม
+พริกหอม
+พริกเหลือง
+พริ้ง
+พริ้งพราย
+พริ้งเพริศ
+พริบ
+พริบตาเดียว
+พริบไหว
+พริ้ม
+พริ้มพราย
+พริ้มเพรา
+พรึง
+พรึน
+พรึบ
+พรืด
+พรุ
+พรุก
+พรุ่ง
+พรุ่งนี้
+พรุน
+พรู
+พรูด
+พฤกษ-
+พฤกษ์
+พฤกษชาติ
+พฤกษทล
+พฤกษเทวดา
+พฤกษราช
+พฤกษศาสตร์
+พฤกษา
+พฤฒ
+พฤฒา
+พฤฒาจารย์
+พฤฒิ
+พฤฒิ-
+พฤฒิบาศ
+พฤต
+พฤติ
+พฤติ-
+พฤติกรรม
+พฤติการณ์
+พฤตินัย
+พฤทธ์
+พฤทธิ์
+พฤนต์
+พฤนท์
+พฤภูษณ
+พฤภูษิต
+พฤศจิก
+พฤศจิกายน
+พฤษภ
+พฤษภาคม
+พฤหัสบดี
+พฤหัสบดีจักร
+พล
+พล-
+พลกาย
+พลการ
+พลขันธ์
+พลความ
+พลตระเวน
+พลเทพ
+พลบ
+พลเมือง
+พลเรือน
+พลโลก
+พลว-
+พลวก
+พลวง
+พลวดกินลูก
+พลวดใหญ่
+พลวัต
+พลศาสตร์
+พลศึกษา
+พลสิงห์
+พลอ
+พล้อ
+พลอง
+พลอด
+พลอดรัก
+พลอน
+พลอมแพลม
+พลอย
+พล่อย
+พลอยฟ้าพลอยฝน
+พละ
+พละพลา
+พลั่ก
+พลัง
+พลั่ง
+พลั้ง
+พลังงาน
+พลังงานจลน์
+พลังงานศักย์
+พลังจิต
+พลั้งปาก
+พลั้งปากเสียศีล พลั้งตีนตกต้นไม้
+พลั้งเผลอ
+พลัด
+พลัดถิ่น
+พลัดที่นาคาที่อยู่
+พลัดพราก
+พลัน
+พลับ
+พลับเขา
+พลับพลา
+พลับพลึง
+พลั่ว
+พล่า
+พลากร
+พลาง
+พลาญ
+พลาด
+พลาดท่า
+พลาดิศัย
+พลาธิการ
+พล่าน
+พลานามัย
+พลานึก
+พลาม
+พล่าม
+พลาย
+พลายม้า
+พลาสติก
+พลาสมา
+พลาหก
+พลำ
+พล้ำ
+พลำภัง
+พลิ
+พลิก
+พลิกกระเป๋า
+พลิกแผ่นดิน
+พลิกแพลง
+พลิกศพ
+พลิกหน้ามือเป็นหลังมือ
+พลิพัท
+พลิ้ว
+พลี
+พลีกรรม
+พลีมุข
+พลุ
+พลุก
+พลุ่ก
+พลุกพล่าน
+พลุ่ง
+พลุ้น
+พลุ่มพล่าม
+พลุ่ย
+พลุ้ย
+พลู
+พลูแก
+พลูคาว
+พลูต้น
+พลูโต
+พลูโทเนียม
+พวก
+พวกพ้อง
+พวง
+พ่วง
+พวงโกเมน
+พวงคราม
+พวงชมพู
+พวงดอกไม้
+พ่วงพี
+พวงมาลัย
+พวงมาลา
+พวงแสด
+พวงหยก
+พวงหรีด
+พวงอุไร
+พวน
+พวย
+พวยน้ำ
+พวยพุ่ง
+พสก
+พสก-
+พสกนิกร
+พสน
+พสุ
+พสุธา
+พสุธาดล
+พสุนธรา
+พสุมดี
+พสุสงกรานต์
+พหล
+พหุ
+พหุคูณ
+พหุพจน์
+พหุภาคี
+พหุล
+พหู
+พหูพจน์
+พหูสูต
+พอ
+พ่อ
+พ้อ
+พอก
+พอกพูน
+พอกัน
+พอกันที
+พอการ
+พอก้าวขาก็ลาโรง
+พ่อเกลอ
+พ่อขุน
+พ่อครัว
+พอควร
+พ่อค้าตีเมีย
+พ่อคุณ
+พอง
+พ้อง
+พ้องพาน
+พ่อเจ้า
+พ่อแจ้แม่อู
+พอใจ
+พอใช้
+พอใช้ได้
+พอดี
+พอดีพอร้าย
+พอดู
+พอดูได้
+พอได้
+พอตัว
+พ่อตา
+พอทำเนา
+พอทำพอกิน
+พอที
+พอที่
+พอน
+พอนเรือ
+พ่อบ้าน
+พอประมาณ
+พอไปได้
+พ่อพวงมาลัย
+พอฟัด
+พอฟัดพอเหวี่ยง
+พ้อม
+พ่อม่าย
+พอมีพอกิน
+พอมีอันจะกิน
+พ่อเมือง
+พอยกขาก็ลาโรง
+พอแย้มปากก็เห็นไรฟัน
+พ่อร้าง
+พ่อเรือน
+พอแรง
+พ่อลิ้นทอง
+พ่อเลี้ยง
+พอเลี้ยงปากเลี้ยงท้อง
+พอโลเนียม
+พอสถานประมาณ
+พ่อสื่อ
+พอหอมปากหอมคอ
+พอเหมาะ
+พออ้าปากก็เห็นลิ้นไก่
+พะ
+พ่ะ
+พะงา
+พะงาบ
+พะงาบๆ
+พะจง
+พะทำมะรง
+พะนอ
+พะเน้าพะนอ
+พะเน้าพะนึง
+พะเนิน
+พะเนินเทินทึก
+พะเนียง
+พะแนง
+พะพาน
+พะพิง
+พะเพิง
+พะยอม
+พ่ะย่ะค่ะ
+พะยุพยุง
+พะยูง
+พะยูน
+พะเยิบ
+พะเยิบๆ
+พะเยิบพะยาบ
+พะรุงพะรัง
+พะเลย
+พะโล้
+พะไล
+พะวง
+พะวักพะวน
+พะวา
+พะว้าพะวัง
+พะอง
+พะอากพะอำ
+พะอืดพะอม
+พัก
+พักตร-
+พักตร์
+พักตรา
+พักตรากฤติ
+พักตา
+พักผ่อน
+พักพิง
+พักแพว
+พักฟื้น
+พักร
+พักสมอง
+พัง
+พังกา
+พังคา
+พังงา
+พังผืด
+พังพวย
+พังพอน
+พังพาน
+พังพาบ
+พังเพย
+พัช
+พัชนี
+พัชร
+พัญจก
+พัญจน์
+พัฒกี
+พัฒน-
+พัฒนะ
+พัฒนา
+พัฒนากร
+พัฒนาการ
+พัด
+พัดชัก
+พัดชา
+พัดดึงส์
+พัดโบก
+พัดแพว
+พัดยศ
+พัดลม
+พัดหลวง
+พัตติงสะ
+พัตร
+พัทธ-
+พัทธ์
+พัทธยา
+พัทธยากร
+พัทธสีมา
+พัทร
+พัน
+พันงู
+พันจ่า
+พันจำ
+พันไฉน
+พันซาด
+พันตัน
+พันตา
+พันตู
+พันทาง
+พันธ-
+พันธ์
+พันธกรณี
+พันธน-
+พันธนะ
+พันธนาการ
+พันธนาคาร
+พันธนำ
+พันธบัตร
+พันธมิตร
+พันธะ
+พันธุ
+พันธุ์
+พันเนตร
+พันปี
+พันพัว
+พันลอก
+พันลาย
+พันลำ
+พันลึก
+-พันลือ
+พันเลิศ
+พันวรรษา
+พันแสง
+พันเอิญ
+พับ
+พับเขียง
+พับฐาน
+พับผ้า
+พับเพียบ
+พับแพนงเชิง
+พัลลภ
+พัลวัน
+พัว
+พัวพัน
+พัวะ
+พัศดี
+พัสดุ
+พัสดุไปรษณีย์
+พัสดุภัณฑ์
+พัสเดา
+พัสตร์
+พัสถาน
+พา
+พาก
+พากเพียร
+พากย์
+พากย์หนัง
+พาง
+พ่าง
+พาชี
+พาซื่อ
+พาณ
+พาณ-
+พาณโยชน์
+พาณวาร
+พาณาสน์
+พาณิช
+พาณิชย์
+พาณินี
+พาณี
+พาด
+พาดควาย
+พาดไฉน
+พาดพิง
+พาดหัวข่าว
+พาต
+พาท
+พาทย์
+พาธ
+พาธา
+พาน
+พ่าน
+พานกลีบบัว
+พานปากกระจับ
+พานร
+พานรินทร์
+พานเรศ
+พานแว่นฟ้า
+พาม
+พาย
+พ่าย
+พายม้า
+พายเรือคนละที
+พายเรือทวนน้ำ
+พายเรือในหนอง
+พายเรือในอ่าง
+พายัพ
+พายุ
+พาร์เซก
+พารณ
+พารณะ
+พารา
+พาราฟิน
+พาล
+พาลกระแชง
+พาลรีพาลขวาง
+พาลา
+พาลี
+พาลีหลายหน้า
+พาลุก
+พาโล
+พาไล
+พาส
+พาสน์
+พาสนา
+พาสุกรี
+พาห
+พ่าห์
+พาหนะ
+พาหะ
+พาหา
+พาหิรกะ
+พาหิระ
+พาหุ
+พาหุยุทธ์
+พาหุรัด
+พาเหียร
+พาฬ
+พาฬ-
+พาฬมฤค
+พาฬหะ
+พำ
+พำนัก
+พำพวก
+พำพึม
+พำๆ พึมๆ
+พำลา
+พิกล
+พิกเลนทรีย์
+พิกสิต
+พิกัด
+พิกัดอัตราศุลกากร
+พิกัติ
+พิกัน
+พิการ
+พิกุล
+พิกุลป่า
+พิเคราะห์
+พิฆน์
+พิฆเนศ
+พิฆเนศวร
+พิฆาต
+พิง
+พิจย
+พิจล
+พิจัย
+พิจาร
+พิจารณ์
+พิจารณา
+พิจิก
+พิจิต
+พิจิตร
+พิชญ์
+พิชย
+พิชัย
+พิชัยสงคราม
+พิชาน
+พิชิต
+พิชิต-
+พิชิตมาร
+พิเชฐ
+พิเชียร
+พิฑูรย์
+พิณ
+พิณพาทย์
+พิดทูล
+พิดรก
+พิดาน
+พิโดร
+พิตร
+พิถย-
+พิถยันดร
+พิถี
+พิถีพิถัน
+พิทย-
+พิทย์
+พิทยา
+พิทยาคม
+พิทยาคาร
+พิทยาธร
+พิทยาพล
+พิทยาลัย
+พิทักษ์
+พิทักษ์สันติ
+พิทูร
+พิเทศ
+พิธาน
+พิธี
+พิธีกร
+พิธีกรรม
+พิธีการ
+พิธีจุ่ม
+พิธีแตก
+พิธีธรรม
+พิธีมณฑล
+พิธีรีตอง
+พิธีสาร
+พิธุ
+พิธุร
+พินทุ
+พินทุกัป
+พินทุสร
+พินพง
+พิ่นพั่ง
+พินอบพิเทา
+พินัย
+พินัยกรรม
+พินาศ
+พินิจ
+พินิต
+พินิศ
+พินิศจัย
+พิเนต
+พิบัติ
+พิบาก
+พิบุล
+พิบูล
+พิปริต
+พิปลาส
+พิปัสสนา
+พิพรรธ
+พิพรรธน์
+พิพักพิพ่วน
+พิพัฒ
+พิพัฒน์
+พิพากษ์
+พิพากษา
+พิพาท
+พิพิธ
+พิพิธ-
+พิพิธภัณฑ์
+พิพิธภัณฑสถาน
+พิภพ
+พิภัช
+พิภาค
+พิภูษณะ
+พิเภก
+พิมปะการัง
+พิมพ-
+พิมพ์
+พิมพการัง
+พิมพ์เขียว
+พิมพ์ใจ
+พิมพ์ดีด
+พิมพ์ทอง
+พิมพ์ลายมือ
+พิมพ์สัมผัส
+พิมพา
+พิมพาภรณ์
+พิมโพหนะ
+พิมล
+พิมเสน
+พิมาน
+พิมุข
+พิโมกข์
+พิโมกษ์
+พิโยกพิเกน
+พิโยค
+พิร
+พิรอด
+พิรากล
+พิราบ
+พิราม
+พิราลัย
+พิริย-
+พิริยพฤนท์
+พิริยโยธา
+พิริยะ
+พิรี้พิไร
+พิรุณ
+พิรุธ
+พิรุฬห์
+พิเราะ
+พิโรธ
+พิโรธนะ
+พิไร
+พิลังกาสา
+พิลาป
+พิลาลส
+พิลาส
+พิลิปดา
+พิลึก
+พิลึกกึกกือ
+พิลึกพิลั่น
+พิโลน
+พิโลล
+พิไล
+พิศ
+พิศวง
+พิศวาส
+พิศาล
+พิศุทธ์
+พิศุทธิ์
+พิเศษ
+พิษ
+พิษ-
+พิษฐาน
+พิษนาศน์
+พิษสง
+พิษสมโยค
+พิษสุนัขบ้า
+พิษสุราเรื้อรัง
+พิสดาร
+พิสมร
+พิสมัย
+พิสมัยเรียงหมอน
+พิสัง
+พิสัช
+พิสัญญี
+พิสัย
+พิสิฐ
+พิสุทธิ์
+พิสูจน์
+พิหค
+พิหเคนทร์
+พิหาร
+พิฬาร
+พี
+พี่
+พี้
+พีชคณิต
+พี่น้อง
+พี่เบิ้ม
+พี้โพ้
+พีร-
+พีระมิด
+พี่เลี้ยง
+พึง
+พึ่ง
+พึ่งจมูกคนอื่นหายใจ
+พึงใจ
+พึงตา
+พึ่งลำแข้งตัวเอง
+พึ่บ
+พึม
+พึมพำ
+พืช
+พืชคาม
+พืชชั้นต่ำ
+พืชชั้นสูง
+พืชพันธุ์
+พืด
+พื้น
+พื้นๆ
+พื้นความรู้
+พื้นฐาน
+พื้นดี
+พื้นเดิม
+พื้นที่
+พื้นบ้าน
+พื้นเพ
+พื้นเมือง
+พื้นเสีย
+พุ
+พุก
+พุกาม
+พุง
+พุ่ง
+พุงแก
+พุงจง
+พุงดอ
+พุงทะลาย
+พุงปลา
+พุงปลาช่อน
+พุงพวง
+พุงพ่วง
+พุ่งหลาว
+พุ่งหอกเข้ารก
+พุ่งแหลน
+พุฒ
+พุฒิ
+พุด
+พุดตาน
+พุทธ
+พุทธ-
+พุทธกาล
+พุทธคุณ
+พุทธจักร
+พุทธเจดีย์
+พุทธชาด
+พุทธฎีกา
+พุทธตันตระ
+พุทธปฏิมา
+พุทธปฏิมากร
+พุทธมามกะ
+พุทธรักษา
+พุทธศักราช
+พุทธศาสนิกชน
+พุทธสมัย
+พุทธะ
+พุทธังกูร
+พุทธันดร
+พุทธางกูร
+พุทธาวาส
+พุทธิ
+พุทธุปบาทกาล
+พุทโธ่
+พุทรา
+พุธ
+พุพอง
+พุ่ม
+พุ่มข้าวบิณฑ์
+พุ่มพวง
+พุ่มม่าย
+พุมเรียง
+พุ้ย
+พู
+พู่
+พู่กลิ่น
+พู่กัน
+พูกาม
+พูด
+พูดคล่องเหมือนล่องน้ำ
+พูดจนลิงหลับ
+พูดจริงทำจริง
+พูดเป็นต่อยหอย
+พูดเป็นนัย
+พูดเป็นน้ำไหลไฟดับ
+พูดเป็นไฟ
+พูดไปสองไพเบี้ย นิ่งเสียตำลึงทอง
+พูดอย่างมะนาวไม่มีน้ำ
+พูน
+พู้น
+พูพอน
+พู่ระหง
+เพ
+เพ็ก
+เพกา
+เพคะ
+เพ็ง
+เพ่ง
+เพ่งเล็ง
+เพ็จ
+เพ็จไม้
+เพชฉลูกรรม
+เพชฌฆาต
+เพชร
+เพชร-
+เพชรกลับ
+เพชรซีก
+เพชรดา
+เพชรตัดเพชร
+เพชรตาแมว
+เพชรน้ำค้าง
+เพชรน้ำหนึ่ง
+เพชรนิลจินดา
+เพชรปาณี
+เพชรร่วง
+เพชรร้าว
+เพชรฤกษ์
+เพชรลูก
+เพชรสังฆาต
+เพชรหลีก
+เพชรหึง
+เพชรายุธ
+เพ็ญ
+เพฑูริย์
+เพณี
+เพ็ดทูล
+เพดาน
+เพดานบิน
+เพตร
+เพท
+เพทนา
+เพทาย
+เพทุบาย
+เพโท
+เพโทบาย
+เพ่นพ่าน
+เพนียด
+เพไนย
+เพ้ย
+เพรง
+เพรซีโอดิเมียม
+เพรา
+เพรางาย
+เพราพริ้ง
+เพราเพริศ
+เพราะ
+เพราะฉะนั้น
+เพราะว่า
+เพริด
+เพริศ
+เพริศพราย
+เพริศพริ้ง
+เพริศแพร้ว
+เพรียก
+เพรียกพร้อง
+เพรียง
+เพรียงคอห่าน
+เพรียงเมือง
+เพรียบ
+เพรี้ยม
+เพรี้ยมพราย
+เพรียว
+เพรียวลม
+เพรื่อ
+เพรือง
+เพล
+เพลง
+เพลงเชิด
+เพลงตระเชิญ
+เพลงยาว
+เพลงสาธุการ
+เพลงเสมอ
+เพลงหน้าพาทย์
+เพล็ด
+เพล้โพล้
+เพลา
+เพลาะ
+เพลาะแพละ
+เพลิง
+เพลิงกัลป์
+เพลิงฟ้า
+เพลิดเพลิน
+เพลิน
+เพลีย
+เพลี้ย
+เพลี่ยง
+เพลี่ยงพล้ำ
+เพลียใจ
+เพศ
+เพศยันดร
+เพส
+เพสลาด
+เพ่อ
+เพ้อ
+เพ้อเจ้อ
+เพอิญ
+เพะ
+เพา
+เพาพะงา
+เพาพาล
+เพาะ
+เพิก
+เพิกเฉย
+เพิกถอน
+เพิง
+เพิ่ง
+เพิดเพ้ย
+เพิ่ม
+เพิ่มเติม
+เพิ่มพูน
+เพี้ย
+เพี้ยกวาน
+เพี้ยกว้าน
+เพียง
+เพี้ยง
+เพียงดัง
+เพียงนั้น
+เพียงนี้
+เพียงพอ
+เพียงออ
+เพียชน์
+เพียน
+เพี้ยน
+เพี้ยนผัด
+เพียบ
+เพียบพร้อม
+เพียร
+เพื่อ
+เพื่อน
+เพื่อนเกลอ
+เพื่อนเจ้าบ่าว
+เพื่อนเจ้าสาว
+เพื่อนบ้าน
+เพื่อนฝูง
+แพ
+แพ้
+แพขนานยนต์
+แพง
+แพ่ง
+แพงพวย
+แพงพวยฝรั่ง
+แพ็งแพว
+แพแตก
+แพทย-
+แพทย์
+แพทยศาสตร์
+แพทยา
+แพ้ท้อง
+แพน
+แพ่น
+แพนก
+แพนงเชิง
+แพ้เป็นพระ ชนะเป็นมาร
+แพ้เปรียบ
+แพ้ผม
+แพ้ผัว
+แพ้ฟัน
+แพ้ภัยตัว
+แพ้เมีย
+แพร
+แพร่
+แพรก
+แพร่ข่าว
+แพร่ง
+แพร่งพราย
+แพรว
+แพร้ว
+แพรวพราย
+แพรวพราว
+แพร่หลาย
+แพ้รู้
+แพ้แรง
+แพลง
+แพลทินัม
+แพลม
+แพลเลเดียม
+แพละ
+แพละโลม
+แพลูกบวบ
+แพว
+แพ้ว
+แพศย์
+แพศยา
+แพะ
+แพะรับบาป
+แพะโลม
+โพ
+โพก
+โพกพาย
+โพง
+โพงพาง
+โพชฌงค์
+โพซิตรอน
+โพด
+โพทะเล
+โพแทสเซียม
+โพธ
+โพธิ-
+โพธิ์
+โพธิญาณ
+โพธิบัลลังก์
+โพธิปักขิยธรรม
+โพธิสมภาร
+โพธิสัตว์
+โพน
+โพ้น
+โพนทะนา
+โพ้นทะเล
+โพนเพน
+โพบาย
+โพผัน
+โพย
+โพยก๊วน
+โพยม
+โพยมยาน
+โพยมัน
+โพยมาน
+โพรก
+โพรง
+โพรงแสม
+โพรโทแอกทิเนียม
+โพรมีเทียม
+โพระดก
+โพล่
+โพลง
+โพล่ง
+โพล้ง
+โพลน
+โพล้เพล้
+โพละ
+โพสพ
+ไพ
+ไพ่
+ไพจิตร
+ไพชน
+ไพชยนต์
+ไพฑูรย์
+ไพโดร
+ไพที
+ไพบูลย์
+ไพ่ป๊อก
+ไพพรรณ
+ไพเพิด
+ไพ่ไฟ
+ไพมอก
+ไพม้า
+ไพร
+ไพร่
+ไพรคิ้ว
+ไพรจิตร
+ไพรชน
+ไพรชยนต์
+ไพรฑูรย์
+ไพรที
+ไพรบูลย์
+ไพรปาก
+ไพร่พล
+ไพร่ฟ้า
+ไพรระหง
+ไพรเราะ
+ไพรวัน
+ไพรสณฑ์
+ไพร่สม
+ไพร่ส่วย
+ไพรสัณฑ์
+ไพรสาณฑ์
+ไพรสามกอ
+ไพร่หลวง
+ไพรัช
+ไพรัช-
+ไพรำ
+ไพริน
+ไพรินทร์
+ไพรี
+ไพรู
+ไพเราะ
+ไพโรจน์
+ไพล
+ไพล่
+ไพล่หลัง
+ไพศาข
+ไพศาข-
+ไพศาขบุรณมี
+ไพศาขมาส
+ไพศาล
+ไพเศษ
+ไพสพ
+ไพสิฐ
+ไพหาร
+ฟ
+ฟก
+ฟกช้ำดำเขียว
+ฟ้ง
+ฟรักโทส
+ฟรี
+ฟรีบาร์
+ฟลูออรีน
+ฟ่อ
+ฟ้อ
+ฟอก
+ฟอกซัก
+ฟอกผ้า
+ฟอกพยาน
+ฟอกโลหิต
+ฟอกหนัง
+ฟอง
+ฟ่อง
+ฟ้อง
+ฟ้องกลับ
+ฟองกาม
+ฟ้องตัวเอง
+ฟองเต้าหู้
+ฟองทะเล
+ฟองน้ำ
+ฟ่องฟู
+ฟองมัน
+ฟ้องแย้ง
+ฟ้องร้อง
+ฟอด
+ฟอดแฟด
+ฟอน
+ฟ่อน
+ฟ้อน
+ฟ้อแฟ้
+ฟอร์มาลดีไฮด์
+ฟอร์มาลิน
+ฟอสฟอรัส
+ฟอสเฟต
+ฟะฟัด
+ฟะฟั่น
+ฟะฟ่าย
+ฟัก
+ฟักข้าว
+ฟักตัว
+ฟักทอง
+ฟักฟุ้น
+ฟักฟูม
+ฟักเหลือง
+ฟัง
+ฟังก์ชัน
+ฟังขึ้น
+ฟังได้
+ฟังไม่ได้ศัพท์ จับไปกระเดียด
+ฟังหูไว้หู
+ฟังออก
+ฟัด
+ฟัดเฟียด
+ฟัน
+ฟั่น
+ฟั้น
+ฟันคลื่น
+ฟันช้าง
+ฟันดาบ
+ฟันถาวร
+ฟันแท้
+ฟันน้ำนม
+ฟันปลา
+ฟันฝ่า
+ฟั่นเฝือ
+ฟันเฟือง
+ฟั่นเฟือน
+ฟันม้า
+ฟันเลื่อย
+ฟันหนู
+ฟันหลอ
+ฟ้า
+ฟาก
+ฟ้าคะนอง
+ฟ้าเคืองสันหลัง
+ฟาง
+ฟ่าง
+ฟางลอย
+ฟาด
+ฟาดเคราะห์
+ฟาดหัว
+ฟาทอม
+ฟาน
+ฟ้าผ่า
+ฟ้าฝ่อ
+ฟ่าม
+ฟ้ามุ่ย
+ฟ้าไม่กระเทือนสันหลัง
+ฟาย
+ฟายน้ำตา
+ฟายมือ
+ฟาร์ม
+ฟ้าร้อง
+ฟ้าแลบ
+ฟาสซิสต์
+ฟ้าหลัว
+ฟิก
+ฟิด
+ฟิบ
+ฟิล์ม
+ฟิวส์
+ฟิสิกส์
+ฟี่
+ฟี้
+ฟืน
+ฟื้น
+ฟื้นตัว
+ฟื้นฝอย
+ฟื้นฟู
+ฟื้นองค์
+ฟืม
+ฟุ
+ฟุ้ง
+ฟุ้งซ่าน
+ฟุ้งเฟ้อ
+ฟุ้งเฟื่อง
+ฟุต
+ฟุตบอล
+ฟุน
+ฟุบ
+ฟุ่บ
+ฟุฟะ
+ฟุ่มเฟือย
+ฟุลสแก๊ป
+ฟู
+ฟู่
+ฟูก
+ฟูด
+ฟูดฟาด
+ฟูฟ่อง
+ฟูม
+ฟูมน้ำ
+ฟูมฟัก
+ฟูมฟาย
+ฟูมเลี้ยง
+เฟ็ด
+เฟ็ดหาว
+เฟ้น
+เฟลด์สปาร์
+เฟ้อ
+เฟอร์เมียม
+เฟอะ
+เฟอะฟะ
+เฟะ
+เฟะฟะ
+เฟิน
+เฟี้ยม
+เฟี้ยมเฝ้า
+เฟี้ยว
+เฟือ
+เฟื่อ
+เฟื้อ
+เฟือง
+เฟื่อง
+เฟื้อง
+เฟื่องฟ้า
+เฟื่องฟุ้ง
+เฟื่องฟู
+เฟือน
+เฟือย
+เฟื้อย
+แฟ่
+แฟง
+แฟชั่น
+แฟบ
+แฟ้ม
+แฟรนเซียม
+แฟลกซ์
+แฟลต
+แฟะ
+โฟกัส
+ไฟ
+ไฟกัลป์
+ไฟจุกตูด
+ไฟฉาย
+ไฟแช็ก
+ไฟธาตุ
+ไฟฟ้า
+ไฟฟ้ากระแส
+ไฟฟ้าสถิต
+ไฟลามทุ่ง
+ไฟสุมขอน
+ภ
+ภค
+ภควดี
+ภควัต
+ภควันต์
+ภควัม
+ภควา
+ภควาน
+ภคันทลา
+ภคินี
+ภณ
+ภณิดา
+ภพ
+ภมการ
+ภมร
+ภมริน
+ภมรี
+ภมุ
+ภมุกะ
+ภมุกา
+ภย-
+ภยันตราย
+ภยาคติ
+ภร
+ภรณี
+ภรณีภู
+ภรต
+ภรต-
+ภรตวรรษ
+ภรตศาสตร์
+ภรรดร
+ภรรดา
+ภรรยา
+ภระมร
+ภระมรี
+ภรัสดาษ
+ภราดร
+ภราดรภาพ
+ภราดา
+ภราตร-
+ภราตรภาพ
+ภราตฤ-
+ภราตฤภาพ
+ภริยา
+ภรู
+ภรูมณฑล
+ภฤงคาร
+ภฤดก
+ภฤดี
+ภฤตย์
+ภฤศ
+ภฤษฏ์
+ภว
+ภว-
+ภวกษัย
+ภวตัณหา
+ภวนะ
+ภวปาระ
+ภวัคร
+ภวังค-
+ภวังค์
+ภวังคจิต
+ภวันดร
+ภวาภพ
+ภักขะ
+ภักดี
+ภักต-
+ภักตกฤตย์
+ภักตะ
+ภักติ
+ภักษ-
+ภักษ์
+ภักษการ
+ภักษา
+ภักษาหาร
+ภัค
+ภัคน์
+ภังค-
+ภังคะ
+ภังคี
+ภัจ
+ภัญชะ
+ภัณฑ-
+ภัณฑ์
+ภัณฑครรภ
+ภัณฑนะ
+ภัณฑาคาร
+ภัณฑาคาริก
+ภัณฑารักษ์
+ภัณฑู
+ภัณฑูกรรม
+ภัต
+ภัต-
+ภัตกิจ
+ภัตตาคาร
+ภัตตาหาร
+ภัตร
+ภัทร
+ภัทร-
+ภัทรกัป
+ภัทรกุมภ์
+ภัทรบทมาส
+ภัทรบิฐ
+ภัพ
+ภัย
+ภัสดา
+ภัสตรา
+ภัสมะ
+ภัสสร
+ภา
+ภากร
+ภาค
+ภาค-
+ภาคตัดกรวย
+ภาคทฤษฎี
+ภาคทัณฑ์
+ภาคนิพนธ์
+ภาคปฏิบัติ
+ภาคพื้น
+ภาคภูมิ
+ภาคย์
+ภาคยานุวัติ
+ภาคเรียน
+ภาคเสธ
+ภาคินี
+ภาคิไนย
+ภาคี
+ภาคียะ
+ภาชนะ
+ภาชนีย-
+ภาชี
+ภาณ
+ภาณ-
+ภาณก
+ภาณวาร
+ภาณี
+ภาณุ
+ภาณุมาศ
+ภาดร
+ภาดา
+ภาตร
+ภาตา
+ภาติกะ
+ภาติยะ
+ภาตุ
+ภาพ
+ภาพ-
+ภาพกาก
+ภาพจริง
+ภาพถ่าย
+ภาพนิ่ง
+ภาพประกอบ
+ภาพปูนเปียก
+ภาพพจน์
+ภาพย์
+ภาพยนตร์
+ภาพลวงตา
+ภาพลักษณ์
+ภาพเสมือน
+ภาพหุ่นนิ่ง
+ภาม
+ภาย
+ภายนอก
+ภายใน
+ภายหน้า
+ภายหลัง
+ภาร
+ภาร-
+ภารกิจ
+ภารดี
+ภารต
+ภารต-
+ภารตวิทยา
+ภารตี
+ภารธุระ
+ภารยทรัพย์
+ภารยา
+ภารโรง
+ภาระ
+ภาระจำยอม
+ภาระติดพัน
+ภาระติดพันในอสังหาริมทรัพย์
+ภารา
+ภาว-
+ภาวนา
+ภาวนามัย
+ภาวศุทธิ
+ภาวะ
+ภาวะฉุกเฉิน
+ภาษ
+ภาษก
+ภาษณ์
+ภาษา
+ภาษาศาสตร์
+ภาษิต
+ภาษี
+ภาษีเงินได้
+ภาษีบำรุงท้องที่
+ภาษีมูลค่าเพิ่ม
+ภาษีโรงเรือนและที่ดิน
+ภาษีสรรพสามิต
+ภาส
+ภาส-
+ภาสกร
+ภาสน์
+ภาสวร
+ภาสา
+ภาสุร
+ภิกขา
+ภิกขาจาร
+ภิกขาหาร
+ภิกขุ
+ภิกขุนี
+ภิกษา
+ภิกษาจาร
+ภิกษาหาร
+ภิกษุ
+ภิกษุณี
+ภิงคาร
+ภิงส
+ภิงสนะ
+ภิงสร
+ภิญโญ
+ภิญโญภาพ
+ภิตติ
+ภิท
+ภิน-
+ภินชาติ
+ภินท-
+ภินท์
+ภินทน-
+ภินทนาการ
+ภินวรรณ
+ภิยโย
+ภิยโยภาพ
+ภิรมย์
+ภิรมย์สุรางค์
+ภิษัช
+ภิส
+ภิสัก
+ภีตะ
+ภีม
+ภีรุ
+ภีรุก-
+ภีรุกชาติ
+ภุกต-
+ภุกต์
+ภุกตเศษ
+ภุกตาหาร
+ภุขัน
+ภุช
+ภุช-
+ภุชค
+ภุชงค์
+ภุชงคประยาต
+ภุชงคม
+ภุชสมโภค
+ภุชา
+ภุญช
+ภุต
+ภุม
+ภุม-
+ภุมเทวดา
+ภุมระ
+ภุมรัตน์
+ภุมรา
+ภุมริน
+ภุมรี
+ภุมเรศ
+ภุมวาร
+ภุส
+ภู
+ภู่
+ภูเขา
+ภูเขาน้ำแข็ง
+ภูเขาไฟ
+ภูโช
+ภูดล
+ภูดาด
+ภูต
+ภูต-
+ภูตคาม
+ภูตบดี
+ภูตรูป
+ภูติ
+ภูตี
+ภูเตศวร
+ภูธร
+ภูธเรศ
+ภูธเรศวร
+ภูนาถ
+ภูนายก
+ภูเนตุ
+ภูบดินทร์
+ภูบดี
+ภูบาล
+ภูเบนทร์
+ภูเบศ
+ภูเบศวร์
+ภูป
+ภูผา
+ภูภุช
+ภูม
+ภูมิ
+ภูมิ-
+ภูมิคุ้มกัน
+ภูมิใจ
+ภูมิฐาน
+ภูมิธร
+ภูมิธรรม
+ภูมินทร์
+ภูมินาถ
+ภูมิบดี
+ภูมิบริมาณ
+ภูมิบาล
+ภูมิประเทศ
+ภูมิปัญญา
+ภูมิแพ้
+ภูมิภาค
+ภูมิภุช
+ภูมิรัฐศาสตร์
+ภูมิรู้
+ภูมิลำเนา
+ภูมิศาสตร์
+ภูมิศาสตร์กายภาพ
+ภูมิศาสตร์การเกษตร
+ภูมิศาสตร์การเมือง
+ภูมิศาสตร์ประชากร
+ภูมิศาสตร์ประวัติ
+ภูมิศาสตร์เศรษฐกิจ
+ภูมี
+ภูมีศวร
+ภูรโลก
+ภูริ
+ภูรี
+ภูว-
+ภูวดล
+ภูวน-
+ภูวนตรัย
+ภูวนัตตรัย
+ภูวนาถ
+ภูวเนตร
+ภูวไนย
+ภูษณ-
+ภูษณพาส
+ภูษา
+ภูษามาลา
+ภูษาโยง
+ภูษิต
+เภกะ
+เภคะ
+เภตรา
+เภท
+เภทภัย
+เภทุบาย
+เภรว
+เภริ
+เภรี
+เภสัช
+เภสัช-
+เภสัชกร
+เภสัชกรรม
+เภสัชเคมี
+เภสัชพฤกษศาสตร์
+เภสัชเพลา
+เภสัชวิทยา
+เภสัชเวท
+เภสัชศาสตร์
+เภสัชอุตสาหกรรม
+โภค
+โภค-
+โภคทรัพย์
+โภคภัณฑ์
+โภคยทรัพย์
+โภคะ
+โภคิน
+โภคี
+โภไคย
+โภไคศวรรย์
+โภช
+โภชก
+โภชน-
+โภชนะ
+โภชนะห้า
+โภชนากร
+โภชนาการ
+โภชนาหาร
+โภชย์
+ไภริน
+ไภรี
+ไภษัชคุรุ
+ไภษัชย์
+ม
+มก
+มกร
+มกร-
+มกรกุณฑล
+มกราคม
+มกส
+มกุฎ
+มกุฎราชกุมาร
+มกุล
+มคธ
+มฆ
+มฆวัน
+มฆา
+ม่ง
+มงกุฎ
+มงกุฎไทย
+มงโกรย
+มงคล
+มงคล-
+มงคลจักร
+มงคลแฝด
+มงคลวาท
+มงคลวาร
+มงคลสูตร
+มงคลหัตถี
+มณฑ์
+มณฑก
+มณฑนะ
+มณฑป
+มณฑล
+มณฑา
+มณฑารพ
+มณฑิร
+มณเฑียร
+มณเฑียรบาล
+มณี
+มณีการ
+มณีพืช
+มณีรัตน์
+มณีราค
+มณีศิลา
+มด
+มดดำ
+มดแดง
+มดแดงเฝ้ามะม่วง
+มดเท็จ
+มดยอบ
+มดลูก
+มดส้ม
+มดาย
+มดี
+มต-
+มตก
+มตกภัต
+มตะ
+มติ
+มติมหาชน
+มท
+มทนะ
+มทนียะ
+มธุ
+มธุกร
+มธุกรี
+มธุการี
+มธุโกศ
+มธุตฤณ
+มธุป
+มธุปฎล
+มธุปายาส
+มธุพรต
+มธุมักขิกา
+มธุมิศร
+มธุร-
+มธุรตรัย
+มธุรพจน์
+มธุรส
+มธุระ
+มธุลีห์
+มธุเศษ
+มธุสร
+มน
+ม่น
+มนต์
+มนตร์
+มนตรี
+มนท-
+มนท์
+มนทกานติ
+มนทาทร
+มนทิร
+มนทิราลัย
+มนเทียร
+มนเทียรบาล
+มนสิการ
+มนัส
+มนัส-
+มนัสดาป
+มนัสวี
+มนิมนา
+มนิลา
+มนีมนา
+มนุ
+มนุช
+มนุชาธิป
+มนุญ
+มนุษย-
+มนุษย์
+มนุษย์กบ
+มนุษยชาติ
+มนุษยเทพ
+มนุษยธรรม
+มนุษยโลก
+มนุษยศาสตร์
+มนุษยสัมพันธ์
+มนุษย์อวกาศ
+มนุสาร
+มนู
+มนูสาร
+มโน
+มโนกรรม
+มโนคติ
+มโนช
+มโนชญ์
+มโนธรรม
+มโนนุกูล
+มโนภาพ
+มโนภินิเวศ
+มโนมัย
+มโนรถ
+มโนรม
+มโนรมย์
+มโนราห์
+มโนศิลา
+มโนสาร
+มโนสาเร่
+มโนหร
+มมังการ
+มมาก
+มยุร-
+มยุรคติ
+มยุรฉัตร
+มยุรอาสน์
+มยุระ
+มยุรา
+มยุรี
+มยุเรศ
+มยูข
+มยูร
+มร
+มรกต
+มรคา
+มรฑป
+มรณ-
+มรณ์
+มรณกรรม
+มรณธรรม
+มรณบัตร
+มรณภัย
+มรณภาพ
+มรณะ
+มรณันติก-
+มรณานต์
+มรดก
+มรรค
+มรรคนายก
+มรรคา
+มรรตย
+มรรตัย
+มรรทน
+มรรยาท
+มรรษ
+มรสุม
+มรัมเทศ
+มรานควาน
+มริจ
+มริยาท
+มรีจิ
+มรุ
+มรุต
+มฤค
+มฤค-
+มฤคทายวัน
+มฤคย์
+มฤคราช
+มฤคศิร
+มฤคศิรมาส
+มฤคศิรัส
+มฤคเศียร
+มฤคินทร์
+มฤเคนทร์
+มฤจฉา
+มฤจฉาชีพ
+มฤจฉาทิฐิ
+มฤดก
+มฤต
+มฤตก
+มฤตยู
+มฤตยูราช
+มฤทิงค์
+มฤทุ
+มฤทุกะ
+มฤธุ
+มฤษา
+มฤษาวาท
+มล
+มล-
+มลโค
+มลทิน
+มลน
+มล่น
+มลนมลาน
+มลพิษ
+มลวก
+มล่อน
+มล่อย
+มละ
+มลัก
+มลังเมลือง
+มล้า
+มลาก
+มล้าง
+มลาน
+มล่าน
+มลาย
+มลายู
+มลาว
+มล่าวเมลา
+มลิน
+มลิ้น
+มลื่น
+มวก
+มวกผา
+มวกเหล็ก
+มวกใหญ่
+ม่วง
+มวน
+ม่วน
+ม้วน
+ม้วนต้วน
+ม้วนเสื่อ
+ม้วนหน้า
+มวย
+ม้วย
+มวยไทย
+มวยปล้ำ
+มวยล้ม
+มวยวัด
+มวยสากล
+มวยหมู่
+มวล
+มวลสาร
+มวลอากาศ
+มสาร
+มสารก
+มสารคัล
+มสิ
+มหกรรม
+มหรณพ
+มหรรฆ
+มหรรณพ
+มหรสพ
+มหัคฆ
+มหัจฉริย-
+มหัจฉริยะ
+มหัณณพ
+มหัต
+มหัทธนะ
+มหันต-
+มหันต์
+มหันตโทษ
+มหัพภาค
+มหัล
+มหัลกะ
+มหัศจรรย์
+มหา
+มหากฐิน
+มหากาฬ
+มหาขันธก
+มหาจักร
+มหาชน
+มหาชัย
+มหาชาติ
+มหาโชตรัต
+มหาดไทย
+มหาดเล็ก
+มหาดเล็กรายงาน
+มหาตมะ
+มหาไถ่
+มหาเทพ
+มหาเทพี
+มหาเทวี
+มหาธาตุ
+มหานสะ
+มหานิกาย
+มหานิล
+มหาบพิตร
+มหาบัณฑิต
+มหาพน
+มหาพรหม
+มหาภารต
+มหาภิเนษกรมณ์
+มหาภูต
+มหาเมฆ
+มหายาน
+มหายุค
+มหารณพ
+มหาราช
+มหาราชลีลา
+มหาฤกษ์
+มหาละลวย
+มหาละลาย
+มหาวงศ์
+มหาวรรค
+มหาวิทยาลัย
+มหาศาล
+มหาสงกรานต์
+มหาสดมภ์
+มหาสดำ
+มหาสมุทร
+มหาสาวก
+มหาหงส์
+มหาหิงคุ์
+มหาอำนาจ
+มหาอุจ
+มหาอุด
+มหาอุปรากร
+มหิ
+มหิงส์
+มหิดล
+มหิทธิ
+มหิธร
+มหินท์
+มหิบดี
+มหิบาล
+มหิป
+มหิมา
+มหิศร
+มหิศวร
+มหิษ
+มหิษี
+มหึมา
+มหุดิฤกษ์
+มหุรดี
+มหู
+มเหนทร์
+มเหยงค์
+มเหศ
+มเหศวร
+มเหศักดิ์
+มเหสักข์
+มเหสิ
+มเหสี
+มเหาษธ
+มเหาฬาร
+มโหฆ
+มโหรสพ
+มโหระทึก
+มโหรี
+มโหษธ
+มโหฬาร
+มไหศวรรย์
+มอ
+มอคราม
+มอง
+มองโกลอยด์
+มองคร่อ
+มองเสี้ยว
+มอซอ
+มอญ
+มอญซ่อนผ้า
+มอญตีดั้ง
+มอด
+ม่อต้อ
+มอเตอร์
+มอน
+ม่อน
+มอนไข่
+มอบ
+มอบฉันทะ
+มอบหมาย
+มอบอำนาจ
+มอม
+มอมเมา
+มอมแมม
+มอมเหล้า
+ม่อย
+มอร์ฟีน
+มอระกู่
+มอลโทส
+ม่อลอกม่อแลก
+มอหมึก
+ม่อห้อม
+ม่อฮ่อม
+มะ
+มะกรูด
+มะกล่ำ
+มะกอก
+มะกอกน้ำ
+มะกอกบ้าน
+มะกอกป่า
+มะกอกฝรั่ง
+มะกอกพราน
+มะกอกสามตะกร้าปาไม่ถูก
+มะก่อง
+มะกะโรนี
+มะกา
+มะเกลือ
+มะเกี๋ยง
+มะข่วง
+มะขวิด
+มะขาม
+มะขามคราบหมู
+มะขามเทศ
+มะขามป้อม
+มะขามเปียก
+มะเขือ
+มะเขือทวาย
+มะเขือเทศ
+มะเขือพวง
+มะเขือมอญ
+มะแข่น
+มะคะ
+มะคังแดง
+มะค่า
+มะค่าแต้
+มะค่าโมง
+มะค่าหนาม
+มะค่าใหญ่
+มะคำไก่
+มะคำดีควาย
+มะงัน
+มะงั่ว
+มะงุมมะงาหรา
+มะซัก
+มะซาง
+มะซ่าน
+มะดะขี้นก
+มะดัน
+มะดา
+มะดูก
+มะเดหวี
+มะเดื่อ
+มะเดื่อดิน
+มะต้อง
+มะตะบะ
+มะตาด
+มะตาหะรี
+มะตี
+มะตึ่ง
+มะตื๋น
+มะตูม
+มะแตก
+มะนาว
+มะนาวเทศ
+มะปราง
+มะปริง
+มะป่อง
+มะป่องต้น
+มะฝ่อ
+มะพร้าว
+มะพร้าวแก้ว
+มะพร้าวตื่นดก
+มะพร้าวทุย
+มะพร้าวห้าว
+มะพลับ
+มะพูด
+มะแพน
+มะแพร้ว
+มะเฟือง
+มะแฟน
+มะไฟ
+มะไฟเดือนห้า
+มะม่วง
+มะม่วงหิมพานต์
+มะม่าว
+มะมี่
+มะมื่น
+มะมุด
+มะเมอ
+มะเมีย
+มะเมื่อย
+มะแม
+มะยง
+มะยงชิด
+มะยม
+มะระ
+มะริด
+มะรืน
+มะรุม
+มะรุมมะตุ้ม
+มะเร็ง
+มะเรื่อง
+มะโรง
+มะละกอ
+มะลารอกัน
+มะลำ
+มะลิ
+มะลิซ่อม
+มะลิน
+มะลิ่ม
+มะลิเลื้อย
+มะลิอ่อง
+มะลื่น
+มะลืมดำ
+มะลุลี
+มะวาร
+มะแว้ง
+มะสัง
+มะเส็ง
+มะหลิ่ม
+มะหวด
+มะหะหมัด
+มะหัล
+มะหาด
+มะหิ่ง
+มะเหงก
+มะเหมื่อย
+มะอึก
+มะฮอกกานี
+มัก
+มักกะลีผล
+มักกะสัน
+มักขะ
+มั่กขั้ก
+มักขิกา
+มักขิกาชาติ
+มักคุ้น
+มักง่าย
+มักฏกะ
+มักฏะ
+มักได้
+มักน้อย
+มักมาก
+มักใหญ่
+มัค-
+มัคคะ
+มัคคุเทศก์
+มัคนายก
+มัคสิระ
+มัฆวา
+มัฆวาน
+มั่ง
+มังกง
+มังกร
+มังกุ
+มังคละ
+มั่งคั่ง
+มังค่า
+มังคุด
+มังตาน
+มั่งมี
+มั่งมีในใจ แล่นใบบนบก
+มังส-
+มังสวิรัติ
+มังสะ
+มังสี
+มังหงัน
+มัจจะ
+มัจจุ
+มัจจุราช
+มัจฉระ
+มัจฉริยะ
+มัจฉรี
+มัจฉะ
+มัจฉา
+มัจฉาชาติ
+มัช-
+มัชชะ
+มัชชาร
+มัชฌ-
+มัชฌันติก-
+มัชฌันติกสมัย
+มัชฌิม-
+มัชฌิมนิกาย
+มัชฌิมบุรุษ
+มัชฌิมประเทศ
+มัชฌิมภูมิ
+มัชฌิมยาม
+มัชฌิมวัย
+มัชฌิมา
+มัชฌิมาปฏิปทา
+มัชวิรัติ
+มัญจก
+มัญจา
+มัญชิษฐ
+มัญชิษฐา
+มัญชีร
+มัญชุ
+มัญชุสา
+มัญชูสา
+มัญเชฏฐะ
+มัญเชฏฐิกา
+มัญเชฏฐิกากร
+มัญเชียร
+มัฏฐะ
+มัณฑ-
+มัณฑน-
+มัณฑนศิลป์
+มัณฑนา
+มัณฑุก
+มัด
+มัดจำ
+มัดเชื้อเพลิง
+มัดมือชก
+มัดหมี่
+มัดหมู
+มัดหวาย
+มัตตะ
+มัตตัญญู
+มัตตัย
+มัตตา
+มัตติกา
+มัตถก
+มัตถลุงค์
+มัตย
+มัตสยะ
+มัตสยา
+มัตสร
+มัตสรรย์
+มัตสริน
+มัทนะ
+มัทนียะ
+มัทยะ
+มัธย-
+มัธยฐาน
+มัธยม
+มัธยม-
+มัธยมกาล
+มัธยมศึกษา
+มัธยมา
+มัธยันห์
+มัธยัสถ์
+มัน
+มั่น
+มันแกว
+มั่นคง
+มั่นใจ
+มันดี
+มันตา
+มันถะ
+มันทิร
+มันทิราลัย
+มันเทศ
+มันนก
+มันปลา
+มันปู
+มันฝรั่ง
+มันย่อง
+มันสมอง
+มันเสา
+มันไส้
+มั่นหมาย
+มั่นเหมาะ
+มับ
+มับๆ
+มั้ม
+มัมมี่
+มัย
+มัลก
+มัลละ
+มัลลิกา
+มัว
+มั่ว
+มัวซัว
+มัวมอม
+มั่วมูล
+มัวเมา
+มัวเมีย
+มั่วสุม
+มัวหมอง
+มัศยา
+มัสดก
+มัสดุ
+มัสตาร์ด
+มัสตุ
+มัสมั่น
+มัสยิด
+มัสรู่
+มัสลิน
+มัสสุ
+มา
+ม้า
+มาก
+มากขี้ควายหลายขี้ช้าง
+มากมาย
+มากมายก่ายกอง
+มากหน้าหลายตา
+มากหมอมากความ
+มาแขก
+มาคสิร-
+มาคสิระ
+มาฆ-
+มาฆบูชา
+มาฆะ
+ม้าง
+มางสะ
+ม้าใช้
+มาณพ
+มาณวิกา
+มาด
+มาดา
+ม้าดีดกะโหลก
+มาตงค์
+ม้าต้น
+มาตร
+มาตร-
+มาตรการ
+มาตรฐาน
+มาตรแม้น
+มาตรว่า
+มาตรา
+มาตราพฤติ
+มาตราส่วน
+มาตฤ
+มาตฤกะ
+มาตสรรย์
+มาตังค
+มาตา
+มาตามหะ
+มาตามหัยกะ
+มาตามหัยกา
+มาตามหัยยิกา
+มาตามหา
+มาติก
+มาติกา
+มาตี
+มาตุ
+มาตุคาม
+มาตุฆาต
+มาตุจฉา
+มาตุภูมิ
+มาตุรงค์
+มาตุเรศ
+มาตุละ
+มาตุลา
+มาตุลานี
+มาตุลุงค์
+มาท
+มาทน
+ม้าทลายโรง
+ม้าเทศ
+มาธยมิกะ
+มาธุร
+มาธุสร
+มาธูร
+มาน
+ม่าน
+ม้าน
+ม่านตา
+มานทะลุน
+ม่านบังเพลิง
+มานพ
+ม่านเมรุ
+ม่านลาย
+ม่านสองไข
+ม่านอินทนิล
+มานะ
+มานัต
+มานัส
+ม้าน้ำ
+มานิต
+มานี
+มานุษ
+มานุษย-
+มานุษยวิทยา
+มาโนชญ์
+มาบ
+มาปก
+มาภา
+ม้าม
+ม้ามืด
+มาย
+ม่าย
+ม่ายเมียง
+ม้าย่อง
+มายัง
+มายา
+มายากร
+มายากล
+มายาการ
+มายาประสาน
+มายาวี
+มาร
+มาร-
+มารค
+มารคอหอย
+มารชิ
+มารชิต
+มารดร
+มารดา
+มารผจญ
+มารยา
+มารยาท
+มารวิชัย
+มารวิชิต
+มารศรี
+มารษา
+มารสังคม
+มารหัวขน
+มาระ
+มาราธิราช
+ม้ารำ
+มาริ
+มาริต
+มารุต
+มารุมมาตุ้ม
+ม้าเร็ว
+มาลย์
+ม้าล่อ
+มาลัย
+มาลา
+มาลากรรม
+มาลาการ
+มาลาตี
+ม้าลาย
+มาลาเรีย
+มาลำ
+มาลินี
+มาลี
+มาลุต
+มาวาร
+มาศ
+มาส
+มาสก
+ม้าสะบัดกีบ
+มาห์
+ม่าห์
+มาหิส
+มาเหนือเมฆ
+ม่าเหมี่ยว
+มาฬก
+ม้าอ้วน
+มำเลือง
+มิ
+มิค
+มิค-
+มิคลุท
+มิคลุทก
+มิคเศียร
+มิคสัญญี
+มิคสิร-
+มิคสิระ
+มิคี
+มิ่ง
+มิ่งขวัญ
+มิงโค
+มิ่งมิตร
+มิจฉา
+มิจฉากัมมันตะ
+มิจฉาจริยา
+มิจฉาจาร
+มิจฉาชีพ
+มิจฉาทิฐิ
+มิจฉาบถ
+มิจฉาวาจา
+มิจฉาวายามะ
+มิจฉาสติ
+มิจฉาสมาธิ
+มิจฉาสังกัปปะ
+มิจฉาอาชีวะ
+มิญช-
+มิด
+มิดชิด
+มิดเม้น
+มิดเมี้ยน
+มิดหมี
+มิดีมิร้าย
+มิได้
+มิต-
+มิตภาณี
+มิตร
+มิตร-
+มิตรจิต
+มิตรจิตมิตรใจ
+มิตรภาพ
+มิตรสหาย
+มิติ
+มิถยา
+มิถุน
+มิถุนายน
+มิทธะ
+มิทธี
+มินตรา
+มินตา
+มินหม้อ
+มิน่า
+มิน่าล่ะ
+มิน่าเล่า
+มิ่ม
+มิ้ม
+มิยา
+มิไย
+มิรันตี
+มิลลิกรัม
+มิลลิบาร์
+มิลลิเมตร
+มิลลิลิตร
+มิลักขะ
+มิลักขู
+มิลาต
+มิศร-
+มิศรก-
+มิส-
+มิสก-
+มิสกรี
+มิสกวัน
+มิสซา
+มิอย่ารา
+มิอย่าเลย
+มี
+มี่
+มีแก่ใจ
+มี่ฉาว
+มีชื่อ
+มีชู้
+มีด
+มีดโกน
+มีดตอก
+มีดยับ
+มีดหมอ
+มีตาแต่หามีแววไม่
+มีทองเท่าหนวดกุ้ง นอนสะดุ้งจนเรือนไหว
+มีเทน
+มีน
+มีนาคม
+มีเฟื้องมีสลึง
+มีภาษีกว่า
+มีเรือน
+มี่สั้ว
+มีเสียง
+มีหน้า
+มีหน้ามีตา
+มีฬห-
+มีอันจะกิน
+มีอันเป็น
+มีอายุ
+มึก
+มึกมวย
+มึง
+มึงวาพาโวย
+มึน
+มึนงง
+มึนชา
+มึนซึม
+มึนตึง
+มึนเมา
+มืด
+มืดค่ำ
+มืดแปดด้าน
+มืดฟ้ามัวดิน
+มืดมน
+มืดมัว
+มืดหน้า
+มืน
+มื่น
+มือ
+มื้อ
+มือกาว
+มือเก่า
+มือขวา
+มือขึ้น
+มือแข็ง
+มือดี
+มือตก
+มือเติบ
+มือถือสาก ปากถือศีล
+มือที่สาม
+มือบอน
+มือเบา
+มือปืน
+มือผี
+มือมืด
+มือไม่ถึง
+มือไม่พาย เอาตีนราน้ำ
+มือเย็น
+มือร้อน
+มือลิง
+มือไว
+มือสะอาด
+มือสั้นตีนสั้น
+มือสี
+มือเสือ
+มือหนัก
+มือหนึ่ง
+มือห่างตีนห่าง
+มือใหม่
+มืออ่อน
+มืออ่อนตีนอ่อน
+มุ
+มุก
+มุกดา
+มุกดาหาร
+มุกุร
+มุกุล
+มุข
+มุข-
+มุขกระสัน
+มุขเด็จ
+มุขบาฐ
+มุขมนตรี
+มุขย-
+มุขยประโยค
+มุขลด
+มุโขโลกนะ
+มุคคะ
+มุคธ์
+มุคร
+มุง
+มุ่ง
+มุ้ง
+มุ้งกระต่าย
+มุ้งประทุน
+มุ่งมาด
+มุ่งร้ายหมายขวัญ
+มุ้งลวด
+มุ้งสายบัว
+มุ่งหมาย
+มุจฉา
+มุจน
+มุจลินท์
+มุญจนะ
+มุญช
+มุฐิ
+มุณฑ
+มุณฑก
+มุด
+มุดหัว
+มุต
+มุต-
+มุตกิด
+มุตฆาต
+มุตตะ
+มุตตา
+มุตติ
+มุติ
+มุติงค์
+มุทค
+มุทคร
+มุททา
+มุทธชะ
+มุทธา
+มุทธาภิเษก
+มุทรา
+มุทริกา
+มุทะลุ
+มุทา
+มุทิกา
+มุทิงค์
+มุทิตา
+มุทิน
+มุทุ
+มุทุตา
+มุ่น
+มุ่นใจ
+มุ่นหมก
+มุนิ
+มุนิกุญชร
+มุนินทร์
+มุนี
+มุบ
+มุบๆ
+มุบมิบ
+มุม
+มุ่ม
+มุ้ม
+มุมกดลง
+มุมก้ม
+มุมกลับ
+มุมเงย
+มุมฉาก
+มุมตกกระทบ
+มุมตรง
+มุมเท
+มุมบ่ายเบน
+มุมประชิด
+มุมป้าน
+มุมมืด
+มุมยกขึ้น
+มุมแย้ง
+มุมสะท้อน
+มุมหักเห
+มุมเห
+มุมแหลม
+มุ่ย
+มุรช
+มุรธา
+มุรธาภิเษก
+มุลุต
+มุลู
+มุสละ
+มุสลิม
+มุสะ
+มุสา
+มุสาวาท
+มุสิก
+มุหงิด
+มุหน่าย
+มุหุต
+มุฮัมมัด
+มูก
+มูกมัน
+มูกเลือด
+มูกหลวง
+มูค-
+มูเซอ
+มูตร
+มู่ทู่
+มูน
+มูนมอง
+มูมมาม
+มูรดี
+มูรติ
+มูรธ-
+มูรธา
+มูรธาภิเษก
+มูล
+มูล-
+มูลค่า
+มูลโค
+มูลจิต
+มูลฐาน
+มูลไถ
+มูลนกการเวก
+มูลนาย
+มูลนิธิ
+มูลฝอย
+มูลภัณฑ์กันชน
+มูละ
+มูลา
+มูลิกากร
+มู่ลี่
+มู่เล่
+มูสัง
+มูสิก
+มูสิก-
+มูสิกทันต์
+มูฬห-
+เม
+เม็ก
+เมกะเฮิรตซ์
+เมขลา
+เมฆ
+เมฆคลุ้ม
+เมฆฉาย
+เมฆพัด
+เมฆมาก
+เมฆา
+เมฆินทร์
+เมฆี
+เม็ง
+เมงอะปา
+เม็ด
+เม็ดดี
+เม็ดพระศก
+เม็ดพราย
+เม็ดมะยม
+เม็ดละมุด
+เม็ดเลือด
+เม็ดโลหิต
+เมตตา
+เมตไตรย
+เมตร
+เมตริก
+เมตริกตัน
+เมถุน
+เมท
+เมทนี
+เมทนีดล
+เมทินี
+เมทิลแอลกอฮอล์
+เมโท
+เมธ
+เมธา
+เมธาวี
+เมธี
+เมน
+เม่น
+เม้น
+เมนเดลีเวียม
+เมนทอล
+เม่นทะเล
+เม้ม
+เม้มปาก
+เมรย-
+เมรัย
+เมรุ
+เมรุ-
+เมรุมาศ
+เมรุราช
+เมล์
+เมลก
+เมล็ด
+เมลือง
+เมลื่อย
+เมลื้อย
+เมลื่อยมล้า
+เมษ
+เมษายน
+เมห
+เมห์
+เมหน
+เมะ
+เมา
+เม่า
+เม้า
+เม้าเค้า
+เมาดิบ
+เมามัน
+เมามัว
+เมามาย
+เมายศ
+เมารี
+เมาลี
+เมาห์
+เมาอำนาจ
+เมาะ
+เมาะตาโยกัก
+เมาะว่า
+เมิง
+เมิน
+เมิล
+เมีย
+เมียง
+เมี่ยง
+เมียงม่าย
+เมี้ยน
+เมียน้อย
+เมียหลวง
+เมือ
+เมื่อ
+เมื้อ
+เมือก
+เมื่อกี้
+เมือง
+เมืองขึ้น
+เมืองท่า
+เมืองท่าปลอดภาษี
+เมืองนอก
+เมืองหลวง
+เมืองออก
+เมื่อตะกี้
+เมื่อนั้น
+เมือบ
+เมื่อพีเนื้อหอม เมื่อผอมเนื้อเหม็น
+เมื่อย
+เมื่อยปาก
+เมื่อเอยก็เมื่อนั้น
+เมื่อเอยเมื่อนั้น
+แม่
+แม้
+แมก
+แมกนีเซียม
+แม่กระชังหน้าใหญ่
+แม่กระแชง
+แม่กอง
+แม่กุญแจ
+แม่คุณ
+แม่คู่
+แมง
+แมงกวาง
+แมงกะพรุน
+แมงกานิน
+แมงกานีส
+แมงคาเรือง
+แมงช้าง
+แมงดา
+แมงดาทะเล
+แมงปากจอบ
+แมงไฟเดือนห้า
+แม่งม้าง
+แมงมุม
+แมงลัก
+แม่งาน
+แม่เจ้า
+แม่เจ้าโว้ย
+แม่ซื้อ
+แม่ตะงาว
+แม่ตาย
+แม่เตาไฟ
+แม้แต่
+แม่ทัพ
+แม่ท่า
+แมน
+แม่น
+แม้น
+แม้นเขียน
+แม่นม
+แม่นยำ
+แม่น้ำ
+แม่บท
+แม่บ้าน
+แม่เบี้ย
+แม่ปะ
+แม่แปรก
+แม่พิมพ์
+แม่มด
+แม่ม่าย
+แม่ม่ายทรงเครื่อง
+แม่ม่ายลองไน
+แม่ยั่วเมือง
+แม่ย่านาง
+แม่ยาย
+แม่ย้าว
+แมร
+แม่ร้า
+แม่ร้าง
+แม่รีแม่แรด
+แม่เรือน
+แม่แรง
+แมลง
+แมลงช้าง
+แมลงดา
+แมลงดำ
+แมลงดำหนาม
+แมลงทับเล็ก
+แมลงปอ
+แมลงภู่
+แมลงวัน
+แมลงวันทอง
+แมลงวันสเปน
+แมลงวันหัวเขียว
+แมลบ
+แม่ลาย
+แม่เล้า
+แม่เลี้ยง
+แมว
+แม้ว
+แมวเซา
+แมวดาว
+แมวน้ำ
+แมวป่า
+แมวมอง
+แม่วี
+แม่สายบัวแต่งตัวค้าง
+แม่สี
+แม่สื่อ
+แม่หนัก
+แม่หยั่วเมือง
+แม่เหย้าแม่เรือน
+แม่เหล็ก
+แม่อยู่หัว
+แมะ
+โม
+โม่
+โม้
+โมก
+โมกข-
+โมกข์
+โมกขบริสุทธิ์
+โมกโคก
+โมกมัน
+โมกษ-
+โมกษะ
+โมกษะพยาน
+โมกใหญ่
+โมฆ-
+โมฆกรรม
+โมฆะ
+โมฆีย-
+โมฆียกรรม
+โมฆียะ
+โมง
+โม่ง
+โมงครุ่ม
+โม่งโค่ง
+โมจน-
+โมทนา
+โมน
+โมโนแซ็กคาไรด์
+โมไนย
+โมมูห์
+โมมูหะ
+โมเม
+โมเมนต์
+โมร-
+โมรกลาป
+โมรา
+โมรี
+โมเรส
+โมลิบดีนัม
+โมลี
+โมเลกุล
+โมษ
+โมษก
+โมษณ
+โมเสก
+โมเสส
+โมห-
+โม่ห์
+โมหะ
+โมหันธ์
+โมหาคติ
+โมโห
+ไม่
+ไม้
+ไม้กง
+ไมกา
+ไม้กากบาท
+ไม้กางเขน
+ไม่กี่น้ำ
+ไม่กี่อัฐ
+ไม่กี่อัฐฬส
+ไม้ใกล้ฝั่ง
+ไม้ขี้ฉ้อ
+ไม้ขีดไฟ
+ไม่เข้าใครออกใคร
+ไม่เข้ายา
+ไม้แข็ง
+ไม้คมแฝก
+ไมครอน
+ไม่ค่อย
+ไมโครกรัม
+ไมโครฟิล์ม
+ไมโครโฟน
+ไมโครมิเตอร์
+ไมโครเมตร
+ไมโครลิตร
+ไมโครเวฟ
+ไม่ใคร่
+ไม้งามกระรอกเจาะ
+ไม้จริง
+ไม้จัตวา
+ไม้จำปา
+ไม่ชอบมาพากล
+ไม่เชิง
+ไม่ใช่ขี้ไก่
+ไม้ดัด
+ไม้ดำ
+ไม่ดูดำดูดี
+ไม่ดูดำดูแดง
+ไม่ดูตาม้าตาเรือ
+ไม้เด็ด
+ไม้แดง
+ไม่ได้เบี้ยออกข้าว
+ไม่ได้เบี้ยเอาข้าว
+ไม่ได้ศัพท์
+ไม่ได้สิบ
+ไมตรี
+ไม้ตรี
+ไม้ตาย
+ไม้ตายขาน
+ไม้ตีพริก
+ไม่เต็มเต็ง
+ไม่เต็มบาท
+ไม่เต็มหุน
+ไม้ไต่คู้
+ไม่ถูกโรคกัน
+ไม้ทัณฑฆาต
+ไม่ทัน
+ไม้เท้า
+ไม้เท้ายายม่อม
+ไม้โท
+ไม้นวม
+ไม้นอกกอ
+ไม้นิ้ว
+ไม้บรรทัด
+ไม้เบื่อไม้เมา
+ไม้ป่าเดียวกัน
+ไม้เป็น
+ไม้ผัด
+ไม่พูดพร่ำทำเพลง
+ไม้โพ
+ไม่ฟังเสียง
+ไม้มลาย
+ไม้ม้วน
+ไม่มีปี่มีกลอง
+ไม่มีมูลฝอยหมาไม่ขี้
+ไม่มีวันเสียละ
+ไม้มืด
+ไม้มือ
+ไม้เมตร
+ไม้ยมก
+ไมยราบ
+ไม้ยามักการ
+ไม้ยาว
+ไม้ร่มนกจับ
+ไม่รู้จักเสือเอาเรือเข้ามาจอด ไม่รู้จักมอดเอาไม้เข้ามาวาง
+ไม่รู้จักหัวนอนปลายตีน
+ไม่รู้อีโหน่อีเหน่
+ไม้เรียว
+ไมล์
+ไม่ลงโบสถ์กัน
+ไม้ล้มเงาหาย
+ไม้ล้มลุก
+ไม้ลอย
+ไม้เลี้ยง
+ไม้ไล่
+ไม้วา
+ไม้สอย
+ไม้สั้น
+ไม้สั้นไม้ยาว
+ไม้สามอัน
+ไม่สู้
+ไม้สูง
+ไม้หน้า
+ไม้หมอน
+ไม้หมุน
+ไม้หลักปักเลน
+ไม้หันอากาศ
+ไม้หึ่ง
+ไม่เห็นน้ำตัดกระบอก ไม่เห็นกระรอกก่งหน้าไม้
+ไม่เหลือบ่ากว่าแรง
+ไม้อ่อนดัดง่าย ไม้แก่ดัดยาก
+ไม้อัด
+ไม้เอก
+ไม่เออออห่อหมก
+ไม้โอ
+ย
+ยก
+ยกกระบัตร
+ยกครู
+ยกเครื่อง
+ยกเค้า
+ยกตนข่มท่าน
+ยกตัวขึ้นเหนือลม
+ยกทรง
+ยกธงขาว
+ยกน
+ยกนิ้ว
+ยกพื้น
+ยกฟ้อง
+ยกภูเขาออกจากอก
+ยกมือ
+ยกเมฆ
+ยกยอ
+ยกย่อง
+ยกยอด
+ยกยอปอปั้น
+ยกเลิก
+ยกเว้น
+ยกไว้
+ยกหางตัวเอง
+ยกใหญ่
+ยง
+ยงโย่
+ยชุรเวท
+ยติ
+ยติภังค์
+ยถากรรม
+ยถาภูตญาณ
+ย่น
+ยนต์
+ยนตร์
+ย่นย่อ
+ยม
+ยม-
+ยมก
+ยมกปาฏิหาริย์
+ยมขันธ์
+ยมโดย
+ยมทัณฑ์
+ยมทูต
+ยมนา
+ยมบาล
+ยมราช
+ยมล
+ยมโลก
+ยรรยง
+ยล
+ยว
+ยวกสา
+ยวง
+ยวด
+ยวดยง
+ยวดยาน
+ยวดยิ่ง
+ยวน
+ยวนยี
+ยวบ
+ยวบๆ
+ยวบยาบ
+ย้วย
+ยวรยาตร
+ยวา
+ยวาคุ
+ยศ
+ยศอย่าง
+ยโส
+ยอ
+ย่อ
+ยอก
+ยอกย้อน
+ย็อกแย็ก
+ย็อกแย็กๆ
+ยอง
+ยองๆ
+ย่อง
+ย้อง
+ย่องกริบ
+ย่องเบา
+ย่องแย่ง
+ยองใย
+ยองไย่
+ย่องเหง็ด
+ยอด
+ยอดจาก
+ยอดด้วน
+ยอดดี
+ยอดน้ำ
+ยอดสร้อย
+ย่อท้อ
+ยอน
+ย้อน
+ย้อนเนื้อ
+ย้อนยอก
+ยอบ
+ยอบแยบ
+ย่อพล
+ยอม
+ย่อม
+ย้อม
+ยอมความ
+ย้อมใจ
+ย้อมแมวขาย
+ย่อมเยา
+ย่อมุม
+ย่อย
+ย้อย
+ย่อย่น
+ย่อยยับ
+ย่อแย่
+ย้อแย้
+ยอแสง
+ย่อหน้า
+ย่อหย่อน
+ย่อแหยง
+ยะ
+ย่ะ
+ยะงันจะคับ
+ยะยอบ
+ยะยัน
+ยะยับ
+ยะยาน
+ยะย้าย
+ยะย้าว
+ยะแย้ง
+ยะหิทา
+ยัก
+ยักกระสาย
+ยักข์
+ยักขินี
+ยักท่า
+ยักเพรีย
+ยักยอก
+ยักย้าย
+ยักยิ้ม
+ยักยี่ยักยัน
+ยักยี่ยักเหยา
+ยักเยื้อง
+ยักแย่ยักยัน
+ยักษ์
+ยักษ์ปักหลั่น
+ยักษ์มักกะสัน
+ยักษิณี
+ยักษี
+ยักหยาว
+ยักหล่ม
+ยัง
+ยั้ง
+ยังกาหลา
+ยังชั่ว
+ยั่งยืน
+ยังแล้ว
+ยังหยัง
+ยัชโญปวีต
+ยัชน
+ยัชมาน
+ยัญ
+ยัญ-
+ยัญกรรม
+ยัญญะ
+ยัญญังค์
+ยัญพิธี
+ยัฐิ
+ยัฐิมธุกา
+ยัด
+ยัดเยียด
+ยัติภังค์
+ยัน
+ยั่น
+ยันต์
+ยันตร-
+ยันตร์
+ยันตรกรรม
+ยั่นตะนี
+ยันเย้า
+ยับ
+ยับๆ
+ยับยง
+ยับย่อย
+ยับยั้ง
+ยับยั้งชั่งใจ
+ยับยาน
+ยับยาบ
+ยับเยิน
+ยั่ว
+ยั้ว
+ยั่วยวน
+ยั่วเย้า
+ยั้วเยี้ย
+ยัวรยาตร
+ยัษฏิ
+ยา
+ย่า
+ยาก
+ยากแค้น
+ยากจน
+ยากนาน
+ยากเย็น
+ยากไร้
+ยาเขียว
+ยาค
+ยาคุ
+ยาคู
+ยาง
+ย่าง
+ยางกราด
+ย่างตีน
+ย่างทราย
+ย่างเท้า
+ยางน่อง
+ยางบอน
+ยางพารา
+ยางมะตอย
+ย่างเยื้อง
+ยางลบ
+ยางสน
+ย่างสามขุม
+ยางอาย
+ยาจก
+ยาจน
+ยาจนก
+ยาจนา
+ยาจืด
+ยาใจ
+ยาฉุน
+ยาไฉน
+ยาชก
+ยาด
+ยาดา
+ยาดำ
+ยาแดง
+ยาตนา
+ยาตร
+ยาตรา
+ยาตั้ง
+ย่าทวด
+ยาธาตุ
+ยาน
+ย่าน
+ยานก
+ย่านกอบนาง
+ยานคาง
+ย่านซื่อ
+ย่านทราย
+ย่านนมควาย
+ย่านพาโหม
+ยานมาศ
+ย่านยาว
+ย่านลิเภา
+ยานัตถุ์
+ย่านาง
+ย่านางช้าง
+ยานี
+ยานุมาศ
+ยาบ
+ยาบๆ
+ยาปน-
+ยาปนมัต
+ยาฝอย
+ยาแฝด
+ยาม
+ยาม-
+ย่าม
+ยามกาลิก
+ยามเกา
+ยามตูดชาย
+ยามพาด
+ยามโยค
+ยามสามตา
+ยามักการ
+ยามิก
+ยาย
+ย้าย
+ยายทวด
+ยายี
+ยาเยีย
+ยาว
+ย้าว
+ยาวกาลิก
+ยาวชีวิก
+ยาวบั่น สั้นต่อ
+ยาวรี
+ยาวัส
+ยาสลบ
+ยาสั่ง
+ยาสูบ
+ยาเส้น
+ยาเสพย์ติด
+ยาเสพย์ติดให้โทษ
+ยาไส้
+ยาหม้อใหญ่
+ยาหมู่
+ยาหยัง
+ย่าหยา
+ยาหยี
+ยาหัด
+ยาอัด
+ยำ
+ย่ำ
+ย้ำ
+ยำเกรง
+ย่ำเทือก
+ยำยาม
+ย่ำยี
+ยำเยง
+ยำเยีย
+ย่ำแย่
+ย้ำเหยอ
+ยิก
+ยิกๆ
+ยิง
+ยิ่ง
+ยิงปืนนัดเดียว ได้นกสองตัว
+ยิงฟัน
+ยิ่งยวด
+ยิฏฐะ
+ยิฐ
+ยิน
+ยินแคลน
+ยินใจ
+ยินดี
+ยินมลาก
+ยินยอม
+ยินร้าย
+ยินลากขากดี
+ยิบ
+ยิบๆ
+ยิปซัม
+ยิปซี
+ยิ้ม
+ยิ้มกริ่ม
+ยิ้มแฉ่ง
+ยิ้มด้วยปาก ถากด้วยตา
+ยิมนาสติก
+ยิ้มแป้น
+ยิ้มย่อง
+ยิ้มเยาะ
+ยิ้มแย้ม
+ยิ้มละไม
+ยิ้มหัว
+ยิ้มเหย
+ยิ้มแห้ง
+ยิ้มแหย
+ยิหวา
+ยี
+ยี่
+ยี้
+ยี่ก่า
+ยี่เก
+ยี่เข่ง
+ยี่โถ
+ยี่โถฝรั่ง
+ยีน
+ยี่โป้
+ยี่ภู่
+ยียวน
+ยีราฟ
+ยี่สก
+ยี่สง
+ยี่สน
+ยี่สาน
+ยี่ส่าน
+ยี่สิบ
+ยี่สุ่น
+ยี่หระ
+ยี่หร่า
+ยี่หร่าหวาน
+ยี่ห้อ
+ยี่หุบ
+ยึกยือ
+ยึด
+ยึดครอง
+ยึดถือ
+ยึดทรัพย์
+ยึดเหนี่ยว
+ยืด
+ยืดยาด
+ยืดเยื้อ
+ยืดหยุ่น
+ยืน
+ยื่น
+ยืนกระต่ายสามขา
+ยืนกราน
+ยื่นแก้วให้วานร
+ยืนค้ำหัว
+ยืนเครื่อง
+ยื่นจมูก
+ยืนชิงช้า
+ยืนต้น
+ยืนพื้น
+ยื่นมือ
+ยืนยง
+ยืนยัน
+ยืนยาม
+ยืนโรง
+ยื่นหมูยื่นแมว
+ยืนหยัด
+ยืม
+ยืมจมูกคนอื่นหายใจ
+ยืมใช้คงรูป
+ยืมใช้สิ้นเปลือง
+ยื้อ
+ยื้อยุด
+ยุ
+ยุกกระบัตร
+ยุกดิ
+ยุกต์
+ยุกติ
+ยุกติธรรม
+ยุค
+ยุคเข็ญ
+ยุคนธร
+ยุคล
+ยุคลบาท
+ยุคันต-
+ยุคันต์
+ยุคันตวาต
+ยุคันธร
+ยุคุนธร
+ยุง
+ยุ่ง
+ยุ้ง
+ยุงกวาด
+ยุ่งขิง
+ยุ่งใจ
+ยุงปัด
+ยุงปัดแม่ม่าย
+ยุ่งยาก
+ยุ่งยิ่ง
+ยุ่งเหมือนยุงตีกัน
+ยุ่งเหยิง
+ยุด
+ยุต
+ยุติ-
+ยุติธรรม
+ยุทธ-
+ยุทธ์
+ยุทธการ
+ยุทธนา
+ยุทธนาการ
+ยุทธนาธิการ
+ยุทธภัณฑ์
+ยุทธภูมิ
+ยุทธโยธา
+ยุทธวิธี
+ยุทธวินัย
+ยุทธศาสตร์
+ยุทธหัตถี
+ยุทโธปกรณ์
+ยุบ
+ยุบยอบ
+ยุบยับ
+ยุบยิบ
+ยุบล
+ยุพ-
+ยุพดี
+ยุพยง
+ยุพเยาว์
+ยุพราช
+ยุพราชา
+ยุพเรศ
+ยุพา
+ยุพาน
+ยุพาพาล
+ยุพาพิน
+ยุ่มย่าม
+ยุ่ย
+ยุ้ย
+ยุยง
+ยุแยง
+ยุแยงตะแคงแซะ
+ยุแยงตะแคงรั่ว
+ยุรบาตร
+ยุรยาตร
+ยุว-
+ยุวชน
+ยุวดี
+ยุวราช
+ยุวราชา
+ยุวา
+ยุวาน
+ยุหบาตร
+ยุแหย่
+ยุให้รำตำให้รั่ว
+ยู
+ยู่
+ยูง
+ยูโด
+ยูถะ
+ยูถิกา
+ยูปะ
+ยู่ยี่
+ยูรยาตร
+ยูริก
+ยูเรนัส
+ยูเรเนียม
+ยูโรเพียม
+ยูษะ
+เยๆ
+เย้
+เยง
+เยซู
+เย็ด
+เย็น
+เย็นใจ
+เย็นชืด
+เย็นตา
+เย็นตาโฟ
+เย็นเตาโฟ
+เย็นเยียบ
+เย็นเยือก
+เย็นหู
+เย็บ
+เย็บกี่
+เย็บด้าย
+เย็บลวด
+เย็บเล่ม
+เย็บอก
+เยภุย-
+เยภุยนัย
+เยภุยยะ
+เยภุยสิกา
+เย้ย
+เยอ
+เย่อ
+เยอรมัน
+เยอว
+เย่อหยิ่ง
+เยอะ
+เยอะแยะ
+เยา
+เย้า
+เยาว-
+เยาว์
+เยาวชน
+เยาวน-
+เยาวนะ
+เยาวพา
+เยาวพาณี
+เยาวพาน
+เยาวมาลย์
+เยาวยอด
+เยาวราช
+เยาวเรศ
+เยาวลักษณ์
+เยาะ
+เยิง
+เยิน
+เยิ่น
+เยินยอ
+เยิ่นเย้อ
+เยิบๆ
+เยิบยาบ
+เยิ้ม
+เยีย
+เยี่ยง
+เยียงผา
+เยี่ยงอย่าง
+เยียดยัด
+เยียใด
+เยียน
+เยียบ
+เยี่ยม
+เยี่ยมๆ มองๆ
+เยี่ยมยอด
+เยี่ยมเยียน
+เยี่ยมเยือน
+เยี่ยมวิมาน
+เยียมั่ง
+เยียรบับ
+เยียรยง
+เยียว
+เยี่ยว
+เยี่ยวงัว
+เยียวยง
+เยียวยา
+เยี่ยวอูฐ
+เยียใหญ่
+เยือ
+เยื่อ
+เยื้อ
+เยือก
+เยือกเย็น
+เยื่อเคย
+เยือง
+เยื่อง
+เยื้อง
+เยื้องกราย
+เยื้องยัก
+เยือน
+เยื้อน
+เยื่อใย
+แย่
+แย้
+แยก
+แยกเขี้ยว
+แยกย้าย
+แยกแย้ง
+แยกแยะ
+แยง
+แย่ง
+แย้ง
+แยงยล
+แยงแย่
+แยงแย้
+แย่แต้
+แยบ
+แย็บ
+แยบคาย
+แยบยล
+แยม
+แย้ม
+แย้มพราย
+แยแส
+แยะ
+โย
+โย้
+โยก
+โยกตร์
+โยกย้าย
+โยกเยก
+โยกโย้
+โยค-
+โยคเกณฑ์
+โยคจักษุ
+โยคนิทรา
+โยคยะ
+โยคะ
+โยคาพจร
+โยคาวจร
+โยคิน
+โยคี
+โยง
+โย่ง
+โย่งๆ
+โย่งเย่ง
+โยงโย่
+โยชก
+โยชน์
+โยชนา
+โยด
+โยต
+โยถิกะ
+โยทะกา
+โยธ-
+โยธวาทิต
+โยธา
+โยธิน
+โยน
+โยนก
+โยนกลอง
+โยนกลอน
+โยนยาว
+โยนหลุม
+โยนห่วง
+โยนหัวโยนก้อย
+โยนิโส
+โยนิโสมนสิการ
+โยนี
+โยพนมัท
+โยพนะ
+โยม
+โยเย
+โย้เย้
+โยโส
+ใย
+ใยฟ้า
+ใยยอง
+ใยหิน
+ไย
+ไย่
+ไยดี
+ไยไพ
+ไยไย
+ไย่ไย่
+ร
+รก
+รกชัฏ
+รกช้าง
+รกบิน
+รกฟ้า
+รกราก
+รกร้าง
+รกเรี้ยว
+รง
+รงกุ์
+รงค-
+รงค์
+รงควัตถุ
+รงรอง
+รจนา
+รจเรข
+รจเลข
+รจิต
+รชกะ
+รชตะ
+รชนิ
+รชนี
+รชนีกร
+รชนีจร
+รชะ
+รณ
+รณ-
+รณเกษตร
+รณภู
+รณภูมิ
+รณรงค์
+รณสถาน
+รด
+รดน้ำ
+รดี
+รตนะ
+รตะ
+รติ
+รถ
+รถ-
+รถจักรยาน
+รถจักรยานยนต์
+รถฉุกเฉิน
+รถโดยสารประจำทาง
+รถปุงคพ
+รถปุงควะ
+รถไฟ
+รถไฟฟ้า
+รถยนต์
+รถยา
+รถานึก
+รเถสภะ
+รท
+รทนะ
+รน
+ร่น
+ร้น
+รนด
+รนหาที่
+รบ
+รบกวน
+รบรา
+รบเร้า
+รบส
+รบาญ
+รพ
+รพา
+รพิ
+รพี
+รม
+ร่ม
+ร่มเกล้า
+ร่มเกศ
+ร่มชูชีพ
+รมณี
+รมณีย-
+รมณีย์
+ร่มธง
+ร่มผ้า
+ร่มโพธิ์ร่มไทร
+ร่มไม้ชายคา
+รมย์
+ร่มเย็น
+รมเยศ
+รยะ
+รยางค์
+รวก
+รวง
+ร่วง
+รวงผึ้ง
+ร่วงรุ้ง
+ร่วงโรย
+รวด
+รวดเดียว
+รวดเร็ว
+รวน
+ร่วน
+รวนเร
+รวบ
+รวบรวม
+รวบรัด
+รวบหัวรวบหาง
+รวม
+ร่วม
+ร่วมใจ
+ร่วมท้อง
+ร่วมประเวณี
+ร่วมเพศ
+ร่วมมือ
+ร่วมรัก
+ร่วมเรียงเคียงหมอน
+ร่วมหอลงโรง
+รวมหัว
+ร่วมหัวงาน
+ร่วมอุทร
+รวย
+รวยๆ
+รวยริน
+รวยรื่น
+รวะ
+รวิ
+รวิวาร
+รวี
+รศนา
+รส
+รสก
+รสชาติ
+รสนา
+รสนิยม
+รสสุคนธ์
+รสายนเวท
+รสิก
+รหัท
+รหัส
+รหิต
+รโห
+รโหคต
+รโหฐาน
+รอ
+ร่อ
+รอก
+รอง
+ร่อง
+ร้อง
+ร้องขอ
+รองคอ
+รองเง็ง
+รองจ่าย
+รองช้ำ
+ร้องฎีกา
+รองทรง
+รองท้อง
+ร้องทุกข์
+รองทุน
+รองเท้า
+ร่องน้ำ
+รองบ่อน
+รองพื้น
+ร้องเพลง
+ร่องมด
+ร้องโยนยาว
+ร่องรอย
+รองรัง
+ร้องเรียกร้องหา
+ร้องเรียน
+ร้องเรือ
+ร้องแรก
+ร่องแร่ง
+ร้องส่ง
+ร้องห่ม
+ร้องห่มร้องไห้
+ร้องไห้
+รอด
+รอดชีวิต
+รอดตัว
+รอดหูรอดตา
+รอน
+รอนๆ
+ร่อน
+ร้อน
+ร้อนตัว
+ร่อนทอง
+ร้อนผ้าเหลือง
+ร้อนรน
+ร่อนร่อน
+ร่อนรับร่อนเร่
+ร่อนเร่
+รอนแรม
+ร้อนวิชา
+รอนสิทธิ์
+ร้อนอาสน์
+รอบ
+รอบคอบ
+รอบรู้
+รอม
+รอมชอม
+รอมร่อ
+รอย
+ร่อย
+ร้อย
+ร้อยกรอง
+ร้อยแก้ว
+ร้อยชั่ง
+ร้อยทั้งร้อย
+ร้อยแปด
+รอยร้าว
+ร้อยลิ้น
+ร้อยลิ้นกะลาวน
+ร้อยสีร้อยอย่าง
+ร่อยหรอ
+ร้อยหวาย
+ร้อยหวี
+ร้อยเอ็ด
+ร้อยเอ็ดเจ็ดหัวเมือง
+ร่อแร่
+ระ
+ระกะ
+ระกา
+ระกำ
+ระกำนา
+ระกำป่า
+ระเกะระกะ
+ระคน
+ระคาง
+ระคาย
+ระเค็ดระคาย
+ระแคะ
+ระแคะระคาย
+ระฆัง
+ระงม
+ระงมไพร
+ระงับ
+ระงับพิษ
+ระงี่
+ระแง้
+ระโงกหิน
+ระชวย
+ระดม
+ระดะ
+ระดับ
+ระดับทะเล
+ระดับทะเลปานกลาง
+ระดา
+ระด่าว
+ระดู
+ระดูขาว
+ระเด่น
+ระเดียง
+ระแด
+ระตู
+ระทก
+ระทด
+ระทม
+ระทวย
+ระทอด
+ระทา
+ระทึก
+ระทึง
+ระแทะ
+ระนัม
+ระนาด
+ระนาดแก้ว
+ระนาดทุ้ม
+ระนาดเอก
+ระนาบ
+ระนาบเอียง
+ระนาม
+ระนาว
+ระเนน
+ระเนระนาด
+ระเนียด
+ระแนง
+ระแนะ
+ระบบ
+ระบบสุริยะ
+ระบม
+ระบอบ
+ระบัด
+ระบับ
+ระบาญ
+ระบาด
+ระบานี
+ระบานี้
+ระบาย
+ระบายสี
+ระบำ
+ระบิ
+ระบิล
+ระบิลเมือง
+ระบือ
+ระบุ
+ระเบง
+ระเบ็ง
+ระเบิด
+ระเบิดขวด
+ระเบิดทำลาย
+ระเบิดน้ำตา
+ระเบิดปรมาณู
+ระเบิดเพลิง
+ระเบิดมือ
+ระเบิดเวลา
+ระเบิดไฮโดรเจน
+ระเบียง
+ระเบียน
+ระเบียบ
+ระเบียบการ
+ระเบียบวาระ
+ระแบบ
+ระใบ
+ระฟ้า
+ระมัดระวัง
+ระมา
+ระมาด
+ระเมียร
+ระย่อ
+ระย่อม
+ระยะ
+ระยัง
+ระยั้ง
+ระยัด
+ระยับ
+ระย้า
+ระยาน
+ระยาบ
+ระยำ
+ระยำตำบอน
+ระยิบระยับ
+ระโยง
+ระโยงระยาง
+ระรวย
+ระรอง
+ระร่อน
+ระรัว
+ระราน
+ระร่าย
+ระราว
+ระริก
+ระรี่
+ระรึง
+ระรื่น
+ระรื้น
+ระเร
+ระเร่
+ระเร้ง
+ระเร็ว
+ระเริง
+ระเรียง
+ระเรียม
+ระเรื่อย
+ระแร่
+ระแรง
+ระลง
+ระลวง
+ระลอก
+ระลอง
+ระลัด
+ระลัดได
+ระลึก
+ระลุก
+ระลุง
+ระเลิง
+ระเลียด
+ระวัง
+ระวังไพร
+ระวังวัน
+ระวาง
+ระวาดระไว
+ระวาม
+ระวาย
+ระวิง
+ระแวง
+ระแวดระวัง
+ระไว
+ระสะเก็ด
+ระสาย
+ระส่ำระสาย
+ระสี
+ระเสิดระสัง
+ระหกระเหิน
+ระหง
+ระหวย
+ระหว่าง
+ระหองระแหง
+ระหอบ
+ระหัด
+ระหาย
+ระหุย
+ระเห็จ
+ระเหย
+ระเหระหน
+ระเหหน
+ระเหหัน
+ระเหิด
+ระเหินระหก
+ระแหก
+ระแหง
+ระโหย
+ระอมระอา
+ระอา
+ระอิดระอา
+ระอุ
+รัก
+รักข์
+รักขสะ
+รักขา
+รักขิต
+รักดป
+รักดะ
+รักดีหามจั่ว รักชั่วหามเสา
+รักตะ
+รักบี้
+รักพี่เสียดายน้อง
+รักยม
+รักยาวให้บั่น รักสั้นให้ต่อ
+รักร้อย
+รักเร่
+รักแร้
+รักษ์
+รักษา
+รักษาการ
+รักษาการณ์
+รักหมู
+รัง
+รั้ง
+รังกา
+รังเกียจ
+รังแก
+รังไข่
+รังค์
+รังควาน
+รังแค
+รังดุม
+รังแตน
+รังนก
+รังนาน
+รังบวบ
+รังผึ้ง
+รังเพลิง
+รังมด
+รังรอง
+รังรักษ์
+รังเรข
+รังแรก
+รังวัด
+รังสรรค์
+รังสรัง
+รังสฤษฏ์
+รังสิ
+รังสิมันตุ์
+รังสิมา
+รังสี
+รังสีความร้อน
+รังสีคอสมิก
+รังสีแพทย์
+รังสีวิทยา
+รังสีเหนือม่วง
+รังหยาว
+รัจฉา
+รัช
+รัช-
+รัชกะ
+รัชกาล
+รัชชุ
+รัชชูปการ
+รัชฎาภิเษก
+รัชด-
+รัชดาภิเษก
+รัชต-
+รัชทายาท
+รัชนะ
+รัชนี
+รัชนีกร
+รัญจวน
+รัฏฐาภิปาลโนบาย
+รัฐ
+รัฐ-
+รัฐทูต
+รัฐธรรมนูญ
+รัฐบาล
+รัฐบุรุษ
+รัฐประศาสน์
+รัฐประศาสนนัย
+รัฐประศาสนศาสตร์
+รัฐประศาสโนบาย
+รัฐประหาร
+รัฐมนตรี
+รัฐวิสาหกิจ
+รัฐศาสตร์
+รัฐสภา
+รัด
+รัดกุม
+รัดเกล้า
+รัดเข็มขัด
+รัดช้อง
+รัดตัว
+รัดทึบ
+รัดประคด
+รัดประคน
+รัดพัสตร์
+รัดรึง
+รัดรูป
+รัต
+รัต-
+รัตกัมพล
+รัตคน
+รัตจันทน์
+รัตตัญญู
+รัตติ
+รัตติกาล
+รัตน-
+รัตน์
+รัตนโกสินทร์
+รัตนตรัย
+รัตนบัลลังก์
+รัตนสิงหาสน์
+รัตนะ
+รัตนา
+รัตนากร
+รัตนาวลี
+รัตมณี
+รัตมา
+รัถ
+รัถยา
+รัทเทอร์ฟอร์เดียม
+รัน
+รั้น
+รันชนรันแชง
+รันทด
+รันทวย
+รันทำ
+รันแทะ
+รันธะ
+รับ
+รับขวัญ
+รับแขก
+รับคำ
+รับจ้าง
+รับท้อง
+รับประกัน
+รับประทาน
+รับปาก
+รับผิด
+รับผิดชอบ
+รับมือ
+รับรอง
+รับเรือน
+รับสั่ง
+รับหน้า
+รับไหว้
+รัมก-
+รัมณีย-
+รัมภา
+รัมมี่
+รัมย์
+รัย
+รัว
+รั่ว
+รั้ว
+รั้วไก่
+รัศมิมัต
+รัศมิมาน
+รัศมี
+รัษฎากร
+รัส-
+รัสสระ
+รัสสะ
+รา
+ร่า
+ร้า
+ราก
+รากแก้ว
+รากขวัญ
+รากฐาน
+รากดิน
+รากฝอย
+รากฟัน
+รากศัพท์
+รากษส
+รากโษส
+รากสาด
+รากสาดน้อย
+รากสาดใหญ่
+รากสามสิบ
+รากเหง้า
+ราข้อ
+ราคะ
+ราคา
+ราคาตลาด
+ราคิน
+ราคี
+ราง
+ร่าง
+ร้าง
+ร่างกาย
+รางจืด
+รางชาง
+รางดำ
+รางแดง
+รางนาน
+รางบรรทัด
+ร่างร้าน
+รางวัล
+ร่างแห
+ราช
+ราช-
+ราชการ
+ราชกิจจานุเบกษา
+ราชครู
+ราชญี
+ราชดัด
+ราชทัณฑ์
+ราชทินนาม
+ราชทูต
+ราชโทรหะ
+ราชธรรม
+ราชธานี
+ราชนิกุล
+ราชนีติ
+ราชบัณฑิต
+ราชบาตร
+ราชบุตร
+ราชบุรุษ
+ราชปะแตน
+ราชพฤกษ์
+ราชภัฏ
+ราชมัล
+ราชมาณพ
+ราชมาษ
+ราชมาส
+ราชย์
+ราชยาน
+ราชโยค
+ราชโยงการ
+ราชรถมาเกย
+ราชวงศ์
+ราชวรมหาวิหาร
+ราชวรวิหาร
+ราชวโรงการ
+ราชวัติ
+ราชศาสตร์
+ราชสกุล
+ราชสันตติวงศ์
+ราชสาสน์
+ราชสีห์
+ราชสีห์ตัวผู้
+ราชสีห์ตัวเมีย
+ราชสีห์สองตัวอยู่ถ้ำเดียวกันไม่ได้
+ราชสูยะ
+ราชหัตถเลขา
+ราชองครักษ์
+ราชโองการ
+ราชะ
+ราชัน
+ราชันย์
+ราชัย
+ราชา
+ราชาคณะ
+ราชาโชค
+ราชาธิราช
+ราชาภิเษก
+ราชายตนะ
+ราชาฤกษ์
+ราชาวดี
+ราชาวลี
+ราชาศัพท์
+ราชิ
+ราชินิกุล
+ราชินี
+ราชินีกุล
+ราชินีนาถ
+ราชินูปถัมภ์
+ราชี
+ราชูปถัมภ์
+ราชูปโภค
+ราเชน
+ราเชนทร์
+ราเชนทรยาน
+ราโชงการ
+ราโชปถัมภ์
+ราโชปโภค
+ราโชวาท
+ราไชศวรรย์
+ราญ
+ราญรอน
+ราด
+ราต
+ราตร
+ราตรี
+ราตรีประดับดาว
+ราโท
+ราน
+ร่าน
+ร้าน
+ร้านม้า
+ราบ
+ราบคาบ
+ราบเป็นหน้ากลอง
+ราบรื่น
+ราบเรียบ
+ราปีก
+ราพณ์
+ราพณาสูร
+ราม
+รามเกียรติ์
+รามสูร
+รามัญ
+รามา
+ราย
+ร่าย
+ร้าย
+ร้ายกาจ
+รายการ
+รายงาน
+รายงานการประชุม
+รายจ่าย
+รายทาง
+ร่ายไม้
+ร่ายรัง
+รายรับ
+ร้ายแรง
+รายวิชา
+ร่าเริง
+ราเริด
+ราแรม
+ราว
+ร้าว
+ราวกะ
+ราวกับ
+ราวข่าว
+ร้าวฉาน
+ราวป่า
+ร้าวราน
+ราวี
+ราศี
+ราษฎร
+ราษฎร์
+ราษตรี
+ราษราตริน
+ราษราตรี
+ราสี
+ราหุ
+ร่าหุ์
+ราหู
+รำ
+ร่ำ
+รำเขนง
+รำคาญ
+รำโคม
+รำงับ
+รำจวน
+รำชั่วโทษพากย์
+รำซุย
+รำเท้า
+รำบาญ
+ร่ำไป
+รำผี
+รำพัด
+รำพัดชา
+รำพัน
+รำพาย
+รำพึง
+รำเพย
+รำแพน
+รำไพ
+รำมะแข
+รำมะนา
+รำมะนาด
+รำมะร่อ
+รำไม่ดีโทษปี่โทษกลอง
+รำยวน
+รำย้อย
+รำแย้
+รำรงค์
+ร่ำรวย
+รำราญ
+รำรำ
+ร่ำรี้ร่ำไร
+รำเร
+ร่ำเรียน
+รำไร
+ร่ำไร
+รำลึก
+รำวง
+รำหัด
+รำหัส
+ร่ำไห้
+ริ
+ริก
+ริกๆ
+ริดสีดวง
+ริน
+รินๆ
+ริ้น
+ริบ
+ริบทรัพย์สิน
+ริบบิ้น
+ริบราชบาตร
+ริบรี่
+ริบหรี่
+ริปอง
+ริปุ
+ริปู
+ริม
+ริมฝีปาก
+ริเริ่ม
+ริ้ว
+ริษยา
+ริอ่าน
+รี
+รี่
+รี้
+รีๆ ขวางๆ
+รีด
+รีดนาทาเน้น
+รีดนาทาเร้น
+รีดลูก
+รีดักชัน
+รีต
+รีเนียม
+รีบ
+รีบรุด
+รี้พล
+รีม
+รีรอ
+รีๆ รอๆ
+รี้ริก
+รึกต์
+รึง
+รึ้ง
+รื่น
+รื้น
+รื่นรมย์
+รื่นเริง
+รื้อ
+รื้อแต่หลังคาเขา หลังคาเราไม่รื้อ
+รื้อฟื้น
+รุ
+รุก
+รุกข-
+รุกข์
+รุกขกะ
+รุกขชาติ
+รุกขมูล
+รุกขมูลิกธุดงค์
+รุกขา
+รุกฆาต
+รุกร้น
+รุกราน
+รุกรุย
+รุกษะ
+รุข้าว
+รุ่ง
+รุ้ง
+รุ่งเช้า
+รุ้งพราย
+รุ้งร่วง
+รุงรัง
+รุ่งเรือง
+รุ่งโรจน์
+รุจ
+รุจน
+รุจา
+รุจิ
+รุจิระ
+รุจิรา
+รุจิเรข
+รุจี
+รุชา
+รุด
+รุดหน้า
+รุต
+รุทธ์
+รุทร
+รุธิร
+รุเธียร
+รุน
+รุ่น
+รุ่นกระทง
+รุ่นตะกอ
+รุ่นราวคราวเดียวกัน
+รุนแรง
+รุบรู่
+รุบาการ
+รุม
+รุ่ม
+รุมไข้
+รุมไฟ
+รุ่มรวย
+รุ่มร่าม
+รุย
+รุ่ย
+รุ่ยร่าย
+รุรุ
+รุษฏ์
+รุหะ
+รุหาญ
+รู
+รู่
+รู้
+รู้แกว
+รู้ความ
+รู้คิด
+รู้คิดรู้อ่าน
+รู้คุณ
+รู้งูๆ ปลาๆ
+รู้จัก
+รู้จักเก็บรู้จักเขี่ย
+รู้จักเก็บรู้จักงำ
+รู้จักมักคุ้น
+รู้จักมักจี่
+รูจี
+รู้ฉลาด
+รู้เช่นเห็นชาติ
+รูด
+รู้ตัว
+รู้ตื้นลึกหนาบาง
+รู้ทัน
+รู้ที
+รูทีเนียม
+รู้เท่า
+รู้เท่าไม่ถึงการณ์
+รู้น้อยพลอยรำคาญ
+รูบิเดียม
+รูป
+รูป-
+รูปชี
+รูปธรรม
+รูปพยัญชนะ
+รูปพรรณ
+รูปภาพ
+รูปร่าง
+รูปลอก
+รูปสมบัติ
+รูปสระ
+รูปิยะ
+รูปี
+รู้มลัก
+รู้มลาก
+รู้มาก
+รู้มากยากนาน
+รู้ยาวรู้สั้น
+รูเล็ตต์
+รู้ไว้ใช่ว่า ใส่บ่าแบกหาม
+รู้สึก
+รู้ไส้
+รู้หลบเป็นปีก รู้หลีกเป็นหาง
+รูหะ
+รู้หาญรู้ขลาด
+รู้เห็น
+รู้เห็นเป็นใจ
+รู้อย่างเป็ด
+รู้อยู่
+รู้เองเป็นเอง
+เร่
+เรข
+เรขา
+เรขาคณิต
+เรขาคณิตบริสุทธิ์
+เรขาคณิตวิเคราะห์
+เร็ง
+เร่ง
+เร้ง
+เร่งมือ
+เร่งรัด
+เร่งร่าย
+เร่งรีบ
+เร่งเร้า
+เรณุ
+เรณุก
+เรณู
+เรดอน
+เรดาร์
+เรเดียม
+เร้น
+เร้นลับ
+เรรวน
+เร่ร่อน
+เร่ร่าย
+เรไร
+เร็ว
+เร่ว
+เรวดี
+เรอ
+เร่อ
+เร่อร่า
+เรา
+เร่า
+เร่าๆ
+เร้า
+เร่าร้อน
+เราะ
+เราะราย
+เราะร้าย
+เริง
+เริด
+เริม
+เริ่ม
+เริ้ม
+เริศร้าง
+เรี่ย
+เรี้ยๆ
+เรียก
+เรียกเนื้อ
+เรียง
+เรียงๆ
+เรียงความ
+เรียงพิมพ์
+เรียงพี่เรียงน้อง
+เรียงรัน
+เรียงราย
+เรียงหน้ากระดาน
+เรียงหมอน
+เรียด
+เรียน
+เรียนปฏิบัติ
+เรียนผูกต้องเรียนแก้
+เรียบ
+เรียบๆ
+เรียบร้อย
+เรียบเรียง
+เรียบวุธ
+เรียม
+เรี่ยม
+เรี่ยราด
+เรี่ยราย
+เรี่ยไร
+เรียว
+เรี่ยว
+เรี้ยวรก
+เรี่ยวแรง
+เรียวหนาม
+เรือ
+เรื่อ
+เรื้อ
+เรือก
+เรือกสวน
+เรือขนาน
+เรือขาดหางเสือ
+เรือง
+เรื่อง
+เรื้อง
+เรืองนาม
+เรืองรอง
+เรื่องราว
+เรืองไร
+เรื่องสั้น
+เรืองอำนาจ
+เรือด
+เรือดไม้
+เรือน
+เรื้อน
+เรือนแก้ว
+เรือนเครื่องผูก
+เรือนเครื่องสับ
+เรือนจำ
+เรือนตะเกียง
+เรือนธาตุ
+เรือนเบี้ย
+เรือนฝากระดาน
+เรือนแฝด
+เรือนแพ
+เรือนไฟ
+เรือนยอด
+เรือนหอ
+เรือบิน
+เรือพ่วง
+เรือไฟ
+เรื่อย
+เรื้อย
+เรื่อยเจื้อย
+เรื่อยเปื่อย
+เรือโยง
+เรือรบ
+เรื้อรัง
+เรือล่มในหนอง ทองจะไปไหน
+เรือล่มเมื่อจอด ตาบอดเมื่อแก่
+เรือแหวด
+เรือใหญ่คับคลอง
+แร
+แร่
+แรก
+แร็กเกต
+แรกนา
+แรกนาขวัญ
+แรง
+แร่ง
+แร้ง
+แรงงาน
+แรงงานและสวัสดิการสังคม
+แรงงานสัมพันธ์
+แรงดึงดูด
+แรงเทียน
+แรงม้า
+แร่งริ้ว
+แรงสู่ศูนย์กลาง
+แรงหนีศูนย์กลาง
+แรงเหวี่ยง
+แร่งไหม
+แรเงา
+แรด
+แรดตัวผู้
+แรดตัวเมีย
+แร้นแค้น
+แรม
+แรมรอน
+แรมรา
+แรมโรย
+แร้ว
+แรเส้น
+แระ
+โร
+โร่
+โรค
+โรค-
+โรคจิต
+โรคจิตเภท
+โรคนิทาน
+โรคประจำตัว
+โรคประสาท
+โรคระบบประสาท
+โรคศิลปะ
+โรคสมอง
+โรคา
+โรคาพยาธิ
+โรคาพาธ
+โรง
+โรงคัล
+โรงงาน
+โรงธาร
+โรงธารคำนัล
+โรงนา
+โรงรับจำนำ
+โรงเรียน
+โรงเรียนประจำ
+โรงเรียนสาธิต
+โรงเรือน
+โรงแรม
+โรงแสง
+โรจ
+โรจน์
+โรเดียม
+โรตี
+โรตีสายไหม
+โรท
+โรทนะ
+โรธ
+โรธร
+โรปนะ
+โรม
+โรมมัย
+โรมรัน
+โรมัญจ
+โรมัน
+โรมันคาทอลิก
+โรเมอร์
+โรย
+โรยขนมจีน
+โรยรา
+โรยหน้า
+โรเร
+โรษ
+โรษณะ
+โรหิณี
+โรหิต
+ไร
+ไร่
+ไร้
+ไรฟัน
+ไรย์
+ไรเรือง
+ฤ
+ฤกษ์
+ฤกษณะ
+ฤกษ์บน
+ฤกษ์พานาที
+ฤกษ์ล่าง
+ฤคเวท
+ฤชา
+ฤชากร
+ฤชุ
+ฤณ
+ฤดี
+ฤดียา
+ฤดู
+ฤดูกาล
+ฤต
+ฤติยา
+ฤตุ
+ฤตุสนาน
+ฤทธา
+ฤทธิ์
+ฤทัย
+ฤษภ
+ฤษยา
+ฤษี
+ฤๅ
+ฤๅชุ
+ฤๅชุตา
+ฤๅดี
+ฤๅทัย
+ฤๅเยา
+ฤๅษี
+ฤๅษีแปลงสาร
+ฤๅษีผสมแล้ว
+ฤๅษีเลี้ยงลิง
+ฤๅสาย
+ล
+ลก
+ลการ
+ลกุจ
+ลคุฑ
+ลคุฬ
+ลฆุ
+ลฆุจิต
+ลฆุภาพ
+ลฆุโภชน์
+ลง
+ล่ง
+ลงกลอน
+ลงกา
+ลงขัน
+ลงข่าว
+ลงแขก
+ลงคอ
+ลงเงิน
+ลงชื่อ
+ลงแดง
+ลงตัว
+ลงทอง
+ลงท้อง
+ลงท่า
+ลงท้าย
+ลงทุน
+ลงโทษ
+ลงนา
+ลงเนื้อเห็นด้วย
+ลงโบสถ์
+ลงแป้ง
+ลงผี
+ลงฝัก
+ลงพระบังคน
+ลงพื้น
+ลงพุง
+ลงมีด
+ลงมือ
+ลงยา
+ลงรอยกัน
+ลงรัก
+ลงราก
+ลงแรง
+ลงโรง
+ล้งเล้ง
+ลงสรง
+ลงหญ้าช้าง
+ลงหิน
+ลงอาชญา
+ลงอาญา
+ลงอุโบสถ
+ลงเอย
+ลด
+ลดเขื่อน
+ลดราวาศอก
+ลดละ
+ลดเลี้ยว
+ลดเลี้ยวเกี้ยวพา
+ลดหย่อน
+ลดหลั่น
+ลดา
+ลดาวัลย์
+ลน
+ล่น
+ล้น
+ล้นเกล้าล้นกระหม่อม
+ลนควัน
+ล้นพ้น
+ลนลาน
+ล้นหลาม
+ลบ
+ลบม
+ลบรอย
+ลบล้าง
+ลบเลือน
+ลบโลก
+ลบศักราช
+ลบหลู่
+ลบเหลี่ยม
+ลบอง
+ลปก
+ลปน
+ลพ
+ลพุช
+ลม
+ลมๆ
+ล่ม
+ล้ม
+ลมกรด
+ลมขึ้น
+ล้มคว่ำ
+ลมค้า
+ลมงวง
+ล่มจม
+ลมจับ
+ลมแดง
+ลมทวนลมค้า
+ลมทะเล
+ล้มทั้งยืน
+ลมบก
+ลมบ้าหมู
+ลมปราณ
+ลมปาก
+ลมพัดชายเขา
+ลมพัดหลวง
+ลมพิษ
+ลมเพลมพัด
+ล่มฟ้า
+ลมไม่ดี
+ลมล่อง
+ล้มละลาย
+ล้มลุก
+ล้มลุกคลุกคลาน
+ล้มเลิก
+ลมแล้ง
+ลมๆ แล้งๆ
+ลมว่าว
+ลมเสีย
+ล้มหมอนนอนเสื่อ
+ลมาด
+ลรรลุง
+ลลนา
+ลลาฏ
+ลลิต
+ลวก
+ลวง
+ล่วง
+ล้วง
+ล้วงกระเป๋า
+ล่วงเกิน
+ล่วงขื่อ
+ลวงค์
+ล้วงคองูเห่า
+ล่วงคำ
+ล้วงตับ
+ลวงตา
+ล่วงประเวณี
+ล่วงแป
+ล่วงพ้น
+ล้วงมือ
+ล่วงรู้
+ล่วงลับ
+ล่วงล้ำ
+ล่วงเลย
+ลวงเล้า
+ล่วงว่า
+ล่วงเวลา
+ล้วงไส้
+ล่วงหน้า
+ลวณะ
+ลวด
+ลวดลาย
+ลวดสปริง
+ลวดหนัง
+ลวดหนาม
+ล้วน
+ล้วนๆ
+ลวนลาม
+ลวนะ
+ล่วม
+ลวะ
+ลวิตร
+ลหุ
+ลหุก-
+ลหุกะ
+ลหุกาบัติ
+ลหุโทษ
+ล่อ
+ล้อ
+ลอก
+ล็อกเกต
+ลอกคราบ
+ลอกท้องร่อง
+ลอกเลน
+ลอกแลก
+ลอการิทึม
+ลอง
+ล่อง
+ลองกอง
+ล่องแก่ง
+ล่องจวน
+ลองจิจูด
+ลองใจ
+ล่องชาด
+ลองเชิง
+ลองดี
+ล่องถุน
+ลองธรรม์
+ลองใน
+ลองไน
+ลองภูมิ
+ล่องแมว
+ล่องหน
+ลอด
+ลอดช่อง
+ลอน
+ล่อน
+ล่อนแก่น
+ล่อนจ้อน
+ลอนทอง
+ลอบ
+ลอบกัด
+ลอม
+ล้อม
+ลอมชอม
+ล้อมปรวด
+ลอมพอก
+ล้อมวง
+ลอย
+ลอยๆ
+ล่อยๆ
+ลอยกระทง
+ลอยแก้ว
+ลอยคอ
+ลอยช้อน
+ลอยชาย
+ลอยดอก
+ลอยตัว
+ลอยนวล
+ลอยบาป
+ลอยแพ
+ลอยฟ้า
+ลอยเมฆ
+ลอยลำ
+ลอยหน้า
+ล่อลวง
+ล้อเลียน
+ล้อเลื่อน
+ล่อแล่
+ลอว์เรนเซียม
+ล่อหลอก
+ล้อหลอก
+ล่อแหลม
+ลออ
+ละ
+ล่ะ
+ละกล
+ละกูมะนิส
+ละขัดละขืน
+ละคร
+ละครยก
+ละคิ
+ละคึก
+ละงาด
+ละงิด
+ละติจูด
+ละทิ้ง
+ละบม
+ละบอง
+ละบองไฟ
+ละบองราหู
+ละบัด
+ละบือ
+ละเบ็ง
+ละโบม
+ละม่อม
+ละมั่ง
+ละมา
+ละมาน
+ละม้าย
+ละมุ
+ละมุด
+ละมุน
+ละมุนละไม
+ละเม็ด
+ละเมอ
+ละเมาะ
+ละเมิด
+ละเมิดลิขสิทธิ์
+ละเมิน
+ละเมียด
+ละเมียบ
+ละแมะ
+ละโมก
+ละโมบ
+ละไม
+ละรี
+ละลด
+ละลนละลาน
+ละลมละลาย
+ละลวย
+ละลอก
+ละลอบละเล้า
+ละลัง
+ละลัด
+ละล้า
+ละลาน
+ละลาบละล้วง
+ละลาย
+ละล้าละลัง
+ละล้าว
+ละล่ำละลัก
+ละลิบ
+ละลุง
+ละลุม
+ละเลง
+ละเลงขนมเบื้องด้วยปาก
+ละเลย
+ละเล้า
+ละเลาะ
+ละเลาะละลอง
+ละเลิง
+ละเลียด
+ละเลียบ
+ละเลือก
+ละไล้
+ละวล
+ละว้อ
+ละว้า
+ละวาง
+ละวาด
+ละเวง
+ละเว้น
+ละแวก
+ละโว้
+ละหมาด
+ละหมาดญานาซะฮ์
+ละหลัด
+ละห้อย
+ละหาน
+ละหุ่ง
+ละเหย
+ละเหี่ย
+ละองละมั่ง
+ละออง
+ละอาย
+ละเอียด
+ละเอียดลออ
+ละแอน
+ลัก
+ลักไก่
+ลักขณะ
+ลักขณา
+ลักขะ
+ลักขี
+ลักเค้า
+ลักจั่น
+ลักปิดลักเปิด
+ลักพา
+ลักเพศ
+ลักยิ้ม
+ลักลอบ
+ลักลั่น
+ลักลาย
+ลักเลียม
+ลักศพ
+ลักษณ-
+ลักษณนาม
+ลักษณะ
+ลักษณาการ
+ลักษมณ์
+ลักษมาณา
+ลักษมี
+ลักษะ
+ลักสร้อย
+ลักสี
+ลักหลับ
+ลัคคะ
+ลัคน-
+ลัคน์
+ลัคนา
+ลัง
+ลั่ง
+ลังกา
+ลังคิ
+ลังคี
+ลังถึง
+ลังลอง
+ลังเล
+ลังสาด
+ลัชชา
+ลัชชี
+ลัญจ์
+ลัญจกร
+ลัญฉ
+ลัญฉกร
+ลัญฉน์
+ลัฐิ
+ลัฐิกา
+ลัด
+ลัดนิ้วมือ
+ลัดเนื้อ
+ลัดเลาะ
+ลัดแลง
+ลัดวงจร
+ลัดา
+ลัทธ์
+ลัทธิ
+ลัน
+ลั่น
+ลั่นกุญแจ
+ลั่นไก
+ลั่นฆ้อง
+ลั่นดาล
+ลันเต
+ลันเตา
+ลันไต
+ลั่นถัน
+ลั่นทม
+ลันทวย
+ลันโทม
+ลั่นนก
+ลั่นปาก
+ลั่นวาจา
+ลับ
+ลับตา
+ลับปาก
+ลับฝีปาก
+ลับลมคมใน
+ลับล่อ
+ลับๆ ล่อๆ
+ลับลี้
+ลับแล
+ลับสมอง
+ลับหลัง
+ลับหู
+ลัพธ์
+ลัพธิ
+ลัภ
+ลัภนะ
+ลัภย์
+ลัมพ์
+ลัย
+ลัย-
+ลัยกาล
+ลัยคต
+ลา
+ล่า
+ล้า
+ลาก
+ลากข้าง
+ลากษา
+ลากเส้น
+ลากหนามจุกช่อง
+ลาขา
+ลาข้าวพระ
+ลาง
+ล่าง
+ล้าง
+ลางคัล
+ล้างแค้น
+ลางงิด
+ล้างท้อง
+ลางที
+ลางเนื้อชอบลางยา
+ล้างปาก
+ล้างป่าช้า
+ล้างผลาญ
+ล้างไพ่
+ล้างมือ
+ลางลิง
+ล้างโลก
+ล้างสมอง
+ลางสาด
+ล้างอาย
+ลางาด
+ล้างาด
+ลาเง็ด
+ลาช
+ลาชา
+ลาญ
+ลาญทัก
+ลาด
+ลาดเขา
+ลาดตระเวน
+ลาดทวีป
+ลาดเท
+ลาดพระบาท
+ลาดยาง
+ลาดเลา
+ล้าต้า
+ลาตาย
+ล่าเตียง
+ล้าเตียง
+ลาน
+ล่าน
+ล้าน
+ลาบ
+ลาป
+ลาพรรษา
+ลาพอน
+ลาพุ
+ลาพุช
+ลาเพ
+ลาเพา
+ลาภ
+ลาภมิควรได้
+ลาม
+ล่าม
+ลามก
+ลามปาม
+ลามลวน
+ลาย
+ล้าย
+ลายขัด
+ลายคราม
+ลายตา
+ลายเทศ
+ลายแทง
+ลายน้ำ
+ลายน้ำทอง
+ลายพระหัตถ์
+ลายพาดกลอน
+ลายมือ
+ลายมือชื่อ
+ลายไม้
+ลายลักษณ์
+ลายสอ
+ลายสอง
+ลายสาบ
+ลายสือ
+ลายอย่าง
+ลายฮ่อ
+ลาโรง
+ลาลนะ
+ลาลส
+ลาลา
+ลาโลก
+ลาว
+ลาวก
+ลาวัณย์
+ลาวา
+ลาสนะ
+ล้าสมัย
+ลาสิกขา
+ล้าหลัง
+ลำ
+ล่ำ
+ล้ำ
+ลำกระโดง
+ลำกล้อง
+ลำเข็ญ
+ลำแข
+ลำแข้ง
+ลำเค็ญ
+ลำเคือง
+ลำงาด
+ลำเจียก
+ลำเจียกหนู
+ลำดวน
+ลำดับ
+ลำตัด
+ลำธาร
+ลำนัก
+ลำนำ
+ลำเนา
+ลำบอง
+ลำบาก
+ลำบุ
+ลำปำ
+ลำพวน
+ลำพอง
+ลำพัง
+ลำพู
+ลำพู่กัน
+ลำเพ็ญ
+ลำเพา
+ลำแพง
+ลำแพน
+ลำโพง
+ลำไพ่
+ลำภุขัน
+ลำมะลอก
+ลำมาด
+ลำมาบ
+ลำเมาะ
+ลำเมียบ
+ลำยอง
+ลำยา
+ลำไย
+ลำลอง
+ล่ำลา
+ลำลาบ
+ลำลำ
+ลำลึก
+ลำเลาะ
+ลำเลิก
+ล้ำเลิศ
+ลำเลียง
+ลำเลียบ
+ลำเวียง
+ลำเวียน
+ล่ำสัน
+ลำเสา
+ลำไส้
+ลำหนัก
+ล้ำหน้า
+ลำห้วย
+ลำหักลำโค่น
+ลำอุด
+ลำเอียก
+ลำเอียง
+ลำโอง
+ลิ
+ลิกขา
+ลิกไนต์
+ลิกษา
+ลิกุจ
+ลิเก
+ลิขนะ
+ลิขสิทธิ์
+ลิขิต
+ลิง
+ลิงค์
+ลิงจุ่น
+ลิงชิงหลัก
+ลิงตกต้นไม้
+ลิงลม
+ลิงโลด
+ลิงหลอกเจ้า
+ลิด
+ลิดตีนปู
+ลิดรอน
+ลิต
+ลิตมัส
+ลิตร
+ลิเทียม
+ลิ่น
+ลิ้น
+ลิ้นกระด้างคางแข็ง
+ลิ้นกระบือ
+ลินโกรย
+ลิ้นไก่
+ลิ้นควาย
+ลิ้นงูเห่า
+ลินจง
+ลิ้นจะกวด
+ลิ้นจี่
+ลิ้นชัก
+ลิ่นต้น
+ลิ้นตวัดถึงหู
+ลิ้นตะกวด
+ลิ้นทอง
+ลิ่นทะเล
+ลิ้นทะเล
+ลิ้นปี่
+ลิ้นมังกร
+ลิ้นไม่มีกระดูก
+ลิ้นลม
+ลิ้นลังกา
+ลินลา
+ลินลากระทุ่ม
+ลินลากระบี่
+ลิ้นลาย
+ลินสีด
+ลิ้นเสือ
+ลิ้นหมา
+ลิ่นฮื้อ
+ลินิน
+ลิบ
+ลิบลับ
+ลิบลิ่ว
+ลิปดา
+ลิปต์
+ลิปสติก
+ลิปิ
+ลิปิกร
+ลิปิการ
+ลิฟต์
+ลิเภา
+ลิ่ม
+ลิ้ม
+ลิมป์
+ลิมปนะ
+ลิลิต
+ลิว
+ลิ่ว
+ลิสง
+ลี
+ลี่
+ลี้
+ลีซอ
+ลีบ
+ลี้ลับ
+ลีลา
+ลีลากระทุ่ม
+ลีลาศ
+ลีฬหา
+ลึก
+ลึกซึ้ง
+ลึกลับ
+ลึกล้ำ
+ลึงค์
+ลึงค์นายพราน
+ลืด
+ลื่น
+ลื้น
+ลืบ
+ลืม
+ลืมตน
+ลืมต้น
+ลืมตัว
+ลืมตา
+ลือ
+ลื่อ
+ลื้อ
+ลือชา
+ลือชาปรากฏ
+ลื่อชื่อ
+ลือสาย
+ลุ
+ลุก
+ลุกลน
+ลุกลาม
+ลุกลี้ลุกลน
+ลุกฮือ
+ลุแก่โทษ
+ลุแก่อำนาจ
+ลุง
+ลุ้ง
+ลุต
+ลุท
+ลุทกะ
+ลุทธ์
+ลุ่น
+ลุ่นๆ
+ลุ่นตุ้น
+ลุ่นโตง
+ลุปต์
+ลุพธ์
+ลุพธกะ
+ลุ่ม
+ลุ่มๆ ดอนๆ
+ลุ่มน้ำ
+ลุ่มเนื้อ
+ลุมป์
+ลุมพี
+ลุมพู
+ลุ่มเล้า
+ลุ่มหลง
+ลุย
+ลุ่ย
+ลุ้ย
+ลุ่ยหู
+ลุล่วง
+ลุลาย
+ลุสา
+ลุอำนาจ
+ลู่
+ลูก
+ลูกกก
+ลูกกรง
+ลูกกรอก
+ลูกกระเดือก
+ลูกกระพรวน
+ลูกกระแอม
+ลูกกลอน
+ลูกกลิ้ง
+ลูกกวาด
+ลูกกะโล่
+ลูกกะแอ
+ลูกกัลปพฤกษ์
+ลูกแก้ว
+ลูกโกลน
+ลูกไก่
+ลูกไก่อยู่ในกำมือ
+ลูกขวัญ
+ลูกขัด
+ลูกข่าง
+ลูกข้าว
+ลูกขุน
+ลูกขุน ณ ศาลหลวง
+ลูกขุน ณ ศาลา
+ลูกขุนพลอยพยัก
+ลูกเขย
+ลูกเขยตายแม่ยายชักปรก
+ลูกเขยตายแม่ยายทำศพ
+ลูกครอก
+ลูกครึ่ง
+ลูกคลัก
+ลูกความ
+ลูกคอ
+ลูกคอก
+ลูกคัน
+ลูกค้า
+ลูกคำ
+ลูกคิด
+ลูกเคล้า
+ลูกฆ้อง
+ลูกจ๊อก
+ลูกจ้าง
+ลูกเจี๊ยบ
+ลูกช่วง
+ลูกช้าง
+ลูกชิด
+ลูกชิ้น
+ลูกโซ่
+ลูกดอก
+ลูกดิ่ง
+ลูกโดด
+ลูกตั้ง
+ลูกตุ้ม
+ลูกเต้า
+ลูกเต๋า
+ลูกแตก
+ลูกถ้วย
+ลูกเถื่อน
+ลูกแถว
+ลูกทอย
+ลูกท่านหลานเธอ
+ลูกทุ่ง
+ลูกเธอ
+ลูกน้อง
+ลูกนา
+ลูกน้ำ
+ลูกนิมิต
+ลูกบท
+ลูกบวบ
+ลูกบ้าน
+ลูกบาศก์
+ลูกบิด
+ลูกบุญธรรม
+ลูกเบี้ยว
+ลูกประคบ
+ลูกประคำ
+ลูกประคำผี
+ลูกประสม
+ลูกประสัก
+ลูกประหล่ำ
+ลูกปราย
+ลูกปละ
+ลูกปลา
+ลูกปะกน
+ลูกปัด
+ลูกปา
+ลูกป่า
+ลูกปืน
+ลูกปืนใหญ่
+ลูกแป
+ลูกโป่ง
+ลูกโป่งสวรรค์
+ลูกผสม
+ลูกผักชี
+ลูกผีลูกคน
+ลูกผู้ชาย
+ลูกผู้น้อง
+ลูกผู้พี่
+ลูกผู้หญิง
+ลูกไผ่
+ลูกฝาแฝด
+ลูกแฝด
+ลูกพรวน
+ลูกพริก
+ลูกพลู
+ลูกพี่
+ลูกพี่ลูกน้อง
+ลูกฟัก
+ลูกฟูก
+ลูกไฟ
+ลูกมโหตร
+ลูกมะหวด
+ลูกมาด
+ลูกมือ
+ลูกโม่
+ลูกไม้
+ลูกไม้หล่นไม่ไกลต้น
+ลูกยอ
+ลูกย่าง
+ลูกยาเธอ
+ลูกโยน
+ลูกรอก
+ลูกระมาศ
+ลูกรัง
+ลูกรุ่ย
+ลูกเรือ
+ลูกลม
+ลูกล้อ
+ลูกล่า
+ลูกเล่น
+ลูกเลี้ยง
+ลูกแล่ง
+ลูกโลก
+ลูกไล่
+ลูกวัด
+ลูกศิษย์
+ลูกสมภารหลานเจ้าวัด
+ลูกสมุน
+ลูกสวรรค์
+ลูกสวาท
+ลูกสะบ้า
+ลูกสะใภ้
+ลูกสังกะสี
+ลูกสูบ
+ลูกเสือ
+ลูกหนี้
+ลูกหนู
+ลูกหมด
+ลูกหม้อ
+ลูกหมาก
+ลูกหมู่
+ลูกหลง
+ลูกหลวง
+ลูกหาบ
+ลูกหิน
+ลูกหินบด
+ลูกหีบ
+ลูกเห็บ
+ลูกแห
+ลูกแหง่
+ลูกอม
+ลูกเอ็น
+ลูกเอ็ล
+ลูขะ
+ลูตา
+ลูติกา
+ลู่ทาง
+ลูทีเชียม
+ลูนะ
+ลูบ
+ลูบคม
+ลูบคลำ
+ลูบตัว
+ลูบไล้
+ลูบหน้าปะจมูก
+ลู่หลี่
+เลก
+เล็ก
+เล็กดา
+เล็กน้อย
+เล็กพริกขี้หนู
+เลกวัด
+เลข
+เลขกะ
+เลขคณิต
+เลขจำนวน
+เลขชี้กำลัง
+เลขโดด
+เลขนะ
+เลขผา
+เลขยะ
+เลขยันต์
+เลขลำดับ
+เลขหมาย
+เลขา
+เลขาธิการ
+เลขานุการ
+เล็ง
+เล้ง
+เล็งลัคน์
+เล่งฮื้อ
+เลเซอร์
+เลฑฑุ
+เลณ
+เลณฑุ
+เล็ด
+เล็ดลอด
+เลต
+เลน
+เล็น
+เล่น
+เล่นกล
+เล่นกับไฟ
+เล่นขายของ
+เล่นคำ
+เล่นงาน
+เลนจง
+เล่นชู้
+เล่นตลก
+เล่นตัว
+เล่นเบี้ย
+เล่นพวก
+เล่นพิเรนทร์
+เล่นเพลงยาว
+เล่นเพื่อน
+เล่นแร่แปรธาตุ
+เล่นลิ้น
+เลนส์
+เลนส์ตีบแสง
+เลนส์ถ่างแสง
+เลนส์นูน
+เล่นสวาท
+เลนส์เว้า
+เลนส์สัมผัส
+เล่นสำนวน
+เลนหะรี
+เล่นหัว
+เล่นหาง
+เล่นหูเล่นตา
+เล่นเอาเถิดเจ้าล่อ
+เล็บ
+เล็บครุฑ
+เล็บควาย
+เลบง
+เล็บนาง
+เล็บมือนาง
+เล็บเหยี่ยว
+เลป-
+เลปกร
+เลปน์
+เลเป
+เลเพ
+เลเพลาดพาด
+เล็ม
+เล่ม
+เล็มล่า
+เลย
+เลยตามเลย
+เลยเถิด
+เลว
+เลวง
+เลวูโลส
+เลศ
+เลษฏุ
+เลห
+เล่ห์
+เล่ห์กระเท่ห์
+เลหยะ
+เลหลัง
+เลหลา
+เล่ห์เหลี่ยม
+เลหะ
+เลอ
+เล่อ
+เลอมาน
+เล่อล่า
+เลอะ
+เลอะเทอะ
+เละ
+เละเทะ
+เลา
+เลาๆ
+เล่า
+เล้า
+เลากัย
+เล่าเรียน
+เล่าลือ
+เล้าโลม
+เลาะ
+เลิก
+เลิกล้ม
+เลิ่กลั่ก
+เลิ้ง
+เลินเล่อ
+เลิศ
+เลีย
+เลียง
+เลี่ยง
+เลี้ยง
+เลียงขาว
+เลี้ยงแขก
+เลี้ยงช้างกินขี้ช้าง
+เลี้ยงดู
+เลี้ยงต้อย
+เลี้ยงโต๊ะ
+เลี้ยงปากเลี้ยงท้อง
+เลียงผา
+เลียงฝ้าย
+เลียงมัน
+เลี้ยงรับ
+เลี้ยงลา
+เลี้ยงลูกเสือลูกจระเข้
+เลี้ยงส่ง
+เลียน
+เลี่ยน
+เลียนไฟ
+เลียบ
+เลียบค่าย
+เลียบเคียง
+เลียบเมือง
+เลียม
+เลี่ยม
+เลียว
+เลี้ยว
+เลี้ยวลด
+เลือก
+เลือกตั้ง
+เลือกที่รักมักที่ชัง
+เลือกนักมักได้แร่
+เลือกสรร
+เลือง
+เลื่อง
+เลื่องลือ
+เลือด
+เลือดขึ้นหน้า
+เลือดเข้าตา
+เลือดเนื้อ
+เลือดเนื้อเชื้อไข
+เลือดในอก
+เลือดฝาด
+เลือดไม้
+เลือดเย็น
+เลือดร้อน
+เลือดล้างหน้า
+เลือดอุ่น
+เลือน
+เลื่อน
+เลื่อนที่
+เลื่อนเปื้อน
+เลื่อนลอย
+เลื่อม
+เลื่อมใส
+เลื่อย
+เลื้อย
+เลื้อยคลาน
+เลื้อยเจื้อย
+เลื่อยล้า
+แล
+แล่
+แล้
+แลก
+แล็กโทส
+แลกเปลี่ยน
+แลง
+แล่ง
+แล้ง
+แลงกินฟัน
+แล่งพระราม
+แลน
+แล่น
+แลนทานัม
+แลบ
+แล้ว
+แล้วกัน
+แล้วด้วย
+แล้วแต่
+แล้วไป
+แล้ว...เล่า
+แล้วๆ เล่าๆ
+และ
+และเล็ม
+และเลียม
+โล่
+โล้
+โลก
+โลก-
+โลกเชษฐ์
+โลกธรรม
+โลกธาดา
+โลกธาตุ
+โลกนาถ
+โลกบาล
+โลกย์
+โลกยะ
+โลกวัชชะ
+โลกวิทู
+โลกสถิติ
+โลกอุดร
+โลกัตถจริยา
+โลกันตร์
+โลกัย
+โลกา
+โลกาธิบดี
+โลกาธิปไตย
+โลกานุวัตร
+โลกาภิวัตน์
+โลกามิส
+โลกายัต
+โลกาวินาศ
+โลกิยะ
+โลกีย์
+โลกียวัตร
+โลกุตรธรรม
+โลกุตระ
+โลเกศ
+โลง
+โล่ง
+โล้ง
+โล้งโต้ง
+โล่งโถง
+โลจนะ
+โลณะ
+โลด
+โลดเต้น
+โลดทะนง
+โลดโผน
+โลดแล่น
+โล่ติ๊น
+โลโต
+โลท
+โลน
+โล้น
+โลปะ
+โลภ
+โลภโมโทสัน
+โลม
+โลมชาติ
+โลมเล้า
+โลมะ
+โลมา
+โลล
+โลลุป
+โลเล
+โล้เล้
+โลโล
+โลโล้
+โลห-
+โลหกุมภี
+โลหะ
+โลหะเจือ
+โลหัช
+โลหิต
+ไล่
+ไล้
+ไล่ช้าง
+ไล่ที่ทำวัง
+ไล่น้ำ
+ไล่เบี้ย
+ไลย
+ไลลา
+ไล่ลูกฆ้อง
+ไลเลย
+ไล่เลี่ย
+ไล่เลียง
+ไลไล้
+ไล่ออก
+ฦ
+ฦๅ
+ฦๅชา
+ฦๅสาย
+ว
+วก
+วกะ
+วกุล
+วง
+วงก์
+วงกต
+วงกบ
+วงกลม
+วงการ
+วงเงิน
+วงจร
+วงจรปิด
+วงจรเปิด
+วงเดือน
+วงนอก
+วงใน
+วงพาด
+วงรี
+วงเล็บ
+วงวัง
+วงเวียน
+วงศ-
+วงศ์
+วงศกร
+วงศ์วาน
+วงศา
+วงศาคณาญาติ
+วงษ์
+วงแหวน
+วจนะ
+วจะ
+วจา
+วจี
+วจีกรรม
+วจีเภท
+วชะ
+วชิร-
+วชิรปาณี
+วชิรหัตถ์
+วชิระ
+วชิราวุธ
+วฏะ
+วฏาการ
+วฏุมะ
+วณ-
+วณบัตร
+วณพันธน์
+วณะ
+วณิช
+วณิชชา
+วณิชชากร
+วณิชย์
+วณิชยา
+วณิพก
+วดี
+วต-
+วตะ
+วทนะ
+วทะ
+วทัญญุตา
+วทัญญู
+วทานิย-
+วธ-
+วธก-
+วธุกา
+วธู
+วน
+วนจร
+วนจรก
+วนภู
+วนภูมิ
+วนเวียน
+วนศาสตร์
+วนสณฑ์
+วนสัณฑ์
+วนอุทยาน
+วนัปติ
+วนัส
+วนัส-
+วนัสบดี
+วนา
+วนาดอน
+วนานต์
+วนาลัย
+วนาลี
+วนาวาส
+วนาศรม
+วนาสณฑ์
+วนาสัณฑ์
+วนิดา
+วนิพก
+วเนจร
+วโนทยาน
+วปนะ
+วปุ
+วยัคฆ์
+วยัญชนะ
+วยัมหะ
+วยัสย์
+วยากรณ์
+วยาฆร์
+วยาธิ
+วยาม
+วยายาม
+วร-
+วรงค์
+วรณะ
+วรดนู
+วรท
+วรทาน
+วรมหาวิหาร
+วรรค
+วรรคย์
+วรรช
+วรรชย์
+วรรณ-
+วรรณกรรม
+วรรณคดี
+วรรณนา
+วรรณพฤติ
+วรรณยุกต์
+วรรณยุต
+วรรณศิลป์
+วรรณะ
+วรรณึก
+วรรธก
+วรรธนะ
+วรรษ
+วรรษา
+วรวิหาร
+วรัญญู
+วรากะ
+วรางคณา
+วราห์
+วราหะ
+วรุณ
+วรุตดม
+วรุตมะ
+วรูถ
+วโรดม
+วโรตมะ
+วฤก
+วฤษภ
+วฤษล
+วลัช
+วลัญช์
+วลัญชน์
+วลัย
+วลาหก
+วลี
+วศค
+วศะ
+วศิน
+วสนะ
+วสภะ
+วสละ
+วสลี
+วสวัดดี
+วสวัตตี
+วสะ
+วสันต-
+วสันต์
+วสันตดิลก
+วสันตวิษุวัต
+วสา
+วสี
+วสุ
+วสุธา
+วสุนธรา
+วสุมดี
+วหะ
+วหา
+วอ
+วอก
+วอกแวก
+ว่อง
+ว่องไว
+วอด
+วอดวาย
+วอน
+ว่อน
+วอลเลย์บอล
+วอแว
+วะ
+วัก
+วักกะ
+วัค
+วัคคิย
+วัคคีย์
+วัคคุ
+วัคคุวัท
+วัคซีน
+วัง
+วังก์
+วังชา
+วังช้าง
+วังวน
+วังเวง
+วังศะ
+วังสะ
+วังหน้า
+วังหลวง
+วังหลัง
+วัจ-
+วัจกุฎี
+วัจจะ
+วัจฉ์
+วัจฉก
+วัจฉละ
+วัจน์
+วัจมรรค
+วัช
+วัช-
+วัชชะ
+วัชฌ์
+วัชพืช
+วัชร-
+วัชรธาตุมณฑล
+วัชรปาณี
+วัชรยาน
+วัชรอาสน์
+วัชระ
+วัชราสน์
+วัชรินทร์
+วัชรี
+วัชเรนทร์
+วัญจก
+วัญจนะ
+วัญฌ์
+วัฏ-
+วัฏกะ
+วัฏจักร
+วัฏฏะ
+วัฏฏิ
+วัฏทุกข์
+วัฏสงสาร
+วัฒกะ
+วัฒกี
+วัฒน-
+วัฒนธรรม
+วัฒนะ
+วัฒนา
+วัณ
+วัณ-
+วัณฏ์
+วัณณะ
+วัณนา
+วัณโรค
+วัด
+วัดแดด
+วัดผล
+วัดพื้น
+วัดรอยตีน
+วัดรอยเท้า
+วัดราษฎร์
+วัดวา
+วัดวาอาราม
+วัดหลวง
+วัดเหวี่ยง
+วัต
+วัตต์
+วัตตา
+วัตถ์
+วัตถาภรณ์
+วัตถาลังการ
+วัตถุ
+วัตถุดิบ
+วัตถุนิยม
+วัตถุวิสัย
+วัตนะ
+วัตร
+วัตร-
+วัตรปฏิบัติ
+วัตสดร
+วัตสะ
+วัติ
+วัทน์
+วัน
+วันโกน
+วันแข็ง
+วันครู
+วันจม
+วันดับ
+วันดีคืนดี
+วันต์
+วันตัว
+วันเถลิงศก
+วันทน-
+วันทนา
+วันทนาการ
+วันทนีย์
+วันทย-
+วันทยหัตถ์
+วันทยาวุธ
+วันทา
+วันทิ
+วันนิพก
+วันเนา
+วันพระ
+วันพระไม่มีหนเดียว
+วันเพ็ญ
+วันฟู
+วันยังค่ำ
+วันลอย
+วันแล้ววันเล่า
+วันสุกดิบ
+วันอุโบสถ
+วับ
+วับๆ
+วับวาบ
+วับวาม
+วับแวบ
+วับแวม
+วับๆ หวำๆ
+วัปปะ
+วัมมิก
+วัย
+วัย-
+วัยรุ่น
+วัยวุฒิ
+วัลก์
+วัลคุ
+วัลย์
+วัลลภ
+วัลลี
+วัว
+วัวใครเข้าคอกคนนั้น
+วัวตัวผู้
+วัวตัวเมีย
+วัวทะเล
+วัวพันหลัก
+วัวลืมตีน
+วัวสันหลังหวะ
+วัวหายล้อมคอก
+วัส-
+วัสคณนา
+วัสดุ
+วัสตร์
+วัสน์
+วัสนะ
+วัสสะ
+วัสสานะ
+วัสโสทก
+วา
+ว่า
+ว้า
+วาก
+ว้าก
+วากจิรพัสตร์
+วากย-
+วากยสัมพันธ์
+วากยะ
+วากรา
+ว่ากล่าว
+วากะ
+ว่าการ
+ว่าขาน
+ว่าความ
+วาง
+ว่าง
+ว้าง
+วางก้าม
+วางข้อ
+วางไข่
+ว่างงาน
+วางเงิน
+วางใจ
+วางตลาด
+วางตัว
+วางตา
+วางโต
+วางท่า
+วางปุ่ม
+วางเพลิง
+วางมวย
+วางมาด
+วางมือ
+วางยา
+วางวาย
+ว่างเว้น
+ว้างเวิ้ง
+วางอำนาจ
+ว่าง่าย
+วาจก
+วาจา
+ว่าจ้าง
+วาจาไปยะ
+วาจาล
+วาชเปยะ
+วาฏกะ
+วาณิช
+วาณิชกะ
+วาณิชย์
+วาณี
+วาด
+วาดเขียน
+วาต-
+วาตปานะ
+วาตภัย
+วาตะ
+ว่าต่าง
+วาตารางเหลี่ยม
+ว่าแต่เขาอิเหนาเป็นเอง
+วาท
+วาท-
+วาทก
+วาทน
+วาทย-
+วาทย์
+วาทยกร
+วาทศาสตร์
+วาทศิลป์
+วาทิต
+วาทิน
+วาที
+ว่าที่
+วาน
+ว่าน
+ว่านกีบม้า
+ว่านกีบแรด
+ว่านเครือ
+วานซืน
+ว่านธรณีสาร
+ว่านนางกวัก
+ว่านนางล้อม
+ว่านน้ำ
+ว่านเพชรหึง
+ว่านมหาเมฆ
+ว่านมีดยับ
+วานร
+วานรินทร์
+ว่านเสน่ห์จันทร์ขาว
+ว่านเสน่ห์จันทร์แดง
+ว่านหางช้าง
+ว่านอนสอนง่าย
+วาเนเดียม
+วาบ
+วาบหวาม
+วาปะ
+วาปิตะ
+วาปี
+วาม
+วามน-
+วามนาวตาร
+วามแวม
+วามะ
+วามาจาร
+วาโมร
+ว่าไม่ได้
+วาย
+ว่าย
+ว้าย
+วายชนม์
+วายชีวิต
+ว่ายตา
+ว่ายน้ำหาจระเข้
+วายปราณ
+วายร้าย
+วายวอด
+วายสะ
+วายสังขาร
+วายะ
+ว่ายาก
+วายามะ
+วายุ
+วายุกูล
+วายุบุตรยาตรา
+วายุภักษ์
+วาโย
+วาโยธาตุ
+วาร
+วารณ-
+วารณกร
+วารวาริ
+วารสาร
+วารสารศาสตร์
+วาระ
+วาริ
+วาริจร
+วาริช
+วาริท
+วาริธร
+วาริพินทุ
+วารี
+วารีช
+วารุณ
+วารุณี
+วาล
+วาล-
+วาลกัมพล
+วาลธิ
+วาล์ว
+วาลวีชนี
+วาลิกา
+วาลุกา
+วาว
+ว่าว
+ว่าวติดลม
+วาววับ
+วาววาม
+วาวแวว
+ว่าวเหลิง
+ว่าวอน
+ว้าว่อน
+ว้าวุ่น
+วาสนะ
+วาสนา
+วาสพ
+วาสะ
+ว่าสาดเสียเทเสีย
+วาสิน
+วาสี
+วาสุกรี
+วาสุกี
+วาสุเทพ
+วาหนะ
+วาหะ
+วาหินี
+ว้าเหว่
+วาฬ
+วาฬ-
+วาฬมิค
+วิ
+วิกขัมภ์
+วิกขัมภนะ
+วิกเขป
+วิกจะ
+วิกรม
+วิกรัย
+วิกรานต์
+วิกฤต
+วิกฤต-
+วิกฤตการณ์
+วิกฤตกาล
+วิกฤติ
+วิกฤติ-
+วิกฤติการณ์
+วิกฤติกาล
+วิกล
+วิกลจริต
+วิกสิต
+วิกัต
+วิกัติ
+วิกัติการก
+วิกัป
+วิกัย
+วิการ
+วิกาล
+วิกาล-
+วิกาลโภชน์
+วิคหะ
+วิเคราะห์
+วิฆนะ
+วิฆเนศ
+วิฆเนศวร
+วิฆาต
+วิฆาส
+วิง
+วิ่ง
+วิ่งกระโดดข้ามรั้ว
+วิ่งข้ามรั้ว
+วิ่งงัว
+วิ่งเต้น
+วิ่งเปี้ยว
+วิ่งผลัด
+วิ่งม้า
+วิ่งรอก
+วิ่งระแบง
+วิ่งราว
+วิงวอน
+วิ่งวัว
+วิ่งว่าว
+วิ่งวิบาก
+วิงเวียน
+วิ่งสามขา
+วิจฉิกะ
+วิจยุต
+วิจรณะ
+วิจล
+วิจักขณ์
+วิจักษณ์
+วิจัย
+วิจาร
+วิจารณ-
+วิจารณ์
+วิจารณญาณ
+วิจิ
+วิจิกิจฉา
+วิจิต
+วิจิตร
+วิจิตรพิสดาร
+วิจิน
+วิจุณ
+วิจุรณ
+วิชชา
+วิชชุ
+วิชชุดา
+วิชชุตา
+วิชชุลดา
+วิชญะ
+วิชน
+วิชนี
+วิชย-
+วิชัย
+วิชา
+วิชาการ
+วิชาชีพ
+วิชาโท
+วิชาธร
+วิชานนะ
+วิชาเอก
+วิชิต
+วิเชียร
+วิญญัตติ
+วิญญาณ
+วิญญาณกทรัพย์
+วิญญู
+วิญญูชน
+วิญญูภาพ
+วิฑูรย์
+วิณหุ
+วิด
+วิดพื้น
+วิดัสดี
+วิตก
+วิตก-
+วิตกจริต
+วิตถาร
+วิตามิน
+วิถี
+วิทธะ
+วิทย-
+วิทยฐานะ
+วิทยา
+วิทยากร
+วิทยากล
+วิทยาเขต
+วิทยาคม
+วิทยาคาร
+วิทยาทาน
+วิทยาธร
+วิทยานิพนธ์
+วิทยาลัย
+วิทยาศาสตร์
+วิทยาศาสตร์กายภาพ
+วิทยาศาสตร์ชีวภาพ
+วิทยาศาสตร์เทคโนโลยีและสิ่งแวดล้อม
+วิทยาศาสตร์ประยุกต์
+วิทยุ
+วิทยุต
+วิทรุมะ
+วิทวัส
+วิทัตถิ
+วิทารณ์
+วิทาลน์
+วิทิต
+วิทู
+วิทูร
+วิเทวษ
+วิเทศ
+วิเทศสัมพันธ์
+วิเทโศบาย
+วิธ
+วิธวา
+วิธา
+วิธาน
+วิธี
+วิธุระ
+วิธู
+วิธูปนะ
+วิ่น
+วินย-
+วินันตู
+วินัย
+วินัยธร
+วินาที
+วินายก
+วินาศ
+วินาศ-
+วินาศกรรม
+วินาศภัย
+วินิจ
+วินิจฉัย
+วินิต
+วินิบาต
+วินิปาติก
+วิเนต
+วิโนทก
+วิบัติ
+วิบาก
+วิบุล
+วิบุลย์
+วิบูล
+วิบูลย์
+วิปการ
+วิปฏิสาร
+วิปโยค
+วิประการ
+วิประติสาร
+วิประโยค
+วิประลาป
+วิประวาส
+วิปริต
+วิปลาป
+วิปลาส
+วิปวาส
+วิปักษ์
+วิปัสสก
+วิปัสสนา
+วิพากษ์
+วิพากษ์วิจารณ์
+วิพิธทัศนา
+วิพุธ
+วิภว-
+วิภวตัณหา
+วิภังค์
+วิภัช
+วิภัช-
+วิภัชพยากรณ์
+วิภัชวาที
+วิภัตติ
+วิภา
+วิภาค
+วิภาช
+วิภาดา
+วิภาวี
+วิภาษ
+วิภาส
+วิภู
+วิภูษณะ
+วิภูษา
+วิภูษิต
+วิเภตก์
+วิเภทก์
+วิมน
+วิมล
+วิมลัก
+วิมลาก
+วิมังสา
+วิมัติ
+วิมาน
+วิมุข
+วิมุต
+วิมุตติ
+วิเมลือง
+วิโมกข์
+วิเยน
+วิโยค
+วิร-
+วิรงรอง
+วิรตะ
+วิรมณะ
+วิรวะ
+วิระ
+วิรังรอง
+วิรัช
+วิรัต
+วิรัติ
+วิราคะ
+วิราม
+วิราวะ
+วิริยภาพ
+วิริยะ
+วิรุธ
+วิรุฬห์
+วิรุฬหก
+วิรูป
+วิรูปักษ์
+วิเรนทร์
+วิโรค
+วิโรจ
+วิโรจน์
+วิโรฒ
+วิโรธ
+วิโรธน์
+วิลย-
+วิลันดา
+วิลัย
+วิลาด
+วิลาป
+วิลาวัณย์
+วิลาศ
+วิลาส
+วิลาสินี
+วิลิปดา
+วิเลป
+วิเลป-
+วิเลปนะ
+วิโลก
+วิโลกนะ
+วิโลจนะ
+วิโลม
+วิไล
+วิไลวรรณ
+วิวรณ์
+วิวรรธน์
+วิวระ
+วิวัฏ
+วิวัฒน-
+วิวัฒน์
+วิวัฒนาการ
+วิวัน
+วิวาท
+วิวาห-
+วิวาห์
+วิวาหะ
+วิวิจ
+วิวิต
+วิวิธ
+วิเวก
+วิศรุต
+วิศว-
+วิศวกร
+วิศวกรรม
+วิศวกรรมศาสตร์
+วิศัลย์
+วิศาข-
+วิศาขบูชา
+วิศาขะ
+วิศาขา
+วิศางค์
+วิศาล
+วิศิษฏ์
+วิศุทธ์
+วิศุทธิ์
+วิเศษ
+วิเศษณ-
+วิเศษณ์
+วิเศษณการก
+วิษณุ
+วิษณุกรรม
+วิษณุโลก
+วิษณุเวท
+วิษธร
+วิษักต์
+วิษัย
+วิษาณ
+วิษุวัต
+วิสกี้
+วิสม-
+วิสย-
+วิสรรชนีย์
+วิสฤต
+วิสสุกรรม
+วิสัชนา
+วิสัญญี
+วิสัญญีแพทย์
+วิสัญญีวิทยา
+วิสัย
+วิสาข-
+วิสาขบูชา
+วิสาขะ
+วิสาขา
+วิสามัญ
+วิสามัญฆาตกรรม
+วิสามานยนาม
+วิสาร
+วิสารท
+วิสาล
+วิสาสะ
+วิสาหกิจ
+วิสิฐ
+วิสุงคามสีมา
+วิสุทธ์
+วิสุทธิ์
+วิสูตร
+วิเสท
+วิหค
+วิหงค์
+วิหลั่น
+วิหายสะ
+วิหาร
+วิหาร-
+วิหารแกลบ
+วิหารคด
+วิหารทิศ
+วิหารธรรม
+วิหารยอด
+วิหารหลวง
+วิหิงสะ
+วิหิงสา
+วิเหสา
+วิฬังค์
+วิฬาร
+วิฬาร์
+วี
+วีจิ
+วีชนี
+วีณา
+วี้ด
+วีต-
+วีร-
+วีรกรรม
+วีรชน
+วีรบุรุษ
+วีรสตรี
+วี่วัน
+วี่แวว
+วีสะ
+วุ้ง
+วุฐิ
+วุฒ
+วุฒิ
+วุฒิ-
+วุฒิบัตร
+วุฒิสภา
+วุฒิสมาชิก
+วุด
+วุ่น
+วุ้น
+วุ้นชา
+วุ่นเป็นจุลกฐิน
+วุ่นวาย
+วุ้นเส้น
+วุบ
+วุ้ย
+วุลแฟรม
+วู้
+วูดวาด
+วูบ
+วูบวาบ
+วู่วาม
+เว้
+เวค
+เวคิน
+เวคี
+เวจ
+เวจ-
+เวจกุฎี
+เวจมรรค
+เวช
+เวช-
+เวชกรรม
+เวชภัณฑ์
+เวชยันต์
+เวชศาสตร์
+เวฐน์
+เวณะ
+เวณิ
+เวณิก
+เวณุ
+เวณุวัน
+เวตน์
+เวตร
+เวตาล
+เวท
+เวท-
+เวทคู
+เวทนา
+เวทมนตร์
+เวทย์
+เวทางค์
+เวทางคศาสตร์
+เวทานต์
+เวทานตะ
+เวทิ
+เวที
+เวธะ
+เวน
+เว้น
+เวนคืนอสังหาริมทรัพย์
+เว้นแต่
+เวนไตย
+เวไนย
+เวมะ
+เวมัต
+เวมัติก-
+เวมาติก
+เว้ย
+เวร
+เวรมณี
+เวรี
+เวโรจน์
+เวลา
+เวเลนซี
+เววัณ
+เววัณณิยะ
+เวศม์
+เวศย์
+เวศยา
+เวสน์
+เวสภู
+เวสม์
+เวสมะ
+เวสวัณ
+เวสสะ
+เวสสันดร
+เวสสุกรรม
+เวสสุวัณ
+เวสารัช
+เวสิ
+เวสิยา
+เวหน
+เวหะ
+เวหังค์
+เวหัปติ
+เวหา
+เวหายส
+เวหาส
+เวฬุ
+เวฬุการ
+เวฬุริย
+เวฬุวัน
+เว่อ
+เว้า
+เว้าวอน
+เวิก
+เวิ้ง
+เวิ้งว้าง
+เวี่ย
+เวียง
+เวียน
+เวียนเทียน
+เวียนหัว
+เวียร
+เวี่ยว
+แว้
+แวง
+แว้ง
+แว้งกัด
+แวด
+แวดล้อม
+แวดวง
+แวตร
+แวน
+แว่น
+แว่นขยาย
+แวนดา
+แว่นตา
+แว่นฟ้า
+แว่นไว
+แวบ
+แวบๆ
+แวบวับ
+แวม
+แวว
+แว่ว
+แวววาม
+แวววาว
+แวววิเชียร
+แวะ
+โว
+โว่
+โวการ
+โว่ง
+โวทาน
+โว้ย
+โวยวาย
+โว้เว้
+โวสาน
+โวหาร
+ไว
+ไว้
+ไวกูณฐ์
+ไว้ใจ
+ไวฑูรย์
+ไว้ตัว
+ไวทย์
+ไว้ทุกข์
+ไว้ธุระ
+ไว้เนื้อเชื่อใจ
+ไวพจน์
+ไวไฟ
+ไว้ยศ
+ไวยากรณ์
+ไวยาวัจกร
+ไวยาวัจมัย
+ไว้ลาย
+ไววรรณ
+ไวษณพ
+ไว้หน้า
+ไว้อาลัย
+ไวโอลิน
+ศ
+ศก
+ศกฏ
+ศกล
+ศกุน
+ศกุนต์
+ศกุนิ
+ศกุนี
+ศงกา
+ศจี
+ศฐ
+ศดก
+ศต
+ศต-
+ศตก
+ศตบาท
+ศตปที
+ศตพรรษ
+ศตภิษัช
+ศตวรรษ
+ศตสังวัตสร์
+ศตัฆนี
+ศนิ
+ศนิวาร
+ศพ
+ศพล
+ศม
+ศมน
+ศย
+ศยนะ
+ศยาม
+ศยามล
+ศร
+ศรนารายณ์
+ศรภ
+ศรมณะ
+ศรรกรา
+ศรวณะ
+ศรวณีย์
+ศรวิษฐา
+ศรศิลป์ไม่กินกัน
+ศระวณ
+ศรัณย์
+ศรัณยู
+ศรัถนะ
+ศรัท
+ศรัทธา
+ศรัย
+ศราทธ-
+ศราทธ์
+ศราทธพรต
+ศราพ
+ศราพก
+ศรายุธ
+ศราวก
+ศราวณะ
+ศราวรณ์
+ศราสน์
+ศรี
+ศรีตรัง
+ศรีสังคีต
+ศรุต
+ศรุติ
+ศฤคาล
+ศฤงค์
+ศฤงคาร
+ศฤงคาริน
+ศฤงคารี
+ศลภ
+ศลัถ
+ศลิษฏ์
+ศลิษา
+ศว
+ศวศุร
+ศวัส
+ศวัสน
+ศวา
+ศวาน
+ศวาส
+ศศ-
+ศศธร
+ศศพินทุ์
+ศศลักษณ์
+ศศะ
+ศศิ
+ศศิกษัย
+ศศิขัณฑ์
+ศศิเคราะห์
+ศศิธร
+ศศิน
+ศศิมณฑล
+ศศิวิมล
+ศศี
+ศสา
+ศอ
+ศอก
+ศอกกลับ
+ศอกกำ
+ศอกกำมา
+ศอกคู้
+ศอกตูม
+ศักดา
+ศักดิ
+ศักดิ์
+ศักดินา
+ศักดิ์ศรี
+ศักดิ์สิทธิ์
+ศักติ
+ศักย-
+ศักย์
+ศักยภาพ
+ศักยะ
+ศักร-
+ศักรภพน์
+ศักราช
+ศักรินทร์
+ศักเรนทร์
+ศังกร
+ศังกา
+ศังกุ
+ศัตรู
+ศัทธนะ
+ศันสนะ
+ศันสนีย์
+ศัพท-
+ศัพท์
+ศัพทมูลวิทยา
+ศัยยา
+ศัล
+ศัลก
+ศัลกี
+ศัลย-
+ศัลยกรรม
+ศัลยแพทย์
+ศัลยศาสตร์
+ศัสดร
+ศัสตร-
+ศัสตรกรรม
+ศัสตรการ
+ศัสตรศาสตร์
+ศัสตรา
+ศัสย
+ศาก
+ศาก-
+ศากตะ
+ศากภักษ์
+ศากย-
+ศากยเกตุ
+ศากยพุทธ
+ศากยมุนี
+ศากยะ
+ศาฎก
+ศาฐยะ
+ศาณ
+ศาต
+ศานต-
+ศานต์
+ศานตรส
+ศานติ
+ศานติก-
+ศานติโหม
+ศาป
+ศาป-
+ศาปมุกติ์
+ศาปานต์
+ศาพร
+ศารท
+ศารทวิษุวัต
+ศารทูล
+ศาริกา
+ศาล
+ศาลกงสุล
+ศาลแขวง
+ศาลคดีเด็กและเยาวชน
+ศาลจังหวัด
+ศาลชั้นต้น
+ศาลฎีกา
+ศาลเตี้ย
+ศาลทหาร
+ศาลปกครอง
+ศาลโปริสภา
+ศาลเพียงตา
+ศาลแพ่ง
+ศาลยุติธรรม
+ศาลเยาวชนและครอบครัว
+ศาลโลก
+ศาลสถิตยุติธรรม
+ศาลสูง
+ศาลสูงสุด
+ศาลอาญา
+ศาลอุทธรณ์
+ศาลอุทธรณ์ภาค
+ศาลา
+ศาลาประชาคม
+ศาลาราย
+ศาลาสรง
+ศาศวัต
+ศาสก
+ศาสดา
+ศาสตร-
+ศาสตร์
+ศาสตรา
+ศาสตราจารย์
+ศาสน-
+ศาสน์
+ศาสนจักร
+ศาสนา
+ศาสนีย-
+ศาสนีย์
+ศาสนูปถัมภก
+ศิกษก
+ศิการ
+ศิขร
+ศิขริน
+ศิขรี
+ศิขัณฑ์
+ศิขา
+ศิคาล
+ศิงขร
+ศิงขริน
+ศิต
+ศิถี
+ศิพิระ
+ศิร-
+ศิรประภา
+ศิระ
+ศิรา
+ศิรามพุช
+ศิโรรัตน์
+ศิโรราบ
+ศิโรเวฐน์
+ศิลป-
+ศิลป์
+ศิลปกร
+ศิลปกรรม
+ศิลปการ
+ศิลปกิจ
+ศิลปวิทยา
+ศิลปศาสตร์
+ศิลปะ
+ศิลปิน
+ศิลปี
+ศิลา
+ศิลาฤกษ์
+ศิลาแลง
+ศิว-
+ศิวโมกข์
+ศิวลึงค์
+ศิวเวท
+ศิวะ
+ศิศีระ
+ศิศุ
+ศิษฎิ
+ศิษฏ์
+ศิษย์
+ศิษย์มีครู
+ศีขร
+ศีขริน
+ศีขรี
+ศีต-
+ศีตกาล
+ศีตล
+ศีรษะ
+ศีรษะกระบือ
+ศีรษะโค
+ศีรษะช้าง
+ศีรษะเนื้อ
+ศีล
+ศีลจุ่ม
+ศีลธรรม
+ศีลมหาสนิท
+ศีลล้างบาป
+ศีลวัต
+ศีลอด
+ศึก
+ศึกษา
+ศึกษาธิการ
+ศึกษานิเทศก์
+ศึกหน้านาง
+ศุกร-
+ศุกร์
+ศุกรวรรณ
+ศุกล-
+ศุกลปักษ์
+ศุกลัม
+ศุกะ
+ศุจิ
+ศุจิกรรม
+ศุทธ
+ศุทธิ
+ศุน
+ศุนัก
+ศุนิ
+ศุภ-
+ศุภกร
+ศุภเคราะห์
+ศุภนิมิต
+ศุภมัสดุ
+ศุภมาตรา
+ศุภมาส
+ศุภร-
+ศุภอักษร
+ศุภางค์
+ศุลก-
+ศุลกากร
+ศุลการักษ์
+ศุลี
+ศุษิร
+ศูกร
+ศูทร
+ศูนย-
+ศูนย์
+ศูนย์การค้า
+ศูนย์ชุมชน
+ศูนย์พ่าห์
+ศูนยภาพ
+ศูนย์เยาวชน
+ศูนยวาท
+ศูนย์สัมบูรณ์
+ศูนย์สูตร
+ศูล
+ศูลิน
+เศรณี
+เศรษฐ-
+เศรษฐ์
+เศรษฐกิจ
+เศรษฐศาสตร์
+เศรษฐี
+เศร้า
+เศร้าหมอง
+เศลษ
+เศวดงค์
+เศวดีภ
+เศวต
+เศวต-
+เศวตงค์
+เศวตฉัตร
+เศวตร
+เศวตัมพร
+เศวติภ
+เศวตีภ
+เศวเตภ
+เศวาล
+เศษ
+เศษเกิน
+เศษซ้อน
+เศษส่วน
+เศษสิบ
+เศาจ-
+เศาไจย
+เศาร์
+เศารยะ
+เศิก
+เศียร
+โศก
+โศก-
+โศกนาฏกรรม
+โศกศัลย์
+โศกา
+โศกาดูร
+โศกาลัย
+โศกี
+โศจนะ
+โศจนียะ
+โศจิ
+โศถะ
+โศธนะ
+โศผะ
+โศภ
+โศภน
+โศภา
+โศภิต
+โศภิน
+โศภิษฐ์
+โศภี
+โศรณิ
+โศรณี
+โศรดา
+โศรตร
+โศลก
+ไศล
+ไศล-
+ไศวะ
+ษ
+ษมา
+ษมายุมแปลง
+ษัฏ
+ษัฏกะ
+ษัฑ
+ษัณ
+ษัษ
+ษัษฏี
+ษัษฐ
+ษัษฐี
+โษฑศ
+โษฑศัน
+ส
+สก-
+สกฏ-
+สกฏภาร
+สกฏะ
+สกทาคามิผล
+สกทาคามิมรรค
+สกทาคามี
+สกนธ์
+สกปรก
+สกรณีย์
+สกรรจ์
+สกรรมกริยา
+สกล
+สกล-
+สกลมหาสังฆปริณายก
+สกลโลก
+สกวาที
+สกัด
+สกัดแคร่
+สกา
+สกาว
+สกิทาคามี
+สกี
+สกีน้ำ
+สกุณ
+สกุณา
+สกุณี
+สกุน
+สกุนต์
+สกุล
+สกุลรุนชาติ
+สเกต
+สเกตน้ำแข็ง
+สแกนเดียม
+สขะ
+สขา
+สขิ
+สง
+ส่ง
+สงกร
+สงกรานต์
+ส่งกลิ่น
+สงกา
+สงโกจ
+ส่งข่าว
+สงค์
+สงคร
+สงคราม
+สงครามกลางเมือง
+สงครามเย็น
+สงครามโลก
+สงเคราะห์
+สงฆ์
+ส่งดอก
+ส่งเดช
+ส่งตัว
+ส่งท้าย
+สงบ
+สงบเสงี่ยม
+ส่งภาษา
+ส่งลำ
+สงวน
+สงเษป
+ส่งสการ
+สงสัย
+สงสาร
+สงสาร-
+สงสารทุกข์
+สงสารวัฏ
+ส่งเสริม
+ส่งเสีย
+ส่งเสียง
+สงัด
+สง่า
+สฐ
+สณฑ์
+สด
+สดก
+สดคาว
+สดชื่น
+สดน
+สดมภ์
+สดๆ ร้อนๆ
+สดใส
+สดัน
+สดับ
+สดับตรับฟัง
+สดับปกรณ์
+สดำ
+สดี
+สดุดี
+สดูป
+สต
+สตก
+สตน
+สตภิสชะ
+สตมาหะ
+สตรอนเชียม
+สตริกนิน
+สตรี
+สตรีลิงค์
+สตรีลึงค์
+สตัน
+สตันย์
+สตัพธ์
+สตัฟฟ์
+สตัมภ์
+สตางค์
+สติ
+สติปัญญา
+สติปัฏฐาน
+สติวินัย
+สติสัมปชัญญะ
+สตี
+สตู
+สตูป
+สถน
+สถบดี
+สถล
+สถล-
+สถลทิน
+สถลบถ
+สถลมารค
+สถวิร-
+สถวีร-
+สถวีระ
+สถาน
+สถานการณ์
+สถานภาพ
+สถานะ
+สถานี
+สถาบก
+สถาบัน
+สถาปนา
+สถาปนิก
+สถาปนียพยากรณ์
+สถาปนียวาที
+สถาปัตยกรรม
+สถาปัตยกรรมศาสตร์
+สถาพร
+สถาล
+สถาวร
+สถิต
+สถิตยศาสตร์
+สถิติ
+สถิติศาสตร์
+สถิร-
+สถุล
+สถูป
+สทึง
+สทุม
+สธน
+สธุสะ
+สน
+ส้น
+สนใจ
+สนเดก
+สนตะพาย
+ส้นตีน
+สนทนา
+สนทรรศ
+สนทรรศน์
+สนทิศ
+สนเทศ
+สนเท่ห์
+สนธยา
+สนธิ
+สนธิสัญญา
+สนธิอลงกต
+สนนราคา
+สนแผง
+สนม
+สนมเอก
+สนวน
+สนหางสิงห์
+สนอง
+สนองไข
+สนองได
+สนองโอษฐ์
+สนอบ
+สนอม
+สนะ
+สนัด
+สนัดใจ
+สนั่น
+สนับ
+สนับแข้ง
+สนับงา
+สนับทึบ
+สนับนิ้วมือ
+สนับเพลา
+สนับมือ
+สนับสนุน
+สนาดก
+สนาน
+สนาบก
+สนาบัน
+สนาม
+สนามเพลาะ
+สนามหลวง
+สนายุ
+สนิก
+สนิท
+สนิทสนม
+สนิธ
+สนิม
+สนิมสร้อย
+สนุก
+สนุกเกอร์
+สนุกสนาน
+สนุข
+สนุต
+สนุ่น
+สบ
+สบง
+สบจ
+สบถ
+สบประมาท
+สบสังวาส
+สบเสีย
+สบัน
+สบาย
+สบู่
+สบู่เลือด
+สไบ
+สไบเฉียง
+สไบนาง
+สปริง
+สปาเกตตี
+สเปกตรัม
+สเปกโทรสโคป
+สไปริลลัม
+สพั้น
+สพาบ
+สภา
+สภากาชาด
+สภาค
+สภาจาร
+สภานายก
+สภาบดี
+สภาพ
+สภาพธรรม
+สภาว-
+สภาวการณ์
+สภาวะ
+สม
+ส้ม
+สมการ
+สมการเคมี
+ส้มกุ้ง
+สมคบ
+สมควร
+สมคะเน
+สมจร
+สมจริง
+สมจารี
+ส้มชื่น
+ส้มเช้า
+สมญา
+สมเญศ
+สมณ-
+สมณบริขาร
+สมณโวหาร
+สมณศักดิ์
+สมณสารูป
+สมณสาสน์
+สมณะ
+สมดุล
+สมเด็จ
+สมเด็จพระสังฆราช
+ส้มตำ
+สมถ-
+สมถยานิก
+สมถวิปัสสนา
+สมถะ
+สมทบ
+ส้มทับ
+สมนอก
+สมนัย
+สมนาคุณ
+สมน้ำสมเนื้อ
+สมน้ำหน้า
+สมใน
+สมบัติ
+สมบัตินักเลง
+สมบัติผู้ดี
+สมบุกสมบัน
+สมบุญ
+สมบูรณ์
+สมบูรณาญาสิทธิราชย์
+สมประกอบ
+สมประดี
+สมปฤดี
+สมปฤๅดี
+ส้มป่อย
+สมปัก
+สมผุส
+ส้มแผ่น
+สมพง
+สมพงศ์
+สมพรปาก
+สมพล
+สมพัตสร
+สมพาส
+สมเพช
+สมโพธน์
+สมโพธิ
+ส้มฟัก
+สมภพ
+สมภาร
+สมโภค
+สมโภช
+สมมต
+สมมติ
+สมมติ-
+สมมติฐาน
+ส้มมะขาม
+สมมาตร
+ส้มมือ
+สมมุติ
+สมมุติ-
+สมมุติฐาน
+สมมูล
+สมมูลเคมี
+สมโมท
+สมยอม
+สมโยค
+สมร
+สมร-
+สมรด
+สมรภูมิ
+สมรรถ
+สมรรถ-
+สมรรถนะ
+สมรรถภาพ
+สมรส
+สมรู้
+สมฤดี
+สมฤติ
+สมฤๅดี
+ส้มลิ้ม
+สมวัย
+สมวายะ
+สมสัก
+ส้มสันดาน
+สมสู่
+สมเสร็จ
+ส้มเสี้ยว
+สมหน้าสมตา
+สมเหตุสมผล
+สมอ
+สมอกานน
+สมอง
+สมองตาย
+สมองฝ่อ
+สมอจีน
+สมอทะเล
+สมอสำเภา
+สมอ้าง
+สมัค
+สมัคร
+สมัครพรรคพวก
+สมัครสมา
+สมัครสมาน
+สมังคี
+สมัช
+สมัชชา
+สมัญญา
+สมัต
+สมัน
+สมันต์
+สมัย
+สมัยเก่า
+สมัยใหม่
+สมา
+สมาคม
+สมาจาร
+สมาชิก
+สมาทาน
+สมาธิ
+สมาน-
+สมานคติ
+สมานฉันท์
+สมานสังวาส
+สมาบัติ
+สมาพันธรัฐ
+สมาส
+สม่ำเสมอ
+สมิง
+สมิงทอง
+สมิงพราย
+สมิงมิ่งชาย
+สมิต
+สมิติ
+สมิทธ์
+สมิทธิ
+สมี
+สมีป
+สมีร
+สมุก
+สมุจจัย
+สมุจเฉท
+สมุจเฉท-
+สมุจเฉทปหาน
+สมุฏฐาน
+สมุด
+สมุดไทย
+สมุดปูมเดินทาง
+สมุตถาน
+สมุทร
+สมุทร-
+สมุทรโคดม
+สมุทรโจร
+สมุทรศาสตร์
+สมุทรเสนา
+สมุทัย
+สมุน
+สมุนไพร
+สมุลแว้ง
+สมุห-
+สมุห์
+สมุหกลาโหม
+สมุหเทศาภิบาล
+สมุหนาม
+สมุหนายก
+สมุหประธาน
+สมุหพระกลาโหม
+สโมธาน
+สโมสร
+สโมสรสันนิบาต
+สยด
+สยดสยอง
+สยดแสยง
+สยนะ
+สยบ
+สยมพร
+สยมภู
+สยอง
+สยอน
+สยัมพร
+สยัมวรา
+สยาม
+สยาม-
+สยามรัฐ
+สยาย
+สยิว
+สยิ้ว
+สยุ่น
+สยุมพร
+สยุมภู
+สร
+สรก
+สรง
+สร่ง
+สรฏะ
+สรณ-
+สรณคมน์
+สรณตรัย
+สรณะ
+สรณาคมน์
+สรดัก
+สรดึ่น
+สรดื่น
+สรตะ
+สรตัก
+สรทะ
+สรทึง
+สรแทบ
+สรนุก
+สรเนาะ
+สรไน
+สรบ
+สรบบ
+สรบับ
+สรพ
+สรเพชญ
+สรภะ
+สรภัญญะ
+สรภู
+สรม
+สรร
+สรรค์
+สรรพ
+สรรพ-
+สรรพคราส
+สรรพคุณ
+สรรพนาม
+สรรพสามิต
+สรรพัชญ
+สรรพากร
+สรรพางค์
+สรรเพชญ
+สรรเพชุดา
+สรรเพชุดาญาณ
+สรรวง
+สรรเสริญ
+สรรแสร้ง
+สรลน
+สรลม
+สรลมสลวน
+สรลอด
+สรลอน
+สรละ
+สรล้าย
+สรลิด
+สรเลข
+สรวง
+สรวงเส
+สรวป
+สรวม
+สรวมชีพ
+สรวล
+สรวลเส
+สรวลเสเฮฮา
+สรเสริญ
+สร้อย
+สร้อยทอง
+สร้อยทะแย
+สร้อยนกเขา
+สร้อยน้ำผึ้ง
+สร้อยระย้า
+สร้อยเศร้า
+สร้อยสน
+สร้อยอ่อน
+สร้อยอินทนิล
+สระ
+สระกอ
+สระคราญ
+สระดะ
+สระท้อน
+สระพรั่ง
+สระอาด
+สระอื้น
+สรั่ง
+สรัสวดี
+สร่าง
+สร้าง
+สร้างวิมานในอากาศ
+สร้างสรรค์
+สราญ
+สร้าวเสียว
+สริต
+สรี้
+สรีร-
+สรีรกิจ
+สรีรธาตุ
+สรีรวิทยา
+สรีรศาสตร์
+สรีระ
+สรีรังคาร
+สรีรางคาร
+สรีสฤบ
+สรุก
+สรุกเกรา
+สรุง
+สรุโนก
+สรุป
+สรุสระ
+สรูป
+สโรช
+สฤก
+สฤคาล
+สฤต
+สฤษฎี
+สฤษฏ์
+สล
+สลด
+สลบ
+สลบไสล
+สลบเหมือด
+สลวน
+สลวย
+สลอด
+สลอน
+สลอย
+สละ
+สละสลวย
+สลัก
+สลักเกลียว
+สลักเต้
+สลักเพชร
+สลักสำคัญ
+สลักเสลา
+สลักหลัง
+สลัด
+สลัดได
+สลับ
+สลับฉาก
+สลัว
+สลา
+สลาก
+สลากกินแบ่ง
+สลากกินรวบ
+สลากภัต
+สลาง
+สล้าง
+สลาด
+สลาตัน
+สลาบ
+สลาย
+สลาเหิน
+สลิด
+สลิล
+สลึก
+สลึง
+สลุต
+สลุบ
+สลุมพร
+สแลง
+สว-
+สวก
+สวกรรม
+สวการย์
+ส้วง
+สวด
+สวน
+ส่วน
+ส่วนกลาง
+สวนควัน
+สวนความ
+ส่วนได้ส่วนเสีย
+ส่วนตัว
+ส่วนท้องถิ่น
+สวนแทง
+ส่วนประกอบ
+สวนปากสวนคำ
+ส่วนผสม
+ส่วนภูมิภาค
+ส่วนรวม
+ส่วนลด
+สวนสนาม
+ส่วนสัด
+ส่วนหน้า
+ส่วนหลัง
+สวนะ
+สวนาการ
+สวนิต
+สวนีย-
+สวบ
+สวภาพ
+สวม
+ส้วม
+สวมกอด
+สวมรอย
+สวมหัวโขน
+สวย
+ส่วย
+ส้วย
+สวยแต่รูป จูบไม่หอม
+สวยม
+สวยมพร
+สวยมภู
+ส้วยเสี้ยว
+สวร
+สวรรค-
+สวรรค์
+สวรรคต
+สวรรคบดี
+สวรรค์อยู่ในอก นรกอยู่ในใจ
+สวรรคาลัย
+สวรรยา
+สวราชย์
+สวะ
+สวัสดิ์
+สวัสดิการ
+สวัสดี
+สวัสติ
+สวัสติกะ
+สวา
+สวาคต
+สวาง
+สว่าง
+สว่างไสว
+สวาด
+สวาดิ
+สวาตี
+สวาท
+สว่าน
+สว้าน
+สวาบ
+สวาปาม
+สวามิ
+สวามินี
+สวามิภักดิ์
+สวามี
+สวาย
+สวายสอ
+สวาสดิ์
+สวาหะ
+สวิง
+สวิงสวาย
+สวิญญาณกทรัพย์
+สวิตช์
+สสาร
+สสาร-
+สสารนิยม
+สสุระ
+สสุรี
+สห-
+สหกรณ์
+สหการ
+สหจร
+สหชาต
+สหชาติ
+สหธรรม
+สหธรรมิก
+สหบาน
+สหประชาชาติ
+สหพันธ์
+สหพันธรัฐ
+สหภาพ
+สหภาพแรงงาน
+สหศึกษา
+สหัช
+สหัมบดี
+สหัส-
+สหัสธารา
+สหัสนัยน์
+สหัสเนตร
+สหัสรังสี
+สหัสสะ
+สหัสา
+สหาย
+สอ
+ส่อ
+สอง
+ส่อง
+ส้อง
+สองเกลอ
+สองจิตสองใจ
+สองใจ
+สองต่อสอง
+สองผม
+สองฝักสองฝ่าย
+สองไม้
+สองฤดู
+สองสลึงเฟื้อง
+สองหน้า
+สอด
+สอดคล้อง
+สอดแคล้ว
+สอดแนม
+สอดรู้
+สอดรู้สอดเห็น
+สอดส่อง
+สอดใส่
+สอดไส้
+สอน
+ส่อน
+สอนจระเข้ให้ว่ายน้ำ
+สอนหนังสือสังฆราช
+สอบ
+สอบซ้อม
+สอบปากคำ
+สอบพยาน
+สอบไล่
+สอบสวน
+สอบสวนทวนพยาน
+สอปูน
+สอพลอ
+ส้อม
+สอย
+สอยดอกฟ้า
+สอยดาว
+สอยผม
+สอยไร
+ส่อเสียด
+สะ
+สะกด
+สะกอ
+สะกาง
+สะการะ
+สะการะตาหรา
+สะกิด
+สะเก็ด
+สะแก
+สะแกวัลย์
+สะแกแสง
+สะคร้อ
+สะคราญ
+สะค้าน
+สะเงาะสะแงะ
+สะใจ
+สะดม
+สะดวก
+สะดัก
+สะดิ้ง
+สะดึง
+สะดือ
+สะดุ้ง
+สะดุ้งมาร
+สะดุด
+สะดุดใจ
+สะดุดตา
+สะดุดหู
+สะเด็ด
+สะเดา
+สะเดาดิน
+สะเดาอินเดีย
+สะเดาะ
+สะตอ
+สะตอเบา
+สะตาหมัน
+สะตึ
+สะตือ
+สะตุ
+สะเต๊ะ
+สะโตก
+สะทก
+สะทน
+สะท้อน
+สะท้อนใจ
+สะท้าน
+สะทึก
+สะทึน
+สะทึ่น
+สะเทิน
+สะเทิ้น
+สะเทินน้ำสะเทินบก
+สะเทือน
+สะเทื้อน
+สะเทือนใจ
+สะบะ
+สะบัก
+สะบักจม
+สะบักสะบอม
+สะบัด
+สะบัดก้น
+สะบัดมือ
+สะบัดร้อนสะบัดหนาว
+สะบัดลุกสะบัดนั่ง
+สะบัดสะบิ้ง
+สะบัดหน้า
+สะบั้น
+สะบันงา
+สะบันงาจีน
+สะบันงาต้น
+สะบ้า
+สะบ้าหัวเข่า
+สะบู
+สะแบง
+สะเปะสะปะ
+สะพรัก
+สะพรั่ง
+สะพรึงกลัว
+สะพรึบ
+สะพัก
+สะพัง
+สะพัด
+สะพั้น
+สะพาน
+สะพานแขวน
+สะพานชัก
+สะพานเชือก
+สะพานเดินเรือ
+สะพานทุ่น
+สะพานเบี่ยง
+สะพานปลา
+สะพานไฟ
+สะพานลอย
+สะพานเสี้ยว
+สะพานหก
+สะพานหัน
+สะพาย
+สะพายแล่ง
+สะเพร่า
+สะโพก
+สะเภา
+สะใภ้
+สะโมง
+สะระตะ
+สะระแหน่
+สะละปะตุ่น
+สะลาง
+สะลึมสะลือ
+สะวี้ดสะว้าด
+สะสม
+สะสวย
+สะสาง
+สะอาง
+สะอาด
+สะอ้าน
+สะอิ้ง
+สะอิดสะเอียน
+สะอึก
+สะอึกเข้าใส่
+สะอึกสะอื้น
+สะอื้น
+สะเอ้ง
+สะเอว
+สะเออะ
+สะโอดสะอง
+สะไอ
+สัก
+สักกะ
+สักกัจจะ
+สักกาย-
+สักกายทิฐิ
+สักการ-
+สักการะ
+สักขรา
+สักขี
+สักขี้ไก่
+สักฏะ
+สักตะ
+สักแต่ว่า
+สักยะ
+สักวา
+สักว่า
+สักหลาด
+สัขยะ
+สัค
+สัคคะ
+สั่ง
+สังกมทรัพย์
+สังกร
+สังกรณี
+สังกะตัง
+สังกะวัง
+สังกะวาด
+สังกะสี
+สังกัด
+สังกัปปะ
+สังกา
+สังการ
+สังกาศ
+สังกิเลส
+สังเกต
+สังเกตการณ์
+สังข-
+สังข์
+สังขกร
+สังขต-
+สังขตธรรม
+สังขตะ
+สังขยา
+สังขลิก
+สังขลิกา
+สังขาร
+สังขาร-
+สังขารธรรม
+สังขารโลก
+สังเขป
+สังโขภ
+สังค-
+สังค์
+สังคญาติ
+สังคม
+สังคม-
+สังคมนิยม
+สังคมวิทยา
+สังคมศาสตร์
+สังคมศึกษา
+สังคมสงเคราะห์
+สังคหะ
+สังคัง
+สังคาตา
+สังคายนา
+สังคายนาย
+สังคีต
+สังคีติ
+สังเค็ด
+สังเคราะห์
+สังฆ-
+สังฆกรรม
+สังฆการี
+สังฆเถระ
+สังฆทาน
+สังฆนายก
+สังฆปาโมกข์
+สังฆภัต
+สังฆเภท
+สังฆมณฑล
+สังฆมนตรี
+สังฆราช
+สังฆสภา
+สังฆาฏิ
+สังฆาณัติ
+สังฆาทิเสส
+สังฆาธิการ
+สังฆานุสติ
+สังฆาวาส
+สังดัก
+สังปะติแหงะ
+สังปะลิเหงะ
+สังโยค
+สังโยชน์
+สังวร
+สังวัจฉระ
+สังวัธยาย
+สังวาล
+สังวาลพราหมณ์
+สังวาส
+สังเวคะ
+สังเวช
+สังเวย
+สังเวียน
+สังสกฤต
+สังสการ
+สังสดมภ์
+สังสนทนา
+สั่งสนทนา
+สั่งสม
+สังสรรค์
+สั่งสอน
+สังสารวัฏ
+สังสิทธิ
+สังสุทธ์
+สังสุทธิ
+สั่งเสีย
+สังหร
+สังหรณ์
+สังหรรษ
+สังหาร
+สังหาริมทรัพย์
+สังหาริมะ
+สังหิต
+สัจ
+สัจ-
+สัจกิริยา
+สัจจะ
+สัจญาณ
+สัจนิยม
+สัจพจน์
+สัชฌ-
+สัชฌกร
+สัชฌการ
+สัชฌะ
+สัชฌายะ
+สัชฌุ
+สัชฌุกร
+สัชฌุการ
+สัญจร
+สัญจรโรค
+สัญจาร
+สัญเจตนา
+สัญชาต-
+สัญชาตญาณ
+สัญชาติ
+สัญฌา
+สัญญา
+สัญญาณ
+สัญญาบัตร
+สัญญาประกันชีวิต
+สัญญาประกันภัย
+สัญญาวิปลาส
+สัญญี
+สัญโญชน์
+สัญประกาศ
+สัญโยค
+สัญลักษณ์
+สัฐิ
+สัณฐาน
+สัณฐิติ
+สัณฑ์
+สัณห์
+สัด
+สัดจอง
+สัดส่วน
+สัต
+สัต-
+สัตการ
+สัตตบงกช
+สัตตบรรณ
+สัตตบุษย์
+สัตตะ
+สัตตาห-
+สัตตาหกาลิก
+สัตตู
+สัตถ-
+สัตถันดร
+สัตถา
+สัตถิ
+สัตถุ
+สัตถุศาสนา
+สัตบถ
+สัตบรรณ
+สัตบริภัณฑ์
+สัตบุรุษ
+สัตภัณฑ์
+สัตม-
+สัตมวาร
+สัตย-
+สัตย์
+สัตยพรต
+สัตยวาที
+สัตยาเคราะห์
+สัตยาธิษฐาน
+สัตยาบัน
+สัตว-
+สัตว์
+สัตวบาล
+สัตวแพทย์
+สัตวโลก
+สัตววิทยา
+สัตวา
+สัตวาร
+สัตสดก
+สัทธรรม
+สัทธา
+สัทธาจริต
+สัทธาธิก
+สัทธิงวิหาริก
+สัทธินทรีย์
+สัทธิวิหาริก
+สัทศาสตร์
+สัน
+สั่น
+สั้น
+สันเขา
+สันดอน
+สันดาน
+สันดาป
+สันเดก
+สันโดษ
+สันต์
+สันตติ
+สันตะปาปา
+สันตะวา
+สันติ
+สันติกะ
+สันติภาพ
+สันตุฏฐี
+สันถระ
+สันถว-
+สันถวไมตรี
+สันถวะ
+สันถัต
+สันถาร
+สันทนะ
+สันทะ
+สันทัด
+สันทัดกรณี
+สันทัสนะ
+สันทาน
+สันทิฐิก-
+สันทิส
+สันเทส
+สันเทห
+สันธาน
+สันนิธิ
+สันนิบาต
+สันนิวาส
+สันนิเวส
+สันนิษฐาน
+สันปันน้ำ
+สันพร้านางแอ
+สันพร้ามอญ
+สันพร้าหอม
+สันรวง
+สันลึก
+สันสกฤต
+สันหลัง
+สันหลังยาว
+สับ
+สับเกลียว
+สับเงา
+สับเชือก
+สับนก
+สับปลับ
+สับปลี้
+สับปะขาว
+สับปะรด
+สับเปลี่ยน
+สับสน
+สับหลีก
+สัปคับ
+สัปคับช้าง
+สัปด-
+สัปดน
+สัปดปกรณ์
+สัปดประกรณ์
+สัปดสดก
+สัปดาห์
+สัปดาหะ
+สัปต-
+สัปตศก
+สัปทน
+สัปปะ
+สัปปิ
+สัปปุริส-
+สัปปุรุษ
+สัประยุทธ์
+สัปหงก
+สัปเหร่อ
+สัพ
+สัพพะ
+สัพพัญญู
+สัพเพเหระ
+สัพยอก
+สัมบูรณ์
+สัมปชัญญะ
+สัมปทา
+สัมปทาน
+สัมปยุต
+สัมปโยค
+สัมประสิทธิ์
+สัมประหาร
+สัมปรายภพ
+สัมปรายิกภพ
+สัมปัตติ
+สัมผัปลาป
+สัมผัส
+สัมผัสนอก
+สัมผัสใน
+สัมผัสสระ
+สัมผัสอักษร
+สัมพล
+สัมพหุลา
+สัมพัจฉร-
+สัมพัจฉรฉินท์
+สัมพัตสร
+สัมพัทธ์
+สัมพันธ-
+สัมพันธ์
+สัมพันธน์
+สัมพันธภาพ
+สัมพันธมิตร
+สัมพันธไมตรี
+สัมพาธะ
+สัมพาหน์
+สัมพาหะ
+สัมพุทธ-
+สัมพุทธะ
+สัมโพธิ
+สัมภวะ
+สัมภเวสี
+สัมภัต
+สัมภัตตะ
+สัมภาระ
+สัมภาษณ์
+สัมเภทะ
+สัมโภคกาย
+สัมมนา
+สัมมัปธาน
+สัมมา
+สัมมากัมมันตะ
+สัมมาจริยา
+สัมมาชีพ
+สัมมาทิฐิ
+สัมมาวาจา
+สัมมาวายามะ
+สัมมาสติ
+สัมมาสมาธิ
+สัมมาสังกัปปะ
+สัมมาอาชีวะ
+สัมโมทนียกถา
+สัมฤทธิ-
+สัมฤทธิ์
+สัมฤทธิศก
+สัยน์
+สัลลาป-
+สัลเลข-
+สัสดี
+สัสต-
+สัสตทิฐิ
+สัสสะ
+สัสสุ
+สัสสู
+สัสุรี
+สา
+ส่า
+สาก
+สากกะเบือ
+สากรรจ์
+สากล
+สากษิน
+สากษี
+สากหยาก
+สากัจฉา
+สากัลย์
+สากิย-
+สากิยบุตร
+สากิยมุนี
+สากิยะ
+สาเก
+ส่าขนุน
+สาขา
+ส่าไข้
+สาคร
+สาคเรศ
+สาคู
+สาคูลาน
+สาคูวิลาด
+สาง
+ส้าง
+สางคลื่น
+สางห่า
+สาฎก
+สาฏิก-
+สาณ-
+สาณี
+สาด
+สาดโคลน
+สาดน้ำรดกัน
+สาดเสียเทเสีย
+สาต
+สาตรา
+สาไถย
+สาทร
+สาทิส
+สาทิส-
+สาทิสลักษณ์
+สาทุ
+สาโท
+สาธก
+สาธย-
+สาธยะ
+สาธยาย
+สาธารณ-
+สาธารณ์
+สาธารณภัย
+สาธารณรัฐ
+สาธารณสถาน
+สาธารณสมบัติ
+สาธารณสมบัติของแผ่นดิน
+สาธารณสุข
+สาธารณะ
+สาธารณูปการ
+สาธารณูปโภค
+สาธิต
+สาธุ
+สาธุการ
+สาธุชน
+สาธุสะ
+สาน
+ส่าน
+สานตวะ
+สานุ
+สานุศิษย์
+สานู
+สาบ
+สาบขนุน
+สาบแร้ง
+สาบแร้งสาบกา
+สาบสูญ
+สาบเสือ
+สาบาน
+สาบานธง
+สาป
+สาปไตย
+สาปสรร
+สาม
+สามกษัตริย์
+สามเกลอ
+สามแก้ว
+สามขา
+สามขุม
+สามเขี้ยว
+สามคาน
+สามง่าม
+สามชุก
+สามแซ่
+สามเณร
+สามเณรี
+สามตา
+สามนต-
+สามนต์
+สามนตราช
+สามใบเถา
+สามเพลงตกม้าตาย
+สามเมา
+สามยทรัพย์
+สามรส
+สามล
+สามล้อ
+สามลำคาน
+สามวันดีสี่วันไข้
+สามเวท
+สามเศียร
+สามสลึงเฟื้อง
+สามสิบกลีบ
+สามเส้า
+สามหมุด
+สามหาบ
+สามหาว
+สามเหลี่ยม
+สามเหลี่ยมด้านเท่า
+สามเหลี่ยมมุมฉาก
+สามเหลี่ยมมุมป้าน
+สามเหลี่ยมมุมแหลม
+สามเหลี่ยมหน้าจั่ว
+สามัคคี
+สามัญ-
+สามัญสำนึก
+สามัตถิยะ
+สามานย-
+สามานย์
+สามานยนาม
+สามารถ
+สามิก
+สามิต
+สามินี
+สามิภักดิ์
+สามี
+สามีจิกรรม
+สาย
+ส่าย
+ส้าย
+สายกระได
+สายใจ
+สายชู
+สายซุง
+สายดิน
+สายตะพาย
+สายตัว
+สายตา
+สายตาพิการ
+สายติ่ง
+สายน้ำ
+สายน้ำผึ้ง
+สายบัว
+สายพาน
+สายฟ้า
+สายมงคล
+สายม่าน
+สายยู
+สายโยก
+สายใย
+สายระเดียง
+สายระยาง
+สายระโยง
+สายรัดทึบ
+สายรุ้ง
+สายล่อฟ้า
+สายลับ
+สายเลือด
+สายโลหิต
+ส่ายศึก
+ส่ายเศิก
+สายสนกลใน
+สายสมร
+สายสร้อย
+สายสวาท
+สายสะพาย
+สายสิญจน์
+สายสูตร
+สายหยุด
+สายเหา
+สายอากาศ
+สายเอก
+สายัณห์
+สายาห์
+สาร
+สาร-
+สารกรมธรรม์
+สารคดี
+สารตรา
+สารถี
+สารถีชักรถ
+สารท
+สารทา
+สารทุกข์สุกดิบ
+สารธรรม
+สารนิเทศ
+สารบบ
+สารบรรณ
+สารบัญ
+สารบับ
+ส้ารบับ
+สารบาญ
+สารบาญชี
+สารประกอบ
+สารประโยชน์
+สารพัด
+สารพัน
+สารพางค์
+สารภาพ
+สารภี
+สารภีทะเล
+สารภีป่า
+สารไมย
+สารละลาย
+สารวัด
+สารวัตร
+สารสนเทศ
+สารส้ม
+สารหนู
+สารหนูขาว
+สาระ
+สาระโกก
+สาระแน
+สาระพา
+สาระพาเฮโล
+สาระวอน
+สาระวารี
+สาระสะมา
+สารัตถ-
+สารัตถะ
+สารัตถะประโยชน์
+สารัทธ์
+สารัมภ์
+สาราณีย-
+สาราณียกร
+สาราณียธรรม
+สาราณียะ
+สารานุกรม
+สารีริกธาตุ
+สารูป
+สาโรช
+สาละ
+สาละวน
+สาลิ
+สาลิกา
+สาลินี
+สาลี
+สาลี่
+สาลู
+ส่าเลือด
+สาโลหิต
+สาว
+สาวก
+สาวกระทืบหอ
+สาวก้าว
+สาวแก่
+สาวเท้า
+สาวน้อยเล่นน้ำ
+สาวนะ
+สาวแส้
+สาวไส้
+สาวไส้ให้กากิน
+สาวิกา
+สาวิตร
+สาวิตรี
+สาสน
+สาสน-
+สาสน์
+สาสนธรรม
+สาสนา
+สาหร่าย
+สาหรี
+ส่าหรี
+สาหัตถ-
+สาหัตถิก-
+สาหัส
+สาหัสสากรรจ์
+ส่าเห็ด
+สาเหตุ
+ส่าเหล้า
+สาแหรก
+สาฬุระ
+สำ
+ส่ำ
+สำคัญ
+สำซ่าง
+สำแดง
+สำทับ
+สำนวด
+สำนวน
+สำนวนความ
+สำนอง
+สำนัก
+สำนักสงฆ์
+สำนาน
+สำนึก
+สำนึง
+สำเนา
+สำเนียง
+สำบอก
+สำบัดสำนวน
+สำปะลอ
+สำปะหลัง
+สำปั้น
+สำปันนี
+สำเภา
+สำเภาทอง
+สำมะงา
+สำมะโน
+สำมะโนครัว
+สำมะโนประชากร
+สำมะลอ
+สำมะเลเทเมา
+สำมะหา
+สำรด
+สำรวจ
+สำรวม
+สำรวมใจ
+สำรวย
+สำรวล
+สำรอก
+สำรอง
+สำรับ
+สำราก
+สำราญ
+สำริด
+สำเร็จ
+สำเร็จโทษ
+สำเร็จรูป
+สำเรา
+สำเริง
+สำโรง
+สำลัก
+สำลาน
+สำลี
+สำแลง
+สำสร้าง
+สำส่อน
+สำสา
+สำเส็ด
+ส่ำเสีย
+สำหรวด
+สำหรับ
+สำหา
+สำเหนียก
+สำเหร่
+สำออย
+สำอาง
+สิ
+สิกข์
+สิกขมานา
+สิกขา
+สิกขากาม-
+สิกขาบท
+สิขร
+สิขรี
+สิขเรศ
+สิขา
+สิขานล
+สิขี
+สิคาล
+สิง
+สิ่ง
+สิงขร
+สิ่งของ
+สิงค์
+สิงคลิ้ง
+สิงคลี
+สิงคาร
+สิงคาล
+สิงคี
+สิงโต
+สิงโตทะเล
+สิ่งพิมพ์
+สิ่งละอันพันละน้อย
+สิ่งแวดล้อม
+สิงสถิต
+สิงสาราสัตว์
+สิงสู่
+สิงห-
+สิงห์
+สิงหนาท
+สิงหบัญชร
+สิงหรา
+สิงหราช
+สิงหล
+สิงหลก-
+สิงหาคม
+สิงหาสน์
+สิญจ-
+สิญจน์
+สิต-
+สิตางศุ์
+สิถิล
+สิทธ-
+สิทธ์
+สิทธา
+สิทธาจารย์
+สิทธานต์
+สิทธารถ
+สิทธิ
+สิทธิ์
+สิทธิกร
+สิทธิการิยะ
+สิทธิ์ขาด
+สิทธิครอบครอง
+สิทธิชัย
+สิทธิโชค
+สิทธิบัตร
+สิทธิยึดหน่วง
+สิทธิสภาพนอกอาณาเขต
+สิธยะ
+สิน
+สิ้น
+สินค้า
+สินค้าเข้า
+สินค้าออก
+สิ้นคิด
+สินจ้าง
+สิ้นใจ
+สิ้นชีพ
+สิ้นชีพตักษัย
+สิ้นชีวิต
+สิ้นเชิง
+สินเชื่อ
+สินใช้
+สินเดิม
+สิ้นตำรา
+สิ้นแต้ม
+สินไถ่
+สินทรัพย์
+สิ้นท่า
+สินทูระ
+สินเทา
+สินธพ
+สินธุ
+สินธุระ
+สินเธาว์
+สินน้ำใจ
+สิ้นเนื้อประดาตัว
+สินบน
+สินบริคณห์
+สิ้นบุญ
+สิ้นประตู
+สิ้นพระชนม์
+สินระบาด
+สินแร่
+สิ้นไร้ไม้ตอก
+สิ้นฤทธิ์
+สิ้นลม
+สินสมรส
+สินส่วนตัว
+สินสอด
+สิ้นสุด
+สินหัวบัวนาง
+สินไหม
+สินไหมทดแทน
+สินะ
+สินาด
+สินิทธ์
+สินี
+สิเนรุ
+สิเนหก
+สิเนหนียะ
+สิเนหะ
+สิเนหา
+สิเน่หา
+สิบ
+สิบเบี้ยใกล้มือ
+สิบแปดมงกุฎ
+สิปปะ
+สิพนะ
+สิมพลี
+สิร-
+สิระ
+สิริ
+สิรี
+สิโรดม
+สิโรตม์
+สิลา
+สิโลก
+สิว
+สิ่ว
+สิ่วน่อง
+สิวเสี้ยน
+สิวะ
+สิวาลัย
+สิวิกา
+สิหนา
+สี
+สี่
+สี้
+สีกรุด
+สีกา
+สีกุน
+สีข้าง
+สีฆ-
+สีจัก
+สีชมพูดง
+สีชมพูสวน
+สีซอให้ควายฟัง
+สีด
+สีดอ
+สีต-
+สีต้น
+สีตล-
+สีตลรัศมี
+สีตลหฤทัย
+สีตโลทก
+สีโตทก
+สีทันดร
+สี่บท
+สีผึ้ง
+สีฝัด
+สีฟันคนทา
+สีฟันนางแอ
+สีไฟ
+สีมันต์
+สีมา
+สีลม
+สีละมัน
+สีวิกา
+สีสวรรค์
+สีสอ
+สีสะ
+สีสา
+สีสุก
+สีเสียด
+สีเสียดแก่น
+สีเสียดเปลือก
+สีเสียดเหนือ
+สีเสื้อน้อย
+สีห-
+สีห์
+สีหน้า
+สีหนาท
+สีหบัญชร
+สีหราช
+สีหะ
+สี่เหลี่ยม
+สี่เหลี่ยมขนมเปียกปูน
+สี่เหลี่ยมคางหมู
+สี่เหลี่ยมจัตุรัส
+สี่เหลี่ยมด้านขนาน
+สี่เหลี่ยมด้านไม่เท่า
+สี่เหลี่ยมผืนผ้า
+สึก
+สึกหรอ
+สึง
+สืบ
+สืบไป
+สืบพยาน
+สืบพันธุ์
+สืบพันธุ์แบบไม่อาศัยเพศ
+สืบพันธุ์แบบอาศัยเพศ
+สืบราชสมบัติ
+สืบราชสันตติวงศ์
+สืบศาสนา
+สืบสวน
+สืบสันดาน
+สืบสาย
+สืบสาวราวเรื่อง
+สืบเสาะ
+สืบหูก
+สื่อ
+สื่อการศึกษา
+สื่อมวลชน
+สื่อสาร
+สื่อสารมวลชน
+สุ
+สุก
+สุกก่อนห่าม
+สุกข์
+สุกดิบ
+สุกๆ ดิบๆ
+สุกแดด
+สุกร
+สุกรม
+สุกใส
+สุกเอาเผากิน
+สุกำศพ
+สุกียากี้
+สุข
+สุข-
+สุขนาฏกรรม
+สุขภัณฑ์
+สุขภาพ
+สุขลักษณะ
+สุขวิทยา
+สุขศาลา
+สุขศึกษา
+สุขา
+สุขาภิบาล
+สุขารมณ์
+สุขาวดี
+สุขิน
+สุขี
+สุขุม
+สุขุมาล
+สุคต
+สุคติ
+สุคนธ-
+สุคนธ์
+สุคนธรส
+สุคันธ์
+สุงก-
+สุงกะ
+สุงกากร
+สุงสิง
+สุงสุมาร
+สุงสุมารี
+สุจริต
+สุจหนี่
+สุจะ
+สุจิ
+สุจิต
+สุจิตร
+สุชน
+สุชัมบดี
+สุชา
+สุชาดา
+สุญ
+สุญ-
+สุญญ-
+สุญญากาศ
+สุญตา
+สุญนิยม
+สุณ
+สุณหา
+สุณิสา
+สุด
+สุดกำลัง
+สุดกู่
+สุดขีด
+สุดคน
+สุดคิด
+สุดจิต
+สุดใจ
+สุดด้าม
+สุดแต่
+สุดโต่ง
+สุดท้อง
+สุดท้าย
+สุดท้ายปลายโต่ง
+สุดแรงเกิด
+สุดลิ่ม
+สุดวิสัย
+สุดสงวน
+สุดสวาทขาดใจ
+สุดสายป่าน
+สุดเสียง
+สุดเสียงสังข์
+สุดหล้าฟ้าเขียว
+สุดเหวี่ยง
+สุดา
+สุต
+สุตกวี
+สุตตะ
+สุตตันตปิฎก
+สุตตันตะ
+สุติ
+สุทธ-
+สุทธ์
+สุทธาวาส
+สุทธิ
+สุทรรศน์
+สุทัศน์
+สุธา
+สุธาการ
+สุธาโภชน์
+สุธารส
+สุธารสชา
+สุธาสินี
+สุธาสี
+สุธี
+สุนทร
+สุนทร-
+สุนทรพจน์
+สุนทรี
+สุนทรีย-
+สุนทรียภาพ
+สุนทรียศาสตร์
+สุนทรียะ
+สุนัข
+สุนันท์
+สุโนก
+สุบดี
+สุบรรณ
+สุบิน
+สุปรีดิ์
+สุปรีย์
+สุปาณี
+สุพพัต
+สุพรรณ
+สุพรรณ-
+สุพรรณถัน
+สุพรรณบัฏ
+สุพรรณภาชน์
+สุพรรณราช
+สุพรรณศรี
+สุพรรณิการ์
+สุภ-
+สุภร
+สุภัค
+สุภา
+สุภาพ
+สุภาพชน
+สุภาพบุรุษ
+สุภาพสตรี
+สุภาษิต
+สุม
+สุ่ม
+สุมขอน
+สุมควัน
+สุ่มตัวอย่าง
+สุมทุม
+สุมน
+สุมนะ
+สุมนัส
+สุมนา
+สุมยุง
+สุ่มสี่สุ่มห้า
+สุ้มเสียง
+สุมหัว
+สุมะ
+สุมาลี
+สุเมธ
+สุเมรุ
+สุร-
+สุรคต
+สุรงค์
+สุรเชษฐ์
+สุรบดี
+สุรบถ
+สุรภาพ
+สุรภี
+สุรโลก
+สุรสีหนาท
+สุรเสียง
+สุรังค์
+สุรัติ
+สุรัสวดี
+สุรา
+สุรางค์จำเรียง
+สุรางคนา
+สุรางคนางค์
+สุราบาน
+สุรารักษ์
+สุราลัย
+สุรินทร์
+สุรินทราหู
+สุริย-
+สุริยกันต์
+สุริยกานต์
+สุริยการ
+สุริยกาล
+สุริยคติ
+สุริยคราส
+สุริยเคราะห์
+สุริยง
+สุริยน
+สุริยมณฑล
+สุริยะ
+สุริยัน
+สุริยา
+สุริยุปราคา
+สุริเยนทร์
+สุริเยศ
+สุริโย
+สุรีย์
+สุรุ่ยสุร่าย
+สุเรนทร์
+สุลต่าน
+สุว
+สุวภาพ
+สุวรรณ
+สุวรรณ-
+สุวรรณภูมิ
+สุวาน
+สุวินัย
+สุวิมล
+สุษิร
+สุสาน
+สุหนัต
+สุหร่ง
+สุหร่าย
+สุหฤท
+สุหัท
+สุเหร่า
+สู
+สู่
+สู้
+สูกษม
+สู่ขวัญ
+สู่ขอ
+สูง
+สูงเท่านกเขาเหิน
+สูงเทียมเมฆ
+สูงส่ง
+สูงสุดสอย
+สูงอายุ
+สูจกะ
+สูจนะ
+สูจิ
+สูจิบัตร
+สูเจ้า
+สูญ
+สูด
+สูต
+สูตร
+สูตรเคมี
+สูติ-
+สูติกรรม
+สูติบัตร
+สูติแพทย์
+สูติศาสตร์
+สูท
+สูท-
+สูทกรรม
+สูทศาสตร์
+สูน
+สูนุ
+สูบ
+สูบเลือด
+สูบเลือดสูบเนื้อ
+สูป-
+สูปการ
+สูปะ
+สู้ยิบตา
+สู้เย็บตา
+สูร
+สู้รบตบมือ
+สูรย-
+สูรย์
+สูรยกานต์
+สูรยคราส
+สูริ
+สู่รู้
+สู่สม
+สูสี
+สู้หน้า
+สู่หา
+สู้เหมือนหมาจนตรอก
+เส
+เสก
+เสกข-
+เสกขบุคคล
+เสกขะ
+เสกสรร
+เสข-
+เสขบุคคล
+เสขะ
+เสความ
+เส็ง
+เส้ง
+เส็งเคร็ง
+เสงี่ยม
+เสฏฐี
+เสณี
+เสด
+เสด็จ
+เสด็จในกรม
+เสด็จพระราชดำเนิน
+เสต-
+เสตุ
+เสถียร
+เสถียร-
+เสถียรภาพ
+เสท
+เสโท
+เสน
+เส้น
+เส้นแกงร้อน
+เส้นขนาน
+เส้นแข็ง
+เสนง
+เสน่ง
+เส้นด้าย
+เส้นตาย
+เส้นตื้น
+เส้นทาง
+เส้นบังคับ
+เส้นผมบังภูเขา
+เส้นผ่านศูนย์กลาง
+เส้นผ่าศูนย์กลาง
+เส้นแผลง
+เส้นยาแดงผ่าแปด
+เส้นใย
+เส้นใยแก้ว
+เส้นรอบวง
+เส้นรัศมี
+เส้นแร
+เส้นลายมือ
+เส้นลึก
+เส้นเลือด
+เส้นวันที่
+เส้นศูนย์สูตร
+เส้นสมมาตร
+เส้นสัมผัส
+เส้นสาย
+เสนห-
+เสน่ห์
+เสน่ห์จันทร์ขาว
+เสน่ห์จันทร์แดง
+เสน่ห์ปลายจวัก
+เส้นหมี่
+เสนหา
+เสน่หา
+เสนอ
+เส้นฮ่อ
+เสนะ
+เสนา
+เสน่า
+เสนากุฎ
+เสนางค์
+เสนางคนิกร
+เสนาธิการ
+เสนาธิปัต
+เสนานี
+เสนาบดี
+เสนาพยุห์
+เสนาพยูห์
+เสนาสนะ
+เสนาะ
+เสนี
+เสนีย์
+เสนียด
+เสนียะ
+เสบย
+เสบียง
+เสบียงกรัง
+เสพ
+เสพย์ติด
+เสเพล
+เสภา
+เสม็ด
+เสมหะ
+เสมอ
+เสมอใจ
+เสมอต้นเสมอปลาย
+เสมอตัว
+เสมอนอก
+เสมอบ่าเสมอไหล่
+เสมอภาค
+เสมอหน้า
+เสมา
+เสมียน
+เสมือน
+เสย
+เสร็จ
+เสริด
+เสริม
+เสริมสวย
+เสรี
+เสรีไทย
+เสรีธรรม
+เสรีนิยม
+เสรีภาพ
+เสล-
+เสลด
+เสลดพังพอน
+เสลดหางวัว
+เสลบรรพต
+เสลา
+เสลี่ยง
+เสลือกสลน
+เสโล
+เสวก
+เสวกามาตย์
+เสวนะ
+เสวนา
+เสวย
+เสวยพระชาติ
+เสวียน
+เสสรวง
+เสสรวล
+เสแสร้ง
+เสา
+เส้า
+เสากระโดง
+เสาเข็ม
+เสาชี้
+เสาดั้ง
+เสาตะลุง
+เสานางเรียง
+เสาร์
+เสารภย์
+เสารี
+เสาว-
+เสาวคนธ์
+เสาวคันธ์
+เสาวณิต
+เสาวธาร
+เสาวนะ
+เสาวนา
+เสาวนาการ
+เสาวนีย์
+เสาวภา
+เสาวภาคย์
+เสาวภาพ
+เสาวรภย์
+เสาวรส
+เสาวลักษณ์
+เสาหมอ
+เสาหฤท
+เสาหาน
+เสาเอก
+เสาะ
+เสาะด้าย
+เสาะป่าน
+เสาะแสะ
+เสิร์จ
+เสิร์ฟ
+เสีย
+เสียกบาล
+เสียกระบวน
+เสียกล
+เสียการ
+เสียกำซ้ำกอบ
+เสียกำได้กอบ
+เสียกำลังใจ
+เสียกิริยา
+เสียขวง
+เสียขวัญ
+เสียคน
+เสียคำพูด
+เสียง
+เสี่ยง
+เสียงเขียว
+เสียงแข็ง
+เสี่ยงชีวิต
+เสียงแตก
+เสียงทอง
+เสี่ยงทาย
+เสี่ยงบุญเสี่ยงกรรม
+เสียงพยัญชนะ
+เสี่ยงภัย
+เสียงสระ
+เสียงหลง
+เสียงอ่อน
+เสียจริต
+เสียใจ
+เสียโฉม
+เสียชาติเกิด
+เสียชื่อ
+เสียเชิง
+เสียด
+เสียดใบ
+เสียดสี
+เสียดาย
+เสียเด็ก
+เสียตัว
+เสียแต้ม
+เสียเถอะ
+เสียเถิด
+เสียท่า
+เสียที
+เสี้ยน
+เสี้ยนศึก
+เสี้ยนหนาม
+เสียน้ำใจ
+เสียน้ำตา
+เสียเนื้อเสียตัว
+เสียบ
+เสียบน
+เสียบหนู
+เสียปาก
+เสียเปรียบ
+เสียผี
+เสียผู้ใหญ่
+เสียภูมิ
+เสียม
+เสี่ยม
+เสี้ยม
+เสี้ยมเขาควายให้ชนกัน
+เสี้ยมสอน
+เสี่ยมสาร
+เสียรอย
+เสียรังวัด
+เสียราศี
+เสียรู้
+เสียรูป
+เสียรูปคดี
+เสียแรง
+เสียว
+เสี่ยว
+เสี้ยว
+เสียวซ่าน
+เสียวไส้
+เสียเศวตฉัตร
+เสียสละ
+เสียสาว
+เสียเส้น
+เสียหน่อย
+เสียหน้า
+เสียหลัก
+เสียหลาย
+เสียหัว
+เสียหาย
+เสียเหลี่ยม
+เสือ
+เสื่อ
+เสื้อ
+เสือก
+เสือกกะโหลก
+เสือกคลาน
+เสือกระดาษ
+เสือกระต่าย
+เสื้อกล้าม
+เสือกสน
+เสือกไส
+เสื้อกั๊ก
+เสือกินวัว
+เสือเก่า
+เสือข้ามห้วย
+เสือจนท่า ข้าจนทาง
+เสือซ่อนเล็บ
+เสือเฒ่าจำศีล
+เสือดาว
+เสือดำ
+เสือตกถัง
+เสือตบก้น
+เสือทลายห้าง ช้างทลายโรง
+เสือทะเล
+เสือนอนกิน
+เสือนั่งร่ม
+เสื้อน้ำ
+เสื่อน้ำมัน
+เสือในร่างสมัน
+เสือบอง
+เสือปลา
+เสือป่า
+เสือป่าแมวเซา
+เสือป่าแมวมอง
+เสือไฟ
+เสื่อม
+เสื่อมทราม
+เสื่อมโทรม
+เสื่อมสิทธิ์
+เสื่อมเสีย
+เสือแมลงวัน
+เสือรู้
+เสื่อลวด
+เสือลากหาง
+เสื่อลำแพน
+เสือสมิง
+เสือสิ้นตวัก
+เสือสุมาตรา
+เสื้อแสง
+เสือหมอบ
+เสือหิว
+แส
+แส่
+แส้
+แสก
+แสกๆ
+แสกหน้า
+แสง
+แสงเงินแสงทอง
+แสงจันทร์
+แสงสว่าง
+แสงอาทิตย์
+แสด
+แสดง
+แสดงออก
+แสตมป์
+แสเถา
+แสน
+แสนกล
+แสนง
+แสนงอน
+แสนย-
+แสนย์
+แสนยากร
+แสนยานุภาพ
+แสนรู้
+แสนเสนาะ
+แสนา
+แสบ
+แสบก
+แสม
+แสมสาร
+แส้ม้า
+แส้ม้าทะลาย
+แสยก
+แสยง
+แสยงขน
+แสยะ
+แสรก
+แสร้ง
+แสร้งว่า
+แสลง
+แสลงใจ
+แสลงเบื่อ
+แสวง
+แสอก
+แสะ
+โสก
+โสกโดก
+โสกันต์
+โสกาดานา
+โสโครก
+โสณ
+โสณฑ์
+โสณิ
+โสณี
+โสด
+โสดก
+โสดม
+โสดา
+โสดาบัน
+โสดาปัตติผล
+โสดาปัตติมรรค
+โสต
+โสต-
+โสตถิ
+โสตทัศนวัสดุ
+โสตทัศนอุปกรณ์
+โสทก
+โสทร
+โสธก
+โสธนะ
+โสน
+โสนกินดอก
+โสนคางคก
+โสนหางไก่
+โสนหิน
+โสภ-
+โสภณ
+โสภา
+โสภิณี
+โสภี
+โสเภณี
+โสม
+โสมนัส
+โสมม
+โสมย์
+โสมส่องแสง
+โสร่ง
+โสรจ
+โสรจสรง
+โสวรรณ
+โสหุ้ย
+โสฬส
+ใส
+ใส่
+ใส่ความ
+ใส่คะแนนไม่ทัน
+ใส่ไคล้
+ใส่ใจ
+ใส่ตะกร้าล้างน้ำ
+ใส่ถ้อยร้อยความ
+ใส่ไฟ
+ใส่ยา
+ใส่ร้าย
+ใส่สาแหรกแขวนไว้
+ใส่สีสัน
+ใส่ไส้
+ใส่หน้ากาก
+ใส่หน้ายักษ์
+ไส
+ไส้
+ไส้กรอก
+ไส้ไก่
+ไส้แขวน
+ไส้เดือน
+ไส้ตัน
+ไส้ติ่ง
+ไส้เป็นน้ำเหลือง
+ไส้เป็นหนอน
+ไสย
+ไสย-
+ไสยเวท
+ไสยศาสตร์
+ไสยา
+ไสยาสน์
+ไสร้
+ไส้ละมาน
+ไส้เลื่อน
+ไสว
+ไส้ศึก
+ไสหัว
+ไส้แห้ง
+ไส้อั่ว
+ห
+หก
+หกคว่ำ
+หกคะเมน
+หกบท
+หกล้ม
+หกโล่
+หกหัน
+หง
+หงกๆ
+หงส-
+หงส์
+หงสคติ
+หงส์ทอง
+หงสบาท
+หงสรถ
+หงส์ร่อนมังกรรำ
+หงสราช
+หงส์ลีลา
+หงส์หยก
+หงอ
+หงอก
+หง่องๆ
+หงองแหงง
+หงอด
+หงอดๆ
+หงอน
+หงอนไก่
+หงอนไก่ป่า
+หง่อม
+หงอย
+หง่อย
+หงอยก๋อย
+หงอยเหงา
+หงักๆ
+หงับๆ
+หง่าง
+หงาย
+หงายท้อง
+หงายหลัง
+หง่าว
+หงำ
+หงำเหงอะ
+หงิก
+หงิงๆ
+หงิม
+หงิมๆ
+หงึกๆ
+หงุงหงิง
+หงุดหงิด
+หงุบ
+หงุบหงับ
+หงุ่ย
+หญ้า
+หญ้ากระจาม
+หญ้าเกล็ดหอย
+หญ้าขัด
+หญ้าขัดใบยาว
+หญ้าขัดหลวง
+หญ้างวงช้าง
+หญ้าจาม
+หญ้าใต้ใบ
+หญ้าถอดปล้อง
+หญ้าน้ำดับไฟ
+หญ้าบัว
+หญ้าปากคอก
+หญ้าปีนตอ
+หญ้าฝรั่น
+หญ้าพันงู
+หญ้าเพ็ก
+หญ้าแพรก
+หญ้ายองไฟ
+หญ้ายายเภา
+หญ้ารกช้าง
+หญ้ารากขาว
+หญ้าลิเภา
+หญ้าหนวดแมว
+หญ้าแห้วหมู
+หญิง
+หญิบ
+หด
+หดหาย
+หดหู่
+หตะ
+หทย-
+หทัย
+หน
+หนทาง
+หนนะ
+หนวก
+หนวกหู
+หน่วง
+หน่วงเหนี่ยว
+หนวด
+หนวดนาคราช
+หนวดพราหมณ์
+หนวดแมว
+หน่วย
+หน่วยก้าน
+หน่วยกิต
+หน่วยดาราศาสตร์
+หนอ
+หน่อ
+หนอก
+หนอกช้าง
+หนอง
+หนองแซง
+หนองใน
+หน็องแหน็ง
+หนอน
+หนอนกระทู้
+หนอนกระสือ
+หนอนกอ
+หนอนด้น
+หนอนตายหยาก
+หนอนบ่อนไส้
+หนอนพยาธิ
+หนอนม้วนใบข้าว
+หนอนหนังสือ
+หน่อเนื้อเชื้อไข
+หน่อไม้
+หน่อไม้น้ำ
+หน่อไม้ฝรั่ง
+หน่อย
+หน็อยแน่
+หนัก
+หนักข้อ
+หนักใจ
+หนักแน่น
+หนักปาก
+หนักแผ่นดิน
+หนักมือ
+หนักไม่เอา เบาไม่สู้
+หนักหน่วง
+หนักหนา
+หนักหน้า
+หนักอก
+หนัง
+หนังกลางวัน
+หนังกำพร้า
+หนังไก่
+หนังตะลุง
+หนังเรียด
+หนังสติ๊ก
+หนังสือ
+หนังสือเดินทาง
+หนังสือบริคณห์สนธิ
+หนังสือพิมพ์
+หนังสือรับรองการทำประโยชน์
+หนังสือเวียน
+หนังสือสัญญา
+หนังหน้าไฟ
+หนังใหญ่
+หนั่น
+หนับ
+หนา
+หน้า
+หน้ากระฉีก
+หน้ากระดาน
+หน้ากาก
+หนากาสรี
+หน้าเก้อ
+หน้าขา
+หน้าข้าวตัง
+หน้าแข้ง
+หน้าคว่ำ
+หน่าง
+หน้างอ
+หน้างอก
+หน้าเง้า
+หน้าแง
+หน้าจ๋อย
+หน้าจั่ว
+หน้าจืด
+หน้าฉาก
+หน้าฉาน
+หน้าโฉนด
+หน้าซีด
+หน้าซื่อใจคด
+หน้าเซียว
+หนาด
+หน้าด้าน
+หน้าตัก
+หน้าตั้ง
+หนาตา
+หน้าตา
+หน้าต่าง
+หน้าตาย
+หน้าตึง
+หน้าตื่น
+หน้าตูม
+หน้าเตา
+หน้าถัง
+หน้าทับ
+หน้าที่
+หน้าที่นั่ง
+หนาน
+หน้านวล
+หน้าเนื้อใจเสือ
+หนาแน่น
+หน้าบัน
+หน้าบาง
+หน้าบาน
+หน้าบูด
+หน้าปัด
+หน้าเป็น
+หน้าผา
+หน้าผาก
+หน้าพาทย์
+หน้าไฟ
+หนาม
+หนามขี้แรด
+หนามเขียะ
+หนามควายนอน
+หนามจี้
+หนามแดง
+หนามเตย
+หนามพรม
+หนามพุงดอ
+หนามยอกอก
+หนามยอกเอาหนามบ่ง
+หนามรอบตัว
+หนามหลัง
+หนามเหม็น
+หนามแหลมไม่มีใครเสี้ยม
+หนามใหญ่
+หน้ามอด
+หน้าม่อย
+หน้าม้า
+หน้ามืด
+หน้ามุข
+หน้าไม้
+หน่าย
+หน่ายหนี
+หน่ายแหนง
+หน้าร่าหุ์
+หน้าราหู
+หน้าเลือด
+หนาว
+หนาวใจ
+หน้าวัว
+หน้าแว่น
+หน้าสิ่วหน้าขวาน
+หน้าเสีย
+หน้าเสี้ยว
+หน้าหนา
+หน้าหัก
+หนาหู
+หนาหูหนาตา
+หน้าใหญ่ใจโต
+หน้าไหว้หลังหลอก
+หน้าอก
+หน้าอัด
+หนำ
+หนำใจ
+หนำเลี้ยบ
+หนี
+หนี้
+หนี้เกลื่อนกลืนกัน
+หนีบ
+หนี้สิน
+หนี้สูญ
+หนีเสือ
+หนีเสือปะจระเข้
+หนึก
+หนึ่ง
+หนึบ
+หนืด
+หนุ
+หนุน
+หนุนเนื่อง
+หนุนหลัง
+หนุบ
+หนุบๆ
+หนุบหนับ
+หนุ่ม
+หนุ่มทั้งแท่ง
+หนุ่มแน่น
+หนุ่มเหน้า
+หนุ่ย
+หนู
+หนูตกถังข้าวสาร
+หนูติดจั่น
+หนูผี
+ห่ม
+หมก
+หมกมุ่น
+หมกไหม้
+หมด
+หมดกระเป๋า
+หมดกัน
+หมดเขต
+หมดเขี้ยวหมดงา
+หมดจด
+หมดตัว
+หมดตำรา
+หมดตูด
+หมดเนื้อหมดตัว
+หมดบุญ
+หมดประตู
+หมดเปลือก
+หมดพก
+หมดพุง
+หมดรูป
+หมดไส้หมดพุง
+ห่มดอง
+หมดอายุ
+หมดอาลัย
+หมดอาลัยตายอยาก
+หมดอาลัยไยดี
+หม่น
+หม่นหมอง
+หม่นไหม้
+หมวก
+หมวกกะโล่
+หมวกแก๊ป
+หมวกแจว
+หมวกทรงหม้อตาล
+หมวกนิรภัย
+หมวกหูกระต่าย
+หมวด
+หมอ
+หม่อ
+หม้อ
+หมอก
+หม้อแกง
+หม้อแกงค่าง
+หม้อแกงลิง
+หมอขวัญ
+หม้อข้าวหม้อแกงลิง
+หมอความ
+หมอง
+หม่อง
+หมองใจ
+หมองมัว
+หมองหมาง
+หมอช้างเหยียบ
+หมอเฒ่า
+หมอดู
+หมอตาล
+หม้อตาล
+หมอตำแย
+หม้อทะนน
+หมอไทย
+หมอน
+หม่อน
+หมอนขวาน
+หมอนข้าง
+หมอนทอง
+หมอน้อย
+หม้อน้ำ
+หมอน้ำมัน
+หมอบ
+หมอบกระแต
+หมอบราบคาบแก้ว
+หม้อแปลง
+หม้อแปลงไฟ
+หมอผี
+หมอพัดโตนด
+หม่อม
+หม่อมเจ้า
+หม่อมฉัน
+หม่อมราชวงศ์
+หม่อมหลวง
+หม่อมห้าม
+หมอย
+หมอลำ
+หม้อหนู
+หม้อห้อม
+หมัก
+หมักหมม
+หมัด
+หมัน
+หมั่น
+หมั้น
+หมั่นไส้
+หมับ
+หมับๆ
+หมา
+หม่า
+หม้า
+หมาก
+หมากเก็บ
+หมากข่วง
+หมากเขียว
+หมากแข้ง
+หมากคัน
+หมากดิบ
+หมากแดง
+หมากทัน
+หมากผาง
+หมากผู้หมากเมีย
+หมากฝรั่ง
+หมากม่วน
+หมากมาศ
+หมากเม่า
+หมากเม่าควาย
+หมากยับ
+หมากแยก
+หมากรุก
+หมากลิง
+หมากสง
+หมากหนาม
+หมากหอมควาย
+หมากเหลือง
+หมากอีแปะ
+หมากฮอส
+หมาขี้ไม่มีใครยกหาง
+หมาง
+หมางใจ
+หมางเมิน
+หมาจิ้งจอก
+หมาด
+หมาใน
+หมาป่า
+หมามุ่ย
+หมามุ้ย
+หมาไม้
+หมาย
+หม้าย
+หมายกำหนดการ
+หมายเกณฑ์
+หมายขัง
+หมายค้น
+หมายความ
+หมายจับ
+หมายจำคุก
+หมายใจ
+หมายตัว
+หมายตา
+หมายน้ำบ่อหน้า
+หมายปล่อย
+หมายมั่น
+หมายมั่นปั้นมือ
+หมายยา
+หมายเรียก
+หมายเลข
+หมายหัว
+หมายเหตุ
+หมายอาญา
+หมาร่า
+หมาสองราง
+หมาหมู่
+หมาหยอกไก่
+หมาหวงก้าง
+หมาหัวเน่า
+หมาหางด้วน
+หมาเห่าใบตองแห้ง
+หม่ำ
+หม้ำ
+หม้ำตับ
+หมิ่น
+หมิ่นประมาท
+หมิ่นพระบรมเดชานุภาพ
+หมิ่นเหม่
+หมี
+หมี่
+หมีเหม็น
+หมึก
+หมืน
+หมื่น
+หมุด
+หมุน
+หมุนเงิน
+หมุนเวียน
+หมุบ
+หมุบหมับ
+หมุบหมิบ
+หมุ่ย
+หมุยขาว
+หมู
+หมู่
+หมูเขาจะหามเอาคานเข้าไปสอด
+หมูแดง
+หมูตั้ง
+หมูเทโพ
+หมูน้ำ
+หมูแนม
+หมูในเล้า
+หมูในอวย
+หมูป่า
+หมูไปไก่มา
+หมูแผ่น
+หมูยอ
+หมูสนาม
+หมูสามชั้น
+หมูสี
+หมูหย็อง
+หมูหริ่ง
+หมูหรึ่ง
+หมูหัน
+หมูแฮม
+หย-
+หยก
+หยกๆ
+หย่ง
+หย่งๆ
+หยด
+หยดย้อย
+หยวก
+หยวบ
+หยวบๆ
+หยอก
+หยอกเย้า
+หย็อกหย็อย
+หยอกเอิน
+หย็อง
+หย่อง
+หย่องๆ
+หย็องกรอด
+หย็องแหย็ง
+หยอด
+หยอดหลุม
+หยอน
+หย่อน
+หย่อนใจ
+หย่อนอารมณ์
+หย่อม
+หย็อมแหย็ม
+หย็อย
+หย่อย
+หยัก
+หยักไย่
+หยักรั้ง
+หยักศก
+หยักเหยา
+หยัง
+หยั่ง
+หยั่งทราบ
+หยั่งรู้
+หยั่งเสียง
+หยังหยัง
+หยัด
+หยัน
+หยับ
+หยับๆ
+หยั่วเมือง
+หย่า
+หยากเยื่อ
+หยากไย่
+หย่ากัน
+หยาด
+หยาดน้ำค้าง
+หยาดน้ำฟ้า
+หย่านม
+หยาบ
+หยาบคาย
+หยาบช้า
+หยาบหยาม
+หยาม
+หยามน้ำหน้า
+หยาว
+หย้าว
+หยำเป
+หยำเหยอะ
+หยำแหยะ
+หยิก
+หยิกแกมหยอก
+หยิกหย็อง
+หยิ่ง
+หยิบ
+หยิบผิด
+หยิบยก
+หยิบยืม
+หยิบหย่ง
+หยิมๆ
+หยี
+หยี่
+หยุ
+หยุกหยิก
+หยุด
+หยุดหย่อน
+หยุ่น
+หยุบๆ
+หยุมหยิม
+หยูกยา
+หโยดม
+หร
+หรคุณ
+หรณ
+หรดาล
+หรดาลกลีบทอง
+หรดาลแดง
+หรดี
+หรบๆ
+หรรษ-
+หรรษา
+หรอ
+หรอก
+หร็อมแหร็ม
+หรอยๆ
+หระ
+หรับๆ
+หรัสว-
+หรัสวมูรดี
+หรัสวางค์
+หรา
+หริ
+หริคันธ์
+หริ่ง
+หริ่งๆ
+หริจันทน์
+หริณะ
+หริต
+หริตกี
+หริรักษ์
+หริวงศ์
+หรี่
+หรีด
+หรีตกี
+หรือ
+หรุบๆ
+หรุบรู่
+หรุบหรู่
+หรุ่ม
+หรู
+หรูหรา
+หฤทย
+หฤทย์
+หฤทัย
+หฤทัย-
+หฤทัยกลม
+หฤทัยกัปน์
+หฤทัยกัมป์
+หฤทัยปรีย์
+หฤทัยพันธน์
+หฤษฎ์
+หฤษฎี
+หฤหรรษ์
+หฤโหด
+หล
+หลง
+หลงกล
+หลงตา
+หลงลม
+หลงลืม
+หลงหูหลงตา
+หลงเหลือ
+หลงใหล
+หลด
+หลน
+หล่น
+หลบ
+หลบตา
+หลบฝาก
+หลบมุม
+หลบหน้า
+หลบหน้าหลบตา
+หลบหลังคา
+หล่ม
+หลวง
+หลวงจีน
+หลวม
+หลวมตัว
+หลอ
+หล่อ
+หลอก
+หลอกๆ
+หลอกลวง
+หลอกล่อ
+หลอกหลอน
+หลอด
+หลอดลม
+หลอดลมคอ
+หลอดลมฝอย
+หลอดเลือด
+หลอดอาหาร
+หลอน
+หล็อน
+หล็อนๆ
+หล่อน
+หลอม
+หลอมตัว
+หลอมละลาย
+หลอมเหลว
+หล่อลื่น
+หล่อเลี้ยง
+หล่อเหลา
+หละ
+หละหลวม
+หลัก
+หลักการ
+หลักเกณฑ์
+หลักแจว
+หลักชัย
+หลักฐาน
+หลักตอ
+หลักทรัพย์
+หลักประกัน
+หลักพยาน
+หลักลอย
+หลักสูตร
+หลักแหล่ง
+หลักแหลม
+หลัง
+หลั่ง
+หลังเขียว
+หลังคา
+หลังคาเรือน
+หลังจาก
+หลังฉาก
+หลังเต่า
+หลังยาว
+หลั่งไหล
+หลัดๆ
+หลั่น
+หลับ
+หลับตา
+หลับนก
+หลับใน
+หลัว
+หลา
+หล้า
+หลาก
+หลากใจ
+หลากหลาย
+หลาท
+หลาน
+หลาบ
+หลาบจำ
+หลาม
+หลาย
+หลายเติบ
+หลายหลาก
+หลายแหล่
+หลาว
+หลาวเหล็ก
+หลาหล
+หลิก
+หลิ่ง
+หลิท
+หลิน
+หลิม
+หลิว
+หลิ่ว
+หลิ่วตา
+หลี
+หลีก
+หลีโก
+หลีบ
+หลีฮื้อ
+หลืบ
+หลุกหลิก
+หลุด
+หลุดปาก
+หลุดพ้น
+หลุดมือ
+หลุดลอย
+หลุดลุ่ย
+หลุนๆ
+หลุบ
+หลุบลู่
+หลุม
+หลุมโจน
+หลุมพราง
+หลุมพอ
+หลุมพี
+หลุมหลบภัย
+หลุมอากาศ
+หลู่
+หลู่หลี่
+หวง
+ห่วง
+ห้วง
+หวงก้าง
+ห่วงใย
+หวงห้าม
+หวงแหน
+หวด
+หวน
+ห้วน
+ห้วนๆ
+หวนคำนึง
+หวย
+ห้วย
+หวอ
+หวอด
+หว็อยๆ
+หวะ
+หวัง
+หวัด
+หวัดๆ
+หวั่น
+หวันยิหวา
+หวั่นหวาด
+หวั่นไหว
+หวัว
+หวัวร่อ
+หวัวเราะ
+หวา
+หว่า
+หว้า
+หวาก
+หว่าง
+หวาด
+หวาดระแวง
+หวาดเสียว
+หวาดหวั่น
+หวาดไหว
+หวาน
+หว่าน
+หวานคอแร้ง
+หว่านล้อม
+หวาม
+หวาย
+หวายดิน
+หวายตะมอย
+หวำ
+หวิด
+หวิว
+หวี
+หวี่
+หวีด
+หวือ
+หวุดหวิด
+หวุม
+หวูด
+หสน-
+หอ
+ห่อ
+ห้อ
+หอก
+หอกข้างแคร่
+หอกซัด
+หอการค้า
+หอคอย
+หอคำ
+หอง
+ห้อง
+ห้องเครื่อง
+ห้องชุด
+ห้องแถว
+ห้องน้ำ
+ห้องสมุด
+หอจดหมายเหตุ
+ห่อตัว
+หอไตร
+หอน
+ห่อน
+หอบ
+หอบหิ้ว
+หอบหืด
+หอบังคับการ
+หอประชุม
+หอพัก
+หอม
+ห้อม
+หอมกราย
+หอมขาว
+หอมจันทร์
+หอมแดง
+หอมเตียม
+หอมป้อม
+หอมแป้น
+ห้อมเมือง
+หอมยับ
+ห้อมล้อม
+หอมหวน
+หอย
+ห้อย
+หอยโข่ง
+ห้อยท้าย
+หอยปากเป็ด
+หอยแปดเกล็ด
+หอยเม่น
+ห้อยโหน
+หอสมุด
+ห่อหมก
+ห่อเหี่ยว
+ห่อแห่
+ห้อแห้
+หะ
+หะยี
+หะแรก
+หะหาย
+หะห้าย
+หะแห้น
+หัก
+หักกลบลบหนี้
+หักคอ
+หักใจ
+หักด้ามพร้าด้วยเข่า
+หักทองขวาง
+หักบัญชี
+หักมุก
+หักราคา
+หักร้าง
+หักแรง
+หักล้าง
+หักลำ
+หักหน้า
+หักหลัง
+หักหาญ
+หักห้าม
+หักเห
+หักโหม
+หักอก
+หักอกหักใจ
+หังส-
+หัจญ์
+หัจญี
+หัช
+หัฏฐะ
+หัด
+หัดเยอรมัน
+หัต
+หัตถ-
+หัตถ์
+หัตถกรรม
+หัตถการ
+หัตถกิจ
+หัตถบาส
+หัตถพันธ์
+หัตถศิลป์
+หัตถศึกษา
+หัตถาจารย์
+หัตถานึก
+หัตถาภรณ์
+หัตถาโรหะ
+หัตถาลังการ
+หัตถินี
+หัตถี
+หัน
+หั่น
+หั้น
+หันตรา
+หันตา
+หันรีหันขวาง
+หันหน้าเข้าหากัน
+หันหลังให้กัน
+หันเห
+หั่นแหลก
+หันอากาศ
+หับ
+หับเผย
+หัมมียะ
+หัย
+หัว
+หัวกระเด็น
+หัวกระไดไม่แห้ง
+หัวกระสุน
+หัวก๊อก
+หัวกะทิ
+หัวก่ายท้ายเกย
+หัวกุญแจ
+หัวเก่า
+หัวแก้วหัวแหวน
+หัวขโมย
+หัวขวาน
+หัวข้อ
+หัวขั้ว
+หัวขาด
+หัวขี้แต้
+หัวขี้หมา
+หัวเข้า
+หัวแข็ง
+หัวโขน
+หัวคว่ำ
+หัวคะแนน
+หัวค่ำ
+หัวคิด
+หัวใคร่
+หัวงอน
+หัวงาน
+หัวเงิน
+หัวเงื่อน
+หัวโจก
+หัวใจ
+หัวชนกำแพง
+หัวชนฝา
+หัวซุกหัวซุน
+หัวซุน
+หัวด้วน
+หัวดาวหัวเดือน
+หัวดื้อ
+หัวเด็ดตีนขาด
+หัวเดียวกระเทียมลีบ
+หัวต่อ
+หัวตะกั่ว
+หัวตะคาก
+หัวตะโหงก
+หัวเต่า
+หัวเตาไฟ
+หัวถอก
+หัวเถิก
+หัวที
+หัวเทียน
+หัวเทียม
+หัวนกกระจอก
+หัวนม
+หัวนอก
+หัวนอน
+หัวนอนปลายตีน
+หัวน้ำ
+หัวน้ำขึ้น
+หัวน้ำลง
+หัวเนื้อ
+หัวเนื้อทราย
+หัวบัว
+หัวเบี้ย
+หัวโบราณ
+หัวปลวก
+หัวปลี
+หัวปักหัวปำ
+หัวปั่น
+หัวป่า
+หัวปาก
+หัวปี
+หัวพัน
+หัวพุงหัวมัน
+หัวฟืนหัวไฟ
+หัวมังกุท้ายมังกร
+หัวมัน
+หัวเม็ด
+หัวเมือง
+หัวแม่ตีน
+หัวแม่เท้า
+หัวแม่มือ
+หัวแมลงวัน
+หัวไม้
+หัวไม่วางหางไม่เว้น
+หัวรอ
+หัวร่อ
+หัวร้อยรู
+หัวระแหง
+หัวรักหัวใคร่
+หัวรั้น
+หัวราน้ำ
+หัวรุนแรง
+หัวเราะ
+หัวเรี่ยวหัวแรง
+หัวเรื่อง
+หัวเรือใหญ่
+หัวแรง
+หัวแร้ง
+หัวลม
+หัวล้าน
+หัวลิง
+หัวเลี้ยว
+หัวเลี้ยวหัวต่อ
+หัวโล้น
+หัวว่าว
+หัวสำเภา
+หัวสูง
+หัวเสีย
+หัวไส้
+หัวหกก้นขวิด
+หัวหงอก
+หัวหด
+หัวหน้า
+หัวหน่าว
+หัวหมอ
+หัวหมื่น
+หัวหมุน
+หัวหมู
+หัวหลักหัวตอ
+หัวหาด
+หัวหายตะพายขาด
+หัวเห็ด
+หัวแหลม
+หัวแหวน
+หัวใหม่
+หัวไหล่
+หัวอก
+หัวออก
+หัวอ่อน
+หัส
+หัสดิน
+หัสดี
+หัสต
+หัสต์
+หัสตะ
+หา
+ห่า
+ห้า
+หาก
+หากว่า
+หากิน
+ห่ากิน
+หาความ
+หาค่ามิได้
+หาง
+ห่าง
+ห้าง
+หางกระเบน
+หางกระรอก
+หางกระหมวด
+หางกราย
+หางกะลวย
+หางกะลวยไก่
+หางกังหัน
+หางกิ่ว
+หางแกละ
+หางไก่
+หางขมวด
+หางขอด
+หางข้าว
+หางแข็ง
+หางค้อ
+หางเครื่อง
+หางจระเข้
+หางจิ้งเหลน
+หางช้าง
+หางเต่า
+หางแถว
+หางนกกะลิง
+หางนกยูง
+หางนกยูงฝรั่ง
+หางนาค
+หางปลา
+หางเปีย
+หางแพน
+หางแมงป่อง
+หางยาม
+หางยาว
+หางเลข
+หางว่าว
+หางสิงห์
+หางเสียง
+หางเสือ
+หางหงส์
+หางหนู
+ห้างหุ้นส่วน
+ห้างหุ้นส่วนจำกัด
+ห้างหุ้นส่วนสามัญ
+ห่างเห
+ห่างเหิน
+หางไหล
+หางไหลแดง
+หางไหลเผือก
+หาเงิน
+หาเช้ากินค่ำ
+หาญ
+หาด
+หาดก
+หาตก
+หาตัวจับยาก
+ห้าแต้ม
+หาน
+ห่าน
+หาบ
+หาบมิได้
+หาบเร่
+หาบหลวง
+หาม
+ห่าม
+ห้าม
+ห้ามญาติ
+ห้ามทัพ
+ห้ามปราม
+ห้ามเปลี่ยนมือ
+ห้ามพระแก่นจันทน์
+หามรอก
+หามรุ่งหามค่ำ
+ห้ามล้อ
+ห้ามเลือด
+หามแล่น
+ห้ามสมุทร
+หามิได้
+หาไม่
+หาไม่ก็
+หาย
+หายกัน
+หายขาด
+หายเข้ากลีบเมฆ
+หายใจ
+หายใจไม่ทั่วท้อง
+หายตัว
+หายนะ
+หายหกตกหล่น
+หายหน้า
+หายห่วง
+หายหัว
+หาร
+หารร่วมมาก
+หาริ
+หาริน
+หารี
+หารือ
+หาเรื่อง
+ห่าลง
+หาลิท
+หาเลือดกับปู
+หาว
+ห้าว
+หาวนอน
+ห้าวหาญ
+หาเศษหาเลย
+หาส
+หาสก
+หาสยะ
+หาสู่
+หาเสียง
+หาห่วงมาคล้องคอ
+หาเหตุ
+หำ
+ห้ำ
+ห้ำหัก
+ห้ำหั่น
+หิ้ง
+หิงคุ
+หิงสา
+หิงห้อย
+หิ่งห้อย
+หิ่งหาย
+หิด
+หิต
+หิต-
+หิตกร
+หิตประโยชน์
+หิตพจน์
+หิตวจนะ
+หิตานุหิตประโยชน์
+หิน
+หิน-
+หินงอก
+หินชนวน
+หินชั้น
+หินชาติ
+หินดินดาน
+หินดินสอพอง
+หินตะกอน
+หินตับเป็ด
+หินทราย
+หินน้ำมัน
+หินปูน
+หินแปร
+หินฝนทอง
+หินย้อย
+หินยาน
+หินแลง
+หินสบู่
+หินโสโครก
+หินหนืด
+หินอ่อน
+หินอัคนี
+หิม-
+หิมพาน
+หิมพานต์
+หิมวัต
+หิมวันต์
+หิมวา
+หิมวาต
+หิมวาน
+หิมวาส
+หิมเวศ
+หิมะ
+หิมาลัย
+หิรัญ
+หิรัญ-
+หิรัญญิการ์
+หิรัญบัฏ
+หิรัณย-
+หิรัณย์
+หิรัณยการ
+หิรัณยเกศ
+หิรัณยรัศมี
+หิริ
+หิริโอตตัปปะ
+หิว
+หิ้ว
+หิ้วท้อง
+หิ้วปีก
+หี
+หีด
+หีตา
+หีเต่า
+หีน-
+หีนยาน
+หีบ
+หีบชัก
+หีบเชิงชาย
+หีบฝ้าย
+หีบพระมาลัย
+หีบเพลง
+หีบเพลงชัก
+หีบเพลงปาก
+หีบสไบ
+หีบเสียง
+หีบห่อ
+หึๆ
+หึง
+หึ่ง
+หึ่งๆ
+หึงส-
+หึงสา
+หืด
+หืน
+หื่น
+หื่นหรรษ์
+หือ
+หื้อ
+หือไม่ขึ้น
+หือรือโหด
+หุง
+หุงข้าวประชดหมา
+หุต-
+หุตโกวิท
+หุตาจารย์
+หุน
+หุ่น
+หุ้น
+หุ้นกู้
+หุ่นนิ่ง
+หุ้นบุริมสิทธิ
+หุ่นพยนต์
+หุ้นลม
+หุ่นไล่กา
+หุ้นส่วน
+หุนหัน
+หุนหันพลันแล่น
+หุบ
+หุบเขา
+หุบปาก
+หุบผา
+หุบเหว
+หุ้ม
+หุ้มกลอง
+หุ้มแผลง
+หุ้มแพร
+หุ้ยหุย
+หุยฮา
+หุรัม
+หุหนิงหงัน
+หู
+หู่
+หูก
+หูกระต่าย
+หูกวาง
+หูแจว
+หูฉลาม
+หูฉี่
+หูชอง
+หูช้าง
+หูด
+หูดับตับไหม้
+หูตาสว่าง
+หูติ
+หูตึง
+หูตูบ
+หูทวนลม
+หูเบา
+หูปลาช่อน
+หูป่าตาเถื่อน
+หูผีจมูกมด
+หูผึ่ง
+หูรูด
+หูไว
+หูไวตาไว
+หูเสือ
+หูหนาตาโต
+หูหนาตาเล่อ
+หูหนู
+หู่หี่
+หูไห
+เห
+เห่
+เหง
+เหง่ง
+เหงา
+เหง้า
+เหงาหงอย
+เหงื่อ
+เหงือก
+เหงือกปลาหมอ
+เหงื่อกาฬ
+เห็จ
+เห็ด
+เห็ดโคน
+เห็ดหลุบ
+เหติ
+เหตุ
+เหตุการณ์
+เหตุผล
+เหตุสุดวิสัย
+เห็น
+เห็นกงจักรเป็นดอกบัว
+เห็นแก่
+เห็นแก่หน้า
+เห็นขี้ดีกว่าไส้
+เห็นเขาขึ้นคานหาม เอามือประสานก้น
+เหน่ง
+เหนงนายพราน
+เห็นจะ
+เห็นใจ
+เห็นช้างขี้ ขี้ตามช้าง
+เหน็ด
+เหน็ดเหนื่อย
+เห็นดำเห็นแดง
+เห็นดี
+เหน็บ
+เหน็บชา
+เหน็บแนม
+เห็นหน้าเห็นหลัง
+เหน่อ
+เห็นอ้ม
+เหนอะ
+เหนอะหนะ
+เหน้า
+เหนาะๆ
+เหนียง
+เหนี่ยง
+เหนียงนกกระทุง
+เหนี่ยน
+เหนียม
+เหนียว
+เหนี่ยว
+เหนี่ยวนำแม่เหล็กไฟฟ้า
+เหนียวแน่น
+เหนี่ยวรั้ง
+เหนียวหนืด
+เหนียวหมา
+เหนือ
+เหนื่อย
+เหนื่อยหน่าย
+เห็บ
+เห็บน้ำ
+เหม
+เหม-
+เหม่
+เหม่ง
+เหม็น
+เหม็นเขียว
+เหม็นเบื่อ
+เหม็นเปรี้ยว
+เหมวดี
+เหม่อ
+เหมันต-
+เหมันต์
+เหมา
+เหมายัน
+เหมาะ
+เหมาะเจาะ
+เหมาะสม
+เหมาะเหม็ง
+เหมียว
+เหมี่ยว
+เหมือง
+เหมืองฝาย
+เหมือด
+เหมือดคน
+เหมือดโลด
+เหมือน
+เหมือนกับ
+เหมือนว่า
+เหมือนหนึ่งว่า
+เหมื่อย
+เหมื่อยๆ
+เหย
+เหยเก
+เหยง
+เหย่อย
+เหยา
+เหย่า
+เหย่าๆ
+เหย้า
+เหยาะ
+เหยาะๆ
+เหยาะแหยะ
+เหยิง
+เหยิบๆ
+เหยียด
+เหยียดผิว
+เหยียดหยาม
+เหยียบ
+เหยียบขี้ไก่ไม่ฝ่อ
+เหยียบจมูก
+เหยียบย่ำ
+เหยียบเรือสองแคม
+เหยี่ยว
+เหยี่ยวข่าว
+เหยื่อ
+เหยือก
+เหรัญญิก
+เหรา
+เหราเล่นน้ำ
+เหราะๆ
+เหรียญ
+เหรียญกระษาปณ์
+เห่เรือ
+เหล่
+เหล็ก
+เหล็กกล้า
+เหล็กกล้าไม่เป็นสนิม
+เหล็กใน
+เหล็กพืด
+เหล็กวิลาด
+เหล็กส่ง
+เหล็กเส้น
+เหล็กหมาด
+เหล็กหล่อ
+เหล็กเหนียว
+เหล็กไหล
+เหลน
+เหลว
+เหลวแหลก
+เหลวไหล
+เหลอ
+เหลา
+เหล่า
+เหล้า
+เหล่ากอ
+เหลาชะโอน
+เหลาหลก
+เหล้าแห้ง
+เหลาะแหละ
+เหลิง
+เหลิงเจิ้ง
+เหลียน
+เหลี่ยม
+เหลี่ยมคู
+เหลี่ยมลูกบาศก์
+เหลียว
+เหลียวแล
+เหลียวหลัง
+เหลือ
+เหลือก
+เหลือกำลัง
+เหลือเกิน
+เหลือขอ
+เหลือเข็ญ
+เหลือเข็น
+เหลือง
+เหลืองหางฟ้า
+เหลืองหิน
+เหลือใจ
+เหลือเชื่อ
+เหลือใช้
+เหลือทน
+เหลือบ
+เหลือบ่ากว่าแรง
+เหลือเฟือ
+เหลือม
+เหลื่อม
+เหลื่อมล้ำต่ำสูง
+เหลือมือ
+เหลือรับ
+เหลือร้าย
+เหลือล้น
+เหลือวิสัย
+เหลือสติกำลัง
+เหลือแสน
+เหลือหลอ
+เหลือหลาย
+เหลือแหล่
+เหลืออด
+เหลืออดเหลือทน
+เหว
+เหว่
+เหวง
+เหวทะเล
+เหวย
+เหวอะ
+เหวอะหวะ
+เหวี่ยง
+เหวี่ยงแห
+เห่อ
+เห่อเหิม
+เหอะ
+เหอะน่า
+เหะ
+เหะหะ
+เหา
+เห่า
+เหาฉลาม
+เหาทะเล
+เหาน้ำ
+เหาไม้
+เหาะ
+เหิน
+เหินห่าง
+เหินเห่อ
+เหิม
+เหิมหาญ
+เหิมห้าว
+เหิมฮึก
+เหี้ย
+เหียง
+เหียงกราด
+เหียน
+เหี้ยน
+เหียนราก
+เหี้ยม
+เหี้ยมเกรียม
+เหี้ยมหาญ
+เหี้ยมโหด
+เหี่ยว
+เหี่ยวแห้ง
+เหื่อ
+เหือด
+เหือดหาย
+เหือดแห้ง
+แห
+แห่
+แห้
+แหก
+แหกคอก
+แหกปาก
+แหง
+แหง่
+แห่ง
+แห้ง
+แหงแก๋
+แหง่ง
+แหงน
+แหงนเต่อ
+แหงนเถ่อ
+แห้งผาก
+แห้งแล้ง
+แห้งเหี่ยว
+แห้งเหือด
+แหน
+แห้น
+แหนง
+แหนงใจ
+แหนงหน่าย
+แหนบ
+แหนม
+แหบ
+แหม
+แหม่
+แหม่ม
+แหมะ
+แหย
+แหย่
+แหยง
+แหย่ง
+แหยม
+แหย็ม
+แหยะ
+แหยะๆ
+แหล
+แหล่
+แหลก
+แหลกลาญ
+แหลกเหลว
+แหล่ง
+แหล่งเสื่อมโทรม
+แหล่งหล้า
+แหลน
+แหล่นอก
+แหล่ใน
+แหลม
+แหลมหลัก
+แหละ
+แหว
+แห้ว
+แหวก
+แหวกแนว
+แหว่ง
+แหวด
+แหวน
+แหวนหัว
+แห้วหมู
+แหวะ
+แห่ห้อม
+แห่แหน
+แหะ
+แหะๆ
+โห่
+โหก
+โหง
+โหงพราย
+โหด
+โหดร้าย
+โหดเหี้ยม
+โหน
+โหนก
+โหนกแก้ม
+โหน่ง
+โหม
+โหม-
+โหม่
+โหมกรรม
+โหมกูณฑ์
+โหม่ง
+โหมด
+โหมดเทศ
+โหมโรง
+โหมหัก
+โหมฮึก
+โหย
+โหยกเหยก
+โหยง
+โหย่ง
+โหย่งๆ
+โหยหวน
+โหยไห้
+โหร
+โหรง
+โหรงเหรง
+โหรดาจารย์
+โหระพา
+โหรา
+โหรากระบือ
+โหราเขาเนื้อ
+โหราจารย์
+โหราเดือยไก่
+โหราตีนหมา
+โหราเท้าสุนัข
+โหราบอน
+โหราศาสตร์
+โหล
+โหล่
+โหลงโจ้ง
+โหว
+โหว่
+โหว้
+โหวกเหวก
+โหวง
+โหวงเหวง
+โหวด
+โหวต
+ให้
+ให้การ
+ใหญ่
+ให้โดยเสน่หา
+ให้ท่า
+ให้ท้าย
+ใหม่
+ใหม่ถอดด้าม
+ใหม่เอี่ยม
+ให้ร้าย
+ให้ร้ายป้ายสี
+ให้สัตยาบัน
+ให้หา
+ให้อภัย
+ให้ออก
+ไห
+ไห่
+ไห้
+ไหซอง
+ไหน
+ไหปลาร้า
+ไหม
+ไหม้
+ไหมทอง
+ไหมสับปะรด
+ไหรณย์
+ไหล
+ไหล่
+ไหล่เขา
+ไหล่ถนน
+ไหล่ทวีป
+ไหล่ทาง
+ไหลน้ำ
+ไหล่รวบ
+ไหว
+ไหวๆ
+ไหว้
+ไหว้ครู
+ไหว้เจ้า
+ไหวตัว
+ไหวติง
+ไหวทัน
+ไหว้ผี
+ไหวพริบ
+ไหว้วาน
+ไหหลำ
+ฬ
+อ
+อก
+อกไก่
+อกคราก
+อกตั้ง
+อกตัญญุตา
+อกตัญญู
+อกเต่า
+อกแตก
+อกทะเล
+อกนิษฐ์
+อกเมือง
+อกรณีย์
+อกรรมกริยา
+อกรวบ
+อกร่อง
+อกโรย
+อกเลา
+อกหัก
+อกัปปิย-
+อกัปปิยวัตถุ
+อกัปปิยโวหาร
+อกัปปิยะ
+อกุศล
+อกุศล-
+อกุศลกรรม
+อกุศลกรรมบถ
+อกุศลเจตนา
+อกุศลมูล
+อคติ
+อคเนสัน
+อคาธ
+อคาร-
+อฆ
+อโฆษะ
+อง
+องก์
+องค-
+องค์
+องค์กฐิน
+องค์กร
+องค์การ
+องค์การสหประชาชาติ
+องคชาต
+องค์ประกอบ
+องค์ประชุม
+องคมนตรี
+องคมรรษ
+องครักษ์
+องควิการ
+องควิเกษป
+องควิทยา
+องคาพยพ
+องคุล
+องคุลี
+องศ์
+องศา
+องอาจ
+องุ่น
+อจร
+อจล-
+อจลา
+อจิตติ
+อจินตา
+อจินไตย
+อจิร-
+อจิระ
+อเจลก
+อเจละ
+อช
+อชา
+อชิน
+อชินี
+อชิร
+อฏวี
+อณิ
+อณุ
+อณู
+อโณทัย
+อด
+อดกลั้น
+อดใจ
+อดตาหลับขับตานอน
+อดทน
+อดนม
+อดเปรี้ยวไว้กินหวาน
+อดสู
+อดแห้งอดแล้ง
+อดอยาก
+อดออม
+อดิ
+อดิถี
+อดิเทพ
+อดิเรก
+อดิเรก-
+อดิเรกลาภ
+อดิศร
+อดิศวร
+อดิศัย
+อดีต
+อดีต-
+อดีตกาล
+อดีตชาติ
+อดีตภพ
+อดีตสมัย
+อดุล
+อดุลย-
+อดุลย์
+อติ
+อติชาต
+อติชาต-
+อติชาตบุตร
+อติมานะ
+อติราช
+อติเรก
+อติเรก-
+อติเรกจีวร
+อติเรกลาภ
+อติสาร
+อถรรพเวท
+อทระ
+อทินนาทาน
+อทินนาทายี
+อธรรม
+อธิ
+อธิก-
+อธิกมาส
+อธิกรณ์
+อธิกวาร
+อธิกสุรทิน
+อธิการ
+อธิการบดี
+อธิคม
+อธิฏฐาน
+อธิบดี
+อธิบาย
+อธิป
+อธิป-
+อธิปไตย
+อธิมาตร
+อธิมุตติ
+อธิโมกข์
+อธิราช
+อธิวาส
+อธิวาสนะ
+อธิศีล
+อธิษฐาน
+อธึก
+อน-
+อ้น
+อนงค-
+อนงค์
+อนงคณะ
+อนงคเลข
+อนงคเลขา
+อนธ-
+อนธการ
+อนนต์
+อนยะ
+อนรรฆ
+อนรรถ
+อนล
+อนวัช
+อนวัช-
+อ้นอ้อ
+อนัญ
+อนัญ-
+อนัญคติ
+อนัญสาธารณ์
+อนัตตา
+อนัตถ-
+อนันต-
+อนันต์
+อนันตร-
+อนันตริยกรรม
+อนัม
+อนากูล
+อนาคต
+อนาคต-
+อนาคตกาล
+อนาคามิผล
+อนาคามิมรรค
+อนาคามี
+อนาจาร
+อนาถ
+อนาถา
+อนาทร
+อนาธิปไตย
+อนามัย
+อนารย-
+อนารยชน
+อนารยธรรม
+อนารยะ
+อนาลัย
+อนำ
+อนิจ
+อนิจ-
+อนิจกรรม
+อนิจจัง
+อนิจจา
+อนิฏฐารมณ์
+อนิยต
+อนิยม
+อนิยม-
+อนิล
+อนิล-
+อนิลบถ
+อนิวรรต
+อนิวรรตน์
+อนิษฏ์
+อนีก-
+อนีกทรรศนะ
+อนีกทัศนะ
+อนีกะ
+อนีกัฐ
+อนีจ
+อนึก
+อนึ่ง
+อนุ
+อนุกร
+อนุกรม
+อนุกรรมการ
+อนุกระเบียด
+อนุกาชาด
+อนุการ
+อนุกูล
+อนุคามิก
+อนุคามี
+อนุเคราะห์
+อนุจร
+อนุช
+อนุชน
+อนุชา
+อนุชาต
+อนุชาต-
+อนุชาตบุตร
+อนุชิต
+อนุญาต
+อนุญาโตตุลาการ
+อนุตร-
+อนุเถระ
+อนุทิน
+อนุบท
+อนุบาล
+อนุปริญญา
+อนุปสัมบัน
+อนุปัสนา
+อนุพงศ์
+อนุพัทธ์
+อนุพันธ์
+อนุโพธ
+อนุภรรยา
+อนุภริยา
+อนุภาค
+อนุภาษ
+อนุมัติ
+อนุมาตรา
+อนุมาน
+อนุมูล
+อนุมูลกรด
+อนุโมทนา
+อนุโมทนาบัตร
+อนุโยค
+อนุรักษ-
+อนุรักษ์
+อนุรักษนิยม
+อนุราช
+อนุราธ
+อนุราธะ
+อนุราธา
+อนุรูป
+อนุโลม
+อนุวงศ์
+อนุวัต
+อนุวาต
+อนุศาสก
+อนุศาสน์
+อนุศาสนาจารย์
+อนุศิษฏ์
+อนุสติ
+อนุสนธิ
+อนุสภากาชาด
+อนุสร
+อนุสรณ์
+อนุสัญญา
+อนุสัย
+อนุสาวรีย์
+อนุสาสนี
+อเนก
+อเนก-
+อเนกคุณ
+อเนกประสงค์
+อเนกวิธ
+อเนกอนันต์
+อเนกอนันตัง
+อเนจอนาถ
+อโนชา
+อโนดาต
+อบ
+อบเชย
+อบรม
+อบอวล
+อบอ้าว
+อบอุ่น
+อบาย
+อบาย-
+อบายภูมิ
+อบายมุข
+อป
+อปการ
+อปจายน-
+อปจายนธรรม
+อปจายนมัย
+อปภาคย์
+อปมงคล
+อปมาน
+อปยศ
+อปร-
+อปรภาค
+อประมาณ
+อประมาท
+อประไมย
+อปรัณณชาติ
+อปรา
+อปราชัย
+อปราชิต
+อปราธ
+อปริมาณ
+อปลักษณ์
+อปโลกน์
+อปวาท
+อปหาร
+อปาจี
+อปาจีน
+อปาน
+อเปหิ
+อพพะ
+อพยพ
+อภว
+อภัพ
+อภัพ-
+อภัพบุคคล
+อภัพผล
+อภัย
+อภัย-
+อภัยทาน
+อภัยโทษ
+อภิ
+อภิฆาต
+อภิจฉา
+อภิชฌา
+อภิชน
+อภิชน-
+อภิชนาธิปไตย
+อภิชัย
+อภิชาต
+อภิชาต-
+อภิชาตบุตร
+อภิชิต
+อภิญญา
+อภิญญาณ
+อภิณห-
+อภิธรรม
+อภิธาน
+อภิไธย
+อภินันท์
+อภินันทนาการ
+อภินัย
+อภินิหาร
+อภิเนษกรมณ์
+อภิบาล
+อภิปรัชญา
+อภิปราย
+อภิมหาอำนาจ
+อภิมานะ
+อภิมุข
+อภิรดี
+อภิรติ
+อภิรมย์
+อภิรักษ์
+อภิรัฐมนตรี
+อภิราม
+อภิรุต
+อภิรุม
+อภิรูป
+อภิลักขิต
+อภิลักขิต-
+อภิลักขิตกาล
+อภิลักขิตสมัย
+อภิเลปน์
+อภิวันท์
+อภิวาท
+อภิวาทน์
+อภิเษก
+อภิเษกสมรส
+อภิสมโพธิ
+อภิสมัย
+อภิสมาจาร
+อภิสัมโพธิ
+อภิสัมโพธิญาณ
+อภิสิต
+อภิสิทธิ์
+อภูต
+อม
+อ้ม
+อมความ
+อมต-
+อมตบท
+อมตะ
+อมนุษย์
+อมปาก
+อมพะนำ
+อมเพลิง
+อมภูมิ
+อมมือ
+อมยิ้ม
+อมร
+อมร-
+อมรบดี
+อมรรัตน์
+อมรราช
+อมรสตรี
+อมรา
+อมราวดี
+อมรินทร์
+อมเรนทร์
+อมเรศ
+อมเรศวร
+อมโรค
+อมฤต
+อมฤต-
+อมฤตบท
+อมฤตยู
+อมฤตรส
+อมเลือดอมฝาด
+อมเลือดอมหนอง
+อมหนอง
+อมัจจะ
+อมัตร
+อมาตย์
+อมาวสี
+อมาวสุ
+อมาวาสี
+อมิตร
+อเมริกัน
+อย
+อยน
+อยัส
+อย่า
+อยาก
+อย่าง
+อย่างไร
+อย่างไรก็ดี
+อย่างไรก็ตาม
+อยุทธ์
+อยู่
+อยู่กรรม
+อยู่กิน
+อยู่คง
+อยู่งาน
+อยู่จริง
+อยู่ดีกินดี
+อยู่ตัว
+อยู่ท้อง
+อยู่ไฟ
+อยู่มือ
+อยู่ไม่สุข
+อยู่ยงคงกระพัน
+อยู่ยาม
+อยู่โยง
+อยู่เวร
+อยู่หมัด
+อร
+อรช
+อรชร
+อรชุน
+อรณ
+อรดี
+อรติ
+อรทัย
+อรไท
+อรธาน
+อรนุช
+อรพินท์
+อรพิม
+อรรค
+อรรฆ
+อรรฆย์
+อรรจน์
+อรรณพ
+อรรถ
+อรรถ-
+อรรถกถา
+อรรถกถาจารย์
+อรรถกร
+อรรถกวี
+อรรถคดี
+อรรถบท
+อรรถปฏิสัมภิทา
+อรรถประโยชน์
+อรรถรส
+อรรถาธิบาย
+อรรธ
+อรรธ-
+อรรธกรรณ
+อรรธคราส
+อรรธจักร
+อรรธจันทร์
+อรรธนิศา
+อรรธบท
+อรรธภาค
+อรรธสระ
+อรสุม
+อรสุมพล
+อรหะ
+อรหัง
+อรหัต
+อรหัต-
+อรหัตผล
+อรหัตมรรค
+อรหัตวิโมกข์
+อรหัน
+อรหันต-
+อรหันต์
+อรหันตฆาต
+อร่อย
+อรัญ
+อรัญ-
+อรัญญิก
+อรัญวาส
+อรัญวาสี
+อรัณย์
+อราดี
+อราติ
+อร่าม
+อริ
+อริน
+อรินทร์
+อริย-
+อริยกะ
+อริยทรัพย์
+อริยบุคคล
+อริยผล
+อริยมรรค
+อริยสัจ
+อริยะ
+อรุ
+อรุณ
+อรุโณทัย
+อรุ่ม
+อรูป
+อลงกต
+อลงกรณ์
+อลงการ
+อลวน
+อลเวง
+อลหม่าน
+อล่องฉ่อง
+อลักเอลื่อ
+อลังการ
+อลัชชี
+อล่างฉ่าง
+อลิงค์
+อลึงค์
+อลึ่งฉึ่ง
+อโลหะ
+อวก
+อ้วก
+อวกาศ
+อวเคราะห์
+อวจร
+อวชัย
+อวชาต
+อวชาต-
+อวชาตบุตร
+อวด
+อวดดี
+อวดรู้
+อวดอ้าง
+อวตาร
+อวน
+อ้วน
+อ้วนท้วน
+อวนลอย
+อวนลาก
+อวบ
+อวบน้ำ
+อวมงคล
+อวมอำ
+อวย
+อวยวะ
+อวรุทธ์
+อวรุทธก
+อวล
+อวสาน
+อวหาร
+อวัยวะ
+อวัสดา
+อวาจี
+อวิจี
+อวิชชา
+อวิญญาณก-
+อวิญญาณกทรัพย์
+อวิญญู
+อวิรุทธ์
+อวิโรธน์
+อวีจิ
+อเวจี
+อโศก
+อสงไขย
+อสนี
+อสนีบาต
+อสภ
+อสมการ
+อสมมาตร
+อสรพิษ
+อสังกมทรัพย์
+อสังหาริม-
+อสังหาริมทรัพย์
+อสังหาริมะ
+อสัญ-
+อสัญกรรม
+อสัญญี
+อสัญญีภาพ
+อสัญญีภาวะ
+อสัญญีสัตว์
+อสัญแดหวา
+อสัตถพฤกษ์
+อสัตย์
+อสัมภิน-
+อสัมภินพงศ์
+อสัมภินวงศ์
+อสาธร
+อสาธุ
+อสิ
+อสิจรรยาการ
+อสิต
+อสิธารา
+อสิเลสะ
+อสีตยานุพยัญชนะ
+อสีติ
+อสีติมหาสาวก
+อสุ
+อสุจิ
+อสุนีบาต
+อสุภ
+อสุภ-
+อสุภกรรมฐาน
+อสุภสัญญา
+อสุร-
+อสุรกาย
+อสุรี
+อสุเรศ
+อสูร
+อเส
+อเสกข-
+อเสกขบุคคล
+อเสกขะ
+อเสข-
+อเสขะ
+อห
+อหังการ
+อหิ
+อหิงสา
+อหิวาตกโรค
+อหึงสา
+อเหตุกทิฐิ
+อโหสิกรรม
+ออ
+อ้อ
+อ๋อ
+ออก
+ออกกำลัง
+ออกขุนนาง
+ออกแขก
+ออกโขน
+ออกไข้หัว
+ออกงาน
+ออกงิ้ว
+ออกชื่อ
+ออกซิเจน
+ออกซิเดชัน
+ออกไซด์
+ออกญา
+ออกดอก
+ออกดอกออกผล
+ออกตัว
+ออกท่า
+ออกท่าออกทาง
+ออกทุกข์
+ออกทุน
+ออกนอกหน้า
+ออกบวช
+ออกปาก
+ออกผื่น
+ออกฝี
+ออกฝีดาษ
+ออกพรรษา
+ออกไฟ
+ออกภาษา
+ออกมหาสมาคม
+ออกยักษ์ออกโขน
+ออกรส
+ออกรับ
+ออกร้าน
+ออกเรือน
+ออกแรง
+ออกโรง
+ออกฤทธิ์
+ออกลาย
+ออกลิงออกค่าง
+ออกลูก
+ออกวัง
+ออกเสียง
+ออกหน้าออกตา
+ออกหัด
+ออกหาก
+ออกอากาศ
+อ่อง
+อ๋อง
+อ้องแอ้ง
+ออเจ้า
+ออเซาะ
+ออด
+ออดๆ
+ออดอ้อน
+ออดแอด
+ออดๆ แอดๆ
+อ๊อดแอ๊ด
+อ๊อดๆ แอ๊ดๆ
+อ้อดิบ
+อ่อน
+อ้อน
+อ่อนข้อ
+อ่อนความ
+อ่อนจิตอ่อนใจ
+อ่อนใจ
+อ่อนช้อย
+ออนซ์
+ออนซอน
+อ่อนซอน
+อ่อนไท้
+อ่อนน้อม
+อ่อนปวกเปียก
+อ่อนเปลี้ย
+อ่อนเปียก
+อ่อนเพลีย
+อ่อนโยน
+อ้อนวอน
+อ่อนหวาน
+อ่อนหัด
+อ่อนหู
+อ่อนไหว
+อ่อนอกอ่อนใจ
+อ้อนออด
+อ่อนแอ
+อ้อนแอ้น
+ออฟฟิศ
+ออม
+อ่อม
+อ้อม
+ออมครอม
+อ้อมค้อม
+ออมชอม
+ออมซอม
+ออมสิน
+อ้อมอก
+ออมอด
+อ้อมแอ้ม
+อ่อย
+อ้อย
+อ๋อย
+อ้อยเข้าปากช้าง
+อ้อยช้าง
+อ้อยแดง
+อ้อยเลา
+อ้อยส้อย
+อ้อยอิ่ง
+ออสเมียม
+อ้อแอ้
+อ๊ะ
+อะคร้าว
+อะเคื้อ
+อะจีน
+อะแจ
+อะเซทิลีน
+อะดรีนาลีน
+อะดัก
+อะดักอะเดี้ย
+อะดักอะเดื่อ
+อะดักอะแด้
+อะดุง
+อะตอม
+อะนะ
+อะนั้น
+อะนี้
+อะมีบา
+อะเมริเซียม
+อะร้าอร่าม
+อะไร
+อะลุ่มอล่วย
+อะลุ้มอล่วย
+อะลูมิเนียม
+อะหม
+อะไหล่
+อะอื้อ
+อะเอื้อย
+อัก
+อั้ก
+อั้กๆ
+อั๊ก
+อั๊กๆ
+อักกะ
+อักโกธะ
+อักข
+อักขร-
+อักขรวิธี
+อักขรวิบัติ
+อักขรสมัย
+อักขระ
+อักขรานุกรม
+อักขรานุกรมภูมิศาสตร์
+อักโข
+อักโขภิณี
+อักโขเภณี
+อักษร
+อักษร-
+อักษรกลาง
+อักษรต่ำ
+อักษรบฏ
+อักษรลักษณ์
+อักษรเลข
+อักษรศาสตร์
+อักษรสมัย
+อักษรสาสน์
+อักษรสูง
+อักษะ
+อักเษาหิณี
+อักเสบ
+อักอ่วน
+อัคคะ
+อัคคิ
+อัคคี
+อัคคีภัย
+อัคนิ
+อัคนิคณะ
+อัคนิพ่าห์
+อัคนิรุทร
+อัคนิวาหะ
+อัคนิโหตร
+อัคนี
+อัคร-
+อัครชายา
+อัครมหาเสนาบดี
+อัครมเหสี
+อัครราชทูต
+อัครสมณทูต
+อัง
+อังก์
+อังกนะ
+อังกฤษ
+อังกวด
+อังกะลุง
+อังกา
+อังกาบ
+อังกาบฝรั่ง
+อังกาบหนู
+อังกุร
+อังกุศ
+อังกูร
+อังคณะ
+อังคณา
+อังคาร
+อังคาส
+อังคีรส
+อังคุฐ
+อังฆาต
+อั้งยี่
+อั้งโล่
+อังศุ
+อังศุก
+อังศุธร
+อังศุมาลี
+อังส-
+อังสกุฏ
+อังสตรอม
+อังสนา
+อังสภาระ
+อังสะ
+อังสา
+อัจกลับ
+อัจจันต์
+อัจจัย
+อัจจิ
+อัจจิมา
+อัจจุต
+อัจเจกะ
+อัจฉรา
+อัจฉริย-
+อัจฉริยบุคคล
+อัจฉริยภาพ
+อัจฉริยลักษณ์
+อัจฉริยลักษณะ
+อัจฉริยะ
+อัจนา
+อัชฌัตติก-
+อัชฌา
+อัชฌาจาร
+อัชฌาศัย
+อัชฌาสัย
+อัญ-
+อัญขยม
+อัญชนะ
+อัญชลี
+อัญชัน
+อัญชันป่า
+อัญเชิญ
+อัญญะ
+อัญดิตถีย์
+อัญเดียรถีย์
+อัญประกาศ
+อัญประกาศเดี่ยว
+อัญมณี
+อัญมัญ-
+อัญรูป
+อัฏ
+อัฏฐ-
+อัฏฐะ
+อัฏฐังค์
+อัฏฐังคิกมรรค
+อัฏฐังสะ
+อัฏนา
+อัฐ
+อัฐเคราะห์
+อัฐทิศ
+อัฐบริขาร
+อัฐบาน
+อัฐม-
+อัฐมะ
+อัฐยายซื้อขนมยาย
+อัฐศก
+อัฐฬส
+อัฐิ
+อัฐิมิญชะ
+อัฐิสัณฐาน
+อัฒ-
+อัฒจันทร์
+อัฒภาค
+อัฒมณฑล
+อัฒมาส
+อัฒรัตติ
+อัณฑ-
+อัณฑโกส
+อัณฑชะ
+อัณฑะ
+อัณฑาการ
+อัณณพ
+อัด
+อัดก๊อบปี้
+อัดแจ
+อัดฉีด
+อัดแบตเตอรี่
+อัดแผ่นเสียง
+อัดรูป
+อัดลม
+อัดสำเนา
+อัดเสียง
+อัดอั้น
+อัดอั้นตันใจ
+อัดแอ
+อัต-
+อัตคัด
+อัตชีวประวัติ
+อัตตะ
+อัตตา
+อัตตาธิปไตย
+อัตถ์
+อัตถะ
+อัตนัย
+อัตโนมัติ
+อัตภาพ
+อัตรชะ
+อัตรา
+อัตราเร็ว
+อัตราส่วน
+อัตลัด
+อัตวินิบาตกรรม
+อัตหิต-
+อัตเหตุ
+อัททา
+อัทธ-
+อัทธ์
+อัทธคต
+อัทธคู
+อัทธา
+อัทธาน
+อัทธายุ
+อัธยาตมวิทยา
+อัธยาย
+อัธยาศัย
+อัน
+อั้น
+อั๋น
+อันดก
+อันดร
+อันดับ
+อันด๊าก
+อันโด๊ก
+อันต-
+อันตก
+อันตกาล
+อันตกิริยา
+อันตคุณ
+อันตคู
+อันตชาติ
+อันตร
+อันตร-
+อันตรการณ์
+อันตรธาน
+อันตรภาค
+อันตรวาสก
+อันตรา
+อันตราย
+อันตรายิกธรรม
+อันตลิกขะ
+อันตะ
+อั้นตั้น
+อันติก
+อันติม-
+อันติมสัจ
+อันติมะ
+อั้นตู้
+อันเต
+อันเตบุระ
+อันเตบุริก
+อันเตบุริกา
+อันเตปุระ
+อันเตปุริก
+อันเตปุริกา
+อันเตวาสิก
+อันโต
+อันโตชน
+อันโตนาที
+อันแถ้ง
+อันทุ
+อันโทล
+อันธ-
+อันธการ
+อันธพาล
+อันธิกา
+อันนะ
+อันนา
+อันเป็น
+อันเป็นไป
+อันโยนย-
+อันโยนยะ
+อันวย-
+อันวัย
+อันว่า
+อันเวส
+อั้นอ้น
+อับ
+อับจน
+อับเฉา
+อับปาง
+อับอาย
+อัป-
+อัปกะ
+อัปการ
+อัปฏิฆะ
+อัปฏิภาค
+อัปปะ
+อัปเปหิ
+อัปภาคย์
+อัปมงคล
+อัปยศ
+อัประมาณ
+อัประมาท
+อัประไมย
+อัปราชัย
+อัปรีย์
+อัปลักษณ์
+อัปสร
+อัพพุท
+อัพโพหาริก
+อัพภันดร
+อัพภันตร-
+อัพภาน
+อัพภาส
+อัม
+อัมพ-
+อัมพร
+อัมพฤกษ์
+อัมพวัน
+อัมพวา
+อัมพา
+อัมพาต
+อัมพิล
+อัมพุ
+อัมพุช
+อัมพุชินี
+อัมพุท
+อัยกะ
+อัยกา
+อัยการ
+อัยกี
+อัยยะ
+อัยยิกา
+อัลกุรอาน
+อัลตราไวโอเลต
+อั่ว
+อัศจรรย์
+อัศเจรีย์
+อัศว-
+อัศวโกวิท
+อัศวมุข
+อัศวมุขี
+อัศวเมธ
+อัศวยุช
+อัศวานึก
+อัศวิน
+อัศวินี
+อัษฎ-
+อัษฎกฉันท์
+อัษฎมงคล
+อัษฎมะ
+อัษฎางคิกมรรค
+อัษฎายุธ
+อัษฎาวุธ
+อัษฏมงคล
+อัส-
+อัสดง
+อัสดงคต
+อัสดม
+อัสดร
+อัสนี
+อัสมิมานะ
+อัสมุขี
+อัสสนี
+อัสสะ
+อัสสัตถพฤกษ์
+อัสสานิก
+อัสสานีก
+อัสสานึก
+อัสสาสะ
+อัสสุ
+อัสสุชล
+อัสสุธารา
+อา
+อ่า
+อ้า
+อากร
+อากรแสตมป์
+อากังขา
+อากัป
+อากัปกิริยา
+อากัมปนะ
+อากัมปะ
+อาการ
+อาการ-
+อาการนาม
+อากาศ
+อากาศ-
+อากาศธาตุ
+อากาศยาน
+อากูล
+อาเกียรณ์
+อาขยาต
+อาขยาน
+อาคเนย์
+อาคม
+อาครหายณี
+อาคันตุก-
+อาคันตุกภัต
+อาคันตุกวัตร
+อาคันตุกะ
+อาคาร
+อาคารชุด
+อาฆาต
+อาฆาตนะ
+อาฆาตมาดร้าย
+อ่าง
+อ้าง
+อ่างเก็บน้ำ
+อางขนาง
+อ้างว้าง
+อ้างอิง
+อาจ
+อาจม
+อาจมน
+อาจริย-
+อาจริยวัตร
+อาจริยวาท
+อาจหาญ
+อาจอง
+อาจเอื้อม
+อาจาด
+อาจาร
+อาจาร-
+อาจารย์
+อาจารี
+อาจิณ
+อาจิณ-
+อาจิณสมาจาร
+อาเจียน
+อาชญัปติ
+อาชญัปติ์
+อาชญา
+อาชญากร
+อาชญากรรม
+อาชญากรสงคราม
+อาชญาบท
+อาชญาบัตร
+อาชญาศึก
+อาชญาสิทธิ์
+อาชวะ
+อาชา
+อาชาน
+อาชานิ
+อาชาไนย
+อาชีพ
+อาชีว-
+อาชีวก
+อาชีวศึกษา
+อาชีวะ
+อ้าซ่า
+อาญา
+อาญาสิทธิ์
+อาฏานา
+อาณัติ
+อาณัติสัญญาณ
+อาณา
+อาณาเกษตร
+อาณาเขต
+อาณาจักร
+อาณานิคม
+อาณาประชาราษฎร์
+อาณาประโยชน์
+อาด
+อาดๆ
+อาดุร
+อาดุลย์
+อาดูร
+อาดูลย์
+อาเด๊ะ
+อาตม-
+อาตมทาน
+อาตมภาพ
+อาตมัน
+อาตมา
+อาตุร
+อาถรรพ์
+อาถรรพณ์
+อาถรรพณะ
+อาทร
+อาทาตา
+อาทาน
+อาทิ
+อาทิตย-
+อาทิตย์
+อาทิตยมณฑล
+อาทิตยวาร
+อาทีนพ
+อาทีนว
+อาทึก
+อาเทศ
+อาธรรม
+อาธรรม์
+อาธรรมิก
+อาธรรมึก
+อาธาน
+อาธาร
+อาน
+อ่าน
+อานก
+อานน
+อานนท์
+อานม้า
+อ่านเล่น
+อานะ
+อานันท์
+อานันทนะ
+อานัม
+อานาปาน
+อานาปาน-
+อานาปานัสสติ
+อานำ
+อานิก
+อานิสงส์
+อานุภาพ
+อานุภาวะ
+อาบ
+อาบแดด
+อาบน้ำร้อนมาก่อน
+อาบเหงื่อต่างน้ำ
+อาบเอิบ
+อาบัติ
+อาบัน
+อาปณกะ
+อาปณะ
+อาปะ
+อาปาน-
+อาปานภูมิ
+อาปานศาลา
+อาปานะ
+อาโป
+อาโปกสิณ
+อาโปธาตุ
+อาพัด
+อาพัทธ์
+อาพันธ์
+อาพันธนะ
+อาพาธ
+อาพาธิก
+อาพาธึก
+อาพิล
+อาเพศ
+อาภรณ์
+อาภัพ
+อาภัสระ
+อาภา
+อาภากร
+อาภาส
+อาม
+อ่าม
+อามลก
+อามัย
+อามิษ
+อามิส
+อาย
+อ้าย
+อ้ายขิก
+อ้ายเข้
+อ้ายงั่ว
+อ้ายเจี๊ยว
+อ้ายชื่น
+อายต
+อายตนะ
+อายน
+อ้ายบ้า
+อ้ายเบี้ยว
+อ้ายป๊อก
+อายเหนียม
+อ้ายอ้าว
+อายัด
+อายัต
+อายัน
+อายาจนะ
+อายาน
+อายุ
+อายุกตกะ
+อายุกษัย
+อายุขัย
+อายุความ
+อายุตกะ
+อายุธ
+อายุร-
+อายุรแพทย์
+อายุรเวช
+อายุรเวท
+อายุรศาสตร์
+อายุวัฒนะ
+อายุษ
+อาร์กอน
+อารดี
+อาร์ต
+อารติ
+อารทรา
+อาร์ม
+อารมณ์
+อารมณ์ขัน
+อารย-
+อารยชน
+อารยชาติ
+อารยธรรม
+อารยประเทศ
+อารยะ
+อารยัน
+อาระ
+อารักขา
+อารักษ์
+อารัญ
+อารัญญิก
+อารัณย์
+อารัณยกะ
+อารัติ
+อารัมภ-
+อารัมภ์
+อารัมภกถา
+อารัมภบท
+อาราธน์
+อาราธนา
+อาราธนาธรรม
+อาราธนาพระปริตร
+อาราธนาศีล
+อาราม
+อารามิก
+อารี
+อารีอารอบ
+อารุม
+อาลปน์
+อาลปนะ
+อาละวาด
+อาลักษณ์
+อาลัย
+อาลัยอาวรณ์
+อาลัว
+อาลิ
+อาลี
+อาโลก
+อาโลก-
+อาโลกกสิณ
+อาโลกนะ
+อาว
+อ่าว
+อ้าว
+อาวรณ์
+อาวัชนาการ
+อาวัล
+อาวาส
+อาวาสิก
+อาวาห-
+อาวาหะ
+อาวิล
+อาวุต
+อาวุธ
+อาวุโส
+อาเวค
+อาเวศ
+อาศรม
+อาศรมบท
+อาศเลษา
+อาศัย
+อาศัยที่
+อาศัยลำแข้งตัวเอง
+อาศิร-
+อาศิรพจน์
+อาศิรพาท
+อาศิรพิษ
+อาศิรวจนะ
+อาศิรวาท
+อาศิรวิษ
+อาศีรพิษ
+อาศีรวิษ
+อาศุ
+อาเศียร-
+อาเศียรพจน์
+อาเศียรพาท
+อาเศียรวจนะ
+อาเศียรวาท
+อาษาฒ
+อาสน
+อาสน์
+อาสน์สงฆ์
+อาสนะ
+อาสัญ
+อาสัตย์
+อาสันนะ
+อาสา
+อาสาฬห-
+อาสาฬห์
+อาสาฬหบูชา
+อาสิญจ์
+อาสิน
+อาสูร
+อาแสะ
+อาหต
+อาหนี
+อาหนู
+อาหม
+อาหร
+อาหรัดกัดติกา
+อาหรับ
+อาหลักอาเหลื่อ
+อาหาร
+อาหารว่าง
+อาหุดี
+อาฬหก
+อาฬาริก
+อ่าองค์
+อำ
+อ่ำ
+อำแดง
+อำนด
+อำนนต์
+อำนรรฆ
+อำนวย
+อำนาจ
+อำนาจบาตรใหญ่
+อำนาถ
+อำนิฐ
+อำนิษฐ์
+อำปลัง
+อำพน
+อำพราง
+อำพะนำ
+อำพัน
+อำพันขี้ปลา
+อำพันทอง
+อำไพ
+อำเภอ
+อำเภอใจ
+อำมร
+อำมฤคโชค
+อำมฤต
+อำมหิต
+อำมาตย์
+อำยวน
+อำรุง
+อำลา
+อำอวม
+อ้ำอึ้ง
+อิก
+อิง
+อิงค์
+อิงอร
+อิงแอบ
+อิจฉา
+อิฉัน
+อิชยา
+อิฏฐ-
+อิฏฐารมณ์
+อิฐ-
+อิฐผล
+อิณ
+อิด
+อิดโรย
+อิดหนาระอาใจ
+อิดออด
+อิดๆ ออดๆ
+อิดเอื้อน
+อิดๆ เอื้อนๆ
+อิตถี
+อิตถีลิงค์
+อิตเทรียม
+อิตเทอร์เบียม
+อิทธิ
+อิทธิ-
+อิทธิปาฏิหาริย์
+อิทธิพล
+อิทธิฤทธิ์
+อิน
+อินซูลิน
+อินเดีย
+อินเดียนแดง
+อินเดียม
+อินท์
+อินทขีล
+อินทนิล
+อินทนิลน้ำ
+อินทผลัม
+อินทร-
+อินทร์
+อินทรธนู
+อินทรวงศ์
+อินทรวิเชียร
+อินทรศักดิ์
+อินทราณี
+อินทราภิเษก
+อินทรายุธ
+อินทรี
+อินทรีย-
+อินทรีย์
+อินทรียโคจร
+อินทรียญาณ
+อินทรียสังวร
+อินทีวร
+อินทุ
+อินธน์
+อินฟราเรด
+อินัง
+อินังขังขอบ
+อิ่ม
+อิ่มใจ
+อิ่มตัว
+อิ่มหนำ
+อิ่มหมีพีมัน
+อิ่มอกอิ่มใจ
+อิ่มเอิบ
+อิมัลชัน
+อิริเดียม
+อิริยา
+อิริยาบถ
+อิรุพเพท
+อิลู
+อิเล็กตรอน
+อิเล็กทรอนิกส์
+อิเล็กโทน
+อิศร
+อิศวร
+อิษฏ์
+อิษฏี
+อิส
+อิสตรี
+อิสร-
+อิสรภาพ
+อิสระ
+อิสริย-
+อิสริยยศ
+อิสริยะ
+อิสริยาภรณ์
+อิสลาม
+อิสสา
+อิสัตรี
+อิสิ
+อิสี
+อิหม่าม
+อิหลักอิเหลื่อ
+อี
+อี่
+อี้
+อี๊
+อี๋
+อีก
+อีก้อ
+อีก๋อย
+อีกา
+อีก๋า
+อีเก้ง
+อีเกร็ง
+อีเก้อีกัง
+อีแก
+อีแก่
+อีแก้
+อีโก้ง
+อีโก๊ะ
+อีคว่ำอีหงาย
+อีจู้
+อีฉัน
+อีฉุยอีแฉก
+อีชุก
+อี๊ด
+อีดำอีแดง
+อีตาล
+อีเต้อ
+อีโต้
+อีถ่าง
+อีทุก
+อีทุบ
+อีเทอร์
+อีนุงตุงนัง
+อีนูน
+อีโน
+อีโนงโตงเนง
+อีบึ้ง
+อีเป็ด
+อีเป้า
+อีแปะ
+อีโปง
+อีโปงครอบ
+อีเพา
+อีมู
+อีรม
+อีรุ้ง
+อีลอง
+อีล่อยป่อยแอ
+อีลุ้ม
+อีลุ่ยฉุยแฉก
+อีเลิ้ง
+อีแล่ง
+อีโลง
+อีศ
+อีศวร
+อีส
+อีสา
+อีสาน
+อีสุกอีใส
+อีหน็องอีแหน็ง
+อีหรอบ
+อีหรอบเดียวกัน
+อีหลักอีเหลื่อ
+อีหลัดถัดทา
+อีหลี
+อีหลุกขลุกขลัก
+อีหลุกขลุกขลุ่ย
+อีหลุยฉุยแฉก
+อีเห็น
+อีเหน็บ
+อีเหนียว
+อีเหละเขละขละ
+อีเหละเขะขะ
+อีโหน่อีเหน่
+อีโหลกโขลกเขลก
+อี๋อ๋อ
+อีแอ่น
+อึ
+อึก
+อึ๊ก
+อึกทึก
+อึกอัก
+อึง
+อึ่ง
+อึ้ง
+อึงคะนึง
+อึงมี่
+อึ่งยาง
+อึ่งใหญ่
+อึงอล
+อึ่งอ่าง
+อึด
+อึดใจ
+อึดตะปือ
+อึ้ดทึ่ด
+อึดอัด
+อึน
+อืด
+อืดอาด
+อื่น
+อื้น
+อือ
+อื้อ
+อื้อฉาว
+อื้ออึง
+อุ
+อุก
+อุกกา
+อุกกาบาต
+อุกฉกรรจ์
+อุกฤษฏ์
+อุกลา
+อุกลาบาต
+อุกอาจ
+อุค
+อุคร
+อุคห-
+อุคหนิมิต
+อุคหะ
+อุโฆษ
+อุ้ง
+อุจ
+อุจจาร-
+อุจจารมรรค
+อุจจาระ
+อุจฉุ
+อุจเฉท
+อุจเฉท-
+อุจเฉททิฐิ
+อุจาด
+อุชุ
+อุฏฐาการ
+อุณห-
+อุณหภูมิ
+อุณหะ
+อุณหาการ
+อุณหิส
+อุณา
+อุณานาภี
+อุณาโลม
+อุด
+อุดเตา
+อุดม
+อุดม-
+อุดมการณ์
+อุดมคติ
+อุดมศึกษา
+อุดร
+อุดหนุน
+อุดอู้
+อุดากัน
+อุตดม
+อุตดร
+อุตตมะ
+อุตตรผลคุนี
+อุตตรภัทรบท
+อุตตรอาษาฒ
+อุตตราสาฬหะ
+อุตตะภัททะ
+อุตบล
+อุตพิด
+อุตพิดผี
+อุตม-
+อุตมภาพ
+อุตมัตถ์
+อุตมางค์
+อุตร-
+อุตรกุรุ
+อุตรกุรู
+อุตรนิกาย
+อุตรผลคุนี
+อุตรภัทรบท
+อุตรา
+อุตราภิมุข
+อุตราวัฏ
+อุตราษาฒ
+อุตราสงค์
+อุตริ
+อุตริมนุสธรรม
+อุตลุด
+อุตสาห-
+อุตส่าห์
+อุตสาหกรรม
+อุตสาหกรรมศิลป์
+อุตสาหะ
+อุตุ
+อุตุนิยมวิทยา
+อุท-
+อุทก
+อุทก-
+อุทกธาร
+อุทกธารา
+อุทกภัย
+อุทกวิทยา
+อุทกศาสตร์
+อุททาม
+อุทธรณ์
+อุทธัจ
+อุทบาตร
+อุทบาน
+อุทพินทุ์
+อุทยาน
+อุทยานแห่งชาติ
+อุทร
+อุทริยะ
+อุทลุม
+อุทัช
+อุทัย
+อุทาน
+อุทาร
+อุทาหรณ์
+อุทิศ
+อุทุมพร
+อุเทศ
+อุธัจ
+อุ่น
+อุ่นเครื่อง
+อุ่นใจ
+อุ่นหนาฝาคั่ง
+อุนากัน
+อุบ
+อุบล
+อุบอิบ
+อุบะ
+อุบ๊ะ
+อุบัติ
+อุบัติ-
+อุบัติภัย
+อุบัติเหตุ
+อุบาท
+อุบาทว์
+อุบาย
+อุบาสก
+อุบาสิกา
+อุเบกขา
+อุโบสถ
+อุโบสถกรรม
+อุโบสถหัตถี
+อุป
+อุปกรณ์
+อุปกรม
+อุปการ-
+อุปการะ
+อุปการี
+อุปกิณณะ
+อุปกิเลส
+อุปจาร
+อุปถัมภ์
+อุปถัมภก
+อุปทม
+อุปทูต
+อุปเทศ
+อุปเท่ห์
+อุปธิ
+อุปนัย
+อุปนิกขิต
+อุปนิกษิต
+อุปนิษัท
+อุปนิสัย
+อุปบล
+อุปบัติ
+อุปบาท
+อุปปาติก-
+อุปพัทธ์
+อุปพันธ์
+อุปโภค
+อุปมา
+อุปมาน
+อุปมาโวหาร
+อุปมาอุปไมย
+อุปไมย
+อุปยุวราช
+อุปโยค
+อุปโยคบุรพบท
+อุปรากร
+อุปราคา
+อุปราช
+อุปริ
+อุปริจร
+อุปริพุทธิ
+อุปริภาค
+อุปริภาพ
+อุปริม-
+อุปริมปริยาย
+อุปริวัสน์
+อุปริสัจ
+อุปโลกน์
+อุปสมบท
+อุปสมบทกรรม
+อุปสมบัน
+อุปสรรค
+อุปสัมบัน
+อุปสัมปทา
+อุปสัมปทาเปกข์
+อุปสัมปทาเปกษ์
+อุปฮาด
+อุปัชฌาย-
+อุปัชฌาย์
+อุปัชฌายวัตร
+อุปัชฌายะ
+อุปัฏฐาก
+อุปัฏฐานะ
+อุปัทรพ
+อุปัทว-
+อุปัทวะ
+อุปัทวันตราย
+อุปาณ-
+อุปาทาน
+อุปาธยาย
+อุปาหนา
+อุภัย
+อุ้ม
+อุมงค์
+อุ้มชู
+อุ้มท้อง
+อุ้มน้ำ
+อุ้มสม
+อุโมงค์
+อุย
+อุ่ย
+อุ้ย
+อุ๊ย
+อุยยาน
+อุยยาม
+อุ้ยยุ้ย
+อุยโยค
+อุยหน่า
+อุ่ยหน่า
+อุ้ยอ้าย
+อุร-
+อุรค
+อุรเคนทร์
+อุรณ
+อุรพี
+อุรส
+อุระ
+อุรังอุตัง
+อุรัจฉทะ
+อุรัจฉัท
+อุรา
+อุรุ
+อุไร
+อุลปนะ
+อุลโลจ
+อุลโลละ
+อุลามก
+อุลิด
+อุลูก
+อุโลก
+อุแว้
+อุษณ-
+อุษณกร
+อุษณกาล
+อุษณรัศมี
+อุษณรูจี
+อุษณาการ
+อุษณีษ์
+อุษม
+อุษมัน
+อุษา
+อุษาโยค
+อุสภ
+อุสวะ
+อุสส่าห์
+อุสสาหะ
+อุสา
+อุสุ
+อุสุการ
+อุสุภ
+อุสุม
+อุหรับ
+อุหลบ
+อุเหม่
+อุฬาร
+อู
+อู่
+อู้
+อูฐ
+อูด
+อู่น้ำ
+อูม
+อูย
+อูรุ
+อู่ลอย
+อู่แห้ง
+อู้อี้
+อู๋อี๋
+เอ
+เอ้
+เอก
+เอก-
+เอ๊ก
+เอกเขนก
+เอกจิต
+เอกฉันท์
+เอกชน
+เอกซเรย์
+เอกเทศ
+เอกโทษ
+เอกนัย
+เอกบุคคล
+เอกบุรุษ
+เอกพจน์
+เอกภพ
+เอกภริยา
+เอกภักดิ์
+เอกภาคี
+เอกภาพ
+เอกม
+เอกมัย
+เอกรรถประโยค
+เอกรส
+เอกระ
+เอกราช
+เอกรูป
+เอกลักษณ์
+เอกศก
+เอกส
+เอกสาร
+เอกสารราชการ
+เอกสารสิทธิ
+เอกสิทธิ์
+เอกอัครราชทูต
+เอกอัครสมณทูต
+เอกอุ
+เอกัคตา
+เอกังสพยากรณ์
+เอกังสวาที
+เอกา
+เอ้กา
+เอกาธิปไตย
+เอเคอร์
+เอง
+เอ็ง
+เอ๋ง
+เอ็ด
+เอ็ดตะโร
+เอ็ดอึง
+เอตทัคคะ
+เอ้เต
+เอทิลแอลกอฮอล์
+เอน
+เอ็น
+เอนกาย
+เอนไซม์
+เอ็นดู
+เอนตัว
+เอนหลัง
+เอ็นอ่อน
+เอนเอียง
+เอม
+เอ็มบริโอ
+เอมอร
+เอมโอช
+เอย
+เอ่ย
+เอ๊ย
+เอ๋ย
+เอร็ดอร่อย
+เอราวัณ
+เอลา
+เอลาฬุก
+เอว
+เอ๊ว
+เอวัง
+เอฬก
+เอฬา
+เออ
+เอ่อ
+เออๆ คะๆ
+เออน่ะ
+เออแน่ะ
+เออร์เบียม
+เอ้อระเหย
+เอ้อเร้อ
+เอ้อเร้อเอ้อเต่อ
+เอออวย
+เออออ
+เออออห่อหมก
+เอ้อเฮอ
+เอ้แอ่น
+เอ้ๆ แอ่นๆ
+เอ๊ะ
+เอะใจ
+เอะอะ
+เอะอะมะเทิ่ง
+เอา
+เอาการ
+เอาการเอางาน
+เอากุ้งฝอยไปตกปลากะพง
+เอาข้างเข้าถู
+เอางาน
+เอาจมูกผู้อื่นมาหายใจ
+เอาจริง
+เอาจริงเอาจัง
+เอาใจ
+เอาใจช่วย
+เอาใจใส่
+เอาชนะ
+เอาชั้นเอาเชิง
+เอาชัย
+เอาชีวิต
+เอาชื่อ
+เอาเชิง
+เอาใช้
+เอาดีเอาเด่น
+เอาตาย
+เอาแต่
+เอาแต่ใจ
+เอาถ่าน
+เอาเถิด
+เอาเถิดเจ้าล่อ
+เอาทองไปรู่กระเบื้อง
+เอาทาร
+เอาทารย์
+เอาน้ำเย็นเข้าลูบ
+เอาน้ำลูบท้อง
+เอาเนื้อหนูไปปะเนื้อช้าง
+เอาบุญเอาคุณ
+เอาปูนหมายหัว
+เอาเป็นธุระ
+เอาเป็นว่า
+เอาเป็นเอาตาย
+เอาเปรียบ
+เอาผิด
+เอาพิมเสนไปแลกเกลือ
+เอามะพร้าวห้าวไปขายสวน
+เอามือซุกหีบ
+เอาไม้ซีกไปงัดไม้ซุง
+เอาไม้สั้นไปรันขี้
+เอารส
+เอารัดเอาเปรียบ
+เอาเรื่อง
+เอาฤกษ์
+เอาละ
+เอาเลย
+เอาเลือดกับปู
+เอาหน้า
+เอาหูไปนา เอาตาไปไร่
+เอาใหญ่
+เอาฬาร
+เอาฬาริก
+เอาฬารึก
+เอาอกเอาใจ
+เอาอย่าง
+เอาอยู่
+เอาะลาย
+เอิก
+เอิกเกริก
+เอิ้น
+เอิบ
+เอิบอาบ
+เอียง
+เอี้ยง
+เอี้ยงคำ
+เอียงอาย
+เอียงเอน
+เอียด
+เอี๊ยด
+เอียน
+เอี่ยน
+เอี่ยม
+เอี๊ยม
+เอี้ยมจุ๊น
+เอี้ยมเฟี้ยม
+เอี่ยมอ่อง
+เอี่ยว
+เอี้ยว
+เอี่ยวลม
+เอื้อ
+เอื้อง
+เอื้องครั่ง
+เอื้องน้ำครั่ง
+เอื้องศรีเที่ยง
+เอื้องหนวดพราหมณ์
+เอือด
+เอือน
+เอื้อน
+เอือนกิน
+เอื้อเฟื้อ
+เอือม
+เอื้อม
+เอื้อมอาจ
+เอื่อย
+เอื่อยๆ
+เอื้อย
+เอื้ออำนวย
+แอ
+แอ้
+แอ๋
+แอก
+แอกทิเนียม
+แอกน้อย
+แอ่ง
+แอ้งแม้ง
+แอด
+แอดๆ
+แอ้ด
+แอ้ดๆ
+แอ๊ด
+แอ๊ดๆ
+แอ่น
+แอนติเจน
+แอนติบอดี
+แอนติอิเล็กตรอน
+แอ่นลม
+แอโนด
+แอบ
+แอบแฝง
+แอบอ้าง
+แอบอิง
+แอ้ม
+แอมแปร์
+แอมมิเตอร์
+แอมโมเนีย
+แอร่ม
+แอลกอฮอล์
+แอลฟา
+แอว
+แอ่ว
+แอ้วแซ่ว
+แอสทาทีน
+แอสไพริน
+แอสฟัลต์
+แอหนัง
+แออวย
+แออัด
+โอ
+โอ่
+โอ้
+โอ๋
+โอก
+โอ้ก
+โอ๊ก
+โอกาส
+โอฆ-
+โอฆชล
+โอฆสงสาร
+โอฆะ
+โอ่ง
+โองการ
+โองโขดง
+โอ่งมังกร
+โอชะ
+โอชา
+โอโซน
+โอฐ
+โอด
+โอดกาเหว่า
+โอดครวญ
+โอดโอย
+โอ๊ต
+โอตตัปปะ
+โอ่โถง
+โอ้โถง
+โอทน-
+โอทนะ
+โอน
+โอนกรรมสิทธิ์
+โอนชาติ
+โอนอ่อน
+โอนเอน
+โอบ
+โอบอ้อมอารี
+โอบอุ้ม
+โอบเอื้อ
+โอปปาติกะ
+โอภา
+โอภาปราศรัย
+โอภาส
+โอม
+โอย
+โอ๊ย
+โอร-
+โอรส
+โอละพ่อ
+โอลิมปิก
+โอ้โลม
+โอ้โลมปฏิโลม
+โอ้ว่า
+โอวาท
+โอษฐ-
+โอษฐ์
+โอษฐชะ
+โอษฐภัย
+โอสถ
+โอสถ-
+โอสถกรรม
+โอสาน
+โอหนอ
+โอห์ม
+โอห์มมิเตอร์
+โอหัง
+โอฬาร
+โอฬาริก
+โอฬารึก
+โอ่อวด
+โอ้อวด
+โอ่อ่า
+โอ้เอ้
+โอเอซิส
+โอ้โฮ
+ไอ
+ไอ้
+ไอกรน
+ไอโซโทป
+ไอแดด
+ไอตัว
+ไอน์สไตเนียม
+ไอพ่น
+ไอพิษ
+ไอยรา
+ไอยเรศ
+ไอราพต
+ไอราวัณ
+ไอศกรีม
+ไอศวรรย์
+ไอศุริย-
+ไอศุริยสมบัติ
+ไอศูรย์
+ไอเสีย
+ไอออน
+ไอโอดีน
+ฮ
+ฮกเกี้ยน
+ฮด
+ฮวงซุ้ย
+ฮวน
+ฮ้วนหมู
+ฮวบ
+ฮวบฮาบ
+ฮ่อ
+ฮ้อ
+ฮอกกี้
+ฮอด
+ฮ่อม
+ฮ่อมดง
+ฮ่อมเมือง
+ฮอร์โมน
+ฮอลแลนด์
+ฮอลันดา
+ฮะ
+ฮะฮ้าย
+ฮะไฮ้
+ฮัก
+ฮักๆ
+ฮังเล
+ฮัจญ์
+ฮัจญะฮ์
+ฮัจญี
+ฮั่น
+ฮา
+ฮ้า
+ฮ่างหลวง
+ฮาป่า
+ฮาม
+ฮาเร็ม
+ฮาห์เนียม
+ฮ้าไฮ้
+ฮิจเราะห์
+ฮินดู
+ฮิปโปโปเตมัส
+ฮิสทีเรีย
+ฮีเลียม
+ฮึ
+ฮึก
+ฮึกหาญ
+ฮึกห้าว
+ฮึกเหิม
+ฮึกโหม
+ฮึกฮัก
+ฮึด
+ฮึดฮัด
+ฮึ่ม
+ฮึย
+ฮึยๆ
+ฮึ่ย
+ฮืดฮาด
+ฮือ
+ฮือๆ
+ฮื่อ
+ฮื้อ
+ฮุด
+ฮุบ
+ฮุยเลฮุย
+ฮู้
+ฮูก
+ฮูม
+เฮ
+เฮกตาร์
+เฮกโตกรัม
+เฮกโตเมตร
+เฮกโตลิตร
+เฮง
+เฮงซวย
+เฮ็ด
+เฮโมโกลบิน
+เฮย
+เฮ้ย
+เฮโรอีน
+เฮลิคอปเตอร์
+เฮโลสาระพา
+เฮ้ว
+เฮอ
+เฮ้อ
+เฮฮา
+เฮิรตซ์
+เฮี้ยน
+เฮี้ยบ
+เฮี้ยว
+เฮือก
+เฮือกๆ
+เฮือกสุดท้าย
+เฮือน
+แฮ
+แฮ่
+แฮก
+แฮกๆ
+แฮ่กึ๊น
+แฮนด์บอล
+แฮฟเนียม
+แฮม
+แฮะ
+โฮ
+โฮก
+โฮกอือ
+โฮกฮาก
+โฮเต็ล
+โฮลเมียม
+โฮะ
+ไฮ้
+ไฮโกรมิเตอร์
+ไฮดรา
+ไฮโดรคาร์บอน
+ไฮโดรเจน
+ไฮโดรเจนซัลไฟด์
+ไฮโดรเจนเพอร์ออกไซด์
+ไฮโดรมิเตอร์
+ไฮไฟ
+ไฮโล
+ไฮฮี
diff --git a/src/com/ibm/icu/dev/data/testdata.jar b/src/com/ibm/icu/dev/data/testdata.jar
new file mode 100755
index 0000000..32a6467
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/testdata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cfdf195ab451fd1b304f76fb2e5eaa26e56982dadb91d9b96ae9b238ef70bcf1
+size 768494
diff --git a/src/com/ibm/icu/dev/data/thai6.ucs b/src/com/ibm/icu/dev/data/thai6.ucs
new file mode 100644
index 0000000..a3d0282
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/thai6.ucs
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
new file mode 100644
index 0000000..f20528b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
@@ -0,0 +1,179 @@
+# CompositionExclusions-4.1.0.txt
+# Date: 2005-03-17, 15:21:00 PST [KW]
+#
+# This file lists the characters from the UAX #15 Composition Exclusion Table.
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+# ================================================
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+# ================================================
+
+0958    #  DEVANAGARI LETTER QA
+0959    #  DEVANAGARI LETTER KHHA
+095A    #  DEVANAGARI LETTER GHHA
+095B    #  DEVANAGARI LETTER ZA
+095C    #  DEVANAGARI LETTER DDDHA
+095D    #  DEVANAGARI LETTER RHA
+095E    #  DEVANAGARI LETTER FA
+095F    #  DEVANAGARI LETTER YYA
+09DC    #  BENGALI LETTER RRA
+09DD    #  BENGALI LETTER RHA
+09DF    #  BENGALI LETTER YYA
+0A33    #  GURMUKHI LETTER LLA
+0A36    #  GURMUKHI LETTER SHA
+0A59    #  GURMUKHI LETTER KHHA
+0A5A    #  GURMUKHI LETTER GHHA
+0A5B    #  GURMUKHI LETTER ZA
+0A5E    #  GURMUKHI LETTER FA
+0B5C    #  ORIYA LETTER RRA
+0B5D    #  ORIYA LETTER RHA
+0F43    #  TIBETAN LETTER GHA
+0F4D    #  TIBETAN LETTER DDHA
+0F52    #  TIBETAN LETTER DHA
+0F57    #  TIBETAN LETTER BHA
+0F5C    #  TIBETAN LETTER DZHA
+0F69    #  TIBETAN LETTER KSSA
+0F76    #  TIBETAN VOWEL SIGN VOCALIC R
+0F78    #  TIBETAN VOWEL SIGN VOCALIC L
+0F93    #  TIBETAN SUBJOINED LETTER GHA
+0F9D    #  TIBETAN SUBJOINED LETTER DDHA
+0FA2    #  TIBETAN SUBJOINED LETTER DHA
+0FA7    #  TIBETAN SUBJOINED LETTER BHA
+0FAC    #  TIBETAN SUBJOINED LETTER DZHA
+0FB9    #  TIBETAN SUBJOINED LETTER KSSA
+FB1D    #  HEBREW LETTER YOD WITH HIRIQ
+FB1F    #  HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A    #  HEBREW LETTER SHIN WITH SHIN DOT
+FB2B    #  HEBREW LETTER SHIN WITH SIN DOT
+FB2C    #  HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D    #  HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E    #  HEBREW LETTER ALEF WITH PATAH
+FB2F    #  HEBREW LETTER ALEF WITH QAMATS
+FB30    #  HEBREW LETTER ALEF WITH MAPIQ
+FB31    #  HEBREW LETTER BET WITH DAGESH
+FB32    #  HEBREW LETTER GIMEL WITH DAGESH
+FB33    #  HEBREW LETTER DALET WITH DAGESH
+FB34    #  HEBREW LETTER HE WITH MAPIQ
+FB35    #  HEBREW LETTER VAV WITH DAGESH
+FB36    #  HEBREW LETTER ZAYIN WITH DAGESH
+FB38    #  HEBREW LETTER TET WITH DAGESH
+FB39    #  HEBREW LETTER YOD WITH DAGESH
+FB3A    #  HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B    #  HEBREW LETTER KAF WITH DAGESH
+FB3C    #  HEBREW LETTER LAMED WITH DAGESH
+FB3E    #  HEBREW LETTER MEM WITH DAGESH
+FB40    #  HEBREW LETTER NUN WITH DAGESH
+FB41    #  HEBREW LETTER SAMEKH WITH DAGESH
+FB43    #  HEBREW LETTER FINAL PE WITH DAGESH
+FB44    #  HEBREW LETTER PE WITH DAGESH
+FB46    #  HEBREW LETTER TSADI WITH DAGESH
+FB47    #  HEBREW LETTER QOF WITH DAGESH
+FB48    #  HEBREW LETTER RESH WITH DAGESH
+FB49    #  HEBREW LETTER SHIN WITH DAGESH
+FB4A    #  HEBREW LETTER TAV WITH DAGESH
+FB4B    #  HEBREW LETTER VAV WITH HOLAM
+FB4C    #  HEBREW LETTER BET WITH RAFE
+FB4D    #  HEBREW LETTER KAF WITH RAFE
+FB4E    #  HEBREW LETTER PE WITH RAFE
+
+# Total code points: 67
+
+# ================================================
+# (2) Post Composition Version precomposed characters
+# These characters cannot be derived solely from the UnicodeData.txt file
+# in this version of Unicode.
+# ================================================
+
+2ADC    #  FORKING
+1D15E   #  MUSICAL SYMBOL HALF NOTE
+1D15F   #  MUSICAL SYMBOL QUARTER NOTE
+1D160   #  MUSICAL SYMBOL EIGHTH NOTE
+1D161   #  MUSICAL SYMBOL SIXTEENTH NOTE
+1D162   #  MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163   #  MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164   #  MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB   #  MUSICAL SYMBOL MINIMA
+1D1BC   #  MUSICAL SYMBOL MINIMA BLACK
+1D1BD   #  MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE   #  MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF   #  MUSICAL SYMBOL FUSA WHITE
+1D1C0   #  MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 14
+
+# ================================================
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0340..0341       [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+# 0343                 COMBINING GREEK KORONIS
+# 0374                 GREEK NUMERAL SIGN
+# 037E                 GREEK QUESTION MARK
+# 0387                 GREEK ANO TELEIA
+# 1F71                 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73                 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75                 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77                 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79                 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B                 GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D                 GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB                 GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE                 GREEK PROSGEGRAMMENI
+# 1FC9                 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB                 GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3                 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB                 GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3                 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB                 GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE..1FEF       [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+# 1FF9                 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB                 GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD                 GREEK OXIA
+# 2000..2001       [2] EN QUAD..EM QUAD
+# 2126                 OHM SIGN
+# 212A..212B       [2] KELVIN SIGN..ANGSTROM SIGN
+# 2329                 LEFT-POINTING ANGLE BRACKET
+# 232A                 RIGHT-POINTING ANGLE BRACKET
+# F900..FA0D     [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10                 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12                 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15..FA1E      [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20                 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22                 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25..FA26       [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A..FA2D       [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+# FA30..FA6A      [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+# FA70..FAD9     [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+# 2F800..2FA1D   [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 924
+
+# ================================================
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0344                 COMBINING GREEK DIALYTIKA TONOS
+# 0F73                 TIBETAN VOWEL SIGN II
+# 0F75                 TIBETAN VOWEL SIGN UU
+# 0F81                 TIBETAN VOWEL SIGN REVERSED II
+
+# Total code points: 4
+
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt
new file mode 100644
index 0000000..9391ace
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt
@@ -0,0 +1,48 @@
+# NormalizationCorrections-4.1.0.txt
+# Date: 2005-03-17, 15:21:00 PST [KW]
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# The normalization stabilization policy of the Unicode
+# Consortium ordinarily precludes any change to the decomposition
+# for any character, once established in a relevant version
+# of the UnicodeData.txt data file. However, under certain
+# exceptional (and rare) conditions, an error in a decomposition
+# mapping may be discovered that is truly just an unintended
+# typo in the data, and not a matter of dubious interpretation.
+#
+# Whenever such an error may be found, and if it meets the
+# requirements for possible exceptions to normalization
+# stability, the correction is entered in this data file,
+# so that any implementation depending on absolute stability
+# of normalization, *including* any errors in the data, can
+# safely reconstruct the exact state of the data tables at
+# any given version of Unicode.
+#
+# Currently this list has exactly six entries in it, one for the
+# typo found and corrected in Corrigendum #3, and five for
+# the typos and misidentifications found and corrected in 
+# Corrigendum #4. All efforts
+# will be made to keep the entries limited to just those fixes.
+#
+# Interpretation of the fields:
+#   Field 1: Unicode code point
+#   Field 2: Original (erroneous) decomposition
+#   Field 3: Corrected decomposition
+#   Field 4: Version of Unicode for which the correction was
+#            entered into UnicodeData.txt, in n.n.n format.
+#   Comment: Indicates the Unicode Corrigendum which documents 
+#            the correction
+#
+# For more information, see UAX #15, Unicode Normalization Forms.
+#
+F951;96FB;964B;3.2.0 # Corrigendum 3
+2F868;2136A;36FC;4.0.0 # Corrigendum 4
+2F874;5F33;5F53;4.0.0 # Corrigendum 4
+2F91F;43AB;243AB;4.0.0 # Corrigendum 4
+2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
+2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
new file mode 100644
index 0000000..43850f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
@@ -0,0 +1,17042 @@
+# NormalizationTest-3.2.0.txt
+# Date: 2002-03-19,23:31:18 GMT [MD]
+#
+# Note: Code points whose decomposition changed since the Unicode version
+# for this NormalizationTest.txt are commented out and are only tested with
+# the current NormalizationTest.txt in icu/source/data/unidata/.
+# See NormalizationCorrections.txt
+# and search for "NormalizationCorrections" in this file.
+# markus 2003mar05
+#
+# Normalization Test Suite
+# Format:
+#
+#   Columns (c1, c2,...) are separated by semicolons
+#   Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+#    NFC
+#      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+#      c4 ==  NFC(c4) ==  NFC(c5)
+#
+#    NFD
+#      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+#      c5 ==  NFD(c4) ==  NFD(c5)
+#
+#    NFKC
+#      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+#    NFKD
+#      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every assigned Unicode 3.1.0 code point X that is not specifically
+#    listed in Part 1, the following invariants must be true for all conformant
+#    implementations:
+#
+#      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+# NormalizationCorrections-4.0.0.txt -- 2F868;2136A;2136A;2136A;2136A;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+# NormalizationCorrections-4.0.0.txt -- 2F874;5F33;5F33;5F33;5F33;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+# NormalizationCorrections-4.0.0.txt -- 2F91F;43AB;43AB;43AB;43AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+# NormalizationCorrections-4.0.0.txt -- 2F95F;7AAE;7AAE;7AAE;7AAE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+# NormalizationCorrections-4.0.0.txt -- 2F9BF;4D57;4D57;4D57;4D57;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 0362 0315 0300 0315 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 0315 0362 0315 0300 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 0362 0315 0300 031A 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;
+0061 031A 0362 0315 0300 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 0360 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0345 0345 0360 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0345 0360 0362 0360 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0360 0345 0360 0362 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0345 0360 0362 0361 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;
+0061 0361 0345 0360 0362 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;
+0061 0360 0362 0315 0362 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0362 0360 0362 0315 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 0362 0315 0300 302C 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;
+0061 302C 0362 0315 0300 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+#
+# END OF FILE
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
new file mode 100644
index 0000000..925e4f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
@@ -0,0 +1,17558 @@
+# NormalizationTest-4.1.0.txt
+# Date: 2005-03-26, 00:33:29 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Normalization Test Suite
+# Format:
+#
+#   Columns (c1, c2,...) are separated by semicolons
+#   Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+#    NFC
+#      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+#      c4 ==  NFC(c4) ==  NFC(c5)
+#
+#    NFD
+#      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+#      c5 ==  NFD(c4) ==  NFD(c5)
+#
+#    NFKC
+#      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+#    NFKD
+#      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every code point X assigned in this version of Unicode that is not specifically
+#    listed in Part 1, the following invariants must be true for all conformant
+#    implementations:
+#
+#      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+03F9;03F9;03F9;03A3;03A3;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+10FC;10FC;10FC;10DC;10DC;
+1D2C;1D2C;1D2C;0041;0041;
+1D2D;1D2D;1D2D;00C6;00C6;
+1D2E;1D2E;1D2E;0042;0042;
+1D30;1D30;1D30;0044;0044;
+1D31;1D31;1D31;0045;0045;
+1D32;1D32;1D32;018E;018E;
+1D33;1D33;1D33;0047;0047;
+1D34;1D34;1D34;0048;0048;
+1D35;1D35;1D35;0049;0049;
+1D36;1D36;1D36;004A;004A;
+1D37;1D37;1D37;004B;004B;
+1D38;1D38;1D38;004C;004C;
+1D39;1D39;1D39;004D;004D;
+1D3A;1D3A;1D3A;004E;004E;
+1D3C;1D3C;1D3C;004F;004F;
+1D3D;1D3D;1D3D;0222;0222;
+1D3E;1D3E;1D3E;0050;0050;
+1D3F;1D3F;1D3F;0052;0052;
+1D40;1D40;1D40;0054;0054;
+1D41;1D41;1D41;0055;0055;
+1D42;1D42;1D42;0057;0057;
+1D43;1D43;1D43;0061;0061;
+1D44;1D44;1D44;0250;0250;
+1D45;1D45;1D45;0251;0251;
+1D46;1D46;1D46;1D02;1D02;
+1D47;1D47;1D47;0062;0062;
+1D48;1D48;1D48;0064;0064;
+1D49;1D49;1D49;0065;0065;
+1D4A;1D4A;1D4A;0259;0259;
+1D4B;1D4B;1D4B;025B;025B;
+1D4C;1D4C;1D4C;025C;025C;
+1D4D;1D4D;1D4D;0067;0067;
+1D4F;1D4F;1D4F;006B;006B;
+1D50;1D50;1D50;006D;006D;
+1D51;1D51;1D51;014B;014B;
+1D52;1D52;1D52;006F;006F;
+1D53;1D53;1D53;0254;0254;
+1D54;1D54;1D54;1D16;1D16;
+1D55;1D55;1D55;1D17;1D17;
+1D56;1D56;1D56;0070;0070;
+1D57;1D57;1D57;0074;0074;
+1D58;1D58;1D58;0075;0075;
+1D59;1D59;1D59;1D1D;1D1D;
+1D5A;1D5A;1D5A;026F;026F;
+1D5B;1D5B;1D5B;0076;0076;
+1D5C;1D5C;1D5C;1D25;1D25;
+1D5D;1D5D;1D5D;03B2;03B2;
+1D5E;1D5E;1D5E;03B3;03B3;
+1D5F;1D5F;1D5F;03B4;03B4;
+1D60;1D60;1D60;03C6;03C6;
+1D61;1D61;1D61;03C7;03C7;
+1D62;1D62;1D62;0069;0069;
+1D63;1D63;1D63;0072;0072;
+1D64;1D64;1D64;0075;0075;
+1D65;1D65;1D65;0076;0076;
+1D66;1D66;1D66;03B2;03B2;
+1D67;1D67;1D67;03B3;03B3;
+1D68;1D68;1D68;03C1;03C1;
+1D69;1D69;1D69;03C6;03C6;
+1D6A;1D6A;1D6A;03C7;03C7;
+1D78;1D78;1D78;043D;043D;
+1D9B;1D9B;1D9B;0252;0252;
+1D9C;1D9C;1D9C;0063;0063;
+1D9D;1D9D;1D9D;0255;0255;
+1D9E;1D9E;1D9E;00F0;00F0;
+1D9F;1D9F;1D9F;025C;025C;
+1DA0;1DA0;1DA0;0066;0066;
+1DA1;1DA1;1DA1;025F;025F;
+1DA2;1DA2;1DA2;0261;0261;
+1DA3;1DA3;1DA3;0265;0265;
+1DA4;1DA4;1DA4;0268;0268;
+1DA5;1DA5;1DA5;0269;0269;
+1DA6;1DA6;1DA6;026A;026A;
+1DA7;1DA7;1DA7;1D7B;1D7B;
+1DA8;1DA8;1DA8;029D;029D;
+1DA9;1DA9;1DA9;026D;026D;
+1DAA;1DAA;1DAA;1D85;1D85;
+1DAB;1DAB;1DAB;029F;029F;
+1DAC;1DAC;1DAC;0271;0271;
+1DAD;1DAD;1DAD;0270;0270;
+1DAE;1DAE;1DAE;0272;0272;
+1DAF;1DAF;1DAF;0273;0273;
+1DB0;1DB0;1DB0;0274;0274;
+1DB1;1DB1;1DB1;0275;0275;
+1DB2;1DB2;1DB2;0278;0278;
+1DB3;1DB3;1DB3;0282;0282;
+1DB4;1DB4;1DB4;0283;0283;
+1DB5;1DB5;1DB5;01AB;01AB;
+1DB6;1DB6;1DB6;0289;0289;
+1DB7;1DB7;1DB7;028A;028A;
+1DB8;1DB8;1DB8;1D1C;1D1C;
+1DB9;1DB9;1DB9;028B;028B;
+1DBA;1DBA;1DBA;028C;028C;
+1DBB;1DBB;1DBB;007A;007A;
+1DBC;1DBC;1DBC;0290;0290;
+1DBD;1DBD;1DBD;0291;0291;
+1DBE;1DBE;1DBE;0292;0292;
+1DBF;1DBF;1DBF;03B8;03B8;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+2090;2090;2090;0061;0061;
+2091;2091;2091;0065;0065;
+2092;2092;2092;006F;006F;
+2093;2093;2093;0078;0078;
+2094;2094;2094;0259;0259;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213B;213B;213B;0046 0041 0058;0046 0041 0058;
+213C;213C;213C;03C0;03C0;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2D6F;2D6F;2D6F;2D61;2D61;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+321D;321D;321D;0028 C624 C804 0029;0028 110B 1169 110C 1165 11AB 0029;
+321E;321E;321E;0028 C624 D6C4 0029;0028 110B 1169 1112 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3250;3250;3250;0050 0054 0045;0050 0054 0045;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+327C;327C;327C;CC38 ACE0;110E 1161 11B7 1100 1169;
+327D;327D;327D;C8FC C758;110C 116E 110B 1174;
+327E;327E;327E;C6B0;110B 116E;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32CC;32CC;32CC;0048 0067;0048 0067;
+32CD;32CD;32CD;0065 0072 0067;0065 0072 0067;
+32CE;32CE;32CE;0065 0056;0065 0056;
+32CF;32CF;32CF;004C 0054 0044;004C 0054 0044;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+3377;3377;3377;0064 006D;0064 006D;
+3378;3378;3378;0064 006D 0032;0064 006D 0032;
+3379;3379;3379;0064 006D 0033;0064 006D 0033;
+337A;337A;337A;0049 0055;0049 0055;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33DE;33DE;33DE;0056 2215 006D;0056 2215 006D;
+33DF;33DF;33DF;0041 2215 006D;0041 2215 006D;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+33FF;33FF;33FF;0067 0061 006C;0067 0061 006C;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FA70;4E26;4E26;4E26;4E26;
+FA71;51B5;51B5;51B5;51B5;
+FA72;5168;5168;5168;5168;
+FA73;4F80;4F80;4F80;4F80;
+FA74;5145;5145;5145;5145;
+FA75;5180;5180;5180;5180;
+FA76;52C7;52C7;52C7;52C7;
+FA77;52FA;52FA;52FA;52FA;
+FA78;559D;559D;559D;559D;
+FA79;5555;5555;5555;5555;
+FA7A;5599;5599;5599;5599;
+FA7B;55E2;55E2;55E2;55E2;
+FA7C;585A;585A;585A;585A;
+FA7D;58B3;58B3;58B3;58B3;
+FA7E;5944;5944;5944;5944;
+FA7F;5954;5954;5954;5954;
+FA80;5A62;5A62;5A62;5A62;
+FA81;5B28;5B28;5B28;5B28;
+FA82;5ED2;5ED2;5ED2;5ED2;
+FA83;5ED9;5ED9;5ED9;5ED9;
+FA84;5F69;5F69;5F69;5F69;
+FA85;5FAD;5FAD;5FAD;5FAD;
+FA86;60D8;60D8;60D8;60D8;
+FA87;614E;614E;614E;614E;
+FA88;6108;6108;6108;6108;
+FA89;618E;618E;618E;618E;
+FA8A;6160;6160;6160;6160;
+FA8B;61F2;61F2;61F2;61F2;
+FA8C;6234;6234;6234;6234;
+FA8D;63C4;63C4;63C4;63C4;
+FA8E;641C;641C;641C;641C;
+FA8F;6452;6452;6452;6452;
+FA90;6556;6556;6556;6556;
+FA91;6674;6674;6674;6674;
+FA92;6717;6717;6717;6717;
+FA93;671B;671B;671B;671B;
+FA94;6756;6756;6756;6756;
+FA95;6B79;6B79;6B79;6B79;
+FA96;6BBA;6BBA;6BBA;6BBA;
+FA97;6D41;6D41;6D41;6D41;
+FA98;6EDB;6EDB;6EDB;6EDB;
+FA99;6ECB;6ECB;6ECB;6ECB;
+FA9A;6F22;6F22;6F22;6F22;
+FA9B;701E;701E;701E;701E;
+FA9C;716E;716E;716E;716E;
+FA9D;77A7;77A7;77A7;77A7;
+FA9E;7235;7235;7235;7235;
+FA9F;72AF;72AF;72AF;72AF;
+FAA0;732A;732A;732A;732A;
+FAA1;7471;7471;7471;7471;
+FAA2;7506;7506;7506;7506;
+FAA3;753B;753B;753B;753B;
+FAA4;761D;761D;761D;761D;
+FAA5;761F;761F;761F;761F;
+FAA6;76CA;76CA;76CA;76CA;
+FAA7;76DB;76DB;76DB;76DB;
+FAA8;76F4;76F4;76F4;76F4;
+FAA9;774A;774A;774A;774A;
+FAAA;7740;7740;7740;7740;
+FAAB;78CC;78CC;78CC;78CC;
+FAAC;7AB1;7AB1;7AB1;7AB1;
+FAAD;7BC0;7BC0;7BC0;7BC0;
+FAAE;7C7B;7C7B;7C7B;7C7B;
+FAAF;7D5B;7D5B;7D5B;7D5B;
+FAB0;7DF4;7DF4;7DF4;7DF4;
+FAB1;7F3E;7F3E;7F3E;7F3E;
+FAB2;8005;8005;8005;8005;
+FAB3;8352;8352;8352;8352;
+FAB4;83EF;83EF;83EF;83EF;
+FAB5;8779;8779;8779;8779;
+FAB6;8941;8941;8941;8941;
+FAB7;8986;8986;8986;8986;
+FAB8;8996;8996;8996;8996;
+FAB9;8ABF;8ABF;8ABF;8ABF;
+FABA;8AF8;8AF8;8AF8;8AF8;
+FABB;8ACB;8ACB;8ACB;8ACB;
+FABC;8B01;8B01;8B01;8B01;
+FABD;8AFE;8AFE;8AFE;8AFE;
+FABE;8AED;8AED;8AED;8AED;
+FABF;8B39;8B39;8B39;8B39;
+FAC0;8B8A;8B8A;8B8A;8B8A;
+FAC1;8D08;8D08;8D08;8D08;
+FAC2;8F38;8F38;8F38;8F38;
+FAC3;9072;9072;9072;9072;
+FAC4;9199;9199;9199;9199;
+FAC5;9276;9276;9276;9276;
+FAC6;967C;967C;967C;967C;
+FAC7;96E3;96E3;96E3;96E3;
+FAC8;9756;9756;9756;9756;
+FAC9;97DB;97DB;97DB;97DB;
+FACA;97FF;97FF;97FF;97FF;
+FACB;980B;980B;980B;980B;
+FACC;983B;983B;983B;983B;
+FACD;9B12;9B12;9B12;9B12;
+FACE;9F9C;9F9C;9F9C;9F9C;
+FACF;2284A;2284A;2284A;2284A;
+FAD0;22844;22844;22844;22844;
+FAD1;233D5;233D5;233D5;233D5;
+FAD2;3B9D;3B9D;3B9D;3B9D;
+FAD3;4018;4018;4018;4018;
+FAD4;4039;4039;4039;4039;
+FAD5;25249;25249;25249;25249;
+FAD6;25CD0;25CD0;25CD0;25CD0;
+FAD7;27ED3;27ED3;27ED3;27ED3;
+FAD8;9F43;9F43;9F43;9F43;
+FAD9;9F8E;9F8E;9F8E;9F8E;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE10;FE10;FE10;002C;002C;
+FE11;FE11;FE11;3001;3001;
+FE12;FE12;FE12;3002;3002;
+FE13;FE13;FE13;003A;003A;
+FE14;FE14;FE14;003B;003B;
+FE15;FE15;FE15;0021;0021;
+FE16;FE16;FE16;003F;003F;
+FE17;FE17;FE17;3016;3016;
+FE18;FE18;FE18;3017;3017;
+FE19;FE19;FE19;002E 002E 002E;002E 002E 002E;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE47;FE47;FE47;005B;005B;
+FE48;FE48;FE48;005D;005D;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C1;1D4C1;1D4C1;006C;006C;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A4;1D6A4;1D6A4;0131;0131;
+1D6A5;1D6A5;1D6A5;0237;0237;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+2F868;36FC;36FC;36FC;36FC;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+2F874;5F53;5F53;5F53;5F53;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+2F91F;243AB;243AB;243AB;243AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+2F95F;7AEE;7AEE;7AEE;7AEE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+2F9BF;45D7;45D7;45D7;45D7;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 035C 0315 0300 0315 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 0315 035C 0315 0300 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 035C 0315 0300 031A 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;
+0061 031A 035C 0315 0300 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 035D 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0345 0345 035D 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0315 0300 05AE 0350 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;
+0061 0350 0315 0300 05AE 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;
+0061 0315 0300 05AE 0351 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;
+0061 0351 0315 0300 05AE 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;
+0061 0315 0300 05AE 0352 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;
+0061 0352 0315 0300 05AE 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;
+0061 059A 0316 302A 0353 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;
+0061 0353 059A 0316 302A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;
+0061 059A 0316 302A 0354 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;
+0061 0354 059A 0316 302A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;
+0061 059A 0316 302A 0355 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;
+0061 0355 059A 0316 302A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;
+0061 059A 0316 302A 0356 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;
+0061 0356 059A 0316 302A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;
+0061 0315 0300 05AE 0357 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;
+0061 0357 0315 0300 05AE 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;
+0061 035C 0315 0300 0358 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;
+0061 0358 035C 0315 0300 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;
+0061 059A 0316 302A 0359 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;
+0061 0359 059A 0316 302A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;
+0061 059A 0316 302A 035A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;
+0061 035A 059A 0316 302A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;
+0061 0315 0300 05AE 035B 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;
+0061 035B 0315 0300 05AE 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;
+0061 035D 035C 0315 035C 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 035C 035D 035C 0315 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 0345 035D 035C 035D 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 035D 0345 035D 035C 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 0345 035D 035C 035E 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;
+0061 035E 0345 035D 035C 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;
+0061 035D 035C 0315 035F 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;
+0061 035F 035D 035C 0315 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;
+0061 0345 035D 035C 0360 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;
+0061 0360 0345 035D 035C 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;
+0061 0345 035D 035C 0361 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;
+0061 0361 0345 035D 035C 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;
+0061 035D 035C 0315 0362 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;
+0061 0362 035D 035C 0315 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A2 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;
+0061 05A2 059A 0316 302A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 059A 0316 302A 05C5 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;
+0061 05C5 059A 0316 302A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;
+0061 05B9 05B8 05B7 05C7 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;
+0061 05C7 05B9 05B8 05B7 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;
+0061 0315 0300 05AE 0610 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;
+0061 0610 0315 0300 05AE 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;
+0061 0315 0300 05AE 0611 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;
+0061 0611 0315 0300 05AE 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;
+0061 0315 0300 05AE 0612 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;
+0061 0612 0315 0300 05AE 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;
+0061 0315 0300 05AE 0613 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;
+0061 0613 0315 0300 05AE 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;
+0061 0315 0300 05AE 0614 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;
+0061 0614 0315 0300 05AE 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;
+0061 0315 0300 05AE 0615 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;
+0061 0615 0315 0300 05AE 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 059A 0316 302A 0656 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;
+0061 0656 059A 0316 302A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;
+0061 0315 0300 05AE 0657 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;
+0061 0657 0315 0300 05AE 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;
+0061 0315 0300 05AE 0658 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;
+0061 0658 0315 0300 05AE 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;
+0061 0315 0300 05AE 0659 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;
+0061 0659 0315 0300 05AE 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;
+0061 0315 0300 05AE 065A 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;
+0061 065A 0315 0300 05AE 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;
+0061 0315 0300 05AE 065B 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;
+0061 065B 0315 0300 05AE 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;
+0061 059A 0316 302A 065C 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;
+0061 065C 059A 0316 302A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;
+0061 0315 0300 05AE 065D 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;
+0061 065D 0315 0300 05AE 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;
+0061 0315 0300 05AE 065E 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;
+0061 065E 0315 0300 05AE 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 3099 093C 0334 0CBC 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;
+0061 0CBC 3099 093C 0334 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 0315 0300 05AE 135F 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;
+0061 135F 0315 0300 05AE 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0315 0300 05AE 17DD 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;
+0061 17DD 0315 0300 05AE 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 302E 059A 0316 1939 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;
+0061 1939 302E 059A 0316 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;
+0061 0315 0300 05AE 193A 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;
+0061 193A 0315 0300 05AE 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;
+0061 059A 0316 302A 193B 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;
+0061 193B 059A 0316 302A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;
+0061 0315 0300 05AE 1A17 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;
+0061 1A17 0315 0300 05AE 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;
+0061 059A 0316 302A 1A18 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;
+0061 1A18 059A 0316 302A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;
+0061 0315 0300 05AE 1DC0 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;
+0061 1DC0 0315 0300 05AE 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;
+0061 0315 0300 05AE 1DC1 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;
+0061 1DC1 0315 0300 05AE 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;
+0061 059A 0316 302A 1DC2 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;
+0061 1DC2 059A 0316 302A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;
+0061 0315 0300 05AE 1DC3 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;
+0061 1DC3 0315 0300 05AE 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 093C 0334 20EB 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;
+0061 20EB 093C 0334 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 035C 0315 0300 302C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;
+0061 302C 035C 0315 0300 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 05B0 094D 3099 A806 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;
+0061 A806 05B0 094D 3099 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 059A 0316 302A 10A0D 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;
+0061 10A0D 059A 0316 302A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;
+0061 0315 0300 05AE 10A0F 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;
+0061 10A0F 0315 0300 05AE 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;
+0061 0315 0300 05AE 10A38 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;
+0061 10A38 0315 0300 05AE 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;
+0061 093C 0334 10A39 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;
+0061 10A39 093C 0334 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;
+0061 059A 0316 302A 10A3A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;
+0061 10A3A 059A 0316 302A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;
+0061 05B0 094D 3099 10A3F 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;
+0061 10A3F 05B0 094D 3099 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+0061 0315 0300 05AE 1D242 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;
+0061 1D242 0315 0300 05AE 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;
+0061 0315 0300 05AE 1D243 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;
+0061 1D243 0315 0300 05AE 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;
+0061 0315 0300 05AE 1D244 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;
+0061 1D244 0315 0300 05AE 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;
+#
+@Part3 # PRI #29 Test
+#
+09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;
+09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;
+0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;
+0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;
+0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;
+0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;
+0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;
+0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;
+0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;
+0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;
+0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;
+0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;
+0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;
+0CCA 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;
+0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;
+0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;
+0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;
+0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;
+0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;
+0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;
+0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;
+0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;
+0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;
+0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;
+0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;
+0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;
+0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;
+0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;
+0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;
+0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;
+0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;
+1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;
+1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;
+1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;
+1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;
+1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;
+1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;
+1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;
+1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;
+1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;
+1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;
+1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;
+1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;
+1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;
+1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;
+1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;
+1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;
+1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;
+1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;
+110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;
+110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;
+110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;
+110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;
+110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;
+110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;
+110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;
+110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;
+110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;
+1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;
+1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;
+1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;
+1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;
+1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;
+AC54 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;
+ACA8 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;
+ACFC 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;
+ADC0 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;
+AE14 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;
+AE68 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;
+AF2C 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;
+AF80 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;
+AFD4 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;
+B098 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;
+B0EC 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;
+B140 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;
+B204 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;
+B258 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;
+B2AC 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;
+B370 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;
+B3C4 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;
+B418 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;
+B4DC 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;
+B530 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;
+B584 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;
+B648 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;
+B69C 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;
+B6F0 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;
+B7B4 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;
+B808 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;
+B85C 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;
+B920 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;
+B974 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;
+B9C8 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;
+BA8C 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;
+BAE0 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;
+BB34 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;
+BBF8 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;
+BC4C 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;
+BCA0 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;
+BD64 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;
+BDB8 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;
+BE0C 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;
+BED0 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;
+BF24 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;
+BF78 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;
+C03C 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;
+C090 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;
+C0E4 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;
+C1A8 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;
+C1FC 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;
+C250 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;
+C314 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;
+C368 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;
+C3BC 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;
+C480 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;
+C4D4 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;
+C528 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;
+C5EC 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;
+C640 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;
+C694 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;
+C758 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;
+C7AC 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;
+C800 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;
+C8C4 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;
+C918 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;
+C96C 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;
+CA30 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;
+CA84 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;
+CAD8 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;
+CB9C 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;
+CBF0 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;
+CC44 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;
+CD08 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;
+CD5C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;
+CDB0 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;
+CE74 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;
+CEC8 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;
+CF1C 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;
+CFE0 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;
+D034 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;
+D088 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;
+D14C 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;
+D1A0 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;
+D1F4 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;
+D2B8 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;
+D30C 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;
+D360 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;
+D424 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;
+D478 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;
+D4CC 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;
+D590 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;
+D5E4 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;
+D638 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;
+D6FC 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;
+D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;
+#
+# END OF FILE
diff --git a/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
new file mode 100644
index 0000000..11a5b1d
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
@@ -0,0 +1,260 @@
+# SpecialCasing-4.1.0.txt
+# Date: 2005-03-26, 00:35:45 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# 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 locale IDs
+# 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 ID is defined by taking any language tag as defined by
+# RFC 3066 (or its successor), and replacing '-' by '_'.
+#
+# A context for a character C is defined by Section 3.13 Default Case Operations,
+# on p. 89-90 of The Unicode Standard, Version 4.0, as amended by Unicode 4.1.0,
+# as specified in http://www.unicode.org/versions/Unicode4.1.0/
+#
+# 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 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/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
new file mode 100644
index 0000000..77db788
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
@@ -0,0 +1,19336 @@
+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;ES;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;CS;;;;;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;BN;;;;;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;;0243;;0243
+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;;023D;;023D
+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;;;;;
+0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
+0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
+0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
+023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
+023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
+023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
+023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
+023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
+023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
+0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
+0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
+0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
+0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
+0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
+0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
+0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
+0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
+024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
+024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
+024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
+024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
+024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
+024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
+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;;;2C62;;2C62
+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;;2C6E;;2C6E
+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;;2C64;;2C64
+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;;;0244;;0244
+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;;;0245;;0245
+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;Lo;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;Lm;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;;;;;
+0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
+0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
+035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
+035C;COMBINING DOUBLE BREVE BELOW;Mn;233;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;;;;;
+0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
+0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
+0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
+0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
+0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
+0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
+037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
+037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
+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
+03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
+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;;;03CF;;03CF
+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
+03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
+03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
+03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
+03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
+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;;;;
+0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
+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;;;04CF;
+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
+04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
+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
+04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
+04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
+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
+04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
+04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
+04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
+04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
+04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
+04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
+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
+0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
+0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
+0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
+0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
+0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
+0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
+0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
+0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
+0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
+0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
+051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
+051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
+051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
+051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
+051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
+051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
+0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
+0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
+0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
+0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
+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;;;;;
+05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;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;;;;;
+05BA;HEBREW POINT HOLAM HASER FOR VAV;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;Pd;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;;;;;
+05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
+05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
+05C7;HEBREW POINT QAMATS QATAN;Mn;18;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;AN;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
+0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
+0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
+0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
+0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+060B;AFGHANI SIGN;Sc;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;;;;;
+0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
+0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
+0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
+0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
+061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061E;ARABIC TRIPLE DOT PUNCTUATION MARK;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;;;;;
+063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;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;;;;;
+0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
+065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
+065E;ARABIC FATHA WITH TWO DOTS;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;AN;;;;;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;;;;;
+0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
+0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
+075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
+075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
+0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
+076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
+076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
+076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
+077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;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;;;;;
+07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
+07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
+07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
+07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
+07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
+07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
+07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
+07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
+07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
+07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
+07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
+07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
+07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
+07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
+07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
+07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
+07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
+07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
+07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
+07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
+07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
+07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
+07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
+07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
+07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
+07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
+07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
+07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
+07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
+07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
+07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
+07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
+07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
+07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
+07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
+07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
+07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
+07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
+07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
+07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
+07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
+07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
+07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
+07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
+07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
+07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
+07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+07FA;NKO LAJANYALAN;Lm;0;R;;;;;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;;;;;
+0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
+0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
+097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
+097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
+097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
+097F;DEVANAGARI LETTER BBA;Lo;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;;;;;
+09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;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;;;;;
+0A51;GURMUKHI SIGN UDAAT;Mn;0;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;;;;;
+0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;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;;;;;
+0B44;ORIYA VOWEL SIGN VOCALIC RR;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;;;;;
+0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0BB6;TAMIL LETTER SHA;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;;;;;
+0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;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;;;;;
+0C3D;TELUGU SIGN AVAGRAHA;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;;;;;
+0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
+0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
+0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;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;;;;;
+0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
+0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;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;;;;;
+0D3D;MALAYALAM SIGN AVAGRAHA;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;;;;;
+0D44;MALAYALAM VOWEL SIGN VOCALIC RR;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;;;;;
+0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
+0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
+0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
+0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
+0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
+0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
+0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
+0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
+0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
+0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;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;;;;;Y;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;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;;*;;;
+0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
+0F6C;TIBETAN LETTER RRA;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;;;
+0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;;
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;;
+0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;;
+0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;;
+0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;;
+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;;;;;
+1022;MYANMAR LETTER SHAN 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;;;;;
+1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102B;MYANMAR VOWEL SIGN TALL AA;Mc;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;;;;;
+1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
+1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
+1035;MYANMAR VOWEL SIGN E ABOVE;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;;;;;
+103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
+103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
+103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
+103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;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;;;;;
+105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
+105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
+105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
+105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
+105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
+105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
+1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
+1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
+1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
+1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
+1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
+1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
+1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
+1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
+1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
+1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
+106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
+106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
+106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
+106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
+106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
+106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
+1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
+1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
+1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
+1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
+1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
+1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
+1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
+1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
+1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
+1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
+107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
+107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
+107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
+107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
+107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
+107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
+1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
+1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
+1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
+1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
+1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
+1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
+1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
+1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
+108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
+108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
+108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
+108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
+108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
+108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
+1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
+109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25;
+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;;;;;
+10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
+10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;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;;;;;
+1207;ETHIOPIC SYLLABLE HOA;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;;;;;
+1247;ETHIOPIC SYLLABLE QOA;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;;;;;
+1287;ETHIOPIC SYLLABLE XOA;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;;;;;
+12AF;ETHIOPIC SYLLABLE KOA;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;;;;;
+12CF;ETHIOPIC SYLLABLE WOA;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;;;;;
+12EF;ETHIOPIC SYLLABLE YOA;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;;;;;
+130F;ETHIOPIC SYLLABLE GOA;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;;;;;
+131F;ETHIOPIC SYLLABLE GGWAA;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;;;;;
+1347;ETHIOPIC SYLLABLE TZOA;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;;;;;
+135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+1360;ETHIOPIC SECTION MARK;So;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;No;0;L;;;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;No;0;L;;;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;;;;;
+1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
+1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
+1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
+1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
+1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
+1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
+1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
+1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
+1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
+1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
+138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
+138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
+138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
+138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
+138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
+138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
+1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
+1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
+1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
+1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
+1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
+1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
+1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
+1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
+1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
+1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;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;;;;;Y;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
+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;;;;;
+18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;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;L;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;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;;;;;
+1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
+1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
+1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
+1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
+1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
+1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
+1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
+1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
+1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
+1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
+198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
+198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
+198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
+198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
+198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
+198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
+1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
+1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
+1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
+1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
+1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
+1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
+1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
+1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
+1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
+1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
+199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
+199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
+199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
+199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
+199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
+199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
+19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
+19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
+19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
+19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
+19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
+19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
+19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
+19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
+19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
+19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
+19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
+19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
+19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
+19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
+19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
+19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
+19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
+19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
+19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
+19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
+19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
+19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
+19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
+19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
+19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
+19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
+19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
+19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;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;;;;;
+1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
+1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
+1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
+1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
+1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
+1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
+1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
+1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
+1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;;
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;;
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;;
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;;
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;;
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;;
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;;
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;;
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;;
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;;
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;;
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;;
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;;
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;;
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;;
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;;
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;;
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;;
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;;
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;;
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;;
+1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;;
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;;
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;;
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;;
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;;
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;;
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;;
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;;
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;;
+1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;;
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;;
+1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;;
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;;
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;;
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;;
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;;
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;;
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;;
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;;
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;;
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;;
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;;
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;;
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;;
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;;
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;;
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;;
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;;
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;;
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;;
+1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
+1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
+1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
+1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
+1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
+1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
+1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;;
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;;
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;;
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;;
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;;
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;;
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;;
+1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
+1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
+1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
+1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
+1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
+1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
+1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
+1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
+1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
+1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
+1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
+1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
+1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
+1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
+1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
+1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
+1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
+1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
+1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
+1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
+1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
+1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
+1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
+1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
+1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
+1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
+1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
+1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
+1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
+1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
+1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
+1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
+1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
+1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
+1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
+1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
+1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
+1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
+1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
+1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
+1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
+1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
+1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
+1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
+1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
+1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
+1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
+1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
+1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
+1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
+1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
+1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
+1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
+1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
+1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
+1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
+1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
+1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
+1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
+1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
+1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
+1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
+1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
+1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
+1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
+1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
+1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
+1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
+1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
+1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
+1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
+1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
+1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
+1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
+1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
+1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
+1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
+1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
+1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
+1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
+1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
+1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
+1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
+1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
+1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
+1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
+1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
+1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
+1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
+1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
+1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
+1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
+1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
+1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
+1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
+1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
+1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
+1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
+1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
+1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
+1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
+1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
+1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
+1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
+1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
+1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
+1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
+1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
+1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
+1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
+1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
+1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
+1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
+1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
+1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
+1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
+1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
+1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
+1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
+1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
+1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
+1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
+1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
+1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
+1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
+1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
+1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
+1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
+1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
+1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;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;;;;;
+1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
+1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
+1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
+1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
+1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
+1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
+1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
+1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
+1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
+1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
+1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
+1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
+1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
+1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
+1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
+1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
+1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
+1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
+1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
+1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
+1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
+1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
+1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
+1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
+1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
+1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
+1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
+1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
+1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
+1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
+1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
+1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
+1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;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
+1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
+1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
+1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
+1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
+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
+1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
+1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
+1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
+1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
+1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
+1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
+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;Cf;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;CS;<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;CS;;;;;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;;;;;
+2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
+2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
+205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
+205D;TRICOLON;Po;0;ON;;;;;N;;;;;
+205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;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;;;;;
+2064;INVISIBLE PLUS;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;ES;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<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;ES;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ES;<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;;;;
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
+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;;;;;
+20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
+20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
+20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
+20B5;CEDI 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;;;;;
+20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20F0;COMBINING ASTERISK ABOVE;Mn;230;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;Lu;0;L;;;;;N;TURNED F;;;214E;
+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;;;;;
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;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;;;;;
+214C;PER SIGN;So;0;ON;;;;;N;;;;;
+214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
+214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
+214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;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;Lu;0;L;;;;;N;;;;2184;
+2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
+2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
+2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
+2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
+2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;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;ES;;;;;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;So;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;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;;;;;
+23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
+23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
+23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
+23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
+23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
+23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
+23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
+23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
+23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
+23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
+23DB;FUSE;So;0;ON;;;;;N;;;;;
+23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
+23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
+23E5;FLATNESS;So;0;ON;;;;;N;;;;;
+23E6;AC CURRENT;So;0;ON;;;;;N;;;;;
+23E7;ELECTRICAL INTERSECTION;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;ON;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<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;ON;<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;;;;;
+2618;SHAMROCK;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;;;;;
+267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
+267F;WHEELCHAIR 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;;;;;
+2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
+2693;ANCHOR;So;0;ON;;;;;N;;;;;
+2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
+2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
+2696;SCALES;So;0;ON;;;;;N;;;;;
+2697;ALEMBIC;So;0;ON;;;;;N;;;;;
+2698;FLOWER;So;0;ON;;;;;N;;;;;
+2699;GEAR;So;0;ON;;;;;N;;;;;
+269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
+269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
+269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
+269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
+26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
+26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
+26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
+26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
+26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
+26B0;COFFIN;So;0;ON;;;;;N;;;;;
+26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
+26B2;NEUTER;So;0;ON;;;;;N;;;;;
+26B3;CERES;So;0;ON;;;;;N;;;;;
+26B4;PALLAS;So;0;ON;;;;;N;;;;;
+26B5;JUNO;So;0;ON;;;;;N;;;;;
+26B6;VESTA;So;0;ON;;;;;N;;;;;
+26B7;CHIRON;So;0;ON;;;;;N;;;;;
+26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
+26B9;SEXTILE;So;0;ON;;;;;N;;;;;
+26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
+26BB;QUINCUNX;So;0;ON;;;;;N;;;;;
+26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
+26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C3;BLACK DRAUGHTS KING;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;;;;
+27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
+27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
+27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
+27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
+27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
+27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
+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;;;;;
+27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;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;L;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;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;;;;;
+2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
+2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;
+2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
+2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
+2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
+2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
+2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
+2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
+2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
+2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
+2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
+2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
+2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
+2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
+2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
+2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
+2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
+2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
+2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
+2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
+2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
+2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
+2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
+2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
+2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
+2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
+2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
+2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
+2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
+2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
+2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
+2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
+2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
+2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
+2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
+2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
+2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
+2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
+2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
+2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
+2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
+2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
+2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
+2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
+2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
+2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
+2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
+2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
+2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
+2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
+2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
+2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
+2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
+2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
+2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
+2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
+2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
+2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
+2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
+2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
+2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
+2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
+2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
+2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
+2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
+2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
+2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
+2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
+2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
+2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
+2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
+2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
+2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
+2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
+2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
+2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
+2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
+2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
+2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
+2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
+2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
+2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
+2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
+2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
+2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
+2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
+2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
+2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
+2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
+2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
+2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
+2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
+2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
+2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
+2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
+2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
+2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
+2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
+2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
+2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
+2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
+2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
+2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
+2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
+2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
+2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
+2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
+2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
+2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
+2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
+2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
+2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
+2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
+2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
+2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
+2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
+2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
+2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
+2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
+2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
+2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
+2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
+2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
+2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
+2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
+2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
+2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
+2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
+2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
+2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
+2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
+2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
+2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
+2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
+2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
+2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
+2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
+2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
+2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
+2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
+2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
+2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
+2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
+2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
+2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
+2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
+2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
+2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
+2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
+2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
+2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
+2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
+2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
+2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
+2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
+2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
+2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
+2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
+2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
+2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
+2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
+2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
+2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
+2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
+2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
+2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
+2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
+2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
+2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
+2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
+2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
+2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
+2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
+2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
+2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
+2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
+2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
+2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
+2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
+2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
+2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
+2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
+2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
+2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
+2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
+2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
+2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
+2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
+2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
+2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
+2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
+2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
+2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
+2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
+2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
+2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
+2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
+2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
+2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
+2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
+2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
+2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
+2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
+2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
+2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
+2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
+2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
+2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
+2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
+2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
+2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
+2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
+2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
+2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
+2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
+2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
+2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
+2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
+2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
+2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
+2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
+2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
+2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
+2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
+2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
+2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
+2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
+2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
+2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
+2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
+2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
+2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
+2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
+2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
+2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
+2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
+2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
+2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
+2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
+2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
+2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
+2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5
+2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
+2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
+2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
+2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
+2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
+2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
+2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
+2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
+2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
+2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
+2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
+2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
+2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
+2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
+2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
+2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
+2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;;
+2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
+2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
+2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
+2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
+2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
+2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
+2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
+2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
+2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
+2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
+2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
+2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
+2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
+2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
+2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
+2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
+2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
+2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
+2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;;
+2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
+2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
+2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
+2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
+2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;;
+2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
+2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
+2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
+2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
+2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
+2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
+2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
+2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
+2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
+2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
+2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
+2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;;
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;;
+2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
+2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
+2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
+2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
+2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
+2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
+2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
+2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
+2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
+2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
+2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
+2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
+2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
+2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
+2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
+2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
+2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
+2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
+2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
+2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
+2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
+2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
+2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
+2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
+2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
+2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
+2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
+2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
+2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
+2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
+2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
+2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
+2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
+2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
+2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
+2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
+2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
+2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
+2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
+2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
+2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
+2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
+2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
+2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
+2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
+2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
+2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
+2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
+2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
+2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
+2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
+2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
+2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
+2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
+2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
+2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
+2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
+2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
+2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
+2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
+2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
+2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
+2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
+2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
+2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
+2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
+2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
+2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
+2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
+2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
+2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
+2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
+2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
+2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
+2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
+2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
+2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
+2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
+2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
+2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
+2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
+2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
+2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
+2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
+2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
+2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
+2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
+2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
+2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
+2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
+2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
+2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
+2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
+2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
+2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
+2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
+2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
+2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
+2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
+2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
+2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
+2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
+2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
+2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
+2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
+2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
+2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
+2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
+2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
+2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
+2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
+2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
+2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
+2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
+2E30;RING POINT;Po;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;Po;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;;;;;
+312D;BOPOMOFO LETTER IH;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;;;;;
+31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
+31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
+31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
+31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
+31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
+31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
+31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
+31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
+31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
+31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
+31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
+31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
+31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
+31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
+31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
+31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
+31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
+31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
+31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
+31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
+31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
+31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
+31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
+31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
+31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
+31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
+31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
+31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
+31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
+31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
+31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
+31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
+31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
+31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
+31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
+31E3;CJK STROKE Q;So;0;ON;;;;;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;;;;;
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;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;;;;;
+9FC3;<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;Lm;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;;;;;
+A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
+A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
+A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
+A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
+A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
+A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
+A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
+A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
+A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
+A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
+A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
+A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
+A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
+A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
+A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
+A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
+A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
+A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
+A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
+A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
+A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
+A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
+A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
+A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
+A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
+A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
+A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
+A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
+A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
+A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
+A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
+A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
+A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
+A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
+A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
+A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
+A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
+A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
+A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
+A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
+A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
+A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
+A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
+A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
+A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
+A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
+A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
+A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
+A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
+A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
+A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
+A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
+A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
+A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
+A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
+A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
+A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
+A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
+A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
+A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
+A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
+A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
+A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
+A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
+A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
+A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
+A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
+A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
+A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
+A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
+A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
+A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
+A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
+A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
+A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
+A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
+A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
+A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
+A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
+A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
+A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
+A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
+A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
+A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
+A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
+A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
+A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
+A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
+A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
+A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
+A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
+A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
+A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
+A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
+A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
+A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
+A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
+A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
+A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
+A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
+A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
+A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
+A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
+A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
+A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
+A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
+A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
+A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
+A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
+A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
+A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
+A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
+A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
+A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
+A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
+A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
+A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
+A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
+A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
+A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
+A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
+A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
+A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
+A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
+A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
+A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
+A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
+A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
+A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
+A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
+A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
+A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
+A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
+A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
+A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
+A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
+A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
+A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
+A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
+A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
+A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
+A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
+A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
+A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
+A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
+A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
+A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
+A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
+A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
+A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
+A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
+A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
+A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
+A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
+A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
+A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
+A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
+A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
+A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
+A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
+A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
+A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
+A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
+A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
+A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
+A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
+A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
+A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
+A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
+A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
+A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
+A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
+A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
+A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
+A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
+A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
+A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
+A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
+A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
+A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
+A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
+A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
+A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
+A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
+A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
+A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
+A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
+A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
+A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
+A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
+A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
+A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
+A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
+A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
+A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
+A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
+A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
+A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
+A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
+A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
+A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
+A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
+A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
+A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
+A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
+A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
+A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
+A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
+A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
+A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
+A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
+A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
+A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
+A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
+A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
+A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
+A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
+A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
+A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
+A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
+A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
+A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
+A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
+A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
+A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
+A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
+A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
+A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
+A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
+A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
+A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
+A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
+A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
+A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
+A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
+A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
+A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
+A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
+A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
+A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
+A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
+A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
+A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
+A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
+A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
+A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
+A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
+A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
+A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
+A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
+A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
+A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
+A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
+A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
+A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
+A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
+A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
+A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
+A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
+A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
+A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
+A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
+A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
+A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
+A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
+A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
+A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
+A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
+A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
+A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
+A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
+A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
+A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
+A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
+A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
+A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
+A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
+A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
+A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
+A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
+A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
+A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
+A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
+A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
+A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
+A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
+A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
+A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
+A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
+A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
+A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
+A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
+A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
+A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
+A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
+A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
+A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
+A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
+A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
+A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
+A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
+A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
+A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
+A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
+A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
+A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
+A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
+A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
+A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
+A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
+A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
+A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
+A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
+A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
+A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
+A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
+A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
+A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
+A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
+A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
+A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
+A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
+A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
+A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
+A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
+A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
+A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
+A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
+A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
+A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
+A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
+A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
+A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
+A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
+A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
+A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
+A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
+A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
+A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
+A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
+A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
+A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
+A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
+A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;
+A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
+A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
+A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
+A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
+A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
+A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
+A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
+A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
+A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
+A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
+A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
+A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
+A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
+A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
+A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
+A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
+A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
+A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
+A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
+A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
+A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
+A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
+A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
+A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
+A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
+A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
+A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
+A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
+A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
+A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
+A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
+A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
+A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
+A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
+A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
+A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
+A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
+A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
+A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
+A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
+A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
+A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
+A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
+A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
+A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
+A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
+A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
+A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
+A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
+A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
+A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
+A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
+A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
+A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
+A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
+A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
+A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
+A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
+A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
+A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
+A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
+A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
+A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
+A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
+A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
+A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
+A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
+A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
+A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
+A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
+A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
+A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
+A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
+A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
+A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
+A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
+A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
+A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
+A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
+A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
+A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
+A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
+A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
+A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
+A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
+A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
+A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
+A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
+A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
+A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
+A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
+A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
+A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
+A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
+A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
+A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
+A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
+A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
+A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
+A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
+A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
+A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
+A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
+A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
+A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
+A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
+A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
+A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
+A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
+A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
+A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
+A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
+A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
+A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
+A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
+A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
+A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
+A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
+A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
+A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
+A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
+A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
+A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
+A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
+A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
+A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
+A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
+A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
+A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
+A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
+A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
+A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
+A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
+A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
+A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
+A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
+A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
+A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
+A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
+A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
+A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
+A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
+A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
+A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
+A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
+A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
+A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
+A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
+A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
+A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
+A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
+A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
+A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
+A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
+A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
+A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
+A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
+A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
+A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
+A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
+A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
+A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
+A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
+A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
+A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
+A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
+A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
+A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
+A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
+A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
+A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
+A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
+A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
+A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
+A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
+A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
+AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
+AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
+AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
+AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
+AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
+AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
+AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
+AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
+AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
+AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
+AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
+AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
+AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
+AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
+AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
+AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
+AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
+AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
+AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
+AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
+AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
+AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
+AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
+AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
+AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
+AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
+AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
+AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
+AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
+AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
+AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
+AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
+AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
+AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
+AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
+AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
+AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
+AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
+AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
+AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
+AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
+AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
+AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
+AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
+AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
+AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
+AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
+AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
+AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
+AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
+AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;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;;;3;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;;;10;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;;;2;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;;;0;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;;;6;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;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;;;10;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;;;;;
+FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
+FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
+FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
+FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
+FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
+FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
+FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
+FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
+FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
+FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
+FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
+FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
+FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
+FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
+FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
+FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
+FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
+FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
+FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
+FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
+FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
+FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
+FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
+FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
+FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
+FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
+FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
+FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
+FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
+FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
+FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
+FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
+FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
+FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
+FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
+FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
+FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
+FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
+FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
+FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
+FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
+FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
+FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
+FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
+FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
+FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
+FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
+FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
+FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
+FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
+FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
+FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
+FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
+FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
+FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
+FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
+FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
+FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
+FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
+FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
+FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
+FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
+FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
+FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
+FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
+FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
+FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
+FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
+FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
+FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
+FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
+FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
+FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
+FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
+FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
+FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
+FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
+FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
+FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
+FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
+FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
+FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
+FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
+FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
+FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
+FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
+FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
+FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
+FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
+FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
+FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
+FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
+FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
+FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
+FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
+FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
+FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
+FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
+FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
+FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
+FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
+FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
+FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
+FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
+FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
+FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;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;ES;<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;;;;;
+FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;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;;;;;
+FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE26;COMBINING CONJOINING MACRON;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;;;;Y;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;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;ES;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
+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;ES;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<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;Po;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;ON;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;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;;;;;
+10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
+10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
+10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
+10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
+10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
+10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
+10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
+10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
+1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
+1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
+1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
+1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
+1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
+1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
+10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
+10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
+10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
+10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
+10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
+10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
+10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
+10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
+10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
+10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
+10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
+10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
+10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
+10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
+1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
+1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
+10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
+10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
+10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
+10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
+10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
+10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
+10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
+1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
+1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
+1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
+1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
+10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
+10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
+10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
+10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
+10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
+10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
+10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
+10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
+1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
+10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
+10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
+10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
+10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
+10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
+10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
+10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
+10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
+1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
+1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
+101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
+101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
+101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
+101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
+101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
+101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
+101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
+101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
+101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
+101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
+101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
+101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
+101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
+101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
+101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
+101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
+101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
+101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
+101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
+101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
+101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
+101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
+101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
+101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
+101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
+101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
+101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
+101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
+101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
+101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
+101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
+101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
+101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
+101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
+101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
+101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
+101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
+101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
+101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
+101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
+101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
+101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
+101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
+101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
+101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
+101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
+10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
+10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
+10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
+10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
+10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
+10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
+10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
+10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
+10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
+10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
+1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
+1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
+1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
+1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
+1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
+10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
+10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
+10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
+10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
+10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
+10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
+10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
+10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
+1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
+1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
+1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
+102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
+102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
+102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
+102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
+102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
+102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
+102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
+102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
+102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
+102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
+102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
+102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
+102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
+102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
+102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
+102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
+102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
+102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
+102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
+102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
+102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
+102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
+102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
+102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
+102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
+102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
+102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
+102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
+102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
+102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
+102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
+102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
+102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
+102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
+102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
+102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
+102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
+102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
+102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
+102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
+102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
+102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
+102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
+102D0;CARIAN LETTER UUU3;Lo;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;Nl;0;L;;;;90;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;;;;900;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;;;;;
+103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
+103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
+103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
+103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
+103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
+103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
+103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
+103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
+103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
+103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
+103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
+103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
+103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
+103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
+103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
+103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
+103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
+103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
+103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
+103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
+103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
+103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
+103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
+103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
+103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
+103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
+103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
+103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
+103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
+103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
+103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
+103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
+103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
+103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
+103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
+103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
+103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
+103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
+103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
+103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
+103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
+103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
+103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
+103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
+103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
+103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
+103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
+103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
+103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;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;;;;;
+10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
+10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
+10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
+10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
+10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
+10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
+10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
+10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
+10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
+1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
+1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
+1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
+1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
+10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
+10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
+10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
+10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
+10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
+10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
+10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
+10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
+10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
+10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
+10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
+10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
+10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
+10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
+10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
+1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
+1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
+1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
+1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
+1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
+1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
+10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
+10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
+10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
+10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
+10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
+10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
+10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
+10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
+10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
+10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
+1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;
+10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
+10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
+10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
+10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
+10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
+10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
+10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
+10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
+10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
+10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
+10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
+10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
+10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
+10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
+10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
+10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
+10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
+10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
+10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
+10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
+10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
+10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
+10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
+10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
+10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
+10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
+10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
+10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
+10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
+10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
+10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
+10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
+10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
+10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
+10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
+10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
+10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
+10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
+10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
+10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
+10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
+10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
+10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
+10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
+10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
+10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
+10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
+10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
+10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
+10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
+10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
+12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
+12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
+12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
+12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
+12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
+12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
+12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
+12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
+1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
+1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
+1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
+12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
+12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
+12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
+12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
+12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
+1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
+1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
+1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
+12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
+12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
+12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
+12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
+12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
+12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
+12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
+12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
+12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
+1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
+1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
+1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
+1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
+1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
+12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
+12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
+12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
+12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
+12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
+12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
+12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
+12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
+12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
+1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
+1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
+1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
+12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
+12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
+12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
+12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
+12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
+12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
+12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
+12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
+12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
+12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
+1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
+1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
+1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
+1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
+1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
+12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
+12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
+12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
+12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
+12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
+12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
+12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
+12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
+12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
+12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
+1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
+1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
+1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
+1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
+12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
+12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
+12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
+12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
+12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
+12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
+12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
+12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
+12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
+1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
+1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
+1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
+1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
+1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
+12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
+12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
+12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
+12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
+12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
+12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
+12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
+12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
+12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
+1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
+1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
+1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
+1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
+1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
+1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
+12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
+12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
+12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
+12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
+12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
+12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
+12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
+1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
+1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
+1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
+1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
+1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
+12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
+12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
+12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
+12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
+12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
+12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
+12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
+1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
+1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
+1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
+1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
+1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
+120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
+120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
+120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
+120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
+120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
+120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
+120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
+120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
+120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
+120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
+120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
+120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
+120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
+120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
+120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
+120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
+120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
+120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
+120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
+120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
+120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
+120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
+120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
+120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
+120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
+120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
+120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
+120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
+120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
+120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
+120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
+120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
+120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
+120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
+120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
+120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
+120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
+120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
+120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
+120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
+120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
+120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
+120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
+120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
+120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
+120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
+120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
+120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
+120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
+120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
+120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
+120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
+120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
+120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
+120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
+120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
+120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
+120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
+120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
+120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
+120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
+120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
+120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
+120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
+12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
+12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
+12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
+12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
+12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
+12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
+12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
+12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
+12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
+12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
+1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
+1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
+1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
+12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
+12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
+12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
+12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
+12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
+12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
+12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
+12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
+1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
+1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
+1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
+12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
+12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
+12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
+12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
+12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
+12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
+12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
+12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
+1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
+1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
+1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
+1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
+1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
+1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
+12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
+12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
+12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
+12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
+12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
+12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
+12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
+1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
+1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
+1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
+1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
+12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
+12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
+12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
+12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
+12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
+12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
+12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
+12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
+12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
+12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
+1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
+1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
+1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
+1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
+1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
+12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
+12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
+12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
+12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
+12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
+12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
+12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
+12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
+12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
+1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
+1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
+1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
+1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
+12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
+12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
+12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
+12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
+12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
+12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
+12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
+1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
+1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
+1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
+1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
+1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
+12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
+12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
+12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
+12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
+12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
+12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
+12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
+12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
+12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
+12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
+1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
+1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
+1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
+1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
+1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
+1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
+12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
+12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
+12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
+12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
+12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
+12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
+12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
+12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
+12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
+12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
+1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
+1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
+1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
+1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
+1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
+12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
+12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
+12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
+12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
+12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
+12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
+12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
+12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
+12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
+1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
+1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
+1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
+1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
+121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
+121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
+121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
+121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
+121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
+121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
+121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
+121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
+121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
+121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
+121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
+121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
+121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
+121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
+121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
+121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
+121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
+121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
+121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
+121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
+121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
+121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
+121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
+121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
+121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
+121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
+121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
+121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
+121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
+121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
+121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
+121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
+121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
+121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
+121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
+121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
+121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
+121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
+121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
+121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
+121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
+121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
+121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
+121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
+121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
+121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
+121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
+121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
+121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
+121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
+121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
+121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
+121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
+121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
+121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
+121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
+121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
+121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
+121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
+121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
+121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
+121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
+121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
+121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
+121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
+121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
+121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
+121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
+121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
+121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
+121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
+121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
+121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
+121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
+121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
+121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
+121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
+121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
+121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
+12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
+12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
+12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
+12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
+1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
+1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
+12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
+12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
+12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
+12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
+12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
+12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
+12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
+12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
+12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
+12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
+1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
+1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
+1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
+1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
+1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
+1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
+12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
+12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
+12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
+12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
+12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
+12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
+12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
+12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
+1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
+1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
+1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
+1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
+1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
+1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
+12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
+12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
+12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
+12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
+12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
+12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
+12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
+12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
+1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
+1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
+1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
+1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
+1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
+1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
+12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
+12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
+12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
+12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
+12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
+12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
+12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
+12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
+12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
+12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
+1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
+1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
+1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
+1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
+1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
+1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
+12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
+12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
+1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
+12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
+12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
+12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
+12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
+12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
+12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
+12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
+12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
+1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
+1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
+1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
+1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
+12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
+12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
+12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
+12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
+1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
+1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
+1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
+1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
+1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
+1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
+12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
+12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
+12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
+12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
+12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
+12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
+12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
+12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
+12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
+12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
+1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
+1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
+1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
+1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
+1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
+1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
+12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
+12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
+12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
+12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
+12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
+12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
+12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
+12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
+12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
+12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
+1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
+1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
+1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
+1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
+1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
+1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
+122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
+122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
+122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
+122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
+122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
+122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
+122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
+122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
+122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
+122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
+122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
+122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
+122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
+122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
+122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
+122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
+122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
+122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
+122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
+122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
+122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
+122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
+122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
+122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
+122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
+122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
+122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
+122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
+122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
+122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
+122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
+122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
+122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
+122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
+122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
+122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
+122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
+122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
+122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
+122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
+122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
+122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
+122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
+122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
+122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
+122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
+122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
+122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
+122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
+122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
+122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
+122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
+122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
+122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
+122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
+122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
+122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
+122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
+122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
+122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
+122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
+122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
+122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
+122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
+122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
+122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
+122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
+122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
+122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
+122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
+122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
+122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
+122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
+122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
+122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
+122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
+122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
+122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
+122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
+122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
+122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
+122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
+122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
+122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
+122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
+122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
+122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
+122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
+122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
+122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
+122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
+12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
+12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
+12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
+12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
+12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
+12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
+12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
+12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
+1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
+1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
+1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
+1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
+1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
+12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
+12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
+12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
+12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
+12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
+12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
+12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
+12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
+12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
+1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
+1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
+1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
+1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
+1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
+12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
+12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
+12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
+12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
+12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
+12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
+12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
+12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
+1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
+1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
+1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
+1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
+12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
+12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
+12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
+12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
+12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
+12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
+12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
+1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
+1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
+1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
+1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
+12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
+12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
+12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
+12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
+12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
+12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
+12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
+12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
+12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
+12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
+1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
+1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
+1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
+1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
+1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
+1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
+12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
+12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
+12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
+12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
+12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
+12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
+12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
+12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
+1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
+1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
+1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
+1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
+1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
+12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
+12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
+12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
+12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
+12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
+12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
+12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
+12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
+12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
+12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
+1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
+1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
+1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
+1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
+1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
+12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
+12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
+12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
+12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
+12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
+12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
+12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
+12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
+12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
+12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
+1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
+1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
+1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
+1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
+1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
+1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
+12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
+12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
+12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
+12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
+12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
+12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
+12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
+12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
+12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
+12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
+1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
+1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
+1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
+1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
+1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
+1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
+12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
+12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
+12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
+12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
+12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
+12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
+12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
+12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
+12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
+1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
+1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
+1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
+1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
+1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
+1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
+12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
+12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
+12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
+12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
+12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
+1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
+1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
+1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
+1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
+1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
+1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
+12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
+12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
+12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
+12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
+12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
+12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
+12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
+12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
+12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
+12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
+1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
+1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
+1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
+1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
+1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
+1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
+12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
+12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
+12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
+12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
+12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
+12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
+12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
+1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
+1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
+1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
+1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
+1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
+1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
+12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
+12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
+12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
+12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
+12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
+12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;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;;;;;
+1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;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;;;;;
+1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
+1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
+1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
+1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
+1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
+1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
+1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
+1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
+1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
+1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
+1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
+1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
+1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
+1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
+1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
+1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
+1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
+1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
+1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
+1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
+1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
+1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
+1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
+1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
+1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
+1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
+1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
+1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
+1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
+1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;;
+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;;;;;
+1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
+1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
+1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
+1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
+1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
+1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
+1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
+1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
+1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
+1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
+1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
+1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
+1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
+1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
+1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
+1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;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;;;;;
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;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;;;;Y;;;;;
+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;;;;Y;;;;;
+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;;;;Y;;;;;
+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;;;;Y;;;;;
+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;;;;Y;;;;;
+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;;;;;
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;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;;;;;
+1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
+1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
+1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
+1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
+1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
+1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
+1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
+1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
+1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
+1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
+1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
+1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
+1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
+1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
+1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
+1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
+1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
+1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
+1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
+1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
+1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
+1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
+1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
+1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
+1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
+1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
+1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
+1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
+1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
+1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
+1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
+1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
+1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
+1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
+1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
+1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
+1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
+1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
+1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
+1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
+1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
+1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
+1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
+1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
+1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
+1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
+1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
+1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
+1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
+1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
+1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
+1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
+1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
+1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
+1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
+1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
+1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
+1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
+1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
+1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
+1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
+1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
+1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
+1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
+1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
+1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
+1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
+1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
+1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
+1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
+1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
+1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
+1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
+1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
+1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
+1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
+1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
+1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
+1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
+1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
+1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
+1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
+1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
+1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
+1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
+1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
+1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
+1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
+1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
+1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
+1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
+1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
+1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
+1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
+1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
+1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
+1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
+1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
+1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
+1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
+1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
+1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
+1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
+1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
+1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
+1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
+1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
+1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
+1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
+1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
+1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
+1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
+1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
+1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
+1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
+1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
+1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;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;;;9;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/src/com/ibm/icu/dev/data/unicode/ucdterms.txt b/src/com/ibm/icu/dev/data/unicode/ucdterms.txt
new file mode 100644
index 0000000..7f1ddea
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/ucdterms.txt
@@ -0,0 +1,45 @@
+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 (c) 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 in 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.
diff --git a/src/com/ibm/icu/dev/demo/Launcher.java b/src/com/ibm/icu/dev/demo/Launcher.java
new file mode 100644
index 0000000..2d88044
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/Launcher.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+ * @author srl
+ * Application to provide a panel of demos to launch
+ */
+public class Launcher extends DemoApplet {
+    private static final long serialVersionUID = -8054963875776183877L;
+    
+    /**
+     * base package of all demos
+     */
+    public static final String demoBase = "com.ibm.icu.dev.demo";
+    /**
+     * list of classes, relative to the demoBase. all must have a static void main(String[])
+     */
+    public static final String demoList[] = { 
+        "calendar.CalendarApp",
+        "charsetdet.DetectingViewer",
+        "holiday.HolidayCalendarDemo",
+//        "number.CurrencyDemo", -- console
+//        "rbbi.DBBIDemo",
+//        "rbbi.RBBIDemo",
+//        "rbbi.TextBoundDemo",
+        "rbnf.RbnfDemo",
+//        "timescale.PivotDemo",  -- console
+        "translit.Demo",
+    };
+
+    public class LauncherFrame extends Frame implements ActionListener {
+        private static final long serialVersionUID = -8054963875776183878L;
+        
+        public Button buttonList[] = new Button[demoList.length]; // one button for each demo
+        public Label statusLabel;
+        private DemoApplet applet;
+        
+        LauncherFrame(DemoApplet applet) {
+            init();
+            this.applet = applet;
+        }
+        
+        public void init() {
+            // close down when close is clicked.
+            // TODO: this should be factored..
+            addWindowListener(
+                    new WindowAdapter() {
+                        public void windowClosing(WindowEvent e) {
+                            setVisible(false);
+                            dispose();
+
+                            if (applet != null) {
+                                applet.demoClosed();
+                            } else System.exit(0);
+                        }
+                    } );
+
+            setBackground(DemoUtility.bgColor);
+            setLayout(new BorderLayout());
+
+            Panel topPanel = new Panel();
+            topPanel.setLayout(new GridLayout(5,3));
+
+            for(int i=0;i<buttonList.length;i++) {
+                String demo = demoList[i];
+                Button b = new Button(demo);
+                b.addActionListener(this);
+                buttonList[i]=b;
+                topPanel.add(b);
+            }
+            add(BorderLayout.CENTER,topPanel);
+            statusLabel = new Label("");
+            statusLabel.setAlignment(Label.LEFT);
+            String javaVersion = "";
+            try { 
+                javaVersion = "* Java: "+System.getProperty("java.version");
+            } catch (Throwable t) {
+                javaVersion = "";
+            }
+            add(BorderLayout.NORTH, new Label(
+                   "ICU Demos * ICU version "+VersionInfo.ICU_VERSION +
+                   " * http://icu-project.org "+javaVersion));
+            add(BorderLayout.SOUTH,statusLabel);
+            // set up an initial status.
+            showStatus(buttonList.length+" demos ready. ");
+        }
+        
+        /**
+         * Change the 'status' field, and set it to black
+         * @param status
+         */
+        void showStatus(String status) {
+            statusLabel.setText(status);
+            statusLabel.setForeground(Color.BLACK);
+            statusLabel.setBackground(Color.WHITE);
+//            statusLabel.setFont(Font.PLAIN);
+            doLayout();
+        }
+        void showStatus(String demo, String status) {
+            showStatus(demo+": "+status);
+        }
+        void showFailure(String status) {
+            statusLabel.setText(status);
+            statusLabel.setBackground(Color.GRAY);
+            statusLabel.setForeground(Color.RED);
+//            statusLabel.setFont(Font.BOLD);
+            doLayout();
+        }
+        void showFailure(String demo, String status) {
+            showFailure(demo+": "+status);
+        }
+
+        
+        public void actionPerformed(ActionEvent e) {
+            // find button
+            for(int i=0;i<buttonList.length;i++) {
+                if(e.getSource() == buttonList[i]) {
+                    String demoShort = demoList[i];
+                    String demo = demoBase+'.'+demoShort;
+                    showStatus(demoShort, "launching");
+                    try {
+                        Class c = Class.forName(demo);
+                        String args[] = new String[0];
+                        Class params[] = new Class[1];
+                        params[0] = args.getClass();
+                        Method m = c.getMethod("main", params );
+                        Object[] argList = { args };
+                        m.invoke(null, argList);
+                        showStatus(demoShort, "launched.");
+                    } catch (ClassNotFoundException e1) {
+                        showFailure(demoShort,e1.toString());
+                        e1.printStackTrace();
+                    } catch (SecurityException se) {
+                        showFailure(demoShort,se.toString());
+                        se.printStackTrace();
+                    } catch (NoSuchMethodException nsme) {
+                        showFailure(demoShort,nsme.toString());
+                        nsme.printStackTrace();
+                    } catch (IllegalArgumentException iae) {
+                        showFailure(demoShort,iae.toString());
+                        iae.printStackTrace();
+                    } catch (IllegalAccessException iae) {
+                        showFailure(demoShort,iae.toString());
+                        iae.printStackTrace();
+                    } catch (InvocationTargetException ite) {
+                        showFailure(demoShort,ite.toString());
+                        ite.printStackTrace();
+                    }
+                    repaint();
+                }
+            }
+        }
+
+    }
+    
+    /* This creates a Frame for the demo applet. */
+    protected Frame createDemoFrame(DemoApplet applet) {
+        return new LauncherFrame(applet);
+    }
+
+    /**
+     * The main function which defines the behavior of the Demo
+     * applet when an applet is started.
+     */
+    public static void main(String[] args) {
+        new Launcher().showDemo();
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
new file mode 100644
index 0000000..5b7d76c
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Frame;
+
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * CalendarApp demonstrates how Calendar works.
+ */
+public class CalendarApp extends DemoApplet
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -4270137898405840825L;
+
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new CalendarApp().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
new file mode 100644
index 0000000..ff9a75b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
@@ -0,0 +1,595 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Choice;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.TextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowEvent;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import javax.swing.JTextField;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * CalendarCalc demonstrates how Date/Time formatter works.
+ */
+public class CalendarCalc extends DemoApplet
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4540103433916539296L;
+
+    /**
+     * The main function which defines the behavior of the MultiCalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+        new CalendarCalc().showDemo();
+    }
+
+    /**
+     * This creates a CalendarCalcFrame for the demo applet.
+     */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarCalcFrame(applet);
+    }
+}
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarCalcFrame class defines the window layout of
+ * MultiCalendarDemo.
+ */
+class CalendarCalcFrame extends Frame implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8901485296258761846L;
+
+    static final Locale[] locales = DemoUtility.getG7Locales();
+
+    private DemoApplet              applet;
+    private long                    time = System.currentTimeMillis();
+
+    private static final RollAddField kRollAddFields[] = {
+        new RollAddField(Calendar.YEAR,                 "Year" ),
+        new RollAddField(Calendar.MONTH,                "Month" ),
+        new RollAddField(Calendar.WEEK_OF_MONTH,        "Week of Month" ),
+        new RollAddField(Calendar.WEEK_OF_YEAR,         "Week of Year" ),
+        new RollAddField(Calendar.DAY_OF_MONTH,         "Day of Month" ),
+        new RollAddField(Calendar.DAY_OF_WEEK,          "Day of Week" ),
+        new RollAddField(Calendar.DAY_OF_WEEK_IN_MONTH, "Day of Week in Month" ),
+        new RollAddField(Calendar.DAY_OF_YEAR,          "Day of Year" ),
+        new RollAddField(Calendar.AM_PM,                "AM/PM" ),
+        new RollAddField(Calendar.HOUR_OF_DAY,          "Hour of day" ),
+        new RollAddField(Calendar.HOUR,                 "Hour" ),
+        new RollAddField(Calendar.MINUTE,               "Minute" ),
+        new RollAddField(Calendar.SECOND,               "Second" ),
+    };
+
+    /**
+     * Constructs a new CalendarCalcFrame that is initially invisible.
+     */
+    public CalendarCalcFrame(DemoApplet applet)
+    {
+        super("Multiple Calendar Demo");
+        this.applet = applet;
+        init();
+        start();
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init()
+    {
+        buildGUI();
+
+        patternText.setText( calendars[0].toPattern() );
+
+        // Force an update of the display
+        cityChanged();
+        millisFormat();
+        enableEvents(KeyEvent.KEY_RELEASED);
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+    }
+
+    //------------------------------------------------------------
+    // package private
+    //------------------------------------------------------------
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+    /**
+     * Called to start the applet. You never need to call this method
+     * directly, it is called when the applet's document is visited.
+     */
+    public void start()
+    {
+        // do nothing
+    }
+
+    TextField patternText;
+
+    Choice dateMenu;
+    Choice localeMenu;
+
+    Button up;
+    Button down;
+
+    Checkbox getRoll;
+    Checkbox getAdd;
+
+    public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new FlowLayout()); // shouldn't be necessary, but it is.
+
+// TITLE
+        Label label1=new Label("Calendar Converter", Label.CENTER);
+        label1.setFont(DemoUtility.titleFont);
+        add(label1);
+        add(DemoUtility.createSpacer());
+
+// IO Panel
+        Panel topPanel = new Panel();
+        topPanel.setLayout(new FlowLayout());
+
+        CheckboxGroup group1= new CheckboxGroup();
+
+        // Set up the controls for each calendar we're demonstrating
+        for (int i = 0; i < calendars.length; i++)
+        {
+            Label label = new Label(calendars[i].name, Label.RIGHT);
+            label.setFont(DemoUtility.labelFont);
+            topPanel.add(label);
+
+            topPanel.add(calendars[i].text);
+
+            final int j = i;
+            calendars[i].text.addActionListener( new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    textChanged(j);
+                }
+            } );
+
+            calendars[i].rollAdd.setCheckboxGroup(group1);
+            topPanel.add(calendars[i].rollAdd);
+        }
+        calendars[0].rollAdd.setState(true);    // Make the first one selected
+
+        Label label4=new Label("Pattern", Label.RIGHT);
+        label4.setFont(DemoUtility.labelFont);
+        topPanel.add(label4);
+
+        patternText=new TextField(FIELD_COLUMNS);
+        patternText.setFont(DemoUtility.editFont);
+        topPanel.add(patternText);
+        topPanel.add(new Label(""));
+
+        DemoUtility.fixGrid(topPanel,3);
+        add(topPanel);
+        add(DemoUtility.createSpacer());
+
+// ROLL / ADD
+        Panel rollAddPanel=new Panel();
+        {
+            rollAddPanel.setLayout(new FlowLayout());
+
+            Panel rollAddBoxes = new Panel();
+            {
+                rollAddBoxes.setLayout(new GridLayout(2,1));
+                CheckboxGroup group2= new CheckboxGroup();
+                getRoll = new Checkbox("Roll",group2, false);
+                getAdd = new Checkbox("Add",group2, true);
+
+                rollAddBoxes.add(getRoll);
+                rollAddBoxes.add(getAdd);
+            }
+
+            Label dateLabel=new Label("Date Fields");
+            dateLabel.setFont(DemoUtility.labelFont);
+
+            dateMenu= new Choice();
+            dateMenu.setBackground(DemoUtility.choiceColor);
+            for (int i = 0; i < kRollAddFields.length; i++) {
+                dateMenu.addItem(kRollAddFields[i].name);
+                if (kRollAddFields[i].field == Calendar.MONTH) {
+                    dateMenu.select(i);
+                }
+            }
+
+            Panel upDown = new Panel();
+            {
+                upDown.setLayout(new GridLayout(2,1));
+
+                // *** If the images are not found, we use the label.
+                up = new Button("^");
+                down = new Button("v");
+                up.setBackground(DemoUtility.bgColor);
+                down.setBackground(DemoUtility.bgColor);
+                upDown.add(up);
+                upDown.add(down);
+                up.addActionListener(this);
+                down.addActionListener(this);
+            }
+
+            rollAddPanel.add(dateLabel);
+            rollAddPanel.add(dateMenu);
+            rollAddPanel.add(rollAddBoxes);
+            rollAddPanel.add(upDown);
+
+        }
+        Panel localePanel = new Panel();
+        {
+            // Make the locale popup menus
+            localeMenu= new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    localeMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    localeMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            Label localeLabel =new Label("Display Locale");
+            localeLabel.setFont(DemoUtility.labelFont);
+
+            localePanel.add(localeLabel);
+            localePanel.add(localeMenu);
+            DemoUtility.fixGrid(localePanel,2);
+
+            localeMenu.addItemListener( new ItemListener() {
+                public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[localeMenu.getSelectedIndex()];
+                    System.out.println("Change locale to " + loc.getDisplayName());
+
+                    for (int i = 0; i < calendars.length; i++) {
+                        calendars[i].setLocale(loc);
+                    }
+                    millisFormat();
+                }
+            } );
+        }
+        add(rollAddPanel);
+        add(DemoUtility.createSpacer());
+        add(localePanel);
+        add(DemoUtility.createSpacer());
+
+// COPYRIGHT
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT),
+            DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add(copyrightPanel);
+    }
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void setFormatFromPattern() {
+        String timePattern = patternText.getText();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].applyPattern(timePattern);
+        }
+
+        millisFormat();
+    }
+
+    /**
+     * This function is called when it is necessary to parse the time
+     * string in one of the formatted date fields
+     */
+    public void textChanged(int index) {
+        String rightString = calendars[index].text.getText();
+
+        ParsePosition status = new ParsePosition(0);
+
+        if (rightString.length() == 0)
+        {
+            errorText("Error: no input to parse!");
+            return;
+        }
+
+        try {
+            Date date = calendars[index].format.parse(rightString, status);
+            time = date.getTime();
+        }
+        catch (Exception e) {
+            for (int i = 0; i < calendars.length; i++) {
+                if (i != index) {
+                    calendars[i].text.setText("ERROR");
+                }
+            }
+            errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString);
+            return;
+        }
+
+        int start = calendars[index].text.getSelectionStart();
+        int end = calendars[index].text.getSelectionEnd();
+
+        millisFormat();
+
+        calendars[index].text.select(start,end);
+    }
+
+    /**
+     * This function is called when it is necessary to format the time
+     * in the "Millis" text field.
+     */
+    public void millisFormat() {
+        String out = "";
+
+        for (int i = 0; i < calendars.length; i++) {
+            try {
+                out = calendars[i].format.format(new Date(time));
+                calendars[i].text.setText(out);
+            }
+            catch (Exception e) {
+                calendars[i].text.setText("ERROR");
+                errorText("Exception: " + e.getClass().toString() + " formatting "
+                            + calendars[i].name + " " + time);
+            }
+        }
+    }
+
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void patternTextChanged() {
+        setFormatFromPattern();
+    }
+
+    /**
+     * This function is called when users select a new representative city.
+     */
+    public void cityChanged() {
+        TimeZone timeZone = TimeZone.getDefault();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].format.setTimeZone(timeZone);
+        }
+        millisFormat();
+    }
+
+    /**
+     * This function is called when users select a new time field
+     * to add or roll its value.
+     */
+    public void dateFieldChanged(boolean isUp) {
+        int field = kRollAddFields[dateMenu.getSelectedIndex()].field;
+
+        for (int i = 0; i < calendars.length; i++)
+        {
+            if (calendars[i].rollAdd.getState())
+            {
+                Calendar c = calendars[i].calendar;
+                c.setTime(new Date(time));
+
+                if (getAdd.getState()) {
+                    c.add(field, isUp ? 1 : -1);
+                } else {
+                    c.roll(field, isUp);
+                }
+
+                time = c.getTime().getTime();
+                millisFormat();
+                break;
+            }
+        }
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (true) {
+            System.out.println(s);
+        }
+    }
+    
+    /**
+     * Called if an action occurs in the CalendarCalcFrame object.
+     */
+    public void actionPerformed(ActionEvent evt)
+    {
+        // *** Button events are handled here.
+        Object obj = evt.getSource();
+        System.out.println("action " + obj);
+        if (obj instanceof Button) {
+            if (evt.getSource() == up) {
+                dateFieldChanged(false);
+            } else
+                if (evt.getSource() == down) {
+                    dateFieldChanged(true);
+            }
+        }
+    }
+    
+    /**
+     * Handles the event. Returns true if the event is handled and should not
+     * be passed to the parent of this component. The default event handler
+     * calls some helper methods to make life easier on the programmer.
+     */
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        System.out.println("key " + evt);
+        if (evt.getID() == KeyEvent.KEY_RELEASED) { 
+            if (evt.getSource() == patternText) {
+                patternTextChanged();
+            }
+            else {
+                for (int i = 0; i < calendars.length; i++) {
+                    if (evt.getSource() == calendars[i].text) {
+                        textChanged(i);
+                    }
+                }
+            }
+        }
+    }
+    
+    protected void processWindowEvent(WindowEvent evt) 
+    {
+        System.out.println("window " + evt);
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getSource() == this) {
+            this.hide();
+            this.dispose();
+
+            if (applet != null) {
+               applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    /*
+    protected void processEvent(AWTEvent evt)
+    {
+        if (evt.getID() == AWTEvent. Event.ACTION_EVENT && evt.target == up) {
+            dateFieldChanged(true);
+            return true;
+        }
+        else if (evt.id == Event.ACTION_EVENT && evt.target == down) {
+            dateFieldChanged(false);
+            return true;
+        }
+    }
+    */
+
+    private static final int        FIELD_COLUMNS = 35;
+
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+            rollAdd = new Checkbox();
+
+            text = new JTextField("",FIELD_COLUMNS);
+            text.setFont(DemoUtility.editFont);
+
+            format = DateFormat.getDateInstance(cal, DateFormat.FULL,
+                                                Locale.getDefault());
+            //format.applyPattern(DEFAULT_FORMAT);
+        }
+
+        public void setLocale(Locale loc) {
+            String pattern = toPattern();
+
+            format = DateFormat.getDateInstance(calendar, DateFormat.FULL,
+                                                loc);
+            applyPattern(pattern);
+        }
+
+        public void applyPattern(String pattern) {
+            if (format instanceof SimpleDateFormat) {
+                ((SimpleDateFormat)format).applyPattern(pattern);
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                ((java.text.SimpleDateFormat)format).applyPattern(pattern);
+            }
+        }
+        
+        private String toPattern() {
+            if (format instanceof SimpleDateFormat) {
+                return ((SimpleDateFormat)format).toPattern();
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                return ((java.text.SimpleDateFormat)format).toPattern();
+            }
+            return "";
+        }
+
+        Calendar  calendar;
+        DateFormat          format;
+        String              name;
+        JTextField           text;
+        Checkbox            rollAdd;
+    }
+
+    private final CalendarRec[] calendars = {
+        new CalendarRec("Gregorian",        new GregorianCalendar()),
+        new CalendarRec("Hebrew",           new HebrewCalendar()),
+        new CalendarRec("Islamic (civil)",  makeIslamic(true)),
+        new CalendarRec("Islamic (true)",   makeIslamic(false)),
+        new CalendarRec("Buddhist",         new BuddhistCalendar()),
+        new CalendarRec("Japanese",         new JapaneseCalendar()),
+//        new CalendarRec("Chinese",          new ChineseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    }
+}
+
+class RollAddField {
+    RollAddField(int field, String name) {
+        this.field = field;
+        this.name = name;
+    }
+    int field;
+    String name;
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
new file mode 100644
index 0000000..fd76ec7
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarFrame class defines the window layout of
+ * CalendarDemo.
+ */
+class CalendarFrame extends Frame
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -4289697663503820619L;
+
+    private static final boolean DEBUG = false;
+
+    private DemoApplet applet;
+
+    /**
+     * Constructs a new CalendarFrame that is initially invisible.
+     */
+    public CalendarFrame(DemoApplet myApplet)
+    {
+        super("Calendar Demo");
+        this.applet = myApplet;
+        init();
+
+        // When the window is closed, we want to shut down the applet or application
+        addWindowListener(
+            new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    setVisible(false);
+                    dispose();
+
+                    if (applet != null) {
+                        applet.demoClosed();
+                    } else System.exit(0);
+                }
+            } );
+    }
+
+    private Choice          displayMenu;
+    private Locale[]        locales = DemoUtility.getG7Locales();
+
+    private Calendar        calendars[]   = new Calendar[2];
+    private Choice          calMenu[]     = new Choice[2];
+    private ColoredLabel    monthLabel[]  = new ColoredLabel[2];
+    private DateFormat      monthFormat[] = new DateFormat[2];
+
+    private Button          prevYear;
+    private Button          prevMonth;
+    private Button          gotoToday;
+    private Button          nextMonth;
+    private Button          nextYear;
+    private CalendarPanel   calendarPanel;
+
+    private static void add(Container container, Component component,
+                            GridBagLayout g, GridBagConstraints c,
+                            int gridwidth, int weightx)
+    {
+        c.gridwidth = gridwidth;
+        c.weightx = weightx;
+        g.setConstraints(component, c);
+        container.add(component);
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init() {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout(10,10));
+
+        Panel topPanel = new Panel();
+        GridBagLayout g = new GridBagLayout();
+        topPanel.setLayout(g);
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.HORIZONTAL;
+
+        // Build the two menus for selecting which calendar is displayed,
+        // plus the month/year label for each calendar
+        for (int i = 0; i < 2; i++) {
+            calMenu[i] = new Choice();
+            for (int j = 0; j < CALENDARS.length; j++) {
+                calMenu[i].addItem(CALENDARS[j].name);
+            }
+            calMenu[i].setBackground(DemoUtility.choiceColor);
+            calMenu[i].select(i);
+            calMenu[i].addItemListener(new CalMenuListener());
+
+            // Label for the current month name
+            monthLabel[i] = new ColoredLabel("", COLORS[i]);
+            monthLabel[i].setFont(DemoUtility.titleFont);
+
+            // And the default calendar to use for this slot
+            calendars[i] = CALENDARS[i].calendar;
+
+            add(topPanel, calMenu[i], g, c, 5, 0);
+            add(topPanel, monthLabel[i], g, c, GridBagConstraints.REMAINDER, 1);
+        }
+
+        // Now add the next/previous year/month buttons:
+        prevYear = new Button("<<");
+        prevYear.addActionListener(new AddAction(Calendar.YEAR, -1));
+
+        prevMonth = new Button("<");
+        prevMonth.addActionListener(new AddAction(Calendar.MONTH, -1));
+
+        gotoToday = new Button("Today");
+        gotoToday.addActionListener( new ActionListener()
+        {
+            public void actionPerformed(ActionEvent e) {
+                calendarPanel.setDate( new Date() );
+                updateMonthName();
+            }
+        } );
+
+        nextMonth = new Button(">");
+        nextMonth.addActionListener(new AddAction(Calendar.MONTH, 1));
+
+        nextYear = new Button(">>");
+        nextYear.addActionListener(new AddAction(Calendar.YEAR, 1));
+
+        c.fill = GridBagConstraints.NONE;
+        add(topPanel, prevYear,  g, c, 1, 0);
+        add(topPanel, prevMonth, g, c, 1, 0);
+        add(topPanel, gotoToday, g, c, 1, 0);
+        add(topPanel, nextMonth, g, c, 1, 0);
+        add(topPanel, nextYear,  g, c, 1, 0);
+
+        // Now add the menu for selecting the display language
+        Panel displayPanel = new Panel();
+        {
+            displayMenu = new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            displayMenu.addItemListener( new ItemListener()
+            {
+                 public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[displayMenu.getSelectedIndex()];
+                    calendarPanel.setLocale( loc );
+                    monthFormat[0] = monthFormat[1] = null;
+                    updateMonthName();
+                    repaint();
+                }
+            } );
+
+            Label l1 = new Label("Display Language:", Label.RIGHT);
+            l1.setFont(DemoUtility.labelFont);
+
+            displayPanel.setLayout(new FlowLayout());
+            displayPanel.add(l1);
+            displayPanel.add(displayMenu);
+
+        }
+        c.fill = GridBagConstraints.NONE;
+        c.anchor = GridBagConstraints.EAST;
+
+        add(topPanel, displayPanel, g, c, GridBagConstraints.REMAINDER, 0);
+
+        // The title, buttons, etc. go in a panel at the top of the window
+        add("North", topPanel);
+
+        // The copyright notice goes at the bottom of the window
+        Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        copyright.setFont(DemoUtility.creditFont);
+        add("South", copyright);
+
+        // Now create the big calendar panel and stick it in the middle
+        calendarPanel = new CalendarPanel( locales[displayMenu.getSelectedIndex()] );
+        add("Center", calendarPanel);
+
+        for (int i = 0; i < 2; i++) {
+            calendarPanel.setCalendar(i, calendars[i]);
+            calendarPanel.setColor(i, COLORS[i]);
+        }
+
+        updateMonthName();
+    }
+
+
+    private void updateMonthName()
+    {
+            for (int i = 0; i < 2; i++) {
+                try {
+                    if (monthFormat[i] == null) {     // TODO: optimize
+                        DateFormat f = DateFormat.getDateTimeInstance(
+                                                calendars[i], DateFormat.MEDIUM, -1,
+                                                locales[displayMenu.getSelectedIndex()]);
+                        if (f instanceof com.ibm.icu.text.SimpleDateFormat) {
+                            com.ibm.icu.text.SimpleDateFormat f1 = (com.ibm.icu.text.SimpleDateFormat) f;
+                            f1.applyPattern("MMMM, yyyy G");
+                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+                        }
+                        monthFormat[i] = f;
+                    }
+                } catch (ClassCastException e) {
+                    //hey {lw} - there's something wrong in this routine that cuases exceptions.
+                    System.out.println(e);
+                }
+
+                monthLabel[i].setText( monthFormat[i].format( calendarPanel.firstOfMonth() ));
+            }
+    }
+
+    /**
+     * CalMenuListener responds to events in the two popup menus that select
+     * the calendar systems to be used in the display.  It figures out which
+     * of the two menus the event occurred in and updates the corresponding
+     * element of the calendars[] array to match the new selection.
+     */
+    private class CalMenuListener implements ItemListener
+    {
+         public void itemStateChanged(ItemEvent e)
+         {
+            for (int i = 0; i < calMenu.length; i++)
+            {
+                if (e.getItemSelectable() == calMenu[i])
+                {
+                    // We found the menu that the event happened in.
+                    // Figure out which new calendar they selected.
+                    Calendar newCal = CALENDARS[ calMenu[i].getSelectedIndex() ].calendar;
+
+                    if (newCal != calendars[i])
+                    {
+                        // If any of the other menus are set to the same new calendar
+                        // we're about to use for this menu, set them to the current
+                        // calendar from *this* menu so we won't have two the same
+                        for (int j = 0; j < calendars.length; j++) {
+                            if (j != i && calendars[j] == newCal) {
+                                calendars[j] = calendars[i];
+                                calendarPanel.setCalendar(j, calendars[j]);
+                                monthFormat[j] = null;
+
+                                for (int k = 0; k < CALENDARS.length; k++) {
+                                    if (calendars[j] == CALENDARS[k].calendar) {
+                                        calMenu[j].select(k);
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // Now update this menu to use the new calendar the user selected
+                        calendars[i] = newCal;
+                        calendarPanel.setCalendar(i, newCal);
+                        monthFormat[i] = null;
+
+                        updateMonthName();
+                    }
+                    break;
+                }
+            }
+         }
+    }
+
+    /**
+     * AddAction handles the next/previous year/month buttons...
+     */
+    private class AddAction implements ActionListener {
+        AddAction(int field, int amount) {
+            this.field = field;
+            this.amount = amount;
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            calendarPanel.add(field, amount);
+            updateMonthName();
+        }
+
+        private int field, amount;
+    }
+
+    /**
+     * ColoredLabel is similar to java.awt.Label, with two differences:
+     *
+     *  - You can set its text color
+     *
+     *  - It draws text using drawString rather than using a host-specific
+     *    "Peer" object like AWT does.  On 1.2, using drawString gives
+     *    us Bidi reordering for free.
+     */
+    static private class ColoredLabel extends Component {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 5004484960341875722L;
+        public ColoredLabel(String label) {
+            text = label;
+        }
+
+        public ColoredLabel(String label, Color c) {
+            text = label;
+            color = c;
+        }
+
+        public void setText(String label) {
+            text = label;
+            repaint();
+        }
+
+        public void setFont(Font f) {
+            font = f;
+            repaint();
+        }
+
+        public void paint(Graphics g) {
+            FontMetrics fm = g.getFontMetrics(font);
+
+            Rectangle bounds = getBounds();
+
+            g.setColor(color);
+            g.setFont(font);
+            g.drawString(text, fm.stringWidth("\u00a0"),
+                         bounds.height/2 + fm.getHeight()
+                         - fm.getAscent() + fm.getLeading()/2);
+        }
+
+        public Dimension getPreferredSize() {
+            return getMinimumSize();
+        }
+
+        public Dimension getMinimumSize() {
+            FontMetrics fm = getFontMetrics(font);
+
+            return new Dimension( fm.stringWidth(text) + 2*fm.stringWidth("\u00a0"),
+                                  fm.getHeight() + fm.getLeading()*2);
+        }
+
+        String text;
+        Color color = Color.black;
+        Font font = DemoUtility.labelFont;
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (DEBUG)
+        {
+            System.out.println(s);
+        }
+    }
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+        }
+
+        Calendar  calendar;
+        String              name;
+    }
+
+    private final CalendarRec[] CALENDARS = {
+        new CalendarRec("Gregorian Calendar",       new GregorianCalendar()),
+        new CalendarRec("Hebrew Calendar",          new HebrewCalendar()),
+        new CalendarRec("Islamic Calendar",         makeIslamic(false)),
+        new CalendarRec("Islamic Civil Calendar ",  makeIslamic(true)),
+        new CalendarRec("Buddhist Calendar",        new BuddhistCalendar()),
+        new CalendarRec("Japanese Calendar",        new JapaneseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    }
+
+    static final Color[] COLORS = { Color.blue, Color.black };
+}
+
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
new file mode 100644
index 0000000..8ea94d3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
@@ -0,0 +1,365 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+class CalendarPanel extends Canvas {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 625400018027387141L;
+
+    public CalendarPanel( Locale locale ) {
+        setLocale(locale);
+    }
+
+    public void setLocale(Locale locale) {
+        if (fDisplayLocale == null || !fDisplayLocale.equals(locale)) {
+            fDisplayLocale = locale;
+            dirty = true;
+
+            for (int i = 0; i < fCalendar.length; i++) {
+                if (fCalendar[i] != null) {
+                    fSymbols[i] = new DateFormatSymbols(fCalendar[i],
+                                                        fDisplayLocale);
+                }
+            }
+            String lang = locale.getLanguage();
+            leftToRight = !(lang.equals("iw") || lang.equals("ar"));
+
+            repaint();
+        }
+    }
+
+    public void setDate(Date date) {
+        fStartOfMonth = date;
+        dirty = true;
+        repaint();
+    }
+
+    public void add(int field, int delta)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(fStartOfMonth);
+            fCalendar[0].add(field, delta);
+            fStartOfMonth = fCalendar[0].getTime();
+        }
+        dirty = true;
+        repaint();
+    }
+
+    public void setColor(int index, Color c) {
+        fColor[index] = c;
+        repaint();
+    }
+
+    public void setCalendar(int index, Calendar c) {
+        Date date = (fCalendar[index] == null) ? new Date()
+                                               : fCalendar[index].getTime();
+
+        fCalendar[index] = c;
+        fCalendar[index].setTime(date);
+
+        fSymbols[index] = new DateFormatSymbols(c, fDisplayLocale);
+        dirty = true;
+        repaint();
+    }
+
+    public Calendar getCalendar(int index) {
+        return fCalendar[index];
+    }
+
+    public Locale getDisplayLocale() {
+        return fDisplayLocale;
+    }
+
+    public Date firstOfMonth() {
+        return fStartOfMonth;
+    }
+
+    private Date startOfMonth(Date dateInMonth)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(dateInMonth);
+
+            int era = fCalendar[0].get(Calendar.ERA);
+            int year = fCalendar[0].get(Calendar.YEAR);
+            int month = fCalendar[0].get(Calendar.MONTH);
+
+            fCalendar[0].clear();
+            fCalendar[0].set(Calendar.ERA, era);
+            fCalendar[0].set(Calendar.YEAR, year);
+            fCalendar[0].set(Calendar.MONTH, month);
+            fCalendar[0].set(Calendar.DATE, 1);
+
+            return fCalendar[0].getTime();
+        }
+    }
+
+    private void calculate()
+    {
+        //
+        // As a workaround for JDK 1.1.3 and below, where Calendars and time
+        // zones are a bit goofy, always set my calendar's time zone to UTC.
+        // You would think I would want to do this in the "set" function above,
+        // but if I do that, the program hangs when this class is loaded,
+        // perhaps due to some sort of static initialization ordering problem.
+        // So I do it here instead.
+        //
+        fCalendar[0].setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        Calendar c = (Calendar)fCalendar[0].clone(); // Temporary copy
+
+        fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        // Stash away a few useful constants for this calendar and display
+        minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        // Stash away a Date for the start of this month
+
+        // Find the day of week of the first day in this month
+        c.setTime(fStartOfMonth);
+        firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+        int firstWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Now find the # of days in the month
+        c.roll(Calendar.DATE, false);
+        daysInMonth = c.get(Calendar.DATE);
+
+        // Finally, find the end of the month, i.e. the start of the next one
+        c.roll(Calendar.DATE, true);
+        c.add(Calendar.MONTH, 1);
+        c.getTime();        // JDK 1.1.2 bug workaround
+        c.add(Calendar.SECOND, -1);
+        Date endOfMonth = c.getTime();
+        if(endOfMonth==null){
+         //do nothing
+        }
+        endOfMonth = null;
+        int lastWeek = c.get(Calendar.WEEK_OF_MONTH);
+        
+        // Calculate the number of full or partial weeks in this month.
+        numWeeks = lastWeek - firstWeek + 1;
+
+        dirty = false;
+    }
+
+    static final int XINSET = 4;
+    static final int YINSET = 2;
+
+    /*
+     * Convert from the day number within a month (1-based)
+     * to the cell coordinates on the calendar (0-based)
+     */
+    private void dateToCell(int date, Point pos)
+    {
+        int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        pos.x = cell % daysInWeek;
+        pos.y = cell / daysInWeek;
+    }
+    //private Point dateToCell(int date) {
+    //    Point p = new Point(0,0);
+    //    dateToCell(date, p);
+    //    return p;
+    //}
+
+    public void paint(Graphics g) {
+
+        if (dirty) {
+            calculate();
+        }
+
+        Point cellPos = new Point(0,0);     // Temporary variable
+        Dimension d = this.getSize();
+
+        g.setColor(Color.lightGray);
+        g.fillRect(0,0,d.width,d.height);
+
+        // Draw the day names at the top
+        g.setColor(Color.black);
+        g.setFont(DemoUtility.labelFont);
+        FontMetrics fm = g.getFontMetrics();
+        int labelHeight = fm.getHeight() + YINSET * 2;
+
+        int v = fm.getAscent() + YINSET;
+        for (int i = 0; i < daysInWeek; i++) {
+            int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            String dayName = fSymbols[0].getWeekdays()[dayNum];
+
+
+            double h;
+            if (leftToRight) {
+                h = d.width*(i + 0.5) / daysInWeek;
+            } else {
+                h = d.width*(daysInWeek - i - 0.5) / daysInWeek;
+            }
+            h -= fm.stringWidth(dayName) / 2;
+
+            g.drawString(dayName, (int)h, v);
+        }
+
+        double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        // Draw a white background in the part of the calendar
+        // that displays this month.
+        // First figure out how much of the first week should be shaded.
+        {
+            g.setColor(Color.white);
+            dateToCell(1, cellPos);
+            int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            if (leftToRight) {
+                g.fillRect((int)(width), labelHeight ,
+                           d.width - width, (int)cellHeight);
+            } else {
+                g.fillRect(0, labelHeight ,
+                           d.width - width, (int)cellHeight);
+            }
+
+            // All of the intermediate weeks get shaded completely
+            g.fillRect(0, (int)(labelHeight + cellHeight),
+                        d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            // Now figure out the last week.
+            dateToCell(daysInMonth, cellPos);
+            width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            if (leftToRight) {
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            } else {
+                g.fillRect(d.width - width, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            }
+
+        }
+        // Draw the X/Y grid lines
+        g.setColor(Color.black);
+        for (int i = 0; i <= numWeeks; i++) {
+            int y = (int)(labelHeight + i * cellHeight);
+            g.drawLine(0, y, d.width - 1, y);
+        }
+        for (int i = 0; i <= daysInWeek; i++) {
+            int x = (int)(i * cellWidth);
+            g.drawLine(x, labelHeight, x, d.height - 1);
+        }
+
+        // Now loop through all of the days in the month, figure out where
+        // they go in the grid, and draw the day # for each one
+
+        // Figure out the date of the first cell in the calendar display
+        int cell = (1 + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        Calendar c = (Calendar)fCalendar[0].clone();
+        c.setTime(fStartOfMonth);
+        c.add(Calendar.DATE, -cell);
+
+        StringBuffer buffer = new StringBuffer();
+
+        for (int row = 0; row < numWeeks; row++) {
+            for (int col = 0; col < daysInWeek; col++) {
+
+                g.setFont(DemoUtility.numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                int cellx;
+                if (leftToRight) {
+                    cellx = (int)((col) * cellWidth);
+                } else {
+                    cellx = (int)((daysInWeek - col - 1) * cellWidth);
+                }
+
+                int celly = (int)(row * cellHeight + labelHeight);
+
+                for (int i = 0; i < 2; i++) {
+                    fCalendar[i].setTime(c.getTime());
+
+                    int date = fCalendar[i].get(Calendar.DATE);
+                    buffer.setLength(0);
+                    buffer.append(date);
+                    String dayNum = buffer.toString();
+
+                    int x;
+
+                    if (leftToRight) {
+                        x = cellx + (int)cellWidth - XINSET - fm.stringWidth(dayNum);
+                    } else {
+                        x = cellx + XINSET;
+                    }
+                    int y = celly + + fm.getAscent() + YINSET + i * fm.getHeight();
+
+                    if (fColor[i] != null) {
+                        g.setColor(fColor[i]);
+                    }
+                    g.drawString(dayNum, x, y);
+
+                    if (date == 1 || row == 0 && col == 0) {
+                        g.setFont(DemoUtility.numberFont);
+                        String month = fSymbols[i].getMonths()[
+                                            fCalendar[i].get(Calendar.MONTH)];
+
+                        if (leftToRight) {
+                            x = cellx + XINSET;
+                        } else {
+                            x = cellx + (int)cellWidth - XINSET - fm.stringWidth(month);
+                        }
+                        g.drawString(month, x, y);
+                    }
+                }
+
+                c.add(Calendar.DATE, 1);
+            }
+        }
+    }
+
+    // Important state variables
+    private Calendar[]          fCalendar = new Calendar[4];
+    private Color[]             fColor = new Color[4];
+
+    private Locale              fDisplayLocale;
+    private DateFormatSymbols[] fSymbols = new DateFormatSymbols[4];
+
+    private Date                fStartOfMonth = new Date();     // 00:00:00 on first day of month
+
+    // Cached calculations to make drawing faster.
+    private transient int       minDay;           // Minimum legal day #
+    private transient int       daysInWeek;       // # of days in a week
+    private transient int       firstDayOfWeek;   // First day to display in week
+    private transient int       numWeeks;         // # full or partial weeks in month
+    private transient int       daysInMonth;      // # days in this month
+    private transient int       firstDayInMonth;  // Day of week of first day in month
+    private transient boolean   leftToRight;
+
+    private transient boolean dirty = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/package.html b/src/com/ibm/icu/dev/demo/calendar/package.html
new file mode 100644
index 0000000..c1bb105
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Calendar demo applications including date/time arithmetic.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java b/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
new file mode 100644
index 0000000..de4ef06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
@@ -0,0 +1,404 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation   *
+ * and others. All Rights Reserved.                                       *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.demo.charsetdet;
+
+import java.awt.event.*;
+import java.awt.*;
+import java.io.*;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.security.AccessControlException;
+
+import javax.swing.*;
+
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+/**
+ * This simple application demonstrates how to use the CharsetDetector API. It
+ * opens a file or web page, detects the encoding, and then displays it using that
+ * encoding.
+ */
+public class DetectingViewer extends JFrame implements ActionListener
+{
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2307065724464747775L;
+    private JTextPane text;
+    private JFileChooser fileChooser;
+    
+    /**
+     * @throws java.awt.HeadlessException
+     */
+    public DetectingViewer()
+    {
+        super();
+        DemoApplet.demoFrameOpened();
+        
+        try {
+            fileChooser = new JFileChooser();
+        } catch (AccessControlException ace) {
+            System.err.println("no file chooser - access control exception. Continuing without file browsing. "+ace.toString());
+            fileChooser = null; //
+        }
+        
+//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setSize(800, 800);
+
+        setJMenuBar(makeMenus());
+        text = new JTextPane();
+        text.setContentType("text/plain");
+        text.setText("");
+        text.setSize(800, 800);
+        
+        Font font = new Font("Arial Unicode MS", Font.PLAIN, 24);
+        text.setFont(font);
+        
+        JScrollPane scrollPane = new JScrollPane(text);
+        
+        getContentPane().add(scrollPane);
+        setVisible(true);
+
+        addWindowListener(
+                new WindowAdapter() {
+                    public void windowClosing(WindowEvent e) {
+//                        setVisible(false);
+//                        dispose();
+
+                          doQuit();
+                    }
+                } );
+
+    
+    }
+
+    public void actionPerformed(ActionEvent event)
+    {
+        String cmd = event.getActionCommand();
+        
+        if (cmd.equals("New...")) {
+           doNew();
+        } else if (cmd.equals("Open File...")) {
+           doOpenFile();
+        } else if (cmd.equals("Open URL...")) {
+            doOpenURL();
+        } else if (cmd.equals("Quit")) {
+           doQuit();
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new DetectingViewer();
+    }
+    
+    private void errorDialog(String title, String msg)
+    {
+        JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
+    }
+    
+    private BufferedInputStream openFile(File file)
+    {
+        FileInputStream fileStream = null;
+        
+        try {
+            fileStream = new FileInputStream(file);
+        } catch (Exception e) {
+            errorDialog("Error Opening File", e.getMessage());
+            return null;
+        }
+        
+        return new BufferedInputStream(fileStream);
+    }
+    
+//    private void openFile(String directory, String filename)
+//    {
+//        openFile(new File(directory, filename));
+//    }
+    
+    
+    private BufferedInputStream openURL(String url)
+    {
+        InputStream s = null;
+
+        try {
+            URL aURL = new URL(url);
+            s = aURL.openStream();
+        } catch (Exception e) {
+            errorDialog("Error Opening URL", e.getMessage());
+            return null;
+        }
+        
+        return new BufferedInputStream(s);
+    }
+    
+    private String encodingName(CharsetMatch match)
+    {
+        return match.getName() + " (" + match.getLanguage() + ")";
+    }
+    
+    private void setMatchMenu(CharsetMatch[] matches)
+    {
+        JMenu menu = getJMenuBar().getMenu(1);
+        JMenuItem menuItem;
+        
+        menu.removeAll();
+        
+        for (int i = 0; i < matches.length; i += 1) {
+            CharsetMatch match = matches[i];
+            
+            menuItem = new JMenuItem(encodingName(match) + " " + match.getConfidence());
+            
+            menu.add(menuItem);
+        }
+    }
+    
+    private byte[] scriptTag = {(byte) 's', (byte) 'c', (byte) 'r', (byte) 'i', (byte) 'p', (byte) 't'};
+    private byte[] styleTag  = {(byte) 's', (byte) 't', (byte) 'y', (byte) 'l', (byte) 'e'};
+    private static int BUFFER_SIZE = 100000;
+    
+    private boolean openTag(byte[] buffer, int offset, int length, byte[] tag)
+    {
+        int tagLen = tag.length;
+        int bufRem = length - offset;
+        int b;
+        
+        for (b = 0; b < tagLen && b < bufRem; b += 1) {
+            if (buffer[b + offset] != tag[b]) {
+                return false;
+            }
+        }
+        
+        return b == tagLen;
+    }
+    
+    private boolean closedTag(byte[] buffer, int offset, int length, byte[] tag)
+    {
+        if (buffer[offset] != (byte) '/') {
+            return false;
+        }
+        
+        return openTag(buffer, offset + 1, length, tag);
+    }
+    
+    private byte[] filter(InputStream in)
+    {
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRemaining = BUFFER_SIZE;
+        int bufLen = 0;
+        
+        in.mark(BUFFER_SIZE);
+        
+        try {
+            while (bytesRemaining > 0) {
+                int bytesRead = in.read(buffer, bufLen, bytesRemaining);
+                
+                if (bytesRead <= 0) {
+                    break;
+                }
+                
+                bufLen += bytesRead;
+                bytesRemaining -= bytesRead;
+            }
+        } catch (Exception e) {
+            // TODO: error handling?
+            return null;
+        }
+        
+        boolean inTag = false;
+        boolean skip  = false;
+        int out = 0;
+        
+        for (int i = 0; i < bufLen; i += 1) {
+            byte b = buffer[i];
+            
+            if (b == (byte) '<') {
+                inTag = true;
+                
+                if (openTag(buffer, i + 1, bufLen, scriptTag) ||
+                    openTag(buffer, i + 1, bufLen, styleTag)) {
+                    skip = true;
+                } else if (closedTag(buffer, i + 1, bufLen, scriptTag) ||
+                           closedTag(buffer, i + 1, bufLen, styleTag)) {
+                    skip = false;
+                }
+            } else if (b == (byte) '>') {
+                inTag = false;
+            } else if (! (inTag || skip)) {
+                buffer[out++] = b;
+            }
+        }
+
+        byte[] filtered = new byte[out];
+        
+        System.arraycopy(buffer, 0, filtered, 0, out);
+        return filtered;
+    }
+    
+    private CharsetMatch[] detect(byte[] bytes)
+    {
+        CharsetDetector det = new CharsetDetector();
+        
+        det.setText(bytes);
+        
+        return det.detectAll();
+    }
+    
+    private CharsetMatch[] detect(BufferedInputStream inputStream)
+    {
+        CharsetDetector det    = new CharsetDetector();
+        
+        try {
+            det.setText(inputStream);
+            
+            return det.detectAll();
+        } catch (Exception e) {
+            // TODO: error message?
+            return null;
+        }
+    }
+    
+    private void show(InputStream inputStream, CharsetMatch[] matches, String title)
+    {
+        InputStreamReader isr;
+        char[] buffer = new char[1024];
+        int bytesRead = 0;
+        
+        if (matches == null || matches.length == 0) {
+            errorDialog("Match Error", "No matches!");
+            return;
+        }
+        
+        try {
+            StringBuffer sb = new StringBuffer();
+            String encoding = matches[0].getName();
+            
+            inputStream.reset();
+            
+            if (encoding.startsWith("UTF-32")) {
+                byte[] bytes = new byte[1024];
+                int offset = 0;
+                int chBytes = 0;
+                Charset utf32 = CharsetICU.forNameICU(encoding);
+                
+                while ((bytesRead = inputStream.read(bytes, offset, 1024)) >= 0) {
+                    offset  = bytesRead % 4;
+                    chBytes = bytesRead - offset;
+                    
+                    sb.append(utf32.decode(ByteBuffer.wrap(bytes)).toString());
+                    
+                    if (offset != 0) {
+                        for (int i = 0; i < offset; i += 1) {
+                            bytes[i] = bytes[chBytes + i];
+                        }
+                    }
+                }
+            } else {
+                isr = new InputStreamReader(inputStream, encoding);
+                
+                while ((bytesRead = isr.read(buffer, 0, 1024)) >= 0) {
+                    sb.append(buffer, 0, bytesRead);
+                }
+                
+                isr.close();
+            }
+            
+            this.setTitle(title + " - " + encodingName(matches[0]));
+            
+            setMatchMenu(matches);
+            text.setText(sb.toString());
+        } catch (IOException e) {
+            errorDialog("IO Error", e.getMessage());
+        } catch (Exception e) {
+            errorDialog("Internal Error", e.getMessage());
+        }
+    }
+    
+    private void doNew()
+    {
+        // open a new window...
+    }
+    
+    private void doOpenFile()
+    {
+        int retVal = fileChooser.showOpenDialog(this);
+        
+        if (retVal == JFileChooser.APPROVE_OPTION) {
+            File file = fileChooser.getSelectedFile();
+            BufferedInputStream inputStream = openFile(file);
+            
+            if (inputStream != null) {
+                CharsetMatch[] matches = detect(inputStream);
+                
+                show(inputStream, matches, file.getName());                
+            }
+        }
+    }
+    
+    private void doOpenURL()
+    {
+        String url = (String) JOptionPane.showInputDialog(this, "URL to open:", "Open URL", JOptionPane.PLAIN_MESSAGE,
+                null, null, null);
+        
+        if (url != null && url.length() > 0) {
+            BufferedInputStream inputStream = openURL(url);
+            
+            if (inputStream != null) {
+                byte[] filtered = filter(inputStream);
+                CharsetMatch[] matches = detect(filtered);
+                
+                show(inputStream, matches, url);                
+            }
+        }
+}
+    
+    private void doQuit()
+    {
+        DemoApplet.demoFrameClosed();
+        this.setVisible(false);
+        this.dispose();
+    }
+    
+    private JMenuBar makeMenus()
+    {
+        JMenu menu = new JMenu("File");
+        JMenuItem mi;
+        
+        mi = new JMenuItem("Open File...");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        if(fileChooser == null) {
+            mi.setEnabled(false); // no file chooser.
+        }
+        
+        mi = new JMenuItem("Open URL...");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        
+        mi = new JMenuItem("Quit");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        
+        JMenuBar mbar = new JMenuBar();
+        mbar.add(menu);
+        
+        menu = new JMenu("Detected Encodings");
+        mbar.add(menu);
+        
+        return mbar;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
new file mode 100644
index 0000000..af6ce9b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
@@ -0,0 +1,546 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.holiday;
+
+import java.awt.*;
+
+/**
+ * Various graphical borders. The border itself is a Panel so that it can
+ * contain other Components (i.e. it borders something). You use the
+ * HolidayBorderPanel like any other Panel: you set the layout that you prefer and
+ * add Components to it. Beware that a null layout does not obey the insets
+ * of the panel so if you use null layouts, adjust your measurements to
+ * handle the border by calling insets().
+ *
+ * @author  Andy Clark, Taligent Inc.
+ * @version 1.0
+ */
+public class HolidayBorderPanel extends Panel {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4669213306492461159L;
+    // Constants
+
+    /** Solid border. */
+    public final static int SOLID = 0;
+    /** A raised border. */
+    public final static int RAISED = 1;
+    /** A lowered border. */
+    public final static int LOWERED = 2;
+    /** An etched in border. */
+    public final static int IN = 3;
+    /** An etched out border. */
+    public final static int OUT = 4;
+
+    /** Left alignment. */
+    public final static int LEFT = 0;
+    /** Center alignment. */
+    public final static int CENTER = 1;
+    /** Right alignment. */
+    public final static int RIGHT = 2;
+
+    /** Default style (IN). */
+    public final static int DEFAULT_STYLE = IN;
+    /** Default thickness (10). */
+    public final static int DEFAULT_THICKNESS = 10;
+    /** Default thickness for solid borders (4). */
+    public final static int DEFAULT_SOLID_THICKNESS = 4;
+    /** Default thickness for raised borders (2). */
+    public final static int DEFAULT_RAISED_THICKNESS = 2;
+    /** Default thickness for lowered borders (2). */
+    public final static int DEFAULT_LOWERED_THICKNESS = 2;
+    /** Default thickness for etched-in borders (10). */
+    public final static int DEFAULT_IN_THICKNESS = 10;
+    /** Default thickness for etched-out borders (10). */
+    public final static int DEFAULT_OUT_THICKNESS = 10;
+    /** Default gap between border and contained component (5). */
+    public final static int DEFAULT_GAP = 5;
+    /** Default color (black). Applies to SOLID and etched borders. */
+    public final static Color DEFAULT_COLOR = Color.black;
+
+    /** Default font (TimesRoman,PLAIN,14). Only applies to etched borders. */
+    public final static Font DEFAULT_FONT = new Font("TimesRoman", Font.PLAIN, 14);
+    /** Default alignment (LEFT). Only applies to etched borders. */
+    public final static int DEFAULT_ALIGNMENT = LEFT;
+
+    // Data
+    private int style;
+    private int thickness;
+    private int gap;
+    private Color color;
+
+    private Font font;
+    private String text;
+    private int alignment;
+
+    /**
+     * Constructor. Makes default border.
+     */
+    public HolidayBorderPanel() {
+
+        // initialize data
+        style       = DEFAULT_STYLE;
+        thickness   = DEFAULT_THICKNESS;
+        gap         = DEFAULT_GAP;
+        color       = DEFAULT_COLOR;
+
+        text        = null;
+        font        = DEFAULT_FONT;
+        alignment   = DEFAULT_ALIGNMENT;
+
+        }
+
+    /**
+     * Constructor. Makes an etched IN border with given text caption.
+     *
+     * @param text  Text caption
+     */
+    public HolidayBorderPanel(String text) {
+        this();
+
+        style = IN;
+        this.text = text;
+        }
+
+    /**
+     * Constructor. Makes SOLID border with color and thickness given.
+     *
+     * @param color     The color for the border.
+     * @param thickness The thickness of the border.
+     */
+    public HolidayBorderPanel(Color color, int thickness) {
+        this();
+
+        style = SOLID;
+        this.color = color;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes a border of the given style with the default
+     * thickness for that style.
+     *
+     * @param style The style for this border.
+     */
+    public HolidayBorderPanel(int style) {
+        this();
+
+        // set thickness appropriate to this style
+        switch (style) {
+            case SOLID: thickness = DEFAULT_SOLID_THICKNESS; break;
+            case RAISED: thickness = DEFAULT_RAISED_THICKNESS; break;
+            case LOWERED: thickness = DEFAULT_LOWERED_THICKNESS; break;
+            case IN: thickness = DEFAULT_IN_THICKNESS; break;
+            case OUT: thickness = DEFAULT_OUT_THICKNESS; break;
+            default:
+                thickness = DEFAULT_THICKNESS;
+            }
+
+        this.style = style;
+        }
+
+    /**
+     * Constructor. Makes border with given style and thickness.
+     *
+     * @param style     The style for this border.
+     * @param thickness The thickness for this border.
+     */
+    public HolidayBorderPanel(int style, int thickness) {
+        this();
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Returns the insets of this panel..
+     */
+    public Insets getInsets() {
+        int adjustment = 0;
+
+        // adjust for text string
+        if (style == IN || style == OUT) {
+            if (text != null && text.length() > 0) {
+                try {
+                    // set font and get info
+                    int height = getGraphics().getFontMetrics(font).getHeight();
+                    if (height > thickness)
+                        adjustment = height - thickness;
+                    }
+                catch (Exception e) {
+                    // nothing: just in case there is no graphics context
+                    //   at the beginning.
+                    System.out.print("");
+                    }
+                }
+            }
+
+        // return appropriate insets
+        int dist = thickness + gap;
+        return new Insets(dist + adjustment, dist, dist, dist);
+        }
+
+    /**
+     * Sets the style of the border
+     *
+     * @param style The new style.
+     */
+    public HolidayBorderPanel setStyle(int style) {
+
+        // set the style and re-layout the panel
+        this.style = style;
+        doLayout();
+        repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the style of the border
+     */
+    public int getStyle() {
+
+        return style;
+        }
+
+    /**
+     * Sets the thickness of the border.
+     *
+     * @param thickness The new thickness
+     */
+    public HolidayBorderPanel setThickness(int thickness) {
+
+        if (thickness > 0) {
+            this.thickness = thickness;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the thickness of the border.
+     */
+    public int getThickness() {
+
+        return thickness;
+        }
+
+    /**
+     * Sets the gap between the border and the contained Component.
+     *
+     * @param gap The new gap, in pixels.
+     */
+    public HolidayBorderPanel setGap(int gap) {
+
+        if (gap > -1) {
+            this.gap = gap;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the gap between the border and the contained Component.
+     */
+    public int getGap() {
+
+        return gap;
+        }
+
+    /**
+     * Sets the current color for SOLID borders and the caption text
+     * color for etched borders.
+     *
+     * @param color The new color.
+     */
+    public HolidayBorderPanel setColor(Color color) {
+
+        this.color = color;
+        if (style == SOLID || style == IN || style == OUT)
+            repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the current color for SOLID borders and the caption
+     * text color for etched borders.
+     */
+    public Color getColor() {
+
+        return color;
+        }
+
+    /**
+     * Sets the font. Only applies to etched borders.
+     */
+    public HolidayBorderPanel setTextFont(Font font) {
+
+        // set font
+        if (font != null) {
+            this.font = font;
+            if (style == IN || style == OUT) {
+                doLayout();
+                repaint();
+                }
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the font of the text. Only applies to etched borders.
+     */
+    public Font getTextFont() {
+
+        return font;
+        }
+
+    /**
+     * Sets the text. Only applies to etched borders.
+     *
+     * @param text  The new text.
+     */
+    public HolidayBorderPanel setText(String text) {
+
+        this.text = text;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text. Only applies to etched borders.
+     */
+    public String getText() {
+
+        return text;
+        }
+
+    /**
+     * Sets the text alignment. Only applies to etched borders.
+     *
+     * @param alignment The new alignment.
+     */
+    public HolidayBorderPanel setAlignment(int alignment) {
+
+        this.alignment = alignment;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text alignment.
+     */
+    public int getAlignment() {
+
+        return alignment;
+        }
+
+    /**
+     * Repaints the border.
+     *
+     * @param g The graphics context.
+     */
+    public void paint(Graphics g) {
+
+        // get current dimensions
+        Dimension size = getSize();
+        int width = size.width;
+        int height = size.height;
+
+        // set colors
+        Color light = getBackground().brighter().brighter().brighter();
+        Color dark = getBackground().darker().darker().darker();
+
+        // Draw border
+        switch (style) {
+            case RAISED:    // 3D Border (in or out)
+            case LOWERED:
+                Color topleft = null;
+                Color bottomright = null;
+
+                // set colors
+                if (style == RAISED) {
+                    topleft = light;
+                    bottomright = dark;
+                    }
+                else {
+                    topleft = dark;
+                    bottomright = light;
+                    }
+
+                // draw border
+                g.setColor(topleft);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i, i, width - i - 2, i);
+                    g.drawLine(i, i + 1, i, height - i - 1);
+                    }
+                g.setColor(bottomright);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i + 1, height - i - 1, width - i - 1, height - i - 1);
+                    g.drawLine(width - i - 1, i, width - i - 1, height - i - 2);
+                    }
+                break;
+
+            case IN:    // Etched Border (in or out)
+            case OUT:
+                int adjust1 = 0;
+                int adjust2 = 0;
+
+                // set font and get info
+                Font oldfont = g.getFont();
+                g.setFont(font);
+                FontMetrics fm = g.getFontMetrics();
+                int ascent = fm.getAscent();
+
+                // set adjustment
+                if (style == IN)
+                    adjust1 = 1;
+                else
+                    adjust2 = 1;
+
+                // Calculate adjustment for text
+                int adjustment = 0;
+                if (text != null && text.length() > 0) {
+                    if (ascent > thickness)
+                        adjustment = (ascent - thickness) / 2;
+                    }
+
+                // The adjustment is there so that we always draw the
+                // light rectangle first. Otherwise, your eye picks up
+                // the discrepancy where the light rect. passes over
+                // the darker rect.
+                int x = thickness / 2;
+                int y = thickness / 2 + adjustment;
+                int w = width - thickness - 1;
+                int h = height - thickness - 1 - adjustment;
+
+                // draw rectangles
+                g.setColor(light);
+                g.drawRect(x + adjust1, y + adjust1, w, h);
+                g.setColor(dark);
+                g.drawRect(x + adjust2, y + adjust2, w, h);
+
+                // draw text, if applicable
+                if (text != null && text.length() > 0) {
+                    // calculate drawing area
+                    int fontheight = fm.getHeight();
+                    int strwidth = fm.stringWidth(text);
+
+                    int textwidth = width - 2 * (thickness + 5);
+                    if (strwidth > textwidth)
+                        strwidth = textwidth;
+
+                    // calculate offset for alignment
+                    int offset;
+                    switch (alignment) {
+                        case CENTER:
+                            offset = (width - strwidth) / 2;
+                            break;
+                        case RIGHT:
+                            offset = width - strwidth - thickness - 5;
+                            break;
+                        case LEFT:
+                        default: // assume left alignment if invalid
+                            offset = thickness + 5;
+                            break;
+                        }
+
+                    // clear drawing area and set clipping region
+                    g.clearRect(offset - 5, 0, strwidth  + 10, fontheight);
+                    g.clipRect(offset, 0, strwidth, fontheight);
+
+                    // draw text
+                    g.setColor(color);
+                    g.drawString(text, offset, ascent);
+
+                    // restore old clipping area
+                    g.clipRect(0, 0, width, height);
+                    }
+
+                g.setFont(oldfont);
+                break;
+
+            case SOLID:
+            default: // assume SOLID
+                g.setColor(color);
+                for (int i = 0; i < thickness; i++)
+                    g.drawRect(i, i, width - 2 * i - 1, height - 2 * i - 1);
+            }
+
+        }
+
+    /**
+     * Returns the settings of this HolidayBorderPanel instance as a string.
+     */
+    public String toString() {
+        StringBuffer str = new StringBuffer("HolidayBorderPanel[");
+
+        // style
+        str.append("style=");
+        switch (style) {
+            case SOLID: str.append("SOLID"); break;
+            case RAISED: str.append("RAISED"); break;
+            case LOWERED: str.append("LOWERED"); break;
+            case IN: str.append("IN"); break;
+            case OUT: str.append("OUT"); break;
+            default: str.append("unknown");
+            }
+        str.append(",");
+
+        // thickness
+        str.append("thickness=");
+        str.append(thickness);
+        str.append(",");
+
+        // gap
+        str.append("gap=");
+        str.append(gap);
+        str.append(",");
+
+        // color
+        str.append(color);
+        str.append(",");
+
+        // font
+        str.append(font);
+        str.append(",");
+
+        // text
+        str.append("text=");
+        str.append(text);
+        str.append(",");
+
+        // alignment
+        str.append("alignment=");
+        switch (alignment) {
+            case LEFT: str.append("LEFT"); break;
+            case CENTER: str.append("CENTER"); break;
+            case RIGHT: str.append("RIGHT"); break;
+            default: str.append("unknown");
+            }
+
+        str.append("]");
+
+        return str.toString();
+        }
+
+    }
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
new file mode 100644
index 0000000..5899b78
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
@@ -0,0 +1,744 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.holiday;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowEvent;
+import java.text.DateFormatSymbols;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Vector;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoTextBox;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.SimpleTimeZone;
+
+/**
+ * CalendarDemo demonstrates how Calendar works.
+ */
+public class HolidayCalendarDemo extends DemoApplet 
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4546085430817359372L;
+
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new HolidayCalendarDemo().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+
+    /**
+    * A Frame is a top-level window with a title. The default layout for a frame
+    * is BorderLayout.  The CalendarFrame class defines the window layout of
+    * CalendarDemo.
+    */
+    private static class CalendarFrame extends Frame implements ActionListener,
+                                                                ItemListener
+    {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -7023296782393042761L;
+
+        private static final boolean DEBUG = false;
+
+        //private Locale curLocale = Locale.US; // unused
+
+        private DemoApplet applet;
+
+        private static final Locale[] calendars = {
+            //new Locale("de","AT"),
+            Locale.CANADA,
+            Locale.CANADA_FRENCH,
+            Locale.FRANCE,
+            Locale.GERMANY,
+            new Locale("iw","IL"),
+            new Locale("el","GR"),
+            //new Locale("es","MX"),
+            Locale.UK,
+            Locale.US,
+        };
+        private static final Locale[] displays = {
+            Locale.CANADA,
+            Locale.UK,
+            Locale.US,
+            Locale.FRANCE,
+            Locale.CANADA_FRENCH,
+            //new Locale("de","AT"),
+            Locale.GERMAN,
+            new Locale("el","GR"),
+            //new Locale("iw","IL"),
+            new Locale("es","MX"),
+        };
+
+        /**
+        * Constructs a new CalendarFrame that is initially invisible.
+        */
+        public CalendarFrame(DemoApplet applet)
+        {
+            super("Calendar Demo");
+            this.applet = applet;
+            init();
+            start();
+            enableEvents(WindowEvent.WINDOW_CLOSING);
+        }
+
+        /**
+        * Initializes the applet. You never need to call this directly, it
+        * is called automatically by the system once the applet is created.
+        */
+        public void init()
+        {
+            // Get G7 locales only for demo purpose. To get all the locales
+            // supported, switch to calling Calendar.getAvailableLocales().
+            // commented
+            locales = displays;
+
+            buildGUI();
+        }
+
+        //------------------------------------------------------------
+        // package private
+        //------------------------------------------------------------
+        void addWithFont(Container container, Component foo, Font font) {
+            if (font != null)
+                foo.setFont(font);
+            container.add(foo);
+        }
+
+        /**
+        * Called to start the applet. You never need to call this method
+        * directly, it is called when the applet's document is visited.
+        */
+        public void start()
+        {
+            // do nothing
+        }
+
+        private Choice          localeMenu;
+        private Choice          displayMenu;
+        private Locale[]        locales;
+
+        private Label           monthLabel;
+        private Button          prevYear;
+        private Button          prevMonth;
+        private Button          gotoToday;
+        private Button          nextMonth;
+        private Button          nextYear;
+        private CalendarPanel   calendarPanel;
+
+        private static final Locale kFirstLocale = Locale.US;
+
+        private static void add(Container container, Component component,
+                                GridBagLayout g, GridBagConstraints c)
+        {
+            g.setConstraints(component, c);
+            container.add(component);
+        }
+
+        public void buildGUI()
+        {
+            setBackground(DemoUtility.bgColor);
+            setLayout(new BorderLayout(10,10));
+
+            // Label for the demo's title
+            Label titleLabel = new Label("Calendar Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+
+            // Label for the current month name
+            monthLabel = new Label("", Label.LEFT);
+            monthLabel.setFont(new Font(DemoUtility.titleFont.getName(),
+                                        DemoUtility.titleFont.getStyle(),
+                                        (DemoUtility.titleFont.getSize() * 3)/2));
+
+            // Make the locale popup menus
+            localeMenu= new Choice();
+            localeMenu.addItemListener(this);
+            int selectMe = 0;
+            
+            for (int i = 0; i < calendars.length; i++) {
+                if (i > 0 &&
+                        calendars[i].getCountry().equals(calendars[i-1].getCountry()) ||
+                    i < calendars.length - 1 &&
+                        calendars[i].getCountry().equals(calendars[i+1].getCountry()))
+                {
+                    localeMenu.addItem(calendars[i].getDisplayCountry() + " (" +
+                                    calendars[i].getDisplayLanguage() + ")");
+                } else {
+                    localeMenu.addItem( calendars[i].getDisplayCountry() );
+                }
+                
+                if (calendars[i].equals(kFirstLocale)) {
+                    selectMe = i;
+                }
+            }
+            
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            displayMenu = new Choice();
+            displayMenu.addItemListener(this);
+            
+            selectMe = 0;
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                
+                if (locales[i].equals(kFirstLocale)) {
+                    selectMe = i;
+                }
+            }
+            
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            // Make all the next/previous/today buttons
+            prevYear = new Button("<<");
+            prevYear.addActionListener(this);
+            prevMonth = new Button("<");
+            prevMonth.addActionListener(this);
+            gotoToday = new Button("Today");
+            gotoToday.addActionListener(this);
+            nextMonth = new Button(">");
+            nextMonth.addActionListener(this);
+            nextYear = new Button(">>");
+            nextYear.addActionListener(this);
+
+            // The month name and the control buttons are bunched together
+            Panel monthPanel = new Panel();
+            {
+                GridBagLayout g = new GridBagLayout();
+                GridBagConstraints c = new GridBagConstraints();
+                monthPanel.setLayout(g);
+
+                c.weightx = 1;
+                c.weighty = 1;
+
+                c.gridwidth = 1;
+                c.fill = GridBagConstraints.HORIZONTAL;
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(monthPanel, monthLabel, g, c);
+
+                c.gridwidth = 1;
+                add(monthPanel, prevYear, g, c);
+                add(monthPanel, prevMonth, g, c);
+                add(monthPanel, gotoToday, g, c);
+                add(monthPanel, nextMonth, g, c);
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(monthPanel, nextYear, g, c);
+            }
+
+            // Stick the menu and buttons in a little "control panel"
+            Panel menuPanel = new Panel();
+            {
+                GridBagLayout g = new GridBagLayout();
+                GridBagConstraints c = new GridBagConstraints();
+                menuPanel.setLayout(g);
+
+                c.weightx = 1;
+                c.weighty = 1;
+
+                c.fill = GridBagConstraints.HORIZONTAL;
+
+                c.gridwidth = GridBagConstraints.RELATIVE;
+                Label l1 = new Label("Holidays");
+                l1.setFont(DemoUtility.labelFont);
+                add(menuPanel, l1, g, c);
+
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(menuPanel, localeMenu, g, c);
+
+                c.gridwidth = GridBagConstraints.RELATIVE;
+                Label l2 = new Label("Display:");
+                l2.setFont(DemoUtility.labelFont);
+                add(menuPanel, l2, g, c);
+
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(menuPanel, displayMenu, g, c);
+            }
+
+            // The title, buttons, etc. go in a panel at the top of the window
+            Panel topPanel = new Panel();
+            {
+                topPanel.setLayout(new BorderLayout());
+
+                //topPanel.add("North", titleLabel);
+                topPanel.add("Center", monthPanel);
+                topPanel.add("East", menuPanel);
+            }
+            add("North", topPanel);
+
+            // The copyright notice goes at the bottom of the window
+            Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+            copyright.setFont(DemoUtility.creditFont);
+            add("South", copyright);
+
+            // Now create the big calendar panel and stick it in the middle
+            calendarPanel = new CalendarPanel( kFirstLocale );
+            add("Center", calendarPanel);
+
+            updateMonthName();
+        }
+
+        private void updateMonthName()
+        {
+            SimpleDateFormat f = new SimpleDateFormat("MMMM yyyyy",
+                                                        calendarPanel.getDisplayLocale());
+            f.setCalendar(calendarPanel.getCalendar());
+            f.setTimeZone(new SimpleTimeZone(0, "UTC"));        // JDK 1.1.2 workaround
+            monthLabel.setText( f.format( calendarPanel.firstOfMonth() ));
+        }
+        
+        /**
+        * Handles the event. Returns true if the event is handled and should not
+        * be passed to the parent of this component. The default event handler
+        * calls some helper methods to make life easier on the programmer.
+        */
+        public void actionPerformed(ActionEvent e)
+        {
+            Object obj = e.getSource();
+            
+            // *** Button events are handled here.
+            if (obj instanceof Button) {
+                if (obj == nextMonth) {
+                    calendarPanel.add(Calendar.MONTH, +1);
+                }
+                else
+                if (obj == prevMonth) {
+                    calendarPanel.add(Calendar.MONTH, -1);
+                }
+                else
+                if (obj == prevYear) {
+                    calendarPanel.add(Calendar.YEAR, -1);
+                }
+                else
+                if (obj == nextYear) {
+                    calendarPanel.add(Calendar.YEAR, +1);
+                }
+                else
+                if (obj == gotoToday) {
+                    calendarPanel.set( new Date() );
+                }
+                updateMonthName();
+            }
+        }
+        
+        public void itemStateChanged(ItemEvent e)
+        {
+            Object obj = e.getSource();
+            if (obj == localeMenu) {
+                calendarPanel.setCalendarLocale(calendars[localeMenu.getSelectedIndex()]);
+                updateMonthName();
+            }
+            else 
+                if (obj == displayMenu) {
+                    calendarPanel.setDisplayLocale(locales[displayMenu.getSelectedIndex()]);
+                    updateMonthName();
+                }
+        }
+        
+        /**
+        * Print out the error message while debugging this program.
+        */
+        public void errorText(String s)
+        {
+            if (DEBUG)
+            {
+                System.out.println(s);
+            }
+        }
+        
+        protected void processWindowEvent(WindowEvent e)
+        {
+            System.out.println("event " + e);
+            if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+                this.hide();
+                this.dispose();
+
+                if (applet != null) {
+                    applet.demoClosed();
+                } else {
+                    System.exit(0);
+                }
+            }
+        }
+    }
+
+
+    private static class CalendarPanel extends Canvas {
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 1521099412250120821L;
+
+        public CalendarPanel( Locale locale ) {
+            set(locale, locale, new Date());
+        }
+
+        public void setCalendarLocale(Locale locale) {
+            set(locale, fDisplayLocale, fCalendar.getTime());
+        }
+
+        public void setDisplayLocale(Locale locale) {
+            set(fCalendarLocale, locale, fCalendar.getTime());
+        }
+
+        public void set(Date date) {
+            set(fCalendarLocale, fDisplayLocale, date);
+        }
+
+        public void set(Locale loc, Locale display, Date date)
+        {
+            if (fCalendarLocale == null || !loc.equals(fCalendarLocale)) {
+                fCalendarLocale = loc;
+                fCalendar = Calendar.getInstance(fCalendarLocale);
+                fAllHolidays = Holiday.getHolidays(fCalendarLocale);
+            }
+            if (fDisplayLocale == null || !display.equals(fDisplayLocale)) {
+                fDisplayLocale = display;
+                fSymbols = new DateFormatSymbols(fDisplayLocale);
+            }
+
+            fStartOfMonth = date;
+
+            dirty = true;
+            repaint();
+        }
+
+        public void add(int field, int delta)
+        {
+            synchronized(fCalendar) {
+                fCalendar.setTime(fStartOfMonth);
+                fCalendar.add(field, delta);
+                fStartOfMonth = fCalendar.getTime();
+            }
+            dirty = true;
+            repaint();
+        }
+
+        public com.ibm.icu.util.Calendar getCalendar() {
+            return fCalendar;
+        }
+
+        public Locale getCalendarLocale() {
+            return fCalendarLocale;
+        }
+
+        public Locale getDisplayLocale() {
+            return fDisplayLocale;
+        }
+
+
+        public Date firstOfMonth() {
+            return fStartOfMonth;
+        }
+
+        private Date startOfMonth(Date dateInMonth)
+        {
+            synchronized(fCalendar) {
+                fCalendar.setTime(dateInMonth);             // TODO: synchronization
+
+                int era = fCalendar.get(Calendar.ERA);
+                int year = fCalendar.get(Calendar.YEAR);
+                int month = fCalendar.get(Calendar.MONTH);
+
+                fCalendar.clear();
+                fCalendar.set(Calendar.ERA, era);
+                fCalendar.set(Calendar.YEAR, year);
+                fCalendar.set(Calendar.MONTH, month);
+                fCalendar.set(Calendar.DATE, 1);
+
+                return fCalendar.getTime();
+            }
+        }
+
+        private void calculate()
+        {
+            //
+            // As a workaround for JDK 1.1.3 and below, where Calendars and time
+            // zones are a bit goofy, always set my calendar's time zone to UTC.
+            // You would think I would want to do this in the "set" function above,
+            // but if I do that, the program hangs when this class is loaded,
+            // perhaps due to some sort of static initialization ordering problem.
+            // So I do it here instead.
+            //
+            fCalendar.setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+            Calendar c = (Calendar)fCalendar.clone(); // Temporary copy
+
+            fStartOfMonth = startOfMonth(fStartOfMonth);
+
+            // Stash away a few useful constants for this calendar and display
+            minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+            daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+            firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+            // Stash away a Date for the start of this month
+
+            // Find the day of week of the first day in this month
+            c.setTime(fStartOfMonth);
+            firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+
+            // Now find the # of days in the month
+            c.roll(Calendar.DATE, false);
+            daysInMonth = c.get(Calendar.DATE);
+
+            // Finally, find the end of the month, i.e. the start of the next one
+            c.roll(Calendar.DATE, true);
+            c.add(Calendar.MONTH, 1);
+            c.getTime();        // JDK 1.1.2 bug workaround
+            c.add(Calendar.SECOND, -1);
+            Date endOfMonth = c.getTime();
+
+            //
+            // Calculate the number of full or partial weeks in this month.
+            // To do this I can just reuse the code that calculates which
+            // calendar cell contains a given date.
+            //
+            numWeeks = dateToCell(daysInMonth).y - dateToCell(1).y + 1;
+
+            // Remember which holidays fall on which days in this month,
+            // to save the trouble of having to do it later
+            fHolidays.setSize(0);
+
+            for (int h = 0; h < fAllHolidays.length; h++)
+            {
+                Date d = fStartOfMonth;
+                while ( (d = fAllHolidays[h].firstBetween(d, endOfMonth) ) != null)
+                {
+                    c.setTime(d);
+                    fHolidays.addElement( new HolidayInfo(c.get(Calendar.DATE),
+                                            fAllHolidays[h],
+                                            fAllHolidays[h].getDisplayName(fDisplayLocale) ));
+
+                    d.setTime( d.getTime() + 1000 );    // "d++"
+                }
+            }
+            dirty = false;
+        }
+
+        static final int INSET = 2;
+
+        /*
+        * Convert from the day number within a month (1-based)
+        * to the cell coordinates on the calendar (0-based)
+        */
+        private void dateToCell(int date, Point pos)
+        {
+            int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+            if (firstDayInMonth < firstDayOfWeek) {
+                cell += daysInWeek;
+            }
+
+            pos.x = cell % daysInWeek;
+            pos.y = cell / daysInWeek;
+        }
+        private Point dateToCell(int date) {
+            Point p = new Point(0,0);
+            dateToCell(date, p);
+            return p;
+        }
+
+        public void paint(Graphics g) {
+
+            if (dirty) {
+                calculate();
+            }
+
+            Point cellPos = new Point(0,0);     // Temporary variable
+            Dimension d = getSize();
+
+            g.setColor(DemoUtility.bgColor);
+            g.fillRect(0,0,d.width,d.height);
+
+            // Draw the day names at the top
+            g.setColor(Color.black);
+            g.setFont(DemoUtility.labelFont);
+            FontMetrics fm = g.getFontMetrics();
+            int labelHeight = fm.getHeight() + INSET * 2;
+
+            int v = fm.getAscent() + INSET;
+            for (int i = 0; i < daysInWeek; i++) {
+                int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+                String dayName = fSymbols.getWeekdays()[dayNum];
+
+                int h = (int) (d.width * (i + 0.5)) / daysInWeek;
+                h -= fm.stringWidth(dayName) / 2;
+
+                g.drawString(dayName, h, v);
+            }
+
+            double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+            double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+            // Draw a white background in the part of the calendar
+            // that displays this month.
+            // First figure out how much of the first week should be shaded.
+            {
+                g.setColor(Color.white);
+                dateToCell(1, cellPos);
+                int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+                g.fillRect((int)(width), labelHeight ,
+                        (int)(d.width - width), (int)cellHeight);
+
+                // All of the intermediate weeks get shaded completely
+                g.fillRect(0, (int)(labelHeight + cellHeight),
+                            d.width, (int)(cellHeight * (numWeeks - 2)));
+
+                // Now figure out the last week.
+                dateToCell(daysInMonth, cellPos);
+                width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                            width, (int)(cellHeight));
+
+            }
+            // Draw the X/Y grid lines
+            g.setColor(Color.black);
+            for (int i = 0; i <= numWeeks; i++) {
+                int y = (int)(labelHeight + i * cellHeight);
+                g.drawLine(0, y, d.width - 1, y);
+            }
+            for (int i = 0; i <= daysInWeek; i++) {
+                int x = (int)(i * cellWidth);
+                g.drawLine(x, labelHeight, x, d.height - 1);
+            }
+
+            // Now loop through all of the days in the month, figure out where
+            // they go in the grid, and draw the day # for each one
+            Font numberFont = new Font("Helvetica",Font.PLAIN,12);
+            // not used Font holidayFont = DemoUtility.creditFont;
+
+            Calendar c = (Calendar)fCalendar.clone();
+            c.setTime(fStartOfMonth);
+
+            for (int i = 1, h = 0; i <= daysInMonth; i++) {
+                g.setFont(numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                dateToCell(i, cellPos);
+                int x = (int)((cellPos.x + 1) * cellWidth);
+                int y = (int)(cellPos.y * cellHeight + labelHeight);
+
+                StringBuffer buffer = new StringBuffer();
+                buffer.append(i);
+                String dayNum = buffer.toString();
+
+                x = x - INSET - fm.stringWidth(dayNum);
+                y = y + fm.getAscent() + INSET;
+
+                g.drawString(dayNum, x, y);
+
+                // See if any of the holidays land on this day....
+                HolidayInfo info = null;
+                int count = 0;
+
+                // Coordinates of lower-left corner of cell.
+                x = (int)((cellPos.x) * cellWidth);
+                y = (int)((cellPos.y+1) * cellHeight) + labelHeight;
+
+                while (h < fHolidays.size() &&
+                        (info = (HolidayInfo)fHolidays.elementAt(h)).date <= i)
+                {
+                    if (info.date == i) {
+                        // Draw the holiday here.
+                        g.setFont(numberFont);
+                        g.setColor(Color.red);
+
+                        DemoTextBox box = new DemoTextBox(g, info.name, (int)(cellWidth - INSET));
+                        box.draw(g, x + INSET, y - INSET - box.getHeight());
+
+                        y -= (box.getHeight() + INSET);
+                        count++;
+                    }
+                    h++;
+                }
+            }
+        }
+
+        // Important state variables
+        private Locale              fCalendarLocale;    // Whose calendar
+        private Calendar            fCalendar;          // Calendar for calculations
+
+        private Locale              fDisplayLocale;     // How to display it
+        private DateFormatSymbols   fSymbols;           // Symbols for drawing
+
+        private Date                fStartOfMonth;      // 00:00:00 on first day of month
+
+        // Cached calculations to make drawing faster.
+        private transient int minDay;           // Minimum legal day #
+        private transient int daysInWeek;       // # of days in a week
+        private transient int firstDayOfWeek;   // First day to display in week
+        private transient int numWeeks;         // # full or partial weeks in month
+        private transient int daysInMonth;      // # days in this month
+        private transient int firstDayInMonth;  // Day of week of first day in month
+
+        private transient Holiday[] fAllHolidays;
+        private transient Vector    fHolidays = new Vector(5,5);
+
+        private transient boolean dirty = true;
+    }
+
+    private static class HolidayInfo {
+        public HolidayInfo(int date, Holiday holiday, String name) {
+            this.date = date;
+            this.holiday = holiday;
+            this.name = name;
+        }
+
+        public Holiday holiday;
+        public int date;
+        public String name;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/package.html b/src/com/ibm/icu/dev/demo/holiday/package.html
new file mode 100644
index 0000000..d05e2f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Holiday demo application.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
new file mode 100644
index 0000000..1f6ad3d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.applet.*;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * <p>A Frame that runs an Applet within itself, making it possible
+ * for an applet to run as an application.  Usage:
+ *
+ * <pre>
+ * public class MyApplet extends Applet {
+ *     public static void main(String args[]) {
+ *         MyApplet applet = new MyApplet();
+ *         new AppletFrame("My Applet Running As An App", applet, 640, 480);
+ *     }
+ *     ...
+ * }
+ * <pre>
+ *
+ * @author Alan Liu
+ */
+public class AppletFrame extends Frame implements AppletStub, AppletContext {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 818828281190757725L;
+    Applet applet;
+
+    /**
+     * Construct a Frame running the given Applet with the default size
+     * of 640 by 480.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     */
+    public AppletFrame(String name, Applet applet) {
+        this(name, applet, 640, 480);
+    }
+
+    /**
+     * Construct a Frame running the given Applet with the given size.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     * @param width width of the Frame
+     * @param height height of the Frame
+     */
+    public AppletFrame(String name, Applet applet, int width, int height) {
+        super(name);
+        this.applet = applet;
+        applet.setStub(this);
+
+        setSize(width, height);
+        add("Center", applet);
+        show();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                AppletFrame.this.applet.stop();
+                dispose();
+                System.exit(0);
+            }
+        });
+
+        applet.init();
+        applet.start();
+    }
+
+    // AppletStub API
+    public void appletResize(int width, int height) {
+        setSize(width, height);
+    }
+
+    public AppletContext getAppletContext() {
+        return this;
+    }
+
+    public URL getCodeBase() {
+        return null;
+    }
+
+    public URL getDocumentBase() {
+        return null;
+    }
+    
+    public String getParameter(String name) {
+        return "PARAMETER";
+    }
+
+    public boolean isActive() {
+        return true;
+    }
+    
+    
+    // AppletContext API
+    public Applet getApplet(String name) {
+        return applet;
+    }
+
+    public Enumeration getApplets() {
+        return null;
+    }
+
+    public AudioClip getAudioClip(URL url) {
+        return null;
+    }
+
+    public Image getImage(URL url) {
+        return null;
+    }
+
+    public void showDocument(URL url) {}
+    public void showDocument(URL url, String target) {}
+
+    public void showStatus(String status) {
+        System.out.println(status);
+    }
+    
+    public void setStream(String key, InputStream stream) throws IOException {
+    }
+    
+    public InputStream getStream(String key) {
+        return null;
+    }
+    
+    public Iterator getStreamKeys() {
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
new file mode 100644
index 0000000..554cf9e
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.*;
+import java.awt.event.*;
+
+public abstract class DemoApplet extends java.applet.Applet {
+    private static final long serialVersionUID = -8983602961925702071L;
+    private Button   demoButton;
+    private Frame    demoFrame;
+    private static int demoFrameCount = 0;
+
+    protected abstract Frame createDemoFrame(DemoApplet applet);
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+        return new Dimension(700, 550);
+    }
+
+    //Create a button that will display the demo
+    public void init()
+    {
+        setBackground(Color.white);
+        demoButton = new Button("Demo");
+        demoButton.setBackground(Color.yellow);
+        add( demoButton );
+
+        demoButton.addActionListener( new ActionListener() {
+             public void actionPerformed(ActionEvent e) {
+                if (e.getID() == ActionEvent.ACTION_PERFORMED) {
+                    demoButton.setLabel("loading");
+
+                    if (demoFrame == null) {
+                       demoFrame = createDemoFrame(DemoApplet.this);
+                       showDemo();
+                    }
+
+                    demoButton.setLabel("Demo");
+                }
+             }
+        } );
+    }
+
+    public void showDemo()
+    {
+        demoFrame = createDemoFrame(this);
+        demoFrame.doLayout();
+        Dimension d = getDefaultFrameSize(this, demoFrame);
+        demoFrame.setSize(d.width, d.height);
+        demoFrame.show();
+        demoFrameOpened();
+    }
+
+    public void demoClosed()
+    {
+        demoFrame = null;
+        demoFrameClosed();
+    }
+
+    public static void demoFrameOpened() {
+        demoFrameCount++;
+        System.err.println("DemoFrameOpened, now at:"+demoFrameCount);
+    }
+    public static void demoFrameClosed() {
+        if (--demoFrameCount == 0) {
+            System.err.println("DemoFrameClosed, now at:"+demoFrameCount + " - quitting");
+            System.exit(0);
+        }
+        System.err.println("DemoFrameClosed, now at:"+demoFrameCount);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
new file mode 100644
index 0000000..bdd28ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
@@ -0,0 +1,95 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+
+import java.text.BreakIterator;
+import java.awt.*;
+
+public class DemoTextBox {
+
+    public DemoTextBox(Graphics g, String text, int width)
+    {
+        this.text = text;
+        this.chars = new char[text.length()];
+        text.getChars(0, text.length(), chars, 0);
+
+        this.width = width;
+//        this.port = g;
+        this.metrics = g.getFontMetrics();
+
+        breakText();
+    }
+
+    public  int getHeight() {
+        return (nbreaks + 1) * metrics.getHeight();
+    }
+
+    public  void draw(Graphics g, int x, int y)
+    {
+        int index = 0;
+
+        y += metrics.getAscent();
+
+        for (int i = 0; i < nbreaks; i++)
+        {
+            g.drawChars(chars, index, breakPos[i] - index, x, y);
+            index = breakPos[i];
+            y += metrics.getHeight();
+        }
+
+        g.drawChars(chars, index, chars.length - index, x, y);
+    }
+
+
+    private void breakText()
+    {
+        if (metrics.charsWidth(chars, 0, chars.length) > width)
+        {
+            BreakIterator iter = BreakIterator.getWordInstance();
+            iter.setText(text);
+
+            int start = iter.first();
+            int end = start;
+            int pos;
+
+            while ( (pos = iter.next()) != BreakIterator.DONE )
+            {
+                int w = metrics.charsWidth(chars, start, pos - start);
+                if (w > width)
+                {
+                    // We've gone past the maximum width, so break the line
+                    if (end > start) {
+                        // There was at least one break position before this point
+                        breakPos[nbreaks++] = end;
+                        start = end;
+                        end = pos;
+                    } else {
+                        // There weren't any break positions before this one, so
+                        // let this word overflow the margin (yuck)
+                        breakPos[nbreaks++] = pos;
+                        start = end = pos;
+                    }
+                } else {
+                    // the current position still fits on the line; it's the best
+                    // tentative break position we have so far.
+                    end = pos;
+                }
+
+            }
+        }
+    }
+
+    private String          text;
+    private char[]          chars;
+//    private Graphics        port;
+    private FontMetrics     metrics;
+    private int             width;
+
+    private int[]           breakPos = new int[10]; // TODO: get real
+    private int             nbreaks = 0;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
new file mode 100644
index 0000000..5c5c3f4
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.*;
+import java.util.*;
+
+public class DemoUtility
+{
+    public static final Font titleFont = new Font("TimesRoman",Font.BOLD,18);
+    public static final Font labelFont = new Font("TimesRoman",Font.BOLD,14);
+    public static final Font choiceFont = new Font("Helvetica",Font.BOLD,12);
+    public static final Font editFont = new Font("Helvetica",Font.PLAIN,14);
+    public static final Font creditFont = new Font("Helvetica",Font.PLAIN,10);
+    public static final Font numberFont = new Font("sansserif", Font.PLAIN, 14);
+
+    public static final Color bgColor = Color.lightGray;
+    public static final Color choiceColor = Color.white;
+
+    public static final String copyright1 =
+        "Copyright (C) IBM Corp and others. 1997 - 2002 All Rights Reserved";
+
+    /**
+    Provides easy way to use basic functions of GridBagLayout, without
+    the complications. After building a panel, and inserting all the
+    * subcomponents, call this to lay it out in the desired number of columns.
+    */
+    public static void fixGrid(Container cont, int columns) {
+        GridBagLayout gridbag = new GridBagLayout();
+        cont.setLayout(gridbag);
+
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.VERTICAL;
+        c.weightx = 1.0;
+        c.insets = new Insets(2,2,2,2);
+
+        Component[] components = cont.getComponents();
+        for (int i = 0; i < components.length; ++i) {
+            // not used int colNumber = i%columns;
+            c.gridwidth = 1;    // default
+            if ((i%columns) == columns - 1)
+                c.gridwidth = GridBagConstraints.REMAINDER;    // last in grid
+            if (components[i] instanceof Label) {
+                switch (((Label)components[i]).getAlignment()) {
+                case Label.CENTER: c.anchor = GridBagConstraints.CENTER; break;
+                case Label.LEFT: c.anchor = GridBagConstraints.WEST; break;
+                case Label.RIGHT: c.anchor = GridBagConstraints.EAST; break;
+                }
+            }
+            gridbag.setConstraints(components[i], c);
+        }
+
+    }
+
+    /**
+    Provides easy way to change the spacing around an object in a GridBagLayout.
+    Call AFTER fixGridBag, passing in the container, the component, and the
+    new insets.
+    */
+    public static void setInsets(Container cont, Component comp, Insets insets) {
+        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
+        GridBagConstraints g = gbl.getConstraints(comp);
+        g.insets = insets;
+        gbl.setConstraints(comp,g);
+    }
+
+    public static Panel createSpacer() {
+        Panel spacer = new Panel();
+        spacer.setLayout(null);
+        spacer.setSize(1000, 1);
+        return spacer;
+    }
+
+    // to avoid goofy updates and misplaced cursors
+    public static void setText(TextComponent area, String newText) {
+        String foo = area.getText();
+        if (foo.equals(newText)) return;
+        area.setText(newText);
+    }
+    
+    /**
+     * Compares two locals. Return value is negative
+     * if they're different, and more positive the more
+     * fields that match.
+     */
+     
+    public static int compareLocales(Locale l1, Locale l2)
+    {
+        int result = -1;
+        
+        if (l1.getLanguage().equals(l2.getLanguage())) {
+            result += 1;
+            
+            if (l1.getCountry().equals(l2.getCountry())) {
+                result += 1;
+                
+                if (l1.getVariant().equals(l2.getVariant())) {
+                    result += 1;
+                }
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Get the G7 locale list for demos.
+     */
+    public static Locale[] getG7Locales() {
+        return localeList;
+    }
+    private static Locale[] localeList = {
+        new Locale("DA", "DK", ""),
+        new Locale("EN", "US", ""),
+        new Locale("EN", "GB", ""),
+        new Locale("EN", "CA", ""),
+        new Locale("FR", "FR", ""),
+        new Locale("FR", "CA", ""),
+        new Locale("DE", "DE", ""),
+        new Locale("IT", "IT", ""),
+    //new Locale("JA", "JP", ""),
+    };
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
new file mode 100644
index 0000000..b854ff3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
@@ -0,0 +1,804 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+
+// LIU: Changed from final to non-final
+public class DumbTextComponent extends Canvas
+  implements KeyListener, MouseListener, MouseMotionListener, FocusListener
+{
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8265547730738652151L;
+
+//    private transient static final String copyright =
+//      "Copyright \u00A9 1998, Mark Davis. All Rights Reserved.";
+    private transient static boolean DEBUG = false;
+
+    private String contents = "";
+    private Selection selection = new Selection();
+    private int activeStart = -1;
+    private boolean editable = true;
+
+    private transient Selection tempSelection = new Selection();
+    private transient boolean focus;
+    private transient BreakIterator lineBreaker = BreakIterator.getLineInstance();
+    private transient BreakIterator wordBreaker = BreakIterator.getWordInstance();
+    private transient BreakIterator charBreaker = BreakIterator.getCharacterInstance();
+    private transient int lineAscent;
+    private transient int lineHeight;
+    private transient int lineLeading;
+    private transient int lastHeight = 10;
+    private transient int lastWidth = 50;
+    private static final int MAX_LINES = 200; // LIU: Use symbolic name
+    private transient int[] lineStarts = new int[MAX_LINES]; // LIU
+    private transient int lineCount = 1;
+
+    private transient boolean valid = false;
+    private transient FontMetrics fm;
+    private transient boolean redoLines = true;
+    private transient boolean doubleClick = false;
+    private transient TextListener textListener;
+    private transient ActionListener selectionListener;
+    private transient Image cacheImage;
+    private transient Dimension mySize;
+    private transient int xInset = 5;
+    private transient int yInset = 5;
+    private transient Point startPoint = new Point();
+    private transient Point endPoint = new Point();
+    private transient Point caretPoint = new Point();
+    private transient Point activePoint = new Point();
+    
+    //private transient static String clipBoard;
+
+    private static final char CR = '\015'; // LIU
+
+    // ============================================
+
+    public DumbTextComponent() {
+        addMouseListener(this);
+        addMouseMotionListener(this);
+        addKeyListener(this);
+        addFocusListener(this);
+        setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
+
+    }
+
+// ================ Events ====================
+
+    // public boolean isFocusTraversable() { return true; }
+
+    public void addActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.add(selectionListener, l);
+    }
+
+    public void removeActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.remove(selectionListener, l);
+    }
+
+    public void addTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.add(textListener, l);
+    }
+
+    public void removeTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.remove(textListener, l);
+    }
+
+    private transient boolean pressed;
+
+    public void mousePressed(MouseEvent e) {
+        if (DEBUG) System.out.println("mousePressed");
+        if (pressed) {
+            select(e,false);
+        } else {
+            doubleClick = e.getClickCount() > 1;
+            requestFocus();
+            select(e, true);
+            pressed = true;
+        }
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseDragged");
+        select(e, false);
+    }
+
+    public void mouseReleased(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseReleased");
+        pressed = false;
+    }
+
+    public void mouseEntered(MouseEvent e) {
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseExited(MouseEvent e){
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseClicked(MouseEvent e) {}
+    public void mouseMoved(MouseEvent e) {}
+
+
+    public void focusGained(FocusEvent e) {
+        if (DEBUG) System.out.println("focusGained");
+        focus = true;
+        valid = false;
+        repaint(16);
+    }
+    public void focusLost(FocusEvent e) {
+        if (DEBUG) System.out.println("focusLost");
+        focus = false;
+        valid = false;
+        repaint(16);
+    }
+
+    public void select(MouseEvent e, boolean first) {
+        setKeyStart(-1);
+        point2Offset(e.getPoint(), tempSelection);
+        if (first) {
+            if ((e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+        }
+        // fix words
+        if (doubleClick) {
+            tempSelection.expand(wordBreaker);
+        }
+        select(tempSelection);
+    }
+    
+    public void keyPressed(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyPressed "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+        int start = selection.getStart();
+        int end = selection.getEnd();
+        boolean shift = (e.getModifiers() & InputEvent.SHIFT_MASK) != 0;
+        boolean ctrl = (e.getModifiers() & InputEvent.CTRL_MASK) != 0;
+                
+        switch (code) {
+        case KeyEvent.VK_Q:
+            if (!ctrl || !editable) break;
+            setKeyStart(-1);
+            fixHex();
+            break;
+        case KeyEvent.VK_V:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                paste();
+            }
+            break;
+        case KeyEvent.VK_C:
+            if (!ctrl) break;
+            copy();
+            break;
+        case KeyEvent.VK_X:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                copy();
+                insertText("");
+            }
+            break;
+        case KeyEvent.VK_A:
+            if (!ctrl) break;
+            setKeyStart(-1);
+            select(Integer.MAX_VALUE, 0, false);
+            break;
+        case KeyEvent.VK_RIGHT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, +1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_LEFT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, -1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_UP: // LIU: Add support for up arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, -1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DOWN: // LIU: Add support for down arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, +1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DELETE: // LIU: Add delete key support
+            if (!editable) break;
+            setKeyStart(-1);
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep();
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;            
+        }
+    }
+
+    void copy() {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        StringSelection ss = new StringSelection(
+            contents.substring(selection.getStart(), selection.getEnd()));
+        cb.setContents(ss, ss);
+    }
+    
+    void paste () {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        Transferable t = cb.getContents(this);
+        if (t == null) {
+            this.getToolkit().beep();
+            return;
+        }
+        try {
+            String temp = (String) t.getTransferData(DataFlavor.stringFlavor);
+            insertText(temp);
+        } catch (Exception e) {
+            this.getToolkit().beep();
+        }            
+    }
+
+    /**
+     * LIU: Given an offset into contents, moves up or down by lines,
+     * according to lineStarts[].
+     * @param off the offset into contents
+     * @param delta how many lines to move up (< 0) or down (> 0)
+     * @return the new offset into contents
+     */
+    private int lineDelta(int off, int delta) {
+        int line = findLine(off, false);
+        int posInLine = off - lineStarts[line];
+        // System.out.println("off=" + off + " at " + line + ":" + posInLine);
+        line += delta;
+        if (line < 0) {
+            line = posInLine = 0;
+        } else if (line >= lineCount) {
+            return contents.length();
+        }
+        off = lineStarts[line] + posInLine;
+        if (off >= lineStarts[line+1]) {
+            off = lineStarts[line+1] - 1;
+        }
+        return off;
+    }
+      
+    public void keyReleased(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyReleased "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+    }
+
+    public void keyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        if (DEBUG) System.out.println("keyTyped "
+          + hex((char)ch) + ", " + hex((char)e.getModifiers()));
+        if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) return;
+        int start, end;
+        switch (ch) {
+        case KeyEvent.CHAR_UNDEFINED:
+            break;
+        case KeyEvent.VK_BACK_SPACE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                --start;
+                if (start < 0) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;        
+        case KeyEvent.VK_DELETE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;
+        default:
+            if (!editable) break;
+            // LIU: Dispatch to subclass API
+            handleKeyTyped(e);
+            break;
+        }
+    }
+
+    // LIU: Subclass API for handling of key typing
+    protected void handleKeyTyped(KeyEvent e) {
+        insertText(String.valueOf(e.getKeyChar()));
+    }
+    
+    protected void setKeyStart(int keyStart) {
+        if (activeStart != keyStart) {
+            activeStart = keyStart;
+            repaint(10);
+        }
+    }
+    
+    protected void validateKeyStart() {
+        if (activeStart > selection.getStart()) {
+            activeStart = selection.getStart();
+            repaint(10);
+        }
+    }
+    
+    protected int getKeyStart() {
+        return activeStart;
+    }
+
+// ===================== Control ======================
+
+    public synchronized void setEditable(boolean b) {
+        editable = b;
+    }
+
+    public boolean isEditable() {
+        return editable;
+    }
+
+    public void select(Selection newSelection) {
+        newSelection.pin(contents);
+        if (!selection.equals(newSelection)) {
+            selection.set(newSelection);
+            if (selectionListener != null) {
+                selectionListener.actionPerformed(
+                  new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+                    "Selection Changed", 0));
+            }
+            repaint(10);
+            valid = false;
+        }
+    }
+
+    public void select(int start, int end) {
+        select(start, end, false);
+    }
+
+    public void select(int start, int end, boolean clickAfter) {
+        tempSelection.set(start, end, clickAfter);
+        select(tempSelection);
+    }
+
+    public int getSelectionStart() {
+        return selection.getStart();
+    }
+
+    public int getSelectionEnd() {
+        return selection.getEnd();
+    }
+
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x,y,w,h);
+        redoLines = true;
+    }
+
+    public Dimension getPreferredSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMaximumSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMinimumSize() {
+        return new Dimension(lastHeight,lastHeight);
+    }
+
+    public void setText(String text) {
+        setText2(text);
+        select(tempSelection.set(selection).pin(contents));
+    }
+
+    public void setText2(String text) {
+        contents = text;
+        charBreaker.setText(text);
+        wordBreaker.setText(text);
+        lineBreaker.setText(text);
+        redoLines = true;
+        if (textListener != null)
+            textListener.textValueChanged(
+              new TextEvent(this, TextEvent.TEXT_VALUE_CHANGED));
+        repaint(16);
+    }
+
+    public void insertText(String text) {
+        if (activeStart == -1) activeStart = selection.getStart();
+        replaceRange(text, selection.getStart(), selection.getEnd());
+    }
+
+    public void replaceRange(String s, int start, int end) {
+        setText2(contents.substring(0,start) + s
+          + contents.substring(end));
+        select(tempSelection.set(selection).
+          fixAfterReplace(start, end, s.length()));
+        validateKeyStart();
+    }
+
+    public String getText() {
+        return contents;
+    }
+
+    public void setFont(Font font) {
+        super.setFont(font);
+        redoLines = true;
+        repaint(16);
+    }
+
+    // ================== Graphics ======================
+
+    public void update(Graphics g) {
+        if (DEBUG) System.out.println("update");
+        paint(g);
+    }
+
+    public void paint(Graphics g) {
+        mySize = getSize();
+        if (cacheImage == null
+          || cacheImage.getHeight(this) != mySize.height
+          || cacheImage.getWidth(this) != mySize.width) {
+            cacheImage = createImage(mySize.width, mySize.height);
+            valid = false;
+        }
+        if (!valid || redoLines) {
+            if (DEBUG) System.out.println("painting");
+            paint2(cacheImage.getGraphics());
+            valid = true;
+        }
+        //getToolkit().sync();
+        if (DEBUG) System.out.println("copying");
+        g.drawImage(cacheImage,
+          0, 0, mySize.width, mySize.height,
+          0, 0, mySize.width, mySize.height,
+          this);
+    }
+
+    public void paint2(Graphics g) {
+        g.clearRect(0, 0, mySize.width, mySize.height);
+        if (DEBUG) System.out.println("print");
+        if (focus) g.setColor(Color.black);
+        else g.setColor(Color.gray);
+        g.drawRect(0,0,mySize.width-1,mySize.height-1);
+        g.setClip(1,1,
+          mySize.width-2,mySize.height-2);
+        g.setColor(Color.black);
+        g.setFont(getFont());
+        fm = g.getFontMetrics();
+        lineAscent = fm.getAscent();
+        lineLeading = fm.getLeading();
+        lineHeight = lineAscent + fm.getDescent() + lineLeading;
+        int y = yInset + lineAscent;
+        String lastSubstring = "";
+        if (redoLines) fixLineStarts(mySize.width-xInset-xInset);
+        for (int i = 0; i < lineCount; y += lineHeight, ++i) {
+            // LIU: Don't display terminating ^M characters
+            int lim = lineStarts[i+1];
+            if (lim > 0 && contents.length() > 0 &&
+                contents.charAt(lim-1) == CR) --lim;
+            lastSubstring = contents.substring(lineStarts[i],lim);
+            g.drawString(lastSubstring, xInset, y);
+        }
+        drawSelection(g, lastSubstring);
+        lastHeight = y + yInset - lineHeight + yInset;
+        lastWidth = mySize.width-xInset-xInset;
+    }
+
+    void paintRect(Graphics g, int x, int y, int w, int h) {
+        if (focus) {
+            g.fillRect(x, y, w, h);
+        } else {
+            g.drawRect(x, y, w-1, h-1);
+        }
+    }
+
+    public void drawSelection(Graphics g, String lastSubstring) {
+        g.setXORMode(Color.black);
+        if (activeStart != -1) {
+            offset2Point(activeStart, false, activePoint);
+            g.setColor(Color.magenta);
+            int line = activePoint.x - 1;
+            g.fillRect(line, activePoint.y, 1, lineHeight);
+        }
+        if (selection.isCaret()) {
+            offset2Point(selection.caret, selection.clickAfter, caretPoint);
+        } else {
+            if (focus) g.setColor(Color.blue);
+            else g.setColor(Color.yellow);
+            offset2Point(selection.getStart(), true, startPoint);
+            offset2Point(selection.getEnd(), false, endPoint);
+            if (selection.getStart() == selection.caret)
+                caretPoint.setLocation(startPoint);
+            else caretPoint.setLocation(endPoint);
+            if (startPoint.y == endPoint.y) {
+                paintRect(g, startPoint.x, startPoint.y,
+                  Math.max(1,endPoint.x-startPoint.x), lineHeight);
+            } else {
+                paintRect(g, startPoint.x, startPoint.y,
+                  (mySize.width-xInset)-startPoint.x, lineHeight);
+                if (startPoint.y + lineHeight < endPoint.y)
+                  paintRect(g, xInset, startPoint.y + lineHeight,
+                  (mySize.width-xInset)-xInset, endPoint.y - startPoint.y - lineHeight);
+                paintRect(g, xInset, endPoint.y, endPoint.x-xInset, lineHeight);
+            }
+        }
+        if (focus || selection.isCaret()) {
+            if (focus) g.setColor(Color.green);
+            else g.setColor(Color.red);
+            int line = caretPoint.x - (selection.clickAfter ? 0 : 1);
+            g.fillRect(line, caretPoint.y, 1, lineHeight);
+            int w = lineHeight/12 + 1;
+            int braces = line - (selection.clickAfter ? -1 : w);
+            g.fillRect(braces, caretPoint.y, w, 1);
+            g.fillRect(braces, caretPoint.y + lineHeight - 1, w, 1);
+        }
+    }
+
+    public Point offset2Point(int off, boolean start, Point p) {
+        int line = findLine(off, start);
+        int width = 0;
+        try {
+            width = fm.stringWidth(
+              contents.substring(lineStarts[line], off));
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+        p.x = width + xInset;
+        if (p.x > mySize.width - xInset)
+            p.x = mySize.width - xInset;
+        p.y = lineHeight * line + yInset;
+        return p;
+    }
+
+    private int findLine(int off, boolean start) {
+        // if it is start, then go to the next line!
+        if (start) ++off;
+        for (int i = 1; i < lineCount; ++i) {
+            // LIU: This was <= ; changed to < to make caret after
+            // final CR in line appear at START of next line.
+            if (off < lineStarts[i]) return i-1;
+        }
+        // LIU: Check for special case; after CR at end of the last line
+        if (off == lineStarts[lineCount] &&
+            off > 0 && contents.length() > 0 && contents.charAt(off-1) == CR) {
+            return lineCount;
+        }
+        return lineCount-1;
+    }
+
+    // offsets on any line will go from start,true to end,false
+    // excluding start,false and end,true
+    public Selection point2Offset(Point p, Selection o) {
+        if (p.y < yInset) {
+            o.caret = 0;
+            o.clickAfter = true;
+            return o;
+        }
+        int line = (p.y - yInset)/lineHeight;
+        if (line >= lineCount) {
+            o.caret = contents.length();
+            o.clickAfter = false;
+            return o;
+        }
+        int target = p.x - xInset;
+        if (target <= 0) {
+            o.caret = lineStarts[line];
+            o.clickAfter = true;
+            return o;
+        }
+        int lowGuess = lineStarts[line];
+        int lowWidth = 0;
+        int highGuess = lineStarts[line+1];
+        int highWidth = fm.stringWidth(contents.substring(lineStarts[line],highGuess));
+        if (target >= highWidth) {
+            o.caret = lineStarts[line+1];
+            o.clickAfter = false;
+            return o;
+        }
+        while (lowGuess < highGuess - 1) {
+            int guess = (lowGuess + highGuess)/2;
+            int width = fm.stringWidth(contents.substring(lineStarts[line],guess));
+            if (width <= target) {
+                lowGuess = guess;
+                lowWidth = width;
+                if (width == target) break;
+            } else {
+                highGuess = guess;
+                highWidth = width;
+            }
+        }
+        // at end, either lowWidth < target < width(low+1), or lowWidth = target
+        int highBound = charBreaker.following(lowGuess);
+        int lowBound = charBreaker.previous();
+        // we are now at character boundaries
+        if (lowBound != lowGuess)
+            lowWidth = fm.stringWidth(contents.substring(lineStarts[line],lowBound));
+        if (highBound != highGuess)
+            highWidth = fm.stringWidth(contents.substring(lineStarts[line],highBound));
+        // we now have the right widths
+        if (target - lowWidth < highWidth - target) {
+            o.caret = lowBound;
+            o.clickAfter = true;
+        } else {
+            o.caret = highBound;
+            o.clickAfter = false;
+        }
+        // we now have the closest!
+        return o;
+    }
+
+    private void fixLineStarts(int width) {
+        lineCount = 1;
+        lineStarts[0] = 0;
+        if (contents.length() == 0) {
+            lineStarts[1] = 0;
+            return;
+        }
+        int end = 0;
+        // LIU: Add check for MAX_LINES
+        for (int start = 0; start < contents.length() && lineCount < MAX_LINES;
+             start = end) {
+            end = nextLine(fm, start, width);
+            lineStarts[lineCount++] = end;
+            if (end == start) { // LIU: Assertion
+                throw new RuntimeException("nextLine broken");
+            }
+        }
+        --lineCount;
+        redoLines = false;
+    }
+
+    // LIU: Enhanced to wrap long lines.  Bug with return of start fixed.
+    public int nextLine(FontMetrics fMtr, int start, int width) {
+        int len = contents.length();
+        for (int i = start; i < len; ++i) {
+            // check for line separator
+            char ch = (contents.charAt(i));
+            if (ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029) {
+                len = i + 1;
+                if (ch == 0x000D && i+1 < len && contents.charAt(i+1) == 0x000A) // crlf
+                    ++len; // grab extra char
+                break;
+            }
+        }
+        String subject = contents.substring(start,len);
+        if (visibleWidth(fMtr, subject) <= width)
+          return len;
+
+        // LIU: Remainder of this method rewritten to accomodate lines
+        // longer than the component width by first trying to break
+        // into lines; then words; finally chars.
+        int n = findFittingBreak(fMtr, subject, width, lineBreaker);
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, wordBreaker);
+        }
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, charBreaker);
+        }
+        return n > 0 ? start + n : len;
+    }
+
+    /**
+     * LIU: Finds the longest substring that fits a given width
+     * composed of subunits returned by a BreakIterator.  If the smallest
+     * subunit is too long, returns 0.
+     * @param fMtr metrics to use
+     * @param line the string to be fix into width
+     * @param width line.substring(0, result) must be <= width
+     * @param breaker the BreakIterator that will be used to find subunits
+     * @return maximum characters, at boundaries returned by breaker,
+     * that fit into width, or zero on failure
+     */
+    private int findFittingBreak(FontMetrics fMtr, String line, int width,
+                                 BreakIterator breaker) {
+        breaker.setText(line);
+        int last = breaker.first();
+        int end = breaker.next();
+        while (end != BreakIterator.DONE &&
+               visibleWidth(fMtr, line.substring(0, end)) <= width) {
+            last = end;
+            end = breaker.next();
+        }
+        return last;
+    }
+
+    public int visibleWidth(FontMetrics fMtr, String s) {
+        int i;
+        for (i = s.length()-1; i >= 0; --i) {
+            char ch = s.charAt(i);
+            if (!(ch == ' ' || ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029))
+                return fMtr.stringWidth(s.substring(0,i+1));
+        }
+        return 0;
+    }
+
+// =============== Utility ====================
+
+    private void fixHex() {
+        if (selection.getEnd() == 0) return;
+        int store = 0;
+        int places = 1;
+        int count = 0;
+        int min = Math.min(8,selection.getEnd());
+        for (int i = 0; i < min; ++i) {
+            char ch = contents.charAt(selection.getEnd()-1-i);
+            int value = Character.getNumericValue(ch);
+            if (value < 0 || value > 15) break;
+            store += places * value;
+            ++count;
+            places *= 16;
+        }
+        String add = "";
+        int bottom = store & 0xFFFF;
+        if (store >= 0xD8000000 && store < 0xDC000000
+          && bottom >= 0xDC00 && bottom < 0xE000) { // surrogates
+            add = "" + (char)(store >> 16) + (char)bottom;
+        } else if (store > 0xFFFF && store <= 0x10FFFF) {
+            store -= 0x10000;
+            add = "" + (char)(((store >> 10) & 0x3FF) + 0xD800)
+              + (char)((store & 0x3FF) + 0xDC00);
+              
+        } else if (count >= 4) {
+            count = 4;
+            add = ""+(char)(store & 0xFFFF);
+        } else {
+            count = 1;
+            char ch = contents.charAt(selection.getEnd()-1);
+            add = hex(ch);
+            if (ch >= 0xDC00 && ch <= 0xDFFF && selection.getEnd() > 1) {
+                ch = contents.charAt(selection.getEnd()-2);
+                if (ch >= 0xD800 && ch <= 0xDBFF) {
+                    count = 2;
+                    add = hex(ch) + add;
+                }
+            }
+        }
+        replaceRange(add, selection.getEnd()-count, selection.getEnd());
+    }
+
+    public static String hex(char ch) {
+        String result = Integer.toString(ch,16).toUpperCase();
+        result = "0000".substring(result.length(),4) + result;
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/Selection.java b/src/com/ibm/icu/dev/demo/impl/Selection.java
new file mode 100644
index 0000000..7f80a4d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/Selection.java
@@ -0,0 +1,161 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.text.*;
+
+public final class Selection {
+
+    public int anchor;
+    public int caret;
+    public boolean clickAfter;
+
+    public int getStart() {
+        return anchor < caret ? anchor : caret;
+    }
+
+    public int getEnd() {
+        return anchor > caret ? anchor : caret;
+    }
+
+    public boolean isCaret() {
+        return anchor == caret;
+    }
+
+    public Selection set(Selection other) {
+        anchor = other.anchor;
+        caret = other.caret;
+        clickAfter = other.clickAfter;
+        return this;
+    }
+
+    public Selection set(int anchor, int caret, boolean clickAfter) {
+        this.anchor = anchor;
+        this.caret = caret;
+        this.clickAfter = clickAfter;
+        return this;
+    }
+
+    public boolean equals(Object other) {
+        Selection other2 = (Selection)other;
+        return anchor == other2.anchor
+          && caret == other2.caret
+          && clickAfter == other2.clickAfter;
+    }
+
+    public boolean isLessThan(Selection other) {
+        return getStart() < other.getEnd();
+    }
+
+    public Selection pin(String text) {
+        if (anchor > text.length()) {
+            anchor = text.length();
+        } else if (anchor < 0) {
+            anchor = 0;
+        }
+        if (caret > text.length()) {
+            caret = text.length();
+            clickAfter = true;
+        } else if (caret < 0) {
+            caret = 0;
+            clickAfter = false;
+        }
+        return this;
+    }
+
+    public Selection swap(Selection after) {
+        int temp = anchor;
+        anchor = after.anchor;
+        after.anchor = temp;
+        temp = caret;
+        caret = after.caret;
+        after.caret = temp;
+        boolean b = clickAfter;
+        clickAfter = after.clickAfter;
+        after.clickAfter = b;
+        return this;
+    }
+
+    public Selection fixAfterReplace(int start, int end, int len) {
+        if (anchor >= start) {
+            if (anchor < end) anchor = end;
+            anchor = start + len + anchor - end;
+        }
+        if (caret >= start) {
+            if (caret < end) caret = end;
+            caret = start + len + caret - end;
+        }
+        return this;
+    }
+
+        // Mac & Windows considerably different
+        // Mac: end++. If start!=end, start=end
+        //  SHIFT: move end right
+        //  CTL: no different
+        // Windows:
+        //  UNSHIFTED: if start!=end, start = end, else start=end=end+1;
+        //       anchor = tip = start
+        //  SHIFT: tip++
+        //  CTL: if start!=end, start = end = nextbound(end-1),
+        //   else start=end=nextbound(end)
+        //       anchor = tip = start
+        //  CTL/SHIFT: tip = nextbound(tip)
+
+    public Selection nextBound(BreakIterator breaker,
+      int direction, boolean extend) {
+        if (!extend && anchor != caret) caret -= direction;
+        caret = next(caret, breaker, direction, true);
+        if (!extend) anchor = caret;
+        clickAfter = false;
+        return this;
+    }
+
+    // expand start and end to word breaks--if they are not already on one
+    public void expand(BreakIterator breaker) {
+        if (anchor <= caret) {
+            anchor = next(anchor,breaker,-1,false);
+            caret = next(caret,breaker,1,false);
+            /*
+            try {
+                breaker.following(anchor);
+                anchor = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                caret = breaker.following(caret-1);
+            } catch (Exception e) {}
+            */
+        } else {
+            anchor = next(anchor,breaker,1,false);
+            caret = next(caret,breaker,-1,false);
+            /*
+            try {
+                breaker.following(caret);
+                caret = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                anchor = breaker.following(anchor-1);
+            } catch (Exception e) {}
+            */
+        }
+    }
+
+    // different = false - move to next boundary, unless on one
+    // true - move to next boundary, even if on one
+    public static int next(int position, BreakIterator breaker,
+      int direction, boolean different) {
+        if (!different) position -= direction;
+        try {
+            if (direction > 0) {
+                position = breaker.following(position);
+            } else {
+                breaker.following(position-1);
+                position = breaker.previous();
+            }
+        } catch (Exception e) {}
+        return position;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/package.html b/src/com/ibm/icu/dev/demo/impl/package.html
new file mode 100644
index 0000000..a7e8d35
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for demo applications and Applets.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java b/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
new file mode 100644
index 0000000..4912a06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
@@ -0,0 +1,113 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+* Created: May 22 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.demo.number;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * Demonstration code to illustrate how to obtain ICU 2.6-like currency
+ * behavior using pre-ICU 2.6 ICU4J.
+ * @author Mark Davis
+ */
+public class CurrencyDemo {
+
+    public static void main(String[] args) {
+        testFormatHack(true);
+    }
+
+    static NumberFormat getCurrencyFormat(Currency currency,
+                                          Locale displayLocale,
+                                          boolean ICU26) {
+        // code for ICU 2.6
+        if (ICU26) {
+            NumberFormat result = NumberFormat.getCurrencyInstance(displayLocale);
+            result.setCurrency(currency);
+            return result;
+        }
+
+        // ugly work-around for 2.4
+        DecimalFormat result = (DecimalFormat)NumberFormat.getCurrencyInstance(displayLocale);
+        HackCurrencyInfo hack = (HackCurrencyInfo)(hackData.get(currency.getCurrencyCode()));
+        result.setMinimumFractionDigits(hack.decimals);
+        result.setMaximumFractionDigits(hack.decimals);
+        result.setRoundingIncrement(hack.rounding);
+        DecimalFormatSymbols symbols = result.getDecimalFormatSymbols();
+        symbols.setCurrencySymbol(hack.symbol);
+        result.setDecimalFormatSymbols(symbols);
+        return result;
+    }
+        
+    static Map hackData = new HashMap();
+    static class HackCurrencyInfo {
+        int decimals;
+        double rounding;
+        String symbol;
+        HackCurrencyInfo(int decimals, double rounding, String symbol) {
+            this.decimals = decimals;
+            this.rounding = rounding;
+            this.symbol = symbol;
+        }
+    }
+    static {
+        hackData.put("USD", new HackCurrencyInfo(2, 0, "$"));
+        hackData.put("GBP", new HackCurrencyInfo(2, 0, "\u00A3"));
+        hackData.put("JPY", new HackCurrencyInfo(0, 0, "\u00A5"));
+        hackData.put("EUR", new HackCurrencyInfo(2, 0, "\u20AC"));
+    }
+
+    /**
+     * Walk through all locales and compare the output of the ICU26
+     * currency format with the "hacked" currency format.
+     * @param quiet if true, only display discrepancies.  Otherwise,
+     * display all results.
+     */
+    static void testFormatHack(boolean quiet) {
+        String[] testCurrencies = {"USD","GBP","JPY","EUR"};
+        Locale[] testLocales = NumberFormat.getAvailableLocales();
+        for (int i = 0; i < testLocales.length; ++i) {
+            // since none of this should vary by country, we'll just do by language
+            if (!testLocales[i].getCountry().equals("")) continue;
+            boolean noOutput = true;
+            if (!quiet) {
+                System.out.println(testLocales[i].getDisplayName());
+                noOutput = false;
+            }
+            for (int j = 0; j < testCurrencies.length; ++j) {
+                NumberFormat nf26 = getCurrencyFormat(Currency.getInstance(testCurrencies[j]), testLocales[i], true);
+                String str26 = nf26.format(1234.567);
+                if (!quiet) {
+                    System.out.print("\t" + Utility.escape(str26));
+                }
+                NumberFormat nf24 = getCurrencyFormat(Currency.getInstance(testCurrencies[j]), testLocales[i], false);
+                String str24 = nf24.format(1234.567);
+                if (!str24.equals(str26)) {
+                    if (noOutput) {
+                        System.out.println(testLocales[i].getDisplayName());
+                        noOutput = false;
+                    }
+                    if (quiet) {
+                        System.out.print("\t" + Utility.escape(str26));
+                    }
+                    System.out.print(" (" + Utility.escape(str24) + ")");
+                }
+            }
+            if (!noOutput) {
+                System.out.println();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
new file mode 100644
index 0000000..1b67c06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
@@ -0,0 +1,550 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.text.DecimalFormat;
+import java.text.BreakIterator;
+import java.text.ParsePosition;
+import java.util.Locale;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+
+public class RbnfDemo extends DemoApplet {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -9119861296873763536L;
+
+    /**
+     * Puts a copyright in the .class file
+     */
+//    private static final String copyrightNotice
+//        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /*
+     * code to run the demo as an application
+     */
+    public static void main(String[] argv) {
+        new RbnfDemo().showDemo();
+    }
+
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+        return new Dimension(430,270);
+    }
+
+    protected Frame createDemoFrame(DemoApplet applet) {
+        final Frame window = new Frame("Number Spellout Demo");
+        window.setSize(800, 600);
+        window.setLayout(new BorderLayout());
+
+        Panel mainPanel = new Panel();
+        mainPanel.setLayout(new GridLayout(1,2));
+
+        commentaryField = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        commentaryField.setSize(800, 50);
+        commentaryField.setText(RbnfSampleRuleSets.sampleRuleSetCommentary[0]);
+        commentaryField.setEditable(false);
+        commentaryField.setFont(new Font("Helvetica", Font.PLAIN, 14));
+
+        spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.usEnglish, Locale.US);
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+        numberFormatter = new DecimalFormat("#,##0.##########");
+        parsePosition = new ParsePosition(0);
+        theNumber = 0;
+
+        numberField = new TextField();
+        numberField.setFont(new Font("Serif", Font.PLAIN, 24));
+        textField = new DemoTextFieldHolder();
+        textField.setFont(new Font("Serif", Font.PLAIN, 24));
+        rulesField = new DemoTextFieldHolder();
+        rulesField.setFont(new Font("Serif", Font.PLAIN, 14));
+        lenientParseButton = new Checkbox("Lenient parse", lenientParse);
+
+        numberField.addTextListener(new TextListener() {
+            public void textValueChanged(TextEvent e) {
+                if (!numberFieldHasFocus)
+                    return;
+
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                Number temp = numberFormatter.parse(fieldText, parsePosition);
+                if (temp == null || parsePosition.getIndex() == 0) {
+                    theNumber = 0;
+                    textField.setText("PARSE ERROR");
+                }
+                else {
+                    theNumber = temp.doubleValue();
+                    textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+                }
+            }
+        } );
+
+        numberField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                numberFieldHasFocus = false;
+                numberField.setText(numberFormatter.format(theNumber));
+            }
+
+            public void focusGained(FocusEvent e) {
+                numberFieldHasFocus = true;
+                numberField.selectAll();
+            }
+        } );
+
+        textField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    parsePosition.setIndex(0);
+                    theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                        .doubleValue();
+                    if (parsePosition.getIndex() == 0) {
+                        theNumber = 0;
+                        numberField.setText("PARSE ERROR");
+                        textField.selectAll();
+                    }
+                    else if (parsePosition.getIndex() < fieldText.length()) {
+                        textField.select(parsePosition.getIndex(), fieldText.length());
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    else {
+                        textField.selectAll();
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        textField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                .doubleValue();
+                if (parsePosition.getIndex() == 0)
+                    numberField.setText("PARSE ERROR");
+                else
+                    numberField.setText(numberFormatter.format(theNumber));
+                textField.setText(textField.getText()); // textField.repaint() didn't work right
+            }
+
+            public void focusGained(FocusEvent e) {
+                textField.selectAll();
+            }
+        } );
+
+        rulesField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                    RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                        try {
+                            RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                            temp.setLenientParseMode(lenientParse);
+                            populateRuleSetMenu();
+                            spelloutFormatter = temp;
+                            customRuleSet = fieldText;
+                            formatterMenu.select("Custom");
+                            commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[RbnfSampleRuleSets.
+                                sampleRuleSetCommentary.length - 1]);
+                            redisplay();
+                        }
+                        catch (Exception x) {
+                            textField.setText(x.toString());
+                        }
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        rulesField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                    try {
+                        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                        temp.setLenientParseMode(lenientParse);
+                        populateRuleSetMenu();
+                        spelloutFormatter = temp;
+                        customRuleSet = fieldText;
+                        formatterMenu.select("Custom");
+                        redisplay();
+                    }
+                    catch (Exception x) {
+                        textField.setText(x.toString());
+                    }
+                }
+                rulesField.setText(rulesField.getText()); // rulesField.repaint() didn't work right
+            }
+        } );
+
+        lenientParseButton.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                lenientParse = lenientParseButton.getState();
+                spelloutFormatter.setLenientParseMode(lenientParse);
+            }
+        } );
+
+        numberField.setText(numberFormatter.format(theNumber));
+        numberField.selectAll();
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+
+        Panel leftPanel = new Panel();
+        leftPanel.setLayout(new BorderLayout());
+        Panel panel = new Panel();
+        panel.setLayout(new BorderLayout());
+        Panel panel1 = new Panel();
+        panel1.setLayout(new GridLayout(3, 1));
+        panel1.add(new Panel());
+        panel1.add(numberField, "Center");
+        panel1.add(lenientParseButton);
+        panel.add(panel1, "Center");
+        Panel panel2 = new Panel();
+        panel2.setLayout(new GridLayout(3, 3));
+        Button button = new Button("+100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(1);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("<");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber *= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        panel2.add(new Panel());
+        button = new Button(">");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber /= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-1);
+            }
+        } );
+        panel2.add(button);
+        panel.add(panel2, "East");
+        leftPanel.add(panel, "North");
+        leftPanel.add(textField, "Center");
+
+        Panel rightPanel = new Panel();
+        rightPanel.setLayout(new BorderLayout());
+        formatterMenu = new Choice();
+        for (int i = 0; i < RbnfSampleRuleSets.sampleRuleSetNames.length; i++)
+            formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
+        formatterMenu.addItem("Custom");
+        formatterMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                Choice source = (Choice)(e.getSource());
+                int item = source.getSelectedIndex();
+                Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+
+                commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[item]);
+
+                if (locale != null && (locale.getLanguage().equals("iw")
+                        || locale.getLanguage().equals("ru") || locale.getLanguage().equals("ja")
+                        || locale.getLanguage().equals("el")
+                        || locale.getLanguage().equals("zh"))) {
+                    textField.togglePanes(false);
+                    rulesField.togglePanes(false);
+                }
+                else {
+                    textField.togglePanes(true);
+                    rulesField.togglePanes(true);
+                }
+
+                makeNewSpelloutFormatter();
+                redisplay();
+            }
+        } );
+
+        ruleSetMenu = new Choice();
+        populateRuleSetMenu();
+
+        ruleSetMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                ruleSetName = ruleSetMenu.getSelectedItem();
+                redisplay();
+            }
+        } );
+
+        Panel menuPanel = new Panel();
+        menuPanel.setLayout(new GridLayout(1, 2));
+        menuPanel.add(formatterMenu);
+        menuPanel.add(ruleSetMenu);
+        rightPanel.add(menuPanel, "North");
+
+        rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()]);
+        rightPanel.add(rulesField, "Center");
+
+        mainPanel.add(leftPanel);
+        mainPanel.add(rightPanel);
+
+        window.add(mainPanel, "Center");
+        window.add(commentaryField, "South");
+
+        window.doLayout();
+        window.show();
+        final DemoApplet theApplet = applet;
+        window.addWindowListener(
+                new WindowAdapter() {
+                    public void windowClosing(WindowEvent e) {
+                        setVisible(false);
+                        window.dispose();
+
+                        if (theApplet != null) {
+                            theApplet.demoClosed();
+                        } else System.exit(0);
+                    }
+                } );
+        return window;
+    }
+
+    void roll(int delta) {
+        theNumber += delta;
+        redisplay();
+    }
+
+    void redisplay() {
+        numberField.setText(numberFormatter.format(theNumber));
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+    }
+
+    void makeNewSpelloutFormatter() {
+        int item = formatterMenu.getSelectedIndex();
+        String formatterMenuItem = formatterMenu.getSelectedItem();
+
+        if (formatterMenuItem.equals("Custom")) {
+            rulesField.setText(customRuleSet);
+            spelloutFormatter = new RuleBasedNumberFormat(customRuleSet);
+        }
+        else {
+            rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[item]);
+
+            Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.
+                            sampleRuleSets[item], locale);
+        }
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+    }
+
+    void populateRuleSetMenu() {
+        String[] ruleSetNames = spelloutFormatter.getRuleSetNames();
+
+        if (ruleSetMenu != null) {
+            ruleSetMenu.removeAll();
+            for (int i = 0; i < ruleSetNames.length; i++)
+                ruleSetMenu.addItem(ruleSetNames[i]);
+
+            ruleSetName = ruleSetMenu.getSelectedItem();
+        }
+        else
+            ruleSetName = ruleSetNames[0];
+    }
+
+//    private Frame demoWindow = null;
+
+    private TextComponent numberField;
+    private DemoTextFieldHolder textField;
+    private DemoTextFieldHolder rulesField;
+    private TextComponent commentaryField;
+    private Checkbox lenientParseButton;
+
+    private boolean numberFieldHasFocus = true;
+
+    private RuleBasedNumberFormat spelloutFormatter;
+    private DecimalFormat numberFormatter;
+    private ParsePosition parsePosition;
+
+    private boolean lenientParse = true;
+
+    private double theNumber = 0;
+//    private boolean canEdit = true;
+
+    private Choice formatterMenu;
+    private Choice ruleSetMenu;
+    private String ruleSetName;
+
+    private String customRuleSet = "NO RULES!";
+}
+
+class DemoTextField extends Component {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -7947090021239472658L;
+    public DemoTextField() {
+    }
+
+    public void setText(String text) {
+        this.text = text;
+        this.repaint();
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void paint(Graphics g) {
+        Font font = getFont();
+        FontMetrics fm = g.getFontMetrics();
+        g.setFont(font);
+        String txt = getText();
+        BreakIterator bi = BreakIterator.getLineInstance();
+        bi.setText(txt);
+        int lineHeight = fm.getHeight();
+        int width = getSize().width;
+        int penY = fm.getAscent();
+        int lineStart = 0;
+        int tempLineEnd = bi.first();
+        int lineEnd = 0;
+        int maxLineEnd = 0;
+        totalHeight = 0;
+
+        while (lineStart < txt.length()) {
+            maxLineEnd = txt.indexOf('\n', lineStart);
+            if (maxLineEnd == -1)
+                maxLineEnd = Integer.MAX_VALUE;
+            while (tempLineEnd != BreakIterator.DONE && fm.stringWidth(txt.substring(
+                            lineStart, tempLineEnd)) < width) {
+                lineEnd = tempLineEnd;
+                tempLineEnd = bi.next();
+            }
+            if (lineStart >= lineEnd) {
+                if (tempLineEnd == BreakIterator.DONE)
+                    lineEnd = txt.length();
+                else
+                    lineEnd = tempLineEnd;
+            }
+            if (lineEnd > maxLineEnd)
+                lineEnd = maxLineEnd;
+            g.drawString(txt.substring(lineStart, lineEnd), 0, penY);
+            penY += lineHeight;
+            totalHeight += lineHeight;
+            lineStart = lineEnd;
+            if (lineStart < txt.length() && txt.charAt(lineStart) == '\n')
+                ++lineStart;
+        }
+    }
+
+/*
+    public Dimension getPreferredSize() {
+        Dimension size = getParent().getSize();
+        return new Dimension(size.width, totalHeight);
+    }
+*/
+
+    private String text;
+    private int totalHeight;
+}
+
+class DemoTextFieldHolder extends Panel {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 7514498764062569858L;
+    public DemoTextFieldHolder() {
+        tf1 = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        tf2 = new DemoTextField();
+        sp = new ScrollPane();
+
+        setLayout(new CardLayout());
+
+        sp.add(tf2, "TextField1");
+        sp.setVisible(false);
+        add(tf1, "TestField2");
+        add(sp, "ScrollPane");
+    }
+
+    public void addFocusListener(FocusListener l) {
+        tf1.addFocusListener(l);
+    }
+
+    public void addKeyListener(KeyListener l) {
+        tf1.addKeyListener(l);
+    }
+
+    public void setText(String text) {
+        tf1.setText(text);
+        tf2.setText(text);
+    }
+
+    public String getText() {
+        return tf1.getText();
+    }
+
+    public void select(int start, int end) {
+        tf1.select(start, end);
+    }
+
+    public void selectAll() {
+        tf1.selectAll();
+    }
+
+    public void togglePanes(boolean canShowRealTextField) {
+        if (canShowRealTextField != showingRealTextField) {
+            CardLayout layout = (CardLayout)(getLayout());
+            layout.next(this);
+            showingRealTextField = canShowRealTextField;
+        }
+    }
+
+    private TextArea tf1 = null;
+    private DemoTextField tf2 = null;
+    private ScrollPane sp = null;
+    private boolean showingRealTextField = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100644
index 0000000..c03ed71
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -0,0 +1,1941 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import java.util.Locale;
+
+/**
+ * A collection of example rule sets for use with RuleBasedNumberFormat.
+ * These examples are intended to serve both as demonstrations of what can
+ * be done with this framework, and as starting points for designing new
+ * rule sets.
+ *
+ * For those that claim to represent number-spellout rules for languages
+ * other than U.S. English, we make no claims of either accuracy or
+ * completeness.  In fact, we know them to be incomplete, and suspect
+ * most have mistakes in them.  If you see something that you know is wrong,
+ * please tell us!
+ *
+ * @author Richard Gillam
+ */
+public class RbnfSampleRuleSets {
+    /**
+     * Puts a copyright in the .class file
+     */
+//    private static final String copyrightNotice
+//        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //========================================================================
+    // Spellout rules for various languages
+    //
+    // The following RuleBasedNumberFormat descriptions show the rules for
+    // spelling out numeric values in various languages.  As mentioned
+    // before, we cannot vouch for the accuracy or completeness of this
+    // data, although we believe it's pretty close.  Basically, this
+    // represents one day's worth of Web-surfing.  If you can supply the
+    // missing information in any of these rule sets, or if you find errors,
+    // or if you can supply spellout rules for languages that aren't shown
+    // here, we want to hear from you!
+    //========================================================================
+
+    /**
+     * Spellout rules for U.S. English.  This demonstration version of the
+     * U.S. English spellout rules has four variants: 1) %simplified is a
+     * set of rules showing the simple method of spelling out numbers in
+     * English: 289 is formatted as "two hundred eighty-nine".  2) %alt-teens
+     * is the same as %simplified, except that values between 1,000 and 9,999
+     * whose hundreds place isn't zero are formatted in hundreds.  For example,
+     * 1,983 is formatted as "nineteen hundred eighty-three," and 2,183 is
+     * formatted as "twenty-one hundred eighty-three," but 2,083 is still
+     * formatted as "two thousand eighty-three."  3) %ordinal formats the
+     * values as ordinal numbers in English (e.g., 289 is "two hundred eighty-
+     * ninth").  4) %default uses a more complicated algorithm to format
+     * numbers in a more natural way: 289 is formatted as "two hundred AND
+     * eighty-nine" and commas are inserted between the thousands groups for
+     * values above 100,000.
+     */
+    public static final String usEnglish =
+        // This rule set shows the normal simple formatting rules for English
+        "%simplified:\n"
+               // negative number rule.  This rule is used to format negative
+               // numbers.  The result of formatting the number's absolute
+               // value is placed where the >> is.
+        + "    -x: minus >>;\n"
+               // faction rule.  This rule is used for formatting numbers
+               // with fractional parts.  The result of formatting the
+               // number's integral part is substituted for the <<, and
+               // the result of formatting the number's fractional part
+               // (one digit at a time, e.g., 0.123 is "zero point one two
+               // three") replaces the >>.
+        + "    x.x: << point >>;\n"
+               // the rules for the values from 0 to 19 are simply the
+               // words for those numbers
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+               // beginning at 20, we use the >> to mark the position where
+               // the result of formatting the number's ones digit.  Thus,
+               // we only need a new rule at every multiple of 10.  Text in
+               // backets is omitted if the value being formatted is an
+               // even multiple of 10.
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+               // beginning at 100, we can use << to mark the position where
+               // the result of formatting the multiple of 100 is to be
+               // inserted.  Notice also that the meaning of >> has shifted:
+               // here, it refers to both the ones place and the tens place.
+               // The meanings of the << and >> tokens depend on the base value
+               // of the rule.  A rule's divisor is (usually) the highest
+               // power of 10 that is less than or equal to the rule's base
+               // value.  The value being formatted is divided by the rule's
+               // divisor, and the integral quotient is used to get the text
+               // for <<, while the remainder is used to produce the text
+               // for >>.  Again, text in brackets is omitted if the value
+               // being formatted is an even multiple of the rule's divisor
+               // (in this case, an even multiple of 100)
+        + "    100: << hundred[ >>];\n"
+               // The rules for the higher numbers work the same way as the
+               // rule for 100: Again, the << and >> tokens depend on the
+               // rule's divisor, which for all these rules is also the rule's
+               // base value.  To group by thousand, we simply don't have any
+               // rules between 1,000 and 1,000,000.
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+               // overflow rule.  This rule specifies that values of a
+               // quadrillion or more are shown in numerals rather than words.
+               // The == token means to format (with new rules) the value
+               // being formatted by this rule and place the result where
+               // the == is.  The #,##0 inside the == signs is a
+               // DecimalFormat pattern.  It specifies that the value should
+               // be formatted with a DecimalFormat object, and that it
+               // should be formatted with no decimal places, at least one
+               // digit, and a thousands separator.
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+
+        // This rule set formats numbers between 1,000 and 9,999 somewhat
+        // differently: If the hundreds digit is not zero, the first two
+        // digits are treated as a number of hundreds.  For example, 2,197
+        // would come out as "twenty-one hundred ninety-seven."
+        + "%alt-teens:\n"
+               // just use %simplified to format values below 1,000
+        + "    =%simplified=;\n"
+               // values between 1,000 and 9,999 are delegated to %%alt-hundreds
+               // for formatting.  The > after "1000" decreases the exponent
+               // of the rule's radix by one, causing the rule's divisor
+               // to be 100 instead of 1,000.  This causes the first TWO
+               // digits of the number, instead of just the first digit,
+               // to be sent to %%alt-hundreds
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+               // for values of 10,000 and more, we again just use %simplified
+        + "    10,000: =%simplified=;\n"
+        // This rule set uses some obscure voodoo of the description language
+        // to format the first two digits of a value in the thousands.
+        // The rule at 10 formats the first two digits as a multiple of 1,000
+        // and the rule at 11 formats the first two digits as a multiple of
+        // 100.  This works because of something known as the "rollback rule":
+        // if the rule applicable to the value being formatted has two
+        // substitutions, the value being formatted is an even multiple of
+        // the rule's divisor, and the rule's base value ISN'T an even multiple
+        // if the rule's divisor, then the rule that precedes this one in the
+        // list is used instead.  (The [] notation is implemented internally
+        // using this notation: a rule containing [] is split into two rules,
+        // and the right one is chosen using the rollback rule.) In this case,
+        // it means that if the first two digits are an even multiple of 10,
+        // they're formatted with the 10 rule (containing "thousand"), and if
+        // they're not, they're formatted with the 11 rule (containing
+        // "hundred").  %%empty is a hack to cause the rollback rule to be
+        // invoked: it makes the 11 rule have two substitutions, even though
+        // the second substitution (calling %%empty) doesn't actually do
+        // anything.
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+
+        // this rule set is the same as %simplified, except that it formats
+        // the value as an ordinal number: 234 is formatted as "two hundred
+        // thirty-fourth".  Notice the calls to ^simplified: we have to
+        // call %simplified to avoid getting "second hundred thirty-fourth."
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000: <%simplified< trillionth;\n"
+        + "        <%simplified< trillion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+
+        // %default is a more elaborate form of %simplified;  It is basically
+        // the same, except that it introduces "and" before the ones digit
+        // when appropriate (basically, between the tens and ones digits) and
+        // separates the thousands groups with commas in values over 100,000.
+        + "%default:\n"
+               // negative-number and fraction rules.  These are the same
+               // as those for %simplified, but ave to be stated here too
+               // because this is an entry point
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+               // just use %simplified for values below 100
+        + "    =%simplified=;\n"
+               // for values from 100 to 9,999 use %%and to decide whether or
+               // not to interpose the "and"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+               // for values of 100,000 and up, use %%commas to interpose the
+               // commas in the right places (and also to interpose the "and")
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // if the value passed to this rule set is greater than 100, don't
+        // add the "and"; if it's less than 100, add "and" before the last
+        // digits
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        // this rule set is used to place the commas
+        + "%%commas:\n"
+               // for values below 100, add "and" (the apostrophe at the
+               // beginning is ignored, but causes the space that follows it
+               // to be significant: this is necessary because the rules
+               // calling %%commas don't put a space before it)
+        + "    ' and =%default=;\n"
+               // put a comma after the thousands (or whatever preceded the
+               // hundreds)
+        + "    100: , =%default=;\n"
+               // put a comma after the millions (or whatever precedes the
+               // thousands)
+        + "    1000: , <%default< thousand, >%default>;\n"
+               // and so on...
+        + "    1,000,000: , =%default=;"
+        // %%lenient-parse isn't really a set of number formatting rules;
+        // it's a set of collation rules.  Lenient-parse mode uses a Collator
+        // object to compare fragments of the text being parsed to the text
+        // in the rules, allowing more leeway in the matching text.  This set
+        // of rules tells the formatter to ignore commas when parsing (it
+        // already ignores spaces, which is why we refer to the space; it also
+        // ignores hyphens, making "twenty one" and "twenty-one" parse
+        // identically)
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+    /**
+     * Spellout rules for U.K. English.  U.K. English has one significant
+     * difference from U.S. English: the names for values of 1,000,000,000
+     * and higher.  In American English, each successive "-illion" is 1,000
+     * times greater than the preceding one: 1,000,000,000 is "one billion"
+     * and 1,000,000,000,000 is "one trillion."  In British English, each
+     * successive "-illion" is one million times greater than the one before:
+     * "one billion" is 1,000,000,000,000 (or what Americans would call a
+     * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+     * 1,000,000,000 in British English is "one thousand million."  (This
+     * value is sometimes called a "milliard," but this word seems to have
+     * fallen into disuse.)
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+    // Could someone please correct me if I'm wrong about "milliard" falling
+    // into disuse, or have missed any other details of how large numbers
+    // are rendered.  Also, could someone please provide me with information
+    // on which other English-speaking countries use which system?  Right now,
+    // I'm assuming that the U.S. system is used in Canada and that all the
+    // other English-speaking countries follow the British system.  Can
+    // someone out there confirm this?
+
+    /**
+     * Spellout rules for Spanish.  The Spanish rules are quite similar to
+     * the English rules, but there are some important differences:
+     * First, we have to provide separate rules for most of the twenties
+     * because the ones digit frequently picks up an accent mark that it
+     * doesn't have when standing alone.  Second, each multiple of 100 has
+     * to be specified separately because the multiplier on 100 very often
+     * changes form in the contraction: 500 is "quinientos," not
+     * "cincocientos."  In addition, the word for 100 is "cien" when
+     * standing alone, but changes to "ciento" when followed by more digits.
+     * There also some other differences.
+     */
+    public static final String spanish =
+        // negative-number and fraction rules
+        "-x: menos >>;\n"
+        + "x.x: << punto >>;\n"
+        // words for values from 0 to 19
+        + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+        + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+        + "    diecisiete; dieciocho; diecinueve;\n"
+        // words for values from 20 to 29 (necessary because the ones digit
+        // often picks up an accent mark it doesn't have when standing alone)
+        + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+        + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+        + "    veintinueve;\n"
+        // words for multiples of 10 (notice that the tens digit is separated
+        // from the ones digit by the word "y".)
+        + "30: treinta[ y >>];\n"
+        + "40: cuarenta[ y >>];\n"
+        + "50: cincuenta[ y >>];\n"
+        + "60: sesenta[ y >>];\n"
+        + "70: setenta[ y >>];\n"
+        + "80: ochenta[ y >>];\n"
+        + "90: noventa[ y >>];\n"
+        // 100 by itself is "cien," but 100 followed by something is "cineto"
+        + "100: cien;\n"
+        + "101: ciento >>;\n"
+        // words for multiples of 100 (must be stated because they're
+        // rarely simple concatenations)
+        + "200: doscientos[ >>];\n"
+        + "300: trescientos[ >>];\n"
+        + "400: cuatrocientos[ >>];\n"
+        + "500: quinientos[ >>];\n"
+        + "600: seiscientos[ >>];\n"
+        + "700: setecientos[ >>];\n"
+        + "800: ochocientos[ >>];\n"
+        + "900: novecientos[ >>];\n"
+        // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+        // but 1,000 is just "mil."
+        + "1000: mil[ >>];\n"
+        + "2000: << mil[ >>];\n"
+        // 1,000,000 is "un millon," not "uno millon"
+        + "1,000,000: un mill\u00f3n[ >>];\n"
+        + "2,000,000: << mill\u00f3n[ >>];\n"
+        // overflow rule
+        + "1,000,000,000: =#,##0= (incomplete data);";
+    // The Spanish rules are incomplete.  I'm missing information on negative
+    // numbers and numbers with fractional parts.  I also don't have
+    // information on numbers higher than the millions
+
+    /**
+     * Spellout rules for French.  French adds some interesting quirks of its
+     * own: 1) The word "et" is interposed between the tens and ones digits,
+     * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+     * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+     * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+     * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+     * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+     * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+     * "mille cent" ("one thousand one hundred")
+     */
+    public static final String french =
+        // the main rule set
+        "%main:\n"
+               // negative-number and fraction rules
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+               // words for numbers from 0 to 10
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+               // ords for the multiples of 10: %%alt-ones inserts "et"
+               // when needed
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+               // rule for 60.  The /20 causes this rule's multiplier to be
+               // 20 rather than 10, allowinhg us to recurse for all values
+               // from 60 to 79...
+        + "    60/20: soixante[->%%alt-ones>];\n"
+               // ...except for 71, which must be special-cased
+        + "    71: soixante et onze;\n"
+               // at 72, we have to repeat the rule for 60 to get us to 79
+        + "    72/20: soixante->%%alt-ones>;\n"
+               // at 80, we state a new rule with the phrase for 80.  Since
+               // it changes form when there's a ones digit, we need a second
+               // rule at 81.  This rule also includes "/20," allowing it to
+               // be used correctly for all values up to 99
+        + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+               // "cent" becomes plural when preceded by a multiplier, and
+               // the multiplier is omitted from the singular form
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+               // values from 1,100 to 1,199 are rendered as "onze cents..."
+               // instead of "mille cent..."  The > after "1000" decreases
+               // the rule's exponent, causing its multiplier to be 100 instead
+               // of 1,000.  This prevents us from getting "onze cents cent
+               // vingt-deux" ("eleven hundred one hundred twenty-two").
+        + "    1100>: onze cents[ >>];\n"
+               // at 1,200, we go back to formating in thousands, so we
+               // repeat the rule for 1,000
+        + "    1200: mille >>;\n"
+               // at 2,000, the multiplier is added
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // %%alt-ones is used to insert "et" when the ones digit is 1
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+
+    /**
+     * Spellout rules for Swiss French.  Swiss French differs from French French
+     * in that it does have words for 70, 80, and 90.  This rule set shows them,
+     * and is simpler as a result.
+     */
+    public static final String swissFrench =
+        "%main:\n"
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+        + "    60: soixante[->%%alt-ones>];\n"
+               // notice new words for 70, 80, and 90
+        + "    70: septante[->%%alt-ones>];\n"
+        + "    80: octante[->%%alt-ones>];\n"
+        + "    90: nonante[->%%alt-ones>];\n"
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+        + "    1100>: onze cents[ >>];\n"
+        + "    1200: mille >>;\n"
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+    // I'm not 100% sure about Swiss French.  Is
+    // this correct?  Is "onze cents" commonly used for 1,100 in both France
+    // and Switzerland?  Can someone fill me in on the rules for the other
+    // French-speaking countries?  I've heard conflicting opinions on which
+    // version is used in Canada, and I understand there's an alternate set
+    // of words for 70, 80, and 90 that is used somewhere, but I don't know
+    // what those words are or where they're used.
+
+    /**
+     * Spellout rules for German.  German also adds some interesting
+     * characteristics.  For values below 1,000,000, numbers are customarily
+     * written out as a single word.  And the ones digit PRECEDES the tens
+     * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+     */
+    public static final String german =
+        // 1 is "eins" when by itself, but turns into "ein" in most
+        // combinations
+        "%alt-ones:\n"
+        + "    null; eins; =%%main=;\n"
+        + "%%main:\n"
+               // words for numbers from 0 to 12.  Notice that the values
+               // from 13 to 19 can derived algorithmically, unlike in most
+               // other languages
+        + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+        + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+               // rules for the multiples of 10.  Notice that the ones digit
+               // goes on the front
+        + "    20: [>>und]zwanzig;\n"
+        + "    30: [>>und]drei\u00dfig;\n"
+        + "    40: [>>und]vierzig;\n"
+        + "    50: [>>und]f\u00fcnfzig;\n"
+        + "    60: [>>und]sechzig;\n"
+        + "    70: [>>und]siebzig;\n"
+        + "    80: [>>und]achtzig;\n"
+        + "    90: [>>und]neunzig;\n"
+        + "    100: hundert[>%alt-ones>];\n"
+        + "    200: <<hundert[>%alt-ones>];\n"
+        + "    1000: tausend[>%alt-ones>];\n"
+        + "    2000: <<tausend[>%alt-ones>];\n"
+        + "    1,000,000: eine Million[ >%alt-ones>];\n"
+        + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+        + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+        + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+        + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+        + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;";
+    // again, I'm not 100% sure of these rules.  I think both "hundert" and
+    // "einhundert" are correct or 100, but I'm not sure which is preferable
+    // in situations where this framework is likely to be used.  Also, is it
+    // really true that numbers are run together into compound words all the
+    // time?  And again, I'm missing information on negative numbers and
+    // decimals.
+
+    /**
+     * Spellout rules for Italian.  Like German, most Italian numbers are
+     * written as single words.  What makes these rules complicated is the rule
+     * that says that when a word ending in a vowel and a word beginning with
+     * a vowel are combined into a compound, the vowel is dropped from the
+     * end of the first word: 180 is "centottanta," not "centoottanta."
+     * The complexity of this rule set is to produce this behavior.
+     */
+    public static final String italian =
+        // main rule set.  Follows the patterns of the preceding rule sets,
+        // except that the final vowel is omitted from words ending in
+        // vowels when they are followed by another word; instead, we have
+        // separate rule sets that are identical to this one, except that
+        // all the words that don't begin with a vowel have a vowel tacked
+        // onto them at the front.  A word ending in a vowel calls a
+        // substitution that will supply that vowel, unless that vowel is to
+        // be elided.
+        "%main:\n"
+        + "    -x: meno >>;\n"
+        + "    x.x: << virgola >>;\n"
+        + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+        + "        nove;\n"
+        + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+        + "        diciasette; diciotto; diciannove;\n"
+        + "    20: venti; vent>%%with-i>;\n"
+        + "    30: trenta; trent>%%with-i>;\n"
+        + "    40: quaranta; quarant>%%with-a>;\n"
+        + "    50: cinquanta; cinquant>%%with-a>;\n"
+        + "    60: sessanta; sessant>%%with-a>;\n"
+        + "    70: settanta; settant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: novanta; novant>%%with-a>;\n"
+        + "    100: cento; cent[>%%with-o>];\n"
+        + "    200: <<cento; <<cent[>%%with-o>];\n"
+        + "    1000: mille; mill[>%%with-i>];\n"
+        + "    2000: <<mila; <<mil[>%%with-a>];\n"
+        + "    100,000>>: <<mila[ >>];\n"
+        + "    1,000,000: =#,##0= (incomplete data);\n"
+        + "%%with-a:\n"
+        + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+        + "        anove;\n"
+        + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+        + "        adiciasette; adiciotto; adiciannove;\n"
+        + "    20: aventi; avent>%%with-i>;\n"
+        + "    30: atrenta; atrent>%%with-i>;\n"
+        + "    40: aquaranta; aquarant>%%with-a>;\n"
+        + "    50: acinquanta; acinquant>%%with-a>;\n"
+        + "    60: asessanta; asessant>%%with-a>;\n"
+        + "    70: asettanta; asettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: anovanta; anovant>%%with-a>;\n"
+        + "    100: acento; acent[>%%with-o>];\n"
+        + "    200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
+        + "    1000: amille; amill[>%%with-i>];\n"
+        + "    2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-i:\n"
+        + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+        + "        inove;\n"
+        + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+        + "        idiciasette; idiciotto; idiciannove;\n"
+        + "    20: iventi; ivent>%%with-i>;\n"
+        + "    30: itrenta; itrent>%%with-i>;\n"
+        + "    40: iquaranta; iquarant>%%with-a>;\n"
+        + "    50: icinquanta; icinquant>%%with-a>;\n"
+        + "    60: isessanta; isessant>%%with-a>;\n"
+        + "    70: isettanta; isettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: inovanta; inovant>%%with-a>;\n"
+        + "    100: icento; icent[>%%with-o>];\n"
+        + "    200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
+        + "    1000: imille; imill[>%%with-i>];\n"
+        + "    2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-o:\n"
+        + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+        + "        onove;\n"
+        + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+        + "        odiciasette; odiciotto; odiciannove;\n"
+        + "    20: oventi; ovent>%%with-i>;\n"
+        + "    30: otrenta; otrent>%%with-i>;\n"
+        + "    40: oquaranta; oquarant>%%with-a>;\n"
+        + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+        + "    60: osessanta; osessant>%%with-a>;\n"
+        + "    70: osettanta; osettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: onovanta; onovant>%%with-a>;\n"
+        + "    100: ocento; ocent[>%%with-o>];\n"
+        + "    200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
+        + "    1000: omille; omill[>%%with-i>];\n"
+        + "    2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n";
+    // Can someone confirm that I did the vowel-eliding thing right?  I'm
+    // not 100% sure I'm doing it in all the right places, or completely
+    // correctly.  Also, I don't have information for negatives and decimals,
+    // and I lack words fror values from 1,000,000 on up.
+
+    /**
+     * Spellout rules for Swedish.
+     */
+    public static final String swedish =
+        "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+        + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+        + "20: tjugo[>>];\n"
+        + "30: trettio[>>];\n"
+        + "40: fyrtio[>>];\n"
+        + "50: femtio[>>];\n"
+        + "60: sextio[>>];\n"
+        + "70: sjuttio[>>];\n"
+        + "80: \u00e5ttio[>>];\n"
+        + "90: nittio[>>];\n"
+        + "100: hundra[>>];\n"
+        + "200: <<hundra[>>];\n"
+        + "1000: tusen[ >>];\n"
+        + "2000: << tusen[ >>];\n"
+        + "1,000,000: en miljon[ >>];\n"
+        + "2,000,000: << miljon[ >>];\n"
+        + "1,000,000,000: en miljard[ >>];\n"
+        + "2,000,000,000: << miljard[ >>];\n"
+        + "1,000,000,000,000: en biljon[ >>];\n"
+        + "2,000,000,000,000: << biljon[ >>];\n"
+        + "1,000,000,000,000,000: =#,##0=";
+    // can someone supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Dutch.  Notice that in Dutch, as in German,
+     * the ones digit precedes the tens digit.
+     */
+    public static final String dutch =
+        " -x: min >>;\n"
+        + "x.x: << komma >>;\n"
+        + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+        + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+        + "zeventien; achtien; negentien;\n"
+        + "20: [>> en ]twintig;\n"
+        + "30: [>> en ]dertig;\n"
+        + "40: [>> en ]veertig;\n"
+        + "50: [>> en ]vijftig;\n"
+        + "60: [>> en ]zestig;\n"
+        + "70: [>> en ]zeventig;\n"
+        + "80: [>> en ]tachtig;\n"
+        + "90: [>> en ]negentig;\n"
+        + "100: << honderd[ >>];\n"
+        + "1000: << duizend[ >>];\n"
+        + "1,000,000: << miljoen[ >>];\n"
+        + "1,000,000,000: << biljoen[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+
+    /**
+     * Spellout rules for Japanese.  In Japanese, there really isn't any
+     * distinction between a number written out in digits and a number
+     * written out in words: the ideographic characters are both digits
+     * and words.  This rule set provides two variants:  %traditional
+     * uses the traditional CJK numerals (which are also used in China
+     * and Korea).  %financial uses alternate ideographs for many numbers
+     * that are harder to alter than the traditional numerals (one could
+     * fairly easily change a one to
+     * a three just by adding two strokes, for example).  This is also done in
+     * the other countries using Chinese idographs, but different ideographs
+     * are used in those places.
+     */
+    public static final String japanese =
+        "%financial:\n"
+        + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u62fe[>>];\n"
+        + "    20: <<\u62fe[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;\n"
+        + "%traditional:\n"
+        + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u5341[>>];\n"
+        + "    20: <<\u5341[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;";
+    // Can someone supply me with the right fraud-proof ideographs for
+    // Simplified and Traditional Chinese, and for Korean?  Can someone
+    // supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Greek.  Again in Greek we have to supply the words
+     * for the multiples of 100 because they can't be derived algorithmically.
+     * Also, the tens dgit changes form when followed by a ones digit: an
+     * accent mark disappears from the tens digit and moves to the ones digit.
+     * Therefore, instead of using the [] notation, we actually have to use
+     * two separate rules for each multiple of 10 to show the two forms of
+     * the word.
+     */
+    public static final String greek =
+        "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+        + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+        + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+        + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+        + "10: \u03b4\u03ad\u03ba\u03b1; "
+        + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+        + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+        + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+        + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+        + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+        + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+    // Can someone supply me with information on negatives and decimals?
+    // I'm also missing the word for zero.  Can someone clue me in?
+
+    /**
+     * Spellout rules for Russian.
+     */
+    public static final String russian =
+        "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+        + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+        + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+        + "10: \u0434\u0435\u0441\u044f\u0442; "
+        + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+        + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+        + "100: \u0441\u0442\u043e[ >>];\n"
+        + "200: << \u0441\u0442\u043e[ >>];\n"
+        + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "1,000,000,000: =#,##0=;";
+    // Can someone supply me with information on negatives and decimals?
+    // How about words for billions and trillions?
+
+    /**
+     * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+     * most of the lower-order numbers.  The masculine forms are shown
+     * here.
+     */
+    public static final String hebrew =
+        "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+        + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+        + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+        + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+        + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+        + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+        + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+        + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+        + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+        + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+        + "100: \u05de\u05d0\u05d4[ >>];\n"
+        + "200: << \u05de\u05d0\u05d4[ >>];\n"
+        + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+        + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+        + "1,000,000: =#,##0= (incomplete data);";
+    // This data is woefully incomplete.  Can someone fill me in on the
+    // various inflected forms of the numbers, which seem to be necessary
+    // to do Hebrew correctly?  Can somone supply me with data for values
+    // from 1,000,000 on up?  What about the word for zero?  What about
+    // information on negatives and decimals?
+
+    //========================================================================
+    // Simple examples
+    //========================================================================
+
+    /**
+     * This rule set adds an English ordinal abbreviation to the end of a
+     * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+     * this rule set.  To parse, use DecimalFormat on the numeral.
+     */
+    public static final String ordinal =
+        // this rule set formats the numeral and calls %%abbrev to
+        // supply the abbreviation
+        "%main:\n"
+        + "    =#,##0==%%abbrev=;\n"
+        // this rule set supplies the abbreviation
+        + "%%abbrev:\n"
+               // the abbreviations.  Everything from 4 to 19 ends in "th"
+        + "    th; st; nd; rd; th;\n"
+               // at 20, we begin repeating the cycle every 10 (13 is "13th",
+               // but 23 and 33 are "23rd" and "33rd")  We do this by
+               // ignoring all bug the ones digit in selecting the abbreviation
+        + "    20: >>;\n"
+               // at 100, we repeat the whole cycle by considering only the
+               // tens and ones digits in picking an abbreviation
+        + "    100: >>;\n";
+
+    /**
+     * This is a simple message-formatting example.  Normally one would
+     * use ChoiceFormat and MessageFormat to do something this simple,
+     * but this shows it could be done with RuleBasedNumberFormat too.
+     * A message-formatting example that might work better with
+     * RuleBasedNumberFormat appears later.
+     */
+    public static final String message1 =
+        // this rule surrounds whatever the other rules produce with the
+        // rest of the sentence
+        "x.0: The search found <<.;\n"
+        // use words for values below 10 (and change to "file" for 1)
+        + "no files; one file; two files; three files; four files; five files;\n"
+        + "    six files; seven files; eight files; nine files;\n"
+        // use numerals for values higher than 10
+        + "=#,##0= files;";
+
+    //========================================================================
+    // Fraction handling
+    //
+    // The next few examples show how RuleBasedNumberFormat can be used for
+    // more flexible handling of fractions
+    //========================================================================
+
+    /**
+     * This example formats a number in one of the two styles often used
+     * on checks.  %dollars-and-hundredths formats cents as hundredths of
+     * a dollar (23.40 comes out as "twenty-three and 40/100 dollars").
+     * %dollars-and-cents formats in dollars and cents (23.40 comes out as
+     * "twenty-three dollars and forty cents")
+     */
+    public static final String dollarsAndCents =
+        // this rule set formats numbers as dollars and cents
+        "%dollars-and-cents:\n"
+               // if the value is 1 or more, put "xx dollars and yy cents".
+               // the "and y cents" part is suppressed if the value is an
+               // even number of dollars
+        + "    x.0: << [and >%%cents>];\n"
+               // if the value is between 0 and 1, put "xx cents"
+        + "    0.x: >%%cents>;\n"
+               // these three rules take care of the singular and plural
+               // forms of "dollar" and use %%main to format the number
+        + "    0: zero dollars; one dollar; =%%main= dollars;\n"
+        // these are the regular U.S. English number spellout rules
+        + "%%main:\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // this rule takes care of the fractional part of the value.  It
+        // multiplies the fractional part of the number being formatted by
+        // 100, formats it with %%main, and then addes the word "cent" or
+        // "cents" to the end.  (The text in brackets is omitted if the
+        // numerator of the fraction is 1.)
+        + "%%cents:\n"
+        + "    100: <%%main< cent[s];\n"
+
+        // this rule set formats numbers as dollars and hundredths of dollars
+        + "%dollars-and-hundredths:\n"
+               // this rule takes care of the general shell of the output
+               // string.  We always show the cents, even when there aren't
+               // any.  Because of this, the word is always "dollars"--
+               // we don't have to worry about the singular form.  We use
+               // %%main to format the number of dollars and %%hundredths to
+               // format the number of cents
+        + "    x.0: <%%main< and >%%hundredths>/100 dollars;\n"
+        // this rule set formats the cents for %dollars-and-hundredths.
+        // It multiplies the fractional part of the number by 100 and formats
+        // the result using a DecimalFormat ("00" tells the DecimalFormat to
+        // always use two digits, even for numbers under 10)
+        + "%%hundredths:\n"
+        + "    100: <00<;\n";
+
+    /**
+     * This rule set shows the fractional part of the number as a fraction
+     * with a power of 10 as the denominator.  Some languages don't spell
+     * out the fractional part of a number as "point one two three," but
+     * always render it as a fraction.  If we still want to treat the fractional
+     * part of the number as a decimal, then the fraction's denominator
+     * is always a power of 10.  This example does that: 23.125 is formatted
+     * as "twenty-three and one hundred twenty-five thousandths" (as opposed
+     * to "twenty-three point one two five" or "twenty-three and one eighth").
+     */
+    public static final String decimalAsFraction =
+        // the regular U.S. English spellout rules, with one difference
+        "%main:\n"
+        + "    -x: minus >>;\n"
+               // the difference.  This rule uses %%frac to show the fractional
+               // part of the number.  Text in brackets is omitted when the
+               // value is between 0 and 1 (causing 0.3 to come out as "three
+               // tenths" instead of "zero and three tenths").
+        + "    x.x: [<< and ]>%%frac>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // the rule set that formats the fractional part of the number.
+        // The rule that is used is the one that, when its baase value is
+        // multiplied by the fractional part of the number being formatted,
+        // produces the result closest to zero.  Thus, the base values are
+        // prospective denominators of the fraction.  The << marks the place
+        // where the numerator of the fraction (the result of multiplying the
+        // fractional part of the number by the rule's base value) is
+        // placed.  Text in brackets is omitted when the numerator is 1, giving
+        // us the singular and plural forms of the words.
+        // [In languages where the singular and plural are completely different
+        // words, the rule can just be stated twice: the second time with
+        // the plural form.]
+        + "%%frac:\n"
+        + "    10: << tenth[s];\n"
+        + "    100: << hundredth[s];\n"
+        + "    1000: << thousandth[s];\n"
+        + "    10,000: << ten-thousandth[s];\n"
+        + "    100,000: << hundred-thousandth[s];\n"
+        + "    1,000,000: << millionth[s];";
+
+    /**
+     * Number with closest fraction.  This example formats a value using
+     * numerals, but shows the fractional part as a ratio (fraction) rather
+     * than a decimal.  The fraction always has a denominator between 2 and 10.
+     */
+    public static final String closestFraction =
+        "%main:\n"
+               // this rule formats the number if it's 1 or more.  It formats
+               // the integral part using a DecimalFormat ("#,##0" puts
+               // thousands separators in the right places) and the fractional
+               // part using %%frac.  If there is no fractional part, it
+               // just shows the integral part.
+        + "    x.0: <#,##0<[ >%%frac>];\n"
+               // this rule formats the number if it's between 0 and 1.  It
+               // shows only the fractional part (0.5 shows up as "1/2," not
+               // "0 1/2")
+        + "    0.x: >%%frac>;\n"
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        + "%%frac:\n"
+        + "    2: 1/2;\n"
+        + "    3: <0</3;\n"
+        + "    4: <0</4;\n"
+        + "    5: <0</5;\n"
+        + "    6: <0</6;\n"
+        + "    7: <0</7;\n"
+        + "    8: <0</8;\n"
+        + "    9: <0</9;\n"
+        + "    10: <0</10;\n";
+
+    /**
+     * American stock-price formatting.  Non-integral stock prices are still
+     * generally shown in eighths or sixteenths of dollars instead of dollars
+     * and cents.  This example formats stock prices in this way if possible,
+     * and in dollars and cents if not.
+     */
+    public static final String stock =
+        "%main:\n"
+               // this rule formats the integral part of the number in numerals
+               // and (if necessary) the fractional part using %%frac1
+        + "    x.0: <#,##0<[>%%frac1>];\n"
+               // this rule is used for values between 0 and 1 and omits the
+               // integral part
+        + "    0.x: >%%frac2>;\n"
+        // this rule set is used to format the fractional part of the number when
+        // there's an integral part before it (again, we try all denominators
+        // and use the "best" one)
+        + "%%frac1:\n"
+               // for even multiples of 1/4, format the fraction using the
+               // typographer's fractions
+        + "    4: <%%quarters<;\n"
+               // format the value as a number of eighths, sixteenths, or
+               // thirty-seconds, whichever produces the most accurate value.
+               // The apostrophe at the front of these rules is ignored, but
+               // it makes the space that follows it significant.  This puts a
+               // space between the value's integral and fractional parts so
+               // you can read it
+        + "    8: ' <0</8;\n"
+        + "    16: ' <0</16;\n"
+        + "    32: ' <0</32;\n"
+               // if we can't reasonably format the number in powers of 2,
+               // then show it as dollars and cents
+        + "    100: .<00<;\n"
+        // this rule set is used when the fractional part of the value stands
+        // alone
+        + "%%frac2:\n"
+        + "    4: <%%quarters<;\n"
+               // for fractions that we can't show using typographer's fractions,
+               // we don't have to put a space before the fraction
+        + "    8: <0</8;\n"
+        + "    16: <0</16;\n"
+        + "    32: <0</32;\n"
+               // but dollars and cents look better with a leading 0
+        + "    100: 0.<00<;\n"
+        // this rule set formats 1/4, 1/2, and 3/4 using typographer's fractions
+        + "%%quarters:\n"
+        + "    ; \u00bc; \u00bd; \u00be;\n"
+        // there are the lenient-parse rules.  These allow the user to type
+        // "1/4," "1/2," and "3/4" instead of their typographical counterparts
+        // and still have them be understood by the formatter
+        + "%%lenient-parse:\n"
+        + "    & '1/4' , \u00bc\n"
+        + "    & '1/2' , \u00bd\n"
+        + "    & '3/4' , \u00be\n;";
+
+    //========================================================================
+    // Changing dimensions
+    //
+    // The next few examples demonstrate using a RuleBasedNumberFormat to
+    // change the units a value is denominated in depending on its magnitude
+    //========================================================================
+
+    /**
+     * The example shows large numbers the way they often appear is nwespapers:
+     * 1,200,000 is formatted as "1.2 million".
+     */
+    public static final String abbEnglish =
+        "=#,##0=;\n"
+        // this is fairly self-explanatory, but note that the << substitution
+        // can show the fractional part of the substitution value if the user
+        // wants it
+        + "1,000,000: <##0.###< million;\n"
+        + "1,000,000,000: <##0.###< billion;\n"
+        + "1,000,000,000,000: <##0.###< trillion;\n";
+
+    /**
+     * This example takes a number of meters and formats it in whatever unit
+     * will produce a number with from one to three digits before the decimal
+     * point.  For example, 230,000 is formatted as "230 km".
+     */
+    public static final String units =
+        "%main:\n"
+               // for values between 0 and 1, delegate to %%small
+        + "    0.x: >%%small>;\n"
+               // otherwise, show between 3 and 6 significant digits of the value
+               // along with the most appropriate unit
+        + "    0: =##0.###= m;\n"
+        + "    1,000: <##0.###< km;\n"
+        + "    1,000,000: <##0.###< Mm;\n"
+        + "    1,000,000,000: <##0.###< Gm;\n"
+        + "    1,000,000,000,000: <#,##0.###< Tm;\n"
+        // %%small formats the number when it's less then 1.  It multiplies the
+        // value by one billion, and then uses %%small2 to actually do the
+        // formatting.
+        + "%%small:\n"
+        + "    1,000,000,000,000: <%%small2<;\n"
+        // this rule set actually formats small values.  %%small passes this
+        // rule set a number of picometers, and it takes care of scaling up as
+        // appropriate in exactly the same way %main does (we can't normally
+        // handle fractional values this way: here, we're concerned about
+        // magnitude; most of the time, we're concerned about precsion)
+        + "%%small2:\n"
+        + "    0: =##0= pm;\n"
+        + "    1,000: <##0.###< nm;\n"
+        + "    1,000,000: <##0.###< \u00b5m;\n"
+        + "    1,000,000,000: <##0.###< mm;\n";
+
+    /**
+     * A more complicated message-formatting example.  Here, in addition to
+     * handling the singular and plural versions of the word, the value is
+     * denominated in bytes, kilobytes, or megabytes depending on its magnitude.
+     * Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000),
+     * and a megabyte as 1,024 kilobytes (not 1,000).
+     */
+    public static final String message2 =
+        // this rule supplies the shell of the sentence
+        "x.0: There << free space on the disk.;\n"
+        // handle singular and plural forms of "byte" (and format 0 as
+        // "There is no free space...")
+        + "0: is no;\n"
+        + "is one byte of;\n"
+        + "are =0= bytes of;\n"
+        // for values above 1,024, format the number in K (since "K" is usually
+        // promounced "K" regardless of whether it's singular or plural, we
+        // don't worry about the plural form).  The "/1024" here causes us to
+        // treat a K as 1,024 bytes rather than 1,000 bytes.
+        + "1024/1024: is <0<K of;\n"
+        // for values about 1,048,576, format the number in Mb.  Since "Mb" is
+        // usually promounced "meg" in singular and "megs" in plural, we do have
+        // both singular and plural forms.  Again, notice we treat a megabyte
+        // as 1,024 kilobytes.
+        + "1,048,576/1024: is 1 Mb of;\n"
+        + "2,097,152/1024: are <0< Mb of;";
+
+    //========================================================================
+    // Alternate radices
+    //========================================================================
+
+    /**
+     * This example formats a number in dozens and gross.  This is intended to
+     * demonstrate how this rule set can be used to format numbers in systems
+     * other than base 10.  The "/12" after the rules' base values controls this.
+     * Also notice that the base doesn't have to be consistent throughout the
+     * whole rule set: we go back to base 10 for values over 1,000.
+     */
+    public static final String dozens =
+        // words for numbers...
+        "zero; one; two; three; four; five; six;\n"
+        + "seven; eight; nine; ten; eleven;\n"
+        // format values over 12 in dozens
+        + "12/12: << dozen[ and >>];\n"
+        // format values over 144 in gross
+        + "144/12: << gross[, >>];\n"
+        // format values over 1,000 in thousands
+        + "1000: << thousand[, >>];\n"
+        // overflow rule.  Format values over 10,000 in numerals
+        + "10,000: =#,##0=;\n";
+
+    //========================================================================
+    // Major and minor units
+    //
+    // These examples show how a single value can be divided up into major
+    // and minor units that don't relate to each other by a factor of 10.
+    //========================================================================
+
+    /**
+     * This example formats a number of seconds in sexagesimal notation
+     * (i.e., hours, minutes, and seconds).  %with-words formats it with
+     * words (3740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+     * formats it entirely in numerals (3740 is "1:02:20").
+     */
+    public static final String durationInSeconds =
+        // main rule set for formatting with words
+        "%with-words:\n"
+               // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+               // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+               // use %%hr to format values greater than 3,600 seconds
+               // (the ">>>" below causes us to see the number of minutes
+               // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+               // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+               // higher values are shown with colons: %%min-sec is used for
+               // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+               // ...and %%hr-min-sec is used for values of 3,600 seconds
+               // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This example formats a number of hours in sexagesimal notation (i.e.,
+     * hours, minutes, and seconds).  %with-words formats the value using
+     * words for the units, and %in-numerals formats the value using only
+     * numerals.
+     */
+    public static final String durationInHours =
+        // main entry point for formatting with words
+        "%with-words:\n"
+               // this rule omits minutes and seconds when the value is
+               // an even number of hours
+        + "    x.0: <<[, >%%min-sec>];\n"
+               // these rules take care of the singular and plural forms
+               // of hours
+        + "    0 hours; 1 hour; =#,##0= hours;\n"
+        // this rule set takes the fractional part of the number and multiplies
+        // it by 3,600 (turning it into a number of seconds).  Then it delegates
+        // to %%min-sec-implementation to format the resulting value
+        + "%%min-sec:\n"
+        + "    3600: =%%min-sec-implementation=;\n"
+        // this rule set formats the seconds as either seconds or minutes and
+        // seconds, and takes care of the singular and plural forms of
+        // "minute" and "second"
+        + "%%min-sec-implementation:\n"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        + "    60/60: 1 minute[, >>];\n"
+        + "    120/60: <0< minutes[, >>];\n"
+
+        // main entry point for formatting in numerals
+        + "%in-numerals:\n"
+               // show minutes even for even numbers of hours
+        + "    x.0: <#,##0<:00;\n"
+               // delegate to %%min-sec2 to format minutes and seconds
+        + "    x.x: <#,##0<:>%%min-sec2>;\n"
+        // this rule set formats minutes when there is an even number of
+        // minutes, and delegates to %%min-sec2-implementation when there
+        // are seconds
+        + "%%min-sec2:\n"
+        + "    60: <00<;\n"
+        + "    3600: <%%min-sec2-implementation<;\n"
+        // these two rule sets are used to format the minutes and seconds
+        + "%%min-sec2-implementation:\n"
+               // if there are fewer than 60 seconds, show the minutes anyway
+        + "    0: 00:=00=;\n"
+               // if there are minutes, format them too, and always use 2 digits
+               // for both minutes and seconds
+        + "    60: =%%min-sec3=;\n"
+        + "%%min-sec3:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        // the lenient-parse rules allow the user to use any of several
+        // characters as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This rule set formats a number of pounds as pounds, shillings, and
+     * pence in the old English system of currency.
+     */
+    public static final String poundsShillingsAndPence =
+        // for values of 1 or more, format the integral part with a pound
+        // sign in front, and show shillings and pence if necessary
+        "%main:\n"
+        + "    x.0: \u00a3<#,##0<[ >%%shillings-and-pence>];\n"
+        // for values between 0 and 1, omit the number of pounds
+        + "    0.x: >%%pence-alone>;\n"
+        // this rule set is used to show shillings and pence.  It multiplies
+        // the fractional part of the number by 240 (the number of pence in a
+        // pound) and uses %%shillings-and-pence-implementation to format
+        // the result
+        + "%%shillings-and-pence:\n"
+        + "    240: <%%shillings-and-pence-implementation<;\n"
+        // this rule set is used to show shillings and pence when there are
+        // no pounds.  It also multiplies the value by 240, and then it uses
+        // %%pence-alone-implementation to format the result.
+        + "%%pence-alone:\n"
+        + "    240: <%%pence-alone-implementation<;\n"
+        // this rule set formats a number of pence when we know we also
+        // have pounds.  We always show shillings (with a 0 if necessary),
+        // but only show pence if the value isn't an even number of shillings
+        + "%%shillings-and-pence-implementation:\n"
+        + "    0/; 0/=0=;\n"
+        + "    12/12: <0</[>0>];\n"
+        // this rule set formats a number of pence when we know there are
+        // no pounds.  Values less than a shilling are shown with "d." (the
+        // abbreviation for pence), and values greater than a shilling are
+        // shown with a shilling bar (and without pence when the value is
+        // an even number of shillings)
+        + "%%pence-alone-implementation:\n"
+        + "    =0= d.;\n"
+        + "    12/12: <0</[>0>];\n";
+
+    //========================================================================
+    // Alternate numeration systems
+    //
+    // These examples show how RuleBasedNumberFormat can be used to format
+    // numbers using non-positional numeration systems.
+    //========================================================================
+
+    /**
+     * Arabic digits.  This example formats numbers in Arabic numerals.
+     * Normally, you'd do this with DecimalFormat, but this shows that
+     * RuleBasedNumberFormat can handle it too.
+     */
+    public static final String arabicNumerals =
+        "0; 1; 2; 3; 4; 5; 6; 7; 8; 9;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<,>>>;\n"
+        + "1,000,000: <<,>>>;\n"
+        + "1,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n"
+        + "-x: ->>;\n"
+        + "x.x: <<.>>;";
+
+    /**
+     * Words for digits.  Follows the same pattern as the Arabic-numerals
+     * example above, but uses words for the various digits (e.g., 123 comes
+     * out as "one two three").
+     */
+    public static final String wordsForDigits =
+        "-x: minus >>;\n"
+        + "x.x: << point >>;\n"
+        + "zero; one; two; three; four; five; six;\n"
+        + "    seven; eight; nine;\n"
+        + "10: << >>;\n"
+        + "100: << >>>;\n"
+        + "1000: <<, >>>;\n"
+        + "1,000,000: <<, >>>;\n"
+        + "1,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * This example formats numbers using Chinese characters in the Arabic
+     * place-value method.  This was used historically in China for a while.
+     */
+    public static final String chinesePlaceValue =
+        "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<>>>;\n"
+        + "1,000,000: <<>>>;\n"
+        + "1,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * Roman numerals.  This example has two variants: %modern shows how large
+     * numbers are usually handled today; %historical ses the older symbols for
+     * thousands.
+     */
+    public static final String romanNumerals =
+        "%historical:\n"
+        + "    =%modern=;\n"
+               // in early Roman numerals, 1,000 was shown with a circle
+               // bisected by a vertical line.  Additional thousands were
+               // shown by adding more concentric circles, and fives were
+               // shown by cutting the symbol for next-higher power of 10
+               // in half (the letter D for 500 evolved from this).
+               // We could go beyond 40,000, but Unicode doesn't encode
+               // the symbols for higher numbers/
+        + "    1000: \u2180[>>]; 2000: \u2180\u2180[>>]; 3000: \u2180\u2180\u2180[>>]; 4000: \u2180\u2181[>>];\n"
+        + "    5000: \u2181[>>]; 6000: \u2181\u2180[>>]; 7000: \u2181\u2180\u2180[>>];\n"
+        + "    8000: \u2181\u2180\u2180\u2180[>>]; 9000: \u2180\u2182[>>];\n"
+        + "    10,000: \u2182[>>]; 20,000: \u2182\u2182[>>]; 30,000: \u2182\u2182\u2182[>>];\n"
+        + "    40,000: =#,##0=;\n"
+        + "%modern:\n"
+        + "    ; I; II; III; IV; V; VI; VII; VIII; IX;\n"
+        + "    10: X[>>]; 20: XX[>>]; 30: XXX[>>]; 40: XL[>>]; 50: L[>>];\n"
+        + "    60: LX[>>]; 70: LXX[>>]; 80: LXXX[>>]; 90: XC[>>];\n"
+        + "    100: C[>>]; 200: CC[>>]; 300: CCC[>>]; 400: CD[>>]; 500: D[>>];\n"
+        + "    600: DC[>>]; 700: DCC[>>]; 800: DCCC[>>]; 900: CM[>>];\n"
+               // in modern Roman numerals, high numbers are generally shown
+               // by placing a bar over the letters for the lower numbers:
+               // the bar multiplied a letter's value by 1,000
+        + "    1000: M[>>]; 2000: MM[>>]; 3000: MMM[>>]; 4000: MV\u0306[>>];\n"
+        + "    5000: V\u0306[>>]; 6000: V\u0306M[>>]; 7000: V\u0306MM[>>];\n"
+        + "    8000: V\u0306MMM[>>]; 9000: MX\u0306[>>];\n"
+        + "    10,000: X\u0306[>>]; 20,000: X\u0306X\u0306[>>]; 30,000: X\u0306X\u0306X\u0306[>>];\n"
+        + "    40,000: X\u0306L\u0306[>>]; 50,000: L\u0306[>>]; 60,000: L\u0306X\u0306[>>];\n"
+        + "    70,000: L\u0306X\u0306X\u0306[>>]; 80,000: L\u0306X\u0306X\u0306X\u0306[>>];\n"
+        + "    90,000: X\u0306C\u0306[>>];\n"
+        + "    100,000: C\u0306[>>]; 200,000: C\u0306C\u0306[>>]; 300,000: C\u0306C\u0306[>>];\n"
+        + "    400,000: C\u0306D\u0306[>>]; 500,000: D\u0306[>>]; 600,000: D\u0306C\u0306[>>];\n"
+        + "    700,000: D\u0306C\u0306C\u0306[>>]; 800,000: D\u0306C\u0306C\u0306C\u0306[>>];\n"
+        + "    900,000: =#,##0=;\n";
+
+    /**
+     * Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers
+     * used the letter of their alphabet as numerals.  The first nine letters of
+     * the alphabet repesented the values from 1 to 9, the second nine letters the
+     * multiples of 10, and the remaining letters the multiples of 100.  Since they
+     * ran out of letters at 400, the remaining multiples of 100 were represented
+     * using combinations of the existing letters for the hundreds.  Numbers were
+     * distinguished from words in a number of different ways: the way shown here
+     * uses a single mark after a number consisting of one letter, and a double
+     * mark between the last two letters of a number consisting of two or more
+     * letters.  Two dots over a letter multiplied its value by 1,000.  Also, since
+     * the letter for 10 is the first letter of God's name and the letters for 5 and 6
+     * are letters in God's name, which wasn't supposed to be written or spoken, 15 and
+     * 16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.
+     */
+    public static final String hebrewAlphabetic =
+        // letters for the ones
+        "%%ones:\n"
+        + "    (no zero); \u05d0; \u05d1; \u05d2; \u05d3; \u05d4; \u05d5; \u05d6; \u05d7; \u05d8;\n"
+        // letters for the tens
+        + "%%tens:\n"
+        + "    ; \u05d9; \u05db; \u05dc; \u05de; \u05e0; \u05e1; \u05e2; \u05e4; \u05e6;\n"
+        // letters for the first four hundreds
+        + "%%hundreds:\n"
+        + "    ; \u05e7; \u05e8; \u05e9; \u05ea;\n"
+        // this rule set is used to write the combination of the tens and ones digits
+        // when we know that no other digits precede them: they put the numeral marks
+        // in the right place and properly handle 15 and 16 (I'm using the mathematical
+        // prime characters for the numeral marks because my Unicode font doesn't
+        // include the real Hebrew characters, which look just like the prime marks)
+        + "%%tens-and-ones:\n"
+               // for values less than 10, just use %%ones and put the numeral mark
+               // afterward
+        + "    =%%ones=\u2032;\n"
+               // put the numeral mark at the end for 10, but in the middle for
+               // 11 through 14
+        + "    10: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+               // special-case 15 and 16
+        + "    15: \u05d8\u2033\u05d5; 16: \u05d8\u2033\u05d6;\n"
+               // go back to the normal method at 17
+        + "    17: <%%tens<\u2033>%%ones>;\n"
+               // repeat the rules for 10 and 11 to cover the values from 20 to 99
+        + "    20: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+        // this rule set is used to format numbers below 1,000.  It relies on
+        // %%tens-and-ones to format the tens and ones places, and adds logic
+        // to handle the high hundreds and the numeral marks when there is no
+        // tens digit.  Notice how the rules are paired: all of these pairs of
+        // rules take advantage of the rollback rule: if the value (between 100
+        // and 499) is an even multiple of 100, the rule for 100 is used; otherwise,
+        // the rule for 101 (the following rule) is used.  The first rule in each
+        // pair (the one for the even multiple) places the numeral mark in a different
+        // spot than the second rule in each pair (which knows there are more digits
+        // and relies on the rule supplying them to also supply the numeral mark).
+        // The call to %%null in line 10 is there simply to invoke the rollback
+        // rule.
+        + "%%low-order:\n"
+               // this rule is only called when there are other characters before.
+               // It places the numeral mark before the last digit
+        + "    \u2033=%%ones=;\n"
+               // the rule for 10 places the numeral mark before the 10 character
+               // (because we know it's the last character); the rule for 11 relies
+               // on %%tens-and-ones to place the numeral mark
+        + "    10: \u2033<%%tens<; =%%tens-and-ones=>%%null>;\n"
+               // the rule for 100 places the numeral mark before the 100 character
+               // (we know it's the last character); the rule for 101 recurses to
+               // fill in the remaining digits and the numeral mark
+        + "    100: <%%hundreds<\u2032; <%%hundreds<>>;\n"
+               // special-case the hundreds from 500 to 900 because they consist of
+               // more than one character
+        + "    500: \u05ea\u2033\u05e7; \u05ea\u05e7>>;\n"
+        + "    600: \u05ea\u2033\u05e8; \u05ea\u05e8>>;\n"
+        + "    700: \u05ea\u2033\u05e9; \u05ea\u05e9>>;\n"
+        + "    800: \u05ea\u2033\u05ea; \u05ea\u05ea>>;\n"
+        + "    900: \u05ea\u05ea\u2033\u05e7; \u05ea\u05ea\u05e7>>;\n"
+        // this rule set is used to format values of 1,000 or more.  Here, we don't
+        // worry about the numeral mark, and we add two dots (the Unicode combining
+        // diaeresis character) to ever letter
+        + "%%high-order:\n"
+               // put the ones digit, followed by the diaeresis
+        + "    =%%ones=\u0308;\n"
+               // the tens can be handled with recursion
+        + "    10: <%%tens<\u0308[>>];\n"
+               // still have to special-case 15 and 16
+        + "    15: \u05d8\u0308\u05d5\u0308; 16: \u05d8\u003078\u05d6\u0308;\n"
+               // back to the regular rules at 17
+        + "    17: <%%tens<\u0308[>>];\n"
+               // the hundreds with the dots added (and without worrying about
+               // placing the numeral mark)
+        + "    100: <%%hundreds<\u0308[>>];\n"
+        + "    500: \u05ea\u0308\u05e7\u0308[>>];\n"
+        + "    600: \u05ea\u0308\u05e8\u0308[>>];\n"
+        + "    700: \u05ea\u0308\u05e9\u0308[>>];\n"
+        + "    800: \u05ea\u0308\u05ea\u0308[>>];\n"
+        + "    900: \u05ea\u0308\u05ea\u0308\u05e7\u0308[>>];\n"
+        // this rule set doesn't do anything; it's used by some other rules to
+        // invoke the rollback rule
+        + " %%null:\n"
+        + "    ;\n"
+        // the main rule set.
+        + "%main:\n"
+               // for values below 10, just output the letter and the numeral mark
+        + "    =%%ones=\u2032;\n"
+               // for values from 10 to 99, use %%tens-and-ones to do the formatting
+        + "    10: =%%tens-and-ones=;\n"
+               // for values from 100 to 999, use %%low-order to do the formatting
+        + "    100: =%%low-order=;\n"
+               // for values of 1,000 and over, use %%high-order to do the formatting
+        + "    1000: <%%high-order<[>%%low-order>];\n";
+
+    /**
+     * Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals,
+     * also used the letters of their alphabet as numerals.  There are three now-
+     * obsolete Greek letters that are used as numerals; many fonts don't have them.
+     * Large numbers were handled many different ways; the way shown here divides
+     * large numbers into groups of four letters (factors of 10,000), and separates
+     * the groups with the capital letter mu (for myriad).  Capital letters are used
+     * for values below 10,000; small letters for higher numbers (to make the capital
+     * mu stand out).
+     */
+    public static final String greekAlphabetic =
+        // this rule set is used for formatting numbers below 10,000.  It uses
+        // capital letters.
+        "%%low-order:\n"
+        + "    (no zero); \u0391; \u0392; \u0393; \u0394; \u0395; \u03dc; \u0396; \u0397; \u0398;\n"
+        + "    10: \u0399[>>]; 20: \u039a[>>]; 30: \u039b[>>]; 40: \u039c[>>]; 50: \u039d[>>];\n"
+        + "    60: \u039e[>>]; 70: \u039f[>>]; 80: \u03a0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03a1[>>]; 200: \u03a3[>>]; 300: \u03a4[>>]; 400: \u03a5[>>];\n"
+        + "    500: \u03a6[>>]; 600: \u03a7[>>]; 700: \u03a8[>>]; 800: \u03a9[>>];\n"
+        + "    900: \u03e0[>>];\n"
+               // the thousands are represented by the same numbers as the ones, but
+               // with a comma-like mark added to their left shoulder
+        + "    1000: \u0391\u0313[>>]; 2000: \u0392\u0313[>>]; 3000: \u0393\u0313[>>];\n"
+        + "    4000: \u0394\u0313[>>]; 5000: \u0395\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u0396\u0313[>>]; 8000: \u0397\u0313[>>]; 9000: \u0398\u0313[>>];\n"
+        // this rule set is the same as above, but uses lowercase letters.  It is used
+        // for formatting the groups in numbers above 10,000.
+        + "%%high-order:\n"
+        + "    (no zero); \u03b1; \u03b2; \u03b3; \u03b4; \u03b5; \u03dc; \u03b6; \u03b7; \u03b8;\n"
+        + "    10: \u03b9[>>]; 20: \u03ba[>>]; 30: \u03bb[>>]; 40: \u03bc[>>]; 50: \u03bd[>>];\n"
+        + "    60: \u03be[>>]; 70: \u03bf[>>]; 80: \u03c0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03c1[>>]; 200: \u03c3[>>]; 300: \u03c4[>>]; 400: \u03c5[>>];\n"
+        + "    500: \u03c6[>>]; 600: \u03c7[>>]; 700: \u03c8[>>]; 800: \u03c9[>>];\n"
+        + "    900: \u03c0[>>];\n"
+        + "    1000: \u03b1\u0313[>>]; 2000: \u03b2\u0313[>>]; 3000: \u03b3\u0313[>>];\n"
+        + "    4000: \u03b4\u0313[>>]; 5000: \u03b5\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u03b6\u0313[>>]; 8000: \u03b7\u0313[>>]; 9000: \u03b8\u0313[>>];\n"
+        // the main rule set
+        + "%main:\n"
+               // for values below 10,000, just use %%low-order
+        + "    =%%low-order=;\n"
+               // for values above 10,000, split into two groups of four digits
+               // and format each with %%high-order (putting an M in betwen)
+        + "    10,000: <%%high-order<\u039c>%%high-order>;\n"
+               // for values above 100,000,000, add another group onto the front
+               // and another M
+        + "    100,000,000: <%%high-order<\u039c>>\n";
+
+    /**
+     * A list of all the sample rule sets, used by the demo program.
+     */
+    public static final String[] sampleRuleSets =
+        { usEnglish,
+          ukEnglish,
+          spanish,
+          french,
+          swissFrench,
+          german,
+          italian,
+          swedish,
+          dutch,
+          japanese,
+          greek,
+          russian,
+          hebrew,
+          ordinal,
+          message1,
+          dollarsAndCents,
+          decimalAsFraction,
+          closestFraction,
+          stock,
+          abbEnglish,
+          units,
+          message2,
+          dozens,
+          durationInSeconds,
+          durationInHours,
+          poundsShillingsAndPence,
+          arabicNumerals,
+          wordsForDigits,
+          chinesePlaceValue,
+          romanNumerals,
+          hebrewAlphabetic,
+          greekAlphabetic };
+
+    /**
+     * The displayable names for all the sample rule sets, in the same order as
+     * the preceding array.
+     */
+    public static final String[] sampleRuleSetNames =
+        { "English (US)",
+          "English (UK)",
+          "Spanish",
+          "French (France)",
+          "French (Switzerland)",
+          "German",
+          "Italian",
+          "Swedish",
+          "Dutch",
+          "Japanese",
+          "Greek",
+          "Russian",
+          "Hebrew",
+          "English ordinal abbreviations",
+          "Simple message formatting",
+          "Dollars and cents",
+          "Decimals as fractions",
+          "Closest fraction",
+          "Stock prices",
+          "Abbreviated US English",
+          "Changing dimensions",
+          "Complex message formatting",
+          "Dozens",
+          "Duration (value in seconds)",
+          "Duration (value in hours)",
+          "Pounds, shillings, and pence",
+          "Arabic numerals",
+          "Words for digits",
+          "Chinese place-value notation",
+          "Roman numerals",
+          "Hebrew ahlphabetic numerals",
+          "Greek alphabetic numerals" };
+
+    /**
+     * The base locale for each of the sample rule sets.  The locale is used to
+     * determine DecimalFormat behavior, lenient-parse behavior, and text-display
+     * selection (we have a hack in here to allow display of non-Latin scripts).
+     * Null means the locale setting is irrelevant and the default can be used.
+     */
+    public static final Locale[] sampleRuleSetLocales =
+        { Locale.US,
+          Locale.UK,
+          new Locale("es", "", ""),
+          Locale.FRANCE,
+          new Locale("fr", "CH", ""),
+          Locale.GERMAN,
+          Locale.ITALIAN,
+          new Locale("sv", "", ""),
+          new Locale("nl", "", ""),
+          Locale.JAPANESE,
+          new Locale("el", "", ""),
+          new Locale("ru", "", ""),
+          new Locale("iw", "", ""),
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          Locale.US,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.ENGLISH,
+          null,
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.UK,
+          null,
+          Locale.ENGLISH,
+          new Locale("zh", "", ""),
+          null,
+          new Locale("iw", "", ""),
+          new Locale("el", "", ""),
+          null };
+
+        public static final String[] sampleRuleSetCommentary = {
+            "This demonstration version of the "
+            + "U.S. English spellout rules has four variants: 1) %simplified is a "
+            + "set of rules showing the simple method of spelling out numbers in "
+            + "English: 289 is formatted as \"two hundred eighty-nine\".  2) %alt-teens "
+            + "is the same as %simplified, except that values between 1,000 and 9,999 "
+            + "whose hundreds place isn't zero are formatted in hundreds.  For example, "
+            + "1,983 is formatted as \"nineteen hundred eighty-three,\" and 2,183 is "
+            + "formatted as \"twenty-one hundred eighty-three,\" but 2,083 is still "
+            + "formatted as \"two thousand eighty-three.\"  3) %ordinal formats the "
+            + "values as ordinal numbers in English (e.g., 289 is \"two hundred eighty-"
+            + "ninth\").  4) %default uses a more complicated algorithm to format "
+            + "numbers in a more natural way: 289 is formatted as \"two hundred AND "
+            + "eighty-nine\" and commas are inserted between the thousands groups for "
+            + "values above 100,000.",
+
+            "U.K. English has one significant "
+            + "difference from U.S. English: the names for values of 1,000,000,000 "
+            + "and higher.  In American English, each successive \"-illion\" is 1,000 "
+            + "times greater than the preceding one: 1,000,000,000 is \"one billion\" "
+            + "and 1,000,000,000,000 is \"one trillion.\"  In British English, each "
+            + "successive \"-illion\" is one million times greater than the one before: "
+            + "\"one billion\" is 1,000,000,000,000 (or what Americans would call a "
+            + "\"trillion\"), and \"one trillion\" is 1,000,000,000,000,000,000.  "
+            + "1,000,000,000 in British English is \"one thousand million.\"  (This "
+            + "value is sometimes called a \"milliard,\" but this word seems to have "
+            + "fallen into disuse.)",
+
+            "The Spanish rules are quite similar to "
+            + "the English rules, but there are some important differences: "
+            + "First, we have to provide separate rules for most of the twenties "
+            + "because the ones digit frequently picks up an accent mark that it "
+            + "doesn't have when standing alone.  Second, each multiple of 100 has "
+            + "to be specified separately because the multiplier on 100 very often "
+            + "changes form in the contraction: 500 is \"quinientos,\" not "
+            + "\"cincocientos.\"  In addition, the word for 100 is \"cien\" when "
+            + "standing alone, but changes to \"ciento\" when followed by more digits.  "
+            + "There also some other differences.",
+
+            "French adds some interesting quirks of its "
+            + "own: 1) The word \"et\" is interposed between the tens and ones digits, "
+            + "but only if the ones digit if 1: 20 is \"vingt,\" and 2 is \"vingt-deux,\" "
+            + "but 21 is \"vingt-et-un.\"  2)  There are no words for 70, 80, or 90.  "
+            + "\"quatre-vingts\" (\"four twenties\") is used for 80, and values proceed "
+            + "by score from 60 to 99 (e.g., 73 is \"soixante-treize\" [\"sixty-thirteen\"]).  "
+            + "Numbers from 1,100 to 1,199 are rendered as hundreds rather than "
+            + "thousands: 1,100 is \"onze cents\" (\"eleven hundred\"), rather than "
+            + "\"mille cent\" (\"one thousand one hundred\")",
+
+            "Swiss French differs from French French "
+            + "in that it does have words for 70, 80, and 90.  This rule set shows them, "
+            + "and is simpler as a result.",
+
+            "German also adds some interesting "
+            + "characteristics.  For values below 1,000,000, numbers are customarily "
+            + "written out as a single word.  And the ones digit PRECEDES the tens "
+            + "digit (e.g., 23 is \"dreiundzwanzig,\" not \"zwanzigunddrei\").",
+
+            "Like German, most Italian numbers are "
+            + "written as single words.  What makes these rules complicated is the rule "
+            + "that says that when a word ending in a vowel and a word beginning with "
+            + "a vowel are combined into a compound, the vowel is dropped from the "
+            + "end of the first word: 180 is \"centottanta,\" not \"centoottanta.\"  "
+            + "The complexity of this rule set is to produce this behavior.",
+
+            "Spellout rules for Swedish.",
+
+            "Spellout rules for Dutch.  Notice that in Dutch, as in German,"
+            + "the ones digit precedes the tens digit.",
+
+            "In Japanese, there really isn't any "
+            + "distinction between a number written out in digits and a number "
+            + "written out in words: the ideographic characters are both digits "
+            + "and words.  This rule set provides two variants:  %traditional "
+            + "uses the traditional CJK numerals (which are also used in China "
+            + "and Korea).  %financial uses alternate ideographs for many numbers "
+            + "that are harder to alter than the traditional numerals (one could "
+            + "fairly easily change a one to "
+            + "a three just by adding two strokes, for example).  This is also done in "
+            + "the other countries using Chinese idographs, but different ideographs "
+            + "are used in those places.",
+
+            "Again in Greek we have to supply the words "
+            + "for the multiples of 100 because they can't be derived algorithmically.  "
+            + "Also, the tens dgit changes form when followed by a ones digit: an "
+            + "accent mark disappears from the tens digit and moves to the ones digit.  "
+            + "Therefore, instead of using the [] notation, we actually have to use "
+            + "two separate rules for each multiple of 10 to show the two forms of "
+            + "the word.",
+
+            "Spellout rules for Russian.",
+
+            "Spellout rules for Hebrew.  Hebrew actually has inflected forms for "
+            + "most of the lower-order numbers.  The masculine forms are shown "
+            + "here.",
+
+            "This rule set adds an English ordinal abbreviation to the end of a "
+            + "number.  For example, 2 is formatted as \"2nd\".  Parsing doesn't work with "
+            + "this rule set.  To parse, use DecimalFormat on the numeral.",
+
+            "This is a simple message-formatting example.  Normally one would "
+            + "use ChoiceFormat and MessageFormat to do something this simple, "
+            + "but this shows it could be done with RuleBasedNumberFormat too.  "
+            + "A message-formatting example that might work better with "
+            + "RuleBasedNumberFormat appears later.",
+
+            "The next few examples demonstrate fraction handling.  "
+            + "This example formats a number in one of the two styles often used "
+            + "on checks.  %dollars-and-hundredths formats cents as hundredths of "
+            + "a dollar (23.40 comes out as \"twenty-three and 40/100 dollars\").  "
+            + "%dollars-and-cents formats in dollars and cents (23.40 comes out as "
+            + "\"twenty-three dollars and forty cents\")",
+
+            "This rule set shows the fractional part of the number as a fraction "
+            + "with a power of 10 as the denominator.  Some languages don't spell "
+            + "out the fractional part of a number as \"point one two three,\" but "
+            + "always render it as a fraction.  If we still want to treat the fractional "
+            + "part of the number as a decimal, then the fraction's denominator "
+            + "is always a power of 10.  This example does that: 23.125 is formatted "
+            + "as \"twenty-three and one hundred twenty-five thousandths\" (as opposed "
+            + "to \"twenty-three point one two five\" or \"twenty-three and one eighth\").",
+
+            "Number with closest fraction.  This example formats a value using "
+            + "numerals, but shows the fractional part as a ratio (fraction) rather "
+            + "than a decimal.  The fraction always has a denominator between 2 and 10.",
+
+            "American stock-price formatting.  Non-integral stock prices are still "
+            + "generally shown in eighths or sixteenths of dollars instead of dollars "
+            + "and cents.  This example formats stock prices in this way if possible, "
+            + "and in dollars and cents if not.",
+
+            "The next few examples demonstrate using a RuleBasedNumberFormat to "
+            + "change the units a value is denominated in depending on its magnitude.  "
+            + "The example shows large numbers the way they often appear is nwespapers: "
+            + "1,200,000 is formatted as \"1.2 million\".",
+
+            "This example takes a number of meters and formats it in whatever unit "
+            + "will produce a number with from one to three digits before the decimal "
+            + "point.  For example, 230,000 is formatted as \"230 km\".",
+
+            "A more complicated message-formatting example.  Here, in addition to "
+            + "handling the singular and plural versions of the word, the value is "
+            + "denominated in bytes, kilobytes, or megabytes depending on its magnitude.  "
+            + "Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000), "
+            + "and a megabyte as 1,024 kilobytes (not 1,000).",
+
+            "This example formats a number in dozens and gross.  This is intended to "
+            + "demonstrate how this rule set can be used to format numbers in systems "
+            + "other than base 10.  The \"/12\" after the rules' base values controls this.  "
+            + "Also notice that the base doesn't have to be consistent throughout the "
+            + "whole rule set: we go back to base 10 for values over 1,000.",
+
+            "The next few examples show how a single value can be divided up into major "
+            + "and minor units that don't relate to each other by a factor of 10.  "
+            + "This example formats a number of seconds in sexagesimal notation "
+            + "(i.e., hours, minutes, and seconds).  %with-words formats it with "
+            + "words (3740 is \"1 hour, 2 minutes, 20 seconds\") and %in-numerals "
+            + "formats it entirely in numerals (3740 is \"1:02:20\").",
+
+            "This example formats a number of hours in sexagesimal notation (i.e., "
+            + "hours, minutes, and seconds).  %with-words formats the value using "
+            + "words for the units, and %in-numerals formats the value using only "
+            + "numerals.",
+
+            "This rule set formats a number of pounds as pounds, shillings, and "
+            + "pence in the old English system of currency.",
+
+            "These examples show how RuleBasedNumberFormat can be used to format "
+            + "numbers using non-positional numeration systems.  "
+            + "This example formats numbers in Arabic numerals.  "
+            + "Normally, you'd do this with DecimalFormat, but this shows that "
+            + "RuleBasedNumberFormat can handle it too.",
+
+            "This example follows the same pattern as the Arabic-numerals "
+            + "example, but uses words for the various digits (e.g., 123 comes "
+            + "out as \"one two three\").",
+
+            "This example formats numbers using Chinese characters in the Arabic "
+            + "place-value method.  This was used historically in China for a while.",
+
+            "Roman numerals.  This example has two variants: %modern shows how large "
+            + "numbers are usually handled today; %historical ses the older symbols for "
+            + "thousands.  Not all of the characters are displayable with most fonts.",
+
+            "Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers "
+            + "used the letter of their alphabet as numerals.  The first nine letters of "
+            + "the alphabet repesented the values from 1 to 9, the second nine letters the "
+            + "multiples of 10, and the remaining letters the multiples of 100.  Since they "
+            + "ran out of letters at 400, the remaining multiples of 100 were represented "
+            + "using combinations of the existing letters for the hundreds.  Numbers were "
+            + "distinguished from words in a number of different ways: the way shown here "
+            + "uses a single mark after a number consisting of one letter, and a double "
+            + "mark between the last two letters of a number consisting of two or more "
+            + "letters.  Two dots over a letter multiplied its value by 1,000.  Also, since "
+            + "the letter for 10 is the first letter of God's name and the letters for 5 and 6 "
+            + "are letters in God's name, which wasn't supposed to be written or spoken, 15 and "
+            + "16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.",
+
+            "Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals, "
+            + "also used the letters of their alphabet as numerals.  There are three now-"
+            + "obsolete Greek letters that are used as numerals; many fonts don't have them.  "
+            + "Large numbers were handled many different ways; the way shown here divides "
+            + "large numbers into groups of four letters (factors of 10,000), and separates "
+            + "the groups with the capital letter mu (for myriad).  Capital letters are used "
+            + "for values below 10,000; small letters for higher numbers (to make the capital "
+            + "mu stand out).",
+
+            "This is a custom (user-defined) rule set."
+        };
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/package.html b/src/com/ibm/icu/dev/demo/rbnf/package.html
new file mode 100644
index 0000000..8a0507f
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+RuleBasedNumberFormat demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java b/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
new file mode 100644
index 0000000..72d8304
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
@@ -0,0 +1,78 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.demo.timescale;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class demonstrates how to use <code>UniversalTimeScale</code> to
+ * convert from one local time scale to another.
+ * 
+ * @see UniversalTimeScale
+ */
+public class PivotDemo {
+
+    /**
+     * The default constructor.
+     */
+    public PivotDemo()
+    {
+    }
+
+    /**
+     * The <code>main()</code> method uses <code>UniversalTimeScale</code> to
+     * convert from the Java and Unix time scales to the ICU time scale. It uses
+     * a <code>Calendar</code> object to display the ICU time values.
+     * 
+     * @param args the command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        TimeZone utc = new SimpleTimeZone(0, "UTC");
+        Calendar cal = Calendar.getInstance(utc, Locale.ENGLISH);
+        MessageFormat fmt = new MessageFormat("{1} = {0, date, full} {0, time, full}");
+        Object arguments[] = {cal, null};
+        
+        arguments[0] = cal;
+        
+        System.out.println("\nJava test:");
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = " 000000000000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62164684800000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62164684800000L";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62135769600000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62135769600000L";
+        System.out.println(fmt.format(arguments));
+        
+        System.out.println("\nUnix test:");
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x80000000, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x80000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x00000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x7FFFFFFF, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x7FFFFFFF";
+        System.out.println(fmt.format(arguments));
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
new file mode 100644
index 0000000..0386dc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
@@ -0,0 +1,299 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+
+public class AnyTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+    private String targetName;
+    private RunIterator it;
+    private Position run;
+    
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter, RunIterator it){
+        super("Any-" + targetName, filter);
+        this.targetName = targetName;
+        this.it = it;
+        run = new Position();
+    }
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter){
+        this(targetName, filter, new ScriptRunIterator());
+    }
+    
+    static private Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        if (DEBUG) {
+            System.out.println("- handleTransliterate " + hex.transliterate(text.toString())
+                + ", " + toString(offsets));
+        }
+        it.reset(text, offsets);
+        
+        while (it.next(run)) {
+            if (targetName.equalsIgnoreCase(it.getName())) {
+                if (DEBUG) System.out.println("Skipping identical: " + targetName);
+                run.start = run.limit; // show we processed
+                continue; // skip if same
+            }
+            
+            Transliterator t;
+            String id = it.getName() + '-' + targetName;
+            try {
+                t = Transliterator.getInstance(id);
+            } catch (IllegalArgumentException ex) {
+                if (DEBUG) System.out.println("Couldn't find: " + id + ", Trying Latin as Pivot");
+                id = it.getName() + "-Latin; Latin-" + targetName;
+                try {
+                    t = Transliterator.getInstance(id);
+                } catch (IllegalArgumentException ex2) {
+                    if (DEBUG) System.out.println("Couldn't find: " + id);
+                    continue;
+                }
+            }
+            // TODO catch error later!!
+                
+            if (DEBUG) {
+                System.out.println(t.getID());
+                System.out.println("input: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+            
+            if (isIncremental && it.atEnd()) {
+                t.transliterate(text, run);
+            } else {
+                t.finishTransliteration(text, run);
+            }
+            // adjust the offsets in line with the changes
+            it.adjust(run.limit);
+            
+            if (DEBUG) {
+                System.out.println("output: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+        }
+
+        // show how far we got!
+        it.getExpanse(offsets);
+        if (run.start == run.limit) offsets.start = offsets.limit;
+        else offsets.start = run.start;
+        if (DEBUG) {
+            System.out.println("+ handleTransliterate: " + ", " + toString(offsets));
+            System.out.println();
+        }
+    }
+    
+    // should be method on Position
+    public static String toString(Position offsets) {
+        return "[cs: " + offsets.contextStart
+                + ", s: " + offsets.start
+                + ", l: " + offsets.limit
+                + ", cl: " + offsets.contextLimit
+                + "]";
+    }
+    
+    public interface RunIterator {
+        public void reset(Replaceable text, Position expanse);
+        public void getExpanse(Position run);
+        public void reset();
+        public boolean next(Position run);
+        public void getCurrent(Position run);
+        public String getName();
+        public void adjust(int newCurrentLimit);
+        public boolean atEnd();
+    }
+    
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be of the form:
+     * ccccSScSSccccTTcTcccc    - where c is common, S is the first script and T is the second
+     *|            |            - first run
+     *         |            |    - second run
+     * That is, the runs will overlap. The reason for this is so that a transliterator can
+     * consider common characters both before and after the scripts.
+     * The only time that contextStart != start is for the first run 
+     *    (the context is the start context of the entire expanse)
+     * The only time that contextLimit != limit is for the last run 
+     *    (the context is the end context of the entire expanse)
+     */
+    public static class ScriptRunIterator implements RunIterator {
+        private Replaceable text;
+        private Position expanse = new Position();
+        private Position current = new Position();
+        private int script;
+        private boolean done = true;
+        
+
+        public void reset(Replaceable repText, Position expansePos) {
+            set(this.expanse, expansePos);
+            this.text = repText;
+            reset();
+        }
+            
+        public void reset() {
+            done = false;
+            //this.expanse = expanse;
+            script = UScript.INVALID_CODE;
+            // set up first range to be empty, at beginning
+            current.contextStart = expanse.contextStart;
+            current.start = current.limit = current.contextLimit = expanse.start;            
+        }
+            
+        public boolean next(Position run) {
+            if (done) return false;
+            if (DEBUG) {
+                System.out.println("+cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            // reset start context run to the last end
+            current.start = current.limit;
+            
+            // Phase 1. Backup the START value through COMMON until we get to expanse.start or a real script.
+            int i, cp;
+            int limit = expanse.start;
+            for (i = current.start; i > limit; i -= UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt != UScript.COMMON && scrpt != UScript.INHERITED) break;
+            }
+            current.start = i;
+            current.contextStart = (i == limit) ? expanse.contextStart : i; // extend at start
+            
+            // PHASE 2. Move up the LIMIT value through COMMON or single script until we get to expanse.limit
+            int lastScript = UScript.COMMON;
+            //int veryLastScript = UScript.COMMON;
+            limit = expanse.limit; 
+            for (i = current.limit; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt == UScript.INHERITED) scrpt = UScript.COMMON;
+                if (scrpt != UScript.COMMON) {
+                    // if we find a real script:
+                    //   if we already had a script, bail
+                    //   otherwise set our script
+                    if (lastScript == UScript.COMMON) lastScript = scrpt;
+                    else if (lastScript != scrpt) break;
+                }
+            }
+            current.limit = i;
+            current.contextLimit = (i == limit) ? expanse.contextLimit : i; // extend at end
+            done = (i == limit);
+            script = lastScript;
+            
+            if (DEBUG) {
+                System.out.println("-cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            
+            set(run, current);
+            return true;
+        }
+        
+        // SHOULD BE METHOD ON POSITION
+        public static void set(Position run, Position current) {
+            run.contextStart = current.contextStart;
+            run.start = current.start;
+            run.limit = current.limit;
+            run.contextLimit = current.contextLimit;
+        }
+        
+        public boolean atEnd() {
+            return current.limit == expanse.limit;
+        }
+        
+        public void getCurrent(Position run) {
+            set(run, current);
+        }
+        
+        public void getExpanse(Position run) {
+            set(run, expanse);
+        }
+        
+        public String getName() {
+            return UScript.getName(script);
+        }
+        
+        public void adjust(int newCurrentLimit) {
+            if (expanse == null) {
+                throw new IllegalArgumentException("Must reset() before calling");
+            }
+            int delta = newCurrentLimit - current.limit;
+            current.limit += delta;
+            current.contextLimit += delta;
+            expanse.limit += delta;
+            expanse.contextLimit += delta;
+        }
+        
+        // register Any-Script for every script.
+        
+        private static Set scriptList = new HashSet();
+        
+        public static void registerAnyToScript() {
+            synchronized (scriptList) {
+                Enumeration sources = Transliterator.getAvailableSources();
+                while(sources.hasMoreElements()) {
+                    String source = (String) sources.nextElement();
+                    if (source.equals("Any")) continue; // to keep from looping
+                    
+                    Enumeration targets = Transliterator.getAvailableTargets(source);
+                    while(targets.hasMoreElements()) {
+                        String target = (String) targets.nextElement();
+                        if (UScript.getCode(target) == null) continue; // SKIP unless we have a script (or locale)
+                        if (scriptList.contains(target)) continue; // already encountered
+                        scriptList.add(target); // otherwise add for later testing
+                        
+                        Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                        if (variantSet.size() < 2) {
+                            AnyTransliterator at = new AnyTransliterator(target, null);
+                            DummyFactory.add(at.getID(), at);
+                        } else {
+                            Iterator variants = variantSet.iterator();
+                            while(variants.hasNext()) {
+                                String variant = (String) variants.next();
+                                AnyTransliterator at = new AnyTransliterator(
+                                    (variant.length() > 0) ? target + "/" + variant : target, null);
+                                DummyFactory.add(at.getID(), at);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        
+        static class DummyFactory implements Transliterator.Factory {
+            static DummyFactory singleton = new DummyFactory();
+            static HashMap m = new HashMap();
+
+            // Since Transliterators are immutable, we don't have to clone on set & get
+            static void add(String ID, Transliterator t) {
+                m.put(ID, t);
+                System.out.println("Registering: " + ID + ", " + t.toRules(true));
+                Transliterator.registerFactory(ID, singleton);
+            }
+            public Transliterator getInstance(String ID) {
+                return (Transliterator) m.get(ID);
+            }
+        }
+        
+        // Nice little Utility for converting Enumeration to collection
+        static Set add(Set s, Enumeration enumeration) {
+            while(enumeration.hasMoreElements()) {
+                s.add(enumeration.nextElement());
+            }
+            return s;
+        }
+        
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/CaseIterator.java b/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
new file mode 100644
index 0000000..0e70659
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
@@ -0,0 +1,554 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+import java.util.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Incrementally returns the set of all strings that case-fold to the same value.
+ */
+public class CaseIterator {
+    
+    // testing stuff
+    static Transliterator toName = Transliterator.getInstance("[:^ascii:] Any-Name");
+    static Transliterator toHex = Transliterator.getInstance("[:^ascii:] Any-Hex");
+    static Transliterator toHex2 = Transliterator.getInstance("[[^\u0021-\u007F]-[,]] Any-Hex");
+    
+    // global tables (could be precompiled)
+    private static Map fromCaseFold = new HashMap();
+    private static Map toCaseFold = new HashMap();
+    private static int maxLength = 0;
+    
+    // This exception list is generated on the console by turning on the GENERATED flag, 
+    // which MUST be false for normal operation.
+    // Once the list is generated, it is pasted in here.
+    // A bit of a cludge, but this bootstrapping is the easiest way 
+    // to get around certain complications in the data.
+    
+    private static final boolean GENERATE = false;
+
+    private static final boolean DUMP = false;
+    
+    private static String[][] exceptionList = {
+        // a\N{MODIFIER LETTER RIGHT HALF RING}
+        {"a\u02BE","A\u02BE","a\u02BE",},
+        // ff
+        {"ff","FF","Ff","fF","ff",},
+        // ffi
+        {"ffi","FFI","FFi","FfI","Ffi","F\uFB01","fFI","fFi","ffI","ffi","f\uFB01","\uFB00I","\uFB00i",},
+        // ffl
+        {"ffl","FFL","FFl","FfL","Ffl","F\uFB02","fFL","fFl","ffL","ffl","f\uFB02","\uFB00L","\uFB00l",},
+        // fi
+        {"fi","FI","Fi","fI","fi",},
+        // fl
+        {"fl","FL","Fl","fL","fl",},
+        // h\N{COMBINING MACRON BELOW}
+        {"h\u0331","H\u0331","h\u0331",},
+        // i\N{COMBINING DOT ABOVE}
+        {"i\u0307","I\u0307","i\u0307",},
+        // j\N{COMBINING CARON}
+        {"j\u030C","J\u030C","j\u030C",},
+        // ss
+        {"ss","SS","Ss","S\u017F","sS","ss","s\u017F","\u017FS","\u017Fs","\u017F\u017F",},
+        // st
+        {"st","ST","St","sT","st","\u017FT","\u017Ft",},
+        // t\N{COMBINING DIAERESIS}
+        {"t\u0308","T\u0308","t\u0308",},
+        // w\N{COMBINING RING ABOVE}
+        {"w\u030A","W\u030A","w\u030A",},
+        // y\N{COMBINING RING ABOVE}
+        {"y\u030A","Y\u030A","y\u030A",},
+        // \N{MODIFIER LETTER APOSTROPHE}n
+        {"\u02BCn","\u02BCN","\u02BCn",},
+        // \N{GREEK SMALL LETTER ALPHA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AC\u03B9","\u0386\u0345","\u0386\u0399","\u0386\u03B9","\u0386\u1FBE","\u03AC\u0345","\u03AC\u0399","\u03AC\u03B9","\u03AC\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AE\u03B9","\u0389\u0345","\u0389\u0399","\u0389\u03B9","\u0389\u1FBE","\u03AE\u0345","\u03AE\u0399","\u03AE\u03B9","\u03AE\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B1\u0342","\u0391\u0342","\u03B1\u0342",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u0342\u03B9","\u0391\u0342\u0345","\u0391\u0342\u0399","\u0391\u0342\u03B9","\u0391\u0342\u1FBE",
+            "\u03B1\u0342\u0345","\u03B1\u0342\u0399","\u03B1\u0342\u03B9","\u03B1\u0342\u1FBE","\u1FB6\u0345",
+            "\u1FB6\u0399","\u1FB6\u03B9","\u1FB6\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u03B9","\u0391\u0345","\u0391\u0399","\u0391\u03B9","\u0391\u1FBE","\u03B1\u0345","\u03B1\u0399","\u03B1\u03B9","\u03B1\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B7\u0342","\u0397\u0342","\u03B7\u0342",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u0342\u03B9","\u0397\u0342\u0345","\u0397\u0342\u0399","\u0397\u0342\u03B9","\u0397\u0342\u1FBE",
+            "\u03B7\u0342\u0345","\u03B7\u0342\u0399","\u03B7\u0342\u03B9","\u03B7\u0342\u1FBE","\u1FC6\u0345","\u1FC6\u0399",
+            "\u1FC6\u03B9","\u1FC6\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u03B9","\u0397\u0345","\u0397\u0399","\u0397\u03B9","\u0397\u1FBE","\u03B7\u0345","\u03B7\u0399","\u03B7\u03B9","\u03B7\u1FBE",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03B9\u0308\u0300","\u0345\u0308\u0300","\u0399\u0308\u0300","\u03B9\u0308\u0300","\u1FBE\u0308\u0300",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03B9\u0308\u0301","\u0345\u0308\u0301","\u0399\u0308\u0301","\u03B9\u0308\u0301","\u1FBE\u0308\u0301",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0308\u0342","\u0345\u0308\u0342","\u0399\u0308\u0342","\u03B9\u0308\u0342","\u1FBE\u0308\u0342",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0342","\u0345\u0342","\u0399\u0342","\u03B9\u0342","\u1FBE\u0342",},
+        // \N{GREEK SMALL LETTER RHO}\N{COMBINING COMMA ABOVE}
+        {"\u03C1\u0313","\u03A1\u0313","\u03C1\u0313","\u03F1\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0308\u0300","\u03A5\u0308\u0300","\u03C5\u0308\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0308\u0301","\u03A5\u0308\u0301","\u03C5\u0308\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0308\u0342","\u03A5\u0308\u0342","\u03C5\u0308\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}
+        {"\u03C5\u0313","\u03A5\u0313","\u03C5\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0313\u0300","\u03A5\u0313\u0300","\u03C5\u0313\u0300","\u1F50\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0313\u0301","\u03A5\u0313\u0301","\u03C5\u0313\u0301","\u1F50\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0313\u0342","\u03A5\u0313\u0342","\u03C5\u0313\u0342","\u1F50\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0342","\u03A5\u0342","\u03C5\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C9\u0342","\u03A9\u0342","\u03C9\u0342","\u2126\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u0342\u03B9","\u03A9\u0342\u0345","\u03A9\u0342\u0399","\u03A9\u0342\u03B9","\u03A9\u0342\u1FBE","\u03C9\u0342\u0345","\u03C9\u0342\u0399","\u03C9\u0342\u03B9","\u03C9\u0342\u1FBE","\u1FF6\u0345",
+            "\u1FF6\u0399","\u1FF6\u03B9","\u1FF6\u1FBE","\u2126\u0342\u0345","\u2126\u0342\u0399","\u2126\u0342\u03B9","\u2126\u0342\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u03B9","\u03A9\u0345","\u03A9\u0399","\u03A9\u03B9","\u03A9\u1FBE","\u03C9\u0345","\u03C9\u0399","\u03C9\u03B9","\u03C9\u1FBE","\u2126\u0345","\u2126\u0399","\u2126\u03B9","\u2126\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03CE\u03B9","\u038F\u0345","\u038F\u0399","\u038F\u03B9","\u038F\u1FBE","\u03CE\u0345","\u03CE\u0399","\u03CE\u03B9","\u03CE\u1FBE",},
+        // \N{ARMENIAN SMALL LETTER ECH}\N{ARMENIAN SMALL LETTER YIWN}
+        {"\u0565\u0582","\u0535\u0552","\u0535\u0582","\u0565\u0552","\u0565\u0582",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER ECH}
+        {"\u0574\u0565","\u0544\u0535","\u0544\u0565","\u0574\u0535","\u0574\u0565",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER INI}
+        {"\u0574\u056B","\u0544\u053B","\u0544\u056B","\u0574\u053B","\u0574\u056B",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER XEH}
+        {"\u0574\u056D","\u0544\u053D","\u0544\u056D","\u0574\u053D","\u0574\u056D",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u0574\u0576","\u0544\u0546","\u0544\u0576","\u0574\u0546","\u0574\u0576",},
+        // \N{ARMENIAN SMALL LETTER VEW}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u057E\u0576","\u054E\u0546","\u054E\u0576","\u057E\u0546","\u057E\u0576",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F00\u03B9","\u1F00\u0345","\u1F00\u0399","\u1F00\u03B9","\u1F00\u1FBE","\u1F08\u0345","\u1F08\u0399","\u1F08\u03B9","\u1F08\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F01\u03B9","\u1F01\u0345","\u1F01\u0399","\u1F01\u03B9","\u1F01\u1FBE","\u1F09\u0345","\u1F09\u0399","\u1F09\u03B9","\u1F09\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F02\u03B9","\u1F02\u0345","\u1F02\u0399","\u1F02\u03B9","\u1F02\u1FBE","\u1F0A\u0345","\u1F0A\u0399","\u1F0A\u03B9","\u1F0A\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F03\u03B9","\u1F03\u0345","\u1F03\u0399","\u1F03\u03B9","\u1F03\u1FBE","\u1F0B\u0345","\u1F0B\u0399","\u1F0B\u03B9","\u1F0B\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F04\u03B9","\u1F04\u0345","\u1F04\u0399","\u1F04\u03B9","\u1F04\u1FBE","\u1F0C\u0345","\u1F0C\u0399","\u1F0C\u03B9","\u1F0C\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F05\u03B9","\u1F05\u0345","\u1F05\u0399","\u1F05\u03B9","\u1F05\u1FBE","\u1F0D\u0345","\u1F0D\u0399","\u1F0D\u03B9","\u1F0D\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F06\u03B9","\u1F06\u0345","\u1F06\u0399","\u1F06\u03B9","\u1F06\u1FBE","\u1F0E\u0345","\u1F0E\u0399","\u1F0E\u03B9","\u1F0E\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F07\u03B9","\u1F07\u0345","\u1F07\u0399","\u1F07\u03B9","\u1F07\u1FBE","\u1F0F\u0345","\u1F0F\u0399","\u1F0F\u03B9","\u1F0F\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F20\u03B9","\u1F20\u0345","\u1F20\u0399","\u1F20\u03B9","\u1F20\u1FBE","\u1F28\u0345","\u1F28\u0399","\u1F28\u03B9","\u1F28\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F21\u03B9","\u1F21\u0345","\u1F21\u0399","\u1F21\u03B9","\u1F21\u1FBE","\u1F29\u0345","\u1F29\u0399","\u1F29\u03B9","\u1F29\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F22\u03B9","\u1F22\u0345","\u1F22\u0399","\u1F22\u03B9","\u1F22\u1FBE","\u1F2A\u0345","\u1F2A\u0399","\u1F2A\u03B9","\u1F2A\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F23\u03B9","\u1F23\u0345","\u1F23\u0399","\u1F23\u03B9","\u1F23\u1FBE","\u1F2B\u0345","\u1F2B\u0399","\u1F2B\u03B9","\u1F2B\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F24\u03B9","\u1F24\u0345","\u1F24\u0399","\u1F24\u03B9","\u1F24\u1FBE","\u1F2C\u0345","\u1F2C\u0399","\u1F2C\u03B9","\u1F2C\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F25\u03B9","\u1F25\u0345","\u1F25\u0399","\u1F25\u03B9","\u1F25\u1FBE","\u1F2D\u0345","\u1F2D\u0399","\u1F2D\u03B9","\u1F2D\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F26\u03B9","\u1F26\u0345","\u1F26\u0399","\u1F26\u03B9","\u1F26\u1FBE","\u1F2E\u0345","\u1F2E\u0399","\u1F2E\u03B9","\u1F2E\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F27\u03B9","\u1F27\u0345","\u1F27\u0399","\u1F27\u03B9","\u1F27\u1FBE","\u1F2F\u0345","\u1F2F\u0399","\u1F2F\u03B9","\u1F2F\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F60\u03B9","\u1F60\u0345","\u1F60\u0399","\u1F60\u03B9","\u1F60\u1FBE","\u1F68\u0345","\u1F68\u0399","\u1F68\u03B9","\u1F68\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F61\u03B9","\u1F61\u0345","\u1F61\u0399","\u1F61\u03B9","\u1F61\u1FBE","\u1F69\u0345","\u1F69\u0399","\u1F69\u03B9","\u1F69\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F62\u03B9","\u1F62\u0345","\u1F62\u0399","\u1F62\u03B9","\u1F62\u1FBE","\u1F6A\u0345","\u1F6A\u0399","\u1F6A\u03B9","\u1F6A\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F63\u03B9","\u1F63\u0345","\u1F63\u0399","\u1F63\u03B9","\u1F63\u1FBE","\u1F6B\u0345","\u1F6B\u0399","\u1F6B\u03B9","\u1F6B\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F64\u03B9","\u1F64\u0345","\u1F64\u0399","\u1F64\u03B9","\u1F64\u1FBE","\u1F6C\u0345","\u1F6C\u0399","\u1F6C\u03B9","\u1F6C\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F65\u03B9","\u1F65\u0345","\u1F65\u0399","\u1F65\u03B9","\u1F65\u1FBE","\u1F6D\u0345","\u1F6D\u0399","\u1F6D\u03B9","\u1F6D\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F66\u03B9","\u1F66\u0345","\u1F66\u0399","\u1F66\u03B9","\u1F66\u1FBE","\u1F6E\u0345","\u1F6E\u0399","\u1F6E\u03B9","\u1F6E\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F67\u03B9","\u1F67\u0345","\u1F67\u0399","\u1F67\u03B9","\u1F67\u1FBE","\u1F6F\u0345","\u1F6F\u0399","\u1F6F\u03B9","\u1F6F\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F70\u03B9","\u1F70\u0345","\u1F70\u0399","\u1F70\u03B9","\u1F70\u1FBE","\u1FBA\u0345","\u1FBA\u0399","\u1FBA\u03B9","\u1FBA\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F74\u03B9","\u1F74\u0345","\u1F74\u0399","\u1F74\u03B9","\u1F74\u1FBE","\u1FCA\u0345","\u1FCA\u0399","\u1FCA\u03B9","\u1FCA\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F7C\u03B9","\u1F7C\u0345","\u1F7C\u0399","\u1F7C\u03B9","\u1F7C\u1FBE","\u1FFA\u0345","\u1FFA\u0399","\u1FFA\u03B9","\u1FFA\u1FBE",},
+    };
+    
+    // this initializes the data used to generated the case-equivalents
+
+    static {
+        
+        // Gather up the exceptions in a form we can use
+        
+        if (!GENERATE) {
+            for (int i = 0; i < exceptionList.length; ++i) {
+                String[] exception = exceptionList[i];
+                Set s = new HashSet();
+                // there has to be some method to do the following, but I can't find it in the collections
+                for (int j = 0; j < exception.length; ++j) {
+                    s.add(exception[j]);
+                }
+                fromCaseFold.put(exception[0], s);
+            }
+        }
+        
+        // walk through all the characters, and at every case fold result,
+        // put a set of all the characters that map to that result
+
+        boolean defaultmapping = true; // false for turkish
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE) continue;
+            
+            String cp = UTF16.valueOf(i);
+            String mapped = UCharacter.foldCase(cp, defaultmapping);
+            if (mapped.equals(cp)) continue;
+            
+            if (maxLength < mapped.length()) maxLength = mapped.length();
+            
+            // at this point, have different case folding
+            
+            Set s = (Set) fromCaseFold.get(mapped);
+            if (s == null) {
+                s = new HashSet();
+                s.add(mapped); // add the case fold result itself
+                fromCaseFold.put(mapped, s);
+            }
+            s.add(cp);
+            toCaseFold.put(cp, mapped);
+            toCaseFold.put(mapped, mapped); // add mapping to self
+        }
+        
+        // Emit the final data
+
+        if (DUMP) {
+            System.out.println("maxLength = " + maxLength);
+
+            System.out.println("\nfromCaseFold:");
+            Iterator it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                Object key = it.next();
+                System.out.print(" " + toHex2.transliterate((String)key) + ": ");
+                Set s = (Set) fromCaseFold.get(key);
+                Iterator it2 = s.iterator();
+                boolean first = true;
+                while (it2.hasNext()) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        System.out.print(", ");
+                    }
+                    System.out.print(toHex2.transliterate((String)it2.next()));
+                }
+                System.out.println("");
+            }
+
+            System.out.println("\ntoCaseFold:");
+            it = toCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                String value = (String) toCaseFold.get(key);
+                System.out.println(" " + toHex2.transliterate(key) + ": " + toHex2.transliterate(value));
+            }            
+        }
+        
+        // Now convert all those sets into linear arrays
+        // We can't do this in place in Java, so make a temporary target array
+        
+        // Note: This could be transformed into a single array, with offsets into it.
+        // Might be best choice in C.
+        
+        
+        Map fromCaseFold2 = new HashMap();
+        Iterator it = fromCaseFold.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+            Set s = (Set) fromCaseFold.get(key);
+            String[] temp = new String[s.size()];
+            s.toArray(temp);
+            fromCaseFold2.put(key, temp);
+        }
+        fromCaseFold = fromCaseFold2;
+
+        // We have processed everything, so the iterator will now work
+        // The following is normally OFF. 
+        // It is here to generate (under the GENERATE flag) the static exception list.
+        // It must be at the very end of initialization, so that the iterator is functional.
+        // (easiest to do it that way)
+            
+        if (GENERATE) {
+
+            // first get small set of items that have multiple characters
+            
+            Set multichars = new TreeSet();
+            it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                if (UTF16.countCodePoint(key) < 2) continue;
+                multichars.add(key);
+            }            
+            
+            // now we will go through each of them.
+            
+            CaseIterator ci = new CaseIterator();
+            it = multichars.iterator();
+            
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                
+                // here is a nasty complication. Take 'ffi' ligature. We
+                // can't just close it, since we would miss the combination
+                // that includes the 'fi' => "fi" ligature
+                // so first do a pass through, and add substring combinations
+                // we call this a 'partial closure'
+                
+                Set partialClosure = new TreeSet();
+                partialClosure.add(key);
+                
+                if (UTF16.countCodePoint(key) > 2) {
+                    Iterator multiIt2 = multichars.iterator();
+                    while (multiIt2.hasNext()) {
+                        String otherKey = (String) multiIt2.next();
+                        if (otherKey.length() >= key.length()) continue;
+                        int pos = -1;
+                        while (true) {
+                            // The following is not completely general
+                            // but works for the actual cased stuff,
+                            // and should work for future characters, since we won't have
+                            // more ligatures & other oddities.
+                            pos = key.indexOf(otherKey, pos+1);
+                            if (pos < 0) break;
+                            int endPos = pos + otherKey.length();
+                            // we know we have a proper substring,
+                            // so get the combinations
+                            String[] choices = (String[]) fromCaseFold.get(otherKey);
+                            for (int ii = 0; ii < choices.length; ++ii) {
+                                String patchwork = key.substring(0, pos)
+                                    + choices[ii]
+                                    + key.substring(endPos);
+                                partialClosure.add(patchwork);
+                            }
+                        }
+                    }
+                }
+                
+                // now, for each thing in the partial closure, get its
+                // case closure and add it to the final result.
+                
+                Set closure = new TreeSet(); // this will be the real closure
+                Iterator partialIt = partialClosure.iterator();
+                while (partialIt.hasNext()) {
+                    String key2 = (String) partialIt.next();
+                    ci.reset(key2);
+                    for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                        closure.add(temp);
+                    }
+                    // form closure
+                    /*String[] choices = (String[]) fromCaseFold.get(key2);
+                    for (int i = 0; i < choices.length; ++i) {
+                        ci.reset(choices[i]);
+                        String temp;
+                        while (null != (temp = ci.next())) {
+                            closure.add(temp);
+                        }
+                    }
+                    */
+                }
+                
+                // print it out, so that it can be cut and pasted back into this document.
+                
+                Iterator it2 = closure.iterator();
+                System.out.println("\t// " + toName.transliterate(key));
+                System.out.print("\t{\"" + toHex.transliterate(key) + "\",");
+                while (it2.hasNext()) {
+                    String item = (String)it2.next();
+                    System.out.print("\"" + toHex.transliterate(item) + "\",");
+                }
+                System.out.println("},");
+            }
+        }
+    }
+    
+    // ============ PRIVATE CLASS DATA ============ 
+    
+    // pieces that we will put together
+    // is not changed during iteration
+    private int count = 0;
+    private String[][] variants;
+    
+    // state information, changes during iteration
+    private boolean done = false;
+    private int[] counts;
+    
+    // internal buffer for efficiency
+    private StringBuffer nextBuffer = new StringBuffer();
+    
+    // ========================  
+
+    /**
+     * Reset to different source. Once reset, the iteration starts from the beginning.
+     * @param source The string to get case variants for
+     */
+    public void reset(String source) {
+        
+        // allocate arrays to store pieces
+        // using length might be slightly too long, but we don't care much
+        
+        counts = new int[source.length()];
+        variants = new String[source.length()][];
+        
+        // walk through the source, and break up into pieces
+        // each piece becomes an array of equivalent values
+        // TODO: could optimized this later to coalesce all single string pieces
+        
+        String piece = null;
+        count = 0;
+        for (int i = 0; i < source.length(); i += piece.length()) {
+            
+            // find *longest* matching piece
+            String caseFold = null;
+            
+            if (GENERATE) {
+                // do exactly one CP
+                piece = UTF16.valueOf(source, i);
+                caseFold = (String) toCaseFold.get(piece);
+            } else {               
+                int max = i + maxLength;
+                if (max > source.length()) max = source.length();
+                for (int j = max; j > i; --j) {
+                    piece = source.substring(i, j);
+                    caseFold = (String) toCaseFold.get(piece);
+                    if (caseFold != null) break;
+                }
+            }
+            
+            // if we fail, pick one code point
+            if (caseFold == null) {
+                piece = UTF16.valueOf(source, i);
+                variants[count++] = new String[] {piece}; // single item string
+            } else {
+                variants[count++] = (String[])fromCaseFold.get(caseFold);
+            }
+        }
+        reset();
+    }
+    
+    /**
+     * Restart the iteration from the beginning, but with same source
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < count; ++i) {
+            counts[i] = 0;
+        }
+    }
+    
+    /**
+     * Iterates through the case variants.
+     * @return next case variant. Each variant will case-fold to the same value as the source will.
+     * When the iteration is done, null is returned.
+     */
+    public String next() {
+        
+        if (done) return null;
+        int i;
+        
+        // TODO Optimize so we keep the piece before and after the current position
+        // so we don't have so much concatenation
+        
+        // get the result, a concatenation
+        
+        nextBuffer.setLength(0);
+        for (i = 0; i < count; ++i) {
+            nextBuffer.append(variants[i][counts[i]]);
+        }
+        
+        // find the next right set of pieces to concatenate
+        
+        for (i = count-1; i >= 0; --i) {
+            counts[i]++;
+            if (counts[i] < variants[i].length) break;
+            counts[i] = 0;
+        }
+        
+        // if we go too far, bail
+        
+        if (i < 0) {
+            done = true;
+        }
+        
+        return nextBuffer.toString();            
+    }
+        
+        
+    /**
+     * Temporary test, just to see how the stuff works.
+     */
+    static public void main(String[] args) {
+        String[] testCases = {"fiss", "h\u03a3"};
+        CaseIterator ci = new CaseIterator();
+        
+        for (int i = 0; i < testCases.length; ++i) {
+            String item = testCases[i];
+            System.out.println();
+            System.out.println("Testing: " + toName.transliterate(item));
+            System.out.println();
+            ci.reset(item);
+            int count = 0;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                System.out.println(toName.transliterate(temp));
+                count++;
+            }
+            System.out.println("Total: " + count);
+        }
+
+        // generate a list of all caseless characters -- characters whose
+        // case closure is themselves.
+
+        UnicodeSet caseless = new UnicodeSet();
+
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            String cp = UTF16.valueOf(i);
+            ci.reset(cp);
+            int count = 0;
+            String fold = null;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                fold = temp;
+                if (++count > 1) break;
+            }
+            if (count==1 && fold.equals(cp)) {
+                caseless.add(i);
+            }
+        }
+
+        System.out.println("caseless = " + caseless.toPattern(true));
+
+        UnicodeSet not_lc = new UnicodeSet("[:^lc:]");
+        
+        UnicodeSet a = new UnicodeSet();
+        a.set(not_lc);
+        a.removeAll(caseless);
+        System.out.println("[:^lc:] - caseless = " + a.toPattern(true));
+
+        a.set(caseless);
+        a.removeAll(not_lc);
+        System.out.println("caseless - [:^lc:] = " + a.toPattern(true));
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Demo.java b/src/com/ibm/icu/dev/demo/translit/Demo.java
new file mode 100644
index 0000000..7fb9834
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -0,0 +1,1381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.text.CharacterIterator;
+
+import com.ibm.icu.dev.test.util.Differ;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+import java.io.*;
+
+/**
+ * A frame that allows the user to experiment with keyboard
+ * transliteration.  This class has a main() method so it can be run
+ * as an application.  The frame contains an editable text component
+ * and uses keyboard transliteration to process keyboard events.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+public class Demo extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1L;
+    static final boolean DEBUG = false;
+    static final String START_TEXT = "(cut,\u03BA\u03C5\u03C4,\u05D0,\u30AF\u30C8,\u4E80,\u091A\u0941\u0924\u094D)";
+
+    Transliterator translit = null;
+    String fontName = "Arial Unicode MS";
+    int fontSize = 18;
+    
+    
+
+    /*
+    boolean compound = false;
+    Transliterator[] compoundTranslit = new Transliterator[MAX_COMPOUND];
+    static final int MAX_COMPOUND = 128;
+    int compoundCount = 0;
+    */
+
+    TransliteratingTextComponent text = null;
+
+    Menu translitMenu;
+    CheckboxMenuItem translitItem;
+    CheckboxMenuItem noTranslitItem;
+
+    static final String NO_TRANSLITERATOR = "None";
+
+    //private static final String COPYRIGHT =
+    //    "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String[] args) {
+        Frame f = new Demo(600, 200);
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameClosed();
+//                System.exit(0);
+            }
+        });
+        f.setVisible(true);
+        com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameOpened();
+    }
+
+    public Demo(int width, int height) {
+        super("Transliteration Demo");
+
+        initMenus();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                handleClose();
+            }
+        });
+        
+        text = new TransliteratingTextComponent();
+        Font font = new Font(fontName, Font.PLAIN, fontSize);
+        text.setFont(font);
+        text.setSize(width, height);
+        text.setVisible(true);
+        text.setText(START_TEXT);
+        add(text);
+
+        setSize(width, height);
+        setTransliterator("Latin-Greek", null);
+    }
+
+    private void initMenus() {
+        MenuBar mbar;
+        Menu menu;
+        MenuItem mitem;
+        //CheckboxMenuItem citem;
+        
+        setMenuBar(mbar = new MenuBar());
+        mbar.add(menu = new Menu("File"));
+        menu.add(mitem = new MenuItem("Quit"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleClose();
+            }
+        });
+/*
+        final ItemListener setTransliteratorListener = new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // Don't let the current transliterator be deselected.
+                    // Just reselect it.
+                    item.setState(true);
+                } else if (compound) {
+                    // Adding an item to a compound transliterator
+                    handleAddToCompound(item.getLabel());
+                } else if (item != translitItem) {
+                    // Deselect previous choice.  Don't need to call
+                    // setState(true) on new choice.
+                    translitItem.setState(false);
+                    translitItem = item;
+                    handleSetTransliterator(item.getLabel());
+                }
+            }
+        };
+*/
+        /*
+        translitMenu.add(translitItem = noTranslitItem =
+                         new CheckboxMenuItem(NO_TRANSLITERATOR, true));
+        noTranslitItem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                // Can't uncheck None -- any action here sets None to true
+                setNoTransliterator();
+            }
+        });
+
+        translitMenu.addSeparator();
+        */
+
+/*
+        translitMenu.add(citem = new CheckboxMenuItem("Compound"));
+        citem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // If compound gets deselected, then select NONE
+                    setNoTransliterator();
+                } else if (!compound) {
+                    // Switching from non-compound to compound
+                    translitItem.setState(false);
+                    translitItem = item;
+                    translit = null;
+                    compound = true;
+                    compoundCount = 0;
+                    for (int i=0; i<MAX_COMPOUND; ++i) {
+                        compoundTranslit[i] = null;
+                    }
+                }
+            }
+        });
+      
+        translitMenu.addSeparator();
+       */
+
+        /*
+        for (Enumeration e=getSystemTransliteratorNames().elements();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            translitMenu.add(citem = new CheckboxMenuItem(s));
+            citem.addItemListener(setTransliteratorListener);
+        }
+        */
+        
+        Menu fontMenu = new Menu("Font");
+        String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
+        for (int i = 0; i < fonts.length; ++i) {
+            MenuItem mItem = new MenuItem(fonts[i]);
+            mItem.addActionListener(new FontActionListener(fonts[i]));
+            fontMenu.add(mItem);
+        }
+        mbar.add(fontMenu);
+        
+        Menu sizeMenu = new Menu("Size");
+        int[] sizes = {9, 10, 12, 14, 18, 24, 36, 48, 72};
+        for (int i = 0; i < sizes.length; ++i) {
+            MenuItem mItem = new MenuItem("" + sizes[i]);
+            mItem.addActionListener(new SizeActionListener(sizes[i]));
+            sizeMenu.add(mItem);
+        }
+        mbar.add(sizeMenu);
+        
+        translit = null;
+        
+        mbar.add(translitMenu = new Menu("Transliterator"));
+        
+        translitMenu.add(convertSelectionItem = new MenuItem("Transliterate", 
+            new MenuShortcut(KeyEvent.VK_K)));
+        convertSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleBatchTransliterate(translit);
+            }
+        });
+        
+        translitMenu.add(swapSelectionItem = new MenuItem("Reverse", 
+            new MenuShortcut(KeyEvent.VK_S)));
+        swapSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                Transliterator inv;
+                try {
+                    inv = translit.getInverse();
+                } catch (Exception x) {
+                    inv = Transliterator.getInstance("null");
+                }
+                setTransliterator(inv.getID(), null);
+            }
+        });
+        
+        translitMenu.add(convertTypingItem = new MenuItem("No Typing Conversion",
+            new MenuShortcut(KeyEvent.VK_T)));
+        convertTypingItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (!transliterateTyping) {
+                    text.setTransliterator(translit);
+                    convertTypingItem.setLabel("No Typing Conversion");
+                } else {
+                    text.flush();
+                    text.setTransliterator(null);
+                    convertTypingItem.setLabel("Convert Typing");
+                }
+                transliterateTyping = !transliterateTyping;
+            }
+        });
+        
+        translitMenu.add(historyMenu = new Menu("Recent"));
+        
+        helpDialog = new InfoDialog(this, "Simple Demo", "Instructions",
+           "CTL A, X, C, V have customary meanings.\n"
+         + "Arrow keys, delete and backspace work.\n"
+         + "To get a character from its control point, type the hex, then hit CTL Q"
+        );
+        helpDialog.getArea().setEditable(false);
+        
+       
+        Menu helpMenu;
+        mbar.add(helpMenu = new Menu("Extras"));
+        helpMenu.add(mitem = new MenuItem("Help"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                helpDialog.show();
+            }
+        });   
+        
+        hexDialog = new InfoDialog(this, "Hex Entry", "Use U+..., \\u..., \\x{...}, or &#x...;",
+           "\\u00E1"
+        );
+        Button button = new Button("Insert");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String hexValue = hexDialog.getArea().getText();
+                text.insertText(fromHex.transliterate(hexValue));
+            }
+        });
+        hexDialog.getBottom().add(button);
+        
+        helpMenu.add(mitem = new MenuItem("Hex...", 
+            new MenuShortcut(KeyEvent.VK_H)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                hexDialog.show();
+            }
+        });
+        
+        // Compound Transliterator
+        
+        compoundDialog = new InfoDialog(this, "Compound Transliterator", "",
+           "[^\\u0000-\\u00FF] hex"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = compoundDialog.getArea().getText();
+                    setTransliterator(compound, null);
+                } catch (RuntimeException ex) {
+                    compoundDialog.getArea().setText(compound + "\n" + ex.getMessage());
+                }
+            }
+        });
+        compoundDialog.getBottom().add(button);
+        
+        translitMenu.add(mitem = new MenuItem("Multiple...", 
+            new MenuShortcut(KeyEvent.VK_M)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                compoundDialog.show();
+            }
+        });
+        
+        // RuleBased Transliterator
+        
+        rulesDialog = new InfoDialog(this, "Rule-Based Transliterator", "",
+           "([A-Z]) > &Hex($1) &Name($1);\r\n" 
+            + "&Hex-Any($1) < ('\\' [uU] [a-fA-F0-9]*);\r\n" 
+            + "&Name-Any($1) < ('{' [^\\}]* '}');"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = rulesDialog.getArea().getText();
+                    String id = ruleId.getText();
+                    setTransliterator(compound, id);
+                } catch (RuntimeException ex) {
+                    rulesDialog.getArea().setText(compound + "\n#" + ex.getMessage());
+                }
+            }
+        });
+        rulesDialog.getBottom().add(button);
+        ruleId = new TextField("test1", 20);
+        Label temp = new Label(" Name:");
+        rulesDialog.getBottom().add(temp);
+        rulesDialog.getBottom().add(ruleId);
+        
+        
+        translitMenu.add(mitem = new MenuItem("From Rules...", 
+            new MenuShortcut(KeyEvent.VK_R)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                rulesDialog.show();
+            }
+        });
+        
+        
+        translitMenu.add(mitem = new MenuItem("From File...", 
+            new MenuShortcut(KeyEvent.VK_F)));
+        mitem.addActionListener(new FileListener(this, RULE_FILE));
+        
+        translitMenu.add(mitem = new MenuItem("Test File..."));
+        mitem.addActionListener(new FileListener(this, TEST_FILE));
+        
+        // Flesh out the menu with the installed transliterators
+        
+        translitMenu.addSeparator();
+        
+        Iterator sources = add(new TreeSet(), Transliterator.getAvailableSources()).iterator();
+        while(sources.hasNext()) {
+            String source = (String) sources.next();
+            Iterator targets = add(new TreeSet(), Transliterator.getAvailableTargets(source)).iterator();
+            Menu targetMenu = new Menu(source);
+            while(targets.hasNext()) {
+                String target = (String) targets.next();
+                Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                if (variantSet.size() < 2) {
+                    mitem = new MenuItem(target);
+                    mitem.addActionListener(new TransliterationListener(source + "-" + target));
+                    targetMenu.add(mitem);
+                } else {
+                    Iterator variants = variantSet.iterator();
+                    Menu variantMenu = new Menu(target);
+                    while(variants.hasNext()) {
+                        String variant = (String) variants.next();
+                        String menuName = variant.length() == 0 ? "<default>" : variant;
+                        //System.out.println("<" + source + "-" + target + "/" + variant + ">, <" + menuName + ">");
+                        mitem = new MenuItem(menuName);
+                        mitem.addActionListener(new TransliterationListener(source + "-" + target + "/" + variant));
+                        variantMenu.add(mitem);
+                    }
+                    targetMenu.add(variantMenu);
+                }
+            }
+            translitMenu.add(targetMenu);
+        }
+        
+        
+    }
+    
+    static final int RULE_FILE = 0, TEST_FILE = 1;
+    //
+    static class FileListener implements ActionListener {
+        Demo frame;
+        int choice;
+        
+        FileListener(Demo frame, int choice) {
+            this.frame = frame;
+            this.choice = choice;
+        }
+        
+        public void actionPerformed(ActionEvent e) {
+            String id = frame.translit.getID();
+            int slashPos = id.indexOf('/');
+            String variant = "";
+            if (slashPos >= 0) {
+                variant = "_" + id.substring(slashPos+1);
+                id = id.substring(0, slashPos);
+            }
+            
+            FileDialog fileDialog = new FileDialog(frame, "Input File");
+            fileDialog.setFile("Test_" + id + ".txt");
+            fileDialog.show();
+            String fileName = fileDialog.getFile();
+            String fileDirectory = fileDialog.getDirectory();
+            if (fileName != null) {
+                try {
+                    File f = new File(fileDirectory, fileName);
+                    if (choice == RULE_FILE) {
+                        
+                        // read stuff into buffer
+                        
+                        StringBuffer buffer = new StringBuffer();
+                        FileInputStream fis = new FileInputStream(f);
+                        InputStreamReader isr = new InputStreamReader(fis, "UTF8");
+                        BufferedReader br = new BufferedReader(isr, 32*1024);
+                        while (true) {
+                            String line = br.readLine();
+                            if (line == null) break;
+                            if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1); // strip BOM
+                            buffer.append('\n');
+                            buffer.append(line);
+                        }
+                        br.close();
+                        
+                        // Transform file name into id
+                        if (fileName.startsWith("Transliterator_")) {
+                            fileName = fileName.substring("Transliterator_".length());
+                        }
+                        int pos = fileName.indexOf('_');
+                        if (pos < 0) {
+                            id = fileName;
+                        } else {
+                            id = fileName.substring(0, pos) + "-";
+                            int pos2 = fileName.indexOf('_', pos+1);
+                            if (pos2 < 0) {
+                                id += fileName.substring(pos+1);
+                            } else {
+                                id += fileName.substring(pos+1, pos2) + "/" + fileName.substring(pos2 + 1);
+                            }
+                        }                        
+                        pos = id.lastIndexOf('.');
+                        if (pos >= 0) id = id.substring(0, pos);
+                        
+                        // Now set
+                        
+                        frame.setTransliterator(buffer.toString(), id);
+                    } else if (choice == TEST_FILE) {
+                        genTestFile(f, frame.translit, variant);
+                    }
+                } catch (Exception e2) {
+                    e2.printStackTrace();
+                    System.out.println("Problem opening/reading: " + fileDirectory + ", " + fileName);
+                }
+            }
+            fileDialog.dispose();
+        }
+    }
+    
+
+    boolean transliterateTyping = true;
+    Transliterator fromHex = Transliterator.getInstance("Hex-Any");
+    InfoDialog helpDialog;
+    InfoDialog hexDialog;
+    InfoDialog compoundDialog;
+    InfoDialog rulesDialog;
+    TextField ruleId;
+    MenuItem convertSelectionItem = null;
+    MenuItem swapSelectionItem = null;
+    MenuItem convertTypingItem = null;
+    Menu historyMenu;
+    Map historyMap = new HashMap();
+    Set historySet = new TreeSet(new Comparator() {
+            public int compare(Object a, Object b) {
+                MenuItem aa = (MenuItem)a;
+                MenuItem bb = (MenuItem)b;
+                return aa.getLabel().compareTo(bb.getLabel());
+            }
+        });
+        
+    // ADD Factory since otherwise getInverse blows out
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+    
+    static void printBreaks(int num, String testSource, BreakIterator brkItr) {
+        String result = "";
+        int lastPos = 0;
+        while (true) {
+            int pos = brkItr.next();
+            if (pos == BreakIterator.DONE) break;
+            result += testSource.substring(lastPos, pos) + "&";
+            lastPos = pos;
+            System.out.println(pos);
+        }
+        System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printIteration(int num, String testSource, CharacterIterator ci) {
+        String result = "";
+        while (true) {
+            char ch = ci.next();
+            if (ch == CharacterIterator.DONE) break;
+            result += ch + "(" + ci.getIndex() + ")";
+        }
+        System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printSources() {
+        String[] list = {"Latin-ThaiLogical", "ThaiLogical-Latin", "Thai-ThaiLogical", "ThaiLogical-Thai"};
+        UnicodeSet all = new UnicodeSet();
+        for (int i = 0; i < list.length; ++i) {
+            Transliterator tr = Transliterator.getInstance(list[i]);
+            UnicodeSet src = tr.getSourceSet();
+            System.out.println(list[i] + ": " + src.toPattern(true));
+            all.addAll(src);
+        }
+        System.out.println("All: " + all.toPattern(true));
+        UnicodeSet rem = new UnicodeSet("[[:latin:][:thai:]]");
+        System.out.println("missing from [:latin:][:thai:]: " + all.removeAll(rem).toPattern(true));
+    }
+    
+    // 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+
+    static Transliterator title = Transliterator.getInstance("title");
+    static String hexAndNameRules = "    ([:c:]) > \\u200E &hex/unicode($1) ' ( ) ' &name($1) \\u200E ' ';"
+        + "([:mark:]) > \\u200E &hex/unicode($1) ' ( ' \\u200E \u25CC $1 \\u200E ' ) ' &name($1) \\u200E ' ';"
+        + "(.) > \\u200E &hex/unicode($1) ' ( ' \\u200E $1 \\u200E ' ) ' &name($1) ' ' \\u200E;";
+
+    static Transliterator hexAndName = Transliterator.createFromRules("any-hexAndName", 
+        hexAndNameRules, Transliterator.FORWARD);
+    
+
+
+    //static Transliterator upper = Transliterator.getInstance("upper");
+     
+    static final byte NONE = 0, TITLEWORD = 1, TITLELINE = 2;
+    
+    static void genTestFile(File sourceFile, Transliterator translit, String variant) {
+        try {
+            
+            System.out.println("Reading: " + sourceFile.getCanonicalPath());
+            BufferedReader in = new BufferedReader(
+                new InputStreamReader(
+                    new FileInputStream(sourceFile), "UTF-8"));
+            String targetFile = sourceFile.getCanonicalPath();
+            int dotPos = targetFile.lastIndexOf('.');
+            if (dotPos >= 0) targetFile = targetFile.substring(0,dotPos);
+            targetFile += variant;
+            
+            File outFile = new File(targetFile + ".html");
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+            
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+                        
+            String direction = "";
+            String id = translit.getID();
+            if (id.indexOf("Arabic") >= 0 || id.indexOf("Hebrew") >= 0) {
+                direction = " direction: rtl;";
+            }
+            boolean testRoundTrip = true;
+            boolean generateSets = true;
+            if (id.startsWith("Han-") || id.startsWith("ja-")) {
+                testRoundTrip = false;
+                generateSets = false;
+            }
+            out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+            out.println("<style><!--");
+            out.println("td, th       { vertical-align: top; border: 1px solid black }");
+            out.println("td.s       { background-color: #EEEEEE;" + direction + " }");
+            out.println("td.r       { background-color: #CCCCCC;" + direction + " }");
+            out.println("td.n       { background-color: #FFFFCC; }");
+            out.println("td.title       { border: 0px solid black}");
+            out.println("span.d       { background-color: #FF6666 }");
+            out.println("span.r       { background-color: #66FF66 }");
+
+            out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+            out.println("--></style>");
+            out.println("<title>" + id + " Transliteration Check</title></head>");
+            out.println("<body bgcolor='#FFFFFF'><p>See <a href='Test_Instructions.html'>Test_Instructions.html</a> for details.</p>");
+            out.println("<table>");
+            
+            //out.println("<tr><th width='33%'>Thai</th><th width='33%'>Latin</th><th width='33%'>Thai</th></tr>");
+  
+            Transliterator tl = translit;
+            Transliterator lt = tl.getInverse();
+            
+            Transliterator ltFilter = tl.getInverse();
+            ltFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            Transliterator tlFilter = lt.getInverse();
+            tlFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            
+            //Transliterator.getInstance("[:^Lu:]" +  lt.getID());
+            
+            BreakIterator sentenceBreak = BreakIterator.getSentenceInstance();
+            
+            byte titleSetting = TITLELINE;
+            //boolean upperfilter = false;
+            boolean first = true;
+            while (true) {
+                String line = in.readLine();
+                if (line == null) break;
+                line = line.trim();
+                if (line.length() == 0) continue;
+                if (line.charAt(0) == '\uFEFF') line = line.substring(1); // remove BOM
+                
+                if (line.charAt(0) == '#') continue; // comments
+                
+                if (line.equals("@TITLECASE@")) {
+                    titleSetting = TITLEWORD;
+                    out.println("<tr><td colspan='2' class='title'><b>Names</b></td></tr>");
+                    continue;
+                } else if (line.equals("@UPPERFILTER@")) {
+                    //upperfilter = true;
+                    continue;
+                } else if (line.startsWith("@SET")) {
+                    UnicodeSet s = new UnicodeSet(line.substring(4).trim());
+                    out.println("<tr><td colspan='2' class='title'><b>Characters</b></td></tr>");
+                    UnicodeSetIterator it = new UnicodeSetIterator(s);
+                    while (it.next()) {
+                        addSentenceToTable(out, it.codepoint != UnicodeSetIterator.IS_STRING 
+                            ? UTF16.valueOf(it.codepoint)
+                            : it.string,
+                            NONE, true, testRoundTrip, first, tl, lt);
+                    }
+                    continue;
+                }
+                        
+                sentenceBreak.setText(line);
+                int start = 0;
+                while (true) {
+                    int end = sentenceBreak.next();
+                    if (end == BreakIterator.DONE) break;
+                    String coreSentence = line.substring(start, end);
+                    //System.out.println("Core: " + hex.transliterate(coreSentence));
+                    end = start;
+                    
+                    int oldPos = 0;
+                    while (oldPos < coreSentence.length()) {
+                        // hack, because sentence doesn't seem to be working right
+                        int pos = coreSentence.indexOf(". ", oldPos);
+                        if (pos < 0) pos = coreSentence.length(); else pos = pos+2;
+                        int pos2 = coreSentence.indexOf('\u3002', oldPos);
+                        if (pos2 < 0) pos2 = coreSentence.length(); else pos2 = pos2 + 1;
+                        if (pos > pos2) pos = pos2;
+                        String sentence = coreSentence.substring(oldPos, pos).trim();
+                        //System.out.println("Sentence: " + hex.transliterate(coreSentence));
+                        oldPos = pos;
+                        
+                        addSentenceToTable(out, sentence,
+                            titleSetting, false, testRoundTrip, first, tl, lt);
+                        
+                        first = false;
+                    }
+                }
+            }
+            out.println("</table></body>");
+            out.close();
+            
+            // Now write the source/target sets
+            if (generateSets) {
+                outFile = new File(targetFile + "_Sets.html");
+                System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+                out = new PrintWriter(
+                    new BufferedWriter(
+                        new OutputStreamWriter(
+                            new FileOutputStream(outFile), "UTF-8")));
+                out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+                out.println("<style><!--");
+                out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+                out.println("--></style>");
+                out.println("<title>" + id + " Transliteration Sets</title></head>");
+                out.println("<body bgcolor='#FFFFFF'>");
+                
+                int dashPos = id.indexOf('-');
+                int slashPos = id.indexOf('/');
+                if (slashPos < 0) slashPos = id.length();
+                UnicodeSet sourceSuper = null;
+                try {
+                    String temp = id.substring(0,dashPos);
+                    if (temp.equals("ja")) sourceSuper = new UnicodeSet("[[:Han:][:hiragana:][:katakana:]]");
+                    else sourceSuper = new UnicodeSet("[[:" + temp + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                UnicodeSet targetSuper = null;
+                try {
+                    targetSuper = new UnicodeSet("[[:" + id.substring(dashPos+1, slashPos) + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                int nfdStyle = CLOSE_CASE | CLOSE_FLATTEN | CLOSE_CANONICAL;
+                int nfkdStyle = nfdStyle | CLOSE_COMPATIBILITY;
+                out.println("<ul>");
+                out.println("<p><b>None</b></p>");
+                showSets(out, translit, lt, null, null, 0);
+                out.println("<p><b>NFD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfdStyle);
+                out.println("<p><b>NFKD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfkdStyle);
+                out.println("</ul></body>");
+                out.close();
+            }
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static void addSentenceToTable(PrintWriter out, String sentence, 
+            byte titleSetting, boolean addName, boolean testRoundTrip, boolean first,
+            Transliterator tl, Transliterator lt) {
+        if (sentence.length() == 0) return; // skip empty lines
+        
+        String originalShow = sentence;
+        String latin;
+        latin = tl.transliterate(saveAscii.transliterate(sentence));
+
+        String latinShow = latin;
+        if (titleSetting == TITLEWORD) {
+            latinShow = title.transliterate(latin);
+        } else if (titleSetting == TITLELINE) {
+            latinShow = titlecaseFirstWord(latinShow);
+        }
+        latinShow = restoreAscii.transliterate(latinShow);
+                        
+        String reverse;
+        reverse = restoreAscii.transliterate(lt.transliterate(latin));
+                        
+        String NFKDSentence = Normalizer.normalize(sentence, Normalizer.NFKD);
+        String NFKDLatin = Normalizer.normalize(latin, Normalizer.NFKD);
+        String NFKDReverse = Normalizer.normalize(reverse, Normalizer.NFKD);
+        
+        if (latinShow.length() == 0) {
+            latinShow = "<i>empty</i>";
+        } else if (NFKDSentence.equals(NFKDLatin)) {
+            latinShow = "<span class='r'>" + latinShow + "</span>";
+        }
+        String reverseShow = reverse;
+        
+        if (testRoundTrip && !NFKDReverse.equals(NFKDSentence)) {
+            int minLen = reverse.length();
+            if (minLen > sentence.length()) minLen = sentence.length();
+            int i;
+            for (i = 0; i < minLen; ++i) {
+                if (reverse.charAt(i) != sentence.charAt(i)) break;
+            }
+            //originalShow = sentence.substring(0,i) + "<span class='d'>" + sentence.substring(i) + "</span>";
+            reverseShow = reverseShow.length() == 0 
+                ? "<i>empty</i>" 
+                //: reverse.substring(0,i) + "<span class='d'>" + reverse.substring(i) + "</span>";
+                : showDifference(sentence, reverse);
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td rowSpan='2'>" + latinShow
+                + "</td></tr><tr><td class='r'>" + reverseShow
+                + "</td></tr>");
+        } else {
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td>" + latinShow
+                + "</td></tr>");
+        }
+        if (addName) {
+            latinShow = hexAndName.transliterate(latin);
+            if (latinShow.length() == 0) latinShow = "<i>empty</i>";
+            originalShow = hexAndName.transliterate(sentence);
+            if (originalShow.length() == 0) originalShow = "<i>empty</i>";
+
+            out.println("<tr><td class='n'>" + originalShow
+                + "</td><td class='n'>" + latinShow
+                + "</td></tr>");
+        }
+        out.println("<tr><td></td></tr>");
+        
+    }
+    
+    static String showDifference(String as, String bs) {
+        Differ differ = new Differ(300, 3);
+        StringBuffer out = new StringBuffer();
+        int max = as.length();
+        if (max < bs.length()) max = bs.length();
+        for (int j = 0; j <= max; ++j) {
+            if (j < as.length()) differ.addA(as.substring(j, j+1));
+            if (j < bs.length()) differ.addB(bs.substring(j, j+1));
+            differ.checkMatch(j == max);
+
+            if (differ.getACount() != 0 || differ.getBCount() != 0) {
+                out.append("...");
+                if (differ.getACount() != 0) {
+                    out.append("<span class='r'>");
+                    for (int i = 0; i < differ.getACount(); ++i) {
+                        out.append(differ.getA(i));
+                    }
+                    out.append("</span>");
+                }
+                if (differ.getBCount() != 0) {
+                    out.append("<span class='d'>");
+                    for (int i = 0; i < differ.getBCount(); ++i) {
+                        out.append(differ.getB(i));
+                    }
+                    out.append("</span>");
+                }
+                out.append("...");
+            }
+        }
+        return out.toString();
+    }
+    
+    static void showSets(PrintWriter out, Transliterator translit, Transliterator inverse,
+      UnicodeSet sourceSuper, UnicodeSet targetSuper, int options) {
+        out.println("<li>Source Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getSourceSet(), options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Target Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getTargetSet(),  options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Target Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getTargetSet(), options), targetSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Source Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getSourceSet(),  options), targetSuper) + "</li></ul></li>");
+    }
+        
+    static final int CLOSE_CASE = 1, CLOSE_FLATTEN = 2, CLOSE_CANONICAL = 4, CLOSE_COMPATIBILITY = 8;
+    
+    static UnicodeSet closeUnicodeSet(UnicodeSet source, int options) {
+        if (options == 0) return source;
+        
+        UnicodeSetIterator it = new UnicodeSetIterator(source);
+        UnicodeSet additions = new UnicodeSet(); // to avoid messing up iterator
+        UnicodeSet removals = new UnicodeSet(); // to avoid messing up iterator
+        String base;
+        int cp;
+        
+        // Add all case equivalents
+        if ((options & CLOSE_CASE) != 0) {
+            while (it.next()) {
+                cp = it.codepoint;
+                if (cp == UnicodeSetIterator.IS_STRING) continue;
+                int type = UCharacter.getType(cp);
+                if (type == Character.UPPERCASE_LETTER || type == Character.LOWERCASE_LETTER || type == Character.TITLECASE_LETTER) {
+                    additions.add(UCharacter.toLowerCase(UTF16.valueOf(cp)));
+                    additions.add(UCharacter.toUpperCase(UTF16.valueOf(cp)));
+                }
+            }
+            source.addAll(additions);
+        }
+       
+        // Add the canonical closure of all strings and characters in source
+        if ((options & CLOSE_CANONICAL) != 0) {
+            it.reset();
+            additions.clear();
+            CanonicalIterator ci = new CanonicalIterator(".");
+            while (it.next()) {
+                if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                ci.setSource(base);
+                while (true) {
+                    String trial = ci.next();
+                    if (trial == null) break;
+                    if (trial.equals(base)) continue;
+                    additions.add(trial);
+                }
+            }
+            source.addAll(additions);
+        }
+
+        // flatten strings
+        if ((options & CLOSE_FLATTEN) != 0) {
+            it.reset();
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint != UnicodeSetIterator.IS_STRING) continue;
+                additions.addAll(it.string);
+                removals.add(it.string);
+                //System.out.println("flattening '" + hex.transliterate(it.string) + "'");
+            }
+            source.addAll(additions);
+            source.removeAll(removals);
+        }
+       
+        // Now add decompositions of characters in source
+        if ((options & CLOSE_COMPATIBILITY) != 0) {
+            it.reset(source);
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                if (Normalizer.isNormalized(base, Normalizer.NFKD,0)) continue;
+                String decomp = Normalizer.normalize(base, Normalizer.NFKD);
+                additions.add(decomp);
+            }
+            source.addAll(additions);
+            
+            // Now add any other character that decomposes to a character in source
+            for (cp = 0; cp < 0x10FFFF; ++cp) {
+                if (!UCharacter.isDefined(cp)) continue;
+                if (Normalizer.isNormalized(cp, Normalizer.NFKD,0)) continue;
+                if (source.contains(cp)) continue;
+                
+                String decomp = Normalizer.normalize(cp, Normalizer.NFKD);
+                if (source.containsAll(decomp)) {
+                    // System.out.println("Adding: " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                    source.add(cp);
+                }
+            }
+        }
+        
+        return source;
+    }
+    
+    static String toPattern(UnicodeSet source, UnicodeSet superset) {
+        if (superset != null) {
+            source.removeAll(superset);
+            return "[" + superset.toPattern(true) + " " + source.toPattern(true) + "]";
+        }
+        return source.toPattern(true);
+    }
+    
+    static BreakIterator bi = BreakIterator.getWordInstance();
+    
+    static String titlecaseFirstWord(String line) {
+        // search for first word with letters. If the first letter is lower, then titlecase it.
+        bi.setText(line);
+        int start = 0;
+        while (true) {
+            int end = bi.next();
+            if (end == BreakIterator.DONE) break;
+            int firstLetterType = getFirstLetterType(line, start, end);
+            if (firstLetterType != Character.UNASSIGNED) {
+                if (firstLetterType != Character.LOWERCASE_LETTER) break;
+                line = line.substring(0, start) 
+                    + UCharacter.toTitleCase(line.substring(start, end), bi)
+                    + line.substring(end);
+                break;
+            }
+            end = start;
+        }
+        return line;
+    }
+    
+    static final int LETTER_MASK = 
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        ;
+    
+    static int getFirstLetterType(String line, int start, int end) {
+        int cp;
+        for (int i = start; i < end; i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(line, i);
+            int type = UCharacter.getType(cp);
+            if (((1<<type) & LETTER_MASK) != 0) return type;
+        }
+        return Character.UNASSIGNED;
+    }
+    
+    static void printNames(UnicodeSet s, String targetFile) {
+        try {
+            File outFile = new File(targetFile);
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+            UnicodeSet main = new UnicodeSet();
+            
+            UnicodeSet others = new UnicodeSet();
+            UnicodeSetIterator it = new UnicodeSetIterator(s);
+            while (it.next()) {
+                if (!UCharacter.isDefined(it.codepoint)) continue;
+                if (!Normalizer.isNormalized(it.codepoint, Normalizer.NFD,0)) {
+                    String decomp = Normalizer.normalize(it.codepoint, Normalizer.NFD);
+                    others.addAll(decomp);
+                    continue;
+                }
+                out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                main.add(it.codepoint);
+            }
+            
+            if (others.size() != 0) {
+                out.println("Decomposed characters found above: ");
+                others.removeAll(main);
+                it.reset(others);
+                while (it.next()) {
+                    out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                }
+            }
+            
+            out.close();
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    static final String saveRules = 
+          "A <> \uEA41; B <> \uEA42; C <> \uEA43; D <> \uEA44; E <> \uEA45; F <> \uEA46; G <> \uEA47; H <> \uEA48; I <> \uEA49; "
+        + "J <> \uEA4A; K <> \uEA4B; L <> \uEA4C; M <> \uEA4D; N <> \uEA4E; O <> \uEA4F; P <> \uEA50; Q <> \uEA51; R <> \uEA52; "
+        + "S <> \uEA53; T <> \uEA54; U <> \uEA55; V <> \uEA56; W <> \uEA57; X <> \uEA58; Y <> \uEA59; Z <> \uEA5A; "
+        + "a <> \uEA61; b <> \uEA62; c <> \uEA63; d <> \uEA64; e <> \uEA65; f <> \uEA66; g <> \uEA67; h <> \uEA68; i <> \uEA69; "
+        + "j <> \uEA6A; k <> \uEA6B; l <> \uEA6C; m <> \uEA6D; n <> \uEA6E; o <> \uEA6F; p <> \uEA70; q <> \uEA71; r <> \uEA72; "
+        + "s <> \uEA73; t <> \uEA74; u <> \uEA75; v <> \uEA76; w <> \uEA77; x <> \uEA78; y <> \uEA79; z <> \uEA7A;";
+        
+    static Transliterator saveAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.FORWARD);
+    static Transliterator restoreAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.REVERSE);
+    
+    static {
+        
+        if (false) {
+        
+        for (char i = 'A'; i <= 'z'; ++i) {
+            System.out.print(i + " <> " + hex.transliterate(String.valueOf((char)(0xEA00 + i))) + "; ");
+        }
+
+        UnicodeSet x = new UnicodeSet("[[:^ccc=0:]&[:^ccc=230:]]");
+        x = x.complement();
+        x = x.complement();
+        System.out.println("Test: " + x.toPattern(true));
+        
+        Transliterator y = Transliterator.createFromRules("xxx", "$notAbove = [[:^ccc=0:]&[:^ccc=230:]]; u ($notAbove*) \u0308 > XXX | $1; ", Transliterator.FORWARD);
+        
+        String[] testList = {"u\u0308", "u\u0316\u0308", "u\u0308\u0316", "u\u0301\u0308", "u\u0308\u0301"};
+        for (int i = 0; i < testList.length; ++i) {
+            String yy = y.transliterate(testList[i]);
+            System.out.println(hex.transliterate(testList[i]) + " => " + hex.transliterate(yy));
+        }
+        
+        //printNames(new UnicodeSet("[\u0600-\u06FF]"), "Arabic-Latin.txt");
+        
+        
+        /*  
+        BreakTransliterator.register();
+        
+        BreakTransliterator testTrans = new BreakTransliterator("Any-XXX", null, null, "$");
+        String testSource = "The Quick:   Brown fox--jumped.";
+        BreakIterator bi = testTrans.getBreakIterator();
+        bi.setText(new StringCharacterIterator(testSource));
+        printBreaks(0, testSource, bi);
+        //bi.setText(UCharacterIterator.getInstance(testSource));
+        //printBreaks(1, testSource, bi);
+        
+        printIteration(2, testSource, new StringCharacterIterator(testSource));
+        //printIteration(3, testSource, UCharacterIterator.getInstance(testSource));
+        
+        
+        
+        String test = testTrans.transliterate(testSource);
+        System.out.println("Test3: " + test);
+        DummyFactory.add(testTrans.getID(), testTrans);
+        */
+        
+        // AnyTransliterator.ScriptRunIterator.registerAnyToScript();
+        
+        AnyTransliterator at = new AnyTransliterator("Greek", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        at = new AnyTransliterator("Devanagari", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        at = new AnyTransliterator("Latin", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        DummyFactory.add("Any-gif", Transliterator.createFromRules("gif", "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';", Transliterator.FORWARD));        
+        DummyFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));        
+
+        DummyFactory.add("Any-RemoveCurly", Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ;", Transliterator.FORWARD));        
+        DummyFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+        
+        System.out.println("Trying &hex");
+        Transliterator t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-hex2", t);        
+        
+        System.out.println("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &any-gif($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-gif2", t);    
+        }
+    }
+    
+    
+    void setTransliterator(String name, String id) {
+        if (DEBUG) System.out.println("Got: " + name);
+        if (id == null) {
+            translit = Transliterator.getInstance(name);
+        } else {
+            String reverseId = "";
+            int pos = id.indexOf('-');
+            if (pos < 0) {
+                reverseId = id + "-Any";
+                id = "Any-" + id;
+            } else {
+                int pos2 = id.indexOf("/", pos);
+                if (pos2 < 0) {
+                    reverseId = id.substring(pos+1) + "-" + id.substring(0,pos);
+                } else {
+                    reverseId = id.substring(pos+1, pos2) + "-" + id.substring(0,pos) + id.substring(pos2);
+                }
+            }
+            
+            
+            translit = Transliterator.createFromRules(id, name, Transliterator.FORWARD);
+            if (DEBUG) {
+                System.out.println("***Forward Rules");
+                System.out.println(translit.toRules(true));
+                System.out.println("***Source Set");
+                System.out.println(translit.getSourceSet().toPattern(true));
+            }
+                System.out.println("***Target Set");
+                UnicodeSet target = translit.getTargetSet();
+                System.out.println(target.toPattern(true));
+                UnicodeSet rest = new UnicodeSet("[a-z]").removeAll(target);
+                System.out.println("***ASCII - Target Set");
+                System.out.println(rest.toPattern(true));
+                
+            DummyFactory.add(id, translit);
+            
+            Transliterator translit2 = Transliterator.createFromRules(reverseId, name, Transliterator.REVERSE);
+            if (DEBUG) {
+                System.out.println("***Backward Rules");
+                System.out.println(translit2.toRules(true));
+            }
+            DummyFactory.add(reverseId, translit2);
+            
+            Transliterator rev = translit.getInverse();
+            if (DEBUG) System.out.println("***Inverse Rules");
+            if (DEBUG) System.out.println(rev.toRules(true));
+            
+        }
+        text.flush();
+        text.setTransliterator(translit);
+        convertSelectionItem.setLabel(Transliterator.getDisplayName(translit.getID()));
+        
+        addHistory(translit);
+        
+        Transliterator inv;
+        try {
+            inv = translit.getInverse();
+        } catch (Exception ex) {
+            inv = null;
+        }
+        if (inv != null) {
+            addHistory(inv);
+            swapSelectionItem.setEnabled(true);
+        } else {
+            swapSelectionItem.setEnabled(false);
+        }
+        System.out.println("Set transliterator: " + translit.getID()
+            + (inv != null ? " and " + inv.getID() : ""));
+    }
+    
+    void addHistory(Transliterator trans) {
+        String name = trans.getID();
+        MenuItem cmi = (MenuItem) historyMap.get(name);
+        if (cmi == null) {
+            cmi = new MenuItem(Transliterator.getDisplayName(name));
+            cmi.addActionListener(new TransliterationListener(name));
+            historyMap.put(name, cmi);
+            historySet.add(cmi);
+            historyMenu.removeAll();
+            Iterator it = historySet.iterator();
+            while (it.hasNext()) {
+                historyMenu.add((MenuItem)it.next());
+            }
+        }
+    }
+    
+    class TransliterationListener implements ActionListener, ItemListener {
+        String name;
+        public TransliterationListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            setTransliterator(name, null);
+        }
+        public void itemStateChanged(ItemEvent e) {
+            if (e.getStateChange() == ItemEvent.SELECTED) {
+                setTransliterator(name, null);
+            } else {
+                setTransliterator("Any-Null", null);
+            }
+        }
+    }
+    
+    class FontActionListener implements ActionListener {
+        String name;
+        public FontActionListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Font: " + name);
+            fontName = name;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    class SizeActionListener implements ActionListener {
+        int size;
+        public SizeActionListener(int size) {
+            this.size = size;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Size: " + size);
+            fontSize = size;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    Set add(Set s, Enumeration enumeration) {
+        while(enumeration.hasMoreElements()) {
+            s.add(enumeration.nextElement());
+        }
+        return s;
+    }
+
+    /**
+     * Get a sorted list of the system transliterators.
+     */
+     /*
+    private static Vector getSystemTransliteratorNames() {
+        Vector v = new Vector();
+        for (Enumeration e=Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            v.addElement(e.nextElement());
+        }
+        // Insertion sort, O(n^2) acceptable for small n
+        for (int i=0; i<(v.size()-1); ++i) {
+            String a = (String) v.elementAt(i);
+            for (int j=i+1; j<v.size(); ++j) {
+                String b = (String) v.elementAt(j);
+                if (a.compareTo(b) > 0) {
+                    v.setElementAt(b, i);
+                    v.setElementAt(a, j);
+                    a = b;
+                }
+            }
+        }
+        return v;
+    }
+    */
+
+/*
+    private void setNoTransliterator() {
+        translitItem = noTranslitItem;
+        noTranslitItem.setState(true);
+        handleSetTransliterator(noTranslitItem.getLabel());
+        compound = false;
+        for (int i=0; i<translitMenu.getItemCount(); ++i) {
+            MenuItem it = translitMenu.getItem(i);
+            if (it != noTranslitItem && it instanceof CheckboxMenuItem) {
+                ((CheckboxMenuItem) it).setState(false);
+            }
+        }
+    }
+*/
+/*
+    private void handleAddToCompound(String name) {
+        if (compoundCount < MAX_COMPOUND) {
+            compoundTranslit[compoundCount] = decodeTranslitItem(name);
+            ++compoundCount;
+            Transliterator t[] = new Transliterator[compoundCount];
+            System.arraycopy(compoundTranslit, 0, t, 0, compoundCount);
+            translit = new CompoundTransliterator(t);
+            text.setTransliterator(translit);
+        }
+    }
+*/
+/*
+    private void handleSetTransliterator(String name) {
+        translit = decodeTranslitItem(name);
+        text.setTransliterator(translit);
+    }
+    */
+
+    /**
+     * Decode a menu item that looks like <translit name>.
+     */
+     /*
+    private static Transliterator decodeTranslitItem(String name) {
+        return (name.equals(NO_TRANSLITERATOR))
+            ? null : Transliterator.getInstance(name);
+    }
+    */
+
+    private void handleBatchTransliterate(Transliterator trans) {
+        if (trans == null) {
+            return;
+        }
+
+        int start = text.getSelectionStart();
+        int end = text.getSelectionEnd();
+        ReplaceableString s =
+            new ReplaceableString(text.getText().substring(start, end));
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+            log.append('"' + s.toString() + "\" (start " + start +
+                       ", end " + end + ") -> \"");
+        }
+
+        trans.transliterate(s);
+        String str = s.toString();
+
+        if (DEBUG) {
+            log.append(str + "\"");
+            System.out.println("Batch " + trans.getID() + ": " + log.toString());
+        }
+
+        text.replaceRange(str, start, end);
+        text.select(start, start + str.length());
+    }
+
+    private void handleClose() {
+        helpDialog.dispose();
+        dispose();
+    }
+    
+    /*
+    class InfoDialog extends Dialog {
+        protected Button button;
+        protected TextArea area;
+        protected Dialog me;
+        protected Panel bottom;
+        
+        public TextArea getArea() {
+            return area;
+        }
+        
+        public Panel getBottom() {
+            return bottom;
+        }
+        
+        InfoDialog(Frame parent, String title, String label, String message) {
+            super(parent, title, false);
+            me = this;
+            this.setLayout(new BorderLayout());
+            if (label.length() != 0) {
+                this.add("North", new Label(label));
+            }
+            
+            area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+            this.add("Center", area);
+            
+            button = new Button("Hide");
+            button.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    me.hide();
+                }
+            });
+            bottom = new Panel();
+            bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+            bottom.add(button);
+            this.add("South", bottom);
+            this.pack();
+            addWindowListener(new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    me.hide();
+                }
+            });
+        }
+    }
+    */
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
new file mode 100644
index 0000000..8ee03ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
@@ -0,0 +1,68 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.*;
+import java.awt.event.*;
+import java.applet.*;
+import com.ibm.icu.dev.demo.impl.AppletFrame;
+
+/**
+ * A simple Applet that shows a button.  When pressed, the button
+ * shows the DemoAppletFrame.  This Applet is meant to be embedded
+ * in a web page.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+public class DemoApplet extends Applet {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8214879807740061678L;
+    Demo frame = null;
+    
+    public static void main(String args[]) {
+        final DemoApplet applet = new DemoApplet();
+        new AppletFrame("Transliteration Demo", applet, 640, 480);
+    }
+
+    public void init() {
+
+        Button button = new Button("Transliteration Demo");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (frame == null) {
+                    frame = new Demo(600, 200);
+                    frame.addWindowListener(new WindowAdapter() {
+                        public void windowClosing(WindowEvent we) {
+                            frame = null;
+                        }
+                    });
+                }
+                frame.setVisible(true);
+                frame.toFront();
+            }
+        });
+
+        add(button);
+
+        Dimension size = button.getPreferredSize();
+        size.width += 10;
+        size.height += 10;
+
+        resize(size);
+    }
+    
+    public void stop() {
+        if (frame != null) {
+            frame.dispose();
+        }
+        frame = null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Differ.java b/src/com/ibm/icu/dev/demo/translit/Differ.java
new file mode 100644
index 0000000..0a63922
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Differ.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+
+/** VERY Basic Diff program. Compares two sequences of objects fed into it, and
+ * lets you know where they are different.
+ * @author Mark Davis
+ * @version 1.0
+ */
+
+final public class Differ {
+    public static final String copyright =
+      "Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved.";
+
+    /**
+     * @param stackSize The size of the largest difference you expect.
+     * @param matchCount The number of items that have to be the same to count as a match
+     */
+    public Differ(int stackSize, int matchCount) {
+        this.STACKSIZE = stackSize;
+        this.EQUALSIZE = matchCount;
+        a = new Object[stackSize+matchCount];
+        b = new Object[stackSize+matchCount];
+    }
+
+    public void add (Object aStr, Object bStr) {
+        addA(aStr);
+        addB(bStr);
+    }
+
+    public void addA (Object aStr) {
+        flush();
+        a[aCount++] = aStr;
+    }
+
+    public void addB (Object bStr) {
+        flush();
+        b[bCount++] = bStr;
+    }
+
+    public int getALine(int offset) {
+        return aLine + maxSame + offset;
+    }
+
+    public Object getA(int offset) {
+        if (offset < 0) return last;
+        if (offset > aTop-maxSame) return next;
+        return a[offset];
+    }
+
+    public int getACount() {
+        return aTop-maxSame;
+    }
+
+    public int getBCount() {
+        return bTop-maxSame;
+    }
+
+    public int getBLine(int offset) {
+        return bLine + maxSame + offset;
+    }
+
+    public Object getB(int offset) {
+        if (offset < 0) return last;
+        if (offset > bTop-maxSame) return next;
+        return b[offset];
+    }
+
+    public void checkMatch(boolean finalPass) {
+        // find the initial strings that are the same
+        int max = aCount;
+        if (max > bCount) max = bCount;
+        int i;
+        for (i = 0; i < max; ++i) {
+            if (!a[i].equals(b[i])) break;
+        }
+        // at this point, all items up to i are equal
+        maxSame = i;
+        aTop = bTop = maxSame;
+        if (maxSame > 0) last = a[maxSame-1];
+        next = "";
+
+        if (finalPass) {
+            aTop = aCount;
+            bTop = bCount;
+            next = "";
+            return;
+        }
+
+        if (aCount - maxSame < EQUALSIZE || bCount - maxSame < EQUALSIZE) return;
+
+        // now see if the last few a's occur anywhere in the b's, or vice versa
+        int match = find (a, aCount-EQUALSIZE, aCount, b, maxSame, bCount);
+        if (match != -1) {
+            aTop = aCount-EQUALSIZE;
+            bTop = match;
+            next = a[aTop];
+            return;
+        }
+        match = find (b, bCount-EQUALSIZE, bCount, a, maxSame, aCount);
+        if (match != -1) {
+            bTop = bCount-EQUALSIZE;
+            aTop = match;
+            next = b[bTop];
+            return;
+        }
+        if (aCount >= STACKSIZE || bCount >= STACKSIZE) {
+            // flush some of them
+            aCount = (aCount + maxSame) / 2;
+            bCount = (bCount + maxSame) / 2;
+            next = "";
+        }
+    }
+
+    /** Convenient utility
+     * finds a segment of the first array in the second array.
+     * @return -1 if not found, otherwise start position in b
+     */
+
+    public int find (Object[] aArray, int aStart, int aEnd, Object[] bArray, int bStart, int bEnd) {
+        int len = aEnd - aStart;
+        int bEndMinus = bEnd - len;
+        tryA:
+        for (int i = bStart; i <= bEndMinus; ++i) {
+            for (int j = 0; j < len; ++j) {
+                if (!bArray[i + j].equals(aArray[aStart + j])) continue tryA;
+            }
+            return i; // we have a match!
+        }
+        return -1;
+    }
+
+    // ====================== PRIVATES ======================
+
+    private void flush() {
+        if (aTop != 0) {
+            int newCount = aCount-aTop;
+            System.arraycopy(a, aTop, a, 0, newCount);
+            aCount = newCount;
+            aLine += aTop;
+            aTop = 0;
+        }
+
+        if (bTop != 0) {
+            int newCount = bCount-bTop;
+            System.arraycopy(b, bTop, b, 0, newCount);
+            bCount = newCount;
+            bLine += bTop;
+            bTop = 0;
+        }
+    }
+
+    private int STACKSIZE;
+    private int EQUALSIZE;
+
+    private Object [] a;
+    private Object [] b;
+    private Object last = "";
+    private Object next = "";
+    private int aCount = 0;
+    private int bCount = 0;
+    private int aLine = 1;
+    private int bLine = 1;
+    private int maxSame = 0, aTop = 0, bTop = 0;
+
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
new file mode 100644
index 0000000..08e5dc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
@@ -0,0 +1,56 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.event.*;
+import java.awt.*;
+public class InfoDialog extends Dialog {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -3086665546137919018L;
+    protected Button button;
+    protected TextArea area;
+    protected Dialog me;
+    protected Panel bottom;
+        
+    public TextArea getArea() {
+        return area;
+    }
+        
+    public Panel getBottom() {
+        return bottom;
+    }
+        
+    InfoDialog(Frame parent, String title, String label, String message) {
+        super(parent, title, false);
+        me = this;
+        this.setLayout(new BorderLayout());
+        if (label.length() != 0) {
+            this.add("North", new Label(label));
+        }
+            
+        area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        this.add("Center", area);
+            
+        button = new Button("Hide");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                me.hide();
+            }
+        });
+        bottom = new Panel();
+        bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+        bottom.add(button);
+        this.add("South", bottom);
+        this.pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                me.hide();
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
new file mode 100644
index 0000000..146c659
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
@@ -0,0 +1,24 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تم تبني مواصفة "يونِكود" من قبل قادة الصانعين لأنظمة الحواسيب في العالم، مثل شركات آي.بي.إم. (IBM)، أبل (APPLE)، هِيْولِت باكرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطريقة الرسمية لتطبيق المقياس العالمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات. 
+
+@SET [[[:Arabic:] & [\u0600-\u06FF]] [‎\u060C\u061B\u061F\u0640\u064B-\u0655\u0660-\u066C\u06F0-\u06F9]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
new file mode 100644
index 0000000..6380074
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
@@ -0,0 +1,73 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+
+Τι είναι το Unicode? 
+
+Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα.
+
+Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+Το Unicode αλλάζει αυτή την κατάσταση!
+Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών.
+
+Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης.
+
+Σχετικά με το Κονσόρτιουμ Unicode
+Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της.
+
+Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών.
+
+(ANCIENT)
+
+ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
+πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν:
+πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,
+πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν,
+ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων.
+ἀλλ’ οὐδ’ ὣς ἑτάρους ἐρρύσατο, ἱέμενός περ:
+αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,
+νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο
+ἤσθιον: αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.
+τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.
+*
+ἔνθ’ ἄλλοι μὲν πάντες, ὅσοι φύγον αἰπὺν ὄλεθρον,
+οἴκοι ἔσαν, πόλεμόν τε πεφευγότες ἠδὲ θάλασσαν:
+τὸν δ’ οἶον νόστου κεχρημένον ἠδὲ γυναικὸς
+νύμφη πότνι’ ἔρυκε Καλυψὼ δῖα θεάων
+ἐν σπέσσι γλαφυροῖσι, λιλαιομένη πόσιν εἶναι.
+ἀλλ’ ὅτε δὴ ἔτος ἦλθε περιπλομένων ἐνιαυτῶν,
+τῷ οἱ ἐπεκλώσαντο θεοὶ οἶκόνδε νέεσθαι
+εἰς Ἰθάκην, οὐδ’ ἔνθα πεφυγμένος ἦεν ἀέθλων
+καὶ μετὰ οἷσι φίλοισι. θεοὶ δ’ ἐλέαιρον ἅπαντες
+νόσφι Ποσειδάωνος: ὁ δ’ ἀσπερχὲς μενέαινεν
+ἀντιθέῳ Ὀδυσῆι πάρος ἣν γαῖαν ἱκέσθαι.
+*
+ἀλλ’ ὁ μὲν Αἰθίοπας μετεκίαθε τηλόθ’ ἐόντας,
+Αἰθίοπας τοὶ διχθὰ δεδαίαται, ἔσχατοι ἀνδρῶν,
+οἱ μὲν δυσομένου Ὑπερίονος οἱ δ’ ἀνιόντος,
+ἀντιόων ταύρων τε καὶ ἀρνειῶν ἑκατόμβης.
+ἔνθ’ ὅ γ’ ἐτέρπετο δαιτὶ παρήμενος: οἱ δὲ δὴ ἄλλοι
+Ζηνὸς ἐνὶ μεγάροισιν Ὀλυμπίου ἁθρόοι ἦσαν.
+τοῖσι δὲ μύθων ἦρχε πατὴρ ἀνδρῶν τε θεῶν τε:
+μνήσατο γὰρ κατὰ θυμὸν ἀμύμονος Αἰγίσθοιο,
+τόν ῥ’ Ἀγαμεμνονίδης τηλεκλυτὸς ἔκταν’ Ὀρέστης:
+τοῦ ὅ γ’ ἐπιμνησθεὶς ἔπε’ ἀθανάτοισι μετηύδα:
+*
+“ὢ πόποι, οἷον δή νυ θεοὺς βροτοὶ αἰτιόωνται:
+ἐξ ἡμέων γάρ φασι κάκ’ ἔμμεναι, οἱ δὲ καὶ αὐτοὶ
+σφῇσιν ἀτασθαλίῃσιν ὑπὲρ μόρον ἄλγε’ ἔχουσιν,
+ὡς καὶ νῦν Αἴγισθος ὑπὲρ μόρον Ἀτρεί̈δαο
+γῆμ’ ἄλοχον μνηστήν, τὸν δ’ ἔκτανε νοστήσαντα,
+εἰδὼς αἰπὺν ὄλεθρον, ἐπεὶ πρό οἱ εἴπομεν ἡμεῖς,
+Ἑρμείαν πέμψαντες, ἐύσκοπον ἀργεϊφόντην,
+μήτ’ αὐτὸν κτείνειν μήτε μνάασθαι ἄκοιτιν:
+ἐκ γὰρ Ὀρέσταο τίσις ἔσσεται Ἀτρεί̈δαο,
+ὁππότ’ ἂν ἡβήσῃ τε καὶ ἧς ἱμείρεται αἴης.
+ὣς ἔφαθ’ Ἑρμείας, ἀλλ’ οὐ φρένας Αἰγίσθοιο
+πεῖθ’ ἀγαθὰ φρονέων: νῦν δ’ ἁθρόα πάντ’ ἀπέτισεν.”
+
+@SET [[[:Greek:]&[\u0370-\u03E1 \u03F0-\u03FF]] [\:-;?\u00B7\u037E\u0387]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
new file mode 100644
index 0000000..8603663
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
@@ -0,0 +1,26 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+什么是Unicode(统一码)?
+Unicode给每个字符提供了一个唯一的数字，
+不论是什么平台，
+不论是什么程序，
+不论是什么语言。
+
+基本上，计算机只是处理数字。它们指定一个数字，来储存字母或其他字符。在创造Unicode之前，有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符：例如，单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言，例如英语，也没有哪一个编码可以适用于所有的字母，标点符号，和常用的技术符号。
+
+这些编码系统也会互相冲突。也就是说，两种编码可能使用相同的数字代表两个不同的字符，或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码，但是，不论什么时候数据通过不同的编码或平台之间，那些数据总会有损坏的危险。
+
+Unicode正在改变所有这一切！
+Unicode给每个字符提供了一个唯一的数字，不论是什么平台，不论是什么程序，不论什么语言。Unicode标准已经被这些工业界的领导们所采用，例如：Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode，例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等，并且，Unicode是实现ISO/IEC 10646的正规方式。许多操作系统，所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在，是近来全球软件技术最重要的发展趋势。
+
+将Unicode与客户服务器或多层应用程序和网站结合，比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台，语言和国家，而不需要重建。它可将数据传输到许多不同的系统，而无损坏。
+
+关于Unicode学术学会
+Unicode学术学会是一个非盈利的组织，是为发展，扩展和推广使用Unicode标准而建立的，Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。
+
+欲知更多信息，请参阅术语词汇表，Unicode产品样本，技术简介和参考资料。
+
+Chinese translation by  黎國珍, Xerox
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
new file mode 100644
index 0000000..9d26745
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
@@ -0,0 +1,26 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+מה זה יוניקוד (Unicode)?
+יוניקוד מקצה מספר ייחודי לכל תו, 
+לא משנה על איזו פלטפורמה, 
+לא משנה באיזו תוכנית, 
+ולא משנה באיזו שפה.
+
+באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף. 
+
+מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו.
+
+יוניקוד משנה את כל זה!
+יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה.
+
+שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו.
+
+פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium) 
+הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו.
+
+למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית].
+
+@SET [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
new file mode 100644
index 0000000..026394a
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
@@ -0,0 +1,154 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="COPYRIGHT" content="Copyright 2006-2007, International Business Machines Corporation and others. All Rights Reserved.">
+<title>New Transliteration Test Files</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h2>New Transliteration Test Files</h2>
+<p>The Test_*.html files show the transliteration of characters for given
+languages. The sample for each language consists of &quot;What Is Unicode&quot;
+in Thai, followed by other available text. The text is broken apart into
+sentences for ease of viewing (note: we know of some problems with the sentence
+rules for Japanese and Chinese). The left column is the original, and the right
+is the romanization. The program also converts back to the original script. If
+there is a discrepancy between the source and the reverse transformation, that
+is indicated by making the background <font color="#FF0000"><b>red</b></font>
+from that point on.</p>
+<blockquote>
+  <p><i><b>Note: </b>If you have some more text that you would like added to the
+  sample, just let me know. I am particularly interested in name lists, since
+  they are the typical source.</i></p>
+</blockquote>
+<h3>Standards</h3>
+<p>The goal is to follow a given standard, such as ISO* or UNGEGN wherever
+possible. We also need to round-trip, so in some cases, that means adding some
+additional accent marks to disambiguate characters. And often the source
+standards are missing some characters, such as characters with combining Hamzas
+in Arabic. Remember that the goal for these is transliteration (unambiguously
+representing all the letters in the original), not transcription (representing
+the best pronunciation).</p>
+<ul>
+  <li><b><a href="Test_Thai-Latin.html">Thai</a>:</b> ISO 11940 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf">http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf</a>
+    &gt; plus a few items:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>In the next release, we'd like to do the UNGEGN version &lt; <a href="http://www.eki.ee/wgrs/rom1_th.pdf">http://www.eki.ee/wgrs/rom1_th.pdf</a>
+        &gt; which is probably more useful (and readable), and follows more
+        closely the Thai standard.</li>
+      <li>Spaces are provided at word-breaks, using the Thai BreakIterator.</li>
+      <li>An inherent vowel (&#7885;) is added, as in UNGEGN. The dot is for
+        disambiguation.
+        <ul>
+          <li><i>Note: if the inherent vowel positions cannot be algorithmically
+            determined, let me know and I will remove them.</i></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Arabic-Latin.html">Arabic</a>: </b>Generally follows
+    UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_ar.pdf">http://www.eki.ee/wgrs/rom1_ar.pdf</a>
+    &gt;
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Occasionally deviates in the direction of ISO 233 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Arabic.pdf">http://homepage.mac.com/sirbinks/pdf/Arabic.pdf</a>
+        &gt;
+        <ul>
+          <li>with underdot instead of cedilla for letter like SAD, since those
+            are explicitly in Unicode for transliteration of Arabic</li>
+          <li>adding extra non-Arabic-language letters, like PEH. Note: not all
+            extended Arabic characters are handled yet.</li>
+        </ul>
+      </li>
+      <li>Does <i>not</i> do assimilation of &quot;al&quot;, nor hyphenation of
+        it.
+        <ul>
+          <li>While it could be done, we need to determine whether a prefix
+            &quot;al&quot; could occur other than as the definite article (since
+            no space is used).</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Hebrew-Latin.html">Hebrew</a></b><b>: </b>Generally
+    follows UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_he.pdf">http://www.eki.ee/wgrs/rom1_he.pdf</a>
+    &gt;, with some exceptions:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Combinations of dagesh, shin/sin dot that would produce different
+        letters are not yet called out.</li>
+      <li>Note that the final forms are not preserved. Thus, when going from
+        Latin to Hebrew, a character is given final form depending on its
+        position.
+        <ul>
+          <li>E.g. &#1502;&#1501;&#1502;&#1501; =&gt; mmmm =&gt;
+            &#1502;&#1502;&#1502;&#1501;</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+      <li>See also &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf">http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf</a>
+        &gt; for the ISO version. The Chicago Manual of Style has a clear table
+        of mappings for the vowel marks.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Han-Latin.html">Han</a>:</b> Uses the <a href="http://www.mandarintools.com/cedict.html">CEDICT</a>
+    data plus Unicode Unihan <i>kMandarin</i> values for pinyin. Doesn't
+    roundtrip!
+    <ul>
+      <li><i>Note: </i>the Chinese pronunciation of Han characters varies by
+        context and grammar, though nowhere near as much a Japanese.
+        <ul>
+          <li>Ideally we'd have an underlying engine for this. In 2.4 we will
+            have a plug-in interface so that people could add one, such as the
+            IBM engine.</li>
+          <li>The data from CEDICT and Unihan don't list the most frequent
+            choice first, so we will be updating that.</li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><a href="Test_Greek-Latin_UNGEGN.html"><b>Greek/UNGEGN</b></a>: Uses a
+    modern Greek transliteration, based on the UNGEGN rules at &lt; <a href="http://www.eki.ee/wgrs/rom1_el.pdf">http://www.eki.ee/wgrs/rom1_el.pdf</a>
+    &gt;. This version will not roundtrip ancient Greek.</li>
+  <li><a href="Test_Greek-Latin.html"><b>Greek</b></a>: Uses a classic Greek
+    transliteration. This version will not roundtrip modern Greek.</li>
+</ul>
+<h3><b>Notes</b></h3>
+<ol>
+  <li>For readability, the files have a few other things besides just the
+    transliteration:
+    <ul>
+      <li>The first word of the sentences are titlecased, as are names (where we
+        have a name-list, such as in Thai).</li>
+      <li>The Latin in the original is mapped to the private-use zone before
+        conversion, and then again after conversion. This does have the downside
+        that any rules (such as in Han) that need to know the context (e.g. for
+        inserting spaces or capitalization) will gum up a little bit. This is
+        just an artifact of the test display.</li>
+    </ul>
+  </li>
+  <li>I don't think that ISO 11940 is a particularly good way to romanize, but
+    it is at least complete and a standard. So what I am interested in just for
+    now is whether the samples in the file follow it (with the above
+    exceptions).</li>
+  <li>Some of the files also have a set of characters at the end, one character
+    per row, with a following row listing the hex and name.</li>
+  <li>The source rules for all of these is in the following URL. So if you want
+    to know the details of how the characters are handled, that is the place to
+    look.
+    <ul>
+      <li><a href="http://source.icu-project.org/repos/icu/icu/trunk/source/data/translit/">http://source.icu-project.org/repos/icu/icu/trunk/source/data/translit/</a></li>
+    </ul>
+  </li>
+</ol>
+
+</body>
+
+</html>
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
new file mode 100644
index 0000000..631f191
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
@@ -0,0 +1,69 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+
+เป็นมนุษย์สุดประเสริฐเลิศคุณค่า
+กว่าบรรดาฝูงสัตว์เดรัจฉาน
+จงฝ่าฟันพัฒนาวิชาการ
+อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
+ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า
+หัดอภัยเหมือนกีฬาอัชฌาสัย
+ปฏิบัติประพฤติกฎกำหนดใจ
+พูดจาให้จ๊ะ ๆ จ๋า ๆ น่าฟังเอยฯ
+
+แหล่งที่มา : สมาคมคอมพิวเตอร์แห่งประเทศไทย
+
+ฅนฃวด kho khuat and kho khon
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
+@SET [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
new file mode 100644
index 0000000..a1e6e07
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
@@ -0,0 +1,255 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.event.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * A subclass of {@link DumbTextComponent} that passes key events through
+ * a {@link com.ibm.icu.text.Transliterator}.
+ *
+ * @author Alan Liu
+ */
+public class TransliteratingTextComponent extends DumbTextComponent {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8672128213174154047L;
+
+    private static boolean DEBUG = false;
+
+    private Transliterator translit = null;
+    
+    // NOTE: DISABLE THE START AND CURSOR UNTIL WE CAN GET IT TO WORK AT ALL
+
+    // Index into getText() where the start of transliteration is.
+    // As we commit text during transliteration, we advance
+    // this.
+    //private int start = 0;
+
+    // Index into getText() where the cursor is; cursor >= start
+    //private int cursor = 0;
+
+//    private static final String COPYRIGHT =
+//        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructor.
+     */
+    public TransliteratingTextComponent() {
+        super();
+        /*
+        addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // We get an ActionEvent only when the selection changes
+                resetTransliterationStart();
+            }
+        });
+        */
+    }
+
+    /**
+     * {@link DumbTextComponent} API.  Framework method that is called
+     * when a <code>KeyEvent</code> is received.  This implementation
+     * runs the new character through the current
+     * <code>Transliterator</code>, if one is set, and inserts the
+     * transliterated text into the buffer.
+     */
+    protected void handleKeyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        
+        if (translit == null) {
+            setKeyStart(-1);
+            super.handleKeyTyped(e);
+            return;
+        }
+
+        transliterate(ch, false);
+    }
+    
+    public void flush() {
+        if (translit != null) transliterate('\uFFFF', true);
+    }
+    
+    
+    protected void transliterate(char ch, boolean flush) {
+
+        // ------------------------------------------------------------
+        // The following case motivates the two lines that recompute
+        // start and cursor below.
+
+        //      "     "   
+        // a b c q r|s t u m m
+        // 0 1 2 3 4 5 6 7 8 9
+        //       0 1 2
+
+        // start 3, cursor 5, sel 6 -> { 0, 3, 2 }
+        // : new int[] { 0, sel - start, cursor - start };
+        
+        // sz>99|9
+
+        //      "     {   "
+        // a b c q r 9 9|9 t u m m
+        // 0 1 2 3 4 5 6 7 8 9 a b
+        //       0 1 2 3 4
+
+        // { 3, 5, 4 } -> start 6, cursor 7, sel 8
+        // : start += index[0];
+        // : cursor = start + index[2] - index[0];
+        // ------------------------------------------------------------
+
+        // Need to save start because calls to replaceRange will update
+        // start and cursor.
+        //int saveStart = start;
+
+        int end = flush ? getSelectionEnd() : getSelectionStart();
+        String sourceText = getText().substring(0,end);
+        ReplaceableString buf = new ReplaceableString(sourceText);
+        /*buf.replace(0, 1, getText().substring(start,
+                                              getSelectionStart()));*/
+
+        Transliterator.Position index = new Transliterator.Position();
+        index.contextLimit = buf.length();
+        index.contextStart = 0;
+        index.start = getKeyStart();
+        if (index.start == -1) index.start = getSelectionStart();
+        index.limit = buf.length();
+
+      //  StringBuffer log = null;
+        if (DEBUG) {
+            System.out.println("Transliterator: " + translit.getID());
+            System.out.println("From:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}" + "; '" + ch + "'"
+                + " " + getKeyStart()
+            );
+        }
+
+        if (flush) {
+            translit.finishTransliteration(buf, index);
+        } else {
+            translit.transliterate(buf, index, ch);
+        }
+        
+        if (DEBUG) {
+            System.out.println("To:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}"
+                );
+            System.out.println();
+        }
+        /*
+        buf.replace(buf.length(), buf.length(), String.valueOf(ch));
+        translit.transliterate(buf);
+        */
+        
+        String result = buf.toString();
+        //if (result.equals(sourceText + ch)) return;
+        
+        replaceRange(result, 0, getSelectionEnd());
+        setKeyStart(index.start);
+        
+        // At this point start has been changed by the callback to
+        // resetTransliteratorStart() via replaceRange() -- so use our
+        // local copy, saveStart.
+
+        // The START index is zero-based.  On entry to transliterate(),
+        // it was zero.  We can therefore just add it to our original
+        // getText()-based index value of start (in saveStart) to get
+        // the new getText()-based start.
+//        start = saveStart + index.contextStart;
+
+        // Make the cursor getText()-based.  The CURSOR index is zero-based.
+//        cursor = start + index.start - index.contextStart;
+
+/*
+        if (DEBUG) {
+            String out = buf.toString();
+            log.append(out.substring(0, index.contextStart)).
+                append('{').
+                append(out.substring(index.contextStart, index.start)).
+                append('|').
+                append(out.substring(index.start)).
+                append('"');
+            log.append(", {" + index.contextStart + ", " + index.contextLimit + ", " + index.start + "}, ");
+//            log.append("start " + start + ", cursor " + cursor);
+            log.append(", sel " + getSelectionStart());
+            System.out.println(escape(log.toString()));
+        }
+        */
+    }
+    
+    /**
+     * Set the {@link com.ibm.icu.text.Transliterator} and direction to
+     * use to process incoming <code>KeyEvent</code>s.
+     * @param t the {@link com.ibm.icu.text.Transliterator} to use
+     */
+    public void setTransliterator(Transliterator t) {
+        /*
+        if (translit != t) { // [sic] pointer compare ok; singletons
+            resetTransliterationStart();
+        }
+        */
+        translit = t;
+    }
+
+    public Transliterator getTransliterator() {
+        return translit;
+    }
+
+    /**
+     * Reset the start point at which transliteration begins.  This
+     * needs to be done when the user moves the cursor or when the
+     * current {@link com.ibm.icu.text.Transliterator} is changed. 
+     */
+     /*
+    private void resetTransliterationStart() {
+        start = getSelectionStart();
+        cursor = start;
+    }
+    */
+
+    /**
+     * Escape non-ASCII characters as Unicode.
+     * JUST FOR DEBUGGING OUTPUT.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append(c);
+                }
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java b/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
new file mode 100644
index 0000000..b487ea0
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
@@ -0,0 +1,285 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.impl.Utility;
+
+import java.util.*;
+import java.io.*;
+
+public class TransliterationChart {
+    public static void main(String[] args) throws IOException {
+        System.out.println("Start");
+        UnicodeSet lengthMarks = new UnicodeSet("[\u09D7\u0B56-\u0B57\u0BD7\u0C56\u0CD5-\u0CD6\u0D57\u0C55\u0CD5]");
+        int[] indicScripts = {
+            UScript.LATIN,
+            UScript.DEVANAGARI,
+            UScript.BENGALI,
+            UScript.GURMUKHI,
+            UScript.GUJARATI,
+            UScript.ORIYA,
+            UScript.TAMIL,
+            UScript.TELUGU,
+            UScript.KANNADA,
+            UScript.MALAYALAM,
+        };
+        String[] names = new String[indicScripts.length];
+        UnicodeSet[] sets = new UnicodeSet[indicScripts.length];
+        Transliterator[] fallbacks = new Transliterator[indicScripts.length];
+        for (int i = 0; i < indicScripts.length; ++i) {
+            names[i] = UScript.getName(indicScripts[i]);
+            sets[i] = new UnicodeSet("[[:" + names[i] + ":]&[[:L:][:M:]]&[:age=3.1:]]");
+            fallbacks[i] = Transliterator.getInstance("any-" + names[i]);
+        }
+        EquivClass eq = new EquivClass(new ReverseComparator());
+        PrintWriter pw = openPrintWriter("transChart.html");
+        pw.println("<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+        pw.println("<title>Indic Transliteration Chart</title><style>");
+        pw.println("td { text-align: Center; font-size: 200% }");
+        pw.println("tt { font-size: 50% }");
+        pw.println("td.miss { background-color: #CCCCFF }");
+        pw.println("</style></head><body bgcolor='#FFFFFF'>");
+
+        Transliterator anyToLatin = Transliterator.getInstance("any-latin");
+        
+        String testString = "\u0946\u093E";
+        
+        UnicodeSet failNorm = new UnicodeSet();
+        Set latinFail = new TreeSet();
+        
+        for (int i = 0; i < indicScripts.length; ++i) {
+            if (indicScripts[i] == UScript.LATIN) continue;
+            String source = names[i];
+            System.out.println(source);
+            UnicodeSet sourceChars = sets[i];
+
+            for (int j = 0; j < indicScripts.length; ++j) {
+                if (i == j) continue;
+                String target = names[j];
+                Transliterator forward = Transliterator.getInstance(source + '-' + target);
+                Transliterator backward = forward.getInverse();
+                UnicodeSetIterator it = new UnicodeSetIterator(sourceChars);
+                while (it.next()) {
+                    if (lengthMarks.contains(it.codepoint)) continue;
+                    String s = Normalizer.normalize(it.codepoint,Normalizer.NFC,0);
+                    //if (!Normalizer.isNormalized(s,Normalizer.NFC,0)) continue;
+                    if (!s.equals(Normalizer.normalize(s,Normalizer.NFD,0))) {
+                        failNorm.add(it.codepoint);
+                    } 
+                    String t = fix(forward.transliterate(s));
+                    if (t.equals(testString)) {
+                        System.out.println("debug");
+                    }
+
+                    String r = fix(backward.transliterate(t));
+                    if (Normalizer.compare(s,r,0) == 0) {
+                        if (indicScripts[j] != UScript.LATIN) eq.add(s,t);
+                    } else {
+                        if (indicScripts[j] == UScript.LATIN) {
+                            latinFail.add(s + " - " + t + " - " + r);
+                        }
+                    }
+                }
+            }
+        }
+        // collect equivalents
+        pw.println("<table border='1' cellspacing='0'><tr>");
+        for (int i = 0; i < indicScripts.length; ++i) {
+            pw.print("<th width='10%'>" + names[i].substring(0,3) + "</th>");
+        }
+        pw.println("</tr>");
+
+        Iterator rit = eq.getSetIterator(new MyComparator());
+        while(rit.hasNext()) {
+            Set equivs = (Set)rit.next();
+            pw.print("<tr>");
+            Iterator sit = equivs.iterator();
+            String source = (String)sit.next();
+            String item = anyToLatin.transliterate(source);
+            if (item.equals("") || source.equals(item)) item = "&nbsp;";
+            pw.print("<td>" + item + "</td>");
+            for (int i = 1; i < indicScripts.length; ++i) {
+                sit = equivs.iterator();
+                item = "";
+                while (sit.hasNext()) {
+                    String trial = (String)sit.next();
+                    if (!sets[i].containsAll(trial)) continue;
+                    item = trial;
+                    break;
+                }
+                String classString = "";
+                if (item.equals("")) {
+                    classString = " class='miss'";
+                    String temp = fallbacks[i].transliterate(source);
+                    if (!temp.equals("") && !temp.equals(source)) item = temp;
+                } 
+                String backup = item.equals("") ? "&nbsp;" : item;
+                pw.print("<td" + classString + " title='" + getName(item, "; ") + "'>" 
+                    + backup + "<br><tt>" + Utility.hex(item) + "</tt></td>");
+            }
+            /*
+            Iterator sit = equivs.iterator();
+            while (sit.hasNext()) {
+                String item = (String)sit.next();
+                pw.print("<td>" + item + "</td>");
+            }
+            */
+            pw.println("</tr>");
+        }
+        pw.println("</table>");
+        if (true) {
+            pw.println("<h2>Failed Normalization</h2>");
+    
+            UnicodeSetIterator it = new UnicodeSetIterator(failNorm);
+            UnicodeSet pieces = new UnicodeSet();
+            while (it.next()) {
+                String s = UTF16.valueOf(it.codepoint);
+                String d = Normalizer.normalize(s,Normalizer.NFD,0);
+                pw.println("Norm:" + s + ", " + Utility.hex(s) + " " + UCharacter.getName(it.codepoint)
+                     + "; " + d + ", " + Utility.hex(d) + ", ");
+                pw.println(UCharacter.getName(d.charAt(1)) + "<br>");
+                if (UCharacter.getName(d.charAt(1)).indexOf("LENGTH") >= 0) pieces.add(d.charAt(1));
+            }
+            pw.println(pieces);
+            
+            pw.println("<h2>Failed Round-Trip</h2>");
+            Iterator cit = latinFail.iterator();
+            while (cit.hasNext()) {
+                pw.println(cit.next() + "<br>");
+            }
+        } 
+
+        pw.println("</table></body></html>");
+        pw.close();     
+        System.out.println("Done");
+    }
+    
+    public static String fix(String s) {
+        if (s.equals("\u0946\u093E")) return "\u094A";
+        if (s.equals("\u0C46\u0C3E")) return "\u0C4A";
+        if (s.equals("\u0CC6\u0CBE")) return "\u0CCA";
+
+        if (s.equals("\u0947\u093E")) return "\u094B";
+        if (s.equals("\u0A47\u0A3E")) return "\u0A4B";
+        if (s.equals("\u0AC7\u0ABE")) return "\u0ACB";
+        if (s.equals("\u0C47\u0C3E")) return "\u0C4B";
+        if (s.equals("\u0CC7\u0CBE")) return "\u0CCB";
+       
+        //return Normalizer.normalize(s,Normalizer.NFD,0);
+        return s;
+    }
+    
+    public static PrintWriter openPrintWriter(String fileName) throws IOException {
+        File lf = new File(fileName);
+        System.out.println("Creating file: " + lf.getAbsoluteFile());
+    
+        return new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(fileName), "UTF8"), 4*1024));
+    }
+
+    
+    public static String getName(String s, String separator) {
+        int cp;
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(UCharacter.getName(cp));
+        }
+        return sb.toString();
+    }
+    
+    static class MyComparator implements Comparator {
+       public int compare(Object o1, Object o2) {
+            Iterator i1 = ((TreeSet) o1).iterator();
+            Iterator i2 = ((TreeSet) o2).iterator();
+            while (i1.hasNext() && i2.hasNext()) {
+                String a = (String)i1.next();
+                String b = (String)i2.next();
+                int result = a.compareTo(b);
+                if (result != 0) return result;
+            }
+            if (i1.hasNext()) return 1;
+            if (i2.hasNext()) return -1;
+            return 0;
+        }
+        
+    }
+    static class ReverseComparator implements Comparator {
+        public int compare(Object o1, Object o2) {
+            String a = o1.toString();
+            char a1 = a.charAt(0);
+            String b = o2.toString();
+            char b1 = b.charAt(0);
+            if (a1 < 0x900 && b1 > 0x900) return -1;
+            if (a1 > 0x900 && b1 < 0x900) return +1;
+            return a.compareTo(b);
+        }       
+    }
+      
+    static class EquivClass {
+        EquivClass(Comparator c) {
+            comparator = c;
+        }
+        private HashMap itemToSet = new HashMap();
+        private Comparator comparator;
+        
+        void add(Object a, Object b) {
+            Set sa = (Set)itemToSet.get(a);
+            Set sb = (Set)itemToSet.get(b);
+            if (sa == null && sb == null) { // new set!
+                Set s = new TreeSet(comparator);
+                s.add(a);
+                s.add(b);
+                itemToSet.put(a, s);
+                itemToSet.put(b, s);
+            } else if (sa == null) {
+                sb.add(a);
+            } else if (sb == null) {
+                sa.add(b);
+            } else { // merge sets, dumping sb
+                sa.addAll(sb);
+                Iterator it = sb.iterator();
+                while (it.hasNext()) {
+                    itemToSet.put(it.next(), sa);
+                }
+            }
+        }
+        
+        private class MyIterator implements Iterator {
+            private Iterator it;
+            MyIterator (Comparator comp) {
+                TreeSet values = new TreeSet(comp);
+                values.addAll(itemToSet.values());
+                it = values.iterator();
+            }
+        
+            public boolean hasNext() {
+                return it.hasNext();
+            }
+            public Object next() {
+                return it.next();
+            }
+            public void remove() {
+                throw new IllegalArgumentException("can't remove");
+            }        
+        }
+
+        public Iterator getSetIterator (Comparator comp) {
+            return new MyIterator(comp);
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.bat b/src/com/ibm/icu/dev/demo/translit/demo.bat
new file mode 100755
index 0000000..dd9c205
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.bat
@@ -0,0 +1,13 @@
+REM /*
+REM *******************************************************************************
+REM  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+REM  * others. All Rights Reserved.                                                *
+REM  *******************************************************************************
+REM  */
+REM For best results, run the demo as an applet inside of Netscape
+REM with Bitstream Cyberbit installed.
+
+REM setup your JDK 1.1.x path and classpath here:
+call JDK11
+set CLASSPATH=../translit.jar;%CLASSPATH%
+javaw Demo
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.html b/src/com/ibm/icu/dev/demo/translit/demo.html
new file mode 100644
index 0000000..2a7ee5b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.html
@@ -0,0 +1,34 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 1999-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<HTML>
+<HEAD>
+<TITLE>Transliteration Demo</TITLE>
+</HEAD>
+<BODY>
+<APPLET CODE="com.ibm.demo.translit.DemoApplet.class" WIDTH=140 HEIGHT=33></APPLET>
+
+<HR>
+
+If you don't see a button above, then your browser is failing to
+locate the necessary Java class files.
+
+<P>
+
+One way to make this work is to copy this HTML file to
+<code>icu4j/src</code>, and make sure the Java files in the directories
+under <code>icu4j/src/com</code> are built.  Then open this HTML file
+using a browser or appletviewer.
+
+<P>
+
+For best results, run this demo as an applet within Netscape with
+Bitstream Cyberbit installed.
+
+</BODY>
+</HTML>
diff --git a/src/com/ibm/icu/dev/demo/translit/package.html b/src/com/ibm/icu/dev/demo/translit/package.html
new file mode 100644
index 0000000..8355d1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Transliterator demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
new file mode 100644
index 0000000..8f7c21d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
@@ -0,0 +1,20365 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Generated: Fri Jan 26 15:14:48 2001
+# Tool: ..\..\tools\translit\hanpinyin.pl
+#--------------------------------------------------------------------
+
+# Han-Pinyin
+
+# Mechanically derived from \desk\Unihan.txt (ftp.unicode.org), version:
+#
+#	Name:             Unihan database
+#	Unicode version:  3.0b1
+#	Table version:    1.1
+#	Date:             2 July 1999
+#
+#	Copyright (c) 1996-1999 Unicode, Inc.  All Rights reserved.
+
+丁 > dīng; #4E01
+丂 > kăo; #4E02
+七 > qī; #4E03
+丄 > shàng; #4E04
+丅 > xià; #4E05
+万 > mò; #4E07
+丈 > zhàng; #4E08
+三 > sān; #4E09
+上 > shàng; #4E0A
+下 > xià; #4E0B
+丌 > jī; #4E0C
+不 > bù; #4E0D
+与 > yŭ; #4E0E
+丏 > miăn; #4E0F
+丐 > gài; #4E10
+丑 > chŏu; #4E11
+丒 > chŏu; #4E12
+专 > zhuān; #4E13
+且 > qiĕ; #4E14
+丕 > pī; #4E15
+世 > shì; #4E16
+丗 > shì; #4E17
+丘 > qīu; #4E18
+丙 > bĭng; #4E19
+业 > yè; #4E1A
+丛 > cóng; #4E1B
+东 > dōng; #4E1C
+丝 > sī; #4E1D
+丞 > chéng; #4E1E
+丟 > dīu; #4E1F
+丠 > qīu; #4E20
+両 > liăng; #4E21
+丢 > dīu; #4E22
+丣 > yŏu; #4E23
+两 > liăng; #4E24
+严 > yán; #4E25
+並 > bìng; #4E26
+丧 > sāng; #4E27
+丨 > gŭn; #4E28
+丩 > jīu; #4E29
+个 > gè; #4E2A
+丫 > yā; #4E2B
+丬 > qiáng; #4E2C
+中 > zhōng; #4E2D
+丮 > jĭ; #4E2E
+丯 > jiè; #4E2F
+丰 > fēng; #4E30
+丱 > guàn; #4E31
+串 > chuàn; #4E32
+丳 > chăn; #4E33
+临 > lín; #4E34
+丵 > zhŭo; #4E35
+丶 > zhŭ; #4E36
+丸 > wán; #4E38
+丹 > dān; #4E39
+为 > wèi; #4E3A
+主 > zhŭ; #4E3B
+丼 > jĭng; #4E3C
+丽 > lì; #4E3D
+举 > jŭ; #4E3E
+丿 > piĕ; #4E3F
+乀 > fú; #4E40
+乁 > yí; #4E41
+乂 > yì; #4E42
+乃 > năi; #4E43
+久 > jĭu; #4E45
+乆 > jĭu; #4E46
+乇 > zhé; #4E47
+么 > yāo; #4E48
+义 > yì; #4E49
+之 > zhī; #4E4B
+乌 > wū; #4E4C
+乍 > zhà; #4E4D
+乎 > hū; #4E4E
+乏 > fá; #4E4F
+乐 > lè; #4E50
+乑 > zhòng; #4E51
+乒 > pīng; #4E52
+乓 > pang; #4E53
+乔 > qiáo; #4E54
+乕 > hŭ; #4E55
+乖 > guāi; #4E56
+乗 > chéng; #4E57
+乘 > chéng; #4E58
+乙 > yĭ; #4E59
+乚 > yĭn; #4E5A
+乜 > miē; #4E5C
+九 > jĭu; #4E5D
+乞 > qĭ; #4E5E
+也 > yĕ; #4E5F
+习 > xí; #4E60
+乡 > xiāng; #4E61
+乢 > gài; #4E62
+乣 > dīu; #4E63
+书 > shū; #4E66
+乨 > shĭ; #4E68
+乩 > jī; #4E69
+乪 > nāng; #4E6A
+乫 > jiā; #4E6B
+乭 > shí; #4E6D
+买 > măi; #4E70
+乱 > luàn; #4E71
+乳 > rŭ; #4E73
+乴 > xué; #4E74
+乵 > yăn; #4E75
+乶 > fŭ; #4E76
+乷 > shā; #4E77
+乸 > nă; #4E78
+乹 > gān; #4E79
+乾 > gān; #4E7E
+乿 > chì; #4E7F
+亀 > gūi; #4E80
+亁 > gān; #4E81
+亂 > luàn; #4E82
+亃 > lín; #4E83
+亄 > yì; #4E84
+亅 > jué; #4E85
+了 > liăo; #4E86
+予 > yú; #4E88
+争 > zhēng; #4E89
+亊 > shì; #4E8A
+事 > shì; #4E8B
+二 > èr; #4E8C
+亍 > chù; #4E8D
+于 > yú; #4E8E
+亏 > yú; #4E8F
+亐 > yú; #4E90
+云 > yún; #4E91
+互 > hù; #4E92
+亓 > qí; #4E93
+五 > wŭ; #4E94
+井 > jĭng; #4E95
+亖 > sì; #4E96
+亗 > sùi; #4E97
+亘 > gèn; #4E98
+亙 > gèn; #4E99
+亚 > yà; #4E9A
+些 > xiē; #4E9B
+亜 > yà; #4E9C
+亝 > qí; #4E9D
+亞 > yà; #4E9E
+亟 > jí; #4E9F
+亠 > tóu; #4EA0
+亡 > wáng; #4EA1
+亢 > kàng; #4EA2
+亣 > tà; #4EA3
+交 > jiāo; #4EA4
+亥 > hài; #4EA5
+亦 > yì; #4EA6
+产 > chăn; #4EA7
+亨 > hēng; #4EA8
+亩 > mŭ; #4EA9
+享 > xiăng; #4EAB
+京 > jīng; #4EAC
+亭 > tíng; #4EAD
+亮 > liàng; #4EAE
+亯 > xiăng; #4EAF
+亰 > jīng; #4EB0
+亱 > yè; #4EB1
+亲 > qīn; #4EB2
+亳 > bó; #4EB3
+亴 > yòu; #4EB4
+亵 > xiè; #4EB5
+亶 > dăn; #4EB6
+亷 > lián; #4EB7
+亸 > dŭo; #4EB8
+亹 > wĕi; #4EB9
+人 > rén; #4EBA
+亻 > rén; #4EBB
+亼 > jí; #4EBC
+亾 > wáng; #4EBE
+亿 > yì; #4EBF
+什 > shí; #4EC0
+仁 > rén; #4EC1
+仂 > lè; #4EC2
+仃 > dīng; #4EC3
+仄 > zè; #4EC4
+仅 > jĭn; #4EC5
+仆 > pū; #4EC6
+仇 > chóu; #4EC7
+仈 > bā; #4EC8
+仉 > zhăng; #4EC9
+今 > jīn; #4ECA
+介 > jiè; #4ECB
+仌 > bīng; #4ECC
+仍 > réng; #4ECD
+从 > cóng; #4ECE
+仏 > fó; #4ECF
+仐 > săn; #4ED0
+仑 > lún; #4ED1
+仓 > cāng; #4ED3
+仔 > zĭ; #4ED4
+仕 > shì; #4ED5
+他 > tā; #4ED6
+仗 > zhàng; #4ED7
+付 > fù; #4ED8
+仙 > xiān; #4ED9
+仚 > xiān; #4EDA
+仛 > tūo; #4EDB
+仜 > hóng; #4EDC
+仝 > tóng; #4EDD
+仞 > rèn; #4EDE
+仟 > qiān; #4EDF
+仠 > gán; #4EE0
+仡 > yì; #4EE1
+仢 > dí; #4EE2
+代 > dài; #4EE3
+令 > lìng; #4EE4
+以 > yĭ; #4EE5
+仦 > chào; #4EE6
+仧 > cháng; #4EE7
+仨 > sā; #4EE8
+仪 > yí; #4EEA
+仫 > mù; #4EEB
+们 > men; #4EEC
+仭 > rèn; #4EED
+仮 > jiă; #4EEE
+仯 > chào; #4EEF
+仰 > yăng; #4EF0
+仱 > qián; #4EF1
+仲 > zhòng; #4EF2
+仳 > pĭ; #4EF3
+仴 > wàn; #4EF4
+仵 > wŭ; #4EF5
+件 > jiàn; #4EF6
+价 > jiè; #4EF7
+仸 > yăo; #4EF8
+仹 > fēng; #4EF9
+仺 > cāng; #4EFA
+任 > rèn; #4EFB
+仼 > wáng; #4EFC
+份 > fèn; #4EFD
+仾 > dī; #4EFE
+仿 > făng; #4EFF
+伀 > zhōng; #4F00
+企 > qĭ; #4F01
+伂 > pèi; #4F02
+伃 > yú; #4F03
+伄 > diào; #4F04
+伅 > dùn; #4F05
+伆 > wèn; #4F06
+伇 > yì; #4F07
+伈 > xĭn; #4F08
+伉 > kàng; #4F09
+伊 > yī; #4F0A
+伋 > jí; #4F0B
+伌 > ài; #4F0C
+伍 > wŭ; #4F0D
+伎 > jì; #4F0E
+伏 > fú; #4F0F
+伐 > fá; #4F10
+休 > xīu; #4F11
+伒 > jìn; #4F12
+伓 > bēi; #4F13
+伔 > dăn; #4F14
+伕 > fū; #4F15
+伖 > tăng; #4F16
+众 > zhòng; #4F17
+优 > yōu; #4F18
+伙 > hŭo; #4F19
+会 > hùi; #4F1A
+伛 > yŭ; #4F1B
+伜 > cùi; #4F1C
+伝 > chuán; #4F1D
+伞 > săn; #4F1E
+伟 > wĕi; #4F1F
+传 > chuán; #4F20
+伡 > chē; #4F21
+伢 > yá; #4F22
+伣 > xiàn; #4F23
+伤 > shāng; #4F24
+伥 > chāng; #4F25
+伦 > lún; #4F26
+伧 > cāng; #4F27
+伨 > xùn; #4F28
+伩 > xìn; #4F29
+伪 > wĕi; #4F2A
+伫 > zhù; #4F2B
+伭 > xuán; #4F2D
+伮 > nú; #4F2E
+伯 > bó; #4F2F
+估 > gū; #4F30
+伱 > nĭ; #4F31
+伲 > nĭ; #4F32
+伳 > xiè; #4F33
+伴 > bàn; #4F34
+伵 > xù; #4F35
+伶 > líng; #4F36
+伷 > zhòu; #4F37
+伸 > shēn; #4F38
+伹 > qū; #4F39
+伺 > sì; #4F3A
+伻 > bēng; #4F3B
+似 > sì; #4F3C
+伽 > jiā; #4F3D
+伾 > pī; #4F3E
+伿 > yì; #4F3F
+佀 > sì; #4F40
+佁 > ăi; #4F41
+佂 > zhēng; #4F42
+佃 > diàn; #4F43
+佄 > hán; #4F44
+佅 > mài; #4F45
+但 > dàn; #4F46
+佇 > zhù; #4F47
+佈 > bù; #4F48
+佉 > qū; #4F49
+佊 > bĭ; #4F4A
+佋 > shào; #4F4B
+佌 > cĭ; #4F4C
+位 > wèi; #4F4D
+低 > dī; #4F4E
+住 > zhù; #4F4F
+佐 > zŭo; #4F50
+佑 > yòu; #4F51
+佒 > yāng; #4F52
+体 > tĭ; #4F53
+佔 > zhàn; #4F54
+何 > hé; #4F55
+佖 > bì; #4F56
+佗 > tūo; #4F57
+佘 > shé; #4F58
+余 > yú; #4F59
+佚 > yì; #4F5A
+佛 > fó; #4F5B
+作 > zùo; #4F5C
+佝 > kòu; #4F5D
+佞 > nìng; #4F5E
+佟 > tóng; #4F5F
+你 > nĭ; #4F60
+佡 > xuān; #4F61
+佢 > qú; #4F62
+佣 > yòng; #4F63
+佤 > wă; #4F64
+佥 > qiān; #4F65
+佧 > kă; #4F67
+佩 > pèi; #4F69
+佪 > huái; #4F6A
+佫 > hè; #4F6B
+佬 > lăo; #4F6C
+佭 > xiáng; #4F6D
+佮 > gé; #4F6E
+佯 > yáng; #4F6F
+佰 > băi; #4F70
+佱 > fă; #4F71
+佲 > míng; #4F72
+佳 > jia; #4F73
+佴 > èr; #4F74
+併 > bìng; #4F75
+佶 > jí; #4F76
+佷 > hĕn; #4F77
+佸 > húo; #4F78
+佹 > gŭi; #4F79
+佺 > quán; #4F7A
+佻 > tiāo; #4F7B
+佼 > jiăo; #4F7C
+佽 > cì; #4F7D
+佾 > yì; #4F7E
+使 > shĭ; #4F7F
+侀 > xíng; #4F80
+侁 > shēn; #4F81
+侂 > tūo; #4F82
+侃 > kăn; #4F83
+侄 > zhí; #4F84
+侅 > gāi; #4F85
+來 > lái; #4F86
+侇 > yí; #4F87
+侈 > chĭ; #4F88
+侉 > kuā; #4F89
+侊 > guāng; #4F8A
+例 > lì; #4F8B
+侌 > yīn; #4F8C
+侍 > shì; #4F8D
+侎 > mĭ; #4F8E
+侏 > zhū; #4F8F
+侐 > xù; #4F90
+侑 > yòu; #4F91
+侒 > ān; #4F92
+侓 > lù; #4F93
+侔 > móu; #4F94
+侕 > ér; #4F95
+侖 > lún; #4F96
+侗 > tóng; #4F97
+侘 > chà; #4F98
+侙 > chì; #4F99
+侚 > xùn; #4F9A
+供 > gōng; #4F9B
+侜 > zhōu; #4F9C
+依 > yī; #4F9D
+侞 > rŭ; #4F9E
+侟 > jiàn; #4F9F
+侠 > xiá; #4FA0
+価 > jià; #4FA1
+侢 > zài; #4FA2
+侣 > lǚ; #4FA3
+侥 > jiăo; #4FA5
+侦 > zhēn; #4FA6
+侧 > cè; #4FA7
+侨 > qiáo; #4FA8
+侩 > kuài; #4FA9
+侪 > chái; #4FAA
+侫 > nìng; #4FAB
+侬 > nóng; #4FAC
+侭 > jĭn; #4FAD
+侮 > wŭ; #4FAE
+侯 > hóu; #4FAF
+侰 > jĭong; #4FB0
+侱 > chĕng; #4FB1
+侲 > zhèn; #4FB2
+侳 > zùo; #4FB3
+侴 > chŏu; #4FB4
+侵 > qīn; #4FB5
+侶 > lǚ; #4FB6
+侷 > jú; #4FB7
+侸 > shù; #4FB8
+侹 > tĭng; #4FB9
+侺 > shèn; #4FBA
+侻 > tūo; #4FBB
+侼 > bó; #4FBC
+侽 > nán; #4FBD
+侾 > hāo; #4FBE
+便 > biàn; #4FBF
+俀 > tŭi; #4FC0
+俁 > yŭ; #4FC1
+係 > xì; #4FC2
+促 > cù; #4FC3
+俄 > é; #4FC4
+俅 > qíu; #4FC5
+俆 > xú; #4FC6
+俇 > kuăng; #4FC7
+俈 > kù; #4FC8
+俉 > wù; #4FC9
+俊 > jùn; #4FCA
+俋 > yì; #4FCB
+俌 > fŭ; #4FCC
+俍 > láng; #4FCD
+俎 > zŭ; #4FCE
+俏 > qiào; #4FCF
+俐 > lì; #4FD0
+俑 > yŏng; #4FD1
+俒 > hùn; #4FD2
+俓 > jìng; #4FD3
+俔 > xiàn; #4FD4
+俕 > sàn; #4FD5
+俖 > păi; #4FD6
+俗 > sú; #4FD7
+俘 > fú; #4FD8
+俙 > xī; #4FD9
+俚 > lĭ; #4FDA
+俛 > fŭ; #4FDB
+俜 > pīng; #4FDC
+保 > băo; #4FDD
+俞 > yú; #4FDE
+俟 > sì; #4FDF
+俠 > xiá; #4FE0
+信 > xìn; #4FE1
+俢 > xīu; #4FE2
+俣 > yŭ; #4FE3
+俤 > tì; #4FE4
+俥 > chē; #4FE5
+俦 > chóu; #4FE6
+俨 > yăn; #4FE8
+俩 > liă; #4FE9
+俪 > lì; #4FEA
+俫 > lái; #4FEB
+俭 > jiăn; #4FED
+修 > xīu; #4FEE
+俯 > fŭ; #4FEF
+俰 > hè; #4FF0
+俱 > jù; #4FF1
+俲 > xiào; #4FF2
+俳 > pái; #4FF3
+俴 > jiàn; #4FF4
+俵 > biào; #4FF5
+俶 > chù; #4FF6
+俷 > fèi; #4FF7
+俸 > fèng; #4FF8
+俹 > yà; #4FF9
+俺 > ăn; #4FFA
+俻 > bèi; #4FFB
+俼 > yù; #4FFC
+俽 > xīn; #4FFD
+俾 > bĭ; #4FFE
+俿 > jiàn; #4FFF
+倀 > chāng; #5000
+倁 > chí; #5001
+倂 > bìng; #5002
+倃 > zán; #5003
+倄 > yáo; #5004
+倅 > cùi; #5005
+倆 > liă; #5006
+倇 > wăn; #5007
+倈 > lái; #5008
+倉 > cāng; #5009
+倊 > zòng; #500A
+個 > gè; #500B
+倌 > guān; #500C
+倍 > bèi; #500D
+倎 > tiān; #500E
+倏 > shū; #500F
+倐 > shū; #5010
+們 > men; #5011
+倒 > dăo; #5012
+倓 > tán; #5013
+倔 > jué; #5014
+倕 > chúi; #5015
+倖 > xìng; #5016
+倗 > péng; #5017
+倘 > tăng; #5018
+候 > hòu; #5019
+倚 > yĭ; #501A
+倛 > qī; #501B
+倜 > tì; #501C
+倝 > gàn; #501D
+倞 > jìng; #501E
+借 > jiè; #501F
+倠 > sūi; #5020
+倡 > chàng; #5021
+倢 > jié; #5022
+倣 > făng; #5023
+値 > zhí; #5024
+倥 > kōng; #5025
+倦 > juàn; #5026
+倧 > zōng; #5027
+倨 > jù; #5028
+倩 > qiàn; #5029
+倪 > ní; #502A
+倫 > lún; #502B
+倬 > zhūo; #502C
+倭 > wēi; #502D
+倮 > lŭo; #502E
+倯 > sōng; #502F
+倰 > léng; #5030
+倱 > hùn; #5031
+倲 > dōng; #5032
+倳 > zì; #5033
+倴 > bèn; #5034
+倵 > wŭ; #5035
+倶 > jù; #5036
+倷 > nài; #5037
+倸 > căi; #5038
+倹 > jiăn; #5039
+债 > zhài; #503A
+倻 > yē; #503B
+值 > zhí; #503C
+倽 > shà; #503D
+倾 > qīng; #503E
+偀 > yīng; #5040
+偁 > chēng; #5041
+偂 > jiān; #5042
+偃 > yăn; #5043
+偄 > nuàn; #5044
+偅 > zhòng; #5045
+偆 > chŭn; #5046
+假 > jiă; #5047
+偈 > jié; #5048
+偉 > wĕi; #5049
+偊 > yŭ; #504A
+偋 > bĭng; #504B
+偌 > rùo; #504C
+偍 > tí; #504D
+偎 > wēi; #504E
+偏 > piān; #504F
+偐 > yàn; #5050
+偑 > fēng; #5051
+偒 > tăng; #5052
+偓 > wò; #5053
+偔 > è; #5054
+偕 > xié; #5055
+偖 > chĕ; #5056
+偗 > shĕng; #5057
+偘 > kăn; #5058
+偙 > dì; #5059
+做 > zùo; #505A
+偛 > chā; #505B
+停 > tíng; #505C
+偝 > bèi; #505D
+偞 > yè; #505E
+偟 > huáng; #505F
+偠 > yăo; #5060
+偡 > zhàn; #5061
+偢 > chŏu; #5062
+偣 > yān; #5063
+偤 > yŏu; #5064
+健 > jiàn; #5065
+偦 > xū; #5066
+偧 > zhā; #5067
+偨 > cī; #5068
+偩 > fù; #5069
+偪 > bī; #506A
+偫 > zhì; #506B
+偬 > zŏng; #506C
+偭 > miăn; #506D
+偮 > jí; #506E
+偯 > yĭ; #506F
+偰 > xiè; #5070
+偱 > xún; #5071
+偲 > sī; #5072
+偳 > duān; #5073
+側 > cè; #5074
+偵 > zhēn; #5075
+偶 > ŏu; #5076
+偷 > tōu; #5077
+偸 > tōu; #5078
+偹 > bèi; #5079
+偺 > zá; #507A
+偻 > lǚ; #507B
+偼 > jié; #507C
+偽 > wĕi; #507D
+偾 > fèn; #507E
+偿 > cháng; #507F
+傀 > gūi; #5080
+傁 > sŏu; #5081
+傂 > zhì; #5082
+傃 > sù; #5083
+傄 > xiā; #5084
+傅 > fù; #5085
+傆 > yuàn; #5086
+傇 > rŏng; #5087
+傈 > lì; #5088
+傉 > rù; #5089
+傊 > yŭn; #508A
+傋 > gòu; #508B
+傌 > mà; #508C
+傍 > bàng; #508D
+傎 > diān; #508E
+傏 > táng; #508F
+傐 > hào; #5090
+傑 > jié; #5091
+傒 > xī; #5092
+傓 > shàn; #5093
+傔 > qiàn; #5094
+傕 > jué; #5095
+傖 > cāng; #5096
+傗 > chù; #5097
+傘 > săn; #5098
+備 > bèi; #5099
+傚 > xiào; #509A
+傛 > yŏng; #509B
+傜 > yáo; #509C
+傝 > tàn; #509D
+傞 > sūo; #509E
+傟 > yăng; #509F
+傠 > fā; #50A0
+傡 > bìng; #50A1
+傢 > jiā; #50A2
+傣 > dăi; #50A3
+傤 > zài; #50A4
+傥 > tăng; #50A5
+傧 > bìn; #50A7
+储 > chŭ; #50A8
+傩 > núo; #50A9
+傪 > cān; #50AA
+傫 > lĕi; #50AB
+催 > cūi; #50AC
+傭 > yōng; #50AD
+傮 > zāo; #50AE
+傯 > zŏng; #50AF
+傰 > péng; #50B0
+傱 > sŏng; #50B1
+傲 > ào; #50B2
+傳 > chuán; #50B3
+傴 > yŭ; #50B4
+債 > zhài; #50B5
+傶 > còu; #50B6
+傷 > shāng; #50B7
+傸 > qiăng; #50B8
+傹 > jìng; #50B9
+傺 > chì; #50BA
+傻 > shă; #50BB
+傼 > hàn; #50BC
+傽 > zhāng; #50BD
+傾 > qīng; #50BE
+傿 > yàn; #50BF
+僀 > dì; #50C0
+僁 > xī; #50C1
+僂 > lǚ; #50C2
+僃 > bèi; #50C3
+僄 > piào; #50C4
+僅 > jĭn; #50C5
+僆 > lián; #50C6
+僇 > lù; #50C7
+僈 > màn; #50C8
+僉 > qiān; #50C9
+僊 > xiān; #50CA
+僋 > tàn; #50CB
+僌 > yíng; #50CC
+働 > dòng; #50CD
+僎 > zhuàn; #50CE
+像 > xiàng; #50CF
+僐 > shàn; #50D0
+僑 > qiáo; #50D1
+僒 > jĭong; #50D2
+僓 > tŭi; #50D3
+僔 > zŭn; #50D4
+僕 > pú; #50D5
+僖 > xī; #50D6
+僗 > láo; #50D7
+僘 > chăng; #50D8
+僙 > guāng; #50D9
+僚 > liáo; #50DA
+僛 > qī; #50DB
+僜 > dèng; #50DC
+僝 > chán; #50DD
+僞 > wĕi; #50DE
+僟 > jī; #50DF
+僠 > fān; #50E0
+僡 > hùi; #50E1
+僢 > chuăn; #50E2
+僣 > jiàn; #50E3
+僤 > dàn; #50E4
+僥 > jiăo; #50E5
+僦 > jìu; #50E6
+僧 > sēng; #50E7
+僨 > fèn; #50E8
+僩 > xiàn; #50E9
+僪 > jué; #50EA
+僫 > è; #50EB
+僬 > jiāo; #50EC
+僭 > jiàn; #50ED
+僮 > tóng; #50EE
+僯 > lĭn; #50EF
+僰 > bó; #50F0
+僱 > gù; #50F1
+僳 > sù; #50F3
+僴 > xiàn; #50F4
+僵 > jiāng; #50F5
+僶 > mĭn; #50F6
+僷 > yè; #50F7
+僸 > jìn; #50F8
+價 > jià; #50F9
+僺 > qiào; #50FA
+僻 > pì; #50FB
+僼 > fēng; #50FC
+僽 > zhòu; #50FD
+僾 > ài; #50FE
+僿 > sài; #50FF
+儀 > yí; #5100
+儁 > jùn; #5101
+儂 > nóng; #5102
+儃 > chán; #5103
+億 > yì; #5104
+儅 > dāng; #5105
+儆 > jĭng; #5106
+儇 > xuān; #5107
+儈 > kuài; #5108
+儉 > jiăn; #5109
+儊 > chù; #510A
+儋 > dān; #510B
+儌 > jiăo; #510C
+儍 > shă; #510D
+儎 > zài; #510E
+儐 > bìn; #5110
+儑 > àn; #5111
+儒 > rú; #5112
+儓 > tái; #5113
+儔 > chóu; #5114
+儕 > chái; #5115
+儖 > lán; #5116
+儗 > nĭ; #5117
+儘 > jĭn; #5118
+儙 > qiàn; #5119
+儚 > méng; #511A
+儛 > wŭ; #511B
+儜 > níng; #511C
+儝 > qíong; #511D
+儞 > nĭ; #511E
+償 > cháng; #511F
+儠 > liè; #5120
+儡 > lĕi; #5121
+儢 > lǚ; #5122
+儣 > kuàng; #5123
+儤 > bào; #5124
+儥 > dú; #5125
+儦 > biāo; #5126
+儧 > zăn; #5127
+儨 > zhí; #5128
+儩 > sì; #5129
+優 > yōu; #512A
+儫 > háo; #512B
+儬 > chèn; #512C
+儭 > chèn; #512D
+儮 > lì; #512E
+儯 > téng; #512F
+儰 > wĕi; #5130
+儱 > lŏng; #5131
+儲 > chŭ; #5132
+儳 > chàn; #5133
+儴 > ráng; #5134
+儵 > shū; #5135
+儶 > hùi; #5136
+儷 > lì; #5137
+儸 > lúo; #5138
+儹 > zăn; #5139
+儺 > núo; #513A
+儻 > tăng; #513B
+儼 > yăn; #513C
+儽 > lĕi; #513D
+儾 > nàng; #513E
+儿 > ér; #513F
+兀 > wù; #5140
+允 > yŭn; #5141
+兂 > zān; #5142
+元 > yuán; #5143
+兄 > xīong; #5144
+充 > chōng; #5145
+兆 > zhào; #5146
+兇 > xīong; #5147
+先 > xiān; #5148
+光 > guāng; #5149
+兊 > dùi; #514A
+克 > kè; #514B
+兌 > dùi; #514C
+免 > miăn; #514D
+兎 > tù; #514E
+兏 > cháng; #514F
+児 > ér; #5150
+兑 > dùi; #5151
+兒 > ér; #5152
+兓 > xīn; #5153
+兔 > tù; #5154
+兕 > sì; #5155
+兖 > yăn; #5156
+兗 > yăn; #5157
+兘 > shĭ; #5158
+兙 > shí' 'kè; #5159
+党 > dăng; #515A
+兛 > qiān; #515B
+兜 > dōu; #515C
+兝 > fēn; #515D
+兞 > máo; #515E
+兟 > shēn; #515F
+兠 > dōu; #5160
+兡 > băi' 'kè; #5161
+兢 > jīng; #5162
+兣 > lĭ; #5163
+兤 > huáng; #5164
+入 > rù; #5165
+兦 > wáng; #5166
+內 > nèi; #5167
+全 > quán; #5168
+兩 > liăng; #5169
+兪 > yú; #516A
+八 > bā; #516B
+公 > gōng; #516C
+六 > lìu; #516D
+兮 > xī; #516E
+兰 > lán; #5170
+共 > gòng; #5171
+兲 > tiān; #5172
+关 > guān; #5173
+兴 > xīng; #5174
+兵 > bīng; #5175
+其 > qí; #5176
+具 > jù; #5177
+典 > diăn; #5178
+兹 > zī; #5179
+养 > yăng; #517B
+兼 > jiān; #517C
+兽 > shòu; #517D
+兾 > jì; #517E
+兿 > yì; #517F
+冀 > jì; #5180
+冁 > chăn; #5181
+冂 > jīong; #5182
+冃 > mao; #5183
+冄 > răn; #5184
+内 > nèi; #5185
+円 > yuan; #5186
+冇 > măo; #5187
+冈 > gāng; #5188
+冉 > răn; #5189
+冊 > cè; #518A
+冋 > jīong; #518B
+册 > cè; #518C
+再 > zài; #518D
+冎 > guă; #518E
+冏 > jĭong; #518F
+冐 > mào; #5190
+冑 > zhòu; #5191
+冒 > mòu; #5192
+冓 > gòu; #5193
+冔 > xŭ; #5194
+冕 > miăn; #5195
+冖 > mì; #5196
+冗 > rŏng; #5197
+冘 > yín; #5198
+写 > xiĕ; #5199
+冚 > kăn; #519A
+军 > jūn; #519B
+农 > nóng; #519C
+冝 > yí; #519D
+冞 > mí; #519E
+冟 > shì; #519F
+冠 > guān; #51A0
+冡 > méng; #51A1
+冢 > zhŏng; #51A2
+冣 > jù; #51A3
+冤 > yuān; #51A4
+冥 > míng; #51A5
+冦 > kòu; #51A6
+冨 > fù; #51A8
+冩 > xiĕ; #51A9
+冪 > mì; #51AA
+冫 > bīng; #51AB
+冬 > dōng; #51AC
+冭 > tái; #51AD
+冮 > gāng; #51AE
+冯 > féng; #51AF
+冰 > bīng; #51B0
+冱 > hù; #51B1
+冲 > chōng; #51B2
+决 > jué; #51B3
+冴 > hù; #51B4
+况 > kuàng; #51B5
+冶 > yĕ; #51B6
+冷 > lĕng; #51B7
+冸 > pàn; #51B8
+冹 > fú; #51B9
+冺 > mĭn; #51BA
+冻 > dòng; #51BB
+冼 > xiăn; #51BC
+冽 > liè; #51BD
+冾 > xiá; #51BE
+冿 > jiān; #51BF
+净 > jìng; #51C0
+凁 > shù; #51C1
+凂 > mĕi; #51C2
+凃 > tú; #51C3
+凄 > qī; #51C4
+凅 > gù; #51C5
+准 > zhŭn; #51C6
+凇 > sòng; #51C7
+凈 > jìng; #51C8
+凉 > liáng; #51C9
+凊 > qìng; #51CA
+凋 > diāo; #51CB
+凌 > líng; #51CC
+凍 > dòng; #51CD
+凎 > gàn; #51CE
+减 > jiăn; #51CF
+凐 > yīn; #51D0
+凑 > còu; #51D1
+凒 > yí; #51D2
+凓 > lì; #51D3
+凔 > cāng; #51D4
+凕 > mĭng; #51D5
+凖 > zhuĕn; #51D6
+凗 > cúi; #51D7
+凘 > sī; #51D8
+凙 > dúo; #51D9
+凚 > jìn; #51DA
+凛 > lĭn; #51DB
+凜 > lĭn; #51DC
+凝 > níng; #51DD
+凞 > xī; #51DE
+凟 > dú; #51DF
+几 > jī; #51E0
+凡 > fán; #51E1
+凢 > fán; #51E2
+凣 > fán; #51E3
+凤 > fèng; #51E4
+凥 > jū; #51E5
+処 > chŭ; #51E6
+凨 > fēng; #51E8
+凫 > fú; #51EB
+凬 > fēng; #51EC
+凭 > píng; #51ED
+凮 > fēng; #51EE
+凯 > kăi; #51EF
+凰 > huáng; #51F0
+凱 > kăi; #51F1
+凲 > gān; #51F2
+凳 > dèng; #51F3
+凴 > píng; #51F4
+凵 > qū; #51F5
+凶 > xīong; #51F6
+凷 > kuài; #51F7
+凸 > tū; #51F8
+凹 > āo; #51F9
+出 > chū; #51FA
+击 > jí; #51FB
+凼 > dàng; #51FC
+函 > hán; #51FD
+凾 > hán; #51FE
+凿 > záo; #51FF
+刀 > dāo; #5200
+刁 > diāo; #5201
+刂 > dāo; #5202
+刃 > rèn; #5203
+刄 > rèn; #5204
+刅 > chuāng; #5205
+分 > fēn; #5206
+切 > qiē; #5207
+刈 > yì; #5208
+刉 > jī; #5209
+刊 > kān; #520A
+刋 > qiàn; #520B
+刌 > cŭn; #520C
+刍 > chú; #520D
+刎 > wĕn; #520E
+刏 > jī; #520F
+刐 > dăn; #5210
+刑 > xíng; #5211
+划 > huá; #5212
+刓 > wán; #5213
+刔 > jué; #5214
+刕 > lí; #5215
+刖 > yuè; #5216
+列 > liè; #5217
+刘 > líu; #5218
+则 > zé; #5219
+刚 > gāng; #521A
+创 > chuàng; #521B
+刜 > fú; #521C
+初 > chū; #521D
+刞 > qù; #521E
+刟 > jū; #521F
+删 > shān; #5220
+刡 > mĭn; #5221
+刢 > líng; #5222
+刣 > zhōng; #5223
+判 > pàn; #5224
+別 > bié; #5225
+刦 > jié; #5226
+刧 > jié; #5227
+刨 > bào; #5228
+利 > lì; #5229
+刪 > shān; #522A
+别 > bié; #522B
+刬 > chăn; #522C
+刭 > jĭng; #522D
+刮 > guā; #522E
+刯 > gēn; #522F
+到 > dào; #5230
+刱 > chuàng; #5231
+刲 > kūi; #5232
+刳 > kū; #5233
+刴 > dùo; #5234
+刵 > èr; #5235
+制 > zhì; #5236
+刷 > shuā; #5237
+券 > quàn; #5238
+刹 > chà; #5239
+刺 > cì; #523A
+刻 > kè; #523B
+刼 > jié; #523C
+刽 > gùi; #523D
+刾 > cì; #523E
+刿 > gùi; #523F
+剀 > kăi; #5240
+剁 > dùo; #5241
+剂 > jì; #5242
+剃 > tì; #5243
+剄 > jĭng; #5244
+剅 > lóu; #5245
+剆 > gēn; #5246
+則 > zé; #5247
+剈 > yuān; #5248
+剉 > cùo; #5249
+削 > xuē; #524A
+剋 > kè; #524B
+剌 > là; #524C
+前 > qián; #524D
+剎 > chà; #524E
+剏 > chuàng; #524F
+剐 > guă; #5250
+剑 > jiàn; #5251
+剒 > cùo; #5252
+剓 > lí; #5253
+剔 > tī; #5254
+剕 > fèi; #5255
+剖 > pōu; #5256
+剗 > chăn; #5257
+剘 > qí; #5258
+剙 > chuàng; #5259
+剚 > zì; #525A
+剛 > gāng; #525B
+剜 > wān; #525C
+剝 > bō; #525D
+剞 > jī; #525E
+剟 > dūo; #525F
+剠 > qíng; #5260
+剡 > yăn; #5261
+剢 > zhúo; #5262
+剣 > jiàn; #5263
+剤 > jì; #5264
+剥 > bō; #5265
+剦 > yān; #5266
+剧 > jù; #5267
+剨 > hùo; #5268
+剩 > shèng; #5269
+剪 > jiăn; #526A
+剫 > dúo; #526B
+剬 > duān; #526C
+剭 > wū; #526D
+剮 > guă; #526E
+副 > fù; #526F
+剰 > shèng; #5270
+剱 > jiàn; #5271
+割 > gē; #5272
+剳 > zhā; #5273
+剴 > kăi; #5274
+創 > chuàng; #5275
+剶 > juān; #5276
+剷 > chăn; #5277
+剸 > tuán; #5278
+剹 > lù; #5279
+剺 > lí; #527A
+剻 > fóu; #527B
+剼 > shān; #527C
+剽 > piào; #527D
+剾 > kōu; #527E
+剿 > jiăo; #527F
+劀 > guā; #5280
+劁 > qiāo; #5281
+劂 > jué; #5282
+劃 > huà; #5283
+劄 > zhá; #5284
+劅 > zhùo; #5285
+劆 > lián; #5286
+劇 > jù; #5287
+劈 > pī; #5288
+劉 > líu; #5289
+劊 > gùi; #528A
+劋 > jiăo; #528B
+劌 > gùi; #528C
+劍 > jiàn; #528D
+劎 > jiàn; #528E
+劏 > tāng; #528F
+劐 > hūo; #5290
+劑 > jì; #5291
+劒 > jiàn; #5292
+劓 > yì; #5293
+劔 > jiàn; #5294
+劕 > zhí; #5295
+劖 > chán; #5296
+劗 > cuán; #5297
+劘 > mó; #5298
+劙 > lí; #5299
+劚 > zhú; #529A
+力 > lì; #529B
+劜 > yā; #529C
+劝 > quàn; #529D
+办 > bàn; #529E
+功 > gōng; #529F
+加 > jiā; #52A0
+务 > wù; #52A1
+劢 > mài; #52A2
+劣 > liè; #52A3
+劤 > jìn; #52A4
+劥 > kēng; #52A5
+劦 > xié; #52A6
+劧 > zhĭ; #52A7
+动 > dòng; #52A8
+助 > zhù; #52A9
+努 > nŭ; #52AA
+劫 > jié; #52AB
+劬 > qú; #52AC
+劭 > shào; #52AD
+劮 > yì; #52AE
+劯 > zhū; #52AF
+劰 > miăo; #52B0
+励 > lì; #52B1
+劲 > jìng; #52B2
+劳 > láo; #52B3
+労 > láo; #52B4
+劵 > juàn; #52B5
+劶 > kŏu; #52B6
+劷 > yáng; #52B7
+劸 > wā; #52B8
+効 > xiào; #52B9
+劺 > móu; #52BA
+劻 > kuāng; #52BB
+劼 > jié; #52BC
+劽 > liè; #52BD
+劾 > hé; #52BE
+势 > shì; #52BF
+勀 > kè; #52C0
+勁 > jìng; #52C1
+勂 > háo; #52C2
+勃 > bó; #52C3
+勄 > mĭn; #52C4
+勅 > chì; #52C5
+勆 > láng; #52C6
+勇 > yŏng; #52C7
+勈 > yŏng; #52C8
+勉 > miăn; #52C9
+勊 > kè; #52CA
+勋 > xūn; #52CB
+勌 > juàn; #52CC
+勍 > qíng; #52CD
+勎 > lù; #52CE
+勏 > pŏu; #52CF
+勐 > mĕng; #52D0
+勑 > lài; #52D1
+勒 > lè; #52D2
+勓 > kài; #52D3
+勔 > miăn; #52D4
+動 > dòng; #52D5
+勖 > xù; #52D6
+勗 > xù; #52D7
+勘 > kān; #52D8
+務 > wù; #52D9
+勚 > yì; #52DA
+勛 > xūn; #52DB
+勜 > wĕng; #52DC
+勝 > shèng; #52DD
+勞 > láo; #52DE
+募 > mù; #52DF
+勠 > lù; #52E0
+勡 > piào; #52E1
+勢 > shì; #52E2
+勣 > jī; #52E3
+勤 > qín; #52E4
+勥 > qiăng; #52E5
+勦 > jiăo; #52E6
+勧 > quàn; #52E7
+勨 > yăng; #52E8
+勩 > yì; #52E9
+勪 > jué; #52EA
+勫 > fán; #52EB
+勬 > juàn; #52EC
+勭 > tóng; #52ED
+勮 > jù; #52EE
+勯 > dān; #52EF
+勰 > xié; #52F0
+勱 > mài; #52F1
+勲 > xūn; #52F2
+勳 > xūn; #52F3
+勴 > lǜ; #52F4
+勵 > lì; #52F5
+勶 > chè; #52F6
+勷 > ráng; #52F7
+勸 > quàn; #52F8
+勹 > bāo; #52F9
+勺 > sháo; #52FA
+勻 > yún; #52FB
+勼 > jīu; #52FC
+勽 > bào; #52FD
+勾 > gōu; #52FE
+勿 > wù; #52FF
+匀 > yún; #5300
+匃 > gài; #5303
+匄 > gài; #5304
+包 > bāo; #5305
+匆 > cōng; #5306
+匈 > xīong; #5308
+匉 > pēng; #5309
+匊 > jú; #530A
+匋 > táo; #530B
+匌 > gé; #530C
+匍 > pú; #530D
+匎 > àn; #530E
+匏 > páo; #530F
+匐 > fú; #5310
+匑 > gōng; #5311
+匒 > dá; #5312
+匓 > jìu; #5313
+匔 > qīong; #5314
+匕 > bĭ; #5315
+化 > huà; #5316
+北 > bĕi; #5317
+匘 > năo; #5318
+匙 > chí; #5319
+匚 > fāng; #531A
+匛 > jìu; #531B
+匜 > yí; #531C
+匝 > zā; #531D
+匞 > jiàng; #531E
+匟 > kàng; #531F
+匠 > jiàng; #5320
+匡 > kuāng; #5321
+匢 > hū; #5322
+匣 > xiá; #5323
+匤 > qū; #5324
+匥 > biàn; #5325
+匦 > gŭi; #5326
+匧 > qiè; #5327
+匨 > zāng; #5328
+匩 > kuāng; #5329
+匪 > fĕi; #532A
+匫 > hū; #532B
+匬 > tóu; #532C
+匭 > gŭi; #532D
+匮 > gùi; #532E
+匯 > hùi; #532F
+匰 > dān; #5330
+匱 > gùi; #5331
+匲 > lián; #5332
+匳 > lián; #5333
+匴 > suăn; #5334
+匵 > dú; #5335
+匶 > jìu; #5336
+匷 > qú; #5337
+匸 > xĭ; #5338
+匹 > pĭ; #5339
+区 > qū; #533A
+医 > yì; #533B
+匼 > qià; #533C
+匽 > yăn; #533D
+匾 > biăn; #533E
+匿 > nì; #533F
+區 > qū; #5340
+十 > shí; #5341
+卂 > xìn; #5342
+千 > qiān; #5343
+卄 > niàn; #5344
+卅 > sà; #5345
+卆 > zú; #5346
+升 > shēng; #5347
+午 > wŭ; #5348
+卉 > hùi; #5349
+半 > bàn; #534A
+卋 > shì; #534B
+卌 > xì; #534C
+卍 > wàn; #534D
+华 > huá; #534E
+协 > xié; #534F
+卐 > wàn; #5350
+卑 > bēi; #5351
+卒 > zú; #5352
+卓 > zhūo; #5353
+協 > xié; #5354
+单 > dān; #5355
+卖 > mài; #5356
+南 > nán; #5357
+単 > dān; #5358
+卙 > jí; #5359
+博 > bó; #535A
+卛 > shuài; #535B
+卜 > bŭ; #535C
+卝 > kuàng; #535D
+卞 > biàn; #535E
+卟 > bŭ; #535F
+占 > zhān; #5360
+卡 > qiă; #5361
+卢 > lú; #5362
+卣 > yŏu; #5363
+卤 > lŭ; #5364
+卥 > xī; #5365
+卦 > guà; #5366
+卧 > wò; #5367
+卨 > xiè; #5368
+卩 > jié; #5369
+卪 > jié; #536A
+卫 > wèi; #536B
+卬 > áng; #536C
+卭 > qíong; #536D
+卮 > zhī; #536E
+卯 > măo; #536F
+印 > yìn; #5370
+危 > wēi; #5371
+卲 > shào; #5372
+即 > jí; #5373
+却 > què; #5374
+卵 > luăn; #5375
+卶 > shì; #5376
+卷 > juàn; #5377
+卸 > xiè; #5378
+卹 > xù; #5379
+卺 > jĭn; #537A
+卻 > què; #537B
+卼 > wù; #537C
+卽 > jí; #537D
+卾 > è; #537E
+卿 > qīng; #537F
+厀 > xī; #5380
+厂 > hàn; #5382
+厃 > zhān; #5383
+厄 > è; #5384
+厅 > tīng; #5385
+历 > lì; #5386
+厇 > zhé; #5387
+厈 > hăn; #5388
+厉 > lì; #5389
+厊 > yă; #538A
+压 > yā; #538B
+厌 > yàn; #538C
+厍 > shè; #538D
+厎 > zhĭ; #538E
+厏 > zhă; #538F
+厐 > páng; #5390
+厒 > hé; #5392
+厓 > yá; #5393
+厔 > zhì; #5394
+厕 > cè; #5395
+厖 > páng; #5396
+厗 > tí; #5397
+厘 > lí; #5398
+厙 > shè; #5399
+厚 > hòu; #539A
+厛 > tīng; #539B
+厜 > zūi; #539C
+厝 > cùo; #539D
+厞 > fèi; #539E
+原 > yuán; #539F
+厠 > cè; #53A0
+厡 > yuán; #53A1
+厢 > xiāng; #53A2
+厣 > yăn; #53A3
+厤 > lì; #53A4
+厥 > jué; #53A5
+厦 > shà; #53A6
+厧 > diān; #53A7
+厨 > chú; #53A8
+厩 > jìu; #53A9
+厪 > qín; #53AA
+厫 > áo; #53AB
+厬 > gŭi; #53AC
+厭 > yàn; #53AD
+厮 > sī; #53AE
+厯 > lì; #53AF
+厰 > chăng; #53B0
+厱 > lán; #53B1
+厲 > lì; #53B2
+厳 > yán; #53B3
+厴 > yăn; #53B4
+厵 > yuán; #53B5
+厶 > sī; #53B6
+厷 > gōng; #53B7
+厸 > lín; #53B8
+厹 > qíu; #53B9
+厺 > qù; #53BA
+去 > qù; #53BB
+厽 > lĕi; #53BD
+厾 > dū; #53BE
+县 > xiàn; #53BF
+叀 > zhuān; #53C0
+叁 > sān; #53C1
+参 > cān; #53C2
+參 > cān; #53C3
+叄 > cān; #53C4
+叅 > cān; #53C5
+叆 > ài; #53C6
+叇 > dài; #53C7
+又 > yòu; #53C8
+叉 > cha; #53C9
+及 > jí; #53CA
+友 > yŏu; #53CB
+双 > shuāng; #53CC
+反 > făn; #53CD
+収 > shōu; #53CE
+叏 > guài; #53CF
+叐 > bá; #53D0
+发 > fā; #53D1
+叒 > rùo; #53D2
+叓 > shì; #53D3
+叔 > shū; #53D4
+叕 > zhúo; #53D5
+取 > qū; #53D6
+受 > shòu; #53D7
+变 > biàn; #53D8
+叙 > xù; #53D9
+叚 > jiă; #53DA
+叛 > pàn; #53DB
+叜 > sŏu; #53DC
+叝 > gào; #53DD
+叞 > wèi; #53DE
+叟 > sŏu; #53DF
+叠 > dié; #53E0
+叡 > rùi; #53E1
+叢 > cóng; #53E2
+口 > kŏu; #53E3
+古 > gŭ; #53E4
+句 > jù; #53E5
+另 > lìng; #53E6
+叧 > guă; #53E7
+叨 > tāo; #53E8
+叩 > kòu; #53E9
+只 > zhĭ; #53EA
+叫 > jiào; #53EB
+召 > zhào; #53EC
+叭 > bā; #53ED
+叮 > dīng; #53EE
+可 > kĕ; #53EF
+台 > tái; #53F0
+叱 > chì; #53F1
+史 > shĭ; #53F2
+右 > yòu; #53F3
+叴 > qíu; #53F4
+叵 > pŏ; #53F5
+叶 > xié; #53F6
+号 > hào; #53F7
+司 > sī; #53F8
+叹 > tàn; #53F9
+叺 > chĭ; #53FA
+叻 > lè; #53FB
+叼 > diāo; #53FC
+叽 > jī; #53FD
+叿 > hōng; #53FF
+吀 > miē; #5400
+吁 > xū; #5401
+吂 > máng; #5402
+吃 > chī; #5403
+各 > gè; #5404
+吅 > xuān; #5405
+吆 > yāo; #5406
+吇 > zĭ; #5407
+合 > hé; #5408
+吉 > jí; #5409
+吊 > diào; #540A
+吋 > cùn; #540B
+同 > tóng; #540C
+名 > míng; #540D
+后 > hòu; #540E
+吏 > lì; #540F
+吐 > tŭ; #5410
+向 > xiàng; #5411
+吒 > zhà; #5412
+吓 > xià; #5413
+吔 > yĕ; #5414
+吕 > lǚ; #5415
+吖 > ā; #5416
+吗 > ma; #5417
+吘 > ŏu; #5418
+吙 > xuē; #5419
+吚 > yī; #541A
+君 > jūn; #541B
+吜 > chŏu; #541C
+吝 > lìn; #541D
+吞 > tūn; #541E
+吟 > yín; #541F
+吠 > fèi; #5420
+吡 > bĭ; #5421
+吢 > qìn; #5422
+吣 > qìn; #5423
+吤 > jiè; #5424
+吥 > bù; #5425
+否 > fŏu; #5426
+吧 > ba; #5427
+吨 > dūn; #5428
+吩 > fēn; #5429
+吪 > é; #542A
+含 > hán; #542B
+听 > tīng; #542C
+吭 > háng; #542D
+吮 > shŭn; #542E
+启 > qĭ; #542F
+吰 > hóng; #5430
+吱 > zhī; #5431
+吲 > shĕn; #5432
+吳 > wú; #5433
+吴 > wú; #5434
+吵 > chăo; #5435
+吶 > nè; #5436
+吷 > xuè; #5437
+吸 > xī; #5438
+吹 > chūi; #5439
+吺 > dōu; #543A
+吻 > wĕn; #543B
+吼 > hŏu; #543C
+吽 > óu; #543D
+吾 > wú; #543E
+吿 > gào; #543F
+呀 > yā; #5440
+呁 > jùn; #5441
+呂 > lǚ; #5442
+呃 > è; #5443
+呄 > gé; #5444
+呅 > méi; #5445
+呆 > ái; #5446
+呇 > qĭ; #5447
+呈 > chéng; #5448
+呉 > wú; #5449
+告 > gào; #544A
+呋 > fū; #544B
+呌 > jiào; #544C
+呍 > hōng; #544D
+呎 > chĭ; #544E
+呏 > shēng; #544F
+呐 > nè; #5450
+呑 > tūn; #5451
+呒 > fŭ; #5452
+呓 > yì; #5453
+呔 > dāi; #5454
+呕 > ōu; #5455
+呖 > lì; #5456
+呗 > bài; #5457
+员 > yuán; #5458
+呙 > kuāi; #5459
+呛 > qiāng; #545B
+呜 > wū; #545C
+呝 > è; #545D
+呞 > shī; #545E
+呟 > quăn; #545F
+呠 > pēn; #5460
+呡 > wĕn; #5461
+呢 > ní; #5462
+呣 > ḿ; #5463
+呤 > lĭng; #5464
+呥 > răn; #5465
+呦 > yōu; #5466
+呧 > dĭ; #5467
+周 > zhōu; #5468
+呩 > shì; #5469
+呪 > zhòu; #546A
+呫 > tiē; #546B
+呬 > xì; #546C
+呭 > yì; #546D
+呮 > qì; #546E
+呯 > píng; #546F
+呰 > zĭ; #5470
+呱 > gū; #5471
+呲 > zī; #5472
+味 > wèi; #5473
+呴 > xū; #5474
+呵 > hē; #5475
+呶 > náo; #5476
+呷 > xiā; #5477
+呸 > pēi; #5478
+呹 > yì; #5479
+呺 > xiāo; #547A
+呻 > shēn; #547B
+呼 > hū; #547C
+命 > mìng; #547D
+呾 > dá; #547E
+呿 > qū; #547F
+咀 > jŭ; #5480
+咁 > gèm; #5481
+咂 > zā; #5482
+咃 > tūo; #5483
+咄 > dūo; #5484
+咅 > pòu; #5485
+咆 > páo; #5486
+咇 > bì; #5487
+咈 > fú; #5488
+咉 > yāng; #5489
+咊 > hé; #548A
+咋 > zhà; #548B
+和 > hé; #548C
+咍 > hāi; #548D
+咎 > jìu; #548E
+咏 > yŏng; #548F
+咐 > fù; #5490
+咑 > què; #5491
+咒 > zhòu; #5492
+咓 > wă; #5493
+咔 > kă; #5494
+咕 > gū; #5495
+咖 > kā; #5496
+咗 > zŭo; #5497
+咘 > bù; #5498
+咙 > lóng; #5499
+咚 > dōng; #549A
+咛 > níng; #549B
+咝 > sī; #549D
+咞 > xiàn; #549E
+咟 > hùo; #549F
+咠 > qì; #54A0
+咡 > èr; #54A1
+咢 > è; #54A2
+咣 > guāng; #54A3
+咤 > zhà; #54A4
+咥 > xì; #54A5
+咦 > yí; #54A6
+咧 > liĕ; #54A7
+咨 > zī; #54A8
+咩 > miē; #54A9
+咪 > mī; #54AA
+咫 > zhĭ; #54AB
+咬 > yăo; #54AC
+咭 > jī; #54AD
+咮 > zhòu; #54AE
+咯 > gē; #54AF
+咰 > shuài; #54B0
+咱 > zán; #54B1
+咲 > xiào; #54B2
+咳 > ké; #54B3
+咴 > hūi; #54B4
+咵 > kuā; #54B5
+咶 > huài; #54B6
+咷 > táo; #54B7
+咸 > xián; #54B8
+咹 > è; #54B9
+咺 > xuān; #54BA
+咻 > xīu; #54BB
+咼 > wāi; #54BC
+咽 > yān; #54BD
+咾 > lăo; #54BE
+咿 > yī; #54BF
+哀 > āi; #54C0
+品 > pĭn; #54C1
+哂 > shĕn; #54C2
+哃 > tóng; #54C3
+哄 > hōng; #54C4
+哅 > xīong; #54C5
+哆 > chĭ; #54C6
+哇 > wā; #54C7
+哈 > hā; #54C8
+哉 > zāi; #54C9
+哊 > yù; #54CA
+哋 > dì; #54CB
+哌 > pài; #54CC
+响 > xiăng; #54CD
+哎 > āi; #54CE
+哏 > hĕn; #54CF
+哐 > kuāng; #54D0
+哑 > yă; #54D1
+哒 > dā; #54D2
+哓 > xiāo; #54D3
+哔 > bì; #54D4
+哕 > yuĕ; #54D5
+哗 > huā; #54D7
+哙 > kuài; #54D9
+哚 > dŭo; #54DA
+哜 > jì; #54DC
+哝 > nóng; #54DD
+哞 > mōu; #54DE
+哟 > yo; #54DF
+哠 > hào; #54E0
+員 > yuán; #54E1
+哢 > lòng; #54E2
+哣 > pŏu; #54E3
+哤 > máng; #54E4
+哥 > gē; #54E5
+哦 > é; #54E6
+哧 > chī; #54E7
+哨 > shào; #54E8
+哩 > lī; #54E9
+哪 > nă; #54EA
+哫 > zú; #54EB
+哬 > hé; #54EC
+哭 > kū; #54ED
+哮 > xiāo; #54EE
+哯 > xiàn; #54EF
+哰 > láo; #54F0
+哱 > bō; #54F1
+哲 > zhé; #54F2
+哳 > zhā; #54F3
+哴 > liàng; #54F4
+哵 > bā; #54F5
+哶 > miē; #54F6
+哷 > lè; #54F7
+哸 > sūi; #54F8
+哹 > fóu; #54F9
+哺 > bŭ; #54FA
+哻 > hàn; #54FB
+哼 > hēng; #54FC
+哽 > gĕng; #54FD
+哾 > shūo; #54FE
+哿 > gĕ; #54FF
+唀 > yŏu; #5500
+唁 > yàn; #5501
+唂 > gŭ; #5502
+唃 > gŭ; #5503
+唄 > bài; #5504
+唅 > hān; #5505
+唆 > sūo; #5506
+唇 > chún; #5507
+唈 > yì; #5508
+唉 > āi; #5509
+唊 > jiá; #550A
+唋 > tŭ; #550B
+唌 > xián; #550C
+唍 > huăn; #550D
+唎 > lī; #550E
+唏 > xī; #550F
+唐 > táng; #5510
+唑 > zùo; #5511
+唒 > qíu; #5512
+唓 > chē; #5513
+唔 > wú; #5514
+唕 > zào; #5515
+唖 > yă; #5516
+唗 > dōu; #5517
+唘 > qĭ; #5518
+唙 > dí; #5519
+唚 > qìn; #551A
+唛 > mà; #551B
+唝 > hŏng; #551D
+唞 > dŏu; #551E
+唠 > láo; #5520
+唡 > liăng; #5521
+唢 > sŭo; #5522
+唣 > zào; #5523
+唤 > huàn; #5524
+唦 > shā; #5526
+唧 > jī; #5527
+唨 > zŭo; #5528
+唩 > wō; #5529
+唪 > fĕng; #552A
+唫 > yín; #552B
+唬 > hŭ; #552C
+唭 > qī; #552D
+售 > shòu; #552E
+唯 > wéi; #552F
+唰 > shuā; #5530
+唱 > chàng; #5531
+唲 > ér; #5532
+唳 > lì; #5533
+唴 > qiàng; #5534
+唵 > ăn; #5535
+唶 > jiè; #5536
+唷 > yō; #5537
+唸 > niàn; #5538
+唹 > yū; #5539
+唺 > tiăn; #553A
+唻 > lăi; #553B
+唼 > shà; #553C
+唽 > xī; #553D
+唾 > tùo; #553E
+唿 > hū; #553F
+啀 > ái; #5540
+啁 > zhōu; #5541
+啂 > nòu; #5542
+啃 > kĕn; #5543
+啄 > zhúo; #5544
+啅 > zhúo; #5545
+商 > shāng; #5546
+啇 > dí; #5547
+啈 > hèng; #5548
+啉 > lán; #5549
+啊 > a; #554A
+啋 > xiāo; #554B
+啌 > xiāng; #554C
+啍 > tūn; #554D
+啎 > wŭ; #554E
+問 > wèn; #554F
+啐 > cùi; #5550
+啑 > shà; #5551
+啒 > hū; #5552
+啓 > qĭ; #5553
+啔 > qĭ; #5554
+啕 > táo; #5555
+啖 > dàn; #5556
+啗 > dàn; #5557
+啘 > yè; #5558
+啙 > zĭ; #5559
+啚 > bĭ; #555A
+啛 > cùi; #555B
+啜 > chùo; #555C
+啝 > hé; #555D
+啞 > yă; #555E
+啟 > qĭ; #555F
+啠 > zhé; #5560
+啡 > pēi; #5561
+啢 > liăng; #5562
+啣 > xián; #5563
+啤 > pí; #5564
+啥 > shà; #5565
+啦 > la; #5566
+啧 > zé; #5567
+啨 > qīng; #5568
+啩 > guà; #5569
+啪 > pā; #556A
+啫 > zhĕ; #556B
+啬 > sè; #556C
+啭 > zhuàn; #556D
+啮 > niè; #556E
+啯 > guo; #556F
+啰 > lūo; #5570
+啱 > yān; #5571
+啲 > dì; #5572
+啳 > quán; #5573
+啴 > tān; #5574
+啵 > bo; #5575
+啶 > dìng; #5576
+啷 > lāng; #5577
+啸 > xiào; #5578
+啺 > táng; #557A
+啻 > chì; #557B
+啼 > tí; #557C
+啽 > án; #557D
+啾 > jīu; #557E
+啿 > dàn; #557F
+喀 > kè; #5580
+喁 > yóng; #5581
+喂 > wèi; #5582
+喃 > nán; #5583
+善 > shàn; #5584
+喅 > yù; #5585
+喆 > zhé; #5586
+喇 > lă; #5587
+喈 > jiē; #5588
+喉 > hóu; #5589
+喊 > hăn; #558A
+喋 > dié; #558B
+喌 > zhōu; #558C
+喍 > chái; #558D
+喎 > wāi; #558E
+喏 > rĕ; #558F
+喐 > yù; #5590
+喑 > yīn; #5591
+喒 > zán; #5592
+喓 > yāo; #5593
+喔 > wō; #5594
+喕 > miăn; #5595
+喖 > hú; #5596
+喗 > yŭn; #5597
+喘 > chuăn; #5598
+喙 > hùi; #5599
+喚 > huàn; #559A
+喛 > huàn; #559B
+喜 > xĭ; #559C
+喝 > hē; #559D
+喞 > jī; #559E
+喟 > kùi; #559F
+喠 > zhŏng; #55A0
+喡 > wĕi; #55A1
+喢 > shà; #55A2
+喣 > xŭ; #55A3
+喤 > huáng; #55A4
+喥 > dù; #55A5
+喦 > niè; #55A6
+喧 > 1xuān; #55A7
+喨 > liàng; #55A8
+喩 > yù; #55A9
+喪 > sāng; #55AA
+喫 > chī; #55AB
+喬 > qiáo; #55AC
+喭 > yàn; #55AD
+單 > dān; #55AE
+喯 > pēn; #55AF
+喰 > cān; #55B0
+喱 > lí; #55B1
+喲 > yo; #55B2
+喳 > zhā; #55B3
+喴 > wēi; #55B4
+喵 > miāo; #55B5
+営 > yíng; #55B6
+喷 > pēn; #55B7
+喹 > kúi; #55B9
+喺 > xì; #55BA
+喻 > yù; #55BB
+喼 > jié; #55BC
+喽 > lou; #55BD
+喾 > kù; #55BE
+喿 > sào; #55BF
+嗀 > hùo; #55C0
+嗁 > tí; #55C1
+嗂 > yáo; #55C2
+嗃 > hè; #55C3
+嗄 > á; #55C4
+嗅 > xìu; #55C5
+嗆 > qiāng; #55C6
+嗇 > sè; #55C7
+嗈 > yōng; #55C8
+嗉 > sù; #55C9
+嗊 > hŏng; #55CA
+嗋 > xié; #55CB
+嗌 > yì; #55CC
+嗍 > sūo; #55CD
+嗎 > ma; #55CE
+嗏 > chā; #55CF
+嗐 > hài; #55D0
+嗑 > kè; #55D1
+嗒 > tà; #55D2
+嗓 > săng; #55D3
+嗔 > tián; #55D4
+嗕 > rù; #55D5
+嗖 > sōu; #55D6
+嗗 > wā; #55D7
+嗘 > jī; #55D8
+嗙 > păng; #55D9
+嗚 > wū; #55DA
+嗛 > xián; #55DB
+嗜 > shì; #55DC
+嗝 > gé; #55DD
+嗞 > zī; #55DE
+嗟 > jiē; #55DF
+嗠 > lùo; #55E0
+嗡 > wēng; #55E1
+嗢 > wà; #55E2
+嗣 > sì; #55E3
+嗤 > chī; #55E4
+嗥 > háo; #55E5
+嗦 > sūo; #55E6
+嗧 > jiā' 'lún; #55E7
+嗨 > hăi; #55E8
+嗩 > sŭo; #55E9
+嗪 > qín; #55EA
+嗫 > niè; #55EB
+嗬 > hē; #55EC
+嗮 > sài; #55EE
+嗯 > ǹg; #55EF
+嗰 > gè; #55F0
+嗱 > ná; #55F1
+嗲 > diă; #55F2
+嗳 > ài; #55F3
+嗵 > tōng; #55F5
+嗶 > bì; #55F6
+嗷 > áo; #55F7
+嗸 > áo; #55F8
+嗹 > lián; #55F9
+嗺 > cūi; #55FA
+嗻 > zhē; #55FB
+嗼 > mò; #55FC
+嗽 > sòu; #55FD
+嗾 > sŏu; #55FE
+嗿 > tăn; #55FF
+嘀 > dí; #5600
+嘁 > qī; #5601
+嘂 > jiào; #5602
+嘃 > chōng; #5603
+嘄 > jiāo; #5604
+嘅 > kăi; #5605
+嘆 > tàn; #5606
+嘇 > sān; #5607
+嘈 > cáo; #5608
+嘉 > jiā; #5609
+嘊 > ái; #560A
+嘋 > xiāo; #560B
+嘌 > piāo; #560C
+嘍 > lou; #560D
+嘎 > gā; #560E
+嘏 > gŭ; #560F
+嘐 > xiāo; #5610
+嘑 > hū; #5611
+嘒 > hùi; #5612
+嘓 > guo; #5613
+嘔 > ōu; #5614
+嘕 > xiān; #5615
+嘖 > zé; #5616
+嘗 > cháng; #5617
+嘘 > xū; #5618
+嘙 > pó; #5619
+嘚 > dé; #561A
+嘛 > ma; #561B
+嘜 > mà; #561C
+嘝 > hú; #561D
+嘞 > lei; #561E
+嘟 > dū; #561F
+嘠 > gā; #5620
+嘡 > tāng; #5621
+嘢 > yĕ; #5622
+嘣 > bēng; #5623
+嘤 > yīng; #5624
+嘦 > jiào; #5626
+嘧 > mī; #5627
+嘨 > xiào; #5628
+嘩 > huā; #5629
+嘪 > măi; #562A
+嘫 > rán; #562B
+嘬 > zūo; #562C
+嘭 > pēng; #562D
+嘮 > láo; #562E
+嘯 > xiào; #562F
+嘰 > jī; #5630
+嘱 > zhŭ; #5631
+嘲 > cháo; #5632
+嘳 > kùi; #5633
+嘴 > zŭi; #5634
+嘵 > xiāo; #5635
+嘶 > sī; #5636
+嘷 > háo; #5637
+嘸 > fŭ; #5638
+嘹 > liáo; #5639
+嘺 > qiáo; #563A
+嘻 > xī; #563B
+嘼 > xìu; #563C
+嘽 > tān; #563D
+嘾 > tán; #563E
+嘿 > mò; #563F
+噀 > xùn; #5640
+噁 > ĕ; #5641
+噂 > zŭn; #5642
+噃 > fān; #5643
+噄 > chī; #5644
+噅 > hūi; #5645
+噆 > zăn; #5646
+噇 > chuáng; #5647
+噈 > cù; #5648
+噉 > dàn; #5649
+噊 > yù; #564A
+噋 > tūn; #564B
+噌 > chēng; #564C
+噍 > jiào; #564D
+噎 > yē; #564E
+噏 > xī; #564F
+噐 > qì; #5650
+噑 > háo; #5651
+噒 > lián; #5652
+噓 > xū; #5653
+噔 > dēng; #5654
+噕 > hūi; #5655
+噖 > yín; #5656
+噗 > pū; #5657
+噘 > juē; #5658
+噙 > qín; #5659
+噚 > xún; #565A
+噛 > niè; #565B
+噜 > lū; #565C
+噝 > sī; #565D
+噞 > yăn; #565E
+噟 > yìng; #565F
+噠 > dā; #5660
+噡 > dān; #5661
+噢 > yŭ; #5662
+噣 > zhòu; #5663
+噤 > jìn; #5664
+噥 > nóng; #5665
+噦 > yuĕ; #5666
+噧 > hùi; #5667
+器 > qì; #5668
+噩 > è; #5669
+噪 > zào; #566A
+噫 > yī; #566B
+噬 > shì; #566C
+噭 > jiào; #566D
+噮 > yuān; #566E
+噯 > ài; #566F
+噰 > yōng; #5670
+噱 > jué; #5671
+噲 > kuài; #5672
+噳 > yŭ; #5673
+噴 > pēn; #5674
+噵 > dào; #5675
+噶 > gé; #5676
+噷 > xīn; #5677
+噸 > dūn; #5678
+噹 > dāng; #5679
+噻 > sai; #567B
+噼 > pī; #567C
+噽 > pĭ; #567D
+噾 > yīn; #567E
+噿 > zŭi; #567F
+嚀 > níng; #5680
+嚁 > dí; #5681
+嚂 > làn; #5682
+嚃 > tā; #5683
+嚄 > hùo; #5684
+嚅 > rú; #5685
+嚆 > hāo; #5686
+嚇 > xià; #5687
+嚈 > yà; #5688
+嚉 > dūo; #5689
+嚊 > xì; #568A
+嚋 > chóu; #568B
+嚌 > jì; #568C
+嚍 > jìn; #568D
+嚎 > háo; #568E
+嚏 > tì; #568F
+嚐 > cháng; #5690
+嚓 > cā; #5693
+嚔 > tì; #5694
+嚕 > lū; #5695
+嚖 > hùi; #5696
+嚗 > bó; #5697
+嚘 > yōu; #5698
+嚙 > niè; #5699
+嚚 > yín; #569A
+嚛 > hù; #569B
+嚜 > mò; #569C
+嚝 > huāng; #569D
+嚞 > zhé; #569E
+嚟 > lí; #569F
+嚠 > líu; #56A0
+嚢 > náng; #56A2
+嚣 > xiāo; #56A3
+嚤 > mó; #56A4
+嚥 > yàn; #56A5
+嚦 > lì; #56A6
+嚧 > lú; #56A7
+嚨 > lóng; #56A8
+嚩 > fú; #56A9
+嚪 > dàn; #56AA
+嚫 > chèn; #56AB
+嚬 > pín; #56AC
+嚭 > pĭ; #56AD
+嚮 > xiàng; #56AE
+嚯 > hùo; #56AF
+嚰 > mó; #56B0
+嚱 > xì; #56B1
+嚲 > dŭo; #56B2
+嚳 > kù; #56B3
+嚴 > yán; #56B4
+嚵 > chán; #56B5
+嚶 > yīng; #56B6
+嚷 > răng; #56B7
+嚸 > diăn; #56B8
+嚹 > lā; #56B9
+嚺 > tà; #56BA
+嚻 > xiāo; #56BB
+嚼 > jiáo; #56BC
+嚽 > chùo; #56BD
+嚾 > huān; #56BE
+嚿 > hùo; #56BF
+囀 > zhuàn; #56C0
+囁 > niè; #56C1
+囂 > xiāo; #56C2
+囃 > cà; #56C3
+囄 > lí; #56C4
+囅 > chăn; #56C5
+囆 > chài; #56C6
+囇 > lì; #56C7
+囈 > yì; #56C8
+囉 > lūo; #56C9
+囊 > náng; #56CA
+囋 > zàn; #56CB
+囌 > sū; #56CC
+囍 > xĭ; #56CD
+囏 > jiān; #56CF
+囐 > zá; #56D0
+囑 > zhŭ; #56D1
+囒 > lán; #56D2
+囓 > niè; #56D3
+囔 > nāng; #56D4
+囗 > wéi; #56D7
+囘 > húi; #56D8
+囙 > yīn; #56D9
+囚 > qíu; #56DA
+四 > sì; #56DB
+囜 > nín; #56DC
+囝 > jiăn; #56DD
+回 > húi; #56DE
+囟 > xìn; #56DF
+因 > yīn; #56E0
+囡 > nān; #56E1
+团 > tuán; #56E2
+団 > tuán; #56E3
+囤 > dùn; #56E4
+囥 > kàng; #56E5
+囦 > yuān; #56E6
+囧 > jĭong; #56E7
+囨 > piān; #56E8
+囩 > yùn; #56E9
+囪 > cōng; #56EA
+囫 > hú; #56EB
+囬 > húi; #56EC
+园 > yuán; #56ED
+囮 > yóu; #56EE
+囯 > gúo; #56EF
+困 > kùn; #56F0
+囱 > cōng; #56F1
+囲 > wéi; #56F2
+図 > tú; #56F3
+围 > wéi; #56F4
+囵 > lún; #56F5
+囶 > gúo; #56F6
+囷 > qūn; #56F7
+囸 > rì; #56F8
+囹 > líng; #56F9
+固 > gù; #56FA
+囻 > gúo; #56FB
+囼 > tāi; #56FC
+国 > gúo; #56FD
+图 > tú; #56FE
+囿 > yòu; #56FF
+圀 > gúo; #5700
+圁 > yín; #5701
+圂 > hùn; #5702
+圃 > pŭ; #5703
+圄 > yŭ; #5704
+圅 > hán; #5705
+圆 > yuán; #5706
+圇 > lún; #5707
+圈 > quān; #5708
+圉 > yŭ; #5709
+圊 > qīng; #570A
+國 > gúo; #570B
+圌 > chuán; #570C
+圍 > wéi; #570D
+圎 > yuán; #570E
+圏 > quān; #570F
+圐 > kū; #5710
+圑 > fù; #5711
+園 > yuán; #5712
+圓 > yuán; #5713
+圔 > è; #5714
+圕 > tú' 'shū' 'guăn; #5715
+圖 > tú; #5716
+圗 > tú; #5717
+團 > tuán; #5718
+圙 > lǜe; #5719
+圚 > hùi; #571A
+圛 > yì; #571B
+圜 > yuán; #571C
+圝 > luán; #571D
+圞 > luán; #571E
+土 > tŭ; #571F
+圠 > yà; #5720
+圡 > tŭ; #5721
+圢 > tīng; #5722
+圣 > shèng; #5723
+圤 > pŭ; #5724
+圥 > lù; #5725
+圧 > yā; #5727
+在 > zài; #5728
+圩 > wéi; #5729
+圪 > gē; #572A
+圫 > yù; #572B
+圬 > wū; #572C
+圭 > gūi; #572D
+圮 > pĭ; #572E
+圯 > yí; #572F
+地 > dì; #5730
+圱 > qiān; #5731
+圲 > qiān; #5732
+圳 > zhèn; #5733
+圴 > zhúo; #5734
+圵 > dàng; #5735
+圶 > qià; #5736
+圹 > kuàng; #5739
+场 > cháng; #573A
+圻 > qí; #573B
+圼 > niè; #573C
+圽 > mò; #573D
+圾 > jí; #573E
+圿 > jiá; #573F
+址 > zhĭ; #5740
+坁 > zhĭ; #5741
+坂 > băn; #5742
+坃 > xūn; #5743
+坄 > tóu; #5744
+坅 > qĭn; #5745
+坆 > fén; #5746
+均 > jūn; #5747
+坈 > kēng; #5748
+坉 > tún; #5749
+坊 > fāng; #574A
+坋 > fèn; #574B
+坌 > bèn; #574C
+坍 > tān; #574D
+坎 > kăn; #574E
+坏 > pī; #574F
+坐 > zùo; #5750
+坑 > kēng; #5751
+坒 > bì; #5752
+坓 > xíng; #5753
+坔 > dì; #5754
+坕 > jīng; #5755
+坖 > jì; #5756
+块 > kuài; #5757
+坘 > dĭ; #5758
+坙 > jīng; #5759
+坚 > jiān; #575A
+坛 > tán; #575B
+坜 > lì; #575C
+坝 > bà; #575D
+坞 > wù; #575E
+坟 > fén; #575F
+坠 > zhùi; #5760
+坡 > pō; #5761
+坢 > păn; #5762
+坣 > tāng; #5763
+坤 > kūn; #5764
+坥 > qū; #5765
+坦 > tăn; #5766
+坧 > zhī; #5767
+坨 > túo; #5768
+坩 > gān; #5769
+坪 > píng; #576A
+坫 > diàn; #576B
+坬 > guà; #576C
+坭 > ní; #576D
+坮 > tái; #576E
+坯 > pī; #576F
+坰 > jīong; #5770
+坱 > yăng; #5771
+坲 > fó; #5772
+坳 > ào; #5773
+坴 > lìu; #5774
+坵 > qīu; #5775
+坶 > mù; #5776
+坷 > kĕ; #5777
+坸 > gòu; #5778
+坹 > xuè; #5779
+坺 > bá; #577A
+坻 > chí; #577B
+坼 > chè; #577C
+坽 > líng; #577D
+坾 > zhù; #577E
+坿 > fù; #577F
+垀 > hū; #5780
+垁 > zhì; #5781
+垂 > chúi; #5782
+垃 > lā; #5783
+垄 > lŏng; #5784
+垅 > lŏng; #5785
+垆 > lú; #5786
+垇 > ào; #5787
+垉 > páo; #5789
+型 > xíng; #578B
+垌 > dòng; #578C
+垍 > jì; #578D
+垎 > kè; #578E
+垏 > lù; #578F
+垐 > cí; #5790
+垑 > chĭ; #5791
+垒 > lĕi; #5792
+垓 > gāi; #5793
+垔 > yīn; #5794
+垕 > hòu; #5795
+垖 > dūi; #5796
+垗 > zhào; #5797
+垘 > fú; #5798
+垙 > guāng; #5799
+垚 > yáo; #579A
+垛 > dŭo; #579B
+垜 > dŭo; #579C
+垝 > gŭi; #579D
+垞 > chá; #579E
+垟 > yáng; #579F
+垠 > yín; #57A0
+垡 > fá; #57A1
+垢 > gòu; #57A2
+垣 > yuán; #57A3
+垤 > dié; #57A4
+垥 > xié; #57A5
+垦 > kĕn; #57A6
+垧 > jīong; #57A7
+垨 > shŏu; #57A8
+垩 > è; #57A9
+垫 > diàn; #57AB
+垬 > hóng; #57AC
+垭 > wù; #57AD
+垮 > kuă; #57AE
+垱 > dàng; #57B1
+垲 > kăi; #57B2
+垴 > năo; #57B4
+垵 > ăn; #57B5
+垶 > xīng; #57B6
+垷 > xiàn; #57B7
+垸 > huàn; #57B8
+垹 > bāng; #57B9
+垺 > pēi; #57BA
+垻 > bà; #57BB
+垼 > yì; #57BC
+垽 > yìn; #57BD
+垾 > hàn; #57BE
+垿 > xù; #57BF
+埀 > chúi; #57C0
+埁 > cén; #57C1
+埂 > gĕng; #57C2
+埃 > āi; #57C3
+埄 > péng; #57C4
+埅 > fáng; #57C5
+埆 > què; #57C6
+埇 > yŏng; #57C7
+埈 > xùn; #57C8
+埉 > jiá; #57C9
+埊 > dì; #57CA
+埋 > mái; #57CB
+埌 > làng; #57CC
+埍 > xuàn; #57CD
+城 > chéng; #57CE
+埏 > yán; #57CF
+埐 > jīn; #57D0
+埑 > zhé; #57D1
+埒 > lèi; #57D2
+埓 > liè; #57D3
+埔 > bù; #57D4
+埕 > chéng; #57D5
+埗 > bù; #57D7
+埘 > shí; #57D8
+埙 > xūn; #57D9
+埚 > gūo; #57DA
+埛 > jīong; #57DB
+埜 > yĕ; #57DC
+埝 > niàn; #57DD
+埞 > dĭ; #57DE
+域 > yù; #57DF
+埠 > bù; #57E0
+埡 > yà; #57E1
+埢 > juăn; #57E2
+埣 > sùi; #57E3
+埤 > pí; #57E4
+埥 > chēng; #57E5
+埦 > wăn; #57E6
+埧 > jù; #57E7
+埨 > lŭn; #57E8
+埩 > zhēng; #57E9
+埪 > kōng; #57EA
+埫 > chŏng; #57EB
+埬 > dōng; #57EC
+埭 > dài; #57ED
+埮 > tàn; #57EE
+埯 > ăn; #57EF
+埰 > cài; #57F0
+埱 > shú; #57F1
+埲 > bĕng; #57F2
+埳 > kăn; #57F3
+埴 > zhí; #57F4
+埵 > dŭo; #57F5
+埶 > yì; #57F6
+執 > zhí; #57F7
+埸 > yì; #57F8
+培 > péi; #57F9
+基 > jī; #57FA
+埻 > zhŭn; #57FB
+埼 > qí; #57FC
+埽 > sào; #57FD
+埾 > jù; #57FE
+埿 > ní; #57FF
+堀 > kū; #5800
+堁 > kè; #5801
+堂 > táng; #5802
+堃 > kūn; #5803
+堄 > nì; #5804
+堅 > jiān; #5805
+堆 > dūi; #5806
+堇 > jĭn; #5807
+堈 > gāng; #5808
+堉 > yù; #5809
+堊 > è; #580A
+堋 > péng; #580B
+堌 > gù; #580C
+堍 > tù; #580D
+堎 > lèng; #580E
+堐 > yá; #5810
+堑 > qiàn; #5811
+堓 > àn; #5813
+堕 > dùo; #5815
+堖 > năo; #5816
+堗 > tū; #5817
+堘 > chéng; #5818
+堙 > yīn; #5819
+堚 > hún; #581A
+堛 > bì; #581B
+堜 > liàn; #581C
+堝 > gūo; #581D
+堞 > dié; #581E
+堟 > zhuàn; #581F
+堠 > hòu; #5820
+堡 > băo; #5821
+堢 > băo; #5822
+堣 > yú; #5823
+堤 > dī; #5824
+堥 > máo; #5825
+堦 > jiē; #5826
+堧 > ruán; #5827
+堨 > è; #5828
+堩 > gèng; #5829
+堪 > kān; #582A
+堫 > zōng; #582B
+堬 > yú; #582C
+堭 > huáng; #582D
+堮 > è; #582E
+堯 > yáo; #582F
+堰 > yàn; #5830
+報 > bào; #5831
+堲 > jí; #5832
+堳 > méi; #5833
+場 > cháng; #5834
+堵 > dŭ; #5835
+堶 > túo; #5836
+堷 > yìn; #5837
+堸 > féng; #5838
+堹 > zhòng; #5839
+堺 > jiè; #583A
+堻 > zhēn; #583B
+堼 > fēng; #583C
+堽 > gāng; #583D
+堾 > chuăn; #583E
+堿 > jiăn; #583F
+塂 > xiàng; #5842
+塃 > huāng; #5843
+塄 > léng; #5844
+塅 > duàn; #5845
+塇 > xuān; #5847
+塈 > jì; #5848
+塉 > jí; #5849
+塊 > kuài; #584A
+塋 > yíng; #584B
+塌 > tā; #584C
+塍 > chéng; #584D
+塎 > yŏng; #584E
+塏 > kăi; #584F
+塐 > sù; #5850
+塑 > sù; #5851
+塒 > shí; #5852
+塓 > mì; #5853
+塔 > tă; #5854
+塕 > wĕng; #5855
+塖 > chéng; #5856
+塗 > tú; #5857
+塘 > táng; #5858
+塙 > què; #5859
+塚 > zhŏng; #585A
+塛 > lì; #585B
+塜 > péng; #585C
+塝 > bàng; #585D
+塞 > sāi; #585E
+塟 > zàng; #585F
+塠 > dūi; #5860
+塡 > tián; #5861
+塢 > wù; #5862
+塣 > chĕng; #5863
+塤 > xūn; #5864
+塥 > gé; #5865
+塦 > zhèn; #5866
+塧 > ài; #5867
+塨 > gōng; #5868
+塩 > yán; #5869
+塪 > kăn; #586A
+填 > tián; #586B
+塬 > yuán; #586C
+塭 > wēn; #586D
+塮 > xiè; #586E
+塯 > lìu; #586F
+塱 > lăng; #5871
+塲 > cháng; #5872
+塳 > péng; #5873
+塴 > bèng; #5874
+塵 > chén; #5875
+塶 > cù; #5876
+塷 > lŭ; #5877
+塸 > ŏu; #5878
+塹 > qiàn; #5879
+塺 > méi; #587A
+塻 > mò; #587B
+塼 > zhuān; #587C
+塽 > shuăng; #587D
+塾 > shú; #587E
+塿 > lŏu; #587F
+墀 > chí; #5880
+墁 > màn; #5881
+墂 > biāo; #5882
+境 > jìng; #5883
+墄 > qī; #5884
+墅 > shù; #5885
+墆 > dì; #5886
+墇 > zhāng; #5887
+墈 > kàn; #5888
+墉 > yōng; #5889
+墊 > diàn; #588A
+墋 > chĕn; #588B
+墌 > zhī; #588C
+墍 > xì; #588D
+墎 > gūo; #588E
+墏 > qiăng; #588F
+墐 > jìn; #5890
+墑 > dī; #5891
+墒 > shāng; #5892
+墓 > mù; #5893
+墔 > cūi; #5894
+墕 > yàn; #5895
+墖 > tă; #5896
+増 > zēng; #5897
+墘 > qí; #5898
+墙 > qiáng; #5899
+墚 > liáng; #589A
+墜 > zhùi; #589C
+墝 > qiāo; #589D
+增 > zēng; #589E
+墟 > xū; #589F
+墠 > shàn; #58A0
+墡 > shàn; #58A1
+墢 > bá; #58A2
+墣 > pū; #58A3
+墤 > kuài; #58A4
+墥 > dŏng; #58A5
+墦 > fán; #58A6
+墧 > què; #58A7
+墨 > mò; #58A8
+墩 > dūn; #58A9
+墪 > dūn; #58AA
+墫 > dūn; #58AB
+墬 > dì; #58AC
+墭 > shèng; #58AD
+墮 > dùo; #58AE
+墯 > dùo; #58AF
+墰 > tán; #58B0
+墱 > dèng; #58B1
+墲 > wŭ; #58B2
+墳 > fén; #58B3
+墴 > huáng; #58B4
+墵 > tán; #58B5
+墶 > dā; #58B6
+墷 > yè; #58B7
+墺 > yù; #58BA
+墻 > qiáng; #58BB
+墼 > jī; #58BC
+墽 > qiāo; #58BD
+墾 > kĕn; #58BE
+墿 > yì; #58BF
+壀 > pí; #58C0
+壁 > bì; #58C1
+壂 > diàn; #58C2
+壃 > jiāng; #58C3
+壄 > yĕ; #58C4
+壅 > yōng; #58C5
+壆 > bó; #58C6
+壇 > tán; #58C7
+壈 > lăn; #58C8
+壉 > jù; #58C9
+壊 > huài; #58CA
+壋 > dàng; #58CB
+壌 > răng; #58CC
+壍 > qiàn; #58CD
+壎 > xūn; #58CE
+壏 > làn; #58CF
+壐 > xĭ; #58D0
+壑 > hè; #58D1
+壒 > ài; #58D2
+壓 > yā; #58D3
+壔 > dăo; #58D4
+壕 > háo; #58D5
+壖 > ruán; #58D6
+壘 > lĕi; #58D8
+壙 > kuàng; #58D9
+壚 > lú; #58DA
+壛 > yán; #58DB
+壜 > tán; #58DC
+壝 > wéi; #58DD
+壞 > huài; #58DE
+壟 > lŏng; #58DF
+壠 > lŏng; #58E0
+壡 > rùi; #58E1
+壢 > lì; #58E2
+壣 > lín; #58E3
+壤 > răng; #58E4
+壦 > xūn; #58E6
+壧 > yán; #58E7
+壨 > léi; #58E8
+壩 > bà; #58E9
+士 > shì; #58EB
+壬 > rén; #58EC
+壮 > zhuàng; #58EE
+壯 > zhuàng; #58EF
+声 > shēng; #58F0
+壱 > yī; #58F1
+売 > mài; #58F2
+壳 > ké; #58F3
+壴 > zhŭ; #58F4
+壵 > zhuàng; #58F5
+壶 > hú; #58F6
+壷 > hú; #58F7
+壸 > kŭn; #58F8
+壹 > yī; #58F9
+壺 > hú; #58FA
+壻 > xù; #58FB
+壼 > kŭn; #58FC
+壽 > shòu; #58FD
+壾 > măng; #58FE
+壿 > zŭn; #58FF
+夀 > shòu; #5900
+夁 > yī; #5901
+夂 > zhĭ; #5902
+夃 > gū; #5903
+处 > chù; #5904
+夅 > jiàng; #5905
+夆 > fēng; #5906
+备 > bèi; #5907
+変 > biàn; #5909
+夊 > sūi; #590A
+夋 > qūn; #590B
+夌 > líng; #590C
+复 > fù; #590D
+夎 > zùo; #590E
+夏 > xià; #590F
+夐 > xìong; #5910
+夒 > náo; #5912
+夓 > xià; #5913
+夔 > kúi; #5914
+夕 > xī; #5915
+外 > wài; #5916
+夗 > yuàn; #5917
+夘 > măo; #5918
+夙 > sù; #5919
+多 > dūo; #591A
+夛 > dūo; #591B
+夜 > yè; #591C
+夝 > qíng; #591D
+够 > gòu; #591F
+夠 > gòu; #5920
+夡 > qì; #5921
+夢 > mèng; #5922
+夣 > mèng; #5923
+夤 > yín; #5924
+夥 > hŭo; #5925
+夦 > chèn; #5926
+大 > dà; #5927
+夨 > zè; #5928
+天 > tiān; #5929
+太 > tài; #592A
+夫 > fū; #592B
+夬 > guài; #592C
+夭 > yăo; #592D
+央 > yāng; #592E
+夯 > hāng; #592F
+夰 > găo; #5930
+失 > shī; #5931
+夲 > bĕn; #5932
+夳 > tài; #5933
+头 > tóu; #5934
+夵 > yăn; #5935
+夶 > bĭ; #5936
+夷 > yí; #5937
+夸 > kuā; #5938
+夹 > jiā; #5939
+夺 > dúo; #593A
+夼 > kuăng; #593C
+夽 > yùn; #593D
+夾 > jiā; #593E
+夿 > pā; #593F
+奀 > ēn; #5940
+奁 > lián; #5941
+奂 > huàn; #5942
+奃 > dì; #5943
+奄 > yăn; #5944
+奅 > pào; #5945
+奆 > quăn; #5946
+奇 > qí; #5947
+奈 > nài; #5948
+奉 > fèng; #5949
+奊 > xié; #594A
+奋 > fèn; #594B
+奌 > diăn; #594C
+奎 > kúi; #594E
+奏 > zòu; #594F
+奐 > huàn; #5950
+契 > qì; #5951
+奒 > kāi; #5952
+奓 > zhà; #5953
+奔 > bēn; #5954
+奕 > yì; #5955
+奖 > jiăng; #5956
+套 > tào; #5957
+奘 > zàng; #5958
+奙 > bĕn; #5959
+奚 > xī; #595A
+奛 > xiăng; #595B
+奜 > fĕi; #595C
+奝 > diāo; #595D
+奞 > xùn; #595E
+奟 > kēng; #595F
+奠 > diàn; #5960
+奡 > ào; #5961
+奢 > shē; #5962
+奣 > wĕng; #5963
+奤 > păn; #5964
+奥 > ào; #5965
+奦 > wù; #5966
+奧 > ào; #5967
+奨 > jiăng; #5968
+奩 > lián; #5969
+奪 > dúo; #596A
+奫 > yūn; #596B
+奬 > jiăng; #596C
+奭 > shì; #596D
+奮 > fèn; #596E
+奯 > hùo; #596F
+奰 > bì; #5970
+奱 > lián; #5971
+奲 > dŭo; #5972
+女 > nǚ; #5973
+奴 > nú; #5974
+奵 > dīng; #5975
+奶 > năi; #5976
+奷 > qiān; #5977
+奸 > jiān; #5978
+她 > tā; #5979
+奺 > jĭu; #597A
+奻 > nán; #597B
+奼 > chà; #597C
+好 > hăo; #597D
+奾 > xiān; #597E
+奿 > fàn; #597F
+妀 > jĭ; #5980
+妁 > shùo; #5981
+如 > rú; #5982
+妃 > fēi; #5983
+妄 > wàng; #5984
+妅 > hóng; #5985
+妆 > zhuāng; #5986
+妇 > fù; #5987
+妈 > mā; #5988
+妉 > dān; #5989
+妊 > rèn; #598A
+妋 > fū; #598B
+妌 > jìng; #598C
+妍 > yán; #598D
+妎 > xiè; #598E
+妏 > wèn; #598F
+妐 > zhōng; #5990
+妑 > pā; #5991
+妒 > dù; #5992
+妓 > jì; #5993
+妔 > kēng; #5994
+妕 > zhòng; #5995
+妖 > yāo; #5996
+妗 > jìn; #5997
+妘 > yún; #5998
+妙 > miào; #5999
+妚 > pēi; #599A
+妜 > yuè; #599C
+妝 > zhuāng; #599D
+妞 > nīu; #599E
+妟 > yàn; #599F
+妠 > nà; #59A0
+妡 > xīn; #59A1
+妢 > fén; #59A2
+妣 > bĭ; #59A3
+妤 > yú; #59A4
+妥 > tŭo; #59A5
+妦 > fēng; #59A6
+妧 > yuán; #59A7
+妨 > fáng; #59A8
+妩 > wŭ; #59A9
+妪 > yù; #59AA
+妫 > gūi; #59AB
+妬 > dù; #59AC
+妭 > bá; #59AD
+妮 > nī; #59AE
+妯 > zhóu; #59AF
+妰 > zhúo; #59B0
+妱 > zhāo; #59B1
+妲 > dá; #59B2
+妳 > năi; #59B3
+妴 > yuăn; #59B4
+妵 > tŏu; #59B5
+妶 > xuán; #59B6
+妷 > zhí; #59B7
+妸 > ē; #59B8
+妹 > mèi; #59B9
+妺 > mò; #59BA
+妻 > qī; #59BB
+妼 > bì; #59BC
+妽 > shēn; #59BD
+妾 > qiè; #59BE
+妿 > ē; #59BF
+姀 > hé; #59C0
+姁 > xŭ; #59C1
+姂 > fá; #59C2
+姃 > zhēng; #59C3
+姄 > mín; #59C4
+姅 > bàn; #59C5
+姆 > mŭ; #59C6
+姇 > fū; #59C7
+姈 > líng; #59C8
+姉 > zĭ; #59C9
+姊 > zĭ; #59CA
+始 > shĭ; #59CB
+姌 > răn; #59CC
+姍 > shān; #59CD
+姎 > yāng; #59CE
+姏 > mán; #59CF
+姐 > jiĕ; #59D0
+姑 > gū; #59D1
+姒 > sì; #59D2
+姓 > xìng; #59D3
+委 > wĕi; #59D4
+姕 > zī; #59D5
+姖 > jù; #59D6
+姗 > shān; #59D7
+姘 > pīn; #59D8
+姙 > rèn; #59D9
+姚 > yáo; #59DA
+姛 > tŏng; #59DB
+姜 > jiāng; #59DC
+姝 > shū; #59DD
+姞 > jí; #59DE
+姟 > gāi; #59DF
+姠 > shàng; #59E0
+姡 > kùo; #59E1
+姢 > juān; #59E2
+姣 > jiāo; #59E3
+姤 > gòu; #59E4
+姥 > mŭ; #59E5
+姦 > jiān; #59E6
+姧 > jiān; #59E7
+姨 > yí; #59E8
+姩 > niàn; #59E9
+姪 > zhí; #59EA
+姫 > jī; #59EB
+姬 > jī; #59EC
+姭 > xiàn; #59ED
+姮 > héng; #59EE
+姯 > guāng; #59EF
+姰 > jūn; #59F0
+姱 > kuā; #59F1
+姲 > yàn; #59F2
+姳 > mĭng; #59F3
+姴 > liè; #59F4
+姵 > pèi; #59F5
+姶 > yăn; #59F6
+姷 > yòu; #59F7
+姸 > yán; #59F8
+姹 > chà; #59F9
+姺 > shēn; #59FA
+姻 > yīn; #59FB
+姼 > chĭ; #59FC
+姽 > gŭi; #59FD
+姾 > quān; #59FE
+姿 > zī; #59FF
+娀 > sōng; #5A00
+威 > wēi; #5A01
+娂 > hóng; #5A02
+娃 > wá; #5A03
+娄 > lóu; #5A04
+娅 > yà; #5A05
+娆 > răo; #5A06
+娇 > jiāo; #5A07
+娈 > luán; #5A08
+娉 > pīng; #5A09
+娊 > xiàn; #5A0A
+娋 > shào; #5A0B
+娌 > lĭ; #5A0C
+娍 > chéng; #5A0D
+娎 > xiào; #5A0E
+娏 > máng; #5A0F
+娐 > fu; #5A10
+娑 > sūo; #5A11
+娒 > wŭ; #5A12
+娓 > wĕi; #5A13
+娔 > kè; #5A14
+娕 > lài; #5A15
+娖 > chùo; #5A16
+娗 > dìng; #5A17
+娘 > niáng; #5A18
+娙 > xíng; #5A19
+娚 > nán; #5A1A
+娛 > yú; #5A1B
+娜 > núo; #5A1C
+娝 > pēi; #5A1D
+娞 > nĕi; #5A1E
+娟 > juān; #5A1F
+娠 > shēn; #5A20
+娡 > zhì; #5A21
+娢 > hán; #5A22
+娣 > dì; #5A23
+娤 > zhuāng; #5A24
+娥 > é; #5A25
+娦 > pín; #5A26
+娧 > tùi; #5A27
+娨 > hàn; #5A28
+娩 > miăn; #5A29
+娪 > wú; #5A2A
+娫 > yán; #5A2B
+娬 > wŭ; #5A2C
+娭 > xī; #5A2D
+娮 > yán; #5A2E
+娯 > yú; #5A2F
+娰 > sì; #5A30
+娱 > yú; #5A31
+娲 > wā; #5A32
+娴 > xián; #5A34
+娵 > jū; #5A35
+娶 > qŭ; #5A36
+娷 > shùi; #5A37
+娸 > qī; #5A38
+娹 > xián; #5A39
+娺 > zhūi; #5A3A
+娻 > dōng; #5A3B
+娼 > chāng; #5A3C
+娽 > lù; #5A3D
+娾 > ăi; #5A3E
+娿 > ē; #5A3F
+婀 > ē; #5A40
+婁 > lóu; #5A41
+婂 > mián; #5A42
+婃 > cóng; #5A43
+婄 > pŏu; #5A44
+婅 > jú; #5A45
+婆 > pó; #5A46
+婇 > căi; #5A47
+婈 > díng; #5A48
+婉 > wăn; #5A49
+婊 > biăo; #5A4A
+婋 > xiāo; #5A4B
+婌 > shŭ; #5A4C
+婍 > qĭ; #5A4D
+婎 > hūi; #5A4E
+婏 > fù; #5A4F
+婐 > ē; #5A50
+婑 > wŏ; #5A51
+婒 > tán; #5A52
+婓 > fēi; #5A53
+婔 > wei; #5A54
+婕 > jié; #5A55
+婖 > tiān; #5A56
+婗 > ní; #5A57
+婘 > quán; #5A58
+婙 > jìng; #5A59
+婚 > hūn; #5A5A
+婛 > jīng; #5A5B
+婜 > qiān; #5A5C
+婝 > diàn; #5A5D
+婞 > xìng; #5A5E
+婟 > hù; #5A5F
+婠 > wà; #5A60
+婡 > lái; #5A61
+婢 > bì; #5A62
+婣 > yīn; #5A63
+婤 > chōu; #5A64
+婥 > chùo; #5A65
+婦 > fù; #5A66
+婧 > jìng; #5A67
+婨 > lún; #5A68
+婩 > yàn; #5A69
+婪 > lán; #5A6A
+婫 > kūn; #5A6B
+婬 > yín; #5A6C
+婭 > yà; #5A6D
+婮 > ju; #5A6E
+婯 > lì; #5A6F
+婰 > diăn; #5A70
+婱 > xián; #5A71
+婳 > huà; #5A73
+婴 > yīng; #5A74
+婵 > chán; #5A75
+婶 > shĕn; #5A76
+婷 > tíng; #5A77
+婸 > dàng; #5A78
+婹 > yăo; #5A79
+婺 > wù; #5A7A
+婻 > nàn; #5A7B
+婼 > rùo; #5A7C
+婽 > jiă; #5A7D
+婾 > tōu; #5A7E
+婿 > xù; #5A7F
+媀 > yú; #5A80
+媁 > wēi; #5A81
+媂 > tí; #5A82
+媃 > róu; #5A83
+媄 > mĕi; #5A84
+媅 > dān; #5A85
+媆 > ruăn; #5A86
+媇 > qīn; #5A87
+媈 > hui; #5A88
+媉 > wū; #5A89
+媊 > qián; #5A8A
+媋 > chūn; #5A8B
+媌 > máo; #5A8C
+媍 > fù; #5A8D
+媎 > jiĕ; #5A8E
+媏 > duān; #5A8F
+媐 > xī; #5A90
+媑 > zhòng; #5A91
+媒 > méi; #5A92
+媓 > huáng; #5A93
+媔 > mián; #5A94
+媕 > ān; #5A95
+媖 > yīng; #5A96
+媗 > xuān; #5A97
+媘 > jie; #5A98
+媙 > wēi; #5A99
+媚 > mèi; #5A9A
+媛 > yuàn; #5A9B
+媜 > zhēn; #5A9C
+媝 > qīu; #5A9D
+媞 > tí; #5A9E
+媟 > xiè; #5A9F
+媠 > tŭo; #5AA0
+媡 > liàn; #5AA1
+媢 > mào; #5AA2
+媣 > răn; #5AA3
+媤 > sī; #5AA4
+媥 > piān; #5AA5
+媦 > wèi; #5AA6
+媧 > wā; #5AA7
+媨 > jìu; #5AA8
+媩 > hú; #5AA9
+媪 > ăo; #5AAA
+媭 > xū; #5AAD
+媮 > tōu; #5AAE
+媯 > gūi; #5AAF
+媰 > zōu; #5AB0
+媱 > yáo; #5AB1
+媲 > pì; #5AB2
+媳 > xí; #5AB3
+媴 > yuán; #5AB4
+媵 > yìng; #5AB5
+媶 > róng; #5AB6
+媷 > rù; #5AB7
+媸 > chī; #5AB8
+媹 > líu; #5AB9
+媺 > mĕi; #5ABA
+媻 > pán; #5ABB
+媼 > ăo; #5ABC
+媽 > mā; #5ABD
+媾 > gòu; #5ABE
+媿 > kùi; #5ABF
+嫀 > qín; #5AC0
+嫁 > jià; #5AC1
+嫂 > săo; #5AC2
+嫃 > zhēn; #5AC3
+嫄 > yuán; #5AC4
+嫅 > chā; #5AC5
+嫆 > yóng; #5AC6
+嫇 > míng; #5AC7
+嫈 > yīng; #5AC8
+嫉 > jí; #5AC9
+嫊 > sù; #5ACA
+嫋 > niăo; #5ACB
+嫌 > xián; #5ACC
+嫍 > tāo; #5ACD
+嫎 > páng; #5ACE
+嫏 > láng; #5ACF
+嫐 > năo; #5AD0
+嫑 > báo; #5AD1
+嫒 > ài; #5AD2
+嫓 > pì; #5AD3
+嫔 > pín; #5AD4
+嫕 > yì; #5AD5
+嫖 > piào; #5AD6
+嫗 > yù; #5AD7
+嫘 > léi; #5AD8
+嫙 > xuán; #5AD9
+嫚 > màn; #5ADA
+嫛 > yī; #5ADB
+嫜 > zhāng; #5ADC
+嫝 > kāng; #5ADD
+嫞 > yóng; #5ADE
+嫟 > nì; #5ADF
+嫠 > lí; #5AE0
+嫡 > dí; #5AE1
+嫢 > gūi; #5AE2
+嫣 > yān; #5AE3
+嫤 > jìn; #5AE4
+嫥 > zhuān; #5AE5
+嫦 > cháng; #5AE6
+嫧 > cè; #5AE7
+嫨 > hān; #5AE8
+嫩 > nèn; #5AE9
+嫪 > lào; #5AEA
+嫫 > mó; #5AEB
+嫬 > zhē; #5AEC
+嫭 > hù; #5AED
+嫮 > hù; #5AEE
+嫯 > ào; #5AEF
+嫰 > nèn; #5AF0
+嫱 > qiáng; #5AF1
+嫳 > piè; #5AF3
+嫴 > gū; #5AF4
+嫵 > wŭ; #5AF5
+嫶 > jiáo; #5AF6
+嫷 > tŭo; #5AF7
+嫸 > zhăn; #5AF8
+嫹 > máo; #5AF9
+嫺 > xián; #5AFA
+嫻 > xián; #5AFB
+嫼 > mò; #5AFC
+嫽 > liáo; #5AFD
+嫾 > lián; #5AFE
+嫿 > huà; #5AFF
+嬀 > gūi; #5B00
+嬁 > dēng; #5B01
+嬂 > zhī; #5B02
+嬃 > xū; #5B03
+嬄 > yi; #5B04
+嬅 > huá; #5B05
+嬆 > xī; #5B06
+嬇 > hùi; #5B07
+嬈 > răo; #5B08
+嬉 > xī; #5B09
+嬊 > yàn; #5B0A
+嬋 > chán; #5B0B
+嬌 > jiāo; #5B0C
+嬍 > mĕi; #5B0D
+嬎 > fàn; #5B0E
+嬏 > fān; #5B0F
+嬐 > xiān; #5B10
+嬑 > yì; #5B11
+嬒 > wèi; #5B12
+嬓 > jiào; #5B13
+嬔 > fù; #5B14
+嬕 > shì; #5B15
+嬖 > bì; #5B16
+嬗 > shàn; #5B17
+嬘 > sùi; #5B18
+嬙 > qiáng; #5B19
+嬚 > liăn; #5B1A
+嬛 > huán; #5B1B
+嬜 > xin; #5B1C
+嬝 > niăo; #5B1D
+嬞 > dŏng; #5B1E
+嬟 > yì; #5B1F
+嬠 > cán; #5B20
+嬡 > ài; #5B21
+嬢 > niáng; #5B22
+嬣 > néng; #5B23
+嬤 > mā; #5B24
+嬥 > tiăo; #5B25
+嬦 > chóu; #5B26
+嬧 > jìn; #5B27
+嬨 > cí; #5B28
+嬩 > yú; #5B29
+嬪 > pín; #5B2A
+嬫 > yong; #5B2B
+嬬 > xū; #5B2C
+嬭 > năi; #5B2D
+嬮 > yān; #5B2E
+嬯 > tái; #5B2F
+嬰 > yīng; #5B30
+嬱 > cán; #5B31
+嬲 > niăo; #5B32
+嬳 > wo; #5B33
+嬴 > yíng; #5B34
+嬵 > mián; #5B35
+嬷 > mā; #5B37
+嬸 > shĕn; #5B38
+嬹 > xìng; #5B39
+嬺 > nì; #5B3A
+嬻 > dú; #5B3B
+嬼 > lĭu; #5B3C
+嬽 > yuān; #5B3D
+嬾 > lăn; #5B3E
+嬿 > yàn; #5B3F
+孀 > shuāng; #5B40
+孁 > líng; #5B41
+孂 > jiăo; #5B42
+孃 > niáng; #5B43
+孄 > lăn; #5B44
+孅 > xiān; #5B45
+孆 > yīng; #5B46
+孇 > shuāng; #5B47
+孈 > shuāi; #5B48
+孉 > quán; #5B49
+孊 > mĭ; #5B4A
+孋 > lí; #5B4B
+孌 > luán; #5B4C
+孍 > yán; #5B4D
+孎 > zhŭ; #5B4E
+孏 > lăn; #5B4F
+子 > zĭ; #5B50
+孑 > jié; #5B51
+孒 > jué; #5B52
+孓 > jué; #5B53
+孔 > kŏng; #5B54
+孕 > yùn; #5B55
+孖 > zī; #5B56
+字 > zì; #5B57
+存 > cún; #5B58
+孙 > sūn; #5B59
+孚 > fú; #5B5A
+孛 > bèi; #5B5B
+孜 > zī; #5B5C
+孝 > xiào; #5B5D
+孞 > xìn; #5B5E
+孟 > mèng; #5B5F
+孠 > sì; #5B60
+孡 > tāi; #5B61
+孢 > bāo; #5B62
+季 > jì; #5B63
+孤 > gū; #5B64
+孥 > nú; #5B65
+学 > xué; #5B66
+孨 > zhuăn; #5B68
+孩 > hái; #5B69
+孪 > luán; #5B6A
+孫 > sūn; #5B6B
+孬 > huài; #5B6C
+孭 > miē; #5B6D
+孮 > cóng; #5B6E
+孯 > qiān; #5B6F
+孰 > shú; #5B70
+孱 > chán; #5B71
+孲 > yā; #5B72
+孳 > zī; #5B73
+孴 > nĭ; #5B74
+孵 > fū; #5B75
+孶 > zī; #5B76
+孷 > lí; #5B77
+學 > xué; #5B78
+孹 > bò; #5B79
+孺 > rú; #5B7A
+孻 > lái; #5B7B
+孼 > niè; #5B7C
+孽 > niè; #5B7D
+孾 > yīng; #5B7E
+孿 > luán; #5B7F
+宀 > mián; #5B80
+宁 > zhù; #5B81
+宂 > rŏng; #5B82
+它 > tā; #5B83
+宄 > gŭi; #5B84
+宅 > zhái; #5B85
+宆 > qíong; #5B86
+宇 > yŭ; #5B87
+守 > shŏu; #5B88
+安 > ān; #5B89
+宊 > tú; #5B8A
+宋 > sòng; #5B8B
+完 > wán; #5B8C
+宍 > ròu; #5B8D
+宎 > yăo; #5B8E
+宏 > hóng; #5B8F
+宐 > yí; #5B90
+宑 > jĭng; #5B91
+宒 > zhūn; #5B92
+宓 > mì; #5B93
+宔 > zhŭ; #5B94
+宕 > dàng; #5B95
+宖 > hóng; #5B96
+宗 > zōng; #5B97
+官 > guān; #5B98
+宙 > zhòu; #5B99
+定 > dìng; #5B9A
+宛 > wăn; #5B9B
+宜 > yí; #5B9C
+宝 > băo; #5B9D
+实 > shí; #5B9E
+実 > shí; #5B9F
+宠 > chŏng; #5BA0
+审 > shĕn; #5BA1
+客 > kè; #5BA2
+宣 > xuān; #5BA3
+室 > shì; #5BA4
+宥 > yòu; #5BA5
+宦 > huàn; #5BA6
+宧 > yí; #5BA7
+宨 > tiăo; #5BA8
+宩 > shĭ; #5BA9
+宪 > xiàn; #5BAA
+宫 > gōng; #5BAB
+宬 > chéng; #5BAC
+宭 > qún; #5BAD
+宮 > gōng; #5BAE
+宯 > xiāo; #5BAF
+宰 > zăi; #5BB0
+宱 > zhà; #5BB1
+宲 > băo; #5BB2
+害 > hài; #5BB3
+宴 > yàn; #5BB4
+宵 > xiāo; #5BB5
+家 > jiā; #5BB6
+宷 > shĕn; #5BB7
+宸 > chén; #5BB8
+容 > róng; #5BB9
+宺 > huăng; #5BBA
+宻 > mì; #5BBB
+宼 > kòu; #5BBC
+宽 > kuān; #5BBD
+宾 > bīn; #5BBE
+宿 > sù; #5BBF
+寀 > cài; #5BC0
+寁 > zăn; #5BC1
+寂 > jì; #5BC2
+寃 > yuān; #5BC3
+寄 > jì; #5BC4
+寅 > yín; #5BC5
+密 > mì; #5BC6
+寇 > kòu; #5BC7
+寈 > qīng; #5BC8
+寉 > què; #5BC9
+寊 > zhēn; #5BCA
+寋 > jiăn; #5BCB
+富 > fù; #5BCC
+寍 > níng; #5BCD
+寎 > bìng; #5BCE
+寏 > huán; #5BCF
+寐 > mèi; #5BD0
+寑 > qĭn; #5BD1
+寒 > hán; #5BD2
+寓 > yù; #5BD3
+寔 > shí; #5BD4
+寕 > níng; #5BD5
+寖 > qìn; #5BD6
+寗 > níng; #5BD7
+寘 > zhì; #5BD8
+寙 > yŭ; #5BD9
+寚 > băo; #5BDA
+寛 > kuān; #5BDB
+寜 > níng; #5BDC
+寝 > qĭn; #5BDD
+寞 > mò; #5BDE
+察 > chá; #5BDF
+寠 > jù; #5BE0
+寡 > guă; #5BE1
+寢 > qĭn; #5BE2
+寣 > hū; #5BE3
+寤 > wù; #5BE4
+寥 > liáo; #5BE5
+實 > shí; #5BE6
+寧 > zhù; #5BE7
+寨 > zhài; #5BE8
+審 > shĕn; #5BE9
+寪 > wĕi; #5BEA
+寫 > xiĕ; #5BEB
+寬 > kuān; #5BEC
+寭 > hùi; #5BED
+寮 > liáo; #5BEE
+寯 > jùn; #5BEF
+寰 > huán; #5BF0
+寱 > yì; #5BF1
+寲 > yí; #5BF2
+寳 > băo; #5BF3
+寴 > qìn; #5BF4
+寵 > chŏng; #5BF5
+寶 > băo; #5BF6
+寷 > fēng; #5BF7
+寸 > cùn; #5BF8
+对 > dùi; #5BF9
+寺 > sì; #5BFA
+寻 > xún; #5BFB
+导 > dăo; #5BFC
+寽 > lǜ; #5BFD
+対 > dùi; #5BFE
+寿 > shòu; #5BFF
+尀 > pŏ; #5C00
+封 > fēng; #5C01
+専 > zhuān; #5C02
+尃 > fū; #5C03
+射 > shè; #5C04
+尅 > kè; #5C05
+将 > jiāng; #5C06
+將 > jiāng; #5C07
+專 > zhuān; #5C08
+尉 > wèi; #5C09
+尊 > zūn; #5C0A
+尋 > xún; #5C0B
+尌 > shù; #5C0C
+對 > dùi; #5C0D
+導 > dăo; #5C0E
+小 > xiăo; #5C0F
+尐 > jī; #5C10
+少 > shăo; #5C11
+尒 > ĕr; #5C12
+尓 > ĕr; #5C13
+尔 > ĕr; #5C14
+尕 > gă; #5C15
+尖 > jiān; #5C16
+尗 > shú; #5C17
+尘 > chén; #5C18
+尙 > shàng; #5C19
+尚 > shàng; #5C1A
+尛 > mo; #5C1B
+尜 > gá; #5C1C
+尝 > cháng; #5C1D
+尞 > liào; #5C1E
+尟 > xiăn; #5C1F
+尠 > xiăn; #5C20
+尢 > wāng; #5C22
+尣 > wāng; #5C23
+尤 > yóu; #5C24
+尥 > liào; #5C25
+尦 > liào; #5C26
+尧 > yáo; #5C27
+尨 > máng; #5C28
+尩 > wāng; #5C29
+尪 > wāng; #5C2A
+尫 > wāng; #5C2B
+尬 > gà; #5C2C
+尭 > yáo; #5C2D
+尮 > dùo; #5C2E
+尯 > kùi; #5C2F
+尰 > zhŏng; #5C30
+就 > jìu; #5C31
+尲 > gān; #5C32
+尳 > gŭ; #5C33
+尴 > gān; #5C34
+尵 > túi; #5C35
+尶 > gān; #5C36
+尷 > gān; #5C37
+尸 > shī; #5C38
+尹 > yĭn; #5C39
+尺 > chĭ; #5C3A
+尻 > kāo; #5C3B
+尼 > ní; #5C3C
+尽 > jĭn; #5C3D
+尾 > wĕi; #5C3E
+尿 > niào; #5C3F
+局 > jú; #5C40
+屁 > pì; #5C41
+层 > céng; #5C42
+屃 > xì; #5C43
+屄 > bī; #5C44
+居 > jū; #5C45
+屆 > jiè; #5C46
+屇 > tián; #5C47
+屈 > qū; #5C48
+屉 > tì; #5C49
+届 > jiè; #5C4A
+屋 > wū; #5C4B
+屌 > diăo; #5C4C
+屍 > shī; #5C4D
+屎 > shĭ; #5C4E
+屏 > píng; #5C4F
+屐 > jī; #5C50
+屑 > xiè; #5C51
+屒 > chén; #5C52
+屓 > xì; #5C53
+屔 > ní; #5C54
+展 > zhăn; #5C55
+屖 > xī; #5C56
+屘 > măn; #5C58
+屙 > ē; #5C59
+屚 > lòu; #5C5A
+屛 > píng; #5C5B
+屜 > tì; #5C5C
+屝 > fèi; #5C5D
+属 > shŭ; #5C5E
+屟 > xiè; #5C5F
+屠 > tú; #5C60
+屡 > lǚ; #5C61
+屢 > lǚ; #5C62
+屣 > xĭ; #5C63
+層 > céng; #5C64
+履 > lǚ; #5C65
+屦 > jù; #5C66
+屧 > xiè; #5C67
+屨 > jù; #5C68
+屩 > juē; #5C69
+屪 > liáo; #5C6A
+屫 > jué; #5C6B
+屬 > shŭ; #5C6C
+屭 > xì; #5C6D
+屮 > chè; #5C6E
+屯 > tún; #5C6F
+屰 > nì; #5C70
+山 > shān; #5C71
+屳 > xiān; #5C73
+屴 > lì; #5C74
+屵 > xuē; #5C75
+屸 > lóng; #5C78
+屹 > yì; #5C79
+屺 > qĭ; #5C7A
+屻 > rèn; #5C7B
+屼 > wù; #5C7C
+屽 > hàn; #5C7D
+屾 > shēn; #5C7E
+屿 > yŭ; #5C7F
+岀 > chū; #5C80
+岁 > sùi; #5C81
+岂 > qĭ; #5C82
+岄 > yuè; #5C84
+岅 > băn; #5C85
+岆 > yăo; #5C86
+岇 > áng; #5C87
+岈 > yá; #5C88
+岉 > wù; #5C89
+岊 > jié; #5C8A
+岋 > è; #5C8B
+岌 > jí; #5C8C
+岍 > qiān; #5C8D
+岎 > fēn; #5C8E
+岏 > yuán; #5C8F
+岐 > qí; #5C90
+岑 > cén; #5C91
+岒 > qián; #5C92
+岓 > qí; #5C93
+岔 > chà; #5C94
+岕 > jiè; #5C95
+岖 > qū; #5C96
+岗 > găng; #5C97
+岘 > xiàn; #5C98
+岙 > ào; #5C99
+岚 > lán; #5C9A
+岛 > dăo; #5C9B
+岜 > bā; #5C9C
+岝 > zùo; #5C9D
+岞 > zùo; #5C9E
+岟 > yăng; #5C9F
+岠 > jù; #5CA0
+岡 > gāng; #5CA1
+岢 > kĕ; #5CA2
+岣 > gŏu; #5CA3
+岤 > xuè; #5CA4
+岥 > bēi; #5CA5
+岦 > lì; #5CA6
+岧 > tiáo; #5CA7
+岨 > jū; #5CA8
+岩 > yán; #5CA9
+岪 > fú; #5CAA
+岫 > xìu; #5CAB
+岬 > jiă; #5CAC
+岭 > líng; #5CAD
+岮 > túo; #5CAE
+岯 > pēi; #5CAF
+岰 > yŏu; #5CB0
+岱 > dài; #5CB1
+岲 > kuàng; #5CB2
+岳 > yuè; #5CB3
+岴 > qū; #5CB4
+岵 > hù; #5CB5
+岶 > pò; #5CB6
+岷 > mín; #5CB7
+岸 > àn; #5CB8
+岹 > tiáo; #5CB9
+岺 > líng; #5CBA
+岻 > chí; #5CBB
+岽 > dōng; #5CBD
+岿 > kūi; #5CBF
+峀 > xìu; #5CC0
+峁 > măo; #5CC1
+峂 > tóng; #5CC2
+峃 > xué; #5CC3
+峄 > yì; #5CC4
+峆 > hē; #5CC6
+峇 > kē; #5CC7
+峈 > lùo; #5CC8
+峉 > ē; #5CC9
+峊 > fù; #5CCA
+峋 > xún; #5CCB
+峌 > dié; #5CCC
+峍 > lù; #5CCD
+峎 > ān; #5CCE
+峏 > ĕr; #5CCF
+峐 > gāi; #5CD0
+峑 > quán; #5CD1
+峒 > tóng; #5CD2
+峓 > yí; #5CD3
+峔 > mŭ; #5CD4
+峕 > shí; #5CD5
+峖 > ān; #5CD6
+峗 > wéi; #5CD7
+峘 > hū; #5CD8
+峙 > zhì; #5CD9
+峚 > mì; #5CDA
+峛 > lĭ; #5CDB
+峜 > jī; #5CDC
+峝 > tóng; #5CDD
+峞 > wéi; #5CDE
+峟 > yòu; #5CDF
+峡 > xiá; #5CE1
+峢 > lĭ; #5CE2
+峣 > yáo; #5CE3
+峤 > jiào; #5CE4
+峥 > zhēng; #5CE5
+峦 > luán; #5CE6
+峧 > jiāo; #5CE7
+峨 > é; #5CE8
+峩 > é; #5CE9
+峪 > yù; #5CEA
+峫 > yé; #5CEB
+峬 > bū; #5CEC
+峭 > qiào; #5CED
+峮 > qūn; #5CEE
+峯 > fēng; #5CEF
+峰 > fēng; #5CF0
+峱 > náo; #5CF1
+峲 > lĭ; #5CF2
+峳 > yóu; #5CF3
+峴 > xiàn; #5CF4
+峵 > hóng; #5CF5
+島 > dăo; #5CF6
+峷 > shēn; #5CF7
+峸 > chéng; #5CF8
+峹 > tú; #5CF9
+峺 > gĕng; #5CFA
+峻 > jùn; #5CFB
+峼 > hào; #5CFC
+峽 > xiá; #5CFD
+峾 > yīn; #5CFE
+峿 > yŭ; #5CFF
+崀 > làng; #5D00
+崁 > kăn; #5D01
+崂 > láo; #5D02
+崃 > lái; #5D03
+崄 > xiăn; #5D04
+崅 > què; #5D05
+崆 > kōng; #5D06
+崇 > chóng; #5D07
+崈 > chóng; #5D08
+崉 > tà; #5D09
+崊 > lin; #5D0A
+崋 > huá; #5D0B
+崌 > jū; #5D0C
+崍 > lái; #5D0D
+崎 > qí; #5D0E
+崏 > mín; #5D0F
+崐 > kūn; #5D10
+崑 > kūn; #5D11
+崒 > zú; #5D12
+崓 > gù; #5D13
+崔 > cūi; #5D14
+崕 > yá; #5D15
+崖 > yá; #5D16
+崗 > găng; #5D17
+崘 > lún; #5D18
+崙 > lún; #5D19
+崚 > léng; #5D1A
+崛 > jué; #5D1B
+崜 > dūo; #5D1C
+崝 > zhēng; #5D1D
+崞 > gūo; #5D1E
+崟 > yín; #5D1F
+崠 > dōng; #5D20
+崡 > hán; #5D21
+崢 > zhēng; #5D22
+崣 > wĕi; #5D23
+崤 > yáo; #5D24
+崥 > pĭ; #5D25
+崦 > yān; #5D26
+崧 > sōng; #5D27
+崨 > jié; #5D28
+崩 > bēng; #5D29
+崪 > zú; #5D2A
+崫 > jué; #5D2B
+崬 > dōng; #5D2C
+崭 > zhăn; #5D2D
+崮 > gù; #5D2E
+崯 > yín; #5D2F
+崱 > zé; #5D31
+崲 > huáng; #5D32
+崳 > yú; #5D33
+崴 > wēi; #5D34
+崵 > yáng; #5D35
+崶 > fēng; #5D36
+崷 > qíu; #5D37
+崸 > dùn; #5D38
+崹 > tí; #5D39
+崺 > yĭ; #5D3A
+崻 > zhì; #5D3B
+崼 > shì; #5D3C
+崽 > zăi; #5D3D
+崾 > yăo; #5D3E
+崿 > è; #5D3F
+嵀 > zhù; #5D40
+嵁 > kān; #5D41
+嵂 > lǜ; #5D42
+嵃 > yăn; #5D43
+嵄 > mĕi; #5D44
+嵅 > gān; #5D45
+嵆 > jī; #5D46
+嵇 > jī; #5D47
+嵈 > huăn; #5D48
+嵉 > tíng; #5D49
+嵊 > shèng; #5D4A
+嵋 > méi; #5D4B
+嵌 > qiàn; #5D4C
+嵍 > wù; #5D4D
+嵎 > yú; #5D4E
+嵏 > zōng; #5D4F
+嵐 > lán; #5D50
+嵑 > jué; #5D51
+嵒 > yán; #5D52
+嵓 > yán; #5D53
+嵔 > wĕi; #5D54
+嵕 > zōng; #5D55
+嵖 > chá; #5D56
+嵗 > sùi; #5D57
+嵘 > róng; #5D58
+嵚 > qīn; #5D5A
+嵛 > yú; #5D5B
+嵝 > lŏu; #5D5D
+嵞 > tú; #5D5E
+嵟 > dūi; #5D5F
+嵠 > xī; #5D60
+嵡 > wēng; #5D61
+嵢 > cāng; #5D62
+嵣 > dāng; #5D63
+嵤 > hóng; #5D64
+嵥 > jié; #5D65
+嵦 > ái; #5D66
+嵧 > líu; #5D67
+嵨 > wŭ; #5D68
+嵩 > sōng; #5D69
+嵪 > qiāo; #5D6A
+嵫 > zī; #5D6B
+嵬 > wéi; #5D6C
+嵭 > bēng; #5D6D
+嵮 > diān; #5D6E
+嵯 > cúo; #5D6F
+嵰 > qiăn; #5D70
+嵱 > yŏng; #5D71
+嵲 > niè; #5D72
+嵳 > cúo; #5D73
+嵴 > jí; #5D74
+嵷 > sŏng; #5D77
+嵸 > zōng; #5D78
+嵹 > jiàng; #5D79
+嵺 > liáo; #5D7A
+嵻 > kang; #5D7B
+嵼 > chăn; #5D7C
+嵽 > dié; #5D7D
+嵾 > cēn; #5D7E
+嵿 > dĭng; #5D7F
+嶀 > tū; #5D80
+嶁 > lŏu; #5D81
+嶂 > zhàng; #5D82
+嶃 > zhăn; #5D83
+嶄 > zhăn; #5D84
+嶅 > áo; #5D85
+嶆 > cáo; #5D86
+嶇 > qū; #5D87
+嶈 > qiāng; #5D88
+嶉 > zūi; #5D89
+嶊 > zŭi; #5D8A
+嶋 > dăo; #5D8B
+嶌 > dăo; #5D8C
+嶍 > xí; #5D8D
+嶎 > yù; #5D8E
+嶏 > bó; #5D8F
+嶐 > lóng; #5D90
+嶑 > xiăng; #5D91
+嶒 > céng; #5D92
+嶓 > bō; #5D93
+嶔 > qīn; #5D94
+嶕 > jiāo; #5D95
+嶖 > yăn; #5D96
+嶗 > láo; #5D97
+嶘 > zhàn; #5D98
+嶙 > lín; #5D99
+嶚 > liáo; #5D9A
+嶛 > liáo; #5D9B
+嶜 > jīn; #5D9C
+嶝 > dèng; #5D9D
+嶞 > dùo; #5D9E
+嶟 > zūn; #5D9F
+嶠 > jiào; #5DA0
+嶡 > gùi; #5DA1
+嶢 > yáo; #5DA2
+嶣 > qiáo; #5DA3
+嶤 > yáo; #5DA4
+嶥 > jué; #5DA5
+嶦 > zhān; #5DA6
+嶧 > yì; #5DA7
+嶨 > xué; #5DA8
+嶩 > náo; #5DA9
+嶪 > yè; #5DAA
+嶫 > yè; #5DAB
+嶬 > yí; #5DAC
+嶭 > è; #5DAD
+嶮 > xiăn; #5DAE
+嶯 > jí; #5DAF
+嶰 > xiè; #5DB0
+嶱 > kĕ; #5DB1
+嶲 > xī; #5DB2
+嶳 > dì; #5DB3
+嶴 > ào; #5DB4
+嶵 > zŭi; #5DB5
+嶷 > nì; #5DB7
+嶸 > róng; #5DB8
+嶹 > dăo; #5DB9
+嶺 > lĭng; #5DBA
+嶻 > zá; #5DBB
+嶼 > yŭ; #5DBC
+嶽 > yuè; #5DBD
+嶾 > yĭn; #5DBE
+巀 > jiē; #5DC0
+巁 > lì; #5DC1
+巂 > sŭi; #5DC2
+巃 > lóng; #5DC3
+巄 > lóng; #5DC4
+巅 > diān; #5DC5
+巆 > yíng; #5DC6
+巇 > xī; #5DC7
+巈 > jú; #5DC8
+巉 > chán; #5DC9
+巊 > yĭng; #5DCA
+巋 > kūi; #5DCB
+巌 > yán; #5DCC
+巍 > wēi; #5DCD
+巎 > náo; #5DCE
+巏 > quán; #5DCF
+巐 > chăo; #5DD0
+巑 > cuán; #5DD1
+巒 > luán; #5DD2
+巓 > diān; #5DD3
+巔 > diān; #5DD4
+巖 > yán; #5DD6
+巗 > yán; #5DD7
+巘 > yăn; #5DD8
+巙 > náo; #5DD9
+巚 > yăn; #5DDA
+巛 > chuān; #5DDB
+巜 > gùi; #5DDC
+川 > chuān; #5DDD
+州 > zhōu; #5DDE
+巟 > huāng; #5DDF
+巠 > jīng; #5DE0
+巡 > xún; #5DE1
+巢 > cháo; #5DE2
+巣 > cháo; #5DE3
+巤 > liē; #5DE4
+工 > gōng; #5DE5
+左 > zŭo; #5DE6
+巧 > qiăo; #5DE7
+巨 > jù; #5DE8
+巩 > gŏng; #5DE9
+巫 > wū; #5DEB
+差 > chāi; #5DEE
+巯 > qíu; #5DEF
+巰 > qíu; #5DF0
+己 > jĭ; #5DF1
+已 > yĭ; #5DF2
+巳 > sì; #5DF3
+巴 > bā; #5DF4
+巵 > zhī; #5DF5
+巶 > zhāo; #5DF6
+巷 > xiàng; #5DF7
+巸 > yí; #5DF8
+巹 > jĭn; #5DF9
+巺 > xùn; #5DFA
+巻 > juàn; #5DFB
+巽 > xùn; #5DFD
+巾 > jīn; #5DFE
+巿 > fú; #5DFF
+帀 > zā; #5E00
+币 > bì; #5E01
+市 > shì; #5E02
+布 > bù; #5E03
+帄 > dīng; #5E04
+帅 > shuài; #5E05
+帆 > fān; #5E06
+帇 > niè; #5E07
+师 > shī; #5E08
+帉 > fēn; #5E09
+帊 > pà; #5E0A
+帋 > zhĭ; #5E0B
+希 > xī; #5E0C
+帍 > hù; #5E0D
+帎 > dàn; #5E0E
+帏 > wéi; #5E0F
+帐 > zhàng; #5E10
+帑 > tăng; #5E11
+帒 > dài; #5E12
+帓 > mà; #5E13
+帔 > pèi; #5E14
+帕 > pà; #5E15
+帖 > tiē; #5E16
+帗 > fú; #5E17
+帘 > lián; #5E18
+帙 > zhì; #5E19
+帚 > zhŏu; #5E1A
+帛 > bó; #5E1B
+帜 > zhì; #5E1C
+帝 > dì; #5E1D
+帞 > mò; #5E1E
+帟 > yì; #5E1F
+帠 > yì; #5E20
+帡 > píng; #5E21
+帢 > qià; #5E22
+帣 > juàn; #5E23
+帤 > rú; #5E24
+帥 > shuài; #5E25
+带 > dài; #5E26
+帧 > zhèng; #5E27
+帨 > shùi; #5E28
+帩 > qiào; #5E29
+帪 > zhēn; #5E2A
+師 > shī; #5E2B
+帬 > qún; #5E2C
+席 > xí; #5E2D
+帮 > bāng; #5E2E
+帯 > dài; #5E2F
+帰 > gūi; #5E30
+帱 > chóu; #5E31
+帲 > píng; #5E32
+帳 > zhàng; #5E33
+帴 > shā; #5E34
+帵 > wān; #5E35
+帶 > dài; #5E36
+帷 > wéi; #5E37
+常 > cháng; #5E38
+帹 > shà; #5E39
+帺 > qí; #5E3A
+帻 > zé; #5E3B
+帼 > gúo; #5E3C
+帽 > mào; #5E3D
+帾 > dŭ; #5E3E
+帿 > hóu; #5E3F
+幀 > zhèng; #5E40
+幁 > xū; #5E41
+幂 > mì; #5E42
+幃 > wéi; #5E43
+幄 > wò; #5E44
+幅 > fú; #5E45
+幆 > yì; #5E46
+幇 > bāng; #5E47
+幈 > píng; #5E48
+幊 > gōng; #5E4A
+幋 > pán; #5E4B
+幌 > huăng; #5E4C
+幍 > dāo; #5E4D
+幎 > mì; #5E4E
+幏 > jiā; #5E4F
+幐 > téng; #5E50
+幑 > hūi; #5E51
+幒 > zhōng; #5E52
+幓 > shān; #5E53
+幔 > màn; #5E54
+幕 > mù; #5E55
+幖 > biāo; #5E56
+幗 > gúo; #5E57
+幘 > zé; #5E58
+幙 > mù; #5E59
+幚 > bāng; #5E5A
+幛 > zhàng; #5E5B
+幜 > jĭong; #5E5C
+幝 > chăn; #5E5D
+幞 > fú; #5E5E
+幟 > zhì; #5E5F
+幠 > hū; #5E60
+幡 > fān; #5E61
+幢 > chuáng; #5E62
+幣 > bì; #5E63
+幦 > mì; #5E66
+幧 > qiāo; #5E67
+幨 > chān; #5E68
+幩 > fén; #5E69
+幪 > méng; #5E6A
+幫 > bāng; #5E6B
+幬 > chóu; #5E6C
+幭 > miè; #5E6D
+幮 > chú; #5E6E
+幯 > jié; #5E6F
+幰 > xiăn; #5E70
+幱 > lán; #5E71
+干 > gān; #5E72
+平 > píng; #5E73
+年 > nián; #5E74
+幵 > qiān; #5E75
+并 > bìng; #5E76
+幷 > bìng; #5E77
+幸 > xìng; #5E78
+幹 > gàn; #5E79
+幺 > yāo; #5E7A
+幻 > huàn; #5E7B
+幼 > yòu; #5E7C
+幽 > yōu; #5E7D
+幾 > jĭ; #5E7E
+广 > yăn; #5E7F
+庀 > pĭ; #5E80
+庁 > tīng; #5E81
+庂 > zè; #5E82
+広 > guăng; #5E83
+庄 > zhuāng; #5E84
+庅 > mo; #5E85
+庆 > qìng; #5E86
+庇 > bì; #5E87
+庈 > qín; #5E88
+庉 > dùn; #5E89
+床 > chuáng; #5E8A
+庋 > gŭi; #5E8B
+庌 > yă; #5E8C
+庍 > bài; #5E8D
+庎 > jiè; #5E8E
+序 > xù; #5E8F
+庐 > lú; #5E90
+庑 > wŭ; #5E91
+库 > kù; #5E93
+应 > yìng; #5E94
+底 > dĭ; #5E95
+庖 > páo; #5E96
+店 > diàn; #5E97
+庘 > yā; #5E98
+庙 > miào; #5E99
+庚 > gēng; #5E9A
+庛 > cī; #5E9B
+府 > fŭ; #5E9C
+庝 > tóng; #5E9D
+庞 > páng; #5E9E
+废 > fèi; #5E9F
+庠 > xiáng; #5EA0
+庡 > yĭ; #5EA1
+庢 > zhì; #5EA2
+庣 > tiāo; #5EA3
+庤 > zhì; #5EA4
+庥 > xīu; #5EA5
+度 > dù; #5EA6
+座 > zùo; #5EA7
+庨 > xiāo; #5EA8
+庩 > tú; #5EA9
+庪 > gŭi; #5EAA
+庫 > kù; #5EAB
+庬 > páng; #5EAC
+庭 > tíng; #5EAD
+庮 > yŏu; #5EAE
+庯 > bū; #5EAF
+庰 > dīng; #5EB0
+庱 > chĕng; #5EB1
+庲 > lái; #5EB2
+庳 > bēi; #5EB3
+庴 > jí; #5EB4
+庵 > ān; #5EB5
+庶 > shù; #5EB6
+康 > kāng; #5EB7
+庸 > yōng; #5EB8
+庹 > tŭo; #5EB9
+庺 > sōng; #5EBA
+庻 > shù; #5EBB
+庼 > qĭng; #5EBC
+庽 > yù; #5EBD
+庾 > yŭ; #5EBE
+庿 > miào; #5EBF
+廀 > sōu; #5EC0
+廁 > cè; #5EC1
+廂 > xiāng; #5EC2
+廃 > fèi; #5EC3
+廄 > jìu; #5EC4
+廅 > hé; #5EC5
+廆 > hùi; #5EC6
+廇 > lìu; #5EC7
+廈 > shà; #5EC8
+廉 > lián; #5EC9
+廊 > láng; #5ECA
+廋 > sōu; #5ECB
+廌 > jiàn; #5ECC
+廍 > pŏu; #5ECD
+廎 > qĭng; #5ECE
+廏 > jìu; #5ECF
+廐 > jìu; #5ED0
+廑 > qín; #5ED1
+廒 > áo; #5ED2
+廓 > kùo; #5ED3
+廔 > lóu; #5ED4
+廕 > yīn; #5ED5
+廖 > liào; #5ED6
+廗 > dài; #5ED7
+廘 > lù; #5ED8
+廙 > yì; #5ED9
+廚 > chú; #5EDA
+廛 > chán; #5EDB
+廜 > tū; #5EDC
+廝 > sī; #5EDD
+廞 > xīn; #5EDE
+廟 > miào; #5EDF
+廠 > chăng; #5EE0
+廡 > wŭ; #5EE1
+廢 > fèi; #5EE2
+廣 > guăng; #5EE3
+廥 > kuài; #5EE5
+廦 > bì; #5EE6
+廧 > qiáng; #5EE7
+廨 > xiè; #5EE8
+廩 > lĭn; #5EE9
+廪 > lĭn; #5EEA
+廫 > liáo; #5EEB
+廬 > lú; #5EEC
+廮 > yíng; #5EEE
+廯 > xiān; #5EEF
+廰 > tīng; #5EF0
+廱 > yōng; #5EF1
+廲 > lí; #5EF2
+廳 > tīng; #5EF3
+廴 > yĭn; #5EF4
+廵 > xún; #5EF5
+延 > yán; #5EF6
+廷 > tíng; #5EF7
+廸 > dí; #5EF8
+廹 > pò; #5EF9
+建 > jiàn; #5EFA
+廻 > húi; #5EFB
+廼 > năi; #5EFC
+廽 > húi; #5EFD
+廾 > gòng; #5EFE
+廿 > niàn; #5EFF
+开 > kāi; #5F00
+弁 > biàn; #5F01
+异 > yì; #5F02
+弃 > qì; #5F03
+弄 > nòng; #5F04
+弅 > fén; #5F05
+弆 > jŭ; #5F06
+弇 > yăn; #5F07
+弈 > yì; #5F08
+弉 > zàng; #5F09
+弊 > bì; #5F0A
+弋 > yì; #5F0B
+弌 > yī; #5F0C
+弍 > èr; #5F0D
+弎 > sān; #5F0E
+式 > shì; #5F0F
+弐 > èr; #5F10
+弑 > shì; #5F11
+弒 > shì; #5F12
+弓 > gōng; #5F13
+弔 > diào; #5F14
+引 > yĭn; #5F15
+弖 > hù; #5F16
+弗 > fú; #5F17
+弘 > hóng; #5F18
+弙 > wū; #5F19
+弚 > túi; #5F1A
+弛 > chí; #5F1B
+弜 > jiàng; #5F1C
+弝 > bà; #5F1D
+弞 > shĕn; #5F1E
+弟 > dì; #5F1F
+张 > zhāng; #5F20
+弡 > jué; #5F21
+弢 > tāo; #5F22
+弣 > fŭ; #5F23
+弤 > dĭ; #5F24
+弥 > mí; #5F25
+弦 > xián; #5F26
+弧 > hú; #5F27
+弨 > chāo; #5F28
+弩 > nŭ; #5F29
+弪 > jìng; #5F2A
+弫 > zhĕn; #5F2B
+弬 > yí; #5F2C
+弭 > mĭ; #5F2D
+弮 > quān; #5F2E
+弯 > wān; #5F2F
+弰 > shāo; #5F30
+弱 > rùo; #5F31
+弲 > xuān; #5F32
+弳 > jìng; #5F33
+弴 > dūn; #5F34
+張 > zhāng; #5F35
+弶 > jiàng; #5F36
+強 > qiáng; #5F37
+弸 > péng; #5F38
+弹 > dàn; #5F39
+强 > qiáng; #5F3A
+弻 > bì; #5F3B
+弼 > bì; #5F3C
+弽 > shè; #5F3D
+弾 > dàn; #5F3E
+弿 > jiăn; #5F3F
+彀 > gòu; #5F40
+彂 > fā; #5F42
+彃 > bì; #5F43
+彄 > kōu; #5F44
+彆 > biè; #5F46
+彇 > xiāo; #5F47
+彈 > dàn; #5F48
+彉 > kùo; #5F49
+彊 > qiáng; #5F4A
+彋 > hóng; #5F4B
+彌 > mí; #5F4C
+彍 > kùo; #5F4D
+彎 > wān; #5F4E
+彏 > jué; #5F4F
+彐 > jì; #5F50
+彑 > jì; #5F51
+归 > gūi; #5F52
+当 > dāng; #5F53
+彔 > lù; #5F54
+录 > lù; #5F55
+彖 > tuàn; #5F56
+彗 > hùi; #5F57
+彘 > zhì; #5F58
+彙 > hùi; #5F59
+彚 > hùi; #5F5A
+彛 > yí; #5F5B
+彜 > yí; #5F5C
+彝 > yí; #5F5D
+彞 > yí; #5F5E
+彟 > hùo; #5F5F
+彠 > hùo; #5F60
+彡 > shān; #5F61
+形 > xíng; #5F62
+彣 > wén; #5F63
+彤 > tóng; #5F64
+彥 > yàn; #5F65
+彦 > yàn; #5F66
+彧 > yù; #5F67
+彨 > chī; #5F68
+彩 > căi; #5F69
+彪 > biāo; #5F6A
+彫 > diāo; #5F6B
+彬 > bīn; #5F6C
+彭 > péng; #5F6D
+彮 > yŏng; #5F6E
+彯 > piāo; #5F6F
+彰 > zhāng; #5F70
+影 > yĭng; #5F71
+彲 > chī; #5F72
+彳 > chì; #5F73
+彴 > zhúo; #5F74
+彵 > tŭo; #5F75
+彶 > jí; #5F76
+彷 > páng; #5F77
+彸 > zhōng; #5F78
+役 > yì; #5F79
+彺 > wáng; #5F7A
+彻 > chè; #5F7B
+彼 > bĭ; #5F7C
+彽 > chí; #5F7D
+彾 > lĭng; #5F7E
+彿 > fú; #5F7F
+往 > wăng; #5F80
+征 > zhēng; #5F81
+徂 > cú; #5F82
+徃 > wăng; #5F83
+径 > jìng; #5F84
+待 > dài; #5F85
+徆 > xī; #5F86
+徇 > xùn; #5F87
+很 > hĕn; #5F88
+徉 > yáng; #5F89
+徊 > huái; #5F8A
+律 > lǜ; #5F8B
+後 > hòu; #5F8C
+徍 > wā; #5F8D
+徎 > chĕng; #5F8E
+徏 > zhì; #5F8F
+徐 > xú; #5F90
+徑 > jìng; #5F91
+徒 > tú; #5F92
+従 > cóng; #5F93
+徕 > lái; #5F95
+徖 > cóng; #5F96
+得 > dé; #5F97
+徘 > pái; #5F98
+徙 > xĭ; #5F99
+徛 > qì; #5F9B
+徜 > cháng; #5F9C
+徝 > zhì; #5F9D
+從 > cóng; #5F9E
+徟 > zhōu; #5F9F
+徠 > lái; #5FA0
+御 > yù; #5FA1
+徢 > xiè; #5FA2
+徣 > jiè; #5FA3
+徤 > jiàn; #5FA4
+徥 > chí; #5FA5
+徦 > jiă; #5FA6
+徧 > biàn; #5FA7
+徨 > huáng; #5FA8
+復 > fù; #5FA9
+循 > xún; #5FAA
+徫 > wĕi; #5FAB
+徬 > páng; #5FAC
+徭 > yáo; #5FAD
+微 > wēi; #5FAE
+徯 > xī; #5FAF
+徰 > zhēng; #5FB0
+徱 > piào; #5FB1
+徲 > chí; #5FB2
+徳 > dé; #5FB3
+徴 > zhēng; #5FB4
+徵 > zhēng; #5FB5
+徶 > biè; #5FB6
+德 > dé; #5FB7
+徸 > chōng; #5FB8
+徹 > chè; #5FB9
+徺 > jiăo; #5FBA
+徻 > wèi; #5FBB
+徼 > jiào; #5FBC
+徽 > hūi; #5FBD
+徾 > méi; #5FBE
+徿 > lòng; #5FBF
+忀 > xiāng; #5FC0
+忁 > bào; #5FC1
+忂 > qú; #5FC2
+心 > xīn; #5FC3
+忄 > shù' 'xīn' 'páng; #5FC4
+必 > bì; #5FC5
+忆 > yì; #5FC6
+忇 > lè; #5FC7
+忈 > rén; #5FC8
+忉 > dāo; #5FC9
+忊 > dìng; #5FCA
+忋 > găi; #5FCB
+忌 > jì; #5FCC
+忍 > rĕn; #5FCD
+忎 > rén; #5FCE
+忏 > chàn; #5FCF
+忐 > tăn; #5FD0
+忑 > tè; #5FD1
+忒 > tè; #5FD2
+忓 > gān; #5FD3
+忔 > qì; #5FD4
+忕 > shì; #5FD5
+忖 > cŭn; #5FD6
+志 > zhì; #5FD7
+忘 > wàng; #5FD8
+忙 > máng; #5FD9
+忚 > xī; #5FDA
+忛 > fán; #5FDB
+応 > yīng; #5FDC
+忝 > tiăn; #5FDD
+忞 > mín; #5FDE
+忟 > mín; #5FDF
+忠 > zhōng; #5FE0
+忡 > chōng; #5FE1
+忢 > wù; #5FE2
+忣 > jí; #5FE3
+忤 > wŭ; #5FE4
+忥 > xì; #5FE5
+忦 > yè; #5FE6
+忧 > yōu; #5FE7
+忨 > wàn; #5FE8
+忩 > cōng; #5FE9
+忪 > zhōng; #5FEA
+快 > kuài; #5FEB
+忬 > yù; #5FEC
+忭 > biàn; #5FED
+忮 > zhì; #5FEE
+忯 > qí; #5FEF
+忰 > cùi; #5FF0
+忱 > chén; #5FF1
+忲 > tài; #5FF2
+忳 > tún; #5FF3
+忴 > qián; #5FF4
+念 > niàn; #5FF5
+忶 > hún; #5FF6
+忷 > xīong; #5FF7
+忸 > nĭu; #5FF8
+忹 > wăng; #5FF9
+忺 > xiān; #5FFA
+忻 > xīn; #5FFB
+忼 > kāng; #5FFC
+忽 > hū; #5FFD
+忾 > kài; #5FFE
+忿 > fèn; #5FFF
+怀 > huái; #6000
+态 > tài; #6001
+怂 > sŏng; #6002
+怃 > wŭ; #6003
+怄 > òu; #6004
+怅 > chàng; #6005
+怆 > chuàng; #6006
+怇 > jù; #6007
+怈 > yì; #6008
+怉 > băo; #6009
+怊 > chāo; #600A
+怋 > mín; #600B
+怌 > pēi; #600C
+怍 > zùo; #600D
+怎 > zĕn; #600E
+怏 > yàng; #600F
+怐 > kòu; #6010
+怑 > bàn; #6011
+怒 > nù; #6012
+怓 > náo; #6013
+怔 > zhēng; #6014
+怕 > pà; #6015
+怖 > bù; #6016
+怗 > tiē; #6017
+怘 > gù; #6018
+怙 > hù; #6019
+怚 > jù; #601A
+怛 > dá; #601B
+怜 > lián; #601C
+思 > sī; #601D
+怞 > chōu; #601E
+怟 > dì; #601F
+怠 > dài; #6020
+怡 > yí; #6021
+怢 > tú; #6022
+怣 > yóu; #6023
+怤 > fū; #6024
+急 > jí; #6025
+怦 > pēng; #6026
+性 > xìng; #6027
+怨 > yuàn; #6028
+怩 > ní; #6029
+怪 > guài; #602A
+怫 > fú; #602B
+怬 > xì; #602C
+怭 > bì; #602D
+怮 > yōu; #602E
+怯 > qiè; #602F
+怰 > xuàn; #6030
+怱 > cōng; #6031
+怲 > bĭng; #6032
+怳 > huăng; #6033
+怴 > xù; #6034
+怵 > chù; #6035
+怶 > pī; #6036
+怷 > xī; #6037
+怸 > xī; #6038
+怹 > tān; #6039
+总 > zŏng; #603B
+怼 > dùi; #603C
+怿 > yì; #603F
+恀 > chĭ; #6040
+恁 > rèn; #6041
+恂 > xún; #6042
+恃 > shì; #6043
+恄 > xì; #6044
+恅 > lăo; #6045
+恆 > héng; #6046
+恇 > kuāng; #6047
+恈 > mú; #6048
+恉 > zhĭ; #6049
+恊 > xié; #604A
+恋 > liàn; #604B
+恌 > tiāo; #604C
+恍 > huăng; #604D
+恎 > dié; #604E
+恏 > hăo; #604F
+恐 > kŏng; #6050
+恑 > gŭi; #6051
+恒 > héng; #6052
+恓 > xī; #6053
+恔 > xiào; #6054
+恕 > shù; #6055
+恖 > sī; #6056
+恗 > kuă; #6057
+恘 > qīu; #6058
+恙 > yàng; #6059
+恚 > hùi; #605A
+恛 > húi; #605B
+恜 > chì; #605C
+恝 > jiá; #605D
+恞 > yí; #605E
+恟 > xīong; #605F
+恠 > guài; #6060
+恡 > lìn; #6061
+恢 > hūi; #6062
+恣 > zì; #6063
+恤 > xù; #6064
+恥 > chĭ; #6065
+恦 > xiàng; #6066
+恧 > nǜ; #6067
+恨 > hèn; #6068
+恩 > ēn; #6069
+恪 > kè; #606A
+恫 > tōng; #606B
+恬 > tián; #606C
+恭 > gōng; #606D
+恮 > quán; #606E
+息 > xī; #606F
+恰 > qià; #6070
+恱 > yuè; #6071
+恲 > pēng; #6072
+恳 > kĕn; #6073
+恴 > dé; #6074
+恵 > hùi; #6075
+恶 > è; #6076
+恸 > tòng; #6078
+恹 > yàn; #6079
+恺 > kăi; #607A
+恻 > cè; #607B
+恼 > năo; #607C
+恽 > yùn; #607D
+恾 > máng; #607E
+恿 > yŏng; #607F
+悀 > yŏng; #6080
+悁 > yuān; #6081
+悂 > pī; #6082
+悃 > kŭn; #6083
+悄 > qiăo; #6084
+悅 > yuè; #6085
+悆 > yù; #6086
+悇 > yù; #6087
+悈 > jiè; #6088
+悉 > xī; #6089
+悊 > zhé; #608A
+悋 > lìn; #608B
+悌 > tì; #608C
+悍 > hàn; #608D
+悎 > hào; #608E
+悏 > qiè; #608F
+悐 > tì; #6090
+悑 > bù; #6091
+悒 > yì; #6092
+悓 > qiàn; #6093
+悔 > hŭi; #6094
+悕 > xī; #6095
+悖 > bèi; #6096
+悗 > mán; #6097
+悘 > yī; #6098
+悙 > hēng; #6099
+悚 > sŏng; #609A
+悛 > quān; #609B
+悜 > chĕng; #609C
+悝 > hūi; #609D
+悞 > wù; #609E
+悟 > wù; #609F
+悠 > yōu; #60A0
+悡 > lí; #60A1
+悢 > liàng; #60A2
+患 > huàn; #60A3
+悤 > cōng; #60A4
+悥 > yì; #60A5
+悦 > yuè; #60A6
+悧 > lì; #60A7
+您 > nín; #60A8
+悩 > năo; #60A9
+悪 > è; #60AA
+悫 > què; #60AB
+悬 > xuán; #60AC
+悭 > qiān; #60AD
+悮 > wù; #60AE
+悯 > mĭn; #60AF
+悰 > cóng; #60B0
+悱 > fĕi; #60B1
+悲 > bēi; #60B2
+悳 > dúo; #60B3
+悴 > cùi; #60B4
+悵 > chàng; #60B5
+悶 > mèn; #60B6
+悷 > lì; #60B7
+悸 > jì; #60B8
+悹 > guàn; #60B9
+悺 > guàn; #60BA
+悻 > xìng; #60BB
+悼 > dào; #60BC
+悽 > qī; #60BD
+悾 > kōng; #60BE
+悿 > tiăn; #60BF
+惀 > lún; #60C0
+惁 > xī; #60C1
+惂 > kăn; #60C2
+惃 > kūn; #60C3
+惄 > nì; #60C4
+情 > qíng; #60C5
+惆 > chóu; #60C6
+惇 > dūn; #60C7
+惈 > gŭo; #60C8
+惉 > chān; #60C9
+惊 > liáng; #60CA
+惋 > wăn; #60CB
+惌 > yuān; #60CC
+惍 > jīn; #60CD
+惎 > jì; #60CE
+惏 > lín; #60CF
+惐 > yù; #60D0
+惑 > hùo; #60D1
+惒 > hé; #60D2
+惓 > quán; #60D3
+惔 > tán; #60D4
+惕 > tì; #60D5
+惖 > tì; #60D6
+惗 > niē; #60D7
+惘 > wăng; #60D8
+惙 > chùo; #60D9
+惚 > bū; #60DA
+惛 > hūn; #60DB
+惜 > xī; #60DC
+惝 > tăng; #60DD
+惞 > xīn; #60DE
+惟 > wéi; #60DF
+惠 > hùi; #60E0
+惡 > è; #60E1
+惢 > rŭi; #60E2
+惣 > zŏng; #60E3
+惤 > jiān; #60E4
+惥 > yŏng; #60E5
+惦 > diàn; #60E6
+惧 > jù; #60E7
+惨 > căn; #60E8
+惩 > chéng; #60E9
+惪 > dé; #60EA
+惫 > bèi; #60EB
+惬 > qiè; #60EC
+惭 > cán; #60ED
+惮 > dàn; #60EE
+惯 > guàn; #60EF
+惰 > dùo; #60F0
+惱 > năo; #60F1
+惲 > yùn; #60F2
+想 > xiăng; #60F3
+惴 > zhùi; #60F4
+惵 > diè; #60F5
+惶 > huáng; #60F6
+惷 > chŭn; #60F7
+惸 > qíong; #60F8
+惹 > rĕ; #60F9
+惺 > xīng; #60FA
+惻 > cè; #60FB
+惼 > biăn; #60FC
+惽 > hūn; #60FD
+惾 > zōng; #60FE
+惿 > tí; #60FF
+愀 > qiăo; #6100
+愁 > chóu; #6101
+愂 > bèi; #6102
+愃 > xuān; #6103
+愄 > wēi; #6104
+愅 > gé; #6105
+愆 > qiān; #6106
+愇 > wĕi; #6107
+愈 > yù; #6108
+愉 > yú; #6109
+愊 > bì; #610A
+愋 > xuān; #610B
+愌 > huàn; #610C
+愍 > mĭn; #610D
+愎 > bì; #610E
+意 > yì; #610F
+愐 > miăn; #6110
+愑 > yŏng; #6111
+愒 > kài; #6112
+愓 > dàng; #6113
+愔 > yīn; #6114
+愕 > è; #6115
+愖 > chén; #6116
+愗 > mòu; #6117
+愘 > kè; #6118
+愙 > kè; #6119
+愚 > yú; #611A
+愛 > ài; #611B
+愜 > qiè; #611C
+愝 > yăn; #611D
+愞 > nùo; #611E
+感 > găn; #611F
+愠 > yùn; #6120
+愡 > zŏng; #6121
+愢 > sāi; #6122
+愣 > léng; #6123
+愤 > fèn; #6124
+愦 > kùi; #6126
+愧 > kùi; #6127
+愨 > què; #6128
+愩 > gōng; #6129
+愪 > yún; #612A
+愫 > sù; #612B
+愬 > sù; #612C
+愭 > qí; #612D
+愮 > yáo; #612E
+愯 > sŏng; #612F
+愰 > huăng; #6130
+愱 > jí; #6131
+愲 > gŭ; #6132
+愳 > jù; #6133
+愴 > chuàng; #6134
+愵 > nì; #6135
+愶 > xié; #6136
+愷 > kăi; #6137
+愸 > zhĕng; #6138
+愹 > yŏng; #6139
+愺 > căo; #613A
+愻 > sùn; #613B
+愼 > shèn; #613C
+愽 > bó; #613D
+愾 > kài; #613E
+愿 > yuàn; #613F
+慀 > xié; #6140
+慁 > hùn; #6141
+慂 > yŏng; #6142
+慃 > yăng; #6143
+慄 > lì; #6144
+慅 > sāo; #6145
+慆 > tāo; #6146
+慇 > yīn; #6147
+慈 > cí; #6148
+慉 > xù; #6149
+慊 > qiàn; #614A
+態 > tài; #614B
+慌 > huāng; #614C
+慍 > yùn; #614D
+慎 > shèn; #614E
+慏 > mĭng; #614F
+慑 > shè; #6151
+慒 > cóng; #6152
+慓 > piào; #6153
+慔 > mò; #6154
+慕 > mù; #6155
+慖 > gúo; #6156
+慗 > chì; #6157
+慘 > căn; #6158
+慙 > cán; #6159
+慚 > cán; #615A
+慛 > cúi; #615B
+慜 > mĭn; #615C
+慝 > tè; #615D
+慞 > zhāng; #615E
+慟 > tòng; #615F
+慠 > ào; #6160
+慡 > shuăng; #6161
+慢 > màn; #6162
+慣 > guàn; #6163
+慤 > què; #6164
+慥 > zào; #6165
+慦 > jìu; #6166
+慧 > hùi; #6167
+慨 > kăi; #6168
+慩 > lián; #6169
+慪 > òu; #616A
+慫 > sŏng; #616B
+慬 > jĭn; #616C
+慭 > yìn; #616D
+慮 > lǜ; #616E
+慯 > shāng; #616F
+慰 > wèi; #6170
+慱 > tuán; #6171
+慲 > mán; #6172
+慳 > qiān; #6173
+慴 > shè; #6174
+慵 > yōng; #6175
+慶 > qìng; #6176
+慷 > kāng; #6177
+慸 > dì; #6178
+慹 > zhí; #6179
+慺 > lóu; #617A
+慻 > juàn; #617B
+慼 > qī; #617C
+慽 > qī; #617D
+慾 > yù; #617E
+慿 > píng; #617F
+憀 > liáo; #6180
+憁 > cōng; #6181
+憂 > yōu; #6182
+憃 > chōng; #6183
+憄 > zhì; #6184
+憅 > tòng; #6185
+憆 > chēng; #6186
+憇 > qì; #6187
+憈 > qū; #6188
+憉 > péng; #6189
+憊 > bèi; #618A
+憋 > biē; #618B
+憌 > chún; #618C
+憍 > jiāo; #618D
+憎 > zēng; #618E
+憏 > chì; #618F
+憐 > lián; #6190
+憑 > píng; #6191
+憒 > kùi; #6192
+憓 > hùi; #6193
+憔 > qiáo; #6194
+憕 > chéng; #6195
+憖 > yìn; #6196
+憗 > yìn; #6197
+憘 > xĭ; #6198
+憙 > xĭ; #6199
+憚 > dàn; #619A
+憛 > tán; #619B
+憜 > dŭo; #619C
+憝 > dùi; #619D
+憞 > dùi; #619E
+憟 > sù; #619F
+憠 > jué; #61A0
+憡 > cè; #61A1
+憢 > xiāo; #61A2
+憣 > fán; #61A3
+憤 > fèn; #61A4
+憥 > láo; #61A5
+憦 > lào; #61A6
+憧 > chōng; #61A7
+憨 > hān; #61A8
+憩 > qì; #61A9
+憪 > xián; #61AA
+憫 > mĭn; #61AB
+憬 > jĭng; #61AC
+憭 > liăo; #61AD
+憮 > wŭ; #61AE
+憯 > căn; #61AF
+憰 > jué; #61B0
+憱 > cù; #61B1
+憲 > xiàn; #61B2
+憳 > tăn; #61B3
+憴 > shéng; #61B4
+憵 > pī; #61B5
+憶 > yì; #61B6
+憷 > chŭ; #61B7
+憸 > xiān; #61B8
+憹 > náo; #61B9
+憺 > dàn; #61BA
+憻 > tăn; #61BB
+憼 > jĭng; #61BC
+憽 > sōng; #61BD
+憾 > hàn; #61BE
+憿 > jiāo; #61BF
+懀 > wài; #61C0
+懁 > huán; #61C1
+懂 > dŏng; #61C2
+懃 > qín; #61C3
+懄 > qín; #61C4
+懅 > qú; #61C5
+懆 > căo; #61C6
+懇 > kĕn; #61C7
+懈 > xiè; #61C8
+應 > yìng; #61C9
+懊 > ào; #61CA
+懋 > mào; #61CB
+懌 > yì; #61CC
+懍 > lĭn; #61CD
+懎 > sè; #61CE
+懏 > jùn; #61CF
+懐 > huái; #61D0
+懑 > mèn; #61D1
+懒 > lăn; #61D2
+懓 > ài; #61D3
+懔 > lĭn; #61D4
+懕 > yān; #61D5
+懖 > guā; #61D6
+懗 > xià; #61D7
+懘 > chì; #61D8
+懙 > yŭ; #61D9
+懚 > yìn; #61DA
+懛 > dāi; #61DB
+懜 > mèng; #61DC
+懝 > ài; #61DD
+懞 > méng; #61DE
+懟 > dùi; #61DF
+懠 > qí; #61E0
+懡 > mŏ; #61E1
+懢 > lán; #61E2
+懣 > mèn; #61E3
+懤 > chóu; #61E4
+懥 > zhì; #61E5
+懦 > nùo; #61E6
+懧 > nùo; #61E7
+懨 > yān; #61E8
+懩 > yăng; #61E9
+懪 > bó; #61EA
+懫 > zhí; #61EB
+懬 > kuàng; #61EC
+懭 > kuàng; #61ED
+懮 > yŏu; #61EE
+懯 > fū; #61EF
+懰 > líu; #61F0
+懱 > miè; #61F1
+懲 > chéng; #61F2
+懴 > chàn; #61F4
+懵 > méng; #61F5
+懶 > lăn; #61F6
+懷 > huái; #61F7
+懸 > xuán; #61F8
+懹 > ràng; #61F9
+懺 > chàn; #61FA
+懻 > jì; #61FB
+懼 > jù; #61FC
+懽 > huān; #61FD
+懾 > shè; #61FE
+懿 > yì; #61FF
+戀 > liàn; #6200
+戁 > năn; #6201
+戂 > mí; #6202
+戃 > tăng; #6203
+戄 > jué; #6204
+戅 > gàng; #6205
+戆 > gàng; #6206
+戇 > gàng; #6207
+戈 > gē; #6208
+戉 > yuè; #6209
+戊 > wù; #620A
+戋 > jiān; #620B
+戌 > xū; #620C
+戍 > shù; #620D
+戎 > róng; #620E
+戏 > xì; #620F
+成 > chéng; #6210
+我 > wŏ; #6211
+戒 > jiè; #6212
+戓 > gē; #6213
+戔 > jiān; #6214
+戕 > qiāng; #6215
+或 > hùo; #6216
+戗 > qiāng; #6217
+战 > zhàn; #6218
+戙 > dòng; #6219
+戚 > qī; #621A
+戛 > jiá; #621B
+戜 > dié; #621C
+戝 > zéi; #621D
+戞 > jiá; #621E
+戟 > jĭ; #621F
+戠 > shì; #6220
+戡 > kān; #6221
+戢 > jí; #6222
+戣 > kúi; #6223
+戤 > gài; #6224
+戥 > dĕng; #6225
+戦 > zhàn; #6226
+戧 > chuāng; #6227
+戨 > gē; #6228
+戩 > jiăn; #6229
+截 > jié; #622A
+戫 > yù; #622B
+戬 > jiăn; #622C
+戭 > yăn; #622D
+戮 > lù; #622E
+戯 > xì; #622F
+戰 > zhàn; #6230
+戱 > xì; #6231
+戲 > xì; #6232
+戳 > chūo; #6233
+戴 > dài; #6234
+戵 > qú; #6235
+戶 > hù; #6236
+户 > hù; #6237
+戸 > hù; #6238
+戹 > è; #6239
+戺 > shì; #623A
+戻 > lì; #623B
+戼 > măo; #623C
+戽 > hù; #623D
+戾 > lì; #623E
+房 > fáng; #623F
+所 > sŭo; #6240
+扁 > biăn; #6241
+扂 > diàn; #6242
+扃 > jīong; #6243
+扄 > shăng; #6244
+扅 > yí; #6245
+扆 > yĭ; #6246
+扇 > shàn; #6247
+扈 > hù; #6248
+扉 > fēi; #6249
+扊 > yăn; #624A
+手 > shŏu; #624B
+扌 > t̄' 'shŏu' 'páng; #624C
+才 > cái; #624D
+扎 > zhā; #624E
+扏 > qíu; #624F
+扐 > lè; #6250
+扑 > bū; #6251
+扒 > bā; #6252
+打 > dă; #6253
+扔 > rēng; #6254
+払 > fú; #6255
+扗 > zài; #6257
+托 > tūo; #6258
+扙 > zhàng; #6259
+扚 > diāo; #625A
+扛 > káng; #625B
+扜 > yū; #625C
+扝 > kū; #625D
+扞 > hàn; #625E
+扟 > shēn; #625F
+扠 > chā; #6260
+扡 > yĭ; #6261
+扢 > gŭ; #6262
+扣 > kòu; #6263
+扤 > wù; #6264
+扥 > tūo; #6265
+扦 > qiān; #6266
+执 > zhí; #6267
+扨 > rèn; #6268
+扩 > kùo; #6269
+扪 > mén; #626A
+扫 > săo; #626B
+扬 > yáng; #626C
+扭 > nĭu; #626D
+扮 > bàn; #626E
+扯 > chĕ; #626F
+扰 > răo; #6270
+扱 > xī; #6271
+扲 > qián; #6272
+扳 > bān; #6273
+扴 > jiá; #6274
+扵 > yú; #6275
+扶 > fú; #6276
+扷 > ào; #6277
+扸 > xī; #6278
+批 > pī; #6279
+扺 > zhĭ; #627A
+扻 > zì; #627B
+扼 > è; #627C
+扽 > dùn; #627D
+找 > zhăo; #627E
+承 > chéng; #627F
+技 > jì; #6280
+抁 > yăn; #6281
+抂 > kuáng; #6282
+抃 > biàn; #6283
+抄 > chāo; #6284
+抅 > jū; #6285
+抆 > wèn; #6286
+抇 > hú; #6287
+抈 > yuè; #6288
+抉 > jué; #6289
+把 > bă; #628A
+抋 > qìn; #628B
+抌 > zhĕn; #628C
+抍 > zhĕng; #628D
+抎 > yŭn; #628E
+抏 > wán; #628F
+抐 > nù; #6290
+抑 > yì; #6291
+抒 > shū; #6292
+抓 > zhuā; #6293
+抔 > póu; #6294
+投 > tóu; #6295
+抖 > dŏu; #6296
+抗 > kàng; #6297
+折 > zhé; #6298
+抙 > póu; #6299
+抚 > fŭ; #629A
+抛 > pāo; #629B
+抜 > bá; #629C
+抝 > ăo; #629D
+択 > zé; #629E
+抟 > tuán; #629F
+抠 > kōu; #62A0
+抡 > lún; #62A1
+抢 > qiăng; #62A2
+护 > hù; #62A4
+报 > bào; #62A5
+抦 > bĭng; #62A6
+抧 > zhĭ; #62A7
+抨 > pēng; #62A8
+抩 > tān; #62A9
+抪 > pū; #62AA
+披 > pī; #62AB
+抬 > tái; #62AC
+抭 > yăo; #62AD
+抮 > zhĕn; #62AE
+抯 > zhā; #62AF
+抰 > yăng; #62B0
+抱 > bào; #62B1
+抲 > hē; #62B2
+抳 > nĭ; #62B3
+抴 > yì; #62B4
+抵 > dĭ; #62B5
+抶 > chì; #62B6
+抷 > pī; #62B7
+抸 > zā; #62B8
+抹 > mŏ; #62B9
+抺 > mŏ; #62BA
+抻 > shèn; #62BB
+押 > yā; #62BC
+抽 > chōu; #62BD
+抾 > qū; #62BE
+抿 > mĭn; #62BF
+拀 > chù; #62C0
+拁 > jiā; #62C1
+拂 > fú; #62C2
+拃 > zhăn; #62C3
+拄 > zhŭ; #62C4
+担 > dàn; #62C5
+拆 > chāi; #62C6
+拇 > mŭ; #62C7
+拈 > nián; #62C8
+拉 > lā; #62C9
+拊 > fŭ; #62CA
+拋 > pāo; #62CB
+拌 > bàn; #62CC
+拍 > pāi; #62CD
+拎 > līng; #62CE
+拏 > ná; #62CF
+拐 > guăi; #62D0
+拑 > qián; #62D1
+拒 > jù; #62D2
+拓 > tùo; #62D3
+拔 > bá; #62D4
+拕 > tūo; #62D5
+拖 > tūo; #62D6
+拗 > ăo; #62D7
+拘 > jū; #62D8
+拙 > zhúo; #62D9
+拚 > pàn; #62DA
+招 > zhāo; #62DB
+拜 > bài; #62DC
+拝 > bài; #62DD
+拞 > dĭ; #62DE
+拟 > nĭ; #62DF
+拠 > jù; #62E0
+拡 > kùo; #62E1
+拢 > lŏng; #62E2
+拣 > jiăn; #62E3
+拥 > yŏng; #62E5
+拦 > lán; #62E6
+拧 > níng; #62E7
+拨 > bō; #62E8
+择 > zé; #62E9
+拪 > qiān; #62EA
+拫 > hén; #62EB
+括 > guā; #62EC
+拭 > shì; #62ED
+拮 > jié; #62EE
+拯 > zhĕng; #62EF
+拰 > nĭn; #62F0
+拱 > gŏng; #62F1
+拲 > gŏng; #62F2
+拳 > quán; #62F3
+拴 > shuān; #62F4
+拵 > cún; #62F5
+拶 > zăn; #62F6
+拷 > kăo; #62F7
+拸 > chĭ; #62F8
+拹 > xié; #62F9
+拺 > cè; #62FA
+拻 > hūi; #62FB
+拼 > pīn; #62FC
+拽 > zhuāi; #62FD
+拾 > shí; #62FE
+拿 > ná; #62FF
+挀 > bò; #6300
+持 > chí; #6301
+挂 > guà; #6302
+挃 > zhì; #6303
+挄 > kùo; #6304
+挅 > dŭo; #6305
+挆 > dŭo; #6306
+指 > zhĭ; #6307
+挈 > qiè; #6308
+按 > àn; #6309
+挊 > nòng; #630A
+挋 > zhèn; #630B
+挌 > gé; #630C
+挍 > jiào; #630D
+挎 > kū; #630E
+挏 > dòng; #630F
+挐 > rú; #6310
+挑 > tiāo; #6311
+挒 > liè; #6312
+挓 > zhā; #6313
+挔 > lǚ; #6314
+挕 > dié; #6315
+挖 > wā; #6316
+挗 > jué; #6317
+挙 > jŭ; #6319
+挚 > zhì; #631A
+挛 > luán; #631B
+挜 > yà; #631C
+挝 > zhuā; #631D
+挞 > tà; #631E
+挟 > xié; #631F
+挠 > náo; #6320
+挡 > dăng; #6321
+挢 > jiăo; #6322
+挣 > zhēng; #6323
+挤 > jĭ; #6324
+挥 > hūi; #6325
+挦 > xún; #6326
+挨 > āi; #6328
+挩 > tūo; #6329
+挪 > núo; #632A
+挫 > cùo; #632B
+挬 > bó; #632C
+挭 > gĕng; #632D
+挮 > tĭ; #632E
+振 > zhèn; #632F
+挰 > chéng; #6330
+挱 > sūo; #6331
+挲 > sūo; #6332
+挳 > kēng; #6333
+挴 > mĕi; #6334
+挵 > lòng; #6335
+挶 > jú; #6336
+挷 > péng; #6337
+挸 > jiăn; #6338
+挹 > yì; #6339
+挺 > tĭng; #633A
+挻 > shān; #633B
+挼 > nùo; #633C
+挽 > wăn; #633D
+挾 > xié; #633E
+挿 > chā; #633F
+捀 > fēng; #6340
+捁 > jiăo; #6341
+捂 > wŭ; #6342
+捃 > jùn; #6343
+捄 > jìu; #6344
+捅 > tŏng; #6345
+捆 > kŭn; #6346
+捇 > hùo; #6347
+捈 > tú; #6348
+捉 > zhūo; #6349
+捊 > póu; #634A
+捋 > lè; #634B
+捌 > bā; #634C
+捍 > hàn; #634D
+捎 > shāo; #634E
+捏 > niē; #634F
+捐 > juān; #6350
+捑 > zé; #6351
+捒 > sŏng; #6352
+捓 > yé; #6353
+捔 > jué; #6354
+捕 > bŭ; #6355
+捖 > huán; #6356
+捗 > bù; #6357
+捘 > zùn; #6358
+捙 > yì; #6359
+捚 > zhāi; #635A
+捛 > lǚ; #635B
+捜 > sōu; #635C
+捝 > tūo; #635D
+捞 > lāo; #635E
+损 > sŭn; #635F
+捠 > bāng; #6360
+捡 > jiăn; #6361
+换 > huàn; #6362
+捣 > dăo; #6363
+捥 > wàn; #6365
+捦 > qín; #6366
+捧 > pĕng; #6367
+捨 > shĕ; #6368
+捩 > liè; #6369
+捪 > mín; #636A
+捫 > mén; #636B
+捬 > fŭ; #636C
+捭 > băi; #636D
+据 > jù; #636E
+捯 > dăo; #636F
+捰 > wŏ; #6370
+捱 > ái; #6371
+捲 > juăn; #6372
+捳 > yuè; #6373
+捴 > zŏng; #6374
+捵 > chĕn; #6375
+捶 > chúi; #6376
+捷 > jié; #6377
+捸 > tū; #6378
+捹 > bèn; #6379
+捺 > nà; #637A
+捻 > niăn; #637B
+捼 > núo; #637C
+捽 > zú; #637D
+捾 > wò; #637E
+捿 > xī; #637F
+掀 > xiān; #6380
+掁 > chéng; #6381
+掂 > diān; #6382
+掃 > săo; #6383
+掄 > lún; #6384
+掅 > qìng; #6385
+掆 > gāng; #6386
+掇 > dúo; #6387
+授 > shòu; #6388
+掉 > diào; #6389
+掊 > póu; #638A
+掋 > dĭ; #638B
+掌 > zhăng; #638C
+掍 > gŭn; #638D
+掎 > jĭ; #638E
+掏 > tāo; #638F
+掐 > qiā; #6390
+掑 > qí; #6391
+排 > pái; #6392
+掓 > shú; #6393
+掔 > qiān; #6394
+掕 > lìng; #6395
+掖 > yì; #6396
+掗 > yà; #6397
+掘 > jué; #6398
+掙 > zhēng; #6399
+掚 > liăng; #639A
+掛 > guà; #639B
+掜 > yĭ; #639C
+掝 > hùo; #639D
+掞 > shàn; #639E
+掟 > zhĕng; #639F
+掠 > lǜe; #63A0
+採 > căi; #63A1
+探 > tàn; #63A2
+掣 > chè; #63A3
+掤 > bīng; #63A4
+接 > jiē; #63A5
+掦 > tì; #63A6
+控 > kòng; #63A7
+推 > tūi; #63A8
+掩 > yăn; #63A9
+措 > cùo; #63AA
+掫 > zōu; #63AB
+掬 > jú; #63AC
+掭 > tiàn; #63AD
+掮 > qián; #63AE
+掯 > kèn; #63AF
+掰 > bāi; #63B0
+掱 > shŏu; #63B1
+掲 > jiē; #63B2
+掳 > lŭ; #63B3
+掴 > gúo; #63B4
+掷 > zhí; #63B7
+掸 > dăn; #63B8
+掺 > xiān; #63BA
+掻 > sāo; #63BB
+掼 > guàn; #63BC
+掽 > pèng; #63BD
+掾 > yuàn; #63BE
+掿 > nùo; #63BF
+揀 > jiăn; #63C0
+揁 > zhēn; #63C1
+揂 > jīu; #63C2
+揃 > jiān; #63C3
+揄 > yú; #63C4
+揅 > yán; #63C5
+揆 > kúi; #63C6
+揇 > năn; #63C7
+揈 > hōng; #63C8
+揉 > róu; #63C9
+揊 > pì; #63CA
+揋 > wēi; #63CB
+揌 > sāi; #63CC
+揍 > zòu; #63CD
+揎 > xuān; #63CE
+描 > miáo; #63CF
+提 > tí; #63D0
+揑 > niē; #63D1
+插 > chā; #63D2
+揓 > shì; #63D3
+揔 > zŏng; #63D4
+揕 > zhèn; #63D5
+揖 > yī; #63D6
+揗 > shŭn; #63D7
+揘 > héng; #63D8
+揙 > biàn; #63D9
+揚 > yáng; #63DA
+換 > huàn; #63DB
+揜 > yăn; #63DC
+揝 > zuàn; #63DD
+揞 > ăn; #63DE
+揟 > xū; #63DF
+揠 > yà; #63E0
+握 > wò; #63E1
+揢 > kè; #63E2
+揣 > chuăi; #63E3
+揤 > jí; #63E4
+揥 > tì; #63E5
+揦 > lá; #63E6
+揧 > là; #63E7
+揨 > chéng; #63E8
+揩 > kāi; #63E9
+揪 > jīu; #63EA
+揫 > jīu; #63EB
+揬 > tú; #63EC
+揭 > jiē; #63ED
+揮 > hūi; #63EE
+揯 > gēng; #63EF
+揰 > chòng; #63F0
+揱 > shùo; #63F1
+揲 > shé; #63F2
+揳 > xiè; #63F3
+援 > yuán; #63F4
+揵 > qián; #63F5
+揶 > yé; #63F6
+揷 > chā; #63F7
+揸 > zhā; #63F8
+揹 > bēi; #63F9
+揺 > yáo; #63FA
+揽 > lăn; #63FD
+揾 > wèn; #63FE
+揿 > qìn; #63FF
+搀 > chān; #6400
+搁 > gē; #6401
+搂 > lŏu; #6402
+搃 > zŏng; #6403
+搄 > gēng; #6404
+搅 > jiăo; #6405
+搆 > gòu; #6406
+搇 > qìn; #6407
+搈 > yŏng; #6408
+搉 > què; #6409
+搊 > chōu; #640A
+搋 > chĭ; #640B
+搌 > zhăn; #640C
+損 > sŭn; #640D
+搎 > sūn; #640E
+搏 > bó; #640F
+搐 > chù; #6410
+搑 > rŏng; #6411
+搒 > bèng; #6412
+搓 > cūo; #6413
+搔 > sāo; #6414
+搕 > kè; #6415
+搖 > yáo; #6416
+搗 > dăo; #6417
+搘 > zhī; #6418
+搙 > nù; #6419
+搚 > xié; #641A
+搛 > jiān; #641B
+搜 > sōu; #641C
+搝 > qĭu; #641D
+搞 > găo; #641E
+搟 > xiăn; #641F
+搠 > shùo; #6420
+搡 > săng; #6421
+搢 > jìn; #6422
+搣 > miè; #6423
+搤 > è; #6424
+搥 > chúi; #6425
+搦 > nùo; #6426
+搧 > shān; #6427
+搨 > tà; #6428
+搩 > jié; #6429
+搪 > táng; #642A
+搫 > pán; #642B
+搬 > bān; #642C
+搭 > dā; #642D
+搮 > lì; #642E
+搯 > tāo; #642F
+搰 > hú; #6430
+搱 > zhì; #6431
+搲 > wā; #6432
+搳 > xiá; #6433
+搴 > qiān; #6434
+搵 > wèn; #6435
+搶 > qiăng; #6436
+搷 > tián; #6437
+搸 > zhēn; #6438
+搹 > è; #6439
+携 > xī; #643A
+搻 > nùo; #643B
+搼 > quán; #643C
+搽 > chá; #643D
+搾 > zhà; #643E
+搿 > gé; #643F
+摀 > wŭ; #6440
+摁 > èn; #6441
+摂 > shè; #6442
+摃 > káng; #6443
+摄 > shè; #6444
+摅 > shū; #6445
+摆 > băi; #6446
+摇 > yáo; #6447
+摈 > bìn; #6448
+摉 > sōu; #6449
+摊 > tān; #644A
+摋 > sà; #644B
+摌 > chăn; #644C
+摍 > sūo; #644D
+摎 > liáo; #644E
+摏 > chōng; #644F
+摐 > chuāng; #6450
+摑 > gúo; #6451
+摒 > bìng; #6452
+摓 > féng; #6453
+摔 > shuāi; #6454
+摕 > dì; #6455
+摖 > qì; #6456
+摗 > sou; #6457
+摘 > zhāi; #6458
+摙 > liăn; #6459
+摚 > táng; #645A
+摛 > chī; #645B
+摜 > guàn; #645C
+摝 > lù; #645D
+摞 > lúo; #645E
+摟 > lŏu; #645F
+摠 > zŏng; #6460
+摡 > gài; #6461
+摢 > hù; #6462
+摣 > zhā; #6463
+摤 > chuăng; #6464
+摥 > tàng; #6465
+摦 > huà; #6466
+摧 > cūi; #6467
+摨 > nái; #6468
+摩 > mó; #6469
+摪 > jiāng; #646A
+摫 > gūi; #646B
+摬 > yìng; #646C
+摭 > zhí; #646D
+摮 > áo; #646E
+摯 > zhì; #646F
+摰 > niè; #6470
+摱 > mán; #6471
+摲 > shàn; #6472
+摳 > kōu; #6473
+摴 > shū; #6474
+摵 > sŭo; #6475
+摶 > tuán; #6476
+摷 > jiăo; #6477
+摸 > mō; #6478
+摹 > mó; #6479
+摺 > zhé; #647A
+摻 > xiān; #647B
+摼 > kēng; #647C
+摽 > piăo; #647D
+摾 > jiàng; #647E
+摿 > yīn; #647F
+撀 > gòu; #6480
+撁 > qiān; #6481
+撂 > lǜe; #6482
+撃 > jí; #6483
+撄 > yīng; #6484
+撅 > juē; #6485
+撆 > piē; #6486
+撇 > piĕ; #6487
+撈 > lāo; #6488
+撉 > dūn; #6489
+撊 > xiàn; #648A
+撋 > ruán; #648B
+撌 > kùi; #648C
+撍 > zăn; #648D
+撎 > yì; #648E
+撏 > xún; #648F
+撐 > chēng; #6490
+撑 > chēng; #6491
+撒 > să; #6492
+撓 > náo; #6493
+撔 > hèng; #6494
+撕 > sī; #6495
+撖 > qiăn; #6496
+撗 > huáng; #6497
+撘 > dā; #6498
+撙 > zŭn; #6499
+撚 > niăn; #649A
+撛 > lĭn; #649B
+撜 > zhĕng; #649C
+撝 > hūi; #649D
+撞 > zhuàng; #649E
+撟 > jiăo; #649F
+撠 > jĭ; #64A0
+撡 > cāo; #64A1
+撢 > dăn; #64A2
+撣 > dăn; #64A3
+撤 > chè; #64A4
+撥 > bō; #64A5
+撦 > chĕ; #64A6
+撧 > jué; #64A7
+撨 > xiāo; #64A8
+撩 > liáo; #64A9
+撪 > bèn; #64AA
+撫 > fŭ; #64AB
+撬 > qiào; #64AC
+播 > bò; #64AD
+撮 > cūo; #64AE
+撯 > zhúo; #64AF
+撰 > zhuàn; #64B0
+撱 > tŭo; #64B1
+撲 > pū; #64B2
+撳 > qìn; #64B3
+撴 > dūn; #64B4
+撵 > niăn; #64B5
+撷 > xié; #64B7
+撸 > lŭ; #64B8
+撹 > jiăo; #64B9
+撺 > cuān; #64BA
+撻 > tà; #64BB
+撼 > hàn; #64BC
+撽 > qiào; #64BD
+撾 > zhuā; #64BE
+撿 > jiăn; #64BF
+擀 > găn; #64C0
+擁 > yŏng; #64C1
+擂 > léi; #64C2
+擃 > kŭo; #64C3
+擄 > lŭ; #64C4
+擅 > shàn; #64C5
+擆 > zhúo; #64C6
+擇 > zé; #64C7
+擈 > pū; #64C8
+擉 > chùo; #64C9
+擊 > jí; #64CA
+擋 > dăng; #64CB
+擌 > sŭo; #64CC
+操 > cāo; #64CD
+擎 > qíng; #64CE
+擏 > jìng; #64CF
+擐 > huàn; #64D0
+擑 > jiē; #64D1
+擒 > qín; #64D2
+擓 > kuăi; #64D3
+擔 > dān; #64D4
+擕 > xī; #64D5
+擖 > gĕ; #64D6
+擗 > pì; #64D7
+擘 > bò; #64D8
+擙 > ào; #64D9
+據 > jù; #64DA
+擛 > yè; #64DB
+擞 > sŏu; #64DE
+擟 > mí; #64DF
+擠 > jĭ; #64E0
+擡 > tái; #64E1
+擢 > zhúo; #64E2
+擣 > dăo; #64E3
+擤 > xĭng; #64E4
+擥 > lăn; #64E5
+擦 > cā; #64E6
+擧 > jŭ; #64E7
+擨 > yé; #64E8
+擩 > rŭ; #64E9
+擪 > yè; #64EA
+擫 > yè; #64EB
+擬 > nĭ; #64EC
+擭 > hù; #64ED
+擮 > jí; #64EE
+擯 > bìn; #64EF
+擰 > níng; #64F0
+擱 > gē; #64F1
+擲 > zhí; #64F2
+擳 > jié; #64F3
+擴 > kùo; #64F4
+擵 > mó; #64F5
+擶 > jiàn; #64F6
+擷 > xié; #64F7
+擸 > liè; #64F8
+擹 > tān; #64F9
+擺 > băi; #64FA
+擻 > sŏu; #64FB
+擼 > lŭ; #64FC
+擽 > lǜe; #64FD
+擾 > răo; #64FE
+擿 > zhí; #64FF
+攀 > pān; #6500
+攁 > yăng; #6501
+攂 > lèi; #6502
+攃 > sà; #6503
+攄 > shū; #6504
+攅 > zăn; #6505
+攆 > niăn; #6506
+攇 > xiăn; #6507
+攈 > jùn; #6508
+攉 > hùo; #6509
+攊 > lì; #650A
+攋 > là; #650B
+攌 > hàn; #650C
+攍 > yíng; #650D
+攎 > lú; #650E
+攏 > lŏng; #650F
+攐 > qiān; #6510
+攑 > qiān; #6511
+攒 > zăn; #6512
+攓 > qiān; #6513
+攔 > lán; #6514
+攕 > sān; #6515
+攖 > yīng; #6516
+攗 > méi; #6517
+攘 > ráng; #6518
+攙 > chān; #6519
+攛 > cuān; #651B
+攜 > xī; #651C
+攝 > shè; #651D
+攞 > lŭo; #651E
+攟 > jùn; #651F
+攠 > mí; #6520
+攡 > lí; #6521
+攢 > zăn; #6522
+攣 > lǘan; #6523
+攤 > tān; #6524
+攥 > zuàn; #6525
+攦 > lì; #6526
+攧 > diān; #6527
+攨 > wā; #6528
+攩 > dăng; #6529
+攪 > jiăo; #652A
+攫 > jué; #652B
+攬 > lăn; #652C
+攭 > lì; #652D
+攮 > năng; #652E
+支 > zhī; #652F
+攰 > gùi; #6530
+攱 > gŭi; #6531
+攲 > qī; #6532
+攳 > xín; #6533
+攴 > pū; #6534
+攵 > sūi; #6535
+收 > shōu; #6536
+攷 > káo; #6537
+攸 > yōu; #6538
+改 > găi; #6539
+攺 > yĭ; #653A
+攻 > gōng; #653B
+攼 > gān; #653C
+攽 > bān; #653D
+放 > fàng; #653E
+政 > zhèng; #653F
+敀 > bó; #6540
+敁 > diān; #6541
+敂 > kòu; #6542
+敃 > mĭn; #6543
+敄 > wù; #6544
+故 > gù; #6545
+敆 > hé; #6546
+敇 > cè; #6547
+效 > xiào; #6548
+敉 > mĭ; #6549
+敊 > chù; #654A
+敋 > gé; #654B
+敌 > dí; #654C
+敍 > xù; #654D
+敎 > jiào; #654E
+敏 > mĭn; #654F
+敐 > chén; #6550
+救 > jìu; #6551
+敒 > zhèn; #6552
+敓 > dúo; #6553
+敔 > yŭ; #6554
+敕 > chì; #6555
+敖 > áo; #6556
+敗 > bài; #6557
+敘 > xù; #6558
+教 > jiào; #6559
+敚 > dúo; #655A
+敛 > liàn; #655B
+敜 > niè; #655C
+敝 > bì; #655D
+敞 > chăng; #655E
+敟 > diăn; #655F
+敠 > dúo; #6560
+敡 > yì; #6561
+敢 > găn; #6562
+散 > sàn; #6563
+敤 > kĕ; #6564
+敥 > yàn; #6565
+敦 > dūn; #6566
+敧 > qĭ; #6567
+敨 > dŏu; #6568
+敩 > xiào; #6569
+敪 > dúo; #656A
+敫 > jiào; #656B
+敬 > jìng; #656C
+敭 > yáng; #656D
+敮 > xiá; #656E
+敯 > mín; #656F
+数 > shù; #6570
+敱 > ái; #6571
+敲 > qiāo; #6572
+敳 > ái; #6573
+整 > zhĕng; #6574
+敵 > dí; #6575
+敶 > zhèn; #6576
+敷 > fū; #6577
+數 > shù; #6578
+敹 > liáo; #6579
+敺 > qū; #657A
+敻 > xìong; #657B
+敼 > xĭ; #657C
+敽 > jiăo; #657D
+敿 > jiăo; #657F
+斀 > zhúo; #6580
+斁 > yì; #6581
+斂 > liàn; #6582
+斃 > bì; #6583
+斄 > lì; #6584
+斅 > xiào; #6585
+斆 > xiào; #6586
+文 > wén; #6587
+斈 > xué; #6588
+斉 > qí; #6589
+斊 > qí; #658A
+斋 > zhāi; #658B
+斌 > bīn; #658C
+斍 > jué; #658D
+斎 > zhāi; #658E
+斐 > fĕi; #6590
+斑 > bān; #6591
+斒 > bān; #6592
+斓 > lán; #6593
+斔 > yŭ; #6594
+斕 > lán; #6595
+斖 > wĕi; #6596
+斗 > dŏu; #6597
+斘 > shēng; #6598
+料 > liào; #6599
+斚 > jiă; #659A
+斛 > hú; #659B
+斜 > xié; #659C
+斝 > jiă; #659D
+斞 > yŭ; #659E
+斟 > zhēn; #659F
+斠 > jiào; #65A0
+斡 > wò; #65A1
+斢 > tŏu; #65A2
+斣 > chù; #65A3
+斤 > jīn; #65A4
+斥 > chì; #65A5
+斦 > yín; #65A6
+斧 > fŭ; #65A7
+斨 > qiāng; #65A8
+斩 > zhăn; #65A9
+斪 > qú; #65AA
+斫 > zhúo; #65AB
+斬 > zhăn; #65AC
+断 > duàn; #65AD
+斮 > zhúo; #65AE
+斯 > sī; #65AF
+新 > xīn; #65B0
+斱 > zhúo; #65B1
+斲 > zhúo; #65B2
+斳 > qín; #65B3
+斴 > lín; #65B4
+斵 > zhúo; #65B5
+斶 > chù; #65B6
+斷 > duàn; #65B7
+斸 > zhŭ; #65B8
+方 > fāng; #65B9
+斺 > xiè; #65BA
+斻 > háng; #65BB
+於 > yú; #65BC
+施 > shī; #65BD
+斾 > pèi; #65BE
+斿 > yóu; #65BF
+旁 > páng; #65C1
+旂 > qí; #65C2
+旃 > zhān; #65C3
+旄 > máo; #65C4
+旅 > lǚ; #65C5
+旆 > pèi; #65C6
+旇 > pī; #65C7
+旈 > líu; #65C8
+旉 > fū; #65C9
+旊 > făng; #65CA
+旋 > xuán; #65CB
+旌 > jīng; #65CC
+旍 > jīng; #65CD
+旎 > nĭ; #65CE
+族 > zú; #65CF
+旐 > zhào; #65D0
+旑 > yĭ; #65D1
+旒 > líu; #65D2
+旓 > shāo; #65D3
+旔 > jiàn; #65D4
+旖 > yĭ; #65D6
+旗 > qí; #65D7
+旘 > zhì; #65D8
+旙 > fān; #65D9
+旚 > piāo; #65DA
+旛 > fān; #65DB
+旜 > zhān; #65DC
+旝 > guài; #65DD
+旞 > sùi; #65DE
+旟 > yú; #65DF
+无 > wú; #65E0
+旡 > jì; #65E1
+既 > jì; #65E2
+旣 > jì; #65E3
+旤 > hùo; #65E4
+日 > rì; #65E5
+旦 > dàn; #65E6
+旧 > jìu; #65E7
+旨 > zhĭ; #65E8
+早 > zăo; #65E9
+旪 > xié; #65EA
+旫 > tiāo; #65EB
+旬 > xún; #65EC
+旭 > xù; #65ED
+旮 > xù; #65EE
+旯 > xù; #65EF
+旰 > gàn; #65F0
+旱 > hàn; #65F1
+旲 > tái; #65F2
+旳 > dì; #65F3
+旴 > xū; #65F4
+旵 > chăn; #65F5
+时 > shí; #65F6
+旷 > kuàng; #65F7
+旸 > yáng; #65F8
+旹 > shí; #65F9
+旺 > wàng; #65FA
+旻 > mín; #65FB
+旼 > mín; #65FC
+旽 > tūn; #65FD
+旾 > chūn; #65FE
+旿 > wŭ; #65FF
+昀 > yún; #6600
+昁 > bèi; #6601
+昂 > áng; #6602
+昃 > zè; #6603
+昄 > băn; #6604
+昅 > jié; #6605
+昆 > kūn; #6606
+昇 > shēng; #6607
+昈 > hù; #6608
+昉 > făng; #6609
+昊 > hào; #660A
+昋 > gùi; #660B
+昌 > chāng; #660C
+昍 > xuān; #660D
+明 > míng; #660E
+昏 > hūn; #660F
+昐 > fēn; #6610
+昑 > qĭn; #6611
+昒 > hū; #6612
+易 > yì; #6613
+昔 > xí; #6614
+昕 > xīn; #6615
+昖 > yán; #6616
+昗 > zè; #6617
+昘 > făng; #6618
+昙 > tán; #6619
+昚 > shèn; #661A
+昛 > jù; #661B
+昜 > yáng; #661C
+昝 > zăn; #661D
+昞 > bĭng; #661E
+星 > xīng; #661F
+映 > yìng; #6620
+昡 > xuàn; #6621
+昢 > pĕi; #6622
+昣 > zhĕn; #6623
+昤 > līng; #6624
+春 > chūn; #6625
+昦 > hào; #6626
+昧 > mèi; #6627
+昨 > zúo; #6628
+昩 > mò; #6629
+昪 > biàn; #662A
+昫 > xŭ; #662B
+昬 > hūn; #662C
+昭 > zhāo; #662D
+昮 > zòng; #662E
+是 > shì; #662F
+昰 > shì; #6630
+昱 > yù; #6631
+昲 > fèi; #6632
+昳 > dié; #6633
+昴 > măo; #6634
+昵 > nì; #6635
+昶 > chăng; #6636
+昷 > wēn; #6637
+昸 > dōng; #6638
+昹 > ăi; #6639
+昺 > bĭng; #663A
+昻 > áng; #663B
+昼 > zhòu; #663C
+昽 > lóng; #663D
+显 > xiăn; #663E
+昿 > kuàng; #663F
+晀 > tiăo; #6640
+晁 > cháo; #6641
+時 > shí; #6642
+晃 > huăng; #6643
+晄 > huăng; #6644
+晅 > xuān; #6645
+晆 > kúi; #6646
+晇 > xū; #6647
+晈 > jiăo; #6648
+晉 > jìn; #6649
+晊 > zhĭ; #664A
+晋 > jìn; #664B
+晌 > shăng; #664C
+晍 > tóng; #664D
+晎 > hŏng; #664E
+晏 > yàn; #664F
+晐 > gāi; #6650
+晑 > xiăng; #6651
+晒 > shài; #6652
+晓 > xiăo; #6653
+晔 > yē; #6654
+晕 > yūn; #6655
+晖 > hūi; #6656
+晗 > hán; #6657
+晘 > hàn; #6658
+晙 > jùn; #6659
+晚 > wăn; #665A
+晛 > xiàn; #665B
+晜 > kūn; #665C
+晝 > zhòu; #665D
+晞 > xī; #665E
+晟 > chéng; #665F
+晠 > shéng; #6660
+晡 > bū; #6661
+晢 > zhē; #6662
+晣 > zhē; #6663
+晤 > wù; #6664
+晥 > hàn; #6665
+晦 > hùi; #6666
+晧 > hào; #6667
+晨 > chén; #6668
+晩 > wăn; #6669
+晪 > tiăn; #666A
+晫 > zhúo; #666B
+晬 > zùi; #666C
+晭 > zhŏu; #666D
+普 > pŭ; #666E
+景 > jĭng; #666F
+晰 > xī; #6670
+晱 > shăn; #6671
+晲 > yĭ; #6672
+晳 > xì; #6673
+晴 > qíng; #6674
+晵 > qĭ; #6675
+晶 > jīng; #6676
+晷 > gŭi; #6677
+晸 > zhĕn; #6678
+晹 > yì; #6679
+智 > zhì; #667A
+晻 > ăn; #667B
+晼 > wăn; #667C
+晽 > lín; #667D
+晾 > liàng; #667E
+晿 > chāng; #667F
+暀 > wăng; #6680
+暁 > xiăo; #6681
+暂 > zàn; #6682
+暄 > xuān; #6684
+暅 > xuăn; #6685
+暆 > yí; #6686
+暇 > xiá; #6687
+暈 > yūn; #6688
+暉 > hūi; #6689
+暊 > fŭ; #668A
+暋 > mĭn; #668B
+暌 > kúi; #668C
+暍 > hè; #668D
+暎 > yìng; #668E
+暏 > dŭ; #668F
+暐 > wĕi; #6690
+暑 > shŭ; #6691
+暒 > qíng; #6692
+暓 > mào; #6693
+暔 > nán; #6694
+暕 > jiăn; #6695
+暖 > nuăn; #6696
+暗 > àn; #6697
+暘 > yáng; #6698
+暙 > chūn; #6699
+暚 > yáo; #669A
+暛 > sŭo; #669B
+暜 > jìn; #669C
+暝 > míng; #669D
+暞 > jiăo; #669E
+暟 > kăi; #669F
+暠 > găo; #66A0
+暡 > wĕng; #66A1
+暢 > chàng; #66A2
+暣 > qì; #66A3
+暤 > hào; #66A4
+暥 > yàn; #66A5
+暦 > lì; #66A6
+暧 > ài; #66A7
+暨 > jì; #66A8
+暩 > gùi; #66A9
+暪 > mĕn; #66AA
+暫 > zàn; #66AB
+暬 > xiè; #66AC
+暭 > hào; #66AD
+暮 > mù; #66AE
+暯 > mò; #66AF
+暰 > cōng; #66B0
+暱 > nì; #66B1
+暲 > zhāng; #66B2
+暳 > hùi; #66B3
+暴 > bào; #66B4
+暵 > hàn; #66B5
+暶 > xuán; #66B6
+暷 > chuán; #66B7
+暸 > liáo; #66B8
+暹 > xiān; #66B9
+暺 > dàn; #66BA
+暻 > jĭng; #66BB
+暼 > piē; #66BC
+暽 > lín; #66BD
+暾 > tūn; #66BE
+暿 > xĭ; #66BF
+曀 > yì; #66C0
+曁 > jì; #66C1
+曂 > huàng; #66C2
+曃 > tài; #66C3
+曄 > yè; #66C4
+曅 > yè; #66C5
+曆 > lì; #66C6
+曇 > tán; #66C7
+曈 > tóng; #66C8
+曉 > xiăo; #66C9
+曊 > fèi; #66CA
+曋 > qĭn; #66CB
+曌 > zhào; #66CC
+曍 > hào; #66CD
+曎 > yì; #66CE
+曏 > xiàng; #66CF
+曐 > xīng; #66D0
+曑 > sēn; #66D1
+曒 > jiăo; #66D2
+曓 > bào; #66D3
+曔 > jìng; #66D4
+曕 > yiàn; #66D5
+曖 > ài; #66D6
+曗 > yè; #66D7
+曘 > rú; #66D8
+曙 > shù; #66D9
+曚 > méng; #66DA
+曛 > xūn; #66DB
+曜 > yào; #66DC
+曝 > pù; #66DD
+曞 > lì; #66DE
+曟 > chén; #66DF
+曠 > kuàng; #66E0
+曡 > dié; #66E1
+曣 > yàn; #66E3
+曤 > hùo; #66E4
+曥 > lú; #66E5
+曦 > xī; #66E6
+曧 > róng; #66E7
+曨 > lóng; #66E8
+曩 > năng; #66E9
+曪 > lŭo; #66EA
+曫 > luán; #66EB
+曬 > shài; #66EC
+曭 > tăng; #66ED
+曮 > yăn; #66EE
+曯 > chú; #66EF
+曰 > yuē; #66F0
+曱 > yuē; #66F1
+曲 > qŭ; #66F2
+曳 > yì; #66F3
+更 > gèng; #66F4
+曵 > yè; #66F5
+曶 > hū; #66F6
+曷 > hé; #66F7
+書 > shū; #66F8
+曹 > cáo; #66F9
+曺 > cáo; #66FA
+曼 > màn; #66FC
+曽 > cēng; #66FD
+曾 > céng; #66FE
+替 > tì; #66FF
+最 > zùi; #6700
+朁 > căn; #6701
+朂 > xù; #6702
+會 > hùi; #6703
+朄 > yìn; #6704
+朅 > qiè; #6705
+朆 > fēn; #6706
+朇 > pí; #6707
+月 > yuè; #6708
+有 > yŏu; #6709
+朊 > ruăn; #670A
+朋 > péng; #670B
+朌 > bān; #670C
+服 > fú; #670D
+朎 > líng; #670E
+朏 > fĕi; #670F
+朐 > qú; #6710
+朒 > nǜ; #6712
+朓 > tiào; #6713
+朔 > shùo; #6714
+朕 > zhèn; #6715
+朖 > lăng; #6716
+朗 > lăng; #6717
+朘 > juān; #6718
+朙 > míng; #6719
+朚 > huāng; #671A
+望 > wàng; #671B
+朜 > tūn; #671C
+朝 > zhāo; #671D
+朞 > jī; #671E
+期 > qí; #671F
+朠 > yīng; #6720
+朡 > zōng; #6721
+朢 > wàng; #6722
+朣 > tóng; #6723
+朤 > lăng; #6724
+朦 > méng; #6726
+朧 > lóng; #6727
+木 > mù; #6728
+朩 > dĕng; #6729
+未 > wèi; #672A
+末 > mò; #672B
+本 > bĕn; #672C
+札 > zhá; #672D
+朮 > zhú; #672E
+术 > zhú; #672F
+朱 > zhū; #6731
+朲 > rén; #6732
+朳 > bā; #6733
+朴 > pò; #6734
+朵 > dŭo; #6735
+朶 > dŭo; #6736
+朷 > dāo; #6737
+朸 > lì; #6738
+朹 > qíu; #6739
+机 > jī; #673A
+朻 > jīu; #673B
+朼 > bĭ; #673C
+朽 > xĭu; #673D
+朾 > tíng; #673E
+朿 > cì; #673F
+杀 > shā; #6740
+杂 > zá; #6742
+权 > quán; #6743
+杄 > qiān; #6744
+杅 > yú; #6745
+杆 > gān; #6746
+杇 > wū; #6747
+杈 > chā; #6748
+杉 > shān; #6749
+杊 > xún; #674A
+杋 > fān; #674B
+杌 > wù; #674C
+杍 > zĭ; #674D
+李 > lĭ; #674E
+杏 > xìng; #674F
+材 > cái; #6750
+村 > cūn; #6751
+杒 > rèn; #6752
+杓 > sháo; #6753
+杔 > tūo; #6754
+杕 > dì; #6755
+杖 > zhàng; #6756
+杗 > máng; #6757
+杘 > chì; #6758
+杙 > yì; #6759
+杚 > gŭ; #675A
+杛 > gōng; #675B
+杜 > dù; #675C
+杝 > yí; #675D
+杞 > qĭ; #675E
+束 > shù; #675F
+杠 > gāng; #6760
+条 > tiáo; #6761
+来 > lái; #6765
+杧 > máng; #6767
+杨 > yáng; #6768
+杩 > mà; #6769
+杪 > miăo; #676A
+杫 > sì; #676B
+杬 > yuán; #676C
+杭 > háng; #676D
+杮 > fèi; #676E
+杯 > bēi; #676F
+杰 > jié; #6770
+東 > dōng; #6771
+杲 > găo; #6772
+杳 > yăo; #6773
+杴 > xiān; #6774
+杵 > chŭ; #6775
+杶 > qūn; #6776
+杷 > pá; #6777
+杸 > shū; #6778
+杹 > huà; #6779
+杺 > xīn; #677A
+杻 > chŏu; #677B
+杼 > zhù; #677C
+杽 > chŏu; #677D
+松 > sōng; #677E
+板 > băn; #677F
+枀 > sōng; #6780
+极 > jí; #6781
+枂 > yuè; #6782
+枃 > jìn; #6783
+构 > gōu; #6784
+枅 > jī; #6785
+枆 > máo; #6786
+枇 > pí; #6787
+枈 > bì; #6788
+枉 > wăng; #6789
+枊 > àng; #678A
+枋 > fāng; #678B
+枌 > fén; #678C
+枍 > yì; #678D
+枎 > fú; #678E
+枏 > nán; #678F
+析 > xī; #6790
+枑 > hù; #6791
+枒 > yá; #6792
+枓 > dŏu; #6793
+枔 > xún; #6794
+枕 > zhĕn; #6795
+枖 > yāo; #6796
+林 > lín; #6797
+枘 > rùi; #6798
+枙 > é; #6799
+枚 > méi; #679A
+枛 > zhào; #679B
+果 > gŭo; #679C
+枝 > zhī; #679D
+枞 > cōng; #679E
+枟 > yùn; #679F
+枡 > dŏu; #67A1
+枢 > shū; #67A2
+枣 > zăo; #67A3
+枥 > lì; #67A5
+枧 > jiàn; #67A7
+枨 > chéng; #67A8
+枪 > qiāng; #67AA
+枫 > fēng; #67AB
+枬 > nán; #67AC
+枭 > xiāo; #67AD
+枮 > xiān; #67AE
+枯 > kū; #67AF
+枰 > píng; #67B0
+枱 > yí; #67B1
+枲 > xĭ; #67B2
+枳 > zhī; #67B3
+枴 > guăi; #67B4
+枵 > xiāo; #67B5
+架 > jià; #67B6
+枷 > jiā; #67B7
+枸 > gŏu; #67B8
+枹 > fū; #67B9
+枺 > mò; #67BA
+枻 > yì; #67BB
+枼 > yè; #67BC
+枽 > yè; #67BD
+枾 > shì; #67BE
+枿 > niè; #67BF
+柀 > bĭ; #67C0
+柁 > dùo; #67C1
+柂 > yí; #67C2
+柃 > líng; #67C3
+柄 > bĭng; #67C4
+柅 > nĭ; #67C5
+柆 > lā; #67C6
+柇 > hé; #67C7
+柈 > pán; #67C8
+柉 > fán; #67C9
+柊 > zhōng; #67CA
+柋 > dài; #67CB
+柌 > cí; #67CC
+柍 > yāng; #67CD
+柎 > fū; #67CE
+柏 > bó; #67CF
+某 > mŏu; #67D0
+柑 > gān; #67D1
+柒 > qī; #67D2
+染 > răn; #67D3
+柔 > róu; #67D4
+柕 > mào; #67D5
+柖 > zhāo; #67D6
+柗 > sōng; #67D7
+柘 > zhè; #67D8
+柙 > xiá; #67D9
+柚 > yòu; #67DA
+柛 > shēn; #67DB
+柜 > jŭ; #67DC
+柝 > tùo; #67DD
+柞 > zùo; #67DE
+柟 > nán; #67DF
+柠 > níng; #67E0
+柡 > yŏng; #67E1
+柢 > dĭ; #67E2
+柣 > zhí; #67E3
+柤 > zhā; #67E4
+查 > chá; #67E5
+柦 > dàn; #67E6
+柧 > gū; #67E7
+柨 > pu; #67E8
+柩 > jìu; #67E9
+柪 > āo; #67EA
+柫 > fú; #67EB
+柬 > jiăn; #67EC
+柭 > bō; #67ED
+柮 > dùo; #67EE
+柯 > kē; #67EF
+柰 > nài; #67F0
+柱 > zhù; #67F1
+柲 > bì; #67F2
+柳 > lĭu; #67F3
+柴 > chái; #67F4
+柵 > zhà; #67F5
+柶 > sì; #67F6
+柷 > zhù; #67F7
+柸 > pēi; #67F8
+柹 > shì; #67F9
+柺 > guăi; #67FA
+査 > chá; #67FB
+柼 > yăo; #67FC
+柽 > jué; #67FD
+柾 > jìu; #67FE
+柿 > shì; #67FF
+栀 > zhī; #6800
+栁 > lĭu; #6801
+栂 > méi; #6802
+栄 > róng; #6804
+栅 > zhà; #6805
+标 > biāo; #6807
+栈 > zhàn; #6808
+栉 > jié; #6809
+栊 > lóng; #680A
+栋 > dòng; #680B
+栌 > lú; #680C
+栎 > lì; #680E
+栏 > lán; #680F
+栐 > yŏng; #6810
+树 > shù; #6811
+栒 > xún; #6812
+栓 > shuān; #6813
+栔 > qì; #6814
+栕 > zhēn; #6815
+栖 > qī; #6816
+栗 > lì; #6817
+栘 > yĭ; #6818
+栙 > xiáng; #6819
+栚 > zhèn; #681A
+栛 > lì; #681B
+栜 > sù; #681C
+栝 > guā; #681D
+栞 > kān; #681E
+栟 > bīng; #681F
+栠 > rĕn; #6820
+校 > xiào; #6821
+栢 > bó; #6822
+栣 > rĕn; #6823
+栤 > bìng; #6824
+栥 > zī; #6825
+栦 > chóu; #6826
+栧 > yì; #6827
+栨 > jié; #6828
+栩 > xŭ; #6829
+株 > zhū; #682A
+栫 > jiàn; #682B
+栬 > zùi; #682C
+栭 > ér; #682D
+栮 > ĕr; #682E
+栯 > yŏu; #682F
+栰 > fá; #6830
+栱 > gŏng; #6831
+栲 > kăo; #6832
+栳 > lăo; #6833
+栴 > zhān; #6834
+栵 > lì; #6835
+栶 > yin; #6836
+样 > yáng; #6837
+核 > hé; #6838
+根 > gēn; #6839
+栺 > zhĭ; #683A
+栻 > chì; #683B
+格 > gé; #683C
+栽 > zāi; #683D
+栾 > luán; #683E
+栿 > fú; #683F
+桀 > jié; #6840
+桁 > háng; #6841
+桂 > gùi; #6842
+桃 > táo; #6843
+桄 > guàng; #6844
+桅 > wéi; #6845
+框 > kuàng; #6846
+桇 > rú; #6847
+案 > àn; #6848
+桉 > àn; #6849
+桊 > juàn; #684A
+桋 > yí; #684B
+桌 > zhūo; #684C
+桍 > kū; #684D
+桎 > zhí; #684E
+桏 > qíong; #684F
+桐 > tóng; #6850
+桑 > sāng; #6851
+桒 > sāng; #6852
+桓 > huán; #6853
+桔 > jié; #6854
+桕 > jìu; #6855
+桖 > xuè; #6856
+桗 > dùo; #6857
+桘 > zhùi; #6858
+桙 > yú; #6859
+桚 > zăn; #685A
+桜 > yīng; #685C
+桟 > zhàn; #685F
+桠 > yá; #6860
+桡 > náo; #6861
+桢 > zhēn; #6862
+档 > dăng; #6863
+桤 > qī; #6864
+桥 > qiáo; #6865
+桦 > huà; #6866
+桧 > kuài; #6867
+桨 > jiăng; #6868
+桩 > zhuāng; #6869
+桪 > xún; #686A
+桫 > sūo; #686B
+桬 > shā; #686C
+桭 > zhēn; #686D
+桮 > bēi; #686E
+桯 > tīng; #686F
+桰 > guā; #6870
+桱 > jìng; #6871
+桲 > bó; #6872
+桳 > bèn; #6873
+桴 > fú; #6874
+桵 > rŭi; #6875
+桶 > tŏng; #6876
+桷 > jué; #6877
+桸 > xī; #6878
+桹 > láng; #6879
+桺 > lĭu; #687A
+桻 > fēng; #687B
+桼 > qī; #687C
+桽 > wĕn; #687D
+桾 > jūn; #687E
+桿 > găn; #687F
+梀 > cù; #6880
+梁 > liáng; #6881
+梂 > qíu; #6882
+梃 > tĭng; #6883
+梄 > yŏu; #6884
+梅 > méi; #6885
+梆 > bāng; #6886
+梇 > lòng; #6887
+梈 > pēng; #6888
+梉 > zhuāng; #6889
+梊 > dì; #688A
+梋 > xuān; #688B
+梌 > tú; #688C
+梍 > zào; #688D
+梎 > āo; #688E
+梏 > gù; #688F
+梐 > bì; #6890
+梑 > dí; #6891
+梒 > hán; #6892
+梓 > zĭ; #6893
+梔 > zhī; #6894
+梕 > rèn; #6895
+梖 > bèi; #6896
+梗 > gĕng; #6897
+梘 > jiàn; #6898
+梙 > huàn; #6899
+梚 > wăn; #689A
+梛 > núo; #689B
+梜 > jiá; #689C
+條 > tiáo; #689D
+梞 > jì; #689E
+梟 > xiāo; #689F
+梠 > lǚ; #68A0
+梡 > huán; #68A1
+梢 > shāo; #68A2
+梣 > cén; #68A3
+梤 > fén; #68A4
+梥 > sōng; #68A5
+梦 > mèng; #68A6
+梧 > wú; #68A7
+梨 > lí; #68A8
+梩 > lí; #68A9
+梪 > dòu; #68AA
+梫 > cēn; #68AB
+梬 > yĭng; #68AC
+梭 > sūo; #68AD
+梮 > jú; #68AE
+梯 > tī; #68AF
+械 > jiè; #68B0
+梱 > kŭn; #68B1
+梲 > zhúo; #68B2
+梳 > shū; #68B3
+梴 > chān; #68B4
+梵 > fàn; #68B5
+梶 > wĕi; #68B6
+梷 > jìng; #68B7
+梸 > lí; #68B8
+梹 > bīng; #68B9
+梼 > táo; #68BC
+梽 > zhì; #68BD
+梾 > lái; #68BE
+梿 > lián; #68BF
+检 > jiăn; #68C0
+棁 > zhúo; #68C1
+棂 > líng; #68C2
+棃 > lí; #68C3
+棄 > qì; #68C4
+棅 > bìng; #68C5
+棆 > zhūn; #68C6
+棇 > cōng; #68C7
+棈 > qiàn; #68C8
+棉 > mián; #68C9
+棊 > qí; #68CA
+棋 > qí; #68CB
+棌 > căi; #68CC
+棍 > gùn; #68CD
+棎 > chán; #68CE
+棏 > tè; #68CF
+棐 > fĕi; #68D0
+棑 > pái; #68D1
+棒 > bàng; #68D2
+棓 > pŏu; #68D3
+棔 > hūn; #68D4
+棕 > zōng; #68D5
+棖 > chéng; #68D6
+棗 > zăo; #68D7
+棘 > jí; #68D8
+棙 > lì; #68D9
+棚 > péng; #68DA
+棛 > yù; #68DB
+棜 > yù; #68DC
+棝 > gù; #68DD
+棞 > hún; #68DE
+棟 > dòng; #68DF
+棠 > táng; #68E0
+棡 > gāng; #68E1
+棢 > wăng; #68E2
+棣 > dì; #68E3
+棤 > xí; #68E4
+棥 > fán; #68E5
+棦 > chēng; #68E6
+棧 > zhàn; #68E7
+棨 > qĭ; #68E8
+棩 > yuān; #68E9
+棪 > yăn; #68EA
+棫 > yù; #68EB
+棬 > quān; #68EC
+棭 > yì; #68ED
+森 > sēn; #68EE
+棯 > rĕn; #68EF
+棰 > chúi; #68F0
+棱 > léng; #68F1
+棲 > qī; #68F2
+棳 > zhúo; #68F3
+棴 > fú; #68F4
+棵 > kē; #68F5
+棶 > lái; #68F6
+棷 > zōu; #68F7
+棸 > zōu; #68F8
+棹 > zhūo; #68F9
+棺 > guān; #68FA
+棻 > fén; #68FB
+棼 > fén; #68FC
+棽 > chēn; #68FD
+棾 > qíong; #68FE
+棿 > niè; #68FF
+椀 > wăn; #6900
+椁 > gŭo; #6901
+椂 > lù; #6902
+椃 > háo; #6903
+椄 > jiē; #6904
+椅 > yĭ; #6905
+椆 > chóu; #6906
+椇 > jŭ; #6907
+椈 > jú; #6908
+椉 > chéng; #6909
+椊 > zúo; #690A
+椋 > liáng; #690B
+椌 > qiāng; #690C
+植 > zhí; #690D
+椎 > zhūi; #690E
+椏 > yā; #690F
+椐 > jū; #6910
+椑 > bēi; #6911
+椒 > jiāo; #6912
+椓 > zhúo; #6913
+椔 > zī; #6914
+椕 > bīn; #6915
+椖 > péng; #6916
+椗 > dìng; #6917
+椘 > chŭ; #6918
+検 > jiăn; #691C
+椝 > gūi; #691D
+椞 > xì; #691E
+椟 > dú; #691F
+椠 > qiàn; #6920
+椤 > lúo; #6924
+椥 > zhī; #6925
+椪 > pèng; #692A
+椫 > zhăn; #692B
+椭 > tŭo; #692D
+椮 > sēn; #692E
+椯 > dúo; #692F
+椰 > yé; #6930
+椱 > fòu; #6931
+椲 > wĕi; #6932
+椳 > wēi; #6933
+椴 > duàn; #6934
+椵 > jiă; #6935
+椶 > zōng; #6936
+椷 > jiān; #6937
+椸 > yí; #6938
+椹 > shèn; #6939
+椺 > xí; #693A
+椻 > yàn; #693B
+椼 > yăn; #693C
+椽 > chuán; #693D
+椾 > zhàn; #693E
+椿 > chūn; #693F
+楀 > yŭ; #6940
+楁 > hé; #6941
+楂 > zhā; #6942
+楃 > wò; #6943
+楄 > pián; #6944
+楅 > bì; #6945
+楆 > yāo; #6946
+楇 > hùo; #6947
+楈 > xū; #6948
+楉 > rùo; #6949
+楊 > yáng; #694A
+楋 > là; #694B
+楌 > yán; #694C
+楍 > bĕn; #694D
+楎 > hún; #694E
+楏 > kúi; #694F
+楐 > jiè; #6950
+楑 > kúi; #6951
+楒 > sī; #6952
+楓 > fēng; #6953
+楔 > xiè; #6954
+楕 > tŭo; #6955
+楖 > zhì; #6956
+楗 > jiàn; #6957
+楘 > mù; #6958
+楙 > mào; #6959
+楚 > chŭ; #695A
+楛 > hù; #695B
+楜 > hú; #695C
+楝 > liàn; #695D
+楞 > léng; #695E
+楟 > tíng; #695F
+楠 > nán; #6960
+楡 > yú; #6961
+楢 > yóu; #6962
+楣 > méi; #6963
+楤 > sŏng; #6964
+楥 > xuàn; #6965
+楦 > xuàn; #6966
+楧 > yīng; #6967
+楨 > zhēn; #6968
+楩 > pián; #6969
+楪 > yè; #696A
+楫 > jí; #696B
+楬 > jié; #696C
+業 > yè; #696D
+楮 > chŭ; #696E
+楯 > shŭn; #696F
+楰 > yú; #6970
+楱 > còu; #6971
+楲 > wēi; #6972
+楳 > méi; #6973
+楴 > dì; #6974
+極 > jí; #6975
+楶 > jié; #6976
+楷 > kăi; #6977
+楸 > qīu; #6978
+楹 > yíng; #6979
+楺 > róu; #697A
+楻 > héng; #697B
+楼 > lóu; #697C
+楽 > lè; #697D
+榀 > pĭn; #6980
+概 > gài; #6982
+榃 > tán; #6983
+榄 > lăn; #6984
+榅 > yún; #6985
+榆 > yú; #6986
+榇 > chèn; #6987
+榈 > lǘ; #6988
+榉 > jŭ; #6989
+榍 > xiè; #698D
+榎 > jiă; #698E
+榏 > yì; #698F
+榐 > zhăn; #6990
+榑 > fù; #6991
+榒 > nài; #6992
+榓 > mì; #6993
+榔 > láng; #6994
+榕 > róng; #6995
+榖 > gŭ; #6996
+榗 > jiàn; #6997
+榘 > jŭ; #6998
+榙 > tă; #6999
+榚 > yăo; #699A
+榛 > zhēn; #699B
+榜 > băng; #699C
+榝 > shā; #699D
+榞 > yuán; #699E
+榟 > zĭ; #699F
+榠 > mīng; #69A0
+榡 > sù; #69A1
+榢 > jià; #69A2
+榣 > yáo; #69A3
+榤 > jié; #69A4
+榥 > huăng; #69A5
+榦 > gàn; #69A6
+榧 > fĕi; #69A7
+榨 > zhà; #69A8
+榩 > qián; #69A9
+榪 > mà; #69AA
+榫 > sŭn; #69AB
+榬 > yuán; #69AC
+榭 > xiè; #69AD
+榮 > róng; #69AE
+榯 > shí; #69AF
+榰 > zhī; #69B0
+榱 > cūi; #69B1
+榲 > yún; #69B2
+榳 > tíng; #69B3
+榴 > líu; #69B4
+榵 > róng; #69B5
+榶 > táng; #69B6
+榷 > què; #69B7
+榸 > zhāi; #69B8
+榹 > sī; #69B9
+榺 > shèng; #69BA
+榻 > tà; #69BB
+榼 > kè; #69BC
+榽 > xī; #69BD
+榾 > gù; #69BE
+榿 > qī; #69BF
+槀 > kăo; #69C0
+槁 > găo; #69C1
+槂 > sūn; #69C2
+槃 > pán; #69C3
+槄 > tāo; #69C4
+槅 > gé; #69C5
+槆 > xún; #69C6
+槇 > diān; #69C7
+槈 > nòu; #69C8
+槉 > jí; #69C9
+槊 > shùo; #69CA
+構 > gòu; #69CB
+槌 > chúi; #69CC
+槍 > qiāng; #69CD
+槎 > chā; #69CE
+槏 > qiăn; #69CF
+槐 > huái; #69D0
+槑 > méi; #69D1
+槒 > xù; #69D2
+槓 > gàng; #69D3
+槔 > gāo; #69D4
+槕 > zhúo; #69D5
+槖 > tùo; #69D6
+様 > yàng; #69D8
+槙 > diān; #69D9
+槚 > jiă; #69DA
+槛 > jiàn; #69DB
+槜 > zùi; #69DC
+槟 > bīn; #69DF
+槠 > zhū; #69E0
+槢 > xí; #69E2
+槣 > qĭ; #69E3
+槤 > lián; #69E4
+槥 > hùi; #69E5
+槦 > yóng; #69E6
+槧 > qiàn; #69E7
+槨 > gŭo; #69E8
+槩 > gài; #69E9
+槪 > gài; #69EA
+槫 > tuán; #69EB
+槬 > huà; #69EC
+槭 > cù; #69ED
+槮 > sēn; #69EE
+槯 > cūi; #69EF
+槰 > bèng; #69F0
+槱 > yŏu; #69F1
+槲 > hú; #69F2
+槳 > jiăng; #69F3
+槴 > hù; #69F4
+槵 > huàn; #69F5
+槶 > kùi; #69F6
+槷 > yì; #69F7
+槸 > niè; #69F8
+槹 > gāo; #69F9
+槺 > kāng; #69FA
+槻 > gūi; #69FB
+槼 > gūi; #69FC
+槽 > cáo; #69FD
+槾 > mán; #69FE
+槿 > jĭn; #69FF
+樀 > dì; #6A00
+樁 > zhuāng; #6A01
+樂 > lè; #6A02
+樃 > láng; #6A03
+樄 > chén; #6A04
+樅 > cōng; #6A05
+樆 > lí; #6A06
+樇 > xīu; #6A07
+樈 > qíng; #6A08
+樉 > shuăng; #6A09
+樊 > fán; #6A0A
+樋 > tōng; #6A0B
+樌 > guàn; #6A0C
+樍 > jī; #6A0D
+樎 > sūo; #6A0E
+樏 > lĕi; #6A0F
+樐 > lŭ; #6A10
+樑 > liáng; #6A11
+樒 > mì; #6A12
+樓 > lóu; #6A13
+樔 > cháo; #6A14
+樕 > sù; #6A15
+樖 > kē; #6A16
+樗 > shū; #6A17
+樘 > táng; #6A18
+標 > biāo; #6A19
+樚 > lù; #6A1A
+樛 > jīu; #6A1B
+樜 > shù; #6A1C
+樝 > zhā; #6A1D
+樞 > shū; #6A1E
+樟 > zhāng; #6A1F
+樠 > mén; #6A20
+模 > mó; #6A21
+樢 > niăo; #6A22
+樣 > yàng; #6A23
+樤 > tiáo; #6A24
+樥 > péng; #6A25
+樦 > zhù; #6A26
+樧 > shā; #6A27
+樨 > xī; #6A28
+権 > quán; #6A29
+横 > héng; #6A2A
+樫 > jiān; #6A2B
+樬 > cōng; #6A2C
+樯 > qiáng; #6A2F
+樱 > yīng; #6A31
+樲 > èr; #6A32
+樳 > xín; #6A33
+樴 > zhí; #6A34
+樵 > qiáo; #6A35
+樶 > zūi; #6A36
+樷 > cōng; #6A37
+樸 > pú; #6A38
+樹 > shù; #6A39
+樺 > huà; #6A3A
+樻 > kùi; #6A3B
+樼 > zhēn; #6A3C
+樽 > zūn; #6A3D
+樾 > yuè; #6A3E
+樿 > zhăn; #6A3F
+橀 > xī; #6A40
+橁 > xún; #6A41
+橂 > diàn; #6A42
+橃 > fā; #6A43
+橄 > găn; #6A44
+橅 > mó; #6A45
+橆 > wŭ; #6A46
+橇 > qiāo; #6A47
+橈 > náo; #6A48
+橉 > lìn; #6A49
+橊 > líu; #6A4A
+橋 > qiáo; #6A4B
+橌 > xiàn; #6A4C
+橍 > rùn; #6A4D
+橎 > fán; #6A4E
+橏 > zhăn; #6A4F
+橐 > tùo; #6A50
+橑 > lăo; #6A51
+橒 > yún; #6A52
+橓 > shùn; #6A53
+橔 > túi; #6A54
+橕 > chēng; #6A55
+橖 > táng; #6A56
+橗 > méng; #6A57
+橘 > jú; #6A58
+橙 > chéng; #6A59
+橚 > sù; #6A5A
+橛 > jué; #6A5B
+橜 > jué; #6A5C
+橝 > tān; #6A5D
+橞 > hùi; #6A5E
+機 > jī; #6A5F
+橠 > nŭo; #6A60
+橡 > xiàng; #6A61
+橢 > tŭo; #6A62
+橣 > nĭng; #6A63
+橤 > rŭi; #6A64
+橥 > zhū; #6A65
+橦 > chuáng; #6A66
+橧 > zēng; #6A67
+橨 > fén; #6A68
+橩 > qíong; #6A69
+橪 > răn; #6A6A
+橫 > héng; #6A6B
+橬 > cén; #6A6C
+橭 > gū; #6A6D
+橮 > lĭu; #6A6E
+橯 > lào; #6A6F
+橰 > gāo; #6A70
+橱 > chú; #6A71
+橶 > jí; #6A76
+橷 > dōu; #6A77
+橹 > lŭ; #6A79
+橼 > yuán; #6A7C
+橽 > tà; #6A7D
+橾 > shū; #6A7E
+橿 > jiāng; #6A7F
+檀 > tán; #6A80
+檁 > lĭn; #6A81
+檂 > nóng; #6A82
+檃 > yĭn; #6A83
+檄 > xí; #6A84
+檅 > sùi; #6A85
+檆 > shān; #6A86
+檇 > zùi; #6A87
+檈 > xuán; #6A88
+檉 > chēng; #6A89
+檊 > gàn; #6A8A
+檋 > jū; #6A8B
+檌 > zùi; #6A8C
+檍 > yì; #6A8D
+檎 > qín; #6A8E
+檏 > pŭ; #6A8F
+檐 > yán; #6A90
+檑 > léi; #6A91
+檒 > fēng; #6A92
+檓 > hŭi; #6A93
+檔 > dăng; #6A94
+檕 > jì; #6A95
+檖 > sùi; #6A96
+檗 > bò; #6A97
+檘 > bì; #6A98
+檙 > dĭng; #6A99
+檚 > chŭ; #6A9A
+檛 > zhuā; #6A9B
+檜 > kuài; #6A9C
+檝 > jí; #6A9D
+檞 > jiĕ; #6A9E
+檟 > jiă; #6A9F
+檠 > qíng; #6AA0
+檡 > zhè; #6AA1
+檢 > jiăn; #6AA2
+檣 > qiáng; #6AA3
+檤 > dào; #6AA4
+檥 > yĭ; #6AA5
+檦 > biăo; #6AA6
+檧 > sōng; #6AA7
+檨 > shē; #6AA8
+檩 > lĭn; #6AA9
+檫 > chá; #6AAB
+檬 > méng; #6AAC
+檭 > yín; #6AAD
+檮 > táo; #6AAE
+檯 > tái; #6AAF
+檰 > mián; #6AB0
+檱 > qí; #6AB1
+檲 > tóan; #6AB2
+檳 > bīn; #6AB3
+檴 > hùo; #6AB4
+檵 > jì; #6AB5
+檶 > qiān; #6AB6
+檷 > mí; #6AB7
+檸 > níng; #6AB8
+檹 > yī; #6AB9
+檺 > găo; #6ABA
+檻 > jiàn; #6ABB
+檼 > yìn; #6ABC
+檽 > ér; #6ABD
+檾 > qĭng; #6ABE
+檿 > yăn; #6ABF
+櫀 > qí; #6AC0
+櫁 > mì; #6AC1
+櫂 > zhào; #6AC2
+櫃 > gùi; #6AC3
+櫄 > chūn; #6AC4
+櫅 > jī; #6AC5
+櫆 > kúi; #6AC6
+櫇 > pó; #6AC7
+櫈 > dèng; #6AC8
+櫉 > chú; #6AC9
+櫋 > mián; #6ACB
+櫌 > yōu; #6ACC
+櫍 > zhì; #6ACD
+櫎 > guàng; #6ACE
+櫏 > qiān; #6ACF
+櫐 > lĕi; #6AD0
+櫑 > lĕi; #6AD1
+櫒 > sà; #6AD2
+櫓 > lŭ; #6AD3
+櫔 > lì; #6AD4
+櫕 > cuán; #6AD5
+櫖 > lǘ; #6AD6
+櫗 > miè; #6AD7
+櫘 > hùi; #6AD8
+櫙 > ōu; #6AD9
+櫚 > lǘ; #6ADA
+櫛 > jié; #6ADB
+櫜 > gāo; #6ADC
+櫝 > dú; #6ADD
+櫞 > yuán; #6ADE
+櫟 > lì; #6ADF
+櫠 > fèi; #6AE0
+櫡 > zhúo; #6AE1
+櫢 > sŏu; #6AE2
+櫣 > lián; #6AE3
+櫥 > chú; #6AE5
+櫧 > zhū; #6AE7
+櫨 > lú; #6AE8
+櫩 > yán; #6AE9
+櫪 > lì; #6AEA
+櫫 > zhū; #6AEB
+櫬 > chèn; #6AEC
+櫭 > jié; #6AED
+櫮 > è; #6AEE
+櫯 > sū; #6AEF
+櫰 > huái; #6AF0
+櫱 > niè; #6AF1
+櫲 > yù; #6AF2
+櫳 > lóng; #6AF3
+櫴 > lài; #6AF4
+櫶 > xiăn; #6AF6
+櫸 > jŭ; #6AF8
+櫹 > xiāo; #6AF9
+櫺 > líng; #6AFA
+櫻 > yīng; #6AFB
+櫼 > jiān; #6AFC
+櫽 > yĭn; #6AFD
+櫾 > yóu; #6AFE
+櫿 > yíng; #6AFF
+欀 > xiāng; #6B00
+欁 > nóng; #6B01
+欂 > bó; #6B02
+欃 > chán; #6B03
+欄 > lán; #6B04
+欅 > jŭ; #6B05
+欆 > shuāng; #6B06
+欇 > shè; #6B07
+欈 > wéi; #6B08
+欉 > còng; #6B09
+權 > quán; #6B0A
+欋 > qú; #6B0B
+欎 > yù; #6B0E
+欏 > lúo; #6B0F
+欐 > lĭ; #6B10
+欑 > zàn; #6B11
+欒 > luán; #6B12
+欓 > dăng; #6B13
+欔 > jué; #6B14
+欖 > lăn; #6B16
+欗 > lán; #6B17
+欘 > zhŭ; #6B18
+欙 > léi; #6B19
+欚 > lĭ; #6B1A
+欛 > bà; #6B1B
+欜 > náng; #6B1C
+欝 > yù; #6B1D
+欞 > líng; #6B1E
+欠 > qiàn; #6B20
+次 > cì; #6B21
+欢 > huān; #6B22
+欣 > xīn; #6B23
+欤 > yú; #6B24
+欥 > yù; #6B25
+欦 > qiān; #6B26
+欧 > ōu; #6B27
+欨 > xū; #6B28
+欩 > chāo; #6B29
+欪 > chù; #6B2A
+欫 > chī; #6B2B
+欬 > kài; #6B2C
+欭 > yì; #6B2D
+欮 > jué; #6B2E
+欯 > xí; #6B2F
+欰 > xū; #6B30
+欱 > xià; #6B31
+欲 > yù; #6B32
+欳 > kuài; #6B33
+欴 > láng; #6B34
+欵 > kuăn; #6B35
+欶 > shùo; #6B36
+欷 > xī; #6B37
+欸 > ăi; #6B38
+欹 > yī; #6B39
+欺 > qī; #6B3A
+欻 > hū; #6B3B
+欼 > chĭ; #6B3C
+欽 > qīn; #6B3D
+款 > kuăn; #6B3E
+欿 > kăn; #6B3F
+歀 > kuăn; #6B40
+歁 > kăn; #6B41
+歂 > chuán; #6B42
+歃 > shà; #6B43
+歄 > gua; #6B44
+歅 > yīn; #6B45
+歆 > xīn; #6B46
+歇 > xiē; #6B47
+歈 > yú; #6B48
+歉 > qiàn; #6B49
+歊 > xiāo; #6B4A
+歋 > yí; #6B4B
+歌 > gē; #6B4C
+歍 > wū; #6B4D
+歎 > tàn; #6B4E
+歏 > jìn; #6B4F
+歐 > ōu; #6B50
+歑 > hū; #6B51
+歒 > tì; #6B52
+歓 > huān; #6B53
+歔 > xū; #6B54
+歕 > pèn; #6B55
+歖 > xī; #6B56
+歗 > xiào; #6B57
+歘 > xū; #6B58
+歙 > xì; #6B59
+歛 > liàn; #6B5B
+歜 > chù; #6B5C
+歝 > yì; #6B5D
+歞 > kăn; #6B5E
+歟 > yú; #6B5F
+歠 > chùo; #6B60
+歡 > huān; #6B61
+止 > zhĭ; #6B62
+正 > zhèng; #6B63
+此 > cĭ; #6B64
+步 > bù; #6B65
+武 > wŭ; #6B66
+歧 > qí; #6B67
+歨 > bù; #6B68
+歩 > bù; #6B69
+歪 > wāi; #6B6A
+歫 > jù; #6B6B
+歬 > qián; #6B6C
+歭 > chí; #6B6D
+歮 > sè; #6B6E
+歯 > chĭ; #6B6F
+歰 > sè; #6B70
+歱 > zhŏng; #6B71
+歲 > sùi; #6B72
+歳 > sùi; #6B73
+歴 > lì; #6B74
+歵 > cùo; #6B75
+歶 > yú; #6B76
+歷 > lì; #6B77
+歸 > gūi; #6B78
+歹 > dăi; #6B79
+歺 > dăi; #6B7A
+死 > sĭ; #6B7B
+歼 > jiān; #6B7C
+歽 > zhé; #6B7D
+歾 > mò; #6B7E
+歿 > mò; #6B7F
+殀 > yăo; #6B80
+殁 > mò; #6B81
+殂 > cú; #6B82
+殃 > yāng; #6B83
+殄 > tiăn; #6B84
+殅 > shēng; #6B85
+殆 > dài; #6B86
+殇 > shāng; #6B87
+殈 > xù; #6B88
+殉 > xùn; #6B89
+殊 > shū; #6B8A
+残 > cán; #6B8B
+殌 > jué; #6B8C
+殍 > piăo; #6B8D
+殎 > qià; #6B8E
+殏 > qìu; #6B8F
+殐 > sù; #6B90
+殑 > qíng; #6B91
+殒 > yŭn; #6B92
+殓 > liàn; #6B93
+殔 > yì; #6B94
+殕 > fŏu; #6B95
+殖 > zhí; #6B96
+殗 > yè; #6B97
+殘 > cán; #6B98
+殙 > hūn; #6B99
+殚 > dān; #6B9A
+殛 > jí; #6B9B
+殜 > yè; #6B9C
+殝 > zhen; #6B9D
+殞 > yŭn; #6B9E
+殟 > wēn; #6B9F
+殠 > chòu; #6BA0
+殡 > bìn; #6BA1
+殢 > tì; #6BA2
+殣 > jĭn; #6BA3
+殤 > shāng; #6BA4
+殥 > yín; #6BA5
+殦 > diāo; #6BA6
+殧 > cù; #6BA7
+殨 > hùi; #6BA8
+殩 > cuàn; #6BA9
+殪 > yì; #6BAA
+殫 > dān; #6BAB
+殬 > dù; #6BAC
+殭 > jiāng; #6BAD
+殮 > liàn; #6BAE
+殯 > bìn; #6BAF
+殰 > dú; #6BB0
+殲 > jiān; #6BB2
+殳 > shū; #6BB3
+殴 > ōu; #6BB4
+段 > duàn; #6BB5
+殶 > zhù; #6BB6
+殷 > yīn; #6BB7
+殸 > qìng; #6BB8
+殹 > yì; #6BB9
+殺 > shā; #6BBA
+殻 > què; #6BBB
+殼 > ké; #6BBC
+殽 > yáo; #6BBD
+殾 > jùn; #6BBE
+殿 > diàn; #6BBF
+毀 > hŭi; #6BC0
+毁 > hŭi; #6BC1
+毂 > gŭ; #6BC2
+毃 > què; #6BC3
+毄 > jī; #6BC4
+毅 > yì; #6BC5
+毆 > ōu; #6BC6
+毇 > hŭi; #6BC7
+毈 > duàn; #6BC8
+毉 > yī; #6BC9
+毊 > xiāo; #6BCA
+毋 > wú; #6BCB
+毌 > guàn; #6BCC
+母 > mŭ; #6BCD
+毎 > mĕi; #6BCE
+每 > mĕi; #6BCF
+毐 > ăi; #6BD0
+毑 > zŭo; #6BD1
+毒 > dú; #6BD2
+毓 > yù; #6BD3
+比 > bĭ; #6BD4
+毕 > bì; #6BD5
+毖 > bì; #6BD6
+毗 > pí; #6BD7
+毘 > pí; #6BD8
+毙 > bì; #6BD9
+毚 > chán; #6BDA
+毛 > máo; #6BDB
+毞 > pú; #6BDE
+毠 > jiā; #6BE0
+毡 > zhān; #6BE1
+毢 > sāi; #6BE2
+毣 > mù; #6BE3
+毤 > tùo; #6BE4
+毥 > xún; #6BE5
+毦 > èr; #6BE6
+毧 > róng; #6BE7
+毨 > xiăn; #6BE8
+毩 > jú; #6BE9
+毪 > mú; #6BEA
+毫 > háo; #6BEB
+毬 > qíu; #6BEC
+毭 > dòu; #6BED
+毯 > tăn; #6BEF
+毰 > péi; #6BF0
+毱 > jú; #6BF1
+毲 > dúo; #6BF2
+毳 > cùi; #6BF3
+毴 > bī; #6BF4
+毵 > sān; #6BF5
+毷 > mào; #6BF7
+毸 > sūi; #6BF8
+毹 > yū; #6BF9
+毺 > yū; #6BFA
+毻 > tùo; #6BFB
+毼 > hé; #6BFC
+毽 > jiàn; #6BFD
+毾 > tà; #6BFE
+毿 > sān; #6BFF
+氀 > lǘ; #6C00
+氁 > mú; #6C01
+氂 > lí; #6C02
+氃 > tóng; #6C03
+氄 > rŏng; #6C04
+氅 > chăng; #6C05
+氆 > pŭ; #6C06
+氇 > lúo; #6C07
+氈 > zhān; #6C08
+氉 > sào; #6C09
+氊 > zhān; #6C0A
+氋 > méng; #6C0B
+氌 > lúo; #6C0C
+氍 > qú; #6C0D
+氎 > dié; #6C0E
+氏 > shì; #6C0F
+氐 > dĭ; #6C10
+民 > mín; #6C11
+氒 > jué; #6C12
+氓 > máng; #6C13
+气 > qì; #6C14
+氕 > piē; #6C15
+氖 > năi; #6C16
+気 > qì; #6C17
+氘 > dāo; #6C18
+氙 > xiān; #6C19
+氚 > chuān; #6C1A
+氛 > fēn; #6C1B
+氜 > rì; #6C1C
+氝 > nèi; #6C1D
+氟 > fú; #6C1F
+氠 > shēn; #6C20
+氡 > dōng; #6C21
+氢 > qīng; #6C22
+氣 > qì; #6C23
+氤 > yīn; #6C24
+氥 > xī; #6C25
+氦 > hài; #6C26
+氧 > yăng; #6C27
+氨 > ān; #6C28
+氩 > yà; #6C29
+氪 > kè; #6C2A
+氫 > qīng; #6C2B
+氬 > yà; #6C2C
+氭 > dōng; #6C2D
+氮 > dàn; #6C2E
+氯 > lǜ; #6C2F
+氰 > qīng; #6C30
+氱 > yăng; #6C31
+氲 > yūn; #6C32
+氳 > yūn; #6C33
+水 > shŭi; #6C34
+氵 > sān' 'diăn' 'shŭi; #6C35
+氶 > zhĕng; #6C36
+氷 > bīng; #6C37
+永 > yŏng; #6C38
+氹 > dàng; #6C39
+氻 > lè; #6C3B
+氼 > nì; #6C3C
+氽 > tŭn; #6C3D
+氾 > fàn; #6C3E
+氿 > gŭi; #6C3F
+汀 > tīng; #6C40
+汁 > zhī; #6C41
+求 > qíu; #6C42
+汃 > bīn; #6C43
+汄 > zè; #6C44
+汅 > miăn; #6C45
+汆 > cuān; #6C46
+汇 > hùi; #6C47
+汈 > diāo; #6C48
+汉 > yì; #6C49
+汊 > chà; #6C4A
+汋 > zhúo; #6C4B
+汌 > chuàn; #6C4C
+汍 > wán; #6C4D
+汎 > fàn; #6C4E
+汏 > dài; #6C4F
+汐 > xì; #6C50
+汑 > tūo; #6C51
+汒 > máng; #6C52
+汓 > qíu; #6C53
+汔 > qì; #6C54
+汕 > shàn; #6C55
+汖 > pài; #6C56
+汗 > hàn; #6C57
+汘 > qiān; #6C58
+汙 > wū; #6C59
+汚 > wū; #6C5A
+汛 > xùn; #6C5B
+汜 > sì; #6C5C
+汝 > rŭ; #6C5D
+汞 > gŏng; #6C5E
+江 > jiāng; #6C5F
+池 > chí; #6C60
+污 > wū; #6C61
+汤 > tāng; #6C64
+汥 > zhī; #6C65
+汦 > chí; #6C66
+汧 > qiān; #6C67
+汨 > mì; #6C68
+汩 > yù; #6C69
+汪 > wāng; #6C6A
+汫 > qìng; #6C6B
+汬 > jĭng; #6C6C
+汭 > rùi; #6C6D
+汮 > jūn; #6C6E
+汯 > hóng; #6C6F
+汰 > tài; #6C70
+汱 > quăn; #6C71
+汲 > jí; #6C72
+汳 > biàn; #6C73
+汴 > biàn; #6C74
+汵 > gàn; #6C75
+汶 > wèn; #6C76
+汷 > zhōng; #6C77
+汸 > fāng; #6C78
+汹 > xīong; #6C79
+決 > jué; #6C7A
+汻 > hăng; #6C7B
+汼 > niōu; #6C7C
+汽 > qì; #6C7D
+汾 > fén; #6C7E
+汿 > xù; #6C7F
+沀 > xù; #6C80
+沁 > qìn; #6C81
+沂 > yí; #6C82
+沃 > wò; #6C83
+沄 > yún; #6C84
+沅 > yuán; #6C85
+沆 > háng; #6C86
+沇 > yăn; #6C87
+沈 > chén; #6C88
+沉 > chén; #6C89
+沊 > dàn; #6C8A
+沋 > yóu; #6C8B
+沌 > dùn; #6C8C
+沍 > hù; #6C8D
+沎 > hùo; #6C8E
+沏 > qiē; #6C8F
+沐 > mù; #6C90
+沑 > róu; #6C91
+沒 > méi; #6C92
+沓 > tà; #6C93
+沔 > miăn; #6C94
+沕 > wù; #6C95
+沖 > chōng; #6C96
+沗 > tiān; #6C97
+沘 > bĭ; #6C98
+沙 > shā; #6C99
+沚 > zhĭ; #6C9A
+沛 > pèi; #6C9B
+沜 > pàn; #6C9C
+沝 > zhŭi; #6C9D
+沞 > zā; #6C9E
+沟 > gōu; #6C9F
+沠 > líu; #6CA0
+没 > méi; #6CA1
+沢 > zé; #6CA2
+沣 > fēng; #6CA3
+沤 > òu; #6CA4
+沥 > lì; #6CA5
+沦 > lún; #6CA6
+沧 > cāng; #6CA7
+沨 > féng; #6CA8
+沩 > wéi; #6CA9
+沪 > hù; #6CAA
+沫 > mò; #6CAB
+沬 > mèi; #6CAC
+沭 > shù; #6CAD
+沮 > jū; #6CAE
+沯 > zăn; #6CAF
+沰 > tūo; #6CB0
+沱 > túo; #6CB1
+沲 > túo; #6CB2
+河 > hé; #6CB3
+沴 > lì; #6CB4
+沵 > mĭ; #6CB5
+沶 > yí; #6CB6
+沷 > fā; #6CB7
+沸 > fèi; #6CB8
+油 > yóu; #6CB9
+沺 > tián; #6CBA
+治 > zhì; #6CBB
+沼 > zhăo; #6CBC
+沽 > gū; #6CBD
+沾 > zhān; #6CBE
+沿 > yán; #6CBF
+泀 > sī; #6CC0
+況 > kuàng; #6CC1
+泂 > jĭong; #6CC2
+泃 > jù; #6CC3
+泄 > xiè; #6CC4
+泅 > qíu; #6CC5
+泆 > yī; #6CC6
+泇 > jiā; #6CC7
+泈 > zhōng; #6CC8
+泉 > quán; #6CC9
+泊 > bó; #6CCA
+泋 > hùi; #6CCB
+泌 > mì; #6CCC
+泍 > bēn; #6CCD
+泎 > zhúo; #6CCE
+泏 > chù; #6CCF
+泐 > lè; #6CD0
+泑 > yŏu; #6CD1
+泒 > gū; #6CD2
+泓 > hóng; #6CD3
+泔 > gān; #6CD4
+法 > fă; #6CD5
+泖 > măo; #6CD6
+泗 > sì; #6CD7
+泘 > hū; #6CD8
+泙 > píng; #6CD9
+泚 > cĭ; #6CDA
+泛 > fàn; #6CDB
+泜 > chí; #6CDC
+泝 > sù; #6CDD
+泞 > nìng; #6CDE
+泟 > chēng; #6CDF
+泠 > líng; #6CE0
+泡 > pào; #6CE1
+波 > bō; #6CE2
+泣 > qì; #6CE3
+泤 > sì; #6CE4
+泥 > ní; #6CE5
+泦 > jú; #6CE6
+泧 > yuè; #6CE7
+注 > zhù; #6CE8
+泩 > shēng; #6CE9
+泪 > lèi; #6CEA
+泫 > xuàn; #6CEB
+泬 > xuè; #6CEC
+泭 > fū; #6CED
+泮 > pàn; #6CEE
+泯 > mĭn; #6CEF
+泰 > tài; #6CF0
+泱 > yāng; #6CF1
+泲 > jĭ; #6CF2
+泳 > yŏng; #6CF3
+泴 > guàn; #6CF4
+泵 > bèng; #6CF5
+泶 > xué; #6CF6
+泷 > lóng; #6CF7
+泸 > lú; #6CF8
+泺 > bó; #6CFA
+泻 > xiè; #6CFB
+泼 > pō; #6CFC
+泽 > zé; #6CFD
+泾 > jīng; #6CFE
+泿 > yín; #6CFF
+洀 > zhōu; #6D00
+洁 > jí; #6D01
+洂 > yì; #6D02
+洃 > hūi; #6D03
+洄 > húi; #6D04
+洅 > zŭi; #6D05
+洆 > chéng; #6D06
+洇 > yīn; #6D07
+洈 > wéi; #6D08
+洉 > hòu; #6D09
+洊 > jiàn; #6D0A
+洋 > yáng; #6D0B
+洌 > liè; #6D0C
+洍 > sì; #6D0D
+洎 > jì; #6D0E
+洏 > ér; #6D0F
+洐 > xíng; #6D10
+洑 > fú; #6D11
+洒 > să; #6D12
+洓 > sŭo; #6D13
+洔 > zhĭ; #6D14
+洕 > yīn; #6D15
+洖 > wú; #6D16
+洗 > xĭ; #6D17
+洘 > kăo; #6D18
+洙 > zhū; #6D19
+洚 > jiàng; #6D1A
+洛 > lùo; #6D1B
+洝 > àn; #6D1D
+洞 > dòng; #6D1E
+洟 > yí; #6D1F
+洠 > móu; #6D20
+洡 > lĕi; #6D21
+洢 > yī; #6D22
+洣 > mĭ; #6D23
+洤 > quán; #6D24
+津 > jīn; #6D25
+洦 > mò; #6D26
+洧 > wĕi; #6D27
+洨 > xiáo; #6D28
+洩 > xiè; #6D29
+洪 > hóng; #6D2A
+洫 > xù; #6D2B
+洬 > shùo; #6D2C
+洭 > kuāng; #6D2D
+洮 > tāo; #6D2E
+洯 > qiè; #6D2F
+洰 > jù; #6D30
+洱 > ĕr; #6D31
+洲 > zhōu; #6D32
+洳 > rù; #6D33
+洴 > píng; #6D34
+洵 > xún; #6D35
+洶 > xīong; #6D36
+洷 > zhì; #6D37
+洸 > guāng; #6D38
+洹 > huán; #6D39
+洺 > míng; #6D3A
+活 > húo; #6D3B
+洼 > wā; #6D3C
+洽 > qià; #6D3D
+派 > pài; #6D3E
+洿 > wū; #6D3F
+浀 > qŭ; #6D40
+流 > líu; #6D41
+浂 > yì; #6D42
+浃 > jiá; #6D43
+浄 > jìng; #6D44
+浅 > qiăn; #6D45
+浆 > jiāng; #6D46
+浇 > jiāo; #6D47
+浈 > chéng; #6D48
+浉 > shī; #6D49
+浊 > zhúo; #6D4A
+测 > cè; #6D4B
+浍 > kuài; #6D4D
+济 > jì; #6D4E
+浏 > líu; #6D4F
+浐 > chăn; #6D50
+浑 > hún; #6D51
+浒 > hŭ; #6D52
+浓 > nóng; #6D53
+浔 > xún; #6D54
+浕 > jìn; #6D55
+浖 > liè; #6D56
+浗 > qíu; #6D57
+浘 > wĕi; #6D58
+浙 > zhè; #6D59
+浚 > jùn; #6D5A
+浛 > hàn; #6D5B
+浜 > bāng; #6D5C
+浝 > máng; #6D5D
+浞 > zhúo; #6D5E
+浟 > yóu; #6D5F
+浠 > xī; #6D60
+浡 > bó; #6D61
+浢 > dòu; #6D62
+浣 > wăn; #6D63
+浤 > hóng; #6D64
+浥 > yì; #6D65
+浦 > pŭ; #6D66
+浧 > yĭng; #6D67
+浨 > lăn; #6D68
+浩 > hào; #6D69
+浪 > làng; #6D6A
+浫 > hăn; #6D6B
+浬 > lĭ; #6D6C
+浭 > gēng; #6D6D
+浮 > fú; #6D6E
+浯 > wú; #6D6F
+浰 > liàn; #6D70
+浱 > chún; #6D71
+浲 > féng; #6D72
+浳 > yì; #6D73
+浴 > yù; #6D74
+浵 > tóng; #6D75
+浶 > láo; #6D76
+海 > hăi; #6D77
+浸 > jìn; #6D78
+浹 > jiá; #6D79
+浺 > chōng; #6D7A
+浻 > wĕng; #6D7B
+浼 > mĕi; #6D7C
+浽 > sūi; #6D7D
+浾 > chēng; #6D7E
+浿 > pèi; #6D7F
+涀 > xiàn; #6D80
+涁 > shèn; #6D81
+涂 > tú; #6D82
+涃 > kùn; #6D83
+涄 > pīn; #6D84
+涅 > niè; #6D85
+涆 > hàn; #6D86
+涇 > jīng; #6D87
+消 > xiāo; #6D88
+涉 > shè; #6D89
+涊 > niàn; #6D8A
+涋 > tū; #6D8B
+涌 > yŏng; #6D8C
+涍 > xiào; #6D8D
+涎 > xián; #6D8E
+涏 > tĭng; #6D8F
+涐 > é; #6D90
+涑 > sù; #6D91
+涒 > tūn; #6D92
+涓 > juān; #6D93
+涔 > cén; #6D94
+涕 > tì; #6D95
+涖 > lì; #6D96
+涗 > shùi; #6D97
+涘 > sì; #6D98
+涙 > lèi; #6D99
+涚 > shùi; #6D9A
+涛 > tāo; #6D9B
+涜 > dú; #6D9C
+涝 > lào; #6D9D
+涞 > lái; #6D9E
+涟 > lián; #6D9F
+涠 > wéi; #6DA0
+涡 > wō; #6DA1
+涢 > yún; #6DA2
+涣 > huàn; #6DA3
+涤 > dí; #6DA4
+润 > rùn; #6DA6
+涧 > jiàn; #6DA7
+涨 > zhăng; #6DA8
+涩 > sè; #6DA9
+涪 > fú; #6DAA
+涫 > guàn; #6DAB
+涬 > xìng; #6DAC
+涭 > shòu; #6DAD
+涮 > shuàn; #6DAE
+涯 > yá; #6DAF
+涰 > chùo; #6DB0
+涱 > zhàng; #6DB1
+液 > yè; #6DB2
+涳 > kōng; #6DB3
+涴 > wò; #6DB4
+涵 > hán; #6DB5
+涶 > tūo; #6DB6
+涷 > dōng; #6DB7
+涸 > hé; #6DB8
+涹 > wō; #6DB9
+涺 > jū; #6DBA
+涻 > gàn; #6DBB
+涼 > liáng; #6DBC
+涽 > hūn; #6DBD
+涾 > tà; #6DBE
+涿 > zhúo; #6DBF
+淀 > diàn; #6DC0
+淁 > qiè; #6DC1
+淂 > dé; #6DC2
+淃 > juàn; #6DC3
+淄 > zī; #6DC4
+淅 > xī; #6DC5
+淆 > yáo; #6DC6
+淇 > qí; #6DC7
+淈 > gŭ; #6DC8
+淉 > gŭo; #6DC9
+淊 > hàn; #6DCA
+淋 > lín; #6DCB
+淌 > tăng; #6DCC
+淍 > zhōu; #6DCD
+淎 > pĕng; #6DCE
+淏 > hào; #6DCF
+淐 > chāng; #6DD0
+淑 > shú; #6DD1
+淒 > qī; #6DD2
+淓 > fāng; #6DD3
+淔 > chì; #6DD4
+淕 > lù; #6DD5
+淖 > nào; #6DD6
+淗 > jú; #6DD7
+淘 > táo; #6DD8
+淙 > cóng; #6DD9
+淚 > lèi; #6DDA
+淛 > zhì; #6DDB
+淜 > péng; #6DDC
+淝 > féi; #6DDD
+淞 > sōng; #6DDE
+淟 > tiăn; #6DDF
+淠 > pì; #6DE0
+淡 > dàn; #6DE1
+淢 > yù; #6DE2
+淣 > ní; #6DE3
+淤 > yū; #6DE4
+淥 > lù; #6DE5
+淦 > gàn; #6DE6
+淧 > mì; #6DE7
+淨 > jìng; #6DE8
+淩 > líng; #6DE9
+淪 > lún; #6DEA
+淫 > yín; #6DEB
+淬 > cùi; #6DEC
+淭 > qú; #6DED
+淮 > huái; #6DEE
+淯 > yù; #6DEF
+淰 > niàn; #6DF0
+深 > shēn; #6DF1
+淲 > piáo; #6DF2
+淳 > chún; #6DF3
+淴 > wà; #6DF4
+淵 > yuān; #6DF5
+淶 > lái; #6DF6
+混 > hŭn; #6DF7
+淸 > qīng; #6DF8
+淹 > yān; #6DF9
+淺 > qiăn; #6DFA
+添 > tiān; #6DFB
+淼 > miăo; #6DFC
+淽 > zhĭ; #6DFD
+淾 > yĭn; #6DFE
+淿 > mì; #6DFF
+渀 > bēn; #6E00
+渁 > yuān; #6E01
+渂 > wèn; #6E02
+渃 > rè; #6E03
+渄 > fēi; #6E04
+清 > qīng; #6E05
+渆 > yuān; #6E06
+渇 > kĕ; #6E07
+済 > jì; #6E08
+渉 > shè; #6E09
+渊 > yuān; #6E0A
+渌 > lù; #6E0C
+渍 > zì; #6E0D
+渎 > dú; #6E0E
+渐 > jiàn; #6E10
+渑 > mĭn; #6E11
+渒 > pì; #6E12
+渔 > yú; #6E14
+渕 > yuān; #6E15
+渖 > shĕn; #6E16
+渗 > shèn; #6E17
+渘 > róu; #6E18
+渙 > huàn; #6E19
+渚 > zhŭ; #6E1A
+減 > jiăn; #6E1B
+渜 > nuăn; #6E1C
+渝 > yú; #6E1D
+渞 > qíu; #6E1E
+渟 > tíng; #6E1F
+渠 > qú; #6E20
+渡 > dù; #6E21
+渢 > féng; #6E22
+渣 > zhā; #6E23
+渤 > bó; #6E24
+渥 > wò; #6E25
+渦 > wō; #6E26
+渧 > dì; #6E27
+渨 > wēi; #6E28
+温 > wēn; #6E29
+渪 > rú; #6E2A
+渫 > xiè; #6E2B
+測 > cè; #6E2C
+渭 > wèi; #6E2D
+渮 > gē; #6E2E
+港 > găng; #6E2F
+渰 > yăn; #6E30
+渱 > hóng; #6E31
+渲 > xuàn; #6E32
+渳 > mĭ; #6E33
+渴 > kĕ; #6E34
+渵 > máo; #6E35
+渶 > yīng; #6E36
+渷 > yăn; #6E37
+游 > yóu; #6E38
+渹 > hōng; #6E39
+渺 > miăo; #6E3A
+渻 > xĭng; #6E3B
+渼 > mĕi; #6E3C
+渽 > zāi; #6E3D
+渾 > hún; #6E3E
+渿 > nài; #6E3F
+湀 > kúi; #6E40
+湁 > shí; #6E41
+湂 > è; #6E42
+湃 > pài; #6E43
+湄 > méi; #6E44
+湅 > liàn; #6E45
+湆 > qì; #6E46
+湇 > qì; #6E47
+湈 > méi; #6E48
+湉 > tián; #6E49
+湊 > còu; #6E4A
+湋 > wéi; #6E4B
+湌 > cān; #6E4C
+湍 > tuān; #6E4D
+湎 > miăn; #6E4E
+湏 > hùi; #6E4F
+湐 > mò; #6E50
+湑 > xŭ; #6E51
+湒 > jí; #6E52
+湓 > pén; #6E53
+湔 > jiān; #6E54
+湕 > jiăn; #6E55
+湖 > hú; #6E56
+湗 > fèng; #6E57
+湘 > xiāng; #6E58
+湙 > yì; #6E59
+湚 > yìn; #6E5A
+湛 > zhàn; #6E5B
+湜 > shí; #6E5C
+湝 > jiē; #6E5D
+湞 > chéng; #6E5E
+湟 > huáng; #6E5F
+湠 > tàn; #6E60
+湡 > yú; #6E61
+湢 > bì; #6E62
+湣 > mĭn; #6E63
+湤 > shī; #6E64
+湥 > tú; #6E65
+湦 > shēng; #6E66
+湧 > yŏng; #6E67
+湨 > qù; #6E68
+湩 > zhòng; #6E69
+湪 > suèi; #6E6A
+湫 > jīu; #6E6B
+湬 > jiăo; #6E6C
+湭 > qióu; #6E6D
+湮 > yīn; #6E6E
+湯 > tāng; #6E6F
+湰 > lóng; #6E70
+湱 > hùo; #6E71
+湲 > yuán; #6E72
+湳 > năn; #6E73
+湴 > bàn; #6E74
+湵 > yŏu; #6E75
+湶 > quán; #6E76
+湷 > chúi; #6E77
+湸 > liàng; #6E78
+湹 > chán; #6E79
+湺 > yán; #6E7A
+湻 > chún; #6E7B
+湼 > niè; #6E7C
+湽 > zī; #6E7D
+湾 > wān; #6E7E
+湿 > shī; #6E7F
+満 > măn; #6E80
+溁 > yíng; #6E81
+溃 > kùi; #6E83
+溅 > jiàn; #6E85
+溆 > xù; #6E86
+溇 > lǚ; #6E87
+溈 > gūi; #6E88
+溉 > gài; #6E89
+溌 > pō; #6E8C
+溍 > jìn; #6E8D
+溎 > gùi; #6E8E
+溏 > táng; #6E8F
+源 > yuán; #6E90
+溑 > sŭo; #6E91
+溒 > yuán; #6E92
+溓 > lián; #6E93
+溔 > yăo; #6E94
+溕 > mèng; #6E95
+準 > zhŭn; #6E96
+溗 > shéng; #6E97
+溘 > kè; #6E98
+溙 > tài; #6E99
+溚 > dá; #6E9A
+溛 > wā; #6E9B
+溜 > līu; #6E9C
+溝 > gōu; #6E9D
+溞 > sāo; #6E9E
+溟 > míng; #6E9F
+溠 > zhà; #6EA0
+溡 > shí; #6EA1
+溢 > yì; #6EA2
+溣 > lún; #6EA3
+溤 > mă; #6EA4
+溥 > pŭ; #6EA5
+溦 > wéi; #6EA6
+溧 > lì; #6EA7
+溨 > cái; #6EA8
+溩 > wù; #6EA9
+溪 > xī; #6EAA
+溫 > wēn; #6EAB
+溬 > qiāng; #6EAC
+溭 > zé; #6EAD
+溮 > shī; #6EAE
+溯 > sù; #6EAF
+溰 > yī; #6EB0
+溱 > zhēn; #6EB1
+溲 > sōu; #6EB2
+溳 > yún; #6EB3
+溴 > xìu; #6EB4
+溵 > yīn; #6EB5
+溶 > róng; #6EB6
+溷 > hùn; #6EB7
+溸 > sù; #6EB8
+溹 > sù; #6EB9
+溺 > nì; #6EBA
+溻 > tà; #6EBB
+溼 > shī; #6EBC
+溽 > rù; #6EBD
+溾 > wēi; #6EBE
+溿 > pàn; #6EBF
+滀 > chù; #6EC0
+滁 > chú; #6EC1
+滂 > pāng; #6EC2
+滃 > wĕng; #6EC3
+滄 > cāng; #6EC4
+滅 > miè; #6EC5
+滆 > hé; #6EC6
+滇 > diān; #6EC7
+滈 > hào; #6EC8
+滉 > huăng; #6EC9
+滊 > xì; #6ECA
+滋 > zī; #6ECB
+滌 > dí; #6ECC
+滍 > zhĭ; #6ECD
+滎 > yíng; #6ECE
+滏 > fŭ; #6ECF
+滐 > jié; #6ED0
+滑 > huá; #6ED1
+滒 > gē; #6ED2
+滓 > zĭ; #6ED3
+滔 > tāo; #6ED4
+滕 > téng; #6ED5
+滖 > sūi; #6ED6
+滗 > bĭ; #6ED7
+滘 > jiào; #6ED8
+滙 > hùi; #6ED9
+滚 > gŭn; #6EDA
+滛 > yín; #6EDB
+滜 > gāo; #6EDC
+滝 > lóng; #6EDD
+滞 > zhì; #6EDE
+滟 > yàn; #6EDF
+滠 > shè; #6EE0
+满 > măn; #6EE1
+滢 > yìng; #6EE2
+滣 > chún; #6EE3
+滤 > lǜ; #6EE4
+滥 > làn; #6EE5
+滦 > luán; #6EE6
+滨 > bīn; #6EE8
+滩 > tān; #6EE9
+滪 > yù; #6EEA
+滫 > sŏu; #6EEB
+滬 > hù; #6EEC
+滭 > bì; #6EED
+滮 > biāo; #6EEE
+滯 > zhì; #6EEF
+滰 > jiăng; #6EF0
+滱 > kòu; #6EF1
+滲 > shèn; #6EF2
+滳 > shāng; #6EF3
+滴 > dī; #6EF4
+滵 > mì; #6EF5
+滶 > áo; #6EF6
+滷 > lŭ; #6EF7
+滸 > hŭ; #6EF8
+滹 > hū; #6EF9
+滺 > yóu; #6EFA
+滻 > chăn; #6EFB
+滼 > fàn; #6EFC
+滽 > yóng; #6EFD
+滾 > gŭn; #6EFE
+滿 > măn; #6EFF
+漀 > qìng; #6F00
+漁 > yú; #6F01
+漂 > piāo; #6F02
+漃 > jí; #6F03
+漄 > yá; #6F04
+漅 > jiăo; #6F05
+漆 > qī; #6F06
+漇 > xĭ; #6F07
+漈 > jì; #6F08
+漉 > lù; #6F09
+漊 > lǚ; #6F0A
+漋 > lóng; #6F0B
+漌 > jĭn; #6F0C
+漍 > gúo; #6F0D
+漎 > cóng; #6F0E
+漏 > lòu; #6F0F
+漐 > zhí; #6F10
+漑 > gài; #6F11
+漒 > qiáng; #6F12
+漓 > lí; #6F13
+演 > yăn; #6F14
+漕 > cáo; #6F15
+漖 > jiào; #6F16
+漗 > cōng; #6F17
+漘 > qún; #6F18
+漙 > tuán; #6F19
+漚 > òu; #6F1A
+漛 > téng; #6F1B
+漜 > yĕ; #6F1C
+漝 > xí; #6F1D
+漞 > mì; #6F1E
+漟 > táng; #6F1F
+漠 > mò; #6F20
+漡 > shāng; #6F21
+漢 > hàn; #6F22
+漣 > lián; #6F23
+漤 > lăn; #6F24
+漥 > wā; #6F25
+漦 > lí; #6F26
+漧 > qián; #6F27
+漨 > féng; #6F28
+漩 > xuán; #6F29
+漪 > yī; #6F2A
+漫 > màn; #6F2B
+漬 > zì; #6F2C
+漭 > măng; #6F2D
+漮 > kāng; #6F2E
+漯 > lĕi; #6F2F
+漰 > pēng; #6F30
+漱 > shù; #6F31
+漲 > zhăng; #6F32
+漳 > zhāng; #6F33
+漴 > chóng; #6F34
+漵 > xù; #6F35
+漶 > huàn; #6F36
+漷 > kùo; #6F37
+漸 > jiàn; #6F38
+漹 > yān; #6F39
+漺 > chuăng; #6F3A
+漻 > liáo; #6F3B
+漼 > cŭi; #6F3C
+漽 > tí; #6F3D
+漾 > yàng; #6F3E
+漿 > jiāng; #6F3F
+潀 > cóng; #6F40
+潁 > yĭng; #6F41
+潂 > hóng; #6F42
+潃 > xún; #6F43
+潄 > shù; #6F44
+潅 > guàn; #6F45
+潆 > yíng; #6F46
+潇 > xiāo; #6F47
+潊 > xù; #6F4A
+潋 > liàn; #6F4B
+潌 > zhì; #6F4C
+潍 > wéi; #6F4D
+潎 > pì; #6F4E
+潏 > jué; #6F4F
+潐 > jiào; #6F50
+潑 > pō; #6F51
+潒 > dàng; #6F52
+潓 > hùi; #6F53
+潔 > jié; #6F54
+潕 > wŭ; #6F55
+潖 > pá; #6F56
+潗 > jí; #6F57
+潘 > pān; #6F58
+潙 > gúi; #6F59
+潚 > xiāo; #6F5A
+潛 > qián; #6F5B
+潜 > qián; #6F5C
+潝 > xī; #6F5D
+潞 > lù; #6F5E
+潟 > xì; #6F5F
+潠 > xuàn; #6F60
+潡 > dùn; #6F61
+潢 > huáng; #6F62
+潣 > mĭn; #6F63
+潤 > rùn; #6F64
+潥 > sù; #6F65
+潦 > liáo; #6F66
+潧 > zhēn; #6F67
+潨 > zhōng; #6F68
+潩 > yì; #6F69
+潪 > dí; #6F6A
+潫 > wān; #6F6B
+潬 > dàn; #6F6C
+潭 > tán; #6F6D
+潮 > cháo; #6F6E
+潯 > xún; #6F6F
+潰 > kùi; #6F70
+潱 > yie; #6F71
+潲 > shào; #6F72
+潳 > tú; #6F73
+潴 > zhū; #6F74
+潵 > sàn; #6F75
+潶 > hēi; #6F76
+潷 > bĭ; #6F77
+潸 > shān; #6F78
+潹 > chán; #6F79
+潺 > chán; #6F7A
+潻 > shŭ; #6F7B
+潼 > tóng; #6F7C
+潽 > pŭ; #6F7D
+潾 > lín; #6F7E
+潿 > wéi; #6F7F
+澀 > sè; #6F80
+澁 > sè; #6F81
+澂 > chéng; #6F82
+澃 > jìong; #6F83
+澄 > chéng; #6F84
+澅 > huà; #6F85
+澆 > jiāo; #6F86
+澇 > lào; #6F87
+澈 > chè; #6F88
+澉 > găn; #6F89
+澊 > cūn; #6F8A
+澋 > hèng; #6F8B
+澌 > sī; #6F8C
+澍 > shù; #6F8D
+澎 > péng; #6F8E
+澏 > hàn; #6F8F
+澐 > yún; #6F90
+澑 > lìu; #6F91
+澒 > hòng; #6F92
+澓 > fú; #6F93
+澔 > hào; #6F94
+澕 > hé; #6F95
+澖 > xiān; #6F96
+澗 > jiàn; #6F97
+澘 > shān; #6F98
+澙 > xì; #6F99
+澜 > lán; #6F9C
+澞 > yú; #6F9E
+澟 > lĭn; #6F9F
+澠 > mĭn; #6FA0
+澡 > zăo; #6FA1
+澢 > dāng; #6FA2
+澣 > wăn; #6FA3
+澤 > zé; #6FA4
+澥 > xiè; #6FA5
+澦 > yù; #6FA6
+澧 > lĭ; #6FA7
+澨 > shì; #6FA8
+澩 > xué; #6FA9
+澪 > líng; #6FAA
+澫 > màn; #6FAB
+澬 > zī; #6FAC
+澭 > yōng; #6FAD
+澮 > kuài; #6FAE
+澯 > càn; #6FAF
+澰 > liàn; #6FB0
+澱 > diàn; #6FB1
+澲 > yè; #6FB2
+澳 > ào; #6FB3
+澴 > huán; #6FB4
+澵 > zhēn; #6FB5
+澶 > chán; #6FB6
+澷 > màn; #6FB7
+澸 > dăn; #6FB8
+澹 > dàn; #6FB9
+澺 > yì; #6FBA
+澻 > sùi; #6FBB
+澼 > pì; #6FBC
+澽 > jù; #6FBD
+澾 > tà; #6FBE
+澿 > qín; #6FBF
+激 > jī; #6FC0
+濁 > zhúo; #6FC1
+濂 > lián; #6FC2
+濃 > nóng; #6FC3
+濄 > gūo; #6FC4
+濅 > jìn; #6FC5
+濆 > fén; #6FC6
+濇 > sè; #6FC7
+濈 > jí; #6FC8
+濉 > sūi; #6FC9
+濊 > hùi; #6FCA
+濋 > chŭ; #6FCB
+濌 > tà; #6FCC
+濍 > sōng; #6FCD
+濎 > dĭng; #6FCE
+濐 > zhŭ; #6FD0
+濑 > lài; #6FD1
+濒 > bīn; #6FD2
+濓 > lián; #6FD3
+濔 > mĭ; #6FD4
+濕 > shī; #6FD5
+濖 > shù; #6FD6
+濗 > mì; #6FD7
+濘 > nìng; #6FD8
+濙 > yíng; #6FD9
+濚 > yíng; #6FDA
+濛 > méng; #6FDB
+濜 > jìn; #6FDC
+濝 > qí; #6FDD
+濞 > pì; #6FDE
+濟 > jì; #6FDF
+濠 > háo; #6FE0
+濡 > rú; #6FE1
+濢 > zŭi; #6FE2
+濣 > wò; #6FE3
+濤 > tāo; #6FE4
+濥 > yìn; #6FE5
+濦 > yĭn; #6FE6
+濧 > dùi; #6FE7
+濨 > cí; #6FE8
+濩 > hùo; #6FE9
+濪 > jìng; #6FEA
+濫 > làn; #6FEB
+濬 > jùn; #6FEC
+濭 > ài; #6FED
+濮 > pū; #6FEE
+濯 > zhúo; #6FEF
+濰 > wéi; #6FF0
+濱 > bīn; #6FF1
+濲 > gŭ; #6FF2
+濳 > qián; #6FF3
+濴 > xíng; #6FF4
+濶 > kùo; #6FF6
+濷 > fèi; #6FF7
+濺 > jiàn; #6FFA
+濻 > wĕi; #6FFB
+濼 > lùo; #6FFC
+濽 > zàn; #6FFD
+濾 > lǜ; #6FFE
+濿 > lì; #6FFF
+瀀 > yōu; #7000
+瀁 > yàng; #7001
+瀂 > lŭ; #7002
+瀃 > sì; #7003
+瀄 > jié; #7004
+瀅 > yìng; #7005
+瀆 > dú; #7006
+瀇 > wăng; #7007
+瀈 > hūi; #7008
+瀉 > xiè; #7009
+瀊 > pán; #700A
+瀋 > shĕn; #700B
+瀌 > biāo; #700C
+瀍 > chán; #700D
+瀎 > mò; #700E
+瀏 > líu; #700F
+瀐 > jiān; #7010
+瀑 > pù; #7011
+瀒 > sè; #7012
+瀓 > chéng; #7013
+瀔 > gŭ; #7014
+瀕 > bīn; #7015
+瀖 > hùo; #7016
+瀗 > xiàn; #7017
+瀘 > lú; #7018
+瀙 > qīn; #7019
+瀚 > hàn; #701A
+瀛 > yíng; #701B
+瀜 > yōng; #701C
+瀝 > lì; #701D
+瀞 > jìng; #701E
+瀟 > xiāo; #701F
+瀠 > yíng; #7020
+瀡 > sŭi; #7021
+瀢 > wéi; #7022
+瀣 > xiè; #7023
+瀤 > huái; #7024
+瀥 > hào; #7025
+瀦 > zhū; #7026
+瀧 > lóng; #7027
+瀨 > lài; #7028
+瀩 > dùi; #7029
+瀪 > fán; #702A
+瀫 > hú; #702B
+瀬 > lài; #702C
+瀯 > yíng; #702F
+瀰 > mí; #7030
+瀱 > jì; #7031
+瀲 > liàn; #7032
+瀳 > jiàn; #7033
+瀴 > yĭng; #7034
+瀵 > fèn; #7035
+瀶 > lín; #7036
+瀷 > yì; #7037
+瀸 > jiān; #7038
+瀹 > yuè; #7039
+瀺 > chán; #703A
+瀻 > dài; #703B
+瀼 > ráng; #703C
+瀽 > jiăn; #703D
+瀾 > lán; #703E
+瀿 > fán; #703F
+灀 > shuàng; #7040
+灁 > yuān; #7041
+灂 > zhúo; #7042
+灃 > fēng; #7043
+灄 > shè; #7044
+灅 > lĕi; #7045
+灆 > lán; #7046
+灇 > cóng; #7047
+灈 > qú; #7048
+灉 > yōng; #7049
+灊 > qián; #704A
+灋 > fă; #704B
+灌 > guàn; #704C
+灍 > què; #704D
+灎 > yàn; #704E
+灏 > hào; #704F
+灑 > să; #7051
+灒 > zàn; #7052
+灓 > luán; #7053
+灔 > yàn; #7054
+灕 > lí; #7055
+灖 > mĭ; #7056
+灗 > shàn; #7057
+灘 > tān; #7058
+灙 > dăng; #7059
+灚 > jiăo; #705A
+灛 > chăn; #705B
+灝 > hào; #705D
+灞 > bà; #705E
+灟 > zhú; #705F
+灠 > lăn; #7060
+灡 > lán; #7061
+灢 > năng; #7062
+灣 > wān; #7063
+灤 > luán; #7064
+灥 > xún; #7065
+灦 > xiăn; #7066
+灧 > yàn; #7067
+灨 > găn; #7068
+灩 > yàn; #7069
+灪 > yù; #706A
+火 > hŭo; #706B
+灬 > sì' 'diăn' 'hŭo; #706C
+灭 > miè; #706D
+灮 > guāng; #706E
+灯 > dēng; #706F
+灰 > hūi; #7070
+灱 > xiāo; #7071
+灲 > xiāo; #7072
+灳 > hū1; #7073
+灴 > hóng; #7074
+灵 > líng; #7075
+灶 > zào; #7076
+灷 > zhuàn; #7077
+灸 > jĭu; #7078
+灹 > zhà; #7079
+灺 > xiè; #707A
+灻 > chì; #707B
+灼 > zhúo; #707C
+災 > zāi; #707D
+灾 > zāi; #707E
+灿 > càn; #707F
+炀 > yáng; #7080
+炁 > qì; #7081
+炂 > zhōng; #7082
+炃 > fén; #7083
+炄 > nĭu; #7084
+炅 > jĭong; #7085
+炆 > wén; #7086
+炇 > pò; #7087
+炈 > yì; #7088
+炉 > lú; #7089
+炊 > chūi; #708A
+炋 > pī; #708B
+炌 > kài; #708C
+炍 > pàn; #708D
+炎 > yán; #708E
+炏 > kài; #708F
+炐 > pàng; #7090
+炑 > mù; #7091
+炒 > chăo; #7092
+炓 > liào; #7093
+炔 > gùi; #7094
+炕 > kàng; #7095
+炖 > tūn; #7096
+炗 > guāng; #7097
+炘 > xīn; #7098
+炙 > zhì; #7099
+炚 > guang; #709A
+炛 > guāng; #709B
+炜 > wĕi; #709C
+炝 > qiàng; #709D
+炟 > dá; #709F
+炠 > xiá; #70A0
+炡 > zhēng; #70A1
+炢 > zhú; #70A2
+炣 > kĕ; #70A3
+炤 > zhào; #70A4
+炥 > fú; #70A5
+炦 > bá; #70A6
+炧 > dùo; #70A7
+炨 > dùo; #70A8
+炩 > lìng; #70A9
+炪 > zhúo; #70AA
+炫 > xuàn; #70AB
+炬 > jù; #70AC
+炭 > tàn; #70AD
+炮 > pào; #70AE
+炯 > jĭong; #70AF
+炰 > páo; #70B0
+炱 > tái; #70B1
+炲 > tái; #70B2
+炳 > bĭng; #70B3
+炴 > yăng; #70B4
+炵 > tōng; #70B5
+炶 > hān; #70B6
+炷 > zhù; #70B7
+炸 > zhà; #70B8
+点 > diăn; #70B9
+為 > wèi; #70BA
+炻 > shí; #70BB
+炼 > liàn; #70BC
+炽 > chì; #70BD
+炾 > huăng; #70BE
+烀 > hū; #70C0
+烁 > shùo; #70C1
+烂 > làn; #70C2
+烃 > jĭng; #70C3
+烄 > jiăo; #70C4
+烅 > xù; #70C5
+烆 > xíng; #70C6
+烇 > quàn; #70C7
+烈 > liè; #70C8
+烉 > huàn; #70C9
+烊 > yáng; #70CA
+烋 > xiāo; #70CB
+烌 > xīu; #70CC
+烍 > xiăn; #70CD
+烎 > yín; #70CE
+烏 > wū; #70CF
+烐 > zhōu; #70D0
+烑 > yáo; #70D1
+烒 > shì; #70D2
+烓 > wēi; #70D3
+烔 > tóng; #70D4
+烕 > xuè; #70D5
+烖 > zāi; #70D6
+烗 > kài; #70D7
+烘 > hōng; #70D8
+烙 > lùo; #70D9
+烚 > xiá; #70DA
+烛 > zhú; #70DB
+烜 > xuăn; #70DC
+烝 > zhēng; #70DD
+烞 > pò; #70DE
+烟 > yān; #70DF
+烠 > hŭi; #70E0
+烡 > guāng; #70E1
+烢 > zhè; #70E2
+烣 > hūi; #70E3
+烤 > kăo; #70E4
+烦 > fán; #70E6
+烧 > shāo; #70E7
+烨 > yè; #70E8
+烩 > hùi; #70E9
+烫 > tàng; #70EB
+烬 > jìn; #70EC
+热 > rè; #70ED
+烯 > xī; #70EF
+烰 > fú; #70F0
+烱 > jĭong; #70F1
+烲 > chè; #70F2
+烳 > pŭ; #70F3
+烴 > jĭng; #70F4
+烵 > zhúo; #70F5
+烶 > tĭng; #70F6
+烷 > wán; #70F7
+烸 > hăi; #70F8
+烹 > pēng; #70F9
+烺 > lăng; #70FA
+烻 > shān; #70FB
+烼 > hū; #70FC
+烽 > fēng; #70FD
+烾 > chì; #70FE
+烿 > róng; #70FF
+焀 > hú; #7100
+焁 > xi; #7101
+焂 > shú; #7102
+焃 > hè; #7103
+焄 > xūn; #7104
+焅 > kù; #7105
+焆 > jué; #7106
+焇 > xiāo; #7107
+焈 > xī; #7108
+焉 > yān; #7109
+焊 > hàn; #710A
+焋 > zhuàng; #710B
+焌 > jùn; #710C
+焍 > dì; #710D
+焎 > xiè; #710E
+焏 > jí; #710F
+焐 > wù; #7110
+焓 > hán; #7113
+焔 > yàn; #7114
+焕 > huàn; #7115
+焖 > mèn; #7116
+焗 > jú; #7117
+焘 > chóu; #7118
+焙 > bèi; #7119
+焚 > fén; #711A
+焛 > lìn; #711B
+焜 > kūn; #711C
+焝 > hùn; #711D
+焞 > tūn; #711E
+焟 > xí; #711F
+焠 > cùi; #7120
+無 > wú; #7121
+焢 > hōng; #7122
+焣 > jù; #7123
+焤 > fŭ; #7124
+焥 > wò; #7125
+焦 > jiāo; #7126
+焧 > cōng; #7127
+焨 > fèng; #7128
+焩 > pīng; #7129
+焪 > qīong; #712A
+焫 > rùo; #712B
+焬 > xí; #712C
+焭 > qíong; #712D
+焮 > xìn; #712E
+焯 > zhúo; #712F
+焰 > yàn; #7130
+焱 > yàn; #7131
+焲 > yì; #7132
+焳 > jué; #7133
+焴 > yù; #7134
+焵 > gàng; #7135
+然 > rán; #7136
+焷 > pí; #7137
+焸 > gŭ; #7138
+焺 > shēng; #713A
+焻 > chàng; #713B
+焼 > shāo; #713C
+煁 > chén; #7141
+煂 > hè; #7142
+煃 > kŭi; #7143
+煄 > zhōng; #7144
+煅 > duàn; #7145
+煆 > xiā; #7146
+煇 > hūi; #7147
+煈 > fèng; #7148
+煉 > liàn; #7149
+煊 > xuān; #714A
+煋 > xīng; #714B
+煌 > huáng; #714C
+煍 > jiăo; #714D
+煎 > jiān; #714E
+煏 > bì; #714F
+煐 > yīng; #7150
+煑 > zhŭ; #7151
+煒 > wĕi; #7152
+煓 > tuān; #7153
+煔 > tiàn; #7154
+煕 > xī; #7155
+煖 > nuăn; #7156
+煗 > nuăn; #7157
+煘 > chán; #7158
+煙 > yān; #7159
+煚 > jĭong; #715A
+煛 > jĭong; #715B
+煜 > yù; #715C
+煝 > mèi; #715D
+煞 > shà; #715E
+煟 > wèi; #715F
+煠 > yè; #7160
+煡 > xìn; #7161
+煢 > qíong; #7162
+煣 > rŏu; #7163
+煤 > méi; #7164
+煥 > huàn; #7165
+煦 > xŭ; #7166
+照 > zhào; #7167
+煨 > wēi; #7168
+煩 > fán; #7169
+煪 > qíu; #716A
+煫 > sùi; #716B
+煬 > yáng; #716C
+煭 > liè; #716D
+煮 > zhŭ; #716E
+煯 > jie; #716F
+煰 > gào; #7170
+煱 > guā; #7171
+煲 > bào; #7172
+煳 > hú; #7173
+煴 > yūn; #7174
+煵 > xiā; #7175
+煸 > biān; #7178
+煹 > gòu; #7179
+煺 > tùi; #717A
+煻 > táng; #717B
+煼 > chăo; #717C
+煽 > shān; #717D
+煾 > n; #717E
+煿 > bó; #717F
+熀 > huăng; #7180
+熁 > xié; #7181
+熂 > xì; #7182
+熃 > wù; #7183
+熄 > xí; #7184
+熅 > yún; #7185
+熆 > hé; #7186
+熇 > hè; #7187
+熈 > xī; #7188
+熉 > yún; #7189
+熊 > xíong; #718A
+熋 > nái; #718B
+熌 > shàn; #718C
+熍 > qiong; #718D
+熎 > yào; #718E
+熏 > xūn; #718F
+熐 > mì; #7190
+熑 > lián; #7191
+熒 > yíng; #7192
+熓 > wèn; #7193
+熔 > róng; #7194
+熗 > qiàng; #7197
+熘 > līu; #7198
+熙 > xī; #7199
+熚 > bì; #719A
+熛 > biāo; #719B
+熜 > zŏng; #719C
+熝 > lù; #719D
+熞 > jiān; #719E
+熟 > shóu; #719F
+熠 > yì; #71A0
+熡 > lóu; #71A1
+熢 > fēng; #71A2
+熣 > sūi; #71A3
+熤 > yì; #71A4
+熥 > tōng; #71A5
+熦 > jué; #71A6
+熧 > zōng; #71A7
+熨 > yùn; #71A8
+熩 > hù; #71A9
+熪 > yí; #71AA
+熫 > zhì; #71AB
+熬 > áo; #71AC
+熭 > wèi; #71AD
+熮 > liáo; #71AE
+熯 > hàn; #71AF
+熰 > ōu; #71B0
+熱 > rè; #71B1
+熲 > jĭong; #71B2
+熳 > màn; #71B3
+熵 > shāng; #71B5
+熶 > cuàn; #71B6
+熷 > zēng; #71B7
+熸 > jiān; #71B8
+熹 > xī; #71B9
+熺 > xī; #71BA
+熻 > xī; #71BB
+熼 > yì; #71BC
+熽 > xiào; #71BD
+熾 > chì; #71BE
+熿 > huáng; #71BF
+燀 > chăn; #71C0
+燁 > yè; #71C1
+燂 > qián; #71C2
+燃 > rán; #71C3
+燄 > yàn; #71C4
+燅 > xián; #71C5
+燆 > qiáo; #71C6
+燇 > zùn; #71C7
+燈 > dēng; #71C8
+燉 > dùn; #71C9
+燊 > shēn; #71CA
+燋 > jiāo; #71CB
+燌 > fén; #71CC
+燍 > sī; #71CD
+燎 > liào; #71CE
+燏 > yù; #71CF
+燐 > lín; #71D0
+燑 > tóng; #71D1
+燒 > shāo; #71D2
+燓 > fēn; #71D3
+燔 > fán; #71D4
+燕 > yàn; #71D5
+燖 > xún; #71D6
+燗 > làn; #71D7
+燘 > mĕi; #71D8
+燙 > tàng; #71D9
+燚 > yī; #71DA
+燛 > jĭng; #71DB
+燜 > mèn; #71DC
+營 > yíng; #71DF
+燠 > yù; #71E0
+燡 > yì; #71E1
+燢 > xué; #71E2
+燣 > lán; #71E3
+燤 > tài; #71E4
+燥 > zào; #71E5
+燦 > càn; #71E6
+燧 > sùi; #71E7
+燨 > xī; #71E8
+燩 > què; #71E9
+燪 > cōng; #71EA
+燫 > lián; #71EB
+燬 > hŭi; #71EC
+燭 > zhú; #71ED
+燮 > xiè; #71EE
+燯 > líng; #71EF
+燰 > wēi; #71F0
+燱 > yì; #71F1
+燲 > xié; #71F2
+燳 > zhào; #71F3
+燴 > hùi; #71F4
+燷 > lán; #71F7
+燸 > rú; #71F8
+燹 > xiăn; #71F9
+燺 > kăo; #71FA
+燻 > xūn; #71FB
+燼 > jìn; #71FC
+燽 > chóu; #71FD
+燾 > chóu; #71FE
+燿 > yào; #71FF
+爀 > hè; #7200
+爁 > làn; #7201
+爂 > biāo; #7202
+爃 > róng; #7203
+爄 > lì; #7204
+爅 > mò; #7205
+爆 > bào; #7206
+爇 > rùo; #7207
+爈 > lǘ; #7208
+爉 > là; #7209
+爊 > áo; #720A
+爋 > xùn; #720B
+爌 > kuàng; #720C
+爍 > shùo; #720D
+爏 > lì; #720F
+爐 > lú; #7210
+爑 > jué; #7211
+爒 > liào; #7212
+爓 > yàn; #7213
+爔 > xī; #7214
+爕 > xiè; #7215
+爖 > lóng; #7216
+爗 > yè; #7217
+爙 > răng; #7219
+爚 > yuè; #721A
+爛 > làn; #721B
+爜 > cóng; #721C
+爝 > jué; #721D
+爞 > tóng; #721E
+爟 > guàn; #721F
+爡 > chè; #7221
+爢 > mí; #7222
+爣 > tăng; #7223
+爤 > làn; #7224
+爥 > zhú; #7225
+爧 > líng; #7227
+爨 > cuàn; #7228
+爩 > yù; #7229
+爪 > zhuă; #722A
+爬 > pá; #722C
+爭 > zhēng; #722D
+爮 > páo; #722E
+爯 > chēng; #722F
+爰 > yuán; #7230
+爱 > ài; #7231
+爲 > wèi; #7232
+爴 > jué; #7234
+爵 > jué; #7235
+父 > fù; #7236
+爷 > yé; #7237
+爸 > bà; #7238
+爹 > diē; #7239
+爺 > yé; #723A
+爻 > yáo; #723B
+爼 > zŭ; #723C
+爽 > shuăng; #723D
+爾 > ĕr; #723E
+爿 > qiáng; #723F
+牀 > chuáng; #7240
+牁 > gē; #7241
+牂 > zāng; #7242
+牃 > dié; #7243
+牄 > qiāng; #7244
+牅 > yóng; #7245
+牆 > qiáng; #7246
+片 > piàn; #7247
+版 > băn; #7248
+牉 > pàn; #7249
+牊 > sháo; #724A
+牋 > jiān; #724B
+牌 > pái; #724C
+牍 > dú; #724D
+牎 > chuāng; #724E
+牏 > tóu; #724F
+牐 > zhá; #7250
+牑 > biān; #7251
+牒 > dié; #7252
+牓 > băng; #7253
+牔 > bó; #7254
+牕 > chuāng; #7255
+牖 > yŏu; #7256
+牘 > dú; #7258
+牙 > yá; #7259
+牚 > chèng; #725A
+牛 > níu; #725B
+牝 > pìn; #725D
+牞 > jīu; #725E
+牟 > móu; #725F
+牠 > tūo; #7260
+牡 > mŭ; #7261
+牢 > láo; #7262
+牣 > rèn; #7263
+牤 > máng; #7264
+牥 > fāng; #7265
+牦 > máo; #7266
+牧 > mù; #7267
+牨 > gāng; #7268
+物 > wù; #7269
+牪 > yàn; #726A
+牫 > gē; #726B
+牬 > bèi; #726C
+牭 > sì; #726D
+牮 > jiàn; #726E
+牯 > gŭ; #726F
+牰 > yòu; #7270
+牱 > gē; #7271
+牲 > shēng; #7272
+牳 > mŭ; #7273
+牴 > dĭ; #7274
+牵 > qiān; #7275
+牶 > quàn; #7276
+牷 > quán; #7277
+牸 > zì; #7278
+特 > tè; #7279
+牺 > xī; #727A
+牻 > máng; #727B
+牼 > kēng; #727C
+牽 > qiān; #727D
+牾 > wú; #727E
+牿 > gù; #727F
+犀 > xī; #7280
+犁 > lí; #7281
+犂 > lí; #7282
+犃 > pŏu; #7283
+犄 > jī; #7284
+犅 > gāng; #7285
+犆 > zhí; #7286
+犇 > bēn; #7287
+犈 > quán; #7288
+犉 > rún; #7289
+犊 > dú; #728A
+犋 > jù; #728B
+犌 > jiā; #728C
+犍 > jiān; #728D
+犎 > fēng; #728E
+犏 > piān; #728F
+犐 > kē; #7290
+犑 > jú; #7291
+犒 > kào; #7292
+犓 > chú; #7293
+犔 > xì; #7294
+犕 > bèi; #7295
+犖 > lùo; #7296
+犗 > jiè; #7297
+犘 > má; #7298
+犙 > sān; #7299
+犚 > wèi; #729A
+犛 > lí; #729B
+犜 > dūn; #729C
+犝 > tóng; #729D
+犟 > jiàng; #729F
+犡 > lì; #72A1
+犢 > dú; #72A2
+犣 > liè; #72A3
+犤 > pí; #72A4
+犥 > piăo; #72A5
+犦 > bào; #72A6
+犧 > xī; #72A7
+犨 > chōu; #72A8
+犩 > wèi; #72A9
+犪 > kúi; #72AA
+犫 > chōu; #72AB
+犬 > quăn; #72AC
+犭 > făn' 'quăn' 'páng; #72AD
+犮 > bá; #72AE
+犯 > fàn; #72AF
+犰 > qíu; #72B0
+犱 > jĭ; #72B1
+犲 > cái; #72B2
+犳 > chúo; #72B3
+犴 > àn; #72B4
+犵 > jié; #72B5
+状 > zhuàng; #72B6
+犷 > guăng; #72B7
+犸 > mà; #72B8
+犹 > yóu; #72B9
+犺 > kàng; #72BA
+犻 > bó; #72BB
+犼 > hŏu; #72BC
+犽 > yá; #72BD
+犾 > yín; #72BE
+犿 > huān; #72BF
+狀 > zhuàng; #72C0
+狁 > yŭn; #72C1
+狂 > kuáng; #72C2
+狃 > nĭu; #72C3
+狄 > dí; #72C4
+狅 > qīng; #72C5
+狆 > zhòng; #72C6
+狇 > mù; #72C7
+狈 > bèi; #72C8
+狉 > pī; #72C9
+狊 > jú; #72CA
+狋 > ní; #72CB
+狌 > shēng; #72CC
+狍 > páo; #72CD
+狎 > xiá; #72CE
+狏 > túo; #72CF
+狐 > hú; #72D0
+狑 > líng; #72D1
+狒 > fèi; #72D2
+狓 > pī; #72D3
+狔 > nĭ; #72D4
+狕 > ăo; #72D5
+狖 > yòu; #72D6
+狗 > gŏu; #72D7
+狘 > yuè; #72D8
+狙 > jū; #72D9
+狚 > dàn; #72DA
+狛 > pò; #72DB
+狜 > gŭ; #72DC
+狝 > xiăn; #72DD
+狞 > níng; #72DE
+狟 > huán; #72DF
+狠 > hĕn; #72E0
+狡 > jiăo; #72E1
+狢 > hé; #72E2
+狣 > zhào; #72E3
+狤 > jí; #72E4
+狥 > xùn; #72E5
+狦 > shān; #72E6
+狧 > tà; #72E7
+狨 > róng; #72E8
+狩 > shòu; #72E9
+狪 > tōng; #72EA
+狫 > lăo; #72EB
+独 > dú; #72EC
+狭 > xiá; #72ED
+狮 > shī; #72EE
+狯 > huá; #72EF
+狰 > zhēng; #72F0
+狱 > yù; #72F1
+狲 > sūn; #72F2
+狳 > yú; #72F3
+狴 > bì; #72F4
+狵 > máng; #72F5
+狶 > xĭ; #72F6
+狷 > juàn; #72F7
+狸 > lí; #72F8
+狹 > xiá; #72F9
+狺 > yín; #72FA
+狻 > suān; #72FB
+狼 > láng; #72FC
+狽 > bèi; #72FD
+狾 > zhì; #72FE
+狿 > yán; #72FF
+猀 > shā; #7300
+猁 > lì; #7301
+猂 > hàn; #7302
+猃 > xiăn; #7303
+猄 > jīng; #7304
+猅 > pái; #7305
+猆 > fēi; #7306
+猇 > yáo; #7307
+猈 > bà; #7308
+猉 > qí; #7309
+猊 > ní; #730A
+猋 > biāo; #730B
+猌 > yìn; #730C
+猍 > lái; #730D
+猎 > xí; #730E
+猏 > jiān; #730F
+猐 > qiāng; #7310
+猑 > kūn; #7311
+猒 > yān; #7312
+猓 > gŭo; #7313
+猔 > zòng; #7314
+猕 > mí; #7315
+猖 > chāng; #7316
+猗 > yī; #7317
+猘 > zhì; #7318
+猙 > zhēng; #7319
+猚 > yá; #731A
+猛 > mĕng; #731B
+猜 > cāi; #731C
+猝 > cù; #731D
+猞 > shè; #731E
+猡 > lúo; #7321
+猢 > hú; #7322
+猣 > zōng; #7323
+猤 > jì; #7324
+猥 > wĕi; #7325
+猦 > fēng; #7326
+猧 > wō; #7327
+猨 > yuán; #7328
+猩 > xīng; #7329
+猪 > zhū; #732A
+猫 > māo; #732B
+猬 > wèi; #732C
+猭 > yuán; #732D
+献 > xiàn; #732E
+猯 > tuān; #732F
+猰 > yà; #7330
+猱 > náo; #7331
+猲 > xiē; #7332
+猳 > jiā; #7333
+猴 > hóu; #7334
+猵 > biān; #7335
+猶 > yóu; #7336
+猷 > yóu; #7337
+猸 > méi; #7338
+猹 > zhā; #7339
+猺 > yáo; #733A
+猻 > sūn; #733B
+猼 > bó; #733C
+猽 > míng; #733D
+猾 > huá; #733E
+猿 > yuán; #733F
+獀 > sōu; #7340
+獁 > mà; #7341
+獂 > yuán; #7342
+獃 > dāi; #7343
+獄 > yù; #7344
+獅 > shī; #7345
+獆 > háo; #7346
+獈 > yì; #7348
+獉 > zhēn; #7349
+獊 > chuàng; #734A
+獋 > háo; #734B
+獌 > màn; #734C
+獍 > jìng; #734D
+獎 > jiăng; #734E
+獏 > mú; #734F
+獐 > zhāng; #7350
+獑 > chán; #7351
+獒 > áo; #7352
+獓 > áo; #7353
+獔 > háo; #7354
+獕 > cūi; #7355
+獖 > fén; #7356
+獗 > jué; #7357
+獘 > bì; #7358
+獙 > bì; #7359
+獚 > huáng; #735A
+獛 > pú; #735B
+獜 > lín; #735C
+獝 > yù; #735D
+獞 > tóng; #735E
+獟 > yào; #735F
+獠 > liáo; #7360
+獡 > shùo; #7361
+獢 > xiāo; #7362
+獥 > xí; #7365
+獦 > gé; #7366
+獧 > juàn; #7367
+獨 > dú; #7368
+獩 > hùi; #7369
+獪 > kuài; #736A
+獫 > xiăn; #736B
+獬 > xiè; #736C
+獭 > tà; #736D
+獮 > xiăn; #736E
+獯 > xūn; #736F
+獰 > níng; #7370
+獱 > pín; #7371
+獲 > hùo; #7372
+獳 > nòu; #7373
+獴 > méng; #7374
+獵 > liè; #7375
+獶 > náo; #7376
+獷 > guăng; #7377
+獸 > shòu; #7378
+獹 > lú; #7379
+獺 > tà; #737A
+獻 > xiàn; #737B
+獼 > mí; #737C
+獽 > ráng; #737D
+獾 > huān; #737E
+獿 > náo; #737F
+玀 > lúo; #7380
+玁 > xiăn; #7381
+玂 > qí; #7382
+玃 > jué; #7383
+玄 > xuán; #7384
+玅 > miào; #7385
+玆 > zī; #7386
+率 > lǜ; #7387
+玈 > lú; #7388
+玉 > yù; #7389
+玊 > sù; #738A
+王 > wáng; #738B
+玌 > qíu; #738C
+玍 > gă; #738D
+玎 > dīng; #738E
+玏 > lè; #738F
+玐 > bā; #7390
+玑 > jī; #7391
+玒 > hóng; #7392
+玓 > dì; #7393
+玔 > quàn; #7394
+玕 > gān; #7395
+玖 > jĭu; #7396
+玗 > yú; #7397
+玘 > jĭ; #7398
+玙 > yú; #7399
+玚 > yáng; #739A
+玛 > mă; #739B
+玜 > gōng; #739C
+玝 > wŭ; #739D
+玞 > fū; #739E
+玟 > wén; #739F
+玠 > jiè; #73A0
+玡 > yà; #73A1
+玢 > fén; #73A2
+玣 > biàn; #73A3
+玤 > bĕng; #73A4
+玥 > yuè; #73A5
+玦 > jué; #73A6
+玧 > yŭn; #73A7
+玨 > jué; #73A8
+玩 > wán; #73A9
+玪 > jiān; #73AA
+玫 > méi; #73AB
+玬 > dăn; #73AC
+玭 > pí; #73AD
+玮 > wĕi; #73AE
+环 > huán; #73AF
+现 > xiàn; #73B0
+玱 > qiāng; #73B1
+玲 > líng; #73B2
+玳 > dài; #73B3
+玴 > yì; #73B4
+玵 > án; #73B5
+玶 > píng; #73B6
+玷 > diàn; #73B7
+玸 > fú; #73B8
+玹 > xuán; #73B9
+玺 > xĭ; #73BA
+玻 > bō; #73BB
+玼 > cĭ; #73BC
+玽 > gŏu; #73BD
+玾 > jiă; #73BE
+玿 > sháo; #73BF
+珀 > pò; #73C0
+珁 > cí; #73C1
+珂 > kē; #73C2
+珃 > răn; #73C3
+珄 > shēng; #73C4
+珅 > shēn; #73C5
+珆 > yí; #73C6
+珇 > zŭ; #73C7
+珈 > jiā; #73C8
+珉 > mín; #73C9
+珊 > shān; #73CA
+珋 > lĭu; #73CB
+珌 > bì; #73CC
+珍 > zhēn; #73CD
+珎 > zhēn; #73CE
+珏 > jué; #73CF
+珐 > fà; #73D0
+珑 > lóng; #73D1
+珒 > jīn; #73D2
+珓 > jiào; #73D3
+珔 > jiàn; #73D4
+珕 > lì; #73D5
+珖 > guāng; #73D6
+珗 > xiān; #73D7
+珘 > zhōu; #73D8
+珙 > gŏng; #73D9
+珚 > yān; #73DA
+珛 > xìu; #73DB
+珜 > yáng; #73DC
+珝 > xŭ; #73DD
+珞 > lùo; #73DE
+珟 > sù; #73DF
+珠 > zhū; #73E0
+珡 > qín; #73E1
+珢 > kèn; #73E2
+珣 > xún; #73E3
+珤 > băo; #73E4
+珥 > ĕr; #73E5
+珦 > xiàng; #73E6
+珧 > yáo; #73E7
+珨 > xiá; #73E8
+珩 > héng; #73E9
+珪 > gūi; #73EA
+珫 > chōng; #73EB
+珬 > xù; #73EC
+班 > bān; #73ED
+珮 > pèi; #73EE
+珰 > dāng; #73F0
+珲 > hún; #73F2
+珳 > wén; #73F3
+珴 > é; #73F4
+珵 > chéng; #73F5
+珶 > tí; #73F6
+珷 > wŭ; #73F7
+珸 > wú; #73F8
+珹 > chéng; #73F9
+珺 > jùn; #73FA
+珻 > méi; #73FB
+珼 > bèi; #73FC
+珽 > tĭng; #73FD
+現 > xiàn; #73FE
+珿 > chùo; #73FF
+琀 > hán; #7400
+琁 > xuan; #7401
+琂 > yán; #7402
+球 > qíu; #7403
+琄 > quăn; #7404
+琅 > láng; #7405
+理 > lĭ; #7406
+琇 > xìu; #7407
+琈 > fú; #7408
+琉 > líu; #7409
+琊 > yé; #740A
+琋 > xī; #740B
+琌 > líng; #740C
+琍 > lì; #740D
+琎 > jìn; #740E
+琏 > lián; #740F
+琐 > sŭo; #7410
+琓 > wán; #7413
+琔 > diàn; #7414
+琕 > pín; #7415
+琖 > zhăn; #7416
+琗 > cùi; #7417
+琘 > mín; #7418
+琙 > yù; #7419
+琚 > jū; #741A
+琛 > chēn; #741B
+琜 > lái; #741C
+琝 > wén; #741D
+琞 > shèng; #741E
+琟 > wéi; #741F
+琠 > diăn; #7420
+琡 > chù; #7421
+琢 > zhúo; #7422
+琣 > pĕi; #7423
+琤 > chēng; #7424
+琥 > hŭ; #7425
+琦 > qí; #7426
+琧 > è; #7427
+琨 > kūn; #7428
+琩 > chāng; #7429
+琪 > qí; #742A
+琫 > bĕng; #742B
+琬 > wăn; #742C
+琭 > lù; #742D
+琮 > cóng; #742E
+琯 > guăn; #742F
+琰 > yăn; #7430
+琱 > diāo; #7431
+琲 > bèi; #7432
+琳 > lín; #7433
+琴 > qín; #7434
+琵 > pí; #7435
+琶 > pá; #7436
+琷 > què; #7437
+琸 > zhúo; #7438
+琹 > qín; #7439
+琺 > fà; #743A
+琼 > qíong; #743C
+琽 > dŭ; #743D
+琾 > jiè; #743E
+琿 > hún; #743F
+瑀 > yŭ; #7440
+瑁 > mào; #7441
+瑂 > méi; #7442
+瑃 > chun; #7443
+瑄 > xuān; #7444
+瑅 > tí; #7445
+瑆 > xīng; #7446
+瑇 > dài; #7447
+瑈 > róu; #7448
+瑉 > mín; #7449
+瑊 > zhēn; #744A
+瑋 > wĕi; #744B
+瑌 > ruăn; #744C
+瑍 > huàn; #744D
+瑎 > jiē; #744E
+瑏 > chuān; #744F
+瑐 > jiăn; #7450
+瑑 > zhuàn; #7451
+瑒 > yáng; #7452
+瑓 > liàn; #7453
+瑔 > quán; #7454
+瑕 > xiá; #7455
+瑖 > duàn; #7456
+瑗 > yuàn; #7457
+瑘 > yé; #7458
+瑙 > năo; #7459
+瑚 > hú; #745A
+瑛 > yīng; #745B
+瑜 > yú; #745C
+瑝 > huáng; #745D
+瑞 > rùi; #745E
+瑟 > sè; #745F
+瑠 > líu; #7460
+瑡 > shi; #7461
+瑢 > róng; #7462
+瑣 > sŭo; #7463
+瑤 > yáo; #7464
+瑥 > wēn; #7465
+瑦 > wū; #7466
+瑧 > jīn; #7467
+瑨 > jìn; #7468
+瑩 > yíng; #7469
+瑪 > mă; #746A
+瑫 > tāo; #746B
+瑬 > líu; #746C
+瑭 > táng; #746D
+瑮 > lì; #746E
+瑯 > láng; #746F
+瑰 > gūi; #7470
+瑱 > zhèn; #7471
+瑲 > qiāng; #7472
+瑳 > cŭo; #7473
+瑴 > jué; #7474
+瑵 > zhăo; #7475
+瑶 > yáo; #7476
+瑷 > ài; #7477
+瑸 > bīn; #7478
+瑹 > tú; #7479
+瑺 > cháng; #747A
+瑻 > kūn; #747B
+瑼 > zhuān; #747C
+瑽 > cōng; #747D
+瑾 > jĭn; #747E
+瑿 > yī; #747F
+璀 > cŭi; #7480
+璁 > cōng; #7481
+璂 > qí; #7482
+璃 > lí; #7483
+璄 > yĭng; #7484
+璅 > sŭo; #7485
+璆 > qíu; #7486
+璇 > xuán; #7487
+璈 > áo; #7488
+璉 > lián; #7489
+璊 > mán; #748A
+璋 > zhāng; #748B
+璌 > yín; #748C
+璎 > yīng; #748E
+璏 > zhì; #748F
+璐 > lù; #7490
+璑 > wú; #7491
+璒 > dēng; #7492
+璓 > xiòu; #7493
+璔 > zēng; #7494
+璕 > xún; #7495
+璖 > qú; #7496
+璗 > dàng; #7497
+璘 > lín; #7498
+璙 > liáo; #7499
+璚 > qíong; #749A
+璛 > sù; #749B
+璜 > huáng; #749C
+璝 > gūi; #749D
+璞 > pú; #749E
+璟 > jĭng; #749F
+璠 > fán; #74A0
+璡 > jìn; #74A1
+璢 > líu; #74A2
+璣 > jī; #74A3
+璥 > jĭng; #74A5
+璦 > ài; #74A6
+璧 > bì; #74A7
+璨 > càn; #74A8
+璩 > qú; #74A9
+璪 > zăo; #74AA
+璫 > dāng; #74AB
+璬 > jiăo; #74AC
+璭 > gùn; #74AD
+璮 > tăn; #74AE
+璯 > hùi; #74AF
+環 > huán; #74B0
+璱 > sè; #74B1
+璲 > sùi; #74B2
+璳 > tián; #74B3
+璵 > yú; #74B5
+璶 > jìn; #74B6
+璷 > lú; #74B7
+璸 > bīn; #74B8
+璹 > shòu; #74B9
+璺 > wèn; #74BA
+璻 > zŭi; #74BB
+璼 > lán; #74BC
+璽 > xĭ; #74BD
+璾 > jì; #74BE
+璿 > xuán; #74BF
+瓀 > ruăn; #74C0
+瓁 > hùo; #74C1
+瓂 > gài; #74C2
+瓃 > léi; #74C3
+瓄 > dú; #74C4
+瓅 > lì; #74C5
+瓆 > zhí; #74C6
+瓇 > róu; #74C7
+瓈 > lí; #74C8
+瓉 > zàn; #74C9
+瓊 > qíong; #74CA
+瓋 > zhé; #74CB
+瓌 > gūi; #74CC
+瓍 > sùi; #74CD
+瓎 > là; #74CE
+瓏 > lóng; #74CF
+瓐 > lú; #74D0
+瓑 > lì; #74D1
+瓒 > zàn; #74D2
+瓓 > làn; #74D3
+瓔 > yīng; #74D4
+瓕 > mí; #74D5
+瓖 > xiāng; #74D6
+瓗 > xī; #74D7
+瓘 > guàn; #74D8
+瓙 > dào; #74D9
+瓚 > zàn; #74DA
+瓛 > huán; #74DB
+瓜 > guā; #74DC
+瓝 > bó; #74DD
+瓞 > dié; #74DE
+瓟 > báo; #74DF
+瓠 > hù; #74E0
+瓡 > zhí; #74E1
+瓢 > piáo; #74E2
+瓣 > bàn; #74E3
+瓤 > ráng; #74E4
+瓥 > lì; #74E5
+瓦 > wă; #74E6
+瓨 > jiāng; #74E8
+瓩 > qián' 'wă; #74E9
+瓪 > făn; #74EA
+瓫 > pén; #74EB
+瓬 > făng; #74EC
+瓭 > dăn; #74ED
+瓮 > wèng; #74EE
+瓯 > ōu; #74EF
+瓳 > hú; #74F3
+瓴 > líng; #74F4
+瓵 > yí; #74F5
+瓶 > píng; #74F6
+瓷 > cí; #74F7
+瓹 > juàn; #74F9
+瓺 > cháng; #74FA
+瓻 > chī; #74FB
+瓽 > dàng; #74FD
+瓾 > mĕng; #74FE
+瓿 > pŏu; #74FF
+甀 > zhùi; #7500
+甁 > píng; #7501
+甂 > biān; #7502
+甃 > zhòu; #7503
+甄 > zhēn; #7504
+甆 > cí; #7506
+甇 > yīng; #7507
+甈 > qì; #7508
+甉 > xián; #7509
+甊 > lŏu; #750A
+甋 > dì; #750B
+甌 > ōu; #750C
+甍 > méng; #750D
+甎 > zhuān; #750E
+甏 > pèng; #750F
+甐 > lín; #7510
+甑 > zèng; #7511
+甒 > wŭ; #7512
+甓 > pì; #7513
+甔 > dān; #7514
+甕 > wèng; #7515
+甖 > yīng; #7516
+甗 > yăn; #7517
+甘 > gān; #7518
+甙 > dài; #7519
+甚 > shén; #751A
+甛 > tián; #751B
+甜 > tián; #751C
+甝 > hān; #751D
+甞 > cháng; #751E
+生 > shēng; #751F
+甠 > qíng; #7520
+甡 > shēng; #7521
+產 > chăn; #7522
+産 > chăn; #7523
+甤 > rúi; #7524
+甥 > shēng; #7525
+甦 > sū; #7526
+甧 > sēn; #7527
+用 > yòng; #7528
+甩 > shuăi; #7529
+甪 > lù; #752A
+甫 > fŭ; #752B
+甬 > yŏng; #752C
+甭 > béng; #752D
+甮 > fèng; #752E
+甯 > níng; #752F
+田 > tián; #7530
+由 > yóu; #7531
+甲 > jiă; #7532
+申 > shēn; #7533
+甴 > zhá; #7534
+电 > diàn; #7535
+甶 > fú; #7536
+男 > nán; #7537
+甸 > diàn; #7538
+甹 > píng; #7539
+町 > tĭng; #753A
+画 > huà; #753B
+甼 > tĭng; #753C
+甽 > quăn; #753D
+甾 > zī; #753E
+甿 > méng; #753F
+畀 > bì; #7540
+畁 > qí; #7541
+畂 > lìu; #7542
+畃 > xún; #7543
+畄 > líu; #7544
+畅 > chàng; #7545
+畆 > mŭ; #7546
+畇 > yún; #7547
+畈 > fàn; #7548
+畉 > fú; #7549
+畊 > gēng; #754A
+畋 > tián; #754B
+界 > jiè; #754C
+畍 > jiè; #754D
+畎 > quăn; #754E
+畏 > wèi; #754F
+畐 > fú; #7550
+畑 > tián; #7551
+畒 > mŭ; #7552
+畔 > pàn; #7554
+畕 > jiāng; #7555
+畖 > wā; #7556
+畗 > dá; #7557
+畘 > nán; #7558
+留 > líu; #7559
+畚 > bĕn; #755A
+畛 > zhĕn; #755B
+畜 > chù; #755C
+畝 > mŭ; #755D
+畞 > mŭ; #755E
+畟 > cè; #755F
+畡 > gāi; #7561
+畢 > bì; #7562
+畣 > dá; #7563
+畤 > zhì; #7564
+略 > lǜe; #7565
+畦 > qí; #7566
+畧 > lǜe; #7567
+畨 > pān; #7568
+番 > fān; #756A
+畫 > huà; #756B
+畬 > yú; #756C
+畭 > yú; #756D
+畮 > mŭ; #756E
+畯 > jùn; #756F
+異 > yì; #7570
+畱 > líu; #7571
+畲 > yú; #7572
+畳 > dié; #7573
+畴 > chóu; #7574
+畵 > huà; #7575
+當 > dāng; #7576
+畷 > chùo; #7577
+畸 > jī; #7578
+畹 > wăn; #7579
+畺 > jiāng; #757A
+畻 > shéng; #757B
+畼 > chàng; #757C
+畽 > tuăn; #757D
+畾 > léi; #757E
+畿 > jī; #757F
+疀 > chā; #7580
+疁 > líu; #7581
+疃 > tuăn; #7583
+疄 > lín; #7584
+疅 > jiāng; #7585
+疆 > jiāng; #7586
+疇 > chóu; #7587
+疈 > bò; #7588
+疉 > dié; #7589
+疊 > dié; #758A
+疋 > pĭ; #758B
+疌 > niè; #758C
+疍 > dàn; #758D
+疎 > shū; #758E
+疏 > shū; #758F
+疐 > zhì; #7590
+疑 > yí; #7591
+疒 > chuáng; #7592
+疓 > năi; #7593
+疔 > dīng; #7594
+疕 > bĭ; #7595
+疖 > jié; #7596
+疗 > liáo; #7597
+疘 > gōng; #7598
+疙 > gē; #7599
+疚 > jìu; #759A
+疛 > zhŏu; #759B
+疜 > xià; #759C
+疝 > shàn; #759D
+疞 > xū; #759E
+疟 > nǜe; #759F
+疠 > lì; #75A0
+疡 > yáng; #75A1
+疢 > chèn; #75A2
+疣 > yóu; #75A3
+疤 > bā; #75A4
+疥 > jiè; #75A5
+疦 > jué; #75A6
+疧 > zhī; #75A7
+疨 > xiā; #75A8
+疩 > cùi; #75A9
+疪 > bì; #75AA
+疫 > yì; #75AB
+疬 > lì; #75AC
+疭 > zòng; #75AD
+疮 > chuāng; #75AE
+疯 > fēng; #75AF
+疰 > zhù; #75B0
+疱 > pào; #75B1
+疲 > pí; #75B2
+疳 > gān; #75B3
+疴 > kē; #75B4
+疵 > cī; #75B5
+疶 > xiè; #75B6
+疷 > qí; #75B7
+疸 > dăn; #75B8
+疹 > zhĕn; #75B9
+疺 > fá; #75BA
+疻 > zhĭ; #75BB
+疼 > téng; #75BC
+疽 > jū; #75BD
+疾 > jí; #75BE
+疿 > fèi; #75BF
+痀 > qú; #75C0
+痁 > diàn; #75C1
+痂 > jiā; #75C2
+痃 > xián; #75C3
+痄 > chá; #75C4
+病 > bìng; #75C5
+痆 > nì; #75C6
+症 > zhèng; #75C7
+痈 > yōng; #75C8
+痉 > jìng; #75C9
+痊 > quán; #75CA
+痋 > chóng; #75CB
+痌 > tōng; #75CC
+痍 > yí; #75CD
+痎 > kāi; #75CE
+痏 > wĕi; #75CF
+痐 > húi; #75D0
+痑 > dŭo; #75D1
+痒 > yăng; #75D2
+痓 > chì; #75D3
+痔 > zhì; #75D4
+痕 > hén; #75D5
+痖 > yă; #75D6
+痗 > mèi; #75D7
+痘 > dòu; #75D8
+痙 > jìng; #75D9
+痚 > xiāo; #75DA
+痛 > tòng; #75DB
+痜 > tū; #75DC
+痝 > máng; #75DD
+痞 > pĭ; #75DE
+痟 > xiāo; #75DF
+痠 > suān; #75E0
+痡 > pū; #75E1
+痢 > lì; #75E2
+痣 > zhì; #75E3
+痤 > cúo; #75E4
+痥 > dúo; #75E5
+痦 > wù; #75E6
+痧 > shā; #75E7
+痨 > láo; #75E8
+痩 > shòu; #75E9
+痪 > huàn; #75EA
+痫 > xián; #75EB
+痬 > yì; #75EC
+痭 > péng; #75ED
+痮 > zhàng; #75EE
+痯 > guăn; #75EF
+痰 > tán; #75F0
+痱 > fèi; #75F1
+痲 > má; #75F2
+痳 > lín; #75F3
+痴 > chī; #75F4
+痵 > jì; #75F5
+痶 > diăn; #75F6
+痷 > ān; #75F7
+痸 > chì; #75F8
+痹 > bì; #75F9
+痺 > bēi; #75FA
+痻 > mín; #75FB
+痼 > gū; #75FC
+痽 > dūi; #75FD
+痾 > ē; #75FE
+痿 > wĕi; #75FF
+瘀 > yū; #7600
+瘁 > cùi; #7601
+瘂 > yă; #7602
+瘃 > zhŭ; #7603
+瘄 > cù; #7604
+瘅 > dàn; #7605
+瘆 > shèn; #7606
+瘇 > zhŭng; #7607
+瘈 > jì; #7608
+瘉 > yù; #7609
+瘊 > hóu; #760A
+瘋 > fēng; #760B
+瘌 > là; #760C
+瘍 > yáng; #760D
+瘎 > shèn; #760E
+瘏 > tú; #760F
+瘐 > yŭ; #7610
+瘑 > guā; #7611
+瘒 > wén; #7612
+瘓 > huàn; #7613
+瘔 > kù; #7614
+瘕 > jiă; #7615
+瘖 > yīn; #7616
+瘗 > yì; #7617
+瘘 > lǘ; #7618
+瘙 > sāo; #7619
+瘚 > jué; #761A
+瘛 > chì; #761B
+瘜 > xí; #761C
+瘝 > guān; #761D
+瘞 > yì; #761E
+瘟 > wēn; #761F
+瘠 > jí; #7620
+瘡 > chuāng; #7621
+瘢 > bān; #7622
+瘣 > lĕi; #7623
+瘤 > líu; #7624
+瘥 > chài; #7625
+瘦 > shòu; #7626
+瘧 > nǜe; #7627
+瘨 > diān; #7628
+瘩 > dā; #7629
+瘪 > piē; #762A
+瘫 > tān; #762B
+瘬 > zhàng; #762C
+瘭 > biāo; #762D
+瘮 > shen; #762E
+瘯 > cù; #762F
+瘰 > lŭo; #7630
+瘱 > yì; #7631
+瘲 > zòng; #7632
+瘳 > chōu; #7633
+瘴 > zhàng; #7634
+瘵 > zhài; #7635
+瘶 > sòu; #7636
+瘷 > sŭo; #7637
+瘸 > qué; #7638
+瘹 > diào; #7639
+瘺 > lòu; #763A
+瘻 > lǘ; #763B
+瘼 > mò; #763C
+瘽 > jìn; #763D
+瘾 > yĭn; #763E
+瘿 > yĭng; #763F
+癀 > huáng; #7640
+癁 > fú; #7641
+療 > liáo; #7642
+癃 > lóng; #7643
+癄 > qiáo; #7644
+癅 > líu; #7645
+癆 > láo; #7646
+癇 > xián; #7647
+癈 > fèi; #7648
+癉 > dàn; #7649
+癊 > yìn; #764A
+癋 > hè; #764B
+癌 > yán; #764C
+癍 > bān; #764D
+癎 > xián; #764E
+癏 > guān; #764F
+癐 > guài; #7650
+癑 > nóng; #7651
+癒 > yù; #7652
+癓 > wéi; #7653
+癔 > yì; #7654
+癕 > yōng; #7655
+癖 > pĭ; #7656
+癗 > lĕi; #7657
+癘 > lì; #7658
+癙 > shŭ; #7659
+癚 > dàn; #765A
+癛 > lĭn; #765B
+癜 > diàn; #765C
+癝 > lĭn; #765D
+癞 > lài; #765E
+癟 > piē; #765F
+癠 > jì; #7660
+癡 > chī; #7661
+癢 > yăng; #7662
+癣 > xiăn; #7663
+癤 > jié; #7664
+癥 > zhēng; #7665
+癧 > lì; #7667
+癨 > hùo; #7668
+癩 > lài; #7669
+癫 > diān; #766B
+癬 > xiăn; #766C
+癭 > yĭng; #766D
+癮 > yĭn; #766E
+癯 > qú; #766F
+癰 > yōng; #7670
+癱 > tān; #7671
+癲 > diān; #7672
+癳 > lŭo; #7673
+癴 > lǘan; #7674
+癵 > luán; #7675
+癶 > bō; #7676
+癸 > gŭi; #7678
+癹 > pō; #7679
+発 > fā; #767A
+登 > dēng; #767B
+發 > fā; #767C
+白 > bái; #767D
+百 > băi; #767E
+癿 > qié; #767F
+皀 > bī; #7680
+皁 > zào; #7681
+皂 > zào; #7682
+皃 > mào; #7683
+的 > de; #7684
+皅 > pā; #7685
+皆 > jiē; #7686
+皇 > huáng; #7687
+皈 > gūi; #7688
+皉 > cĭ; #7689
+皊 > líng; #768A
+皋 > gāo; #768B
+皌 > mò; #768C
+皍 > jí; #768D
+皎 > jiăo; #768E
+皏 > pĕng; #768F
+皐 > gāo; #7690
+皑 > ái; #7691
+皒 > é; #7692
+皓 > hào; #7693
+皔 > hàn; #7694
+皕 > bī; #7695
+皖 > wăn; #7696
+皗 > chóu; #7697
+皘 > qiàn; #7698
+皙 > xī; #7699
+皚 > ái; #769A
+皛 > jĭong; #769B
+皜 > hào; #769C
+皝 > huăng; #769D
+皞 > hào; #769E
+皟 > zé; #769F
+皠 > cŭi; #76A0
+皡 > hào; #76A1
+皢 > xiăo; #76A2
+皣 > yè; #76A3
+皤 > pó; #76A4
+皥 > hào; #76A5
+皦 > jiăo; #76A6
+皧 > ài; #76A7
+皨 > xīng; #76A8
+皩 > huàng; #76A9
+皪 > lì; #76AA
+皫 > piăo; #76AB
+皬 > hè; #76AC
+皭 > jiào; #76AD
+皮 > pí; #76AE
+皯 > găn; #76AF
+皰 > pào; #76B0
+皱 > zhòu; #76B1
+皲 > jūn; #76B2
+皳 > qíu; #76B3
+皴 > cūn; #76B4
+皵 > què; #76B5
+皶 > zhā; #76B6
+皷 > gŭ; #76B7
+皸 > jūn; #76B8
+皹 > jūn; #76B9
+皺 > zhòu; #76BA
+皻 > zhā; #76BB
+皼 > gŭ; #76BC
+皽 > zhăn; #76BD
+皾 > dú; #76BE
+皿 > mĭn; #76BF
+盀 > qĭ; #76C0
+盁 > yíng; #76C1
+盂 > yú; #76C2
+盃 > bēi; #76C3
+盄 > zhāo; #76C4
+盅 > zhōng; #76C5
+盆 > pén; #76C6
+盇 > hé; #76C7
+盈 > yíng; #76C8
+盉 > hé; #76C9
+益 > yì; #76CA
+盋 > bō; #76CB
+盌 > wăn; #76CC
+盍 > hé; #76CD
+盎 > àng; #76CE
+盏 > zhăn; #76CF
+盐 > yán; #76D0
+监 > jiān; #76D1
+盒 > hé; #76D2
+盓 > yū; #76D3
+盔 > kūi; #76D4
+盕 > fàn; #76D5
+盖 > gài; #76D6
+盗 > dào; #76D7
+盘 > pán; #76D8
+盙 > fŭ; #76D9
+盚 > qíu; #76DA
+盛 > shèng; #76DB
+盜 > dào; #76DC
+盝 > lù; #76DD
+盞 > zhăn; #76DE
+盟 > méng; #76DF
+盠 > lĭ; #76E0
+盡 > jìn; #76E1
+盢 > xù; #76E2
+監 > jiān; #76E3
+盤 > pán; #76E4
+盥 > guàn; #76E5
+盦 > ān; #76E6
+盧 > lú; #76E7
+盨 > shŭ; #76E8
+盩 > zhōu; #76E9
+盪 > dàng; #76EA
+盫 > ān; #76EB
+盬 > gŭ; #76EC
+盭 > lì; #76ED
+目 > mù; #76EE
+盯 > chéng; #76EF
+盰 > găn; #76F0
+盱 > xū; #76F1
+盲 > máng; #76F2
+盳 > máng; #76F3
+直 > zhí; #76F4
+盵 > qì; #76F5
+盶 > ruăn; #76F6
+盷 > tián; #76F7
+相 > xiāng; #76F8
+盹 > dùn; #76F9
+盺 > xīn; #76FA
+盻 > xì; #76FB
+盼 > pàn; #76FC
+盽 > fēng; #76FD
+盾 > dùn; #76FE
+盿 > mín; #76FF
+眀 > míng; #7700
+省 > shĕng; #7701
+眂 > shì; #7702
+眃 > yún; #7703
+眄 > miăn; #7704
+眅 > pān; #7705
+眆 > făng; #7706
+眇 > miăo; #7707
+眈 > dān; #7708
+眉 > méi; #7709
+眊 > mào; #770A
+看 > kàn; #770B
+県 > xiàn; #770C
+眍 > ōu; #770D
+眎 > shì; #770E
+眏 > yāng; #770F
+眐 > zhēng; #7710
+眑 > yăo; #7711
+眒 > shèn; #7712
+眓 > hùo; #7713
+眔 > dà; #7714
+眕 > zhĕn; #7715
+眖 > kuàng; #7716
+眗 > jū; #7717
+眘 > shèn; #7718
+眙 > chì; #7719
+眚 > shĕng; #771A
+眛 > mèi; #771B
+眜 > mò; #771C
+眝 > zhù; #771D
+眞 > zhēn; #771E
+真 > zhēn; #771F
+眠 > mián; #7720
+眡 > dī; #7721
+眢 > yuān; #7722
+眣 > dié; #7723
+眤 > yí; #7724
+眥 > zì; #7725
+眦 > zì; #7726
+眧 > chăo; #7727
+眨 > zhă; #7728
+眩 > xuàn; #7729
+眪 > bĭng; #772A
+眫 > mĭ; #772B
+眬 > lóng; #772C
+眭 > sūi; #772D
+眮 > dòng; #772E
+眯 > mĭ; #772F
+眰 > dié; #7730
+眱 > yí; #7731
+眲 > èr; #7732
+眳 > mĭng; #7733
+眴 > xuàn; #7734
+眵 > chī; #7735
+眶 > kuàng; #7736
+眷 > juàn; #7737
+眸 > móu; #7738
+眹 > zhèn; #7739
+眺 > tiào; #773A
+眻 > yáng; #773B
+眼 > yăn; #773C
+眽 > mò; #773D
+眾 > zhòng; #773E
+眿 > mài; #773F
+着 > zháo; #7740
+睁 > zhēng; #7741
+睂 > méi; #7742
+睃 > jùn; #7743
+睄 > shào; #7744
+睅 > hàn; #7745
+睆 > huăn; #7746
+睇 > dì; #7747
+睈 > chĕng; #7748
+睉 > cūo; #7749
+睊 > juàn; #774A
+睋 > é; #774B
+睌 > wăn; #774C
+睍 > xiàn; #774D
+睎 > xī; #774E
+睏 > kùn; #774F
+睐 > lài; #7750
+睑 > jiăn; #7751
+睒 > shăn; #7752
+睓 > tiăn; #7753
+睔 > hŭn; #7754
+睕 > wăn; #7755
+睖 > líng; #7756
+睗 > shì; #7757
+睘 > qíong; #7758
+睙 > liè; #7759
+睚 > yái; #775A
+睛 > jīng; #775B
+睜 > zhēng; #775C
+睝 > lí; #775D
+睞 > lài; #775E
+睟 > sùi; #775F
+睠 > juàn; #7760
+睡 > shùi; #7761
+睢 > sūi; #7762
+督 > dū; #7763
+睤 > bì; #7764
+睥 > bì; #7765
+睦 > mù; #7766
+睧 > hūn; #7767
+睨 > nì; #7768
+睩 > lù; #7769
+睪 > yì; #776A
+睫 > jié; #776B
+睬 > căi; #776C
+睭 > zhŏu; #776D
+睮 > yú; #776E
+睯 > hūn; #776F
+睰 > mà; #7770
+睱 > xià; #7771
+睲 > xĭng; #7772
+睳 > xī; #7773
+睴 > gùn; #7774
+睵 > cai; #7775
+睶 > chŭn; #7776
+睷 > jiān; #7777
+睸 > mèi; #7778
+睹 > dŭ; #7779
+睺 > hóu; #777A
+睻 > xuān; #777B
+睼 > tì; #777C
+睽 > kúi; #777D
+睾 > gāo; #777E
+睿 > rùi; #777F
+瞀 > mòu; #7780
+瞁 > xù; #7781
+瞂 > fā; #7782
+瞃 > wēn; #7783
+瞄 > miáo; #7784
+瞅 > chŏu; #7785
+瞆 > kùi; #7786
+瞇 > mī; #7787
+瞈 > wĕng; #7788
+瞉 > kòu; #7789
+瞊 > dàng; #778A
+瞋 > chēn; #778B
+瞌 > kē; #778C
+瞍 > sŏu; #778D
+瞎 > xiā; #778E
+瞏 > qíong; #778F
+瞐 > mào; #7790
+瞑 > míng; #7791
+瞒 > mán; #7792
+瞓 > shùi; #7793
+瞔 > zé; #7794
+瞕 > zhàng; #7795
+瞖 > yì; #7796
+瞗 > diāo; #7797
+瞘 > ōu; #7798
+瞙 > mò; #7799
+瞚 > shùn; #779A
+瞛 > cōng; #779B
+瞜 > lōu; #779C
+瞝 > chī; #779D
+瞞 > mán; #779E
+瞟 > piăo; #779F
+瞠 > chēng; #77A0
+瞡 > jì; #77A1
+瞢 > méng; #77A2
+瞤 > rún; #77A4
+瞥 > piē; #77A5
+瞦 > xī; #77A6
+瞧 > qiáo; #77A7
+瞨 > pú; #77A8
+瞩 > zhŭ; #77A9
+瞪 > dèng; #77AA
+瞫 > shĕn; #77AB
+瞬 > shùn; #77AC
+瞭 > liăo; #77AD
+瞮 > chè; #77AE
+瞯 > xián; #77AF
+瞰 > kàn; #77B0
+瞱 > yè; #77B1
+瞲 > xù; #77B2
+瞳 > tóng; #77B3
+瞴 > móu; #77B4
+瞵 > lín; #77B5
+瞶 > kùi; #77B6
+瞷 > xián; #77B7
+瞸 > yè; #77B8
+瞹 > ài; #77B9
+瞺 > hùi; #77BA
+瞻 > zhān; #77BB
+瞼 > jiăn; #77BC
+瞽 > gŭ; #77BD
+瞾 > zhào; #77BE
+瞿 > qū; #77BF
+矀 > wéi; #77C0
+矁 > chŏu; #77C1
+矂 > sào; #77C2
+矃 > nĭng; #77C3
+矄 > xūn; #77C4
+矅 > yào; #77C5
+矆 > hùo; #77C6
+矇 > méng; #77C7
+矈 > mián; #77C8
+矉 > bīn; #77C9
+矊 > mián; #77CA
+矋 > lì; #77CB
+矌 > kuàng; #77CC
+矍 > jué; #77CD
+矎 > xuān; #77CE
+矏 > mián; #77CF
+矐 > hùo; #77D0
+矑 > lú; #77D1
+矒 > méng; #77D2
+矓 > lóng; #77D3
+矔 > guàn; #77D4
+矕 > măn; #77D5
+矖 > xĭ; #77D6
+矗 > chù; #77D7
+矘 > tăng; #77D8
+矙 > kàn; #77D9
+矚 > zhŭ; #77DA
+矛 > máo; #77DB
+矜 > jīn; #77DC
+矝 > lín; #77DD
+矞 > yù; #77DE
+矟 > shùo; #77DF
+矠 > cè; #77E0
+矡 > jué; #77E1
+矢 > shĭ; #77E2
+矣 > yĭ; #77E3
+矤 > shĕn; #77E4
+知 > zhī; #77E5
+矦 > hóu; #77E6
+矧 > shĕn; #77E7
+矨 > yĭng; #77E8
+矩 > jŭ; #77E9
+矪 > zhōu; #77EA
+矫 > jiăo; #77EB
+矬 > cúo; #77EC
+短 > duăn; #77ED
+矮 > ăi; #77EE
+矯 > jiăo; #77EF
+矰 > zēng; #77F0
+矱 > hùo; #77F1
+矲 > băi; #77F2
+石 > shí; #77F3
+矴 > dìng; #77F4
+矵 > qì; #77F5
+矶 > jī; #77F6
+矷 > zĭ; #77F7
+矸 > gān; #77F8
+矹 > wù; #77F9
+矺 > tūo; #77FA
+矻 > kù; #77FB
+矼 > qiāng; #77FC
+矽 > xì; #77FD
+矾 > fán; #77FE
+矿 > kuàng; #77FF
+砀 > dàng; #7800
+码 > mă; #7801
+砂 > shā; #7802
+砃 > dān; #7803
+砄 > jué; #7804
+砅 > lì; #7805
+砆 > fū; #7806
+砇 > mín; #7807
+砈 > nŭo; #7808
+砉 > hùo; #7809
+砊 > kàng; #780A
+砋 > zhĭ; #780B
+砌 > qì; #780C
+砍 > kăn; #780D
+砎 > jiè; #780E
+砏 > fēn; #780F
+砐 > è; #7810
+砑 > yà; #7811
+砒 > pī; #7812
+砓 > zhé; #7813
+研 > yán; #7814
+砕 > sùi; #7815
+砖 > zhuān; #7816
+砗 > chē; #7817
+砘 > dùn; #7818
+砙 > pān; #7819
+砚 > yàn; #781A
+砜 > fēng; #781C
+砝 > fá; #781D
+砞 > mò; #781E
+砟 > zhà; #781F
+砠 > qū; #7820
+砡 > yù; #7821
+砢 > lŭo; #7822
+砣 > túo; #7823
+砤 > túo; #7824
+砥 > dĭ; #7825
+砦 > zhài; #7826
+砧 > zhēn; #7827
+砨 > ài; #7828
+砩 > fèi; #7829
+砪 > mŭ; #782A
+砫 > zhŭ; #782B
+砬 > lì; #782C
+砭 > biān; #782D
+砮 > nŭ; #782E
+砯 > pīng; #782F
+砰 > pēng; #7830
+砱 > líng; #7831
+砲 > pào; #7832
+砳 > lè; #7833
+破 > pò; #7834
+砵 > bō; #7835
+砶 > pò; #7836
+砷 > shēn; #7837
+砸 > zá; #7838
+砹 > nŭo; #7839
+砺 > lì; #783A
+砻 > lóng; #783B
+砼 > tóng; #783C
+砾 > lì; #783E
+础 > chŭ; #7840
+硁 > kēng; #7841
+硂 > quán; #7842
+硃 > zhū; #7843
+硄 > kuāng; #7844
+硅 > hùo; #7845
+硆 > è; #7846
+硇 > náo; #7847
+硈 > jiá; #7848
+硉 > lù; #7849
+硊 > wĕi; #784A
+硋 > ài; #784B
+硌 > lùo; #784C
+硍 > kèn; #784D
+硎 > xíng; #784E
+硏 > yán; #784F
+硐 > tóng; #7850
+硑 > pēng; #7851
+硒 > xī; #7852
+硔 > hóng; #7854
+硕 > shùo; #7855
+硖 > xiá; #7856
+硗 > qiāo; #7857
+硙 > wèi; #7859
+硚 > qiáo; #785A
+硜 > kēng; #785C
+硝 > xiāo; #785D
+硞 > què; #785E
+硟 > chàn; #785F
+硠 > lăng; #7860
+硡 > hóng; #7861
+硢 > yú; #7862
+硣 > xiāo; #7863
+硤 > xiá; #7864
+硥 > măng; #7865
+硦 > lòng; #7866
+硧 > ĭong; #7867
+硨 > chē; #7868
+硩 > chè; #7869
+硪 > é; #786A
+硫 > líu; #786B
+硬 > yìng; #786C
+硭 > máng; #786D
+确 > què; #786E
+硯 > yàn; #786F
+硰 > shā; #7870
+硱 > kŭn; #7871
+硲 > yù; #7872
+硵 > lŭ; #7875
+硶 > chĕn; #7876
+硷 > jiăn; #7877
+硸 > nuè; #7878
+硹 > sōng; #7879
+硺 > zhúo; #787A
+硻 > kēng; #787B
+硼 > péng; #787C
+硽 > yăn; #787D
+硾 > zhùi; #787E
+硿 > kōng; #787F
+碀 > céng; #7880
+碁 > qí; #7881
+碂 > zòng; #7882
+碃 > qìng; #7883
+碄 > lín; #7884
+碅 > jūn; #7885
+碆 > bō; #7886
+碇 > dìng; #7887
+碈 > mín; #7888
+碉 > diāo; #7889
+碊 > jiān; #788A
+碋 > hè; #788B
+碌 > lù; #788C
+碍 > ài; #788D
+碎 > sùi; #788E
+碏 > què; #788F
+碐 > líng; #7890
+碑 > bēi; #7891
+碒 > yín; #7892
+碓 > dùi; #7893
+碔 > wŭ; #7894
+碕 > qí; #7895
+碖 > lùn; #7896
+碗 > wăn; #7897
+碘 > diăn; #7898
+碙 > gāng; #7899
+碚 > péi; #789A
+碛 > qì; #789B
+碜 > chĕn; #789C
+碝 > ruăn; #789D
+碞 > yán; #789E
+碟 > dié; #789F
+碠 > dìng; #78A0
+碡 > dú; #78A1
+碢 > túo; #78A2
+碣 > jié; #78A3
+碤 > yīng; #78A4
+碥 > biăn; #78A5
+碦 > kè; #78A6
+碧 > bì; #78A7
+碨 > wēi; #78A8
+碩 > shùo; #78A9
+碪 > zhēn; #78AA
+碫 > duàn; #78AB
+碬 > xiá; #78AC
+碭 > dàng; #78AD
+碮 > tí; #78AE
+碯 > năo; #78AF
+碰 > pèng; #78B0
+碱 > jiăn; #78B1
+碲 > dì; #78B2
+碳 > tàn; #78B3
+碴 > chá; #78B4
+碶 > qì; #78B6
+碸 > fēng; #78B8
+碹 > xuàn; #78B9
+確 > què; #78BA
+碻 > què; #78BB
+碼 > mă; #78BC
+碽 > gōng; #78BD
+碾 > niàn; #78BE
+碿 > sù; #78BF
+磀 > é; #78C0
+磁 > cí; #78C1
+磂 > lìu; #78C2
+磃 > sī; #78C3
+磄 > táng; #78C4
+磅 > bàng; #78C5
+磆 > huá; #78C6
+磇 > pī; #78C7
+磈 > wĕi; #78C8
+磉 > săng; #78C9
+磊 > lĕi; #78CA
+磋 > cūo; #78CB
+磌 > zhēn; #78CC
+磍 > xiá; #78CD
+磎 > qī; #78CE
+磏 > lián; #78CF
+磐 > pán; #78D0
+磑 > wèi; #78D1
+磒 > yŭn; #78D2
+磓 > dūi; #78D3
+磔 > zhé; #78D4
+磕 > kē; #78D5
+磖 > lā; #78D6
+磘 > qìng; #78D8
+磙 > gŭn; #78D9
+磚 > zhuān; #78DA
+磛 > chán; #78DB
+磜 > qì; #78DC
+磝 > áo; #78DD
+磞 > pēng; #78DE
+磟 > lù; #78DF
+磠 > lŭ; #78E0
+磡 > kàn; #78E1
+磢 > qiăng; #78E2
+磣 > chĕn; #78E3
+磤 > yĭn; #78E4
+磥 > lĕi; #78E5
+磦 > biāo; #78E6
+磧 > qì; #78E7
+磨 > mó; #78E8
+磩 > qī; #78E9
+磪 > cūi; #78EA
+磫 > zōng; #78EB
+磬 > qìng; #78EC
+磭 > chùo; #78ED
+磯 > jī; #78EF
+磰 > shàn; #78F0
+磱 > láo; #78F1
+磲 > qú; #78F2
+磳 > zēng; #78F3
+磴 > dèng; #78F4
+磵 > jiàn; #78F5
+磶 > xì; #78F6
+磷 > lìn; #78F7
+磸 > dìng; #78F8
+磹 > diàn; #78F9
+磺 > huáng; #78FA
+磻 > pán; #78FB
+磼 > zá; #78FC
+磽 > qiāo; #78FD
+磾 > dī; #78FE
+磿 > lì; #78FF
+礁 > jiāo; #7901
+礃 > zhăng; #7903
+礄 > qiáo; #7904
+礅 > dūn; #7905
+礆 > xiăn; #7906
+礇 > yù; #7907
+礈 > zhùi; #7908
+礉 > hé; #7909
+礊 > hùo; #790A
+礋 > zhái; #790B
+礌 > lèi; #790C
+礍 > kĕ; #790D
+礎 > chŭ; #790E
+礏 > jí; #790F
+礐 > què; #7910
+礑 > dàng; #7911
+礒 > yĭ; #7912
+礓 > jiāng; #7913
+礔 > pì; #7914
+礕 > pī; #7915
+礖 > yù; #7916
+礗 > pīn; #7917
+礘 > qì; #7918
+礙 > ài; #7919
+礚 > kài; #791A
+礛 > jiān; #791B
+礜 > yù; #791C
+礝 > ruăn; #791D
+礞 > méng; #791E
+礟 > pào; #791F
+礠 > cí; #7920
+礣 > miè; #7923
+礤 > că; #7924
+礥 > xián; #7925
+礦 > kuàng; #7926
+礧 > lèi; #7927
+礨 > lĕi; #7928
+礩 > zhì; #7929
+礪 > lì; #792A
+礫 > lì; #792B
+礬 > fán; #792C
+礭 > què; #792D
+礮 > pào; #792E
+礯 > yīng; #792F
+礰 > lì; #7930
+礱 > lóng; #7931
+礲 > lóng; #7932
+礳 > mò; #7933
+礴 > bó; #7934
+礵 > shuāng; #7935
+礶 > guàn; #7936
+礷 > lán; #7937
+礸 > zăn; #7938
+礹 > yán; #7939
+示 > shì; #793A
+礻 > shì' 'zì' 'páng; #793B
+礼 > lĭ; #793C
+礽 > réng; #793D
+社 > shè; #793E
+礿 > yuè; #793F
+祀 > sì; #7940
+祁 > qí; #7941
+祂 > tā; #7942
+祃 > mà; #7943
+祄 > xiè; #7944
+祅 > xiān; #7945
+祆 > xiān; #7946
+祇 > zhī; #7947
+祈 > qí; #7948
+祉 > zhĭ; #7949
+祊 > bēng; #794A
+祋 > dùi; #794B
+祌 > zhòng; #794C
+祎 > yī; #794E
+祏 > shí; #794F
+祐 > yòu; #7950
+祑 > zhì; #7951
+祒 > tiáo; #7952
+祓 > fú; #7953
+祔 > fù; #7954
+祕 > mì; #7955
+祖 > zŭ; #7956
+祗 > zhī; #7957
+祘 > suàn; #7958
+祙 > mèi; #7959
+祚 > zùo; #795A
+祛 > qū; #795B
+祜 > hù; #795C
+祝 > zhù; #795D
+神 > shén; #795E
+祟 > sùi; #795F
+祠 > cí; #7960
+祡 > chái; #7961
+祢 > mí; #7962
+祣 > lǚ; #7963
+祤 > yŭ; #7964
+祥 > xiáng; #7965
+祦 > wú; #7966
+祧 > tiāo; #7967
+票 > piào; #7968
+祩 > zhū; #7969
+祪 > gŭi; #796A
+祫 > xiá; #796B
+祬 > zhī; #796C
+祭 > jì; #796D
+祮 > gào; #796E
+祯 > zhēn; #796F
+祰 > gào; #7970
+祱 > shùi; #7971
+祲 > jīn; #7972
+祳 > chĕn; #7973
+祴 > gāi; #7974
+祵 > kŭn; #7975
+祶 > dì; #7976
+祷 > dăo; #7977
+祸 > hùo; #7978
+祹 > táo; #7979
+祺 > qí; #797A
+祻 > gù; #797B
+祼 > guàn; #797C
+祽 > zùi; #797D
+祾 > líng; #797E
+祿 > lù; #797F
+禀 > bĭng; #7980
+禁 > jìn; #7981
+禂 > dăo; #7982
+禃 > zhí; #7983
+禄 > lù; #7984
+禅 > shàn; #7985
+禆 > bēi; #7986
+禇 > zhĕ; #7987
+禈 > hūi; #7988
+禉 > yŏu; #7989
+禊 > xì; #798A
+禋 > yīn; #798B
+禌 > zī; #798C
+禍 > hùo; #798D
+禎 > zhēn; #798E
+福 > fú; #798F
+禐 > yuàn; #7990
+禑 > wú; #7991
+禒 > xiăn; #7992
+禓 > yáng; #7993
+禔 > tí; #7994
+禕 > yī; #7995
+禖 > méi; #7996
+禗 > sī; #7997
+禘 > dì; #7998
+禚 > zhúo; #799A
+禛 > zhēn; #799B
+禜 > yŏng; #799C
+禝 > jí; #799D
+禞 > gào; #799E
+禟 > táng; #799F
+禠 > sī; #79A0
+禡 > mà; #79A1
+禢 > tā; #79A2
+禤 > xuān; #79A4
+禥 > qí; #79A5
+禦 > yù; #79A6
+禧 > xī; #79A7
+禨 > jī; #79A8
+禩 > sì; #79A9
+禪 > chán; #79AA
+禫 > tăn; #79AB
+禬 > kuài; #79AC
+禭 > sùi; #79AD
+禮 > lĭ; #79AE
+禯 > nóng; #79AF
+禰 > nĭ; #79B0
+禱 > dăo; #79B1
+禲 > lì; #79B2
+禳 > ráng; #79B3
+禴 > yuè; #79B4
+禵 > tí; #79B5
+禶 > zăn; #79B6
+禷 > lèi; #79B7
+禸 > róu; #79B8
+禹 > yŭ; #79B9
+禺 > yú; #79BA
+离 > chī; #79BB
+禼 > xiè; #79BC
+禽 > qín; #79BD
+禾 > hé; #79BE
+禿 > tū; #79BF
+秀 > xìu; #79C0
+私 > sī; #79C1
+秂 > rén; #79C2
+秃 > tū; #79C3
+秄 > zĭ; #79C4
+秅 > chá; #79C5
+秆 > găn; #79C6
+秇 > yì; #79C7
+秈 > xiān; #79C8
+秉 > bĭng; #79C9
+秊 > nián; #79CA
+秋 > qīu; #79CB
+秌 > qīu; #79CC
+种 > chóng; #79CD
+秎 > fén; #79CE
+秏 > hào; #79CF
+秐 > yún; #79D0
+科 > kē; #79D1
+秒 > miăo; #79D2
+秓 > zhī; #79D3
+秔 > gēng; #79D4
+秕 > bĭ; #79D5
+秖 > zhī; #79D6
+秗 > yù; #79D7
+秘 > mì; #79D8
+秙 > kù; #79D9
+秚 > bàn; #79DA
+秛 > pī; #79DB
+秜 > ní; #79DC
+秝 > lì; #79DD
+秞 > yóu; #79DE
+租 > zū; #79DF
+秠 > pī; #79E0
+秡 > bá; #79E1
+秢 > líng; #79E2
+秣 > mò; #79E3
+秤 > chèng; #79E4
+秥 > nián; #79E5
+秦 > qín; #79E6
+秧 > yāng; #79E7
+秨 > zúo; #79E8
+秩 > zhì; #79E9
+秪 > zhī; #79EA
+秫 > shú; #79EB
+秬 > jù; #79EC
+秭 > zĭ; #79ED
+秮 > húo; #79EE
+积 > jī; #79EF
+称 > chēng; #79F0
+秱 > tóng; #79F1
+秲 > zhì; #79F2
+秳 > húo; #79F3
+秴 > hé; #79F4
+秵 > yīn; #79F5
+秶 > zī; #79F6
+秷 > zhí; #79F7
+秸 > jiē; #79F8
+秹 > rĕn; #79F9
+秺 > dù; #79FA
+移 > yí; #79FB
+秼 > zhū; #79FC
+秽 > hùi; #79FD
+秾 > nóng; #79FE
+秿 > fŭ; #79FF
+稀 > xī; #7A00
+稁 > kăo; #7A01
+稂 > láng; #7A02
+稃 > fū; #7A03
+稄 > zè; #7A04
+稅 > shùi; #7A05
+稆 > lǚ; #7A06
+稇 > kŭn; #7A07
+稈 > găn; #7A08
+稉 > gēng; #7A09
+稊 > tí; #7A0A
+程 > chéng; #7A0B
+稌 > tú; #7A0C
+稍 > shāo; #7A0D
+税 > shùi; #7A0E
+稏 > yà; #7A0F
+稐 > lŭn; #7A10
+稑 > lù; #7A11
+稒 > gù; #7A12
+稓 > zúo; #7A13
+稔 > rĕn; #7A14
+稕 > zhùn; #7A15
+稖 > bàng; #7A16
+稗 > bài; #7A17
+稘 > jī; #7A18
+稙 > zhí; #7A19
+稚 > zhì; #7A1A
+稛 > kŭn; #7A1B
+稜 > léng; #7A1C
+稝 > péng; #7A1D
+稞 > kē; #7A1E
+稟 > bĭng; #7A1F
+稠 > chóu; #7A20
+稡 > zú; #7A21
+稢 > yù; #7A22
+稣 > sū; #7A23
+稤 > lǜe; #7A24
+稦 > yī; #7A26
+稧 > xì; #7A27
+稨 > biān; #7A28
+稩 > jì; #7A29
+稪 > fù; #7A2A
+稫 > bī; #7A2B
+稬 > nùo; #7A2C
+稭 > jiē; #7A2D
+種 > zhŏng; #7A2E
+稯 > zōng; #7A2F
+稰 > xū; #7A30
+稱 > chēng; #7A31
+稲 > dào; #7A32
+稳 > wĕn; #7A33
+稴 > lián; #7A34
+稵 > zī; #7A35
+稶 > yù; #7A36
+稷 > jì; #7A37
+稸 > xù; #7A38
+稹 > zhĕn; #7A39
+稺 > zhì; #7A3A
+稻 > dào; #7A3B
+稼 > jià; #7A3C
+稽 > jī; #7A3D
+稾 > găo; #7A3E
+稿 > găo; #7A3F
+穀 > gŭ; #7A40
+穁 > róng; #7A41
+穂 > sùi; #7A42
+穄 > jì; #7A44
+穅 > kāng; #7A45
+穆 > mù; #7A46
+穇 > shān; #7A47
+穈 > mén; #7A48
+穉 > zhì; #7A49
+穊 > jì; #7A4A
+穋 > lù; #7A4B
+穌 > sū; #7A4C
+積 > jī; #7A4D
+穎 > yĭng; #7A4E
+穏 > wĕn; #7A4F
+穐 > qīu; #7A50
+穑 > sè; #7A51
+穓 > yì; #7A53
+穔 > huáng; #7A54
+穕 > qiè; #7A55
+穖 > jĭ; #7A56
+穗 > sùi; #7A57
+穘 > xiāo; #7A58
+穙 > pú; #7A59
+穚 > jiāo; #7A5A
+穛 > zhūo; #7A5B
+穜 > tóng; #7A5C
+穞 > lǚ; #7A5E
+穟 > sùi; #7A5F
+穠 > nóng; #7A60
+穡 > sè; #7A61
+穢 > hùi; #7A62
+穣 > ráng; #7A63
+穤 > nùo; #7A64
+穥 > yù; #7A65
+穦 > bin; #7A66
+穧 > jì; #7A67
+穨 > túi; #7A68
+穩 > wĕn; #7A69
+穪 > chēng; #7A6A
+穫 > hùo; #7A6B
+穬 > gŏng; #7A6C
+穭 > lǚ; #7A6D
+穮 > biāo; #7A6E
+穰 > ráng; #7A70
+穱 > zhūo; #7A71
+穲 > lí; #7A72
+穳 > zàn; #7A73
+穴 > xuè; #7A74
+穵 > wā; #7A75
+究 > jìu; #7A76
+穷 > qíong; #7A77
+穸 > xì; #7A78
+穹 > qīong; #7A79
+空 > kōng; #7A7A
+穻 > yū; #7A7B
+穼 > sēn; #7A7C
+穽 > jĭng; #7A7D
+穾 > yào; #7A7E
+穿 > chuān; #7A7F
+窀 > zhūn; #7A80
+突 > tú; #7A81
+窂 > láo; #7A82
+窃 > qiè; #7A83
+窄 > zhăi; #7A84
+窅 > yăo; #7A85
+窆 > biăn; #7A86
+窇 > báo; #7A87
+窈 > yăo; #7A88
+窉 > bĭng; #7A89
+窊 > wā; #7A8A
+窋 > zhú; #7A8B
+窌 > jiào; #7A8C
+窍 > qiào; #7A8D
+窎 > diào; #7A8E
+窏 > wū; #7A8F
+窐 > gūi; #7A90
+窑 > yáo; #7A91
+窒 > zhì; #7A92
+窓 > chuāng; #7A93
+窔 > yăo; #7A94
+窕 > tiăo; #7A95
+窖 > jiào; #7A96
+窗 > chuāng; #7A97
+窘 > jĭong; #7A98
+窙 > xiāo; #7A99
+窚 > chéng; #7A9A
+窛 > kòu; #7A9B
+窜 > cuàn; #7A9C
+窝 > wō; #7A9D
+窞 > dàn; #7A9E
+窟 > kū; #7A9F
+窠 > kē; #7AA0
+窡 > zhùi; #7AA1
+窢 > xù; #7AA2
+窣 > sù; #7AA3
+窤 > guan; #7AA4
+窥 > kūi; #7AA5
+窦 > dòu; #7AA6
+窨 > yìn; #7AA8
+窩 > wō; #7AA9
+窪 > wā; #7AAA
+窫 > yà; #7AAB
+窬 > yú; #7AAC
+窭 > jù; #7AAD
+窮 > qíong; #7AAE
+窯 > yáo; #7AAF
+窰 > yáo; #7AB0
+窱 > tiào; #7AB1
+窲 > cháo; #7AB2
+窳 > yŭ; #7AB3
+窴 > tián; #7AB4
+窵 > diào; #7AB5
+窶 > jù; #7AB6
+窷 > liáo; #7AB7
+窸 > xī; #7AB8
+窹 > wù; #7AB9
+窺 > kūi; #7ABA
+窻 > chuāng; #7ABB
+窼 > zhāo; #7ABC
+窾 > kuăn; #7ABE
+窿 > lóng; #7ABF
+竀 > chēng; #7AC0
+竁 > cùi; #7AC1
+竂 > piáo; #7AC2
+竃 > zào; #7AC3
+竄 > cuàn; #7AC4
+竅 > qiào; #7AC5
+竆 > qíong; #7AC6
+竇 > dòu; #7AC7
+竈 > zào; #7AC8
+竉 > lŏng; #7AC9
+竊 > qiè; #7ACA
+立 > lì; #7ACB
+竌 > chù; #7ACC
+竍 > shí' 'gōng' 'shēng; #7ACD
+竎 > fòu; #7ACE
+竏 > qiān' 'gōng' 'shēng; #7ACF
+竐 > chù; #7AD0
+竑 > hóng; #7AD1
+竒 > qí; #7AD2
+竓 > qiān' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD3
+竔 > gōng' 'shēng; #7AD4
+竕 > shí' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD5
+竖 > shù; #7AD6
+竗 > miào; #7AD7
+竘 > jŭ; #7AD8
+站 > zhàn; #7AD9
+竚 > zhù; #7ADA
+竛 > líng; #7ADB
+竜 > lóng; #7ADC
+竝 > bìng; #7ADD
+竞 > jìng; #7ADE
+竟 > jìng; #7ADF
+章 > zhāng; #7AE0
+竡 > yī' 'gōng' 'shēng' 'de' 'yī' 'băi' 'bèi; #7AE1
+竢 > sì; #7AE2
+竣 > jùn; #7AE3
+竤 > hóng; #7AE4
+童 > tóng; #7AE5
+竦 > sŏng; #7AE6
+竧 > jìng; #7AE7
+竨 > diào; #7AE8
+竩 > yì; #7AE9
+竪 > shù; #7AEA
+竫 > jìng; #7AEB
+竬 > qŭ; #7AEC
+竭 > jié; #7AED
+竮 > píng; #7AEE
+端 > duān; #7AEF
+竰 > sháo; #7AF0
+竱 > zhuăn; #7AF1
+竲 > céng; #7AF2
+竳 > dēng; #7AF3
+竴 > cūi; #7AF4
+竵 > huāi; #7AF5
+競 > jìng; #7AF6
+竷 > kàn; #7AF7
+竸 > jìng; #7AF8
+竹 > zhú; #7AF9
+竺 > zhú; #7AFA
+竻 > lè; #7AFB
+竼 > péng; #7AFC
+竽 > yú; #7AFD
+竾 > chí; #7AFE
+竿 > gān; #7AFF
+笀 > máng; #7B00
+笁 > zhú; #7B01
+笃 > dŭ; #7B03
+笄 > jī; #7B04
+笅 > xiáo; #7B05
+笆 > bā; #7B06
+笇 > suàn; #7B07
+笈 > jí; #7B08
+笉 > zhĕn; #7B09
+笊 > zhào; #7B0A
+笋 > sŭn; #7B0B
+笌 > yá; #7B0C
+笍 > zhùi; #7B0D
+笎 > yuán; #7B0E
+笏 > hù; #7B0F
+笐 > gāng; #7B10
+笑 > xiào; #7B11
+笒 > cén; #7B12
+笓 > pí; #7B13
+笔 > bĭ; #7B14
+笕 > jiăn; #7B15
+笖 > yĭ; #7B16
+笗 > dōng; #7B17
+笘 > shān; #7B18
+笙 > shēng; #7B19
+笚 > xiá; #7B1A
+笛 > dí; #7B1B
+笜 > zhú; #7B1C
+笝 > nà; #7B1D
+笞 > chī; #7B1E
+笟 > gū; #7B1F
+笠 > lì; #7B20
+笡 > qiè; #7B21
+笢 > mĭn; #7B22
+笣 > bāo; #7B23
+笤 > tiáo; #7B24
+笥 > sì; #7B25
+符 > fú; #7B26
+笧 > cè; #7B27
+笨 > bèn; #7B28
+笩 > pèi; #7B29
+笪 > dá; #7B2A
+笫 > zĭ; #7B2B
+第 > dì; #7B2C
+笭 > líng; #7B2D
+笮 > zé; #7B2E
+笯 > nú; #7B2F
+笰 > fú; #7B30
+笱 > gŏu; #7B31
+笲 > fān; #7B32
+笳 > jiā; #7B33
+笴 > gĕ; #7B34
+笵 > fàn; #7B35
+笶 > shĭ; #7B36
+笷 > măo; #7B37
+笸 > pŏ; #7B38
+笺 > jiān; #7B3A
+笻 > qíong; #7B3B
+笼 > lóng; #7B3C
+笾 > biān; #7B3E
+笿 > lùo; #7B3F
+筀 > gùi; #7B40
+筁 > qŭ; #7B41
+筂 > chí; #7B42
+筃 > yīn; #7B43
+筄 > yào; #7B44
+筅 > xiăn; #7B45
+筆 > bĭ; #7B46
+筇 > qíong; #7B47
+筈 > guā; #7B48
+等 > dĕng; #7B49
+筊 > jiăo; #7B4A
+筋 > jīn; #7B4B
+筌 > quán; #7B4C
+筍 > sŭn; #7B4D
+筎 > rú; #7B4E
+筏 > fá; #7B4F
+筐 > kuāng; #7B50
+筑 > zhú; #7B51
+筒 > tŏng; #7B52
+筓 > jī; #7B53
+答 > dá; #7B54
+筕 > xíng; #7B55
+策 > cè; #7B56
+筗 > zhòng; #7B57
+筘 > kòu; #7B58
+筙 > lái; #7B59
+筚 > bì; #7B5A
+筛 > shāi; #7B5B
+筜 > dāng; #7B5C
+筝 > zhēng; #7B5D
+筞 > cè; #7B5E
+筟 > fū; #7B5F
+筠 > yún; #7B60
+筡 > tú; #7B61
+筢 > pá; #7B62
+筣 > lì; #7B63
+筤 > láng; #7B64
+筥 > jŭ; #7B65
+筦 > guăn; #7B66
+筧 > jiăn; #7B67
+筨 > hán; #7B68
+筩 > tóng; #7B69
+筪 > xiá; #7B6A
+筫 > zhì; #7B6B
+筬 > chéng; #7B6C
+筭 > suàn; #7B6D
+筮 > shì; #7B6E
+筯 > zhù; #7B6F
+筰 > zúo; #7B70
+筱 > xiăo; #7B71
+筲 > shāo; #7B72
+筳 > tíng; #7B73
+筴 > cè; #7B74
+筵 > yán; #7B75
+筶 > găo; #7B76
+筷 > kuài; #7B77
+筸 > gān; #7B78
+筹 > chóu; #7B79
+筻 > gàng; #7B7B
+筼 > yún; #7B7C
+签 > qiān; #7B7E
+筿 > xiăo; #7B7F
+简 > jiăn; #7B80
+箁 > pú; #7B81
+箂 > lái; #7B82
+箃 > zōu; #7B83
+箄 > bì; #7B84
+箅 > bì; #7B85
+箆 > bì; #7B86
+箇 > gè; #7B87
+箈 > chí; #7B88
+箉 > guăi; #7B89
+箊 > yū; #7B8A
+箋 > jiān; #7B8B
+箌 > zhào; #7B8C
+箍 > gū; #7B8D
+箎 > chí; #7B8E
+箏 > zhēng; #7B8F
+箐 > jīng; #7B90
+箑 > shà; #7B91
+箒 > zhŏu; #7B92
+箓 > lù; #7B93
+箔 > bó; #7B94
+箕 > jī; #7B95
+箖 > lín; #7B96
+算 > suàn; #7B97
+箘 > jùn; #7B98
+箙 > fú; #7B99
+箚 > zhá; #7B9A
+箛 > gū; #7B9B
+箜 > kōng; #7B9C
+箝 > qián; #7B9D
+箞 > quān; #7B9E
+箟 > jùn; #7B9F
+箠 > chúi; #7BA0
+管 > guăn; #7BA1
+箢 > yuān; #7BA2
+箣 > cè; #7BA3
+箤 > jú; #7BA4
+箥 > bŏ; #7BA5
+箦 > zé; #7BA6
+箧 > qiè; #7BA7
+箨 > tùo; #7BA8
+箩 > lúo; #7BA9
+箪 > dān; #7BAA
+箫 > xiāo; #7BAB
+箬 > rùo; #7BAC
+箭 > jiàn; #7BAD
+箮 > xuan; #7BAE
+箯 > biān; #7BAF
+箰 > sŭn; #7BB0
+箱 > xiāng; #7BB1
+箲 > xiăn; #7BB2
+箳 > píng; #7BB3
+箴 > zhēn; #7BB4
+箵 > shĕng; #7BB5
+箶 > hú; #7BB6
+箷 > shī; #7BB7
+箸 > zhù; #7BB8
+箹 > yuē; #7BB9
+箺 > chŭn; #7BBA
+箻 > lǜ; #7BBB
+箼 > wū; #7BBC
+箽 > dŏng; #7BBD
+箾 > xiāo; #7BBE
+箿 > jí; #7BBF
+節 > jié; #7BC0
+篁 > huáng; #7BC1
+篂 > xīng; #7BC2
+篃 > méi; #7BC3
+範 > fàn; #7BC4
+篅 > chúi; #7BC5
+篆 > zhuàn; #7BC6
+篇 > piān; #7BC7
+篈 > fēng; #7BC8
+築 > zhú; #7BC9
+篊 > hóng; #7BCA
+篋 > qiè; #7BCB
+篌 > hóu; #7BCC
+篍 > qīu; #7BCD
+篎 > miăo; #7BCE
+篏 > qiàn; #7BCF
+篑 > kùi; #7BD1
+篓 > lŏu; #7BD3
+篔 > yún; #7BD4
+篕 > hé; #7BD5
+篖 > táng; #7BD6
+篗 > yuè; #7BD7
+篘 > chōu; #7BD8
+篙 > gāo; #7BD9
+篚 > fĕi; #7BDA
+篛 > rùo; #7BDB
+篜 > zhēng; #7BDC
+篝 > gōu; #7BDD
+篞 > niè; #7BDE
+篟 > qiàn; #7BDF
+篠 > xiăo; #7BE0
+篡 > cuàn; #7BE1
+篢 > gōng; #7BE2
+篣 > páng; #7BE3
+篤 > dŭ; #7BE4
+篥 > lì; #7BE5
+篦 > bì; #7BE6
+篧 > zhúo; #7BE7
+篨 > chú; #7BE8
+篩 > shāi; #7BE9
+篪 > chí; #7BEA
+篫 > zhú; #7BEB
+篬 > qiāng; #7BEC
+篭 > lóng; #7BED
+篮 > lán; #7BEE
+篯 > jiān; #7BEF
+篰 > bù; #7BF0
+篱 > lí; #7BF1
+篲 > hùi; #7BF2
+篳 > bì; #7BF3
+篴 > dí; #7BF4
+篵 > cōng; #7BF5
+篶 > yān; #7BF6
+篷 > péng; #7BF7
+篸 > sēn; #7BF8
+篹 > zhuàn; #7BF9
+篺 > pái; #7BFA
+篻 > piào; #7BFB
+篼 > dōu; #7BFC
+篽 > yŭ; #7BFD
+篾 > miè; #7BFE
+篿 > zhuān; #7BFF
+簀 > zé; #7C00
+簁 > xĭ; #7C01
+簂 > gúo; #7C02
+簃 > yí; #7C03
+簄 > hù; #7C04
+簅 > chăn; #7C05
+簆 > kòu; #7C06
+簇 > cù; #7C07
+簈 > píng; #7C08
+簉 > chòu; #7C09
+簊 > jī; #7C0A
+簋 > gŭi; #7C0B
+簌 > sù; #7C0C
+簍 > lŏu; #7C0D
+簎 > zhà; #7C0E
+簏 > lù; #7C0F
+簐 > niăn; #7C10
+簑 > sūo; #7C11
+簒 > cuàn; #7C12
+簔 > sūo; #7C14
+簕 > lè; #7C15
+簖 > duàn; #7C16
+簘 > xiāo; #7C18
+簙 > bó; #7C19
+簚 > mì; #7C1A
+簛 > sī; #7C1B
+簜 > dàng; #7C1C
+簝 > liáo; #7C1D
+簞 > dān; #7C1E
+簟 > diàn; #7C1F
+簠 > fŭ; #7C20
+簡 > jiăn; #7C21
+簢 > mĭn; #7C22
+簣 > kùi; #7C23
+簤 > dài; #7C24
+簥 > qiáo; #7C25
+簦 > dēng; #7C26
+簧 > huáng; #7C27
+簨 > sŭn; #7C28
+簩 > láo; #7C29
+簪 > zān; #7C2A
+簫 > xiāo; #7C2B
+簬 > dù; #7C2C
+簭 > shì; #7C2D
+簮 > zān; #7C2E
+簰 > pái; #7C30
+簲 > pái; #7C32
+簳 > gàn; #7C33
+簴 > jù; #7C34
+簵 > dù; #7C35
+簶 > lù; #7C36
+簷 > yán; #7C37
+簸 > bò; #7C38
+簹 > dāng; #7C39
+簺 > sài; #7C3A
+簻 > kē; #7C3B
+簼 > lóng; #7C3C
+簽 > qiān; #7C3D
+簾 > lián; #7C3E
+簿 > bó; #7C3F
+籀 > zhòu; #7C40
+籁 > lài; #7C41
+籃 > lán; #7C43
+籄 > kùi; #7C44
+籅 > yú; #7C45
+籆 > yuè; #7C46
+籇 > háo; #7C47
+籈 > zhēn; #7C48
+籉 > tái; #7C49
+籊 > tì; #7C4A
+籋 > mí; #7C4B
+籌 > chóu; #7C4C
+籍 > jí; #7C4D
+籐 > téng; #7C50
+籑 > zhuàn; #7C51
+籒 > zhòu; #7C52
+籓 > fān; #7C53
+籔 > sŏu; #7C54
+籕 > zhòu; #7C55
+籗 > zhúo; #7C57
+籘 > téng; #7C58
+籙 > lù; #7C59
+籚 > lú; #7C5A
+籛 > jiān; #7C5B
+籜 > tùo; #7C5C
+籝 > yíng; #7C5D
+籞 > yù; #7C5E
+籟 > lài; #7C5F
+籠 > lóng; #7C60
+籢 > lián; #7C62
+籣 > lán; #7C63
+籤 > qiān; #7C64
+籥 > yuè; #7C65
+籦 > zhōng; #7C66
+籧 > qú; #7C67
+籨 > lián; #7C68
+籩 > biān; #7C69
+籪 > duàn; #7C6A
+籫 > zuăn; #7C6B
+籬 > lí; #7C6C
+籭 > sī; #7C6D
+籮 > lúo; #7C6E
+籯 > yíng; #7C6F
+籰 > yuè; #7C70
+籱 > zhúo; #7C71
+籲 > xū; #7C72
+米 > mĭ; #7C73
+籴 > dí; #7C74
+籵 > fán; #7C75
+籶 > shēn; #7C76
+籷 > zhé; #7C77
+籸 > shēn; #7C78
+籹 > nǚ; #7C79
+籺 > xié; #7C7A
+类 > lèi; #7C7B
+籼 > xiān; #7C7C
+籽 > zĭ; #7C7D
+籾 > ní; #7C7E
+籿 > cùn; #7C7F
+粁 > qiān; #7C81
+粃 > bĭ; #7C83
+粄 > băn; #7C84
+粅 > wù; #7C85
+粆 > shā; #7C86
+粇 > kāng; #7C87
+粈 > rŏu; #7C88
+粉 > fĕn; #7C89
+粊 > bì; #7C8A
+粋 > cùi; #7C8B
+粍 > lí; #7C8D
+粎 > chĭ; #7C8E
+粑 > bā; #7C91
+粒 > lì; #7C92
+粓 > gān; #7C93
+粔 > jù; #7C94
+粕 > pò; #7C95
+粖 > mò; #7C96
+粗 > cū; #7C97
+粘 > nián; #7C98
+粙 > zhòu; #7C99
+粚 > lí; #7C9A
+粛 > sù; #7C9B
+粜 > tiào; #7C9C
+粝 > lì; #7C9D
+粞 > qī; #7C9E
+粟 > sù; #7C9F
+粠 > hóng; #7CA0
+粡 > tóng; #7CA1
+粢 > zī; #7CA2
+粣 > cè; #7CA3
+粤 > yuè; #7CA4
+粥 > zhōu; #7CA5
+粦 > lìn; #7CA6
+粧 > zhuāng; #7CA7
+粨 > băi; #7CA8
+粪 > fèn; #7CAA
+粮 > liáng; #7CAE
+粯 > xiàn; #7CAF
+粰 > fú; #7CB0
+粱 > liáng; #7CB1
+粲 > càn; #7CB2
+粳 > gēng; #7CB3
+粴 > lĭ; #7CB4
+粵 > yuè; #7CB5
+粶 > lù; #7CB6
+粷 > jú; #7CB7
+粸 > qí; #7CB8
+粹 > cùi; #7CB9
+粺 > bài; #7CBA
+粻 > zhāng; #7CBB
+粼 > lín; #7CBC
+粽 > zòng; #7CBD
+精 > jīng; #7CBE
+粿 > gŭo; #7CBF
+糁 > sān; #7CC1
+糂 > săn; #7CC2
+糃 > táng; #7CC3
+糄 > biān; #7CC4
+糅 > rŏu; #7CC5
+糆 > miàn; #7CC6
+糇 > hóu; #7CC7
+糈 > xŭ; #7CC8
+糉 > zòng; #7CC9
+糊 > hú; #7CCA
+糋 > jiàn; #7CCB
+糌 > zán; #7CCC
+糍 > cí; #7CCD
+糎 > lí; #7CCE
+糏 > xiè; #7CCF
+糐 > fū; #7CD0
+糑 > nì; #7CD1
+糒 > bèi; #7CD2
+糓 > gŭ; #7CD3
+糔 > xĭu; #7CD4
+糕 > gāo; #7CD5
+糖 > táng; #7CD6
+糗 > qĭu; #7CD7
+糙 > cāo; #7CD9
+糚 > zhuāng; #7CDA
+糛 > táng; #7CDB
+糜 > mí; #7CDC
+糝 > sān; #7CDD
+糞 > fèn; #7CDE
+糟 > zāo; #7CDF
+糠 > kāng; #7CE0
+糡 > jiàng; #7CE1
+糢 > mó; #7CE2
+糣 > săn; #7CE3
+糤 > săn; #7CE4
+糥 > nùo; #7CE5
+糦 > xī; #7CE6
+糧 > liáng; #7CE7
+糨 > jiàng; #7CE8
+糩 > kuài; #7CE9
+糪 > bó; #7CEA
+糫 > huán; #7CEB
+糭 > zòng; #7CED
+糮 > xiàn; #7CEE
+糯 > nùo; #7CEF
+糰 > tuán; #7CF0
+糱 > niè; #7CF1
+糲 > lì; #7CF2
+糳 > zùo; #7CF3
+糴 > dí; #7CF4
+糵 > niè; #7CF5
+糶 > tiào; #7CF6
+糷 > lán; #7CF7
+糸 > mì; #7CF8
+糹 > jiăo' 'sī' 'páng; #7CF9
+糺 > jīu; #7CFA
+系 > xì; #7CFB
+糼 > gōng; #7CFC
+糽 > zhĕng; #7CFD
+糾 > jīu; #7CFE
+糿 > yòu; #7CFF
+紀 > jì; #7D00
+紁 > chà; #7D01
+紂 > zhòu; #7D02
+紃 > xún; #7D03
+約 > yuē; #7D04
+紅 > hóng; #7D05
+紆 > yū; #7D06
+紇 > hé; #7D07
+紈 > wán; #7D08
+紉 > rèn; #7D09
+紊 > wèn; #7D0A
+紋 > wén; #7D0B
+紌 > qíu; #7D0C
+納 > nà; #7D0D
+紎 > zī; #7D0E
+紏 > tŏu; #7D0F
+紐 > nĭu; #7D10
+紑 > fóu; #7D11
+紒 > jiè; #7D12
+紓 > shū; #7D13
+純 > chún; #7D14
+紕 > pí; #7D15
+紖 > yĭn; #7D16
+紗 > shā; #7D17
+紘 > hóng; #7D18
+紙 > zhĭ; #7D19
+級 > jí; #7D1A
+紛 > fēn; #7D1B
+紜 > yún; #7D1C
+紝 > rén; #7D1D
+紞 > dăn; #7D1E
+紟 > jīn; #7D1F
+素 > sù; #7D20
+紡 > făng; #7D21
+索 > sŭo; #7D22
+紣 > cùi; #7D23
+紤 > jĭu; #7D24
+紥 > zhá; #7D25
+紧 > jĭn; #7D27
+紨 > fù; #7D28
+紩 > zhì; #7D29
+紪 > cĭ; #7D2A
+紫 > zĭ; #7D2B
+紬 > chóu; #7D2C
+紭 > hóng; #7D2D
+紮 > zhá; #7D2E
+累 > lèi; #7D2F
+細 > xì; #7D30
+紱 > fú; #7D31
+紲 > xiè; #7D32
+紳 > shēn; #7D33
+紴 > bèi; #7D34
+紵 > zhù; #7D35
+紶 > qŭ; #7D36
+紷 > líng; #7D37
+紸 > zhù; #7D38
+紹 > shào; #7D39
+紺 > gàn; #7D3A
+紻 > yāng; #7D3B
+紼 > fú; #7D3C
+紽 > túo; #7D3D
+紾 > zhĕn; #7D3E
+紿 > dài; #7D3F
+絀 > zhúo; #7D40
+絁 > shī; #7D41
+終 > zhōng; #7D42
+絃 > xián; #7D43
+組 > zŭ; #7D44
+絅 > jĭong; #7D45
+絆 > bàn; #7D46
+絇 > jù; #7D47
+絈 > mò; #7D48
+絉 > shù; #7D49
+絊 > zùi; #7D4A
+経 > jīng; #7D4C
+絍 > rén; #7D4D
+絎 > hèng; #7D4E
+絏 > xiè; #7D4F
+結 > jié; #7D50
+絑 > zhū; #7D51
+絒 > chóu; #7D52
+絓 > guà; #7D53
+絔 > băi; #7D54
+絕 > jué; #7D55
+絖 > kuàng; #7D56
+絗 > hú; #7D57
+絘 > cì; #7D58
+絙 > gēng; #7D59
+絚 > gēng; #7D5A
+絛 > tāo; #7D5B
+絜 > xié; #7D5C
+絝 > kù; #7D5D
+絞 > jiăo; #7D5E
+絟 > quān; #7D5F
+絠 > găi; #7D60
+絡 > lùo; #7D61
+絢 > xuàn; #7D62
+絣 > bīng; #7D63
+絤 > xiàn; #7D64
+絥 > fú; #7D65
+給 > gĕi; #7D66
+絧 > tóng; #7D67
+絨 > róng; #7D68
+絩 > tiào; #7D69
+絪 > yīn; #7D6A
+絫 > lĕi; #7D6B
+絬 > xiè; #7D6C
+絭 > quàn; #7D6D
+絮 > xù; #7D6E
+絯 > lǜn; #7D6F
+絰 > dié; #7D70
+統 > tŏng; #7D71
+絲 > sī; #7D72
+絳 > jiàng; #7D73
+絴 > xiáng; #7D74
+絵 > hùi; #7D75
+絶 > jué; #7D76
+絷 > zhí; #7D77
+絸 > jiăn; #7D78
+絹 > juàn; #7D79
+絺 > chī; #7D7A
+絻 > miăn; #7D7B
+絼 > zhĕn; #7D7C
+絽 > lǚ; #7D7D
+絾 > chéng; #7D7E
+絿 > qíu; #7D7F
+綀 > shū; #7D80
+綁 > băng; #7D81
+綂 > tŏng; #7D82
+綃 > xiāo; #7D83
+綄 > wàn; #7D84
+綅 > qīn; #7D85
+綆 > gĕng; #7D86
+綇 > xĭu; #7D87
+綈 > tí; #7D88
+綉 > xìu; #7D89
+綊 > xié; #7D8A
+綋 > hóng; #7D8B
+綌 > xì; #7D8C
+綍 > fú; #7D8D
+綎 > tīng; #7D8E
+綏 > sūi; #7D8F
+綐 > dùi; #7D90
+綑 > kŭn; #7D91
+綒 > fū; #7D92
+經 > jīng; #7D93
+綔 > hù; #7D94
+綕 > zhī; #7D95
+綖 > yán; #7D96
+綗 > jĭong; #7D97
+綘 > féng; #7D98
+継 > jì; #7D99
+綜 > zòng; #7D9C
+綝 > lín; #7D9D
+綞 > dŭo; #7D9E
+綟 > lì; #7D9F
+綠 > lǜ; #7DA0
+綡 > liáng; #7DA1
+綢 > chóu; #7DA2
+綣 > quăn; #7DA3
+綤 > shào; #7DA4
+綥 > qì; #7DA5
+綦 > qí; #7DA6
+綧 > zhŭn; #7DA7
+綨 > qí; #7DA8
+綩 > wăn; #7DA9
+綪 > qiàn; #7DAA
+綫 > xiàn; #7DAB
+綬 > shòu; #7DAC
+維 > wéi; #7DAD
+綮 > qĭ; #7DAE
+綯 > táo; #7DAF
+綰 > wăn; #7DB0
+綱 > gāng; #7DB1
+網 > wăng; #7DB2
+綳 > bēng; #7DB3
+綴 > zhùi; #7DB4
+綵 > căi; #7DB5
+綶 > gŭo; #7DB6
+綷 > cùi; #7DB7
+綸 > lún; #7DB8
+綹 > lĭu; #7DB9
+綺 > qĭ; #7DBA
+綻 > zhàn; #7DBB
+綼 > bēi; #7DBC
+綽 > chùo; #7DBD
+綾 > líng; #7DBE
+綿 > mián; #7DBF
+緀 > qī; #7DC0
+緁 > qiè; #7DC1
+緂 > tān; #7DC2
+緃 > zōng; #7DC3
+緄 > gŭn; #7DC4
+緅 > zōu; #7DC5
+緆 > yì; #7DC6
+緇 > zī; #7DC7
+緈 > xìng; #7DC8
+緉 > liăng; #7DC9
+緊 > jĭn; #7DCA
+緋 > fēi; #7DCB
+緌 > rúi; #7DCC
+緍 > mín; #7DCD
+緎 > yù; #7DCE
+総 > zŏng; #7DCF
+緐 > fán; #7DD0
+緑 > lǜ; #7DD1
+緒 > xù; #7DD2
+緓 > yingl; #7DD3
+緔 > zhàng; #7DD4
+緖 > xù; #7DD6
+緗 > xiāng; #7DD7
+緘 > jiān; #7DD8
+緙 > kè; #7DD9
+線 > xiàn; #7DDA
+緛 > ruăn; #7DDB
+緜 > mián; #7DDC
+緝 > qì; #7DDD
+緞 > duàn; #7DDE
+緟 > zhòng; #7DDF
+締 > dì; #7DE0
+緡 > mín; #7DE1
+緢 > miáo; #7DE2
+緣 > yuán; #7DE3
+緤 > xiè; #7DE4
+緥 > băo; #7DE5
+緦 > sī; #7DE6
+緧 > qīu; #7DE7
+編 > biān; #7DE8
+緩 > huăn; #7DE9
+緪 > gēng; #7DEA
+緫 > cōng; #7DEB
+緬 > miăn; #7DEC
+緭 > wèi; #7DED
+緮 > fù; #7DEE
+緯 > wĕi; #7DEF
+緰 > yú; #7DF0
+緱 > gōu; #7DF1
+緲 > miăo; #7DF2
+緳 > xié; #7DF3
+練 > liàn; #7DF4
+緵 > zōng; #7DF5
+緶 > biàn; #7DF6
+緷 > yùn; #7DF7
+緸 > yīn; #7DF8
+緹 > tí; #7DF9
+緺 > guā; #7DFA
+緻 > zhì; #7DFB
+緼 > yūn; #7DFC
+緽 > chēng; #7DFD
+緾 > chán; #7DFE
+緿 > dài; #7DFF
+縀 > xiá; #7E00
+縁 > yuán; #7E01
+縂 > zŏng; #7E02
+縃 > xū; #7E03
+縆 > gēng; #7E06
+縈 > yíng; #7E08
+縉 > jìn; #7E09
+縊 > yì; #7E0A
+縋 > zhùi; #7E0B
+縌 > nì; #7E0C
+縍 > bāng; #7E0D
+縎 > gŭ; #7E0E
+縏 > pán; #7E0F
+縐 > zhòu; #7E10
+縑 > jiān; #7E11
+縒 > cŭo; #7E12
+縓 > quăn; #7E13
+縔 > shuăng; #7E14
+縕 > yūn; #7E15
+縖 > xiá; #7E16
+縗 > shuāi; #7E17
+縘 > xī; #7E18
+縙 > róng; #7E19
+縚 > tāo; #7E1A
+縛 > fú; #7E1B
+縜 > yún; #7E1C
+縝 > zhēn; #7E1D
+縞 > găo; #7E1E
+縟 > rù; #7E1F
+縠 > hú; #7E20
+縡 > zăi; #7E21
+縢 > téng; #7E22
+縣 > xiàn; #7E23
+縤 > sù; #7E24
+縥 > zhĕn; #7E25
+縦 > zòng; #7E26
+縧 > tāo; #7E27
+縩 > cài; #7E29
+縪 > bì; #7E2A
+縫 > féng; #7E2B
+縬 > cù; #7E2C
+縭 > lí; #7E2D
+縮 > sūo; #7E2E
+縯 > yĭn; #7E2F
+縰 > xĭ; #7E30
+縱 > zòng; #7E31
+縲 > léi; #7E32
+縳 > zhuàn; #7E33
+縴 > qiān; #7E34
+縵 > màn; #7E35
+縶 > zhí; #7E36
+縷 > lǚ; #7E37
+縸 > mò; #7E38
+縹 > piăo; #7E39
+縺 > lián; #7E3A
+縻 > mí; #7E3B
+縼 > xuàn; #7E3C
+總 > zŏng; #7E3D
+績 > jī; #7E3E
+縿 > shān; #7E3F
+繀 > sùi; #7E40
+繁 > fán; #7E41
+繂 > shuài; #7E42
+繃 > bēng; #7E43
+繄 > yī; #7E44
+繅 > sāo; #7E45
+繆 > móu; #7E46
+繇 > zhòu; #7E47
+繈 > qiăng; #7E48
+繉 > hún; #7E49
+繋 > xì; #7E4B
+繍 > xìu; #7E4D
+繎 > rán; #7E4E
+繏 > xuàn; #7E4F
+繐 > hùi; #7E50
+繑 > qiāo; #7E51
+繒 > zēng; #7E52
+繓 > zŭo; #7E53
+織 > zhī; #7E54
+繕 > shàn; #7E55
+繖 > săn; #7E56
+繗 > lín; #7E57
+繘 > yù; #7E58
+繙 > fān; #7E59
+繚 > liáo; #7E5A
+繛 > chùo; #7E5B
+繜 > zūn; #7E5C
+繝 > jiàn; #7E5D
+繞 > rào; #7E5E
+繟 > chăn; #7E5F
+繠 > rŭi; #7E60
+繡 > xìu; #7E61
+繢 > hùi; #7E62
+繣 > huà; #7E63
+繤 > zuăn; #7E64
+繥 > xī; #7E65
+繦 > qiăng; #7E66
+繨 > dá; #7E68
+繩 > shéng; #7E69
+繪 > hùi; #7E6A
+繫 > xì; #7E6B
+繬 > sè; #7E6C
+繭 > jiăn; #7E6D
+繮 > jiāng; #7E6E
+繯 > huán; #7E6F
+繰 > zăo; #7E70
+繱 > cōng; #7E71
+繲 > jiè; #7E72
+繳 > jiăo; #7E73
+繴 > bò; #7E74
+繵 > chán; #7E75
+繶 > yì; #7E76
+繷 > náo; #7E77
+繸 > sùi; #7E78
+繹 > yì; #7E79
+繺 > shăi; #7E7A
+繻 > xū; #7E7B
+繼 > jì; #7E7C
+繽 > bīn; #7E7D
+繾 > qiăn; #7E7E
+繿 > lán; #7E7F
+纀 > pú; #7E80
+纁 > xūn; #7E81
+纂 > zuăn; #7E82
+纃 > qí; #7E83
+纄 > péng; #7E84
+纅 > lì; #7E85
+纆 > mò; #7E86
+纇 > lèi; #7E87
+纈 > xié; #7E88
+纉 > zuăn; #7E89
+纊 > kuàng; #7E8A
+纋 > yōu; #7E8B
+續 > xù; #7E8C
+纍 > léi; #7E8D
+纎 > xiān; #7E8E
+纏 > chán; #7E8F
+纑 > lú; #7E91
+纒 > chán; #7E92
+纓 > yīng; #7E93
+纔 > cái; #7E94
+纕 > xiāng; #7E95
+纖 > xiān; #7E96
+纗 > zūi; #7E97
+纘 > zuăn; #7E98
+纙 > lùo; #7E99
+纚 > xĭ; #7E9A
+纛 > dào; #7E9B
+纜 > làn; #7E9C
+纝 > léi; #7E9D
+纞 > liàn; #7E9E
+纟 > sī; #7E9F
+纠 > jīu; #7EA0
+纡 > yū; #7EA1
+红 > hóng; #7EA2
+纣 > zhòu; #7EA3
+纤 > xiān; #7EA4
+纥 > hé; #7EA5
+约 > yuē; #7EA6
+级 > jí; #7EA7
+纨 > wán; #7EA8
+纩 > kuàng; #7EA9
+纪 > jì; #7EAA
+纫 > rèn; #7EAB
+纬 > wĕi; #7EAC
+纭 > yún; #7EAD
+纮 > hóng; #7EAE
+纯 > chún; #7EAF
+纰 > pí; #7EB0
+纱 > shā; #7EB1
+纲 > gāng; #7EB2
+纳 > nà; #7EB3
+纴 > rén; #7EB4
+纵 > zòng; #7EB5
+纶 > lún; #7EB6
+纷 > fēn; #7EB7
+纸 > zhĭ; #7EB8
+纹 > wén; #7EB9
+纺 > făng; #7EBA
+纻 > zhù; #7EBB
+纼 > yĭn; #7EBC
+纽 > nĭu; #7EBD
+纾 > shū; #7EBE
+线 > xiàn; #7EBF
+绀 > gàn; #7EC0
+绁 > xiè; #7EC1
+绂 > fú; #7EC2
+练 > liàn; #7EC3
+组 > zŭ; #7EC4
+绅 > shēn; #7EC5
+细 > xì; #7EC6
+织 > zhī; #7EC7
+终 > zhōng; #7EC8
+绉 > zhòu; #7EC9
+绊 > bàn; #7ECA
+绋 > fú; #7ECB
+绌 > zhúo; #7ECC
+绍 > shào; #7ECD
+绎 > yì; #7ECE
+经 > jīng; #7ECF
+绐 > dài; #7ED0
+绑 > băng; #7ED1
+绒 > róng; #7ED2
+结 > jié; #7ED3
+绔 > kù; #7ED4
+绕 > rào; #7ED5
+绖 > dié; #7ED6
+绗 > hèng; #7ED7
+绘 > hùi; #7ED8
+给 > gĕi; #7ED9
+绚 > xuàn; #7EDA
+绛 > jiàng; #7EDB
+络 > lùo; #7EDC
+绝 > jué; #7EDD
+绞 > jiăo; #7EDE
+统 > tŏng; #7EDF
+绠 > gĕng; #7EE0
+绡 > xiāo; #7EE1
+绢 > juàn; #7EE2
+绣 > xìu; #7EE3
+绤 > xì; #7EE4
+绥 > sūi; #7EE5
+绦 > tāo; #7EE6
+继 > jì; #7EE7
+绨 > tí; #7EE8
+绩 > jī; #7EE9
+绪 > xù; #7EEA
+绫 > líng; #7EEB
+续 > xù; #7EED
+绮 > qĭ; #7EEE
+绯 > fēi; #7EEF
+绰 > chùo; #7EF0
+绱 > zhăng; #7EF1
+绲 > gŭn; #7EF2
+绳 > shéng; #7EF3
+维 > wéi; #7EF4
+绵 > mián; #7EF5
+绶 > shòu; #7EF6
+绷 > bēng; #7EF7
+绸 > chóu; #7EF8
+绹 > táo; #7EF9
+绺 > lĭu; #7EFA
+绻 > quăn; #7EFB
+综 > zòng; #7EFC
+绽 > zhàn; #7EFD
+绾 > wăn; #7EFE
+绿 > lǜ; #7EFF
+缀 > zhùi; #7F00
+缁 > zī; #7F01
+缂 > kè; #7F02
+缃 > xiāng; #7F03
+缄 > jiān; #7F04
+缅 > miăn; #7F05
+缆 > làn; #7F06
+缇 > tí; #7F07
+缈 > miăo; #7F08
+缉 > qì; #7F09
+缊 > yūn; #7F0A
+缋 > hùi; #7F0B
+缌 > sī; #7F0C
+缍 > dŭo; #7F0D
+缎 > duàn; #7F0E
+缏 > biàn; #7F0F
+缐 > xiàn; #7F10
+缑 > gōu; #7F11
+缒 > zhùi; #7F12
+缓 > huăn; #7F13
+缔 > dì; #7F14
+缕 > lǚ; #7F15
+编 > biān; #7F16
+缗 > mín; #7F17
+缘 > yuán; #7F18
+缙 > jìn; #7F19
+缚 > fú; #7F1A
+缛 > rù; #7F1B
+缜 > zhēn; #7F1C
+缝 > féng; #7F1D
+缞 > shuāi; #7F1E
+缟 > găo; #7F1F
+缠 > chán; #7F20
+缡 > lí; #7F21
+缢 > yì; #7F22
+缣 > jiān; #7F23
+缤 > bīn; #7F24
+缥 > piăo; #7F25
+缦 > màn; #7F26
+缧 > léi; #7F27
+缨 > yīng; #7F28
+缩 > sūo; #7F29
+缪 > móu; #7F2A
+缫 > sāo; #7F2B
+缬 > xié; #7F2C
+缭 > liáo; #7F2D
+缮 > shàn; #7F2E
+缯 > zēng; #7F2F
+缰 > jiāng; #7F30
+缱 > qiăn; #7F31
+缲 > zăo; #7F32
+缳 > huán; #7F33
+缴 > jiăo; #7F34
+缵 > zuăn; #7F35
+缶 > fŏu; #7F36
+缷 > xiè; #7F37
+缸 > gāng; #7F38
+缹 > fŏu; #7F39
+缺 > quē; #7F3A
+缻 > fŏu; #7F3B
+缽 > bō; #7F3D
+缾 > píng; #7F3E
+缿 > hòu; #7F3F
+罁 > gāng; #7F41
+罂 > yīng; #7F42
+罃 > yīng; #7F43
+罄 > qìng; #7F44
+罅 > xià; #7F45
+罆 > guàn; #7F46
+罇 > zūn; #7F47
+罈 > tán; #7F48
+罊 > qì; #7F4A
+罋 > wèng; #7F4B
+罌 > yīng; #7F4C
+罍 > léi; #7F4D
+罎 > tán; #7F4E
+罏 > lú; #7F4F
+罐 > guàn; #7F50
+网 > wăng; #7F51
+罒 > wăng; #7F52
+罓 > gāng; #7F53
+罔 > wăng; #7F54
+罕 > hăn; #7F55
+罗 > lūo; #7F57
+罘 > fú; #7F58
+罙 > mí; #7F59
+罚 > fá; #7F5A
+罛 > gū; #7F5B
+罜 > zhŭ; #7F5C
+罝 > jū; #7F5D
+罞 > máo; #7F5E
+罟 > gŭ; #7F5F
+罠 > mín; #7F60
+罡 > gāng; #7F61
+罢 > bà; #7F62
+罣 > guà; #7F63
+罤 > tí; #7F64
+罥 > juàn; #7F65
+罦 > fū; #7F66
+罧 > lín; #7F67
+罨 > yăn; #7F68
+罩 > zhào; #7F69
+罪 > zùi; #7F6A
+罫 > guà; #7F6B
+罬 > zhúo; #7F6C
+罭 > yù; #7F6D
+置 > zhì; #7F6E
+罯 > ăn; #7F6F
+罰 > fá; #7F70
+罱 > năn; #7F71
+署 > shŭ; #7F72
+罳 > sī; #7F73
+罴 > pí; #7F74
+罵 > mà; #7F75
+罶 > lĭu; #7F76
+罷 > bà; #7F77
+罸 > fá; #7F78
+罹 > lí; #7F79
+罺 > chāo; #7F7A
+罻 > wèi; #7F7B
+罼 > bì; #7F7C
+罽 > jì; #7F7D
+罾 > zēng; #7F7E
+罿 > tóng; #7F7F
+羀 > lĭu; #7F80
+羁 > jī; #7F81
+羂 > juàn; #7F82
+羃 > mì; #7F83
+羄 > zhào; #7F84
+羅 > lúo; #7F85
+羆 > pí; #7F86
+羇 > jī; #7F87
+羈 > jī; #7F88
+羉 > luán; #7F89
+羊 > yáng; #7F8A
+羋 > miē; #7F8B
+羌 > qiāng; #7F8C
+羍 > tà; #7F8D
+美 > mĕi; #7F8E
+羏 > yáng; #7F8F
+羐 > yŏu; #7F90
+羑 > yŏu; #7F91
+羒 > fén; #7F92
+羓 > bā; #7F93
+羔 > gāo; #7F94
+羕 > yàng; #7F95
+羖 > gŭ; #7F96
+羗 > qiāng; #7F97
+羘 > zāng; #7F98
+羙 > gāo; #7F99
+羚 > líng; #7F9A
+羛 > yì; #7F9B
+羜 > zhù; #7F9C
+羝 > dī; #7F9D
+羞 > xīu; #7F9E
+羟 > qiān; #7F9F
+羠 > yí; #7FA0
+羡 > xiàn; #7FA1
+羢 > róng; #7FA2
+羣 > qún; #7FA3
+群 > qún; #7FA4
+羥 > qiān; #7FA5
+羦 > huán; #7FA6
+羧 > zūi; #7FA7
+羨 > xiàn; #7FA8
+義 > yì; #7FA9
+羫 > qiāng; #7FAB
+羬 > xián; #7FAC
+羭 > yú; #7FAD
+羮 > gēng; #7FAE
+羯 > jié; #7FAF
+羰 > tāng; #7FB0
+羱 > yuán; #7FB1
+羲 > xī; #7FB2
+羳 > fán; #7FB3
+羴 > shān; #7FB4
+羵 > fĕn; #7FB5
+羶 > shān; #7FB6
+羷 > liăn; #7FB7
+羸 > léi; #7FB8
+羹 > gēng; #7FB9
+羺 > nóu; #7FBA
+羻 > qiàng; #7FBB
+羼 > chàn; #7FBC
+羽 > yŭ; #7FBD
+羾 > gòng; #7FBE
+羿 > yì; #7FBF
+翀 > chóng; #7FC0
+翁 > wēng; #7FC1
+翂 > fēn; #7FC2
+翃 > hóng; #7FC3
+翄 > chì; #7FC4
+翅 > chì; #7FC5
+翆 > cùi; #7FC6
+翇 > fú; #7FC7
+翈 > xiá; #7FC8
+翉 > pĕn; #7FC9
+翊 > yì; #7FCA
+翋 > lā; #7FCB
+翌 > yì; #7FCC
+翍 > pī; #7FCD
+翎 > líng; #7FCE
+翏 > lìu; #7FCF
+翐 > zhì; #7FD0
+翑 > qú; #7FD1
+習 > xí; #7FD2
+翓 > xié; #7FD3
+翔 > xiáng; #7FD4
+翕 > xì; #7FD5
+翖 > xì; #7FD6
+翗 > qí; #7FD7
+翘 > qiáo; #7FD8
+翙 > hùi; #7FD9
+翚 > hūi; #7FDA
+翛 > xiāo; #7FDB
+翜 > sè; #7FDC
+翝 > hóng; #7FDD
+翞 > jiāng; #7FDE
+翟 > dí; #7FDF
+翠 > cùi; #7FE0
+翡 > fĕi; #7FE1
+翢 > tāo; #7FE2
+翣 > shà; #7FE3
+翤 > chì; #7FE4
+翥 > zhù; #7FE5
+翦 > jiăn; #7FE6
+翧 > xuān; #7FE7
+翨 > shì; #7FE8
+翩 > piān; #7FE9
+翪 > zōng; #7FEA
+翫 > wàn; #7FEB
+翬 > hūi; #7FEC
+翭 > hóu; #7FED
+翮 > hé; #7FEE
+翯 > hè; #7FEF
+翰 > hàn; #7FF0
+翱 > áo; #7FF1
+翲 > piāo; #7FF2
+翳 > yì; #7FF3
+翴 > lián; #7FF4
+翵 > qú; #7FF5
+翷 > lín; #7FF7
+翸 > pĕn; #7FF8
+翹 > qiáo; #7FF9
+翺 > áo; #7FFA
+翻 > fān; #7FFB
+翼 > yì; #7FFC
+翽 > hùi; #7FFD
+翾 > xuān; #7FFE
+翿 > dào; #7FFF
+耀 > yào; #8000
+老 > lăo; #8001
+考 > kăo; #8003
+耄 > mào; #8004
+者 > zhĕ; #8005
+耆 > qí; #8006
+耇 > gŏu; #8007
+耈 > gŏu; #8008
+耉 > gŏu; #8009
+耊 > diè; #800A
+耋 > diè; #800B
+而 > ér; #800C
+耍 > shuă; #800D
+耎 > ruăn; #800E
+耏 > ér; #800F
+耐 > nài; #8010
+耑 > zhuān; #8011
+耒 > lĕi; #8012
+耓 > tīng; #8013
+耔 > zĭ; #8014
+耕 > gēng; #8015
+耖 > chào; #8016
+耗 > hào; #8017
+耘 > yún; #8018
+耙 > pá; #8019
+耚 > pī; #801A
+耛 > chí; #801B
+耜 > sì; #801C
+耝 > chú; #801D
+耞 > jiā; #801E
+耟 > jù; #801F
+耠 > hé; #8020
+耡 > chú; #8021
+耢 > lào; #8022
+耣 > lŭn; #8023
+耤 > jí; #8024
+耥 > tăng; #8025
+耦 > ŏu; #8026
+耧 > lóu; #8027
+耨 > nòu; #8028
+耩 > gōu; #8029
+耪 > păng; #802A
+耫 > zé; #802B
+耬 > lóu; #802C
+耭 > jī; #802D
+耮 > lào; #802E
+耯 > hùo; #802F
+耰 > yōu; #8030
+耱 > mò; #8031
+耲 > huái; #8032
+耳 > ĕr; #8033
+耴 > zhé; #8034
+耵 > tīng; #8035
+耶 > yé; #8036
+耷 > dā; #8037
+耸 > sŏng; #8038
+耹 > qín; #8039
+耺 > yún; #803A
+耻 > chĭ; #803B
+耼 > dān; #803C
+耽 > dān; #803D
+耾 > hóng; #803E
+耿 > gĕng; #803F
+聀 > zhí; #8040
+聂 > niè; #8042
+聃 > dān; #8043
+聄 > zhĕn; #8044
+聅 > chè; #8045
+聆 > líng; #8046
+聇 > zhēng; #8047
+聈 > yŏu; #8048
+聉 > wā; #8049
+聊 > liáo; #804A
+聋 > lóng; #804B
+职 > zhí; #804C
+聍 > níng; #804D
+聎 > tiāo; #804E
+聏 > ér; #804F
+聐 > yà; #8050
+聑 > dié; #8051
+聒 > guā; #8052
+联 > lián; #8054
+聕 > hào; #8055
+聖 > shèng; #8056
+聗 > liè; #8057
+聘 > pìn; #8058
+聙 > jīng; #8059
+聚 > jù; #805A
+聛 > bì; #805B
+聜 > dĭ; #805C
+聝 > gúo; #805D
+聞 > wén; #805E
+聟 > xù; #805F
+聠 > píng; #8060
+聡 > cōng; #8061
+聤 > tíng; #8064
+聥 > yŭ; #8065
+聦 > cōng; #8066
+聧 > kúi; #8067
+聩 > kùi; #8069
+聪 > cōng; #806A
+聫 > lián; #806B
+聬 > wĕng; #806C
+聭 > kùi; #806D
+聮 > lián; #806E
+聯 > lián; #806F
+聰 > cōng; #8070
+聱 > áo; #8071
+聲 > shēng; #8072
+聳 > sŏng; #8073
+聴 > tīng; #8074
+聵 > kùi; #8075
+聶 > niè; #8076
+職 > zhí; #8077
+聸 > dān; #8078
+聹 > níng; #8079
+聺 > qie; #807A
+聻 > jī; #807B
+聼 > tīng; #807C
+聽 > tīng; #807D
+聾 > lóng; #807E
+聿 > yù; #807F
+肀 > yù; #8080
+肁 > zhào; #8081
+肂 > sì; #8082
+肃 > sù; #8083
+肄 > yì; #8084
+肅 > sù; #8085
+肆 > sì; #8086
+肇 > zhào; #8087
+肈 > zhào; #8088
+肉 > ròu; #8089
+肊 > yì; #808A
+肋 > lè; #808B
+肌 > jī; #808C
+肍 > qíu; #808D
+肎 > kĕn; #808E
+肏 > cào; #808F
+肐 > gē; #8090
+肑 > dì; #8091
+肒 > huán; #8092
+肓 > huāng; #8093
+肔 > yĭ; #8094
+肕 > rèn; #8095
+肖 > xiào; #8096
+肗 > rŭ; #8097
+肘 > zhŏu; #8098
+肙 > yuān; #8099
+肚 > dù; #809A
+肛 > gāng; #809B
+肜 > róng; #809C
+肝 > gān; #809D
+肞 > chā; #809E
+肟 > wò; #809F
+肠 > cháng; #80A0
+股 > gŭ; #80A1
+肢 > zhī; #80A2
+肣 > hán; #80A3
+肤 > fū; #80A4
+肥 > féi; #80A5
+肦 > fén; #80A6
+肧 > pēi; #80A7
+肨 > pàng; #80A8
+肩 > jiān; #80A9
+肪 > fáng; #80AA
+肫 > zhūn; #80AB
+肬 > yóu; #80AC
+肭 > nà; #80AD
+肮 > háng; #80AE
+肯 > kĕn; #80AF
+肰 > rán; #80B0
+肱 > gōng; #80B1
+育 > yù; #80B2
+肳 > wĕn; #80B3
+肴 > yáo; #80B4
+肵 > jìn; #80B5
+肶 > pí; #80B6
+肷 > qiān; #80B7
+肸 > xì; #80B8
+肹 > xī; #80B9
+肺 > fèi; #80BA
+肻 > kĕn; #80BB
+肼 > jĭng; #80BC
+肽 > tài; #80BD
+肾 > shèn; #80BE
+肿 > zhŏng; #80BF
+胀 > zhàng; #80C0
+胁 > xié; #80C1
+胂 > shēn; #80C2
+胃 > wèi; #80C3
+胄 > zhòu; #80C4
+胅 > dié; #80C5
+胆 > dăn; #80C6
+胇 > fèi; #80C7
+胈 > bá; #80C8
+胉 > bó; #80C9
+胊 > qú; #80CA
+胋 > tián; #80CB
+背 > bèi; #80CC
+胍 > guā; #80CD
+胎 > tāi; #80CE
+胏 > zĭ; #80CF
+胐 > kū; #80D0
+胑 > zhī; #80D1
+胒 > nì; #80D2
+胓 > píng; #80D3
+胔 > zì; #80D4
+胕 > fù; #80D5
+胖 > pàng; #80D6
+胗 > zhēn; #80D7
+胘 > xián; #80D8
+胙 > zùo; #80D9
+胚 > pēi; #80DA
+胛 > jiă; #80DB
+胜 > shèng; #80DC
+胝 > zhī; #80DD
+胞 > bāo; #80DE
+胟 > mŭ; #80DF
+胠 > qū; #80E0
+胡 > hú; #80E1
+胢 > kē; #80E2
+胣 > yĭ; #80E3
+胤 > yìn; #80E4
+胥 > xū; #80E5
+胦 > yāng; #80E6
+胧 > lóng; #80E7
+胨 > dòng; #80E8
+胩 > kă; #80E9
+胪 > lú; #80EA
+胫 > jìng; #80EB
+胬 > nŭ; #80EC
+胭 > yān; #80ED
+胮 > páng; #80EE
+胯 > kuà; #80EF
+胰 > yí; #80F0
+胱 > guāng; #80F1
+胲 > gāi; #80F2
+胳 > gē; #80F3
+胴 > dòng; #80F4
+胵 > zhì; #80F5
+胶 > xiáo; #80F6
+胷 > xīong; #80F7
+胸 > xīong; #80F8
+胹 > ér; #80F9
+胺 > è; #80FA
+胻 > xíng; #80FB
+胼 > pián; #80FC
+能 > néng; #80FD
+胾 > zì; #80FE
+胿 > gui; #80FF
+脀 > chéng; #8100
+脁 > tiào; #8101
+脂 > zhī; #8102
+脃 > cùi; #8103
+脄 > méi; #8104
+脅 > xié; #8105
+脆 > cùi; #8106
+脇 > xié; #8107
+脈 > mò; #8108
+脉 > mài; #8109
+脊 > jí; #810A
+脍 > kuài; #810D
+脎 > sà; #810E
+脏 > zāng; #810F
+脐 > qí; #8110
+脑 > năo; #8111
+脒 > mĭ; #8112
+脓 > nóng; #8113
+脔 > luán; #8114
+脕 > wăn; #8115
+脖 > bó; #8116
+脗 > wĕn; #8117
+脘 > guăn; #8118
+脙 > qíu; #8119
+脚 > jiăo; #811A
+脛 > jìng; #811B
+脜 > róu; #811C
+脝 > hēng; #811D
+脞 > cŭo; #811E
+脟 > liè; #811F
+脠 > shān; #8120
+脡 > tĭng; #8121
+脢 > méi; #8122
+脣 > chún; #8123
+脤 > shèn; #8124
+脥 > xié; #8125
+脦 > de; #8126
+脧 > zūi; #8127
+脨 > cù; #8128
+脩 > xīu; #8129
+脪 > xìn; #812A
+脫 > tūo; #812B
+脬 > pāo; #812C
+脭 > chéng; #812D
+脮 > nĕi; #812E
+脯 > fŭ; #812F
+脰 > dòu; #8130
+脱 > tūo; #8131
+脲 > niào; #8132
+脴 > pĭ; #8134
+脵 > gŭ; #8135
+脶 > guā; #8136
+脷 > lì; #8137
+脸 > liăn; #8138
+脹 > zhàng; #8139
+脺 > cùi; #813A
+脻 > jié; #813B
+脼 > liăng; #813C
+脽 > zhōu; #813D
+脾 > pí; #813E
+脿 > biāo; #813F
+腀 > lún; #8140
+腁 > pián; #8141
+腂 > gùo; #8142
+腃 > kùi; #8143
+腄 > chúi; #8144
+腅 > dàn; #8145
+腆 > tiăn; #8146
+腇 > nĕi; #8147
+腈 > jīng; #8148
+腉 > jiē; #8149
+腊 > là; #814A
+腋 > yì; #814B
+腌 > ān; #814C
+腍 > rĕn; #814D
+腎 > shèn; #814E
+腏 > chùo; #814F
+腐 > fŭ; #8150
+腑 > fŭ; #8151
+腒 > jū; #8152
+腓 > féi; #8153
+腔 > qiāng; #8154
+腕 > wàn; #8155
+腖 > dòng; #8156
+腗 > pí; #8157
+腘 > gúo; #8158
+腙 > zōng; #8159
+腚 > dìng; #815A
+腛 > wū; #815B
+腜 > méi; #815C
+腝 > ruăn; #815D
+腞 > zhuàn; #815E
+腟 > zhì; #815F
+腠 > còu; #8160
+腡 > guā; #8161
+腢 > ŏu; #8162
+腣 > dì; #8163
+腤 > ān; #8164
+腥 > xīng; #8165
+腦 > năo; #8166
+腧 > yú; #8167
+腨 > chuăn; #8168
+腩 > năn; #8169
+腪 > yùn; #816A
+腫 > zhŏng; #816B
+腬 > róu; #816C
+腭 > è; #816D
+腮 > sāi; #816E
+腯 > tú; #816F
+腰 > yāo; #8170
+腱 > jiàn; #8171
+腲 > wĕi; #8172
+腳 > jiăo; #8173
+腴 > yú; #8174
+腵 > jiā; #8175
+腶 > duàn; #8176
+腷 > bì; #8177
+腸 > cháng; #8178
+腹 > fù; #8179
+腺 > xiàn; #817A
+腻 > nì; #817B
+腼 > miăn; #817C
+腽 > wà; #817D
+腾 > téng; #817E
+腿 > tŭi; #817F
+膀 > băng; #8180
+膁 > qiān; #8181
+膂 > lǚ; #8182
+膃 > wà; #8183
+膄 > sòu; #8184
+膅 > táng; #8185
+膆 > sù; #8186
+膇 > zhùi; #8187
+膈 > gé; #8188
+膉 > yì; #8189
+膊 > bó; #818A
+膋 > liáo; #818B
+膌 > jí; #818C
+膍 > pí; #818D
+膎 > xié; #818E
+膏 > gāo; #818F
+膐 > lǚ; #8190
+膑 > bìn; #8191
+膒 > ou; #8192
+膓 > cháng; #8193
+膔 > lù; #8194
+膕 > gúo; #8195
+膖 > pāng; #8196
+膗 > chuái; #8197
+膘 > piăo; #8198
+膙 > jiăng; #8199
+膚 > fū; #819A
+膛 > táng; #819B
+膜 > mò; #819C
+膝 > xī; #819D
+膞 > zhuān; #819E
+膟 > lǜ; #819F
+膠 > jiāo; #81A0
+膡 > yìng; #81A1
+膢 > lǘ; #81A2
+膣 > zhì; #81A3
+膥 > chūn; #81A5
+膦 > liăn; #81A6
+膧 > tóng; #81A7
+膨 > péng; #81A8
+膩 > nì; #81A9
+膪 > zhà; #81AA
+膫 > liáo; #81AB
+膬 > cùi; #81AC
+膭 > gūi; #81AD
+膮 > xiāo; #81AE
+膯 > tēng; #81AF
+膰 > fán; #81B0
+膱 > zhí; #81B1
+膲 > jiāo; #81B2
+膳 > shàn; #81B3
+膴 > wú; #81B4
+膵 > cùi; #81B5
+膶 > rùn; #81B6
+膷 > xiāng; #81B7
+膸 > sŭi; #81B8
+膹 > fèn; #81B9
+膺 > yīng; #81BA
+膻 > tăn; #81BB
+膼 > zhuā; #81BC
+膽 > dăn; #81BD
+膾 > kuài; #81BE
+膿 > nóng; #81BF
+臀 > tún; #81C0
+臁 > lián; #81C1
+臂 > bì; #81C2
+臃 > yŏng; #81C3
+臄 > jué; #81C4
+臅 > chù; #81C5
+臆 > yì; #81C6
+臇 > juăn; #81C7
+臈 > là; #81C8
+臉 > liăn; #81C9
+臊 > sāo; #81CA
+臋 > tún; #81CB
+臌 > gŭ; #81CC
+臍 > qí; #81CD
+臎 > cùi; #81CE
+臏 > bìn; #81CF
+臐 > xūn; #81D0
+臑 > rú; #81D1
+臒 > hùo; #81D2
+臓 > zàng; #81D3
+臔 > xiàn; #81D4
+臕 > biāo; #81D5
+臖 > xìng; #81D6
+臗 > kuān; #81D7
+臘 > là; #81D8
+臙 > yān; #81D9
+臚 > lú; #81DA
+臛 > hùo; #81DB
+臜 > zāng; #81DC
+臝 > lŭo; #81DD
+臞 > qú; #81DE
+臟 > zàng; #81DF
+臠 > luán; #81E0
+臡 > ní; #81E1
+臢 > zāng; #81E2
+臣 > chén; #81E3
+臤 > qiān; #81E4
+臥 > wò; #81E5
+臦 > guàng; #81E6
+臧 > záng; #81E7
+臨 > lín; #81E8
+臩 > guàng; #81E9
+自 > zì; #81EA
+臫 > jiăo; #81EB
+臬 > niè; #81EC
+臭 > chòu; #81ED
+臮 > jì; #81EE
+臯 > gāo; #81EF
+臰 > chòu; #81F0
+臱 > mián; #81F1
+臲 > niè; #81F2
+至 > zhì; #81F3
+致 > zhì; #81F4
+臵 > gé; #81F5
+臶 > jiàn; #81F6
+臷 > dié; #81F7
+臸 > zhì; #81F8
+臹 > xīu; #81F9
+臺 > tái; #81FA
+臻 > zhēn; #81FB
+臼 > jìu; #81FC
+臽 > xiàn; #81FD
+臾 > yú; #81FE
+臿 > chā; #81FF
+舀 > yăo; #8200
+舁 > yú; #8201
+舂 > chōng; #8202
+舃 > xì; #8203
+舄 > xì; #8204
+舅 > jìu; #8205
+舆 > yú; #8206
+與 > yŭ; #8207
+興 > xīng; #8208
+舉 > jŭ; #8209
+舊 > jìu; #820A
+舋 > xìn; #820B
+舌 > shé; #820C
+舍 > shè; #820D
+舏 > jĭu; #820F
+舐 > shì; #8210
+舑 > tān; #8211
+舒 > shū; #8212
+舓 > shì; #8213
+舔 > tiăn; #8214
+舕 > dàn; #8215
+舖 > pù; #8216
+舗 > pù; #8217
+舘 > guăn; #8218
+舙 > huà; #8219
+舚 > tān; #821A
+舛 > chuăn; #821B
+舜 > shùn; #821C
+舝 > xiá; #821D
+舞 > wŭ; #821E
+舟 > zhōu; #821F
+舠 > dāo; #8220
+舡 > gāng; #8221
+舢 > shān; #8222
+舣 > yĭ; #8223
+舥 > pā; #8225
+舦 > tài; #8226
+舧 > fán; #8227
+舨 > băn; #8228
+舩 > chuán; #8229
+航 > háng; #822A
+舫 > făng; #822B
+般 > bān; #822C
+舭 > què; #822D
+舯 > zhōng; #822F
+舰 > jiàn; #8230
+舱 > cāng; #8231
+舲 > líng; #8232
+舳 > zhú; #8233
+舴 > zé; #8234
+舵 > dùo; #8235
+舶 > bó; #8236
+舷 > xián; #8237
+舸 > gĕ; #8238
+船 > chuán; #8239
+舺 > jiá; #823A
+舻 > lŭ; #823B
+舼 > hóng; #823C
+舽 > páng; #823D
+舾 > xī; #823E
+艀 > fú; #8240
+艁 > zào; #8241
+艂 > féng; #8242
+艃 > lí; #8243
+艄 > shāo; #8244
+艅 > yú; #8245
+艆 > láng; #8246
+艇 > tĭng; #8247
+艉 > wĕi; #8249
+艊 > bó; #824A
+艋 > mĕng; #824B
+艌 > niàn; #824C
+艍 > jū; #824D
+艎 > huáng; #824E
+艏 > shŏu; #824F
+艐 > zōng; #8250
+艑 > biàn; #8251
+艒 > mào; #8252
+艓 > dié; #8253
+艕 > bàng; #8255
+艖 > chā; #8256
+艗 > yì; #8257
+艘 > sāo; #8258
+艙 > cāng; #8259
+艚 > cáo; #825A
+艛 > lóu; #825B
+艜 > dài; #825C
+艞 > yào; #825E
+艟 > tóng; #825F
+艡 > dāng; #8261
+艢 > tán; #8262
+艣 > lŭ; #8263
+艤 > yĭ; #8264
+艥 > jiè; #8265
+艦 > jiàn; #8266
+艧 > hùo; #8267
+艨 > méng; #8268
+艩 > qí; #8269
+艪 > lŭ; #826A
+艫 > lú; #826B
+艬 > chán; #826C
+艭 > shuāng; #826D
+艮 > gèn; #826E
+良 > liáng; #826F
+艰 > jiān; #8270
+艱 > jiān; #8271
+色 > sè; #8272
+艳 > yàn; #8273
+艴 > fú; #8274
+艵 > píng; #8275
+艶 > yàn; #8276
+艷 > yàn; #8277
+艸 > căo; #8278
+艹 > căo' 'zì' 'tóu; #8279
+艺 > yì; #827A
+艻 > lè; #827B
+艼 > tīng; #827C
+艽 > qíu; #827D
+艾 > ài; #827E
+艿 > năi; #827F
+芀 > tiáo; #8280
+芁 > jiāo; #8281
+节 > jié; #8282
+芃 > péng; #8283
+芄 > wán; #8284
+芅 > yì; #8285
+芆 > chāi; #8286
+芇 > mián; #8287
+芈 > miē; #8288
+芉 > gān; #8289
+芊 > qiān; #828A
+芋 > yù; #828B
+芌 > yù; #828C
+芍 > shùo; #828D
+芎 > qīong; #828E
+芏 > tŭ; #828F
+芐 > xià; #8290
+芑 > qĭ; #8291
+芒 > máng; #8292
+芓 > zĭ; #8293
+芔 > hŭi; #8294
+芕 > sūi; #8295
+芖 > zhì; #8296
+芗 > xiāng; #8297
+芘 > bī; #8298
+芙 > fú; #8299
+芚 > tún; #829A
+芛 > wĕi; #829B
+芜 > wú; #829C
+芝 > zhī; #829D
+芞 > qĭ; #829E
+芟 > shān; #829F
+芠 > wén; #82A0
+芡 > qiàn; #82A1
+芢 > rén; #82A2
+芣 > fŏu; #82A3
+芤 > kōu; #82A4
+芥 > jiè; #82A5
+芦 > lú; #82A6
+芧 > xù; #82A7
+芨 > jí; #82A8
+芩 > qín; #82A9
+芪 > qí; #82AA
+芫 > yuán; #82AB
+芬 > fēn; #82AC
+芭 > bā; #82AD
+芮 > rùi; #82AE
+芯 > xīn; #82AF
+芰 > jì; #82B0
+花 > huā; #82B1
+芲 > huā; #82B2
+芳 > fāng; #82B3
+芴 > wù; #82B4
+芵 > jué; #82B5
+芶 > gōu; #82B6
+芷 > zhĭ; #82B7
+芸 > yún; #82B8
+芹 > qín; #82B9
+芺 > ăo; #82BA
+芻 > chú; #82BB
+芼 > mào; #82BC
+芽 > yá; #82BD
+芾 > fèi; #82BE
+芿 > rèng; #82BF
+苀 > háng; #82C0
+苁 > cōng; #82C1
+苂 > yín; #82C2
+苃 > yŏu; #82C3
+苄 > biàn; #82C4
+苅 > yì; #82C5
+苇 > wĕi; #82C7
+苈 > lì; #82C8
+苉 > pĭ; #82C9
+苊 > è; #82CA
+苋 > xiàn; #82CB
+苌 > cháng; #82CC
+苍 > cāng; #82CD
+苎 > méng; #82CE
+苏 > sū; #82CF
+苐 > yí; #82D0
+苑 > yuàn; #82D1
+苒 > răn; #82D2
+苓 > líng; #82D3
+苔 > tái; #82D4
+苕 > tiáo; #82D5
+苖 > dĭ; #82D6
+苗 > miáo; #82D7
+苘 > qĭong; #82D8
+苙 > lì; #82D9
+苚 > yòng; #82DA
+苛 > kē; #82DB
+苜 > mù; #82DC
+苝 > pèi; #82DD
+苞 > bāo; #82DE
+苟 > gŏu; #82DF
+苠 > mín; #82E0
+苡 > yĭ; #82E1
+苢 > yĭ; #82E2
+苣 > jù; #82E3
+苤 > pĭ; #82E4
+若 > rùo; #82E5
+苦 > kŭ; #82E6
+苧 > zhù; #82E7
+苨 > nĭ; #82E8
+苩 > bó; #82E9
+苪 > bĭng; #82EA
+苫 > shān; #82EB
+苬 > qíu; #82EC
+苭 > yăo; #82ED
+苮 > xiān; #82EE
+苯 > bĕn; #82EF
+苰 > hóng; #82F0
+英 > yīng; #82F1
+苲 > zhă; #82F2
+苳 > dōng; #82F3
+苴 > jū; #82F4
+苵 > dié; #82F5
+苶 > nié; #82F6
+苷 > gān; #82F7
+苸 > hū; #82F8
+苹 > píng; #82F9
+苺 > méi; #82FA
+苻 > fú; #82FB
+苼 > shēng; #82FC
+苽 > gū; #82FD
+苾 > bì; #82FE
+苿 > wèi; #82FF
+茀 > fú; #8300
+茁 > zhúo; #8301
+茂 > mào; #8302
+范 > fàn; #8303
+茄 > qié; #8304
+茅 > máo; #8305
+茆 > măo; #8306
+茇 > bá; #8307
+茈 > zĭ; #8308
+茉 > mò; #8309
+茊 > zī; #830A
+茋 > dĭ; #830B
+茌 > chí; #830C
+茍 > jì; #830D
+茎 > jīng; #830E
+茏 > lóng; #830F
+茑 > niăo; #8311
+茓 > xué; #8313
+茔 > yíng; #8314
+茕 > qíong; #8315
+茖 > gé; #8316
+茗 > mĭng; #8317
+茘 > lì; #8318
+茙 > róng; #8319
+茚 > yìn; #831A
+茛 > gèn; #831B
+茜 > qiàn; #831C
+茝 > chăi; #831D
+茞 > chén; #831E
+茟 > yù; #831F
+茠 > xīu; #8320
+茡 > zì; #8321
+茢 > liè; #8322
+茣 > wú; #8323
+茤 > jì; #8324
+茥 > kūi; #8325
+茦 > cè; #8326
+茧 > chóng; #8327
+茨 > cí; #8328
+茩 > gŏu; #8329
+茪 > guāng; #832A
+茫 > máng; #832B
+茬 > chí; #832C
+茭 > jiāo; #832D
+茮 > jiāo; #832E
+茯 > fú; #832F
+茰 > yú; #8330
+茱 > zhū; #8331
+茲 > zī; #8332
+茳 > jiāng; #8333
+茴 > húi; #8334
+茵 > yīn; #8335
+茶 > chá; #8336
+茷 > fá; #8337
+茸 > róng; #8338
+茹 > rú; #8339
+茺 > chōng; #833A
+茻 > măng; #833B
+茼 > tóng; #833C
+茽 > zhòng; #833D
+茿 > zhú; #833F
+荀 > xún; #8340
+荁 > huán; #8341
+荂 > kuā; #8342
+荃 > quán; #8343
+荄 > gāi; #8344
+荅 > dā; #8345
+荆 > jīng; #8346
+荇 > xìng; #8347
+荈 > quàn; #8348
+草 > căo; #8349
+荊 > jīng; #834A
+荋 > ér; #834B
+荌 > àn; #834C
+荍 > shōu; #834D
+荎 > chí; #834E
+荏 > rĕn; #834F
+荐 > jiàn; #8350
+荑 > tí; #8351
+荒 > huāng; #8352
+荓 > píng; #8353
+荔 > lì; #8354
+荕 > jīn; #8355
+荖 > lăo; #8356
+荗 > shù; #8357
+荘 > zhuāng; #8358
+荙 > dá; #8359
+荚 > jiá; #835A
+荛 > ráo; #835B
+荜 > bì; #835C
+荝 > zé; #835D
+荞 > qiáo; #835E
+荟 > hùi; #835F
+荠 > qí; #8360
+荡 > dàng; #8361
+荣 > róng; #8363
+荤 > hūn; #8364
+荥 > yíng; #8365
+荦 > lùo; #8366
+荧 > yíng; #8367
+荨 > xún; #8368
+荩 > jìn; #8369
+荪 > sūn; #836A
+荫 > yìn; #836B
+荬 > măi; #836C
+荭 > hóng; #836D
+荮 > zhòu; #836E
+药 > yào; #836F
+荰 > dù; #8370
+荱 > wĕi; #8371
+荲 > chù; #8372
+荳 > dòu; #8373
+荴 > fū; #8374
+荵 > rĕn; #8375
+荶 > yín; #8376
+荷 > hé; #8377
+荸 > bí; #8378
+荹 > bù; #8379
+荺 > yún; #837A
+荻 > dí; #837B
+荼 > tú; #837C
+荽 > sūi; #837D
+荾 > sūi; #837E
+荿 > chéng; #837F
+莀 > chén; #8380
+莁 > wú; #8381
+莂 > bié; #8382
+莃 > xī; #8383
+莄 > gĕng; #8384
+莅 > lì; #8385
+莆 > fŭ; #8386
+莇 > zhù; #8387
+莈 > mò; #8388
+莉 > lì; #8389
+莊 > zhuāng; #838A
+莋 > jí; #838B
+莌 > dúo; #838C
+莍 > qíu; #838D
+莎 > shā; #838E
+莏 > sūo; #838F
+莐 > chén; #8390
+莑 > fēng; #8391
+莒 > jŭ; #8392
+莓 > méi; #8393
+莔 > méng; #8394
+莕 > xìng; #8395
+莖 > jīng; #8396
+莗 > chē; #8397
+莘 > xīn; #8398
+莙 > jūn; #8399
+莚 > yán; #839A
+莛 > tíng; #839B
+莜 > diào; #839C
+莝 > cùo; #839D
+莞 > wăn; #839E
+莟 > hàn; #839F
+莠 > yŏu; #83A0
+莡 > cùo; #83A1
+莢 > jiá; #83A2
+莣 > wáng; #83A3
+莤 > yóu; #83A4
+莥 > nĭu; #83A5
+莦 > shāo; #83A6
+莧 > xiàn; #83A7
+莨 > láng; #83A8
+莩 > fú; #83A9
+莪 > é; #83AA
+莫 > mò; #83AB
+莬 > wèn; #83AC
+莭 > jié; #83AD
+莮 > nán; #83AE
+莯 > mù; #83AF
+莰 > kăn; #83B0
+莱 > lái; #83B1
+莲 > lián; #83B2
+莳 > shí; #83B3
+莴 > wō; #83B4
+莶 > liăn; #83B6
+获 > hùo; #83B7
+莸 > yóu; #83B8
+莹 > yíng; #83B9
+莺 > yīng; #83BA
+莼 > chún; #83BC
+莽 > măng; #83BD
+莾 > măng; #83BE
+莿 > cì; #83BF
+菀 > wăn; #83C0
+菁 > jīng; #83C1
+菂 > dī; #83C2
+菃 > qú; #83C3
+菄 > dōng; #83C4
+菅 > jiān; #83C5
+菆 > zōu; #83C6
+菇 > gū; #83C7
+菈 > lā; #83C8
+菉 > lù; #83C9
+菊 > jú; #83CA
+菋 > wèi; #83CB
+菌 > jùn; #83CC
+菍 > niè; #83CD
+菎 > kūn; #83CE
+菏 > hé; #83CF
+菐 > pú; #83D0
+菑 > zī; #83D1
+菒 > găo; #83D2
+菓 > gŭo; #83D3
+菔 > fú; #83D4
+菕 > lún; #83D5
+菖 > chāng; #83D6
+菗 > chóu; #83D7
+菘 > sōng; #83D8
+菙 > chúi; #83D9
+菚 > zhàn; #83DA
+菛 > mén; #83DB
+菜 > cài; #83DC
+菝 > bá; #83DD
+菞 > lí; #83DE
+菟 > tù; #83DF
+菠 > bō; #83E0
+菡 > hàn; #83E1
+菢 > bào; #83E2
+菣 > qìn; #83E3
+菤 > juăn; #83E4
+菥 > xī; #83E5
+菦 > qín; #83E6
+菧 > dĭ; #83E7
+菨 > jiē; #83E8
+菩 > pú; #83E9
+菪 > dàng; #83EA
+菫 > jĭn; #83EB
+菬 > zhăo; #83EC
+菭 > tái; #83ED
+菮 > gēng; #83EE
+華 > huá; #83EF
+菰 > gū; #83F0
+菱 > líng; #83F1
+菲 > fēi; #83F2
+菳 > jīn; #83F3
+菴 > ān; #83F4
+菵 > wăng; #83F5
+菶 > bĕng; #83F6
+菷 > zhŏu; #83F7
+菸 > yān; #83F8
+菹 > jū; #83F9
+菺 > jiān; #83FA
+菻 > lĭn; #83FB
+菼 > tăn; #83FC
+菽 > shú; #83FD
+菾 > tián; #83FE
+菿 > dào; #83FF
+萀 > hŭ; #8400
+萁 > qí; #8401
+萂 > hé; #8402
+萃 > cùi; #8403
+萄 > táo; #8404
+萅 > chūn; #8405
+萆 > bēi; #8406
+萇 > cháng; #8407
+萈 > huán; #8408
+萉 > féi; #8409
+萊 > lái; #840A
+萋 > qī; #840B
+萌 > méng; #840C
+萍 > píng; #840D
+萎 > wēi; #840E
+萏 > dàn; #840F
+萐 > shà; #8410
+萑 > huán; #8411
+萒 > yăn; #8412
+萓 > yí; #8413
+萔 > tiáo; #8414
+萕 > qí; #8415
+萖 > wăn; #8416
+萗 > cè; #8417
+萘 > nài; #8418
+萚 > tùo; #841A
+萛 > jīu; #841B
+萜 > tiē; #841C
+萝 > lúo; #841D
+萠 > méng; #8420
+萤 > yíng; #8424
+营 > yíng; #8425
+萦 > yíng; #8426
+萧 > xiāo; #8427
+萨 > sà; #8428
+萩 > qīu; #8429
+萪 > kē; #842A
+萫 > xiàng; #842B
+萬 > wàn; #842C
+萭 > yŭ; #842D
+萮 > yù; #842E
+萯 > fù; #842F
+萰 > liàn; #8430
+萱 > xuān; #8431
+萲 > yuán; #8432
+萳 > nán; #8433
+萴 > zé; #8434
+萵 > wō; #8435
+萶 > chŭn; #8436
+萷 > xiāo; #8437
+萸 > yú; #8438
+萹 > piān; #8439
+萺 > mào; #843A
+萻 > ān; #843B
+萼 > è; #843C
+落 > lùo; #843D
+萾 > yíng; #843E
+萿 > húo; #843F
+葀 > guā; #8440
+葁 > jiāng; #8441
+葂 > miăn; #8442
+葃 > zúo; #8443
+葄 > zùo; #8444
+葅 > jū; #8445
+葆 > băo; #8446
+葇 > róu; #8447
+葈 > xĭ; #8448
+葉 > xié; #8449
+葊 > ān; #844A
+葋 > qú; #844B
+葌 > jiān; #844C
+葍 > fú; #844D
+葎 > lǜ; #844E
+葏 > jīng; #844F
+葐 > pén; #8450
+葑 > fēng; #8451
+葒 > hóng; #8452
+葓 > hóng; #8453
+葔 > hóu; #8454
+葕 > yán; #8455
+葖 > tú; #8456
+著 > zhù; #8457
+葘 > zī; #8458
+葙 > xiāng; #8459
+葚 > shèn; #845A
+葛 > gĕ; #845B
+葜 > jié; #845C
+葝 > jìng; #845D
+葞 > mĭ; #845E
+葟 > huáng; #845F
+葠 > shēn; #8460
+葡 > pú; #8461
+葢 > gài; #8462
+董 > dŏng; #8463
+葤 > zhòu; #8464
+葥 > qián; #8465
+葦 > wĕi; #8466
+葧 > bó; #8467
+葨 > wēi; #8468
+葩 > pā; #8469
+葪 > jì; #846A
+葫 > hú; #846B
+葬 > zàng; #846C
+葭 > jiā; #846D
+葮 > duàn; #846E
+葯 > yào; #846F
+葰 > jùn; #8470
+葱 > cōng; #8471
+葲 > quán; #8472
+葳 > wēi; #8473
+葴 > xián; #8474
+葵 > kúi; #8475
+葶 > tíng; #8476
+葷 > hūn; #8477
+葸 > xĭ; #8478
+葹 > shī; #8479
+葺 > qì; #847A
+葻 > lán; #847B
+葼 > zōng; #847C
+葽 > yāo; #847D
+葾 > yuān; #847E
+葿 > méi; #847F
+蒀 > yūn; #8480
+蒁 > shù; #8481
+蒂 > dì; #8482
+蒃 > zhuàn; #8483
+蒄 > guān; #8484
+蒆 > xuē; #8486
+蒇 > chăn; #8487
+蒈 > kăi; #8488
+蒉 > kùi; #8489
+蒋 > jiăng; #848B
+蒌 > lóu; #848C
+蒍 > wéi; #848D
+蒎 > pài; #848E
+蒐 > sōu; #8490
+蒑 > yīn; #8491
+蒒 > shī; #8492
+蒓 > chún; #8493
+蒔 > shí; #8494
+蒕 > yūn; #8495
+蒖 > zhēn; #8496
+蒗 > làng; #8497
+蒘 > nú; #8498
+蒙 > méng; #8499
+蒚 > hé; #849A
+蒛 > quē; #849B
+蒜 > suàn; #849C
+蒝 > yuán; #849D
+蒞 > lì; #849E
+蒟 > jŭ; #849F
+蒠 > xí; #84A0
+蒡 > páng; #84A1
+蒢 > chú; #84A2
+蒣 > xú; #84A3
+蒤 > tú; #84A4
+蒥 > líu; #84A5
+蒦 > wò; #84A6
+蒧 > zhēn; #84A7
+蒨 > qiàn; #84A8
+蒩 > zū; #84A9
+蒪 > pò; #84AA
+蒫 > cūo; #84AB
+蒬 > yuān; #84AC
+蒭 > chú; #84AD
+蒮 > yù; #84AE
+蒯 > kuăi; #84AF
+蒰 > pán; #84B0
+蒱 > pú; #84B1
+蒲 > pú; #84B2
+蒳 > nà; #84B3
+蒴 > shùo; #84B4
+蒵 > xī; #84B5
+蒶 > fén; #84B6
+蒷 > yún; #84B7
+蒸 > zhēng; #84B8
+蒹 > jiān; #84B9
+蒺 > jí; #84BA
+蒻 > rùo; #84BB
+蒼 > cāng; #84BC
+蒽 > ēn; #84BD
+蒾 > mí; #84BE
+蒿 > hāo; #84BF
+蓀 > sūn; #84C0
+蓁 > zhēn; #84C1
+蓂 > míng; #84C2
+蓃 > sou; #84C3
+蓄 > xù; #84C4
+蓅 > líu; #84C5
+蓆 > xí; #84C6
+蓇 > gŭ; #84C7
+蓈 > láng; #84C8
+蓉 > róng; #84C9
+蓊 > wĕng; #84CA
+蓋 > gài; #84CB
+蓌 > cùo; #84CC
+蓍 > shī; #84CD
+蓎 > táng; #84CE
+蓏 > lŭo; #84CF
+蓐 > rù; #84D0
+蓑 > sūo; #84D1
+蓒 > xiān; #84D2
+蓓 > bèi; #84D3
+蓔 > yăo; #84D4
+蓕 > gùi; #84D5
+蓖 > bī; #84D6
+蓗 > zŏng; #84D7
+蓘 > gŭn; #84D8
+蓚 > xīu; #84DA
+蓛 > cè; #84DB
+蓝 > lán; #84DD
+蓟 > jì; #84DF
+蓠 > lí; #84E0
+蓡 > cān; #84E1
+蓢 > láng; #84E2
+蓣 > yù; #84E3
+蓥 > yìng; #84E5
+蓦 > mò; #84E6
+蓧 > diào; #84E7
+蓨 > tiāo; #84E8
+蓩 > mào; #84E9
+蓪 > tōng; #84EA
+蓫 > zhú; #84EB
+蓬 > péng; #84EC
+蓭 > ān; #84ED
+蓮 > lián; #84EE
+蓯 > cōng; #84EF
+蓰 > xĭ; #84F0
+蓱 > píng; #84F1
+蓲 > qīu; #84F2
+蓳 > jìn; #84F3
+蓴 > chún; #84F4
+蓵 > jié; #84F5
+蓶 > wĕi; #84F6
+蓷 > tūi; #84F7
+蓸 > cáo; #84F8
+蓹 > yŭ; #84F9
+蓺 > yì; #84FA
+蓻 > jí; #84FB
+蓼 > liăo; #84FC
+蓽 > bì; #84FD
+蓾 > lŭ; #84FE
+蓿 > sù; #84FF
+蔀 > bù; #8500
+蔁 > zhāng; #8501
+蔂 > lúo; #8502
+蔃 > jiàng; #8503
+蔄 > màn; #8504
+蔅 > yán; #8505
+蔆 > líng; #8506
+蔇 > jì; #8507
+蔈 > piăo; #8508
+蔉 > gŭn; #8509
+蔊 > hăn; #850A
+蔋 > dí; #850B
+蔌 > sù; #850C
+蔍 > lù; #850D
+蔎 > shè; #850E
+蔏 > shāng; #850F
+蔐 > dí; #8510
+蔑 > miè; #8511
+蔒 > xūn; #8512
+蔓 > màn; #8513
+蔔 > bó; #8514
+蔕 > dì; #8515
+蔖 > cúo; #8516
+蔗 > zhè; #8517
+蔘 > sēn; #8518
+蔙 > xuàn; #8519
+蔚 > wèi; #851A
+蔛 > hú; #851B
+蔜 > áo; #851C
+蔝 > mĭ; #851D
+蔞 > lóu; #851E
+蔟 > cù; #851F
+蔠 > zhōng; #8520
+蔡 > cài; #8521
+蔢 > pó; #8522
+蔣 > jiăng; #8523
+蔤 > mì; #8524
+蔥 > cōng; #8525
+蔦 > niăo; #8526
+蔧 > hùi; #8527
+蔨 > jùn; #8528
+蔩 > yín; #8529
+蔪 > jiàn; #852A
+蔫 > yān; #852B
+蔬 > shū; #852C
+蔭 > yìn; #852D
+蔮 > kùi; #852E
+蔯 > chén; #852F
+蔰 > hù; #8530
+蔱 > shā; #8531
+蔲 > kòu; #8532
+蔳 > qiàn; #8533
+蔴 > má; #8534
+蔵 > zāng; #8535
+蔷 > qiáng; #8537
+蔸 > dōu; #8538
+蔹 > liàn; #8539
+蔺 > lìn; #853A
+蔻 > kòu; #853B
+蔼 > ăi; #853C
+蔽 > bì; #853D
+蔾 > lí; #853E
+蔿 > wéi; #853F
+蕀 > jí; #8540
+蕁 > xún; #8541
+蕂 > shèng; #8542
+蕃 > fán; #8543
+蕄 > méng; #8544
+蕅 > ŏu; #8545
+蕆 > chăn; #8546
+蕇 > diăn; #8547
+蕈 > xùn; #8548
+蕉 > jiāo; #8549
+蕊 > rŭi; #854A
+蕋 > rŭi; #854B
+蕌 > lĕi; #854C
+蕍 > yú; #854D
+蕎 > qiáo; #854E
+蕏 > chú; #854F
+蕐 > huá; #8550
+蕑 > jiān; #8551
+蕒 > măi; #8552
+蕓 > yún; #8553
+蕔 > bāo; #8554
+蕕 > yóu; #8555
+蕖 > qú; #8556
+蕗 > lù; #8557
+蕘 > ráo; #8558
+蕙 > hùi; #8559
+蕚 > è; #855A
+蕛 > téng; #855B
+蕜 > fĕi; #855C
+蕝 > jué; #855D
+蕞 > zùi; #855E
+蕟 > fà; #855F
+蕠 > rú; #8560
+蕡 > fén; #8561
+蕢 > kùi; #8562
+蕣 > shùn; #8563
+蕤 > rúi; #8564
+蕥 > yă; #8565
+蕦 > xū; #8566
+蕧 > fù; #8567
+蕨 > jué; #8568
+蕩 > dàng; #8569
+蕪 > wú; #856A
+蕫 > tóng; #856B
+蕬 > sī; #856C
+蕭 > xiāo; #856D
+蕮 > xì; #856E
+蕯 > lóng; #856F
+蕰 > yùn; #8570
+蕲 > qí; #8572
+蕳 > jiān; #8573
+蕴 > yùn; #8574
+蕵 > sūn; #8575
+蕶 > líng; #8576
+蕷 > yù; #8577
+蕸 > xiá; #8578
+蕹 > yōng; #8579
+蕺 > jí; #857A
+蕻 > hòng; #857B
+蕼 > sì; #857C
+蕽 > nóng; #857D
+蕾 > lĕi; #857E
+蕿 > xuān; #857F
+薀 > yùn; #8580
+薁 > yù; #8581
+薂 > xí; #8582
+薃 > hào; #8583
+薄 > bó; #8584
+薅 > hāo; #8585
+薆 > ài; #8586
+薇 > wéi; #8587
+薈 > hùi; #8588
+薉 > wèi; #8589
+薊 > jì; #858A
+薋 > cī; #858B
+薌 > xiāng; #858C
+薍 > luàn; #858D
+薎 > miè; #858E
+薏 > yì; #858F
+薐 > léng; #8590
+薑 > jiāng; #8591
+薒 > càn; #8592
+薓 > shēn; #8593
+薔 > qiáng; #8594
+薕 > lián; #8595
+薖 > kē; #8596
+薗 > yuán; #8597
+薘 > dá; #8598
+薙 > tì; #8599
+薚 > táng; #859A
+薛 > xiē; #859B
+薜 > bì; #859C
+薝 > zhán; #859D
+薞 > sūn; #859E
+薟 > liăn; #859F
+薠 > fán; #85A0
+薡 > dĭng; #85A1
+薢 > jiē; #85A2
+薣 > gŭ; #85A3
+薤 > xiè; #85A4
+薥 > shŭ; #85A5
+薦 > jiàn; #85A6
+薧 > kăo; #85A7
+薨 > hōng; #85A8
+薩 > sà; #85A9
+薪 > xīn; #85AA
+薫 > xūn; #85AB
+薬 > yào; #85AC
+薮 > sŏu; #85AE
+薯 > shŭ; #85AF
+薰 > xūn; #85B0
+薱 > dùi; #85B1
+薲 > pín; #85B2
+薳 > wĕi; #85B3
+薴 > néng; #85B4
+薵 > chóu; #85B5
+薶 > mái; #85B6
+薷 > rú; #85B7
+薸 > piāo; #85B8
+薹 > tái; #85B9
+薺 > qí; #85BA
+薻 > zăo; #85BB
+薼 > chén; #85BC
+薽 > zhēn; #85BD
+薾 > ĕr; #85BE
+薿 > nĭ; #85BF
+藀 > yíng; #85C0
+藁 > găo; #85C1
+藂 > còng; #85C2
+藃 > xiāo; #85C3
+藄 > qí; #85C4
+藅 > fá; #85C5
+藆 > jiăn; #85C6
+藇 > xù; #85C7
+藈 > kūi; #85C8
+藉 > jiè; #85C9
+藊 > biăn; #85CA
+藋 > diào; #85CB
+藌 > mì; #85CC
+藍 > lán; #85CD
+藎 > jìn; #85CE
+藏 > cáng; #85CF
+藐 > miăo; #85D0
+藑 > qíong; #85D1
+藒 > qiè; #85D2
+藓 > xiăn; #85D3
+藕 > ŏu; #85D5
+藖 > xián; #85D6
+藗 > sù; #85D7
+藘 > lǘ; #85D8
+藙 > yì; #85D9
+藚 > xù; #85DA
+藛 > xiĕ; #85DB
+藜 > lí; #85DC
+藝 > yì; #85DD
+藞 > lă; #85DE
+藟 > lĕi; #85DF
+藠 > xiào; #85E0
+藡 > dí; #85E1
+藢 > zhĭ; #85E2
+藣 > bēi; #85E3
+藤 > téng; #85E4
+藥 > yào; #85E5
+藦 > mò; #85E6
+藧 > huăn; #85E7
+藨 > piăo; #85E8
+藩 > fán; #85E9
+藪 > sŏu; #85EA
+藫 > tán; #85EB
+藬 > tūi; #85EC
+藭 > qíong; #85ED
+藮 > qiáo; #85EE
+藯 > wèi; #85EF
+藰 > líu; #85F0
+藱 > hùi; #85F1
+藳 > găo; #85F3
+藴 > yùn; #85F4
+藶 > lì; #85F6
+藷 > shŭ; #85F7
+藸 > chú; #85F8
+藹 > ăi; #85F9
+藺 > lìn; #85FA
+藻 > zăo; #85FB
+藼 > xuān; #85FC
+藽 > chèn; #85FD
+藾 > lài; #85FE
+藿 > hùo; #85FF
+蘀 > tùo; #8600
+蘁 > wù; #8601
+蘂 > rŭi; #8602
+蘃 > rŭi; #8603
+蘄 > qí; #8604
+蘅 > héng; #8605
+蘆 > lú; #8606
+蘇 > sū; #8607
+蘈 > túi; #8608
+蘉 > máng; #8609
+蘊 > yùn; #860A
+蘋 > pín; #860B
+蘌 > yŭ; #860C
+蘍 > xūn; #860D
+蘎 > jì; #860E
+蘏 > jīong; #860F
+蘐 > xiān; #8610
+蘑 > mó; #8611
+蘓 > sū; #8613
+蘔 > jīong; #8614
+蘖 > niè; #8616
+蘗 > bò; #8617
+蘘 > ráng; #8618
+蘙 > yì; #8619
+蘚 > xiăn; #861A
+蘛 > yú; #861B
+蘜 > jú; #861C
+蘝 > liàn; #861D
+蘞 > liàn; #861E
+蘟 > yĭn; #861F
+蘠 > qiáng; #8620
+蘡 > yīng; #8621
+蘢 > lóng; #8622
+蘣 > tòng; #8623
+蘤 > wĕi; #8624
+蘥 > yuè; #8625
+蘦 > líng; #8626
+蘧 > qú; #8627
+蘨 > yáo; #8628
+蘩 > fán; #8629
+蘪 > mí; #862A
+蘫 > lán; #862B
+蘬 > kūi; #862C
+蘭 > lán; #862D
+蘮 > jì; #862E
+蘯 > dàng; #862F
+蘱 > lèi; #8631
+蘲 > léi; #8632
+蘳 > huă; #8633
+蘴 > fēng; #8634
+蘵 > zhí; #8635
+蘶 > wèi; #8636
+蘷 > kúi; #8637
+蘸 > zhàn; #8638
+蘹 > huài; #8639
+蘺 > lí; #863A
+蘻 > jì; #863B
+蘼 > mí; #863C
+蘽 > lĕi; #863D
+蘾 > huài; #863E
+蘿 > lúo; #863F
+虀 > jī; #8640
+虁 > kúi; #8641
+虂 > lù; #8642
+虃 > jiān; #8643
+虆 > léi; #8646
+虇 > quăn; #8647
+虈 > xiāo; #8648
+虉 > yì; #8649
+虊 > luán; #864A
+虋 > mén; #864B
+虌 > biē; #864C
+虍 > hū; #864D
+虎 > hŭ; #864E
+虏 > lŭ; #864F
+虐 > nǜe; #8650
+虑 > lǜ; #8651
+虒 > sī; #8652
+虓 > xiāo; #8653
+虔 > qián; #8654
+處 > chù; #8655
+虖 > hū; #8656
+虗 > xū; #8657
+虘 > cúo; #8658
+虙 > fú; #8659
+虚 > xū; #865A
+虛 > xū; #865B
+虜 > lŭ; #865C
+虝 > hŭ; #865D
+虞 > yú; #865E
+號 > hào; #865F
+虠 > jiăo; #8660
+虡 > jù; #8661
+虢 > gúo; #8662
+虣 > bào; #8663
+虤 > yán; #8664
+虥 > zhàn; #8665
+虦 > zhàn; #8666
+虧 > kūi; #8667
+虨 > bān; #8668
+虩 > xì; #8669
+虪 > shú; #866A
+虫 > chóng; #866B
+虬 > qíu; #866C
+虭 > diāo; #866D
+虮 > jī; #866E
+虯 > qíu; #866F
+虰 > chéng; #8670
+虱 > shī; #8671
+虳 > dì; #8673
+虴 > zhé; #8674
+虵 > shé; #8675
+虶 > yū; #8676
+虷 > gān; #8677
+虸 > zĭ; #8678
+虹 > hóng; #8679
+虺 > hŭi; #867A
+虻 > méng; #867B
+虼 > gè; #867C
+虽 > sūi; #867D
+虾 > xiā; #867E
+虿 > chài; #867F
+蚀 > shí; #8680
+蚁 > yĭ; #8681
+蚂 > mă; #8682
+蚃 > xiàng; #8683
+蚄 > fāng; #8684
+蚅 > è; #8685
+蚆 > pā; #8686
+蚇 > chĭ; #8687
+蚈 > qiān; #8688
+蚉 > wén; #8689
+蚊 > wén; #868A
+蚋 > rùi; #868B
+蚌 > bàng; #868C
+蚍 > bĭ; #868D
+蚎 > yuè; #868E
+蚏 > yuè; #868F
+蚐 > jūn; #8690
+蚑 > qí; #8691
+蚒 > rán; #8692
+蚓 > yĭn; #8693
+蚔 > qí; #8694
+蚕 > tiăn; #8695
+蚖 > yuán; #8696
+蚗 > jué; #8697
+蚘 > húi; #8698
+蚙 > qín; #8699
+蚚 > qí; #869A
+蚛 > zhòng; #869B
+蚜 > yá; #869C
+蚝 > cì; #869D
+蚞 > mù; #869E
+蚟 > wáng; #869F
+蚠 > fén; #86A0
+蚡 > fén; #86A1
+蚢 > háng; #86A2
+蚣 > gōng; #86A3
+蚤 > zăo; #86A4
+蚥 > fŭ; #86A5
+蚦 > rán; #86A6
+蚧 > jiè; #86A7
+蚨 > fú; #86A8
+蚩 > chī; #86A9
+蚪 > dŏu; #86AA
+蚫 > piáo; #86AB
+蚬 > xiàn; #86AC
+蚭 > ní; #86AD
+蚮 > tè; #86AE
+蚯 > qīu; #86AF
+蚰 > yóu; #86B0
+蚱 > zhà; #86B1
+蚲 > píng; #86B2
+蚳 > chí; #86B3
+蚴 > yŏu; #86B4
+蚵 > hé; #86B5
+蚶 > hān; #86B6
+蚷 > jù; #86B7
+蚸 > lì; #86B8
+蚹 > fù; #86B9
+蚺 > rán; #86BA
+蚻 > zhá; #86BB
+蚼 > gŏu; #86BC
+蚽 > pí; #86BD
+蚾 > bŏ; #86BE
+蚿 > xián; #86BF
+蛀 > zhù; #86C0
+蛁 > diāo; #86C1
+蛂 > biĕ; #86C2
+蛃 > bĭng; #86C3
+蛄 > gū; #86C4
+蛅 > rán; #86C5
+蛆 > qū; #86C6
+蛇 > shé; #86C7
+蛈 > tiè; #86C8
+蛉 > líng; #86C9
+蛊 > gŭ; #86CA
+蛋 > dàn; #86CB
+蛌 > gŭ; #86CC
+蛍 > yíng; #86CD
+蛎 > lì; #86CE
+蛏 > chēng; #86CF
+蛐 > qū; #86D0
+蛑 > móu; #86D1
+蛒 > gé; #86D2
+蛓 > cì; #86D3
+蛔 > húi; #86D4
+蛕 > húi; #86D5
+蛖 > máng; #86D6
+蛗 > fù; #86D7
+蛘 > yáng; #86D8
+蛙 > wā; #86D9
+蛚 > liè; #86DA
+蛛 > zhū; #86DB
+蛜 > yī; #86DC
+蛝 > xián; #86DD
+蛞 > kùo; #86DE
+蛟 > jiāo; #86DF
+蛠 > lì; #86E0
+蛡 > yì; #86E1
+蛢 > píng; #86E2
+蛣 > jī; #86E3
+蛤 > há; #86E4
+蛥 > shé; #86E5
+蛦 > yí; #86E6
+蛧 > wăng; #86E7
+蛨 > mò; #86E8
+蛩 > qíong; #86E9
+蛪 > qiè; #86EA
+蛫 > gŭi; #86EB
+蛬 > gŏng; #86EC
+蛭 > zhì; #86ED
+蛮 > mán; #86EE
+蛰 > zhí; #86F0
+蛱 > jiá; #86F1
+蛲 > ráo; #86F2
+蛳 > sī; #86F3
+蛴 > qí; #86F4
+蛵 > xīng; #86F5
+蛶 > liè; #86F6
+蛷 > qíu; #86F7
+蛸 > shāo; #86F8
+蛹 > yŏng; #86F9
+蛺 > jiá; #86FA
+蛻 > shùi; #86FB
+蛼 > chē; #86FC
+蛽 > bài; #86FD
+蛾 > é; #86FE
+蛿 > hàn; #86FF
+蜀 > shŭ; #8700
+蜁 > xuán; #8701
+蜂 > fēng; #8702
+蜃 > shèn; #8703
+蜄 > zhèn; #8704
+蜅 > fŭ; #8705
+蜆 > xiàn; #8706
+蜇 > zhé; #8707
+蜈 > wú; #8708
+蜉 > fú; #8709
+蜊 > lí; #870A
+蜋 > láng; #870B
+蜌 > bì; #870C
+蜍 > chú; #870D
+蜎 > yuān; #870E
+蜏 > yŏu; #870F
+蜐 > jié; #8710
+蜑 > dàn; #8711
+蜒 > yán; #8712
+蜓 > tíng; #8713
+蜔 > diàn; #8714
+蜕 > shùi; #8715
+蜖 > húi; #8716
+蜗 > guā; #8717
+蜘 > zhī; #8718
+蜙 > sōng; #8719
+蜚 > fēi; #871A
+蜛 > jū; #871B
+蜜 > mì; #871C
+蜝 > qí; #871D
+蜞 > qí; #871E
+蜟 > yù; #871F
+蜠 > jŭn; #8720
+蜡 > zhà; #8721
+蜢 > mĕng; #8722
+蜣 > qiāng; #8723
+蜤 > sī; #8724
+蜥 > xī; #8725
+蜦 > lún; #8726
+蜧 > lì; #8727
+蜨 > dié; #8728
+蜩 > tiáo; #8729
+蜪 > tāo; #872A
+蜫 > kūn; #872B
+蜬 > gān; #872C
+蜭 > hàn; #872D
+蜮 > yù; #872E
+蜯 > bàng; #872F
+蜰 > féi; #8730
+蜱 > pí; #8731
+蜲 > wĕi; #8732
+蜳 > dūn; #8733
+蜴 > yì; #8734
+蜵 > yuān; #8735
+蜶 > sù; #8736
+蜷 > quán; #8737
+蜸 > qiăn; #8738
+蜹 > rùi; #8739
+蜺 > ní; #873A
+蜻 > qīng; #873B
+蜼 > wèi; #873C
+蜽 > liăng; #873D
+蜾 > gŭo; #873E
+蜿 > wān; #873F
+蝀 > dōng; #8740
+蝁 > è; #8741
+蝂 > băn; #8742
+蝃 > dì; #8743
+蝄 > wăng; #8744
+蝅 > cán; #8745
+蝆 > yăng; #8746
+蝇 > yíng; #8747
+蝈 > gūo; #8748
+蝉 > chán; #8749
+蝋 > là; #874B
+蝌 > kē; #874C
+蝍 > jí; #874D
+蝎 > hé; #874E
+蝏 > tíng; #874F
+蝐 > mài; #8750
+蝑 > xū; #8751
+蝒 > mián; #8752
+蝓 > yú; #8753
+蝔 > jiē; #8754
+蝕 > shí; #8755
+蝖 > xuān; #8756
+蝗 > huáng; #8757
+蝘 > yăn; #8758
+蝙 > biān; #8759
+蝚 > róu; #875A
+蝛 > wēi; #875B
+蝜 > fù; #875C
+蝝 > yuán; #875D
+蝞 > mèi; #875E
+蝟 > wèi; #875F
+蝠 > fú; #8760
+蝡 > ruăn; #8761
+蝢 > xié; #8762
+蝣 > yóu; #8763
+蝤 > qíu; #8764
+蝥 > máo; #8765
+蝦 > xiā; #8766
+蝧 > yīng; #8767
+蝨 > shī; #8768
+蝩 > chóng; #8769
+蝪 > tāng; #876A
+蝫 > zhū; #876B
+蝬 > zōng; #876C
+蝭 > tí; #876D
+蝮 > fù; #876E
+蝯 > yuán; #876F
+蝰 > hŭi; #8770
+蝱 > méng; #8771
+蝲 > là; #8772
+蝳 > dú; #8773
+蝴 > hú; #8774
+蝵 > qīu; #8775
+蝶 > dié; #8776
+蝷 > lì; #8777
+蝸 > guā; #8778
+蝹 > yūn; #8779
+蝺 > jŭ; #877A
+蝻 > năn; #877B
+蝼 > lóu; #877C
+蝽 > qŭn; #877D
+蝾 > róng; #877E
+蝿 > yíng; #877F
+螀 > jiāng; #8780
+螂 > láng; #8782
+螃 > páng; #8783
+螄 > sī; #8784
+螅 > xī; #8785
+螆 > cì; #8786
+螇 > xī; #8787
+螈 > yuán; #8788
+螉 > wēng; #8789
+螊 > lián; #878A
+螋 > sōu; #878B
+螌 > bān; #878C
+融 > róng; #878D
+螎 > róng; #878E
+螏 > jí; #878F
+螐 > wū; #8790
+螑 > qìu; #8791
+螒 > hàn; #8792
+螓 > qín; #8793
+螔 > yí; #8794
+螕 > bī; #8795
+螖 > huá; #8796
+螗 > táng; #8797
+螘 > yĭ; #8798
+螙 > dù; #8799
+螚 > nài; #879A
+螛 > hé; #879B
+螜 > hú; #879C
+螝 > hùi; #879D
+螞 > mă; #879E
+螟 > míng; #879F
+螠 > yì; #87A0
+螡 > wén; #87A1
+螢 > yíng; #87A2
+螣 > téng; #87A3
+螤 > yŭ; #87A4
+螥 > cāng; #87A5
+螨 > măn; #87A8
+螪 > shāng; #87AA
+螫 > zhē; #87AB
+螬 > cáo; #87AC
+螭 > chī; #87AD
+螮 > dì; #87AE
+螯 > áo; #87AF
+螰 > lù; #87B0
+螱 > wèi; #87B1
+螲 > zhì; #87B2
+螳 > táng; #87B3
+螴 > chén; #87B4
+螵 > piāo; #87B5
+螶 > qú; #87B6
+螷 > pí; #87B7
+螸 > yú; #87B8
+螹 > jiàn; #87B9
+螺 > lúo; #87BA
+螻 > lóu; #87BB
+螼 > qĭn; #87BC
+螽 > zhōng; #87BD
+螾 > yĭn; #87BE
+螿 > jiāng; #87BF
+蟀 > shuài; #87C0
+蟁 > wén; #87C1
+蟂 > jiāo; #87C2
+蟃 > wàn; #87C3
+蟄 > zhí; #87C4
+蟅 > zhè; #87C5
+蟆 > má; #87C6
+蟇 > má; #87C7
+蟈 > gūo; #87C8
+蟉 > líu; #87C9
+蟊 > máo; #87CA
+蟋 > xī; #87CB
+蟌 > cōng; #87CC
+蟍 > lí; #87CD
+蟎 > măn; #87CE
+蟏 > xiāo; #87CF
+蟑 > zhāng; #87D1
+蟒 > măng; #87D2
+蟓 > xiàng; #87D3
+蟔 > mò; #87D4
+蟕 > zūi; #87D5
+蟖 > sī; #87D6
+蟗 > qīu; #87D7
+蟘 > tè; #87D8
+蟙 > zhí; #87D9
+蟚 > péng; #87DA
+蟛 > péng; #87DB
+蟜 > jiăo; #87DC
+蟝 > qú; #87DD
+蟞 > bié; #87DE
+蟟 > liáo; #87DF
+蟠 > pán; #87E0
+蟡 > gŭi; #87E1
+蟢 > xĭ; #87E2
+蟣 > jĭ; #87E3
+蟤 > zhuān; #87E4
+蟥 > huáng; #87E5
+蟦 > fèi; #87E6
+蟧 > láo; #87E7
+蟨 > jué; #87E8
+蟩 > jué; #87E9
+蟪 > hùi; #87EA
+蟫 > yín; #87EB
+蟬 > chán; #87EC
+蟭 > jiāo; #87ED
+蟮 > shàn; #87EE
+蟯 > ráo; #87EF
+蟰 > xiāo; #87F0
+蟱 > móu; #87F1
+蟲 > chóng; #87F2
+蟳 > xún; #87F3
+蟴 > sī; #87F4
+蟶 > chēng; #87F6
+蟷 > dāng; #87F7
+蟸 > lĭ; #87F8
+蟹 > xiè; #87F9
+蟺 > shàn; #87FA
+蟻 > yĭ; #87FB
+蟼 > jĭng; #87FC
+蟽 > dá; #87FD
+蟾 > chán; #87FE
+蟿 > qì; #87FF
+蠀 > cī; #8800
+蠁 > xiàng; #8801
+蠂 > shè; #8802
+蠃 > lŭo; #8803
+蠄 > qín; #8804
+蠅 > yíng; #8805
+蠆 > chài; #8806
+蠇 > lì; #8807
+蠈 > zé; #8808
+蠉 > xuān; #8809
+蠊 > lián; #880A
+蠋 > zhú; #880B
+蠌 > zé; #880C
+蠍 > xiē; #880D
+蠎 > măng; #880E
+蠏 > xiè; #880F
+蠐 > qí; #8810
+蠑 > róng; #8811
+蠒 > jiăn; #8812
+蠓 > mĕng; #8813
+蠔 > háo; #8814
+蠕 > ruăn; #8815
+蠖 > hùo; #8816
+蠗 > zhúo; #8817
+蠘 > jié; #8818
+蠙 > bīn; #8819
+蠚 > hè; #881A
+蠛 > miè; #881B
+蠜 > fán; #881C
+蠝 > léi; #881D
+蠞 > jié; #881E
+蠟 > là; #881F
+蠠 > mì; #8820
+蠡 > lĭ; #8821
+蠢 > chŭn; #8822
+蠣 > lì; #8823
+蠤 > qīu; #8824
+蠥 > niè; #8825
+蠦 > lú; #8826
+蠧 > dù; #8827
+蠨 > xiāo; #8828
+蠩 > zhū; #8829
+蠪 > lóng; #882A
+蠫 > lì; #882B
+蠬 > lóng; #882C
+蠭 > fēng; #882D
+蠮 > yē; #882E
+蠯 > bèng; #882F
+蠰 > shàng; #8830
+蠱 > gŭ; #8831
+蠲 > juān; #8832
+蠳 > yīng; #8833
+蠵 > xī; #8835
+蠶 > cán; #8836
+蠷 > qú; #8837
+蠸 > quán; #8838
+蠹 > dù; #8839
+蠺 > cán; #883A
+蠻 > mán; #883B
+蠼 > jué; #883C
+蠽 > jié; #883D
+蠾 > zhú; #883E
+蠿 > zhá; #883F
+血 > xiĕ; #8840
+衁 > huāng; #8841
+衂 > nìu; #8842
+衃 > pēi; #8843
+衄 > nǜ; #8844
+衅 > xìn; #8845
+衆 > zhòng; #8846
+衇 > mò; #8847
+衈 > èr; #8848
+衉 > kè; #8849
+衊 > miè; #884A
+衋 > xì; #884B
+行 > xíng; #884C
+衍 > yăn; #884D
+衎 > kàn; #884E
+衏 > yuàn; #884F
+衑 > líng; #8851
+衒 > xuàn; #8852
+術 > shù; #8853
+衔 > xián; #8854
+衕 > tòng; #8855
+衖 > lòng; #8856
+街 > jiē; #8857
+衘 > xián; #8858
+衙 > yá; #8859
+衚 > hú; #885A
+衛 > wèi; #885B
+衜 > dào; #885C
+衝 > chōng; #885D
+衞 > wèi; #885E
+衟 > dào; #885F
+衠 > zhūn; #8860
+衡 > héng; #8861
+衢 > qú; #8862
+衣 > yī; #8863
+衤 > yī' 'zì' 'páng; #8864
+补 > bŭ; #8865
+衦 > găn; #8866
+衧 > yú; #8867
+表 > biăo; #8868
+衩 > chà; #8869
+衪 > yĭ; #886A
+衫 > shān; #886B
+衬 > chèn; #886C
+衭 > fū; #886D
+衮 > gŭn; #886E
+衯 > fēn; #886F
+衰 > shuāi; #8870
+衱 > jié; #8871
+衲 > nà; #8872
+衳 > zhōng; #8873
+衴 > dăn; #8874
+衵 > rì; #8875
+衶 > zhòng; #8876
+衷 > zhōng; #8877
+衸 > xiè; #8878
+衹 > qí; #8879
+衺 > xié; #887A
+衻 > rán; #887B
+衼 > zhī; #887C
+衽 > rèn; #887D
+衾 > qīn; #887E
+衿 > jīn; #887F
+袀 > jūn; #8880
+袁 > yuán; #8881
+袂 > mèi; #8882
+袃 > chài; #8883
+袄 > ăo; #8884
+袅 > niăo; #8885
+袆 > hūi; #8886
+袇 > rán; #8887
+袈 > jiā; #8888
+袉 > túo; #8889
+袊 > lĭng; #888A
+袋 > dài; #888B
+袌 > bào; #888C
+袍 > páo; #888D
+袎 > yào; #888E
+袏 > zùo; #888F
+袐 > bì; #8890
+袑 > shào; #8891
+袒 > tăn; #8892
+袓 > jŭ; #8893
+袔 > hè; #8894
+袕 > shù; #8895
+袖 > xìu; #8896
+袗 > zhĕn; #8897
+袘 > yí; #8898
+袙 > pà; #8899
+袚 > bō; #889A
+袛 > dī; #889B
+袜 > wà; #889C
+袝 > fù; #889D
+袞 > gŭn; #889E
+袟 > zhì; #889F
+袠 > zhì; #88A0
+袡 > rán; #88A1
+袢 > pàn; #88A2
+袣 > yì; #88A3
+袤 > mào; #88A4
+袥 > tuo; #88A5
+袦 > nà; #88A6
+袧 > kōu; #88A7
+袨 > xiàn; #88A8
+袩 > chān; #88A9
+袪 > qū; #88AA
+被 > bèi; #88AB
+袬 > gŭn; #88AC
+袭 > xí; #88AD
+袯 > bó; #88AF
+袱 > fú; #88B1
+袲 > yí; #88B2
+袳 > chĭ; #88B3
+袴 > kù; #88B4
+袵 > rèn; #88B5
+袶 > jiàng; #88B6
+袷 > jiá; #88B7
+袸 > cún; #88B8
+袹 > mò; #88B9
+袺 > jié; #88BA
+袻 > ér; #88BB
+袼 > lùo; #88BC
+袽 > rú; #88BD
+袾 > zhū; #88BE
+袿 > gūi; #88BF
+裀 > yīn; #88C0
+裁 > cái; #88C1
+裂 > liè; #88C2
+装 > zhuāng; #88C5
+裆 > dāng; #88C6
+裈 > kūn; #88C8
+裉 > kèn; #88C9
+裊 > niăo; #88CA
+裋 > shù; #88CB
+裌 > jiá; #88CC
+裍 > kŭn; #88CD
+裎 > chéng; #88CE
+裏 > lĭ; #88CF
+裐 > juān; #88D0
+裑 > shēn; #88D1
+裒 > póu; #88D2
+裓 > gé; #88D3
+裔 > yì; #88D4
+裕 > yù; #88D5
+裖 > zhĕn; #88D6
+裗 > líu; #88D7
+裘 > qíu; #88D8
+裙 > qún; #88D9
+裚 > jì; #88DA
+裛 > yì; #88DB
+補 > bŭ; #88DC
+裝 > zhuāng; #88DD
+裞 > shùi; #88DE
+裟 > shā; #88DF
+裠 > qún; #88E0
+裡 > lĭ; #88E1
+裢 > lián; #88E2
+裣 > liàn; #88E3
+裤 > kù; #88E4
+裥 > jiăn; #88E5
+裦 > fóu; #88E6
+裧 > chān; #88E7
+裨 > bì; #88E8
+裩 > gūn; #88E9
+裪 > táo; #88EA
+裫 > yuàn; #88EB
+裬 > líng; #88EC
+裭 > chĭ; #88ED
+裮 > chāng; #88EE
+裯 > chóu; #88EF
+裰 > dúo; #88F0
+裱 > biăo; #88F1
+裲 > liăng; #88F2
+裳 > cháng; #88F3
+裴 > péi; #88F4
+裵 > péi; #88F5
+裶 > fēi; #88F6
+裷 > yuān; #88F7
+裸 > lŭo; #88F8
+裹 > gŭo; #88F9
+裺 > yăn; #88FA
+裻 > dŭ; #88FB
+裼 > xí; #88FC
+製 > zhì; #88FD
+裾 > jū; #88FE
+裿 > qĭ; #88FF
+褀 > jì; #8900
+褁 > zhí; #8901
+褂 > guà; #8902
+褃 > kèn; #8903
+褅 > tì; #8905
+褆 > tí; #8906
+複 > fù; #8907
+褈 > chóng; #8908
+褉 > xiē; #8909
+褊 > biăn; #890A
+褋 > dié; #890B
+褌 > kūn; #890C
+褍 > duān; #890D
+褎 > xìu; #890E
+褏 > xìu; #890F
+褐 > hé; #8910
+褑 > yuàn; #8911
+褒 > bāo; #8912
+褓 > băo; #8913
+褔 > fù; #8914
+褕 > yú; #8915
+褖 > tuàn; #8916
+褗 > yăn; #8917
+褘 > hūi; #8918
+褙 > bèi; #8919
+褚 > chŭ; #891A
+褛 > lǚ; #891B
+褞 > yŭn; #891E
+褟 > dá; #891F
+褠 > gōu; #8920
+褡 > dā; #8921
+褢 > huái; #8922
+褣 > róng; #8923
+褤 > yuàn; #8924
+褥 > rù; #8925
+褦 > nài; #8926
+褧 > jĭong; #8927
+褨 > sŭo; #8928
+褩 > bān; #8929
+褪 > tùn; #892A
+褫 > chĭ; #892B
+褬 > săng; #892C
+褭 > niăo; #892D
+褮 > yīng; #892E
+褯 > jiè; #892F
+褰 > qiān; #8930
+褱 > huái; #8931
+褲 > kù; #8932
+褳 > lián; #8933
+褴 > băo; #8934
+褵 > lí; #8935
+褶 > zhé; #8936
+褷 > shī; #8937
+褸 > lǚ; #8938
+褹 > yì; #8939
+褺 > dié; #893A
+褻 > xiè; #893B
+褼 > xiān; #893C
+褽 > wèi; #893D
+褾 > biăo; #893E
+褿 > cáo; #893F
+襀 > jī; #8940
+襁 > jiăng; #8941
+襂 > sēn; #8942
+襃 > bāo; #8943
+襄 > xiāng; #8944
+襆 > pú; #8946
+襇 > jiăn; #8947
+襈 > zhuàn; #8948
+襉 > jiàn; #8949
+襊 > zùi; #894A
+襋 > jí; #894B
+襌 > dān; #894C
+襍 > zá; #894D
+襎 > fán; #894E
+襏 > bó; #894F
+襐 > xiàng; #8950
+襑 > xín; #8951
+襒 > bié; #8952
+襓 > ráo; #8953
+襔 > măn; #8954
+襕 > lán; #8955
+襖 > ăo; #8956
+襗 > dúo; #8957
+襘 > gùi; #8958
+襙 > cào; #8959
+襚 > sùi; #895A
+襛 > nóng; #895B
+襜 > chān; #895C
+襝 > liàn; #895D
+襞 > bì; #895E
+襟 > jīn; #895F
+襠 > dāng; #8960
+襡 > shú; #8961
+襢 > tăn; #8962
+襣 > bì; #8963
+襤 > lán; #8964
+襥 > pú; #8965
+襦 > rú; #8966
+襧 > zhĭ; #8967
+襩 > shŭ; #8969
+襪 > wà; #896A
+襫 > shì; #896B
+襬 > băi; #896C
+襭 > xié; #896D
+襮 > bó; #896E
+襯 > chèn; #896F
+襰 > lài; #8970
+襱 > lóng; #8971
+襲 > xí; #8972
+襳 > xiān; #8973
+襴 > lán; #8974
+襵 > zhé; #8975
+襶 > dài; #8976
+襸 > zàn; #8978
+襹 > shī; #8979
+襺 > jiăn; #897A
+襻 > pàn; #897B
+襼 > yì; #897C
+襾 > yà; #897E
+西 > xī; #897F
+覀 > xī; #8980
+要 > yào; #8981
+覂 > fĕng; #8982
+覃 > tán; #8983
+覅 > biào; #8985
+覆 > fù; #8986
+覇 > bà; #8987
+覈 > hé; #8988
+覉 > jī; #8989
+覊 > jī; #898A
+見 > jiàn; #898B
+覌 > guān; #898C
+覍 > biàn; #898D
+覎 > yàn; #898E
+規 > gūi; #898F
+覐 > jué; #8990
+覑 > piăn; #8991
+覒 > máo; #8992
+覓 > mì; #8993
+覔 > mì; #8994
+覕 > miè; #8995
+視 > shì; #8996
+覗 > sī; #8997
+覘 > zhān; #8998
+覙 > lúo; #8999
+覚 > jué; #899A
+覛 > mì; #899B
+覜 > tiào; #899C
+覝 > lián; #899D
+覞 > yào; #899E
+覟 > zhì; #899F
+覠 > jūn; #89A0
+覡 > xí; #89A1
+覢 > shăn; #89A2
+覣 > wēi; #89A3
+覤 > xì; #89A4
+覥 > tiăn; #89A5
+覦 > yú; #89A6
+覧 > lăn; #89A7
+覨 > è; #89A8
+覩 > dŭ; #89A9
+親 > qīn; #89AA
+覫 > păng; #89AB
+覬 > jì; #89AC
+覭 > míng; #89AD
+覮 > yíng; #89AE
+覯 > gòu; #89AF
+覰 > qù; #89B0
+覱 > zhàn; #89B1
+覲 > jĭn; #89B2
+観 > guān; #89B3
+覴 > dēng; #89B4
+覵 > jiàn; #89B5
+覶 > lúo; #89B6
+覷 > qù; #89B7
+覸 > jiàn; #89B8
+覹 > wéi; #89B9
+覺 > jué; #89BA
+覻 > qù; #89BB
+覼 > lúo; #89BC
+覽 > lăn; #89BD
+覾 > shĕn; #89BE
+覿 > dí; #89BF
+觀 > guān; #89C0
+见 > jiàn; #89C1
+观 > guān; #89C2
+觃 > yàn; #89C3
+规 > gūi; #89C4
+觅 > mì; #89C5
+视 > shì; #89C6
+觇 > zhān; #89C7
+览 > lăn; #89C8
+觉 > jué; #89C9
+觊 > jì; #89CA
+觋 > xí; #89CB
+觌 > dí; #89CC
+觍 > tiăn; #89CD
+觎 > yú; #89CE
+觏 > gòu; #89CF
+觐 > jĭn; #89D0
+觑 > qù; #89D1
+角 > jiăo; #89D2
+觓 > jīu; #89D3
+觔 > jīn; #89D4
+觕 > cū; #89D5
+觖 > jué; #89D6
+觗 > zhì; #89D7
+觘 > chào; #89D8
+觙 > jí; #89D9
+觚 > gū; #89DA
+觛 > dàn; #89DB
+觜 > zŭi; #89DC
+觝 > dĭ; #89DD
+觞 > shāng; #89DE
+觟 > huà; #89DF
+觠 > quán; #89E0
+觡 > gé; #89E1
+觢 > chì; #89E2
+解 > jiĕ; #89E3
+觤 > gŭi; #89E4
+觥 > gōng; #89E5
+触 > hóng; #89E6
+觧 > jiĕ; #89E7
+觨 > hùn; #89E8
+觩 > qíu; #89E9
+觪 > xīng; #89EA
+觫 > sù; #89EB
+觬 > ní; #89EC
+觭 > jī; #89ED
+觮 > lù; #89EE
+觯 > zhì; #89EF
+觰 > zhā; #89F0
+觱 > bì; #89F1
+觲 > xīng; #89F2
+觳 > hú; #89F3
+觴 > shāng; #89F4
+觵 > gōng; #89F5
+觶 > zhì; #89F6
+觷 > xué; #89F7
+觸 > chù; #89F8
+觹 > xī; #89F9
+觺 > yí; #89FA
+觻 > lù; #89FB
+觼 > jué; #89FC
+觽 > xī; #89FD
+觾 > yàn; #89FE
+觿 > xī; #89FF
+言 > yán; #8A00
+訁 > yán' 'zì' 'páng; #8A01
+訂 > dìng; #8A02
+訃 > fù; #8A03
+訄 > qíu; #8A04
+訅 > qíu; #8A05
+訆 > jiào; #8A06
+訇 > hōng; #8A07
+計 > jì; #8A08
+訉 > fàn; #8A09
+訊 > xùn; #8A0A
+訋 > diào; #8A0B
+訌 > hóng; #8A0C
+訍 > chà; #8A0D
+討 > tăo; #8A0E
+訏 > xū; #8A0F
+訐 > jié; #8A10
+訑 > yí; #8A11
+訒 > rèn; #8A12
+訓 > xùn; #8A13
+訔 > yín; #8A14
+訕 > shàn; #8A15
+訖 > qì; #8A16
+託 > tūo; #8A17
+記 > jì; #8A18
+訙 > xùn; #8A19
+訚 > yín; #8A1A
+訛 > é; #8A1B
+訜 > fēn; #8A1C
+訝 > yà; #8A1D
+訞 > yāo; #8A1E
+訟 > sòng; #8A1F
+訠 > shĕn; #8A20
+訡 > yín; #8A21
+訢 > xīn; #8A22
+訣 > jué; #8A23
+訤 > xiáo; #8A24
+訥 > nè; #8A25
+訦 > chén; #8A26
+訧 > yóu; #8A27
+訨 > zhĭ; #8A28
+訩 > xīong; #8A29
+訪 > făng; #8A2A
+訫 > xìn; #8A2B
+訬 > chāo; #8A2C
+設 > shè; #8A2D
+訮 > xiān; #8A2E
+訯 > shă; #8A2F
+訰 > tún; #8A30
+許 > xŭ; #8A31
+訲 > yì; #8A32
+訳 > yì; #8A33
+訴 > sù; #8A34
+訵 > chī; #8A35
+訶 > hē; #8A36
+訷 > shēn; #8A37
+訸 > hé; #8A38
+訹 > xù; #8A39
+診 > zhĕn; #8A3A
+註 > zhù; #8A3B
+証 > zhèng; #8A3C
+訽 > gòu; #8A3D
+訾 > zĭ; #8A3E
+訿 > zĭ; #8A3F
+詀 > zhān; #8A40
+詁 > gŭ; #8A41
+詂 > fù; #8A42
+詃 > quăn; #8A43
+詄 > dié; #8A44
+詅 > líng; #8A45
+詆 > dĭ; #8A46
+詇 > yàng; #8A47
+詈 > lì; #8A48
+詉 > náo; #8A49
+詊 > pàn; #8A4A
+詋 > zhòu; #8A4B
+詌 > gàn; #8A4C
+詍 > yì; #8A4D
+詎 > jù; #8A4E
+詏 > ào; #8A4F
+詐 > zhà; #8A50
+詑 > túo; #8A51
+詒 > yí; #8A52
+詓 > qŭ; #8A53
+詔 > zhào; #8A54
+評 > píng; #8A55
+詖 > bì; #8A56
+詗 > xìong; #8A57
+詘 > qù; #8A58
+詙 > bá; #8A59
+詚 > dá; #8A5A
+詛 > zŭ; #8A5B
+詜 > tāo; #8A5C
+詝 > zhŭ; #8A5D
+詞 > cí; #8A5E
+詟 > zhé; #8A5F
+詠 > yŏng; #8A60
+詡 > xŭ; #8A61
+詢 > xún; #8A62
+詣 > yì; #8A63
+詤 > huăng; #8A64
+詥 > hé; #8A65
+試 > shì; #8A66
+詧 > chá; #8A67
+詨 > jiāo; #8A68
+詩 > shī; #8A69
+詪 > hĕn; #8A6A
+詫 > chà; #8A6B
+詬 > gòu; #8A6C
+詭 > gŭi; #8A6D
+詮 > quán; #8A6E
+詯 > hùi; #8A6F
+詰 > jié; #8A70
+話 > huà; #8A71
+該 > gāi; #8A72
+詳 > xiáng; #8A73
+詴 > wēi; #8A74
+詵 > shēn; #8A75
+詶 > chóu; #8A76
+詷 > tóng; #8A77
+詸 > mí; #8A78
+詹 > zhān; #8A79
+詺 > mìng; #8A7A
+詻 > è; #8A7B
+詼 > hūi; #8A7C
+詽 > yán; #8A7D
+詾 > xīong; #8A7E
+詿 > guà; #8A7F
+誀 > èr; #8A80
+誁 > bĕng; #8A81
+誂 > tiăo; #8A82
+誃 > chĭ; #8A83
+誄 > lĕi; #8A84
+誅 > zhū; #8A85
+誆 > kuāng; #8A86
+誇 > kuā; #8A87
+誈 > wú; #8A88
+誉 > yù; #8A89
+誊 > téng; #8A8A
+誋 > jì; #8A8B
+誌 > zhì; #8A8C
+認 > rèn; #8A8D
+誎 > sù; #8A8E
+誏 > lăng; #8A8F
+誐 > é; #8A90
+誑 > kuáng; #8A91
+誒 > è; #8A92
+誓 > shì; #8A93
+誔 > tĭng; #8A94
+誕 > dàn; #8A95
+誖 > bó; #8A96
+誗 > chán; #8A97
+誘 > yòu; #8A98
+誙 > héng; #8A99
+誚 > qiào; #8A9A
+誛 > qīn; #8A9B
+誜 > shuà; #8A9C
+誝 > ān; #8A9D
+語 > yŭ; #8A9E
+誟 > xiào; #8A9F
+誠 > chéng; #8AA0
+誡 > jiè; #8AA1
+誢 > xiàn; #8AA2
+誣 > wú; #8AA3
+誤 > wù; #8AA4
+誥 > gào; #8AA5
+誦 > sòng; #8AA6
+誧 > pŭ; #8AA7
+誨 > hùi; #8AA8
+誩 > jìng; #8AA9
+說 > shūo; #8AAA
+誫 > zhèn; #8AAB
+説 > shūo; #8AAC
+読 > dú; #8AAD
+誯 > chàng; #8AAF
+誰 > shúi; #8AB0
+誱 > jié; #8AB1
+課 > kè; #8AB2
+誳 > qū; #8AB3
+誴 > cóng; #8AB4
+誵 > xiáo; #8AB5
+誶 > sùi; #8AB6
+誷 > wăng; #8AB7
+誸 > xuán; #8AB8
+誹 > fĕi; #8AB9
+誺 > chī; #8ABA
+誻 > tà; #8ABB
+誼 > yí; #8ABC
+誽 > ná; #8ABD
+誾 > yín; #8ABE
+調 > diào; #8ABF
+諀 > pĭ; #8AC0
+諁 > chùo; #8AC1
+諂 > chăn; #8AC2
+諃 > chēn; #8AC3
+諄 > zhūn; #8AC4
+諅 > jī; #8AC5
+諆 > qī; #8AC6
+談 > tán; #8AC7
+諈 > zhùi; #8AC8
+諉 > wĕi; #8AC9
+諊 > jú; #8ACA
+請 > qĭng; #8ACB
+諌 > jiàn; #8ACC
+諍 > zhēng; #8ACD
+諎 > zé; #8ACE
+諏 > zōu; #8ACF
+諐 > qiān; #8AD0
+諑 > zhúo; #8AD1
+諒 > liàng; #8AD2
+諓 > jiàn; #8AD3
+諔 > zhù; #8AD4
+諕 > háo; #8AD5
+論 > lùn; #8AD6
+諗 > shĕn; #8AD7
+諘 > biăo; #8AD8
+諙 > huài; #8AD9
+諚 > pián; #8ADA
+諛 > yú; #8ADB
+諜 > dié; #8ADC
+諝 > xŭ; #8ADD
+諞 > pián; #8ADE
+諟 > shì; #8ADF
+諠 > xuān; #8AE0
+諡 > shì; #8AE1
+諢 > hùn; #8AE2
+諣 > huà; #8AE3
+諤 > è; #8AE4
+諥 > zhòng; #8AE5
+諦 > dì; #8AE6
+諧 > xié; #8AE7
+諨 > fú; #8AE8
+諩 > pŭ; #8AE9
+諪 > tíng; #8AEA
+諫 > jiàn; #8AEB
+諬 > qĭ; #8AEC
+諭 > yù; #8AED
+諮 > zī; #8AEE
+諯 > chuán; #8AEF
+諰 > xĭ; #8AF0
+諱 > hùi; #8AF1
+諲 > yīn; #8AF2
+諳 > ān; #8AF3
+諴 > xián; #8AF4
+諵 > nán; #8AF5
+諶 > chén; #8AF6
+諷 > fēng; #8AF7
+諸 > zhū; #8AF8
+諹 > yáng; #8AF9
+諺 > yàn; #8AFA
+諻 > hēng; #8AFB
+諼 > xuān; #8AFC
+諽 > gé; #8AFD
+諾 > nùo; #8AFE
+諿 > qì; #8AFF
+謀 > móu; #8B00
+謁 > yè; #8B01
+謂 > wèi; #8B02
+謄 > téng; #8B04
+謅 > zōu; #8B05
+謆 > shàn; #8B06
+謇 > jiăn; #8B07
+謈 > bó; #8B08
+謉 > kù1; #8B09
+謊 > huăng; #8B0A
+謋 > hùo; #8B0B
+謌 > gē; #8B0C
+謍 > yíng; #8B0D
+謎 > mí; #8B0E
+謏 > xiăo; #8B0F
+謐 > mì; #8B10
+謑 > xì; #8B11
+謒 > qiāng; #8B12
+謓 > chēn; #8B13
+謔 > nǜe; #8B14
+謕 > tí; #8B15
+謖 > sù; #8B16
+謗 > bàng; #8B17
+謘 > chí; #8B18
+謙 > qiān; #8B19
+謚 > shì; #8B1A
+講 > jiăng; #8B1B
+謜 > yuàn; #8B1C
+謝 > xiè; #8B1D
+謞 > xuè; #8B1E
+謟 > tāo; #8B1F
+謠 > yáo; #8B20
+謡 > yáo; #8B21
+謣 > yú; #8B23
+謤 > biāo; #8B24
+謥 > còng; #8B25
+謦 > qìng; #8B26
+謧 > lí; #8B27
+謨 > mó; #8B28
+謩 > mò; #8B29
+謪 > shāng; #8B2A
+謫 > zhé; #8B2B
+謬 > mìu; #8B2C
+謭 > jiăn; #8B2D
+謮 > zé; #8B2E
+謯 > jiē; #8B2F
+謰 > lián; #8B30
+謱 > lóu; #8B31
+謲 > cān; #8B32
+謳 > ōu; #8B33
+謴 > guàn; #8B34
+謵 > xí; #8B35
+謶 > zhúo; #8B36
+謷 > áo; #8B37
+謸 > áo; #8B38
+謹 > jĭn; #8B39
+謺 > zhé; #8B3A
+謻 > yí; #8B3B
+謼 > hù; #8B3C
+謽 > jiàng; #8B3D
+謾 > mán; #8B3E
+謿 > cháo; #8B3F
+譀 > hàn; #8B40
+譁 > huá; #8B41
+譂 > chăn; #8B42
+譃 > xū; #8B43
+譄 > zēng; #8B44
+譅 > sè; #8B45
+譆 > xī; #8B46
+譇 > shē; #8B47
+譈 > dùi; #8B48
+證 > zhèng; #8B49
+譊 > náo; #8B4A
+譋 > lán; #8B4B
+譌 > é; #8B4C
+譍 > yìng; #8B4D
+譎 > jué; #8B4E
+譏 > jī; #8B4F
+譐 > zŭn; #8B50
+譑 > jiăo; #8B51
+譒 > bò; #8B52
+譓 > hùi; #8B53
+譔 > zhuàn; #8B54
+譕 > mú; #8B55
+譖 > zèn; #8B56
+譗 > zhá; #8B57
+識 > shì; #8B58
+譙 > qiáo; #8B59
+譚 > tán; #8B5A
+譛 > zèn; #8B5B
+譜 > pŭ; #8B5C
+譝 > shéng; #8B5D
+譞 > xuān; #8B5E
+譟 > zào; #8B5F
+譠 > tān; #8B60
+譡 > dăng; #8B61
+譢 > sùi; #8B62
+譣 > qiān; #8B63
+譤 > jī; #8B64
+譥 > jiào; #8B65
+警 > jĭng; #8B66
+譧 > lián; #8B67
+譨 > nóu; #8B68
+譩 > yī; #8B69
+譪 > ài; #8B6A
+譫 > zhān; #8B6B
+譬 > pì; #8B6C
+譭 > hŭi; #8B6D
+譮 > huà; #8B6E
+譯 > yì; #8B6F
+議 > yì; #8B70
+譱 > shàn; #8B71
+譲 > ràng; #8B72
+譳 > nòu; #8B73
+譴 > qiăn; #8B74
+譵 > zhùi; #8B75
+譶 > tà; #8B76
+護 > hù; #8B77
+譸 > zhōu; #8B78
+譹 > háo; #8B79
+譺 > yè; #8B7A
+譻 > yīng; #8B7B
+譼 > jiàn; #8B7C
+譽 > yù; #8B7D
+譾 > jiăn; #8B7E
+譿 > hùi; #8B7F
+讀 > dú; #8B80
+讁 > zhé; #8B81
+讂 > xuàn; #8B82
+讃 > zàn; #8B83
+讄 > lĕi; #8B84
+讅 > shĕn; #8B85
+讆 > wèi; #8B86
+讇 > chăn; #8B87
+讈 > lì; #8B88
+讉 > yí; #8B89
+變 > biàn; #8B8A
+讋 > zhé; #8B8B
+讌 > yàn; #8B8C
+讍 > è; #8B8D
+讎 > chóu; #8B8E
+讏 > wèi; #8B8F
+讐 > chóu; #8B90
+讑 > yào; #8B91
+讒 > chán; #8B92
+讓 > ràng; #8B93
+讔 > yĭn; #8B94
+讕 > lán; #8B95
+讖 > chèn; #8B96
+讗 > hùo; #8B97
+讘 > zhé; #8B98
+讙 > huān; #8B99
+讚 > zàn; #8B9A
+讛 > yì; #8B9B
+讜 > dăng; #8B9C
+讝 > zhān; #8B9D
+讞 > yàn; #8B9E
+讟 > dú; #8B9F
+讠 > yán; #8BA0
+计 > jì; #8BA1
+订 > dìng; #8BA2
+讣 > fù; #8BA3
+认 > rèn; #8BA4
+讥 > jī; #8BA5
+讦 > jié; #8BA6
+讧 > hóng; #8BA7
+讨 > tăo; #8BA8
+让 > ràng; #8BA9
+讪 > shàn; #8BAA
+讫 > qì; #8BAB
+讬 > tūo; #8BAC
+训 > xùn; #8BAD
+议 > yì; #8BAE
+讯 > xùn; #8BAF
+记 > jì; #8BB0
+讱 > rèn; #8BB1
+讲 > jiăng; #8BB2
+讳 > hùi; #8BB3
+讴 > ōu; #8BB4
+讵 > jù; #8BB5
+讶 > yà; #8BB6
+讷 > nè; #8BB7
+许 > xŭ; #8BB8
+讹 > é; #8BB9
+论 > lùn; #8BBA
+讻 > xīong; #8BBB
+讼 > sòng; #8BBC
+讽 > fēng; #8BBD
+设 > shè; #8BBE
+访 > făng; #8BBF
+诀 > jué; #8BC0
+证 > zhèng; #8BC1
+诂 > gŭ; #8BC2
+诃 > hē; #8BC3
+评 > píng; #8BC4
+诅 > zŭ; #8BC5
+识 > shì; #8BC6
+诇 > xìong; #8BC7
+诈 > zhà; #8BC8
+诉 > sù; #8BC9
+诊 > zhĕn; #8BCA
+诋 > dĭ; #8BCB
+诌 > zōu; #8BCC
+词 > cí; #8BCD
+诎 > qù; #8BCE
+诏 > zhào; #8BCF
+诐 > bì; #8BD0
+译 > yì; #8BD1
+诒 > yí; #8BD2
+诓 > kuāng; #8BD3
+诔 > lĕi; #8BD4
+试 > shì; #8BD5
+诖 > guà; #8BD6
+诗 > shī; #8BD7
+诘 > jié; #8BD8
+诙 > hūi; #8BD9
+诚 > chéng; #8BDA
+诛 > zhū; #8BDB
+诜 > shēn; #8BDC
+话 > huà; #8BDD
+诞 > dàn; #8BDE
+诟 > gòu; #8BDF
+诠 > quán; #8BE0
+诡 > gŭi; #8BE1
+询 > xún; #8BE2
+诣 > yì; #8BE3
+诤 > zhēng; #8BE4
+该 > gāi; #8BE5
+详 > xiáng; #8BE6
+诧 > chà; #8BE7
+诨 > hùn; #8BE8
+诩 > xŭ; #8BE9
+诪 > zhōu; #8BEA
+诫 > jiè; #8BEB
+诬 > wú; #8BEC
+语 > yŭ; #8BED
+诮 > qiào; #8BEE
+误 > wù; #8BEF
+诰 > gào; #8BF0
+诱 > yòu; #8BF1
+诲 > hùi; #8BF2
+诳 > kuáng; #8BF3
+说 > shūo; #8BF4
+诵 > sòng; #8BF5
+诶 > āi; #8BF6
+请 > qĭng; #8BF7
+诸 > zhū; #8BF8
+诹 > zōu; #8BF9
+诺 > nùo; #8BFA
+读 > dú; #8BFB
+诼 > zhúo; #8BFC
+诽 > fĕi; #8BFD
+课 > kè; #8BFE
+诿 > wĕi; #8BFF
+谀 > yú; #8C00
+谁 > shúi; #8C01
+谂 > shĕn; #8C02
+调 > diào; #8C03
+谄 > chăn; #8C04
+谅 > liàng; #8C05
+谆 > zhūn; #8C06
+谇 > sùi; #8C07
+谈 > tán; #8C08
+谉 > shĕn; #8C09
+谊 > yí; #8C0A
+谋 > móu; #8C0B
+谌 > chén; #8C0C
+谍 > dié; #8C0D
+谎 > huăng; #8C0E
+谏 > jiàn; #8C0F
+谐 > xié; #8C10
+谑 > nǜe; #8C11
+谒 > yè; #8C12
+谓 > wèi; #8C13
+谔 > è; #8C14
+谕 > yù; #8C15
+谖 > xuān; #8C16
+谗 > chán; #8C17
+谘 > zī; #8C18
+谙 > ān; #8C19
+谚 > yàn; #8C1A
+谛 > dì; #8C1B
+谜 > mí; #8C1C
+谝 > pián; #8C1D
+谞 > xŭ; #8C1E
+谟 > mó; #8C1F
+谠 > dăng; #8C20
+谡 > sù; #8C21
+谢 > xiè; #8C22
+谣 > yáo; #8C23
+谤 > bàng; #8C24
+谥 > shì; #8C25
+谦 > qiān; #8C26
+谧 > mì; #8C27
+谨 > jĭn; #8C28
+谩 > mán; #8C29
+谪 > zhé; #8C2A
+谫 > jiăn; #8C2B
+谬 > mìu; #8C2C
+谭 > tán; #8C2D
+谮 > zèn; #8C2E
+谯 > qiáo; #8C2F
+谰 > lán; #8C30
+谱 > pŭ; #8C31
+谲 > jué; #8C32
+谳 > yàn; #8C33
+谴 > qiăn; #8C34
+谵 > zhān; #8C35
+谶 > chèn; #8C36
+谷 > gŭ; #8C37
+谸 > qiān; #8C38
+谹 > hóng; #8C39
+谺 > xiā; #8C3A
+谻 > jué; #8C3B
+谼 > hóng; #8C3C
+谽 > hān; #8C3D
+谾 > hōng; #8C3E
+谿 > xī; #8C3F
+豀 > xī; #8C40
+豁 > hùo; #8C41
+豂 > liáo; #8C42
+豃 > hăn; #8C43
+豄 > dú; #8C44
+豅 > lóng; #8C45
+豆 > dòu; #8C46
+豇 > jiāng; #8C47
+豈 > qĭ; #8C48
+豉 > shì; #8C49
+豊 > lĭ; #8C4A
+豋 > dēng; #8C4B
+豌 > wān; #8C4C
+豍 > bī; #8C4D
+豎 > shù; #8C4E
+豏 > xiàn; #8C4F
+豐 > fēng; #8C50
+豑 > zhì; #8C51
+豒 > zhì; #8C52
+豓 > yàn; #8C53
+豔 > yàn; #8C54
+豕 > shĭ; #8C55
+豖 > chù; #8C56
+豗 > hūi; #8C57
+豘 > tún; #8C58
+豙 > yì; #8C59
+豚 > tún; #8C5A
+豛 > yì; #8C5B
+豜 > jiān; #8C5C
+豝 > bā; #8C5D
+豞 > hòu; #8C5E
+豟 > è; #8C5F
+豠 > cú; #8C60
+象 > xiàng; #8C61
+豢 > huàn; #8C62
+豣 > jiān; #8C63
+豤 > kĕn; #8C64
+豥 > gāi; #8C65
+豦 > qú; #8C66
+豧 > fū; #8C67
+豨 > xī; #8C68
+豩 > bīn; #8C69
+豪 > háo; #8C6A
+豫 > yù; #8C6B
+豬 > zhū; #8C6C
+豭 > jiā; #8C6D
+豯 > xī; #8C6F
+豰 > bó; #8C70
+豱 > wēn; #8C71
+豲 > huán; #8C72
+豳 > bīn; #8C73
+豴 > dí; #8C74
+豵 > zōng; #8C75
+豶 > fén; #8C76
+豷 > yì; #8C77
+豸 > zhì; #8C78
+豹 > bào; #8C79
+豺 > chái; #8C7A
+豻 > hàn; #8C7B
+豼 > pí; #8C7C
+豽 > nà; #8C7D
+豾 > pī; #8C7E
+豿 > gŏu; #8C7F
+貀 > nà; #8C80
+貁 > yòu; #8C81
+貂 > diāo; #8C82
+貃 > mò; #8C83
+貄 > sì; #8C84
+貅 > xīu; #8C85
+貆 > huán; #8C86
+貇 > kūn; #8C87
+貈 > hé; #8C88
+貉 > hé; #8C89
+貊 > mò; #8C8A
+貋 > hàn; #8C8B
+貌 > mào; #8C8C
+貍 > lí; #8C8D
+貎 > ní; #8C8E
+貏 > bĭ; #8C8F
+貐 > yŭ; #8C90
+貑 > jiā; #8C91
+貒 > tuān; #8C92
+貓 > māo; #8C93
+貔 > pí; #8C94
+貕 > xī; #8C95
+貖 > è; #8C96
+貗 > jù; #8C97
+貘 > mò; #8C98
+貙 > chū; #8C99
+貚 > tán; #8C9A
+貛 > huān; #8C9B
+貜 > jué; #8C9C
+貝 > bèi; #8C9D
+貞 > zhēn; #8C9E
+貟 > yuán; #8C9F
+負 > fù; #8CA0
+財 > cái; #8CA1
+貢 > gòng; #8CA2
+貣 > tè; #8CA3
+貤 > yí; #8CA4
+貥 > háng; #8CA5
+貦 > wàn; #8CA6
+貧 > pín; #8CA7
+貨 > hùo; #8CA8
+販 > fàn; #8CA9
+貪 > tān; #8CAA
+貫 > guàn; #8CAB
+責 > zé; #8CAC
+貭 > zhí; #8CAD
+貮 > èr; #8CAE
+貯 > zhŭ; #8CAF
+貰 > shì; #8CB0
+貱 > bì; #8CB1
+貲 > zī; #8CB2
+貳 > èr; #8CB3
+貴 > gùi; #8CB4
+貵 > piăn; #8CB5
+貶 > biăn; #8CB6
+買 > măi; #8CB7
+貸 > dài; #8CB8
+貹 > shèng; #8CB9
+貺 > kuàng; #8CBA
+費 > fèi; #8CBB
+貼 > tiē; #8CBC
+貽 > yí; #8CBD
+貾 > chí; #8CBE
+貿 > mào; #8CBF
+賀 > hè; #8CC0
+賁 > bì; #8CC1
+賂 > lù; #8CC2
+賃 > rèn; #8CC3
+賄 > hùi; #8CC4
+賅 > gāi; #8CC5
+賆 > pián; #8CC6
+資 > zī; #8CC7
+賈 > jiă; #8CC8
+賉 > xù; #8CC9
+賊 > zéi; #8CCA
+賋 > jiăo; #8CCB
+賌 > gài; #8CCC
+賍 > zāng; #8CCD
+賎 > jiàn; #8CCE
+賏 > yìng; #8CCF
+賐 > xùn; #8CD0
+賑 > zhèn; #8CD1
+賒 > shē; #8CD2
+賓 > bīn; #8CD3
+賔 > bīn; #8CD4
+賕 > qíu; #8CD5
+賖 > shē; #8CD6
+賗 > chuàn; #8CD7
+賘 > zāng; #8CD8
+賙 > zhōu; #8CD9
+賚 > lài; #8CDA
+賛 > zàn; #8CDB
+賜 > sì; #8CDC
+賝 > chēn; #8CDD
+賞 > shăng; #8CDE
+賟 > tiăn; #8CDF
+賠 > péi; #8CE0
+賡 > gēng; #8CE1
+賢 > xián; #8CE2
+賣 > mài; #8CE3
+賤 > jiàn; #8CE4
+賥 > sùi; #8CE5
+賦 > fù; #8CE6
+賧 > tàn; #8CE7
+賨 > cóng; #8CE8
+賩 > cóng; #8CE9
+質 > zhí; #8CEA
+賫 > jī; #8CEB
+賬 > zhàng; #8CEC
+賭 > dŭ; #8CED
+賮 > jìn; #8CEE
+賯 > xīong; #8CEF
+賰 > shŭn; #8CF0
+賱 > yŭn; #8CF1
+賲 > băo; #8CF2
+賳 > zāi; #8CF3
+賴 > lài; #8CF4
+賵 > fèng; #8CF5
+賶 > càng; #8CF6
+賷 > jī; #8CF7
+賸 > shèng; #8CF8
+賹 > ài; #8CF9
+賺 > zhuàn; #8CFA
+賻 > fù; #8CFB
+購 > gòu; #8CFC
+賽 > sài; #8CFD
+賾 > zé; #8CFE
+賿 > liáo; #8CFF
+贀 > wèi; #8D00
+贁 > bài; #8D01
+贂 > chĕn; #8D02
+贃 > zhuàn; #8D03
+贄 > zhì; #8D04
+贅 > zhùi; #8D05
+贆 > biāo; #8D06
+贇 > yūn; #8D07
+贈 > zèng; #8D08
+贉 > tăn; #8D09
+贊 > zàn; #8D0A
+贋 > yàn; #8D0B
+贍 > shàn; #8D0D
+贎 > wàn; #8D0E
+贏 > yíng; #8D0F
+贐 > jìn; #8D10
+贑 > găn; #8D11
+贒 > xián; #8D12
+贓 > zāng; #8D13
+贔 > bì; #8D14
+贕 > dú; #8D15
+贖 > shú; #8D16
+贗 > yàn; #8D17
+贙 > xuàn; #8D19
+贚 > lòng; #8D1A
+贛 > gàn; #8D1B
+贜 > zāng; #8D1C
+贝 > bèi; #8D1D
+贞 > zhēn; #8D1E
+负 > fù; #8D1F
+贠 > yuán; #8D20
+贡 > gòng; #8D21
+财 > cái; #8D22
+责 > zé; #8D23
+贤 > xián; #8D24
+败 > bài; #8D25
+账 > zhàng; #8D26
+货 > hùo; #8D27
+质 > zhí; #8D28
+贩 > fàn; #8D29
+贪 > tān; #8D2A
+贫 > pín; #8D2B
+贬 > biăn; #8D2C
+购 > gòu; #8D2D
+贮 > zhŭ; #8D2E
+贯 > guàn; #8D2F
+贰 > èr; #8D30
+贱 > jiàn; #8D31
+贲 > bì; #8D32
+贳 > shì; #8D33
+贴 > tiē; #8D34
+贵 > gùi; #8D35
+贶 > kuàng; #8D36
+贷 > dài; #8D37
+贸 > mào; #8D38
+费 > fèi; #8D39
+贺 > hè; #8D3A
+贻 > yí; #8D3B
+贼 > zéi; #8D3C
+贽 > zhì; #8D3D
+贾 > jiă; #8D3E
+贿 > hùi; #8D3F
+赀 > zī; #8D40
+赁 > rèn; #8D41
+赂 > lù; #8D42
+赃 > zāng; #8D43
+资 > zī; #8D44
+赅 > gāi; #8D45
+赆 > jìn; #8D46
+赇 > qíu; #8D47
+赈 > zhèn; #8D48
+赉 > lài; #8D49
+赊 > shē; #8D4A
+赋 > fù; #8D4B
+赌 > dŭ; #8D4C
+赍 > jī; #8D4D
+赎 > shú; #8D4E
+赏 > shăng; #8D4F
+赐 > sì; #8D50
+赑 > bì; #8D51
+赒 > zhōu; #8D52
+赓 > gēng; #8D53
+赔 > péi; #8D54
+赕 > tàn; #8D55
+赖 > lài; #8D56
+赗 > fèng; #8D57
+赘 > zhùi; #8D58
+赙 > fù; #8D59
+赚 > zhuàn; #8D5A
+赛 > sài; #8D5B
+赜 > zé; #8D5C
+赝 > yàn; #8D5D
+赞 > zàn; #8D5E
+赟 > yūn; #8D5F
+赠 > zèng; #8D60
+赡 > shàn; #8D61
+赢 > yíng; #8D62
+赣 > gàn; #8D63
+赤 > chì; #8D64
+赥 > xì; #8D65
+赦 > shè; #8D66
+赧 > năn; #8D67
+赨 > xíong; #8D68
+赩 > xì; #8D69
+赪 > chēng; #8D6A
+赫 > hè; #8D6B
+赬 > chēng; #8D6C
+赭 > zhĕ; #8D6D
+赮 > xiá; #8D6E
+赯 > táng; #8D6F
+走 > zŏu; #8D70
+赱 > zŏu; #8D71
+赲 > lì; #8D72
+赳 > jĭu; #8D73
+赴 > fù; #8D74
+赵 > zhào; #8D75
+赶 > găn; #8D76
+起 > qĭ; #8D77
+赸 > shàn; #8D78
+赹 > qíong; #8D79
+赺 > qín; #8D7A
+赻 > xiăn; #8D7B
+赼 > cī; #8D7C
+赽 > jué; #8D7D
+赾 > qĭn; #8D7E
+赿 > chí; #8D7F
+趀 > cī; #8D80
+趁 > chèn; #8D81
+趂 > chèn; #8D82
+趃 > dié; #8D83
+趄 > jū; #8D84
+超 > chāo; #8D85
+趆 > dī; #8D86
+趇 > sè; #8D87
+趈 > zhān; #8D88
+趉 > zhú; #8D89
+越 > yuè; #8D8A
+趋 > qū; #8D8B
+趌 > jié; #8D8C
+趍 > chí; #8D8D
+趎 > chú; #8D8E
+趏 > guā; #8D8F
+趐 > xuè; #8D90
+趑 > cī; #8D91
+趒 > tiáo; #8D92
+趓 > dŭo; #8D93
+趔 > liè; #8D94
+趕 > găn; #8D95
+趖 > sūo; #8D96
+趗 > cù; #8D97
+趘 > xí; #8D98
+趙 > zhào; #8D99
+趚 > sù; #8D9A
+趛 > yĭn; #8D9B
+趜 > jú; #8D9C
+趝 > jiàn; #8D9D
+趞 > què; #8D9E
+趟 > tàng; #8D9F
+趠 > chùo; #8DA0
+趡 > cŭi; #8DA1
+趢 > lù; #8DA2
+趣 > qù; #8DA3
+趤 > dàng; #8DA4
+趥 > qīu; #8DA5
+趦 > zī; #8DA6
+趧 > tí; #8DA7
+趨 > qū; #8DA8
+趩 > chì; #8DA9
+趪 > huáng; #8DAA
+趫 > qiáo; #8DAB
+趬 > qiáo; #8DAC
+趭 > yào; #8DAD
+趮 > zào; #8DAE
+趯 > tì; #8DAF
+趱 > zăn; #8DB1
+趲 > zăn; #8DB2
+足 > zú; #8DB3
+趴 > pā; #8DB4
+趵 > bào; #8DB5
+趶 > kù; #8DB6
+趷 > kē; #8DB7
+趸 > dŭn; #8DB8
+趹 > jué; #8DB9
+趺 > fū; #8DBA
+趻 > chĕn; #8DBB
+趼 > jiăn; #8DBC
+趽 > fàng; #8DBD
+趾 > zhĭ; #8DBE
+趿 > sà; #8DBF
+跀 > yuè; #8DC0
+跁 > pá; #8DC1
+跂 > qí; #8DC2
+跃 > yuè; #8DC3
+跄 > qiāng; #8DC4
+跅 > tùo; #8DC5
+跆 > tái; #8DC6
+跇 > yì; #8DC7
+跈 > niăn; #8DC8
+跉 > líng; #8DC9
+跊 > mèi; #8DCA
+跋 > bá; #8DCB
+跌 > diē; #8DCC
+跍 > kū; #8DCD
+跎 > túo; #8DCE
+跏 > jiā; #8DCF
+跐 > cĭ; #8DD0
+跑 > păo; #8DD1
+跒 > qiă; #8DD2
+跓 > zhù; #8DD3
+跔 > jū; #8DD4
+跕 > dié; #8DD5
+跖 > zhī; #8DD6
+跗 > fū; #8DD7
+跘 > pán; #8DD8
+跙 > jŭ; #8DD9
+跚 > shān; #8DDA
+跛 > bŏ; #8DDB
+跜 > ní; #8DDC
+距 > jù; #8DDD
+跞 > lì; #8DDE
+跟 > gēn; #8DDF
+跠 > yí; #8DE0
+跡 > jī; #8DE1
+跢 > dài; #8DE2
+跣 > xiăn; #8DE3
+跤 > jiāo; #8DE4
+跥 > dùo; #8DE5
+跦 > zhū; #8DE6
+跧 > zhuān; #8DE7
+跨 > kuà; #8DE8
+跩 > zhuăi; #8DE9
+跪 > gùi; #8DEA
+跫 > qíong; #8DEB
+跬 > kŭi; #8DEC
+跭 > xiáng; #8DED
+跮 > chì; #8DEE
+路 > lù; #8DEF
+跰 > bèng; #8DF0
+跱 > zhì; #8DF1
+跲 > jiá; #8DF2
+跳 > tiào; #8DF3
+跴 > căi; #8DF4
+践 > jiàn; #8DF5
+跶 > tà; #8DF6
+跷 > qiāo; #8DF7
+跸 > bì; #8DF8
+跹 > xiān; #8DF9
+跺 > dùo; #8DFA
+跻 > jī; #8DFB
+跼 > jú; #8DFC
+跽 > jì; #8DFD
+跾 > shú; #8DFE
+跿 > tú; #8DFF
+踀 > chù; #8E00
+踁 > jìng; #8E01
+踂 > niè; #8E02
+踃 > xiāo; #8E03
+踄 > bó; #8E04
+踅 > chì; #8E05
+踆 > qūn; #8E06
+踇 > mŏu; #8E07
+踈 > shū; #8E08
+踉 > láng; #8E09
+踊 > yŏng; #8E0A
+踋 > jiăo; #8E0B
+踌 > chóu; #8E0C
+踍 > qiāo; #8E0D
+踏 > tà; #8E0F
+踐 > jiàn; #8E10
+踑 > qí; #8E11
+踒 > wō; #8E12
+踓 > wĕi; #8E13
+踔 > zhúo; #8E14
+踕 > jié; #8E15
+踖 > jí; #8E16
+踗 > niē; #8E17
+踘 > jú; #8E18
+踙 > jū; #8E19
+踚 > lún; #8E1A
+踛 > lù; #8E1B
+踜 > lèng; #8E1C
+踝 > huái; #8E1D
+踞 > jù; #8E1E
+踟 > chí; #8E1F
+踠 > wăn; #8E20
+踡 > quán; #8E21
+踢 > tī; #8E22
+踣 > bó; #8E23
+踤 > zú; #8E24
+踥 > qiè; #8E25
+踦 > jĭ; #8E26
+踧 > cù; #8E27
+踨 > zōng; #8E28
+踩 > căi; #8E29
+踪 > zōng; #8E2A
+踫 > pèng; #8E2B
+踬 > zhì; #8E2C
+踭 > zhēng; #8E2D
+踮 > diăn; #8E2E
+踯 > zhí; #8E2F
+踰 > yú; #8E30
+踱 > dùo; #8E31
+踲 > dùn; #8E32
+踳 > chŭn; #8E33
+踴 > yŏng; #8E34
+踵 > zhŏng; #8E35
+踶 > dì; #8E36
+踷 > zhĕ; #8E37
+踸 > chĕn; #8E38
+踹 > chuài; #8E39
+踺 > jiàn; #8E3A
+踻 > guā; #8E3B
+踼 > táng; #8E3C
+踽 > jŭ; #8E3D
+踾 > fú; #8E3E
+踿 > zú; #8E3F
+蹀 > dié; #8E40
+蹁 > pián; #8E41
+蹂 > róu; #8E42
+蹃 > nùo; #8E43
+蹄 > tí; #8E44
+蹅 > chă; #8E45
+蹆 > tŭi; #8E46
+蹇 > jiăn; #8E47
+蹈 > dào; #8E48
+蹉 > cūo; #8E49
+蹊 > xī; #8E4A
+蹋 > tà; #8E4B
+蹌 > qiāng; #8E4C
+蹍 > zhăn; #8E4D
+蹎 > diān; #8E4E
+蹏 > tí; #8E4F
+蹐 > jí; #8E50
+蹑 > niè; #8E51
+蹒 > mán; #8E52
+蹓 > līu; #8E53
+蹔 > zhàn; #8E54
+蹕 > bì; #8E55
+蹖 > chōng; #8E56
+蹗 > lù; #8E57
+蹘 > liáo; #8E58
+蹙 > cù; #8E59
+蹚 > tāng; #8E5A
+蹛 > dài; #8E5B
+蹜 > sūo; #8E5C
+蹝 > xĭ; #8E5D
+蹞 > kŭi; #8E5E
+蹟 > jī; #8E5F
+蹠 > zhí; #8E60
+蹡 > qiāng; #8E61
+蹢 > dí; #8E62
+蹣 > mán; #8E63
+蹤 > zōng; #8E64
+蹥 > lián; #8E65
+蹦 > bèng; #8E66
+蹧 > zāo; #8E67
+蹨 > niăn; #8E68
+蹩 > bié; #8E69
+蹪 > túi; #8E6A
+蹫 > jú; #8E6B
+蹬 > dèng; #8E6C
+蹭 > cèng; #8E6D
+蹮 > xiān; #8E6E
+蹯 > fán; #8E6F
+蹰 > chú; #8E70
+蹱 > zhōng; #8E71
+蹲 > dūn; #8E72
+蹳 > bō; #8E73
+蹴 > cù; #8E74
+蹵 > zú; #8E75
+蹶 > jué; #8E76
+蹷 > jué; #8E77
+蹸 > lìn; #8E78
+蹹 > tà; #8E79
+蹺 > qiāo; #8E7A
+蹻 > qiāo; #8E7B
+蹼 > pú; #8E7C
+蹽 > liāo; #8E7D
+蹾 > dūn; #8E7E
+蹿 > cuān; #8E7F
+躀 > kuàng; #8E80
+躁 > zào; #8E81
+躂 > tà; #8E82
+躃 > bì; #8E83
+躄 > bì; #8E84
+躅 > zhú; #8E85
+躆 > jù; #8E86
+躇 > chú; #8E87
+躈 > qiào; #8E88
+躉 > dŭn; #8E89
+躊 > chóu; #8E8A
+躋 > jī; #8E8B
+躌 > wŭ; #8E8C
+躍 > yuè; #8E8D
+躎 > niăn; #8E8E
+躏 > lìn; #8E8F
+躐 > liè; #8E90
+躑 > zhí; #8E91
+躒 > lì; #8E92
+躓 > zhì; #8E93
+躔 > chán; #8E94
+躕 > chú; #8E95
+躖 > duàn; #8E96
+躗 > wèi; #8E97
+躘 > lóng; #8E98
+躙 > lìn; #8E99
+躚 > xiān; #8E9A
+躛 > wèi; #8E9B
+躜 > zuān; #8E9C
+躝 > lán; #8E9D
+躞 > xiè; #8E9E
+躟 > ráng; #8E9F
+躠 > xiĕ; #8EA0
+躡 > niè; #8EA1
+躢 > tà; #8EA2
+躣 > qú; #8EA3
+躤 > jiè; #8EA4
+躥 > cuān; #8EA5
+躦 > zuān; #8EA6
+躧 > xĭ; #8EA7
+躨 > kúi; #8EA8
+躩 > jué; #8EA9
+躪 > lìn; #8EAA
+身 > shēn; #8EAB
+躬 > gōng; #8EAC
+躭 > dān; #8EAD
+躯 > qū; #8EAF
+躰 > tĭ; #8EB0
+躱 > dŭo; #8EB1
+躲 > dŭo; #8EB2
+躳 > gōng; #8EB3
+躴 > láng; #8EB4
+躶 > lŭo; #8EB6
+躷 > ăi; #8EB7
+躸 > jī; #8EB8
+躹 > jú; #8EB9
+躺 > tăng; #8EBA
+躽 > yăn; #8EBD
+躿 > kāng; #8EBF
+軀 > qū; #8EC0
+軁 > lóu; #8EC1
+軂 > lào; #8EC2
+軃 > tŭo; #8EC3
+軄 > zhí; #8EC4
+軆 > tĭ; #8EC6
+軇 > dào; #8EC7
+軉 > yù; #8EC9
+車 > chē; #8ECA
+軋 > yà; #8ECB
+軌 > gŭi; #8ECC
+軍 > jūn; #8ECD
+軎 > wèi; #8ECE
+軏 > yuè; #8ECF
+軐 > xìn; #8ED0
+軑 > dì; #8ED1
+軒 > xuān; #8ED2
+軓 > fàn; #8ED3
+軔 > rèn; #8ED4
+軕 > shān; #8ED5
+軖 > qiáng; #8ED6
+軗 > shū; #8ED7
+軘 > tún; #8ED8
+軙 > chén; #8ED9
+軚 > dài; #8EDA
+軛 > è; #8EDB
+軜 > nà; #8EDC
+軝 > qí; #8EDD
+軞 > máo; #8EDE
+軟 > ruăn; #8EDF
+軠 > rèn; #8EE0
+軡 > făn; #8EE1
+転 > zhuăn; #8EE2
+軣 > hōng; #8EE3
+軤 > hū; #8EE4
+軥 > qú; #8EE5
+軦 > huàng; #8EE6
+軧 > dĭ; #8EE7
+軨 > líng; #8EE8
+軩 > dài; #8EE9
+軪 > āo; #8EEA
+軫 > zhĕn; #8EEB
+軬 > fàn; #8EEC
+軭 > kuāng; #8EED
+軮 > ăng; #8EEE
+軯 > pēng; #8EEF
+軰 > bèi; #8EF0
+軱 > gū; #8EF1
+軲 > kū; #8EF2
+軳 > páo; #8EF3
+軴 > zhù; #8EF4
+軵 > rŏng; #8EF5
+軶 > è; #8EF6
+軷 > bá; #8EF7
+軸 > zhóu; #8EF8
+軹 > zhĭ; #8EF9
+軺 > yáo; #8EFA
+軻 > kē; #8EFB
+軼 > yì; #8EFC
+軽 > qīng; #8EFD
+軾 > shì; #8EFE
+軿 > píng; #8EFF
+輀 > ér; #8F00
+輁 > qíong; #8F01
+輂 > jú; #8F02
+較 > jiào; #8F03
+輄 > guāng; #8F04
+輅 > lù; #8F05
+輆 > kăi; #8F06
+輇 > quán; #8F07
+輈 > zhōu; #8F08
+載 > zài; #8F09
+輊 > zhì; #8F0A
+輋 > shē; #8F0B
+輌 > liàng; #8F0C
+輍 > yù; #8F0D
+輎 > shāo; #8F0E
+輏 > yóu; #8F0F
+輐 > huăn; #8F10
+輑 > yŭn; #8F11
+輒 > zhé; #8F12
+輓 > wăn; #8F13
+輔 > fŭ; #8F14
+輕 > qīng; #8F15
+輖 > zhōu; #8F16
+輗 > ní; #8F17
+輘 > líng; #8F18
+輙 > zhé; #8F19
+輚 > zhàn; #8F1A
+輛 > liàng; #8F1B
+輜 > zī; #8F1C
+輝 > hūi; #8F1D
+輞 > wăng; #8F1E
+輟 > chùo; #8F1F
+輠 > gŭo; #8F20
+輡 > kăn; #8F21
+輢 > yĭ; #8F22
+輣 > péng; #8F23
+輤 > qiàn; #8F24
+輥 > gŭn; #8F25
+輦 > niăn; #8F26
+輧 > pián; #8F27
+輨 > guăn; #8F28
+輩 > bèi; #8F29
+輪 > lún; #8F2A
+輫 > pái; #8F2B
+輬 > liáng; #8F2C
+輭 > ruăn; #8F2D
+輮 > róu; #8F2E
+輯 > jí; #8F2F
+輰 > yáng; #8F30
+輱 > xián; #8F31
+輲 > chuán; #8F32
+輳 > còu; #8F33
+輴 > qūn; #8F34
+輵 > gé; #8F35
+輶 > yóu; #8F36
+輷 > hōng; #8F37
+輸 > shū; #8F38
+輹 > fù; #8F39
+輺 > zī; #8F3A
+輻 > fú; #8F3B
+輼 > wēn; #8F3C
+輽 > bèn; #8F3D
+輾 > zhăn; #8F3E
+輿 > yú; #8F3F
+轀 > wēn; #8F40
+轁 > tāo; #8F41
+轂 > gŭ; #8F42
+轃 > zhēn; #8F43
+轄 > xiá; #8F44
+轅 > yuán; #8F45
+轆 > lù; #8F46
+轇 > jīu; #8F47
+轈 > cháo; #8F48
+轉 > zhuăn; #8F49
+轊 > wèi; #8F4A
+轋 > hún; #8F4B
+轍 > chè; #8F4D
+轎 > jiào; #8F4E
+轏 > zhàn; #8F4F
+轐 > pú; #8F50
+轑 > lăo; #8F51
+轒 > fén; #8F52
+轓 > fān; #8F53
+轔 > lín; #8F54
+轕 > gé; #8F55
+轖 > sè; #8F56
+轗 > kăn; #8F57
+轘 > huàn; #8F58
+轙 > yĭ; #8F59
+轚 > jí; #8F5A
+轛 > dùi; #8F5B
+轜 > ér; #8F5C
+轝 > yú; #8F5D
+轞 > xiàn; #8F5E
+轟 > hōng; #8F5F
+轠 > lĕi; #8F60
+轡 > pèi; #8F61
+轢 > lì; #8F62
+轣 > lì; #8F63
+轤 > lú; #8F64
+轥 > lìn; #8F65
+车 > chē; #8F66
+轧 > yà; #8F67
+轨 > gŭi; #8F68
+轩 > xuān; #8F69
+轪 > dì; #8F6A
+轫 > rèn; #8F6B
+转 > zhuăn; #8F6C
+轭 > è; #8F6D
+轮 > lún; #8F6E
+软 > ruăn; #8F6F
+轰 > hōng; #8F70
+轱 > kū; #8F71
+轲 > kē; #8F72
+轳 > lú; #8F73
+轴 > zhóu; #8F74
+轵 > zhĭ; #8F75
+轶 > yì; #8F76
+轷 > hū; #8F77
+轸 > zhĕn; #8F78
+轹 > lì; #8F79
+轺 > yáo; #8F7A
+轻 > qīng; #8F7B
+轼 > shì; #8F7C
+载 > zài; #8F7D
+轾 > zhì; #8F7E
+轿 > jiào; #8F7F
+辀 > zhōu; #8F80
+辁 > quán; #8F81
+辂 > lù; #8F82
+较 > jiào; #8F83
+辄 > zhé; #8F84
+辅 > fŭ; #8F85
+辆 > liàng; #8F86
+辇 > niăn; #8F87
+辈 > bèi; #8F88
+辉 > hūi; #8F89
+辊 > gŭn; #8F8A
+辋 > wăng; #8F8B
+辌 > liáng; #8F8C
+辍 > chùo; #8F8D
+辎 > zī; #8F8E
+辏 > còu; #8F8F
+辐 > fú; #8F90
+辑 > jí; #8F91
+辒 > wēn; #8F92
+输 > shū; #8F93
+辔 > pèi; #8F94
+辕 > yuán; #8F95
+辖 > xiá; #8F96
+辗 > zhăn; #8F97
+辘 > lù; #8F98
+辙 > chè; #8F99
+辚 > lín; #8F9A
+辛 > xīn; #8F9B
+辜 > gū; #8F9C
+辝 > cí; #8F9D
+辞 > cí; #8F9E
+辟 > pì; #8F9F
+辠 > zùi; #8FA0
+辡 > biàn; #8FA1
+辢 > là; #8FA2
+辣 > là; #8FA3
+辤 > cí; #8FA4
+辥 > xuē; #8FA5
+辦 > bàn; #8FA6
+辧 > biàn; #8FA7
+辨 > biàn; #8FA8
+辩 > biàn; #8FA9
+辫 > biàn; #8FAB
+辬 > bān; #8FAC
+辭 > cí; #8FAD
+辮 > biàn; #8FAE
+辯 > biàn; #8FAF
+辰 > chén; #8FB0
+辱 > rù; #8FB1
+農 > nóng; #8FB2
+辳 > nóng; #8FB3
+辴 > zhĕn; #8FB4
+辵 > chùo; #8FB5
+辶 > chùo; #8FB6
+辸 > réng; #8FB8
+边 > biān; #8FB9
+辺 > biān; #8FBA
+辽 > liáo; #8FBD
+达 > dá; #8FBE
+辿 > chān; #8FBF
+迀 > gān; #8FC0
+迁 > qiān; #8FC1
+迂 > yū; #8FC2
+迃 > yū; #8FC3
+迄 > qì; #8FC4
+迅 > xùn; #8FC5
+迆 > yĭ; #8FC6
+过 > gùo; #8FC7
+迈 > mài; #8FC8
+迉 > qí; #8FC9
+迊 > zā; #8FCA
+迋 > wàng; #8FCB
+迌 > jia; #8FCC
+迍 > zhūn; #8FCD
+迎 > yíng; #8FCE
+迏 > tì; #8FCF
+运 > yùn; #8FD0
+近 > jìn; #8FD1
+迒 > háng; #8FD2
+迓 > yà; #8FD3
+返 > făn; #8FD4
+迕 > wù; #8FD5
+迖 > dá; #8FD6
+迗 > é; #8FD7
+还 > huán; #8FD8
+这 > zhè; #8FD9
+进 > jìn; #8FDB
+远 > yuăn; #8FDC
+违 > wéi; #8FDD
+连 > lián; #8FDE
+迟 > chí; #8FDF
+迠 > chè; #8FE0
+迡 > nì; #8FE1
+迢 > tiáo; #8FE2
+迣 > zhì; #8FE3
+迤 > yĭ; #8FE4
+迥 > jĭong; #8FE5
+迦 > jiā; #8FE6
+迧 > chén; #8FE7
+迨 > dài; #8FE8
+迩 > ĕr; #8FE9
+迪 > dí; #8FEA
+迫 > pò; #8FEB
+迬 > wăng; #8FEC
+迭 > dié; #8FED
+迮 > zé; #8FEE
+迯 > táo; #8FEF
+述 > shù; #8FF0
+迱 > túo; #8FF1
+迳 > jìng; #8FF3
+迴 > húi; #8FF4
+迵 > tóng; #8FF5
+迶 > yòu; #8FF6
+迷 > mí; #8FF7
+迸 > bèng; #8FF8
+迹 > jī; #8FF9
+迺 > năi; #8FFA
+迻 > yí; #8FFB
+迼 > jié; #8FFC
+追 > zhūi; #8FFD
+迾 > liè; #8FFE
+迿 > xùn; #8FFF
+退 > tùi; #9000
+送 > sòng; #9001
+适 > guā; #9002
+逃 > táo; #9003
+逄 > páng; #9004
+逅 > hòu; #9005
+逆 > nì; #9006
+逇 > dùn; #9007
+逈 > jĭong; #9008
+选 > xuăn; #9009
+逊 > xùn; #900A
+逋 > bū; #900B
+逌 > yóu; #900C
+逍 > xiāo; #900D
+逎 > qíu; #900E
+透 > tòu; #900F
+逐 > zhú; #9010
+逑 > qíu; #9011
+递 > dì; #9012
+逓 > dì; #9013
+途 > tú; #9014
+逕 > jìng; #9015
+逖 > tì; #9016
+逗 > dòu; #9017
+逘 > yĭ; #9018
+這 > zhè; #9019
+通 > tōng; #901A
+逛 > guàng; #901B
+逜 > wù; #901C
+逝 > shì; #901D
+逞 > chĕng; #901E
+速 > sù; #901F
+造 > zào; #9020
+逡 > qūn; #9021
+逢 > féng; #9022
+連 > lián; #9023
+逤 > sùo; #9024
+逥 > húi; #9025
+逦 > lĭ; #9026
+逨 > lái; #9028
+逩 > bèn; #9029
+逪 > cùo; #902A
+逫 > jué; #902B
+逬 > bèng; #902C
+逭 > huàn; #902D
+逮 > dài; #902E
+逯 > lù; #902F
+逰 > yóu; #9030
+週 > zhōu; #9031
+進 > jìn; #9032
+逳 > yù; #9033
+逴 > chùo; #9034
+逵 > kúi; #9035
+逶 > wēi; #9036
+逷 > tì; #9037
+逸 > yì; #9038
+逹 > dá; #9039
+逺 > yuăn; #903A
+逻 > lúo; #903B
+逼 > bī; #903C
+逽 > nùo; #903D
+逾 > yú; #903E
+逿 > dàng; #903F
+遀 > súi; #9040
+遁 > dùn; #9041
+遂 > sùi; #9042
+遃 > yăn; #9043
+遄 > chuán; #9044
+遅 > chí; #9045
+遆 > tí; #9046
+遇 > yù; #9047
+遈 > shí; #9048
+遉 > zhēn; #9049
+遊 > yóu; #904A
+運 > yùn; #904B
+遌 > è; #904C
+遍 > biàn; #904D
+過 > gùo; #904E
+遏 > è; #904F
+遐 > xiá; #9050
+遑 > huáng; #9051
+遒 > qíu; #9052
+道 > dào; #9053
+達 > dá; #9054
+違 > wéi; #9055
+遗 > yí; #9057
+遘 > gòu; #9058
+遙 > yáo; #9059
+遚 > chù; #905A
+遛 > líu; #905B
+遜 > xùn; #905C
+遝 > tà; #905D
+遞 > dì; #905E
+遟 > chí; #905F
+遠 > yuăn; #9060
+遡 > sù; #9061
+遢 > tà; #9062
+遣 > qiăn; #9063
+遥 > yáo; #9065
+遦 > guàn; #9066
+遧 > zhāng; #9067
+遨 > áo; #9068
+適 > shì; #9069
+遪 > cè; #906A
+遫 > chì; #906B
+遬 > sù; #906C
+遭 > zāo; #906D
+遮 > zhē; #906E
+遯 > dùn; #906F
+遰 > dì; #9070
+遱 > lóu; #9071
+遲 > chí; #9072
+遳 > cūo; #9073
+遴 > lín; #9074
+遵 > zūn; #9075
+遶 > rào; #9076
+遷 > qiān; #9077
+選 > xuăn; #9078
+遹 > yù; #9079
+遺 > yí; #907A
+遻 > wù; #907B
+遼 > liáo; #907C
+遽 > jù; #907D
+遾 > shì; #907E
+避 > bì; #907F
+邀 > yāo; #9080
+邁 > mài; #9081
+邂 > xiè; #9082
+邃 > sùi; #9083
+還 > huán; #9084
+邅 > zhān; #9085
+邆 > téng; #9086
+邇 > ĕr; #9087
+邈 > miăo; #9088
+邉 > biān; #9089
+邊 > biān; #908A
+邋 > lá; #908B
+邌 > lí; #908C
+邍 > yuán; #908D
+邎 > yáo; #908E
+邏 > lúo; #908F
+邐 > lĭ; #9090
+邑 > yì; #9091
+邒 > tíng; #9092
+邓 > dèng; #9093
+邔 > qĭ; #9094
+邕 > yōng; #9095
+邖 > shān; #9096
+邗 > hán; #9097
+邘 > yú; #9098
+邙 > máng; #9099
+邚 > rú; #909A
+邛 > qíong; #909B
+邝 > kuàng; #909D
+邞 > fū; #909E
+邟 > kàng; #909F
+邠 > bīn; #90A0
+邡 > fāng; #90A1
+邢 > xíng; #90A2
+那 > nà; #90A3
+邤 > xin; #90A4
+邥 > shĕn; #90A5
+邦 > bāng; #90A6
+邧 > yuán; #90A7
+邨 > cūn; #90A8
+邩 > hŭo; #90A9
+邪 > xié; #90AA
+邫 > bāng; #90AB
+邬 > wū; #90AC
+邭 > jù; #90AD
+邮 > yóu; #90AE
+邯 > hán; #90AF
+邰 > tái; #90B0
+邱 > qīu; #90B1
+邲 > bì; #90B2
+邳 > péi; #90B3
+邴 > bĭng; #90B4
+邵 > shào; #90B5
+邶 > bèi; #90B6
+邷 > wă; #90B7
+邸 > dĭ; #90B8
+邹 > zōu; #90B9
+邺 > yè; #90BA
+邻 > lín; #90BB
+邼 > kuāng; #90BC
+邽 > gūi; #90BD
+邾 > zhū; #90BE
+邿 > shī; #90BF
+郀 > kū; #90C0
+郁 > yù; #90C1
+郂 > gāi; #90C2
+郃 > gé; #90C3
+郄 > xì; #90C4
+郅 > zhì; #90C5
+郆 > jí; #90C6
+郇 > xún; #90C7
+郈 > hòu; #90C8
+郉 > xíng; #90C9
+郊 > jiāo; #90CA
+郋 > xí; #90CB
+郌 > gūi; #90CC
+郍 > núo; #90CD
+郎 > láng; #90CE
+郏 > jiá; #90CF
+郐 > kuài; #90D0
+郑 > zhèng; #90D1
+郓 > yùn; #90D3
+郔 > yán; #90D4
+郕 > chéng; #90D5
+郖 > dōu; #90D6
+郗 > chī; #90D7
+郘 > lǚ; #90D8
+郙 > fŭ; #90D9
+郚 > wú; #90DA
+郛 > fú; #90DB
+郜 > gào; #90DC
+郝 > hăo; #90DD
+郞 > láng; #90DE
+郟 > jiá; #90DF
+郠 > gĕng; #90E0
+郡 > jùn; #90E1
+郢 > yĭng; #90E2
+郣 > bó; #90E3
+郤 > xì; #90E4
+郥 > bèi; #90E5
+郦 > lì; #90E6
+郧 > yún; #90E7
+部 > bù; #90E8
+郩 > xiáo; #90E9
+郪 > qī; #90EA
+郫 > pí; #90EB
+郬 > qīng; #90EC
+郭 > gūo; #90ED
+郮 > zhou; #90EE
+郯 > tán; #90EF
+郰 > zōu; #90F0
+郱 > píng; #90F1
+郲 > lái; #90F2
+郳 > ní; #90F3
+郴 > chēn; #90F4
+郵 > yóu; #90F5
+郶 > bù; #90F6
+郷 > xiāng; #90F7
+郸 > dān; #90F8
+郹 > jú; #90F9
+郺 > yōng; #90FA
+郻 > qiāo; #90FB
+郼 > yī; #90FC
+都 > dū; #90FD
+郾 > yăn; #90FE
+郿 > méi; #90FF
+鄀 > rùo; #9100
+鄁 > bèi; #9101
+鄂 > è; #9102
+鄃 > yú; #9103
+鄄 > juàn; #9104
+鄅 > yŭ; #9105
+鄆 > yùn; #9106
+鄇 > hòu; #9107
+鄈 > kúi; #9108
+鄉 > xiāng; #9109
+鄊 > xiāng; #910A
+鄋 > sōu; #910B
+鄌 > táng; #910C
+鄍 > míng; #910D
+鄎 > xì; #910E
+鄏 > rù; #910F
+鄐 > chù; #9110
+鄑 > zī; #9111
+鄒 > zōu; #9112
+鄓 > jú; #9113
+鄔 > wū; #9114
+鄕 > xiāng; #9115
+鄖 > yún; #9116
+鄗 > hào; #9117
+鄘 > yōng; #9118
+鄙 > bĭ; #9119
+鄚 > mò; #911A
+鄛 > cháo; #911B
+鄜 > fū; #911C
+鄝 > liăo; #911D
+鄞 > yín; #911E
+鄟 > zhuān; #911F
+鄠 > hù; #9120
+鄡 > qiāo; #9121
+鄢 > yān; #9122
+鄣 > zhāng; #9123
+鄤 > fàn; #9124
+鄥 > qiāo; #9125
+鄦 > xŭ; #9126
+鄧 > dèng; #9127
+鄨 > bì; #9128
+鄩 > xín; #9129
+鄪 > bì; #912A
+鄫 > céng; #912B
+鄬 > wéi; #912C
+鄭 > zhèng; #912D
+鄮 > mào; #912E
+鄯 > shàn; #912F
+鄰 > lín; #9130
+鄱 > pó; #9131
+鄲 > dān; #9132
+鄳 > méng; #9133
+鄴 > yè; #9134
+鄵 > cāo; #9135
+鄶 > kuài; #9136
+鄷 > fēng; #9137
+鄸 > méng; #9138
+鄹 > zōu; #9139
+鄺 > kuàng; #913A
+鄻 > lián; #913B
+鄼 > zàn; #913C
+鄽 > chán; #913D
+鄾 > yōu; #913E
+鄿 > qí; #913F
+酀 > yān; #9140
+酁 > chán; #9141
+酂 > zàn; #9142
+酃 > líng; #9143
+酄 > huān; #9144
+酅 > xī; #9145
+酆 > fēng; #9146
+酇 > zàn; #9147
+酈 > lì; #9148
+酉 > yŏu; #9149
+酊 > dĭng; #914A
+酋 > qíu; #914B
+酌 > zhúo; #914C
+配 > pèi; #914D
+酎 > zhòu; #914E
+酏 > yí; #914F
+酐 > hăng; #9150
+酑 > yŭ; #9151
+酒 > jĭu; #9152
+酓 > yăn; #9153
+酔 > zùi; #9154
+酕 > máo; #9155
+酖 > dān; #9156
+酗 > xù; #9157
+酘 > tóu; #9158
+酙 > zhēn; #9159
+酚 > fēn; #915A
+酝 > yùn; #915D
+酞 > tài; #915E
+酟 > tiān; #915F
+酠 > qiă; #9160
+酡 > túo; #9161
+酢 > zùo; #9162
+酣 > hān; #9163
+酤 > gū; #9164
+酥 > sū; #9165
+酦 > pò; #9166
+酧 > chóu; #9167
+酨 > zài; #9168
+酩 > míng; #9169
+酪 > lùo; #916A
+酫 > chùo; #916B
+酬 > chóu; #916C
+酭 > yòu; #916D
+酮 > tóng; #916E
+酯 > zhĭ; #916F
+酰 > xiān; #9170
+酱 > jiàng; #9171
+酲 > chéng; #9172
+酳 > yìn; #9173
+酴 > tú; #9174
+酵 > xiào; #9175
+酶 > méi; #9176
+酷 > kù; #9177
+酸 > suān; #9178
+酹 > lèi; #9179
+酺 > pú; #917A
+酻 > zùi; #917B
+酼 > hăi; #917C
+酽 > yàn; #917D
+酾 > xĭ; #917E
+酿 > niàng; #917F
+醀 > wéi; #9180
+醁 > lù; #9181
+醂 > lăn; #9182
+醃 > yān; #9183
+醄 > táo; #9184
+醅 > pēi; #9185
+醆 > zhăn; #9186
+醇 > chún; #9187
+醈 > tán; #9188
+醉 > zùi; #9189
+醊 > chùo; #918A
+醋 > cù; #918B
+醌 > kūn; #918C
+醍 > tí; #918D
+醎 > mián; #918E
+醏 > dū; #918F
+醐 > hú; #9190
+醑 > xŭ; #9191
+醒 > xĭng; #9192
+醓 > tăn; #9193
+醔 > jīu; #9194
+醕 > chún; #9195
+醖 > yùn; #9196
+醗 > pò; #9197
+醘 > kè; #9198
+醙 > sōu; #9199
+醚 > mí; #919A
+醛 > quán; #919B
+醜 > chŏu; #919C
+醝 > cúo; #919D
+醞 > yùn; #919E
+醟 > yòng; #919F
+醠 > àng; #91A0
+醡 > zhà; #91A1
+醢 > hăi; #91A2
+醣 > táng; #91A3
+醤 > jiàng; #91A4
+醥 > piăo; #91A5
+醦 > shăn; #91A6
+醧 > yù; #91A7
+醨 > lí; #91A8
+醩 > záo; #91A9
+醪 > láo; #91AA
+醫 > yī; #91AB
+醬 > jiàng; #91AC
+醭 > pū; #91AD
+醮 > jiào; #91AE
+醯 > xī; #91AF
+醰 > tán; #91B0
+醱 > pò; #91B1
+醲 > nóng; #91B2
+醳 > yì; #91B3
+醴 > lĭ; #91B4
+醵 > jù; #91B5
+醶 > jiào; #91B6
+醷 > yì; #91B7
+醸 > niàng; #91B8
+醹 > rú; #91B9
+醺 > xūn; #91BA
+醻 > chóu; #91BB
+醼 > yàn; #91BC
+醽 > líng; #91BD
+醾 > mí; #91BE
+醿 > mí; #91BF
+釀 > niàng; #91C0
+釁 > xìn; #91C1
+釂 > jiào; #91C2
+釃 > xĭ; #91C3
+釄 > mí; #91C4
+釅 > yàn; #91C5
+釆 > biàn; #91C6
+采 > căi; #91C7
+釈 > shì; #91C8
+釉 > yòu; #91C9
+释 > shì; #91CA
+釋 > shì; #91CB
+里 > lĭ; #91CC
+重 > zhòng; #91CD
+野 > yĕ; #91CE
+量 > liàng; #91CF
+釐 > lí; #91D0
+金 > jīn; #91D1
+釒 > jīn' 'zì' 'páng; #91D2
+釓 > qíu; #91D3
+釔 > yĭ; #91D4
+釕 > diăo; #91D5
+釖 > dāo; #91D6
+釗 > zhāo; #91D7
+釘 > dīng; #91D8
+釙 > pò; #91D9
+釚 > qíu; #91DA
+釛 > hé; #91DB
+釜 > fŭ; #91DC
+針 > zhēn; #91DD
+釞 > zhí; #91DE
+釟 > bā; #91DF
+釠 > luàn; #91E0
+釡 > fŭ; #91E1
+釢 > nái; #91E2
+釣 > diào; #91E3
+釤 > shàn; #91E4
+釥 > qiăo; #91E5
+釦 > kòu; #91E6
+釧 > chuàn; #91E7
+釨 > zĭ; #91E8
+釩 > fán; #91E9
+釪 > yú; #91EA
+釫 > huá; #91EB
+釬 > hàn; #91EC
+釭 > gōng; #91ED
+釮 > qí; #91EE
+釯 > máng; #91EF
+釰 > rì; #91F0
+釱 > dì; #91F1
+釲 > sì; #91F2
+釳 > xì; #91F3
+釴 > yì; #91F4
+釵 > chāi; #91F5
+釶 > shī; #91F6
+釷 > tŭ; #91F7
+釸 > xì; #91F8
+釹 > nǚ; #91F9
+釺 > qiān; #91FA
+釼 > jiàn; #91FC
+釽 > pī; #91FD
+釾 > yé; #91FE
+釿 > yín; #91FF
+鈀 > bă; #9200
+鈁 > fāng; #9201
+鈂 > chén; #9202
+鈃 > xíng; #9203
+鈄 > tŏu; #9204
+鈅 > yuè; #9205
+鈆 > yán; #9206
+鈇 > fū; #9207
+鈈 > pī; #9208
+鈉 > nà; #9209
+鈊 > xīn; #920A
+鈋 > é; #920B
+鈌 > jué; #920C
+鈍 > dùn; #920D
+鈎 > gōu; #920E
+鈏 > yĭn; #920F
+鈐 > qián; #9210
+鈑 > băn; #9211
+鈒 > jí; #9212
+鈓 > rén; #9213
+鈔 > chāo; #9214
+鈕 > nĭu; #9215
+鈖 > fēn; #9216
+鈗 > yŭn; #9217
+鈘 > jĭ; #9218
+鈙 > qín; #9219
+鈚 > pí; #921A
+鈛 > gūo; #921B
+鈜 > hóng; #921C
+鈝 > yín; #921D
+鈞 > jūn; #921E
+鈟 > shī; #921F
+鈠 > yì; #9220
+鈡 > zhōng; #9221
+鈢 > niē; #9222
+鈣 > gài; #9223
+鈤 > rì; #9224
+鈥 > húo; #9225
+鈦 > tài; #9226
+鈧 > kàng; #9227
+鈬 > dúo; #922C
+鈭 > zī; #922D
+鈮 > nĭ; #922E
+鈯 > tú; #922F
+鈰 > shì; #9230
+鈱 > mín; #9231
+鈲 > gū; #9232
+鈳 > ē; #9233
+鈴 > líng; #9234
+鈵 > bìng; #9235
+鈶 > yí; #9236
+鈷 > gū; #9237
+鈸 > bá; #9238
+鈹 > pī; #9239
+鈺 > yù; #923A
+鈻 > sì; #923B
+鈼 > zúo; #923C
+鈽 > bù; #923D
+鈾 > yóu; #923E
+鈿 > diàn; #923F
+鉀 > jiă; #9240
+鉁 > zhēn; #9241
+鉂 > shĭ; #9242
+鉃 > shì; #9243
+鉄 > tiĕ; #9244
+鉅 > jù; #9245
+鉆 > zhān; #9246
+鉇 > shī; #9247
+鉈 > shé; #9248
+鉉 > xuàn; #9249
+鉊 > zhāo; #924A
+鉋 > bào; #924B
+鉌 > hé; #924C
+鉍 > bì; #924D
+鉎 > shēng; #924E
+鉏 > chú; #924F
+鉐 > shí; #9250
+鉑 > bó; #9251
+鉒 > zhù; #9252
+鉓 > chì; #9253
+鉔 > zā; #9254
+鉕 > pō; #9255
+鉖 > tóng; #9256
+鉗 > qián; #9257
+鉘 > fú; #9258
+鉙 > zhăi; #9259
+鉚 > lĭu; #925A
+鉛 > qiān; #925B
+鉜 > fú; #925C
+鉝 > lì; #925D
+鉞 > yuè; #925E
+鉟 > pī; #925F
+鉠 > yāng; #9260
+鉡 > bàn; #9261
+鉢 > bō; #9262
+鉣 > jié; #9263
+鉤 > gōu; #9264
+鉥 > shù; #9265
+鉦 > zhēng; #9266
+鉧 > mŭ; #9267
+鉨 > nĭ; #9268
+鉩 > niē; #9269
+鉪 > dì; #926A
+鉫 > jiā; #926B
+鉬 > mù; #926C
+鉭 > dàn; #926D
+鉮 > shēn; #926E
+鉯 > yĭ; #926F
+鉰 > sī; #9270
+鉱 > kuàng; #9271
+鉲 > kă; #9272
+鉳 > bĕi; #9273
+鉴 > jiàn; #9274
+鉵 > tóng; #9275
+鉶 > xíng; #9276
+鉷 > hóng; #9277
+鉸 > jiăo; #9278
+鉹 > chĭ; #9279
+鉺 > èr; #927A
+鉻 > gè; #927B
+鉼 > bĭng; #927C
+鉽 > shì; #927D
+鉾 > móu; #927E
+鉿 > jiá; #927F
+銀 > yín; #9280
+銁 > jūn; #9281
+銂 > zhōu; #9282
+銃 > chòng; #9283
+銄 > shàng; #9284
+銅 > tóng; #9285
+銆 > mò; #9286
+銇 > lèi; #9287
+銈 > jī; #9288
+銉 > yù; #9289
+銊 > xù; #928A
+銋 > rén; #928B
+銌 > zùn; #928C
+銍 > zhì; #928D
+銎 > qīong; #928E
+銏 > shàn; #928F
+銐 > chì; #9290
+銑 > xiăn; #9291
+銒 > xíng; #9292
+銓 > quán; #9293
+銔 > pī; #9294
+銕 > tiĕ; #9295
+銖 > zhū; #9296
+銗 > hóu; #9297
+銘 > míng; #9298
+銙 > kuă; #9299
+銚 > yáo; #929A
+銛 > xiān; #929B
+銜 > xián; #929C
+銝 > xīu; #929D
+銞 > jūn; #929E
+銟 > chā; #929F
+銠 > lăo; #92A0
+銡 > jí; #92A1
+銢 > pĭ; #92A2
+銣 > rŭ; #92A3
+銤 > mĭ; #92A4
+銥 > yĭ; #92A5
+銦 > yīn; #92A6
+銧 > guāng; #92A7
+銨 > ān; #92A8
+銩 > diōu; #92A9
+銪 > yŏu; #92AA
+銫 > sè; #92AB
+銬 > kào; #92AC
+銭 > qián; #92AD
+銮 > luán; #92AE
+銰 > āi; #92B0
+銱 > diào; #92B1
+銲 > hàn; #92B2
+銳 > rùi; #92B3
+銴 > shì; #92B4
+銵 > kēng; #92B5
+銶 > qíu; #92B6
+銷 > xiāo; #92B7
+銸 > zhé; #92B8
+銹 > xìu; #92B9
+銺 > zàng; #92BA
+銻 > tì; #92BB
+銼 > cùo; #92BC
+銽 > guā; #92BD
+銾 > gŏng; #92BE
+銿 > zhōng; #92BF
+鋀 > dòu; #92C0
+鋁 > lǚ; #92C1
+鋂 > méi; #92C2
+鋃 > láng; #92C3
+鋄 > wăn; #92C4
+鋅 > xīn; #92C5
+鋆 > yún; #92C6
+鋇 > bèi; #92C7
+鋈 > wù; #92C8
+鋉 > sù; #92C9
+鋊 > yù; #92CA
+鋋 > chán; #92CB
+鋌 > tĭng; #92CC
+鋍 > bó; #92CD
+鋎 > hàn; #92CE
+鋏 > jiá; #92CF
+鋐 > hóng; #92D0
+鋑 > cuān; #92D1
+鋒 > fēng; #92D2
+鋓 > chān; #92D3
+鋔 > wăn; #92D4
+鋕 > zhì; #92D5
+鋖 > sī; #92D6
+鋗 > xuān; #92D7
+鋘 > wú; #92D8
+鋙 > wú; #92D9
+鋚 > tiáo; #92DA
+鋛 > gŏng; #92DB
+鋜 > zhúo; #92DC
+鋝 > lǜe; #92DD
+鋞 > xíng; #92DE
+鋟 > qiān; #92DF
+鋠 > shèn; #92E0
+鋡 > hán; #92E1
+鋢 > lǜe; #92E2
+鋣 > xié; #92E3
+鋤 > chú; #92E4
+鋥 > zhèng; #92E5
+鋦 > jú; #92E6
+鋧 > xiàn; #92E7
+鋨 > tiĕ; #92E8
+鋩 > máng; #92E9
+鋪 > pū; #92EA
+鋫 > lí; #92EB
+鋬 > pàn; #92EC
+鋭 > rùi; #92ED
+鋮 > chéng; #92EE
+鋯 > gào; #92EF
+鋰 > lĭ; #92F0
+鋱 > tè; #92F1
+鋳 > zhù; #92F3
+鋵 > tū; #92F5
+鋶 > lĭu; #92F6
+鋷 > zùi; #92F7
+鋸 > jù; #92F8
+鋹 > chăng; #92F9
+鋺 > yuān; #92FA
+鋻 > jiàn; #92FB
+鋼 > gāng; #92FC
+鋽 > diào; #92FD
+鋾 > táo; #92FE
+鋿 > cháng; #92FF
+錀 > lún; #9300
+錁 > kuă; #9301
+錂 > líng; #9302
+錃 > bēi; #9303
+錄 > lù; #9304
+錅 > lí; #9305
+錆 > qiāng; #9306
+錇 > póu; #9307
+錈 > juàn; #9308
+錉 > mín; #9309
+錊 > zùi; #930A
+錋 > péng; #930B
+錌 > àn; #930C
+錍 > pí; #930D
+錎 > xiàn; #930E
+錏 > yà; #930F
+錐 > zhūi; #9310
+錑 > lèi; #9311
+錒 > ā; #9312
+錓 > kōng; #9313
+錔 > tà; #9314
+錕 > kūn; #9315
+錖 > dŭ; #9316
+錗 > wèi; #9317
+錘 > chúi; #9318
+錙 > zī; #9319
+錚 > zhēng; #931A
+錛 > bēn; #931B
+錜 > niē; #931C
+錝 > cóng; #931D
+錞 > qún; #931E
+錟 > tán; #931F
+錠 > dìng; #9320
+錡 > qí; #9321
+錢 > qián; #9322
+錣 > zhúo; #9323
+錤 > qí; #9324
+錥 > yù; #9325
+錦 > jĭn; #9326
+錧 > guăn; #9327
+錨 > máo; #9328
+錩 > chāng; #9329
+錪 > tiăn; #932A
+錫 > xí; #932B
+錬 > liàn; #932C
+錭 > táo; #932D
+錮 > gù; #932E
+錯 > cùo; #932F
+錰 > shù; #9330
+錱 > zhēn; #9331
+録 > lù; #9332
+錳 > mĕng; #9333
+錴 > lù; #9334
+錵 > huā; #9335
+錶 > biăo; #9336
+錷 > gá; #9337
+錸 > lái; #9338
+錹 > kĕn; #9339
+錼 > nài; #933C
+錽 > wăn; #933D
+錾 > zàn; #933E
+鍀 > dé; #9340
+鍁 > xiān; #9341
+鍃 > hūo; #9343
+鍄 > liàng; #9344
+鍆 > mén; #9346
+鍇 > kăi; #9347
+鍈 > yīng; #9348
+鍉 > dī; #9349
+鍊 > liàn; #934A
+鍋 > gūo; #934B
+鍌 > xiăn; #934C
+鍍 > dù; #934D
+鍎 > tú; #934E
+鍏 > wéi; #934F
+鍐 > cōng; #9350
+鍑 > fù; #9351
+鍒 > róu; #9352
+鍓 > jí; #9353
+鍔 > è; #9354
+鍕 > róu; #9355
+鍖 > chĕn; #9356
+鍗 > tí; #9357
+鍘 > zhá; #9358
+鍙 > hòng; #9359
+鍚 > yáng; #935A
+鍛 > duàn; #935B
+鍜 > xiā; #935C
+鍝 > yú; #935D
+鍞 > kēng; #935E
+鍟 > xīng; #935F
+鍠 > huáng; #9360
+鍡 > wĕi; #9361
+鍢 > fù; #9362
+鍣 > zhāo; #9363
+鍤 > chá; #9364
+鍥 > qiè; #9365
+鍦 > shé; #9366
+鍧 > hōng; #9367
+鍨 > kúi; #9368
+鍩 > tiăn; #9369
+鍪 > móu; #936A
+鍫 > qiāo; #936B
+鍬 > qiāo; #936C
+鍭 > hóu; #936D
+鍮 > tōu; #936E
+鍯 > cōng; #936F
+鍰 > huán; #9370
+鍱 > yè; #9371
+鍲 > mín; #9372
+鍳 > jiàn; #9373
+鍴 > duān; #9374
+鍵 > jiàn; #9375
+鍶 > sōng; #9376
+鍷 > kūi; #9377
+鍸 > hú; #9378
+鍹 > xuān; #9379
+鍺 > dŭo; #937A
+鍻 > jié; #937B
+鍼 > zhēn; #937C
+鍽 > biān; #937D
+鍾 > zhōng; #937E
+鍿 > zī; #937F
+鎀 > xīu; #9380
+鎁 > yé; #9381
+鎂 > mĕi; #9382
+鎃 > pài; #9383
+鎄 > āi; #9384
+鎅 > jiè; #9385
+鎇 > méi; #9387
+鎈 > chūo; #9388
+鎉 > tà; #9389
+鎊 > bàng; #938A
+鎋 > xiá; #938B
+鎌 > lián; #938C
+鎍 > sŭo; #938D
+鎎 > xì; #938E
+鎏 > líu; #938F
+鎐 > zú; #9390
+鎑 > yè; #9391
+鎒 > nòu; #9392
+鎓 > wēng; #9393
+鎔 > róng; #9394
+鎕 > táng; #9395
+鎖 > sŭo; #9396
+鎗 > qiāng; #9397
+鎘 > gé; #9398
+鎙 > shùo; #9399
+鎚 > chúi; #939A
+鎛 > bó; #939B
+鎜 > pán; #939C
+鎝 > sà; #939D
+鎞 > bì; #939E
+鎟 > săng; #939F
+鎠 > gāng; #93A0
+鎡 > zī; #93A1
+鎢 > wù; #93A2
+鎣 > yìng; #93A3
+鎤 > huăng; #93A4
+鎥 > tiáo; #93A5
+鎦 > líu; #93A6
+鎧 > kăi; #93A7
+鎨 > sŭn; #93A8
+鎩 > shā; #93A9
+鎪 > sōu; #93AA
+鎫 > wàn; #93AB
+鎬 > hào; #93AC
+鎭 > zhèn; #93AD
+鎮 > zhèn; #93AE
+鎯 > lŭo; #93AF
+鎰 > yì; #93B0
+鎱 > yuán; #93B1
+鎲 > tăng; #93B2
+鎳 > niè; #93B3
+鎴 > xí; #93B4
+鎵 > jiā; #93B5
+鎶 > gē; #93B6
+鎷 > mă; #93B7
+鎸 > juān; #93B8
+鎻 > sŭo; #93BB
+鎿 > ná; #93BF
+鏀 > lŭ; #93C0
+鏁 > sŭo; #93C1
+鏂 > ōu; #93C2
+鏃 > zú; #93C3
+鏄 > tuán; #93C4
+鏅 > xīu; #93C5
+鏆 > guàn; #93C6
+鏇 > xuàn; #93C7
+鏈 > liàn; #93C8
+鏉 > shòu; #93C9
+鏊 > áo; #93CA
+鏋 > măn; #93CB
+鏌 > mò; #93CC
+鏍 > lúo; #93CD
+鏎 > bì; #93CE
+鏏 > wèi; #93CF
+鏐 > líu; #93D0
+鏑 > dí; #93D1
+鏒 > qiāo; #93D2
+鏓 > cōng; #93D3
+鏔 > yí; #93D4
+鏕 > lù; #93D5
+鏖 > áo; #93D6
+鏗 > kēng; #93D7
+鏘 > qiāng; #93D8
+鏙 > cūi; #93D9
+鏚 > qì; #93DA
+鏛 > cháng; #93DB
+鏜 > tāng; #93DC
+鏝 > màn; #93DD
+鏞 > yōng; #93DE
+鏟 > chăn; #93DF
+鏠 > fēng; #93E0
+鏡 > jìng; #93E1
+鏢 > biāo; #93E2
+鏣 > shù; #93E3
+鏤 > lòu; #93E4
+鏥 > xìu; #93E5
+鏦 > cōng; #93E6
+鏧 > lóng; #93E7
+鏨 > zàn; #93E8
+鏩 > jiàn; #93E9
+鏪 > cáo; #93EA
+鏫 > lí; #93EB
+鏬 > xià; #93EC
+鏭 > xī; #93ED
+鏮 > kāng; #93EE
+鏰 > bèng; #93F0
+鏳 > zhēng; #93F3
+鏴 > lù; #93F4
+鏵 > huá; #93F5
+鏶 > jí; #93F6
+鏷 > pú; #93F7
+鏸 > hùi; #93F8
+鏹 > qiāng; #93F9
+鏺 > pō; #93FA
+鏻 > lín; #93FB
+鏼 > sŭo; #93FC
+鏽 > xìu; #93FD
+鏾 > săn; #93FE
+鏿 > chēng; #93FF
+鐀 > kùi; #9400
+鐁 > sī; #9401
+鐂 > lìu; #9402
+鐃 > náo; #9403
+鐄 > héng; #9404
+鐅 > piĕ; #9405
+鐆 > sùi; #9406
+鐇 > fán; #9407
+鐈 > qiáo; #9408
+鐉 > quān; #9409
+鐊 > yáng; #940A
+鐋 > tàng; #940B
+鐌 > xiàng; #940C
+鐍 > jué; #940D
+鐎 > jiāo; #940E
+鐏 > zūn; #940F
+鐐 > liáo; #9410
+鐑 > jié; #9411
+鐒 > láo; #9412
+鐓 > dùi; #9413
+鐔 > tán; #9414
+鐕 > zān; #9415
+鐖 > jī; #9416
+鐗 > jiăn; #9417
+鐘 > zhōng; #9418
+鐙 > dēng; #9419
+鐚 > yà; #941A
+鐛 > yìng; #941B
+鐜 > dùi; #941C
+鐝 > jué; #941D
+鐞 > nòu; #941E
+鐟 > tì; #941F
+鐠 > pŭ; #9420
+鐡 > tiĕ; #9421
+鐤 > dĭng; #9424
+鐥 > shàn; #9425
+鐦 > kāi; #9426
+鐧 > jiăn; #9427
+鐨 > fèi; #9428
+鐩 > sùi; #9429
+鐪 > lŭ; #942A
+鐫 > juān; #942B
+鐬 > hùi; #942C
+鐭 > yù; #942D
+鐮 > lián; #942E
+鐯 > zhúo; #942F
+鐰 > qiāo; #9430
+鐱 > qiān; #9431
+鐲 > zhúo; #9432
+鐳 > léi; #9433
+鐴 > bì; #9434
+鐵 > tiĕ; #9435
+鐶 > huán; #9436
+鐷 > yè; #9437
+鐸 > dúo; #9438
+鐹 > gŭo; #9439
+鐺 > dāng; #943A
+鐻 > jù; #943B
+鐼 > fén; #943C
+鐽 > dá; #943D
+鐾 > bèi; #943E
+鐿 > yì; #943F
+鑀 > ài; #9440
+鑁 > zōng; #9441
+鑂 > xùn; #9442
+鑃 > diào; #9443
+鑄 > zhù; #9444
+鑅 > héng; #9445
+鑆 > zhùi; #9446
+鑇 > jī; #9447
+鑈 > niē; #9448
+鑉 > tà; #9449
+鑊 > hùo; #944A
+鑋 > qìng; #944B
+鑌 > bīn; #944C
+鑍 > yīng; #944D
+鑎 > kùi; #944E
+鑏 > níng; #944F
+鑐 > xū; #9450
+鑑 > jiàn; #9451
+鑒 > jiàn; #9452
+鑔 > chă; #9454
+鑕 > zhì; #9455
+鑖 > miè; #9456
+鑗 > lí; #9457
+鑘 > léi; #9458
+鑙 > jī; #9459
+鑚 > zuàn; #945A
+鑛 > kuàng; #945B
+鑜 > shàng; #945C
+鑝 > péng; #945D
+鑞 > là; #945E
+鑟 > dú; #945F
+鑠 > shùo; #9460
+鑡 > chùo; #9461
+鑢 > lǜ; #9462
+鑣 > biāo; #9463
+鑤 > bào; #9464
+鑥 > lŭ; #9465
+鑨 > lóng; #9468
+鑩 > è; #9469
+鑪 > lú; #946A
+鑫 > xīn; #946B
+鑬 > jiàn; #946C
+鑭 > làn; #946D
+鑮 > bó; #946E
+鑯 > jiān; #946F
+鑰 > yào; #9470
+鑱 > chán; #9471
+鑲 > xiāng; #9472
+鑳 > jiàn; #9473
+鑴 > xī; #9474
+鑵 > guàn; #9475
+鑶 > cáng; #9476
+鑷 > niè; #9477
+鑸 > lĕi; #9478
+鑹 > cuàn; #9479
+鑺 > qú; #947A
+鑻 > pàn; #947B
+鑼 > lúo; #947C
+鑽 > zuàn; #947D
+鑾 > luán; #947E
+鑿 > záo; #947F
+钀 > niè; #9480
+钁 > jué; #9481
+钂 > tăng; #9482
+钃 > shŭ; #9483
+钄 > lán; #9484
+钅 > jīn; #9485
+钆 > qíu; #9486
+钇 > yĭ; #9487
+针 > zhēn; #9488
+钉 > dīng; #9489
+钊 > zhāo; #948A
+钋 > pò; #948B
+钌 > diăo; #948C
+钍 > tŭ; #948D
+钎 > qiān; #948E
+钏 > chuàn; #948F
+钐 > shàn; #9490
+钑 > jí; #9491
+钒 > fán; #9492
+钓 > diào; #9493
+钔 > mén; #9494
+钕 > nǚ; #9495
+钖 > xí; #9496
+钗 > chāi; #9497
+钘 > xíng; #9498
+钙 > gài; #9499
+钚 > bù; #949A
+钛 > tài; #949B
+钜 > jù; #949C
+钝 > dùn; #949D
+钞 > chāo; #949E
+钟 > zhōng; #949F
+钠 > nà; #94A0
+钡 > bèi; #94A1
+钢 > gāng; #94A2
+钣 > băn; #94A3
+钤 > qián; #94A4
+钥 > yào; #94A5
+钦 > qīn; #94A6
+钧 > jūn; #94A7
+钨 > wù; #94A8
+钩 > gōu; #94A9
+钪 > kàng; #94AA
+钫 > fāng; #94AB
+钬 > húo; #94AC
+钭 > tŏu; #94AD
+钮 > nĭu; #94AE
+钯 > bă; #94AF
+钰 > yù; #94B0
+钱 > qián; #94B1
+钲 > zhēng; #94B2
+钳 > qián; #94B3
+钴 > gū; #94B4
+钵 > bō; #94B5
+钶 > ē; #94B6
+钷 > pō; #94B7
+钸 > bù; #94B8
+钹 > bá; #94B9
+钺 > yuè; #94BA
+钻 > zuàn; #94BB
+钼 > mù; #94BC
+钽 > dàn; #94BD
+钾 > jiă; #94BE
+钿 > diàn; #94BF
+铀 > yóu; #94C0
+铁 > tiĕ; #94C1
+铂 > bó; #94C2
+铃 > líng; #94C3
+铄 > shùo; #94C4
+铅 > qiān; #94C5
+铆 > lĭu; #94C6
+铇 > bào; #94C7
+铈 > shì; #94C8
+铉 > xuàn; #94C9
+铊 > shé; #94CA
+铋 > bì; #94CB
+铌 > nĭ; #94CC
+铍 > pī; #94CD
+铎 > dúo; #94CE
+铏 > xíng; #94CF
+铐 > kào; #94D0
+铑 > lăo; #94D1
+铒 > èr; #94D2
+铓 > máng; #94D3
+铔 > yà; #94D4
+铕 > yŏu; #94D5
+铖 > chéng; #94D6
+铗 > jiá; #94D7
+铘 > yé; #94D8
+铙 > náo; #94D9
+铚 > zhì; #94DA
+铛 > dāng; #94DB
+铜 > tóng; #94DC
+铝 > lǚ; #94DD
+铞 > diào; #94DE
+铟 > yīn; #94DF
+铠 > kăi; #94E0
+铡 > zhá; #94E1
+铢 > zhū; #94E2
+铣 > xiăn; #94E3
+铤 > tĭng; #94E4
+铥 > dīu; #94E5
+铦 > xiān; #94E6
+铧 > huá; #94E7
+铨 > quán; #94E8
+铩 > shā; #94E9
+铪 > jiá; #94EA
+铫 > yáo; #94EB
+铬 > gè; #94EC
+铭 > míng; #94ED
+铮 > zhēng; #94EE
+铯 > sè; #94EF
+铰 > jiăo; #94F0
+铱 > yĭ; #94F1
+铲 > chăn; #94F2
+铳 > chòng; #94F3
+铴 > tàng; #94F4
+铵 > ān; #94F5
+银 > yín; #94F6
+铷 > rŭ; #94F7
+铸 > zhù; #94F8
+铹 > láo; #94F9
+铺 > pū; #94FA
+铻 > wú; #94FB
+铼 > lái; #94FC
+铽 > tè; #94FD
+链 > liàn; #94FE
+铿 > kēng; #94FF
+销 > xiāo; #9500
+锁 > sŭo; #9501
+锂 > lĭ; #9502
+锃 > zhèng; #9503
+锄 > chú; #9504
+锅 > gūo; #9505
+锆 > gào; #9506
+锇 > tiĕ; #9507
+锈 > xìu; #9508
+锉 > cùo; #9509
+锊 > lǜe; #950A
+锋 > fēng; #950B
+锌 > xīn; #950C
+锍 > lĭu; #950D
+锎 > kāi; #950E
+锏 > jiăn; #950F
+锐 > rùi; #9510
+锑 > tì; #9511
+锒 > láng; #9512
+锓 > qiān; #9513
+锔 > jú; #9514
+锕 > ā; #9515
+锖 > qiāng; #9516
+锗 > dŭo; #9517
+锘 > tiăn; #9518
+错 > cùo; #9519
+锚 > máo; #951A
+锛 > bēn; #951B
+锜 > qí; #951C
+锝 > dé; #951D
+锞 > kuă; #951E
+锟 > kūn; #951F
+锠 > chāng; #9520
+锡 > xí; #9521
+锢 > gù; #9522
+锣 > lúo; #9523
+锤 > chúi; #9524
+锥 > zhūi; #9525
+锦 > jĭn; #9526
+锧 > zhì; #9527
+锨 > xiān; #9528
+锩 > juàn; #9529
+锪 > hūo; #952A
+锫 > póu; #952B
+锬 > tán; #952C
+锭 > dìng; #952D
+键 > jiàn; #952E
+锯 > jù; #952F
+锰 > mĕng; #9530
+锱 > zī; #9531
+锲 > qiè; #9532
+锳 > yīng; #9533
+锴 > kăi; #9534
+锵 > qiāng; #9535
+锶 > sōng; #9536
+锷 > è; #9537
+锸 > chá; #9538
+锹 > qiāo; #9539
+锺 > zhōng; #953A
+锻 > duàn; #953B
+锼 > sōu; #953C
+锽 > huáng; #953D
+锾 > huán; #953E
+锿 > āi; #953F
+镀 > dù; #9540
+镁 > mĕi; #9541
+镂 > lòu; #9542
+镃 > zī; #9543
+镄 > fèi; #9544
+镅 > méi; #9545
+镆 > mò; #9546
+镇 > zhèn; #9547
+镈 > bó; #9548
+镉 > gé; #9549
+镊 > niè; #954A
+镋 > tăng; #954B
+镌 > juān; #954C
+镍 > niè; #954D
+镎 > ná; #954E
+镏 > líu; #954F
+镐 > hào; #9550
+镑 > bàng; #9551
+镒 > yì; #9552
+镓 > jiā; #9553
+镔 > bīn; #9554
+镕 > róng; #9555
+镖 > biāo; #9556
+镗 > tāng; #9557
+镘 > màn; #9558
+镙 > lúo; #9559
+镚 > bèng; #955A
+镛 > yōng; #955B
+镜 > jìng; #955C
+镝 > dí; #955D
+镞 > zú; #955E
+镟 > xuàn; #955F
+镠 > líu; #9560
+镡 > tán; #9561
+镢 > jué; #9562
+镣 > liáo; #9563
+镤 > pú; #9564
+镥 > lŭ; #9565
+镦 > dùi; #9566
+镧 > làn; #9567
+镨 > pŭ; #9568
+镩 > cuàn; #9569
+镪 > qiāng; #956A
+镫 > dēng; #956B
+镬 > hùo; #956C
+镭 > léi; #956D
+镮 > huán; #956E
+镯 > zhúo; #956F
+镰 > lián; #9570
+镱 > yì; #9571
+镲 > chă; #9572
+镳 > biāo; #9573
+镴 > là; #9574
+镵 > chán; #9575
+镶 > xiāng; #9576
+長 > cháng; #9577
+镸 > cháng; #9578
+镹 > jĭu; #9579
+镺 > ăo; #957A
+镻 > dié; #957B
+镼 > qū; #957C
+镽 > liăo; #957D
+镾 > mí; #957E
+长 > cháng; #957F
+門 > mén; #9580
+閁 > mà; #9581
+閂 > shuān; #9582
+閃 > shăn; #9583
+閄 > hùo; #9584
+閅 > mén; #9585
+閆 > yàn; #9586
+閇 > bì; #9587
+閈 > hàn; #9588
+閉 > bì; #9589
+開 > kāi; #958B
+閌 > kàng; #958C
+閍 > bēng; #958D
+閎 > hóng; #958E
+閏 > rùn; #958F
+閐 > sàn; #9590
+閑 > xián; #9591
+閒 > xián; #9592
+間 > jiān; #9593
+閔 > mĭn; #9594
+閕 > xiā; #9595
+閗 > dòu; #9597
+閘 > zhá; #9598
+閙 > nào; #9599
+閚 > jian; #959A
+閛 > pēng; #959B
+閜 > xiă; #959C
+閝 > líng; #959D
+閞 > biàn; #959E
+閟 > bì; #959F
+閠 > rùn; #95A0
+閡 > hé; #95A1
+関 > guān; #95A2
+閣 > gé; #95A3
+閤 > gé; #95A4
+閥 > fá; #95A5
+閦 > chù; #95A6
+閧 > hòng; #95A7
+閨 > gūi; #95A8
+閩 > mĭn; #95A9
+閫 > kŭn; #95AB
+閬 > lăng; #95AC
+閭 > lǘ; #95AD
+閮 > tíng; #95AE
+閯 > shà; #95AF
+閰 > jú; #95B0
+閱 > yuè; #95B1
+閲 > yuè; #95B2
+閳 > chăn; #95B3
+閴 > qù; #95B4
+閵 > lìn; #95B5
+閶 > chāng; #95B6
+閷 > shài; #95B7
+閸 > kŭn; #95B8
+閹 > yān; #95B9
+閺 > mín; #95BA
+閻 > yán; #95BB
+閼 > è; #95BC
+閽 > hūn; #95BD
+閾 > yù; #95BE
+閿 > wén; #95BF
+闀 > xiàng; #95C0
+闁 > bao; #95C1
+闂 > xiàng; #95C2
+闃 > qù; #95C3
+闄 > yăo; #95C4
+闅 > wén; #95C5
+闆 > băn; #95C6
+闇 > àn; #95C7
+闈 > wéi; #95C8
+闉 > yīn; #95C9
+闊 > kùo; #95CA
+闋 > què; #95CB
+闌 > lán; #95CC
+闍 > dū; #95CD
+闐 > tián; #95D0
+闑 > niè; #95D1
+闒 > tà; #95D2
+闓 > kăi; #95D3
+闔 > hé; #95D4
+闕 > què; #95D5
+闖 > chuăng; #95D6
+闗 > guān; #95D7
+闘 > dòu; #95D8
+闙 > qĭ; #95D9
+闚 > kūi; #95DA
+闛 > táng; #95DB
+關 > guān; #95DC
+闝 > piáo; #95DD
+闞 > kàn; #95DE
+闟 > xì; #95DF
+闠 > hùi; #95E0
+闡 > chăn; #95E1
+闢 > pì; #95E2
+闣 > dàng; #95E3
+闤 > huán; #95E4
+闥 > tà; #95E5
+闦 > wén; #95E6
+门 > mén; #95E8
+闩 > shuān; #95E9
+闪 > shăn; #95EA
+闫 > yàn; #95EB
+闬 > hàn; #95EC
+闭 > bì; #95ED
+问 > wèn; #95EE
+闯 > chuăng; #95EF
+闰 > rùn; #95F0
+闱 > wéi; #95F1
+闲 > xián; #95F2
+闳 > hóng; #95F3
+间 > jiān; #95F4
+闵 > mĭn; #95F5
+闶 > kàng; #95F6
+闷 > mèn; #95F7
+闸 > zhá; #95F8
+闹 > nào; #95F9
+闺 > gūi; #95FA
+闻 > wén; #95FB
+闼 > tà; #95FC
+闽 > mĭn; #95FD
+闾 > lǘ; #95FE
+闿 > kăi; #95FF
+阀 > fá; #9600
+阁 > gé; #9601
+阂 > hé; #9602
+阃 > kŭn; #9603
+阄 > jīu; #9604
+阅 > yuè; #9605
+阆 > lăng; #9606
+阇 > dū; #9607
+阈 > yù; #9608
+阉 > yān; #9609
+阊 > chāng; #960A
+阋 > xì; #960B
+阌 > wén; #960C
+阍 > hūn; #960D
+阎 > yán; #960E
+阏 > è; #960F
+阐 > chăn; #9610
+阑 > lán; #9611
+阒 > qù; #9612
+阓 > hùi; #9613
+阔 > kùo; #9614
+阕 > què; #9615
+阖 > gé; #9616
+阗 > tián; #9617
+阘 > tà; #9618
+阙 > què; #9619
+阚 > kàn; #961A
+阛 > huán; #961B
+阜 > fù; #961C
+阝 > fù; #961D
+阞 > lè; #961E
+队 > dùi; #961F
+阠 > xìn; #9620
+阡 > qiān; #9621
+阢 > wù; #9622
+阣 > yì; #9623
+阤 > túo; #9624
+阥 > yīn; #9625
+阦 > yáng; #9626
+阧 > dŏu; #9627
+阨 > è; #9628
+阩 > shēng; #9629
+阪 > băn; #962A
+阫 > péi; #962B
+阬 > kēng; #962C
+阭 > yŭn; #962D
+阮 > ruăn; #962E
+阯 > zhĭ; #962F
+阰 > pí; #9630
+阱 > jĭng; #9631
+防 > fáng; #9632
+阳 > yáng; #9633
+阴 > yīn; #9634
+阵 > zhèn; #9635
+阶 > jiē; #9636
+阷 > chēng; #9637
+阸 > è; #9638
+阹 > qū; #9639
+阺 > dĭ; #963A
+阻 > zŭ; #963B
+阼 > zùo; #963C
+阽 > diàn; #963D
+阾 > lĭng; #963E
+阿 > ā; #963F
+陀 > túo; #9640
+陁 > túo; #9641
+陂 > pō; #9642
+陃 > bĭng; #9643
+附 > fù; #9644
+际 > jì; #9645
+陆 > lù; #9646
+陇 > lŏng; #9647
+陈 > chén; #9648
+陉 > xíng; #9649
+陊 > dùo; #964A
+陋 > lòu; #964B
+陌 > mò; #964C
+降 > jiàng; #964D
+陎 > shū; #964E
+陏 > dùo; #964F
+限 > xiàn; #9650
+陑 > ér; #9651
+陒 > gŭi; #9652
+陓 > yū; #9653
+陔 > gāi; #9654
+陕 > shăn; #9655
+陖 > xùn; #9656
+陗 > qiào; #9657
+陘 > xíng; #9658
+陙 > chún; #9659
+陚 > fù; #965A
+陛 > bì; #965B
+陜 > xiá; #965C
+陝 > shăn; #965D
+陞 > shēng; #965E
+陟 > zhì; #965F
+陠 > pū; #9660
+陡 > dŏu; #9661
+院 > yuàn; #9662
+陣 > zhèn; #9663
+除 > chú; #9664
+陥 > xiàn; #9665
+陧 > niè; #9667
+陨 > yŭn; #9668
+险 > xiăn; #9669
+陪 > péi; #966A
+陫 > péi; #966B
+陬 > zōu; #966C
+陭 > yī; #966D
+陮 > dŭi; #966E
+陯 > lún; #966F
+陰 > yīn; #9670
+陱 > jū; #9671
+陲 > chúi; #9672
+陳 > chén; #9673
+陴 > pí; #9674
+陵 > líng; #9675
+陶 > táo; #9676
+陷 > xiàn; #9677
+陸 > lù; #9678
+陹 > sheng; #9679
+険 > xiăn; #967A
+陻 > yīn; #967B
+陼 > zhŭ; #967C
+陽 > yáng; #967D
+陾 > réng; #967E
+陿 > shăn; #967F
+隀 > chóng; #9680
+隁 > yàn; #9681
+隂 > yīn; #9682
+隃 > yú; #9683
+隄 > tí; #9684
+隅 > yú; #9685
+隆 > lóng; #9686
+隇 > wēi; #9687
+隈 > wēi; #9688
+隉 > niè; #9689
+隊 > dùi; #968A
+隋 > súi; #968B
+隌 > ăn; #968C
+隍 > huáng; #968D
+階 > jiē; #968E
+随 > súi; #968F
+隐 > yĭn; #9690
+隑 > gāi; #9691
+隒 > yăn; #9692
+隓 > hūi; #9693
+隔 > gé; #9694
+隕 > yŭn; #9695
+隖 > wù; #9696
+隗 > wĕi; #9697
+隘 > ài; #9698
+隙 > xì; #9699
+隚 > táng; #969A
+際 > jì; #969B
+障 > zhàng; #969C
+隝 > dăo; #969D
+隞 > áo; #969E
+隟 > xì; #969F
+隠 > yĭn; #96A0
+隢 > rào; #96A2
+隣 > lín; #96A3
+隤 > túi; #96A4
+隥 > dèng; #96A5
+隦 > pĭ; #96A6
+隧 > sùi; #96A7
+隨 > súi; #96A8
+隩 > yù; #96A9
+險 > xiăn; #96AA
+隫 > fēn; #96AB
+隬 > nĭ; #96AC
+隭 > ér; #96AD
+隮 > jī; #96AE
+隯 > dăo; #96AF
+隰 > xí; #96B0
+隱 > yĭn; #96B1
+隲 > é; #96B2
+隳 > hūi; #96B3
+隴 > lŏng; #96B4
+隵 > xī; #96B5
+隶 > lì; #96B6
+隷 > lì; #96B7
+隸 > lì; #96B8
+隹 > zhūi; #96B9
+隺 > hè; #96BA
+隻 > zhī; #96BB
+隼 > zhŭn; #96BC
+隽 > jùn; #96BD
+难 > nán; #96BE
+隿 > yì; #96BF
+雀 > què; #96C0
+雁 > yàn; #96C1
+雂 > qián; #96C2
+雃 > yă; #96C3
+雄 > xíong; #96C4
+雅 > yă; #96C5
+集 > jí; #96C6
+雇 > gù; #96C7
+雈 > huán; #96C8
+雉 > zhì; #96C9
+雊 > gòu; #96CA
+雋 > jùn; #96CB
+雌 > cí; #96CC
+雍 > yōng; #96CD
+雎 > jū; #96CE
+雏 > chú; #96CF
+雐 > hū; #96D0
+雑 > zá; #96D1
+雒 > lùo; #96D2
+雓 > yú; #96D3
+雔 > chóu; #96D4
+雕 > diāo; #96D5
+雖 > sūi; #96D6
+雗 > hàn; #96D7
+雘 > hùo; #96D8
+雙 > shuāng; #96D9
+雚 > guàn; #96DA
+雛 > chú; #96DB
+雜 > zá; #96DC
+雝 > yōng; #96DD
+雞 > jī; #96DE
+雟 > xī; #96DF
+雠 > chóu; #96E0
+雡 > lìu; #96E1
+離 > lí; #96E2
+難 > nán; #96E3
+雤 > xué; #96E4
+雥 > zá; #96E5
+雦 > jí; #96E6
+雧 > jí; #96E7
+雨 > yŭ; #96E8
+雩 > yú; #96E9
+雪 > xuĕ; #96EA
+雫 > nă; #96EB
+雬 > fŏu; #96EC
+雭 > sè; #96ED
+雮 > mù; #96EE
+雯 > wén; #96EF
+雰 > fēn; #96F0
+雱 > páng; #96F1
+雲 > yún; #96F2
+雳 > lì; #96F3
+雴 > lì; #96F4
+雵 > ăng; #96F5
+零 > líng; #96F6
+雷 > léi; #96F7
+雸 > án; #96F8
+雹 > báo; #96F9
+雺 > méng; #96FA
+電 > diàn; #96FB
+雼 > dàng; #96FC
+雽 > xíng; #96FD
+雾 > wù; #96FE
+雿 > zhào; #96FF
+需 > xū; #9700
+霁 > jì; #9701
+霂 > mù; #9702
+霃 > chén; #9703
+霄 > xiāo; #9704
+霅 > zhá; #9705
+霆 > tíng; #9706
+震 > zhèn; #9707
+霈 > pèi; #9708
+霉 > méi; #9709
+霊 > líng; #970A
+霋 > qī; #970B
+霌 > chōu; #970C
+霍 > hùo; #970D
+霎 > shà; #970E
+霏 > fēi; #970F
+霐 > wēng; #9710
+霑 > zhān; #9711
+霒 > yīn; #9712
+霓 > ní; #9713
+霔 > chòu; #9714
+霕 > tún; #9715
+霖 > lín; #9716
+霘 > dòng; #9718
+霙 > yīng; #9719
+霚 > wù; #971A
+霛 > líng; #971B
+霜 > shuāng; #971C
+霝 > líng; #971D
+霞 > xiá; #971E
+霟 > hóng; #971F
+霠 > yīn; #9720
+霡 > mò; #9721
+霢 > mài; #9722
+霣 > yŭn; #9723
+霤 > lìu; #9724
+霥 > mèng; #9725
+霦 > bīn; #9726
+霧 > wù; #9727
+霨 > wèi; #9728
+霩 > hùo; #9729
+霪 > yín; #972A
+霫 > xí; #972B
+霬 > yì; #972C
+霭 > ăi; #972D
+霮 > dàn; #972E
+霯 > dèng; #972F
+霰 > xiàn; #9730
+霱 > yù; #9731
+露 > lù; #9732
+霳 > lóng; #9733
+霴 > dài; #9734
+霵 > jí; #9735
+霶 > páng; #9736
+霷 > yáng; #9737
+霸 > bà; #9738
+霹 > pī; #9739
+霺 > wéi; #973A
+霼 > xĭ; #973C
+霽 > jì; #973D
+霾 > mái; #973E
+霿 > mèng; #973F
+靀 > méng; #9740
+靁 > léi; #9741
+靂 > lì; #9742
+靃 > hùo; #9743
+靄 > ăi; #9744
+靅 > fèi; #9745
+靆 > dài; #9746
+靇 > lóng; #9747
+靈 > líng; #9748
+靉 > ài; #9749
+靊 > fēng; #974A
+靋 > lì; #974B
+靌 > băo; #974C
+靎 > hè; #974E
+靏 > hè; #974F
+靐 > bìng; #9750
+靑 > qīng; #9751
+青 > qīng; #9752
+靓 > jìng; #9753
+靔 > tiān; #9754
+靕 > zhēn; #9755
+靖 > jìng; #9756
+靗 > chèng; #9757
+靘 > qìng; #9758
+静 > jìng; #9759
+靚 > jìng; #975A
+靛 > diàn; #975B
+靜 > jìng; #975C
+靝 > tiān; #975D
+非 > fēi; #975E
+靟 > fēi; #975F
+靠 > kào; #9760
+靡 > mĭ; #9761
+面 > miàn; #9762
+靣 > miàn; #9763
+靤 > pào; #9764
+靥 > yè; #9765
+靦 > tiăn; #9766
+靧 > hùi; #9767
+靨 > yè; #9768
+革 > gé; #9769
+靪 > dīng; #976A
+靫 > chā; #976B
+靬 > jiān; #976C
+靭 > rèn; #976D
+靮 > dí; #976E
+靯 > dù; #976F
+靰 > wù; #9770
+靱 > rèn; #9771
+靲 > qín; #9772
+靳 > jìn; #9773
+靴 > xuē; #9774
+靵 > nĭu; #9775
+靶 > bă; #9776
+靷 > yĭn; #9777
+靸 > să; #9778
+靹 > nà; #9779
+靺 > mò; #977A
+靻 > zŭ; #977B
+靼 > dá; #977C
+靽 > bàn; #977D
+靾 > yì; #977E
+靿 > yào; #977F
+鞀 > táo; #9780
+鞁 > túo; #9781
+鞂 > jiá; #9782
+鞃 > hóng; #9783
+鞄 > páo; #9784
+鞅 > yăng; #9785
+鞇 > yīn; #9787
+鞈 > jiá; #9788
+鞉 > táo; #9789
+鞊 > jí; #978A
+鞋 > xié; #978B
+鞌 > ān; #978C
+鞍 > ān; #978D
+鞎 > hén; #978E
+鞏 > gŏng; #978F
+鞑 > dá; #9791
+鞒 > qiāo; #9792
+鞓 > tīng; #9793
+鞔 > wăn; #9794
+鞕 > yìng; #9795
+鞖 > sūi; #9796
+鞗 > tiáo; #9797
+鞘 > qiào; #9798
+鞙 > xuàn; #9799
+鞚 > kòng; #979A
+鞛 > bĕng; #979B
+鞜 > tà; #979C
+鞝 > zhăng; #979D
+鞞 > bĭng; #979E
+鞟 > kùo; #979F
+鞠 > jú; #97A0
+鞡 > la; #97A1
+鞢 > xiè; #97A2
+鞣 > róu; #97A3
+鞤 > bāng; #97A4
+鞥 > yì; #97A5
+鞦 > qīu; #97A6
+鞧 > qīu; #97A7
+鞨 > hé; #97A8
+鞩 > xiào; #97A9
+鞪 > mù; #97AA
+鞫 > jú; #97AB
+鞬 > jiān; #97AC
+鞭 > biān; #97AD
+鞮 > dī; #97AE
+鞯 > jiān; #97AF
+鞱 > tāo; #97B1
+鞲 > gōu; #97B2
+鞳 > tà; #97B3
+鞴 > bèi; #97B4
+鞵 > xié; #97B5
+鞶 > pán; #97B6
+鞷 > gé; #97B7
+鞸 > bì; #97B8
+鞹 > kùo; #97B9
+鞺 > tang; #97BA
+鞻 > lóu; #97BB
+鞼 > gùi; #97BC
+鞽 > qiáo; #97BD
+鞾 > xuē; #97BE
+鞿 > jī; #97BF
+韀 > jiān; #97C0
+韁 > jiāng; #97C1
+韂 > chàn; #97C2
+韃 > dá; #97C3
+韄 > hùo; #97C4
+韅 > xiăn; #97C5
+韆 > qiān; #97C6
+韇 > dú; #97C7
+韈 > wà; #97C8
+韉 > jiān; #97C9
+韊 > lán; #97CA
+韋 > wéi; #97CB
+韌 > rèn; #97CC
+韍 > fú; #97CD
+韎 > mèi; #97CE
+韏 > juàn; #97CF
+韐 > gé; #97D0
+韑 > wĕi; #97D1
+韒 > qiào; #97D2
+韓 > hán; #97D3
+韔 > chàng; #97D4
+韖 > róu; #97D6
+韗 > xùn; #97D7
+韘 > shè; #97D8
+韙 > wĕi; #97D9
+韚 > gé; #97DA
+韛 > bèi; #97DB
+韜 > tāo; #97DC
+韝 > gōu; #97DD
+韞 > yùn; #97DE
+韠 > bì; #97E0
+韡 > wĕi; #97E1
+韢 > hùi; #97E2
+韣 > dú; #97E3
+韤 > wà; #97E4
+韥 > dú; #97E5
+韦 > wéi; #97E6
+韧 > rèn; #97E7
+韨 > fú; #97E8
+韩 > hán; #97E9
+韪 > wĕi; #97EA
+韫 > yùn; #97EB
+韬 > tāo; #97EC
+韭 > jĭu; #97ED
+韮 > jĭu; #97EE
+韯 > xiān; #97EF
+韰 > xiè; #97F0
+韱 > xiān; #97F1
+韲 > jī; #97F2
+音 > yīn; #97F3
+韴 > zá; #97F4
+韵 > yùn; #97F5
+韶 > sháo; #97F6
+韷 > lè; #97F7
+韸 > péng; #97F8
+韹 > héng; #97F9
+韺 > yīng; #97FA
+韻 > yùn; #97FB
+韼 > péng; #97FC
+韽 > yīn; #97FD
+韾 > yīn; #97FE
+響 > xiăng; #97FF
+頀 > hù; #9800
+頁 > yè; #9801
+頂 > dĭng; #9802
+頃 > qĭng; #9803
+頄 > pàn; #9804
+項 > xiàng; #9805
+順 > shùn; #9806
+頇 > hān; #9807
+須 > xū; #9808
+頉 > yí; #9809
+頊 > xù; #980A
+頋 > gù; #980B
+頌 > sòng; #980C
+頍 > kŭi; #980D
+頎 > qí; #980E
+頏 > háng; #980F
+預 > yù; #9810
+頑 > wán; #9811
+頒 > bān; #9812
+頓 > dùn; #9813
+頔 > dí; #9814
+頕 > dān; #9815
+頖 > pàn; #9816
+頗 > pŏ; #9817
+領 > lĭng; #9818
+頙 > cè; #9819
+頚 > jĭng; #981A
+頛 > lĕi; #981B
+頜 > hé; #981C
+頝 > qiāo; #981D
+頞 > è; #981E
+頟 > é; #981F
+頠 > wĕi; #9820
+頡 > jié; #9821
+頢 > guā; #9822
+頣 > shĕn; #9823
+頤 > yí; #9824
+頥 > shĕn; #9825
+頦 > hái; #9826
+頧 > dūi; #9827
+頨 > piān; #9828
+頩 > pīng; #9829
+頪 > lèi; #982A
+頫 > fŭ; #982B
+頬 > jiá; #982C
+頭 > tóu; #982D
+頮 > hùi; #982E
+頯 > kúi; #982F
+頰 > jiá; #9830
+頱 > lè; #9831
+頲 > tian; #9832
+頳 > chēng; #9833
+頴 > yĭng; #9834
+頵 > jūn; #9835
+頶 > hú; #9836
+頷 > hàn; #9837
+頸 > jĭng; #9838
+頹 > túi; #9839
+頺 > túi; #983A
+頻 > pín; #983B
+頼 > lài; #983C
+頽 > túi; #983D
+頾 > zī; #983E
+頿 > zī; #983F
+顀 > chúi; #9840
+顁 > dìng; #9841
+顂 > lài; #9842
+顃 > yán; #9843
+顄 > hàn; #9844
+顅 > jiān; #9845
+顆 > kē; #9846
+顇 > cùi; #9847
+顈 > jĭong; #9848
+顉 > qīn; #9849
+顊 > yí; #984A
+顋 > sāi; #984B
+題 > tí; #984C
+額 > é; #984D
+顎 > è; #984E
+顏 > yán; #984F
+顐 > hún; #9850
+顑 > kăn; #9851
+顒 > yóng; #9852
+顓 > zhuān; #9853
+顔 > yán; #9854
+顕 > xiăn; #9855
+顖 > xìn; #9856
+顗 > yĭ; #9857
+願 > yuàn; #9858
+顙 > săng; #9859
+顚 > diān; #985A
+顛 > diān; #985B
+顜 > jiăng; #985C
+顝 > kū; #985D
+類 > lèi; #985E
+顟 > liáo; #985F
+顠 > piào; #9860
+顡 > yì; #9861
+顢 > mán; #9862
+顣 > qī; #9863
+顤 > rào; #9864
+顥 > hào; #9865
+顦 > qiáo; #9866
+顧 > gù; #9867
+顨 > xùn; #9868
+顩 > qiān; #9869
+顪 > hūi; #986A
+顫 > zhàn; #986B
+顬 > rú; #986C
+顭 > hōng; #986D
+顮 > bīn; #986E
+顯 > xiăn; #986F
+顰 > pín; #9870
+顱 > lú; #9871
+顲 > lăn; #9872
+顳 > niè; #9873
+顴 > quán; #9874
+页 > yè; #9875
+顶 > dĭng; #9876
+顷 > qĭng; #9877
+顸 > hān; #9878
+项 > xiàng; #9879
+顺 > shùn; #987A
+须 > xū; #987B
+顼 > xù; #987C
+顽 > wán; #987D
+顾 > gù; #987E
+顿 > dùn; #987F
+颀 > qí; #9880
+颁 > bān; #9881
+颂 > sòng; #9882
+颃 > háng; #9883
+预 > yù; #9884
+颅 > lú; #9885
+领 > lĭng; #9886
+颇 > pŏ; #9887
+颈 > jĭng; #9888
+颉 > jié; #9889
+颊 > jiá; #988A
+颋 > tian; #988B
+颌 > hàn; #988C
+颍 > yĭng; #988D
+颎 > jĭong; #988E
+颏 > hái; #988F
+颐 > yí; #9890
+频 > pín; #9891
+颒 > hùi; #9892
+颓 > túi; #9893
+颔 > hàn; #9894
+颕 > yĭng; #9895
+颖 > yĭng; #9896
+颗 > kē; #9897
+题 > tí; #9898
+颙 > yóng; #9899
+颚 > è; #989A
+颛 > zhuān; #989B
+颜 > yán; #989C
+额 > é; #989D
+颞 > niè; #989E
+颟 > mán; #989F
+颠 > diān; #98A0
+颡 > săng; #98A1
+颢 > hào; #98A2
+颣 > lèi; #98A3
+颤 > zhàn; #98A4
+颥 > rú; #98A5
+颦 > pín; #98A6
+颧 > quán; #98A7
+風 > fēng; #98A8
+颩 > biāo; #98A9
+颫 > fú; #98AB
+颬 > xiā; #98AC
+颭 > zhăn; #98AD
+颮 > biāo; #98AE
+颯 > sà; #98AF
+颰 > bá; #98B0
+颱 > tái; #98B1
+颲 > liè; #98B2
+颳 > guā; #98B3
+颴 > xuàn; #98B4
+颵 > shào; #98B5
+颶 > jù; #98B6
+颷 > bī; #98B7
+颸 > sī; #98B8
+颹 > wĕi; #98B9
+颺 > yáng; #98BA
+颻 > yáo; #98BB
+颼 > sōu; #98BC
+颽 > kăi; #98BD
+颾 > sāo; #98BE
+颿 > fán; #98BF
+飀 > líu; #98C0
+飁 > xí; #98C1
+飂 > liáo; #98C2
+飃 > piāo; #98C3
+飄 > piāo; #98C4
+飅 > líu; #98C5
+飆 > biāo; #98C6
+飇 > biāo; #98C7
+飈 > biăo; #98C8
+飉 > liáo; #98C9
+飋 > sè; #98CB
+飌 > fēng; #98CC
+飍 > biāo; #98CD
+风 > fēng; #98CE
+飏 > yáng; #98CF
+飐 > zhăn; #98D0
+飑 > biāo; #98D1
+飒 > sà; #98D2
+飓 > jù; #98D3
+飔 > sī; #98D4
+飕 > sōu; #98D5
+飖 > yáo; #98D6
+飗 > líu; #98D7
+飘 > piāo; #98D8
+飙 > biāo; #98D9
+飚 > biāo; #98DA
+飛 > fēi; #98DB
+飜 > fān; #98DC
+飝 > fēi; #98DD
+飞 > fēi; #98DE
+食 > shí; #98DF
+飠 > shí; #98E0
+飡 > cān; #98E1
+飢 > jī; #98E2
+飣 > dìng; #98E3
+飤 > sì; #98E4
+飥 > tūo; #98E5
+飦 > zhān; #98E6
+飧 > sūn; #98E7
+飨 > xiăng; #98E8
+飩 > tún; #98E9
+飪 > rèn; #98EA
+飫 > yù; #98EB
+飬 > juàn; #98EC
+飭 > chì; #98ED
+飮 > yĭn; #98EE
+飯 > fàn; #98EF
+飰 > fàn; #98F0
+飱 > sūn; #98F1
+飲 > yĭn; #98F2
+飳 > zhù; #98F3
+飴 > yí; #98F4
+飵 > zhăi; #98F5
+飶 > bì; #98F6
+飷 > jiĕ; #98F7
+飸 > tāo; #98F8
+飹 > lĭu; #98F9
+飺 > cí; #98FA
+飻 > tiè; #98FB
+飼 > sì; #98FC
+飽 > băo; #98FD
+飾 > shì; #98FE
+飿 > dùo; #98FF
+餀 > hài; #9900
+餁 > rèn; #9901
+餂 > tiăn; #9902
+餃 > jiăo; #9903
+餄 > jiá; #9904
+餅 > bĭng; #9905
+餆 > yáo; #9906
+餇 > tóng; #9907
+餈 > cí; #9908
+餉 > xiăng; #9909
+養 > yăng; #990A
+餋 > yăng; #990B
+餌 > ĕr; #990C
+餍 > yàn; #990D
+餎 > le; #990E
+餏 > yī; #990F
+餐 > cān; #9910
+餑 > bó; #9911
+餒 > nĕi; #9912
+餓 > è; #9913
+餔 > bū; #9914
+餕 > jùn; #9915
+餖 > dòu; #9916
+餗 > sù; #9917
+餘 > yú; #9918
+餙 > shì; #9919
+餚 > yáo; #991A
+餛 > hún; #991B
+餜 > gŭo; #991C
+餝 > shì; #991D
+餞 > jiàn; #991E
+餟 > zhùi; #991F
+餠 > bĭng; #9920
+餡 > xiàn; #9921
+餢 > bù; #9922
+餣 > yè; #9923
+餤 > tán; #9924
+餥 > fĕi; #9925
+餦 > zhāng; #9926
+餧 > wèi; #9927
+館 > guăn; #9928
+餩 > è; #9929
+餪 > nuăn; #992A
+餫 > hún; #992B
+餬 > hú; #992C
+餭 > huáng; #992D
+餮 > tiè; #992E
+餯 > hùi; #992F
+餰 > jiān; #9930
+餱 > hóu; #9931
+餲 > hé; #9932
+餳 > xíng; #9933
+餴 > fēn; #9934
+餵 > wèi; #9935
+餶 > gŭ; #9936
+餷 > chā; #9937
+餸 > sòng; #9938
+餹 > táng; #9939
+餺 > bó; #993A
+餻 > gāo; #993B
+餼 > xì; #993C
+餽 > kùi; #993D
+餾 > lìu; #993E
+餿 > sōu; #993F
+饀 > táo; #9940
+饁 > yè; #9941
+饂 > yún; #9942
+饃 > mó; #9943
+饄 > táng; #9944
+饅 > mán; #9945
+饆 > bì; #9946
+饇 > yù; #9947
+饈 > xīu; #9948
+饉 > jĭn; #9949
+饊 > săn; #994A
+饋 > kùi; #994B
+饌 > zhuàn; #994C
+饍 > shàn; #994D
+饎 > chì; #994E
+饏 > dàn; #994F
+饐 > yì; #9950
+饑 > jī; #9951
+饒 > ráo; #9952
+饓 > chēng; #9953
+饔 > yōng; #9954
+饕 > tāo; #9955
+饖 > hùi; #9956
+饗 > xiăng; #9957
+饘 > zhān; #9958
+饙 > fēn; #9959
+饚 > hài; #995A
+饛 > méng; #995B
+饜 > yàn; #995C
+饝 > mó; #995D
+饞 > chán; #995E
+饟 > xiăng; #995F
+饠 > lúo; #9960
+饡 > zuàn; #9961
+饢 > năng; #9962
+饣 > shí; #9963
+饤 > dìng; #9964
+饥 > jī; #9965
+饦 > tūo; #9966
+饧 > xíng; #9967
+饨 > tún; #9968
+饩 > xì; #9969
+饪 > rèn; #996A
+饫 > yù; #996B
+饬 > chì; #996C
+饭 > fàn; #996D
+饮 > yĭn; #996E
+饯 > jiàn; #996F
+饰 > shì; #9970
+饱 > băo; #9971
+饲 > sì; #9972
+饳 > dùo; #9973
+饴 > yí; #9974
+饵 > ĕr; #9975
+饶 > ráo; #9976
+饷 > xiăng; #9977
+饸 > jiá; #9978
+饹 > le; #9979
+饺 > jiăo; #997A
+饻 > yī; #997B
+饼 > bĭng; #997C
+饽 > bó; #997D
+饾 > dòu; #997E
+饿 > è; #997F
+馀 > yú; #9980
+馁 > nĕi; #9981
+馂 > jùn; #9982
+馃 > gŭo; #9983
+馄 > hún; #9984
+馅 > xiàn; #9985
+馆 > guăn; #9986
+馇 > chā; #9987
+馈 > kùi; #9988
+馉 > gŭ; #9989
+馊 > sōu; #998A
+馋 > chán; #998B
+馌 > yè; #998C
+馍 > mó; #998D
+馎 > bó; #998E
+馏 > lìu; #998F
+馐 > xīu; #9990
+馑 > jĭn; #9991
+馒 > mán; #9992
+馓 > săn; #9993
+馔 > zhuàn; #9994
+馕 > năng; #9995
+首 > shŏu; #9996
+馗 > kúi; #9997
+馘 > gúo; #9998
+香 > xiāng; #9999
+馚 > fén; #999A
+馛 > bá; #999B
+馜 > nĭ; #999C
+馝 > bì; #999D
+馞 > bó; #999E
+馟 > tú; #999F
+馠 > hān; #99A0
+馡 > fēi; #99A1
+馢 > jiān; #99A2
+馣 > ān; #99A3
+馤 > ăi; #99A4
+馥 > fù; #99A5
+馦 > xiān; #99A6
+馧 > wēn; #99A7
+馨 > xīn; #99A8
+馩 > fén; #99A9
+馪 > bīn; #99AA
+馫 > xīng; #99AB
+馬 > mă; #99AC
+馭 > yù; #99AD
+馮 > féng; #99AE
+馯 > hàn; #99AF
+馰 > dì; #99B0
+馱 > túo; #99B1
+馲 > tūo; #99B2
+馳 > chí; #99B3
+馴 > xún; #99B4
+馵 > zhù; #99B5
+馶 > zhī; #99B6
+馷 > pèi; #99B7
+馸 > xìn; #99B8
+馹 > rì; #99B9
+馺 > sà; #99BA
+馻 > yĭn; #99BB
+馼 > wén; #99BC
+馽 > zhí; #99BD
+馾 > dàn; #99BE
+馿 > lǘ; #99BF
+駀 > yóu; #99C0
+駁 > bó; #99C1
+駂 > băo; #99C2
+駃 > kuài; #99C3
+駄 > túo; #99C4
+駅 > yì; #99C5
+駆 > qū; #99C6
+駈 > qū; #99C8
+駉 > jīong; #99C9
+駊 > bŏ; #99CA
+駋 > zhāo; #99CB
+駌 > yuān; #99CC
+駍 > pēng; #99CD
+駎 > zhòu; #99CE
+駏 > jù; #99CF
+駐 > zhù; #99D0
+駑 > nú; #99D1
+駒 > jū; #99D2
+駓 > pí; #99D3
+駔 > zăng; #99D4
+駕 > jià; #99D5
+駖 > líng; #99D6
+駗 > zhēn; #99D7
+駘 > tái; #99D8
+駙 > fù; #99D9
+駚 > yăng; #99DA
+駛 > shĭ; #99DB
+駜 > bì; #99DC
+駝 > túo; #99DD
+駞 > túo; #99DE
+駟 > sì; #99DF
+駠 > líu; #99E0
+駡 > mà; #99E1
+駢 > pián; #99E2
+駣 > táo; #99E3
+駤 > zhì; #99E4
+駥 > róng; #99E5
+駦 > téng; #99E6
+駧 > dòng; #99E7
+駨 > xún; #99E8
+駩 > quán; #99E9
+駪 > shēn; #99EA
+駫 > jīong; #99EB
+駬 > ĕr; #99EC
+駭 > hài; #99ED
+駮 > bó; #99EE
+駯 > zhu; #99EF
+駰 > yīn; #99F0
+駱 > lùo; #99F1
+駳 > dàn; #99F3
+駴 > xiè; #99F4
+駵 > líu; #99F5
+駶 > jú; #99F6
+駷 > sŏng; #99F7
+駸 > qīn; #99F8
+駹 > máng; #99F9
+駺 > liáng; #99FA
+駻 > hàn; #99FB
+駼 > tú; #99FC
+駽 > xuàn; #99FD
+駾 > tùi; #99FE
+駿 > jùn; #99FF
+騀 > é; #9A00
+騁 > chĕng; #9A01
+騂 > xīn; #9A02
+騃 > ái; #9A03
+騄 > lù; #9A04
+騅 > zhūi; #9A05
+騆 > zhōu; #9A06
+騇 > shĕ; #9A07
+騈 > pián; #9A08
+騉 > kūn; #9A09
+騊 > táo; #9A0A
+騋 > lái; #9A0B
+騌 > zōng; #9A0C
+騍 > kè; #9A0D
+騎 > qí; #9A0E
+騏 > qí; #9A0F
+騐 > yàn; #9A10
+騑 > fēi; #9A11
+騒 > sāo; #9A12
+験 > yăn; #9A13
+騔 > jié; #9A14
+騕 > yăo; #9A15
+騖 > wù; #9A16
+騗 > piàn; #9A17
+騘 > cōng; #9A18
+騙 > piàn; #9A19
+騚 > qián; #9A1A
+騛 > fēi; #9A1B
+騜 > huáng; #9A1C
+騝 > jiān; #9A1D
+騞 > hùo; #9A1E
+騟 > yù; #9A1F
+騠 > tí; #9A20
+騡 > quán; #9A21
+騢 > xiá; #9A22
+騣 > zōng; #9A23
+騤 > kúi; #9A24
+騥 > róu; #9A25
+騦 > sī; #9A26
+騧 > guā; #9A27
+騨 > túo; #9A28
+騩 > kùi; #9A29
+騪 > sōu; #9A2A
+騫 > qiān; #9A2B
+騬 > chéng; #9A2C
+騭 > zhì; #9A2D
+騮 > líu; #9A2E
+騯 > páng; #9A2F
+騰 > téng; #9A30
+騱 > xī; #9A31
+騲 > căo; #9A32
+騳 > dú; #9A33
+騴 > yàn; #9A34
+騵 > yuán; #9A35
+騶 > zōu; #9A36
+騷 > sāo; #9A37
+騸 > shàn; #9A38
+騹 > lí; #9A39
+騺 > zhì; #9A3A
+騻 > shuăng; #9A3B
+騼 > lù; #9A3C
+騽 > xí; #9A3D
+騾 > lúo; #9A3E
+騿 > zhāng; #9A3F
+驀 > mò; #9A40
+驁 > áo; #9A41
+驂 > cān; #9A42
+驃 > piào; #9A43
+驄 > cōng; #9A44
+驅 > qū; #9A45
+驆 > bì; #9A46
+驇 > zhì; #9A47
+驈 > yù; #9A48
+驉 > xū; #9A49
+驊 > huá; #9A4A
+驋 > bō; #9A4B
+驌 > sù; #9A4C
+驍 > xiāo; #9A4D
+驎 > lín; #9A4E
+驏 > chăn; #9A4F
+驐 > dūn; #9A50
+驑 > líu; #9A51
+驒 > túo; #9A52
+驓 > zēng; #9A53
+驔 > tán; #9A54
+驕 > jiāo; #9A55
+驖 > tiĕ; #9A56
+驗 > yàn; #9A57
+驘 > lúo; #9A58
+驙 > zhān; #9A59
+驚 > jīng; #9A5A
+驛 > yì; #9A5B
+驜 > yè; #9A5C
+驝 > tūo; #9A5D
+驞 > bīn; #9A5E
+驟 > zòu; #9A5F
+驠 > yàn; #9A60
+驡 > péng; #9A61
+驢 > lǘ; #9A62
+驣 > téng; #9A63
+驤 > xiāng; #9A64
+驥 > jì; #9A65
+驦 > shuāng; #9A66
+驧 > jú; #9A67
+驨 > xī; #9A68
+驩 > huān; #9A69
+驪 > lí; #9A6A
+驫 > biāo; #9A6B
+马 > mă; #9A6C
+驭 > yù; #9A6D
+驮 > túo; #9A6E
+驯 > xún; #9A6F
+驰 > chí; #9A70
+驱 > qū; #9A71
+驲 > rì; #9A72
+驳 > bó; #9A73
+驴 > lǘ; #9A74
+驵 > zăng; #9A75
+驶 > shĭ; #9A76
+驷 > sì; #9A77
+驸 > fù; #9A78
+驹 > jū; #9A79
+驺 > zōu; #9A7A
+驻 > zhù; #9A7B
+驼 > túo; #9A7C
+驽 > nú; #9A7D
+驾 > jià; #9A7E
+驿 > yì; #9A7F
+骀 > tái; #9A80
+骁 > xiāo; #9A81
+骂 > mà; #9A82
+骃 > yīn; #9A83
+骄 > jiāo; #9A84
+骅 > huá; #9A85
+骆 > lùo; #9A86
+骇 > hài; #9A87
+骈 > pián; #9A88
+骉 > biāo; #9A89
+骊 > lí; #9A8A
+骋 > chĕng; #9A8B
+验 > yàn; #9A8C
+骍 > xīn; #9A8D
+骎 > qīn; #9A8E
+骏 > jùn; #9A8F
+骐 > qí; #9A90
+骑 > qí; #9A91
+骒 > kè; #9A92
+骓 > zhūi; #9A93
+骔 > zōng; #9A94
+骕 > sù; #9A95
+骖 > cān; #9A96
+骗 > piàn; #9A97
+骘 > zhì; #9A98
+骙 > kúi; #9A99
+骚 > sāo; #9A9A
+骛 > wù; #9A9B
+骜 > áo; #9A9C
+骝 > líu; #9A9D
+骞 > qiān; #9A9E
+骟 > shàn; #9A9F
+骠 > piào; #9AA0
+骡 > lúo; #9AA1
+骢 > cōng; #9AA2
+骣 > chăn; #9AA3
+骤 > zòu; #9AA4
+骥 > jì; #9AA5
+骦 > shuāng; #9AA6
+骧 > xiāng; #9AA7
+骨 > gŭ; #9AA8
+骩 > wĕi; #9AA9
+骪 > wĕi; #9AAA
+骫 > wĕi; #9AAB
+骬 > yú; #9AAC
+骭 > gàn; #9AAD
+骮 > yì; #9AAE
+骯 > āng; #9AAF
+骰 > tóu; #9AB0
+骱 > xiè; #9AB1
+骲 > bāo; #9AB2
+骳 > bì; #9AB3
+骴 > chī; #9AB4
+骵 > tĭ; #9AB5
+骶 > dĭ; #9AB6
+骷 > kū; #9AB7
+骸 > hái; #9AB8
+骹 > qiāo; #9AB9
+骺 > gòu; #9ABA
+骻 > kuà; #9ABB
+骼 > gé; #9ABC
+骽 > tŭi; #9ABD
+骾 > gĕng; #9ABE
+骿 > pián; #9ABF
+髀 > bì; #9AC0
+髁 > kē; #9AC1
+髂 > kà; #9AC2
+髃 > yú; #9AC3
+髄 > sŭi; #9AC4
+髅 > lóu; #9AC5
+髆 > bó; #9AC6
+髇 > xiāo; #9AC7
+髈 > páng; #9AC8
+髉 > bō; #9AC9
+髊 > cī; #9ACA
+髋 > kuān; #9ACB
+髌 > bìn; #9ACC
+髍 > mó; #9ACD
+髎 > liáo; #9ACE
+髏 > lóu; #9ACF
+髐 > náo; #9AD0
+髑 > dú; #9AD1
+髒 > zāng; #9AD2
+髓 > sŭi; #9AD3
+體 > tĭ; #9AD4
+髕 > bìn; #9AD5
+髖 > kuān; #9AD6
+髗 > lú; #9AD7
+高 > gāo; #9AD8
+髙 > gāo; #9AD9
+髚 > qiào; #9ADA
+髛 > kāo; #9ADB
+髜 > qiāo; #9ADC
+髝 > lào; #9ADD
+髞 > zào; #9ADE
+髟 > biāo; #9ADF
+髠 > kūn; #9AE0
+髡 > kūn; #9AE1
+髢 > tì; #9AE2
+髣 > făng; #9AE3
+髤 > xīu; #9AE4
+髥 > rán; #9AE5
+髦 > máo; #9AE6
+髧 > dàn; #9AE7
+髨 > kūn; #9AE8
+髩 > bìn; #9AE9
+髪 > fà; #9AEA
+髫 > tiáo; #9AEB
+髬 > peng; #9AEC
+髭 > zī; #9AED
+髮 > fă; #9AEE
+髯 > rán; #9AEF
+髰 > tì; #9AF0
+髱 > pào; #9AF1
+髲 > pī; #9AF2
+髳 > máo; #9AF3
+髴 > fú; #9AF4
+髵 > ér; #9AF5
+髶 > róng; #9AF6
+髷 > qū; #9AF7
+髸 > gong; #9AF8
+髹 > xīu; #9AF9
+髺 > guà; #9AFA
+髻 > jì; #9AFB
+髼 > péng; #9AFC
+髽 > zhuā; #9AFD
+髾 > shāo; #9AFE
+髿 > shā; #9AFF
+鬀 > tì; #9B00
+鬁 > lì; #9B01
+鬂 > bìn; #9B02
+鬃 > zōng; #9B03
+鬄 > tì; #9B04
+鬅 > péng; #9B05
+鬆 > sōng; #9B06
+鬇 > zhēng; #9B07
+鬈 > quán; #9B08
+鬉 > zōng; #9B09
+鬊 > shùn; #9B0A
+鬋 > jiān; #9B0B
+鬌 > dŭo; #9B0C
+鬍 > hú; #9B0D
+鬎 > là; #9B0E
+鬏 > jīu; #9B0F
+鬐 > qí; #9B10
+鬑 > lián; #9B11
+鬒 > zhĕn; #9B12
+鬓 > bìn; #9B13
+鬔 > péng; #9B14
+鬕 > mò; #9B15
+鬖 > sān; #9B16
+鬗 > màn; #9B17
+鬘 > mán; #9B18
+鬙 > sēng; #9B19
+鬚 > xū; #9B1A
+鬛 > liè; #9B1B
+鬜 > qiān; #9B1C
+鬝 > qiān; #9B1D
+鬞 > nóng; #9B1E
+鬟 > huán; #9B1F
+鬠 > kuài; #9B20
+鬡 > níng; #9B21
+鬢 > bìn; #9B22
+鬣 > liè; #9B23
+鬤 > ráng; #9B24
+鬥 > dòu; #9B25
+鬦 > dòu; #9B26
+鬧 > nào; #9B27
+鬨 > hōng; #9B28
+鬩 > xì; #9B29
+鬪 > dòu; #9B2A
+鬫 > hăn; #9B2B
+鬬 > dòu; #9B2C
+鬭 > dòu; #9B2D
+鬮 > jīu; #9B2E
+鬯 > chàng; #9B2F
+鬰 > yù; #9B30
+鬱 > yù; #9B31
+鬲 > lì; #9B32
+鬳 > juàn; #9B33
+鬴 > fŭ; #9B34
+鬵 > qián; #9B35
+鬶 > gūi; #9B36
+鬷 > zōng; #9B37
+鬸 > lìu; #9B38
+鬹 > gūi; #9B39
+鬺 > shāng; #9B3A
+鬻 > yù; #9B3B
+鬼 > gŭi; #9B3C
+鬽 > mèi; #9B3D
+鬾 > jì; #9B3E
+鬿 > qí; #9B3F
+魀 > jiè; #9B40
+魁 > kúi; #9B41
+魂 > hún; #9B42
+魃 > bá; #9B43
+魄 > pò; #9B44
+魅 > mèi; #9B45
+魆 > xù; #9B46
+魇 > yăn; #9B47
+魈 > xiāo; #9B48
+魉 > liăng; #9B49
+魊 > yù; #9B4A
+魋 > túi; #9B4B
+魌 > qī; #9B4C
+魍 > wăng; #9B4D
+魎 > liăng; #9B4E
+魏 > wèi; #9B4F
+魐 > jiān; #9B50
+魑 > chī; #9B51
+魒 > piāo; #9B52
+魓 > bì; #9B53
+魔 > mó; #9B54
+魕 > jĭ; #9B55
+魖 > xū; #9B56
+魗 > chŏu; #9B57
+魘 > yăn; #9B58
+魙 > zhăn; #9B59
+魚 > yú; #9B5A
+魛 > dāo; #9B5B
+魜 > rén; #9B5C
+魝 > jì; #9B5D
+魟 > gōng; #9B5F
+魠 > túo; #9B60
+魡 > diào; #9B61
+魢 > jĭ; #9B62
+魣 > xù; #9B63
+魤 > é; #9B64
+魥 > è; #9B65
+魦 > shā; #9B66
+魧 > háng; #9B67
+魨 > tún; #9B68
+魩 > mò; #9B69
+魪 > jiè; #9B6A
+魫 > shĕn; #9B6B
+魬 > făn; #9B6C
+魭 > yuán; #9B6D
+魮 > bí; #9B6E
+魯 > lŭ; #9B6F
+魰 > wén; #9B70
+魱 > hú; #9B71
+魲 > lú; #9B72
+魳 > zá; #9B73
+魴 > fáng; #9B74
+魵 > fén; #9B75
+魶 > nà; #9B76
+魷 > yóu; #9B77
+魺 > hé; #9B7A
+魻 > xiá; #9B7B
+魼 > qū; #9B7C
+魽 > hān; #9B7D
+魾 > pí; #9B7E
+魿 > líng; #9B7F
+鮀 > túo; #9B80
+鮁 > bō; #9B81
+鮂 > qíu; #9B82
+鮃 > píng; #9B83
+鮄 > fú; #9B84
+鮅 > bì; #9B85
+鮆 > jì; #9B86
+鮇 > wèi; #9B87
+鮈 > jū; #9B88
+鮉 > diāo; #9B89
+鮊 > bó; #9B8A
+鮋 > yóu; #9B8B
+鮌 > gŭn; #9B8C
+鮍 > pī; #9B8D
+鮎 > nián; #9B8E
+鮏 > xīng; #9B8F
+鮐 > tái; #9B90
+鮑 > bào; #9B91
+鮒 > fù; #9B92
+鮓 > zhă; #9B93
+鮔 > jù; #9B94
+鮕 > gū; #9B95
+鮙 > tà; #9B99
+鮚 > jié; #9B9A
+鮛 > shù; #9B9B
+鮜 > hòu; #9B9C
+鮝 > xiăng; #9B9D
+鮞 > ér; #9B9E
+鮟 > àn; #9B9F
+鮠 > wéi; #9BA0
+鮡 > tiāo; #9BA1
+鮢 > zhū; #9BA2
+鮣 > yìn; #9BA3
+鮤 > liè; #9BA4
+鮥 > lùo; #9BA5
+鮦 > tóng; #9BA6
+鮧 > yí; #9BA7
+鮨 > qí; #9BA8
+鮩 > bìng; #9BA9
+鮪 > wĕi; #9BAA
+鮫 > jiăo; #9BAB
+鮬 > bù; #9BAC
+鮭 > gūi; #9BAD
+鮮 > xiān; #9BAE
+鮯 > gé; #9BAF
+鮰 > húi; #9BB0
+鮳 > kăo; #9BB3
+鮵 > dúo; #9BB5
+鮶 > jūn; #9BB6
+鮷 > tí; #9BB7
+鮸 > măn; #9BB8
+鮹 > xiāo; #9BB9
+鮺 > ză; #9BBA
+鮻 > shā; #9BBB
+鮼 > qīn; #9BBC
+鮽 > yú; #9BBD
+鮾 > nĕi; #9BBE
+鮿 > zhé; #9BBF
+鯀 > gŭn; #9BC0
+鯁 > gĕng; #9BC1
+鯂 > su; #9BC2
+鯃 > wú; #9BC3
+鯄 > qíu; #9BC4
+鯅 > tíng; #9BC5
+鯆 > fŭ; #9BC6
+鯇 > wăn; #9BC7
+鯈 > yóu; #9BC8
+鯉 > lĭ; #9BC9
+鯊 > shā; #9BCA
+鯋 > shā; #9BCB
+鯌 > gào; #9BCC
+鯍 > méng; #9BCD
+鯒 > yŏng; #9BD2
+鯓 > ní; #9BD3
+鯔 > zī; #9BD4
+鯕 > qí; #9BD5
+鯖 > qīng; #9BD6
+鯗 > xiăng; #9BD7
+鯘 > nĕi; #9BD8
+鯙 > chún; #9BD9
+鯚 > jì; #9BDA
+鯛 > diāo; #9BDB
+鯜 > qiè; #9BDC
+鯝 > gù; #9BDD
+鯞 > zhŏu; #9BDE
+鯟 > dōng; #9BDF
+鯠 > lái; #9BE0
+鯡 > fēi; #9BE1
+鯢 > ní; #9BE2
+鯣 > yì; #9BE3
+鯤 > kūn; #9BE4
+鯥 > lù; #9BE5
+鯦 > jìu; #9BE6
+鯧 > chāng; #9BE7
+鯨 > jīng; #9BE8
+鯩 > lún; #9BE9
+鯪 > líng; #9BEA
+鯫 > zōu; #9BEB
+鯬 > lí; #9BEC
+鯭 > mĕng; #9BED
+鯮 > zōng; #9BEE
+鯯 > zhì; #9BEF
+鯰 > nián; #9BF0
+鯴 > shī; #9BF4
+鯵 > shēn; #9BF5
+鯶 > hŭn; #9BF6
+鯷 > shì; #9BF7
+鯸 > hóu; #9BF8
+鯹 > xīng; #9BF9
+鯺 > zhū; #9BFA
+鯻 > là; #9BFB
+鯼 > zōng; #9BFC
+鯽 > jì; #9BFD
+鯾 > biān; #9BFE
+鯿 > biān; #9BFF
+鰀 > huàn; #9C00
+鰁 > quán; #9C01
+鰂 > zé; #9C02
+鰃 > wēi; #9C03
+鰄 > wēi; #9C04
+鰅 > yú; #9C05
+鰆 > qūn; #9C06
+鰇 > róu; #9C07
+鰈 > dié; #9C08
+鰉 > huáng; #9C09
+鰊 > liàn; #9C0A
+鰋 > yăn; #9C0B
+鰌 > qíu; #9C0C
+鰍 > qīu; #9C0D
+鰎 > jiàn; #9C0E
+鰏 > bì; #9C0F
+鰐 > è; #9C10
+鰑 > yáng; #9C11
+鰒 > fù; #9C12
+鰓 > sāi; #9C13
+鰔 > jiăn; #9C14
+鰕 > xiá; #9C15
+鰖 > tŭo; #9C16
+鰗 > hú; #9C17
+鰙 > rùo; #9C19
+鰛 > wēn; #9C1B
+鰜 > jiān; #9C1C
+鰝 > hào; #9C1D
+鰞 > wū; #9C1E
+鰟 > fáng; #9C1F
+鰠 > sāo; #9C20
+鰡 > líu; #9C21
+鰢 > mă; #9C22
+鰣 > shí; #9C23
+鰤 > shī; #9C24
+鰥 > yín; #9C25
+鰦 > z̄; #9C26
+鰧 > téng; #9C27
+鰨 > tà; #9C28
+鰩 > yáo; #9C29
+鰪 > gé; #9C2A
+鰫 > róng; #9C2B
+鰬 > qián; #9C2C
+鰭 > qí; #9C2D
+鰮 > wēn; #9C2E
+鰯 > rùo; #9C2F
+鰱 > lián; #9C31
+鰲 > áo; #9C32
+鰳 > lè; #9C33
+鰴 > hūi; #9C34
+鰵 > mĭn; #9C35
+鰶 > jì; #9C36
+鰷 > tiáo; #9C37
+鰸 > qū; #9C38
+鰹 > jiān; #9C39
+鰺 > sāo; #9C3A
+鰻 > mán; #9C3B
+鰼 > xí; #9C3C
+鰽 > qíu; #9C3D
+鰾 > biào; #9C3E
+鰿 > jī; #9C3F
+鱀 > jì; #9C40
+鱁 > zhú; #9C41
+鱂 > jiāng; #9C42
+鱃 > qīu; #9C43
+鱄 > zhuān; #9C44
+鱅 > yóng; #9C45
+鱆 > zhāng; #9C46
+鱇 > kāng; #9C47
+鱈 > xuĕ; #9C48
+鱉 > biē; #9C49
+鱊 > jué; #9C4A
+鱋 > qū; #9C4B
+鱌 > xiàng; #9C4C
+鱍 > bō; #9C4D
+鱎 > jiāo; #9C4E
+鱏 > xún; #9C4F
+鱐 > sù; #9C50
+鱑 > huáng; #9C51
+鱒 > zùn; #9C52
+鱓 > shàn; #9C53
+鱔 > shàn; #9C54
+鱕 > fān; #9C55
+鱖 > jué; #9C56
+鱗 > lín; #9C57
+鱘 > xún; #9C58
+鱙 > miáo; #9C59
+鱚 > xĭ; #9C5A
+鱝 > fèn; #9C5D
+鱞 > guān; #9C5E
+鱟 > hòu; #9C5F
+鱠 > kuài; #9C60
+鱡 > zéi; #9C61
+鱢 > sāo; #9C62
+鱣 > zhān; #9C63
+鱤 > găn; #9C64
+鱥 > gùi; #9C65
+鱦 > shéng; #9C66
+鱧 > lĭ; #9C67
+鱨 > cháng; #9C68
+鱬 > rú; #9C6C
+鱭 > jì; #9C6D
+鱮 > xù; #9C6E
+鱯 > hùo; #9C6F
+鱱 > lì; #9C71
+鱲 > liè; #9C72
+鱳 > lì; #9C73
+鱴 > miè; #9C74
+鱵 > zhēn; #9C75
+鱶 > xiăng; #9C76
+鱷 > è; #9C77
+鱸 > lú; #9C78
+鱹 > guàn; #9C79
+鱺 > lí; #9C7A
+鱻 > xiān; #9C7B
+鱼 > yú; #9C7C
+鱽 > dāo; #9C7D
+鱾 > jĭ; #9C7E
+鱿 > yóu; #9C7F
+鲀 > tún; #9C80
+鲁 > lŭ; #9C81
+鲂 > fáng; #9C82
+鲃 > bā; #9C83
+鲄 > hé; #9C84
+鲅 > bō; #9C85
+鲆 > píng; #9C86
+鲇 > nián; #9C87
+鲈 > lú; #9C88
+鲉 > yóu; #9C89
+鲊 > zhă; #9C8A
+鲋 > fù; #9C8B
+鲌 > bó; #9C8C
+鲍 > bào; #9C8D
+鲎 > hòu; #9C8E
+鲏 > pī; #9C8F
+鲐 > tái; #9C90
+鲑 > gūi; #9C91
+鲒 > jié; #9C92
+鲓 > kăo; #9C93
+鲔 > wĕi; #9C94
+鲕 > ér; #9C95
+鲖 > tóng; #9C96
+鲗 > zé; #9C97
+鲘 > hòu; #9C98
+鲙 > kuài; #9C99
+鲚 > jì; #9C9A
+鲛 > jiăo; #9C9B
+鲜 > xiān; #9C9C
+鲝 > ză; #9C9D
+鲞 > xiăng; #9C9E
+鲟 > xún; #9C9F
+鲠 > gĕng; #9CA0
+鲡 > lí; #9CA1
+鲢 > lián; #9CA2
+鲣 > jiān; #9CA3
+鲤 > lĭ; #9CA4
+鲥 > shí; #9CA5
+鲦 > tiáo; #9CA6
+鲧 > gŭn; #9CA7
+鲨 > shā; #9CA8
+鲩 > wăn; #9CA9
+鲪 > jūn; #9CAA
+鲫 > jì; #9CAB
+鲬 > yŏng; #9CAC
+鲭 > qīng; #9CAD
+鲮 > líng; #9CAE
+鲯 > qí; #9CAF
+鲰 > zōu; #9CB0
+鲱 > fēi; #9CB1
+鲲 > kūn; #9CB2
+鲳 > chāng; #9CB3
+鲴 > gù; #9CB4
+鲵 > ní; #9CB5
+鲶 > nián; #9CB6
+鲷 > diāo; #9CB7
+鲸 > jīng; #9CB8
+鲹 > shēn; #9CB9
+鲺 > shī; #9CBA
+鲻 > zī; #9CBB
+鲼 > fèn; #9CBC
+鲽 > dié; #9CBD
+鲾 > bì; #9CBE
+鲿 > cháng; #9CBF
+鳀 > shì; #9CC0
+鳁 > wēn; #9CC1
+鳂 > wēi; #9CC2
+鳃 > sāi; #9CC3
+鳄 > è; #9CC4
+鳅 > qīu; #9CC5
+鳆 > fù; #9CC6
+鳇 > huáng; #9CC7
+鳈 > quán; #9CC8
+鳉 > jiāng; #9CC9
+鳊 > biān; #9CCA
+鳋 > sāo; #9CCB
+鳌 > áo; #9CCC
+鳍 > qí; #9CCD
+鳎 > tà; #9CCE
+鳏 > yín; #9CCF
+鳐 > yáo; #9CD0
+鳑 > fáng; #9CD1
+鳒 > jiān; #9CD2
+鳓 > lè; #9CD3
+鳔 > biào; #9CD4
+鳕 > xuĕ; #9CD5
+鳖 > biē; #9CD6
+鳗 > mán; #9CD7
+鳘 > mĭn; #9CD8
+鳙 > yóng; #9CD9
+鳚 > wèi; #9CDA
+鳛 > xí; #9CDB
+鳜 > jué; #9CDC
+鳝 > shàn; #9CDD
+鳞 > lín; #9CDE
+鳟 > zùn; #9CDF
+鳠 > hùo; #9CE0
+鳡 > găn; #9CE1
+鳢 > lĭ; #9CE2
+鳣 > zhān; #9CE3
+鳤 > guăn; #9CE4
+鳥 > niăo; #9CE5
+鳦 > yĭ; #9CE6
+鳧 > fú; #9CE7
+鳨 > lì; #9CE8
+鳩 > jīu; #9CE9
+鳪 > bŭ; #9CEA
+鳫 > yàn; #9CEB
+鳬 > fú; #9CEC
+鳭 > diāo; #9CED
+鳮 > jī; #9CEE
+鳯 > fèng; #9CEF
+鳱 > gān; #9CF1
+鳲 > shī; #9CF2
+鳳 > fèng; #9CF3
+鳴 > míng; #9CF4
+鳵 > băo; #9CF5
+鳶 > yuān; #9CF6
+鳷 > zhī; #9CF7
+鳸 > hù; #9CF8
+鳹 > qín; #9CF9
+鳺 > fū; #9CFA
+鳻 > fēn; #9CFB
+鳼 > wén; #9CFC
+鳽 > jiān; #9CFD
+鳾 > shī; #9CFE
+鳿 > yù; #9CFF
+鴀 > fŏu; #9D00
+鴁 > yiāo; #9D01
+鴂 > juè; #9D02
+鴃 > jué; #9D03
+鴄 > pī; #9D04
+鴅 > huān; #9D05
+鴆 > zhèn; #9D06
+鴇 > băo; #9D07
+鴈 > yàn; #9D08
+鴉 > yā; #9D09
+鴊 > zhèng; #9D0A
+鴋 > fāng; #9D0B
+鴌 > fèng; #9D0C
+鴍 > wén; #9D0D
+鴎 > ōu; #9D0E
+鴏 > tè; #9D0F
+鴐 > jiā; #9D10
+鴑 > nú; #9D11
+鴒 > líng; #9D12
+鴓 > miè; #9D13
+鴔 > fú; #9D14
+鴕 > túo; #9D15
+鴖 > wén; #9D16
+鴗 > lì; #9D17
+鴘 > biàn; #9D18
+鴙 > zhì; #9D19
+鴚 > gē; #9D1A
+鴛 > yuān; #9D1B
+鴜 > zī; #9D1C
+鴝 > qú; #9D1D
+鴞 > xiāo; #9D1E
+鴟 > zhī; #9D1F
+鴠 > dàn; #9D20
+鴡 > jū; #9D21
+鴢 > yòu; #9D22
+鴣 > gū; #9D23
+鴤 > zhōng; #9D24
+鴥 > yù; #9D25
+鴦 > yāng; #9D26
+鴧 > ròng; #9D27
+鴨 > yā; #9D28
+鴩 > tiĕ; #9D29
+鴪 > yù; #9D2A
+鴬 > yīng; #9D2C
+鴭 > zhūi; #9D2D
+鴮 > wū; #9D2E
+鴯 > ér; #9D2F
+鴰 > guā; #9D30
+鴱 > ài; #9D31
+鴲 > zhī; #9D32
+鴳 > yàn; #9D33
+鴴 > héng; #9D34
+鴵 > jiāo; #9D35
+鴶 > jí; #9D36
+鴷 > liè; #9D37
+鴸 > zhū; #9D38
+鴹 > rén; #9D39
+鴺 > yí; #9D3A
+鴻 > hóng; #9D3B
+鴼 > lùo; #9D3C
+鴽 > rú; #9D3D
+鴾 > móu; #9D3E
+鴿 > gē; #9D3F
+鵀 > rèn; #9D40
+鵁 > jiāo; #9D41
+鵂 > xīu; #9D42
+鵃 > zhōu; #9D43
+鵄 > zhī; #9D44
+鵅 > lùo; #9D45
+鵉 > luán; #9D49
+鵊 > jiá; #9D4A
+鵋 > jì; #9D4B
+鵌 > yú; #9D4C
+鵍 > huān; #9D4D
+鵎 > tŭo; #9D4E
+鵏 > bū; #9D4F
+鵐 > wú; #9D50
+鵑 > juān; #9D51
+鵒 > yù; #9D52
+鵓 > bó; #9D53
+鵔 > xùn; #9D54
+鵕 > xùn; #9D55
+鵖 > bì; #9D56
+鵗 > xī; #9D57
+鵘 > jùn; #9D58
+鵙 > jú; #9D59
+鵚 > tú; #9D5A
+鵛 > jīng; #9D5B
+鵜 > tí; #9D5C
+鵝 > é; #9D5D
+鵞 > é; #9D5E
+鵟 > kuáng; #9D5F
+鵠 > hú; #9D60
+鵡 > wŭ; #9D61
+鵢 > shēn; #9D62
+鵣 > lài; #9D63
+鵦 > lù; #9D66
+鵧 > píng; #9D67
+鵨 > shū; #9D68
+鵩 > fú; #9D69
+鵪 > ān; #9D6A
+鵫 > zhào; #9D6B
+鵬 > péng; #9D6C
+鵭 > qín; #9D6D
+鵮 > qiān; #9D6E
+鵯 > bēi; #9D6F
+鵰 > diāo; #9D70
+鵱 > lù; #9D71
+鵲 > què; #9D72
+鵳 > jiān; #9D73
+鵴 > jú; #9D74
+鵵 > tù; #9D75
+鵶 > yā; #9D76
+鵷 > yuān; #9D77
+鵸 > qí; #9D78
+鵹 > lí; #9D79
+鵺 > yè; #9D7A
+鵻 > zhūi; #9D7B
+鵼 > kōng; #9D7C
+鵽 > zhùi; #9D7D
+鵾 > kūn; #9D7E
+鵿 > shēng; #9D7F
+鶀 > qí; #9D80
+鶁 > jīng; #9D81
+鶂 > yì; #9D82
+鶃 > yì; #9D83
+鶄 > jīng; #9D84
+鶅 > zī; #9D85
+鶆 > lái; #9D86
+鶇 > dōng; #9D87
+鶈 > qī; #9D88
+鶉 > chún; #9D89
+鶊 > gēng; #9D8A
+鶋 > jū; #9D8B
+鶌 > qū; #9D8C
+鶏 > jī; #9D8F
+鶐 > shù; #9D90
+鶒 > chì; #9D92
+鶓 > miáo; #9D93
+鶔 > róu; #9D94
+鶕 > ān; #9D95
+鶖 > qīu; #9D96
+鶗 > tí; #9D97
+鶘 > hú; #9D98
+鶙 > tí; #9D99
+鶚 > è; #9D9A
+鶛 > jiē; #9D9B
+鶜 > máo; #9D9C
+鶝 > fú; #9D9D
+鶞 > chūn; #9D9E
+鶟 > tú; #9D9F
+鶠 > yăn; #9DA0
+鶡 > hé; #9DA1
+鶢 > yuán; #9DA2
+鶣 > piān; #9DA3
+鶤 > yùn; #9DA4
+鶥 > méi; #9DA5
+鶦 > hú; #9DA6
+鶧 > yīng; #9DA7
+鶨 > dùn; #9DA8
+鶩 > mù; #9DA9
+鶪 > jú; #9DAA
+鶬 > cāng; #9DAC
+鶭 > făng; #9DAD
+鶮 > gù; #9DAE
+鶯 > yīng; #9DAF
+鶰 > yuán; #9DB0
+鶱 > xuān; #9DB1
+鶲 > wēng; #9DB2
+鶳 > shī; #9DB3
+鶴 > hè; #9DB4
+鶵 > chú; #9DB5
+鶶 > táng; #9DB6
+鶷 > xià; #9DB7
+鶸 > rùo; #9DB8
+鶹 > líu; #9DB9
+鶺 > jí; #9DBA
+鶻 > gú; #9DBB
+鶼 > jiān; #9DBC
+鶽 > zhŭn; #9DBD
+鶾 > hàn; #9DBE
+鶿 > zī; #9DBF
+鷀 > zī; #9DC0
+鷁 > nì; #9DC1
+鷂 > yào; #9DC2
+鷃 > yàn; #9DC3
+鷄 > jī; #9DC4
+鷅 > lì; #9DC5
+鷆 > tián; #9DC6
+鷇 > kòu; #9DC7
+鷈 > tī; #9DC8
+鷉 > tī; #9DC9
+鷊 > nì; #9DCA
+鷋 > tú; #9DCB
+鷌 > mă; #9DCC
+鷍 > jiāo; #9DCD
+鷎 > gāo; #9DCE
+鷏 > tián; #9DCF
+鷐 > chén; #9DD0
+鷑 > lì; #9DD1
+鷒 > zhuān; #9DD2
+鷓 > zhè; #9DD3
+鷔 > áo; #9DD4
+鷕 > yăo; #9DD5
+鷖 > yī; #9DD6
+鷗 > ōu; #9DD7
+鷘 > chì; #9DD8
+鷙 > zhì; #9DD9
+鷚 > liáo; #9DDA
+鷛 > róng; #9DDB
+鷜 > lóu; #9DDC
+鷝 > bì; #9DDD
+鷞 > shuāng; #9DDE
+鷟 > zhúo; #9DDF
+鷠 > yú; #9DE0
+鷡 > wú; #9DE1
+鷢 > jué; #9DE2
+鷣 > yín; #9DE3
+鷤 > quán; #9DE4
+鷥 > sī; #9DE5
+鷦 > jiāo; #9DE6
+鷧 > yì; #9DE7
+鷨 > huā; #9DE8
+鷩 > bì; #9DE9
+鷪 > yīng; #9DEA
+鷫 > sù; #9DEB
+鷬 > huáng; #9DEC
+鷭 > fán; #9DED
+鷮 > jiāo; #9DEE
+鷯 > liáo; #9DEF
+鷰 > yàn; #9DF0
+鷱 > kāo; #9DF1
+鷲 > jìu; #9DF2
+鷳 > xián; #9DF3
+鷴 > xián; #9DF4
+鷵 > tú; #9DF5
+鷶 > măi; #9DF6
+鷷 > zūn; #9DF7
+鷸 > yù; #9DF8
+鷹 > yīng; #9DF9
+鷺 > lù; #9DFA
+鷻 > tuán; #9DFB
+鷼 > xián; #9DFC
+鷽 > xué; #9DFD
+鷾 > yì; #9DFE
+鷿 > pì; #9DFF
+鸀 > shú; #9E00
+鸁 > lúo; #9E01
+鸂 > qī; #9E02
+鸃 > yí; #9E03
+鸄 > jí; #9E04
+鸅 > zhé; #9E05
+鸆 > yú; #9E06
+鸇 > zhān; #9E07
+鸈 > yè; #9E08
+鸉 > yáng; #9E09
+鸊 > pì; #9E0A
+鸋 > níng; #9E0B
+鸌 > hùo; #9E0C
+鸍 > mí; #9E0D
+鸎 > yīng; #9E0E
+鸏 > méng; #9E0F
+鸐 > dí; #9E10
+鸑 > yuè; #9E11
+鸒 > yú; #9E12
+鸓 > lĕi; #9E13
+鸔 > bào; #9E14
+鸕 > lú; #9E15
+鸖 > hè; #9E16
+鸗 > lóng; #9E17
+鸘 > shuāng; #9E18
+鸙 > yuè; #9E19
+鸚 > yīng; #9E1A
+鸛 > guàn; #9E1B
+鸜 > qú; #9E1C
+鸝 > lí; #9E1D
+鸞 > luán; #9E1E
+鸟 > niăo; #9E1F
+鸠 > jīu; #9E20
+鸡 > jī; #9E21
+鸢 > yuān; #9E22
+鸣 > míng; #9E23
+鸤 > shī; #9E24
+鸥 > ōu; #9E25
+鸦 > yā; #9E26
+鸧 > cāng; #9E27
+鸨 > băo; #9E28
+鸩 > zhèn; #9E29
+鸪 > gū; #9E2A
+鸫 > dōng; #9E2B
+鸬 > lú; #9E2C
+鸭 > yā; #9E2D
+鸮 > xiāo; #9E2E
+鸯 > yāng; #9E2F
+鸰 > líng; #9E30
+鸱 > zhī; #9E31
+鸲 > qú; #9E32
+鸳 > yuān; #9E33
+鸴 > xué; #9E34
+鸵 > túo; #9E35
+鸶 > sī; #9E36
+鸷 > zhì; #9E37
+鸸 > ér; #9E38
+鸹 > guā; #9E39
+鸺 > xīu; #9E3A
+鸻 > héng; #9E3B
+鸼 > zhōu; #9E3C
+鸽 > gē; #9E3D
+鸾 > luán; #9E3E
+鸿 > hóng; #9E3F
+鹀 > wú; #9E40
+鹁 > bó; #9E41
+鹂 > lí; #9E42
+鹃 > juān; #9E43
+鹄 > hú; #9E44
+鹅 > é; #9E45
+鹆 > yù; #9E46
+鹇 > xián; #9E47
+鹈 > tí; #9E48
+鹉 > wŭ; #9E49
+鹊 > què; #9E4A
+鹋 > miáo; #9E4B
+鹌 > ān; #9E4C
+鹍 > kūn; #9E4D
+鹎 > bēi; #9E4E
+鹏 > péng; #9E4F
+鹐 > qiān; #9E50
+鹑 > chún; #9E51
+鹒 > gēng; #9E52
+鹓 > yuān; #9E53
+鹔 > sù; #9E54
+鹕 > hú; #9E55
+鹖 > hé; #9E56
+鹗 > è; #9E57
+鹘 > gú; #9E58
+鹙 > qīu; #9E59
+鹚 > zī; #9E5A
+鹛 > méi; #9E5B
+鹜 > mù; #9E5C
+鹝 > nì; #9E5D
+鹞 > yào; #9E5E
+鹟 > wēng; #9E5F
+鹠 > líu; #9E60
+鹡 > jí; #9E61
+鹢 > nì; #9E62
+鹣 > jiān; #9E63
+鹤 > hè; #9E64
+鹥 > yī; #9E65
+鹦 > yīng; #9E66
+鹧 > zhè; #9E67
+鹨 > liáo; #9E68
+鹩 > liáo; #9E69
+鹪 > jiāo; #9E6A
+鹫 > jìu; #9E6B
+鹬 > yù; #9E6C
+鹭 > lù; #9E6D
+鹮 > xuán; #9E6E
+鹯 > zhān; #9E6F
+鹰 > yīng; #9E70
+鹱 > hùo; #9E71
+鹲 > méng; #9E72
+鹳 > guàn; #9E73
+鹴 > shuāng; #9E74
+鹵 > lŭ; #9E75
+鹶 > jīn; #9E76
+鹷 > líng; #9E77
+鹸 > jiăn; #9E78
+鹹 > xián; #9E79
+鹺 > cúo; #9E7A
+鹻 > jiăn; #9E7B
+鹼 > jiăn; #9E7C
+鹽 > yán; #9E7D
+鹾 > cúo; #9E7E
+鹿 > lù; #9E7F
+麀 > yōu; #9E80
+麁 > cū; #9E81
+麂 > jĭ; #9E82
+麃 > biāo; #9E83
+麄 > cū; #9E84
+麅 > biāo; #9E85
+麆 > zhù; #9E86
+麇 > jūn; #9E87
+麈 > zhŭ; #9E88
+麉 > jiān; #9E89
+麊 > mí; #9E8A
+麋 > mí; #9E8B
+麌 > wú; #9E8C
+麍 > líu; #9E8D
+麎 > chén; #9E8E
+麏 > jūn; #9E8F
+麐 > lín; #9E90
+麑 > ní; #9E91
+麒 > qí; #9E92
+麓 > lù; #9E93
+麔 > jìu; #9E94
+麕 > jūn; #9E95
+麖 > jīng; #9E96
+麗 > lì; #9E97
+麘 > xiāng; #9E98
+麙 > yán; #9E99
+麚 > jiā; #9E9A
+麛 > mí; #9E9B
+麜 > lì; #9E9C
+麝 > shè; #9E9D
+麞 > zhāng; #9E9E
+麟 > lín; #9E9F
+麠 > jīng; #9EA0
+麡 > jī; #9EA1
+麢 > líng; #9EA2
+麣 > yán; #9EA3
+麤 > cū; #9EA4
+麥 > mài; #9EA5
+麦 > mài; #9EA6
+麧 > gē; #9EA7
+麨 > chăo; #9EA8
+麩 > fū; #9EA9
+麪 > miăn; #9EAA
+麫 > miăn; #9EAB
+麬 > fū; #9EAC
+麭 > pào; #9EAD
+麮 > qù; #9EAE
+麯 > qú; #9EAF
+麰 > móu; #9EB0
+麱 > fū; #9EB1
+麲 > xiàn; #9EB2
+麳 > lái; #9EB3
+麴 > qú; #9EB4
+麵 > miàn; #9EB5
+麷 > fēng; #9EB7
+麸 > fū; #9EB8
+麹 > qú; #9EB9
+麺 > miàn; #9EBA
+麻 > má; #9EBB
+麼 > mo; #9EBC
+麽 > mo; #9EBD
+麾 > hūi; #9EBE
+黀 > zōu; #9EC0
+黁 > nēn; #9EC1
+黂 > fén; #9EC2
+黃 > huáng; #9EC3
+黄 > huáng; #9EC4
+黅 > jīn; #9EC5
+黆 > guāng; #9EC6
+黇 > tiān; #9EC7
+黈 > tŏu; #9EC8
+黉 > héng; #9EC9
+黊 > xī; #9ECA
+黋 > kuăng; #9ECB
+黌 > héng; #9ECC
+黍 > shŭ; #9ECD
+黎 > lí; #9ECE
+黏 > nián; #9ECF
+黐 > chī; #9ED0
+黑 > hēi; #9ED1
+黒 > hēi; #9ED2
+黓 > yì; #9ED3
+黔 > qián; #9ED4
+黕 > dān; #9ED5
+黖 > xì; #9ED6
+黗 > tuăn; #9ED7
+默 > mò; #9ED8
+黙 > mò; #9ED9
+黚 > qián; #9EDA
+黛 > dài; #9EDB
+黜 > chù; #9EDC
+黝 > yŏu; #9EDD
+點 > diăn; #9EDE
+黟 > yī; #9EDF
+黠 > xiá; #9EE0
+黡 > yăn; #9EE1
+黢 > qū; #9EE2
+黣 > mĕi; #9EE3
+黤 > yăn; #9EE4
+黥 > jīng; #9EE5
+黦 > yù; #9EE6
+黧 > lí; #9EE7
+黨 > dăng; #9EE8
+黩 > dú; #9EE9
+黪 > căn; #9EEA
+黫 > yīn; #9EEB
+黬 > àn; #9EEC
+黭 > yān; #9EED
+黮 > tăn; #9EEE
+黯 > àn; #9EEF
+黰 > zhĕn; #9EF0
+黱 > dài; #9EF1
+黲 > căn; #9EF2
+黳 > yī; #9EF3
+黴 > méi; #9EF4
+黵 > dăn; #9EF5
+黶 > yăn; #9EF6
+黷 > dú; #9EF7
+黸 > lú; #9EF8
+黹 > zhĭ; #9EF9
+黺 > fĕn; #9EFA
+黻 > fù; #9EFB
+黼 > fŭ; #9EFC
+黽 > mĭn; #9EFD
+黾 > mĭn; #9EFE
+黿 > yuán; #9EFF
+鼀 > cù; #9F00
+鼁 > qù; #9F01
+鼂 > cháo; #9F02
+鼃 > wā; #9F03
+鼄 > zhū; #9F04
+鼅 > zhī; #9F05
+鼆 > máng; #9F06
+鼇 > áo; #9F07
+鼈 > biē; #9F08
+鼉 > túo; #9F09
+鼊 > bì; #9F0A
+鼋 > yuán; #9F0B
+鼌 > cháo; #9F0C
+鼍 > túo; #9F0D
+鼎 > dĭng; #9F0E
+鼏 > mì; #9F0F
+鼐 > nài; #9F10
+鼑 > dĭng; #9F11
+鼒 > zī; #9F12
+鼓 > gŭ; #9F13
+鼔 > gŭ; #9F14
+鼕 > dōng; #9F15
+鼖 > fén; #9F16
+鼗 > táo; #9F17
+鼘 > yuān; #9F18
+鼙 > pí; #9F19
+鼚 > chāng; #9F1A
+鼛 > gāo; #9F1B
+鼜 > qì; #9F1C
+鼝 > yuān; #9F1D
+鼞 > tāng; #9F1E
+鼟 > tēng; #9F1F
+鼠 > shŭ; #9F20
+鼡 > shŭ; #9F21
+鼢 > fén; #9F22
+鼣 > fèi; #9F23
+鼤 > wén; #9F24
+鼥 > bá; #9F25
+鼦 > diāo; #9F26
+鼧 > túo; #9F27
+鼨 > tóng; #9F28
+鼩 > qú; #9F29
+鼪 > shēng; #9F2A
+鼫 > shí; #9F2B
+鼬 > yòu; #9F2C
+鼭 > shí; #9F2D
+鼮 > tíng; #9F2E
+鼯 > wú; #9F2F
+鼰 > niàn; #9F30
+鼱 > jīng; #9F31
+鼲 > hún; #9F32
+鼳 > jú; #9F33
+鼴 > yăn; #9F34
+鼵 > tú; #9F35
+鼶 > tí; #9F36
+鼷 > xī; #9F37
+鼸 > xiăn; #9F38
+鼹 > yăn; #9F39
+鼺 > léi; #9F3A
+鼻 > bí; #9F3B
+鼼 > yăo; #9F3C
+鼽 > qíu; #9F3D
+鼾 > hān; #9F3E
+鼿 > wū; #9F3F
+齀 > wù; #9F40
+齁 > hóu; #9F41
+齂 > xì; #9F42
+齃 > gé; #9F43
+齄 > zhā; #9F44
+齅 > xìu; #9F45
+齆 > wèng; #9F46
+齇 > zhā; #9F47
+齈 > nóng; #9F48
+齉 > nàng; #9F49
+齊 > qí; #9F4A
+齋 > zhāi; #9F4B
+齌 > jì; #9F4C
+齍 > zī; #9F4D
+齎 > jī; #9F4E
+齏 > jī; #9F4F
+齐 > qí; #9F50
+齑 > jī; #9F51
+齒 > chĭ; #9F52
+齓 > chèn; #9F53
+齔 > chèn; #9F54
+齕 > hé; #9F55
+齖 > yá; #9F56
+齗 > kĕn; #9F57
+齘 > xiè; #9F58
+齙 > páo; #9F59
+齚 > cùo; #9F5A
+齛 > shì; #9F5B
+齜 > zī; #9F5C
+齝 > chī; #9F5D
+齞 > niàn; #9F5E
+齟 > jŭ; #9F5F
+齠 > tiáo; #9F60
+齡 > líng; #9F61
+齢 > líng; #9F62
+齣 > chū; #9F63
+齤 > quán; #9F64
+齥 > xiè; #9F65
+齦 > kĕn; #9F66
+齧 > niè; #9F67
+齨 > jìu; #9F68
+齩 > yăo; #9F69
+齪 > chùo; #9F6A
+齫 > kŭn; #9F6B
+齬 > yŭ; #9F6C
+齭 > chŭ; #9F6D
+齮 > yĭ; #9F6E
+齯 > ní; #9F6F
+齰 > cùo; #9F70
+齱 > zōu; #9F71
+齲 > qŭ; #9F72
+齳 > nĕn; #9F73
+齴 > xiăn; #9F74
+齵 > óu; #9F75
+齶 > è; #9F76
+齷 > wò; #9F77
+齸 > yì; #9F78
+齹 > chūo; #9F79
+齺 > zōu; #9F7A
+齻 > diān; #9F7B
+齼 > chŭ; #9F7C
+齽 > jìn; #9F7D
+齾 > yà; #9F7E
+齿 > chĭ; #9F7F
+龀 > chèn; #9F80
+龁 > hé; #9F81
+龂 > kĕn; #9F82
+龃 > jŭ; #9F83
+龄 > líng; #9F84
+龅 > páo; #9F85
+龆 > tiáo; #9F86
+龇 > zī; #9F87
+龈 > kĕn; #9F88
+龉 > yŭ; #9F89
+龊 > chùo; #9F8A
+龋 > qŭ; #9F8B
+龌 > wò; #9F8C
+龍 > lóng; #9F8D
+龎 > páng; #9F8E
+龏 > gōng; #9F8F
+龐 > páng; #9F90
+龑 > yăn; #9F91
+龒 > lóng; #9F92
+龓 > lóng; #9F93
+龔 > gōng; #9F94
+龕 > kān; #9F95
+龖 > tà; #9F96
+龗 > líng; #9F97
+龘 > tà; #9F98
+龙 > lóng; #9F99
+龚 > gōng; #9F9A
+龛 > kān; #9F9B
+龜 > gūi; #9F9C
+龝 > qīu; #9F9D
+龞 > biē; #9F9E
+龟 > gūi; #9F9F
+龠 > yuè; #9FA0
+龡 > chùi; #9FA1
+龢 > hé; #9FA2
+龣 > jué; #9FA3
+龤 > xié; #9FA4
+龥 > yù; #9FA5
+癩 > là; #F90E
+兀 > wù; #FA0C
+嗀 > hùo; #FA0D
+塚 > zhŏng; #FA10
+晴 > qíng; #FA12
+凞 > xī; #FA15
+猪 > zhū; #FA16
+益 > yì; #FA17
+礼 > lĭ; #FA18
+神 > shén; #FA19
+祥 > xiáng; #FA1A
+福 > fú; #FA1B
+靖 > jìng; #FA1C
+精 > jīng; #FA1D
+羽 > yŭ; #FA1E
+諸 > zhū; #FA22
+逸 > yì; #FA25
+都 > dū; #FA26
+飯 > fàn; #FA2A
+飼 > sì; #FA2B
+館 > guăn; #FA2C
+鶴 > hè; #FA2D
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
new file mode 100644
index 0000000..fe353f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
@@ -0,0 +1,6366 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:02 2001
+#--------------------------------------------------------------------
+
+# Kanji-English
+
+丁>'[male adult]';
+七>'[seven]';
+万>'[ten thousand]';
+丈>'[unit of length equal 3.3 meters]';
+三>'[three]';
+上>'[top]';
+下>'[under]';
+不>'[no]';
+与>'[and]';
+丐>'[beggar]';
+丑>'[clown]';
+且>'[moreover]';
+丕>'[great]';
+世>'[generation]';
+丗>'[thirty]';
+丘>'[hill]';
+丙>'[third of heavenly stems]';
+丞>'[assist]';
+両>'[two]';
+並>'[equal to]';
+个>'[numerary adjunct]';
+中>'[central]';
+丱>'[child''s hairstyle bound in two tufts]';
+串>'[string]';
+丶>'[dot]';
+丸>'[small round object]';
+丹>'[cinnabar (native HgS)]';
+主>'[master]';
+丼>'[bowl of food]';
+丿>'[line]';
+乂>'[govern]';
+乃>'[then]';
+久>'[long time (ago)]';
+之>'[''s (marks preceding phrase as modifier of following phrase)]';
+乍>'[suddenly]';
+乎>'[interrogative or exclamatory final particle]';
+乏>'[lack]';
+乕>'[tiger]';
+乖>'[rebel]';
+乗>'[ride]';
+乘>'[ride]';
+乙>'[second heaven''s stem]';
+九>'[nine]';
+乞>'[beg]';
+也>'[also]';
+乢>'[lid]';
+乱>'[confusion]';
+乳>'[breast]';
+乾>'[dry]';
+亀>'[turtle or tortoise]';
+亂>'[confusion]';
+亅>'[hook]';
+了>'[to finish]';
+予>'[I]';
+争>'[dispute]';
+亊>'[affair]';
+事>'[affair]';
+二>'[two]';
+于>'[in]';
+云>'[say]';
+互>'[mutually]';
+五>'[five]';
+井>'[well]';
+亘>'[extend across]';
+亙>'[extend across]';
+些>'[little]';
+亜>'[asia]';
+亞>'[asia]';
+亟>'[urgently]';
+亠>'[head]';
+亡>'[death]';
+亢>'[high]';
+交>'[mix]';
+亥>'[last of 12 earth branches]';
+亦>'[also]';
+亨>'[smoothly]';
+享>'[enjoy]';
+京>'[capital city]';
+亭>'[pavilion]';
+亮>'[bright]';
+亰>'[capital city]';
+亳>'[name of district in Anhui]';
+亶>'[sincere]';
+人>'[man]';
+什>'[file of ten soldiers]';
+仁>'[humaneness]';
+仂>'[surplus or excess]';
+仄>'[slanting]';
+仆>'[fall forward]';
+仇>'[enemy]';
+今>'[now]';
+介>'[forerunner]';
+仍>'[yet]';
+从>'[from]';
+仏>'[buddha]';
+仔>'[small thing]';
+仕>'[official]';
+他>'[other]';
+仗>'[rely upon]';
+付>'[give]';
+仙>'[Taoist super-being]';
+仝>'[together]';
+仞>'[ancient unit of measure (8 feet)]';
+仟>'[one thousand]';
+代>'[replace]';
+令>'[command]';
+以>'[by means of]';
+仭>'[ancient unit of measure (8 feet)]';
+仮>'[falsehood]';
+仰>'[raise the head to look]';
+仲>'[middle brother]';
+件>'[numerary adjunct for article]';
+价>'[price]';
+任>'[trust to]';
+企>'[plan a project]';
+伉>'[compare]';
+伊>'[third person pronoun]';
+伍>'[five]';
+伎>'[talent]';
+伏>'[crouch]';
+伐>'[cut down]';
+休>'[rest]';
+会>'[assemble]';
+伜>'[deputy]';
+伝>'[summon]';
+伯>'[older brother]';
+估>'[merchant]';
+伴>'[companion]';
+伶>'[lonely]';
+伸>'[extend]';
+伺>'[serve]';
+似>'[resemble]';
+伽>'[transcription of sanskrit gha in buddhist texts ('ëmâæ' \"samgha\")]';
+佃>'[tenant farmer]';
+但>'[only]';
+佇>'[wait]';
+位>'[throne]';
+低>'[low]';
+住>'[reside]';
+佐>'[assist]';
+佑>'[help]';
+体>'[body]';
+何>'[what]';
+佗>'[other]';
+余>'[I]';
+佚>'[indulge in pleasures]';
+佛>'[buddha (contraction of MC 'bhiêtdha')]';
+作>'[make]';
+佝>'[rickets]';
+佞>'[flattery]';
+佩>'[belt ornament]';
+佯>'[pretend]';
+佰>'[hundred]';
+佳>'[good]';
+併>'[combine]';
+佶>'[strong]';
+佻>'[frivolous]';
+佼>'[beautiful]';
+使>'[cause]';
+侃>'[upright and strong]';
+來>'[come]';
+侈>'[luxurious]';
+例>'[precedent]';
+侍>'[serve]';
+侏>'[small]';
+侑>'[help]';
+侖>'[logical reasons]';
+侘>'[disappointed]';
+供>'[supply]';
+依>'[rely on]';
+侠>'[chivalrous person]';
+価>'[price]';
+侫>'[flattery]';
+侭>'[complete]';
+侮>'[insult]';
+侯>'[marquis]';
+侵>'[invade]';
+侶>'[companion]';
+便>'[convenience]';
+係>'[bind]';
+促>'[urge]';
+俄>'[sudden(ly)]';
+俊>'[talented]';
+俎>'[chopping board or block]';
+俐>'[smooth]';
+俑>'[wooden figure buried with dead]';
+俔>'[like]';
+俗>'[social customs]';
+俘>'[prisoner of war]';
+俚>'[rustic]';
+俛>'[make effort]';
+保>'[protect]';
+俟>'[wait for]';
+信>'[trust]';
+俣>'[big]';
+#"俣>'[big]'",
+俥>'[rickshaw]';
+修>'[study]';
+俯>'[bow down]';
+俳>'[actor]';
+俵>'[divide]';
+俶>'[start]';
+俸>'[wages]';
+俺>'[personal pronoun]';
+俾>'[so that]';
+倅>'[deputy]';
+倆>'[clever]';
+倉>'[granary]';
+個>'[numerary adjunct]';
+倍>'[times]';
+倏>'[hastily]';
+們>'[adjunct pronoun indicate plural]';
+倒>'[fall over]';
+倔>'[stubborn]';
+倖>'[lucky]';
+候>'[wait]';
+倚>'[rely on]';
+借>'[borrow]';
+倡>'[guide]';
+倣>'[imitate]';
+値>'[price]';
+倥>'[boorish]';
+倦>'[be tired of]';
+倨>'[arrogant]';
+倩>'[beautiful]';
+倪>'[feeble]';
+倫>'[normal human relationships]';
+倬>'[noticeable]';
+倭>'[dwarf]';
+倶>'[all]';
+倹>'[temperate]';
+偃>'[cease]';
+假>'[falsehood]';
+偈>'[brave]';
+偉>'[great]';
+偏>'[inclined one side]';
+偐>'[false]';
+偕>'[together]';
+偖>'[rip up]';
+做>'[work]';
+停>'[stop]';
+健>'[strong]';
+偬>'[urgent]';
+偲>'[talented]';
+側>'[side]';
+偵>'[spy]';
+偶>'[accidentally]';
+偸>'[to steal]';
+偽>'[false]';
+傀>'[great]';
+傅>'[tutor]';
+傍>'[by side of]';
+傑>'[hero]';
+傘>'[umbrella]';
+備>'[prepare]';
+傚>'[imitate]';
+催>'[press]';
+傭>'[hire]';
+傲>'[proud]';
+傳>'[summon]';
+傴>'[humpback]';
+債>'[debt]';
+傷>'[wound]';
+傾>'[upset]';
+僂>'[humpback]';
+僅>'[only]';
+僉>'[all]';
+僊>'[Taoist super-being]';
+働>'[labor]';
+像>'[picture]';
+僑>'[sojourn]';
+僕>'[slave]';
+僖>'[joy]';
+僚>'[companion]';
+僞>'[false]';
+僣>'[assume]';
+僥>'[be lucky]';
+僧>'[buddhist priest]';
+僭>'[assume]';
+僮>'[page]';
+僵>'[stiff and motionless]';
+價>'[price]';
+僻>'[out-of-the-way]';
+儀>'[ceremony]';
+儁>'[outstanding]';
+儂>'[I]';
+億>'[hundred million]';
+儉>'[temperate]';
+儒>'[confucian scholar]';
+儔>'[companion]';
+儕>'[a company]';
+#"儕>'[a company]'",
+儘>'[utmost]';
+#"儘>'[utmost]'",
+償>'[repay]';
+儡>'[puppet]';
+優>'[superior]';
+儲>'[save money]';
+儷>'[spouse]';
+儺>'[rich]';
+儻>'[if]';
+儼>'[grave]';
+儿>'[son]';
+兀>'[to cut off the feet]';
+允>'[to grant]';
+元>'[first]';
+兄>'[elder brother]';
+充>'[fill]';
+兆>'[omen]';
+兇>'[atrocious]';
+先>'[first]';
+光>'[light]';
+克>'[gram]';
+兌>'[cash]';
+免>'[spare]';
+兎>'[rabbit]';
+児>'[son]';
+兒>'[son]';
+兔>'[rabbit]';
+党>'[political party]';
+兜>'[pouch]';
+兢>'[fearful]';
+入>'[enter]';
+全>'[maintain]';
+兩>'[two]';
+兪>'[surname]';
+八>'[eight]';
+公>'[fair]';
+六>'[number six]';
+兮>'[exclamatory particle]';
+共>'[together with]';
+兵>'[soldier]';
+其>'[his]';
+具>'[tool]';
+典>'[law]';
+兼>'[unite]';
+冀>'[hope for]';
+冂>'[wide]';
+内>'[inside]';
+円>'[yen]';
+冉>'[tender]';
+冊>'[book]';
+册>'[book]';
+再>'[again]';
+冏>'[[not found in dictionary]]';
+冐>'[risk]';
+冑>'[helmet]';
+冒>'[risk]';
+冓>'[a secluded place]';
+冕>'[crown]';
+冖>'[cover]';
+冗>'[excessive]';
+写>'[write]';
+冠>'[cap]';
+冢>'[burial mound]';
+冤>'[grievance]';
+冥>'[dark]';
+冦>'[bandits]';
+冨>'[abundant]';
+冩>'[write]';
+冪>'[cover-cloth]';
+冫>'[ice]';
+冬>'[winter]';
+冰>'[ice]';
+冱>'[freezing]';
+冲>'[soar]';
+决>'[decide]';
+冴>'[freezing]';
+况>'[condition]';
+冶>'[smelt]';
+冷>'[cold]';
+冽>'[cold and raw]';
+凄>'[bitter cold]';
+凅>'[dried up]';
+准>'[approve]';
+凉>'[cool]';
+凋>'[be withered]';
+凌>'[pure]';
+凍>'[freeze]';
+凖>'[rule]';
+凛>'[to shiver with cold or fear]';
+凜>'[shiver with cold or fear]';
+凝>'[coagulate]';
+几>'[small table]';
+凡>'[all]';
+処>'[place]';
+凧>'[kite]';
+凩>'[wintry wind]';
+凪>'[calm]';
+凭>'[lean on]';
+凰>'[female phoenix]';
+凱>'[triumphant]';
+凵>'[receptacle]';
+凶>'[culprit]';
+凸>'[protrude]';
+凹>'[concave]';
+出>'[go out]';
+函>'[correspondence]';
+凾>'[correspondence]';
+刀>'[knife]';
+刃>'[edged tool]';
+刄>'[edged tool]';
+分>'[divide]';
+切>'[cut]';
+刈>'[cut off]';
+刊>'[publication]';
+刋>'[publication]';
+刎>'[behead]';
+刑>'[punishment]';
+刔>'[scoop out]';
+列>'[line]';
+初>'[beginning]';
+判>'[judge]';
+別>'[separate]';
+刧>'[disaster]';
+利>'[gains]';
+刪>'[to cut]';
+刮>'[shave]';
+到>'[go to]';
+刳>'[cut out]';
+制>'[system]';
+刷>'[brush]';
+券>'[certificate]';
+刹>'[temple]';
+刺>'[stab]';
+刻>'[carve]';
+剃>'[shave]';
+剄>'[cut throat]';
+則>'[rule]';
+削>'[scrape off]';
+剋>'[subdue]';
+剌>'[slash]';
+前>'[in front]';
+剏>'[establish]';
+剔>'[pick out]';
+剖>'[split in two]';
+剛>'[hard]';
+剞>'[carving or engraving knife]';
+剣>'[sword]';
+剤>'[medicinal preparation]';
+剥>'[peel]';
+剩>'[leftovers]';
+剪>'[scissors]';
+副>'[assist]';
+剰>'[leftovers]';
+剱>'[sword]';
+割>'[cut]';
+剳>'[brief note]';
+剴>'[sharpen]';
+創>'[establish]';
+剽>'[rob]';
+剿>'[destroy]';
+劃>'[divide]';
+劇>'[theatrical plays]';
+劈>'[cut apart]';
+劉>'[surname]';
+劍>'[sword]';
+劑>'[medicinal preparation]';
+劒>'[sword]';
+劔>'[sword]';
+力>'[power]';
+功>'[achievement]';
+加>'[add to]';
+劣>'[bad]';
+助>'[help]';
+努>'[exert]';
+劫>'[take by force]';
+劬>'[be diligent]';
+劭>'[encourage]';
+励>'[strive]';
+労>'[labor]';
+劵>'[certificate]';
+効>'[efficacious]';
+劼>'[be discreet]';
+劾>'[examine into]';
+勁>'[strong]';
+勃>'[suddenly]';
+勅>'[imperial degree]';
+勇>'[brave]';
+勉>'[endeavor]';
+勍>'[strong]';
+勒>'[strangle]';
+動>'[move]';
+勗>'[enjoin]';
+勘>'[investigate]';
+務>'[affairs]';
+勝>'[victory]';
+勞>'[labor]';
+募>'[levy]';
+勠>'[join forces]';
+勢>'[power]';
+勣>'[achievements]';
+勤>'[industrious]';
+勦>'[destroy]';
+勧>'[recommend]';
+勲>'[meritorious deed]';
+勳>'[meritorious deed]';
+勵>'[strive]';
+勸>'[recommend]';
+勹>'[wrap]';
+勺>'[spoon]';
+勾>'[hook]';
+勿>'[must not]';
+匁>'[Japanese unit of weight (1/1000 of a kan)]';
+匂>'[fragrance]';
+包>'[wrap]';
+匆>'[hastily]';
+匈>'[breast]';
+匍>'[crawl]';
+匏>'[gourd]';
+匐>'[fall prostrate]';
+匕>'[spoon]';
+化>'[change]';
+北>'[north]';
+匙>'[spoon]';
+匚>'[box]';
+匝>'[full circle]';
+匠>'[craftsman]';
+匡>'[correct]';
+匣>'[small box]';
+匪>'[bandits]';
+匯>'[concourse]';
+匱>'[to lack]';
+匳>'[ladies toilet case with mirror]';
+匸>'[box]';
+匹>'[bolt of cloth]';
+区>'[area]';
+医>'[cure]';
+匿>'[hide]';
+區>'[area]';
+十>'[ten]';
+千>'[thousand]';
+卅>'[thirty]';
+卆>'[soldier]';
+升>'[arise]';
+午>'[noon]';
+卉>'[general term for plants]';
+半>'[half]';
+卍>'[swastika - fourth of auspicious]';
+卑>'[humble]';
+卒>'[soldier]';
+卓>'[profound]';
+協>'[be united]';
+南>'[south]';
+#"南>'[south]'",
+博>'[gamble]';
+卜>'[fortune telling]';
+卞>'[be impatient]';
+占>'[divine]';
+卦>'[fortune telling]';
+卩>'[seal]';
+卮>'[measuring cup]';
+卯>'[4th of Earth Branches]';
+印>'[print]';
+危>'[dangerous]';
+即>'[promptly]';
+却>'[still]';
+卵>'[egg]';
+卷>'[scroll]';
+卸>'[lay down]';
+卻>'[still]';
+卿>'[noble]';
+厂>'[factory]';
+厄>'[adversity]';
+厖>'[bulky]';
+厘>'[thousandth part of tael]';
+厚>'[thick]';
+原>'[source]';
+厠>'[mingle with]';
+厥>'[personal pronoun - he]';
+厦>'[big building]';
+厨>'[kitchen]';
+厩>'[stable]';
+厭>'[dislike]';
+厮>'[servant]';
+厰>'[factory]';
+厳>'[strict]';
+厶>'[private]';
+去>'[go away]';
+参>'[take part in]';
+參>'[take part in]';
+又>'[and]';
+叉>'[crotch]';
+及>'[extend]';
+友>'[friend]';
+双>'[set of two]';
+反>'[reverse]';
+収>'[gather together]';
+叔>'[father''s younger brother]';
+取>'[take]';
+受>'[receive]';
+叙>'[express]';
+叛>'[rebel]';
+叟>'[old man]';
+叡>'[astute]';
+叢>'[bush]';
+口>'[mouth]';
+古>'[old]';
+句>'[sentence]';
+叨>'[talkative]';
+叩>'[knock]';
+只>'[only]';
+叫>'[cry]';
+召>'[imperial decree]';
+叭>'[trumpet]';
+叮>'[exhort or enjoin repeatedly]';
+可>'[may]';
+台>'[platform]';
+叱>'[scold]';
+史>'[history]';
+右>'[right]';
+叶>'[to harmonize]';
+号>'[mark]';
+司>'[take charge of]';
+#"叹>'[sigh]'",
+吁>'[interjection \"Alas!\"]';
+吃>'[eat]';
+各>'[each]';
+合>'[combine]';
+吉>'[lucky]';
+吊>'[condole]';
+吋>'[inch]';
+同>'[same]';
+名>'[name]';
+后>'[queen]';
+吏>'[government official]';
+吐>'[vomit]';
+向>'[toward]';
+君>'[sovereign]';
+吝>'[stingy]';
+吟>'[sing]';
+吠>'[bark]';
+否>'[not]';
+吩>'[order]';
+含>'[hold in mouth]';
+听>'[hear]';
+吭>'[throat]';
+吮>'[suck with mouth]';
+吶>'[raise voice]';
+吸>'[inhale]';
+吹>'[blow]';
+吻>'[kiss]';
+吼>'[roar]';
+吽>'[\"OM\"]';
+吾>'[i]';
+呀>'[particle used express surprise]';
+呂>'[surname]';
+呆>'[dull]';
+呈>'[submit]';
+呉>'[one of warring states]';
+告>'[tell]';
+呎>'[foot]';
+呑>'[swallow]';
+#"呜>'[sound of crying]'",
+周>'[zhou dynasty]';
+呪>'[curse]';
+#"呰>'[................................]'",
+呱>'[wail]';
+味>'[taste]';
+呵>'[scold]';
+呶>'[talkative]';
+呷>'[suck]';
+呻>'[groan]';
+呼>'[breathe sigh]';
+命>'[life]';
+咀>'[suck]';
+咄>'[noise of rage]';
+咆>'[roar]';
+咋>'[why? how? what?]';
+和>'[harmony]';
+咎>'[fault]';
+咏>'[sing song or poem]';
+咐>'[instruct]';
+咒>'[curse]';
+咢>'[sound]';
+咤>'[scold]';
+咥>'[sound of cat]';
+咨>'[inquire]';
+咫>'[foot measure of Zhou dynasty]';
+咬>'[bite]';
+咯>'[final particle]';
+咲>'[smile]';
+咳>'[cough]';
+咸>'[together]';
+咼>'[chat]';
+咽>'[throat]';
+咾>'[a noise]';
+哀>'[sad]';
+品>'[article]';
+哂>'[smile]';
+哄>'[coax]';
+哇>'[vomit]';
+哈>'[sound of laughter]';
+哉>'[final exclamatory particle]';
+#"哗>'[rushing sound]'",
+員>'[member]';
+哢>'[syllable]';
+哥>'[elder brother]';
+哦>'[oh? really? is that so?]';
+哨>'[whistle]';
+哩>'[mile]';
+哭>'[weep]';
+哮>'[cough]';
+哲>'[wise]';
+哺>'[chew food]';
+哽>'[choke]';
+唄>'[final particle of assertion pathaka]';
+唆>'[make mischief]';
+唇>'[lips]';
+唏>'[weep or sob]';
+唐>'[tang dynasty]';
+唔>'[hold in mouth]';
+唖>'[dumb]';
+售>'[sell]';
+唯>'[only]';
+唱>'[sing]';
+唳>'[cry of bird]';
+唸>'[recite]';
+唹>'[to smile at]';
+唾>'[spit]';
+啀>'[gnaw]';
+啄>'[to peck]';
+#"啄>'[to peck]'",
+商>'[commerce]';
+啌>'[animal disease]';
+問>'[ask (about)]';
+啓>'[open]';
+啖>'[eat]';
+啗>'[eat]';
+啜>'[sip]';
+#"啜>'[sip]'",
+啣>'[hold in mouth]';
+啻>'[only]';
+啼>'[weep]';
+啾>'[wailing of child]';
+喀>'[vomit]';
+喃>'[keep talking]';
+善>'[good]';
+喇>'[horn]';
+喉>'[throat]';
+喊>'[shout]';
+喋>'[nag]';
+喘>'[pant]';
+喙>'[beak]';
+喚>'[call]';
+喜>'[like]';
+喝>'[drink]';
+喞>'[chirping of insects]';
+喟>'[heave sigh]';
+喧>'[lively]';
+喨>'[wail]';
+喩>'[metaphor]';
+喪>'[mourning]';
+喫>'[eat]';
+喬>'[tall]';
+單>'[single]';
+喰>'[to eat]';
+営>'[encampment]';
+嗄>'[hoarse of voice]';
+嗅>'[smell]';
+嗇>'[miserly]';
+嗔>'[be angry at]';
+嗚>'[sound of crying]';
+嗜>'[be fond of]';
+嗟>'[sigh]';
+嗣>'[to connect]';
+嗤>'[laugh at]';
+嗷>'[loud clamor]';
+嗹>'[chatter]';
+嗽>'[cough]';
+嗾>'[to set a dog on]';
+嘆>'[sigh]';
+嘉>'[excellent]';
+嘔>'[vomit]';
+嘖>'[interjection of approval or admi]';
+嘗>'[taste]';
+嘘>'[exhale]';
+嘛>'[final exclamatory particle]';
+嘩>'[rushing sound]';
+嘯>'[roar]';
+嘱>'[order]';
+嘲>'[ridicule]';
+嘴>'[mouth]';
+嘶>'[neighing of a horse]';
+嘸>'[unclear]';
+噂>'[meet]';
+噌>'[scold]';
+噎>'[choke]';
+噐>'[receptacle]';
+噛>'[bite]';
+噤>'[close]';
+器>'[receptacle]';
+噪>'[be noisy]';
+噫>'[belch]';
+噬>'[bite]';
+噴>'[spurt]';
+噸>'[metric ton]';
+噺>'[story]';
+嚀>'[enjoin]';
+嚆>'[give forth sound]';
+嚇>'[scare]';
+嚊>'[to pant]';
+嚏>'[sneeze]';
+嚔>'[sneeze]';
+#"嚜>'[be silent]'",
+嚢>'[bag]';
+嚥>'[swallow]';
+嚮>'[guide]';
+嚴>'[strict]';
+嚶>'[seek friends]';
+嚼>'[prattle]';
+囀>'[sing]';
+囁>'[move lip when speaking]';
+囂>'[be noisy]';
+#"囂>'[be noisy]'",
+囈>'[talk in one''s sleep]';
+#"囍>'[double happiness]'",
+囑>'[order]';
+囓>'[gnaw]';
+囗>'[erect]';
+囘>'[return]';
+囚>'[prisoner]';
+四>'[four]';
+回>'[return]';
+因>'[cause]';
+団>'[sphere]';
+囮>'[inveigle]';
+困>'[surround]';
+囲>'[surround]';
+図>'[diagram]';
+囹>'[prison]';
+固>'[become solid]';
+国>'[nation]';
+囿>'[pen up]';
+圀>'[nation]';
+圃>'[garden]';
+圄>'[prison]';
+圈>'[to circle]';
+圉>'[stable]';
+國>'[nation]';
+圍>'[surround]';
+圏>'[to circle]';
+園>'[garden]';
+圓>'[circle]';
+圖>'[diagram]';
+團>'[sphere]';
+圜>'[circle]';
+土>'[soil]';
+圦>'[(kokuji) water gate]';
+#"圦>'[(kokuji) water gate]'",
+在>'[be at]';
+圭>'[jade pointed at top]';
+地>'[earth]';
+#"圳>'[furrow in field]'",
+#"圳>'[furrow in field]'",
+圻>'[border]';
+址>'[site]';
+坂>'[hillside]';
+均>'[equal]';
+坊>'[neighborhood]';
+坎>'[pit]';
+坏>'[rotten]';
+坐>'[sit]';
+坑>'[pit]';
+坡>'[slope]';
+坤>'[earth]';
+坦>'[flat]';
+坩>'[earthenware]';
+坪>'[level ground]';
+坿>'[mound]';
+垂>'[let down]';
+#"垆>'[black clods of earth]'",
+#"垉>'[................................]'",
+型>'[pattern]';
+垓>'[border]';
+垠>'[boundary]';
+垢>'[dirt]';
+垣>'[low wall]';
+垤>'[ant-hill]';
+#"垩>'[holy]'",
+#"垮>'[be defeated]'",
+#"垲>'[high and dry place]'",
+埀>'[let down]';
+埃>'[fine dust]';
+埆>'[stony]';
+埋>'[bury]';
+城>'[castle]';
+埒>'[enclosure]';
+埓>'[enclosure]';
+埔>'[plain]';
+#"埔>'[plain]'",
+埜>'[open country]';
+域>'[district]';
+埠>'[port city]';
+#"埣>'[................................]'",
+埴>'[soil with large clay content]';
+執>'[hold in hand]';
+培>'[bank up with dirt]';
+基>'[foundation]';
+埼>'[headland]';
+堀>'[cave]';
+堂>'[hall]';
+堅>'[hard]';
+堆>'[heap]';
+堊>'[white earth]';
+堋>'[bury]';
+堕>'[fall]';
+堙>'[bury]';
+堝>'[crucible]';
+堡>'[fort]';
+堤>'[dike]';
+堪>'[adequately capable of]';
+堯>'[a legendary ancient emperor-sage]';
+堰>'[dam]';
+報>'[report]';
+場>'[open space]';
+堵>'[wall]';
+堺>'[person''s name]';
+堽>'[mound]';
+塀>'[wall]';
+塁>'[rampart]';
+塊>'[piece]';
+塋>'[grave]';
+塑>'[model in clay]';
+塒>'[roost]';
+塔>'[tower]';
+塗>'[smear]';
+塘>'[pond]';
+塙>'[truly]';
+塚>'[cemetery]';
+塞>'[stop up]';
+塢>'[entrenchment]';
+塩>'[salt]';
+填>'[fill in]';
+#"塭>'[[not found in any dictionary]]'",
+塲>'[open space]';
+塵>'[dust]';
+塹>'[moat]';
+塾>'[village school]';
+境>'[boundery]';
+墅>'[villa]';
+墓>'[grave]';
+増>'[increase]';
+墜>'[fall down]';
+墟>'[high mound]';
+墨>'[ink]';
+墫>'[cup]';
+墮>'[fall]';
+墳>'[grave]';
+#"墳>'[grave]'",
+#"墳>'[grave]'",
+墺>'[4 walls]';
+墻>'[wall]';
+墾>'[cultivate]';
+壁>'[partition wall]';
+壅>'[to obstruct]';
+壇>'[altar]';
+壊>'[bad]';
+壌>'[soil]';
+壑>'[bed of torrent]';
+壓>'[press]';
+壕>'[trench]';
+#"壖>'[open space along water]'",
+壘>'[rampart]';
+壙>'[tomb]';
+壜>'[earthen jar or jug]';
+壞>'[bad]';
+壟>'[grave]';
+壤>'[soil]';
+#"壥>'[................................]'",
+士>'[scholar]';
+壬>'[ninth of ten celestial stems]';
+壮>'[big]';
+壯>'[big]';
+声>'[sound]';
+壱>'[number one]';
+売>'[sell]';
+壷>'[jar]';
+壹>'[number one]';
+壺>'[jar]';
+壻>'[son-in-law]';
+壼>'[palace corridor or passageway]';
+壽>'[old age]';
+夂>'[go]';
+変>'[change]';
+夊>'[Radical No. 35]';
+夏>'[summer]';
+夐>'[long]';
+夕>'[evening]';
+外>'[out]';
+夘>'[4th of Earth Branches]';
+夙>'[early in morning]';
+多>'[much]';
+夛>'[much]';
+夜>'[night]';
+夢>'[dream]';
+夥>'[companion]';
+大>'[big]';
+天>'[sky]';
+太>'[very]';
+夫>'[man]';
+夬>'[parted]';
+夭>'[young]';
+央>'[center]';
+失>'[lose]';
+夲>'[advance quickly]';
+夷>'[ancient barbarian tribes]';
+夸>'[extravagant]';
+夾>'[be wedged or inserted between]';
+奄>'[ere long]';
+奇>'[strange]';
+奈>'[but]';
+奉>'[offer]';
+奎>'[stride of man]';
+奏>'[memorialize emperor]';
+奐>'[be numerous]';
+契>'[deed]';
+奔>'[run fast]';
+奕>'[in sequence]';
+套>'[case]';
+奘>'[large]';
+奚>'[where? what? how? why?]';
+奠>'[pay respect]';
+奢>'[extravagant]';
+奥>'[mysterious]';
+奧>'[mysterious]';
+奨>'[prize]';
+奩>'[lady''s vanity case]';
+奪>'[take by force]';
+奬>'[prize]';
+奮>'[strive]';
+女>'[woman]';
+奴>'[slave]';
+奸>'[crafty]';
+好>'[good]';
+妁>'[act as go-between]';
+如>'[if]';
+妃>'[wife]';
+妄>'[absurd]';
+妊>'[conceive]';
+妍>'[beautiful]';
+妓>'[prostitute]';
+妖>'[strange]';
+妙>'[mysterious]';
+#"妙>'[mysterious]'",
+妝>'[adorn oneself]';
+妣>'[one''s deceased mother]';
+妥>'[satisfactory]';
+妨>'[interfere with]';
+妬>'[jealous]';
+妲>'[concubine of last ruler of shang]';
+妹>'[younger sister]';
+妻>'[wife]';
+妾>'[concubine]';
+姆>'[child''s governess]';
+姉>'[elder sister]';
+始>'[begin]';
+姐>'[elder sister]';
+姑>'[father''s sister]';
+姓>'[one''s family name]';
+委>'[appoint]';
+姙>'[conceive]';
+姚>'[handsome]';
+姜>'[surname]';
+姥>'[maternal grandmother]';
+姦>'[adultery]';
+姨>'[mother/wife''s sister]';
+姪>'[niece]';
+姫>'[beauty]';
+#"姱>'[beautiful]'",
+姻>'[relatives by marriage]';
+姿>'[one''s manner]';
+威>'[pomp]';
+娃>'[baby]';
+娉>'[beautiful]';
+娑>'[dance]';
+娘>'[mother]';
+#"娚>'[................................]'",
+娜>'[elegant]';
+娟>'[beautiful]';
+娠>'[pregnant]';
+娥>'[be beautiful]';
+娩>'[give birth child]';
+娯>'[pleasure]';
+娵>'[star]';
+娶>'[marry]';
+娼>'[prostitute]';
+婀>'[be beautiful]';
+婁>'[surname]';
+婆>'[old woman]';
+婉>'[amiable]';
+婚>'[get married]';
+婢>'[servant girl]';
+婦>'[married women]';
+婪>'[covet]';
+婬>'[obscene]';
+婿>'[son-in-law]';
+媒>'[go-between]';
+媚>'[charming]';
+媛>'[beauty]';
+媼>'[old woman]';
+媽>'[mother]';
+媾>'[marry]';
+嫁>'[marry]';
+嫂>'[sister-in-law]';
+嫉>'[jealousy]';
+嫋>'[slender and delicate]';
+嫌>'[hate]';
+嫐>'[frolic]';
+嫖>'[patronize prostitutes]';
+嫗>'[old woman]';
+嫡>'[legal wife]';
+嫣>'[charming]';
+嫦>'[name of a moon goddess]';
+嫩>'[soft]';
+嫺>'[refined]';
+嫻>'[elegant]';
+嬉>'[enjoy]';
+嬋>'[beautiful]';
+嬌>'[seductive and loveable]';
+嬖>'[favorite]';
+嬢>'[troubled]';
+嬪>'[court lady]';
+嬬>'[mistress]';
+嬰>'[baby]';
+嬲>'[frolic]';
+#"嬴>'[to win]'",
+嬾>'[lazy]';
+孀>'[widow]';
+孃>'[troubled]';
+孅>'[slender]';
+子>'[offspring]';
+孑>'[remaining]';
+孔>'[opening]';
+孕>'[be pregnant]';
+字>'[letter]';
+存>'[exist]';
+孚>'[brood over eggs]';
+孛>'[comet]';
+孜>'[be as diligent as possible]';
+孝>'[filial piety]';
+孟>'[first in series]';
+季>'[quarter of year]';
+孤>'[orphan]';
+孥>'[one''s children]';
+学>'[learning]';
+孩>'[baby]';
+孫>'[grandchild]';
+孰>'[who? which? what? which one?]';
+孱>'[weak]';
+孳>'[breed in large numbers]';
+孵>'[sit on eggs]';
+學>'[learning]';
+孺>'[child]';
+宀>'[roof]';
+它>'[it]';
+宅>'[residence]';
+宇>'[house]';
+守>'[defend]';
+安>'[peaceful]';
+宋>'[Song dynasty]';
+完>'[complete]';
+宍>'[flesh]';
+宏>'[wide]';
+宕>'[stone quarry]';
+宗>'[lineage]';
+官>'[official]';
+宙>'[time as concept]';
+定>'[decide]';
+宛>'[seem]';
+宜>'[suitable]';
+宝>'[treasure]';
+実>'[real]';
+客>'[guest]';
+宣>'[declare]';
+室>'[room]';
+宥>'[forgive]';
+宦>'[officialdom]';
+宮>'[palace]';
+宰>'[to slaughter]';
+害>'[injure]';
+宴>'[entertain]';
+宵>'[night]';
+家>'[house]';
+宸>'[imperial]';
+容>'[looks]';
+宿>'[stop]';
+寂>'[still]';
+寃>'[grievance]';
+寄>'[send]';
+寅>'[respect]';
+密>'[dense]';
+寇>'[bandits]';
+#"寉>'[................................]'",
+富>'[abundant]';
+寐>'[sleep]';
+寒>'[cold]';
+寓>'[residence]';
+寔>'[real]';
+寛>'[broad]';
+寝>'[sleep]';
+寞>'[silent]';
+察>'[examine]';
+寡>'[widowed]';
+寢>'[sleep]';
+寤>'[few]';
+寥>'[few]';
+實>'[real]';
+寧>'[repose]';
+寨>'[stockade]';
+審>'[examine]';
+寫>'[write]';
+寮>'[shanty]';
+寰>'[great domain]';
+寳>'[treasure]';
+寵>'[favorite]';
+寶>'[treasure]';
+寸>'[inch]';
+寺>'[court]';
+対>'[correct]';
+寿>'[old age]';
+封>'[letter]';
+専>'[monopolize]';
+射>'[shoot]';
+尅>'[subdue]';
+将>'[will]';
+將>'[will]';
+專>'[monopolize]';
+尉>'[officer]';
+尊>'[respect]';
+尋>'[seek]';
+對>'[correct]';
+導>'[direct]';
+小>'[small]';
+少>'[few]';
+尓>'[you]';
+尖>'[sharp]';
+尚>'[still]';
+尠>'[very few]';
+尢>'[weak]';
+尤>'[especially]';
+尨>'[shaggy haired dog]';
+尭>'[a legendary ancient emperor-sage]';
+就>'[just]';
+尸>'[corpse]';
+尹>'[govern]';
+尺>'[chinese measure approx. \"foot\"]';
+尻>'[end of spine]';
+尼>'[buddhist nun]';
+尽>'[exhaust]';
+尾>'[tail]';
+尿>'[urine]';
+局>'[bureau]';
+屁>'[break wind]';
+居>'[live]';
+屆>'[numerary adjunct for time]';
+屈>'[bend]';
+届>'[numerary adjunct for time]';
+屋>'[house]';
+屍>'[corpse]';
+屎>'[excrement]';
+屏>'[folding screen]';
+屐>'[wooden shoes]';
+屑>'[bits]';
+屓>'[gigantic strength]';
+展>'[open]';
+属>'[class]';
+屠>'[butcher]';
+屡>'[frequently]';
+層>'[storey]';
+履>'[footwear]';
+屬>'[class]';
+屮>'[sprout]';
+屯>'[village]';
+山>'[mountain]';
+屶>'[lofty]';
+屹>'[to rise high]';
+岌>'[perilous]';
+岐>'[high]';
+岑>'[steep]';
+岔>'[diverge]';
+岡>'[ridge or crest of hill]';
+岨>'[uneven]';
+岩>'[cliff]';
+岫>'[mountain peak]';
+岬>'[cape]';
+岱>'[daishan one of five sacred mount]';
+岳>'[mountain peak]';
+#"岶>'[................................]'",
+岷>'[min mountain]';
+岸>'[bank]';
+#"岺>'[mountain ridge]'",
+#"岺>'[mountain ridge]'",
+岾>'[mountain pass (korean)]';
+#"峄>'[range of peaks]'",
+峇>'[cave]';
+峙>'[stand erect]';
+峠>'[mountain pass]';
+峡>'[gorge]';
+峨>'[lofty]';
+峩>'[lofty]';
+峪>'[valley]';
+峭>'[steep]';
+峯>'[peak]';
+峰>'[peak]';
+島>'[island]';
+#"峺>'[................................]'",
+峻>'[high]';
+峽>'[gorge]';
+崇>'[esteem]';
+崋>'[flowery]';
+崎>'[rough]';
+崑>'[Kunlun mountains in Jiang Su province.]';
+崔>'[high]';
+崕>'[cliff]';
+崖>'[cliff]';
+崗>'[post]';
+崘>'[kunlun mountains in jiangsu]';
+崙>'[kunlun mountains in jiangsu]';
+崚>'[hilly]';
+崛>'[towering]';
+崟>'[cliffs]';
+崢>'[high]';
+崩>'[rupture]';
+嵋>'[omei mountain in sichuan]';
+嵌>'[inlay]';
+嵎>'[mountain recess]';
+嵐>'[mountain mist]';
+嵒>'[cliff]';
+嵜>'[rough]';
+嵩>'[high]';
+嵬>'[high]';
+嵯>'[high]';
+嵳>'[high]';
+嵶>'[low part of a mountain]';
+嶂>'[cliff]';
+嶄>'[high]';
+嶇>'[steep]';
+嶋>'[island]';
+嶌>'[island]';
+#"嶐>'[................................]'",
+嶝>'[path leading up a mountain]';
+嶢>'[high or tall]';
+#"嶬>'[................................]'",
+嶮>'[high]';
+嶷>'[range of mountains in hunan prov]';
+嶺>'[mountain ridge]';
+嶼>'[island]';
+嶽>'[mountain peak]';
+巉>'[steep]';
+巌>'[cliff]';
+巍>'[high]';
+巒>'[mountain range]';
+巓>'[summit of mountain]';
+巖>'[cliff]';
+巛>'[river]';
+川>'[stream]';
+州>'[administrative division]';
+巡>'[patrol]';
+巣>'[nest]';
+工>'[labor]';
+左>'[left]';
+巧>'[skillful]';
+巨>'[large]';
+巫>'[wizard]';
+差>'[differ]';
+己>'[self]';
+已>'[already]';
+巳>'[sixth of twelve branches]';
+巴>'[greatly desire]';
+巵>'[measuring cup]';
+巷>'[alley]';
+巻>'[scroll]';
+巽>'[5th of the 8 trigrams]';
+巾>'[kerchief]';
+市>'[market]';
+布>'[cotton cloth]';
+帆>'[sail]';
+帋>'[paper]';
+希>'[rare]';
+帑>'[a treasury]';
+帖>'[invitation card]';
+帙>'[book cover]';
+帚>'[broom]';
+帛>'[silks]';
+帝>'[supreme ruler]';
+帥>'[commander]';
+師>'[teacher]';
+席>'[seat]';
+帯>'[belt]';
+帰>'[return]';
+帳>'[tent]';
+帶>'[belt]';
+帷>'[tent]';
+常>'[common]';
+帽>'[hat]';
+幀>'[picture]';
+幃>'[curtain that forms wall]';
+幄>'[tent]';
+幅>'[piece]';
+幇>'[help]';
+幌>'[curtain]';
+幎>'[cover-cloth]';
+幔>'[curtain]';
+幕>'[curtain]';
+幗>'[women''s headgear]';
+幟>'[flag]';
+幡>'[pennant]';
+幢>'[carriage curtain]';
+幣>'[currency]';
+幤>'[evil]';
+干>'[oppose]';
+平>'[flat]';
+年>'[year]';
+幵>'[even level. to raise in both hands]';
+并>'[combine]';
+幸>'[luck(ily)]';
+幹>'[trunk of tree or of human body]';
+幺>'[one]';
+幻>'[illusion]';
+幼>'[infant]';
+幽>'[quiet]';
+幾>'[how many? how much? (a)few]';
+广>'[wide]';
+庁>'[hall]';
+広>'[broad]';
+庄>'[village]';
+庇>'[cover]';
+床>'[bed]';
+序>'[series]';
+底>'[bottom]';
+庖>'[kitchen]';
+店>'[shop]';
+庚>'[seventh of ten cyclical stems]';
+府>'[prefecture]';
+庠>'[village school]';
+度>'[degree]';
+座>'[seat]';
+庫>'[armory]';
+庭>'[courtyard]';
+庵>'[buddhist monastery or nunnery]';
+庶>'[numerous]';
+康>'[peaceful]';
+庸>'[usual]';
+廁>'[toilet]';
+廂>'[side-room]';
+廃>'[abrogate]';
+廈>'[big building]';
+廉>'[upright]';
+廊>'[corridor]';
+廏>'[stable]';
+廐>'[stable]';
+廓>'[broad]';
+廖>'[surname]';
+廚>'[kitchen]';
+廛>'[store]';
+廝>'[servant]';
+廟>'[temple]';
+廠>'[factory]';
+廡>'[corridor]';
+廢>'[abrogate]';
+廣>'[broad]';
+廨>'[government office]';
+廩>'[granary]';
+廬>'[hut]';
+廰>'[hall]';
+廱>'[harmonious]';
+廳>'[hall]';
+廴>'[go]';
+延>'[delay]';
+廷>'[court]';
+廸>'[enlighten]';
+建>'[build]';
+廻>'[circle around]';
+廼>'[then]';
+廾>'[two hands]';
+廿>'[twenty]';
+弁>'[conical cap worn under zhou dyna]';
+弃>'[reject]';
+弄>'[do]';
+弉>'[large]';
+弊>'[evil]';
+弋>'[catch]';
+弌>'[number one]';
+弍>'[number two]';
+式>'[style]';
+弐>'[number two]';
+弑>'[to kill one''s superior]';
+弓>'[bow]';
+弔>'[condole]';
+引>'[pull]';
+弖>'[phonetic for \"te\" (Japanese)]';
+弗>'[not]';
+弘>'[enlarge]';
+弛>'[loosen]';
+弟>'[young brother]';
+弥>'[extensive]';
+弦>'[string]';
+弧>'[wooden bow]';
+弩>'[cross-bow]';
+弭>'[stop]';
+弯>'[bend]';
+弱>'[weak]';
+張>'[stretch]';
+強>'[strong]';
+弸>'[bow stretched full]';
+弼>'[aid]';
+#"弼>'[aid]'",
+#"彁>'[................................]'",
+彈>'[pellet]';
+彊>'[stubborn]';
+彌>'[extensive]';
+彎>'[bend]';
+彑>'[snout]';
+当>'[bear]';
+彖>'[a hog]';
+彗>'[broomstick]';
+彙>'[collect]';
+彜>'[yi]';
+彝>'[yi]';
+彡>'[hair]';
+形>'[form]';
+彦>'[elegant]';
+彩>'[hue]';
+彪>'[tiger]';
+彫>'[carve]';
+彬>'[cultivated]';
+彭>'[name of ancient country]';
+彰>'[clear]';
+影>'[shadow]';
+彳>'[step with left foot]';
+彷>'[like]';
+役>'[service]';
+彼>'[that]';
+彿>'[resembling]';
+往>'[go]';
+征>'[invade]';
+徂>'[go]';
+徃>'[go]';
+径>'[narrow path]';
+待>'[treat]';
+徇>'[comply with]';
+很>'[very]';
+徊>'[linger]';
+律>'[statute]';
+後>'[behind]';
+徐>'[slowly]';
+徑>'[narrow path]';
+徒>'[disciple]';
+従>'[from]';
+得>'[obtain]';
+徘>'[walk back and forth]';
+徙>'[move one''s abode]';
+從>'[from]';
+徠>'[induce]';
+御>'[drive]';
+徨>'[doubtful]';
+復>'[return]';
+循>'[obey]';
+徭>'[conscript labor]';
+微>'[small]';
+徳>'[virtue]';
+徴>'[summon]';
+徹>'[penetrate]';
+徼>'[frontier]';
+徽>'[a badge]';
+心>'[heart]';
+必>'[surely]';
+忌>'[jealous]';
+忍>'[endure]';
+忖>'[guess]';
+志>'[purpose]';
+忘>'[forget]';
+忙>'[busy]';
+応>'[should]';
+忝>'[disgrace]';
+忠>'[loyalty]';
+忤>'[insubordinate]';
+快>'[rapid]';
+忰>'[suffer]';
+忱>'[truth]';
+念>'[think of]';
+忸>'[blush]';
+忻>'[delightful]';
+忽>'[suddenly]';
+忿>'[get angry]';
+怎>'[what? why? how?]';
+怏>'[discontented]';
+#"怐>'[................................]'",
+怒>'[anger]';
+怕>'[fear]';
+怖>'[terror]';
+怙>'[rely on]';
+怛>'[grieved]';
+怜>'[pity]';
+思>'[think]';
+怠>'[idle]';
+怡>'[harmony]';
+急>'[quick]';
+怦>'[eager]';
+性>'[nature]';
+怨>'[hatred]';
+怩>'[shy]';
+怪>'[strange]';
+怫>'[sorry]';
+怯>'[lacking in courage]';
+怱>'[hastily]';
+怺>'[to endure]';
+恁>'[that]';
+恂>'[careful]';
+恃>'[rely on]';
+恆>'[constant]';
+恊>'[be united]';
+恋>'[love]';
+恍>'[seemingly]';
+恐>'[fear]';
+恒>'[constant]';
+恕>'[forgive]';
+恙>'[illness]';
+恚>'[anger]';
+恟>'[scared]';
+恠>'[strange]';
+恢>'[restore]';
+恣>'[indulge oneself]';
+恤>'[show pity]';
+恥>'[shame]';
+恨>'[hatred]';
+恩>'[kindness]';
+恪>'[respectful]';
+恫>'[in pain]';
+恬>'[quiet]';
+恭>'[respectful]';
+息>'[rest]';
+恰>'[just]';
+恵>'[favor]';
+#"恶>'[evil]'",
+悁>'[irritable]';
+悃>'[sincere]';
+悄>'[silent]';
+悉>'[know]';
+悋>'[stingy]';
+悌>'[brotherly]';
+悍>'[courageous]';
+悒>'[sorrowful]';
+悔>'[repent]';
+悖>'[be contradictory to]';
+#"悖>'[be contradictory to]'",
+悚>'[be afraid]';
+悛>'[repent]';
+悟>'[apprehend]';
+悠>'[long]';
+患>'[suffer]';
+悦>'[pleased]';
+悧>'[smooth]';
+悩>'[angered]';
+悪>'[evil]';
+悲>'[sorrow]';
+悳>'[ethics]';
+悴>'[suffer]';
+悵>'[disappointed]';
+悶>'[gloomy]';
+悸>'[fearful]';
+悼>'[grieve]';
+悽>'[sorrowful]';
+情>'[feeling]';
+惆>'[distressed]';
+惇>'[be kind]';
+惑>'[confuse]';
+惓>'[careful]';
+惘>'[disconcerted]';
+惚>'[absent-minded]';
+惜>'[pity]';
+惟>'[but]';
+惠>'[favor]';
+惡>'[evil]';
+惣>'[overall [questionable variant]]';
+惧>'[fear]';
+惨>'[sad]';
+惰>'[indolent]';
+惱>'[angered]';
+想>'[think]';
+惴>'[afraid]';
+惶>'[fearful]';
+惷>'[wriggle]';
+惹>'[irritate]';
+惺>'[intelligent]';
+惻>'[feel anguish]';
+愀>'[change one''s countenance]';
+愁>'[anxiety]';
+愃>'[relax]';
+愆>'[fault]';
+愈>'[more and more]';
+愉>'[pleasant]';
+愍>'[pity]';
+愎>'[obstinate]';
+意>'[thought]';
+愕>'[startled]';
+愚>'[stupid]';
+愛>'[love]';
+感>'[feel]';
+愡>'[absent-minded]';
+愧>'[ashamed]';
+愨>'[sincerity]';
+愬>'[accuse]';
+愴>'[sad]';
+愼>'[act with care]';
+愽>'[gamble]';
+愾>'[anger]';
+愿>'[sincere]';
+慂>'[urge]';
+慄>'[shiver]';
+慇>'[careful]';
+慈>'[kind]';
+慊>'[to resent]';
+態>'[manner]';
+慌>'[nervous]';
+慍>'[angry]';
+慎>'[act with care]';
+#"慓>'[................................]'",
+慕>'[long for]';
+慘>'[sad]';
+慙>'[ashamed]';
+慚>'[ashamed]';
+慝>'[do evil in secret]';
+慟>'[sadness]';
+慢>'[slow(ly)]';
+慣>'[habit]';
+慥>'[sincere]';
+慧>'[bright]';
+慨>'[sigh]';
+慫>'[to alarm]';
+慮>'[be concerned]';
+#"慯>'[................................]'",
+慰>'[comfort]';
+慱>'[sad]';
+慳>'[miserly]';
+慴>'[fear]';
+慵>'[indolent]';
+慶>'[congratulate]';
+慷>'[ardent]';
+慾>'[lust]';
+憂>'[sad]';
+憇>'[rest]';
+憊>'[tired]';
+憎>'[hate]';
+憐>'[pity]';
+憑>'[lean on]';
+憔>'[be worn-out]';
+憖>'[cautious]';
+憙>'[like]';
+憚>'[dread]';
+憤>'[resent]';
+憧>'[irresolute]';
+憩>'[rest]';
+憫>'[pity]';
+憬>'[rouse]';
+憮>'[regretful]';
+憲>'[constitution]';
+憶>'[remember]';
+憺>'[peace]';
+憾>'[regret]';
+懃>'[courteous]';
+懆>'[anxious]';
+懇>'[sincere]';
+懈>'[idle]';
+應>'[should]';
+懊>'[vexed]';
+懋>'[splendid]';
+懌>'[enjoy]';
+懍>'[be afraid of]';
+懐>'[bosom]';
+懣>'[be sick at heart]';
+懦>'[weak]';
+懲>'[punish]';
+懴>'[regret]';
+懶>'[lazy]';
+懷>'[bosom]';
+懸>'[hang]';
+懺>'[regret]';
+懼>'[fear]';
+懽>'[happy]';
+懾>'[afraid]';
+懿>'[virtuous]';
+戀>'[love]';
+戈>'[halberd]';
+戉>'[a battle-axe]';
+戊>'[fifth of ten celestial stems]';
+戌>'[eleventh of terrestrial branches]';
+戍>'[defend borders]';
+戎>'[arms]';
+成>'[completed]';
+我>'[our]';
+戒>'[warn]';
+戔>'[small]';
+或>'[or]';
+戚>'[relative]';
+戛>'[lance]';
+戝>'[pirate]';
+戞>'[lance]';
+戟>'[halberd with crescent blade]';
+戡>'[subjugate]';
+戦>'[war]';
+截>'[cut off]';
+戮>'[kill]';
+戯>'[theatrical play]';
+戰>'[war]';
+戲>'[theatrical play]';
+戳>'[prick]';
+戴>'[wear on top]';
+戸>'[door]';
+戻>'[perverse]';
+房>'[house]';
+所>'[place]';
+扁>'[flat]';
+扇>'[fan]';
+扈>'[escort]';
+扉>'[door panel]';
+手>'[hand]';
+才>'[talent]';
+扎>'[pull up]';
+打>'[strike]';
+払>'[shake off]';
+托>'[hold up with palm]';
+扛>'[carry on shoulders]';
+扞>'[ward off]';
+扠>'[pick up with fork or pincers]';
+扣>'[knock]';
+扨>'[pick up with fork or pincers]';
+扮>'[dress up]';
+扱>'[collect]';
+扶>'[support]';
+批>'[comment]';
+扼>'[grasp]';
+找>'[search]';
+承>'[inherit]';
+技>'[skill]';
+#"抂>'[................................]'",
+抃>'[to clap hands]';
+抄>'[copy]';
+抉>'[choose]';
+把>'[hold]';
+抑>'[press down]';
+抒>'[express]';
+抓>'[scratch]';
+抔>'[take or hold up in both hands]';
+投>'[throw]';
+抖>'[tremble]';
+抗>'[resist]';
+折>'[break off]';
+抛>'[throw (away)]';
+抜>'[uproot]';
+択>'[select]';
+披>'[wear]';
+抬>'[lift]';
+抱>'[embrace]';
+抵>'[resist]';
+抹>'[smear]';
+抻>'[pull]';
+押>'[mortgage]';
+抽>'[draw out]';
+拂>'[shake off]';
+担>'[carry]';
+拆>'[break up]';
+拇>'[thumb]';
+拈>'[pick up with fingers]';
+拉>'[pull]';
+拊>'[slap]';
+拌>'[mix]';
+拍>'[clap]';
+拏>'[take]';
+拐>'[kidnap]';
+拑>'[to clamp]';
+拒>'[ward off with hand]';
+拓>'[expand]';
+拔>'[uproot]';
+拗>'[obstinate]';
+拘>'[restrain]';
+拙>'[stupid]';
+招>'[beckon]';
+拜>'[do obeisance]';
+拝>'[do obeisance]';
+拠>'[occupy]';
+拡>'[expand]';
+括>'[include]';
+拭>'[wipe away stains with cloth]';
+拮>'[laboring hard]';
+拯>'[help]';
+拱>'[fold hands on breast]';
+拳>'[fist]';
+#"拴>'[bind with rope]'",
+拶>'[press]';
+拷>'[torture and interrogate]';
+拾>'[pick up]';
+拿>'[take]';
+持>'[sustain]';
+挂>'[hang]';
+指>'[finger]';
+挈>'[assist]';
+按>'[put hand on]';
+挌>'[fight]';
+挑>'[load carried on shoulders]';
+挙>'[raise]';
+挟>'[clasp under arm]';
+#"挥>'[direct]'",
+挨>'[near]';
+挫>'[push down]';
+振>'[raise]';
+挺>'[stand upright]';
+挽>'[pull]';
+挾>'[clasp under arm]';
+挿>'[insert]';
+捉>'[grasp]';
+捌>'[break open]';
+捍>'[ward off]';
+捏>'[pick with fingers]';
+捐>'[contribute]';
+捕>'[arrest]';
+捗>'[make progress]';
+捜>'[search]';
+捧>'[hold up in two hands]';
+捨>'[discard]';
+捩>'[twist with hands]';
+捫>'[stoke]';
+据>'[occupy]';
+捲>'[curl]';
+捶>'[strike with stick]';
+捷>'[win]';
+捺>'[press down heavily with fringers]';
+捻>'[twist with fingers]';
+掀>'[lift]';
+掃>'[sweep]';
+授>'[give to]';
+掉>'[turn]';
+掌>'[palm of hand]';
+掎>'[drag aside]';
+掏>'[take out]';
+排>'[row]';
+掖>'[stick in]';
+掘>'[dig]';
+掛>'[hang]';
+#"掟>'[................................]'",
+掠>'[rob]';
+採>'[gather]';
+探>'[find]';
+掣>'[drag]';
+接>'[receive]';
+控>'[accuse]';
+推>'[push]';
+掩>'[cover]';
+措>'[place]';
+掫>'[be on night watch]';
+掬>'[grasp with both hands]';
+#"掱>'[pickpocket]'",
+掴>'[box one''s ears]';
+#"掴>'[box one''s ears]'",
+掻>'[scratch lightly]';
+掾>'[a general designation of officials]';
+揀>'[choose]';
+揃>'[shear]';
+揄>'[lift]';
+揆>'[prime minister]';
+揉>'[rub]';
+描>'[copy]';
+提>'[hold in hand]';
+插>'[insert]';
+揖>'[salute]';
+揚>'[scatter]';
+換>'[change]';
+握>'[grasp]';
+揣>'[put things under clothes]';
+揩>'[rub and wipe]';
+揮>'[direct]';
+援>'[aid]';
+揶>'[make fun of]';
+揺>'[wag]';
+搆>'[pull]';
+損>'[diminish]';
+搏>'[seize]';
+搓>'[trample]';
+搖>'[wag]';
+搗>'[hull]';
+搜>'[search]';
+搦>'[grasp]';
+搨>'[rub]';
+搬>'[transfer]';
+搭>'[join together]';
+搴>'[extract]';
+搶>'[plunder]';
+携>'[lead by hand]';
+搾>'[press]';
+摂>'[take in]';
+摎>'[to strangle]';
+摘>'[pluck]';
+摧>'[destroy]';
+摩>'[rub]';
+摯>'[sincere]';
+摶>'[roll around with hand]';
+摸>'[gently touch with hand]';
+摺>'[fold]';
+撃>'[strike]';
+撈>'[scoop out of water]';
+撒>'[release]';
+撓>'[scratch]';
+撕>'[rip]';
+撚>'[twirl in fingers]';
+撞>'[knock against]';
+撤>'[omit]';
+撥>'[move]';
+撩>'[lift up]';
+撫>'[pat]';
+播>'[sow]';
+撮>'[little bit]';
+撰>'[compose]';
+撲>'[pound]';
+撹>'[disturb]';
+撻>'[flog]';
+撼>'[move]';
+擁>'[embrace]';
+擂>'[rub]';
+擅>'[monopolize]';
+擇>'[select]';
+操>'[conduct]';
+擒>'[catch]';
+擔>'[carry]';
+擘>'[thumb]';
+據>'[occupy]';
+擠>'[crowd]';
+擡>'[carry]';
+擢>'[pull up]';
+擣>'[hull]';
+擦>'[wipe]';
+擧>'[raise]';
+擬>'[draft]';
+擯>'[exclude]';
+擱>'[place]';
+擲>'[throw]';
+擴>'[expand]';
+#"擶>'[................................]'",
+擺>'[put]';
+擽>'[tickle]';
+擾>'[disturb]';
+攀>'[climb]';
+攅>'[save]';
+攘>'[seize]';
+攜>'[lead by hand]';
+攝>'[take in]';
+攣>'[tangled]';
+攤>'[spread out]';
+攪>'[disturb]';
+攫>'[snatch away]';
+攬>'[grasp]';
+支>'[disperse]';
+攴>'[rap]';
+攵>'[rap]';
+收>'[gather together]';
+攷>'[examine]';
+攸>'[distant]';
+改>'[change]';
+攻>'[attack]';
+放>'[put]';
+政>'[government]';
+故>'[ancient]';
+效>'[result]';
+敍>'[express]';
+敏>'[fast]';
+救>'[save]';
+敕>'[an imperial order or decree]';
+敖>'[ramble]';
+敗>'[be defeated]';
+敘>'[express]';
+教>'[teach]';
+敝>'[break]';
+敞>'[roomy]';
+敢>'[dare]';
+散>'[scatter]';
+敦>'[esteem]';
+敬>'[respect]';
+数>'[number]';
+敲>'[strike]';
+整>'[orderly]';
+敵>'[enemy]';
+敷>'[spread]';
+數>'[number]';
+斂>'[draw back]';
+斃>'[kill]';
+文>'[literature]';
+斈>'[learning]';
+斉>'[even]';
+斌>'[refined]';
+斎>'[vegetarian diet]';
+斐>'[graceful]';
+斑>'[mottled]';
+斗>'[chinese peck]';
+料>'[consider]';
+斛>'[dry measure 10 or 5 times of dou]';
+斜>'[slanting]';
+斟>'[pour wine or tea into cup]';
+斡>'[revolve]';
+斤>'[catty]';
+斥>'[scold]';
+斧>'[axe]';
+斫>'[cut]';
+斬>'[cut]';
+断>'[sever]';
+斯>'[this]';
+新>'[new]';
+斷>'[sever]';
+方>'[square]';
+於>'[in]';
+施>'[grant]';
+旁>'[side]';
+旃>'[silk banner with bent pole]';
+旄>'[a kind of ancient flag]';
+旅>'[trip]';
+旆>'[flag ornament]';
+旋>'[revolve]';
+旌>'[banner or flag adorned with feat]';
+族>'[family clan]';
+旒>'[fringes of pearls on crowns]';
+旗>'[banner]';
+旙>'[a pennant]';
+旛>'[a pennant]';
+无>'[negative]';
+旡>'[choke on something eaten]';
+既>'[already]';
+日>'[sun]';
+旦>'[dawn]';
+旧>'[old]';
+旨>'[purpose]';
+早>'[early]';
+旬>'[ten-day period]';
+旭>'[rising sun]';
+旱>'[drought]';
+旺>'[prosper]';
+旻>'[heaven]';
+昂>'[rise]';
+昃>'[afternoon]';
+昆>'[elder brother]';
+昇>'[rise]';
+昊>'[summer time]';
+昌>'[light of sun]';
+明>'[bright]';
+昏>'[dusk]';
+易>'[change]';
+昔>'[formerly]';
+昜>'[to open out]';
+星>'[star]';
+映>'[project]';
+春>'[spring]';
+昧>'[obscure]';
+昨>'[yesterday]';
+昭>'[bright]';
+是>'[indeed]';
+昴>'[one of the 28 constellations]';
+昵>'[intimate]';
+昶>'[a long day. bright. extended. clear]';
+昼>'[daytime]';
+昿>'[extensive]';
+晁>'[morning]';
+時>'[time]';
+晃>'[bright]';
+晄>'[bright]';
+晉>'[advance]';
+晋>'[advance]';
+晏>'[peaceful]';
+晒>'[dry in sun]';
+晝>'[daytime]';
+晞>'[dry]';
+晟>'[clear]';
+晢>'[light of stars]';
+晤>'[have interview with]';
+晦>'[dark]';
+晧>'[daybreak]';
+晨>'[early morning]';
+晩>'[night]';
+普>'[universal]';
+景>'[scenery]';
+晰>'[clear]';
+晴>'[clear weather]';
+晶>'[crystal]';
+智>'[wisdom]';
+暁>'[dawn]';
+#"暂>'[temporary]'",
+暄>'[warm]';
+暇>'[leisure]';
+暈>'[halo in sky]';
+暉>'[sunshine]';
+暎>'[sun beginning decline]';
+暑>'[hot]';
+暖>'[warm]';
+暗>'[dark]';
+暘>'[rising sun]';
+暝>'[dark]';
+暢>'[smoothly]';
+暦>'[calendar]';
+暫>'[temporary]';
+暮>'[evening]';
+暴>'[violent]';
+暸>'[bright]';
+暹>'[rise]';
+暼>'[take fleeting glance at]';
+暾>'[morning sun]';
+曁>'[and]';
+曄>'[bright]';
+曇>'[become cloudy]';
+曉>'[dawn]';
+曖>'[obscure]';
+曙>'[bright]';
+曚>'[twilight just before sun rises]';
+曜>'[glorious]';
+曝>'[sun]';
+曠>'[extensive]';
+曦>'[sunlight]';
+曩>'[in ancient times]';
+曰>'[say]';
+曲>'[crooked]';
+曳>'[trail]';
+更>'[more]';
+曵>'[trail]';
+曷>'[why? what? where?]';
+書>'[book]';
+曹>'[ministry officials]';
+曼>'[long]';
+曽>'[already]';
+曾>'[already]';
+替>'[change]';
+最>'[most]';
+會>'[assemble]';
+月>'[moon]';
+有>'[have]';
+朋>'[friend]';
+服>'[clothes]';
+朏>'[light of crescent moon]';
+朔>'[first day of lunar month]';
+朕>'[pronoun \"i\"]';
+朖>'[clear]';
+朗>'[clear]';
+望>'[look at or forward]';
+朝>'[dynasty]';
+朞>'[full year]';
+期>'[period of time]';
+朦>'[condition or appearance of moon]';
+朧>'[condition or appearance of moon]';
+木>'[tree]';
+未>'[not yet]';
+末>'[final]';
+本>'[root]';
+札>'[letter]';
+朮>'[skill]';
+朱>'[cinnabar]';
+朴>'[simple]';
+朶>'[cluster of flowers]';
+#"朶>'[cluster of flowers]'",
+#"朶>'[cluster of flowers]'",
+机>'[desk]';
+朽>'[decayed]';
+朿>'[stab]';
+#"杀>'[kill]'",
+杆>'[pole]';
+杉>'[various species of pine and fir]';
+李>'[plum]';
+杏>'[apricot]';
+材>'[material]';
+村>'[village]';
+杓>'[handle of cup]';
+杖>'[cane]';
+杙>'[a tiny wooden post]';
+杜>'[stop]';
+杞>'[willow]';
+束>'[bind]';
+杠>'[lever]';
+条>'[clause]';
+杢>'[woodworker]';
+#"杢>'[woodworker]'",
+杤>'[type of oak]';
+来>'[come]';
+杪>'[tip of twig]';
+杭>'[cross stream]';
+杯>'[cup]';
+杰>'[hero]';
+東>'[east]';
+杲>'[bright sun]';
+杳>'[obscure]';
+杵>'[pestle]';
+杷>'[loquat]';
+杼>'[shuttle of loom]';
+松>'[pine tree]';
+板>'[plank]';
+#"枅>'[................................]'",
+枇>'[loquat]';
+枉>'[useless]';
+枋>'[sandalwood]';
+枌>'[variety of elm with small seeds]';
+析>'[split wood]';
+枕>'[pillow]';
+林>'[forest]';
+枚>'[stalk of shrub]';
+果>'[fruit]';
+枝>'[branches]';
+#"枟>'[wood streaks]'",
+#"枟>'[wood streaks]'",
+枢>'[door hinge]';
+#"枦>'[................................]'",
+枩>'[pine tree]';
+枯>'[dried out]';
+枳>'[trifoliate orange]';
+枴>'[cane]';
+架>'[rack]';
+枷>'[cangue scaffold]';
+枸>'[kind of aspen found in sichuan]';
+枹>'[drumstick]';
+柁>'[large tie-beams]';
+柄>'[handle]';
+#"柆>'[................................]'",
+#"柈>'[container]'",
+柎>'[calyx of flower]';
+柏>'[cypress]';
+某>'[certain thing or person]';
+柑>'[tangerine]';
+染>'[dye]';
+柔>'[soft]';
+柘>'[a thorny tree]';
+柚>'[pumelo]';
+柝>'[watchman''s rattle]';
+柞>'[oak]';
+柢>'[root]';
+柤>'[hawthorn]';
+#"柧>'[................................]'",
+柩>'[coffin which contains corpse]';
+柬>'[letter]';
+柮>'[flat pieces of wood]';
+柯>'[axe-handle]';
+柱>'[pillar]';
+柳>'[willow tree]';
+柴>'[firewood]';
+柵>'[fence]';
+査>'[investigate]';
+柾>'[straight grain]';
+柿>'[persimmon]';
+栂>'[a kind of evergreen tree]';
+栃>'[type of oak]';
+栄>'[glory]';
+栓>'[wooden peg]';
+栖>'[perch]';
+栗>'[chestnut tree]';
+栞>'[publication]';
+校>'[school]';
+栢>'[cypress]';
+栩>'[species of oak]';
+株>'[numerary adjunct for trees]';
+栫>'[fence]';
+栲>'[mangrove]';
+栴>'[sandalwood]';
+核>'[seed]';
+根>'[root]';
+格>'[pattern]';
+栽>'[cultivate]';
+桀>'[chicken roost]';
+桁>'[cross-beams of roof]';
+桂>'[cassia or cinnamon]';
+桃>'[peach]';
+框>'[frame]';
+案>'[table]';
+#"桍>'[................................]'",
+桎>'[fetters]';
+桐>'[name applied various trees]';
+桑>'[mulberry tree]';
+桓>'[variety of tree]';
+桔>'[chinese bellflower]';
+#"桙>'[................................]'",
+桜>'[cherry]';
+桝>'[................]';
+#"桝>'[................]'",
+档>'[shelf]';
+桧>'[chinese cypress]';
+桴>'[raft]';
+桶>'[pail]';
+桷>'[rafter]';
+#"桾>'[................................]'",
+桿>'[pole]';
+梁>'[bridge]';
+梃>'[a club]';
+梅>'[plums]';
+梍>'[tree name]';
+梏>'[handcuffs]';
+梓>'[catalpa ovata]';
+梔>'[gardenia]';
+梗>'[stem of flower]';
+#"梘>'[bamboo tube]'",
+條>'[clause]';
+梟>'[owl thus]';
+梠>'[small beam supporting rafters at]';
+梢>'[pointed tip of something long like a branch]';
+梦>'[dream]';
+梧>'[sterculia platanifolia]';
+梨>'[pear]';
+梭>'[weaver''s shuttle]';
+梯>'[ladder]';
+械>'[weapons]';
+梱>'[doorsill]';
+梳>'[comb]';
+梵>'[buddhist]';
+梶>'[oar]';
+梹>'[the areca-nut]';
+#"梹>'[the areca-nut]'",
+梼>'[block of wood]';
+棄>'[reject]';
+#"棆>'[................................]'",
+棉>'[cotton]';
+棊>'[chess]';
+棋>'[chess]';
+棍>'[stick]';
+棒>'[stick]';
+#"棔>'[................................]'",
+棕>'[hemp palm]';
+棗>'[date tree]';
+棘>'[jujube tree]';
+棚>'[tent]';
+棟>'[main beams supporting house]';
+棠>'[crab apple tree]';
+#"棡>'[................................]'",
+棣>'[kerria japonica plant]';
+棧>'[warehouse]';
+森>'[forest]';
+棯>'[jujube tree]';
+棲>'[perch]';
+棹>'[oar]';
+棺>'[coffin]';
+椀>'[bowl]';
+椁>'[outer-coffin]';
+椄>'[to graft]';
+椅>'[chair]';
+椈>'[cedar]';
+椋>'[fruit]';
+椌>'[instrument]';
+植>'[plant]';
+椎>'[hammer]';
+椏>'[the forking branch of a tree]';
+椒>'[pepper]';
+#"椓>'[strike]'",
+#"椚>'[................................]'",
+椛>'[type of birch]';
+検>'[check]';
+#"椡>'[................................]'",
+#"椢>'[................................]'",
+#"椣>'[................................]'",
+#"椥>'[................................]'",
+#"椦>'[................................]'",
+#"椨>'[................................]'",
+椪>'[machilus nanmu]';
+椰>'[palm tree]';
+椴>'[poplar]';
+椶>'[palm tree]';
+椹>'[a chopping board]';
+椽>'[beams]';
+椿>'[father]';
+楊>'[willow]';
+楓>'[maple tree]';
+楔>'[wedge]';
+楕>'[oval-shaped]';
+楙>'[name of plant]';
+楚>'[name of feudal state]';
+#"楜>'[................................]'",
+楝>'[melia japonica]';
+楞>'[used for ceylon in buddhist text]';
+楠>'[name of tree]';
+楡>'[elm tree]';
+楢>'[tinder]';
+楪>'[small dish]';
+楫>'[oar]';
+業>'[profession]';
+楮>'[mulberry]';
+楯>'[shield]';
+楳>'[plums]';
+#"楴>'[................................]'",
+極>'[extreme]';
+楷>'[model style of chinese writing]';
+楸>'[mallotus japonicus]';
+楹>'[column]';
+楼>'[building of two or more stories]';
+楽>'[happy]';
+#"楽>'[happy]'",
+#"榀>'[[not found in dictionary]]'",
+概>'[generally]';
+#"榉>'[type of elm]'",
+榎>'[small evergreen shrub]';
+#"榑>'[................................]'",
+榔>'[betel-nut tree]';
+榕>'[banyan tree]';
+榛>'[hazelnut]';
+榜>'[placard]';
+#"榠>'[................................]'",
+榧>'[type of yew]';
+榮>'[glory]';
+榱>'[rafter]';
+榲>'[pillar]';
+榴>'[pomegranate]';
+榻>'[cot]';
+榾>'[pieces of wood]';
+榿>'[alder]';
+槁>'[wither]';
+槃>'[tray]';
+槇>'[tip of a tree]';
+槊>'[spear]';
+構>'[frame]';
+槌>'[hammer]';
+槍>'[spear]';
+槎>'[raft]';
+槐>'[locust tree]';
+槓>'[lever]';
+様>'[shape]';
+#"様>'[shape]'",
+#"槛>'[threshold]'",
+#"槛>'[threshold]'",
+槧>'[wooden tablet]';
+槨>'[outer-coffin]';
+#"槫>'[................................]'",
+槭>'[maple]';
+槲>'[type of oak]';
+槹>'[spar]';
+槻>'[zelkova tree]';
+槽>'[trough]';
+槿>'[hibiscus]';
+樂>'[happy]';
+樅>'[fir tree]';
+樊>'[a railing]';
+樋>'[tree name]';
+#"樌>'[................................]'",
+#"樒>'[................................]'",
+樓>'[building of two or more stories]';
+#"樓>'[building of two or more stories]'",
+樗>'[kind of tree with useless timber]';
+標>'[mark]';
+樛>'[bending branches]';
+樞>'[door hinge]';
+樟>'[camphor tree]';
+模>'[model]';
+#"樢>'[................................]'",
+樣>'[shape]';
+権>'[power]';
+横>'[across]';
+#"横>'[across]'",
+#"横>'[across]'",
+樵>'[woodcutter]';
+樶>'[c]';
+樸>'[simple]';
+樹>'[tree]';
+樺>'[type of birch]';
+樽>'[goblet]';
+橄>'[olive]';
+橇>'[a sledge for transportation]';
+橈>'[bent or twisted piece of wood]';
+橋>'[bridge]';
+橘>'[orange]';
+橙>'[orange]';
+機>'[machine]';
+橡>'[chestnut oak]';
+橢>'[oval-shaped]';
+橦>'[tree]';
+#"橱>'[cabinet]'",
+#"橵>'[wood placed under roof tiles]'",
+#"橿>'[................................]'",
+檀>'[sandalwood]';
+檄>'[call arms]';
+檍>'[ilex]';
+檎>'[small red apple]';
+檐>'[eaves of house]';
+檗>'[tree]';
+檜>'[chinese cypress]';
+檠>'[stand for lamp]';
+檢>'[check]';
+檣>'[mast]';
+檪>'[chestnut-leaved oak]';
+檬>'[type of locust oracacia]';
+檮>'[block of wood]';
+檳>'[betelnut]';
+檸>'[lemon]';
+檻>'[threshold]';
+#"櫁>'[................................]'",
+櫂>'[oar]';
+櫃>'[cupboard]';
+#"櫑>'[................................]'",
+櫓>'[oar]';
+櫚>'[palm]';
+櫛>'[comb out]';
+櫞>'[citrus]';
+櫟>'[chestnut-leaved oak]';
+櫨>'[supporting block]';
+櫪>'[type of oak]';
+櫺>'[carved or patterned window sills]';
+櫻>'[cherry]';
+欄>'[railing]';
+欅>'[zelkova]';
+權>'[power]';
+欒>'[name of tree]';
+欖>'[olive]';
+欝>'[luxuriant]';
+#"欞>'[the lattice of a window a sill]'",
+欠>'[owe]';
+次>'[order]';
+欣>'[happy]';
+欧>'[translit.: europe]';
+欲>'[desire]';
+欷>'[sob]';
+欸>'[sighs]';
+欹>'[fierce dog]';
+欺>'[cheat]';
+欽>'[respect]';
+款>'[item]';
+歃>'[smear one''s mouth with blood of a victim when taking an oath]';
+歇>'[rest]';
+歉>'[deficient]';
+歌>'[song]';
+歎>'[sigh]';
+歐>'[translit.: europe]';
+歓>'[happy]';
+歔>'[blow through nose]';
+歙>'[to suck]';
+歛>'[draw back]';
+歟>'[final particle used express ques]';
+歡>'[happy]';
+止>'[stop]';
+正>'[right]';
+此>'[this]';
+武>'[military]';
+歩>'[step]';
+歪>'[slant]';
+歯>'[teeth]';
+歳>'[year]';
+歴>'[take place]';
+歸>'[return]';
+歹>'[bad]';
+死>'[die]';
+歿>'[die]';
+殀>'[die young]';
+殃>'[misfortune]';
+殄>'[to end]';
+殆>'[dangerous]';
+殉>'[die for cause]';
+殊>'[different]';
+残>'[injure]';
+殍>'[to starve to death]';
+殕>'[[not found in dictionary]]';
+殖>'[breed]';
+殘>'[injure]';
+殞>'[die]';
+殤>'[die young]';
+殪>'[die]';
+殫>'[utmost]';
+殯>'[encoffin]';
+殱>'[annihilate]';
+殲>'[annihilate]';
+殳>'[name of old weapon]';
+殴>'[beat]';
+段>'[section]';
+殷>'[many]';
+殺>'[kill]';
+殻>'[casing]';
+殼>'[casing]';
+殿>'[hall]';
+毀>'[destroy]';
+毅>'[resolute]';
+毆>'[beat]';
+毋>'[do not]';
+母>'[mother]';
+毎>'[every]';
+毒>'[poison]';
+毓>'[give birth to]';
+比>'[compare]';
+毘>'[help]';
+毛>'[hair]';
+#"毟>'[................................]'",
+毫>'[fine hair]';
+毬>'[ball]';
+毯>'[rug]';
+毳>'[fine hair or fur on animals]';
+氈>'[felt]';
+氏>'[clan]';
+民>'[people]';
+氓>'[people]';
+气>'[steam]';
+気>'[air]';
+氛>'[gas]';
+氣>'[air]';
+氤>'[hanging fog]';
+水>'[water]';
+氷>'[ice]';
+永>'[long]';
+氾>'[overflow]';
+汀>'[sandbar]';
+汁>'[juice]';
+求>'[seek]';
+汎>'[float]';
+汐>'[night tides]';
+汕>'[basket for catching fish]';
+汗>'[perspiration]';
+汚>'[filthy]';
+汝>'[you]';
+汞>'[element mercury]';
+江>'[large river]';
+池>'[pool]';
+#"汢>'[................................]'",
+汨>'[Mi(luo) river in hunan province where Qu Yuan drowned himself]';
+汪>'[vast]';
+汰>'[excessive]';
+汲>'[draw water from well]';
+#"汲>'[draw water from well]'",
+決>'[decide]';
+汽>'[steam]';
+汾>'[river in shanxi province]';
+沁>'[soak into]';
+沂>'[river in southeast shandong flow]';
+沃>'[water]';
+沈>'[sink]';
+沌>'[chaotic]';
+沍>'[freezing]';
+沐>'[bathe]';
+沒>'[not]';
+沓>'[connected]';
+沖>'[pour]';
+沙>'[sand]';
+沚>'[islet in stream]';
+沛>'[abundant]';
+没>'[not]';
+沢>'[marsh]';
+沫>'[froth]';
+沮>'[stop]';
+沱>'[rivers]';
+河>'[river]';
+沸>'[boil]';
+油>'[oil]';
+沺>'[turbulent]';
+治>'[govern]';
+沼>'[lake]';
+沽>'[buy and sell]';
+沾>'[moisten]';
+沿>'[follow course]';
+況>'[condition]';
+泄>'[leak]';
+泅>'[swim]';
+泉>'[spring]';
+泊>'[anchor vessel]';
+泌>'[to seep out]';
+泓>'[clear]';
+法>'[law]';
+泗>'[mucous]';
+泙>'[roar]';
+泛>'[drift]';
+泝>'[go upstream]';
+泡>'[bubbles]';
+波>'[waves]';
+泣>'[cry]';
+泥>'[mud]';
+注>'[concentrate]';
+泪>'[tears]';
+泯>'[destroy]';
+泰>'[great]';
+泱>'[great]';
+泳>'[dive]';
+洋>'[ocean]';
+洌>'[clear]';
+洒>'[sprinkle]';
+洗>'[wash]';
+洙>'[name of a river in shandong]';
+洛>'[river in shaanxi province]';
+洞>'[cave]';
+洟>'[snivel]';
+津>'[ferry]';
+洩>'[leak]';
+洪>'[vast]';
+洫>'[to ditch]';
+洲>'[continent]';
+洳>'[damp]';
+洵>'[true]';
+洶>'[the rush of water]';
+洸>'[sparkle]';
+活>'[live]';
+洽>'[spread]';
+派>'[school of thought]';
+流>'[flow]';
+浄>'[pure]';
+浅>'[shallow]';
+浙>'[zhejiang province]';
+浚>'[dredge]';
+浜>'[creek]';
+浣>'[to wash]';
+浤>'[beating of ocean]';
+浦>'[bank of river]';
+浩>'[great]';
+浪>'[wave]';
+浬>'[nautical mile]';
+浮>'[float]';
+浴>'[bathe]';
+海>'[sea]';
+浸>'[soak]';
+浹>'[saturate]';
+涅>'[blacken]';
+消>'[vanish]';
+涌>'[surge up]';
+涎>'[saliva]';
+涓>'[brook]';
+涕>'[tear]';
+涙>'[tears]';
+涛>'[large waves]';
+涜>'[ditch]';
+涯>'[shore]';
+液>'[sap]';
+涵>'[soak]';
+涸>'[dried up]';
+涼>'[cool]';
+淀>'[shallow water]';
+淅>'[water used wash rice]';
+淆>'[confused]';
+淇>'[river in henan province]';
+淋>'[drip]';
+淌>'[trickle]';
+淑>'[good]';
+淒>'[bitter cold]';
+#"淕>'[................................]'",
+淘>'[wash in sieve]';
+淙>'[gurgling sound of water]';
+淞>'[name of a river in Jiangsu]';
+淡>'[weak]';
+淤>'[mud]';
+淦>'[river in jiangxi province: water]';
+淨>'[pure]';
+淪>'[be lost]';
+淫>'[obscene]';
+淬>'[temper]';
+淮>'[river in anhui province]';
+深>'[deep]';
+淳>'[cyanogen]';
+淵>'[gulf]';
+混>'[mix]';
+淹>'[drown]';
+淺>'[shallow]';
+添>'[append]';
+清>'[clear]';
+渇>'[thirsty]';
+済>'[help]';
+渉>'[ford stream]';
+渊>'[surge up]';
+渋>'[astringent]';
+渓>'[mountain stream]';
+渕>'[surge up]';
+渙>'[scatter]';
+渚>'[small sand bank]';
+減>'[decrease]';
+渝>'[change]';
+渟>'[(of water) not flowing]';
+渠>'[ditch]';
+渡>'[cross]';
+渣>'[refuse]';
+渤>'[swelling]';
+渥>'[moisten]';
+渦>'[swirl]';
+温>'[lukewarm]';
+渫>'[beating of ocean]';
+測>'[measure]';
+渭>'[name of a river in shaanxi]';
+渮>'[river in shandong province]';
+港>'[port]';
+游>'[swim]';
+渺>'[endlessly long]';
+渾>'[muddy]';
+湃>'[sound of waves]';
+湊>'[piece together]';
+湍>'[rapid water current]';
+湎>'[flushed with drink]';
+湖>'[lake]';
+湘>'[hunan province]';
+湛>'[deep]';
+湟>'[river in qinghai province]';
+湧>'[well up]';
+湫>'[a small pond]';
+湮>'[bury]';
+湯>'[hot water]';
+湲>'[flow]';
+#"湳>'[[not found in dictionary]]'",
+湾>'[bay]';
+湿>'[wet]';
+#"湿>'[wet]'",
+#"湿>'[wet]'",
+溌>'[pour]';
+溏>'[pool]';
+源>'[spring]';
+準>'[rule]';
+溘>'[abruptly]';
+溜>'[slide]';
+溝>'[ditch]';
+溟>'[drizzling rain]';
+溢>'[overflow]';
+溥>'[big]';
+溪>'[mountain stream]';
+溯>'[go upstream]';
+溲>'[urinate]';
+溶>'[melt]';
+溷>'[privy]';
+溺>'[drown]';
+溽>'[moist]';
+滂>'[torrential]';
+滄>'[blue]';
+滅>'[extinguish]';
+滉>'[deep]';
+滋>'[grow]';
+滌>'[wash]';
+滑>'[slip]';
+滓>'[sediment]';
+滔>'[overflow]';
+滕>'[<arch> county in shandong province]';
+滝>'[raining]';
+滞>'[block up]';
+滬>'[shanghai]';
+滯>'[block up]';
+滲>'[soak through]';
+滴>'[drip]';
+滷>'[thick gravy]';
+滸>'[riverbank]';
+滾>'[turn]';
+滿>'[fill]';
+漁>'[to fish]';
+漂>'[float]';
+漆>'[varnish]';
+漉>'[filter]';
+漏>'[leak]';
+漑>'[water]';
+漓>'[river in guangxi province]';
+演>'[perform]';
+漕>'[transport by water]';
+漠>'[desert]';
+漢>'[chinese people]';
+漣>'[flowing water]';
+漫>'[overflow of water]';
+漬>'[soak]';
+漱>'[gargle]';
+漲>'[rise in price]';
+漸>'[gradually]';
+漾>'[overflow]';
+漿>'[any thick fluid]';
+潁>'[river in anhui]';
+潅>'[pour]';
+潔>'[clean]';
+潘>'[surname]';
+潛>'[hide]';
+潜>'[hide]';
+潟>'[land inundated with salt from ti]';
+潤>'[soft]';
+潦>'[to flood]';
+潭>'[deep pool]';
+潮>'[tide]';
+潯>'[steep bank by stream]';
+潰>'[flooding river]';
+潴>'[pond]';
+潸>'[weep]';
+潺>'[sound of flowing water]';
+潼>'[high]';
+澀>'[astringent]';
+澁>'[astringent]';
+澂>'[clear and still water]';
+澄>'[purify water by allowing sedimen]';
+澆>'[spray]';
+澎>'[splatter]';
+澑>'[slide]';
+澗>'[brook]';
+澡>'[wash]';
+澣>'[cleanse]';
+澤>'[marsh]';
+#"澪>'[................................]'",
+澱>'[sediment]';
+澳>'[inlet]';
+澹>'[calm]';
+激>'[arouse]';
+濁>'[muddy]';
+濂>'[waterfall]';
+濃>'[thick]';
+濆>'[river bank]';
+濔>'[many]';
+濕>'[wet]';
+濘>'[mud]';
+濛>'[drizzling]';
+濟>'[help]';
+濠>'[moat]';
+濡>'[immerse]';
+濤>'[large waves]';
+濫>'[flood]';
+濬>'[dredge]';
+濮>'[county in Henan province]';
+濯>'[wash out]';
+濱>'[beach]';
+濳>'[hide]';
+濶>'[broad]';
+濺>'[sprinkle]';
+濾>'[strain out]';
+瀁>'[waves]';
+瀉>'[drain off]';
+瀋>'[juice]';
+瀏>'[clear]';
+瀑>'[waterfall]';
+瀕>'[approach]';
+瀘>'[river in jiangxi province]';
+瀚>'[vast]';
+瀛>'[sea]';
+瀝>'[trickle]';
+瀞>'[pool in a river]';
+瀟>'[sound of beating wind and rain]';
+瀦>'[pond]';
+瀧>'[raining]';
+瀬>'[swift current]';
+瀰>'[overflow]';
+瀲>'[waves]';
+瀾>'[overflowing]';
+灌>'[pour]';
+灑>'[sprinkle]';
+灘>'[bank]';
+灣>'[bay]';
+火>'[fire]';
+灯>'[lantern]';
+灰>'[ashes]';
+灸>'[cauterize with moxa]';
+灼>'[burn]';
+災>'[calamity]';
+炉>'[fireplace]';
+炊>'[cook]';
+炎>'[flame]';
+炒>'[fry]';
+炙>'[roast]';
+炬>'[torch]';
+炭>'[charcoal]';
+炮>'[large gun]';
+炯>'[bright]';
+炳>'[bright]';
+炸>'[fry in oil]';
+点>'[dot]';
+為>'[do]';
+烈>'[fiery]';
+烋>'[boast]';
+烏>'[crow]';
+烙>'[brand]';
+烝>'[rise]';
+烟>'[smoke]';
+烱>'[bright]';
+烹>'[boil]';
+烽>'[signal fire]';
+焉>'[thereupon]';
+焔>'[flame]';
+焙>'[dry over slow fire]';
+焚>'[burn]';
+焜>'[fire]';
+無>'[negative]';
+焦>'[burned]';
+然>'[yes]';
+焼>'[burn]';
+煉>'[smelt]';
+煌>'[bright]';
+煎>'[fry in fat or oil]';
+煕>'[bright]';
+煖>'[warm]';
+煙>'[smoke]';
+煢>'[alone]';
+煤>'[coal]';
+煥>'[shining]';
+煦>'[kind]';
+照>'[shine]';
+煩>'[bother]';
+煬>'[roast]';
+煮>'[cook]';
+煽>'[stir up]';
+熄>'[put out]';
+熈>'[bright]';
+熊>'[bear]';
+熏>'[smoke]';
+熔>'[melt]';
+#"熕>'[................................]'",
+熙>'[bright]';
+熟>'[well cooked]';
+熨>'[iron]';
+熬>'[cook down]';
+熱>'[hot]';
+熹>'[dim light]';
+熾>'[burning hot]';
+燃>'[burn]';
+燈>'[lantern]';
+燉>'[heat with fire]';
+燎>'[burn]';
+燐>'[phosphorus]';
+燒>'[burn]';
+燔>'[to roast]';
+燕>'[swallow (bird)]';
+#"燗>'[................................]'",
+營>'[encampment]';
+燠>'[warm]';
+燥>'[dry]';
+燦>'[vivid]';
+燧>'[flintstone]';
+燬>'[burn down]';
+燭>'[candle]';
+燮>'[harmonize]';
+#"燵>'[................................]'",
+燹>'[fire]';
+燻>'[smoke]';
+燼>'[cinders]';
+燿>'[shine]';
+爆>'[crackle]';
+爍>'[shine]';
+爐>'[fireplace]';
+爛>'[rotten]';
+爨>'[oven]';
+爪>'[claw]';
+爬>'[crawl]';
+爭>'[dispute]';
+爰>'[lead on to]';
+爲>'[do]';
+爵>'[feudal title or rank]';
+父>'[father]';
+爺>'[father]';
+爻>'[diagrams for divination]';
+爼>'[chopping board or block]';
+爽>'[happy]';
+爾>'[you]';
+爿>'[half of tree trunk]';
+牀>'[bed]';
+牆>'[wall]';
+片>'[slice]';
+版>'[printing blocks]';
+牋>'[memorandum]';
+牌>'[signboard]';
+牒>'[documents]';
+牘>'[writing tablet]';
+牙>'[tooth]';
+牛>'[cow]';
+牝>'[female of species]';
+牟>'[make]';
+牡>'[male of animals]';
+牢>'[prison]';
+牧>'[tend cattle]';
+物>'[thing]';
+牲>'[sacrificial animal]';
+牴>'[gore]';
+特>'[special]';
+牽>'[drag]';
+牾>'[to oppose]';
+犀>'[rhinoceros]';
+犁>'[plow]';
+犂>'[plow]';
+犇>'[run fast]';
+犒>'[entertain victorious soldiers]';
+犖>'[brindled ox]';
+犠>'[sacrifice]';
+犢>'[calf]';
+犧>'[sacrifice]';
+犬>'[dog]';
+犯>'[commit crime]';
+犲>'[wolf]';
+状>'[form]';
+犹>'[like]';
+狂>'[insane]';
+狃>'[to covet]';
+狄>'[tribe from northern china]';
+狆>'[pekinese dog]';
+狎>'[be familiar with]';
+狐>'[species of fox]';
+狒>'[baboon]';
+狗>'[dog]';
+狙>'[ape]';
+#"狛>'[................................]'",
+狠>'[vicious]';
+狡>'[cunning]';
+狢>'[animal name]';
+狩>'[winter hunting]';
+独>'[alone]';
+狭>'[narrow]';
+狷>'[rash]';
+狸>'[fox]';
+狹>'[narrow]';
+狼>'[wolf]';
+狽>'[legendary animal with short fore]';
+猊>'[lion]';
+猖>'[mad]';
+猗>'[exclamation of admiration]';
+猛>'[violent]';
+猜>'[guess]';
+猝>'[abruptly]';
+猟>'[hunt]';
+猥>'[vulgar]';
+猩>'[species of orangutan]';
+猪>'[pig]';
+猫>'[cat]';
+献>'[offer]';
+#"猯>'[................................]'",
+猴>'[monkey]';
+猶>'[like]';
+猷>'[plan]';
+猾>'[crafty]';
+猿>'[ape]';
+獄>'[prison]';
+獅>'[lion]';
+獎>'[prize]';
+獏>'[the panther]';
+獗>'[unruly]';
+獣>'[beast]';
+獨>'[alone]';
+獪>'[sly]';
+獰>'[ferocious appearance]';
+獲>'[obtain]';
+獵>'[hunt]';
+獸>'[beast]';
+獺>'[otter]';
+獻>'[offer]';
+玄>'[deep]';
+率>'[to lead]';
+玉>'[jade]';
+王>'[king]';
+玖>'[black-colored jade]';
+玩>'[play with]';
+玲>'[tinkling of jade]';
+玳>'[tortoise shell]';
+玻>'[glass]';
+珀>'[amber]';
+珂>'[inferior kind of jade]';
+珈>'[ornament attached woman''s hairpi]';
+珊>'[coral]';
+珍>'[precious]';
+珎>'[precious]';
+珞>'[kind of necklace]';
+珠>'[precious stone]';
+珥>'[ear ornament]';
+珪>'[jade table conferred upon feudal]';
+班>'[class]';
+珮>'[jade ornament]';
+珱>'[necklace made of precious stones]';
+#"珸>'[................................]'",
+現>'[appear]';
+球>'[ball]';
+琅>'[variety of white carnelian]';
+理>'[reason]';
+琉>'[sparkling stone]';
+琢>'[polish jade]';
+琥>'[jewel in shape of tiger]';
+琲>'[necklace]';
+琳>'[beautiful jade]';
+琴>'[chinese lute or guitar]';
+琵>'[guitar-like instrument]';
+琶>'[guitar-like instrument]';
+琺>'[enamel]';
+琿>'[bright]';
+瑁>'[fine piece of jade]';
+瑕>'[flaw in gem]';
+瑙>'[agate]';
+瑚>'[coral]';
+瑛>'[luster of gem]';
+瑜>'[flawless gem or jewel]';
+瑞>'[felicitous omen]';
+瑟>'[large stringed musical instrument]';
+瑠>'[precious stone]';
+瑣>'[fragments]';
+瑤>'[precious jade]';
+瑩>'[lustre of gems]';
+瑪>'[agate]';
+瑯>'[kind of white cornelian]';
+瑰>'[extraordinary]';
+瑳>'[luster of gem]';
+瑶>'[precious jade]';
+瑾>'[brilliance of gems]';
+璃>'[glass]';
+璋>'[jade plaything]';
+璞>'[unpolished gem]';
+璢>'[precious stone]';
+璧>'[piece of jade with hole in it]';
+環>'[jade ring or bracelet]';
+璽>'[imperial signet]';
+瓊>'[jade]';
+瓏>'[gem cut like dragon]';
+瓔>'[necklace made of precious stones]';
+瓜>'[melon]';
+瓠>'[bottle gourd]';
+瓢>'[ladle made from dried gourd]';
+瓣>'[petal]';
+瓦>'[tile]';
+瓧>'[decagram]';
+瓩>'[kilowatt]';
+瓮>'[earthen jar]';
+瓰>'[[not found in dictionary]]';
+瓱>'[milligram]';
+#"瓲>'[................................]'",
+瓶>'[jug]';
+瓷>'[crockery]';
+瓸>'[hectogram]';
+甃>'[brick wall of a well]';
+甄>'[examine]';
+甅>'[centigram]';
+甌>'[bowl]';
+甍>'[rafters supporting roof tiles]';
+甎>'[brick]';
+甑>'[boiler for steaming rice]';
+甓>'[glazed tiles]';
+甕>'[earthen jar]';
+甘>'[sweetness]';
+甚>'[great extent]';
+甜>'[sweet]';
+甞>'[taste]';
+生>'[life]';
+産>'[give birth]';
+甥>'[sister''s child]';
+甦>'[be reborn]';
+用>'[use]';
+甫>'[begin]';
+甬>'[path]';
+田>'[field]';
+由>'[cause]';
+甲>'[armor]';
+申>'[to state to a superior]';
+男>'[male]';
+甸>'[suburbs of capital]';
+町>'[raised path between fields]';
+画>'[painting]';
+甼>'[raised path between fields]';
+畄>'[stop]';
+畆>'[chinese land measure]';
+#"畉>'[................................]'",
+畊>'[plow]';
+畋>'[till land]';
+界>'[boundary]';
+#"畍>'[................................]'",
+畏>'[fear]';
+畑>'[dry (as opposed to rice) field]';
+畔>'[boundary path dividing fields]';
+留>'[stop]';
+畚>'[straw basket]';
+畛>'[border]';
+畜>'[livestock]';
+畝>'[chinese land measure]';
+畠>'[garden]';
+畢>'[end]';
+畤>'[place for worshipping the haven]';
+略>'[approximately]';
+畦>'[sections in vegetable farm]';
+畧>'[approximately]';
+#"畩>'[................................]'",
+番>'[take turns]';
+畫>'[delineate]';
+#"畭>'[................................]'",
+異>'[different]';
+畳>'[repeat]';
+畴>'[farmland]';
+當>'[bear]';
+畷>'[raised path between fields]';
+畸>'[odd]';
+畿>'[imperial domain]';
+疂>'[repeat]';
+疆>'[boundary]';
+疇>'[farmland]';
+疉>'[repeat]';
+疊>'[repeat]';
+疋>'[roll]';
+疎>'[neglect]';
+疏>'[neglect]';
+疑>'[doubt]';
+疔>'[carbuncle]';
+疚>'[chronic disease]';
+疝>'[hernia]';
+疣>'[wart]';
+疥>'[scabies]';
+疫>'[epidemic]';
+疱>'[acne]';
+疲>'[feel tired]';
+疳>'[childhood diseases]';
+疵>'[flaw]';
+疸>'[jaundice]';
+疹>'[measles]';
+疼>'[aches]';
+疽>'[ulcer]';
+疾>'[illness]';
+痂>'[scab]';
+痃>'[indigestion]';
+病>'[illness]';
+症>'[disease]';
+痊>'[be healed]';
+痍>'[wound]';
+痒>'[itch]';
+痔>'[hemorrhoids]';
+痕>'[scar]';
+痘>'[smallpox]';
+痙>'[convulsions]';
+痛>'[pain]';
+痞>'[dyspepsia]';
+痢>'[dysentry]';
+痣>'[spots]';
+痩>'[thin]';
+痰>'[phlegm]';
+痲>'[pock-marked]';
+痳>'[pock-marked]';
+痴>'[foolish]';
+痺>'[paralysis]';
+痼>'[chronic disease]';
+痾>'[chronic illness]';
+痿>'[paralysis]';
+瘁>'[feel tired]';
+瘉>'[get well]';
+瘋>'[crazy]';
+瘍>'[ulcers]';
+瘟>'[epidemic]';
+瘠>'[thin]';
+瘡>'[tumor]';
+瘢>'[scar]';
+瘤>'[tumor]';
+瘧>'[intermittent fever]';
+瘰>'[scrofula]';
+瘴>'[malaria pestilential vapors]';
+瘻>'[fistula]';
+療>'[be healed]';
+癆>'[consumption]';
+癇>'[epilepsy]';
+癈>'[abrogate]';
+癌>'[cancer]';
+癒>'[get well]';
+癖>'[craving]';
+癘>'[sore]';
+癜>'[erythema]';
+癡>'[silly]';
+癢>'[itch]';
+癧>'[scrofulous lumps or swellings]';
+癨>'[quickly]';
+癩>'[leprosy]';
+癪>'[spasms]';
+癬>'[ringworms]';
+癰>'[carbuncle]';
+癲>'[crazy]';
+癶>'[legs]';
+癸>'[last of ten celestial stems]';
+発>'[issue]';
+登>'[rise]';
+發>'[issue]';
+白>'[white]';
+百>'[one hundred]';
+皀>'[kernel]';
+皃>'[countenance]';
+的>'[possessive]';
+皆>'[all]';
+皇>'[royal]';
+皈>'[follow]';
+皋>'[the high land along a river]';
+皎>'[white]';
+皐>'[the high land along a river]';
+皓>'[bright]';
+皖>'[anhui province]';
+皙>'[white]';
+皚>'[brilliant white]';
+皮>'[skin]';
+皰>'[pimples]';
+皴>'[chapped]';
+皷>'[drum]';
+皸>'[crack]';
+皹>'[crack]';
+皺>'[wrinkles]';
+皿>'[shallow container]';
+盂>'[basin]';
+盃>'[glass]';
+盆>'[basin]';
+盈>'[fill]';
+益>'[profit]';
+盍>'[what? why not? correspond]';
+盒>'[small box or case]';
+盖>'[cover]';
+盗>'[rob]';
+盛>'[abundant]';
+盜>'[rob]';
+盞>'[small cup or container]';
+盟>'[swear]';
+盡>'[exhaust]';
+監>'[supervise]';
+盤>'[tray]';
+盥>'[wash]';
+盧>'[cottage]';
+盪>'[to toss about]';
+目>'[eye]';
+盲>'[blind]';
+直>'[straight]';
+相>'[mutual]';
+盻>'[glare]';
+盾>'[shield]';
+省>'[province]';
+眄>'[to look askance]';
+眇>'[blind in one eye]';
+眈>'[gloat]';
+眉>'[eyebrows]';
+看>'[look]';
+県>'[county]';
+眛>'[dim]';
+#"眞>'[real]'",
+真>'[real]';
+眠>'[close eyes]';
+#"眤>'[................................]'",
+眥>'[eye sockets]';
+眦>'[corner of the eyes]';
+眩>'[confuse]';
+眷>'[take interest in]';
+眸>'[pupil of eye]';
+眺>'[look at]';
+眼>'[eye]';
+着>'[make move]';
+睇>'[look at]';
+睚>'[corner of eye]';
+睛>'[eyeball]';
+睡>'[sleep]';
+督>'[supervise]';
+睥>'[look askance at]';
+睦>'[friendly]';
+睨>'[look askance at]';
+睫>'[eyelashes]';
+睹>'[look at]';
+睾>'[testicle]';
+睿>'[shrewd]';
+瞋>'[glare with anger]';
+瞎>'[blind]';
+瞑>'[close eyes]';
+瞞>'[deceive]';
+瞠>'[look at]';
+瞥>'[take fleeting glance at]';
+瞬>'[wink]';
+瞭>'[bright]';
+瞰>'[watch]';
+瞳>'[pupil of eye]';
+瞶>'[dim]';
+#"瞶>'[dim]'",
+瞻>'[look]';
+瞼>'[eyelid]';
+瞽>'[blind]';
+瞿>'[surname]';
+矇>'[stupid]';
+矍>'[look about in firght or alarm]';
+矗>'[straight]';
+矚>'[watch carefully]';
+矛>'[spear]';
+矜>'[pity]';
+矢>'[arrow]';
+矣>'[particle of completed action]';
+知>'[know]';
+矧>'[much more]';
+矩>'[carpenter''s square]';
+短>'[short]';
+矮>'[short]';
+矯>'[correct]';
+石>'[stone]';
+矼>'[stone bridge]';
+砂>'[sand]';
+砌>'[stone steps]';
+砒>'[arsenic]';
+研>'[grind]';
+砕>'[break]';
+砠>'[rocky]';
+砥>'[whetstone]';
+砦>'[stockade]';
+砧>'[anvil]';
+砲>'[gun]';
+破>'[break]';
+砺>'[whetstone]';
+砿>'[mine]';
+硅>'[silicon]';
+硝>'[saltpeter]';
+硫>'[sulfur]';
+硬>'[hard]';
+硯>'[inkstone]';
+#"硲>'[................................]'",
+#"硴>'[................................]'",
+硼>'[borax]';
+碁>'[chess]';
+碆>'[arrow-tip]';
+碇>'[anchor]';
+碌>'[rough]';
+碍>'[obstruct]';
+碎>'[break]';
+碑>'[stone tablet]';
+碓>'[pestle]';
+#"碕>'[................................]'",
+碗>'[bowl]';
+碚>'[suburb]';
+碣>'[stone tablet]';
+碧>'[jade]';
+碩>'[great]';
+碪>'[stone slab used for washing clot]';
+碯>'[agate]';
+#"碵>'[................................]'",
+確>'[sure]';
+碼>'[number]';
+碾>'[roller]';
+磁>'[magnetic]';
+磅>'[pound]';
+#"磆>'[................................]'",
+磊>'[pile of rocks or stones]';
+磋>'[polish]';
+磐>'[large rock]';
+磑>'[stone mill]';
+磔>'[downward stroke slanting righ]';
+磚>'[tile]';
+磧>'[sand and gravel]';
+磨>'[grind]';
+磬>'[musical instrument]';
+磯>'[jetty]';
+磴>'[steps on ledge]';
+磽>'[barren land]';
+礁>'[reef]';
+#"礇>'[................................]'",
+礎>'[foundation stone]';
+#"礎>'[foundation stone]'",
+#"礒>'[................................]'",
+礙>'[obstruct]';
+礦>'[mine]';
+礪>'[whetstone]';
+礫>'[gravel]';
+礬>'[alum]';
+示>'[show]';
+礼>'[social custom]';
+社>'[god of the soil and altars to him]';
+祀>'[to sacrifice]';
+祁>'[pray]';
+祇>'[only]';
+祈>'[pray]';
+祉>'[happiness]';
+祐>'[divine intervention]';
+祓>'[exorcise]';
+祕>'[mysterious]';
+祖>'[ancestor]';
+祗>'[respect]';
+祚>'[throne]';
+祝>'[pray for happiness or blessings]';
+神>'[spirit]';
+祟>'[evil spirit]';
+祠>'[ancestral temple]';
+祢>'[one''s deceased father]';
+祥>'[good luck]';
+票>'[slip of paper or bamboo]';
+祭>'[sacrifice to]';
+祷>'[pray]';
+祺>'[good luck]';
+祿>'[blessing]';
+禀>'[report to]';
+禁>'[restrict]';
+禄>'[blessing]';
+禅>'[meditation]';
+禊>'[semi-annual ceremony of purifica]';
+禍>'[misfortune]';
+禎>'[lucky]';
+福>'[happiness]';
+禝>'[[not found in dictionary]]';
+禦>'[defend]';
+禧>'[happiness]';
+禪>'[meditation]';
+禮>'[social custom]';
+禰>'[one''s deceased father]';
+禳>'[pray or sacrifice]';
+禹>'[legendary hsia dynasty founder]';
+禺>'[district]';
+禽>'[birds]';
+禾>'[grain still on stalk]';
+禿>'[bald]';
+秀>'[ear of grain]';
+私>'[private]';
+秉>'[grasp]';
+秋>'[autumn]';
+科>'[section]';
+秒>'[beard of grain or corn]';
+秕>'[empty grain or rice husk]';
+秘>'[secret]';
+租>'[rent]';
+#"秡>'[................................]'",
+秣>'[fodder]';
+秤>'[balance]';
+秦>'[feudal state of qin]';
+秧>'[rice seedlings]';
+秩>'[order]';
+秬>'[black millet]';
+称>'[call]';
+移>'[change place]';
+稀>'[rare]';
+稈>'[stalk of grain]';
+程>'[journey]';
+稍>'[little]';
+税>'[taxes]';
+稔>'[ripe grain]';
+稗>'[darnels]';
+#"稘>'[................................]'",
+稙>'[grain ready for grinding]';
+稚>'[young]';
+稜>'[corner]';
+稟>'[report to]';
+稠>'[dense]';
+種>'[seed]';
+稱>'[call]';
+稲>'[rice growing in field]';
+稷>'[god of cereals]';
+稻>'[rice growing in field]';
+稼>'[sow grain]';
+稽>'[examine]';
+稾>'[draft]';
+稿>'[draft]';
+穀>'[corn]';
+穂>'[ear of grain]';
+#"穃>'[................................]'",
+穆>'[majestic]';
+穉>'[young grain]';
+積>'[accumulate]';
+穎>'[rice tassel]';
+#"穎>'[rice tassel]'",
+穐>'[fall]';
+穗>'[ear of grain]';
+穡>'[farm]';
+穢>'[dirty]';
+穣>'[stalks of grain]';
+穩>'[stable]';
+穫>'[harvest]';
+穰>'[stalks of grain]';
+穴>'[cave]';
+究>'[examine]';
+穹>'[high and vast]';
+空>'[empty]';
+穽>'[hole]';
+穿>'[penetrate]';
+突>'[suddenly]';
+窃>'[secretly]';
+窄>'[narrow]';
+窈>'[obscure]';
+窒>'[stop up]';
+窓>'[window]';
+窕>'[slender]';
+窖>'[pit]';
+窗>'[window]';
+窘>'[embrassassed]';
+窟>'[hole]';
+窩>'[nest]';
+窪>'[hollow]';
+窮>'[poor]';
+窯>'[kiln]';
+窰>'[kiln]';
+窶>'[poor]';
+窺>'[peep]';
+窿>'[mine shaft]';
+竃>'[furnace]';
+竄>'[run away]';
+竅>'[hole]';
+竇>'[surname]';
+竈>'[furnace]';
+竊>'[secretly]';
+立>'[stand]';
+竍>'[decaliter]';
+竏>'[kiloliter]';
+竒>'[strange]';
+竓>'[milliliter]';
+竕>'[deciliter]';
+站>'[stand up]';
+竚>'[stand and wait for long time]';
+竜>'[dragon]';
+竝>'[combine]';
+竟>'[finally]';
+章>'[composition]';
+竡>'[hectoliter]';
+竢>'[wait for]';
+竣>'[terminate]';
+童>'[child]';
+竦>'[revere]';
+竪>'[perpendicular]';
+竭>'[put forth great effort]';
+端>'[end]';
+竰>'[centiliter]';
+競>'[contend]';
+竸>'[contend]';
+竹>'[bamboo]';
+竺>'[india]';
+竿>'[bamboo pole]';
+#"笂>'[................................]'",
+笄>'[hairpin]';
+笆>'[bamboo fence]';
+笈>'[bamboo box used carry books]';
+笊>'[ladle]';
+笋>'[bamboo shoots]';
+笏>'[tablet held by someone having au]';
+笑>'[smile]';
+#"笘>'[................................]'",
+笙>'[small gourd-shaped musical instrument]';
+笛>'[bamboo flute]';
+笞>'[bamboo rod used for beatings]';
+笠>'[bamboo hat]';
+笥>'[a hamper]';
+符>'[i.d. tag]';
+笨>'[foolish]';
+第>'[sequence]';
+笳>'[a reed leaf whistle]';
+笵>'[a bamboo form]';
+#"笶>'[................................]'",
+笹>'[small bamboo]';
+筅>'[bamboo brush]';
+筆>'[writing brush]';
+筈>'[arrow end]';
+等>'[rank]';
+筋>'[muscles]';
+筌>'[bamboo fish trap]';
+筍>'[bamboo shoot]';
+筏>'[raft]';
+筐>'[bamboo basket or chest]';
+筑>'[ancient lute]';
+筒>'[thick piece of bamboo]';
+答>'[answer]';
+策>'[scheme]';
+筝>'[stringed musical instrument]';
+筥>'[round-shaped bamboo basket for]';
+筧>'[bamboo water pipe]';
+筬>'[reed of a loom]';
+筮>'[divination with stalks of plants]';
+筰>'[cable]';
+筱>'[dwarf bamboo]';
+筴>'[type of grass used in divination]';
+筵>'[bamboo mat]';
+筺>'[bamboo basket or chest]';
+箆>'[fine-toothed comb]';
+箇>'[numerary adjunct]';
+箋>'[note]';
+箍>'[hoop]';
+箏>'[stringed musical instrument]';
+箒>'[broom]';
+箔>'[reed screen]';
+箕>'[sieve]';
+算>'[count]';
+箘>'[fine bamboo]';
+箙>'[quiver]';
+箚>'[brief note]';
+箜>'[ancient string music instrument]';
+箝>'[tweezers]';
+#"箟>'[................................]'",
+管>'[pipe]';
+箪>'[small bamboo basket for holding]';
+箭>'[arrow]';
+箱>'[case]';
+箴>'[needle]';
+箸>'[chopsticks]';
+節>'[knot]';
+篁>'[bamboo grove]';
+範>'[pattern]';
+篆>'[seal script]';
+篇>'[chapter]';
+築>'[build]';
+篋>'[ratton box]';
+篌>'[ancient music instrument]';
+篏>'[inlay]';
+篝>'[bamboo basket]';
+篠>'[dwarf bamboo]';
+篤>'[deep]';
+篥>'[bulgle]';
+篦>'[fine-toothed comb]';
+篩>'[sieve]';
+篭>'[cage]';
+篳>'[wicker]';
+#"篶>'[................................]'",
+篷>'[awning]';
+簀>'[bed mat]';
+簇>'[swarm]';
+簍>'[bamboo basket]';
+簑>'[a coir raincoat]';
+簒>'[usurp]';
+#"簓>'[................................]'",
+簔>'[a coir raincoat]';
+#"簗>'[................................]'",
+簟>'[bamboo mat]';
+簡>'[simple]';
+簣>'[bamboo basket for carrying earth]';
+簧>'[reed of woodwind instrument]';
+簪>'[hairpin]';
+簫>'[musical instrument like pan-pipes]';
+簷>'[eaves of house]';
+簸>'[winnower]';
+簽>'[sign]';
+簾>'[a blind]';
+簿>'[register]';
+籀>'[recite]';
+籃>'[basket]';
+籌>'[chip]';
+籍>'[record]';
+籏>'[flag]';
+籐>'[climbing plants]';
+籔>'[bamboo basket]';
+籖>'[tally]';
+籘>'[climbing plants]';
+籟>'[bamboo flute]';
+籠>'[cage]';
+籤>'[tally]';
+籥>'[key]';
+籬>'[bamboo or wooden fence]';
+米>'[hulled or husked uncooked rice]';
+籵>'[dm]';
+籾>'[unhulled rice]';
+粁>'[km]';
+粂>'[surname]';
+粃>'[empty husks of grain]';
+粉>'[powder]';
+粋>'[pure]';
+粍>'[mm]';
+#"粐>'[................................]'",
+粒>'[grain]';
+粕>'[lees]';
+粗>'[rough]';
+粘>'[viscous]';
+粛>'[pay respects]';
+粟>'[unhusked millet]';
+#"粡>'[................................]'",
+粢>'[grain offered in ritual sacrific]';
+粤>'[Guangdong and Guangxi provinces]';
+粥>'[rice gruel]';
+粧>'[toilet]';
+粨>'[hm]';
+#"粫>'[................................]'",
+#"粭>'[................................]'",
+粮>'[food]';
+粱>'[better varieties of millet]';
+粲>'[polish]';
+粳>'[non-glutinous rice]';
+粹>'[pure]';
+粽>'[dumpling made of glutinous rice]';
+精>'[essence]';
+#"糀>'[................................]'",
+#"糂>'[................................]'",
+糅>'[blend]';
+糊>'[paste]';
+糎>'[mm]';
+糒>'[food for a journey]';
+糖>'[sugar]';
+#"糘>'[................................]'",
+糜>'[rice gruel]';
+糞>'[manure]';
+糟>'[sediment]';
+糠>'[chaff]';
+糢>'[rice snacks]';
+糧>'[food]';
+糯>'[glutinous rice]';
+糲>'[unpolished rice]';
+糴>'[purchase grains]';
+糶>'[sell grains]';
+糸>'[silk]';
+糺>'[to collaborate]';
+系>'[system]';
+糾>'[investigate]';
+紀>'[record]';
+紂>'[name of an emperor]';
+約>'[treaty]';
+紅>'[red]';
+紆>'[bend]';
+紊>'[confused]';
+紋>'[line]';
+納>'[admit]';
+紐>'[knot]';
+純>'[pure]';
+紕>'[spoiled silk]';
+紗>'[gauze]';
+紘>'[string]';
+紙>'[paper]';
+級>'[level]';
+紛>'[in disorder]';
+紜>'[confused]';
+素>'[white (silk)]';
+紡>'[spin]';
+索>'[large rope]';
+紫>'[purple]';
+紬>'[kind of thin silk]';
+紮>'[tie]';
+累>'[tired]';
+細>'[fine]';
+紲>'[bridle]';
+紳>'[girdle]';
+紵>'[ramie]';
+紹>'[continue]';
+紺>'[dark blue color]';
+紿>'[cheat]';
+終>'[end]';
+絃>'[string on musical instrument]';
+組>'[class]';
+絅>'[unlined garment]';
+絆>'[loop]';
+#"絋>'[................................]'",
+経>'[classic works]';
+絎>'[baste]';
+絏>'[rope]';
+結>'[knot]';
+絖>'[fine silks]';
+絛>'[silk braid]';
+絞>'[twist]';
+絡>'[enmesh]';
+絢>'[variegated]';
+絣>'[to baste for sewing]';
+給>'[give]';
+絨>'[silk]';
+絮>'[waste cotton]';
+統>'[govern]';
+絲>'[silk]';
+絳>'[deep red]';
+絵>'[draw]';
+絶>'[cut]';
+絹>'[kind of thick stiff silk]';
+#"絽>'[................................]'",
+綉>'[embroider]';
+綏>'[soothe]';
+經>'[classic works]';
+継>'[continue]';
+続>'[continue]';
+#"綛>'[................................]'",
+綜>'[arrange threads for weaving]';
+#"綟>'[................................]'",
+綢>'[silk cloth]';
+綣>'[affectionate]';
+綫>'[line]';
+綬>'[silk ribbon attached as a seal]';
+維>'[maintain]';
+綮>'[embroidered banner]';
+綯>'[braid]';
+綰>'[to string together]';
+綱>'[heavy rope]';
+網>'[net]';
+綴>'[patch together]';
+綵>'[varicolored silk]';
+綸>'[green silk thread or tassel]';
+綺>'[fine thin silk]';
+綻>'[ripped seam]';
+綽>'[graceful]';
+綾>'[thin silk]';
+綿>'[cotton wad]';
+緇>'[black silk]';
+緊>'[tense]';
+緋>'[scarlet]';
+総>'[collect]';
+緑>'[green]';
+緒>'[end of thread]';
+#"緕>'[................................]'",
+緘>'[seal]';
+線>'[thread]';
+緜>'[cotton wad]';
+緝>'[to sew in close stitches]';
+緞>'[satin]';
+締>'[tie]';
+緡>'[fishing-line]';
+緤>'[cord]';
+編>'[knit]';
+緩>'[slow]';
+緬>'[distant]';
+緯>'[woof]';
+緲>'[indistinct]';
+練>'[practice]';
+緻>'[delicate]';
+縁>'[hem]';
+縄>'[rope]';
+#"縄>'[rope]'",
+縉>'[red silk]';
+縊>'[hang]';
+縋>'[climd down rope]';
+#"縑>'[fine silk]'",
+縛>'[to tie]';
+縞>'[white raw silk]';
+縟>'[decorative]';
+縡>'[matter]';
+縢>'[bind]';
+縣>'[county]';
+縦>'[indulge in]';
+縫>'[sew]';
+縮>'[contract]';
+縱>'[indulge in]';
+縲>'[chain or rope used bind criminal]';
+縵>'[plain silk]';
+縷>'[thread]';
+縹>'[light blue silk]';
+#"縺>'[................................]'",
+縻>'[halter for ox]';
+總>'[collect]';
+績>'[spin]';
+繁>'[complicated]';
+繃>'[bind]';
+繆>'[wind around]';
+繊>'[fine]';
+繋>'[attach]';
+繍>'[embroider]';
+織>'[weave]';
+繕>'[repair]';
+繖>'[umbrella]';
+繙>'[interpret]';
+繚>'[wind round]';
+#"繝>'[................................]'",
+繞>'[entwine]';
+繦>'[string of copper coins]';
+#"繧>'[................................]'",
+繩>'[rope]';
+繪>'[draw]';
+繭>'[cocoon]';
+繰>'[to reel silk from cocoons]';
+繹>'[unravel or unreel silk]';
+繻>'[fine silk guaze]';
+繼>'[continue]';
+繽>'[flourishing]';
+#"繿>'[................................]'",
+纂>'[edit]';
+#"纃>'[................................]'",
+纈>'[patterned silk]';
+#"纉>'[................................]'",
+續>'[continue]';
+纎>'[fine]';
+纏>'[wrap]';
+#"纐>'[................................]'",
+纒>'[wrap]';
+纓>'[chin strap]';
+纔>'[talent]';
+纖>'[fine]';
+纛>'[a banner]';
+纜>'[hawser]';
+缶>'[earthen crock or jar]';
+缸>'[earthen jug]';
+缺>'[be short of]';
+罅>'[crack]';
+罌>'[long necked jar or bottle]';
+罍>'[large earthenware wine jar]';
+罎>'[an earthenware jar]';
+罐>'[jar]';
+网>'[net]';
+罔>'[net]';
+罕>'[rare]';
+罘>'[screen used in ancient times]';
+罟>'[net]';
+罠>'[animal trap]';
+#"罧>'[................................]'",
+罨>'[medical compress]';
+罩>'[basket for catching fish]';
+罪>'[crime]';
+罫>'[hinder]';
+置>'[place]';
+罰>'[penalty]';
+署>'[public office]';
+罵>'[accuse]';
+罷>'[cease]';
+罸>'[penalty]';
+罹>'[sorrow]';
+#"羂>'[................................]'",
+羃>'[cover-cloth]';
+羅>'[net for catching birds]';
+羆>'[brown bear]';
+羇>'[inn]';
+羈>'[halter]';
+羊>'[sheep]';
+羌>'[qiang nationality]';
+美>'[beautiful]';
+羔>'[lamb]';
+羚>'[species of antelope]';
+羝>'[ram]';
+羞>'[disgrace]';
+羣>'[group]';
+群>'[group]';
+羨>'[envy]';
+義>'[right conduct]';
+羮>'[soup]';
+羯>'[wether]';
+羲>'[ancient emperor]';
+羶>'[rank odor]';
+羸>'[weak]';
+羹>'[soup]';
+羽>'[feather]';
+翁>'[old man]';
+翅>'[wings]';
+翆>'[color green]';
+翊>'[flying]';
+翌>'[bright]';
+習>'[practice]';
+翔>'[soar]';
+翕>'[agree]';
+翠>'[color green]';
+翡>'[kingfisher]';
+翦>'[scissors]';
+翩>'[fly]';
+翫>'[careless]';
+翰>'[writing brush]';
+翳>'[shade]';
+翹>'[turn up]';
+翻>'[flip over]';
+翼>'[wings]';
+耀>'[shine]';
+老>'[old]';
+考>'[examine]';
+耄>'[elderly person]';
+者>'[that which]';
+耆>'[man of sixty]';
+耋>'[aged]';
+而>'[and]';
+耐>'[endure]';
+耒>'[handle of plow]';
+耕>'[plow]';
+耗>'[consume]';
+耘>'[weed]';
+耙>'[rake]';
+耜>'[spade-shaped tool]';
+耡>'[hoe]';
+耨>'[hoe]';
+耳>'[ear]';
+耶>'[used in transliteration]';
+耻>'[shame]';
+耽>'[indulge in]';
+耿>'[bright]';
+聆>'[listen]';
+聊>'[somewhat]';
+聒>'[clamor]';
+聖>'[holy]';
+聘>'[engage]';
+聚>'[assemble]';
+聞>'[hear]';
+聟>'[son-in-law]';
+聡>'[intelligent]';
+#"聢>'[................................]'",
+聨>'[connect]';
+聯>'[connect]';
+聰>'[intelligent]';
+聲>'[sound]';
+聳>'[urge on]';
+聴>'[hear]';
+聶>'[whisper]';
+職>'[duty]';
+聹>'[earwax]';
+聽>'[hear]';
+聾>'[deaf]';
+聿>'[writing brush]';
+肄>'[learn]';
+肅>'[pay respects]';
+肆>'[indulge]';
+肇>'[begin]';
+肉>'[flesh]';
+肋>'[ribs]';
+肌>'[muscle tissue]';
+肓>'[region between heart and diaphragm]';
+肖>'[look like]';
+肘>'[elbow]';
+肚>'[belly]';
+肛>'[anus]';
+肝>'[liver]';
+股>'[thighs]';
+肢>'[human limbs]';
+肥>'[fat]';
+肩>'[shoulders]';
+肪>'[animal fat]';
+肬>'[wart]';
+肭>'[fat]';
+肯>'[willing]';
+肱>'[forearm]';
+育>'[produce]';
+肴>'[cooked or prepared meat]';
+肺>'[lungs]';
+胃>'[stomach]';
+胄>'[helmet]';
+胆>'[gall bladder]';
+背>'[back]';
+胎>'[unborn child]';
+胖>'[fat]';
+胙>'[food offered in sacrificial serv]';
+胚>'[embryo]';
+胛>'[the shoulder]';
+胝>'[callous]';
+胞>'[womb]';
+胡>'[recklessly]';
+胤>'[heir]';
+胥>'[all]';
+胯>'[pelvis]';
+胱>'[bladder]';
+胴>'[the large intestine]';
+胸>'[breast]';
+胼>'[callus]';
+能>'[be able]';
+脂>'[fat]';
+脅>'[ribs]';
+脆>'[crisp]';
+脇>'[ribs]';
+脈>'[blood vessels]';
+脉>'[blood vessels]';
+脊>'[spine]';
+脚>'[leg]';
+脛>'[shinbone]';
+脣>'[lips]';
+脩>'[dried meat (used as teachers payment in ancient times)]';
+脯>'[dried meat]';
+脱>'[take off]';
+脳>'[brain]';
+脹>'[swell]';
+脾>'[spleen]';
+腆>'[prosperous]';
+腋>'[armpit]';
+腎>'[kidneys]';
+腐>'[rot]';
+腑>'[bowels]';
+腓>'[calf]';
+腔>'[chest cavity]';
+腕>'[wrist]';
+腟>'[vagina]';
+腥>'[raw meat]';
+腦>'[brain]';
+腫>'[swell]';
+腮>'[lower part of face]';
+腰>'[waist]';
+腱>'[tendons]';
+腴>'[fat]';
+腸>'[intestines]';
+腹>'[stomach]';
+腺>'[gland]';
+腿>'[legs]';
+膀>'[upper arm]';
+膂>'[backbone]';
+膃>'[fat]';
+膈>'[diaphragm]';
+膊>'[shoulders]';
+膏>'[grease]';
+膓>'[intestines]';
+膕>'[hollow]';
+膚>'[skin]';
+膜>'[membrane]';
+膝>'[knee]';
+膠>'[glue]';
+膣>'[vagina]';
+#"膤>'[................................]'",
+膨>'[swell]';
+膩>'[greasy]';
+膰>'[cook meat for sacrifice or offer]';
+膳>'[meals]';
+膵>'[pancreas]';
+#"膸>'[................................]'",
+膺>'[breast]';
+膽>'[gall bladder]';
+膾>'[minced meat or fish]';
+膿>'[pus]';
+臀>'[buttocks]';
+臂>'[arm]';
+臆>'[chest]';
+臈>'[year end sacrifice]';
+臉>'[face]';
+臍>'[abdominal area of crab]';
+臑>'[soft]';
+臓>'[internal organs]';
+臘>'[year end sacrifice]';
+臙>'[rouge]';
+臚>'[arrange in order]';
+臟>'[internal organs]';
+臠>'[small lump of meat]';
+臣>'[minister]';
+臥>'[lie down]';
+臧>'[good]';
+臨>'[draw near]';
+自>'[self]';
+臭>'[smell]';
+至>'[reach]';
+致>'[send]';
+臺>'[tower]';
+臻>'[reach]';
+臼>'[mortar]';
+臾>'[moment]';
+舁>'[carry on one''s shoulder]';
+舂>'[grind in mortar]';
+舅>'[mother''s brother]';
+與>'[and]';
+興>'[thrive]';
+舉>'[raise]';
+舊>'[old]';
+舌>'[tongue]';
+舍>'[house]';
+舎>'[house]';
+舐>'[lick with tongue]';
+舒>'[open up]';
+舖>'[store]';
+舗>'[store]';
+舘>'[a mansion]';
+舛>'[oppose]';
+舜>'[legendary ruler]';
+舞>'[dance]';
+舟>'[boat]';
+舩>'[boat]';
+航>'[sail]';
+舫>'[fancy boat]';
+般>'[sort]';
+舮>'[bow or prow of boat]';
+舳>'[stern of ship]';
+舵>'[rudder]';
+舶>'[large]';
+舷>'[sides of boat]';
+舸>'[large boat]';
+船>'[ship]';
+艀>'[[not found in dictionary]]';
+艇>'[small boat]';
+艘>'[counter for ships]';
+艙>'[hold of ship]';
+艚>'[ship]';
+#"艝>'[................................]'",
+艟>'[ancient warship]';
+艢>'[a mast]';
+艤>'[to moor a boat to the bank]';
+艦>'[warship]';
+艨>'[long and narrow war-boat]';
+艪>'[oar]';
+艫>'[bow or prow of boat]';
+艮>'[seventh of eight diagrams]';
+良>'[good]';
+艱>'[difficult]';
+色>'[color]';
+艶>'[beautiful]';
+艷>'[beautiful]';
+艸>'[grass]';
+艾>'[artemisia]';
+芋>'[taro]';
+芍>'[peony]';
+芒>'[miscanthus sinensis]';
+芙>'[hibiscus]';
+芝>'[purplish mushroom thought promot]';
+芟>'[mow]';
+芥>'[mustard plant]';
+芦>'[rushes]';
+芫>'[daphne genkwa]';
+芬>'[fragrance]';
+芭>'[plantain or banana palm]';
+芯>'[pith from rush (juncus effusus)]';
+花>'[flower]';
+芳>'[fragrant]';
+芸>'[rue]';
+芹>'[celery]';
+芻>'[mow]';
+芽>'[bud]';
+苅>'[cut off]';
+苑>'[pasture]';
+苒>'[lush]';
+苓>'[fungus]';
+苔>'[moss]';
+苗>'[sprouts]';
+苙>'[pigsty]';
+苛>'[small]';
+苜>'[clover]';
+苞>'[variety of rush]';
+苟>'[careless]';
+苡>'[barley]';
+苣>'[kind of lettuce]';
+若>'[if]';
+苦>'[bitter]';
+苧>'[china grass]';
+苫>'[rush or straw matting]';
+英>'[petal]';
+#"苳>'[................................]'",
+苴>'[sackcloth]';
+苹>'[artemisia]';
+苺>'[berries]';
+苻>'[kind of herb]';
+茂>'[thick]';
+范>'[surname]';
+茄>'[eggplant]';
+茅>'[reeds]';
+茆>'[species of grass]';
+茉>'[white jasmine]';
+茎>'[stem]';
+茖>'[allium victorialis]';
+茗>'[tea]';
+#"茗>'[tea]'",
+茜>'[madder]';
+#"茣>'[................................]'",
+茨>'[caltrop]';
+茫>'[vast]';
+茯>'[china root]';
+茱>'[dogwood]';
+茲>'[now]';
+茴>'[fennel]';
+茵>'[cushion]';
+茶>'[tea]';
+茸>'[soft]';
+茹>'[roots]';
+荀>'[surname]';
+荅>'[answer: small bean]';
+草>'[grass]';
+荊>'[thorns]';
+荏>'[beans]';
+荐>'[repeat]';
+荒>'[wasteland]';
+荘>'[village]';
+荳>'[beans]';
+#"荵>'[................................]'",
+荷>'[lotus]';
+荻>'[reed]';
+荼>'[bitter vegetable]';
+莅>'[attend]';
+#"莇>'[................................]'",
+莉>'[white jasmine]';
+莊>'[village]';
+莎>'[kind of sedge grass]';
+莓>'[moss]';
+莖>'[stem]';
+莚>'[bamboo mat]';
+莞>'[smiling]';
+#"莟>'[................................]'",
+莠>'[weeds]';
+莢>'[pods of leguminous plants]';
+莨>'[herb]';
+莪>'[artemisia]';
+莫>'[do not]';
+莱>'[goosefoot]';
+莵>'[dodder]';
+莽>'[thicket]';
+菁>'[flower of leek family]';
+菅>'[coarse grass]';
+菊>'[chrysanthemum]';
+菌>'[mushroom]';
+菎>'[beautiful jade]';
+菓>'[fruits]';
+菖>'[iris]';
+菘>'[celery]';
+菜>'[vegetables]';
+菟>'[dodder]';
+菠>'[spinach and similar greens]';
+菩>'[herb]';
+菫>'[celery]';
+華>'[flowery]';
+菰>'[wild rice]';
+菱>'[water-chestnut]';
+菲>'[fragrant]';
+菴>'[small buddhist monastery]';
+#"菷>'[................................]'",
+菻>'[artemisia]';
+菽>'[beans and peas]';
+萃>'[dense]';
+萄>'[grapes]';
+萇>'[averrhora carambola]';
+萋>'[luxuriant foliage]';
+萌>'[bud]';
+萍>'[duckweed]';
+萎>'[wither]';
+#"萓>'[................................]'",
+萠>'[bud]';
+#"萢>'[................................]'",
+萩>'[scandent hop]';
+#"萪>'[................................]'",
+萬>'[ten thousand]';
+萱>'[day-lily]';
+萵>'[lettuce]';
+萸>'[dogwood]';
+萼>'[calyx of flower]';
+落>'[fall]';
+葆>'[reserve]';
+葉>'[leaf]';
+#"葎>'[................................]'",
+著>'[manifest]';
+葛>'[edible bean]';
+葡>'[grapes]';
+葢>'[cover]';
+董>'[direct]';
+葦>'[reed]';
+葩>'[flowers]';
+葫>'[bottle-gourd]';
+葬>'[bury]';
+葭>'[bulrush]';
+#"葭>'[bulrush]'",
+葯>'[leaf of angelica plant]';
+葱>'[scallions]';
+葵>'[sunflower]';
+葷>'[meat diet]';
+葹>'[kind of chrysanthemum]';
+葺>'[thatch]';
+蒂>'[peduncle or stem of plants]';
+#"蒄>'[................................]'",
+蒋>'[surname]';
+蒐>'[collect]';
+蒔>'[transplant]';
+蒙>'[cover]';
+蒜>'[garlic]';
+蒟>'[betel pepper]';
+蒡>'[burdock]';
+蒭>'[to cutgrass]';
+蒲>'[type of rush]';
+蒸>'[steam]';
+蒹>'[reed]';
+蒻>'[rushes]';
+蒼>'[blue]';
+蒿>'[mugwort]';
+蓁>'[abundant]';
+蓄>'[store]';
+蓆>'[straw mat]';
+蓉>'[hibiscus]';
+蓊>'[luxuriant vegetation]';
+蓋>'[cover]';
+蓍>'[milfoil]';
+蓐>'[straw bed mat]';
+蓑>'[rain coat made of straw]';
+蓖>'[castor-oil plant]';
+#"蓙>'[................................]'",
+蓚>'[oxalic (used in compounds)]';
+蓬>'[type of raspberry]';
+蓮>'[lotus]';
+蓴>'[edible water plant]';
+蓼>'[smartweed]';
+蓿>'[clover]';
+蔀>'[screen]';
+蔆>'[water-chestnut]';
+蔑>'[disdain]';
+蔓>'[creeping plants]';
+蔔>'[radish]';
+蔕>'[peduncle or stem of plants]';
+蔗>'[sugar cane]';
+蔘>'[ginsen]';
+蔚>'[luxuriant]';
+蔟>'[frame on which silkworms spin]';
+蔡>'[surname]';
+蔦>'[parasitic plants]';
+蔬>'[vegetables]';
+蔭>'[shade]';
+蔵>'[hide]';
+蔽>'[cover]';
+#"蕀>'[................................]'",
+蕁>'[nettle]';
+蕃>'[foreign things]';
+蕈>'[mushrooms]';
+蕉>'[banana]';
+蕊>'[unopened flowers]';
+蕋>'[unopened flowers]';
+蕎>'[buckwheat]';
+蕕>'[caryopteris divaricata]';
+#"蕗>'[................................]'",
+蕘>'[fuel]';
+蕚>'[calyx of flower]';
+蕣>'[hibiscus]';
+蕨>'[pteris aquilina]';
+蕩>'[pond]';
+蕪>'[luxurious growth of weeds]';
+蕭>'[common artemisia]';
+蕷>'[yam]';
+蕾>'[buds]';
+薀>'[the hippuris or mare''s tail plant]';
+薄>'[thin]';
+薇>'[osmunda regalis]';
+薈>'[luxuriant]';
+薊>'[circium]';
+薐>'[spinach]';
+薑>'[ginger]';
+薔>'[rose]';
+薗>'[garden]';
+薙>'[weed]';
+薛>'[kind of marsh grass]';
+薜>'[evergreen shrubs]';
+薤>'[allium bakeri]';
+薦>'[offer]';
+薨>'[death of prince]';
+薩>'[transliteration of \"sat\" of boddhisattva etc.]';
+薪>'[fuel]';
+薫>'[a medicinal herb]';
+薬>'[drugs]';
+薮>'[marsh]';
+薯>'[yam]';
+薹>'[cyperus rotundus]';
+薺>'[water-chestnuts]';
+藁>'[straw]';
+藉>'[mat]';
+藍>'[blue]';
+藏>'[hide]';
+藐>'[disregard]';
+藕>'[lotus root]';
+藜>'[chenopodium album]';
+藝>'[art]';
+藤>'[rattan]';
+藥>'[drugs]';
+藩>'[fence]';
+藪>'[marsh]';
+藷>'[yam]';
+藹>'[lush]';
+藺>'[rush used in making mats]';
+藻>'[splendid]';
+藾>'[shade]';
+蘂>'[stamen or pistil]';
+蘆>'[rushes]';
+蘇>'[thyme]';
+蘊>'[collect]';
+蘋>'[apple]';
+蘓>'[thyme]';
+蘖>'[stump]';
+蘗>'[stump]';
+蘚>'[moss]';
+蘢>'[tall grass]';
+蘭>'[orchid]';
+蘯>'[to toss about]';
+#"蘯>'[to toss about]'",
+蘿>'[type of creeping plant]';
+虍>'[tiger]';
+虎>'[tiger]';
+虐>'[cruel]';
+虔>'[act with reverence]';
+處>'[place]';
+虚>'[false]';
+虜>'[capture]';
+虞>'[concerned about]';
+號>'[mark]';
+虧>'[lose]';
+虫>'[insects]';
+虱>'[louse]';
+虹>'[rainbow]';
+虻>'[horsefly]';
+蚊>'[mosquito]';
+蚋>'[gnat]';
+蚌>'[oysters]';
+蚓>'[earthworm]';
+蚕>'[silkworms]';
+蚣>'[centipede]';
+蚤>'[flea]';
+蚩>'[worm]';
+蚪>'[tadpole]';
+蚫>'[abalone]';
+蚯>'[earthworm]';
+蚰>'[millipede]';
+蚶>'[kind of clam]';
+蛄>'[mole cricket]';
+蛆>'[maggots]';
+蛇>'[snake]';
+蛉>'[dragonfly]';
+蛋>'[eggs]';
+蛍>'[glow-worm]';
+蛎>'[oyster]';
+蛔>'[tapeworm]';
+蛙>'[frog]';
+蛛>'[spider]';
+蛞>'[snail]';
+蛟>'[scaly dragon with four legs]';
+蛤>'[clam]';
+蛩>'[cricket]';
+#"蛩>'[cricket]'",
+蛭>'[leech]';
+蛮>'[barbarians]';
+蛯>'[shrimp]';
+蛸>'[long legged spider]';
+蛹>'[chrysalis]';
+蛻>'[molt]';
+蛾>'[moth]';
+蜀>'[name of an ancient state]';
+蜂>'[bee]';
+蜃>'[marine monster which can change its shape]';
+蜆>'[a variety of bivalves]';
+蜈>'[centipede]';
+蜉>'[mayfly]';
+蜊>'[clam]';
+蜍>'[toad]';
+蜑>'[egg]';
+蜒>'[millipede]';
+蜘>'[spider]';
+蜚>'[cockroach]';
+蜜>'[honey]';
+蜥>'[lizard]';
+蜩>'[cicada]';
+蜴>'[lizard]';
+蜷>'[creep like worm]';
+蜻>'[dragonfly]';
+蜿>'[creep]';
+蝉>'[cicada]';
+蝋>'[wax]';
+蝌>'[tadpole]';
+蝎>'[scorpion]';
+蝓>'[snail]';
+蝕>'[nibble away]';
+蝗>'[kind of locust]';
+蝙>'[bat]';
+蝟>'[hedgehog]';
+蝠>'[kind of bat]';
+蝣>'[mayfly]';
+蝦>'[shrimp]';
+蝨>'[louse]';
+#"蝨>'[louse]'",
+蝮>'[venomous snake]';
+蝴>'[butterfly]';
+蝶>'[butterfly]';
+蝸>'[snail]';
+蝿>'[flies]';
+螂>'[mantis]';
+融>'[melt]';
+螟>'[kind of caterpillar]';
+螢>'[glow-worm]';
+螫>'[poison]';
+螯>'[nippers]';
+螳>'[mantis]';
+螺>'[spiral shell]';
+螻>'[gryllotalpa africana]';
+螽>'[katydid]';
+蟀>'[cricket]';
+蟄>'[to hibernate]';
+蟆>'[frog]';
+蟇>'[frog]';
+蟋>'[cricket]';
+#"蟋>'[cricket]'",
+蟒>'[python]';
+蟠>'[coil]';
+蟯>'[worms]';
+蟲>'[worms]';
+蟶>'[razor clam]';
+蟷>'[mantis]';
+蟹>'[crab]';
+蟻>'[ants]';
+蟾>'[toad]';
+蠅>'[flies]';
+蠍>'[scorpion]';
+蠎>'[python]';
+蠏>'[crab]';
+蠑>'[lizard]';
+蠕>'[eumenes polifomis]';
+蠖>'[measuring worm]';
+蠡>'[wood-boring insect]';
+蠢>'[wriggle]';
+蠣>'[oyster]';
+蠧>'[moth]';
+蠱>'[posion]';
+蠶>'[silkworms]';
+蠹>'[moth]';
+蠻>'[barbarians]';
+血>'[blood]';
+衂>'[to be defeated]';
+衄>'[epistaxis]';
+衆>'[multitude]';
+行>'[go]';
+衍>'[overflow]';
+衒>'[brag]';
+術>'[art]';
+街>'[street]';
+衙>'[public office]';
+衛>'[guard]';
+衝>'[rush against]';
+衞>'[guard]';
+衡>'[measure]';
+衢>'[highway]';
+衣>'[clothes]';
+表>'[show]';
+衫>'[shirt]';
+衰>'[decline]';
+衲>'[mend]';
+衵>'[chemise]';
+衷>'[heart]';
+衽>'[lapel]';
+衾>'[coverlet]';
+衿>'[collar or lapel of garment]';
+袁>'[robe]';
+袂>'[sleeves]';
+袈>'[buddhist cassock]';
+袋>'[pocket]';
+袍>'[long gown]';
+袒>'[strip]';
+袖>'[sleeve]';
+袗>'[unlined garments]';
+#"袙>'[................................]'",
+袞>'[ceremonial dress worn by emperor]';
+袢>'[robe]';
+袤>'[longitude]';
+被>'[passive indicator \"by\"]';
+#"袮>'[................................]'",
+#"袰>'[................................]'",
+袱>'[piece of cloth used wrap bundles]';
+袴>'[pants]';
+袵>'[lapel]';
+袷>'[lined garment]';
+袿>'[gown]';
+裁>'[cut out]';
+裂>'[split]';
+#"裂>'[split]'",
+#"裂>'[split]'",
+装>'[dress]';
+裏>'[inside]';
+裔>'[progeny]';
+裕>'[abundant]';
+裘>'[fur garments]';
+裙>'[skirt]';
+補>'[mend]';
+裝>'[dress]';
+裟>'[a cassock or robe of a monk]';
+裡>'[inside]';
+裨>'[aid]';
+裲>'[waistcoat]';
+裳>'[clothes]';
+裴>'[surname]';
+裸>'[bare]';
+裹>'[wrap]';
+裼>'[to take off one''s top]';
+製>'[make]';
+裾>'[lapel]';
+褂>'[jacket]';
+#"褃>'[a seam in a garment]'",
+複>'[repeat]';
+褊>'[cramped]';
+褌>'[trousers]';
+褐>'[coarse woolen cloth]';
+褒>'[praise]';
+褓>'[swaddling cloth]';
+褝>'[unlined garment]';
+#"褞>'[................................]'",
+褥>'[mattress]';
+褪>'[strip]';
+褫>'[strip]';
+褶>'[pleat]';
+褸>'[lapel]';
+褻>'[dirty]';
+襁>'[swaddling clothes]';
+襃>'[commend]';
+襄>'[aid]';
+襌>'[unlined garment]';
+襍>'[mixed]';
+襖>'[outer garments]';
+襞>'[fold]';
+襟>'[lapel]';
+襠>'[crotch or seat of pants]';
+襤>'[ragged]';
+襦>'[short coat]';
+襪>'[socks]';
+襭>'[tuck up hem of garment and wrap]';
+襯>'[underwear]';
+襲>'[raid]';
+襴>'[a one piece garment]';
+#"襶>'[ignorant]'",
+襾>'[cover]';
+西>'[west(ern)]';
+要>'[necessary]';
+覃>'[reach to]';
+覆>'[cover]';
+覇>'[rule by might rather than right]';
+覈>'[investigate]';
+覊>'[halter]';
+見>'[see]';
+規>'[rules]';
+覓>'[seek]';
+視>'[look at]';
+覗>'[peek]';
+覘>'[peek]';
+覚>'[wake up from sleep]';
+覡>'[wizard]';
+覦>'[desire strongly]';
+覧>'[look at]';
+覩>'[see]';
+親>'[relatives]';
+覬>'[covet]';
+覯>'[meet or see unexpectedly]';
+覲>'[have imperial audience]';
+観>'[see]';
+覺>'[wake up from sleep]';
+覽>'[look at]';
+覿>'[see]';
+觀>'[see]';
+角>'[horn]';
+觚>'[jug]';
+觜>'[beak]';
+觝>'[gore]';
+解>'[loosen]';
+触>'[butt]';
+觧>'[loosen]';
+觴>'[wine vessel]';
+觸>'[touch]';
+言>'[words]';
+訂>'[draw up agreement]';
+訃>'[obituary]';
+計>'[plan]';
+訊>'[inquire]';
+訌>'[confusion]';
+討>'[ask for]';
+訐>'[expose other''s secrets]';
+訓>'[teach]';
+訖>'[finish]';
+託>'[entrust]';
+記>'[record]';
+訛>'[swindle]';
+訝>'[express surprise]';
+訟>'[accuse]';
+訣>'[take leave of]';
+訥>'[slow of speech]';
+訪>'[visit]';
+設>'[build]';
+許>'[allow]';
+訳>'[translate]';
+訴>'[accuse]';
+訶>'[scold loudly]';
+診>'[examine patient]';
+註>'[explain]';
+証>'[prove]';
+詁>'[exegesis]';
+詆>'[slander]';
+詈>'[scold]';
+詐>'[cheat]';
+詑>'[cheat]';
+詒>'[bequeath]';
+詔>'[decree]';
+評>'[appraise]';
+詛>'[curse]';
+詞>'[words]';
+詠>'[sing]';
+詢>'[inquire into]';
+詣>'[reach]';
+試>'[test]';
+詩>'[poetry]';
+詫>'[be surprised]';
+詬>'[abuse]';
+詭>'[deceive]';
+詮>'[explain]';
+詰>'[question]';
+話>'[speech]';
+該>'[should]';
+詳>'[detailed]';
+詼>'[tease]';
+誂>'[tempt]';
+誄>'[eulogize]';
+誅>'[execute]';
+誇>'[exaggerate]';
+誉>'[fame]';
+誌>'[write down]';
+認>'[recognize]';
+誑>'[deceive]';
+誓>'[swear]';
+誕>'[bear children]';
+誘>'[persuade]';
+誚>'[criticize]';
+語>'[language]';
+誠>'[sincere]';
+誡>'[warn]';
+誣>'[make false accusation]';
+誤>'[err]';
+誥>'[inform]';
+誦>'[recite]';
+誨>'[teach]';
+説>'[speak]';
+読>'[read]';
+誰>'[who? whom? whose? anyone?]';
+課>'[lesson]';
+誹>'[slander]';
+誼>'[friendship]';
+調>'[transfer]';
+諂>'[flatter]';
+諄>'[patient]';
+談>'[talk]';
+請>'[ask]';
+諌>'[remonstrate]';
+諍>'[to expostulate]';
+諏>'[consult]';
+諒>'[excuse]';
+論>'[debate]';
+諚>'[(kokuji) command]';
+諛>'[flatter]';
+諜>'[intelligence report]';
+諞>'[brag]';
+諠>'[noisy]';
+諡>'[posthumous name]';
+諢>'[jokes]';
+諤>'[honest speech]';
+諦>'[careful]';
+諧>'[harmonize]';
+諫>'[remonstrate]';
+諭>'[proclaim]';
+諮>'[consult]';
+諱>'[conceal]';
+諳>'[versed in]';
+諷>'[recite]';
+諸>'[several]';
+諺>'[proverb]';
+諾>'[promise]';
+謀>'[plan]';
+謁>'[visit]';
+謂>'[say]';
+謄>'[copy]';
+謇>'[stutter]';
+謌>'[slander]';
+謎>'[riddle]';
+謐>'[calm]';
+謔>'[jeer]';
+謖>'[rise up]';
+謗>'[slander]';
+謙>'[humble]';
+謚>'[to confer posthumous titles]';
+講>'[explain]';
+謝>'[thank]';
+謠>'[sing]';
+謡>'[sing]';
+謦>'[t speak softly]';
+謨>'[scheme]';
+謫>'[charge]';
+謬>'[error]';
+謳>'[sing]';
+謹>'[prudent]';
+謾>'[deceive]';
+譁>'[noise]';
+證>'[proof]';
+譌>'[false]';
+譎>'[cunning]';
+譏>'[ridicule]';
+譖>'[to slander]';
+識>'[recognize]';
+譚>'[surname]';
+譛>'[to slander]';
+譜>'[register]';
+譟>'[clamor]';
+警>'[guard]';
+譫>'[talkative]';
+譬>'[metaphor]';
+譯>'[translate]';
+議>'[consult]';
+#"譱>'[................................]'",
+譲>'[allow]';
+譴>'[reprimand]';
+護>'[protect]';
+譽>'[fame]';
+讀>'[read]';
+讃>'[praise]';
+變>'[change]';
+讌>'[feast]';
+讎>'[enemy]';
+讐>'[enemy]';
+讒>'[slander]';
+讓>'[allow]';
+讖>'[prophecy]';
+讙>'[cheer]';
+讚>'[praise]';
+谷>'[valley]';
+谺>'[the mouth of a valley]';
+谿>'[valley]';
+豁>'[open up]';
+豆>'[beans]';
+豈>'[how? what?]';
+豊>'[abundant]';
+豌>'[peas]';
+豎>'[vertical]';
+豐>'[abundant]';
+豕>'[pigs]';
+豚>'[small pig]';
+象>'[elephant]';
+豢>'[domestic animals]';
+豪>'[brave]';
+豫>'[relaxed]';
+豬>'[pig]';
+豸>'[radical 153]';
+豹>'[leopard]';
+豺>'[wolf]';
+豼>'[fox]';
+貂>'[marten]';
+貅>'[brave]';
+貉>'[badger]';
+貊>'[leopard]';
+貌>'[countenance]';
+貍>'[a fox-like animal]';
+貎>'[lion]';
+貔>'[fox]';
+貘>'[the panther]';
+貝>'[sea shell]';
+貞>'[virtuous]';
+負>'[load]';
+財>'[wealth]';
+貢>'[offer tribute]';
+貧>'[poor]';
+貨>'[goods]';
+販>'[peddler]';
+貪>'[greedy]';
+貫>'[string of 1000 coins]';
+責>'[one''s responsibility]';
+貭>'[matter]';
+貮>'[number two]';
+貯>'[store]';
+貰>'[borrow]';
+貲>'[property]';
+貳>'[number two]';
+貴>'[expensive]';
+貶>'[decrease]';
+買>'[buy]';
+貸>'[lend]';
+費>'[expenses]';
+貼>'[paste to]';
+貽>'[give to]';
+貿>'[trade]';
+賀>'[congratulate]';
+賁>'[forge ahead]';
+賂>'[bribe]';
+賃>'[rent]';
+賄>'[bribe]';
+資>'[property]';
+賈>'[surname]';
+賊>'[thief]';
+賍>'[booty]';
+賎>'[mean]';
+賑>'[relieve]';
+賓>'[guest]';
+賚>'[give]';
+賛>'[help]';
+賜>'[give]';
+賞>'[reward]';
+賠>'[indemnify]';
+賢>'[virtuous]';
+賣>'[sell]';
+賤>'[mean]';
+賦>'[tax]';
+質>'[matter]';
+賭>'[bet]';
+賺>'[make money]';
+賻>'[gift of money help pay funeral]';
+購>'[buy]';
+賽>'[compete]';
+贄>'[gift superior]';
+贅>'[unnecessary]';
+贇>'[affable]';
+贈>'[give present]';
+贊>'[help]';
+贋>'[false]';
+贍>'[support]';
+贏>'[win]';
+贐>'[farewell present]';
+贓>'[booty]';
+贔>'[strong]';
+贖>'[buy]';
+赤>'[red]';
+赦>'[forgive]';
+赧>'[blush]';
+赫>'[bright]';
+赭>'[reddish brown]';
+走>'[walk]';
+赱>'[walk]';
+赳>'[grand]';
+赴>'[go to]';
+起>'[rise]';
+趁>'[take advantage of]';
+超>'[jump over]';
+越>'[exceed]';
+趙>'[surname]';
+趣>'[what attracts one''s attention]';
+趨>'[hasten]';
+足>'[foot]';
+趺>'[sit cross-legged]';
+趾>'[toe]';
+跂>'[creeping]';
+跋>'[go by foot]';
+跌>'[stumble]';
+跏>'[sit cross-legged]';
+跖>'[sole (of the foot)]';
+跚>'[stagger]';
+跛>'[lame]';
+距>'[distance]';
+跟>'[heel]';
+跡>'[search]';
+跣>'[bare footed]';
+跨>'[straddle]';
+跪>'[kneel]';
+跫>'[sound of footsteps]';
+路>'[road]';
+跳>'[jump]';
+践>'[trample]';
+跼>'[bent]';
+#"跿>'[................................]'",
+踈>'[neglect]';
+踉>'[hop]';
+踊>'[leap]';
+踏>'[step on]';
+踐>'[trample]';
+踝>'[ankle]';
+踞>'[crouch]';
+踟>'[hesitate]';
+踪>'[footprints]';
+踰>'[exceed]';
+踴>'[leap]';
+踵>'[heel]';
+蹂>'[trample under foot]';
+蹄>'[hoof]';
+蹇>'[lame]';
+蹈>'[stamp feet]';
+蹉>'[error]';
+蹊>'[footpath]';
+蹌>'[walk rapidly]';
+蹐>'[take short steps]';
+蹕>'[clear way]';
+蹙>'[urgent]';
+蹟>'[trace]';
+蹠>'[step on]';
+蹣>'[to jump over]';
+蹤>'[footprints]';
+蹲>'[squat]';
+蹴>'[kick]';
+蹶>'[stumble]';
+蹼>'[webbed feet of waterfowl]';
+躁>'[tense]';
+躄>'[cripple]';
+躅>'[walk carefully]';
+躇>'[hesitate]';
+躊>'[hesitate]';
+躋>'[ascend]';
+躍>'[skip]';
+躑>'[waver]';
+躓>'[stumble]';
+躔>'[follow in]';
+躙>'[trample down]';
+躡>'[tread]';
+躪>'[trample down]';
+身>'[body]';
+躬>'[body]';
+躯>'[body]';
+躰>'[body]';
+躱>'[hide]';
+#"躺>'[lie down]'",
+#"軄>'[to govern]'",
+軆>'[body]';
+#"軆>'[body]'",
+車>'[cart]';
+軋>'[crush by weight]';
+軌>'[track]';
+軍>'[army]';
+軒>'[carriage]';
+軛>'[yoke]';
+軟>'[soft]';
+転>'[shift]';
+軣>'[rumble]';
+軫>'[cross board at rear of carriage]';
+軸>'[axle]';
+軻>'[axle]';
+軼>'[rush forth]';
+軽>'[light]';
+軾>'[horizontal wooden bar in front of a sedan chair]';
+較>'[compare]';
+輅>'[chariot]';
+載>'[load]';
+輊>'[low rear portion of cart]';
+輌>'[numerary adjunct for vehicles]';
+輒>'[sides of chariot where weapons]';
+輓>'[mourn]';
+輔>'[cheek bone]';
+輕>'[light]';
+輙>'[sides of chariot were weapons]';
+輛>'[numerary adjunct for vehicles]';
+輜>'[supply cart]';
+輝>'[brightness]';
+輟>'[stop]';
+輦>'[hand-cart]';
+輩>'[generation]';
+輪>'[wheel]';
+輯>'[gather up]';
+輳>'[hubs of wheel]';
+輸>'[transport]';
+輹>'[two pieces of wood underneath ca]';
+輻>'[spokes of wheel]';
+輾>'[turn over]';
+輿>'[cart]';
+轂>'[hub of wheel]';
+轄>'[linchpin of wheel]';
+轅>'[axle]';
+轆>'[windlass]';
+轉>'[shift]';
+轌>'[sled]';
+轍>'[wagon ruts]';
+轎>'[sedan-chair]';
+轗>'[fail]';
+轜>'[hearse]';
+轟>'[rumble]';
+轡>'[bridle of horse]';
+轢>'[run over something with vehicle]';
+#"轣>'[................................]'",
+轤>'[pulley]';
+辛>'[bitter]';
+辜>'[crime]';
+辞>'[words]';
+辟>'[law]';
+辣>'[peppery]';
+辧>'[manage]';
+辨>'[distinguish]';
+辭>'[words]';
+辮>'[braid]';
+辯>'[dispute]';
+辰>'[early morning]';
+辱>'[humiliate]';
+農>'[agriculture]';
+辷>'[smooth]';
+辺>'[edge]';
+辻>'[crossroads]';
+込>'[crowd into]';
+辿>'[follow]';
+迂>'[doctrinaire]';
+迄>'[extend]';
+迅>'[quick]';
+迎>'[receive]';
+近>'[near]';
+返>'[return]';
+迚>'[very]';
+迢>'[far]';
+迥>'[distant]';
+迦>'[character for transliteration]';
+迩>'[be near]';
+迪>'[enlighten]';
+迫>'[coerce]';
+迭>'[repeatedly]';
+迯>'[escape]';
+述>'[narrate]';
+迴>'[revolve]';
+迷>'[bewitch]';
+迸>'[gush out]';
+迹>'[traces]';
+迺>'[then]';
+追>'[pursue]';
+退>'[step back]';
+送>'[see off]';
+逃>'[escape]';
+逅>'[meet unexpectedly]';
+逆>'[disobey]';
+逋>'[flee]';
+逍>'[ramble]';
+逎>'[strong]';
+透>'[penetrate]';
+逐>'[chase]';
+逑>'[collect]';
+逓>'[hand over]';
+途>'[way]';
+逕>'[pass by]';
+逖>'[far]';
+逗>'[tempt]';
+這>'[this]';
+通>'[pass through]';
+逝>'[pass away]';
+逞>'[indulge oneself]';
+速>'[quick]';
+造>'[construct]';
+逡>'[retreat]';
+逢>'[come upon]';
+連>'[join]';
+#"逦>'[meandering]'",
+逮>'[seize]';
+週>'[week]';
+進>'[advance]';
+逵>'[thoroughfare]';
+逶>'[winding]';
+逸>'[flee]';
+逹>'[arrive at]';
+逼>'[compel]';
+逾>'[go over]';
+遁>'[hide]';
+遂>'[comply with]';
+遅>'[late]';
+遇>'[meet]';
+遉>'[spy]';
+遊>'[wander]';
+運>'[luck]';
+遍>'[everywhere]';
+過>'[pass]';
+遏>'[stop]';
+遐>'[afar]';
+遑>'[leisure]';
+遒>'[strong]';
+道>'[path]';
+達>'[arrive at]';
+違>'[disobey]';
+#"違>'[disobey]'",
+遘>'[to meet]';
+遙>'[far away]';
+遜>'[humble]';
+遞>'[hand over]';
+遠>'[distant]';
+遡>'[go upstream]';
+遣>'[send]';
+遥>'[far away]';
+遨>'[ramble]';
+適>'[match]';
+遭>'[come across]';
+遮>'[cover]';
+遯>'[deceive]';
+遲>'[late]';
+遵>'[obey]';
+遶>'[entwine]';
+遷>'[move]';
+選>'[choose]';
+遺>'[lose]';
+遼>'[distant]';
+遽>'[suddenly]';
+避>'[avoid]';
+邀>'[invite]';
+邁>'[take a big stride]';
+邂>'[unexpected meeting]';
+邃>'[profound]';
+還>'[still]';
+邇>'[be near]';
+邉>'[edge]';
+邊>'[edge]';
+邏>'[patrol]';
+邑>'[area]';
+那>'[that]';
+邦>'[nation]';
+邨>'[village]';
+邪>'[wrong]';
+邯>'[city in hebei province]';
+邱>'[surname]';
+邵>'[surname]';
+邸>'[official residence]';
+郁>'[sweet smelling]';
+郊>'[suburbs]';
+郎>'[gentleman]';
+郛>'[outer walls of city]';
+郡>'[administrative division]';
+郢>'[state in today''s hubei province]';
+郤>'[crack]';
+部>'[part]';
+郭>'[outer part (of a city)]';
+郵>'[postal]';
+郷>'[country]';
+都>'[metropolis]';
+鄂>'[hubei province]';
+鄒>'[name of an ancient state]';
+鄙>'[mean]';
+鄭>'[state in today''s henan]';
+鄰>'[neighbor]';
+鄲>'[county in hebei proincev]';
+酉>'[tenth in series of twelve cyclic]';
+酊>'[drunk]';
+酋>'[chief of tribe]';
+酌>'[serve wine]';
+配>'[match]';
+酎>'[double-fermented wine]';
+酒>'[wine]';
+酔>'[intoxicated]';
+酖>'[wine with bird poison added]';
+#"酘>'[................................]'",
+酢>'[toast one''s host with wine]';
+酣>'[enjoy intoxicants]';
+酥>'[butter]';
+酩>'[drunk]';
+酪>'[cream]';
+酬>'[toast]';
+酲>'[hangover]';
+#"酲>'[hangover]'",
+酵>'[yeast]';
+酷>'[strong]';
+酸>'[tart]';
+#"醁>'[a kind of green-colored wine]'",
+醇>'[rich]';
+醉>'[intoxicated]';
+醋>'[vinegar]';
+醍>'[essential oil of butter]';
+醐>'[purest cream]';
+醒>'[wake up]';
+醗>'[to brew for the second time]';
+醜>'[ugly looking]';
+醢>'[minced pickled meat]';
+醤>'[any jam-like or paste-like food]';
+醪>'[unclear wine]';
+醫>'[cure]';
+醯>'[vinegar]';
+醴>'[sweet wine]';
+醵>'[contribute for drinks]';
+醸>'[brew]';
+醺>'[get drunk]';
+釀>'[brew]';
+釁>'[smear with blood in sacrifice]';
+釆>'[distinguish]';
+采>'[collect]';
+釈>'[interprete]';
+釉>'[glaze]';
+釋>'[interprete]';
+里>'[unit of distance]';
+重>'[heavy]';
+野>'[open country]';
+量>'[measure]';
+釐>'[manage]';
+金>'[gold]';
+釖>'[knife]';
+釘>'[nail]';
+#"釛>'[................................]'",
+釜>'[cauldron]';
+針>'[needle]';
+#"釟>'[................................]'",
+釡>'[cauldron]';
+釣>'[fish]';
+釦>'[button]';
+釧>'[bracelet]';
+釵>'[ornamental hairpin]';
+#"釶>'[................................]'",
+釼>'[sword]';
+#"釿>'[................................]'",
+鈍>'[blunt]';
+鈎>'[hook]';
+鈑>'[plate]';
+鈔>'[paper money]';
+鈕>'[button]';
+鈞>'[unit of measure equivalent thirt]';
+鈩>'[fireplace]';
+鈬>'[bell]';
+鈴>'[bell]';
+鈷>'[cobalt]';
+鈿>'[hairpin]';
+鉄>'[iron]';
+鉅>'[steel]';
+鉈>'[thallium]';
+鉉>'[device for carrying a tripod]';
+鉋>'[carpenter''s plane]';
+#"鉐>'[................................]'",
+鉗>'[pincers]';
+鉚>'[rivet]';
+鉛>'[lead plumbum]';
+鉞>'[broad-axe]';
+鉢>'[earthenware basin]';
+鉤>'[hook]';
+鉦>'[kind of gong used in ancient tim]';
+鉱>'[mine]';
+鉾>'[spear]';
+銀>'[silver]';
+銃>'[ancient weapon]';
+銅>'[copper]';
+銑>'[mill]';
+銓>'[weigh]';
+銕>'[iron]';
+銖>'[unit of weight]';
+銘>'[inscribe]';
+銚>'[large hoe]';
+銛>'[sharp]';
+銜>'[bit]';
+銭>'[money]';
+銷>'[melt]';
+銹>'[rust]';
+鋏>'[tongs]';
+鋒>'[point of spear]';
+鋤>'[hoe]';
+鋩>'[point of sword]';
+鋪>'[spread out]';
+鋭>'[sharp]';
+鋲>'[rivet]';
+鋳>'[melt]';
+鋸>'[a saw]';
+#"鋺>'[................................]'",
+鋼>'[steel]';
+錆>'[the color of a mineral]';
+錏>'[soft steel]';
+錐>'[gimlet]';
+錘>'[balance weight on scale]';
+錙>'[8 oz]';
+錚>'[clanging sound]';
+錠>'[spindle]';
+錢>'[money]';
+#"錣>'[................................]'",
+錦>'[brocade]';
+錨>'[anchor]';
+錫>'[tin]';
+錬>'[smelt metals]';
+錮>'[run metal into cracks]';
+錯>'[error]';
+録>'[copy]';
+#"錵>'[................................]'",
+#"錺>'[................................]'",
+#"錻>'[................................]'",
+#"鍄>'[................................]'",
+鍋>'[cooking-pot]';
+鍍>'[plate]';
+鍔>'[high]';
+#"鍖>'[................................]'",
+鍛>'[forge metal]';
+#"鍜>'[................................]'",
+鍠>'[weapon]';
+鍬>'[shovel]';
+鍮>'[brass]';
+鍵>'[door bolt]';
+鍼>'[needle]';
+鍾>'[cup]';
+鎌>'[sickle]';
+鎔>'[fuse]';
+鎖>'[lock]';
+鎗>'[rifle]';
+鎚>'[hammer]';
+鎧>'[armor]';
+鎬>'[stove]';
+鎭>'[town]';
+鎮>'[town]';
+鎰>'[measure of weight for gold]';
+#"鎹>'[................................]'",
+鏃>'[arrowhead]';
+鏈>'[chain]';
+鏐>'[pure gold]';
+鏑>'[dysprosium the barb of an arrow]';
+鏖>'[fight end]';
+鏗>'[strike]';
+鏘>'[tinkle]';
+鏝>'[trowel]';
+鏡>'[mirror]';
+鏤>'[carve]';
+鏥>'[rust]';
+鏨>'[engraving tool]';
+鐃>'[cymbals]';
+鐇>'[vanadium]';
+鐐>'[fetters]';
+鐓>'[ferrule]';
+鐔>'[dagger]';
+鐘>'[clock]';
+鐙>'[lamp]';
+鐚>'[soft steel]';
+鐡>'[iron]';
+鐫>'[engraving tool]';
+鐵>'[iron]';
+鐶>'[metal ring]';
+鐸>'[bell]';
+鐺>'[frying pan]';
+#"鑁>'[................................]'",
+鑄>'[melt]';
+鑑>'[mirror]';
+鑒>'[mirror]';
+鑓>'[spear]';
+鑚>'[drill]';
+鑛>'[mine]';
+鑞>'[solder]';
+鑠>'[melt]';
+鑢>'[file]';
+鑪>'[fireplace]';
+鑰>'[key]';
+鑵>'[jar]';
+鑷>'[tweezers]';
+鑼>'[gong]';
+鑽>'[drill]';
+鑾>'[bells hung on horse]';
+鑿>'[chisel]';
+钁>'[a mattock]';
+長>'[long]';
+門>'[gate]';
+閂>'[bolt]';
+閃>'[flash]';
+閇>'[shut]';
+閉>'[shut]';
+#"閉>'[shut]'",
+開>'[open]';
+閏>'[intercalary]';
+閑>'[fence]';
+間>'[interval]';
+閔>'[mourn]';
+#"閔>'[mourn]'",
+閘>'[sluice]';
+閙>'[quarrel]';
+閠>'[intercalary]';
+関>'[frontier pass]';
+閣>'[chamber]';
+閤>'[small side door]';
+閥>'[powerful and influential group]';
+閧>'[boisterous]';
+閨>'[small entrance]';
+閭>'[village of twenty-five families]';
+閲>'[examine]';
+閹>'[castrate]';
+閻>'[village gate]';
+閼>'[block]';
+閾>'[threshold]';
+闃>'[alone]';
+闇>'[close]';
+闊>'[broad]';
+闌>'[door screen]';
+闍>'[tower over city gate]';
+闔>'[close]';
+闕>'[watch tower]';
+闖>'[rush in]';
+闘>'[struggle]';
+關>'[frontier pass]';
+闡>'[explain]';
+闢>'[open]';
+闥>'[door]';
+阜>'[mound]';
+阡>'[footpaths between fields]';
+阨>'[in distress]';
+阪>'[hillside farmland]';
+阮>'[ancient musical instrument: surname]';
+阯>'[foundation]';
+防>'[defend]';
+阻>'[impede]';
+阿>'[prefix to name]';
+陀>'[steep bank]';
+陂>'[dam]';
+附>'[adhere to]';
+陋>'[narrow]';
+陌>'[foot path between rice fields]';
+降>'[descend]';
+#"降>'[descend]'",
+限>'[boundary]';
+陛>'[steps leading throne]';
+陜>'[narrow]';
+陝>'[mountain pass]';
+陞>'[promote]';
+陟>'[climb]';
+院>'[courtyard]';
+陣>'[column]';
+除>'[eliminate]';
+陥>'[submerge]';
+#"陥>'[submerge]'",
+陪>'[accompany]';
+陬>'[corner]';
+陰>'[\"female\" principle]';
+陲>'[frontier]';
+陳>'[exhibit]';
+陵>'[hill]';
+陶>'[pottery]';
+陷>'[submerge]';
+陸>'[land]';
+険>'[narrow pass]';
+陽>'[\"male\" principle]';
+隅>'[corner]';
+隆>'[prosperous]';
+隈>'[cove]';
+隊>'[team]';
+隋>'[Sui dynasty]';
+隍>'[dry ditch]';
+階>'[stairs]';
+随>'[follow]';
+隔>'[separate]';
+隕>'[fall]';
+隗>'[high]';
+隘>'[narrow]';
+隙>'[crack]';
+際>'[border]';
+障>'[separate]';
+#"障>'[separate]'",
+隣>'[neighbor]';
+隧>'[tunnel]';
+隨>'[follow]';
+險>'[narrow pass]';
+隰>'[low]';
+隱>'[hide]';
+隲>'[stallion]';
+隴>'[mountain located between shaanxi]';
+隶>'[subservient]';
+隷>'[be subservient to]';
+隸>'[be subservient to]';
+隹>'[bird]';
+隻>'[single]';
+隼>'[aquiline (nose)]';
+雀>'[sparrow]';
+雁>'[wild goose]';
+雄>'[male of species]';
+雅>'[elegant]';
+集>'[assemble]';
+雇>'[employ]';
+雉>'[pheasant]';
+雋>'[superior]';
+雌>'[female]';
+雍>'[harmony]';
+雎>'[osprey]';
+雑>'[mixed]';
+雕>'[engrave]';
+雖>'[although]';
+雙>'[set of two]';
+雛>'[chick]';
+雜>'[mixed]';
+離>'[leave]';
+難>'[difficult]';
+雨>'[rain]';
+雪>'[snow]';
+#"雫>'[................................]'",
+雰>'[atmosphere]';
+雲>'[clouds]';
+零>'[zero]';
+雷>'[thunder]';
+雹>'[hail]';
+電>'[electricity]';
+需>'[need]';
+霄>'[sky]';
+霆>'[a sudden peal of thunder]';
+震>'[shake]';
+霈>'[torrential rains]';
+霊>'[spirit]';
+霍>'[quickly]';
+霎>'[light rain]';
+霏>'[falling of snow and rain]';
+霑>'[be moistened]';
+霓>'[rainbow]';
+霖>'[long spell of rain]';
+霙>'[sleet]';
+霜>'[frost]';
+霞>'[rosy clouds]';
+霤>'[drip]';
+霧>'[fog]';
+霪>'[long and heavy rain]';
+霰>'[hail]';
+露>'[dew]';
+霸>'[rule by might rather than right]';
+霹>'[thunder]';
+霽>'[clear up after rain cease be ang]';
+霾>'[misty]';
+靂>'[thunderclap]';
+靄>'[cloudy sky]';
+靆>'[cloudy sky]';
+靈>'[spirit]';
+靉>'[cloudy sky]';
+青>'[blue]';
+靖>'[pacify]';
+静>'[quiet]';
+靜>'[quiet]';
+非>'[not]';
+靠>'[lean on]';
+靡>'[divide]';
+面>'[face]';
+#"靤>'[................................]'",
+靦>'[timid]';
+靨>'[dimples]';
+革>'[leather]';
+靫>'[strong and pliable]';
+靭>'[strong and pliable]';
+靱>'[strong and pliable]';
+靴>'[boots]';
+#"靹>'[................................]'",
+靺>'[stocking]';
+靼>'[tartars]';
+#"鞁>'[................................]'",
+鞄>'[to work hides]';
+鞅>'[leather strap over horse''s neck]';
+#"鞅>'[leather strap over horse''s neck]'",
+鞋>'[shoes]';
+鞍>'[saddle]';
+鞏>'[bind]';
+#"鞏>'[bind]'",
+鞘>'[scabbard]';
+#"鞜>'[................................]'",
+鞠>'[bow]';
+鞣>'[tan]';
+鞦>'[leather stap]';
+鞨>'[tribe]';
+鞫>'[interrogate]';
+鞭>'[whip]';
+#"鞳>'[................................]'",
+鞴>'[saddle up horse]';
+韃>'[tatars]';
+韆>'[swing]';
+韈>'[socks]';
+韋>'[tanned leather]';
+韓>'[fence]';
+韜>'[sheath]';
+韭>'[scallion]';
+韮>'[scallion]';
+韲>'[break or smash into pieces]';
+音>'[sound]';
+韵>'[rhyme]';
+韶>'[music of emperor Shun]';
+韻>'[rhyme]';
+響>'[make sound]';
+頁>'[page]';
+頂>'[top]';
+頃>'[moment]';
+項>'[neck]';
+順>'[obey]';
+須>'[must]';
+頌>'[laud]';
+頏>'[fly down or downward]';
+預>'[prepare]';
+頑>'[obstinate]';
+頒>'[confer]';
+頓>'[pause]';
+頗>'[lean one side]';
+領>'[neck]';
+頚>'[neck]';
+頡>'[fly upward]';
+頤>'[cheeks]';
+頬>'[cheeks]';
+頭>'[head]';
+頴>'[rice tassel]';
+頷>'[chin]';
+頸>'[neck]';
+頻>'[frequently]';
+頼>'[rely]';
+頽>'[ruined]';
+顆>'[grain]';
+顋>'[lower part of face]';
+題>'[forehead]';
+額>'[forehead]';
+顎>'[jaw]';
+顏>'[face]';
+顔>'[face]';
+顕>'[manifest]';
+願>'[desire]';
+顛>'[top]';
+類>'[class]';
+顧>'[look back]';
+顫>'[shiver]';
+顯>'[manifest]';
+顰>'[frown]';
+顱>'[skull]';
+顳>'[the temporal bone]';
+顴>'[cheek bones]';
+風>'[wind]';
+#"風>'[wind]'",
+颯>'[sound of wind]';
+颱>'[taiphoon]';
+颶>'[cyclone]';
+飃>'[whirlwind]';
+飄>'[whirlwind]';
+飆>'[whirlwind]';
+飛>'[fly]';
+飜>'[flip over]';
+食>'[eat]';
+飢>'[hunger]';
+飩>'[stuffed dumplings]';
+飫>'[surfeited]';
+飭>'[order]';
+飮>'[drink]';
+飯>'[cooked rice]';
+飲>'[drink]';
+飴>'[sweet-meats]';
+飼>'[raise animals]';
+飽>'[eat heartily]';
+飾>'[decorate]';
+餃>'[stuffed dumplings]';
+餅>'[rice-cakes]';
+餉>'[rations and pay for soldiers]';
+養>'[raise]';
+餌>'[bait]';
+餐>'[eat]';
+餒>'[hungry]';
+餓>'[be hungry]';
+餔>'[eat]';
+餘>'[surplus]';
+#"餝>'[................................]'",
+餞>'[farewell party]';
+餠>'[rice-cakes]';
+餡>'[pastry filling]';
+餤>'[incite]';
+館>'[public building]';
+餬>'[porridge]';
+餮>'[a legendary animal]';
+餽>'[make present of food]';
+餾>'[distill]';
+#"饁>'[carry meal to workers in field]'",
+饅>'[steamed bread]';
+饉>'[time of famine or crop failure]';
+饋>'[offer food superior]';
+饌>'[feed]';
+饐>'[spoiled]';
+饑>'[starve]';
+饒>'[bountiful]';
+饕>'[gluttonous]';
+饗>'[host banquet]';
+首>'[head]';
+馗>'[cheekbone]';
+馘>'[cut off left ear]';
+香>'[fragrant]';
+馥>'[fragrance]';
+馨>'[fragrant]';
+馬>'[horse]';
+馭>'[drive]';
+馮>'[surname]';
+馳>'[go quickly or swiftly]';
+馴>'[tame]';
+#"馼>'[................................]'",
+駁>'[varicolored]';
+#"駃>'[gallop]'",
+駅>'[relay station]';
+駆>'[spur horse on]';
+駈>'[spur horse on]';
+駐>'[to be stationed at]';
+駑>'[tired]';
+駒>'[colt]';
+駕>'[drive]';
+駘>'[tired]';
+駛>'[sail]';
+駝>'[camel]';
+駟>'[team of four horses]';
+駢>'[team of horses]';
+駭>'[terrify]';
+駮>'[a kind of fierce animal]';
+駱>'[white horse w. black mane]';
+#"駱>'[white horse w. black mane]'",
+駸>'[galloping]';
+#"駻>'[................................]'",
+駿>'[excellent horse]';
+騁>'[gallop horse]';
+騅>'[piebald horse]';
+騎>'[ride horseback]';
+騏>'[piebald horse]';
+騒>'[harass]';
+験>'[test]';
+騙>'[swindle]';
+騨>'[dappled]';
+騫>'[raise]';
+騰>'[fly]';
+騷>'[harass]';
+騾>'[mule]';
+驀>'[suddenly]';
+驂>'[two outside ones in three horse]';
+驃>'[charger]';
+驅>'[spur horse on]';
+驍>'[excellent horse]';
+驕>'[spirited horse]';
+驗>'[test]';
+驚>'[frighten]';
+驛>'[relay station]';
+驟>'[procedure]';
+驢>'[donkey]';
+驤>'[gallop about with head uplifted]';
+驥>'[thoroughbred horse]';
+驩>'[happy]';
+驪>'[pure black horse]';
+驫>'[horses]';
+骨>'[bone]';
+骭>'[shin bone]';
+骰>'[die]';
+骸>'[skelton]';
+骼>'[bone]';
+髀>'[buttocks]';
+髄>'[bone marrow]';
+髏>'[skull]';
+髑>'[skull]';
+髓>'[bone marrow]';
+體>'[body]';
+高>'[high]';
+髞>'[high]';
+髟>'[hair]';
+髢>'[wig]';
+髣>'[similar to]';
+髦>'[flowing hair of young child]';
+髪>'[hair]';
+髫>'[children''s hair style]';
+髭>'[mustache]';
+髮>'[hair]';
+髯>'[beard]';
+#"髱>'[................................]'",
+髴>'[disheveled hair]';
+#"髷>'[................................]'",
+髻>'[hair rolled up in a bun]';
+鬆>'[lax]';
+鬘>'[beautiful hair]';
+鬚>'[beard]';
+鬟>'[dress hair in coiled knot]';
+鬢>'[hair on temples]';
+鬣>'[horse''s mane]';
+鬥>'[struggle]';
+鬧>'[quarrel]';
+鬨>'[boisterous]';
+鬩>'[feud]';
+鬪>'[struggle]';
+鬮>'[lots (to be drawn)]';
+鬯>'[sacrificial wine]';
+鬱>'[luxuriant]';
+鬲>'[type of caldron]';
+鬻>'[sell]';
+鬼>'[ghost]';
+魁>'[chief]';
+魂>'[soul]';
+魃>'[drought demon]';
+魄>'[vigor]';
+魅>'[kind of forest demon]';
+魍>'[demons]';
+魎>'[a kind of monster]';
+魏>'[kingdom of wei]';
+魑>'[a montain demon resembling tiger]';
+魔>'[demon]';
+魘>'[nightmare]';
+魚>'[fish]';
+魯>'[foolish]';
+魴>'[bream]';
+#"鮁>'[the bonito]'",
+鮎>'[sheatfish]';
+鮑>'[abalone]';
+鮒>'[carp]';
+鮓>'[minced and salted fish]';
+#"鮓>'[minced and salted fish]'",
+#"鮓>'[minced and salted fish]'",
+鮟>'[anglerfish]';
+鮠>'[a kind of shad with a head like a sturgeon]';
+#"鮨>'[................................]'",
+鮪>'[kind of sturgeon]';
+鮫>'[shark]';
+鮭>'[salmon]';
+鮮>'[fresh]';
+#"鮴>'[................................]'",
+#"鮹>'[................................]'",
+鯀>'[giant fish]';
+鯆>'[the skate or ray]';
+鯉>'[carp]';
+鯊>'[shark]';
+鯏>'[a dialect........ name of fish]';
+#"鯑>'[................................]'",
+#"鯒>'[................................]'",
+鯔>'[mullet]';
+鯖>'[mackerel]';
+鯛>'[pagrosomus major]';
+鯡>'[herring]';
+鯢>'[cryptobranchus japonicus]';
+#"鯣>'[................................]'",
+鯤>'[spawn]';
+鯨>'[whale]';
+鯰>'[sheat]';
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鰄>'[................................]'",
+#"鰆>'[................................]'",
+鰈>'[flatfish]';
+鰉>'[sturgeon]';
+#"鰊>'[................................]'",
+鰌>'[loach]';
+鰍>'[loach]';
+鰐>'[alligator]';
+鰒>'[abalone]';
+鰓>'[fish gills]';
+#"鰔>'[................................]'",
+鰕>'[shrimp]';
+鰛>'[sardine]';
+#"鰡>'[................................]'",
+#"鰤>'[................................]'",
+鰥>'[huge fish]';
+鰭>'[fin]';
+鰮>'[sardine]';
+#"鰯>'[................................]'",
+#"鰯>'[................................]'",
+鰲>'[huge sea turtle]';
+鰹>'[skipjack]';
+#"鰺>'[................................]'",
+鰻>'[eel]';
+鰾>'[swimming bladder of fish]';
+#"鱆>'[................................]'",
+鱇>'[anglerfish]';
+鱈>'[codfish]';
+鱒>'[barbel]';
+鱗>'[fish scales]';
+#"鱘>'[sturgeon]'",
+鱠>'[minced fish]';
+鱧>'[snakehead]';
+#"鱶>'[................................]'",
+鱸>'[sea perch]';
+鳥>'[bird]';
+鳧>'[wild duck]';
+鳩>'[pigeon]';
+鳫>'[wild goose]';
+鳬>'[wild duck]';
+#"鳰>'[................................]'",
+鳳>'[male phoenix]';
+鳴>'[cry of bird or animal]';
+鳶>'[kite]';
+鴃>'[shrike]';
+鴆>'[bird resembling secretary falcon]';
+鴇>'[bustard]';
+鴈>'[wild goose]';
+鴉>'[crow]';
+鴎>'[seagull]';
+鴒>'[species of lark]';
+鴕>'[ostrich]';
+鴛>'[male mandarin duck]';
+鴟>'[kite]';
+鴣>'[species of taiwan pigeon]';
+鴦>'[female mandarin duck]';
+鴨>'[duck]';
+鴪>'[swoop]';
+鴫>'[a snipe]';
+鴬>'[oriole]';
+鴻>'[species of wild swan]';
+#"鴾>'[................................]'",
+鴿>'[pigeon]';
+#"鵁>'[................................]'",
+鵄>'[kite]';
+#"鵄>'[kite]'",
+#"鵄>'[kite]'",
+#"鵐>'[................................]'",
+鵑>'[cuckoo]';
+鵙>'[a shrike]';
+鵜>'[pelican]';
+鵝>'[goose]';
+鵞>'[goose]';
+鵠>'[target]';
+鵡>'[species of parrot]';
+#"鵡>'[species of parrot]'",
+鵬>'[fabulous bird of enormous size]';
+鵯>'[bird]';
+鵲>'[magpie]';
+#"鵺>'[................................]'",
+鶇>'[thrush]';
+鶉>'[quail]';
+鶏>'[chicken]';
+鶚>'[osprey]';
+#"鶤>'[................................]'",
+鶩>'[duck]';
+鶫>'[thrush]';
+鶯>'[oriole]';
+#"鶱>'[soar]'",
+鶴>'[crane]';
+鶸>'[[not found in any dictionary]]';
+鶺>'[wagtail]';
+鶻>'[a kind of pigeon]';
+鷁>'[fishhawk bow or prow]';
+鷂>'[sparrow hawk]';
+鷄>'[chicken]';
+鷆>'[bird name]';
+鷏>'[bird name]';
+鷓>'[partridge]';
+鷙>'[hawk]';
+鷦>'[wren]';
+#"鷫>'[turquoise kingfisher]'",
+鷯>'[wren]';
+鷲>'[condor]';
+鷸>'[snipe]';
+鷹>'[eagle]';
+鷺>'[heron]';
+鷽>'[oriental bullfinch]';
+鸚>'[species of parrot]';
+鸛>'[crane]';
+鸞>'[fabulous bird]';
+鹵>'[saline soil]';
+鹸>'[alkaline]';
+鹹>'[salty]';
+鹽>'[salt]';
+鹿>'[deer]';
+麁>'[rough]';
+麈>'[species of deer]';
+麋>'[elk]';
+麌>'[stag]';
+麑>'[fawn]';
+麒>'[legendary auspicious animal]';
+麓>'[foot of hill]';
+麕>'[muntjac deer]';
+麗>'[beautiful]';
+麝>'[musk deer]';
+麟>'[female of chinese unicorn]';
+麥>'[wheat]';
+麦>'[wheat]';
+麩>'[bran]';
+麪>'[flour]';
+#"麫>'[flour]'",
+麸>'[bran]';
+麹>'[yeast]';
+麺>'[flour]';
+麻>'[hemp]';
+麼>'[interrogative final particle]';
+麾>'[pennant]';
+麿>'[I]';
+黄>'[yellow]';
+黌>'[school]';
+黍>'[glutinous millet]';
+黎>'[surname]';
+黏>'[stick to]';
+黐>'[stick]';
+黒>'[black]';
+黔>'[black]';
+默>'[silent]';
+黙>'[silent]';
+黛>'[blacken eyebrows]';
+黜>'[dismiss]';
+黝>'[black]';
+點>'[dot]';
+黠>'[sly]';
+黥>'[tattooing face]';
+黨>'[political party]';
+黯>'[dark]';
+黴>'[mold]';
+黶>'[mole]';
+黷>'[dishonor]';
+黹>'[embroidery]';
+黻>'[special pattern of embroidery]';
+黼>'[embroidered official or sacrific]';
+黽>'[to strive]';
+鼇>'[huge sea turtle]';
+鼈>'[fresh water turtle]';
+鼎>'[large]';
+鼓>'[drum]';
+鼕>'[rattle of drums]';
+鼠>'[rat]';
+鼡>'[rat]';
+鼬>'[weasel]';
+鼻>'[nose]';
+鼾>'[snore loudly]';
+齊>'[even]';
+齋>'[vegetarian diet]';
+齎>'[take in both hands and offer to]';
+齏>'[break or smash into pieces]';
+齒>'[teeth]';
+齔>'[lose baby teeth and get adult te]';
+齟>'[irregular teeth]';
+齠>'[lose baby teeth and get adult teeth]';
+齡>'[age]';
+齢>'[age]';
+齣>'[act]';
+齦>'[gums]';
+齧>'[bite]';
+齪>'[narrow]';
+齬>'[uneven teeth]';
+齲>'[tooth decay]';
+齶>'[palate]';
+齷>'[narrow]';
+龍>'[dragon]';
+龕>'[niche]';
+龜>'[turtle or tortoise]';
+龝>'[autumn]';
+龠>'[flute]';
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
new file mode 100644
index 0000000..7435913
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
@@ -0,0 +1,6216 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:03 2001
+#--------------------------------------------------------------------
+
+# Kanji-OnRomaji
+
+丁>Tei;
+七>Shichi;
+万>Man;
+丈>Jou;
+三>San;
+上>Jou;
+下>Ka;
+不>Fu;
+与>Yo;
+丐>Kai;
+丑>Chuu;
+且>Sha;
+丕>Hi;
+世>Se;
+丗>Sei;
+丘>Kyuu;
+丙>Hei;
+丞>Shou;
+両>Ryou;
+並>Hei;
+个>Ka;
+中>Chuu;
+丱>Kan;
+串>Sen;
+丶>Chu;
+丸>Gan;
+丹>Tan;
+主>Shu;
+丼>Sei;
+丿>Hetsu;
+乂>Gai;
+乃>Dai;
+久>Kyuu;
+之>Shi;
+乍>Saku;
+乎>Ko;
+乏>Bou;
+乕>Ko;
+乖>Kai;
+乗>Jou;
+乘>Jou;
+乙>Otsu;
+九>Kyuu;
+乞>Kotsu;
+也>Ya;
+乢>Gai;
+乱>Ran;
+乳>Nyuu;
+乾>Kan;
+亀>Ki;
+亂>Ran;
+亅>Ketsu;
+了>Ryou;
+予>Yo;
+争>Sou;
+亊>Ji;
+事>Ji;
+二>Ni;
+于>U;
+云>Un;
+互>Go;
+五>Go;
+井>Sei;
+亘>Sen;
+亙>Kou;
+些>Sa;
+亜>A;
+亞>A;
+亟>Kyoku;
+亠>Tou;
+亡>Bou;
+亢>Kou;
+交>Kou;
+亥>Gai;
+亦>Eki;
+亨>Kyou;
+享>Kyou;
+京>Kyou;
+亭>Tei;
+亮>Ryou;
+亰>Kei;
+亳>Haku;
+亶>Tan;
+人>Jin;
+什>Shuu;
+仁>Jin;
+仂>Roku;
+仄>Soku;
+仆>Fu;
+仇>Kyuu;
+今>Kon;
+介>Kai;
+仍>Jou;
+从>Juu;
+仏>Butsu;
+仔>Shi;
+仕>Shi;
+他>Ta;
+仗>Jou;
+付>Fu;
+仙>Sen;
+仝>Dou;
+仞>Jin;
+仟>Sen;
+代>Dai;
+令>Rei;
+以>I;
+仭>Jin;
+仮>Ka;
+仰>Gyou;
+仲>Chuu;
+件>Ken;
+价>Kai;
+任>Nin;
+企>Ki;
+伉>Kou;
+伊>I;
+伍>Go;
+伎>Ki;
+伏>Fuku;
+伐>Batsu;
+休>Kyuu;
+会>Kai;
+伜>Sai;
+伝>Den;
+伯>Haku;
+估>Ko;
+伴>Han;
+伶>Rei;
+伸>Shin;
+伺>Shi;
+似>Ji;
+伽>Kya;
+佃>Ten;
+但>Tan;
+佇>Cho;
+位>I;
+低>Tei;
+住>Juu;
+佐>Sa;
+佑>Yuu;
+体>Tei;
+何>Ka;
+佗>Ta;
+余>Yo;
+佚>Itsu;
+佛>Butsu;
+作>Saku;
+佝>Kou;
+佞>Nei;
+佩>Hai;
+佯>You;
+佰>Haku;
+佳>Ka;
+併>Hei;
+佶>Kitsu;
+佻>Chou;
+佼>Kou;
+使>Shi;
+侃>Kan;
+來>Rai;
+侈>Shi;
+例>Rei;
+侍>Ji;
+侏>Shu;
+侑>Yuu;
+侖>Ron;
+侘>Ta;
+供>Kyou;
+依>I;
+侠>Kyou;
+価>Ka;
+侫>Nei;
+侭>Jin;
+侮>Bu;
+侯>Kou;
+侵>Shin;
+侶>Ryo;
+便>Ben;
+係>Kei;
+促>Soku;
+俄>Ga;
+俊>Shun;
+俎>Sho;
+俐>Ri;
+俑>You;
+俔>Ken;
+俗>Zoku;
+俘>Fu;
+俚>Ri;
+俛>Ben;
+保>Ho;
+俟>Shi;
+信>Shin;
+修>Shuu;
+俯>Fu;
+俳>Hai;
+俵>Hyou;
+俶>Shuku;
+俸>Hou;
+俺>En;
+俾>Hi;
+倅>Sai;
+倆>Ryou;
+倉>Sou;
+個>Ko;
+倍>Bai;
+倏>Shuku;
+們>Mon;
+倒>Tou;
+倔>Kutsu;
+倖>Kou;
+候>Kou;
+倚>I;
+借>Shaku;
+倡>Shou;
+倣>Hou;
+値>Chi;
+倥>Kou;
+倦>Ken;
+倨>Kyo;
+倩>Sen;
+倪>Gei;
+倫>Rin;
+倬>Taku;
+倭>I;
+倶>Ku;
+倹>Ken;
+偃>En;
+假>Ka;
+偈>Ketsu;
+偉>I;
+偏>Hen;
+偐>Gan;
+偕>Kai;
+偖>Sha;
+做>Saku;
+停>Tei;
+健>Ken;
+偬>Sou;
+偲>Shi;
+側>Soku;
+偵>Tei;
+偶>Guu;
+偸>Chuu;
+偽>Gi;
+傀>Kai;
+傅>Fu;
+傍>Bou;
+傑>Ketsu;
+傘>San;
+備>Bi;
+傚>Kou;
+催>Sai;
+傭>You;
+傲>Gou;
+傳>Den;
+傴>U;
+債>Sai;
+傷>Shou;
+傾>Kei;
+僂>Rou;
+僅>Kin;
+僉>Sen;
+僊>Sen;
+働>Dou;
+像>Zou;
+僑>Kyou;
+僕>Boku;
+僖>Ki;
+僚>Ryou;
+僞>Gi;
+僣>Sen;
+僥>Kyou;
+僧>Sou;
+僭>Sen;
+僮>Dou;
+僵>Kyou;
+價>Ka;
+僻>Heki;
+儀>Gi;
+儁>Shun;
+儂>Dou;
+億>Oku;
+儉>Ken;
+儒>Ju;
+儔>Chuu;
+儕>Sei;
+儖>Ran;
+儘>Jin;
+儚>Bou;
+償>Shou;
+儡>Rai;
+優>Yuu;
+儲>Cho;
+儷>Rei;
+儺>Da;
+儻>Tou;
+儼>Gen;
+儿>Jin;
+兀>Kotsu;
+允>In;
+元>Gen;
+兄>Kei;
+充>Juu;
+兆>Chou;
+兇>Kyou;
+先>Sen;
+光>Kou;
+克>Koku;
+兌>Da;
+免>Men;
+兎>To;
+児>Ji;
+兒>Ji;
+兔>To;
+党>Tou;
+兜>Tou;
+兢>Kyou;
+入>Nyuu;
+全>Zen;
+兩>Ryou;
+兪>Yu;
+八>Hachi;
+公>Kou;
+六>Roku;
+兮>Kei;
+共>Kyou;
+兵>Hei;
+其>Ki;
+具>Gu;
+典>Ten;
+兼>Ken;
+冀>Ki;
+冂>Kei;
+内>Dai;
+円>En;
+冉>Nen;
+冊>Satsu;
+册>Satsu;
+再>Sai;
+冏>Kei;
+冐>Bou;
+冑>Chuu;
+冒>Bou;
+冓>Kou;
+冕>Ben;
+冖>Beki;
+冗>Jou;
+写>Sha;
+冠>Kan;
+冢>Chou;
+冤>En;
+冥>Mei;
+冦>Kou;
+冨>Fu;
+冩>Sha;
+冪>Beki;
+冫>Hyou;
+冬>Tou;
+冰>Hyou;
+冱>Go;
+冲>Chuu;
+决>Ketsu;
+冴>Go;
+况>Kyou;
+冶>Ya;
+冷>Rei;
+冽>Retsu;
+凄>Sei;
+凅>Ko;
+准>Jun;
+凉>Ryou;
+凋>Chou;
+凌>Ryou;
+凍>Tou;
+凖>Jun;
+凛>Rin;
+凜>Rin;
+凝>Gyou;
+几>Ki;
+凡>Bon;
+処>Sho;
+凭>Hyou;
+凰>Kou;
+凱>Gai;
+凵>Kan;
+凶>Kyou;
+凸>Totsu;
+凹>Ou;
+出>Shutsu;
+函>Kan;
+凾>Kan;
+刀>Tou;
+刃>Jin;
+刄>Jin;
+分>Bun;
+切>Setsu;
+刈>Gai;
+刊>Kan;
+刋>Sen;
+刎>Fun;
+刑>Kei;
+刔>Ketsu;
+列>Retsu;
+初>Sho;
+判>Han;
+別>Betsu;
+刧>Gou;
+利>Ri;
+刪>San;
+刮>Katsu;
+到>Tou;
+刳>Ko;
+制>Sei;
+刷>Satsu;
+券>Ken;
+刹>Satsu;
+刺>Shi;
+刻>Koku;
+剃>Tei;
+剄>Kei;
+則>Soku;
+削>Saku;
+剋>Koku;
+剌>Ratsu;
+前>Zen;
+剏>Sou;
+剔>Teki;
+剖>Bou;
+剛>Gou;
+剞>Ki;
+剣>Ken;
+剤>Zai;
+剥>Haku;
+剩>Jou;
+剪>Sen;
+副>Fuku;
+剰>Jou;
+剱>Ken;
+割>Katsu;
+剳>Tou;
+剴>Gai;
+創>Sou;
+剽>Hyou;
+剿>Shou;
+劃>Kaku;
+劇>Geki;
+劈>Heki;
+劉>Ru;
+劍>Ken;
+劑>Zai;
+劒>Ken;
+劔>Ken;
+力>Ryoku;
+功>Kou;
+加>Ka;
+劣>Retsu;
+助>Jo;
+努>Do;
+劫>Gou;
+劬>Ku;
+劭>Shou;
+励>Rei;
+労>Rou;
+劵>Ken;
+効>Kou;
+劼>Katsu;
+劾>Gai;
+勁>Kei;
+勃>Botsu;
+勅>Choku;
+勇>Yuu;
+勉>Ben;
+勍>Kei;
+勒>Roku;
+動>Dou;
+勗>Bou;
+勘>Kan;
+務>Mu;
+勝>Shou;
+勞>Rou;
+募>Bo;
+勠>Riku;
+勢>Sei;
+勣>Seki;
+勤>Kin;
+勦>Sou;
+勧>Kan;
+勲>Kun;
+勳>Kun;
+勵>Rei;
+勸>Kan;
+勹>Hou;
+勺>Shaku;
+勾>Kou;
+勿>Butsu;
+包>Hou;
+匆>Sou;
+匈>Kyou;
+匍>Ho;
+匏>Hou;
+匐>Hoku;
+匕>Hi;
+化>Ka;
+北>Hoku;
+匙>Shi;
+匚>Hou;
+匝>Sou;
+匠>Shou;
+匡>Kyou;
+匣>Kou;
+匪>Hi;
+匯>Wai;
+匱>Ki;
+匳>Ren;
+匸>Kei;
+匹>Hitsu;
+区>Ku;
+医>I;
+匿>Toku;
+區>Ku;
+十>Juu;
+千>Sen;
+卅>Sou;
+卆>Sotsu;
+升>Shou;
+午>Go;
+卉>Ki;
+半>Han;
+卍>Ban;
+卑>Hi;
+卒>Sotsu;
+卓>Taku;
+協>Kyou;
+南>Nan;
+単>Tan;
+博>Haku;
+卜>Boku;
+卞>Hen;
+占>Sen;
+卦>Ka;
+卩>Setsu;
+卮>Shi;
+卯>Bou;
+印>In;
+危>Ki;
+即>Soku;
+却>Kyaku;
+卵>Ran;
+卷>Kan;
+卸>Sha;
+卻>Kyaku;
+卿>Kyou;
+厂>Kan;
+厄>Yaku;
+厖>Bou;
+厘>Rin;
+厚>Kou;
+原>Gen;
+厠>Shi;
+厥>Ketsu;
+厦>Ka;
+厨>Zu;
+厩>Kyuu;
+厭>En;
+厮>Shi;
+厰>Shou;
+厳>Gen;
+厶>Shi;
+去>Kyo;
+参>San;
+參>San;
+又>Yuu;
+叉>Sha;
+及>Kyuu;
+友>Yuu;
+双>Sou;
+反>Han;
+収>Shuu;
+叔>Shuku;
+取>Shu;
+受>Ju;
+叙>Jo;
+叛>Han;
+叟>Sou;
+叡>Ei;
+叢>Sou;
+口>Kou;
+古>Ko;
+句>Ku;
+叨>Tou;
+叩>Kou;
+只>Shi;
+叫>Kyou;
+召>Shou;
+叭>Hatsu;
+叮>Tei;
+可>Ka;
+台>Dai;
+叱>Shitsu;
+史>Shi;
+右>U;
+叶>Kyou;
+号>Gou;
+司>Shi;
+吁>Ku;
+吃>Kitsu;
+各>Kaku;
+合>Gou;
+吉>Kichi;
+吊>Chou;
+吋>Sun;
+同>Dou;
+名>Mei;
+后>Kou;
+吏>Ri;
+吐>To;
+向>Kou;
+君>Kun;
+吝>Rin;
+吟>Gin;
+吠>Hai;
+否>Hi;
+吩>Fun;
+含>Gan;
+听>Kin;
+吭>Kou;
+吮>Sen;
+吶>Totsu;
+吸>Kyuu;
+吹>Sui;
+吻>Fun;
+吼>Kou;
+吽>In;
+吾>Go;
+呀>Ga;
+呂>Ryo;
+呆>Bou;
+呈>Tei;
+呉>Go;
+告>Koku;
+呎>Seki;
+呑>Don;
+呟>Gen;
+周>Shuu;
+呪>Ju;
+呰>Shi;
+呱>Ko;
+味>Mi;
+呵>Ka;
+呶>Do;
+呷>Kou;
+呻>Shin;
+呼>Ko;
+命>Mei;
+咀>So;
+咄>Totsu;
+咆>Hou;
+咋>Saku;
+和>Wa;
+咎>Kyuu;
+咏>Ei;
+咐>Ho;
+咒>Shu;
+咢>Gaku;
+咤>Ta;
+咥>Ki;
+咨>Shi;
+咫>Shi;
+咬>Kou;
+咯>Kaku;
+咲>Shou;
+咳>Gai;
+咸>Kan;
+咼>Ka;
+咽>In;
+咾>Rou;
+哀>Ai;
+品>Hin;
+哂>Shin;
+哄>Kou;
+哇>Ai;
+哈>Gou;
+哉>Sai;
+員>In;
+哢>Rou;
+哥>Ka;
+哦>Ga;
+哨>Shou;
+哩>Ri;
+哭>Koku;
+哮>Kou;
+哲>Tetsu;
+哺>Ho;
+哽>Kou;
+唄>Bai;
+唆>Sa;
+唇>Shin;
+唏>Ki;
+唐>Tou;
+唔>Go;
+唖>A;
+售>Shuu;
+唯>Yui;
+唱>Shou;
+唳>Rei;
+唸>Ten;
+唹>Yo;
+唾>Da;
+啀>Gai;
+啄>Taku;
+啅>Taku;
+商>Shou;
+啌>Kou;
+問>Mon;
+啓>Kei;
+啖>Tan;
+啗>Tan;
+啜>Setsu;
+啝>Ka;
+啣>Kan;
+啻>Shi;
+啼>Tei;
+啾>Shuu;
+喀>Kaku;
+喃>Nan;
+善>Zen;
+喇>Ratsu;
+喉>Kou;
+喊>Kan;
+喋>Chou;
+喘>Zen;
+喙>Kai;
+喚>Kan;
+喜>Ki;
+喝>Katsu;
+喞>Soku;
+喟>Ki;
+喧>Ken;
+喨>Ryou;
+喩>Yu;
+喪>Sou;
+喫>Kitsu;
+喬>Kyou;
+單>Tan;
+営>Ei;
+嗄>Sa;
+嗅>Kyuu;
+嗇>Shoku;
+嗔>Shin;
+嗚>O;
+嗜>Shi;
+嗟>Sa;
+嗣>Shi;
+嗤>Shi;
+嗷>Gou;
+嗹>Ren;
+嗽>Soku;
+嗾>Sou;
+嘆>Tan;
+嘉>Ka;
+嘔>Ou;
+嘖>Saku;
+嘗>Shou;
+嘘>Kyo;
+嘛>Ma;
+嘩>Ka;
+嘯>Shou;
+嘱>Shoku;
+嘲>Tou;
+嘴>Shi;
+嘶>Sei;
+嘸>Bu;
+噂>Son;
+噌>Sou;
+噎>Itsu;
+噐>Ki;
+噛>Gou;
+噤>Kin;
+器>Ki;
+噪>Sou;
+噫>I;
+噬>Zei;
+噴>Fun;
+噸>Ton;
+嚀>Dei;
+嚆>Kou;
+嚇>Kaku;
+嚊>Hi;
+嚏>Tei;
+嚔>Tei;
+嚠>Ryuu;
+嚢>Nou;
+嚥>En;
+嚮>Kou;
+嚴>Gen;
+嚶>Ou;
+嚼>Shaku;
+囀>Ten;
+囁>Shou;
+囂>Gou;
+囃>Sou;
+囈>Gei;
+囎>So;
+囑>Shoku;
+囓>Ketsu;
+囗>I;
+囘>Kai;
+囚>Shuu;
+四>Shi;
+回>Kai;
+因>In;
+団>Dan;
+囮>Ka;
+困>Kon;
+囲>I;
+図>To;
+囹>Rei;
+固>Ko;
+国>Koku;
+囿>Yuu;
+圀>Koku;
+圃>Ho;
+圄>Gyo;
+圈>Ken;
+圉>Gyo;
+國>Koku;
+圍>I;
+圏>Ken;
+園>En;
+圓>En;
+圖>To;
+團>Dan;
+圜>Kan;
+土>Do;
+圧>Atsu;
+在>Zai;
+圭>Kei;
+地>Chi;
+圻>Ki;
+址>Shi;
+坂>Han;
+均>Kin;
+坊>Bou;
+坎>Kan;
+坏>Hai;
+坐>Za;
+坑>Kou;
+坡>Ha;
+坤>Kon;
+坦>Tan;
+坩>Kan;
+坪>Hei;
+坿>Fu;
+垂>Sui;
+垈>Tai;
+垉>Hou;
+型>Kei;
+垓>Gai;
+垠>Gin;
+垢>Kou;
+垣>En;
+垤>Tetsu;
+埀>Sui;
+埃>Ai;
+埆>Kaku;
+埋>Mai;
+城>Jou;
+埒>Rachi;
+埓>Rachi;
+埔>Ho;
+埜>Sho;
+域>Iki;
+埠>Fu;
+埣>Sai;
+埴>Shoku;
+執>Shitsu;
+培>Bai;
+基>Ki;
+埼>Ki;
+堀>Kutsu;
+堂>Dou;
+堅>Ken;
+堆>Tai;
+堊>A;
+堋>Hou;
+堕>Da;
+堙>In;
+堝>Ka;
+堡>Hou;
+堤>Tei;
+堪>Kan;
+堯>Gyou;
+堰>En;
+報>Hou;
+場>Jou;
+堵>To;
+堺>Kai;
+堽>Kou;
+塁>Rui;
+塊>Kai;
+塋>Ei;
+塑>So;
+塒>Shi;
+塔>Tou;
+塗>To;
+塘>Tou;
+塙>Kaku;
+塚>Chou;
+塞>Soku;
+塢>O;
+塩>En;
+填>Ten;
+塲>Jou;
+塵>Jin;
+塹>Zan;
+塾>Juku;
+境>Kyou;
+墅>Sho;
+墓>Bo;
+増>Zou;
+墜>Tsui;
+墟>Kyo;
+墨>Boku;
+墫>Shun;
+墮>Da;
+墳>Fun;
+墸>Sho;
+墺>Ou;
+墻>Shou;
+墾>Kon;
+壁>Heki;
+壅>You;
+壇>Dan;
+壊>Kai;
+壌>Jou;
+壑>Gaku;
+壓>Atsu;
+壕>Gou;
+壘>Rui;
+壙>Kou;
+壜>Tan;
+壞>Kai;
+壟>Ryou;
+壤>Jou;
+壥>Ten;
+士>Shi;
+壬>Jin;
+壮>Sou;
+壯>Sou;
+声>Sei;
+壱>Ichi;
+売>Bai;
+壷>Ko;
+壹>Ichi;
+壺>Ko;
+壻>Sei;
+壼>Kon;
+壽>Ju;
+夂>Chi;
+変>Hen;
+夊>Sui;
+夏>Ka;
+夐>Kei;
+夕>Seki;
+外>Gai;
+夘>Bou;
+夙>Shuku;
+多>Ta;
+夛>Ta;
+夜>Ya;
+夢>Mu;
+夥>Ka;
+大>Tai;
+天>Ten;
+太>Ta;
+夫>Fu;
+夬>Ketsu;
+夭>You;
+央>Ou;
+失>Shitsu;
+夲>Tou;
+夷>I;
+夸>Ko;
+夾>Kou;
+奄>En;
+奇>Ki;
+奈>Na;
+奉>Hou;
+奎>Kei;
+奏>Sou;
+奐>Kan;
+契>Setsu;
+奔>Hon;
+奕>Eki;
+套>Tou;
+奘>Jou;
+奚>Kei;
+奠>Ten;
+奢>Sha;
+奥>Ou;
+奧>Ou;
+奨>Shou;
+奩>Ren;
+奪>Datsu;
+奬>Shou;
+奮>Fun;
+女>Jo;
+奴>Do;
+奸>Kan;
+好>Kou;
+妁>Shaku;
+如>Jo;
+妃>Hi;
+妄>Bou;
+妊>Nin;
+妍>Ken;
+妓>Ki;
+妖>You;
+妙>Myou;
+妛>Shi;
+妝>Sou;
+妣>Hi;
+妥>Da;
+妨>Bou;
+妬>To;
+妲>Datsu;
+妹>Mai;
+妻>Sai;
+妾>Shou;
+姆>Bo;
+姉>Shi;
+始>Shi;
+姐>So;
+姑>Ko;
+姓>Sei;
+委>I;
+姙>Nin;
+姚>You;
+姜>Kyou;
+姥>Bo;
+姦>Kan;
+姨>I;
+姪>Tetsu;
+姫>Ki;
+姶>Ou;
+姻>In;
+姿>Shi;
+威>I;
+娃>A;
+娉>Hei;
+娑>Sha;
+娘>Jou;
+娚>Nan;
+娜>Da;
+娟>Ken;
+娠>Shin;
+娥>Ga;
+娩>Ben;
+娯>Go;
+娵>Shu;
+娶>Shu;
+娼>Shou;
+婀>A;
+婁>Rou;
+婆>Ba;
+婉>En;
+婚>Kon;
+婢>Hi;
+婦>Fu;
+婪>Ran;
+婬>In;
+婿>Sei;
+媒>Bai;
+媚>Bi;
+媛>En;
+媼>Ou;
+媽>Bo;
+媾>Kou;
+嫁>Ka;
+嫂>Sou;
+嫉>Shitsu;
+嫋>Jou;
+嫌>Ken;
+嫐>Jou;
+嫖>Hyou;
+嫗>Ou;
+嫡>Chaku;
+嫣>En;
+嫦>Kou;
+嫩>Don;
+嫺>Kan;
+嫻>Kan;
+嬉>Ki;
+嬋>Sen;
+嬌>Kyou;
+嬖>Hei;
+嬢>Jou;
+嬪>Hin;
+嬬>Shu;
+嬰>Ei;
+嬲>Jou;
+嬾>Ran;
+孀>Sou;
+孃>Jou;
+孅>Sen;
+子>Shi;
+孑>Getsu;
+孔>Kou;
+孕>You;
+字>Ji;
+存>Son;
+孚>Fu;
+孛>Botsu;
+孜>Shi;
+孝>Kou;
+孟>Mou;
+季>Ki;
+孤>Ko;
+孥>Do;
+学>Gaku;
+孩>Kai;
+孫>Son;
+孰>Juku;
+孱>Sen;
+孳>Shi;
+孵>Fu;
+學>Gaku;
+孺>Ju;
+宀>Ben;
+它>Ta;
+宅>Taku;
+宇>U;
+守>Shu;
+安>An;
+宋>Sou;
+完>Kan;
+宍>Niku;
+宏>Kou;
+宕>Tou;
+宗>Shuu;
+官>Kan;
+宙>Chuu;
+定>Tei;
+宛>En;
+宜>Gi;
+宝>Hou;
+実>Jitsu;
+客>Kyaku;
+宣>Sen;
+室>Shitsu;
+宥>Yuu;
+宦>Kan;
+宮>Kyuu;
+宰>Sai;
+害>Gai;
+宴>En;
+宵>Shou;
+家>Ka;
+宸>Shin;
+容>You;
+宿>Shuku;
+寂>Jaku;
+寃>En;
+寄>Ki;
+寅>In;
+密>Mitsu;
+寇>Kou;
+寉>Kaku;
+富>Fu;
+寐>Bi;
+寒>Kan;
+寓>Guu;
+寔>Shoku;
+寛>Kan;
+寝>Shin;
+寞>Baku;
+察>Satsu;
+寡>Ka;
+寢>Shin;
+寤>Go;
+寥>Ryou;
+實>Jitsu;
+寧>Nei;
+寨>Sai;
+審>Shin;
+寫>Sha;
+寮>Ryou;
+寰>Kan;
+寳>Hou;
+寵>Chou;
+寶>Hou;
+寸>Sun;
+寺>Ji;
+対>Tai;
+寿>Ju;
+封>Fuu;
+専>Sen;
+射>Sha;
+尅>Koku;
+将>Shou;
+將>Shou;
+專>Sen;
+尉>I;
+尊>Son;
+尋>Jin;
+對>Tai;
+導>Dou;
+小>Shou;
+少>Shou;
+尓>Ji;
+尖>Sen;
+尚>Shou;
+尠>Sen;
+尢>Ou;
+尤>Yuu;
+尨>Bou;
+尭>Gyou;
+就>Shuu;
+尸>Shi;
+尹>In;
+尺>Shaku;
+尻>Kou;
+尼>Ni;
+尽>Jin;
+尾>Bi;
+尿>Nyou;
+局>Kyoku;
+屁>Hi;
+居>Kyo;
+屆>Kai;
+屈>Kutsu;
+届>Kai;
+屋>Oku;
+屍>Shi;
+屎>Shi;
+屏>Hei;
+屐>Geki;
+屑>Setsu;
+屓>Ki;
+展>Ten;
+属>Zoku;
+屠>To;
+屡>Ru;
+層>Sou;
+履>Ri;
+屬>Zoku;
+屮>Sa;
+屯>Ton;
+山>San;
+屹>Kitsu;
+岌>Kyuu;
+岐>Ki;
+岑>Shin;
+岔>Sa;
+岡>Kou;
+岨>So;
+岩>Gan;
+岫>Shuu;
+岬>Kou;
+岱>Tai;
+岳>Gaku;
+岶>Haku;
+岷>Bin;
+岸>Gan;
+岻>Ji;
+岾>Sen;
+峇>Kou;
+峙>Ji;
+峡>Kyou;
+峨>Ga;
+峩>Ga;
+峪>Yoku;
+峭>Shou;
+峯>Hou;
+峰>Hou;
+島>Tou;
+峺>Kou;
+峻>Shun;
+峽>Kyou;
+崇>Suu;
+崋>Ka;
+崎>Ki;
+崑>Kon;
+崔>Sai;
+崕>Gai;
+崖>Gai;
+崗>Kou;
+崘>Ron;
+崙>Ron;
+崚>Ryou;
+崛>Kutsu;
+崟>Gin;
+崢>Sou;
+崩>Hou;
+嵋>Bi;
+嵌>Kan;
+嵎>Guu;
+嵐>Ran;
+嵒>Gan;
+嵜>Ki;
+嵩>Suu;
+嵬>Kai;
+嵯>Sa;
+嵳>Sa;
+嶂>Shou;
+嶄>San;
+嶇>Ku;
+嶋>Tou;
+嶌>Tou;
+嶐>Ryuu;
+嶝>Tou;
+嶢>Gyou;
+嶬>Gi;
+嶮>Ken;
+嶷>Gi;
+嶺>Rei;
+嶼>Sho;
+嶽>Gaku;
+巉>San;
+巌>Gan;
+巍>Gi;
+巒>Ran;
+巓>Ten;
+巖>Gan;
+巛>Sen;
+川>Sen;
+州>Shuu;
+巡>Jun;
+巣>Sou;
+工>Kou;
+左>Sa;
+巧>Kou;
+巨>Kyo;
+巫>Fu;
+差>Shi;
+己>Ki;
+已>I;
+巳>Shi;
+巴>Ha;
+巵>Shi;
+巷>Kou;
+巻>Kan;
+巽>Son;
+巾>Kin;
+市>Shi;
+布>Fu;
+帆>Han;
+帋>Shi;
+希>Ki;
+帑>Do;
+帖>Jou;
+帙>Chitsu;
+帚>Sou;
+帛>Haku;
+帝>Tei;
+帥>Sotsu;
+師>Shi;
+席>Seki;
+帯>Tai;
+帰>Ki;
+帳>Chou;
+帶>Tai;
+帷>I;
+常>Jou;
+帽>Bou;
+幀>Tei;
+幃>I;
+幄>Aku;
+幅>Fuku;
+幇>Hou;
+幌>Kou;
+幎>Beki;
+幔>Ban;
+幕>Maku;
+幗>Kaku;
+幟>Shi;
+幡>Han;
+幢>Tou;
+幣>Hei;
+幤>Hei;
+干>Kan;
+平>Hei;
+年>Nen;
+幵>Ken;
+并>Hei;
+幸>Kou;
+幹>Kan;
+幺>You;
+幻>Gen;
+幼>You;
+幽>Yuu;
+幾>Ki;
+广>Gen;
+庁>Chou;
+広>Kou;
+庄>Sou;
+庇>Hi;
+床>Shou;
+序>Jo;
+底>Tei;
+庖>Hou;
+店>Ten;
+庚>Kou;
+府>Fu;
+庠>Shou;
+度>Taku;
+座>Za;
+庫>Ko;
+庭>Tei;
+庵>An;
+庶>Sho;
+康>Kou;
+庸>You;
+廁>Shi;
+廂>Shou;
+廃>Hai;
+廈>Ka;
+廉>Ren;
+廊>Rou;
+廐>Kyuu;
+廓>Kaku;
+廖>Ryou;
+廚>Zu;
+廛>Ten;
+廝>Shi;
+廟>Byou;
+廠>Shou;
+廡>Bu;
+廢>Hai;
+廣>Kou;
+廨>Kai;
+廩>Rin;
+廬>Ryo;
+廰>Chou;
+廱>You;
+廳>Chou;
+廴>In;
+延>En;
+廷>Tei;
+廸>Teki;
+建>Ken;
+廻>Kai;
+廼>Dai;
+廾>Kyou;
+廿>Juu;
+弁>Ben;
+弃>Ki;
+弄>Rou;
+弉>Jou;
+弊>Hei;
+弋>Yoku;
+弌>Itsu;
+弍>Ni;
+式>Shiki;
+弐>Ni;
+弑>Shi;
+弓>Kyuu;
+弔>Chou;
+引>In;
+弗>Futsu;
+弘>Kou;
+弛>Shi;
+弟>Tei;
+弥>Mi;
+弦>Gen;
+弧>Ko;
+弩>Do;
+弭>Bi;
+弯>Wan;
+弱>Jaku;
+張>Chou;
+強>Kyou;
+弸>Hou;
+弼>Hitsu;
+弾>Dan;
+彁>Sei;
+彈>Dan;
+彊>Kyou;
+彌>Bi;
+彎>Wan;
+彑>Kei;
+当>Tou;
+彖>Tan;
+彗>Sui;
+彙>I;
+彜>I;
+彝>I;
+彡>San;
+形>Kei;
+彦>Gen;
+彩>Sai;
+彪>Hyou;
+彫>Chou;
+彬>Hin;
+彭>Hou;
+彰>Shou;
+影>Ei;
+彳>Teki;
+彷>Hou;
+役>Yaku;
+彼>Hi;
+彿>Futsu;
+往>Ou;
+征>Sei;
+徂>So;
+徃>Ou;
+径>Kei;
+待>Tai;
+徇>Shun;
+很>Kon;
+徊>Kai;
+律>Ritsu;
+後>Go;
+徐>Jo;
+徑>Kei;
+徒>To;
+従>Juu;
+得>Toku;
+徘>Hai;
+徙>Shi;
+從>Juu;
+徠>Rai;
+御>Gyo;
+徨>Kou;
+復>Fuku;
+循>Jun;
+徭>You;
+微>Bi;
+徳>Toku;
+徴>Chou;
+徹>Tetsu;
+徼>Kyou;
+徽>Ki;
+心>Shin;
+必>Hitsu;
+忌>Ki;
+忍>Nin;
+忖>Son;
+志>Shi;
+忘>Bou;
+忙>Bou;
+応>Ou;
+忝>Ten;
+忠>Chuu;
+忤>Go;
+快>Kai;
+忰>Sui;
+忱>Shin;
+念>Nen;
+忸>Jiku;
+忻>Kin;
+忽>Kotsu;
+忿>Fun;
+怎>Shin;
+怏>You;
+怐>Kou;
+怒>Do;
+怕>Ha;
+怖>Fu;
+怙>Ko;
+怛>Datsu;
+怜>Rei;
+思>Shi;
+怠>Tai;
+怡>I;
+急>Kyuu;
+怦>Hou;
+性>Sei;
+怨>En;
+怩>Ji;
+怪>Kai;
+怫>Futsu;
+怯>Kyou;
+怱>Sou;
+恁>In;
+恂>Jun;
+恃>Ji;
+恆>Kou;
+恊>Kyou;
+恋>Ren;
+恍>Kou;
+恐>Kyou;
+恒>Kou;
+恕>Jo;
+恙>You;
+恚>I;
+恟>Kyou;
+恠>Kai;
+恢>Kai;
+恣>Shi;
+恤>Jutsu;
+恥>Chi;
+恨>Kon;
+恩>On;
+恪>Kaku;
+恫>Dou;
+恬>Ten;
+恭>Kyou;
+息>Soku;
+恰>Kou;
+恵>Kei;
+恷>Kyuu;
+悁>En;
+悃>Kon;
+悄>Shou;
+悉>Shitsu;
+悋>Rin;
+悌>Tei;
+悍>Kan;
+悒>Yuu;
+悔>Kai;
+悖>Hai;
+悗>Ban;
+悚>Shou;
+悛>Sen;
+悟>Go;
+悠>Yuu;
+患>Kan;
+悦>Etsu;
+悧>Ri;
+悩>Nou;
+悪>Aku;
+悲>Hi;
+悳>Toku;
+悴>Sui;
+悵>Chou;
+悶>Mon;
+悸>Ki;
+悼>Tou;
+悽>Sei;
+情>Jou;
+惆>Chuu;
+惇>Ton;
+惑>Waku;
+惓>Ken;
+惘>Bou;
+惚>Kotsu;
+惜>Seki;
+惟>I;
+惠>Kei;
+惡>O;
+惣>Sou;
+惧>Ku;
+惨>San;
+惰>Da;
+惱>Nou;
+想>Sou;
+惴>Zui;
+惶>Kou;
+惷>Shun;
+惹>Ja;
+惺>Sei;
+惻>Soku;
+愀>Shou;
+愁>Shuu;
+愃>Ken;
+愆>Ken;
+愈>Yu;
+愉>Yu;
+愍>Bin;
+愎>Hyoku;
+意>I;
+愕>Gaku;
+愚>Gu;
+愛>Ai;
+感>Kan;
+愡>Sou;
+愧>Ki;
+愨>Kaku;
+愬>So;
+愴>Sou;
+愼>Shin;
+愽>Haku;
+愾>Ki;
+愿>Gen;
+慂>You;
+慄>Ritsu;
+慇>In;
+慈>Ji;
+慊>Ken;
+態>Tai;
+慌>Kou;
+慍>Un;
+慎>Shin;
+慓>Hyou;
+慕>Bo;
+慘>San;
+慙>Zan;
+慚>Zan;
+慝>Toku;
+慟>Dou;
+慢>Man;
+慣>Kan;
+慥>Zou;
+慧>Kei;
+慨>Gai;
+慫>Shou;
+慮>Ryo;
+慯>Shou;
+慰>I;
+慱>Tan;
+慳>Kan;
+慴>Shou;
+慵>You;
+慶>Kei;
+慷>Kou;
+慾>Yoku;
+憂>Yuu;
+憇>Kei;
+憊>Hai;
+憎>Zou;
+憐>Ren;
+憑>Hyou;
+憔>Shou;
+憖>Gin;
+憙>Ki;
+憚>Tan;
+憤>Fun;
+憧>Dou;
+憩>Kei;
+憫>Bin;
+憬>Kei;
+憮>Bu;
+憲>Ken;
+憶>Oku;
+憺>Tan;
+憾>Kan;
+懃>Kin;
+懆>Sou;
+懇>Kon;
+懈>Kai;
+應>You;
+懊>Ou;
+懋>Bou;
+懌>Eki;
+懍>Rin;
+懐>Kai;
+懣>Mon;
+懦>Da;
+懲>Chou;
+懴>Zan;
+懶>Ran;
+懷>Kai;
+懸>Ken;
+懺>Zan;
+懼>Ku;
+懽>Kan;
+懾>Shou;
+懿>I;
+戀>Ren;
+戈>Ka;
+戉>Etsu;
+戊>Bo;
+戌>Jutsu;
+戍>Ju;
+戎>Juu;
+成>Sei;
+我>Ga;
+戒>Kai;
+戔>San;
+或>Waku;
+戚>Seki;
+戛>Katsu;
+戝>Zoku;
+戞>Katsu;
+戟>Geki;
+戡>Kan;
+戦>Sen;
+截>Setsu;
+戮>Riku;
+戯>Gi;
+戰>Sen;
+戲>Gi;
+戳>Taku;
+戴>Tai;
+戸>Ko;
+戻>Rei;
+房>Bou;
+所>Sho;
+扁>Hen;
+扇>Sen;
+扈>Ko;
+扉>Hi;
+手>Shu;
+才>Sai;
+扎>Satsu;
+打>Da;
+払>Futsu;
+托>Taku;
+扛>Kou;
+扞>Kan;
+扠>Sa;
+扣>Kou;
+扮>Fun;
+扱>Sou;
+扶>Fu;
+批>Hi;
+扼>Aku;
+找>Ka;
+承>Shou;
+技>Gi;
+抂>Kyou;
+抃>Ben;
+抄>Shou;
+抉>Ketsu;
+把>Ha;
+抑>Yoku;
+抒>Jo;
+抓>Sou;
+抔>Hou;
+投>Tou;
+抖>Tou;
+抗>Kou;
+折>Setsu;
+抛>Hou;
+抜>Batsu;
+択>Taku;
+披>Hi;
+抬>Tai;
+抱>Hou;
+抵>Tei;
+抹>Matsu;
+抻>Shin;
+押>Ou;
+抽>Chuu;
+拂>Futsu;
+担>Tan;
+拆>Taku;
+拇>Bo;
+拈>Den;
+拉>Ratsu;
+拊>Fu;
+拌>Han;
+拍>Haku;
+拏>Da;
+拐>Kai;
+拑>Kan;
+拒>Kyo;
+拓>Taku;
+拔>Batsu;
+拗>Ou;
+拘>Kou;
+拙>Setsu;
+招>Shou;
+拜>Hai;
+拝>Hai;
+拠>Kyo;
+拡>Kaku;
+括>Katsu;
+拭>Shiki;
+拮>Kitsu;
+拯>Jou;
+拱>Kyou;
+拳>Ken;
+拵>Son;
+拶>Satsu;
+拷>Gou;
+拾>Shuu;
+拿>Da;
+持>Ji;
+挂>Kei;
+指>Shi;
+挈>Ketsu;
+按>An;
+挌>Kaku;
+挑>Chou;
+挙>Kyo;
+挟>Kyou;
+挧>Ku;
+挨>Ai;
+挫>Za;
+振>Shin;
+挺>Tei;
+挽>Ban;
+挾>Kyou;
+挿>Sou;
+捉>Soku;
+捌>Hatsu;
+捍>Kan;
+捏>Detsu;
+捐>En;
+捕>Ho;
+捗>Ho;
+捜>Sou;
+捧>Hou;
+捨>Sha;
+捩>Retsu;
+捫>Mon;
+据>Kyo;
+捲>Ken;
+捶>Sui;
+捷>Shou;
+捺>Natsu;
+捻>Nen;
+掀>Kin;
+掃>Sou;
+授>Ju;
+掉>Tou;
+掌>Shou;
+掎>Ki;
+掏>Tou;
+排>Hai;
+掖>Eki;
+掘>Kutsu;
+掛>Ka;
+掟>Tou;
+掠>Ryaku;
+採>Sai;
+探>Tan;
+掣>Sei;
+接>Setsu;
+控>Kou;
+推>Sui;
+掩>En;
+措>So;
+掫>Sou;
+掬>Kiku;
+掲>Kei;
+掴>Kaku;
+掻>Sou;
+掾>En;
+揀>Kan;
+揃>Sen;
+揄>Yu;
+揆>Ki;
+揉>Juu;
+描>Byou;
+提>Tei;
+插>Sou;
+揖>Yuu;
+揚>You;
+換>Kan;
+握>Aku;
+揣>Shi;
+揩>Kai;
+揮>Ki;
+援>En;
+揶>Ya;
+揺>You;
+搆>Kou;
+損>Son;
+搏>Haku;
+搓>Sa;
+搖>You;
+搗>Tou;
+搜>Sou;
+搦>Jaku;
+搨>Tou;
+搬>Han;
+搭>Tou;
+搴>Ken;
+搶>Shou;
+携>Kei;
+搾>Saku;
+摂>Setsu;
+摎>Kyuu;
+摘>Teki;
+摧>Sai;
+摩>Ma;
+摯>Shi;
+摶>Tan;
+摸>Mo;
+摺>Shou;
+撃>Geki;
+撈>Rou;
+撒>San;
+撓>Dou;
+撕>Sei;
+撚>Nen;
+撞>Shu;
+撤>Tetsu;
+撥>Hatsu;
+撩>Ryou;
+撫>Bu;
+播>Ha;
+撮>Satsu;
+撰>San;
+撲>Boku;
+撹>Kaku;
+撻>Tachi;
+撼>Kan;
+擁>You;
+擂>Rai;
+擅>Sen;
+擇>Taku;
+操>Sou;
+擒>Kin;
+擔>Tan;
+擘>Haku;
+據>Kyo;
+擠>Sei;
+擡>Tai;
+擢>Teki;
+擣>Tou;
+擦>Satsu;
+擧>Kyo;
+擬>Gi;
+擯>Hin;
+擱>Kaku;
+擲>Teki;
+擴>Kaku;
+擶>Sen;
+擺>Hai;
+擽>Ryaku;
+擾>Jou;
+攀>Han;
+攅>San;
+攘>Jou;
+攜>Kei;
+攝>Setsu;
+攣>Ren;
+攤>Tan;
+攪>Kaku;
+攫>Kaku;
+攬>Ran;
+支>Shi;
+攴>Hoku;
+攵>Boku;
+收>Shuu;
+攷>Kou;
+攸>Yuu;
+改>Kai;
+攻>Kou;
+放>Hou;
+政>Sei;
+故>Ko;
+效>Kou;
+敍>Jo;
+敏>Bin;
+救>Kyuu;
+敕>Choku;
+敖>Gou;
+敗>Hai;
+敘>Jo;
+教>Kyou;
+敝>Hei;
+敞>Shou;
+敢>Kan;
+散>San;
+敦>Ton;
+敬>Kei;
+数>Suu;
+敲>Kou;
+整>Sei;
+敵>Teki;
+敷>Fu;
+數>Suu;
+斂>Ren;
+斃>Hei;
+文>Bun;
+斈>Gaku;
+斉>Sei;
+斌>Hin;
+斎>Sai;
+斐>Hi;
+斑>Han;
+斗>To;
+料>Ryou;
+斛>Koku;
+斜>Sha;
+斟>Shin;
+斡>Atsu;
+斤>Kin;
+斥>Seki;
+斧>Fu;
+斫>Shaku;
+斬>Zan;
+断>Dan;
+斯>Shi;
+新>Shin;
+斷>Dan;
+方>Hou;
+於>O;
+施>Shi;
+旁>Hou;
+旃>Sen;
+旄>Bou;
+旅>Ryo;
+旆>Hai;
+旋>Sen;
+旌>Sei;
+族>Zoku;
+旒>Ryuu;
+旗>Ki;
+旙>Han;
+旛>Han;
+无>Bu;
+旡>Ki;
+既>Ki;
+日>Nichi;
+旦>Tan;
+旧>Kyuu;
+旨>Shi;
+早>Sou;
+旬>Jun;
+旭>Kyoku;
+旱>Kan;
+旺>Ou;
+旻>Bin;
+昂>Kou;
+昃>Soku;
+昆>Kon;
+昇>Shou;
+昊>Kou;
+昌>Shou;
+明>Mei;
+昏>Kon;
+易>Eki;
+昔>Seki;
+昜>You;
+星>Sei;
+映>Ei;
+春>Shun;
+昧>Mai;
+昨>Saku;
+昭>Shou;
+是>Ze;
+昴>Bou;
+昵>Jitsu;
+昶>Chou;
+昼>Chuu;
+昿>Kou;
+晁>Chou;
+時>Ji;
+晃>Kou;
+晄>Kou;
+晉>Shin;
+晋>Shin;
+晏>An;
+晒>Sai;
+晝>Chuu;
+晞>Ki;
+晟>Sei;
+晢>Setsu;
+晤>Go;
+晦>Kai;
+晧>Kou;
+晨>Shin;
+晩>Ban;
+普>Fu;
+景>Kei;
+晰>Seki;
+晴>Sei;
+晶>Shou;
+智>Chi;
+暁>Gyou;
+暃>Hi;
+暄>Ken;
+暇>Ka;
+暈>Un;
+暉>Ki;
+暎>Ei;
+暑>Sho;
+暖>Dan;
+暗>An;
+暘>You;
+暝>Mei;
+暢>Chou;
+暦>Reki;
+暫>Zan;
+暮>Bo;
+暴>Bou;
+暸>Ryou;
+暹>Sen;
+暼>Hetsu;
+暾>Ton;
+曁>Ki;
+曄>You;
+曇>Don;
+曉>Gyou;
+曖>Ai;
+曙>Sho;
+曚>Bou;
+曜>You;
+曝>Baku;
+曠>Kou;
+曦>Gi;
+曩>Dou;
+曰>Etsu;
+曲>Kyoku;
+曳>Ei;
+更>Kou;
+曵>Ei;
+曷>Katsu;
+書>Sho;
+曹>Sou;
+曼>Ban;
+曽>Zo;
+曾>So;
+替>Tai;
+最>Sai;
+會>Kai;
+月>Getsu;
+有>Yuu;
+朋>Hou;
+服>Fuku;
+朏>Hi;
+朔>Saku;
+朕>Chin;
+朖>Rou;
+朗>Rou;
+望>Bou;
+朝>Chou;
+朞>Ki;
+期>Ki;
+朦>Bou;
+朧>Rou;
+木>Boku;
+未>Mi;
+末>Matsu;
+本>Hon;
+札>Satsu;
+朮>Jutsu;
+朱>Shu;
+朴>Boku;
+朶>Da;
+朷>Tou;
+朸>Ryoku;
+机>Ki;
+朽>Kyuu;
+朿>Shi;
+杆>Kan;
+杉>San;
+李>Ri;
+杏>Kyou;
+材>Zai;
+村>Son;
+杓>Hyou;
+杖>Jou;
+杙>Yoku;
+杜>Do;
+杞>Ko;
+束>Soku;
+杠>Kou;
+条>Jou;
+来>Rai;
+杪>Byou;
+杭>Kou;
+杯>Hai;
+杰>Ketsu;
+東>Tou;
+杲>Kou;
+杳>You;
+杵>Sho;
+杷>Ha;
+杼>Cho;
+松>Shou;
+板>Han;
+枅>Kei;
+枇>Hi;
+枉>Ou;
+枋>Hou;
+枌>Fun;
+析>Seki;
+枕>Chin;
+林>Rin;
+枚>Mai;
+果>Ka;
+枝>Shi;
+枢>Suu;
+枦>Ro;
+枩>Shou;
+枯>Ko;
+枳>Ki;
+枴>Kai;
+架>Ka;
+枷>Ka;
+枸>Ku;
+枹>Hou;
+柁>Ta;
+柄>Hei;
+柆>Rou;
+柊>Shuu;
+柎>Fu;
+柏>Haku;
+某>Bou;
+柑>Kan;
+染>Sen;
+柔>Nyuu;
+柘>Sha;
+柚>Yuu;
+柝>Taku;
+柞>Saku;
+柢>Tei;
+柤>Sa;
+柧>Ko;
+柩>Kyuu;
+柬>Kan;
+柮>Totsu;
+柯>Ka;
+柱>Chuu;
+柳>Ryuu;
+柴>Sai;
+柵>Saku;
+査>Sa;
+柾>Kyuu;
+柿>Shi;
+栄>Ei;
+栓>Sen;
+栖>Sei;
+栗>Ritsu;
+栞>Kan;
+校>Kou;
+栢>Haku;
+栩>Ku;
+株>Chu;
+栫>Son;
+栲>Gou;
+栴>Sen;
+核>Kaku;
+根>Kon;
+格>Kou;
+栽>Sai;
+桀>Ketsu;
+桁>Kou;
+桂>Kei;
+桃>Tou;
+框>Kyou;
+案>An;
+桍>Ko;
+桎>Shitsu;
+桐>Dou;
+桑>Sou;
+桓>Kan;
+桔>Kitsu;
+桙>U;
+桜>Ou;
+桟>San;
+档>Tou;
+桧>Kai;
+桴>Fu;
+桶>Tou;
+桷>Kaku;
+桾>Kun;
+桿>Kan;
+梁>Ryou;
+梃>Tei;
+梅>Bai;
+梍>Sou;
+梏>Koku;
+梓>Shi;
+梔>Shi;
+梗>Kou;
+梛>Da;
+條>Jou;
+梟>Kyou;
+梠>Ryo;
+梢>Shou;
+梦>Mu;
+梧>Go;
+梨>Ri;
+梭>Sa;
+梯>Tei;
+械>Kai;
+梱>Kon;
+梳>So;
+梵>Fuu;
+梶>Bi;
+梹>Bin;
+梼>Tou;
+棄>Ki;
+棆>Rin;
+棉>Men;
+棊>Ki;
+棋>Ki;
+棍>Kon;
+棒>Bou;
+棔>Kon;
+棕>Shu;
+棗>Sou;
+棘>Kyoku;
+棚>Hou;
+棟>Tou;
+棠>Tou;
+棡>Kou;
+棣>Tei;
+棧>San;
+森>Shin;
+棯>Jin;
+棲>Sei;
+棹>Tou;
+棺>Kan;
+椀>Wan;
+椁>Kaku;
+椄>Setsu;
+椅>I;
+椈>Kiku;
+椋>Ryou;
+椌>Kou;
+植>Shoku;
+椎>Tsui;
+椏>A;
+椒>Shou;
+検>Ken;
+椢>Kai;
+椦>Ken;
+椰>Ya;
+椴>Tan;
+椶>Shu;
+椹>Chin;
+椽>Ten;
+椿>Chin;
+楊>You;
+楓>Fuu;
+楔>Setsu;
+楕>Da;
+楙>Bou;
+楚>So;
+楜>Ko;
+楝>Ren;
+楞>Rou;
+楠>Nan;
+楡>Yu;
+楢>Shuu;
+楪>You;
+楫>Shuu;
+業>Gyou;
+楮>Cho;
+楯>Jun;
+楳>Bai;
+楴>Tei;
+極>Goku;
+楷>Kai;
+楸>Shuu;
+楹>Ei;
+楼>Rou;
+楽>Gaku;
+概>Gai;
+榎>Ka;
+榑>Fu;
+榔>Rou;
+榕>You;
+榛>Shin;
+榜>Bou;
+榠>Bei;
+榧>Hi;
+榮>Ei;
+榱>Sui;
+榲>Otsu;
+榴>Ryuu;
+榻>Tou;
+榾>Kotsu;
+榿>Ki;
+槁>Kou;
+槃>Han;
+槇>Ten;
+槊>Saku;
+構>Kou;
+槌>Tsui;
+槍>Sou;
+槎>Sa;
+槐>Kai;
+槓>Kou;
+様>You;
+槙>Ten;
+槝>Tou;
+槞>Rou;
+槧>San;
+槨>Kaku;
+槫>Tan;
+槭>Shuku;
+槲>Koku;
+槹>Kou;
+槻>Ki;
+槽>Sou;
+槿>Kin;
+樂>Gaku;
+樅>Shou;
+樊>Han;
+樋>Tou;
+樌>Kan;
+樒>Mitsu;
+樓>Rou;
+樔>Sou;
+樗>Cho;
+標>Hyou;
+樛>Kyuu;
+樞>Suu;
+樟>Shou;
+模>Mo;
+樢>Boku;
+樣>You;
+権>Ken;
+横>Ou;
+樵>Shou;
+樶>Sai;
+樸>Boku;
+樹>Ju;
+樺>Ka;
+樽>Son;
+橄>Kan;
+橇>Zei;
+橈>Dou;
+橋>Kyou;
+橘>Kitsu;
+橙>Tou;
+機>Ki;
+橡>Shou;
+橢>Da;
+橦>Tou;
+橸>Shou;
+橿>Kyou;
+檀>Tan;
+檄>Geki;
+檍>Yoku;
+檎>Go;
+檐>En;
+檗>Haku;
+檜>Kai;
+檠>Kei;
+檢>Ken;
+檣>Shou;
+檪>Reki;
+檬>Bou;
+檮>Tou;
+檳>Bin;
+檸>Nei;
+檻>Kan;
+櫁>Mitsu;
+櫂>Tou;
+櫃>Ki;
+櫑>Rai;
+櫓>Ro;
+櫚>Ryo;
+櫛>Shitsu;
+櫞>En;
+櫟>Reki;
+櫨>Ro;
+櫪>Reki;
+櫺>Rei;
+櫻>Ou;
+欄>Ran;
+欅>Kyo;
+權>Ken;
+欒>Ran;
+欖>Ran;
+欝>Utsu;
+欠>Ketsu;
+次>Ji;
+欣>Gon;
+欧>Ou;
+欲>Yoku;
+欷>Ki;
+欸>Ai;
+欹>I;
+欺>Gi;
+欽>Kin;
+款>Kan;
+歃>Sou;
+歇>Ketsu;
+歉>Ken;
+歌>Ka;
+歎>Tan;
+歐>Ou;
+歓>Kan;
+歔>Kyo;
+歙>Kyuu;
+歛>Kan;
+歟>Yo;
+歡>Kan;
+止>Shi;
+正>Sei;
+此>Shi;
+武>Bu;
+歩>Ho;
+歪>Wai;
+歯>Shi;
+歳>Sei;
+歴>Reki;
+歸>Ki;
+歹>Gatsu;
+死>Shi;
+歿>Botsu;
+殀>You;
+殃>You;
+殄>Ten;
+殆>Tai;
+殉>Jun;
+殊>Shu;
+残>Zan;
+殍>Hyou;
+殕>Fuu;
+殖>Shoku;
+殘>Zan;
+殞>In;
+殤>Shou;
+殪>Ei;
+殫>Tan;
+殯>Hin;
+殱>Sen;
+殲>Sen;
+殳>Shu;
+殴>Ou;
+段>Dan;
+殷>In;
+殺>Satsu;
+殻>Kaku;
+殼>Kaku;
+殿>Ten;
+毀>Ki;
+毅>Ki;
+毆>Ou;
+毋>Bu;
+母>Bo;
+毎>Mai;
+毒>Doku;
+毓>Iku;
+比>Hi;
+毘>Hi;
+毛>Mou;
+毫>Kou;
+毬>Kyuu;
+毯>Tan;
+毳>Zei;
+氈>Sen;
+氏>Shi;
+民>Min;
+氓>Bou;
+气>Ki;
+気>Ki;
+氛>Fun;
+氣>Ki;
+氤>In;
+水>Sui;
+氷>Hyou;
+永>Ei;
+氾>Han;
+汀>Tei;
+汁>Juu;
+求>Kyuu;
+汎>Han;
+汐>Seki;
+汕>San;
+汗>Kan;
+汚>O;
+汝>Jo;
+汞>Kou;
+江>Kou;
+池>Chi;
+汨>Beki;
+汪>Ou;
+汰>Ta;
+汲>Kyuu;
+汳>Hen;
+決>Ketsu;
+汽>Ki;
+汾>Fun;
+沁>Shin;
+沂>Ki;
+沃>Yoku;
+沈>Chin;
+沌>Ton;
+沍>Go;
+沐>Boku;
+沒>Botsu;
+沓>Tou;
+沖>Chuu;
+沙>Sa;
+沚>Shi;
+沛>Hai;
+没>Botsu;
+沢>Taku;
+沫>Matsu;
+沮>Sho;
+沱>Ta;
+河>Ka;
+沸>Futsu;
+油>Yu;
+沺>Ten;
+治>Ji;
+沼>Shou;
+沽>Ko;
+沾>Ten;
+沿>En;
+況>Kyou;
+泄>Ei;
+泅>Shuu;
+泉>Sen;
+泊>Haku;
+泌>Hitsu;
+泓>Ou;
+法>Hou;
+泗>Shi;
+泙>Hou;
+泛>Han;
+泝>So;
+泡>Hou;
+波>Ha;
+泣>Kyuu;
+泥>Dei;
+注>Chuu;
+泪>Rui;
+泯>Bin;
+泰>Tai;
+泱>Ou;
+泳>Ei;
+洋>You;
+洌>Retsu;
+洒>Sei;
+洗>Sen;
+洙>Shu;
+洛>Raku;
+洞>Dou;
+洟>I;
+津>Shin;
+洩>Ei;
+洪>Kou;
+洫>Kyoku;
+洲>Shuu;
+洳>Jo;
+洵>Shun;
+洶>Kyou;
+洸>Kou;
+活>Katsu;
+洽>Kou;
+派>Ha;
+流>Ryuu;
+浄>Jou;
+浅>Sen;
+浙>Setsu;
+浚>Shun;
+浜>Hin;
+浣>Kan;
+浤>Kou;
+浦>Ho;
+浩>Kou;
+浪>Rou;
+浬>Ri;
+浮>Fu;
+浴>Yoku;
+海>Kai;
+浸>Shin;
+浹>Shou;
+涅>Netsu;
+消>Shou;
+涌>Yuu;
+涎>Sen;
+涓>Ken;
+涕>Tei;
+涙>Rui;
+涛>Tou;
+涜>Toku;
+涯>Gai;
+液>Eki;
+涵>Kan;
+涸>Ko;
+涼>Ryou;
+淀>Ten;
+淅>Seki;
+淆>Kou;
+淇>Ki;
+淋>Rin;
+淌>Shou;
+淑>Shuku;
+淒>Sei;
+淕>Riku;
+淘>Tou;
+淙>Sou;
+淞>Shou;
+淡>Tan;
+淤>Yo;
+淦>Kan;
+淨>Jou;
+淪>Rin;
+淫>In;
+淬>Sai;
+淮>Wai;
+深>Shin;
+淳>Shun;
+淵>En;
+混>Kon;
+淹>En;
+淺>Sen;
+添>Ten;
+清>Sei;
+渇>Katsu;
+済>Sai;
+渉>Shou;
+渊>En;
+渋>Juu;
+渓>Kei;
+渕>En;
+渙>Kan;
+渚>Sho;
+減>Gen;
+渝>Yu;
+渟>Tei;
+渠>Kyo;
+渡>To;
+渣>Sa;
+渤>Botsu;
+渥>Aku;
+渦>Ka;
+温>On;
+渫>Setsu;
+測>Soku;
+渭>I;
+渮>Ka;
+港>Kou;
+游>Yuu;
+渺>Byou;
+渾>Kon;
+湃>Hai;
+湊>Sou;
+湍>Tan;
+湎>Ben;
+湖>Ko;
+湘>Shou;
+湛>Tan;
+湟>Kou;
+湧>Yuu;
+湫>Shou;
+湮>In;
+湯>Tou;
+湲>Kan;
+湶>Sen;
+湾>Wan;
+湿>Shitsu;
+満>Man;
+溂>Ratsu;
+溌>Hatsu;
+溏>Tou;
+源>Gen;
+準>Jun;
+溘>Kou;
+溜>Ryuu;
+溝>Kou;
+溟>Mei;
+溢>Itsu;
+溥>Ho;
+溪>Kei;
+溯>So;
+溲>Sou;
+溶>You;
+溷>Kon;
+溺>Deki;
+溽>Joku;
+滂>Bou;
+滄>Sou;
+滅>Metsu;
+滉>Kou;
+滋>Ji;
+滌>Deki;
+滑>Katsu;
+滓>Sai;
+滔>Tou;
+滕>Tou;
+滝>Sou;
+滞>Tai;
+滬>Ko;
+滯>Tai;
+滲>Shin;
+滴>Teki;
+滷>Ro;
+滸>Ko;
+滾>Kon;
+滿>Man;
+漁>Ryou;
+漂>Hyou;
+漆>Shitsu;
+漉>Roku;
+漏>Rou;
+漑>Gai;
+漓>Ri;
+演>En;
+漕>Sou;
+漠>Baku;
+漢>Kan;
+漣>Ran;
+漫>Man;
+漬>Shi;
+漱>Sou;
+漲>Chou;
+漸>Zen;
+漾>You;
+漿>Shou;
+潁>Ei;
+潅>Kan;
+潔>Ketsu;
+潘>Han;
+潛>Sen;
+潜>Sen;
+潟>Seki;
+潤>Jun;
+潦>Rou;
+潭>Tan;
+潮>Chou;
+潯>Jin;
+潰>Kai;
+潴>Cho;
+潸>San;
+潺>San;
+潼>Dou;
+澀>Juu;
+澁>Juu;
+澂>Chou;
+澄>Chou;
+澆>Gyou;
+澎>Hou;
+澑>Ryuu;
+澗>Kan;
+澡>Sou;
+澣>Kan;
+澤>Taku;
+澪>Rei;
+澱>Ten;
+澳>Iku;
+澹>Tan;
+激>Geki;
+濁>Daku;
+濂>Ren;
+濃>Nou;
+濆>Fun;
+濔>Dei;
+濕>Shitsu;
+濘>Nei;
+濟>Sai;
+濠>Gou;
+濡>Ju;
+濤>Tou;
+濫>Ran;
+濬>Shun;
+濮>Hoku;
+濯>Taku;
+濱>Hin;
+濳>Sen;
+濶>Katsu;
+濺>Sen;
+濾>Ryo;
+瀁>You;
+瀉>Sha;
+瀋>Shin;
+瀏>Ryuu;
+瀑>Baku;
+瀕>Hin;
+瀘>Ro;
+瀚>Kan;
+瀛>Ei;
+瀝>Reki;
+瀞>Jou;
+瀟>Shou;
+瀦>Cho;
+瀧>Sou;
+瀬>Rai;
+瀰>Bi;
+瀲>Ren;
+瀾>Ran;
+灌>Kan;
+灑>Sai;
+灘>Dan;
+灣>Wan;
+火>Ka;
+灯>Tou;
+灰>Kai;
+灸>Kyuu;
+灼>Shaku;
+災>Sai;
+炉>Ro;
+炊>Sui;
+炎>En;
+炒>Sou;
+炙>Sha;
+炬>Ko;
+炭>Tan;
+炮>Hou;
+炯>Kei;
+炳>Hei;
+炸>Saku;
+点>Ten;
+為>I;
+烈>Retsu;
+烋>Kou;
+烏>U;
+烙>Raku;
+烝>Jou;
+烟>En;
+烱>Kei;
+烹>Hou;
+烽>Hou;
+焉>En;
+焔>En;
+焙>Hou;
+焚>Fun;
+焜>Kon;
+無>Mu;
+焦>Shou;
+然>Zen;
+焼>Shou;
+煉>Ren;
+煌>Kou;
+煎>Sen;
+煕>Ki;
+煖>Dan;
+煙>En;
+煢>Kei;
+煤>Bai;
+煥>Kan;
+煦>Ku;
+照>Shou;
+煩>Han;
+煬>You;
+煮>Sha;
+煽>Sen;
+熄>Soku;
+熈>Ki;
+熊>Yuu;
+熏>Kun;
+熔>You;
+熕>Kou;
+熙>Ki;
+熟>Juku;
+熨>I;
+熬>Gou;
+熱>Netsu;
+熹>Ki;
+熾>Shi;
+燃>Nen;
+燈>Tou;
+燉>Ton;
+燎>Ryou;
+燐>Rin;
+燒>Shou;
+燔>Han;
+燕>En;
+燗>Ran;
+營>Ei;
+燠>Iku;
+燥>Sou;
+燦>San;
+燧>Sui;
+燬>Ki;
+燭>Shoku;
+燮>Shou;
+燵>Tatsu;
+燹>Sen;
+燻>Kun;
+燼>Jin;
+燿>You;
+爆>Baku;
+爍>Shaku;
+爐>Ro;
+爛>Ran;
+爨>San;
+爪>Sou;
+爬>Ha;
+爭>Sou;
+爰>En;
+爲>I;
+爵>Shaku;
+父>Fu;
+爺>Ya;
+爻>Kou;
+爼>Sho;
+爽>Sou;
+爾>Ji;
+爿>Shou;
+牀>Sou;
+牆>Shou;
+片>Hen;
+版>Han;
+牋>Sen;
+牌>Hai;
+牒>Chou;
+牘>Toku;
+牙>Ga;
+牛>Gyuu;
+牝>Hin;
+牟>Bou;
+牡>Bo;
+牢>Rou;
+牧>Boku;
+物>Motsu;
+牲>Sei;
+牴>Tei;
+特>Toku;
+牽>Ken;
+牾>Go;
+犀>Sei;
+犁>Ri;
+犂>Ri;
+犇>Hon;
+犒>Kou;
+犖>Raku;
+犠>Gi;
+犢>Toku;
+犧>Gi;
+犬>Ken;
+犯>Han;
+犲>Sai;
+状>Jou;
+犹>Yuu;
+狂>Kyou;
+狃>Juu;
+狄>Teki;
+狆>Chuu;
+狎>Kou;
+狐>Ko;
+狒>Hi;
+狗>Kou;
+狙>Sho;
+狛>Haku;
+狠>Gan;
+狡>Kou;
+狢>Kaku;
+狩>Shu;
+独>Doku;
+狭>Kyou;
+狷>Ken;
+狸>Ri;
+狹>Kyou;
+狼>Rou;
+狽>Hai;
+猊>Gei;
+猖>Shou;
+猗>I;
+猛>Mou;
+猜>Sai;
+猝>Sotsu;
+猟>Ryou;
+猥>Wai;
+猩>Sei;
+猪>Cho;
+猫>Byou;
+献>Ken;
+猯>Tan;
+猴>Kou;
+猶>Yuu;
+猷>Yuu;
+猾>Katsu;
+猿>En;
+獄>Goku;
+獅>Shi;
+獎>Shou;
+獏>Baku;
+獗>Ketsu;
+獣>Juu;
+獨>Doku;
+獪>Kai;
+獰>Dou;
+獲>Kaku;
+獵>Ryou;
+獸>Juu;
+獺>Datsu;
+獻>Ken;
+玄>Gen;
+率>Ritsu;
+玉>Gyoku;
+王>Ou;
+玖>Kyuu;
+玩>Gan;
+玲>Rei;
+玳>Tai;
+玻>Ha;
+珀>Haku;
+珂>Ka;
+珈>Ka;
+珊>San;
+珍>Chin;
+珎>Chin;
+珞>Raku;
+珠>Shu;
+珥>Ji;
+珪>Kei;
+班>Han;
+珮>Hai;
+珱>Ei;
+珸>Go;
+現>Gen;
+球>Kyuu;
+琅>Rou;
+理>Ri;
+琉>Ryuu;
+琢>Taku;
+琥>Ko;
+琲>Hai;
+琳>Rin;
+琴>Kin;
+琵>Bi;
+琶>Ha;
+琺>Hou;
+琿>Kon;
+瑁>Bou;
+瑕>Ka;
+瑙>Dou;
+瑚>Ko;
+瑛>Ei;
+瑜>Yu;
+瑞>Zui;
+瑟>Shitsu;
+瑠>Ryuu;
+瑣>Sa;
+瑤>You;
+瑩>Ei;
+瑪>Ba;
+瑯>Rou;
+瑰>Kai;
+瑳>Sa;
+瑶>You;
+瑾>Kin;
+璃>Ri;
+璋>Shou;
+璞>Haku;
+璢>Ryuu;
+璧>Heki;
+環>Kan;
+璽>Ji;
+瓊>Kei;
+瓏>Rou;
+瓔>Ei;
+瓜>Ka;
+瓠>Ko;
+瓢>Hyou;
+瓣>Ben;
+瓦>Ga;
+瓮>Ou;
+瓶>Hei;
+瓷>Shi;
+甃>Shuu;
+甄>Ken;
+甌>Ou;
+甍>Bou;
+甎>Sen;
+甑>Sou;
+甓>Heki;
+甕>Ou;
+甘>Kan;
+甚>Shin;
+甜>Ten;
+甞>Shou;
+生>Sei;
+産>San;
+甥>Sei;
+甦>So;
+用>You;
+甫>Ho;
+甬>You;
+田>Den;
+由>Yuu;
+甲>Kou;
+申>Shin;
+男>Dan;
+甸>Ten;
+町>Chou;
+画>Ga;
+甼>Chou;
+畄>Ryuu;
+畆>Ho;
+畉>Fu;
+畊>Kou;
+畋>Ten;
+界>Kai;
+畍>Kai;
+畏>I;
+畔>Han;
+留>Ryuu;
+畚>Hon;
+畛>Shin;
+畜>Chiku;
+畝>Ho;
+畢>Hitsu;
+畤>Shi;
+略>Ryaku;
+畦>Kei;
+畧>Ryaku;
+番>Ban;
+畫>Kaku;
+畭>Yo;
+異>I;
+畳>Jou;
+畴>Chuu;
+當>Tou;
+畷>Tetsu;
+畸>Ki;
+畿>Ki;
+疂>Jou;
+疆>Kyou;
+疇>Chuu;
+疉>Jou;
+疊>Jou;
+疋>So;
+疎>So;
+疏>So;
+疑>Gi;
+疔>Chou;
+疚>Kyuu;
+疝>San;
+疣>Yuu;
+疥>Kai;
+疫>Eki;
+疱>Hou;
+疲>Hi;
+疳>Kan;
+疵>Shi;
+疸>Tan;
+疹>Shin;
+疼>Tou;
+疽>Sho;
+疾>Shitsu;
+痂>Ka;
+痃>Ken;
+病>Byou;
+症>Shou;
+痊>Sen;
+痍>I;
+痒>You;
+痔>Ji;
+痕>Kon;
+痘>Tou;
+痙>Kei;
+痛>Ts;
+痞>Hi;
+痢>Ri;
+痣>Shi;
+痩>Sou;
+痰>Tan;
+痲>Ma;
+痳>Rin;
+痴>Chi;
+痺>Hi;
+痼>Ko;
+痾>A;
+痿>I;
+瘁>Sui;
+瘉>Yu;
+瘋>Fuu;
+瘍>You;
+瘟>On;
+瘠>Seki;
+瘡>Sou;
+瘢>Han;
+瘤>Ryuu;
+瘧>Gyaku;
+瘰>Rui;
+瘴>Shou;
+瘻>Rou;
+療>Ryou;
+癆>Rou;
+癇>Kan;
+癈>Hai;
+癌>Gan;
+癒>Yu;
+癖>Heki;
+癘>Rei;
+癜>Den;
+癡>Chi;
+癢>You;
+癧>Reki;
+癨>Kaku;
+癩>Rai;
+癪>Shaku;
+癬>Sen;
+癰>You;
+癲>Ten;
+癶>Hatsu;
+癸>Ki;
+発>Hotsu;
+登>Tou;
+發>Hotsu;
+白>Haku;
+百>Hyaku;
+皀>Hyuu;
+皃>Bou;
+的>Teki;
+皆>Kai;
+皇>Kou;
+皈>Ki;
+皋>Kou;
+皎>Kou;
+皐>Kou;
+皓>Kou;
+皖>Kan;
+皙>Seki;
+皚>Gai;
+皮>Hi;
+皰>Hou;
+皴>Shun;
+皷>Ko;
+皸>Kun;
+皹>Kun;
+皺>Suu;
+皿>Bai;
+盂>U;
+盃>Hai;
+盆>Bon;
+盈>Ei;
+益>Eki;
+盍>Kou;
+盒>Kou;
+盖>Gai;
+盗>Tou;
+盛>Sei;
+盜>Tou;
+盞>San;
+盟>Mei;
+盡>Jin;
+監>Kan;
+盤>Ban;
+盥>Kan;
+盧>Ro;
+盪>Tou;
+目>Moku;
+盲>Mou;
+直>Choku;
+相>Shou;
+盻>Kei;
+盾>Jun;
+省>Sei;
+眄>Ben;
+眇>Byou;
+眈>Tan;
+眉>Bi;
+看>Kan;
+県>Ken;
+眛>Mai;
+眞>Shin;
+真>Shin;
+眠>Min;
+眤>Tei;
+眥>Sei;
+眦>Sei;
+眩>Gen;
+眷>Ken;
+眸>Bou;
+眺>Chou;
+眼>Gan;
+着>Chaku;
+睇>Tei;
+睚>Gai;
+睛>Sei;
+睡>Sui;
+督>Toku;
+睥>Hei;
+睦>Boku;
+睨>Gei;
+睫>Shou;
+睹>To;
+睾>Kou;
+睿>Ei;
+瞋>Shin;
+瞎>Katsu;
+瞑>Mei;
+瞞>Ban;
+瞠>Dou;
+瞥>Betsu;
+瞬>Shun;
+瞭>Ryou;
+瞰>Kan;
+瞳>Dou;
+瞶>Ki;
+瞹>Ai;
+瞻>Sen;
+瞼>Ken;
+瞽>Ko;
+瞿>Ku;
+矇>Mou;
+矍>Kaku;
+矗>Chiku;
+矚>Shoku;
+矛>Mu;
+矜>Kin;
+矢>Shi;
+矣>I;
+知>Chi;
+矧>Shin;
+矩>Ku;
+短>Tan;
+矮>Wai;
+矯>Kyou;
+石>Shaku;
+矼>Kou;
+砂>Sa;
+砌>Sei;
+砒>Hi;
+研>Ken;
+砕>Sai;
+砠>Sho;
+砥>Shi;
+砦>Sai;
+砧>Chin;
+砲>Hou;
+破>Ha;
+砺>Rei;
+砿>Kou;
+硅>Kei;
+硝>Shou;
+硫>Ryuu;
+硬>Kou;
+硯>Ken;
+硼>Hou;
+碁>Go;
+碆>Ha;
+碇>Tei;
+碌>Roku;
+碍>Gai;
+碎>Sai;
+碑>Hi;
+碓>Tai;
+碕>Ki;
+碗>Wan;
+碚>Hai;
+碣>Ketsu;
+碧>Heki;
+碩>Seki;
+碪>Chin;
+碯>Dou;
+碵>Seki;
+確>Kaku;
+碼>Ba;
+碾>Ten;
+磁>Ji;
+磅>Hou;
+磆>Katsu;
+磊>Rai;
+磋>Sa;
+磐>Han;
+磑>Gai;
+磔>Taku;
+磚>Sen;
+磧>Seki;
+磨>Ma;
+磬>Kei;
+磯>Ki;
+磴>Tou;
+磽>Kou;
+礁>Shou;
+礇>Iku;
+礎>So;
+礑>Tou;
+礒>Gi;
+礙>Gai;
+礦>Kou;
+礪>Rei;
+礫>Reki;
+礬>Ban;
+示>Shi;
+礼>Rei;
+社>Sha;
+祀>Shi;
+祁>Ki;
+祇>Ki;
+祈>Ki;
+祉>Shi;
+祐>Yuu;
+祓>Futsu;
+祕>Hi;
+祖>So;
+祗>Shi;
+祚>So;
+祝>Shuku;
+神>Shin;
+祟>Sui;
+祠>Shi;
+祢>Dei;
+祥>Shou;
+票>Hyou;
+祭>Sai;
+祷>Tou;
+祺>Ki;
+祿>Roku;
+禀>Rin;
+禁>Kin;
+禄>Roku;
+禅>Zen;
+禊>Kei;
+禍>Ka;
+禎>Tei;
+福>Fuku;
+禝>Shoku;
+禦>Gyo;
+禧>Ki;
+禪>Zen;
+禮>Rei;
+禰>Dei;
+禳>Jou;
+禹>U;
+禺>Guu;
+禽>Kin;
+禾>Ka;
+禿>Toku;
+秀>Shuu;
+私>Shi;
+秉>Hei;
+秋>Shuu;
+科>Ka;
+秒>Byou;
+秕>Hi;
+秘>Hi;
+租>So;
+秡>Hatsu;
+秣>Matsu;
+秤>Shou;
+秦>Shin;
+秧>Ou;
+秩>Chitsu;
+秬>Kyo;
+称>Shou;
+移>I;
+稀>Ki;
+稈>Kan;
+程>Tei;
+稍>Sou;
+税>Zei;
+稔>Jin;
+稗>Hai;
+稘>Ki;
+稙>Choku;
+稚>Chi;
+稜>Ryou;
+稟>Rin;
+稠>Chuu;
+種>Shu;
+稱>Shou;
+稲>Tou;
+稷>Shoku;
+稻>Tou;
+稼>Ka;
+稽>Kei;
+稾>Kou;
+稿>Kou;
+穀>Koku;
+穂>Sui;
+穃>You;
+穆>Boku;
+穉>Chi;
+積>Seki;
+穎>Ei;
+穏>On;
+穐>Shuu;
+穗>Sui;
+穡>Shoku;
+穢>Ai;
+穣>Jou;
+穩>On;
+穫>Kaku;
+穰>Jou;
+穴>Ketsu;
+究>Kyuu;
+穹>Kyuu;
+空>Kuu;
+穽>Sei;
+穿>Sen;
+突>Totsu;
+窃>Setsu;
+窄>Saku;
+窈>You;
+窒>Chitsu;
+窓>Sou;
+窕>Chou;
+窖>Kou;
+窗>Sou;
+窘>Kin;
+窟>Kutsu;
+窩>Ka;
+窪>Wa;
+窮>Kyuu;
+窯>You;
+窰>You;
+窶>Ku;
+窺>Ki;
+窿>Ryuu;
+竃>Sou;
+竄>Zan;
+竅>Kyou;
+竇>Tou;
+竈>Sou;
+竊>Setsu;
+立>Ritsu;
+竒>Ki;
+站>Tan;
+竚>Cho;
+竜>Ryuu;
+竝>Hei;
+竟>Kei;
+章>Shou;
+竢>Shi;
+竣>Shun;
+童>Dou;
+竦>Shou;
+竪>Ju;
+竭>Ketsu;
+端>Tan;
+競>Kyou;
+竸>Kei;
+竹>Chiku;
+竺>Toku;
+竿>Kan;
+笄>Kei;
+笆>Ha;
+笈>Kyuu;
+笊>Sou;
+笋>Jun;
+笏>Kotsu;
+笑>Shou;
+笘>Sen;
+笙>Sou;
+笛>Teki;
+笞>Chi;
+笠>Ryuu;
+笥>Shi;
+符>Fu;
+笨>Hon;
+第>Dai;
+笳>Ka;
+笵>Han;
+笶>Shi;
+筅>Sen;
+筆>Hitsu;
+筈>Katsu;
+等>Tou;
+筋>Kin;
+筌>Sen;
+筍>Jun;
+筏>Batsu;
+筐>Kyou;
+筑>Chiku;
+筒>Tou;
+答>Tou;
+策>Saku;
+筝>Sou;
+筥>Kyo;
+筧>Ken;
+筬>Sei;
+筮>Sei;
+筰>Saku;
+筱>Shou;
+筴>Kyou;
+筵>En;
+筺>Kyou;
+箆>Hei;
+箇>Ka;
+箋>Sen;
+箍>Ko;
+箏>Sou;
+箒>Sou;
+箔>Haku;
+箕>Ki;
+算>San;
+箘>Kin;
+箙>Fuku;
+箚>Satsu;
+箜>Kou;
+箝>Kan;
+箟>Kin;
+管>Kan;
+箪>Tan;
+箭>Sen;
+箱>Shou;
+箴>Shin;
+箸>Cho;
+節>Setsu;
+篁>Kou;
+範>Han;
+篆>Ten;
+篇>Hen;
+築>Chiku;
+篋>Kyou;
+篌>Kou;
+篏>Kan;
+篝>Kou;
+篠>Shou;
+篤>Toku;
+篥>Ritsu;
+篦>Hei;
+篩>Shi;
+篭>Rou;
+篳>Hitsu;
+篶>En;
+篷>Hou;
+簀>Saku;
+簇>Sou;
+簍>Rou;
+簑>Sa;
+簒>San;
+簓>Sen;
+簔>Sa;
+簟>Ten;
+簡>Kan;
+簣>Ki;
+簧>Kou;
+簪>Shin;
+簫>Shou;
+簷>En;
+簸>Ha;
+簽>Sen;
+簾>Ren;
+簿>Bo;
+籀>Chuu;
+籃>Ran;
+籌>Chuu;
+籍>Seki;
+籐>Tou;
+籔>Su;
+籖>Sen;
+籘>Tou;
+籟>Rai;
+籠>Rou;
+籤>Sen;
+籥>Yaku;
+籬>Ri;
+米>Bei;
+粃>Hi;
+粉>Fun;
+粋>Sui;
+粐>Ro;
+粒>Ryuu;
+粕>Haku;
+粗>So;
+粘>Nen;
+粛>Shuku;
+粟>Zoku;
+粡>Tou;
+粢>Shi;
+粤>Etsu;
+粥>Shuku;
+粧>Shou;
+粫>Ji;
+粮>Ryou;
+粱>Ryou;
+粲>San;
+粳>Kou;
+粹>Sui;
+粽>Sou;
+精>Sei;
+糂>San;
+糅>Juu;
+糊>Ko;
+糒>Hi;
+糖>Tou;
+糜>Bi;
+糞>Fun;
+糟>Sou;
+糠>Kou;
+糢>Bo;
+糧>Ryou;
+糯>Da;
+糲>Rei;
+糴>Teki;
+糶>Chou;
+糸>Shi;
+糺>Kyuu;
+系>Kei;
+糾>Kyuu;
+紀>Ki;
+紂>Chuu;
+約>Yaku;
+紅>Ku;
+紆>U;
+紊>Bin;
+紋>Mon;
+納>Tou;
+紐>Chuu;
+純>Shun;
+紕>Hi;
+紗>Sa;
+紘>Kou;
+紙>Shi;
+級>Kyuu;
+紛>Fun;
+紜>Un;
+素>So;
+紡>Bou;
+索>Saku;
+紫>Shi;
+紬>Chuu;
+紮>Satsu;
+累>Rui;
+細>Sei;
+紲>Setsu;
+紳>Shin;
+紵>Cho;
+紹>Shou;
+紺>Kon;
+紿>Tai;
+終>Shuu;
+絃>Gen;
+組>So;
+絅>Kei;
+絆>Ban;
+絋>Kou;
+経>Kei;
+絎>Kou;
+絏>Setsu;
+結>Ketsu;
+絖>Kou;
+絛>Jou;
+絞>Kou;
+絡>Raku;
+絢>Ken;
+絣>Hou;
+給>Kyuu;
+絨>Juu;
+絮>Jo;
+統>Tou;
+絲>Shi;
+絳>Kou;
+絵>Kai;
+絶>Zetsu;
+絹>Ken;
+絽>Ryo;
+綉>Tou;
+綏>Sui;
+經>Kei;
+継>Kei;
+続>Zoku;
+綜>Sou;
+綟>Rei;
+綢>Chuu;
+綣>Ken;
+綫>Sen;
+綬>Ju;
+維>I;
+綮>Kei;
+綯>Tou;
+綰>Wan;
+綱>Kou;
+網>Mou;
+綴>Tei;
+綵>Sai;
+綸>Rin;
+綺>Ki;
+綻>Tan;
+綽>Shaku;
+綾>Ryou;
+綿>Men;
+緇>Shi;
+緊>Kin;
+緋>Hi;
+総>Sou;
+緑>Ryoku;
+緒>Sho;
+緘>Kan;
+線>Sen;
+緜>Ben;
+緝>Shuu;
+緞>Tan;
+締>Tei;
+緡>Bin;
+緤>Setsu;
+編>Hen;
+緩>Kan;
+緬>Men;
+緯>I;
+緲>Byou;
+練>Ren;
+緻>Chi;
+縁>En;
+縄>Jou;
+縉>Shin;
+縊>Ei;
+縋>Tsui;
+縒>Shi;
+縛>Baku;
+縞>Kou;
+縟>Joku;
+縡>Sai;
+縢>Tou;
+縣>Ken;
+縦>Juu;
+縫>Hou;
+縮>Shuku;
+縱>Juu;
+縲>Rui;
+縵>Ban;
+縷>Ru;
+縹>Hyou;
+縺>Ren;
+縻>Bi;
+總>Sou;
+績>Seki;
+繁>Han;
+繃>Hou;
+繆>Kyuu;
+繊>Sen;
+繋>Kei;
+繍>Shuu;
+織>Shoku;
+繕>Zen;
+繖>San;
+繙>Han;
+繚>Ryou;
+繝>Kan;
+繞>Jou;
+繦>Kyou;
+繧>Un;
+繩>Jou;
+繪>Kai;
+繭>Ken;
+繰>Sou;
+繹>Eki;
+繻>Ju;
+繼>Kei;
+繽>Hin;
+繿>Ran;
+纂>San;
+纈>Ketsu;
+纉>San;
+續>Zoku;
+纎>Sen;
+纏>Ten;
+纒>Ten;
+纓>Ei;
+纔>San;
+纖>Sen;
+纛>Tou;
+纜>Ran;
+缶>Kan;
+缸>Kou;
+缺>Ketsu;
+罅>Ka;
+罌>Ou;
+罍>Rai;
+罎>Tan;
+罐>Kan;
+网>Bou;
+罔>Bou;
+罕>Kan;
+罘>Fu;
+罟>Ko;
+罠>Bin;
+罧>Shin;
+罨>An;
+罩>Tou;
+罪>Zai;
+罫>Kei;
+置>Chi;
+罰>Batsu;
+署>Sho;
+罵>Ba;
+罷>Hi;
+罸>Batsu;
+罹>Ri;
+羂>Ken;
+羃>Beki;
+羅>Ra;
+羆>Hi;
+羇>Ki;
+羈>Ki;
+羊>You;
+羌>Kyou;
+美>Bi;
+羔>Kou;
+羚>Rei;
+羝>Tei;
+羞>Shuu;
+羣>Gun;
+群>Gun;
+羨>Sen;
+義>Gi;
+羮>Kou;
+羯>Katsu;
+羲>Gi;
+羶>Sen;
+羸>Rui;
+羹>Kou;
+羽>U;
+翁>Ou;
+翅>Shi;
+翆>Sui;
+翊>Yoku;
+翌>Yoku;
+習>Shuu;
+翔>Shou;
+翕>Kyuu;
+翠>Sui;
+翡>Hi;
+翦>Sen;
+翩>Hen;
+翫>Gan;
+翰>Kan;
+翳>Ei;
+翹>Gyou;
+翻>Hon;
+翼>Yoku;
+耀>You;
+老>Rou;
+考>Kou;
+耄>Mou;
+者>Sha;
+耆>Ki;
+耋>Tetsu;
+而>Ji;
+耐>Tai;
+耒>Rai;
+耕>Kou;
+耗>Mou;
+耘>Un;
+耙>Ha;
+耜>Shi;
+耡>Jo;
+耨>Dou;
+耳>Ji;
+耶>Ya;
+耻>Chi;
+耽>Tan;
+耿>Kou;
+聆>Rei;
+聊>Ryou;
+聒>Katsu;
+聖>Sei;
+聘>Hei;
+聚>Shuu;
+聞>Bun;
+聟>Sei;
+聡>Sou;
+聨>Ren;
+聯>Ren;
+聰>Sou;
+聲>Sei;
+聳>Shou;
+聴>Chou;
+聶>Jou;
+職>Shoku;
+聹>Dei;
+聽>Chou;
+聾>Rou;
+聿>Itsu;
+肄>I;
+肅>Shuku;
+肆>Shi;
+肇>Chou;
+肉>Niku;
+肋>Roku;
+肌>Ki;
+肓>Kou;
+肖>Shou;
+肘>Chuu;
+肚>To;
+肛>Kou;
+肝>Kan;
+股>Ko;
+肢>Shi;
+肥>Hi;
+肩>Ken;
+肪>Bou;
+肬>Yuu;
+肭>Dotsu;
+肯>Kou;
+肱>Kou;
+育>Iku;
+肴>Kou;
+肺>Hai;
+胃>I;
+胄>Chuu;
+胆>Tan;
+背>Hai;
+胎>Tai;
+胖>Han;
+胙>So;
+胚>Hai;
+胛>Kou;
+胝>Chi;
+胞>Hou;
+胡>Ko;
+胤>In;
+胥>Sho;
+胯>Ko;
+胱>Kou;
+胴>Dou;
+胸>Kyou;
+胼>Hen;
+能>Nou;
+脂>Shi;
+脅>Kyou;
+脆>Zei;
+脇>Kyou;
+脈>Myaku;
+脉>Myaku;
+脊>Seki;
+脚>Kyaku;
+脛>Kei;
+脣>Shin;
+脩>Shuu;
+脯>Ho;
+脱>Datsu;
+脳>Nou;
+脹>Chou;
+脾>Hi;
+腆>Ten;
+腋>Eki;
+腎>Jin;
+腐>Fu;
+腑>Fu;
+腓>Hi;
+腔>Kou;
+腕>Wan;
+腟>Chitsu;
+腥>Sei;
+腦>Nou;
+腫>Shou;
+腮>Sai;
+腰>You;
+腱>Ken;
+腴>Yu;
+腸>Chou;
+腹>Fuku;
+腺>Sen;
+腿>Tai;
+膀>Hou;
+膂>Ryo;
+膃>Otsu;
+膈>Kaku;
+膊>Haku;
+膏>Kou;
+膓>Chou;
+膕>Kaku;
+膚>Fu;
+膜>Maku;
+膝>Shitsu;
+膠>Kou;
+膣>Chitsu;
+膨>Bou;
+膩>Ji;
+膰>Han;
+膳>Sen;
+膵>Sui;
+膸>Zui;
+膺>You;
+膽>Tan;
+膾>Kai;
+膿>Dou;
+臀>Den;
+臂>Hi;
+臆>Oku;
+臈>Rou;
+臉>Ren;
+臍>Sei;
+臑>Dau;
+臓>Zou;
+臘>Rou;
+臙>En;
+臚>Ryo;
+臟>Zou;
+臠>Ren;
+臣>Shin;
+臥>Ga;
+臧>Zou;
+臨>Rin;
+自>Shi;
+臭>Shuu;
+至>Shi;
+致>Chi;
+臺>Tai;
+臻>Shin;
+臼>Kyuu;
+臾>Yu;
+舁>Yo;
+舂>Shou;
+舅>Kyuu;
+與>Yo;
+興>Kyou;
+舉>Kyo;
+舊>Kyuu;
+舌>Zetsu;
+舍>Sha;
+舎>Sha;
+舐>Shi;
+舒>Jo;
+舖>Ho;
+舗>Ho;
+舘>Kan;
+舛>Sen;
+舜>Shun;
+舞>Bu;
+舟>Shuu;
+舩>Sen;
+航>Kou;
+舫>Hou;
+般>Han;
+舮>Ro;
+舳>Chiku;
+舵>Ta;
+舶>Haku;
+舷>Ken;
+舸>Ka;
+船>Sen;
+艀>Fu;
+艇>Tei;
+艘>Sou;
+艙>Sou;
+艚>Sou;
+艟>Dou;
+艢>Shou;
+艤>Gi;
+艦>Kan;
+艨>Mou;
+艪>Ro;
+艫>Ro;
+艮>Kon;
+良>Ryou;
+艱>Kan;
+色>Shoku;
+艶>En;
+艷>En;
+艸>Sou;
+艾>Gai;
+芋>U;
+芍>Shaku;
+芒>Bou;
+芙>Fu;
+芝>Shi;
+芟>San;
+芥>Kai;
+芦>Ro;
+芫>Gen;
+芬>Fun;
+芭>Ba;
+芯>Shin;
+花>Ka;
+芳>Hou;
+芸>Gei;
+芹>Kin;
+芻>Suu;
+芽>Ga;
+苅>Gai;
+苑>En;
+苒>Zen;
+苓>Rei;
+苔>Tai;
+苗>Byou;
+苙>Ryuu;
+苛>Ka;
+苜>Boku;
+苞>Hou;
+苟>Kou;
+苡>I;
+苣>Kyo;
+若>Jaku;
+苦>Ku;
+苧>Cho;
+苫>Sen;
+英>Ei;
+苳>Tou;
+苴>So;
+苹>Hei;
+苺>Mai;
+苻>Fu;
+茂>Mo;
+范>Han;
+茄>Ka;
+茅>Bou;
+茆>Bou;
+茉>Matsu;
+茎>Kei;
+茖>Kaku;
+茗>Mei;
+茘>Ri;
+茜>Sen;
+茣>Go;
+茨>Shi;
+茫>Bou;
+茯>Fuku;
+茱>Shu;
+茲>Ji;
+茴>Kai;
+茵>In;
+茶>Cha;
+茸>Jou;
+茹>Jo;
+荀>Jun;
+荅>Tou;
+草>Sou;
+荊>Kei;
+荏>Jin;
+荐>Sen;
+荒>Kou;
+荘>Sou;
+荳>Tou;
+荵>Jin;
+荷>Ka;
+荻>Teki;
+荼>To;
+莅>Ri;
+莇>Cho;
+莉>Chi;
+莊>Sou;
+莎>Sa;
+莓>Mai;
+莖>Kei;
+莚>En;
+莞>Kan;
+莟>Kan;
+莠>Yuu;
+莢>Kyou;
+莨>Rou;
+莪>Ga;
+莫>Bo;
+莱>Rai;
+莵>To;
+莽>Bou;
+菁>Sei;
+菅>Kan;
+菊>Kiku;
+菌>Kin;
+菎>Kon;
+菓>Ka;
+菖>Shou;
+菘>Suu;
+菜>Sai;
+菟>To;
+菠>Ha;
+菩>Hai;
+菫>Kin;
+華>Ka;
+菰>Ko;
+菱>Ryou;
+菲>Hi;
+菴>An;
+菷>Sou;
+菻>Rin;
+菽>Shuku;
+萃>Sui;
+萄>Tou;
+萇>Chou;
+萋>Sei;
+萌>Hou;
+萍>Hei;
+萎>I;
+萓>Gi;
+萠>Hou;
+萩>Shuu;
+萪>Kuwa;
+萬>Man;
+萱>Ken;
+萵>Wa;
+萸>Yu;
+萼>Gaku;
+落>Raku;
+葆>Ho;
+葉>You;
+葎>Ritsu;
+著>Cho;
+葛>Katsu;
+葡>Ho;
+葢>Gai;
+董>Tou;
+葦>I;
+葩>Ha;
+葫>Ko;
+葬>Sou;
+葭>Ka;
+葮>Tan;
+葯>Yaku;
+葱>Sou;
+葵>Ki;
+葷>Gun;
+葹>Shi;
+葺>Shuu;
+蒂>Tei;
+蒄>Kan;
+蒋>Shou;
+蒐>Shuu;
+蒔>Shi;
+蒙>Bou;
+蒜>San;
+蒟>Kon;
+蒡>Hou;
+蒭>Suu;
+蒲>Ho;
+蒸>Jou;
+蒹>Ken;
+蒻>Jaku;
+蒼>Sou;
+蒿>Kou;
+蓁>Shin;
+蓄>Chiku;
+蓆>Seki;
+蓉>You;
+蓊>Ou;
+蓋>Gai;
+蓍>Shi;
+蓐>Joku;
+蓑>Sa;
+蓖>Hi;
+蓚>Chou;
+蓬>Hou;
+蓮>Ren;
+蓴>Shun;
+蓼>Ryou;
+蓿>Shuku;
+蔀>Hou;
+蔆>Ryou;
+蔑>Betsu;
+蔓>Ban;
+蔔>Fuku;
+蔕>Tei;
+蔗>Sho;
+蔘>Shin;
+蔚>Utsu;
+蔟>Zoku;
+蔡>Sai;
+蔦>Chou;
+蔬>So;
+蔭>In;
+蔵>Zou;
+蔽>Hei;
+蕀>Kyoku;
+蕁>Jin;
+蕃>Ban;
+蕈>Shin;
+蕉>Shou;
+蕊>Zui;
+蕋>Zui;
+蕎>Kyou;
+蕕>Yuu;
+蕗>Ro;
+蕘>Jou;
+蕚>Gaku;
+蕣>Shun;
+蕨>Ketsu;
+蕩>Tou;
+蕪>Bu;
+蕭>Shou;
+蕷>Yo;
+蕾>Rai;
+薀>Un;
+薄>Haku;
+薇>Bi;
+薈>Kai;
+薊>Kei;
+薐>Rou;
+薑>Kyou;
+薔>Shoku;
+薗>En;
+薙>Tei;
+薛>Setsu;
+薜>Heki;
+薤>Kai;
+薦>Sen;
+薨>Kou;
+薩>Satsu;
+薪>Shin;
+薫>Kun;
+薬>Yaku;
+薮>Sou;
+薯>Sho;
+薹>Tai;
+薺>Sei;
+藁>Kou;
+藉>Sha;
+藍>Ran;
+藏>Zou;
+藐>Baku;
+藕>Guu;
+藜>Rei;
+藝>Gei;
+藤>Tou;
+藥>Yaku;
+藩>Han;
+藪>Sou;
+藷>Sho;
+藹>Ai;
+藺>Rin;
+藻>Sou;
+藾>Rai;
+蘂>Zui;
+蘆>Ro;
+蘇>So;
+蘊>Un;
+蘋>Hin;
+蘓>So;
+蘖>Getsu;
+蘗>Haku;
+蘚>Sen;
+蘢>Rou;
+蘭>Ran;
+蘯>Tou;
+蘿>Ra;
+虍>Ko;
+虎>Ko;
+虐>Gyaku;
+虔>Ken;
+處>Sho;
+虚>Kyo;
+虜>Ryo;
+虞>Gu;
+號>Gou;
+虧>Ki;
+虫>Chuu;
+虱>Shitsu;
+虹>Kou;
+虻>Bou;
+蚊>Bun;
+蚋>Zei;
+蚌>Hou;
+蚓>In;
+蚕>San;
+蚣>Kou;
+蚤>Sou;
+蚩>Shi;
+蚪>Tou;
+蚫>Hou;
+蚯>Kyuu;
+蚰>Yuu;
+蚶>Kan;
+蛄>Ko;
+蛆>Sho;
+蛇>Ja;
+蛉>Rei;
+蛋>Tan;
+蛍>Kei;
+蛎>Rei;
+蛔>Kai;
+蛙>A;
+蛛>Shu;
+蛞>Katsu;
+蛟>Kou;
+蛤>Kou;
+蛩>Kyou;
+蛬>Kyou;
+蛭>Shitsu;
+蛮>Ban;
+蛸>Sou;
+蛹>You;
+蛻>Zei;
+蛾>Ga;
+蜀>Shoku;
+蜂>Hou;
+蜃>Shin;
+蜆>Ken;
+蜈>Go;
+蜉>Fu;
+蜊>Ri;
+蜍>Sho;
+蜑>Tan;
+蜒>En;
+蜘>Chi;
+蜚>Hi;
+蜜>Mitsu;
+蜥>Seki;
+蜩>Chou;
+蜴>Eki;
+蜷>Ken;
+蜻>Sei;
+蜿>En;
+蝉>Sen;
+蝋>Rou;
+蝌>Ka;
+蝎>Katsu;
+蝓>Yu;
+蝕>Shoku;
+蝗>Kou;
+蝙>Hen;
+蝟>I;
+蝠>Fuku;
+蝣>Yuu;
+蝦>Ka;
+蝨>Shitsu;
+蝪>Tou;
+蝮>Fuku;
+蝴>Ko;
+蝶>Chou;
+蝸>Ka;
+蝿>You;
+螂>Rou;
+融>Yuu;
+螟>Mei;
+螢>Kei;
+螫>Seki;
+螯>Gou;
+螳>Tou;
+螺>Ra;
+螻>Rou;
+螽>Shuu;
+蟀>Shutsu;
+蟄>Chitsu;
+蟆>Ba;
+蟇>Ba;
+蟋>Shitsu;
+蟐>Tou;
+蟒>Bou;
+蟠>Han;
+蟯>Gyou;
+蟲>Ki;
+蟶>Tei;
+蟷>Tou;
+蟹>Kai;
+蟻>Gi;
+蟾>Sen;
+蠅>You;
+蠍>Katsu;
+蠎>Bou;
+蠏>Kai;
+蠑>Ei;
+蠕>Da;
+蠖>Kaku;
+蠡>Rei;
+蠢>Shun;
+蠣>Rei;
+蠧>To;
+蠱>Ko;
+蠶>San;
+蠹>To;
+蠻>Ban;
+血>Ketsu;
+衂>Jiku;
+衄>Jiku;
+衆>Shuu;
+行>Kou;
+衍>En;
+衒>Ken;
+術>Jutsu;
+街>Gai;
+衙>Gyo;
+衛>Ei;
+衝>Shou;
+衞>Ei;
+衡>Kou;
+衢>Ku;
+衣>I;
+表>Hyou;
+衫>San;
+衰>Sa;
+衲>Dou;
+衵>Jitsu;
+衷>Chuu;
+衽>Jin;
+衾>Kin;
+衿>Kin;
+袁>En;
+袂>Bei;
+袈>Ka;
+袋>Tai;
+袍>Hou;
+袒>Tan;
+袖>Shuu;
+袗>Shin;
+袙>Ha;
+袞>Kon;
+袢>Han;
+袤>Bou;
+被>Hi;
+袮>Ne;
+袱>Fuku;
+袴>Ko;
+袵>Jin;
+袷>Kou;
+袿>Kei;
+裁>Sai;
+裂>Retsu;
+装>Sou;
+裏>Ri;
+裔>Ei;
+裕>Yuu;
+裘>Kyuu;
+裙>Kun;
+補>Ho;
+裝>Sou;
+裟>Sa;
+裡>Ri;
+裨>Hi;
+裲>Ryou;
+裳>Shou;
+裴>Hai;
+裸>Ra;
+裹>Ka;
+裼>Seki;
+製>Sei;
+裾>Kyo;
+褂>Kai;
+複>Fuku;
+褊>Hen;
+褌>Kon;
+褐>Katsu;
+褒>Hou;
+褓>Ho;
+褝>Tan;
+褞>On;
+褥>Joku;
+褪>Tai;
+褫>Chi;
+褶>Chou;
+褸>Rou;
+褻>Setsu;
+襁>Kyou;
+襃>Hou;
+襄>Jou;
+襌>Tan;
+襍>Zatsu;
+襖>Ou;
+襞>Heki;
+襟>Kin;
+襠>Tou;
+襤>Ran;
+襦>Ju;
+襪>Betsu;
+襭>Ketsu;
+襯>Shin;
+襲>Shuu;
+襴>Ran;
+襾>Aka;
+西>Sei;
+要>You;
+覃>Tan;
+覆>Fuku;
+覇>Ha;
+覈>Kaku;
+覊>Ki;
+見>Ken;
+規>Ki;
+覓>Beki;
+視>Shi;
+覗>Shi;
+覘>Ten;
+覚>Kaku;
+覡>Geki;
+覦>Yu;
+覧>Ran;
+覩>To;
+親>Shin;
+覬>Ki;
+覯>Kou;
+覲>Kin;
+観>Kan;
+覺>Kaku;
+覽>Ran;
+覿>Teki;
+觀>Kan;
+角>Kaku;
+觚>Ko;
+觜>Shi;
+觝>Tei;
+解>Kai;
+触>Shoku;
+觧>Kai;
+觴>Shou;
+觸>Shoku;
+言>Gen;
+訂>Tei;
+訃>Fu;
+計>Kei;
+訊>Jin;
+訌>Kou;
+討>Tou;
+訐>Ketsu;
+訓>Kun;
+訖>Kitsu;
+託>Taku;
+記>Ki;
+訛>Ka;
+訝>Ga;
+訟>Shou;
+訣>Ketsu;
+訥>Totsu;
+訪>Hou;
+設>Setsu;
+許>Kyo;
+訳>Yaku;
+訴>So;
+訶>Ka;
+診>Shin;
+註>Chuu;
+証>Shou;
+詁>Ko;
+詆>Tei;
+詈>Ri;
+詐>Sa;
+詑>Ta;
+詒>Tai;
+詔>Shou;
+評>Hyou;
+詛>So;
+詞>Shi;
+詠>Ei;
+詢>Jun;
+詣>Kei;
+試>Shi;
+詩>Shi;
+詫>Ta;
+詬>Kou;
+詭>Ki;
+詮>Sen;
+詰>Kitsu;
+話>Wa;
+該>Gai;
+詳>Shou;
+詼>Kai;
+誂>Chou;
+誄>Rui;
+誅>Chuu;
+誇>Ko;
+誉>Yo;
+誌>Shi;
+認>Nin;
+誑>Kyou;
+誓>Sei;
+誕>Tan;
+誘>Yuu;
+誚>Shou;
+語>Go;
+誠>Sei;
+誡>Kai;
+誣>Fu;
+誤>Go;
+誥>Kou;
+誦>Shou;
+誨>Kai;
+説>Setsu;
+読>Toku;
+誰>Sui;
+課>Ka;
+誹>Hi;
+誼>Gi;
+調>Chou;
+諂>Ten;
+諄>Jun;
+談>Dan;
+請>Sei;
+諌>Kan;
+諍>Sou;
+諏>Shu;
+諒>Ryou;
+論>Ron;
+諚>Jou;
+諛>Yu;
+諜>Chou;
+諞>Hen;
+諠>Ken;
+諡>Shi;
+諢>Kon;
+諤>Gaku;
+諦>Tei;
+諧>Kai;
+諫>Kan;
+諭>Yu;
+諮>Shi;
+諱>Ki;
+諳>An;
+諷>Fuu;
+諸>Sho;
+諺>Gen;
+諾>Daku;
+謀>Bou;
+謁>Etsu;
+謂>I;
+謄>Tou;
+謇>Ken;
+謌>Ka;
+謎>Mei;
+謐>Hitsu;
+謔>Gyaku;
+謖>Shoku;
+謗>Bou;
+謙>Ken;
+謚>Shi;
+講>Kou;
+謝>Sha;
+謠>You;
+謡>You;
+謦>Kei;
+謨>Bo;
+謫>Taku;
+謬>Byou;
+謳>Ou;
+謹>Kin;
+謾>Ban;
+譁>Ka;
+證>Shou;
+譌>Ka;
+譎>Kitsu;
+譏>Ki;
+譖>Shin;
+識>Shiki;
+譚>Tan;
+譛>Shin;
+譜>Fu;
+譟>Sou;
+警>Kei;
+譫>Sen;
+譬>Hi;
+譯>Yaku;
+議>Gi;
+譱>Zen;
+譲>Jou;
+譴>Ken;
+護>Go;
+譽>Yo;
+讀>Toku;
+讃>San;
+變>Hen;
+讌>En;
+讎>Shuu;
+讐>Shuu;
+讒>San;
+讓>Jou;
+讖>Shin;
+讙>Kan;
+讚>San;
+谷>Koku;
+谺>Ka;
+谿>Kei;
+豁>Katsu;
+豆>Tou;
+豈>Ki;
+豊>Hou;
+豌>En;
+豎>Ju;
+豐>Hou;
+豕>Shi;
+豚>Ton;
+象>Shou;
+豢>Ken;
+豪>Gou;
+豫>Yo;
+豬>Cho;
+豸>Chi;
+豹>Hou;
+豺>Sai;
+豼>Hi;
+貂>Chou;
+貅>Kyuu;
+貉>Kaku;
+貊>Haku;
+貌>Bou;
+貍>Ri;
+貎>Gei;
+貔>Hi;
+貘>Baku;
+貝>Bai;
+貞>Tei;
+負>Fu;
+財>Zai;
+貢>Kou;
+貧>Hin;
+貨>Ka;
+販>Han;
+貪>Don;
+貫>Kan;
+責>Seki;
+貭>Shitsu;
+貮>Ni;
+貯>Cho;
+貰>Sei;
+貲>Shi;
+貳>Ni;
+貴>Ki;
+貶>Hen;
+買>Bai;
+貸>Tai;
+費>Hi;
+貼>Ten;
+貽>I;
+貿>Bou;
+賀>Ga;
+賁>Hi;
+賂>Ro;
+賃>Chin;
+賄>Wai;
+資>Shi;
+賈>Ko;
+賊>Zoku;
+賍>Sou;
+賎>Sen;
+賑>Shin;
+賓>Hin;
+賚>Rai;
+賛>San;
+賜>Shi;
+賞>Shou;
+賠>Bai;
+賢>Ken;
+賣>Bai;
+賤>Sen;
+賦>Fu;
+質>Shitsu;
+賭>To;
+賺>Tan;
+賻>Fu;
+購>Kou;
+賽>Sai;
+贄>Shi;
+贅>Zei;
+贇>In;
+贈>Zou;
+贊>San;
+贋>Gan;
+贍>Sen;
+贏>Ei;
+贐>Shin;
+贓>Zou;
+贔>Hi;
+贖>Shoku;
+赤>Seki;
+赦>Sha;
+赧>Tan;
+赫>Kaku;
+赭>Sha;
+走>Sou;
+赱>Sou;
+赳>Kyuu;
+赴>Fu;
+起>Ki;
+趁>Chin;
+超>Chou;
+越>Etsu;
+趙>Chou;
+趣>Shu;
+趨>Suu;
+足>Soku;
+趺>Fu;
+趾>Shi;
+跂>Ki;
+跋>Batsu;
+跌>Tetsu;
+跏>Ka;
+跖>Seki;
+跚>San;
+跛>Ha;
+距>Kyo;
+跟>Kon;
+跡>Seki;
+跣>Sen;
+跨>Ko;
+跪>Ki;
+跫>Kyou;
+路>Ro;
+跳>Chou;
+践>Sen;
+跼>Kyoku;
+跿>To;
+踈>Sho;
+踉>Ryou;
+踊>You;
+踏>Tou;
+踐>Sen;
+踝>Ka;
+踞>Kyo;
+踟>Chi;
+踪>Shou;
+踰>Yu;
+踴>You;
+踵>Shou;
+蹂>Juu;
+蹄>Tei;
+蹇>Ken;
+蹈>Tou;
+蹉>Sa;
+蹊>Kei;
+蹌>Shou;
+蹐>Seki;
+蹕>Hitsu;
+蹙>Shuku;
+蹟>Seki;
+蹠>Seki;
+蹣>Man;
+蹤>Shou;
+蹲>Son;
+蹴>Shuu;
+蹶>Ketsu;
+蹼>Boku;
+躁>Sou;
+躄>Heki;
+躅>Choku;
+躇>Cho;
+躊>Chuu;
+躋>Sei;
+躍>Yaku;
+躑>Teki;
+躓>Chi;
+躔>Ten;
+躙>Rin;
+躡>Jou;
+躪>Rin;
+身>Shin;
+躬>Kyuu;
+躯>Ku;
+躰>Tei;
+躱>Ta;
+軆>Tei;
+車>Sha;
+軋>Atsu;
+軌>Ki;
+軍>Gun;
+軒>Ken;
+軛>Aku;
+軟>Nan;
+転>Ten;
+軣>Gou;
+軫>Shin;
+軸>Jiku;
+軻>Ka;
+軼>Itsu;
+軽>Kei;
+軾>Shoku;
+較>Kaku;
+輅>Ro;
+載>Sai;
+輊>Chi;
+輌>Ryou;
+輒>Chou;
+輓>Ban;
+輔>Fu;
+輕>Kei;
+輙>Chou;
+輛>Ryou;
+輜>Shi;
+輝>Ki;
+輟>Tetsu;
+輦>Ren;
+輩>Hai;
+輪>Rin;
+輯>Shuu;
+輳>Sou;
+輸>Yu;
+輹>Fuku;
+輻>Fuku;
+輾>Ten;
+輿>Yo;
+轂>Koku;
+轄>Katsu;
+轅>En;
+轆>Roku;
+轉>Ten;
+轍>Tetsu;
+轎>Kyou;
+轗>Kan;
+轜>Ji;
+轟>Gou;
+轡>Hi;
+轢>Reki;
+轣>Reki;
+轤>Ro;
+辛>Shin;
+辜>Ko;
+辞>Ji;
+辟>Heki;
+辣>Ratsu;
+辧>Ben;
+辨>Ben;
+辭>Ji;
+辮>Hen;
+辯>Ben;
+辰>Shin;
+辱>Joku;
+農>Nou;
+辺>Hen;
+辿>Ten;
+迂>U;
+迄>Kitsu;
+迅>Jin;
+迎>Gei;
+近>Kin;
+返>Hen;
+迢>Chou;
+迥>Kei;
+迦>Ka;
+迩>Ji;
+迪>Teki;
+迫>Haku;
+迭>Tetsu;
+迯>Tou;
+述>Jutsu;
+迴>Kai;
+迷>Mei;
+迸>Hou;
+迹>Seki;
+迺>Dai;
+追>Tsui;
+退>Tai;
+送>Sou;
+逃>Tou;
+逅>Kou;
+逆>Gyaku;
+逋>Ho;
+逍>Shou;
+逎>Shuu;
+透>Tou;
+逐>Chiku;
+逑>Kyuu;
+逓>Tei;
+途>To;
+逕>Kei;
+逖>Teki;
+逗>Tou;
+這>Gen;
+通>Ts;
+逝>Sei;
+逞>Tei;
+速>Soku;
+造>Zou;
+逡>Shun;
+逢>Hou;
+連>Ren;
+逮>Tai;
+週>Shuu;
+進>Shin;
+逵>Ki;
+逶>I;
+逸>Itsu;
+逹>Tatsu;
+逼>Hitsu;
+逾>Yu;
+遁>Ton;
+遂>Sui;
+遅>Chi;
+遇>Guu;
+遉>Tei;
+遊>Yuu;
+運>Un;
+遍>Hen;
+過>Ka;
+遏>Atsu;
+遐>Ka;
+遑>Kou;
+遒>Shuu;
+道>Dou;
+達>Tatsu;
+違>I;
+遘>Kou;
+遙>You;
+遜>Son;
+遞>Tei;
+遠>En;
+遡>So;
+遣>Ken;
+遥>You;
+遨>Gou;
+適>Teki;
+遭>Sou;
+遮>Sha;
+遯>Ton;
+遲>Chi;
+遵>Jun;
+遶>Jou;
+遷>Sen;
+選>Sen;
+遺>I;
+遼>Ryou;
+遽>Kyo;
+避>Hi;
+邀>You;
+邁>Bai;
+邂>Kai;
+邃>Sui;
+還>Kan;
+邇>Ji;
+邉>Hen;
+邊>Hen;
+邏>Ra;
+邑>Yuu;
+那>Da;
+邦>Hou;
+邨>Son;
+邪>Ya;
+邯>Kan;
+邱>Kyuu;
+邵>Shou;
+邸>Tei;
+郁>Iku;
+郊>Kou;
+郎>Rou;
+郛>Fu;
+郡>Gun;
+郢>Ei;
+郤>Geki;
+部>Bu;
+郭>Kaku;
+郵>Yuu;
+郷>Kyou;
+都>To;
+鄂>Gaku;
+鄒>Suu;
+鄙>Hi;
+鄭>Tei;
+鄰>Rin;
+鄲>Tan;
+酉>Yuu;
+酊>Tei;
+酋>Shuu;
+酌>Shaku;
+配>Hai;
+酎>Chuu;
+酒>Shu;
+酔>Sui;
+酖>Tan;
+酘>Tou;
+酢>Saku;
+酣>Kan;
+酥>So;
+酩>Mei;
+酪>Raku;
+酬>Shuu;
+酲>Tei;
+酳>In;
+酵>Kou;
+酷>Koku;
+酸>San;
+醂>Rin;
+醇>Shun;
+醉>Sui;
+醋>Saku;
+醍>Tei;
+醐>Ko;
+醒>Sei;
+醗>Hatsu;
+醜>Shuu;
+醢>Kai;
+醤>Shou;
+醪>Rou;
+醫>I;
+醯>Kei;
+醴>Rei;
+醵>Kyo;
+醸>Jou;
+醺>Kun;
+釀>Jou;
+釁>Kin;
+釆>Han;
+采>Sai;
+釈>Shaku;
+釉>Yuu;
+釋>Shaku;
+里>Ri;
+重>Chou;
+野>Ya;
+量>Ryou;
+釐>Ri;
+金>Kin;
+釖>Tou;
+釘>Tei;
+釛>Koku;
+釜>Fu;
+針>Shin;
+釟>Hatsu;
+釡>Fu;
+釣>Chou;
+釦>Kou;
+釧>Sen;
+釵>Sa;
+釶>Shi;
+釼>Ken;
+釿>Kin;
+鈍>Don;
+鈎>Kou;
+鈑>Han;
+鈔>Shou;
+鈕>Chuu;
+鈞>Kin;
+鈩>Ro;
+鈬>Taku;
+鈴>Rei;
+鈷>Ko;
+鈿>Ten;
+鉄>Tetsu;
+鉅>Kyo;
+鉈>Sha;
+鉉>Ken;
+鉋>Hou;
+鉐>Seki;
+鉗>Kan;
+鉚>Ryuu;
+鉛>En;
+鉞>Etsu;
+鉢>Hachi;
+鉤>Kou;
+鉦>Sei;
+鉱>Kou;
+鉾>Bou;
+銀>Gin;
+銃>Juu;
+銅>Dou;
+銑>Sen;
+銓>Sen;
+銕>Tetsu;
+銖>Shu;
+銘>Mei;
+銚>You;
+銛>Sen;
+銜>Kan;
+銭>Sen;
+銷>Shou;
+銹>Shuu;
+鋏>Kyou;
+鋒>Hou;
+鋤>Jo;
+鋩>Bou;
+鋪>Ho;
+鋭>Ei;
+鋳>Chuu;
+鋸>Kyo;
+鋺>En;
+鋼>Kou;
+錆>Sei;
+錏>A;
+錐>Sui;
+錘>Tsui;
+錙>Shi;
+錚>Sou;
+錠>Jou;
+錢>Sen;
+錣>Tei;
+錦>Kin;
+錨>Byou;
+錫>Seki;
+錬>Ren;
+錮>Ko;
+錯>Saku;
+録>Roku;
+錻>Bu;
+鍄>Kei;
+鍋>Ka;
+鍍>To;
+鍔>Gaku;
+鍖>Chin;
+鍛>Tan;
+鍜>Ka;
+鍠>Kou;
+鍬>Shuu;
+鍮>Chuu;
+鍵>Ken;
+鍼>Shin;
+鍾>Shou;
+鎌>Ren;
+鎔>You;
+鎖>Sa;
+鎗>Sou;
+鎚>Tsui;
+鎧>Gai;
+鎬>Kou;
+鎭>Chin;
+鎮>Chin;
+鎰>Itsu;
+鏃>Zoku;
+鏈>Ren;
+鏐>Ryuu;
+鏑>Teki;
+鏖>Ou;
+鏗>Kou;
+鏘>Shou;
+鏝>Man;
+鏡>Kyou;
+鏤>Rou;
+鏥>Shuu;
+鏨>San;
+鐃>Dou;
+鐇>Han;
+鐐>Ryou;
+鐓>Tai;
+鐔>Shin;
+鐘>Shou;
+鐙>Tou;
+鐚>A;
+鐡>Tetsu;
+鐫>Sen;
+鐵>Tetsu;
+鐶>Kan;
+鐸>Taku;
+鐺>Tou;
+鑁>Ban;
+鑄>Chuu;
+鑑>Kan;
+鑒>Kan;
+鑚>San;
+鑛>Kou;
+鑞>Rou;
+鑠>Shaku;
+鑢>Ryo;
+鑪>Ro;
+鑰>Yaku;
+鑵>Kan;
+鑷>Jou;
+鑼>Ra;
+鑽>San;
+鑾>Ran;
+鑿>Saku;
+钁>Kaku;
+長>Chou;
+門>Mon;
+閂>San;
+閃>Sen;
+閇>Hei;
+閉>Hei;
+開>Kai;
+閏>Jun;
+閑>Kan;
+間>Kan;
+閔>Bin;
+閘>Kou;
+閙>Tou;
+関>Kan;
+閣>Kaku;
+閤>Kou;
+閥>Batsu;
+閧>Kou;
+閨>Kei;
+閭>Ro;
+閲>Etsu;
+閹>En;
+閻>En;
+閼>A;
+閾>Yoku;
+闃>Geki;
+闇>An;
+闊>Katsu;
+闌>Ran;
+闍>To;
+闔>Kou;
+闕>Ketsu;
+闖>Chin;
+闘>Tou;
+關>Kan;
+闡>Sen;
+闢>Heki;
+闥>Tatsu;
+阜>Fu;
+阡>Sen;
+阨>Aku;
+阪>Han;
+阮>Gen;
+阯>Shi;
+防>Bou;
+阻>So;
+阿>A;
+陀>Da;
+陂>Ha;
+附>Fu;
+陋>Rou;
+陌>Haku;
+降>Kou;
+陏>Ta;
+限>Gen;
+陛>Hei;
+陜>Kou;
+陝>Sen;
+陞>Shou;
+陟>Choku;
+院>In;
+陣>Jin;
+除>Jo;
+陥>Kan;
+陦>Tou;
+陪>Bai;
+陬>Suu;
+陰>In;
+陲>Sui;
+陳>Chin;
+陵>Ryou;
+陶>Tou;
+陷>Kan;
+陸>Riku;
+険>Ken;
+陽>You;
+隅>Guu;
+隆>Ryuu;
+隈>Wai;
+隊>Tai;
+隋>Ta;
+隍>Kou;
+階>Kai;
+随>Zui;
+隔>Kaku;
+隕>In;
+隗>Kai;
+隘>Ai;
+隙>Geki;
+際>Sai;
+障>Shou;
+隠>In;
+隣>Rin;
+隧>Sui;
+隨>Zui;
+險>Ken;
+隰>Shitsu;
+隱>In;
+隲>Shitsu;
+隴>Rou;
+隶>Tai;
+隷>Rei;
+隸>Rei;
+隹>Sui;
+隻>Seki;
+隼>Jun;
+雀>Jaku;
+雁>Gan;
+雄>Yuu;
+雅>Ga;
+集>Shuu;
+雇>Ko;
+雉>Chi;
+雋>Sen;
+雌>Shi;
+雍>You;
+雎>Sho;
+雑>Zatsu;
+雕>Chou;
+雖>Sui;
+雙>Sou;
+雛>Suu;
+雜>Zatsu;
+離>Ri;
+難>Nan;
+雨>U;
+雪>Setsu;
+雫>Da;
+雰>Fun;
+雲>Un;
+零>Rei;
+雷>Rai;
+雹>Haku;
+電>Den;
+需>Ju;
+霄>Shou;
+霆>Tei;
+震>Shin;
+霈>Hai;
+霊>Rei;
+霍>Kaku;
+霎>Sou;
+霏>Hi;
+霑>Ten;
+霓>Gei;
+霖>Rin;
+霙>Ei;
+霜>Sou;
+霞>Ka;
+霤>Ryuu;
+霧>Mu;
+霪>In;
+霰>San;
+露>Ro;
+霸>Haku;
+霹>Heki;
+霽>Sei;
+霾>Bai;
+靂>Reki;
+靄>Ai;
+靆>Tai;
+靈>Rei;
+靉>Ai;
+青>Sei;
+靖>Sei;
+静>Sei;
+靜>Sei;
+非>Hi;
+靠>Kou;
+靡>Hi;
+面>Men;
+靤>Hou;
+靦>Ten;
+靨>You;
+革>Kaku;
+靫>Sai;
+靭>Jin;
+靱>Jin;
+靴>Ka;
+靹>Ketsu;
+靺>Matsu;
+靼>Tan;
+鞁>Hi;
+鞄>Hou;
+鞅>Ou;
+鞋>Ai;
+鞍>An;
+鞏>Kyou;
+鞘>Sou;
+鞜>Tou;
+鞠>Kiku;
+鞣>Juu;
+鞦>Shuu;
+鞨>Katsu;
+鞫>Kiku;
+鞭>Hen;
+鞳>Tou;
+鞴>Fuku;
+韃>Datsu;
+韆>Sen;
+韈>Betsu;
+韋>I;
+韓>Kan;
+韜>Tou;
+韭>Kyuu;
+韮>Kyou;
+韲>Sei;
+音>On;
+韵>In;
+韶>Shou;
+韻>In;
+響>Kyou;
+頁>Ketsu;
+頂>Chou;
+頃>Kei;
+項>Kou;
+順>Jun;
+須>Shu;
+頌>Shou;
+頏>Kou;
+預>Yo;
+頑>Gan;
+頒>Han;
+頓>Ton;
+頗>Ha;
+領>Ryou;
+頚>Kei;
+頡>Kitsu;
+頤>I;
+頬>Kyou;
+頭>Tou;
+頴>Ei;
+頷>Kan;
+頸>Kei;
+頻>Hin;
+頼>Rai;
+頽>Tai;
+顆>Ka;
+顋>Sai;
+題>Dai;
+額>Gaku;
+顎>Gaku;
+顏>Gan;
+顔>Gan;
+顕>Ken;
+願>Gan;
+顛>Ten;
+類>Rui;
+顧>Ko;
+顫>Sen;
+顯>Ken;
+顰>Hin;
+顱>Ro;
+顳>Shou;
+顴>Kan;
+風>Fuu;
+颯>Satsu;
+颱>Tai;
+颶>Ku;
+飃>Hyou;
+飄>Hyou;
+飆>Hyou;
+飛>Hi;
+飜>Hon;
+食>Shoku;
+飢>Ki;
+飩>Ton;
+飫>Yo;
+飭>Choku;
+飮>In;
+飯>Han;
+飲>In;
+飴>I;
+飼>Shi;
+飽>Hou;
+飾>Shoku;
+餃>Kou;
+餅>Hei;
+餉>Shou;
+養>You;
+餌>Ji;
+餐>San;
+餒>Dai;
+餓>Ga;
+餔>Ho;
+餘>Yo;
+餝>Shoku;
+餞>Sen;
+餠>Hei;
+餡>Kan;
+餤>Tan;
+館>Kan;
+餬>Ko;
+餮>Tetsu;
+餽>Ki;
+餾>Ryuu;
+饂>Un;
+饅>Man;
+饉>Kin;
+饋>Ki;
+饌>Sen;
+饐>I;
+饑>Ki;
+饒>Jou;
+饕>Tou;
+饗>Kyou;
+首>Shu;
+馗>Ki;
+馘>Kaku;
+香>Kou;
+馥>Fuku;
+馨>Kei;
+馬>Ba;
+馭>Gyo;
+馮>Hyou;
+馳>Chi;
+馴>Shun;
+馼>Bun;
+駁>Baku;
+駄>Ta;
+駅>Eki;
+駆>Ku;
+駈>Ku;
+駐>Chuu;
+駑>Do;
+駒>Ku;
+駕>Ga;
+駘>Tai;
+駛>Shi;
+駝>Ta;
+駟>Shi;
+駢>Hen;
+駭>Kai;
+駮>Haku;
+駱>Raku;
+駸>Shin;
+駻>Kan;
+駿>Shun;
+騁>Tei;
+騅>Sui;
+騎>Ki;
+騏>Ki;
+騒>Sou;
+験>Ken;
+騙>Hen;
+騨>Tan;
+騫>Ken;
+騰>Tou;
+騷>Sou;
+騾>Ra;
+驀>Baku;
+驂>San;
+驃>Hyou;
+驅>Ku;
+驍>Gyou;
+驕>Kyou;
+驗>Ken;
+驚>Kyou;
+驛>Eki;
+驟>Shuu;
+驢>Ryo;
+驤>Jou;
+驥>Ki;
+驩>Kan;
+驪>Ri;
+驫>Hyuu;
+骨>Kotsu;
+骭>Kan;
+骰>Tou;
+骸>Kai;
+骼>Kaku;
+髀>Hi;
+髄>Zui;
+髏>Rou;
+髑>Toku;
+髓>Zui;
+體>Tei;
+高>Kou;
+髞>Sou;
+髟>Hyou;
+髢>Tei;
+髣>Hou;
+髦>Bou;
+髪>Hatsu;
+髫>Chou;
+髭>Shi;
+髮>Hatsu;
+髯>Zen;
+髱>Hou;
+髴>Futsu;
+髷>Kyoku;
+髻>Kei;
+鬆>Shou;
+鬘>Ban;
+鬚>Shu;
+鬟>Kan;
+鬢>Hin;
+鬣>Ryou;
+鬥>Tou;
+鬧>Tou;
+鬨>Kou;
+鬩>Geki;
+鬪>Tou;
+鬮>Kyuu;
+鬯>Chou;
+鬱>Utsu;
+鬲>Reki;
+鬻>Shuku;
+鬼>Ki;
+魁>Kai;
+魂>Kon;
+魃>Batsu;
+魄>Haku;
+魅>Mi;
+魍>Bou;
+魎>Ryou;
+魏>Gi;
+魑>Chi;
+魔>Ma;
+魘>En;
+魚>Gyo;
+魯>Ro;
+魴>Hou;
+鮃>Hyou;
+鮎>Nen;
+鮑>Hou;
+鮒>Fu;
+鮓>Sa;
+鮟>An;
+鮠>Gai;
+鮨>Shi;
+鮪>I;
+鮫>Kou;
+鮭>Kei;
+鮮>Sen;
+鮹>Sou;
+鯀>Kon;
+鯆>Ho;
+鯉>Ri;
+鯊>Sa;
+鯔>Shi;
+鯖>Sei;
+鯛>Chou;
+鯡>Hi;
+鯢>Gei;
+鯣>Eki;
+鯤>Kon;
+鯨>Gei;
+鯰>Nen;
+鯵>Sou;
+鰄>I;
+鰆>Shun;
+鰈>Chou;
+鰉>Kou;
+鰊>Ren;
+鰌>Shuu;
+鰍>Shuu;
+鰐>Gaku;
+鰒>Fuku;
+鰓>Sai;
+鰔>Kan;
+鰕>Ka;
+鰛>On;
+鰡>Ryuu;
+鰤>Shi;
+鰥>Kan;
+鰭>Ki;
+鰮>On;
+鰲>Gou;
+鰹>Ken;
+鰺>Sou;
+鰻>Ban;
+鰾>Hyou;
+鱆>Shou;
+鱇>Kou;
+鱈>Setsu;
+鱒>Son;
+鱗>Rin;
+鱠>Kai;
+鱧>Rei;
+鱶>Shou;
+鱸>Ro;
+鳥>Chou;
+鳧>Fu;
+鳩>Kyuu;
+鳫>Gan;
+鳬>Fu;
+鳳>Hou;
+鳴>Mei;
+鳶>En;
+鴃>Ketsu;
+鴆>Chin;
+鴇>Hou;
+鴈>Gan;
+鴉>A;
+鴎>Ou;
+鴒>Rei;
+鴕>Ta;
+鴛>En;
+鴟>Shi;
+鴣>Ko;
+鴦>You;
+鴨>Ou;
+鴪>Itsu;
+鴬>Ou;
+鴻>Kou;
+鴾>Bou;
+鴿>Kou;
+鵁>Kou;
+鵄>Shi;
+鵐>Bu;
+鵑>Ken;
+鵙>Geki;
+鵜>Tei;
+鵝>Ga;
+鵞>Ga;
+鵠>Koku;
+鵡>Bu;
+鵬>Hou;
+鵯>Hi;
+鵲>Jaku;
+鵺>Ya;
+鶇>Tou;
+鶉>Shun;
+鶏>Kei;
+鶚>Gaku;
+鶤>Kon;
+鶩>Boku;
+鶯>Ou;
+鶲>Ou;
+鶴>Kaku;
+鶸>Jaku;
+鶺>Seki;
+鶻>Kotsu;
+鷁>Geki;
+鷂>You;
+鷄>Kei;
+鷆>Ten;
+鷏>Ten;
+鷓>Sha;
+鷙>Shi;
+鷦>Shou;
+鷭>Ban;
+鷯>Ryou;
+鷲>Shuu;
+鷸>Itsu;
+鷹>You;
+鷺>Ro;
+鷽>Kaku;
+鸚>Ou;
+鸛>Kan;
+鸞>Ran;
+鹵>Ro;
+鹸>Ken;
+鹹>Kan;
+鹽>En;
+鹿>Roku;
+麁>So;
+麈>Shu;
+麋>Bi;
+麌>Gu;
+麑>Gei;
+麒>Ki;
+麓>Roku;
+麕>Kin;
+麗>Rei;
+麝>Sha;
+麟>Rin;
+麥>Baku;
+麦>Baku;
+麩>Fu;
+麪>Men;
+麭>Hou;
+麸>Fu;
+麹>Kiku;
+麺>Men;
+麻>Ma;
+麼>Ma;
+麾>Ki;
+麿>Ro;
+黄>Kou;
+黌>Kou;
+黍>Sho;
+黎>Rei;
+黏>Nen;
+黐>Chi;
+黒>Koku;
+黔>Ken;
+默>Moku;
+黙>Moku;
+黛>Tai;
+黜>Chutsu;
+黝>Yuu;
+點>Ten;
+黠>Katsu;
+黥>Gei;
+黨>Tou;
+黯>An;
+黴>Bai;
+黶>En;
+黷>Toku;
+黹>Chi;
+黻>Futsu;
+黼>Ho;
+黽>Bou;
+鼇>Gou;
+鼈>Betsu;
+鼎>Tei;
+鼓>Ko;
+鼕>Tou;
+鼠>So;
+鼡>Sho;
+鼬>Yuu;
+鼻>Bi;
+鼾>Kan;
+齊>Sei;
+齋>Sai;
+齎>Sei;
+齏>Sei;
+齒>Shi;
+齔>Shin;
+齟>So;
+齠>Chou;
+齡>Rei;
+齢>Rei;
+齣>Shutsu;
+齦>Gin;
+齧>Ketsu;
+齪>Soku;
+齬>Gyo;
+齲>Ku;
+齶>Gaku;
+齷>Aku;
+龍>Ryuu;
+龕>Gan;
+龜>Ki;
+龝>Shuu;
+龠>Yaku;
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
new file mode 100644
index 0000000..ef5f90c
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
@@ -0,0 +1,55 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project
new file mode 100644
index 0000000..db8f930
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..f3d5dae
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.base.source=com.ibm.icu.base
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml
new file mode 100644
index 0000000..1925a46
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu.base"
+      label="com.ibm.icu.base"
+      version="@BUILD_VERSION@"
+      provider-name="IBM">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu.base"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.base.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..cb34993
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.jse4-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..cbd89f0
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.jse4.source=com.ibm.icu.jse4
+
+
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml
new file mode 100644
index 0000000..0f5f22f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu.jse4"
+      label="com.ibm.icu.jse4"
+      version="@BUILD_VERSION@"
+      provider-name="IBM">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu.jse4"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         fragment="true"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.jse4.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project
new file mode 100644
index 0000000..60c6244
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties
new file mode 100644
index 0000000..6859a05
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.source=com.ibm.icu
+
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml
new file mode 100644
index 0000000..5d04fd0
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu"
+      label="com.ibm.icu"
+      version="@BUILD_VERSION@">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/misc/about_icu.html b/src/com/ibm/icu/dev/eclipse/misc/about_icu.html
new file mode 100644
index 0000000..cddd060
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/about_icu.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>July 2, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+		<p><strong>ICU4J 4.0</strong> <br/><br/>
+		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
+		Corporation and others.
+		<br/><br/>
+		ICU4J is:
+		<blockquote>
+		Copyright (c) 1995-2008 International Business Machines Corporation and others<br/>
+		All rights reserved. 
+		</blockquote>
+		<p>
+		Your use of ICU4J is subject to the terms and conditions of the ICU4J license.  A copy of the
+		license is contained in the file <a href="about_files/license.html" target="_blank">about_files/license.html</a>.</p>
+		<p>
+		ICU4J bundles data files imported from the Unicode Character Database and the Locale Data.  A copy of the
+		Unicode Data and Software license is contained in the file <a href="about_files/ucdterms.txt"/>about_files/ucdterms.txt</a>.</p>
+		<p>
+		The project information including source code, documentations and demo programs are available on
+		the <a href="http://icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html b/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html
new file mode 100644
index 0000000..eb56ad1
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>July 2, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+		<p><strong>ICU4J 4.0</strong> <br/><br/>
+		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
+		Corporation and others.
+		<br/><br/>
+		ICU4J is:
+		<blockquote>
+		Copyright (c) 1995-2008 International Business Machines Corporation and others<br/>
+		All rights reserved. 
+		</blockquote>
+		<p>
+		Your use of ICU4J is subject to the terms and conditions of the ICU4J license.  A copy of the
+		license is contained in the file <a href="about_files/license.html" target="_blank">about_files/license.html</a>.</p>
+		<p>
+		The project information including source code, documentations and demo programs are available on
+		the <a href="http://icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml b/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml
new file mode 100644
index 0000000..e4d6613
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml
@@ -0,0 +1,28 @@
+<project name="allElements Delegator">
+	
+ 	<!-- ===================================================================== -->
+ 	<!-- Run a given ${target} on all elements being built                     -->
+ 	<!-- Replace element.id with the id of the top level element being built.    -->
+	<!-- If element.id does not exist in ${buildDirectory}/features/element.id   -->
+	<!-- or ${baseLocation}/features/element.id, then you must provide the       -->
+	<!-- location by setting the property "pluginPath"                           -->
+ 	<!-- Add on <ant> task for each top level element being built.             -->
+ 	<!-- ===================================================================== -->
+ 	<target name="allElementsDelegator">
+ 		<ant antfile="${genericTargets}" target="${target}">
+	 		<property name="type" value="feature" />
+	 		<property name="id" value="@PLUGIN_ID@" />
+ 		</ant>
+ 	</target>
+ 
+ 	<!-- ===================================================================== -->
+ 	<!-- Targets to assemble the built elements for particular configurations  -->
+ 	<!-- These generally call the generated assemble scripts (named in         -->
+ 	<!-- ${assembleScriptName}) but may also add pre and post processing       -->
+ 	<!-- Add one target for each root element and each configuration           -->
+ 	<!-- Replace element.id with the id of the top level element being built   -->
+ 	<!-- ===================================================================== -->
+ 	<target name="assemble.@PLUGIN_ID@">
+ 		<ant antfile="${assembleScriptName}" dir="${buildDirectory}"/>
+ 	</target>
+</project>
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties b/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties
new file mode 100644
index 0000000..8411f8d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties
@@ -0,0 +1,220 @@
+###############################################################################
+# Copyright (c) 2003, 2006 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+#####################
+# Parameters describing how and where to execute the build.
+# Typical users need only update the following properties:
+#    baseLocation - where things you are building against are installed
+#    bootclasspath - The base jars to compile against (typicaly rt.jar)
+#    configs - the list of {os, ws, arch} configurations to build.  
+#
+# Of course any of the settings here can be overridden by spec'ing 
+# them on the command line (e.g., -DbaseLocation=d:/eclipse
+
+############# PRODUCT/PACKAGING CONTROL #############
+product=/plugin or feature id/path/to/.product
+runPackager=true
+
+#Set the name of the archive that will result from the product build.
+#archiveNamePrefix=
+
+# The prefix that will be used in the generated archive.
+#archivePrefix=<output archive root>
+archivePrefix=
+
+# The location underwhich all of the build output will be collected.
+collectingFolder=${archivePrefix}
+
+# The list of {os, ws, arch} configurations to build.  This 
+# value is a '&' separated list of ',' separate triples.  For example, 
+#     configs=win32,win32,x86 & linux,motif,x86
+# By default the value is *,*,*
+#configs=win32, win32, x86 & \
+#	linux, gtk, ppc &\
+# linux, gtk, x86 & \
+#	linux, gtk, x86_64 & \
+#	linux, motif, x86 & \
+#	solaris, motif, sparc & \
+#	solaris, gtk, sparc & \
+#	aix, motif, ppc & \
+#	hpux, motif, PA_RISC & \
+#	macosx, carbon, ppc
+
+# By default PDE creates one archive (result) per entry listed in the configs property.
+# Setting this value to try will cause PDE to only create one output containing all 
+# artifacts for all the platforms listed in the configs property.
+#groupConfigurations=true
+
+#The format of the archive. By default a zip is created using antZip.
+#The list can only contain the configuration for which the desired format is different than zip.
+#archivesFormat=win32, win32, x86 - antZip& \
+#	linux, gtk, ppc - antZip &\
+#    linux, gtk, x86 - antZip& \
+#	linux, gtk, x86_64 - antZip& \
+# linux, motif, x86 - antZip& \
+#	solaris, motif, sparc - antZip& \
+#	solaris, gtk, sparc - antZip& \
+#	aix, motif, ppc - antZip& \
+#	hpux, motif, PA_RISC - antZip& \
+#	macosx, carbon, ppc - antZip
+	
+#Set to true if you want the output to be ready for an update jar (no site.xml generated)
+#outputUpdateJars = false
+
+#Set to true for Jnlp generation
+#codebase should be a URL that will be used as the root of all relative URLs in the output.
+#generateJnlp=false
+#jnlp.codebase=<codebase url>
+#jnlp.j2se=<j2se version>
+#jnlp.locale=<a locale>
+
+#Set to true if you want to sign jars
+#signJars=false
+#sign.alias=<alias>
+#sign.keystore=<keystore location>
+#sign.storepass=<keystore password>
+
+#Arguments to send to the zip executable
+zipargs=
+
+#Arguments to send to the tar executable
+tarargs=
+
+#Control the creation of a file containing the version included in each configuration - on by default 
+#generateVersionsLists=false
+
+############## BUILD NAMING CONTROL ################
+# The directory into which the build elements are fetched and where
+# the build takes place.
+buildDirectory=@BUILD_DIR@
+
+# Type of build.  Used in naming the build output.  Typically this value is
+# one of I, N, M, S, ...
+buildType=@BUILD_TYPE@
+
+# ID of the build.  Used in naming the build output.
+buildId=@BUILD_ID@
+
+# Label for the build.  Used in naming the build output
+buildLabel=${buildType}.${buildId}
+
+# Timestamp for the build.  Used in naming the build output
+timestamp=007
+
+#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde.
+#The value will only be applied to plugin or features indicating build.properties, qualifier = context 
+#forceContextQualifier=<the value for the qualifier>
+
+#Enable / disable the generation of a suffix for the features that use .qualifier. 
+#The generated suffix is computed according to the content of the feature   
+#generateFeatureVersionSuffix=true
+
+############# BASE CONTROL #############
+# Settings for the base Eclipse components and Java class libraries 
+# against which you are building.
+# Base location for anything the build needs to compile against.  For example,
+# in most RCP app or a plug-in,  the baseLocation should be the location of a previously
+# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack.
+
+base=<path/to/parent/of/eclipse>
+#baseLocation=${base}/eclipse
+baseLocation=@BASE_LOCATION@
+#Os/Ws/Arch/nl of the eclipse specified by baseLocation
+baseos=@BASE_OS@
+basews=@BASE_WS@
+basearch=@BASE_ARCH@
+
+#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built
+filteredDependencyCheck=false
+
+#pluginPath is a list of locations in which to find plugins and features.  This list is separated by the platform file separator (; or :)
+#a location is one of:  
+#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo
+#- a directory that contains a /plugins or /features subdirectory
+#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml
+#pluginPath=
+
+skipBase=true
+eclipseURL=<url for eclipse download site>
+eclipseBuildId=<Id of Eclipse build to get>
+eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip
+
+
+############# MAP FILE CONTROL ################
+# This section defines CVS tags to use when fetching the map files from the repository.
+# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml
+
+skipMaps=true
+mapsRepo=:pserver:anonymous@example.com/path/to/repo
+mapsRoot=path/to/maps
+mapsCheckoutTag=HEAD
+
+#tagMaps=true
+mapsTagTag=v${buildId}
+
+
+############ REPOSITORY CONTROL ###############
+# This section defines properties parameterizing the repositories where plugins, fragments
+# bundles and features are being obtained from. 
+
+# The tags to use when fetching elements to build.
+# By default thebuilder will use whatever is in the maps.  
+# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the 
+# overriding value
+# For example fetchTag=CVS=HEAD, SVN=v20050101
+# fetchTag=HEAD
+skipFetch=true
+
+
+############# JAVA COMPILER OPTIONS ##############
+# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
+#bootclasspath=${java.home}/lib/rt.jar
+
+# specific JRE locations to compile against. These values are used to compile bundles specifying a 
+# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support
+#CDC-1.0/Foundation-1.0= /path/to/rt.jar
+#CDC-1.1/Foundation-1.1=
+#OSGi/Minimum-1.0=
+#OSGi/Minimum-1.1=
+#JRE-1.1=
+#J2SE-1.2=
+#J2SE-1.3=
+#J2SE-1.4=
+#J2SE-1.5=
+#JavaSE-1.6=
+#PersonalJava-1.1=
+#PersonalJava-1.2=
+#CDC-1.0/PersonalBasis-1.0=
+#CDC-1.0/PersonalJava-1.0=
+#CDC-1.1/PersonalBasis-1.1=
+#CDC-1.1/PersonalJava-1.1=
+
+# Specify the output format of the compiler log when eclipse jdt is used
+logExtension=.log
+
+# Whether or not to include debug info in the output jars
+javacDebugInfo=true
+
+# Whether or not to fail the build if there are compiler errors
+javacFailOnError=true
+
+# Enable or disable verbose mode of the compiler
+javacVerbose=true
+
+# Extra arguments for the compiler. These are specific to the java compiler being used.
+compilerArg=-inlineJSR -enableJavadoc -encoding ISO-8859-1
+
+# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
+javacSource=1.3
+
+# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
+javacTarget=1.1
+
+individualSourceBundles=true
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml b/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml
new file mode 100644
index 0000000..ae4266d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml
@@ -0,0 +1,161 @@
+<project name="Build specific targets and properties" default="noDefault">
+
+	<!-- ===================================================================== -->
+	<!-- Run a given ${target} on all elements being built -->
+	<!-- Add on <ant> task for each top level element being built. -->
+	<!-- ===================================================================== -->
+	<property name="allElementsFile" value="${builder}/allElements.xml"/>
+	<import file="${allElementsFile}" />
+	<target name="allElements">
+		<antcall target="allElementsDelegator" />
+	</target>
+	
+	<!-- ===================================================================== -->
+	<!-- ===================================================================== -->
+	<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
+		<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
+		<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
+	</target>
+
+	<target name="checkLocalBase">
+		<available file="${base}" property="skipBase" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Check out map files from correct repository -->
+	<!-- Replace values for mapsCheckoutTag as desired. -->
+	<!-- ===================================================================== -->
+	<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
+		<property name="mapsCheckoutTag" value="HEAD" />
+		<cvs cvsRoot="${mapsRepo}" package="${mapsRoot}" dest="${buildDirectory}/maps" tag="${mapsCheckoutTag}" />
+	</target>
+
+	<target name="checkLocalMaps">
+		<available property="skipMaps" file="${buildDirectory}/maps" />
+	</target>
+
+	<target name="tagMapFiles" if="tagMaps">
+		<cvs dest="${buildDirectory}/maps/${mapsRoot}" command="tag ${mapsTagTag}" />
+	</target>
+
+	<!-- ===================================================================== -->
+
+	<target name="clean" unless="noclean">
+		<antcall target="allElements">
+			<param name="target" value="cleanElement" />
+		</antcall>
+	</target>
+
+	<target name="gatherLogs">
+		<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
+		<antcall target="allElements">
+			<param name="target" value="gatherLogs" />
+		</antcall>
+		<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
+			<fileset dir="${buildDirectory}/features">
+				<include name="**/*.log.zip" />
+			</fileset>
+		</unzip>
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before setup -->
+	<!-- ===================================================================== -->
+	<target name="preSetup">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after setup but before starting the build proper -->
+	<!-- ===================================================================== -->
+	<target name="postSetup">
+		<antcall target="getBaseComponents" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before fetching the build elements -->
+	<!-- ===================================================================== -->
+	<target name="preFetch">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after fetching the build elements -->
+	<!-- ===================================================================== -->
+	<target name="postFetch">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before generating the build scripts. -->
+	<!-- ===================================================================== -->
+	<target name="preGenerate">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after generating the build scripts. -->
+	<!-- ===================================================================== -->
+	<target name="postGenerate">
+		<antcall target="clean" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running the build.xmls for the elements being built. -->
+	<!-- ===================================================================== -->
+	<target name="preProcess">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after running the build.xmls for the elements being built. -->
+	<!-- ===================================================================== -->
+	<target name="postProcess">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running assemble. -->
+	<!-- ===================================================================== -->
+	<target name="preAssemble">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after  running assemble. -->
+	<!-- ===================================================================== -->
+	<target name="postAssemble">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running package. -->
+	<!-- ===================================================================== -->
+	<target name="prePackage">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after  running package. -->
+	<!-- ===================================================================== -->
+	<target name="postPackage">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after the build is done. -->
+	<!-- ===================================================================== -->
+	<target name="postBuild">
+		<antcall target="gatherLogs" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do to test the build results -->
+	<!-- ===================================================================== -->
+	<target name="test">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do to publish the build results -->
+	<!-- ===================================================================== -->
+	<target name="publish">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Default target                                                        -->
+	<!-- ===================================================================== -->
+	<target name="noDefault">
+		<echo message="You must specify a target when invoking this file" />
+	</target>
+
+</project>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath
new file mode 100644
index 0000000..0215967
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project
new file mode 100644
index 0000000..3beefc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..af14585
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:44 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..d8fd0d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:44 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..50533a2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ICU4J Base test fragment
+Bundle-SymbolicName: com.ibm.icu.base.tests
+Bundle-Version: 1.0.0
+Bundle-Vendor: IBM
+Bundle-Copyright: @COPYRIGHT@
+Fragment-Host: com.ibm.icu.base;bundle-version="[3.4.3,4.1.0)"
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
+Require-Bundle: org.junit
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties
new file mode 100644
index 0000000..41eb6ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java
new file mode 100644
index 0000000..0bbc8b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java
@@ -0,0 +1,359 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.util.ULocale;
+
+public class BreakIteratorTest extends ICUTestCase {
+    // ICU behaves a bit differently with this text, but the tested values aren't
+    // affected.  If Java changes behavior they might need to change.
+    private static final String text = "Mr. and Mrs. Mumblety-Peg paid $35.97 for a new 12\" cockatoo. " +
+        "When they got home they both cooed \"Isn't it lovely?\" and sighed softly. " +
+        "\"Let's name it u\u0308\u5098!\" they said with glee.";
+    private static int pos = text.indexOf("sn't");
+    private static BreakIterator cbr;
+    private static BreakIterator wbr;
+    private static BreakIterator lbr;
+    private static BreakIterator sbr;
+        
+    static {
+        cbr = BreakIterator.getCharacterInstance();
+        cbr.setText(text);
+        wbr = BreakIterator.getWordInstance();
+        wbr.setText(text);
+        lbr = BreakIterator.getLineInstance();
+        lbr.setText(text);
+        sbr = BreakIterator.getSentenceInstance();
+        sbr.setText(text);
+                
+        // diagnostic
+        //              dump(cbr);
+        //              dump(wbr);
+        //              dump(lbr);
+        //              dump(sbr);
+    }
+        
+    //      private static void dump(BreakIterator bi) {
+    //              for (int ix = bi.first(), lim = text.length(); ix != lim;) {
+    //                      int nx = bi.next();
+    //                      if (nx < 0) nx = lim;
+    //                      System.out.println(Integer.toString(ix) + ": " + text.substring(ix, nx));
+    //                      ix = nx;
+    //              }
+    //      }
+        
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.hashCode()'
+     */
+    public void testHashCode() {
+        BreakIterator br = BreakIterator.getWordInstance();
+        br.setText(text);
+        BreakIterator brne = BreakIterator.getWordInstance();
+        brne.setText(text + "X");
+        wbr.first();
+        testEHCS(br, wbr, brne);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.BreakIterator(BreakIterator)'
+     */
+    public void testBreakIterator() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.first()'
+     */
+    public void testFirst() {
+        assertEquals(0, cbr.first());
+        assertEquals(0, wbr.first());
+        assertEquals(0, lbr.first());
+        assertEquals(0, sbr.first());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.last()'
+     */
+    public void testLast() {
+        assertEquals(text.length(), cbr.last());
+        assertEquals(text.length(), wbr.last());
+        assertEquals(text.length(), lbr.last());
+        assertEquals(text.length(), sbr.last());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.next(int)'
+     */
+    public void testNextInt() {
+        cbr.first();
+        wbr.first();
+        lbr.first();
+        sbr.first();
+        assertEquals(2, cbr.next(2));
+        assertEquals(3, wbr.next(2));
+        assertEquals(8, lbr.next(2));
+        assertEquals(62, sbr.next(2));
+                
+        cbr.last();
+        wbr.last();
+        lbr.last();
+        sbr.last();
+        assertEquals(174, cbr.next(-2));
+        assertEquals(171, wbr.next(-2));
+        assertEquals(166, lbr.next(-2));
+        assertEquals(135, sbr.next(-2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.next()'
+     */
+    public void testNext() {
+        cbr.first();
+        wbr.first();
+        lbr.first();
+        sbr.first();
+        assertEquals(1, cbr.next());
+        assertEquals(2, wbr.next());
+        assertEquals(4, lbr.next());
+        assertEquals(13, sbr.next());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.previous()'
+     */
+    public void testPrevious() {
+        cbr.last();
+        wbr.last();
+        lbr.last();
+        sbr.last();
+        assertEquals(175, cbr.previous());
+        assertEquals(175, wbr.previous());
+        assertEquals(171, lbr.previous());
+        assertEquals(156, sbr.previous());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.following(int)'
+     */
+    public void testFollowing() {
+        assertEquals(100, cbr.following(pos));
+        assertEquals(103, wbr.following(pos));
+        assertEquals(104, lbr.following(pos));
+        assertEquals(116, sbr.following(pos));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.preceding(int)'
+     */
+    public void testPreceding() {
+        assertEquals(98, cbr.preceding(pos));
+        assertEquals(98, wbr.preceding(pos));
+        assertEquals(97, lbr.preceding(pos));
+        assertEquals(62, sbr.preceding(pos));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.isBoundary(int)'
+     */
+    public void testIsBoundary() {
+        assertTrue(cbr.isBoundary(pos));
+        assertFalse(wbr.isBoundary(pos));
+        assertFalse(lbr.isBoundary(pos));
+        assertFalse(sbr.isBoundary(pos));
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.current()'
+     */
+    public void testCurrent() {
+        cbr.following(pos);
+        wbr.following(pos);
+        lbr.following(pos);
+        sbr.following(pos);
+        assertEquals(100, cbr.current());
+        assertEquals(103, wbr.current());
+        assertEquals(104, lbr.current());
+        assertEquals(116, sbr.current());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getText()'
+     */
+    public void testGetText() {
+        CharacterIterator ci = cbr.getText();
+        StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex());
+        for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
+            buf.append(c);
+        }
+        String result = buf.toString();
+        assertEquals(text, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.setText(String)'
+     */
+    public void testSetTextString() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.setText(CharacterIterator)'
+     */
+    public void testSetTextCharacterIterator() {
+        CharacterIterator ci = new StringCharacterIterator(text, pos);
+        BreakIterator bi = BreakIterator.getWordInstance();
+        bi.setText(ci);
+        assertEquals(2, bi.next());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance()'
+     */
+    public void testGetWordInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(Locale)'
+     */
+    public void testGetWordInstanceLocale() {
+        assertNotNull(BreakIterator.getWordInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(ULocale)'
+     */
+    public void testGetWordInstanceULocale() {
+        assertNotNull(BreakIterator.getWordInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance()'
+     */
+    public void testGetLineInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(Locale)'
+     */
+    public void testGetLineInstanceLocale() {
+        assertNotNull(BreakIterator.getLineInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(ULocale)'
+     */
+    public void testGetLineInstanceULocale() {
+        assertNotNull(BreakIterator.getLineInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance()'
+     */
+    public void testGetCharacterInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(Locale)'
+     */
+    public void testGetCharacterInstanceLocale() {
+        assertNotNull(BreakIterator.getCharacterInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(ULocale)'
+     */
+    public void testGetCharacterInstanceULocale() {
+        assertNotNull(BreakIterator.getCharacterInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance()'
+     */
+    public void testGetSentenceInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(Locale)'
+     */
+    public void testGetSentenceInstanceLocale() {
+        assertNotNull(BreakIterator.getSentenceInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(ULocale)'
+     */
+    public void testGetSentenceInstanceULocale() {
+        assertNotNull(BreakIterator.getSentenceInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance()'
+     */
+    public void testGetTitleInstance() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(Locale)'
+     */
+    public void testGetTitleInstanceLocale() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(ULocale)'
+     */
+    public void testGetTitleInstanceULocale() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(BreakIterator.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(BreakIterator.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.toString()'
+     */
+    public void testToString() {
+        assertNotNull(cbr.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.clone()'
+     */
+    public void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java
new file mode 100644
index 0000000..fddf539
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java
@@ -0,0 +1,559 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class CalendarTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.hashCode()'
+     */
+    public void testHashCode() {
+        Calendar cal1 = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        Calendar cal3 = Calendar.getInstance();
+        cal3.setMinimalDaysInFirstWeek(cal3.getMinimalDaysInFirstWeek()+1);
+        testEHCS(cal1, cal2, cal3);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.Calendar(Calendar)'
+     */
+    public void testCalendar() {
+        // tested implicitly everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance()'
+     */
+    public void testGetInstance() {
+        // tested by testEHCS
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone)'
+     */
+    public void testGetInstanceTimeZone() {
+        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+        Calendar cal = Calendar.getInstance(tz);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+        assertEquals(tz, cal.getTimeZone());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        Calendar cal = Calendar.getInstance(ULocale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, Locale)'
+     */
+    public void testGetInstanceTimeZoneLocale() {
+        TimeZone tz = TimeZone.getTimeZone("America/New_York");
+        Calendar cal = Calendar.getInstance(tz, Locale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, ULocale)'
+     */
+    public void testGetInstanceTimeZoneULocale() {
+        TimeZone tz = TimeZone.getTimeZone("America/New_York");
+        Calendar cal = Calendar.getInstance(tz, ULocale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(Calendar.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(Calendar.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTime()'
+     */
+    public void testGetTime() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTime(Date)'
+     */
+    public void testSetTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        Date date = cal.getTime();
+        cal = Calendar.getInstance();
+        cal.setTime(date);
+        assertEquals(date, cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTimeInMillis()'
+     */
+    public void testGetTimeInMillis() {
+        Calendar cal = Calendar.getInstance();
+        assertTrue(0 != cal.getTimeInMillis());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTimeInMillis(long)'
+     */
+    public void testSetTimeInMillis() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        long millis = cal.getTimeInMillis();
+        Date date = cal.getTime();
+        
+        cal = Calendar.getInstance();
+        cal.setTimeInMillis(millis);
+        
+        assertEquals(date, cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.get(int)'
+     */
+    public void testGet() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        assertEquals(0, cal.get(Calendar.MONTH));
+        assertEquals(20, cal.get(Calendar.DAY_OF_MONTH));
+        assertEquals(30, cal.get(Calendar.MINUTE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int)'
+     */
+    public void testSetIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1977);
+        assertEquals(1977, cal.get(Calendar.YEAR));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int)'
+     */
+    public void testSetIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15);
+        assertEquals(15, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int)'
+     */
+    public void testSetIntIntIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25);
+        assertEquals(25, cal.get(Calendar.MINUTE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int, int)'
+     */
+    public void testSetIntIntIntIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        assertEquals(51, cal.get(Calendar.SECOND));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clear()'
+     */
+    public void testClear() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        cal.clear();
+        assertEquals(0, cal.get(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clear(int)'
+     */
+    public void testClearInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        assertTrue(cal.isSet(Calendar.DAY_OF_MONTH));
+        cal.clear(Calendar.DAY_OF_MONTH);
+        assertFalse(cal.isSet(Calendar.DAY_OF_MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isSet(int)'
+     */
+    public void testIsSet() {
+        // see testClearInt
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isEquivalentTo(Calendar)'
+     */
+    public void testIsEquivalentTo() {
+        Calendar cal = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(1994, 6, 21, 8, 7);
+        assertTrue(cal.isEquivalentTo(cal2));
+        cal.setTimeZone(TimeZone.getTimeZone("CST"));
+        cal2.setTimeZone(TimeZone.getTimeZone("PDT"));
+        assertFalse(cal.isEquivalentTo(cal2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.before(Object)'
+     */
+    public void testBefore() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(cal.before(new Date()));
+        assertTrue(cal.before(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.after(Object)'
+     */
+    public void testAfter() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 3058);
+        assertTrue(cal.after(new Date()));
+        assertTrue(cal.after(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getActualMaximum(int)'
+     */
+    public void testGetActualMaximum() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(11, cal.getActualMaximum(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getActualMinimum(int)'
+     */
+    public void testGetActualMinimum() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(0, cal.getActualMinimum(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.roll(int, boolean)'
+     */
+    public void testRollIntBoolean() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.roll(Calendar.DATE, true);
+        assertEquals(28, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.roll(int, int)'
+     */
+    public void testRollIntInt() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.roll(Calendar.DATE, 3);
+        assertEquals(2, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.add(int, int)'
+     */
+    public void testAdd() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.add(Calendar.DATE, 3);
+        assertEquals(2, cal.get(Calendar.DATE));
+        assertEquals(2, cal.get(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(Locale)'
+     */
+    public void testGetDisplayNameLocale() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals("Calendar", cal.getDisplayName(Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals("Calendar", cal.getDisplayName(ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.compareTo(Calendar)'
+     */
+    public void testCompareToCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(0 > cal.compareTo(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.compareTo(Object)'
+     */
+    public void testCompareToObject() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(0 > cal.compareTo((Object)Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, Locale)'
+     */
+    public void testGetDateTimeFormatIntIntLocale() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1990, 8, 16, 20, 3);
+        DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, Locale.US);
+        assertEquals("September 16, 1990 8:03 PM", df.format(cal));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, ULocale)'
+     */
+    public void testGetDateTimeFormatIntIntULocale() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1990, 8, 16, 20, 3);
+        DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, ULocale.US);
+        assertEquals("September 16, 1990 8:03 PM", df.format(cal));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.fieldDifference(Date, int)'
+     */
+    public void testFieldDifference() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.DAY_OF_MONTH, 0);
+        Date date = cal.getTime();
+        cal.add(Calendar.DAY_OF_MONTH, 5);
+        assertEquals(-5, cal.fieldDifference(date, Calendar.DAY_OF_MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTimeZone()'
+     */
+    public void testGetTimeZone() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.getTimeZone());
+    }
+    
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTimeZone(TimeZone)'
+     */
+    public void testSetTimeZone() {
+        Calendar cal = Calendar.getInstance();
+        TimeZone value1 = cal.getTimeZone();
+        String tzn = "PDT".equals(value1.getID()) ? "CST" : "PDT";
+        TimeZone value2 = TimeZone.getTimeZone(tzn);
+        cal.setTimeZone(value2);
+        TimeZone result = cal.getTimeZone();
+        assertNotEqual(value1, result);
+        assertEquals(value2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setLenient(boolean)'
+     */
+    public void testSetLenient() {
+        Calendar cal = Calendar.getInstance();
+        boolean lenient = cal.isLenient();
+        cal.setLenient(!lenient);
+        assertFalse(lenient == cal.isLenient());
+        
+        // not testing if it has the expected effect
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isLenient()'
+     */
+    public void testIsLenient() {
+        // tested by testSetLenient
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setFirstDayOfWeek(int)'
+     */
+    public void testSetFirstDayOfWeek() {
+        Calendar cal = Calendar.getInstance();
+        int firstDay = cal.getFirstDayOfWeek();
+        cal.setFirstDayOfWeek(firstDay+1);
+        assertEquals(firstDay+1, cal.getFirstDayOfWeek());
+
+        // don't test functionality
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getFirstDayOfWeek()'
+     */
+    public void testGetFirstDayOfWeek() {
+        // tested by testSetFirstDayOfWeek
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setMinimalDaysInFirstWeek(int)'
+     */
+    public void testSetMinimalDaysInFirstWeek() {
+        Calendar cal = Calendar.getInstance();
+        int firstDay = cal.getMinimalDaysInFirstWeek();
+        cal.setMinimalDaysInFirstWeek(firstDay+1);
+        assertEquals(firstDay+1, cal.getMinimalDaysInFirstWeek());
+
+        // don't test functionality
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMinimalDaysInFirstWeek()'
+     */
+    public void testGetMinimalDaysInFirstWeek() {
+        // tested by testSetMinimalDaysInFirstWeek
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMinimum(int)'
+     */
+    public void testGetMinimum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(1, cal.getMinimum(Calendar.DAY_OF_WEEK));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMaximum(int)'
+     */
+    public void testGetMaximum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(7, cal.getMaximum(Calendar.DAY_OF_WEEK));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getGreatestMinimum(int)'
+     */
+    public void testGetGreatestMinimum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(1, cal.getGreatestMinimum(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getLeastMaximum(int)'
+     */
+    public void testGetLeastMaximum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(28, cal.getLeastMaximum(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDayOfWeekType(int)'
+     */
+    public void testGetDayOfWeekType() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(Calendar.WEEKDAY, cal.getDayOfWeekType(Calendar.FRIDAY));
+        assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getWeekendTransition(int)'
+     */
+    public void testGetWeekendTransition() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        try {
+            cal.getWeekendTransition(Calendar.WEEKEND_ONSET);
+            fail("expected IllegalArgumentException from getWeekendTransition");
+        }
+        catch (IllegalArgumentException e) {
+            // ok
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)'
+     */
+    public void testIsWeekendDate() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+        assertTrue(cal.isWeekend(cal.getTime()));
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
+        assertFalse(cal.isWeekend(cal.getTime()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isWeekend()'
+     */
+    public void testIsWeekend() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+        assertTrue(cal.isWeekend());
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
+        assertFalse(cal.isWeekend());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.toString()'
+     */
+    public void testToString() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getType()'
+     */
+    public void testGetType() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals("gregorian", cal.getType());
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java
new file mode 100644
index 0000000..9638984
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+
+public class CollationKeyTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.hashCode()'
+     */
+    public void testHashCode() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        c.setStrength(Collator.TERTIARY);
+        CollationKey kn = c.getCollationKey("this");
+        testEHCS(k1, k2, kn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.CollationKey(CollationKey)'
+     */
+    public void testCollationKey() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.compareTo(CollationKey)'
+     */
+    public void testCompareToCollationKey() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        c.setStrength(Collator.TERTIARY);
+        CollationKey k3 = c.getCollationKey("this");
+        assertTrue(0 == k1.compareTo(k2));
+        assertFalse(0 == k1.compareTo(k3));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.compareTo(Object)'
+     */
+    public void testCompareToObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        assertTrue(0 == k1.compareTo((Object)k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.equals(Object)'
+     */
+    public void testEqualsObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        assertTrue(k1.equals((Object)k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.toString()'
+     */
+    public void testToString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        assertNotNull(k1.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.getSourceString()'
+     */
+    public void testGetSourceString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        assertEquals("This", k1.getSourceString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.toByteArray()'
+     */
+    public void testToByteArray() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        byte[] key = k1.toByteArray();
+        assertNotNull(key);
+        assertTrue(0 < key.length);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java
new file mode 100644
index 0000000..7321d57
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java
@@ -0,0 +1,205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+public class CollatorTest extends ICUTestCase {
+    private static final String s1 = "Fu\u0308nf"; // capital F + u + diaresis
+    private static final String s2 = "fu\u0308nf"; // u + diaresis
+    private static final String s3 = "f\u00fcnf"; // u-umlaut
+    private static final String s4 = "fu\u0308\u0316nf"; // u + diaresis above + grave below
+    private static final String s5 = "fu\u0316\u0308nf"; // u + grave below + diaresis above
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.hashCode()'
+     */
+    public void testHashCode() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.SECONDARY);
+        Collator c2 = Collator.getInstance();
+        c2.setStrength(Collator.SECONDARY);
+        Collator cn = Collator.getInstance();
+        cn.setStrength(Collator.TERTIARY);
+        testEHCS(c, c2, cn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.Collator(Collator)'
+     */
+    public void testCollator() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.setStrength(int)'
+     */
+    public void testSetStrength() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare(s1, s2));
+        c.setStrength(Collator.SECONDARY);
+        assertTrue(0 == c.compare(s1, s2));
+        c.setStrength(Collator.TERTIARY);
+        assertTrue(0 < c.compare(s1, s2));
+        assertTrue(0 == c.compare(s2, s3));
+        c.setStrength(Collator.QUATERNARY);
+        assertTrue(0 > c.compare(s2, s3));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.setDecomposition(int)'
+     */
+    public void testSetDecomposition() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.TERTIARY);
+        assertTrue(0 != c.compare(s4, s5));
+        c.setDecomposition(Collator.IDENTICAL);
+        assertTrue(0 == c.compare(s4, s5));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance()'
+     */
+    public void testGetInstance() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        Collator c = Collator.getInstance(ULocale.GERMANY);
+        assertNotNull(c);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        Collator c = Collator.getInstance(Locale.GERMANY);
+        assertNotNull(c);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(Collator.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(Collator.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getKeywords()'
+     */
+    public void testGetKeywords() {
+        assertEquals(0, Collator.getKeywords().length);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getKeywordValues(String)'
+     */
+    public void testGetKeywordValues() {
+        assertEquals(0, Collator.getKeywordValues("").length);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getStrength()'
+     */
+    public void testGetStrength() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertEquals(Collator.PRIMARY, c.getStrength());
+        c.setStrength(Collator.SECONDARY);
+        assertEquals(Collator.SECONDARY, c.getStrength());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getDecomposition()'
+     */
+    public void testGetDecomposition() {
+        Collator c = Collator.getInstance();
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        assertEquals(Collator.CANONICAL_DECOMPOSITION, c.getDecomposition());
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        assertEquals(Collator.NO_DECOMPOSITION, c.getDecomposition());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.compare(Object, Object)'
+     */
+    public void testCompareObjectObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare((Object)s1, (Object)s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.equals(String, String)'
+     */
+    public void testEqualsStringString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(c.equals(s1, s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.compare(String, String)'
+     */
+    public void testCompareStringString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare(s1, s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getCollationKey(String)'
+     */
+    public void testGetCollationKey() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey(s1);
+        CollationKey k2 = c.getCollationKey(s2);
+        assertTrue(k1.equals(k2));
+        c.setStrength(Collator.TERTIARY);
+        k1 = c.getCollationKey(s1);
+        k2 = c.getCollationKey(s2);
+        assertFalse(k1.equals(k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.toString()'
+     */
+    public void testToString() {
+        assertNotNull(Collator.getInstance().toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.clone()'
+     */
+    public void testClone() {
+        // tested above
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested above
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..b7ffad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java
@@ -0,0 +1,257 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class DateFormatSymbolsTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.hashCode()'
+     */
+    public void testHashCode() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        DateFormatSymbols dfs2 = new DateFormatSymbols(ULocale.US);
+        DateFormatSymbols dfsn = new DateFormatSymbols(Locale.US);
+        dfsn.setAmPmStrings(new String[] { "sw", "xw" });
+        testEHCS(dfs, dfs2, dfsn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(DateFormatSymbols)'
+     */
+    public void testDateFormatSymbolsDateFormatSymbols() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols()'
+     */
+    public void testDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols();
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(Locale)'
+     */
+    public void testDateFormatSymbolsLocale() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(ULocale)'
+     */
+    public void testDateFormatSymbolsULocale() {
+        DateFormatSymbols dfs = new DateFormatSymbols(ULocale.US);
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getEras()'
+     */
+    public void testGetEras() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getEras());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setEras(String[])'
+     */
+    public void testSetEras() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getEras();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setEras(newvalue);
+        String[] result = dfs.getEras();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getMonths()'
+     */
+    public void testGetMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setMonths(String[])'
+     */
+    public void testSetMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getMonths();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setMonths(newvalue);
+        String[] result = dfs.getMonths();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortMonths()'
+     */
+    public void testGetShortMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortMonths(String[])'
+     */
+    public void testSetShortMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getShortMonths();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setShortMonths(newvalue);
+        String[] result = dfs.getShortMonths();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getWeekdays()'
+     */
+    public void testGetWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setWeekdays(String[])'
+     */
+    public void testSetWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getWeekdays();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setWeekdays(newvalue);
+        String[] result = dfs.getWeekdays();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortWeekdays()'
+     */
+    public void testGetShortWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortWeekdays(String[])'
+     */
+    public void testSetShortWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getShortWeekdays();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setShortWeekdays(newvalue);
+        String[] result = dfs.getShortWeekdays();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getAmPmStrings()'
+     */
+    public void testGetAmPmStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getAmPmStrings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setAmPmStrings(String[])'
+     */
+    public void testSetAmPmStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getAmPmStrings();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setAmPmStrings(newvalue);
+        String[] result = dfs.getAmPmStrings();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getZoneStrings()'
+     */
+    public void testGetZoneStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getZoneStrings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setZoneStrings(String[][])'
+     */
+    public void testSetZoneStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[][] oldvalue = dfs.getZoneStrings();
+        String[][] newvalue = (String[][])cloneComplex(oldvalue);
+        newvalue[0][0] = newvalue[0][0] + "!";
+        dfs.setZoneStrings(newvalue);
+        String[][] result = dfs.getZoneStrings();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getLocalPatternChars()'
+     */
+    public void testGetLocalPatternChars() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getLocalPatternChars());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setLocalPatternChars(String)'
+     */
+    public void testSetLocalPatternChars() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String pat = dfs.getLocalPatternChars();
+        StringBuffer buf = new StringBuffer(pat);
+        buf.setCharAt(0, (char)(pat.charAt(0) + 1));
+        String pat2 = buf.toString();
+        dfs.setLocalPatternChars(pat2);
+        String pat3 = dfs.getLocalPatternChars();
+        assertNotEqual(pat, pat2);
+        assertEquals(pat2, pat3);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.toString()'
+     */
+    public void testToString() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java
new file mode 100644
index 0000000..4a4c040
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java
@@ -0,0 +1,443 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class DateFormatTest extends ICUTestCase {
+    private Calendar aCal;
+    private Calendar anESTCal;
+    private Date aDate;
+    private String aDateString;
+    private String aTimeString;
+    private String anESTTimeString;
+    private String aDateTimeString;
+    private String aShortDateTimeString;
+    private String aDefaultESTDateTimeString;
+    private DateFormat aDF;
+    private StringBuffer aBuf;
+    private FieldPosition anFP;
+        
+    protected void setUp() throws Exception {
+        super.setUp();
+                
+        java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
+        gcal.clear();
+        gcal.set(java.util.GregorianCalendar.YEAR, 1990);
+        gcal.set(java.util.GregorianCalendar.MONTH, java.util.GregorianCalendar.DECEMBER);
+        gcal.set(java.util.GregorianCalendar.DATE, 17);
+        gcal.set(java.util.GregorianCalendar.HOUR, 5);
+        gcal.set(java.util.GregorianCalendar.MINUTE, 17);
+        aCal = new Calendar(gcal);
+        anESTCal = Calendar.getInstance();
+        anESTCal.setTimeZone(TimeZone.getTimeZone("EST"));
+        aDate = gcal.getTime();
+        aDateString = "Dec 17, 1990"; // medium -- the default
+        aTimeString = "5:17:00 AM"; // medium
+        anESTTimeString = "8:17:00 AM";
+        aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium
+        aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default
+        aShortDateTimeString = "12/17/90 5:17 AM"; // short, short
+        aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
+        aBuf = new StringBuffer();
+        anFP = new FieldPosition(0);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.hashCode()'
+     */
+    public final void testHashCode() {
+        DateFormat df = DateFormat.getInstance();
+        DateFormat eq = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+        testEHCS(df, eq, aDF);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)'
+     */
+    public final void testDateFormat() {
+        DateFormat df = new DateFormat(java.text.DateFormat.getInstance());
+        assertEquals(DateFormat.getInstance(), df);
+    }
+
+    private void assertEqualDateString(StringBuffer buf) {
+        assertEquals(aDateTimeString, buf.toString());
+    }
+        
+    private void assertEqualDateString(String str) {
+        assertEquals(aDateTimeString, str);
+    }
+        
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatObjectStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aDate, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatCalendarStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aCal, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatDateStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aDate, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Date)'
+     */
+    public final void testFormatDate() {
+        assertEqualDateString(aDF.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String)'
+     */
+    public final void testParseString() throws Exception {
+        assertEquals(aDate, aDF.parse(aDateTimeString));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)'
+     */
+    public final void testParseStringCalendarParsePosition() {
+        aDF.parse(aDateTimeString, aCal, new ParsePosition(0));
+        assertEquals(aDate, aCal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)'
+     */
+    public final void testParseStringParsePosition() {
+        assertEquals(aDate, aDF.parse(aDateTimeString, new ParsePosition(0)));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)'
+     */
+    public final void testParseObjectStringParsePosition() {
+        assertEquals(aDate, aDF.parseObject(aDateTimeString, new ParsePosition(0)));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()'
+     */
+    public final void testGetTimeInstance() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)'
+     */
+    public final void testGetTimeInstanceInt() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)'
+     */
+    public final void testGetTimeInstanceIntLocale() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)'
+     */
+    public final void testGetTimeInstanceIntULocale() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()'
+     */
+    public final void testGetDateInstance() {
+        assertEquals(aDateString, DateFormat.getDateInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)'
+     */
+    public final void testGetDateInstanceInt() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)'
+     */
+    public final void testGetDateInstanceIntLocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)'
+     */
+    public final void testGetDateInstanceIntULocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()'
+     */
+    public final void testGetDateTimeInstance() {
+        assertEquals(aDateTimeString, DateFormat.getDateTimeInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)'
+     */
+    public final void testGetDateTimeInstanceIntInt() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)'
+     */
+    public final void testGetDateTimeInstanceIntIntLocale() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)'
+     */
+    public final void testGetDateTimeInstanceIntIntULocale() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance()'
+     */
+    public final void testGetInstance() {
+        assertEquals(aShortDateTimeString, DateFormat.getInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()'
+     */
+    public final void testGetAvailableLocales() {
+        Locale[] locales = DateFormat.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            ICUTestCase.assertArraysEqual(java.text.DateFormat.getAvailableLocales(), locales);
+        } else {
+            assertNotNull(locales);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)'
+     */
+    public final void testSetCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("EST"));
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setCalendar(cal);
+        assertEquals("8:17 AM", df.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()'
+     */
+    public final void testGetCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("EST"));
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setCalendar(cal);
+        assertEquals(cal, df.getCalendar());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)'
+     */
+    public final void testSetNumberFormat() {
+        // no easy way to test effect of setting the number format
+        NumberFormat nf = NumberFormat.getInstance();
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setNumberFormat(nf);
+        // note, can't actually USE the dateformat since it changes the calendar
+        assertEquals(nf, df.getNumberFormat());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()'
+     */
+    public final void testGetNumberFormat() {
+        // see testSetNumberFormat
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)'
+     */
+    public final void testSetTimeZone() {
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        TimeZone tz = TimeZone.getTimeZone("EST");
+        df.setTimeZone(tz);
+        assertEquals("8:17 AM", df.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()'
+     */
+    public final void testGetTimeZone() {
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        TimeZone tz = TimeZone.getTimeZone("EST");
+        df.setTimeZone(tz);
+        assertEquals(tz, df.getTimeZone());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)'
+     */
+    public final void testSetLenient() throws Exception {
+        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+        df.parse("2/31/90"); // succeeds, default is lenient
+        df.setLenient(false);
+        try {
+            df.parse("2/31/90");
+            throw new Exception("strict parse should have failed");
+        }
+        catch (ParseException e) {
+            // ok, this is what we expect
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.isLenient()'
+     */
+    public final void testIsLenient() {
+        DateFormat df = DateFormat.getInstance();
+        assertTrue(df.isLenient());
+        df.setLenient(false);
+        assertFalse(df.isLenient());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)'
+     */
+    public final void testGetDateInstanceCalendarIntLocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)'
+     */
+    public final void testGetDateInstanceCalendarIntULocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)'
+     */
+    public final void testGetTimeInstanceCalendarIntLocale() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)'
+     */
+    public final void testGetTimeInstanceCalendarIntULocale() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntIntLocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntIntULocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)'
+     */
+    public final void testGetInstanceCalendarLocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)'
+     */
+    public final void testGetInstanceCalendarULocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)'
+     */
+    public final void testGetInstanceCalendar() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)'
+     */
+    public final void testGetDateInstanceCalendarInt() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)'
+     */
+    public final void testGetTimeInstanceCalendarInt() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntInt() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.toString()'
+     */
+    public final void testToString() {
+        assertNotNull(aDF.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.clone()'
+     */
+    public final void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)'
+     */
+    public final void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..5e9c87a
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java
@@ -0,0 +1,344 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class DecimalFormatSymbolsTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.hashCode()'
+     */
+    public void testHashCode() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+        DecimalFormatSymbols dfs2 = new DecimalFormatSymbols(ULocale.US);
+        DecimalFormatSymbols dfsn = new DecimalFormatSymbols(Locale.FRANCE);
+        testEHCS(dfs, dfs2, dfsn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(DecimalFormatSymbols)'
+     */
+    public void testDecimalFormatSymbolsDecimalFormatSymbols() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols()'
+     */
+    public void testDecimalFormatSymbols() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(Locale)'
+     */
+    public void testDecimalFormatSymbolsLocale() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(ULocale)'
+     */
+    public void testDecimalFormatSymbolsULocale() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getZeroDigit()'
+     */
+    public void testGetZeroDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('0', dfs.getZeroDigit());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setZeroDigit(char)'
+     */
+    public void testSetZeroDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getZeroDigit();
+        char value1 = (char)(value + 1);
+        dfs.setZeroDigit(value1);
+        char result = dfs.getZeroDigit();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getGroupingSeparator()'
+     */
+    public void testGetGroupingSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals(',', dfs.getGroupingSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setGroupingSeparator(char)'
+     */
+    public void testSetGroupingSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getGroupingSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setGroupingSeparator(value1);
+        char result = dfs.getGroupingSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDecimalSeparator()'
+     */
+    public void testGetDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('.', dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDecimalSeparator(char)'
+     */
+    public void testSetDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getDecimalSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setDecimalSeparator(value1);
+        char result = dfs.getDecimalSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPerMill()'
+     */
+    public void testGetPerMill() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('\u2030', dfs.getPerMill());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPerMill(char)'
+     */
+    public void testSetPerMill() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPerMill();
+        char value1 = (char)(value + 1);
+        dfs.setPerMill(value1);
+        char result = dfs.getPerMill();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPercent()'
+     */
+    public void testGetPercent() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('%', dfs.getPercent());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPercent(char)'
+     */
+    public void testSetPercent() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPercent();
+        char value1 = (char)(value + 1);
+        dfs.setPercent(value1);
+        char result = dfs.getPercent();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDigit()'
+     */
+    public void testGetDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('#', dfs.getDigit());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDigit(char)'
+     */
+    public void testSetDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getDigit();
+        char value1 = (char)(value + 1);
+        dfs.setDigit(value1);
+        char result = dfs.getDigit();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPatternSeparator()'
+     */
+    public void testGetPatternSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals(';', dfs.getPatternSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPatternSeparator(char)'
+     */
+    public void testSetPatternSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPatternSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setPatternSeparator(value1);
+        char result = dfs.getPatternSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInfinity()'
+     */
+    public void testGetInfinity() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("\u221e", dfs.getInfinity());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInfinity(String)'
+     */
+    public void testSetInfinity() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getInfinity();
+        String value1 = value + "!";
+        dfs.setInfinity(value1);
+        String result = dfs.getInfinity();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getNaN()'
+     */
+    public void testGetNaN() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertNotNull(dfs.getNaN()); // java returns missing character???
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setNaN(String)'
+     */
+    public void testSetNaN() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getNaN();
+        String value1 = value + "!";
+        dfs.setNaN(value1);
+        String result = dfs.getNaN();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMinusSign()'
+     */
+    public void testGetMinusSign() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('-', dfs.getMinusSign());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMinusSign(char)'
+     */
+    public void testSetMinusSign() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getMinusSign();
+        char value1 = (char)(value + 1);
+        dfs.setMinusSign(value1);
+        char result = dfs.getMinusSign();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getCurrencySymbol()'
+     */
+    public void testGetCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("$", dfs.getCurrencySymbol());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setCurrencySymbol(String)'
+     */
+    public void testSetCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getCurrencySymbol();
+        String value1 = value + "!";
+        dfs.setCurrencySymbol(value1);
+        String result = dfs.getCurrencySymbol();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInternationalCurrencySymbol()'
+     */
+    public void testGetInternationalCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("USD", dfs.getInternationalCurrencySymbol());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInternationalCurrencySymbol(String)'
+     */
+    public void testSetInternationalCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getInternationalCurrencySymbol();
+        String value1 = value + "!";
+        dfs.setInternationalCurrencySymbol(value1);
+        String result = dfs.getInternationalCurrencySymbol();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMonetaryDecimalSeparator()'
+     */
+    public void testGetMonetaryDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('.', dfs.getMonetaryDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMonetaryDecimalSeparator(char)'
+     */
+    public void testSetMonetaryDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getMonetaryDecimalSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setMonetaryDecimalSeparator(value1);
+        char result = dfs.getMonetaryDecimalSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.clone()'
+     */
+    public void testClone() {
+        // tested in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested in testHashcode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java
new file mode 100644
index 0000000..a1a9f1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java
@@ -0,0 +1,242 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+
+public class DecimalFormatTest extends ICUTestCase {
+    private static final long lmax = Long.MAX_VALUE;
+    private static final double dsmall = 23.33;
+        
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.clone()'
+     */
+    public void testClone() {
+        DecimalFormat df = new DecimalFormat("#,#0.00");
+        DecimalFormat df2 = new DecimalFormat("#,#0.00");
+        DecimalFormat dfn = new DecimalFormat("#,#0.00");
+        dfn.setNegativePrefix(dfn.getNegativePrefix() + '!');
+        testEHCS(df, df2, dfn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(DecimalFormat)'
+     */
+    public void testDecimalFormatDecimalFormat() {
+        // tested implicitly
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat()'
+     */
+    public void testDecimalFormat() {
+        DecimalFormat df = new DecimalFormat();
+        assertEquals("9,223,372,036,854,775,807", df.format(lmax));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String)'
+     */
+    public void testDecimalFormatString() {
+        DecimalFormat df = new DecimalFormat("#,##0.000");
+        assertEquals("23.330", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String, DecimalFormatSymbols)'
+     */
+    public void testDecimalFormatStringDecimalFormatSymbols() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE);
+        DecimalFormat df = new DecimalFormat("#,##0.000", sym);
+        assertEquals("23,330", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getDecimalFormatSymbols()'
+     */
+    public void testGetDecimalFormatSymbols() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE);
+        DecimalFormat df = new DecimalFormat("#,##0.000", sym);
+        assertEquals(sym, df.getDecimalFormatSymbols());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols)'
+     */
+    public void testSetDecimalFormatSymbols() {
+        DecimalFormat df = new DecimalFormat();
+        df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.FRANCE));
+        assertEquals("23,33", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getPositivePrefix()'
+     */
+    public void testGetPositivePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        assertEquals("+", df.getPositivePrefix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setPositivePrefix(String)'
+     */
+    public void testSetPositivePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setPositivePrefix("?");
+        assertEquals("?23.3", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativePrefix()'
+     */
+    public void testGetNegativePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        assertEquals("-", df.getNegativePrefix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativePrefix(String)'
+     */
+    public void testSetNegativePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setNegativePrefix("~");
+        assertEquals("~23.3", df.format(-dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getPositiveSuffix()'
+     */
+    public void testGetPositiveSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~");
+        assertEquals("**", df.getPositiveSuffix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setPositiveSuffix(String)'
+     */
+    public void testSetPositiveSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setPositiveSuffix("**");
+        assertEquals("+23.3**", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativeSuffix()'
+     */
+    public void testGetNegativeSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~");
+        assertEquals("~~", df.getNegativeSuffix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativeSuffix(String)'
+     */
+    public void testSetNegativeSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setNegativeSuffix("~~");
+        assertEquals("-23.3~~", df.format(-dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getMultiplier()'
+     */
+    public void testGetMultiplier() {
+        DecimalFormat df = new DecimalFormat("%000");
+        df.setMultiplier(1000);
+        assertEquals(1000, df.getMultiplier());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setMultiplier(int)'
+     */
+    public void testSetMultiplier() {
+        DecimalFormat df = new DecimalFormat("%000");
+        assertEquals("%012", df.format(.123));
+        df.setMultiplier(1000);
+        assertEquals("%123", df.format(.123));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getGroupingSize()'
+     */
+    public void testGetGroupingSize() {
+        DecimalFormat df = new DecimalFormat("#,#0.#");
+        assertEquals(2, df.getGroupingSize());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setGroupingSize(int)'
+     */
+    public void testSetGroupingSize() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        assertEquals("1,234,567.89", df.format(1234567.89));
+        df.setGroupingSize(2);
+        assertEquals("1,23,45,67.89", df.format(1234567.89));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.isDecimalSeparatorAlwaysShown()'
+     */
+    public void testIsDecimalSeparatorAlwaysShown() {
+        DecimalFormat df = new DecimalFormat("#.#");
+        df.setDecimalSeparatorAlwaysShown(false);
+        assertEquals("1", df.format(1));
+        assertEquals("1.2", df.format(1.2));
+        df.setDecimalSeparatorAlwaysShown(true);
+        assertEquals("1.", df.format(1));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalSeparatorAlwaysShown(boolean)'
+     */
+    public void testSetDecimalSeparatorAlwaysShown() {
+        DecimalFormat df = new DecimalFormat("#.#");
+        df.setDecimalSeparatorAlwaysShown(false);
+        assertFalse(df.isDecimalSeparatorAlwaysShown());
+        df.setDecimalSeparatorAlwaysShown(true);
+        assertTrue(df.isDecimalSeparatorAlwaysShown());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.toPattern()'
+     */
+    public void testToPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        assertEquals("#,##0.##", df.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.toLocalizedPattern()'
+     */
+    public void testToLocalizedPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE));
+        assertEquals("#,##0.##", df.toPattern());
+        assertEquals("#\u00a0##0,##", df.toLocalizedPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        df.applyPattern("#,0.#");
+        assertEquals("1,2,3.4", df.format(123.4));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.applyLocalizedPattern(String)'
+     */
+    public void testApplyLocalizedPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE));
+        df.applyLocalizedPattern("#\u00a00,#");
+        assertEquals("1\u00a02\u00a03,4", df.format(123.4));
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java
new file mode 100644
index 0000000..13f2003
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java
@@ -0,0 +1,286 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+import junit.framework.TestCase;
+
+/**
+ * Implement boilerplate tests.
+ * Currently there is only one method, testEHCS, which tests equals, hashCode, 
+ * clone, and serialization.
+ */
+public abstract class ICUTestCase extends TestCase {
+    private static final Object[] EMPTY_ARGS = {};
+    private static final Class[] EMPTY_CLASSES = {};
+        
+    private static final Locale oldLocale = Locale.getDefault();
+    private static final ULocale oldULocale = ULocale.getDefault();
+    private static final java.util.TimeZone oldJTimeZone = java.util.TimeZone.getDefault();
+    private static final TimeZone oldITimeZone = TimeZone.getDefault();
+                
+    // TODO: what's the best way to check this?
+    public static final boolean testingWrapper = true;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        Locale.setDefault(Locale.US);
+        ULocale.setDefault(ULocale.US);
+        java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone("PST"));
+        TimeZone.setDefault(TimeZone.getTimeZone("PST"));
+    }
+        
+    protected void tearDown() throws Exception {
+        ULocale.setDefault(oldULocale);
+        Locale.setDefault(oldLocale);
+        TimeZone.setDefault(oldITimeZone);
+        java.util.TimeZone.setDefault(oldJTimeZone);
+        super.tearDown();
+    }
+
+    private static final Object test = new Object();
+        
+    /**
+     * Assert that two objects are _not_ equal.  Curiously missing from Assert.
+     * @param lhs an object to test, may be null
+     * @param rhs an object to test, may be null
+     */
+    public static void assertNotEqual(Object lhs, Object rhs) {
+        if (lhs == null) {
+            if (rhs == null) fail("null equals null");
+        } else {
+            if (lhs.equals(rhs)) {
+                fail(lhs.toString() + " equals " + rhs);
+            }
+        }
+    }
+        
+    public static void assertNotEqual(long lhs, long rhs) {
+        if (lhs == rhs) {
+            fail("values are equal: " + lhs);
+        }
+    }
+        
+    /**
+     * Test whether equality, hashCode, clone, and serialization work as expected.  
+     * Equals(Object) is assumed to return false (not throw an exception) if passed 
+     * null or an object of an incompatible class.
+     * Hashcodes must be equal iff the two objects compare equal.  No attempt is made to
+     * evaluate the quality of the hashcode distribution, so (in particular) degenerate 
+     * hashcode implementations will pass this test.
+     * Clone will be tested if the method "clone" is public on the class of obj.  
+     * It is assumed to return an object that compares equal to obj.
+     * Serialization will be tested if object implements Serializable or Externalizable.
+     * It is assumed the serialized/deserialized object compares equal to obj.
+     * @param obj the object to test
+     * @param eq an object that should compare equal to, but is not the same as, obj.  
+     *     it should be assignable to the class of obj.
+     * @param neq a non-null object that should not compare equal to obj.  
+     *     it should be assignable to the class of obj.
+     */
+    public static void testEHCS(Object obj, Object eq, Object neq) {
+        if (obj == null || eq == null || neq == null) {
+            throw new NullPointerException();
+        }
+        Class cls = obj.getClass();
+        if (!(cls.isAssignableFrom(eq.getClass()) && cls.isAssignableFrom(neq.getClass()))) {
+            throw new IllegalArgumentException("unassignable classes");
+        }
+                
+        // reflexive
+        assertEquals(obj, obj);
+                
+        // should return false, not throw exception
+        assertNotEqual(obj, test);
+        assertNotEqual(obj, null);
+                
+        // commutative
+        assertEquals(obj, eq);
+        assertEquals(eq, obj);
+                
+        assertNotEqual(obj, neq);
+        assertNotEqual(neq, obj);
+                
+        // equal objects MUST have equal hashes, unequal objects MAY have equal hashes
+        assertEquals(obj.hashCode(), eq.hashCode());
+                
+        Object clone = null;
+        try {
+            // look for public clone method and call it if available
+            Method method_clone = cls.getMethod("clone", EMPTY_CLASSES);
+            clone = method_clone.invoke(obj, EMPTY_ARGS);
+            assertNotNull(clone);
+        }
+        catch(NoSuchMethodException e) {
+            // ok
+        }
+        catch(InvocationTargetException e) {
+            // ok
+        }
+        catch(IllegalAccessException e) {
+            // ok
+        }
+                
+        if (clone != null) {
+            assertEquals(obj, clone);
+            assertEquals(clone, obj);
+        }
+                
+        if (obj instanceof Serializable || obj instanceof Externalizable) {
+            Object ser = null;
+            try {
+                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(bos);
+                oos.writeObject(clone);
+                oos.close();
+                                
+                ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+                ObjectInputStream ois = new ObjectInputStream(bis);
+                ser = ois.readObject();
+                ois.close();
+            }
+            catch(IOException e) {
+                System.err.println(e.getMessage());
+                throw new RuntimeException(e);
+            }
+            catch(ClassNotFoundException e) {
+                System.err.println(e.getMessage());
+                throw new RuntimeException(e);
+            }
+                        
+            if (ser != null) {
+                assertEquals(obj, ser);
+                assertEquals(ser, obj);
+                assertEquals(obj.hashCode(), ser.hashCode());
+            }
+        }
+    }
+
+    /**
+     * Fail if the arrays are not equal.  To be equal, the arrays must
+     * be the same length, and each element in the left array must compare
+     * equal to the corresponding element of the right array.
+     * Also fails if one of the objects is not an array.
+     * @param lhs the left array
+     * @param rhs the right array
+     */
+    public static void assertArraysEqual(Object lhs, Object rhs) {
+        Class lcls = lhs.getClass();
+        Class rcls = rhs.getClass();
+        if (!(lcls.isArray() && rcls.isArray())) {
+            fail("objects are not arrays");
+        }
+        String result = arraysAreEqual(lhs, rhs);
+        if (result != null) {
+            fail(result);
+        }
+    }
+
+    /**
+     * Fail if the arrays are equal.  Also fails if one or the other 
+     * argument is not an array.
+     * @param lhs the left array
+     * @param rhs the right array
+     */
+    public static void assertArraysNotEqual(Object lhs, Object rhs) {
+        Class lcls = lhs.getClass();
+        Class rcls = rhs.getClass();
+        if (!(lcls.isArray() && rcls.isArray())) {
+            fail("objects are not arrays");
+        }
+        String result = arraysAreEqual(lhs, rhs);
+        if (result == null) {
+            fail("arrays are equal");
+        }
+    }
+        
+    // slow but general
+    private static String arraysAreEqual(Object lhsa, Object rhsa) {
+        int lhsl = Array.getLength(lhsa);
+        int rhsl = Array.getLength(rhsa);
+        if (lhsl != rhsl) {
+            return "length " + lhsl + " != " + rhsl;
+        }
+        boolean lhsaA = lhsa.getClass().getComponentType().isArray();
+        boolean rhsaA = rhsa.getClass().getComponentType().isArray();
+        if (lhsaA != rhsaA) {
+            return (lhsaA ? "" : "non-") + "array != " + (rhsaA ? "" : "non-") + "array";
+        }
+        for (int i = 0; i < lhsl; ++i) {
+            Object lhse = Array.get(lhsa, i);
+            Object rhse = Array.get(rhsa, i);
+            if (lhse == null) {
+                if (rhse != null) {
+                    return "null != " + rhse;
+                }
+            } else {
+                if (lhsaA) {
+                    String result = arraysAreEqual(lhse, rhse);
+                    if (result != null) {
+                        if (result.charAt(0) != '[') {
+                            result = " " + result;
+                        }
+                        return "[" + i + "]" + result;
+                    }
+                } else {
+                    if (!lhse.equals(rhse)) {
+                        return lhse.toString() + " != " + rhse;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+        
+    // much more painful and slow than it should be... partly because of the
+    // oddness of clone, partly because arrays don't provide a Method for 
+    // 'clone' despite the fact that they implement it and make it public.
+    public static Object cloneComplex(Object obj) {
+        Object result = null;
+        if (obj != null) {
+            Class cls = obj.getClass();
+            if (cls.isArray()) {
+                int len = Array.getLength(obj);
+                Class typ = cls.getComponentType();
+                result = Array.newInstance(typ, len);
+                boolean prim = typ.isPrimitive();
+                for (int i = 0; i < len; ++i) {
+                    Object elem = Array.get(obj, i);
+                    Array.set(result, i, prim ? elem : cloneComplex(elem));
+                }
+            } else {
+                result = obj; // default
+                try {
+                    Method cloneM = cls.getMethod("clone", null);
+                    result = cloneM.invoke(obj, null);
+                }
+                catch (NoSuchMethodException e) {
+                }
+                catch (IllegalAccessException e) {
+                }
+                catch (InvocationTargetException e) {
+                }
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java
new file mode 100644
index 0000000..c839050
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java
@@ -0,0 +1,307 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+
+public class MessageFormatTest extends ICUTestCase {
+    private final String pattern = "Deleted {0,number} files at {1,time,short} on {1,date}.";
+    private final String altPattern = "Deleted {0,  number } files at {1, time, short} on {1, date}.";
+    private final Date date = new Date(716698890835L);
+    private final Number num = new Long(3456);
+    private final Object[] args = { num, date };
+    private final Date dateOnly = new Date(716626800000L);
+    private final String englishTarget = "Deleted 3,456 files at 8:01 PM on Sep 16, 1992.";
+    private final String germanTarget = "Deleted 3.456 files at 20:01 on 16.09.1992.";
+    private final String modifiedTarget = "Deleted 3,456 files at 8:01:30 PM PDT on Sep 16, 1992.";
+    
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.hashCode()'
+     */
+    public void testHashCode() {
+        MessageFormat mf = new MessageFormat(pattern);
+        MessageFormat eq = new MessageFormat(altPattern);
+        MessageFormat ne = new MessageFormat("Deleted (0, number, currency} files at {1, time} on {1, date}.");
+        testEHCS(mf, eq, ne);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(MessageFormat)'
+     */
+    public void testMessageFormatMessageFormat() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String)'
+     */
+    public void testMessageFormatString() {
+        MessageFormat mf = new MessageFormat(pattern);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, Locale)'
+     */
+    public void testMessageFormatStringLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, ULocale)'
+     */
+    public void testMessageFormatStringULocale() {
+        MessageFormat mf = new MessageFormat(pattern, ULocale.US);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(Locale)'
+     */
+    public void testSetLocaleLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(Locale.GERMANY);
+        mf.applyPattern(pattern);
+        assertEquals(germanTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(ULocale)'
+     */
+    public void testSetLocaleULocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(ULocale.GERMANY);
+        mf.applyPattern(pattern);
+        assertEquals(germanTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getLocale()'
+     */
+    public void testGetLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(Locale.GERMANY);
+        assertEquals(Locale.GERMANY, mf.getLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getULocale()'
+     */
+    public void testGetULocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(ULocale.GERMANY);
+        assertEquals(ULocale.GERMANY, mf.getULocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        MessageFormat mf = new MessageFormat("foo");
+        mf.applyPattern(pattern);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.toPattern()'
+     */
+    public void testToPattern() {
+        MessageFormat mf = new MessageFormat(altPattern);
+        assertEquals(pattern, mf.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormatsByArgumentIndex(Format[])'
+    public void testSetFormatsByArgumentIndex() {
+        // this api is broken.  if the same argument is used twice with two different
+        // formats, this can't be used, since it sets only one format per argument.
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = {
+            NumberFormat.getIntegerInstance(),
+            DateFormat.getTimeInstance(DateFormat.SHORT),
+            DateFormat.getDateInstance(),
+        };
+        mf.setFormatsByArgumentIndex(formats);
+        assertEquals(brokenButConformantTarget, mf.format(args));
+    }
+     */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormats(Format[])'
+     */
+    public void testSetFormats() {
+        // this api, while it has the problem that the order of formats depends
+        // on the order in the string, at least lets you set all the formats.
+        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = {
+            NumberFormat.getIntegerInstance(),
+            DateFormat.getTimeInstance(DateFormat.SHORT),
+            DateFormat.getDateInstance(),
+        };
+        mf.setFormats(formats);
+        assertEquals(englishTarget, mf.format(args));
+   }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormatByArgumentIndex(int, Format)'
+     public void testSetFormatByArgumentIndex() {
+        // same problem, once you set a format for an argument, you've set all of them
+        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setFormatByArgumentIndex(1, DateFormat.getTimeInstance(DateFormat.SHORT));
+        assertEquals(brokenButConformantTarget, mf.format(args));
+
+    }
+    */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormat(int, Format)'
+     */
+    public void testSetFormat() {
+        // and ok again        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setFormat(1, DateFormat.getTimeInstance(DateFormat.LONG));
+        assertEquals(modifiedTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getFormatsByArgumentIndex()'
+    public void testGetFormatsByArgumentIndex() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = mf.getFormatsByArgumentIndex();
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+        assertEquals(formats[0], nf);
+        DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US);
+        assertEquals(formats[1], df);
+    }
+     */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getFormats()'
+     */
+    public void testGetFormats() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = mf.getFormats();
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+        assertEquals(formats[0], nf);
+        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US);
+        assertEquals(formats[1], tf);
+        DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US);
+        assertEquals(formats[2], df);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(Object[], StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectArrayStringBufferFieldPosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        mf.format(args, buf, fp);
+        assertEquals(englishTarget, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(String, Object[])'
+     */
+    public void testFormatStringObjectArray() {
+        assertEquals(englishTarget, MessageFormat.format(pattern, args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectStringBufferFieldPosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        mf.format((Object)args, buf, fp);
+        assertEquals(englishTarget, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parse(String, ParsePosition)'
+     */
+    public void testParseStringParsePosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        ParsePosition pp = new ParsePosition(1);
+        Object[] result = mf.parse("!" + englishTarget, pp);
+        assertEquals(num, result[0]);
+        assertEquals(dateOnly, result[1]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parse(String)'
+     */
+    public void testParseString() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        try {
+            Object[] result = mf.parse(englishTarget);
+            assertEquals(num, result[0]);
+            assertEquals(dateOnly, result[1]);
+        }
+        catch (ParseException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parseObject(String, ParsePosition)'
+     */
+    public void testParseObjectStringParsePosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        ParsePosition pp = new ParsePosition(0);
+        Object result = mf.parseObject(englishTarget, pp);
+        assertEquals(num, ((Object[])result)[0]);
+        assertEquals(dateOnly, ((Object[])result)[1]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.autoQuoteApostrophe(String)'
+     */
+    public void testAutoQuoteApostrophe() {
+        String str = "Let's meet at {1,time,h 'o'' clock'} at l'Orange Bleue";
+        String pat = MessageFormat.autoQuoteApostrophe(str);
+        MessageFormat mf = new MessageFormat(pat, Locale.US);
+        String result = mf.format(args);
+        assertEquals("Let's meet at 8 o' clock at l'Orange Bleue", result);
+        assertEquals("Let''s meet at {1,time,h 'o'' clock'} at l''Orange Bleue", pat);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.clone()'
+     */
+    public void testClone() {
+        // tested already in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested already in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.toString()'
+     */
+    public void testToString() {
+        // no need to test
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
new file mode 100644
index 0000000..100b52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
@@ -0,0 +1,441 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+
+public class NumberFormatTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)'
+     */
+    public void testNumberFormat() {
+        NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance());
+        assertEquals(nf, NumberFormat.getInstance());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectStringBufferFieldPosition() {
+        Number num = new Long(1234L);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        NumberFormat.getInstance().format(num, buf, fp);
+        assertEquals("1,234", buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)'
+     */
+    public void testParseObjectStringParsePosition() {
+        ParsePosition pp = new ParsePosition(0);
+        Object result = NumberFormat.getInstance().parse("1,234", pp);
+        assertEquals(result, new Long(1234));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)'
+     */
+    public void testFormatDouble() {
+        assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)'
+     */
+    public void testFormatLong() {
+        assertEquals("1,234", NumberFormat.getInstance().format(1234L));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)'
+     */
+    public void testFormatBigInteger() {
+        // note, java doesn't handle biginteger with full precision.
+        BigInteger bi = new BigInteger("123456");
+        assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)'
+     */
+    public void testFormatDoubleStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        assertEquals("123,456.789", NumberFormat.getInstance().format(123456.789, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)'
+     */
+    public void testFormatLongStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        assertEquals("123,456", NumberFormat.getInstance().format(123456L, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)'
+     */
+    public void testFormatBigIntegerStringBufferFieldPosition() {
+        // note, java doesn't handle biginteger with full precision.
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        BigInteger bi = new BigInteger("123456");
+        assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)'
+     */
+    public void testParseStringParsePosition() {
+        ParsePosition pp = new ParsePosition(3);
+        assertEquals(new Long(123456), NumberFormat.getInstance().parse("xxx123,456yyy", pp));
+        assertEquals(10, pp.getIndex());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)'
+     */
+    public void testParseString() throws ParseException {
+        Number result = NumberFormat.getInstance().parse("123,456,yyy");
+        assertEquals(new Long(123456), result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()'
+     */
+    public void testIsParseIntegerOnly() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setParseIntegerOnly(true);
+        assertTrue(nf.isParseIntegerOnly());
+        nf.setParseIntegerOnly(false);
+        assertFalse(nf.isParseIntegerOnly());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)'
+     */
+    public void testSetParseIntegerOnly() throws ParseException {
+        String str = "123.456,yyy";
+        NumberFormat nf = NumberFormat.getInstance();
+        assertEquals(new Double(123.456), nf.parse(str));
+        nf.setParseIntegerOnly(true);
+        assertEquals(new Long(123), nf.parse(str));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()'
+     */
+    public void testGetInstance() {
+        // used everywhere, no need to test
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
+        assertEquals("123,456", nf.format(123.456));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY);
+        assertEquals("123,456", nf.format(123.456));            
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()'
+     */
+    public void testGetNumberInstance() {
+        NumberFormat nf = NumberFormat.getNumberInstance();
+        assertEquals("123,456.789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)'
+     */
+    public void testGetNumberInstanceLocale() {
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY);
+        assertEquals("123.456,789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)'
+     */
+    public void testGetNumberInstanceULocale() {
+        NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY);
+        assertEquals("123.456,789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()'
+     */
+    public void testGetIntegerInstance() {
+        NumberFormat nf = NumberFormat.getIntegerInstance();
+        assertEquals("123,457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)'
+     */
+    public void testGetIntegerInstanceLocale() {
+        NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY);
+        assertEquals("123.457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)'
+     */
+    public void testGetIntegerInstanceULocale() {
+        NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY);
+        assertEquals("123.457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()'
+     */
+    public void testGetCurrencyInstance() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance();
+        assertEquals("$123,456.99", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)'
+     */
+    public void testGetCurrencyInstanceLocale() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        assertEquals("123.456,99 \u20AC", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)'
+     */
+    public void testGetCurrencyInstanceULocale() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance(ULocale.GERMANY);
+        assertEquals("123.456,99 \u20AC", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()'
+     */
+    public void testGetPercentInstance() {
+        NumberFormat nf = NumberFormat.getPercentInstance();
+        assertEquals("123,456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)'
+     */
+    public void testGetPercentInstanceLocale() {
+        NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY);
+        assertEquals("123.456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)'
+     */
+    public void testGetPercentInstanceULocale() {
+        NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY);
+        assertEquals("123.456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()'
+     */
+    public void testGetScientificInstance() {
+        NumberFormat nf = NumberFormat.getScientificInstance();
+        assertEquals(".123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)'
+     */
+    public void testGetScientificInstanceLocale() {
+        NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY);
+        assertEquals(",123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)'
+     */
+    public void testGetScientificInstanceULocale() {
+        NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY);
+        assertEquals(",123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        Locale[] ilocales = NumberFormat.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
+            for (int i = 0; i < ilocales.length; ++i) {
+                assertEquals(jlocales[i], ilocales[i]);
+            }
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        ULocale[] ulocales = NumberFormat.getAvailableULocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
+            for (int i = 0; i < ulocales.length; ++i) {
+                assertEquals(jlocales[i], ulocales[i].toLocale());
+            }
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()'
+     */
+    public void testIsGroupingUsed() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setGroupingUsed(true);
+        assertTrue(nf.isGroupingUsed());
+        nf.setGroupingUsed(false);
+        assertFalse(nf.isGroupingUsed());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)'
+     */
+    public void testSetGroupingUsed() {
+        NumberFormat nf = NumberFormat.getInstance();
+        assertEquals("123,456,789", nf.format(123456789));
+        nf.setGroupingUsed(false);
+        assertEquals("123456789", nf.format(123456789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()'
+     */
+    public void testGetMaximumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(4);
+        assertEquals(4, nf.getMaximumIntegerDigits());
+        nf.setMaximumIntegerDigits(6);
+        assertEquals(6, nf.getMaximumIntegerDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)'
+     */
+    public void testSetMaximumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(4);
+        assertEquals("3,456", nf.format(123456)); // high digits truncated
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()'
+     */
+    public void testGetMinimumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumIntegerDigits(4);
+        assertEquals(4, nf.getMinimumIntegerDigits());
+        nf.setMinimumIntegerDigits(6);
+        assertEquals(6, nf.getMinimumIntegerDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)'
+     */
+    public void testSetMinimumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumIntegerDigits(4);
+        assertEquals("0,012", nf.format(12)); // pad out with zero, grouping still used
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()'
+     */
+    public void testGetMaximumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        assertEquals(4, nf.getMaximumFractionDigits());
+        nf.setMaximumFractionDigits(6);
+        assertEquals(6, nf.getMaximumFractionDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)'
+     */
+    public void testSetMaximumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        assertEquals("1.2346", nf.format(1.2345678)); // low digits rounded
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()'
+     */
+    public void testGetMinimumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumFractionDigits(4);
+        assertEquals(4, nf.getMinimumFractionDigits());
+        nf.setMinimumFractionDigits(6);
+        assertEquals(6, nf.getMinimumFractionDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)'
+     */
+    public void testSetMinimumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumFractionDigits(4);
+        assertEquals("1.2000", nf.format(1.2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.toString()'
+     */
+    public void testToString() {
+        assertNotNull(NumberFormat.getInstance().toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()'
+     */
+    public void testHashCode() {
+        NumberFormat nf = NumberFormat.getInstance();
+        NumberFormat eq = NumberFormat.getInstance(Locale.US);
+        NumberFormat neq = NumberFormat.getInstance(Locale.GERMANY);
+                
+        ICUTestCase.testEHCS(nf, eq, neq);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.clone()'
+     */
+    public void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java
new file mode 100644
index 0000000..6e09027
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class SimpleDateFormatTest extends ICUTestCase {
+    private static final String mdy = "MMM dd yyyy";
+    private static final String md2 = "MMM dd yy";
+    private static final String hmz = "'The time is' HH:mm:ss zzz";
+    private static final String hmzmdy = hmz + " 'on' " + mdy;
+    private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006";
+        
+    private static final TimeZone tzc = TimeZone.getTimeZone("CST");
+    private static final TimeZone tzp = TimeZone.getTimeZone("PST");
+    private static final Calendar cal = Calendar.getInstance(tzc);
+    private static final Date date;
+    static {
+        cal.clear();
+        cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis
+        date = cal.getTime();
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)'
+     */
+    public void testFormatCalendarStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.format(cal, buf, fp);
+        assertEquals(hmzmdyStr, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)'
+     */
+    public void testParseStringCalendarParsePosition() {
+        Calendar cal = Calendar.getInstance(tzp);
+        cal.clear();
+        ParsePosition pp = new ParsePosition(0);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.parse(hmzmdyStr, cal, pp);
+        assertEquals(date, cal.getTime());
+        // note: java doesn't return the parsed time zone
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()'
+     */
+    public void testClone() {
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()'
+     */
+    public void testSimpleDateFormat() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat();
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)'
+     */
+    public void testSimpleDateFormatString() {
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)'
+     */
+    public void testSimpleDateFormatStringLocale() {
+        Locale l = Locale.JAPAN;
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)'
+     */
+    public void testSimpleDateFormatStringULocale() {
+        ULocale l = ULocale.JAPAN;
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale());
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)'
+     */
+    public void testSimpleDateFormatStringDateFormatSymbols() {
+        Locale l = Locale.US;
+        DateFormatSymbols dfs = new DateFormatSymbols(l);
+        java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)'
+     */
+    public void testSet2DigitYearStart() {
+        SimpleDateFormat sdf = new SimpleDateFormat(md2);
+        sdf.set2DigitYearStart(date);
+        try {
+            Date d = sdf.parse("Jan 15 04");
+            assertNotEqual(-1, d.toString().indexOf("2104"));
+        }
+        catch (ParseException pe) {
+            fail(pe.getMessage());
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()'
+     */
+    public void testGet2DigitYearStart() {
+        SimpleDateFormat sdf = new SimpleDateFormat(md2);
+        sdf.set2DigitYearStart(date);
+        assertEquals(date, sdf.get2DigitYearStart());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()'
+     */
+    public void testToPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        assertEquals(mdy, sdf.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()'
+     */
+    public void testToLocalizedPattern() {
+        Locale l = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        assertEquals(mdy, sdf.toLocalizedPattern());
+        Locale.setDefault(l);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        sdf.setTimeZone(tzc);
+        sdf.applyPattern(hmzmdy);
+        assertEquals(hmzmdyStr, sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)'
+     */
+    public void testApplyLocalizedPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        sdf.setTimeZone(tzc);
+        sdf.applyLocalizedPattern(hmzmdy);
+        assertEquals(hmzmdyStr, sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()'
+     */
+    public void testGetDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
+        assertEquals(dfs, sdf.getDateFormatSymbols());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)'
+     */
+    public void testSetDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.setDateFormatSymbols(dfs);
+        // assumes Japanese symbols do not have gregorian month names
+        assertEquals(-1, sdf.format(date).indexOf("Jan"));
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java
new file mode 100644
index 0000000..547a208
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.hashCode()'
+     */
+    public void testHashCode() {
+        TimeZone tz1 = TimeZone.getTimeZone("PST");
+        TimeZone tz2 = TimeZone.getTimeZone("PST");
+        TimeZone tzn = TimeZone.getTimeZone("CST");
+        testEHCS(tz1, tz2, tzn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.TimeZone(TimeZone)'
+     */
+    public void testTimeZone() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getOffset(int, int, int, int, int, int)'
+     */
+    public void testGetOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int offset = tz.getOffset(1, 2004, 0, 01, 1, 0);
+        assertEquals(-28800000, offset);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setRawOffset(int)'
+     */
+    public void testSetRawOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int value = tz.getRawOffset();
+        int value1 = value + 100000;
+        tz.setRawOffset(value1);
+        int result = tz.getRawOffset();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getRawOffset()'
+     */
+    public void testGetRawOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int offset = tz.getRawOffset();
+        assertEquals(-28800000, offset);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getID()'
+     */
+    public void testGetID() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PST", tz.getID());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setID(String)'
+     */
+    public void testSetID() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        String value1 = tz.getID();
+        String value2 = value1 + "!";
+        tz.setID(value2);
+        String result = tz.getID();
+        assertNotEqual(value1, result);
+        assertEquals(value2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName()'
+     */
+    public void testGetDisplayName() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(Locale)'
+     */
+    public void testGetDisplayNameLocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName(Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName(ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int)'
+     */
+    public void testGetDisplayNameBooleanInt() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, Locale)'
+     */
+    public void testGetDisplayNameBooleanIntLocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, ULocale)'
+     */
+    public void testGetDisplayNameBooleanIntULocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, ULocale.US));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDSTSavings()'
+     */
+    public void testGetDSTSavings() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals(3600000, tz.getDSTSavings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.useDaylightTime()'
+     */
+    public void testUseDaylightTime() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertTrue(tz.useDaylightTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.inDaylightTime(Date)'
+     */
+    public void testInDaylightTime() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        Calendar cal = Calendar.getInstance();
+        cal.set(2005, 0, 17);
+        Date date = cal.getTime();
+        assertFalse(tz.inDaylightTime(date));
+        cal.set(2005, 6, 17);
+        date = cal.getTime();
+        assertTrue(tz.inDaylightTime(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getTimeZone(String)'
+     */
+    public void testGetTimeZone() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs(int)'
+     */
+    public void testGetAvailableIDsInt() {
+        String[] ids = TimeZone.getAvailableIDs(-28800000);
+        assertNotNull(ids);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs()'
+     */
+    public void testGetAvailableIDs() {
+        String[] ids = TimeZone.getAvailableIDs();
+        assertNotNull(ids);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDefault()'
+     */
+    public void testGetDefault() {
+        TimeZone tz = TimeZone.getDefault();
+        assertNotNull(tz);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setDefault(TimeZone)'
+     */
+    public void testSetDefault() {
+        TimeZone tz1 = TimeZone.getDefault();
+        String newCode = "PDT".equals(tz1.getID()) ? "CST" : "PDT";
+        TimeZone tz2 = TimeZone.getTimeZone(newCode);
+        TimeZone.setDefault(tz2);
+        TimeZone result = TimeZone.getDefault();
+        assertNotEqual(tz1, result);
+        assertEquals(tz2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.hasSameRules(TimeZone)'
+     */
+    public void testHasSameRules() {
+        TimeZone tz1 = TimeZone.getTimeZone("PST");
+        TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles");
+        assertTrue(tz1.hasSameRules(tz2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java
new file mode 100644
index 0000000..8730d66
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java
@@ -0,0 +1,748 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Iterator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+public class ULocaleTest extends ICUTestCase {
+    private String sampleName;
+    private String longULocaleName;
+    private String longULocaleBasename;
+    private String nonNormalizedName;
+    private ULocale longULocale;
+    private Locale sampleLocale;
+        
+    /**
+     * @Override
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+                
+        sampleName = "ll_CC_VVVV";
+        longULocaleName = "ll_Ssss_CC_VVVV@collation=phonebook;key=value";
+        longULocaleBasename = longULocaleName.substring(0, longULocaleName.indexOf('@'));
+        nonNormalizedName = "LL_ssss_cc_VVVV@ Key = value ; Collation = phonebook ; ";
+        longULocale = new ULocale(longULocaleName);
+        sampleLocale = new ULocale(sampleName).toLocale();
+    }
+        
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.hashCode()'
+     */
+    public void testHashCode() {
+        ULocale obj = ULocale.GERMANY;
+        ULocale eq = new ULocale("de_DE");
+        ULocale neq = new ULocale("de_DE_FRENCH");
+                
+        ICUTestCase.testEHCS(obj, eq, neq);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.forLocale(Locale)'
+     */
+    public void testForLocale() {
+        assertEquals(ULocale.GERMANY, ULocale.forLocale(Locale.GERMANY));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String)'
+     */
+    public void testULocaleString() {
+        assertEquals(ULocale.GERMAN, new ULocale("de"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String)'
+     */
+    public void testULocaleStringString() {
+        assertEquals(ULocale.GERMANY, new ULocale("de", "DE"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String, String)'
+     */
+    public void testULocaleStringStringString() {
+        assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.createCanonical(String)'
+     */
+    public void testCreateCanonical() {
+        ULocale result = ULocale.createCanonical("de__PHONEBOOK");
+        assertEquals(new ULocale("de@collation=phonebook"), result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.toLocale()'
+     */
+    public void testToLocale() {
+        assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDefault()'
+     */
+    public void testGetDefault() {
+        assertEquals(Locale.getDefault(), ULocale.getDefault().toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setDefault(ULocale)'
+     */
+    public void testSetDefault() {
+        Locale oldLocale = Locale.getDefault();
+        ULocale oldULocale = ULocale.getDefault();
+        try {
+            ULocale.setDefault(longULocale);
+            ICUTestCase.assertNotEqual(Locale.getDefault(), oldLocale);
+            ICUTestCase.assertNotEqual(ULocale.getDefault(), oldULocale);
+            assertEquals(longULocale, ULocale.getDefault());
+            assertEquals(sampleLocale, Locale.getDefault());
+        }
+        finally {
+            ULocale.setDefault(oldULocale);
+            Locale.setDefault(oldLocale); // in case of some error
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.clone()'
+     */
+    public void testClone() {
+        // see testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        ULocale[] ulocales = ULocale.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] locales = Locale.getAvailableLocales();
+            for (int i = 0; i < ulocales.length; ++i) {
+                assertEquals(ulocales[i].toLocale(), locales[i]);
+            }
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISOCountries()'
+     */
+    public void testGetISOCountries() {
+        String[] ucountries = ULocale.getISOCountries();
+        assertNotNull(ucountries);
+        if (ICUTestCase.testingWrapper) {
+            // keep our own data for now
+            // our data doesn't match java's so this test would fail
+            // TODO: enable if we decide to use java's data
+            // String[] countries = Locale.getISOCountries();
+            // TestBoilerplate.assertArraysEqual(ucountries, countries);
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISOLanguages()'
+     */
+    public void testGetISOLanguages() {
+        String[] ulanguages = ULocale.getISOLanguages();
+        assertNotNull(ulanguages);
+        if (ICUTestCase.testingWrapper) {
+            // keep our own data for now
+            // our data doesn't match java's so this test would fail
+            // TODO: enable if we decide to use java's data
+            // String[] languages = Locale.getISOLanguages();
+            // TestBoilerplate.assertArraysEqual(ulanguages, languages);
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage()'
+     */
+    public void testGetLanguage() {
+        assertEquals("ll", longULocale.getLanguage());
+        assertEquals("ll", longULocale.toLocale().getLanguage());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage(String)'
+     */
+    public void testGetLanguageString() {
+        assertEquals("ll", ULocale.getLanguage(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getScript()'
+     */
+    public void testGetScript() {
+        assertEquals("Ssss", longULocale.getScript());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getScript(String)'
+     */
+    public void testGetScriptString() {
+        assertEquals("Ssss", ULocale.getScript(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getCountry()'
+     */
+    public void testGetCountry() {
+        assertEquals("CC", longULocale.getCountry());
+        assertEquals("CC", longULocale.toLocale().getCountry());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getCountry(String)'
+     */
+    public void testGetCountryString() {
+        assertEquals("CC", ULocale.getCountry(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getVariant()'
+     */
+    public void testGetVariant() {
+        assertEquals("VVVV", longULocale.getVariant());
+        assertEquals("VVVV", longULocale.toLocale().getVariant());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getVariant(String)'
+     */
+    public void testGetVariantString() {
+        assertEquals("VVVV", ULocale.getVariant(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getFallback(String)'
+     */
+    public void testGetFallbackString() {
+        assertEquals(ULocale.GERMAN, ULocale.getFallback(ULocale.GERMANY.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getFallback()'
+     */
+    public void testGetFallback() {
+        assertEquals(ULocale.GERMAN, ULocale.GERMANY.getFallback());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName()'
+     */
+    public void testGetBaseName() {
+        assertEquals(longULocaleBasename, longULocale.getBaseName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName(String)'
+     */
+    public void testGetBaseNameString() {
+        assertEquals(longULocaleBasename, longULocale.getBaseName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getName()'
+     */
+    public void testGetName() {
+        assertEquals(longULocaleName, longULocale.getName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getName(String)'
+     */
+    public void testGetNameString() {
+        assertEquals(longULocaleName, ULocale.getName(nonNormalizedName));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.toString()'
+     */
+    public void testToString() {
+        assertEquals(longULocaleName, longULocale.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords()'
+     */
+    public void testGetKeywords() {
+        Iterator iter = longULocale.getKeywords();
+        assertEquals(iter.next(), "collation");
+        assertEquals(iter.next(), "key");
+        assertFalse(iter.hasNext());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords(String)'
+     */
+    public void testGetKeywordsString() {
+        Iterator iter = ULocale.getKeywords(nonNormalizedName);
+        assertEquals(iter.next(), "collation");
+        assertEquals(iter.next(), "key");
+        assertFalse(iter.hasNext());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String)'
+     */
+    public void testGetKeywordValueString() {
+        assertEquals("value", longULocale.getKeywordValue("key"));
+        assertEquals("phonebook", longULocale.getKeywordValue("collation"));
+        assertNull(longULocale.getKeywordValue("zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String, String)'
+     */
+    public void testGetKeywordValueStringString() {
+        assertEquals("value", ULocale.getKeywordValue(longULocaleName, "key"));
+        assertEquals("phonebook", ULocale.getKeywordValue(longULocaleName, "collation"));
+        assertNull(ULocale.getKeywordValue(longULocaleName, "zzyzx"));
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.canonicalize(String)'
+     */
+    public void testCanonicalize() {
+        assertEquals("de@collation=phonebook", ULocale.canonicalize("de__PHONEBOOK"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String)'
+     */
+    public void testSetKeywordValueStringString() {
+        ULocale munged = longULocale.setKeywordValue("key", "C#");
+        assertEquals("C#", munged.getKeywordValue("key"));
+        munged = munged.setKeywordValue("zzyzx", "grue");
+        assertEquals("grue", munged.getKeywordValue("zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String, String)'
+     */
+    public void testSetKeywordValueStringStringString() {
+        String munged = ULocale.setKeywordValue(longULocaleName, "key", "C#");
+        assertEquals("C#", ULocale.getKeywordValue(munged, "key"));
+        munged = ULocale.setKeywordValue(munged, "zzyzx", "grue");
+        assertEquals("grue", ULocale.getKeywordValue(munged, "zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language()'
+     */
+    public void testGetISO3Language() {
+        String il = ULocale.GERMANY.getISO3Language();
+        String jl = Locale.GERMANY.getISO3Language();
+        assertEquals(il, jl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language(String)'
+     */
+    public void testGetISO3LanguageString() {
+        String il = ULocale.getISO3Language(ULocale.GERMANY.getName());
+        String jl = Locale.GERMANY.getISO3Language();
+        assertEquals(il, jl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country()'
+     */
+    public void testGetISO3Country() {
+        String ic = ULocale.GERMANY.getISO3Country();
+        String jc = Locale.GERMANY.getISO3Country();
+        assertEquals(ic, jc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country(String)'
+     */
+    public void testGetISO3CountryString() {
+        String ic = ULocale.getISO3Country(ULocale.GERMANY.getName());
+        String jc = Locale.GERMANY.getISO3Country();
+        assertEquals(ic, jc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage()'
+     */
+    public void testGetDisplayLanguage() {
+        String idl = ULocale.GERMANY.getDisplayLanguage();
+        String jdl = Locale.GERMANY.getDisplayLanguage();
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(ULocale)'
+     */
+    public void testGetDisplayLanguageULocale() {
+        String idl = ULocale.GERMANY.getDisplayLanguage(ULocale.GERMANY);
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, String)'
+     */
+    public void testGetDisplayLanguageStringString() {
+        String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), "de_DE");
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, ULocale)'
+     */
+    public void testGetDisplayLanguageStringULocale() {
+        String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), ULocale.GERMANY);
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript()'
+     */
+    public void testGetDisplayScript() {
+        String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript();
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            assertEquals("Traditional Chinese", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(ULocale)'
+     */
+    public void testGetDisplayScriptULocale() {
+        String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript(ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, String)'
+     */
+    public void testGetDisplayScriptStringString() {
+        String is = ULocale.getDisplayScript("zh_Hant", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, ULocale)'
+     */
+    public void testGetDisplayScriptStringULocale() {
+        String is = ULocale.getDisplayScript("zh_Hant", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry()'
+     */
+    public void testGetDisplayCountry() {
+        String idc = ULocale.GERMANY.getDisplayCountry();
+        String jdc = Locale.GERMANY.getDisplayCountry();
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(ULocale)'
+     */
+    public void testGetDisplayCountryULocale() {
+        String idc = ULocale.GERMANY.getDisplayCountry(ULocale.GERMANY);
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, String)'
+     */
+    public void testGetDisplayCountryStringString() {
+        String idc = ULocale.getDisplayCountry("de_DE", "de_DE");
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, ULocale)'
+     */
+    public void testGetDisplayCountryStringULocale() {
+        String idc = ULocale.getDisplayCountry("de_DE", ULocale.GERMANY);
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant()'
+     */
+    public void testGetDisplayVariant() {
+        String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant();
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant();
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(ULocale)'
+     */
+    public void testGetDisplayVariantULocale() {
+        String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant(ULocale.GERMANY);
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, String)'
+     */
+    public void testGetDisplayVariantStringString() {
+        String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", "de_DE");
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, ULocale)'
+     */
+    public void testGetDisplayVariantStringULocale() {
+        String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", ULocale.GERMANY);
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String)'
+     */
+    public void testGetDisplayKeywordString() {
+        String idk = ULocale.getDisplayKeyword("collation");
+        assertEquals("collation", idk);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, String)'
+     */
+    public void testGetDisplayKeywordStringString() {
+        String idk = ULocale.getDisplayKeyword("collation", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("collation", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("collation", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, ULocale)'
+     */
+    public void testGetDisplayKeywordStringULocale() {
+        String idk = ULocale.getDisplayKeyword("collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("collation", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("collation", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String)'
+     */
+    public void testGetDisplayKeywordValueString() {
+        ULocale ul = new ULocale("de_DE@collation=phonebook");
+        String idk = ul.getDisplayKeywordValue("collation");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, ULocale)'
+     */
+    public void testGetDisplayKeywordValueStringULocale() {
+        ULocale ul = new ULocale("de_DE@collation=phonebook");
+        String idk = ul.getDisplayKeywordValue("collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, String)'
+     */
+    public void testGetDisplayKeywordValueStringStringString() {
+        String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, ULocale)'
+     */
+    public void testGetDisplayKeywordValueStringStringULocale() {
+        String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName()'
+     */
+    public void testGetDisplayName() {
+        String idn = ULocale.GERMANY.getDisplayName();
+        String jdn = Locale.GERMANY.getDisplayName();
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        String idn = ULocale.GERMANY.getDisplayName(ULocale.GERMANY);
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, String)'
+     */
+    public void testGetDisplayNameStringString() {
+        String idn = ULocale.getDisplayName("de_DE", "de_DE");
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, ULocale)'
+     */
+    public void testGetDisplayNameStringULocale() {
+        String idn = ULocale.getDisplayName("de_DE", ULocale.GERMANY);
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageStringULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] locales = { 
+            new ULocale("en_CA"), 
+            new ULocale("es_US"), 
+        };
+        ULocale result = ULocale.acceptLanguage("en-US, en-GB, en-CA, es-US", locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage("en-US, en-GB, es-US-NEWMEXICO", locales, fallback);
+        assertEquals(new ULocale("es_US"), result);
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageULocaleArrayULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] locales = { 
+            new ULocale("en_CA"), 
+            new ULocale("es_US"), 
+        };
+        ULocale[] accept_locales = {
+            new ULocale("en_US"),
+            new ULocale("en_GB"),
+            new ULocale("en_CA"),
+            new ULocale("es_US"),
+        };
+        ULocale[] accept_locales2 = {
+            new ULocale("en_US"),
+            new ULocale("en_GB"),
+            new ULocale("es_US_NEWMEXICO"),
+        };
+        ULocale result = ULocale.acceptLanguage(accept_locales, locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage(accept_locales2, locales, fallback);
+        assertEquals(new ULocale("es_US"), result);
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, boolean[])'
+     */
+    public void testAcceptLanguageStringBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale result = ULocale.acceptLanguage("en-CA, en-GB, es-US", fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage("es-US-NEWMEXICO", fallback);
+        assertNotNull(result); // actual result depends on jdk
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] accept_locales = {
+            new ULocale("en_CA"),
+            new ULocale("en_GB"),
+            new ULocale("es_US"),
+        };
+        ULocale[] accept_locales2 = {
+            new ULocale("es_US_NEWMEXICO"),
+        };
+        ULocale result = ULocale.acceptLanguage(accept_locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage(accept_locales2, fallback);
+        assertNotNull(result); // actual result depends on jdk
+        assertTrue(fallback[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath
new file mode 100644
index 0000000..0215967
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project
new file mode 100644
index 0000000..96792bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..49d7fb3
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:27 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..4af0056
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:27 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..573dfc2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: com.ibm.icu.base; singleton:=true
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Copyright: @COPYRIGHT@
+Export-Package: com.ibm.icu.text;version="@IMPL_VERSION@",
+ com.ibm.icu.util;version="@IMPL_VERSION@"
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..dfab357
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+               about_files/
+bin.includes = .,\
+               about.html,\
+               about_files/,\
+               plugin.properties,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties
new file mode 100644
index 0000000..52b7238
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = International Components for Unicode for Java (ICU4J) Replacement plug-in
+providerName = IBM Corporation
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..c95e217
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,661 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide five built-in types of BreakIterator:
+ * <ul><li>getTitleInstance() returns a BreakIterator that locates boundaries
+ * between title breaks.
+ * <li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+ * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ * @stable ICU 2.0
+ *
+ */
+public abstract class BreakIterator implements Cloneable {
+
+    protected BreakIterator() {
+    }
+
+    /**
+     * Create a copy of this iterator
+     * @return A copy of this
+     */
+    public Object clone() {
+        // this is here for subclass use.  we must override it ourselves, though.
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+        
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int first();
+        
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int last();
+        
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     * @stable ICU 2.0
+     */
+    public abstract int next(int n);
+        
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int next();
+        
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int previous();
+        
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public abstract int following(int offset);
+        
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE) {
+            pos = previous();
+        }
+        return pos;
+    }
+        
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     * @stable ICU 2.0
+     */
+    public boolean isBoundary(int offset) {
+        return offset == 0 || following(offset - 1) == offset;
+    }
+        
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     * @stable ICU 2.0
+     */
+    public abstract int current();
+        
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     * @stable ICU 2.0
+     */
+    public abstract CharacterIterator getText();
+        
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     * @stable ICU 2.0
+     */
+    public void setText(String newText) {
+        setText(new StringCharacterIterator(newText));
+    }
+        
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     * @stable ICU 2.0
+     */
+    public abstract void setText(CharacterIterator newText);
+        
+    /** @stable ICU 2.4 */
+    public static final int KIND_CHARACTER = 0;
+    /** @stable ICU 2.4 */
+    public static final int KIND_WORD = 1;
+    /** @stable ICU 2.4 */
+    public static final int KIND_LINE = 2;
+    /** @stable ICU 2.4 */
+    public static final int KIND_SENTENCE = 3;
+    /** @stable ICU 2.4 */
+    public static final int KIND_TITLE = 4;
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance() {
+        return getWordInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance(Locale where) {
+        return getBreakInstance(where, KIND_WORD);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getWordInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_WORD);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance() {
+        return getLineInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance(Locale where) {
+        return getBreakInstance(where, KIND_LINE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getLineInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_LINE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance() {
+        return getCharacterInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance(Locale where) {
+        return getBreakInstance(where, KIND_CHARACTER);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getCharacterInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_CHARACTER);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance() {
+        return getSentenceInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance(Locale where) {
+        return getBreakInstance(where, KIND_SENTENCE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getSentenceInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_SENTENCE);
+    }
+        
+    private static BreakIterator getBreakInstance(Locale where, int kind) {
+        java.text.BreakIterator br = null;
+        switch(kind) {
+        case KIND_CHARACTER: br = java.text.BreakIterator.getCharacterInstance(where); break;
+        case KIND_WORD: br = java.text.BreakIterator.getWordInstance(where); break;
+        case KIND_LINE: br = java.text.BreakIterator.getLineInstance(where); break;
+        case KIND_SENTENCE: br = java.text.BreakIterator.getSentenceInstance(where); break;             
+        case KIND_TITLE: throw new UnsupportedOperationException();
+        }
+        return new BreakIteratorHandle(br);
+    }
+        
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 3.4.3
+     */
+    public static synchronized Locale[] getAvailableLocales() {
+        return java.text.BreakIterator.getAvailableLocales();
+    }
+        
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of ULocales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 3.4.3
+     */
+    public static synchronized ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.BreakIterator.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+    
+    // forwarding implementation class
+    static final class BreakIteratorHandle extends BreakIterator {
+        /**
+         * @internal
+         */
+        public final java.text.BreakIterator breakIterator;
+
+        /**
+         * @internal
+         * @param delegate the BreakIterator to which to delegate
+         */
+        public BreakIteratorHandle(java.text.BreakIterator delegate) {
+            this.breakIterator = delegate;
+        }
+
+        public int first() {
+            return breakIterator.first();
+        }
+        public int last() {
+            return breakIterator.last();
+        }
+        public int next(int n) {
+            return breakIterator.next(n);
+        }
+        public int next() {
+            return breakIterator.next();
+        }
+        public int previous() {
+            return breakIterator.previous();
+        }
+        public int following(int offset) {
+            return breakIterator.following(offset);
+        }
+        public int preceding(int offset) {
+            return breakIterator.preceding(offset);
+        }
+        public boolean isBoundary(int offset) {
+            return breakIterator.isBoundary(offset);
+        }
+        public int current() {
+            return breakIterator.current();
+        }
+        public CharacterIterator getText() {
+            return breakIterator.getText();
+        }
+        public void setText(CharacterIterator newText) {
+            breakIterator.setText(newText);
+        }
+
+        /**
+         * Return a string suitable for debugging.
+         * @return a string suitable for debugging
+         * @stable ICU 3.4.3
+         */
+        public String toString() {
+            return breakIterator.toString();
+        }
+
+        /**
+         * Return a clone of this BreakIterator.
+         * @return a clone of this BreakIterator
+         * @stable ICU 3.4.3
+         */
+        public Object clone() {
+            return new BreakIteratorHandle((java.text.BreakIterator)breakIterator.clone());
+        }
+
+        /**
+         * Return true if rhs is a BreakIterator with the same break behavior as this.
+         * @return true if rhs equals this
+         * @stable ICU 3.4.3
+         */
+        public boolean equals(Object rhs) {
+            try {
+                return breakIterator.equals(((BreakIteratorHandle)rhs).breakIterator);
+            }
+            catch (Exception e) {
+                return false;
+            }
+        }
+
+        /**
+         * Return a hashCode.
+         * @return a hashCode
+         * @stable ICU 3.4.3
+         */
+        public int hashCode() {
+            return breakIterator.hashCode();
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..fde7b4c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,250 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * <p>A <code>CollationKey</code> represents a <code>String</code>
+ * under the rules of a specific <code>Collator</code>
+ * object. Comparing two <code>CollationKey</code>s returns the
+ * relative order of the <code>String</code>s they represent.</p>
+ *
+ * <p>Since the rule set of <code>Collator</code>s can differ, the
+ * sort orders of the same string under two different
+ * <code>Collator</code>s might differ.  Hence comparing
+ * <code>CollationKey</code>s generated from different
+ * <code>Collator</code>s can give incorrect results.</p>
+ 
+ * <p>Both the method
+ * <code>CollationKey.compareTo(CollationKey)</code> and the method
+ * <code>Collator.compare(String, String)</code> compare two strings
+ * and returns their relative order.  The performance characterictics
+ * of these two approaches can differ.</p>
+ *
+ * <p>During the construction of a <code>CollationKey</code>, the
+ * entire source string is examined and processed into a series of
+ * bits terminated by a null, that are stored in the <code>CollationKey</code>. 
+ * When <code>CollationKey.compareTo(CollationKey)</code> executes, it
+ * performs bitwise comparison on the bit sequences.  This can incurs
+ * startup cost when creating the <code>CollationKey</code>, but once
+ * the key is created, binary comparisons are fast.  This approach is
+ * recommended when the same strings are to be compared over and over
+ * again.</p>
+ *
+ * <p>On the other hand, implementations of
+ * <code>Collator.compare(String, String)</code> can examine and
+ * process the strings only until the first characters differing in
+ * order.  This approach is recommended if the strings are to be
+ * compared only once.</p>
+ * 
+ * <p>More information about the composition of the bit sequence can
+ * be found in the 
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>.</p>
+ *
+ * <p>The following example shows how <code>CollationKey</code>s can be used
+ * to sort a list of <code>String</code>s.</p>
+ * <blockquote>
+ * <pre>
+ * // Create an array of CollationKeys for the Strings to be sorted.
+ * Collator myCollator = Collator.getInstance();
+ * CollationKey[] keys = new CollationKey[3];
+ * keys[0] = myCollator.getCollationKey("Tom");
+ * keys[1] = myCollator.getCollationKey("Dick");
+ * keys[2] = myCollator.getCollationKey("Harry");
+ * sort( keys );
+ * <br>
+ * //...
+ * <br>
+ * // Inside body of sort routine, compare keys this way
+ * if( keys[i].compareTo( keys[j] ) > 0 )
+ *    // swap keys[i] and keys[j]
+ * <br>
+ * //...
+ * <br>
+ * // Finally, when we've returned from sort.
+ * System.out.println( keys[0].getSourceString() );
+ * System.out.println( keys[1].getSourceString() );
+ * System.out.println( keys[2].getSourceString() );
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @stable ICU 2.8 
+ */
+public final class CollationKey implements Comparable {
+    /**
+     * @internal
+     */
+    final java.text.CollationKey key;
+
+    /**
+     * @internal
+     */
+    CollationKey(java.text.CollationKey delegate) {
+        this.key = delegate;
+    }
+
+    /**
+     * Return the source string that this CollationKey represents.
+     * @return source string that this CollationKey represents
+     * @stable ICU 2.8
+     */
+    public String getSourceString() {
+        return key.getSourceString();
+    }
+    
+    /**
+     * <p>Duplicates and returns the value of this CollationKey as a sequence 
+     * of big-endian bytes terminated by a null.</p> 
+     *
+     * <p>If two CollationKeys can be legitimately compared, then one can
+     * compare the byte arrays of each to obtain the same result, e.g.
+     * <pre>
+     * byte key1[] = collationkey1.toByteArray();
+     * byte key2[] = collationkey2.toByteArray();
+     * int key, targetkey;
+     * int i = 0;
+     * do {
+     *       key = key1[i] & 0xFF;
+     *     targetkey = key2[i] & 0xFF;
+     *     if (key &lt; targetkey) {
+     *         System.out.println("String 1 is less than string 2");
+     *         return;
+     *     }
+     *     if (targetkey &lt; key) {
+     *         System.out.println("String 1 is more than string 2");
+     *     }
+     *     i ++;
+     * } while (key != 0 && targetKey != 0);
+     *
+     * System.out.println("Strings are equal.");
+     * </pre>
+     * </p>  
+     * @return CollationKey value in a sequence of big-endian byte bytes 
+     *         terminated by a null.
+     * @stable ICU 2.8
+     */
+    public byte[] toByteArray() {
+        return key.toByteArray();
+    }
+
+    /**
+     * <p>Compare this CollationKey to another CollationKey.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     *
+     * <p><strong>Note:</strong> Comparison between CollationKeys
+     * created by different Collators might return incorrect
+     * results.  See class documentation.</p>
+     *
+     * @param target target CollationKey
+     * @return an integer value.  If the value is less than zero this CollationKey
+     *         is less than than target, if the value is zero they are equal, and
+     *         if the value is greater than zero this CollationKey is greater 
+     *         than target.
+     * @exception NullPointerException is thrown if argument is null.
+     * @see Collator#compare(String, String)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(CollationKey target) {
+        return key.compareTo(target.key);
+    }
+
+    /**
+     * <p>Compare this CollationKey with the specified Object.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     * 
+     * <p>See note in compareTo(CollationKey) for warnings about possible
+     * incorrect results.</p>
+     *
+     * @param obj the Object to be compared to.
+     * @return Returns a negative integer, zero, or a positive integer 
+     *         respectively if this CollationKey is less than, equal to, or 
+     *         greater than the given Object.
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @see #compareTo(CollationKey)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(Object o) {
+        return compareTo((CollationKey)o);
+    }
+
+    /**
+     * <p>Compare this CollationKey and the specified Object for
+     * equality.  The collation rules of the Collator that created
+     * this key are applied.</p>
+     *
+     * <p>See note in compareTo(CollationKey) for warnings about
+     * possible incorrect results.</p>
+     *
+     * @param target the object to compare to.
+     * @return true if the two keys compare as equal, false otherwise.
+     * @see #compareTo(CollationKey)
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @stable ICU 2.8 
+     */
+    public boolean equals(Object target) {
+        try {
+            return key.equals(((CollationKey)target).key);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * <p>
+     * Compare this CollationKey and the argument target CollationKey for 
+     * equality.
+     * The collation 
+     * rules of the Collator object which created these objects are applied.
+     * </p>
+     * <p>
+     * See note in compareTo(CollationKey) for warnings of incorrect results
+     * </p>
+     * @param target the CollationKey to compare to.
+     * @return true if two objects are equal, false otherwise.
+     * @exception NullPointerException is thrown when the argument is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(CollationKey target) {
+            return key.equals(target.key);
+    }
+    
+    /**
+     * <p>Returns a hash code for this CollationKey. The hash value is calculated 
+     * on the key itself, not the String from which the key was created. Thus 
+     * if x and y are CollationKeys, then x.hashCode(x) == y.hashCode() 
+     * if x.equals(y) is true. This allows language-sensitive comparison in a 
+     * hash table.
+     * </p>
+     * @return the hash value.
+     * @stable ICU 2.8
+     */
+    public int hashCode() {
+        return key.hashCode();
+    }
+
+    /**
+     * Return a description of the CollationKey.
+     * @return a description of the CollationKey, used for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return key.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..38f680d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,565 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Comparator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+* <p>Collator performs locale-sensitive string comparison.</p>
+*
+* <p>Following the <a href=http://www.unicode.org>Unicode
+* Consortium</a>'s specifications for the
+* <a href="http://www.unicode.org/unicode/reports/tr10/"> Unicode Collation
+* Algorithm (UCA)</a>, there are 5 different levels of strength used
+* in comparisons:
+*
+* <ul>
+* <li>PRIMARY strength: Typically, this is used to denote differences between
+*     base characters (for example, "a" &lt; "b").
+*     It is the strongest difference. For example, dictionaries are divided
+*     into different sections by base character.
+* <li>SECONDARY strength: Accents in the characters are considered secondary
+*     differences (for example, "as" &lt; "&agrave;s" &lt; "at"). Other
+*     differences
+*     between letters can also be considered secondary differences, depending
+*     on the language. A secondary difference is ignored when there is a
+*     primary difference anywhere in the strings.
+* <li>TERTIARY strength: Upper and lower case differences in characters are
+*     distinguished at tertiary strength (for example, "ao" &lt; "Ao" &lt;
+*     "a&ograve;"). In addition, a variant of a letter differs from the base
+*     form on the tertiary strength (such as "A" and "&#9398;"). Another
+*     example is the
+*     difference between large and small Kana. A tertiary difference is ignored
+*     when there is a primary or secondary difference anywhere in the strings.
+* <li>QUATERNARY strength: When punctuation is ignored
+*     <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+*     (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+*     strength, an additional strength level can
+*     be used to distinguish words with and without punctuation (for example,
+*     "ab" &lt; "a-b" &lt; "aB").
+*     This difference is ignored when there is a PRIMARY, SECONDARY or TERTIARY
+*     difference. The QUATERNARY strength should only be used if ignoring
+*     punctuation is required.
+* <li>IDENTICAL strength:
+*     When all other strengths are equal, the IDENTICAL strength is used as a
+*     tiebreaker. The Unicode code point values of the NFD form of each string
+*     are compared, just in case there is no difference.
+*     For example, Hebrew cantellation marks are only distinguished at this
+*     strength. This strength should be used sparingly, as only code point
+*     value differences between two strings is an extremely rare occurrence.
+*     Using this strength substantially decreases the performance for both
+*     comparison and collation key generation APIs. This strength also
+*     increases the size of the collation key.
+* </ul>
+*
+* Unlike the JDK, ICU4J's Collator deals only with 2 decomposition modes,
+* the canonical decomposition mode and one that does not use any decomposition.
+* The compatibility decomposition mode, java.text.Collator.FULL_DECOMPOSITION
+* is not supported here. If the canonical
+* decomposition mode is set, the Collator handles un-normalized text properly,
+* producing the same results as if the text were normalized in NFD. If
+* canonical decomposition is turned off, it is the user's responsibility to
+* ensure that all text is already in the appropriate form before performing
+* a comparison or before getting a CollationKey.</p>
+*
+* <p>For more information about the collation service see the
+* <a href="http://www.icu-project.org/userguide/Collate_Intro.html">users
+* guide</a>.</p>
+*
+* <p>Examples of use
+* <pre>
+* // Get the Collator for US English and set its strength to PRIMARY
+* Collator usCollator = Collator.getInstance(Locale.US);
+* usCollator.setStrength(Collator.PRIMARY);
+* if (usCollator.compare("abc", "ABC") == 0) {
+*     System.out.println("Strings are equivalent");
+* }
+*
+* The following example shows how to compare two strings using the
+* Collator for the default locale.
+*
+* // Compare two strings in the default locale
+* Collator myCollator = Collator.getInstance();
+* myCollator.setDecomposition(NO_DECOMPOSITION);
+* if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*     System.out.println("&agrave;&#92;u0325 is not equals to a&#92;u0325&#768; without decomposition");
+*     myCollator.setDecomposition(CANONICAL_DECOMPOSITION);
+*     if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*         System.out.println("Error: &agrave;&#92;u0325 should be equals to a&#92;u0325&#768; with decomposition");
+*     }
+*     else {
+*         System.out.println("&agrave;&#92;u0325 is equals to a&#92;u0325&#768; with decomposition");
+*     }
+* }
+* else {
+*     System.out.println("Error: &agrave;&#92;u0325 should be not equals to a&#92;u0325&#768; without decomposition");
+* }
+* </pre>
+* </p>
+* @see CollationKey
+* @author Syn Wee Quek
+* @stable ICU 2.8
+*/
+public class Collator implements Comparator, Cloneable
+{
+    /**
+     * @internal
+     */
+    private final java.text.Collator collator;
+
+    /**
+     * @internal
+     */
+    private Collator(java.text.Collator delegate) {
+        this.collator = delegate;
+    }
+
+    /**
+     * Create a collator with a null delegate.
+     * For use by possible subclassers.  This is present since
+     * the original Collator is abstract, and so, in theory
+     * subclassable.  All member APIs must be overridden.
+     */
+    protected Collator() {
+        this.collator = null;
+    }
+
+    // public data members ---------------------------------------------------
+
+    /**
+     * Strongest collator strength value. Typically used to denote differences
+     * between base characters. See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int PRIMARY = java.text.Collator.PRIMARY;
+
+    /**
+     * Second level collator strength value.
+     * Accents in the characters are considered secondary differences.
+     * Other differences between letters can also be considered secondary
+     * differences, depending on the language.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int SECONDARY = java.text.Collator.SECONDARY;
+
+    /**
+     * Third level collator strength value.
+     * Upper and lower case differences in characters are distinguished at this
+     * strength level. In addition, a variant of a letter differs from the base
+     * form on the tertiary level.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int TERTIARY = java.text.Collator.TERTIARY;
+
+    /**
+     * Fourth level collator strength value.
+     * When punctuation is ignored
+     * <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+     * (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+     * strength, an additional strength level can
+     * be used to distinguish words with and without punctuation.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int QUATERNARY = java.text.Collator.IDENTICAL;
+
+    /**
+     * <p>
+     * Smallest Collator strength value. When all other strengths are equal,
+     * the IDENTICAL strength is used as a tiebreaker. The Unicode code point
+     * values of the NFD form of each string are compared, just in case there
+     * is no difference.
+     * See class documentation for more explanation.
+     * </p>
+     * <p>
+     * Note this value is different from JDK's
+     * </p>
+     * @stable ICU 2.8
+     */
+    public final static int IDENTICAL = java.text.Collator.FULL_DECOMPOSITION;
+
+    /**
+     * This is for backwards compatibility with Java APIs only.  It
+     * should not be used, IDENTICAL should be used instead.  ICU's
+     * collation does not support Java's FULL_DECOMPOSITION mode.
+     * @stable ICU 3.4
+     * @deprecated Backwards compatibility with Java only.
+     */
+    public final static int FULL_DECOMPOSITION = java.text.Collator.FULL_DECOMPOSITION;
+
+    /**
+     * <p>Decomposition mode value. With NO_DECOMPOSITION set, Strings
+     * will not be decomposed for collation. This is the default
+     * decomposition setting unless otherwise specified by the locale
+     * used to create the Collator.</p>
+     *
+     * <p><strong>Note</strong> this value is different from the JDK's.</p>
+     * @see #CANONICAL_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int NO_DECOMPOSITION = java.text.Collator.NO_DECOMPOSITION;
+
+    /**
+     * <p>Decomposition mode value. With CANONICAL_DECOMPOSITION set,
+     * characters that are canonical variants according to the Unicode standard
+     * will be decomposed for collation.</p>
+     *
+     * <p>CANONICAL_DECOMPOSITION corresponds to Normalization Form D as
+     * described in <a href="http://www.unicode.org/unicode/reports/tr15/">
+     * Unicode Technical Report #15</a>.
+     * </p>
+     * @see #NO_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int CANONICAL_DECOMPOSITION = java.text.Collator.CANONICAL_DECOMPOSITION;
+
+    // public methods --------------------------------------------------------
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * <p>Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.</p>
+     *
+     * <p>The default strength for the Collator is TERTIARY, unless specified
+     * otherwise by the locale used to create the Collator.</p>
+     *
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException if the new strength value is not one
+     *                of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength) {
+        collator.setStrength(newStrength);
+    }
+
+    /**
+     * <p>Set the decomposition mode of this Collator.  Setting this
+     * decomposition property with CANONICAL_DECOMPOSITION allows the
+     * Collator to handle un-normalized text properly, producing the
+     * same results as if the text were normalized. If
+     * NO_DECOMPOSITION is set, it is the user's responsibility to
+     * insure that all text is already in the appropriate form before
+     * a comparison or before getting a CollationKey. Adjusting
+     * decomposition mode allows the user to select between faster and
+     * more complete collation behavior.</p>
+     *
+     * <p>Since a great many of the world's languages do not require
+     * text normalization, most locales set NO_DECOMPOSITION as the
+     * default decomposition mode.</p>
+     *
+     * The default decompositon mode for the Collator is
+     * NO_DECOMPOSITON, unless specified otherwise by the locale used
+     * to create the Collator.</p>
+     *
+     * <p>See getDecomposition for a description of decomposition
+     * mode.</p>
+     *
+     * @param decomposition the new decomposition mode
+     * @see #getDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @exception IllegalArgumentException If the given value is not a valid
+     *            decomposition mode.
+     * @stable ICU 2.8
+     */
+    public void setDecomposition(int decomposition) {
+        collator.setDecomposition(decomposition);
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the Collator for the current default locale.
+     * The default locale is determined by java.util.Locale.getDefault().
+     * @return the Collator for the default locale (for example, en_US) if it
+     *         is created successfully. Otherwise if there is no Collator
+     *         associated with the current locale, the default UCA collator
+     *         will be returned.
+     * @see java.util.Locale#getDefault()
+     * @see #getInstance(Locale)
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance() {
+        return new Collator(java.text.Collator.getInstance());
+    }
+
+     /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(Locale)
+     * @see #getInstance()
+     * @stable ICU 3.4.3
+     */
+    public static final Collator getInstance(ULocale locale) {
+        return getInstance(locale.toLocale());
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(ULocale)
+     * @see #getInstance()
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance(Locale locale) {
+        return new Collator(java.text.Collator.getInstance(locale));
+    }
+
+     /**
+     * Get the set of locales, as Locale objects, for which collators
+     * are installed.  Note that Locale objects do not support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 2.4
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.Collator.getAvailableLocales();
+    }
+
+    /**
+     * Get the set of locales, as ULocale objects, for which collators
+     * are installed.  ULocale objects support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 3.4.3
+     */
+    public static final ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.Collator.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+ 
+    /**
+     * Return an array of all possible keywords that are relevant to
+     * collation. At this point, the only recognized keyword for this
+     * service is "collation".
+     * @return an array of valid collation keywords.
+     * @see #getKeywordValues
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywords() {
+        return new String[0];
+    }
+    
+    /**
+     * Given a keyword, return an array of all values for
+     * that keyword that are currently in use.
+     * @param keyword one of the keywords returned by getKeywords.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywordValues(String keyword) {
+        return new String[0];
+    }
+
+    /**
+     * <p>Returns this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return this Collator's current strength property.
+     * @see #setStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @stable ICU 2.8
+     */
+    public int getStrength() {
+        return collator.getStrength();
+    }
+
+    /**
+     * <p>
+     * Get the decomposition mode of this Collator. Decomposition mode
+     * determines how Unicode composed characters are handled.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return the decomposition mode
+     * @see #setDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @stable ICU 2.8
+     */
+    public int getDecomposition() {
+        return collator.getDecomposition();
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     *            IllegalArgumentException thrown if either source or target is
+     *            not of the class String.
+     * @stable ICU 2.8
+     */
+    public int compare(Object source, Object target) {
+        return collator.compare(source, target);
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * Convenience method for comparing the equality of two text Strings using
+     * this Collator's rules, strength and decomposition mode.
+     * @param source the source string to be compared.
+     * @param target the target string to be compared.
+     * @return true if the strings are equal according to the collation
+     *         rules, otherwise false.
+     * @see #compare
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(String source, String target) {
+        return (compare(source, target) == 0);
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public int compare(String source, String target) {
+        return collator.compare(source, target);
+    }
+
+    /**
+     * <p>
+     * Transforms the String into a CollationKey suitable for efficient
+     * repeated comparison.  The resulting key depends on the collator's
+     * rules, strength and decomposition mode.
+     * </p>
+     * <p>See the CollationKey class documentation for more information.</p>
+     * @param source the string to be transformed into a CollationKey.
+     * @return the CollationKey for the given String based on this Collator's
+     *         collation rules. If the source String is null, a null
+     *         CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @stable ICU 2.8
+     */
+    public CollationKey getCollationKey(String source) {
+        return new CollationKey(collator.getCollationKey(source));
+    }
+    
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.3
+     */
+    public String toString() {
+        return collator.toString();
+    }
+
+   /**
+     * Clone the collator.
+     * @return a clone of this collator.
+     * @stable ICU 2.6
+     */
+    public Object clone() throws CloneNotSupportedException {
+        return new Collator((java.text.Collator)collator.clone());
+    }
+
+    /**
+     * Return true if rhs is a Collator and compares the same as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.3
+     */
+    public boolean equals(Object rhs) {
+        try {
+            return collator.equals(((Collator)rhs).collator);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.3
+     */
+    public int hashCode() {
+        return collator.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..dce51f1
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,983 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * DateFormat is an abstract class for date/time formatting subclasses which
+ * formats and parses dates or time in a language-independent manner.
+ * The date/time formatting subclass, such as SimpleDateFormat, allows for
+ * formatting (i.e., date -> text), parsing (text -> date), and
+ * normalization.  The date is represented as a <code>Date</code> object or
+ * as the milliseconds since January 1, 1970, 00:00:00 GMT.
+ *
+ * <p>DateFormat provides many class methods for obtaining default date/time
+ * formatters based on the default or a given loacle and a number of formatting
+ * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More
+ * detail and examples of using these styles are provided in the method
+ * descriptions.
+ *
+ * <p>DateFormat helps you to format and parse dates for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * months, days of the week, or even the calendar format: lunar vs. solar.
+ *
+ * <p>To format a date for the current Locale, use one of the
+ * static factory methods:
+ * <pre>
+ *  myString = DateFormat.getDateInstance().format(myDate);
+ * </pre>
+ * <p>If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance();
+ *  for (int i = 0; i < a.length; ++i) {
+ *    output.println(df.format(myDate[i]) + "; ");
+ *  }
+ * </pre>
+ * <p>To format a number for a different Locale, specify it in the
+ * call to getDateInstance().
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
+ * </pre>
+ * <p>You can use a DateFormat to parse also.
+ * <pre>
+ *  myDate = df.parse(myString);
+ * </pre>
+ * <p>Use getDateInstance to get the normal date format for that country.
+ * There are other static factory methods available.
+ * Use getTimeInstance to get the time format for that country.
+ * Use getDateTimeInstance to get a date and time format. You can pass in 
+ * different options to these factory methods to control the length of the
+ * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends
+ * on the locale, but generally:
+ * <ul><li>SHORT is completely numeric, such as 12.13.52 or 3:30pm
+ * <li>MEDIUM is longer, such as Jan 12, 1952
+ * <li>LONG is longer, such as January 12, 1952 or 3:30:32pm
+ * <li>FULL is pretty completely specified, such as
+ * Tuesday, April 12, 1952 AD or 3:30:42pm PST.
+ * </ul>
+ *
+ * <p>You can also set the time zone on the format if you wish.
+ * If you want even more control over the format or parsing,
+ * (or want to give your users more control),
+ * you can try casting the DateFormat you get from the factory methods
+ * to a SimpleDateFormat. This will work for the majority
+ * of countries; just remember to put it in a try block in case you
+ * encounter an unusual one.
+ *
+ * <p>You can also use forms of the parse and format methods with
+ * ParsePosition and FieldPosition to
+ * allow you to
+ * <ul><li>progressively parse through pieces of a string.
+ * <li>align any particular field, or find out where it is for selection
+ * on the screen.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          UFormat
+ * @see          NumberFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class DateFormat extends Format {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * @internal
+     */
+    public final java.text.DateFormat dateFormat;
+        
+    /**
+     * @internal
+     * @param delegate the DateFormat to which to delegate
+     */
+    public DateFormat(java.text.DateFormat delegate) {
+        this.dateFormat = delegate;
+    }
+    
+    /**
+     * For subclass use.  Subclasses will generally not
+     * work correctly unless they manipulate the delegate.
+     */
+    protected DateFormat() {
+        this.dateFormat = java.text.DateFormat.getInstance();
+    }
+
+    /**
+     * FieldPosition selector for 'G' field alignment,
+     * corresponding to the {@link Calendar#ERA} field.
+     * @stable ICU 2.0
+     */
+    public final static int ERA_FIELD = 0;
+
+    /**
+     * FieldPosition selector for 'y' field alignment,
+     * corresponding to the {@link Calendar#YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR_FIELD = 1;
+
+    /**
+     * FieldPosition selector for 'M' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int MONTH_FIELD = 2;
+
+    /**
+     * FieldPosition selector for 'd' field alignment,
+     * corresponding to the {@link Calendar#DATE} field.
+     * @stable ICU 2.0
+     */
+    public final static int DATE_FIELD = 3;
+
+    /**
+     * FieldPosition selector for 'k' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 24:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY1_FIELD = 4;
+
+    /**
+     * FieldPosition selector for 'H' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 00:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY0_FIELD = 5;
+
+    /**
+     * FieldPosition selector for 'm' field alignment,
+     * corresponding to the {@link Calendar#MINUTE} field.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE_FIELD = 6;
+
+    /**
+     * FieldPosition selector for 's' field alignment,
+     * corresponding to the {@link Calendar#SECOND} field.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND_FIELD = 7;
+
+    /**
+     * FieldPosition selector for 'S' field alignment,
+     * corresponding to the {@link Calendar#MILLISECOND} field.
+     * @stable ICU 3.0
+     */
+    public final static int FRACTIONAL_SECOND_FIELD = 8;
+
+    /**
+     * Alias for FRACTIONAL_SECOND_FIELD.
+     * @stable ICU 3.4.3
+     */
+    public final static int MILLISECOND_FIELD = FRACTIONAL_SECOND_FIELD;
+
+    /**
+     * FieldPosition selector for 'E' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_FIELD = 9;
+
+    /**
+     * FieldPosition selector for 'D' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR_FIELD = 10;
+
+    /**
+     * FieldPosition selector for 'F' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK_IN_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+
+    /**
+     * FieldPosition selector for 'w' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR_FIELD = 12;
+
+    /**
+     * FieldPosition selector for 'W' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH_FIELD = 13;
+
+    /**
+     * FieldPosition selector for 'a' field alignment,
+     * corresponding to the {@link Calendar#AM_PM} field.
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM_FIELD = 14;
+
+    /**
+     * FieldPosition selector for 'h' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR1_FIELD is used for the one-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 12:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR1_FIELD = 15;
+
+    /**
+     * FieldPosition selector for 'K' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR0_FIELD is used for the zero-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 00:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR0_FIELD = 16;
+
+    /**
+     * FieldPosition selector for 'z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 2.0
+     */
+    public final static int TIMEZONE_FIELD = 17;
+
+    /**
+     * Overrides Format.
+     * Formats a time object into a time string. Examples of time objects
+     * are a time value expressed in milliseconds and a Date object.
+     * @param obj must be a Number or a Date or a Calendar.
+     * @param toAppendTo the string buffer for the returning time string.
+     * @return the formatted time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @see java.text.Format
+     * @stable ICU 2.0
+     */
+    public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        if (obj instanceof Calendar) {
+            return format((Calendar)obj, toAppendTo, fieldPosition);
+        } else if (obj instanceof Date) {
+            return format((Date)obj, toAppendTo, fieldPosition);
+        } else if (obj instanceof Number) {
+            return format(new Date(((Number)obj).longValue()), toAppendTo, fieldPosition );
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Date");
+        }
+    }
+
+    /**
+     * Formats a date into a date/time string.
+     * @param cal a Calendar set to the date and time to be formatted
+     * into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        return format(cal.getTime(), toAppendTo, fieldPosition);
+    }
+    
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date a Date to be formatted into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        return dateFormat.format(date, toAppendTo, fieldPosition);
+    }
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date the time value to be formatted into a time string.
+     * @return the formatted time string.
+     * @stable ICU 2.0
+     */
+    public final String format(Date date) {
+        return dateFormat.format(date);
+    }
+
+    /**
+     * Parse a date/time string.
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @return      A Date, or null if the input could not be parsed
+     *
+     * @exception  ParseException  If the given string cannot be parsed as a date.
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Date parse(String text) throws ParseException {
+        return dateFormat.parse(text);
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.
+     * For example, a time text "07/10/96 4:5 PM, PDT" will be parsed
+     * into a Calendar that is equivalent to Date(837039928046).  The
+     * caller should clear the calendar before calling this method,
+     * unless existing field information is to be kept.
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param cal   The calendar into which parsed data will be stored.
+     *              In general, this should be cleared before calling this
+     *              method.  If this parse fails, the calendar may still
+     *              have been modified.
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition pos) {
+        Date result = dateFormat.parse(text, pos);
+        cal.setTime(result);
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.  For
+     * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date
+     * that is equivalent to Date(837039928046).
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     *
+     * @return      A Date, or null if the input could not be parsed
+     * @stable ICU 2.0
+     */
+    public Date parse(String text, ParsePosition pos) {
+        return dateFormat.parse(text, pos);
+    }
+
+    /**
+     * Parse a date/time string into an Object.  This convenience method simply
+     * calls parse(String, ParsePosition).
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        return parse(source, pos);
+    }
+
+    /**
+     * Constant for full style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int FULL = 0;
+
+    /**
+     * Constant for long style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int LONG = 1;
+
+    /**
+     * Constant for medium style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int MEDIUM = 2;
+
+    /**
+     * Constant for short style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 3;
+
+    /**
+     * Constant for default style pattern.  Its value is MEDIUM.
+     * @stable ICU 2.0
+     */
+    public static final int DEFAULT = MEDIUM;
+
+    /**
+     * Gets the time formatter with the default formatting style
+     * for the default locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance() {
+        return new DateFormat(java.text.DateFormat.getTimeInstance());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style, aLocale));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getTimeInstance(int style, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style, aLocale.toLocale()));
+    }
+
+    /**
+     * Gets the date formatter with the default formatting style
+     * for the default locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance() {
+        return new DateFormat(java.text.DateFormat.getDateInstance());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style, aLocale));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 3.4.3
+     */
+    public final static DateFormat getDateInstance(int style, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style, aLocale.toLocale()));
+    }
+
+    /**
+     * Gets the date/time formatter with the default formatting style
+     * for the default locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance() {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance());
+    }
+
+    /**
+     * Gets the date/time formatter with the given date and time
+     * formatting styles for the default locale.
+     * @param dateStyle the given date formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param timeStyle the given time formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 3.4.3
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale.toLocale()));
+    }
+
+    /**
+     * Get a default date/time formatter that uses the SHORT style for both the
+     * date and the time.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getInstance() {
+        return new DateFormat(java.text.DateFormat.getInstance());
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.DateFormat.getAvailableLocales();
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 3.4.3
+     */
+    public static ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.DateFormat.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+
+    /**
+     * Set the calendar to be used by this date format.  Initially, the default
+     * calendar for the specified or default locale is used.
+     * @param newCalendar the new Calendar to be used by the date format
+     * @stable ICU 2.0
+     */
+    public void setCalendar(Calendar newCalendar) {
+        dateFormat.setCalendar(newCalendar.calendar);
+    }
+
+    /**
+     * Gets the calendar associated with this date/time formatter.
+     * @return the calendar associated with this date/time formatter.
+     * @stable ICU 2.0
+     */
+    public Calendar getCalendar() {
+        return new Calendar(dateFormat.getCalendar());
+    }
+
+    /**
+     * Allows you to set the number formatter.
+     * @param newNumberFormat the given new NumberFormat.
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        dateFormat.setNumberFormat(newNumberFormat.numberFormat);
+    }
+
+    /**
+     * Gets the number formatter which this date/time formatter uses to
+     * format and parse a time.
+     * @return the number formatter which this date/time formatter uses.
+     * @stable ICU 2.0
+     */
+    public NumberFormat getNumberFormat() {
+        return new NumberFormat(dateFormat.getNumberFormat());
+    }
+
+    /**
+     * Sets the time zone for the calendar of this DateFormat object.
+     * @param zone the given new time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone zone) {
+        dateFormat.setTimeZone(zone.timeZone);
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone associated with the calendar of DateFormat.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone() {
+        return new TimeZone(dateFormat.getTimeZone());
+    }
+
+    /**
+     * Specify whether or not date/time parsing is to be lenient.  With
+     * lenient parsing, the parser may use heuristics to interpret inputs that
+     * do not precisely match this object's format.  With strict parsing,
+     * inputs must match this object's format.
+     * @param lenient when true, parsing is lenient
+     * @see com.ibm.icu.util.Calendar#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient) {
+        dateFormat.setLenient(lenient);
+    }
+
+    /**
+     * Tell whether date/time parsing is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient() {
+        return dateFormat.isLenient();
+    }
+   
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale) {
+        DateFormat df = getDateInstance(dateStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, ULocale locale) {
+        DateFormat df = getDateInstance(dateStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+      
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale) {
+        DateFormat df = getTimeInstance(timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, ULocale locale) {
+        DateFormat df = getTimeInstance(timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+       
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                       int timeStyle, Locale locale) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                       int timeStyle, ULocale locale) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal, Locale locale) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 3.2
+     */
+    public static final DateFormat getInstance(Calendar cal, ULocale locale) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    public static final DateFormat getInstance(Calendar cal) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    public static final DateFormat getDateInstance(Calendar cal, int dateStyle) {
+        DateFormat df = getDateInstance(dateStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle) {
+        DateFormat df = getTimeInstance(timeStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.3
+     */
+    public String toString() {
+        return dateFormat.toString();
+    }
+        
+    /**
+     * Return a clone of this DateFormat.
+     * @return a clone of this DateFormat
+     * @stable ICU 3.4.3
+     */
+    public Object clone() {
+        return new DateFormat((java.text.DateFormat)dateFormat.clone());
+    }
+
+    /**
+     * Return true if rhs is a DateFormatSymbols and has the same symbols as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.3
+     */
+    public boolean equals(Object arg0) {
+        try {
+            return dateFormat.equals(((DateFormat)arg0).dateFormat);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.3
+     */
+    public int hashCode() {
+        return dateFormat.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..76319cd
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,302 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.Serializable;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.SimpleTimeZone
+ * @author       Chen-Lieh Huang
+ * @stable ICU 2.0
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+    private static final long serialVersionUID = 1;
+        
+    /** @internal */
+    public java.text.DateFormatSymbols dfs;
+        
+    /** @internal */
+    public DateFormatSymbols(java.text.DateFormatSymbols delegate) {
+        this.dfs = delegate;
+    }
+        
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the default locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols() {
+        this(new java.text.DateFormatSymbols());
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Locale locale) {
+        this(new java.text.DateFormatSymbols(locale));
+    }
+        
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given ulocale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ULocale locale) {
+        this(new java.text.DateFormatSymbols(locale.toLocale()));
+    }
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     * @stable ICU 2.0
+     */
+    public String[] getEras() {
+        return dfs.getEras();
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     * @stable ICU 2.0
+     */
+    public void setEras(String[] newEras) {
+        dfs.setEras(newEras);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getMonths() {
+        return dfs.getMonths();
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @stable ICU 2.0
+     */
+    public void setMonths(String[] newMonths) {
+        dfs.setMonths(newMonths);
+    }
+            
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getShortMonths() {
+        return dfs.getShortMonths();
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     * @stable ICU 2.0
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        dfs.setShortMonths(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getWeekdays() {
+        return dfs.getWeekdays();
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        dfs.setWeekdays(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getShortWeekdays() {
+        return dfs.getShortWeekdays();
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        dfs.setShortWeekdays(newShortWeekdays);
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     * @stable ICU 2.0
+     */
+    public String[] getAmPmStrings() {
+        return dfs.getAmPmStrings();
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     * @stable ICU 2.0
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        dfs.setAmPmStrings(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     * @stable ICU 2.0
+     */
+    public String[][] getZoneStrings() {
+        return dfs.getZoneStrings();
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     * @stable ICU 2.0
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        dfs.setZoneStrings(newZoneStrings);
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @return the localized date-time pattern characters.
+     * @stable ICU 2.0
+     */
+    public String getLocalPatternChars() {
+        return dfs.getLocalPatternChars();
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     * @stable ICU 2.0
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        dfs.setLocalPatternChars(newLocalPatternChars);
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return dfs.toString();
+    }
+        
+    /**
+     * Return a clone of this DateFormatSymbols.
+     * @return a clone of this DateFormatSymbols
+     * @stable ICU 3.4.2
+     */
+    public Object clone() {
+        return new DateFormatSymbols((java.text.DateFormatSymbols)dfs.clone());
+    }
+
+    /**
+     * Return true if rhs is a DateFormatSymbols and has the same symbols as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.2
+     */
+    public boolean equals(Object rhs) {
+        try {
+            return dfs.equals(((DateFormatSymbols)rhs).dfs);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.2
+     */
+    public int hashCode() {
+        return dfs.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..8a4494f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,903 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * {@link NumberFormat} that formats decimal numbers.
+ *
+ * <p>To obtain a {@link NumberFormat} for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as {@link NumberFormat#getInstance}. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * {@link NumberFormat} factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }</pre></blockquote>
+ *
+ * <p><strong>Example Usage</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat format;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             format = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             format = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             format = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume format is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) format).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (Exception e) {}
+ *         try {
+ *             System.out.println(" -> " + format.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }</pre></blockquote>
+ *
+ * <h4>Patterns</h4>
+ *
+ * <p>A <code>DecimalFormat</code> consists of a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * {@link #applyPattern}, or indirectly using other API methods which
+ * manipulate aspects of the pattern, such as the minimum number of integer
+ * digits.  The symbols are stored in a {@link DecimalFormatSymbols}
+ * object.  When using the {@link NumberFormat} factory methods, the
+ * pattern and symbols are read from ICU's locale data.
+ * 
+ * <h4>Special Pattern Characters</h4>
+ *
+ * <p>Many characters in a pattern are taken literally; they are matched during
+ * parsing and output unchanged during formatting.  Special characters, on the
+ * other hand, stand for other characters, strings, or classes of characters.
+ * For example, the '#' character is replaced by a localized digit.  Often the
+ * replacement character is the same as the pattern character; in the U.S. locale,
+ * the ',' grouping character is replaced by ','.  However, the replacement is
+ * still happening, and if the symbols are modified, the grouping character
+ * changes.  Some special characters affect the behavior of the formatter by
+ * their presence; for example, if the percent character is seen, then the
+ * value is multiplied by 100 before being displayed.
+ *
+ * <p>To insert a special character in a pattern as a literal, that is, without
+ * any special meaning, the character must be quoted.  There are some exceptions to
+ * this which are noted below.
+ *
+ * <p>The characters listed here are used in non-localized patterns.  Localized
+ * patterns use the corresponding characters taken from this formatter's
+ * {@link DecimalFormatSymbols} object instead, and these characters lose
+ * their special status.  Two exceptions are the currency sign and quote, which
+ * are not localized.
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing symbol,
+ *  location, localized, and meaning.">
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Symbol
+ *     <th align=left>Location
+ *     <th align=left>Localized?
+ *     <th align=left>Meaning
+ *   <tr valign=top>
+ *     <td><code>0</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>1-9</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         '1' through '9' indicate rounding.
+ *   <tr valign=top>
+ *     <td><code>@</code>
+ *     <td>Number
+ *     <td>No
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Significant digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>#</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit, zero shows as absent
+ *   <tr valign=top>
+ *     <td><code>.</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Decimal separator or monetary decimal separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>-</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Minus sign
+ *   <tr valign=top>
+ *     <td><code>,</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Grouping separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>E</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Separates mantissa and exponent in scientific notation.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top>
+ *     <td><code>+</code>
+ *     <td>Exponent
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Prefix positive exponents with localized plus sign.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>;</code>
+ *     <td>Subpattern boundary
+ *     <td>Yes
+ *     <td>Separates positive and negative subpatterns
+ *   <tr valign=top>
+ *     <td><code>%</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 100 and show as percentage
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>&#92;u2030</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 1000 and show as per mille
+ *   <tr valign=top>
+ *     <td><code>&#164;</code> (<code>&#92;u00A4</code>)
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Currency sign, replaced by currency symbol.  If
+ *         doubled, replaced by international currency symbol.
+ *         If present in a pattern, the monetary decimal separator
+ *         is used instead of the decimal separator.
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>'</code>
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Used to quote special characters in a prefix or suffix,
+ *         for example, <code>"'#'#"</code> formats 123 to
+ *         <code>"#123"</code>.  To create a single quote
+ *         itself, use two in a row: <code>"# o''clock"</code>.
+ *   <tr valign=top>
+ *     <td><code>*</code>
+ *     <td>Prefix or suffix boundary
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Pad escape, precedes pad character
+ * </table>
+ * </blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, a numeric part, and a suffix.  If there is no explicit negative
+ * subpattern, the negative subpattern is the localized minus sign prefixed to the
+ * positive subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are ignored in the negative subpattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for {@link #parse} to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The <em>grouping separator</em> is a character that separates clusters of
+ * integer digits to make large numbers more legible.  It commonly used for
+ * thousands, but in some locales it separates ten-thousands.  The <em>grouping
+ * size</em> is the number of digits between the grouping separators, such as 3
+ * for "100,000,000" or 4 for "1 0000 0000". There are actually two different
+ * grouping sizes: One used for the least significant integer digits, the
+ * <em>primary grouping size</em>, and one used for all others, the
+ * <em>secondary grouping size</em>.  In most locales these are the same, but
+ * sometimes they are different. For example, if the primary grouping interval
+ * is 3, and the secondary is 2, then this corresponds to the pattern
+ * "#,##,##0", and the number 123456789 is formatted as "12,34,56,789".  If a
+ * pattern contains multiple grouping separators, the interval between the last
+ * one and the end of the integer defines the primary grouping size, and the
+ * interval between the last two defines the secondary grouping size. All others
+ * are ignored, so "#,##,###,####" == "###,###,####" == "##,#,###,####".
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an {@link IllegalArgumentException}
+ * with a message that describes the problem.
+ *
+ * <h4>Pattern BNF</h4>
+ *
+ * <pre>
+ * pattern    := subpattern (';' subpattern)?
+ * subpattern := prefix? number exponent? suffix?
+ * number     := (integer ('.' fraction)?) | sigDigits
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * sigDigits  := '#'* '@' '@'* '#'*
+ * exponent   := 'E' '+'? '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   X?       0 or 1 instances of X
+ *   X|Y      either X or Y
+ *   C..D     any character from C up to D, inclusive
+ *   S-T      characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ *
+ * <ul><li>The grouping separator ',' can occur inside the integer and
+ * sigDigits elements, between any two pattern characters of that
+ * element, as long as the integer or sigDigits element is not
+ * followed by the exponent element.
+ *
+ * <li><font color=red face=helvetica><strong>NEW</strong></font>
+ *     Two grouping intervals are recognized: That between the
+ *     decimal point and the first grouping symbol, and that
+ *     between the first and second grouping symbols. These
+ *     intervals are identical in most locales, but in some
+ *     locales they differ. For example, the pattern
+ *     &quot;#,##,###&quot; formats the number 123456789 as
+ *     &quot;12,34,56,789&quot;.</li>
+ * 
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <h4>Parsing</h4>
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by {@link UCharacter#digit}.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * {@link DecimalFormatSymbols} object.  During formatting, the
+ * {@link DecimalFormatSymbols}-based digits are output.
+ *
+ * <p>During parsing, grouping separators are ignored.
+ *
+ * <p>If {@link #parse(String, ParsePosition)} fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method {@link #parse(String)}
+ * indicates parse failure by throwing a {@link java.text.ParseException}.
+ *
+ * <h4>Formatting</h4>
+ *
+ * <p>Formatting is guided by several parameters, all of which can be
+ * specified either using a pattern or using the API.  The following
+ * description applies to formats that do not use <a href="#sci">scientific
+ * notation</a> or <a href="#sigdig">significant digits</a>.
+ *
+ * <ul><li>If the number of actual integer digits exceeds the
+ * <em>maximum integer digits</em>, then only the least significant
+ * digits are shown.  For example, 1997 is formatted as "97" if the
+ * maximum integer digits is set to 2.
+ *
+ * <li>If the number of actual integer digits is less than the
+ * <em>minimum integer digits</em>, then leading zeros are added.  For
+ * example, 1997 is formatted as "01997" if the minimum integer digits
+ * is set to 5.
+ *
+ * <li>If the number of actual fraction digits exceeds the <em>maximum
+ * fraction digits</em>, then half-even rounding it performed to the
+ * maximum fraction digits.  For example, 0.125 is formatted as "0.12"
+ * if the maximum fraction digits is 2.  This behavior can be changed
+ * by specifying a rounding increment and a rounding mode.
+ *
+ * <li>If the number of actual fraction digits is less than the
+ * <em>minimum fraction digits</em>, then trailing zeros are added.
+ * For example, 0.125 is formatted as "0.1250" if the mimimum fraction
+ * digits is set to 4.
+ *
+ * <li>Trailing fractional zeros are not displayed if they occur
+ * <em>j</em> positions after the decimal, where <em>j</em> is less
+ * than the maximum fraction digits. For example, 0.10004 is
+ * formatted as "0.1" if the maximum fraction digits is four or less.
+ * </ul>
+ * 
+ * <p><strong>Special Values</strong>
+ *
+ * <p><code>NaN</code> is represented as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * {@link DecimalFormatSymbols} object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is represented as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * {@link DecimalFormatSymbols} object.
+ *
+ * <a name="sci"><h4>Scientific Notation</h4></a>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10<sup>3</sup>. The
+ * mantissa is typically in the half-open interval [1.0, 10.0) or sometimes [0.0, 1.0),
+ * but it need not be.  <code>DecimalFormat</code> supports arbitrary mantissas.
+ * <code>DecimalFormat</code> can be instructed to use scientific
+ * notation through the API or through the pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>When using scientific notation, the formatter controls the
+ * digit counts using significant digits logic.  The maximum number of
+ * significant digits limits the total number of integer and fraction
+ * digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ * See the section on significant digits for more details.
+ *
+ * <li>The number of significant digits shown is determined as
+ * follows: If areSignificantDigitsUsed() returns false, then the
+ * minimum number of significant digits shown is one, and the maximum
+ * number of significant digits shown is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is
+ * unaffected by the maximum integer digits.  If this sum is zero,
+ * then all significant digits are shown.  If
+ * areSignificantDigitsUsed() returns true, then the significant digit
+ * counts are specified by getMinimumSignificantDigits() and
+ * getMaximumSignificantDigits().  In this case, the number of
+ * integer digits is fixed at one, and there is no exponent grouping.
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <a name="sigdig"><h4>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * Significant Digits</h4></a>
+ *
+ * <code>DecimalFormat</code> has two ways of controlling how many
+ * digits are shows: (a) significant digits counts, or (b) integer and
+ * fraction digit counts.  Integer and fraction digit counts are
+ * described above.  When a formatter is using significant digits
+ * counts, the number of integer and fraction digits is not specified
+ * directly, and the formatter settings for these counts are ignored.
+ * Instead, the formatter uses however many integer and fraction
+ * digits are required to display the specified number of significant
+ * digits.  Examples:
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0>
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Pattern
+ *     <th align=left>Minimum significant digits
+ *     <th align=left>Maximum significant digits
+ *     <th align=left>Number
+ *     <th align=left>Output of format()
+ *   <tr valign=top>
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>12345
+ *     <td><code>12300</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>0.12345
+ *     <td><code>0.123</code>
+ *   <tr valign=top>
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>3.14159
+ *     <td><code>3.142</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>1.23004
+ *     <td><code>1.23</code>
+ * </table>
+ * </blockquote>
+ *
+ * <ul>
+ * <li>Significant digit counts may be expressed using patterns that
+ * specify a minimum and maximum number of significant digits.  These
+ * are indicated by the <code>'@'</code> and <code>'#'</code>
+ * characters.  The minimum number of significant digits is the number
+ * of <code>'@'</code> characters.  The maximum number of significant
+ * digits is the number of <code>'@'</code> characters plus the number
+ * of <code>'#'</code> characters following on the right.  For
+ * example, the pattern <code>"@@@"</code> indicates exactly 3
+ * significant digits.  The pattern <code>"@##"</code> indicates from
+ * 1 to 3 significant digits.  Trailing zero digits to the right of
+ * the decimal separator are suppressed after the minimum number of
+ * significant digits have been shown.  For example, the pattern
+ * <code>"@##"</code> formats the number 0.1203 as
+ * <code>"0.12"</code>.
+ *
+ * <li>If a pattern uses significant digits, it may not contain a
+ * decimal separator, nor the <code>'0'</code> pattern character.
+ * Patterns such as <code>"@00"</code> or <code>"@.###"</code> are
+ * disallowed.
+ *
+ * <li>Any number of <code>'#'</code> characters may be prepended to
+ * the left of the leftmost <code>'@'</code> character.  These have no
+ * effect on the minimum and maximum significant digits counts, but
+ * may be used to position grouping separators.  For example,
+ * <code>"#,#@#"</code> indicates a minimum of one significant digits,
+ * a maximum of two significant digits, and a grouping size of three.
+ *
+ * <li>In order to enable significant digits formatting, use a pattern
+ * containing the <code>'@'</code> pattern character.  Alternatively,
+ * call {@link #setSignificantDigitsUsed setSignificantDigitsUsed(true)}.
+ *
+ * <li>In order to disable significant digits formatting, use a
+ * pattern that does not contain the <code>'@'</code> pattern
+ * character. Alternatively, call {@link #setSignificantDigitsUsed
+ * setSignificantDigitsUsed(false)}.
+ *
+ * <li>The number of significant digits has no effect on parsing.
+ *
+ * <li>Significant digits may be used together with exponential notation. Such
+ * patterns are equivalent to a normal exponential pattern with a minimum and
+ * maximum integer digit count of one, a minimum fraction digit count of
+ * <code>getMinimumSignificantDigits() - 1</code>, and a maximum fraction digit
+ * count of <code>getMaximumSignificantDigits() - 1</code>. For example, the
+ * pattern <code>"@@###E0"</code> is equivalent to <code>"0.0###E0"</code>.
+ *
+ * <li>If signficant digits are in use, then the integer and fraction
+ * digit counts, as set via the API, are ignored.  If significant
+ * digits are not in use, then the signficant digit counts, as set via
+ * the API, are ignored.
+ *
+ * </ul>
+ * 
+ * <h4>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * Padding</h4>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * {@link #format} to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using {@link DecimalFormatSymbols#setPadEscape}.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>The width is counted in 16-bit code units (Java <code>char</code>s).
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "* ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, {@link #applyPattern} throws an {@link
+ * IllegalArgumentException}.  If there is no prefix, before the
+ * prefix and after the prefix are equivalent, likewise for the suffix.
+ *
+ * <li>When specified in a pattern, the 16-bit <code>char</code> immediately
+ * following the pad escape is the pad character. This may be any character,
+ * including a special pattern character. That is, the pad escape
+ * <em>escapes</em> the following character. If there is no character after
+ * the pad escape, then the pattern is illegal.
+ *
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * {@link com.ibm.icu.math.BigDecimal} documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * {@link com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN}.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * <p><code>DecimalFormat</code> objects are not synchronized.  Multiple
+ * threads should not access one formatter concurrently.
+ *
+ * @see          java.text.Format
+ * @see          NumberFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class DecimalFormat extends NumberFormat {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * @internal
+     * @param delegate the NumberFormat to which to delegate
+     */
+    public DecimalFormat(java.text.DecimalFormat delegate) {
+        super(delegate);
+    }
+        
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat() {
+        this(new java.text.DecimalFormat());
+    }
+        
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern) {
+        this(new java.text.DecimalFormat(pattern));
+    }
+        
+        
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols) {
+        this(new java.text.DecimalFormat(pattern, symbols.dfs));
+    }
+        
+    /**
+     * Returns a copy of the decimal format symbols used by this format.
+     * @return desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        return new DecimalFormatSymbols(((java.text.DecimalFormat)numberFormat).getDecimalFormatSymbols());
+    }
+        
+    /**
+     * Sets the decimal format symbols used by this format.  The
+     * format uses a copy of the provided symbols.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        ((java.text.DecimalFormat)numberFormat).setDecimalFormatSymbols(newSymbols.dfs);
+    }
+        
+        
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public String getPositivePrefix() {
+        return ((java.text.DecimalFormat)numberFormat).getPositivePrefix();
+    }
+        
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public void setPositivePrefix(String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setPositivePrefix(newValue);
+    }
+        
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public String getNegativePrefix () {
+        return ((java.text.DecimalFormat)numberFormat).getNegativePrefix();
+    }
+        
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public void setNegativePrefix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setNegativePrefix(newValue);
+    }
+        
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public String getPositiveSuffix () {
+        return ((java.text.DecimalFormat)numberFormat).getPositiveSuffix();
+    }
+        
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public void setPositiveSuffix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setPositiveSuffix(newValue);
+    }
+        
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     * @stable ICU 2.0
+     */
+    public String getNegativeSuffix () {
+        return ((java.text.DecimalFormat)numberFormat).getNegativeSuffix();
+    }
+        
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     * @stable ICU 2.0
+     */
+    public void setNegativeSuffix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setNegativeSuffix(newValue);
+    }
+        
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public int getMultiplier () {
+        return ((java.text.DecimalFormat)numberFormat).getMultiplier();
+    }
+        
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public void setMultiplier (int newValue) {
+        ((java.text.DecimalFormat)numberFormat).setMultiplier(newValue);
+    }
+        
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getGroupingSize () {
+        return ((java.text.DecimalFormat)numberFormat).getGroupingSize();
+    }
+        
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setGroupingSize (int newValue) {
+        ((java.text.DecimalFormat)numberFormat).setGroupingSize(newValue);
+    }
+        
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return ((java.text.DecimalFormat)numberFormat).isDecimalSeparatorAlwaysShown();
+    }
+        
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     *
+     * <p>This only affects formatting, and only where
+     * there might be no digits after the decimal point, e.g.,
+     * if true,  3456.00 -> "3,456."
+     * if false, 3456.00 -> "3456"
+     * This is independent of parsing.  If you want parsing to stop at the decimal
+     * point, use setParseIntegerOnly.
+     *
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        ((java.text.DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(newValue);
+    }
+        
+    /**
+     * Standard override; no change in semantics.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new DecimalFormatSymbols((java.text.DecimalFormatSymbols)numberFormat.clone());
+    }
+        
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return ((java.text.DecimalFormat)numberFormat).toPattern();
+    }
+        
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return ((java.text.DecimalFormat)numberFormat).toLocalizedPattern();
+    }
+        
+        
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pattern) {
+        ((java.text.DecimalFormat)numberFormat).applyPattern(pattern);
+    }
+        
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pattern) {
+        ((java.text.DecimalFormat)numberFormat).applyLocalizedPattern(pattern);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..0ccbe3b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,349 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+
+import java.io.Serializable;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+final public class DecimalFormatSymbols implements Cloneable, Serializable {
+    private static final long serialVersionUID =1L;
+        
+    /**
+     * @internal
+     */
+    public final java.text.DecimalFormatSymbols dfs;
+        
+    /**
+     * @internal
+     */
+    public DecimalFormatSymbols(java.text.DecimalFormatSymbols delegate) {
+        this.dfs = delegate;
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols() {
+        this(new java.text.DecimalFormatSymbols());
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols(Locale locale) {
+        this(new java.text.DecimalFormatSymbols(locale));
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public DecimalFormatSymbols(ULocale locale) {
+        this(new java.text.DecimalFormatSymbols(locale.toLocale()));
+    }
+        
+    /**
+     * Return the character used for zero. Different for Arabic, etc.
+     * @return the character
+     * @stable ICU 2.0
+     */
+    public char getZeroDigit() {
+        return dfs.getZeroDigit();
+    }
+        
+    /**
+     * Set the character used for zero.
+     * @param zeroDigit the zero character.
+     * @stable ICU 2.0
+     */
+    public void setZeroDigit(char zeroDigit) {
+        dfs.setZeroDigit(zeroDigit);
+    }
+        
+    /**
+     * Return the character used for thousands separator. Different for French, etc.
+     * @return the thousands character
+     * @stable ICU 2.0
+     */
+    public char getGroupingSeparator() {
+        return dfs.getGroupingSeparator();
+    }
+        
+    /**
+     * Set the character used for thousands separator. Different for French, etc.
+     * @param groupingSeparator the thousands character
+     * @stable ICU 2.0
+     */
+    public void setGroupingSeparator(char groupingSeparator) {
+        dfs.setGroupingSeparator(groupingSeparator);
+    }
+        
+    /**
+     * Return the character used for decimal sign. Different for French, etc.
+     * @return the decimal character
+     * @stable ICU 2.0
+     */
+    public char getDecimalSeparator() {
+        return dfs.getDecimalSeparator();
+    }
+        
+    /**
+     * Set the character used for decimal sign. Different for French, etc.
+     * @param decimalSeparator the decimal character
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparator(char decimalSeparator) {
+        dfs.setDecimalSeparator(decimalSeparator);
+    }
+        
+    /**
+     * Return the character used for mille percent sign. Different for Arabic, etc.
+     * @return the mille percent character
+     * @stable ICU 2.0
+     */
+    public char getPerMill() {
+        return dfs.getPerMill();
+    }
+        
+    /**
+     * Set the character used for mille percent sign. Different for Arabic, etc.
+     * @param perMill the mille percent character
+     * @stable ICU 2.0
+     */
+    public void setPerMill(char perMill) {
+        dfs.setPerMill(perMill);
+    }
+        
+    /**
+     * Return the character used for percent sign. Different for Arabic, etc.
+     * @return the percent character
+     * @stable ICU 2.0
+     */
+    public char getPercent() {
+        return dfs.getPercent();
+    }
+        
+    /**
+     * Set the character used for percent sign. Different for Arabic, etc.
+     * @param percent the percent character
+     * @stable ICU 2.0
+     */
+    public void setPercent(char percent) {
+        dfs.setPercent(percent);
+    }
+        
+    /**
+     * Return the character used for a digit in a pattern.
+     * @return the digit pattern character
+     * @stable ICU 2.0
+     */
+    public char getDigit() {
+        return dfs.getDigit();
+    }
+        
+    /**
+     * Set the character used for a digit in a pattern.
+     * @param digit the digit pattern character
+     * @stable ICU 2.0
+     */
+    public void setDigit(char digit) {
+        dfs.setDigit(digit);
+    }
+        
+    /**
+     * Return the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @return the pattern separator character
+     * @stable ICU 2.0
+     */
+    public char getPatternSeparator() {
+        return dfs.getPatternSeparator();
+    }
+        
+    /**
+     * Set the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @param patternSeparator the pattern separator character
+     * @stable ICU 2.0
+     */
+    public void setPatternSeparator(char patternSeparator) {
+        dfs.setPatternSeparator(patternSeparator);
+    }
+        
+    /**
+     * Return the String used to represent infinity. Almost always left
+     * unchanged.
+     * @return the Infinity string
+     * @stable ICU 2.0
+     */
+    public String getInfinity() {
+        return dfs.getInfinity();
+    }
+        
+    /**
+     * Set the String used to represent infinity. Almost always left
+     * unchanged.
+     * @param infinity the Infinity String
+     * @stable ICU 2.0
+     */
+    public void setInfinity(String infinity) {
+        dfs.setInfinity(infinity);
+    }
+        
+    /**
+     * Return the String used to represent NaN. Almost always left
+     * unchanged.
+     * @return the NaN String
+     * @stable ICU 2.0
+     */
+    public String getNaN() {
+        return dfs.getNaN();
+    }
+        
+    /**
+     * Set the String used to represent NaN. Almost always left
+     * unchanged.
+     * @param NaN the NaN String
+     * @stable ICU 2.0
+     */
+    public void setNaN(String NaN) {
+        dfs.setNaN(NaN);
+    }
+        
+    /**
+     * Return the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @return the minus sign character
+     * @stable ICU 2.0
+     */
+    public char getMinusSign() {
+        return dfs.getMinusSign();
+    }
+        
+    /**
+     * Set the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @param minusSign the minus sign character
+     * @stable ICU 2.0
+     */
+    public void setMinusSign(char minusSign) {
+        dfs.setMinusSign(minusSign);
+    }
+        
+    /**
+     * Return the string denoting the local currency.
+     * @return the local currency String.
+     * @stable ICU 2.0
+     */
+    public String getCurrencySymbol() {
+        return dfs.getCurrencySymbol();
+    }
+        
+    /**
+     * Set the string denoting the local currency.
+     * @param currency the local currency String.
+     * @stable ICU 2.0
+     */
+    public void setCurrencySymbol(String currency) {
+        dfs.setCurrencySymbol(currency);
+    }
+        
+    /**
+     * Return the international string denoting the local currency.
+     * @return the international string denoting the local currency
+     * @stable ICU 2.0
+     */
+    public String getInternationalCurrencySymbol() {
+        return dfs.getInternationalCurrencySymbol();
+    }
+        
+    /**
+     * Set the international string denoting the local currency.
+     * @param currency the international string denoting the local currency.
+     * @stable ICU 2.0
+     */
+    public void setInternationalCurrencySymbol(String currency) {
+        dfs.setInternationalCurrencySymbol(currency);
+    }
+        
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public char getMonetaryDecimalSeparator() {
+        return dfs.getMonetaryDecimalSeparator();
+    }
+        
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public void setMonetaryDecimalSeparator(char sep) {
+        dfs.setMonetaryDecimalSeparator(sep);
+    }
+        
+    /**
+     * Standard override.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new DecimalFormatSymbols((java.text.DecimalFormatSymbols)dfs.clone());
+    }
+        
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return dfs.equals(((DecimalFormatSymbols)obj).dfs);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Override hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return dfs.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..67e6300
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,1042 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>MessageFormat</code> provides a means to produce concatenated
+ * messages in language-neutral way. Use this to construct messages
+ * displayed for end users.
+ *
+ * <p>
+ * <code>MessageFormat</code> takes a set of objects, formats them, then
+ * inserts the formatted strings into the pattern at the appropriate places.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * <code>MessageFormat</code> differs from the other <code>Format</code>
+ * classes in that you create a <code>MessageFormat</code> object with one
+ * of its constructors (not with a <code>getInstance</code> style factory
+ * method). The factory methods aren't necessary because <code>MessageFormat</code>
+ * itself doesn't implement locale specific behavior. Any locale specific
+ * behavior is defined by the pattern that you provide as well as the
+ * subformats used for inserted arguments.
+ *
+ * <h4><a name="patterns">Patterns and Their Interpretation</a></h4>
+ *
+ * <code>MessageFormat</code> uses patterns of the following form:
+ * <blockquote><pre>
+ * <i>MessageFormatPattern:</i>
+ *         <i>String</i>
+ *         <i>MessageFormatPattern</i> <i>FormatElement</i> <i>String</i>
+ *
+ * <i>FormatElement:</i>
+ *         { <i>ArgumentIndex</i> }
+ *         { <i>ArgumentIndex</i> , <i>FormatType</i> }
+ *         { <i>ArgumentIndex</i> , <i>FormatType</i> , <i>FormatStyle</i> }
+ *
+ * <i>FormatType: one of </i>
+ *         number date time choice
+ *
+ * <i>FormatStyle:</i>
+ *         short
+ *         medium
+ *         long
+ *         full
+ *         integer
+ *         currency
+ *         percent
+ *         <i>SubformatPattern</i>
+ *
+ * <i>String:</i>
+ *         <i>StringPart<sub>opt</sub></i>
+ *         <i>String</i> <i>StringPart</i>
+ *
+ * <i>StringPart:</i>
+ *         ''
+ *         ' <i>QuotedString</i> '
+ *         <i>UnquotedString</i>
+ *
+ * <i>SubformatPattern:</i>
+ *         <i>SubformatPatternPart<sub>opt</sub></i>
+ *         <i>SubformatPattern</i> <i>SubformatPatternPart</i>
+ *
+ * <i>SubFormatPatternPart:</i>
+ *         ' <i>QuotedPattern</i> '
+ *         <i>UnquotedPattern</i>
+ * </pre></blockquote>
+ *
+ * <p>
+ * Within a <i>String</i>, <code>"''"</code> represents a single
+ * quote. A <i>QuotedString</i> can contain arbitrary characters
+ * except single quotes; the surrounding single quotes are removed.
+ * An <i>UnquotedString</i> can contain arbitrary characters
+ * except single quotes and left curly brackets. Thus, a string that
+ * should result in the formatted message "'{0}'" can be written as
+ * <code>"'''{'0}''"</code> or <code>"'''{0}'''"</code>.
+ * <p>
+ * Within a <i>SubformatPattern</i>, different rules apply.
+ * A <i>QuotedPattern</i> can contain arbitrary characters
+ * except single quotes; but the surrounding single quotes are
+ * <strong>not</strong> removed, so they may be interpreted by the
+ * subformat. For example, <code>"{1,number,$'#',##}"</code> will
+ * produce a number format with the pound-sign quoted, with a result
+ * such as: "$#31,45".
+ * An <i>UnquotedPattern</i> can contain arbitrary characters
+ * except single quotes, but curly braces within it must be balanced.
+ * For example, <code>"ab {0} de"</code> and <code>"ab '}' de"</code>
+ * are valid subformat patterns, but <code>"ab {0'}' de"</code> and
+ * <code>"ab } de"</code> are not.
+ * <p>
+ * <dl><dt><b>Warning:</b><dd>The rules for using quotes within message
+ * format patterns unfortunately have shown to be somewhat confusing.
+ * In particular, it isn't always obvious to localizers whether single
+ * quotes need to be doubled or not. Make sure to inform localizers about
+ * the rules, and tell them (for example, by using comments in resource
+ * bundle source files) which strings will be processed by MessageFormat.
+ * Note that localizers may need to use single quotes in translated
+ * strings where the original version doesn't have them.
+ * <br>Note also that the simplest way to avoid the problem is to
+ * use the real apostrophe (single quote) character \u2019 (') for
+ * human-readable text, and to use the ASCII apostrophe (\u0027 ' )
+ * only in program syntax, like quoting in MessageFormat.
+ * See the annotations for U+0027 Apostrophe in The Unicode Standard.</p>
+ * </dl>
+ * <p>
+ * The <i>ArgumentIndex</i> value is a non-negative integer written
+ * using the digits '0' through '9', and represents an index into the
+ * <code>arguments</code> array passed to the <code>format</code> methods
+ * or the result array returned by the <code>parse</code> methods.
+ * <p>
+ * The <i>FormatType</i> and <i>FormatStyle</i> values are used to create
+ * a <code>Format</code> instance for the format element. The following
+ * table shows how the values map to Format instances. Combinations not
+ * shown in the table are illegal. A <i>SubformatPattern</i> must
+ * be a valid pattern string for the Format subclass used.
+ * <p>
+ * <table border=1>
+ *    <tr>
+ *       <th>Format Type
+ *       <th>Format Style
+ *       <th>Subformat Created
+ *    <tr>
+ *       <td colspan=2><i>(none)</i>
+ *       <td><code>null</code>
+ *    <tr>
+ *       <td rowspan=5><code>number</code>
+ *       <td><i>(none)</i>
+ *       <td><code>NumberFormat.getInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>integer</code>
+ *       <td><code>NumberFormat.getIntegerInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>currency</code>
+ *       <td><code>NumberFormat.getCurrencyInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>percent</code>
+ *       <td><code>NumberFormat.getPercentInstance(getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new DecimalFormat(subformatPattern, new DecimalFormatSymbols(getLocale()))</code>
+ *    <tr>
+ *       <td rowspan=6><code>date</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td rowspan=6><code>time</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td><code>choice</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new ChoiceFormat(subformatPattern)</code>
+ * </table>
+ * <p>
+ *
+ * <h4>Usage Information</h4>
+ *
+ * <p>
+ * Here are some examples of usage:
+ * <blockquote>
+ * <pre>
+ * Object[] arguments = {
+ *     new Integer(7),
+ *     new Date(System.currentTimeMillis()),
+ *     "a disturbance in the Force"
+ * };
+ *
+ * String result = MessageFormat.format(
+ *     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+ *     arguments);
+ *
+ * <em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
+ *           in the Force on planet 7.
+ *
+ * </pre>
+ * </blockquote>
+ * Typically, the message format will come from resources, and the
+ * arguments will be dynamically set at runtime.
+ *
+ * <p>
+ * Example 2:
+ * <blockquote>
+ * <pre>
+ * Object[] testArgs = {new Long(3), "MyDisk"};
+ *
+ * MessageFormat form = new MessageFormat(
+ *     "The disk \"{1}\" contains {0} file(s).");
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * <em>output</em>: The disk "MyDisk" contains 0 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1,273 file(s).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * For more sophisticated patterns, you can use a <code>ChoiceFormat</code> to get
+ * output such as:
+ * <blockquote>
+ * <pre>
+ * MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+ * double[] filelimits = {0,1,2};
+ * String[] filepart = {"no files","one file","{0,number} files"};
+ * ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+ * form.setFormatByArgumentIndex(0, fileform);
+ *
+ * Object[] testArgs = {new Long(12373), "MyDisk"};
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * output: The disk "MyDisk" contains no files.
+ * output: The disk "MyDisk" contains one file.
+ * output: The disk "MyDisk" contains 1,273 files.
+ * </pre>
+ * </blockquote>
+ * You can either do this programmatically, as in the above example,
+ * or by using a pattern (see
+ * {@link ChoiceFormat}
+ * for more information) as in:
+ * <blockquote>
+ * <pre>
+ * form.applyPattern(
+ *    "There {0,choice,0#are no files|1#is one file|1&lt;are {0,number,integer} files}.");
+ * </pre>
+ * </blockquote>
+ * <p>
+ * <strong>Note:</strong> As we see above, the string produced
+ * by a <code>ChoiceFormat</code> in <code>MessageFormat</code> is treated specially;
+ * occurances of '{' are used to indicated subformats, and cause recursion.
+ * If you create both a <code>MessageFormat</code> and <code>ChoiceFormat</code>
+ * programmatically (instead of using the string patterns), then be careful not to
+ * produce a format that recurses on itself, which will cause an infinite loop.
+ * <p>
+ * When a single argument is parsed more than once in the string, the last match
+ * will be the final result of the parsing.  For example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
+ * Object[] objs = {new Double(3.1415)};
+ * String result = mf.format( objs );
+ * // result now equals "3.14, 3.1"
+ * objs = null;
+ * objs = mf.parse(result, new ParsePosition(0));
+ * // objs now equals {new Double(3.1)}
+ * </pre>
+ * <p>
+ * Likewise, parsing with a MessageFormat object using patterns containing
+ * multiple occurances of the same argument would return the last match.  For
+ * example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+ * String forParsing = "x, y, z";
+ * Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+ * // result now equals {new String("z")}
+ * </pre>
+ *
+ * <h4><a name="synchronization">Synchronization</a></h4>
+ *
+ * <p>
+ * Message formats are not synchronized.
+ * It is recommended to create separate format instances for each thread.
+ * If multiple threads access a format concurrently, it must be synchronized
+ * externally.
+ *
+ * @see          java.util.Locale
+ * @see          Format
+ * @see          NumberFormat
+ * @see          DecimalFormat
+ * @see          ChoiceFormat
+ * @author       Mark Davis
+ * @stable ICU 3.0
+ */
+public class MessageFormat extends Format {
+    static final long serialVersionUID = 1L;
+
+    /**
+     * @internal
+     */
+    public final java.text.MessageFormat messageFormat;
+        
+    /**
+     * @internal
+     * @param delegate the DateFormat to which to delegate
+     */
+    public MessageFormat(java.text.MessageFormat delegate) {
+        this.messageFormat = delegate;
+    }
+
+    /**
+     * Constructs a MessageFormat for the default locale and the
+     * specified pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern) {
+        this(new java.text.MessageFormat(pattern));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern, Locale locale) {
+        // locale is ignored
+        this(new java.text.MessageFormat(pattern));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.2
+     */
+    public MessageFormat(String pattern, ULocale locale) {
+        // locale is ignored
+        this(pattern);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public void setLocale(Locale locale) {
+        messageFormat.setLocale(locale);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public void setLocale(ULocale locale) {
+        messageFormat.setLocale(locale.toLocale());
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public Locale getLocale() {
+        return messageFormat.getLocale();
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ULocale.forLocale(messageFormat.getLocale());
+    }
+
+    /**
+     * Sets the pattern used by this message format.
+     * The method parses the pattern and creates a list of subformats
+     * for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     * 
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+   public void applyPattern(String pattern) {
+       messageFormat.applyPattern(pattern);
+   }
+
+   /**
+    * Returns a pattern representing the current state of the message format.
+    * The string is constructed from internal information and therefore
+    * does not necessarily equal the previously applied pattern. 
+    *
+    * @return a pattern representing the current state of the message format
+    * @stable ICU 3.0
+    */
+   public String toPattern() {
+       return messageFormat.toPattern();
+   }
+ 
+   /**
+    * Sets the formats to use for the values passed into
+    * <code>format</code> methods or returned from <code>parse</code>
+    * methods. The indices of elements in <code>newFormats</code>
+    * correspond to the argument indices used in the previously set
+    * pattern string.
+    * The order of formats in <code>newFormats</code> thus corresponds to
+    * the order of elements in the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If an argument index is used for more than one format element
+    * in the pattern string, then the corresponding new format is used
+    * for all such format elements. If an argument index is not used
+    * for any format element in the pattern string, then the
+    * corresponding new format is ignored. If fewer formats are provided
+    * than needed, then only the formats for argument indices less
+    * than <code>newFormats.length</code> are replaced.
+    *
+    * @param newFormats the new formats to use
+    * @exception NullPointerException if <code>newFormats</code> is null
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not
+    * support this method.
+    */
+   public void setFormatsByArgumentIndex(Format[] newFormats) {
+       if (sfsbai == null) {
+           synchronized (missing) {
+               try {
+                   Class[] params = { Format[].class };
+                   sfsbai = java.text.MessageFormat.class.getMethod("setFormatsByArgumentIndex", params);
+               }
+               catch (NoSuchMethodException e) {
+                   sfsbai = missing;
+               }
+           }
+       }
+       if (sfsbai != missing) {
+           try {
+               Format[] unwrapped = new Format[newFormats.length];
+               for (int i = 0; i < newFormats.length; ++i) {
+                   unwrapped[i] = unwrap(newFormats[i]);
+               }
+               Object[] args = { unwrapped };
+               ((Method)sfsbai).invoke(messageFormat, args);
+               return;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+    }
+   private static Object sfsbai;
+   
+   /**
+    * Sets the formats to use for the format elements in the
+    * previously set pattern string.
+    * The order of formats in <code>newFormats</code> corresponds to
+    * the order of format elements in the pattern string.
+    * <p>
+    * If more formats are provided than needed by the pattern string,
+    * the remaining ones are ignored. If fewer formats are provided
+    * than needed, then only the first <code>newFormats.length</code>
+    * formats are replaced.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it is generally better to use the
+    * {@link #setFormatsByArgumentIndex setFormatsByArgumentIndex}
+    * method, which assumes an order of formats corresponding to the
+    * order of elements in the <code>arguments</code> array passed to
+    * the <code>format</code> methods or the result array returned by
+    * the <code>parse</code> methods.
+    *
+    * @param newFormats the new formats to use
+    * @exception NullPointerException if <code>newFormats</code> is null
+    * @stable ICU 3.0
+    */
+   public void setFormats(Format[] newFormats) {
+       messageFormat.setFormats(newFormats);
+   }
+
+   /**
+    * Sets the format to use for the format elements within the
+    * previously set pattern string that use the given argument
+    * index.
+    * The argument index is part of the format element definition and
+    * represents an index into the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If the argument index is used for more than one format element
+    * in the pattern string, then the new format is used for all such
+    * format elements. If the argument index is not used for any format
+    * element in the pattern string, then the new format is ignored.
+    *
+    * @param argumentIndex the argument index for which to use the new format
+    * @param newFormat the new format to use
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not
+    * support this method.
+    */
+   public void setFormatByArgumentIndex(int argumentIndex, Format newFormat) {
+       if (sfbai == null) {
+           synchronized (missing) {
+               try {
+                   Class[] params = { Integer.TYPE, Format.class };
+                   sfbai = java.text.MessageFormat.class.getMethod("setFormatByArgumentIndex", params);
+               }
+               catch (NoSuchMethodException e) {
+                   sfbai = missing;
+               }
+           }
+       }
+       if (sfbai != missing) {
+           try {
+               Object[] args = { new Integer(argumentIndex), newFormat };
+               ((Method)sfbai).invoke(messageFormat, args);
+               return;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+   }
+   private static Object sfbai;
+
+   /**
+    * Sets the format to use for the format element with the given
+    * format element index within the previously set pattern string.
+    * The format element index is the zero-based number of the format
+    * element counting from the start of the pattern string.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it is generally better to use the
+    * {@link #setFormatByArgumentIndex setFormatByArgumentIndex}
+    * method, which accesses format elements based on the argument
+    * index they specify.
+    *
+    * @param formatElementIndex the index of a format element within the pattern
+    * @param newFormat the format to use for the specified format element
+    * @exception ArrayIndexOutOfBoundsException if formatElementIndex is equal to or
+    *            larger than the number of format elements in the pattern string
+    * @stable ICU 3.0
+    */
+   public void setFormat(int formatElementIndex, Format newFormat) {
+       messageFormat.setFormat(formatElementIndex, unwrap(newFormat));
+   }
+
+   /**
+    * Gets the formats used for the values passed into
+    * <code>format</code> methods or returned from <code>parse</code>
+    * methods. The indices of elements in the returned array
+    * correspond to the argument indices used in the previously set
+    * pattern string.
+    * The order of formats in the returned array thus corresponds to
+    * the order of elements in the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If an argument index is used for more than one format element
+    * in the pattern string, then the format used for the last such
+    * format element is returned in the array. If an argument index
+    * is not used for any format element in the pattern string, then
+    * null is returned in the array.
+    *
+    * @return the formats used for the arguments within the pattern
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not 
+    * support this method.
+    */
+   public Format[] getFormatsByArgumentIndex() {
+       if (gfbai == null) {
+           synchronized (missing) {
+               try {
+                   gfbai = java.text.MessageFormat.class.getMethod("getFormatsByArgumentIndex", null);
+               }
+               catch (NoSuchMethodException e) {
+                   gfbai = missing;
+               }
+           }
+       }
+       if (gfbai != missing) {
+           try {
+               Format[] result = (Format[])((Method)gfbai).invoke(messageFormat, null);
+               for (int i = 0; i < result.length; ++i) {
+                   result[i] = wrap(result[i]);
+               }
+               return result;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+   }
+   private static Object gfbai;
+   private static final Object missing = new Object();
+
+   /**
+    * Gets the formats used for the format elements in the
+    * previously set pattern string.
+    * The order of formats in the returned array corresponds to
+    * the order of format elements in the pattern string.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it's generally better to use the
+    * {@link #getFormatsByArgumentIndex getFormatsByArgumentIndex}
+    * method, which assumes an order of formats corresponding to the
+    * order of elements in the <code>arguments</code> array passed to
+    * the <code>format</code> methods or the result array returned by
+    * the <code>parse</code> methods.
+    *
+    * @return the formats used for the format elements in the pattern
+    * @stable ICU 3.0
+    */
+   public Format[] getFormats() {
+       Format[] result = messageFormat.getFormats();
+       for (int i = 0; i < result.length; ++i) {
+           result[i] = wrap(result[i]);
+       }
+       return result;
+   }
+
+   /**
+    * Formats an array of objects and appends the <code>MessageFormat</code>'s
+    * pattern, with format elements replaced by the formatted objects, to the
+    * provided <code>StringBuffer</code>.
+    * <p>
+    * The text substituted for the individual format elements is derived from
+    * the current subformat of the format element and the
+    * <code>arguments</code> element at the format element's argument index
+    * as indicated by the first matching line of the following table. An
+    * argument is <i>unavailable</i> if <code>arguments</code> is
+    * <code>null</code> or has fewer than argumentIndex+1 elements.
+    * <p>
+    * <table border=1>
+    *    <tr>
+    *       <th>Subformat
+    *       <th>Argument
+    *       <th>Formatted Text
+    *    <tr>
+    *       <td><i>any</i>
+    *       <td><i>unavailable</i>
+    *       <td><code>"{" + argumentIndex + "}"</code>
+    *    <tr>
+    *       <td><i>any</i>
+    *       <td><code>null</code>
+    *       <td><code>"null"</code>
+    *    <tr>
+    *       <td><code>instanceof ChoiceFormat</code>
+    *       <td><i>any</i>
+    *       <td><code>subformat.format(argument).indexOf('{') >= 0 ?<br>
+    *           (new MessageFormat(subformat.format(argument), getLocale())).format(argument) :
+    *           subformat.format(argument)</code>
+    *    <tr>
+    *       <td><code>!= null</code>
+    *       <td><i>any</i>
+    *       <td><code>subformat.format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof Number</code>
+    *       <td><code>NumberFormat.getInstance(getLocale()).format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof Date</code>
+    *       <td><code>DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof String</code>
+    *       <td><code>argument</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><i>any</i>
+    *       <td><code>argument.toString()</code>
+    * </table>
+    * <p>
+    * If <code>pos</code> is non-null, and refers to
+    * <code>Field.ARGUMENT</code>, the location of the first formatted
+    * string will be returned.
+    *
+    * @param arguments an array of objects to be formatted and substituted.
+    * @param result where text is appended.
+    * @param pos On input: an alignment field, if desired.
+    *            On output: the offsets of the alignment field.
+    * @exception IllegalArgumentException if an argument in the
+    *            <code>arguments</code> array is not of the type
+    *            expected by the format element(s) that use it.
+    * @stable ICU 3.0
+    */
+   public final StringBuffer format(Object[] arguments, StringBuffer result,
+       FieldPosition pos)
+   {
+       return messageFormat.format(arguments, result, pos);
+   }
+
+   /**
+    * Creates a MessageFormat with the given pattern and uses it
+    * to format the given arguments. This is equivalent to
+    * <blockquote>
+    *     <code>(new {@link #MessageFormat(String) MessageFormat}(pattern)).{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+    * </blockquote>
+    *
+    * @exception IllegalArgumentException if the pattern is invalid,
+    *            or if an argument in the <code>arguments</code> array
+    *            is not of the type expected by the format element(s)
+    *            that use it.
+    * @stable ICU 3.0
+    */
+   public static String format(String pattern, Object[] arguments) {
+       return java.text.MessageFormat.format(pattern, arguments);
+   }
+
+   // Overrides
+   /**
+    * Formats an array of objects and appends the <code>MessageFormat</code>'s
+    * pattern, with format elements replaced by the formatted objects, to the
+    * provided <code>StringBuffer</code>.
+    * This is equivalent to
+    * <blockquote>
+    *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}((Object[]) arguments, result, pos)</code>
+    * </blockquote>
+    *
+    * @param arguments an array of objects to be formatted and substituted.
+    * @param result where text is appended.
+    * @param pos On input: an alignment field, if desired.
+    *            On output: the offsets of the alignment field.
+    * @exception IllegalArgumentException if an argument in the
+    *            <code>arguments</code> array is not of the type
+    *            expected by the format element(s) that use it.
+    * @stable ICU 3.0
+    */
+   public final StringBuffer format(Object arguments, StringBuffer result,
+       FieldPosition pos)
+   {
+       return messageFormat.format(arguments, result, pos);
+   }
+
+
+   /**
+    * Parses the string.
+    *
+    * <p>Caveats: The parse may fail in a number of circumstances.
+    * For example:
+    * <ul>
+    * <li>If one of the arguments does not occur in the pattern.
+    * <li>If the format of an argument loses information, such as
+    *     with a choice format where a large number formats to "many".
+    * <li>Does not yet handle recursion (where
+    *     the substituted strings contain {n} references.)
+    * <li>Will not always find a match (or the correct match)
+    *     if some part of the parse is ambiguous.
+    *     For example, if the pattern "{1},{2}" is used with the
+    *     string arguments {"a,b", "c"}, it will format as "a,b,c".
+    *     When the result is parsed, it will return {"a", "b,c"}.
+    * <li>If a single argument is parsed more than once in the string,
+    *     then the later parse wins.
+    * </ul>
+    * When the parse fails, use ParsePosition.getErrorIndex() to find out
+    * where in the string did the parsing failed.  The returned error
+    * index is the starting offset of the sub-patterns that the string
+    * is comparing with.  For example, if the parsing string "AAA {0} BBB"
+    * is comparing against the pattern "AAD {0} BBB", the error index is
+    * 0. When an error occurs, the call to this method will return null.
+    * If the source is null, return an empty array.
+    * @stable ICU 3.0
+    */
+   public Object[] parse(String source, ParsePosition pos) {
+       return messageFormat.parse(source, pos);
+   }
+
+   /**
+    * Parses text from the beginning of the given string to produce an object
+    * array.
+    * The method may not use the entire text of the given string.
+    * <p>
+    * See the {@link #parse(String, ParsePosition)} method for more information
+    * on message parsing.
+    *
+    * @param source A <code>String</code> whose beginning should be parsed.
+    * @return An <code>Object</code> array parsed from the string.
+    * @exception ParseException if the beginning of the specified string
+    *            cannot be parsed.
+    * @stable ICU 3.0
+    */
+   public Object[] parse(String source) throws ParseException {
+       return messageFormat.parse(source);
+   }
+
+   /**
+    * Parses text from a string to produce an object array.
+    * <p>
+    * The method attempts to parse text starting at the index given by
+    * <code>pos</code>.
+    * If parsing succeeds, then the index of <code>pos</code> is updated
+    * to the index after the last character used (parsing does not necessarily
+    * use all characters up to the end of the string), and the parsed
+    * object array is returned. The updated <code>pos</code> can be used to
+    * indicate the starting point for the next call to this method.
+    * If an error occurs, then the index of <code>pos</code> is not
+    * changed, the error index of <code>pos</code> is set to the index of
+    * the character where the error occurred, and null is returned.
+    * <p>
+    * See the {@link #parse(String, ParsePosition)} method for more information
+    * on message parsing.
+    *
+    * @param source A <code>String</code>, part of which should be parsed.
+    * @param pos A <code>ParsePosition</code> object with index and error
+    *            index information as described above.
+    * @return An <code>Object</code> array parsed from the string. In case of
+    *         error, returns null.
+    * @exception NullPointerException if <code>pos</code> is null.
+    * @stable ICU 3.0
+    */
+   public Object parseObject(String source, ParsePosition pos) {
+       return messageFormat.parse(source, pos);
+   }
+
+   /**
+    * Convert an 'apostrophe-friendly' pattern into a standard
+    * pattern.  Standard patterns treat all apostrophes as
+    * quotes, which is problematic in some languages, e.g. 
+    * French, where apostrophe is commonly used.  This utility
+    * assumes that only an unpaired apostrophe immediately before
+    * a brace is a true quote.  Other unpaired apostrophes are paired,
+    * and the resulting standard pattern string is returned.
+    *
+    * <p><b>Note</b> it is not guaranteed that the returned pattern
+    * is indeed a valid pattern.  The only effect is to convert
+    * between patterns having different quoting semantics.
+    *
+    * @param pattern the 'apostrophe-friendly' patttern to convert
+    * @return the standard equivalent of the original pattern
+    * @stable ICU 3.4
+    */
+   public static String autoQuoteApostrophe(String pattern) {
+       StringBuffer buf = new StringBuffer(pattern.length()*2);
+       int state = STATE_INITIAL;
+       int braceCount = 0;
+       for (int i = 0, j = pattern.length(); i < j; ++i) {
+           char c = pattern.charAt(i);
+           switch (state) {
+           case STATE_INITIAL:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_SINGLE_QUOTE;
+                   break;
+               case CURLY_BRACE_LEFT:
+                   state = STATE_MSG_ELEMENT;
+                   ++braceCount;
+                   break;
+               }
+               break;
+           case STATE_SINGLE_QUOTE:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_INITIAL;
+                   break;
+               case CURLY_BRACE_LEFT:
+               case CURLY_BRACE_RIGHT:
+                   state = STATE_IN_QUOTE;
+                   break;
+               default:
+                   buf.append(SINGLE_QUOTE);
+               state = STATE_INITIAL;
+               break;
+               }
+               break;
+           case STATE_IN_QUOTE:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_INITIAL;
+                   break;
+               }
+               break;
+           case STATE_MSG_ELEMENT:
+               switch (c) {
+               case CURLY_BRACE_LEFT:
+                   ++braceCount;
+                   break;
+               case CURLY_BRACE_RIGHT:
+                   if (--braceCount == 0) {
+                       state = STATE_INITIAL;
+                   }
+                   break;
+               }
+               break;
+           default: // Never happens.
+               break;
+           }
+           buf.append(c);
+       }
+       // End of scan
+       if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+           buf.append(SINGLE_QUOTE);
+       }
+       return new String(buf);
+   }
+   
+   /**
+    * Creates and returns a copy of this object.
+    *
+    * @return a clone of this instance.
+    * @stable ICU 3.0
+    */
+   public Object clone() {
+       return new MessageFormat((java.text.MessageFormat)messageFormat.clone());
+   }
+
+   /**
+    * Equality comparison between two message format objects
+    * @stable ICU 3.0
+    */
+   public boolean equals(Object obj) {
+       try {
+           return messageFormat.equals(((MessageFormat)obj).messageFormat);
+       }
+       catch (Exception e) {
+           return false;
+       }
+   }
+
+   /**
+    * Generates a hash code for the message format object.
+    * @stable ICU 3.0
+    */
+   public int hashCode() {
+       return messageFormat.hashCode();
+   }
+
+   /**
+    * Return a string suitable for debugging.
+    * @return a string suitable for debugging
+    * @stable ICU 3.4.2
+    */
+   public String toString() {
+       return messageFormat.toPattern();
+   }
+
+   private static Format unwrap(Format f) {
+       if (f instanceof DateFormat) {
+           return ((DateFormat)f).dateFormat;
+       } else if (f instanceof NumberFormat) {
+           return ((NumberFormat)f).numberFormat;
+       } else if (f instanceof MessageFormat) {
+           return ((MessageFormat)f).messageFormat;
+       } else {
+           return f;
+       }
+   }
+
+   private static Format wrap(Format f) {
+       if (f instanceof java.text.DateFormat) {
+           return new DateFormat((java.text.DateFormat)f);
+       } else if (f instanceof java.text.DecimalFormat) {
+           return new DecimalFormat((java.text.DecimalFormat)f);
+       } else if (f instanceof java.text.MessageFormat) {
+           return new MessageFormat((java.text.MessageFormat)f);
+       } else {
+           return f;
+       }
+   }
+
+   private static final char SINGLE_QUOTE = '\'';
+   private static final char CURLY_BRACE_LEFT = '{';
+   private static final char CURLY_BRACE_RIGHT = '}';
+
+   private static final int STATE_INITIAL = 0;
+   private static final int STATE_SINGLE_QUOTE = 1;
+   private static final int STATE_IN_QUOTE = 2;
+   private static final int STATE_MSG_ELEMENT = 3;
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..f825a94
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,778 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.text;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigInteger;
+import java.text.DecimalFormatSymbols;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <p><strong>This is an enhanced version of <code>NumberFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getIntegerInstance</code> to get an
+ * integer number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat is designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after '6')
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after '8')
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown on DecimalFormat.
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * <h4>Synchronization</h4>
+ * <p>
+ * Number formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * <h4>DecimalFormat</h4>
+ * <p>DecimalFormat is the concrete implementation of NumberFormat, and the
+ * NumberFormat API is essentially an abstraction from DecimalFormat's API.
+ * Refer to DecimalFormat for more information about this API.</p>
+ *
+ * see          DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class NumberFormat extends Format {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * @internal
+     */
+    public final java.text.NumberFormat numberFormat;
+        
+    /**
+     * @internal
+     * @param delegate the NumberFormat to which to delegate
+     */
+    public NumberFormat(java.text.NumberFormat delegate) {
+        this.numberFormat = delegate;
+    }
+    
+    /**
+     * Default constructor to mirror Java's default public
+     * constructor.  Java's is not callable as a public API, since
+     * their NumberFormat is abstract, so this is only useful to
+     * subclasses.  In general, subclasses will not work unless
+     * they manipulate the delegate.
+     */
+    public NumberFormat() {
+        this.numberFormat = java.text.NumberFormat.getInstance();
+    }
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int INTEGER_FIELD = 0;
+        
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int FRACTION_FIELD = 1;
+        
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * @stable ICU 2.0
+     */
+    public final Object parseObject(String source, ParsePosition parsePosition) {
+        return numberFormat.parse(source, parsePosition);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(double number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(long number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public final String format(BigInteger number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+    /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see #isParseIntegerOnly
+     * @see java.text.Format#parseObject(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        return numberFormat.parse(text, parsePosition);
+    }
+        
+    /**
+     * Parses text from the beginning of the given string to produce a number.
+     * The method might not use the entire text of the given string.
+     *
+     * @param text A String whose beginning should be parsed.
+     * @return A Number parsed from the string.
+     * @exception ParseException if the beginning of the specified string 
+     * cannot be parsed.
+     * @see #format
+     * @stable ICU 2.0
+     */
+    public Number parse(String text) throws ParseException {
+        return numberFormat.parse(text);
+    }
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  The decimal separator accepted
+     * by the parse operation is locale-dependent and determined by the
+     * subclass.
+     * @return true if this will parse integers only
+     * @stable ICU 2.0
+     */
+    public boolean isParseIntegerOnly() {
+        return numberFormat.isParseIntegerOnly();
+    }
+        
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @param value true if this should parse integers only
+     * @see #isParseIntegerOnly
+     * @stable ICU 2.0
+     */
+    public void setParseIntegerOnly(boolean value) {
+        numberFormat.setParseIntegerOnly(value);
+    }
+        
+    //============== Locale Stuff =====================
+        
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getIntegerInstance,
+     * getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getNumberInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the current default locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getIntegerInstance() {
+        return getInstance(ULocale.getDefault(), INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getIntegerInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getIntegerInstance(ULocale inLocale) {
+        return getInstance(inLocale, INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the current default locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(ULocale.getDefault(), CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getCurrencyInstance(ULocale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the current default locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(ULocale.getDefault(), PERCENTSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), PERCENTSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getPercentInstance(ULocale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the current default locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(ULocale.getDefault(), SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getScientificInstance(ULocale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.NumberFormat.getAvailableLocales();
+    }
+        
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @draft ICU 3.2 (retain)
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (availableULocales == null) {
+            Locale[] locales = java.text.NumberFormat.getAvailableLocales();
+            ULocale[] ulocales = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                ulocales[i] = ULocale.forLocale(locales[i]);
+            }
+            availableULocales = ulocales;
+        }
+        return (ULocale[])availableULocales.clone();
+    }
+    private static ULocale[] availableULocales;
+        
+        
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * en_US locale, with grouping on, the number 1234567 will be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale-dependent and is determined by subclasses of NumberFormat.
+     * Grouping affects both parsing and formatting.
+     * @return true if grouping is used
+     * @see #setGroupingUsed
+     * @stable ICU 2.0
+     */
+    public boolean isGroupingUsed() {
+        return numberFormat.isGroupingUsed();
+    }
+        
+    /**
+     * Sets whether or not grouping will be used in this format.  Grouping
+     * affects both parsing and formatting.
+     * @see #isGroupingUsed
+     * @param newValue true to use grouping.
+     * @stable ICU 2.0
+     */
+    public void setGroupingUsed(boolean newValue) {
+        numberFormat.setGroupingUsed(newValue);
+    }
+        
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.  The default value is 40, which subclasses can override.
+     * When formatting, the exact behavior when this value is exceeded is
+     * subclass-specific.  When parsing, this has no effect.
+     * @return the maximum number of integer digits
+     * @see #setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMaximumIntegerDigits() {
+        return numberFormat.getMaximumIntegerDigits();
+    }
+        
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        numberFormat.setMaximumIntegerDigits(newValue);
+    }
+        
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.  The default value is 1, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on the
+     * left with the locale-specific '0' character to ensure at least this
+     * number of integer digits.  When parsing, this has no effect.
+     * @return the minimum number of integer digits
+     * @see #setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumIntegerDigits() {
+        return numberFormat.getMinimumIntegerDigits();
+    }
+        
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.  This must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits is more than the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        numberFormat.setMinimumIntegerDigits(newValue);
+    }
+        
+    /**
+     * Returns the maximum number of digits allowed in the fraction
+     * portion of a number.  The default value is 3, which subclasses
+     * can override.  When formatting, the exact behavior when this
+     * value is exceeded is subclass-specific.  When parsing, this has 
+     * no effect.
+     * @return the maximum number of fraction digits
+     * @see #setMaximumFractionDigits
+     * @stable ICU 2.0 
+     */
+    public int getMaximumFractionDigits() {
+        return numberFormat.getMaximumFractionDigits();
+    }
+        
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        numberFormat.setMaximumFractionDigits(newValue);
+    }
+        
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.  The default value is 0, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on
+     * the right with the locale-specific '0' character to ensure at least
+     * this number of fraction digits.  When parsing, this has no effect.
+     * @return the minimum number of fraction digits
+     * @see #setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumFractionDigits() {
+        return numberFormat.getMinimumFractionDigits();
+    }
+        
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number.  This must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        numberFormat.setMinimumFractionDigits(newValue);
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return numberFormat.toString();
+    }
+        
+    /**
+     * Overrides Cloneable.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new NumberFormat((java.text.NumberFormat)numberFormat.clone());
+    }
+        
+    /**
+     * Overrides equals.  Two NumberFormats are equal if they are of the same class
+     * and the settings (groupingUsed, parseIntegerOnly, maximumIntegerDigits, etc.
+     * are equal.
+     * @param obj the object to compare against
+     * @return true if the object is equal to this.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return numberFormat.equals(((NumberFormat)obj).numberFormat);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return numberFormat.hashCode();
+    }
+
+    // =======================privates===============================
+        
+    private static NumberFormat getInstance(ULocale desiredLocale, int choice) {
+        Locale locale = desiredLocale.toLocale();
+        java.text.NumberFormat nf = null;
+        switch (choice) {
+        case NUMBERSTYLE: nf = java.text.NumberFormat.getInstance(locale); break;
+        case CURRENCYSTYLE: nf = java.text.NumberFormat.getCurrencyInstance(locale); break;
+        case PERCENTSTYLE: nf = java.text.NumberFormat.getPercentInstance(locale); break;
+        case SCIENTIFICSTYLE: nf = new java.text.DecimalFormat("#E0", new DecimalFormatSymbols(locale)); 
+            nf.setMaximumFractionDigits(10);
+            break;
+        case INTEGERSTYLE: 
+            if (unchecked) {
+                unchecked = false;
+                try {
+                    Class[] args = { java.util.Locale.class };
+                    integer14API = java.text.NumberFormat.class.getMethod("getIntegerInstance", args);
+                }
+                catch (Exception e) {
+                }
+            }
+            if (integer14API != null) {
+                try {
+                    Object[] args = { locale };
+                    nf = (java.text.NumberFormat)integer14API.invoke(null, args);
+                }
+                catch (IllegalAccessException e) {
+                    integer14API = null;
+                }
+                catch (InvocationTargetException e) {
+                    integer14API = null;
+                }
+                catch (Exception e) {
+                    // shouldn't happen, but locale might be null, for example
+                    // and we don't want to throw away our method because someone
+                    // called us with a bad parameter
+                }
+            }
+            if (nf == null) {
+                nf = java.text.NumberFormat.getNumberInstance(locale); 
+                nf.setMaximumFractionDigits(0);
+                nf.setParseIntegerOnly(true);
+            }
+            break;
+        }
+        return new NumberFormat(nf);
+    }
+    
+    private static boolean unchecked = true;
+    private static Method integer14API;
+    
+    private static final int NUMBERSTYLE = 0;
+    private static final int CURRENCYSTYLE = 1;
+    private static final int PERCENTSTYLE = 2;
+    private static final int SCIENTIFICSTYLE = 3;
+    private static final int INTEGERSTYLE = 4;
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..ddf0300
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y&#x2020;       year                    (Number)            1996
+ * Y*       year (week of year)     (Number)            1997
+ * u*       extended year           (Number)            4601
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        fractional second       (Number)            978
+ * E        day of week             (Text)              Tuesday
+ * e*       day of week (local 1~7) (Number)            2
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * Z        time zone (RFC 822)     (Number)            -0800
+ * v        time zone (generic)     (Text)              Pacific Time
+ * g*       Julian day              (Number)            2451334
+ * A*       milliseconds in day     (Number)            69540000
+ * '        escape for text         (Delimiter)         'Date='
+ * ''       single quote            (Literal)           'o''clock'
+ * </pre>
+ * </blockquote>
+ * <tt><b>*</b></tt> These items are not supported by Java's SimpleDateFormat.<br>
+ * <tt><b>&#x2020;</b></tt> ICU interprets a single 'y' differently than Java.</p>
+ * <p>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * (e.g., if "yyyy" produces "1997", "yy" produces "97".)
+ * Unlike other fields, fractional seconds are padded on the right with zero.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->>  1996.07.10 AD at 15:08:56 Pacific Time
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, vvv"                     ->>  0:00 PM, PT
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  01996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link java.lang.Character#isDigit(char)}, will be parsed into the default
+ * century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern does not have exactly two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * When numeric fields abut one another directly, with no intervening delimiter
+ * characters, they constitute a run of abutting numeric fields.  Such runs are
+ * parsed specially.  For example, the format "HHmmss" parses the input text
+ * "123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to
+ * parse "1234".  In other words, the leftmost field of the run is flexible,
+ * while the others keep a fixed width.  If the parse fails anywhere in the run,
+ * then the leftmost field is shortened by one character, and the entire run is
+ * parsed again. This is repeated until either the parse succeeds or the
+ * leftmost field is one character in length.  If the parse still fails at that
+ * point, the parse of the run fails.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate
+ * format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally.
+ *
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleDateFormat extends DateFormat {
+    private static final long serialVersionUID = 1;
+       
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat() {
+        super(new java.text.SimpleDateFormat());
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern) {
+        super(new java.text.SimpleDateFormat(pattern));
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @param loc the locale to use for localization
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, Locale loc) {
+        super(new java.text.SimpleDateFormat(pattern, loc));
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @param loc the ulocale to use for localization
+     * @stable ICU 3.2
+     */
+    public SimpleDateFormat(String pattern, ULocale loc) {
+        this(pattern, loc.toLocale());
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     * Warning: uses default locale for digits!
+     * @param pattern the pattern to use
+     * @param formatData the symbols to use for localization
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData) {
+        super(new java.text.SimpleDateFormat(pattern, formatData.dfs));
+    }
+        
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     * @stable ICU 2.0
+     */
+    public void set2DigitYearStart(Date startDate) {
+        ((java.text.SimpleDateFormat)dateFormat).set2DigitYearStart(startDate);
+    }
+        
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     * @stable ICU 2.0
+     */
+    public Date get2DigitYearStart() {
+        return ((java.text.SimpleDateFormat)dateFormat).get2DigitYearStart();
+    }
+        
+    /**
+     * Overrides DateFormat.
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param cal the calendar whose date-time value is to be formatted into a date-time string
+     * @param toAppendTo where the new date-time text is to be appended
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition pos) {
+        StringBuffer result;
+        synchronized(dateFormat) {
+            java.util.Calendar oldCal = dateFormat.getCalendar();
+            dateFormat.setCalendar(cal.calendar);
+            result = dateFormat.format(cal.getTime(), toAppendTo, pos);
+            dateFormat.setCalendar(oldCal);
+        }
+        return result;
+    }
+        
+    /**
+     * Overrides DateFormat
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition parsePos) {
+        // TODO: cannot set the parsed timezone, document?
+        cal.setTime(dateFormat.parse(text, parsePos));
+    }
+        
+    /**
+     * Return a pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return ((java.text.SimpleDateFormat)dateFormat).toPattern();
+    }
+        
+    /**
+     * Return a localized pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return ((java.text.SimpleDateFormat)dateFormat).toLocalizedPattern();
+    }
+        
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pattern) {
+        ((java.text.SimpleDateFormat)dateFormat).applyPattern(pattern);
+    }
+        
+    /**
+     * Apply the given localized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pattern) {
+        ((java.text.SimpleDateFormat)dateFormat).applyLocalizedPattern(pattern);
+    }
+        
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols getDateFormatSymbols() {
+        return new DateFormatSymbols(((java.text.SimpleDateFormat)dateFormat).getDateFormatSymbols());
+    }
+        
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatSymbols the new symbols
+     * @stable ICU 2.0
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) {
+        ((java.text.SimpleDateFormat)dateFormat).setDateFormatSymbols(newFormatSymbols.dfs);
+    }
+        
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new SimpleDateFormat((java.text.SimpleDateFormat)dateFormat.clone());
+    }
+        
+    /**
+     * For clone to use
+     * @param sdf
+     */
+    private SimpleDateFormat(java.text.SimpleDateFormat sdf) {
+        super(sdf);
+    }
+        
+    // hashCode, equals, clone use DateFormat implementation.
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..18d4e02
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,2118 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * <code>Calendar</code> is an abstract base class for converting between
+ * a <code>Date</code> object and a set of integer fields such as
+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
+ * and so on. (A <code>Date</code> object represents a specific instant in
+ * time with millisecond precision. See
+ * {@link Date}
+ * for information about the <code>Date</code> class.)
+ *
+ * <p><b>Note:</b>  This class is similar, but not identical, to the class
+ * <code>java.util.Calendar</code>.  Changes are detailed below.
+ *
+ * <p>
+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
+ * according to the rules of a specific calendar system.  ICU4J contains
+ * several subclasses implementing different international calendar systems.
+ *
+ * <p>
+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
+ * class method, <code>getInstance</code>, for getting a generally useful
+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
+ * returns a calendar of a type appropriate to the locale, whose
+ * time fields have been initialized with the current date and time:
+ * <blockquote>
+ * <pre>Calendar rightNow = Calendar.getInstance()</pre>
+ * </blockquote>
+ *
+ * <p>When a <code>ULocale</code> is used by <code>getInstance</code>, its
+ * '<code>calendar</code>' tag and value are retrieved if present.  If a recognized
+ * value is supplied, a calendar is provided and configured as appropriate.
+ * Currently recognized tags are "buddhist", "chinese", "coptic", "ethiopic", 
+ * "gregorian", "hebrew", "islamic", "islamic-civil", and "japanese".  For
+ * example: <blockquote>
+ * <pre>Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=japanese"));</pre>
+ * </blockquote> will return an instance of JapaneseCalendar (using en_US conventions for
+ * minimum days in first week, start day of week, et cetera).
+ *
+ * <p>A <code>Calendar</code> object can produce all the time field values
+ * needed to implement the date-time formatting for a particular language and
+ * calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
+ * <code>Calendar</code> defines the range of values returned by certain fields,
+ * as well as their meaning.  For example, the first month of the year has value
+ * <code>MONTH</code> == <code>JANUARY</code> for all calendars.  Other values
+ * are defined by the concrete subclass, such as <code>ERA</code> and
+ * <code>YEAR</code>.  See individual field documentation and subclass
+ * documentation for details.
+ *
+ * <p>When a <code>Calendar</code> is <em>lenient</em>, it accepts a wider range
+ * of field values than it produces.  For example, a lenient
+ * <code>GregorianCalendar</code> interprets <code>MONTH</code> ==
+ * <code>JANUARY</code>, <code>DAY_OF_MONTH</code> == 32 as February 1.  A
+ * non-lenient <code>GregorianCalendar</code> throws an exception when given
+ * out-of-range field settings.  When calendars recompute field values for
+ * return by <code>get()</code>, they normalize them.  For example, a
+ * <code>GregorianCalendar</code> always produces <code>DAY_OF_MONTH</code>
+ * values between 1 and the length of the month.
+ *
+ * <p><code>Calendar</code> defines a locale-specific seven day week using two
+ * parameters: the first day of the week and the minimal days in first week
+ * (from 1 to 7).  These numbers are taken from the locale resource data when a
+ * <code>Calendar</code> is constructed.  They may also be specified explicitly
+ * through the API.
+ *
+ * <p>When setting or getting the <code>WEEK_OF_MONTH</code> or
+ * <code>WEEK_OF_YEAR</code> fields, <code>Calendar</code> must determine the
+ * first week of the month or year as a reference point.  The first week of a
+ * month or year is defined as the earliest seven day period beginning on
+ * <code>getFirstDayOfWeek()</code> and containing at least
+ * <code>getMinimalDaysInFirstWeek()</code> days of that month or year.  Weeks
+ * numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow
+ * it.  Note that the normalized numbering returned by <code>get()</code> may be
+ * different.  For example, a specific <code>Calendar</code> subclass may
+ * designate the week before week 1 of a year as week <em>n</em> of the previous
+ * year.
+ *
+ * <p> When computing a <code>Date</code> from time fields, two special
+ * circumstances may arise: there may be insufficient information to compute the
+ * <code>Date</code> (such as only year and month but no day in the month), or
+ * there may be inconsistent information (such as "Tuesday, July 15, 1996" --
+ * July 15, 1996 is actually a Monday).
+ *
+ * <p>
+ * <strong>Insufficient information.</strong> The calendar will use default
+ * information to specify the missing fields. This may vary by calendar; for
+ * the Gregorian calendar, the default for a field is the same as that of the
+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
+ *
+ * <p>
+ * <strong>Inconsistent information.</strong> If fields conflict, the calendar
+ * will give preference to fields set more recently. For example, when
+ * determining the day, the calendar will look for one of the following
+ * combinations of fields.  The most recent combination, as determined by the
+ * most recently set single field, will be used.
+ *
+ * <blockquote>
+ * <pre>
+ * MONTH + DAY_OF_MONTH
+ * MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ * MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ * DAY_OF_YEAR
+ * DAY_OF_WEEK + WEEK_OF_YEAR</pre>
+ * </blockquote>
+ *
+ * For the time of day:
+ *
+ * <blockquote>
+ * <pre>
+ * HOUR_OF_DAY
+ * AM_PM + HOUR</pre>
+ * </blockquote>
+ *
+ * <p>
+ * <strong>Note:</strong> for some non-Gregorian calendars, different
+ * fields may be necessary for complete disambiguation. For example, a full
+ * specification of the historial Arabic astronomical calendar requires year,
+ * month, day-of-month <em>and</em> day-of-week in some cases.
+ *
+ * <p>
+ * <strong>Note:</strong> There are certain possible ambiguities in
+ * interpretation of certain singular times, which are resolved in the
+ * following ways:
+ * <ol>
+ *     <li> 24:00:00 "belongs" to the following day. That is,
+ *          23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
+ *
+ *     <li> Although historically not precise, midnight also belongs to "am",
+ *          and noon belongs to "pm", so on the same day,
+ *          12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
+ * </ol>
+ *
+ * <p>
+ * The date or time format strings are not part of the definition of a
+ * calendar, as those must be modifiable or overridable by the user at
+ * runtime. Use {@link DateFormat}
+ * to format dates.
+ *
+ * <p><strong>Field manipulation methods</strong></p>
+ *
+ * <p><code>Calendar</code> fields can be changed using three methods:
+ * <code>set()</code>, <code>add()</code>, and <code>roll()</code>.</p>
+ *
+ * <p><strong><code>set(f, value)</code></strong> changes field
+ * <code>f</code> to <code>value</code>.  In addition, it sets an
+ * internal member variable to indicate that field <code>f</code> has
+ * been changed. Although field <code>f</code> is changed immediately,
+ * the calendar's milliseconds is not recomputed until the next call to
+ * <code>get()</code>, <code>getTime()</code>, or
+ * <code>getTimeInMillis()</code> is made. Thus, multiple calls to
+ * <code>set()</code> do not trigger multiple, unnecessary
+ * computations. As a result of changing a field using
+ * <code>set()</code>, other fields may also change, depending on the
+ * field, the field value, and the calendar system. In addition,
+ * <code>get(f)</code> will not necessarily return <code>value</code>
+ * after the fields have been recomputed. The specifics are determined by
+ * the concrete calendar class.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>set(Calendar.MONTH,
+ * Calendar.SEPTEMBER)</code> sets the calendar to September 31,
+ * 1999. This is a temporary internal representation that resolves to
+ * October 1, 1999 if <code>getTime()</code>is then called. However, a
+ * call to <code>set(Calendar.DAY_OF_MONTH, 30)</code> before the call to
+ * <code>getTime()</code> sets the calendar to September 30, 1999, since
+ * no recomputation occurs after <code>set()</code> itself.</p>
+ *
+ * <p><strong><code>add(f, delta)</code></strong> adds <code>delta</code>
+ * to field <code>f</code>.  This is equivalent to calling <code>set(f,
+ * get(f) + delta)</code> with two adjustments:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Add rule 1</strong>. The value of field <code>f</code>
+ *   after the call minus the value of field <code>f</code> before the
+ *   call is <code>delta</code>, modulo any overflow that has occurred in
+ *   field <code>f</code>. Overflow occurs when a field value exceeds its
+ *   range and, as a result, the next larger field is incremented or
+ *   decremented and the field value is adjusted back into its range.</p>
+ *
+ *   <p><strong>Add rule 2</strong>. If a smaller field is expected to be
+ *   invariant, but &nbsp; it is impossible for it to be equal to its
+ *   prior value because of changes in its minimum or maximum after field
+ *   <code>f</code> is changed, then its value is adjusted to be as close
+ *   as possible to its expected value. A smaller field represents a
+ *   smaller unit of time. <code>HOUR</code> is a smaller field than
+ *   <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ *   that are not expected to be invariant. The calendar system
+ *   determines what fields are expected to be invariant.</p>
+ * </blockquote>
+ *
+ * <p>In addition, unlike <code>set()</code>, <code>add()</code> forces
+ * an immediate recomputation of the calendar's milliseconds and all
+ * fields.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>add(Calendar.MONTH,
+ * 13)</code> sets the calendar to September 30, 2000. <strong>Add rule
+ * 1</strong> sets the <code>MONTH</code> field to September, since
+ * adding 13 months to August gives September of the next year. Since
+ * <code>DAY_OF_MONTH</code> cannot be 31 in September in a
+ * <code>GregorianCalendar</code>, <strong>add rule 2</strong> sets the
+ * <code>DAY_OF_MONTH</code> to 30, the closest possible value. Although
+ * it is a smaller field, <code>DAY_OF_WEEK</code> is not adjusted by
+ * rule 2, since it is expected to change when the month changes in a
+ * <code>GregorianCalendar</code>.</p>
+ *
+ * <p><strong><code>roll(f, delta)</code></strong> adds
+ * <code>delta</code> to field <code>f</code> without changing larger
+ * fields. This is equivalent to calling <code>add(f, delta)</code> with
+ * the following adjustment:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Roll rule</strong>. Larger fields are unchanged after the
+ *   call. A larger field represents a larger unit of
+ *   time. <code>DAY_OF_MONTH</code> is a larger field than
+ *   <code>HOUR</code>.</p>
+ * </blockquote>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>roll(Calendar.MONTH,
+ * 8)</code> sets the calendar to April 30, <strong>1999</strong>.  Add
+ * rule 1 sets the <code>MONTH</code> field to April. Using a
+ * <code>GregorianCalendar</code>, the <code>DAY_OF_MONTH</code> cannot
+ * be 31 in the month April. Add rule 2 sets it to the closest possible
+ * value, 30. Finally, the <strong>roll rule</strong> maintains the
+ * <code>YEAR</code> field value of 1999.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to Sunday June 6, 1999. Calling
+ * <code>roll(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Tuesday June 1, 1999, whereas calling
+ * <code>add(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Sunday May 30, 1999. This is because the roll rule imposes an
+ * additional constraint: The <code>MONTH</code> must not change when the
+ * <code>WEEK_OF_MONTH</code> is rolled. Taken together with add rule 1,
+ * the resultant date must be between Tuesday June 1 and Saturday June
+ * 5. According to add rule 2, the <code>DAY_OF_WEEK</code>, an invariant
+ * when changing the <code>WEEK_OF_MONTH</code>, is set to Tuesday, the
+ * closest possible value to Sunday (where Sunday is the first day of the
+ * week).</p>
+ *
+ * <p><strong>Usage model</strong>. To motivate the behavior of
+ * <code>add()</code> and <code>roll()</code>, consider a user interface
+ * component with increment and decrement buttons for the month, day, and
+ * year, and an underlying <code>GregorianCalendar</code>. If the
+ * interface reads January 31, 1999 and the user presses the month
+ * increment button, what should it read? If the underlying
+ * implementation uses <code>set()</code>, it might read March 3, 1999. A
+ * better result would be February 28, 1999. Furthermore, if the user
+ * presses the month increment button again, it should read March 31,
+ * 1999, not March 28, 1999. By saving the original date and using either
+ * <code>add()</code> or <code>roll()</code>, depending on whether larger
+ * fields should be affected, the user interface can behave as most users
+ * will intuitively expect.</p>
+ *
+ * <p><b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *
+ * <p><big><big><b>Calendar Architecture in ICU4J</b></big></big></p>
+ *
+ * <p>Recently the implementation of <code>Calendar</code> has changed
+ * significantly in order to better support subclassing. The original
+ * <code>Calendar</code> class was designed to support subclassing, but
+ * it had only one implemented subclass, <code>GregorianCalendar</code>.
+ * With the implementation of several new calendar subclasses, including
+ * the <code>BuddhistCalendar</code>, <code>ChineseCalendar</code>,
+ * <code>HebrewCalendar</code>, <code>IslamicCalendar</code>, and
+ * <code>JapaneseCalendar</code>, the subclassing API has been reworked
+ * thoroughly. This section details the new subclassing API and other
+ * ways in which <code>com.ibm.icu.util.Calendar</code> differs from
+ * <code>java.util.Calendar</code>.
+ * </p>
+ *
+ * <p><big><b>Changes</b></big></p>
+ *
+ * <p>Overview of changes between the classic <code>Calendar</code>
+ * architecture and the new architecture.
+ *
+ * <ul>
+ *
+ *   <li>The <code>fields[]</code> array is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses must access it
+ *     using the methods {@link #internalSet} and
+ *     {@link #internalGet}.  <b>Motivation:</b> Subclasses should
+ *     not directly access data members.</li>
+ *
+ *   <li>The <code>time</code> long word is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses may access it using
+ *     the method {@link #internalGetTimeInMillis}, which does not
+ *     provoke an update. <b>Motivation:</b> Subclasses should not
+ *     directly access data members.</li>
+ *
+ *   <li>The scope of responsibility of subclasses has been drastically
+ *     reduced. As much functionality as possible is implemented in the
+ *     <code>Calendar</code> base class. As a result, it is much easier
+ *     to subclass <code>Calendar</code>. <b>Motivation:</b> Subclasses
+ *     should not have to reimplement common code. Certain behaviors are
+ *     common across calendar systems: The definition and behavior of
+ *     week-related fields and time fields, the arithmetic
+ *     ({@link #add(int, int) add} and {@link #roll(int, int) roll}) behavior of many
+ *     fields, and the field validation system.</li>
+ *
+ *   <li>The subclassing API has been completely redesigned.</li>
+ *
+ *   <li>The <code>Calendar</code> base class contains some Gregorian
+ *     calendar algorithmic support that subclasses can use (specifically
+ *     in {@link #handleComputeFields}).  Subclasses can use the
+ *     methods <code>getGregorianXxx()</code> to obtain precomputed
+ *     values. <b>Motivation:</b> This is required by all
+ *     <code>Calendar</code> subclasses in order to implement consistent
+ *     time zone behavior, and Gregorian-derived systems can use the
+ *     already computed data.</li>
+ *
+ *   <li>The <code>FIELD_COUNT</code> constant has been removed. Use
+ *     {@link #getFieldCount}.  In addition, framework API has been
+ *     added to allow subclasses to define additional fields.
+ *     <b>Motivation: </b>The number of fields is not constant across
+ *     calendar systems.</li>
+ *
+ *   <li>The range of handled dates has been narrowed from +/-
+ *     ~300,000,000 years to +/- ~5,000,000 years. In practical terms
+ *     this should not affect clients. However, it does mean that client
+ *     code cannot be guaranteed well-behaved results with dates such as
+ *     <code>Date(Long.MIN_VALUE)</code> or
+ *     <code>Date(Long.MAX_VALUE)</code>. Instead, the
+ *     <code>Calendar</code> constants {@link #MIN_DATE},
+ *     {@link #MAX_DATE}, {@link #MIN_MILLIS},
+ *     {@link #MAX_MILLIS}, {@link #MIN_JULIAN}, and
+ *     {@link #MAX_JULIAN} should be used. <b>Motivation:</b> With
+ *     the addition of the {@link #JULIAN_DAY} field, Julian day
+ *     numbers must be restricted to a 32-bit <code>int</code>.  This
+ *     restricts the overall supported range. Furthermore, restricting
+ *     the supported range simplifies the computations by removing
+ *     special case code that was used to accomodate arithmetic overflow
+ *     at millis near <code>Long.MIN_VALUE</code> and
+ *     <code>Long.MAX_VALUE</code>.</li>
+ *
+ *   <li>New fields are implemented: {@link #JULIAN_DAY} defines
+ *     single-field specification of the
+ *     date. {@link #MILLISECONDS_IN_DAY} defines a single-field
+ *     specification of the wall time. {@link #DOW_LOCAL} and
+ *     {@link #YEAR_WOY} implement localized day-of-week and
+ *     week-of-year behavior.</li>
+ *
+ *   <li>Subclasses can access millisecond constants
+ *     {@link #ONE_SECOND}, {@link #ONE_MINUTE},
+ *     {@link #ONE_HOUR}, {@link #ONE_DAY}, and
+ *     {@link #ONE_WEEK} defined in <code>Calendar</code>.</li>
+ *
+ *   <li>New API has been added to suport calendar-specific subclasses
+ *     of <code>DateFormat</code>.</li>
+ *
+ *   <li>Several subclasses have been implemented, representing
+ *     various international calendar systems.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Subclass API</b></big></p>
+ *
+ * <p>The original <code>Calendar</code> API was based on the experience
+ * of implementing a only a single subclass,
+ * <code>GregorianCalendar</code>. As a result, all of the subclassing
+ * kinks had not been worked out. The new subclassing API has been
+ * refined based on several implemented subclasses. This includes methods
+ * that must be overridden and methods for subclasses to call. Subclasses
+ * no longer have direct access to <code>fields</code> and
+ * <code>stamp</code>. Instead, they have new API to access
+ * these. Subclasses are able to allocate the <code>fields</code> array
+ * through a protected framework method; this allows subclasses to
+ * specify additional fields. </p>
+ *
+ * <p>More functionality has been moved into the base class. The base
+ * class now contains much of the computational machinery to support the
+ * Gregorian calendar. This is based on two things: (1) Many calendars
+ * are based on the Gregorian calendar (such as the Buddhist and Japanese
+ * imperial calendars). (2) <em>All</em> calendars require basic
+ * Gregorian support in order to handle timezone computations. </p>
+ *
+ * <p>Common computations have been moved into
+ * <code>Calendar</code>. Subclasses no longer compute the week related
+ * fields and the time related fields. These are commonly handled for all
+ * calendars by the base class. </p>
+ *
+ * <p><b>Subclass computation of time <tt>=&gt;</tt> fields</b>
+ *
+ * <p>The {@link #ERA}, {@link #YEAR},
+ * {@link #EXTENDED_YEAR}, {@link #MONTH},
+ * {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields are
+ * computed by the subclass, based on the Julian day. All other fields
+ * are computed by <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeFields}
+ *     to compute the {@link #ERA}, {@link #YEAR},
+ *     {@link #EXTENDED_YEAR}, {@link #MONTH},
+ *     {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields,
+ *     based on the value of the {@link #JULIAN_DAY} field. If there
+ *     are calendar-specific fields not defined by <code>Calendar</code>,
+ *     they must also be computed. These are the only fields that the
+ *     subclass should compute. All other fields are computed by the base
+ *     class, so time and week fields behave in a consistent way across
+ *     all calendars. The default version of this method in
+ *     <code>Calendar</code> implements a proleptic Gregorian
+ *     calendar. Within this method, subclasses may call
+ *     <code>getGregorianXxx()</code> to obtain the Gregorian calendar
+ *     month, day of month, and extended year for the given date.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Subclass computation of fields <tt>=&gt;</tt> time</b>
+ *
+ * <p>The interpretation of most field values is handled entirely by
+ * <code>Calendar</code>. <code>Calendar</code> determines which fields
+ * are set, which are not, which are set more recently, and so on. In
+ * addition, <code>Calendar</code> handles the computation of the time
+ * from the time fields and handles the week-related fields. The only
+ * thing the subclass must do is determine the extended year, based on
+ * the year fields, and then, given an extended year and a month, it must
+ * return a Julian day number.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetExtendedYear}
+ *     to return the extended year for this calendar system, based on the
+ *     {@link #YEAR}, {@link #EXTENDED_YEAR}, and any fields that
+ *     the calendar system uses that are larger than a year, such as
+ *     {@link #ERA}.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeMonthStart}
+ *     to return the Julian day number
+ *     associated with a month and extended year. This is the Julian day
+ *     number of the day before the first day of the month. The month
+ *     number is zero-based. This computation should not depend on any
+ *     field values.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Other methods</b>
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetMonthLength}
+ *     to return the number of days in a
+ *     given month of a given extended year. The month number, as always,
+ *     is zero-based.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetYearLength}
+ *     to return the number of days in the given
+ *     extended year. This method is used by
+ *     <tt>computeWeekFields</tt> to compute the
+ *     {@link #WEEK_OF_YEAR} and {@link #YEAR_WOY} fields.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetLimit}
+ *     to return the {@link #MINIMUM},
+ *     {@link #GREATEST_MINIMUM}, {@link #LEAST_MAXIMUM}, or
+ *     {@link #MAXIMUM} of a field, depending on the value of
+ *     <code>limitType</code>. This method only needs to handle the
+ *     fields {@link #ERA}, {@link #YEAR}, {@link #MONTH},
+ *     {@link #WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH},
+ *     {@link #DAY_OF_MONTH}, {@link #DAY_OF_YEAR},
+ *     {@link #DAY_OF_WEEK_IN_MONTH}, {@link #YEAR_WOY}, and
+ *     {@link #EXTENDED_YEAR}.  Other fields are invariant (with
+ *     respect to calendar system) and are handled by the base
+ *     class.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #validateField}
+ *     to check any subclass-specific fields. If the
+ *     field's value is out of range, the method should throw an
+ *     <code>IllegalArgumentException</code>. The method may call
+ *     <code>super.validateField(field)</code> to handle fields in a
+ *     generic way, that is, to compare them to the range
+ *     <code>getMinimum(field)</code>..<code>getMaximum(field)</code>.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleCreateFields} to create an <code>int[]</code>
+ *     array large enough to hold the calendar's fields. This is only
+ *     necessary if the calendar defines additional fields beyond those
+ *     defined by <code>Calendar</code>. The length of the result must be
+ *     at least {@link #BASE_FIELD_COUNT} and no more than
+ *     {@link #MAX_FIELD_COUNT}.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleGetDateFormat} to create a
+ *     <code>DateFormat</code> appropriate to this calendar. This is only
+ *     required if a calendar subclass redefines the use of a field (for
+ *     example, changes the {@link #ERA} field from a symbolic field
+ *     to a numeric one) or defines an additional field.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #roll roll} and
+ *     {@link #add add} to handle fields that are discontinuous. For
+ *     example, in the Hebrew calendar the month &quot;Adar I&quot; only
+ *     occurs in leap years; in other years the calendar jumps from
+ *     Shevat (month #4) to Adar (month #6). The {@link
+ *     HebrewCalendar#add HebrewCalendar.add} and {@link
+ *     HebrewCalendar#roll HebrewCalendar.roll} methods take this into
+ *     account, so that adding 1 month to Shevat gives the proper result
+ *     (Adar) in a non-leap year. The protected utility method {@link
+ *     #pinField pinField} is often useful when implementing these two
+ *     methods. </li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Normalized behavior</b></big>
+ *
+ * <p>The behavior of certain fields has been made consistent across all
+ * calendar systems and implemented in <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Time is normalized. Even though some calendar systems transition
+ *     between days at sunset or at other times, all ICU4J calendars
+ *     transition between days at <em>local zone midnight</em>.  This
+ *     allows ICU4J to centralize the time computations in
+ *     <code>Calendar</code> and to maintain basic correpsondences
+ *     between calendar systems. Affected fields: {@link #AM_PM},
+ *     {@link #HOUR}, {@link #HOUR_OF_DAY}, {@link #MINUTE},
+ *     {@link #SECOND}, {@link #MILLISECOND},
+ *     {@link #ZONE_OFFSET}, and {@link #DST_OFFSET}.</li>
+ *
+ *   <li>DST behavior is normalized. Daylight savings time behavior is
+ *     computed the same for all calendar systems, and depends on the
+ *     value of several <code>GregorianCalendar</code> fields: the
+ *     {@link #YEAR}, {@link #MONTH}, and
+ *     {@link #DAY_OF_MONTH}. As a result, <code>Calendar</code>
+ *     always computes these fields, even for non-Gregorian calendar
+ *     systems. These fields are available to subclasses.</li>
+ *
+ *   <li>Weeks are normalized. Although locales define the week
+ *     differently, in terms of the day on which it starts, and the
+ *     designation of week number one of a month or year, they all use a
+ *     common mechanism. Furthermore, the day of the week has a simple
+ *     and consistent definition throughout history. For example,
+ *     although the Gregorian calendar introduced a discontinuity when
+ *     first instituted, the day of week was not disrupted. For this
+ *     reason, the fields {@link #DAY_OF_WEEK}, <code>WEEK_OF_YEAR,
+ *     WEEK_OF_MONTH</code>, {@link #DAY_OF_WEEK_IN_MONTH},
+ *     {@link #DOW_LOCAL}, {@link #YEAR_WOY} are all computed in
+ *     a consistent way in the base class, based on the
+ *     {@link #EXTENDED_YEAR}, {@link #DAY_OF_YEAR},
+ *     {@link #MONTH}, and {@link #DAY_OF_MONTH}, which are
+ *     computed by the subclass.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Supported range</b></big>
+ *
+ * <p>The allowable range of <code>Calendar</code> has been
+ * narrowed. <code>GregorianCalendar</code> used to attempt to support
+ * the range of dates with millisecond values from
+ * <code>Long.MIN_VALUE</code> to <code>Long.MAX_VALUE</code>. This
+ * introduced awkward constructions (hacks) which slowed down
+ * performance. It also introduced non-uniform behavior at the
+ * boundaries. The new <code>Calendar</code> protocol specifies the
+ * maximum range of supportable dates as those having Julian day numbers
+ * of <code>-0x7F000000</code> to <code>+0x7F000000</code>. This
+ * corresponds to years from ~5,000,000 BCE to ~5,000,000 CE. Programmers
+ * should use the constants {@link #MIN_DATE} (or
+ * {@link #MIN_MILLIS} or {@link #MIN_JULIAN}) and
+ * {@link #MAX_DATE} (or {@link #MAX_MILLIS} or
+ * {@link #MAX_JULIAN}) in <code>Calendar</code> to specify an
+ * extremely early or extremely late date.</p>
+ *
+ * <p><big><b>General notes</b></big>
+ *
+ * <ul>
+ *
+ *   <li>Calendars implementations are <em>proleptic</em>. For example,
+ *     even though the Gregorian calendar was not instituted until the
+ *     16th century, the <code>GregorianCalendar</code> class supports
+ *     dates before the historical onset of the calendar by extending the
+ *     calendar system backward in time. Similarly, the
+ *     <code>HebrewCalendar</code> extends backward before the start of
+ *     its epoch into zero and negative years. Subclasses do not throw
+ *     exceptions because a date precedes the historical start of a
+ *     calendar system. Instead, they implement
+ *     {@link #handleGetLimit} to return appropriate limits on
+ *     {@link #YEAR}, {@link #ERA}, etc. fields. Then, if the
+ *     calendar is set to not be lenient, out-of-range field values will
+ *     trigger an exception.</li>
+ *
+ *   <li>Calendar system subclasses compute a <em>extended
+ *     year</em>. This differs from the {@link #YEAR} field in that
+ *     it ranges over all integer values, including zero and negative
+ *     values, and it encapsulates the information of the
+ *     {@link #YEAR} field and all larger fields.  Thus, for the
+ *     Gregorian calendar, the {@link #EXTENDED_YEAR} is computed as
+ *     <code>ERA==AD ? YEAR : 1-YEAR</code>. Another example is the Mayan
+ *     long count, which has years (<code>KUN</code>) and nested cycles
+ *     of years (<code>KATUN</code> and <code>BAKTUN</code>). The Mayan
+ *     {@link #EXTENDED_YEAR} is computed as <code>TUN + 20 * (KATUN
+ *     + 20 * BAKTUN)</code>. The <code>Calendar</code> base class uses
+ *     the {@link #EXTENDED_YEAR} field to compute the week-related
+ *     fields.</li>
+ *
+ * </ul>
+ *
+ * @see          Date
+ * @see          GregorianCalendar
+ * @see          TimeZone
+ * @see          DateFormat
+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
+ * @stable ICU 2.0
+ */
+public class Calendar implements Serializable, Cloneable, Comparable {
+    private static final long serialVersionUID = 1;
+        
+    /**
+     * @internal
+     */
+    public final java.util.Calendar calendar;
+        
+    /**
+     * @internal
+     * @param delegate the Calendar to which to delegate
+     */
+    public Calendar(java.util.Calendar delegate) {
+        this.calendar = delegate;
+    }
+        
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * era, e.g., AD or BC in the Julian calendar. This is a calendar-specific
+     * value; see subclass documentation.
+     * @see GregorianCalendar#AD
+     * @see GregorianCalendar#BC
+     * @stable ICU 2.0
+     */
+    public final static int ERA = 0;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * year. This is a calendar-specific value; see subclass documentation.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR = 1;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * month. This is a calendar-specific value. The first month of the year is
+     * <code>JANUARY</code>; the last depends on the number of months in a year.
+     * @see #JANUARY
+     * @see #FEBRUARY
+     * @see #MARCH
+     * @see #APRIL
+     * @see #MAY
+     * @see #JUNE
+     * @see #JULY
+     * @see #AUGUST
+     * @see #SEPTEMBER
+     * @see #OCTOBER
+     * @see #NOVEMBER
+     * @see #DECEMBER
+     * @see #UNDECIMBER
+     * @stable ICU 2.0
+     */
+    public final static int MONTH = 2;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current year.  The first week of the year, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_YEAR</code> for days before the first week of
+     * the year.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR = 3;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current month.  The first week of the month, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_MONTH</code> for days before the first week of
+     * the month.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH = 4;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
+     * The first day of the month has value 1.
+     * @see #DAY_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DATE = 5;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DATE</code>.
+     * The first day of the month has value 1.
+     * @see #DATE
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_MONTH = 5;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * number within the current year.  The first day of the year has value 1.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR = 6;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * of the week.  This field takes values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
+     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
+     * @see #SUNDAY
+     * @see #MONDAY
+     * @see #TUESDAY
+     * @see #WEDNESDAY
+     * @see #THURSDAY
+     * @see #FRIDAY
+     * @see #SATURDAY
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK = 7;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * ordinal number of the day of the week within the current month. Together
+     * with the <code>DAY_OF_WEEK</code> field, this uniquely specifies a day
+     * within a month.  Unlike <code>WEEK_OF_MONTH</code> and
+     * <code>WEEK_OF_YEAR</code>, this field's value does <em>not</em> depend on
+     * <code>getFirstDayOfWeek()</code> or
+     * <code>getMinimalDaysInFirstWeek()</code>.  <code>DAY_OF_MONTH 1</code>
+     * through <code>7</code> always correspond to <code>DAY_OF_WEEK_IN_MONTH
+     * 1</code>; <code>8</code> through <code>15</code> correspond to
+     * <code>DAY_OF_WEEK_IN_MONTH 2</code>, and so on.
+     * <code>DAY_OF_WEEK_IN_MONTH 0</code> indicates the week before
+     * <code>DAY_OF_WEEK_IN_MONTH 1</code>.  Negative values count back from the
+     * end of the month, so the last Sunday of a month is specified as
+     * <code>DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1</code>.  Because
+     * negative values count backward they will usually be aligned differently
+     * within the month than positive values.  For example, if a month has 31
+     * days, <code>DAY_OF_WEEK_IN_MONTH -1</code> will overlap
+     * <code>DAY_OF_WEEK_IN_MONTH 5</code> and the end of <code>4</code>.
+     * @see #DAY_OF_WEEK
+     * @see #WEEK_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH = 8;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating
+     * whether the <code>HOUR</code> is before or after noon.
+     * E.g., at 10:04:15.250 PM the <code>AM_PM</code> is <code>PM</code>.
+     * @see #AM
+     * @see #PM
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM = 9;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the morning or afternoon. <code>HOUR</code> is used for the 12-hour
+     * clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR</code> is 10.
+     * @see #AM_PM
+     * @see #HOUR_OF_DAY
+     * @stable ICU 2.0
+     */
+    public final static int HOUR = 10;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY = 11;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * minute within the hour.
+     * E.g., at 10:04:15.250 PM the <code>MINUTE</code> is 4.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE = 12;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * second within the minute.
+     * E.g., at 10:04:15.250 PM the <code>SECOND</code> is 15.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND = 13;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * millisecond within the second.
+     * E.g., at 10:04:15.250 PM the <code>MILLISECOND</code> is 250.
+     * @stable ICU 2.0
+     */
+    public final static int MILLISECOND = 14;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * raw offset from GMT in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int ZONE_OFFSET = 15;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * daylight savings offset in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int DST_OFFSET = 16;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year corresponding to the
+     * <code>WEEK_OF_YEAR</code> field.  This may be one greater or less
+     * than the value of <code>EXTENDED_YEAR</code>.
+     * @stable ICU 2.0
+     */
+    public static final int YEAR_WOY = 17;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the localized day of week.  This will be a value from 1
+     * to 7 inclusive, with 1 being the localized first day of the week.
+     * @stable ICU 2.0
+     */
+    public static final int DOW_LOCAL = 18;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year.  This is a single number designating
+     * the year of this calendar system, encompassing all supra-year
+     * fields.  For example, for the Julian calendar system, year numbers
+     * are positive, with an era of BCE or CE.  An extended year value for
+     * the Julian calendar system assigns positive values to CE years and
+     * negative values to BCE years, with 1 BCE being year 0.
+     * @stable ICU 2.0
+     */
+    public static final int EXTENDED_YEAR = 19;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the modified Julian day number.  This is different from
+     * the conventional Julian day number in two regards.  First, it
+     * demarcates days at local zone midnight, rather than noon GMT.
+     * Second, it is a local number; that is, it depends on the local time
+     * zone.  It can be thought of as a single number that encompasses all
+     * the date-related fields.
+     * @stable ICU 2.0
+     */
+    public static final int JULIAN_DAY = 20;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the milliseconds in the day.  This ranges from 0 to
+     * 23:59:59.999 (regardless of DST).  This field behaves
+     * <em>exactly</em> like a composite of all time-related fields, not
+     * including the zone fields.  As such, it also reflects
+     * discontinuities of those fields on DST transition days.  On a day of
+     * DST onset, it will jump forward.  On a day of DST cessation, it will
+     * jump backward.  This reflects the fact that is must be combined with
+     * the DST_OFFSET field to obtain a unique local time value.
+     * @stable ICU 2.0
+     */
+    public static final int MILLISECONDS_IN_DAY = 21;
+        
+    /**
+     * The number of fields defined by this class.  Subclasses may define
+     * addition fields starting with this number.
+     * @stable ICU 2.0
+     */
+    protected static final int BASE_FIELD_COUNT = 22;
+        
+    /**
+     * The maximum number of fields possible.  Subclasses must not define
+     * more total fields than this number.
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_FIELD_COUNT = 32;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Sunday.
+     * @stable ICU 2.0
+     */
+    public final static int SUNDAY = 1;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Monday.
+     * @stable ICU 2.0
+     */
+    public final static int MONDAY = 2;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Tuesday.
+     * @stable ICU 2.0
+     */
+    public final static int TUESDAY = 3;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Wednesday.
+     * @stable ICU 2.0
+     */
+    public final static int WEDNESDAY = 4;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Thursday.
+     * @stable ICU 2.0
+     */
+    public final static int THURSDAY = 5;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Friday.
+     * @stable ICU 2.0
+     */
+    public final static int FRIDAY = 6;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Saturday.
+     * @stable ICU 2.0
+     */
+    public final static int SATURDAY = 7;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * first month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JANUARY = 0;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * second month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int FEBRUARY = 1;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * third month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MARCH = 2;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fourth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int APRIL = 3;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fifth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MAY = 4;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * sixth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JUNE = 5;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * seventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JULY = 6;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eighth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int AUGUST = 7;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * ninth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int SEPTEMBER = 8;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * tenth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int OCTOBER = 9;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eleventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int NOVEMBER = 10;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * twelfth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int DECEMBER = 11;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * thirteenth month of the year. Although <code>GregorianCalendar</code>
+     * does not use this value, lunar calendars do.
+     * @stable ICU 2.0
+     */
+    public final static int UNDECIMBER = 12;
+        
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from midnight to just before noon.
+     * @stable ICU 2.0
+     */
+    public final static int AM = 0;
+        
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from noon to just before midnight.
+     * @stable ICU 2.0
+     */
+    public final static int PM = 1;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekday.
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKDAY = 0;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekend day.
+     * @see #WEEKDAY
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND = 1;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as a weekday and transitions to the weekend.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_ONSET = 2;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as the weekend and transitions to a weekday.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_CEASE = 3;
+    /**
+     * Gets a calendar using the default time zone and locale.
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance() {
+        return new Calendar(java.util.Calendar.getInstance());
+    }
+        
+    /**
+     * Gets a calendar using the specified time zone and default locale.
+     * @param zone the time zone to use
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone));
+    }
+        
+    /**
+     * Gets a calendar using the default time zone and specified locale.
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(Locale aLocale) {
+        return new Calendar(java.util.Calendar.getInstance(aLocale));
+    }
+        
+    /**
+     * Gets a calendar using the default time zone and specified locale.  
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(ULocale locale)     {
+        return new Calendar(java.util.Calendar.getInstance(locale.toLocale()));
+    }
+        
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone, aLocale));
+    }
+        
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(TimeZone zone, ULocale locale) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone, locale.toLocale()));
+    }
+        
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.util.Calendar.getAvailableLocales();
+    }
+        
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @draft ICU 3.2 (retain)
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (availableULocales == null) {
+            Locale[] locales = java.util.Calendar.getAvailableLocales();
+            ULocale[] ulocales = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                ulocales[i] = ULocale.forLocale(locales[i]);
+            }
+            availableULocales = ulocales;
+        }
+        return (ULocale[])availableULocales.clone();
+    }
+    private static ULocale[] availableULocales;
+        
+    /**
+     * Gets this Calendar's current time.
+     * @return the current time.
+     * @stable ICU 2.0
+     */
+    public final Date getTime() {
+        return calendar.getTime();
+    }
+        
+    /**
+     * Sets this Calendar's current time with the given Date.
+     * <p>
+     * Note: Calling <code>setTime()</code> with
+     * <code>Date(Long.MAX_VALUE)</code> or <code>Date(Long.MIN_VALUE)</code>
+     * may yield incorrect field values from <code>get()</code>.
+     * @param date the given Date.
+     * @stable ICU 2.0
+     */
+    public final void setTime(Date date) {
+        calendar.setTime(date);
+    }
+        
+    /**
+     * Gets this Calendar's current time as a long.
+     * @return the current time as UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public long getTimeInMillis() {
+        return calendar.getTime().getTime();
+    }
+        
+    /**
+     * Sets this Calendar's current time from the given long value.
+     * @param millis the new time in UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public void setTimeInMillis(long millis) {
+        calendar.setTime(new Date(millis));
+    }
+        
+    /**
+     * Gets the value for a given time field.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int get(int field) {
+        return calendar.get(field);
+    }
+                
+    /**
+     * Sets the time field with the given value.
+     * @param field the given time field.
+     * @param value the value to be set for the given time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int field, int value) {
+        calendar.set(field, value);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, and date.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date) {
+        calendar.set(year, month, date);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, date, hour, and minute.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute) {
+        calendar.set(year, month, date, hour, minute);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, date, hour, minute, and second.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @param second the value used to set the SECOND time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute, int second) {
+        calendar.set(year, month, date, hour, minute, second);
+    }
+        
+    /**
+     * Clears the values of all the time fields.
+     * @stable ICU 2.0
+     */
+    public final void clear() {
+        calendar.clear();
+    }
+        
+    /**
+     * Clears the value in the given time field.
+     * @param field the time field to be cleared.
+     * @stable ICU 2.0
+     */
+    public final void clear(int field) {
+        calendar.clear(field);
+    }
+        
+    /**
+     * Determines if the given time field has a value set.
+     * @return true if the given time field has a value set; false otherwise.
+     * @stable ICU 2.0
+     */
+    public final boolean isSet(int field) {
+        return calendar.isSet(field);
+    }
+                
+    /**
+     * Compares this calendar to the specified object.
+     * The result is <code>true</code> if and only if the argument is
+     * not <code>null</code> and is a <code>Calendar</code> object that
+     * represents the same calendar as this object.
+     * @param obj the object to compare with.
+     * @return <code>true</code> if the objects are the same;
+     * <code>false</code> otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return calendar.equals(((Calendar)obj).calendar);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  An equivalent Calendar will behave exactly as this one
+     * does, but it may be set to a different time.  By contrast, for
+     * the equals() method to return true, the other Calendar must
+     * be set to the same time.
+     *
+     * @param other the Calendar to be compared with this Calendar
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return this.getClass() == other.getClass() &&
+            isLenient() == other.isLenient() &&
+            getFirstDayOfWeek() == other.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == other.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(other.getTimeZone());
+    }
+        
+    /**
+     * Returns a hash code for this calendar.
+     * @return a hash code value for this object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return calendar.hashCode();
+    }
+        
+    /**
+     * Return the difference in milliseconds between the moment this
+     * calendar is set to and the moment the given calendar or Date object
+     * is set to.
+     */
+    private long compare(Object that) {
+        long thatMs;
+        if (that instanceof Calendar) {
+            thatMs = ((Calendar)that).getTimeInMillis();
+        } else if (that instanceof Date) {
+            thatMs = ((Date)that).getTime();
+        } else {
+            throw new IllegalArgumentException(that + "is not a Calendar or Date");
+        }
+        return getTimeInMillis() - thatMs;
+    }
+        
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is before
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean before(Object when) {
+        return compare(when) < 0;
+    }
+        
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is after
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean after(Object when) {
+        return compare(when) > 0;
+    }
+        
+    /**
+     * Return the maximum value that this field could have, given the
+     * current date.  For example, with the Gregorian date February 3, 1997
+     * and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual maximum
+     * is 28; for February 3, 1996 it is 29.
+     *
+     * <p>The actual maximum computation ignores smaller fields and the
+     * current value of like-sized fields.  For example, the actual maximum
+     * of the DAY_OF_YEAR or MONTH depends only on the year and supra-year
+     * fields.  The actual maximum of the DAY_OF_MONTH depends, in
+     * addition, on the MONTH field and any other fields at that
+     * granularity (such as ChineseCalendar.IS_LEAP_MONTH).  The
+     * DAY_OF_WEEK_IN_MONTH field does not depend on the current
+     * DAY_OF_WEEK; it returns the maximum for any day of week in the
+     * current month.  Likewise for the WEEK_OF_MONTH and WEEK_OF_YEAR
+     * fields.
+     *
+     * @param field the field whose maximum is desired
+     * @return the maximum of the given field for the current date of this calendar
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        return calendar.getActualMaximum(field);
+    }
+        
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        return calendar.getActualMinimum(field);
+    }
+        
+        
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public final void roll(int field, boolean up) {
+        calendar.roll(field, up);
+    }
+        
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+        calendar.roll(field, amount);
+    }
+        
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>.
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @stable ICU 2.0
+     */
+    public void add(int field, int amount) {
+        calendar.add(field, amount);
+    }
+        
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(Locale loc) {
+        return "Calendar";
+    }
+        
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(ULocale loc) {
+        return "Calendar";
+    }
+        
+    /**
+     * Compares the times (in millis) represented by two
+     * <code>Calendar</code> objects.
+     *
+     * @param that the <code>Calendar</code> to compare to this.
+     * @return <code>0</code> if the time represented by 
+     * this <code>Calendar</code> is equal to the time represented 
+     * by that <code>Calendar</code>, a value less than 
+     * <code>0</code> if the time represented by this is before
+     * the time represented by that, and a value greater than
+     * <code>0</code> if the time represented by this
+     * is after the time represented by that.
+     * @throws NullPointerException if that 
+     * <code>Calendar</code> is null.
+     * @throws IllegalArgumentException if the time of that 
+     * <code>Calendar</code> can't be obtained because of invalid
+     * calendar values.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Calendar that) {
+        long v = getTimeInMillis() - that.getTimeInMillis();
+        return v < 0 ? -1 : (v > 0 ? 1 : 0);
+    }
+        
+    /**
+     * Implement comparable API as a convenience override of
+     * {@link #compareTo(Calendar)}.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Object that) {
+        return compareTo((Calendar)that);
+    }
+        
+    //-------------------------------------------------------------------------
+    // Interface for creating custon DateFormats for different types of Calendars
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * @stable ICU 2.0
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+        
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * @stable ICU 3.2
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc) {
+        return formatHelper(this, loc.toLocale(), dateStyle, timeStyle);
+    }
+        
+    /*
+     * Utility for formatting.
+     */
+    private static DateFormat formatHelper(Calendar cal, Locale loc, int dateStyle, int timeStyle) {
+        // Assume there is only one kind of calendar.  In Java 6 there will also be Japanese
+        // calendars, but we'll worry about that when it happens.
+        DateFormat df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+        
+    /**
+     * [NEW]
+     * Return the difference between the given time and the time this
+     * calendar object is set to.  If this calendar is set
+     * <em>before</em> the given time, the returned value will be
+     * positive.  If this calendar is set <em>after</em> the given
+     * time, the returned value will be negative.  The
+     * <code>field</code> parameter specifies the units of the return
+     * value.  For example, if <code>fieldDifference(when,
+     * Calendar.MONTH)</code> returns 3, then this calendar is set to
+     * 3 months before <code>when</code>, and possibly some additional
+     * time less than one month.
+     *
+     * <p>As a side effect of this call, this calendar is advanced
+     * toward <code>when</code> by the given amount.  That is, calling
+     * this method has the side effect of calling <code>add(field,
+     * n)</code>, where <code>n</code> is the return value.
+     *
+     * <p>Usage: To use this method, call it first with the largest
+     * field of interest, then with progressively smaller fields.  For
+     * example:
+     *
+     * <pre>
+     * int y = cal.fieldDifference(when, Calendar.YEAR);
+     * int m = cal.fieldDifference(when, Calendar.MONTH);
+     * int d = cal.fieldDifference(when, Calendar.DATE);</pre>
+     *
+     * computes the difference between <code>cal</code> and
+     * <code>when</code> in years, months, and days.
+     *
+     * <p>Note: <code>fieldDifference()</code> is
+     * <em>asymmetrical</em>.  That is, in the following code:
+     *
+     * <pre>
+     * cal.setTime(date1);
+     * int m1 = cal.fieldDifference(date2, Calendar.MONTH);
+     * int d1 = cal.fieldDifference(date2, Calendar.DATE);
+     * cal.setTime(date2);
+     * int m2 = cal.fieldDifference(date1, Calendar.MONTH);
+     * int d2 = cal.fieldDifference(date1, Calendar.DATE);</pre>
+     *
+     * one might expect that <code>m1 == -m2 && d1 == -d2</code>.
+     * However, this is not generally the case, because of
+     * irregularities in the underlying calendar system (e.g., the
+     * Gregorian calendar has a varying number of days per month).
+     *
+     * @param when the date to compare this calendar's time to
+     * @param field the field in which to compute the result
+     * @return the difference, either positive or negative, between
+     * this calendar's time and <code>when</code>, in terms of
+     * <code>field</code>.
+     * @stable ICU 2.0
+     */
+    public int fieldDifference(Date when, int field) {
+        int min = 0;
+        long startMs = getTimeInMillis();
+        long targetMs = when.getTime();
+        // Always add from the start millis.  This accomodates
+        // operations like adding years from February 29, 2000 up to
+        // February 29, 2004.  If 1, 1, 1, 1 is added to the year
+        // field, the DOM gets pinned to 28 and stays there, giving an
+        // incorrect DOM difference of 1.  We have to add 1, reset, 2,
+        // reset, 3, reset, 4.
+        if (startMs < targetMs) {
+            int max = 1;
+            // Find a value that is too large
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms > targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max < 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((max - min) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms > targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        } else if (startMs > targetMs) {
+            if (false) {
+                // This works, and makes the code smaller, but costs
+                // an extra object creation and an extra couple cycles
+                // of calendar computation.
+                setTimeInMillis(targetMs);
+                min = -fieldDifference(new Date(startMs), field);
+            }
+            int max = -1;
+            // Find a value that is too small
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms < targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max == 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((min - max) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms < targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        }
+        // Set calendar to end point
+        setTimeInMillis(startMs);
+        add(field, min);
+        return min;
+    }
+        
+    /**
+     * Sets the time zone with the given time zone value.
+     * @param value the given time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone value) {
+        calendar.setTimeZone(value.timeZone);
+    }
+        
+    /**
+     * Gets the time zone.
+     * @return the time zone object associated with this calendar.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone() {
+        return new TimeZone(calendar.getTimeZone());
+    }
+        
+    /**
+     * Specify whether or not date/time interpretation is to be lenient.  With
+     * lenient interpretation, a date such as "February 942, 1996" will be
+     * treated as being equivalent to the 941st day after February 1, 1996.
+     * With strict interpretation, such dates will cause an exception to be
+     * thrown.
+     *
+     * @see DateFormat#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)     {
+        calendar.setLenient(lenient);
+    }
+        
+    /**
+     * Tell whether date/time interpretation is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient() {
+        return calendar.isLenient();
+    }
+        
+    /**
+     * Sets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @param value the given first day of the week.
+     * @stable ICU 2.0
+     */
+    public void setFirstDayOfWeek(int value) {
+        calendar.setFirstDayOfWeek(value);
+    }
+        
+    /**
+     * Gets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @return the first day of the week.
+     * @stable ICU 2.0
+     */
+    public int getFirstDayOfWeek() {
+        return calendar.getFirstDayOfWeek();
+    }
+        
+    /**
+     * Sets what the minimal days required in the first week of the year are.
+     * For example, if the first week is defined as one that contains the first
+     * day of the first month of a year, call the method with value 1. If it
+     * must be a full week, use value 7.
+     * @param value the given minimal days required in the first week
+     * of the year.
+     * @stable ICU 2.0
+     */
+    public void setMinimalDaysInFirstWeek(int value) {
+        calendar.setMinimalDaysInFirstWeek(value);
+    }
+        
+    /**
+     * Gets what the minimal days required in the first week of the year are;
+     * e.g., if the first week is defined as one that contains the first day
+     * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
+     * the minimal days required must be a full week, getMinimalDaysInFirstWeek
+     * returns 7.
+     * @return the minimal days required in the first week of the year.
+     * @stable ICU 2.0
+     */
+    public int getMinimalDaysInFirstWeek() {
+        return calendar.getMinimalDaysInFirstWeek();
+    }
+        
+    /**
+     * Gets the minimum value for the given time field.
+     * e.g., for Gregorian DAY_OF_MONTH, 1.
+     * @param field the given time field.
+     * @return the minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMinimum(int field) {
+        return calendar.getMinimum(field);
+    }
+        
+    /**
+     * Gets the maximum value for the given time field.
+     * e.g. for Gregorian DAY_OF_MONTH, 31.
+     * @param field the given time field.
+     * @return the maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMaximum(int field) {
+        return calendar.getMaximum(field);
+    }
+        
+    /**
+     * Gets the highest minimum value for the given field if varies.
+     * Otherwise same as getMinimum(). For Gregorian, no difference.
+     * @param field the given time field.
+     * @return the highest minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getGreatestMinimum(int field) {
+        return calendar.getGreatestMinimum(field);
+    }
+        
+    /**
+     * Gets the lowest maximum value for the given field if varies.
+     * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
+     * @param field the given time field.
+     * @return the lowest maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getLeastMaximum(int field) {
+        return calendar.getLeastMaximum(field);
+    }
+        
+    //-------------------------------------------------------------------------
+    // Weekend support -- determining which days of the week are the weekend
+    // in a given locale
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return whether the given day of the week is a weekday, a
+     * weekend day, or a day that transitions from one to the other,
+     * in this calendar system.  If a transition occurs at midnight,
+     * then the days before and after the transition will have the
+     * type WEEKDAY or WEEKEND.  If a transition occurs at a time
+     * other than midnight, then the day of the transition will have
+     * the type WEEKEND_ONSET or WEEKEND_CEASE.  In this case, the
+     * method getWeekendTransition() will return the point of
+     * transition.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return either WEEKDAY, WEEKEND, WEEKEND_ONSET, or
+     * WEEKEND_CEASE
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * between SUNDAY and SATURDAY, inclusive
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getDayOfWeekType(int dayOfWeek) {
+        // weekend always full saturday and sunday
+        if (dayOfWeek < 1 || dayOfWeek > 7) {
+            throw new IllegalArgumentException("illegal day of week: " + dayOfWeek);
+        }
+        return dayOfWeek >= SATURDAY ? WEEKEND : WEEKDAY;
+    }
+        
+    /**
+     * Return the time during the day at which the weekend begins or end in
+     * this calendar system.  If getDayOfWeekType(dayOfWeek) ==
+     * WEEKEND_ONSET return the time at which the weekend begins.  If
+     * getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE return the time at
+     * which the weekend ends.  If getDayOfWeekType(dayOfWeek) has some
+     * other value, then throw an exception.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return the milliseconds after midnight at which the
+     * weekend begins or ends
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * WEEKEND_ONSET or WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getWeekendTransition(int dayOfWeek) {
+        throw new IllegalArgumentException("Not weekend transition day");
+    }
+        
+    /**
+     * Return true if the given date and time is in the weekend in
+     * this calendar system.  Equivalent to calling setTime() followed
+     * by isWeekend().  Note: This method changes the time this
+     * calendar is set to.
+     * @param date the date and time
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend(Date date) {
+        calendar.setTime(date);
+        return isWeekend();
+    }
+        
+    /**
+     * Return true if this Calendar's current date and time is in the
+     * weekend in this calendar system.
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend() {
+        return calendar.get(Calendar.DAY_OF_WEEK) >= SATURDAY;
+    }
+        
+    //-------------------------------------------------------------------------
+    // End of weekend support
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new Calendar((java.util.Calendar)calendar.clone());
+    }
+        
+    /**
+     * Return a string representation of this calendar. This method
+     * is intended to be used only for debugging purposes, and the
+     * format of the returned string may vary between implementations.
+     * The returned string may be empty but may not be <code>null</code>.
+     *
+     * @return  a string representation of this calendar.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return calendar.toString();
+    }
+
+    /**
+     * Return the current Calendar type.
+     * Note, in 3.0 this function will return 'gregorian' in Calendar to emulate legacy behavior
+     * @return type of calendar (gregorian, etc)
+     * @internal ICU 3.0
+     */
+    public String getType() {
+        return "gregorian";
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..878afeb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,432 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
+ * savings.
+ *
+ * <p>
+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
+ * which creates a <code>TimeZone</code> based on the time zone where the program
+ * is running. For example, for a program running in Japan, <code>getDefault</code>
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
+ *
+ * <p>
+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code>
+ * along with a time zone ID. For instance, the time zone ID for the
+ * U.S. Pacific Time zone is "America/Los_Angeles". So, you can get a
+ * U.S. Pacific Time <code>TimeZone</code> object with:
+ * <blockquote>
+ * <pre>
+ * TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ * </pre>
+ * </blockquote>
+ * You can use <code>getAvailableIDs</code> method to iterate through
+ * all the supported time zone IDs. You can then choose a
+ * supported ID to get a <code>TimeZone</code>.
+ * If the time zone you want is not represented by one of the
+ * supported IDs, then you can create a custom time zone ID with
+ * the following syntax:
+ *
+ * <blockquote>
+ * <pre>
+ * GMT[+|-]hh[[:]mm]
+ * </pre>
+ * </blockquote>
+ *
+ * For example, you might specify GMT+14:00 as a custom
+ * time zone ID.  The <code>TimeZone</code> that is returned
+ * when you specify a custom time zone ID does not include
+ * daylight savings time.
+ * <p>
+ * For compatibility with JDK 1.1.x, some other three-letter time zone IDs
+ * (such as "PST", "CTT", "AST") are also supported. However, <strong>their
+ * use is deprecated</strong> because the same abbreviation is often used
+ * for multiple time zones (for example, "CST" could be U.S. "Central Standard
+ * Time" and "China Standard Time"), and the Java platform can then only
+ * recognize one of them.
+ *
+ * @see          Calendar
+ * @see          GregorianCalendar
+ * @see          SimpleTimeZone
+ * @author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class TimeZone implements Serializable, Cloneable {
+    private static final long serialVersionUID = 1;
+        
+    /**
+     * @internal
+     */
+    public final java.util.TimeZone timeZone;
+        
+    /**
+     * @internal
+     * @param delegate the TimeZone to which to delegate
+     */
+    public TimeZone(java.util.TimeZone delegate) {
+        this.timeZone = delegate;
+    }
+
+    /**
+     * Default constructor to mirror Java's public
+     * constructor.  Java's is not callable as a public API, since
+     * their TimeZone is abstract, so this is only useful to
+     * subclasses.  In general, subclasses will not work unless
+     * they manipulate the delegate.
+     */
+    public TimeZone() {
+        this.timeZone = java.util.TimeZone.getDefault();
+    }
+    
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name, such as "PST."
+     * @see #LONG
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 0;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name, such as "Pacific Standard Time."
+     * @see #SHORT
+     * @stable ICU 2.0
+     */
+    public static final int LONG  = 1;
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @return the offset to add *to* GMT to get local time.
+     * @stable ICU 2.0
+     */
+    public int getOffset(int era, int year, int month, int day,
+                         int dayOfWeek, int milliseconds) {
+        return timeZone.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /**
+     * Returns the offset of this time zone from UTC at the specified
+     * date. If Daylight Saving Time is in effect at the specified
+     * date, the offset value is adjusted with the amount of daylight
+     * saving.
+     *
+     * @param date the date represented in milliseconds since January 1, 1970 00:00:00 GMT
+     * @return the amount of time in milliseconds to add to UTC to get local time.
+     *
+     * @see Calendar#ZONE_OFFSET
+     * @see Calendar#DST_OFFSET
+     * @see #getOffset(long, boolean, int[])
+     * @stable ICU 2.8
+     */
+    public int getOffset(long date) {
+        if (inDaylightTime(new Date(date))) {
+            return getRawOffset() + getDSTSavings();
+        }
+        return getRawOffset();
+    }
+
+   /**
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * @param offsetMillis the given base time zone offset to GMT.
+     * @stable ICU 2.0
+     */
+    public void setRawOffset(int offsetMillis) {
+        timeZone.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * Gets unmodified offset, NOT modified in case of daylight savings.
+     * This is the offset to add *to* UTC to get local time.
+     * @return the unmodified offset to add *to* UTC to get local time.
+     * @stable ICU 2.0
+     */
+    public int getRawOffset() {
+        return timeZone.getRawOffset();
+    }
+
+    /**
+     * Gets the ID of this time zone.
+     * @return the ID of this time zone.
+     * @stable ICU 2.0
+     */
+    public String getID() {
+        return timeZone.getID();
+    }
+
+    /**
+     * Sets the time zone ID. This does not change any other data in
+     * the time zone object.
+     * @param ID the new time zone ID.
+     * @stable ICU 2.0
+     */
+    public void setID(String ID) {
+        timeZone.setID(ID);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName() {
+        return timeZone.getDisplayName();
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(Locale locale) {
+        return timeZone.getDisplayName(locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the ulocale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default ulocale if the given ulocale is not recognized.
+     * @stable ICU 3.2
+     */
+    public final String getDisplayName(ULocale locale) {
+        return timeZone.getDisplayName(locale.toLocale());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(boolean daylight, int style) {
+        return timeZone.getDisplayName(daylight, style);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return timeZone.getDisplayName(daylight, style, locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        return timeZone.getDisplayName(daylight, style, locale.toLocale());
+    }
+
+    /**
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     * <p>
+     * The default implementation always returns 3600000 milliseconds
+     * (i.e., one hour) if this time zone observes Daylight Saving
+     * Time. Otherwise, 0 (zero) is returned.
+     * <p>
+     * If an underlying TimeZone implementation subclass supports
+     * historical Daylight Saving Time changes, this method returns
+     * the known latest daylight saving value.
+     *
+     * @return the amount of saving time in milliseconds
+     * @stable ICU 2.8
+     */
+    public int getDSTSavings() {
+        if (useDaylightTime()) {
+            return 3600000;
+        }
+        return 0;
+    }
+
+    /**
+     * Queries if this time zone uses daylight savings time.
+     * @return true if this time zone uses daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean useDaylightTime() {
+        return timeZone.useDaylightTime();
+    }
+
+    /**
+     * Queries if the given date is in daylight savings time in
+     * this time zone.
+     * @param date the given Date.
+     * @return true if the given date is in daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean inDaylightTime(Date date) {
+        return timeZone.inDaylightTime(date);
+    }
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID.
+     *
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     *
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @stable ICU 2.0
+     */
+    public static TimeZone getTimeZone(String ID) {
+        return new TimeZone(java.util.TimeZone.getTimeZone(ID));
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        return java.util.TimeZone.getAvailableIDs(rawOffset);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs() {
+        return java.util.TimeZone.getAvailableIDs();
+    }
+  
+    /**
+     * Gets the default <code>TimeZone</code> for this host.
+     * The source of the default <code>TimeZone</code> 
+     * may vary with implementation.
+     * @return a default <code>TimeZone</code>.
+     * @stable ICU 2.0
+     */
+    public static TimeZone getDefault() {
+        return new TimeZone(java.util.TimeZone.getDefault());
+    }
+
+    /**
+     * Sets the <code>TimeZone</code> that is
+     * returned by the <code>getDefault</code> method.  If <code>zone</code>
+     * is null, reset the default to the value it had originally when the
+     * VM first started.
+     * @param tz the new default time zone
+     * @stable ICU 2.0
+     */
+    public static void setDefault(TimeZone tz) {
+        java.util.TimeZone.setDefault(tz.timeZone);
+    }
+        
+    /**
+     * Returns true if this zone has the same rule and offset as another zone.
+     * That is, if this zone differs only in ID, if at all.  Returns false
+     * if the other zone is null.
+     * @param other the <code>TimeZone</code> object to be compared with
+     * @return true if the other zone is not null and is the same as this one,
+     * with the possible exception of the ID
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return timeZone.hasSameRules(other.timeZone);
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new TimeZone((java.util.TimeZone)timeZone.clone());
+    }
+    
+    /**
+     * Return true if rhs is a TimeZone and has the same time rules as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.2
+     */
+    public boolean equals(Object rhs){
+        try {
+            return timeZone.equals(((TimeZone)rhs).timeZone);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.2
+     */
+    public int hashCode(){
+        return timeZone.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..b41844b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,2625 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TreeMap;
+
+
+/**
+ * A class analogous to {@link java.util.Locale} that provides additional
+ * support for ICU protocol.  In ICU 3.0 this class is enhanced to support
+ * RFC 3066 language identifiers.
+ *
+ * <p>Many classes and services in ICU follow a factory idiom, in
+ * which a factory method or object responds to a client request with
+ * an object.  The request includes a locale (the <i>requested</i>
+ * locale), and the returned object is constructed using data for that
+ * locale.  The system may lack data for the requested locale, in
+ * which case the locale fallback mechanism will be invoked until a
+ * populated locale is found (the <i>valid</i> locale).  Furthermore,
+ * even when a populated locale is found (the <i>valid</i> locale),
+ * further fallback may be required to reach a locale containing the
+ * specific data required by the service (the <i>actual</i> locale).
+ *
+ * <p>ULocale performs <b>'normalization'</b> and <b>'canonicalization'</b> of locale ids.
+ * Normalization 'cleans up' ICU locale ids as follows:
+ * <ul>
+ * <li>language, script, country, variant, and keywords are properly cased<br>
+ * (lower, title, upper, upper, and lower case respectively)</li>
+ * <li>hyphens used as separators are converted to underscores</li>
+ * <li>three-letter language and country ids are converted to two-letter
+ * equivalents where available</li>
+ * <li>surrounding spaces are removed from keywords and values</li>
+ * <li>if there are multiple keywords, they are put in sorted order</li>
+ * </ul>
+ * Canonicalization additionally performs the following:
+ * <ul>
+ * <li>POSIX ids are converted to ICU format IDs</li>
+ * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>'PREEURO' and 'EURO' variants are converted to currency keyword form, with the currency
+ * id appropriate to the country of the locale (for PREEURO) or EUR (for EURO).
+ * </ul>
+ * All ULocale constructors automatically normalize the locale id.  To handle
+ * POSIX ids, <code>canonicalize</code> can be called to convert the id
+ * to canonical form, or the <code>canonicalInstance</code> factory method
+ * can be called.</p>
+ *
+ * <p>This class provides selectors {@link #VALID_LOCALE} and {@link
+ * #ACTUAL_LOCALE} intended for use in methods named
+ * <tt>getLocale()</tt>.  These methods exist in several ICU classes,
+ * including {@link com.ibm.icu.util.Calendar}, {@link
+ * com.ibm.icu.util.Currency}, {@link com.ibm.icu.text.UFormat},
+ * {@link com.ibm.icu.text.BreakIterator}, {@link
+ * com.ibm.icu.text.Collator}, {@link
+ * com.ibm.icu.text.DateFormatSymbols}, and {@link
+ * com.ibm.icu.text.DecimalFormatSymbols} and their subclasses, if
+ * any.  Once an object of one of these classes has been created,
+ * <tt>getLocale()</tt> may be called on it to determine the valid and
+ * actual locale arrived at during the object's construction.
+ *
+ * <p>Note: The <tt>getLocale()</tt> method will be implemented in ICU
+ * 3.0; ICU 2.8 contains a partial preview implementation.  The
+ * <i>actual</i> locale is returned correctly, but the <i>valid</i>
+ * locale is not, in most cases.
+ *
+ * @see java.util.Locale
+ * @author weiv
+ * @author Alan Liu
+ * @author Ram Viswanadha
+ * @stable ICU 2.8 
+ */
+public final class ULocale implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ENGLISH = new ULocale("en", Locale.ENGLISH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRENCH = new ULocale("fr", Locale.FRENCH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMAN = new ULocale("de", Locale.GERMAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALIAN = new ULocale("it", Locale.ITALIAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPANESE = new ULocale("ja", Locale.JAPANESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREAN = new ULocale("ko", Locale.KOREAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINESE = new ULocale("zh", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale SIMPLIFIED_CHINESE = new ULocale("zh_Hans", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TRADITIONAL_CHINESE = new ULocale("zh_Hant", Locale.CHINESE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRANCE = new ULocale("fr_FR", Locale.FRANCE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMANY = new ULocale("de_DE", Locale.GERMANY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALY = new ULocale("it_IT", Locale.ITALY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPAN = new ULocale("ja_JP", Locale.JAPAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREA = new ULocale("ko_KR", Locale.KOREA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINA = new ULocale("zh_Hans_CN", Locale.CHINA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale PRC = CHINA;
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TAIWAN = new ULocale("zh_Hant_TW", Locale.TAIWAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale UK = new ULocale("en_GB", Locale.UK);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale US = new ULocale("en_US", Locale.US);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA = new ULocale("en_CA", Locale.CANADA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA_FRENCH = new ULocale("fr_CA", Locale.CANADA_FRENCH);
+
+    private static final HashMap CACHE = new HashMap(20);
+    static {
+        CACHE.put(Locale.ENGLISH, ENGLISH);
+        CACHE.put(Locale.FRENCH, FRENCH);
+        CACHE.put(Locale.GERMAN, GERMAN);
+        CACHE.put(Locale.ITALIAN, ITALIAN);
+        CACHE.put(Locale.JAPANESE, JAPANESE);
+        CACHE.put(Locale.KOREAN, KOREAN);
+        CACHE.put(Locale.CHINESE, CHINESE);
+        CACHE.put(Locale.SIMPLIFIED_CHINESE, SIMPLIFIED_CHINESE);
+        CACHE.put(Locale.TRADITIONAL_CHINESE, TRADITIONAL_CHINESE);
+        CACHE.put(Locale.FRANCE, FRANCE);
+        CACHE.put(Locale.GERMANY, GERMANY);
+        CACHE.put(Locale.ITALY, ITALY);
+        CACHE.put(Locale.JAPAN, JAPAN);
+        CACHE.put(Locale.KOREA, KOREA);
+        CACHE.put(Locale.CHINA, CHINA);
+        CACHE.put(Locale.TAIWAN, TAIWAN);
+        CACHE.put(Locale.UK, UK);
+        CACHE.put(Locale.US, US);
+        CACHE.put(Locale.CANADA, CANADA);
+        CACHE.put(Locale.CANADA_FRENCH, CANADA_FRENCH);
+    }
+
+    /**
+     * Handy constant.
+     */
+    private static final String EMPTY_STRING = "";
+
+    // Used in both ULocale and IDParser, so moved up here.
+    private static final char UNDERSCORE = '_';
+
+    /**
+     * The root ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static final ULocale ROOT = new ULocale(EMPTY_STRING, (Locale)null);
+    
+    /**
+     * Cache the locale.
+     */
+    private transient Locale locale;
+
+    /**
+     * The raw localeID that we were passed in.
+     */
+    private String localeID;
+
+    /**
+     * Tables used in normalizing portions of the id.
+     */
+    /* tables updated per http://lcweb.loc.gov/standards/iso639-2/ 
+       to include the revisions up to 2001/7/27 *CWB*/
+    /* The 3 character codes are the terminology codes like RFC 3066.  
+       This is compatible with prior ICU codes */
+    /* "in" "iw" "ji" "jw" & "sh" have been withdrawn but are still in 
+       the table but now at the end of the table because 
+       3 character codes are duplicates.  This avoids bad searches
+       going from 3 to 2 character codes.*/
+    /* The range qaa-qtz is reserved for local use. */
+
+    private static String[] _languages;
+    private static String[] _replacementLanguages;
+    private static String[] _obsoleteLanguages;
+    private static String[] _languages3;
+    private static String[] _obsoleteLanguages3;
+
+    // Avoid initializing languages tables unless we have to.
+    private static void initLanguageTables() {
+        if (_languages == null) {
+
+            /* This list MUST be in sorted order, and MUST contain the two-letter codes
+               if one exists otherwise use the three letter code */
+            String[] tempLanguages = {
+                "aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",
+                "afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",
+                "ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",
+                "ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",
+                "bai", "bal", "ban", "bas", "bat", "be",  "bej",
+                "bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",
+                "bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",
+                "btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",
+                "ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",
+                "chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",
+                "cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",
+                "cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",
+                "dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",
+                "enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",
+                "fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",
+                "fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",
+                "gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",
+                "goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",
+                "gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",
+                "hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",
+                "ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",
+                "ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",
+                "iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",
+                "kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",
+                "kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",
+                "ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",
+                "ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",
+                "lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",
+                "loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",
+                "lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",
+                "mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",
+                "mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",
+                "mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",
+                "mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",
+                "nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",
+                "niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",
+                "nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",
+                "om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                "pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",
+                "raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",
+                "ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",
+                "sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",
+                "sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",
+                "sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",
+                "sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",
+                "srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",
+                "sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",
+                "tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",
+                "tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",
+                "ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",
+                "ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",
+                "uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",
+                "wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",
+                "yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",
+                "zu",  "zun", 
+            };
+
+            String[] tempReplacementLanguages = {
+                "id", "he", "yi", "jv", "sr", "nb",/* replacement language codes */
+            };
+
+            String[] tempObsoleteLanguages = {
+                "in", "iw", "ji", "jw", "sh", "no",    /* obsolete language codes */         
+            };
+
+            /* This list MUST contain a three-letter code for every two-letter code in the
+               list above, and they MUST ne in the same order (i.e., the same language must
+               be in the same place in both lists)! */
+            String[] tempLanguages3 = {
+                /*"aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",    */
+                "aar", "abk", "ace", "ach", "ada", "ady", "ave", "afr", "afa",
+                /*"afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",    */
+                "afh", "aka", "akk", "ale", "alg", "amh", "arg", "ang", "apa",
+                /*"ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",    */
+                "ara", "arc", "arn", "arp", "art", "arw", "asm", "ast",
+                /*"ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",    */
+                "ath", "aus", "ava", "awa", "aym", "aze", "bak", "bad",
+                /*"bai", "bal", "ban", "bas", "bat", "be",  "bej",    */
+                "bai", "bal", "ban", "bas", "bat", "bel", "bej",
+                /*"bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",    */
+                "bem", "ber", "bul", "bih", "bho", "bis", "bik", "bin",
+                /*"bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",     */
+                "bla", "bam",  "ben", "bnt", "bod", "bre", "bra", "bos",
+                /*"btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",    */
+                "btk", "bua", "bug", "byn", "cat", "cad", "cai", "car", "cau",
+                /*"ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",    */
+                "che", "ceb", "cel", "cha", "chb", "chg", "chk", "chm",
+                /*"chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",    */
+                "chn", "cho", "chp", "chr", "chy", "cmc", "cos", "cop",
+                /*"cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",    */
+                "cpe", "cpf", "cpp", "cre", "crh", "crp", "ces", "csb", "chu", "cus",
+                /*"cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",    */
+                "chv", "cym", "dan", "dak", "dar", "day", "deu", "del", "den",
+                /*"dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",    */
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "div", "dyu",
+                /*"dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",     */
+                "dzo", "ewe", "efi", "egy", "eka", "ell", "elx", "eng",
+                /*"enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",     */
+                "enm", "epo", "spa", "est", "eus", "ewo", "fas",
+                /*"fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",    */
+                "fan", "fat", "ful", "fin", "fiu", "fij", "fao", "fon",
+                /*"fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",    */
+                "fra", "frm", "fro", "fur", "fry", "gle", "gaa", "gay",
+                /*"gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",     */
+                "gba", "gla", "gem", "gez", "gil", "glg", "gmh", "grn",
+                /*"goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",     */
+                "goh", "gon", "gor", "got", "grb", "grc", "guj", "glv",
+                /*"gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",    */
+                "gwi", "hau", "hai", "haw", "heb", "hin", "hil", "him",
+                /*"hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",     */
+                "hit", "hmn", "hmo", "hrv", "hsb", "hat", "hun", "hup", "hye", "her",
+                /*"ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",     */
+                "ina", "iba", "ind", "ile", "ibo", "iii", "ijo", "ipk",
+                /*"ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",      */
+                "ilo", "inc", "ine", "inh", "ido", "ira", "iro", "isl", "ita",
+                /*"iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",   */
+                "iku", "jpn", "jbo", "jpr", "jrb", "jaw", "kat", "kaa", "kab",
+                /*"kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",    */
+                "kac", "kam", "kar", "kaw", "kbd", "kon", "kha", "khi",
+                /*"kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",     */
+                "kho", "kik", "kua", "kaz", "kal", "khm", "kmb", "kan",
+                /*"ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",     */
+                "kor", "kok", "kos", "kpe", "kau", "krc", "kro", "kru", "kas",
+                /*"ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",    */
+                "kur", "kum", "kut", "kom", "cor", "kir", "lat", "lad",
+                /*"lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",    */
+                "lah", "lam", "ltz", "lez", "lug", "lim", "lin", "lao", "lol",
+                /*"loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",    */
+                "loz", "lit", "lub", "lua", "lui", "lun", "luo", "lus",
+                /*"lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",    */
+                "lav", "mad", "mag", "mai", "mak", "man", "map", "mas",
+                /*"mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",    */
+                "mdf", "mdr", "men", "mlg", "mga", "mah", "mri", "mic", "min",
+                /*"mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",    */
+                "mis", "mkd", "mkh", "mal", "mon", "mnc", "mni", "mno",
+                /*"mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",    */
+                "mol", "moh", "mos", "mar", "msa", "mlt", "mul", "mun",
+                /*"mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",    */
+                "mus", "mwr", "mya", "myn", "myv", "nau", "nah", "nai", "nap",
+                /*"nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",    */
+                "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic",
+                /*"niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",    */
+                "niu", "nld", "nno", "nor", "nog", "non", "nbl", "nso", "nub",
+                /*"nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",     */
+                "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji",
+                /*"om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",    */
+                "orm", "ori", "oss", "osa", "ota", "oto", "pan", "paa",
+                /*"pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",    */
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                /*"pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",     */
+                "pli", "pol", "pon", "pra", "pro", "pus", "por", "que",
+                /*"raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",    */
+                "raj", "rap", "rar", "roh", "run", "ron", "roa", "rom",
+                /*"ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",    */
+                "rus", "rup", "kin", "san", "sad", "sah", "sai", "sal", "sam",
+                /*"sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",    */
+                "sas", "sat", "srd", "sco", "snd", "sme", "sel", "sem",
+                /*"sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",    */
+                "sag", "sga", "sgn", "shn", "sin", "sid", "sio", "sit",
+                /*"sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",    */
+                "slk", "slv", "sla", "smo", "sma", "smi", "smj", "smn",
+                /*"sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",     */
+                "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp",
+                /*"srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",    */
+                "srr", "ssw", "ssa", "sot", "sun", "suk", "sus", "sux",
+                /*"sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",    */
+                "swe", "swa", "syr", "tam", "tai", "tel", "tem", "ter",
+                /*"tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",    */
+                "tet", "tgk", "tha", "tir", "tig", "tiv", "tuk", "tkl",
+                /*"tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",     */
+                "tgl", "tlh", "tli", "tmh", "tsn", "ton", "tog", "tpi", "tur",
+                /*"ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",     */
+                "tso", "tsi", "tat", "tum", "tup", "tut", "tvl", "twi",
+                /*"ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",     */
+                "tah", "tyv", "udm", "uig", "uga", "ukr", "umb", "und", "urd",
+                /*"uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",    */
+                "uzb", "vai", "ven", "vie", "vol", "vot", "wln", "wak",
+                /*"wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",    */
+                "wal", "war", "was", "wen", "wol", "xal", "xho", "yao", "yap",
+                /*"yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",    */
+                "yid", "yor", "ypk", "zha", "zap", "zen", "zho", "znd",
+                /*"zu",  "zun",                                              */
+                "zul", "zun",  
+            };
+    
+            String[] tempObsoleteLanguages3 = {
+                /* "in",  "iw",  "ji",  "jw",  "sh", */
+                "ind", "heb", "yid", "jaw", "srp", 
+            };
+
+            synchronized (ULocale.class) {
+                if (_languages == null) {
+                    _languages = tempLanguages;
+                    _replacementLanguages = tempReplacementLanguages;
+                    _obsoleteLanguages = tempObsoleteLanguages;
+                    _languages3 = tempLanguages3;
+                    _obsoleteLanguages3 = tempObsoleteLanguages3;
+                }
+            }
+        }
+    }
+
+    private static String[] _countries;
+    private static String[] _deprecatedCountries;
+    private static String[] _replacementCountries;
+    private static String[] _obsoleteCountries;
+    private static String[] _countries3;
+    private static String[] _obsoleteCountries3;  
+
+    // Avoid initializing country tables unless we have to.
+    private static void initCountryTables() {    
+        if (_countries == null) {
+            /* ZR(ZAR) is now CD(COD) and FX(FXX) is PS(PSE) as per
+               http://www.evertype.com/standards/iso3166/iso3166-1-en.html 
+               added new codes keeping the old ones for compatibility
+               updated to include 1999/12/03 revisions *CWB*/
+    
+            /* RO(ROM) is now RO(ROU) according to 
+               http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html
+            */
+    
+            /* This list MUST be in sorted order, and MUST contain only two-letter codes! */
+            String[] tempCountries = {
+                "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",
+                "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AZ",
+                "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",
+                "BJ",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",
+                "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",
+                "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",
+                "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",
+                "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",
+                "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",
+                "GA",  "GB",  "GD",  "GE",  "GF",  "GH",  "GI",  "GL",
+                "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",
+                "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",
+                "ID",  "IE",  "IL",  "IN",  "IO",  "IQ",  "IR",  "IS",
+                "IT",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",
+                "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",
+                "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",
+                "LV",  "LY",  "MA",  "MC",  "MD",  "MG",  "MH",  "MK",
+                "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",
+                "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",
+                "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",
+                "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",
+                "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",
+                "PW",  "PY",  "QA",  "RE",  "RO",  "RU",  "RW",  "SA",
+                "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",
+                "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",
+                "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",
+                "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",
+                "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",
+                "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",
+                "WS",  "YE",  "YT",  "YU",  "ZA",  "ZM",  "ZW",  
+            };  
+
+            /* this table is used for 3 letter codes */
+            String[] tempObsoleteCountries = {
+                "FX",  "RO",  "TP",  "ZR",  /* obsolete country codes */      
+            };
+            
+            String[] tempDeprecatedCountries = {
+               "BU", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" /* deprecated country list */
+            };
+            String[] tempReplacementCountries = {
+           /*  "BU", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" */
+               "MM", "BJ", "FR", "BF", "VU", "ZW", "TL", "CS", "CD",   /* replacement country codes */      
+            };
+    
+            /* This list MUST contain a three-letter code for every two-letter code in
+               the above list, and they MUST be listed in the same order! */
+            String[] tempCountries3 = {
+                /*"AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",     */
+                "AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM", "ANT",
+                /*"AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AZ",     */
+                "AGO", "ATA", "ARG", "ASM", "AUT", "AUS", "ABW", "AZE",
+                /*"BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",     */
+                "BIH", "BRB", "BGD", "BEL", "BFA", "BGR", "BHR", "BDI",
+                /*"BJ",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",     */
+                "BEN", "BMU", "BRN", "BOL", "BRA", "BHS", "BTN", "BVT",
+                /*"BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",     */
+                "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG",
+                /*"CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",     */
+                "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI",
+                /*"CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",     */
+                "CUB", "CPV", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK",
+                /*"DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",     */
+                "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI",
+                /*"ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",     */
+                "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA",
+                /*"GA",  "GB",  "GD",  "GE",  "GF",  "GH",  "GI",  "GL",     */
+                "GAB", "GBR", "GRD", "GEO", "GUF", "GHA", "GIB", "GRL",
+                /*"GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",     */
+                "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM",
+                /*"GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",     */
+                "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN",
+                /*"ID",  "IE",  "IL",  "IN",  "IO",  "IQ",  "IR",  "IS",     */
+                "IDN", "IRL", "ISR", "IND", "IOT", "IRQ", "IRN", "ISL",
+                /*"IT",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",     */
+                "ITA", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR",
+                /*"KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",     */
+                "COM", "KNA", "PRK", "KOR", "KWT", "CYM", "KAZ", "LAO",
+                /*"LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",     */
+                "LBN", "LCA", "LIE", "LKA", "LBR", "LSO", "LTU", "LUX",
+                /*"LV",  "LY",  "MA",  "MC",  "MD",  "MG",  "MH",  "MK",     */
+                "LVA", "LBY", "MAR", "MCO", "MDA", "MDG", "MHL", "MKD",
+                /*"ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",     */
+                "MLI", "MMR", "MNG", "MAC", "MNP", "MTQ", "MRT", "MSR",
+                /*"MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",     */
+                "MLT", "MUS", "MDV", "MWI", "MEX", "MYS", "MOZ", "NAM",
+                /*"NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",     */
+                "NCL", "NER", "NFK", "NGA", "NIC", "NLD", "NOR", "NPL",
+                /*"NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",     */
+                "NRU", "NIU", "NZL", "OMN", "PAN", "PER", "PYF", "PNG",
+                /*"PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",     */
+                "PHL", "PAK", "POL", "SPM", "PCN", "PRI", "PSE", "PRT",
+                /*"PW",  "PY",  "QA",  "RE",  "RO",  "RU",  "RW",  "SA",     */
+                "PLW", "PRY", "QAT", "REU", "ROU", "RUS", "RWA", "SAU",
+                /*"SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",     */
+                "SLB", "SYC", "SDN", "SWE", "SGP", "SHN", "SVN", "SJM",
+                /*"SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",     */
+                "SVK", "SLE", "SMR", "SEN", "SOM", "SUR", "STP", "SLV",
+                /*"SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",     */
+                "SYR", "SWZ", "TCA", "TCD", "ATF", "TGO", "THA", "TJK",
+                /*"TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",     */
+                "TKL", "TLS", "TKM", "TUN", "TON", "TUR", "TTO", "TUV",
+                /*"TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",     */
+                "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB",
+                /*"VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",     */
+                "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",
+                /*"WS",  "YE",  "YT",  "YU",  "ZA",  "ZM",  "ZW",            */
+                "WSM", "YEM", "MYT", "YUG", "ZAF", "ZMB", "ZWE",
+            };
+    
+            String[] tempObsoleteCountries3 = {
+                /*"FX",  "RO",  "TP",  "ZR",   */
+                "FXX", "ROM", "TMP", "ZAR",    
+            };
+
+            synchronized (ULocale.class) {
+                if (_countries == null) {
+                    _countries = tempCountries;
+                    _deprecatedCountries = tempDeprecatedCountries;
+                    _replacementCountries = tempReplacementCountries;
+                    _obsoleteCountries = tempObsoleteCountries;
+                    _countries3 = tempCountries3;
+                    _obsoleteCountries3 = tempObsoleteCountries3;
+                }
+            }
+        }
+    }
+
+    private static String[][] _variantsToKeywords;
+
+    private static void initVariantsTable() {
+        if (_variantsToKeywords == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The first item is the normalized id, the second item is the
+             * canonicalized id.
+             */
+            String[][] tempVariantsToKeywords = {
+//              { EMPTY_STRING,     "en_US_POSIX", null, null }, /* .NET name */
+                { "C",              "en_US_POSIX", null, null }, /* POSIX name */
+                { "art_LOJBAN",     "jbo", null, null }, /* registered name */
+                { "az_AZ_CYRL",     "az_Cyrl_AZ", null, null }, /* .NET name */
+                { "az_AZ_LATN",     "az_Latn_AZ", null, null }, /* .NET name */
+                { "ca_ES_PREEURO",  "ca_ES", "currency", "ESP" },
+                { "cel_GAULISH",    "cel__GAULISH", null, null }, /* registered name */
+                { "de_1901",        "de__1901", null, null }, /* registered name */
+                { "de_1906",        "de__1906", null, null }, /* registered name */
+                { "de__PHONEBOOK",  "de", "collation", "phonebook" },
+                { "de_AT_PREEURO",  "de_AT", "currency", "ATS" },
+                { "de_DE_PREEURO",  "de_DE", "currency", "DEM" },
+                { "de_LU_PREEURO",  "de_LU", "currency", "EUR" },
+                { "el_GR_PREEURO",  "el_GR", "currency", "GRD" },
+                { "en_BOONT",       "en__BOONT", null, null }, /* registered name */
+                { "en_SCOUSE",      "en__SCOUSE", null, null }, /* registered name */
+                { "en_BE_PREEURO",  "en_BE", "currency", "BEF" },
+                { "en_IE_PREEURO",  "en_IE", "currency", "IEP" },
+                { "es__TRADITIONAL", "es", "collation", "traditional" },
+                { "es_ES_PREEURO",  "es_ES", "currency", "ESP" },
+                { "eu_ES_PREEURO",  "eu_ES", "currency", "ESP" },
+                { "fi_FI_PREEURO",  "fi_FI", "currency", "FIM" },
+                { "fr_BE_PREEURO",  "fr_BE", "currency", "BEF" },
+                { "fr_FR_PREEURO",  "fr_FR", "currency", "FRF" },
+                { "fr_LU_PREEURO",  "fr_LU", "currency", "LUF" },
+                { "ga_IE_PREEURO",  "ga_IE", "currency", "IEP" },
+                { "gl_ES_PREEURO",  "gl_ES", "currency", "ESP" },
+                { "hi__DIRECT",     "hi", "collation", "direct" },
+                { "it_IT_PREEURO",  "it_IT", "currency", "ITL" },
+                { "ja_JP_TRADITIONAL", "ja_JP", "calendar", "japanese" },
+//              { "nb_NO_NY",       "nn_NO", null, null },
+                { "nl_BE_PREEURO",  "nl_BE", "currency", "BEF" },
+                { "nl_NL_PREEURO",  "nl_NL", "currency", "NLG" },
+                { "pt_PT_PREEURO",  "pt_PT", "currency", "PTE" },
+                { "sl_ROZAJ",       "sl__ROZAJ", null, null }, /* registered name */
+                { "sr_SP_CYRL",     "sr_Cyrl_CS", null, null }, /* .NET name */
+                { "sr_SP_LATN",     "sr_Latn_CS", null, null }, /* .NET name */
+                { "sr_YU_CYRILLIC", "sr_Cyrl_CS", null, null }, /* Linux name */
+                { "uz_UZ_CYRL",     "uz_Cyrl_UZ", null, null }, /* .NET name */
+                { "uz_UZ_LATN",     "uz_Latn_UZ", null, null }, /* .NET name */
+                { "zh_CHS",         "zh_Hans", null, null }, /* .NET name */
+                { "zh_CHT",         "zh_Hant", null, null }, /* .NET name */
+                { "zh_GAN",         "zh__GAN", null, null }, /* registered name */
+                { "zh_GUOYU",       "zh", null, null }, /* registered name */
+                { "zh_HAKKA",       "zh__HAKKA", null, null }, /* registered name */
+                { "zh_MIN",         "zh__MIN", null, null }, /* registered name */
+                { "zh_MIN_NAN",     "zh__MINNAN", null, null }, /* registered name */
+                { "zh_WUU",         "zh__WUU", null, null }, /* registered name */
+                { "zh_XIANG",       "zh__XIANG", null, null }, /* registered name */
+                { "zh_YUE",         "zh__YUE", null, null }, /* registered name */
+                { "th_TH_TRADITIONAL", "th_TH", "calendar", "buddhist" },
+                { "zh_TW_STROKE",   "zh_TW", "collation", "stroke" },
+                { "zh__PINYIN",     "zh", "collation", "pinyin" }
+            };
+    
+            synchronized (ULocale.class) {
+                if (_variantsToKeywords == null) {
+                    _variantsToKeywords = tempVariantsToKeywords;
+                }
+            }
+        }
+    }
+
+    /**
+     * Private constructor used by static initializers.
+     */
+    private ULocale(String localeID, Locale locale) {
+        this.localeID = localeID;
+        this.locale = locale;
+    }
+
+    /**
+     * Construct a ULocale object from a {@link java.util.Locale}.
+     * @param loc a JDK locale
+     * @stable ICU 2.8
+     * @internal
+     */
+    private ULocale(Locale loc) {
+        this.localeID = getName(loc.toString());
+        this.locale = loc;
+    }
+
+    /**
+     * Return a ULocale object for a {@link java.util.Locale}.
+     * The ULocale is canonicalized.
+     * @param loc a JDK locale
+     * @stable ICU 3.2
+     */
+    public static ULocale forLocale(Locale loc) {
+        if (loc == null) {
+            return null;
+        }
+        ULocale result = (ULocale)CACHE.get(loc);
+        if (result == null && defaultULocale != null && loc == defaultULocale.locale) {
+            result = defaultULocale;
+        } else {
+            result = new ULocale(loc.toString(), loc);
+        }
+        return result;
+    }
+
+    /**
+     * Construct a ULocale from a RFC 3066 locale ID. The locale ID consists
+     * of optional language, script, country, and variant fields in that order, 
+     * separated by underscores, followed by an optional keyword list.  The
+     * script, if present, is four characters long-- this distinguishes it
+     * from a country code, which is two characters long.  Other fields
+     * are distinguished by position as indicated by the underscores.  The
+     * start of the keyword list is indicated by '@', and consists of one
+     * or more keyword/value pairs separated by commas.
+     * <p>
+     * This constructor does not canonicalize the localeID.
+     * 
+     * @param localeID string representation of the locale, e.g:
+     * "en_US", "sy_Cyrl_YU", "zh__pinyin", "es_ES@currency=EUR,collation=traditional"
+     * @stable ICU 2.8
+     */ 
+    public ULocale(String localeID) {
+        this.localeID = getName(localeID);
+    }
+
+    /**
+     * Convenience overload of ULocale(String, String, String) for 
+     * compatibility with java.util.Locale.
+     * @see #ULocale(String, String, String)
+     * @stable ICU 3.4
+     */
+    public ULocale(String a, String b) {
+        this(a, b, null);
+    }
+
+    /**
+     * Construct a ULocale from a localeID constructed from the three 'fields' a, b, and c.  These
+     * fields are concatenated using underscores to form a localeID of
+     * the form a_b_c, which is then handled like the localeID passed
+     * to <code>ULocale(String localeID)</code>.  
+     *
+     * <p>Java locale strings consisting of language, country, and
+     * variant will be handled by this form, since the country code
+     * (being shorter than four letters long) will not be interpreted
+     * as a script code.  If a script code is present, the final
+     * argument ('c') will be interpreted as the country code.  It is
+     * recommended that this constructor only be used to ease porting,
+     * and that clients instead use the single-argument constructor
+     * when constructing a ULocale from a localeID.
+     * @param a first component of the locale id
+     * @param b second component of the locale id
+     * @param c third component of the locale id
+     * @see #ULocale(String)
+     * @stable ICU 3.0 
+     */
+    public ULocale(String a, String b, String c) {
+        localeID = getName(lscvToID(a, b, c, EMPTY_STRING));
+    }
+
+    /**
+     * Create a ULocale from the id by first canonicalizing the id.
+     * @param nonCanonicalID the locale id to canonicalize
+     * @return the locale created from the canonical version of the ID.
+     * @stable ICU 3.0
+     */
+    public static ULocale createCanonical(String nonCanonicalID) {
+        return new ULocale(canonicalize(nonCanonicalID), (Locale)null);
+    }
+
+    private static String lscvToID(String lang, String script, String country, String variant) {
+        StringBuffer buf = new StringBuffer();
+     
+        if (lang != null && lang.length() > 0) {
+            buf.append(lang);
+        }
+        if (script != null && script.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(script);
+        }
+        if (country != null && country.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(country);
+        }
+        if (variant != null && variant.length() > 0) {
+            if (country == null || country.length() == 0) {
+                buf.append(UNDERSCORE);
+            }
+            buf.append(UNDERSCORE);
+            buf.append(variant);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert this ULocale object to a {@link java.util.Locale}.
+     * @return a JDK locale that either exactly represents this object
+     * or is the closest approximation.
+     * @stable ICU 2.8
+     */
+    public Locale toLocale() {
+        if (locale == null) {
+                locale = toLocale(localeID);
+        }
+        return locale;
+    }
+    
+    private static Locale toLocale(String localeID) {
+        String[] names = new IDParser(localeID).getLanguageScriptCountryVariant();
+        return new Locale(names[0], names[2], names[3]);
+    }
+    
+    /**
+     * Keep our own default ULocale.
+     */
+    private static ULocale defaultULocale;
+
+    /**
+     * Returns the current default ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static ULocale getDefault() {
+        synchronized (ULocale.class) {
+            Locale defaultLocale = Locale.getDefault();
+            if (defaultULocale == null || defaultULocale.toLocale() != defaultLocale) {
+                defaultULocale = new ULocale(defaultLocale);
+            }
+            return defaultULocale;
+        }
+    }
+
+    /**
+     * Sets the default ULocale.  This also sets the default Locale.
+     * If the caller does not have write permission to the
+     * user.language property, a security exception will be thrown,
+     * and the default ULocale will remain unchanged.
+     * @param newLocale the new default locale
+     * @throws SecurityException
+     *        if a security manager exists and its
+     *        <code>checkPermission</code> method doesn't allow the operation.
+     * @throws NullPointerException if <code>newLocale</code> is null
+     * @see SecurityManager#checkPermission
+     * @see java.util.PropertyPermission
+     * @stable ICU 3.0 
+     */
+    public static synchronized void setDefault(ULocale newLocale){
+        Locale.setDefault(newLocale.toLocale());
+        defaultULocale = newLocale;
+    }
+    
+    /**
+     * This is for compatibility with Locale-- in actuality, since ULocale is
+     * immutable, there is no reason to clone it, so this API returns 'this'.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        return this;
+    }
+
+    /**
+     * Returns the hashCode.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return localeID.hashCode();
+    }
+    
+    /**
+     * Returns true if the other object is another ULocale with the
+     * same full name, or is a String localeID that matches the full name.
+     * Note that since names are not canonicalized, two ULocales that
+     * function identically might not compare equal.
+     *
+     * @return true if this Locale is equal to the specified object.
+     * @stable ICU 3.0 
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof String) {
+            return localeID.equals((String)obj);   
+        }
+        if (obj instanceof ULocale) {
+            return localeID.equals(((ULocale)obj).localeID);
+        }
+        return false;
+    }
+    
+    /**
+     * Returns a list of all installed locales.
+     * @stable ICU 3.0
+     */
+    public static ULocale[] getAvailableLocales() {
+        if (ulocales == null) {
+                Locale[] locales = Locale.getAvailableLocales();
+                ULocale[] ul = new ULocale[locales.length];
+                for (int i = 0; i < locales.length; ++i) {
+                        ul[i] = ULocale.forLocale(locales[i]);
+                }
+                ulocales = ul;
+        }
+        return (ULocale[])ulocales.clone();
+    }
+    private static ULocale[] ulocales;
+
+    /**
+     * Returns a list of all 2-letter country codes defined in ISO 3166.
+     * Can be used to create Locales.
+     * @stable ICU 3.0
+     */
+    public static String[] getISOCountries() {
+        initCountryTables();
+        return (String[])_countries.clone();
+    }
+
+    /**
+     * Returns a list of all 2-letter language codes defined in ISO 639.
+     * Can be used to create Locales.
+     * [NOTE:  ISO 639 is not a stable standard-- some languages' codes have changed.
+     * The list this function returns includes both the new and the old codes for the
+     * languages whose codes have changed.]
+     * @stable ICU 3.0
+     */
+    public static String[] getISOLanguages() {
+        initLanguageTables();
+        return (String[])_languages.clone();
+    }
+
+    /**
+     * Returns the language code for this locale, which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage
+     * @stable ICU 3.0
+     */
+    public String getLanguage() {
+        return getLanguage(localeID);
+    }
+    
+    /**
+     * Returns the language code for the locale ID,
+     * which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage
+     * @stable ICU 3.0
+     */
+    public static String getLanguage(String localeID) {
+        return new IDParser(localeID).getLanguage();
+    }
+     
+    /**
+     * Returns the script code for this locale, which might be the empty string.
+     * @see #getDisplayScript
+     * @stable ICU 3.0
+     */
+    public String getScript() {
+        return getScript(localeID);
+    }
+
+    /**
+     * Returns the script code for the specified locale, which might be the empty string.
+     * @see #getDisplayScript
+     * @stable ICU 3.0
+     */
+    public static String getScript(String localeID) {
+        return new IDParser(localeID).getScript();
+    }
+    
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @see #getDisplayCountry
+     * @stable ICU 3.0
+     */
+    public String getCountry() {
+        return getCountry(localeID);
+    }
+
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @param localeID
+     * @see #getDisplayCountry
+     * @stable ICU 3.0
+     */
+    public static String getCountry(String localeID) {
+        return new IDParser(localeID).getCountry();
+    }
+    
+    /**
+     * Returns the variant code for this locale, which might be the empty string.
+     * @see #getDisplayVariant
+     * @stable ICU 3.0
+     */
+    public String getVariant() {
+        return getVariant(localeID);
+    }
+
+    /**
+     * Returns the variant code for the specified locale, which might be the empty string.
+     * @see #getDisplayVariant
+     * @stable ICU 3.0
+     */
+    public static String getVariant(String localeID) {
+        return new IDParser(localeID).getVariant();
+    }
+
+    /**
+     * Returns the fallback locale for the specified locale, which might be the empty string.
+     * @stable ICU 3.2
+     */
+    public static String getFallback(String localeID) {
+        return getFallbackString(getName(localeID));
+    }
+
+    /**
+     * Returns the fallback locale for this locale.  If this locale is root, returns null.
+     * @stable ICU 3.2
+     */
+    public ULocale getFallback() {
+        if (localeID.length() == 0 || localeID.charAt(0) == '@') {
+            return null;
+        }
+        return new ULocale(getFallbackString(localeID), (Locale)null);
+    }
+
+    /**
+     * Return the given (canonical) locale id minus the last part before the tags.
+     */
+    private static String getFallbackString(String fallback) {
+        int limit = fallback.indexOf('@');
+        if (limit == -1) {
+            limit = fallback.length();
+        }
+        int start = fallback.lastIndexOf('_', limit);
+        if (start == -1) {
+            start = 0;
+        }
+        return fallback.substring(0, start) + fallback.substring(limit);
+    }
+
+    /**
+     * Returns the (normalized) base name for this locale.
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public String getBaseName() {
+        return getBaseName(localeID);
+    }
+    
+    /**
+     * Returns the (normalized) base name for the specified locale.
+     * @param localeID the locale ID as a string
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public static String getBaseName(String localeID){
+        return new IDParser(localeID).getBaseName();
+    }
+
+    /**
+     * Returns the (normalized) full name for this locale.
+     *
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */ 
+    public String getName() {
+        return localeID; // always normalized
+    }
+
+    /**
+     * Returns the (normalized) full name for the specified locale.
+     *
+     * @param localeID the localeID as a string
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */
+    public static String getName(String localeID){
+        return new IDParser(localeID).getName();
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return localeID;
+    }
+
+    /**
+     * Returns an iterator over keywords for this locale.  If there 
+     * are no keywords, returns null.
+     * @return iterator over keywords, or null if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public Iterator getKeywords() {
+        return getKeywords(localeID);
+    }
+
+    /**
+     * Returns an iterator over keywords for the specified locale.  If there 
+     * are no keywords, returns null.
+     * @return an iterator over the keywords in the specified locale, or null
+     * if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public static Iterator getKeywords(String localeID){
+        return new IDParser(localeID).getKeywords();
+    }
+
+    /**
+     * Returns the value for a keyword in this locale. If the keyword is not defined, returns null.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return the value of the keyword, or null.
+     * @stable ICU 3.0
+     */
+    public String getKeywordValue(String keywordName){
+        return getKeywordValue(localeID, keywordName);
+    }
+    
+    /**
+     * Returns the value for a keyword in the specified locale. If the keyword is not defined, returns null. 
+     * The locale name does not need to be normalized.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return String the value of the keyword as a string
+     * @stable ICU 3.0
+     */
+    public static String getKeywordValue(String localeID, String keywordName) {
+        return new IDParser(localeID).getKeywordValue(keywordName);
+    }
+
+    /**
+     * Utility class to parse and normalize locale ids (including POSIX style)
+     */
+    private static final class IDParser {
+        private char[] id;
+        private int index;
+        private char[] buffer;
+        private int blen;
+        // um, don't handle POSIX ids unless we request it.  why not?  well... because.
+        private boolean canonicalize;
+        private boolean hadCountry;
+
+        // used when canonicalizing
+        Map keywords;
+        String baseName;
+
+        /**
+         * Parsing constants.
+         */
+        private static final char KEYWORD_SEPARATOR     = '@';
+        private static final char HYPHEN                = '-';
+        private static final char KEYWORD_ASSIGN        = '=';
+        private static final char COMMA                 = ',';
+        private static final char ITEM_SEPARATOR        = ';';
+        private static final char DOT                   = '.';
+
+        private IDParser(String localeID) {
+            this(localeID, false);
+        }
+
+        private IDParser(String localeID, boolean canonicalize) {
+            id = localeID.toCharArray();
+            index = 0;
+            buffer = new char[id.length + 5];
+            blen = 0;
+            this.canonicalize = canonicalize;
+        }
+
+        private void reset() {
+            index = blen = 0;
+        }
+
+        // utilities for working on text in the buffer
+
+        /**
+         * Append c to the buffer.
+         */
+        private void append(char c) {
+            try {
+                buffer[blen] = c;
+            }
+            catch (IndexOutOfBoundsException e) {
+                if (buffer.length > 512) {
+                    // something is seriously wrong, let this go
+                    throw e;
+                }
+                char[] nbuffer = new char[buffer.length * 2];
+                System.arraycopy(buffer, 0, nbuffer, 0, buffer.length);
+                nbuffer[blen] = c;
+                buffer = nbuffer;
+            }
+            ++blen;
+        }
+
+        private void addSeparator() {
+            append(UNDERSCORE);
+        }
+
+        /**
+         * Returns the text in the buffer from start to blen as a String.
+         */
+        private String getString(int start) {
+            if (start == blen) {
+                return EMPTY_STRING;
+            }
+            return new String(buffer, start, blen-start);
+        }
+
+        /**
+         * Set the length of the buffer to pos, then append the string.
+         */
+        private void set(int pos, String s) {
+            this.blen = pos; // no safety
+            append(s);
+        }
+
+        /**
+         * Append the string to the buffer.
+         */
+        private void append(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                append(s.charAt(i));
+            }
+        }
+
+        // utilities for parsing text out of the id
+
+        /**
+         * Character to indicate no more text is available in the id.
+         */
+        private static final char DONE = '\uffff';
+
+        /**
+         * Returns the character at index in the id, and advance index.  The returned character
+         * is DONE if index was at the limit of the buffer.  The index is advanced regardless
+         * so that decrementing the index will always 'unget' the last character returned.
+         */
+        private char next() {
+            if (index == id.length) {
+                index++;
+                return DONE; 
+            }
+
+            return id[index++];
+        }
+
+        /**
+         * Advance index until the next terminator or id separator, and leave it there.
+         */
+        private void skipUntilTerminatorOrIDSeparator() {
+            while (!isTerminatorOrIDSeparator(next())) {
+            }
+            --index;
+        }
+
+        /**
+         * Returns true if the character at index in the id is a terminator.
+         */
+        private boolean atTerminator() {
+            return index >= id.length || isTerminator(id[index]);
+        }
+
+        /**
+         * Returns true if the character is a terminator (keyword separator, dot, or DONE).
+         * Dot is a terminator because of the POSIX form, where dot precedes the codepage.
+         */
+        private boolean isTerminator(char c) {
+            // always terminate at DOT, even if not handling POSIX.  It's an error...
+            return c == KEYWORD_SEPARATOR || c == DONE || c == DOT;
+        }
+
+        /**
+         * Returns true if the character is a terminator or id separator.
+         */
+        private boolean isTerminatorOrIDSeparator(char c) {
+            return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || 
+                c == DONE || c == DOT;   
+        }
+
+        /**
+         * Returns true if the start of the buffer has an experimental or private language 
+         * prefix, the pattern '[ixIX][-_].' shows the syntax checked.
+         */
+        private boolean haveExperimentalLanguagePrefix() {
+            if (id.length > 2) {
+                char c = id[1];
+                if (c == HYPHEN || c == UNDERSCORE) {
+                    c = id[0];
+                    return c == 'x' || c == 'X' || c == 'i' || c == 'I';
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Returns true if a value separator occurs at or after index.
+         */
+        private boolean haveKeywordAssign() {
+            // assume it is safe to start from index
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_ASSIGN) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Advance index past language, and accumulate normalized language code in buffer.
+         * Index must be at 0 when this is called.  Index is left at a terminator or id 
+         * separator.  Returns the start of the language code in the buffer.
+         */
+        private int parseLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                append(Character.toLowerCase(id[0]));
+                append(HYPHEN);
+                index = 2;
+            }
+        
+            char c;
+            while(!isTerminatorOrIDSeparator(c = next())) {
+                append(Character.toLowerCase(c));
+            }
+            --index; // unget
+
+            if (blen == 3) {
+                initLanguageTables();
+
+                /* convert 3 character code to 2 character code if possible *CWB*/
+                String lang = getString(0);
+                int offset = findIndex(_languages3, lang);
+                if (offset >= 0) {
+                    set(0, _languages[offset]);
+                } else {
+                    offset = findIndex(_obsoleteLanguages3, lang);
+                    if (offset >= 0) {
+                        set(0, _obsoleteLanguages[offset]);
+                    }
+                }
+            }
+
+            return 0;
+        }
+
+        /**
+         * Advance index past language.  Index must be at 0 when this is called.  Index
+         * is left at a terminator or id separator.
+         */
+        private void skipLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                index = 2;
+            }
+            skipUntilTerminatorOrIDSeparator();
+        }
+
+        /**
+         * Advance index past script, and accumulate normalized script in buffer.
+         * Index must be immediately after the language.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index and buffer unchanged.  Otherwise index is left at
+         * a terminator or id separator.  Returns the start of the script code
+         * in the buffer (this may be equal to the buffer length, if there is no
+         * script).
+         */
+        private int parseScript() {
+            if (!atTerminator()) {
+                int oldIndex = index; // save original index
+                ++index;
+
+                int oldBlen = blen; // get before append hyphen, if we truncate everything is undone
+                char c;
+                while(!isTerminatorOrIDSeparator(c = next())) {
+                    if (blen == oldBlen) { // first pass
+                        addSeparator();
+                        append(Character.toUpperCase(c));
+                    } else {
+                        append(Character.toLowerCase(c));
+                    }
+                }
+                --index; // unget
+
+                /* If it's not exactly 4 characters long, then it's not a script. */
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                    blen = oldBlen;
+                } else {
+                    oldBlen++; // index past hyphen, for clients who want to extract just the script
+                }
+
+                return oldBlen;
+            }
+            return blen;
+        }
+
+        /**
+         * Advance index past script.
+         * Index must be immediately after the language and IDSeparator.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index.  Otherwise index is left at a terminator or
+         * id separator.
+         */
+        private void skipScript() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                skipUntilTerminatorOrIDSeparator();
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past country, and accumulate normalized country in buffer.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.  Return the start of the country code in the buffer.
+         */
+        private int parseCountry() {
+            if (!atTerminator()) {
+                ++index;
+
+                int oldBlen = blen;
+                char c;
+                while (!isTerminatorOrIDSeparator(c = next())) {
+                    if (oldBlen == blen) { // first, add hyphen
+                        hadCountry = true; // we have a country, let variant parsing know
+                        addSeparator();
+                        ++oldBlen; // increment past hyphen
+                    }
+                    append(Character.toUpperCase(c));
+                }
+                --index; // unget
+
+                if (blen - oldBlen == 3) {
+                    initCountryTables();
+
+                    /* convert 3 character code to 2 character code if possible *CWB*/
+                    int offset = findIndex(_countries3, getString(oldBlen));
+                    if (offset >= 0) {
+                        set(oldBlen, _countries[offset]);
+                    } else {
+                        offset = findIndex(_obsoleteCountries3, getString(oldBlen));
+                        if (offset >= 0) {
+                            set(oldBlen, _obsoleteCountries[offset]);
+                        }
+                    }
+                }
+
+                return oldBlen;
+            }
+
+            return blen;
+        }         
+
+        /**
+         * Advance index past country.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.
+         */
+        private void skipCountry() {
+            if (!atTerminator()) {
+                ++index;
+                skipUntilTerminatorOrIDSeparator();
+            }
+        }
+
+        /**
+         * Advance index past variant, and accumulate normalized variant in buffer.  This ignores
+         * the codepage information from POSIX ids.  Index must be immediately after the country
+         * or script.  Index is left at the keyword separator or at the end of the text.  Return
+         * the start of the variant code in the buffer.
+         *
+         * In standard form, we can have the following forms:
+         * ll__VVVV
+         * ll_CC_VVVV
+         * ll_Ssss_VVVV
+         * ll_Ssss_CC_VVVV
+         *
+         * This also handles POSIX ids, which can have the following forms (pppp is code page id):
+         * ll_CC.pppp          --> ll_CC
+         * ll_CC.pppp@VVVV     --> ll_CC_VVVV
+         * ll_CC@VVVV          --> ll_CC_VVVV
+         *
+         * We identify this use of '@' in POSIX ids by looking for an '=' following
+         * the '@'.  If there is one, we consider '@' to start a keyword list, instead of
+         * being part of a POSIX id.
+         *
+         * Note:  since it was decided that we want an option to not handle POSIX ids, this
+         * becomes a bit more complex.
+         */
+        private int parseVariant() {
+            int oldBlen = blen;
+
+            boolean start = true;
+            boolean needSeparator = true;
+            boolean skipping = false;
+            char c;
+            while ((c = next()) != DONE) {
+                if (c == DOT) {
+                    start = false;
+                    skipping = true;
+                } else if (c == KEYWORD_SEPARATOR) {
+                    if (haveKeywordAssign()) {
+                        break;
+                    }
+                    skipping = false;
+                    start = false;
+                    needSeparator = true; // add another underscore if we have more text
+                } else if (start) {
+                    start = false;
+                } else if (!skipping) {
+                    if (needSeparator) {
+                        boolean incOldBlen = blen == oldBlen; // need to skip separators
+                        needSeparator = false;
+                        if (incOldBlen && !hadCountry) { // no country, we'll need two
+                            addSeparator();
+                            ++oldBlen; // for sure
+                        }
+                        addSeparator();
+                        if (incOldBlen) { // only for the first separator
+                            ++oldBlen;
+                        }
+                    }
+                    c = Character.toUpperCase(c);
+                    if (c == HYPHEN || c == COMMA) {
+                        c = UNDERSCORE;
+                    }
+                    append(c);
+                }
+            }
+            --index; // unget
+            
+            return oldBlen;
+        }
+
+        // no need for skipvariant, to get the keywords we'll just scan directly for 
+        // the keyword separator
+
+        /**
+         * Returns the normalized language id, or the empty string.
+         */
+        public String getLanguage() {
+            reset();
+            return getString(parseLanguage());
+        }
+   
+        /**
+         * Returns the normalized script id, or the empty string.
+         */
+        public String getScript() {
+            reset();
+            skipLanguage();
+            return getString(parseScript());
+        }
+    
+        /**
+         * return the normalized country id, or the empty string.
+         */
+        public String getCountry() {
+            reset();
+            skipLanguage();
+            skipScript();
+            return getString(parseCountry());
+        }
+
+        /**
+         * Returns the normalized variant id, or the empty string.
+         */
+        public String getVariant() {
+            reset();
+            skipLanguage();
+            skipScript();
+            skipCountry();
+            return getString(parseVariant());
+        }
+
+        /**
+         * Returns the language, script, country, and variant as separate strings.
+         */
+        public String[] getLanguageScriptCountryVariant() {
+            reset();
+            return new String[] {
+                getString(parseLanguage()),
+                getString(parseScript()),
+                getString(parseCountry()),
+                getString(parseVariant())
+            };
+        }
+
+        public void setBaseName(String baseName) {
+            this.baseName = baseName;
+        }
+
+        public void parseBaseName() {
+            if (baseName != null) {
+                set(0, baseName);
+            } else {
+                reset();
+                parseLanguage();
+                parseScript();
+                parseCountry();
+                parseVariant();
+            
+                // catch unwanted trailing underscore after country if there was no variant
+                if (blen > 1 && buffer[blen-1] == UNDERSCORE) {
+                    --blen;
+                }
+            }
+        }
+
+        /**
+         * Returns the normalized base form of the locale id.  The base
+         * form does not include keywords.
+         */
+        public String getBaseName() {
+            if (baseName != null) {
+                return baseName;
+            }
+            parseBaseName();
+            return getString(0);
+        }
+
+        /**
+         * Returns the normalized full form of the locale id.  The full
+         * form includes keywords if they are present.
+         */
+        public String getName() {
+            parseBaseName();
+            parseKeywords();
+            return getString(0);
+        }
+
+        // keyword utilities
+
+        /**
+         * If we have keywords, advance index to the start of the keywords and return true, 
+         * otherwise return false.
+         */
+        private boolean setToKeywordStart() {
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_SEPARATOR) {
+                    if (canonicalize) {
+                        for (int j = ++i; j < id.length; ++j) { // increment i past separator for return
+                            if (id[j] == KEYWORD_ASSIGN) {
+                                index = i;
+                                return true;
+                            }
+                        }
+                    } else {
+                        if (++i < id.length) {
+                            index = i;
+                            return true;
+                        }
+                    }
+                    break;
+                }
+            }
+            return false;
+        }
+        
+        private static boolean isDoneOrKeywordAssign(char c) {
+            return c == DONE || c == KEYWORD_ASSIGN;
+        }
+
+        private static boolean isDoneOrItemSeparator(char c) {
+            return c == DONE || c == ITEM_SEPARATOR;
+        }
+
+        private String getKeyword() {
+            int start = index;
+            while (!isDoneOrKeywordAssign(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim().toLowerCase();
+        }
+
+        private String getValue() {
+            int start = index;
+            while (!isDoneOrItemSeparator(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim(); // leave case alone
+        }
+
+        private Comparator getKeyComparator() {
+            final Comparator comp = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        return ((String)lhs).compareTo((String)rhs);
+                    }
+                };
+            return comp;
+        }
+
+        /**
+         * Returns a map of the keywords and values, or null if there are none.
+         */
+        private Map getKeywordMap() {
+            if (keywords == null) {
+                TreeMap m = null;
+                if (setToKeywordStart()) {
+                    // trim spaces and convert to lower case, both keywords and values.
+                    do {
+                        String key = getKeyword();
+                        if (key.length() == 0) {
+                            break;
+                        }
+                        char c = next();
+                        if (c != KEYWORD_ASSIGN) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            if (c == DONE) {
+                                break;
+                            } else {
+                                continue;
+                            }
+                        }
+                        String value = getValue();
+                        if (value.length() == 0) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            continue;
+                        }
+                        if (m == null) {
+                            m = new TreeMap(getKeyComparator());
+                        } else if (m.containsKey(key)) {
+                            // throw new IllegalArgumentException("key '" + key + "' already has a value.");
+                            continue;
+                        }
+                        m.put(key, value);
+                    } while (next() == ITEM_SEPARATOR);
+                }               
+                keywords = m != null ? m : Collections.EMPTY_MAP;
+            }
+
+            return keywords;
+        }
+
+        /**
+         * Parse the keywords and return start of the string in the buffer.
+         */
+        private int parseKeywords() {
+            int oldBlen = blen;
+            Map m = getKeywordMap();
+            if (!m.isEmpty()) {
+                Iterator iter = m.entrySet().iterator();
+                boolean first = true;
+                while (iter.hasNext()) {
+                    append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR);
+                    first = false;
+                    Map.Entry e = (Map.Entry)iter.next();
+                    append((String)e.getKey());
+                    append(KEYWORD_ASSIGN);
+                    append((String)e.getValue());
+                }
+                if (blen != oldBlen) {
+                    ++oldBlen;
+                }
+            }
+            return oldBlen;
+        }
+
+        /**
+         * Returns an iterator over the keywords, or null if we have an empty map.
+         */
+        public Iterator getKeywords() {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : m.keySet().iterator();
+        }
+
+        /**
+         * Returns the value for the named keyword, or null if the keyword is not
+         * present.
+         */
+        public String getKeywordValue(String keywordName) {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : (String)m.get(keywordName.trim().toLowerCase());
+        }
+
+        /**
+         * Set the keyword value only if it is not already set to something else.
+         */
+        public void defaultKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, false);
+        }
+            
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.
+         */
+        public void setKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, true);
+        }
+
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.  If reset is true, ignore any previous value for 
+         * the keyword, otherwise do not change the keyword (including removal of
+         * one or all keywords).
+         */
+        private void setKeywordValue(String keywordName, String value, boolean reset) {
+            if (keywordName == null) {
+                if (reset) {
+                    // force new map, ignore value
+                    keywords = Collections.EMPTY_MAP;
+                }
+            } else {
+                keywordName = keywordName.trim().toLowerCase();
+                if (keywordName.length() == 0) {
+                    throw new IllegalArgumentException("keyword must not be empty");
+                }
+                if (value != null) {
+                    value = value.trim();
+                    if (value.length() == 0) {
+                        throw new IllegalArgumentException("value must not be empty");
+                    }
+                }
+                Map m = getKeywordMap();
+                if (m.isEmpty()) { // it is EMPTY_MAP
+                    if (value != null) {
+                        // force new map
+                        keywords = new TreeMap(getKeyComparator());
+                        keywords.put(keywordName, value.trim());
+                    }
+                } else {
+                    if (reset || !m.containsKey(keywordName)) {
+                        if (value != null) {
+                            m.put(keywordName, value);
+                        } else {
+                            m.remove(keywordName);
+                            if (m.isEmpty()) {
+                                // force new map
+                                keywords = Collections.EMPTY_MAP;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * linear search of the string array. the arrays are unfortunately ordered by the
+     * two-letter target code, not the three-letter search code, which seems backwards.
+     */
+    private static int findIndex(String[] array, String target){
+        for (int i = 0; i < array.length; i++) {
+            if (target.equals(array[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }    
+
+    /**
+     * Returns the canonical name for the specified locale ID.  This is used to convert POSIX
+     * and other grandfathered IDs to standard ICU form.
+     * @param localeID the locale id
+     * @return the canonicalized id
+     * @stable ICU 3.0
+     */
+    public static String canonicalize(String localeID){
+        IDParser parser = new IDParser(localeID, true);
+        String baseName = parser.getBaseName();
+        boolean foundVariant = false;
+      
+        // formerly, we always set to en_US_POSIX if the basename was empty, but
+        // now we require that the entire id be empty, so that "@foo=bar"
+        // will pass through unchanged.
+        // {dlf} I'd rather keep "" unchanged.
+        if (localeID.equals("")) {
+            return "";
+//              return "en_US_POSIX";
+        }
+
+        // we have an ID in the form xx_Yyyy_ZZ_KKKKK
+
+        initVariantsTable();
+
+        /* See if this is an already known locale */
+        for (int i = 0; i < _variantsToKeywords.length; i++) {
+            if (_variantsToKeywords[i][0].equals(baseName)) {
+                foundVariant = true;
+
+                String[] vals = _variantsToKeywords[i];
+                parser.setBaseName(vals[1]);
+                if (vals[2] != null) {
+                    parser.defaultKeywordValue(vals[2], vals[3]);
+                }
+                break;
+            }
+        }
+
+        /* convert the Euro variant to appropriate ID */
+        if (!foundVariant) {
+            int idx = baseName.indexOf("_EURO");
+            if (idx > -1) {
+                parser.setBaseName(baseName.substring(0, idx));
+                parser.defaultKeywordValue("currency", "EUR");
+            }
+        }
+
+        /* total mondo hack for Norwegian, fortunately the main NY case is handled earlier */
+        if (!foundVariant) {
+            if (parser.getLanguage().equals("nb") && parser.getVariant().equals("NY")) {
+                parser.setBaseName(lscvToID("nn", parser.getScript(), parser.getCountry(), null));
+            }
+        }
+
+        return parser.getName();
+    }
+    
+    /**
+     * Given a keyword and a value, return a new locale with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale
+     * @stable ICU 3.2
+     */
+    public ULocale setKeywordValue(String keyword, String value) {
+        return new ULocale(setKeywordValue(localeID, keyword, value), (Locale)null);
+    }
+
+    /**
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale id
+     * @stable ICU 3.2
+     */
+    public static String setKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.setKeywordValue(keyword, value);
+        return parser.getName();
+    }
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Language(){
+        return getISO3Language(localeID);
+    }
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Language(String localeID){
+        initLanguageTables();
+
+        String language = getLanguage(localeID);
+        int offset = findIndex(_languages, language);
+        if(offset>=0){
+            return _languages3[offset];
+        } else {
+            offset = findIndex(_obsoleteLanguages, language);
+            if (offset >= 0) {
+                return _obsoleteLanguages3[offset];
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Country(){
+        return getISO3Country(localeID);
+    }
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Country(String localeID){
+        initCountryTables();
+
+        String country = getCountry(localeID);
+        int offset = findIndex(_countries, country);
+        if(offset>=0){
+            return _countries3[offset];
+        }else{
+            offset = findIndex(_obsoleteCountries, country);
+            if(offset>=0){
+                return _obsoleteCountries3[offset];   
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    // display names
+
+    /**
+     * Returns this locale's language localized for display in the default locale.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage() {
+        return toLocale().getDisplayLanguage();
+    }
+
+    /**
+     * Returns this locale's language localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage(ULocale displayLocale) {
+        return toLocale().getDisplayLanguage(displayLocale.toLocale());
+    }
+    
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, String displayLocaleID) {
+        return toLocale(localeID).getDisplayLanguage(toLocale(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, ULocale displayLocale) {
+        return toLocale(localeID).getDisplayLanguage(displayLocale.toLocale());
+    }    
+
+    static String getCurrentCountryID(String oldID){
+        initCountryTables();
+        int offset = findIndex(_deprecatedCountries, oldID);
+        if (offset >= 0) {
+            return _replacementCountries[offset];
+        }
+        return oldID;
+    }
+    
+    static String getCurrentLanguageID(String oldID){
+        initLanguageTables();
+        int offset = findIndex(_obsoleteLanguages, oldID);
+        if (offset >= 0) {
+            return _replacementLanguages[offset];
+        }
+        return oldID;        
+    }
+        
+
+    /**
+     * Returns this locale's script localized for display in the default locale.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript() {
+        return new IDParser(localeID).getScript();
+    }
+
+    /**
+     * Returns this locale's script localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript(ULocale displayLocale) {
+        return new IDParser(localeID).getScript();
+    }
+    
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose script will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, String displayLocaleID) {
+        return new IDParser(localeID).getScript();
+    }
+
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * @param localeID the id of the locale whose script will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, ULocale displayLocale) {
+        return new IDParser(localeID).getScript();
+    }
+
+    /**
+     * Returns this locale's country localized for display in the default locale.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry() {
+        return toLocale(localeID).getDisplayCountry();
+    }
+    
+    /**
+     * Returns this locale's country localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry(ULocale displayLocale){
+        return toLocale(localeID).getDisplayCountry(displayLocale.toLocale());   
+    }
+    
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, String displayLocaleID) {
+        return toLocale(localeID).getDisplayCountry(toLocale(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, ULocale displayLocale) {
+        return toLocale(localeID).getDisplayCountry(displayLocale.toLocale());
+    }
+
+    /**
+     * Returns this locale's variant localized for display in the default locale.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant() {
+        return toLocale().getDisplayVariant();   
+    }
+
+    /**
+     * Returns this locale's variant localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant(ULocale displayLocale) {
+        return toLocale().getDisplayVariant(displayLocale.toLocale());   
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, String displayLocaleID){
+        return toLocale(localeID).getDisplayVariant(toLocale(displayLocaleID));
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, ULocale displayLocale) {
+        return toLocale(localeID).getDisplayVariant(displayLocale.toLocale());
+    }
+
+    /**
+     * Returns a keyword localized for display in the default locale.
+     * @param keyword the keyword to be displayed.
+     * @return the localized keyword name.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword) {
+        return keyword.trim().toLowerCase();   
+    }
+    
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, String displayLocaleID) {
+        return keyword.trim().toLowerCase();   
+    }
+
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocale the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, ULocale displayLocale) {
+        return keyword.trim().toLowerCase();
+    }
+
+    /**
+     * Returns a keyword value localized for display in the default locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword) {
+        return new IDParser(localeID).getKeywordValue(keyword.trim().toLowerCase());
+    }
+    
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword, ULocale displayLocale) {
+        return new IDParser(localeID).getKeywordValue(keyword.trim().toLowerCase());
+   }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, String displayLocaleID) {
+        return new IDParser(localeID).getKeywordValue(keyword.trim().toLowerCase());
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, ULocale displayLocale) {
+        return new IDParser(localeID).getKeywordValue(keyword.trim().toLowerCase());
+    }
+
+    /**
+     * Returns this locale name localized for display in the default locale.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName() {
+        return getDisplayNameInternal(localeID, getDefault().toLocale());
+    }
+    
+    /**
+     * Returns this locale name localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName(ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.toLocale());
+    }
+    
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, String displayLocaleID) {
+        return getDisplayNameInternal(localeID, toLocale(displayLocaleID));
+    }
+
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.toLocale());
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayNameInternal(String localeID, Locale displayLocale) {
+        // lang
+        // lang (script, country, variant, keyword=value, ...)
+        // script, country, variant, keyword=value, ...
+
+        StringBuffer buf = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+        
+        Locale locale = toLocale(localeID);
+
+        boolean haveLanguage = names[0].length() > 0;
+        boolean openParen = false;
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {
+                switch (i) {
+                case 0: name = locale.getDisplayLanguage(displayLocale); break;
+                case 1: break;
+                case 2: name = locale.getDisplayCountry(displayLocale); break;
+                case 3: name = locale.getDisplayVariant(displayLocale); break;
+                }
+                if (buf.length() > 0) {
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                buf.append(name);
+            }
+        }
+
+        Map m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            Iterator keys = m.entrySet().iterator();
+            while (keys.hasNext()) {
+                if (buf.length() > 0) {
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                Map.Entry e = (Map.Entry)keys.next();
+                String key = (String)e.getKey();
+                String val = (String)e.getValue();
+                buf.append(key);
+                buf.append("=");
+                buf.append(val);
+            }
+        }
+
+        if (openParen) {
+            buf.append(")");
+        }
+            
+        return buf.toString();
+    }
+    
+  /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+    public static ULocale acceptLanguage(String acceptLanguageList, 
+                ULocale[] availableLocales, boolean[] fallback) {
+        /**
+         * @internal ICU 3.4
+         */
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if(q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if(q < other.q) {
+                    return 1;
+                }
+                if(serial < other.serial) {
+                    return -1;
+                } else if(serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // 1st: parse out the acceptLanguageList into an array
+        
+        TreeMap map = new TreeMap();
+        
+        final int l = acceptLanguageList.length();
+        int n;
+        for(n=0;n<l;n++) {
+            int itemEnd = acceptLanguageList.indexOf(',',n);
+            if(itemEnd == -1) {
+                itemEnd = l;
+            }
+            int paramEnd = acceptLanguageList.indexOf(';',n);
+            double q = 1.0;
+ 
+            if((paramEnd != -1) && (paramEnd < itemEnd)) {
+                /* semicolon (;) is closer than end (,) */
+                int t = paramEnd + 1;
+                while(Character.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='q') {
+                    t++;
+                }
+                while(Character.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='=') {
+                    t++;
+                }
+                while(Character.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                try {
+                    String val = acceptLanguageList.substring(t,itemEnd).trim();
+                    q = Double.parseDouble(val);
+                } catch (NumberFormatException nfe) {
+                    q = 1.0;
+                }
+            } else {
+                q = 1.0; //default
+                paramEnd = itemEnd;
+            }
+
+            String loc = acceptLanguageList.substring(n,paramEnd).trim();
+            int serial = map.size();
+            ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q,serial);
+            map.put(entry, new ULocale(canonicalize(loc))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc
+            n = itemEnd; // get next item. (n++ will skip over delimiter)
+        }
+        
+        // 2. pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        
+        // 3. call the real function
+        return acceptLanguage(acceptList, availableLocales, fallback);
+    }
+    
+   /**
+    * Based on a list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, 
+                        ULocale[] availableLocales, boolean[] fallback) {
+        // fallbacklist
+        int i,j;
+        if(fallback != null) {
+            fallback[0]=true;
+        }
+        for(i=0;i<acceptLanguageList.length;i++) {
+            ULocale aLocale = acceptLanguageList[i];
+            boolean[] setFallback = fallback;
+            do {
+                for(j=0;j<availableLocales.length;j++) {
+                    if(availableLocales[j].equals(aLocale)) {
+                        if(setFallback != null) {
+                            setFallback[0]=false; // first time with this locale - not a fallback.
+                        }
+                        return availableLocales[j];
+                    }
+                }
+                aLocale = aLocale.getFallback();
+                setFallback = null; // Do not set fallback in later iterations
+            } while (aLocale != null);
+        }
+        return null;
+    }
+
+   /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+    public static ULocale acceptLanguage(String acceptLanguageList, boolean[] fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(), fallback);
+    }
+
+   /**
+    * Based on an ordered array of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList ordered array of acceptable locales (preferred are listed first)
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, boolean[] fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(), fallback);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath
new file mode 100644
index 0000000..0215967
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..21f7126
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.jse4</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..153819a
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:53 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..7bbfa78
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:53 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bc617bb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %fragmentName
+Bundle-SymbolicName: com.ibm.icu.jse4
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Fragment-Host: com.ibm.icu;bundle-version="[3.9.0,4.1.0)"
+Bundle-Copyright: @COPYRIGHT@
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-Localization: fragment-icu-jse4
+Bundle-Classpath: icu-jse4.jar
+Eclipse-PatchFragment: true
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..c012a71
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.icu-jse4.jar = src/
+src.includes = about.html,\
+               about_files/
+bin.includes = META-INF/,\
+               icu-jse4.jar,\
+               about.html,\
+               about_files/,\
+               fragment-icu-jse4.properties,\
+               fragment.xml
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties
new file mode 100644
index 0000000..1a8006b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2006 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+fragmentName = International Components for Unicode for Java (ICU4J), Foundation Fragment
+providerName = IBM Corporation
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath
new file mode 100644
index 0000000..349358b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" sourcepath="icu4jtsrc.zip" kind="lib" path="icu4jtests.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project
new file mode 100644
index 0000000..4ea891f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8ba4b14
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:51:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..d57be9d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:51:01 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..322434e
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ICU Test Fragment
+Bundle-SymbolicName: com.ibm.icu.tests
+Bundle-Version: 1.0.0
+Bundle-Vendor: IBM
+Fragment-Host: com.ibm.icu;bundle-version="[3.9.0,4.1.0)"
+Bundle-Localization: plugin
+Bundle-Copyright: @COPYRIGHT@
+Require-Bundle: org.junit
+Bundle-ClassPath: .,icu4jtests.jar
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties
new file mode 100644
index 0000000..6e1043f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               ./icu4jtests.jar,\
+               .classpath,\
+               bin/,\
+               build.properties,\
+               .project
+src.includes = src/,\
+               build.properties,\
+               .classpath,\
+               .project,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java
new file mode 100644
index 0000000..cc2871a
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java
@@ -0,0 +1,159 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+package com.ibm.icu.tests;
+
+import junit.framework.TestCase;
+import com.ibm.icu.dev.test.TestAll;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestFmwk.TestParams;
+
+//import com.ibm.icu.text.DateFormat;
+//import com.ibm.icu.util.Calendar;
+//import com.ibm.icu.util.GregorianCalendar;
+//import com.ibm.icu.util.TimeZone;
+//import com.ibm.icu.util.ULocale;
+
+public class UnitTest extends TestCase {
+    
+    public void testBidi() throws Exception {
+        runUtility("Bidi");
+    }
+
+    public void testCalendar() throws Exception {
+        runUtility("Calendar");
+    }
+
+    public void testCollator() throws Exception {
+        runUtility("Collator");
+    }
+
+    public void testCompression() throws Exception {
+        runUtility("Compression");
+    }
+
+    public void testDuration() throws Exception {
+        runUtility("Duration");
+    }
+
+    public void testDiagBigDecimal() throws Exception {
+        runUtility("DiagBigDecimal");
+    }
+
+    public void testFormat() throws Exception {
+        runUtility("Format");
+    }
+
+    public void testImpl() throws Exception {
+        runUtility("Impl");
+    }
+
+    public void testNormalizer() throws Exception {
+        runUtility("Normalizer");
+    }
+
+    public void testProperty() throws Exception {
+        runUtility("Property");
+    }
+
+    public void testRBBI() throws Exception {
+        runUtility("RBBI");
+    }
+
+    public void testSearchTest() throws Exception {
+        runUtility("SearchTest");
+    }
+
+    public void testStringPrep() throws Exception {
+        runUtility("StringPrep");
+    }
+
+    public void testTestCharsetDetector() throws Exception {
+        runUtility("TestCharsetDetector");
+    }
+
+    public void testTestUCharacterIterator() throws Exception {
+        runUtility("TestUCharacterIterator");
+    }
+
+    public void testTimeScale() throws Exception {
+        runUtility("TimeScale");
+    }
+
+    public void testTimeZone() throws Exception {
+        runUtility("TimeZone");
+    }
+
+    public void testTranslit() throws Exception {
+        runUtility("Translit");
+    }
+
+    public void testUtil() throws Exception {
+        runUtility("Util");
+    }
+
+    public void runUtility(String testname) throws Exception {
+        TestParams params = TestParams.create("-n", null);
+        TestFmwk test = new TestAll();
+        test.resolveTarget(params, testname).run();
+        if (params.errorCount > 0) {
+            fail(params.errorSummary.toString());
+        }
+    }
+
+    // sample tests from ICU4J test suite
+
+    // Calendar
+//    public void testCalendarSimple() throws Exception {
+//        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+//        GregorianCalendar gc = new GregorianCalendar(tz);
+//        gc.set(2005,9,17,14,15,33);
+//        Date time = gc.getTime();
+//        
+//        final String[] calendars = {
+//            "buddhist", "chinese", "coptic", "ethiopic", "gregorian", 
+//            "hebrew", "islamic", "islamic-civil", "japanese"
+//        };
+//        final String[] ustimes = {
+//            "Monday, October 17, 2548 BE 2:15:33 PM PDT",
+//            "Monday 22x78-9-15 2:15:33 PM PDT",
+//            "Monday, Baba 7, 1722 2:15:33 PM PDT",
+//            "Monday, Tekemt 7, 1998 2:15:33 PM PDT",
+//            "Monday, October 17, 2005 2:15:33 PM PDT",
+//            "Monday, Tishri 14, 5766 2:15:33 PM PDT",
+//            "Monday, Ramadan 14, 1426 2:15:33 PM PDT",
+//            "Monday, Ramadan 14, 1426 2:15:33 PM PDT",
+//            "Monday, October 17, 17 Heisei 2:15:33 PM PDT",
+//        };
+//        final String[] detimes = {
+//            "Montag, Oktober 17, 2548 BE 2:15:33 nachm. GMT-07:00",
+//            "Montag 22x78-9-15 2:15:33 nachm. GMT-07:00",
+//            "Montag, 7. Baba 1722 14:15 Uhr GMT-07:00",
+//            "Montag, 7. Tekemt 1998 14:15 Uhr GMT-07:00",
+//            "Montag, 17. Oktober 2005 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Tishri 5766 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Ramadan 1426 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Ramadan 1426 14:15 Uhr GMT-07:00",
+//            "Montag, Oktober 17, 17 Heisei 2:15:33 nachm. GMT-07:00",
+//        };
+//        
+//        ULocale[] locales = {ULocale.US, ULocale.GERMANY };
+//        String[][] times = { ustimes, detimes };
+//        for (int j = 0; j < locales.length; ++j) {
+//            ULocale ul = new ULocale("en_US");
+//            for (int i = 0; i < calendars.length; ++i) {
+//                ul = ul.setKeywordValue("calendar", calendars[i]);
+//                Calendar cal = Calendar.getInstance(ul);
+//                DateFormat fmt = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, locales[j]);
+//                String result = fmt.format(time);
+//                System.out.println(calendars[i] + ": " + result);
+//                if (!result.equals(times[j][i])) {
+//                    fail("calendar: " + calendars[i]);
+//                }
+//            }
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath
new file mode 100644
index 0000000..0215967
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project
new file mode 100644
index 0000000..ce6ab9c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8cf2222
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:17 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..22f322c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:17 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..100098b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: com.ibm.icu; singleton:=true
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Copyright: @COPYRIGHT@
+Export-Package: com.ibm.icu.lang;version="@IMPL_VERSION@",
+ com.ibm.icu.math;version="@IMPL_VERSION@",
+ com.ibm.icu.text;version="@IMPL_VERSION@",
+ com.ibm.icu.util;version="@IMPL_VERSION@",
+ com.ibm.icu.impl;x-internal:=true,
+ com.ibm.icu.impl.data;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.brkitr;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.coll;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.rbnf;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.translit;x-internal:=true
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
+Bundle-ClassPath: icu-jse4.jar,icu-data.jar,.
+Eclipse-ExtensibleAPI: true
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties
new file mode 100644
index 0000000..dfab357
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+               about_files/
+bin.includes = .,\
+               about.html,\
+               about_files/,\
+               plugin.properties,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties
new file mode 100644
index 0000000..c9a9819
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = International Components for Unicode for Java (ICU4J)
+providerName = IBM Corporation
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/AbstractTestLog.java b/src/com/ibm/icu/dev/test/AbstractTestLog.java
new file mode 100644
index 0000000..87081d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/AbstractTestLog.java
@@ -0,0 +1,107 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Date;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.VersionInfo;
+
+public abstract class AbstractTestLog implements TestLog {
+
+    public static boolean dontSkipForVersion = false;
+    public boolean skipIfBeforeICU(int major, int minor, int micro) {
+        if (dontSkipForVersion || VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(major, minor, micro)) > 0) {
+            return false;
+        } 
+        logln("Test skipped before ICU release " + major + "." + minor);
+        return true;
+    }
+
+    
+    /**
+     * Add a message.
+     */
+    public final void log(String message) {
+        msg(message, LOG, true, false);
+    }
+
+    /**
+     * Add a message and newline.
+     */
+    public final void logln(String message) {
+        msg(message, LOG, true, true);
+    }
+
+    /**
+     * Report an error.
+     */
+    public final void err(String message) {
+        msg(message, ERR, true, false);
+    }
+
+    /**
+     * Report an error and newline.
+     */
+    public final void errln(String message) {
+        msg(message, ERR, true, true);
+    }
+
+    /**
+     * Report a warning (generally missing tests or data).
+     */
+    public final void warn(String message) {
+        msg(message, WARN, true, false);
+    }
+
+    /**
+     * Report a warning (generally missing tests or data) and newline.
+     */
+    public final void warnln(String message) {
+        msg(message, WARN, true, true);
+    }
+
+    /**
+     * Vector for logging.  Callers can force the logging system to
+     * not increment the error or warning level by passing false for incCount.
+     *
+     * @param message the message to output.
+     * @param level the message level, either LOG, WARN, or ERR.
+     * @param incCount if true, increments the warning or error count
+     * @param newln if true, forces a newline after the message
+     */
+    public abstract void msg(String message, int level, boolean incCount, boolean newln);
+
+    /**
+     * Not sure if this class is useful.  This lets you log without first testing
+     * if logging is enabled.  The Delegating log will either silently ignore the
+     * message, if the delegate is null, or forward it to the delegate.
+     */
+    public static final class DelegatingLog extends AbstractTestLog {
+        private TestLog delegate;
+
+        public DelegatingLog(TestLog delegate) {
+            this.delegate = delegate;
+        }
+
+        public void msg(String message, int level, boolean incCount, boolean newln) {
+            if (delegate != null) {
+                delegate.msg(message, level, incCount, newln);
+            }
+        }
+    }
+    public boolean isDateAtLeast(int year, int month, int day){
+        Date now = new Date();
+        Calendar c = new GregorianCalendar(year, month, day);
+        Date dt = c.getTime();
+        if(now.compareTo(dt)>=0){
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/ModuleTest.java b/src/com/ibm/icu/dev/test/ModuleTest.java
new file mode 100644
index 0000000..684df98
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ModuleTest.java
@@ -0,0 +1,169 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.TestDataModule.DataModuleFormatError;
+import com.ibm.icu.dev.test.TestDataModule.Factory;
+import com.ibm.icu.dev.test.TestDataModule.TestData;
+
+/**
+ * Ray: An adapter class for TestDataMoule to make it like TestFmwk
+ * 
+ * A convenience extension of TestFmwk for use by data module-driven tests.
+ * 
+ * Tests can implement this if they make extensive use of information in a
+ * TestDataModule.
+ * 
+ * Subclasses can allow for test methods that don't use data from the module by
+ * overriding validateMethod to return true for these methods. Tests are also
+ * free to instantiate their own modules and run from them, though care should
+ * be taken not to interfere with the methods in this class.
+ * 
+ * See CollationTest for an example.
+ */
+public abstract class ModuleTest extends TestFmwk {
+    private TestDataModule m;
+
+    protected TestData t = null;
+
+    private String localeName = null;
+
+    private String baseName = null;
+
+    abstract protected void processModules();
+
+    protected ModuleTest(String baseName, String locName) {
+        localeName = locName;
+        this.baseName = baseName;
+    }
+
+    protected Target getTargets(String targetName) {
+        if (params.doMethods()) {
+            Target target = null;
+            if (!validate()) {
+                return null;
+            }
+            Iterator testData = m.getTestDataIterator();
+            if (testData != null) {
+                try {
+                    Method method = getClass()
+                            .getMethod("processModules", (Class[])null);
+                    while (testData.hasNext()) {
+                        target = new MethodTarget(((TestData) testData.next())
+                                .getName(), method).setNext(target);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new IllegalStateException(e.getMessage());
+                }
+            }
+            return target;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 
+     * TestFmwk calls this before trying to run a suite of tests. The test suite
+     * if valid if a module whose name is the name of this class + "Data" can be
+     * opened. Subclasses can override this if there are different or additional
+     * data required.
+     */
+    protected boolean validate() {
+        try {
+            m = Factory.get(baseName, localeName);
+        } catch (DataModuleFormatError e) {
+            e.printStackTrace();
+            m = null;
+        } catch(MissingResourceException e){
+            warnln("Could not load data: "+e.getMessage());
+        }
+        return m != null;
+    }
+
+    /**
+     * TestFmwk calls this before trying to invoke a test method. The method is
+     * valid if there is test data with the name of this method in the module.
+     * Subclasses can override this to allow for tests that do not require test
+     * data from the module, or if there are different or additional data
+     * required.
+     */
+    protected boolean validateMethod(String methodName) {
+        return openTestData(methodName);
+    }
+
+    /**
+     * Override of TestFmwk method to get the test suite description from the
+     * DESCRIPTION field of the module info.
+     */
+    protected String getDescription() {
+        DataMap info = moduleInfo();
+        if (info != null) {
+            // return info.getString(TestDataModule.DESCRIPTION);
+        }
+        return null;
+    }
+
+    /**
+     * Override of TestFmwk method to get the test method description from the
+     * DESCRIPTION field of the test info.
+     */
+    protected String getMethodDescription(String methodName) {
+        if (openTestData(methodName)) {
+            DataMap info = testInfo();
+            if (info != null) {
+                // return info.getString(TestDataModule.DESCRIPTION);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Open the test data in the module with the given name, and return true if
+     * success. The current test is reset.
+     * 
+     * @throws DataModuleFormatError
+     */
+    protected boolean openTestData(String name) {
+        try {
+            t = m == null ? null : m.getTestData(name);
+        } catch (DataModuleFormatError e) {
+            return false;
+        }
+        return t != null;
+    }
+
+    /**
+     * Get information on this module. Returns null if no module open or no info
+     * for the module.
+     */
+    private DataMap moduleInfo() {
+        return m == null ? null : m.getInfo();
+    }
+
+    /**
+     * Get information on this test. Returns null if no module open or no test
+     * open or not info for this test.
+     */
+    private DataMap testInfo() {
+        return t == null ? null : t.getInfo();
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        if (level == ERR && t != null) {
+           //t.stopIteration();
+        }
+        super.msg(message, level, incCount, newln);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/ResourceModule.java b/src/com/ibm/icu/dev/test/ResourceModule.java
new file mode 100644
index 0000000..1ed1ca0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -0,0 +1,421 @@
+//##header J2SE15
+/*
+ **********************************************************************
+ * Copyright (c) 2006-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Created on 2006-4-21
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.NoSuchElementException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+/**
+ * Represents a collection of test data described in a UResourceBoundle file. 
+ * 
+ * The root of the UResourceBoundle file is a table resource, and it has one 
+ * Info and one TestData sub-resources. The Info describes the data module
+ * itself. The TestData, which is a table resource, has a collection of test 
+ * data.
+ * 
+ * The test data is a named table resource which has Info, Settings, Headers,
+ * and Cases sub-resources. 
+ * 
+ * <pre>
+ * DataModule:table(nofallback){ 
+ *   Info:table {} 
+ *   TestData:table {
+ *     entry_name:table{
+ *       Info:table{}
+ *       Settings:array{}
+ *       Headers:array{}
+ *       Cases:array{}
+ *     }
+ *   } 
+ * }
+ * </pre>
+ * 
+ * The test data is expected to be fed to test code by following sequence 
+ *
+ *   for each setting in Setting{
+ *       prepare the setting
+ *     for each test data in Cases{
+ *       perform the test
+ *     }
+ *   }
+ * 
+ * For detail of the specification, please refer to the code. The code is 
+ * initially ported from "icu4c/source/tools/ctestfw/unicode/tstdtmod.h"
+ * and should be maintained parallelly.
+ * 
+ * @author Raymond Yang
+ */
+class ResourceModule implements TestDataModule {
+    private static final String INFO = "Info";
+//    private static final String DESCRIPTION = "Description";
+//    private static final String LONG_DESCRIPTION = "LongDescription";
+    private static final String TEST_DATA = "TestData";
+    private static final String SETTINGS = "Settings";
+    private static final String HEADER = "Headers";
+    private static final String DATA = "Cases";
+
+    
+    UResourceBundle res;
+    UResourceBundle info;
+    UResourceBundle defaultHeader;
+    UResourceBundle testData;
+    
+    ResourceModule(String baseName, String localeName) throws DataModuleFormatError{
+
+        res = (UResourceBundle) UResourceBundle.getBundleInstance(baseName, localeName);
+        info = getFromTable(res, INFO, UResourceBundle.TABLE);
+        testData = getFromTable(res, TEST_DATA, UResourceBundle.TABLE);
+
+        try {
+            // unfortunately, actually, data can be either ARRAY or STRING
+            defaultHeader = getFromTable(info, HEADER, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+        } catch (MissingResourceException e){
+            defaultHeader = null;
+        }
+    }
+
+    public String getName() {
+        return res.getKey();
+    }
+
+    public DataMap getInfo() {
+        return new UTableResource(info);
+    }
+
+    public TestData getTestData(String testName) throws DataModuleFormatError {
+        return new UResourceTestData(defaultHeader, testData.get(testName));
+    }
+
+    public Iterator getTestDataIterator() {
+        return new IteratorAdapter(testData){
+            protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                return new UResourceTestData(defaultHeader, nextRes);
+            }
+        };
+    }
+
+    /**
+     * To make UResourceBundleIterator works like Iterator
+     * and return various data-driven test object for next() call
+     * 
+     * @author Raymond Yang
+     */
+    private abstract static class IteratorAdapter implements Iterator{
+        private UResourceBundle res;
+        private UResourceBundleIterator itr;
+        private Object preparedNextElement = null;
+        // fix a strange behavior for UResourceBundleIterator for 
+        // UResourceBundle.STRING. It support hasNext(), but does 
+        // not support next() now. 
+        // 
+        // Use the iterated resource itself as the result from next() call
+        private boolean isStrRes = false;
+        private boolean isStrResPrepared = false; // for STRING resouce, we only prepare once
+
+        IteratorAdapter(UResourceBundle theRes) {
+            assert_not (theRes == null);
+            res = theRes;
+            itr = ((ICUResourceBundle)res).getIterator();
+            isStrRes = res.getType() == UResourceBundle.STRING;
+        }
+        
+        public void remove() {
+            // do nothing
+        }
+
+        private boolean hasNextForStrRes(){
+            assert_is (isStrRes);
+            assert_not (!isStrResPrepared && preparedNextElement != null);
+            if (isStrResPrepared && preparedNextElement != null) return true;
+            if (isStrResPrepared && preparedNextElement == null) return false; // only prepare once
+            assert_is (!isStrResPrepared && preparedNextElement == null);
+            
+            try {
+                preparedNextElement = prepareNext(res);
+                assert_not (preparedNextElement == null, "prepareNext() should not return null");
+                isStrResPrepared = true; // toggle the tag
+                return true;
+            } catch (DataModuleFormatError e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                throw new RuntimeException(e.getMessage());
+//#else
+                throw new RuntimeException(e.getMessage(),e);
+//#endif
+            }            
+        }
+        public boolean hasNext() {
+            if (isStrRes) return hasNextForStrRes();
+            
+            if (preparedNextElement != null) return true;
+            UResourceBundle t = null;
+            if (itr.hasNext()) {
+                // Notice, other RuntimeException may be throwed
+                t = itr.next();
+            } else {
+                return false;
+            }
+
+            try {
+                preparedNextElement = prepareNext(t);
+                assert_not (preparedNextElement == null, "prepareNext() should not return null");
+                return true;
+            } catch (DataModuleFormatError e) {
+                // Sadly, we throw RuntimeException also
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                throw new RuntimeException(e.getMessage());
+//#else
+                throw new RuntimeException(e.getMessage(),e);
+//#endif
+            }
+        }
+
+        public Object next(){
+            if (hasNext()) {
+                Object t = preparedNextElement;
+                preparedNextElement = null;
+                return t;
+            } else {
+                throw new NoSuchElementException();
+            }
+        }
+        /**
+         * To prepare data-driven test object for next() call, should not return null
+         */
+        abstract protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError;
+    }
+    
+    
+    /**
+     * Avoid use Java 1.4 language new assert keyword 
+     */
+    static void assert_is(boolean eq, String msg){
+        if (!eq) throw new Error("test code itself has error: " + msg);
+    }
+    static void assert_is(boolean eq){
+        if (!eq) throw new Error("test code itself has error.");
+    }
+    static void assert_not(boolean eq, String msg){
+        assert_is(!eq, msg);
+    }
+    static void assert_not(boolean eq){
+        assert_is(!eq);
+    }
+            
+    /**
+     * Internal helper function to get resource with following add-on 
+     * 
+     * 1. Assert the returned resource is never null.
+     * 2. Check the type of resource. 
+     * 
+     * The UResourceTypeMismatchException for various get() method is a 
+     * RuntimeException which can be silently bypassed. This behavior is a 
+     * trouble. One purpose of the class is to enforce format checking for 
+     * resource file. We don't want to the exceptions are silently bypassed 
+     * and spreaded to our customer's code. 
+     * 
+     * Notice, the MissingResourceException for get() method is also a
+     * RuntimeException. The caller functions should avoid sepread the execption
+     * silently also. The behavior is modified because some resource are 
+     * optional and can be missed.
+     */
+    static UResourceBundle getFromTable(UResourceBundle res, String key, int expResType) throws DataModuleFormatError{
+        return getFromTable(res, key, new int[]{expResType});
+    }
+    
+    static UResourceBundle getFromTable(UResourceBundle res, String key, int[] expResTypes) throws DataModuleFormatError{
+        assert_is (res != null && key != null && res.getType() == UResourceBundle.TABLE);
+        UResourceBundle t = res.get(key); 
+      
+        assert_not (t ==null);
+        int type = t.getType();
+        Arrays.sort(expResTypes);
+        if (Arrays.binarySearch(expResTypes, type) >= 0) {
+            return t;
+        } else {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            throw new DataModuleFormatError("Actual type " + t.getType() + " != expected types " + expResTypes + ".");
+//#else
+            throw new DataModuleFormatError(new UResourceTypeMismatchException("Actual type " + t.getType() + " != expected types " + expResTypes + "."));
+//#endif
+        }
+    }
+    
+    /**
+     * Unfortunately, UResourceBundle is unable to treat one string as string array.
+     * This function return a String[] from UResourceBundle, regardless it is an array or a string 
+     */
+    static String[] getStringArrayHelper(UResourceBundle res, String key) throws DataModuleFormatError{
+        UResourceBundle t = getFromTable(res, key, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+        return getStringArrayHelper(t);
+    }
+
+    static String[] getStringArrayHelper(UResourceBundle res) throws DataModuleFormatError{
+        try{
+            int type = res.getType();
+            switch (type) {
+            case UResourceBundle.ARRAY:
+                return res.getStringArray();
+            case UResourceBundle.STRING:
+                return new String[]{res.getString()};
+            default:
+                throw new UResourceTypeMismatchException("Only accept ARRAY and STRING types.");
+            }
+        } catch (UResourceTypeMismatchException e){
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            throw new DataModuleFormatError(e.getMessage());
+//#else
+            throw new DataModuleFormatError(e);
+//#endif
+        }
+    }
+    
+    public static void main(String[] args){
+        try {
+            TestDataModule m = new ResourceModule("com/ibm/icu/dev/data/testdata/","DataDrivenCollationTest");
+        System.out.println("hello: " + m.getName());
+        m.getInfo();
+        m.getTestDataIterator();
+        } catch (DataModuleFormatError e) {
+            // TODO Auto-generated catch block
+            System.out.println("???");
+            e.printStackTrace();
+        }
+    }
+
+    private static class UResourceTestData implements TestData{
+        private UResourceBundle res;
+        private UResourceBundle info;
+        private UResourceBundle settings; 
+        private UResourceBundle header;
+        private UResourceBundle data;
+
+        UResourceTestData(UResourceBundle defaultHeader, UResourceBundle theRes) throws DataModuleFormatError{
+            
+            assert_is (theRes != null && theRes.getType() == UResourceBundle.TABLE);
+            res = theRes;
+            // unfortunately, actually, data can be either ARRAY or STRING
+            data = getFromTable(res, DATA, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+       
+
+            
+            try {
+                // unfortunately, actually, data can be either ARRAY or STRING
+                header = getFromTable(res, HEADER, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+            } catch (MissingResourceException e){
+                if (defaultHeader == null) {
+                    throw new DataModuleFormatError("Unable to find a header for test data '" + res.getKey() + "' and no default header exist.");
+                } else {
+                    header = defaultHeader;
+                }
+            }
+         try{
+                settings = getFromTable(res, SETTINGS, UResourceBundle.ARRAY);
+                info = getFromTable(res, INFO, UResourceBundle.TABLE);
+            } catch (MissingResourceException e){
+                // do nothing, left them null;
+                settings = data;
+            }
+        }
+        
+        public String getName() {
+            return res.getKey();
+        }
+
+        public DataMap getInfo() {
+            return info == null ? null : new UTableResource(info);
+        }
+
+        public Iterator getSettingsIterator() {
+            assert_is (settings.getType() == UResourceBundle.ARRAY);
+            return new IteratorAdapter(settings){
+                protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                    return new UTableResource(nextRes);
+                }
+            };
+        }
+
+        public Iterator getDataIterator() {
+            // unfortunately,
+            assert_is (data.getType() == UResourceBundle.ARRAY 
+                 || data.getType() == UResourceBundle.STRING);
+            return new IteratorAdapter(data){
+                protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                    return new UArrayResource(header, nextRes);
+                }
+            };
+        }
+    }
+        
+    private static class UTableResource implements DataMap{
+        private UResourceBundle res;
+
+        UTableResource(UResourceBundle theRes){
+            res = theRes;
+        }
+        public String getString(String key) {
+            String t;
+            try{
+                t = res.getString(key);
+            } catch (MissingResourceException e){
+                t = null;
+            }
+            return t;
+        }
+         public Object getObject(String key) {
+            
+            return res.get(key);
+        }
+    }
+    
+    private static class UArrayResource implements DataMap{
+        private Map theMap; 
+        UArrayResource(UResourceBundle theHeader, UResourceBundle theData) throws DataModuleFormatError{
+            assert_is (theHeader != null && theData != null);
+            String[] header;
+         
+            header = getStringArrayHelper(theHeader);
+            if (theData.getSize() != header.length) 
+                throw new DataModuleFormatError("The count of Header and Data is mismatch.");
+            theMap = new HashMap();
+            for (int i = 0; i < header.length; i++) {
+                if(theData.getType()==UResourceBundle.ARRAY){
+                    theMap.put(header[i], theData.get(i));
+                }else if(theData.getType()==UResourceBundle.STRING){
+                    theMap.put(header[i], theData.getString());
+                }else{
+                    throw new DataModuleFormatError("Did not get the expected data!");                   
+                }
+            }
+            
+        }
+        
+        public String getString(String key) {
+            Object o = theMap.get(key);
+            UResourceBundle rb;
+            if(o instanceof UResourceBundle) {
+                // unpack ResourceBundle strings
+                rb = (UResourceBundle)o;
+                return rb.getString();
+            }
+            return (String)o;
+        }
+        public Object getObject(String key) {
+            return theMap.get(key);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestAll.java b/src/com/ibm/icu/dev/test/TestAll.java
new file mode 100644
index 0000000..4343097
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestAll.java
@@ -0,0 +1,54 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.format.TestAll",
+                  "com.ibm.icu.dev.test.compression.TestAll",
+                  "com.ibm.icu.dev.test.rbbi.TestAll",
+                  "com.ibm.icu.dev.test.translit.TestAll",
+                  "com.ibm.icu.dev.test.search.SearchTest", // not a group
+                  "com.ibm.icu.dev.test.collator.TestAll",
+                  "com.ibm.icu.dev.test.shaping.ArabicShapingRegTest",
+                  "com.ibm.icu.dev.test.calendar.TestAll",
+                  "com.ibm.icu.dev.test.timezone.TestAll",
+                  "com.ibm.icu.dev.test.lang.TestAll",
+                  "com.ibm.icu.dev.test.normalizer.TestAll",
+                  "com.ibm.icu.dev.test.util.TestAll",
+                  "com.ibm.icu.dev.test.iterator.TestUCharacterIterator", // not a group
+                  "com.ibm.icu.dev.test.bigdec.DiagBigDecimal", // not a group
+                  "com.ibm.icu.dev.test.impl.TestAll",
+                  "com.ibm.icu.dev.test.stringprep.TestAll",
+                  "com.ibm.icu.dev.test.timescale.TestAll",
+                  "com.ibm.icu.dev.test.charsetdet.TestCharsetDetector",
+                  "com.ibm.icu.dev.test.bidi.TestAll",
+                  "com.ibm.icu.dev.test.duration.TestAll",
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                  "com.ibm.icu.dev.test.charset.TestAll",
+                  "com.ibm.icu.dev.test.serializable.SerializableTest" // *is* a group
+//#endif
+              },
+              "All tests in ICU");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "ICU";
+}
diff --git a/src/com/ibm/icu/dev/test/TestBoilerplate.java b/src/com/ibm/icu/dev/test/TestBoilerplate.java
new file mode 100644
index 0000000..abc8126
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestBoilerplate.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * To use, override the abstract and the protected methods as necessary.
+ * Tests boilerplate invariants:
+ * <br>a.equals(a)
+ * <br>!a.equals(null)
+ * <br>if a.equals(b) then 
+ * <br>(1) a.hashCode() == b.hashCode  // note: the reverse is not necessarily true.
+ * <br>(2) a functions in all aspects as equivalent to b
+ * <br>(3) b.equals(a)
+ * <br>if b = clone(a)
+ * <br>(1) b.equals(a), and the above checks
+ * <br>(2) if mutable(a), then a.clone() != a // note: the reverse is not necessarily true.
+ * @author Davis
+ */
+public abstract class TestBoilerplate extends TestFmwk {
+
+    public final void TestMain() throws Exception {
+        List list = new LinkedList();
+        while (_addTestObject(list)) {
+        }
+        Object[] testArray = list.toArray();
+        for (int i = 0; i < testArray.length; ++i) {
+            //logln("Testing " + i);
+            Object a = testArray[i];
+            int aHash = a.hashCode();
+            if (a.equals(null)) {
+                errln("Equality/Null invariant fails: " + i);
+            }
+            if (!a.equals(a)) {
+                errln("Self-Equality invariant fails: " + i);
+            }
+            Object b;                
+            if (_canClone(a)) {
+                b = _clone(a);
+                if (b == a) {
+                    if (_isMutable(a)) {
+                        errln("Clone/Mutability invariant fails: " + i);
+                    }
+                } else {
+                    if (!a.equals(b)) {
+                        errln("Clone/Equality invariant fails: " + i);
+                    }
+                }
+                _checkEquals(i, -1, a, aHash, b);
+            }
+            for (int j = i; j < testArray.length; ++j) {
+                b = testArray[j];
+                if (a.equals(b)) _checkEquals(i, j, a, aHash, b);
+            }
+        }
+    }
+
+    private void _checkEquals(int i, int j, Object a, int aHash, Object b) {
+        int bHash = b.hashCode();
+        if (!b.equals(a)) errln("Equality/Symmetry",i, j);
+        if (aHash != bHash) errln("Equality/Hash",i, j);
+        if (a != b && !_hasSameBehavior(a,b)) {
+            errln("Equality/Equivalence",i, j);
+        }
+    }
+
+    private void errln(String title, int i, int j) {
+        if (j < 0) errln("Clone/" + title + "invariant fails: " + i);
+        else errln(title + "invariant fails: " + i + "," + j);
+    }
+
+    /**
+     * Must be overridden to check whether a and be behave the same
+     */
+    protected abstract boolean _hasSameBehavior(Object a, Object b);
+
+    /**
+     * This method will be called multiple times until false is returned.
+     * The results should be a mixture of different objects of the same
+     * type: some equal and most not equal.
+     * The subclasser controls how many are produced (recommend about 
+     * 100, based on the size of the objects and how costly they are
+     * to run this test on. The running time grows with the square of the
+     * count.
+     * NOTE: this method will only be called if the objects test as equal.
+     */
+    protected abstract boolean _addTestObject(List c);
+    /**
+     * Override if the tested objects are mutable.
+     * <br>Since Java doesn't tell us, we need a function to tell if so.
+     * The default is true, so must be overridden if not.
+     */
+    protected boolean _isMutable(Object a) {
+        return true;
+    }
+    /**
+     * Override if the tested objects can be cloned.
+     */
+    protected boolean _canClone(Object a) {
+        return true;
+    }
+    /**
+     * Produce a clone of the object. Tries two methods
+     * (a) clone
+     * (b) constructor
+     * Must be overridden if _canClone returns true and
+     * the above methods don't work.
+     * @param a
+     * @return clone
+     */
+    protected Object _clone(Object a) throws Exception {
+        Class aClass = a.getClass();
+        try {
+            Method cloner = aClass.getMethod("clone", (Class[])null);
+            return cloner.invoke(a,(Object[])null);
+        } catch (NoSuchMethodException e) {
+            Constructor constructor = aClass.getConstructor(new Class[] {aClass});
+            return constructor.newInstance(new Object[]{a});
+        }
+    }
+    
+    /* Utilities */
+    public static boolean verifySetsIdentical(AbstractTestLog here, UnicodeSet set1, UnicodeSet set2) {
+        if (set1.equals(set2)) return true;
+        here.errln("Sets differ:");
+        here.errln("UnicodeMap - HashMap");
+        here.errln(new UnicodeSet(set1).removeAll(set2).toPattern(true));
+        here.errln("HashMap - UnicodeMap");
+        here.errln(new UnicodeSet(set2).removeAll(set1).toPattern(true));
+        return false;
+    }
+
+    public static boolean verifySetsIdentical(AbstractTestLog here, Set values1, Set values2) {
+        if (values1.equals(values2)) return true;
+        Set temp;
+        here.errln("Values differ:");
+        here.errln("UnicodeMap - HashMap");
+        temp = new TreeSet(values1);
+        temp.removeAll(values2);
+        here.errln(show(temp));
+        here.errln("HashMap - UnicodeMap");
+        temp = new TreeSet(values2);
+        temp.removeAll(values1);
+        here.errln(show(temp));
+        return false;
+    }
+    
+    public static String show(Map m) {
+        StringBuffer buffer = new StringBuffer();
+        for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            buffer.append(key + "=>" + m.get(key) + "\r\n");
+        }
+        return buffer.toString();
+    }
+    
+    public static UnicodeSet getSet(Map m, Object value) {
+        UnicodeSet result = new UnicodeSet();
+        for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            Object val = m.get(key);
+            if (!val.equals(value)) continue;
+            result.add(((Integer)key).intValue());
+        }
+        return result;
+    }
+    
+    public static String show(Collection c) {
+        StringBuffer buffer = new StringBuffer();
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            buffer.append(it.next() + "\r\n");
+        }
+        return buffer.toString();
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/TestDataModule.java b/src/com/ibm/icu/dev/test/TestDataModule.java
new file mode 100644
index 0000000..648bd0d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -0,0 +1,111 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Iterator;
+
+/**
+ * Represents a collection of test data described in a file.
+ * 
+ */
+public interface TestDataModule {
+    /**
+     * Return the name of this test data module.
+     */
+    public String getName();
+
+    /**
+     * Get additional data related to the module, e.g. DESCRIPTION,
+     * global settings.  Might be null.
+     */
+    public DataMap getInfo();
+
+    /**
+     * Returns the TestData corresponding to name, or null if name not
+     * found in this module.  Throw error if name is not found.  
+     * @throws DataModuleFormatError
+     */
+    public TestData getTestData(String name) throws DataModuleFormatError;
+
+    /**
+     * @return Iterator<TestData>
+     */
+    public Iterator getTestDataIterator();
+
+    public static class Factory{
+
+        static final TestDataModule get(String baseName, String localeName) throws DataModuleFormatError {
+            return new ResourceModule(baseName, localeName);
+        }
+    }
+
+    public static class DataModuleFormatError extends Exception{
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 4312521272388482529L;
+        public DataModuleFormatError(String msg){
+            super(msg);
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        public DataModuleFormatError(String msg, Throwable cause){
+            super(msg, cause);
+        }
+        public DataModuleFormatError(Throwable cause) {
+            super(cause);
+        }
+//#endif
+    }
+    
+    /**
+     * Represents a single test in the module.
+     */
+    public static interface TestData {
+        public String getName();
+        /**
+         * Get additional data related to the test data, e.g. DESCRIPTION,
+         * global settings.  Might be null.
+         */
+        public DataMap getInfo();
+        /**
+         * @return Iterator<DataMap>
+         */
+        public Iterator getSettingsIterator();
+        /**
+         * @return Iterator<DataMap>
+         */
+        public Iterator getDataIterator();
+    }
+
+    /**
+     * Map-like interface for accessing key-value pairs by key.
+     * If the vaule is not found by given key, return null. 
+     * The behavior is analogous the get() method of the Map interface.
+     * 
+     * @author Raymond Yang
+     */
+    public interface DataMap {
+//    public abstract boolean    isDefined(String key);
+//
+    public abstract Object     getObject(String key);
+    public abstract String     getString(String key);
+//    public abstract char       getChar(String key);
+//    public abstract int        getInt(String key);
+//    public abstract byte       getByte(String key);
+//    public abstract boolean    getBoolean(String key);
+//
+//    public abstract Object[]   getObjectArray(String key);
+//    public abstract String[]   getStringArray(String key);
+//    public abstract char[]     getCharArray(String key);
+//    public abstract int[]      getIntArray(String key);
+//    public abstract byte[]     getByteArray(String key);
+//    public abstract boolean[]  getBooleanArray(String key);
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/test/TestFmwk.java b/src/com/ibm/icu/dev/test/TestFmwk.java
new file mode 100644
index 0000000..ad05a9d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -0,0 +1,1866 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Random;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//## import com.ibm.icu.impl.Utility;
+//#endif
+/**
+ * TestFmwk is a base class for tests that can be run conveniently from the
+ * command line as well as under the Java test harness.
+ * <p>
+ * Sub-classes implement a set of methods named Test <something>. Each of these
+ * methods performs some test. Test methods should indicate errors by calling
+ * either err or errln. This will increment the errorCount field and may
+ * optionally print a message to the log. Debugging information may also be
+ * added to the log via the log and logln methods. These methods will add their
+ * arguments to the log only if the test is being run in verbose mode.
+ */
+public class TestFmwk extends AbstractTestLog {
+    /**
+     * The default time zone for all of our tests. Used in Target.run();
+     */
+    private final static TimeZone defaultTimeZone = TimeZone.getTimeZone("PST");
+
+    /**
+     * The default locale used for all of our tests. Used in Target.run();
+     */
+    private final static Locale defaultLocale = Locale.US;
+
+    public static final class TestFmwkException extends Exception {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -3051148210247229194L;
+
+        TestFmwkException(String msg) {
+            super(msg);
+        }
+    }
+    protected void handleException(Throwable e){
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    Throwable ex = null;
+//#else
+        Throwable ex = e.getCause();
+//#endif
+        if(ex==null){
+            ex = e;
+        }
+        if(ex instanceof ExceptionInInitializerError){
+            ex = ((ExceptionInInitializerError)ex).getException();
+        }
+        String msg = ex.getMessage();
+        if(msg==null){
+            msg = "";
+        }
+        //System.err.println("TF handleException msg: " + msg);
+        if (ex instanceof MissingResourceException || ex instanceof NoClassDefFoundError || msg.indexOf("java.util.MissingResourceException")>=0) {
+            if (params.warnings || params.nodata) {
+                warnln(msg);
+            } else if (params.nothrow) {
+                errln(msg);
+                ex.printStackTrace();
+            } else {
+                ex.printStackTrace();
+                throw new RuntimeException(msg);
+            }
+        } else {
+            if (params.nothrow) {
+                errln(msg);
+                ex.printStackTrace();
+            } else {
+                errln(msg);
+                ex.printStackTrace();
+                throw new RuntimeException(msg);
+            }
+        }
+    }
+    // use this instead of new random so we get a consistent seed
+    // for our tests
+    protected Random createRandom() {
+        return new Random(params.seed);
+    }
+
+    /**
+     * A test that has no test methods itself, but instead runs other tests.
+     * 
+     * This overrides methods are getTargets and getSubtest from TestFmwk.
+     * 
+     * If you want the default behavior, pass an array of class names and an
+     * optional description to the constructor. The named classes must extend
+     * TestFmwk. If a provided name doesn't include a ".", package name is
+     * prefixed to it (the package of the current test is used if none was
+     * provided in the constructor). The resulting full name is used to
+     * instantiate an instance of the class using the default constructor.
+     * 
+     * Class names are resolved to classes when getTargets or getSubtest is
+     * called. This allows instances of TestGroup to be compiled and run without
+     * all the targets they would normally invoke being available.
+     */
+    public static abstract class TestGroup extends TestFmwk {
+        private String defaultPackage;
+        private String[] names;
+        private String description;
+
+        private Class[] tests; // deferred init
+
+        /**
+         * Constructor that takes a default package name and a list of class
+         * names. Adopts and modifies the classname list
+         */
+        protected TestGroup(String defaultPackage, String[] classnames,
+                String description) {
+            if (classnames == null) {
+                throw new IllegalStateException("classnames must not be null");
+            }
+
+            if (defaultPackage == null) {
+                defaultPackage = getClass().getPackage().getName();
+            }
+            defaultPackage = defaultPackage + ".";
+
+            this.defaultPackage = defaultPackage;
+            this.names = classnames;
+            this.description = description;
+        }
+
+        /**
+         * Constructor that takes a list of class names and a description, and
+         * uses the package for this class as the default package.
+         */
+        protected TestGroup(String[] classnames, String description) {
+            this(null, classnames, description);
+        }
+
+        /**
+         * Constructor that takes a list of class names, and uses the package
+         * for this class as the default package.
+         */
+        protected TestGroup(String[] classnames) {
+            this(null, classnames, null);
+        }
+
+        protected String getDescription() {
+            return description;
+        }
+
+        protected Target getTargets(String targetName) {
+            Target target = null;
+            if (targetName != null) {
+                finishInit(); // hmmm, want to get subtest without initializing
+                              // all tests
+
+                try {
+                    TestFmwk test = getSubtest(targetName);
+                    if (test != null) {
+                        target = test.new ClassTarget();
+                    } else {
+                        target = this.new Target(targetName);
+                    }
+                } catch (TestFmwkException e) {
+                    target = this.new Target(targetName);
+                }
+            } else if (params.doRecurse()) {
+                finishInit();
+                boolean groupOnly = params.doRecurseGroupsOnly();
+                for (int i = names.length; --i >= 0;) {
+                    Target newTarget = null;
+                    Class cls = tests[i];
+                    if (cls == null) { // hack no warning for missing tests
+                        if (params.warnings) {
+                            continue;
+                        }
+                        newTarget = this.new Target(names[i]);
+                    } else {
+                        TestFmwk test = getSubtest(i, groupOnly);
+                        if (test != null) {
+                            newTarget = test.new ClassTarget();
+                        } else {
+                            if (groupOnly) {
+                                newTarget = this.new EmptyTarget(names[i]);
+                            } else {
+                                newTarget = this.new Target(names[i]);
+                            }
+                        }
+                    }
+                    if (newTarget != null) {
+                        newTarget.setNext(target);
+                        target = newTarget;
+                    }
+                }
+            }
+
+            return target;
+        }
+        protected TestFmwk getSubtest(String testName) throws TestFmwkException {
+            finishInit();
+
+            for (int i = 0; i < names.length; ++i) {
+                if (names[i].equalsIgnoreCase(testName)) { // allow
+                                                           // case-insensitive
+                                                           // matching
+                    return getSubtest(i, false);
+                }
+            }
+            throw new TestFmwkException(testName);
+        }
+
+        private TestFmwk getSubtest(int i, boolean groupOnly) {
+            Class cls = tests[i];
+            if (cls != null) {
+                if (groupOnly && !TestGroup.class.isAssignableFrom(cls)) {
+                    return null;
+                }
+
+                try {
+                    TestFmwk subtest = (TestFmwk) cls.newInstance();
+                    subtest.params = params;
+                    return subtest;
+                } catch (InstantiationException e) {
+                    throw new IllegalStateException(e.getMessage());
+                } catch (IllegalAccessException e) {
+                    throw new IllegalStateException(e.getMessage());
+                }
+            }
+            return null;
+        }
+
+        private void finishInit() {
+            if (tests == null) {
+                tests = new Class[names.length];
+
+                for (int i = 0; i < names.length; ++i) {
+                    String name = names[i];
+                    if (name.indexOf('.') == -1) {
+                        name = defaultPackage + name;
+                    }
+                    try {
+                        Class cls = Class.forName(name);
+                        if (!TestFmwk.class.isAssignableFrom(cls)) {
+                            throw new IllegalStateException("class " + name
+                                    + " does not extend TestFmwk");
+                        }
+
+                        tests[i] = cls;
+                        names[i] = getClassTargetName(cls);
+                    } catch (ClassNotFoundException e) {
+                        // leave tests[i] null and name as classname
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * The default target is invalid.
+     */
+    public class Target {
+        private Target next;
+        public final String name;
+
+        public Target(String name) {
+            this.name = name;
+        }
+
+        public Target setNext(Target next) {
+            this.next = next;
+            return this;
+        }
+
+        public Target getNext() {
+            return next;
+        }
+
+        public Target append(Target targets) {
+            Target t = this;
+            while(t.next != null) {
+                t = t.next;
+            }
+            t.next = targets;
+            return this;
+        }
+
+        public void run() throws Exception {
+            int f = filter();
+            if (f == -1) {
+                ++params.invalidCount;
+            } else {
+                Locale.setDefault(defaultLocale);
+                TimeZone.setDefault(defaultTimeZone);
+
+                if (!validate()) {
+                    params.writeTestInvalid(name, params.nodata);
+                } else {
+                    params.push(name, getDescription(), f == 1);
+                    execute();
+                    params.pop();
+                }
+            }
+        }
+
+        protected int filter() {
+            return params.filter(name);
+        }
+
+        protected boolean validate() {
+            return false;
+        }
+
+        protected String getDescription() {
+            return null;
+        }
+
+        protected void execute() throws Exception{
+        }
+    }
+
+    public class EmptyTarget extends Target {
+        public EmptyTarget(String name) {
+            super(name);
+        }
+
+        protected boolean validate() {
+            return true;
+        }
+    }
+
+    public class MethodTarget extends Target {
+        private Method testMethod;
+
+        public MethodTarget(String name, Method method) {
+            super(name);
+            testMethod = method;
+        }
+
+        protected boolean validate() {
+            return testMethod != null && validateMethod(name);
+        }
+
+        protected String getDescription() {
+            return getMethodDescription(name);
+        }
+
+        protected void execute() throws Exception{
+            if (params.inDocMode()) {
+                // nothing to execute
+            } else if (!params.stack.included) {
+                ++params.invalidCount;
+            } else {
+                final Object[] NO_ARGS = new Object[0];
+                try {
+                    ++params.testCount;
+                    init();
+                    testMethod.invoke(TestFmwk.this, NO_ARGS);
+                } catch (IllegalAccessException e) {
+                    errln("Can't access test method " + testMethod.getName());
+                }catch (ExceptionInInitializerError e){
+                    handleException(e);
+                } catch (InvocationTargetException e) {
+                    //e.printStackTrace();
+                    handleException(e);
+                }catch (MissingResourceException e) {
+                    handleException(e);
+                }catch (NoClassDefFoundError e) {
+                    handleException(e);
+                }catch (Exception e){
+                    /*errln("Encountered: "+ e.toString());
+                    e.printStackTrace(System.err);
+                    */
+                    handleException(e);
+                }
+            }
+            // If non-exhaustive, check if the method target
+            // takes excessive time.
+            if (params.inclusion <= 5) {
+                double deltaSec = (double)(System.currentTimeMillis() - params.stack.millis)/1000;
+                if (deltaSec > params.maxTargetSec) {
+                    if (params.timeLog == null) {
+                        params.timeLog = new StringBuffer();
+                    }
+                    params.stack.appendPath(params.timeLog);
+                    params.timeLog.append(" (" + deltaSec + "s" + ")\n");
+                }
+            }
+        }
+
+        protected String getStackTrace(InvocationTargetException e) {
+            ByteArrayOutputStream bs = new ByteArrayOutputStream();
+            PrintStream ps = new PrintStream(bs);
+            e.getTargetException().printStackTrace(ps);
+            return bs.toString();
+        }
+    }
+
+    public class ClassTarget extends Target {
+        String targetName;
+
+        public ClassTarget() {
+            this(null);
+        }
+
+        public ClassTarget(String targetName) {
+            super(getClassTargetName(TestFmwk.this.getClass()));
+            this.targetName = targetName;
+        }
+
+        protected boolean validate() {
+            return TestFmwk.this.validate();
+        }
+
+        protected String getDescription() {
+            return TestFmwk.this.getDescription();
+        }
+
+        protected void execute() throws Exception {
+            params.indentLevel++;
+            Target target = randomize(getTargets(targetName));
+            while (target != null) {
+                target.run();
+                target = target.next;
+            }
+            params.indentLevel--;
+        }
+
+        private Target randomize(Target t) {
+            if (t != null && t.getNext() != null) {
+                ArrayList list = new ArrayList();
+                while (t != null) {
+                    list.add(t);
+                    t = t.getNext();
+                }
+
+                Target[] arr = (Target[]) list.toArray(new Target[list.size()]);
+
+                if (true) { // todo - add to params?
+                    // different jvms return class methods in different orders,
+                    // so we sort them (always, and then randomize them, so that
+                    // forcing a seed will also work across jvms).
+                    Arrays.sort(arr, new Comparator() {
+                        public int compare(Object lhs, Object rhs) {
+                            // sort in reverse order, later we link up in
+                            // forward order
+                            return ((Target) rhs).name
+                                    .compareTo(((Target) lhs).name);
+                        }
+                    });
+
+                    // t is null to start, ends up as first element
+                    // (arr[arr.length-1])
+                    for (int i = 0; i < arr.length; ++i) {
+                        t = arr[i].setNext(t); // relink in forward order
+                    }
+                }
+
+                if (params.random != null) {
+                    t = null; // reset t to null
+                    Random r = params.random;
+                    for (int i = arr.length; --i >= 1;) {
+                        int x = r.nextInt(i + 1);
+                        t = arr[x].setNext(t);
+                        arr[x] = arr[i];
+                    }
+
+                    t = arr[0].setNext(t); // new first element
+                }
+            }
+
+            return t;
+        }
+    }
+
+    //------------------------------------------------------------------------
+    // Everything below here is boilerplate code that makes it possible
+    // to add a new test by simply adding a function to an existing class
+    //------------------------------------------------------------------------
+
+    protected TestFmwk() {
+    }
+    
+    protected void init() throws Exception{
+    }
+    
+    /**
+     * Parse arguments into a TestParams object and a collection of target
+     * paths. If there was an error parsing the TestParams, print usage and exit
+     * with -1. Otherwise, call resolveTarget(TestParams, String) for each path,
+     * and run the returned target. After the last test returns, if prompt is
+     * set, prompt and wait for input from stdin. Finally, exit with number of
+     * errors.
+     * 
+     * This method never returns, since it always exits with System.exit();
+     */
+    public void run(String[] args) {
+        System.exit(run(args, new PrintWriter(System.out)));
+     }
+    
+    /**
+     * Like run(String[]) except this allows you to specify the error log.
+     * Unlike run(String[]) this returns the error code as a result instead of
+     * calling System.exit().
+     */
+    public int run(String[] args, PrintWriter log) {
+        boolean prompt = false;
+        int wx = 0;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-p") || arg.equals("-prompt")) {
+                prompt = true;
+            } else {
+                if (wx < i) {
+                    args[wx] = arg;
+                }
+                wx++;
+            }
+        }
+        while (wx < args.length) {
+            args[wx++] = null;
+        }
+        
+        TestParams localParams = TestParams.create(args, log);
+        if (localParams == null) {
+            return -1;
+        }
+        
+        int errorCount = runTests(localParams, args);
+        
+        if (localParams.seed != 0) {
+            localParams.log.println("-random:" + localParams.seed);
+            localParams.log.flush();
+        }
+
+        if (localParams.errorSummary != null && localParams.errorSummary.length() > 0) {
+            localParams.log.println("\nError summary:");
+            localParams.log.println(localParams.errorSummary.toString());
+        }
+
+        if (localParams.timeLog != null && localParams.timeLog.length() > 0) {
+            localParams.log.println("\nTest cases taking excessive time (>" +
+                    localParams.maxTargetSec + "s):");
+            localParams.log.println(localParams.timeLog.toString());
+        }
+
+        if (prompt) {
+            System.out.println("Hit RETURN to exit...");
+            System.out.flush();
+            try {
+                System.in.read();
+            } catch (IOException e) {
+                localParams.log.println("Exception: " + e.toString() + e.getMessage());
+            }
+        }
+
+        return errorCount;
+    }
+
+    public int runTests(TestParams _params, String[] tests) {
+        int ec = 0;
+        
+        StringBuffer summary = null;
+        try {
+            if (tests.length == 0 || tests[0] == null) { // no args
+                _params.init();
+                resolveTarget(_params).run();
+                ec = _params.errorCount;
+            } else {
+                for (int i = 0; i < tests.length ; ++i) {
+                    if (tests[i] == null) continue;
+                    
+                    if (i > 0) {
+                        _params.log.println();
+                    }
+
+                    _params.init();
+                    resolveTarget(_params, tests[i]).run();
+                    ec += _params.errorCount;
+                    
+                    if (_params.errorSummary != null && _params.errorSummary.length() > 0) {
+                        if (summary == null) {
+                            summary = new StringBuffer();
+                        }
+                        summary.append("\nTest Root: " + tests[i] + "\n");
+                        summary.append(_params.errorSummary());
+                    }
+                }
+                _params.errorSummary = summary;
+            }
+        } catch (Exception e) {
+            e.printStackTrace(_params.log);
+            _params.log.println(e.getMessage());
+            _params.log.println("encountered exception, exiting");
+        }
+        
+        return ec;
+    }
+    
+    /**
+     * Return a ClassTarget for this test. Params is set on this test.
+     */
+    public Target resolveTarget(TestParams paramsArg) {
+        this.params = paramsArg;
+        return new ClassTarget();
+    }
+
+    /**
+     * Resolve a path from this test to a target. If this test has subtests, and
+     * the path contains '/', the portion before the '/' is resolved to a
+     * subtest, until the path is consumed or the test has no subtests. Returns
+     * a ClassTarget created using the resolved test and remaining path (which
+     * ought to be null or a method name). Params is set on the target's test.
+     */
+    public Target resolveTarget(TestParams paramsArg, String targetPath) {
+        TestFmwk test = this;
+        test.params = paramsArg;
+
+        if (targetPath != null) {
+            if (targetPath.length() == 0) {
+                targetPath = null;
+            } else {
+                int p = 0;
+                int e = targetPath.length();
+
+                // trim all leading and trailing '/'
+                while (targetPath.charAt(p) == '/') {
+                    ++p;
+                }
+                while (e > p && targetPath.charAt(e - 1) == '/') {
+                    --e;
+                }
+                if (p > 0 || e < targetPath.length()) {
+                    targetPath = targetPath.substring(p, e - p);
+                    p = 0;
+                    e = targetPath.length();
+                }
+
+                try {
+                    for (;;) {
+                        int n = targetPath.indexOf('/');
+                        String prefix = n == -1 ? targetPath : targetPath
+                                .substring(0, n);
+                        TestFmwk subtest = test.getSubtest(prefix);
+
+                        if (subtest == null) {
+                            break;
+                        }
+
+                        test = subtest;
+
+                        if (n == -1) {
+                            targetPath = null;
+                            break;
+                        }
+
+                        targetPath = targetPath.substring(n + 1);
+                    }
+                } catch (TestFmwkException ex) {
+                    return test.new Target(targetPath);
+                }
+            }
+        }
+
+        return test.new ClassTarget(targetPath);
+    }
+
+    /**
+     * Return true if we can run this test (allows test to inspect jvm,
+     * environment, params before running)
+     */
+    protected boolean validate() {
+        return true;
+    }
+
+    /**
+     * Return the targets for this test. If targetName is null, return all
+     * targets, otherwise return a target for just that name. The returned
+     * target can be null.
+     * 
+     * The default implementation returns a MethodTarget for each public method
+     * of the object's class whose name starts with "Test" or "test".
+     */
+    protected Target getTargets(String targetName) {
+        return getClassTargets(getClass(), targetName);
+    }
+
+    protected Target getClassTargets(Class cls, String targetName) {
+        if (cls == null) {
+            return null;
+        }
+
+        Target target = null;
+        if (targetName != null) {
+            try {
+                Method method = cls.getMethod(targetName, (Class[])null);
+                target = new MethodTarget(targetName, method);
+            } catch (NoSuchMethodException e) {
+        if (!inheritTargets()) {
+            return new Target(targetName); // invalid target
+        }
+            } catch (SecurityException e) {
+                return null;
+            }
+        } else {
+            if (params.doMethods()) {
+                Method[] methods = cls.getDeclaredMethods();
+                for (int i = methods.length; --i >= 0;) {
+                    String name = methods[i].getName();
+                    if (name.startsWith("Test") || name.startsWith("test")) {
+                        target = new MethodTarget(name, methods[i])
+                                .setNext(target);
+                    }
+                }
+            }
+        }
+
+        if (inheritTargets()) {
+          Target parentTarget = getClassTargets(cls.getSuperclass(), targetName);
+          if (parentTarget == null) {
+            return target;
+          }
+          if (target == null) {
+            return parentTarget;
+          }
+          return parentTarget.append(target);
+        }
+
+        return target;
+    }
+
+    protected boolean inheritTargets() {
+        return false;
+    }
+
+    protected String getDescription() {
+        return null;
+    }
+
+    protected boolean validateMethod(String name) {
+        return true;
+    }
+
+    protected String getMethodDescription(String name) {
+        return null;
+    }
+
+    // method tests have no subtests, group tests override
+    protected TestFmwk getSubtest(String prefix) throws TestFmwkException {
+        return null;
+    }
+
+    public boolean isVerbose() {
+        return params.verbose;
+    }
+
+    public boolean noData() {
+        return params.nodata;
+    }
+
+    public boolean isTiming() {
+        return params.timing < Long.MAX_VALUE;
+    }
+
+    public boolean isMemTracking() {
+        return params.memusage;
+    }
+
+    /**
+     * 0 = fewest tests, 5 is normal build, 10 is most tests
+     */
+    public int getInclusion() {
+        return params.inclusion;
+    }
+
+    public boolean isModularBuild() {
+        return params.warnings;
+    }
+
+    public boolean isQuick() {
+        return params.inclusion == 0;
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        params.msg(message, level, incCount, newln);
+    }
+
+    protected int getErrorCount() {
+        return params.errorCount;
+    }
+
+    public String getProperty(String key) {
+        String val = null;
+        if (key != null && key.length() > 0 && params.props != null) {
+            val = (String)params.props.get(key.toLowerCase());
+        }
+        return val;
+    }
+
+    protected TimeZone safeGetTimeZone(String id) {
+        TimeZone tz = TimeZone.getTimeZone(id);
+        if (tz == null) {
+            // should never happen
+            errln("FAIL: TimeZone.getTimeZone(" + id + ") => null");
+        }
+        if (!tz.getID().equals(id)) {
+            warnln("FAIL: TimeZone.getTimeZone(" + id + ") => " + tz.getID());
+        }
+        return tz;
+    }
+
+    /**
+     * Print a usage message for this test class.
+     */
+    public void usage() {
+        usage(new PrintWriter(System.out), getClass().getName());
+    }
+    
+    public static void usage(PrintWriter pw, String className) {
+        pw.println("Usage: " + className + " option* target*");
+        pw.println();
+        pw.println("Options:");
+        pw.println(" -d[escribe] Print a short descriptive string for this test and all");
+        pw.println("       listed targets.");
+        pw.println(" -e<n> Set exhaustiveness from 0..10.  Default is 0, fewest tests.\n"
+                 + "       To run all tests, specify -e10.  Giving -e with no <n> is\n"
+                 + "       the same as -e5.");
+        pw.println(" -filter:<str> Only tests matching filter will be run or listed.\n"
+                 + "       <str> is of the form ['^']text[','['^']text].\n"
+                 + "       Each string delimited by ',' is a separate filter argument.\n"
+                 + "       If '^' is prepended to an argument, its matches are excluded.\n"
+                 + "       Filtering operates on test groups as well as tests, if a test\n"
+                 + "       group is included, all its subtests that are not excluded will\n"
+                 + "       be run.  Examples:\n"
+                 + "    -filter:A -- only tests matching A are run.  If A matches a group,\n"
+                 + "       all subtests of this group are run.\n"
+                 + "    -filter:^A -- all tests except those matching A are run.  If A matches\n"
+                 + "        a group, no subtest of that group will be run.\n"
+                 + "    -filter:A,B,^C,^D -- tests matching A or B and not C and not D are run\n"
+                 + "       Note: Filters are case insensitive.");
+        pw.println(" -h[elp] Print this help text and exit.");
+        pw.println(" -l[ist] List immediate targets of this test");
+        pw.println("   -la, -listAll List immediate targets of this test, and all subtests");
+        pw.println("   -le, -listExaustive List all subtests and targets");
+        // don't know how to get useful numbers for memory usage using java API
+        // calls
+        //      pw.println(" -m[emory] print memory usage and force gc for
+        // each test");
+        pw.println(" -n[othrow] Message on test failure rather than exception");
+        pw.println(" -p[rompt] Prompt before exiting");
+        pw.println(" -prop:<key>=<value> Set optional property used by this test");
+        pw.println(" -q[uiet] Do not show warnings");
+        pw.println(" -r[andom][:<n>] If present, randomize targets.  If n is present,\n"
+                        + "       use it as the seed.  If random is not set, targets will\n"
+                        + "       be in alphabetical order to ensure cross-platform consistency.");
+        pw.println(" -s[ilent] No output except error summary or exceptions.");
+        pw.println(" -tfilter:<str> Transliterator Test filter of ids.");
+        pw.println(" -t[ime][:<n>] Print elapsed time for each test.  if n is present\n"
+                        + "       only print times >= n milliseconds.");
+        pw.println(" -v[erbose] Show log messages");
+        pw.println(" -u[nicode] Don't escape error or log messages");
+        pw.println(" -w[arning] Continue in presence of warnings, and disable missing test warnings.");
+        pw.println(" -nodata | -nd Do not warn if resource data is not present.");
+        pw.println();
+        pw.println(" If a list or describe option is provided, no tests are run.");
+        pw.println();
+        pw.println("Targets:");
+        pw.println(" If no target is specified, all targets for this test are run.");
+        pw.println(" If a target contains no '/' characters, and matches a target");
+        pw.println(" of this test, the target is run.  Otherwise, the part before the");
+        pw.println(" '/' is used to match a subtest, which then evaluates the");
+        pw.println(" remainder of the target as above.  Target matching is case-insensitive.");
+        pw.println();
+        pw.println(" If multiple targets are provided, each is executed in order.");
+        pw.flush();
+    }
+    public static String hex(char[] s){
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length; ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s[i]));
+        }
+        return result.toString();
+    }
+    public static String hex(byte[] s){
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length; ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s[i]));
+        }
+        return result.toString();
+    }
+    public static String hex(char ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch, 16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(int ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch, 16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(String s) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0)
+                result.append(',');
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+    public static String prettify(String s) {
+        StringBuffer result = new StringBuffer();
+        int ch;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(s, i);
+            if (ch > 0xfffff) {
+                result.append("\\U00");
+                result.append(hex(ch));
+            } else if (ch > 0xffff) {
+                result.append("\\U000");
+                result.append(hex(ch));
+            } else if (ch > 0x7f) {
+                result.append("\\u");
+                result.append(hex(ch));
+            } else {
+                result.append((char) ch);
+            }
+
+        }
+        return result.toString();
+    }
+    public static String prettify(StringBuffer s) {
+        return prettify(s.toString());
+    }
+
+    private static java.util.GregorianCalendar cal;
+
+    /**
+     * Return a Date given a year, month, and day of month. This is similar to
+     * new Date(y-1900, m, d). It uses the default time zone at the time this
+     * method is first called.
+     * 
+     * @param year
+     *            use 2000 for 2000, unlike new Date()
+     * @param month
+     *            use Calendar.JANUARY etc.
+     * @param dom
+     *            day of month, 1-based
+     * @return a Date object for the given y/m/d
+     */
+    protected static synchronized java.util.Date getDate(int year, int month,
+            int dom) {
+        if (cal == null) {
+            cal = new java.util.GregorianCalendar();
+        }
+        cal.clear();
+        cal.set(year, month, dom);
+        return cal.getTime();
+    }
+
+    public static class NullWriter extends PrintWriter {
+        public NullWriter() {
+            super(System.out, false);
+        }
+        public void write(int c) {
+        }
+        public void write(char[] buf, int off, int len) {
+        }
+        public void write(String s, int off, int len) {
+        }
+        public void println() {
+        }
+    }
+
+    public static class ASCIIWriter extends PrintWriter {
+        private StringBuffer buffer = new StringBuffer();
+
+        // Characters that we think are printable but that escapeUnprintable
+        // doesn't
+        private static final String PRINTABLES = "\t\n\r";
+
+        public ASCIIWriter(Writer w, boolean autoFlush) {
+            super(w, autoFlush);
+        }
+
+        public ASCIIWriter(OutputStream os, boolean autoFlush) {
+            super(os, autoFlush);
+        }
+
+        public void write(int c) {
+            synchronized (lock) {
+                buffer.setLength(0);
+                if (PRINTABLES.indexOf(c) < 0
+                        && TestUtil.escapeUnprintable(buffer, c)) {
+                    super.write(buffer.toString());
+                } else {
+                    super.write(c);
+                }
+            }
+        }
+
+        public void write(char[] buf, int off, int len) {
+            synchronized (lock) {
+                buffer.setLength(0);
+                int limit = off + len;
+                while (off < limit) {
+                    int c = UTF16Util.charAt(buf, 0, buf.length, off);
+                    off += UTF16Util.getCharCount(c);
+                    if (PRINTABLES.indexOf(c) < 0
+                            && TestUtil.escapeUnprintable(buffer, c)) {
+                        super.write(buffer.toString());
+                        buffer.setLength(0);
+                    } else {
+                        super.write(c);
+                    }
+                }
+            }
+        }
+
+        public void write(String s, int off, int len) {
+            write(s.substring(off, off + len).toCharArray(), 0, len);
+        }
+    }
+
+    // filters
+    // match against the entire hierarchy
+    // A;B;!C;!D --> (A ||B) && (!C && !D)
+    // positive, negative, unknown matches
+    // positive -- known to be included, negative- known to be excluded
+    // positive only if no excludes, and matches at least one include, if any
+    // negative only if matches at least one exclude
+    // otherwise, we wait
+
+    public static class TestParams {
+        public boolean prompt;
+        public boolean nothrow;
+        public boolean verbose;
+        public boolean quiet;
+        public int listlevel;
+        public boolean describe;
+        public boolean warnings;
+        public boolean nodata;
+        public long timing = Long.MAX_VALUE;
+        public boolean memusage;
+        public int inclusion;
+        public String filter;
+        public long seed;
+        public String tfilter; // for transliterator tests
+
+        public State stack;
+
+        public StringBuffer errorSummary;
+        private StringBuffer timeLog;
+
+        public PrintWriter log;
+        public int indentLevel;
+        private boolean needLineFeed;
+        private boolean suppressIndent;
+        public int errorCount;
+        public int warnCount;
+        public int invalidCount;
+        public int testCount;
+        private NumberFormat tformat;
+        public Random random;
+        public int maxTargetSec = 10;
+        public HashMap props;
+
+        private TestParams() {
+        }
+        
+        public static TestParams create(String arglist, PrintWriter log) {
+            String[] args = null;
+            if (arglist != null && arglist.length() > 0) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            args = Utility.split(arglist, '\u0020');
+//#else
+                args = arglist.split("\\s");
+//#endif
+            }
+            return create(args, log);
+        }
+        
+        /**
+         * Create a TestParams from a list of arguments.  If successful, return the params object,
+         * else return null.  Error messages will be reported on errlog if it is not null.
+         * Arguments and values understood by this method will be removed from the args array
+         * and existing args will be shifted down, to be filled by nulls at the end.
+         * @param args the list of arguments
+         * @param log the error log, or null if no error log is desired
+         * @return the new TestParams object, or null if error
+         */
+        public static TestParams create(String[] args, PrintWriter log) {
+            TestParams params = new TestParams();
+            
+            if(log == null){
+                params.log = new NullWriter();
+            }else{
+                params.log =  new ASCIIWriter(log, true);
+            }
+            
+            boolean usageError = false;
+            String filter = null;
+            int wx = 0; // write argets.
+            if (args != null) {
+                for (int i = 0; i < args.length; i++) {
+                    String arg = args[i];
+                    if (arg == null || arg.length() == 0) {
+                        continue;
+                    }
+                    if (arg.charAt(0) == '-') {
+                        arg = arg.toLowerCase();
+                        if (arg.equals("-verbose") || arg.equals("-v")) {
+                            params.verbose = true;
+                            params.quiet = false;
+                        } else if (arg.equals("-quiet") || arg.equals("-q")) {
+                            params.quiet = true;
+                            params.verbose = false;
+                        } else if (arg.equals("-help") || arg.equals("-h")) {
+                            usageError = true;
+                        } else if (arg.equals("-warning") || arg.equals("-w")) {
+                            params.warnings = true;
+                        } else if (arg.equals("-nodata") || arg.equals("-nd")) {
+                            params.nodata = true;
+                        } else if (arg.equals("-list") || arg.equals("-l")) {
+                            params.listlevel = 1;
+                        } else if (arg.equals("-listall") || arg.equals("-la")) {
+                            params.listlevel = 2;
+                        } else if (arg.equals("-listexaustive") || arg.equals("-le")) {
+                            params.listlevel = 3;
+                        } else if (arg.equals("-memory") || arg.equals("-m")) {
+                            params.memusage = true;
+                        } else if (arg.equals("-nothrow") || arg.equals("-n")) {
+                            params.nothrow = true;
+                            params.errorSummary = new StringBuffer();
+                        } else if (arg.equals("-describe") || arg.equals("-d")) {
+                            params.describe = true;
+                        } else if (arg.startsWith("-r")) {
+                            String s = null;
+                            int n = arg.indexOf(':');
+                            if (n != -1) {
+                                s = arg.substring(n + 1);
+                                arg = arg.substring(0, n);
+                            }
+
+                            if (arg.equals("-r") || arg.equals("-random")) {
+                                if (s == null) {
+                                    params.seed = System.currentTimeMillis();
+                                } else {
+                                    params.seed = Long.parseLong(s);
+                                }
+                            } else {
+                                log.println("*** Error: unrecognized argument: " + arg);
+                                usageError = true;
+                                break;
+                            }
+                        } else if (arg.startsWith("-e")) {
+                            // see above
+                            params.inclusion = (arg.length() == 2) 
+                                ? 5 
+                                : Integer.parseInt(arg.substring(2));
+                            if (params.inclusion < 0 || params.inclusion > 10) {
+                                usageError = true;
+                                break;
+                            }
+                        } else if (arg.startsWith("-tfilter:")) {
+                            params.tfilter = arg.substring(8);
+                        } else if (arg.startsWith("-time") || arg.startsWith("-t")) {
+                            long val = 0;
+                            int inx = arg.indexOf(':');
+                            if (inx > 0) {
+                                String num = arg.substring(inx + 1);
+                                try {
+                                    val = Long.parseLong(num);
+                                } catch (Exception e) {
+                                    log.println("*** Error: could not parse time threshold '"
+                                                + num + "'");
+                                    usageError = true;
+                                    break;
+                                }
+                            }
+                            params.timing = val;
+                            String fmt = "#,00s";
+                            if (val <= 10) {
+                                fmt = "#,##0.000s";
+                            } else if (val <= 100) {
+                                fmt = "#,##0.00s";
+                            } else if (val <= 1000) {
+                                fmt = "#,##0.0s";
+                            }
+                            params.tformat = new DecimalFormat(fmt);
+                        } else if (arg.startsWith("-filter:")) {
+                            String temp = arg.substring(8).toLowerCase();
+                            filter = filter == null ? temp : filter + "," + temp;
+                        } else if (arg.startsWith("-f:")) {
+                            String temp = arg.substring(3).toLowerCase();
+                            filter = filter == null ? temp : filter + "," + temp;
+                        } else if (arg.startsWith("-s")) {
+                            params.log = new NullWriter();
+                        } else if (arg.startsWith("-u")) {
+                            if (params.log instanceof ASCIIWriter) {
+                                params.log = log;
+                            }
+                        } else if (arg.startsWith("-prop:")) {
+                            String temp = arg.substring(6);
+                            int eql = temp.indexOf('=');
+                            if (eql <= 0) {
+                                log.println("*** Error: could not parse custom property '" + arg + "'");
+                                usageError = true;
+                                break;
+                            }
+                            if (params.props == null) {
+                                params.props = new HashMap();
+                            }
+                            params.props.put(temp.substring(0, eql), temp.substring(eql+1));
+                        } else {
+                            log.println("*** Error: unrecognized argument: "
+                                        + args[i]);
+                            usageError = true;
+                            break;
+                        }
+                    } else {
+                        args[wx++] = arg; // shift down
+                    }
+                }
+
+                while (wx < args.length) {
+                    args[wx++] = null;
+                }
+            }
+            
+            if (usageError) {
+                usage(log, "TestAll");
+                return null;
+            }
+
+            if (filter != null) {
+                params.filter = filter.toLowerCase();
+            }
+
+            params.init();
+            
+            return params;
+        }
+        
+        public String errorSummary() {
+            return errorSummary == null ? "" : errorSummary.toString();
+        }
+
+        public void init() {
+            indentLevel = 0;
+            needLineFeed = false;
+            suppressIndent = false;
+            errorCount = 0;
+            warnCount = 0;
+            invalidCount = 0;
+            testCount = 0;
+            random = seed == 0 ? null : new Random(seed);
+        }
+
+        public class State {
+            State link;
+            String name;
+            StringBuffer buffer;
+            int level;
+            int ec;
+            int wc;
+            int ic;
+            int tc;
+            boolean flushed;
+            public boolean included;
+            long mem;
+            long millis;
+
+            public State(State link, String name, boolean included) {
+                this.link = link;
+                this.name = name;
+                if (link == null) {
+                    this.level = 0;
+                    this.included = included;
+                } else {
+                    this.level = link.level + 1;
+                    this.included = included || link.included;
+                }
+                this.ec = errorCount;
+                this.wc = warnCount;
+                this.ic = invalidCount;
+                this.tc = testCount;
+
+                if (link == null || this.included) {
+                    flush();
+                }
+
+                mem = getmem();
+                millis = System.currentTimeMillis();
+            }
+
+            void flush() {
+                if (!flushed) {
+                    if (link != null) {
+                        link.flush();
+                    }
+
+                    indent(level);
+                    log.print(name);
+                    log.flush();
+
+                    flushed = true;
+
+                    needLineFeed = true;
+                }
+            }
+
+            void appendPath(StringBuffer buf) {
+                if (this.link != null) {
+                    this.link.appendPath(buf);
+                    buf.append('/');
+                }
+                buf.append(name);
+            }
+        }
+
+        public void push(String name, String description, boolean included) {
+            if (inDocMode() && describe && description != null) {
+                name += ": " + description;
+            }
+            stack = new State(stack, name, included);
+        }
+
+        public void pop() {
+            if (stack != null) {
+                writeTestResult();
+                stack = stack.link;
+            }
+        }
+
+        public boolean inDocMode() {
+            return describe || listlevel != 0;
+        }
+
+        public boolean doMethods() {
+            return !inDocMode() || listlevel == 3
+                    || (indentLevel == 1 && listlevel > 0);
+        }
+
+        public boolean doRecurse() {
+            return !inDocMode() || listlevel > 1
+                    || (indentLevel == 1 && listlevel > 0);
+        }
+
+        public boolean doRecurseGroupsOnly() {
+            return inDocMode()
+                    && (listlevel == 2 || (indentLevel == 1 && listlevel > 0));
+        }
+
+        // return 0, -1, or 1
+        // 1: run this test
+        // 0: might run this test, no positive include or exclude on this group
+        // -1: exclude this test
+        public int filter(String testName) {
+            int result = 0;
+            if (filter == null) {
+                result = 1;
+            } else {
+                boolean noIncludes = true;
+                boolean noExcludes = filter.indexOf('^') == -1;
+                testName = testName.toLowerCase();
+                int ix = 0;
+                while (ix < filter.length()) {
+                    int nix = filter.indexOf(',', ix);
+                    if (nix == -1) {
+                        nix = filter.length();
+                    }
+                    if (filter.charAt(ix) == '^') {
+                        if (testName.indexOf(filter.substring(ix + 1, nix)) != -1) {
+                            result = -1;
+                            break;
+                        }
+                    } else {
+                        noIncludes = false;
+                        if (testName.indexOf(filter.substring(ix, nix)) != -1) {
+                            result = 1;
+                            if (noExcludes) {
+                                break;
+                            }
+                        }
+                    }
+
+                    ix = nix + 1;
+                }
+                if (result == 0 && noIncludes) {
+                    result = 1;
+                }
+            }
+            //              System.out.println("filter: " + testName + " returns: " +
+            // result);
+            return result;
+        }
+
+        /**
+         * Log access.
+         * @param msg The string message to write
+         */
+        public void write(String msg) {
+            write(msg, false);
+        }
+        
+        public void writeln(String msg) {
+            write(msg, true);
+        }
+        
+        private void write(String msg, boolean newln) {
+            if (!suppressIndent) {
+                if (needLineFeed) {
+                    log.println();
+                    needLineFeed = false;
+                }
+                log.print(spaces.substring(0, indentLevel * 2));
+            }
+            log.print(msg);
+            if (newln) {
+                log.println(); 
+            }
+            log.flush();
+            suppressIndent = !newln;
+        }
+        
+        private void msg(String message, int level, boolean incCount,
+                boolean newln) {
+            if (level == WARN && (!warnings && !nodata)){
+                level = ERR;
+            }
+
+            if (incCount) {
+                if (level == WARN) {
+                    warnCount++;
+                    invalidCount++;
+                } else if (level == ERR) {
+                    errorCount++;
+                }
+            }
+
+            // should roll indentation stuff into log ???
+            if (verbose || level > (quiet ? WARN : LOG)) {
+                if (!suppressIndent) {
+                    indent(indentLevel + 1);
+                    final String[] MSGNAMES = {"", "Warning: ", "Error: "};
+                    log.print(MSGNAMES[level]);
+                }
+
+                log.print(message);
+                if (newln) {
+                    log.println();
+                }
+                log.flush();
+            }
+
+            if (level == ERR) {
+                if (!nothrow) {
+                    throw new RuntimeException(message);
+                }
+                if (!suppressIndent && errorSummary != null && stack !=null 
+                        && (errorCount == stack.ec + 1)) {
+                    stack.appendPath(errorSummary);
+                    errorSummary.append("\n");
+                }
+            }
+
+            suppressIndent = !newln;
+        }
+
+        private void writeTestInvalid(String name, boolean nodataArg) {
+            //              msg("***" + name + "*** not found or not valid.", WARN, true,
+            // true);
+            if (inDocMode()) {
+                if (!warnings) {
+                    if (stack != null) {
+                        stack.flush();
+                    }
+                    log.println(" *** Target not found or not valid.");
+                    log.flush();
+                    needLineFeed = false;
+                }
+            } else {
+                if(!nodataArg){
+                    msg("Test " + name + " not found or not valid.", WARN, true,
+                        true);
+                }
+            }
+        }
+
+        long getmem() {
+            long newmem = 0;
+            if (memusage) {
+                Runtime rt = Runtime.getRuntime();
+                long lastmem = Long.MAX_VALUE;
+                do {
+                    rt.gc();
+                    rt.gc();
+                    try {
+                        Thread.sleep(50);
+                    } catch (Exception e) {
+                        break;
+                    }
+                    lastmem = newmem;
+                    newmem = rt.totalMemory() - rt.freeMemory();
+                } while (newmem < lastmem);
+            }
+            return newmem;
+        }
+
+        private void writeTestResult() {
+            if (inDocMode()) {
+                if (needLineFeed) {
+                    log.println();
+                    log.flush();
+                }
+                needLineFeed = false;
+                return;
+            }
+
+            long dmem = getmem() - stack.mem;
+            long dtime = System.currentTimeMillis() - stack.millis;
+
+            int testDelta = testCount - stack.tc;
+            if (testDelta == 0) {
+                return;
+            }
+
+            int errorDelta = errorCount - stack.ec;
+            int invalidDelta = invalidCount - stack.ic;
+
+            stack.flush();
+
+            if (!needLineFeed) {
+                indent(indentLevel);
+                log.print("}");
+            }
+            needLineFeed = false;
+
+            if (memusage || dtime >= timing) {
+                log.print(" (");
+                if (memusage) {
+                    log.print("dmem: " + dmem);
+                }
+                if (dtime >= timing) {
+                    if (memusage) {
+                        log.print(", ");
+                    }
+                    log.print(tformat.format(dtime / 1000f));
+                }
+                log.print(")");
+            }
+
+            if (errorDelta != 0) {
+                log.println(" FAILED ("
+                        + errorDelta
+                        + " failures"
+                        + ((invalidDelta != 0) ? ", " + invalidDelta
+                                + " tests skipped)" : ")"));
+            } else if (invalidDelta != 0) {
+                log.println(" Qualified (" + invalidDelta + " tests skipped)");
+            } else {
+                log.println(" Passed");
+            }
+        }
+
+        private final void indent(int distance) {
+            boolean idm = inDocMode();
+            if (needLineFeed) {
+                if (idm) {
+                    log.println();
+                } else {
+                    log.println(" {");
+                }
+                needLineFeed = false;
+            }
+
+            log.print(spaces.substring(0, distance * (idm ? 3 : 2)));
+
+            if (idm) {
+                log.print("-- ");
+            }
+        }
+    }
+
+    public String getTranslitTestFilter() {
+        return params.tfilter;
+    }
+
+    /**
+     * Return the target name for a test class. This is either the end of the
+     * class name, or if the class declares a public static field
+     * CLASS_TARGET_NAME, the value of that field.
+     */
+    private static String getClassTargetName(Class testClass) {
+        String name = testClass.getName();
+        try {
+            Field f = testClass.getField("CLASS_TARGET_NAME");
+            name = (String) f.get(null);
+        } catch (IllegalAccessException e) {
+            throw new IllegalStateException(
+                    "static field CLASS_TARGET_NAME must be accessible");
+        } catch (NoSuchFieldException e) {
+            int n = Math.max(name.lastIndexOf('.'), name.lastIndexOf('$'));
+            if (n != -1) {
+                name = name.substring(n + 1);
+            }
+        }
+        return name;
+    }
+
+    /**
+     * Check the given array to see that all the strings in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of strings to check
+     * @param expected
+     *            array of strings we expect to see, or null
+     * @return the length of 'array', or -1 on error
+     */
+    protected int checkArray(String msg, String array[], String expected[]) {
+        int explen = (expected != null) ? expected.length : 0;
+        if (!(explen >= 0 && explen < 31)) { // [sic] 31 not 32
+            errln("Internal error");
+            return -1;
+        }
+        int i = 0;
+        StringBuffer buf = new StringBuffer();
+        int seenMask = 0;
+        for (; i < array.length; ++i) {
+            String s = array[i];
+            if (i != 0)
+                buf.append(", ");
+            buf.append(s);
+            // check expected list
+            for (int j = 0, bit = 1; j < explen; ++j, bit <<= 1) {
+                if ((seenMask & bit) == 0) {
+                    if (s.equals(expected[j])) {
+                        seenMask |= bit;
+                        logln("Ok: \"" + s + "\" seen");
+                    }
+                }
+            }
+        }
+        logln(msg + " = [" + buf + "] (" + i + ")");
+        // did we see all expected strings?
+        if (((1 << explen) - 1) != seenMask) {
+            for (int j = 0, bit = 1; j < expected.length; ++j, bit <<= 1) {
+                if ((seenMask & bit) == 0) {
+                    errln("\"" + expected[j] + "\" not seen");
+                }
+            }
+        }
+        return array.length;
+    }
+
+    /**
+     * Check the given array to see that all the locales in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of locales to check
+     * @param expected
+     *            array of locales names we expect to see, or null
+     * @return the length of 'array'
+     */
+    protected int checkArray(String msg, Locale array[], String expected[]) {
+        String strs[] = new String[array.length];
+        for (int i = 0; i < array.length; ++i)
+            strs[i] = array[i].toString();
+        return checkArray(msg, strs, expected);
+    }
+
+    /**
+     * Check the given array to see that all the locales in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of locales to check
+     * @param expected
+     *            array of locales names we expect to see, or null
+     * @return the length of 'array'
+     */
+    protected int checkArray(String msg, ULocale array[], String expected[]) {
+        String strs[] = new String[array.length];
+        for (int i = 0; i < array.length; ++i)
+            strs[i] = array[i].toString();
+        return checkArray(msg, strs, expected);
+    }
+
+    // JUnit-like assertions.
+
+    protected boolean assertTrue(String message, boolean condition) {
+        return handleAssert(condition, message, "true", null);
+    }
+
+    protected boolean assertFalse(String message, boolean condition) {
+        return handleAssert(!condition, message, "false", null);
+    }
+
+    protected boolean assertEquals(String message, boolean expected,
+            boolean actual) {
+        return handleAssert(expected == actual, message, String
+                .valueOf(expected), String.valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, long expected, long actual) {
+        return handleAssert(expected == actual, message, String
+                .valueOf(expected), String.valueOf(actual));
+    }
+
+    // do NaN and range calculations to precision of float, don't rely on
+    // promotion to double
+    protected boolean assertEquals(String message, float expected,
+            float actual, double error) {
+        boolean result = Float.isInfinite(expected)
+                ? expected == actual
+                : !(Math.abs(expected - actual) > error); // handles NaN
+        return handleAssert(result, message, String.valueOf(expected)
+                + (error == 0 ? "" : " (within " + error + ")"), String
+                .valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, double expected,
+            double actual, double error) {
+        boolean result = Double.isInfinite(expected)
+                ? expected == actual
+                : !(Math.abs(expected - actual) > error); // handles NaN
+        return handleAssert(result, message, String.valueOf(expected)
+                + (error == 0 ? "" : " (within " + error + ")"), String
+                .valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, Object expected,
+            Object actual) {
+        boolean result = expected == null ? actual == null : expected
+                .equals(actual);
+        return handleAssert(result, message, stringFor(expected),
+                stringFor(actual));
+    }
+
+    protected boolean assertNotEquals(String message, Object expected,
+            Object actual) {
+        boolean result = !(expected == null ? actual == null : expected
+                .equals(actual));
+        return handleAssert(result, message, stringFor(expected),
+                stringFor(actual), "not equal to", true);
+    }
+
+    protected boolean assertSame(String message, Object expected, Object actual) {
+        return handleAssert(expected == actual, message, stringFor(expected),
+                stringFor(actual), "==", false);
+    }
+
+    protected boolean assertNotSame(String message, Object expected,
+            Object actual) {
+        return handleAssert(expected != actual, message, stringFor(expected),
+                stringFor(actual), "!=", true);
+    }
+
+    protected boolean assertNull(String message, Object actual) {
+        return handleAssert(actual == null, message, null, stringFor(actual));
+    }
+
+    protected boolean assertNotNull(String message, Object actual) {
+        return handleAssert(actual != null, message, null, stringFor(actual),
+                "!=", true);
+    }
+
+    protected void fail(String message) {
+        errln(message);
+    }
+
+    private boolean handleAssert(boolean result, String message,
+            String expected, String actual) {
+        return handleAssert(result, message, expected, actual, null, false);
+    }
+
+    private boolean handleAssert(boolean result, String message,
+            String expected, String actual, String relation, boolean flip) {
+        if (!result || isVerbose()) {
+            message = message == null ? "" : " " + message;
+            relation = relation == null ? ", got " : " " + relation + " ";
+            if (result) {
+                logln("OK" + message + ": "
+                        + (flip ? expected + relation + actual : expected));
+            } else {
+                // assert must assume errors are true errors and not just warnings
+                // so cannot warnln here
+                errln(message
+                        + ": expected"
+                        + (flip ? relation + expected : " " + expected
+                                + (actual != null ? relation + actual : "")));
+            }
+        }
+        return result;
+    }
+
+    private final String stringFor(Object obj) {
+        if (obj == null)
+            return "null";
+        if (obj instanceof String)
+            return "\"" + obj + '"';
+        return obj.getClass().getName() + "<" + obj + ">";
+    }
+
+    // End JUnit-like assertions
+
+    // PrintWriter support
+
+    public PrintWriter getErrorLogPrintWriter() {
+        return new PrintWriter(new TestLogWriter(this, TestLog.ERR));
+    }
+
+    public PrintWriter getLogPrintWriter() {
+        return new PrintWriter(new TestLogWriter(this, TestLog.LOG));
+    }
+
+    // end PrintWriter support
+
+    protected TestParams params = null;
+
+    private final static String spaces = "                                          ";
+    
+}
diff --git a/src/com/ibm/icu/dev/test/TestLog.java b/src/com/ibm/icu/dev/test/TestLog.java
new file mode 100644
index 0000000..d152c49
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestLog.java
@@ -0,0 +1,38 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+public interface TestLog {
+
+    /**
+     * Adds given string to the log if we are in verbose mode.
+     */
+    void log(String message);
+
+    void logln(String message);
+
+    /**
+     * Report an error
+     */
+    void err(String message);
+
+    void errln(String message);
+
+    /**
+     * Warn about missing tests or data.
+     */
+    void warn(String message);
+    
+    void warnln(String message);
+
+
+    public static final int LOG = 0;
+    public static final int WARN = 1;
+    public static final int ERR = 2;
+
+    void msg(String message, int level, boolean incCount, boolean newln);
+}
diff --git a/src/com/ibm/icu/dev/test/TestLogWriter.java b/src/com/ibm/icu/dev/test/TestLogWriter.java
new file mode 100644
index 0000000..e2a3095
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestLogWriter.java
@@ -0,0 +1,43 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.IOException;
+import java.io.Writer;
+
+public final class TestLogWriter extends Writer {
+    private TestLog log;
+    private int level;
+    private boolean closed;
+
+    public TestLogWriter(TestLog log, int level) {
+    this.log = log;
+    this.level = level;
+    }
+
+    public void write(char cbuf[], int off, int len) throws IOException {
+        write(new String(cbuf, off, len));
+    }
+
+    public void write(String str) throws IOException {
+        if (closed) {
+            throw new IOException("stream closed");
+        }
+        if ("\r\n".indexOf(str) != -1) {
+            log.msg("", level, level == TestLog.ERR, true);
+        } else {
+            log.msg(str, level, level == TestLog.ERR, false);
+        }
+    }
+
+    public void flush() throws IOException {
+    }
+
+    public void close() throws IOException {
+        closed = true;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestUtil.java b/src/com/ibm/icu/dev/test/TestUtil.java
new file mode 100644
index 0000000..eda7b11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestUtil.java
@@ -0,0 +1,252 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.File;
+
+public final class TestUtil {
+    /**
+     * Path to test data in icu4jtest.jar
+     */
+    public static final String LOCAL_DATA_PATH = "/com/ibm/icu/dev/data/";
+
+    /**
+     * Standard path to the test data in the file system.
+     */
+    public static final String DATA_PATH = "/src" + LOCAL_DATA_PATH;
+
+    /**
+     * Property for user-defined data path.
+     */
+    public static final String DATA_PATH_PROPERTY = "ICUDataPath";
+
+    /**
+     * Property for modular build.
+     */
+    public static final String DATA_MODULAR_BUILD_PROPERTY = "ICUModularBuild";
+
+    /**
+     * Compute a full data path using the ICUDataPath, if defined, or the user.dir, if we
+     * are allowed access to it.
+     */
+    private static final String dataPath(String fileName) {
+        String s = System.getProperty(DATA_PATH_PROPERTY);
+        if (s == null) {
+            // assume user.dir is directly above src directory
+            // data path must end in '/' or '\', fileName should not start with one
+            s = System.getProperty("user.dir"); // protected property
+            s = s + DATA_PATH;
+        }
+        return s + fileName;
+    }
+
+    /**
+     * Return an input stream on the data file at path 'name' rooted at the data path
+     */
+    public static final InputStream getDataStream(String name) throws IOException {
+        InputStream is = null;
+        try {
+            is = new FileInputStream(dataPath(name));
+        } catch (Throwable e) {
+            try {
+                is = TestUtil.class.getResourceAsStream(LOCAL_DATA_PATH + name);
+            } catch (Throwable t) {
+                IOException ex =
+                    new IOException("data resource '" + name + "' not found");
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            t.printStackTrace();
+//#else
+                //initCause API was introduced in JDK 1.4
+                ex.initCause(t);
+//#endif
+               
+                throw ex;
+            }
+        }
+        return is;
+    }
+
+    /**
+     * Return a buffered reader on the data file at path 'name' rooted at the data path.
+     */
+    public static final BufferedReader getDataReader(String name, String charset) throws IOException {
+        InputStream is = getDataStream(name);
+        InputStreamReader isr =
+            charset == null
+                ? new InputStreamReader(is)
+                : new InputStreamReader(is, charset);
+        return new BufferedReader(isr);
+    }
+
+    /**
+     * Return a buffered reader on the data file at path 'name' rooted at the data path,
+     * using the provided encoding.
+     */
+    public static final BufferedReader getDataReader(String name)
+        throws IOException {
+        return getDataReader(name, null);
+    }
+
+    static final char DIGITS[] =
+        {
+            '0',
+            '1',
+            '2',
+            '3',
+            '4',
+            '5',
+            '6',
+            '7',
+            '8',
+            '9',
+            'A',
+            'B',
+            'C',
+            'D',
+            'E',
+            'F',
+            'G',
+            'H',
+            'I',
+            'J',
+            'K',
+            'L',
+            'M',
+            'N',
+            'O',
+            'P',
+            'Q',
+            'R',
+            'S',
+            'T',
+            'U',
+            'V',
+            'W',
+            'X',
+            'Y',
+            'Z' };
+    /**
+     * Return true if the character is NOT printable ASCII.  The tab,
+     * newline and linefeed characters are considered unprintable.
+     */
+    public static boolean isUnprintable(int c) {
+        return !(c >= 0x20 && c <= 0x7E);
+    }
+    /**
+     * Escape unprintable characters using <backslash>uxxxx notation
+     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * above.  If the character is printable ASCII, then do nothing
+     * and return FALSE.  Otherwise, append the escaped notation and
+     * return TRUE.
+     */
+    public static boolean escapeUnprintable(StringBuffer result, int c) {
+        if (isUnprintable(c)) {
+            result.append('\\');
+            if ((c & ~0xFFFF) != 0) {
+                result.append('U');
+                result.append(DIGITS[0xF & (c >> 28)]);
+                result.append(DIGITS[0xF & (c >> 24)]);
+                result.append(DIGITS[0xF & (c >> 20)]);
+                result.append(DIGITS[0xF & (c >> 16)]);
+            } else {
+                result.append('u');
+            }
+            result.append(DIGITS[0xF & (c >> 12)]);
+            result.append(DIGITS[0xF & (c >> 8)]);
+            result.append(DIGITS[0xF & (c >> 4)]);
+            result.append(DIGITS[0xF & c]);
+            return true;
+        }
+        return false;
+    }
+
+    static class Lock {
+        private int count;
+
+        synchronized void inc() {
+            ++count;
+        }
+
+        synchronized void dec() {
+            --count;
+        }
+
+        synchronized int count() {
+            return count;
+        }
+
+        void go() {
+            try {
+                while (count() > 0) {
+                    synchronized (this) {
+                        notifyAll();
+                    }
+                    Thread.sleep(50);
+                }
+            } catch (InterruptedException e) {
+            }
+        }
+    }
+
+    static class TestThread extends Thread {
+        Lock lock;
+        Runnable target;
+
+        TestThread(Lock lock, Runnable target) {
+            this.lock = lock;
+            this.target = target;
+
+            lock.inc();
+        }
+
+        public void run() {
+            try {
+                synchronized (lock) {
+                    lock.wait();
+                }
+                target.run();
+            } catch (InterruptedException e) {
+            }
+
+            lock.dec();
+        }
+    }
+
+    public static void runUntilDone(Runnable[] targets) {
+        if (targets == null) {
+            throw new IllegalArgumentException("targets is null");
+        }
+        if (targets.length == 0) {
+            return;
+        }
+
+        Lock lock = new Lock();
+        for (int i = 0; i < targets.length; ++i) {
+            new TestThread(lock, targets[i]).start();
+        }
+
+        lock.go();
+    }
+    public static BufferedReader openUTF8Reader(String dir, String filename) throws IOException {
+        return openReader(dir,filename,"UTF-8");
+    }
+    public static BufferedReader openReader(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        return new BufferedReader(
+            new InputStreamReader(
+                new FileInputStream(file),
+                encoding),
+            4*1024);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/UTF16Util.java b/src/com/ibm/icu/dev/test/UTF16Util.java
new file mode 100644
index 0000000..9da512c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/UTF16Util.java
@@ -0,0 +1,377 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.test;
+
+/**
+ * Utility class for supplementary code point 
+ * support. This one is written purely for updating
+ * Normalization sample from the unicode.org site.
+ * If you want the real thing, use UTF16 class
+ * from ICU4J
+ * @author Vladimir Weinstein, Markus Scherer
+ */
+public class UTF16Util {
+    static final int suppOffset = (0xd800 << 10) + 0xdc00 - 0x10000;
+
+    /**
+     * Method nextCodePoint. Returns the next code point
+     * in a string. 
+     * @param s String in question
+     * @param i index from which we want a code point
+     * @return int codepoint at index i
+     */
+    public static final int nextCodePoint(String s, int i) {
+        int ch = s.charAt(i);
+        if (0xd800 <= ch && ch <= 0xdbff && ++i < s.length()) {
+            int ch2 = s.charAt(i);
+            if (0xdc00 <= ch2 && ch2 <= 0xdfff) {
+                ch = (ch << 10) + ch2 - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method prevCodePoint. Gets the code point preceding
+     * index i (predecrement). 
+     * @param s String in question
+     * @param i index in string
+     * @return int codepoint at index --i
+     */
+    public static final int prevCodePoint(String s, int i) {
+        int ch = s.charAt(--i);
+        if (0xdc00 <= ch && ch <= 0xdfff && --i >= 0) {
+            int ch2 = s.charAt(i);
+            if (0xd800 <= ch2 && ch2 <= 0xdbff) {
+                ch = (ch2 << 10) + ch - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method nextCodePoint. Returns the next code point
+     * in a string. 
+     * @param s StringBuffer in question
+     * @param i index from which we want a code point
+     * @return int codepoint at index i
+     */
+    public static final int nextCodePoint(StringBuffer s, int i) {
+        int ch = s.charAt(i);
+        if (0xd800 <= ch && ch <= 0xdbff && ++i < s.length()) {
+            int ch2 = s.charAt(i);
+            if (0xdc00 <= ch2 && ch2 <= 0xdfff) {
+                ch = (ch << 10) + ch2 - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method prevCodePoint. Gets the code point preceding
+     * index i (predecrement). 
+     * @param s StringBuffer in question
+     * @param i index in string
+     * @return int codepoint at index --i
+     */
+    public static final int prevCodePoint(StringBuffer s, int i) {
+        int ch = s.charAt(--i);
+        if (0xdc00 <= ch && ch <= 0xdfff && --i >= 0) {
+            int ch2 = s.charAt(i);
+            if (0xd800 <= ch2 && ch2 <= 0xdbff) {
+                ch = (ch2 << 10) + ch - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method codePointLength. Returns the length 
+     * in UTF-16 code units of a given code point
+     * @param c code point in question
+     * @return int length in UTF-16 code units. Can be 1 or 2
+     */
+    public static final int codePointLength(int c) {
+        return c <= 0xffff ? 1 : 2;
+    }
+
+    /**
+     * Method appendCodePoint. Appends a code point
+     * to a StringBuffer
+     * @param buffer StringBuffer in question
+     * @param ch code point to append
+     */
+    public static final void appendCodePoint(StringBuffer buffer, int ch) {
+        if (ch <= 0xffff) {
+            buffer.append((char)ch);
+        } else {
+            buffer.append((char)(0xd7c0 + (ch >> 10)));
+            buffer.append((char)(0xdc00 + (ch & 0x3ff))); 
+        }
+    }
+
+    /**
+     * Method insertCodePoint. Inserts a code point in
+     * a StringBuffer
+     * @param buffer StringBuffer in question
+     * @param i index at which we want code point to be inserted
+     * @param ch code point to be inserted
+     */
+    public static final void insertCodePoint(StringBuffer buffer, int i, int ch) {
+        if (ch <= 0xffff) {
+            buffer.insert(i, (char)ch);
+        } else {
+            buffer.insert(i, (char)(0xd7c0 + (ch >> 10))).insert(i + 1, (char)(0xdc00 + (ch & 0x3ff))); 
+        }
+    }
+    
+    /**
+     * Method setCodePointAt. Changes a code point at a
+     * given index. Can change the length of the string.
+     * @param buffer StringBuffer in question
+     * @param i index at which we want to change the contents
+     * @param ch replacement code point
+     * @return int difference in resulting StringBuffer length
+     */
+    public static final int setCodePointAt(StringBuffer buffer, int i, int ch) {
+        int cp = nextCodePoint(buffer, i);
+        
+        if (ch <= 0xffff && cp <= 0xffff) { // Both BMP
+            buffer.setCharAt(i, (char)ch);
+            return 0;
+        } else if (ch > 0xffff && cp > 0xffff) { // Both supplementary
+            buffer.setCharAt(i, (char)(0xd7c0 + (ch >> 10)));
+            buffer.setCharAt(i+1, (char)(0xdc00 + (ch & 0x3ff)));
+            return 0;
+        } else if (ch <= 0xffff && cp > 0xffff) { // putting BMP instead of supplementary, buffer shrinks
+            buffer.setCharAt(i, (char)ch);
+            buffer.deleteCharAt(i+1);
+            return -1;
+        } else { //if (ch > 0xffff && cp <= 0xffff) { // putting supplementary instead of BMP, buffer grows
+            buffer.setCharAt(i, (char)(0xd7c0 + (ch >> 10)));
+            buffer.insert(i+1, (char)(0xdc00 + (ch & 0x3ff))); 
+            return 1;           
+        }
+    }
+
+    /**
+     * Method countCodePoint. Counts the UTF-32 code points
+     * in a UTF-16 encoded string.
+     * @param source String in question.
+     * @return int number of code points in this string
+     */
+    public static final int countCodePoint(String source) 
+    {         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < source.length(); ++ i) 
+        {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && 0xdc00 <= ch && ch <= 0xdfff) {
+                hadLeadSurrogate = false;           // count valid trail as zero
+            }
+            else
+            {
+                hadLeadSurrogate = (0xd800 <= ch && ch <= 0xdbff);
+                ++ result;                          // count others as 1
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Method countCodePoint. Counts the UTF-32 code points
+     * in a UTF-16 encoded string.
+     * @param source StringBuffer in question.
+     * @return int number of code points in this string
+     */
+    public static final int countCodePoint(StringBuffer source) 
+    {         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < source.length(); ++ i) 
+        {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && 0xdc00 <= ch && ch <= 0xdfff) {
+                hadLeadSurrogate = false;           // count valid trail as zero
+            }
+            else
+            {
+                hadLeadSurrogate = (0xd800 <= ch && ch <= 0xdbff);
+                ++ result;                          // count others as 1
+            }
+        }
+        
+        return result;
+    }
+    /**
+     * The minimum value for Supplementary code points
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE  = 0x10000;  
+    /**
+     * Determines how many chars this char32 requires.
+     * If a validity check is required, use <code>
+     * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on 
+     * char32 before calling.
+     * @param char32 the input codepoint.
+     * @return 2 if is in supplementary space, otherwise 1. 
+     */
+    public static int getCharCount(int char32) 
+    {
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            return 1;
+        }
+        return 2;
+    }
+    /**
+     * Lead surrogate maximum value
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
+    /**
+     * Lead surrogate minimum value
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
+    
+    /**
+     * Trail surrogate minimum value
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00; 
+    /**
+     * Trail surrogate maximum value
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
+    /**
+     * Determines whether the code value is a surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= TRAIL_SURROGATE_MAX_VALUE;
+    }
+        
+    /**
+     * Determines whether the character is a trail surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a trail surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isTrailSurrogate(char char16) 
+    {
+        return (TRAIL_SURROGATE_MIN_VALUE <= char16 && 
+                char16 <= TRAIL_SURROGATE_MAX_VALUE);
+    }
+        
+    /**
+     * Determines whether the character is a lead surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a lead surrogate
+     * @stable ICU 2.1
+     */
+    public static boolean isLeadSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= LEAD_SURROGATE_MAX_VALUE;
+    }
+    /**
+     * Extract a single UTF-32 value from a substring.
+     * Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a
+     * validity check is required, use 
+     * <code><a href="../UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code> on the return value.
+     * If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is 
+     * not found the incomplete character will be returned
+     * @param source array of UTF-16 chars
+     * @param start offset to substring in the source array for analyzing
+     * @param limit offset to substring in the source array for analyzing
+     * @param offset16 UTF-16 offset relative to start
+     * @return UTF-32 value for the UTF-32 value that contains the char at
+     *         offset16. The boundaries of that codepoint are the same as in
+     *         <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException thrown if offset16 is not within 
+     *            the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int charAt(char source[], int start, int limit, 
+                             int offset16)
+    {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+            
+        char single = source[offset16];
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.      
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            offset16 ++;
+            if (offset16 >= limit) {
+                return single;
+            }
+            char trail = source[offset16];
+            if (isTrailSurrogate(trail)) {
+                return getRawSupplementary(single, trail);
+            }
+        } 
+        else { // isTrailSurrogate(single), so
+            if (offset16 == start) {
+                return single;
+            }
+            offset16 --;
+            char lead = source[offset16];
+            if (isLeadSurrogate(lead))
+                return getRawSupplementary(lead, single);
+        }
+        return single; // return unmatched surrogate
+    }
+    /**
+     * Shift value for lead surrogate to form a supplementary character.
+     */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+    
+    /** 
+     * Offset to add to combined surrogate pair to avoid msking.
+     */
+    private static final int SURROGATE_OFFSET_ = 
+                           SUPPLEMENTARY_MIN_VALUE - 
+                           (LEAD_SURROGATE_MIN_VALUE << 
+                           LEAD_SURROGATE_SHIFT_) - 
+                           TRAIL_SURROGATE_MIN_VALUE;   
+
+    
+   /**
+    * Forms a supplementary code point from the argument character<br>
+    * Note this is for internal use hence no checks for the validity of the
+    * surrogate characters are done
+    * @param lead lead surrogate character
+    * @param trail trailing surrogate character
+    * @return code point of the supplementary character
+    */
+    public static int getRawSupplementary(char lead, char trail)
+    {
+        return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/BidiTest.java b/src/com/ibm/icu/dev/test/bidi/BidiTest.java
new file mode 100644
index 0000000..19a5fc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/BidiTest.java
@@ -0,0 +1,493 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * A base class for the Bidi test suite.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class BidiTest extends TestFmwk {
+
+    protected static final char[] charFromDirProp = {
+         /* L      R    EN    ES    ET     AN    CS    B    S    WS    ON */
+         0x61, 0x5d0, 0x30, 0x2f, 0x25, 0x660, 0x2c, 0xa, 0x9, 0x20, 0x26,
+         /* LRE     LRO     AL     RLE     RLO     PDF    NSM      BN */
+         0x202a, 0x202d, 0x627, 0x202b, 0x202e, 0x202c, 0x308, 0x200c
+    };
+
+    static {
+        initCharFromDirProps();
+    }
+
+    private static void initCharFromDirProps() {
+        final VersionInfo ucd401 =  VersionInfo.getInstance(4, 0, 1, 0);
+        VersionInfo ucdVersion = VersionInfo.getInstance(0, 0, 0, 0);
+
+        /* lazy initialization */
+        if (ucdVersion.getMajor() > 0) {
+            return;
+
+        }
+        ucdVersion = UCharacter.getUnicodeVersion();
+        if (ucdVersion.compareTo(ucd401) >= 0) {
+            /* Unicode 4.0.1 changes bidi classes for +-/ */
+            /* change ES character from / to + */
+            charFromDirProp[TestData.ES] = 0x2b;
+        }
+    }
+
+    protected boolean assertEquals(String message, String expected, String actual,
+                                   String src, String mode, String option,
+                                   String level) {
+        if (expected == null || actual == null) {
+            return super.assertEquals(message, expected, actual);
+        }
+        if (expected.equals(actual)) {
+            return true;
+        }
+        errln("");
+        errcontln(message);
+        if (src != null) {
+            errcontln("source            : \"" + Utility.escape(src) + "\"");
+        }
+        errcontln("expected          : \"" + Utility.escape(expected) + "\"");
+        errcontln("actual            : \"" + Utility.escape(actual) + "\"");
+        if (mode != null) {
+            errcontln("reordering mode   : " + mode);
+        }
+        if (option != null) {
+            errcontln("reordering option : " + option);
+        }
+        if (level != null) {
+            errcontln("paragraph level   : " + level);
+        }
+        return false;
+    }
+
+    protected static String valueOf(int[] array) {
+        StringBuffer result = new StringBuffer(array.length * 4);
+        for (int i = 0; i < array.length; i++) {
+            result.append(' ');
+            result.append(array[i]);
+        }
+        return result.toString();
+    }
+
+    private static final String[] modeDescriptions = {
+        "REORDER_DEFAULT",
+        "REORDER_NUMBERS_SPECIAL",
+        "REORDER_GROUP_NUMBERS_WITH_R",
+        "REORDER_RUNS_ONLY",
+        "REORDER_INVERSE_NUMBERS_AS_L",
+        "REORDER_INVERSE_LIKE_DIRECT",
+        "REORDER_INVERSE_FOR_NUMBERS_SPECIAL"
+    };
+
+    protected static String modeToString(int mode) {
+        if (mode < Bidi.REORDER_DEFAULT ||
+            mode > Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL) {
+            return "INVALID";
+        }
+        return modeDescriptions[mode];
+    }
+
+    private static final short SETPARA_MASK = Bidi.OPTION_INSERT_MARKS |
+        Bidi.OPTION_REMOVE_CONTROLS | Bidi.OPTION_STREAMING;
+
+    private static final String[] setParaDescriptions = {
+        "OPTION_INSERT_MARKS",
+        "OPTION_REMOVE_CONTROLS",
+        "OPTION_STREAMING"
+    };
+
+    protected static String spOptionsToString(int option) {
+        return optionToString(option, SETPARA_MASK, setParaDescriptions);
+    }
+
+    private static final int MAX_WRITE_REORDERED_OPTION = Bidi.OUTPUT_REVERSE;
+    private static final int REORDER_MASK = (MAX_WRITE_REORDERED_OPTION << 1) - 1;
+
+    private static final String[] writeReorderedDescriptions = {
+        "KEEP_BASE_COMBINING",      //  1
+        "DO_MIRRORING",             //  2
+        "INSERT_LRM_FOR_NUMERIC",   //  4
+        "REMOVE_BIDI_CONTROLS",     //  8
+        "OUTPUT_REVERSE"            // 16
+    };
+
+    public static String wrOptionsToString(int option) {
+        return optionToString(option, REORDER_MASK, writeReorderedDescriptions);
+    }
+    public static String optionToString(int option, int mask,
+                                        String[] descriptions) {
+        StringBuffer desc = new StringBuffer(50);
+
+        if ((option &= mask) == 0) {
+            return "0";
+        }
+        desc.setLength(0);
+
+        for (int i = 0; option > 0; i++, option >>= 1) {
+            if ((option & 1) != 0) {
+                if (desc.length() > 0) {
+                    desc.append(" | ");
+                }
+                desc.append(descriptions[i]);
+            }
+        }
+        return desc.toString();
+    }
+
+    static final String columnString =
+        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    static final char[] columns = columnString.toCharArray();
+    private static final int TABLE_SIZE = 256;
+    private static boolean tablesInitialized = false;
+    private static char[] pseudoToUChar;
+    private static char[] UCharToPseudo;    /* used for Unicode chars < 0x0100 */
+    private static char[] UCharToPseud2;    /* used for Unicode chars >=0x0100 */
+
+    static void buildPseudoTables()
+    /*
+        The rules for pseudo-Bidi are as follows:
+        - [ == LRE
+        - ] == RLE
+        - { == LRO
+        - } == RLO
+        - ^ == PDF
+        - @ == LRM
+        - & == RLM
+        - A-F == Arabic Letters 0631-0636
+        - G-V == Hebrew letters 05d7-05ea
+        - W-Z == Unassigned RTL 08d0-08d3
+        - 0-5 == western digits 0030-0035
+        - 6-9 == Arabic-Indic digits 0666-0669
+        - ` == Combining Grave Accent 0300 (NSM)
+        - ~ == Delete 007f (BN)
+        - | == Paragraph Separator 2029 (B)
+        - _ == Info Separator 1 001f (S)
+        All other characters represent themselves as Latin-1, with the corresponding
+        Bidi properties.
+    */
+    {
+        int     i;
+        char    uchar;
+        char    c;
+
+        /* initialize all tables to unknown */
+        pseudoToUChar = new char[TABLE_SIZE];
+        UCharToPseudo = new char[TABLE_SIZE];
+        UCharToPseud2 = new char[TABLE_SIZE];
+        for (i = 0; i < TABLE_SIZE; i++) {
+            pseudoToUChar[i] = 0xFFFD;
+            UCharToPseudo[i] = '?';
+            UCharToPseud2[i] = '?';
+        }
+        /* initialize non letters or digits */
+        pseudoToUChar[ 0 ] = 0x0000;    UCharToPseudo[0x00] =  0 ;
+        pseudoToUChar[' '] = 0x0020;    UCharToPseudo[0x20] = ' ';
+        pseudoToUChar['!'] = 0x0021;    UCharToPseudo[0x21] = '!';
+        pseudoToUChar['"'] = 0x0022;    UCharToPseudo[0x22] = '"';
+        pseudoToUChar['#'] = 0x0023;    UCharToPseudo[0x23] = '#';
+        pseudoToUChar['$'] = 0x0024;    UCharToPseudo[0x24] = '$';
+        pseudoToUChar['%'] = 0x0025;    UCharToPseudo[0x25] = '%';
+        pseudoToUChar['\'']= 0x0027;    UCharToPseudo[0x27] = '\'';
+        pseudoToUChar['('] = 0x0028;    UCharToPseudo[0x28] = '(';
+        pseudoToUChar[')'] = 0x0029;    UCharToPseudo[0x29] = ')';
+        pseudoToUChar['*'] = 0x002A;    UCharToPseudo[0x2A] = '*';
+        pseudoToUChar['+'] = 0x002B;    UCharToPseudo[0x2B] = '+';
+        pseudoToUChar[','] = 0x002C;    UCharToPseudo[0x2C] = ',';
+        pseudoToUChar['-'] = 0x002D;    UCharToPseudo[0x2D] = '-';
+        pseudoToUChar['.'] = 0x002E;    UCharToPseudo[0x2E] = '.';
+        pseudoToUChar['/'] = 0x002F;    UCharToPseudo[0x2F] = '/';
+        pseudoToUChar[':'] = 0x003A;    UCharToPseudo[0x3A] = ':';
+        pseudoToUChar[';'] = 0x003B;    UCharToPseudo[0x3B] = ';';
+        pseudoToUChar['<'] = 0x003C;    UCharToPseudo[0x3C] = '<';
+        pseudoToUChar['='] = 0x003D;    UCharToPseudo[0x3D] = '=';
+        pseudoToUChar['>'] = 0x003E;    UCharToPseudo[0x3E] = '>';
+        pseudoToUChar['?'] = 0x003F;    UCharToPseudo[0x3F] = '?';
+        pseudoToUChar['\\']= 0x005C;    UCharToPseudo[0x5C] = '\\';
+        /* initialize specially used characters */
+        pseudoToUChar['`'] = 0x0300;    UCharToPseud2[0x00] = '`';  /* NSM */
+        pseudoToUChar['@'] = 0x200E;    UCharToPseud2[0x0E] = '@';  /* LRM */
+        pseudoToUChar['&'] = 0x200F;    UCharToPseud2[0x0F] = '&';  /* RLM */
+        pseudoToUChar['_'] = 0x001F;    UCharToPseudo[0x1F] = '_';  /* S   */
+        pseudoToUChar['|'] = 0x2029;    UCharToPseud2[0x29] = '|';  /* B   */
+        pseudoToUChar['['] = 0x202A;    UCharToPseud2[0x2A] = '[';  /* LRE */
+        pseudoToUChar[']'] = 0x202B;    UCharToPseud2[0x2B] = ']';  /* RLE */
+        pseudoToUChar['^'] = 0x202C;    UCharToPseud2[0x2C] = '^';  /* PDF */
+        pseudoToUChar['{'] = 0x202D;    UCharToPseud2[0x2D] = '{';  /* LRO */
+        pseudoToUChar['}'] = 0x202E;    UCharToPseud2[0x2E] = '}';  /* RLO */
+        pseudoToUChar['~'] = 0x007F;    UCharToPseudo[0x7F] = '~';  /* BN  */
+        /* initialize western digits */
+        for (i = 0, uchar = 0x0030; i < 6; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseudo[uchar & 0x00ff] = c;
+        }
+        /* initialize Hindi digits */
+        for (i = 6, uchar = 0x0666; i < 10; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Arabic letters */
+        for (i = 10, uchar = 0x0631; i < 16; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Hebrew letters */
+        for (i = 16, uchar = 0x05D7; i < 32; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Unassigned code points */
+        for (i = 32, uchar = 0x08D0; i < 36; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Latin lower case letters */
+        for (i = 36, uchar = 0x0061; i < 62; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseudo[uchar & 0x00ff] = c;
+        }
+        tablesInitialized = true;
+    }
+
+    /*----------------------------------------------------------------------*/
+
+    static String pseudoToU16(String input)
+    /*  This function converts a pseudo-Bidi string into a char string.
+        It returns the char string.
+    */
+    {
+        int len = input.length();
+        char[] output = new char[len];
+        int i;
+        if (!tablesInitialized) {
+            buildPseudoTables();
+        }
+        for (i = 0; i < len; i++)
+            output[i] = pseudoToUChar[input.charAt(i)];
+        return new String(output);
+    }
+
+    /*----------------------------------------------------------------------*/
+
+    static String u16ToPseudo(String input)
+    /*  This function converts a char string into a pseudo-Bidi string.
+        It returns the pseudo-Bidi string.
+    */
+    {
+        int len = input.length();
+        char[] output = new char[len];
+        int i;
+        char uchar;
+        if (!tablesInitialized) {
+            buildPseudoTables();
+        }
+        for (i = 0; i < len; i++)
+        {
+            uchar = input.charAt(i);
+            output[i] = uchar < 0x0100 ? UCharToPseudo[uchar] :
+                                         UCharToPseud2[uchar & 0x00ff];
+        }
+        return new String(output);
+    }
+
+    void errcont(String message) {
+        msg(message, ERR, false, false);
+    }
+
+    void errcontln(String message) {
+        msg(message, ERR, false, true);
+    }
+
+    void printCaseInfo(Bidi bidi, String src, String dst)
+    {
+        int length = bidi.getProcessedLength();
+        byte[] levels = bidi.getLevels();
+        char[] levelChars  = new char[length];
+        byte lev;
+        int runCount = bidi.countRuns();
+        errcontln("========================================");
+        errcontln("Processed length: " + length);
+        for (int i = 0; i < length; i++) {
+            lev = levels[i];
+            if (lev < 0) {
+                levelChars[i] = '-';
+            } else if (lev < columns.length) {
+                levelChars[i] = columns[lev];
+            } else {
+                levelChars[i] = '+';
+            }
+        }
+        errcontln("Levels: " + new String(levelChars));
+        errcontln("Source: " + src);
+        errcontln("Result: " + dst);
+        errcontln("Direction: " + bidi.getDirection());
+        errcontln("paraLevel: " + Byte.toString(bidi.getParaLevel()));
+        errcontln("reorderingMode: " + modeToString(bidi.getReorderingMode()));
+        errcontln("reorderingOptions: " + spOptionsToString(bidi.getReorderingOptions()));
+        errcont("Runs: " + runCount + " => logicalStart.length/level: ");
+        for (int i = 0; i < runCount; i++) {
+            BidiRun run;
+            run = bidi.getVisualRun(i);
+            errcont(" " + run.getStart() + "." + run.getLength() + "/" +
+                    run.getEmbeddingLevel());
+        }
+        errcont("\n");
+    }
+
+    static final String mates1 = "<>()[]{}";
+    static final String mates2 = "><)(][}{";
+    static final char[] mates1Chars = mates1.toCharArray();
+    static final char[] mates2Chars = mates2.toCharArray();
+
+    boolean matchingPair(Bidi bidi, int i, char c1, char c2)
+    {
+        if (c1 == c2) {
+            return true;
+        }
+        /* For REORDER_RUNS_ONLY, it would not be correct to check levels[i],
+           so we use the appropriate run's level, which is good for all cases.
+         */
+        if (bidi.getLogicalRun(i).getDirection() == 0) {
+            return false;
+        }
+        for (int k = 0; k < mates1Chars.length; k++) {
+            if ((c1 == mates1Chars[k]) && (c2 == mates2Chars[k])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    boolean checkWhatYouCan(Bidi bidi, String src, String dst)
+    {
+        int i, idx, logLimit, visLimit;
+        boolean testOK, errMap, errDst;
+        char[] srcChars = src.toCharArray();
+        char[] dstChars = dst.toCharArray();
+        int[] visMap = bidi.getVisualMap();
+        int[] logMap = bidi.getLogicalMap();
+
+        testOK = true;
+        errMap = errDst = false;
+        logLimit = bidi.getProcessedLength();
+        visLimit = bidi.getResultLength();
+        if (visLimit > dstChars.length) {
+            visLimit = dstChars.length;
+        }
+        char[] accumSrc = new char[logLimit];
+        char[] accumDst = new char[visLimit];
+        Arrays.fill(accumSrc, '?');
+        Arrays.fill(accumDst, '?');
+
+        if (logMap.length != logLimit) {
+            errMap = true;
+        }
+        for (i = 0; i < logLimit; i++) {
+            idx = bidi.getVisualIndex(i);
+            if (idx != logMap[i]) {
+                errMap = true;
+            }
+            if (idx == Bidi.MAP_NOWHERE) {
+                continue;
+            }
+            if (idx >= visLimit) {
+                continue;
+            }
+            accumDst[idx] = srcChars[i];
+            if (!matchingPair(bidi, i, srcChars[i], dstChars[idx])) {
+                errDst = true;
+            }
+        }
+        if (errMap) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Mismatch between getLogicalMap() and getVisualIndex()");
+            errcont("Map    :" + valueOf(logMap));
+            errcont("\n");
+            errcont("Indexes:");
+            for (i = 0; i < logLimit; i++) {
+                errcont(" " + bidi.getVisualIndex(i));
+            }
+            errcont("\n");
+        }
+        if (errDst) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Source does not map to Result");
+            errcontln("We got: " + new String(accumDst));
+        }
+
+        errMap = errDst = false;
+        if (visMap.length != visLimit) {
+            errMap = true;
+        }
+        for (i = 0; i < visLimit; i++) {
+            idx = bidi.getLogicalIndex(i);
+            if (idx != visMap[i]) {
+                errMap = true;
+            }
+            if (idx == Bidi.MAP_NOWHERE) {
+                continue;
+            }
+            if (idx >= logLimit) {
+                continue;
+            }
+            accumSrc[idx] = dstChars[i];
+            if (!matchingPair(bidi, idx, srcChars[idx], dstChars[i])) {
+                errDst = true;
+            }
+        }
+        if (errMap) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Mismatch between getVisualMap() and getLogicalIndex()");
+            errcont("Map    :" + valueOf(visMap));
+            errcont("\n");
+            errcont("Indexes:");
+            for (i = 0; i < visLimit; i++) {
+                errcont(" " + bidi.getLogicalIndex(i));
+            }
+            errcont("\n");
+        }
+        if (errDst) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Result does not map to Source");
+            errcontln("We got: " + new String(accumSrc));
+        }
+        return testOK;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestAll.java b/src/com/ibm/icu/dev/test/bidi/TestAll.java
new file mode 100644
index 0000000..e5ec5eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestAll.java
@@ -0,0 +1,44 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.bidi.TestCharFromDirProp",
+                  "com.ibm.icu.dev.test.bidi.TestBidi",
+                  "com.ibm.icu.dev.test.bidi.TestInverse",
+                  "com.ibm.icu.dev.test.bidi.TestReorder",
+                  "com.ibm.icu.dev.test.bidi.TestFailureRecovery",
+                  "com.ibm.icu.dev.test.bidi.TestMultipleParagraphs",
+                  "com.ibm.icu.dev.test.bidi.TestReorderingMode",
+                  "com.ibm.icu.dev.test.bidi.TestReorderRunsOnly",
+                  "com.ibm.icu.dev.test.bidi.TestStreaming",
+                  "com.ibm.icu.dev.test.bidi.TestClassOverride",
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                  "com.ibm.icu.dev.test.bidi.TestCompatibility",
+//#endif
+              },
+              "Bidi tests");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Bidi";
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestBidi.java b/src/com/ibm/icu/dev/test/bidi/TestBidi.java
new file mode 100644
index 0000000..84cfc47
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestBidi.java
@@ -0,0 +1,532 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * Regression test for Bidi class override.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestBidi extends BidiTest {
+
+    private static final int MAXLEN = 256;
+    private static final String levelString = "............................";
+
+    public void testBidi() {
+        Bidi bidi;
+        Bidi bidiLine;
+
+        logln("\nEntering TestBidi");
+        bidi = new Bidi(MAXLEN, 0);
+        bidiLine = new Bidi();
+
+        doTests(bidi, bidiLine, false);
+        doTests(bidi, bidiLine, true);
+        doMisc();
+        logln("\nExiting TestBidi");
+    }
+
+    private void doTests(Bidi bidi, Bidi bidiLine, boolean countRunsFirst) {
+        int testNumber;
+        String string;
+        int lineStart;
+        byte paraLevel;
+        int bidiTestCount = TestData.testCount();
+
+        for (testNumber = 0; testNumber < bidiTestCount; ++testNumber) {
+            TestData test = TestData.getTestData(testNumber);
+            string = getStringFromDirProps(test.dirProps);
+            paraLevel = test.paraLevel;
+            try {
+                bidi.setPara(string, paraLevel, null);
+                logln("Bidi.setPara(tests[" + testNumber + "] OK, direction "
+                        + bidi.getDirection() + " paraLevel "
+                        + paraLevel);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "] failed, direction "
+                        + bidi.getDirection() + " paraLevel "
+                        + paraLevel);
+            }
+            lineStart = test.lineStart;
+            if (lineStart == -1) {
+                doTest(bidi, testNumber, test, 0, countRunsFirst);
+            } else {
+                try {
+                    bidiLine = bidi.setLine(lineStart, test.lineLimit);
+                    logln("Bidi.setLine(" + lineStart + ", " + test.lineLimit
+                            + "), in tests[" + testNumber + "] OK, direction "
+                            + bidiLine.getDirection() + " paraLevel "
+                            + bidiLine.getBaseLevel());
+                    doTest(bidiLine, testNumber, test, lineStart, countRunsFirst);
+                } catch (Exception e)  {
+                    errln("Bidi.setLine(" + lineStart + ", " + test.lineLimit
+                            + "), in runAll test[" + testNumber + "] failed");
+                }
+                /* do it again using createLineBidi instead of setLine */
+                try {
+                    bidiLine = bidi.createLineBidi(lineStart, test.lineLimit);
+                    logln("Bidi.createLineBidi(" + lineStart + ", " + test.lineLimit
+                            + "), in tests[" + testNumber + "] OK, direction "
+                            + bidiLine.getDirection() + " paraLevel "
+                            + bidiLine.getBaseLevel());
+                    doTest(bidiLine, testNumber, test, lineStart, countRunsFirst);
+                } catch (Exception e)  {
+                    errln("Bidi.createLineBidi(" + lineStart + ", " + test.lineLimit
+                            + "), in runAll test[" + testNumber + "] failed");
+                }
+            }
+        }
+    }
+
+    private void doTest(Bidi bidi, int testNumber, TestData test,
+                        int lineStart, boolean countRunsFirst) {
+        short[] dirProps = test.dirProps;
+        byte[] levels = test.levels;
+        int[] visualMap = test.visualMap;
+        int i, len = bidi.getLength(), logicalIndex = -1, runCount = 0;
+        byte level, level2;
+
+        if (countRunsFirst) {
+            logln("Calling Bidi.countRuns() first.");
+            try {
+                runCount = bidi.countRuns();
+            } catch (IllegalStateException e) {
+                errln("Bidi.countRuns(test[" + testNumber + "]) failed");
+            }
+        } else {
+            logln("Calling Bidi.getLogicalMap() first.");
+        }
+
+        _testReordering(bidi, testNumber);
+
+        for (i = 0; i < len; ++i) {
+            logln(i + "  " + bidi.getLevelAt(i) + "  " + levelString
+                    + TestData.dirPropNames[dirProps[lineStart + i]] + "  "
+                    + bidi.getVisualIndex(i));
+        }
+
+        log("\n-----levels:");
+        for (i = 0; i < len; ++i) {
+            if (i > 0) {
+                log(",");
+            }
+            log(" " + bidi.getLevelAt(i));
+        }
+
+        log("\n--reordered:");
+        for (i = 0; i < len; ++i) {
+            if (i > 0) {
+                log(",");
+            }
+            log(" " + bidi.getVisualIndex(i));
+        }
+        log("\n");
+
+        assertEquals("\nFailure in Bidi.getDirection(test[" + testNumber + "])",
+                     test.direction, bidi.getDirection());
+        assertEquals("\nFailure in Bidi.getParaLevel(test[" + testNumber + "])",
+                     test.resultLevel, bidi.getParaLevel());
+
+        for (i = 0; i < len; ++i) {
+            assertEquals("\nFailure in Bidi.getLevelAt(" + i +
+                         ") in test[" + testNumber + "]",
+                         levels[i], bidi.getLevelAt(i));
+        }
+
+        for (i = 0; i < len; ++i) {
+            try {
+                logicalIndex = bidi.getVisualIndex(i);
+            } catch (Throwable th) {
+                errln("Bidi.getVisualIndex(" + i + ") in test[" + testNumber
+                        + "] failed");
+            }
+            if(visualMap[i] != logicalIndex) {
+                assertEquals("\nFailure in Bidi.getVisualIndex(" + i +
+                             ") in test[" + testNumber + "])",
+                             visualMap[i], logicalIndex);
+            }
+        }
+
+        if (!countRunsFirst) {
+            try {
+                runCount = bidi.countRuns();
+            } catch (IllegalStateException e) {
+                errln("Bidi.countRuns(test[" + testNumber + "]) failed");
+            }
+        }
+
+        BidiRun run;
+
+        for (logicalIndex = 0; logicalIndex < len; ) {
+            level = bidi.getLevelAt(logicalIndex);
+            run = bidi.getLogicalRun(logicalIndex);
+            logicalIndex = run.getLimit();
+            level2 = run.getEmbeddingLevel();
+            assertEquals("Logical " + run.toString() +
+                         " in test[" + testNumber + "]: wrong level",
+                         level, level2);
+            if (--runCount < 0) {
+                errln("Bidi.getLogicalRun(test[" + testNumber
+                      + "]): wrong number of runs compared to Bidi.countRuns() = "
+                      + bidi.countRuns());
+            }
+        }
+        if (runCount != 0) {
+            errln("Bidi.getLogicalRun(test[" + testNumber
+                    + "]): wrong number of runs compared to Bidi.countRuns() = "
+                    + bidi.countRuns());
+        }
+
+        log("\n\n");
+    }
+
+    private void _testReordering(Bidi bidi, int testNumber) {
+        int[] logicalMap1;
+        int[] logicalMap2;
+        int[] logicalMap3;
+        int[] visualMap1;
+        int[] visualMap2;
+        int[] visualMap3;
+        int[] visualMap4 = new int[MAXLEN];
+        byte[] levels;
+        int i, length = bidi.getLength(),
+               destLength = bidi.getResultLength();
+        int runCount, visualIndex, logicalIndex = -1, logicalStart, runLength;
+        boolean odd;
+
+        if(length <= 0) {
+            return;
+        }
+        /* get the logical and visual maps from the object */
+        logicalMap1 = bidi.getLogicalMap();
+        if (logicalMap1 == null) {
+            errln("getLogicalMap in test " + testNumber + " is null");
+            logicalMap1 = new int[0];
+        }
+
+        visualMap1 = bidi.getVisualMap();
+
+        if (visualMap1 == null) {
+            errln("getVisualMap() in test " + testNumber + " is null");
+            visualMap1 = new int[0];
+        }
+
+        /* invert them both */
+        visualMap2 = Bidi.invertMap(logicalMap1);
+        logicalMap2 = Bidi.invertMap(visualMap1);
+
+        /* get them from the levels array, too */
+        levels = bidi.getLevels();
+
+        if (levels == null || levels.length != length) {
+            errln("getLevels() in test " + testNumber + " failed");
+        }
+
+        logicalMap3 = Bidi.reorderLogical(levels);
+        visualMap3 = Bidi.reorderVisual(levels);
+
+        /* get the visual map from the runs, too */
+        try {
+            runCount = bidi.countRuns();
+        } catch (IllegalStateException e) {
+            errln("countRuns() in test " + testNumber + " failed");
+            runCount = 0;
+        }
+
+        logln("\n---- " + runCount + " runs");
+        visualIndex = 0;
+        BidiRun run;
+        for (i = 0; i < runCount; ++i) {
+            run = bidi.getVisualRun(i);
+            if (run == null) {
+                errln("null visual run encountered at index " + i +
+                      ", in test " + testNumber);
+                continue;
+            }
+            odd = run.isOddRun();
+            logicalStart = run.getStart();
+            runLength = run.getLength();
+            log("(" + (run.isOddRun() ? "R" : "L"));
+            log(" @" + run.getStart() + '[' + run.getLength() + "])\n");
+            if (!odd) {
+                do {    /* LTR */
+                    visualMap4[visualIndex++] = logicalStart++;
+                } while (--runLength > 0);
+            } else {
+                logicalStart += runLength;  /* logicalLimit */
+                do {    /* RTL */
+                    visualMap4[visualIndex++] = --logicalStart;
+                } while (--runLength > 0);
+            }
+        }
+        log("\n");
+
+        /* print all the maps */
+        logln("logical maps:");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap1[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap2[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap3[i] + " ");
+        }
+
+        log("\nvisual maps:\n");
+        for (i = 0; i < destLength; ++i) {
+            log(visualMap1[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < destLength; ++i) {
+            log(visualMap2[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(visualMap3[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(visualMap4[i] + " ");
+        }
+        log("\n");
+
+        /* check that the indexes are the same between these and Bidi.getLogical/VisualIndex() */
+        for (i = 0; i < length; ++i) {
+            if (logicalMap1[i] != logicalMap2[i]) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (logicalMap2[" + i +
+                      "] == " + logicalMap2[i] + ")");
+            }
+            if (logicalMap1[i] != logicalMap3[i]) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (logicalMap3[" + i +
+                      "] == " + logicalMap3[i] + ")");
+            }
+            if (visualMap1[i] != visualMap2[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap2[" + i +
+                      "] == " + visualMap2[i] + ")");
+            }
+            if (visualMap1[i] != visualMap3[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap3[" + i +
+                      "] == " + visualMap3[i] + ")");
+            }
+            if (visualMap1[i] != visualMap4[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap4[" + i +
+                      "] == " + visualMap4[i] + ")");
+            }
+            try {
+                visualIndex = bidi.getVisualIndex(i);
+            } catch (Exception e) {
+                errln("Bidi.getVisualIndex(" + i + ") failed in tests[" +
+                      testNumber + "]");
+            }
+            if (logicalMap1[i] != visualIndex) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (Bidi.getVisualIndex(" + i +
+                      ") == " + visualIndex + ")");
+            }
+            try {
+                logicalIndex = bidi.getLogicalIndex(i);
+            } catch (Exception e) {
+                errln("Bidi.getLogicalIndex(" + i + ") failed in tests[" +
+                      testNumber + "]");
+            }
+            if (visualMap1[i] != logicalIndex) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (Bidi.getLogicalIndex(" + i +
+                      ") == " + logicalIndex + ")");
+            }
+        }
+    }
+
+    private String getStringFromDirProps(short[] dirProps) {
+        int i;
+
+        if (dirProps == null) {
+            return null;
+        }
+        int length = dirProps.length;
+        char[] buffer = new char[length];
+
+        /* this part would have to be modified for UTF-x */
+        for (i = 0; i < length; ++i) {
+            buffer[i] = charFromDirProp[dirProps[i]];
+        }
+        return new String(buffer);
+    }
+
+    private void doMisc() {
+    /* Miscellaneous tests to exercize less popular code paths */
+        Bidi bidi = new Bidi(120, 66), bidiLine;
+
+        assertEquals("\nwriteReverse should return an empty string",
+                     "", Bidi.writeReverse("", 0));
+
+        bidi.setPara("", Bidi.LTR, null);
+        assertEquals("\nwriteReordered should return an empty string",
+                     "", bidi.writeReordered(0));
+
+        bidi.setPara("abc", Bidi.LTR, null);
+        assertEquals("\ngetRunStart should return 0",
+                     0, bidi.getRunStart(0));
+        assertEquals("\ngetRunLimit should return 3",
+                     3, bidi.getRunLimit(0));
+
+        bidi.setPara("abc          ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing space at " + i + " should get paragraph level",
+                         Bidi.RTL, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setPara("abc       def", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing space at " + i + " should get paragraph level",
+                         Bidi.RTL, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setPara("abcdefghi    ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing char at " + i + " should get level 2",
+                         2, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+        bidi.setPara("\u200eabc       def", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong result length", 5, bidiLine.getResultLength());
+
+        bidi.setPara("abcdefghi", Bidi.LTR, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong direction #1", Bidi.LTR, bidiLine.getDirection());
+
+        bidi.setPara("", Bidi.LTR, null);
+        byte[] levels = bidi.getLevels();
+        assertEquals("\nWrong number of level elements", 0, levels.length);
+        assertEquals("\nWrong number of runs #1", 0, bidi.countRuns());
+
+        bidi.setPara("          ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong number of runs #2", 1, bidiLine.countRuns());
+
+        bidi.setPara("a\u05d0        bc", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong direction #2", Bidi.MIXED, bidi.getDirection());
+        assertEquals("\nWrong direction #3", Bidi.MIXED, bidiLine.getDirection());
+        assertEquals("\nWrong number of runs #3", 2, bidiLine.countRuns());
+
+        int[] map = Bidi.reorderLogical(null);
+        assertTrue("\nWe should have got a null map #1", map == null);
+        map = Bidi.reorderLogical(new byte[] {0,99,99});
+        assertTrue("\nWe should have got a null map #2", map == null);
+        map = Bidi.reorderVisual(null);
+        assertTrue("\nWe should have got a null map #3", map == null);
+
+        map = Bidi.invertMap(null);
+        assertTrue("\nWe should have got a null map #4", map == null);
+        map = Bidi.invertMap(new int[] {0,1,-1,5,4});
+        assertTrue("\nUnexpected inverted Map",
+                   Arrays.equals(map, new int[] {0,1,-1,-1,4,3}));
+
+        bidi.setPara("", Bidi.LTR, null);
+        map = bidi.getLogicalMap();
+        assertTrue("\nMap should have length==0 #1", map.length == 0);
+        map = bidi.getVisualMap();
+        assertTrue("\nMap should have length==0 #2", map.length == 0);
+
+        /* test BidiRun.toString and allocation of run memory > 1 */
+        bidi.setPara("abc", Bidi.LTR, null);
+        assertEquals("\nWrong run display", "BidiRun 0 - 3 @ 0",
+                     bidi.getLogicalRun(0).toString());
+
+        /* test REMOVE_BIDI_CONTROLS together with DO_MIRRORING */
+        bidi.setPara("abc\u200e", Bidi.LTR, null);
+        String out = bidi.writeReordered(Bidi.REMOVE_BIDI_CONTROLS | Bidi.DO_MIRRORING);
+        assertEquals("\nWrong result #1", "abc", out);
+
+        /* test inverse Bidi with marks and contextual orientation */
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setReorderingOptions(Bidi.OPTION_INSERT_MARKS);
+        bidi.setPara("", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #2", "", out);
+        bidi.setPara("   ", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #3", "   ", out);
+        bidi.setPara("abc", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #4", "abc", out);
+        bidi.setPara("\u05d0\u05d1", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #5", "\u05d1\u05d0", out);
+        bidi.setPara("abc \u05d0\u05d1", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #6", "\u05d1\u05d0 abc", out);
+        bidi.setPara("\u05d0\u05d1 abc", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #7", "\u200fabc \u05d1\u05d0", out);
+        bidi.setPara("\u05d0\u05d1 abc .-=", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #8", "\u200f=-. abc \u05d1\u05d0", out);
+        bidi.orderParagraphsLTR(true);
+        bidi.setPara("\n\r   \n\rabc\n\u05d0\u05d1\rabc \u05d2\u05d3\n\r" +
+                     "\u05d4\u05d5 abc\n\u05d6\u05d7 abc .-=\r\n" +
+                     "-* \u05d8\u05d9 abc .-=", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #9",
+                     "\n\r   \n\rabc\n\u05d1\u05d0\r\u05d3\u05d2 abc\n\r" +
+                     "\u200fabc \u05d5\u05d4\n\u200f=-. abc \u05d7\u05d6\r\n" +
+                     "\u200f=-. abc \u05d9\u05d8 *-", out);
+
+        bidi.setPara("\u05d0 \t", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #10", "\u05D0\u200e \t", out);
+        bidi.setPara("\u05d0 123 \t\u05d1 123 \u05d2", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #11", "\u05d0 \u200e123\u200e \t\u05d2 123 \u05d1", out);
+        bidi.setPara("\u05d0 123 \u0660\u0661 ab", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #12", "\u05d0 \u200e123 \u200e\u0660\u0661 ab", out);
+        bidi.setPara("ab \t", Bidi.RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #13", "\u200f\t ab", out);
+
+        /* check exceeding para level */
+        bidi = new Bidi();
+        bidi.setPara("A\u202a\u05d0\u202aC\u202c\u05d1\u202cE", (byte)(Bidi.MAX_EXPLICIT_LEVEL - 1), null);
+        assertEquals("\nWrong level at index 2", 61, bidi.getLevelAt(2));
+
+        /* check 1-char runs with RUNS_ONLY */
+        bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+        bidi.setPara("a \u05d0 b \u05d1 c \u05d2 d ", Bidi.LTR, null);
+        assertEquals("\nWrong number of runs #4", 14, bidi.countRuns());
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestBidi().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java b/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
new file mode 100644
index 0000000..966c0d5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
@@ -0,0 +1,44 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Regression test for Bidi charFromDirProp
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestCharFromDirProp extends BidiTest {
+
+    /* verify that the exemplar characters have the expected bidi classes */
+    public void testCharFromDirProp() {
+
+        logln("\nEntering TestCharFromDirProp");
+        int i = UCharacterDirection.CHAR_DIRECTION_COUNT;
+        while (i-- > 0) {
+            char c = charFromDirProp[i];
+            int dir = UCharacter.getDirection(c);
+            assertEquals("UCharacter.getDirection(TestData.charFromDirProp[" + i
+                    + "] == U+" + Utility.hex(c) + ") failed", i, dir);
+        }
+        logln("\nExiting TestCharFromDirProp");
+    }
+
+    public static void main(String[] args) {
+        try {
+            new TestCharFromDirProp().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java b/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
new file mode 100644
index 0000000..1c396f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
@@ -0,0 +1,144 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiClassifier;
+
+/**
+ * Regression test for Bidi class override.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestClassOverride extends BidiTest {
+
+    private static final int DEF = TestData.DEF;
+    private static final int L   = TestData.L;
+    private static final int R   = TestData.R;
+    private static final int AL  = TestData.AL;
+    private static final int AN  = TestData.AN;
+    private static final int EN  = TestData.EN;
+    private static final int LRE = TestData.LRE;
+    private static final int RLE = TestData.RLE;
+    private static final int LRO = TestData.LRO;
+    private static final int RLO = TestData.RLO;
+    private static final int PDF = TestData.PDF;
+    private static final int NSM = TestData.NSM;
+    private static final int B   = TestData.B;
+    private static final int S   = TestData.S;
+    private static final int BN  = TestData.BN;
+
+    private static final int[] customClasses = {
+    /*  0/8    1/9    2/A    3/B    4/C    5/D    6/E    7/F  */
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //00-07
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //08-0F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //10-17
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //18-1F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,     R,   DEF, //20-27
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //28-2F
+         EN,    EN,    EN,    EN,    EN,    EN,    AN,    AN, //30-37
+         AN,    AN,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //38-3F
+          L,    AL,    AL,    AL,    AL,    AL,    AL,     R, //40-47
+          R,     R,     R,     R,     R,     R,     R,     R, //48-4F
+          R,     R,     R,     R,     R,     R,     R,     R, //50-57
+          R,     R,     R,   LRE,   DEF,   RLE,   PDF,     S, //58-5F
+        NSM,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //60-67
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //68-6F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //70-77
+        DEF,   DEF,   DEF,   LRO,     B,   RLO,    BN,   DEF  //78-7F
+    };
+    static final int nEntries = customClasses.length;
+
+    static final String textIn  = "JIH.>12->a \u05d0\u05d1 6 ABC78";
+    static final String textOut = "12<.HIJ->a 78CBA 6 \u05d1\u05d0";
+
+    protected static class CustomClassifier extends BidiClassifier {
+
+        public CustomClassifier(Object context) {
+          super(context);
+        }
+        public int classify(int c) {
+            // some (meaningless) action - just for testing purposes
+            return (this.context != null ? ((Integer)context).intValue()
+                            : c >= nEntries ? super.classify(c)
+                            : customClasses[c]);
+        }
+    }
+
+    private void verifyClassifier(Bidi bidi) {
+        BidiClassifier actualClassifier = bidi.getCustomClassifier();
+
+        if (this.classifier == null) {
+            if (actualClassifier != null) {
+                errln("Bidi classifier is not yet set, but reported as not null");
+            }
+        } else {
+            Class expectedClass = this.classifier.getClass();
+            assertTrue("null Bidi classifier", actualClassifier != null);
+            if (actualClassifier == null) {
+                return;
+            }
+            if (expectedClass.isInstance(actualClassifier)) {
+                Object context = classifier.getContext();
+                if (context == null) {
+                    if (actualClassifier.getContext() != null) {
+                        errln("Unexpected context, should be null");
+                    }
+                } else {
+                    assertEquals("Unexpected classifier context", context,
+                                 actualClassifier.getContext());
+                    assertEquals("Unexpected context's content",
+                                 ((Integer)context).intValue(),
+                                 bidi.getCustomizedClass('a'));
+                }
+            } else {
+                errln("Bidi object reports classifier is an instance of " +
+                      actualClassifier.getClass().getName() +
+                      ",\nwhile the expected classifier should be an " +
+                      "instance of " + expectedClass);
+            }
+        }
+    }
+
+    CustomClassifier classifier = null;
+
+    public void testClassOverride()
+    {
+        Bidi bidi;
+
+        logln("\nEntering TestClassOverride\n");
+
+        bidi = new Bidi();
+        verifyClassifier(bidi);
+
+        classifier = new CustomClassifier(new Integer(TestData.R));
+        bidi.setCustomClassifier(classifier);
+        verifyClassifier(bidi);
+
+        classifier.setContext(null);
+        verifyClassifier(bidi);
+
+        bidi.setPara(textIn, Bidi.LTR, null);
+
+        String out = bidi.writeReordered(Bidi.DO_MIRRORING);
+        assertEquals("Actual and expected output mismatch", textOut, out);
+
+        logln("\nExiting TestClassOverride\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestClassOverride().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java b/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
new file mode 100644
index 0000000..65c1b9a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -0,0 +1,297 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+import java.text.AttributedString;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.awt.font.NumericShaper;
+
+/**
+ * Regression test for java.text.Bidi compatibility
+ *
+ * @author Matitiahu Allouche
+ */
+
+public class TestCompatibility extends BidiTest {
+
+    void compareBidi(Bidi bidi, java.text.Bidi jbidi)
+    {
+        byte paraLevel = bidi.getParaLevel();
+        if (bidi.baseIsLeftToRight() != jbidi.baseIsLeftToRight()) {
+            errln("Discrepancy in baseIsLeftToRight for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.baseIsLeftToRight() +
+                  "\n   jbidi: " + jbidi.baseIsLeftToRight());
+        }
+        if (bidi.getBaseLevel() != jbidi.getBaseLevel()) {
+            errln("Discrepancy in getBaseLevel for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.getBaseLevel() +
+                  "\n   jbidi: " + jbidi.getBaseLevel());
+        }
+        if (bidi.getLength() != jbidi.getLength()) {
+            errln("Discrepancy in getLength for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.getLength() +
+                  "\n   jbidi: " + jbidi.getLength());
+        }
+        int len = bidi.getLength();
+        for (int i = 0; i < len; i++) {
+            if (bidi.getLevelAt(i) != jbidi.getLevelAt(i)) {
+                errln("Discrepancy in getLevelAt for offset " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getLevelAt(i) +
+                      "\n   jbidi: " + jbidi.getLevelAt(i));
+            }
+        }
+        if (bidi.getRunCount() != jbidi.getRunCount()) {
+            if (!(len == 0 && jbidi.getRunCount() == 1)) {
+                errln("Discrepancy in getRunCount for case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunCount() +
+                      "\n   jbidi: " + jbidi.getRunCount());
+            }
+        }
+        int runCount = bidi.getRunCount();
+        for (int i = 0; i < runCount; i++) {
+            if (bidi.getRunLevel(i) != jbidi.getRunLevel(i)) {
+                errln("Discrepancy in getRunLevel for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunLevel(i) +
+                      "\n   jbidi: " + jbidi.getRunLevel(i));
+            }
+            if (bidi.getRunLimit(i) != jbidi.getRunLimit(i)) {
+                errln("Discrepancy in getRunLimit for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunLimit(i) +
+                      "\n   jbidi: " + jbidi.getRunLimit(i));
+            }
+            if (bidi.getRunStart(i) != jbidi.getRunStart(i)) {
+                errln("Discrepancy in getRunStart for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunStart(i) +
+                      "\n   jbidi: " + jbidi.getRunStart(i));
+            }
+        }
+        if (bidi.isLeftToRight() != jbidi.isLeftToRight()) {
+            errln("Discrepancy in isLeftToRight for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isLeftToRight() +
+                  "\n   jbidi: " + jbidi.isLeftToRight());
+        }
+        if (bidi.isMixed() != jbidi.isMixed()) {
+            errln("Discrepancy in isMixed for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isMixed() +
+                  "\n   jbidi: " + jbidi.isMixed());
+        }
+        if (bidi.isRightToLeft() != jbidi.isRightToLeft()) {
+            errln("Discrepancy in isRightToLeft for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isRightToLeft() +
+                  "\n   jbidi: " + jbidi.isRightToLeft());
+        }
+        char[] text = bidi.getText();
+        if (Bidi.requiresBidi(text, 0, text.length) !=
+            java.text.Bidi.requiresBidi(text, 0, text.length)) {
+            errln("Discrepancy in requiresBidi for case " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + Bidi.requiresBidi(text, 0, text.length) +
+                  "\n   jbidi: " + java.text.Bidi.requiresBidi(text, 0, text.length));
+        }
+        /* skip the next test, since the toString implementation are
+         * not compatible
+        if (!bidi.toString().equals(jbidi.toString())) {
+            errln("Discrepancy in toString for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString() +
+                  "\n    bidi: " + bidi.toString() +
+                  "\n   jbidi: " + jbidi.toString()));
+        }
+         */
+    }
+
+    public void testCompatibility()
+    {
+        // This test case does not work well on Java 1.4/1.4.1 environment,
+        // because of insufficient Bidi implementation in these versions.
+        String javaVersion = System.getProperty("java.version");
+        if (javaVersion.startsWith("1.4.0") || javaVersion.startsWith("1.4.1")) {
+            logln("\nSkipping TestCompatibility.  The test case is known to fail on Java "
+                    + javaVersion + "\n");
+            return;
+        }
+        logln("\nEntering TestCompatibility\n");
+        /* check constant field values */
+        int val;
+        val = Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT;
+        val = Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT;
+        val = Bidi.DIRECTION_LEFT_TO_RIGHT;
+        val = Bidi.DIRECTION_RIGHT_TO_LEFT;
+        logln("last val = " + val);
+
+        String[] data = {"",
+                         /* the following 2 cases are skipped, because
+                          * java.text.Bidi has bugs which cause discrepancies
+                         "abc",
+                         "ABC",
+                          */
+                         "abc def",
+                         "ABC DEF",
+                         "abc 123 def",
+                         "ABC 123 DEF",
+                         "abc DEF ghi",
+                         "abc DEF 123 xyz",
+                         "abc GHIJ 12345 def KLM"
+                        };
+        int dataCnt = data.length;
+        Bidi bidi;
+        java.text.Bidi jbidi;
+        for (int i = 0; i < dataCnt; i++) {
+            String src = pseudoToU16(data[i]);
+            bidi = new Bidi(src, Bidi.DIRECTION_LEFT_TO_RIGHT);
+            jbidi = new java.text.Bidi(src, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+            compareBidi(bidi, jbidi);
+            bidi = new Bidi(src, Bidi.DIRECTION_RIGHT_TO_LEFT);
+            jbidi = new java.text.Bidi(src, java.text.Bidi.DIRECTION_RIGHT_TO_LEFT);
+            compareBidi(bidi, jbidi);
+            char[] chars = src.toCharArray();
+            bidi = new Bidi(chars, 0, null, 0, chars.length, Bidi.DIRECTION_LEFT_TO_RIGHT);
+            jbidi = new java.text.Bidi(chars, 0, null, 0, chars.length, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+            compareBidi(bidi, jbidi);
+        }
+        /* check bogus flags */
+        bidi = new Bidi("abc", 999);
+        assertEquals("\nDirection should be LTR", Bidi.LTR, bidi.getDirection());
+        /* check constructor with overriding embeddings */
+        bidi = new Bidi(new char[] { 's', 's', 's' }, 0,
+                        new byte[] {(byte) -7, (byte) -2, (byte) -3 },
+                        0, 3, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(new char[] { 's', 's', 's' }, 0,
+                        new byte[] {(byte) -7, (byte) -2, (byte) -3 },
+                        0, 3, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+
+        AttributedString as = new AttributedString("HEBREW 123 english MOREHEB");
+        as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
+        as.addAttribute(TextAttribute.NUMERIC_SHAPING, NumericShaper.getShaper(NumericShaper.ARABIC));
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(1), 0, 26);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 0, 6);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 19, 26);
+        AttributedCharacterIterator aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        String out = bidi.writeReordered(0);
+        logln("Output #1 of Bidi(AttributedCharacterIterator): " + out);
+
+        as = new AttributedString("HEBREW 123 english MOREHEB");
+        as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(0), 0, 26);
+        aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output #2 of Bidi(AttributedCharacterIterator): " + out);
+
+        as = new AttributedString("HEBREW 123 english MOREHEB");
+        aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output #3 of Bidi(AttributedCharacterIterator): " + out);
+
+        char[] text = "abc==(123)==>def".toCharArray();
+        bidi = new Bidi(text, 3, null, 0, 10, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(text, 3, null, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,null,0,10, DEFAULT_LTR): " + out);
+        bidi = new Bidi(text, 3, null, 0, 10, Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        jbidi = new java.text.Bidi(text, 3, null, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,null,0,10, DEFAULT_RTL): " + out);
+        byte[] levels = new byte[] {0,0,0,-1,-1,-1,0,0,0,0};
+        bidi = new Bidi(text, 3, levels, 0, 10, Bidi.DIRECTION_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(text, 3, levels, 0, 10, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,levels,0,10, LTR): " + out);
+        bidi = new Bidi(text, 3, levels, 0, 10, Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        jbidi = new java.text.Bidi(text, 3, levels, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,levels,0,10, DEFAULT_RTL): " + out);
+
+        /* test reorderVisually */
+        byte[] myLevels = new byte[] {1,2,0,1,2,1,2,0,1,2};
+        Character[] objects = new Character[10];
+        levels = new byte[objects.length];
+        for (int i = 0; i < objects.length; i++) {
+            objects[i] = new Character((char)('a'+i));
+            levels[i] = myLevels[i];
+        }
+        Bidi.reorderVisually(levels, 3, objects, 3, 7);
+        String strbidi = "";
+        for (int i = 0; i < objects.length; i++) {
+            strbidi += objects[i].toString();
+        }
+        for (int i = 0; i < objects.length; i++) {
+            objects[i] = new Character((char)('a'+i));
+            levels[i] = myLevels[i];
+        }
+        java.text.Bidi.reorderVisually(levels, 3, objects, 3, 7);
+        String strjbidi = "";
+        for (int i = 0; i < objects.length; i++) {
+            strjbidi += objects[i].toString();
+        }
+        if (!strjbidi.equals(strbidi)) {
+            errln("Discrepancy in reorderVisually " +
+                  "\n      bidi: " + strbidi +
+                  "\n     jbidi: " + strjbidi);
+        } else {
+            logln("Correct match in reorderVisually " +
+                  "\n      bidi: " + strbidi +
+                  "\n     jbidi: " + strjbidi);
+        }
+
+        logln("\nExiting TestCompatibility\n");
+    }
+
+    public static void main(String[] args) {
+        try {
+            new TestCompatibility().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/bidi/TestData.java b/src/com/ibm/icu/dev/test/bidi/TestData.java
new file mode 100644
index 0000000..19ed4d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestData.java
@@ -0,0 +1,258 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.text.Bidi;
+
+
+/**
+ * Data and helper methods for Bidi regression tests
+ *
+ * Ported from C by Lina Kemmel, Matitiahu Allouche
+ *
+ */
+public class TestData {
+    protected static final int L   = UCharacterDirection.LEFT_TO_RIGHT;
+    protected static final int R   = UCharacterDirection.RIGHT_TO_LEFT;
+    protected static final int EN  = UCharacterDirection.EUROPEAN_NUMBER;
+    protected static final int ES  = UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR;
+    protected static final int ET  = UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR;
+    protected static final int AN  = UCharacterDirection.ARABIC_NUMBER;
+    protected static final int CS  = UCharacterDirection.COMMON_NUMBER_SEPARATOR;
+    protected static final int B   = UCharacterDirection.BLOCK_SEPARATOR;
+    protected static final int S   = UCharacterDirection.SEGMENT_SEPARATOR;
+    protected static final int WS  = UCharacterDirection.WHITE_SPACE_NEUTRAL;
+    protected static final int ON  = UCharacterDirection.OTHER_NEUTRAL;
+    protected static final int LRE = UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING;
+    protected static final int LRO = UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE;
+    protected static final int AL  = UCharacterDirection.RIGHT_TO_LEFT_ARABIC;
+    protected static final int RLE = UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING;
+    protected static final int RLO = UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE;
+    protected static final int PDF = UCharacterDirection.POP_DIRECTIONAL_FORMAT;
+    protected static final int NSM = UCharacterDirection.DIR_NON_SPACING_MARK;
+    protected static final int BN  = UCharacterDirection.BOUNDARY_NEUTRAL;
+    protected static final int DEF = Bidi.CLASS_DEFAULT;
+
+    protected static final String[] dirPropNames = {
+        "L", "R", "EN", "ES", "ET", "AN", "CS", "B", "S", "WS", "ON",
+        "LRE", "LRO", "AL", "RLE", "RLO", "PDF", "NSM", "BN"
+    };
+    protected static final short[][] testDirProps = {
+        { L, L, WS, L, WS, EN, L, B },                                          // 0
+        { R, AL, WS, R, AL, WS, R },                                            // 1
+        { L, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },                         // 2
+        { L, AL, AL, AL, L, AL, AL, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },  // 3
+        { AL, R, AL, WS, EN, CS, WS, EN, CS, EN, WS, R, R, WS, L, L },          // 4
+        { R, EN, NSM, ET },                                                     // 5
+        { RLE, WS, R, R, R, WS, PDF, WS, B },                                   // 6
+        { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, AN, RLO, NSM, LRE, PDF, RLE, ES, EN, ON },           // 7
+        { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, BN, CS, RLO, S, PDF, EN, LRO, AN, ES },         // 8
+        { S, WS, NSM, RLE, WS, L, L, L, WS, LRO, WS, R, R, R, WS, RLO, WS, L, L,
+            L, WS, LRE, WS, R, R, R, WS, PDF, WS, L, L, L, WS, PDF, WS, AL, AL,
+            AL, WS, PDF, WS, L, L, L, WS, PDF, WS, L, L, L, WS, PDF, ON, PDF,
+            BN, BN, ON, PDF },                                                  // 9
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 10
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 11
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 12
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 13
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 14
+        { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,
+            LRE, LRO, B },                                                      // 15
+        { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,
+            LRE, LRO, B },                                                      // 16
+        { RLO, RLO, AL, AL, WS, EN, ES, ON, WS, S, S, PDF, LRO, WS, AL, ET, RLE,
+            ON, EN, B },                                                        // 17
+        { R, L, CS, L },                                                        // 18
+        { L, L, L, WS, L, L, L, WS, L, L, L },                                  // 19
+        { R, R, R, WS, R, R, R, WS, R, R, R },                                  // 20
+        { L },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final byte[][] testLevels = {
+        { 0, 0, 0, 0, 0, 0, 0, 0 },                                             // 0
+        { 1, 1, 1, 1, 1, 1, 1 },                                                // 1
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                                 // 2
+        { 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },               // 3
+        { 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2 },                     // 4
+        { 1, 2, 2, 2 },                                                         // 5
+        { 1, 1, 1, 1, 1, 1, 1, 1, 1 },                                          // 6
+        { 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
+            62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61,
+            61, 61, 61, 61, 61, 61 },                                           // 7
+        { 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+            60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0,
+            0, 62, 62, 62, 62, 60 },                                            // 8
+        { 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4,
+            5, 5, 5, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                               // 9
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 10
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 11
+        { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2,
+            2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 3,
+            4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4,
+            2 },                                                                // 12
+        { 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6,
+            6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 5, 5, 6, 6, 5, 5,
+            6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6,
+            5 },                                                                // 13
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 14
+        { 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0 },         // 15
+        { 0, 0, 1, 1, 1, 0 },                                                   // 16
+        { 1 },                                                                  // 17
+        { 2 },                                                                  // 18
+        { 2, 2, 2, 2, 2, 2, 2, 1 },                                             // 19
+        { 1, 1, 1, 1, 1, 1, 1, 0 },                                             // 20
+        { 2 },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final int[][] testVisualMaps = {
+        { 0, 1, 2, 3, 4, 5, 6, 7 },                                             // 0
+        { 6, 5, 4, 3, 2, 1, 0 },                                                // 1
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },                               // 2
+        { 0, 3, 2, 1, 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },       // 3
+        { 15, 14, 13, 12, 11, 10, 9, 6, 7, 8, 5, 4, 3, 2, 0, 1 },               // 4
+        { 3, 0, 1, 2 },                                                         // 5
+        { 8, 7, 6, 5, 4, 3, 2, 1, 0 },                                          // 6
+        { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+            26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, 6, 5, 4, 3,
+            2, 1, 0 },                                                          // 7
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+            37, 38, 39 },                                                       // 8
+        { 0, 1, 2, 44, 43, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 30, 29, 28, 27,
+            26, 20, 21, 24, 23, 22, 25, 19, 18, 17, 16, 15, 14, 32, 33, 34, 35,
+            36, 37, 38, 39, 40, 41, 42, 3, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+            54, 55, 56, 57 },                                                   // 9
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 10
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 11
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 12
+        { 69, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, 54, 53,
+            52, 51, 50, 49, 42, 43, 44, 45, 46, 47, 48, 41, 40, 39, 38, 37, 36,
+            35, 33, 34, 32, 30, 31, 29, 28, 26, 27, 25, 24, 22, 23, 21, 20, 19,
+            18, 17, 16, 15, 7, 8, 9, 10, 11, 12, 13, 14, 6, 1, 2, 3, 4, 5, 0 }, // 13
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 14
+        { 0, 1, 15, 14, 13, 12, 11, 10, 4, 3, 2, 5, 6, 7, 8, 9, 16, 17, 18, 19 }, // 15
+        { 0, 1, 4, 3, 2, 5 },                                                   // 16
+        { 0 },                                                                  // 17
+        { 0 },                                                                  // 18
+        { 1, 2, 3, 4, 5, 6, 7, 0 },                                             // 19
+        { 6, 5, 4, 3, 2, 1, 0, 7 },                                             // 20
+        { 0 },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final byte[] testParaLevels = {
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_RTL,
+        2, 5, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.RTL, Bidi.LTR, Bidi.RTL,
+        Bidi.LEVEL_DEFAULT_LTR
+    };
+
+    protected static final byte[] testDirections = {
+        Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,
+        Bidi.RTL, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,
+        Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.RTL,
+        Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.LTR
+    };
+
+    protected static final byte[] testResultLevels = new byte[] {
+        Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.LTR, Bidi.RTL, Bidi.RTL, Bidi.RTL,
+        Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, 2, 5, Bidi.LTR,
+        Bidi.LTR, Bidi.LTR, Bidi.RTL, 2, Bidi.RTL, Bidi.LTR, Bidi.RTL, Bidi.LTR
+    };
+
+    protected static final byte[] testLineStarts = {
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 13,
+        2, 0, 0, -1, -1
+    };
+
+    protected static final byte[] testLineLimits = {
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 14,
+        3, 8, 8, -1, -1
+    };
+
+    protected short[] dirProps;
+    protected int lineStart;
+    protected int lineLimit;
+    protected byte direction;
+    protected byte paraLevel;
+    protected byte resultLevel;
+    protected byte[] levels;
+    protected int[] visualMap;
+
+    private TestData(short[] dirProps, int lineStart, int lineLimit,
+            byte direction, byte paraLevel, byte resultLevel, byte[] levels,
+            int[] visualMap) {
+        this.dirProps = dirProps;
+        this.lineStart = lineStart;
+        this.lineLimit = lineLimit;
+        this.direction = direction;
+        this.paraLevel = paraLevel;
+        this.resultLevel = resultLevel;
+        this.levels = levels;
+        this.visualMap = visualMap;
+    }
+
+    protected static TestData getTestData(int testNumber) {
+        return new TestData(testDirProps[testNumber],
+                testLineStarts[testNumber], testLineLimits[testNumber],
+                testDirections[testNumber], testParaLevels[testNumber],
+                testResultLevels[testNumber], testLevels[testNumber],
+                testVisualMaps[testNumber]);
+    }
+
+    protected static int testCount() {
+        return testDirProps.length;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java b/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
new file mode 100644
index 0000000..e9726fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
@@ -0,0 +1,127 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for Bidi failure recovery
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestFailureRecovery extends BidiTest {
+
+    public void testFailureRecovery()
+    {
+        logln("\nEntering TestFailureRecovery\n");
+        Bidi bidi = new Bidi();
+        try {
+            bidi.setPara("abc", (byte)(Bidi.LEVEL_DEFAULT_LTR - 1), null);
+            errln("Bidi.setPara did not fail when passed too big para level");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for bidi.setPara(..., Bidi.LEVEL_DEFAULT_LTR - 1, ...)"
+                    + " as expected: " + e.getMessage());
+        }
+        try {
+            bidi.setPara("abc", (byte)(-1), null);
+            errln("Bidi.setPara did not fail when passed negative para level");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for bidi.setPara(..., -1, ...)"
+                    + " as expected: " + e.getMessage());
+        }
+        try {
+            Bidi.writeReverse(null, 0);
+            errln("Bidi.writeReverse did not fail when passed a null string");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi.writeReverse(null) as expected: "
+                  + e.getMessage());
+        }
+        bidi = new Bidi();
+        try {
+            bidi.setLine(0, 1);
+            errln("bidi.setLine did not fail when called before valid setPara()");
+        } catch (IllegalStateException e) {
+            logln("OK: Got exception for Bidi.setLine(0, 1) as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi.getDirection();
+            errln("bidi.getDirection did not fail when called before valid setPara()");
+        } catch (IllegalStateException e) {
+            logln("OK: Got exception for Bidi.getDirection() as expected: "
+                  + e.getMessage());
+        }
+        bidi.setPara("abc", Bidi.LTR, null);
+        try {
+            bidi.getLevelAt(3);
+            errln("bidi.getLevelAt did not fail when called with bad argument");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi.getLevelAt(3) as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi = new Bidi(-1, 0);
+            errln("Bidi constructor did not fail when called with bad argument");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi(-1,0) as expected: "
+                  + e.getMessage());
+        }
+        bidi = new Bidi(2, 1);
+        try {
+            bidi.setPara("abc", Bidi.LTR, null);
+            errln("setPara did not fail when called with text too long");
+        } catch (OutOfMemoryError e) {
+            logln("OK: Got exception for setPara(\"abc\") as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi.setPara("=2", Bidi.RTL, null);
+            bidi.countRuns();
+            errln("countRuns did not fail when called for too many runs");
+        } catch (OutOfMemoryError e) {
+            logln("OK: Got exception for countRuns as expected: "
+                  + e.getMessage());
+        }
+        int rm = bidi.getReorderingMode();
+        bidi.setReorderingMode(Bidi.REORDER_DEFAULT - 1);
+        if (rm != bidi.getReorderingMode()) {
+            errln("setReorderingMode with bad argument #1 should have no effect");
+        }
+        bidi.setReorderingMode(9999);
+        if (rm != bidi.getReorderingMode()) {
+            errln("setReorderingMode with bad argument #2 should have no effect");
+        }
+        /* Try a surrogate char */
+        bidi = new Bidi();
+        bidi.setPara("\uD800\uDC00", Bidi.RTL, null);
+        if (bidi.getDirection() != Bidi.MIXED) {
+            errln("getDirection for 1st surrogate char should be MIXED");
+        }
+        byte[] levels = new byte[] {6,5,4};
+        try {
+            bidi.setPara("abc", (byte)5, levels);
+            errln("setPara did not fail when called with bad levels");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for setPara(..., levels) as expected: "
+                  + e.getMessage());
+        }
+
+        logln("\nExiting TestFailureRecovery\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestFailureRecovery().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestInverse.java b/src/com/ibm/icu/dev/test/bidi/TestInverse.java
new file mode 100644
index 0000000..0af1f95
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestInverse.java
@@ -0,0 +1,272 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for the basic "inverse" Bidi mode.
+ *
+ * ported from C by Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestInverse extends BidiTest {
+
+    private int countRoundtrips = 0;
+    private int countNonRoundtrips = 0;
+
+    static final String[] testCases = {
+        "\u006c\u0061\u0028\u0074\u0069\u006e\u0020\u05d0\u05d1\u0029\u05d2\u05d3",
+        "\u006c\u0061\u0074\u0020\u05d0\u05d1\u05d2\u0020\u0031\u0032\u0033",
+        "\u006c\u0061\u0074\u0020\u05d0\u0028\u05d1\u05d2\u0020\u0031\u0029\u0032\u0033",
+        "\u0031\u0032\u0033\u0020\u05d0\u05d1\u05d2\u0020\u0034\u0035\u0036",
+        "\u0061\u0062\u0020\u0061\u0062\u0020\u0661\u0662"
+    };
+
+    public void testInverse() {
+        Bidi bidi;
+        int i;
+
+        logln("\nEntering TestInverse\n");
+        bidi = new Bidi();
+        log("inverse Bidi: testInverse(L) with " + testCases.length +
+            " test cases ---\n");
+        for(i = 0; i < testCases.length; ++i) {
+            logln("Testing case " + i);
+            _testInverseBidi(bidi, testCases[i], Bidi.DIRECTION_LEFT_TO_RIGHT);
+        }
+
+        log("inverse Bidi: testInverse(R) with " + testCases.length +
+            " test cases ---\n");
+        for (i = 0; i < testCases.length; ++i) {
+            logln("Testing case " + i);
+            _testInverseBidi(bidi, testCases[i], Bidi.DIRECTION_RIGHT_TO_LEFT);
+        }
+
+        _testManyInverseBidi(bidi, Bidi.DIRECTION_LEFT_TO_RIGHT);
+        _testManyInverseBidi(bidi, Bidi.DIRECTION_RIGHT_TO_LEFT);
+
+        logln("inverse Bidi: rountrips: " + countRoundtrips +
+              "   non-roundtrips: " + countNonRoundtrips);
+
+        _testWriteReverse();
+
+        _testManyAddedPoints();
+
+        _testMisc();
+
+        logln("\nExiting TestInverse\n");
+    }
+
+    private static final char[][] repeatSegments = {
+        { 0x61, 0x62 },     /* L */
+        { 0x5d0, 0x5d1 },   /* R */
+        { 0x627, 0x628 },   /* AL */
+        { 0x31, 0x32 },     /* EN */
+        { 0x661, 0x662 },   /* AN */
+        { 0x20, 0x20 }      /* WS (N) */
+    };
+    private static final int COUNT_REPEAT_SEGMENTS = 6;
+
+    private void _testManyInverseBidi(Bidi bidi, int direction) {
+        char[] text = { 0, 0, 0x20, 0, 0, 0x20, 0, 0 };
+        int i, j, k;
+
+        log("inverse Bidi: testManyInverseBiDi(" +
+            (direction == Bidi.DIRECTION_LEFT_TO_RIGHT ? 'L' : 'R') +
+            ") - test permutations of text snippets ---\n");
+        for (i = 0; i < COUNT_REPEAT_SEGMENTS; ++i) {
+            text[0] = repeatSegments[i][0];
+            text[1] = repeatSegments[i][1];
+            for (j = 0; j < COUNT_REPEAT_SEGMENTS; ++j) {
+                text[3] = repeatSegments[j][0];
+                text[4] = repeatSegments[j][1];
+                for (k = 0; k < COUNT_REPEAT_SEGMENTS; ++k) {
+                    text[6] = repeatSegments[k][0];
+                    text[7] = repeatSegments[k][1];
+
+                    log("inverse Bidi: testManyInverseBiDi()[" +
+                        i + " " + j + " " + k + "]\n");
+                    _testInverseBidi(bidi, new String(text), direction);
+                }
+            }
+        }
+    }
+
+    private void _testInverseBidi(Bidi bidi, String src, int direction) {
+        String visualLTR, logicalDest, visualDest;
+        try {
+            if (direction == Bidi.DIRECTION_LEFT_TO_RIGHT) {
+                log("inverse Bidi: testInverse(L)\n");
+
+                /* convert visual to logical */
+                bidi.setInverse(true);
+                if (!bidi.isInverse()) {
+                    err("Error while doing setInverse(true)\n");
+                }
+                bidi.setPara(src, Bidi.LTR, null);
+                if (!Arrays.equals(src.toCharArray(), bidi.getText())) {
+                    err("Wrong value returned by getText\n");
+                }
+                if (!src.equals(bidi.getTextAsString())) {
+                    err("Wrong value returned by getTextAsString\n");
+                }
+                logicalDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                  Bidi.INSERT_LRM_FOR_NUMERIC);
+                log("  v ");
+                printUnicode(src.toCharArray(), bidi.getLevels());
+                log("\n");
+
+                /* convert back to visual LTR */
+                bidi.setInverse(false);
+                if (bidi.isInverse()) {
+                    err("Error while doing setInverse(false)\n");
+                }
+                bidi.setPara(logicalDest, Bidi.LTR, null);
+                visualDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                 Bidi.REMOVE_BIDI_CONTROLS);
+            } else {
+                logln("inverse Bidi: testInverse(R)\n");
+
+                /* reverse visual from RTL to LTR */
+                visualLTR = Bidi.writeReverse(src, 0);
+                log("  vr");
+                printUnicode(src.toCharArray(), null);
+                log("\n");
+
+                /* convert visual RTL to logical */
+                bidi.setInverse(true);
+                bidi.setPara(visualLTR, Bidi.LTR, null);
+                logicalDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                  Bidi.INSERT_LRM_FOR_NUMERIC);
+                log("  vl");
+                printUnicode(visualLTR.toCharArray(), bidi.getLevels());
+                log("\n");
+
+                /* convert back to visual RTL */
+                bidi.setInverse(false);
+                bidi.setPara(logicalDest, Bidi.LTR, null);
+                visualDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                             Bidi.REMOVE_BIDI_CONTROLS | Bidi.OUTPUT_REVERSE);
+            }
+            log("  l ");
+            printUnicode(logicalDest.toCharArray(), bidi.getLevels());
+            log("\n");
+            log("  v ");
+            printUnicode(visualDest.toCharArray(), null);
+            log("\n");
+        } catch (Exception e) {
+            errln("inverse Bidi: *** failed");
+            visualDest = null;
+        }
+
+        /* check and print results */
+        if (src.equals(visualDest)) {
+            ++countRoundtrips;
+            log(" + roundtripped\n");
+        } else {
+            ++countNonRoundtrips;
+            log(" * did not roundtrip\n");
+        }
+    }
+
+    private void _testWriteReverse() {
+        /* U+064e and U+0650 are combining marks (Mn) */
+        final String
+            forward = "\u200f\u0627\u064e\u0650\u0020\u0028\u0031\u0029",
+            reverseKeepCombining =
+                "\u0029\u0031\u0028\u0020\u0627\u064e\u0650\u200f",
+            reverseRemoveControlsKeepCombiningDoMirror =
+                "\u0028\u0031\u0029\u0020\u0627\u064e\u0650";
+
+        String reverse;
+
+        /* test Bidi.writeReverse() with "interesting" options */
+        try {
+            reverse = Bidi.writeReverse(forward, Bidi.KEEP_BASE_COMBINING);
+        } catch (Exception e) {
+            errln("Failure in Bidi.writeReverse(KEEP_BASE_COMBINING)");
+            reverse = null;
+        }
+        assertEquals("\nFailure in " + getClass().toString() +
+                     " in Bidi.writeReverse", reverseKeepCombining,
+                     reverse, forward, null, "KEEP_BASE_COMBINING", null);
+
+        try {
+            reverse = Bidi.writeReverse(forward, Bidi.REMOVE_BIDI_CONTROLS |
+                                        Bidi.DO_MIRRORING | Bidi.KEEP_BASE_COMBINING);
+        } catch (Exception e) {
+            errln("Failure in Bidi.writeReverse(KEEP_BASE_COMBINING)");
+        }
+        assertEquals("\nFailure in " + getClass().toString() +
+                     " in Bidi.writeReverse",
+                     reverseRemoveControlsKeepCombiningDoMirror,
+                     reverse, forward, null,
+                     "REMOVE_BIDI_CONTROLS|DO_MIRRORING|KEEP_BASE_COMBINING",
+                     null);
+    }
+
+    private void printUnicode(char[] chars, byte[] levels) {
+        int i;
+
+        log("{ ");
+        for (i = 0; i < chars.length; ++i) {
+            log("0x" + Utility.hex(chars[i]));
+            if (levels != null) {
+                log("." + levels[i]);
+            }
+            log("   ");
+        }
+        log(" }");
+    }
+
+    private void _testManyAddedPoints() {
+        Bidi bidi = new Bidi();
+        char[] text = new char[90];
+        for (int i = 0; i < text.length; i+=3) {
+            text[i] = 'a';
+            text[i+1] = '\u05d0';
+            text[i+2] = '3';
+        }
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setReorderingOptions(Bidi.OPTION_INSERT_MARKS);
+        bidi.setPara(text, Bidi.LTR, null);
+        String out = bidi.writeReordered(0);
+        char[] expected = new char[120];
+        for (int i = 0; i < expected.length; i+=4) {
+            expected[i] = 'a';
+            expected[i+1] = '\u05d0';
+            expected[i+2] = '\u200e';
+            expected[i+3] = '3';
+        }
+        assertEquals("\nInvalid output with many added points",
+                     new String(expected), out);
+    }
+
+    private void _testMisc() {
+        Bidi bidi = new Bidi();
+        bidi.setInverse(true);
+        bidi.setPara("   ", Bidi.RTL, null);
+        String out = bidi.writeReordered(Bidi.OUTPUT_REVERSE | Bidi.INSERT_LRM_FOR_NUMERIC);
+        assertEquals("\nInvalid output with RLM at both sides",
+                     "\u200f   \u200f", out);
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestInverse().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java b/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
new file mode 100644
index 0000000..a84bde1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
@@ -0,0 +1,461 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * Regression test for Bidi multiple paragraphs
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestMultipleParagraphs extends BidiTest {
+
+    private static final String text =
+        "__ABC\u001c"                  /* Para #0 offset 0 */
+        + "__\u05d0DE\u001c"           /*       1        6 */
+        + "__123\u001c"                /*       2       12 */
+        + "\r\n"                       /*       3       18 */
+        + "FG\r"                       /*       4       20 */
+        + "\r"                         /*       5       23 */
+        + "HI\r\n"                     /*       6       24 */
+        + "\r\n"                       /*       7       28 */
+        + "\n"                         /*       8       30 */
+        + "\n"                         /*       9       31 */
+        + "JK\u001c";                  /*      10       32 */
+    private static final int paraCount = 11;
+    private static final int[] paraBounds = {
+        0, 6, 12, 18, 20, 23, 24, 28, 30, 31, 32, 35
+    };
+    private static final byte[] paraLevels = {
+        Bidi.LTR, Bidi.RTL, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_RTL, 22, 23
+    };
+    private static final byte[][] multiLevels = {
+        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+        {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        {0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0},
+        {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
+        {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}
+    };
+    private static final String text2 = "\u05d0 1-2\u001c\u0630 1-2\u001c1-2";
+    private static final byte[] levels2 = {
+        1, 1, 2, 2, 2, 0, 1, 1, 2, 1, 2, 0, 2, 2, 2
+    };
+    private static final char[] multiparaTestString = {
+        0x5de, 0x5e0, 0x5e1, 0x5d4, 0x20,  0x5e1, 0x5e4, 0x5da,
+        0x20,  0xa,   0xa,   0x41,  0x72,  0x74,  0x69,  0x73,
+        0x74,  0x3a,  0x20,  0x5de, 0x5e0, 0x5e1, 0x5d4, 0x20,
+        0x5e1, 0x5e4, 0x5da, 0x20,  0xa,   0xa,   0x41,  0x6c,
+        0x62,  0x75,  0x6d,  0x3a,  0x20,  0x5de, 0x5e0, 0x5e1,
+        0x5d4, 0x20,  0x5e1, 0x5e4, 0x5da, 0x20,  0xa,   0xa,
+        0x54,  0x69,  0x6d,  0x65,  0x3a,  0x20,  0x32,  0x3a,
+        0x32,  0x37,  0xa,  0xa
+    };
+    private static final byte[] multiparaTestLevels = {
+        1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 1, 1, 1, 1, 1,
+        1, 1, 1, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 1, 1, 1,
+        1, 1, 1, 1, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0
+    };
+
+    public void testMultipleParagraphs()
+    {
+        byte gotLevel;
+        byte[] gotLevels;
+        boolean orderParagraphsLTR;
+        String src;
+        Bidi bidi = new Bidi();
+        Bidi bidiLine;
+        int count, paraStart, paraLimit, paraIndex, length;
+        int i, j, k;
+
+        logln("\nEntering TestMultipleParagraphs\n");
+        try {
+            bidi.setPara(text, Bidi.LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("1st Bidi.setPara failed, paraLevel = " + Bidi.LTR);
+        }
+
+        /* check paragraph count and boundaries */
+        if (paraCount != (count = bidi.countParagraphs())) {
+            errln("1st Bidi.countParagraphs returned " + count + ", should be " +
+                  paraCount);
+        }
+        BidiRun run;
+        for (i = 0; i < paraCount; i++) {
+            run = bidi.getParagraphByIndex(i);
+            paraStart = run.getStart();
+            paraLimit = run.getLimit();
+            if ((paraStart != paraBounds[i]) ||
+                (paraLimit != paraBounds[i + 1])) {
+                errln("Found boundaries of paragraph " + i + ": " +
+                      paraStart + "-" + paraLimit + "; expected: " +
+                      paraBounds[i] + "-" + paraBounds[i + 1]);
+            }
+        }
+
+        /* check with last paragraph not terminated by B */
+        char[] chars = text.toCharArray();
+        chars[chars.length - 1] = 'L';
+        src = new String(chars);
+        try {
+            bidi.setPara(src, Bidi.LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("2nd Bidi.setPara failed, paraLevel = " + Bidi.LTR);
+        }
+        if (paraCount != (count = bidi.countParagraphs())) {
+            errln("2nd Bidi.countParagraphs returned " + count +
+                  ", should be " + paraCount);
+        }
+        i = paraCount - 1;
+        run = bidi.getParagraphByIndex(i);
+        paraStart = run.getStart();
+        paraLimit = run.getLimit();
+        if ((paraStart != paraBounds[i]) ||
+            (paraLimit != paraBounds[i + 1])) {
+            errln("2nd Found boundaries of paragraph " + i + ": " +
+                  paraStart + "-" + paraLimit + "; expected: " +
+                  paraBounds[i] + "-" + paraBounds[i + 1]);
+        }
+
+        /* check paraLevel for all paragraphs under various paraLevel specs */
+        for (k = 0; k < 6; k++) {
+            try {
+                bidi.setPara(src, paraLevels[k], null);
+            } catch (IllegalArgumentException e) {
+                errln("3nd Bidi.setPara failed, paraLevel = " + paraLevels[k]);
+            }
+            for (i = 0; i < paraCount; i++) {
+                paraIndex = bidi.getParagraphIndex(paraBounds[i]);
+                run = bidi.getParagraph(paraBounds[i]);
+                if (paraIndex != i) {
+                    errln("#1 For paraLevel = " + paraLevels[k] +
+                          " paragraph = " + i + ", found paragraph" +
+                          " index = " + paraIndex + " expected = " + i);
+                }
+                gotLevel = run.getEmbeddingLevel();
+                if (gotLevel != multiLevels[k][i]) {
+                    errln("#2 For paraLevel = " + paraLevels[k] +
+                          " paragraph = " + i + ", found level = " + gotLevel +
+                          ", expected = " + multiLevels[k][i]);
+                }
+            }
+            gotLevel = bidi.getParaLevel();
+            if (gotLevel != multiLevels[k][0]) {
+                errln("#3 For paraLevel = " + paraLevels[k] +
+                      " getParaLevel = " + gotLevel + ", expected " +
+                      multiLevels[k][0]);
+            }
+        }
+
+        /* check that the result of Bidi.getParaLevel changes if the first
+         * paragraph has a different level
+         */
+        chars[0] = '\u05d2';            /* Hebrew letter Gimel */
+        src = new String(chars);
+        try {
+            bidi.setPara(src, Bidi.LEVEL_DEFAULT_LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_LTR);
+        }
+        gotLevel = bidi.getParaLevel();
+        if (gotLevel != Bidi.RTL) {
+            errln("#4 For paraLevel = Bidi.LEVEL_DEFAULT_LTR getParaLevel = " +
+                  gotLevel + ", expected = " + Bidi.RTL);
+        }
+
+        /* check that line cannot overlap paragraph boundaries */
+        bidiLine = new Bidi();
+        i = paraBounds[1];
+        k = paraBounds[2] + 1;
+        try {
+            bidiLine = bidi.setLine(i, k);
+            errln("For line limits " + i + "-" + k
+                    + " got success, while expected failure");
+        } catch (Exception e) {}
+
+        i = paraBounds[1];
+        k = paraBounds[2];
+        try {
+            bidiLine = bidi.setLine(i, k);
+        } catch (Exception e) {
+            errln("For line limits " + i + "-" + k + " got failure");
+        }
+
+        /* check level of block separator at end of paragraph when orderParagraphsLTR==FALSE */
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        /* get levels through para Bidi block */
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 26; i < 32; i++) {
+            if (gotLevels[i] != Bidi.RTL) {
+                errln("For char " + i + "(0x" + Utility.hex(chars[i]) +
+                      "), level = " + gotLevels[i] + ", expected = " + Bidi.RTL);
+            }
+        }
+        /* get levels through para Line block */
+        i = paraBounds[1];
+        k = paraBounds[2];
+        try {
+            bidiLine = bidi.setLine(i, k);
+        } catch (Exception e) {
+            errln("For line limits " + i + "-" + k + " got failure");
+            return;
+        }
+        paraIndex = bidiLine.getParagraphIndex(i);
+        run = bidiLine.getParagraph(i);
+        try {
+            gotLevels = bidiLine.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidiLine.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        length = bidiLine.getLength();
+        gotLevel = run.getEmbeddingLevel();
+        if ((gotLevel != Bidi.RTL) || (gotLevels[length - 1] != Bidi.RTL)) {
+            errln("For paragraph " + paraIndex + " with limits " +
+                  run.getStart() + "-" + run.getLimit() +
+                  ", paraLevel = " + gotLevel +
+                  "expected = " + Bidi.RTL +
+                  ", level of separator = " + gotLevels[length - 1] +
+                  " expected = " + Bidi.RTL);
+        }
+        orderParagraphsLTR = bidi.isOrderParagraphsLTR();
+        assertFalse("orderParagraphsLTR is true", orderParagraphsLTR);
+        bidi.orderParagraphsLTR(true);
+        orderParagraphsLTR = bidi.isOrderParagraphsLTR();
+        assertTrue("orderParagraphsLTR is false", orderParagraphsLTR);
+
+        /* check level of block separator at end of paragraph when orderParagraphsLTR==TRUE */
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        /* get levels through para Bidi block */
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 26; i < 32; i++) {
+            if (gotLevels[i] != 0) {
+                errln("For char " + i + "(0x" + Utility.hex(chars[i]) +
+                      "), level = "+ gotLevels[i] + ", expected = 0");
+            }
+        }
+        /* get levels through para Line block */
+        i = paraBounds[1];
+        k = paraBounds[2];
+        paraStart = run.getStart();
+        paraLimit = run.getLimit();
+        try {
+            bidiLine = bidi.setLine(paraStart, paraLimit);
+        } catch (Exception e) {
+            errln("For line limits " + paraStart + "-" + paraLimit +
+                  " got failure");
+        }
+        paraIndex = bidiLine.getParagraphIndex(i);
+        run = bidiLine.getParagraph(i);
+        try {
+            gotLevels = bidiLine.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidiLine.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        length = bidiLine.getLength();
+        gotLevel = run.getEmbeddingLevel();
+        if ((gotLevel != Bidi.RTL) || (gotLevels[length - 1] != 0)) {
+            err("\nFor paragraph " + paraIndex + " with limits " +
+                run.getStart() + "-" + run.getLimit() +
+                ", paraLevel = " + gotLevel + "expected = " + Bidi.RTL +
+                ", level of separator = " + gotLevels[length - 1] +
+                " expected = 0\nlevels = ");
+            for (count = 0; count < length; count++) {
+                errcont(gotLevels[count] + "  ");
+            }
+            errcont("\n");
+        }
+
+        /* test that the concatenation of separate invocations of the bidi code
+         * on each individual paragraph in order matches the levels array that
+         * results from invoking bidi once over the entire multiparagraph tests
+         * (with orderParagraphsLTR false, of course)
+         */
+        src = text;                     /* restore original content */
+        bidi.orderParagraphsLTR(false);
+        try {
+            bidi.setPara(src, Bidi.LEVEL_DEFAULT_RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_RTL);
+        }
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 0; i < paraCount; i++) {
+            /* use pLine for individual paragraphs */
+            paraStart = paraBounds[i];
+            length = paraBounds[i + 1] - paraStart;
+            try {
+                bidiLine.setPara(src.substring(paraStart, paraStart + length),
+                                 Bidi.LEVEL_DEFAULT_RTL, null);
+            } catch (IllegalArgumentException e) {
+                errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_RTL);
+            }
+            for (j = 0; j < length; j++) {
+                if ((k = bidiLine.getLevelAt(j)) !=
+                        (gotLevel = gotLevels[paraStart + j])) {
+                    errln("Checking paragraph concatenation: for paragraph[" +
+                          i + "], char[" + j + "] = 0x" +
+                          Utility.hex(src.charAt(paraStart + j)) +
+                          ", level = " + k + ", expected = " + gotLevel);
+                }
+            }
+        }
+
+        /* ensure that leading numerics in a paragraph are not treated as arabic
+           numerals because of arabic text in a preceding paragraph
+         */
+        src = text2;
+        bidi.orderParagraphsLTR(true);
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 0, length = src.length(); i < length; i++) {
+            if (gotLevels[i] != levels2[i]) {
+                errln("Checking leading numerics: for char " + i + "(0x" +
+                      Utility.hex(src.charAt(i)) + "), level = " +
+                      gotLevels[i] + ", expected = " + levels2[i]);
+            }
+        }
+
+        /* check handling of whitespace before end of paragraph separator when
+         * orderParagraphsLTR==TRUE, when last paragraph has, and lacks, a terminating B
+         */
+        chars = src.toCharArray();
+        Arrays.fill(chars, '\u0020');
+        bidi.orderParagraphsLTR(true);
+        for (i = 0x001c; i <= 0x0020; i += (0x0020-0x001c)) {
+            chars[4] = (char)i;         /* with and without terminating B */
+            for (j = 0x0041; j <= 0x05d0; j += (0x05d0-0x0041)) {
+                chars[0] = (char)j;     /* leading 'A' or Alef */
+                src = new String(chars);
+                for (gotLevel = 4; gotLevel <= 5; gotLevel++) {
+                    /* test even and odd paraLevel */
+                    try {
+                        bidi.setPara(src, gotLevel, null);
+                    } catch (IllegalArgumentException e) {
+                        errln("Bidi.setPara failed, paraLevel = " + gotLevel);
+                    }
+                    try {
+                        gotLevels = bidi.getLevels();
+                    } catch (Exception e) {
+                        errln("Error on Bidi.getLevels");
+                        gotLevels = new byte[bidi.getLength()];
+                        Arrays.fill(gotLevels, (byte)-1);
+                    }
+                    for (k = 1; k <= 3; k++) {
+                        if (gotLevels[k] != gotLevel) {
+                            errln("Checking trailing spaces for leading char 0x" +
+                                  Utility.hex(chars[0]) + ", last_char = " +
+                                  Utility.hex(chars[4]) + ", index = " + k +
+                                  "level = " + gotLevels[k] +
+                                  ", expected = " + gotLevel);
+                        }
+                    }
+                }
+            }
+        }
+
+        /* check default orientation when inverse bidi and paragraph starts
+         * with LTR strong char and ends with RTL strong char, with and without
+         * a terminating B
+         */
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setPara("abc \u05d2\u05d1\n", Bidi.LEVEL_DEFAULT_LTR, null);
+        String out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output", "\u05d1\u05d2 abc\n", out);
+        bidi.setPara("abc \u05d2\u05d1", Bidi.LEVEL_DEFAULT_LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output #1", "\u05d1\u05d2 abc", out);
+
+        /* check multiple paragraphs together with explicit levels
+         */
+        bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+        gotLevels = new byte[] {0,0,0,0,0,0,0,0,0,0};
+        bidi.setPara("ab\u05d1\u05d2\n\u05d3\u05d4123", Bidi.LTR, gotLevels);
+        out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output #2", "ab\u05d2\u05d1\n123\u05d4\u05d3", out);
+        assertEquals("\nInvalid number of paras", 2, bidi.countParagraphs());
+
+        logln("\nExiting TestMultipleParagraphs\n");
+
+        /* check levels in multiple paragraphs with default para level
+         */
+        bidi = new Bidi();
+        bidi.setPara(multiparaTestString, Bidi.LEVEL_DEFAULT_LTR, null);
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels for multiparaTestString");
+            return;
+        }
+        for (i = 0; i < multiparaTestString.length; i++) {
+            if (gotLevels[i] != multiparaTestLevels[i]) {
+                errln("Error on level for multiparaTestString at index " + i +
+                      ", expected=" + multiparaTestLevels[i] +
+                      ", actual=" + gotLevels[i]);
+            }
+        }
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestMultipleParagraphs().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorder.java b/src/com/ibm/icu/dev/test/bidi/TestReorder.java
new file mode 100644
index 0000000..a9436e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorder.java
@@ -0,0 +1,261 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+
+/**
+ * Regression test for the UBA implementation.
+ *
+ * ported from C by Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorder extends BidiTest {
+
+    private static final String[] logicalOrder = {
+        "del(KC)add(K.C.&)",
+        "del(QDVT) add(BVDL)",
+        "del(PQ)add(R.S.)T)U.&",
+        "del(LV)add(L.V.) L.V.&",
+        "day  0  R  DPDHRVR dayabbr",
+        "day  1  H  DPHPDHDA dayabbr",
+        "day  2   L  DPBLENDA dayabbr",
+        "day  3  J  DPJQVM  dayabbr",
+        "day  4   I  DPIQNF    dayabbr",
+        "day  5  M  DPMEG  dayabbr",
+        "helloDPMEG",
+        "hello WXYZ"
+    };
+
+    private static final String[] visualOrder = {
+        "del(CK)add(&.C.K)",
+        "del(TVDQ) add(LDVB)",
+        "del(QP)add(&.U(T(.S.R",
+        "del(VL)add(&.V.L (.V.L",
+        "day  0  RVRHDPD  R dayabbr",
+        "day  1  ADHDPHPD  H dayabbr",
+        "day  2   ADNELBPD  L dayabbr",
+        "day  3  MVQJPD  J  dayabbr",
+        "day  4   FNQIPD  I    dayabbr",
+        "day  5  GEMPD  M  dayabbr",
+        "helloGEMPD",
+        "hello ZYXW"
+    };
+
+    private static final String[] visualOrder1 = {
+        ")K.C.&(dda)KC(led",
+        ")BVDL(dda )QDVT(led",
+        "R.S.(T(U.&(dda)PQ(led",
+        "L.V.( L.V.&(dda)LV(led",
+        "rbbayad R  DPDHRVR  0  yad",
+        "rbbayad H  DPHPDHDA  1  yad",
+        "rbbayad L  DPBLENDA   2  yad",
+        "rbbayad  J  DPJQVM  3  yad",
+        "rbbayad    I  DPIQNF   4  yad",
+        "rbbayad  M  DPMEG  5  yad",
+        "DPMEGolleh",
+        "WXYZ olleh"
+    };
+
+    private static final String[] visualOrder2 = {
+        "@)@K.C.&@(dda)@KC@(led",
+        "@)@BVDL@(dda )@QDVT@(led",
+        "R.S.)T)U.&@(dda)@PQ@(led",
+        "L.V.) L.V.&@(dda)@LV@(led",
+        "rbbayad @R  DPDHRVR@  0  yad",
+        "rbbayad @H  DPHPDHDA@  1  yad",
+        "rbbayad @L  DPBLENDA@   2  yad",
+        "rbbayad  @J  DPJQVM@  3  yad",
+        "rbbayad    @I  DPIQNF@   4  yad",
+        "rbbayad  @M  DPMEG@  5  yad",
+        "DPMEGolleh",
+        "WXYZ@ olleh"
+    };
+
+    private static final String[] visualOrder3 = {
+        ")K.C.&(KC)dda(led",
+        ")BVDL(ddaQDVT) (led",
+        "R.S.)T)U.&(PQ)dda(led",
+        "L.V.) L.V.&(LV)dda(led",
+        "rbbayad DPDHRVR   R  0 yad",
+        "rbbayad DPHPDHDA   H  1 yad",
+        "rbbayad DPBLENDA     L 2 yad",
+        "rbbayad  DPJQVM   J  3 yad",
+        "rbbayad    DPIQNF     I 4 yad",
+        "rbbayad  DPMEG   M  5 yad",
+        "DPMEGolleh",
+        "WXYZ olleh"
+    };
+
+    private static final String[] visualOrder4 = {
+        "del(add(CK(.C.K)",
+        "del( (TVDQadd(LDVB)",
+        "del(add(QP(.U(T(.S.R",
+        "del(add(VL(.V.L (.V.L",
+        "day 0  R   RVRHDPD dayabbr",
+        "day 1  H   ADHDPHPD dayabbr",
+        "day 2 L     ADNELBPD dayabbr",
+        "day 3  J   MVQJPD  dayabbr",
+        "day 4 I     FNQIPD    dayabbr",
+        "day 5  M   GEMPD  dayabbr",
+        "helloGEMPD",
+        "hello ZYXW"
+    };
+
+    public void testReorder() {
+        Bidi bidi = new Bidi();
+        int testNumber;
+        int nTests = logicalOrder.length;
+        String src, srcU16, dest = "";
+
+        logln("\nEntering TestReorder\n");
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing L2V #1 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            if (!visualOrder[testNumber].equals(dest)) {
+                assertEquals("Failure #1 in Bidi.writeReordered(), test number " +
+                             testNumber, visualOrder[testNumber], dest, src, null,
+                             "Bidi.DO_MIRRORING", "Bidi.LEVEL_DEFAULT_LTR");
+            }
+            checkWhatYouCan(bidi, src, dest);
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing L2V #2 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING +
+                                                       Bidi.OUTPUT_REVERSE));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "
+                        + Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #2 in Bidi.writeReordered() at index " +
+                         testNumber, visualOrder1[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "DO_MIRRORING + OUTPUT_REVERSE",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #3 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            bidi.setInverse(true);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE |
+                                                       Bidi.INSERT_LRM_FOR_NUMERIC));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #3 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder2[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "INSERT_LRM_FOR_NUMERIC + OUTPUT_REVERSE",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        /* Max Explicit level */
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #4 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];
+            for (int i = 0; i < 10; i++) {
+                levels[i] = (byte)(i + 1);
+            }
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber +
+                      "], paraLevel = MAX_EXPLICIT_LEVEL = " +
+                      Bidi.MAX_EXPLICIT_LEVEL + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #4 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder3[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "OUTPUT_REVERSE", "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #5 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];
+            for (int i = 0; i < 10; i++) {
+                levels[i] = (byte)(i + 1);
+            }
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.MAX_EXPLICIT_LEVEL + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                       Bidi.REMOVE_BIDI_CONTROLS));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "
+                        + Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #5 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder4[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "DO_MIRRORING + REMOVE_BIDI_CONTROLS",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        logln("\nExiting TestReorder\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorder().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java b/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
new file mode 100644
index 0000000..b239b07
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
@@ -0,0 +1,190 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for variants to the UBA.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorderRunsOnly extends BidiTest {
+
+
+    static class TestCase {
+        String textIn;
+        String textOut[][];
+        int noroundtrip[];
+
+        TestCase(String in, String[][] out, int[] nrd) {
+            this.textIn = in;
+            this.textOut = out;
+            this.noroundtrip = nrd;
+        }
+    }
+
+    static final TestCase testCases[] = {
+        new TestCase("ab 234 896 de",   // 0
+                     new String[][] {{"de 896 ab 234", "de 896 ab 234"},
+                                     {"ab 234 @896@ de", "de 896 ab 234"}},
+                     new int[] {0, 0}),
+        new TestCase("abcGHI",          // 1
+                     new String[][] {{"GHIabc", "GHIabc"}, {"GHIabc", "GHIabc"}},
+                     new int[] {0, 0}),
+        new TestCase("a.>67->",         // 2
+                     new String[][] {{"<-67<.a", "<-67<.a"}, {"<-67<.a", "<-67<.a"}},
+                     new int[] {0, 0}),
+        new TestCase("-=%$123/ *",      // 3
+                     new String[][] {{"* /%$123=-", "* /%$123=-"},
+                                     {"* /%$123=-", "* /%$123=-"}},
+                     new int[] {0, 0}),
+        new TestCase("abc->12..>JKL",   // 4
+                     new String[][] {{"JKL<..12<-abc", "JKL<..abc->12"},
+                                     {"JKL<..12<-abc", "JKL<..abc->12"}},
+                     new int[] {0, 0}),
+        new TestCase("JKL->12..>abc",   // 5
+                     new String[][] {{"abc<..JKL->12", "abc<..12<-JKL"},
+                                     {"abc<..JKL->12", "abc<..12<-JKL"}},
+                     new int[] {0, 0}),
+        new TestCase("123->abc",        // 6
+                     new String[][] {{"abc<-123", "abc<-123"},
+                                     {"abc&<-123", "abc<-123"}},
+                     new int[] {1, 0}),
+        new TestCase("123->JKL",        // 7
+                     new String[][] {{"JKL<-123", "123->JKL"},
+                                     {"JKL<-123", "JKL<-@123"}},
+                     new int[] {0, 1}),
+        new TestCase("*>12.>34->JKL",   // 8
+                     new String[][] {{"JKL<-34<.12<*", "12.>34->JKL<*"},
+                                     {"JKL<-34<.12<*", "JKL<-@34<.12<*"}},
+                     new int[] {0, 1}),
+        new TestCase("*>67.>89->JKL",   // 9
+                     new String[][] {{"67.>89->JKL<*", "67.>89->JKL<*"},
+                                     {"67.>89->JKL<*", "67.>89->JKL<*"}},
+                     new int[] {0, 0}),
+        new TestCase("* /abc-=$%123",   // 10
+                     new String[][] {{"$%123=-abc/ *", "abc-=$%123/ *"},
+                                     {"$%123=-abc/ *", "abc-=$%123/ *"}},
+                     new int[] {0, 0}),
+        new TestCase("* /$%def-=123",   // 11
+                     new String[][] {{"123=-def%$/ *", "def-=123%$/ *"},
+                                     {"123=-def%$/ *", "def-=123%$/ *"}},
+                     new int[] {0, 0}),
+        new TestCase("-=GHI* /123%$",   // 12
+                     new String[][] {{"GHI* /123%$=-", "123%$/ *GHI=-"},
+                                     {"GHI* /123%$=-", "123%$/ *GHI=-"}},
+                     new int[] {0, 0}),
+        new TestCase("-=%$JKL* /123",   // 13
+                     new String[][] {{"JKL* /%$123=-", "123/ *JKL$%=-"},
+                                     {"JKL* /%$123=-", "123/ *JKL$%=-"}},
+                     new int[] {0, 0}),
+        new TestCase("ab =#CD *?450",   // 14
+                     new String[][] {{"CD *?450#= ab", "450?* CD#= ab"},
+                                     {"CD *?450#= ab", "450?* CD#= ab"}},
+                     new int[] {0, 0}),
+        new TestCase("ab 234 896 de",   // 15
+                     new String[][] {{"de 896 ab 234", "de 896 ab 234"},
+                                     {"ab 234 @896@ de", "de 896 ab 234"}},
+                     new int[] {0, 0}),
+        new TestCase("abc-=%$LMN* /123",// 16
+                     new String[][] {{"LMN* /%$123=-abc", "123/ *LMN$%=-abc"},
+                                     {"LMN* /%$123=-abc", "123/ *LMN$%=-abc"}},
+                     new int[] {0, 0}),
+        new TestCase("123->JKL&MN&P",   // 17
+                     new String[][] {{"JKLMNP<-123", "123->JKLMNP"},
+                                     {"JKLMNP<-123", "JKLMNP<-@123"}},
+                     new int[] {0, 1}),
+        new TestCase("123",             // 18   just one run
+                     new String[][] {{"123", "123"},
+                                     {"123", "123"}},
+                     new int[] {0, 0})
+    };
+
+    public void testReorderRunsOnly() {
+
+        Bidi bidi = new Bidi();
+        Bidi bidiL2V = new Bidi();
+        String src, dest, visual1, visual2;
+        String srcU16, destU16, visual1U16, visual2U16;
+        int option, i, j, nCases;
+        byte level;
+
+        logln("\nEntering TestReorderRunsOnly\n");
+        bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+        bidiL2V.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+
+        for (option = 0; option < 2; option++) {
+            bidi.setReorderingOptions(option == 0 ? Bidi.OPTION_REMOVE_CONTROLS
+                                                  : Bidi.OPTION_INSERT_MARKS);
+            for (i = 0, nCases = testCases.length; i < nCases; i++) {
+                src = testCases[i].textIn;
+                srcU16 = pseudoToU16(src);
+                for (j = 0; j < 2; j++) {
+                    logln("Now doing test for option " + option +
+                          ", case " + i + ", level " + j);
+                    level = (byte)j;
+                    bidi.setPara(srcU16, level, null);
+                    destU16 = bidi.writeReordered(Bidi.DO_MIRRORING);
+                    dest = u16ToPseudo(destU16);
+                    checkWhatYouCan(bidi, src, dest);
+                    assertEquals("Reorder runs only failed for case " + i,
+                                 testCases[i].textOut[option][level],
+                                 dest, src, null, null, Byte.toString(level));
+
+                    if ((option == 0) && (testCases[i].noroundtrip[level] > 0)) {
+                        continue;
+                    }
+                    bidiL2V.setPara(srcU16, level, null);
+                    visual1U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING);
+                    visual1 = u16ToPseudo(visual1U16);
+                    checkWhatYouCan(bidiL2V, src, visual1);
+                    bidiL2V.setPara(destU16, (byte)(level^1), null);
+                    visual2U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING);
+                    visual2 = u16ToPseudo(visual2U16);
+                    checkWhatYouCan(bidiL2V, dest, visual2);
+                    assertEquals("Round trip failed for case " + i,
+                                 visual1, visual2, src,
+                                 "REORDER_RUNS_ONLY (2)",
+                                 option == 0 ? "0" : "OPTION_INSERT_MARKS",
+                                 Byte.toString(level));
+                }
+            }
+        }
+
+        /* test with null or empty text */
+        int paras;
+        bidi.setPara((String)null, Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #1 (should be 0): ", 0, paras);
+        bidi.setPara((char[])null, Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #2 (should be 0): ", 0, paras);
+        bidi.setPara("", Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #3 (should be 0): ", 0, paras);
+        bidi.setPara(new char[0], Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #4 (should be 0): ", 0, paras);
+
+        logln("\nExiting TestReorderRunsOnly\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorderRunsOnly().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java b/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
new file mode 100644
index 0000000..9c17d4e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
@@ -0,0 +1,712 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for variants to the UBA.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorderingMode extends BidiTest {
+
+    static final String[] textIn = {
+    /* (0) 123 */
+        "123",
+    /* (1) .123->4.5 */
+        ".123->4.5",
+    /* (2) 678 */
+        "678",
+    /* (3) .678->8.9 */
+        ".678->8.9",
+    /* (4) JIH1.2,3MLK */
+        "JIH1.2,3MLK",
+    /* (5) FE.>12-> */
+        "FE.>12->",
+    /* (6) JIH.>12->a */
+        "JIH.>12->a",
+    /* (7) CBA.>67->89=a */
+        "CBA.>67->89=a",
+    /* (8) CBA.123->xyz */
+        "CBA.123->xyz",
+    /* (9) .>12->xyz */
+        ".>12->xyz",
+    /* (10) a.>67->xyz */
+        "a.>67->xyz",
+    /* (11) 123JIH */
+        "123JIH",
+    /* (12) 123 JIH */
+        "123 JIH"
+    };
+
+    static final String[] textOut = {
+    /* TC 0: 123 */
+        "123",                                                              /* (0) */
+    /* TC 1: .123->4.5 */
+        ".123->4.5",                                                        /* (1) */
+        "4.5<-123.",                                                        /* (2) */
+    /* TC 2: 678 */
+        "678",                                                              /* (3) */
+    /* TC 3: .678->8.9 */
+        ".8.9<-678",                                                        /* (4) */
+        "8.9<-678.",                                                        /* (5) */
+        ".678->8.9",                                                        /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        "KLM1.2,3HIJ",                                                      /* (7) */
+    /* TC 5: FE.>12-> */
+        "12<.EF->",                                                         /* (8) */
+        "<-12<.EF",                                                         /* (9) */
+        "EF.>@12->",                                                        /* (10) */
+    /* TC 6: JIH.>12->a */
+        "12<.HIJ->a",                                                       /* (11) */
+        "a<-12<.HIJ",                                                       /* (12) */
+        "HIJ.>@12->a",                                                      /* (13) */
+        "a&<-12<.HIJ",                                                      /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        "ABC.>@67->89=a",                                                   /* (15) */
+        "a=89<-67<.ABC",                                                    /* (16) */
+        "a&=89<-67<.ABC",                                                   /* (17) */
+        "89<-67<.ABC=a",                                                    /* (18) */
+    /* TC 8: CBA.123->xyz */
+        "123.ABC->xyz",                                                     /* (19) */
+        "xyz<-123.ABC",                                                     /* (20) */
+        "ABC.@123->xyz",                                                    /* (21) */
+        "xyz&<-123.ABC",                                                    /* (22) */
+    /* TC 9: .>12->xyz */
+        ".>12->xyz",                                                        /* (23) */
+        "xyz<-12<.",                                                        /* (24) */
+        "xyz&<-12<.",                                                       /* (25) */
+    /* TC 10: a.>67->xyz */
+        "a.>67->xyz",                                                       /* (26) */
+        "a.>@67@->xyz",                                                     /* (27) */
+        "xyz<-67<.a",                                                       /* (28) */
+    /* TC 11: 123JIH */
+        "123HIJ",                                                           /* (29) */
+        "HIJ123",                                                           /* (30) */
+    /* TC 12: 123 JIH */
+        "123 HIJ",                                                          /* (31) */
+        "HIJ 123",                                                          /* (32) */
+    };
+
+    static final int[][][][] outIndices = {
+        { /* TC 0: 123 */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 0,  0}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 1: .123->4.5 */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  2}, { 1,  2}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 2: 678 */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 3,  3}, { 3,  3}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 3: .678->8.9 */
+            {{ 6,  5}, { 6,  5}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 4,  5}, { 4,  5}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 6,  5}, { 6,  5}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 6,  5}, { 6,  5}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 4: MLK1.2,3JIH */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 7,  7}, { 7,  7}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 5: FE.>12-> */
+            {{ 8,  9}, { 8,  9}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{10,  9}, { 8,  9}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 8,  9}, { 8,  9}}, /* REORDER_NUMBERS_SPECIAL */
+            {{10,  9}, { 8,  9}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 6: JIH.>12->a */
+            {{11, 12}, {11, 12}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{13, 14}, {11, 12}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{11, 12}, {11, 12}}, /* REORDER_NUMBERS_SPECIAL */
+            {{13, 14}, {11, 12}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 7: CBA.>67->89=a */
+            {{18, 16}, {18, 16}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{18, 17}, {18, 16}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{18, 16}, {18, 16}}, /* REORDER_NUMBERS_SPECIAL */
+            {{15, 17}, {18, 16}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 8: CBA.>124->xyz */
+            {{19, 20}, {19, 20}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{21, 22}, {19, 20}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{19, 20}, {19, 20}}, /* REORDER_NUMBERS_SPECIAL */
+            {{21, 22}, {19, 20}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 9: .>12->xyz */
+            {{23, 24}, {23, 24}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{23, 25}, {23, 24}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{23, 24}, {23, 24}}, /* REORDER_NUMBERS_SPECIAL */
+            {{23, 25}, {23, 24}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 10: a.>67->xyz */
+            {{26, 26}, {26, 26}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{26, 27}, {26, 28}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{26, 28}, {26, 28}}, /* REORDER_NUMBERS_SPECIAL */
+            {{26, 27}, {26, 28}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 11: 124JIH */
+            {{30, 30}, {30, 30}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{29, 30}, {29, 30}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{30, 30}, {30, 30}}, /* REORDER_NUMBERS_SPECIAL */
+            {{30, 30}, {30, 30}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 12: 124 JIH */
+            {{32, 32}, {32, 32}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{31, 32}, {31, 32}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{31, 32}, {31, 32}}, /* REORDER_NUMBERS_SPECIAL */
+            {{31, 32}, {31, 32}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        }
+    };
+
+    static final short[] modes = {
+        Bidi.REORDER_GROUP_NUMBERS_WITH_R,
+        Bidi.REORDER_INVERSE_LIKE_DIRECT,
+        Bidi.REORDER_NUMBERS_SPECIAL,
+        Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL,
+        Bidi.REORDER_INVERSE_NUMBERS_AS_L
+    };
+
+    static final int[] options = { Bidi.OPTION_INSERT_MARKS, 0 };
+
+    static final byte[] paraLevels = { Bidi.LTR, Bidi.RTL };
+
+    static final int TC_COUNT = textIn.length;
+    static final int MODES_COUNT = modes.length;
+    static final int OPTIONS_COUNT = options.length;
+    static final int LEVELS_COUNT = paraLevels.length;
+
+    public void testReorderingMode() {
+
+        String src, dest;
+        Bidi bidi = new Bidi();
+        Bidi bidi2 = new Bidi();
+        Bidi bidi3 = new Bidi();
+        int tc, mode, option, level;
+        int modeValue, modeBack;
+        int optionValue, optionBack;
+        int index;
+        String expected;
+        boolean testOK = true;
+
+        logln("\nEntering TestReorderingMode\n");
+
+        bidi2.setInverse(true);
+
+        for (tc = 0; tc < TC_COUNT; tc++) {
+            src = textIn[tc];
+
+            for (mode = 0; mode < MODES_COUNT; mode++) {
+                modeValue = modes[mode];
+                bidi.setReorderingMode(modeValue);
+                modeBack = bidi.getReorderingMode();
+                if (modeValue != modeBack) {
+                    errln("Error while setting reordering mode to " +
+                    modeValue + ", returned " + modeBack);
+                }
+
+                for (option = 0; option < OPTIONS_COUNT; option++) {
+                    optionValue = options[option];
+                    bidi.setReorderingOptions(optionValue);
+                    optionBack = bidi.getReorderingOptions();
+                    if (optionValue != optionBack) {
+                        errln("Error while setting reordering options to " +
+                        modeValue + ", returned " + modeBack);
+                    }
+
+                    for (level = 0; level < LEVELS_COUNT; level++) {
+                        logln("starting test " + tc + " mode=" + modeValue +
+                            " option=" + optionValue + " level=" + level);
+                        bidi.setPara(pseudoToU16(src), paraLevels[level], null);
+
+                        dest = bidi.writeReordered(Bidi.DO_MIRRORING);
+                        dest = u16ToPseudo(dest);
+                        if (!((modeValue == Bidi.REORDER_INVERSE_NUMBERS_AS_L) &&
+                              (optionValue == Bidi.OPTION_INSERT_MARKS))) {
+                            checkWhatYouCan(bidi, src, dest);
+                        }
+                        String modeDesc = modeToString(modeValue);
+                        String optDesc = spOptionsToString(optionValue);
+
+                        if (modeValue == Bidi.REORDER_INVERSE_NUMBERS_AS_L) {
+                            index = -1;
+                            expected = inverseBasic(bidi2, src, optionValue,
+                                                    paraLevels[level]);
+                        }
+                        else {
+                            index = outIndices[tc][mode][option][level];
+                            expected = textOut[index];
+                        }
+                        if (!assertEquals("Actual and expected output mismatch",
+                                          expected, dest, src, modeDesc, optDesc,
+                                          String.valueOf(level))) {
+                            testOK = false;
+                            continue;
+                        }
+                        if ((optionValue == Bidi.OPTION_INSERT_MARKS) &&
+                            !assertRoundTrip(bidi3, tc, index, src, dest,
+                                             mode, option,
+                                             paraLevels[level])) {
+                            testOK = false;
+                            continue;
+                        }
+                        if (!checkResultLength(bidi, src, dest, modeDesc, optDesc,
+                                               paraLevels[level])) {
+                            testOK = false;
+                            continue;
+                        }
+                        if ((index > -1) &&
+                            !checkMaps(bidi, index, src, dest, modeDesc, optDesc,
+                                       paraLevels[level], true)) {
+                            testOK = false;
+                        }
+                    }
+                }
+            }
+        }
+        if (testOK) {
+            logln("Reordering mode test OK");
+        }
+
+        logln("\nExiting TestReorderingMode\n");
+    }
+
+    String inverseBasic(Bidi bidi, String src, int option, byte level) {
+        String dest2;
+
+        if (bidi == null || src == null) {
+            return null;
+        }
+        bidi.setReorderingOptions(option);
+        bidi.setPara(pseudoToU16(src), level, null);
+        dest2 = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING));
+        if (!(option == Bidi.OPTION_INSERT_MARKS)) {
+            checkWhatYouCan(bidi, src, dest2);
+        }
+        return dest2;
+    }
+
+    static final byte roundtrip[][][][] =
+    {
+        { /* TC 0: 123 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 1: .123->4.5 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 2: 678 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 3: .678->8.9 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 4: MLK1.2,3JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 5: FE.>12-> */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 6: JIH.>12->a */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 7: CBA.>67->89=a */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 8: CBA.>123->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 9: .>12->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 10: a.>67->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 11: 123JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 12: 123 JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        }
+    };
+
+    private boolean assertRoundTrip(Bidi bidi, int tc, int outIndex,
+                                    String src, String dest,
+                                    int mode, int option, byte level) {
+        String descMode, descOption;
+        String dest2;
+
+        switch (modes[mode]) {
+            case Bidi.REORDER_NUMBERS_SPECIAL:
+                bidi.setReorderingMode(Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
+                break;
+            case Bidi.REORDER_GROUP_NUMBERS_WITH_R:
+                bidi.setReorderingMode(Bidi.REORDER_GROUP_NUMBERS_WITH_R);
+                break;
+            case Bidi.REORDER_RUNS_ONLY:
+                bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+                break;
+            case Bidi.REORDER_INVERSE_NUMBERS_AS_L:
+                bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+                break;
+            case Bidi.REORDER_INVERSE_LIKE_DIRECT:
+                bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+                break;
+            case Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
+                bidi.setReorderingMode(Bidi.REORDER_NUMBERS_SPECIAL);
+                break;
+            default:
+                bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+                break;
+        }
+        bidi.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+
+        bidi.setPara(pseudoToU16(dest), level, null);
+        dest2 = bidi.writeReordered(Bidi.DO_MIRRORING);
+
+        dest2 = u16ToPseudo(dest2);
+        checkWhatYouCan(bidi, dest, dest2);
+        descMode = modeToString(modes[mode]);
+        descOption = spOptionsToString(options[option]);
+        if (!src.equals(dest2)) {
+            if (roundtrip[tc][mode][option][level] == 1) {
+                errln("\nRound trip failed for case=" + tc +
+                      " mode=" + mode + " option=" + option +
+                      "\nOriginal text:      " + src +
+                      "\nRound-tripped text: " + dest2 +
+                      "\nIntermediate text:  " + dest +
+                      "\nReordering mode:    " + descMode +
+                      "\nReordering option:  " + descOption +
+                      "\nParagraph level:    " + level);
+            } else {
+                logln("\nExpected round trip failure for case=" + tc +
+                      " mode=" + mode + " option=" + option +
+                      "\nOriginal text:      " + src +
+                      "\nRound-tripped text: " + dest2 +
+                      "\nIntermediate text:  " + dest +
+                      "\nReordering mode:    " + descMode +
+                      "\nReordering option:  " + descOption +
+                      "\nParagraph level:    " + level);
+            }
+            return false;
+        }
+        if (!checkResultLength(bidi, dest, dest2, descMode,
+                               "OPTION_REMOVE_CONTROLS", level)) {
+            return false;
+        }
+        if ((outIndex > -1) &&
+            !checkMaps(bidi, outIndex, src, dest, descMode,
+                       "OPTION_REMOVE_CONTROLS", level, false)) {
+            return false;
+        }
+        return true;
+    }
+
+    private boolean checkResultLength(Bidi bidi, String src, String dest,
+                                   String mode, String option, byte level) {
+        int actualLen;
+        if (mode.equals("REORDER_INVERSE_NUMBERS_AS_L"))
+            actualLen = dest.length();
+        else
+            actualLen = bidi.getResultLength();
+        if (actualLen != dest.length()) {
+            errln("\nBidi.getResultLength failed." +
+                  "\nExpected:           " + dest.length() +
+                  "\nActual:             " + actualLen +
+                  "\nInput:              " + src +
+                  "\nOutput:             " + dest +
+                  "\nReordering mode:    " + mode +
+                  "\nReordering option:  " + option +
+                  "\nParagraph level:    " + level);
+            return false;
+        }
+        return true;
+    }
+
+    static String formatMap(int[] map)
+    {
+        char[] buffer = new char[map.length];
+        int i, k;
+        char c;
+        for (i = 0; i < map.length; i++) {
+            k = map[i];
+            if (k < 0)
+                c = '-';
+            else if (k >= columns.length)
+                c = '+';
+            else
+                c = columns[k];
+            buffer[i] = c;
+        }
+        return new String(buffer);
+    }
+
+    static final int NO = Bidi.MAP_NOWHERE;
+
+    static final int forwardMap[][] = {
+    /* TC 0: 123 */
+        { 0, 1, 2 },                                                    /* (0) */
+    /* TC 1: .123->4.5 */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (1) */
+        { 8, 5, 6, 7, 4, 3, 0, 1, 2 },                                  /* (2) */
+    /* TC 2: 678 */
+        { 0, 1, 2 },                                                    /* (3) */
+    /* TC 3: .678->8.9 */
+        { 0, 6, 7, 8, 5, 4, 1, 2, 3 },                                  /* (4) */
+        { 8, 5, 6, 7, 4, 3, 0, 1, 2 },                                  /* (5) */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        { 10, 9, 8, 3, 4, 5, 6, 7, 2, 1, 0 },                           /* (7) */
+    /* TC 5: FE.>12-> */
+        { 5, 4, 3, 2, 0, 1, 6, 7 },                                     /* (8) */
+        { 7, 6, 5, 4, 2, 3, 1, 0 },                                     /* (9) */
+        { 1, 0, 2, 3, 5, 6, 7, 8 },                                     /* (10) */
+    /* TC 6: JIH.>12->a */
+        { 6, 5, 4, 3, 2, 0, 1, 7, 8, 9 },                               /* (11) */
+        { 9, 8, 7, 6, 5, 3, 4, 2, 1, 0 },                               /* (12) */
+        { 2, 1, 0, 3, 4, 6, 7, 8, 9, 10 },                              /* (13) */
+        { 10, 9, 8, 7, 6, 4, 5, 3, 2, 0 },                              /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        { 2, 1, 0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13 },                  /* (15) */
+        { 12, 11, 10, 9, 8, 6, 7, 5, 4, 2, 3, 1, 0 },                   /* (16) */
+        { 13, 12, 11, 10, 9, 7, 8, 6, 5, 3, 4, 2, 0 },                  /* (17) */
+        { 10, 9, 8, 7, 6, 4, 5, 3, 2, 0, 1, 11, 12 },                   /* (18) */
+    /* TC 8: CBA.123->xyz */
+        { 6, 5, 4, 3, 0, 1, 2, 7, 8, 9, 10, 11 },                       /* (19) */
+        { 11, 10, 9, 8, 5, 6, 7, 4, 3, 0, 1, 2 },                       /* (20) */
+        { 2, 1, 0, 3, 5, 6, 7, 8, 9, 10, 11, 12 },                      /* (21) */
+        { 12, 11, 10, 9, 6, 7, 8, 5, 4, 0, 1, 2 },                      /* (22) */
+    /* TC 9: .>12->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (23) */
+        { 8, 7, 5, 6, 4, 3, 0, 1, 2 },                                  /* (24) */
+        { 9, 8, 6, 7, 5, 4, 0, 1, 2 },                                  /* (25) */
+    /* TC 10: a.>67->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },                               /* (26) */
+        { 0, 1, 2, 4, 5, 7, 8, 9, 10, 11 },                             /* (27) */
+        { 9, 8, 7, 5, 6, 4, 3, 0, 1, 2 },                               /* (28) */
+    /* TC 11: 123JIH */
+        { 0, 1, 2, 5, 4, 3 },                                           /* (29) */
+        { 3, 4, 5, 2, 1, 0 },                                           /* (30) */
+    /* TC 12: 123 JIH */
+        { 0, 1, 2, 3, 6, 5, 4 },                                        /* (31) */
+        { 4, 5, 6, 3, 2, 1, 0 },                                        /* (32) */
+    };
+    static final int inverseMap[][] = {
+    /* TC 0: 123 */
+        { 0, 1, 2 },                                                    /* (0) */
+    /* TC 1: .123->4.5 */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (1) */
+        { 6, 7, 8, 5, 4, 1, 2, 3, 0 },                                  /* (2) */
+    /* TC 2: 678 */
+        { 0, 1, 2 },                                                    /* (3) */
+    /* TC 3: .678->8.9 */
+        { 0, 6, 7, 8, 5, 4, 1, 2, 3 },                                  /* (4) */
+        { 6, 7, 8, 5, 4, 1, 2, 3, 0 },                                  /* (5) */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        { 10, 9, 8, 3, 4, 5, 6, 7, 2, 1, 0 },                           /* (7) */
+    /* TC 5: FE.>12-> */
+        { 4, 5, 3, 2, 1, 0, 6, 7 },                                     /* (8) */
+        { 7, 6, 4, 5, 3, 2, 1, 0 },                                     /* (9) */
+        { 1, 0, 2, 3, NO, 4, 5, 6, 7 },                                 /* (10) */
+    /* TC 6: JIH.>12->a */
+        { 5, 6, 4, 3, 2, 1, 0, 7, 8, 9 },                               /* (11) */
+        { 9, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                               /* (12) */
+        { 2, 1, 0, 3, 4, NO, 5, 6, 7, 8, 9 },                           /* (13) */
+        { 9, NO, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                           /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        { 2, 1, 0, 3, 4, NO, 5, 6, 7, 8, 9, 10, 11, 12 },               /* (15) */
+        { 12, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                   /* (16) */
+        { 12, NO, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0 },               /* (17) */
+        { 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0, 11, 12 },                   /* (18) */
+    /* TC 8: CBA.123->xyz */
+        { 4, 5, 6, 3, 2, 1, 0, 7, 8, 9, 10, 11 },                       /* (19) */
+        { 9, 10, 11, 8, 7, 4, 5, 6, 3, 2, 1, 0 },                       /* (20) */
+        { 2, 1, 0, 3, NO, 4, 5, 6, 7, 8, 9, 10, 11 },                   /* (21) */
+        { 9, 10, 11, NO, 8, 7, 4, 5, 6, 3, 2, 1, 0 },                   /* (22) */
+    /* TC 9: .>12->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (23) */
+        { 6, 7, 8, 5, 4, 2, 3, 1, 0 },                                  /* (24) */
+        { 6, 7, 8, NO, 5, 4, 2, 3, 1, 0 },                              /* (25) */
+    /* TC 10: a.>67->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },                               /* (26) */
+        { 0, 1, 2, NO, 3, 4, NO, 5, 6, 7, 8, 9 },                       /* (27) */
+        { 7, 8, 9, 6, 5, 3, 4, 2, 1, 0 },                               /* (28) */
+    /* TC 11: 123JIH */
+        { 0, 1, 2, 5, 4, 3 },                                           /* (29) */
+        { 5, 4, 3, 0, 1, 2 },                                           /* (30) */
+    /* TC 12: 123 JIH */
+        { 0, 1, 2, 3, 6, 5, 4 },                                        /* (31) */
+        { 6, 5, 4, 3, 0, 1, 2 },                                        /* (32) */
+    };
+
+    private boolean checkMaps(Bidi bidi, int stringIndex, String src, String dest,
+            String mode, String option, byte level, boolean forward) {
+
+        int[] actualLogicalMap;
+        int[] actualVisualMap;
+        int[] getIndexMap;
+        int i, srcLen, resLen, index;
+        int[] expectedLogicalMap, expectedVisualMap;
+        boolean testOK = true;
+
+        if (forward) {
+            expectedLogicalMap = forwardMap[stringIndex];
+            expectedVisualMap  = inverseMap[stringIndex];
+        } else {
+            expectedLogicalMap = inverseMap[stringIndex];
+            expectedVisualMap  = forwardMap[stringIndex];
+        }
+        actualLogicalMap = bidi.getLogicalMap();
+        srcLen = bidi.getProcessedLength();
+        if (!Arrays.equals(expectedLogicalMap, actualLogicalMap)) {
+            err("Bidi.getLogicalMap returned unexpected map for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ExpMap: " + formatMap(expectedLogicalMap) + "\n" +
+                "Actual: " + formatMap(actualLogicalMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        resLen = bidi.getResultLength();
+        actualVisualMap = bidi.getVisualMap();
+        if (!Arrays.equals(expectedVisualMap, actualVisualMap)) {
+            err("Bidi.getVisualMap returned unexpected map for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ExpMap: " + formatMap(expectedVisualMap) + "\n" +
+                "Actual: " + formatMap(actualVisualMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        getIndexMap = new int[srcLen];
+        for (i = 0; i < srcLen; i++) {
+            index = bidi.getVisualIndex(i);
+            getIndexMap[i] = index;
+        }
+        if (!Arrays.equals(actualLogicalMap, getIndexMap)) {
+            err("Mismatch between getLogicalMap and getVisualIndex for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ActMap: " + formatMap(actualLogicalMap) + "\n" +
+                "IdxMap: " + formatMap(getIndexMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        getIndexMap = new int[resLen];
+        for (i = 0; i < resLen; i++) {
+            index = bidi.getLogicalIndex(i);
+            getIndexMap[i] = index;
+        }
+        if (!Arrays.equals(actualVisualMap, getIndexMap)) {
+            err("Mismatch between getVisualMap and getLogicalIndex for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ActMap: " + formatMap(actualVisualMap) + "\n" +
+                "IdxMap: " + formatMap(getIndexMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        return testOK;
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorderingMode().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestStreaming.java b/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
new file mode 100644
index 0000000..6b015a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
@@ -0,0 +1,149 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for streaming mode
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestStreaming extends BidiTest {
+
+    static final int MAXPORTIONS = 10;
+
+    static class TestCase {
+        String textIn;
+        int chunk;
+        int[] nPortions;
+        int[][] portionLens;
+        String[] message;
+
+        public TestCase(String in, int ch, int[] np, int[][] lens, String[] msg) {
+            this.textIn = in;
+            this.chunk = ch;
+            this.nPortions = np;
+            this.portionLens = lens;
+            this.message = msg;
+        }
+    }
+
+    static final TestCase[] testCases = {
+        new TestCase("123\n"    +
+                     "abc45\r"  +
+                     "67890\n"  +
+                     "\r"       +
+                     "02468\r"  +
+                     "ghi",
+            6, new int[] { 6, 6 },
+            new int[][] {{ 6, 4, 6, 1, 6, 3}, { 4, 6, 6, 1, 6, 3 }},
+            new String[] {"6, 4, 6, 1, 6, 3", "4, 6, 6, 1, 6, 3"}
+        ),
+        new TestCase("abcd\nfgh\r12345\n456",
+            6, new int[] { 4, 4 },
+            new int[][] {{ 6, 3, 6, 3 }, { 5, 4, 6, 3 }},
+            new String[] {"6, 3, 6, 3", "5, 4, 6, 3"}
+        ),
+        new TestCase("abcd\nfgh\r12345\n45\r",
+            6, new int[] { 4, 4 },
+            new int[][] {{ 6, 3, 6, 3 }, { 5, 4, 6, 3 }},
+            new String[] {"6, 3, 6, 3", "5, 4, 6, 3"}
+        ),
+        new TestCase("abcde\nfghi",
+            10, new int[] { 1, 2 },
+            new int[][] {{ 10 }, { 6, 4 }},
+            new String[] {"10", "6, 4"}
+        )
+    };
+    static final int MAXLOOPS = 20;
+    static final byte[] paraLevels = { Bidi.LTR, Bidi.RTL };
+
+    public void testStreaming()
+    {
+        String src, subsrc;
+        Bidi bidi;
+        int srcLen, processedLen, chunk, len, nPortions, offset;
+        int i, j, levelIndex;
+        byte level;
+        int nTests = testCases.length, nLevels = paraLevels.length;
+        boolean mismatch, testOK = true;
+        StringBuffer processedLenStr = new StringBuffer(MAXLOOPS * 5);
+
+        logln("\nEntering TestStreaming\n");
+
+        bidi = new Bidi();
+
+        bidi.orderParagraphsLTR(true);
+
+        for (levelIndex = 0; levelIndex < nLevels; levelIndex++) {
+            for (i = 0; i < nTests; i++) {
+                src = testCases[i].textIn;
+                srcLen = src.length();
+                chunk = testCases[i].chunk;
+                nPortions = testCases[i].nPortions[levelIndex];
+                level = paraLevels[levelIndex];
+                processedLenStr.setLength(0);
+                logln("Testing level " + level + ", case " + i);
+
+                mismatch = false;
+
+                bidi.setReorderingOptions(Bidi.OPTION_STREAMING);
+                for (j = 0; j < MAXPORTIONS && srcLen > 0; j++) {
+                    len = chunk < srcLen ? chunk : srcLen;
+                    offset = src.length() - srcLen;
+                    subsrc = src.substring(offset, offset + len);
+                    bidi.setPara(subsrc, level, null);
+
+                    processedLen = bidi.getProcessedLength();
+                    if (processedLen == 0) {
+                        bidi.setReorderingOptions(Bidi.OPTION_DEFAULT);
+                        j--;
+                        continue;
+                    }
+                    bidi.setReorderingOptions(Bidi.OPTION_STREAMING);
+
+                    mismatch |= j >= nPortions ||
+                               processedLen != testCases[i].portionLens[levelIndex][j];
+
+                    processedLenStr.append(Integer.toString(processedLen) + " ");
+                    srcLen -= processedLen;
+                }
+
+                if (mismatch || j != nPortions) {
+                    testOK = false;
+                    errln("\nProcessed lengths mismatch for" +
+                          "\n\tParagraph level = " + level +
+                          "\n\tInput string: " + Utility.escape(src) +
+                          "\n\tChunk = " + chunk +
+                          "\n\tActually processed portion lengths: { " +
+                                processedLenStr + " }" +
+                          "\n\tExpected portion lengths          : { " +
+                                testCases[i].message[levelIndex] + " }\n");
+                }
+            }
+        }
+        if (testOK) {
+            logln("\nBidi streaming test OK");
+        }
+        logln("\nExiting TestStreaming\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestStreaming().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
new file mode 100644
index 0000000..87498e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
@@ -0,0 +1,5624 @@
+//##header J2SE15
+/* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */
+/* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */
+package com.ibm.icu.dev.test.bigdec;
+
+import java.math.BigInteger;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.VersionInfo;
+
+/* ------------------------------------------------------------------ */
+/* Decimal diagnostic tests mfc */
+/* Copyright (c) IBM Corporation 1996-2007. All Rights Reserved. */
+/* ------------------------------------------------------------------ */
+/* DiagBigDecimal */
+/*                                                                    */
+/* A class that tests the BigDecimal and MathContext classes. */
+/*                                                                    */
+/* The tests here are derived from or cover the same paths as: */
+/* -- ANSI X3-274 testcases */
+/* -- Java JCK testcases */
+/* -- NetRexx testcases */
+/* -- VM/CMS S/370 REXX implementation testcases [1981+] */
+/* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */
+/* -- New testcases */
+/*                                                                    */
+/* The authoritative sources for how the underlying technology */
+/* (arithmetic) should work are: */
+/* -- for digits=0 (fixed point): java.math.BigDecimal */
+/* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/* Change list */
+/* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */
+/* 1998.05.02 0.07 changes (e.g., compareTo) */
+/* 1998.06.06 Rounding modes and format additions */
+/* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */
+/* DiagException as a Minor class] */
+/* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */
+/* Reorganize for faster trace compilation */
+/* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */
+/* 1998.07.07 Scaled divide */
+/* 1998.07.08 setScale */
+/* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */
+/* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */
+/* 1999.02.04 number preparation rounds instead of digits+1 trunc */
+/* 1999.02.09 format method now only has two signatures */
+/* 1999.02.27 no longer use Rexx class or RexxIO class */
+/* 1999.03.05 add MathContext tests */
+/* 1999.03.05 update for 0.96 [no null settings, etc.] */
+/* drop sundry constructors; no blanks; char[] gets ints */
+/* drop sundry converters, add Exact converters */
+/* 1999.05.27 additional tests for scaled arithmetic */
+/* 1999.06.29 additional tests for exponent overflows */
+/* 1999.07.03 add 'continue' option */
+/* 1999.07.10 additional tests for scaled arithmetic */
+/* 1999.07.18 randomly-generated tests added for base operators */
+/* 1999.10.28 weird intValueExact bad cases */
+/* 1999.12.21 multiplication fast path failure and edge cases */
+/* 2000.01.01 copyright update */
+/* 2000.03.26 cosmetic updates; add extra format() testcases */
+/* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */
+/* change to javadoc comments */
+/* ------------------------------------------------------------------ */
+
+// note BINARY for conversions checking
+
+/**
+ * The <code>DiagBigDecimal</code> class forms a standalone test suite for the
+ * <code>com.ibm.icu.math.BigDecimal</code> and
+ * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the
+ * <code>package</code> statement, other classes of the same names and
+ * definition in other packages). It may also be used as a constructed object to
+ * embed the tests in an external test harness.
+ * <p>
+ * The tests are collected into <i>groups</i>, each corresponding to a tested
+ * method or a more general grouping. By default, when run from the static
+ * {@link #main(java.lang.String[])} method, the run will end if any test fails
+ * in a group. The <code>continue</code> argument may be specified to force
+ * the tests to run to completion.
+ * <p>
+ * Two minor (inner) classes are used; {@link DiagBigDecimal.DiagException} is
+ * used to signal the failure of a test group, and {@link DiagBigDecimal.Test},
+ * a dependent minor class, is used to register tests so that a summary of
+ * failures (or success) can be presented as each group is completed.
+ * 
+ * @see com.ibm.icu.math.BigDecimal
+ * @see com.ibm.icu.math.MathContext
+ * @version 1.00 2000.03.27
+ * @author Mike Cowlishaw
+ */
+
+public class DiagBigDecimal extends TestFmwk {
+    //private static final java.lang.String $0 = "DiagBigDecimal.nrx";
+
+    /* properties shared */
+    java.util.Vector Tests = new java.util.Vector(100); // scaffolding
+
+    /* properties private */
+    private int totalcount = 0; // counts tests run
+
+    /* properties constant private */
+
+    /* Count of test groups */
+    private static final int testcount = 38;
+
+    private static final com.ibm.icu.math.BigDecimal zero = com.ibm.icu.math.BigDecimal.ZERO;
+    private static final com.ibm.icu.math.BigDecimal one = com.ibm.icu.math.BigDecimal.ONE;
+    private static final com.ibm.icu.math.BigDecimal two = new com.ibm.icu.math.BigDecimal(2);
+    private static final com.ibm.icu.math.BigDecimal ten = com.ibm.icu.math.BigDecimal.TEN;
+    private static final com.ibm.icu.math.BigDecimal tenlong = new com.ibm.icu.math.BigDecimal((long) 1234554321); // 10-digiter
+
+    /* Some context objects -- [some of these are checked later] */
+    private static final com.ibm.icu.math.MathContext mcdef = com.ibm.icu.math.MathContext.DEFAULT;
+    private static final com.ibm.icu.math.MathContext mc3 = new com.ibm.icu.math.MathContext(3);
+    private static final com.ibm.icu.math.MathContext mc6 = new com.ibm.icu.math.MathContext(6);
+    private static final com.ibm.icu.math.MathContext mc9 = new com.ibm.icu.math.MathContext(9);
+    private static final com.ibm.icu.math.MathContext mc50 = new com.ibm.icu.math.MathContext(50);
+    private static final com.ibm.icu.math.MathContext mcs = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC);
+    private static final com.ibm.icu.math.MathContext mce = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.ENGINEERING);
+    private static final com.ibm.icu.math.MathContext mcld = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits
+    private static final com.ibm.icu.math.MathContext mcld0 = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits, digits=0
+    private static final com.ibm.icu.math.MathContext mcfd = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.PLAIN); // fixed decimal style
+
+    /* boundary primitive values */
+    private static final byte bmin = -128;
+    private static final byte bmax = 127;
+    private static final byte bzer = 0;
+    private static final byte bneg = -1;
+    private static final byte bpos = 1;
+    private static final int imin = -2147483648;
+    private static final int imax = 2147483647;
+    private static final int izer = 0;
+    private static final int ineg = -1;
+    private static final int ipos = 1;
+    private static final long lmin = -9223372036854775808L;
+    private static final long lmax = 9223372036854775807L;
+    private static final long lzer = (long) 0;
+    private static final long lneg = (long) -1;
+    private static final long lpos = (long) 1;
+    private static final short smin = -32768;
+    private static final short smax = 32767;
+    private static final short szer = (short) 0;
+    private static final short sneg = (short) (-1);
+    private static final short spos = (short) 1;
+
+    /**
+     * Constructs a <code>DiagBigDecimal</code> test suite.
+     * <p>
+     * Invoke its {@link #diagrun} method to run the tests.
+     */
+
+    public DiagBigDecimal() {
+        super();
+    }
+
+    static final boolean isJDK15OrLater = VersionInfo.javaVersion().compareTo(
+            VersionInfo.getInstance(1, 5)) >= 0;
+
+    /**
+     * Run the tests in the test suite.
+     * 
+     * @param isContinue
+     *            The <code>boolean</code> which determines whether to stop
+     *            running after a group fails. If 1 (true) then the tests should
+     *            be run to completion if possible; if 0 (false) then the run
+     *            will end if a group fails.
+     * @return an <code>int</code> which is 0 if all tests were successful, >0
+     *         (the count of failures) if some failures were detected, or <0 if
+     *         an unexpected Exception was signalled.
+     */
+
+    public int diagrun(boolean isContinue) {
+        int fails;
+        int num = 0;
+        DiagException de = null;
+        java.lang.RuntimeException e = null;
+        java.lang.String rest = null;
+
+        fails = 0; // count of failures
+        try {
+            num = 1;
+            num: for (; num <= testcount; num++) { // [testcount is constant
+                                                    // set above]
+                try {
+                    dotest(num);
+                } catch (DiagException $1) {
+                    de = $1;
+                    say();
+                    errln("**** Failed:" + " " + de.getMessage() + " " + "****");
+                    say();
+                    fails = fails + de.failcount;
+                    if ((!isContinue))
+                        break num;
+                }
+            }
+        } catch (java.lang.RuntimeException $2) {
+            e = $2; // any other exception is total failure; just show trace and
+                    // quit
+            say();
+            errln("**** Failed: unexpected exception ****");
+            e.printStackTrace();
+            return -1;
+        }/* num */
+
+        if (fails == 0)
+            say("--- All OK ---" + " "
+                    + right("[" + totalcount + " " + "tests]", 15));
+        else {
+            if (isContinue) {
+                if (fails > 1)
+                    rest = "tests";
+                else
+                    rest = "test";
+                say("--- All run ---" + " "
+                        + right("[" + totalcount + " " + "tests,", 14) + " "
+                        + "failed" + " " + fails + " " + rest + "]");
+
+            }
+        }
+
+        return fails;
+    }
+
+    /* Run test by number -- method for development/private switching */
+
+    private void dotest(int num) {
+        {/* select */
+            switch (num) {
+            /* -------------------------------------------------------------- */
+            /* MathContext */
+            /* -------------------------------------------------------------- */
+            case 1:
+                diagmathcontext();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Constructors */
+            /* -------------------------------------------------------------- */
+            case 2:
+                diagconstructors();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Operator methods */
+            /* -------------------------------------------------------------- */
+            case 3:
+                diagabs();
+                break;
+            case 4:
+                diagadd();
+                break;
+            case 5:
+                diagcompareto();
+                break;
+            case 6:
+                diagdivide();
+                break;
+            case 7:
+                diagdivideInteger();
+                break;
+            case 8:
+                diagmax();
+                break;
+            case 9:
+                diagmin();
+                break;
+            case 10:
+                diagmultiply();
+                break;
+            case 11:
+                diagnegate();
+                break;
+            case 12:
+                diagplus();
+                break;
+            case 13:
+                diagpow();
+                break;
+            case 14:
+                diagremainder();
+                break;
+            case 15:
+                diagsubtract();
+                break;
+            case 16:
+                diagmath();
+                break; // general math
+
+            /* -------------------------------------------------------------- */
+            /* Other methods */
+            /* -------------------------------------------------------------- */
+            case 17:
+                diagbyteValue();
+                break;
+            case 18:
+                diagcomparetoObj();
+                break;
+            case 19:
+                diagdoublevalue();
+                break;
+            case 20:
+                diagequals();
+                break;
+            case 21:
+                diagfloatvalue();
+                break;
+            case 22:
+                diagformat();
+                break;
+            case 23:
+                diaghashcode();
+                break;
+            case 24:
+                diagintvalue();
+                break;
+            case 25:
+                diaglongvalue();
+                break;
+            case 26:
+                diagmovepointleft();
+                break;
+            case 27:
+                diagmovepointright();
+                break;
+            case 28:
+                diagscale();
+                break;
+            case 29:
+                diagsetscale();
+                break;
+            case 30:
+                diagshortvalue();
+                break;
+            case 31:
+                diagsignum();
+                break;
+            case 32:
+                diagtobigdecimal();
+                break;
+            case 33:
+                diagtobiginteger();
+                break;
+            case 34:
+                diagtochararray();
+                break;
+            case 35:
+                diagtostring();
+                break;
+            case 36:
+                diagunscaledvalue();
+                break;
+            case 37:
+                diagvalueof();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Mutation test [must be the last test] */
+            /* -------------------------------------------------------------- */
+            case 38:
+                diagmutation();
+                break;
+            // if any more, increase testcount above
+            default: {
+                say("*** dotest case not found:" + " " + num + " " + "***");
+            }
+            }
+        }
+        return;
+    }
+
+    /*--------------------------------------------------------------------*/
+    /* Diagnostic group methods */
+    /*--------------------------------------------------------------------*/
+
+    /** Test constructors (and {@link #toString()} for equalities). */
+
+    public void diagconstructors() {
+        boolean flag = false;
+        java.lang.String num;
+        java.math.BigInteger bip;
+        java.math.BigInteger biz;
+        java.math.BigInteger bin;
+        com.ibm.icu.math.BigDecimal bda;
+        com.ibm.icu.math.BigDecimal bdb;
+        com.ibm.icu.math.BigDecimal bmc;
+        com.ibm.icu.math.BigDecimal bmd;
+        com.ibm.icu.math.BigDecimal bme;
+        java.lang.RuntimeException e = null;
+        char ca[];
+        double dzer;
+        double dpos;
+        double dneg;
+        double dpos5;
+        double dneg5;
+        double dmin;
+        double dmax;
+        double d;
+        java.lang.String badstrings[];
+        int i = 0;
+
+        // constants [statically-called constructors]
+        (new Test("con001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+        (new Test("con002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+        (new Test("con003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+        (new Test("con004")).ok = (com.ibm.icu.math.BigDecimal.ZERO.intValueExact()) == 0;
+        (new Test("con005")).ok = (com.ibm.icu.math.BigDecimal.ONE.intValueExact()) == 1;
+        (new Test("con006")).ok = (com.ibm.icu.math.BigDecimal.TEN.intValueExact()) == 10;
+
+        // [java.math.] BigDecimal
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        (new Test("cbd001")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");
+        (new Test("cbd002")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");
+        (new Test("cbd003")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");
+        (new Test("cbd004")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");
+        (new Test("cbd005")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");
+        (new Test("cbd006")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");
+        (new Test("cbd007")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");
+        (new Test("cbd008")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");
+        (new Test("cbd009")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");
+
+        num = "123456789.123456789";
+        (new Test("cbd010")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "123456789.000000000";
+        (new Test("cbd011")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "123456789000000000";
+        (new Test("cbd012")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "0.00000123456789";
+        (new Test("cbd013")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "0.000000123456789";
+
+        // ignore format change issues with 1.5
+        if (!isJDK15OrLater)
+            (new Test("cbd014")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $3) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbi015")).ok = flag;
+//#endif
+
+        // BigInteger
+        bip = new BigInteger("987654321987654321987654321"); // biggie +ve
+        biz = new BigInteger("0"); // biggie 0
+        bin = new BigInteger("-12345678998765432112345678"); // biggie -ve
+        (new Test("cbi001")).ok = ((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());
+        (new Test("cbi002")).ok = ((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");
+        (new Test("cbi003")).ok = ((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $4) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbi004")).ok = flag;
+
+        // BigInteger with scale
+        bip = new BigInteger("123456789"); // bigish
+        bda = new com.ibm.icu.math.BigDecimal(bip);
+        bdb = new com.ibm.icu.math.BigDecimal(bip, 5);
+        bmc = new com.ibm.icu.math.BigDecimal(bip, 15);
+        (new Test("cbs001")).ok = (bda.toString()).equals("123456789");
+        (new Test("cbs002")).ok = (bdb.toString()).equals("1234.56789");
+        (new Test("cbs003")).ok = (bmc.toString()).equals("0.000000123456789");
+        bip = new BigInteger("123456789123456789123456789"); // biggie
+        bda = new com.ibm.icu.math.BigDecimal(bip);
+        bdb = new com.ibm.icu.math.BigDecimal(bip, 7);
+        bmc = new com.ibm.icu.math.BigDecimal(bip, 13);
+        bmd = new com.ibm.icu.math.BigDecimal(bip, 19);
+        bme = new com.ibm.icu.math.BigDecimal(bip, 29);
+        (new Test("cbs011")).ok = (bda.toString()).equals("123456789123456789123456789");
+        (new Test("cbs012")).ok = (bdb.toString()).equals("12345678912345678912.3456789");
+        (new Test("cbs013")).ok = (bmc.toString()).equals("12345678912345.6789123456789");
+        (new Test("cbs014")).ok = (bmd.toString()).equals("12345678.9123456789123456789");
+        (new Test("cbs015")).ok = (bme.toString()).equals("0.00123456789123456789123456789");
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null, 1);
+            flag = false;
+        } catch (java.lang.NullPointerException $5) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbs004")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(bip, -8);
+            flag = false;
+        } catch (java.lang.RuntimeException $6) {
+            e = $6;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("cbs005")).ok = flag;
+
+        // char[]
+        // We just test it's there
+        // Functionality is tested by BigDecimal(String).
+        ca = ("123.45").toCharArray();
+        (new Test("cca001")).ok = ((new com.ibm.icu.math.BigDecimal(ca))
+                .toString()).equals("123.45");
+        try {
+            new com.ibm.icu.math.BigDecimal((char[]) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $7) {
+            flag = true;
+        }/* checknull */
+        (new Test("cca010")).ok = flag;
+
+        // char[],int,int
+        // We just test it's there, and that offsets work.
+        // Functionality is tested by BigDecimal(String).
+        ca = ("123.45").toCharArray();
+        (new Test("cca101")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 6)).toString()).equals("123.45");
+        (new Test("cca102")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 5)).toString()).equals("23.45");
+        (new Test("cca103")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 4)).toString()).equals("3.45");
+        (new Test("cca104")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 3)).toString()).equals("0.45");
+        (new Test("cca105")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 2)).toString()).equals("45");
+        (new Test("cca106")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 5, 1)).toString()).equals("5");
+
+        (new Test("cca110")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 1)).toString()).equals("1");
+        (new Test("cca111")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
+        (new Test("cca112")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 1)).toString()).equals("3");
+        (new Test("cca113")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
+
+        (new Test("cca120")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 2)).toString()).equals("12");
+        (new Test("cca121")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 2)).toString()).equals("23");
+        (new Test("cca122")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 2)).toString()).equals("3");
+        (new Test("cca123")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 2)).toString()).equals("0.4");
+
+        (new Test("cca130")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 3)).toString()).equals("123");
+        (new Test("cca131")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 3)).toString()).equals("23");
+        (new Test("cca132")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 3)).toString()).equals("3.4");
+
+        (new Test("cca140")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 4)).toString()).equals("123");
+        (new Test("cca141")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
+
+        (new Test("cca150")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 5)).toString()).equals("123.4");
+
+        // a couple of oddies
+        ca = ("x23.4x").toCharArray();
+        (new Test("cca160")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
+        (new Test("cca161")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
+        (new Test("cca162")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
+
+        ca = ("0123456789.9876543210").toCharArray();
+        (new Test("cca163")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 21)).toString()).equals("123456789.9876543210");
+        (new Test("cca164")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 20)).toString()).equals("123456789.9876543210");
+        (new Test("cca165")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 19)).toString()).equals("23456789.9876543210");
+        (new Test("cca166")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 18)).toString()).equals("23456789.987654321");
+        (new Test("cca167")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 17)).toString()).equals("23456789.98765432");
+        (new Test("cca168")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 16)).toString()).equals("23456789.9876543");
+
+        try {
+            new com.ibm.icu.math.BigDecimal((char[]) null, 0, 1);
+            flag = false;
+        } catch (java.lang.NullPointerException $8) {
+            flag = true;
+        }/* checknull */
+        (new Test("cca200")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 0, 0);
+            flag = false;
+        } catch (java.lang.NumberFormatException $9) {
+            flag = true;
+        }/* checklen */
+        (new Test("cca201")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 2, 4);
+            flag = false;
+        } catch (java.lang.RuntimeException $10) { // anything OK
+            flag = true;
+        }/* checkbound */
+        (new Test("cca202")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), -1, 2);
+            flag = false;
+        } catch (java.lang.RuntimeException $11) { // anything OK
+            flag = true;
+        }/* checkbound2 */
+        (new Test("cca203")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 1, -2);
+            flag = false;
+        } catch (java.lang.RuntimeException $12) { // anything OK
+            flag = true;
+        }/* checkbound3 */
+        (new Test("cca204")).ok = flag;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        // double [deprecated]
+        // Note that many of these differ from the valueOf(double) results.
+        dzer = (double) 0;
+        dpos = (double) 1;
+        dpos = dpos / ((double) 10);
+        dneg = (double) -dpos;
+        (new Test("cdo001")).ok = ((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");
+
+        (new Test("cdo002")).ok = ((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'
+        (new Test("cdo003")).ok = ((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");
+
+        dpos5 = (double) 0.5D;
+        dneg5 = (double) -dpos5;
+        (new Test("cdo004")).ok = ((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");
+        (new Test("cdo005")).ok = ((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");
+        dmin = java.lang.Double.MIN_VALUE;
+        dmax = java.lang.Double.MAX_VALUE;
+        if (!isJDK15OrLater) // for some reason we format using scientific
+                                // notation on 1.5 after 30 decimals or so
+            (new Test("cdo006")).ok = ((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");
+
+        (new Test("cdo007")).ok = ((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");
+
+        // nasties
+        d = (double) 9;
+        d = d / ((double) 10);
+        (new Test("cdo010")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");
+
+        d = d / ((double) 10);
+        (new Test("cdo011")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");
+
+        d = d / ((double) 10);
+        (new Test("cdo012")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");
+
+        d = d / ((double) 10);
+        (new Test("cdo013")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");
+
+        d = d / ((double) 10);
+        (new Test("cdo014")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");
+
+        d = d / ((double) 10);
+        (new Test("cdo015")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo016")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo017")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo018")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");
+//#endif
+
+        try {
+            new com.ibm.icu.math.BigDecimal(
+                    java.lang.Double.POSITIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $13) {
+            flag = true;
+        }/* checkpin */
+        (new Test("cdo101")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(
+                    java.lang.Double.NEGATIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $14) {
+            flag = true;
+        }/* checknin */
+        (new Test("cdo102")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);
+            flag = false;
+        } catch (java.lang.NumberFormatException $15) {
+            flag = true;
+        }/* checknan */
+        (new Test("cdo103")).ok = flag;
+
+        // int
+        (new Test("cin001")).ok = ((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");
+        (new Test("cin002")).ok = ((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");
+        (new Test("cin003")).ok = ((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");
+        (new Test("cin004")).ok = ((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");
+        (new Test("cin005")).ok = ((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");
+        (new Test("cin006")).ok = ((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");
+        (new Test("cin007")).ok = ((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");
+        (new Test("cin008")).ok = ((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");
+        (new Test("cin009")).ok = ((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");
+        (new Test("cin010")).ok = ((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");
+        (new Test("cin011")).ok = ((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");
+        (new Test("cin012")).ok = ((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");
+        (new Test("cin013")).ok = ((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");
+        (new Test("cin014")).ok = ((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");
+        (new Test("cin015")).ok = ((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");
+        (new Test("cin016")).ok = ((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");
+        (new Test("cin017")).ok = ((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");
+        (new Test("cin018")).ok = ((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");
+
+        (new Test("cin019")).ok = ((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");
+        (new Test("cin020")).ok = ((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");
+        (new Test("cin021")).ok = ((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");
+        (new Test("cin022")).ok = ((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");
+        (new Test("cin023")).ok = ((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");
+
+        // long
+        (new Test("clo001")).ok = ((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");
+        (new Test("clo002")).ok = ((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");
+        (new Test("clo003")).ok = ((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");
+        (new Test("clo004")).ok = ((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");
+        (new Test("clo005")).ok = ((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");
+
+        // String [many more examples are elsewhere]
+        // strings without E cannot generate E in result
+        (new Test("cst001")).ok = ((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");
+        (new Test("cst002")).ok = ((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");
+        (new Test("cst003")).ok = ((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");
+        (new Test("cst004")).ok = ((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");
+        (new Test("cst005")).ok = ((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");
+        (new Test("cst006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");
+        (new Test("cst007")).ok = ((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");
+        (new Test("cst008")).ok = ((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");
+        (new Test("cst009")).ok = ((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");
+        (new Test("cst010")).ok = ((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");
+        (new Test("cst011")).ok = ((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");
+        (new Test("cst012")).ok = ((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");
+        (new Test("cst013")).ok = ((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");
+        (new Test("cst014")).ok = ((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR
+        (new Test("cst015")).ok = ((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR
+        (new Test("cst016")).ok = ((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");
+        (new Test("cst017")).ok = ((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");
+        (new Test("cst018")).ok = ((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");
+        (new Test("cst019")).ok = ((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");
+        (new Test("cst020")).ok = ((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst021")).ok = ((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst022")).ok = ((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst023")).ok = ((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst024")).ok = ((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");
+        (new Test("cst025")).ok = ((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");
+        (new Test("cst026")).ok = ((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");
+
+        // exotics --
+        (new Test("cst035")).ok = ((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");
+        (new Test("cst036")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");
+        (new Test("cst037")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");
+        (new Test("cst038")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");
+
+        // strings with E
+        (new Test("cst040")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+        (new Test("cst041")).ok = ((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");
+        (new Test("cst042")).ok = ((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");
+        (new Test("cst043")).ok = ((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");
+        (new Test("cst044")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+        (new Test("cst045")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+        (new Test("cst046")).ok = ((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");
+        (new Test("cst047")).ok = ((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");
+        (new Test("cst048")).ok = ((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");
+        (new Test("cst049")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+        (new Test("cst050")).ok = ((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");
+        (new Test("cst051")).ok = ((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");
+        (new Test("cst052")).ok = ((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");
+        (new Test("cst053")).ok = ((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");
+        (new Test("cst054")).ok = ((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");
+        (new Test("cst055")).ok = ((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");
+        (new Test("cst056")).ok = ((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");
+        (new Test("cst057")).ok = ((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");
+        (new Test("cst058")).ok = ((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");
+        (new Test("cst059")).ok = ((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");
+        (new Test("cst060")).ok = ((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");
+        (new Test("cst061")).ok = ((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");
+        (new Test("cst062")).ok = ((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");
+        (new Test("cst063")).ok = ((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");
+        (new Test("cst064")).ok = ((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");
+        (new Test("cst065")).ok = ((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");
+        (new Test("cst066")).ok = ((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");
+        (new Test("cst067")).ok = ((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");
+        (new Test("cst068")).ok = ((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");
+        (new Test("cst069")).ok = ((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");
+
+        (new Test("cst070")).ok = ((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");
+        (new Test("cst071")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");
+        (new Test("cst072")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");
+        (new Test("cst073")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");
+        (new Test("cst074")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");
+        (new Test("cst075")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");
+        (new Test("cst076")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");
+        (new Test("cst077")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");
+        (new Test("cst078")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");
+        (new Test("cst079")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");
+        (new Test("cst080")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");
+        (new Test("cst081")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");
+        (new Test("cst082")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");
+        (new Test("cst083")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");
+
+        (new Test("cst090")).ok = ((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");
+        (new Test("cst091")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");
+        (new Test("cst092")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");
+        (new Test("cst093")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");
+        (new Test("cst094")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");
+        (new Test("cst095")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");
+        (new Test("cst096")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");
+        (new Test("cst097")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");
+        (new Test("cst098")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");
+        (new Test("cst099")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");
+        (new Test("cst100")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");
+        (new Test("cst101")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");
+        (new Test("cst102")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");
+        (new Test("cst103")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");
+
+        (new Test("cst110")).ok = ((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");
+        (new Test("cst111")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");
+        (new Test("cst112")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");
+        (new Test("cst113")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");
+        (new Test("cst114")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");
+        (new Test("cst115")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");
+        (new Test("cst116")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");
+        (new Test("cst117")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");
+        (new Test("cst118")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");
+        (new Test("cst119")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");
+        (new Test("cst120")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");
+        (new Test("cst121")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");
+        (new Test("cst122")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");
+        (new Test("cst123")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");
+
+        (new Test("cst130")).ok = ((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");
+        (new Test("cst131")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");
+        (new Test("cst132")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");
+        (new Test("cst133")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");
+        (new Test("cst134")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");
+        (new Test("cst135")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");
+        (new Test("cst136")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");
+        (new Test("cst137")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");
+        (new Test("cst138")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");
+        (new Test("cst139")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");
+        (new Test("cst140")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");
+        (new Test("cst141")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");
+        (new Test("cst142")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");
+        (new Test("cst143")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");
+
+        (new Test("cst150")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");
+        (new Test("cst151")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");
+        (new Test("cst152")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");
+        (new Test("cst153")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");
+        (new Test("cst154")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");
+        (new Test("cst155")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");
+        (new Test("cst156")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");
+        (new Test("cst157")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");
+        (new Test("cst158")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");
+        (new Test("cst159")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");
+        (new Test("cst160")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");
+        (new Test("cst161")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");
+        (new Test("cst162")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");
+        (new Test("cst163")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");
+
+        (new Test("cst170")).ok = ((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");
+        (new Test("cst171")).ok = ((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");
+        (new Test("cst172")).ok = ((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");
+        (new Test("cst173")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");
+        (new Test("cst174")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");
+        (new Test("cst175")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");
+        (new Test("cst176")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");
+        (new Test("cst177")).ok = ((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");
+        (new Test("cst179")).ok = ((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");
+        (new Test("cst180")).ok = ((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");
+
+        // baddies --
+        badstrings = new java.lang.String[] { "1..2", ".", "..", "++1", "--1",
+                "-+1", "+-1", "12e", "12e++", "12f4", " +1", "+ 1", "12 ",
+                " + 1", " - 1 ", "x", "-1-", "12-", "3+", "", "1e-",
+                "7e1000000000", "", "e100", "\u0e5a", "\u0b65", "99e999999999",
+                "999e999999999", "0.9e-999999999", "0.09e-999999999",
+                "0.1e1000000000", "10e-1000000000", "0.9e9999999999",
+                "99e-9999999999", "111e9999999999",
+                "1111e-9999999999" + " " + "111e*123", "111e123-", "111e+12+",
+                "111e1-3-", "111e1*23", "111e1e+3", "1e1.0", "1e123e", "ten",
+                "ONE", "1e.1", "1e1.", "1ee", "e+1" }; // 200-203
+        // 204-207
+        // 208-211
+        // 211-214
+        // 215-219
+        // 220-222
+        // 223-224
+        // 225-226
+        // 227-228
+        // 229-230
+        // 231-232
+        // 233-234
+        // 235-237
+        // 238-240
+        // 241-244
+        // 245-248
+
+        // watch out for commas on continuation lines
+
+        {
+            int $16 = badstrings.length;
+            i = 0;
+            for (; $16 > 0; $16--, i++) {
+                try {
+                    new com.ibm.icu.math.BigDecimal(badstrings[i]);
+                    say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());
+                    flag = false;
+                } catch (java.lang.NumberFormatException $17) {
+                    flag = true;
+                }
+                (new Test("cst" + (200 + i))).ok = flag;
+            }
+        }/* i */
+
+        try {
+            new com.ibm.icu.math.BigDecimal((java.lang.String) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $18) {
+            flag = true;
+        }/* checknull */
+        (new Test("cst301")).ok = flag;
+
+        summary("Constructors");
+        return;
+    }
+
+    /** Mutation tests (checks that contents of constant objects are unchanged). */
+
+    public void diagmutation() {
+        /* ---------------------------------------------------------------- */
+        /* Final tests -- check constants haven't mutated */
+        /* -- also that MC objects haven't mutated */
+        /* ---------------------------------------------------------------- */
+        (new Test("cuc001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+        (new Test("cuc002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+        (new Test("cuc003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+
+        (new Test("cuc010")).ok = com.ibm.icu.math.BigDecimal.ROUND_CEILING == com.ibm.icu.math.MathContext.ROUND_CEILING;
+        (new Test("cuc011")).ok = com.ibm.icu.math.BigDecimal.ROUND_DOWN == com.ibm.icu.math.MathContext.ROUND_DOWN;
+        (new Test("cuc012")).ok = com.ibm.icu.math.BigDecimal.ROUND_FLOOR == com.ibm.icu.math.MathContext.ROUND_FLOOR;
+        (new Test("cuc013")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN == com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+        (new Test("cuc014")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN == com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+        (new Test("cuc015")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_UP == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc016")).ok = com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY == com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+        (new Test("cuc017")).ok = com.ibm.icu.math.BigDecimal.ROUND_UP == com.ibm.icu.math.MathContext.ROUND_UP;
+
+        (new Test("cuc020")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getDigits()) == 9;
+        (new Test("cuc021")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc022")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc023")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+
+        // mc9 =MathContext(9)
+        // mcld =MathContext(9, SCIENTIFIC, 1)
+        // mcfd =MathContext(0, PLAIN)
+        (new Test("cuc030")).ok = (mc9.getDigits()) == 9;
+        (new Test("cuc031")).ok = (mc9.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc032")).ok = (mc9.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc033")).ok = (mc9.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc034")).ok = (mcld.getDigits()) == 9;
+        (new Test("cuc035")).ok = (mcld.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc036")).ok = (mcld.getLostDigits() ? 1 : 0) == 1;
+        (new Test("cuc037")).ok = (mcld.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc038")).ok = (mcfd.getDigits()) == 0;
+        (new Test("cuc039")).ok = (mcfd.getForm()) == com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("cuc040")).ok = (mcfd.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc041")).ok = (mcfd.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+
+        summary("No mutation");
+    }
+
+
+    /* ----------------------------------------------------------------- */
+    /* Operator test methods */
+    /* ----------------------------------------------------------------- */
+    // The use of context in these tests are primarily to show that they
+    // are correctly passed to the methods, except that we check that
+    // each method checks for lostDigits.
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#abs} method. */
+
+    public void diagabs() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        // most of the function of this is tested by add
+        (new Test("abs001")).ok = ((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");
+        (new Test("abs002")).ok = ((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");
+        (new Test("abs003")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");
+        (new Test("abs004")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");
+        (new Test("abs005")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");
+        (new Test("abs006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs007")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs008")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs009")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");
+        (new Test("abs010")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");
+        (new Test("abs011")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");
+        (new Test("abs012")).ok = ((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");
+        (new Test("abs013")).ok = ((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");
+        (new Test("abs014")).ok = ((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");
+        (new Test("abs015")).ok = ((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");
+        (new Test("abs016")).ok = ((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");
+        try {
+            tenlong.abs(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $19) {
+            ae = $19;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("abs020")).ok = flag;
+        // check lostdigits not raised if digits=0 [monadic method]
+        try {
+            tenlong.abs(mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $20) {
+            ae = $20;
+            flag = false;
+        }/* checkdigits */
+        (new Test("abs021")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.TEN
+                    .abs((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $21) {
+            flag = true;
+        }/* checknull */
+        (new Test("abs022")).ok = flag;
+
+        summary("abs");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#add} method. */
+
+    public void diagadd() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal alhs;
+        com.ibm.icu.math.BigDecimal arhs;
+        java.lang.ArithmeticException ae = null;
+
+        // [first group are 'quick confidence check']
+        (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");
+        (new Test("add003")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("9.05");
+        (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");
+        (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");
+        (new Test("add006")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-4.5");
+        (new Test("add007")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+        (new Test("add008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("2.50");
+        (new Test("add009")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("2.23456789");
+        
+        (new Test("add010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011"),mcdef).toString()).equals("2.23456800");
+        
+        
+        (new Test("add011")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+        
+        (new Test("add012")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+        
+        (new Test("add013")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550"),mcdef).toString()).equals("0.999999999");
+        
+        (new Test("add014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+        
+        (new Test("add015")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+        
+        
+        (new Test("add016")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add017")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add018")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add019")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add020")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000007E+13");
+        
+        
+        // [Now the same group with fixed arithmetic]
+        (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");
+        (new Test("add031")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("9.05");
+        (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");
+        (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");
+        (new Test("add034")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-4.5");
+        (new Test("add035")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+        (new Test("add036")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("2.50");
+        (new Test("add037")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("2.23456789");
+        
+        (new Test("add038")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011")).toString()).equals("2.23456800");
+        
+        
+        (new Test("add039")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999999");
+        
+        (new Test("add040")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999995");
+        
+        (new Test("add041")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550")).toString()).equals("0.9999999994");
+        
+        (new Test("add042")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+        
+        (new Test("add043")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+        
+        
+        (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");
+        
+        (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");
+        
+        (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");
+        
+        (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");
+        
+        (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");
+        
+
+        // symmetry:
+        (new Test("add049")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add050")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add051")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add052")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add053")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("1.00000007E+13");
+        
+        
+        (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");
+        
+        (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");
+        
+        (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");
+        
+        (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");
+        
+        (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");
+
+        // some rounding effects
+        (new Test("add059")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0000")).toString()).equals("0.9998");
+        
+        (new Test("add060")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0001")).toString()).equals("0.9999");
+        
+        (new Test("add061")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0002")).toString()).equals("1.0000");
+        
+        (new Test("add062")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0003")).toString()).equals("1.0001");
+
+
+        // MC
+        (new Test("add070")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcfd).toString()).equals("10000000070000");
+        
+        (new Test("add071")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add072")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+
+
+        // zero preservation
+        (new Test("add080")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0001"),mc6).toString()).equals("1.0001");
+        
+        (new Test("add081")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00001"),mc6).toString()).equals("1.00001");
+        
+        (new Test("add082")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.000001"),mc6).toString()).equals("1.00000");
+        
+        (new Test("add083")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0000001"),mc6).toString()).equals("1.00000");
+        
+        (new Test("add084")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00000001"),mc6).toString()).equals("1.00000");
+
+
+        // more fixed, LHS swaps
+        (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");
+        (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");
+        (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");
+        (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");
+        (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");
+        (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");
+        (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");
+        (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");
+        (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+        (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+        (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+        (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+        (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+        (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+        (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");
+        (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");
+        (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");
+        (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");
+
+        // more fixed, RHS swaps
+        (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");
+        (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");
+        (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");
+        (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");
+        (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");
+        (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");
+        (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");
+        (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");
+        (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+        (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+        (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+        (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+        (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+        (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+        (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");
+        (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");
+        (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");
+        (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");
+
+        // [some of the next group are really constructor tests]
+        (new Test("add140")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+        (new Test("add141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+        (new Test("add142")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add143")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add144")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add145")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.30");
+        (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+        (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");
+        (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");
+        (new Test("add149")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03"),mcdef).toString()).equals("0");
+        
+        (new Test("add150")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+        (new Test("add151")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+        (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add154")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add155")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.30");
+        (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+        (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");
+        (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");
+        (new Test("add159")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).add(new com.ibm.icu.math.BigDecimal("-0.3")).toString()).equals("0.0");
+        (new Test("add160")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03")).toString()).equals("0.00");
+        (new Test("add161")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("-1"),mcfd).toString()).equals("6999999999999");
+        
+        (new Test("add162")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("1.11"),mcfd).toString()).equals("7000000000001.11");
+        
+        (new Test("add163")).ok=((new com.ibm.icu.math.BigDecimal("1.11")).add(new com.ibm.icu.math.BigDecimal("7E+12"),mcfd).toString()).equals("7000000000001.11");
+        
+
+        // input preparation tests
+        alhs=new com.ibm.icu.math.BigDecimal("12345678900000");
+        arhs=new com.ibm.icu.math.BigDecimal("9999999999999");
+        (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");
+        (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");
+        (new Test("add172")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3456"),mc3).toString()).equals("1.55E+4");
+        // next was 1.54E+4 under old [truncate to digits+1] rules
+        (new Test("add173")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3446"),mc3).toString()).equals("1.55E+4");
+        (new Test("add174")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3454"),mc3).toString()).equals("1.55E+4");
+        (new Test("add175")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3444"),mc3).toString()).equals("1.54E+4");
+        
+        (new Test("add176")).ok=((new com.ibm.icu.math.BigDecimal("3456")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        // next was 1.54E+4 under old [truncate to digits+1] rules
+        (new Test("add177")).ok=((new com.ibm.icu.math.BigDecimal("3446")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        (new Test("add178")).ok=((new com.ibm.icu.math.BigDecimal("3454")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        (new Test("add179")).ok=((new com.ibm.icu.math.BigDecimal("3444")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.54E+4");
+
+        try {
+            ten.add((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $22) {
+            flag = true;
+        }/* checknull */
+        (new Test("add200")).ok = flag;
+        try {
+            ten.add(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $23) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("add201")).ok = flag;
+
+        try {
+            tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $24) {
+            ae = $24;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("add202")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $25) {
+            ae = $25;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("add203")).ok = flag;
+
+        // check lostdigits not raised if digits=0 [dyadic method]
+        try {
+            tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $26) {
+            ae = $26;
+            flag = false;
+        }/* checkdigits */
+        (new Test("add204")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $27) {
+            ae = $27;
+            flag = false;
+        }/* checkdigits */
+        (new Test("add205")).ok = flag;
+
+        summary("add");
+    }
+
+    /* ----------------------------------------------------------------- */
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(BigDecimal)}
+     * method.
+     */
+
+    public void diagcompareto() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+        // we assume add/subtract test function; this just
+        // tests existence, exceptions, and possible results
+
+        (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;
+        (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;
+        (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;
+        (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;
+        (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);
+        (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);
+        (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);
+        (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);
+        try {
+            ten.compareTo((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $28) {
+            flag = true;
+        }/* checknull */
+        (new Test("cpt100")).ok = flag;
+        try {
+            ten.compareTo(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $29) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("cpt101")).ok = flag;
+
+        try {
+            tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $30) {
+            ae = $30;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("cpt102")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $31) {
+            ae = $31;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("cpt103")).ok = flag;
+
+        summary("compareTo");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#divide} method. */
+
+    public void diagdivide() {
+        boolean flag = false;
+        com.ibm.icu.math.MathContext rmcd;
+        int rhu;
+        int rd;
+        int ru;
+        java.lang.RuntimeException e = null;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("div301")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.333333333");
+        (new Test("div302")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.666666667");
+        (new Test("div303")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div304")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("-2.4");
+        (new Test("div305")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("-2.4");
+        (new Test("div306")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("2.4");
+        (new Test("div307")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div308")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div309")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+        (new Test("div310")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+        (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");
+        (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");
+        (new Test("div314")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.5");
+        (new Test("div315")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0"),mcdef).toString()).equals("2.5");
+        (new Test("div316")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("2.5");
+        (new Test("div317")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200"),mcdef).toString()).equals("25");
+        (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div319")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div320")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div321")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div322")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div323")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-50")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+        // MC
+        (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div326")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+9");
+        (new Test("div327")).ok=((new com.ibm.icu.math.BigDecimal("9999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+7");
+        (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");
+
+        // check rounding explicitly [note: digits+1 truncation]
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+        (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+        (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+        (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+        (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+        (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+        (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+        (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);
+        (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+        (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+
+        // fixed point...
+        (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("div352")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.4");
+        (new Test("div353")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("-2.4");
+        (new Test("div354")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("-2.4");
+        (new Test("div355")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("2.4");
+        (new Test("div356")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.40");
+        (new Test("div357")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.400");
+        (new Test("div358")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.2");
+        (new Test("div359")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.200");
+        (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");
+        (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");
+        (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");
+        (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");
+        (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");
+        (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");
+        (new Test("div367")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.5");
+        (new Test("div368")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("2.5");
+        (new Test("div369")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("2.5");
+        (new Test("div370")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25.0");
+        (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");
+        (new Test("div372")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.4");
+        (new Test("div373")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.5");
+        (new Test("div374")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.9");
+        (new Test("div375")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.999");
+        (new Test("div376")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+        (new Test("div377")).ok=((new com.ibm.icu.math.BigDecimal("0.000000000")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0.000000000");
+
+        // - Fixed point; explicit scales & rounds [old BigDecimal divides]
+        rhu = com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        rd = com.ibm.icu.math.MathContext.ROUND_DOWN;
+        (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+        (new Test("div003")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+        (new Test("div004")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.0");
+        (new Test("div005")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.00");
+        (new Test("div006")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.000");
+        (new Test("div007")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.0000");
+        (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+        (new Test("div010")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+        (new Test("div011")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.3");
+        (new Test("div012")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.33");
+        (new Test("div013")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.333");
+        (new Test("div014")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.3333");
+        (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");
+        (new Test("div017")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("1");
+        (new Test("div018")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.7");
+        (new Test("div019")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.67");
+        (new Test("div020")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.667");
+        (new Test("div021")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.6667");
+        
+        (new Test("div030")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),4,rhu).toString()).equals("0.5000");
+        (new Test("div031")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),3,rhu).toString()).equals("0.500");
+        (new Test("div032")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),2,rhu).toString()).equals("0.50");
+        (new Test("div033")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),1,rhu).toString()).equals("0.5");
+        (new Test("div034")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),0,rhu).toString()).equals("1");
+        
+        (new Test("div035")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,rhu).toString()).equals("0.0200");
+        (new Test("div036")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,rhu).toString()).equals("0.020");
+        (new Test("div037")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,rhu).toString()).equals("0.02");
+        (new Test("div038")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,rhu).toString()).equals("0.0");
+        (new Test("div039")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,rhu).toString()).equals("0");
+        
+        (new Test("div040")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div041")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div042")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div043")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div044")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div045")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div046")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div047")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div048")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div049")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),4,rhu).toString()).equals("0.9780");
+        (new Test("div050")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),4,rhu).toString()).equals("0.9798");
+        (new Test("div051")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),4,rhu).toString()).equals("1.0000");
+        
+        (new Test("div060")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),rhu).toString()).equals("1.02272727");
+        (new Test("div061")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),rhu).toString()).equals("1.0227273");
+        (new Test("div062")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),rhu).toString()).equals("1.022727");
+        (new Test("div063")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),rhu).toString()).equals("0.97777778");
+        (new Test("div064")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),rhu).toString()).equals("0.9777778");
+        (new Test("div065")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),rhu).toString()).equals("0.977778");
+        (new Test("div066")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),rhu).toString()).equals("0.97778");
+        (new Test("div067")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),rhu).toString()).equals("0.9778");
+        (new Test("div068")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),rhu).toString()).equals("0.978");
+        (new Test("div069")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),rhu).toString()).equals("0.98");
+        (new Test("div070")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),rhu).toString()).equals("1.0");
+        (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");
+        
+        rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used
+        (new Test("div080")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rd).toString()).equals("0");
+        (new Test("div081")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rd).toString()).equals("0.6");
+        (new Test("div082")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rd).toString()).equals("0.66");
+        (new Test("div083")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rd).toString()).equals("0.666");
+        (new Test("div084")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rd).toString()).equals("0.6666");
+        
+        ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues
+        (new Test("div090")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5"),4,ru).toString()).equals("200.0000");
+        (new Test("div091")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("50"),4,ru).toString()).equals("20.0000");
+        (new Test("div092")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("500"),4,ru).toString()).equals("2.0000");
+        (new Test("div093")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,ru).toString()).equals("0.2000");
+        (new Test("div094")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,ru).toString()).equals("0.200");
+        (new Test("div095")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,ru).toString()).equals("0.20");
+        (new Test("div096")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,ru).toString()).equals("0.2");
+
+        // check rounding explicitly
+        (new Test("div101")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.06");
+        (new Test("div102")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+        (new Test("div103")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+        (new Test("div104")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.05");
+        (new Test("div105")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+        (new Test("div106")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+        (new Test("div107")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.05");
+        (new Test("div108")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+        (new Test("div109")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+        
+        (new Test("div110")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.04");
+        (new Test("div111")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("div112")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("div113")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+        (new Test("div114")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("div115")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("div116")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+        (new Test("div117")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.1");
+        (new Test("div118")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        
+        (new Test("div120")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.04");
+        (new Test("div121")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("div122")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div123")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.05");
+        (new Test("div124")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("div125")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div126")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.15");
+        (new Test("div127")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.2");
+        (new Test("div128")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div129")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.06");
+        (new Test("div130")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.1");
+        (new Test("div131")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        
+        (new Test("div140")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+        (new Test("div141")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("div142")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("div143")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+        (new Test("div144")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("div145")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("div146")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.06");
+        (new Test("div147")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("div148")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        
+        (new Test("div150")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.06");
+        (new Test("div151")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+        (new Test("div52.")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+
+        // - error conditions ---
+        try {
+            ten.divide((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $32) {
+            flag = true;
+        }/* checknull */
+        (new Test("div201")).ok = flag;
+        try {
+            ten.divide(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $33) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("div202")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"), -8, 0);
+            flag = false;
+        } catch (java.lang.RuntimeException $34) {
+            e = $34;
+            flag = flag & (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("div203")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $35) {
+            ae = $35;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div204")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $36) {
+            ae = $36;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div205")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"), 1, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $37) {
+            ae = $37;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div206")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("10001")).divide(
+                    new com.ibm.icu.math.BigDecimal("10000"), 1,
+                    com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $38) {
+            ae = $38;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div207")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1.0001")).divide(
+                    new com.ibm.icu.math.BigDecimal("1"), 1,
+                    com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+                flag = false;
+        } catch (java.lang.ArithmeticException $39) {
+            ae = $39;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div208")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("5"))
+                    .divide(new com.ibm.icu.math.BigDecimal("0.00"));
+            flag = false;
+        } catch (java.lang.ArithmeticException $40) {
+            ae = $40;
+            flag = (ae.getMessage()).equals("Divide by 0");
+        }/* div0 */
+        (new Test("div209")).ok = flag;
+
+        try {
+            tenlong.divide(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $41) {
+            ae = $41;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("div210")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.divide(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $42) {
+            ae = $42;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("div211")).ok = flag;
+
+        summary("divide");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#divideInteger} method. */
+
+    public void diagdivideInteger() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("dvI001")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+        (new Test("dvI002")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+        (new Test("dvI003")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+        (new Test("dvI004")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+        (new Test("dvI005")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+        (new Test("dvI006")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+        (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");
+        (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");
+        (new Test("dvI009")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("dvI010")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("dvI011")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("0");
+        (new Test("dvI012")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("1");
+        (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");
+        (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        (new Test("dvI015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        // MC
+        (new Test("dvI016")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mce).toString()).equals("2");
+        (new Test("dvI017")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mc6).toString()).equals("2");
+
+        // Fixed --
+        (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+        (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+        (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+        (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+        (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+        (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+        (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");
+        (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");
+        (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("dvI031")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("0");
+        (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");
+        (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+        (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+        (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+
+        try {
+            ten.divideInteger((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $43) {
+            flag = true;
+        }/* checknull */
+        (new Test("dvI101")).ok = flag;
+        try {
+            ten.divideInteger(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $44) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("dvI102")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $45) {
+            ae = $45;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("dvI103")).ok = flag;
+
+        try {
+            tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $46) {
+            ae = $46;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("dvI104")).ok = flag;
+
+        summary("divideInteger");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#max} method. */
+
+    public void diagmax() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        // we assume add/subtract test function; this and min just
+        // test existence and test the truth table
+        (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");
+        (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+        (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");
+        (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");
+        (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");
+        (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");
+        (new Test("max007")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("2E+3");
+        (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");
+        (new Test("max009")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3"),mc3).toString()).equals("2E+3");
+        try {
+            ten.max((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $47) {
+            flag = true;
+        }/* checknull */
+        (new Test("max010")).ok = flag;
+        try {
+            ten.max(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $48) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("max011")).ok = flag;
+        try {
+            tenlong.max(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $49) {
+            ae = $49;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("max012")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.max(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $50) {
+            ae = $50;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("max013")).ok = flag;
+        summary("max");
+    }
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#min} method. */
+
+    public void diagmin() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal minx = null;
+        java.lang.ArithmeticException ae = null;
+        // we assume add/subtract test function; this and max just
+        // test existence and test the truth table
+
+        (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+        (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+        (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");
+        (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");
+        (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");
+        (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");
+        (new Test("min007")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("-2E+3");
+        (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");
+        (new Test("min009")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3"),mc3).toString()).equals("-2E+3");
+        try {
+            minx = ten;
+            minx.min((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $51) {
+            flag = true;
+        }/* checknull */
+        (new Test("min010")).ok = flag;
+        try {
+            minx = ten;
+            minx.min(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $52) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("min011")).ok = flag;
+
+        try {
+            tenlong.min(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $53) {
+            ae = $53;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("min012")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(9)).min(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $54) {
+            ae = $54;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("min013")).ok = flag;
+        summary("min");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#multiply} method. */
+
+    public void diagmultiply() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal l9;
+        com.ibm.icu.math.BigDecimal l77e;
+        com.ibm.icu.math.BigDecimal l12345;
+        com.ibm.icu.math.BigDecimal edge;
+        com.ibm.icu.math.BigDecimal tenedge;
+        com.ibm.icu.math.BigDecimal hunedge;
+        com.ibm.icu.math.BigDecimal opo;
+        com.ibm.icu.math.BigDecimal d1 = null;
+        com.ibm.icu.math.BigDecimal d2 = null;
+        java.lang.ArithmeticException oe = null;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+        (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");
+        (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");
+        (new Test("mul004")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.40");
+        (new Test("mul005")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+        (new Test("mul006")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("-2.40");
+        (new Test("mul007")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("-2.40");
+        (new Test("mul008")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+        (new Test("mul009")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("2.40");
+        (new Test("mul010")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1"),mcdef).toString()).equals("36.139");
+        (new Test("mul011")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.0");
+        (new Test("mul012")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+        (new Test("mul013")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("1.23456789");
+        
+        (new Test("mul014")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mcdef).toString()).equals("100.000000");
+        
+        (new Test("mul015")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+        (new Test("mul016")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mc6).toString()).equals("10.00");
+        (new Test("mul017")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mc6).toString()).equals("100.000");
+        
+        
+        (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+        (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");
+        (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");
+        (new Test("mul023")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.40");
+        (new Test("mul024")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+        (new Test("mul025")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("-2.40");
+        (new Test("mul026")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("-2.40");
+        (new Test("mul027")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+        (new Test("mul028")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("2.40");
+        (new Test("mul029")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1")).toString()).equals("36.139");
+        (new Test("mul030")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.0");
+        (new Test("mul031")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.00");
+        (new Test("mul032")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("1.2345678900000000");
+        
+        (new Test("mul033")).ok=((new com.ibm.icu.math.BigDecimal("1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000");
+        
+        (new Test("mul034")).ok=((new com.ibm.icu.math.BigDecimal("-1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000");
+        
+        (new Test("mul035")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999")).toString()).equals("99.999999980000000001");
+        
+        (new Test("mul036")).ok=((new com.ibm.icu.math.BigDecimal("5.00")).multiply(new com.ibm.icu.math.BigDecimal("1E-3")).toString()).equals("0.00500");
+        (new Test("mul037")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0.000")).toString()).equals("0.00000");
+        (new Test("mul038")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0E-3")).toString()).equals("0.00"); // rhs is '0'
+        // 1999.12.21: next one is a edge case if intermediate longs are used
+        (new Test("mul039")).ok = ((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");
+
+        l9 = new com.ibm.icu.math.BigDecimal("123456789E+10");
+        l77e = new com.ibm.icu.math.BigDecimal("77E-20");
+        (new Test("mul040")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");
+        (new Test("mul041")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"), mc3).toString()).equals("4.26E+24");
+        (new Test("mul042")).ok = (l9.multiply(l77e).toString()).equals("0.95061727530000000000");
+        (new Test("mul043")).ok = (l9.multiply(l77e, mc3).toString()).equals("0.947");
+        (new Test("mul044")).ok = (l77e.multiply(l9, mc3).toString()).equals("0.947");
+
+        l12345 = new com.ibm.icu.math.BigDecimal("123.45");
+        (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");
+        (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");
+        (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");
+        (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");
+        (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");
+        (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");
+        (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");
+
+        // test some cases that are close to exponent overflow
+        (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");
+        (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");
+        (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");
+        (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");
+        (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");
+        edge = new com.ibm.icu.math.BigDecimal("9.999e999999999");
+        tenedge = ten.multiply(edge, mce);
+        (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");
+        hunedge = ten.multiply(tenedge, mce);
+        (new Test("mul066")).ok = (hunedge.toString()).equals("999.900E+999999999");
+        opo = new com.ibm.icu.math.BigDecimal("0.1"); // one tenth
+        (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");
+        (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");
+        (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");
+
+        (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");
+        (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");
+        (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");
+        (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");
+        (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");
+        (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");
+
+        // test some intermediate lengths
+        (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");
+        (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");
+        (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");
+        (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");
+        (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");
+        (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");
+
+        (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");
+        (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");
+        (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");
+        (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");
+        (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");
+        (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");
+
+        // test some more edge cases and carries
+        (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");
+        (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");
+        (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");
+        (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");
+        (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");
+        (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");
+        (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");
+        (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");
+        (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");
+        (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");
+        (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");
+        (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");
+        (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");
+        (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");
+        (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");
+        (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");
+        (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");
+        (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");
+        (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");
+        (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");
+        (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");
+        (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");
+        (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");
+        // test some more edge cases without carries
+        (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");
+        (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");
+        (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");
+        (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");
+        (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");
+        (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");
+        (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");
+        (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");
+        (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");
+        (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");
+        (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");
+        (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");
+        (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");
+        (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");
+        (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");
+        (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");
+        (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");
+        (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");
+        (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");
+        (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");
+        (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");
+        (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");
+        (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");
+
+        try {
+            ten.multiply((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $55) {
+            flag = true;
+        }/* checknull */
+        (new Test("mul200")).ok = flag;
+        try {
+            ten.multiply(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $56) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("mul201")).ok = flag;
+
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");
+            d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
+            d1.multiply(d2, mcdef); // marginal overflow
+            flag = false;
+        } catch (java.lang.ArithmeticException $57) {
+            oe = $57;
+            flag = (oe.getMessage()).equals("Exponent Overflow: 1000000000");
+        }/* checkover */
+        (new Test("mul202")).ok = flag;
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("112");
+            d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
+            d1.multiply(d2, mce); // marginal overflow, engineering
+            flag = false;
+        } catch (java.lang.ArithmeticException $58) {
+            oe = $58;
+            flag = (oe.getMessage()).equals("Exponent Overflow: 1000000002");
+        }/* checkover */
+        (new Test("mul203")).ok = flag;
+
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("0.9");
+            d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
+            d1.multiply(d2, mcdef); // marginal negative overflow
+            flag = false;
+        } catch (java.lang.ArithmeticException $59) {
+            oe = $59;
+            flag = (oe.getMessage()).equals("Exponent Overflow: -1000000000");
+        }/* checkover */
+        (new Test("mul204")).ok = flag;
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("0.9");
+            d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
+            d1.multiply(d2, mce); // marginal negative overflow,
+                                    // engineering
+            flag = false;
+        } catch (java.lang.ArithmeticException $60) {
+            oe = $60;
+            flag = (oe.getMessage()).equals("Exponent Overflow: -1000000002");
+        }/* checkover */
+        (new Test("mul205")).ok = flag;
+
+        try {
+            tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $61) {
+            ae = $61;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("mul206")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $62) {
+            ae = $62;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("mul207")).ok = flag;
+
+        summary("multiply");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#negate} method. */
+
+    public void diagnegate() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");
+        (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");
+        (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");
+        (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");
+        (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");
+        (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");
+        (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");
+        (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");
+        
+        (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");
+        (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");
+        (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");
+        (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");
+        (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");
+        (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");
+        (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");
+        
+        (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");
+        (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");
+        (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");
+        (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");
+
+        try {
+            ten.negate((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $63) {
+            flag = true;
+        }/* checknull */
+        (new Test("neg100")).ok = flag;
+
+        try {
+            tenlong.negate(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $64) {
+            ae = $64;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("neg101")).ok = flag;
+        summary("negate");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#plus} method. */
+
+    public void diagplus() {
+        boolean flag = false;
+        com.ibm.icu.math.MathContext mche1;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");
+        (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");
+        (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");
+        (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");
+        (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");
+        (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");
+        (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");
+        (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");
+        
+        (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");
+        (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");
+        (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");
+        (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");
+        (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");
+        (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");
+        (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");
+        (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");
+        (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");
+        
+        (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");
+        (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");
+        (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");
+        (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");
+
+        // try some exotic but silly rounding [format checks more varieties]
+        // [this mostly ensures we can set up and pass the setting]
+        mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");
+        (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");
+        (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");
+        
+        (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");
+        (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");
+        
+        (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");
+        (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");
+        (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");
+
+        // more fixed, potential LHS swaps if done by add 0
+        (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");
+        (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");
+        (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");
+        (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");
+        (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");
+
+        try {
+            ten.plus((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $65) {
+            flag = true;
+        }/* checknull */
+        (new Test("plu100")).ok = flag;
+
+        try {
+            tenlong.plus(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $66) {
+            ae = $66;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("plu101")).ok = flag;
+        summary("plus");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#pow} method. */
+
+    public void diagpow() {
+        boolean flag;
+        com.ibm.icu.math.BigDecimal x;
+        com.ibm.icu.math.BigDecimal temp;
+        int n = 0;
+        com.ibm.icu.math.BigDecimal vx;
+        com.ibm.icu.math.BigDecimal vn;
+        java.lang.ArithmeticException ae = null;
+        flag = true;
+        (new Test("pow001")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+        (new Test("pow002")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+        (new Test("pow003")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00"),mcdef).toString());
+        (new Test("pow004")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00"),mcdef).toString());
+        (new Test("pow005")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.000000000"),mcdef).toString());
+        (new Test("pow006")).ok=("1E-8").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-8"),mcdef).toString());
+        (new Test("pow007")).ok=("1E-7").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-7"),mcdef).toString());
+        (new Test("pow008")).ok="0.000001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-6"),mcdef).toString());
+        (new Test("pow009")).ok="0.00001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-5"),mcdef).toString());
+        (new Test("pow010")).ok="0.0001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+        (new Test("pow011")).ok="0.001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString());
+        (new Test("pow012")).ok="0.01".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+        (new Test("pow013")).ok="0.1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+        (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+        (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+        (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());
+        (new Test("pow017")).ok=("1E+9").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9"),mcdef).toString());
+        (new Test("pow018")).ok=("1E+99").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("99"),mcdef).toString());
+        (new Test("pow019")).ok=("1E+999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString());
+        (new Test("pow020")).ok=("1E+999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString());
+        (new Test("pow021")).ok=("1E+999999997").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString());
+        (new Test("pow022")).ok=("1E+333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString());
+        (new Test("pow023")).ok=("1E-333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-333333333"),mcdef).toString());
+        (new Test("pow024")).ok=("1E-999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999998"),mcdef).toString());
+        (new Test("pow025")).ok=("1E-999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999999"),mcdef).toString());
+        (new Test("pow026")).ok="0.5".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+        (new Test("pow027")).ok="0.25".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+        (new Test("pow028")).ok="0.0625".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+        
+        (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+        (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");
+        (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("pow056")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow057")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString()).equals("1E+999999999");
+        (new Test("pow058")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString()).equals("1E+999999998");
+        (new Test("pow059")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString()).equals("1E+999999997");
+        (new Test("pow060")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString()).equals("1E+333333333");
+        (new Test("pow061")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("77"),mcdef).toString()).equals("1E+77");
+        (new Test("pow062")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("22"),mcdef).toString()).equals("1E+22");
+        (new Test("pow063")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-77"),mcdef).toString()).equals("1E-77");
+        (new Test("pow064")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-22"),mcdef).toString()).equals("1E-22");
+        (new Test("pow065")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("0.5");
+        (new Test("pow066")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("0.25");
+        (new Test("pow067")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString()).equals("0.0625");
+        (new Test("pow068")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("36");
+        (new Test("pow069")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("9");/* from book */
+        (new Test("pow070")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).pow(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("64");/* from book */
+
+        // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]
+        // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */
+
+        /* General tests from original Rexx diagnostics */
+        x = new com.ibm.icu.math.BigDecimal("0.5");
+        temp = com.ibm.icu.math.BigDecimal.ONE;
+        flag = true;
+        {
+            n = 1;
+            for (; n <= 10; n++) {
+                temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+                flag = flag
+                        & (x.pow(new com.ibm.icu.math.BigDecimal(n), mcdef)
+                                .toString()).equals(temp.toString());
+            }
+        }/* n */
+        (new Test("pow080")).ok = flag;
+
+        x = new com.ibm.icu.math.BigDecimal("2");
+        temp = com.ibm.icu.math.BigDecimal.ONE;
+        flag = true;
+        {
+            n = 1;
+            for (; n <= 29; n++) {
+                temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+                flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());
+                flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal((int)-n),mcdef).toString()).equals(com.ibm.icu.math.BigDecimal.ONE.divide(temp,mcdef).toString());
+                /* Note that rounding errors are possible for larger "n" */
+                /* due to the information content of the exponent */
+            }
+        }/* n */
+        (new Test("pow081")).ok = flag;
+
+        /* The Vienna case. Checks both setup and 1/acc working precision */
+        // Modified 1998.12.14 as RHS no longer rounded before use (must fit)
+        // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
+        vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18
+        vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]
+        (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");
+
+        // - fixed point versions ---
+        (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+        (new Test("pow102")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+        (new Test("pow103")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00")).toString());
+        (new Test("pow104")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString());
+        (new Test("pow105")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00")).toString());
+        (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+        (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+        (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());
+        (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+        (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+        (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());
+        (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+        (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+        (new Test("pow114")).ok="1.0510100501".equals((new com.ibm.icu.math.BigDecimal("1.01")).pow(new com.ibm.icu.math.BigDecimal("5")).toString());
+
+        (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+        (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+        (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");
+        (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");
+        (new Test("pow128")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.00");
+        (new Test("pow129")).ok=((new com.ibm.icu.math.BigDecimal("6.00")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.0000");
+        (new Test("pow130")).ok=((new com.ibm.icu.math.BigDecimal("6.000")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.000000");
+        (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");
+        (new Test("pow132")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("64");
+
+        /* errors */
+        try {
+            ten.pow((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $67) {
+            flag = true;
+        }/* checknull */
+        (new Test("pow150")).ok = flag;
+        try {
+            ten.pow(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $68) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("pow151")).ok = flag;
+
+        flag = true;
+        try {
+            tenlong.pow(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $69) {
+            ae = $69;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("pow152")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $70) {
+            ae = $70;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("pow153")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE
+                    .pow(new com.ibm.icu.math.BigDecimal("-71"));
+            flag = false;
+        } catch (java.lang.ArithmeticException $71) {
+            ae = $71;
+            flag = (ae.getMessage()).equals("Negative power: -71");
+        }/* checkpos */
+        (new Test("pow154")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1234"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $72) {
+            ae = $72;
+            flag = (ae.getMessage()).equals("Too many digits: 1234");
+        }/* checkwhole */
+        (new Test("pow155")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("12.34e+2"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $73) {
+            ae = $73;
+            flag = (ae.getMessage()).equals("Too many digits: 1.234E+3");
+        }/* checkwhole1 */
+        (new Test("pow156")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("12.4"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $74) {
+            ae = $74;
+            flag = (ae.getMessage()).equals("Decimal part non-zero: 12.4");
+        }/* checkwhole2 */
+        (new Test("pow157")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.01"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $75) {
+            ae = $75;
+            flag = (ae.getMessage()).equals("Decimal part non-zero: 1.01");
+        }/* checkwhole3 */
+        (new Test("pow158")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.000000001"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $76) {
+            ae = $76;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 1.000000001");
+        }/* checkwhole4 */
+        (new Test("pow159")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.000000001"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $77) {
+            ae = $77;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 1.000000001");
+        }/* checkwhole5 */
+        (new Test("pow160")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE
+                    .pow(
+                            new com.ibm.icu.math.BigDecimal(
+                                    "5.67E-987654321"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $78) {
+            ae = $78;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 5.67E-987654321");
+        }/* checkwhole6 */
+        (new Test("pow161")).ok = flag;
+
+        summary("pow");
+    }
+
+    /*--------------------------------------------------------------------*/
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#remainder} method. */
+
+    public void diagremainder() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");
+        (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");
+        (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");
+        (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");
+        (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");
+        (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");
+        (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+        (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+        (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+        (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+        (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+        (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+        (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+        (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");
+        (new Test("rem017")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("2.0");
+        (new Test("rem018")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("0");
+        (new Test("rem019")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("1.0");
+        (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+        (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+        (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+        (new Test("rem023")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.4");
+        (new Test("rem024")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+        (new Test("rem025")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+        (new Test("rem026")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30"),mcdef).toString()).equals("0.10");
+        (new Test("rem027")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300"),mcdef).toString()).equals("0.100");
+        (new Test("rem028")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000"),mcdef).toString()).equals("0.1000");
+        (new Test("rem029")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+        (new Test("rem030")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.10");
+        (new Test("rem031")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.100");
+        (new Test("rem032")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1000");
+        (new Test("rem033")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001"),mcdef).toString()).equals("0.5");
+        
+        (new Test("rem040")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem041")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem042")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem043")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001"),mcdef).toString()).equals("0");
+        (new Test("rem044")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000000001"),mcdef).toString()).equals("0");
+        (new Test("rem045")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999"),mcdef).toString()).equals("1E-7");
+        (new Test("rem046")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999"),mcdef).toString()).equals("1E-8");
+        (new Test("rem047")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.499999999"),mcdef).toString()).equals("1E-9");
+        (new Test("rem048")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999999"),mcdef).toString()).equals("0");
+        (new Test("rem049")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999999"),mcdef).toString()).equals("0");
+        
+        (new Test("rem050")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("0.03");
+        (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("rem052")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.1");
+        (new Test("rem053")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.01");
+        (new Test("rem054")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.001");
+        (new Test("rem055")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.0001");
+        (new Test("rem056")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.00001");
+        (new Test("rem057")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.000001");
+        (new Test("rem058")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1E-7");
+        
+        (new Test("rem060")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345"),mcdef).toString()).equals("0.4655");
+        (new Test("rem061")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.8");
+        (new Test("rem062")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2"),mcdef).toString()).equals("0");
+        (new Test("rem063")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.2");
+        (new Test("rem064")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.800");
+        (new Test("rem065")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7"),mcdef).toString()).equals("0.800");
+        (new Test("rem066")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+
+        // MC --
+        (new Test("rem071")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mc6).toString()).equals("0.400");
+        (new Test("rem072")).ok=((new com.ibm.icu.math.BigDecimal("12345678900000")).remainder(new com.ibm.icu.math.BigDecimal("12e+12"),mc3).toString()).equals("3E+11");
+
+        // Fixed --
+        (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");
+        (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");
+        (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");
+        (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");
+        (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");
+        (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+        (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+        (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+        (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+        (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+        (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+        (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+        (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");
+        (new Test("rem117")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("2.0");
+        (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");
+        (new Test("rem119")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("1.0");
+        (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+        (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+        (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+        (new Test("rem123")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.4");
+        (new Test("rem124")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.400");
+        (new Test("rem125")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+        (new Test("rem126")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30")).toString()).equals("0.10");
+        (new Test("rem127")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300")).toString()).equals("0.100");
+        (new Test("rem128")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000")).toString()).equals("0.1000");
+        (new Test("rem129")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+        (new Test("rem130")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.10");
+        (new Test("rem131")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.100");
+        (new Test("rem132")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1000");
+        (new Test("rem133")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001")).toString()).equals("0.5");
+        (new Test("rem134")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001")).toString()).equals("0.5");
+        (new Test("rem135")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001")).toString()).equals("0.5");
+        (new Test("rem136")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("0.03");
+        (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("rem138")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.1");
+        (new Test("rem139")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.01");
+        (new Test("rem140")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.001");
+        (new Test("rem141")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0001");
+        (new Test("rem142")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.00001");
+        (new Test("rem143")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.000001");
+        (new Test("rem144")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0000001"); // 1E-7, plain
+        (new Test("rem145")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345")).toString()).equals("0.4655");
+        (new Test("rem146")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.8");
+        (new Test("rem147")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2")).toString()).equals("0");
+        (new Test("rem148")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.2");
+        (new Test("rem149")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.800");
+        (new Test("rem150")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7")).toString()).equals("0.800");
+        (new Test("rem151")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+
+
+        try {
+            ten.remainder((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $79) {
+            flag = true;
+        }/* checknull */
+        (new Test("rem200")).ok = flag;
+        try {
+            ten.remainder(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $80) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("rem201")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $81) {
+            ae = $81;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("rem202")).ok = flag;
+
+        try {
+            tenlong.remainder(one, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $82) {
+            ae = $82;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("rem203")).ok = flag;
+
+        summary("remainder");
+    }
+
+    /*--------------------------------------------------------------------*/
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#subtract} method. */
+
+    public void diagsubtract() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal alhs;
+        com.ibm.icu.math.BigDecimal arhs;
+        java.lang.ArithmeticException ae = null;
+
+        // [first group are 'quick confidence check']
+        (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");
+        (new Test("sub302")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("2.45");
+        (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");
+        (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");
+        (new Test("sub305")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-9.5");
+        (new Test("sub306")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.4");
+        (new Test("sub307")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+        (new Test("sub308")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("0");
+        (new Test("sub309")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("0.23456789");
+        
+        (new Test("sub310")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089"),mcdef).toString()).equals("0.23456700");
+        
+        (new Test("sub311")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001"),mcdef).toString()).equals("0.555555556");
+        
+        (new Test("sub312")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005"),mcdef).toString()).equals("0.555555556");
+        
+        (new Test("sub313")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111"),mcdef).toString()).equals("0.333333333");
+        
+        (new Test("sub314")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001"),mcdef).toString()).equals("0.99999999");
+        
+        (new Test("sub315")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+        
+        (new Test("sub316")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+        
+        
+        (new Test("sub317")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub318")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub319")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub320")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999999E+12");
+        
+        (new Test("sub321")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999993E+12");
+
+        // symmetry:
+        (new Test("sub322")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub323")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub324")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub325")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+        
+        (new Test("sub326")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("9.9999993E+12");
+
+
+        // [same with fixed point arithmetic]
+        (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");
+        (new Test("sub002")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("2.45");
+        (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");
+        (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");
+        (new Test("sub005")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-9.5");
+        (new Test("sub006")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.4");
+        (new Test("sub007")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+        (new Test("sub008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("0.00");
+        (new Test("sub009")).ok=((new com.ibm.icu.math.BigDecimal("0.02")).subtract(new com.ibm.icu.math.BigDecimal("0.02")).toString()).equals("0.00");
+        
+        (new Test("sub010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("0.23456789");
+        
+        (new Test("sub011")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089")).toString()).equals("0.23456700");
+        
+        (new Test("sub012")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001")).toString()).equals("0.5555555558");
+        
+        (new Test("sub013")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005")).toString()).equals("0.5555555554");
+        
+        (new Test("sub014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111")).toString()).equals("0.3333333333");
+        
+        (new Test("sub015")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001")).toString()).equals("0.9999999900");
+        
+        (new Test("sub016")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+        
+        (new Test("sub017")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+        
+        
+        (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");
+        
+        (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");
+        
+        (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");
+        
+        (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");
+        
+        (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");
+
+        // symmetry:
+        (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");
+        
+        (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");
+        
+        (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");
+        
+        (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");
+        
+        (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");
+
+        // MC
+        (new Test("sub030")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+        
+        (new Test("sub031")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+
+
+        // some of the next group are really constructor tests
+        (new Test("sub040")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.0")).toString()).equals("0.0");
+        (new Test("sub041")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+        (new Test("sub042")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+        (new Test("sub043")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+        (new Test("sub044")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+        (new Test("sub045")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub046")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub047")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub048")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.70");
+        (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");
+        (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");
+        (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");
+        (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub054")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub055")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.70");
+        (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");
+        (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");
+
+        // the above all from add; massaged and extended. Now some new ones...
+        // [particularly important for comparisons]
+        // NB: -1E-7 below were non-exponents pre-ANSI
+        (new Test("sub080")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub081")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub082")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub083")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub084")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub085")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub086")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub087")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub088")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456792")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub089")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456793")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub090")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456794")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub091")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456781")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub092")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456782")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub093")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456783")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub094")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub095")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub096")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub097")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub098")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub099")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub100")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub101")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());
+        (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());
+
+        alhs = new com.ibm.icu.math.BigDecimal("12345678900000");
+        arhs = new com.ibm.icu.math.BigDecimal("9999999999999");
+        (new Test("sub110")).ok = (alhs.subtract(arhs, mc3).toString()).equals("2.3E+12");
+        (new Test("sub111")).ok = (arhs.subtract(alhs, mc3).toString()).equals("-2.3E+12");
+        (new Test("sub112")).ok = (alhs.subtract(arhs).toString()).equals("2345678900001");
+        (new Test("sub113")).ok = (arhs.subtract(alhs).toString()).equals("-2345678900001");
+
+        // additional scaled arithmetic tests [0.97 problem]
+        (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");
+        (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");
+        (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");
+        (new Test("sub123")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.102")).toString()).equals("-0.102");
+        (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");
+        (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");
+        (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");
+        (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");
+        (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");
+        (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");
+        (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");
+        (new Test("sub131")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.51")).toString()).equals("-0.51");
+        (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");
+        (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");
+        (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");
+        // 0. on left
+        (new Test("sub140")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+        (new Test("sub141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+        (new Test("sub142")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+        (new Test("sub143")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+        (new Test("sub144")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+        (new Test("sub145")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+        (new Test("sub146")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+        (new Test("sub147")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+        (new Test("sub148")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+        (new Test("sub149")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+        (new Test("sub150")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+        (new Test("sub151")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+        (new Test("sub152")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+        (new Test("sub153")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+        (new Test("sub154")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+        // negatives of same
+        (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+        (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+        (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+        (new Test("sub163")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+        (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+        (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+        (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+        (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+        (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+        (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+        (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+        (new Test("sub171")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+        (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+        (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+        (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+
+        // more fixed, LHS swaps [really same as testcases under add]
+        (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");
+        (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");
+        (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");
+        (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");
+        (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");
+
+        try {
+            ten.subtract((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $83) {
+            flag = true;
+        }/* checknull */
+        (new Test("sub200")).ok = flag;
+        try {
+            ten.subtract(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $84) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("sub201")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $85) {
+            ae = $85;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("sub202")).ok = flag;
+        try {
+            tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $86) {
+            ae = $86;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("sub203")).ok = flag;
+        summary("subtract");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /* ----------------------------------------------------------------- */
+    /* Other methods */
+    /* ----------------------------------------------------------------- */
+
+    /** Test the <code>BigDecimal.byteValue()</code> method. */
+
+    public void diagbyteValue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+
+        (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());
+        (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());
+        (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());
+        (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());
+        (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());
+        (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());
+        (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());
+        (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());
+        (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());
+        (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());
+        (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());
+        (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());
+        (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());
+        (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());
+        (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());
+        (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());
+        
+        (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());
+        (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());
+        (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());
+        (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());
+        (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());
+        (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());
+        (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());
+        (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());
+        (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());
+        (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());
+        try {
+            v = "-129";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $87) {
+            ae = $87;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("byv100")).ok = flag;
+        try {
+            v = "128";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $88) {
+            ae = $88;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("byv101")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $89) {
+            ae = $89;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("byv102")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "1234",
+                (new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(bmin)).subtract(one)
+                        .toString(),
+                "170",
+                "270",
+                "370",
+                "470",
+                "570",
+                "670",
+                "770",
+                "870",
+                "970",
+                "-170",
+                "-270",
+                "-370",
+                "-470",
+                "-570",
+                "-670",
+                "-770",
+                "-870",
+                "-970",
+                (new com.ibm.icu.math.BigDecimal(bmin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten)
+                        .toString(), "-1234" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        // 234
+        // 235
+        // 236
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242
+        // 243
+        // 244
+        // 245
+        {
+            int $90 = badstrings.length;
+            i = 0;
+            for (; $90 > 0; $90--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $91) {
+                    ae = $91;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("byv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("byteValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(java.lang.Object)}
+     * method.
+     */
+
+    public void diagcomparetoObj() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal d;
+        com.ibm.icu.math.BigDecimal long1;
+        com.ibm.icu.math.BigDecimal long2;
+
+        d = new com.ibm.icu.math.BigDecimal(17);
+        (new Test("cto001")).ok = (d
+                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
+                        66)))) == (-1);
+        (new Test("cto002")).ok = (d
+                .compareTo((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(
+                        10)).add(new com.ibm.icu.math.BigDecimal(7))))) == 0;
+        (new Test("cto003")).ok = (d
+                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
+                        10)))) == 1;
+        long1 = new com.ibm.icu.math.BigDecimal("12345678903");
+        long2 = new com.ibm.icu.math.BigDecimal("12345678900");
+        (new Test("cto004")).ok = (long1.compareTo((java.lang.Object) long2)) == 1;
+        (new Test("cto005")).ok = (long2.compareTo((java.lang.Object) long1)) == (-1);
+        (new Test("cto006")).ok = (long2.compareTo((java.lang.Object) long2)) == 0;
+        try {
+            d.compareTo((java.lang.Object) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $92) {
+            flag = true; // should get here
+        }
+        (new Test("cto101")).ok = flag;
+        try {
+            d.compareTo((java.lang.Object) "foo");
+            flag = false;
+        } catch (java.lang.ClassCastException $93) {
+            flag = true; // should get here
+        }
+        (new Test("cto102")).ok = flag;
+        summary("compareTo(Obj)");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#doubleValue} method. */
+
+    public void diagdoublevalue() {
+        java.lang.String val;
+        // 1999.03.07 Infinities no longer errors
+        val = "-1";
+        (new Test("dov001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "-0.1";
+        (new Test("dov002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "0";
+        (new Test("dov003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "0.1";
+        (new Test("dov004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "1";
+        (new Test("dov005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "1e1000";
+        (new Test("dov006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY;
+        val = "-1e1000";
+        (new Test("dov007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.NEGATIVE_INFINITY;
+        summary("doubleValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#equals} method. */
+
+    public void diagequals() {
+        com.ibm.icu.math.BigDecimal d;
+        d = new com.ibm.icu.math.BigDecimal(17);
+        (new Test("equ001")).ok = (!(d.equals((java.lang.Object) null)));
+        (new Test("equ002")).ok = (!(d.equals((java.lang.Object) "foo")));
+        (new Test("equ003")).ok = (!(d
+                .equals((java.lang.Object) (new com.ibm.icu.math.BigDecimal(66)))));
+        (new Test("equ004")).ok = d.equals((java.lang.Object) d);
+        (new Test("equ005")).ok = d
+                .equals((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(10))
+                        .add(new com.ibm.icu.math.BigDecimal(7))));
+        summary("equals");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#floatValue} method. */
+
+    public void diagfloatvalue() {
+        java.lang.String val;
+        // 1999.03.07 Infinities no longer errors
+        val = "-1";
+        (new Test("flv001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "-0.1";
+        (new Test("flv002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "0";
+        (new Test("flv003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "0.1";
+        (new Test("flv004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "1";
+        (new Test("flv005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "1e200";
+        (new Test("flv006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
+        val = "-1e200";
+        (new Test("flv007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
+        val = "1e1000";
+        (new Test("flv008")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
+        val = "-1e1000";
+        (new Test("flv009")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
+        summary("floatValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#format} method. */
+
+    public void diagformat() {
+        boolean flag = false;
+        int eng;
+        int sci;
+        com.ibm.icu.math.BigDecimal d04;
+        com.ibm.icu.math.BigDecimal d05;
+        com.ibm.icu.math.BigDecimal d06;
+        com.ibm.icu.math.BigDecimal d15;
+        java.lang.IllegalArgumentException iae = null;
+        com.ibm.icu.math.BigDecimal d050;
+        com.ibm.icu.math.BigDecimal d150;
+        com.ibm.icu.math.BigDecimal m050;
+        com.ibm.icu.math.BigDecimal m150;
+        com.ibm.icu.math.BigDecimal d051;
+        com.ibm.icu.math.BigDecimal d151;
+        com.ibm.icu.math.BigDecimal d000;
+        com.ibm.icu.math.BigDecimal d500;
+        java.lang.ArithmeticException ae = null;
+        // 1999.02.09 now only two signatures for format(), so some tests below
+        // may now be redundant
+
+        (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");
+        (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");
+        (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");
+        (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");
+        (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals("   3");
+        (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals("   2");
+        (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals("   1.7");
+        (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals("   1.8");
+        (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals("   0.5");
+        (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals("   0.1");
+        (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals("   0.0");
+        (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals("   0");
+        (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals("   0.0");
+        (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals("   0.00");
+        (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals("   0.000");
+        (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals("   0.0000");
+        (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals("   0");
+        (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals("   0.0");
+        (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals("   0.01");
+        (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals("   0.00");
+        (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals("   0.005");
+        (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals("   0.0050");
+        
+        (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals("   1.73");
+        (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals("   1.730");
+        (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals("  -0.8");
+        (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");
+        
+        (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals("   3.03");
+        (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals("   3.0");
+        (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals("   3.03     ");
+        (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03     ");
+        (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");
+        (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");
+        (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");
+        
+        (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");
+        (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");
+        (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");
+        (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");
+        (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");
+        (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");
+        (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");
+        (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");
+        (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");
+        
+        (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");
+        (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");
+        (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");
+        (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");
+        (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals("  1E+5");
+        
+        (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");
+        (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");
+        (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");
+        (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");
+        
+        (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");
+        (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");
+        (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");
+        (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");
+
+        eng = com.ibm.icu.math.MathContext.ENGINEERING;
+        sci = com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");
+        (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");
+        (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");
+        (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals("   1.235E+03");
+        (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals("   12.345E+003");
+        (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals("     1.235E+004");
+
+        (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235    ");
+        (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73     ");
+        (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");
+        (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");
+        (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");
+        (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");
+        (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");
+
+        // some from ANSI Dallas [Nov 1998]
+        (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");
+        (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000    ");
+
+        // try some rounding modes [default ROUND_HALF_UP widely tested above]
+        // the first few also tests that defaults are accepted for the others
+        d04 = new com.ibm.icu.math.BigDecimal("0.04");
+        d05 = new com.ibm.icu.math.BigDecimal("0.05");
+        d06 = new com.ibm.icu.math.BigDecimal("0.06");
+        d15 = new com.ibm.icu.math.BigDecimal("0.15");
+        (new Test("for080")).ok = (d05.format(-1, 1)).equals("0.1");
+        (new Test("for081")).ok = (d05.format(-1, 1, -1, -1, -1,
+                com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");
+        (new Test("for082")).ok = (d05.format(-1, 1, -1, -1, -1, -1))
+                .equals("0.1");
+        (new Test("for083")).ok = (d05.format(-1, -1, -1, -1, -1, -1))
+                .equals("0.05");
+        (new Test("for084")).ok = (d05.format(-1, -1)).equals("0.05");
+        try {
+            d05.format(-1, -1, -1, -1, -1, 30); // bad mode
+            flag = false; // shouldn't get here
+        } catch (java.lang.IllegalArgumentException $94) {
+            iae = $94;
+            flag = (iae.getMessage()).equals("Bad argument 6 to format: 30");
+        }
+        (new Test("for085")).ok = flag;
+
+        (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");
+        (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");
+        (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+        (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+        (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");
+
+        (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+        (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        d050 = new com.ibm.icu.math.BigDecimal("0.050");
+        d150 = new com.ibm.icu.math.BigDecimal("0.150");
+        (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        m050 = new com.ibm.icu.math.BigDecimal("-0.050");
+        m150 = new com.ibm.icu.math.BigDecimal("-0.150");
+        (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");
+        d051 = new com.ibm.icu.math.BigDecimal("0.051");
+        d151 = new com.ibm.icu.math.BigDecimal("0.151");
+        (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+        (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        
+        (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");
+        (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");
+        (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");
+        (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");
+        
+        (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");
+        (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");
+        (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");
+        (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");
+        
+        (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");
+        (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");
+        (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");
+        (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");
+        
+        (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+        (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");
+        (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+        (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");
+
+        d000 = new com.ibm.icu.math.BigDecimal("0.000");
+        d500 = new com.ibm.icu.math.BigDecimal("0.500");
+        (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");
+        (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");
+        (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");
+        try { // this should trap..
+            d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $95) {
+            ae = $95;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }
+        (new Test("for124")).ok=flag;
+        (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");
+        (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");
+        (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");
+        (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");
+        (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");
+
+        // bad negs --
+        try {
+            d050.format(-2, -1, -1, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $96) {
+            flag = true;
+        }
+        (new Test("for131")).ok = flag;
+        try {
+            d050.format(-1, -2, -1, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $97) {
+            flag = true;
+        }
+        (new Test("for132")).ok = flag;
+        try {
+            d050.format(-1, -1, -2, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $98) {
+            flag = true;
+        }
+        (new Test("for133")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -2, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $99) {
+            flag = true;
+        }
+        (new Test("for134")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -1, -2, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $100) {
+            flag = true;
+        }
+        (new Test("for135")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -1, -1, -2);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $101) {
+            flag = true;
+        }
+        (new Test("for136")).ok = flag;
+
+        summary("format");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#hashCode} method. */
+
+    public void diaghashcode() {
+        java.lang.String hs;
+        com.ibm.icu.math.BigDecimal d;
+        hs = "27827817";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has001")).ok = (d.hashCode()) == (hs.hashCode());
+        hs = "1.265E+200";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has002")).ok = (d.hashCode()) == (hs.hashCode());
+        hs = "126.5E+200";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has003")).ok = (d.hashCode()) != (hs.hashCode());
+        summary("hashCode");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#intValue} method. */
+
+    public void diagintvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+        com.ibm.icu.math.BigDecimal dimax;
+        com.ibm.icu.math.BigDecimal num = null;
+        com.ibm.icu.math.BigDecimal dv = null;
+        com.ibm.icu.math.BigDecimal dimin;
+
+        // intValue --
+
+        (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());
+        (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+        (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+        (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+        (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+        (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+        (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+        (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+        (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());
+        (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());
+        (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());
+        (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());
+        (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+        (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());
+        (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());
+        (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());
+        (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());
+        (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh
+        (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh
+        (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());
+        (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());
+
+        // intValueExact --
+
+        (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());
+        (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+        (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+        (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+        (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+        (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+        (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+        (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+        (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+        (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());
+
+        try {
+            v = "-88588688888";
+            (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $102) {
+            ae = $102;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("inv200")).ok = flag;
+
+        // this one could raise either overflow or bad decimal part
+        try {
+            v = "88088818888.00001";
+            (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $103) {
+            flag = true;
+        }
+        (new Test("inv201")).ok = flag;
+
+        // 1999.10.28: the testcases marked '*' failed
+        badstrings = new java.lang.String[] {
+                "12345678901",
+                (new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(imin)).subtract(one)
+                        .toString(),
+                "3731367293",
+                "4731367293",
+                "5731367293",
+                "6731367293",
+                "7731367293",
+                "8731367293",
+                "9731367293",
+                "-3731367293",
+                "-4731367293",
+                "-5731367293",
+                "-6731367293",
+                "-7731367293",
+                "-8731367293",
+                "-9731367293",
+                (new com.ibm.icu.math.BigDecimal(imin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imax)).multiply(ten)
+                        .toString(), "4731367293", "4831367293", "4931367293",
+                "5031367293", "5131367293", "5231367293", "5331367293",
+                "5431367293", "5531367293", "5631367293", "5731367293",
+                "5831367293", "5931367293", "6031367293", "6131367293",
+                "6231367293", "6331367293", "6431367293", "6531367293",
+                "6631367293", "6731367293", "2200000000", "2300000000",
+                "2400000000", "2500000000", "2600000000", "2700000000",
+                "2800000000", "2900000000", "-2200000000", "-2300000000",
+                "-2400000000", "-2500000000", "-2600000000", "-2700000000",
+                "-2800000000", "-2900000000", "25E+8", "-25E+8", "-12345678901" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225 *
+        // 226
+        // 227
+        // 228
+        // 229 *
+        // 230
+        // 231
+        // 232 *
+        // 233
+        // 234
+        // 235
+        // 236 *
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242 *
+        // 243 *
+        // 244 *
+        // 245 *
+        // 246 *
+        // 247 *
+        // 248 *
+        // 249 *
+        // 250 *
+        // 251 *
+        // 252 *
+        // 253 *
+        // 254 *
+        // 255 *
+        // 256 *
+        // 257 *
+        // 258 *
+        // 259
+        // 260
+        // 261
+        // 262
+        // 263
+        // 264
+        // 265
+        // 266
+        // 267
+        // 268
+        // 269
+        // 270
+        // 271
+        // 272
+        // 273
+        // 274
+        // 275
+        // 276
+        // 277
+        // 278
+        // 279
+        // 280
+        {
+            int $104 = badstrings.length;
+            i = 0;
+            for (; $104 > 0; $104--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $105) {
+                    ae = $105;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        // now slip in some single bits...
+        dimax = new com.ibm.icu.math.BigDecimal(imax);
+        {
+            i = 0;
+            for (; i <= 49; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dimax.add(num, mc50);
+                    dv.intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $106) {
+                    ae = $106;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (300 + i))).ok = flag;
+            }
+        }/* i */
+        dimin = new com.ibm.icu.math.BigDecimal(imin);
+        {
+            i = 50;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dimin.subtract(num, mc50);
+                    dv.intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $107) {
+                    ae = $107;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (300 + i))).ok = flag;
+            }
+        }/* i */
+
+        // the following should all raise bad-decimal-part exceptions
+        badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
+                "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
+                "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
+                "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
+                "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.5" }; // 400-403
+        // 404-407
+        // 408-411
+        // 412-416
+        // 417-420
+        // 421-424
+        // 425-428
+
+        {
+            int $108 = badstrings.length;
+            i = 0;
+            for (; $108 > 0; $108--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $109) {
+                    ae = $109;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Decimal part non-zero:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (400 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("intValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#longValue} method. */
+
+    public void diaglongvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+        com.ibm.icu.math.BigDecimal dlmax;
+        com.ibm.icu.math.BigDecimal num = null;
+        com.ibm.icu.math.BigDecimal dv = null;
+        com.ibm.icu.math.BigDecimal dlmin;
+
+        // longValue --
+
+        (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+        (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+        (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+        (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+        (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+        (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+        (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+        (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+        (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());
+        (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());
+        (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());
+        (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());
+        (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+        (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());
+        (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());
+        (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());
+        (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());
+        (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh
+        (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh
+
+        // longValueExact --
+
+        (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+        (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+        (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+        (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+        (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+        (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+        (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+        (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+        (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+
+        try {
+            v = "-888888888899999999998";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $110) {
+            ae = $110;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("lov200")).ok = flag;
+        try {
+            v = "88888887487487479488888";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $111) {
+            ae = $111;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("lov201")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $112) {
+            ae = $112;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("lov202")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "1234567890110987654321",
+                "-1234567890110987654321",
+                (new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).subtract(one)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten)
+                        .toString(), "9223372036854775818",
+                "9323372036854775818", "9423372036854775818",
+                "9523372036854775818", "9623372036854775818",
+                "9723372036854775818", "9823372036854775818",
+                "9923372036854775818", "-9223372036854775818",
+                "-9323372036854775818", "-9423372036854775818",
+                "-9523372036854775818", "-9623372036854775818",
+                "-9723372036854775818", "-9823372036854775818",
+                "-9923372036854775818", "12345678901234567890" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        // 234
+        // 235
+        // 236
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242
+        // 243
+        // 244
+        {
+            int $113 = badstrings.length;
+            i = 0;
+            for (; $113 > 0; $113--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $114) {
+                    ae = $114;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        // now slip in some single bits...
+        dlmax = new com.ibm.icu.math.BigDecimal(lmax);
+        {
+            i = 0;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dlmax.add(num, mc50);
+                    dv.longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $115) {
+                    ae = $115;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (300 + i))).ok = flag;
+            }
+        }/* i */
+        dlmin = new com.ibm.icu.math.BigDecimal(lmin);
+        {
+            i = 0;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dlmin.subtract(num, mc50);
+                    dv.longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $116) {
+                    ae = $116;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (400 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("longValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#movePointLeft} method. */
+
+    public void diagmovepointleft() {
+        (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");
+        (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");
+        (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");
+        (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");
+        (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");
+        (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");
+        (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");
+        
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");
+        
+        (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");
+        (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");
+        (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");
+        (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");
+        (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");
+        (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");
+        (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");
+        
+        (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");
+        (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");
+        (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");
+        (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");
+        (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");
+        (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");
+        (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");
+
+        summary("movePointLeft");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#movePointRight} method. */
+
+    public void diagmovepointright() {
+        (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");
+        (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");
+        (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");
+        (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");
+        (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");
+        (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");
+        (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");
+        
+        (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");
+        (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");
+        (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");
+        (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");
+        (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");
+        (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");
+        (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");
+        
+        (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");
+        (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");
+        (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");
+        (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");
+        (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");
+        (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");
+        (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");
+        
+        (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");
+        (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");
+        (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");
+        (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");
+        (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");
+        (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");
+        (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");
+
+        summary("movePointRight");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#scale} method. */
+
+    public void diagscale() {
+        (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;
+        (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;
+        (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;
+        (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;
+        (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;
+        (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;
+        (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;
+        (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;
+        (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;
+        (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;
+        (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;
+        (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;
+        (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;
+        (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;
+        (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;
+        (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;
+        (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;
+        summary("scale");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#setScale} method. */
+
+    public void diagsetscale() {
+        boolean flag = false;
+        java.lang.RuntimeException e = null;
+
+        (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");
+        (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");
+        (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");
+        (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");
+        (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");
+        (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");
+        (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");
+        (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");
+        (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");
+        (new Test("ssc010")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1");
+        (new Test("ssc011")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.0");
+        (new Test("ssc012")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.00");
+        (new Test("ssc013")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc014")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("ssc015")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+        (new Test("ssc016")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc017")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+        (new Test("ssc018")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+        
+        (new Test("ssc020")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.040");
+        (new Test("ssc021")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.04");
+        (new Test("ssc022")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+        (new Test("ssc023")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc024")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.050");
+        (new Test("ssc025")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.05");
+        (new Test("ssc026")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+        (new Test("ssc027")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc028")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.050");
+        (new Test("ssc029")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.05");
+        (new Test("ssc030")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.0");
+        (new Test("ssc031")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1");
+        (new Test("ssc032")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.060");
+        (new Test("ssc033")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.06");
+        (new Test("ssc034")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+        (new Test("ssc035")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        
+        (new Test("ssc040")).ok=((new com.ibm.icu.math.BigDecimal("-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-10.00");
+        (new Test("ssc041")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+        (new Test("ssc042")).ok=((new com.ibm.icu.math.BigDecimal("+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10.00");
+        (new Test("ssc043")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10000000000.00");
+        (new Test("ssc044")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+        (new Test("ssc045")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+        (new Test("ssc046")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+
+        // check rounding
+        (new Test("ssc050")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.01");
+        (new Test("ssc051")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+        (new Test("ssc052")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+        (new Test("ssc053")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.00");
+        (new Test("ssc054")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+        (new Test("ssc055")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+        (new Test("ssc056")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.00");
+        (new Test("ssc057")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+        (new Test("ssc058")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+        (new Test("ssc059")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.00");
+        (new Test("ssc060")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("ssc061")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("ssc062")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.00");
+        (new Test("ssc063")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("ssc064")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("ssc065")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.02");
+        (new Test("ssc066")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("ssc067")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("ssc068")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+        (new Test("ssc069")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("ssc070")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc071")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.10");
+        (new Test("ssc072")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("ssc073")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc074")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.01");
+        (new Test("ssc075")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+        (new Test("ssc076")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+
+        try {
+            (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);
+            flag = false;
+        } catch (java.lang.RuntimeException $117) {
+            e = $117;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("ssc100")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);
+            flag = false;
+        } catch (java.lang.RuntimeException $118) {
+            e = $118;
+            flag = (e.getMessage()).equals("Rounding necessary");
+        }/* checkrunn */
+        (new Test("ssc101")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);
+            flag = false;
+        } catch (java.lang.RuntimeException $119) {
+            e = $119;
+            flag = (e.getMessage()).equals("Rounding necessary");
+        }/* checkrunn */
+        (new Test("ssc102")).ok = flag;
+        summary("setScale");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the <code>BigDecimal.shortValue()</code> method. */
+
+    public void diagshortvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+
+        (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());
+        (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());
+        (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());
+        (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());
+        (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());
+        (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());
+        (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());
+        (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());
+        (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());
+        (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());
+
+        (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());
+        (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());
+        (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());
+        (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());
+        (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());
+        (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());
+        (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());
+        (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());
+        try {
+            v = "-88888888888";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $120) {
+            ae = $120;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("shv100")).ok = flag;
+        try {
+            v = "88888888888";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $121) {
+            ae = $121;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("shv101")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $122) {
+            ae = $122;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("shv102")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "123456",
+                (new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(smin)).subtract(one)
+                        .toString(),
+                "71111",
+                "81111",
+                "91111",
+                "-71111",
+                "-81111",
+                "-91111",
+                (new com.ibm.icu.math.BigDecimal(smin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smax)).multiply(ten)
+                        .toString(), "-123456" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        {
+            int $123 = badstrings.length;
+            i = 0;
+            for (; $123 > 0; $123--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $124) {
+                    ae = $124;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("shv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("shortValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#signum} method. */
+
+    public void diagsignum() {
+        // necessarily checks some obscure constructions, too
+        (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());
+        (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());
+        (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());
+        (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());
+        (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());
+        (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());
+        (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());
+        (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());
+        (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+        (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+        (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());
+        (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());
+        (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());
+        (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());
+        (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());
+        (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());
+        (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());
+        summary("signum");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toBigDecimal} method. */
+
+    public void diagtobigdecimal() {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");
+        (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");
+        (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");
+        (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");
+        (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");
+        (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");
+        if (!isJDK15OrLater) {
+            (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");
+        }
+        if (!isJDK15OrLater) {
+            (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");
+        }
+        (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");
+        (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");
+        summary("toBigDecimal");
+//#endif
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toBigInteger} method. */
+
+    public void diagtobiginteger() {
+        boolean flag = false;
+        java.lang.String badstrings[];
+        int i = 0;
+        (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");
+        (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");
+        (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");
+        (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");
+        (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");
+        (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");
+        (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");
+        (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");
+        (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");
+        (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");
+        (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");
+        (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");
+        (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");
+        (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");
+        (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");
+        (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");
+        (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");
+        (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");
+        (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");
+        (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");
+        (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");
+        (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");
+        (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");
+        (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");
+        (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");
+        (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");
+        (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");
+        (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");
+        (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");
+
+        // Exact variety --
+        (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");
+        (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");
+        (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");
+        (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");
+        (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");
+
+
+        // the following should all raise exceptions
+
+        badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
+                "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
+                "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
+                "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
+                "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.1",
+                "127623156123656561356123512315631231551312356.000001",
+                "0.000000000000000000000000000000000000000000000001" }; // 300-303
+        // 304-307
+        // 308-311
+        // 312-316
+        // 317-320
+        // 321-324
+        // 325-328
+        // 329
+        // 330
+
+        {
+            int $125 = badstrings.length;
+            i = 0;
+            for (; $125 > 0; $125--, i++) {
+                try {
+                    (new com.ibm.icu.math.BigDecimal(badstrings[i]))
+                            .toBigIntegerExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $126) {
+                    flag = true;
+                }
+                (new Test("tbi" + (300 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("toBigInteger+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toCharArray} method. */
+
+    public void diagtochararray() {
+        java.lang.String str;
+        char car[];
+        com.ibm.icu.math.BigDecimal d;
+        char ca[];
+        // the function of this has been tested above, this is simply an
+        // existence proof and type-check
+        str = "-123.45";
+        car = (str).toCharArray();
+        d = new com.ibm.icu.math.BigDecimal(str);
+        ca = d.toCharArray();
+        (new Test("tca001")).ok = ca.length == car.length;
+        (new Test("tca002")).ok = (new java.lang.String(ca))
+                .equals((java.lang.Object) (new java.lang.String(car)));
+        (new Test("tca003")).ok = (d.toCharArray() instanceof char[]);
+        (new Test("tca004")).ok = (ca instanceof char[]);
+        summary("toCharArray");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toString} method. */
+
+    public void diagtostring() {
+        java.lang.String str;
+        char car[];
+        com.ibm.icu.math.BigDecimal d;
+        char ca[];
+        java.lang.String cs;
+        // the function of this has been tested above, this is simply an
+        // existence proof and type-check
+        str = "123.45";
+        car = (str).toCharArray();
+        d = new com.ibm.icu.math.BigDecimal(car, 0, car.length);
+        ca = d.toCharArray();
+        cs = d.toString();
+        (new Test("tos001")).ok = (str.toCharArray().length) == ca.length;
+        (new Test("tos002")).ok = (str.length()) == (cs.length());
+        (new Test("tos003")).ok = str
+                .equals((java.lang.Object) (new java.lang.String(ca)));
+        (new Test("tos004")).ok = str.equals((java.lang.Object) cs);
+        (new Test("tos005")).ok = (cs instanceof java.lang.String);
+        (new Test("tos006")).ok = (d.toString() instanceof java.lang.String);
+        summary("toString");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#unscaledValue} method. */
+
+    public void diagunscaledvalue() {
+        // just like toBigInteger, but scaly bits are preserved [without dots]
+        (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");
+        (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");
+        (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");
+        (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");
+        (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");
+        (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");
+        (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");
+        (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");
+        (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");
+        (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");
+        (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");
+        (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");
+        (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");
+        (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");
+        (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");
+        (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");
+        (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");
+        (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");
+        (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");
+        (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");
+        (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");
+        (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");
+        (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");
+        (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");
+        (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");
+        (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");
+        (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");
+        (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");
+        summary("unscaledValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#valueOf} method [long and
+     * double].
+     */
+
+    public void diagvalueof() {
+        boolean flag = false;
+        java.lang.NumberFormatException e = null;
+        double dzer;
+        double dpos;
+        double dneg;
+        double dpos5;
+        double dneg5;
+        double dmin;
+        double dmax;
+        double d;
+
+        // valueOf(long [,scale]) --
+
+        (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");
+        (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");
+        (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");
+        (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");
+        (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");
+        (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");
+        (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");
+        (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");
+        (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");
+        (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");
+        (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");
+        (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");
+        (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");
+        (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");
+        (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");
+        (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");
+        
+        (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");
+        (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");
+        (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");
+        (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");
+        (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");
+        
+        (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");
+        (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");
+
+        try {
+            com.ibm.icu.math.BigDecimal.valueOf((long) 23, -8);
+            flag = false;
+        } catch (java.lang.NumberFormatException $127) {
+            e = $127;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("val100")).ok = flag;
+
+        // valueOf(double) --
+
+        dzer = (double) 0;
+        dpos = (double) 1;
+        dpos = dpos / ((double) 10);
+        dneg = (double) -dpos;
+        (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");
+        (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor
+        (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");
+        dpos5 = (double) 0.5D;
+        dneg5 = (double) -dpos5;
+        (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");
+        (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");
+        dmin = java.lang.Double.MIN_VALUE;
+        dmax = java.lang.Double.MAX_VALUE;
+        (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");
+        (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");
+
+        // nasties
+        d = (double) 9;
+        d = d / ((double) 10);
+        (new Test("val210")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");
+        d = d / ((double) 10);
+        (new Test("val211")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");
+        d = d / ((double) 10);
+        (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");
+        d = d / ((double) 10);
+        (new Test("val213")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");
+        d = d / ((double) 10);
+        (new Test("val214")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");
+        d = d / ((double) 10);
+        (new Test("val215")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");
+        d = d / ((double) 10);
+        (new Test("val216")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");
+        d = d / ((double) 10);
+        (new Test("val217")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");
+        d = d / ((double) 10);
+        (new Test("val218")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");
+
+        try {
+            com.ibm.icu.math.BigDecimal
+                    .valueOf(java.lang.Double.POSITIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $128) {
+            flag = true;
+        }/* checkpin */
+        (new Test("val301")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal
+                    .valueOf(java.lang.Double.NEGATIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $129) {
+            flag = true;
+        }/* checknin */
+        (new Test("val302")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);
+            flag = false;
+        } catch (java.lang.NumberFormatException $130) {
+            flag = true;
+        }/* checknan */
+        (new Test("val303")).ok = flag;
+
+        summary("valueOf");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.MathContext} class. */
+
+    public void diagmathcontext() {
+        com.ibm.icu.math.MathContext mccon1;
+        com.ibm.icu.math.MathContext mccon2;
+        com.ibm.icu.math.MathContext mccon3;
+        com.ibm.icu.math.MathContext mccon4;
+        com.ibm.icu.math.MathContext mcrmc;
+        com.ibm.icu.math.MathContext mcrmd;
+        com.ibm.icu.math.MathContext mcrmf;
+        com.ibm.icu.math.MathContext mcrmhd;
+        com.ibm.icu.math.MathContext mcrmhe;
+        com.ibm.icu.math.MathContext mcrmhu;
+        com.ibm.icu.math.MathContext mcrmun;
+        com.ibm.icu.math.MathContext mcrmu;
+        boolean flag = false;
+        java.lang.IllegalArgumentException e = null;
+        // these tests are mostly existence checks
+        (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;
+        (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;
+        (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;
+        (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;
+        (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;
+        (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;
+        (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;
+        (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;
+        (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;
+        (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;
+        (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;
+        
+        mccon1=new com.ibm.icu.math.MathContext(111);
+        (new Test("mcn021")).ok=(mccon1.getDigits())==111;
+        (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;
+        (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);
+        (new Test("mcn031")).ok=(mccon2.getDigits())==78;
+        (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;
+        (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;
+        (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);
+        (new Test("mcn041")).ok=(mccon3.getDigits())==5;
+        (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;
+        (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        (new Test("mcn051")).ok = (mccon4.getDigits()) == 0;
+        (new Test("mcn052")).ok = (mccon4.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn053")).ok = (mccon4.getLostDigits() ? 1 : 0) == 0;
+        (new Test("mcn054")).ok = (mccon4.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_FLOOR;
+
+        (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");
+
+        // complete testing rounding modes round trips
+        mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+        mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+        mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+        mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+        mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+        mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);
+
+        (new Test("mcn071")).ok = (mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");
+
+        (new Test("mcn072")).ok = (mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");
+
+        (new Test("mcn073")).ok = (mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");
+
+        (new Test("mcn074")).ok = (mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");
+
+        (new Test("mcn075")).ok = (mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");
+
+        (new Test("mcn076")).ok = (mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");
+
+        (new Test("mcn077")).ok = (mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");
+
+        (new Test("mcn078")).ok = (mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");
+
+        // [get methods tested already]
+
+        // errors...
+
+        try {
+            new com.ibm.icu.math.MathContext(-1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $131) {
+            e = $131;
+            flag = (e.getMessage()).equals("Digits too small: -1");
+        }/* checkdig */
+        (new Test("mcn101")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(1000000000);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $132) {
+            e = $132;
+            flag = (e.getMessage()).equals("Digits too large: 1000000000");
+        }/* checkdigbig */
+        (new Test("mcn102")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.MathContext(0, 5);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $133) {
+            e = $133;
+            flag = (e.getMessage()).equals("Bad form value: 5");
+        }/* checkform */
+        (new Test("mcn111")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(0, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $134) {
+            e = $134;
+            flag = (e.getMessage()).equals("Bad form value: -1");
+        }/* checkformneg */
+        (new Test("mcn112")).ok = flag;
+
+        // [lostDigits cannot be invalid]
+
+        try {
+            new com.ibm.icu.math.MathContext(0,
+                    com.ibm.icu.math.MathContext.PLAIN, false, 12);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $135) {
+            e = $135;
+            flag = (e.getMessage()).equals("Bad roundingMode value: 12");
+        }/* checkround */
+        (new Test("mcn121")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(0,
+                    com.ibm.icu.math.MathContext.PLAIN, false, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $136) {
+            e = $136;
+            flag = (e.getMessage()).equals("Bad roundingMode value: -1");
+        }/* checkroundneg */
+        (new Test("mcn122")).ok = flag;
+
+        summary("MathContext");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test general arithmetic (base operators).
+     * <p>
+     * Unlike the specific method tests, these tests were randomly generated by
+     * an IBM Object Rexx procedure, then manually corrected for known
+     * differences from ANSI X3-274. These differences are:
+     * <ol>
+     * <li>the trigger point in exponential notation is fixed in ANSI X3-274
+     * but varies with DIGITS in Classic and Object Rexx
+     * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show
+     * seven trailing zeros)
+     * <li>the power operator is less accurate in Object Rexx
+     * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather
+     * than truncating to DIGITS+1).
+     * </ol>
+     */
+
+    public void diagmath() {
+        com.ibm.icu.math.MathContext def;
+        def = com.ibm.icu.math.MathContext.DEFAULT;
+        mathtest(1,def,"-9375284.42","5516.99832E+27276984","5.51699832E+27276987","-5.51699832E+27276987","-5.17234284E+27276994","-1.69934516E-27276981","0","-9375284.42","6.79057752E+41");
+        mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");
+        mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");
+        mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");
+        mathtest(5,def,"715.069294E-26923151","85.4404128E+796388557","8.54404128E+796388558","-8.54404128E+796388558","6.10958157E+769465410","8.36921628E-823311708","0","7.15069294E-26923149","4.88802213E-242308334");
+        mathtest(6,def,"-21971575.0E+31454441","-70944960.3E+111238221","-7.09449603E+111238228","7.09449603E+111238228","1.55877252E+142692677","3.09698884E-79783781","0","-2.19715750E+31454448","-4.04549502E-220181139");
+        mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");
+        mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");
+        mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");
+        mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");
+        mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");
+        mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");
+        mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");
+        mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");
+        mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");
+        mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");
+        mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");
+        mathtest(18,def,"959.548461","98.994577E+776775426","9.89945770E+776775427","-9.89945770E+776775427","9.49900940E+776775430","9.69293965E-776775426","0","959.548461","6.61712185E+29");
+        mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");
+        mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");
+        mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");
+        mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");
+        mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");
+        mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");
+        mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");
+        mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");
+        mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");
+        mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");
+        mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");
+        mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");
+        mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");
+        mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");
+        mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");
+        mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");
+        mathtest(35,def,"799995477","-6.23675208E+156309440","-6.23675208E+156309440","6.23675208E+156309440","-4.98937346E+156309449","-1.28271169E-156309432","0","799995477","3.81482667E-54");
+        mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");
+        mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");
+        mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");
+        mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");
+        mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");
+        mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");
+        mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");
+        mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");
+        mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");
+        mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");
+        mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");
+        mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");
+        mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");
+        mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");
+        mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");
+        mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");
+        mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");
+        mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");
+        mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");
+        mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");
+        mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");
+        mathtest(57,def,"-756343055.","-68.9248344E+217100975","-6.89248344E+217100976","6.89248344E+217100976","5.21308198E+217100985","1.09734475E-217100968","0","-756343055","-7.06265897E-63");
+        mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");
+        mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");
+        mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");
+        mathtest(61,def,"681832.671","320341.161E+629467560","3.20341161E+629467565","-3.20341161E+629467565","2.18419069E+629467571","2.12845789E-629467560","0","681832.671","3.16981139E+17");
+        mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");
+        mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");
+        mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");
+        mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");
+        mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");
+        mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");
+        mathtest(68,def,"-6.45038910","56736.4411E+440937167","5.67364411E+440937171","-5.67364411E+440937171","-3.65972121E+440937172","-1.13690407E-440937171","0","-6.45038910","72030.3421");
+        mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");
+        mathtest(70,def,"8244.08357","245.302828E+652007959","2.45302828E+652007961","-2.45302828E+652007961","2.02229701E+652007965","3.36077804E-652007958","0","8244.08357","67964913.9");
+        mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");
+        mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");
+        mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");
+        mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");
+        mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");
+        mathtest(76,def,"987013606.","-26818.3572E+560907442","-2.68183572E+560907446","2.68183572E+560907446","-2.64700834E+560907455","-3.68036565E-560907438","0","987013606","1.0399934E-27");
+        mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");
+        mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");
+        mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");
+        mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");
+        mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");
+        mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");
+        mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");
+        mathtest(84,def,"65.4059036","401162145E+884155506","4.01162145E+884155514","-4.01162145E+884155514","2.62383726E+884155516","1.63041066E-884155513","0","65.4059036","18300704.1");
+        mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");
+        mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");
+        mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");
+        mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");
+        mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");
+        mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");
+        mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");
+        mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");
+        mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");
+        mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");
+        mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");
+        mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");
+        mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");
+        mathtest(98,def,"-9475.19322","-30885.2475E+584487341","-3.08852475E+584487345","3.08852475E+584487345","2.92643688E+584487349","3.06787026E-584487342","0","-9475.19322","-1.17553557E-12");
+        mathtest(99,def,"-213230447.","864.815822E+127783046","8.64815822E+127783048","-8.64815822E+127783048","-1.84405064E+127783057","-2.46561686E-127783041","0","-213230447","-9.11261361E+74");
+        mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");
+        mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");
+        mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");
+        mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");
+        mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");
+        mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");
+        mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");
+        mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");
+        mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");
+        mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");
+        mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");
+        mathtest(111,def,"808525347","-5959.74667E+58232168","-5.95974667E+58232171","5.95974667E+58232171","-4.81860624E+58232180","-1.35664382E-58232163","0","808525347","3.5796302E-54");
+        mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");
+        mathtest(113,def,"59015.9705","-72070405.4E+322957279","-7.20704054E+322957286","7.20704054E+322957286","-4.25330492E+322957291","-8.18865527E-322957283","0","59015.9705","4.01063488E-34");
+        mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");
+        mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");
+        mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");
+        mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");
+        mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");
+        mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");
+        mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");
+        mathtest(121,def,"-908603625.","-982.409273E+449441134","-9.82409273E+449441136","9.82409273E+449441136","8.92620627E+449441145","9.2487281E-449441129","0","-908603625","2.60768632E-90");
+        mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");
+        mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");
+        mathtest(124,def,"-12606437.5","268123145E+362798858","2.68123145E+362798866","-2.68123145E+362798866","-3.38007767E+362798873","-4.70173416E-362798860","0","-12606437.5","-2.00344362E+21");
+        mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");
+        mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");
+        mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");
+        mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");
+        mathtest(129,def,"761185.862","-70878470.9E+221214712","-7.08784709E+221214719","7.08784709E+221214719","-5.39516900E+221214725","-1.07393099E-221214714","0","761185.862","6.75406144E-42");
+        mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");
+        mathtest(131,def,"-163274837.","95.0448550E+887876533","9.50448550E+887876534","-9.50448550E+887876534","-1.55184332E+887876543","-1.71787139E-887876527","0","-163274837","1.34645731E+82");
+        mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");
+        mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");
+        mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");
+        mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");
+        mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");
+        mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");
+        mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");
+        mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");
+        mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");
+        mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");
+        mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");
+        mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");
+        mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");
+        mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");
+        mathtest(146,def,"-205888251","-908.792922E+250680613","-9.08792922E+250680615","9.08792922E+250680615","1.87109785E+250680624","2.26551336E-250680608","0","-205888251","-1.5042358E-75");
+        mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");
+        mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");
+        mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");
+        mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");
+        mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");
+        mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");
+        mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");
+        mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");
+        mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");
+        mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");
+        mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");
+        mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");
+        mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");
+        mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");
+        mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");
+        mathtest(162,def,"-3308051.90","-349433799.E+397813188","-3.49433799E+397813196","3.49433799E+397813196","1.15594514E+397813203","9.46689161E-397813191","0","-3308051.90","-2.76237768E-20");
+        mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");
+        mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");
+        mathtest(165,def,"-50669105.2","9105789.01E+609889700","9.10578901E+609889706","-9.10578901E+609889706","-4.61382181E+609889714","-5.56449366E-609889700","0","-50669105.2","-2.20135008E+69");
+        mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");
+        mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");
+        mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");
+        mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");
+        mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");
+        mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");
+        mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");
+        mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");
+        mathtest(174,def,"2078153.7","-16934607.3E+233594439","-1.69346073E+233594446","1.69346073E+233594446","-3.51927168E+233594452","-1.2271638E-233594440","0","2078153.7","2.31549939E-13");
+        mathtest(175,def,"-9359.74629","7.07761788E+252457696","7.07761788E+252457696","-7.07761788E+252457696","-6.62447077E+252457700","-1.32244301E-252457693","0","-9359.74629","-6.29286677E+27");
+        mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");
+        mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");
+        mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");
+        mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");
+        mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");
+        mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");
+        mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");
+        mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");
+        mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");
+        mathtest(185,def,"81.8162765","5.61239515E+467372163","5.61239515E+467372163","-5.61239515E+467372163","4.59185273E+467372165","1.45777826E-467372162","0","81.8162765","2.99942677E+11");
+        mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");
+        mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");
+        mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");
+        mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");
+        mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");
+        mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");
+        mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");
+        mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");
+        mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");
+        mathtest(195,def,"457455170.","3709230.48E+677010879","3.70923048E+677010885","-3.70923048E+677010885","1.69680666E+677010894","1.23328861E-677010877","0","457455170","4.37919376E+34");
+        mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");
+        mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");
+        mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");
+        mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");
+        mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");
+        mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");
+        mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");
+        mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");
+        mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");
+        mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");
+        mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");
+        mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");
+        mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");
+        mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");
+        mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");
+        mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");
+        mathtest(212,def,"-55389219.8","-3772200E+981866393","-3.77220000E+981866399","3.77220000E+981866399","2.08939215E+981866407","1.46835321E-981866392","0","-55389219.8","1.06242678E-31");
+        mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");
+        mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");
+        mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");
+        mathtest(216,def,"7845778.36E-79951139","9.45859047","9.45859047","-9.45859047","7.42100044E-79951132","8.29487056E-79951134","0","7.84577836E-79951133","1.12648216E-719560189");
+        mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");
+        mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");
+        mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");
+        mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");
+        mathtest(221,def,"-7.84238366E-416477339","-37432758.9E+97369393","-3.74327589E+97369400","3.74327589E+97369400","2.93562057E-319107938","2.09505895E-513846739","0","-7.84238366E-416477339","");
+        mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");
+        mathtest(223,def,"-5353.17736","3.39332346E+546685359","3.39332346E+546685359","-3.39332346E+546685359","-1.81650623E+546685363","-1.57756177E-546685356","0","-5353.17736","-1.53403369E+11");
+        mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");
+        mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");
+        mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");
+        mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");
+        mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");
+        mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");
+        mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");
+        mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");
+        mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");
+        mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");
+        mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");
+        mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");
+        mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");
+        mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");
+        mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");
+        mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");
+        mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");
+        mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");
+        mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");
+        mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");
+        mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");
+        mathtest(245,def,"49789677.7","-131827812E+156412534","-1.31827812E+156412542","1.31827812E+156412542","-6.56366427E+156412549","-3.77687204E-156412535","0","49789677.7","2.00844843E-8");
+        mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");
+        mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");
+        mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");
+        mathtest(249,def,"873575426.","647853.152E+497450781","6.47853152E+497450786","-6.47853152E+497450786","5.65948593E+497450795","1.3484158E-497450778","0","873575426","4.44429064E+53");
+        mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");
+        mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");
+        mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");
+        mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");
+        mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");
+        mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");
+        mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");
+        mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");
+        mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");
+        mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");
+        mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");
+        mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");
+        mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");
+        mathtest(263,def,"1551.29957","-580358622.E+117017265","-5.80358622E+117017273","5.80358622E+117017273","-9.00310081E+117017276","-2.67300168E-117017271","0","1551.29957","7.17506711E-20");
+        mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");
+        mathtest(265,def,"77632.8073","-3378542.88E+677441319","-3.37854288E+677441325","3.37854288E+677441325","-2.62285768E+677441330","-2.29781921E-677441321","0","77632.8073","2.13729331E-15");
+        mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");
+        mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");
+        mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");
+        mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");
+        mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");
+        mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");
+        mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");
+        mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");
+        mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");
+        mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");
+        mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");
+        mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");
+        mathtest(278,def,"2659.84191E+29314492","-74372.4551E+518196680","-7.43724551E+518196684","7.43724551E+518196684","-1.97818973E+547511180","-3.5763804E-488882190","0","2.65984191E+29314495","1.06171811E-205201468");
+        mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");
+        mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");
+        mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");
+        mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");
+        mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");
+        mathtest(284,def,"23975643.3E-155955264","-505547.692E+137258948","-5.05547692E+137258953","5.05547692E+137258953","-1.21208311E-18696303","-4.7425087E-293214211","0","2.39756433E-155955257","1.26225952E+779776283");
+        mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");
+        mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");
+        mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");
+        mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");
+        mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");
+        mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");
+        mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");
+        mathtest(292,def,"8232.54893","-99822004E+891979845","-9.98220040E+891979852","9.98220040E+891979852","-8.21789532E+891979856","-8.24722867E-891979850","0","8232.54893","6.99289156E-40");
+        mathtest(293,def,"-4336.94317","-819373.601E+563233430","-8.19373601E+563233435","8.19373601E+563233435","3.55357674E+563233439","5.29299841E-563233433","0","-4336.94317","7.98969405E-30");
+        mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");
+        mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");
+        mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");
+        mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");
+        mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");
+        mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");
+        mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");
+        mathtest(301,def,"-85344379.4","-6783.08669E+218840215","-6.78308669E+218840218","6.78308669E+218840218","5.78898324E+218840226","1.25819385E-218840211","0","-85344379.4","-3.03232347E-56");
+        mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");
+        mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");
+        mathtest(304,def,"67.9147198","-108373645.E+291715415","-1.08373645E+291715423","1.08373645E+291715423","-7.36016573E+291715424","-6.26671916E-291715422","0","67.9147198","0.0147243485");
+        mathtest(305,def,"1958.77994","5.57285137E+690137826","5.57285137E+690137826","-5.57285137E+690137826","1.09159895E+690137830","3.51486126E-690137824","0","1958.77994","5.64824968E+19");
+        mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");
+        mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");
+        mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");
+        mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");
+        mathtest(310,def,"19.3164031","-9207644.24E+988115069","-9.20764424E+988115075","9.20764424E+988115075","-1.77858568E+988115077","-2.09786592E-988115075","0","19.3164031","2.67093711E-12");
+        mathtest(311,def,"-3123.77646E+177814265","973284435.E+383256112","9.73284435E+383256120","-9.73284435E+383256120","-3.04032301E+561070389","-3.20952062E-205441853","0","-3.12377646E+177814268","");
+        mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");
+        mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");
+        mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");
+        mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");
+        mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");
+        mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");
+        mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");
+        mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");
+        mathtest(320,def,"334.901176","-7609296.55E+447340228","-7.60929655E+447340234","7.60929655E+447340234","-2.54836236E+447340237","-4.40121073E-447340233","0","334.901176","6.31926575E-21");
+        mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");
+        mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");
+        mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");
+        mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");
+        mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");
+        mathtest(326,def,"-497983567E-13538052","39.4578742","39.4578742","-39.4578742","-1.96493729E-13538042","-1.26206385E-13538045","0","-4.97983567E-13538044","-1.55376543E-527983689");
+        mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");
+        mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");
+        mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");
+        mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");
+        mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");
+        mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");
+        mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");
+        mathtest(334,def,"6569.51133","13.8706351E+399434914","1.38706351E+399434915","-1.38706351E+399434915","9.11232944E+399434918","4.73627291E-399434912","0","6569.51133","6569.51133");
+        mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");
+        mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");
+        mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");
+        mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");
+        mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");
+        mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");
+        mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");
+        mathtest(342,def,"-97834.3858","70779789.8E+502166065","7.07797898E+502166072","-7.07797898E+502166072","-6.92469726E+502166077","-1.38223617E-502166068","0","-97834.3858","-8.57907886E+34");
+        mathtest(343,def,"7732331.06","-952719.482E+115325505","-9.52719482E+115325510","9.52719482E+115325510","-7.36674244E+115325517","-8.11606271E-115325505","0","7732331.06","1.30886724E-69");
+        mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");
+        mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");
+        mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");
+        mathtest(347,def,"-1.43297604E-65129780","56.598733E-135581942","-1.43297604E-65129780","-1.43297604E-65129780","-8.11046283E-200711721","-2.53181646E+70452160","","","8.65831881E-390778680");
+        mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");
+        mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");
+        mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");
+        mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");
+        mathtest(352,def,"590.849666","753424.306E+277232744","7.53424306E+277232749","-7.53424306E+277232749","4.45160500E+277232752","7.84219014E-277232748","0","590.849666","1.48530607E+22");
+        mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");
+        mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");
+        mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");
+        mathtest(356,def,"-248664.779","-440890.44E+666433944","-4.40890440E+666433949","4.40890440E+666433949","1.09633924E+666433955","5.64005831E-666433945","0","-248664.779","2.61542877E-22");
+        mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");
+        mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");
+        mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");
+        mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");
+        mathtest(361,def,"-638509.181","45580189.0E+269212559","4.55801890E+269212566","-4.55801890E+269212566","-2.91033691E+269212572","-1.40084803E-269212561","0","-638509.181","-1.06129405E+29");
+        mathtest(362,def,"330590422","74.359928E+535377965","7.43599280E+535377966","-7.43599280E+535377966","2.45826800E+535377975","4.44581418E-535377959","0","330590422","4.31550742E+59");
+        mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");
+        mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");
+        mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");
+        mathtest(366,def,"347.28720E+145930771","-62821.9906E-676564106","3.47287200E+145930773","3.47287200E+145930773","-2.18172732E-530633328","-5.52811518E+822494874","","","5.69990135E-875584642");
+        mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");
+        mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");
+        mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");
+        mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");
+        mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");
+        mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");
+        mathtest(373,def,"-23.7357549E+77116908","351.100649E+864348022","3.51100649E+864348024","-3.51100649E+864348024","-8.33363895E+941464933","-6.7603848E-787231116","0","-2.37357549E+77116909","3.17403853E+308467637");
+        mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");
+        mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");
+        mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");
+        mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");
+        mathtest(378,def,"-399492.914E-334369192","5202119.87E+442442258","5.20211987E+442442264","-5.20211987E+442442264","-2.07821003E+108073078","-7.67942539E-776811452","0","-3.99492914E-334369187","");
+        mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");
+        mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");
+        mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");
+        mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");
+        mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");
+        mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");
+        mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");
+        mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");
+        mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");
+        mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");
+        mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");
+        mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");
+        mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");
+        mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");
+        mathtest(393,def,"-8.2335779","573665010E+742722075","5.73665010E+742722083","-5.73665010E+742722083","-4.72331555E+742722084","-1.43525886E-742722083","0","-8.2335779","311552.753");
+        mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");
+        mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");
+        mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");
+        mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");
+        mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");
+        mathtest(399,def,"940.533705E-379310421","-4.01176961E+464620037","-4.01176961E+464620037","4.01176961E+464620037","-3.77320453E+85309619","-2.34443599E-843930456","0","9.40533705E-379310419","");
+        mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");
+        mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");
+        mathtest(402,def,"-28861028.","82818.820E+138368758","8.28188200E+138368762","-8.28188200E+138368762","-2.39023628E+138368770","-3.48483932E-138368756","0","-28861028","4.81387013E+59");
+        mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");
+        mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");
+        mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");
+        mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");
+        mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");
+        mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");
+        mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");
+        mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");
+        mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");
+        mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");
+        mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");
+        mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");
+        mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");
+        mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");
+        mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");
+        mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");
+        mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");
+        mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");
+        mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");
+        mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");
+        mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");
+        mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");
+        mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");
+        mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");
+        mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");
+        mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");
+        mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");
+        mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");
+        mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");
+        mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");
+        mathtest(433,def,"-5.14890532E+562048011","10847127.8E-390918910","-5.14890532E+562048011","-5.14890532E+562048011","-5.58508340E+171129108","-4.74679142E+952966914","","","-5.14890532E+562048011");
+        mathtest(434,def,"653311907","-810.036965E+744537823","-8.10036965E+744537825","8.10036965E+744537825","-5.29206794E+744537834","-8.06521104E-744537818","0","653311907","3.01325171E-71");
+        mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");
+        mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");
+        mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");
+        mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");
+        mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");
+        mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");
+        mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");
+        mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");
+        mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");
+        mathtest(444,def,"-5115.76467","690.960979E+815126701","6.90960979E+815126703","-6.90960979E+815126703","-3.53479376E+815126707","-7.4038402E-815126701","0","-5115.76467","-9.17009655E+25");
+        mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");
+        mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");
+        mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");
+        mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");
+        mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");
+        mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");
+        mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");
+        mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");
+        mathtest(453,def,"-303956364E+278139979","229537.920E+479603725","2.29537920E+479603730","-2.29537920E+479603730","-6.97695116E+757743717","-1.3242098E-201463743","0","-3.03956364E+278139987","9.23894712E+556279974");
+        mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");
+        mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");
+        mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");
+        mathtest(457,def,"733317.669E+100381349","-13832.6792E+174055607","-1.38326792E+174055611","1.38326792E+174055611","-1.01437481E+274436966","-5.30134227E-73674257","0","7.33317669E+100381354","1.36366549E-100381355");
+        mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");
+        mathtest(459,def,"-694562052","310681.319E+549445264","3.10681319E+549445269","-3.10681319E+549445269","-2.15787454E+549445278","-2.23560932E-549445261","0","-694562052","-3.35068155E+26");
+        mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");
+        mathtest(461,def,"3625.87308","-50.2208536E+658627487","-5.02208536E+658627488","5.02208536E+658627488","-1.82094441E+658627492","-7.21985554E-658627486","0","3625.87308","1.5956477E-18");
+        mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");
+        mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");
+        mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");
+        mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");
+        mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");
+        mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");
+        mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");
+        mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");
+        mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");
+        mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");
+        mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");
+        mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");
+        mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");
+        mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");
+        mathtest(476,def,"-8.25290500","992.091584E+256070257","9.92091584E+256070259","-9.92091584E+256070259","-8.18763759E+256070260","-8.31869268E-256070260","0","-8.25290500","1.46577888E+9");
+        mathtest(477,def,"546875205.","447.52857E+557357101","4.47528570E+557357103","-4.47528570E+557357103","2.44742278E+557357112","1.22198948E-557357095","0","546875205","8.94443542E+34");
+        mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");
+        mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");
+        mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");
+        mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");
+        mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");
+        mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");
+        mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");
+        mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");
+        mathtest(486,def,"-5.26631053","-3815941.35E+183291763","-3.81594135E+183291769","3.81594135E+183291769","2.00959321E+183291770","1.38008162E-183291769","0","-5.26631053","0.00130009218");
+        mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");
+        mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");
+        mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");
+        mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");
+        mathtest(491,def,"318847.270","582107878.E+399633412","5.82107878E+399633420","-5.82107878E+399633420","1.85603508E+399633426","5.47746014E-399633416","0","318847.270","1.0507423E+33");
+        mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");
+        mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");
+        mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");
+        mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");
+        mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");
+        mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");
+        mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");
+        mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");
+        mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");
+
+        summary("Arithmetic");
+    }
+
+    /* mathtest -- general arithmetic test routine
+     Arg1  is test number
+     Arg2  is MathContext
+     Arg3  is left hand side (LHS)
+     Arg4  is right hand side (RHS)
+     Arg5  is the expected result for add
+     Arg6  is the expected result for subtract
+     Arg7  is the expected result for multiply
+     Arg8  is the expected result for divide
+     Arg9  is the expected result for integerDivide
+     Arg10 is the expected result for remainder
+     Arg11 is the expected result for power
+     
+     For power RHS, 0 is added to the number, any exponent is removed and
+     the number is then rounded to an integer, using format(rhs+0,,0)
+     
+     If an error should result for an operation, the 'expected result' is
+     an empty string.
+     */
+
+    private void mathtest(int test, com.ibm.icu.math.MathContext mc,
+            java.lang.String slhs, java.lang.String srhs, java.lang.String add,
+            java.lang.String sub, java.lang.String mul, java.lang.String div,
+            java.lang.String idv, java.lang.String rem, java.lang.String pow) {
+        com.ibm.icu.math.BigDecimal lhs;
+        com.ibm.icu.math.BigDecimal rhs;
+        java.lang.String res = null;
+        java.lang.String sn = null;
+        int e = 0;
+
+        lhs = new com.ibm.icu.math.BigDecimal(slhs);
+        rhs = new com.ibm.icu.math.BigDecimal(srhs);
+
+        try {
+            res = lhs.add(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $137) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "add", res, add);
+
+        try {
+            res = lhs.subtract(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $138) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "sub", res, sub);
+
+        try {
+            res = lhs.multiply(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $139) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "mul", res, mul);
+
+        try {
+            res = lhs.divide(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $140) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "div", res, div);
+
+        try {
+            res = lhs.divideInteger(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $141) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "idv", res, idv);
+
+        try {
+            res = lhs.remainder(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $142) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "rem", res, rem);
+
+        try {
+            // prepare an integer from the rhs
+            // in Rexx:
+            //   n=rhs+0
+            //   e=pos('E', n)
+            //   if e>0 then n=left(n,e-1)
+            //   n=format(n,,0)
+
+            sn = rhs.plus(mc).toString();
+            e = sn.indexOf("E", 0);
+            if (e > 0)
+                sn = sn.substring(0, e);
+            sn = (new com.ibm.icu.math.BigDecimal(sn)).format(-1, 0);
+
+            res = lhs.pow(new com.ibm.icu.math.BigDecimal(sn), mc).toString();
+        } catch (java.lang.ArithmeticException $143) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "pow", res, pow);
+        return;
+    }
+
+    /* mathtestcheck -- check for general mathtest error
+     Arg1  is test number
+     Arg2  is left hand side (LHS)
+     Arg3  is right hand side (RHS)
+     Arg4  is the operation
+     Arg5  is the actual result
+     Arg6  is the expected result
+     Show error message if a problem, otherwise return quietly
+     */
+
+    private void mathtestcheck(int test, com.ibm.icu.math.BigDecimal lhs,
+            com.ibm.icu.math.BigDecimal rhs, java.lang.String op,
+            java.lang.String got, java.lang.String want) {
+        boolean flag;
+        java.lang.String testnum;
+
+        flag = want.equals((java.lang.Object) got);
+
+        if ((!flag))
+            say(">" + test + ">" + " " + lhs.toString() + " " + op + " "
+                    + rhs.toString() + " " + "=" + " " + want + " " + "[got"
+                    + " " + got + "]");
+
+        testnum = "gen"
+                + right((new com.ibm.icu.math.BigDecimal(test + 1000))
+                        .toString(), 3);
+
+        (new Test(testnum)).ok = flag;
+        return;
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* Support routines and minor classes follow                          */
+    /* ------------------------------------------------------------------ */
+
+    /* ----------------------------------------------------------------- */
+    /* Method called to summarise pending tests                          */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is section name */
+
+    private void summary(java.lang.String section) {
+        int bad;
+        int count;
+        int i = 0;
+        Test item = null;
+        bad = 0;
+        count = Tests.size();
+        {
+            int $144 = count;
+            i = 0;
+            for (; $144 > 0; $144--, i++) {
+                item = (Test) (Tests.elementAt(i));
+                if ((!item.ok))
+                {
+                    bad++;
+                    errln("Failed:" + " " + item.name);
+                }
+            }
+        }/*i*/
+        totalcount = totalcount + count;
+        Tests = new java.util.Vector(100); // reinitialize
+        if (bad == 0)
+            say("OK" + " " + left(section, 14) + " "
+                    + right("[" + count + " " + "tests]", 12));
+        else
+            throw new DiagException(section + " " + "[failed" + " " + bad + " "
+                    + "of" + " " + count + " " + "tests]", bad);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* right - Utility to do a 'right' on a Java String                  */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to right-justify */
+    /* Arg2 is desired length */
+
+    private static java.lang.String right(java.lang.String s, int len) {
+        int slen;
+        slen = s.length();
+        if (slen == len)
+            return s; // length just right
+        if (slen > len)
+            return s.substring(slen - len); // truncate on left
+        // too short
+        return (new java.lang.String(new char[len - slen]))
+                .replace('\000', ' ').concat(s);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* left - Utility to do a 'left' on a Java String                    */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to left-justify */
+    /* Arg2 is desired length */
+
+    private static java.lang.String left(java.lang.String s, int len) {
+        int slen;
+        slen = s.length();
+        if (slen == len)
+            return s; // length just right
+        if (slen > len)
+            return s.substring(0, len); // truncate on right
+        // too short
+        return s.concat((new java.lang.String(new char[len - slen])).replace(
+                '\000', ' '));
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* say - Utility to do a display                                     */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to display, omitted if none */
+    /*         [null or omitted gives blank line] */
+    // this version doesn't heed continuation final character
+    private void say() {
+        say((java.lang.String) null);
+        return;
+    }
+
+    private void say(java.lang.String s) {
+        if (s == null)
+            s = "  ";
+        logln(s);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* Scaffolding for stand-alone run                                   */
+    /* ----------------------------------------------------------------- */
+    /** Entry point for stand-alone run.  It constructs a
+     *  <code>DiagBigDecimal</code> object and then invokes its
+     *  {@link #diagrun(boolean)} method to run the test
+     *  suite.
+     *
+     * @param args The command line argument string array.
+     *   if the first word is '<code>continue</code>' then try and run
+     *   all tests, otherwise stop after the first failing test group.
+     */
+    public static void main(String[] args) throws Exception {
+        new DiagBigDecimal().run(args);
+    }
+
+    public void TestBigDecimal() {
+        boolean $continue;
+        int fails;
+        $continue = false;
+        fails = diagrun($continue); // and run the tests
+        if (fails != 0) {
+            errln("Diagnostic Tests for math failed. Number of errors: "
+                    + fails);
+        }
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* Test -- represents a test and its status                           */
+    /* ------------------------------------------------------------------ */
+    /* Copyright IBM Corporation 1998, 2000.  All rights reserved.        */
+    /* Author: Mike Cowlishaw                                             */
+    /* ------------------------------------------------------------------ */
+    /* 1998.07.15 Initial version                                         */
+    /* 2000.03.27 Change to javadoc comments                              */
+
+    /**
+     * The <code>Test</code> class is used to record a specific test.
+     * When constructed, it notes the name of the test and adds the test
+     * to the list of tests held by the parent.
+     *
+     * Its <code>ok</flag> is assigned directly to record whether the
+     * test succeeded (1) or failed (0).
+     *
+     * @see     com.ibm.icu.math.BigDecimal
+     * @version 1.00 2000.03.27
+     * @author  Mike Cowlishaw
+     */
+
+    public class Test {
+        //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
+
+        /* properties shared transient */
+        /** The name of the test. */
+        transient java.lang.String name;
+
+        /** Success flag; will be set to 1 (true) if the test succeeded, or 0
+         * (false) if the test failed.
+         */
+        transient boolean ok;
+
+        /**
+         * Constructs a new <code>Test</code> with a specified name.
+         *
+         * @param testname The <code>String</code> naming the test.
+         */
+
+        public Test(java.lang.String testname) {
+            super();
+            name = testname; // save the name
+            DiagBigDecimal.this.Tests.addElement((java.lang.Object) this); // and add to parent's list
+        }
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* DiagException                                                      */
+    /* ------------------------------------------------------------------ */
+    /* Copyright IBM Corporation 1996, 2000.  All rights reserved.        */
+    /* Author: Mike Cowlishaw                                             */
+    /* ------------------------------------------------------------------ */
+    /* 1996.05.27 Initial version in NetRexx (as DiagX)                   */
+    /* 1998.06.25 Copied from NetRexx test suite                          */
+    /* 1999.07.03 Add fail count                                          */
+    /* 2000.03.27 Change to javadoc comments                              */
+
+    /**
+     * The <code>DiagException</code> class is used to signal the failure
+     * of a test group.  It records the number of failures in the group.
+     *
+     * @see     com.ibm.icu.math.BigDecimal
+     * @version 1.00 2000.03.27
+     * @author  Mike Cowlishaw
+     */
+
+    public static class DiagException extends java.lang.RuntimeException {
+        //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 755873172220249188L;
+        /* properties shared transient */
+        /** the count of failed tests in the group which signalled this
+         * exception.
+         */
+        transient int failcount = 0;
+
+        // number of tests which failed
+
+        /**
+         * Constructs a new <code>DiagException</code> with a message and
+         * failure count.  This is thrown when a group of tests fails.
+         *
+         * @param message The <code>String</code> message describing the group.
+         * @param fails   The <code>int</code> number of failed tests in the  group.
+         */
+
+        public DiagException(java.lang.String message, int fails) {
+            super(message);
+            failcount = fails;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/AstroTest.java b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
new file mode 100644
index 0000000..f007bcd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+// AstroTest
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarAstronomer.*;
+import com.ibm.icu.text.DateFormat;
+
+// TODO: try finding next new moon after  07/28/1984 16:00 GMT
+
+public class AstroTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new AstroTest().run(args);
+    }
+
+    static final double PI = Math.PI;
+
+    public void TestSolarLongitude() {
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+        CalendarAstronomer astro = new CalendarAstronomer();
+        // year, month, day, hour, minute, longitude (radians), ascension(radians), declination(radians)
+        final double tests[][] = {
+            { 1980, 7, 27, 00, 00, 2.166442986535465, 2.2070499713207730, 0.3355704075759270 },
+            { 1988, 7, 27, 00, 00, 2.167484927693959, 2.2081183335606176, 0.3353093444275315 },
+        };
+        logln("");
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+
+            astro.setDate(gc.getTime());
+
+            double longitude = astro.getSunLongitude();
+            if (longitude != tests[i][5]) {
+                if ((float)longitude == (float)tests[i][5]) {
+                    logln("longitude(" + longitude +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: longitude(" + longitude +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") for test " + i);
+                }
+            }
+            Equatorial result = astro.getSunPosition();
+            if (result.ascension != tests[i][6]) {
+                if ((float)result.ascension == (float)tests[i][6]) {
+                    logln("result.ascension(" + result.ascension +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.ascension(" + result.ascension +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") for test " + i);
+                }
+            }
+            if (result.declination != tests[i][7]) {
+                if ((float)result.declination == (float)tests[i][7]) {
+                    logln("result.declination(" + result.declination +
+                            ") !=  tests[i][7](" + tests[i][7] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.declination(" + result.declination +
+                            ") !=  tests[i][7](" + tests[i][7] +
+                            ") for test " + i);
+                }
+            }
+        }
+    }
+
+    public void TestLunarPosition() {
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+        CalendarAstronomer astro = new CalendarAstronomer();
+        // year, month, day, hour, minute, ascension(radians), declination(radians)
+        final double tests[][] = {
+            { 1979, 2, 26, 16, 00, -0.3778379118188744, -0.1399698825594198 },
+        };
+        logln("");
+
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            astro.setDate(gc.getTime());
+
+            Equatorial result = astro.getMoonPosition();
+            if (result.ascension != tests[i][5]) {
+                if ((float)result.ascension == (float)tests[i][5]) {
+                    logln("result.ascension(" + result.ascension +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.ascension(" + result.ascension +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") for test " + i);
+                }
+            }
+            if (result.declination != tests[i][6]) {
+                if ((float)result.declination == (float)tests[i][6]) {
+                    logln("result.declination(" + result.declination +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.declination(" + result.declination +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") for test " + i);
+                }
+            }
+        }
+    }
+
+    public void TestCoordinates() {
+        CalendarAstronomer astro = new CalendarAstronomer();
+        Equatorial result = astro.eclipticToEquatorial(139.686111 * PI/ 180.0, 4.875278* PI / 180.0);
+        logln("result is " + result + ";  " + result.toHmsString());
+    }
+
+    public void TestCoverage() {
+        GregorianCalendar cal = new GregorianCalendar(1958, Calendar.AUGUST, 15);
+        Date then = cal.getTime();
+        CalendarAstronomer myastro = new CalendarAstronomer(then);
+
+        //Latitude:  34 degrees 05' North
+        //Longitude:  118 degrees 22' West
+        double laLat = 34 + 5d/60, laLong = 360 - (118 + 22d/60);
+        CalendarAstronomer myastro2 = new CalendarAstronomer(laLong, laLat);
+
+        double eclLat = laLat * Math.PI / 360;
+        double eclLong = laLong * Math.PI / 360;
+        Ecliptic ecl = new Ecliptic(eclLat, eclLong);
+        logln("ecliptic: " + ecl);
+
+        CalendarAstronomer myastro3 = new CalendarAstronomer();
+        myastro3.setJulianDay((4713 + 2000) * 365.25);
+
+        CalendarAstronomer[] astronomers = {
+            myastro, myastro2, myastro3, myastro2 // check cache
+
+        };
+
+        for (int i = 0; i < astronomers.length; ++i) {
+            CalendarAstronomer astro = astronomers[i];
+
+            logln("astro: " + astro);
+            logln("   time: " + astro.getTime());
+            logln("   date: " + astro.getDate());
+            logln("   cent: " + astro.getJulianCentury());
+            logln("   gw sidereal: " + astro.getGreenwichSidereal());
+            logln("   loc sidereal: " + astro.getLocalSidereal());
+            logln("   equ ecl: " + astro.eclipticToEquatorial(ecl));
+            logln("   equ long: " + astro.eclipticToEquatorial(eclLong));
+            logln("   horiz: " + astro.eclipticToHorizon(eclLong));
+            logln("   sunrise: " + new Date(astro.getSunRiseSet(true)));
+            logln("   sunset: " + new Date(astro.getSunRiseSet(false)));
+            logln("   moon phase: " + astro.getMoonPhase());
+            logln("   moonrise: " + new Date(astro.getMoonRiseSet(true)));
+            logln("   moonset: " + new Date(astro.getMoonRiseSet(false)));
+            logln("   prev summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, false)));
+            logln("   next summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, true)));
+            logln("   prev full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, false)));
+            logln("   next full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, true)));
+        }
+
+    }
+
+    static final long DAY_MS = 24*60*60*1000L;
+
+    public void TestSunriseTimes() {
+
+        //        logln("Sunrise/Sunset times for San Jose, California, USA");
+        //        CalendarAstronomer astro = new CalendarAstronomer(-121.55, 37.20);
+        //        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+
+        // We'll use a table generated by the UNSO website as our reference
+        // From: http://aa.usno.navy.mil/
+        //-Location: W079 25, N43 40
+        //-Rise and Set for the Sun for 2001
+        //-Zone:  4h West of Greenwich
+        int[] USNO = {
+             6,59, 19,45,
+             6,57, 19,46,
+             6,56, 19,47,
+             6,54, 19,48,
+             6,52, 19,49,
+             6,50, 19,51,
+             6,48, 19,52,
+             6,47, 19,53,
+             6,45, 19,54,
+             6,43, 19,55,
+             6,42, 19,57,
+             6,40, 19,58,
+             6,38, 19,59,
+             6,36, 20, 0,
+             6,35, 20, 1,
+             6,33, 20, 3,
+             6,31, 20, 4,
+             6,30, 20, 5,
+             6,28, 20, 6,
+             6,27, 20, 7,
+             6,25, 20, 8,
+             6,23, 20,10,
+             6,22, 20,11,
+             6,20, 20,12,
+             6,19, 20,13,
+             6,17, 20,14,
+             6,16, 20,16,
+             6,14, 20,17,
+             6,13, 20,18,
+             6,11, 20,19,
+        };
+
+        logln("Sunrise/Sunset times for Toronto, Canada");
+        CalendarAstronomer astro = new CalendarAstronomer(-(79+25/60), 43+40/60);
+
+        // As of ICU4J 2.8 the ICU4J time zones implement pass-through
+        // to the underlying JDK.  Because of variation in the
+        // underlying JDKs, we have to use a fixed-offset
+        // SimpleTimeZone to get consistent behavior between JDKs.
+        // The offset we want is [-18000000, 3600000] (raw, dst).
+        // [aliu 10/15/03]
+
+        // TimeZone tz = TimeZone.getTimeZone("America/Montreal");
+        TimeZone tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)");
+
+        GregorianCalendar cal = new GregorianCalendar(tz, Locale.US);
+        GregorianCalendar cal2 = new GregorianCalendar(tz, Locale.US);
+        cal.clear();
+        cal.set(Calendar.YEAR, 2001);
+        cal.set(Calendar.MONTH, Calendar.APRIL);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+        cal.set(Calendar.HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work
+
+        DateFormat df = DateFormat.getTimeInstance(cal, DateFormat.MEDIUM, Locale.US);
+        DateFormat df2 = DateFormat.getDateTimeInstance(cal, DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
+        DateFormat day = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, Locale.US);
+
+        for (int i=0; i < 30; i++) {
+            astro.setDate(cal.getTime());
+
+            Date sunrise = new Date(astro.getSunRiseSet(true));
+            Date sunset = new Date(astro.getSunRiseSet(false));
+
+            cal2.setTime(cal.getTime());
+            cal2.set(Calendar.SECOND,      0);
+            cal2.set(Calendar.MILLISECOND, 0);
+
+            cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+0]);
+            cal2.set(Calendar.MINUTE,      USNO[4*i+1]);
+            Date exprise = cal2.getTime();
+            cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+2]);
+            cal2.set(Calendar.MINUTE,      USNO[4*i+3]);
+            Date expset = cal2.getTime();
+            // Compute delta of what we got to the USNO data, in seconds
+            int deltarise = Math.abs((int)(sunrise.getTime() - exprise.getTime()) / 1000);
+            int deltaset = Math.abs((int)(sunset.getTime() - expset.getTime()) / 1000);
+
+            // Allow a deviation of 0..MAX_DEV seconds
+            // It would be nice to get down to 60 seconds, but at this
+            // point that appears to be impossible without a redo of the
+            // algorithm using something more advanced than Duffett-Smith.
+            final int MAX_DEV = 180;
+            if (deltarise > MAX_DEV || deltaset > MAX_DEV) {
+                if (deltarise > MAX_DEV) {
+                    errln("FAIL: " + day.format(cal.getTime()) +
+                          ", Sunrise: " + df2.format(sunrise) +
+                          " (USNO " + df.format(exprise) +
+                          " d=" + deltarise + "s)");
+                } else {
+                    logln(day.format(cal.getTime()) +
+                          ", Sunrise: " + df.format(sunrise) +
+                          " (USNO " + df.format(exprise) + ")");
+                }
+                if (deltaset > MAX_DEV) {
+                    errln("FAIL: " + day.format(cal.getTime()) +
+                          ", Sunset: " + df2.format(sunset) +
+                          " (USNO " + df.format(expset) +
+                          " d=" + deltaset + "s)");
+                } else {
+                    logln(day.format(cal.getTime()) +
+                          ", Sunset: " + df.format(sunset) +
+                          " (USNO " + df.format(expset) + ")");
+                }
+            } else {
+                logln(day.format(cal.getTime()) +
+                      ", Sunrise: " + df.format(sunrise) +
+                      " (USNO " + df.format(exprise) + ")" +
+                      ", Sunset: " + df.format(sunset) +
+                      " (USNO " + df.format(expset) + ")");
+            }
+            cal.add(Calendar.DATE, 1);
+        }
+
+//        CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60);
+//        cal.clear();
+//        cal.set(cal.YEAR, 1986);
+//        cal.set(cal.MONTH, cal.MARCH);
+//        cal.set(cal.DATE, 10);
+//        cal.set(cal.YEAR, 1988);
+//        cal.set(cal.MONTH, cal.JULY);
+//        cal.set(cal.DATE, 27);
+//        a.setDate(cal.getTime());
+//        long r = a.getSunRiseSet2(true);
+    }
+
+    public void TestBasics() {
+        // Check that our JD computation is the same as the book's (p. 88)
+        CalendarAstronomer astro = new CalendarAstronomer();
+        GregorianCalendar cal3 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
+        DateFormat d3 = DateFormat.getDateTimeInstance(cal3, DateFormat.MEDIUM,DateFormat.MEDIUM,Locale.US);
+        cal3.clear();
+        cal3.set(Calendar.YEAR, 1980);
+        cal3.set(Calendar.MONTH, Calendar.JULY);
+        cal3.set(Calendar.DATE, 27);
+        astro.setDate(cal3.getTime());
+        double jd = astro.getJulianDay() - 2447891.5;
+        double exp = -3444;
+        if (jd == exp) {
+            logln(d3.format(cal3.getTime()) + " => " + jd);
+        } else {
+            errln("FAIL: " + d3.format(cal3.getTime()) + " => " + jd +
+                  ", expected " + exp);
+        }
+
+
+//        cal3.clear();
+//        cal3.set(cal3.YEAR, 1990);
+//        cal3.set(cal3.MONTH, Calendar.JANUARY);
+//        cal3.set(cal3.DATE, 1);
+//        cal3.add(cal3.DATE, -1);
+//        astro.setDate(cal3.getTime());
+//        astro.foo();
+    }
+    
+    public void TestMoonAge(){
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0,"GMT"));
+        CalendarAstronomer calastro = new CalendarAstronomer();
+        // more testcases are around the date 05/20/2012
+        //ticket#3785  UDate ud0 = 1337557623000.0;
+        double testcase[][] = {{2012, 5, 20 , 16 , 48, 59},
+                {2012, 5, 20 , 16 , 47, 34},
+                {2012, 5, 21, 00, 00, 00},
+                {2012, 5, 20, 14, 55, 59},
+                {2012, 5, 21, 7, 40, 40},
+                {2023, 9, 25, 10,00, 00},
+                {2008, 7, 7, 15, 00, 33}, 
+                {1832, 9, 24, 2, 33, 41 },
+                {2016, 1, 31, 23, 59, 59},
+                {2099, 5, 20, 14, 55, 59}
+        };
+        // Moon phase angle - Got from http://www.moonsystem.to/checkupe.htm
+        double angle[] = {356.8493418421329, 356.8386760059673, 0.09625415252237701, 355.9986960782416, 3.5714026601303317, 124.26906744384183, 59.80247650195558, 357.54163205513123, 268.41779281511094, 4.82340276581624};
+        double precision = PI/32;
+        for(int i=0; i<testcase.length; i++){
+            gc.clear();
+            String testString = "CASE["+i+"]: Year "+(int)testcase[i][0]+" Month "+(int)testcase[i][1]+" Day "+
+                                    (int)testcase[i][2]+" Hour "+(int)testcase[i][3]+" Minutes "+(int)testcase[i][4]+
+                                    " Seconds "+(int)testcase[i][5];
+            gc.set((int)testcase[i][0],(int)testcase[i][1]-1,(int)testcase[i][2],(int)testcase[i][3],(int)testcase[i][4], (int)testcase[i][5]);
+            calastro.setDate(gc.getTime());
+            double expectedAge = (angle[i]*PI)/180;
+            double got = calastro.getMoonAge();
+            logln(testString);
+            if(!(got>expectedAge-precision && got<expectedAge+precision)){
+                errln("FAIL: expected " + expectedAge +
+                        " got " + got);
+            }else{
+                logln("PASS: expected " + expectedAge +
+                        " got " + got);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
new file mode 100644
index 0000000..346b559
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
@@ -0,0 +1,2092 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.*;
+
+/**
+ * @test 1.32 99/11/14
+ * @bug 4031502 4035301 4040996 4051765 4059654 4061476 4070502 4071197 4071385
+ * 4073929 4083167 4086724 4092362 4095407 4096231 4096539 4100311 4103271
+ * 4106136 4108764 4114578 4118384 4125881 4125892 4136399 4141665 4142933
+ * 4145158 4145983 4147269 4149677 4162587 4165343 4166109 4167060 4173516
+ * 4174361 4177484 4197699 4209071 4288792
+ */
+public class CalendarRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CalendarRegression().run(args);
+    }
+    static final String[] FIELD_NAME = {
+            "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+            "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+            "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+            "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+            "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+            "JULIAN_DAY", "MILLISECONDS_IN_DAY"
+        };
+
+
+    /*
+      Synopsis: java.sql.Timestamp constructor works wrong on Windows 95
+
+      ==== Here is the test ==== 
+      public static void main (String args[]) { 
+        java.sql.Timestamp t= new java.sql.Timestamp(0,15,5,5,8,13,123456700); 
+        logln("expected=1901-04-05 05:08:13.1234567"); 
+        logln(" result="+t); 
+      } 
+      
+      ==== Here is the output of the test on Solaris or NT ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 05:08:13.1234567 
+      
+      ==== Here is the output of the test on Windows95 ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 06:08:13.1234567 
+      */
+
+    public void Test4031502() {
+        try{
+            // This bug actually occurs on Windows NT as well, and doesn't
+            // require the host zone to be set; it can be set in Java.
+            String[] ids = TimeZone.getAvailableIDs();
+            boolean bad = false;
+            for (int i=0; i<ids.length; ++i) {
+                TimeZone zone = TimeZone.getTimeZone(ids[i]);
+                GregorianCalendar cal = new GregorianCalendar(zone);
+                cal.clear();
+                cal.set(1900, 15, 5, 5, 8, 13);
+                if (cal.get(Calendar.HOUR) != 5) {
+                    logln("Fail: " + zone.getID() + " " +
+                          zone.useDaylightTime() + "; DST_OFFSET = " +
+                          cal.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                          cal.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                          zone.getRawOffset() / (60*60*1000.0) +
+                          "; HOUR = " + cal.get(Calendar.HOUR));
+                    cal.clear();
+                    cal.set(1900, 15, 5, 5, 8, 13);
+                    if (cal.get(Calendar.HOUR) != 5) {
+                        logln("Fail: " + zone.getID() + " " +
+                              zone.useDaylightTime() + "; DST_OFFSET = " +
+                              cal.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                              cal.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                              zone.getRawOffset() / (60*60*1000.0) +
+                              "; HOUR = " + cal.get(Calendar.HOUR));
+                        cal.clear();
+                        cal.set(1900, 15, 5, 5, 8, 13);
+                        logln("ms = " + cal.getTime() + " (" + cal.getTime().getTime() + ")");
+                        cal.get(Calendar.HOUR);
+                        java.util.GregorianCalendar cal2 = new java.util.GregorianCalendar(java.util.TimeZone.getTimeZone(ids[i]));
+                        cal2.clear();
+                        cal2.set(1900, 15, 5, 5, 8, 13);
+                        cal2.get(Calendar.HOUR);
+                        logln("java.util.GC: " + zone.getID() + " " +
+                            zone.useDaylightTime() + "; DST_OFFSET = " +
+                            cal2.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                            cal2.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                            zone.getRawOffset() / (60*60*1000.0) +
+                            "; HOUR = " + cal.get(Calendar.HOUR));
+                        logln("ms = " + cal2.getTime() + " (" + cal2.getTime().getTime() + ")");
+                        bad = true;
+                    } else if (false) { // Change to true to debug
+                        logln("OK: " + zone.getID() + " " +
+                              zone.useDaylightTime() + " " +
+                              cal.get(Calendar.DST_OFFSET) / (60*60*1000) + " " +
+                              zone.getRawOffset() / (60*60*1000) +
+                              ": HOUR = " + cal.get(Calendar.HOUR));
+                    }
+                }
+                if (bad) errln("TimeZone problems with GC");
+            }
+        } catch (MissingResourceException e) {
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4035301() {
+        
+        try {
+            GregorianCalendar c = new GregorianCalendar(98, 8, 7);
+            GregorianCalendar d = new GregorianCalendar(98, 8, 7);
+            if (c.after(d) ||
+                c.after(c) ||
+                c.before(d) ||
+                c.before(c) ||
+                !c.equals(c) ||
+                !c.equals(d))
+                errln("Fail");
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4040996() {
+        try {
+            String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+            SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+            pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+            pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+            Calendar calendar = new GregorianCalendar(pdt);
+
+            calendar.set(Calendar.MONTH,3);
+            calendar.set(Calendar.DAY_OF_MONTH,18);
+            calendar.set(Calendar.SECOND, 30);
+
+            logln("MONTH: " + calendar.get(Calendar.MONTH));
+            logln("DAY_OF_MONTH: " + 
+                               calendar.get(Calendar.DAY_OF_MONTH));
+            logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+            logln("SECOND: " + calendar.get(Calendar.SECOND));
+
+            calendar.add(Calendar.SECOND,6);
+            //This will print out todays date for MONTH and DAY_OF_MONTH
+            //instead of the date it was set to.
+            //This happens when adding MILLISECOND or MINUTE also
+            logln("MONTH: " + calendar.get(Calendar.MONTH));
+            logln("DAY_OF_MONTH: " + 
+                               calendar.get(Calendar.DAY_OF_MONTH));
+            logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+            logln("SECOND: " + calendar.get(Calendar.SECOND));
+            if (calendar.get(Calendar.MONTH) != 3 ||
+                calendar.get(Calendar.DAY_OF_MONTH) != 18 ||
+                calendar.get(Calendar.SECOND) != 36)
+                errln("Fail: Calendar.add misbehaves");
+        } catch (Exception e) {
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4051765() {
+        try {
+            Calendar cal = Calendar.getInstance();
+            cal.setLenient(false);
+            cal.set(Calendar.DAY_OF_WEEK, 0);
+            try {
+                cal.getTime();
+                errln("Fail: DAY_OF_WEEK 0 should be disallowed");
+            }
+            catch (IllegalArgumentException e) {
+                return;
+            }
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+    
+    /*
+     * User error - no bug here public void Test4059524() { // Create calendar
+     * for April 10, 1997 GregorianCalendar calendar = new GregorianCalendar(); //
+     * print out a bunch of interesting things logln("ERA: " +
+     * calendar.get(calendar.ERA)); logln("YEAR: " +
+     * calendar.get(calendar.YEAR)); logln("MONTH: " +
+     * calendar.get(calendar.MONTH)); logln("WEEK_OF_YEAR: " +
+     * calendar.get(calendar.WEEK_OF_YEAR)); logln("WEEK_OF_MONTH: " +
+     * calendar.get(calendar.WEEK_OF_MONTH)); logln("DATE: " +
+     * calendar.get(calendar.DATE)); logln("DAY_OF_MONTH: " +
+     * calendar.get(calendar.DAY_OF_MONTH)); logln("DAY_OF_YEAR: " +
+     * calendar.get(calendar.DAY_OF_YEAR)); logln("DAY_OF_WEEK: " +
+     * calendar.get(calendar.DAY_OF_WEEK)); logln("DAY_OF_WEEK_IN_MONTH: " +
+     * calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)); logln("AM_PM: " +
+     * calendar.get(calendar.AM_PM)); logln("HOUR: " +
+     * calendar.get(calendar.HOUR)); logln("HOUR_OF_DAY: " +
+     * calendar.get(calendar.HOUR_OF_DAY)); logln("MINUTE: " +
+     * calendar.get(calendar.MINUTE)); logln("SECOND: " +
+     * calendar.get(calendar.SECOND)); logln("MILLISECOND: " +
+     * calendar.get(calendar.MILLISECOND)); logln("ZONE_OFFSET: " +
+     * (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000))); logln("DST_OFFSET: " +
+     * (calendar.get(calendar.DST_OFFSET)/(60*60*1000))); calendar = new
+     * GregorianCalendar(1997,3,10); calendar.getTime(); logln("April 10,
+     * 1997"); logln("ERA: " + calendar.get(calendar.ERA)); logln("YEAR: " +
+     * calendar.get(calendar.YEAR)); logln("MONTH: " +
+     * calendar.get(calendar.MONTH)); logln("WEEK_OF_YEAR: " +
+     * calendar.get(calendar.WEEK_OF_YEAR)); logln("WEEK_OF_MONTH: " +
+     * calendar.get(calendar.WEEK_OF_MONTH)); logln("DATE: " +
+     * calendar.get(calendar.DATE)); logln("DAY_OF_MONTH: " +
+     * calendar.get(calendar.DAY_OF_MONTH)); logln("DAY_OF_YEAR: " +
+     * calendar.get(calendar.DAY_OF_YEAR)); logln("DAY_OF_WEEK: " +
+     * calendar.get(calendar.DAY_OF_WEEK)); logln("DAY_OF_WEEK_IN_MONTH: " +
+     * calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)); logln("AM_PM: " +
+     * calendar.get(calendar.AM_PM)); logln("HOUR: " +
+     * calendar.get(calendar.HOUR)); logln("HOUR_OF_DAY: " +
+     * calendar.get(calendar.HOUR_OF_DAY)); logln("MINUTE: " +
+     * calendar.get(calendar.MINUTE)); logln("SECOND: " +
+     * calendar.get(calendar.SECOND)); logln("MILLISECOND: " +
+     * calendar.get(calendar.MILLISECOND)); logln("ZONE_OFFSET: " +
+     * (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+     * logln("DST_OFFSET: " + (calendar.get(calendar.DST_OFFSET)/(60*60*1000))); //
+     * in hours }
+     */
+
+    public void Test4059654() {
+   //     try {
+            // work around bug for jdk1.4 on solaris 2.6, which uses funky
+            // timezone names
+            // jdk1.4.1 will drop support for 2.6 so we should be ok when it
+            // comes out
+            java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+            TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+            GregorianCalendar gc = new GregorianCalendar(icuzone);
+            
+            gc.set(1997, 3, 1, 15, 16, 17); // April 1, 1997
+
+            gc.set(Calendar.HOUR, 0);
+            gc.set(Calendar.AM_PM, Calendar.AM);
+            gc.set(Calendar.MINUTE, 0);
+            gc.set(Calendar.SECOND, 0);
+            gc.set(Calendar.MILLISECOND, 0);
+
+            Date cd = gc.getTime();
+            java.util.Calendar cal = java.util.Calendar.getInstance(javazone);
+            cal.clear();
+            cal.set(1997, 3, 1, 0, 0, 0);
+            Date exp = cal.getTime();
+            if (!cd.equals(exp))
+                errln("Fail: Calendar.set broken. Got " + cd + " Want " + exp);
+   //     } catch (RuntimeException e) {
+            // TODO Auto-generated catch block
+   //         e.printStackTrace();
+  //      }
+    }
+
+    public void Test4061476() {
+        SimpleDateFormat fmt = new SimpleDateFormat("ddMMMyy", Locale.UK);
+        Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"), 
+                                                     Locale.UK);
+        fmt.setCalendar(cal);
+        try
+            {
+                Date date = fmt.parse("29MAY97");
+                cal.setTime(date);
+            }
+        catch (Exception e) {
+            System.out.print("");
+        }
+        cal.set(Calendar.HOUR_OF_DAY, 13);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        cal.add(Calendar.HOUR_OF_DAY, 6);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        if (cal.get(Calendar.HOUR_OF_DAY) != 19)
+            errln("Fail: Want 19 Got " + cal.get(Calendar.HOUR_OF_DAY));
+    }
+
+    public void Test4070502() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, 0, 30);
+        Date d = getAssociatedDate(tempcal.getTime());
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ||
+            cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
+            errln("Fail: Want weekday Got " + d);
+    }
+
+    /**
+     * Get the associated date starting from a specified date NOTE: the
+     * unnecessary "getTime()'s" below are a work-around for a bug in jdk 1.1.3
+     * (and probably earlier versions also)
+     * <p>
+     * 
+     * @param d
+     *            The date to start from
+     */
+    public static Date getAssociatedDate(Date d) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        //cal.add(field, amount); //<-- PROBLEM SEEN WITH field = DATE,MONTH
+        // cal.getTime(); // <--- REMOVE THIS TO SEE BUG
+        while (true) {
+            int wd = cal.get(Calendar.DAY_OF_WEEK);
+            if (wd == Calendar.SATURDAY || wd == Calendar.SUNDAY) {
+                cal.add(Calendar.DATE, 1);
+                // cal.getTime();
+            }
+            else
+                break;
+        }
+        return cal.getTime();
+    }
+
+    public void Test4071197() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        // cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1,
+                                             // 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        logln(cal.getTime().toString());
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY)
+            errln("FAIL: Min/max bad");
+        if (dow < min || dow > max) 
+            errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) 
+            errln("FAIL: Day of week should be SUNDAY Got " + dow);
+    }
+
+    public void Test4071385() {
+    // work around bug for jdk1.4 on solaris 2.6, which uses funky timezone
+    // names
+    // jdk1.4.1 will drop support for 2.6 so we should be ok when it comes out
+    java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+    TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+        Calendar cal = Calendar.getInstance(icuzone);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance(javazone);
+        tempcal.clear();
+        tempcal.set(1998, Calendar.JUNE, 24);
+        cal.setTime(tempcal.getTime());
+        cal.set(Calendar.MONTH, Calendar.NOVEMBER); // change a field
+        logln(cal.getTime().toString());
+        tempcal.set(1998, Calendar.NOVEMBER, 24);
+        if (!cal.getTime().equals(tempcal.getTime()))
+            errln("Fail");
+    }
+
+    public void Test4073929() {
+        GregorianCalendar foo1 = new GregorianCalendar(1997, 8, 27);
+        foo1.add(Calendar.DAY_OF_MONTH, +1);
+        int testyear = foo1.get(Calendar.YEAR);
+        int testmonth = foo1.get(Calendar.MONTH);
+        int testday = foo1.get(Calendar.DAY_OF_MONTH);
+        if (testyear != 1997 ||
+            testmonth != 8 ||
+            testday != 28)
+            errln("Fail: Calendar not initialized");
+    }
+
+    public void Test4083167() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            Date firstDate = new Date();
+            Calendar cal = new GregorianCalendar();
+            cal.setTime(firstDate);
+            long firstMillisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                cal.get(Calendar.MINUTE) * 60000L +
+                cal.get(Calendar.SECOND) * 1000L +
+                cal.get(Calendar.MILLISECOND);
+            
+            logln("Current time: " + firstDate.toString());
+
+            for (int validity=0; validity<30; validity++) {
+                Date lastDate = new Date(firstDate.getTime() +
+                                         (long)validity*1000*24*60*60);
+                cal.setTime(lastDate);
+                long millisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                    cal.get(Calendar.MINUTE) * 60000L +
+                    cal.get(Calendar.SECOND) * 1000L +
+                    cal.get(Calendar.MILLISECOND);
+                if (firstMillisInDay != millisInDay) 
+                    errln("Day has shifted " + lastDate);
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+
+    public void Test4086724() {
+        SimpleDateFormat date;
+        TimeZone saveZone = TimeZone.getDefault();
+        Locale saveLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(Locale.UK); 
+            TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+            date=new SimpleDateFormat("dd MMM yyy (zzzz) 'is in week' ww"); 
+            Calendar cal=Calendar.getInstance(); 
+            cal.set(1997,Calendar.SEPTEMBER,30); 
+            Date now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,1); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,8); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1996,Calendar.DECEMBER,31); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+    }
+
+    public void Test4092362() {
+        GregorianCalendar cal1 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*
+         * cal1.set( Calendar.YEAR, 1997 ); cal1.set( Calendar.MONTH, 10 );
+         * cal1.set( Calendar.DATE, 11 ); cal1.set( Calendar.HOUR, 10 );
+         * cal1.set( Calendar.MINUTE, 20 ); cal1.set( Calendar.SECOND, 40 );
+         */
+
+        logln( " Cal1 = " + cal1.getTime().getTime() ); 
+        logln( " Cal1 time in ms = " + cal1.get(Calendar.MILLISECOND) ); 
+        for( int k = 0; k < 100 ; k++ ) {
+            System.out.print(""); 
+        }
+
+        GregorianCalendar cal2 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*
+         * cal2.set( Calendar.YEAR, 1997 ); cal2.set( Calendar.MONTH, 10 );
+         * cal2.set( Calendar.DATE, 11 ); cal2.set( Calendar.HOUR, 10 );
+         * cal2.set( Calendar.MINUTE, 20 ); cal2.set( Calendar.SECOND, 40 );
+         */
+
+        logln( " Cal2 = " + cal2.getTime().getTime() ); 
+        logln( " Cal2 time in ms = " + cal2.get(Calendar.MILLISECOND) ); 
+        if( !cal1.equals( cal2 ) ) 
+            errln("Fail: Milliseconds randomized");
+    }
+
+    public void Test4095407() {
+        GregorianCalendar a = new GregorianCalendar(1997,Calendar.NOVEMBER, 13);
+        int dow = a.get(Calendar.DAY_OF_WEEK);
+        if (dow != Calendar.THURSDAY)
+            errln("Fail: Want THURSDAY Got " + dow);
+    }
+
+    public void Test4096231() {
+        TimeZone GMT = TimeZone.getTimeZone("GMT");
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int sec = 0, min = 0, hr = 0, day = 1, month = 10, year = 1997;
+                            
+        Calendar cal1 = new GregorianCalendar(PST);
+        cal1.setTime(new Date(880698639000L));
+        int p;
+        logln("PST 1 is: " + (p=cal1.get(Calendar.HOUR_OF_DAY)));
+        cal1.setTimeZone(GMT);
+        // Issue 1: Changing the timezone doesn't change the
+        //          represented time.
+        int h1,h2;
+        logln("GMT 1 is: " + (h1=cal1.get(Calendar.HOUR_OF_DAY)));
+        cal1.setTime(new Date(880698639000L));
+        logln("GMT 2 is: " + (h2=cal1.get(Calendar.HOUR_OF_DAY)));
+        // Note: This test had a bug in it. It wanted h1!=h2, when
+        // what was meant was h1!=p. Fixed this concurrent with fix
+        // to 4177484.
+        if (p == h1 || h1 != h2)
+            errln("Fail: Hour same in different zones");
+
+        Calendar cal2 = new GregorianCalendar(GMT);
+        Calendar cal3 = new GregorianCalendar(PST);
+        cal2.set(Calendar.MILLISECOND, 0);
+        cal3.set(Calendar.MILLISECOND, 0);
+
+        cal2.set(cal1.get(Calendar.YEAR),
+                 cal1.get(Calendar.MONTH),
+                 cal1.get(Calendar.DAY_OF_MONTH),
+                 cal1.get(Calendar.HOUR_OF_DAY),
+                 cal1.get(Calendar.MINUTE),
+                 cal1.get(Calendar.SECOND));
+
+        long t1,t2,t3,t4;
+        logln("RGMT 1 is: " + (t1=cal2.getTime().getTime()));
+        cal3.set(year, month, day, hr, min, sec);
+        logln("RPST 1 is: " + (t2=cal3.getTime().getTime()));
+        cal3.setTimeZone(GMT);
+        logln("RGMT 2 is: " + (t3=cal3.getTime().getTime()));
+        cal3.set(cal1.get(Calendar.YEAR),
+                 cal1.get(Calendar.MONTH),
+                 cal1.get(Calendar.DAY_OF_MONTH),
+                 cal1.get(Calendar.HOUR_OF_DAY),
+                 cal1.get(Calendar.MINUTE),
+                 cal1.get(Calendar.SECOND));
+        // Issue 2: Calendar continues to use the timezone in its
+        //          constructor for set() conversions, regardless
+        //          of calls to setTimeZone()
+        logln("RGMT 3 is: " + (t4=cal3.getTime().getTime()));
+        if (t1 == t2 ||
+            t1 != t4 ||
+            t2 != t3)
+            errln("Fail: Calendar zone behavior faulty");
+    }
+
+    public void Test4096539() {
+        int[] y = {31,28,31,30,31,30,31,31,30,31,30,31};
+
+        for (int x=0;x<12;x++) {
+            GregorianCalendar gc = new 
+                GregorianCalendar(1997,x,y[x]);
+            int m1,m2;
+            log((m1=gc.get(Calendar.MONTH)+1)+"/"+
+                             gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)+
+                             " + 1mo = ");
+
+            gc.add(Calendar.MONTH, 1);
+            logln((m2=gc.get(Calendar.MONTH)+1)+"/"+
+                               gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)
+                               );
+            int m = (m1 % 12) + 1;
+            if (m2 != m)
+                errln("Fail: Want " + m + " Got " + m2);
+        }
+        
+    }
+
+    public void Test4100311() {
+        GregorianCalendar cal = (GregorianCalendar)Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1997);
+        cal.set(Calendar.DAY_OF_YEAR, 1);
+        Date d = cal.getTime();             // Should be Jan 1
+        logln(d.toString());
+        if (cal.get(Calendar.DAY_OF_YEAR) != 1)
+            errln("Fail: DAY_OF_YEAR not set");
+    }
+
+    public void Test4103271() {
+        SimpleDateFormat sdf = new SimpleDateFormat(); 
+        int numYears=40, startYear=1997, numDays=15; 
+        String output, testDesc; 
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance(); 
+        testCal.clear();
+        sdf.setCalendar(testCal); 
+        sdf.applyPattern("d MMM yyyy"); 
+        boolean fail = false;
+        for (int firstDay=1; firstDay<=2; firstDay++) { 
+            for (int minDays=1; minDays<=7; minDays++) { 
+                testCal.setMinimalDaysInFirstWeek(minDays); 
+                testCal.setFirstDayOfWeek(firstDay); 
+                testDesc = ("Test" + String.valueOf(firstDay) + String.valueOf(minDays)); 
+                logln(testDesc + " => 1st day of week=" +
+                                   String.valueOf(firstDay) +
+                                   ", minimum days in first week=" +
+                                   String.valueOf(minDays)); 
+                for (int j=startYear; j<=startYear+numYears; j++) { 
+                    testCal.set(j,11,25); 
+                    for(int i=0; i<numDays; i++) { 
+                        testCal.add(Calendar.DATE,1); 
+                        String calWOY; 
+                        int actWOY = testCal.get(Calendar.WEEK_OF_YEAR);
+                        if (actWOY < 1 || actWOY > 53) {
+                            Date d = testCal.getTime(); 
+                            calWOY = String.valueOf(actWOY); 
+                            output = testDesc + " - " + sdf.format(d) + "\t"; 
+                            output = output + "\t" + calWOY; 
+                            logln(output); 
+                            fail = true;
+                        }
+                    } 
+                } 
+            } 
+        } 
+
+        int[] DATA = {
+            3, 52, 52, 52, 52, 52, 52, 52,
+                1,  1,  1,  1,  1,  1,  1,
+                2,  2,  2,  2,  2,  2,  2,
+            4, 52, 52, 52, 52, 52, 52, 52,
+               53, 53, 53, 53, 53, 53, 53,
+                1,  1,  1,  1,  1,  1,  1,
+        };
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int j=0; j<DATA.length; j+=22) {
+            logln("Minimal days in first week = " + DATA[j] +
+                               "  Week starts on Sunday");
+            testCal.setMinimalDaysInFirstWeek(DATA[j]);
+            testCal.set(1997, Calendar.DECEMBER, 21);
+            for (int i=0; i<21; ++i) {
+                int woy = testCal.get(Calendar.WEEK_OF_YEAR);
+                log(testCal.getTime() + " " + woy);
+                if (woy != DATA[j + 1 + i]) {
+                    log(" ERROR");
+                    fail = true;
+                }
+                //logln();
+                
+                // Now compute the time from the fields, and make sure we
+                // get the same answer back. This is a round-trip test.
+                Date save = testCal.getTime();
+                testCal.clear();
+                testCal.set(Calendar.YEAR, DATA[j+1+i] < 25 ? 1998 : 1997);
+                testCal.set(Calendar.WEEK_OF_YEAR, DATA[j+1+i]);
+                testCal.set(Calendar.DAY_OF_WEEK, (i%7) + Calendar.SUNDAY);
+                if (!testCal.getTime().equals(save)) {
+                    logln("  Parse failed: " + testCal.getTime());
+                    fail= true;
+                }
+
+                testCal.setTime(save);
+                testCal.add(Calendar.DAY_OF_MONTH, 1);
+            }
+        }
+
+        Date d[] = new Date[8];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[0] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 10);
+        d[1] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 31);
+        d[2] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[3] = tempcal.getTime();
+        // Test field disambiguation with a few special hard-coded cases.
+        // This shouldn't fail if the above cases aren't failing.
+        Object[] DISAM = {
+            new Integer(1998), new Integer(1), new Integer(Calendar.SUNDAY),
+                d[0],
+            new Integer(1998), new Integer(2), new Integer(Calendar.SATURDAY),
+                d[1],
+            new Integer(1998), new Integer(53), new Integer(Calendar.THURSDAY),
+                d[2],
+            new Integer(1998), new Integer(53), new Integer(Calendar.FRIDAY),
+                d[3],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<DISAM.length; i+=4) {
+            int y = ((Integer)DISAM[i]).intValue();
+            int woy = ((Integer)DISAM[i+1]).intValue();
+            int dow = ((Integer)DISAM[i+2]).intValue();
+            Date exp = (Date)DISAM[i+3];
+            testCal.clear();
+            testCal.set(Calendar.YEAR, y);
+            testCal.set(Calendar.WEEK_OF_YEAR, woy);
+            testCal.set(Calendar.DAY_OF_WEEK, dow);
+            log(y + "-W" + woy +
+                             "-DOW" + dow + " expect:" + exp +
+                             " got:" + testCal.getTime());
+            if (!testCal.getTime().equals(exp)) {
+                log("  FAIL");
+                fail = true;
+            }
+            //logln();
+        }
+
+        // Now try adding and rolling
+        Object ADD = new Object();
+        Object ROLL = new Object();
+        tempcal.set(1998, Calendar.DECEMBER, 25);
+        d[0] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[2] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 4);
+        d[3] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 27);
+        d[4] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[5] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 2);
+        d[6] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 3);
+        d[7] = tempcal.getTime();
+        
+        Object[] ADDROLL = {
+            ADD, new Integer(1), d[0], d[1],
+            ADD, new Integer(1), d[2], d[3],
+            ROLL, new Integer(1), d[4], d[5],
+            ROLL, new Integer(1), d[6], d[7],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<ADDROLL.length; i+=4) {
+            int amount = ((Integer)ADDROLL[i+1]).intValue();
+            Date before = (Date)ADDROLL[i+2];
+            Date after = (Date)ADDROLL[i+3];
+
+            testCal.setTime(before);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             amount + ") " + before + " => " +
+                             testCal.getTime());
+            if (!after.equals(testCal.getTime())) {
+                logln("  exp:" + after + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+
+            testCal.setTime(after);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, -amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, -amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             (-amount) + ") " + after + " => " +
+                             testCal.getTime());
+            if (!before.equals(testCal.getTime())) {
+                logln("  exp:" + before + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+        }
+
+        if (fail) errln("Fail: Week of year misbehaving");
+    } 
+
+    public void Test4106136() {
+        Locale saveLocale = Locale.getDefault();
+        String[] names = { "Calendar", "DateFormat", "NumberFormat" };
+        try {
+            Locale[] locales = { Locale.CHINESE, Locale.CHINA };
+            for (int i=0; i<locales.length; ++i) {
+                Locale.setDefault(locales[i]);
+                int[] n = {
+                    Calendar.getAvailableLocales().length,
+                    DateFormat.getAvailableLocales().length,
+                    NumberFormat.getAvailableLocales().length
+                };
+                for (int j=0; j<n.length; ++j) {
+                    if (n[j] == 0)
+                        errln("Fail: " + names[j] + " has no locales for " + locales[i]);
+                }
+            }
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+        }
+    }
+
+    public void Test4108764() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 00, 00);
+        Date d00 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 00, 56);
+        Date d01 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 34, 00);
+        Date d10 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 34, 56);
+        Date d11 = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 15, 12, 34, 56);
+        Date dM  = tempcal.getTime();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.JANUARY, 1);
+        Date epoch = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance(); 
+        cal.setTime(d11);
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d01)) {
+            errln("Fail: " + d11 + " clear(MINUTE) => expect " +
+                  d01 + ", got " + cal.getTime());
+        }
+
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: set(SECOND, 0) broken");
+
+        cal.setTime(d11);
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d10))
+            errln("Fail: set(SECOND, 0) broken #2");
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: clear(MINUTE) broken #2");
+
+        cal.clear();
+        logln(cal.getTime().toString());
+        if (!cal.getTime().equals(epoch))
+            errln("Fail: after clear() expect " + epoch + ", got " + cal.getTime());
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        // This test case does not work well with JRE1.3 with
+//##        // the timezone update for US 2007 rule.  Java 1.3 only
+//##        // supports single DST rule for all years.  March 15
+//##        // was not in DST before, but with the new rule, it is
+//##        // in DST.
+//#else
+        cal.setTime(d11);
+        cal.clear( Calendar.MONTH ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(dM)) {
+            errln("Fail: " + d11 + " clear(MONTH) => expect " +
+                  dM + ", got " + cal.getTime());
+        }
+//#endif
+    }
+
+    public void Test4114578() {
+        int ONE_HOUR = 60*60*1000;
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("PST"));
+        
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 1, 0);
+        long onset = tempcal.getTime().getTime() + ONE_HOUR;
+        tempcal.set(1998, Calendar.OCTOBER, 25, 0, 0);
+        long cease = tempcal.getTime().getTime() + 2*ONE_HOUR;
+
+        boolean fail = false;
+        
+        final int ADD = 1;
+        final int ROLL = 2;
+
+        long[] DATA = {
+            // Start Action Amt Expected_change
+            onset - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            onset,              ADD,     -1,    -ONE_HOUR,
+            onset - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            onset,              ROLL,    -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            cease,              ADD,     -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            cease,              ROLL,    -1,    -ONE_HOUR,
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            Date date = new Date(DATA[i]);
+            int amt = (int) DATA[i+2];
+            long expectedChange = DATA[i+3];
+            
+            log(date.toString());
+            cal.setTime(date);
+
+            switch ((int) DATA[i+1]) {
+            case ADD:
+                log(" add (HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.add(Calendar.HOUR, amt);
+                break;
+            case ROLL:
+                log(" roll(HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.roll(Calendar.HOUR, amt);
+                break;
+            }
+
+            log(cal.getTime().toString());
+
+            long change = cal.getTime().getTime() - date.getTime();
+            if (change != expectedChange) {
+                fail = true;
+                logln(" FAIL");
+            }
+            else logln(" OK");
+        }
+
+        if (fail) errln("Fail: roll/add misbehaves around DST onset/cease");
+    }
+
+    /**
+     * Make sure maximum for HOUR field is 11, not 12.
+     */
+    public void Test4118384() {
+        Calendar cal = Calendar.getInstance();
+        if (cal.getMaximum(Calendar.HOUR) != 11 ||
+            cal.getLeastMaximum(Calendar.HOUR) != 11 ||
+            cal.getActualMaximum(Calendar.HOUR) != 11)
+            errln("Fail: maximum of HOUR field should be 11");
+    }
+
+    /**
+     * Check isLeapYear for BC years.
+     */
+    public void Test4125881() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        cal.clear();
+        for (int y=-20; y<=10; ++y) {
+            cal.set(Calendar.ERA, y < 1 ? GregorianCalendar.BC : GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, y < 1 ? 1 - y : y);
+            logln(y + " = " + fmt.format(cal.getTime()) + " " +
+                               cal.isLeapYear(y));
+            if (cal.isLeapYear(y) != ((y+40)%4 == 0))
+                errln("Leap years broken");
+        }
+    }
+
+    // I am disabling this test -- it is currently failing because of a bug
+    // in Sun's latest change to STZ.getOffset(). I have filed a Sun bug
+    // against this problem.
+
+    // Re-enabled after 'porting' TZ and STZ from java.util to com.ibm.icu.util.
+    /**
+     * Prove that GregorianCalendar is proleptic (it used to cut off at 45 BC,
+     * and not have leap years before then).
+     */
+    public void Test4125892() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        //DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        //fmt = null;
+        cal.clear();
+        cal.set(Calendar.ERA, GregorianCalendar.BC);
+        cal.set(Calendar.YEAR, 81); // 81 BC is a leap year (proleptically)
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        cal.set(Calendar.DATE, 28);
+        cal.add(Calendar.DATE, 1);
+        if (cal.get(Calendar.DATE) != 29 ||
+            !cal.isLeapYear(-80)) // -80 == 81 BC
+            errln("Calendar not proleptic");
+    }
+
+    /**
+     * Calendar and GregorianCalendar hashCode() methods need improvement.
+     * Calendar needs a good implementation that subclasses can override, and
+     * GregorianCalendar should use that implementation.
+     */
+    public void Test4136399() {
+        /*
+         * Note: This test is actually more strict than it has to be.
+         * Technically, there is no requirement that unequal objects have
+         * unequal hashes. We only require equal objects to have equal hashes.
+         * It is desirable for unequal objects to have distributed hashes, but
+         * there is no hard requirement here.
+         * 
+         * In this test we make assumptions about certain attributes of calendar
+         * objects getting represented in the hash, which need not always be the
+         * case (although it does work currently with the given test).
+         */
+        Calendar a = Calendar.getInstance();
+        Calendar b = (Calendar)a.clone();
+        if (a.hashCode() != b.hashCode()) {
+            errln("Calendar hash code unequal for cloned objects");
+        }
+        TimeZone atz1 = a.getTimeZone();
+        TimeZone atz2 = (TimeZone)atz1.clone();
+        if(!atz1.equals(atz2)){
+            errln("The clone timezones are not equal");
+        }
+        if(atz1.hashCode()!=atz2.hashCode()){
+            errln("TimeZone hash code unequal for cloned objects");
+        }
+        b.setMinimalDaysInFirstWeek(7 - a.getMinimalDaysInFirstWeek());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores minimal days in first week");
+        }
+        b.setMinimalDaysInFirstWeek(a.getMinimalDaysInFirstWeek());
+
+        b.setFirstDayOfWeek((a.getFirstDayOfWeek() % 7) + 1); // Next day
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores first day of week");
+        }
+        b.setFirstDayOfWeek(a.getFirstDayOfWeek());
+
+        b.setLenient(!a.isLenient());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores lenient setting");
+        }
+        b.setLenient(a.isLenient());
+        
+        // Assume getTimeZone() returns a reference, not a clone
+        // of a reference -- this is true as of this writing
+        TimeZone atz = a.getTimeZone();
+        TimeZone btz = b.getTimeZone();
+
+        btz.setRawOffset(atz.getRawOffset() + 60*60*1000);
+        if(atz.hashCode()== btz.hashCode()){
+            errln(atz.hashCode()+"=="+btz.hashCode());
+        }
+        if (a.getTimeZone()!= b.getTimeZone() && a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores zone");
+        }
+        b.getTimeZone().setRawOffset(a.getTimeZone().getRawOffset());
+
+        GregorianCalendar c = new GregorianCalendar();
+        GregorianCalendar d = (GregorianCalendar)c.clone();
+        if (c.hashCode() != d.hashCode()) {
+            errln("GregorianCalendar hash code unequal for clones objects");
+        }
+        Date cutover = c.getGregorianChange();
+        d.setGregorianChange(new Date(cutover.getTime() + 24*60*60*1000));
+        if (c.hashCode() == d.hashCode()) {
+            errln("GregorianCalendar hash code ignores cutover");
+        }        
+    }
+
+    /**
+     * GregorianCalendar.equals() ignores cutover date
+     */
+    public void Test4141665() {
+        GregorianCalendar cal = new GregorianCalendar();
+        GregorianCalendar cal2 = (GregorianCalendar)cal.clone();
+        Date cut = cal.getGregorianChange();
+        Date cut2 = new Date(cut.getTime() + 100*24*60*60*1000L); // 100 days
+                                                                  // later
+        if (!cal.equals(cal2)) {
+            errln("Cloned GregorianCalendars not equal");
+        }
+        cal2.setGregorianChange(cut2);
+        if (cal.equals(cal2)) {
+            errln("GregorianCalendar.equals() ignores cutover");
+        }
+    }
+    
+    /**
+     * Bug states that ArrayIndexOutOfBoundsException is thrown by
+     * GregorianCalendar.roll() when IllegalArgumentException should be.
+     */
+    public void Test4142933() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        try {
+            calendar.roll(-1, true);
+            errln("Test failed, no exception trown");
+        }
+        catch (IllegalArgumentException e) {
+            // OK: Do nothing
+            // logln("Test passed");
+            System.out.print("");
+        }
+        catch (Exception e) {
+            errln("Test failed. Unexpected exception is thrown: " + e);
+            e.printStackTrace();
+        } 
+    }
+
+    /**
+     * GregorianCalendar handling of Dates Long.MIN_VALUE and Long.MAX_VALUE is
+     * confusing; unless the time zone has a raw offset of zero, one or the
+     * other of these will wrap. We've modified the test given in the bug report
+     * to therefore only check the behavior of a calendar with a zero raw offset
+     * zone.
+     */
+    public void Test4145158() {
+        GregorianCalendar calendar = new GregorianCalendar();
+
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+        calendar.setTime(new Date(Long.MIN_VALUE));
+        int year1 = calendar.get(Calendar.YEAR);
+        int era1 = calendar.get(Calendar.ERA);
+        
+        calendar.setTime(new Date(Long.MAX_VALUE));
+        int year2 = calendar.get(Calendar.YEAR);
+        int era2 = calendar.get(Calendar.ERA);
+        
+        if (year1 == year2 && era1 == era2) {
+            errln("Fail: Long.MIN_VALUE or Long.MAX_VALUE wrapping around");
+        }
+    }
+
+    /**
+     * Maximum value for YEAR field wrong.
+     */
+    public void Test4145983() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+        Date[] DATES = { new Date(Long.MAX_VALUE), new Date(Long.MIN_VALUE) };
+        for (int i=0; i<DATES.length; ++i) {
+            calendar.setTime(DATES[i]);
+            int year = calendar.get(Calendar.YEAR);
+            int maxYear = calendar.getMaximum(Calendar.YEAR);
+            if (year > maxYear) {
+                errln("Failed for "+DATES[i].getTime()+" ms: year=" +
+                      year + ", maxYear=" + maxYear);
+            }
+        }
+    }
+
+    /**
+     * This is a bug in the validation code of GregorianCalendar. As reported,
+     * the bug seems worse than it really is, due to a bug in the way the bug
+     * report test was written. In reality the bug is restricted to the
+     * DAY_OF_YEAR field. - liu 6/29/98
+     */
+    public void Test4147269() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setLenient(false);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1996, Calendar.JANUARY, 3); // Arbitrary date
+        Date date = tempcal.getTime(); 
+        for (int field = 0; field < calendar.getFieldCount(); field++) {
+            calendar.setTime(date);
+            // Note: In the bug report, getActualMaximum() was called instead
+            // of getMaximum() -- this was an error. The validation code doesn't
+            // use getActualMaximum(), since that's too costly.
+            int max = calendar.getMaximum(field);
+            int value = max+1;
+            calendar.set(field, value); 
+            try {
+                calendar.getTime(); // Force time computation
+                // We expect an exception to be thrown. If we fall through
+                // to the next line, then we have a bug.
+                errln("Test failed with field " + FIELD_NAME[field] +
+                      ", date before: " + date +
+                      ", date after: " + calendar.getTime() +
+                      ", value: " + value + " (max = " + max +")");
+            } catch (IllegalArgumentException e) {
+                System.out.print("");
+            } 
+        }
+    }
+
+    /**
+     * Reported bug is that a GregorianCalendar with a cutover of
+     * Date(Long.MAX_VALUE) doesn't behave as a pure Julian calendar. CANNOT
+     * REPRODUCE THIS BUG
+     */
+    public void Test4149677() {
+        TimeZone[] zones = { TimeZone.getTimeZone("GMT"),
+                             TimeZone.getTimeZone("PST"),
+                             TimeZone.getTimeZone("EAT") };
+        for (int i=0; i<zones.length; ++i) {
+            GregorianCalendar calendar = new GregorianCalendar(zones[i]);
+
+            // Make sure extreme values don't wrap around
+            calendar.setTime(new Date(Long.MIN_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.BC) {
+                errln("Fail: Long.MIN_VALUE ms has an AD year");
+            }
+            calendar.setTime(new Date(Long.MAX_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.AD) {
+                errln("Fail: Long.MAX_VALUE ms has a BC year");
+            }
+
+            calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+            // to obtain a pure Julian calendar
+            
+            boolean is100Leap = calendar.isLeapYear(100);
+            if (!is100Leap) {
+                errln("test failed with zone " + zones[i].getID());
+                errln(" cutover date is Calendar.MAX_DATE");
+                errln(" isLeapYear(100) returns: " + is100Leap);
+            }
+        }
+    }
+
+    /**
+     * Calendar and Date HOUR broken. If HOUR is out-of-range, Calendar and Date
+     * classes will misbehave.
+     */
+    public void Test4162587() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        TimeZone.setDefault(tz);
+        GregorianCalendar cal = new GregorianCalendar(tz);
+        Date d;
+        
+        for (int i=0; i<5; ++i) {
+            if (i>0) logln("---");
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 5, i, 0);
+            d = cal.getTime();
+            String s0 = d.toString();
+            logln("0 " + i + ": " + s0);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 4, i+24, 0);
+            d = cal.getTime();
+            String sPlus = d.toString();
+            logln("+ " + i + ": " + sPlus);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 6, i-24, 0);
+            d = cal.getTime();
+            String sMinus = d.toString();
+            logln("- " + i + ": " + sMinus);
+
+            if (!s0.equals(sPlus) || !s0.equals(sMinus)) {
+                errln("Fail: All three lines must match");
+            }
+        }
+    }
+
+    /**
+     * Adding 12 months behaves differently from adding 1 year
+     */
+    public void Test4165343() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, Calendar.FEBRUARY, 29);
+        Date start = calendar.getTime();
+        logln("init date: " + start);
+        calendar.add(Calendar.MONTH, 12); 
+        Date date1 = calendar.getTime();
+        logln("after adding 12 months: " + date1);
+        calendar.setTime(start);
+        calendar.add(Calendar.YEAR, 1);
+        Date date2 = calendar.getTime();
+        logln("after adding one year : " + date2);
+        if (date1.equals(date2)) {
+            logln("Test passed");
+        } else {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * GregorianCalendar.getActualMaximum() does not account for first day of
+     * week.
+     */
+    public void Test4166109() {
+        /*
+         * Test month:
+         * 
+         * March 1998 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+         * 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
+         */
+        boolean passed = true;
+        int field = Calendar.WEEK_OF_MONTH;
+
+        GregorianCalendar calendar = new GregorianCalendar(Locale.US);
+        calendar.set(1998, Calendar.MARCH, 1);
+        calendar.setMinimalDaysInFirstWeek(1);
+        logln("Date:  " + calendar.getTime());
+
+        int firstInMonth = calendar.get(Calendar.DAY_OF_MONTH);
+
+        for (int firstInWeek = Calendar.SUNDAY; firstInWeek <= Calendar.SATURDAY; firstInWeek++) {
+            calendar.setFirstDayOfWeek(firstInWeek);
+            int returned = calendar.getActualMaximum(field);
+            int expected = (31 + ((firstInMonth - firstInWeek + 7)% 7) + 6) / 7;
+
+            logln("First day of week = " + firstInWeek +
+                  "  getActualMaximum(WEEK_OF_MONTH) = " + returned +
+                  "  expected = " + expected +
+                  ((returned == expected) ? "  ok" : "  FAIL"));
+
+            if (returned != expected) {
+                passed = false;
+            }
+        }
+        if (!passed) {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * Calendar.getActualMaximum(YEAR) works wrong.
+     */
+    public void Test4167060() {
+        int field = Calendar.YEAR;
+        DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy G",
+                                                 Locale.US);
+
+        GregorianCalendar calendars[] = {
+            new GregorianCalendar(100, Calendar.NOVEMBER, 1),
+            new GregorianCalendar(-99 /* 100BC */, Calendar.JANUARY, 1),
+            new GregorianCalendar(1996, Calendar.FEBRUARY, 29),
+        };
+
+        String[] id = { "Hybrid", "Gregorian", "Julian" };
+
+        for (int k=0; k<3; ++k) {
+            logln("--- " + id[k] + " ---");
+
+            for (int j=0; j<calendars.length; ++j) {
+                GregorianCalendar calendar = calendars[j];
+                if (k == 1) {
+                    calendar.setGregorianChange(new Date(Long.MIN_VALUE));
+                } else if (k == 2) {
+                    calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+                }
+
+                format.setCalendar((Calendar)calendar.clone());
+
+                Date dateBefore = calendar.getTime();
+
+                int maxYear = calendar.getActualMaximum(field);
+                logln("maxYear: " + maxYear + " for " + format.format(calendar.getTime()));
+                logln("date before: " + format.format(dateBefore));
+
+                int years[] = {2000, maxYear-1, maxYear, maxYear+1};
+
+                for (int i = 0; i < years.length; i++) {
+                    boolean valid = years[i] <= maxYear;
+                    calendar.set(field, years[i]);
+                    Date dateAfter = calendar.getTime();
+                    int newYear = calendar.get(field);
+                    calendar.setTime(dateBefore); // restore calendar for next
+                                                  // use
+
+                    logln(" Year " + years[i] + (valid? " ok " : " bad") +
+                          " => " + format.format(dateAfter));
+                    if (valid && newYear != years[i]) {
+                        errln("  FAIL: " + newYear + " should be valid; date, month and time shouldn't change");
+                    } else if (!valid && newYear == years[i]) {
+                        // We no longer require strict year maxima. That is, the
+                        // calendar
+                        // algorithm may work for values > the stated maximum.
+                        //errln(" FAIL: " + newYear + " should be invalid");
+                        logln("  Note: " + newYear + " > maximum, but still valid");
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar.roll broken This bug relies on the TimeZone bug 4173604 to also
+     * be fixed.
+     */
+    public void Test4173516() {
+        int fieldsList[][] = {
+            { 1997, Calendar.FEBRUARY,  1, 10, 45, 15, 900 },
+            { 1999, Calendar.DECEMBER, 22, 23, 59, 59, 999 }
+        };
+        int limit = 40;
+        GregorianCalendar cal = new GregorianCalendar();
+
+        cal.setTime(new Date(0));
+        cal.roll(Calendar.HOUR,  0x7F000000);
+        cal.roll(Calendar.HOUR, -0x7F000000);
+        if (cal.getTime().getTime() != 0) {
+            errln("Hour rolling broken");
+        }
+
+        for (int op=0; op<2; ++op) {
+            logln("Testing GregorianCalendar " +
+                  (op==0 ? "add" : "roll"));
+            for (int field=0; field < cal.getFieldCount(); ++field) {
+                if (field != Calendar.ZONE_OFFSET &&
+                    field != Calendar.DST_OFFSET) {
+                    for (int j=0; j<fieldsList.length; ++j) {
+                        int fields[] = fieldsList[j];
+                        cal.clear();
+                        cal.set(fields[0], fields[1], fields[2],
+                                fields[3], fields[4], fields[5]);
+                        cal.set(Calendar.MILLISECOND, fields[6]);
+                        for (int i = 0; i < 2*limit; i++) {
+                            if (op == 0) {
+                                cal.add(field, i < limit ? 1 : -1);
+                            } else {
+                                cal.roll(field, i < limit ? 1 : -1);
+                            }
+                        }
+                        if (cal.get(Calendar.YEAR) != fields[0] ||
+                            cal.get(Calendar.MONTH) != fields[1] ||
+                            cal.get(Calendar.DATE) != fields[2] ||
+                            cal.get(Calendar.HOUR_OF_DAY) != fields[3] ||
+                            cal.get(Calendar.MINUTE) != fields[4] ||
+                            cal.get(Calendar.SECOND) != fields[5] ||
+                            cal.get(Calendar.MILLISECOND) != fields[6]) {
+                            errln("Field " + field +
+                                  " (" + FIELD_NAME[field] +
+                                  ") FAIL, expected " +
+                                  fields[0] +
+                                  "/" + (fields[1] + 1) +
+                                  "/" + fields[2] +
+                                  " " + fields[3] +
+                                  ":" + fields[4] +
+                                  ":" + fields[5] +
+                                  "." + fields[6] +
+                                  ", got " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            cal.clear();
+                            cal.set(fields[0], fields[1], fields[2],
+                                    fields[3], fields[4], fields[5]);
+                            cal.set(Calendar.MILLISECOND, fields[6]);
+                            logln("Start date: " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            long prev = cal.getTime().getTime();
+                            for (int i = 0; i < 2*limit; i++) {
+                                if (op == 0) {
+                                    cal.add(field, i < limit ? 1 : -1);
+                                } else {
+                                    cal.roll(field, i < limit ? 1 : -1);
+                                }
+                                long t = cal.getTime().getTime();
+                                long delta = t - prev;
+                                prev = t;
+                                logln((op == 0 ? "add(" : "roll(") + FIELD_NAME[field] +
+                                      (i < limit ? ", +1) => " : ", -1) => ") +
+                                      cal.get(Calendar.YEAR) +
+                                      "/" + (cal.get(Calendar.MONTH) + 1) +
+                                      "/" + cal.get(Calendar.DATE) +
+                                      " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                      ":" + cal.get(Calendar.MINUTE) +
+                                      ":" + cal.get(Calendar.SECOND) +
+                                      "." + cal.get(Calendar.MILLISECOND) +
+                                      " delta=" + delta + " ms");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void Test4174361() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, 1, 29);
+
+        calendar.add(Calendar.MONTH, 10); 
+        //Date date1 = calendar.getTime();
+        //date1 = null;
+        int d1 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        calendar = new GregorianCalendar(1996, 1, 29);
+        calendar.add(Calendar.MONTH, 11); 
+        //Date date2 = calendar.getTime();
+        //date2 = null;
+        int d2 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        if (d1 != d2) {
+            errln("adding months to Feb 29 broken");
+        }
+    }
+
+    /**
+     * Calendar does not update field values when setTimeZone is called.
+     */
+    public void Test4177484() {
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        TimeZone EST = TimeZone.getTimeZone("EST");
+
+        Calendar cal = Calendar.getInstance(PST, Locale.US);
+        cal.clear();
+        cal.set(1999, 3, 21, 15, 5, 0); // Arbitrary
+        int h1 = cal.get(Calendar.HOUR_OF_DAY);
+        cal.setTimeZone(EST);
+        int h2 = cal.get(Calendar.HOUR_OF_DAY);
+        if (h1 == h2) {
+            errln("FAIL: Fields not updated after setTimeZone");
+        }
+
+        // getTime() must NOT change when time zone is changed.
+        // getTime() returns zone-independent time in ms.
+        cal.clear();
+        cal.setTimeZone(PST);
+        cal.set(Calendar.HOUR_OF_DAY, 10);
+        Date pst10 = cal.getTime();
+        cal.setTimeZone(EST);
+        Date est10 = cal.getTime();
+        if (!pst10.equals(est10)) {
+            errln("FAIL: setTimeZone changed time");
+        }
+    }
+
+    /**
+     * Week of year is wrong at the start and end of the year.
+     */
+    public void Test4197699() {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setFirstDayOfWeek(Calendar.MONDAY);
+        cal.setMinimalDaysInFirstWeek(4);
+        DateFormat fmt = new SimpleDateFormat("E dd MMM yyyy  'DOY='D 'WOY='w");
+        fmt.setCalendar(cal);
+
+        int[] DATA = {
+            2000,  Calendar.JANUARY,   1,   52,
+            2001,  Calendar.DECEMBER,  31,  1,
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            cal.set(DATA[i++], DATA[i++], DATA[i++]);
+            int expWOY = DATA[i++];
+            int actWOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (expWOY == actWOY) {
+                logln("Ok: " + fmt.format(cal.getTime()));
+            } else {
+                errln("FAIL: " + fmt.format(cal.getTime())
+                      + ", expected WOY=" + expWOY);
+                cal.add(Calendar.DATE, -8);
+                for (int j=0; j<14; ++j) {
+                    cal.add(Calendar.DATE, 1);
+                    logln(fmt.format(cal.getTime()));
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar DAY_OF_WEEK_IN_MONTH fields->time broken. The problem is in the
+     * field disambiguation code in GregorianCalendar. This code is supposed to
+     * choose the most recent set of fields among the following:
+     * 
+     * MONTH + DAY_OF_MONTH MONTH + WEEK_OF_MONTH + DAY_OF_WEEK MONTH +
+     * DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK DAY_OF_YEAR WEEK_OF_YEAR + DAY_OF_WEEK
+     */
+    public void Test4209071() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+
+        // General field setting test
+        int Y = 1995;
+        
+        Date d[] = new Date[13];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(Y, Calendar.JANUARY, 1);
+        d[0] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 4);
+        d[2] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[3] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[4] = tempcal.getTime();
+        tempcal.set(Y-1, Calendar.DECEMBER, 22);
+        d[5] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[6] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[7] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[8] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 6);
+        d[9] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 13);
+        d[10] = tempcal.getTime();
+        tempcal.set(Y, Calendar.AUGUST, 10);
+        d[11] = tempcal.getTime();
+        tempcal.set(Y, Calendar.DECEMBER, 7);
+        d[12] = tempcal.getTime();
+
+        Object[] FIELD_DATA = {
+            // Add new test cases as needed.
+
+            // 0
+            new int[] {}, d[0],
+            // 1
+            new int[] { Calendar.MONTH, Calendar.MARCH }, d[1],
+            // 2
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY }, d[2],
+            // 3
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.DAY_OF_MONTH, 18, }, d[3],
+            // 4
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[4],
+            // 5 (WOM -1 is in previous month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[5],
+            // 6
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, 4,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[6],
+            // 7 (DIM -1 is in same month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[7],
+            // 8
+            new int[] { Calendar.WEEK_OF_YEAR, 9,
+                        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY, }, d[8],
+            // 9
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, 1,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[9],
+            // 10
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.WEEK_OF_MONTH, 2,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[10],
+            // 11
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_MONTH, 15,
+                        Calendar.DAY_OF_YEAR, 222, }, d[11],
+            // 12
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.MONTH, Calendar.DECEMBER, }, d[12],
+        };
+
+        for (int i=0; i<FIELD_DATA.length; i+=2) {
+            int[] fields = (int[]) FIELD_DATA[i];
+            Date exp = (Date) FIELD_DATA[i+1];
+            
+            cal.clear();
+            cal.set(Calendar.YEAR, Y);
+            for (int j=0; j<fields.length; j+=2) {
+                cal.set(fields[j], fields[j+1]);
+            }
+            
+            Date act = cal.getTime();
+            if (!act.equals(exp)) {
+                errln("FAIL: Test " + (i/2) + " got " + act +
+                      ", want " + exp +
+                      " (see test/java/util/Calendar/CalendarRegression.java");
+            }
+        }
+
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[0] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 23);
+        d[2] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[3] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[4] = tempcal.getTime();
+        tempcal.set(1996, Calendar.DECEMBER, 8);
+        d[5] = tempcal.getTime();
+        // Test specific failure reported in bug
+        Object[] DATA = { 
+            new Integer(1), d[0], new Integer(4), d[1],
+            new Integer(8), d[2], new Integer(-1), d[3],
+            new Integer(-4), d[4], new Integer(-8), d[5],
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            cal.clear();
+            cal.set(Calendar.DAY_OF_WEEK_IN_MONTH,
+                    ((Number) DATA[i]).intValue());
+            cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            cal.set(Calendar.MONTH, Calendar.JANUARY);
+            cal.set(Calendar.YEAR, 1997);
+            Date actual = cal.getTime();
+            if (!actual.equals(DATA[i+1])) {
+                errln("FAIL: Sunday " + DATA[i] +
+                      " of Jan 1997 -> " + actual +
+                      ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * WEEK_OF_YEAR computed incorrectly. A failure of this test can indicate a
+     * problem in several different places in the
+     */
+    public void Test4288792() throws Exception 
+    {
+    TimeZone savedTZ = TimeZone.getDefault();
+    TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+    GregorianCalendar cal = new GregorianCalendar();
+        
+    for (int i = 1900; i < 2100; i++) {
+        for (int j1 = 1; j1 <= 7; j1++) {
+        // Loop for MinimalDaysInFirstWeek: 1..7
+        for (int j = Calendar.SUNDAY; j <= Calendar.SATURDAY; j++) {
+            // Loop for FirstDayOfWeek: SUNDAY..SATURDAY
+            cal.clear();
+            cal.setMinimalDaysInFirstWeek(j1);
+            cal.setFirstDayOfWeek(j);
+                    // Set the calendar to the first day of the last week
+                    // of the year. This may overlap some of the start of
+                    // the next year; that is, the last week of 1999 may
+                    // include some of January 2000. Use the add() method
+                    // to advance through the week. For each day, call
+                    // get(WEEK_OF_YEAR). The result should be the same
+                    // for the whole week. Note that a bug in
+                    // getActualMaximum() will break this test.
+            cal.set(Calendar.YEAR, i);
+            int maxWeek = cal.getActualMaximum(Calendar.WEEK_OF_YEAR);
+            cal.set(Calendar.WEEK_OF_YEAR, maxWeek);
+            cal.set(Calendar.DAY_OF_WEEK, j);
+            for (int k = 1; k < 7; k++) {
+            cal.add(Calendar.DATE, 1);
+            int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (WOY != maxWeek) {
+                errln(cal.getTime() + ",got=" + WOY
+                  + ",expected=" + maxWeek 
+                  + ",min=" + j1 + ",first=" + j);
+            }
+            }
+                    // Now advance the calendar one more day. This should
+                    // put it at the first day of week 1 of the next year.
+            cal.add(Calendar.DATE, 1);
+            int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (WOY != 1) {
+            errln(cal.getTime() + ",got=" + WOY 
+                  + ",expected=1,min=" + j1 + ",first" + j);
+            }
+        }
+        }
+    }
+    TimeZone.setDefault(savedTZ);
+    }
+
+    /**
+     * Test fieldDifference().
+     */
+    public void TestJ438() throws Exception {
+        int DATA[] = {
+            2000, Calendar.JANUARY, 20,   2010, Calendar.JUNE, 15,
+            2010, Calendar.JUNE, 15,      2000, Calendar.JANUARY, 20,
+            1964, Calendar.SEPTEMBER, 7,  1999, Calendar.JUNE, 4,
+            1999, Calendar.JUNE, 4,       1964, Calendar.SEPTEMBER, 7,
+        };
+        Calendar cal = Calendar.getInstance(Locale.US);
+        for (int i=0; i<DATA.length; i+=6) {
+            int y1 = DATA[i];
+            int m1 = DATA[i+1];
+            int d1 = DATA[i+2];
+            int y2 = DATA[i+3];
+            int m2 = DATA[i+4];
+            int d2 = DATA[i+5];
+
+            cal.clear();
+            cal.set(y1, m1, d1);
+            Date date1 = cal.getTime();
+            cal.set(y2, m2, d2);
+            Date date2 = cal.getTime();
+
+            cal.setTime(date1);
+            int dy = cal.fieldDifference(date2, Calendar.YEAR);
+            int dm = cal.fieldDifference(date2, Calendar.MONTH);
+            int dd = cal.fieldDifference(date2, Calendar.DATE);
+
+            logln("" + date2 + " - " + date1 + " = " +
+                  dy + "y " + dm + "m " + dd + "d");
+
+            cal.setTime(date1);
+            cal.add(Calendar.YEAR, dy);
+            cal.add(Calendar.MONTH, dm);
+            cal.add(Calendar.DATE, dd);
+            Date date22 = cal.getTime();
+            if (!date2.equals(date22)) {
+                errln("FAIL: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22 + ", exp " + date2);
+            } else {
+                logln("Ok: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22);
+            }
+        }
+    }
+    
+    public void TestT5555() throws Exception
+    {
+        Calendar cal = Calendar.getInstance();
+        
+        // Set date to Wednesday, February 21, 2007
+        cal.set(2007, Calendar.FEBRUARY, 21);
+
+        try {
+            // Advance month by three years
+            cal.add(Calendar.MONTH, 36);
+            
+            // Move to last Wednesday of month.
+            cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, -1);
+            
+            cal.getTime();
+        } catch (Exception e) {
+            errln("Got an exception calling getTime().");
+        }
+        
+        int yy, mm, dd, ee;
+        
+        yy = cal.get(Calendar.YEAR);
+        mm = cal.get(Calendar.MONTH);
+        dd = cal.get(Calendar.DATE);
+        ee = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
+        
+        if (yy != 2010 || mm != Calendar.FEBRUARY || dd != 24 || ee != Calendar.WEDNESDAY) {
+            errln("Got date " + yy + "/" + (mm + 1) + "/" + dd + ", expected 2010/2/24");
+        }
+    }
+
+    /**
+     * Set behavior of DST_OFFSET field. ICU4J Jitterbug 9.
+     */
+    public void TestJ9() {
+        int HOURS = 60*60*1000;
+        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("PST"),
+                                             Locale.US);
+
+        final int END_FIELDS = 0x1234;
+
+        int[] DATA = {
+            // With no explicit ZONE/DST expect 12:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // Normal ZONE/DST for June 1 Pacific is 8:00/1:00
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // With ZONE/DST of 8:00/0:30 expect time of 12:30 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            0, 30, // expected hour, min
+
+            // With ZONE/DST of 8:00/UNSET expect time of 1:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            END_FIELDS,
+            1, 0, // expected hour, min
+
+            // With ZONE/DST of UNSET/0:30 expect 4:30 pm (day before)
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            16, 30, // expected hour, min
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            int start = i;
+            cal.clear();
+
+            // Set fields
+            while (DATA[i] != END_FIELDS) {
+                cal.set(DATA[i++], DATA[i++]);
+            }
+            ++i; // skip over END_FIELDS
+
+            // Get hour/minute
+            int h = cal.get(Calendar.HOUR_OF_DAY);
+            int m = cal.get(Calendar.MINUTE);
+
+            // Check
+            if (h != DATA[i] || m != DATA[i+1]) {
+                errln("Fail: expected " + DATA[i] + ":" + DATA[i+1] +
+                      ", got " + h + ":" + m + " after:");
+                while (DATA[start] != END_FIELDS) {
+                    logln("set(" + FIELD_NAME[DATA[start++]] +
+                          ", " + DATA[start++] + ");");
+                }
+            }
+
+            i += 2; // skip over expected hour, min
+        }
+    }
+
+    /**
+     * DateFormat class mistakes date style and time style as follows: -
+     * DateFormat.getDateTimeInstance takes date style as time style, and time
+     * style as date style - If a Calendar is passed to
+     * DateFormat.getDateInstance, it returns time instance - If a Calendar is
+     * passed to DateFormat.getTimeInstance, it returns date instance
+     */
+    public void TestDateFormatFactoryJ26() {
+        TimeZone zone = TimeZone.getDefault();
+        try {
+            Locale loc = Locale.US;
+            TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.set(2001, Calendar.APRIL, 5, 17, 43, 53);
+            Date date = tempcal.getTime();
+            Calendar cal = Calendar.getInstance(loc);
+            Object[] DATA = {
+                DateFormat.getDateInstance(DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+
+                DateFormat.getDateInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(cal, DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+            
+                cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc),
+                "cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc)",
+                "4/5/01 5:43:53 PM PT",
+
+                cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc),
+                "cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+            };
+            for (int i=0; i<DATA.length; i+=3) {
+                DateFormat df = (DateFormat) DATA[i];
+                String desc = (String) DATA[i+1];
+                String exp = (String) DATA[i+2];
+                String got = df.format(date);
+                if (got.equals(exp)) {
+                    logln("Ok: " + desc + " => " + got);
+                } else {
+                    errln("FAIL: " + desc + " => " + got + ", expected " + exp);
+                }
+            }
+        } finally {
+            TimeZone.setDefault(zone);
+        }
+    }
+
+    public void TestRegistration() {
+        /*
+         * Set names = Calendar.getCalendarFactoryNames();
+         * 
+         * TimeZone tz = TimeZone.getDefault(); Locale loc =
+         * Locale.getDefault(); Iterator iter = names.iterator(); while
+         * (iter.hasNext()) { String name = (String)iter.next(); logln("Testing
+         * factory: " + name);
+         * 
+         * Calendar cal = Calendar.getInstance(tz, loc, name); logln("Calendar
+         * class: " + cal.getClass());
+         * 
+         * DateFormat fmt = cal.getDateTimeFormat(DateFormat.LONG,
+         * DateFormat.LONG, loc);
+         * 
+         * logln("Date: " + fmt.format(cal.getTime())); }
+         *  // register new default for our locale logln("\nTesting
+         * registration"); loc = new Locale("en", "US"); Object key =
+         * Calendar.register(JapaneseCalendar.factory(), loc, true);
+         * 
+         * loc = new Locale("en", "US", "TEST"); Calendar cal =
+         * Calendar.getInstance(loc); logln("Calendar class: " +
+         * cal.getClass()); DateFormat fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         *  // force to use other default anyway logln("\nOverride
+         * registration"); cal = Calendar.getInstance(tz, loc, "Gregorian"); fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         *  // unregister default logln("\nUnregistration"); logln("Unregister
+         * returned: " + Calendar.unregister(key)); cal =
+         * Calendar.getInstance(tz, loc, "Gregorian"); fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         */
+    }
+
+    /**
+     * test serialize-and-modify.
+     * @throws ClassNotFoundException 
+     */
+    public void TestSerialization3474() {
+        try {
+            ByteArrayOutputStream icuStream = new ByteArrayOutputStream();
+    
+            logln("icu Calendar");
+            
+            com.ibm.icu.util.GregorianCalendar icuCalendar =
+                new com.ibm.icu.util.GregorianCalendar();
+            
+            icuCalendar.setTimeInMillis(1187912555931L);
+            long expectMillis = 1187912520931L; // with seconds (not ms) cleared.
+            
+            logln("instantiated: "+icuCalendar);
+            logln("getMillis: "+icuCalendar.getTimeInMillis());
+            icuCalendar.set(com.ibm.icu.util.GregorianCalendar.SECOND, 0);
+            logln("setSecond=0: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" but got "+gotMillis);
+                } else {
+                    logln("getMillis: "+gotMillis);
+                }
+            }
+            ObjectOutputStream icuOut =
+                new ObjectOutputStream(icuStream);
+            icuOut.writeObject(icuCalendar);
+            icuOut.flush();
+            icuOut.close();
+            
+            ObjectInputStream icuIn =
+                new ObjectInputStream(new ByteArrayInputStream(icuStream.toByteArray()));
+            icuCalendar = null;
+            icuCalendar = (com.ibm.icu.util.GregorianCalendar)icuIn.readObject();
+            
+            logln("serialized back in: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" but got "+gotMillis);
+                } else {
+                    logln("getMillis: "+gotMillis);
+                }
+            }
+            
+            icuCalendar.set(com.ibm.icu.util.GregorianCalendar.SECOND, 0);
+                    
+            logln("setSecond=0: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" after stream and setSecond but got "+gotMillis);
+                } else {
+                    logln("getMillis after stream and setSecond: "+gotMillis);
+                }
+            }
+        } catch(IOException e) {
+            errln(e.toString());
+            e.printStackTrace();
+        } catch(ClassNotFoundException cnf) {
+            errln(cnf.toString());
+            cnf.printStackTrace();
+        }
+
+        // JDK works correctly, etc etc.  
+//        ByteArrayOutputStream jdkStream = new ByteArrayOutputStream();
+
+//        logln("\nSUN Calendar");
+//        
+//        java.util.GregorianCalendar sunCalendar =
+//            new java.util.GregorianCalendar();
+//        
+//        logln("instanzieren: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        sunCalendar.set(java.util.GregorianCalendar.SECOND, 0);
+//        logln("setSecond=0: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        
+//        ObjectOutputStream sunOut =
+//            new ObjectOutputStream(jdkStream);
+//        sunOut.writeObject(sunCalendar);
+//        sunOut.flush();
+//        sunOut.close();
+//        
+//        ObjectInputStream sunIn =
+//            new ObjectInputStream(new ByteArrayInputStream(jdkStream.toByteArray()));
+//        sunCalendar = null;
+//        sunCalendar = (java.util.GregorianCalendar)sunIn.readObject();
+//        
+//        logln("serialized: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        
+//        sunCalendar.set(java.util.GregorianCalendar.SECOND, 0);
+//        logln("setSecond=0: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+        
+    }
+
+    public void TestYearJump3279() {
+        final long time = 1041148800000L;
+        Calendar c = new GregorianCalendar();
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US);
+
+        c.setTimeInMillis(time);
+        int year1 = c.get(Calendar.YEAR);
+        
+        logln("time: " + fmt.format(new Date(c.getTimeInMillis())));
+
+        logln("setting DOW to " + c.getFirstDayOfWeek());
+        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
+        logln("week: " + c.getTime());
+        logln("week adjust: " + fmt.format(new Date(c.getTimeInMillis())));
+        int year2 = c.get(Calendar.YEAR);
+        
+        if(year1 != year2) {
+            errln("Error: adjusted day of week, and year jumped from " + year1 + " to " + year2);
+        } else {
+            logln("Year remained " + year2 + " - PASS.");
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarTest.java b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
new file mode 100644
index 0000000..c25c6e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+import com.ibm.icu.util.*;
+
+/**
+ * A base class for classes that test individual Calendar subclasses.
+ * Defines various useful utility methods and constants
+ */
+public class CalendarTest extends TestFmwk {
+    
+    // Constants for use by subclasses, solely to save typing
+    public final static int SUN = Calendar.SUNDAY;
+    public final static int MON = Calendar.MONDAY;
+    public final static int TUE = Calendar.TUESDAY;
+    public final static int WED = Calendar.WEDNESDAY;
+    public final static int THU = Calendar.THURSDAY;
+    public final static int FRI = Calendar.FRIDAY;
+    public final static int SAT = Calendar.SATURDAY;
+
+    public final static int ERA     = Calendar.ERA;
+    public final static int YEAR    = Calendar.YEAR;
+    public final static int MONTH   = Calendar.MONTH;
+    public final static int DATE    = Calendar.DATE;
+    public final static int HOUR    = Calendar.HOUR;
+    public final static int MINUTE  = Calendar.MINUTE;
+    public final static int SECOND  = Calendar.SECOND;
+    public final static int DOY     = Calendar.DAY_OF_YEAR;
+    public final static int WOY     = Calendar.WEEK_OF_YEAR;
+    public final static int WOM     = Calendar.WEEK_OF_MONTH;
+    public final static int DOW     = Calendar.DAY_OF_WEEK;
+    public final static int DOWM    = Calendar.DAY_OF_WEEK_IN_MONTH;
+    
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+        "IS_LEAP_MONTH" // (ChineseCalendar only)
+    };
+
+    public static final String fieldName(int f) {
+        return (f>=0 && f<FIELD_NAME.length) ?
+            FIELD_NAME[f] : ("<Field " + f + ">");
+    }
+
+    /**
+     * Iterates through a list of calendar <code>TestCase</code> objects and
+     * makes sure that the time-to-fields and fields-to-time calculations work
+     * correnctly for the values in each test case.
+     */
+    public void doTestCases(TestCase[] cases, Calendar cal)
+    {
+        cal.setTimeZone(UTC);
+        
+        // Get a format to use for printing dates in the calendar system we're testing
+        DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.SHORT, -1, Locale.getDefault());
+
+        final String pattern = (cal instanceof ChineseCalendar) ?
+            "E MMl/dd/y G HH:mm:ss.S z" :
+            "E, MM/dd/yyyy G HH:mm:ss.S z";
+    
+        ((SimpleDateFormat)format).applyPattern(pattern);
+
+        // This format is used for printing Gregorian dates.
+        DateFormat gregFormat = new SimpleDateFormat(pattern);
+        gregFormat.setTimeZone(UTC);
+
+        GregorianCalendar pureGreg = new GregorianCalendar(UTC);
+        pureGreg.setGregorianChange(new Date(Long.MIN_VALUE));
+        DateFormat pureGregFmt = new SimpleDateFormat("E M/d/yyyy G");
+        pureGregFmt.setCalendar(pureGreg);
+        
+        // Now iterate through the test cases and see what happens
+        for (int i = 0; i < cases.length; i++)
+        {
+            logln("\ntest case: " + i);
+            TestCase test = cases[i];
+            
+            //
+            // First we want to make sure that the millis -> fields calculation works
+            // test.applyTime will call setTime() on the calendar object, and
+            // test.fieldsEqual will retrieve all of the field values and make sure
+            // that they're the same as the ones in the testcase
+            //
+            test.applyTime(cal);
+            if (!test.fieldsEqual(cal, this)) {
+                errln("Fail: (millis=>fields) " +
+                      gregFormat.format(test.getTime()) + " => " +
+                      format.format(cal.getTime()) +
+                      ", expected " + test);
+            }
+
+            //
+            // If that was OK, check the fields -> millis calculation
+            // test.applyFields will set all of the calendar's fields to 
+            // match those in the test case.
+            //
+            cal.clear();
+            test.applyFields(cal);
+            if (!test.equals(cal)) {
+                errln("Fail: (fields=>millis) " + test + " => " +
+                      pureGregFmt.format(cal.getTime()) +
+                      ", expected " + pureGregFmt.format(test.getTime()));
+            }
+        }
+    }
+    
+    static public final boolean ROLL = true;
+    static public final boolean ADD = false;
+    
+    /**
+     * Process test cases for <code>add</code> and <code>roll</code> methods.
+     * Each test case is an array of integers, as follows:
+     * <ul>
+     *  <li>0: input year
+     *  <li>1:       month  (zero-based)
+     *  <li>2:       day
+     *  <li>3: field to roll or add to
+     *  <li>4: amount to roll or add
+     *  <li>5: result year
+     *  <li>6:        month (zero-based)
+     *  <li>7:        day
+     * </ul>
+     * For example:
+     * <pre>
+     *   //       input                add by          output
+     *   //  year  month     day     field amount    year  month     day
+     *   {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },
+     * </pre>
+     *
+     * @param roll  <code>true</code> or <code>ROLL</code> to test the <code>roll</code> method;
+     *              <code>false</code> or <code>ADD</code> to test the <code>add</code method
+     */
+    public void doRollAdd(boolean roll, Calendar cal, int[][] tests)
+    {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+            if (cal instanceof ChineseCalendar) {
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]);
+                cal.set(Calendar.DAY_OF_MONTH, test[2]);
+            } else {
+                cal.set(test[0], test[1], test[2]);
+            }
+            double day0 = getJulianDay(cal);
+            if (roll) {
+                cal.roll(test[3], test[4]);
+            } else {
+                cal.add(test[3], test[4]);
+            }
+            int y = cal.get(cal instanceof ChineseCalendar ?
+                            Calendar.EXTENDED_YEAR : YEAR);
+            if (y != test[5] || cal.get(MONTH) != test[6]
+                    || cal.get(DATE) != test[7])
+            {
+                errln("Fail: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " (" + day0 + ")"
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": expected " + ymdToString(test[5], test[6], test[7])
+                    + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " (" + day0 + ")"
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Test the functions getXxxMinimum() and getXxxMaximum() by marching a
+     * test calendar 'cal' through 'numberOfDays' sequential days starting
+     * with 'startDate'.  For each date, read a field value along with its
+     * reported actual minimum and actual maximum.  These values are
+     * checked against one another as well as against getMinimum(),
+     * getGreatestMinimum(), getLeastMaximum(), and getMaximum().  We
+     * expect to see:
+     *
+     * 1. minimum <= actualMinimum <= greatestMinimum <=
+     *    leastMaximum <= actualMaximum <= maximum
+     *
+     * 2. actualMinimum <= value <= actualMaximum
+     *
+     * Note: In addition to outright failures, this test reports some
+     * results as warnings.  These are not generally of concern, but they
+     * should be evaluated by a human.  To see these, run this test in
+     * verbose mode.
+     * @param cal the calendar to be tested
+     * @param fieldsToTest an array of field values to be tested, e.g., new
+     * int[] { Calendar.MONTH, Calendar.DAY_OF_MONTH }.  It only makes
+     * sense to test the day fields; the time fields are not tested by this
+     * method.  If null, then test all standard fields.
+     * @param startDate the first date to test
+     * @param testDuration if positive, the number of days to be tested.
+     * If negative, the number of seconds to run the test.
+     */
+    public void doLimitsTest(Calendar cal, int[] fieldsToTest,
+                                Date startDate, int testDuration) {
+        GregorianCalendar greg = new GregorianCalendar();
+        greg.setTime(startDate);
+        logln("Start: " + startDate);
+
+        if (fieldsToTest == null) {
+            fieldsToTest = new int[] {
+                Calendar.ERA, Calendar.YEAR, Calendar.MONTH,
+                Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
+                Calendar.DAY_OF_MONTH, Calendar.DAY_OF_YEAR,
+                Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.YEAR_WOY,
+                Calendar.EXTENDED_YEAR
+            };
+        }
+
+        // Keep a record of minima and maxima that we actually see.
+        // These are kept in an array of arrays of hashes.
+        Hashtable[][] limits = new Hashtable[fieldsToTest.length][2];
+        Object nub = new Object(); // Meaningless placeholder
+
+        // This test can run for a long time; show progress.
+        long millis = System.currentTimeMillis();
+        long mark = millis + 5000; // 5 sec
+        millis -= testDuration * 1000; // stop time if testDuration<0
+
+        for (int i=0;
+             testDuration>0 ? i<testDuration
+                            : System.currentTimeMillis()<millis;
+             ++i) {
+            if (System.currentTimeMillis() >= mark) {
+                logln("(" + i + " days)");
+                mark += 5000; // 5 sec
+            }
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            for (int j=0; j<fieldsToTest.length; ++j) {
+                int f = fieldsToTest[j];
+                int v = cal.get(f);
+                int minActual = cal.getActualMinimum(f);
+                int maxActual = cal.getActualMaximum(f);
+                int minLow = cal.getMinimum(f);
+                int minHigh = cal.getGreatestMinimum(f);
+                int maxLow = cal.getLeastMaximum(f);
+                int maxHigh = cal.getMaximum(f);
+
+                // Fetch the hash for this field and keep track of the
+                // minima and maxima.
+                Hashtable[] h = limits[j];
+                if (h[0] == null) {
+                    h[0] = new Hashtable();
+                    h[1] = new Hashtable();
+                }
+                h[0].put(new Integer(minActual), nub);
+                h[1].put(new Integer(maxActual), nub);
+
+                if (minActual < minLow || minActual > minHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for min of " + FIELD_NAME[f] + "(" + f +
+                          ")=" + minLow + ".." + minHigh +
+                          ", actual_min=" + minActual);
+                }
+                if (maxActual < maxLow || maxActual > maxHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for max of " + FIELD_NAME[f] + "(" + f +
+                          ")=" + maxLow + ".." + maxHigh +
+                          ", actual_max=" + maxActual);
+                }
+                if (v < minActual || v > maxActual) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " " + FIELD_NAME[f] + "(" + f + ")=" + v +
+                          ", actual range=" + minActual + ".." + maxActual +
+                          ", allowed=(" + minLow + ".." + minHigh + ")..(" +
+                          maxLow + ".." + maxHigh + ")");
+                }
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+
+        // Check actual maxima and minima seen against ranges returned
+        // by API.
+        StringBuffer buf = new StringBuffer();
+        for (int j=0; j<fieldsToTest.length; ++j) {
+            int f = fieldsToTest[j];
+            buf.setLength(0);
+            buf.append(FIELD_NAME[f]);
+            Hashtable[] h = limits[j];
+            boolean fullRangeSeen = true;
+            for (int k=0; k<2; ++k) {
+                int rangeLow = (k==0) ?
+                    cal.getMinimum(f) : cal.getLeastMaximum(f);
+                int rangeHigh = (k==0) ?
+                    cal.getGreatestMinimum(f) : cal.getMaximum(f);
+                // If either the top of the range or the bottom was never
+                // seen, then there may be a problem.
+                if (h[k].get(new Integer(rangeLow)) == null ||
+                    h[k].get(new Integer(rangeHigh)) == null) {
+                    fullRangeSeen = false;
+                }
+                buf.append(k==0 ? " minima seen=(" : "; maxima seen=(");
+                for (Enumeration e=h[k].keys(); e.hasMoreElements(); ) {
+                    int v = ((Integer) e.nextElement()).intValue();
+                    buf.append(" " + v);
+                }
+                buf.append(") range=" + rangeLow + ".." + rangeHigh);
+            }
+            if (fullRangeSeen) {
+                logln("OK: " + buf.toString());
+            } else {
+                // This may or may not be an error -- if the range of dates
+                // we scan over doesn't happen to contain a minimum or
+                // maximum, it doesn't mean some other range won't.
+                logln("Warning: " + buf.toString());
+            }
+        }
+
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * doLimitsTest with default test duration
+     */
+    public void doLimitsTest(Calendar cal, int[] fieldsToTest, Date startDate) {
+        int testTime = getInclusion() <= 5 ? -3 : -120; // in seconds
+        doLimitsTest(cal, fieldsToTest, startDate, testTime);
+    }
+    
+    /**
+     * Test the functions getMaximum/getGeratestMinimum logically correct.
+     * This method assumes day of week cycle is consistent.
+     * @param cal The calendar instance to be tested.
+     * @param leapMonth true if the calendar system has leap months
+     */
+    public void doTheoreticalLimitsTest(Calendar cal, boolean leapMonth) {
+        int nDOW = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        int maxDOY = cal.getMaximum(Calendar.DAY_OF_YEAR);
+        int lmaxDOW = cal.getLeastMaximum(Calendar.DAY_OF_YEAR);
+        int maxWOY = cal.getMaximum(Calendar.WEEK_OF_YEAR);
+        int lmaxWOY = cal.getLeastMaximum(Calendar.WEEK_OF_YEAR);
+        int maxM = cal.getMaximum(Calendar.MONTH) + 1;
+        int lmaxM = cal.getLeastMaximum(Calendar.MONTH) + 1;
+        int maxDOM = cal.getMaximum(Calendar.DAY_OF_MONTH);
+        int lmaxDOM = cal.getLeastMaximum(Calendar.DAY_OF_MONTH);
+        int maxDOWIM = cal.getMaximum(Calendar.DAY_OF_WEEK_IN_MONTH);
+        int lmaxDOWIM = cal.getLeastMaximum(Calendar.DAY_OF_WEEK_IN_MONTH);
+        int maxWOM = cal.getMaximum(Calendar.WEEK_OF_MONTH);
+        int lmaxWOM = cal.getLeastMaximum(Calendar.WEEK_OF_MONTH);
+        int minDaysInFirstWeek = cal.getMinimalDaysInFirstWeek();
+
+        // Day of year
+        int expected;
+        if (!leapMonth) {
+            expected = maxM*maxDOM;
+            if (maxDOY > expected) {
+                errln("FAIL: Maximum value of DAY_OF_YEAR is too big: " + maxDOY + "/expected: <=" + expected);
+            }
+            expected = lmaxM*lmaxDOM;
+            if (lmaxDOW < expected) {
+                errln("FAIL: Least maximum value of DAY_OF_YEAR is too small: " + lmaxDOW + "/expected: >=" + expected);
+            }
+        }
+
+        // Week of year
+        expected = maxDOY/nDOW + 1;
+        if (maxWOY > expected) {
+            errln("FAIL: Maximum value of WEEK_OF_YEAR is too big: " + maxWOY + "/expected: <=" + expected);
+        }
+        expected = lmaxDOW/nDOW;
+        if (lmaxWOY < expected) {
+            errln("FAIL: Least maximum value of WEEK_OF_YEAR is too small: " + lmaxWOY + "/expected >=" + expected);
+        }
+
+        // Day of week in month
+        expected = (maxDOM + nDOW - 1)/nDOW;
+        if (maxDOWIM != expected) {
+            errln("FAIL: Maximum value of DAY_OF_WEEK_IN_MONTH is incorrect: " + maxDOWIM + "/expected: " + expected);
+        }
+        expected = (lmaxDOM + nDOW - 1)/nDOW;
+        if (lmaxDOWIM != expected) {
+            errln("FAIL: Least maximum value of DAY_OF_WEEK_IN_MONTH is incorrect: " + lmaxDOWIM + "/expected: " + expected);
+        }
+
+        // Week of month
+        expected = (maxDOM + (nDOW - 1) + (nDOW - minDaysInFirstWeek)) / nDOW;
+        if (maxWOM != expected) {
+            errln("FAIL: Maximum value of WEEK_OF_MONTH is incorrect: " + maxWOM + "/expected: " + expected);
+        }
+        expected = (lmaxDOM + (nDOW - minDaysInFirstWeek)) / nDOW;
+        if (lmaxWOM != expected) {
+            errln("FAIL: Least maximum value of WEEK_OF_MONTH is incorrect: " + lmaxWOM + "/expected: " + expected);
+        }
+    }
+    
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int day) {
+        return "" + year + "/" + (month+1) + "/" + day;
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     */
+    static public String ymdToString(Calendar cal) {
+        double day = getJulianDay(cal);
+        if (cal instanceof ChineseCalendar) {
+            return "" + cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                (cal.get(Calendar.MONTH)+1) +
+                (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+                cal.get(Calendar.DATE) + " (" + day + ", time=" + cal.getTimeInMillis() + ")";
+        }
+        return ymdToString(cal.get(Calendar.EXTENDED_YEAR),
+                            cal.get(MONTH), cal.get(DATE)) +
+                            " (" + day + ", time=" + cal.getTimeInMillis() + ")";
+    }
+
+    static double getJulianDay(Calendar cal) {
+        return (cal.getTime().getTime() - JULIAN_EPOCH) / DAY_MS;
+    }
+
+    static final double DAY_MS = 24*60*60*1000.0;
+    static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTest.java b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
new file mode 100644
index 0000000..148d328
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
@@ -0,0 +1,684 @@
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.*;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Test of ChineseCalendar.
+ *
+ * Leap months in this century:
+ * Wed May 23 2001 = 4638-04*-01, Year 18, Cycle 78
+ * Sun Mar 21 2004 = 4641-02*-01, Year 21, Cycle 78
+ * Thu Aug 24 2006 = 4643-07*-01, Year 23, Cycle 78
+ * Tue Jun 23 2009 = 4646-05*-01, Year 26, Cycle 78
+ * Mon May 21 2012 = 4649-04*-01, Year 29, Cycle 78
+ * Fri Oct 24 2014 = 4651-09*-01, Year 31, Cycle 78
+ * Sun Jul 23 2017 = 4654-06*-01, Year 34, Cycle 78
+ * Sat May 23 2020 = 4657-04*-01, Year 37, Cycle 78
+ * Wed Mar 22 2023 = 4660-02*-01, Year 40, Cycle 78
+ * Fri Jul 25 2025 = 4662-06*-01, Year 42, Cycle 78
+ * Fri Jun 23 2028 = 4665-05*-01, Year 45, Cycle 78
+ * Tue Apr 22 2031 = 4668-03*-01, Year 48, Cycle 78
+ * Thu Dec 22 2033 = 4670-11*-01, Year 50, Cycle 78
+ * Wed Jul 23 2036 = 4673-06*-01, Year 53, Cycle 78
+ * Wed Jun 22 2039 = 4676-05*-01, Year 56, Cycle 78
+ * Sat Mar 22 2042 = 4679-02*-01, Year 59, Cycle 78
+ * Tue Aug 23 2044 = 4681-07*-01, Year 01, Cycle 79
+ * Sun Jun 23 2047 = 4684-05*-01, Year 04, Cycle 79
+ * Thu Apr 21 2050 = 4687-03*-01, Year 07, Cycle 79
+ * Mon Sep 23 2052 = 4689-08*-01, Year 09, Cycle 79
+ * Sat Jul 24 2055 = 4692-06*-01, Year 12, Cycle 79
+ * Wed May 22 2058 = 4695-04*-01, Year 15, Cycle 79
+ * Wed Apr 20 2061 = 4698-03*-01, Year 18, Cycle 79
+ * Fri Aug 24 2063 = 4700-07*-01, Year 20, Cycle 79
+ * Wed Jun 23 2066 = 4703-05*-01, Year 23, Cycle 79
+ * Tue May 21 2069 = 4706-04*-01, Year 26, Cycle 79
+ * Thu Sep 24 2071 = 4708-08*-01, Year 28, Cycle 79
+ * Tue Jul 24 2074 = 4711-06*-01, Year 31, Cycle 79
+ * Sat May 22 2077 = 4714-04*-01, Year 34, Cycle 79
+ * Sat Apr 20 2080 = 4717-03*-01, Year 37, Cycle 79
+ * Mon Aug 24 2082 = 4719-07*-01, Year 39, Cycle 79
+ * Fri Jun 22 2085 = 4722-05*-01, Year 42, Cycle 79
+ * Fri May 21 2088 = 4725-04*-01, Year 45, Cycle 79
+ * Sun Sep 24 2090 = 4727-08*-01, Year 47, Cycle 79
+ * Thu Jul 23 2093 = 4730-06*-01, Year 50, Cycle 79
+ * Tue May 22 2096 = 4733-04*-01, Year 53, Cycle 79
+ * Sun Mar 22 2099 = 4736-02*-01, Year 56, Cycle 79
+ */
+public class ChineseTest extends CalendarTest {
+
+    public static void main(String args[]) throws Exception {
+        new ChineseTest().run(args);
+    }
+
+    /**
+     * Test basic mapping to and from Gregorian.
+     */
+    public void TestMapping() {
+
+        final int[] DATA = {
+            // (Note: months are 1-based)
+            // Gregorian    Chinese
+            1964,  9,  4,   4601,  7,0, 28,
+            1964,  9,  5,   4601,  7,0, 29,
+            1964,  9,  6,   4601,  8,0,  1,
+            1964,  9,  7,   4601,  8,0,  2,
+            1961, 12, 25,   4598, 11,0, 18,
+            1999,  6,  4,   4636,  4,0, 21,
+            
+            1990,  5, 23,   4627,  4,0, 29,
+            1990,  5, 24,   4627,  5,0,  1,
+            1990,  6, 22,   4627,  5,0, 30,
+            1990,  6, 23,   4627,  5,1,  1,
+            1990,  7, 20,   4627,  5,1, 28,
+            1990,  7, 21,   4627,  5,1, 29,
+            1990,  7, 22,   4627,  6,0,  1,
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        StringBuffer buf = new StringBuffer();
+
+        logln("Gregorian -> Chinese");
+        //java.util.Calendar grego = java.util.Calendar.getInstance();
+        Calendar grego = Calendar.getInstance();
+        grego.clear();
+        for (int i=0; i<DATA.length; ) {
+            grego.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date date = grego.getTime();
+            cal.setTime(date);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(Calendar.MONTH)+1; // 0-based -> 1-based
+            int L = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int d = cal.get(Calendar.DAY_OF_MONTH);
+            int yE = DATA[i++]; // Expected y, m, isLeapMonth, d
+            int mE = DATA[i++]; // 1-based
+            int LE = DATA[i++];
+            int dE = DATA[i++];
+            buf.setLength(0);
+            buf.append(date + " -> ");
+            buf.append(y + "/" + m + (L==1?"(leap)":"") + "/" + d);
+            if (y == yE && m == mE && L == LE && d == dE) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " +
+                      yE + "/" + mE + (LE==1?"(leap)":"") + "/" + dE);
+            }
+        }
+
+        logln("Chinese -> Gregorian");
+        for (int i=0; i<DATA.length; ) {
+            grego.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date dexp = grego.getTime();
+            int cyear = DATA[i++];
+            int cmonth = DATA[i++];
+            int cisleapmonth = DATA[i++];
+            int cdayofmonth = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, cyear);
+            cal.set(Calendar.MONTH, cmonth-1);
+            cal.set(ChineseCalendar.IS_LEAP_MONTH, cisleapmonth);
+            cal.set(Calendar.DAY_OF_MONTH, cdayofmonth);
+            Date date = cal.getTime();
+            buf.setLength(0);
+            buf.append(cyear + "/" + cmonth +
+                       (cisleapmonth==1?"(leap)":"") + "/" + cdayofmonth);
+            buf.append(" -> " + date);
+            if (date.equals(dexp)) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " + dexp);
+            }
+        }
+    }
+
+    /**
+     * Make sure no Gregorian dates map to Chinese 1-based day of
+     * month zero.  This was a problem with some of the astronomical
+     * new moon determinations.
+     */
+    public void TestZeroDOM() {
+        ChineseCalendar cal = new ChineseCalendar();
+        GregorianCalendar greg = new GregorianCalendar(1989, Calendar.SEPTEMBER, 1);
+        logln("Start: " + greg.getTime());
+        for (int i=0; i<1000; ++i) {
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            if (cal.get(Calendar.DAY_OF_MONTH) == 0) {
+                errln("Fail: " + greg.getTime() + " -> " +
+                      cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                      cal.get(Calendar.MONTH) +
+                      (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") +
+                      "/" + cal.get(Calendar.DAY_OF_MONTH));
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * Test minimum and maximum functions.
+     */
+    public void TestLimits() {
+        // The number of days and the start date can be adjusted
+        // arbitrarily to either speed up the test or make it more
+        // thorough, but try to test at least a full year, preferably a
+        // full non-leap and a full leap year.
+
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1989, Calendar.NOVEMBER, 1);
+        ChineseCalendar chinese = new ChineseCalendar();
+        doLimitsTest(chinese, null, tempcal.getTime());
+        doTheoreticalLimitsTest(chinese, true);
+    }
+
+    /**
+     * Run through several standard tests from Dershowitz & Reingold.
+     */
+    public void TestJulianDayMapping() {
+
+        final TestCase[] tests = {
+            //
+            // From Dershowitz & Reingold, "Calendrical Calculations".
+            //
+            // The months in this table are 1-based rather than 0-based.
+            //
+            // * Failing fields->millis
+            // ** Millis->fields gives 0-based month -1
+            // These failures were fixed by changing the start search date
+            // for the winter solstice from Dec 15 to Dec 1.
+            // 
+            //                  Julian Day   Era  Year Month  Leap   DOM WkDay
+            new ChineseTestCase(1507231.5,   35,   11,    6, false,   12,  SUN),
+            new ChineseTestCase(1660037.5,   42,    9,   10, false,   27,  WED),
+            new ChineseTestCase(1746893.5,   46,    7,    8, false,    4,  WED),
+            new ChineseTestCase(1770641.5,   47,   12,    8, false,    9,  SUN),
+            new ChineseTestCase(1892731.5,   52,   46,   11, false,   20,  WED),
+            new ChineseTestCase(1931579.5,   54,   33,    4, false,    5,  MON),
+            new ChineseTestCase(1974851.5,   56,   31,   10, false,   15,  SAT),
+            new ChineseTestCase(2091164.5,   61,   50,    3, false,    7,  SUN),
+            new ChineseTestCase(2121509.5,   63,   13,    4, false,   24,  SUN),
+            new ChineseTestCase(2155779.5,   64,   47,    2, false,    9,  FRI),
+            new ChineseTestCase(2174029.5,   65,   37,    2, false,    9,  SAT),
+            new ChineseTestCase(2191584.5,   66,   25,    2, false,   23,  FRI),
+            new ChineseTestCase(2195261.5,   66,   35,    3, false,    9,  SUN), //*
+            new ChineseTestCase(2229274.5,   68,    8,    5, false,    2,  SUN), //*
+            new ChineseTestCase(2245580.5,   68,   53,    1, false,    8,  WED), //**
+            new ChineseTestCase(2266100.5,   69,   49,    3, false,    4,  SAT), 
+            new ChineseTestCase(2288542.5,   70,   50,    8, false,    2,  SAT), //*
+            new ChineseTestCase(2290901.5,   70,   57,    1, false,   29,  SAT), //*
+            new ChineseTestCase(2323140.5,   72,   25,    4,  true,   20,  WED), //*
+            new ChineseTestCase(2334848.5,   72,   57,    6, false,    5,  SUN),
+            new ChineseTestCase(2348020.5,   73,   33,    6, false,    6,  FRI),
+            new ChineseTestCase(2366978.5,   74,   25,    5, false,    5,  SUN),
+            new ChineseTestCase(2385648.5,   75,   16,    6, false,   12,  MON),
+            new ChineseTestCase(2392825.5,   75,   36,    2, false,   13,  WED),
+            new ChineseTestCase(2416223.5,   76,   40,    3, false,   22,  SUN),
+            new ChineseTestCase(2425848.5,   77,    6,    7, false,   21,  SUN),
+            new ChineseTestCase(2430266.5,   77,   18,    8, false,    9,  MON),
+            new ChineseTestCase(2430833.5,   77,   20,    3, false,   15,  MON),
+            new ChineseTestCase(2431004.5,   77,   20,    9, false,    9,  THU),
+            new ChineseTestCase(2448698.5,   78,    9,    2, false,   14,  TUE),
+            new ChineseTestCase(2450138.5,   78,   13,    1, false,    7,  SUN),
+            new ChineseTestCase(2465737.5,   78,   55,   10, false,   14,  WED),
+            new ChineseTestCase(2486076.5,   79,   51,    6, false,    7,  SUN),
+
+            // Additional tests not from D&R
+            new ChineseTestCase(2467496.5,   78,   60,    8, false,    2,  FRI), // year 60
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        cal.setLenient(true);
+        doTestCases(tests, cal);
+    }
+
+    /**
+     * Test formatting.
+     */
+    public void TestFormat() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateTimeInstance(cal,
+                                    DateFormat.DEFAULT, DateFormat.DEFAULT);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        
+        Date[] DATA = new Date[2];
+        tempcal.set(2001, Calendar.MAY, 22);
+        DATA[0] = tempcal.getTime();
+        tempcal.set(2001, Calendar.MAY, 23);
+        DATA[1] = tempcal.getTime();
+        // Wed May 23 2001 = Month 4(leap), Day 1, Year 18, Cycle 78
+        
+        for (int i=0; i<DATA.length; ++i) {
+            String s = fmt.format(DATA[i]);
+            try {
+                Date e = fmt.parse(s);
+                if (e.equals(DATA[i])) {
+                    logln("Ok: " + DATA[i] + " -> " + s + " -> " + e);
+                } else {
+                    errln("FAIL: " + DATA[i] + " -> " + s + " -> " + e);
+                }
+            } catch (java.text.ParseException e) {
+                errln("Fail: " + s + " -> parse failure at " + e.getErrorOffset());
+                errln(e.toString());
+            }
+        }
+    }
+
+    /**
+     * Make sure IS_LEAP_MONTH participates in field resolution.
+     */
+    public void TestResolution() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateInstance(cal, DateFormat.DEFAULT);
+
+        // May 22 2001 = y4638 m4 d30 doy119
+        // May 23 2001 = y4638 m4* d1 doy120
+
+        final int THE_YEAR = 4638;
+        final int END = -1;
+
+        int[] DATA = {
+            // Format:
+            // (field, value)+, END, exp.month, exp.isLeapMonth, exp.DOM
+            // Note: exp.month is ONE-BASED
+
+            // If we set DAY_OF_YEAR only, that should be used
+            Calendar.DAY_OF_YEAR, 1,
+            END,
+            1,0,1, // Expect 1-1
+            
+            // If we set MONTH only, that should be used
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.MONTH, 3,
+            END,
+            4,1,1, // Expect 4*-1
+            
+            // If we set the DOY last, that should take precedence
+            Calendar.MONTH, 1, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_YEAR, 121,
+            END,
+            4,1,2, // Expect 4*-2
+            
+            // I've disabled this test because it doesn't work this way,
+            // not even with a GregorianCalendar!  MONTH alone isn't enough
+            // to supersede DAY_OF_YEAR.  Some other month-related field is
+            // also required. - Liu 11/28/00
+            //! // If we set MONTH last, that should take precedence
+            //! ChineseCalendar.IS_LEAP_MONTH, 1,
+            //! Calendar.DAY_OF_MONTH, 1,
+            //! Calendar.DAY_OF_YEAR, 5, // Should ignore
+            //! Calendar.MONTH, 3,
+            //! END,
+            //! 4,1,1, // Expect 4*-1
+            
+            // If we set IS_LEAP_MONTH last, that should take precedence
+            Calendar.MONTH, 3,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.DAY_OF_YEAR, 5, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            END,
+            4,1,1, // Expect 4*-1
+        };
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<DATA.length; ) {
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+            buf.setLength(0);
+            buf.append("EXTENDED_YEAR=" + THE_YEAR);
+            while (DATA[i] != END) {
+                cal.set(DATA[i++], DATA[i++]);
+                buf.append(" " + fieldName(DATA[i-2]) + "=" + DATA[i-1]);
+            }
+            ++i; // Skip over END mark
+            int expMonth = DATA[i++]-1;
+            int expIsLeapMonth = DATA[i++];
+            int expDOM = DATA[i++];
+            int month = cal.get(Calendar.MONTH);
+            int isLeapMonth = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int dom = cal.get(Calendar.DAY_OF_MONTH);
+            if (expMonth == month && expIsLeapMonth == isLeapMonth &&
+                dom == expDOM) {
+                logln("OK: " + buf + " => " + fmt.format(cal.getTime()));
+            } else {
+                String s = fmt.format(cal.getTime());
+                cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+                cal.set(Calendar.MONTH, expMonth);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, expIsLeapMonth);
+                cal.set(Calendar.DAY_OF_MONTH, expDOM);
+                errln("Fail: " + buf + " => " + s +
+                      "=" + (month+1) + "," + isLeapMonth + "," + dom +
+                      ", expected " + fmt.format(cal.getTime()) +
+                      "=" + (expMonth+1) + "," + expIsLeapMonth + "," + expDOM);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of fields that are out of range.
+     */
+    public void TestOutOfRange() {
+        int[] DATA = new int[] {
+            // Input       Output
+            4638, 13,  1,   4639,  1,  1,
+            4638, 18,  1,   4639,  6,  1,
+            4639,  0,  1,   4638, 12,  1,
+            4639, -6,  1,   4638,  6,  1,
+            4638,  1, 32,   4638,  2,  2, // 1-4638 has 30 days
+            4638,  2, -1,   4638,  1, 29,
+        };
+        ChineseCalendar cal = new ChineseCalendar();
+        for (int i=0; i<DATA.length; ) {
+            int y1 = DATA[i++];
+            int m1 = DATA[i++]-1;
+            int d1 = DATA[i++];
+            int y2 = DATA[i++];
+            int m2 = DATA[i++]-1;
+            int d2 = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, y1);
+            cal.set(MONTH, m1);
+            cal.set(DATE, d1);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(MONTH);
+            int d = cal.get(DATE);
+            if (y!=y2 || m!=m2 || d!=d2) {
+                errln("Fail: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d + ", expected " +
+                      y2 + "/" + (m2+1) + "/" + d2);
+            } else  if (isVerbose()) {
+                logln("OK: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.add().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4640,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4639,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,   2,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH,   3,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ADD, cal, tests);
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.roll().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4642,   3,0,  15,   MONTH,  11,   4642,   2,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4639,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4640,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  16,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  28,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH, -12,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH, -25,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  14,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  15,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH, -10,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ROLL, cal, tests);
+    }
+    
+    void doRollAdd(boolean roll, ChineseCalendar cal, int[][] tests) {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]-1);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, test[2]);
+                cal.set(Calendar.DAY_OF_MONTH, test[3]);
+            if (roll) {
+                cal.roll(test[4], test[5]);
+            } else {
+                cal.add(test[4], test[5]);
+            }
+            if (cal.get(Calendar.EXTENDED_YEAR) != test[6] ||
+                cal.get(MONTH) != (test[7]-1) ||
+                cal.get(ChineseCalendar.IS_LEAP_MONTH) != test[8] ||
+                cal.get(DATE) != test[9]) {
+                errln("Fail: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                      + " " + fieldName(test[4]) + " by " + test[5]
+                      + ": expected " +
+                      ymdToString(test[6], test[7]-1, test[8], test[9])
+                      + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                    + " " + fieldName(test[4]) + " by " + test[5]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int isLeapMonth, int day) {
+        return "" + year + "/" + (month+1) +
+            ((isLeapMonth!=0)?"(leap)":"") +
+            "/" + day;
+    }
+
+//    public void TestFindLeapMonths() {
+//        ChineseCalendar cal = new ChineseCalendar();
+//        cal.setTime(new Date(2000-1900, Calendar.JANUARY, 1));
+//        long end = new Date(2100-1900, Calendar.JANUARY, 1).getTime();
+//        ChineseDateFormat fmt = (ChineseDateFormat) DateFormat.getInstance(cal);
+//        fmt.applyPattern("u-MMl-dd, 'Year' y, 'Cycle' G");
+//        while (cal.getTimeInMillis() < end) {
+//            if (cal.get(ChineseCalendar.IS_LEAP_MONTH) != 0) {
+//                cal.set(Calendar.DAY_OF_MONTH, 1);
+//                logln(cal.getTime() + " = " + fmt.format(cal.getTime()));
+//                cal.set(Calendar.DAY_OF_MONTH, 29);
+//            }
+//            cal.add(Calendar.DAY_OF_YEAR, 25);
+//        }
+//    }
+
+    public void TestCoverage() {
+        // Coverage for constructors
+        {
+            // new ChineseCalendar(Date)
+            ChineseCalendar cal = new ChineseCalendar(new Date());
+            if(cal == null){
+                errln("could not create ChineseCalendar with Date");
+            }
+        }
+
+        {
+            // new ChineseCalendar(int year, int month, int isLeapMonth, int date)
+            ChineseCalendar cal = new ChineseCalendar(23, Calendar.JULY, 1, 2);
+            if(cal == null){
+                errln("could not create ChineseCalendar with year,month,isLeapMonth,date");
+            }
+            // Make sure the given values are properly set
+            if (cal.get(Calendar.YEAR) != 23 || cal.get(Calendar.MONTH) != Calendar.JULY
+                    || cal.get(ChineseCalendar.IS_LEAP_MONTH) != 1 || cal.get(Calendar.DATE) != 2
+                    || cal.get(Calendar.MILLISECONDS_IN_DAY) != 0) {
+                errln("ChineseCalendar was initialized incorrectly with year,month,isLeapMonth,date");
+            }
+        }
+
+        {
+            // new ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour, int minute, int second)
+            ChineseCalendar cal = new ChineseCalendar(23, Calendar.JULY, 1, 2, 12, 34, 56);
+            if(cal == null){
+                errln("could not create ChineseCalendar with year,month,isLeapMonth,date,hour,minute,second");
+            }
+            // Make sure the given values are properly set
+            if (cal.get(Calendar.YEAR) != 23 || cal.get(Calendar.MONTH) != Calendar.JULY
+                    || cal.get(ChineseCalendar.IS_LEAP_MONTH) != 1 || cal.get(Calendar.DATE) != 2
+                    || cal.get(Calendar.HOUR_OF_DAY) != 12 || cal.get(Calendar.MINUTE) != 34
+                    || cal.get(Calendar.SECOND) != 56 || cal.get(Calendar.MILLISECOND) != 0) {
+                errln("ChineseCalendar was initialized incorrectly with year,month,isLeapMonth,date,hour,minute,second");
+            }
+        }
+
+        {
+            // new ChineseCalendar(Locale)
+            ChineseCalendar cal = new ChineseCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with Locale");
+            }
+        }
+
+        {
+            // new ChineseCalendar(ULocale)
+            ChineseCalendar cal = new ChineseCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with ULocale");
+            }
+        }
+        
+
+        {
+            // new ChineseCalendar(TimeZone)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new ChineseCalendar(TimeZone, Locale)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault(), Locale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone,Locale");
+            }
+        }
+
+        {
+            // new ChineseCalendar(TimeZone, ULocale)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault(), ULocale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone,ULocale");
+            }
+        }
+
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat format = DateFormat.getInstance(cal);
+        if(!(format instanceof ChineseDateFormat)){
+            errln("DateFormat.getInstance("+cal+") did not return a ChineseDateFormat");
+        }
+        ChineseDateFormat fmt = (ChineseDateFormat)format;
+        fmt.applyPattern("llyyll");
+        Date time = getDate(2100, Calendar.JANUARY, 1);
+        String str = fmt.format(time);
+        try {
+            Date e = fmt.parse(str);
+            logln("chinese calendar time: " + time + " result: " + str + " --> " + e);
+        } catch (java.text.ParseException ex) {
+            logln(ex.getMessage()); // chinese calendar can't parse this, no error for now
+        }
+
+        //new ChineseCalendar(TimeZone,ULocale)
+        ChineseCalendar ccal2 = new ChineseCalendar(TimeZone.getDefault(),
+                                                   ULocale.CHINA);
+        if(ccal2==null){
+            errln("could not create ChineseCalendar with TimeZone ULocale");
+        } else {
+            fmt = (ChineseDateFormat)DateFormat.getDateInstance(ccal2, DateFormat.DEFAULT, ULocale.CHINA);
+            time = getDate(2001, Calendar.MAY, 23);
+            str = fmt.format(time);
+            logln("Chinese calendar time: " + time + " result: " + str);
+        }
+    }
+    public void TestScratch(){
+        String[] strMonths = {"Januari", "Pebruari", "Maret", "April", "Mei", "Juni",
+                "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember"};
+        String[] strShortMonths = {"Jan", "Peb", "Mar", "Apr", "Mei", "Jun",
+                     "Jul", "Agt", "Sep", "Okt", "Nop", "Des"};
+        String[] strWeeks = {"", "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
+        DateFormatSymbols dfsDate = new DateFormatSymbols(new Locale("id", "ID"));
+        dfsDate.setMonths(strMonths);
+        dfsDate.setShortMonths(strShortMonths);
+        dfsDate.setWeekdays(strWeeks);
+        ULocale uloInd = dfsDate.getLocale(ULocale.ACTUAL_LOCALE);
+        if(uloInd==null){
+            errln("did not get the expected ULocale");
+        }
+        logln(uloInd.toString());
+        Locale locInd = uloInd.toLocale();
+        if(locInd==null){
+            errln("did not get the expected result");
+        }
+        logln(locInd.toString());
+    }
+
+    public void TestInitWithCurrentTime() {
+        // jb4555
+        // if the chinese calendar current millis isn't called, the default year is wrong.
+        // this test is assuming the 'year' is the current cycle
+        // so when we cross a cycle boundary, the target will need to change
+        // that shouldn't be for awhile yet... 
+
+        ChineseCalendar cc = new ChineseCalendar();
+        cc.set(Calendar.YEAR, 22);
+        cc.set(Calendar.MONTH, 0);
+         // need to set leap month flag off, otherwise, the test case always fails when
+         // current time is in a leap month
+        cc.set(ChineseCalendar.IS_LEAP_MONTH, 0);
+        cc.set(Calendar.DATE, 19);
+        cc.set(Calendar.HOUR_OF_DAY, 0);
+        cc.set(Calendar.MINUTE, 0);
+        cc.set(Calendar.SECOND, 0);
+        cc.set(Calendar.MILLISECOND, 0);
+
+        cc.add(Calendar.DATE, 1);
+ 
+        Calendar cal = new GregorianCalendar(2005, Calendar.FEBRUARY, 28);
+        Date target = cal.getTime();
+        Date result = cc.getTime();
+
+        assertEquals("chinese and gregorian date should match", target, result);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
new file mode 100644
index 0000000..924b6aa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
@@ -0,0 +1,53 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import java.util.Date;
+
+public class ChineseTestCase extends TestCase {
+
+    /**
+     * Initialize an object using a Julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era the ERA field of tested calendar on the given Julian
+     * day
+     * @param year the YEAR field of tested calendar on the given
+     * Julian day
+     * @param month the MONTH (1-based) field of tested calendar on
+     * the given Julian day
+     * @param isLeapMonth if true, treat month as a leap month
+     * @param dayOfMonth the DAY_OF_MONTH field of tested calendar on the
+     * given Julian day
+     * @param dayOfWeek the DAY_OF_WEEK field of tested calendar on given
+     * Julian day
+     */
+    public ChineseTestCase(double julian,
+                           int era, int year, int month,
+                           boolean isLeapMonth, int dayOfMonth, int dayOfWeek) {
+
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(ChineseCalendar.IS_LEAP_MONTH, isLeapMonth?1:0);
+        set(Calendar.DAY_OF_MONTH, dayOfMonth);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) +
+            get(Calendar.YEAR) + "of" + get(Calendar.ERA) +
+            "/" + (get(Calendar.MONTH)+1) +
+            (get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+            get(Calendar.DAY_OF_MONTH);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
new file mode 100644
index 0000000..f9f9630
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -0,0 +1,1125 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.DateFormat;
+
+import java.util.Date;
+import java.util.Locale;
+import java.io.*;
+
+public class CompatibilityTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String argv[]) throws Exception {
+        new CompatibilityTest().run(argv);
+    }
+
+    static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Test the behavior of the GregorianCalendar around the changeover.
+     */
+    public void TestGregorianChangeover() {
+    
+        java.util.TimeZone jdkGMT = java.util.TimeZone.getTimeZone("GMT");
+        java.util.Calendar jdkCal = java.util.Calendar.getInstance(jdkGMT);
+        jdkCal.clear();
+        jdkCal.set(1582, Calendar.OCTOBER, 15);
+        
+//      if(jdkCal instanceof java.util.GregorianCalendar) {
+//          logln("jdk IS grego");
+//          java.util.GregorianCalendar jdkgc = (java.util.GregorianCalendar)
+//          jdkCal;
+//          logln("jdk change at: " + jdkgc.getGregorianChange() + "(" + jdkgc.getGregorianChange().getTime() +")" );
+//      } else {
+//          logln("jdk NOT grego");
+//      }
+
+        long a = jdkCal.getTime().getTime();
+        Date c = jdkCal.getTime();
+        c.toString();
+        long b = c.getTime();
+        if(a!=b) {
+            logln(" " + a + " != " + b);
+            logln("JDK has Gregorian cutover anomaly (1.5?) - skipping this test.");
+            return;
+        }
+
+        Date co = jdkCal.getTime();
+        logln("Change over (Oct 15 1582) = " + co + " (" + co.getTime() + ")");
+        final int ONE_DAY = 24*60*60*1000;
+        TimeZone gmt = TimeZone.getTimeZone("GMT");
+        GregorianCalendar cal = new GregorianCalendar(gmt);
+        /*
+          Changeover -7 days: 1582/9/28 dow=6
+          Changeover -6 days: 1582/9/29 dow=7
+          Changeover -5 days: 1582/9/30 dow=1
+          Changeover -4 days: 1582/10/1 dow=2
+          Changeover -3 days: 1582/10/2 dow=3
+          Changeover -2 days: 1582/10/3 dow=4
+          Changeover -1 days: 1582/10/4 dow=5
+          Changeover +0 days: 1582/10/15 dow=6
+          Changeover +1 days: 1582/10/16 dow=7
+          Changeover +2 days: 1582/10/17 dow=1
+          Changeover +3 days: 1582/10/18 dow=2
+          Changeover +4 days: 1582/10/19 dow=3
+          Changeover +5 days: 1582/10/20 dow=4
+          Changeover +6 days: 1582/10/21 dow=5
+          Changeover +7 days: 1582/10/22 dow=6
+          */
+        int MON[] = {  9,  9,  9,10,10,10,10, 10, 10, 10, 10, 10, 10, 10, 10 };
+        int DOM[] = { 28, 29, 30, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 21, 22 };
+        int DOW[] = {  6,  7,  1, 2, 3, 4, 5,  6,  7,  1,  2,  3,  4,  5,  6 };
+        //                                     ^ <-Changeover Fri Oct 15 1582
+        int j=0;
+        for (int i=-7; i<=7; ++i, ++j) {
+            Date d = new Date(co.getTime() + i*ONE_DAY);
+            cal.setTime(d);
+            int y = cal.get(Calendar.YEAR), mon = cal.get(Calendar.MONTH)+1-Calendar.JANUARY,
+                dom = cal.get(Calendar.DATE), dow = cal.get(Calendar.DAY_OF_WEEK);
+            logln("Changeover " + (i>=0?"+":"") +
+                  i + " days: " + y + "/" + mon + "/" + dom + " dow=" + dow);
+            if (y != 1582 || mon != MON[j] || dom != DOM[j] || dow != DOW[j])
+                errln(" Fail: Above line is wrong");
+        }
+    }
+
+    /**
+     * Test the mapping between millis and fields.  For the purposes
+     * of this test, we don't care about timezones and week data
+     * (first day of week, minimal days in first week).
+     */
+    public void TestMapping() {
+        if (false) {
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal =
+                new GregorianCalendar(TimeZone.getTimeZone("UTC"));
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            com.ibm.icu.text.SimpleDateFormat fmt =
+                new com.ibm.icu.text.SimpleDateFormat("EEE MMM dd yyyy G");
+                /*HH:mm:ss.SSS z*/
+
+            for (int type=0; type<2; ++type) {
+                System.out.println(type==0 ? "Gregorian" : "Julian");
+                cal.setGregorianChange(type==0 ? PURE_GREGORIAN : PURE_JULIAN);
+                fmt.setCalendar(cal);
+                int[] J = {
+                    0x7FFFFFFF,
+                    0x7FFFFFF0,
+                    0x7F000000,
+                    0x78000000,
+                    0x70000000,
+                    0x60000000,
+                    0x50000000,
+                    0x40000000,
+                    0x30000000,
+                    0x20000000,
+                    0x10000000,
+                };
+                for (int i=0; i<J.length; ++i) {
+                    String[] lim = new String[2];
+                    long[] ms = new long[2];
+                    int jd = J[i];
+                    for (int sign=0; sign<2; ++sign) {
+                        int julian = jd;
+                        if (sign==0) julian = -julian;
+                        long millis = ((long)julian - EPOCH_JULIAN) * ONE_DAY;
+                        ms[sign] = millis;
+                        cal.setTime(new Date(millis));
+                        lim[sign] = fmt.format(cal.getTime());
+                    }
+                    System.out.println("JD +/-" +
+                                       Long.toString(jd, 16) +
+                                       ": " + ms[0] + ".." + ms[1] +
+                                       ": " + lim[0] + ".." + lim[1]);
+                }
+            }
+        }
+
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            //NEWCAL
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal = new GregorianCalendar();
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            int[] DATA = {
+                // Julian#   Year  Month               DOM   JULIAN:Year, Month,       DOM
+                2440588,     1970, Calendar.JANUARY,   1,    1969, Calendar.DECEMBER,  19, 
+                2415080,     1900, Calendar.MARCH,     1,    1900, Calendar.FEBRUARY,  17,
+                2451604,     2000, Calendar.FEBRUARY,  29,   2000, Calendar.FEBRUARY,  16,
+                2452269,     2001, Calendar.DECEMBER,  25,   2001, Calendar.DECEMBER,  12,
+                2416526,     1904, Calendar.FEBRUARY,  15,   1904, Calendar.FEBRUARY,  2,
+                2416656,     1904, Calendar.JUNE,      24,   1904, Calendar.JUNE,      11,
+                1721426,        1, Calendar.JANUARY,   1,       1, Calendar.JANUARY,   3,
+                2000000,      763, Calendar.SEPTEMBER, 18,    763, Calendar.SEPTEMBER, 14,
+                4000000,     6239, Calendar.JULY,      12,   6239, Calendar.MAY,       28,
+                8000000,    17191, Calendar.FEBRUARY,  26,  17190, Calendar.OCTOBER,   22,
+                10000000,   22666, Calendar.DECEMBER,  20,  22666, Calendar.JULY,      5,
+            };
+            for (int i=0; i<DATA.length; i+=7) {
+                int julian = DATA[i];
+                int year = DATA[i+1];
+                int month = DATA[i+2];
+                int dom = DATA[i+3];
+                int year2, month2, dom2;
+                long millis = (julian - EPOCH_JULIAN) * ONE_DAY;
+                String s;
+
+                // Test Gregorian computation
+                cal.setGregorianChange(PURE_GREGORIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                long calMillis = cal.getTime().getTime();
+                long delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "G " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+                
+                // Test Julian computation
+                year = DATA[i+4];
+                month = DATA[i+5];
+                dom = DATA[i+6];
+                cal.setGregorianChange(PURE_JULIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                calMillis = cal.getTime().getTime();
+                delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "J " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+            }
+
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+            tempcal.set(1582, Calendar.OCTOBER, 15);
+            cal.setGregorianChange(tempcal.getTime());
+            auxMapping(cal, 1582, Calendar.OCTOBER, 4);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 15);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 16);
+            for (int y=800; y<3000; y+=1+(int)(100*Math.random())) {
+                for (int m=Calendar.JANUARY; m<=Calendar.DECEMBER; ++m) {
+                    auxMapping(cal, y, m, 15);
+                }
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    private void auxMapping(Calendar cal, int y, int m, int d) {
+        cal.clear();
+        cal.set(y, m, d);
+        long millis = cal.getTime().getTime();
+        cal.setTime(new Date(millis));
+        int year2 = cal.get(Calendar.YEAR);
+        int month2 = cal.get(Calendar.MONTH);
+        int dom2 = cal.get(Calendar.DAY_OF_MONTH);
+        if (y != year2 || m != month2 || dom2 != d)
+            errln("Round-trip failure: " + y + "-" + (m+1) + "-"+d+" =>ms=> " +
+                  year2 + "-" + (month2+1) + "-" + dom2);
+    }
+
+    public void TestGenericAPI() {
+        // not used String str;
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1990, Calendar.APRIL, 15);
+        Date when = tempcal.getTime();
+
+        String tzid = "TestZone";
+        int tzoffset = 123400;
+
+        SimpleTimeZone zone = new SimpleTimeZone(tzoffset, tzid);
+        Calendar cal = (Calendar)Calendar.getInstance((SimpleTimeZone)zone.clone());
+
+        if (!zone.equals(cal.getTimeZone())) errln("FAIL: Calendar.getTimeZone failed");
+
+        Calendar cal2 = Calendar.getInstance(cal.getTimeZone());
+
+        cal.setTime(when);
+        cal2.setTime(when);
+
+        if (!(cal.equals(cal2))) errln("FAIL: Calendar.operator== failed");
+        // if ((*cal != *cal2))  errln("FAIL: Calendar.operator!= failed");
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal2.setTime(new Date(when.getTime() + 1000));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal.roll(Calendar.SECOND, true);
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // Roll back to January
+        cal.roll(Calendar.MONTH, (int)(1 + Calendar.DECEMBER - cal.get(Calendar.MONTH)));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // C++ only
+        /* TimeZone z = cal.orphanTimeZone();
+           if (z.getID(str) != tzid ||
+           z.getRawOffset() != tzoffset)
+           errln("FAIL: orphanTimeZone failed");
+           */
+
+        for (int i=0; i<2; ++i) {
+            boolean lenient = ( i > 0 );
+            cal.setLenient(lenient);
+            if (lenient != cal.isLenient()) errln("FAIL: setLenient/isLenient failed");
+            // Later: Check for lenient behavior
+        }
+
+        int i;
+        for (i=Calendar.SUNDAY; i<=Calendar.SATURDAY; ++i) {
+            cal.setFirstDayOfWeek(i);
+            if (cal.getFirstDayOfWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=1; i<=7; ++i) {
+            cal.setMinimalDaysInFirstWeek(i);
+            if (cal.getMinimalDaysInFirstWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            if (cal.getMinimum(i) > cal.getGreatestMinimum(i))
+                errln("FAIL: getMinimum larger than getGreatestMinimum for field " + i);
+            if (cal.getLeastMaximum(i) > cal.getMaximum(i))
+                errln("FAIL: getLeastMaximum larger than getMaximum for field " + i);
+            if (cal.getMinimum(i) >= cal.getMaximum(i))
+                errln("FAIL: getMinimum not less than getMaximum for field " + i);
+        }
+
+        cal.setTimeZone(TimeZone.getDefault());
+        cal.clear();
+        cal.set(1984, 5, 24);
+        tempcal.clear();
+        tempcal.set(1984, 5, 24);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(3 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        // This test case does not work well with JRE1.3 with
+//##        // the timezone update for US 2007 rule.  Java 1.3 only
+//##        // supports single DST rule for all years.  April 2, 1985
+//##        // was actually not in DST, but with the new rule, the date
+//##        // is in DST (which is actually wrong).
+//#else
+        cal.clear();
+        cal.set(1985, 3, 2, 11, 49);
+        tempcal.clear();
+        tempcal.set(1985, 3, 2, 11, 49);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(5 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+//#endif
+
+        cal.clear();
+        cal.set(1995, 9, 12, 1, 39, 55);
+        tempcal.clear();
+        tempcal.set(1995, 9, 12, 1, 39, 55);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(6 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+        cal.getTime();
+        // This test is strange -- why do we expect certain fields to be set, and
+        // others not to be?  Revisit the appropriateness of this.  - Alan NEWCAL
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            switch(i) {
+            case Calendar.YEAR: case Calendar.MONTH: case Calendar.DATE:
+            case Calendar.HOUR_OF_DAY: case Calendar.MINUTE: case Calendar.SECOND:
+            case Calendar.EXTENDED_YEAR:
+                if (!cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is not set");
+                break;
+            default:
+                if (cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is set");
+            }
+            cal.clear(i);
+            if (cal.isSet(i)) errln("FAIL: Calendar.clear/isSet failed");
+        }
+
+        // delete cal;
+        // delete cal2;
+
+        Locale[] loc = Calendar.getAvailableLocales();
+        long count = loc.length;
+        if (count < 1 || loc == null) {
+            errln("FAIL: getAvailableLocales failed");
+        }
+        else {
+            for (i=0; i<count; ++i) {
+                cal = Calendar.getInstance(loc[i]);
+                // delete cal;
+            }
+        }
+
+        cal = Calendar.getInstance(TimeZone.getDefault(), Locale.ENGLISH);
+        // delete cal;
+
+        cal = Calendar.getInstance(zone, Locale.ENGLISH);
+        // delete cal;
+
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone, Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhm) failed");
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43, 55);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43, 55);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhms) failed");
+
+        // C++ only:
+        // GregorianCalendar gc2 = new GregorianCalendar(Locale.ENGLISH);
+        // gc2 = gc;
+        // if (gc2 != gc || !(gc2 == gc)) errln("FAIL: GregorianCalendar assignment/operator==/operator!= failed");
+        // delete gc;
+        // delete z;
+    }
+
+    // Verify Roger Webster's bug
+    public void TestRog() {
+        GregorianCalendar gc = new GregorianCalendar();
+
+        int year = 1997, month = Calendar.APRIL, date = 1;
+        gc.set(year, month, date); // April 1, 1997
+
+        gc.set(Calendar.HOUR_OF_DAY, 23);
+        gc.set(Calendar.MINUTE, 0);
+        gc.set(Calendar.SECOND, 0);
+        gc.set(Calendar.MILLISECOND, 0);
+
+        for (int i = 0; i < 9; i++, gc.add(Calendar.DATE, 1)) {
+            if (gc.get(Calendar.YEAR) != year ||
+                gc.get(Calendar.MONTH) != month ||
+                gc.get(Calendar.DATE) != (date + i))
+                errln("FAIL: Date " + gc.getTime() + " wrong");
+        }
+    }
+
+    // Verify DAY_OF_WEEK
+    public void TestDOW943() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1, 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        if (dow < min || dow > max) errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) {
+            errln("FAIL2: Day of week should be SUNDAY; is " + dow + ": " + cal.getTime());
+        }
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY) errln("FAIL: Min/max bad");
+    }
+
+    // Verify that the clone method produces distinct objects with no
+    // unintentionally shared fields.
+    public void TestClonesUnique908() {
+        Calendar c = Calendar.getInstance();
+        Calendar d = (Calendar)c.clone();
+        c.set(Calendar.MILLISECOND, 123);
+        d.set(Calendar.MILLISECOND, 456);
+        if (c.get(Calendar.MILLISECOND) != 123 ||
+            d.get(Calendar.MILLISECOND) != 456) {
+            errln("FAIL: Clones share fields");
+        }
+    }
+
+    // Verify effect of Gregorian cutoff value
+    public void TestGregorianChange768() {
+        boolean b;
+        GregorianCalendar c = new GregorianCalendar();
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be FALSE)");
+        if (b != false) errln("FAIL");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1900, 0, 1);
+        c.setGregorianChange(tempcal.getTime()); // Jan 1 1900
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be TRUE)");
+        if (b != true) errln("FAIL");
+    }
+
+    // Test the correct behavior of the disambiguation algorithm.
+    public void TestDisambiguation765() throws Exception {
+        Calendar c = Calendar.getInstance();
+        c.setLenient(false);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DATE, 3);
+
+        verify765("1997 third day of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
+        verify765("1997 first Tuesday in June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, -1);
+        verify765("1997 last Tuesday in June = ", c, 1997, Calendar.JUNE, 24);
+
+        IllegalArgumentException e = null;
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 zero-th Tuesday in June = ", e, c);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 1);
+        verify765("1997 Tuesday in week 1 of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 5);
+        verify765("1997 Tuesday in week 5 of June = ", c, 1997, Calendar.JULY, 1);
+
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.WEEK_OF_MONTH, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 Tuesday in week 0 of June = ", e, c);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 1);
+        verify765("1997 Tuesday in week 1 of year = ", c, 1996, Calendar.DECEMBER, 31);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 10);
+        verify765("1997 Tuesday in week 10 of year = ", c, 1997, Calendar.MARCH, 4);
+
+        e = null;
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.WEEK_OF_YEAR, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 Tuesday in week 0 of year = ", e, c);
+    }
+    void verify765(String msg, Calendar c, int year, int month, int day) {
+        int cy = c.get(Calendar.YEAR); // NEWCAL
+        int cm = c.get(Calendar.MONTH);
+        int cd = c.get(Calendar.DATE);
+        if (cy == year &&
+            cm == month &&
+            cd == day) {
+            logln("PASS: " + msg + c.getTime());
+        }
+        else {
+            errln("FAIL: " + msg + cy + "/" + (cm+1) + "/" + cd +
+                  "=" + c.getTime() +
+                  "; expected " +
+                  year + "/" + (month+1) + "/" + day);
+        }
+    }
+    // Called when e expected to be non-null
+    void verify765(String msg, IllegalArgumentException e, Calendar c) {
+        if (e == null) errln("FAIL: No IllegalArgumentException for " + msg +
+                             c.getTime());
+        else logln("PASS: " + msg + "IllegalArgument as expected");
+    }
+
+    // Test the behavior of GMT vs. local time
+    public void TestGMTvsLocal4064654() {
+        // Sample output 1:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 1 1 12 0 0
+        // date = Wed Jan 01 04:00:00 PST 1997
+        // offset for Wed Jan 01 04:00:00 PST 1997= -8hr
+        aux4064654(1997, 1, 1, 12, 0, 0);
+
+        // Sample output 2:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 4 16 18 30 0
+        // date = Wed Apr 16 10:30:00 PDT 1997
+        // offset for Wed Apr 16 10:30:00 PDT 1997= -7hr
+
+        // Note that in sample output 2 according to the offset, the gmt time
+        // of the result would be 1997 4 16 17 30 0 which is different from the
+        // input of 1997 4 16 18 30 0.
+        aux4064654(1997, 4, 16, 18, 30, 0);
+    }
+    void aux4064654(int yr, int mo, int dt, int hr, int mn, int sc) {
+        Date date;
+        Calendar gmtcal = Calendar.getInstance();
+        gmtcal.setTimeZone(TimeZone.getTimeZone("Africa/Casablanca"));
+        gmtcal.set(yr, mo-1, dt, hr, mn, sc);
+        gmtcal.set(Calendar.MILLISECOND, 0);
+
+        date = gmtcal.getTime();
+        logln("date = "+date);
+
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("America/Los_Angels"));
+        cal.setTime(date);
+
+        int offset = cal.getTimeZone().getOffset(cal.get(Calendar.ERA),
+                                                 cal.get(Calendar.YEAR),
+                                                 cal.get(Calendar.MONTH),
+                                                 cal.get(Calendar.DATE),
+                                                 cal.get(Calendar.DAY_OF_WEEK),
+                                                 cal.get(Calendar.MILLISECOND));
+
+        logln("offset for "+date+"= "+(offset/1000/60/60.0) + "hr");
+
+        int utc = ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                    cal.get(Calendar.MINUTE)) * 60 +
+                   cal.get(Calendar.SECOND)) * 1000 +
+            cal.get(Calendar.MILLISECOND) - offset;
+
+        int expected = ((hr * 60 + mn) * 60 + sc) * 1000;
+
+        if (utc != expected)
+            errln("FAIL: Discrepancy of " +
+                  (utc - expected) + " millis = " +
+                  ((utc-expected)/1000/60/60.0) + " hr");
+    }
+
+    // Verify that add and set work regardless of the order in which
+    // they are called.
+    public void TestAddSetOrder621() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, 4, 14, 13, 23, 45);
+        Date d = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.add (Calendar.DATE, -5);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        // ma feb 03 00:00:00 GMT+00:00 1997
+        String s = cal.getTime ().toString ();
+
+        cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        cal.add (Calendar.DATE, -5);
+        // ma feb 03 13:11:06 GMT+00:00 1997
+        String s2 = cal.getTime ().toString ();
+
+        if (s.equals(s2))
+            logln("Pass: " + s + " == " + s2);
+        else
+            errln("FAIL: " + s + " != " + s2);
+    }
+
+    // Verify that add works.
+    public void TestAdd520() {
+        int y = 1997, m = Calendar.FEBRUARY, d = 1;
+        GregorianCalendar temp = new GregorianCalendar( y, m, d );
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.YEAR, 1 );
+        y++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.MONTH, 1 );
+        m++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 1 );
+        d++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 2 );
+        d += 2;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 28 );
+        d = 1; ++m;
+        check520(temp, y, m, d);
+    }
+    void check520(Calendar c, int y, int m, int d) {
+        if (c.get(Calendar.YEAR) != y ||
+            c.get(Calendar.MONTH) != m ||
+            c.get(Calendar.DATE) != d) {
+            errln("FAILURE: Expected YEAR/MONTH/DATE of " +
+                  y + "/" + (m+1) + "/" + d +
+                  "; got " +
+                  c.get(Calendar.YEAR) + "/" +
+                  (c.get(Calendar.MONTH)+1) + "/" +
+                  c.get(Calendar.DATE));
+        }
+        else logln("Confirmed: " +
+                   y + "/" + (m+1) + "/" + d);
+    }
+
+    // Verify that setting fields works.  This test fails when an exception is thrown.
+    public void TestFieldSet4781() {
+        try {
+            GregorianCalendar g = new GregorianCalendar();
+            GregorianCalendar g2 = new GregorianCalendar();
+            // At this point UTC value is set, various fields are not.
+            // Now set to noon.
+            g2.set(Calendar.HOUR, 12);
+            g2.set(Calendar.MINUTE, 0);
+            g2.set(Calendar.SECOND, 0);
+            // At this point the object thinks UTC is NOT set, but fields are set.
+            // The following line will result in IllegalArgumentException because
+            // it thinks the YEAR is set and it is NOT.
+            if (g2.equals(g))
+                logln("Same");
+            else
+                logln("Different");
+        }
+        catch (IllegalArgumentException e) {
+            errln("Unexpected exception seen: " + e);
+        }
+    }
+
+    // Test serialization of a Calendar object
+    public void TestSerialize337() {
+        Calendar cal = Calendar.getInstance();
+
+        boolean ok = false;
+
+        try {
+            ByteArrayOutputStream f = new ByteArrayOutputStream();
+            ObjectOutput s = new ObjectOutputStream(f);
+            s.writeObject(PREFIX);
+            s.writeObject(cal);
+            s.writeObject(POSTFIX);
+            f.close();
+
+            ByteArrayInputStream in = new ByteArrayInputStream(f.toByteArray());
+            ObjectInputStream t = new ObjectInputStream(in);
+            String pre = (String)t.readObject();
+            Calendar c = (Calendar)t.readObject();
+            String post = (String)t.readObject();
+            in.close();
+
+            ok = pre.equals(PREFIX) &&
+                post.equals(POSTFIX) &&
+                cal.equals(c);
+        }
+        catch (IOException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+        catch (ClassNotFoundException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+
+        if (!ok) errln("Serialization of Calendar object failed.");
+    }
+    static final String PREFIX = "abc";
+    static final String POSTFIX = "def";
+    static final String FILENAME = "tmp337.bin";
+
+    // Try to zero out the seconds field
+    public void TestSecondsZero121() {
+        Calendar        cal = new GregorianCalendar();
+        // Initialize with current date/time
+        cal.setTime(new Date());
+        // Round down to minute
+        cal.set(Calendar.SECOND, 0);
+        Date    d = cal.getTime();
+        String s = d.toString();
+        if (s.indexOf(":00 ") < 0) errln("Expected to see :00 in " + s);
+    }
+
+    // Try various sequences of add, set, and get method calls.
+    public void TestAddSetGet0610() {
+        //
+        // Error case 1:
+        // - Upon initialization calendar fields, millis = System.currentTime
+        // - After set is called fields are initialized, time is not
+        // - Addition uses millis which are still *now*
+        //
+        {
+            Calendar calendar = new GregorianCalendar( ) ;
+            calendar.set( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "1A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "1B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 2:
+        // - Upon initialization calendar fields set, millis = 0
+        // - Addition uses millis which are still 1970, 0, 1
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "2A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "2B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 3:
+        // - Upon initialization calendar fields, millis = 0
+        // - getTime( ) is called which forces the millis to be set
+        // - Addition uses millis which are correct
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "3A) " + value( calendar ) ) ;
+            calendar.getTime( ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "3B) " + v ) ;
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+    }
+    static String value( Calendar calendar ) {
+        return( calendar.get( Calendar.YEAR )  + "/" +
+                calendar.get( Calendar.MONTH ) + "/" +
+                calendar.get( Calendar.DATE ) ) ;
+    }
+    static String EXPECTED_0610 = "1993/0/5";
+
+    // Test that certain fields on a certain date are as expected.
+    public void TestFields060() {
+        int year = 1997;
+        int month = java.util.Calendar.OCTOBER;  //october
+        int dDate = 22;   //DAYOFWEEK should return 3 for Wednesday
+        GregorianCalendar calendar = null;
+
+        calendar = new GregorianCalendar( year, month, dDate);
+        for (int i=0; i<EXPECTED_FIELDS.length; ) {
+            int field = EXPECTED_FIELDS[i++];
+            int expected = EXPECTED_FIELDS[i++];
+            if (calendar.get(field) != expected) {
+                errln("Expected field " + field + " to have value " + expected +
+                      "; received " + calendar.get(field) + " instead");
+            }
+        }
+    }
+    static int EXPECTED_FIELDS[] = {
+        Calendar.YEAR, 1997,
+        Calendar.MONTH, Calendar.OCTOBER,
+        Calendar.DAY_OF_MONTH, 22,
+        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY,
+        Calendar.DAY_OF_WEEK_IN_MONTH, 4,
+        Calendar.DAY_OF_YEAR, 295
+    };
+
+    // Verify that the fields are as expected (mostly zero) at the epoch start.
+    // Note that we adjust for the default timezone to get most things to zero.
+    public void TestEpochStartFields() {
+        TimeZone z = TimeZone.getDefault();
+        Calendar c = Calendar.getInstance();
+        Date d = new Date(-z.getRawOffset());
+        if (z.inDaylightTime(d)) {
+            logln("Warning: Skipping test because " + d +
+                  " is in DST.");
+        }
+        else {
+            c.setTime(d);
+            for (int i=0; i<Calendar.ZONE_OFFSET; ++i) {
+                if (c.get(i) != EPOCH_FIELDS[i])
+                    errln("Expected field " + i + " to have value " + EPOCH_FIELDS[i] +
+                          "; saw " + c.get(i) + " instead");
+            }
+            if (c.get(Calendar.ZONE_OFFSET) != z.getRawOffset())
+                errln("Expected field ZONE_OFFSET to have value " + z.getRawOffset() +
+                      "; saw " + c.get(Calendar.ZONE_OFFSET) + " instead");
+            if (c.get(Calendar.DST_OFFSET) != 0)
+                errln("Expected field DST_OFFSET to have value 0" +
+                      "; saw " + c.get(Calendar.DST_OFFSET) + " instead");
+        }
+    }
+    // These are the fields at the epoch start
+    static int EPOCH_FIELDS[] = { 1, 1970, 0, 1, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, -28800000, 0 };
+
+    // Verify that as you add days to the calendar (e.g., 24 day periods),
+    // the day of the week shifts in the expected pattern.
+    public void TestDOWProgression() {
+        Calendar cal =
+            new GregorianCalendar(1972, Calendar.OCTOBER, 26);
+        marchByDelta(cal, 24); // Last parameter must be != 0 modulo 7
+    }
+
+    // Supply a delta which is not a multiple of 7.
+    void marchByDelta(Calendar cal, int delta) {
+        Calendar cur = (Calendar)cal.clone();
+        int initialDOW = cur.get(Calendar.DAY_OF_WEEK);
+        int DOW, newDOW = initialDOW;
+        do {
+            DOW = newDOW;
+            logln("DOW = " + DOW + "  " + cur.getTime());
+
+            cur.add(Calendar.DAY_OF_WEEK, delta);
+            newDOW = cur.get(Calendar.DAY_OF_WEEK);
+            int expectedDOW = 1 + (DOW + delta - 1) % 7;
+            if (newDOW != expectedDOW) {
+                errln("Day of week should be " + expectedDOW +
+                      " instead of " + newDOW + " on " + cur.getTime());
+                return;
+            }
+        }
+        while (newDOW != initialDOW);
+    }
+
+    public void TestActualMinMax() {
+        Calendar cal = new GregorianCalendar(1967, Calendar.MARCH, 10);
+        cal.setFirstDayOfWeek(Calendar.SUNDAY);
+        cal.setMinimalDaysInFirstWeek(3);
+
+        if (cal.getActualMinimum(Calendar.DAY_OF_MONTH) != 1)
+            errln("Actual minimum date for 3/10/1967 should have been 1; got " +
+                  cal.getActualMinimum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 31)
+            errln("Actual maximum date for 3/10/1967 should have been 31; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 28)
+            errln("Actual maximum date for 2/10/1967 should have been 28; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 365)
+            errln("Number of days in 1967 should have been 365; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1968);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 29)
+            errln("Actual maximum date for 2/10/1968 should have been 29; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 366)
+            errln("Number of days in 1968 should have been 366; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 52)
+            errln("Number of weeks in 1968 should have been 52; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1976);
+        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); // Added - Liu 11/6/00
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 53)
+            errln("Number of weeks in 1976 should have been 53; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+    }
+
+    public void TestRoll() {
+        Calendar cal = new GregorianCalendar(1997, Calendar.JANUARY, 31);
+
+        int[] dayValues = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31 };
+        for (int i = 0; i < dayValues.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.MONTH, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues[i])
+                errln("Rolling the month in 1/31/1997 up by " + i + " should have yielded "
+                      + ((i + 1) % 12) + "/" + dayValues[i] + "/1997, but actually yielded "
+                      + ((i + 1) % 12) + "/" + cal2.get(Calendar.DAY_OF_MONTH) + "/1997.");
+        }
+
+        cal.set(1996, Calendar.FEBRUARY, 29);
+
+        //int[] monthValues = { 1, 2, 2, 2, 1, 2, 2, 2, 1, 2 };
+        //int[] dayValues2 = { 29, 1, 1, 1, 29, 1, 1, 1, 29, 1 };
+
+        // I've revised the expected values to make more sense -- rolling
+        // the year should pin the DAY_OF_MONTH. - Liu 11/6/00
+        int[] monthValues = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+        int[] dayValues2 = { 29, 28, 28, 28, 29, 28, 28, 28, 29, 28 };
+
+        for (int i = 0; i < dayValues2.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.YEAR, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues2[i] || cal2.get(Calendar.MONTH)
+                != monthValues[i])
+                errln("Roll 2/29/1996 by " + i + " year: expected "
+                      + (monthValues[i] + 1) + "/" + dayValues2[i] + "/"
+                      + (1996 + i) + ", got "
+                      + (cal2.get(Calendar.MONTH) + 1) + "/" +
+                      cal2.get(Calendar.DAY_OF_MONTH) + "/" + cal2.get(Calendar.YEAR));
+        }
+
+        // Test rolling hour of day
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR_OF_DAY, -2);
+        int f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 22) errln("Rolling HOUR_OF_DAY=0 delta=-2 gave " + f + " Wanted 22");
+        cal.roll(Calendar.HOUR_OF_DAY, 5);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 3) errln("Rolling HOUR_OF_DAY=22 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR_OF_DAY, 21);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 0) errln("Rolling HOUR_OF_DAY=3 delta=21 gave " + f + " Wanted 0");
+
+        // Test rolling hour
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR, -2);
+        f = cal.get(Calendar.HOUR);
+        if (f != 10) errln("Rolling HOUR=0 delta=-2 gave " + f + " Wanted 10");
+        cal.roll(Calendar.HOUR, 5);
+        f = cal.get(Calendar.HOUR);
+        if (f != 3) errln("Rolling HOUR=10 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR, 9);
+        f = cal.get(Calendar.HOUR);
+        if (f != 0) errln("Rolling HOUR=3 delta=9 gave " + f + " Wanted 0");
+    }
+
+    public void TestComputeJulianDay4406() {
+        // jb4406 is probably not a bug, this is to document the behavior
+        GregorianCalendar cal = new GregorianCalendar();
+        final int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
+        
+        logln("julian day value jumps at changeover");
+        for (int day = 12; day < 18; ++day) {
+            cal.set(1582, 9, day);
+            logln("[" + day + "] " + (cal.getTimeInMillis()/MILLIS_IN_DAY));
+        }
+
+        logln("\njulian days not accurate before 1 March 0004");
+        for (int day = 1; day < 3; ++day) {
+            cal.set(1, 0, day);
+            logln("[" + day + "] " + (cal.getTimeInMillis()/MILLIS_IN_DAY));
+        }
+
+        DateFormat fmt = cal.getDateTimeFormat(DateFormat.LONG, 0, Locale.getDefault());
+
+        logln("\nswitchover in 1582");
+        cal.set(1582, 9, 4);
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+
+        logln("\nlate switchover - proleptic Julian");
+        cal.set(1582, 9, 4);
+        cal.setGregorianChange(new Date(Long.MAX_VALUE));
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+
+        logln("\nearly switchover - proleptic Gregorian");
+        cal.set(1582, 9, 4);
+        cal.setGregorianChange(new Date(Long.MIN_VALUE));
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/CopticTest.java b/src/com/ibm/icu/dev/test/calendar/CopticTest.java
new file mode 100644
index 0000000..4d4567b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CopticTest.java
@@ -0,0 +1,334 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.CopticCalendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>CopticCalendar</code> class.
+ */
+public class CopticTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new CopticTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int TOUT      = CopticCalendar.TOUT;
+    public static final int BABA      = CopticCalendar.BABA;
+    public static final int HATOR     = CopticCalendar.HATOR;
+    public static final int KIAHK     = CopticCalendar.KIAHK;
+    public static final int TOBA      = CopticCalendar.TOBA;
+    public static final int AMSHIR    = CopticCalendar.AMSHIR;
+    public static final int BARAMHAT  = CopticCalendar.BARAMHAT;
+    public static final int BARAMOUDA = CopticCalendar.BARAMOUDA;
+    public static final int BASHANS   = CopticCalendar.BASHANS;
+    public static final int PAONA     = CopticCalendar.PAONA;
+    public static final int EPEP      = CopticCalendar.EPEP;
+    public static final int MESRA     = CopticCalendar.MESRA;
+    public static final int NASIE     = CopticCalendar.NASIE;
+
+    /* Test dates from:
+     * "The Amharic Letters of Emperor Theodore of Ethiopia to Queen Victoria and
+     * Her Special Envoy", David Appleyard, Girma Selasse Asfaw, Oxford University Press, 
+     * June 1 1979, ISBN: 0856726605, Longwood Pr Ltd
+     *  
+     * Coptic         Gregorian    JD
+     * 20/02/1579     29/10/1862  2401443 
+     * 29/10/1581     05/07/1865  2402423
+     * 22/05/1582     29/01/1866  2402631
+     * 10/08/1582     17/04/1866  2402709
+     * 28/04/1583     05/01/1867  2402972
+     * 05/05/1584     13/01/1868  2403345
+     * 
+     * --------------------------------------------------
+     * 
+     * From the Calendrica applet:  http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html
+     * 
+     * Coptic         Gregorian    JD
+     * 07/05/-284     01/01/0000  1721060
+     * 08/05/-283     01/01/0001  1721426
+     * 06/13/-1       29/08/0283  1824664
+     * 
+     * 01/01/0000     30/08/0283  1824665
+     * 01/01/0001     29/08/0284  1825030
+     * 01/01/0002     29/08/0285  1825395
+     * 01/01/0003     29/08/0286  1825760
+     * 01/01/0004     30/08/0287  1826126
+     * 05/13/0000     28/08/0284  1825029 
+     * 05/13/0001     28/08/0285  1825394
+     * 05/13/0002     28/08/0286  1825759
+     * 05/13/0003     28/08/0287  1826124
+     * 06/13/0003     29/08/0287  1826125  first coptic leap year
+     * 05/13/0004     28/08/0288  1826490
+     * 
+     * 06/02/1299     13/10/1582  2299159
+     * 07/02/1299     14/10/1582  2299160  Julian 04/10/1582
+     * 08/02/1299     15/10/1582  2299161
+     * 09/02/1299     16/10/1582  2299162
+     * 
+     * 23/04/1616     01/01/1900  2415021
+     * 23/04/1721     01/01/2005  2453372 
+     * 05/13/2000     12/09/2284  2555529
+     */
+
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Coptic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            //
+            // Dates from "Emporer Theodore..."
+
+            new TestCase(2401442.5,  1,  1579,    2,  20,  WED,    0,  0,  0), // Gregorian: 20/10/1862
+            new TestCase(2402422.5,  1,  1581,   10,  29,  WED,    0,  0,  0), // Gregorian: 05/07/1865
+            new TestCase(2402630.5,  1,  1582,    5,  22,  MON,    0,  0,  0), // Gregorian: 29/01/1866
+            new TestCase(2402708.5,  1,  1582,    8,  10,  TUE,    0,  0,  0), // Gregorian: 17/04/1866
+            new TestCase(2402971.5,  1,  1583,    4,  28,  SAT,    0,  0,  0), // Gregorian: 05/01/1867
+            new TestCase(2403344.5,  1,  1584,    5,   5,  MON,    0,  0,  0), // Gregorian: 13/01/1868
+            new TestCase(1721059.5,  0,   285,    5,   7,  SAT,    0,  0,  0), // Gregorian: 01/01/0000
+            new TestCase(1721425.5,  0,   284,    5,   8,  MON,    0,  0,  0), // Gregorian: 01/01/0001
+            new TestCase(1824663.5,  0,     2,   13,   6,  WED,    0,  0,  0), // Gregorian: 29/08/0283
+            new TestCase(1824664.5,  0,     1,    1,   1,  THU,    0,  0,  0), // Gregorian: 30/08/0283
+            new TestCase(1825029.5,  1,     1,    1,   1,  FRI,    0,  0,  0), // Gregorian: 29/08/0284
+            new TestCase(1825394.5,  1,     2,    1,   1,  SAT,    0,  0,  0), // Gregorian: 29/08/0285
+            new TestCase(1825759.5,  1,     3,    1,   1,  SUN,    0,  0,  0), // Gregorian: 29/08/0286
+            new TestCase(1826125.5,  1,     4,    1,   1,  TUE,    0,  0,  0), // Gregorian: 30/08/0287
+            new TestCase(1825028.5,  0,     1,   13,   5,  THU,    0,  0,  0), // Gregorian: 28/08/0284
+            new TestCase(1825393.5,  1,     1,   13,   5,  FRI,    0,  0,  0), // Gregorian: 28/08/0285
+            new TestCase(1825758.5,  1,     2,   13,   5,  SAT,    0,  0,  0), // Gregorian: 28/08/0286
+            new TestCase(1826123.5,  1,     3,   13,   5,  SUN,    0,  0,  0), // Gregorian: 28/08/0287
+            new TestCase(1826124.5,  1,     3,   13,   6,  MON,    0,  0,  0), // Gregorian: 29/08/0287
+                          // above is first coptic leap year
+            new TestCase(1826489.5,  1,     4,   13,   5,  TUE,    0,  0,  0), // Gregorian: 28/08/0288
+            new TestCase(2299158.5,  1,  1299,    2,   6,  WED,    0,  0,  0), // Gregorian: 13/10/1582
+            new TestCase(2299159.5,  1,  1299,    2,   7,  THU,    0,  0,  0), // Gregorian: 14/10/1582
+
+            new TestCase(2299160.5,  1,  1299,    2,   8,  FRI,    0,  0,  0), // Gregorian: 15/10/1582
+            new TestCase(2299161.5,  1,  1299,    2,   9,  SAT,    0,  0,  0), // Gregorian: 16/10/1582
+
+            new TestCase(2415020.5,  1,  1616,    4,  23,  MON,    0,  0,  0), // Gregorian: 01/01/1900
+            new TestCase(2453371.5,  1,  1721,    4,  23,  SAT,    0,  0,  0), // Gregorian: 01/01/2005
+            new TestCase(2555528.5,  1,  2000,   13,   5,  FRI,    0,  0,  0), // Gregorian: 12/09/2284
+        };
+        
+        CopticCalendar testCalendar = new CopticCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+    }
+
+    // basic sanity check that the conversion algorithm round-trips
+    public void TestCopticToJD() {
+        CopticCalendar cal = new CopticCalendar();
+        cal.clear();
+        for (int y = -2; y < 3; ++y) {
+            for (int m = 0; m < 12; ++m) { // don't understand rules for 13th month
+                for (int d = 1; d < 25; d += 3) { // play it safe on days per month
+                    int jd = CopticCalendar.copticToJD(y, m, d);
+                    cal.set(Calendar.JULIAN_DAY, jd);
+                    int eyear = cal.get(Calendar.EXTENDED_YEAR);
+                    int month = cal.get(Calendar.MONTH);
+                    int day = cal.get(Calendar.DAY_OF_MONTH);
+                    if (!(y == eyear &&
+                          m == month &&
+                          d == day)) {
+                        errln("y: " + y +
+                              " m: " + m + 
+                              " d: " + d + 
+                              " --> jd: " + jd +
+                              " --> y: " + eyear +
+                              " m: " + month +
+                              " d: " + day);
+                    }
+                }
+            }
+        }
+    }
+
+    // basic check to see that we print out eras ok
+    // eventually should modify to use locale strings and formatter appropriate to coptic calendar
+    public void TestEraStart() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+
+        CopticCalendar cal = new CopticCalendar(1, 0, 1);
+        assertEquals("Coptic Date", "Fri Jan 01, 0001 AD", fmt.format(cal));
+        assertEquals("Gregorian Date", "Fri Aug 29, 0284 AD", fmt.format(cal.getTime()));
+
+        cal.set(Calendar.ERA, 0);
+        cal.set(Calendar.YEAR, 1);
+        assertEquals("Coptic Date", "Thu Jan 01, 0001 BC", fmt.format(cal));
+        assertEquals("Gregorian Date", "Thu Aug 30, 0283 AD", fmt.format(cal.getTime()));
+    }
+
+    public void TestBasic() {
+        CopticCalendar cal = new CopticCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    /**
+     * Test limits of the Coptic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        CopticCalendar coptic = new CopticCalendar();
+        doLimitsTest(coptic, null, cal.getTime());
+        doTheoreticalLimitsTest(coptic, true);
+    }
+
+    public void TestCoverage() {
+
+        {
+            // new CopticCalendar(TimeZone)
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create CopticCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new CopticCalendar(ULocale)
+            CopticCalendar cal = new CopticCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create CopticCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new CopticCalendar(Locale)
+            CopticCalendar cal = new CopticCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create CopticCalendar with Locale");
+            }
+        }
+        
+        {                                                                                       
+            // new CopticCalendar(TimeZone, Locale)                                             
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault(),Locale.getDefault()); 
+            if(cal == null){                                                                    
+                errln("could not create CopticCalendar with TimeZone, Locale");                 
+            }                                                                                   
+        }                                                                                       
+                                                                                                
+        {                                                                                       
+            // new CopticCalendar(TimeZone, ULocale)                                            
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault(),ULocale.getDefault());
+            if(cal == null){                                                                    
+                errln("could not create CopticCalendar with TimeZone, ULocale");                
+            }                                                                                   
+        }                                                                                       
+        
+        {
+            // new CopticCalendar(Date)
+            CopticCalendar cal = new CopticCalendar(new Date());
+            if(cal == null){
+                errln("could not create CopticCalendar with Date");
+            }
+        }
+
+        {
+            // new CopticCalendar(int year, int month, int date)
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1);
+            if(cal == null){
+                errln("could not create CopticCalendar with year,month,date");
+            }
+        }
+
+        {
+            // new CopticCalendar(int year, int month, int date, int hour, int minute, int second)
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create CopticCalendar with year,month,date,hour,minute,second");
+            }
+        }
+    
+        {
+            // data
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1);
+            Date time = cal.getTime();
+
+            String[] calendarLocales = {
+                "am_ET", "gez_ET", "ti_ET"
+            };
+
+            String[] formatLocales = {
+                "en", "am", "am_ET", "gez", "ti"
+            };
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                cal = new CopticCalendar(calLocale);
+
+                for (int j = 0; j < formatLocales.length; ++j) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(time));
+                }
+            }
+        }
+    }
+
+    public void TestYear() {
+        // Gregorian Calendar
+        Calendar gCal= new GregorianCalendar();
+        Date gToday=gCal.getTime();
+        gCal.add(GregorianCalendar.MONTH,2);
+        Date gFuture=gCal.getTime();
+        DateFormat gDF = DateFormat.getDateInstance(gCal,DateFormat.FULL);
+        logln("gregorian calendar: " + gDF.format(gToday) +
+              " + 2 months = " + gDF.format(gFuture));
+
+        // Coptic Calendar
+        CopticCalendar cCal= new CopticCalendar();
+        Date cToday=cCal.getTime();
+        cCal.add(CopticCalendar.MONTH,2);
+        Date cFuture=cCal.getTime();
+        DateFormat cDF = DateFormat.getDateInstance(cCal,DateFormat.FULL);
+        logln("coptic calendar: " + cDF.format(cToday) +
+              " + 2 months = " + cDF.format(cFuture));
+
+        // EthiopicCalendar
+        EthiopicCalendar eCal= new EthiopicCalendar();
+        Date eToday=eCal.getTime();
+        eCal.add(EthiopicCalendar.MONTH,2); // add 2 months
+        eCal.setAmeteAlemEra(false);
+        Date eFuture=eCal.getTime();
+        DateFormat eDF = DateFormat.getDateInstance(eCal,DateFormat.FULL);
+        logln("ethiopic calendar: " + eDF.format(eToday) +
+              " + 2 months = " + eDF.format(eFuture));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java b/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
new file mode 100644
index 0000000..15342f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
@@ -0,0 +1,296 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.util.CalendarFieldsSet;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ * 
+ * analog of dadrcal.cpp
+ *
+ */
+public class DataDrivenCalendarTest extends ModuleTest {
+
+    public DataDrivenCalendarTest() {
+        super("com/ibm/icu/dev/data/testdata/", "calendar");
+    }
+        
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    public void processModules() {
+        //String testName = t.getName().toString();
+
+        for (Iterator siter = t.getSettingsIterator(); siter.hasNext();) {
+            // Iterate through and get each of the test case to process
+            DataMap settings = (DataMap) siter.next();
+            
+            String type = settings.getString("Type");
+            
+            if(type.equals("convert_fwd")) {
+                testConvert(t, settings, true);
+            } else if(type.equals("convert_rev")) {
+                testConvert(t, settings, false);
+            } else if(type.equals("ops")) {
+                testOps(t, settings);
+            } else {
+                errln("Unknown type: " + type);
+            }
+        }
+    }
+    
+
+    void testConvert(String caseString,
+             CalendarFieldsSet fromSet, Calendar fromCalendar,
+             CalendarFieldsSet toSet, Calendar toCalendar, boolean forward) {
+        String thisString = caseString+(forward ? "forward"
+                : "reverse")+" "+fromCalendar.getType()+"->"+toCalendar.getType()+" ";
+
+        fromCalendar.clear();
+
+        fromSet.setOnCalendar(fromCalendar);
+
+        CalendarFieldsSet diffSet = new CalendarFieldsSet();
+
+        diffSet.clear();
+        // Is the calendar sane at the first?
+        if (!fromSet.matches(fromCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(fromSet);
+            errln((String)"FAIL: "+thisString
+                    +", SOURCE calendar was not set: Differences: "+ diffs);
+        } else {
+            logln("PASS: "+thisString+" SOURCE calendar match.");
+        }
+
+        //logln("Set Source calendar: " + from);
+
+        Date fromTime = fromCalendar.getTime();
+
+        diffSet.clear();
+        // Is the calendar sane after being set?
+        if (!fromSet.matches(fromCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(fromSet);
+            errln((String)"FAIL: "+thisString
+                    +", SET SOURCE calendar was not set: Differences: "+ diffs);
+        } else {
+            logln("PASS: "+thisString+" SET SOURCE calendar match.");
+        }
+
+        toCalendar.clear();
+        toCalendar.setTime(fromTime);
+
+        diffSet.clear();
+        if (!toSet.matches(toCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(toSet);
+            errln((String)"FAIL: "+thisString+", Differences: "+ diffs);
+            DateFormat fmt = new SimpleDateFormat(new String("EEE MMM dd yyyy G"));
+            String fromString = fmt.format(fromTime);
+            logln("Source Time: "+fromString+", Source Calendar: "
+                    +fromCalendar.getType());
+        } else {
+            logln("PASS: "+thisString+" match.");
+        }
+    }
+
+
+    
+    private void testConvert(TestDataModule.TestData testData, DataMap settings, boolean forward) {
+        Calendar toCalendar= null;
+        // build to calendar
+        String testSetting = settings.getString("ToCalendar");
+        ULocale loc = new ULocale(testSetting);
+        toCalendar = Calendar.getInstance(loc);
+        CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet();
+//        DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+        // Start the processing
+        int n = 0;
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            DataMap currentCase = (DataMap) iter.next();
+            
+            String caseString = "["+testData.getName()+"#"+n+" "+"]";
+             String locale = testSetting = currentCase.getString("locale");
+            ULocale fromLoc = new ULocale(testSetting);
+            Calendar fromCalendar = Calendar.getInstance(fromLoc);
+            
+            fromSet.clear();
+            toSet.clear();
+
+            String from = currentCase.getString("from");
+            fromSet.parseFrom(from);
+            String to = currentCase.getString("to");
+            toSet.parseFrom(to, fromSet);
+
+            // now, do it.
+            if (forward) {
+                logln(caseString +" "+locale+"/"+from+" >>> "+loc+"/"
+                        +to);
+                testConvert(caseString, fromSet, fromCalendar, toSet, toCalendar, forward);
+            } else {
+                logln(caseString +" "+locale+"/"+from+" <<< "+loc+"/"
+                        +to);
+                testConvert(caseString, toSet, toCalendar, fromSet, fromCalendar, forward);
+            }
+        }
+    }
+    
+    private static final String kADD = "add";
+    private static final String kROLL = "roll";
+    private static final String kMILLIS = "MILLIS=";
+    
+    private void testOps(TestDataModule.TestData testData, DataMap settings) {
+        // Get 'from' time 
+        CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet(), paramsSet = new CalendarFieldsSet(), diffSet = new CalendarFieldsSet();
+//        DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+        // Start the processing
+        int n = 0;
+        long fromDate = 0;
+        long toDate = 0;
+        
+        boolean useDate = false;
+        
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            DataMap currentCase = (DataMap) iter.next();
+            
+            String caseString = "[case "+n+"]";
+            // build to calendar
+            //             Headers { "locale","from","operation","params","to" }
+            // #1 locale
+            String param = "locale";
+            String locale;
+            String testSetting = currentCase.getString(param);
+            locale = testSetting;
+            ULocale loc = new ULocale(locale);
+            Calendar fromCalendar = Calendar.getInstance(loc);
+
+            fromSet.clear();
+            // #2 'from' info
+            param = "from";
+            String from = testSetting=currentCase.getString(param);
+            if(from.startsWith(kMILLIS)){
+                useDate = true;
+                fromDate = Long.parseLong(from.substring(kMILLIS.length()));
+            }else{
+                fromSet.parseFrom(testSetting);
+            }
+//            System.err.println("fromset: ["+testSetting+"] >> " + fromSet);
+
+            // #4 'operation' info
+            param = "operation";
+            String operation = testSetting=currentCase.getString(param);
+            paramsSet.clear();
+            // #3 'params' info
+            param = "params";
+            String paramsData = testSetting =  currentCase.getString(param);
+            paramsSet.parseFrom(paramsData); // parse with inheritance.
+//            System.err.println("paramsSet: ["+testSetting+"] >> " + paramsSet);
+            
+            toSet.clear();
+            // #4 'to' info
+            param = "to";
+            String to = testSetting=currentCase.getString(param);
+           if(to.startsWith(kMILLIS)){
+                useDate = true;
+                toDate = Long.parseLong(to.substring(kMILLIS.length()));
+            }else{ 
+                toSet.parseFrom(testSetting, fromSet);
+           }
+            //toSet.parseFrom(testSetting, fromSet); // parse with inheritance.
+//            System.err.println("toSet: ["+testSetting+"] >> " + toSet);
+
+            String caseContentsString = locale+":  from "+from+": "
+                    +operation +" [[[ "+paramsSet+" ]]]   >>> "+to;
+            logln(caseString+": "+caseContentsString);
+
+            // ------
+            // now, do it.
+
+            /// prepare calendar
+            if(useDate){
+                fromCalendar.setTimeInMillis(fromDate);
+            }else {
+                fromSet.setOnCalendar(fromCalendar);
+            }
+            
+            // from calendar:  'starting date'
+            
+            diffSet.clear();
+            
+            // Is the calendar sane after being set?
+            if (!fromSet.matches(fromCalendar, diffSet)) {
+                String diffs = diffSet.diffFrom(fromSet);
+                errln((String)"FAIL: "+caseString
+                        +", SET SOURCE calendar was not set: Differences: "+ diffs);
+            }  else {
+                logln(" "+caseString+" SET SOURCE calendar match."); // verifies that the requested fields were set.
+            }
+            
+            // to calendar - copy of from calendar
+            Calendar toCalendar = (Calendar)fromCalendar.clone();
+
+            /// perform op on 'to calendar'
+            for (int q=0; q<paramsSet.fieldCount(); q++) {
+                if (paramsSet.isSet(q)) {
+                    if (operation.equals(kROLL)) {
+                        toCalendar.roll(q,
+                                paramsSet.get(q));
+                    } else if (operation.equals(kADD)) {
+                        toCalendar.add(q,
+                                paramsSet.get(q));
+                    } else {
+                        errln(caseString+ " FAIL: unknown operation "+ operation);
+                    }
+                    logln(operation + " of "+ paramsSet.get(q));
+                }
+            }
+            // now - what's the result?
+            diffSet.clear();
+
+            // toset contains 'expected'
+            
+            if(useDate) {
+                    if(toCalendar.getTimeInMillis()==toDate) {
+                        logln(caseString + " SUCCESS: got=expected="+toDate);
+                        logln("PASS: "+caseString+" matched! ");
+                    } else {
+                        errln(caseString + " FAIL: got " + 
+                                toCalendar.getTimeInMillis() + "  expected " + 
+                                toDate);
+                    }
+            }else if (!toSet.matches(toCalendar, diffSet)) {
+                String diffs = diffSet.diffFrom(toSet);
+                errln((String)"FAIL: "+caseString+" - , "+caseContentsString
+                        +" Differences: "+ diffs );
+            } else{
+                logln("PASS: "+caseString+" matched! ");
+            }
+            
+        }
+    }
+
+   
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) throws Exception {
+        new DataDrivenCalendarTest().run(args);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java b/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
new file mode 100644
index 0000000..43c3b70
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
@@ -0,0 +1,419 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>EthiopicCalendar</code> class.
+ */
+public class EthiopicTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new EthiopicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MESKEREM = EthiopicCalendar.MESKEREM;
+    public static final int TEKEMT   = EthiopicCalendar.TEKEMT;
+    public static final int HEDAR    = EthiopicCalendar.HEDAR;
+    public static final int TAHSAS   = EthiopicCalendar.TAHSAS;
+    public static final int TER      = EthiopicCalendar.TER;
+    public static final int YEKATIT  = EthiopicCalendar.YEKATIT;
+    public static final int MEGABIT  = EthiopicCalendar.MEGABIT;
+    public static final int MIAZIA   = EthiopicCalendar.MIAZIA;
+    public static final int GENBOT   = EthiopicCalendar.GENBOT;
+    public static final int SENE     = EthiopicCalendar.SENE;
+    public static final int HAMLE    = EthiopicCalendar.HAMLE;
+    public static final int NEHASSE  = EthiopicCalendar.NEHASSE;
+    public static final int PAGUMEN  = EthiopicCalendar.PAGUMEN;
+
+    /* DY[20050507]  I don't know what this is for yet: 
+       public void TestRoll() {
+       int[][] tests = new int[][] {
+       //       input                roll by          output
+       //  year  month     day     field amount    year  month     day
+    
+       {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+       {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+       {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+       {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+       {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+       {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+       {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+       // Try some rolls that require other fields to be adjusted
+       {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+       {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+       };
+       
+       EthiopicCalendar cal = newCivil();
+
+       doRollAdd(ROLL, cal, tests);
+       }
+    */
+
+    /* Test dates from:
+     * "The Amharic Letters of Emperor Theodore of Ethiopia to Queen Victoria and
+     * Her Special Envoy", David Appleyard, Girma Selasse Asfaw, Oxford University Press, 
+     * June 1 1979, ISBN: 0856726605, Longwood Pr Ltd
+     *  
+     * Ethiopic       Gregorian    JD
+     * 20/02/1855     29/10/1862  2401443
+     * 29/10/1857     05/07/1865  2402423
+     * 22/05/1858     29/01/1866  2402631
+     * 10/08/1858     17/04/1866  2402709
+     * 28/04/1859     05/01/1867  2402972
+     * 05/05/1860     13/01/1868  2403345
+     * 
+     * --------------------------------------------------
+     * 
+     * From the Calendrica applet:  http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html
+     * 
+     * Ethiopic       Gregorian    JD
+     * 07/05/-8       01/01/0000  1721060
+     * 08/05/-7       01/01/0001  1721426
+     * 06/13/-1       27/08/0007  1723855
+     * 
+     * 01/01/0000     28/08/0007  1723856
+     * 01/01/0001     27/08/0008  1724221
+     * 01/01/0002     27/08/0009  1724586
+     * 01/01/0003     27/08/0010  1724951
+     * 01/01/0004     28/08/0011  1724537
+     * 05/13/0000     26/08/0008  1724220
+     * 05/13/0001     26/08/0009  1724585
+     * 05/13/0002     26/08/0010  1724950
+     * 05/13/0003     26/08/0011  1725315
+     * 06/13/0003     27/08/0011  1725316  first ethiopian leap year
+     * 05/13/0004     26/08/0012  1725561
+     * 
+     * 06/02/1575     13/10/1582  2299159
+     * 07/02/1575     14/10/1582  2299160  Julian 04/10/1582
+     * 08/02/1575     15/10/1582  2299161
+     * 09/02/1575     16/10/1582  2299162
+     * 
+     * 23/04/1892     01/01/1900  2415021
+     * 23/04/1997     01/01/2005  2453372
+     * 05/13/2000     10/09/2008  2454720
+     */
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Ethiopic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            //
+            // Dates from "Emporer Theodore..."
+
+            new TestCase(2401442.5,  1,  1855,    2,  20,  WED,   0,  0,  0), // Gregorian: 29/10/1862
+            new TestCase(2402422.5,  1,  1857,   10,  29,  WED,   0,  0,  0), // Gregorian: 05/07/1865
+            new TestCase(2402630.5,  1,  1858,    5,  22,  MON,   0,  0,  0), // Gregorian: 29/01/1866
+            new TestCase(2402708.5,  1,  1858,    8,  10,  TUE,   0,  0,  0), // Gregorian: 17/04/1866
+            new TestCase(2402971.5,  1,  1859,    4,  28,  SAT,   0,  0,  0), // Gregorian: 05/01/1867
+            new TestCase(2403344.5,  1,  1860,    5,   5,  MON,   0,  0,  0), // Gregorian: 13/01/1868
+                        
+            // Miscellaneous:
+            /* Skip these tests until JD bug fixed in the Gregorian calendar:
+             * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest
+             */
+            new TestCase(1721059.5,  0,  5492,    5,   7,  SAT,   0,  0,  0), // Gregorian: 01/01/0000
+            new TestCase(1721425.5,  0,  5493,    5,   8,  MON,   0,  0,  0), // Gregorian: 01/01/0001
+            new TestCase(1723854.5,  0,  5499,   13,   6,  MON,   0,  0,  0), // Gregorian: 27/08/0007
+
+            new TestCase(1723855.5,  0,  5500,    1,   1,  TUE,   0,  0,  0), // Gregorian: 28/08/0007
+            new TestCase(1724220.5,  1,     1,    1,   1,  WED,   0,  0,  0), // Gregorian: 27/08/0008
+            new TestCase(1724585.5,  1,     2,    1,   1,  THU,   0,  0,  0), // Gregorian: 27/08/0009
+            new TestCase(1724950.5,  1,     3,    1,   1,  FRI,   0,  0,  0), // Gregorian: 27/08/0010
+
+            // new TestCase(1724536.5,  1,     4,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011
+            new TestCase(1725316.5,  1,     4,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011 - dlf
+            new TestCase(1724219.5,  0,  5500,   13,   5,  TUE,   0,  0,  0), // Gregorian: 26/08/0008
+            new TestCase(1724584.5,  1,     1,   13,   5,  WED,   0,  0,  0), // Gregorian: 26/08/0009
+            new TestCase(1724949.5,  1,     2,   13,   5,  THU,   0,  0,  0), // Gregorian: 26/08/0010
+            new TestCase(1725314.5,  1,     3,   13,   5,  FRI,   0,  0,  0), // Gregorian: 26/08/0011
+            new TestCase(1725315.5,  1,     3,   13,   6,  SAT,   0,  0,  0), // Gregorian: 27/08/0011 - first ethiopic leap year
+            // new TestCase(1725560.5,  1,     4,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012 - dlf
+            new TestCase(1725680.5,  1,     4,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012
+            new TestCase(2299158.5,  1,  1575,    2,   6,  WED,   0,  0,  0), // Gregorian: 13/10/1582  
+            new TestCase(2299159.5,  1,  1575,    2,   7,  THU,   0,  0,  0), // Gregorian: 14/10/1582  Julian 04/10/1582
+
+            new TestCase(2299160.5,  1,  1575,    2,   8,  FRI,   0,  0,  0), // Gregorian: 15/10/1582
+            new TestCase(2299161.5,  1,  1575,    2,   9,  SAT,   0,  0,  0), // Gregorian: 16/10/1582
+
+            new TestCase(2415020.5,  1,  1892,    4,  23,  MON,   0,  0,  0), // Gregorian: 01/01/1900
+            new TestCase(2453371.5,  1,  1997,    4,  23,  SAT,   0,  0,  0), // Gregorian: 01/01/2005
+            new TestCase(2454719.5,  1,  2000,   13,   5,  WED,   0,  0,  0), // Gregorian: 10/09/2008
+        };
+
+        final TestCase[] testsAmeteAlem = {
+                //
+                // The months in this table are 1-based rather than 0-based,
+                // because it's easier to edit that way.
+                //                      Ethiopic
+                //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                //
+                // Dates from "Emporer Theodore..."
+
+                new TestCase(2401442.5,  0,  7355,    2,  20,  WED,   0,  0,  0), // Gregorian: 29/10/1862
+                new TestCase(2402422.5,  0,  7357,   10,  29,  WED,   0,  0,  0), // Gregorian: 05/07/1865
+                new TestCase(2402630.5,  0,  7358,    5,  22,  MON,   0,  0,  0), // Gregorian: 29/01/1866
+                new TestCase(2402708.5,  0,  7358,    8,  10,  TUE,   0,  0,  0), // Gregorian: 17/04/1866
+                new TestCase(2402971.5,  0,  7359,    4,  28,  SAT,   0,  0,  0), // Gregorian: 05/01/1867
+                new TestCase(2403344.5,  0,  7360,    5,   5,  MON,   0,  0,  0), // Gregorian: 13/01/1868
+                            
+                // Miscellaneous:
+                /* Skip these tests until JD bug fixed in the Gregorian calendar:
+                 * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest
+                 */
+                new TestCase(1721059.5,  0,  5492,    5,   7,  SAT,   0,  0,  0), // Gregorian: 01/01/0000
+                new TestCase(1721425.5,  0,  5493,    5,   8,  MON,   0,  0,  0), // Gregorian: 01/01/0001
+                new TestCase(1723854.5,  0,  5499,   13,   6,  MON,   0,  0,  0), // Gregorian: 27/08/0007
+
+                new TestCase(1723855.5,  0,  5500,    1,   1,  TUE,   0,  0,  0), // Gregorian: 28/08/0007
+                new TestCase(1724220.5,  0,  5501,    1,   1,  WED,   0,  0,  0), // Gregorian: 27/08/0008
+                new TestCase(1724585.5,  0,  5502,    1,   1,  THU,   0,  0,  0), // Gregorian: 27/08/0009
+                new TestCase(1724950.5,  0,  5503,    1,   1,  FRI,   0,  0,  0), // Gregorian: 27/08/0010
+
+                // new TestCase(1724536.5,  0,  5504,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011
+                new TestCase(1725316.5,  0,  5504,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011 - dlf
+                new TestCase(1724219.5,  0,  5500,   13,   5,  TUE,   0,  0,  0), // Gregorian: 26/08/0008
+                new TestCase(1724584.5,  0,  5501,   13,   5,  WED,   0,  0,  0), // Gregorian: 26/08/0009
+                new TestCase(1724949.5,  0,  5502,   13,   5,  THU,   0,  0,  0), // Gregorian: 26/08/0010
+                new TestCase(1725314.5,  0,  5503,   13,   5,  FRI,   0,  0,  0), // Gregorian: 26/08/0011
+                new TestCase(1725315.5,  0,  5503,   13,   6,  SAT,   0,  0,  0), // Gregorian: 27/08/0011 - first ethiopic leap year
+                // new TestCase(1725560.5,  0,  5504,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012 - dlf
+                new TestCase(1725680.5,  0,  5504,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012
+                new TestCase(2299158.5,  0,  7075,    2,   6,  WED,   0,  0,  0), // Gregorian: 13/10/1582  
+                new TestCase(2299159.5,  0,  7075,    2,   7,  THU,   0,  0,  0), // Gregorian: 14/10/1582  Julian 04/10/1582
+
+                new TestCase(2299160.5,  0,  7075,    2,   8,  FRI,   0,  0,  0), // Gregorian: 15/10/1582
+                new TestCase(2299161.5,  0,  7075,    2,   9,  SAT,   0,  0,  0), // Gregorian: 16/10/1582
+
+                new TestCase(2415020.5,  0,  7392,    4,  23,  MON,   0,  0,  0), // Gregorian: 01/01/1900
+                new TestCase(2453371.5,  0,  7497,    4,  23,  SAT,   0,  0,  0), // Gregorian: 01/01/2005
+                new TestCase(2454719.5,  0,  7500,   13,   5,  WED,   0,  0,  0), // Gregorian: 10/09/2008
+            };
+
+        EthiopicCalendar testCalendar = new EthiopicCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+
+        // Testing Amete Alem mode
+
+        EthiopicCalendar testCalendarAmeteAlem = new EthiopicCalendar();
+        testCalendarAmeteAlem.setAmeteAlemEra(true);
+        testCalendarAmeteAlem.setLenient(true);
+        doTestCases(testsAmeteAlem, testCalendarAmeteAlem);
+    }
+
+    // basic check to see that we print out eras ok
+    // eventually should modify to use locale strings and formatter appropriate to coptic calendar
+    public void TestEraStart() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+        EthiopicCalendar cal = new EthiopicCalendar(1, 0, 1);
+        assertEquals("Ethiopic Date", "Wed Jan 01, 0001 AD", fmt.format(cal));
+
+        cal.set(Calendar.ERA, 0);
+        cal.set(Calendar.YEAR, 5500);
+        assertEquals("Ethiopic Date", "Tue Jan 01, 5500 BC", fmt.format(cal));
+
+        // The gregorian calendar gets off by two days when
+        // the date gets low, unless the gregorian changeover is set to 
+        // very early.  The funny thing is, it's ok for dates in the year
+        // 283, but not in the year 7, and it claims to be ok until the year 4.
+        // should track down when the dates start to differ...
+        
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setGregorianChange(new Date(Long.MIN_VALUE)); // act like proleptic Gregorian
+        gc.setTime(cal.getTime());
+        assertEquals("Gregorian Date", "Tue Aug 28, 0007 AD", fmt.format(gc));
+    }
+
+    public void TestBasic() {
+        EthiopicCalendar cal = new EthiopicCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+    
+    public void TestJD(){
+        int jd = EthiopicCalendar.EthiopicToJD(1567,8,9);
+        EthiopicCalendar cal = new EthiopicCalendar();
+        cal.clear();
+        cal.set(Calendar.JULIAN_DAY, jd);
+        if (cal.get(Calendar.EXTENDED_YEAR) == 1567 &&
+            cal.get(Calendar.MONTH) == 8 &&
+            cal.get(Calendar.DAY_OF_MONTH) == 9){
+            logln("EthiopicCalendar.getDateFromJD tested");
+        } else {
+            errln("EthiopicCalendar.getDateFromJD failed");
+        }
+    }
+
+    /**
+     * Test limits of the Coptic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        EthiopicCalendar ethiopic = new EthiopicCalendar();
+        doLimitsTest(ethiopic, null, cal.getTime());
+        doTheoreticalLimitsTest(ethiopic, true);
+    }
+
+    
+    public void TestCoverage() {
+
+        {
+            // new EthiopicCalendar(TimeZone)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(ULocale)
+            EthiopicCalendar cal = new EthiopicCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new EthiopicCalendar(Locale)
+            EthiopicCalendar cal = new EthiopicCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with Locale");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(TimeZone, Locale)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), Locale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone,Locale");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(TimeZone, ULocale)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), ULocale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone,ULocale");
+            }
+        }
+        
+        {
+            // new EthiopicCalendar(Date)
+            EthiopicCalendar cal = new EthiopicCalendar(new Date());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with Date");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(int year, int month, int date)
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1);
+            if(cal == null){
+                errln("could not create EthiopicCalendar with year,month,date");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(int year, int month, int date, int hour, int minute, int second)
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create EthiopicCalendar with year,month,date,hour,minute,second");
+            }
+        }
+
+        {
+            // setCivil/isCivil
+            // operations on non-civil calendar
+            EthiopicCalendar cal = newAmeteAlemEraCalendar();
+            cal.setAmeteAlemEra(false);
+            if (cal.isAmeteAlemEra()) {
+                errln("EthiopicCalendar calendar is old system");
+            }
+
+            Date now = new Date();
+            cal.setTime(now);
+
+            Date then = cal.getTime();
+            if (!now.equals(then)) {
+                errln("get/set time failed with non-civil EthiopicCalendar calendar");
+            }
+
+            logln(then.toString());
+
+            cal.add(Calendar.MONTH, 1);
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+            cal.add(Calendar.YEAR, 1);
+
+            logln(cal.getTime().toString());
+        }
+    
+        {
+            // data
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1);
+            Date time = cal.getTime();
+
+            String[] calendarLocales = {
+                "am_ET", "gez_ET", "ti_ET"
+            };
+
+            String[] formatLocales = {
+                "en", "am", "gez", "ti"
+            };
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                cal = new EthiopicCalendar(calLocale);
+
+                for (int j = 0; j < formatLocales.length; ++j) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(time));
+                }
+            }
+        }
+    }
+    
+    private static EthiopicCalendar newAmeteAlemEraCalendar() {
+        EthiopicCalendar alemawiCalendar = new EthiopicCalendar();
+        alemawiCalendar.setAmeteAlemEra(true);
+        return alemawiCalendar;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/HebrewTest.java b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
new file mode 100644
index 0000000..e3a3914
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
@@ -0,0 +1,462 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>HebrewCalendar</code> class.
+ */
+public class HebrewTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new HebrewTest().run(args);
+    }
+
+    // Constants to save typing.
+    public static final int TISHRI  = HebrewCalendar.TISHRI;
+    public static final int HESHVAN = HebrewCalendar.HESHVAN;
+    public static final int KISLEV  = HebrewCalendar.KISLEV;
+    public static final int TEVET   = HebrewCalendar.TEVET;
+    public static final int SHEVAT  = HebrewCalendar.SHEVAT;
+    public static final int ADAR_1  = HebrewCalendar.ADAR_1;
+    public static final int ADAR    = HebrewCalendar.ADAR;
+    public static final int NISAN   = HebrewCalendar.NISAN;
+    public static final int IYAR    = HebrewCalendar.IYAR;
+    public static final int SIVAN   = HebrewCalendar.SIVAN;
+    public static final int TAMUZ   = HebrewCalendar.TAMUZ;
+    public static final int AV      = HebrewCalendar.AV;
+    public static final int ELUL    = HebrewCalendar.ELUL;
+
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5759, SHEVAT,    2 },
+            {   5759, AV,        1,     MONTH,  12,     5759, AV,        1 }, // Alan
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5757, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5757, SHEVAT,    2 },
+            {   5757, AV,        1,     MONTH,  12,     5757, TAMUZ,     1 }, // Alan
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, KISLEV,    2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, KISLEV,    2 },   // 30-day month
+            
+            // Try some other fields too
+            {   5757, TISHRI,    1,     YEAR,    1,     5758, TISHRI,    1 },
+   
+
+            // Try some rolls that require other fields to be adjusted
+            {   5757, TISHRI,   30,     MONTH,   1,     5757, HESHVAN,  29 },
+            {   5758, KISLEV,   30,     YEAR,   -1,     5757, KISLEV,   29 },
+        };
+//        try{
+            HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+    
+            doRollAdd(ROLL, cal, tests);
+ //       }catch(MissingResourceException ex){
+//            warnln("Got Exception: "+ ex.getMessage());
+ //       }
+    }
+    
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            //       input                add by          output
+            //  year  month     day     field amount    year  month     day
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5760, SHEVAT,    2 },
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5758, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5758, SHEVAT,    2 },
+            
+            {   5762, AV,        1,     MONTH,   1,     5762, ELUL,      1 },   // JB#2327
+            {   5762, AV,       30,     DATE,    1,     5762, ELUL,      1 },   // JB#2327
+            {   5762, ELUL,      1,     DATE,   -1,     5762, AV,       30 },   // JB#2327
+            {   5762, ELUL,      1,     MONTH,  -1,     5762, AV,        1 },   // JB#2327
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, TEVET,     2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, TEVET,     2 },   // 30-day month
+        };
+        try{
+            HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+    
+            doRollAdd(ADD, cal, tests);
+        }catch( MissingResourceException ex){
+            warnln("Could not load the locale data");
+        }
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data.
+     */
+    public void TestCases() {
+        try{
+            final TestCase[] testCases = {
+                    //
+                    // Most of these test cases were taken from the back of
+                    // "Calendrical Calculations", with some extras added to help
+                    // debug a few of the problems that cropped up in development.
+                    //
+                    // The months in this table are 1-based rather than 0-based,
+                    // because it's easier to edit that way.
+                    //
+                    //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(1507231.5,  0,  3174,   12,  10,  SUN,   0,  0,  0),
+                    new TestCase(1660037.5,  0,  3593,    3,  25,  WED,   0,  0,  0),
+                    new TestCase(1746893.5,  0,  3831,    1,   3,  WED,   0,  0,  0),
+                    new TestCase(1770641.5,  0,  3896,    1,   9,  SUN,   0,  0,  0),
+                    new TestCase(1892731.5,  0,  4230,    4,  18,  WED,   0,  0,  0),
+                    new TestCase(1931579.5,  0,  4336,   10,   4,  MON,   0,  0,  0),
+                    new TestCase(1974851.5,  0,  4455,    2,  13,  SAT,   0,  0,  0),
+                    new TestCase(2091164.5,  0,  4773,    9,   6,  SUN,   0,  0,  0),
+                    new TestCase(2121509.5,  0,  4856,    9,  23,  SUN,   0,  0,  0),
+                    new TestCase(2155779.5,  0,  4950,    8,   7,  FRI,   0,  0,  0),
+                    new TestCase(2174029.5,  0,  5000,    7,   8,  SAT,   0,  0,  0),
+                    new TestCase(2191584.5,  0,  5048,    8,  21,  FRI,   0,  0,  0),
+                    new TestCase(2195261.5,  0,  5058,    9,   7,  SUN,   0,  0,  0),
+                    new TestCase(2229274.5,  0,  5151,   11,   1,  SUN,   0,  0,  0),
+                    new TestCase(2245580.5,  0,  5196,    5,   7,  WED,   0,  0,  0),
+                    new TestCase(2266100.5,  0,  5252,    8,   3,  SAT,   0,  0,  0),
+                    new TestCase(2288542.5,  0,  5314,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2290901.5,  0,  5320,    6,  27,  SAT,   0,  0,  0),
+                    new TestCase(2323140.5,  0,  5408,   10,  20,  WED,   0,  0,  0),
+                    new TestCase(2334551.5,  0,  5440,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2334581.5,  0,  5440,    2,   1,  SAT,   0,  0,  0),
+                    new TestCase(2334610.5,  0,  5440,    3,   1,  SUN,   0,  0,  0),
+                    new TestCase(2334639.5,  0,  5440,    4,   1,  MON,   0,  0,  0),
+                    new TestCase(2334668.5,  0,  5440,    5,   1,  TUE,   0,  0,  0),
+                    new TestCase(2334698.5,  0,  5440,    6,   1,  THU,   0,  0,  0),
+                    new TestCase(2334728.5,  0,  5440,    7,   1,  SAT,   0,  0,  0),
+                    new TestCase(2334757.5,  0,  5440,    8,   1,  SUN,   0,  0,  0),
+                    new TestCase(2334787.5,  0,  5440,    9,   1,  TUE,   0,  0,  0),
+                    new TestCase(2334816.5,  0,  5440,   10,   1,  WED,   0,  0,  0),
+                    new TestCase(2334846.5,  0,  5440,   11,   1,  FRI,   0,  0,  0),
+                    new TestCase(2334848.5,  0,  5440,   11,   3,  SUN,   0,  0,  0),
+                    new TestCase(2334934.5,  0,  5441,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2348020.5,  0,  5476,   12,   5,  FRI,   0,  0,  0),
+                    new TestCase(2366978.5,  0,  5528,   11,   4,  SUN,   0,  0,  0),
+                    new TestCase(2385648.5,  0,  5579,   12,  11,  MON,   0,  0,  0),
+                    new TestCase(2392825.5,  0,  5599,    8,  12,  WED,   0,  0,  0),
+                    new TestCase(2416223.5,  0,  5663,    8,  22,  SUN,   0,  0,  0),
+                    new TestCase(2425848.5,  0,  5689,   12,  19,  SUN,   0,  0,  0),
+                    new TestCase(2430266.5,  0,  5702,    1,   8,  MON,   0,  0,  0),
+                    new TestCase(2430833.5,  0,  5703,    8,  14,  MON,   0,  0,  0),
+                    new TestCase(2431004.5,  0,  5704,    1,   8,  THU,   0,  0,  0),
+                    new TestCase(2448698.5,  0,  5752,    7,  12,  TUE,   0,  0,  0),
+                    new TestCase(2450138.5,  0,  5756,    7,   5,  SUN,   0,  0,  0),
+                    new TestCase(2465737.5,  0,  5799,    2,  12,  WED,   0,  0,  0),
+                    new TestCase(2486076.5,  0,  5854,   12,   5,  SUN,   0,  0,  0),
+
+                    // Additional test cases for bugs found during development
+                    //           G.YY/MM/DD  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(1013, 9, 8, 0,  4774,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(1239, 9, 1, 0,  5000,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(1240, 9,18, 0,  5001,    1,   1,  TUE,   0,  0,  0),
+
+                    // Test cases taken from a table of 14 "year types" in the Help file
+                    // of the application "Hebrew Calendar"
+                    new TestCase(2456187.5,  0,  5773,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2459111.5,  0,  5781,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2453647.5,  0,  5766,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2462035.5,  0,  5789,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2458756.5,  0,  5780,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2460586.5,  0,  5785,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2463864.5,  0,  5794,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2463481.5,  0,  5793,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2470421.5,  0,  5812,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2460203.5,  0,  5784,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2459464.5,  0,  5782,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2467142.5,  0,  5803,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2455448.5,  0,  5771,    1,   1,  THU,   0,  0,  0),
+                
+                    // Test cases for JB#2327        
+                    // http://www.fourmilab.com/documents/calendar/
+                    // http://www.calendarhome.com/converter/
+//                2452465.5, 2002, JULY, 10, 5762, AV, 1,
+//                2452494.5, 2002, AUGUST, 8, 5762, AV, 30,
+//                2452495.5, 2002, AUGUST, 9, 5762, ELUL, 1,
+//                2452523.5, 2002, SEPTEMBER, 6, 5762, ELUL, 29,
+//                2452524.5, 2002, SEPTEMBER, 7, 5763, TISHRI, 1,
+                    //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(2452465.5,  0,  5762,    AV+1,  1,  WED,   0,  0,  0),
+                    new TestCase(2452494.5,  0,  5762,    AV+1, 30,  THU,   0,  0,  0),
+                    new TestCase(2452495.5,  0,  5762,  ELUL+1,  1,  FRI,   0,  0,  0),
+                    new TestCase(2452523.5,  0,  5762,  ELUL+1, 29,  FRI,   0,  0,  0),
+                    new TestCase(2452524.5,  0,  5763,TISHRI+1,  1,  SAT,   0,  0,  0),
+                };
+                doTestCases(testCases, new HebrewCalendar());
+   
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Problem reported by Armand Bendanan in which setting of the MONTH
+     * field in a Hebrew calendar causes the time fields to go negative.
+     */
+    public void TestTimeFields() {
+        try{
+            HebrewCalendar calendar = new HebrewCalendar(5761, 0, 11, 12, 28, 15);
+            calendar.set(Calendar.YEAR, 5717);
+            calendar.set(Calendar.MONTH, 2);
+            calendar.set(Calendar.DAY_OF_MONTH, 23);
+            if (calendar.get(Calendar.HOUR_OF_DAY) != 12) {
+                errln("Fail: HebrewCalendar HOUR_OF_DAY = " + calendar.get(Calendar.HOUR_OF_DAY));
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Problem reported by Armand Bendanan (armand.bendanan@free.fr)
+     * in which setting of the MONTH field in a Hebrew calendar to
+     * ELUL on non leap years causes the date to be set on TISHRI next year.
+     */
+    public void TestElulMonth() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            // Leap years are:
+            // 3 6 8 11 14 17 19 (and so on - 19-year cycle)
+            for (int year=1; year<50; year++) {
+                // I hope that year = 0 does not exists
+                // because the test fails for it !
+                cal.clear();
+                
+                cal.set(Calendar.YEAR, year);
+                cal.set(Calendar.MONTH, ELUL);
+                cal.set(Calendar.DAY_OF_MONTH, 1);
+                
+                int yact = cal.get(Calendar.YEAR);
+                int mact = cal.get(Calendar.MONTH);
+                
+                if (year != yact || ELUL != mact) {
+                    errln("Fail: " + ELUL + "/" + year +
+                          " -> " +
+                          mact + "/" + yact);
+                }
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }   
+    }
+    
+    /**
+     * Test of the behavior of the month field.  This requires special
+     * handling in the Hebrew calendar because of the pattern of leap
+     * years.
+     */
+    public void TestMonthMovement() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            // Leap years are:
+            // 3 6 8 11 14 17 19 (and so on - 19-year cycle)
+            // We can't test complete() on some lines below because of ADAR_1 -- if
+            // the calendar is set to ADAR_1 on a non-leap year, the result is undefined.
+            int[] DATA = {
+                // m1/y1 - month/year before (month is 1-based) 
+                // delta - amount to add to month field
+                // m2/y2 - month/year after add(MONTH, delta)
+                // m3/y3 - month/year after set(MONTH, m1+delta)
+              //m1  y1 delta  m2  y2  m3  y3
+                10,  2,  +24,  9,  4,  9,  4,
+                10,  2,  +60,  8,  7,  8,  7,
+                1 ,  2,  +12,  1,  3, 13,  2, //*set != add; also see '*' below
+                3 , 18,  -24,  4, 16,  4, 16,
+                1 ,  6,  -24,  1,  4,  1,  4,
+                4 ,  3,   +2,  6,  3,  6,  3, // Leap year - no skip 4,5,6,7,8
+                8 ,  3,   -2,  6,  3,  6,  3, // Leap year - no skip
+                4 ,  2,   +2,  7,  2,  7,  2, // Skip leap month 4,5,(6),7,8
+                8 ,  2,   -2,  5,  2,  7,  2, //*Skip leap month going backward
+            };
+            for (int i=0; i<DATA.length; ) {
+                int m = DATA[i++], y = DATA[i++];
+                int monthDelta = DATA[i++];
+                int m2 = DATA[i++], y2 = DATA[i++];
+                int m3 = DATA[i++], y3 = DATA[i++];
+                int mact, yact;
+    
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m-1);
+                cal.add(Calendar.MONTH, monthDelta);
+                yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+                if (y2 != yact || m2 != mact) {
+                    errln("Fail: " + m + "/" + y +
+                          " -> add(MONTH, " + monthDelta + ") -> " +
+                          mact + "/" + yact + ", expected " +
+                          m2 + "/" + y2);
+                    cal.clear();
+                    cal.set(Calendar.YEAR, y);
+                    cal.set(Calendar.MONTH, m-1);
+                    logln("Start: " + m + "/" + y);
+                    int delta = monthDelta > 0 ? 1 : -1;
+                    for (int c=0; c!=monthDelta; c+=delta) {
+                        cal.add(Calendar.MONTH, delta);
+                        logln("+ " + delta + " MONTH -> " +
+                              (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.YEAR));
+                    }
+                }
+                
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m + monthDelta - 1);
+                yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+                if (y3 != yact || m3 != mact) {
+                    errln("Fail: " + (m+monthDelta) + "/" + y +
+                          " -> complete() -> " +
+                          mact + "/" + yact + ", expected " +
+                          m3 + "/" + y3);
+                }
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Test handling of ADAR_1.
+     */
+    /*
+    public void TestAdar1() {
+        HebrewCalendar cal = new HebrewCalendar();
+        cal.clear();
+        cal.set(Calendar.YEAR, 1903); // leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1903(leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+
+        cal.clear();
+        cal.set(Calendar.YEAR, 1904); // non-leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1904(non-leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+    }
+    */
+
+    /**
+     * With no fields set, the calendar should use default values.
+     */
+    public void TestDefaultFieldValues() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            cal.clear();
+            logln("cal.clear() -> " + cal.getTime());
+        }catch(MissingResourceException ex){
+            warnln("could not load the locale data");
+        }
+    }
+
+    /**
+     * Test limits of the Hebrew calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        HebrewCalendar hebrew = new HebrewCalendar();
+        doLimitsTest(hebrew, null, cal.getTime());
+        doTheoreticalLimitsTest(hebrew, true);
+    }
+
+    public void TestCoverage() {
+        try{
+            {
+                // new HebrewCalendar(TimeZone)
+                HebrewCalendar cal = new HebrewCalendar(TimeZone.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with TimeZone");
+                }
+            }
+    
+            {
+                // new HebrewCalendar(ULocale)
+                HebrewCalendar cal = new HebrewCalendar(ULocale.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with ULocale");
+                }
+            }
+                
+            {
+                // new HebrewCalendar(Locale)
+                HebrewCalendar cal = new HebrewCalendar(Locale.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with locale");
+                }
+            }
+        
+            {
+                // new HebrewCalendar(Date)
+                HebrewCalendar cal = new HebrewCalendar(new Date());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with date");
+                }
+            }
+        
+            {
+                // data
+                HebrewCalendar cal = new HebrewCalendar(2800, HebrewCalendar.SHEVAT, 1);
+                Date time = cal.getTime();
+        
+                String[] calendarLocales = {
+                "iw_IL"
+                };
+        
+                String[] formatLocales = {
+                "en", "fi", "fr", "hu", "iw", "nl"
+                };
+                for (int i = 0; i < calendarLocales.length; ++i) {
+                    String calLocName = calendarLocales[i];
+                    Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                    cal = new HebrewCalendar(calLocale);
+            
+                    for (int j = 0; j < formatLocales.length; ++j) {
+                        String locName = formatLocales[j];
+                        Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                        DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                        logln(calLocName + "/" + locName + " --> " + format.format(time));
+                    }
+                }
+            }
+        }catch( MissingResourceException ex){
+            warnln("Could not load the locale data. "+ ex.getMessage());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/HolidayTest.java b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
new file mode 100644
index 0000000..5611e26
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
@@ -0,0 +1,227 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.EasterHoliday;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.RangeDateRule;
+import com.ibm.icu.util.SimpleDateRule;
+import com.ibm.icu.util.SimpleHoliday;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>Holiday</code> class.
+ */
+public class HolidayTest extends TestFmwk {
+    public static void main(String args[]) throws Exception {
+        new HolidayTest().run(args);
+    }
+    protected void init()throws Exception{
+        if(cal==null){
+            cal = new GregorianCalendar(1, 0, 1);
+            longTimeAgo = cal.getTime();
+            now = new Date();
+        }
+    }
+    static  Calendar cal;
+    static  Date longTimeAgo;
+    static  Date now;
+    static  long awhile = 3600L * 24 * 28; // 28 days
+
+    public void TestAPI() {
+        {
+            // getHolidays
+            Holiday[] holidays = Holiday.getHolidays();
+            exerciseHolidays(holidays, Locale.getDefault());
+        }
+
+        {
+            // getHolidays(Locale)
+            String[] localeNames =
+            {
+                "en_US",
+                "da",
+                "da_DK",
+                "de",
+                "de_AT",
+                "de_DE",
+                "el",
+                "el_GR",
+                "en",
+                "en_CA",
+                "en_GB",
+                "es",
+                "es_MX",
+                "fr",
+                "fr_CA",
+                "fr_FR",
+                "it",
+                "it_IT",
+                "iw",
+                "iw_IL",
+                "ja",
+                "ja_JP",
+            };
+
+            for (int i = 0; i < localeNames.length; ++i) {
+                Locale locale = LocaleUtility.getLocaleFromName(localeNames[i]);
+                Holiday[] holidays = Holiday.getHolidays(locale);
+                exerciseHolidays(holidays, locale);
+            }
+        }
+    }
+
+    void exerciseHolidays(Holiday[] holidays, Locale locale) {
+        for (int i = 0; i < holidays.length; ++i) {
+            exerciseHoliday(holidays[i], locale);
+        }
+    }
+
+    void exerciseHoliday(Holiday h, Locale locale) {
+        logln("holiday: " + h.getDisplayName());
+        logln("holiday in " + locale + ": " + h.getDisplayName(locale));
+
+        Date first = h.firstAfter(longTimeAgo);
+        logln("firstAfter: " + longTimeAgo + " is " + first);
+        if (first == null) {
+            first = longTimeAgo;
+        }
+        first.setTime(first.getTime() + awhile);
+
+        Date second = h.firstBetween(first, now);
+        logln("firstBetween: " + first + " and " + now + " is " + second);
+        if (second == null) {
+            second = now;
+        }
+
+        logln("is on " + first + ": " + h.isOn(first));
+        logln("is on " + now + ": " + h.isOn(now));
+        logln(
+              "is between "
+              + first
+              + " and "
+              + now
+              + ": "
+              + h.isBetween(first, now));
+        logln(
+              "is between "
+              + first
+              + " and "
+              + second
+              + ": "
+              + h.isBetween(first, second));
+
+        //        logln("rule: " + h.getRule().toString());
+
+        //        h.setRule(h.getRule());
+    }
+    
+    public void TestCoverage(){
+        Holiday[] h = { new EasterHoliday("Ram's Easter"),
+                        new SimpleHoliday(2, 29, 0, "Leap year", 1900, 2100)};
+        exerciseHolidays(h, Locale.getDefault());
+
+        RangeDateRule rdr = new RangeDateRule();
+        rdr.add(new SimpleDateRule(7, 10));
+        Date mbd = getDate(1953, Calendar.JULY, 10);
+        Date dbd = getDate(1958, Calendar.AUGUST, 15);
+        Date nbd = getDate(1990, Calendar.DECEMBER, 17);
+        Date abd = getDate(1992, Calendar.SEPTEMBER, 16);
+        Date xbd = getDate(1976, Calendar.JULY, 4);
+        Date ybd = getDate(2003, Calendar.DECEMBER, 8);
+        rdr.add(new SimpleDateRule(Calendar.JULY, 10, Calendar.MONDAY, false));
+        rdr.add(dbd, new SimpleDateRule(Calendar.AUGUST, 15, Calendar.WEDNESDAY, true));
+        rdr.add(xbd, null);
+        rdr.add(nbd, new SimpleDateRule(Calendar.DECEMBER, 17, Calendar.MONDAY, false));
+        rdr.add(ybd, null);
+
+        logln("first after " + mbd + " is " + rdr.firstAfter(mbd));
+        logln("first between " + mbd + " and " + dbd + " is " + rdr.firstBetween(mbd, dbd));
+        logln("first between " + dbd + " and " + nbd + " is " + rdr.firstBetween(dbd, nbd));
+        logln("first between " + nbd + " and " + abd + " is " + rdr.firstBetween(nbd, abd));
+        logln("first between " + abd + " and " + xbd + " is " + rdr.firstBetween(abd, xbd));
+        logln("first between " + abd + " and " + null + " is " + rdr.firstBetween(abd, null));
+        logln("first between " + xbd + " and " + null + " is " + rdr.firstBetween(xbd, null));
+        
+        //getRule, setRule
+        logln("The rule in the holiday: " + h[1].getRule());
+        exerciseHoliday(h[1], Locale.getDefault());
+        h[1].setRule(rdr);
+        logln("Set the new rule to the SimpleHoliday ...");
+        if (!rdr.equals(h[1].getRule())) {
+            errln("FAIL: getRule and setRule not matched.");
+        }
+        exerciseHoliday(h[1], Locale.getDefault());
+    }
+
+    public void TestIsOn() {
+        // jb 1901
+        SimpleHoliday sh = new SimpleHoliday(Calendar.AUGUST, 15, "Doug's Day", 1958, 2058);
+        
+        Calendar gcal = new GregorianCalendar();
+        gcal.clear();
+        gcal.set(Calendar.YEAR, 2000);
+        gcal.set(Calendar.MONTH, Calendar.AUGUST);
+        gcal.set(Calendar.DAY_OF_MONTH, 15);
+        
+        Date d0 = gcal.getTime();
+        gcal.add(Calendar.SECOND, 1);
+        Date d1 = gcal.getTime();
+        gcal.add(Calendar.SECOND, -2);
+        Date d2 = gcal.getTime();
+        gcal.add(Calendar.DAY_OF_MONTH, 1);
+        Date d3 = gcal.getTime();
+        gcal.add(Calendar.SECOND, 1);
+        Date d4 = gcal.getTime();
+        gcal.add(Calendar.SECOND, -2);
+        gcal.set(Calendar.YEAR, 1957);
+        Date d5 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 1958);
+        Date d6 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 2058);
+        Date d7 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 2059);
+        Date d8 = gcal.getTime();
+
+        Date[] dates = { d0, d1, d2, d3, d4, d5, d6, d7, d8 };
+        boolean[] isOns = { true, true, false, true, false, false, true, true, false };
+        for (int i = 0; i < dates.length; ++i) {
+            Date d = dates[i];
+            logln("\ndate: " + d);
+            boolean isOn = sh.isOn(d);
+            logln("isOnDate: " + isOn);
+            if (isOn != isOns[i]) {
+                errln("date: " + d + " should be on Doug's Day!");
+            }
+            Date h = sh.firstAfter(d);
+            logln("firstAfter: " + h);
+        }
+    }
+    
+    public void TestDisplayName() {
+        Holiday[] holidays = Holiday.getHolidays(ULocale.US);
+        for (int i = 0; i < holidays.length; ++i) {
+            Holiday h = holidays[i];
+            // only need to test one
+            // if the display names differ, we're using our data.  We know these names
+            // should differ for this holiday (not all will).
+            if ("Christmas".equals(h.getDisplayName(ULocale.US))) {
+                if ("Christmas".equals(h.getDisplayName(ULocale.GERMANY))) {
+                    errln("Using default name for holidays");
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
new file mode 100644
index 0000000..eaefad3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -0,0 +1,998 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+import java.text.ParseException;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.*;
+
+/**
+ * @summary Tests of new functionality in IBMCalendar
+ */
+public class IBMCalendarTest extends CalendarTest {
+
+    public static void main(String[] args) throws Exception {
+        new IBMCalendarTest().run(args);
+    }
+
+    /**
+     * Test weekend support in IBMCalendar.
+     *
+     * NOTE: This test will have to be updated when the isWeekend() etc.
+     *       API is finalized later.
+     *
+     *       In particular, the test will have to be rewritten to instantiate
+     *       a Calendar in the given locale (using getInstance()) and call
+     *       that Calendar's isWeekend() etc. methods.
+     */
+    public void TestWeekend() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy G HH:mm:ss.SSS");
+
+        // NOTE
+        // This test tests for specific locale data.  This is probably okay
+        // as far as US data is concerned, but if the Arabic/Yemen data
+        // changes, this test will have to be updated.
+
+        // Test specific days
+        Object[] DATA1 = {
+            Locale.US, new int[] { // Saturday:Sunday
+                2000, Calendar.MARCH, 17, 23,  0, 0, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 0, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 1, // Sat 00:00
+                2000, Calendar.MARCH, 18, 15,  0, 1, // Sat 15:00
+                2000, Calendar.MARCH, 19, 23,  0, 1, // Sun 23:00
+                2000, Calendar.MARCH, 20,  0, -1, 1, // Sun 23:59:59.999
+                2000, Calendar.MARCH, 20,  0,  0, 0, // Mon 00:00
+                2000, Calendar.MARCH, 20,  8,  0, 0, // Mon 08:00
+            },
+            new Locale("ar", "YE"), new int[] { // Thursday:Friday
+                2000, Calendar.MARCH, 15, 23,  0, 0, // Wed 23:00
+                2000, Calendar.MARCH, 16,  0, -1, 0, // Wed 23:59:59.999
+                2000, Calendar.MARCH, 16,  0,  0, 1, // Thu 00:00
+                2000, Calendar.MARCH, 16, 15,  0, 1, // Thu 15:00
+                2000, Calendar.MARCH, 17, 23,  0, 1, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 1, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 0, // Sat 00:00
+                2000, Calendar.MARCH, 18,  8,  0, 0, // Sat 08:00
+            },
+        };
+
+        // Test days of the week
+        Object[] DATA2 = {
+            Locale.US, new int[] {
+                Calendar.MONDAY,   Calendar.WEEKDAY,
+                Calendar.FRIDAY,   Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKEND,
+                Calendar.SUNDAY,   Calendar.WEEKEND_CEASE,
+            },
+            new Locale("ar", "YE"), new int[] { // Thursday:Friday
+                Calendar.WEDNESDAY,Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKDAY,
+                Calendar.THURSDAY, Calendar.WEEKEND,
+                Calendar.FRIDAY,   Calendar.WEEKEND_CEASE,
+            },
+        };
+
+        // We only test the getDayOfWeekType() and isWeekend() APIs.
+        // The getWeekendTransition() API is tested indirectly via the
+        // isWeekend() API, which calls it.
+
+        for (int i1=0; i1<DATA1.length; i1+=2) {
+            Locale loc = (Locale)DATA1[i1];
+            int[] data = (int[]) DATA1[i1+1];
+            Calendar cal = Calendar.getInstance(loc);
+            logln("Locale: " + loc);
+            for (int i=0; i<data.length; i+=6) {
+                cal.clear();
+                cal.set(data[i], data[i+1], data[i+2], data[i+3], 0, 0);
+                if (data[i+4] != 0) {
+                    cal.setTime(new Date(cal.getTime().getTime() + data[i+4]));
+                }
+                boolean isWeekend = cal.isWeekend();
+                boolean ok = isWeekend == (data[i+5] != 0);
+                if (ok) {
+                    logln("Ok:   " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend);
+                } else {
+                    errln("FAIL: " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend +
+                          ", expected=" + (!isWeekend));
+                }
+            }
+        }
+
+        for (int i2=0; i2<DATA2.length; i2+=2) {
+            Locale loc = (Locale)DATA2[i2];
+            int[] data = (int[]) DATA2[i2+1];
+            logln("Locale: " + loc);
+            Calendar cal = Calendar.getInstance(loc);
+            for (int i=0; i<data.length; i+=2) {
+                int type = cal.getDayOfWeekType(data[i]);
+                int exp  = data[i+1];
+                if (type == exp) {
+                    logln("Ok:   DOW " + data[i] + " type=" + type);
+                } else {
+                    errln("FAIL: DOW " + data[i] + " type=" + type +
+                          ", expected=" + exp);
+                }
+            }
+        }
+    }
+
+    /**
+     * Run a test of a quasi-Gregorian calendar.  This is a calendar
+     * that behaves like a Gregorian but has different year/era mappings.
+     * The int[] data array should have the format:
+     *
+     * { era, year, gregorianYear, month, dayOfMonth, ... }
+     */
+    void quasiGregorianTest(Calendar cal, int[] data) {
+        // As of JDK 1.4.1_01, using the Sun JDK GregorianCalendar as
+        // a reference throws us off by one hour.  This is most likely
+        // due to the JDK 1.4 incorporation of historical time zones.
+        //java.util.Calendar grego = java.util.Calendar.getInstance();
+        Calendar grego = Calendar.getInstance();
+        for (int i=0; i<data.length; ) {
+            int era = data[i++];
+            int year = data[i++];
+            int gregorianYear = data[i++];
+            int month = data[i++];
+            int dayOfMonth = data[i++];
+
+            grego.clear();
+            grego.set(gregorianYear, month, dayOfMonth);
+            Date D = grego.getTime();
+
+            cal.clear();
+            cal.set(Calendar.ERA, era);
+            cal.set(year, month, dayOfMonth);
+            Date d = cal.getTime();
+            if (d.equals(D)) {
+                logln("OK: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d);
+            } else {
+                errln("Fail: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d + ", expected " + D);
+            }
+
+            cal.clear();
+            cal.setTime(D);
+            int e = cal.get(Calendar.ERA);
+            int y = cal.get(Calendar.YEAR);
+            if (y == year && e == era) {
+                logln("OK: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE));
+            } else {
+                logln("Fail: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE) +
+                      ", expected " + era + ":" + year + "/" + (month+1) + "/" +
+                      dayOfMonth);
+            }
+        }
+    }
+
+    /**
+     * Verify that BuddhistCalendar shifts years to Buddhist Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestBuddhist() {
+        quasiGregorianTest(new BuddhistCalendar(),
+                           new int[] {
+                               // BE 2542 == 1999 CE
+                               0, 2542, 1999, Calendar.JUNE, 4
+                           });
+    }
+
+    public void TestBuddhistCoverage() {
+    {
+        // new BuddhistCalendar(ULocale)
+        BuddhistCalendar cal = new BuddhistCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with ULocale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone,ULocale)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault(),ULocale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(Locale)
+        BuddhistCalendar cal = new BuddhistCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with Locale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone, Locale)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone and Locale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(Date)
+        BuddhistCalendar cal = new BuddhistCalendar(new Date());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with Date");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(int year, int month, int date)
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+        if(cal == null){
+            errln("could not create BuddhistCalendar with year,month,data");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(int year, int month, int date, int hour, int minute, int second)
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22, 1, 1, 1);
+        if(cal == null){
+            errln("could not create BuddhistCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // data
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "th_TH"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "hu", "th"
+        };
+
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new BuddhistCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    /**
+     * Test limits of the Buddhist calendar.
+     */
+    public void TestBuddhistLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        BuddhistCalendar buddhist = new BuddhistCalendar();
+        doLimitsTest(buddhist, null, cal.getTime());
+        doTheoreticalLimitsTest(buddhist, false);
+    }
+
+    /**
+     * Default calendar for Thai (Ticket#6302)
+     */
+    public void TestThaiDefault() {
+        // Buddhist calendar is used as the default calendar for
+        // Thai locale
+        Calendar cal = Calendar.getInstance(new ULocale("th_TH"));
+        String type = cal.getType();
+        if (!type.equals("buddhist")) {
+            errln("FAIL: Buddhist calendar is not returned for locale " + cal.toString());
+        }
+    }
+    
+    /**
+     * Verify that TaiwanCalendar shifts years to Minguo Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestTaiwan() {
+        quasiGregorianTest(new TaiwanCalendar(),
+                           new int[] {
+                               TaiwanCalendar.BEFORE_MINGUO, 8, 1904, Calendar.FEBRUARY, 29,
+                               TaiwanCalendar.MINGUO, 1, 1912, Calendar.JUNE, 4,
+                               TaiwanCalendar.MINGUO, 3, 1914, Calendar.FEBRUARY, 12,
+                               TaiwanCalendar.MINGUO, 96,2007, Calendar.FEBRUARY, 12,
+                           });
+    }
+
+    /**
+     * Test limits of the Taiwan calendar.
+     */
+    public void TestTaiwanLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        TaiwanCalendar taiwan = new TaiwanCalendar();
+        doLimitsTest(taiwan, null, cal.getTime());
+        doTheoreticalLimitsTest(taiwan, false);
+    }
+
+    public void TestTaiwanCoverage() {
+    {
+        // new TaiwanCalendar(ULocale)
+        TaiwanCalendar cal = new TaiwanCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with ULocale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone,ULocale)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault(),ULocale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(Locale)
+        TaiwanCalendar cal = new TaiwanCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with Locale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone, Locale)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone and Locale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(Date)
+        TaiwanCalendar cal = new TaiwanCalendar(new Date());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with Date");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(int year, int month, int date)
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22);
+        if(cal == null){
+            errln("could not create TaiwanCalendar with year,month,data");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(int year, int month, int date, int hour, int minute, int second)
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22, 1, 1, 1);
+        if(cal == null){
+            errln("could not create TaiwanCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // data
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "en","zh"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "hu", "th"
+        };
+
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new TaiwanCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    /**
+     * Verify that JapaneseCalendar shifts years to Japanese Eras but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestJapanese() {
+        // First make sure this test works for GregorianCalendar
+        int[] control = {
+            GregorianCalendar.AD, 1868, 1868, Calendar.SEPTEMBER, 8,
+            GregorianCalendar.AD, 1868, 1868, Calendar.SEPTEMBER, 9,
+            GregorianCalendar.AD, 1869, 1869, Calendar.JUNE, 4,
+            GregorianCalendar.AD, 1912, 1912, Calendar.JULY, 29,
+            GregorianCalendar.AD, 1912, 1912, Calendar.JULY, 30,
+            GregorianCalendar.AD, 1912, 1912, Calendar.AUGUST, 1,
+        };
+        quasiGregorianTest(new GregorianCalendar(), control);
+
+        int[] data = {
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 8,
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 9,
+            JapaneseCalendar.MEIJI, 2, 1869, Calendar.JUNE, 4,
+            JapaneseCalendar.MEIJI, 45, 1912, Calendar.JULY, 29,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.JULY, 30,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.AUGUST, 1,
+        };
+        quasiGregorianTest(new JapaneseCalendar(), data);
+    }
+
+    /**
+     * Test limits of the Gregorian calendar.
+     */
+    public void TestGregorianLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.JANUARY, 1);
+        GregorianCalendar gregorian = new GregorianCalendar();
+        doLimitsTest(gregorian, null, cal.getTime());
+        doTheoreticalLimitsTest(gregorian, false);
+    }
+
+    /**
+     * Test behavior of fieldDifference around leap years.  Also test a large
+     * field difference to check binary search.
+     */
+    public void TestLeapFieldDifference() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.FEBRUARY, 29);
+        Date date2004 = cal.getTime();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date date2000 = cal.getTime();
+        int y = cal.fieldDifference(date2004, Calendar.YEAR);
+        int d = cal.fieldDifference(date2004, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        }
+        cal.setTime(date2004);
+        y = cal.fieldDifference(date2000, Calendar.YEAR);
+        d = cal.fieldDifference(date2000, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        }
+        // Test large difference
+        cal.set(2001, Calendar.APRIL, 5); // 2452005
+        Date ayl = cal.getTime();
+        cal.set(1964, Calendar.SEPTEMBER, 7); // 2438646
+        Date asl = cal.getTime();
+        d = cal.fieldDifference(ayl, Calendar.DAY_OF_MONTH);
+        cal.setTime(ayl);
+        int d2 = cal.fieldDifference(asl, Calendar.DAY_OF_MONTH);
+        if (d == -d2 && d == 13359) {
+            logln("Ok: large field difference symmetrical " + d);
+        } else {
+            logln("FAIL: large field difference incorrect " + d + ", " + d2 +
+                  ", expect +/- 13359");
+        }
+    }
+
+    /**
+     * Test ms_MY "Malay (Malaysia)" locale.  Bug 1543.
+     */
+    public void TestMalaysianInstance() {
+        Locale loc = new Locale("ms", "MY");  // Malay (Malaysia)
+        Calendar cal = Calendar.getInstance(loc);
+        if(cal == null){
+            errln("could not create Malaysian instance");
+        }
+    }
+
+    /**
+     * setFirstDayOfWeek and setMinimalDaysInFirstWeek may change the
+     * field <=> time mapping, since they affect the interpretation of
+     * the WEEK_OF_MONTH or WEEK_OF_YEAR fields.
+     */
+    public void TestWeekShift() {
+        Calendar cal = new GregorianCalendar(
+                             TimeZone.getTimeZone("America/Los_Angeles"),
+                             new Locale("en", "US"));
+        cal.setTime(new Date(997257600000L)); // Wed Aug 08 01:00:00 PDT 2001
+        // In pass one, change the first day of week so that the weeks
+        // shift in August 2001.  In pass two, change the minimal days
+        // in the first week so that the weeks shift in August 2001.
+        //     August 2001
+        // Su Mo Tu We Th Fr Sa
+        //           1  2  3  4
+        //  5  6  7  8  9 10 11
+        // 12 13 14 15 16 17 18
+        // 19 20 21 22 23 24 25
+        // 26 27 28 29 30 31
+        for (int pass=0; pass<2; ++pass) {
+            if (pass==0) {
+                cal.setFirstDayOfWeek(Calendar.WEDNESDAY);
+                cal.setMinimalDaysInFirstWeek(4);
+            } else {
+                cal.setFirstDayOfWeek(Calendar.SUNDAY);
+                cal.setMinimalDaysInFirstWeek(4);
+            }
+            cal.add(Calendar.DATE, 1); // Force recalc
+            cal.add(Calendar.DATE, -1);
+
+            Date time1 = cal.getTime(); // Get time -- should not change
+
+            // Now change a week parameter and then force a recalc.
+            // The bug is that the recalc should not be necessary --
+            // calendar should do so automatically.
+            if (pass==0) {
+                cal.setFirstDayOfWeek(Calendar.THURSDAY);
+            } else {
+                cal.setMinimalDaysInFirstWeek(5);
+            }
+
+            int woy1 = cal.get(Calendar.WEEK_OF_YEAR);
+            int wom1 = cal.get(Calendar.WEEK_OF_MONTH);
+
+            cal.add(Calendar.DATE, 1); // Force recalc
+            cal.add(Calendar.DATE, -1);
+
+            int woy2 = cal.get(Calendar.WEEK_OF_YEAR);
+            int wom2 = cal.get(Calendar.WEEK_OF_MONTH);
+
+            Date time2 = cal.getTime();
+
+            if (!time1.equals(time2)) {
+                errln("FAIL: shifting week should not alter time");
+            } else {
+                logln(time1.toString());
+            }
+            if (woy1 == woy2 && wom1 == wom2) {
+                logln("Ok: WEEK_OF_YEAR: " + woy1 +
+                      ", WEEK_OF_MONTH: " + wom1);
+            } else {
+                errln("FAIL: WEEK_OF_YEAR: " + woy1 + " => " + woy2 +
+                      ", WEEK_OF_MONTH: " + wom1 + " => " + wom2 +
+                      " after week shift");
+            }
+        }
+    }
+
+    /**
+     * Make sure that when adding a day, we actually wind up in a
+     * different day.  The DST adjustments we use to keep the hour
+     * constant across DST changes can backfire and change the day.
+     */
+    public void TestTimeZoneTransitionAdd() {
+        Locale locale = Locale.US; // could also be CHINA
+        SimpleDateFormat dateFormat =
+            new SimpleDateFormat("MM/dd/yyyy HH:mm z", locale);
+
+        String tz[] = TimeZone.getAvailableIDs();
+
+        for (int z=0; z<tz.length; ++z) {
+            TimeZone t = TimeZone.getTimeZone(tz[z]);
+            dateFormat.setTimeZone(t);
+
+            Calendar cal = Calendar.getInstance(t, locale);
+            cal.clear();
+            // Scan the year 2003, overlapping the edges of the year
+            cal.set(Calendar.YEAR, 2002);
+            cal.set(Calendar.MONTH, Calendar.DECEMBER);
+            cal.set(Calendar.DAY_OF_MONTH, 25);
+
+            for (int i=0; i<365+10; ++i) {
+                Date yesterday = cal.getTime();
+                int yesterday_day = cal.get(Calendar.DAY_OF_MONTH);
+                cal.add(Calendar.DAY_OF_MONTH, 1);
+                if (yesterday_day == cal.get(Calendar.DAY_OF_MONTH)) {
+                    errln(tz[z] + " " +
+                          dateFormat.format(yesterday) + " +1d= " +
+                          dateFormat.format(cal.getTime()));
+                }
+            }
+        }
+    }
+
+    public void TestJB1684() {
+        class TestData {
+            int year;
+            int month;
+            int date;
+            int womyear;
+            int wommon;
+            int wom;
+            int dow;
+            String data;
+            String normalized;
+
+            public TestData(int year, int month, int date,
+                            int womyear, int wommon, int wom, int dow,
+                            String data, String normalized) {
+                this.year = year;
+                this.month = month-1;
+                this.date = date;
+                this.womyear = womyear;
+                this.wommon = wommon-1;
+                this.wom = wom;
+                this.dow = dow;
+                this.data = data; // year, month, week of month, day
+                this.normalized = data;
+                if (normalized != null) this.normalized = normalized;
+            }
+        }
+
+        //      July 2001            August 2001           January 2002
+        // Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
+        //  1  2  3  4  5  6  7            1  2  3  4         1  2  3  4  5
+        //  8  9 10 11 12 13 14   5  6  7  8  9 10 11   6  7  8  9 10 11 12
+        // 15 16 17 18 19 20 21  12 13 14 15 16 17 18  13 14 15 16 17 18 19
+        // 22 23 24 25 26 27 28  19 20 21 22 23 24 25  20 21 22 23 24 25 26
+        // 29 30 31              26 27 28 29 30 31     27 28 29 30 31
+        TestData[] tests = {
+            new TestData(2001, 8,  6,  2001,8,2,Calendar.MONDAY,    "2001 08 02 Mon", null),
+            new TestData(2001, 8,  7,  2001,8,2,Calendar.TUESDAY,   "2001 08 02 Tue", null),
+            new TestData(2001, 8,  5,/*12,*/ 2001,8,2,Calendar.SUNDAY,    "2001 08 02 Sun", null),
+            new TestData(2001, 8,6, /*7,  30,*/ 2001,7,6,Calendar.MONDAY,    "2001 07 06 Mon", "2001 08 02 Mon"),
+            new TestData(2001, 8,7, /*7,  31,*/ 2001,7,6,Calendar.TUESDAY,   "2001 07 06 Tue", "2001 08 02 Tue"),
+            new TestData(2001, 8,  5,  2001,7,6,Calendar.SUNDAY,    "2001 07 06 Sun", "2001 08 02 Sun"),
+            new TestData(2001, 7,  30, 2001,8,1,Calendar.MONDAY,    "2001 08 01 Mon", "2001 07 05 Mon"),
+            new TestData(2001, 7,  31, 2001,8,1,Calendar.TUESDAY,   "2001 08 01 Tue", "2001 07 05 Tue"),
+            new TestData(2001, 7,29, /*8,  5,*/  2001,8,1,Calendar.SUNDAY,    "2001 08 01 Sun", "2001 07 05 Sun"),
+            new TestData(2001, 12, 31, 2001,12,6,Calendar.MONDAY,   "2001 12 06 Mon", null),
+            new TestData(2002, 1,  1,  2002,1,1,Calendar.TUESDAY,   "2002 01 01 Tue", null),
+            new TestData(2002, 1,  2,  2002,1,1,Calendar.WEDNESDAY, "2002 01 01 Wed", null),
+            new TestData(2002, 1,  3,  2002,1,1,Calendar.THURSDAY,  "2002 01 01 Thu", null),
+            new TestData(2002, 1,  4,  2002,1,1,Calendar.FRIDAY,    "2002 01 01 Fri", null),
+            new TestData(2002, 1,  5,  2002,1,1,Calendar.SATURDAY,  "2002 01 01 Sat", null),
+            new TestData(2001,12,30, /*2002, 1,  6,*/  2002,1,1,Calendar.SUNDAY,    "2002 01 01 Sun", "2001 12 06 Sun"),
+        };
+
+        int pass = 0, error = 0, warning = 0;
+
+        final String pattern = "yyyy MM WW EEE";
+        GregorianCalendar cal = new GregorianCalendar();
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+        sdf.setCalendar(cal);
+
+        cal.setFirstDayOfWeek(Calendar.SUNDAY);
+        cal.setMinimalDaysInFirstWeek(1);
+
+        for (int i = 0; i < tests.length; ++i) {
+            TestData test = tests[i];
+            log("\n-----\nTesting round trip of " + test.year +
+                  " " + (test.month + 1) +
+                  " " + test.date +
+                  " (written as) " + test.data);
+
+            cal.clear();
+            cal.set(test.year, test.month, test.date);
+            Date ms = cal.getTime();
+
+            cal.clear();
+            cal.set(Calendar.YEAR, test.womyear);
+            cal.set(Calendar.MONTH, test.wommon);
+            cal.set(Calendar.WEEK_OF_MONTH, test.wom);
+            cal.set(Calendar.DAY_OF_WEEK, test.dow);
+            Date ms2 = cal.getTime();
+
+            if (!ms2.equals(ms)) {
+                log("\nError: GregorianCalendar.DOM gave " + ms +
+                    "\n       GregorianCalendar.WOM gave " + ms2);
+                error++;
+            } else {
+                pass++;
+            }
+
+            ms2 = null;
+            try {
+                ms2 = sdf.parse(test.data);
+            }
+            catch (ParseException e) {
+                errln("parse exception: " + e);
+            }
+
+            if (!ms2.equals(ms)) {
+                log("\nError: GregorianCalendar gave      " + ms +
+                    "\n       SimpleDateFormat.parse gave " + ms2);
+                error++;
+            } else {
+                pass++;
+            }
+
+            String result = sdf.format(ms);
+            if (!result.equals(test.normalized)) {
+                log("\nWarning: format of '" + test.data + "' gave" +
+                    "\n                   '" + result + "'" +
+                    "\n          expected '" + test.normalized + "'");
+                warning++;
+            } else {
+                pass++;
+            }
+
+            Date ms3 = null;
+            try {
+                ms3 = sdf.parse(result);
+            }
+            catch (ParseException e) {
+                errln("parse exception 2: " + e);
+            }
+
+            if (!ms3.equals(ms)) {
+                error++;
+                log("\nError: Re-parse of '" + result + "' gave time of " +
+                    "\n        " + ms3 +
+                    "\n    not " + ms);
+            } else {
+                pass++;
+            }
+        }
+        String info = "\nPassed: " + pass + ", Warnings: " + warning + ", Errors: " + error;
+        if (error > 0) {
+            errln(info);
+        } else {
+            logln(info);
+        }
+    }
+
+    /**
+     * Test the ZoneMeta API.
+     */
+    public void TestZoneMeta() {
+        // Test index by country API
+
+        // Format: {country, zone1, zone2, ..., zoneN}
+        String COUNTRY[][] = { {""},
+                               {"US", "America/Los_Angeles", "PST"} };
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<COUNTRY.length; ++i) {
+            String[] a = ZoneMeta.getAvailableIDs(COUNTRY[i][0]);
+            buf.setLength(0);
+            buf.append("Country \"" + COUNTRY[i][0] + "\": [");
+            // Use bitmask to track which of the expected zones we see
+            int mask = 0;
+            for (int j=0; j<a.length; ++j) {
+                if (j!=0) buf.append(", ");
+                buf.append(a[j]);
+                for (int k=1; k<COUNTRY[i].length; ++k) {
+                    if ((mask & (1<<k)) == 0 &&
+                        a[j].equals(COUNTRY[i][k])) {
+                        mask |= (1<<k);
+                    }
+                }
+            }
+            buf.append("]");
+            mask >>= 1;
+            // Check bitmask to see if we saw all expected zones
+            if (mask == (1 << (COUNTRY[i].length-1))-1) {
+                logln(buf.toString());
+            } else {
+                errln(buf.toString());
+            }
+        }
+
+        // Test equivalent IDs API
+
+        int n = ZoneMeta.countEquivalentIDs("PST");
+        boolean ok = false;
+        buf.setLength(0);
+        buf.append("Equivalent to PST: ");
+        for (int i=0; i<n; ++i) {
+            String id = ZoneMeta.getEquivalentID("PST", i);
+            if (id.equals("America/Los_Angeles")) {
+                ok = true;
+            }
+            if (i!=0) buf.append(", ");
+            buf.append(id);
+        }
+        if (ok) {
+            logln(buf.toString());
+        } else {
+            errln(buf.toString());
+        }
+    }
+
+    public void TestComparable() {
+    GregorianCalendar c0 = new GregorianCalendar();
+    GregorianCalendar c1 = new GregorianCalendar();
+    c1.add(Calendar.DAY_OF_MONTH, 1);
+    if (c0.compareTo(c1) >= 0) {
+        errln("calendar " + c0 + " not < " + c1);
+    }
+    c0.add(Calendar.MONTH, 1);
+    if (c0.compareTo(c1) <= 0) {
+        errln("calendar " + c0 + " not > " + c1);
+    }
+
+    c0.setTimeInMillis(c1.getTimeInMillis());
+    if (c0.compareTo(c1) != 0) {
+        errln("calendar " + c0 + " not == " + c1);
+    }
+
+    // coverage
+    try {
+        c0.compareTo((Object)null);
+        errln("calendar.compareTo didn't object to null arg");
+    }
+    catch (NullPointerException npe) {
+        logln("PASS: calendar.compareTo objected to null arg");
+    }
+    }
+
+    /**
+     * Miscellaneous tests to increase coverage.
+     */
+    public void TestCoverage() {
+        // BuddhistCalendar
+        BuddhistCalendar bcal = new BuddhistCalendar();
+        /*int i =*/ bcal.getMinimum(Calendar.ERA);
+        bcal.add(Calendar.YEAR, 1);
+        bcal.add(Calendar.MONTH, 1);
+        /*Date d = */bcal.getTime();
+
+        // CalendarAstronomer
+        // (This class should probably be made package-private.)
+        CalendarAstronomer astro = new CalendarAstronomer();
+        /*String s = */astro.local(0);
+
+        // ChineseCalendar
+        ChineseCalendar ccal = new ChineseCalendar(TimeZone.getDefault(),
+                                                   Locale.getDefault());
+        ccal.add(Calendar.MONTH, 1);
+        ccal.add(Calendar.YEAR, 1);
+        ccal.roll(Calendar.MONTH, 1);
+        ccal.roll(Calendar.YEAR, 1);
+        ccal.getTime();
+
+        // ICU 2.6
+        Calendar cal = Calendar.getInstance(Locale.US);
+        logln(cal.toString());
+        logln(cal.getDisplayName(Locale.US));
+        int weekendOnset=-1;
+        int weekendCease=-1;
+        for (int i=Calendar.SUNDAY; i<=Calendar.SATURDAY; ++i) {
+            if (cal.getDayOfWeekType(i) == Calendar.WEEKEND_ONSET) {
+                weekendOnset = i;
+            }
+            if (cal.getDayOfWeekType(i) == Calendar.WEEKEND_CEASE) {
+                weekendCease = i;
+            }
+        }
+        // can't call this unless we get a transition day (unusual),
+        // but make the call anyway for coverage reasons
+        try {
+            /*int x=*/ cal.getWeekendTransition(weekendOnset);
+            /*int x=*/ cal.getWeekendTransition(weekendCease);
+        } catch (IllegalArgumentException e) {}
+        /*int x=*/ cal.isWeekend(new Date());
+
+        // new GregorianCalendar(ULocale)
+        GregorianCalendar gcal = new GregorianCalendar(ULocale.getDefault());
+        if(gcal==null){
+            errln("could not create GregorianCalendar with ULocale");
+        } else {
+            logln("Calendar display name: " + gcal.getDisplayName(ULocale.getDefault()));
+        }
+
+        //cover getAvailableULocales
+        final ULocale[] locales = Calendar.getAvailableULocales();
+        long count = locales.length;
+        if (count == 0)
+            errln("getAvailableULocales return empty list");
+        logln("" + count + " available ulocales in Calendar.");
+
+        // Jitterbug 4451, for coverage
+        class StubCalendar extends Calendar{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = -4558903444622684759L;
+            protected int handleGetLimit(int field, int limitType) {return 0;}
+            protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {return 0;}
+            protected int handleGetExtendedYear() {return 0;}
+            public void run(){
+                if (Calendar.gregorianPreviousMonthLength(2000,2) != 29){
+                    errln("Year 2000 Feb should have 29 days.");
+                }
+                long millis = Calendar.julianDayToMillis(Calendar.MAX_JULIAN);
+                if(millis != Calendar.MAX_MILLIS){
+                    errln("Did not get the expected value from julianDayToMillis. Got:" + millis);
+                }
+                DateFormat df = handleGetDateFormat("",Locale.getDefault());
+                if (!df.equals(handleGetDateFormat("",ULocale.getDefault()))){
+                    errln ("Calendar.handleGetDateFormat(String, Locale) should delegate to ( ,ULocale)");
+                }
+                if (!getType().equals("gregorian")){
+                    errln ("Calendar.getType() should be 'gregorian'");
+                }
+            }
+        }
+        StubCalendar stub = new StubCalendar();
+        stub.run();
+    }
+
+    // Tests for jb 4541
+    public void TestJB4541() {
+        ULocale loc = new ULocale("en_US");
+
+        // !!! Shouldn't we have an api like this?
+        // !!! Question: should this reflect those actually available in this copy of ICU, or 
+        // the list of types we assume is available?
+        // String[] calTypes = Calendar.getAvailableTypes();
+        final String[] calTypes = {
+            "buddhist", "chinese", "coptic", "ethiopic", "gregorian", "hebrew", 
+            "islamic", "islamic-civil", "japanese", "roc"
+        };
+        
+        // constructing a DateFormat with a locale indicating a calendar type should construct a
+        // date format appropriate to that calendar
+        final Date time = new Date();
+        for (int i = 0; i < calTypes.length; ++i) {
+            ULocale aLoc = loc.setKeywordValue("calendar", calTypes[i]);
+            logln("locale: " + aLoc);
+
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,
+                                                           DateFormat.FULL,
+                                                           aLoc);
+
+            logln("df type: " + df.getClass().getName() + " loc: " + df.getLocale(ULocale.VALID_LOCALE));
+
+            Calendar cal = df.getCalendar();
+            // todo, what about variants of calendars, we have a type for islamic-civil, should we also have a type
+            // for variants of other calendars?
+            assertEquals("calendar types", cal.getType(), calTypes[i].equals("islamic-civil") ? "islamic" : calTypes[i]);
+            DateFormat df2 = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, ULocale.US);
+            logln("df2 type: " + df2.getClass().getName() + " loc: " + df2.getLocale(ULocale.VALID_LOCALE));
+            assertEquals("format results", df.format(time), df2.format(time));
+        }
+
+        // dateFormat.setCalendar should throw exception if wrong format for calendar
+        if (false) {
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, 
+                                                           DateFormat.FULL, 
+                                                           new ULocale("en_US@calendar=chinese"));
+
+            logln("dateformat type: " + df.getClass().getName());
+
+            Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=chinese"));
+                                                
+            logln("calendar type: " + cal.getClass().getName());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IndianTest.java b/src/com/ibm/icu/dev/test/calendar/IndianTest.java
new file mode 100644
index 0000000..0e6e3fc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IndianTest.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.IndianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>IndianCalendar</code> class.
+ */
+public class IndianTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new IndianTest().run(args);
+    }
+    // Months in indian calendar are 0-based. Here taking 1-based names:
+    public static final int CHAITRA = IndianCalendar.CHAITRA + 1; 
+    public static final int VAISAKHA = IndianCalendar.VAISAKHA + 1;
+    public static final int JYAISTHA = IndianCalendar.JYAISTHA + 1;
+    public static final int ASADHA = IndianCalendar.ASADHA + 1;
+    public static final int SRAVANA = IndianCalendar.SRAVANA + 1 ;
+    public static final int BHADRA = IndianCalendar.BHADRA + 1 ;
+    public static final int  ASVINA = IndianCalendar.ASVINA  + 1 ;
+    public static final int KARTIKA = IndianCalendar.KARTIKA + 1 ;
+    public static final int AGRAHAYANA = IndianCalendar.AGRAHAYANA + 1 ;
+    public static final int PAUSA = IndianCalendar.PAUSA + 1 ;
+    public static final int MAGHA = IndianCalendar.MAGHA + 1 ;
+    public static final int PHALGUNA = IndianCalendar.PHALGUNA + 1 ;
+
+    /** Constants to save typing. */
+    /* Test dates generated from:
+     * http://www.fourmilab.ch/documents/calendar/ 
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the Indian civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Indian
+            //          Julian Day  Era  Year   Month Day    WkDay Hour Min Sec
+           new TestCase(1770641.5,  0,    57,    ASVINA,       10,  SUN,   0,  0,  0),
+           new TestCase(1892731.5,  0,   391,    PAUSA,        18,  WED,   0,  0,  0),
+           new TestCase(1931579.5,  0,   498,    VAISAKHA,     30,  MON,   0,  0,  0),
+           new TestCase(1974851.5,  0,   616,    KARTIKA,      19,  SAT,   0,  0,  0),
+           new TestCase(2091164.5,  0,   935,    VAISAKHA,      5,  SUN,   0,  0,  0),
+           new TestCase(2121509.5,  0,  1018,    JYAISTHA,      3,  SUN,   0,  0,  0),
+           new TestCase(2155779.5,  0,  1112,    CHAITRA,       2,  FRI,   0,  0,  0),
+           new TestCase(2174029.5,  0,  1161,    PHALGUNA,     20,  SAT,   0,  0,  0),
+           new TestCase(2191584.5,  0,  1210,    CHAITRA,      13,  FRI,   0,  0,  0),
+           new TestCase(2195261.5,  0,  1220,    VAISAKHA,      7,  SUN,   0,  0,  0),
+           new TestCase(2229274.5,  0,  1313,    JYAISTHA,     22,  SUN,   0,  0,  0),
+           new TestCase(2245580.5,  0,  1357,    MAGHA,        14,  WED,   0,  0,  0),
+           new TestCase(2266100.5,  0,  1414,    CHAITRA,      20,  SAT,   0,  0,  0),
+           new TestCase(2288542.5,  0,  1475,    BHADRA,       28,  SAT,   0,  0,  0),
+           new TestCase(2290901.5,  0,  1481,    PHALGUNA,     15,  SAT,   0,  0,  0),
+           new TestCase(2323140.5,  0,  1570,    JYAISTHA,     20,  WED,   0,  0,  0),
+           new TestCase(2334551.5,  0,  1601,    BHADRA,       16,  THU,   0,  0,  0),
+           new TestCase(2334581.5,  0,  1601,    ASVINA,       15,  SAT,   0,  0,  0),
+           new TestCase(2334610.5,  0,  1601,    KARTIKA,      14,  SUN,   0,  0,  0),
+           new TestCase(2334639.5,  0,  1601,    AGRAHAYANA,   13,  MON,   0,  0,  0),
+           new TestCase(2334668.5,  0,  1601,    PAUSA,        12,  TUE,   0,  0,  0),
+           new TestCase(2334698.5,  0,  1601,    MAGHA,        12,  THU,   0,  0,  0),
+           new TestCase(2334728.5,  0,  1601,    PHALGUNA,     12,  SAT,   0,  0,  0),
+           new TestCase(2334757.5,  0,  1602,    CHAITRA,      11,  SUN,   0,  0,  0),
+           new TestCase(2334787.5,  0,  1602,    VAISAKHA,     10,  TUE,   0,  0,  0),
+           new TestCase(2334816.5,  0,  1602,    JYAISTHA,      8,  WED,   0,  0,  0),
+           new TestCase(2334846.5,  0,  1602,    ASADHA,        7,  FRI,   0,  0,  0),
+           new TestCase(2334848.5,  0,  1602,    ASADHA,        9,  SUN,   0,  0,  0),
+           new TestCase(2348020.5,  0,  1638,    SRAVANA,       2,  FRI,   0,  0,  0),
+           new TestCase(2334934.5,  0,  1602,    ASVINA,        2,  TUE,   0,  0,  0),
+           new TestCase(2366978.5,  0,  1690,    JYAISTHA,     29,  SUN,   0,  0,  0),
+           new TestCase(2385648.5,  0,  1741,    SRAVANA,      11,  MON,   0,  0,  0),
+           new TestCase(2392825.5,  0,  1761,    CHAITRA,       6,  WED,   0,  0,  0),
+           new TestCase(2416223.5,  0,  1825,    CHAITRA,      29,  SUN,   0,  0,  0),
+           new TestCase(2425848.5,  0,  1851,    BHADRA,        3,  SUN,   0,  0,  0),
+           new TestCase(2430266.5,  0,  1863,    ASVINA,        7,  MON,   0,  0,  0),
+           new TestCase(2430833.5,  0,  1865,    CHAITRA,      29,  MON,   0,  0,  0),
+           new TestCase(2431004.5,  0,  1865,    ASVINA,       15,  THU,   0,  0,  0),
+           new TestCase(2448698.5,  0,  1913,    PHALGUNA,     27,  TUE,   0,  0,  0),
+           new TestCase(2450138.5,  0,  1917,    PHALGUNA,      6,  SUN,   0,  0,  0),
+           new TestCase(2465737.5,  0,  1960,    KARTIKA,      19,  WED,   0,  0,  0),
+           new TestCase(2486076.5,  0,  2016,    ASADHA,       27,  SUN,   0,  0,  0),
+        };
+        
+        IndianCalendar testCalendar = new IndianCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+    }
+
+    public void TestBasic() {
+        IndianCalendar cal = new IndianCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    public void TestCoverage() {
+
+        {
+            // new IndianCalendar(TimeZone)
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create IndianCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new IndianCalendar(ULocale)
+            IndianCalendar cal = new IndianCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create IndianCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new IndianCalendar(Locale)
+            IndianCalendar cal = new IndianCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create IndianCalendar with Locale");
+            }
+        }
+        
+        {                                                                                       
+            // new IndianCalendar(TimeZone, Locale)                                             
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault(),Locale.getDefault()); 
+            if(cal == null){                                                                    
+                errln("could not create IndianCalendar with TimeZone, Locale");                 
+            }                                                                                   
+        }                                                                                       
+                                                                                                
+        {                                                                                       
+            // new IndianCalendar(TimeZone, ULocale)                                            
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault(),ULocale.getDefault());
+            if(cal == null){                                                                    
+                errln("could not create IndianCalendar with TimeZone, ULocale");                
+            }                                                                                   
+        }                                                                                       
+        
+        {
+            // new IndianCalendar(Date)
+            IndianCalendar cal = new IndianCalendar(new Date());
+            if(cal == null){
+                errln("could not create IndianCalendar with Date");
+            }
+        }
+        {
+            // new IndianCalendar(int year, int month, int date)
+            IndianCalendar cal = new IndianCalendar(1917, IndianCalendar.CHAITRA, 1);
+            if(cal == null){
+                errln("could not create IndianCalendar with year,month,date");
+            }
+        }
+        {
+            // new IndianCalendar(int year, int month, int date, int hour, int minute, int second)
+            IndianCalendar cal = new IndianCalendar(1917, IndianCalendar.CHAITRA, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create IndianCalendar with year,month,date,hour,minute,second");
+            }
+        }
+    
+        {
+            // data
+            String[] calendarLocales = {
+                "bn_IN", "gu_IN", "hi_IN", "kn_IN", "ml_IN", "or_IN", "pa_IN", "ta_IN", "te_IN"
+            };
+
+            String[] formatLocales = {
+                "en", "fr", "bn", "gu", "hi", "kn", "ml", "or", "pa", "ta", "te"
+            };
+
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                IndianCalendar cal = new IndianCalendar(calLocale);
+                cal.set(-1039, 9, 21);
+
+                for (int j = 0; j < formatLocales.length; j++  ) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(cal));
+                }
+            }
+        }
+    }
+
+    public void TestYear() {
+        // Gregorian Calendar
+        Calendar gCal= new GregorianCalendar();
+        Date gToday=gCal.getTime();
+        gCal.add(GregorianCalendar.MONTH,2);
+        Date gFuture=gCal.getTime();
+        DateFormat gDF = DateFormat.getDateInstance(gCal,DateFormat.FULL);
+        logln("gregorian calendar: " + gDF.format(gToday) +
+              " + 2 months = " + gDF.format(gFuture));
+
+        // Indian Calendar
+        IndianCalendar iCal= new IndianCalendar();
+        Date iToday=iCal.getTime();
+        iCal.add(IndianCalendar.MONTH,2);
+        Date iFuture=iCal.getTime();
+        DateFormat iDF = DateFormat.getDateInstance(iCal,DateFormat.FULL);
+        logln("Indian calendar: " + iDF.format(iToday) +
+              " + 2 months = " + iDF.format(iFuture));
+
+    }
+
+    /**
+     * Test limits of the Indian calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        IndianCalendar indian = new IndianCalendar();
+        doLimitsTest(indian, null, cal.getTime());
+        doTheoreticalLimitsTest(indian, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
new file mode 100644
index 0000000..60f7606
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
@@ -0,0 +1,257 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>IslamicCalendar</code> class.
+ */
+public class IslamicTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new IslamicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MUHARRAM = IslamicCalendar.MUHARRAM;
+    public static final int SAFAR =  IslamicCalendar.SAFAR;
+    public static final int RABI_1 =  IslamicCalendar.RABI_1;
+    public static final int RABI_2 =  IslamicCalendar.RABI_2;
+    public static final int JUMADA_1 =  IslamicCalendar.JUMADA_1;
+    public static final int JUMADA_2 =  IslamicCalendar.JUMADA_2;
+    public static final int RAJAB =  IslamicCalendar.RAJAB;
+    public static final int SHABAN =  IslamicCalendar.SHABAN;
+    public static final int RAMADAN =  IslamicCalendar.RAMADAN;
+    public static final int SHAWWAL =  IslamicCalendar.SHAWWAL;
+    public static final int QIDAH =  IslamicCalendar.DHU_AL_QIDAH;
+    public static final int HIJJAH =  IslamicCalendar.DHU_AL_HIJJAH;
+
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+            {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+            {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+            {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+            {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+            {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+            {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+            // Try some rolls that require other fields to be adjusted
+            {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+            {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+        };
+       
+        IslamicCalendar cal = newCivil();
+
+        doRollAdd(ROLL, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCivilCases()
+    {
+        final TestCase[] tests = {
+            //
+            // Most of these test cases were taken from the back of
+            // "Calendrical Calculations", with some extras added to help
+            // debug a few of the problems that cropped up in development.
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                       Islamic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            new TestCase(1507231.5,  0, -1245,   12,   9,  SUN,   0,  0,  0),
+            new TestCase(1660037.5,  0,  -813,    2,  23,  WED,   0,  0,  0),
+            new TestCase(1746893.5,  0,  -568,    4,   1,  WED,   0,  0,  0),
+            new TestCase(1770641.5,  0,  -501,    4,   6,  SUN,   0,  0,  0),
+            new TestCase(1892731.5,  0,  -157,   10,  17,  WED,   0,  0,  0),
+            new TestCase(1931579.5,  0,   -47,    6,   3,  MON,   0,  0,  0),
+            new TestCase(1974851.5,  0,    75,    7,  13,  SAT,   0,  0,  0),
+            new TestCase(2091164.5,  0,   403,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2121509.5,  0,   489,    5,  22,  SUN,   0,  0,  0),
+            new TestCase(2155779.5,  0,   586,    2,   7,  FRI,   0,  0,  0),
+            new TestCase(2174029.5,  0,   637,    8,   7,  SAT,   0,  0,  0),
+            new TestCase(2191584.5,  0,   687,    2,  20,  FRI,   0,  0,  0),
+            new TestCase(2195261.5,  0,   697,    7,   7,  SUN,   0,  0,  0),
+            new TestCase(2229274.5,  0,   793,    7,   1,  SUN,   0,  0,  0),
+            new TestCase(2245580.5,  0,   839,    7,   6,  WED,   0,  0,  0),
+            new TestCase(2266100.5,  0,   897,    6,   1,  SAT,   0,  0,  0),
+            new TestCase(2288542.5,  0,   960,    9,  30,  SAT,   0,  0,  0),
+            new TestCase(2290901.5,  0,   967,    5,  27,  SAT,   0,  0,  0),
+            new TestCase(2323140.5,  0,  1058,    5,  18,  WED,   0,  0,  0),
+            new TestCase(2334848.5,  0,  1091,    6,   2,  SUN,   0,  0,  0),
+            new TestCase(2348020.5,  0,  1128,    8,   4,  FRI,   0,  0,  0),
+            new TestCase(2366978.5,  0,  1182,    2,   3,  SUN,   0,  0,  0),
+            new TestCase(2385648.5,  0,  1234,   10,  10,  MON,   0,  0,  0),
+            new TestCase(2392825.5,  0,  1255,    1,  11,  WED,   0,  0,  0),
+            new TestCase(2416223.5,  0,  1321,    1,  21,  SUN,   0,  0,  0),
+            new TestCase(2425848.5,  0,  1348,    3,  19,  SUN,   0,  0,  0),
+            new TestCase(2430266.5,  0,  1360,    9,   8,  MON,   0,  0,  0),
+            new TestCase(2430833.5,  0,  1362,    4,  13,  MON,   0,  0,  0),
+            new TestCase(2431004.5,  0,  1362,   10,   7,  THU,   0,  0,  0),
+            new TestCase(2448698.5,  0,  1412,    9,  13,  TUE,   0,  0,  0),
+            new TestCase(2450138.5,  0,  1416,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2465737.5,  0,  1460,   10,  12,  WED,   0,  0,  0),
+            new TestCase(2486076.5,  0,  1518,    3,   5,  SUN,   0,  0,  0),
+        };
+        
+        IslamicCalendar civilCalendar = newCivil();
+        civilCalendar.setLenient(true);
+        doTestCases(tests, civilCalendar);
+    }
+
+    public void TestBasic() {
+        IslamicCalendar cal = newCivil();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    /**
+     * Test limits of the Islamic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        IslamicCalendar islamic = newCivil();
+        doLimitsTest(islamic, null, cal.getTime());
+        doTheoreticalLimitsTest(islamic, true);
+    }
+
+    public void TestCoverage() {
+    {
+        // new IslamicCalendar(TimeZone)
+        IslamicCalendar cal = new IslamicCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new IslamicCalendar(ULocale)
+        IslamicCalendar cal = new IslamicCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with ULocale");
+        }
+    }
+        
+    {
+        // new IslamicCalendar(Locale)
+        IslamicCalendar cal = new IslamicCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with Locale");
+        }
+    }
+
+    {
+        // new IslamicCalendar(Date)
+        IslamicCalendar cal = new IslamicCalendar(new Date());
+        if(cal == null){
+            errln("could not create IslamicCalendar with Date");
+        }
+    }
+
+    {
+        // new IslamicCalendar(int year, int month, int date)
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+        if(cal == null){
+            errln("could not create IslamicCalendar with year,month,date");
+        }
+    }
+
+    {
+        // new IslamicCalendar(int year, int month, int date, int hour, int minute, int second)
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+        if(cal == null){
+            errln("could not create IslamicCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // setCivil/isCivil
+        // operations on non-civil calendar
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+        cal.setCivil(false);
+        if (cal.isCivil()) {
+        errln("islamic calendar is civil");
+        }
+
+        Date now = new Date();
+        cal.setTime(now);
+
+        Date then = cal.getTime();
+        if (!now.equals(then)) {
+        errln("get/set time failed with non-civil islamic calendar");
+        }
+
+        logln(then.toString());
+
+        cal.add(Calendar.MONTH, 1);
+        cal.add(Calendar.DAY_OF_MONTH, 1);
+        cal.add(Calendar.YEAR, 1);
+
+        logln(cal.getTime().toString());
+    }
+    
+    {
+        // data
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "ar_AE", "ar_BH", "ar_DZ", "ar_EG", "ar_JO", "ar_KW", "ar_OM", 
+        "ar_QA", "ar_SA", "ar_SY", "ar_YE", "ms_MY"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "fi", "fr", "hu", "iw", "nl"
+        };
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new IslamicCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    private static IslamicCalendar newCivil() {
+        IslamicCalendar civilCalendar = new IslamicCalendar();
+        civilCalendar.setCivil(true);
+        return civilCalendar;
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
new file mode 100644
index 0000000..78dd274
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
@@ -0,0 +1,371 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>JapaneseCalendar</code> class.
+ */
+public class JapaneseTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new JapaneseTest().run(args);
+    }
+
+    public void TestCoverage() {
+    {
+        // new JapaneseCalendar(TimeZone)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(ULocale)
+        JapaneseCalendar cal = new JapaneseCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with ULocale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(TimeZone, ULocale)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault(), ULocale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(Locale)
+        JapaneseCalendar cal = new JapaneseCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with Locale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(TimeZone, Locale)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone Locale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(Date)
+        JapaneseCalendar cal = new JapaneseCalendar(new Date());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with Date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int year, int month, int date)
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with year,month,date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int era, int year, int month, int date)
+        JapaneseCalendar cal = new JapaneseCalendar(JapaneseCalendar.MEIJI, 43, Calendar.JANUARY, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with era,year,month,date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int year, int month, int date, int hour, int minute, int second)
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1, 1, 1, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with year,month,date,hour,min,second");
+        }
+    }
+
+    {
+        // limits
+        JapaneseCalendar cal = new JapaneseCalendar();
+        DateFormat fmt = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, Locale.ENGLISH);
+
+        cal.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        logln("date: " + cal.getTime());
+        logln("min era: " + cal.getMinimum(Calendar.ERA));
+        logln("min year: " + cal.getMinimum(Calendar.YEAR));
+        cal.set(Calendar.YEAR, cal.getActualMaximum(Calendar.YEAR));
+        logln("date: " + fmt.format(cal.getTime()));
+        cal.add(Calendar.YEAR, 1);
+        logln("date: " + fmt.format(cal.getTime()));
+    }
+
+    {
+        // data
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "en", "ja_JP"
+        };
+
+        String[] formatLocales = {
+        "en", "ja"
+        };
+        for (int i = 0; i < calendarLocales.length; ++i) {
+            String calLocName = calendarLocales[i];
+            Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+            cal = new JapaneseCalendar(calLocale);
+
+            for (int j = 0; j < formatLocales.length; ++j) {
+                String locName = formatLocales[j];
+                Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                logln(calLocName + "/" + locName + " --> " + format.format(time));
+            }
+        }
+    }
+    }
+    
+    public void Test3860()
+    {
+        ULocale loc = new ULocale("ja_JP@calendar=japanese");
+        Calendar cal = new JapaneseCalendar(loc);
+        DateFormat enjformat = cal.getDateTimeFormat(0,0,new ULocale("en_JP@calendar=japanese"));
+        DateFormat format = cal.getDateTimeFormat(0,0,loc);
+        ((SimpleDateFormat)format).applyPattern("y.M.d");  // Note: just 'y' doesn't work here.
+        ParsePosition pos = new ParsePosition(0);
+        Date aDate = format.parse("1.1.9", pos); // after the start of heisei accession.  Jan 1, 1H wouldn't work  because it is actually showa 64
+        String inEn = enjformat.format(aDate);
+
+        cal.clear();
+        cal.setTime(aDate);
+        int gotYear = cal.get(Calendar.YEAR);
+        int gotEra = cal.get(Calendar.ERA);
+        
+        int expectYear = 1;
+        int expectEra = JapaneseCalendar.CURRENT_ERA;
+        
+        if((gotYear != expectYear) || (gotEra != expectEra)) {
+            errln("Expected year " + expectYear + ", era " + expectEra +", but got year " + gotYear + " and era " + gotEra + ", == " + inEn);
+        } else {
+            logln("Got year " + gotYear + " and era " + gotEra + ", == " + inEn);
+        }
+
+        // Test parse with missing era (should default to current era, heisei)
+        // Test parse with incomplete information
+        logln("Testing parse w/ just year...");
+        Calendar cal2 = new JapaneseCalendar(loc);
+        SimpleDateFormat fmt = new SimpleDateFormat("y", loc);
+        SimpleDateFormat fmt2 = new SimpleDateFormat("HH:mm:ss.S MMMM d, yyyy G", new ULocale("en_US@calendar=gregorian"));
+        cal2.clear();
+        String samplestr = "1";
+        logln("Test Year: " + samplestr);
+        try {
+            aDate = fmt.parse(samplestr);
+        } catch (ParseException pe) {
+            errln("Error parsing " + samplestr);
+        }
+        ParsePosition pp = new ParsePosition(0);
+        fmt.parse(samplestr, cal2, pp);
+        logln("cal2 after 1 parse:");
+        String str = fmt2.format(aDate);
+        logln("as Gregorian Calendar: " + str);
+
+        cal2.setTime(aDate);
+        gotYear = cal2.get(Calendar.YEAR);
+        gotEra = cal2.get(Calendar.ERA);
+        expectYear = 1;
+        expectEra = JapaneseCalendar.CURRENT_ERA;
+        if((gotYear != 1) || (gotEra != expectEra)) {
+            errln("parse "+ samplestr + " of 'y' as Japanese Calendar, expected year " + expectYear + 
+                " and era " + expectEra + ", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")");
+        } else {            
+            logln(" year: " + gotYear + ", era: " + gotEra);
+        }
+    }
+
+    public void Test5345parse() {
+        // Test parse with incomplete information
+        DateFormat fmt2= DateFormat.getDateInstance(); //DateFormat.LONG, Locale.US);
+        JapaneseCalendar c = new JapaneseCalendar(TimeZone.getDefault(), new ULocale("en_US"));
+        SimpleDateFormat fmt = (SimpleDateFormat)c.getDateTimeFormat(1,1,new ULocale("en_US@calendar=japanese"));
+        fmt.applyPattern("G y");
+        logln("fmt's locale = " + fmt.getLocale(ULocale.ACTUAL_LOCALE));
+        //SimpleDateFormat fmt = new SimpleDateFormat("G y", new Locale("en_US@calendar=japanese"));
+        long aDateLong = -3197120400000L 
+            + 3600000L; // compensate for DST
+        Date aDate = new Date(aDateLong); //08 Sept 1868
+        logln("aDate: " + aDate.toString() +", from " + aDateLong);
+        String str;
+        str = fmt2.format(aDate);
+        logln("Test Date: " + str);
+        str = fmt.format(aDate);
+        logln("as Japanese Calendar: " + str);
+        String expected = "Meiji 1";
+        if(!str.equals(expected)) {
+            errln("FAIL: Expected " + expected + " but got " + str);
+        }
+        Date otherDate;
+        try {
+            otherDate = fmt.parse(expected);
+            if(!otherDate.equals(aDate)) { 
+                String str3;
+    //            ParsePosition pp;
+                Date dd = fmt.parse(expected);
+                str3 = fmt.format(otherDate);
+                long oLong = otherDate.getTime();
+                long aLong = otherDate.getTime();
+                
+                errln("FAIL: Parse incorrect of " + expected + ":  wanted " + aDate + " ("+aLong+"), but got " +  " " +
+                    otherDate + " ("+oLong+") = " + str3 + " not " + dd.toString() );
+
+
+            } else {
+                logln("Parsed OK: " + expected);
+            }
+        } catch(java.text.ParseException pe) {
+            errln("FAIL: ParseException: " + pe.toString());
+            pe.printStackTrace();
+        }
+    }
+
+
+    private void checkExpected(Calendar c, int expected[] ) {
+        final String[] FIELD_NAME = {
+            "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+            "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+            "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+            "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+            "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+            "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+        };
+
+        for(int i= 0;i<expected.length;i += 2) {
+            int fieldNum = expected[i+0];
+            int expectedVal = expected[i+1];
+            int actualVal = c.get(fieldNum);
+            
+            if(expectedVal == actualVal) {
+                logln(FIELD_NAME[fieldNum]+": "+ actualVal);
+            } else {
+                errln("FAIL: "+FIELD_NAME[fieldNum]+": expected "+ expectedVal + " got " +  actualVal);
+            }
+        }
+    }
+
+    public void Test5345calendar() {
+        logln("** testIncompleteCalendar()");
+        // Test calendar with incomplete information
+        JapaneseCalendar c = new JapaneseCalendar(TimeZone.getDefault());
+        logln("test clear");
+        c.clear();
+ 
+        // Showa 45 = Gregorian 1970
+        int expected0[] = {   Calendar.ERA, 234,
+                              Calendar.YEAR, 45 };
+        checkExpected(c, expected0);
+
+        logln("test setting era");
+        c.clear();
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        
+        
+        int expectedA[] = {   Calendar.ERA, JapaneseCalendar.MEIJI };
+        checkExpected(c, expectedA);
+
+
+        logln("test setting era and year and month and date");
+        c.clear();
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.MONTH, Calendar.JANUARY);
+        c.set(Calendar.DATE, 1);
+
+
+        int expectedC[] = {   Calendar.ERA, JapaneseCalendar.MEIJI -1};
+        checkExpected(c, expectedC);
+
+
+        logln("test setting  year and month and date THEN era");
+        c.clear();
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.MONTH, Calendar.JANUARY);
+        c.set(Calendar.DATE, 1);
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        
+        
+        checkExpected(c, expectedC);
+        
+        
+        logln("test setting era and year");
+        c.clear();
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+
+
+        int expectedB[] = { Calendar.ERA, JapaneseCalendar.MEIJI,
+                            Calendar.YEAR, 1 };
+        checkExpected(c, expectedB);
+
+    }
+
+    
+    public void TestJapaneseYear3282() {
+        Calendar c = Calendar.getInstance(ULocale.ENGLISH);
+        c.set(2003,Calendar.SEPTEMBER,25);
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        //jcal.setTime(new Date(1187906308151L));  alternate value
+        jcal.setTime(c.getTime());
+        logln("Now is: " + jcal.getTime());
+        c.setTime(jcal.getTime());
+        int nowYear = c.get(Calendar.YEAR);
+        logln("Now year: "+nowYear);
+        SimpleDateFormat jdf = (SimpleDateFormat) SimpleDateFormat.getDateInstance(jcal,
+                SimpleDateFormat.DEFAULT, Locale.getDefault());
+        jdf.applyPattern("G yy/MM/dd");
+        String text = jdf.format(jcal.getTime());
+        logln("Now is: " + text + " (in Japan)");
+        try {
+            Date date = jdf.parse(text);
+            logln("But is this not the date?: " + date);
+            c.setTime(date);
+            int thenYear = c.get(Calendar.YEAR);
+            logln("Then year: "+thenYear);
+            if(thenYear != nowYear) {
+                errln("Nowyear "+nowYear +" is not thenyear "+thenYear);
+            } else {
+                logln("Nowyear "+nowYear +" == thenyear "+thenYear);
+            }
+        } catch (java.text.ParseException ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * Test limits of the Japanese calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1988, Calendar.DECEMBER, 1);
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        doLimitsTest(jcal, null, cal.getTime());
+        doTheoreticalLimitsTest(jcal, true);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/calendar/TestAll.java b/src/com/ibm/icu/dev/test/calendar/TestAll.java
new file mode 100644
index 0000000..f3f5a7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/TestAll.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other calendar tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "AstroTest",
+                  "CalendarRegression",
+                  "CompatibilityTest",
+                  "CopticTest",
+                  "EthiopicTest",
+                  "HebrewTest",
+                  "IBMCalendarTest",
+                  "IslamicTest",
+                  "JapaneseTest",
+                  "ChineseTest",
+                  "IndianTest",
+                  "HolidayTest",
+                  "DataDrivenCalendarTest"
+              },
+              "Calendars, Holiday, and Astro tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Calendar";
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/TestCase.java b/src/com/ibm/icu/dev/test/calendar/TestCase.java
new file mode 100644
index 0000000..ff062d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/TestCase.java
@@ -0,0 +1,241 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * A pseudo <code>Calendar</code> that is useful for testing
+ * new calendars.  A <code>TestCase</code> object is used to hold the
+ * field and millisecond values that the calendar should have at one
+ * particular instant in time.  The applyFields and applyTime
+ * methods are used to apply these settings to the calendar object being
+ * tested, and the equals and fieldsEqual methods are used to ensure
+ * that the calendar has ended up in the right state.
+ */
+public class TestCase {
+
+    //------------------------------------------------------------------
+    // Pseudo-Calendar fields and methods
+    //------------------------------------------------------------------
+
+    protected int[] fields = new int[32];
+    protected boolean[] isSet = new boolean[32];
+    protected long time;
+
+    protected void set(int field, int value) {
+        fields[field] = value;
+        isSet[field] = true;
+    }
+
+    protected int get(int field) {
+        return fields[field];
+    }
+
+    protected boolean isSet(int field) {
+        return isSet[field];
+    }
+
+    protected void setTime(Date d) {
+        time = d.getTime();
+    }
+
+    public Date getTime() {
+        return new Date(time);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) + " " +
+            get(Calendar.YEAR) + "/" + (get(Calendar.MONTH)+1) + "/" +
+            get(Calendar.DATE);
+    }
+
+    private static final String[] DOW_NAMES = {
+        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+    };
+
+    public static String dowToString(int dow) {
+        --dow;
+        return (dow < 0 || dow > 6) ?
+            ("<DOW " + dow + ">") : DOW_NAMES[dow];
+    }
+
+    /**
+     * Initialize a TestCase object using a julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era       The ERA field of tested calendar on the given julian day
+     * @param year      The YEAR field of tested calendar on the given julian day
+     * @param month     The MONTH (1-based) field of tested calendar on the given julian day
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given julian day
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given julian day
+     * @param hour      The HOUR field of tested calendar on the given julian day
+     * @param min       The MINUTE field of tested calendar on the given julian day
+     * @param sec       The SECOND field of tested calendar on the given julian day
+     */
+    public TestCase(double julian,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+
+    /**
+     * Initialize a TestCase object using a Gregorian year/month/day and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param gregYear  The Gregorian year of the date to be tested
+     * @param gregMonth The Gregorian month of the date to be tested
+     * @param gregDay   The Gregorian day of the month of the date to be tested
+     *
+     * @param era       The ERA field of tested calendar on the given gregorian date
+     * @param year      The YEAR field of tested calendar on the given gregorian date
+     * @param month     The MONTH (0-based) field of tested calendar on the given gregorian date
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given gregorian date
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given gregorian date
+     * @param hour      The HOUR field of tested calendar on the given gregorian date
+     * @param min       The MINUTE field of tested calendar on the given gregorian date
+     * @param sec       The SECOND field of tested calendar on the given gregorian date
+     */
+    public TestCase(int gregYear, int gregMonth, int gregDay,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        GregorianCalendar greg = new GregorianCalendar(UTC, Locale.getDefault());
+        greg.clear();
+        greg.set(gregYear, gregMonth-1, gregDay);
+        setTime(greg.getTime());
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+    
+    /**
+     * For subclasses.
+     */
+    protected TestCase() {}
+
+    /**
+     * Apply this test case's field values to another calendar
+     * by calling its set method for each field.  This is useful in combination
+     * with the equal method.
+     *
+     * @see com.ibm.icu.util.Calendar#equals
+     */
+    public void applyFields(Calendar c) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i)) {
+                c.set(i, get(i));
+            }
+        }
+    }
+    
+    /**
+     * Apply this test case's time in milliseconds to another calendar
+     * by calling its setTime method.  This is useful in combination
+     * with fieldsEqual
+     *
+     * @see #fieldsEqual
+     */
+    public void applyTime(Calendar c) {
+        c.setTime(new Date(time));
+    }
+
+    /**
+     * Determine whether the fields of this calendar
+     * are the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeFields method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyTime(testCalendar);
+     *    if (!case.fieldsEqual(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyTime
+     */
+    public boolean fieldsEqual(Calendar c, TestLog log) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i) && get(i) != c.get(i)) {
+                StringBuffer buf = new StringBuffer();
+                buf.append("Fail: " + CalendarTest.fieldName(i) + " = " + c.get(i) +
+                          ", expected " + get(i));
+                for (int j=0; j<c.getFieldCount(); ++j) {
+                    if (isSet(j)) {
+                        if (get(j) == c.get(j)) {
+                            buf.append("\n  ok: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j));
+                        } else {
+                            buf.append("\n  fail: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j) + ", expected " + get(j));
+                        }
+                    }
+                }
+                log.errln(buf.toString());
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Determine whether time in milliseconds of this calendar
+     * is the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeTime method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyFields(testCalendar);
+     *    if (!case.equals(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyFields
+     */
+    public boolean equals(Object obj) {
+        return time == ((Calendar)obj).getTime().getTime();
+    }
+    
+    protected static final int  ONE_SECOND = 1000;
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+    protected static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/package.html b/src/com/ibm/icu/dev/test/calendar/package.html
new file mode 100644
index 0000000..ccb8858
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the calendar classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charset/TestAll.java b/src/com/ibm/icu/dev/test/charset/TestAll.java
new file mode 100644
index 0000000..3e1ca2f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestAll.java
@@ -0,0 +1,33 @@
+/**
+*******************************************************************************
+* Copyright (C) 2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.charset;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "TestCharset",
+                  "TestConversion"
+              },
+              "All ICU Charset Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Charset";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charset/TestCharset.java b/src/com/ibm/icu/dev/test/charset/TestCharset.java
new file mode 100644
index 0000000..7822c86
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -0,0 +1,5283 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.UnsupportedCharsetException;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.SortedMap;
+
+import com.ibm.icu.charset.CharsetCallback;
+import com.ibm.icu.charset.CharsetEncoderICU;
+import com.ibm.icu.charset.CharsetDecoderICU;
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UTF16;
+
+public class TestCharset extends TestFmwk {
+    private String m_encoding = "UTF-16";
+    CharsetDecoder m_decoder = null;
+    CharsetEncoder m_encoder = null;
+    Charset m_charset =null;
+    static final String unistr = "abcd\ud800\udc00\u1234\u00a5\u3000\r\n";
+    static final byte[] byteStr ={   
+            (byte) 0x00,(byte) 'a',
+            (byte) 0x00,(byte) 'b',
+            (byte) 0x00,(byte) 'c',
+            (byte) 0x00,(byte) 'd',
+            (byte) 0xd8,(byte) 0x00,
+            (byte) 0xdc,(byte) 0x00,
+            (byte) 0x12,(byte) 0x34,
+            (byte) 0x00,(byte) 0xa5,
+            (byte) 0x30,(byte) 0x00,
+            (byte) 0x00,(byte) 0x0d,
+            (byte) 0x00,(byte) 0x0a };
+    static final byte[] expectedByteStr ={
+        (byte) 0xfe,(byte) 0xff,
+        (byte) 0x00,(byte) 'a',
+        (byte) 0x00,(byte) 'b',
+        (byte) 0x00,(byte) 'c',
+        (byte) 0x00,(byte) 'd',
+        (byte) 0xd8,(byte) 0x00,
+        (byte) 0xdc,(byte) 0x00,
+        (byte) 0x12,(byte) 0x34,
+        (byte) 0x00,(byte) 0xa5,
+        (byte) 0x30,(byte) 0x00,
+        (byte) 0x00,(byte) 0x0d,
+        (byte) 0x00,(byte) 0x0a };
+    
+    protected void init(){
+        try{
+            if ("UTF-16".equals(m_encoding)) {
+                int x = 2;
+                x++;
+            }
+            CharsetProviderICU provider = new CharsetProviderICU();
+            //Charset charset = CharsetICU.forName(encoding);
+            m_charset = provider.charsetForName(m_encoding);
+            m_decoder = (CharsetDecoder) m_charset.newDecoder();
+            m_encoder = (CharsetEncoder) m_charset.newEncoder();   
+        }catch(MissingResourceException ex){
+            warnln("Could not load charset data");
+        }
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestCharset().run(args);
+    }
+    public void TestUTF16Converter(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset cs1 = icu.charsetForName("UTF-16BE");
+        CharsetEncoder e1 = cs1.newEncoder();
+        CharsetDecoder d1 = cs1.newDecoder();
+        
+        Charset cs2 = icu.charsetForName("UTF-16LE");
+        CharsetEncoder e2 = cs2.newEncoder();
+        CharsetDecoder d2 = cs2.newDecoder();
+        
+        for(int i=0x0000; i<0x10FFFF; i+=0xFF){
+            CharBuffer us = CharBuffer.allocate(0xFF*2);
+            ByteBuffer bs1 = ByteBuffer.allocate(0xFF*8);
+            ByteBuffer bs2 = ByteBuffer.allocate(0xFF*8);
+            for(int j=0;j<0xFF; j++){
+                int c = i+j;
+              
+                if((c>=0xd800&&c<=0xdFFF)||c>0x10FFFF){
+                    continue;
+                }
+
+                if(c>0xFFFF){
+                    char lead = UTF16.getLeadSurrogate(c);
+                    char trail = UTF16.getTrailSurrogate(c);
+                    if(!UTF16.isLeadSurrogate(lead)){
+                        errln("lead is not lead!"+lead+" for cp: \\U"+Integer.toHexString(c));
+                        continue;
+                    }
+                    if(!UTF16.isTrailSurrogate(trail)){
+                        errln("trail is not trail!"+trail);
+                        continue;
+                    }
+                    us.put(lead);
+                    us.put(trail);
+                    bs1.put((byte)(lead>>8));
+                    bs1.put((byte)(lead&0xFF));
+                    bs1.put((byte)(trail>>8));
+                    bs1.put((byte)(trail&0xFF));
+                    
+                    bs2.put((byte)(lead&0xFF));
+                    bs2.put((byte)(lead>>8));
+                    bs2.put((byte)(trail&0xFF));
+                    bs2.put((byte)(trail>>8));
+                }else{
+
+                    if(c<0xFF){
+                        bs1.put((byte)0x00);
+                        bs1.put((byte)(c));
+                        bs2.put((byte)(c));
+                        bs2.put((byte)0x00);
+                    }else{
+                        bs1.put((byte)(c>>8));
+                        bs1.put((byte)(c&0xFF));
+                        
+                        bs2.put((byte)(c&0xFF));
+                        bs2.put((byte)(c>>8));
+                    }
+                    us.put((char)c);
+                }
+            }
+            
+            
+            us.limit(us.position());
+            us.position(0);
+            if(us.length()==0){
+                continue;
+            }
+            
+
+            bs1.limit(bs1.position());
+            bs1.position(0);
+            ByteBuffer newBS = ByteBuffer.allocate(bs1.capacity());
+            //newBS.put((byte)0xFE);
+            //newBS.put((byte)0xFF);
+            newBS.put(bs1);    
+            bs1.position(0);
+            smBufDecode(d1, "UTF-16", bs1, us);
+            smBufEncode(e1, "UTF-16", us, newBS);
+            
+            bs2.limit(bs2.position());
+            bs2.position(0);
+            newBS.clear();
+            //newBS.put((byte)0xFF);
+            //newBS.put((byte)0xFE);
+            newBS.put(bs2);     
+            bs2.position(0);
+            smBufDecode(d2, "UTF16-LE", bs2, us);
+            smBufEncode(e2, "UTF-16LE", us, newBS);
+            
+        }
+    }
+    public void TestUTF32Converter(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset cs1 = icu.charsetForName("UTF-32BE");
+        CharsetEncoder e1 = cs1.newEncoder();
+        CharsetDecoder d1 = cs1.newDecoder();
+        
+        Charset cs2 = icu.charsetForName("UTF-32LE");
+        CharsetEncoder e2 = cs2.newEncoder();
+        CharsetDecoder d2 = cs2.newDecoder();
+        
+        for(int i=0x000; i<0x10FFFF; i+=0xFF){
+            CharBuffer us = CharBuffer.allocate(0xFF*2);
+            ByteBuffer bs1 = ByteBuffer.allocate(0xFF*8);
+            ByteBuffer bs2 = ByteBuffer.allocate(0xFF*8);
+            for(int j=0;j<0xFF; j++){
+                int c = i+j;
+              
+                if((c>=0xd800&&c<=0xdFFF)||c>0x10FFFF){
+                    continue;
+                }
+
+                if(c>0xFFFF){
+                    char lead = UTF16.getLeadSurrogate(c);
+                    char trail = UTF16.getTrailSurrogate(c);
+
+                    us.put(lead);
+                    us.put(trail);
+                }else{
+                    us.put((char)c);
+                }
+                bs1.put((byte) (c >>> 24));
+                bs1.put((byte) (c >>> 16)); 
+                bs1.put((byte) (c >>> 8)); 
+                bs1.put((byte) (c & 0xFF));       
+                                
+                bs2.put((byte) (c & 0xFF));  
+                bs2.put((byte) (c >>> 8));
+                bs2.put((byte) (c >>> 16)); 
+                bs2.put((byte) (c >>> 24));
+            }
+            bs1.limit(bs1.position());
+            bs1.position(0);
+            bs2.limit(bs2.position());
+            bs2.position(0);
+            us.limit(us.position());
+            us.position(0);
+            if(us.length()==0){
+                continue;
+            }
+             
+
+            ByteBuffer newBS = ByteBuffer.allocate(bs1.capacity());
+            
+            newBS.put((byte)0x00);
+            newBS.put((byte)0x00);
+            newBS.put((byte)0xFE);
+            newBS.put((byte)0xFF);
+            
+            newBS.put(bs1);
+            bs1.position(0);
+            smBufDecode(d1, "UTF-32", bs1, us);
+            smBufEncode(e1, "UTF-32", us, newBS);
+            
+            
+            newBS.clear();
+            
+            newBS.put((byte)0xFF);
+            newBS.put((byte)0xFE);
+            newBS.put((byte)0x00);
+            newBS.put((byte)0x00);
+            
+            newBS.put(bs2);    
+            bs2.position(0);
+            smBufDecode(d2, "UTF-32LE", bs2, us);
+            smBufEncode(e2, "UTF-32LE", us, newBS);
+
+        }
+    }
+    public void TestASCIIConverter() {
+        runTestASCIIBasedConverter("ASCII", 0x80);
+    }    
+    public void Test88591Converter() {
+        runTestASCIIBasedConverter("iso-8859-1", 0x100);
+    }
+    public void runTestASCIIBasedConverter(String converter, int limit){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        CoderResult cr;
+
+        /* test with and without array-backed buffers */ 
+        
+        byte[] bytes = new byte[0x10000];
+        char[] chars = new char[0x10000];
+        for (int j = 0; j <= 0xffff; j++) {
+            bytes[j] = (byte) j;
+            chars[j] = (char) j;
+        }
+
+        boolean fail = false;
+        boolean arrays = false;
+        boolean decoding = false;
+        int i;
+        
+        // 0 thru limit - 1
+        ByteBuffer bs = ByteBuffer.wrap(bytes, 0, limit);
+        CharBuffer us = CharBuffer.wrap(chars, 0, limit);
+        smBufDecode(decoder, converter, bs, us, true);
+        smBufDecode(decoder, converter, bs, us, false);
+        smBufEncode(encoder, converter, us, bs, true);
+        smBufEncode(encoder, converter, us, bs, false);
+        for (i = 0; i < limit; i++) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                decoding = true;
+                arrays = true;
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                
+                decoding = true;
+                arrays = false;
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                
+                decoding = false;
+                arrays = true;
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                
+                decoding = false;
+                arrays = false;
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+                
+            } catch (Exception ex) {
+                errln("Failed to fail to " + (decoding ? "decode" : "encode") + " 0x"
+                        + Integer.toHexString(i) + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+                return;
+            }
+        }
+        
+        // decode limit thru 255
+        for (i = limit; i <= 0xff; i++) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                fail = true;
+                arrays = true;
+                break;
+            } catch (Exception ex) {
+            }
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                fail = true;
+                arrays = false;
+                break;
+            } catch (Exception ex) {
+            }
+        }
+        if (fail) {
+            errln("Failed to fail to decode 0x" + Integer.toHexString(i)
+                    + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+            return;
+        }
+        
+        // encode limit thru 0xffff, skipping through much of the 1ff to feff range to save
+        // time (it would take too much time to test every possible case)
+        for (i = limit; i <= 0xffff; i = ((i>=0x1ff && i<0xfeff) ? i+0xfd : i+1)) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                fail = true;
+                arrays = true;
+                break;
+            } catch (Exception ex) {
+            }
+            try {
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+                fail = true;
+                arrays = false;
+                break;
+            } catch (Exception ex) {
+            }
+        }
+        if (fail) {
+            errln("Failed to fail to encode 0x" + Integer.toHexString(i)
+                    + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+            return;
+        }
+        
+        // test overflow / underflow edge cases
+        outer: for (int n = 1; n <= 3; n++) {
+            for (int m = 0; m < n; m++) {
+                // expecting underflow
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true, m);
+                    smBufDecode(decoder, converter, bs, us, true, false, false, m);
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, true, m);
+                    smBufEncode(encoder, converter, us, bs, true, false, false, m);
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                } catch (Exception ex) {
+                    fail = true;
+                    break outer;
+                }
+                
+                // expecting overflow
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    fail = true;
+                    break;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+            }
+        }
+        if (fail) {
+            errln("Incorrect result in " + converter + " for underflow / overflow edge cases");
+            return;
+        }
+        
+        // test surrogate combinations in encoding
+        String lead = "\ud888";
+        String trail = "\udc88";
+        String norm = "a";
+        String ext = "\u0275"; // theta
+        String end = "";
+        bs = ByteBuffer.wrap(new byte[] { 0 });
+        String[] input = new String[] { //
+                lead + lead,   // malf(1)
+                lead + trail,  // unmap(2)
+                lead + norm,   // malf(1)
+                lead + ext,    // malf(1)
+                lead + end,    // malf(1)
+                trail + norm,  // malf(1)
+                trail + end,   // malf(1)
+                ext   + norm,  // unmap(1)
+                ext   + end,   // unmap(1)
+        };
+        CoderResult[] result = new CoderResult[] {
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(2),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(1),
+                CoderResult.unmappableForLength(1),
+        };
+        
+        for (int index = 0; index < input.length; index++) {
+            CharBuffer source = CharBuffer.wrap(input[index]);
+            cr = encoder.encode(source, bs, true);
+            bs.rewind();
+            encoder.reset();
+
+            // if cr != results[x]
+            if (!((cr.isUnderflow() && result[index].isUnderflow())
+                    || (cr.isOverflow() && result[index].isOverflow())
+                    || (cr.isMalformed() && result[index].isMalformed())
+                    || (cr.isUnmappable() && result[index].isUnmappable()))
+                    || (cr.isError() && cr.length() != result[index].length())) {
+                errln("Incorrect result in " + converter + " for \"" + input[index] + "\"" + ", expected: " + result[index] + ", received:  " + cr);
+                break;
+            }
+
+            source = CharBuffer.wrap(input[index].toCharArray());
+            cr = encoder.encode(source, bs, true);
+            bs.rewind();
+            encoder.reset();
+
+            // if cr != results[x]
+            if (!((cr.isUnderflow() && result[index].isUnderflow())
+                    || (cr.isOverflow() && result[index].isOverflow())
+                    || (cr.isMalformed() && result[index].isMalformed())
+                    || (cr.isUnmappable() && result[index].isUnmappable()))
+                    || (cr.isError() && cr.length() != result[index].length())) {
+                errln("Incorrect result in " + converter + " for \"" + input[index] + "\"" + ", expected: " + result[index] + ", received:  " + cr);
+                break;
+            }
+        }
+    }
+    public void TestUTF8Converter() {
+        String converter = "UTF-8";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        ByteBuffer bs;
+        CharBuffer us;
+        CoderResult cr;
+
+        
+        int[] size = new int[] { 1<<7, 1<<11, 1<<16 }; // # of 1,2,3 byte combinations
+        byte[] bytes = new byte[size[0] + size[1]*2 + size[2]*3];
+        char[] chars = new char[size[0] + size[1] + size[2]];
+        int i = 0;
+        int x, y;
+        
+        // 0 to 1 << 7 (1 byters)
+        for (; i < size[0]; i++) {
+            bytes[i] = (byte) i;
+            chars[i] = (char) i;
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+            } catch (Exception ex) {
+                errln("Incorrect result in " + converter + " for 0x"
+                        + Integer.toHexString(i));
+                break;
+            }
+        }
+
+        // 1 << 7 to 1 << 11 (2 byters)
+        for (; i < size[1]; i++) {
+            x = size[0] + i*2;
+            y = size[0] + i;
+            bytes[x + 0] = (byte) (0xc0 | ((i >> 6) & 0x1f));
+            bytes[x + 1] = (byte) (0x80 | ((i >> 0) & 0x3f));
+            chars[y] = (char) i;
+            bs = ByteBuffer.wrap(bytes, x, 2).slice();
+            us = CharBuffer.wrap(chars, y, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+            } catch (Exception ex) {
+                errln("Incorrect result in " + converter + " for 0x"
+                        + Integer.toHexString(i));
+                break;
+            }
+        }
+
+        // 1 << 11 to 1 << 16 (3 byters and surrogates)
+        for (; i < size[2]; i++) {
+            x = size[0] + size[1] * 2 + i * 3;
+            y = size[0] + size[1] + i;
+            bytes[x + 0] = (byte) (0xe0 | ((i >> 12) & 0x0f));
+            bytes[x + 1] = (byte) (0x80 | ((i >> 6) & 0x3f));
+            bytes[x + 2] = (byte) (0x80 | ((i >> 0) & 0x3f));
+            chars[y] = (char) i;
+            if (!UTF16.isSurrogate((char)i)) {
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(chars, y, 1).slice();
+                try {
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                } catch (Exception ex) {
+                    errln("Incorrect result in " + converter + " for 0x"
+                            + Integer.toHexString(i));
+                    break;
+                }
+            } else {
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(chars, y, 1).slice();
+                
+                decoder.reset();
+                cr = decoder.decode(bs, us, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 3) {
+                    errln("Incorrect result in " + converter + " decoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                encoder.reset();
+                cr = encoder.encode(us, bs, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 1) {
+                    errln("Incorrect result in " + converter + " encoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(new String(chars, y, 1));
+                
+                decoder.reset();
+                cr = decoder.decode(bs, us, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 3) {
+                    errln("Incorrect result in " + converter + " decoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                encoder.reset();
+                cr = encoder.encode(us, bs, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 1) {
+                    errln("Incorrect result in " + converter + " encoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                
+                
+            }
+        }
+        if (true)
+            return;
+    }
+    
+    public void TestHZ() {
+        /* test input */
+        char[] in = new char[] {
+                0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014,
+                0xFF5E, 0x2016, 0x2026, 0x007E, 0x997C, 0x70B3, 0x75C5, 0x5E76, 0x73BB, 0x83E0,
+                0x64AD, 0x62E8, 0x94B5, 0x000A, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94,
+                0x4F2F, 0x5E1B, 0x8236, 0x000A, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355,
+                0x535C, 0x54FA, 0x8865, 0x000A, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8,
+                0x6016, 0x248F, 0x2490, 0x000A, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496,
+                0x2497, 0x2498, 0x2499, 0x000A, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477,
+                0x2478, 0x2479, 0x247A, 0x000A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480,
+                0x2481, 0x2482, 0x2483, 0x000A, 0x0041, 0x0043, 0x0044, 0x0045, 0x0046, 0x007E,
+                0x0048, 0x0049, 0x004A, 0x000A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+                0x0051, 0x0052, 0x0053, 0x000A, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+                0x005A, 0x005B, 0x005C, 0x000A
+          };
+        
+        String converter = "HZ";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        try {
+            CharBuffer start = CharBuffer.wrap(in);
+            ByteBuffer bytes = encoder.encode(start);
+            CharBuffer finish = decoder.decode(bytes);
+            
+            if (!equals(start, finish)) {
+                errln(converter + " roundtrip test failed: start does not match finish");
+                
+                char[] finishArray = new char[finish.limit()];
+                for (int i=0; i<finishArray.length; i++)
+                    finishArray[i] = finish.get(i);
+                
+                logln("start:  " + hex(in));
+                logln("finish: " + hex(finishArray));
+            }
+        } catch (CharacterCodingException ex) {
+            errln(converter + " roundtrip test failed: " + ex.getMessage());
+            ex.printStackTrace(System.err);
+        }
+        
+        /* For better code coverage */
+        CoderResult result = CoderResult.UNDERFLOW;
+        byte byteout[] = {
+                (byte)0x7e, (byte)0x7d, (byte)0x41,
+                (byte)0x7e, (byte)0x7b, (byte)0x21,
+        };
+        char charin[] = {
+                (char)0x0041, (char)0x0042, (char)0x3000
+        };
+        ByteBuffer bb = ByteBuffer.wrap(byteout);
+        CharBuffer cb = CharBuffer.wrap(charin);
+        int testLoopSize = 5;
+        int bbLimits[] = { 0, 1, 3, 4, 6};
+        int bbPositions[] = { 0, 0, 0, 3, 3 };
+        int ccPositions[] = { 0, 0, 0, 2, 2 };
+        for (int i = 0; i < testLoopSize; i++) {
+            encoder.reset();
+            bb.limit(bbLimits[i]);
+            bb.position(bbPositions[i]);
+            cb.position(ccPositions[i]);
+            result = encoder.encode(cb, bb, true);
+            
+            if (i < 3) {
+                if (!result.isOverflow()) {
+                    errln("Overflow buffer error should have occurred while encoding HZ (" + i + ")");
+                }
+            } else {
+                if (result.isError()) {
+                    errln("Error should not have occurred while encoding HZ.(" + i + ")");
+                }
+            }
+        }
+    }
+
+    public void TestUTF8Surrogates() {
+        byte[][] in = new byte[][] {
+            { (byte)0x61, },
+            { (byte)0xc2, (byte)0x80, },
+            { (byte)0xe0, (byte)0xa0, (byte)0x80, },
+            { (byte)0xf0, (byte)0x90, (byte)0x80, (byte)0x80, },
+            { (byte)0xf4, (byte)0x84, (byte)0x8c, (byte)0xa1, },
+            { (byte)0xf0, (byte)0x90, (byte)0x90, (byte)0x81, },
+        };
+
+        /* expected test results */
+        char[][] results = new char[][] {
+            /* number of bytes read, code point */
+            { '\u0061', },
+            { '\u0080', },
+            { '\u0800', },
+            { '\ud800', '\udc00', },      //  10000
+            { '\udbd0', '\udf21', },      // 104321
+            { '\ud801', '\udc01', },      //  10401
+        };
+
+        /* error test input */
+        byte[][] in2 = new byte[][] {
+            { (byte)0x61, },
+            { (byte)0xc0, (byte)0x80,                                     /* illegal non-shortest form */
+            (byte)0xe0, (byte)0x80, (byte)0x80,                           /* illegal non-shortest form */
+            (byte)0xf0, (byte)0x80, (byte)0x80, (byte)0x80,               /* illegal non-shortest form */
+            (byte)0xc0, (byte)0xc0,                                       /* illegal trail byte */
+            (byte)0xf4, (byte)0x90, (byte)0x80, (byte)0x80,               /* 0x110000 out of range */
+            (byte)0xf8, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80,   /* too long */
+            (byte)0xfe,                                                   /* illegal byte altogether */
+            (byte)0x62, },
+        };
+
+        /* expected error test results */
+        char[][] results2 = new char[][] {
+            /* number of bytes read, code point */
+            { '\u0062', },
+            { '\u0062', },
+        };
+        
+        String converter = "UTF-8";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetDecoder decoder = icuChar.newDecoder();
+        
+        int i;
+        try {
+            for (i = 0; i < in.length; i++) {
+                ByteBuffer source = ByteBuffer.wrap(in[i]);
+                CharBuffer expected = CharBuffer.wrap(results[i]);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        true);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        false);
+            }
+        } catch (Exception ex) {
+            errln("Incorrect result in " + converter);
+        }
+        try {
+            for (i = 0; i < in2.length; i++) {
+                ByteBuffer source = ByteBuffer.wrap(in2[i]);
+                CharBuffer expected = CharBuffer.wrap(results2[i]);
+                decoder.onMalformedInput(CodingErrorAction.IGNORE);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        true);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        false);
+            }
+        } catch (Exception ex) {
+            errln("Incorrect result in " + converter);
+        }
+    }
+    
+    public void TestSurrogateBehavior() {
+        CharsetProviderICU icu = new CharsetProviderICU();
+        
+        // get all the converters into an array
+        Object[] converters = CharsetProviderICU.getAvailableNames();
+        
+        String norm = "a";
+        String ext = "\u0275"; // theta
+        String lead = "\ud835";
+        String trail = "\udd04";
+        // lead + trail = \U1d504 (fraktur capital A)
+        
+        String input = 
+                        // error    position
+                ext     // unmap(1) 1
+                + lead  // under    1  
+                + lead  // malf(1)  2
+                + trail // unmap(2) 4
+                + trail // malf(1)  5
+                + ext   // unmap(1) 6
+                + norm  // unmap(1) 7
+        ;
+        CoderResult[] results = new CoderResult[] {
+                CoderResult.unmappableForLength(1), // or underflow
+                CoderResult.UNDERFLOW,
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(2), // or underflow
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(1), // or underflow
+                CoderResult.unmappableForLength(1), // or underflow
+        };
+        int[] positions = new int[] { 1,1,2,4,5,6,7 };
+        int n = positions.length;
+        
+        int badcount = 0;
+        int goodcount = 0;
+        int[] uhohindices = new int[n];
+        int[] badposindices = new int[n];
+        int[] malfindices = new int[n];
+        int[] unmapindices = new int[n];
+        ArrayList pass = new ArrayList();
+        ArrayList exempt = new ArrayList();
+        
+        outer: for (int conv=0; conv<converters.length; conv++) {
+            String converter = (String)converters[conv];
+            if (converter.equals("x-IMAP-mailbox-name") || converter.equals("UTF-7") || converter.equals("CESU-8") || converter.equals("BOCU-1") ||
+                    converter.equals("x-LMBCS-1")) {
+                exempt.add(converter);
+                continue;
+            }
+            
+            boolean currentlybad = false;
+            Charset icuChar = icu.charsetForName(converter);
+            CharsetEncoder encoder = icuChar.newEncoder();
+            CoderResult cr;
+                
+            CharBuffer source = CharBuffer.wrap(input);
+            ByteBuffer target = ByteBuffer.allocate(30);
+            ByteBuffer expected = null;
+            try {
+                encoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
+                encoder.onMalformedInput(CodingErrorAction.IGNORE);
+                expected = encoder.encode(CharBuffer.wrap(ext + lead + trail + ext + norm));
+                encoder.reset();
+            } catch (CharacterCodingException ex) {
+                errln("Unexpected CharacterCodingException: " + ex.getMessage());
+                return;
+            } catch (RuntimeException ex) {
+                if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                errln(converter + " " + ex.getClass().getName() + ": " + ex.getMessage());
+                continue outer;
+            }
+            
+            encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+            encoder.onMalformedInput(CodingErrorAction.REPORT);
+            for (int i=0; i<n; i++) {
+                source.limit(i+1);
+                cr = encoder.encode(source, target, i == n - 1);
+                if (!(equals(cr, results[i])
+                        || (results[i].isUnmappable() && cr.isUnderflow()) // mappability depends on the converter
+                    )) {
+                    if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                    if (results[i].isMalformed() && cr.isMalformed()) {
+                        malfindices[i]++;
+                    } else if (results[i].isUnmappable() && cr.isUnmappable()) {
+                        unmapindices[i]++;
+                    } else {
+                        uhohindices[i]++;
+                    }
+                    errln("(index=" + i + ") " + converter + " Received: " + cr + " Expected: " + results[i]);
+                }
+                if (source.position() != positions[i]) {
+                    if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                    badposindices[i]++;
+                    errln("(index=" + i + ") " + converter + " Received: " + source.position() + " Expected: " + positions[i]);
+                }
+                    
+            }
+            encoder.reset();
+            
+            //System.out.println("\n" + hex(target.array()));
+            //System.out.println(hex(expected.array()) + "\n" + expected.limit());
+            if (!(equals(target, expected, expected.limit()) && target.position() == expected.limit())) {
+                if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                errln(converter + " Received: \"" + hex(target.array()) + "\" Expected: \"" + hex(expected.array()) + "\"");
+            }
+            
+            if (!currentlybad) {
+                goodcount++;
+                pass.add(converter);
+            }
+        }
+        
+        logln("\n" + badcount + " / " + (converters.length - exempt.size()) + "   (" + goodcount + " good, " + badcount + " bad)");
+        log("index\t"); for (int i=0; i<n; i++) log(i + "\t"); logln("");
+        log("unmap\t"); for (int i=0; i<n; i++) log(unmapindices[i] + "\t"); logln("");
+        log("malf \t"); for (int i=0; i<n; i++) log(malfindices[i] + "\t"); logln("");
+        log("pos  \t"); for (int i=0; i<n; i++) log(badposindices[i] + "\t"); logln("");
+        log("uhoh \t"); for (int i=0; i<n; i++) log(uhohindices[i] + "\t"); logln("");
+        logln("");
+        log("The few that passed: "); for (int i=0; i<pass.size(); i++) log(pass.get(i) + ", "); logln(""); 
+        log("The few that are exempt: "); for (int i=0; i<exempt.size(); i++) log(exempt.get(i) + ", "); logln(""); 
+    }
+    
+//    public void TestCharsetCallback() {
+//        String currentTest = "initialization";
+//        try {
+//            Class[] params;
+//            
+//            // get the classes
+//            Class CharsetCallback = Class.forName("com.ibm.icu.charset.CharsetCallback");
+//            Class Decoder = Class.forName("com.ibm.icu.charset.CharsetCallback$Decoder");
+//            Class Encoder = Class.forName("com.ibm.icu.charset.CharsetCallback$Encoder");
+//            
+//            // set up encoderCall
+//            params = new Class[] {CharsetEncoderICU.class, Object.class, 
+//                    CharBuffer.class, ByteBuffer.class, IntBuffer.class, 
+//                    char[].class, int.class, int.class, CoderResult.class };
+//            Method encoderCall = Encoder.getDeclaredMethod("call", params);
+//            
+//            // set up decoderCall
+//            params = new Class[] {CharsetDecoderICU.class, Object.class, 
+//                    ByteBuffer.class, CharBuffer.class, IntBuffer.class,
+//                    char[].class, int.class, CoderResult.class};
+//            Method decoderCall = Decoder.getDeclaredMethod("call", params);
+//            
+//            // get relevant fields
+//            Object SUB_STOP_ON_ILLEGAL = getFieldValue(CharsetCallback, "SUB_STOP_ON_ILLEGAL", null);
+//            
+//            // set up a few arguments
+//            CharsetProvider provider = new CharsetProviderICU();
+//            Charset charset = provider.charsetForName("UTF-8");
+//            CharsetEncoderICU encoder = (CharsetEncoderICU)charset.newEncoder();
+//            CharsetDecoderICU decoder = (CharsetDecoderICU)charset.newDecoder();
+//            CharBuffer chars = CharBuffer.allocate(10);
+//            chars.put('o');
+//            chars.put('k');
+//            ByteBuffer bytes = ByteBuffer.allocate(10);
+//            bytes.put((byte)'o');
+//            bytes.put((byte)'k');
+//            IntBuffer offsets = IntBuffer.allocate(10);
+//            offsets.put(0);
+//            offsets.put(1);
+//            char[] buffer = null;
+//            Integer length = new Integer(2);
+//            Integer cp = new Integer(0);
+//            CoderResult unmap = CoderResult.unmappableForLength(2);
+//            CoderResult malf = CoderResult.malformedForLength(2);
+//            CoderResult under = CoderResult.UNDERFLOW;
+//            
+//            // set up error arrays
+//            Integer invalidCharLength = new Integer(1);
+//            Byte subChar1 = new Byte((byte)0);
+//            Byte subChar1_alternate = new Byte((byte)1); // for TO_U_CALLBACK_SUBSTITUTE
+//            
+//            // set up chars and bytes backups and expected values for certain cases
+//            CharBuffer charsBackup = bufferCopy(chars);
+//            ByteBuffer bytesBackup = bufferCopy(bytes);
+//            IntBuffer offsetsBackup = bufferCopy(offsets);
+//            CharBuffer encoderCharsExpected = bufferCopy(chars);
+//            ByteBuffer encoderBytesExpected = bufferCopy(bytes);
+//            IntBuffer encoderOffsetsExpected = bufferCopy(offsets);
+//            CharBuffer decoderCharsExpected1 = bufferCopy(chars);
+//            CharBuffer decoderCharsExpected2 = bufferCopy(chars);
+//            IntBuffer decoderOffsetsExpected1 = bufferCopy(offsets);
+//            IntBuffer decoderOffsetsExpected2 = bufferCopy(offsets);
+//            
+//            // initialize fields to obtain expected data
+//            setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, invalidCharLength);
+//            setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), subChar1);
+//            
+//            // run cbFromUWriteSub
+//            Method cbFromUWriteSub = CharsetEncoderICU.class.getDeclaredMethod("cbFromUWriteSub", new Class[] { CharsetEncoderICU.class, CharBuffer.class, ByteBuffer.class, IntBuffer.class});
+//            cbFromUWriteSub.setAccessible(true);
+//            CoderResult encoderResultExpected = (CoderResult)cbFromUWriteSub.invoke(encoder, new Object[] {encoder, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected});
+//            
+//            // run toUWriteUChars with normal data
+//            Method toUWriteUChars = CharsetDecoderICU.class.getDeclaredMethod("toUWriteUChars", new Class[] { CharsetDecoderICU.class, char[].class, int.class, int.class, CharBuffer.class, IntBuffer.class, int.class});
+//            toUWriteUChars.setAccessible(true);
+//            CoderResult decoderResultExpected1 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0xFFFD}, new Integer(0), new Integer(1), decoderCharsExpected1, decoderOffsetsExpected1, new Integer(bytes.position())});
+//            
+//            // reset certain fields
+//            setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, invalidCharLength);
+//            setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), subChar1_alternate);
+//            
+//            // run toUWriteUChars again
+//            CoderResult decoderResultExpected2 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0x1A}, new Integer(0), new Integer(1), decoderCharsExpected2, decoderOffsetsExpected2, new Integer(bytes.position())});
+//            
+//            // begin creating the tests array
+//            ArrayList tests = new ArrayList();
+//            
+//            // create tests for FROM_U_CALLBACK_SKIP   0
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_SKIP    4
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, unmap }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL + "xx", bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            
+//            // create tests for FROM_U_CALLBACK_STOP   8
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, unmap, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_STOP   12
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, unmap }, unmap, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL + "xx", bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            
+//            // create tests for FROM_U_CALLBACK_SUBSTITUTE  16
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, encoderResultExpected, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, encoderResultExpected, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_SUBSTITUTE   20
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SUBSTITUTE", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, decoderResultExpected1, decoderCharsExpected1, bytesBackup, decoderOffsetsExpected1, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SUBSTITUTE", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, decoderResultExpected2, decoderCharsExpected2, bytesBackup, decoderOffsetsExpected2, new Object[] { invalidCharLength, subChar1_alternate }});
+//            
+//            Iterator iter = tests.iterator();
+//            for (int i=0; iter.hasNext(); i++) {
+//                // get the data out of the map
+//                Object[] next = (Object[])iter.next();
+//                
+//                Method method = (Method)next[0];
+//                String fieldName = (String)next[1];
+//                Object field = getFieldValue(CharsetCallback, fieldName, null);
+//                Object[] args = (Object[])next[2];
+//                CoderResult expected = (CoderResult)next[3];
+//                CharBuffer charsExpected = (CharBuffer)next[4];
+//                ByteBuffer bytesExpected = (ByteBuffer)next[5];
+//                IntBuffer offsetsExpected = (IntBuffer)next[6];
+//                
+//                // set up error arrays and certain fields
+//                Object[] values = (Object[])next[7];
+//                if (method == decoderCall) {
+//                    decoder.reset();
+//                    setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, values[0]);
+//                    setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), values[1]);
+//                } else if (method == encoderCall) {
+//                    encoder.reset();
+//                }
+//                
+//                try {
+//                    // invoke the method
+//                    CoderResult actual = (CoderResult)method.invoke(field, args);
+//                    
+//                    // if expected != actual
+//                    if (!coderResultsEqual(expected, actual)) {
+//                        // case #i refers to the index in the arraylist tests
+//                        errln(fieldName + " failed to return the correct result for case #" + i + ".");
+//                    }
+//                    // if the expected buffers != actual buffers
+//                    else if (!(buffersEqual(chars, charsExpected) && 
+//                            buffersEqual(bytes, bytesExpected) &&
+//                            buffersEqual(offsets, offsetsExpected))) {
+//                        // case #i refers to the index in the arraylist tests
+//                        errln(fieldName + " did not perform the correct operation on the buffers for case #" + i + ".");
+//                    }
+//                } catch (InvocationTargetException ex)  {
+//                    // case #i refers to the index in the arraylist tests
+//                    errln(fieldName + " threw an exception for case #" + i + ": " + ex.getCause());
+//                    //ex.getCause().printStackTrace();
+//                }
+//                
+//                // reset the buffers
+//                System.arraycopy(bytesBackup.array(), 0, bytes.array(), 0, 10);
+//                System.arraycopy(charsBackup.array(), 0, chars.array(), 0, 10);
+//                System.arraycopy(offsetsBackup.array(), 0, offsets.array(), 0, 10);
+//                bytes.position(bytesBackup.position());
+//                chars.position(charsBackup.position());
+//                offsets.position(offsetsBackup.position());
+//            }
+//            
+//        } catch (Exception ex) {
+//            errln("TestCharsetCallback skipped due to " + ex.toString());
+//            ex.printStackTrace();
+//        }
+//    }
+//    
+//    private Object getFieldValue(Class c, String name, Object instance) throws Exception {
+//        Field field = c.getDeclaredField(name);
+//        field.setAccessible(true);
+//        return field.get(instance);
+//    }
+//    private void setFieldValue(Class c, String name, Object instance, Object value) throws Exception {
+//        Field field = c.getDeclaredField(name);
+//        field.setAccessible(true);
+//        if (value instanceof Boolean)
+//            field.setBoolean(instance, ((Boolean)value).booleanValue());
+//        else if (value instanceof Byte)
+//            field.setByte(instance, ((Byte)value).byteValue());
+//        else if (value instanceof Character)
+//            field.setChar(instance, ((Character)value).charValue());
+//        else if (value instanceof Double)
+//            field.setDouble(instance, ((Double)value).doubleValue());
+//        else if (value instanceof Float)
+//            field.setFloat(instance, ((Float)value).floatValue());
+//        else if (value instanceof Integer)
+//            field.setInt(instance, ((Integer)value).intValue());
+//        else if (value instanceof Long)
+//            field.setLong(instance, ((Long)value).longValue());
+//        else if (value instanceof Short)
+//            field.setShort(instance, ((Short)value).shortValue());
+//        else
+//            field.set(instance, value);
+//    }
+//    private boolean coderResultsEqual(CoderResult a, CoderResult b) {
+//        if (a == null && b == null)
+//            return true;
+//        if (a == null || b == null)
+//            return false;
+//        if ((a.isUnderflow() && b.isUnderflow()) || (a.isOverflow() && b.isOverflow()))
+//            return true;
+//        if (a.length() != b.length())
+//            return false;
+//        if ((a.isMalformed() && b.isMalformed()) || (a.isUnmappable() && b.isUnmappable()))
+//            return true;
+//        return false;
+//    }
+//    private boolean buffersEqual(ByteBuffer a, ByteBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private boolean buffersEqual(CharBuffer a, CharBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private boolean buffersEqual(IntBuffer a, IntBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private ByteBuffer bufferCopy(ByteBuffer src) {
+//        ByteBuffer dest = ByteBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+//    private CharBuffer bufferCopy(CharBuffer src) {
+//        CharBuffer dest = CharBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+//    private IntBuffer bufferCopy(IntBuffer src) {
+//        IntBuffer dest = IntBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+    
+
+    public void TestAPISemantics(/*String encoding*/) 
+                throws Exception {
+        int rc;
+        ByteBuffer byes = ByteBuffer.wrap(byteStr);
+        CharBuffer uniVal = CharBuffer.wrap(unistr);
+        ByteBuffer expected = ByteBuffer.wrap(expectedByteStr);
+        
+        rc = 0;
+        if(m_decoder==null){
+            warnln("Could not load decoder.");
+            return;
+        }
+        m_decoder.reset();
+        /* Convert the whole buffer to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            CoderResult result = m_decoder.decode(byes, chars, false);
+
+            if (result.isError()) {
+                errln("ToChars encountered Error");
+                rc = 1;
+            }
+            if (result.isOverflow()) {
+                errln("ToChars encountered overflow exception");
+                rc = 1;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars does not match");
+                printchars(chars);
+                errln("Expected : ");
+                printchars(unistr);
+                rc = 2;
+            }
+
+        } catch (Exception e) {
+            errln("ToChars - exception in buffer");
+            rc = 5;
+        }
+
+        /* Convert single bytes to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            ByteBuffer b = ByteBuffer.wrap(byteStr);
+            m_decoder.reset();
+            CoderResult result=null;
+            for (int i = 1; i <= byteStr.length; i++) {
+                b.limit(i);
+                result = m_decoder.decode(b, chars, false);
+                if(result.isOverflow()){
+                    errln("ToChars single threw an overflow exception");
+                }
+                if (result.isError()) {
+                    errln("ToChars single the result is an error "+result.toString());
+                } 
+            }
+            if (unistr.length() != (chars.limit())) {
+                errln("ToChars single len does not match");
+                rc = 3;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars single does not match");
+                printchars(chars);
+                rc = 4;
+            }
+        } catch (Exception e) {
+            errln("ToChars - exception in single");
+            //e.printStackTrace();
+            rc = 6;
+        }
+
+        /* Convert the buffer one at a time to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            m_decoder.reset();
+            byes.rewind();
+            for (int i = 1; i <= byteStr.length; i++) {
+                byes.limit(i);
+                CoderResult result = m_decoder.decode(byes, chars, false);
+                if (result.isError()) {
+                    errln("Error while decoding: "+result.toString());
+                }
+                if(result.isOverflow()){
+                    errln("ToChars Simple threw an overflow exception");
+                }
+            }
+            if (chars.limit() != unistr.length()) {
+                errln("ToChars Simple buffer len does not match");
+                rc = 7;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars Simple buffer does not match");
+                printchars(chars);
+                err(" Expected : ");
+                printchars(unistr);
+                rc = 8;
+            }
+        } catch (Exception e) {
+            errln("ToChars - exception in single buffer");
+            //e.printStackTrace(System.err);
+            rc = 9;
+        }
+        if (rc != 0) {
+            errln("Test Simple ToChars for encoding : FAILED");
+        }
+
+        rc = 0;
+        /* Convert the whole buffer from unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            m_encoder.reset();
+            CoderResult result = m_encoder.encode(uniVal, bytes, false);
+            if (result.isError()) {
+                errln("FromChars reported error: " + result.toString());
+                rc = 1;
+            }
+            if(result.isOverflow()){
+                errln("FromChars threw an overflow exception");
+            }
+            bytes.position(0);
+            if (!bytes.equals(expected)) {
+                errln("FromChars does not match");
+                printbytes(bytes);
+                printbytes(expected);
+                rc = 2;
+            }
+        } catch (Exception e) {
+            errln("FromChars - exception in buffer");
+            //e.printStackTrace(System.err);
+            rc = 5;
+        }
+
+        /* Convert the buffer one char at a time to unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            CharBuffer c = CharBuffer.wrap(unistr);
+            m_encoder.reset();
+            CoderResult result= null;
+            for (int i = 1; i <= unistr.length(); i++) {
+                c.limit(i);
+                result = m_encoder.encode(c, bytes, false);
+                if(result.isOverflow()){
+                    errln("FromChars single threw an overflow exception");
+                }
+                if(result.isError()){
+                    errln("FromChars single threw an error: "+ result.toString());
+                }
+            }
+            if (expectedByteStr.length != bytes.limit()) {
+                errln("FromChars single len does not match");
+                rc = 3;
+            }
+
+            bytes.position(0);
+            if (!bytes.equals(expected)) {
+                errln("FromChars single does not match");
+                printbytes(bytes);
+                printbytes(expected);
+                rc = 4;
+            }
+
+        } catch (Exception e) {
+            errln("FromChars - exception in single");
+            //e.printStackTrace(System.err);
+            rc = 6;
+        }
+
+        /* Convert one char at a time to unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            m_encoder.reset();
+            char[] temp = unistr.toCharArray();
+            CoderResult result=null;
+            for (int i = 0; i <= temp.length; i++) {
+                uniVal.limit(i);
+                result = m_encoder.encode(uniVal, bytes, false);
+                if(result.isOverflow()){
+                    errln("FromChars simple threw an overflow exception");
+                }
+                if(result.isError()){
+                    errln("FromChars simple threw an error: "+ result.toString());
+                }
+            }
+            if (bytes.limit() != expectedByteStr.length) {
+                errln("FromChars Simple len does not match");
+                rc = 7;
+            }
+            if (!bytes.equals(byes)) {
+                errln("FromChars Simple does not match");
+                printbytes(bytes);
+                printbytes(byes);
+                rc = 8;
+            }
+        } catch (Exception e) {
+            errln("FromChars - exception in single buffer");
+            //e.printStackTrace(System.err);
+            rc = 9;
+        }
+        if (rc != 0) {
+            errln("Test Simple FromChars " + m_encoding + " --FAILED");
+        }
+    }
+
+    void printchars(CharBuffer buf) {
+        int i;
+        char[] chars = new char[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        for (i = 0; i < chars.length; i++) {
+            err(hex(chars[i]) + " ");
+        }
+        errln("");
+    }
+    void printchars(String str) {
+        char[] chars = str.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            err(hex(chars[i]) + " ");
+        }
+        errln("");
+    }
+    void printbytes(ByteBuffer buf) {
+        int i;
+        byte[] bytes = new byte[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(bytes);
+        //reset to old position
+        buf.position(pos);
+        for (i = 0; i < bytes.length; i++) {
+            System.out.print(hex(bytes[i]) + " ");
+        }
+        errln("");
+    }
+
+    public boolean equals(CoderResult a, CoderResult b) {
+        return (a.isUnderflow() && b.isUnderflow())
+                || (a.isOverflow() && b.isOverflow())
+                || (a.isMalformed() && b.isMalformed() && a.length() == b.length())
+                || (a.isUnmappable() && b.isUnmappable() && a.length() == b.length());
+    }
+    public boolean equals(CharBuffer buf, String str) {
+        return equals(buf, str.toCharArray());
+    }
+    public boolean equals(CharBuffer buf, CharBuffer str) {
+        if (buf.limit() != str.limit())
+            return false;
+        int limit = buf.limit();
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != str.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(CharBuffer buf, CharBuffer str, int limit) {
+        if (limit > buf.limit() || limit > str.limit())
+            return false;
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != str.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(CharBuffer buf, char[] compareTo) {
+        char[] chars = new char[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        return equals(chars, compareTo);
+    }
+
+    public boolean equals(char[] chars, char[] compareTo) {
+        if (chars.length != compareTo.length) {
+            errln(
+                "Length does not match chars: "
+                    + chars.length
+                    + " compareTo: "
+                    + compareTo.length);
+            return false;
+        } else {
+            boolean result = true;
+            for (int i = 0; i < chars.length; i++) {
+                if (chars[i] != compareTo[i]) {    
+                    logln(
+                        "Got: "
+                            + hex(chars[i])
+                            + " Expected: "
+                            + hex(compareTo[i])
+                            + " At: "
+                            + i);
+                    result = false;
+                }
+            }
+            return result;
+        }
+    }
+
+    public boolean equals(ByteBuffer buf, byte[] compareTo) {
+        byte[] chars = new byte[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        return equals(chars, compareTo);
+    }
+    public boolean equals(ByteBuffer buf, ByteBuffer compareTo) {
+        if (buf.limit() != compareTo.limit())
+            return false;
+        int limit = buf.limit();
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != compareTo.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(ByteBuffer buf, ByteBuffer compareTo, int limit) {
+        if (limit > buf.limit() || limit > compareTo.limit())
+            return false;
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != compareTo.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(byte[] chars, byte[] compareTo) {
+        if (false/*chars.length != compareTo.length*/) {
+            errln(
+                "Length does not match chars: "
+                    + chars.length
+                    + " compareTo: "
+                    + compareTo.length);
+            return false;
+        } else {
+            boolean result = true;
+            for (int i = 0; i < chars.length; i++) {
+                if (chars[i] != compareTo[i]) {
+                    logln(
+                        "Got: "
+                            + hex(chars[i])
+                            + " Expected: "
+                            + hex(compareTo[i])
+                            + " At: "
+                            + i);
+                    result = false;
+                }
+            }
+            return result;
+        }
+    }
+
+//  TODO
+  /*
+    public void TestCallback(String encoding) throws Exception {
+        
+        byte[] gbSource =
+            {
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x36,
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x37,
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x38,
+                (byte) 0xe3,
+                (byte) 0x32,
+                (byte) 0x9a,
+                (byte) 0x36 };
+
+        char[] subChars = { 'P', 'I' };
+
+        decoder.reset();
+
+        decoder.replaceWith(new String(subChars));
+        ByteBuffer mySource = ByteBuffer.wrap(gbSource);
+        CharBuffer myTarget = CharBuffer.allocate(5);
+
+        decoder.decode(mySource, myTarget, true);
+        char[] expectedResult =
+            { '\u22A6', '\u22A7', '\u22A8', '\u0050', '\u0049', };
+
+        if (!equals(myTarget, new String(expectedResult))) {
+            errln("Test callback GB18030 to Unicode : FAILED");
+        }
+        
+    }
+*/
+    public void TestCanConvert(/*String encoding*/)throws Exception {
+        char[] mySource = { 
+            '\ud800', '\udc00',/*surrogate pair */
+            '\u22A6','\u22A7','\u22A8','\u22A9','\u22AA',
+            '\u22AB','\u22AC','\u22AD','\u22AE','\u22AF',
+            '\u22B0','\u22B1','\u22B2','\u22B3','\u22B4',
+            '\ud800','\udc00',/*surrogate pair */
+            '\u22B5','\u22B6','\u22B7','\u22B8','\u22B9',
+            '\u22BA','\u22BB','\u22BC','\u22BD','\u22BE' 
+            };
+        if(m_encoder==null){
+            warnln("Could not load encoder.");
+            return;
+        }
+        m_encoder.reset();
+        if (!m_encoder.canEncode(new String(mySource))) {
+            errln("Test canConvert() " + m_encoding + " failed. "+m_encoder);
+        }
+
+    }
+    public void TestAvailableCharsets() {
+        SortedMap map = Charset.availableCharsets();
+        Set keySet = map.keySet();
+        Iterator iter = keySet.iterator();
+        while(iter.hasNext()){
+            logln("Charset name: "+iter.next().toString());
+        }
+        Object[] charsets = CharsetProviderICU.getAvailableNames();
+        int mapSize = map.size();
+        if(mapSize < charsets.length){
+            errln("Charset.availableCharsets() returned a number less than the number returned by icu. ICU: " + charsets.length
+                    + " JDK: " + mapSize);
+        }
+        logln("Total Number of chasets = " + map.size());
+    }
+    /* ticket 5580 */
+    public void TestJavaCanonicalNameOnAvailableCharsets() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Iterator allCharsets = provider.charsets();
+        String errorMessage = null;
+        
+        while (allCharsets.hasNext()) {
+            Charset _chset = (Charset)allCharsets.next();
+            Charset chset = Charset.forName(_chset.name());
+            
+            if (!chset.name().equals(_chset.name())) {
+                if (errorMessage == null) {
+                    errorMessage = new String("Error: Charset.forName( " + _chset.name() + " ) returned " + chset + " instead of " + _chset);
+                } else {
+                    errorMessage = errorMessage + "\nError: Charset.forName( " + _chset.name() + " ) returned " + chset + " instead of " + _chset;
+                }
+            }
+        }
+        
+        if (errorMessage != null) {
+            errln(errorMessage);
+        }
+    }
+    
+    public void TestWindows936(){
+        CharsetProviderICU icu = new CharsetProviderICU();
+        Charset cs = icu.charsetForName("windows-936-2000");
+        String canonicalName = cs.name();
+        if(!canonicalName.equals("GBK")){
+            errln("Did not get the expected canonical name. Got: "+canonicalName); //get the canonical name
+        }
+    }
+    
+    public void TestICUAvailableCharsets() {
+        CharsetProviderICU icu = new CharsetProviderICU();
+        Object[] charsets = CharsetProviderICU.getAvailableNames();
+        for(int i=0;i<charsets.length;i++){
+            Charset cs = icu.charsetForName((String)charsets[i]);
+            try{
+                CharsetEncoder encoder = cs.newEncoder();
+                if(encoder!=null){
+                    logln("Creation of encoder succeeded. "+cs.toString());
+                }
+            }catch(Exception ex){
+                errln("Could not instantiate encoder for "+charsets[i]+". Error: "+ex.toString());
+            }
+            try{
+                CharsetDecoder decoder = cs.newDecoder();
+                if(decoder!=null){
+                    logln("Creation of decoder succeeded. "+cs.toString());
+                }
+            }catch(Exception ex){
+                errln("Could not instantiate decoder for "+charsets[i]+". Error: "+ex.toString());
+            }
+        }
+    }
+    /* jitterbug 4312 */
+    public void TestUnsupportedCharset(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName("impossible");
+        if(icuChar != null){
+            errln("ICU does not conform to the spec");
+        }
+    }
+
+
+    public void TestEncoderCreation(){
+        try{
+            Charset cs = Charset.forName("GB_2312-80");
+            CharsetEncoder enc = cs.newEncoder();
+            if(enc!=null && (enc instanceof CharsetEncoderICU) ){
+                logln("Successfully created the encoder: "+ enc);
+            }else{
+                errln("Error creating charset encoder.");
+            }
+        }catch(Exception e){
+            warnln("Error creating charset encoder."+ e.toString());
+           // e.printStackTrace();
+        }
+        try{
+            Charset cs = Charset.forName("x-ibm-971_P100-1995");
+            CharsetEncoder enc = cs.newEncoder();
+            if(enc!=null && (enc instanceof CharsetEncoderICU) ){
+                logln("Successfully created the encoder: "+ enc);
+            }else{
+                errln("Error creating charset encoder.");
+            }
+        }catch(Exception e){
+            warnln("Error creating charset encoder."+ e.toString());
+        }
+    }
+    public void TestSubBytes(){
+        try{
+            //create utf-8 decoder
+            CharsetDecoder decoder = new CharsetProviderICU().charsetForName("utf-8").newDecoder();
+    
+            //create a valid byte array, which can be decoded to " buffer"
+            byte[] unibytes = new byte[] { 0x0020, 0x0062, 0x0075, 0x0066, 0x0066, 0x0065, 0x0072 };
+    
+            ByteBuffer buffer = ByteBuffer.allocate(20);
+    
+            //add a evil byte to make the byte buffer be malformed input
+            buffer.put((byte)0xd8);
+    
+            //put the valid byte array
+            buffer.put(unibytes);
+    
+            //reset postion
+            buffer.flip();  
+            
+            decoder.onMalformedInput(CodingErrorAction.REPLACE);
+            CharBuffer out = decoder.decode(buffer);
+            String expected = "\ufffd buffer";
+            if(!expected.equals(new String(out.array()))){
+                errln("Did not get the expected result for substitution chars. Got: "+
+                       new String(out.array()) + "("+ hex(out.array())+")");
+            }
+            logln("Output: "+  new String(out.array()) + "("+ hex(out.array())+")");
+        }catch (CharacterCodingException ex){
+            errln("Unexpected exception: "+ex.toString());
+        }
+    }
+    /*
+    public void TestImplFlushFailure(){
+   
+       try{
+           CharBuffer in = CharBuffer.wrap("\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F");
+           CharsetEncoder encoder = new CharsetProviderICU().charsetForName("iso-2022-jp").newEncoder();
+           ByteBuffer out = ByteBuffer.allocate(30);
+           encoder.encode(in, out, true);
+           encoder.flush(out);
+           if(out.position()!= 20){
+               errln("Did not get the expected position from flush");
+           }
+           
+       }catch (Exception ex){
+           errln("Could not create encoder for  iso-2022-jp exception: "+ex.toString());
+       } 
+    }
+   */
+    public void TestISO88591() {
+       
+        Charset cs = new CharsetProviderICU().charsetForName("iso-8859-1");
+        if(cs!=null){
+            CharsetEncoder encoder = cs.newEncoder();
+            if(encoder!=null){
+                encoder.canEncode("\uc2a3");
+            }else{
+                errln("Could not create encoder for iso-8859-1");
+            }
+        }else{
+            errln("Could not create Charset for iso-8859-1");
+        }
+        
+    }
+    public void TestUTF8Encode() {
+        CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("utf-8").newEncoder();
+        ByteBuffer out = ByteBuffer.allocate(30);
+        CoderResult result = encoderICU.encode(CharBuffer.wrap("\ud800"), out, true);
+        
+        if (result.isMalformed()) {
+            logln("\\ud800 is malformed for ICU4JNI utf-8 encoder");
+        } else if (result.isUnderflow()) {
+            errln("\\ud800 is OK for ICU4JNI utf-8 encoder");
+        }
+
+        CharsetEncoder encoderJDK = Charset.forName("utf-8").newEncoder();
+        result = encoderJDK.encode(CharBuffer.wrap("\ud800"), ByteBuffer
+                .allocate(10), true);
+        if (result.isUnderflow()) {
+            errln("\\ud800 is OK for JDK utf-8 encoder");
+        } else if (result.isMalformed()) {
+            logln("\\ud800 is malformed for JDK utf-8 encoder");
+        }
+    }
+
+/*    private void printCB(CharBuffer buf){
+        buf.rewind();
+        while(buf.hasRemaining()){
+            System.out.println(hex(buf.get()));
+        }
+        buf.rewind();
+    }
+*/
+    public void TestUTF8() throws CharacterCodingException{
+           try{
+               CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("utf-8").newEncoder();
+               encoderICU.encode(CharBuffer.wrap("\ud800"));
+               errln("\\ud800 is OK for ICU4JNI utf-8 encoder");
+           }catch (Exception e) {
+               logln("\\ud800 is malformed for JDK utf-8 encoder");
+              //e.printStackTrace();
+           }
+           
+           CharsetEncoder encoderJDK = Charset.forName("utf-8").newEncoder();
+           try {
+               encoderJDK.encode(CharBuffer.wrap("\ud800"));
+               errln("\\ud800 is OK for JDK utf-8 encoder");
+           } catch (Exception e) {
+               logln("\\ud800 is malformed for JDK utf-8 encoder");
+               //e.printStackTrace();
+           }         
+    }
+    
+    public void TestUTF16Bom(){
+
+        Charset cs = (new CharsetProviderICU()).charsetForName("UTF-16");
+        char[] in = new char[] { 0x1122, 0x2211, 0x3344, 0x4433,
+                                0x5566, 0x6655, 0x7788, 0x8877, 0x9900 };
+        CharBuffer inBuf = CharBuffer.allocate(in.length);
+        inBuf.put(in);
+        CharsetEncoder encoder = cs.newEncoder();
+        ByteBuffer outBuf = ByteBuffer.allocate(in.length*2+2);
+        inBuf.rewind();
+        encoder.encode(inBuf, outBuf, true);
+        outBuf.rewind();
+        if(outBuf.get(0)!= (byte)0xFE && outBuf.get(1)!= (byte)0xFF){
+            errln("The UTF16 encoder did not appended bom. Length returned: " + outBuf.remaining());
+        }
+        while(outBuf.hasRemaining()){
+            logln("0x"+hex(outBuf.get()));
+        }
+        CharsetDecoder decoder = cs.newDecoder();
+        outBuf.rewind();
+        CharBuffer rt = CharBuffer.allocate(in.length);
+        CoderResult cr = decoder.decode(outBuf, rt, true);
+        if(cr.isError()){
+            errln("Decoding with BOM failed. Error: "+ cr.toString());
+        }
+        equals(rt, in);
+        {
+            rt.clear();
+            outBuf.rewind();
+            Charset utf16 = Charset.forName("UTF-16");
+            CharsetDecoder dc = utf16.newDecoder();
+            cr = dc.decode(outBuf, rt, true);
+            equals(rt, in);
+        }
+    }
+     
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush) throws BufferOverflowException, Exception {
+        smBufDecode(decoder, encoding, source, target, throwException, flush, true);
+    }
+
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray) throws BufferOverflowException, Exception {
+        smBufDecode(decoder, encoding, source, target, throwException, flush, backedByArray, -1);
+    }
+
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray, int targetLimit)
+            throws BufferOverflowException, Exception {
+        ByteBuffer mySource;
+        CharBuffer myTarget;
+        if (backedByArray) {
+            mySource = ByteBuffer.allocate(source.capacity());
+            myTarget = CharBuffer.allocate(target.capacity());
+        } else {
+            // this does not guarantee by any means that mySource and myTarget
+            // are not backed by arrays
+            mySource = ByteBuffer.allocateDirect(source.capacity());
+            myTarget = ByteBuffer.allocateDirect(target.capacity() * 2).asCharBuffer();
+        }
+        mySource.position(source.position());
+        for (int i = source.position(); i < source.limit(); i++)
+            mySource.put(i, source.get(i));
+
+        {
+            decoder.reset();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            CoderResult result = CoderResult.UNDERFLOW;
+            result = decoder.decode(mySource, myTarget, true);
+            if (flush) {
+                result = decoder.flush(myTarget);
+            }
+            if (result.isError()) {
+                if (throwException) {
+                    throw new Exception();
+                }
+                errln("Test complete buffers while decoding failed. " + result.toString());
+                return;
+            }
+            if (result.isOverflow()) {
+                if (throwException) {
+                    throw new BufferOverflowException();
+                }
+                errln("Test complete buffers while decoding threw overflow exception");
+                return;
+            }
+            myTarget.limit(myTarget.position());
+            myTarget.position(0);
+            target.position(0);
+            if (result.isUnderflow() && !equals(myTarget, target, targetLimit)) {
+                errln(" Test complete buffers while decoding  " + encoding + " TO Unicode--failed");
+            }
+        }
+        if (isQuick()) {
+            return;
+        }
+        {
+            decoder.reset();
+            myTarget.limit(target.position());
+            mySource.limit(source.position());
+            mySource.position(source.position());
+            myTarget.clear();
+            myTarget.position(0);
+
+            int inputLen = mySource.remaining();
+
+            CoderResult result = CoderResult.UNDERFLOW;
+            for (int i = 1; i <= inputLen; i++) {
+                mySource.limit(i);
+                if (i == inputLen) {
+                    result = decoder.decode(mySource, myTarget, true);
+                } else {
+                    result = decoder.decode(mySource, myTarget, false);
+                }
+                if (result.isError()) {
+                    errln("Test small input buffers while decoding failed. " + result.toString());
+                    break;
+                }
+                if (result.isOverflow()) {
+                    if (throwException) {
+                        throw new BufferOverflowException();
+                    }
+                    errln("Test small input buffers while decoding threw overflow exception");
+                    break;
+                }
+
+            }
+            if (result.isUnderflow() && !equals(myTarget, target, targetLimit)) {
+                errln("Test small input buffers while decoding " + encoding + " TO Unicode--failed");
+            }
+        }
+        {
+            decoder.reset();
+            myTarget.limit(0);
+            mySource.limit(0);
+            mySource.position(source.position());
+            myTarget.clear();
+            while (true) {
+                CoderResult result = decoder.decode(mySource, myTarget, false);
+                if (result.isUnderflow()) {
+                    if (mySource.limit() < source.limit())
+                        mySource.limit(mySource.limit() + 1);
+                } else if (result.isOverflow()) {
+                    if (myTarget.limit() < target.limit())
+                        myTarget.limit(myTarget.limit() + 1);
+                    else
+                        break;
+                } else /*if (result.isError())*/ {
+                    errln("Test small output buffers while decoding " + result.toString());
+                }
+                if (mySource.position() == mySource.limit()) {
+                    result = decoder.decode(mySource, myTarget, true);
+                    if (result.isError()) {
+                        errln("Test small output buffers while decoding " + result.toString());
+                    }
+                    result = decoder.flush(myTarget);
+                    if (result.isError()) {
+                        errln("Test small output buffers while decoding " + result.toString());
+                    }
+                    break;
+                }
+            }
+
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small output buffers " + encoding + " TO Unicode failed");
+            }
+        }
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush) throws Exception, BufferOverflowException {
+        smBufEncode(encoder, encoding, source, target, throwException, flush, true);
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray) throws Exception, BufferOverflowException {
+        smBufEncode(encoder, encoding, source, target, throwException, flush, true, -1);
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray, int targetLimit) throws Exception,
+            BufferOverflowException {
+        logln("Running smBufEncode for " + encoding + " with class " + encoder);
+
+        CharBuffer mySource;
+        ByteBuffer myTarget;
+        if (backedByArray) {
+            mySource = CharBuffer.allocate(source.capacity());
+            myTarget = ByteBuffer.allocate(target.capacity());
+        } else {
+            mySource = ByteBuffer.allocateDirect(source.capacity() * 2).asCharBuffer();
+            myTarget = ByteBuffer.allocateDirect(target.capacity());
+        }
+        mySource.position(source.position());
+        for (int i = source.position(); i < source.limit(); i++)
+            mySource.put(i, source.get(i));
+
+        myTarget.clear();
+        {
+            logln("Running tests on small input buffers for " + encoding);
+            encoder.reset();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            CoderResult result = null;
+
+            result = encoder.encode(mySource, myTarget, true);
+            if (flush) {
+                result = encoder.flush(myTarget);
+            }
+
+            if (result.isError()) {
+                if (throwException) {
+                    throw new Exception();
+                }
+                errln("Test complete while encoding failed. " + result.toString());
+            }
+            if (result.isOverflow()) {
+                if (throwException) {
+                    throw new BufferOverflowException();
+                }
+                errln("Test complete while encoding threw overflow exception");
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test complete buffers while encoding for " + encoding + " failed");
+
+            } else {
+                logln("Tests complete buffers for " + encoding + " passed");
+            }
+        }
+        if (isQuick()) {
+            return;
+        }
+        {
+            logln("Running tests on small input buffers for " + encoding);
+            encoder.reset();
+            myTarget.clear();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            int inputLen = mySource.limit();
+            CoderResult result = null;
+            for (int i = 1; i <= inputLen; i++) {
+                mySource.limit(i);
+                result = encoder.encode(mySource, myTarget, false);
+                if (result.isError()) {
+                    errln("Test small input buffers while encoding failed. " + result.toString());
+                }
+                if (result.isOverflow()) {
+                    if (throwException) {
+                        throw new BufferOverflowException();
+                    }
+                    errln("Test small input buffers while encoding threw overflow exception");
+                }
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small input buffers " + encoding + " From Unicode failed");
+            } else {
+                logln("Tests on small input buffers for " + encoding + " passed");
+            }
+        }
+        {
+            logln("Running tests on small output buffers for " + encoding);
+            encoder.reset();
+            myTarget.clear();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            mySource.position(0);
+            myTarget.position(0);
+
+            logln("myTarget.limit: " + myTarget.limit() + " myTarget.capcity: " + myTarget.capacity());
+
+            while (true) {
+                int pos = myTarget.position();
+
+                CoderResult result = encoder.encode(mySource, myTarget, false);
+                logln("myTarget.Position: " + pos + " myTarget.limit: " + myTarget.limit());
+                logln("mySource.position: " + mySource.position() + " mySource.limit: " + mySource.limit());
+
+                if (result.isError()) {
+                    errln("Test small output buffers while encoding " + result.toString());
+                }
+                if (mySource.position() == mySource.limit()) {
+                    result = encoder.encode(mySource, myTarget, true);
+                    if (result.isError()) {
+                        errln("Test small output buffers while encoding " + result.toString());
+                    }
+
+                    myTarget.limit(myTarget.capacity());
+                    result = encoder.flush(myTarget);
+                    if (result.isError()) {
+                        errln("Test small output buffers while encoding " + result.toString());
+                    }
+                    break;
+                }
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small output buffers " + encoding + " From Unicode failed.");
+            }
+            logln("Tests on small output buffers for " + encoding + " passed");
+        }
+    }
+
+    public void convertAllTest(ByteBuffer bSource, CharBuffer uSource) throws Exception {
+        {
+            try {
+                m_decoder.reset();
+                ByteBuffer mySource = bSource.duplicate();
+                CharBuffer myTarget = m_decoder.decode(mySource);
+                if (!equals(myTarget, uSource)) {
+                    errln(
+                        "--Test convertAll() "
+                            + m_encoding
+                            + " to Unicode  --FAILED");
+                }
+            } catch (Exception e) {
+                //e.printStackTrace();
+                errln(e.getMessage());
+            }
+        }
+        {
+            try {
+                m_encoder.reset();
+                CharBuffer mySource = CharBuffer.wrap(uSource);
+                ByteBuffer myTarget = m_encoder.encode(mySource);
+                if (!equals(myTarget, bSource)) {
+                    errln(
+                        "--Test convertAll() "
+                            + m_encoding
+                            + " to Unicode  --FAILED");
+                }
+            } catch (Exception e) {
+                //e.printStackTrace();
+                errln("encoder.encode() failed "+ e.getMessage()+" "+e.toString());
+            }
+        }
+
+    }
+    //TODO
+    /*
+    public void TestString(ByteBuffer bSource, CharBuffer uSource) throws Exception {
+        try {
+            {
+                String source = uSource.toString();
+                byte[] target = source.getBytes(m_encoding);
+                if (!equals(target, bSource.array())) {
+                    errln("encode using string API failed");
+                }
+            }
+            {
+
+                String target = new String(bSource.array(), m_encoding);
+                if (!equals(uSource, target.toCharArray())) {
+                    errln("decode using string API failed");
+                }
+            }
+        } catch (Exception e) {
+            //e.printStackTrace();
+            errln(e.getMessage());
+        }
+    }
+
+    /*private void fromUnicodeTest() throws Exception {
+        
+        logln("Loaded Charset: " + charset.getClass().toString());
+        logln("Loaded CharsetEncoder: " + encoder.getClass().toString());
+        logln("Loaded CharsetDecoder: " + decoder.getClass().toString());
+        
+        ByteBuffer myTarget = ByteBuffer.allocate(gbSource.length);
+        logln("Created ByteBuffer of length: " + uSource.length);
+        CharBuffer mySource = CharBuffer.wrap(uSource);
+        logln("Wrapped ByteBuffer with CharBuffer  ");
+        encoder.reset();
+        logln("Test Unicode to " + encoding );
+        encoder.encode(mySource, myTarget, true);
+        if (!equals(myTarget, gbSource)) {
+            errln("--Test Unicode to " + encoding + ": FAILED");
+        } 
+        logln("Test Unicode to " + encoding +" passed");
+    }
+
+    public void TestToUnicode( ) throws Exception {
+        
+        logln("Loaded Charset: " + charset.getClass().toString());
+        logln("Loaded CharsetEncoder: " + encoder.getClass().toString());
+        logln("Loaded CharsetDecoder: " + decoder.getClass().toString());
+        
+        CharBuffer myTarget = CharBuffer.allocate(uSource.length);
+        ByteBuffer mySource = ByteBuffer.wrap(getByteArray(gbSource));
+        decoder.reset();
+        CoderResult result = decoder.decode(mySource, myTarget, true);
+        if (result.isError()) {
+            errln("Test ToUnicode -- FAILED");
+        }
+        if (!equals(myTarget, uSource)) {
+            errln("--Test " + encoding + " to Unicode :FAILED");
+        }
+    }
+
+    public static byte[] getByteArray(char[] source) {
+        byte[] target = new byte[source.length];
+        int i = source.length;
+        for (; --i >= 0;) {
+            target[i] = (byte) source[i];
+        }
+        return target;
+    }
+    /*
+    private void smBufCharset(Charset charset) {
+        try {
+            ByteBuffer bTarget = charset.encode(CharBuffer.wrap(uSource));
+            CharBuffer uTarget =
+                charset.decode(ByteBuffer.wrap(getByteArray(gbSource)));
+
+            if (!equals(uTarget, uSource)) {
+                errln("Test " + charset.toString() + " to Unicode :FAILED");
+            }
+            if (!equals(bTarget, gbSource)) {
+                errln("Test " + charset.toString() + " from Unicode :FAILED");
+            }
+        } catch (Exception ex) {
+            errln("Encountered exception in smBufCharset");
+        }
+    }
+    
+    public void TestMultithreaded() throws Exception {
+        final Charset cs = Charset.forName(encoding);
+        if (cs == charset) {
+            errln("The objects are equal");
+        }
+        smBufCharset(cs);
+        try {
+            final Thread t1 = new Thread() {
+                public void run() {
+                    // commented out since the mehtods on
+                    // Charset API are supposed to be thread
+                    // safe ... to test it we dont sync
+            
+                    // synchronized(charset){
+                   while (!interrupted()) {
+                        try {
+                            smBufCharset(cs);
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                    // }
+                }
+            };
+            final Thread t2 = new Thread() {
+                public void run() {
+                        // synchronized(charset){
+                    while (!interrupted()) {
+                        try {
+                            smBufCharset(cs);
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                    //}
+                }
+            };
+            t1.start();
+            t2.start();
+            int i = 0;
+            for (;;) {
+                if (i > 1000000000) {
+                    try {
+                        t1.interrupt();
+                    } catch (Exception e) {
+                    }
+                    try {
+                        t2.interrupt();
+                    } catch (Exception e) {
+                    }
+                    break;
+                }
+                i++;
+            }
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+
+    public void TestSynchronizedMultithreaded() throws Exception {
+        // Methods on CharsetDecoder and CharsetEncoder classes
+        // are inherently unsafe if accessed by multiple concurrent
+        // thread so we synchronize them
+        final Charset charset = Charset.forName(encoding);
+        final CharsetDecoder decoder = charset.newDecoder();
+        final CharsetEncoder encoder = charset.newEncoder();
+        try {
+            final Thread t1 = new Thread() {
+                public void run() {
+                    while (!interrupted()) {
+                        try {
+                            synchronized (encoder) {
+                                smBufEncode(encoder, encoding);
+                            }
+                            synchronized (decoder) {
+                                smBufDecode(decoder, encoding);
+                            }
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                }
+            };
+            final Thread t2 = new Thread() {
+                public void run() {
+                    while (!interrupted()) {
+                        try {
+                            synchronized (encoder) {
+                                smBufEncode(encoder, encoding);
+                            }
+                            synchronized (decoder) {
+                                smBufDecode(decoder, encoding);
+                            }
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+                }
+            };
+            t1.start();
+            t2.start();
+            int i = 0;
+            for (;;) {
+                if (i > 1000000000) {
+                    try {
+                        t1.interrupt();
+                    } catch (Exception e) {
+                    }
+                    try {
+                        t2.interrupt();
+                    } catch (Exception e) {
+                    }
+                    break;
+                }
+                i++;
+            }
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+    */
+    
+    public void TestMBCS(){      
+        {
+            // Encoder: from Unicode conversion
+            CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("ibm-971").newEncoder();
+            ByteBuffer out = ByteBuffer.allocate(6);
+            encoderICU.onUnmappableCharacter(CodingErrorAction.REPLACE);
+            CoderResult result = encoderICU.encode(CharBuffer.wrap("\u0131\u0061\u00a1"), out, true);
+            if(!result.isError()){
+                byte[] expected = {(byte)0xA9, (byte)0xA5, (byte)0xAF, (byte)0xFE, (byte)0xA2, (byte)0xAE};
+                if(!equals(expected, out.array())){
+                    errln("Did not get the expected result for substitution bytes. Got: "+
+                           hex(out.array()));
+                }
+                logln("Output: "+  hex(out.array()));
+            }else{
+                errln("Encode operation failed for encoder: "+encoderICU.toString());
+            }
+        }
+        {
+            // Decoder: to Unicode conversion
+            CharsetDecoder decoderICU = new CharsetProviderICU().charsetForName("ibm-971").newDecoder();
+            CharBuffer out = CharBuffer.allocate(3);
+            decoderICU.onMalformedInput(CodingErrorAction.REPLACE);
+            CoderResult result = decoderICU.decode(ByteBuffer.wrap(new byte[] { (byte)0xA2, (byte)0xAE, (byte)0x12, (byte)0x34, (byte)0xEF, (byte)0xDC }), out, true);
+            if(!result.isError()){
+                char[] expected = {'\u00a1', '\ufffd', '\u6676'};
+                if(!equals(expected, out.array())){
+                    errln("Did not get the expected result for substitution chars. Got: "+
+                           hex(out.array()));
+                }
+                logln("Output: "+  hex(out.array()));
+            }else{
+                errln("Decode operation failed for encoder: "+decoderICU.toString());
+            }
+        }
+    }
+    
+    public void TestJB4897(){
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset charset = provider.charsetForName("x-abracadabra");  
+        if(charset!=null && charset.canEncode()== true){
+            errln("provider.charsetForName() does not validate the charset names" );
+        }
+    }
+
+    public void TestJB5027() {
+        CharsetProviderICU provider= new CharsetProviderICU();
+
+        Charset fake = provider.charsetForName("doesNotExist");
+        if(fake != null){
+            errln("\"doesNotExist\" returned " + fake);
+        }
+        Charset xfake = provider.charsetForName("x-doesNotExist");
+        if(xfake!=null){
+            errln("\"x-doesNotExist\" returned " + xfake);
+        }
+    }
+    //test to make sure that number of aliases and canonical names are in the charsets that are in
+    public void TestAllNames() {
+        
+        CharsetProviderICU provider= new CharsetProviderICU();
+        Object[] available = CharsetProviderICU.getAvailableNames();
+        for(int i=0; i<available.length;i++){
+            try{
+                String canon  = CharsetProviderICU.getICUCanonicalName((String)available[i]);
+
+                // ',' is not allowed by Java's charset name checker
+                if(canon.indexOf(',')>=0){
+                    continue;
+                }
+                Charset cs = provider.charsetForName((String)available[i]);
+              
+                Object[] javaAliases =  cs.aliases().toArray();
+                //seach for ICU canonical name in javaAliases
+                boolean inAliasList = false;
+                for(int j=0; j<javaAliases.length; j++){
+                    String java = (String) javaAliases[j];
+                    if(java.equals(canon)){
+                        logln("javaAlias: " + java + " canon: " + canon);
+                        inAliasList = true;
+                    }
+                }
+                if(inAliasList == false){
+                    errln("Could not find ICU canonical name: "+canon+ " for java canonical name: "+ available[i]+ " "+ i);
+                }
+            }catch(UnsupportedCharsetException ex){
+                errln("could no load charset "+ available[i]+" "+ex.getMessage());
+                continue;
+            }
+        }
+    }
+    public void TestDecoderImplFlush() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16");
+        Charset jcs = Charset.forName("UTF-16"); // Java's UTF-16 charset
+        execDecoder(jcs);
+        execDecoder(ics);
+    }
+    public void TestEncoderImplFlush() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16");
+        Charset jcs = Charset.forName("UTF-16"); // Java's UTF-16 charset
+        execEncoder(jcs);
+        execEncoder(ics);
+    }
+    private void execDecoder(Charset cs){
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.REPORT);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        CharBuffer out = CharBuffer.allocate(10);
+        CoderResult result = decoder.decode(ByteBuffer.wrap(new byte[] { -1,
+                -2, 32, 0, 98 }), out, false);
+        result = decoder.decode(ByteBuffer.wrap(new byte[] { 98 }), out, true);
+
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        try {
+            result = decoder.flush(out);
+            logln(cs.getClass().toString()+ ":" +result.toString());
+        } catch (Exception e) {
+            errln(e.getMessage()+" "+cs.getClass().toString());
+        }
+    }
+    private void execEncoder(Charset cs){
+        CharsetEncoder encoder = cs.newEncoder();
+        encoder.onMalformedInput(CodingErrorAction.REPORT);
+        encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        ByteBuffer out = ByteBuffer.allocate(10);
+        CoderResult result = encoder.encode(CharBuffer.wrap(new char[] { '\uFFFF',
+                '\u2345', 32, 98 }), out, false);
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        result = encoder.encode(CharBuffer.wrap(new char[] { 98 }), out, true);
+
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        try {
+            result = encoder.flush(out);
+            logln(cs.getClass().toString()+ ":" +result.toString());
+        } catch (Exception e) {
+            errln(e.getMessage()+" "+cs.getClass().toString());
+        }
+    }
+    public void TestDecodeMalformed() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16BE");
+        //Use SUN's charset
+        Charset jcs = Charset.forName("UTF-16");
+        CoderResult ir = execMalformed(ics);
+        CoderResult jr = execMalformed(jcs);
+        if(ir!=jr){
+            errln("ICU's decoder did not return the same result as Sun. ICU: "+ir.toString()+" Sun: "+jr.toString());
+        }
+    }
+    private CoderResult execMalformed(Charset cs){
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.IGNORE);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        ByteBuffer in = ByteBuffer.wrap(new byte[] { 0x00, 0x41, 0x00, 0x42, 0x01 });
+        CharBuffer out = CharBuffer.allocate(3);
+        return decoder.decode(in, out, true);
+    }
+    
+    public void TestJavaUTF16Decoder(){
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16BE");
+        //Use SUN's charset
+        Charset jcs = Charset.forName("UTF-16");
+        Exception ie = execConvertAll(ics);
+        Exception je = execConvertAll(jcs);
+        if(ie!=je){
+            errln("ICU's decoder did not return the same result as Sun. ICU: "+ie.toString()+" Sun: "+je.toString());
+        }
+    }
+    private Exception execConvertAll(Charset cs){
+        ByteBuffer in = ByteBuffer.allocate(400);
+        int i=0;
+        while(in.position()!=in.capacity()){
+            in.put((byte)0xD8);
+            in.put((byte)i);
+            in.put((byte)0xDC);
+            in.put((byte)i);
+            i++;
+        }
+        in.limit(in.position());
+        in.position(0);
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.IGNORE);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        try{
+            CharBuffer out = decoder.decode(in);
+            if(out!=null){
+                logln(cs.toString()+" encoing succeeded as expected!");
+            }
+        }catch ( Exception ex){
+            errln("Did not get expected exception for encoding: "+cs.toString());
+            return ex;
+        }
+        return null;
+    }
+    public void TestUTF32BOM(){
+
+        Charset cs = (new CharsetProviderICU()).charsetForName("UTF-32");
+        char[] in = new char[] { 0xd800, 0xdc00, 
+                                 0xd801, 0xdc01,
+                                 0xdbff, 0xdfff, 
+                                 0xd900, 0xdd00, 
+                                 0x0000, 0x0041,
+                                 0x0000, 0x0042,
+                                 0x0000, 0x0043};
+        
+        CharBuffer inBuf = CharBuffer.allocate(in.length);
+        inBuf.put(in);
+        CharsetEncoder encoder = cs.newEncoder();
+        ByteBuffer outBuf = ByteBuffer.allocate(in.length*4+4);
+        inBuf.rewind();
+        encoder.encode(inBuf, outBuf, true);
+        outBuf.rewind();
+        if(outBuf.get(0)!= (byte)0x00 && outBuf.get(1)!= (byte)0x00 && 
+                outBuf.get(2)!= (byte)0xFF && outBuf.get(3)!= (byte)0xFE){
+            errln("The UTF32 encoder did not appended bom. Length returned: " + outBuf.remaining());
+        }
+        while(outBuf.hasRemaining()){
+            logln("0x"+hex(outBuf.get()));
+        }
+        CharsetDecoder decoder = cs.newDecoder();
+        outBuf.limit(outBuf.position());
+        outBuf.rewind();
+        CharBuffer rt = CharBuffer.allocate(in.length);
+        CoderResult cr = decoder.decode(outBuf, rt, true);
+        if(cr.isError()){
+            errln("Decoding with BOM failed. Error: "+ cr.toString());
+        }
+        equals(rt, in);
+        try{
+            rt.clear();
+            outBuf.rewind();
+            Charset utf16 = Charset.forName("UTF-32");
+            CharsetDecoder dc = utf16.newDecoder();
+            cr = dc.decode(outBuf, rt, true);
+            equals(rt, in);
+        }catch(UnsupportedCharsetException ex){
+            // swallow the expection.
+        }
+    }
+    
+    /*
+     *  Michael Ow
+     *  Modified 070424
+     */
+    /*The following two methods provides the option of exceptions when Decoding 
+     * and Encoding if needed for testing purposes.
+     */
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target) {
+        smBufDecode(decoder, encoding, source, target, true);
+    }
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target, boolean backedByArray) {
+        try {
+            smBufDecode(decoder, encoding, source, target, false, false, backedByArray);
+        }    
+        catch (Exception ex) {           
+            System.out.println("!exception!");
+        }
+    }
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target)  {
+        smBufEncode(encoder, encoding, source, target, true);
+    }
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target, boolean backedByArray)  {
+        try {
+            smBufEncode(encoder, encoding, source, target, false, false); 
+        }
+        catch (Exception ex) {
+            System.out.println("!exception!");
+        }
+    }
+    //Test CharsetICUProvider
+    public void TestNullCanonicalName() {
+        String enc = null;
+        String canonicalName = CharsetProviderICU.getICUCanonicalName(enc);
+        
+        if (canonicalName != null) {
+            errln("getICUCanonicalName return a non-null string for given null string");
+        }
+    }
+    public void TestGetAllNames() {
+        String[] names = null;
+        
+        names = CharsetProviderICU.getAllNames();
+        
+        if (names == null) {
+            errln("getAllNames returned a null string.");
+        }
+    }
+    //Test CharsetICU
+    public void TestCharsetContains() {
+        boolean test;
+        
+        CharsetProvider provider = new CharsetProviderICU();     
+        Charset cs1 = provider.charsetForName("UTF-32");
+        Charset cs2 = null;
+        
+        test = cs1.contains(cs2);
+        
+        if (test != false) {
+            errln("Charset.contains returned true for a null charset.");
+        }
+        
+        cs2 = CharsetICU.forNameICU("UTF-32");
+        
+        test = cs1.contains(cs2);
+        
+        if (test != true) {
+            errln("Charset.contains returned false for an identical charset.");
+        }
+        
+        cs2 = provider.charsetForName("UTF-8");
+        
+        test = cs1.contains(cs2);
+        
+        if (test != false) {
+            errln("Charset.contains returned true for a different charset.");
+        }
+    }
+    public void TestCharsetICUNullCharsetName() {
+        String charsetName = null;
+        
+        try {
+            CharsetICU.forNameICU(charsetName);
+            errln("CharsetICU.forName should have thown an exception after getting a null charsetName.");
+        }
+        catch(Exception ex) {          
+        }
+    }
+    
+    //Test CharsetASCII
+    public void TestCharsetASCIIOverFlow() {
+        int byteBufferLimit;
+        int charBufferLimit;
+        
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("ASCII");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer charBuffer = CharBuffer.allocate(0x90);
+        ByteBuffer byteBuffer = ByteBuffer.allocate(0x90);
+        
+        CharBuffer charBufferTest = CharBuffer.allocate(0xb0);
+        ByteBuffer byteBufferTest = ByteBuffer.allocate(0xb0);
+        
+        for(int j=0;j<=0x7f; j++){
+           charBuffer.put((char)j);
+           byteBuffer.put((byte)j);
+        }
+        
+        byteBuffer.limit(byteBufferLimit = byteBuffer.position());
+        byteBuffer.position(0);
+        charBuffer.limit(charBufferLimit = charBuffer.position());
+        charBuffer.position(0);
+        
+        //test for overflow
+        byteBufferTest.limit(byteBufferLimit - 5);
+        byteBufferTest.position(0);
+        charBufferTest.limit(charBufferLimit - 5);
+        charBufferTest.position(0);
+        try {
+            smBufDecode(decoder, "ASCII", byteBuffer, charBufferTest, true, false);
+            errln("Overflow exception while decoding ASCII should have been thrown.");
+        }
+        catch(Exception ex) {
+        }
+        try {
+            smBufEncode(encoder, "ASCII", charBuffer, byteBufferTest, true, false);
+            errln("Overflow exception while encoding ASCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        // For better code coverage
+        /* For better code coverage */
+        byte byteout[] = {
+                (byte)0x01
+        };
+        char charin[] = {
+                (char)0x0001, (char)0x0002
+        };
+        ByteBuffer bb = ByteBuffer.wrap(byteout);
+        CharBuffer cb = CharBuffer.wrap(charin);
+        CharBuffer cb2 = CharBuffer.wrap(cb.subSequence(0, 2));
+        encoder.reset();
+        if (!(encoder.encode(cb2, bb, true)).isOverflow()) {
+            errln("Overflow error while encoding ASCII should have occurred.");
+        }
+    }
+    //Test CharsetUTF7
+    public void TestCharsetUTF7() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-7");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x100);
+        ByteBuffer bs = ByteBuffer.allocate(0x100);
+        
+        /* Unicode :  A<not equal to Alpha Lamda>. */
+        /* UTF7: AImIDkQ. */
+        us.put((char)0x41); us.put((char)0x2262); us.put((char)0x391); us.put((char)0x39B); us.put((char)0x2e);
+        bs.put((byte)0x41); bs.put((byte)0x2b); bs.put((byte)0x49); bs.put((byte)0x6d); 
+        bs.put((byte)0x49); bs.put((byte)0x44); bs.put((byte)0x6b); bs.put((byte)0x51); 
+        bs.put((byte)0x4f); bs.put((byte)0x62); bs.put((byte)0x2e);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+
+        smBufDecode(decoder, "UTF-7", bs, us);
+        smBufEncode(encoder, "UTF-7", us, bs);
+        
+        /* ticket 6151 */
+        CharBuffer smallus = CharBuffer.allocate(1);
+        ByteBuffer bigbs = ByteBuffer.allocate(3);
+        bigbs.put((byte)0x41); bigbs.put((byte)0x41); bigbs.put((byte)0x41);
+        bigbs.position(0);
+        try {
+            smBufDecode(decoder, "UTF-7-DE-Overflow", bigbs, smallus, true, false);
+            errln("Buffer Overflow exception should have been thrown while decoding UTF-7.");
+        } catch (Exception ex) {
+        }
+        
+        //The rest of the code in this method is to provide better code coverage
+        CharBuffer ccus = CharBuffer.allocate(0x10);
+        ByteBuffer ccbs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage code
+        //test for accurate illegal and control character checking
+        ccbs.put((byte)0x0D); ccbs.put((byte)0x05);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-1", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal base64 character
+        ccbs.put((byte)0x2b); ccbs.put((byte)0xff);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-2", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x2d); ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x2d);
+        ccus.put((char)0x0000); ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-3", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence 
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x0a); ccbs.put((byte)0x09);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-4", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x0a);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-5", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x00);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-6", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-7", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccbs.put((byte)0x0c); ccbs.put((byte)0x0c);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-8", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        //end of charset decoder code coverage code
+        
+        //start of charset encoder code coverage code
+        ccbs.clear();
+        ccus.clear();
+        //test for overflow buffer error
+        ccus.put((char)0x002b);
+        ccbs.put((byte)0x2b); 
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-1", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x002b); ccus.put((char)0x2262);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x2d); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-2", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0049);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-3", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-4", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-5", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395); ccus.put((char)0x0391);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-6", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395); ccus.put((char)0x0391);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); 
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-7", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x0049); ccus.put((char)0x0048);
+        ccbs.put((byte)0x00); 
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-8", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262);
+        ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-9", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0049);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-10", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x6d); ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-11", ccus, ccbs, false, true);
+        } catch (Exception ex) {
+            errln("Exception while encoding UTF-7 code coverage test should not have been thrown.");
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        encoder.reset();
+        ccus.put((char)0x3980); ccus.put((char)0x2715);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x4f); ccbs.put((byte)0x59);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        result = encoder.encode(ccus, ccbs, true);
+        result = encoder.flush(ccbs);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while encoding UTF-7 should have occurred.");
+        }
+        //end of charset encoder code coverage code
+    }
+    //Test Charset ISCII
+    public void TestCharsetISCII() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("ISCII,version=0");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x100);
+        ByteBuffer bs = ByteBuffer.allocate(0x100);
+        ByteBuffer bsr = ByteBuffer.allocate(0x100);
+        
+        //test full range of Devanagari
+        us.put((char)0x0901); us.put((char)0x0902); us.put((char)0x0903); us.put((char)0x0905); us.put((char)0x0906); us.put((char)0x0907);
+        us.put((char)0x0908); us.put((char)0x0909); us.put((char)0x090A); us.put((char)0x090B); us.put((char)0x090E); us.put((char)0x090F);
+        us.put((char)0x0910); us.put((char)0x090D); us.put((char)0x0912); us.put((char)0x0913); us.put((char)0x0914); us.put((char)0x0911);
+        us.put((char)0x0915); us.put((char)0x0916); us.put((char)0x0917); us.put((char)0x0918); us.put((char)0x0919); us.put((char)0x091A);
+        us.put((char)0x091B); us.put((char)0x091C); us.put((char)0x091D); us.put((char)0x091E); us.put((char)0x091F); us.put((char)0x0920);
+        us.put((char)0x0921); us.put((char)0x0922); us.put((char)0x0923); us.put((char)0x0924); us.put((char)0x0925); us.put((char)0x0926); 
+        us.put((char)0x0927); us.put((char)0x0928); us.put((char)0x0929); us.put((char)0x092A); us.put((char)0x092B); us.put((char)0x092C); 
+        us.put((char)0x092D); us.put((char)0x092E); us.put((char)0x092F); us.put((char)0x095F); us.put((char)0x0930); us.put((char)0x0931); 
+        us.put((char)0x0932); us.put((char)0x0933); us.put((char)0x0934); us.put((char)0x0935); us.put((char)0x0936); us.put((char)0x0937); 
+        us.put((char)0x0938); us.put((char)0x0939); us.put((char)0x200D); us.put((char)0x093E); us.put((char)0x093F); us.put((char)0x0940); 
+        us.put((char)0x0941); us.put((char)0x0942); us.put((char)0x0943); us.put((char)0x0946); us.put((char)0x0947); us.put((char)0x0948); 
+        us.put((char)0x0945); us.put((char)0x094A); us.put((char)0x094B); us.put((char)0x094C); us.put((char)0x0949); us.put((char)0x094D); 
+        us.put((char)0x093D); us.put((char)0x0966); us.put((char)0x0967); us.put((char)0x0968); us.put((char)0x0969); us.put((char)0x096A); 
+        us.put((char)0x096B); us.put((char)0x096C); us.put((char)0x096D); us.put((char)0x096E); us.put((char)0x096F); 
+        
+        bs.put((byte)0xEF); bs.put((byte)0x42);
+        bs.put((byte)0xA1); bs.put((byte)0xA2); bs.put((byte)0xA3); bs.put((byte)0xA4); bs.put((byte)0xA5); bs.put((byte)0xA6);
+        bs.put((byte)0xA7); bs.put((byte)0xA8); bs.put((byte)0xA9); bs.put((byte)0xAA); bs.put((byte)0xAB); bs.put((byte)0xAC); 
+        bs.put((byte)0xAD); bs.put((byte)0xAE); bs.put((byte)0xAF); bs.put((byte)0xB0); bs.put((byte)0xB1); bs.put((byte)0xB2); 
+        bs.put((byte)0xB3); bs.put((byte)0xB4); bs.put((byte)0xB5); bs.put((byte)0xB6); bs.put((byte)0xB7); bs.put((byte)0xB8); 
+        bs.put((byte)0xB9); bs.put((byte)0xBA); bs.put((byte)0xBB); bs.put((byte)0xBC); bs.put((byte)0xBD); bs.put((byte)0xBE); 
+        bs.put((byte)0xBF); bs.put((byte)0xC0); bs.put((byte)0xC1); bs.put((byte)0xC2); bs.put((byte)0xC3); bs.put((byte)0xC4); 
+        bs.put((byte)0xC5); bs.put((byte)0xC6); bs.put((byte)0xC7); bs.put((byte)0xC8); bs.put((byte)0xC9); bs.put((byte)0xCA); 
+        bs.put((byte)0xCB); bs.put((byte)0xCC); bs.put((byte)0xCD); bs.put((byte)0xCE); bs.put((byte)0xCF); bs.put((byte)0xD0); 
+        bs.put((byte)0xD1); bs.put((byte)0xD2); bs.put((byte)0xD3); bs.put((byte)0xD4); bs.put((byte)0xD5); bs.put((byte)0xD6); 
+        bs.put((byte)0xD7); bs.put((byte)0xD8); bs.put((byte)0xD9); bs.put((byte)0xDA); bs.put((byte)0xDB); bs.put((byte)0xDC); 
+        bs.put((byte)0xDD); bs.put((byte)0xDE); bs.put((byte)0xDF); bs.put((byte)0xE0); bs.put((byte)0xE1); bs.put((byte)0xE2); 
+        bs.put((byte)0xE3); bs.put((byte)0xE4); bs.put((byte)0xE5); bs.put((byte)0xE6); bs.put((byte)0xE7); bs.put((byte)0xE8); 
+        bs.put((byte)0xEA); bs.put((byte)0xE9); bs.put((byte)0xF1); bs.put((byte)0xF2); bs.put((byte)0xF3); bs.put((byte)0xF4); 
+        bs.put((byte)0xF5); bs.put((byte)0xF6); bs.put((byte)0xF7); bs.put((byte)0xF8); bs.put((byte)0xF9); bs.put((byte)0xFA); 
+        
+        bsr.put((byte)0xA1); bsr.put((byte)0xA2); bsr.put((byte)0xA3); bsr.put((byte)0xA4); bsr.put((byte)0xA5); bsr.put((byte)0xA6);
+        bsr.put((byte)0xA7); bsr.put((byte)0xA8); bsr.put((byte)0xA9); bsr.put((byte)0xAA); bsr.put((byte)0xAB); bsr.put((byte)0xAC); 
+        bsr.put((byte)0xAD); bsr.put((byte)0xAE); bsr.put((byte)0xAF); bsr.put((byte)0xB0); bsr.put((byte)0xB1); bsr.put((byte)0xB2); 
+        bsr.put((byte)0xB3); bsr.put((byte)0xB4); bsr.put((byte)0xB5); bsr.put((byte)0xB6); bsr.put((byte)0xB7); bsr.put((byte)0xB8); 
+        bsr.put((byte)0xB9); bsr.put((byte)0xBA); bsr.put((byte)0xBB); bsr.put((byte)0xBC); bsr.put((byte)0xBD); bsr.put((byte)0xBE); 
+        bsr.put((byte)0xBF); bsr.put((byte)0xC0); bsr.put((byte)0xC1); bsr.put((byte)0xC2); bsr.put((byte)0xC3); bsr.put((byte)0xC4); 
+        bsr.put((byte)0xC5); bsr.put((byte)0xC6); bsr.put((byte)0xC7); bsr.put((byte)0xC8); bsr.put((byte)0xC9); bsr.put((byte)0xCA); 
+        bsr.put((byte)0xCB); bsr.put((byte)0xCC); bsr.put((byte)0xCD); bsr.put((byte)0xCE); bsr.put((byte)0xCF); bsr.put((byte)0xD0); 
+        bsr.put((byte)0xD1); bsr.put((byte)0xD2); bsr.put((byte)0xD3); bsr.put((byte)0xD4); bsr.put((byte)0xD5); bsr.put((byte)0xD6); 
+        bsr.put((byte)0xD7); bsr.put((byte)0xD8); bsr.put((byte)0xD9); bsr.put((byte)0xDA); bsr.put((byte)0xDB); bsr.put((byte)0xDC); 
+        bsr.put((byte)0xDD); bsr.put((byte)0xDE); bsr.put((byte)0xDF); bsr.put((byte)0xE0); bsr.put((byte)0xE1); bsr.put((byte)0xE2); 
+        bsr.put((byte)0xE3); bsr.put((byte)0xE4); bsr.put((byte)0xE5); bsr.put((byte)0xE6); bsr.put((byte)0xE7); bsr.put((byte)0xE8); 
+        bsr.put((byte)0xEA); bsr.put((byte)0xE9); bsr.put((byte)0xF1); bsr.put((byte)0xF2); bsr.put((byte)0xF3); bsr.put((byte)0xF4); 
+        bsr.put((byte)0xF5); bsr.put((byte)0xF6); bsr.put((byte)0xF7); bsr.put((byte)0xF8); bsr.put((byte)0xF9); bsr.put((byte)0xFA); 
+        
+        //test Soft Halant
+        us.put((char)0x0915); us.put((char)0x094d); us.put((char)0x200D);
+        bs.put((byte)0xB3); bs.put((byte)0xE8); bs.put((byte)0xE9);
+        bsr.put((byte)0xB3); bsr.put((byte)0xE8); bsr.put((byte)0xE9);
+        
+        //test explicit halant
+        us.put((char)0x0915); us.put((char)0x094D); us.put((char)0x200C);
+        bs.put((byte)0xB3); bs.put((byte)0xE8); bs.put((byte)0xE8);
+        bsr.put((byte)0xB3); bsr.put((byte)0xE8); bsr.put((byte)0xE8);
+        
+        //test double danda
+        us.put((char)0x0965); 
+        bs.put((byte)0xEA); bs.put((byte)0xEA); 
+        bsr.put((byte)0xEA); bsr.put((byte)0xEA); 
+        
+        //test ASCII
+        us.put((char)0x1B); us.put((char)0x24); us.put((char)0x29); us.put((char)0x47); us.put((char)0x0E); us.put((char)0x23);
+        us.put((char)0x21); us.put((char)0x23); us.put((char)0x22); us.put((char)0x23); us.put((char)0x23); us.put((char)0x23);
+        us.put((char)0x24); us.put((char)0x23); us.put((char)0x25); us.put((char)0x23); us.put((char)0x26); us.put((char)0x23);
+        us.put((char)0x27); us.put((char)0x23); us.put((char)0x28); us.put((char)0x23); us.put((char)0x29); us.put((char)0x23);
+        us.put((char)0x2A); us.put((char)0x23); us.put((char)0x2B); us.put((char)0x0F); us.put((char)0x2F); us.put((char)0x2A);
+        
+        bs.put((byte)0x1B); bs.put((byte)0x24); bs.put((byte)0x29); bs.put((byte)0x47); bs.put((byte)0x0E); bs.put((byte)0x23);
+        bs.put((byte)0x21); bs.put((byte)0x23); bs.put((byte)0x22); bs.put((byte)0x23); bs.put((byte)0x23); bs.put((byte)0x23);
+        bs.put((byte)0x24); bs.put((byte)0x23); bs.put((byte)0x25); bs.put((byte)0x23); bs.put((byte)0x26); bs.put((byte)0x23);
+        bs.put((byte)0x27); bs.put((byte)0x23); bs.put((byte)0x28); bs.put((byte)0x23); bs.put((byte)0x29); bs.put((byte)0x23);
+        bs.put((byte)0x2A); bs.put((byte)0x23); bs.put((byte)0x2B); bs.put((byte)0x0F); bs.put((byte)0x2F); bs.put((byte)0x2A);
+        
+        bsr.put((byte)0x1B); bsr.put((byte)0x24); bsr.put((byte)0x29); bsr.put((byte)0x47); bsr.put((byte)0x0E); bsr.put((byte)0x23);
+        bsr.put((byte)0x21); bsr.put((byte)0x23); bsr.put((byte)0x22); bsr.put((byte)0x23); bsr.put((byte)0x23); bsr.put((byte)0x23);
+        bsr.put((byte)0x24); bsr.put((byte)0x23); bsr.put((byte)0x25); bsr.put((byte)0x23); bsr.put((byte)0x26); bsr.put((byte)0x23);
+        bsr.put((byte)0x27); bsr.put((byte)0x23); bsr.put((byte)0x28); bsr.put((byte)0x23); bsr.put((byte)0x29); bsr.put((byte)0x23);
+        bsr.put((byte)0x2A); bsr.put((byte)0x23); bsr.put((byte)0x2B); bsr.put((byte)0x0F); bsr.put((byte)0x2F); bsr.put((byte)0x2A);
+        
+        //test from Lotus
+        //Some of the Lotus ISCII code points have been changed or commented out.
+        us.put((char)0x0061); us.put((char)0x0915); us.put((char)0x000D); us.put((char)0x000A); us.put((char)0x0996); us.put((char)0x0043);
+        us.put((char)0x0930); us.put((char)0x094D); us.put((char)0x200D); us.put((char)0x0901); us.put((char)0x000D); us.put((char)0x000A);
+        us.put((char)0x0905); us.put((char)0x0985); us.put((char)0x0043); us.put((char)0x0915); us.put((char)0x0921); us.put((char)0x002B);
+        us.put((char)0x095F); 
+        bs.put((byte)0x61); bs.put((byte)0xB3);
+        bs.put((byte)0x0D); bs.put((byte)0x0A); 
+        bs.put((byte)0xEF); bs.put((byte)0x42); 
+        bs.put((byte)0xEF); bs.put((byte)0x43); bs.put((byte)0xB4); bs.put((byte)0x43);
+        bs.put((byte)0xEF); bs.put((byte)0x42); bs.put((byte)0xCF); bs.put((byte)0xE8); bs.put((byte)0xE9); bs.put((byte)0xA1); bs.put((byte)0x0D); bs.put((byte)0x0A); bs.put((byte)0xEF); bs.put((byte)0x42);
+        bs.put((byte)0xA4); bs.put((byte)0xEF); bs.put((byte)0x43); bs.put((byte)0xA4); bs.put((byte)0x43); bs.put((byte)0xEF);
+        bs.put((byte)0x42); bs.put((byte)0xB3); bs.put((byte)0xBF); bs.put((byte)0x2B);
+        bs.put((byte)0xCE);
+        bsr.put((byte)0x61); bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xEF); bsr.put((byte)0x30); bsr.put((byte)0xB3);
+        bsr.put((byte)0x0D); bsr.put((byte)0x0A); bsr.put((byte)0xEF); bsr.put((byte)0x43); bsr.put((byte)0xB4); bsr.put((byte)0x43);
+        bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xCF); bsr.put((byte)0xE8); bsr.put((byte)0xD9); bsr.put((byte)0xEF);
+        bsr.put((byte)0x42); bsr.put((byte)0xA1); bsr.put((byte)0x0D); bsr.put((byte)0x0A); bsr.put((byte)0xEF); bsr.put((byte)0x42);
+        bsr.put((byte)0xA4); bsr.put((byte)0xEF); bsr.put((byte)0x43); bsr.put((byte)0xA4); bsr.put((byte)0x43); bsr.put((byte)0xEF);
+        bsr.put((byte)0x42); bsr.put((byte)0xB3); bsr.put((byte)0xBF); bsr.put((byte)0x2B); bsr.put((byte)0xEF); bsr.put((byte)0x42);
+        bsr.put((byte)0xCE);
+        //end of test from Lotus
+        
+        //tamil range
+        us.put((char)0x0B86); us.put((char)0x0B87); us.put((char)0x0B88);
+        bs.put((byte)0xEF); bs.put((byte)0x44); bs.put((byte)0xA5); bs.put((byte)0xA6); bs.put((byte)0xA7);
+        bsr.put((byte)0xEF); bsr.put((byte)0x44); bsr.put((byte)0xA5); bsr.put((byte)0xA6); bsr.put((byte)0xA7);
+        
+        //telugu range
+        us.put((char)0x0C05); us.put((char)0x0C02); us.put((char)0x0C03); us.put((char)0x0C31);
+        bs.put((byte)0xEF); bs.put((byte)0x45); bs.put((byte)0xA4); bs.put((byte)0xA2); bs.put((byte)0xA3); bs.put((byte)0xD0);
+        bsr.put((byte)0xEF); bsr.put((byte)0x45); bsr.put((byte)0xA4); bsr.put((byte)0xA2); bsr.put((byte)0xA3); bsr.put((byte)0xD0);
+        
+        //kannada range
+        us.put((char)0x0C85); us.put((char)0x0C82); us.put((char)0x0C83);
+        bs.put((byte)0xEF); bs.put((byte)0x48); bs.put((byte)0xA4); bs.put((byte)0xA2); bs.put((byte)0xA3);
+        bsr.put((byte)0xEF); bsr.put((byte)0x48); bsr.put((byte)0xA4); bsr.put((byte)0xA2); bsr.put((byte)0xA3);  
+        
+        //test Abbr sign and Anudatta
+        us.put((char)0x0970); us.put((char)0x0952); us.put((char)0x0960); us.put((char)0x0944); us.put((char)0x090C); us.put((char)0x0962);
+        us.put((char)0x0961); us.put((char)0x0963); us.put((char)0x0950); us.put((char)0x093D); us.put((char)0x0958); us.put((char)0x0959);
+        us.put((char)0x095A); us.put((char)0x095B); us.put((char)0x095C); us.put((char)0x095D); us.put((char)0x095E); us.put((char)0x0020);
+        us.put((char)0x094D); us.put((char)0x0930); us.put((char)0x0000); us.put((char)0x00A0); 
+        bs.put((byte)0xEF); bs.put((byte)0x42); bs.put((byte)0xF0); bs.put((byte)0xBF); bs.put((byte)0xF0); bs.put((byte)0xB8);
+        bs.put((byte)0xAA); bs.put((byte)0xE9); bs.put((byte)0xDF); bs.put((byte)0xE9); bs.put((byte)0xA6); bs.put((byte)0xE9);
+        bs.put((byte)0xDB); bs.put((byte)0xE9); bs.put((byte)0xA7); bs.put((byte)0xE9); bs.put((byte)0xDC); bs.put((byte)0xE9);
+        bs.put((byte)0xA1); bs.put((byte)0xE9); bs.put((byte)0xEA); bs.put((byte)0xE9); bs.put((byte)0xB3); bs.put((byte)0xE9);
+        bs.put((byte)0xB4); bs.put((byte)0xE9); bs.put((byte)0xB5); bs.put((byte)0xE9); bs.put((byte)0xBA); bs.put((byte)0xE9);
+        bs.put((byte)0xBF); bs.put((byte)0xE9); bs.put((byte)0xC0); bs.put((byte)0xE9); bs.put((byte)0xC9); bs.put((byte)0xE9);
+        bs.put((byte)0x20); bs.put((byte)0xE8); bs.put((byte)0xCF); bs.put((byte)0x00); bs.put((byte)0xA0); 
+        //bs.put((byte)0xEF); bs.put((byte)0x30); 
+        bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xF0); bsr.put((byte)0xBF); bsr.put((byte)0xF0); bsr.put((byte)0xB8);
+        bsr.put((byte)0xAA); bsr.put((byte)0xE9); bsr.put((byte)0xDF); bsr.put((byte)0xE9); bsr.put((byte)0xA6); bsr.put((byte)0xE9);
+        bsr.put((byte)0xDB); bsr.put((byte)0xE9); bsr.put((byte)0xA7); bsr.put((byte)0xE9); bsr.put((byte)0xDC); bsr.put((byte)0xE9);
+        bsr.put((byte)0xA1); bsr.put((byte)0xE9); bsr.put((byte)0xEA); bsr.put((byte)0xE9); bsr.put((byte)0xB3); bsr.put((byte)0xE9);
+        bsr.put((byte)0xB4); bsr.put((byte)0xE9); bsr.put((byte)0xB5); bsr.put((byte)0xE9); bsr.put((byte)0xBA); bsr.put((byte)0xE9);
+        bsr.put((byte)0xBF); bsr.put((byte)0xE9); bsr.put((byte)0xC0); bsr.put((byte)0xE9); bsr.put((byte)0xC9); bsr.put((byte)0xE9);
+        bsr.put((byte)0xD9); bsr.put((byte)0xE8); bsr.put((byte)0xCF); bsr.put((byte)0x00); bsr.put((byte)0xA0);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        bsr.limit(bsr.position());
+        bsr.position(0);
+        
+        //round trip test
+        try {
+            smBufDecode(decoder, "ISCII-part1", bsr, us, false, true);
+            smBufEncode(encoder, "ISCII-part2", us, bs); 
+            smBufDecode(decoder, "ISCII-part3", bs, us, false, true);
+        } catch (Exception ex) {
+            errln("ISCII round trip test failed.");
+        }
+        
+        //Test new characters in the ISCII charset
+        encoder = provider.charsetForName("ISCII,version=0").newEncoder();
+        decoder = provider.charsetForName("ISCII,version=0").newDecoder();
+        char u_pts[] = {
+                /* DEV */ (char)0x0904,
+                /* PNJ */ (char)0x0A01, (char)0x0A03, (char)0x0A33, (char)0x0A70
+            };
+        byte b_pts[] = {
+                                (byte)0xef, (byte)0x42,
+                /* DEV */ (byte)0xa4, (byte)0xe0,
+                /* PNJ */ (byte)0xef, (byte)0x4b, (byte)0xa1, (byte)0xa3, (byte)0xd2, (byte)0xf0, (byte)0xbf
+            };
+        us = CharBuffer.allocate(u_pts.length);
+        bs = ByteBuffer.allocate(b_pts.length);
+        us.put(u_pts);
+        bs.put(b_pts);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-update", bs, us, true, true);         
+            bs.position(0);
+            us.position(0);
+            smBufEncode(encoder, "ISCII-update", us, bs, true, true);
+        } catch (Exception ex) {
+            errln("Error occurred while encoding/decoding ISCII with the new characters.");
+        }
+        
+        //The rest of the code in this method is to provide better code coverage
+        CharBuffer ccus = CharBuffer.allocate(0x10);
+        ByteBuffer ccbs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage code
+        //test overflow buffer
+        ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-CC-DE-1", ccbs, ccus, true, false);
+            errln("Exception while decoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test atr overflow buffer
+        ccbs.put((byte)0xEF); ccbs.put((byte)0x40); ccbs.put((byte)0xEF); ccbs.put((byte)0x20);
+        ccus.put((char)0x00);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-CC-DE-2", ccbs, ccus, true, false);
+            errln("Exception while decoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        //end of charset decoder code coverage code
+        
+        ccbs.clear();
+        ccus.clear();
+      
+        //start of charset encoder code coverage code
+        //test ascii overflow buffer
+        ccus.put((char)0x41);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(0);
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-1", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test ascii overflow buffer
+        ccus.put((char)0x0A); ccus.put((char)0x0043);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-2", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test surrogate malform
+        ccus.put((char)0x06E3);
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-3", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test surrogate malform
+        ccus.put((char)0xD801); ccus.put((char)0xDD01);
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-4", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test trail surrogate malform
+        ccus.put((char)0xDD01); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-5", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test lead surrogates malform
+        ccus.put((char)0xD801); ccus.put((char)0xD802); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-6", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccus.clear();
+        ccbs.clear();
+        
+        //test overflow buffer
+        ccus.put((char)0x0901); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        cs = provider.charsetForName("ISCII,version=0");
+        encoder = cs.newEncoder();
+        
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-7", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        //end of charset encoder code coverage code
+    }
+    
+    //Test for the IMAP Charset
+    public void TestCharsetIMAP() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("IMAP-mailbox-name");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x20);
+        ByteBuffer bs = ByteBuffer.allocate(0x20);
+        
+        us.put((char)0x00A3); us.put((char)0x2020); us.put((char)0x41);
+        
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x4B); bs.put((byte)0x4D); bs.put((byte)0x67); bs.put((byte)0x49);
+        bs.put((byte)0x41); bs.put((byte)0x2D); bs.put((byte)0x41);
+        
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+
+        smBufDecode(decoder, "IMAP", bs, us);
+        smBufEncode(encoder, "IMAP", us, bs);
+        
+        //the rest of the code in this method is for better code coverage
+        us.clear();
+        bs.clear();
+        
+        //start of charset encoder code coverage
+        //test buffer overflow
+        us.put((char)0x0026); us.put((char)0x17A9); 
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-1", us, bs, true, false);
+            errln("Exception while encoding IMAP (1) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-2", us, bs, true, false);
+            errln("Exception while encoding IMAP (2) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);   
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-3", us, bs, true, false);
+            errln("Exception while encoding IMAP (3) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);      
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-4", us, bs, true, false);
+            errln("Exception while encoding IMAP (4) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  
+        bs.put((byte)0x00); bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-5", us, bs, true, false);
+            errln("Exception while encoding IMAP (5) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955); us.put((char)0x0970);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-6", us, bs, true, false);
+            errln("Exception while encoding IMAP (6) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-7", us, bs, true, true);
+            errln("Exception while encoding IMAP (7) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test flushing
+        us.put((char)0x17A9); us.put((char)0x0941); 
+        bs.put((byte)0x26); bs.put((byte)0x46); bs.put((byte)0x36); bs.put((byte)0x6b);  bs.put((byte)0x4a); bs.put((byte)0x51);
+        bs.put((byte)0x51); bs.put((byte)0x2d);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-8", us, bs, true, true);
+        } catch(Exception ex) {
+            errln("Exception while encoding IMAP (8) should not have been thrown.");
+        }
+        
+        us = CharBuffer.allocate(0x08);
+        bs = ByteBuffer.allocate(0x08);
+        
+        //test flushing buffer overflow
+        us.put((char)0x0061);
+        bs.put((byte)0x61); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-9", us, bs, true, true);
+        } catch(Exception ex) {
+            errln("Exception while encoding IMAP (9) should not have been thrown.");
+        }
+        //end of charset encoder code coverage
+        
+        us = CharBuffer.allocate(0x10);
+        bs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage
+        //test malform case 2
+        us.put((char)0x0000); us.put((char)0x0000); 
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x43); bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-1", bs, us, true, false);
+            errln("Exception while decoding IMAP (1) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform case 5
+        us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000);
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); 
+        bs.put((byte)0x41); bs.put((byte)0x49); bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-2", bs, us, true, false);
+            errln("Exception while decoding IMAP (2) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform case 7
+        us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000);
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); 
+        bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x42); 
+        bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-3", bs, us, true, false);
+            errln("Exception while decoding IMAP (3) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        //end of charset decoder coder coverage  
+    }
+    
+    //Test for charset UTF32LE to provide better code coverage
+    public void TestCharsetUTF32LE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-32LE");        
+        CharsetEncoder encoder = cs.newEncoder();
+        //CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        
+        //test malform surrogate
+        us.put((char)0xD901);
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-1", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform surrogate
+        us.put((char)0xD901); us.put((char)0xD902);
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isError() && !result.isOverflow()) {
+            errln("Error while encoding UTF32LE (2) should have occurred.");
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test overflow trail surrogate
+        us.put((char)0xDD01); us.put((char)0xDD0E); us.put((char)0xDD0E);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isError() && !result.isOverflow()) {
+            errln("Error while encoding UTF32LE (3) should have occurred.");
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform lead surrogate
+        us.put((char)0xD90D); us.put((char)0xD90E);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-4", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test overflow buffer
+        us.put((char)0x0061);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-5", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform trail surrogate
+        us.put((char)0xDD01);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-6", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (6) should have been thrown.");
+        } catch (Exception ex) {
+        }
+    }
+
+    //Test for charset UTF16LE to provide better code coverage
+    public void TestCharsetUTF16LE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-16LE");        
+        CharsetEncoder encoder = cs.newEncoder();
+        //CharsetDecoder decoder = cs.newDecoder();
+        
+        // Test for malform and change fromUChar32 for next call
+        char u_pts1[] = {
+                (char)0xD805, 
+                (char)0xDC01, (char)0xDC02, (char)0xDC03,
+                (char)0xD901, (char)0xD902
+                };
+        byte b_pts1[] = {
+                (byte)0x00, 
+                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
+                };
+        
+        CharBuffer us = CharBuffer.allocate(u_pts1.length);
+        ByteBuffer bs = ByteBuffer.allocate(b_pts1.length);
+        
+        us.put(u_pts1);
+        bs.put(b_pts1);
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+       
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            // LE should not output BOM, so this should be malformed 
+            errln("Malformed while encoding UTF-16LE (1) should have occured.");
+        }
+        
+        // Test for malform surrogate from previous buffer
+        us.limit(4);
+        us.position(1);
+        bs.limit(7);
+        bs.position(1);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            errln("Error while encoding UTF-16LE (2) should have occured.");
+        }       
+        
+        // Test for malform trail surrogate
+        encoder.reset();
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+       
+        result = encoder.encode(us, bs, true);    
+        
+        us.limit(6);
+        us.position(4);
+        bs.limit(4);
+        bs.position(1);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            errln("Error while encoding UTF-16LE (3) should have occured.");
+        }          
+    }
+    
+    //provide better code coverage for the generic charset UTF32
+    public void TestCharsetUTF32() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-32");        
+        CharsetDecoder decoder = cs.newDecoder();
+        CharsetEncoder encoder = cs.newEncoder();
+        
+        //start of decoding code coverage
+        char us_array[] = {
+                0x0000, 0x0000, 0x0000, 0x0000,
+            };
+        
+        byte bs_array1[] = {
+                (byte)0x00, (byte)0x00, (byte)0xFE, (byte)0xFF,
+                (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x43,
+                (byte)0xFF, (byte)0xFE, (byte)0x00, (byte)0x00,
+                (byte)0x43, (byte)0x04, (byte)0x00, (byte)0x00,
+            };
+        
+        byte bs_array2[] = {
+                (byte)0xFF, (byte)0xFE, (byte)0x00, (byte)0x00,
+                (byte)0x43, (byte)0x04, (byte)0x00, (byte)0x00,
+            };
+        
+        CharBuffer us = CharBuffer.allocate(us_array.length);
+        ByteBuffer bs = ByteBuffer.allocate(bs_array1.length);
+        
+        us.put(us_array);
+        bs.put(bs_array1);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+            
+        try {
+            smBufDecode(decoder, "UTF32-DE-1", bs, us, true, false);
+            errln("Malform exception while decoding UTF32 charset (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        decoder = cs.newDecoder();
+        
+        bs = ByteBuffer.allocate(bs_array2.length);
+        bs.put(bs_array2);
+        
+        us.limit(4);
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+            
+        try {
+            smBufDecode(decoder, "UTF32-DE-2", bs, us, true, false);
+        } catch (Exception ex) {
+            // should recognize little endian BOM
+            errln("Exception while decoding UTF32 charset (2) should not have been thrown.");
+        }
+        
+        //Test malform exception
+        bs.clear();
+        us.clear();
+        
+        bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF32-DE-3", bs, us, true, false);
+            errln("Malform exception while decoding UTF32 charset (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        //Test BOM testing
+        bs.clear();
+        us.clear();
+        
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFF); bs.put((byte)0xFE); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF32-DE-4", bs, us, true, false);
+        } catch (Exception ex) {
+            // should recognize big endian BOM
+            errln("Exception while decoding UTF32 charset (4) should not have been thrown.");
+        }
+        //end of decoding code coverage
+        
+        //start of encoding code coverage
+        us = CharBuffer.allocate(0x10);
+        bs = ByteBuffer.allocate(0x10);
+        
+        //test wite BOM overflow error
+        us.put((char)0xDC01);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        // must try to output BOM first for UTF-32 (not UTF-32BE or UTF-32LE)
+        if (!result.isOverflow()) {
+            errln("Buffer overflow error while encoding UTF32 charset (1) should have occurred."); 
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate and store value in fromChar32
+        us.put((char)0xD801); us.put((char)0xD802);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malformed error while encoding UTF32 charset (2) should have occurred.");
+        }    
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        us.put((char)0x0000); us.put((char)0xD902);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error while encoding UTF32 charset (3) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        encoder.reset();
+        us.put((char)0xD801);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malform error while encoding UTF32 charset (4) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow surrogate
+        us.put((char)0x0000); us.put((char)0xDDE1); us.put((char)0xD915); us.put((char)0xDDF2);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); 
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error while encoding UTF32 charset (5) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        encoder.reset();
+        us.put((char)0xDDE1);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malform error while encoding UTF32 charset (6) should have occurred.");
+        } 
+        //end of encoding code coverage
+    }
+    
+    //this method provides better code coverage decoding UTF32 LE/BE
+    public void TestDecodeUTF32LEBE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder;
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        //decode UTF32LE
+        decoder = provider.charsetForName("UTF-32LE").newDecoder();
+        //test overflow buffer
+        bs.put((byte)0x41); bs.put((byte)0xFF); bs.put((byte)0x01); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32LE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        // test overflow buffer handling in CharsetDecoderICU
+        bs.position(0);
+        us.position(0);
+        decoder.reset();
+        result = decoder.decode(bs, us, true);
+        if (result.isOverflow()) {
+            result = decoder.decode(bs, us, true);
+            if (!result.isOverflow()) {
+                errln("Overflow buffer error while decoding UTF32LE should have occurred.");
+            }
+        } else {
+            errln("Overflow buffer error while decoding UTF32LE should have occurred.");
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0x02); bs.put((byte)0xD9); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32LE (2) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0xFF); bs.put((byte)0xDF); bs.put((byte)0x10); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush in order to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32LE (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x02); bs.put((byte)0xD9); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32LE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test overflow buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0xDD); bs.put((byte)0xFF); bs.put((byte)0x10); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32LE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        //end of decode UTF32LE
+        
+        bs.clear();
+        us.clear();
+        
+        //decode UTF32BE
+        decoder = provider.charsetForName("UTF-32BE").newDecoder();
+        //test overflow buffer
+        bs.put((byte)0x00); bs.put((byte)0x01); bs.put((byte)0xFF); bs.put((byte)0x41);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32BE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xD9); bs.put((byte)0x02);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32BE (2) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF);
+        bs.put((byte)0x10); bs.put((byte)0xFF); bs.put((byte)0xDF);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32BE (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test overflow buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF);
+        bs.put((byte)0x00); bs.put((byte)0x10); bs.put((byte)0xFF); bs.put((byte)0xDD);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32BE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32BE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        //end of decode UTF32BE
+    }
+    
+    //provide better code coverage for UTF8
+    public void TestCharsetUTF8() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("UTF-8").newDecoder();
+        CharsetEncoder encoder = provider.charsetForName("UTF-8").newEncoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        ByteBuffer bs2;
+        CharBuffer us2;
+        int limit_us;
+        int limit_bs;
+        
+        //encode and decode using read only buffer
+        encoder.reset();
+        decoder.reset();
+        us.put((char)0x0041); us.put((char)0x0081); us.put((char)0xEF65); us.put((char)0xD902);
+        bs.put((byte)0x41); bs.put((byte)0xc2); bs.put((byte)0x81); bs.put((byte)0xee); bs.put((byte)0xbd); bs.put((byte)0xa5);
+        bs.put((byte)0x00); 
+        limit_us = us.position();
+        limit_bs = bs.position();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(limit_bs);
+        bs.position(0);
+        bs2 = bs.asReadOnlyBuffer();
+        us2 = us.asReadOnlyBuffer();
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isUnderflow() || !equals(us, us2)) {
+            errln("Error while decoding UTF-8 (1) should not have occured.");
+        }
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(limit_bs);
+        bs.position(0);
+        
+        result = encoder.encode(us2, bs, true); 
+        if (!result.isUnderflow() || !equals(bs, bs2)) {
+            errln("Error while encoding UTF-8 (1) should not have occured.");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer while encoding
+        //readonly buffer
+        encoder.reset();
+        us.put((char)0x0081); us.put((char)0xEF65); 
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        limit_us = us.position();
+        us2 = us.asReadOnlyBuffer();
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (2).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(1);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (3).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(1);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (4).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (5).");
+        }   
+        
+        //not readonly buffer
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (6).");
+        }
+        
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (7).");
+        }
+        
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(1);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (8).");
+        }   
+        
+        encoder.reset();
+        
+        us.limit(limit_us + 1);
+        us.position(1);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (9).");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test encoding 4 byte characters
+        encoder.reset();
+        us.put((char)0xD902); us.put((char)0xDD02); us.put((char)0x0041);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        limit_us = us.position();
+        us2 = us.asReadOnlyBuffer();
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (10).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (11).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (12).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(4);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (13).");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //decoding code coverage
+        //test malform error
+        decoder.reset();
+        bs.put((byte)0xC0); bs.put((byte)0xC0);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        
+        us.limit(1);
+        us.position(0);
+        bs2.limit(1);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        result = decoder.flush(us);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (1).");
+        }    
+        
+        us.limit(1);
+        us.position(0);
+        bs2.limit(1);
+        bs2.position(0);
+        
+        decoder.reset();
+        
+        result = decoder.decode(bs2, us, true);
+        us.limit(1);
+        us.position(0);
+        bs2.limit(2);
+        bs2.position(0);
+        result = decoder.decode(bs2, us, true);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (2).");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer
+        bs.put((byte)0x01); bs.put((byte)0x41);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(2);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (3).");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform string
+        decoder.reset();
+        bs.put((byte)0xF5); bs.put((byte)0xB4); bs.put((byte)0x8A); bs.put((byte)0x8C);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(4);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (4).");
+        }
+        
+        bs.clear();
+        
+        //test overflow
+        decoder.reset();
+        bs.put((byte)0xF3); bs.put((byte)0xB4); bs.put((byte)0x8A); bs.put((byte)0x8C);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(4);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (5).");
+        }
+        
+        //test overflow
+        decoder.reset();
+        us.limit(2);
+        us.position(0);
+        bs2.limit(5);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (5).");
+        }
+        
+        //test overflow
+        decoder.reset();
+        us.limit(1);
+        us.position(0);
+        bs.limit(5);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (6).");
+        }
+      
+        bs.clear();
+        
+        //test overflow
+        decoder.reset();
+        bs.put((byte)0x41); bs.put((byte)0x42);
+        us.limit(1);
+        us.position(0);
+        bs.limit(2);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (7).");
+        }
+        
+    }
+    
+    //provide better code coverage for Charset UTF16
+    public void TestCharsetUTF16() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("UTF-16").newDecoder();
+        CharsetEncoder encoder = provider.charsetForName("UTF-16").newEncoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        //test flush buffer and malform string
+        bs.put((byte)0xFF); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        result = decoder.flush(us);
+        if (!result.isMalformed()) {
+            errln("Malform error while decoding UTF-16 should have occurred.");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        us.put((char)0xD902); us.put((char)0xDD01); us.put((char)0x0041);
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(4);
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        us.limit(3);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while encoding UTF-16 should have occurred.");
+        }   
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer
+        decoder.reset();
+        decoder = provider.charsetForName("UTF-16BE").newDecoder();
+        
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x41);
+        
+        us.limit(0);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding UTF-16 should have occurred.");
+        }        
+    }
+    
+    //provide better code coverage for Charset ISO-2022-KR
+    public void TestCharsetISO2022KR() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("ISO-2022-KR").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x43, (byte)0x41, (byte)0x42,
+        };
+        char chararray[] = {
+                (char)0x0041
+        };
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding ISO-2022-KR should have occurred.");
+        }
+        
+        /* This is part of the ambiguous converter test in ICU4C and is used here to provide
+         * better code coverage.
+         */
+        byte [] bytearray2 = {
+                0x61, 0x5b, 0x5c
+        };
+        
+        bb = ByteBuffer.wrap(bytearray2);
+        cb = CharBuffer.allocate(20);
+        
+        result = decoder.decode(bb, cb, true);
+        if (!result.isMalformed()) {
+            errln("Malformed error while decoding ISO-2022-KR should have occurred.");
+        }
+    }
+    
+    //provide better code coverage for Charset ISO-2022-JP
+    public void TestCharsetISO2022JP() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("ISO-2022-JP-2").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x24, (byte)0x28, (byte)0x44, (byte)0x0A, (byte)0x41,
+        };
+        char chararray[] = {
+                (char)0x000A
+        };
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding ISO-2022-KR should have occurred.");
+        }
+    }
+    
+    //provide better code coverage for Charset ASCII
+    public void TestCharsetASCII() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("US-ASCII").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x41
+        };
+        char chararray[] = {
+                (char)0x0041
+        };
+        
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        result = decoder.flush(cb);
+        
+        if (result.isError()) {
+            errln("Error occurred while decoding US-ASCII.");
+        }
+    }
+    
+    // provide better code coverage for Charset Callbacks
+    /* Different aspects of callbacks are being tested including using different context available */
+    public void TestCharsetCallbacks() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetEncoder encoder = provider.charsetForName("iso-2022-jp").newEncoder();
+        CharsetDecoder decoder = provider.charsetForName("iso-2022-jp").newDecoder();
+        
+        String context3[] = {
+                "i",
+                "J"
+        };
+        
+        // Testing encoder escape callback
+        String context1[] = {
+                "J",
+                "C",
+                "D",
+                null
+        };
+        char chararray[] = {
+                (char)0xd122
+        };
+        ByteBuffer bb = ByteBuffer.allocate(20);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.OVERFLOW, CharsetCallback.FROM_U_CALLBACK_ESCAPE, null);  // This callback is not valid.
+        for (int i = 0; i < context1.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_ESCAPE, context1[i]); // This callback is valid.
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing encoder skip callback
+        for (int i = 0; i < context3.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_SKIP, context3[i]); 
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError() && i == 0) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing encoder sub callback
+        for (int i = 0; i < context3.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_SUBSTITUTE, context3[i]); 
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError() && i == 0) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing decoder escape callback
+        String context2[] = {
+                "X",
+                "C",
+                "D",
+                null
+        };
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x2e, (byte)0x43
+        };
+        bb = ByteBuffer.wrap(bytearray);
+        cb = CharBuffer.allocate(20);
+        
+        ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.OVERFLOW, CharsetCallback.TO_U_CALLBACK_ESCAPE, null);  // This callback is not valid.
+        for (int i = 0; i < context2.length; i++) {
+            decoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), CharsetCallback.TO_U_CALLBACK_ESCAPE, context2[i]); // This callback is valid.
+            
+            result = decoder.decode(bb, cb, true);
+            if (result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP decoder.");
+            }
+        }
+        
+        // Testing decoder skip callback
+        for (int i = 0; i < context3.length; i++) {
+            decoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), CharsetCallback.TO_U_CALLBACK_SKIP, context3[i]);
+            result = decoder.decode(bb, cb, true);
+            if (!result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP decoder should have occurred.");
+            }
+        }
+    }
+    
+    // Testing invalid input exceptions
+    public void TestInvalidInput() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset charset = provider.charsetForName("iso-2022-jp");
+        CharsetEncoder encoder = charset.newEncoder();
+        CharsetDecoder decoder = charset.newDecoder();
+        
+        try {
+            encoder.encode(CharBuffer.allocate(10), null, true);
+            errln("Illegal argument exception should have been thrown due to null target.");
+        } catch (Exception ex) {
+        }
+        
+        try {
+            decoder.decode(ByteBuffer.allocate(10), null, true);
+            errln("Illegal argument exception should have been thrown due to null target.");
+        } catch (Exception ex) {
+        }
+    }
+    
+    // Test java canonical names
+    public void TestGetICUJavaCanonicalNames() {
+        // Ambiguous charset name.
+        String javaCName = CharsetProviderICU.getJavaCanonicalName("windows-1250");
+        String icuCName = CharsetProviderICU.getICUCanonicalName("Windows-1250");
+        if (javaCName == null || icuCName == null) {
+            errln("Unable to get Java or ICU canonical name from ambiguous alias");
+        }
+        
+    }
+    
+    // Port over from ICU4C for test conversion tables (mbcs version 5.x)
+    // Provide better code coverage in CharsetMBCS, CharsetDecoderICU, and CharsetEncoderICU.
+    public void TestCharsetTestData() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        String charsetName = "test4";
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset charset = ((CharsetProviderICU)provider).charsetForName(charsetName, "com/ibm/icu/dev/data/testdata",
+                            this.getClass().getClassLoader());
+        CharsetEncoder encoder = charset.newEncoder();
+        CharsetDecoder decoder = charset.newDecoder();
+        
+        byte bytearray[] = {
+                0x01, 0x02, 0x03, 0x0a,
+                0x01, 0x02, 0x03, 0x0b,
+                0x01, 0x02, 0x03, 0x0d,
+        };
+        
+        // set the callback for overflow errors
+        ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.OVERFLOW, CharsetCallback.TO_U_CALLBACK_STOP, null);
+        
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.allocate(10);
+        
+        bb.limit(4);
+        cb.limit(1); // Overflow should occur and is expected
+        result = decoder.decode(bb, cb, false);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        bb.limit(8);
+        result = decoder.decode(bb, cb, false);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        bb.limit(12);
+        result = decoder.decode(bb, cb, true);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        char chararray[] = {
+                0xDBC4,0xDE34,0xD900,0xDC05,/* \U00101234\U00050005 */
+                0xD940,     /* first half of \U00060006 or \U00060007 */
+                0xDC07/* second half of \U00060007 */
+        };
+        
+        cb = CharBuffer.wrap(chararray);
+        bb = ByteBuffer.allocate(10);
+        
+        bb.limit(2);
+        cb.limit(4);
+        result = encoder.encode(cb, bb, false);
+        if (result.isError()) {
+            errln("Error occurred while encoding: " + charsetName + " with error: " + result);
+        }
+        cb.limit(5);
+        result = encoder.encode(cb, bb, false);
+        if (result.isError()) {
+            errln("Error occurred while encoding: " + charsetName + " with error: " + result);
+        }
+        cb.limit(6);
+        result = encoder.encode(cb, bb, true);
+        if (!result.isError()) {
+            errln("Error should have occurred while encoding: " + charsetName);
+        }
+    }
+    
+    /* Round trip test of SCSU converter*/
+    public void TestSCSUConverter(){
+        byte allFeaturesSCSU[]={
+            0x41,(byte) 0xdf, 0x12,(byte) 0x81, 0x03, 0x5f, 0x10, (byte)0xdf, 0x1b, 0x03,
+            (byte)0xdf, 0x1c,(byte) 0x88,(byte) 0x80, 0x0b, (byte)0xbf,(byte) 0xff,(byte) 0xff, 0x0d, 0x0a,
+            0x41, 0x10, (byte)0xdf, 0x12, (byte)0x81, 0x03, 0x5f, 0x10, (byte)0xdf, 0x13,
+            (byte)0xdf, 0x14,(byte) 0x80, 0x15, (byte)0xff 
+        }; 
+
+        char allFeaturesUTF16[]={
+            0x0041, 0x00df, 0x0401, 0x015f, 0x00df, 0x01df, 0xf000, 0xdbff,
+            0xdfff, 0x000d, 0x000a, 0x0041, 0x00df, 0x0401, 0x015f, 0x00df,
+            0x01df, 0xf000, 0xdbff, 0xdfff
+        };
+
+        
+        char germanUTF16[]={
+            0x00d6, 0x006c, 0x0020, 0x0066, 0x006c, 0x0069, 0x0065, 0x00df, 0x0074
+        };
+
+        byte germanSCSU[]={
+            (byte)0xd6, 0x6c, 0x20, 0x66, 0x6c, 0x69, 0x65,(byte) 0xdf, 0x74
+        };
+
+       char russianUTF16[]={
+            0x041c, 0x043e, 0x0441, 0x043a, 0x0432, 0x0430
+        };
+
+       byte russianSCSU[]={
+            0x12, (byte)0x9c,(byte)0xbe,(byte) 0xc1, (byte)0xba, (byte)0xb2, (byte)0xb0
+        };
+
+       char japaneseUTF16[]={
+            0x3000, 0x266a, 0x30ea, 0x30f3, 0x30b4, 0x53ef, 0x611b,
+            0x3044, 0x3084, 0x53ef, 0x611b, 0x3044, 0x3084, 0x30ea, 0x30f3,
+            0x30b4, 0x3002, 0x534a, 0x4e16, 0x7d00, 0x3082, 0x524d, 0x306b,
+            0x6d41, 0x884c, 0x3057, 0x305f, 0x300c, 0x30ea, 0x30f3, 0x30b4,
+            0x306e, 0x6b4c, 0x300d, 0x304c, 0x3074, 0x3063, 0x305f, 0x308a,
+            0x3059, 0x308b, 0x304b, 0x3082, 0x3057, 0x308c, 0x306a, 0x3044,
+            0x3002, 0x7c73, 0x30a2, 0x30c3, 0x30d7, 0x30eb, 0x30b3, 0x30f3,
+            0x30d4, 0x30e5, 0x30fc, 0x30bf, 0x793e, 0x306e, 0x30d1, 0x30bd,
+            0x30b3, 0x30f3, 0x300c, 0x30de, 0x30c3, 0x30af, 0xff08, 0x30de,
+            0x30c3, 0x30ad, 0x30f3, 0x30c8, 0x30c3, 0x30b7, 0x30e5, 0xff09,
+            0x300d, 0x3092, 0x3001, 0x3053, 0x3088, 0x306a, 0x304f, 0x611b,
+            0x3059, 0x308b, 0x4eba, 0x305f, 0x3061, 0x306e, 0x3053, 0x3068,
+            0x3060, 0x3002, 0x300c, 0x30a2, 0x30c3, 0x30d7, 0x30eb, 0x4fe1,
+            0x8005, 0x300d, 0x306a, 0x3093, 0x3066, 0x8a00, 0x3044, 0x65b9,
+            0x307e, 0x3067, 0x3042, 0x308b, 0x3002
+        };
+
+        // SCSUEncoder produces a slightly longer result (179B vs. 178B) because of one different choice:
+         //it uses an SQn once where a longer look-ahead could have shown that SCn is more efficient 
+        byte japaneseSCSU[]={
+            0x08, 0x00, 0x1b, 0x4c,(byte) 0xea, 0x16, (byte)0xca, (byte)0xd3,(byte) 0x94, 0x0f, 0x53, (byte)0xef, 0x61, 0x1b, (byte)0xe5,(byte) 0x84,
+            (byte)0xc4, 0x0f, (byte)0x53,(byte) 0xef, 0x61, 0x1b, (byte)0xe5, (byte)0x84, (byte)0xc4, 0x16, (byte)0xca, (byte)0xd3, (byte)0x94, 0x08, 0x02, 0x0f,
+            0x53, 0x4a, 0x4e, 0x16, 0x7d, 0x00, 0x30, (byte)0x82, 0x52, 0x4d, 0x30, 0x6b, 0x6d, 0x41,(byte) 0x88, 0x4c,
+            (byte) 0xe5,(byte) 0x97, (byte)0x9f, 0x08, 0x0c, 0x16,(byte) 0xca,(byte) 0xd3, (byte)0x94, 0x15, (byte)0xae, 0x0e, 0x6b, 0x4c, 0x08, 0x0d,
+            (byte) 0x8c, (byte)0xb4, (byte)0xa3,(byte) 0x9f,(byte) 0xca, (byte)0x99, (byte)0xcb,(byte) 0x8b, (byte)0xc2,(byte) 0x97,(byte) 0xcc,(byte) 0xaa,(byte) 0x84, 0x08, 0x02, 0x0e,
+            0x7c, 0x73, (byte)0xe2, 0x16, (byte)0xa3,(byte) 0xb7, (byte)0xcb, (byte)0x93, (byte)0xd3,(byte) 0xb4,(byte) 0xc5, (byte)0xdc, (byte)0x9f, 0x0e, 0x79, 0x3e,
+            0x06, (byte)0xae, (byte)0xb1, (byte)0x9d,(byte) 0x93, (byte)0xd3, 0x08, 0x0c, (byte)0xbe,(byte) 0xa3, (byte)0x8f, 0x08,(byte) 0x88,(byte) 0xbe,(byte) 0xa3,(byte) 0x8d,
+            (byte)0xd3,(byte) 0xa8, (byte)0xa3, (byte)0x97,(byte) 0xc5, 0x17,(byte) 0x89, 0x08, 0x0d, 0x15,(byte) 0xd2, 0x08, 0x01, (byte)0x93, (byte)0xc8,(byte) 0xaa,
+            (byte)0x8f, 0x0e, 0x61, 0x1b, (byte)0x99,(byte) 0xcb, 0x0e, 0x4e, (byte)0xba, (byte)0x9f, (byte)0xa1,(byte) 0xae,(byte) 0x93, (byte)0xa8,(byte) 0xa0, 0x08,
+            0x02, 0x08, 0x0c, (byte)0xe2, 0x16, (byte)0xa3, (byte)0xb7, (byte)0xcb, 0x0f, 0x4f,(byte) 0xe1,(byte) 0x80, 0x05,(byte) 0xec, 0x60, (byte)0x8d,
+            (byte)0xea, 0x06,(byte) 0xd3,(byte) 0xe6, 0x0f,(byte) 0x8a, 0x00, 0x30, 0x44, 0x65,(byte) 0xb9, (byte)0xe4, (byte)0xfe,(byte) 0xe7,(byte) 0xc2, 0x06,
+            (byte)0xcb, (byte)0x82
+        };
+        
+        CharsetProviderICU cs = new CharsetProviderICU();
+        CharsetICU charset = (CharsetICU)cs.charsetForName("scsu");
+        CharsetDecoder decode = charset.newDecoder();
+        CharsetEncoder encode = charset.newEncoder();
+        
+        //String[] codePoints = {"allFeatures", "german","russian","japanese"};
+        byte[][] fromUnicode={allFeaturesSCSU,germanSCSU,russianSCSU,japaneseSCSU};
+        char[][] toUnicode = {allFeaturesUTF16, germanUTF16,russianUTF16,japaneseUTF16};
+        
+        for(int i=0;i<4;i++){
+            ByteBuffer decoderBuffer = ByteBuffer.wrap(fromUnicode[i]);
+            CharBuffer encoderBuffer = CharBuffer.wrap(toUnicode[i]);
+                           
+            try{
+                // Decoding 
+                CharBuffer decoderResult = decode.decode(decoderBuffer);
+                encoderBuffer.position(0);
+                if(!decoderResult.equals(encoderBuffer)){
+                    errln("Error occured while decoding "+ charset.name());
+                }
+                // Encoding 
+                ByteBuffer encoderResult = encode.encode(encoderBuffer);
+                // RoundTrip Test
+                ByteBuffer roundTrip = encoderResult;
+                CharBuffer roundTripResult = decode.decode(roundTrip);
+                encoderBuffer.position(0);
+                if(!roundTripResult.equals(encoderBuffer)){
+                    errln("Error occured while encoding "+ charset.name());
+                }
+            }catch(Exception e){
+                errln("Exception while converting SCSU thrown: " + e);
+            }
+        }
+    } 
+    
+    /* Test for BOCU1 converter*/
+    public void TestBOCU1Converter(){
+        char expected[]={
+                  0xFEFF, 0x0061, 0x0062, 0x0020, // 0 
+                  0x0063, 0x0061, 0x000D, 0x000A,
+
+                  0x0020, 0x0000, 0x00DF, 0x00E6, // 8 
+                  0x0930, 0x0020, 0x0918, 0x0909,
+
+                  0x3086, 0x304D, 0x0020, 0x3053, // 16 
+                  0x4000, 0x4E00, 0x7777, 0x0020, 
+
+                  0x9FA5, 0x4E00, 0xAC00, 0xBCDE, // 24 
+                  0x0020, 0xD7A3, 0xDC00, 0xD800,
+
+                  0xD800, 0xDC00, 0xD845, 0xDDDD, // 32 
+                  0xDBBB, 0xDDEE, 0x0020, 0xDBFF,
+
+                  0xDFFF, 0x0001, 0x0E40, 0x0020, // 40 
+                  0x0009  
+        };
+        
+        byte sampleText[]={ // from cintltst/bocu1tst.c/TestBOCU1 text 1 
+            (byte) 0xFB,
+            (byte) 0xEE,
+            0x28, // from source offset 0
+            0x24, 0x1E, 0x52, (byte) 0xB2, 0x20,
+            (byte) 0xB3,
+            (byte) 0xB1,
+            0x0D,
+            0x0A,
+
+            0x20, // from 8
+            0x00, (byte) 0xD0, 0x6C, (byte) 0xB6, (byte) 0xD8, (byte) 0xA5,
+            0x20, 0x68,
+            0x59,
+
+            (byte) 0xF9,
+            0x28, // from 16
+            0x6D, 0x20, 0x73, (byte) 0xE0, 0x2D, (byte) 0xDE, 0x43,
+            (byte) 0xD0, 0x33, 0x20,
+
+            (byte) 0xFA,
+            (byte) 0x83, // from 24
+            0x25, 0x01, (byte) 0xFB, 0x16, (byte) 0x87, 0x4B, 0x16, 0x20,
+            (byte) 0xE6, (byte) 0xBD, (byte) 0xEB, 0x5B, 0x4B, (byte) 0xCC,
+
+            (byte) 0xF9,
+            (byte) 0xA2, // from 32
+            (byte) 0xFC, 0x10, 0x3E, (byte) 0xFE, 0x16, 0x3A, (byte) 0x8C,
+            0x20, (byte) 0xFC, 0x03, (byte) 0xAC,
+
+            0x01, /// from 41 
+            (byte) 0xDE, (byte) 0x83, 0x20, 0x09 
+        };
+        
+        CharsetProviderICU cs = new CharsetProviderICU();
+        CharsetICU charset = (CharsetICU)cs.charsetForName("BOCU-1");
+        CharsetDecoder decode = charset.newDecoder();
+        CharsetEncoder encode = charset.newEncoder();
+       
+        ByteBuffer decoderBuffer = ByteBuffer.wrap(sampleText);
+        CharBuffer encoderBuffer = CharBuffer.wrap(expected);
+        try{
+            // Decoding 
+            CharBuffer decoderResult = decode.decode(decoderBuffer);
+            
+            encoderBuffer.position(0);
+            if(!decoderResult.equals(encoderBuffer)){
+                errln("Error occured while decoding "+ charset.name());
+            }
+            // Encoding 
+            ByteBuffer encoderResult = encode.encode(encoderBuffer);
+            // RoundTrip Test
+            ByteBuffer roundTrip = encoderResult;
+            CharBuffer roundTripResult = decode.decode(roundTrip);
+            
+            encoderBuffer.position(0);
+            if(!roundTripResult.equals(encoderBuffer)){
+                errln("Error occured while encoding "+ charset.name());
+            }
+        }catch(Exception e){
+            errln("Exception while converting BOCU-1 thrown: " + e);
+        }
+    }
+    
+    /* Test that ICU4C and ICU4J get the same ICU canonical name when given the same alias. */
+    public void TestICUCanonicalNameConsistency() {
+        String[] alias = {
+                "KSC_5601"
+        };
+        String[] expected = {
+                "windows-949-2000"
+        };
+
+        for (int i = 0; i < alias.length; i++) {
+            String name = CharsetProviderICU.getICUCanonicalName(alias[i]);
+            if (!name.equals(expected[i])) {
+                errln("The ICU canonical name in ICU4J does not match that in ICU4C. Result: " + name + "Expected: " + expected[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/charset/TestConversion.java b/src/com/ibm/icu/dev/test/charset/TestConversion.java
new file mode 100644
index 0000000..db87a65
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestConversion.java
@@ -0,0 +1,1142 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.util.Iterator;
+
+import com.ibm.icu.charset.CharsetCallback;
+import com.ibm.icu.charset.CharsetEncoderICU;
+import com.ibm.icu.charset.CharsetDecoderICU;
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * This maps to convtest.c which tests the test file for data-driven conversion tests. 
+ * 
+ */
+public class TestConversion extends ModuleTest {
+    /**
+     * This maps to the C struct of conversion case in convtest.h that stores the
+     * data for a conversion test
+     * 
+     */
+    private class ConversionCase {
+        int caseNr;                                             // testcase index   
+        String option = null;                                   // callback options
+        CodingErrorAction cbErrorAction = null;                 // callback action type
+        CharBuffer toUnicodeResult = null;
+        ByteBuffer fromUnicodeResult = null;
+        
+        // data retrieved from a test case conversion.txt
+        String charset;                                         // charset
+        String unicode;                                         // unicode string
+        ByteBuffer bytes;                                       // byte
+        int[] offsets;                                          // offsets
+        boolean finalFlush;                                     // flush
+        boolean fallbacks;                                      // fallback
+        String outErrorCode;                                    // errorCode
+        String cbopt;                                           // callback 
+        
+        // TestGetUnicodeSet variables
+        String map;
+        String mapnot;
+        int which;
+        
+        // CharsetCallback encoder and decoder
+        CharsetCallback.Decoder cbDecoder = null;
+        CharsetCallback.Encoder cbEncoder = null;
+        
+        String caseNrAsString() {
+            return "[" + caseNr + "]";
+        }
+    }
+
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] args) throws Exception {
+        new TestConversion().run(args);
+    }
+
+    public TestConversion() {
+        super("com/ibm/icu/dev/data/testdata/", "conversion");
+    }
+
+    /*
+     * This method maps to the convtest.cpp runIndexedTest() method to run each
+     * type of conversion.
+     */
+    public void processModules() {
+        try {
+            int testFromUnicode = 0;
+            int testToUnicode = 0;
+            String testName = t.getName().toString();
+
+            // Iterate through and get each of the test case to process
+            for (Iterator iter = t.getDataIterator(); iter.hasNext();) {
+                DataMap testcase = (DataMap) iter.next();
+
+                if (testName.equalsIgnoreCase("toUnicode")) {
+                    TestToUnicode(testcase, testToUnicode);
+                    testToUnicode++;
+
+                } else if (testName.equalsIgnoreCase("fromUnicode")) {
+                    TestFromUnicode(testcase, testFromUnicode);
+                    testFromUnicode++;
+                } else if (testName.equalsIgnoreCase("getUnicodeSet")) {
+                    TestGetUnicodeSet(testcase);
+                } else {
+                    warnln("Could not load the test cases for conversion");
+                    continue;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    // private methods -------------------------------------------------------
+
+    
+    // fromUnicode test worker functions --------------------------------------- 
+    private void TestFromUnicode(DataMap testcase, int caseNr) {
+        
+        ConversionCase cc = new ConversionCase();
+        
+        try {
+            // retrieve test case data
+            cc.caseNr = caseNr;
+            cc.charset = ((ICUResourceBundle) testcase.getObject("charset")).getString();
+            cc.unicode = ((ICUResourceBundle) testcase.getObject("unicode")).getString();
+            cc.bytes = ((ICUResourceBundle) testcase.getObject("bytes")).getBinary();
+            cc.offsets = ((ICUResourceBundle) testcase.getObject("offsets")).getIntVector();
+            cc.finalFlush = ((ICUResourceBundle) testcase.getObject("flush")).getUInt() != 0;
+            cc.fallbacks = ((ICUResourceBundle) testcase.getObject("fallbacks")).getUInt() != 0;
+            cc.outErrorCode = ((ICUResourceBundle) testcase.getObject("errorCode")).getString();
+            cc.cbopt = ((ICUResourceBundle) testcase.getObject("callback")).getString();
+
+        } catch (Exception e) {
+            errln("Skipping test:");
+            errln("error parsing conversion/toUnicode test case " + cc.caseNr);
+            return;
+        }
+
+        // ----for debugging only
+        logln("");
+        logln("TestFromUnicode[" + caseNr + "] " + cc.charset + " ");
+        logln("Unicode:   " + cc.unicode);
+        logln("Bytes:    " + printbytes(cc.bytes, cc.bytes.limit()));
+        ByteBuffer c = ByteBuffer.wrap(cc.cbopt.getBytes());
+        logln("Callback: " + printbytes(c, c.limit()) + " (" + cc.cbopt + ")");
+        logln("...............................................");
+
+        // process the retrieved test data case
+        if (cc.offsets.length == 0) {
+            cc.offsets = null;
+        } else if (cc.offsets.length != cc.bytes.limit()) {
+            errln("fromUnicode[" + cc.caseNr + "] bytes[" + cc.bytes
+                    + "] and offsets[" + cc.offsets.length
+                    + "] must have the same length");
+            return;
+        }
+
+        // check the callback replacement value
+        if (cc.cbopt.length() > 0) {
+
+            switch ((cc.cbopt).charAt(0)) {
+            case '?':
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                break;
+            case '0':
+                cc.cbErrorAction = CodingErrorAction.IGNORE;
+                break;
+            case '.':
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                break;
+            case '&':
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                cc.cbEncoder = CharsetCallback.FROM_U_CALLBACK_ESCAPE;
+                break;
+            default:
+                cc.cbErrorAction = null;
+                break;
+            }
+
+            // check for any options for the callback value -- 
+            cc.option = cc.cbErrorAction == null ? cc.cbopt : cc.cbopt
+                    .substring(1);
+            if (cc.option == null) {
+                cc.option = null;
+            }
+        }
+        FromUnicodeCase(cc);
+    }
+
+    
+    private void FromUnicodeCase(ConversionCase cc) {
+
+        // create charset encoder for conversion test
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetEncoder encoder = null;
+        Charset charset = null;
+        try {
+            // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+            charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                    ? (Charset) provider.charsetForName(cc.charset.substring(1), "../dev/data/testdata")
+                    : (Charset) provider.charsetForName(cc.charset);
+            encoder = (CharsetEncoder) charset.newEncoder();
+            encoder.onMalformedInput(CodingErrorAction.REPLACE);
+            encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+            if (encoder instanceof CharsetEncoderICU) {
+                ((CharsetEncoderICU)encoder).setFallbackUsed(cc.fallbacks);
+                if (((CharsetEncoderICU)encoder).isFallbackUsed() != cc.fallbacks) {
+                    errln("Fallback could not be set for " + cc.charset);
+                }
+            }
+            
+        } catch (Exception e) {
+            // TODO implement loading of test data.
+            if (skipIfBeforeICU(4,1,1)) {
+                logln("Skipping test:(" + cc.charset + ") due to ICU Charset not supported at this time");
+            } else {
+                errln(cc.charset + " was not found");
+            }
+            return;
+        }
+        
+        
+        
+        
+        // set the callback for the encoder 
+        if (cc.cbErrorAction != null) {
+            if (cc.cbEncoder != null) {
+                ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.malformedForLength(1), cc.cbEncoder, cc.option);
+                ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), cc.cbEncoder, cc.option);
+            } else {
+                encoder.onUnmappableCharacter(cc.cbErrorAction);
+                encoder.onMalformedInput(cc.cbErrorAction);
+            }
+
+            // if action has an option, put in the option for the case
+            if (cc.option.equals("i")) {
+                encoder.onMalformedInput(CodingErrorAction.REPORT);
+            }
+
+            // if callback action is replace,
+          //   and there is a subchar
+            // replace the decoder's default replacement value
+            // if substring, skip test due to current api not supporting
+            // substring
+            if (cc.cbErrorAction.equals(CodingErrorAction.REPLACE)) {
+                if (cc.cbopt.length() > 1) {
+                    if (cc.cbopt.length() > 1 && cc.cbopt.charAt(1) == '=') {
+                        logln("Skipping test due to limitation in Java API - substitution string not supported");
+                        return;
+                    } else {
+                        // // read NUL-separated subchar first, if any
+                        // copy the subchar from Latin-1 characters
+                        // start after the NUL
+                        if (cc.cbopt.charAt(1) == 0x00) {
+                            cc.cbopt = cc.cbopt.substring(2);
+
+                            try {
+                                encoder.replaceWith(toByteArray(cc.cbopt));
+                            } catch (Exception e) {
+                                logln("Skipping test due to limitation in Java API - substitution character sequence size error");
+                                return;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        // do charset encoding from unicode
+
+        // testing by steps using charset.encoder(in,out,flush)
+        int resultLength;
+        boolean ok;
+        String steps[][] = { { "0", "bulk" }, // must be first for offsets to be checked
+                { "1", "step=1" }, { "3", "step=3" }, { "7", "step=7" } };
+        int i, step;
+
+        ok = true;
+
+        for (i = 0; i < steps.length && ok; ++i) {
+            step = Integer.parseInt(steps[i][0]);
+
+            logln("Testing step:[" + step + "]");
+            try {
+                resultLength = stepFromUnicode(cc, encoder, step);
+                ok = checkFromUnicode(cc, resultLength);
+            } catch (Exception ex) {
+                errln("Test failed: " + ex.getClass().getName() + " thrown: " + cc.charset+ " [" + cc.caseNr + "]");
+                ex.printStackTrace(System.out);
+                return;
+            }
+
+        }
+        // testing by whole buffer using out = charset.encoder(in)
+        while (ok && cc.finalFlush) {
+            logln("Testing java API charset.encoder(in):");
+            cc.fromUnicodeResult = null;
+            ByteBuffer out = null;
+
+            try {
+                out = encoder.encode(CharBuffer.wrap(cc.unicode.toCharArray()));
+                out.position(out.limit());
+                if (out.limit() != out.capacity() || cc.finalFlush) {
+                    int pos = out.position();
+                    byte[] temp = out.array();
+                    out = ByteBuffer.allocate(temp.length * 4);
+                    out.put(temp);
+                    out.position(pos);
+                    CoderResult cr = encoder.flush(out);
+                    if (cr.isOverflow()) {
+                        logln("Overflow error with flushing encoder");
+                    }
+                }
+                cc.fromUnicodeResult = out;
+
+                ok = checkFromUnicode(cc, out.limit());
+                if (!ok) {
+                    break;
+                }
+            } catch (Exception e) {
+                //check the error code to see if it matches cc.errorCode
+                logln("Encoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + e.toString());
+            }
+            break;
+        }
+    }
+    
+    private int stepFromUnicode(ConversionCase cc, CharsetEncoder encoder, int step) {
+        if (step < 0) {
+            errln("Negative step size, test internal error.");
+            return 0;
+        }
+
+        int sourceLen = cc.unicode.length();
+        int targetLen = cc.bytes.capacity() + 20;  // for BOM, and to let failures produce excess output
+        CharBuffer source = CharBuffer.wrap(cc.unicode.toCharArray());
+        ByteBuffer target = ByteBuffer.allocate(targetLen);
+        cc.fromUnicodeResult = null;
+        encoder.reset();
+
+        int currentSourceLimit;
+        int currentTargetLimit;
+        if (step > 0) {
+            currentSourceLimit = Math.min(step, sourceLen);
+            currentTargetLimit = Math.min(step, targetLen);
+        } else {
+            currentSourceLimit = sourceLen;
+            currentTargetLimit = targetLen;
+        }
+        
+        CoderResult cr = null;
+
+        for (;;) {
+            source.limit(currentSourceLimit);
+            target.limit(currentTargetLimit);
+
+            cr = encoder.encode(source, target, currentSourceLimit == sourceLen);
+            
+            if (cr.isUnderflow()) {
+                if (currentSourceLimit == sourceLen) {
+                    if (target.position() == cc.bytes.limit()) {
+                        // target contains the correct number of bytes
+                        break;
+                    }
+                    // Do a final flush for cleanup, then break out
+                    // Encode loop, exits with cr==underflow in normal operation.
+                    //target.limit(targetLen);
+                    target.limit(targetLen);
+                    cr = encoder.flush(target);
+                    if (cr.isUnderflow()) {
+                        // good
+                    } else if (cr.isOverflow()) {
+                        errln(cc.caseNrAsString() + " Flush is producing excessive output");
+                    } else {
+                        errln(cc.caseNrAsString() + " Flush operation failed.  CoderResult = \""
+                                + cr.toString() + "\"");
+                    }
+                    break;
+                }
+                currentSourceLimit = Math.min(currentSourceLimit + step, sourceLen);
+            } else if (cr.isOverflow()) {
+                if (currentTargetLimit == targetLen) {
+                    errln(cc.caseNrAsString() + " encode() is producing excessive output");
+                    break;
+                }
+                currentTargetLimit = Math.min(currentTargetLimit + step, targetLen);
+            } else {
+                // check the error code to see if it matches cc.errorCode
+                logln("Encoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + cr.toString());
+                break;
+            }
+
+        }
+        
+        cc.fromUnicodeResult = target;
+        return target.position();
+    }
+    
+    private boolean checkFromUnicode(ConversionCase cc, int resultLength) {
+        return checkResultsFromUnicode(cc, cc.bytes, cc.fromUnicodeResult);
+    }
+
+    // toUnicode test worker functions ----------------------------------------- ***
+
+    private void TestToUnicode(DataMap testcase, int caseNr) {
+        // create Conversion case to store the test case data
+        ConversionCase cc = new ConversionCase();
+        
+        try {
+            // retrieve test case data
+            cc.caseNr = caseNr;
+            cc.charset = ((ICUResourceBundle) testcase.getObject("charset")).getString();
+            cc.bytes = ((ICUResourceBundle) testcase.getObject("bytes")).getBinary();
+            cc.unicode = ((ICUResourceBundle) testcase.getObject("unicode")).getString();
+            cc.offsets = ((ICUResourceBundle) testcase.getObject("offsets")).getIntVector();
+            cc.finalFlush = ((ICUResourceBundle) testcase.getObject("flush")).getUInt() != 0;
+            cc.fallbacks = ((ICUResourceBundle) testcase.getObject("fallbacks")).getUInt() != 0;
+            cc.outErrorCode = ((ICUResourceBundle) testcase.getObject("errorCode")).getString();
+            cc.cbopt = ((ICUResourceBundle) testcase.getObject("callback")).getString();
+
+        } catch (Exception e) {
+            errln("Skipping test: error parsing conversion/toUnicode test case " + cc.caseNr);
+            return;
+        }
+
+        // ----for debugging only
+        logln("");
+        logln("TestToUnicode[" + caseNr + "] " + cc.charset + " ");
+        logln("Unicode:   " + hex(cc.unicode));
+        logln("Bytes:    " + printbytes(cc.bytes, cc.bytes.limit()));
+        ByteBuffer c = ByteBuffer.wrap(cc.cbopt.getBytes());
+        logln("Callback: " + printbytes(c, c.limit()) + " (" + cc.cbopt + ")");
+        logln("...............................................");
+
+        // process the retrieved test data case
+        if (cc.offsets.length == 0) {
+            cc.offsets = null;
+        } else if (cc.offsets.length != cc.unicode.length()) {
+            errln("Skipping test: toUnicode[" + cc.caseNr + "] unicode["
+                    + cc.unicode.length() + "] and offsets["
+                    + cc.offsets.length + "] must have the same length");
+            return;
+        }
+        // check for the callback replacement value for unmappable
+        // characters or malformed errors
+        if (cc.cbopt.length() > 0) {
+            switch ((cc.cbopt).charAt(0)) {
+            case '?': // CALLBACK_SUBSTITUTE
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                break;
+            case '0': // CALLBACK_SKIP
+                cc.cbErrorAction = CodingErrorAction.IGNORE;
+                break;
+            case '.': // CALLBACK_STOP
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                break;
+            case '&': // CALLBACK_ESCAPE
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                cc.cbDecoder = CharsetCallback.TO_U_CALLBACK_ESCAPE;
+                break;
+            default:
+                cc.cbErrorAction = null;
+                break;
+            }
+        }
+        // check for any options for the callback value
+        cc.option = cc.cbErrorAction == null ? null : cc.cbopt.substring(1);
+        if (cc.option == null) {
+            cc.option = null;
+        }
+
+        ToUnicodeCase(cc);
+
+    }
+
+    private void ToUnicodeCase(ConversionCase cc) {
+
+        // create converter for charset and decoder for each test case
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetDecoder decoder = null;
+        Charset charset = null;
+
+        try {
+            // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+            charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                    ? (Charset) provider.charsetForName(cc.charset.substring(1), "../dev/data/testdata")
+                    : (Charset) provider.charsetForName(cc.charset);
+            decoder = (CharsetDecoder) charset.newDecoder();
+            decoder.onMalformedInput(CodingErrorAction.REPLACE);
+            decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+
+        } catch (Exception e) {
+            // TODO implement loading of test data.
+            if (skipIfBeforeICU(4,1,1)) {
+                logln("Skipping test:(" + cc.charset + ") due to ICU Charset not supported at this time");
+            } else {
+                errln(cc.charset + " was not found");
+            }
+            return;
+        }
+
+        // set the callback for the decoder
+        if (cc.cbErrorAction != null) {
+            if (cc.cbDecoder != null) {
+                ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), cc.cbDecoder, cc.option);
+                ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.unmappableForLength(1), cc.cbDecoder, cc.option);
+            } else {
+                decoder.onMalformedInput(cc.cbErrorAction);
+                decoder.onUnmappableCharacter(cc.cbErrorAction);
+            }
+
+            // set the options (if any: SKIP_STOP_ON_ILLEGAL) for callback
+            if (cc.option.equals("i")) {
+                decoder.onMalformedInput(CodingErrorAction.REPORT);
+            }
+
+            // if callback action is replace, and there is a subchar
+            // replace the decoder's default replacement value
+            // if substring, skip test due to current api not supporting
+            // substring replacement
+            if (cc.cbErrorAction.equals(CodingErrorAction.REPLACE)) {
+                if (cc.cbopt.length() > 1) {
+                    if (cc.cbopt.charAt(1) == '=') {
+                        logln("Skipping test due to limitation in Java API - substitution string not supported");
+
+                    } else {
+                        // // read NUL-separated subchar first, if any
+                        // copy the subchar from Latin-1 characters
+                        // start after the NUL
+                        if (cc.cbopt.charAt(1) == 0x00) {
+                            cc.cbopt = cc.cbopt.substring(2);
+
+                            try {
+                                decoder.replaceWith(cc.cbopt);
+                            } catch (Exception e) {
+                                logln("Skipping test due to limitation in Java API - substitution character sequence size error");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        //      Check the step to unicode    
+        boolean ok;
+        int resultLength;
+
+        String steps[][] = { { "0", "bulk" }, // must be first for offsets to be checked
+                { "1", "step=1" }, { "3", "step=3" }, { "7", "step=7" } };
+        /* TODO: currently not supported test steps, getNext API is not supported for now  
+         { "-1", "getNext" },
+         { "-2", "toU(bulk)+getNext" },
+         { "-3", "getNext+toU(bulk)" },
+         { "-4", "toU(1)+getNext" },
+         { "-5", "getNext+toU(1)" },
+         { "-12", "toU(5)+getNext" },
+         { "-13", "getNext+toU(5)" }};*/
+
+        ok = true;
+        int step;
+        // testing by steps using the CoderResult cr = charset.decoder(in,out,flush) api
+        for (int i = 0; i < steps.length && ok; ++i) {
+            step = Integer.parseInt(steps[i][0]);
+
+            if (step < 0 && !cc.finalFlush) {
+                continue;
+            }
+            logln("Testing step:[" + step + "]");
+            
+            try {
+                resultLength = stepToUnicode(cc, decoder, step);
+                ok = checkToUnicode(cc, resultLength);
+            } catch (Exception ex) {
+                errln("Test failed: " + ex.getClass().getName() + " thrown: " + cc.charset+ " [" + cc.caseNr + "]");
+                ex.printStackTrace(System.out);
+                return;
+            }
+        }
+
+        //testing the java's out = charset.decoder(in) api
+        while (ok && cc.finalFlush) {
+            logln("Testing java charset.decoder(in):");
+            cc.toUnicodeResult = null;
+            CharBuffer out = null;
+
+            try {
+                out = decoder.decode(ByteBuffer.wrap(cc.bytes.array()));
+                out.position(out.limit());
+                if (out.limit() < cc.unicode.length()) {
+                    int pos = out.position();
+                    char[] temp = out.array();
+                    out = CharBuffer.allocate(cc.bytes.limit());
+                    out.put(temp);
+                    out.position(pos);
+                    CoderResult cr = decoder.flush(out);
+                    if (cr.isOverflow()) {
+                        logln("Overflow error with flushing decodering");
+                    }
+                }
+
+                cc.toUnicodeResult = out;
+
+                ok = checkToUnicode(cc, out.limit());
+                if (!ok) {
+                    break;
+                }
+            } catch (Exception e) {
+                //check the error code to see if it matches cc.errorCode
+                logln("Decoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + e.toString());
+            }
+            break;
+        }
+
+        return;
+    }
+
+
+
+    
+    private int stepToUnicode(ConversionCase cc, CharsetDecoder decoder,
+            int step)
+
+    {
+        ByteBuffer source;
+        CharBuffer target;
+        boolean flush = false;
+        int sourceLen;
+        source = cc.bytes;
+        sourceLen = cc.bytes.limit();
+        source.position(0);
+        target = CharBuffer.allocate(cc.unicode.length() + 4);
+        target.position(0);
+        cc.toUnicodeResult = null;
+        decoder.reset();
+
+        if (step >= 0) {
+
+            int iStep = step;
+            int oStep = step;
+
+            for (;;) {
+
+                if (step != 0) {
+                    source.limit((iStep <= sourceLen) ? iStep : sourceLen);
+                    target.limit((oStep <= target.capacity()) ? oStep : target
+                            .capacity());
+                    flush = (cc.finalFlush && source.limit() == sourceLen);
+
+                } else {
+                    //bulk mode
+                    source.limit(sourceLen);
+                    target.limit(target.capacity());
+                    flush = cc.finalFlush;
+                }
+                // convert 
+                CoderResult cr = null;
+                if (source.hasRemaining()) {
+
+                    cr = decoder.decode(source, target, flush);
+                    // check pointers and errors
+                    if (cr.isOverflow()) {
+                        // the partial target is filled, set a new limit, 
+                        oStep = (target.position() + step);
+                        target.limit((oStep < target.capacity()) ? oStep
+                                : target.capacity());
+                        if (target.limit() > target.capacity()) {
+                            //target has reached its limit, an error occurred or test case has an error code
+                            //check error code
+                            logln("UnExpected error: Target Buffer is larger than capacity");
+                            break;
+                        }
+
+                    } else if (cr.isError()) {
+                        //check the error code to see if it matches cc.errorCode
+                        logln("Decoder returned an error code");
+                        logln("ErrorCode expected is: " + cc.outErrorCode);
+                        logln("Error Result is: " + cr.toString());
+                        break;
+                    }
+
+                } else {
+                    if (source.limit() == sourceLen) {
+
+                        cr = decoder.decode(source, target, true);
+
+                        //due to limitation of the API we need to check for target limit for expected 
+                        if (target.limit() != cc.unicode.length()) {
+                            target.limit(cc.unicode.length());
+                            cr = decoder.flush(target);
+                            if (cr.isError()) {
+                                errln("Flush operation failed");
+                            }
+                        }
+                        break;
+                    }
+                }
+                iStep += step;
+                oStep += step;
+
+            }
+
+        }// if(step ==0)
+
+        //--------------------------------------------------------------------------
+        else /* step<0 */{
+            /*
+             * step==-1: call only ucnv_getNextUChar()
+             * otherwise alternate between ucnv_toUnicode() and ucnv_getNextUChar()
+             *   if step==-2 or -3, then give ucnv_toUnicode() the whole remaining input,
+             *   else give it at most (-step-2)/2 bytes
+             */
+
+            for (;;) {
+                // convert
+                if ((step & 1) != 0 /* odd: -1, -3, -5, ... */) {
+
+                    target.limit(target.position() < target.capacity() ? target
+                            .position() + 1 : target.capacity());
+
+                    // decode behavior is return to output target 1 character
+                    CoderResult cr = null;
+
+                    //similar to getNextUChar() , input is the whole string, while outputs only 1 character
+                    source.limit(sourceLen);
+                    while (target.position() != target.limit()
+                            && source.hasRemaining()) {
+                        cr = decoder.decode(source, target,
+                                source.limit() == sourceLen);
+
+                        if (cr.isOverflow()) {
+
+                            if (target.limit() >= target.capacity()) {
+                                // target has reached its limit, an error occurred 
+                                logln("UnExpected error: Target Buffer is larger than capacity");
+                                break;
+                            } else {
+                                //1 character has been consumed
+                                target.limit(target.position() + 1);
+                                break;
+                            }
+                        } else if (cr.isError()) {
+                            logln("Decoder returned an error code");
+                            logln("ErrorCode expected is: " + cc.outErrorCode);
+                            logln("Error Result is: " + cr.toString());
+
+                            cc.toUnicodeResult = target;
+                            return target.position();
+                        }
+
+                        else {
+                            // one character has been consumed
+                            if (target.limit() == target.position()) {
+                                target.limit(target.position() + 1);
+                                break;
+                            }
+                        }
+
+                    }
+                    if (source.position() == sourceLen) {
+
+                        // due to limitation of the API we need to check
+                        // for target limit for expected
+                        cr = decoder.decode(source, target, true);
+                        if (target.position() != cc.unicode.length()) {
+
+                            target.limit(cc.unicode.length());
+                            cr = decoder.flush(target);
+                            if (cr.isError()) {
+                                errln("Flush operation failed");
+                            }
+                        }
+                        break;
+                    }
+                    // alternate between -n-1 and -n but leave -1 alone
+                    if (step < -1) {
+                        ++step;
+                    }
+                } else {/* step is even */
+                    // allow only one UChar output
+
+                    target.limit(target.position() < target.capacity() ? target
+                            .position() + 1 : target.capacity());
+                    if (step == -2) {
+                        source.limit(sourceLen);
+                    } else {
+                        source.limit(source.position() + (-step - 2) / 2);
+                        if (source.limit() > sourceLen) {
+                            source.limit(sourceLen);
+                        }
+                    }
+                    CoderResult cr = decoder.decode(source, target, source
+                            .limit() == sourceLen);
+                    // check pointers and errors 
+                    if (cr.isOverflow()) {
+                        // one character has been consumed
+                        if (target.limit() >= target.capacity()) {
+                            // target has reached its limit, an error occurred
+                            logln("Unexpected error: Target Buffer is larger than capacity");
+                            break;
+                        }
+                    } else if (cr.isError()) {
+                        logln("Decoder returned an error code");
+                        logln("ErrorCode expected is: " + cc.outErrorCode);
+                        logln("Error Result is: " + cr.toString());
+                        break;
+                    }
+
+                    --step;
+                }
+            }
+        }
+
+        //--------------------------------------------------------------------------
+
+        cc.toUnicodeResult = target;
+        return target.position();
+    }
+
+
+   
+    private boolean checkToUnicode(ConversionCase cc, int resultLength) {
+        return checkResultsToUnicode(cc, cc.unicode, cc.toUnicodeResult);
+    }
+
+    
+    private void TestGetUnicodeSet(DataMap testcase) {
+        /*
+         * charset - will be opened, and ucnv_getUnicodeSet() called on it //
+         * map - set of code points and strings that must be in the returned set //
+         * mapnot - set of code points and strings that must *not* be in the //
+         * returned set // which - numeric UConverterUnicodeSet value Headers {
+         * "charset", "map", "mapnot", "which" }
+         */
+       
+        
+        // retrieve test case data
+        ConversionCase cc = new ConversionCase();
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetICU charset  ;
+       
+             
+        UnicodeSet mapset = new UnicodeSet();
+        UnicodeSet mapnotset = new UnicodeSet();
+        UnicodeSet unicodeset = new UnicodeSet();
+        String ellipsis = "0x2e";
+        cc.charset = ((ICUResourceBundle) testcase.getObject("charset"))
+                .getString();
+        cc.map = ((ICUResourceBundle) testcase.getObject("map")).getString();
+        cc.mapnot = ((ICUResourceBundle) testcase.getObject("mapnot"))
+                .getString();
+        
+     
+        int which = ((ICUResourceBundle) testcase.getObject("which")).getInt(); // only checking for ROUNDTRIP_SET
+        
+        // ----for debugging only
+        logln("");
+        logln("TestGetUnicodeSet[" + cc.charset + "] ");
+        logln("...............................................");
+        
+        try{
+           // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+           charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                   ? (CharsetICU) provider.charsetForName(cc.charset.substring(1), "../dev/data/testdata")
+                   : (CharsetICU) provider.charsetForName(cc.charset);
+           
+           //checking for converter that are not supported at this point        
+           try{
+               if(charset.name()=="BOCU-1" ||charset.name()== "SCSU"|| charset.name()=="lmbcs1" || charset.name()== "lmbcs2" ||
+                      charset.name()== "lmbcs3" || charset.name()== "lmbcs4" || charset.name()=="lmbcs5" || charset.name()=="lmbcs6" ||
+                      charset.name()== "lmbcs8" || charset.name()=="lmbcs11" || charset.name()=="lmbcs16" || charset.name()=="lmbcs17" || 
+                      charset.name()=="lmbcs18"|| charset.name()=="lmbcs19"){
+                   
+                   logln("Converter not supported at this point :" +charset.displayName());
+                   return;
+               }
+                             
+               if(which==1){
+                   logln("Fallback set not supported at this point for converter : "+charset.displayName());
+                  return;
+               }
+               
+           }catch(Exception e){
+               return;
+           }
+           
+           mapset.clear();
+           mapnotset.clear();
+                   
+           mapset.applyPattern(cc.map,false);
+           mapnotset.applyPattern(cc.mapnot,false);
+           
+           charset.getUnicodeSet(unicodeset, which);
+           UnicodeSet diffset = new UnicodeSet();
+           
+           //are there items that must be in unicodeset but are not?           
+           (diffset = mapset).removeAll(unicodeset);
+           if(!diffset.isEmpty()){
+               StringBuffer s = new StringBuffer(diffset.toPattern(true));
+               if(s.length()>100){
+                   s.replace(0, 0x7fffffff, ellipsis);
+               }
+               errln("error in missing items - conversion/getUnicodeSet test case "+cc.charset + "\n" + s.toString());
+           }
+           
+          //are the items that must not be in unicodeset but are?
+           (diffset=mapnotset).retainAll(unicodeset);
+           if(!diffset.isEmpty()){
+               StringBuffer s = new StringBuffer(diffset.toPattern(true));
+               if(s.length()>100){
+                   s.replace(0, 0x7fffffff, ellipsis);
+               }
+               errln("contains unexpected items - conversion/getUnicodeSet test case "+cc.charset + "\n" + s.toString());
+           }
+         } catch (Exception e) {
+             errln("getUnicodeSet returned an error code");
+             errln("ErrorCode expected is: " + cc.outErrorCode);
+             errln("Error Result is: " + e.toString());
+             return;
+         }
+    }
+
+    /**
+     * This follows ucnv.c method ucnv_detectUnicodeSignature() to detect the
+     * start of the stream for example U+FEFF (the Unicode BOM/signature
+     * character) that can be ignored.
+     * 
+     * Detects Unicode signature byte sequences at the start of the byte stream
+     * and returns number of bytes of the BOM of the indicated Unicode charset.
+     * 0 is returned when no Unicode signature is recognized.
+     * 
+     */
+
+    private String detectUnicodeSignature(ByteBuffer source) {
+        int signatureLength = 0; // number of bytes of the signature
+        final int SIG_MAX_LEN = 5;
+        String sigUniCharset = null; // states what unicode charset is the BOM
+        int i = 0;
+
+        /*
+         * initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN bytes we
+         * don't misdetect something
+         */
+        byte start[] = { (byte) 0xa5, (byte) 0xa5, (byte) 0xa5, (byte) 0xa5,
+                (byte) 0xa5 };
+
+        while (i < source.limit() && i < SIG_MAX_LEN) {
+            start[i] = source.get(i);
+            i++;
+        }
+
+        if (start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+            signatureLength = 2;
+            sigUniCharset = "UTF-16BE";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+            if (start[2] == (byte) 0x00 && start[3] == (byte) 0x00) {
+                signatureLength = 4;
+                sigUniCharset = "UTF-32LE";
+                source.position(signatureLength);
+                return sigUniCharset;
+            } else {
+                signatureLength = 2;
+                sigUniCharset = "UTF-16LE";
+                source.position(signatureLength);
+                return sigUniCharset;
+            }
+        } else if (start[0] == (byte) 0xEF && start[1] == (byte) 0xBB
+                && start[2] == (byte) 0xBF) {
+            signatureLength = 3;
+            sigUniCharset = "UTF-8";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x00 && start[1] == (byte) 0x00
+                && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+            signatureLength = 4;
+            sigUniCharset = "UTF-32BE";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x0E && start[1] == (byte) 0xFE
+                && start[2] == (byte) 0xFF) {
+            signatureLength = 3;
+            sigUniCharset = "SCSU";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0xFB && start[1] == (byte) 0xEE
+                && start[2] == (byte) 0x28) {
+            signatureLength = 3;
+            sigUniCharset = "BOCU-1";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x2B && start[1] == (byte) 0x2F
+                && start[2] == (byte) 0x76) {
+
+            if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+                signatureLength = 5;
+                sigUniCharset = "UTF-7";
+                source.position(signatureLength);
+                return sigUniCharset;
+            } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39
+                    || start[3] == (byte) 0x2B || start[3] == (byte) 0x2F) {
+                signatureLength = 4;
+                sigUniCharset = "UTF-7";
+                source.position(signatureLength);
+                return sigUniCharset;
+            }
+        } else if (start[0] == (byte) 0xDD && start[2] == (byte) 0x73
+                && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+            signatureLength = 4;
+            sigUniCharset = "UTF-EBCDIC";
+            source.position(signatureLength);
+            return sigUniCharset;
+        }
+
+        /* no known Unicode signature byte sequence recognized */
+        return null;
+    }
+
+    String printbytes(ByteBuffer buf, int pos) {
+        int cur = buf.position();
+        String res = " (" + pos + ")==[";
+        for (int i = 0; i < pos; i++) {
+            res += "(" + i + ")" + hex(buf.get(i) & 0xff).substring(2) + " ";
+        }
+        buf.position(cur);
+        return res + "]";
+    }
+
+    String printchars(CharBuffer buf, int pos) {
+        int cur = buf.position();
+        String res = " (" + pos + ")==[";
+        for (int i = 0; i < pos; i++) {
+            res += "(" + i + ")" + hex(buf.get(i)) + " ";
+        }
+        buf.position(cur);
+        return res + "]";
+    }
+
+    private boolean checkResultsFromUnicode(ConversionCase cc, ByteBuffer expected,
+            ByteBuffer output) {
+
+        boolean res = true;
+        expected.rewind();
+        output.limit(output.position());
+        output.rewind();
+        
+        // remove any BOM signature before checking
+        detectUnicodeSignature(output); // sets the position to after the BOM
+        output = output.slice(); // removes anything before the current position
+
+        if (output.limit() != expected.limit()) {
+            errln("Test failed: output length does not match expected for charset: " + cc.charset
+                    + " [" + cc.caseNr + "]");
+            res = false;
+        } else {
+            while (output.hasRemaining()) {
+                if (output.get() != expected.get()) {
+                    errln("Test failed: output does not match expected for charset: " + cc.charset
+                            + " [" + cc.caseNr + "]");
+                    res = false;
+                    break;
+                }
+            }
+        }
+        
+        if (res) {
+            logln("[" + cc.caseNr + "]:" + cc.charset);
+            logln("Input:       " + printchars(CharBuffer.wrap(cc.unicode), cc.unicode.length()));
+            logln("Output:      " + printbytes(output, output.limit()));
+            logln("Expected:    " + printbytes(expected, expected.limit()));
+            logln("Passed");
+        }
+        else {
+            errln("[" + cc.caseNr + "]:" + cc.charset);
+            errln("Input:       " + printchars(CharBuffer.wrap(cc.unicode), cc.unicode.length()));
+            errln("Output:      " + printbytes(output, output.limit()));
+            errln("Expected:    " + printbytes(expected, expected.limit()));
+            errln("Failed");
+        }
+        return res;
+    }
+
+    private boolean checkResultsToUnicode(ConversionCase cc, String expected, CharBuffer output) {
+
+        boolean res = true;
+        output.limit(output.position());
+        output.rewind();
+
+        // test to see if the conversion matches actual results
+        if (output.limit() != expected.length()) {
+            errln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+            res = false;
+        } else {
+            for (int i = 0; i < expected.length(); i++) {
+                if (output.get(i) != expected.charAt(i)) {
+                    errln("Test failed: output does not match expected for charset: " + cc.charset
+                            + " [" + cc.caseNr + "]");
+                    res = false;
+                    break;
+                }
+            }
+        }
+        
+        if (res) {
+            logln("[" + cc.caseNr + "]:" + cc.charset);
+            logln("Input:       " + printbytes(cc.bytes, cc.bytes.limit()));
+            logln("Output:      " + printchars(output, output.limit()));
+            logln("Expected:    " + printchars(CharBuffer.wrap(expected), expected.length()));
+            logln("Passed");
+        }
+        else {
+            errln("[" + cc.caseNr + "]:" + cc.charset);
+            errln("Input:       " + printbytes(cc.bytes, cc.bytes.limit()));
+            errln("Output:      " + printchars(output, output.limit()));
+            errln("Expected:    " + printchars(CharBuffer.wrap(expected), expected.length()));
+            errln("Failed");
+        }
+        return res;
+    }
+
+    private byte[] toByteArray(String str) {
+        byte[] ret = new byte[str.length()];
+        for (int i = 0; i < ret.length; i++) {
+            char ch = str.charAt(i);
+            if (ch <= 0xFF) {
+                ret[i] = (byte) ch;
+            } else {
+                throw new IllegalArgumentException(" byte value out of range: " + ch);
+            }
+        }
+        return ret;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml b/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
new file mode 100644
index 0000000..9dcbf13
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Copyright (c) 2005-2007 IBM Corporation and others. All rights reserved -->
+<!-- See individual test cases for their specific copyright. -->
+
+<charset-detection-tests>
+    <test-case id="IUC10-ar" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-6/ar windows-1256/ar">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    أوروبا, برمجيات الحاسوب + انترنيت :
+    تصبح عالميا مع يونيكود
+    IUC10
+    تسجّل الآن لحضور المؤتمر الدولي العاشر ليونيكود, الذي سيعقد في 10-12 آذار 1997 بمدينة ماينتس,
+    ألمانيا. وسيجمع المؤتمر بين خبراء من كافة قطاعات الصناعة على الشبكة العالمية انترنيت ويونيكود, حيث ستتم,
+    على الصعيدين الدولي والمحلي على حد سواء مناقشة سبل استخدام يونكود في النظم القائمة وفيما يخص التطبيقات
+    الحاسوبية, الخطوط, تصميم النصوص والحوسبة متعددة اللغات. 
+
+    Unicode
+    عندما يريد العالم أن يتكلّم, فهو يتحدّث بلغة يونيكود
+
+    </test-case>
+
+    <test-case id="IUC10-da-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1252/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + Internet:
+    Bliv global med Unicode
+    IUC10
+    Indskriv dig nu til den tiende internationale Unicode-konference, der holdes den 10-12
+    marts 1997 i Mainz, Tyskland. Konferencen samler eksperter fra hele verden inden for det
+    globale Internet og Unicode, internationalisering og lokalisering, implementering af
+    Unicode i styresystemer og programmer, skrifttyper, tekst-layout og flersproget databehandling.
+
+    Unicode
+    Når verden vil tale, taler den “Unicode.”
+
+    </test-case>
+
+    <test-case id="IUC10-da" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + Internet:
+    Bliv global med Unicode
+    IUC10
+    Indskriv dig nu til den tiende internationale Unicode-konference, der holdes den 10-12
+    marts 1997 i Mainz, Tyskland. Konferencen samler eksperter fra hele verden inden for det
+    globale Internet og Unicode, internationalisering og lokalisering, implementering af
+    Unicode i styresystemer og programmer, skrifttyper, tekst-layout og flersproget databehandling.
+
+    Unicode
+    Når verden vil tale, taler den Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-de" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/de">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + das Internet:
+    International mit Unicode
+    IUC10
+    Melden Sie sich jetzt für die 10. Internationale Unicode Konferenz an, die in der Zeit vom 10.-12. März 1997 in
+    Mainz stattfinden wird. Die Konferenz ist ein Treffpunkt für Betriebsexperten aus den Bereichen globales
+    Internet und Unicode, Internationalisierung und Lokalisierung, die Implementierung von Unicode in
+    Betriebssystemen und Programmen, sowie für Schriftarten, Textlayout und mehrsprachige Computeranwendungen.
+
+    Unicode
+    Wenn die Welt miteinander spricht, spricht sie Unicode.
+
+    </test-case>
+
+    <!-- No UTF-8 in this test because there are no non-ASCII characters. -->
+    <test-case id="IUC10-en" encodings="UTF-32BE UTF-32LE ISO-8859-1/en">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europe, Software + the Internet:
+    Going Global with Unicode
+    IUC10
+    Register now for the Tenth International Unicode Conference, to be held on March 10-12, 1997,
+    in Mainz, Germany. The Conference will bring together industry-wide experts on the global Internet and
+    Unicode, internationalization and localization, implementation of Unicode in operating systems and applications,
+    fonts, text layout, and multilingual computing.
+
+    Unicode
+    When the world wants to talk, it speaks Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-es" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/es">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + el Internet:
+    Mundializando con Unicode
+    IUC10
+    Inscríbase ahora para la Décima Conferencia Internacional Unicode, que tendrá lugar del 10 al 12 de marzo de
+    1997 en Maguncia, Alemania. La Conferencia reunirá expertos de los sectores de la mundialización del Internet y
+    Unicode, la internacionalización y localización, implementación de Unicode en sistemas operativos y aplicaciones,
+    tipos, composición de texto e informática multilingüe.
+
+    Unicode
+    Cuando el mundo quiere conversar, habla Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-fr" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/fr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    L'Europe, le logiciel et l'Internet :
+    la mondialisation avec Unicode
+    IUC10
+    Inscrivez-vous dès maintenant à la dixième Conférence internationale sur Unicode, qui se tiendra du 10 au 12
+    mars 1997 à Mayence, en Allemagne. Cette conférence rassemblera des experts de tous les horizons industriels
+    sur les sujets suivants : l'Internet mondial et Unicode, l'internationalisation et l'adaptation locale,
+    l'implémentation d'Unicode dans les systèmes d'exploitation et les applications, les polices de caractères,
+    la disposition de texte, l'informatique plurilingue.
+
+    Unicode
+    Quand le monde veut communiquer, il parle en Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-he" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-8/he">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אירופה, תוכנה והאינטרנט:
+    Unicode יוצא לשוק העולמי
+    IUC10
+    הירשמו כעת לכנס Unicode הבינלאומי העשירי, שייערך בין התאריכים 12-10 במרץ 1997, במיינץ שבגרמניה. בכנס
+    ישתתפו מומחים מכל ענפי התעשייה בנושא האינטרנט העולמי וה-Unicode, בהתאמה לשוק הבינלאומי והמקומי, ביישום
+    Unicode במערכות הפעלה וביישומים, בגופנים, בפריסת טקסט ובמחשוב רב-לשוני.
+
+    Unicode
+    כאשר העולם רוצה לדבר, הוא מדבר ב-Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-he-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1255/he">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אירופה, תוכנה והאינטרנט:
+    Unicode יוצא לשוק העולמי
+    IUC10
+    הירשמו כעת לכנס Unicode הבינלאומי העשירי, שייערך בין התאריכים 12-10 במרץ 1997, במיינץ שבגרמניה. בכנס
+    ישתתפו מומחים מכל ענפי התעשייה בנושא האינטרנט העולמי וה-Unicode, בהתאמה לשוק הבינלאומי והמקומי, ביישום
+    Unicode במערכות הפעלה וביישומים, בגופנים, בפריסת טקסט ובמחשוב רב-לשוני.
+
+    Unicode
+    כאשר העולם רוצה לדבר, הוא מדבר -“Unicode.”
+
+    </test-case>
+
+    <test-case id="IUC10-hu" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/hu">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Európa, a Szoftver s az Internet -
+    Globálissá Változik a Unicode Által
+    IUC10
+    Iratkozzon már most a Tizedik Nemzetközi Unicode Konferenciára, amely Március 10-12 1997
+    lesz megtartva, Meinz-be, Németországba. Ebben a Konferencián az iparág szerte sok szakértő
+    fog részt venni: a globális Internet s Unicode nemzetközisítése s lokalizálása, a
+    Unicode beteljesítése a működő rendszerekben s alkalmazásokban, fontokba, szöveg
+    térbeosztásba s többnyelvű computerekben.
+
+    Unicode
+    Ha a világ beszélni akar, azt Unicode-ul mondja.
+
+    </test-case>
+
+    <test-case id="IUC10-hu-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1250/hu">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Európa, a Szoftver s az Internet -
+    Globálissá Változik a Unicode Által
+    IUC10
+    Iratkozzon már most a Tizedik Nemzetközi Unicode Konferenciára, amely Március 10-12 1997
+    lesz megtartva, Meinz-be, Németországba. Ebben a Konferencián az iparág szerte sok szakértő
+    fog részt venni: a globális Internet s Unicode nemzetközisítése s lokalizálása, a
+    Unicode beteljesítése a működő rendszerekben s alkalmazásokban, fontokba, szöveg
+    térbeosztásba s többnyelvű computerekben.
+
+    Unicode
+    Ha a világ beszélni akar, azt “Unicode”-ul mondja.
+
+    </test-case>
+
+    <test-case id="IUC10-it" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/it">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, software e Internet:
+    Globalizzazione con Unicode
+    IUC10
+    Iscrivetevi subito alla X Conferenza Internazionale su Unicode, che si terrà dal 10 al 12 marzo 1997 a
+    Mainz in Germania. Alla Conferenza parteciperanno esperti di tutti i settori per discutere di Internet globale e
+    Unicode, internazionalizzazione e localizzazione, implementazione di Unicode in sistemi operativi e applicazioni,
+    caratteri, composizione dei testi ed elaborazione multilingue.
+
+    Unicode
+    Quando il mondo vuole comunicare, parla Unicode.
+
+    </test-case>
+
+    <!-- No EUC-JP in this test because it detects as GB18030 -->
+    <test-case id="IUC10-jp" encodings="UTF-8 UTF-32BE UTF-32LE Shift_JIS/ja ISO-2022-JP">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    ヨーロッパ、ソフトウェア、そしてインターネット:
+    Unicode でグローバル化を狙って
+    IUC10
+    第 10 回の Unicode 会議は 1997 年 3 月 10-12日、ドイツのマインツで開かれます。参加希望の方は今すぐ登録してください。
+    この会議では、グローバルなインタネット、Unicode、ソフトウェアの国際化およびローカリゼーション、OS およびアプリケーションでの
+    Unicode のインプリメンテーション、フォント、テキスト表示、マルチ言語コンピューティングにおける業界の専門家が集まります。
+
+    Unicode
+    世界的に話すなら、Unicode です。
+
+    </test-case>
+
+    <test-case id="IUC10-ko" encodings="UTF-8 UTF-32BE UTF-32LE EUC-KR/ko ISO-2022-KR">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    유럽, 소프트웨어 그리고 인터넷:
+    유니코드와 함께 세계로
+    IUC10
+    제10회 유니코드 국제 회의가 1997년 3월 10일부터 12일까지 독일의 마인즈에서 열립니다. 지금 등록하십시오.
+    이 회의에서는 업계 전반의 전문가들이 함께 모여 다음과 같은 분야를 다룹니다. - 인터넷과 유니코드, 국제화와 지역화,
+    운영 체제와 응용 프로그램에서 유니코드의 구현, 글꼴, 문자 배열, 다국어 컴퓨팅.
+
+    Unicode
+    세계를 향한 대화, 유니코드로 하십시오
+
+    </test-case>
+
+    <!-- No UTF-8 in this test because there are no non-ASCII characters. -->
+    <test-case id="IUC10-nl" encodings="UTF-32BE UTF-32LE ISO-8859-1/nl">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + het Internet:
+    wereldwijd met Unicode
+    IUC10
+    Meld u nu aan voor de Tiende Internationale Unicode-conferentie, die van 10 tot 12 maart 1997 in
+    Mainz (Duitsland) wordt gehouden. De Conferentie is een ontmoetingsplaats voor experts uit de industrie op het
+    gebied van het wereldwijde Internet en Unicode, internationalisatie en localisatie, implementatie van Unicode in
+    besturingssystemen en applicaties, lettertypes, tekstopmaak en meertalig computergebruik.
+
+    Unicode
+    Als de wereld wil praten, spreekt hij Unicode.
+
+    </test-case>
+
+    <!-- No language for ISO-8859-1 in this test because no-NO is recogonized as Danish... -->
+    <test-case id="IUC10-no-NO" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Programvare og Internet:
+    Global fokus med Unicode
+    IUC10
+    Registrer deg som deltager på den tiende inernasjonale Unicode konferansen i Mainz, Tyskland, fra 10. til 12. mars,
+    1997. Konferansen vil samle eksperter på Internet, Unicode, internasjonalisering og integrasjon av Unicode i
+    operativsystemer og programmer, fonter, tekst layout og flerspråklig databehandling.
+
+    Unicode
+    Når verden vil snakke, snakker den Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-no-NO-NY" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/no">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, programvare og Internett:
+    Femn verda med Unicode
+    IUC10
+    Meld deg på den 10. internasjonale Unicode-konferansen. Han går føre seg i Mainz i Tyskland i dagane 10.--12. mars
+    1997, og samlar fagkunnige innan konferansetemaet frå heile databransjen. Tema: Det globale Internettet og
+    Unicode, internasjonalisering og nasjonal tilpassing, implementering av Unicode i operativsystem og brukarprogram,
+    skriftsnitt (fontar), tekstutlegg, og fleirspråkleg databehandling.
+
+    Unicode
+    Når verda ønskjer å snakke, talar ho Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-pt-BR" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/pt">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software e a Internet:
+    Globalização com o Unicode
+    IUC10
+    Inscreva-se agora para a Décima Conferência Internacional Sobre O Unicode, realizada entre os dias 10 e 12 de
+    março de 1997 em Mainz na Alemanha. A Conferência reunirá peritos de todas as áreas da indústria especializados
+    em assuntos relacionados com a Internet global e o Unicode, internacionalização e localização de software,
+    implementação do Unicode em sistemas operacionais e aplicativos, fontes, layout de texto e informática multilíngüe.
+
+    Unicode
+    Quando o mundo quer falar, fala Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-pt-PT" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/pt">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software e a Internet:
+    Globalização com o Unicode
+    IUC10
+    Inscreva-se agora para a Décima Conferência Internacional Sobre O Unicode, a ser realizada entre os dias 10 e 12
+    de Março de 1997 em Mainz na Alemanha. A Conferência reunirá peritos de todas as áreas da indústria
+    especializados em assuntos relacionados com a Internet global e o Unicode, internacionalização e localização de
+    software, implementação do Unicode em sistemas operativos e aplicações, tipos de letra, esquematização de
+    texto e informática multilíngue.
+
+    Unicode
+    Quando o mundo quer falar, fala Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-ro" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/ro">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software şi Internet:
+    Globalizarea cu Unicode
+    IUC10
+    Inscrieţi-vă acum la a Zecea Conferinţă Internaţională "Unicode" ce va avea loc in
+    perioada de 10-12 martie, 1997 în Mainz, Germania. Conferinţa va întruni experţi din
+    variate domenii: Internet global şi Unicode, internaţionalizare şi localizare,
+    implementarede Unicode în sisteme de operare şi aplicaţii, fonturi, aranjare de text în
+    pagină, computerizare multilinguală.
+
+    Unicode
+    Când lumea vrea să comunice, vorbeşte Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-ru" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-5/ru windows-1251/ru KOI8-R/ru">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Европа, Программное обеспечение + Интернет:
+    Unicode в глобальных масштабах
+    IUC10
+    Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Unicode, которая состоится
+    10-12 марта 1997 года в Майнце в Германии. Конференция соберет широкий круг экспертов по и
+    вопросам глобального Интернета и Unicode, локализации и интернационализации, воплощению
+    применению Unicode в различных операционных системах и программных приложениях,
+    шрифтах, верстке и многоязычных компьютерных системах.
+
+    Unicode
+    Когда мир желает общаться, он общается на Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-sv" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/sv">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, programvara och Internet:
+    globalisera med Unicode
+    IUC10
+    Anmäl Dig till den tionde internationella Unicode-konferensen, som hålls den 10-12 mars 1997 i Mainz,
+    Tyskland. Vid konferensen kommer experter inom följande områden att delta: det globala Internet och Unicode,
+    internationalisering och lokalisering, implementering av Unicode i operativsystem, tillämpningar, typsnitt,
+    textlayout och mångspråklig datoranvändning.
+
+    Unicode
+    När världen vill tala, så talar den Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-yi" encodings="UTF-8 UTF-32BE UTF-32LE">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אײראָפּע: פּראָגראַמװאַרג און די װעלטנעץ:
+    אוניקאָד איבער דער גאָרער װעלט
+    IUC10
+    פֿאַרשרײַבט זיך שױן אױף דער צענטער אינטערנאַציאָנאַלער אוניקאָד-קאָנפֿערענץ, װאָס װעט פֿאָרקומען דעם
+    10טן ביזן 12טן מאַרץ, 1997, אין מײַנץ, דײַטשלאַנד. די קאָנפֿערענץ װעט צוזאַמענברענגן מבֿינים פֿון װעלטנעץ,
+     אוניקאָד, אי אַלװעלטלעכן אי סבֿיבֿהדיקן פּראָגראַמװאַרג, אַרײַנשטעלן אוניקאָד אין אָפּעריר-סיסטעמען און
+    אָנװענדונגען, שריפֿטן, טעקסט-אױסשטעל, און מערשפּראַכיקע קאָמפּיוטערײַ.
+
+    Unicode
+    אַז די װעלט װיל רעדן, רעדט זי אוניקאָד
+
+    </test-case>
+
+    <test-case id="IUC10-zh-Hant" encodings="UTF-8 UTF-32BE UTF-32LE Big5/zh">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    歐洲，軟體及網際網路：
+    讓統一碼（Unicode）領你進入全世界
+    IUC10
+    你現在就應報名將在１９９７年３月１０至１２日於德國美姿城（Mainz）召開的第十屆國際統一碼研討會。
+    本次研討會將邀請多位業界專家研討關於全球網際網路及統一碼發展、國際化及本土化、
+    支援統一碼的作業系統及應用程式、字型、文字排版、電腦多國語文化等多項課題。
+
+    Unicode
+    當世界需要溝通時，請用統一碼（Unicode）
+
+    </test-case>
+
+    <!-- No ISO-2022-CN in this test because Java doesn't support it in both directions :-( -->
+    <test-case id="IUC10-zh-Hans" encodings="UTF-8 UTF-32BE UTF-32LE ISO-2022-CN GB18030/zh">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    欧洲，软件＋互联网
+    用统一码 (Unicode) 走遍世界
+    IUC10
+    将于1997年 3 月10日－12日在德国 Mainz 市举行的第十届统一码国际研讨会现在开始注册。
+    本次会议将汇集各方面的专家。涉及的领域包括：国际互联网和统一码，国际化和本地化，
+    统一码在操作系统和应用软件中的实现，字型，文本格式以及多文种计算等。
+
+    Unicode
+    当世界需要沟通时，请用Unicode！
+
+Conference Program
+    </test-case>
+
+    <test-case id="WIU-cz" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/cs">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Co je Unicode?
+
+    Unicode přiřazuje každému znaku jedinečné číslo,
+    nezávisle na platformě,
+    nezávisle na programu,
+    nezávisle na jazyce.
+
+    Počítače, ze své podstaty, pracují pouze s čísly. Písmena a další znaky ukládají tak, že každému z nich
+    přiřadí číslo. Před vznikem Unicode existovaly stovky rozdílných kódovacích systémů pro přiřazování těchto
+    čísel. Žádné z těchto kódování nemohlo obsahovat dostatek znaků: například Evropská unie sama potřebuje
+    několik různých kódování, aby pokryla všechny své jazyky. Dokonce i pro jeden jediný jazyk, jako je angličtina,
+    nevyhovovalo žádné kódování pro všechny písmena, interpunkci a běžně používané technické symboly.
+
+    Tyto kódovací systémy také byly v konfliktu jeden s druhým. To znamená, že dvě kódování mohou používat
+    stejné číslo pro dva různé znaky, nebo používat různá čísla pro stejný znak. Jakýkoli počítač (zvláště servery)
+    musí podporovat mnoho různých kódování; přesto, kdykoli jsou data předávána mezi různými kódováními nebo
+    platformami, hrozí, že tato data budou poškozena.
+
+    </test-case>
+
+    <test-case id="WIU-el" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-7/el">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Τι είναι το Unicode;
+
+    Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+    ανεξάρτητα από το λειτουργικό σύστημα,
+    ανεξάρτητα από το λογισμικό,
+    ανεξάρτητα από την γλώσσα.
+
+    Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και
+    άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία
+    κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω
+    περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν,
+    η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των
+    χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν
+    επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+    Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να
+    χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για
+    τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών
+    κωδικοσελίδων ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή
+    λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+    </test-case>
+
+    <test-case id="WIU-el-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1253/el">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Τι είναι το “Unicode”;
+
+    Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+    ανεξάρτητα από το λειτουργικό σύστημα,
+    ανεξάρτητα από το λογισμικό,
+    ανεξάρτητα από την γλώσσα.
+
+    Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και
+    άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία
+    κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω
+    περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν,
+    η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των
+    χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν
+    επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+    Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να
+    χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για
+    τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών
+    κωδικοσελίδων ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή
+    λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+    </test-case>
+
+    <test-case id="WIU-pl" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/pl">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Czym jest Unikod ?
+
+    Unikod przypisuje unikalny numer każdemu znakowi, niezależny od używanej platformy, programu czy języka.
+
+    Zasadniczo, komputery rozumieją tylko liczby. Zapisują litery i inne znaki przypisując każdemu z nich liczbę.
+    Nim powstał Unikod, było wiele różnych systemów kodowania przypisujących te liczby. Brakowało jednego,
+    który mógłby pomieścić wystarczająco dużą liczbę znaków. Przykładowo, sama Unia Europejska potrzebowała
+    kilku różnych kodowań, by móc używać wszystkich używanych w niej języków. Nawet dla pojedynczego języka
+    takiego jak np. angielski brakowało jednego kodowania, które byłoby odpowiednie dla zaprezentowania
+    wszystkich liter, znaków przestankowych i popularnych symboli technicznych.
+
+    Innym problemem było, że kodowania te kolidowały ze sobą. Dwa, różne kodowania używały jednej liczby dla dwu
+    różnych znaków lub różnych liczb dla tego samego znaku. Wszystkie komputery (między innymi serwery) muszą
+    wspierać wszystkie te kodowania, gdyż dane przesyłane między różnymi systemami operacyjnymi zawsze
+    narażone są na uszkodzenie.
+
+    </test-case>
+
+    <test-case id="WIU-tr" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-9/tr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Evrensel Kod Nedir?
+
+    Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+    hangi altyapı,
+    hangi yazılım,
+    hangi dil olursa olsun.
+
+    İlke olarak, bilgisayarlar sadece sayılarla işlem yaparlar. Kelimelerin ve yazı karakterlerinin her biri için
+    birer sayı atarlar ve böyle saklarlar. Evrensel Kod keşfedilmeden önce, bu sayıları atamak için birçok şifreleme
+    yöntemi vardı. Ancak, tüm bu dilleri gösterebilecek, örneğin; Avrupa Topluluğu bünyesindeki tüm ülkelerin dillerini
+    kapsayacak bir tek şifreleme yöntemi yoktu. Bunun yanısıra, sadece İngilizcedeki harfleri, noktalama
+    işaretlerini ve teknik sembolleri kapsayan tek bir şifreleme yöntemi de bulunmamaktaydı.
+
+    Bu şifreleme yöntemleri kendi aralarında çelişmektedir. İki farklı şifreleme, aynı sayıyı iki farklı karaktere
+    vermiş olabilir ya da farklı sayılar aynı karekteri kodlayabilir. Bilgisayarlar, özellikle sunucular, birçok
+    şifrelemeyi desteklemek zorundadırlar; veriler, farklı şifreleme ve altyapılardan geçerken bozulma riski taşırlar.
+
+    </test-case>
+
+    <test-case id="WIU-tr-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1254/tr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    “Evrensel Kod” Nedir?
+
+    Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+    hangi altyapı,
+    hangi yazılım,
+    hangi dil olursa olsun.
+
+    İlke olarak, bilgisayarlar sadece sayılarla işlem yaparlar. Kelimelerin ve yazı karakterlerinin her biri için
+    birer sayı atarlar ve böyle saklarlar. Evrensel Kod keşfedilmeden önce, bu sayıları atamak için birçok şifreleme
+    yöntemi vardı. Ancak, tüm bu dilleri gösterebilecek, örneğin; Avrupa Topluluğu bünyesindeki tüm ülkelerin dillerini
+    kapsayacak bir tek şifreleme yöntemi yoktu. Bunun yanısıra, sadece İngilizcedeki harfleri, noktalama
+    işaretlerini ve teknik sembolleri kapsayan tek bir şifreleme yöntemi de bulunmamaktaydı.
+
+    Bu şifreleme yöntemleri kendi aralarında çelişmektedir. İki farklı şifreleme, aynı sayıyı iki farklı karaktere
+    vermiş olabilir ya da farklı sayılar aynı karekteri kodlayabilir. Bilgisayarlar, özellikle sunucular, birçok
+    şifrelemeyi desteklemek zorundadırlar; veriler, farklı şifreleme ve altyapılardan geçerken bozulma riski taşırlar.
+
+    </test-case>
+</charset-detection-tests>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java b/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
new file mode 100644
index 0000000..2e61023
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -0,0 +1,450 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.charsetdet;
+
+import java.io.ByteArrayInputStream;
+import java.io.Reader;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+//#endif
+
+/**
+ * @author andy
+ */
+public class TestCharsetDetector extends TestFmwk
+{
+    
+    /**
+     * Constructor
+     */
+    public TestCharsetDetector()
+    {
+    }
+
+    public static void main(String[] args) {
+        try
+        {
+            TestCharsetDetector test = new TestCharsetDetector();
+            test.run(args);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private void CheckAssert(boolean exp) {
+        if (exp == false) {
+            String msg;
+            try {
+                throw new Exception();
+            }
+            catch (Exception e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##           msg = "Test failure  " + e.getMessage() ;
+//#else
+                StackTraceElement failPoint = e.getStackTrace()[1];
+                msg = "Test failure in file " + failPoint.getFileName() +
+                             " at line " + failPoint.getLineNumber();
+//#endif
+            }
+            errln(msg);
+        }
+        
+    }
+    
+    private String stringFromReader(Reader reader)
+    {
+        StringBuffer sb = new StringBuffer();
+        char[] buffer   = new char[1024];
+        int bytesRead   = 0;
+        
+        try {
+            while ((bytesRead = reader.read(buffer, 0, 1024)) >= 0) {
+                sb.append(buffer, 0, bytesRead);
+            }
+            
+            return sb.toString();
+        } catch (Exception e) {
+            errln("stringFromReader() failed: " + e.toString());
+            return null;
+        }
+    }
+    
+    public void TestConstruction() {
+        int i;
+        CharsetDetector  det = new CharsetDetector();
+        if(det==null){
+            errln("Could not construct a charset detector");
+        }
+        String [] charsetNames = CharsetDetector.getAllDetectableCharsets();
+        CheckAssert(charsetNames.length != 0);
+        for (i=0; i<charsetNames.length; i++) {
+            CheckAssert(charsetNames[i].equals("") == false); 
+            // System.out.println("\"" + charsetNames[i] + "\"");
+        }
+     }
+
+    public void TestInputFilter() throws Exception
+    {
+        String s = "<a> <lot> <of> <English> <inside> <the> <markup> Un tr\u00E8s petit peu de Fran\u00E7ais. <to> <confuse> <the> <detector>";
+        byte[] bytes = s.getBytes("ISO-8859-1");
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.enableInputFilter(true);
+        if (!det.inputFilterEnabled()){
+            errln("input filter should be enabled");
+        }
+        
+        det.setText(bytes);
+        m = det.detect();
+        
+        if (! m.getLanguage().equals("fr")) {
+            errln("input filter did not strip markup!");
+        }
+        
+        det.enableInputFilter(false);
+        det.setText(bytes);
+        m = det.detect();
+        
+        if (! m.getLanguage().equals("en")) {
+            errln("unfiltered input did not detect as English!");
+        }
+    }
+    
+    public void TestUTF8() throws Exception {
+        
+        String  s = "This is a string with some non-ascii characters that will " +
+                    "be converted to UTF-8, then shoved through the detection process.  " +
+                    "\u0391\u0392\u0393\u0394\u0395" +
+                    "Sure would be nice if our source could contain Unicode directly!";
+        byte [] bytes = s.getBytes("UTF-8");
+        CharsetDetector det = new CharsetDetector();
+        String retrievedS;
+        Reader reader;
+        
+        retrievedS = det.getString(bytes, "UTF-8");
+        CheckAssert(s.equals(retrievedS));
+        
+        reader = det.getReader(new ByteArrayInputStream(bytes), "UTF-8");
+        CheckAssert(s.equals(stringFromReader(reader)));
+        det.setDeclaredEncoding("UTF-8"); // Jitterbug 4451, for coverage
+    }
+    
+    public void TestUTF16() throws Exception
+    {
+        String source = 
+                "u0623\u0648\u0631\u0648\u0628\u0627, \u0628\u0631\u0645\u062c\u064a\u0627\u062a " +
+                "\u0627\u0644\u062d\u0627\u0633\u0648\u0628 \u002b\u0020\u0627\u0646\u062a\u0631\u0646\u064a\u062a";
+        
+        byte[] beBytes = source.getBytes("UnicodeBig");
+        byte[] leBytes = source.getBytes("UnicodeLittle");
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.setText(beBytes);
+        m = det.detect();
+        
+        if (! m.getName().equals("UTF-16BE")) {
+            errln("Encoding detection failure: expected UTF-16BE, got " + m.getName());
+        }
+        
+        det.setText(leBytes);
+        m = det.detect();
+        
+        if (! m.getName().equals("UTF-16LE")) {
+            errln("Encoding detection failure: expected UTF-16LE, got " + m.getName());
+        }
+
+        // Jitterbug 4451, for coverage
+        int confidence = m.getConfidence(); 
+        if(confidence != 100){
+            errln("Did not get the expected confidence level " + confidence);
+        }
+        int matchType = m.getMatchType();
+        if(matchType != 0){
+            errln("Did not get the expected matchType level " + matchType);
+        }
+    }
+    
+    public void TestC1Bytes() throws Exception
+    {
+        String sISO =
+            "This is a small sample of some English text. Just enough to be sure that it detects correctly.";
+        
+        String sWindows =
+            "This is another small sample of some English text. Just enough to be sure that it detects correctly. It also includes some \u201CC1\u201D bytes.";
+
+        byte[] bISO     = sISO.getBytes("ISO-8859-1");
+        byte[] bWindows = sWindows.getBytes("windows-1252");
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.setText(bWindows);
+        m = det.detect();
+        
+        if (m.getName() != "windows-1252") {
+            errln("Text with C1 bytes not correctly detected as windows-1252.");
+            return;
+        }
+        
+        det.setText(bISO);
+        m = det.detect();
+        
+        if (m.getName() != "ISO-8859-1") {
+            errln("Text without C1 bytes not correctly detected as ISO-8859-1.");
+        }
+    }
+    
+    public void TestShortInput() {
+        // Test that detection with very short byte strings does not crash and burn.
+        // The shortest input that should produce positive detection result is two bytes, 
+        //   a UTF-16 BOM.
+        // TODO:  Detector confidence levels needs to be refined for very short input.
+        //        Too high now, for some charsets that happen to be compatible with a few bytes of input.
+        byte [][]  shortBytes = new byte [][] 
+            {
+                {},
+                {(byte)0x0a},
+                {(byte)'A', (byte)'B'},
+                {(byte)'A', (byte)'B', (byte)'C'},
+                {(byte)'A', (byte)'B', (byte)'C', (byte)'D'}
+            };
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        for (int i=0; i<shortBytes.length; i++) {
+            det.setText(shortBytes[i]);
+            m = det.detect();
+            logln("i=" + i + " -> " + m.getName());
+        }
+    }
+    
+    public void TestBufferOverflow()
+    {
+        byte testStrings[][] = {
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24, (byte) 0x28}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24, (byte) 0x28, (byte) 0x44}, /* A complete ISO-2022 shift state at the end with a bad one at the start */
+            {(byte) 0x1b, (byte) 0x24, (byte) 0x28, (byte) 0x44}, /* A complete ISO-2022 shift state at the end */
+            {(byte) 0xa1}, /* Could be a single byte shift-jis at the end */
+            {(byte) 0x74, (byte) 0x68, (byte) 0xa1}, /* Could be a single byte shift-jis at the end */
+            {(byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0xa1} /* Could be a single byte shift-jis at the end, but now we have English creeping in. */
+        };
+        
+        String testResults[] = {
+            "windows-1252",
+            "windows-1252",
+            "windows-1252",
+            "windows-1252",
+            "ISO-2022-JP",
+            null,
+            null,
+            "ISO-8859-1"
+        };
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch match;
+
+        det.setDeclaredEncoding("ISO-2022-JP");
+
+        for (int idx = 0; idx < testStrings.length; idx += 1) {
+            det.setText(testStrings[idx]);
+            match = det.detect();
+
+            if (match == null) {
+                if (testResults[idx] != null) {
+                    errln("Unexpectedly got no results at index " + idx);
+                }
+                else {
+                    logln("Got no result as expected at index " + idx);
+                }
+                continue;
+            }
+
+            if (testResults[idx] == null || ! testResults[idx].equals(match.getName())) {
+                errln("Unexpectedly got " + match.getName() + " instead of " + testResults[idx] +
+                      " at index " + idx + " with confidence " + match.getConfidence());
+                return;
+            }
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void TestDetection()
+    {
+        //
+        //  Open and read the test data file.
+        //
+        //InputStreamReader isr = null;
+        
+        try {
+            InputStream is = TestCharsetDetector.class.getResourceAsStream("CharsetDetectionTests.xml");
+            if (is == null) {
+                errln("Could not open test data file CharsetDetectionTests.xml");
+                return;
+            }
+            
+            //isr = new InputStreamReader(is, "UTF-8"); 
+
+            // Set up an xml parser.
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            
+            factory.setIgnoringComments(true);
+            
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            
+            // Parse the xml content from the test case file.
+            Document doc = builder.parse(is, null);
+            Element root = doc.getDocumentElement();
+            
+            NodeList testCases = root.getElementsByTagName("test-case");
+            
+            // Process each test case
+            for (int n = 0; n < testCases.getLength(); n += 1) {
+                Node testCase = testCases.item(n);
+                NamedNodeMap attrs = testCase.getAttributes();
+                NodeList testData  = testCase.getChildNodes();
+                StringBuffer testText = new StringBuffer();
+                String id = attrs.getNamedItem("id").getNodeValue();
+                String encodings = attrs.getNamedItem("encodings").getNodeValue();
+                
+                // Collect the test case text.
+                for (int t = 0; t < testData.getLength(); t += 1) {
+                    Node textNode = testData.item(t);
+                    
+                    testText.append(textNode.getNodeValue());                    
+                }
+                
+                // Process test text with each encoding / language pair.
+                String testString = testText.toString();
+                String[] encodingList = encodings.split(" ");
+                for (int e = 0; e < encodingList.length; e += 1) {
+                    checkEncoding(testString, encodingList[e], id);
+                }
+            }
+            
+        } catch (Exception e) {
+            errln("exception while processing test cases: " + e.toString());
+        }
+    }
+
+    private void checkMatch(CharsetDetector det, String testString, String encoding, String language, String id) throws Exception
+    {
+        CharsetMatch m = det.detect();
+        String decoded;
+        
+        if (! m.getName().equals(encoding)) {
+            errln(id + ": encoding detection failure - expected " + encoding + ", got " + m.getName());
+            return;
+        }
+        
+        String charsetMatchLanguage = m.getLanguage();
+        if ((language != null && !charsetMatchLanguage.equals(language))
+            || (language == null && charsetMatchLanguage != null)
+            || (language != null && charsetMatchLanguage == null))
+        {
+            errln(id + ", " + encoding + ": language detection failure - expected " + language + ", got " + m.getLanguage());
+        }
+        
+        if (encoding.startsWith("UTF-32")) {
+            return;
+        }
+        
+        decoded = m.getString();
+        
+        if (! testString.equals(decoded)) {
+            errln(id + ", " + encoding + ": getString() didn't return the original string!");
+        }
+        
+        decoded = stringFromReader(m.getReader());
+        
+        if (! testString.equals(decoded)) {
+            errln(id + ", " + encoding + ": getReader() didn't yield the original string!");
+        }
+    }
+    
+    private void checkEncoding(String testString, String encoding, String id)
+    {
+        String enc = null, lang = null;
+        String[] split = encoding.split("/");
+        
+        enc = split[0];
+        
+        if (split.length > 1) {
+            lang = split[1];
+        }
+
+        try {
+            CharsetDetector det = new CharsetDetector();
+            byte[] bytes;
+            
+            //if (enc.startsWith("UTF-32")) {
+            //    UTF32 utf32 = UTF32.getInstance(enc);
+                
+            //    bytes = utf32.toBytes(testString);
+            //} else {
+                String from = enc;
+
+                while (true) {
+                    try {
+                        bytes = testString.getBytes(from);
+                    } catch (UnsupportedOperationException uoe) {
+                         // In some runtimes, the ISO-2022-CN converter
+                         // only converts *to* Unicode - we have to use
+                         // x-ISO-2022-CN-GB to convert *from* Unicode.
+                        if (from.equals("ISO-2022-CN")) {
+                            from = "x-ISO-2022-CN-GB";
+                            continue;
+                        }
+                        
+                        // Ignore any other converters that can't
+                        // convert from Unicode.
+                        return;
+                    } catch (UnsupportedEncodingException uee) {
+                        // Ignore any encodings that this runtime
+                        // doesn't support.
+                        return;
+                    }
+                    
+                    break;
+                }
+            //}
+        
+            det.setText(bytes);
+            checkMatch(det, testString, enc, lang, id);
+            
+            det.setText(new ByteArrayInputStream(bytes));
+            checkMatch(det, testString, enc, lang, id);
+         } catch (Exception e) {
+            errln(id + ": " + e.toString() + "enc=" + enc);
+            e.printStackTrace();
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/cldr/TestAll.java b/src/com/ibm/icu/dev/test/cldr/TestAll.java
new file mode 100644
index 0000000..9dc2ee1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/cldr/TestAll.java
@@ -0,0 +1,29 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.cldr;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "TestCLDRVsICU",
+              },
+              "All Cldr Vs ICU Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Cldr";
+}
diff --git a/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java b/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
new file mode 100644
index 0000000..ecdc595
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
@@ -0,0 +1,552 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+**********************************************************************
+* Copyright (c) 2002-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.cldr;
+
+import java.io.File;
+
+//import org.unicode.cldr.util.LanguageTagParser;
+//import org.unicode.cldr.util.Utility;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.Iterator;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+//import org.unicode.cldr.test.CLDRTest;
+//import org.unicode.cldr.tool.GenerateCldrTests;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * This is a file that runs the CLDR tests for ICU4J, to verify that ICU4J implements them
+ * correctly.
+ * WARNING: 
+ * 1. for this to work right, you have to have downloaded the CLDR data, and
+ * then set the CLDR directory correctly, using
+ * -DCLDR_DIRECTORY=<top level of cldr>
+ * 2. You probably also need to increase memory, eg with -Xmx512m
+ * 3. For speed, you should also use -DCLDR_DTD_CACHE=C:\cldrcache\, where
+ * C:\cldrcache\ is a temp directory to keep the program from hitting the net for
+ * each file access.
+ * 4. You may use other environment variables to narrow what you test. Eg
+ * -DXML_MATCH=".*" -DTEST_MATCH="zone.*" -DZONE_MATCH="(?!America/Argentina).*" 
+ *   a. -DXML_MATCH="de.*" (or whatever regex you want) to just
+ *   test certain locales.
+ *   b. -DTEST_MATCH="zone.*" (or whatever regex you want) to just test collation, numbers, etc.
+ *   c. -DZONE_MATCH=".*Moscow.*" (to only test certain zones)
+ * @author medavis
+ */
+public class TestCLDRVsICU extends TestFmwk {
+    static final boolean DEBUG = false;
+
+    //ULocale uLocale = ULocale.ENGLISH;
+    //Locale oLocale = Locale.ENGLISH; // TODO Drop once ICU4J has ULocale everywhere
+    //static PrintWriter log;
+    SAXParser SAX;
+    static Matcher LOCALE_MATCH, TEST_MATCH, ZONE_MATCH;
+    static String CLDR_DIRECTORY;
+    static {
+        System.out.println();
+        LOCALE_MATCH = getEnvironmentRegex("XML_MATCH", ".*");
+        TEST_MATCH = getEnvironmentRegex("TEST_MATCH", ".*");
+        ZONE_MATCH = getEnvironmentRegex("ZONE_MATCH", ".*"); // example
+
+        // WARNING: THIS IS TEMPORARY UNTIL I GET THE FILES STRAIGHTENED OUT
+        CLDR_DIRECTORY = getEnvironmentString("CLDR_DIRECTORY", "C:\\Unicode-CVS2\\cldr\\");
+        System.out.println();
+    }
+
+    private static Matcher getEnvironmentRegex(String key, String defaultValue) {
+        return Pattern.compile(getEnvironmentString(key, defaultValue)).matcher("");
+    }
+
+    private static String getEnvironmentString(String key, String defaultValue) {
+        String temp = System.getProperty(key);
+        if (temp == null) temp = defaultValue;
+        else System.out.print("-D" + key + "=\"" + temp + "\" ");
+        return temp;
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestCLDRVsICU().run(args);
+    }
+
+     Set allLocales = new TreeSet();
+
+    public void TestFiles() throws SAXException, IOException {
+        // only get ICU's locales
+        Set s = new TreeSet();
+        addLocales(NumberFormat.getAvailableULocales(), s);
+        addLocales(DateFormat.getAvailableULocales(), s);
+        addLocales(Collator.getAvailableULocales(), s);
+
+        // filter, to make tracking down bugs easier
+
+        for (Iterator it = s.iterator(); it.hasNext();) {
+            String locale = (String)it.next();
+            if (!LOCALE_MATCH.reset(locale).matches()) continue;
+            _test(locale);
+        }
+    }
+    
+    public void addLocales(ULocale[] list, Collection s) {
+        for (int i = 0; i < list.length; ++i) {
+            allLocales.add(list[i].toString());
+            s.add(list[i].getLanguage());
+        }
+    }
+
+    public String getLanguage(ULocale uLocale) {
+        String result = uLocale.getLanguage();
+        String script = uLocale.getScript();
+        if (script.length() != 0) result += "_" + script;
+        return result;
+    }
+
+    public void _test(String localeName) throws SAXException, IOException {
+        //uLocale = new ULocale(localeName);
+        //oLocale = uLocale.toLocale();
+
+        File f = new File(CLDR_DIRECTORY + "common\\test\\"+ localeName + ".xml");
+        logln("Testing " + f.getCanonicalPath());
+        SAX.parse(f, DEFAULT_HANDLER);
+    }
+
+    static Transliterator toUnicode = Transliterator.getInstance("any-hex");
+    static public String showString(String in) {
+        return "\u00AB" + in + "\u00BB (" + toUnicode.transliterate(in) + ")";
+    }
+    // ============ SAX Handler Infrastructure ============
+
+    abstract public class Handler {
+        Map settings = new TreeMap();
+        String name;
+        List currentLocales = new ArrayList();
+        int failures = 0;
+
+        void setName(String name) {
+            this.name = name;
+        }
+        void set(String attributeName, String attributeValue) {
+            //if (DEBUG) logln(attributeName + " => " + attributeValue);
+            settings.put(attributeName, attributeValue);
+        }
+        void checkResult(String value) {
+            if ("true".equals(settings.get("draft"))) {
+                return; // skip draft
+            }
+            ULocale ul = new ULocale("xx");
+            try {
+                for (int i = 0; i < currentLocales.size(); ++i) {
+                    ul = (ULocale)currentLocales.get(i);
+                    //loglnSAX("  Checking " + ul + "(" + ul.getDisplayName(ULocale.ENGLISH) + ")" + " for " + name);
+                    handleResult(ul, value);
+                    if (failures != 0) {
+                        errln("\tTotal Failures: " + failures + "\t" + ul + "(" + ul.getDisplayName(ULocale.ENGLISH) + ")");
+                        failures = 0;
+                    }
+                }
+            } catch (Exception e) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                e.printStackTrace(pw);
+                pw.flush();
+                errln("Exception: Locale: " + ul + ",\tValue: <" + value + ">\r\n" + sw.toString());
+            }
+        }
+        public void loglnSAX(String message) {
+            String temp = message + "\t[" + name;
+            for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                String attributeName = (String) it.next();
+                String attributeValue = (String) settings.get(attributeName);
+                temp += " " + attributeName + "=<" + attributeValue + ">";
+            }
+            logln(temp + "]");
+        }
+        int lookupValue(Object x, Object[] list) {
+            for (int i = 0; i < list.length; ++i) {
+                if (x.equals(list[i])) return i;
+            }
+            loglnSAX("Unknown String: " + x);
+            return -1;
+        }
+        abstract void handleResult(ULocale currentLocale, String value) throws Exception;
+        /**
+         * @param attributes
+         */
+        public void setAttributes(Attributes attributes) {
+            String localeList = attributes.getValue("locales");
+            String[] currentLocaleString = new String[50];
+            com.ibm.icu.impl.Utility.split(localeList, ' ', currentLocaleString);
+            currentLocales.clear();
+            for (int i = 0; i < currentLocaleString.length; ++i) {
+                if (currentLocaleString[i].length() == 0) continue;
+                if (allLocales.contains("")) {
+                    logln("Skipping locale, not in ICU4J: " + currentLocaleString[i]);
+                    continue;
+                }
+                currentLocales.add(new ULocale(currentLocaleString[i]));
+            }
+            if (DEBUG) logln("Setting locales: " + currentLocales);
+        }
+    }
+
+    public Handler getHandler(String name, Attributes attributes) {
+        if (DEBUG) logln("Creating Handler: " + name);
+        Handler result = (Handler) RegisteredHandlers.get(name);
+        if (result == null) logln("Unexpected test type: " + name);
+        else {
+            result.setAttributes(attributes);
+        }
+        return result;
+    }
+
+    public void addHandler(String name, Handler handler) {
+        if (!TEST_MATCH.reset(name).matches()) handler = new NullHandler();
+        handler.setName(name);
+        RegisteredHandlers.put(name, handler);
+    }
+    Map RegisteredHandlers = new HashMap();
+
+    class NullHandler extends Handler {
+        void handleResult(ULocale currentLocale, String value) throws Exception {}        
+    }
+
+    // ============ Statics for Date/Number Support ============
+
+    static TimeZone utc = TimeZone.getTimeZone("GMT");
+    static DateFormat iso = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+    {
+        iso.setTimeZone(utc);
+    }
+    static int[] DateFormatValues = {-1, DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG, DateFormat.FULL};
+    static String[] DateFormatNames = {"none", "short", "medium", "long", "full"};
+
+    static String[] NumberNames = {"standard", "integer", "decimal", "percent", "scientific", "GBP"};
+
+
+    // ============ Handler for Collation ============ 
+    static UnicodeSet controlsAndSpace = new UnicodeSet("[:cc:]");
+    
+    static String remove(String in, UnicodeSet toRemove) {
+        int cp;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < in.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(in, i);
+            if (!toRemove.contains(cp)) UTF16.append(result, cp);
+        }
+        return result.toString();
+    }
+
+    {
+        addHandler("collation", new Handler() {
+            public void handleResult(ULocale currentLocale, String value) {
+                Collator col = Collator.getInstance(currentLocale);
+                String lastLine = "";
+                int count = 0;
+                for (int pos = 0; pos < value.length();) {
+                    int nextPos = value.indexOf('\n', pos);
+                    if (nextPos < 0)
+                        nextPos = value.length();
+                    String line = value.substring(pos, nextPos);
+                    line = remove(line, controlsAndSpace); // HACK for SAX
+                    if (line.trim().length() != 0) { // HACK for SAX
+                        int comp = col.compare(lastLine, line);
+                        if (comp > 0) {
+                            failures++;
+                            errln("\tLine " + (count + 1) + "\tFailure: "
+                                    + showString(lastLine) + " should be leq "
+                                    + showString(line));
+                        } else if (DEBUG) {
+                            logln("OK: " + line);
+                        }
+                        lastLine = line;
+                    }
+                    pos = nextPos + 1;
+                    count++;
+                }
+            }
+        });
+
+        // ============ Handler for Numbers ============ 
+        addHandler("number", new Handler() {
+            public void handleResult(ULocale locale, String result) {
+                NumberFormat nf = null;
+                double v = Double.NaN;
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings
+                            .get(attributeName);
+                    if (attributeName.equals("input")) {
+                        v = Double.parseDouble(attributeValue);
+                        continue;
+                    }
+                    // must be either numberType at this point
+                    int index = lookupValue(attributeValue, NumberNames);
+                    if (DEBUG) logln("Getting number format for " + locale);
+                    switch(index) {
+                    case 0: nf = NumberFormat.getInstance(locale); break;
+                    case 1: nf = NumberFormat.getIntegerInstance(locale); break;
+                    case 2: nf = NumberFormat.getNumberInstance(locale); break;
+                    case 3: nf = NumberFormat.getPercentInstance(locale); break;
+                    case 4: nf = NumberFormat.getScientificInstance(locale); break;
+                    default: nf = NumberFormat.getCurrencyInstance(locale); 
+                        nf.setCurrency(Currency.getInstance(attributeValue)); break;
+                    }
+                    String temp = nf.format(v).trim();
+                    result = result.trim(); // HACK because of SAX
+                    if (!temp.equals(result)) {
+                        errln("Number: Locale: " + locale
+                                + ", \tType: " + attributeValue
+                                + ", \tDraft: " + settings.get("draft")
+                                + ", \tCLDR: <" + result + ">, ICU: <" + temp + ">");
+                    }
+
+                }
+            }
+        });
+
+        // ============ Handler for Dates ============
+        addHandler("date", new Handler() {
+            public void handleResult(ULocale locale, String result) throws ParseException {
+                int dateFormat = 0;
+                int timeFormat = 0;
+                Date date = new Date();
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings
+                            .get(attributeName);
+                    if (attributeName.equals("input")) {
+                        date = iso.parse(attributeValue);
+                        continue;
+                    }
+                    // must be either dateType or timeType at this point
+                    int index = lookupValue(attributeValue, DateFormatNames);
+                    if (attributeName.equals("dateType"))
+                        dateFormat = index;
+                    else
+                        timeFormat = index;
+
+                }
+                SimpleDateFormat dt = getDateFormat(locale, dateFormat, timeFormat);
+                dt.setTimeZone(utc);
+                String temp = dt.format(date).trim();
+                result = result.trim(); // HACK because of SAX
+                if (!temp.equals(result)) {
+                    errln("DateTime: Locale: " + locale 
+                            + ", \tDate: " + DateFormatNames[dateFormat]
+                            + ", \tTime: " + DateFormatNames[timeFormat]
+                            + ", \tDraft: " + settings.get("draft")
+                            + ", \tCLDR: <" + result + ">, ICU: <" + temp + ">");
+                }
+            }
+
+            private SimpleDateFormat getDateFormat(ULocale locale, int dateFormat, int timeFormat) {
+                if (DEBUG) logln("Getting date/time format for " + locale);
+                if (DEBUG && "ar_EG".equals(locale.toString())) {
+                    System.out.println("debug here");
+                }
+                DateFormat dt;
+                if (dateFormat == 0) {
+                    dt = DateFormat.getTimeInstance(DateFormatValues[timeFormat], locale);
+                    if (DEBUG) System.out.print("getTimeInstance");
+                } else if (timeFormat == 0) {
+                    dt = DateFormat.getDateInstance(DateFormatValues[dateFormat], locale);
+                    if (DEBUG) System.out.print("getDateInstance");
+                } else {
+                    dt = DateFormat.getDateTimeInstance(DateFormatValues[dateFormat], DateFormatValues[timeFormat], locale);
+                    if (DEBUG) System.out.print("getDateTimeInstance");
+                }
+                if (DEBUG) System.out.println("\tinput:\t" + dateFormat + ", " + timeFormat + " => " + ((SimpleDateFormat)dt).toPattern());
+                return (SimpleDateFormat)dt;
+            }
+        });
+
+        // ============ Handler for Zones ============
+        addHandler("zoneFields", new Handler() {
+            String date = "";
+            String zone = "";
+            String parse = "";
+            String pattern = "";
+            
+            public void handleResult(ULocale locale, String result) throws ParseException {
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings.get(attributeName);
+                    if (attributeName.equals("date")) {
+                        date = attributeValue;
+                    } else if (attributeName.equals("field")) {
+                        pattern = attributeValue;
+                    } else if (attributeName.equals("zone")) {
+                        zone = attributeValue;
+                    } else if (attributeName.equals("parse")) {
+                        parse = attributeValue;
+                    }
+                }
+                if (!ZONE_MATCH.reset(zone).matches()) return;
+                Date dateValue = iso.parse(date);
+                SimpleDateFormat field = new SimpleDateFormat(pattern, locale);
+                field.setTimeZone(TimeZone.getTimeZone(zone));
+                String temp = field.format(dateValue).trim();
+                // SKIP PARSE FOR NOW
+                result = result.trim(); // HACK because of SAX
+                if (!temp.equals(result)) {
+                    temp = field.format(dateValue).trim(); // call again for debugging
+                    errln("Zone Format: Locale: " + locale 
+                            + ", \tZone: " + zone
+                            + ", \tDate: " + date
+                            + ", \tField: " + pattern
+                            + ", \tParse: " + parse
+                            + ", \tDraft: " + settings.get("draft")
+                            + ", \tCLDR: <" + result
+                            + ">, \tICU: <" + temp + ">");
+                }
+            }
+        });
+    }
+
+    // ============ Gorp for SAX ============
+
+    {
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setValidating(true);
+            SAX = factory.newSAXParser();
+        } catch (Exception e) {
+            throw new IllegalArgumentException("can't start");
+        }
+    }
+
+    DefaultHandler DEFAULT_HANDLER = new DefaultHandler() {
+        static final boolean DEBUG = false;
+        StringBuffer lastChars = new StringBuffer();
+        //boolean justPopped = false;
+        Handler handler;
+
+        public void startElement(
+            String uri,
+            String localName,
+            String qName,
+            Attributes attributes)
+            throws SAXException {
+                //data.put(new ContextStack(contextStack), lastChars);
+                //lastChars = "";
+                try {
+                    if (qName.equals("cldrTest")) {
+                     // skip
+                    } else if (qName.equals("result")) {
+                        for (int i = 0; i < attributes.getLength(); ++i) {
+                            handler.set(attributes.getQName(i), attributes.getValue(i));
+                        }
+                    } else {
+                        handler = getHandler(qName, attributes);
+                        //handler.set("locale", uLocale.toString());
+                    }
+                    //if (DEBUG) logln("startElement:\t" + contextStack);
+                    //justPopped = false;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+        }
+        public void endElement(String uri, String localName, String qName)
+            throws SAXException {
+                try {
+                    //if (DEBUG) logln("endElement:\t" + contextStack);
+                    if (qName.equals("result")) handler.checkResult(lastChars.toString());
+                    else if (qName.length() != 0) {
+                        //logln("Unexpected contents of: " + qName + ", <" + lastChars + ">");
+                    }
+                    lastChars.setLength(0);
+                    //justPopped = true;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
+        // Have to hack around the fact that the character data might be in pieces
+        public void characters(char[] ch, int start, int length)
+            throws SAXException {
+                try {
+                    String value = new String(ch,start,length);
+                    if (DEBUG) logln("characters:\t" + value);
+                    lastChars.append(value);
+                    //justPopped = false;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
+
+        // just for debugging
+
+        public void notationDecl (String name, String publicId, String systemId)
+        throws SAXException {
+            logln("notationDecl: " + name
+            + ", " + publicId
+            + ", " + systemId
+            );
+        }
+
+        public void processingInstruction (String target, String data)
+        throws SAXException {
+            logln("processingInstruction: " + target + ", " + data);
+        }
+
+        public void skippedEntity (String name)
+        throws SAXException
+        {
+            logln("skippedEntity: " + name
+            );
+        }
+
+        public void unparsedEntityDecl (String name, String publicId,
+                        String systemId, String notationName)
+        throws SAXException {
+            logln("unparsedEntityDecl: " + name
+            + ", " + publicId
+            + ", " + systemId
+            + ", " + notationName
+            );
+        }
+
+    };
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/collator/CollationAPITest.java b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
new file mode 100644
index 0000000..d80a134
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
@@ -0,0 +1,1205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/apicoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+import java.util.MissingResourceException;
+
+public class CollationAPITest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationAPITest().run(args);
+        //new CollationAPITest().TestGetTailoredSet();
+    }
+    
+    /**
+     * This tests the collation key related APIs.
+     * - constructor/destructor
+     * - Collator.getCollationKey
+     * - == and != operators
+     * - comparison between collation keys
+     * - creating collation key with a byte array and vice versa
+     */
+    public void TestCollationKey() {
+        logln("testing CollationKey begins...");
+        Collator col = Collator.getInstance();
+        col.setStrength(Collator.TERTIARY);
+    
+        String test1 = "Abcda";
+        String test2 = "abcda";
+    
+        logln("Testing weird arguments");
+        CollationKey sortk1 = col.getCollationKey("");
+        // key gets reset here
+        byte[] bytes = sortk1.toByteArray();
+        doAssert(bytes.length == 3 && bytes[0] == 1 && bytes[1] == 1 
+                 && bytes[2] == 0, 
+                 "Empty string should return an empty collation key");
+        // bogus key returned here
+        sortk1 = col.getCollationKey(null);
+        doAssert(sortk1 == null, "Error code should return bogus collation key");
+
+        logln("Use tertiary comparison level testing ....");
+        sortk1 = col.getCollationKey(test1);
+        CollationKey sortk2 = col.getCollationKey(test2);
+        Object sortk3 = sortk2;
+        doAssert((sortk1.compareTo(sortk2)) > 0 
+                 && (sortk1.compareTo(sortk3)) > 0, "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        CollationKey sortkNew;
+        sortkNew = sortk1;
+        doAssert(!(sortk1.equals(sortk2)) && !(sortk1.equals(sortk3)), 
+                 "The sort keys should be different");
+        doAssert((sortk1.hashCode() != sortk2.hashCode()), "sort key hashCode() failed");
+        doAssert((sortk1.equals(sortkNew)), "The sort keys assignment failed");
+        doAssert((sortk1.hashCode() == sortkNew.hashCode()), "sort key hashCode() failed");
+
+        // check invaliad comparisons
+        Object fake = "fake";
+        try {
+            sortk1.compareTo(fake);
+            errln("Non-CollationKey comparison");
+        }
+        catch (Exception e) {
+                logln("PASS: Non-CollationKey comparison failed as expected");
+        }
+        if (sortk1.equals(fake)) {
+            errln("Non-CollationKey comparison");
+        }
+        
+        // port from apicoll
+        try {
+            col = Collator.getInstance();
+        } catch (Exception e) {
+            errln("Collator.getInstance() failed");
+        }
+        if (col.getStrength() != Collator.TERTIARY){
+            errln("Default collation did not have tertiary strength");
+        }
+
+        // Need to use identical strength
+        col.setStrength(Collator.IDENTICAL);
+
+        byte key2compat[] = {
+            // 3.9 key, UCA 5.1
+            (byte) 0x2c, (byte) 0x2e, (byte) 0x30,
+            (byte) 0x32, (byte) 0x2c, (byte) 0x01,
+            (byte) 0x09, (byte) 0x01, (byte) 0x09,
+            (byte) 0x01, (byte) 0x2b, (byte) 0x01,
+            (byte) 0x92, (byte) 0x93, (byte) 0x94,
+            (byte) 0x95, (byte) 0x92, (byte) 0x00
+
+            // 3.6 key, UCA 5.0
+            /*
+            (byte) 0x29, (byte) 0x2b, (byte) 0x2d,
+            (byte) 0x2f, (byte) 0x29, (byte) 0x01,
+            (byte) 0x09, (byte) 0x01, (byte) 0x09,
+            (byte) 0x01, (byte) 0x28, (byte) 0x01,
+            (byte) 0x92, (byte) 0x93, (byte) 0x94,
+            (byte) 0x95, (byte) 0x92, (byte) 0x00
+            */
+
+            // 3.4 key UCA 4.1
+            /*
+            (byte) 0x28, (byte) 0x2a, (byte) 0x2c, 
+            (byte) 0x2e, (byte) 0x28, (byte) 0x01, 
+            (byte) 0x09, (byte) 0x01, (byte) 0x09, 
+            (byte) 0x01, (byte) 0x27, (byte) 0x01, 
+            (byte) 0x92, (byte) 0x93, (byte) 0x94, 
+            (byte) 0x95, (byte) 0x92, (byte) 0x00        
+            */ 
+            
+            //          2.6.1 key
+            /*
+            0x26, 0x28, 0x2A, 0x2C, 0x26, 0x01, 
+            0x09, 0x01, 0x09, 0x01, 0x25, 0x01, 
+            0x92, 0x93, 0x94, 0x95, 0x92, 0x00 
+            */
+            
+            // 2.2 key
+            /*
+            0x1D, 0x1F, 0x21, 0x23, 0x1D, 0x01,
+            0x09, 0x01, 0x09, 0x01, 0x1C, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92, 0x00
+            */
+            
+            // 2.0 key
+            /*
+            0x19, 0x1B, 0x1D, 0x1F, 0x19,
+            0x01, 0x09, 0x01, 0x09, 0x01,
+            0x18, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92,
+            0x00
+            */
+            
+            // 1.8.1 key.
+            /*
+            0x19, 0x1B, 0x1D, 0x1F, 0x19,
+            0x01, 0x0A, 0x01, 0x0A, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92,
+            0x00 
+            */
+        };
+
+        CollationKey key1 = col.getCollationKey(test1);
+        CollationKey key2 = col.getCollationKey(test2);
+        CollationKey key3 = col.getCollationKey(test2);
+    
+        doAssert(key1.compareTo(key2) > 0, 
+                 "Result should be \"Abcda\" > \"abcda\"");
+        doAssert(key2.compareTo(key1) < 0,
+                "Result should be \"abcda\" < \"Abcda\"");
+        doAssert(key2.compareTo(key3) == 0,
+                "Result should be \"abcda\" ==  \"abcda\"");
+     
+        doAssert(Arrays.equals(key2.toByteArray(), key2compat),
+                 "Binary format for 'abcda' sortkey different for identical strength!");
+    
+        logln("Use secondary comparision level testing ...");
+        col.setStrength(Collator.SECONDARY);
+    
+        key1 = col.getCollationKey(test1);
+        key2 = col.getCollationKey(test2);
+        key3 = col.getCollationKey(test2);
+    
+        doAssert(key1.compareTo(key2) == 0, 
+                "Result should be \"Abcda\" == \"abcda\"");
+        doAssert(key2.compareTo(key3) == 0,
+                "Result should be \"abcda\" ==  \"abcda\"");
+    
+        byte tempkey[] = key2.toByteArray();
+        byte subkey2compat[] = new byte[tempkey.length];
+        System.arraycopy(key2compat, 0, subkey2compat, 0, tempkey.length);
+        subkey2compat[subkey2compat.length - 1] = 0;
+        doAssert(Arrays.equals(tempkey, subkey2compat),
+                 "Binary format for 'abcda' sortkey different for secondary strength!");
+    
+        logln("testing sortkey ends...");
+    }
+    
+    public void TestRawCollationKey()
+    {
+        // testing constructors
+        RawCollationKey key = new RawCollationKey();
+        if (key.bytes != null || key.size != 0) {
+            errln("Empty default constructor expected to leave the bytes null "
+                  + "and size 0"); 
+        }
+        byte array[] = new byte[128];
+        key = new RawCollationKey(array);
+        if (key.bytes != array || key.size != 0) {
+            errln("Constructor taking an array expected to adopt it and "
+                  + "retaining its size 0"); 
+        }
+        try {
+            key = new RawCollationKey(array, 129);
+            errln("Constructor taking an array and a size > array.length "
+                  + "expected to throw an exception"); 
+        } catch (IndexOutOfBoundsException e) {
+                logln("PASS: Constructor failed as expected");
+        }
+        try {
+            key = new RawCollationKey(array, -1);
+            errln("Constructor taking an array and a size < 0 "
+                  + "expected to throw an exception"); 
+        } catch (IndexOutOfBoundsException e) {
+                logln("PASS: Constructor failed as expected");
+        }
+        key = new RawCollationKey(array, array.length >> 1);
+        if (key.bytes != array || key.size != (array.length >> 1)) {
+            errln("Constructor taking an array and a size, "
+                  + "expected to adopt it and take the size specified"); 
+        }
+        key = new RawCollationKey(10);
+        if (key.bytes == null || key.bytes.length != 10 || key.size != 0) {
+            errln("Constructor taking a specified capacity expected to "
+                  + "create a new internal byte array with length 10 and "
+                  + "retain size 0"); 
+        }
+    }
+    
+    void doAssert(boolean conditions, String message) {
+        if (!conditions) {
+            errln(message);
+        }
+    }
+    
+    /**
+     * This tests the comparison convenience methods of a collator object.
+     * - greater than
+     * - greater than or equal to
+     * - equal to
+     */
+    public void TestCompare() {
+        logln("The compare tests begin : ");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        logln("Use tertiary comparison level testing ....");
+        
+        Object obj1 = test1;
+        Object obj2 = test2;
+        doAssert((col.compare(obj1, obj2) > 0), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((!col.equals(test1, test2) ), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((col.compare(test1, test2) > 0 ), "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        col.setStrength(Collator.SECONDARY);
+        logln("Use secondary comparison level testing ....");
+                    
+        doAssert((col.compare(obj1, obj2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("Use primary comparison level testing ....");
+        
+        doAssert((col.compare(obj1, obj2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        logln("The compare tests end.");
+        
+        Integer die = new Integer(1);
+        try {
+            col.compare(die, test1);
+            errln("Non-Strings should fail col.compare(Object, Object)");
+        } catch (Exception e) {
+                logln("PASS: Non-Strings comparison failed as expected");
+        }
+    }
+    
+    /**
+    * Tests decomposition setting
+    */
+    public void TestDecomposition() {
+        Collator en_US = null, el_GR = null, vi_VN = null;
+
+        en_US = Collator.getInstance(new Locale("en", "US"));
+        el_GR = Collator.getInstance(new Locale("el", "GR"));
+        vi_VN = Collator.getInstance(new Locale("vi", "VN"));
+
+        
+        // there is no reason to have canonical decomposition in en_US OR default locale */
+        if (vi_VN.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("vi_VN collation did not have cannonical decomposition for normalization!");
+        }
+
+        if (el_GR.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("el_GR collation did not have cannonical decomposition for normalization!");
+        }
+
+        if (en_US.getDecomposition() != Collator.NO_DECOMPOSITION)
+        {
+            errln("en_US collation had cannonical decomposition for normalization!");
+        }
+    }
+    
+    /**
+     * This tests the duplication of a collator object.
+     */
+    public void TestDuplicate() {
+        //Clone does not be implemented 
+        Collator col1 = Collator.getInstance(Locale.ENGLISH);
+        
+        // Collator col2 = (Collator)col1.clone();
+        // doAssert(col1.equals(col2), "Cloned object is not equal to the orginal");
+        String ruleset = "< a, A < b, B < c, C < d, D, e, E";
+        RuleBasedCollator col3 = null;
+        try {
+            col3 = new RuleBasedCollator(ruleset);
+        } catch (Exception e) {
+            errln("Failure creating RuleBasedCollator with rule:" + ruleset);
+            return;
+        }
+        doAssert(!col1.equals(col3), "Cloned object is equal to some dummy");
+        col3 = (RuleBasedCollator)col1;
+        doAssert(col1.equals(col3), "Copied object is not equal to the orginal");
+        
+    }
+    
+    /**
+     * This tests the CollationElementIterator related APIs.
+     * - creation of a CollationElementIterator object
+     * - == and != operators
+     * - iterating forward
+     * - reseting the iterator index
+     * - requesting the order properties(primary, secondary or tertiary)
+     */
+    public void TestElemIter() {
+        // logln("testing sortkey begins...");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+
+           
+        String testString1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        String testString2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        // logln("Constructors and comparison testing....");
+        CollationElementIterator iterator1 = ((RuleBasedCollator)col).getCollationElementIterator(testString1);
+        
+        CharacterIterator chariter=new StringCharacterIterator(testString1);
+        // copy ctor
+        CollationElementIterator iterator2 = ((RuleBasedCollator)col).getCollationElementIterator(chariter);
+        UCharacterIterator uchariter=UCharacterIterator.getInstance(testString2);
+        CollationElementIterator iterator3 = ((RuleBasedCollator)col).getCollationElementIterator(uchariter);
+    
+        int offset = 0;
+        offset = iterator1.getOffset();
+        if (offset != 0) {
+            errln("Error in getOffset for collation element iterator");
+            return;
+        }
+        iterator1.setOffset(6);
+        iterator1.setOffset(0);
+        int order1, order2, order3;
+        
+        order1 = iterator1.next();
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed"); 
+        doAssert((order1 == order2), "The order result should be the same");
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        // invalid test wrong in UCA
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+            
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+    
+        iterator1.reset(); 
+        iterator2.reset(); 
+        iterator3.reset();
+        order1 = iterator1.next();
+        
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed");
+        doAssert((order1 == order2), "The order result should be the same");
+    
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order2 = iterator2.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        // obsolete invalid test, removed
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+        doAssert(!(iterator2.equals(iterator3)), "The iterators should be different");
+        logln("testing CollationElementIterator ends...");
+    }
+    
+    /**
+     * This tests the hashCode method of a collator object.
+     */
+    public void TestHashCode() {
+        logln("hashCode tests begin.");
+        Collator col1 = Collator.getInstance(Locale.ENGLISH);
+    
+        Collator col2 = null;
+        Locale dk = new Locale("da", "DK", "");
+        try {
+            col2 = Collator.getInstance(dk);
+        } catch (Exception e) {
+            errln("Danish collation creation failed.");
+            return;
+        }
+    
+        Collator col3 = null;
+        try {
+            col3 = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("2nd default collation creation failed.");
+            return;
+        }
+    
+        logln("Collator.hashCode() testing ...");
+        
+        doAssert(col1.hashCode() != col2.hashCode(), "Hash test1 result incorrect" );                 
+        doAssert(!(col1.hashCode() == col2.hashCode()), "Hash test2 result incorrect" );              
+        doAssert(col1.hashCode() == col3.hashCode(), "Hash result not equal" );               
+    
+        logln("hashCode tests end.");
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        
+        CollationKey sortk1, sortk2, sortk3;
+                    
+        sortk1 = col3.getCollationKey(test1);
+        sortk2 = col3.getCollationKey(test2); 
+        sortk3 = col3.getCollationKey(test2); 
+        
+        doAssert(sortk1.hashCode() != sortk2.hashCode(), "Hash test1 result incorrect");               
+        doAssert(sortk2.hashCode() == sortk3.hashCode(), "Hash result not equal" );
+    }
+    
+    /**
+     * This tests the properties of a collator object.
+     * - constructor
+     * - factory method getInstance
+     * - compare and getCollationKey
+     * - get/set decomposition mode and comparison level
+     */
+    public void TestProperty() {
+        /* 
+          All the collations have the same version in an ICU
+          version.
+          ICU 2.0 currVersionArray = {0x18, 0xC0, 0x02, 0x02};
+          ICU 2.1 currVersionArray = {0x19, 0x00, 0x03, 0x03};
+          ICU 2.8 currVersionArray = {0x29, 0x80, 0x00, 0x04};          
+        */    
+        logln("The property tests begin : ");
+        logln("Test ctors : ");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+
+    
+        logln("Test getVersion");
+        VersionInfo expectedVersion = VersionInfo.getInstance(0x31, 0xC0, 0x00, 0x05);
+        doAssert(col.getVersion().equals(expectedVersion), "Expected version "+expectedVersion.toString()+" got "+col.getVersion().toString());
+        
+        logln("Test getUCAVersion");
+        VersionInfo expectedUCAVersion = VersionInfo.getInstance(0x05, 1, 0, 0);
+        doAssert(col.getUCAVersion().equals(expectedUCAVersion), "Expected UCA version "+expectedUCAVersion.toString()+" got "+col.getUCAVersion().toString());
+        
+        doAssert((col.compare("ab", "abc") < 0), "ab < abc comparison failed");
+        doAssert((col.compare("ab", "AB") < 0), "ab < AB comparison failed");
+        doAssert((col.compare("blackbird", "black-bird") > 0), "black-bird > blackbird comparison failed");
+        doAssert((col.compare("black bird", "black-bird") < 0), "black bird > black-bird comparison failed");
+        doAssert((col.compare("Hello", "hello") > 0), "Hello > hello comparison failed");
+    
+        logln("Test ctors ends.");
+        
+        logln("testing Collator.getStrength() method ...");
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+            
+        logln("testing Collator.setStrength() method ...");
+        col.setStrength(Collator.SECONDARY);
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object's strength is secondary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() == Collator.SECONDARY), "collation object has the wrong strength");
+    
+        logln("testing Collator.setDecomposition() method ...");
+        col.setDecomposition(Collator.NO_DECOMPOSITION);
+        doAssert((col.getDecomposition() != Collator.CANONICAL_DECOMPOSITION), "Decomposition mode != Collator.CANONICAL_DECOMPOSITION");
+        doAssert((col.getDecomposition() == Collator.NO_DECOMPOSITION), "Decomposition mode = Collator.NO_DECOMPOSITION");
+        
+        
+        RuleBasedCollator rcol = (RuleBasedCollator)Collator.getInstance(new Locale("da", "DK"));
+        doAssert(rcol.getRules().length() != 0, "da_DK rules does not have length 0");
+        
+        try {
+            col = Collator.getInstance(Locale.FRENCH);
+        } catch (Exception e) {
+            errln("Creating French collation failed.");
+            return;
+        }
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("testing Collator.getStrength() method again ...");
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() == Collator.PRIMARY), "collation object's strength is not primary difference");
+            
+        logln("testing French Collator.setStrength() method ...");
+        col.setStrength(Collator.TERTIARY);
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object's strength is not tertiary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() != Collator.SECONDARY), "collation object's strength is secondary difference");
+    
+    }
+    public void TestJunkCollator(){
+        logln("Create junk collation: ");
+        Locale abcd = new Locale("ab", "CD", "");
+        
+        Collator junk = Collator.getInstance(abcd);
+        Collator col = Collator.getInstance();
+
+    
+        String colrules = ((RuleBasedCollator)col).getRules();
+        String junkrules = ((RuleBasedCollator)junk).getRules();
+        doAssert(colrules == junkrules || colrules.equals(junkrules), 
+                   "The default collation should be returned.");
+        Collator frCol = null;
+        try {
+            frCol = Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Creating French collator failed.");
+            return;
+        }
+    
+        doAssert(!(frCol.equals(junk)), "The junk is the same as the French collator.");
+        logln("Collator property test ended.");
+    
+    }
+    /**
+    * This tests the RuleBasedCollator
+    * - constructor/destructor
+    * - getRules
+    */
+    public void TestRuleBasedColl() {
+        RuleBasedCollator col1 = null, col2 = null, col3 = null, col4 = null;
+    
+        String ruleset1 = "&9 < a, A < b, B < c, C; ch, cH, Ch, CH < d, D, e, E"; 
+        String ruleset2 = "&9 < a, A < b, B < c, C < d, D, e, E";
+        String ruleset3 = "&";
+        
+        try {
+            col1 = new RuleBasedCollator(ruleset1);
+        } catch (Exception e) {
+            // only first error needs to be a warning since we exit function 
+            warnln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        try {
+            col2 = new RuleBasedCollator(ruleset2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        try {
+            // empty rules fail
+            col3 = new RuleBasedCollator(ruleset3);
+            errln("Failure: Empty rules for the collator should fail");
+            return;
+        } catch (MissingResourceException e) {
+            warnln(e.getMessage());
+        } catch (Exception e) {
+            logln("PASS: Empty rules for the collator failed as expected");
+        }
+        
+        Locale locale = new Locale("aa", "AA");
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            errln("Fallback Collator creation failed.: %s");
+            return;
+        }
+    
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance();
+        } catch (Exception e) {
+            errln("Default Collator creation failed.: %s");
+            return;
+        }
+    
+        String rule1 = col1.getRules(); 
+        String rule2 = col2.getRules();
+        String rule3 = col3.getRules();
+    
+        doAssert(!rule1.equals(rule2), "Default collator getRules failed");
+        doAssert(!rule2.equals(rule3), "Default collator getRules failed");
+        doAssert(!rule1.equals(rule3), "Default collator getRules failed");
+        
+        try {
+            col4 = new RuleBasedCollator(rule2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        String rule4 = col4.getRules();
+        doAssert(rule2.equals(rule4), "Default collator getRules failed");
+        // tests that modifier ! is always ignored
+        String exclamationrules = "!&a<b";
+        // java does not allow ! to be the start of the rule
+        String thaistr = "\u0e40\u0e01\u0e2d";
+        try {
+            RuleBasedCollator col5 = new RuleBasedCollator(exclamationrules);
+            RuleBasedCollator encol = (RuleBasedCollator)
+                                        Collator.getInstance(Locale.ENGLISH);
+            CollationElementIterator col5iter 
+                                   = col5.getCollationElementIterator(thaistr);
+            CollationElementIterator encoliter 
+                                   = encol.getCollationElementIterator(
+                                                                      thaistr);
+            while (true) {
+                // testing with en since thai has its own tailoring
+                int ce = col5iter.next();
+                int ce2 = encoliter.next();
+                if (ce2 != ce) {
+                    errln("! modifier test failed");
+                }
+                if (ce == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed for ! modifier.");
+            return;
+        }
+    }
+    
+    /**
+    * This tests the RuleBasedCollator
+    * - getRules
+    */
+    public void TestRules() {
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(new Locale("","","")); //root
+            // logln("PASS: RuleBased Collator creation passed");
+
+    
+        String rules = coll.getRules();
+        if (rules != null && rules.length() != 0) {
+            errln("Root tailored rules failed");
+        }
+    }
+    
+    public void TestSafeClone() {
+        String test1 = "abCda";
+        String test2 = "abcda";
+        
+        // one default collator & two complex ones 
+        RuleBasedCollator someCollators[] = {
+            (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH),
+            (RuleBasedCollator)Collator.getInstance(Locale.KOREA),
+            (RuleBasedCollator)Collator.getInstance(Locale.JAPAN)
+        };
+        RuleBasedCollator someClonedCollators[] = new RuleBasedCollator[3];
+        
+        // change orig & clone & make sure they are independent 
+    
+        for (int index = 0; index < someCollators.length; index ++)
+        {
+            try {
+                someClonedCollators[index] 
+                            = (RuleBasedCollator)someCollators[index].clone();
+            } catch (CloneNotSupportedException e) {
+                errln("Error cloning collator");
+            }
+    
+            someClonedCollators[index].setStrength(Collator.TERTIARY);
+            someCollators[index].setStrength(Collator.PRIMARY);
+            someClonedCollators[index].setCaseLevel(false);
+            someCollators[index].setCaseLevel(false);
+            
+            doAssert(someClonedCollators[index].compare(test1, test2) > 0, 
+                     "Result should be \"abCda\" >>> \"abcda\" ");
+            doAssert(someCollators[index].compare(test1, test2) == 0, 
+                     "Result should be \"abCda\" == \"abcda\" ");
+        }
+    }
+
+    public void TestGetTailoredSet() 
+    {
+        logln("testing getTailoredSet...");
+        String rules[] = {
+            "&a < \u212b",             
+            "& S < \u0161 <<< \u0160",
+        };
+        String data[][] = {
+            { "\u212b", "A\u030a", "\u00c5" },        
+            { "\u0161", "s\u030C", "\u0160", "S\u030C" }            
+        };
+    
+        int i = 0, j = 0;
+        
+        RuleBasedCollator coll;
+        UnicodeSet set;
+        
+        for(i = 0; i < rules.length; i++) {
+            try {
+                logln("Instantiating a collator from "+rules[i]);
+                coll = new RuleBasedCollator(rules[i]);
+                set = coll.getTailoredSet();
+                logln("Got set: "+set.toPattern(true));
+                if(set.size() != data[i].length) {
+                    errln("Tailored set size different ("+set.size()+") than expected ("+data[i].length+")");
+                }
+                for(j = 0; j < data[i].length; j++) {
+                    logln("Checking to see whether "+data[i][j]+" is in set");
+                    if(!set.contains(data[i][j])) {
+                        errln("Tailored set doesn't contain "+data[i][j]+"... It should");
+                    }
+                }
+            } catch (Exception e) {
+                warnln("Couldn't open collator with rules "+ rules[i]);
+            }
+        }
+    }
+
+    /** 
+     * Simple test to see if Collator is subclassable
+     */
+    public void TestSubClass() 
+    {
+        class TestCollator extends Collator
+        {
+            public boolean equals(Object that) {
+                return this == that;
+            }
+    
+            public int hashCode() {
+                return 0;
+            }
+            
+            public int compare(String source, String target) {
+                return source.compareTo(target);
+            }
+            
+            public CollationKey getCollationKey(String source)
+            {   return new CollationKey(source, 
+                          getRawCollationKey(source, new RawCollationKey()));
+            }
+            
+            public RawCollationKey getRawCollationKey(String source, 
+                                                      RawCollationKey key)
+            {
+                byte temp1[] = source.getBytes();
+                byte temp2[] = new byte[temp1.length + 1];
+                System.arraycopy(temp1, 0, temp2, 0, temp1.length);
+                temp2[temp1.length] = 0;
+                if (key == null) {
+                    key = new RawCollationKey();
+                }
+                key.bytes = temp2; 
+                key.size = temp2.length;
+                return key;
+            }
+            
+            public void setVariableTop(int ce)
+            {
+            }
+            
+            public int setVariableTop(String str) 
+            {
+                return 0;
+            }
+            
+            public int getVariableTop()
+            {
+                return 0;
+            }
+            public VersionInfo getVersion()
+            {
+                return VersionInfo.getInstance(0);
+            }
+            public VersionInfo getUCAVersion()
+            {
+                return VersionInfo.getInstance(0);
+            }
+        }
+ 
+        Collator col1 = new TestCollator();
+        Collator col2 = new TestCollator();
+        if (col1.equals(col2)) {
+            errln("2 different instance of TestCollator should fail");
+        }
+        if (col1.hashCode() != col2.hashCode()) {
+            errln("Every TestCollator has the same hashcode");
+        }
+        String abc = "abc";
+        String bcd = "bcd";
+        if (col1.compare(abc, bcd) != abc.compareTo(bcd)) {
+            errln("TestCollator compare should be the same as the default " +
+                  "string comparison");
+        }
+        CollationKey key = col1.getCollationKey(abc);
+        byte temp1[] = abc.getBytes();
+        byte temp2[] = new byte[temp1.length + 1];
+        System.arraycopy(temp1, 0, temp2, 0, temp1.length);
+        temp2[temp1.length] = 0;
+        if (!java.util.Arrays.equals(key.toByteArray(), temp2) 
+            || !key.getSourceString().equals(abc)) {
+            errln("TestCollator collationkey API is returning wrong values");
+        }
+        UnicodeSet set = col1.getTailoredSet();
+        if (!set.equals(new UnicodeSet(0, 0x10FFFF))) {
+            errln("Error getting default tailored set");
+        }
+    }
+    
+     /** 
+     * Simple test the collator setter and getters
+     */
+    public void TestSetGet() 
+    {
+        RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance();
+        int decomp = collator.getDecomposition();
+        int strength = collator.getStrength();
+        boolean alt = collator.isAlternateHandlingShifted();
+        boolean caselevel = collator.isCaseLevel();
+        boolean french = collator.isFrenchCollation();
+        boolean hquart = collator.isHiraganaQuaternary();
+        boolean lowercase = collator.isLowerCaseFirst();
+        boolean uppercase = collator.isUpperCaseFirst();
+        
+        collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        if (collator.getDecomposition() != Collator.CANONICAL_DECOMPOSITION) {
+            errln("Setting decomposition failed");
+        }
+        collator.setStrength(Collator.QUATERNARY);
+        if (collator.getStrength() != Collator.QUATERNARY) {
+            errln("Setting strength failed");
+        }
+        collator.setAlternateHandlingShifted(!alt);
+        if (collator.isAlternateHandlingShifted() == alt) {
+            errln("Setting alternate handling failed");
+        }
+        collator.setCaseLevel(!caselevel);
+        if (collator.isCaseLevel() == caselevel) {
+            errln("Setting case level failed");
+        }
+        collator.setFrenchCollation(!french);
+        if (collator.isFrenchCollation() == french) {
+            errln("Setting french collation failed");
+        }
+        collator.setHiraganaQuaternary(!hquart);
+        if (collator.isHiraganaQuaternary() == hquart) {
+            errln("Setting hiragana quartenary failed");
+        }
+        collator.setLowerCaseFirst(!lowercase);
+        if (collator.isLowerCaseFirst() == lowercase) {
+            errln("Setting lower case first failed");
+        }
+        collator.setUpperCaseFirst(!uppercase);
+        if (collator.isUpperCaseFirst() == uppercase) {
+            errln("Setting upper case first failed");
+        }   
+        collator.setDecompositionDefault();
+        if (collator.getDecomposition() != decomp) {
+            errln("Setting decomposition default failed");
+        }
+        collator.setStrengthDefault();
+        if (collator.getStrength() != strength) {
+            errln("Setting strength default failed");
+        }
+        collator.setAlternateHandlingDefault();
+        if (collator.isAlternateHandlingShifted() != alt) {
+            errln("Setting alternate handling default failed");
+        }
+        collator.setCaseLevelDefault();
+        if (collator.isCaseLevel() != caselevel) {
+            errln("Setting case level default failed");
+        }
+        collator.setFrenchCollationDefault();
+        if (collator.isFrenchCollation() != french) {
+            errln("Setting french handling default failed");
+        }
+        collator.setHiraganaQuaternaryDefault();
+        if (collator.isHiraganaQuaternary() != hquart) {
+            errln("Setting Hiragana Quartenary default failed");
+        }
+        collator.setCaseFirstDefault();
+        if (collator.isLowerCaseFirst() != lowercase 
+            || collator.isUpperCaseFirst() != uppercase) {
+            errln("Setting case first handling default failed");
+        }
+    }
+    
+    public void TestBounds() 
+    {
+        Collator coll = Collator.getInstance(new Locale("sh", ""));
+          
+        String test[] = { "John Smith", "JOHN SMITH", 
+                          "john SMITH", "j\u00F6hn sm\u00EFth",
+                          "J\u00F6hn Sm\u00EFth", "J\u00D6HN SM\u00CFTH",
+                          "john smithsonian", "John Smithsonian",
+        };
+      
+        String testStr[] = {
+                          "\u010CAKI MIHALJ", 
+                          "\u010CAKI MIHALJ",
+                          "\u010CAKI PIRO\u0160KA", 
+                          "\u010CABAI ANDRIJA",
+                          "\u010CABAI LAJO\u0160", 
+                          "\u010CABAI MARIJA",
+                          "\u010CABAI STEVAN", 
+                          "\u010CABAI STEVAN",
+                          "\u010CABARKAPA BRANKO", 
+                          "\u010CABARKAPA MILENKO",
+                          "\u010CABARKAPA MIROSLAV", 
+                          "\u010CABARKAPA SIMO",
+                          "\u010CABARKAPA STANKO", 
+                          "\u010CABARKAPA TAMARA",
+                          "\u010CABARKAPA TOMA\u0160", 
+                          "\u010CABDARI\u0106 NIKOLA",
+                          "\u010CABDARI\u0106 ZORICA",
+                          "\u010CABI NANDOR",
+                          "\u010CABOVI\u0106 MILAN",
+                          "\u010CABRADI AGNEZIJA",
+                          "\u010CABRADI IVAN",
+                          "\u010CABRADI JELENA",
+                          "\u010CABRADI LJUBICA",
+                          "\u010CABRADI STEVAN",
+                          "\u010CABRDA MARTIN",
+                          "\u010CABRILO BOGDAN",
+                          "\u010CABRILO BRANISLAV",
+                          "\u010CABRILO LAZAR",
+                          "\u010CABRILO LJUBICA",
+                          "\u010CABRILO SPASOJA",
+                          "\u010CADE\u0160 ZDENKA",
+                          "\u010CADESKI BLAGOJE",
+                          "\u010CADOVSKI VLADIMIR",
+                          "\u010CAGLJEVI\u0106 TOMA",
+                          "\u010CAGOROVI\u0106 VLADIMIR",
+                          "\u010CAJA VANKA",
+                          "\u010CAJI\u0106 BOGOLJUB",
+                          "\u010CAJI\u0106 BORISLAV",
+                          "\u010CAJI\u0106 RADOSLAV",
+                          "\u010CAK\u0160IRAN MILADIN",
+                          "\u010CAKAN EUGEN",
+                          "\u010CAKAN EVGENIJE",
+                          "\u010CAKAN IVAN",
+                          "\u010CAKAN JULIJAN",
+                          "\u010CAKAN MIHAJLO",
+                          "\u010CAKAN STEVAN",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKARA ANA",
+                          "\u010CAKAREVI\u0106 MOMIR",
+                          "\u010CAKAREVI\u0106 NEDELJKO",
+                          "\u010CAKI \u0160ANDOR",
+                          "\u010CAKI AMALIJA",
+                          "\u010CAKI ANDRA\u0160",
+                          "\u010CAKI LADISLAV",
+                          "\u010CAKI LAJO\u0160",
+                          "\u010CAKI LASLO" }; 
+        
+        CollationKey testKey[] = new CollationKey[testStr.length];
+        for (int i = 0; i < testStr.length; i ++) {
+            testKey[i] = coll.getCollationKey(testStr[i]);
+        }
+        
+        Arrays.sort(testKey);
+        for(int i = 0; i < testKey.length - 1; i ++) {
+            CollationKey lower 
+                           = testKey[i].getBound(CollationKey.BoundMode.LOWER,
+                                                 Collator.SECONDARY);
+            for (int j = i + 1; j < testKey.length; j ++) {
+                CollationKey upper 
+                           = testKey[j].getBound(CollationKey.BoundMode.UPPER,
+                                                 Collator.SECONDARY);
+                for (int k = i; k <= j; k ++) {
+                    if (lower.compareTo(testKey[k]) > 0) {
+                        errln("Problem with lower bound at i = " + i + " j = "
+                              + j + " k = " + k);
+                    }
+                    if (upper.compareTo(testKey[k]) <= 0) {
+                        errln("Problem with upper bound at i = " + i + " j = "
+                              + j + " k = " + k);
+                    }
+                }
+            }
+        }
+        
+        for (int i = 0; i < test.length; i ++) 
+        {
+            CollationKey key = coll.getCollationKey(test[i]);
+            CollationKey lower = key.getBound(CollationKey.BoundMode.LOWER,
+                                              Collator.SECONDARY);
+            CollationKey upper = key.getBound(CollationKey.BoundMode.UPPER_LONG,
+                                              Collator.SECONDARY);
+            for (int j = i + 1; j < test.length; j ++) {
+                key = coll.getCollationKey(test[j]);
+                if (lower.compareTo(key) > 0) {
+                    errln("Problem with lower bound i = " + i + " j = " + j);
+                }
+                if (upper.compareTo(key) <= 0) {
+                    errln("Problem with upper bound i = " + i + " j = " + j);
+                }
+            }
+        }
+    }
+    
+    public final void TestGetAll() {
+        Locale[] list = Collator.getAvailableLocales();
+        int errorCount = 0;
+        for (int i = 0; i < list.length; ++i) {
+            log("Locale name: ");
+            log(list[i].toString());
+            log(" , the display name is : ");
+            logln(list[i].getDisplayName());
+            try{
+                logln("     ...... Or display as: " + Collator.getDisplayName(list[i]));
+                logln("     ...... and display in Chinese: " + 
+                      Collator.getDisplayName(list[i],Locale.CHINA)); 
+            }catch(MissingResourceException ex){
+                errorCount++;
+                logln("could not get displayName for " + list[i]);
+            }           
+        }
+        if(errorCount>0){
+          warnln("Could not load the locale data.");
+        }
+    }    
+
+    private void
+    doSetsTest(UnicodeSet ref, UnicodeSet set, String inSet, String outSet) {
+        
+        set.clear();
+        set.applyPattern(inSet);
+        
+        if(!ref.containsAll(set)) {
+            err("Some stuff from "+inSet+" is not present in the set\n");            
+        }
+        
+        set.clear();
+        set.applyPattern(outSet);
+        if(!ref.containsNone(set)) {
+            err("Some stuff from "+outSet+" is present in the set\n");
+        }
+    }
+    
+    public void TestGetContractions()throws Exception {
+        /*        static struct {
+         const char* locale;
+         const char* inConts;
+         const char* outConts;
+         const char* inExp;
+         const char* outExp;
+         const char* unsafeCodeUnits;
+         const char* safeCodeUnits;
+         }
+         */
+        String tests[][] = {
+                { "ru", 
+                    "[{\u0474\u030F}{\u0475\u030F}{\u04D8\u0308}{\u04D9\u0308}{\u04E8\u0308}{\u04E9\u0308}]", 
+                    "[{\u0430\u0306}{\u0410\u0306}{\u0430\u0308}{\u0410\u0306}{\u0433\u0301}{\u0413\u0301}]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[\u0474\u0475\u04d8\u04d9\u04e8\u04e9]",
+                    "[aAbB\u0430\u0410\u0433\u0413]"
+                },
+                { "uk",
+                    "[{\u0474\u030F}{\u0475\u030F}{\u04D8\u0308}{\u04D9\u0308}{\u04E8\u0308}{\u04E9\u0308}"+ 
+                    "{\u0430\u0306}{\u0410\u0306}{\u0430\u0308}{\u0410\u0306}{\u0433\u0301}{\u0413\u0301}]",
+                    "[]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[\u0474\u0475\u04D8\u04D9\u04E8\u04E9\u0430\u0410\u0433\u0413]",
+                    "[aAbBxv]",
+                },
+                { "sh",
+                    "[{C\u0301}{C\u030C}{C\u0341}{DZ\u030C}{Dz\u030C}{D\u017D}{D\u017E}{lj}{nj}]",
+                    "[{\u309d\u3099}{\u30fd\u3099}]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[nlcdzNLCDZ]",
+                    "[jabv]"
+                },
+                { "ja",
+                    "[{\u3053\u3099\u309D}{\u3053\u3099\u309D\u3099}{\u3053\u3099\u309E}{\u3053\u3099\u30FC}{\u3053\u309D}{\u3053\u309D\u3099}{\u3053\u309E}{\u3053\u30FC}{\u30B3\u3099\u30FC}{\u30B3\u3099\u30FD}{\u30B3\u3099\u30FD\u3099}{\u30B3\u3099\u30FE}{\u30B3\u30FC}{\u30B3\u30FD}{\u30B3\u30FD\u3099}{\u30B3\u30FE}]",
+                    "[{\u30FD\u3099}{\u309D\u3099}{\u3053\u3099}{\u30B3\u3099}{lj}{nj}]",
+                    "[\u30FE\u00e6]",
+                    "[a]",
+                    "[\u3099]",
+                    "[]"
+                }
+        };
+        
+        
+        
+        
+        RuleBasedCollator coll = null;
+        int i = 0;
+        UnicodeSet conts = new UnicodeSet();
+        UnicodeSet exp = new UnicodeSet();
+        UnicodeSet set = new UnicodeSet();
+        
+        for(i = 0; i < tests.length; i++) {
+            logln("Testing locale: "+ tests[i][0]);
+            coll = (RuleBasedCollator)Collator.getInstance(new ULocale(tests[i][0]));
+            coll.getContractionsAndExpansions(conts, exp, true);
+            logln("Contractions "+conts.size()+":\n"+conts.toPattern(true));
+            doSetsTest(conts, set, tests[i][1], tests[i][2]);
+            logln("Expansions "+exp.size()+":\n"+exp.toPattern(true));
+            doSetsTest(exp, set, tests[i][3], tests[i][4]);
+            
+            // No unsafe set in ICU4J
+            //noConts = ucol_getUnsafeSet(coll, conts, &status);
+            //doSetsTest(conts, set, tests[i][5], tests[i][6]);
+            //log_verbose("Unsafes "+conts.size()+":\n"+conts.toPattern(true)+"\n");
+        }
+    }
+    private static final String bigone = "One";
+    private static final String littleone = "one";
+    
+    public void TestClone() {
+        logln("\ninit c0");
+        RuleBasedCollator c0 = (RuleBasedCollator)Collator.getInstance();
+        c0.setStrength(Collator.TERTIARY);
+        dump("c0", c0);
+
+        logln("\ninit c1");
+        RuleBasedCollator c1 = (RuleBasedCollator)Collator.getInstance();
+        c1.setStrength(Collator.TERTIARY);
+        c1.setUpperCaseFirst(!c1.isUpperCaseFirst());
+        dump("c0", c0);
+        dump("c1", c1);
+        try{
+            logln("\ninit c2");
+            RuleBasedCollator c2 = (RuleBasedCollator)c1.clone();
+            c2.setUpperCaseFirst(!c2.isUpperCaseFirst());
+            dump("c0", c0);
+            dump("c1", c1);
+            dump("c2", c2);
+            if(c1.equals(c2)){
+                errln("The cloned objects refer to same data");
+            }
+        }catch(CloneNotSupportedException ex){
+            errln("Could not clone the collator");
+        }
+    }
+
+    private void dump(String msg, RuleBasedCollator c) {
+        logln(msg + " " + c.compare(bigone, littleone) +
+                           " s: " + c.getStrength() +
+                           " u: " + c.isUpperCaseFirst());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java b/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
new file mode 100644
index 0000000..bf7bd16
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationTurkishTest
+ * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationChineseTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationChineseTest().run(args);
+    }
+    
+    public CollationChineseTest() 
+    {
+    }
+    
+    public void TestPinYin() 
+    {
+        String seq[] 
+            = {"\u963f", "\u554a", "\u54ce", "\u6371", "\u7231", "\u9f98",
+               "\u4e5c", "\u8baa", "\u4e42", "\u53c8"};
+        RuleBasedCollator collator = null;
+        try {
+            collator = (RuleBasedCollator)Collator.getInstance(
+                                            new Locale("zh", "", "PINYIN"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of zh__PINYIN locale");
+            return;
+        }
+        for (int i = 0; i < seq.length - 1; i ++) {
+            CollationTest.doTest(this, collator, seq[i], seq[i + 1], -1);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java b/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
new file mode 100644
index 0000000..6dac7fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+
+/**
+ * 
+ * CollationCreationMethodTest checks to ensure that the collators act the same whether they are created by choosing a 
+ * locale and loading the data from file, or by using rules.
+ * 
+ * @author Brian Rower - IBM - August 2008
+ *
+ */
+public class CollationCreationMethodTest extends TestFmwk 
+{
+    
+	public static void main(String[] args) throws Exception 
+    {
+        new CollationCreationMethodTest().run(args);
+    }
+    
+    public void TestRuleVsLocaleCreationMonkey()
+    {
+    	//create a RBC from a collator reader by reading in a locale collation file
+    	//also create one simply from a rules string (which should be 
+    	//pulled from the locale collation file)
+    	//and then do crazy monkey testing on it to make sure they are the same.
+    	int x,y,z;
+    	Random r = createRandom();
+    	String randString1;
+    	CollationKey key1;
+    	CollationKey key2;
+
+    	
+    	Locale[] locales = Collator.getAvailableLocales();
+    	 
+    	RuleBasedCollator localeCollator;
+    	RuleBasedCollator ruleCollator;
+            	
+        for(z = 0; z < 60; z++)
+        {
+        	x = r.nextInt(locales.length);
+        	
+        	try
+            {
+        		//this is making the assumption that the only type of collator that will be made is RBC
+        		localeCollator = (RuleBasedCollator)Collator.getInstance(locales[x]);
+        		ruleCollator = new RuleBasedCollator(localeCollator.getRules());
+        		logln("Rules are: " + localeCollator.getRules());
+            } 
+        	catch (Exception e) 
+        	{
+                warnln("ERROR: in creation of collator of " + locales[x].getDisplayName() + " locale");
+                return;
+            }
+        	
+        	//do it several times for each collator
+        	int n = 3;
+        	for(y = 0; y < n; y++)
+        	{
+
+            	randString1 = generateNewString(r);
+                                
+                key1 = localeCollator.getCollationKey(randString1);
+                key2 = ruleCollator.getCollationKey(randString1);
+           	
+            	report(locales[x].getDisplayName(), randString1, key1, key2);	
+        	}
+        }
+    }
+    
+    private String generateNewString(Random r)
+    {
+    	int maxCodePoints = 40;
+    	byte[] c = new byte[r.nextInt(maxCodePoints)*2]; //two bytes for each code point
+    	int x;
+    	int z;
+    	String s = "";
+    	
+    	for(x = 0; x < c.length/2; x = x + 2) //once around for each UTF-16 character
+    	{
+    		z = r.nextInt(0x7fff); //the code point...
+    		
+    		c[x + 1] = (byte)z;
+    		c[x] = (byte)(z >>> 4);
+    	}
+    	try
+    	{
+    		s = new String(c, "UTF-16BE");
+    	}
+    	catch(Exception e)
+    	{
+    		warnln("Error creating random strings");
+    	}
+    	return s;
+    	
+    	
+    }
+    
+    
+    private void report(String localeName, String string1, CollationKey k1, CollationKey k2) 
+    {
+        if (!k1.equals(k2)) 
+        {
+            String msg = "";
+            msg += "With " + localeName + "Collator: ";
+            msg += string1; 
+            msg += " failed to produce identical keys on both collators";
+            errln(msg);
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
new file mode 100644
index 0000000..e66a01a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
@@ -0,0 +1,187 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationCurrencyTest
+ * Source File: $ICU4CRoot/source/test/intltest/currcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationCurrencyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationCurrencyTest().run(args);
+    }
+    
+    public void TestCurrency() {
+        // All the currency symbols, in collation order
+        char[][] currency = {
+            { 0x00A4 }, /*00A4; L; [14 36, 03, 03]    # [082B.0020.0002] # CURRENCY SIGN*/
+            { 0x00A2 }, /*00A2; L; [14 38, 03, 03]    # [082C.0020.0002] # CENT SIGN*/
+            { 0xFFE0 }, /*FFE0; L; [14 38, 03, 05]    # [082C.0020.0003] # FULLWIDTH CENT SIGN*/
+            { 0x0024 }, /*0024; L; [14 3A, 03, 03]    # [082D.0020.0002] # DOLLAR SIGN*/
+            { 0xFF04 }, /*FF04; L; [14 3A, 03, 05]    # [082D.0020.0003] # FULLWIDTH DOLLAR SIGN*/
+            { 0xFE69 }, /*FE69; L; [14 3A, 03, 1D]    # [082D.0020.000F] # SMALL DOLLAR SIGN*/
+            { 0x00A3 }, /*00A3; L; [14 3C, 03, 03]    # [082E.0020.0002] # POUND SIGN*/
+            { 0xFFE1 }, /*FFE1; L; [14 3C, 03, 05]    # [082E.0020.0003] # FULLWIDTH POUND SIGN*/
+            { 0x00A5 }, /*00A5; L; [14 3E, 03, 03]    # [082F.0020.0002] # YEN SIGN*/
+            { 0xFFE5 }, /*FFE5; L; [14 3E, 03, 05]    # [082F.0020.0003] # FULLWIDTH YEN SIGN*/
+            { 0x09F2 }, /*09F2; L; [14 40, 03, 03]    # [0830.0020.0002] # BENGALI RUPEE MARK*/
+            { 0x09F3 }, /*09F3; L; [14 42, 03, 03]    # [0831.0020.0002] # BENGALI RUPEE SIGN*/
+            { 0x0E3F }, /*0E3F; L; [14 44, 03, 03]    # [0832.0020.0002] # THAI CURRENCY SYMBOL BAHT*/
+            { 0x17DB }, /*17DB; L; [14 46, 03, 03]    # [0833.0020.0002] # KHMER CURRENCY SYMBOL RIEL*/
+            { 0x20A0 }, /*20A0; L; [14 48, 03, 03]    # [0834.0020.0002] # EURO-CURRENCY SIGN*/
+            { 0x20A1 }, /*20A1; L; [14 4A, 03, 03]    # [0835.0020.0002] # COLON SIGN*/
+            { 0x20A2 }, /*20A2; L; [14 4C, 03, 03]    # [0836.0020.0002] # CRUZEIRO SIGN*/
+            { 0x20A3 }, /*20A3; L; [14 4E, 03, 03]    # [0837.0020.0002] # FRENCH FRANC SIGN*/
+            { 0x20A4 }, /*20A4; L; [14 50, 03, 03]    # [0838.0020.0002] # LIRA SIGN*/
+            { 0x20A5 }, /*20A5; L; [14 52, 03, 03]    # [0839.0020.0002] # MILL SIGN*/
+            { 0x20A6 }, /*20A6; L; [14 54, 03, 03]    # [083A.0020.0002] # NAIRA SIGN*/
+            { 0x20A7 }, /*20A7; L; [14 56, 03, 03]    # [083B.0020.0002] # PESETA SIGN*/
+            { 0x20A9 }, /*20A9; L; [14 58, 03, 03]    # [083C.0020.0002] # WON SIGN*/
+            { 0xFFE6 }, /*FFE6; L; [14 58, 03, 05]    # [083C.0020.0003] # FULLWIDTH WON SIGN*/
+            { 0x20AA }, /*20AA; L; [14 5A, 03, 03]    # [083D.0020.0002] # NEW SHEQEL SIGN*/
+            { 0x20AB }, /*20AB; L; [14 5C, 03, 03]    # [083E.0020.0002] # DONG SIGN*/
+            { 0x20AC }, /*20AC; L; [14 5E, 03, 03]    # [083F.0020.0002] # EURO SIGN*/
+            { 0x20AD }, /*20AD; L; [14 60, 03, 03]    # [0840.0020.0002] # KIP SIGN*/
+            { 0x20AE }, /*20AE; L; [14 62, 03, 03]    # [0841.0020.0002] # TUGRIK SIGN*/
+            { 0x20AF } /*20AF; L; [14 64, 03, 03]    # [0842.0020.0002] # DRACHMA SIGN*/
+        };
+    
+        int i, j;
+        int expectedResult = 0;
+        RuleBasedCollator c = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        
+        // Compare each currency symbol against all the
+        // currency symbols, including itself
+        String source;
+        String target;
+        
+        for (i = 0; i < currency.length; i += 1) {
+            for (j = 0; j < currency.length; j += 1) {
+                source = new String(currency[i]);
+                target = new String(currency[j]);
+
+                if (i < j) {
+                    expectedResult = -1;
+                } else if ( i == j) {
+                    expectedResult = 0;
+                } else {
+                    expectedResult = 1;
+                }
+
+                int compareResult = c.compare(source, target);
+                CollationKey sourceKey = null;
+            
+                sourceKey = c.getCollationKey(source);
+
+                if (sourceKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+            
+                CollationKey targetKey = null;
+                targetKey = c.getCollationKey(target);
+                if (targetKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+
+                int keyResult = sourceKey.compareTo(targetKey);
+
+                reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+            }
+        }
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
new file mode 100644
index 0000000..13e67cd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
@@ -0,0 +1,513 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationDummyTest
+ * Source File: $ICU4CRoot/source/test/intltest/allcoll.cpp
+ *              $ICU4CRoot/source/test/cintltst/callcoll.c
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class CollationDummyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationDummyTest().run(args);
+        // new CollationDummyTest().TestVariableTop();
+    }
+    
+    //testSourceCases[][] and testTargetCases[][], testCases[][] are ported from the file callcoll.c in icu4c
+    private static char[][] testSourceCases = {
+        {0x61, 0x62, 0x27, 0x63},
+        {0x63, 0x6f, 0x2d, 0x6f, 0x70},
+        {0x61, 0x62},
+        {0x61, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x61, 0x64},
+        {0x61, 0x6c, 0x6c},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x31},
+        {0x31},                                            //  10 
+        {0x32},
+        {0x32},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00EA, 0x63, 0x68, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},                                  //  20 
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x00E6, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x61, 0x62, 0x63},                                        //  30 
+        {0x61, 0x62, 0x63},                                  
+        {0x61, 0x62, 0x63, 0x48},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x63, 0x48, 0x63},                              //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EA,0x30}                                    // 37     
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x62, 0x63, 0x27},
+        {0x43, 0x4f, 0x4f, 0x50},
+        {0x61, 0x62, 0x63},
+        {0x26},
+        {0x26},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x6e, 0x6e, 0x65},
+        {0x70, 0x6e, 0x65},                                  //  10 
+        {0x74, 0x77, 0x6f},
+        {0x75, 0x77, 0x6f},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x3c, 0x3d, 0x62},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00E9, 0x63, 0x68, 0x00E9},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x43},                                  //  20 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x00E4, 0x62, 0x63},
+        {0x61, 0x00C6, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b, 0x2d, 0x62, 0x69, 0x72, 0x64},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x63},                                  //  30 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x61, 0x43, 0x48, 0x63},                                //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EB,0x30}                                    // 37 
+    };
+    
+    private static char[][] testCases = {
+        {0x61},
+        {0x41},
+        {0x00e4},
+        {0x00c4},
+        {0x61, 0x65},
+        {0x61, 0x45},
+        {0x41, 0x65},
+        {0x41, 0x45},
+        {0x00e6},
+        {0x00c6},
+        {0x62},
+        {0x63},
+        {0x7a}
+    };
+    
+    int[] results = {
+        -1,
+        -1, //Collator::GREATER,
+        -1,
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        -1,                                     //  10 
+        1,
+        -1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,
+    //  test primary > 17 
+        0,
+        0,
+        0,                                    //  20 
+        -1,
+        -1,
+        0,
+        0,
+        0,
+        -1,
+    //  test secondary > 26 
+        0,
+        0,
+        0,
+        0,
+        0,                                    //  30 
+        0,
+        -1,
+        0,                                     //  34 
+        0,
+        0,
+        -1 
+    };
+    
+    final int MAX_TOKEN_LEN = 16;
+    
+    public RuleBasedCollator myCollation;
+    
+    public CollationDummyTest() {
+    }
+    protected void init() throws Exception{
+        String ruleset = "& C < ch, cH, Ch, CH & Five, 5 & Four, 4 & one, 1 & Ampersand; '&' & Two, 2 ";
+        // String ruleset = "& Four, 4";
+        myCollation = null;
+        myCollation = new RuleBasedCollator(ruleset);
+    }
+    
+    // perform test with strength tertiary
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 17 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform test with strength PRIMARY
+    public void TestPrimary() {
+       // problem in strcollinc for unfinshed contractions 
+       myCollation.setStrength(Collator.PRIMARY);
+        for (int i = 17; i < 26 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 26; i < 34; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < testCases.length - 1; i++) {
+            for (j = i + 1; j < testCases.length; j += 1) {
+                doTest(myCollation, testCases[i], testCases[j], -1);
+            }
+        }
+    }
+
+    public void TestIdentical() {
+        int i;
+        myCollation.setStrength(Collator.IDENTICAL);
+        for (i= 34; i<37; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    public void TestJB581() {
+        String source = "THISISATEST.";
+        String target = "Thisisatest.";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for : en_US\n");
+            return;
+        }
+
+        int result = coll.compare(source, target);
+        // result is 1, secondary differences only for ignorable space characters
+        if (result != 1) {
+            errln("Comparing two strings with only secondary differences in C failed.\n");
+            return;
+        }
+        
+        // To compare them with just primary differences 
+        coll.setStrength(Collator.PRIMARY);
+        result = coll.compare(source, target);
+        // result is 0 
+        if (result != 0) {
+            errln("Comparing two strings with no differences in C failed.\n");
+            return;
+        } 
+          
+        // Now, do the same comparison with keys 
+        CollationKey sourceKeyOut, targetKeyOut;
+        sourceKeyOut = coll.getCollationKey(source);
+        targetKeyOut = coll.getCollationKey(target);
+        result = sourceKeyOut.compareTo(targetKeyOut);
+        if (result != 0) {
+            errln("Comparing two strings with sort keys in C failed.\n");
+            return;
+        }
+    }
+    
+    //TestSurrogates() is ported from cintltst/callcoll.c
+    
+    /**
+    * Tests surrogate support.
+    */
+    public void TestSurrogates() 
+    {
+        String rules = "&z<'\ud800\udc00'<'\ud800\udc0a\u0308'<A";
+        String source[] = {"z",
+                           "\uD800\uDC00",
+                           "\ud800\udc0a\u0308",
+                           "\ud800\udc02"    
+        };
+        
+        String target[] = {"\uD800\uDC00",
+                           "\ud800\udc0a\u0308",
+                           "A",
+                           "\ud800\udc03"    
+        };
+    
+        // this test is to verify the supplementary sort key order in the english 
+        // collator
+        Collator enCollation;
+        try {
+            enCollation = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;       
+        }
+        
+        myCollation.setStrength(Collator.TERTIARY);
+        int count = 0;
+        // logln("start of english collation supplementary characters test\n");
+        while (count < 2) {
+            doTest(enCollation, source[count], target[count], -1);
+            count ++;
+        }
+        doTest(enCollation, source[count], target[count], 1);
+            
+        // logln("start of tailored collation supplementary characters test\n");
+        count = 0;
+        Collator newCollation;
+        try {
+            newCollation = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for rules");
+            return;       
+        }
+        
+        // tests getting collation elements for surrogates for tailored rules 
+        while (count < 4) {
+            doTest(newCollation, source[count], target[count], -1);
+            count ++;
+        }
+    
+        // tests that \uD801\uDC01 still has the same value, not changed 
+        CollationKey enKey = enCollation.getCollationKey(source[3]);
+        CollationKey newKey = newCollation.getCollationKey(source[3]);
+        int keyResult = enKey.compareTo(newKey);
+        if(keyResult != 0) {
+            errln("Failed : non-tailored supplementary characters should have the same value\n");
+        }
+    }
+    
+    //TestVariableTop() is ported from cintltst/callcoll.c
+    /**
+    * Tests the [variable top] tag in rule syntax. Since the default [alternate]
+    * tag has the value shifted, any codepoints before [variable top] should give
+    * a primary ce of 0.
+    */
+    public void TestVariableTop() {
+        String rule = "&z = [variable top]";
+        Collator  myColl;
+        Collator  enColl;
+        char[] source = new char[1];
+        char ch;
+        int expected[] = {0};
+    
+        try {
+            enColl = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        
+        try{
+            myColl = new RuleBasedCollator(rule);
+        } catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + rule);
+            return;
+        }  
+        enColl.setStrength(Collator.PRIMARY);
+        myColl.setStrength(Collator.PRIMARY);
+        
+        ((RuleBasedCollator)enColl).setAlternateHandlingShifted(true);
+        ((RuleBasedCollator)myColl).setAlternateHandlingShifted(true);
+        
+        if(((RuleBasedCollator)enColl).isAlternateHandlingShifted() != true) {
+            errln("ERROR: ALTERNATE_HANDLING value can not be set to SHIFTED\n");
+        }
+        
+        // space is supposed to be a variable 
+        CollationKey key = enColl.getCollationKey(" ");   
+        byte[] result = key.toByteArray(); 
+        
+        for(int i = 0; i < result.length; i++) {
+            if(result[i]!= expected[i]) {
+                errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                break;  
+            }
+        }
+        
+        ch = 'a';
+        while (ch < 'z') {
+            source[0] = ch;
+            key = myColl.getCollationKey(new String(source));
+            result = key.toByteArray();
+            
+            for(int i = 0; i < result.length; i++) {
+                if(result[i]!= expected[i]) {
+                    errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                    break;  
+                }
+            }
+            ch ++;
+        }
+    }
+    
+    public void TestJB1401() {
+        Collator     myCollator = null;
+        char[] NFD_UnsafeStartChars = {
+            0x0f73,          // Tibetan Vowel Sign II 
+            0x0f75,          // Tibetan Vowel Sign UU 
+            0x0f81,          // Tibetan Vowel Sign Reversed II 
+            0
+        };
+        int i;
+    
+        try{
+            myCollator = Collator.getInstance(Locale.ENGLISH);
+        } catch(Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        myCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i=0; ; i++) {
+            // Get the next funny character to be tested, and set up the
+            // three test strings X, Y, Z, consisting of an A-grave + test char,
+            // in original form, NFD, and then NFC form.
+            char c = NFD_UnsafeStartChars[i];
+            if (c==0) {break;}
+            
+            String x = "\u00C0" + c;       // \u00C0 is A Grave
+            String y;
+            String z;
+    
+            try{
+                y = Normalizer.decompose(x, false);
+                z = Normalizer.decompose(y, true);
+            } catch (Exception e) {
+                errln("ERROR: Failed to normalize test of character" + c);
+                return;
+            }
+       
+            // Collation test.  All three strings should be equal.
+            // doTest does both strcoll and sort keys, with params in both orders.
+            doTest(myCollator, x, y, 0);
+            doTest(myCollator, x, z, 0);
+            doTest(myCollator, y, z, 0); 
+    
+            // Run collation element iterators over the three strings.  Results should be same for each.
+             
+            {
+                CollationElementIterator ceiX, ceiY, ceiZ;
+                int ceX, ceY, ceZ;
+                int j;
+                try {
+                    ceiX = ((RuleBasedCollator)myCollator).getCollationElementIterator(x);
+                    ceiY = ((RuleBasedCollator)myCollator).getCollationElementIterator(y);
+                    ceiZ = ((RuleBasedCollator)myCollator).getCollationElementIterator(z);
+                } catch(Exception e) {
+                    errln("ERROR: getCollationElementIterator failed");
+                    return;
+                }
+    
+                for (j=0;; j++) {
+                    try{
+                        ceX = ceiX.next();
+                        ceY = ceiY.next();
+                        ceZ = ceiZ.next();
+                    } catch (Exception e) {
+                        errln("ERROR: CollationElementIterator.next failed for iteration " + j);
+                        break;
+                    }
+                  
+                    if (ceX != ceY || ceY != ceZ) {
+                        errln("ERROR: ucol_next failed for iteration " + j);
+                        break;
+                    }
+                    if (ceX == CollationElementIterator.NULLORDER) {
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation, char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation,String s, String t, int result) {
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    private void doTestVariant(Collator collation, String source, String target, int result) {
+        int compareResult = collation.compare(source, target);
+        CollationKey srckey , tgtkey;
+        srckey = collation.getCollationKey(source);
+        tgtkey = collation.getCollationKey(target);
+        int keyResult = srckey.compareTo(tgtkey);
+        if (compareResult != result) {
+            errln("String comparison failed in variant test\n");
+        }
+        if (keyResult != result) {
+            errln("Collation key comparison failed in variant test\n");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
new file mode 100644
index 0000000..d1732ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
@@ -0,0 +1,423 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationEnglishTest
+ * Source File: $ICU4CRoot/source/test/intltest/encoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class CollationEnglishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationEnglishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0020 /* ' ' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0048 /* 'H' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */}, 
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},                                            
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x006C /* 'l' */, 0x0065 /* 'e' */, 0x0073 /* 's' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */},
+        {0x0041 /* 'A' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},                                                                
+        {0x0074 /* 't' */, 0x0063 /* 'c' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0070 /* 'p' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */}, 
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E6, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                            
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x0069 /* 'i' */, 0x0302, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                         
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},               
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9}                                            // 49
+    };
+    
+    private static char[][] testTargetCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},                             
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0041 /* 'A' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x0302, 0x006C /* 'l' */, 0x0065 /* 'e' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                             
+        {0x0054 /* 'T' */, 0x0043 /* 'C' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0050 /* 'P' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0042 /* 'B' */},
+        {0x0061 /* 'a' */, 0x0026 /* '&' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                             
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x003D /* '=' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x00EE, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},                                                          
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},          
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */}
+    };                                           // 49
+
+    private static int[] results = {
+    //-1:LESS; 0:EQUAL; 1:GREATER
+        -1, 
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        0,
+        -1,
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/                                                          /* 10 */
+        1,
+        -1,
+        0,
+        -1,
+        1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,                                                             /* 20 */
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        1,
+        /* Test Tertiary  > 26 */
+        -1,
+        -1,
+        1,
+        -1,                                                             /* 30 */
+        1,
+        0,
+        1,
+        -1,
+        -1,
+        -1,
+        /* test identical > 36 */
+        0,
+        0,
+        /* test primary > 38 */
+        0,
+        0,                                                            /* 40 */
+        -1,
+        0,
+        0,
+        /* test secondary > 43 */
+        -1,
+        -1,
+        0,
+        -1,
+        -1, 
+        -1                                                                  // 49
+    };
+
+    private static char [][] testBugs = {
+        {0x61},
+        {0x41},
+        {0x65},
+        {0x45},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x65, 0x61},
+        {0x78}
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationFrenchTest
+    private static char[][] testAcute = {
+        {0x65, 0x65},
+        {0x65, 0x65, 0x0301},
+        {0x65, 0x65, 0x0301, 0x0300},
+        {0x65, 0x65, 0x0300},
+        {0x65, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x65},
+        {0x65, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x65},
+        {0x65, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300, 0x0301}
+    };
+
+    private static char[][] testMore = {
+        {0x0061 /* 'a' */, 0x0065 /* 'e' */},
+        { 0x00E6},
+        { 0x00C6},
+        {0x0061 /* 'a' */, 0x0066 /* 'f' */},
+        {0x006F /* 'o' */, 0x0065 /* 'e' */},
+        { 0x0153},
+        { 0x0152},
+        {0x006F /* 'o' */, 0x0066 /* 'f' */},
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationEnglishTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.ENGLISH);
+    }
+    
+    //performs test with strength PRIMARY
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 38; i < 43 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }  
+    }
+    
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 43; i < 49 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+
+        //test acute and grave ordering (compare to french collation)
+        int j;
+        int expected;
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                logln("i = " + i + "; j = " + j);
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+    
+    //perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        //for (i = 0; i < 38 ; i++)  //attention: there is something wrong with 36, 37.
+        for (i = 0; i < 38 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        } 
+
+        int j = 0;
+        for (i = 0; i < 10; i++)
+        {
+            for (j = i+1; j < 10; j++)
+            {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+
+        //test more interesting cases
+        int expected;
+        for (i = 0; i < testMore.length; i++)
+        {
+            for (j = 0; j < testMore.length; j++)
+            {
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testMore[i], testMore[j], expected );
+            }
+        }
+    }
+    
+   // main test routine, tests rules defined by the "en" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+ }
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
new file mode 100644
index 0000000..1d797f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFinnishTest
+ * Source File: $ICU4CRoot/source/test/intltest/ficoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+ 
+public class CollationFinnishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationFinnishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x77, 0x61, 0x74},
+        {0x76, 0x61, 0x74},
+        {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E5, 0x76, 0x69},
+        {0x77, 0x61, 0x74}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x76, 0x61, 0x74},
+        {0x77, 0x61, 0x79},
+        {0x61, 0x78, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E4, 0x77, 0x65},
+        {0x76, 0x61, 0x74}
+    };
+
+    private static int[] results = {
+        1,
+        -1,
+        1,
+        -1,
+        // test primary > 4
+        0, //collation rules for finnish have changed!
+    };
+
+    private Collator myCollation = null;
+    
+    public CollationFinnishTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new ULocale("fi_FI@collation=standard"));
+    }
+     
+    
+    // perform tests with strength PRIMARY
+    public void TestPrimary() {
+        int i = 0;
+        myCollation.setStrength(Collator.PRIMARY);
+        for(i = 4; i < 5; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);    
+        }         
+    }
+    
+    // perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for(i = 0; i < 4; i++ ) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }    
+    }
+    
+    // main test routine, tests rules specific to the finish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
new file mode 100644
index 0000000..11f3acc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
@@ -0,0 +1,278 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFrenchTest
+ * Source File: $ICU4CRoot/source/test/intltest/frcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationFrenchTest extends TestFmwk{
+    public static void main(String[] args) throws Exception {
+        new CollationFrenchTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061/*'a'*/, 0x0062/*'b'*/, 0x0063/*'c'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x0054/*'T'*/, 0x0045/*'E'*/},
+        {0x0063/*'c'*/, 0x006f/*'o'*/, 0x002d/*'-'*/, 0x006f/*'o'*/, 0x0070/*'p'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/},
+        {0x01f1},
+        {0xfb00},
+        {0x01fa},
+        {0x0101}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x0041/*'A'*/, 0x0042/*'B'*/, 0x0043/*'C'*/},
+        {0x0063/*'c'*/, 0x00f4, 0x0074/*'t'*/, 0x0065/*'e'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x004f/*'O'*/, 0x0050/*'P'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/,  0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x004f/*'O'*/},
+        {0x01ee},
+        {0x25ca},
+        {0x00e0},
+        {0x01df}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        -1,
+        1,
+       -1, /*Collator::GREATER,*/
+        1,
+        -1,
+        -1
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationEnglishTest
+    private static char[][] testAcute = {
+    /*00*/    {0x0065/*'e'*/, 0x0065/*'e'*/},
+    /*01*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/},
+    /*02*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/},
+    /*03*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/},
+    /*04*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/},
+    /*05*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301}, 
+    /*06*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*07*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*08*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*09*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*0a*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0b*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0c*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0d*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0e*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0f*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300},
+    /*10*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*11*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*12*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*13*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*14*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*15*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*16*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*17*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*18*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300}
+    };
+
+    private static char[][] testBugs = {
+        {0x0061/*'a'*/},
+        {0x0041/*'A'*/},
+        {0x0065/*'e'*/},
+        {0x0045/*'E'*/},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x0065/*'e'*/, 0x0061/*'a'*/},
+        {0x0078/*'x'*/}
+    };
+    
+    
+    private Collator myCollation = null;
+    
+    public CollationFrenchTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.FRENCH);
+    }
+     
+    // perform tests with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 12 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // perform tests with strength SECONDARY
+    public void TestSecondary() {
+        //test acute and grave ordering
+        int i = 0;
+        int j;
+        int expected;
+
+        myCollation.setStrength(Collator.SECONDARY);
+        
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                if (i <  j) {
+                    expected = -1;
+                } else if (i == j) {
+                    expected = 0;
+                } else {
+                    expected = 1;
+                }
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 9 ; i++) {
+            for (j = i + 1; j < 10; j += 1) {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+    }
+    
+    public void TestContinuationReordering()
+    {
+        String rule = "&0x2f00 << 0x2f01";
+        try {
+            RuleBasedCollator collator = new RuleBasedCollator(rule);
+            collator.setFrenchCollation(true);
+            CollationKey key1 
+                        = collator.getCollationKey("a\u0325\u2f00\u2f01b\u0325");
+            CollationKey key2
+                        = collator.getCollationKey("a\u0325\u2f01\u2f01b\u0325");
+            if (key1.compareTo(key2) >= 0) {
+                errln("Error comparing continuation strings");
+            }
+        } catch (Exception e) {
+            errln(e.toString());
+        }
+    }
+     
+    // main test routine, test rules specific to the french locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);  
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+} 
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
new file mode 100644
index 0000000..b61671f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationGermanTest
+ * Source File: $ICU4CRoot/source/test/intltest/decoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationGermanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationGermanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x47, 0x72, 0x00F6, 0x00DF, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x47, 0x72, 0x6f, 0x73, 0x73, 0x69, 0x73, 0x74},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x54, 0x6f, 0x6e},
+        {0x54, 0x6f, 0x64},
+        {0x54, 0x6f, 0x66, 0x75},
+        {0x41, 0x0308, 0x62, 0x63},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65}
+    };
+
+    private static int results[][] =
+    {
+        //  Primary  Tertiary
+        { -1,        -1 },
+        { 0,         -1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 0,         -1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 }
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationGermanTest() {
+
+    }
+    protected void init() throws Exception{
+        myCollation = Collator.getInstance(Locale.GERMAN);
+        if(myCollation == null) {
+            errln("ERROR: in creation of collator of GERMAN locale");
+        }
+    }
+    // perform test with strength TERTIARY
+    public void TestTertiary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][1]);
+        }
+    }
+    
+    // perform test with strength SECONDARY
+    //This method in icu4c has no implementation.
+    public void TestSecondary(){
+    }
+    
+     // perform test with strength PRIMARY
+    public void TestPrimary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][0]);
+        }
+    }
+    
+    
+    //main test routine, tests rules specific to germa locale
+    private void doTest(char[] source, char[] target, int result){
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
new file mode 100644
index 0000000..dfb1027
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
@@ -0,0 +1,646 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationIteratorTest
+ * Source File: $ICU4CRoot/source/test/intltest/itercoll.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.lang.UCharacter;
+
+public class CollationIteratorTest extends TestFmwk {
+    
+    String test1 = "What subset of all possible test cases?";
+    String test2 = "has the highest probability of detecting";
+   
+    public static void main(String[] args) throws Exception {
+        new CollationIteratorTest().run(args);
+        // new CollationIteratorTest().TestNormalizedUnicodeChar();
+    }
+    
+    /*
+     * @bug 4157299
+     */
+    public void TestClearBuffers(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator("&a < b < c & ab = d");
+        } catch (Exception e) {
+            warnln("Couldn't create a RuleBasedCollator.");
+            return;
+        }
+    
+        String source = "abcd";
+        CollationElementIterator i = c.getCollationElementIterator(source);
+        int e0 = 0;
+        try {
+            e0 = i.next();    // save the first collation element
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(3);        // go to the expanding character
+        } catch (Exception e) {
+            errln("call to i.setOffset(3) failed.");
+            return;
+        }
+        
+        try {
+            i.next();                // but only use up half of it
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(0);        // go back to the beginning
+        } catch (Exception e) {
+            errln("call to i.setOffset(0) failed. ");
+        }
+        
+        int e = 0;
+        try {
+            e = i.next();    // and get this one again
+        } catch (Exception ee) {
+            errln("call to i.next() failed. ");
+            return;
+        }
+        
+        if (e != e0) {
+            errln("got 0x" + Integer.toHexString(e) + ", expected 0x" + Integer.toHexString(e0));
+        }
+    }
+    
+    /** @bug 4108762
+     * Test for getMaxExpansion()
+     */
+    public void TestMaxExpansion(/* char* par */) {
+        int unassigned = 0xEFFFD;
+        String rule = "&a < ab < c/aba < d < z < ch";
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            warnln("Fail to create RuleBasedCollator");
+            return;
+        }
+        char ch = 0;
+        String str = String.valueOf(ch);
+    
+        CollationElementIterator iter = coll.getCollationElementIterator(str);
+    
+        while (ch < 0xFFFF) {
+            int count = 1;
+            ch ++;
+            str = String.valueOf(ch);
+            iter.setText(str);
+            int order = iter.previous();
+    
+            // thai management 
+            if (order == 0) {
+                order = iter.previous();
+            }
+    
+            while (iter.previous() != CollationElementIterator.NULLORDER) {
+                count ++; 
+            }
+    
+            if (iter.getMaxExpansion(order) < count) {
+                errln("Failure at codepoint " + ch + ", maximum expansion count < " + count);
+            }
+        }
+        
+        // testing for exact max expansion 
+        ch = 0;
+        while (ch < 0x61) {
+            str = String.valueOf(ch);
+            iter.setText(str);
+            int order = iter.previous();
+            
+            if (iter.getMaxExpansion(order) != 1) {
+                errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                      + " maximum expansion count == 1");
+            }
+            ch ++;
+        }
+
+        ch = 0x63;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        int temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 3) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 3");
+        }
+
+        ch = 0x64;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 1) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 1");
+        }
+
+        str = UCharacter.toString(unassigned);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 2) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 2");
+        }
+
+
+        // testing jamo
+        ch = 0x1165;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) > 3) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                          + " maximum expansion count < 3");
+        }
+
+        // testing special jamo &a<\u1165
+        rule = "\u0026\u0071\u003c\u1165\u002f\u0071\u0071\u0071\u0071";
+
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator");
+            return;
+        }
+        iter = coll.getCollationElementIterator(str);
+        
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 6) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                         + " maximum expansion count == 6");
+        }
+    }
+    
+    /**
+     * Test for getOffset() and setOffset()
+     */
+    public void TestOffset(/* char* par */) {
+        RuleBasedCollator en_us;
+        try {
+            en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);    
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+        // testing boundaries
+        iter.setOffset(0);
+        if (iter.previous() != CollationElementIterator.NULLORDER) {
+            errln("Error: After setting offset to 0, we should be at the end "
+                  + "of the backwards iteration");
+        }
+        iter.setOffset(test1.length());
+        if (iter.next() != CollationElementIterator.NULLORDER) {
+            errln("Error: After setting offset to the end of the string, we " 
+                  + "should be at the end of the forwards iteration");
+        }
+    
+        // Run all the way through the iterator, then get the offset
+        int[] orders = CollationTest.getOrders(iter);
+        logln("orders.length = " + orders.length);
+        
+        int offset = iter.getOffset();
+    
+        if (offset != test1.length()) {
+            String msg1 = "offset at end != length: ";
+            String msg2 = " vs ";
+            errln(msg1 + offset + msg2 + test1.length());
+        }
+    
+        // Now set the offset back to the beginning and see if it works
+        CollationElementIterator pristine = en_us.getCollationElementIterator(test1);
+        
+        try {
+            iter.setOffset(0);
+        } catch(Exception e) {
+            errln("setOffset failed.");
+        }
+        assertEqual(iter, pristine);
+    
+        // setting offset in the middle of a contraction
+        String contraction = "change";
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator("& a < ch");
+        } catch (Exception e) {
+            errln("Error: in creation of Spanish collator");
+            return;
+        }
+        iter = tailored.getCollationElementIterator(contraction);
+        int order[] = CollationTest.getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of ch
+        int order2[] = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        contraction = "peache";
+        iter = tailored.getCollationElementIterator(contraction);
+        iter.setOffset(3);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(4); // sets offset in the middle of ch
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        // setting offset in the middle of a surrogate pair
+        String surrogate = "\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of surrogate
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        surrogate = "simple\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        iter.setOffset(6);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(7); // sets offset in the middle of surrogate
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        // TODO: try iterating halfway through a messy string.
+    }
+    
+    
+
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+            if (c1 != c2) {
+                errln("    " + count + ": strength(0x" + 
+                    Integer.toHexString(c1) + ") != strength(0x" + Integer.toHexString(c2) + ")");
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+        CollationTest.backAndForth(this, i1);
+        CollationTest.backAndForth(this, i2);
+    }
+    
+    /**
+     * Test for CollationElementIterator.previous()
+     *
+     * @bug 4108758 - Make sure it works with contracting characters
+     * 
+     */
+    public void TestPrevious(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+    
+        // A basic test to see if it's working at all
+        CollationTest.backAndForth(this, iter);
+    
+        // Test with a contracting character sequence
+        String source;
+        RuleBasedCollator c1 = null;
+        try {
+            c1 = new RuleBasedCollator("&a,A < b,B < c,C, d,D < z,Z < ch,cH,Ch,CH");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with a contracting sequence.");
+            return;
+        }
+    
+        source = "abchdcba";
+        iter = c1.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        // Test with an expanding character sequence
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator("&a < b < c/abd < d");
+        } catch (Exception e ) {
+            errln("Couldn't create a RuleBasedCollator with an expanding sequence.");
+            return;
+        }
+    
+        source = "abcd";
+        iter = c2.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        // Now try both
+        RuleBasedCollator c3 = null;
+        try {
+            c3 = new RuleBasedCollator("&a < b < c/aba < d < z < ch");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with both an expanding and a contracting sequence.");
+            return;
+        }
+        
+        source = "abcdbchdc";
+        iter = c3.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        source= "\u0e41\u0e02\u0e41\u0e02\u0e27abc";
+        Collator c4 = null;
+        try {
+            c4 = Collator.getInstance(new Locale("th", "TH", ""));
+        } catch (Exception e) {
+            errln("Couldn't create a collator");
+            return;
+        }
+        
+        iter = ((RuleBasedCollator)c4).getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+       
+        source= "\u0061\u30CF\u3099\u30FC";
+        Collator c5 = null;
+        try {
+            c5 = Collator.getInstance(new Locale("ja", "JP", ""));
+        } catch (Exception e) {
+            errln("Couldn't create Japanese collator\n");
+            return;
+        }
+        iter = ((RuleBasedCollator)c5).getCollationElementIterator(source);
+        
+        CollationTest.backAndForth(this, iter);
+    }
+    
+    
+    
+    /**
+     * Test for setText()
+     */
+    public void TestSetText(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator iter2 = en_us.getCollationElementIterator(test2);
+    
+        // Run through the second iterator just to exercise it
+        int c = iter2.next();
+        int i = 0;
+    
+        while ( ++i < 10 && c != CollationElementIterator.NULLORDER) {
+            try {
+                c = iter2.next();
+            } catch (Exception e) {
+                errln("iter2.next() returned an error.");
+                break;
+            }
+        }
+    
+        // Now set it to point to the same string as the first iterator
+        try {
+            iter2.setText(test1);
+        } catch (Exception e) {
+            errln("call to iter2->setText(test1) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+        
+        iter1.reset();
+        //now use the overloaded setText(ChracterIterator&, UErrorCode) function to set the text
+        CharacterIterator chariter = new StringCharacterIterator(test1);
+        try {
+            iter2.setText(chariter);
+        } catch (Exception e ) {
+            errln("call to iter2->setText(chariter(test1)) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+        
+        iter1.reset();
+        //now use the overloaded setText(ChracterIterator&, UErrorCode) function to set the text
+        UCharacterIterator uchariter = UCharacterIterator.getInstance(test1);
+        try {
+            iter2.setText(uchariter);
+        } catch (Exception e ) {
+            errln("call to iter2->setText(uchariter(test1)) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+    }
+
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters.
+     */
+    public void TestUnicodeChar() {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter;
+        char codepoint;
+        StringBuffer source = new StringBuffer();
+        source.append("\u0e4d\u0e4e\u0e4f");
+        // source.append("\u04e8\u04e9");
+        iter = en_us.getCollationElementIterator(source.toString());
+        // A basic test to see if it's working at all 
+        CollationTest.backAndForth(this, iter);
+        for (codepoint = 1; codepoint < 0xFFFE;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            /*if (codepoint >= 0x04fc) {
+                System.out.println("codepoint " + Integer.toHexString(codepoint));
+                String str = source.substring(230, 232);
+                System.out.println(com.ibm.icu.impl.Utility.escape(str));
+                System.out.println("codepoint " + Integer.toHexString(codepoint) 
+                                   + "length " + str.length());
+                iter = en_us.getCollationElementIterator(str);
+                CollationTest.backAndForth(this, iter);
+            }
+            */
+            iter = en_us.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+    
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters with normalization on.
+     */
+    public void TestNormalizedUnicodeChar()
+    {
+        // thai should have normalization on
+        RuleBasedCollator th_th = null;
+        try {
+            th_th = (RuleBasedCollator)Collator.getInstance(
+                                                       new Locale("th", "TH"));
+        } catch (Exception e) {
+            warnln("Error creating Thai collator");
+            return;
+        }
+        StringBuffer source = new StringBuffer();
+        source.append('\uFDFA');
+        CollationElementIterator iter 
+                        = th_th.getCollationElementIterator(source.toString());
+        CollationTest.backAndForth(this, iter);
+        for (char codepoint = 0x1; codepoint < 0xfffe;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            
+            /*if (((int)codepoint) >= 0xfe00) {
+                String str = source.substring(185, 190);
+                System.out.println(com.ibm.icu.impl.Utility.escape(str));
+                System.out.println("codepoint " 
+                                   + Integer.toHexString(codepoint) 
+                                   + "length " + str.length());
+                iter = th_th.getCollationElementIterator(str);
+                CollationTest.backAndForth(this, iter);
+            */
+            iter = th_th.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+    
+    /**
+    * Testing the discontiguous contractions
+    */
+    public void TestDiscontiguous() 
+    {
+        String rulestr ="&z < AB < X\u0300 < ABC < X\u0300\u0315";
+        String src[] = {"ADB", "ADBC", "A\u0315B", "A\u0315BC",
+                        // base character blocked
+                        "XD\u0300", "XD\u0300\u0315",
+                        // non blocking combining character
+                        "X\u0319\u0300", "X\u0319\u0300\u0315",
+                        // blocking combining character
+                        "X\u0314\u0300", "X\u0314\u0300\u0315",
+                        // contraction prefix
+                        "ABDC", "AB\u0315C","X\u0300D\u0315", 
+                        "X\u0300\u0319\u0315", "X\u0300\u031A\u0315",
+                        // ends not with a contraction character
+                        "X\u0319\u0300D", "X\u0319\u0300\u0315D", 
+                        "X\u0300D\u0315D", "X\u0300\u0319\u0315D", 
+                        "X\u0300\u031A\u0315D"
+        };
+        String tgt[] = {// non blocking combining character
+                        "A D B", "A D BC", "A \u0315 B", "A \u0315 BC",
+                        // base character blocked
+                        "X D \u0300", "X D \u0300\u0315",
+                        // non blocking combining character
+                        "X\u0300 \u0319", "X\u0300\u0315 \u0319",
+                        // blocking combining character
+                        "X \u0314 \u0300", "X \u0314 \u0300\u0315",
+                        // contraction prefix
+                        "AB DC", "AB \u0315 C","X\u0300 D \u0315", 
+                        "X\u0300\u0315 \u0319", "X\u0300 \u031A \u0315",
+                        // ends not with a contraction character
+                        "X\u0300 \u0319D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 D\u0315D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 \u031A\u0315D"
+        };
+        int count = 0;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulestr);
+            CollationElementIterator iter 
+                                        = coll.getCollationElementIterator("");
+            CollationElementIterator resultiter 
+                                        = coll.getCollationElementIterator("");    
+            while (count < src.length) {
+                iter.setText(src[count]);
+                int s = 0;
+                while (s < tgt[count].length()) {
+                    int e = tgt[count].indexOf(' ', s);
+                    if (e < 0) {
+                        e = tgt[count].length();
+                    }
+                    String resultstr = tgt[count].substring(s, e);
+                    resultiter.setText(resultstr);
+                    int ce = resultiter.next();
+                    while (ce != CollationElementIterator.NULLORDER) {
+                        if (ce != iter.next()) {
+                            errln("Discontiguos contraction test mismatch at" 
+                                  + count);
+                            return;
+                        }
+                        ce = resultiter.next();
+                    }
+                    s = e + 1;
+                }
+                iter.reset();
+                CollationTest.backAndForth(this, iter);
+                count ++;
+            }
+        }
+        catch (Exception e) {
+            warnln("Error running discontiguous tests " + e.toString());
+        }
+    }
+
+    /**
+    * Test the incremental normalization
+    */
+    public void TestNormalization()
+    {
+        String rules = "&a < \u0300\u0315 < A\u0300\u0315 < \u0316\u0315B < \u0316\u0300\u0315";
+        String testdata[] = {"\u1ED9", "o\u0323\u0302",
+                            "\u0300\u0315", "\u0315\u0300",
+                            "A\u0300\u0315B", "A\u0315\u0300B",
+                            "A\u0316\u0315B", "A\u0315\u0316B",
+                            "\u0316\u0300\u0315", "\u0315\u0300\u0316",
+                            "A\u0316\u0300\u0315B", "A\u0315\u0300\u0316B",
+                            "\u0316\u0315\u0300", "A\u0316\u0315\u0300B"};
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator using rules " + rules);
+            return;
+        }
+        
+        CollationElementIterator iter = coll.getCollationElementIterator("testing");
+        for (int count = 0; count < testdata.length; count ++) {
+            iter.setText(testdata[count]);
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
new file mode 100644
index 0000000..3067239
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
@@ -0,0 +1,284 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationKanaTest
+ * Source File: $ICU4CRoot/source/test/intltest/jacoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Locale;
+ 
+public class CollationKanaTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationKanaTest().run(args);
+    }
+
+    private static char[][] testSourceCases = {
+        {0xff9E},
+        {0x3042},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8}                               /*  6 */
+    };
+
+    private static char[][] testTargetCases = {
+        {0xFF9F},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8},
+        {0x3042, 0x3042, 0x3068}                              /*  6 */
+    };
+
+    private static int[] results = {
+        -1,
+        0,   //Collator::LESS, /* Katakanas and Hiraganas are equal on tertiary level(ICU 2.0)*/
+        -1,
+        1, // Collator::LESS, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        -1,
+        -1,    //Collator::GREATER /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*//*  6 */
+    };
+
+    private static char[][] testBaseCases = {
+        {0x30AB},
+        {0x30AB, 0x30AD},
+        {0x30AD},
+        {0x30AD, 0x30AD}
+    };
+
+    private static char[][] testPlainDakutenHandakutenCases = {
+        {0x30CF, 0x30AB},
+        {0x30D0, 0x30AB},
+        {0x30CF, 0x30AD},
+        {0x30D0, 0x30AD}
+    };
+
+    private static char[][] testSmallLargeCases = {
+        {0x30C3, 0x30CF},
+        {0x30C4, 0x30CF},
+        {0x30C3, 0x30D0},
+        {0x30C4, 0x30D0}
+    };
+
+    private static char[][] testKatakanaHiraganaCases = {
+        {0x3042, 0x30C3},
+        {0x30A2, 0x30C3},
+        {0x3042, 0x30C4},
+        {0x30A2, 0x30C4}
+    };
+
+    private static char[][] testChooonKigooCases = {
+        /*0*/ {0x30AB, 0x30FC, 0x3042},
+        /*1*/ {0x30AB, 0x30FC, 0x30A2},
+        /*2*/ {0x30AB, 0x30A4, 0x3042},
+        /*3*/ {0x30AB, 0x30A4, 0x30A2},
+        /*6*/ {0x30AD, 0x30FC, 0x3042}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*7*/ {0x30AD, 0x30FC, 0x30A2}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*4*/ {0x30AD, 0x30A4, 0x3042},
+        /*5*/ {0x30AD, 0x30A4, 0x30A2}
+    };
+        
+    private Collator myCollation = null;
+    
+    public CollationKanaTest() {
+    }
+    protected void init()throws Exception{ 
+        if(myCollation==null){
+            myCollation = Collator.getInstance(Locale.JAPANESE); 
+        }
+    }
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 6; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    /* Testing base letters */
+    public void TestBase() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testBaseCases[i], testBaseCases[i + 1], -1);
+        }
+    }
+
+    /* Testing plain, Daku-ten, Handaku-ten letters */
+    public void TestPlainDakutenHandakuten() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testPlainDakutenHandakutenCases[i], testPlainDakutenHandakutenCases[i + 1], -1);
+        }
+    }
+
+    /* 
+    * Test Small, Large letters
+    */
+    public void TestSmallLarge() {
+        int i;
+        myCollation.setStrength(Collator.TERTIARY);
+
+        for (i = 0; i < 3 ; i++) {
+            doTest(testSmallLargeCases[i], testSmallLargeCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Katakana, Hiragana letters
+    */
+    public void TestKatakanaHiragana() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testKatakanaHiraganaCases[i], testKatakanaHiraganaCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Choo-on kigoo
+    */
+    public void TestChooonKigoo() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 7 ; i++) {
+            doTest(testChooonKigooCases[i], testChooonKigooCases[i + 1], -1);
+        }
+    }
+    
+    /*
+     * Test common Hiragana and Katakana characters (e.g. 0x3099) (ticket:6140)
+     */
+    public void TestCommonCharacters() {
+        char[] tmp1 = { 0x3058, 0x30B8 };
+        char[] tmp2 = { 0x3057, 0x3099, 0x30B7, 0x3099 };
+        CollationKey key1, key2;
+        int result;
+        String string1 = new String(tmp1);
+        String string2 = new String(tmp2);
+        RuleBasedCollator rb = (RuleBasedCollator)Collator.getInstance(ULocale.JAPAN);
+        rb.setHiraganaQuaternary(true);
+        rb.setStrength(Collator.QUATERNARY);
+        rb.setAlternateHandlingShifted(false);
+        
+        result = rb.compare(string1, string2);
+        
+        key1 = rb.getCollationKey(string1);
+        key2 = rb.getCollationKey(string2);
+        
+        if ( result != 0 || !key1.equals(key2)) {
+            errln("Failed Hiragana and Katakana common characters test. Expected results to be equal.");
+        }
+        
+    }
+    // main test routine, tests rules specific to "Kana" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
new file mode 100644
index 0000000..f81f52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -0,0 +1,2490 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : cintltest
+ * Source File: $ICU4CRoot/source/test/cintltest/cmsccoll.c
+ */
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ImplicitCEGenerator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.CollationElementIterator;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+import java.util.Set;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.TreeSet;
+
+public class CollationMiscTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CollationMiscTest().run(args);
+        // new CollationMiscTest().TestLocaleRuleBasedCollators(); 
+    }
+    
+    //private static final int NORM_BUFFER_TEST_LEN_ = 32;
+    private static final class Tester 
+    {
+        int u;
+        String NFC;
+        String NFD;
+    }
+    
+    private static final boolean hasCollationElements(Locale locale)
+    {
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,locale);
+        if (rb != null) {
+            try {
+                String collkey = rb.getStringWithFallback("collations/default"); 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements != null) {
+                    return true;
+                }
+            } catch (Exception e) {
+            }
+        }
+        return false;
+    }
+    
+    public void TestComposeDecompose() 
+    {
+        Tester t[] = new Tester[0x30000];
+        t[0] = new Tester();
+        logln("Testing UCA extensively\n");
+        RuleBasedCollator coll;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        } 
+        catch (Exception e) {
+            warnln("Error opening collator\n");
+            return;
+        }
+    
+        int noCases = 0;
+        for (int u = 0; u < 0x30000; u ++) {
+            String comp = UTF16.valueOf(u);
+            int len = comp.length();
+            t[noCases].NFC = Normalizer.normalize(u, Normalizer.NFC);
+            t[noCases].NFD = Normalizer.normalize(u, Normalizer.NFD);
+    
+            if (t[noCases].NFC.length() != t[noCases].NFD.length() 
+                || (t[noCases].NFC.compareTo(t[noCases].NFD) != 0) 
+                || (len != t[noCases].NFD.length())
+                || (comp.compareTo(t[noCases].NFD) != 0)) {
+                t[noCases].u = u;
+                if (len != t[noCases].NFD.length() 
+                    || (comp.compareTo(t[noCases].NFD) != 0)) {
+                    t[noCases].NFC = comp;
+                }
+                noCases ++;
+                t[noCases] = new Tester();
+            } 
+        }
+    
+        for (int u = 0; u < noCases; u ++) {
+            if (!coll.equals(t[u].NFC, t[u].NFD)) {
+                errln("Failure: codePoint \\u" + Integer.toHexString(t[u].u) 
+                      + " fails TestComposeDecompose in the UCA");
+                CollationTest.doTest(this, coll, t[u].NFC, t[u].NFD, 0);
+            }
+        }
+    
+        logln("Testing locales, number of cases = " + noCases);
+        Locale loc[] = Collator.getAvailableLocales();
+        for (int i = 0; i < loc.length; i ++) {
+            if (hasCollationElements(loc[i])) {
+                logln("Testing locale " + loc[i].getDisplayName());
+                coll = (RuleBasedCollator)Collator.getInstance(loc[i]);
+                coll.setStrength(Collator.IDENTICAL);
+     
+                for (int u = 0; u < noCases; u ++) {
+                    if (!coll.equals(t[u].NFC, t[u].NFD)) {
+                        errln("Failure: codePoint \\u" 
+                              + Integer.toHexString(t[u].u)
+                              + " fails TestComposeDecompose for locale "
+                              + loc[i].getDisplayName());
+                        // this tests for the iterators too
+                        CollationTest.doTest(this, coll, t[u].NFC, t[u].NFD, 
+                                             0);
+                    }
+                }
+            }
+        }
+    }
+    
+    public void TestRuleOptions() {
+        // values here are hardcoded and are correct for the current UCA when 
+        // the UCA changes, one might be forced to change these values. 
+        // (\\u02d0, \\U00010FFFC etc...) 
+        String[] rules = {
+            // cannot test this anymore, as [last primary ignorable] doesn't 
+            // have a  code point associated to it anymore  
+            // "&[before 3][last primary ignorable]<<<k",
+            // - all befores here amount to zero       
+            "&[before 3][first tertiary ignorable]<<<a",
+            "&[before 3][last tertiary ignorable]<<<a",  
+            "&[before 3][first secondary ignorable]<<<a",
+            "&[before 3][last secondary ignorable]<<<a", 
+            // 'normal' befores  
+            "&[before 3][first primary ignorable]<<<c<<<b &[first primary ignorable]<a",
+            // we don't have a code point that corresponds to the last primary 
+            // ignorable 
+            "&[before 3][last primary ignorable]<<<c<<<b &[last primary ignorable]<a",
+            "&[before 3][first variable]<<<c<<<b &[first variable]<a",
+            "&[last variable]<a &[before 3][last variable]<<<c<<<b ",
+            "&[first regular]<a &[before 1][first regular]<b", 
+            "&[before 1][last regular]<b &[last regular]<a",
+            "&[before 1][first implicit]<b &[first implicit]<a",
+            "&[before 1][last implicit]<b &[last implicit]<a", 
+            "&[last variable]<z&[last primary ignorable]<x&[last secondary ignorable]<<y&[last tertiary ignorable]<<<w&[top]<u",
+        };
+        String[][] data = {
+            // {"k", "\u20e3"},
+            {"\\u0000", "a"}, // you cannot go before first tertiary ignorable 
+            {"\\u0000", "a"}, // you cannot go before last tertiary ignorable 
+            {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+            {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+            {"c", "b", "\\u0332", "a"},
+            {"\\u0332", "\\u20e3", "c", "b", "a"},
+            {"c", "b", "\\u0009", "a", "\\u000a"},
+            {"c", "b", "\\uD834\\uDF71", "a", "\\u02d0"},
+            {"b", "\\u02d0", "a", "\\u02d1"},
+            {"b", "\\ud808\\udf6e", "a", "\\u4e00"},
+            {"b", "\\u4e00", "a", "\\u4e01"},
+            {"b", "\\U0010FFFD", "a"},
+            {"\ufffb",  "w", "y", "\u20e3", "x", "\u137c", "z", "u"},
+        };
+        
+        for (int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    void genericRulesStarter(String rules, String[] s) {
+        genericRulesStarterWithResult(rules, s, -1);
+    }
+    
+    void genericRulesStarterWithResult(String rules, String[] s, int result) {
+        
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            // logln("Rules starter for " + rules);
+            genericOrderingTestWithResult(coll, s, result);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules " + rules);
+        }
+    }
+    
+    void genericRulesStarterWithOptionsAndResult(String rules, String[] s, String[] atts, Object[] attVals, int result) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            genericOptionsSetter(coll, atts, attVals);
+            genericOrderingTestWithResult(coll, s, result);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules " + rules);
+        }
+    }
+    void genericOrderingTestWithResult(Collator coll, String[] s, int result) {
+        String t1 = "";
+        String t2 = "";
+        
+        for(int i = 0; i < s.length - 1; i++) {
+            for(int j = i+1; j < s.length; j++) {
+                t1 = Utility.unescape(s[i]);
+                t2 = Utility.unescape(s[j]);
+                // System.out.println(i + " " + j);
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, 
+                                     result);
+            }
+        }
+    }
+
+    void reportCResult(String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                       int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 /* synwee to undo && !isVerbose()*/) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            String numStr = Integer.toHexString(bytes[i]);
+            if (numStr.length()>2) {
+                target += numStr.substring(numStr.length()-2);
+            }
+            else {
+                target += numStr;
+            }
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    public void TestBeforePrefixFailure() {
+        String[] rules = {
+            "&g <<< a&[before 3]\uff41 <<< x",
+            "&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74&[before 3]\u30a7<<<\u30a9",
+            "&[before 3]\u30a7<<<\u30a9&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74",
+        };
+        String[][] data = {
+            {"x", "\uff41"},
+            {"\u30a9", "\u30a7"},
+            {"\u30a9", "\u30a7"},
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestContractionClosure() {
+        String[] rules = {
+            "&b=\u00e4\u00e4",
+            "&b=\u00C5",
+        };
+        String[][] data = {
+            { "b", "\u00e4\u00e4", "a\u0308a\u0308", "\u00e4a\u0308", "a\u0308\u00e4" },
+            { "b", "\u00C5", "A\u030A", "\u212B" },
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesStarterWithResult(rules[i], data[i], 0);
+        }
+    }
+    
+    public void TestPrefixCompose() {
+        String rule1 = "&\u30a7<<<\u30ab|\u30fc=\u30ac|\u30fc";
+        
+        String string = rule1;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(string);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+            warnln("Error open RuleBasedCollator rule = " + string);
+        }
+    }
+    
+    public void TestStrCollIdenticalPrefix() {
+        String rule = "&\ud9b0\udc70=\ud9b0\udc71";
+        String test[] = {
+            "ab\ud9b0\udc70",
+            "ab\ud9b0\udc71"
+        };
+        genericRulesStarterWithResult(rule, test, 0);
+    }
+    
+    public void TestPrefix() {
+        String[] rules = {
+            "&z <<< z|a",
+            "&z <<< z|   a", 
+            "[strength I]&a=\ud900\udc25&z<<<\ud900\udc25|a", 
+        };
+        String[][] data = {
+            {"zz", "za"},
+            {"zz", "za"},
+            {"aa", "az", "\ud900\udc25z", "\ud900\udc25a", "zz"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestNewJapanese() {
+        
+        String test1[] = {
+            "\u30b7\u30e3\u30fc\u30ec",
+            "\u30b7\u30e3\u30a4",
+            "\u30b7\u30e4\u30a3",
+            "\u30b7\u30e3\u30ec",
+            "\u3061\u3087\u3053",
+            "\u3061\u3088\u3053",
+            "\u30c1\u30e7\u30b3\u30ec\u30fc\u30c8",
+            "\u3066\u30fc\u305f",
+            "\u30c6\u30fc\u30bf", 
+            "\u30c6\u30a7\u30bf",
+            "\u3066\u3048\u305f",
+            "\u3067\u30fc\u305f", 
+            "\u30c7\u30fc\u30bf",
+            "\u30c7\u30a7\u30bf",
+            "\u3067\u3048\u305f",
+            "\u3066\u30fc\u305f\u30fc",
+            "\u30c6\u30fc\u30bf\u30a1",
+            "\u30c6\u30a7\u30bf\u30fc",
+            "\u3066\u3047\u305f\u3041",
+            "\u3066\u3048\u305f\u30fc",
+            "\u3067\u30fc\u305f\u30fc",
+            "\u30c7\u30fc\u30bf\u30a1",
+            "\u3067\u30a7\u305f\u30a1",
+            "\u30c7\u3047\u30bf\u3041",
+            "\u30c7\u30a8\u30bf\u30a2",
+            "\u3072\u3086",
+            "\u3073\u3085\u3042",
+            "\u3074\u3085\u3042",
+            "\u3073\u3085\u3042\u30fc",
+            "\u30d3\u30e5\u30a2\u30fc",
+            "\u3074\u3085\u3042\u30fc",
+            "\u30d4\u30e5\u30a2\u30fc",
+            "\u30d2\u30e5\u30a6",
+            "\u30d2\u30e6\u30a6",
+            "\u30d4\u30e5\u30a6\u30a2",
+            "\u3073\u3085\u30fc\u3042\u30fc", 
+            "\u30d3\u30e5\u30fc\u30a2\u30fc",
+            "\u30d3\u30e5\u30a6\u30a2\u30fc",
+            "\u3072\u3085\u3093",
+            "\u3074\u3085\u3093",
+            "\u3075\u30fc\u308a",
+            "\u30d5\u30fc\u30ea",
+            "\u3075\u3045\u308a",
+            "\u3075\u30a5\u308a",
+            "\u3075\u30a5\u30ea",
+            "\u30d5\u30a6\u30ea",
+            "\u3076\u30fc\u308a",
+            "\u30d6\u30fc\u30ea",
+            "\u3076\u3045\u308a",
+            "\u30d6\u30a5\u308a",
+            "\u3077\u3046\u308a",
+            "\u30d7\u30a6\u30ea",
+            "\u3075\u30fc\u308a\u30fc",
+            "\u30d5\u30a5\u30ea\u30fc",
+            "\u3075\u30a5\u308a\u30a3",
+            "\u30d5\u3045\u308a\u3043",
+            "\u30d5\u30a6\u30ea\u30fc",
+            "\u3075\u3046\u308a\u3043",
+            "\u30d6\u30a6\u30ea\u30a4",
+            "\u3077\u30fc\u308a\u30fc",
+            "\u3077\u30a5\u308a\u30a4",
+            "\u3077\u3046\u308a\u30fc",
+            "\u30d7\u30a6\u30ea\u30a4",
+            "\u30d5\u30fd",
+            "\u3075\u309e",
+            "\u3076\u309d",
+            "\u3076\u3075",
+            "\u3076\u30d5",
+            "\u30d6\u3075",
+            "\u30d6\u30d5",
+            "\u3076\u309e",
+            "\u3076\u3077",
+            "\u30d6\u3077",
+            "\u3077\u309d",
+            "\u30d7\u30fd",
+            "\u3077\u3075",
+        };
+        
+        String test2[] = {
+            "\u306f\u309d", // H\u309d 
+            "\u30cf\u30fd", // K\u30fd 
+            "\u306f\u306f", // HH 
+            "\u306f\u30cf", // HK 
+            "\u30cf\u30cf", // KK 
+            "\u306f\u309e", // H\u309e 
+            "\u30cf\u30fe", // K\u30fe 
+            "\u306f\u3070", // HH\u309b 
+            "\u30cf\u30d0", // KK\u309b 
+            "\u306f\u3071", // HH\u309c 
+            "\u30cf\u3071", // KH\u309c 
+            "\u30cf\u30d1", // KK\u309c 
+            "\u3070\u309d", // H\u309b\u309d 
+            "\u30d0\u30fd", // K\u309b\u30fd 
+            "\u3070\u306f", // H\u309bH 
+            "\u30d0\u30cf", // K\u309bK 
+            "\u3070\u309e", // H\u309b\u309e 
+            "\u30d0\u30fe", // K\u309b\u30fe 
+            "\u3070\u3070", // H\u309bH\u309b 
+            "\u30d0\u3070", // K\u309bH\u309b 
+            "\u30d0\u30d0", // K\u309bK\u309b 
+            "\u3070\u3071", // H\u309bH\u309c 
+            "\u30d0\u30d1", // K\u309bK\u309c 
+            "\u3071\u309d", // H\u309c\u309d 
+            "\u30d1\u30fd", // K\u309c\u30fd 
+            "\u3071\u306f", // H\u309cH 
+            "\u30d1\u30cf", // K\u309cK 
+            "\u3071\u3070", // H\u309cH\u309b 
+            "\u3071\u30d0", // H\u309cK\u309b 
+            "\u30d1\u30d0", // K\u309cK\u309b
+            "\u3071\u3071", // H\u309cH\u309c
+            "\u30d1\u30d1", // K\u309cK\u309c
+        };
+        
+        String[] att = { "strength", };
+        Object[] val = { new Integer(Collator.QUATERNARY), };
+        
+        String[] attShifted = { "strength", "AlternateHandling"};
+        Object valShifted[] = { new Integer(Collator.QUATERNARY), 
+                                Boolean.TRUE };
+       
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test1, att, val);
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test2, att, val);
+        
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test1, attShifted,
+                                        valShifted);
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test2, attShifted,
+                                        valShifted);
+    }
+    
+    void genericLocaleStarter(Locale locale, String s[]) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(locale);
+            
+        } catch (Exception e) {
+            warnln("Unable to open collator for locale " + locale);
+            return;
+        }
+        // logln("Locale starter for " + locale);
+        genericOrderingTest(coll, s);
+    }
+    
+    void genericLocaleStarterWithOptions(Locale locale, String[] s, String[] attrs, Object[] values) {
+        genericLocaleStarterWithOptionsAndResult(locale, s, attrs, values, -1);
+    }
+    
+    private void genericOptionsSetter(RuleBasedCollator coll, String[] attrs, Object[] values) {
+        for(int i = 0; i < attrs.length; i++) {
+            if (attrs[i].equals("strength")) {
+                coll.setStrength(((Integer)values[i]).intValue());
+            } 
+            else if (attrs[i].equals("decomp")) {
+                coll.setDecomposition(((Integer)values[i]).intValue());
+            } 
+            else if (attrs[i].equals("AlternateHandling")) {
+                coll.setAlternateHandlingShifted(((Boolean)values[i]
+                                                  ).booleanValue());
+            }
+            else if (attrs[i].equals("NumericCollation")) {
+                coll.setNumericCollation(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("UpperFirst")) {
+                coll.setUpperCaseFirst(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("LowerFirst")) {
+                coll.setLowerCaseFirst(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("CaseLevel")) {
+                coll.setCaseLevel(((Boolean)values[i]).booleanValue());
+            }
+        }        
+    }
+    
+    void genericLocaleStarterWithOptionsAndResult(Locale locale, String[] s, String[] attrs, Object[] values, int result) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            warnln("Unable to open collator for locale " + locale);
+            return;
+        }
+        // logln("Locale starter for " +locale);
+        
+        // logln("Setting attributes");
+        genericOptionsSetter(coll, attrs, values);
+        
+        genericOrderingTestWithResult(coll, s, result);
+    }
+    
+    void genericOrderingTest(Collator coll, String[] s) {
+        genericOrderingTestWithResult(coll, s, -1);
+    }
+    
+    public void TestNonChars() {
+        String test[] = {
+            "\u0000",
+            "\uFFFE", "\uFFFF",
+            "\\U0001FFFE", "\\U0001FFFF",
+            "\\U0002FFFE", "\\U0002FFFF",
+            "\\U0003FFFE", "\\U0003FFFF",
+            "\\U0004FFFE", "\\U0004FFFF",
+            "\\U0005FFFE", "\\U0005FFFF",
+            "\\U0006FFFE", "\\U0006FFFF",
+            "\\U0007FFFE", "\\U0007FFFF",
+            "\\U0008FFFE", "\\U0008FFFF",
+            "\\U0009FFFE", "\\U0009FFFF",
+            "\\U000AFFFE", "\\U000AFFFF",
+            "\\U000BFFFE", "\\U000BFFFF",
+            "\\U000CFFFE", "\\U000CFFFF",
+            "\\U000DFFFE", "\\U000DFFFF",
+            "\\U000EFFFE", "\\U000EFFFF",
+            "\\U000FFFFE", "\\U000FFFFF",
+            "\\U0010FFFE", "\\U0010FFFF"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("Unable to open collator");
+            return;
+        }
+        // logln("Test non characters");
+        
+        genericOrderingTestWithResult(coll, test, 0);
+    }
+    
+    public void TestExtremeCompression() {
+        String[] test = new String[4];
+        
+        for(int i = 0; i<4; i++) {
+            StringBuffer temp = new StringBuffer();
+            for (int j = 0; j < 2047; j++) {
+                temp.append('a');
+            }
+            temp.append((char)('a' + i));
+            test[i] = temp.toString();
+        }
+        
+        genericLocaleStarter(new Locale("en", "US"), test);
+    }
+
+    /**
+     * Tests surrogate support.
+     */
+    public void TestSurrogates() {
+        String test[] = {"z","\ud900\udc25", "\ud805\udc50", "\ud800\udc00y",  
+                         "\ud800\udc00r", "\ud800\udc00f", "\ud800\udc00", 
+                         "\ud800\udc00c", "\ud800\udc00b", "\ud800\udc00fa", 
+                         "\ud800\udc00fb", "\ud800\udc00a", "c", "b"};
+
+        String rule = "&z < \ud900\udc25 < \ud805\udc50 < \ud800\udc00y "
+            + "< \ud800\udc00r < \ud800\udc00f << \ud800\udc00 "
+            + "< \ud800\udc00fa << \ud800\udc00fb < \ud800\udc00a " 
+            + "< c < b";
+        genericRulesStarter(rule, test);
+    }
+    
+    public void TestBocsuCoverage() {
+        String test = "\u0041\u0441\u4441\\U00044441\u4441\u0441\u0041";
+        Collator coll = Collator.getInstance();
+        coll.setStrength(Collator.IDENTICAL);
+        CollationKey key = coll.getCollationKey(test);
+        logln("source:" + key.getSourceString());
+    }
+    
+    public void TestCyrillicTailoring() {
+        String test[] = {
+            "\u0410b",
+            "\u0410\u0306a",
+            "\u04d0A"
+        };
+        genericLocaleStarter(new Locale("en", ""), test);
+        genericRulesStarter("&\u0410 = \u0410", test);
+        genericRulesStarter("&Z < \u0410", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u04d0", test);
+        genericRulesStarter("&Z < \u0410 < \u04d0", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u0410\u0301", test);
+        genericRulesStarter("&Z < \u0410 < \u0410\u0301", test);
+    }
+
+    public void TestSuppressContractions() {
+        String testNoCont2[] = {
+            "\u0410\u0302a",
+            "\u0410\u0306b",
+            "\u0410c"            
+        };
+        String testNoCont[] = {
+            "a\u0410",            
+            "A\u0410\u0306",
+            "\uFF21\u0410\u0302"
+        };
+            
+        genericRulesStarter("[suppressContractions [\u0400-\u047f]]", testNoCont);
+        genericRulesStarter("[suppressContractions [\u0400-\u047f]]", testNoCont2);
+    }
+        
+    public void TestCase() {
+        String gRules = "\u0026\u0030\u003C\u0031\u002C\u2460\u003C\u0061\u002C\u0041";
+        String[] testCase = {
+            "1a", "1A", "\u2460a", "\u2460A"
+        };
+        int[][] caseTestResults = {
+            { -1, -1, -1, 0, -1, -1, 0, 0, -1 },
+            { 1, -1, -1, 0, -1, -1, 0, 0, 1 },
+            { -1, -1, -1, 0, 1, -1, 0, 0, -1 },
+            { 1, -1, 1, 0, -1, -1, 0, 0, 1 }
+    
+        };
+        boolean[][] caseTestAttributes = {
+            { false, false},
+            { true, false},
+            { false, true},
+            { true, true}
+        };
+        
+        int i,j,k;
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator ");
+            return;
+        }
+        // logln("Testing different case settings");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k <4; k++) {
+            if (caseTestAttributes[k][0] == true) {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+            }
+            else {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setLowerCaseFirst(true);   
+            }
+            ((RuleBasedCollator)myCollation).setCaseLevel(
+                                                          caseTestAttributes[k][1]);
+          
+            // logln("Case first = " + caseTestAttributes[k][0] + ", Case level = " + caseTestAttributes[k][1]);
+            for (i = 0; i < 3 ; i++) {
+                for(j = i+1; j<4; j++) {
+                    CollationTest.doTest(this, 
+                                         (RuleBasedCollator)myCollation, 
+                                         testCase[i], testCase[j], 
+                                         caseTestResults[k][3*i+j-1]);
+                }
+            }
+        }
+        try {
+            myCollation = new RuleBasedCollator(gRules);
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing different case settings with custom rules");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k<4; k++) {
+            if (caseTestAttributes[k][0] == true) {
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+            }
+            else {
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(false);
+            }
+            ((RuleBasedCollator)myCollation).setCaseLevel(
+                                                          caseTestAttributes[k][1]);
+            for (i = 0; i < 3 ; i++) {
+                for(j = i+1; j<4; j++) {
+                    CollationTest.doTest(this, 
+                                         (RuleBasedCollator)myCollation, 
+                                         testCase[i], testCase[j], 
+                                         caseTestResults[k][3*i+j-1]);
+                }
+            }
+        }
+
+        {
+            String[] lowerFirst = {
+                "h",
+                "H",
+                "ch",
+                "Ch",
+                "CH",
+                "cha",
+                "chA",
+                "Cha",
+                "ChA",
+                "CHa",
+                "CHA",
+                "i",
+                "I"
+            };
+    
+            String[] upperFirst = {
+                "H",
+                "h",
+                "CH",
+                "Ch",
+                "ch",
+                "CHA",
+                "CHa",
+                "ChA",
+                "Cha",
+                "chA",
+                "cha",
+                "I",
+                "i"
+            };
+            // logln("mixed case test");
+            // logln("lower first, case level off");
+            genericRulesStarter("[casefirst lower]&H<ch<<<Ch<<<CH", lowerFirst); 
+            // logln("upper first, case level off");
+            genericRulesStarter("[casefirst upper]&H<ch<<<Ch<<<CH", upperFirst);
+            // logln("lower first, case level on");
+            genericRulesStarter("[casefirst lower][caselevel on]&H<ch<<<Ch<<<CH", lowerFirst);
+            // logln("upper first, case level on");
+            genericRulesStarter("[casefirst upper][caselevel on]&H<ch<<<Ch<<<CH", upperFirst);
+        }
+    }
+
+    public void TestIncompleteCnt() {
+        String[] cnt1 = {
+            "AA",
+            "AC",
+            "AZ",
+            "AQ",
+            "AB",
+            "ABZ",
+            "ABQ",
+            "Z",
+            "ABC",
+            "Q",
+            "B"
+        };
+            
+        String[] cnt2 = {
+            "DA",
+            "DAD",
+            "DAZ",
+            "MAR",
+            "Z",
+            "DAVIS",
+            "MARK",
+            "DAV",
+            "DAVI"
+        };
+        RuleBasedCollator coll =  null;
+        String temp = " & Z < ABC < Q < B";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            warnln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        int size = cnt1.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = cnt1[i];
+                String t2 = cnt1[j];
+                CollationTest.doTest(this, coll, t1, t2, -1);
+            }
+        }
+        
+        temp = " & Z < DAVIS < MARK <DAV";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            warnln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        size = cnt2.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = cnt2[i];
+                String t2 = cnt2[j];
+                CollationTest.doTest(this, coll, t1, t2, -1);
+            }
+        }
+    }
+        
+    public void TestBlackBird() {
+        String[] shifted = {
+            "black bird",
+            "black-bird",
+            "blackbird",
+            "black Bird",
+            "black-Bird",
+            "blackBird",
+            "black birds",
+            "black-birds",
+            "blackbirds"
+        };
+        int[] shiftedTert = {
+            0,
+            0,
+            0,
+            -1,
+            0,
+            0,
+            -1,
+            0,
+            0
+        };
+        String[] nonignorable = {
+            "black bird",
+            "black Bird",
+            "black birds",
+            "black-bird",
+            "black-Bird",
+            "black-birds",
+            "blackbird",
+            "blackBird",
+            "blackbirds"
+        };
+        int i = 0, j = 0;
+        int size = 0;
+        Collator coll = Collator.getInstance(new Locale("en", "US"));
+        //ucol_setAttribute(coll, UCOL_NORMALIZATION_MODE, UCOL_OFF, &status);
+        //ucol_setAttribute(coll, UCOL_ALTERNATE_HANDLING, UCOL_NON_IGNORABLE, &status);
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(false);
+        size = nonignorable.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = nonignorable[i];
+                String t2 = nonignorable[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(true);
+        coll.setStrength(Collator.QUATERNARY);
+        size = shifted.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = shifted[i];
+                String t2 = shifted[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+        coll.setStrength(Collator.TERTIARY);
+        size = shifted.length;
+        for(i = 1; i < size; i++) {
+            String t1 = shifted[i-1];
+            String t2 = shifted[i];
+            CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, 
+                                 shiftedTert[i]);
+        }
+    }
+    
+    public void TestFunkyA() {
+        String[] testSourceCases = {
+            "\u0041\u0300\u0301",
+            "\u0041\u0300\u0316",
+            "\u0041\u0300",
+            "\u00C0\u0301",
+            // this would work with forced normalization 
+            "\u00C0\u0316",
+        };
+        
+        String[] testTargetCases = {
+            "\u0041\u0301\u0300",
+            "\u0041\u0316\u0300",
+            "\u00C0",
+            "\u0041\u0301\u0300",
+            // this would work with forced normalization 
+            "\u0041\u0316\u0300",
+        };
+        
+        int[] results = {
+            1,
+            0,
+            0,
+            1,
+            0
+        };
+
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing some A letters, for some reason");
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        myCollation.setStrength(Collator.TERTIARY);
+        for (int i = 0; i < 4 ; i++)
+            {
+                CollationTest.doTest(this, (RuleBasedCollator)myCollation, 
+                                     testSourceCases[i], testTargetCases[i], 
+                                     results[i]);
+            }
+    }
+    
+    public void TestChMove() {
+        String[] chTest = {
+            "c",
+            "C",
+            "ca", "cb", "cx", "cy", "CZ",
+            "c\u030C", "C\u030C",
+            "h",
+            "H",
+            "ha", "Ha", "harly", "hb", "HB", "hx", "HX", "hy", "HY",
+            "ch", "cH", "Ch", "CH",
+            "cha", "charly", "che", "chh", "chch", "chr",
+            "i", "I", "iarly",
+            "r", "R",
+            "r\u030C", "R\u030C",
+            "s",
+            "S",
+            "s\u030C", "S\u030C",
+            "z", "Z",
+            "z\u030C", "Z\u030C"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("cs", ""));
+        } catch (Exception e) {
+            warnln("Cannot create Collator");
+            return;
+        }
+        int size = chTest.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = chTest[i];
+                String t2 = chTest[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+    }
+    
+    public void TestImplicitTailoring() {
+        String rules[] = { "&[before 1]\u4e00 < b < c &[before 1]\u4e00 < d < e",
+                           "&\u4e00 < a <<< A < b <<< B",
+                           "&[before 1]\u4e00 < \u4e01 < \u4e02",
+                           "&[before 1]\u4e01 < \u4e02 < \u4e03",
+        };
+        String cases[][] = {
+            { "d", "e", "b", "c", "\u4e00"}, 
+            { "\u4e00", "a", "A", "b", "B", "\u4e01"},
+            { "\u4e01", "\u4e02", "\u4e00"},
+            { "\u4e02", "\u4e03", "\u4e01"},
+        };
+        
+        int i = 0;
+        
+        for(i = 0; i < rules.length; i++) {
+            genericRulesStarter(rules[i], cases[i]);
+        }
+        
+    }
+
+    public void TestFCDProblem() {
+        String s1 = "\u0430\u0306\u0325";
+        String s2 = "\u04D1\u0325";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance();
+        } catch (Exception e) {
+            warnln("Can't create collator");
+            return;
+        }
+        
+        coll.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationTest.doTest(this, (RuleBasedCollator)coll, s1, s2, 0);
+        coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        CollationTest.doTest(this, (RuleBasedCollator)coll, s1, s2, 0);
+    }
+    
+    public void TestEmptyRule() {
+        String rulez = "";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulez);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    /* superseded by TestBeforePinyin, since Chinese collation rules have changed */
+    /*
+    public void TestJ784() {
+        String[] data = {
+            "A", "\u0101", "\u00e1", "\u01ce", "\u00e0",
+            "E", "\u0113", "\u00e9", "\u011b", "\u00e8",
+            "I", "\u012b", "\u00ed", "\u01d0", "\u00ec",
+            "O", "\u014d", "\u00f3", "\u01d2", "\u00f2",
+            "U", "\u016b", "\u00fa", "\u01d4", "\u00f9",
+            "\u00fc", "\u01d6", "\u01d8", "\u01da", "\u01dc"
+        };
+        genericLocaleStarter(new Locale("zh", ""), data);
+    }
+    */
+    
+    public void TestJ815() {
+        String data[] = {
+            "aa",
+            "Aa",
+            "ab",
+            "Ab",
+            "ad",
+            "Ad",
+            "ae",
+            "Ae",
+            "\u00e6",
+            "\u00c6",
+            "af",
+            "Af",
+            "b",
+            "B"
+        };
+        genericLocaleStarter(new Locale("fr", ""), data);
+        genericRulesStarter("[backwards 2]&A<<\u00e6/e<<<\u00c6/E", data);
+    }
+    
+    public void TestJ3087()
+    {
+        String rule[] = {"&h<H&CH=\u0427",
+                         "&CH=\u0427&h<H",
+                         "&CH=\u0427"}; 
+        RuleBasedCollator rbc = null;
+        CollationElementIterator iter1;
+        CollationElementIterator iter2;
+        for (int i = 0; i < rule.length; i ++) {
+            try {
+                rbc = new RuleBasedCollator(rule[i]); 
+            } catch (Exception e) {
+                warnln(e.getMessage());
+                return;
+            }
+            iter1 = rbc.getCollationElementIterator("CH"); 
+            iter2 = rbc.getCollationElementIterator("\u0427");
+            int ce1 = CollationElementIterator.IGNORABLE;
+            int ce2 = CollationElementIterator.IGNORABLE;
+            while (ce1 != CollationElementIterator.NULLORDER
+                   && ce2 != CollationElementIterator.NULLORDER) {
+                ce1 = iter1.next();
+                ce2 = iter2.next();
+                if (ce1 != ce2) {
+                    errln("Error generating RuleBasedCollator with the rule "
+                          + rule[i]);
+                    errln("CH != \\u0427");
+                }
+            }
+        }
+    }
+    
+    public void DontTestJ831() { // Latvian does not use upper first
+        String[] data = {
+            "I",
+            "i",
+            "Y",
+            "y"
+        };
+        genericLocaleStarter(new Locale("lv", ""), data);
+    }
+    
+    public void TestBefore() {
+        String data[] = {
+            "\u0101", "\u00e1", "\u01ce", "\u00e0", "A",
+            "\u0113", "\u00e9", "\u011b", "\u00e8", "E",
+            "\u012b", "\u00ed", "\u01d0", "\u00ec", "I",
+            "\u014d", "\u00f3", "\u01d2", "\u00f2", "O",
+            "\u016b", "\u00fa", "\u01d4", "\u00f9", "U",
+            "\u01d6", "\u01d8", "\u01da", "\u01dc", "\u00fc"
+        };
+        genericRulesStarter(
+                            "&[before 1]a<\u0101<\u00e1<\u01ce<\u00e0"
+                            + "&[before 1]e<\u0113<\u00e9<\u011b<\u00e8"
+                            + "&[before 1]i<\u012b<\u00ed<\u01d0<\u00ec"
+                            + "&[before 1]o<\u014d<\u00f3<\u01d2<\u00f2"
+                            + "&[before 1]u<\u016b<\u00fa<\u01d4<\u00f9"
+                            + "&u<\u01d6<\u01d8<\u01da<\u01dc<\u00fc", data);
+    }
+
+    public void TestRedundantRules() {
+        String[] rules = {
+            //"& a <<< b <<< c << d <<< e& [before 1] e <<< x",
+            "& b <<< c <<< d << e <<< f& [before 3] f <<< x",
+            "& a < b <<< c << d <<< e& [before 1] e <<< x",
+            "& a < b < c < d& [before 1] c < m",
+            "& a < b <<< c << d <<< e& [before 3] e <<< x",
+            "& a < b <<< c << d <<< e& [before 2] e <<< x",
+            "& a < b <<< c << d <<< e <<< f < g& [before 1] g < x",
+            "& a <<< b << c < d& a < m",
+            "&a<b<<b\u0301 &z<b",
+            "&z<m<<<q<<<m",
+            "&z<<<m<q<<<m",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& c < m",
+            "& a < b < c < d& a < m"
+        };
+        
+        String[] expectedRules = {
+            //"&\u2089<<<x",
+            "&\u0252<<<x",
+            "& a <<< x < b <<< c << d <<< e",
+            "& a < b < m < c < d",
+            "& a < b <<< c << d <<< x <<< e",
+            "& a < b <<< c <<< x << d <<< e",
+            "& a < b <<< c << d <<< e <<< f < x < g",
+            "& a <<< b << c < m < d",
+            "&a<b\u0301 &z<b",
+            "&z<q<<<m",
+            "&z<q<<<m",
+            "& a < b < d& r < c",
+            "& a < b < d& r < c",
+            "& a < b < c < m < d",
+            "& a < m < b < c < d"
+        };
+        
+        String[][] testdata = {
+            //            {"\u2089", "x"},
+            {"\u0252", "x"},
+            {"a", "x", "b", "c", "d", "e"},
+            {"a", "b", "m", "c", "d"},
+            {"a", "b", "c", "d", "x", "e"},
+            {"a", "b", "c", "x", "d", "e"},
+            {"a", "b", "c", "d", "e", "f", "x", "g"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "b\u0301", "z", "b"},
+            {"z", "q", "m"},
+            {"z", "q", "m"},
+            {"a", "b", "d"},
+            {"r", "c"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "m", "b", "c", "d"}
+        };
+        
+        String rlz = "";
+        for(int i = 0; i<rules.length; i++) {
+            logln("testing rule " + rules[i] + ", expected to be" + expectedRules[i]);
+            try {
+                rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                warnln("Cannot create RuleBasedCollator");
+            }
+            //testAgainstUCA(cresulting, credundant, "expected", TRUE, &status);
+            // logln("testing using data\n");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+    
+    public void TestExpansionSyntax() {
+        String[] rules = {
+            "&AE <<< a << b <<< c &d <<< f",
+            "&AE <<< a <<< b << c << d < e < f <<< g",
+            "&AE <<< B <<< C / D <<< F"
+        };
+        
+        String[] expectedRules = {
+            "&A <<< a / E << b / E <<< c /E  &d <<< f",
+            "&A <<< a / E <<< b / E << c / E << d / E < e < f <<< g",
+            "&A <<< B / E <<< C / ED <<< F / E"
+        };
+        
+        String[][] testdata = {
+            {"AE", "a", "b", "c"},
+            {"AE", "a", "b", "c", "d", "e", "f", "g"},
+            {"AE", "B", "C"} // / ED <<< F / E"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            // logln("testing rule " + rules[i] + ", expected to be " + expectedRules[i]);
+            try {
+                String rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                warnln(e.getMessage());
+            }
+            // testAgainstUCA still doesn't handle expansions correctly, so this is not run 
+            // as a hard error test, but only in information mode 
+            //testAgainstUCA(cresulting, credundant, "expected", FALSE, &status);
+            
+            // logln("testing using data");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+
+    public void TestHangulTailoring() {
+        String[] koreanData = {
+            "\uac00", "\u4f3d", "\u4f73", "\u5047", "\u50f9", "\u52a0", "\u53ef", "\u5475",
+            "\u54e5", "\u5609", "\u5ac1", "\u5bb6", "\u6687", "\u67b6", "\u67b7", "\u67ef",
+            "\u6b4c", "\u73c2", "\u75c2", "\u7a3c", "\u82db", "\u8304", "\u8857", "\u8888",
+            "\u8a36", "\u8cc8", "\u8dcf", "\u8efb", "\u8fe6", "\u99d5",
+            "\u4EEE", "\u50A2", "\u5496", "\u54FF", "\u5777", "\u5B8A", "\u659D", "\u698E",
+            "\u6A9F", "\u73C8", "\u7B33", "\u801E", "\u8238", "\u846D", "\u8B0C"
+        };
+        
+        String rules =
+            "&\uac00 <<< \u4f3d <<< \u4f73 <<< \u5047 <<< \u50f9 <<< \u52a0 <<< \u53ef <<< \u5475 "
+            + "<<< \u54e5 <<< \u5609 <<< \u5ac1 <<< \u5bb6 <<< \u6687 <<< \u67b6 <<< \u67b7 <<< \u67ef "
+            + "<<< \u6b4c <<< \u73c2 <<< \u75c2 <<< \u7a3c <<< \u82db <<< \u8304 <<< \u8857 <<< \u8888 "
+            + "<<< \u8a36 <<< \u8cc8 <<< \u8dcf <<< \u8efb <<< \u8fe6 <<< \u99d5 "
+            + "<<< \u4EEE <<< \u50A2 <<< \u5496 <<< \u54FF <<< \u5777 <<< \u5B8A <<< \u659D <<< \u698E "
+            + "<<< \u6A9F <<< \u73C8 <<< \u7B33 <<< \u801E <<< \u8238 <<< \u846D <<< \u8B0C";
+        
+        String rlz = rules;
+        
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rlz);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules" + rules);
+            return;
+        }
+        // logln("Using start of korean rules\n");
+        genericOrderingTest(coll, koreanData);
+        // logln("Setting jamoSpecial to TRUE and testing once more\n");
+        
+        // can't set jamo in icu4j 
+        // ((UCATableHeader *)coll->image)->jamoSpecial = TRUE; // don't try this at home
+        // genericOrderingTest(coll, koreanData);
+        
+        // no such locale in icu4j
+        // logln("Using ko__LOTUS locale\n");
+        // genericLocaleStarter(new Locale("ko__LOTUS", ""), koreanData);
+    }
+
+    public void TestIncrementalNormalize() {
+        Collator        coll = null;
+        // logln("Test 1 ....");
+        {
+            /* Test 1.  Run very long unnormalized strings, to force overflow of*/
+            /*          most buffers along the way.*/
+            
+            try {
+                coll = Collator.getInstance(new Locale("en", "US"));
+            } catch (Exception e) {
+                warnln("Cannot get default instance!");
+                return;
+            }
+            char baseA     =0x41;
+            char ccMix[]   = {0x316, 0x321, 0x300};
+            int          sLen;
+            int          i;
+            StringBuffer strA = new StringBuffer();
+            StringBuffer strB = new StringBuffer();
+            
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            
+            for (sLen = 1000; sLen<1001; sLen++) {
+                strA.delete(0, strA.length());
+                strA.append(baseA);
+                strB.delete(0, strB.length());
+                strB.append(baseA);
+                for (i=1; i< sLen; i++) {
+                    strA.append(ccMix[i % 3]);
+                    strB.insert(1, ccMix[i % 3]);
+                }
+                coll.setStrength(Collator.TERTIARY);   // Do test with default strength, which runs
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     strA.toString(), strB.toString(), 0);    //   optimized functions in the impl
+                coll.setStrength(Collator.IDENTICAL);   // Do again with the slow, general impl.
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     strA.toString(), strB.toString(), 0);
+            }
+        }
+        /*  Test 2:  Non-normal sequence in a string that extends to the last character*/
+        /*         of the string.  Checks a couple of edge cases.*/
+        // logln("Test 2 ....");    
+        {
+            String strA = "AA\u0300\u0316";
+            String strB = "A\u00c0\u0316";
+            coll.setStrength(Collator.TERTIARY);
+            CollationTest.doTest(this, (RuleBasedCollator)coll, strA, strB, 0);
+        }
+        /*  Test 3:  Non-normal sequence is terminated by a surrogate pair.*/
+        // logln("Test 3 ....");
+        {
+            String strA = "AA\u0300\u0316\uD800\uDC01";
+            String strB = "A\u00c0\u0316\uD800\uDC00";
+            coll.setStrength(Collator.TERTIARY);
+            CollationTest.doTest(this, (RuleBasedCollator)coll, strA, strB, 1);
+        }
+        /*  Test 4:  Imbedded nulls do not terminate a string when length is specified.*/
+        // logln("Test 4 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         char strA[] = {0x41, 0x00, 0x42};
+         char strB[] = {0x41, 0x00, 0x00};
+            
+         int result = coll.compare(new String(strA), new String(strB));
+         if (result != 1) {
+         errln("ERROR 1 in test 4\n");
+         }
+            
+         result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+         if (result != 0) {
+         errln("ERROR 1 in test 4\n");
+         }
+            
+         CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+         CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+            
+         int r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 4 in test 4\n");
+         }
+    
+         coll.setStrength(Collator.IDENTICAL);
+         sortKeyA = coll.getCollationKey(new String(strA));
+         sortKeyB = coll.getCollationKey(new String(strB));
+    
+         r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 7 in test 4\n");
+         }
+            
+         coll.setStrength(Collator.TERTIARY);
+         }
+        */
+        /*  Test 5:  Null characters in non-normal source strings.*/
+        // logln("Test 5 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         {
+         char strA[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x42,};
+         char strB[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x00,};
+           
+    
+         int result = coll.compare(new String(strA, 0, 6), new String(strB, 0, 6));
+         if (result < 0) {
+         errln("ERROR 1 in test 5\n");
+         }
+         result = coll.compare(new String(strA, 0, 4), new String(strB, 0, 4));
+         if (result != 0) {
+         errln("ERROR 2 in test 5\n");
+         }
+    
+         CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+         CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+         int r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 4 in test 5\n");
+         }
+    
+         coll.setStrength(Collator.IDENTICAL);
+            
+         sortKeyA = coll.getCollationKey(new String(strA));
+         sortKeyB = coll.getCollationKey(new String(strB));
+         r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 7 in test 5\n");
+         }
+            
+         coll.setStrength(Collator.TERTIARY);
+         }
+        */
+        /*  Test 6:  Null character as base of a non-normal combining sequence.*/
+        // logln("Test 6 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         {
+         char strA[] = {0x41, 0x0, 0x300, 0x316, 0x41, 0x302,};
+         char strB[] = {0x41, 0x0, 0x302, 0x316, 0x41, 0x300,};
+    
+         int result = coll.compare(new String(strA, 0, 5), new String(strB, 0, 5));
+         if (result != -1) {
+         errln("Error 1 in test 6\n");
+         }
+         result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+         if (result != 0) {
+         errln("Error 2 in test 6\n");
+         }
+         }
+        */
+    }
+    
+    public void TestContraction() {
+        String[] testrules = {
+            "&A = AB / B",
+            "&A = A\\u0306/\\u0306",
+            "&c = ch / h",
+        };
+        String[] testdata = {
+            "AB", "AB", "A\u0306", "ch"
+        };
+        String[] testdata2 = {
+            "\u0063\u0067",
+            "\u0063\u0068",
+            "\u0063\u006C",
+        };
+        String[] testrules3 = {
+            "&z < xyz &xyzw << B",
+            "&z < xyz &xyz << B / w",
+            "&z < ch &achm << B",
+            "&z < ch &a << B / chm",
+            "&\ud800\udc00w << B",
+            "&\ud800\udc00 << B / w",
+            "&a\ud800\udc00m << B",
+            "&a << B / \ud800\udc00m",
+        };
+    
+        RuleBasedCollator  coll = null;
+        for (int i = 0; i < testrules.length; i ++) {
+            CollationElementIterator iter1 = null;
+            int j = 0;
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                warnln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll.getCollationElementIterator(testdata[i]);
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            while (j < 2) {
+                CollationElementIterator iter2;
+                int ce;
+                try {
+                    iter2 = coll.getCollationElementIterator(String.valueOf(testdata[i].charAt(j)));
+                
+                }catch (Exception e) {
+                    errln("Collation iterator creation failed\n");
+                    return;
+                }
+                ce = iter2.next();
+                while (ce != CollationElementIterator.NULLORDER) {
+                    if (iter1.next() != ce) {
+                        errln("Collation elements in contraction split does not match\n");
+                        return;
+                    }
+                    ce = iter2.next();
+                }
+                j ++;
+            }
+            if (iter1.next() != CollationElementIterator.NULLORDER) {
+                errln("Collation elements not exhausted\n");
+                return;
+            }
+        }
+        String rule = "& a < b < c < ch < d & c = ch / h";
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("cannot create rulebased collator");
+            return;
+        }
+        
+        if (coll.compare(testdata2[0], testdata2[1]) != -1) {
+            errln("Expected " + testdata2[0] + " < " + testdata2[1]);
+            return;
+        }
+        if (coll.compare(testdata2[1], testdata2[2]) != -1) {
+            errln("Expected " + testdata2[1] + " < " + testdata2[2]);
+            return;
+        }
+        for (int i = 0; i < testrules3.length; i += 2) {
+            RuleBasedCollator          coll1, coll2;
+            CollationElementIterator iter1, iter2;
+            char               ch = 0x0042;
+            int            ce;
+            rule = testrules3[i];
+            try {
+                coll1 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Fail: cannot create rulebased collator, rule:" + rule);
+                return;
+            }
+            rule = testrules3[i + 1];
+            try {
+                coll2 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll1.getCollationElementIterator(String.valueOf(ch));
+                iter2 = coll2.getCollationElementIterator(String.valueOf(ch));
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            ce = iter1.next();
+            
+            while (ce != CollationElementIterator.NULLORDER) {
+                if (ce != iter2.next()) {
+                    errln("CEs does not match\n");
+                    return;
+                }
+                ce = iter1.next();
+            }
+            if (iter2.next() != CollationElementIterator.NULLORDER) {
+                errln("CEs not exhausted\n");
+                return;
+            }
+        }
+    }
+    
+    public void TestExpansion() {
+        String[] testrules = {
+            "&J << K / B & K << M",
+            "&J << K / B << M"
+        };
+        String[] testdata = {
+            "JA", "MA", "KA", "KC", "JC", "MC",
+        };
+        
+        Collator  coll;
+        for (int i = 0; i < testrules.length; i++) {
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                warnln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            
+            for (int j = 0; j < 5; j ++) {
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     testdata[j], testdata[j + 1], -1);
+            }
+        }
+    }
+    
+    public void TestContractionEndCompare()
+    {
+        String rules = "&b=ch";
+        String src = "bec";
+        String tgt = "bech";
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            warnln("Collator creation failed " + rules);
+            return;
+        }
+        CollationTest.doTest(this, (RuleBasedCollator)coll, src, tgt, 1);
+    }
+    
+    public void TestLocaleRuleBasedCollators() {
+        if (getInclusion() < 5) {
+            // not serious enough to run this
+            return;
+        }
+        Locale locale[] = Collator.getAvailableLocales();
+        String prevrule = null;
+        for (int i = 0; i < locale.length; i ++) {
+            Locale l = locale[i];
+            try {
+                ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,l);
+                String collkey = rb.getStringWithFallback("collations/default"); 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements == null) {
+                    continue;
+                }
+                String rule = null;
+                /*
+                  Object[][] colldata = (Object[][])elements;
+                  // %%CollationBin
+                  if (colldata[0][1] instanceof byte[]){
+                  rule = (String)colldata[1][1];
+                  }
+                  else {
+                  rule = (String)colldata[0][1];
+                  }
+                */
+                rule = elements.getString("Sequence");   
+
+                RuleBasedCollator col1 = 
+                    (RuleBasedCollator)Collator.getInstance(l);
+                if (!rule.equals(col1.getRules())) {
+                    errln("Rules should be the same in the RuleBasedCollator and Locale");
+                }
+                if (rule != null && rule.length() > 0 
+                    && !rule.equals(prevrule)) {
+                    RuleBasedCollator col2 = new RuleBasedCollator(rule);
+                    if (!col1.equals(col2)) {
+                        errln("Error creating RuleBasedCollator from " +
+                              "locale rules for " + l.toString());
+                    }
+                }
+                prevrule = rule;
+            } catch (Exception e) {
+                warnln("Error retrieving resource bundle for testing: " + e.toString());
+            }
+        }
+    }
+    
+    public void TestOptimize() {
+        /* this is not really a test - just trying out 
+         * whether copying of UCA contents will fail 
+         * Cannot really test, since the functionality 
+         * remains the same.
+         */
+        String rules[] = {
+            "[optimize [\\uAC00-\\uD7FF]]"
+        };
+        String data[][] = {
+            { "a", "b"}
+        };
+        int i = 0;
+    
+        for(i = 0; i<rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }    
+    
+    public void TestIdenticalCompare() 
+    {    
+        try {
+            RuleBasedCollator coll 
+                = new RuleBasedCollator("& \uD800\uDC00 = \uD800\uDC01");
+            String strA = "AA\u0300\u0316\uD800\uDC01";
+            String strB = "A\u00c0\u0316\uD800\uDC00";
+            coll.setStrength(Collator.IDENTICAL);
+            CollationTest.doTest(this, coll, strA, strB, 1);
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    public void TestMergeSortKeys() 
+    {
+        String cases[] = {"abc", "abcd", "abcde"};
+        String prefix = "foo";
+        String suffix = "egg";
+        CollationKey mergedPrefixKeys[] = new CollationKey[cases.length];
+        CollationKey mergedSuffixKeys[] = new CollationKey[cases.length];
+        
+        Collator coll = Collator.getInstance(Locale.ENGLISH);
+        genericLocaleStarter(Locale.ENGLISH, cases);
+        
+        int strength = Collator.PRIMARY;
+        while (strength <= Collator.IDENTICAL) {
+            coll.setStrength(strength);
+            CollationKey prefixKey = coll.getCollationKey(prefix);
+            CollationKey suffixKey = coll.getCollationKey(suffix);
+            for (int i = 0; i < cases.length; i ++) {
+                CollationKey key = coll.getCollationKey(cases[i]);
+                mergedPrefixKeys[i] = prefixKey.merge(key);
+                mergedSuffixKeys[i] = suffixKey.merge(key);
+                if (mergedPrefixKeys[i].getSourceString() != null
+                    || mergedSuffixKeys[i].getSourceString() != null) {
+                    errln("Merged source string error: expected null");
+                }
+                if (i > 0) {
+                    if (mergedPrefixKeys[i-1].compareTo(mergedPrefixKeys[i])
+                        >= 0) {
+                        errln("Error while comparing prefixed keys @ strength "
+                              + strength);
+                        errln(prettify(mergedPrefixKeys[i-1]));
+                        errln(prettify(mergedPrefixKeys[i]));
+                    }
+                    if (mergedSuffixKeys[i-1].compareTo(mergedSuffixKeys[i]) 
+                        >= 0) {
+                        errln("Error while comparing suffixed keys @ strength "
+                              + strength);
+                        errln(prettify(mergedSuffixKeys[i-1]));
+                        errln(prettify(mergedSuffixKeys[i]));
+                    }
+                }
+            }
+            if (strength == Collator.QUATERNARY) {
+                strength = Collator.IDENTICAL;
+            } 
+            else {
+                strength ++;
+            }
+        }       
+    }
+    
+    public void TestVariableTop() 
+    {
+        // parseNextToken is not released as public so i create my own rules
+        String rules = "& a < b < c < de < fg & hi = j";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rules);
+            String tokens[] = {"a", "b", "c", "de", "fg", "hi", "j", "ab"};
+            coll.setAlternateHandlingShifted(true);
+            for (int i = 0; i < tokens.length; i ++) {
+                int varTopOriginal = coll.getVariableTop();
+                try {
+                    int varTop = coll.setVariableTop(tokens[i]);
+                    if (i > 4) {
+                        errln("Token " + tokens[i] + " expected to fail");
+                    }
+                    if (varTop != coll.getVariableTop()) {
+                        errln("Error setting and getting variable top");
+                    }
+                    CollationKey key1 = coll.getCollationKey(tokens[i]);
+                    for (int j = 0; j < i; j ++) {
+                        CollationKey key2 = coll.getCollationKey(tokens[j]);
+                        if (key2.compareTo(key1) < 0) {
+                            errln("Setting variable top shouldn't change the comparison sequence");
+                        }
+                        byte sortorder[] = key2.toByteArray();
+                        if (sortorder.length > 0 
+                            && (key2.toByteArray())[0] > 1) {
+                            errln("Primary sort order should be 0");
+                        }
+                    }
+                } catch (Exception e) {
+                    CollationElementIterator iter 
+                        = coll.getCollationElementIterator(tokens[i]);
+                    /*int ce =*/ iter.next();
+                    int ce2 = iter.next();
+                    if (ce2 == CollationElementIterator.NULLORDER) {
+                        errln("Token " + tokens[i] + " not expected to fail");
+                    }
+                    if (coll.getVariableTop() != varTopOriginal) {
+                        errln("When exception is thrown variable top should "
+                              + "not be changed");
+                    }
+                }
+                coll.setVariableTop(varTopOriginal);
+                if (varTopOriginal != coll.getVariableTop()) {
+                    errln("Couldn't restore old variable top\n");
+                }
+            }
+            
+            // Testing calling with error set
+            try {
+                coll.setVariableTop("");
+                errln("Empty string should throw an IllegalArgumentException");
+            } catch (IllegalArgumentException e) {
+                logln("PASS: Empty string failed as expected");
+            }
+            try {
+                coll.setVariableTop(null);
+                errln("Null string should throw an IllegalArgumentException");
+            } catch (IllegalArgumentException e) {
+                logln("PASS: null string failed as expected");
+            }
+        } catch (Exception e) {
+            warnln("Error creating RuleBasedCollator");
+        }
+    }
+    
+    public void TestUCARules() 
+    {
+        try {
+            // only root locale can have empty tailorings .. not English!
+            RuleBasedCollator coll 
+                = (RuleBasedCollator)Collator.getInstance(new Locale("","",""));
+            String rule 
+                = coll.getRules(false);
+            if (!rule.equals("")) {
+                errln("Empty rule string should have empty rules " + rule);
+            }
+            rule = coll.getRules(true);
+            if (rule.equals("")) {
+                errln("UCA rule string should not be empty");
+            }
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Jitterbug 2726
+     */
+    public void TestShifted()
+    {
+        RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance();
+        collator.setStrength(Collator.PRIMARY);
+        collator.setAlternateHandlingShifted(true);
+        CollationTest.doTest(this, collator, " a", "a", 0); // works properly
+        CollationTest.doTest(this, collator, "a", "a ", 0); // inconsistent results
+    }
+    
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters with normalization on.
+     */
+    public void TestNumericCollation()
+    {
+        String basicTestStrings[] = {"hello1", "hello2", "hello123456"};
+        String preZeroTestStrings[] = {"avery1",
+                                       "avery01",
+                                       "avery001",
+                                       "avery0001"};
+        String thirtyTwoBitNumericStrings[] = {"avery42949672960",
+                                               "avery42949672961",
+                                               "avery42949672962",
+                                               "avery429496729610"};
+    
+        String supplementaryDigits[] = {"\uD835\uDFCE", // 0 
+                                        "\uD835\uDFCF", // 1 
+                                        "\uD835\uDFD0", // 2 
+                                        "\uD835\uDFD1", // 3 
+                                        "\uD835\uDFCF\uD835\uDFCE", // 10 
+                                        "\uD835\uDFCF\uD835\uDFCF", // 11 
+                                        "\uD835\uDFCF\uD835\uDFD0", // 12 
+                                        "\uD835\uDFD0\uD835\uDFCE", // 20 
+                                        "\uD835\uDFD0\uD835\uDFCF", // 21 
+                                        "\uD835\uDFD0\uD835\uDFD0" // 22 
+        };
+    
+        String foreignDigits[] = {"\u0661",
+                                  "\u0662",
+                                  "\u0663",
+                                  "\u0661\u0660",
+                                  "\u0661\u0662",
+                                  "\u0661\u0663",
+                                  "\u0662\u0660",
+                                  "\u0662\u0662",
+                                  "\u0662\u0663",
+                                  "\u0663\u0660",
+                                  "\u0663\u0662",
+                                  "\u0663\u0663"
+        };
+    
+        // Open our collator.
+        RuleBasedCollator coll 
+            = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        String att[] = {"NumericCollation"};
+        Boolean val[] = {Boolean.TRUE};
+        genericLocaleStarterWithOptions(Locale.ENGLISH, basicTestStrings, att,
+                                        val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, 
+                                        thirtyTwoBitNumericStrings, att, val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, foreignDigits, att, 
+                                        val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, supplementaryDigits, 
+                                        att, val);    
+    
+        // Setting up our collator to do digits.
+        coll.setNumericCollation(true);
+    
+        // Testing that prepended zeroes still yield the correct collation 
+        // behavior. 
+        // We expect that every element in our strings array will be equal.
+        for (int i = 0; i < preZeroTestStrings.length - 1; i ++) {
+            for (int j = i + 1; j < preZeroTestStrings.length; j ++) {
+                CollationTest.doTest(this, coll, preZeroTestStrings[i], 
+                                     preZeroTestStrings[j],0);
+            }
+        }
+
+        //cover setNumericCollationDefault, getNumericCollation
+        assertTrue("The Numeric Collation setting is on", coll.getNumericCollation());
+        coll.setNumericCollationDefault();
+        logln("After set Numeric to default, the setting is: " + coll.getNumericCollation());
+    }
+        
+    public void Test3249()
+    {
+        String rule = "&x < a &z < a";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rule);
+            if(coll!=null){
+                logln("Collator did not throw an exception");   
+            }
+        } catch (Exception e) {
+            warnln("Error creating RuleBasedCollator with " + rule + " failed");
+        }
+    }
+    
+    public void TestTibetanConformance() 
+    {  
+        String test[] = {"\u0FB2\u0591\u0F71\u0061", "\u0FB2\u0F71\u0061"};
+        try {
+            Collator coll = Collator.getInstance();
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            if (coll.compare(test[0], test[1]) != 0) {
+                errln("Tibetan comparison error");
+            }
+            CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                 test[0], test[1], 0);
+        } catch (Exception e) {
+            warnln("Error creating UCA collator");
+        }
+    }
+    
+    public void TestJ3347()
+    {
+        try {
+            Collator coll = Collator.getInstance(Locale.FRENCH);
+            ((RuleBasedCollator)coll).setAlternateHandlingShifted(true);
+            if (coll.compare("6", "!6") != 0) {
+                errln("Jitterbug 3347 failed");
+            }
+        } catch (Exception e) {
+            warnln("Error creating UCA collator");
+        }
+    }
+    
+    public void TestPinyinProblem()
+    {
+        String test[] = { "\u4E56\u4E56\u7761", "\u4E56\u5B69\u5B50" };
+        genericLocaleStarter(new Locale("zh", "", "PINYIN"), test);     
+    }
+    
+    static final long topByte = 0xFF000000L;
+    static final long bottomByte = 0xFFL;
+    static final long fourBytes = 0xFFFFFFFFL;
+    
+    static final int MAX_INPUT = 0x220001; // 2 * Unicode range + 2
+    
+    private void show(int i, ImplicitCEGenerator imp) {
+        if (i >= 0 && i <= MAX_INPUT) {
+            logln(Utility.hex(i) + "\t" + Utility.hex(imp.getImplicitFromRaw(i) & fourBytes));
+        } 
+    }
+
+    private void throwError(String title, int cp, ImplicitCEGenerator imp) {
+        throw new IllegalArgumentException(title + "\t" + Utility.hex(cp, 6) + "\t" + Utility.hex(imp.getImplicitFromRaw(cp) & fourBytes));
+    }
+    
+    private void throwError(String title, long ce) {
+        errln(title + "\t" + Utility.hex(ce & fourBytes));
+    }
+    
+    public void TestImplicitGeneration()
+    {
+        logln("Start");
+        try {
+            ImplicitCEGenerator foo = new ImplicitCEGenerator(0xE0, 0xE4);
+                
+            //int x = foo.getRawImplicit(0xF810);
+            foo.getRawFromImplicit(0xE20303E7);
+
+            //int gap4 = foo.getGap4();
+            //logln("Gap4: " + gap4); 
+            //int gap3 = foo.getGap3();
+            //int minTrail = foo.getMinTrail();
+            //int maxTrail = foo.getMaxTrail();
+            long last = 0;
+            long current;
+            for (int i = 0; i <= MAX_INPUT; ++i) {
+                current = foo.getImplicitFromRaw(i) & fourBytes;
+                        
+                // check that it round-trips AND that all intervening ones are illegal
+                int roundtrip = foo.getRawFromImplicit((int)current);
+                if (roundtrip != i) {
+                    throwError("No roundtrip", i, foo); 
+                }
+                if (last != 0) {
+                    for (long j = last + 1; j < current; ++j) {
+                        roundtrip = foo.getRawFromImplicit((int)j);
+                        // raise an error if it *doesn't* find an error
+                        if (roundtrip != -1) {
+                            throwError("Fails to recognize illegal", j);
+                        }
+                    }
+                }
+                // now do other consistency checks
+                long lastBottom = last & bottomByte;
+                long currentBottom = current & bottomByte;
+                long lastTop = last & topByte;
+                long currentTop = current & topByte;
+                        
+                // do some consistency checks
+                /*
+                  long gap = current - last;               
+                  if (currentBottom != 0) { // if we are a 4-byte
+                  // gap has to be at least gap4
+                  // and gap from minTrail, maxTrail has to be at least gap4
+                  if (gap <= gap4) foo.throwError("Failed gap4 between", i);
+                  if (currentBottom < minTrail + gap4) foo.throwError("Failed gap4 before", i);
+                  if (currentBottom > maxTrail - gap4) foo.throwError("Failed gap4 after", i);
+                  } else { // we are a three-byte
+                  gap = gap >> 8; // move gap down for comparison.
+                  long current3Bottom = (current >> 8) & bottomByte;
+                  if (gap <= gap3) foo.throwError("Failed gap3 between ", i);
+                  if (current3Bottom < minTrail + gap3) foo.throwError("Failed gap3 before", i);
+                  if (current3Bottom > maxTrail - gap3) foo.throwError("Failed gap3 after", i);
+                  }
+                */
+                // print out some values for spot-checking
+                if (lastTop != currentTop || i == 0x10000 || i == 0x110000) {
+                    show(i-3, foo);
+                    show(i-2, foo);
+                    show(i-1, foo);
+                    if (i == 0) {
+                        // do nothing
+                    } else if (lastBottom == 0 && currentBottom != 0) {
+                        logln("+ primary boundary, 4-byte CE's below");
+                    } else if (lastTop != currentTop) {
+                        logln("+ primary boundary");
+                    }
+                    show(i, foo);
+                    show(i+1, foo);
+                    show(i+2, foo);
+                    logln("...");
+                }
+                last = current;
+                if(foo.getCodePointFromRaw(foo.getRawFromCodePoint(i)) != i) {
+                    errln("No raw <-> code point roundtrip for "+Utility.hex(i));
+                }                       
+            }
+            show(MAX_INPUT-2, foo);
+            show(MAX_INPUT-1, foo);
+            show(MAX_INPUT, foo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            warnln(e.getMessage());
+        } finally {
+            logln("End");
+        }
+    }
+
+    /* supercedes TestJ784 */
+    public void TestBeforePinyin() {
+        String rules = 
+            "&[before 2]A << \u0101  <<< \u0100 << \u00E1 <<< \u00C1 << \u01CE <<< \u01CD << \u00E0 <<< \u00C0" +
+            "&[before 2]e << \u0113 <<< \u0112 << \u00E9 <<< \u00C9 << \u011B <<< \u011A << \u00E8 <<< \u00C8" +
+            "&[before 2] i << \u012B <<< \u012A << \u00ED <<< \u00CD << \u01D0 <<< \u01CF << \u00EC <<< \u00CC" +
+            "&[before 2] o << \u014D <<< \u014C << \u00F3 <<< \u00D3 << \u01D2 <<< \u01D1 << \u00F2 <<< \u00D2" +
+            "&[before 2]u << \u016B <<< \u016A << \u00FA <<< \u00DA << \u01D4 <<< \u01D3 << \u00F9 <<< \u00D9" +
+            "&U << \u01D6 <<< \u01D5 << \u01D8 <<< \u01D7 << \u01DA <<< \u01D9 << \u01DC <<< \u01DB << \u00FC";
+    
+        String test[] = {
+            "l\u0101",
+            "la",
+            "l\u0101n",
+            "lan ",
+            "l\u0113",
+            "le",
+            "l\u0113n",
+            "len"
+        };
+    
+        String test2[] = {
+            "x\u0101",
+            "x\u0100",
+            "X\u0101",
+            "X\u0100",
+            "x\u00E1",
+            "x\u00C1",
+            "X\u00E1",
+            "X\u00C1",
+            "x\u01CE",
+            "x\u01CD",
+            "X\u01CE",
+            "X\u01CD",
+            "x\u00E0",
+            "x\u00C0",
+            "X\u00E0",
+            "X\u00C0",
+            "xa",
+            "xA",
+            "Xa",
+            "XA",
+            "x\u0101x",
+            "x\u0100x",
+            "x\u00E1x",
+            "x\u00C1x",
+            "x\u01CEx",
+            "x\u01CDx",
+            "x\u00E0x",
+            "x\u00C0x",
+            "xax",
+            "xAx"
+        };
+        /* TODO: port builder fixes to before */
+        genericRulesStarter(rules, test);
+        genericLocaleStarter(new Locale("zh","",""), test);
+        genericRulesStarter(rules, test2);
+        genericLocaleStarter(new Locale("zh","",""), test2);
+    }
+
+    public void TestUpperFirstQuaternary()
+    {
+      String tests[] = { "B", "b", "Bb", "bB" };
+      String[] att = { "strength", "UpperFirst" };
+      Object attVals[] = { new Integer(Collator.QUATERNARY), Boolean.TRUE };
+      genericLocaleStarterWithOptions(new Locale("root","",""), tests, att, attVals);
+    }
+    
+    public void TestJ4960()
+    {
+        String tests[] = { "\\u00e2T", "aT" };
+        String att[] = { "strength", "CaseLevel" };
+        Object attVals[] = { new Integer(Collator.PRIMARY), Boolean.TRUE };
+        String tests2[] = { "a", "A" };
+        String rule = "&[first tertiary ignorable]=A=a";
+        String att2[] = { "CaseLevel" };        
+        Object attVals2[] = { Boolean.TRUE };
+        // Test whether we correctly ignore primary ignorables on case level when
+        // we have only primary & case level
+        genericLocaleStarterWithOptionsAndResult(new Locale("root", ""), tests, att, attVals, 0);
+        // Test whether ICU4J will make case level for sortkeys that have primary strength
+        // and case level
+        genericLocaleStarterWithOptions(new Locale("root", ""), tests2, att, attVals);
+        // Test whether completely ignorable letters have case level info (they shouldn't)
+        genericRulesStarterWithOptionsAndResult(rule, tests2, att2, attVals2, 0);        
+    }
+    
+    public void TestJB5298(){
+        ULocale[] locales = Collator.getAvailableULocales();
+        logln("Number of collator locales returned : " + locales.length);
+        // double-check keywords
+        String[] keywords = Collator.getKeywords();
+        if (keywords.length != 1 || !keywords[0].equals("collation")) {
+            throw new IllegalArgumentException("internal collation error");
+        }
+    
+        String[] values = Collator.getKeywordValues("collation");
+        log("Collator.getKeywordValues returned: ");
+        for(int i=0; i<values.length;i++){
+            log(values[i]+", ");
+        }
+        logln("");
+        logln("Number of collator values returned : " + values.length);
+        
+        Set foundValues = new TreeSet(Arrays.asList(values));
+        
+        for (int i = 0; i < locales.length; ++i) {
+          for (int j = 0; j < values.length; ++j) {
+            ULocale tryLocale = values[j].equals("standard") 
+            ? locales[i] : new ULocale(locales[i] + "@collation=" + values[j]); 
+            // only append if not standard
+            ULocale canon = Collator.getFunctionalEquivalent("collation",tryLocale);
+            if (!canon.equals(tryLocale)) {
+                continue; // has a different 
+            }else {// functional equivalent, so skip
+                logln(tryLocale + " : "+canon+", ");
+            }
+            String can = canon.toString();
+            int idx = can.indexOf("@collation=");
+            String val = idx >= 0 ? can.substring(idx+11, can.length()) : "";
+            if(val.length()>0 && !foundValues.contains(val)){
+                errln("Unknown collation found "+ can);
+            }
+          }        
+        }
+        logln(" ");
+    }
+
+    public void
+    TestJ5367()
+    {
+        String[] test = { "a", "y" };
+        String rules = "&Ny << Y &[first secondary ignorable] <<< a";
+        genericRulesStarter(rules, test);        
+    }
+    
+    public void
+    TestVI5913()
+    {
+
+        String rules[] = {
+                "&a < \u00e2 <<< \u00c2",
+                "&a < \u1FF3 ",  // OMEGA WITH YPOGEGRAMMENI
+                "&s < \u0161 ",  // &s < s with caron
+                "&z < a\u00EA",  // &z < a+e with circumflex
+        };
+        String cases[][] = {
+            { "\u1EAC", "A\u0323\u0302", "\u1EA0\u0302", "\u00C2\u0323", }, 
+            { "\u1FA2", "\u03C9\u0313\u0300\u0345", "\u1FF3\u0313\u0300", 
+              "\u1F60\u0300\u0345", "\u1f62\u0345", "\u1FA0\u0300", },
+            { "\u1E63\u030C", "s\u0323\u030C", "s\u030C\u0323"},
+            { "a\u1EC7", //  a+ e with dot below and circumflex
+              "a\u1EB9\u0302", // a + e with dot below + combining circumflex
+              "a\u00EA\u0323", // a + e with circumflex + combining dot below
+            }
+        };
+        
+        
+        for(int i = 0; i < rules.length; i++) {
+            
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test case["+i+"]:");
+            CollationKey expectingKey = coll.getCollationKey(cases[i][0]);
+            for (int j=1; j<cases[i].length; j++) {
+                CollationKey key = coll.getCollationKey(cases[i][j]);
+                if ( key.compareTo(expectingKey)!=0) {
+                    errln("Error! Test case["+i+"]:"+"source:" + key.getSourceString());
+                    errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                logln("   Key:"+  prettify(key));
+            }
+        }   
+        
+        
+        RuleBasedCollator vi_vi = null;
+        try {
+            vi_vi = (RuleBasedCollator)Collator.getInstance(
+                                                      new Locale("vi", ""));
+            logln("VI sort:");
+            CollationKey expectingKey = vi_vi.getCollationKey(cases[0][0]);
+            for (int j=1; j<cases[0].length; j++) {
+                CollationKey key = vi_vi.getCollationKey(cases[0][j]);
+                if ( key.compareTo(expectingKey)!=0) {
+                    // TODO (claireho): change the logln to errln after vi.res is up-to-date.
+                    // errln("source:" + key.getSourceString());
+                    // errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                    logln("Error!! in Vietnese sort - source:" + key.getSourceString());
+                    logln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                // logln("source:" + key.getSourceString());
+                logln("   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        
+    }
+    
+    
+    public void Test6179()
+    {
+        String rules[] = {
+                "&[last primary ignorable]<< a  &[first primary ignorable]<<b ",
+                "&[last secondary ignorable]<<< a &[first secondary ignorable]<<<b",  
+        };
+        // defined in UCA5.1
+        String firstPrimIgn = "\u0332";  
+        String lastPrimIgn = "\uD800\uDDFD";
+        String firstVariable = "\u0009";
+        byte[] secIgnKey = {1,1,4,0};
+        
+        int i=0; 
+        {
+            
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test rule["+i+"]"+rules[i]);
+            
+            CollationKey keyA = coll.getCollationKey("a");
+            logln("Key for \"a\":"+  prettify(keyA));
+            if (keyA.compareTo(coll.getCollationKey(lastPrimIgn))<=0) {
+                CollationKey key = coll.getCollationKey(lastPrimIgn);
+                logln("Collation key for 0xD800 0xDDFD: "+prettify(key));
+                errln("Error! String \"a\" must be greater than \uD800\uDDFD -"+
+                      "[Last Primary Ignorable]");
+            }
+            if (keyA.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"a\" must be less than 0x0009 - [First Variable]");
+            }
+            CollationKey keyB = coll.getCollationKey("b");
+            logln("Key for \"b\":"+  prettify(keyB));
+            if (keyB.compareTo(coll.getCollationKey(firstPrimIgn))<=0) {
+                CollationKey key = coll.getCollationKey(firstPrimIgn);
+                logln("Collation key for 0x0332: "+prettify(key));
+                errln("Error! String \"b\" must be greater than 0x0332 -"+
+                      "[First Primary Ignorable]");
+            }
+            if (keyB.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"b\" must be less than 0x0009 - [First Variable]");
+            }
+        }
+        {
+            i=1;   
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test rule["+i+"]"+rules[i]);
+            
+            CollationKey keyA = coll.getCollationKey("a");
+            logln("Key for \"a\":"+  prettify(keyA));
+            byte[] keyAInBytes = keyA.toByteArray();
+            for (int j=0; j<keyAInBytes.length && j<secIgnKey.length; j++) {
+                if (keyAInBytes[j]!=secIgnKey[j]) {
+                    if ((char)keyAInBytes[j]<=(char)secIgnKey[j]) {
+                        logln("Error! String \"a\" must be greater than [Last Secondary Ignorable]");
+                    }
+                    break;
+                }
+            }
+            if (keyA.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                errln("Error! String \"a\" must be less than 0x0009 - [First Variable]");
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+            }
+            CollationKey keyB = coll.getCollationKey("b");
+            logln("Key for \"b\":"+  prettify(keyB));
+            byte[] keyBInBytes = keyB.toByteArray();
+            for (int j=0; j<keyBInBytes.length && j<secIgnKey.length; j++) {
+                if (keyBInBytes[j]!=secIgnKey[j]) {
+                    if ((char)keyBInBytes[j]<=(char)secIgnKey[j]) {
+                        errln("Error! String \"b\" must be greater than [Last Secondary Ignorable]");
+                    }
+                    break;
+                }
+            }
+            if (keyB.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"b\" must be less than 0x0009 - [First Variable]");
+            }
+        }   
+    }
+    
+    public void TestUCAPrecontext()
+    {
+        String rules[] = {
+                "& \u00B7<a ",
+                "& L\u00B7 << a", // 'a' is an expansion. 
+        };
+        String cases[] = {
+            "\u00B7", 
+            "\u0387", 
+            "a",
+            "l",
+            "L\u0332",
+            "l\u00B7",
+            "l\u0387",
+            "L\u0387",
+            "la\u0387",
+            "La\u00b7",
+        };
+
+        // Test en sort
+        RuleBasedCollator en = null;
+        
+        logln("EN sort:");
+        try {
+            en = (RuleBasedCollator)Collator.getInstance(
+                    new Locale("en", ""));
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = en.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = en.getCollationKey(cases[j-1]);
+                    if (key.compareTo(prevKey)<0) {
+                        errln("Error! EN test["+j+"]:"+"source:" + cases[j]+
+                        "is not greater than previous test.");
+                    }
+                }
+                /*
+                if ( key.compareTo(expectingKey)!=0) {
+                    errln("Error! Test case["+i+"]:"+"source:" + key.getSourceString());
+                    errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                */
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        
+        // Test ja sort
+        RuleBasedCollator ja = null;
+        logln("JA sort:");
+        try {
+            ja = (RuleBasedCollator)Collator.getInstance(
+                    new Locale("ja", ""));
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = ja.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = ja.getCollationKey(cases[j-1]);
+                    if (key.compareTo(prevKey)<0) {
+                        errln("Error! JA test["+j+"]:"+"source:" + cases[j]+
+                        "is not greater than previous test.");
+                    }
+                }
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        for(int i = 0; i < rules.length; i++) {
+            
+            RuleBasedCollator coll = null;
+            logln("Tailoring rule:"+rules[i]);
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = coll.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = coll.getCollationKey(cases[j-1]);
+                    if (i==1 && j==3) {
+                        if (key.compareTo(prevKey)>0) {
+                            errln("Error! Rule:"+rules[i]+" test["+j+"]:"+"source:"+
+                            cases[j]+"is not greater than previous test.");
+                        }
+                    }
+                    else {
+                        if (key.compareTo(prevKey)<0) {
+                            errln("Error! Rule:"+rules[i]+" test["+j+"]:"+"source:"+ 
+                            cases[j]+"is not greater than previous test.");
+                        }
+                    }
+                }
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        }   
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
new file mode 100644
index 0000000..bdaeed1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
@@ -0,0 +1,317 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationMonkeyTest
+ * Source File: $ICU4CRoot/source/test/intltest/mnkytst.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Random;
+import java.util.Locale;
+
+/**
+ * CollationMonkeyTest is a third level test class.  This tests the random 
+ * substrings of the default test strings to verify if the compare and 
+ * sort key algorithm works correctly.  For example, any string is always
+ * less than the string itself appended with any character.
+ */
+
+public class CollationMonkeyTest extends TestFmwk {
+    
+    private String source = "-abcdefghijklmnopqrstuvwxyz#&^$@";
+    
+    public static void main(String[] args) throws Exception {
+        new CollationMonkeyTest().run(args);
+    }
+    
+    public void TestCollationKey() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCollationKey(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        Random rand = createRandom(); // use test framework's random seed
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        CollationKey collationKey1, collationKey2;
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        int result = collationKey1.compareTo(collationKey2);  // Tertiary
+        int revResult = collationKey2.compareTo(collationKey1);  // Tertiary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Secondary
+        revResult = collationKey2.compareTo(collationKey1);   // Secondary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Primary
+        revResult = collationKey2.compareTo(collationKey1);   // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(addOne);
+        result = collationKey1.compareTo(collationKey2);
+        if (result != -1) {
+            msg += "CollationKey(";
+            msg += subs;
+            msg += ") .LT. CollationKey(";
+            msg += addOne;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = collationKey2.compareTo(collationKey1);
+        if (result != 1) {
+            msg += "CollationKey(";
+            msg += addOne;
+            msg += ") .GT. CollationKey(";
+            msg += subs;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    }
+    
+    // perform monkey tests using Collator.compare
+    public void TestCompare() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCompare(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        /* Seed the random-number generator with current time so that
+         * the numbers will be different every time we run.
+         */
+        
+        Random rand = createRandom(); // use test framework's random seed
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        int result = myCollator.compare(subs, subt);  // Tertiary
+        int revResult = myCollator.compare(subt, subs);  // Tertiary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        result = myCollator.compare(subs, subt);  // Secondary
+        revResult = myCollator.compare(subt, subs);  // Secondary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        result = myCollator.compare(subs, subt);  // Primary
+        revResult = myCollator.compare(subt, subs);  // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        result = myCollator.compare(subs, addOne);
+        if (result != -1) {
+            msg += "Test : ";
+            msg += subs;
+            msg += " .LT. ";
+            msg += addOne;
+            msg += " Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = myCollator.compare(addOne, subs);
+        if (result != 1) {
+            msg += "Test : ";
+            msg += addOne;
+            msg += " .GT. ";
+            msg += subs;
+            msg += " Failed.";
+            errln(msg);
+        }
+    }
+    
+    void report(String s, String t, int result, int revResult) {
+        if (revResult != -result) {
+            String msg = "";
+            msg += s; 
+            msg += " and ";
+            msg += t;
+            msg += " round trip comparison failed";
+            msg += " (result " + result + ", reverse Result " + revResult + ")"; 
+            errln(msg);
+        }
+    }
+    
+    public void TestRules() {
+        String testSourceCases[] = {
+            "\u0061\u0062\u007a", 
+            "\u0061\u0062\u007a", 
+        };
+    
+        String testTargetCases[] = {
+            "\u0061\u0062\u00e4",
+            "\u0061\u0062\u0061\u0308",
+        };
+        
+        int i=0;
+        logln("Demo Test 1 : Create a new table collation with rules \"& z < 0x00e4\"");
+        Collator col = Collator.getInstance(new Locale("en", "US"));
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & z < ";
+        newRules = baseRules + newRules + String.valueOf(0x00e4);
+        RuleBasedCollator myCollation = null;
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            warnln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+        logln("Demo Test 2 : Create a new table collation with rules \"& z < a 0x0308\"");
+        newRules = "";
+        newRules = baseRules + " & z < a" + String.valueOf(0x0308);
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            errln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+    }
+    
+    void doTest(RuleBasedCollator myCollation, String mysource, String target, int result) {
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        
+        try {
+            sortKey1 = myCollation.getCollationKey(source);
+            sortKey2 = myCollation.getCollationKey(target);
+        } catch (Exception e) {
+            errln("SortKey generation Failed.\n");
+            return;
+        }
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( mysource, target, sortKey1, sortKey2, compareResult, keyResult, compareResult, result );
+    }
+    
+    public void reportCResult(String src, String target, CollationKey sourceKey, CollationKey targetKey,
+                              int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
new file mode 100644
index 0000000..6c33194
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
@@ -0,0 +1,1193 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+import java.util.Vector;
+import java.text.ParseException;
+
+public class CollationRegressionTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new CollationRegressionTest().run(args);
+    }
+    
+    // @bug 4048446
+    //
+    // CollationElementIterator.reset() doesn't work
+    //
+    public void Test4048446() {
+        final String test1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        //final String test2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        CollationElementIterator i1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator i2 = en_us.getCollationElementIterator(test1);
+        
+        if (i1 == null || i2 == null) {
+            errln("Could not create CollationElementIterator's");
+            return;
+        }
+    
+        while (i1.next() != CollationElementIterator.NULLORDER) {
+            //
+        }
+    
+        i1.reset();
+        assertEqual(i1, i2);
+    }
+    
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+    
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+    
+            if (c1 != c2) {
+                String msg = "";
+                String msg1 = "    ";
+                
+                msg += msg1 + count;
+                msg += ": strength(0x" + Integer.toHexString(c1);
+                msg += ") != strength(0x" + Integer.toHexString(c2);
+                msg += ")";
+                errln(msg);
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+    }
+    
+    // @bug 4051866
+    //
+    // Collator -> rules -> Collator round-trip broken for expanding characters
+    //
+    public void Test4051866() {
+       String rules = "< o & oe ,o\u3080& oe ,\u1530 ,O& OE ,O\u3080& OE ,\u1520< p ,P";
+
+        // Build a collator containing expanding characters
+        RuleBasedCollator c1 = null;
+        
+        try {
+            c1 = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Build another using the rules from  the first
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator(c1.getRules());
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Make sure they're the same
+        if (!(c1.getRules().equals(c2.getRules())))
+        {
+            errln("Rules are not equal");
+        }
+    }
+    
+    // @bug 4053636
+    //
+    // Collator thinks "black-bird" == "black"
+    //
+    public void Test4053636() {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.equals("black_bird", "black")) {
+            errln("black-bird == black");
+        }
+    }
+    
+    // @bug 4054238
+    //
+    // CollationElementIterator will not work correctly if the associated
+    // Collator object's mode is changed
+    //
+    public void Test4054238(/* char* par */) {
+        final char[] chars3 = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0};
+        final String test3 = new String(chars3);
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        // NOTE: The Java code uses en_us to create the CollationElementIterators
+        // but I'm pretty sure that's wrong, so I've changed this to use c.
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i1 = c.getCollationElementIterator(test3);
+        logln("Offset:" + i1.getOffset());
+    }
+    
+    // @bug 4054734
+    //
+    // Collator::IDENTICAL documented but not implemented
+    //
+    public void Test4054734(/* char* par */) {
+        
+            //Here's the original Java:
+    
+            String[] decomp = {
+                "\u0001",   "<",    "\u0002",
+                "\u0001",   "=",    "\u0001",
+                "A\u0001",  ">",    "~\u0002",      // Ensure A and ~ are not compared bitwise
+                "\u00C0",   "=",    "A\u0300",      // Decomp should make these equal
+            };
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.IDENTICAL);
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, decomp);
+    }
+    
+    void compareArray(Collator c, String[] tests) {
+        
+        int expectedResult = 0;
+    
+        for (int i = 0; i < tests.length; i += 3) {
+            String source = tests[i];
+            String comparison = tests[i + 1];
+            String target = tests[i + 2];
+    
+            if (comparison.equals("<")) {
+                expectedResult = -1;
+            } else if (comparison.equals(">")) {
+                expectedResult = 1;
+            } else if (comparison.equals("=")) {
+                expectedResult = 0;
+            } else {
+                errln("Bogus comparison string \"" + comparison + "\"");
+            }
+            
+            int compareResult = 0;
+            
+            logln("i = " + i);
+            logln(source);
+            logln(target);
+            try {
+                compareResult = c.compare(source, target);
+            } catch (Exception e) {
+                errln(e.toString());
+            }
+    
+            CollationKey sourceKey = null, targetKey = null;
+            try {
+                sourceKey = c.getCollationKey(source);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for source");
+                continue;
+            }
+    
+            try {
+                targetKey = c.getCollationKey(target);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for target");
+                continue;
+            }
+    
+            int keyResult = sourceKey.compareTo(targetKey);
+            reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+        }
+    }
+    
+    void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    // @bug 4054736
+    //
+    // Full Decomposition mode not implemented
+    //
+    public void Test4054736(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        c.setStrength(Collator.SECONDARY);
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        final String[] tests = { "\uFB4F", "\u003d", "\u05D0\u05DC" };  // Alef-Lamed vs. Alef, Lamed
+        compareArray(c, tests);
+    }
+    
+    // @bug 4058613
+    //
+    // Collator::createInstance() causes an ArrayIndexOutofBoundsException for Korean  
+    //
+    public void Test4058613(/* char* par */) {
+        // Creating a default collator doesn't work when Korean is the default
+        // locale
+        
+        Locale oldDefault = Locale.getDefault();
+        Locale.setDefault(new Locale("ko", ""));
+    
+        Collator c = null;
+        
+        c = Collator.getInstance(new Locale("en", "US"));
+    
+        if (c == null) {
+            errln("Could not create a Korean collator");
+            Locale.setDefault(oldDefault);
+            return;
+        }
+        
+        // Since the fix to this bug was to turn off decomposition for Korean collators,
+        // ensure that's what we got
+        if (c.getDecomposition() != Collator.NO_DECOMPOSITION) {
+          errln("Decomposition is not set to NO_DECOMPOSITION for Korean collator");
+        }
+    
+        Locale.setDefault(oldDefault);
+    }
+    
+    // @bug 4059820
+    //
+    // RuleBasedCollator.getRules does not return the exact pattern as input
+    // for expanding character sequences
+    //
+    public void Test4059820(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b , c/a < d < z";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failure building a collator.");
+            return;
+        }
+    
+        if ( c.getRules().indexOf("c/a") == -1)
+        {
+            errln("returned rules do not contain 'c/a'");
+        }
+    }
+    
+    // @bug 4060154
+    //
+    // MergeCollation::fixEntry broken for "& H < \u0131, \u0130, i, I"
+    //
+    public void Test4060154(/* char* par */) {
+        String rules ="< g, G < h, H < i, I < j, J & H < \u0131, \u0130, i, I";
+    
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            //System.out.println(e);
+            errln("failure building collator.");
+            return;
+        }
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        String[] tertiary = {
+            "A",        "<",    "B",
+            "H",        "<",    "\u0131",
+            "H",        "<",    "I",
+            "\u0131",   "<",    "\u0130",
+            "\u0130",   "<",    "i",
+            "\u0130",   ">",    "H",
+        };
+    
+        c.setStrength(Collator.TERTIARY);
+        compareArray(c, tertiary);
+    
+        String[] secondary = {
+            "H",        "<",    "I",
+            "\u0131",   "=",    "\u0130",
+        };
+    
+        c.setStrength(Collator.PRIMARY);
+        compareArray(c, secondary);
+    }
+    
+    // @bug 4062418
+    //
+    // Secondary/Tertiary comparison incorrect in French Secondary
+    //
+    public void Test4062418(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::FRANCE()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+                "p\u00eache",    "<",    "p\u00e9ch\u00e9",    // Comparing accents from end, p\u00e9ch\u00e9 is greater
+        };
+    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4065540
+    //
+    // Collator::compare() method broken if either string contains spaces
+    //
+    public void Test4065540(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.compare("abcd e", "abcd f") == 0) {
+            errln("'abcd e' == 'abcd f'");
+        }
+    }
+    
+    // @bug 4066189
+    //
+    // Unicode characters need to be recursively decomposed to get the
+    // correct result. For example,
+    // u1EB1 -> \u0103 + \u0300 -> a + \u0306 + \u0300.
+    //
+    public void Test4066189(/* char* par */) {
+        final  String test1 = "\u1EB1";
+        final  String test2 = "\u0061\u0306\u0300";
+    
+        // NOTE: The java code used en_us to create the
+        // CollationElementIterator's. I'm pretty sure that
+        // was wrong, so I've change the code to use c1 and c2
+        RuleBasedCollator c1 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        CollationElementIterator i1 = c1.getCollationElementIterator(test1);
+    
+        RuleBasedCollator c2 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c2.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i2 = c2.getCollationElementIterator(test2);
+    
+        assertEqual(i1, i2);
+    }
+    
+    // @bug 4066696
+    //
+    // French secondary collation checking at the end of compare iteration fails
+    //
+    public void Test4066696(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        } catch(Exception e) {
+            errln("Failure creating collator for Locale::getFrance()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+            "\u00e0",   ">",     "\u01fa",       // a-grave <  A-ring-acute
+        };    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4076676
+    //
+    // Bad canonicalization of same-class combining characters
+    //
+    public void Test4076676(/* char* par */) {
+        // These combining characters are all in the same class, so they should not
+        // be reordered, and they should compare as unequal.
+        final String s1 = "\u0041\u0301\u0302\u0300";
+        final String s2 = "\u0041\u0302\u0300\u0301";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        if (c.compare(s1,s2) == 0) {
+            errln("Same-class combining chars were reordered");
+        }
+    }
+
+    // @bug 4078588
+    //
+    // RuleBasedCollator breaks on "< a < bb" rule
+    //
+    public void Test4078588(/* char *par */) {
+        RuleBasedCollator rbc = null;
+        try {
+            rbc = new RuleBasedCollator("< a < bb");
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator.");
+            return;
+        }
+    
+        int result = rbc.compare("a","bb");
+    
+        if (result >= 0) {
+            errln("Compare(a,bb) returned " + result + "; expected -1");
+        }
+    }
+    
+    // @bug 4079231
+    //
+    // RuleBasedCollator::operator==(NULL) throws NullPointerException
+    //
+    public void Test4079231(/* char* par */) {    
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        try {
+            if (en_us.equals(null)) {
+                errln("en_us.equals(null) returned true");
+            }
+        } catch (Exception e) {
+            errln("en_us.equals(null) threw " + e.toString());
+        }
+    }
+    
+    // @bug 4081866
+    //
+    // Combining characters in different classes not reordered properly.
+    //
+    public void Test4081866(/* char* par */) {
+        // These combining characters are all in different classes,
+        // so they should be reordered and the strings should compare as equal.
+        String s1 = "\u0041\u0300\u0316\u0327\u0315";
+        String s2 = "\u0041\u0327\u0316\u0315\u0300";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        
+        // Now that the default collators are set to NO_DECOMPOSITION
+        // (as a result of fixing bug 4114077), we must set it explicitly
+        // when we're testing reordering behavior.  -- lwerner, 5/5/98
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        if (c.compare(s1,s2) != 0) {
+            errln("Combining chars were not reordered");
+        }
+    }
+    
+    // @bug 4087241
+    //
+    // string comparison errors in Scandinavian collators
+    //
+    public void Test4087241(/* char* par */) {
+        Locale da_DK = new Locale("da", "DK");
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(da_DK);
+        } catch (Exception e) {
+            errln("Failed to create collator for da_DK locale");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u007a",       "\u003c", "\u00E6",            // z        < ae
+            "\u0061\u0308", "\u003c", "\u0061\u030A",      // a-unlaut < a-ring
+            "\u0059",       "\u003c", "\u0075\u0308",      // Y        < u-umlaut
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4087243
+    //
+    // CollationKey takes ignorable strings into account when it shouldn't
+    //
+    public void Test4087243(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String tests[] = {
+            "\u0031\u0032\u0033", "\u003d", "\u0031\u0032\u0033\u0001"    // 1 2 3  =  1 2 3 ctrl-A
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4092260
+    //
+    // Mu/micro conflict
+    // Micro symbol and greek lowercase letter Mu should sort identically
+    //
+    public void Test4092260(/* char* par */) {
+        Locale el = new Locale("el", "");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el);
+        } catch (Exception e) {
+            errln("Failed to create collator for el locale.");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u00B5", "\u003d", "\u03BC",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4095316
+    //
+    public void Test4095316(/* char* par */) {
+        Locale el_GR = new Locale("el", "GR");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el_GR);
+        } catch (Exception e) {
+            errln("Failed to create collator for el_GR locale");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        //c->setStrength(Collator::TERTIARY);
+        //c->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, status);
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u03D4", "\u003d", "\u03AB",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4101940
+    //
+    public void Test4101940(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b";
+        String nothing = "";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator");
+            return;
+        }
+        CollationElementIterator i = c.getCollationElementIterator(nothing);
+        i.reset();
+        if (i.next() != CollationElementIterator.NULLORDER) {
+            errln("next did not return NULLORDER");
+        }
+    }
+    
+    // @bug 4103436
+    //
+    // Collator::compare not handling spaces properly
+    //
+    public void Test4103436(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String[] tests = {
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0020\u0061\u0063\u0063\u0065\u0073\u0073",
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0061\u0063\u0063\u0065\u0073\u0073",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4114076
+    //
+    // Collation not Unicode conformant with Hangul syllables
+    //
+    public void Test4114076(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        //
+        // With Canonical decomposition, Hangul syllables should get decomposed
+        // into Jamo, but Jamo characters should not be decomposed into
+        // conjoining Jamo
+        //
+        String test1[] = {
+            "\ud4db", "\u003d", "\u1111\u1171\u11b6"
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        // From UTR #15:
+        // *In earlier versions of Unicode, jamo characters like ksf
+        //  had compatibility mappings to kf + sf. These mappings were 
+        //  removed in Unicode 2.1.9 to ensure that Hangul syllables are maintained.)
+        // That is, the following test is obsolete as of 2.1.9
+    
+    //obsolete-    // With Full decomposition, it should go all the way down to
+    //obsolete-    // conjoining Jamo characters.
+    //obsolete-    //
+    //obsolete-    static const UChar test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
+    //obsolete-    {
+    //obsolete-        {0xd4db, 0}, {0x3d, 0}, {0x1111, 0x116e, 0x1175, 0x11af, 0x11c2, 0}
+    //obsolete-    };
+    //obsolete-
+    //obsolete-    c->setDecomposition(Normalizer::DECOMP_COMPAT);
+    //obsolete-    compareArray(*c, test2, ARRAY_LENGTH(test2));
+    }
+
+    // @bug 4114077
+    //
+    // Collation with decomposition off doesn't work for Europe 
+    //
+    public void Test4114077(/* char* par */) {
+        // Ensure that we get the same results with decomposition off
+        // as we do with it on....
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String test1[] = {
+            "\u00C0",                         "\u003d", "\u0041\u0300",            // Should be equivalent
+            "\u0070\u00ea\u0063\u0068\u0065", "\u003e", "\u0070\u00e9\u0063\u0068\u00e9",
+            "\u0204",                         "\u003d", "\u0045\u030F",
+            "\u01fa",                         "\u003d", "\u0041\u030a\u0301",    // a-ring-acute -> a-ring, acute
+                                                    //   -> a, ring, acute
+            "\u0041\u0300\u0316",             "\u003c", "\u0041\u0316\u0300"        // No reordering --> unequal
+        };
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        String test2[] = {
+            "\u0041\u0300\u0316", "\u003d", "\u0041\u0316\u0300"      // Reordering --> equal
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test2);
+    }
+    
+    // @bug 4124632
+    //
+    // Collator::getCollationKey was hanging on certain character sequences
+    //
+    public void Test4124632(/* char* par */) {
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.JAPAN);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::JAPAN");
+            return;
+        }
+        String test = "\u0041\u0308\u0062\u0063";
+        CollationKey key;
+        try {
+            key = coll.getCollationKey(test);
+            logln(key.getSourceString());
+        } catch (Exception e) {
+            errln("CollationKey creation failed.");
+        }
+    }
+    
+    // @bug 4132736
+    //
+    // sort order of french words with multiple accents has errors
+    //
+    public void Test4132736(/* char* par */) {
+        Collator c = null;
+        try {
+            c = Collator.getInstance(Locale.FRANCE);
+            c.setStrength(Collator.TERTIARY);
+        } catch (Exception e) {
+            errln("Failed to create a collator for Locale::getFrance()");
+        }
+    
+        String test1[] = {
+            "\u0065\u0300\u0065\u0301", "\u003c", "\u0065\u0301\u0065\u0300",
+            "\u0065\u0300\u0301",       "\u003c", "\u0065\u0301\u0300",
+        };
+        compareArray(c, test1);
+    }
+    
+    // @bug 4133509
+    //
+    // The sorting using java.text.CollationKey is not in the exact order
+    //
+    public void Test4133509(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        String test1[] = {
+            "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e", "\u003c", "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0049\u006e\u0049\u006e\u0069\u0074\u0069\u0061\u006c\u0069\u007a\u0065\u0072\u0045\u0072\u0072\u006f\u0072",
+            "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073",       "\u003c", "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073\u0045\u006e\u0076\u0069\u0072\u006f\u006e\u006d\u0065\u006e\u0074",
+            "\u0053\u0074\u0072\u0069\u006e\u0067",                   "\u003c", "\u0053\u0074\u0072\u0069\u006e\u0067\u0042\u0075\u0066\u0066\u0065\u0072",
+        };
+    
+        compareArray(en_us, test1);
+    }
+    
+    // @bug 4139572
+    //
+    // getCollationKey throws exception for spanish text 
+    // Cannot reproduce this bug on 1.2, however it DOES fail on 1.1.6
+    //
+    public void Test4139572(/* char* par */) {
+        //
+        // Code pasted straight from the bug report
+        // (and then translated to C++ ;-)
+        //
+        // create spanish locale and collator
+        Locale l = new Locale("es", "es");
+        Collator col = null;
+        try {
+            col = Collator.getInstance(l);
+        } catch (Exception e) {
+            errln("Failed to create a collator for es_es locale.");
+            return;
+        }
+        CollationKey key = null;
+        // this spanish phrase kills it!
+        try {
+            key = col.getCollationKey("Nombre De Objeto");
+            logln("source:" + key.getSourceString());
+        } catch (Exception e) {
+            errln("Error creating CollationKey for \"Nombre De Ojbeto\"");
+        }
+    }
+    
+    // @bug 4141640
+    //
+    // Support for Swedish gone in 1.1.6 (Can't create Swedish collator) 
+    //
+    public void Test4141640(/* char* par */) {
+        //
+        // Rather than just creating a Swedish collator, we might as well
+        // try to instantiate one for every locale available on the system
+        // in order to prevent this sort of bug from cropping up in the future
+        //
+        Locale locales[] = Collator.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i += 1)
+        {
+            Collator c = null;
+            try {
+                c = Collator.getInstance(locales[i]);
+                logln("source: " + c.getStrength());
+            } catch (Exception e) {
+                String msg = "";
+                msg += "Could not create collator for locale ";
+                msg += locales[i].getDisplayName();
+                errln(msg);
+            }
+        }
+    }
+    
+    private void checkListOrder(String[] sortedList, Collator c) {
+        // this function uses the specified Collator to make sure the
+        // passed-in list is already sorted into ascending order
+        for (int i = 0; i < sortedList.length - 1; i++) {
+            if (c.compare(sortedList[i], sortedList[i + 1]) >= 0) {
+                errln("List out of order at element #" + i + ": "
+                        + sortedList[i] + " >= "
+                        + sortedList[i + 1]);
+            }
+        }
+    }
+
+    public void Test4171974() {
+        // test French accent ordering more thoroughly
+        /*String[] frenchList = {
+            "\u0075\u0075",     // u u
+            "\u00fc\u0075",     // u-umlaut u
+            "\u01d6\u0075",     // u-umlaut-macron u
+            "\u016b\u0075",     // u-macron u
+            "\u1e7b\u0075",     // u-macron-umlaut u
+            "\u0075\u00fc",     // u u-umlaut
+            "\u00fc\u00fc",     // u-umlaut u-umlaut
+            "\u01d6\u00fc",     // u-umlaut-macron u-umlaut
+            "\u016b\u00fc",     // u-macron u-umlaut
+            "\u1e7b\u00fc",     // u-macron-umlaut u-umlaut
+            "\u0075\u01d6",     // u u-umlaut-macron
+            "\u00fc\u01d6",     // u-umlaut u-umlaut-macron
+            "\u01d6\u01d6",     // u-umlaut-macron u-umlaut-macron
+            "\u016b\u01d6",     // u-macron u-umlaut-macron
+            "\u1e7b\u01d6",     // u-macron-umlaut u-umlaut-macron
+            "\u0075\u016b",     // u u-macron
+            "\u00fc\u016b",     // u-umlaut u-macron
+            "\u01d6\u016b",     // u-umlaut-macron u-macron
+            "\u016b\u016b",     // u-macron u-macron
+            "\u1e7b\u016b",     // u-macron-umlaut u-macron
+            "\u0075\u1e7b",     // u u-macron-umlaut
+            "\u00fc\u1e7b",     // u-umlaut u-macron-umlaut
+            "\u01d6\u1e7b",     // u-umlaut-macron u-macron-umlaut
+            "\u016b\u1e7b",     // u-macron u-macron-umlaut
+            "\u1e7b\u1e7b"      // u-macron-umlaut u-macron-umlaut
+        };
+        Collator french = Collator.getInstance(Locale.FRENCH);
+
+        logln("Testing French order...");
+        checkListOrder(frenchList, french);
+
+        logln("Testing French order without decomposition...");
+        french.setDecomposition(Collator.NO_DECOMPOSITION);
+        checkListOrder(frenchList, french);*/
+
+        String[] englishList = {
+            "\u0075\u0075",     // u u
+            "\u0075\u00fc",     // u u-umlaut
+            "\u0075\u01d6",     // u u-umlaut-macron
+            "\u0075\u016b",     // u u-macron
+            "\u0075\u1e7b",     // u u-macron-umlaut
+            "\u00fc\u0075",     // u-umlaut u
+            "\u00fc\u00fc",     // u-umlaut u-umlaut
+            "\u00fc\u01d6",     // u-umlaut u-umlaut-macron
+            "\u00fc\u016b",     // u-umlaut u-macron
+            "\u00fc\u1e7b",     // u-umlaut u-macron-umlaut
+            "\u01d6\u0075",     // u-umlaut-macron u
+            "\u01d6\u00fc",     // u-umlaut-macron u-umlaut
+            "\u01d6\u01d6",     // u-umlaut-macron u-umlaut-macron
+            "\u01d6\u016b",     // u-umlaut-macron u-macron
+            "\u01d6\u1e7b",     // u-umlaut-macron u-macron-umlaut
+            "\u016b\u0075",     // u-macron u
+            "\u016b\u00fc",     // u-macron u-umlaut
+            "\u016b\u01d6",     // u-macron u-umlaut-macron
+            "\u016b\u016b",     // u-macron u-macron
+            "\u016b\u1e7b",     // u-macron u-macron-umlaut
+            "\u1e7b\u0075",     // u-macron-umlaut u
+            "\u1e7b\u00fc",     // u-macron-umlaut u-umlaut
+            "\u1e7b\u01d6",     // u-macron-umlaut u-umlaut-macron
+            "\u1e7b\u016b",     // u-macron-umlaut u-macron
+            "\u1e7b\u1e7b"      // u-macron-umlaut u-macron-umlaut
+        };
+        Collator english = Collator.getInstance(Locale.ENGLISH);
+
+        logln("Testing English order...");
+        checkListOrder(englishList, english);
+
+        logln("Testing English order without decomposition...");
+        english.setDecomposition(Collator.NO_DECOMPOSITION);
+        checkListOrder(englishList, english);
+    }
+
+    public void Test4179216() throws Exception {
+        // you can position a CollationElementIterator in the middle of
+        // a contracting character sequence, yielding a bogus collation
+        // element
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        coll = new RuleBasedCollator(coll.getRules()
+                + " & C < ch , cH , Ch , CH < cat < crunchy");
+        String testText = "church church catcatcher runcrunchynchy";
+        CollationElementIterator iter = coll.getCollationElementIterator(
+                testText);
+
+        // test that the "ch" combination works properly
+        iter.setOffset(4);
+        int elt4 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.reset();
+        int elt0 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(5);
+        int elt5 = CollationElementIterator.primaryOrder(iter.next());
+
+        if (elt4 != elt0 || elt5 != elt0)
+            errln("The collation elements at positions 0 (" + elt0 + "), 4 ("
+                    + elt4 + "), and 5 (" + elt5 + ") don't match.");
+
+        // test that the "cat" combination works properly
+        iter.setOffset(14);
+        int elt14 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(15);
+        int elt15 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(16);
+        int elt16 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(17);
+        int elt17 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(18);
+        int elt18 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(19);
+        int elt19 = CollationElementIterator.primaryOrder(iter.next());
+
+        if (elt14 != elt15 || elt14 != elt16 || elt14 != elt17
+                || elt14 != elt18 || elt14 != elt19)
+            errln("\"cat\" elements don't match: elt14 = " + elt14 + ", elt15 = "
+            + elt15 + ", elt16 = " + elt16 + ", elt17 = " + elt17
+            + ", elt18 = " + elt18 + ", elt19 = " + elt19);
+
+        // now generate a complete list of the collation elements,
+        // first using next() and then using setOffset(), and
+        // make sure both interfaces return the same set of elements
+        iter.reset();
+
+        int elt = iter.next();
+        int count = 0;
+        while (elt != CollationElementIterator.NULLORDER) {
+            ++count;
+            elt = iter.next();
+        }
+
+        String[] nextElements = new String[count];
+        String[] setOffsetElements = new String[count];
+        int lastPos = 0;
+
+        iter.reset();
+        elt = iter.next();
+        count = 0;
+        while (elt != CollationElementIterator.NULLORDER) {
+            nextElements[count++] = testText.substring(lastPos, iter.getOffset());
+            lastPos = iter.getOffset();
+            elt = iter.next();
+        }
+        count = 0;
+        for (int i = 0; i < testText.length(); ) {
+            iter.setOffset(i);
+            lastPos = iter.getOffset();
+            elt = iter.next();
+            setOffsetElements[count++] = testText.substring(lastPos, iter.getOffset());
+            i = iter.getOffset();
+        }
+        for (int i = 0; i < nextElements.length; i++) {
+            if (nextElements[i].equals(setOffsetElements[i])) {
+                logln(nextElements[i]);
+            } else {
+                errln("Error: next() yielded " + nextElements[i] + ", but setOffset() yielded "
+                    + setOffsetElements[i]);
+            }
+        }
+    }
+
+    public void Test4216006() throws Exception {
+        // rule parser barfs on "<\u00e0=a\u0300", and on other cases
+        // where the same token (after normalization) appears twice in a row
+        boolean caughtException = false;
+        try {
+            new RuleBasedCollator("\u00e0<a\u0300");
+        }
+        catch (ParseException e) {
+            caughtException = true;
+        }
+        if (!caughtException) {
+            throw new Exception("\"a<a\" collation sequence didn't cause parse error!");
+        }
+
+        RuleBasedCollator collator = new RuleBasedCollator("<\u00e0=a\u0300");
+        //commented by Kevin 2003/10/21 
+        //for "FULL_DECOMPOSITION is not supported here." in ICU4J DOC
+        //collator.setDecomposition(Collator.FULL_DECOMPOSITION);
+        collator.setStrength(Collator.IDENTICAL);
+
+        String[] tests = {
+            "a\u0300", "=", "\u00e0",
+            "\u00e0",  "=", "a\u0300"
+        };
+
+        compareArray(collator, tests);
+    }
+
+    // CollationElementIterator.previous broken for expanding char sequences
+    //
+    public void Test4179686() throws Exception {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        // Create a collator with a few expanding character sequences in it....
+        RuleBasedCollator coll = new RuleBasedCollator(en_us.getRules()
+                                                    + " & ae ; \u00e4 & AE ; \u00c4"
+                                                    + " & oe ; \u00f6 & OE ; \u00d6"
+                                                    + " & ue ; \u00fc & UE ; \u00dc");
+
+        String text = "T\u00f6ne"; // o-umlaut
+
+        CollationElementIterator iter = coll.getCollationElementIterator(text);
+        Vector elements = new Vector();
+        int elem;
+
+        // Iterate forward and collect all of the elements into a Vector
+        while ((elem = iter.next()) != CollationElementIterator.NULLORDER) {
+            elements.addElement(new Integer(elem));
+        }
+
+        // Now iterate backward and make sure they're the same
+        int index = elements.size() - 1;
+        while ((elem = iter.previous()) != CollationElementIterator.NULLORDER) {
+            int expect = ((Integer)elements.elementAt(index)).intValue();
+
+            if (elem != expect) {
+                errln("Mismatch at index " + index
+                      + ": got " + Integer.toString(elem,16)
+                      + ", expected " + Integer.toString(expect,16));
+            }
+            index--;
+        }
+    }
+
+    protected void init()throws Exception{
+    }
+    
+    public void Test4244884() throws Exception {
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        coll = new RuleBasedCollator(coll.getRules()
+                + " & C < ch , cH , Ch , CH < cat < crunchy");
+
+        String[] testStrings = new String[] {
+            "car",
+            "cave",
+            "clamp",
+            "cramp",
+            "czar",
+            "church",
+            "catalogue",
+            "crunchy",
+            "dog"
+        };
+
+        for (int i = 1; i < testStrings.length; i++) {
+            if (coll.compare(testStrings[i - 1], testStrings[i]) >= 0) {
+                errln("error: \"" + testStrings[i - 1]
+                    + "\" is greater than or equal to \"" + testStrings[i]
+                    + "\".");
+            }
+        }
+    }
+
+    //  CollationElementIterator set doesn't work propertly with next/prev
+    public void Test4663220() {
+        RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        java.text.StringCharacterIterator stringIter = new java.text.StringCharacterIterator("fox");
+        CollationElementIterator iter = collator.getCollationElementIterator(stringIter);
+    
+        int[] elements_next = new int[3];
+        logln("calling next:");
+        for (int i = 0; i < 3; ++i) {
+            logln("[" + i + "] " + (elements_next[i] = iter.next()));
+        }
+    
+        int[] elements_fwd = new int[3];
+        logln("calling set/next:");
+        for (int i = 0; i < 3; ++i) {
+            iter.setOffset(i);
+            logln("[" + i + "] " + (elements_fwd[i] = iter.next()));
+        }
+    
+        for (int i = 0; i < 3; ++i) {
+            if (elements_next[i] != elements_fwd[i]) {
+                errln("mismatch at position " + i + 
+                ": " + elements_next[i] + 
+                " != " + elements_fwd[i]);
+            }
+        }
+    }
+    
+    /* RuleBasedCollator not subclassable
+     * @bug 4146160
+    //
+    // RuleBasedCollator doesn't use createCollationElementIterator internally
+    //
+    public void Test4146160() {
+        //
+        // Use a custom collator class whose createCollationElementIterator
+        // methods increment a count....
+        //     
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        My4146160Collator.count = 0;
+        My4146160Collator mc = null;
+        try {
+            mc = new My4146160Collator(en_us);
+        } catch (Exception e) {
+            errln("Failed to create a My4146160Collator.");
+            return;
+        }
+    
+        CollationKey key = null;
+        try {
+            key = mc.getCollationKey("1");
+        } catch (Exception e) {
+            errln("Failure to get a CollationKey from a My4146160Collator.");
+            return;
+        }
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for getCollationKey");
+        }
+    
+        My4146160Collator.count = 0;
+        mc.compare("1", "2");
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for compare");
+        }
+    }*/
+}
+
+/* RuleBasedCollator not subclassable
+ * class My4146160Collator extends RuleBasedCollator {
+    static int count = 0;
+
+    public My4146160Collator(RuleBasedCollator rbc) throws Exception {
+        super(rbc.getRules());
+    }
+
+    public CollationElementIterator getCollationElementIterator(String text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+    
+    public CollationElementIterator getCollationElementIterator(java.text.CharacterIterator text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+}
+*/
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java b/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
new file mode 100644
index 0000000..8264011
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Collections;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.MissingResourceException;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.Collator.CollatorFactory;
+import com.ibm.icu.util.ULocale;
+
+public class CollationServiceTest extends TestFmwk {
+    public static void main(String[] args) {
+        new CollationServiceTest().run(args);
+    }
+
+    public void TestRegister() {
+        // register a singleton
+        Collator frcol = Collator.getInstance(ULocale.FRANCE);
+        Collator uscol = Collator.getInstance(ULocale.US);
+            
+        { // try override en_US collator
+            Object key = Collator.registerInstance(frcol, ULocale.US);
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!frcol.equals(ncol)) {
+                errln("register of french collator for en_US failed");
+            }
+
+            // coverage
+            Collator test = Collator.getInstance(ULocale.GERMANY); // CollatorFactory.handleCreate
+            if (!test.getLocale(ULocale.VALID_LOCALE).equals(ULocale.GERMANY)) {
+                errln("Collation from Germany is really " + test.getLocale(ULocale.VALID_LOCALE));
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister french collator");
+            }
+            ncol = Collator.getInstance(ULocale.US);
+            if (!uscol.equals(ncol)) {
+                errln("collator after unregister does not match original");
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU_FOO");
+
+        { // try create collator for new locale
+            Collator fucol = Collator.getInstance(fu_FU);
+            Object key = Collator.registerInstance(frcol, fu_FU);
+            Collator ncol = Collator.getInstance(fu_FU);
+            if (!frcol.equals(ncol)) {
+                errln("register of fr collator for fu_FU failed");
+            }
+            
+            ULocale[] locales = Collator.getAvailableULocales();
+            boolean found = false;
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                errln("new locale fu_FU not reported as supported locale");
+            }
+            try{
+                String name = Collator.getDisplayName(fu_FU);
+                if (!"fu (FU, FOO)".equals(name)) {
+                    errln("found " + name + " for fu_FU");
+                }
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+            try{
+                String name = Collator.getDisplayName(fu_FU, fu_FU);
+                if (!"fu (FU, FOO)".equals(name)) {
+                    errln("found " + name + " for fu_FU");
+                }
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister french collator");
+            }
+            ncol = Collator.getInstance(fu_FU);
+            if (!fucol.equals(ncol)) {
+                errln("collator after unregister does not match original fu_FU");
+            }
+        }
+
+        {
+            // coverage after return to default 
+            ULocale[] locales = Collator.getAvailableULocales();
+    
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    errln("new locale fu_FU not reported as supported locale");
+                    break;
+                }
+            }
+
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!ncol.getLocale(ULocale.VALID_LOCALE).equals(ULocale.US)) {
+                errln("Collation from US is really " + ncol.getLocale(ULocale.VALID_LOCALE));
+            }
+        }
+    }
+
+    public void TestRegisterFactory() {
+
+        class CollatorInfo {
+            ULocale locale;
+            Collator collator;
+            Map displayNames; // locale -> string
+
+            CollatorInfo(ULocale locale, Collator collator, Map displayNames) {
+                this.locale = locale;
+                this.collator = collator;
+                this.displayNames = displayNames;
+            }
+
+            String getDisplayName(ULocale displayLocale) {
+                String name = null;
+                if (displayNames != null) {
+                    name = (String)displayNames.get(displayLocale);
+                }
+                if (name == null) {
+                    name = locale.getDisplayName(displayLocale);
+                }
+                return name;
+            }
+        }
+
+        class TestFactory extends CollatorFactory {
+            private Map map;
+            private Set ids;
+            
+            TestFactory(CollatorInfo[] info) {
+                map = new HashMap();
+                for (int i = 0; i < info.length; ++i) {
+                    CollatorInfo ci = info[i];
+                    map.put(ci.locale, ci);
+                }
+            }
+
+            public Collator createCollator(ULocale loc) {
+                CollatorInfo ci = (CollatorInfo)map.get(loc);
+                if (ci != null) {
+                    return ci.collator;
+                }
+                return null;
+            }
+
+            public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+                CollatorInfo ci = (CollatorInfo)map.get(objectLocale);
+                if (ci != null) {
+                    return ci.getDisplayName(displayLocale);
+                }
+                return null;
+            }
+
+            public Set getSupportedLocaleIDs() {
+                if (ids == null) {
+                    HashSet set = new HashSet();
+                    Iterator iter = map.keySet().iterator();
+                    while (iter.hasNext()) {
+                        ULocale locale = (ULocale)iter.next();
+                        String id = locale.toString();
+                        set.add(id);
+                    }
+                    ids = Collections.unmodifiableSet(set);
+                }
+                return ids;
+            }
+        }
+    
+        class TestFactoryWrapper extends CollatorFactory {
+            CollatorFactory delegate;
+    
+            TestFactoryWrapper(CollatorFactory delegate) {
+                this.delegate = delegate;
+            }
+    
+            public Collator createCollator(ULocale loc) {
+                return delegate.createCollator(loc);
+            }
+    
+            // use CollatorFactory getDisplayName(ULocale, ULocale) for coverage
+    
+            public Set getSupportedLocaleIDs() {
+                return delegate.getSupportedLocaleIDs();
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+        ULocale fu_FU_FOO = new ULocale("fu_FU_FOO");
+
+        Map fuFUNames = new HashMap();
+        fuFUNames.put(fu_FU, "ze leetle bunny Fu-Fu");
+        fuFUNames.put(fu_FU_FOO, "zee leetel bunny Foo-Foo");
+        fuFUNames.put(ULocale.US, "little bunny Foo Foo");
+
+        Collator frcol = Collator.getInstance(ULocale.FRANCE);
+       /* Collator uscol = */Collator.getInstance(ULocale.US);
+        Collator gecol = Collator.getInstance(ULocale.GERMANY);
+        Collator jpcol = Collator.getInstance(ULocale.JAPAN);
+        Collator fucol = Collator.getInstance(fu_FU);
+        
+        CollatorInfo[] info = {
+            new CollatorInfo(ULocale.US, frcol, null),
+            new CollatorInfo(ULocale.FRANCE, gecol, null),
+            new CollatorInfo(fu_FU, jpcol, fuFUNames),
+        };
+        TestFactory factory = null;
+        try{
+            factory = new TestFactory(info);
+        }catch(MissingResourceException ex){
+            warnln("Could not load locale data."); 
+        }
+        // coverage
+        {
+            TestFactoryWrapper wrapper = new TestFactoryWrapper(factory); // in java, gc lets us easily multiply reference!
+            Object key = Collator.registerFactory(wrapper);
+            String name = null;
+            try{
+                name = Collator.getDisplayName(fu_FU, fu_FU_FOO);
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+            logln("*** default name: " + name);
+            Collator.unregister(key);
+    
+            ULocale bar_BAR = new ULocale("bar_BAR");
+            Collator col = Collator.getInstance(bar_BAR);
+            if (!col.getLocale(ULocale.VALID_LOCALE).equals(ULocale.getDefault())) {
+                errln("Collation from bar_BAR is really " + col.getLocale(ULocale.VALID_LOCALE));
+            }
+        }
+
+        int n1 = checkAvailable("before registerFactory");
+        
+        {
+            Object key = Collator.registerFactory(factory);
+            
+            int n2 = checkAvailable("after registerFactory");
+            
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!frcol.equals(ncol)) {
+                errln("frcoll for en_US failed");
+            }
+
+            ncol = Collator.getInstance(fu_FU_FOO);
+            if (!jpcol.equals(ncol)) {
+                errln("jpcol for fu_FU_FOO failed, got: " + ncol);
+            }
+            
+            ULocale[] locales = Collator.getAvailableULocales();
+            boolean found = false;
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                errln("new locale fu_FU not reported as supported locale");
+            }
+            
+            String name = Collator.getDisplayName(fu_FU);
+            if (!"little bunny Foo Foo".equals(name)) {
+                errln("found " + name + " for fu_FU");
+            }
+
+            name = Collator.getDisplayName(fu_FU, fu_FU_FOO);
+            if (!"zee leetel bunny Foo-Foo".equals(name)) {
+                errln("found " + name + " for fu_FU in fu_FU_FOO");
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister factory");
+            }
+
+            int n3 = checkAvailable("after unregister");
+            assertTrue("register increases count", n2>n1);
+            assertTrue("unregister restores count", n3==n1);
+            
+            ncol = Collator.getInstance(fu_FU);
+            if (!fucol.equals(ncol)) {
+                errln("collator after unregister does not match original fu_FU");
+            }
+        }
+    }
+
+    /**
+     * Check the integrity of the results of Collator.getAvailableULocales().
+     * Return the number of items returned.
+     */
+    int checkAvailable(String msg) {
+        Locale locs[] = Collator.getAvailableLocales();
+        if (!assertTrue("getAvailableLocales != null", locs!=null)) return -1;
+        checkArray(msg, locs, null);
+        ULocale ulocs[] = Collator.getAvailableULocales();
+        if (!assertTrue("getAvailableULocales != null", ulocs!=null)) return -1;
+        checkArray(msg, ulocs, null);
+        // This is not true because since ULocale objects with script code cannot be 
+        // converted to Locale objects
+        //assertTrue("getAvailableLocales().length == getAvailableULocales().length", locs.length == ulocs.length);
+        return locs.length;
+    }
+    
+    private static final String KW[] = {
+        "collation"
+    };
+
+    private static final String KWVAL[] = {
+        "phonebook",
+        "stroke"
+    };
+
+    public void TestSeparateTrees() {
+        String kw[] = Collator.getKeywords();
+        if (!assertTrue("getKeywords != null", kw!=null)) return;
+        checkArray("getKeywords", kw, KW);
+        
+        String kwval[] = Collator.getKeywordValues(KW[0]);
+        if (!assertTrue("getKeywordValues != null", kwval!=null)) return;
+        checkArray("getKeywordValues", kwval, KWVAL);
+
+        boolean isAvailable[] = new boolean[1];
+        ULocale equiv = Collator.getFunctionalEquivalent(KW[0],
+                                                         new ULocale("fr"),
+                                                         isAvailable);
+        if (assertTrue("getFunctionalEquivalent(fr)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(fr)", "fr", equiv.toString());
+        }
+        assertTrue("getFunctionalEquivalent(fr).isAvailable==true",
+                   isAvailable[0] == true);
+        
+        equiv = Collator.getFunctionalEquivalent(KW[0],
+                                                 new ULocale("fr_FR"),
+                                                 isAvailable);
+        if (assertTrue("getFunctionalEquivalent(fr_FR)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(fr_FR)", "fr", equiv.toString());
+        }
+        assertTrue("getFunctionalEquivalent(fr_FR).isAvailable==true",
+                   isAvailable[0] == true);
+
+        equiv = Collator.getFunctionalEquivalent(KW[0], new ULocale("zh_Hans"));
+        if (assertTrue("getFunctionalEquivalent(zh_Hans)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(zh_Hans)", "zh", equiv.toString());
+        }
+    }
+    
+    public void TestGetFunctionalEquivalent() {
+        String kw[] = Collator.getKeywords();
+        final String DATA[] = { 
+                          "de", "de", "t",
+                          "de@collation=direct", "de", "t",
+                          "de@collation=traditional", "de", "t",
+                          "de@collation=gb2312han", "de", "t",
+                          "de@collation=stroke", "de", "t",
+                          "de@collation=pinyin", "de", "t",
+                          "de@collation=phonebook", "de@collation=phonebook", "t",
+                          "de@collation=big5han", "de", "t",
+                          "de_AT", "de", "t",
+                          "de_AT@collation=direct", "de", "t",
+                          "de_AT@collation=traditional", "de", "t",
+                          "de_AT@collation=gb2312han", "de", "t",
+                          "de_AT@collation=stroke", "de", "t",
+                          "de_AT@collation=pinyin", "de", "t",
+                          "de_AT@collation=phonebook", "de@collation=phonebook", "t",
+                          "de_AT@collation=big5han", "de", "t",
+                          "nl", "root", "t",
+                          "nl@collation=direct", "root", "t",
+                          "nl_BE", "root", "t",
+                          "nl_BE@collation=direct", "root", "t",
+                          "nl_BE@collation=traditional", "root", "t",
+                          "nl_BE@collation=gb2312han", "root", "t",
+                          "nl_BE@collation=stroke", "root", "t",
+                          "nl_BE@collation=pinyin", "root", "t",
+                          "nl_BE@collation=big5han", "root", "t",
+                          "nl_BE@collation=phonebook", "root", "t",
+                          "en_US_VALLEYGIRL","en","f"
+                        };
+        final int DATA_COUNT=(DATA.length/3);
+        
+        for(int i=0;i<DATA_COUNT;i++) {
+            boolean isAvailable[] = new boolean[1];
+            ULocale input = new ULocale(DATA[(i*3)+0]);
+            ULocale expect = new ULocale(DATA[(i*3)+1]);
+            boolean expectAvailable = DATA[(i*3)+2].equals("t");
+            ULocale actual = Collator.getFunctionalEquivalent(kw[0],input,isAvailable);
+            if(!actual.equals(expect) || (expectAvailable!=isAvailable[0])) {
+                errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]) + ", " +
+                        "expected " + expect + " avail " + new Boolean(expectAvailable));
+            } else {
+                logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]));
+            }
+        }
+    }
+
+//    public void PrintFunctionalEquivalentList() {
+//        ULocale[] locales = Collator.getAvailableULocales();
+//        String[] keywords = Collator.getKeywords();
+//        logln("Collation");
+//        logln("Possible keyword=values pairs:");
+//        for (int i = 0; i < Collator.getKeywords().length; ++i) {
+//                String[] values = Collator.getKeywordValues(keywords[i]);
+//                for (int j = 0; j < values.length; ++j) {
+//                        System.out.println(keywords[i] + "=" + values[j]);
+//                }
+//        }
+//        logln("Differing Collators:");
+//        boolean[] isAvailable = {true};
+//        for (int k = 0; k < locales.length; ++k) {
+//                logln(locales[k].getDisplayName(ULocale.ENGLISH) + " [" +locales[k] + "]");
+//                for (int i = 0; i < Collator.getKeywords().length; ++i) {
+//                        ULocale base = Collator.getFunctionalEquivalent(keywords[i],locales[k]);
+//                        String[] values = Collator.getKeywordValues(keywords[i]);
+//                        for (int j = 0; j < Collator.getKeywordValues(keywords[i]).length;++j) {                          
+//                                ULocale other = Collator.getFunctionalEquivalent(keywords[i], 
+//                                        new ULocale(locales[k] + "@" + keywords[i] + "=" + values[j]),
+//                                        isAvailable);
+//                                if (isAvailable[0] && !other.equals(base)) {
+//                                        logln("\t" + keywords[i] + "=" + values[j] + ";\t" + base + ";\t" + other);
+//                                }
+//                        }
+//                }
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
new file mode 100644
index 0000000..127a8aa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
@@ -0,0 +1,181 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationSpanishTest
+ * Source File: $ICU4CRoot/source/test/intltest/escoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationSpanishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationSpanishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6c, 0x6c, 0x69, 0x6f, 0x74},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6d, 0x69, 0x6f, 0x74},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        // test primary > 5
+        -1,
+        0,
+        -1,
+        0
+    };
+    
+    //static public Collator myCollation = Collator.getInstance(new Locale("es", "ES"));
+    
+    private Collator myCollation = null;
+    
+    public CollationSpanishTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new Locale("es", "ES"));
+    }
+    public void TestTertiary(){
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 5 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary(){
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 5; i < 9; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // amin test routine, tests rules specific to the spanish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTest.java b/src/com/ibm/icu/dev/test/collator/CollationTest.java
new file mode 100644
index 0000000..f636399
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTest.java
@@ -0,0 +1,466 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.CollationElementIterator;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RawCollationKey;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+public class CollationTest extends ModuleTest{
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] args) throws Exception{
+        new CollationTest().run(args);
+    }
+
+    public CollationTest() {
+        super("com/ibm/icu/dev/data/testdata/", "DataDrivenCollationTest");
+    }
+    
+    public void processModules() {
+        for (Iterator iter = t.getSettingsIterator(); iter.hasNext();) {
+            DataMap setting = (DataMap) iter.next();
+            processSetting(setting);
+        }
+    }
+    
+    // package private methods ----------------------------------------------
+    
+    static void doTest(TestFmwk test, RuleBasedCollator col, String source, 
+                       String target, int result)
+    {
+        doTestVariant(test, col, source, target, result);
+        if (result == -1) {
+            doTestVariant(test, col, target, source, 1);
+        } 
+        else if (result == 1) {
+            doTestVariant(test, col, target, source, -1);
+        }
+        else {
+            doTestVariant(test, col, target, source, 0);
+        }
+
+        CollationElementIterator iter = col.getCollationElementIterator(source);
+        backAndForth(test, iter);
+        iter.setText(target);
+        backAndForth(test, iter);
+    }
+    
+    /**
+     * Return an integer array containing all of the collation orders
+     * returned by calls to next on the specified iterator
+     */
+    static int[] getOrders(CollationElementIterator iter) 
+    {
+        int maxSize = 100;
+        int size = 0;
+        int[] orders = new int[maxSize];
+        
+        int order;
+        while ((order = iter.next()) != CollationElementIterator.NULLORDER) {
+            if (size == maxSize) {
+                maxSize *= 2;
+                int[] temp = new int[maxSize];
+                System.arraycopy(orders, 0, temp,  0, size);
+                orders = temp;
+            }
+            orders[size++] = order;
+        }
+        
+        if (maxSize > size) {
+            int[] temp = new int[size];
+            System.arraycopy(orders, 0, temp,  0, size);
+            orders = temp;
+        }
+        return orders;
+    }
+    
+    static void backAndForth(TestFmwk test, CollationElementIterator iter) 
+    {
+        // Run through the iterator forwards and stick it into an array
+        iter.reset();
+        int[] orders = getOrders(iter);
+    
+        // Now go through it backwards and make sure we get the same values
+        int index = orders.length;
+        int o;
+    
+        // reset the iterator
+        iter.reset();
+    
+        while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+            if (o != orders[--index]) {
+                if (o == 0) {
+                    index ++;
+                } else {
+                    while (index > 0 && orders[index] == 0) {
+                        index --;
+                    } 
+                    if (o != orders[index]) {
+                        test.errln("Mismatch at index " + index + ": 0x" 
+                            + Integer.toHexString(orders[index]) + " vs 0x" + Integer.toHexString(o));
+                        break;
+                    }
+                }
+            }
+        }
+    
+        while (index != 0 && orders[index - 1] == 0) {
+          index --;
+        }
+    
+        if (index != 0) {
+            String msg = "Didn't get back to beginning - index is ";
+            test.errln(msg + index);
+    
+            iter.reset();
+            test.err("next: ");
+            while ((o = iter.next()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                test.err(hexString);
+            }
+            test.errln("");
+            test.err("prev: ");
+            while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                 test.err(hexString);
+            }
+            test.errln("");
+        }
+    }
+    
+    // private data members --------------------------------------------------
+
+    private String m_sequence_;
+    private int m_sequenceIndex_;
+    private String m_source_;
+    private StringBuffer m_target_ = new StringBuffer();
+    private int m_nextRelation_;
+    private int m_relation_;
+
+    // private methods -------------------------------------------------------
+
+    private void processSetting(DataMap settings) {
+        RuleBasedCollator col = null;
+        // ok i have to be careful here since it seems like we can have
+        // multiple locales for each test
+        String locale = settings.getString("TestLocale");
+        
+        if (locale != null) {
+            // this is a case where we have locale
+            try {
+                Locale l = LocaleUtility.getLocaleFromName(locale);
+                col = (RuleBasedCollator)Collator.getInstance(l);
+            }catch (MissingResourceException e){
+                warnln("Could not load the locale data for locale " + locale);
+            }catch (Exception e) {
+                errln("Error creating collator for locale " + locale);
+            }
+            logln("Testing collator for locale " + locale);
+            processSetting2(settings, col);
+        }
+        String rules = settings.getString("Rules");
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test
+        if (rules != null) {
+            // here we deal with rules
+            try {
+                col = new RuleBasedCollator(rules);
+            }catch (MissingResourceException e){
+        warnln("Could not load the locale data: " + e.getMessage());
+            } catch (Exception e) {
+                errln("Error creating collator for rules " + rules);
+            }
+            processSetting2(settings, col);
+        }
+    }
+
+    private void processSetting2(DataMap settings,RuleBasedCollator col)
+    {
+
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test
+        String arguments = settings.getString("Arguments");
+        if (arguments != null) {
+            handleArguments(col, arguments);
+        }
+        processTestCases(col);
+    }
+
+    /**
+     * Reads the options string and sets appropriate attributes in collator
+     */
+    private void handleArguments(RuleBasedCollator col, String argument) {
+        int i = 0;
+        boolean printInfo = false;
+        while (i < argument.length()) {
+            if (!UCharacter.isWhitespace(argument.charAt(i))) {
+                // eat whitespace
+                break;
+            }
+            i ++;
+        }
+        while (i < argument.length()) {
+            // skip opening '['
+            if (argument.charAt(i) == '[') {
+                i ++;
+            }
+            else {
+                if(!isModularBuild()){
+                    errln("Error in collation arguments, missing ["); // no opening '['
+                }
+                // !!! following line has no effect
+                printInfo=true;
+                return;
+            }
+
+            int value = argument.indexOf(' ', i);
+            String option = argument.substring(i, value);
+            i = argument.indexOf(']', value);
+            String optionvalue = argument.substring(value + 1, i);
+            i ++;
+            // some options are not added because they have no public apis yet
+            // TODO add the rest of the options
+            if (option.equalsIgnoreCase("alternate")) {
+                if (optionvalue.equalsIgnoreCase("non-ignorable")) {
+                    col.setAlternateHandlingShifted(false);
+                }
+                else {
+                    col.setAlternateHandlingShifted(true);
+                }
+            }
+            else if (option.equals("strength")) {
+                if (optionvalue.equalsIgnoreCase("1")) {
+                    col.setStrength(Collator.PRIMARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("2")) {
+                    col.setStrength(Collator.SECONDARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("3")) {
+                    col.setStrength(Collator.TERTIARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("4")) {
+                    col.setStrength(Collator.QUATERNARY);
+                }
+            }
+        }
+        if (printInfo) {
+            warnln("Could not load the locale data. Skipping...");
+        }
+        // !!! effect is odd, if no modular build, this emits no
+        // message at all.  How come?  Hmmm.  printInfo is never
+        // true if we get here, so this code is never executed.
+        /*
+        if(printInfo == true && isModularBuild()){
+            infoln("Could not load the locale data. Skipping...");
+        }
+        */
+    }
+
+    private void processTestCases(RuleBasedCollator col) {
+        for (Iterator iter = t.getDataIterator(); iter.hasNext();) {
+            DataMap e1 =  (DataMap) iter.next();
+            processSequence(col, e1.getString("sequence"));
+     }
+    }
+
+    private void processSequence(RuleBasedCollator col, String sequence) {
+        // TODO: have a smarter tester that remembers the sequence and ensures
+        // that the complete sequence is in order. That is why I have made a
+        // constraint in the sequence format.
+        m_sequence_ = sequence;
+        m_sequenceIndex_ = 0;
+        m_nextRelation_ = -1;
+        m_target_.delete(0, m_target_.length());
+        Vector vector = new Vector();
+        int lastsmallerthanindex = -1;
+        getNextInSequence();
+        while (getNextInSequence()) {
+            String target = m_target_.toString();
+            doTest(this, col, m_source_, target, m_relation_);
+            int vsize = vector.size();
+            for (int i = vsize - 1; i >= 0; i --) {
+                String source = (String)vector.elementAt(i);
+                if (i > lastsmallerthanindex) {
+                    doTest(this, col, source, target, m_relation_);
+                }
+                else {
+                    doTest(this, col, source, target, -1);
+                }
+            }
+            vector.addElement(target);
+            if (m_relation_ < 0) {
+                lastsmallerthanindex = vsize - 1;
+            }
+        }
+    }
+
+    /**
+     * Parses the sequence to be tested
+     */
+    private boolean getNextInSequence() {
+        if (m_sequenceIndex_ >= m_sequence_.length()) {
+            return false;
+        }
+
+        boolean quoted = false;
+        boolean quotedsingle = false;
+        boolean done = false;
+        int i = m_sequenceIndex_;
+        int offset = 0;
+        m_source_ = m_target_.toString();
+        m_relation_ = m_nextRelation_;
+        m_target_.delete(0, m_target_.length());
+        while (i < m_sequence_.length() && !done) {
+            int ch = UTF16.charAt(m_sequence_, i);
+            if (UCharacter.isSupplementary(ch)) {
+                i += 2;
+            }
+            else {
+                i ++;
+            }
+            if (!quoted) {
+                if (UCharacter.isWhitespace(ch)) {
+                    continue;
+                }
+                switch (ch) {
+                    case 0x003C : // <
+                        m_nextRelation_ = -1;
+                        done = true;
+                        break;
+                    case 0x003D : // =
+                        m_nextRelation_ = 0;
+                        done = true;
+                        break;
+                    case 0x003E : // >
+                        m_nextRelation_ = 1;
+                        done = true;
+                        break;
+                    case 0x0027 : // ' very basic quoting
+                        quoted = true;
+                        quotedsingle = false;
+                        break;
+                    case 0x005c : // \ single quote
+                        quoted = true;
+                        quotedsingle = true;
+                        break;
+                    default:
+                        UTF16.insert(m_target_, offset, ch);
+                        if (UCharacter.isSupplementary(ch)) {
+                            offset += 2;
+                        }
+                        else {
+                            offset ++;
+                        }
+                    }
+                }
+                else {
+                      if (ch == 0x0027) {
+                          quoted = false;
+                      }
+                      else {
+                          UTF16.insert(m_target_, offset, ch);
+                          if (UCharacter.isSupplementary(ch)) {
+                              offset += 2;
+                          }
+                          else {
+                              offset ++;
+                          }
+                      }
+                      if (quotedsingle) {
+                          quoted = false;
+                      }
+                }
+          }
+          if (quoted == true) {
+              errln("Quote in sequence not closed!");
+              return false;
+          }
+
+
+          m_sequenceIndex_ = i;
+          return true;
+    }
+
+    private static void doTestVariant(TestFmwk test, 
+                                      RuleBasedCollator myCollation,
+                                      String source, String target, int result)
+    {
+        boolean printInfo = false;
+        int compareResult  = myCollation.compare(source, target);
+        if (compareResult != result) {
+            
+            // !!! if not mod build, error, else nothing.
+            // warnln if not build, error, else always print warning.
+            // do we need a 'quiet warning?' (err or log).  Hmmm,
+            // would it work to have the 'verbose' flag let you 
+            // suppress warnings?  Are there ever some warnings you
+            // want to suppress, and others you don't?
+            if(!test.isModularBuild()){
+                test.errln("Comparing \"" + Utility.hex(source) + "\" with \""
+                           + Utility.hex(target) + "\" expected " + result
+                           + " but got " + compareResult);
+            }else{
+                printInfo = true;
+            }
+        }
+        CollationKey ssk = myCollation.getCollationKey(source);
+        CollationKey tsk = myCollation.getCollationKey(target);
+        compareResult = ssk.compareTo(tsk);
+        if (compareResult != result) {
+            
+            if(!test.isModularBuild()){
+                test.errln("Comparing CollationKeys of \"" + Utility.hex(source) 
+                           + "\" with \"" + Utility.hex(target) 
+                           + "\" expected " + result + " but got " 
+                           + compareResult);
+           }else{
+               printInfo = true;
+           }
+        }
+        RawCollationKey srsk = new RawCollationKey();
+        myCollation.getRawCollationKey(source, srsk);
+        RawCollationKey trsk = new RawCollationKey();
+        myCollation.getRawCollationKey(target, trsk);
+        compareResult = ssk.compareTo(tsk);
+        if (compareResult != result) {
+            
+            if(!test.isModularBuild()){
+                test.errln("Comparing RawCollationKeys of \"" 
+                           + Utility.hex(source) 
+                           + "\" with \"" + Utility.hex(target) 
+                           + "\" expected " + result + " but got " 
+                           + compareResult);
+           }else{
+               printInfo = true;
+           }
+        }
+        // hmmm, but here we issue a warning
+        // only difference is, one warning or two, and detailed info or not?
+        // hmmm, does seem preferable to omit detail if we know it is due to missing resource data.
+        // well, if we label the errors as warnings, we can let people know the details, but
+        // also know they may be due to missing resource data.  basically this code is asserting
+        // that the errors are due to missing resource data, which may or may not be true.
+        if (printInfo) {
+            test.warnln("Could not load locale data skipping.");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
new file mode 100644
index 0000000..c2d472e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
@@ -0,0 +1,355 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Comparator;
+import java.util.Arrays;
+import java.io.*;
+
+public class CollationThaiTest extends TestFmwk {
+    
+    final int MAX_FAILURES_TO_SHOW = -1;
+    
+    public static void main(String[] args) throws Exception {
+        new CollationThaiTest().run(args);
+    }
+    
+    /**
+     * Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
+     * by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
+     */
+    public void TestCornerCases() {
+        String TESTS[] = {
+            // Shorter words precede longer
+            "\u0e01",                               "<",    "\u0e01\u0e01",
+    
+            // Tone marks are considered after letters (i.e. are primary ignorable)
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e49\u0e32",
+    
+            // ditto for other over-marks
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e4c",
+    
+            // commonly used mark-in-context order.
+            // In effect, marks are sorted after each syllable.
+            "\u0e01\u0e32\u0e01\u0e49\u0e32",   "<",    "\u0e01\u0e48\u0e32\u0e01\u0e49\u0e32",
+    
+            // Hyphens and other punctuation follow whitespace but come before letters
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32-",
+            "\u0e01\u0e32-",                       "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // Doubler follows an indentical word without the doubler
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e46",
+            "\u0e01\u0e32\u0e46",                 "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // \u0e45 after either \u0e24 or \u0e26 is treated as a single
+            // combining character, similar to "c < ch" in traditional spanish.
+            // TODO: beef up this case
+            "\u0e24\u0e29\u0e35",                 "<",    "\u0e24\u0e45\u0e29\u0e35",
+            "\u0e26\u0e29\u0e35",                 "<",    "\u0e26\u0e45\u0e29\u0e35",
+    
+            // Vowels reorder, should compare \u0e2d and \u0e34
+            "\u0e40\u0e01\u0e2d",                 "<",    "\u0e40\u0e01\u0e34",
+    
+            // Tones are compared after the rest of the word (e.g. primary ignorable)
+            "\u0e01\u0e32\u0e01\u0e48\u0e32",   "<",    "\u0e01\u0e49\u0e32\u0e01\u0e32",
+    
+            // Periods are ignored entirely
+            "\u0e01.\u0e01.",                      "<",    "\u0e01\u0e32",
+        };
+        
+        RuleBasedCollator coll = null;
+        try {
+            coll = getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        compareArray(coll, TESTS); 
+    }
+    
+    void compareArray(RuleBasedCollator c, String[] tests) {
+        for (int i = 0; i < tests.length; i += 3) {
+            int expect = 0;
+            if (tests[i+1].equals("<")) {
+                expect = -1;
+            } else if (tests[i+1].equals(">")) {
+                expect = 1;
+            } else if (tests[i+1].equals("=")) {
+                expect = 0;
+            } else {
+                // expect = Integer.decode(tests[i+1]).intValue();
+                errln("Error: unknown operator " + tests[i+1]);
+                return;
+            }
+            String s1 = tests[i];
+            String s2 = tests[i+2];
+            CollationTest.doTest(this, c, s1, s2, expect);
+        }
+    }
+    
+    int sign(int i ) {
+        if (i < 0) return -1;
+        if (i > 0) return 1;
+        return 0;
+    }
+    
+    /**
+     * Read the external dictionary file, which is already in proper
+     * sorted order, and confirm that the collator compares each line as
+     * preceding the following line.
+     */
+    public void TestDictionary() {
+        RuleBasedCollator coll = null;
+        try {
+            coll = getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+     
+        // Read in a dictionary of Thai words
+        BufferedReader in = null;
+        String fileName = "riwords.txt";
+        try {
+            in = TestUtil.getDataReader(fileName, "UTF-8");
+        } catch (SecurityException e) {
+            warnln("Security exception encountered reading test data file.");
+                   return;
+        } catch (Exception e) {
+            try {
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ioe) {}
+            errln("Error: could not open test file: " + fileName 
+                  + ". Aborting test.");
+            return;        
+        }
+    
+        //
+        // Loop through each word in the dictionary and compare it to the previous
+        // word.  They should be in sorted order.
+        //
+        String lastWord = "";
+        int line = 0;
+        int failed = 0;
+        int wordCount = 0;
+        try {
+        String word = in.readLine();
+        while (word != null) {
+            line++;
+             
+            // Skip comments and blank lines
+            if (word.length() == 0 || word.charAt(0) == 0x23) {
+                word = in.readLine();
+                continue;
+            }
+    
+            // Show the first 8 words being compared, so we can see what's happening
+            ++wordCount;
+            if (wordCount <= 8) {
+                logln("Word " + wordCount + ": " + word);
+            }
+    
+            if (lastWord.length() > 0) {
+                CollationTest.doTest(this, coll, lastWord, word, -1);
+                int result = coll.compare(lastWord, word); 
+        
+                if (result >= 0) {
+                    failed++;
+                    if (MAX_FAILURES_TO_SHOW < 0 || failed <= MAX_FAILURES_TO_SHOW) {
+                        String msg = "--------------------------------------------\n"
+                                    + line
+                                    + " compare(" + lastWord
+                                    + ", " + word + ") returned " + result
+                                    + ", expected -1\n";
+                        CollationKey k1, k2;
+                        try {
+                            k1 = coll.getCollationKey(lastWord);
+                            k2 = coll.getCollationKey(word);
+                        } catch (Exception e) {
+                            errln("Fail: getCollationKey returned ");
+                            return;
+                        }
+                        msg += "key1: " + prettify(k1) + "\n"
+                                    + "key2: " + prettify(k2);
+                        errln(msg);
+                    }
+                }
+            }
+            lastWord = word;
+            word = in.readLine();
+        }
+        } catch (IOException e) {
+            errln("IOException " + e.getMessage());
+        }
+    
+        if (failed != 0) {
+            if (failed > MAX_FAILURES_TO_SHOW) {
+                errln("Too many failures; only the first " +
+                      MAX_FAILURES_TO_SHOW + " failures were shown");
+            }
+            errln("Summary: " + failed + " of " + (line - 1) +
+                  " comparisons failed");
+        }
+    
+        logln("Words checked: " + wordCount);
+    }
+    
+    public void TestInvalidThai() 
+    {
+        String tests[] = { "\u0E44\u0E01\u0E44\u0E01",
+                           "\u0E44\u0E01\u0E01\u0E44",
+                           "\u0E01\u0E44\u0E01\u0E44",
+                           "\u0E01\u0E01\u0E44\u0E44",
+                           "\u0E44\u0E44\u0E01\u0E01",
+                           "\u0E01\u0E44\u0E44\u0E01",
+                         };
+     
+        RuleBasedCollator collator;
+        StrCmp comparator;
+        try {
+            collator = getThaiCollator();
+            comparator = new StrCmp();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        
+        Arrays.sort(tests, comparator);
+     
+        for (int i = 0; i < tests.length; i ++)
+        {
+            for (int j = i + 1; j < tests.length; j ++) {
+                if (collator.compare(tests[i], tests[j]) > 0) {
+                    // inconsistency ordering found!
+                    errln("Inconsistent ordering between strings " + i 
+                          + " and " + j);
+                }
+            }
+            CollationElementIterator iterator 
+                = collator.getCollationElementIterator(tests[i]);
+            CollationTest.backAndForth(this, iterator);
+        }
+    }
+    
+    public void TestReordering() 
+    {
+        String tests[] = {
+            "\u0E41c\u0301",      "=", "\u0E41\u0107", // composition
+            "\u0E41\uD835\uDFCE", "<", "\u0E41\uD835\uDFCF", // supplementaries
+            "\u0E41\uD834\uDD5F", "=", "\u0E41\uD834\uDD58\uD834\uDD65", // supplementary composition decomps to supplementary
+            "\u0E41\uD87E\uDC02", "=", "\u0E41\u4E41", // supplementary composition decomps to BMP
+            "\u0E41\u0301",       "=", "\u0E41\u0301", // unsafe (just checking backwards iteration)
+            "\u0E41\u0301\u0316", "=", "\u0E41\u0316\u0301",
+
+            "abc\u0E41c\u0301",      "=", "abc\u0E41\u0107", // composition
+            "abc\u0E41\uD834\uDC00", "<", "abc\u0E41\uD834\uDC01", // supplementaries
+            "abc\u0E41\uD834\uDD5F", "=", "abc\u0E41\uD834\uDD58\uD834\uDD65", // supplementary composition decomps to supplementary
+            "abc\u0E41\uD87E\uDC02", "=", "abc\u0E41\u4E41", // supplementary composition decomps to BMP
+            "abc\u0E41\u0301",       "=", "abc\u0E41\u0301", // unsafe (just checking backwards iteration)
+            "abc\u0E41\u0301\u0316", "=", "abc\u0E41\u0316\u0301",
+
+            "\u0E41c\u0301abc",      "=", "\u0E41\u0107abc", // composition
+            "\u0E41\uD834\uDC00abc", "<", "\u0E41\uD834\uDC01abc", // supplementaries
+            "\u0E41\uD834\uDD5Fabc", "=", "\u0E41\uD834\uDD58\uD834\uDD65abc", // supplementary composition decomps to supplementary
+            "\u0E41\uD87E\uDC02abc", "=", "\u0E41\u4E41abc", // supplementary composition decomps to BMP
+            "\u0E41\u0301abc",       "=", "\u0E41\u0301abc", // unsafe (just checking backwards iteration)
+            "\u0E41\u0301\u0316abc", "=", "\u0E41\u0316\u0301abc",
+
+            "abc\u0E41c\u0301abc",      "=", "abc\u0E41\u0107abc", // composition
+            "abc\u0E41\uD834\uDC00abc", "<", "abc\u0E41\uD834\uDC01abc", // supplementaries
+            "abc\u0E41\uD834\uDD5Fabc", "=", "abc\u0E41\uD834\uDD58\uD834\uDD65abc", // supplementary composition decomps to supplementary
+            "abc\u0E41\uD87E\uDC02abc", "=", "abc\u0E41\u4E41abc", // supplementary composition decomps to BMP
+            "abc\u0E41\u0301abc",       "=", "abc\u0E41\u0301abc", // unsafe (just checking backwards iteration)
+            "abc\u0E41\u0301\u0316abc", "=", "abc\u0E41\u0316\u0301abc",
+        };
+
+        RuleBasedCollator collator;
+        try {
+            collator = (RuleBasedCollator)getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        compareArray(collator, tests);
+    
+        String rule = "& c < ab";
+        String testcontraction[] = { "\u0E41ab", ">", "\u0E41c"};
+        try {
+            collator = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Error: could not construct collator with rule " + rule);
+            return;
+        }
+        compareArray(collator, testcontraction);
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    // private inner class -------------------------------------------------
+    
+    private static final class StrCmp implements Comparator 
+    {
+        public int compare(Object string1, Object string2) 
+        {
+            return collator.compare(string1, string2);
+        }
+        
+        StrCmp() throws Exception
+        {
+            collator = getThaiCollator();
+        }
+        
+        Collator collator;
+    }
+    
+    // private data members ------------------------------------------------
+    
+    private static RuleBasedCollator m_collator_;
+    
+    // private methods -----------------------------------------------------
+    
+    private static RuleBasedCollator getThaiCollator() throws Exception
+    {
+        if (m_collator_ == null) {
+            m_collator_ = (RuleBasedCollator)Collator.getInstance(
+                                                new Locale("th", "TH", ""));
+        }
+        return m_collator_;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java b/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
new file mode 100644
index 0000000..ff78c40
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.util.Random;
+
+public class CollationThreadTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationThreadTest().run(args);
+    }
+
+    private final String[] threadTestData = {
+        "Banc Se\u00F3kdyaaouq Pfuymjec",
+        "BSH \u00F3y",
+        "ABB - \u00F3g",
+        "G\u00F3kpo Adhdoetpwtx Twxma, qm. Ilnudx",
+        "G\u00F3bjh Zcgopqmjidw Dyhlu, ky. Npyamr",
+        "G\u00F3dxb Slfduvgdwfi Qhreu, ao. Adyfqx",
+        "G\u00F3ten Emrmbmttgne Rtpir, rx. Mgmpjy",
+        "G\u00F3kjo Hciqkymfcds Jpudo, ti. Ueceedbm (tkvyj vplrnpoq)",
+        "Przjrpnbhrflnoo Dbiccp Lnmikfhsuo\u00F3s Tgfhlpqoso / ZAD ENR",
+        "Bang Nbygmoyc Nd\u00F3nipcryjtzm",
+        "Citjk\u00EBd Qgmgvr Er. w u.x.",
+        "Dyrscywp Kvoifmyxo Ivv\u00F3r Lbyxtrwnzp",
+        "G\u00E9awk Ssqenl Pk. c r.g.",
+        "Nesdo\u00E9 Ilwbay Z.U.",
+        "Poczsb Lrdtqg",
+        "Pocafu Tgbmpn - wwg zo Mpespnzdllqk",
+        "Polyvmg Z.C.",
+        "POLUHONANQ FO",
+        "Polrpycn",
+        "Poleeaw-Rqzghgnnj R.W.",
+        "Polyto Sgrgcvncz",
+        "Polixj Tyfc\u00F3vcga Gbkjxf\u00F3f Tuogcybbbkyd C.U.",
+        "Poltmzzlrkwt",
+        "Polefgb Oiqefrkq",
+        "Polrfdk K\u00F3nvyrfot Xuzbzzn f Ujmfwkdbnzh E.U. Wxkfiwss",
+        "Polxtcf Hfowus Zzobblfm N.I.",
+        "POLJNXO ZVYU L.A.",
+        "PP Lowyr Rmknyoew",
+        "Pralpe",
+        "Preyojy Qnrxr",
+        "PRK -5",
+        "PRONENC U.P.",
+        "Prowwyq & Relnda Hxkvauksnn Znyord Tz. w t.o.",
+        "Propydv Afobbmhpg",
+        "Proimpoupvp",
+        "Probfo Hfttyr",
+        "Propgi Lutgumnj X.W. BL",
+        "Prozkch K.E.",
+        "Progiyvzr Erejqk T.W.",
+        "Prooxwq-Ydglovgk J.J.",
+        "PTU Ntcw Lwkxjk S.M. UYF",
+        "PWN",
+        "PWP",
+        "PZU I.D. Tlpzmhax",
+        "PZU ioii A.T. Yqkknryu - bipdq badtg 500/9",
+        "Qumnl-Udffq",
+        "Radmvv",
+        "Railoggeqd Aewy Fwlmsp K.S. Ybrqjgyr",
+        "Remhmxkx Ewuhxbg",
+        "Renafwp Sapnqr io v z.n.",
+        "Repqbpuuo",
+        "Resflig",
+        "Rocqz Mvwftutxozs VQ",
+        "Rohkui",
+        "RRC",
+        "Samgtzg Fkbulcjaaqv Ollllq Ad. l l.v.",
+        "Schelrlw Fu. t z.x.",
+        "Schemxgoc Axvufoeuh",
+        "Siezsxz Eb. n r.h",
+        "Sikj Wyvuog",
+        "Sobcwssf Oy. q o.s. Kwaxj",
+        "Sobpxpoc Fb. w q.h. Elftx",
+        "Soblqeqs Kpvppc RH - tbknhjubw siyaenc Njsjbpx Buyshpgyv",
+        "Sofeaypq FJ",
+        "Stacyok Qurqjw Hw. f c.h.",
+        "STOWN HH",
+        "Stopjhmq Prxhkakjmalkvdt Weqxejbyig Wgfplnvk D.C.",
+        "STRHAEI Clydqr Ha. d z.j.",
+        "Sun Clvaqupknlk",
+        "TarfAml",
+        "Tchukm Rhwcpcvj Cc. v y.a.",
+        "Teco Nyxm Rsvzkx pm. J a.t.",
+        "Tecdccaty",
+        "Telruaet Nmyzaz Twwwuf",
+        "Tellrwihv Xvtjle N.U.",
+        "Telesjedc Boewsx A.F",
+        "tellqfwiqkv dinjlrnyit yktdhlqquihzxr (ohvso)",
+        "Tetft Kna Ab. j l.z.",
+        "Thesch",
+        "Totqucvhcpm Gejxkgrz Is. e k.i.",
+        "Towajgixetj Ngaayjitwm fj csxm Mxebfj Sbocok X.H.",
+        "Toyfon Meesp Neeban Jdsjmrn sz v z.w.",
+        "TRAJQ NZHTA Li. n x.e. - Vghfmngh",
+        "Triuiu",
+        "Tripsq",
+        "TU ENZISOP ZFYIPF V.U.",
+        "TUiX Kscdw G.G.",
+        "TVN G.A.",
+        "Tycd",
+        "Unibjqxv rdnbsn - ZJQNJ XCG / Wslqfrk",
+        "Unilcs - hopef ps 20 nixi",
+        "UPC Gwwmru Ds. g o.r.",
+        "Vaidgoav",
+        "Vatyqzcgqh Kjnnsy GQ WT",
+        "Volhz",
+        "Vos Jviggogjt Iyqhlm Ih. w j.y. (fbshoihdnb)",
+        "WARMFC E.D.",
+        "Wincqk Pqadskf",
+        "WKRD",
+        "Wolk Pyug",
+        "WPRV",
+        "WSiI",
+        "Wurag XZ",
+        "Zacrijl B.B.",
+        "Zakja Tziaboysenum Squlslpp - Diifw V.D.",
+        "Zakgat Meqivadj Nrpxlekmodx s Bbymjozge W.Y.",
+        "Zjetxpbkpgj Mmhhgohasjtpkjd Uwucubbpdj K.N.",
+        "ZREH"
+    };
+
+    public void testThreads() {
+        final Collator theCollator = Collator.getInstance(new Locale("pl", "", ""));
+        final String[] theData = threadTestData;
+        final Random r = new Random();
+
+        class Control {
+            private boolean go;
+            private String fail;
+
+            synchronized void start() {
+                go = true;
+                notifyAll();
+            }
+
+            synchronized void stop() {
+                go = false;
+                notifyAll();
+            }
+
+            boolean go() {
+                return go;
+            }
+
+            void fail(String msg) {
+                fail = msg;
+                stop();
+            }
+        }
+
+        final Control control = new Control();
+
+        class Test implements Runnable {
+            private String[] data;
+            private Collator collator;
+            private String name;
+
+            Test(String name) {
+                this.name = name;
+
+                try {
+                    data = (String[]) theData.clone();
+                    collator = (Collator) theCollator.clone();
+                } catch (CloneNotSupportedException e) {
+                    // should not happen, if it does we'll get an exception right away
+                    errln("could not clone");
+                    data = null;
+                    collator = null;
+                }
+            }
+
+            public void run() {
+                try {
+                    synchronized (control) {
+                        while (!control.go()) {
+                            control.wait();
+                        }
+                    }
+
+                    while (control.go()) {
+                        scramble();
+                        sort();
+                    }
+                } catch (InterruptedException e) {
+                    // die
+                } catch (IndexOutOfBoundsException e) {
+                    control.fail(name + " " + e.getMessage());
+                }
+            }
+
+            private void scramble() {
+                for (int i = 0; i < data.length; ++i) {
+                    int ix = r.nextInt(data.length);
+                    String s = data[i];
+                    data[i] = data[ix];
+                    data[ix] = s;
+                }
+            }
+
+            private void sort() {
+                Arrays.sort(data, collator);
+            }
+        }
+
+        Thread[] threads = new Thread[10];
+        for (int i = 0; i < threads.length; ++i) {
+            threads[i] = new Thread(new Test("test " + i));
+            threads[i].start();
+        }
+
+        try {
+            control.start();
+
+            long stopTime = System.currentTimeMillis() + 5000;
+            do {
+                Thread.sleep(100);
+            } while (control.go() && System.currentTimeMillis() < stopTime);
+
+            control.stop();
+
+            for (int i = 0; i < threads.length; ++i) {
+                threads[i].join();
+            }
+        } catch (InterruptedException e) {
+            // die
+        }
+
+        if (control.fail != null) {
+            errln(control.fail);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
new file mode 100644
index 0000000..2b8dd62
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
@@ -0,0 +1,188 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationTurkishTest
+ * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationTurkishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationTurkishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x73, 0x0327},
+        {0x76, 0x00E4, 0x74},
+        {0x6f, 0x6c, 0x64},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x68, 0x011E, 0x61, 0x6c, 0x74},
+        {0x73, 0x74, 0x72, 0x65, 0x73, 0x015E},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x75, 0x0308},
+        {0x76, 0x62, 0x74},
+        {0x00D6, 0x61, 0x79},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x68, 0x61, 0x6c, 0x74},
+        {0x015E, 0x74, 0x72, 0x65, 0x015E, 0x73},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        1,
+    // test priamry > 8
+        -1,
+        -1,
+        1
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationTurkishTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new Locale("tr", ""));
+    }
+    
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 8 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 8; i < 11; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    
+    // main test routine, tests rules specific to turkish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/G7CollationTest.java b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
new file mode 100644
index 0000000..f8d9768
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
@@ -0,0 +1,292 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/G7CollationTest
+ * Source File: $ICU4CRoot/source/test/intltest/g7coll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class G7CollationTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new G7CollationTest().run(args);
+        // new G7CollationTest().TestDemo3();
+    }
+    
+    private static String[] testCases = {
+        "blackbirds", "Pat", "p\u00E9ch\u00E9", "p\u00EAche", "p\u00E9cher",            
+        "p\u00EAcher", "Tod", "T\u00F6ne", "Tofu", "blackbird", "Ton", 
+        "PAT", "black-bird", "black-birds", "pat", // 14
+        // Additional tests
+        "czar", "churo", "cat", "darn", "?",                                                                                /* 19 */
+        "quick", "#", "&", "a-rdvark", "aardvark",                                                        /* 23 */
+        "abbot", "co-p", "cop", "coop", "zebra"
+    };
+
+    private static int[][] results = {
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_US */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_GB */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_FR */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* de_DE */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* it_IT */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* ja_JP */
+        /* new table collation with rules "& Z < p, P"  loop to FIXEDTESTSET */
+        { 12, 13, 9, 0, 6, 8, 10, 7, 14, 1, 11, 2, 3, 4, 5, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, 
+        /* new table collation with rules "& C < ch , cH, Ch, CH " loop to TOTALTESTSET */
+        { 19, 22, 21, 23, 24, 25, 12, 13, 9, 0, 17, 26, 28, 27, 15, 16, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 },
+        /* new table collation with rules "& Question-mark ; ? & Hash-mark ; # & Ampersand ; '&'  " loop to TOTALTESTSET */
+        { 23, 24, 25, 22, 12, 13, 9, 0, 17, 16, 26, 28, 27, 15, 18, 21, 14, 1, 11, 2, 3, 4, 5, 19, 20, 6, 8, 10, 7, 29 },
+        /* analogous to Japanese rules " & aa ; a- & ee ; e- & ii ; i- & oo ; o- & uu ; u- " */  /* loop to TOTALTESTSET */
+        { 19, 22, 21, 24, 23, 25, 12, 13, 9, 0, 17, 16, 28, 26, 27, 15, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 }
+    };
+    
+    //private static final int MAX_TOKEN_LEN = 16;
+    //private static final int TESTLOCALES = 12;
+    private static final int FIXEDTESTSET = 15;
+    private static final int TOTALTESTSET = 30;
+    
+    // perform test with added rules " & Z < p, P"
+    public void TestDemo1() {
+        logln("Demo Test 1 : Create a new table collation with rules \"& Z < p, P\"");
+        
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & Z < p, P";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch(Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }
+        
+        int j, n;
+        for (j = 0; j < FIXEDTESTSET; j++) {
+            for (n = j+1; n < FIXEDTESTSET; n++) {
+                doTest(myCollation, testCases[results[8][j]], testCases[results[8][n]], -1);
+            }
+        }
+    }
+    
+
+    // perorm test with added rules "& C < ch , cH, Ch, CH"
+    public void TestDemo2() {
+        logln("Demo Test 2 : Create a new table collation with rules \"& C < ch , cH, Ch, CH\"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& C < ch , cH, Ch, CH";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[9][j]], testCases[results[9][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'"
+    public void TestDemo3() {
+        // logln("Demo Test 3 : Create a new table collation with rules \"& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'\"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[10][j]], testCases[results[10][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' "
+    public void TestDemo4() {
+        logln("Demo Test 4 : Create a new table collation with rules \" & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' \"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[11][j]], testCases[results[11][n]], -1);
+            }
+        }
+    }
+    
+    public void TestG7Data() {
+        Locale locales[] = {
+                Locale.US,
+                Locale.UK,
+                Locale.CANADA,
+                Locale.FRANCE,
+                Locale.CANADA_FRENCH,
+                Locale.GERMANY,
+                Locale.JAPAN,
+                Locale.ITALY
+            };
+        int i = 0, j = 0;
+        for (i = 0; i < locales.length; i++) {
+            Collator myCollation= null;
+            RuleBasedCollator tblColl1 = null;
+            try {
+                myCollation = Collator.getInstance(locales[i]);
+                tblColl1 = new RuleBasedCollator(((RuleBasedCollator)myCollation).getRules());
+            } catch (Exception foo) {
+                warnln("Exception: " + foo.getMessage() +
+                      "; Locale : " + locales[i].getDisplayName() + " getRules failed");
+                continue;
+            }
+            for (j = 0; j < FIXEDTESTSET; j++) {
+                for (int n = j+1; n < FIXEDTESTSET; n++) {
+                    doTest(tblColl1, testCases[results[i][j]], testCases[results[i][n]], -1);
+                }
+            }
+            myCollation = null;
+        }
+    }
+    
+    
+    // main test routine, tests comparisons for a set of strings against sets of expected results
+    private void doTest(Collator myCollation, String source, String target, 
+                        int result){
+        
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(source);
+        sortKey2 = myCollation.getCollationKey(target);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(source, target, sortKey1, sortKey2, compareResult, 
+                      keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+   String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java b/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
new file mode 100644
index 0000000..3316a4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
@@ -0,0 +1,84 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.IndexCharacters;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author markdavis
+ *
+ */
+public class IndexCharactersTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new IndexCharactersTest().run(args);
+    }
+
+    public void TestBasics() {
+        ULocale[] list = ULocale.getAvailableLocales();
+        // get keywords combinations
+        // don't bother with multiple combinations at this poin
+        List keywords = new ArrayList();
+        keywords.add("");
+
+        String[] collationValues = Collator.getKeywordValues("collation");
+        for (int j = 0; j < collationValues.length; ++j) {
+            keywords.add("@collation=" + collationValues[j]);
+        }
+        
+        for (int i = 0; i < list.length; ++i) {
+            for (Iterator it = keywords.iterator(); it.hasNext();) {
+                String collationValue = (String) it.next();
+                ULocale locale = new ULocale(list[i].toString() + collationValue);
+                if (collationValue.length() > 0 && !Collator.getFunctionalEquivalent("collation", locale).equals(locale)) {
+                    //logln("Skipping " + locale);
+                    continue;
+                }
+
+                if (locale.getCountry().length() != 0) {
+                    continue;
+                }
+                IndexCharacters indexCharacters = new IndexCharacters(locale);
+                final Collection mainChars = indexCharacters.getIndexCharacters();
+                String mainCharString = mainChars.toString();
+                if (mainCharString.length() > 500) {
+                    mainCharString = mainCharString.substring(0,500) + "...";
+                }
+                logln(mainChars.size() + "\t" + locale + "\t" + locale.getDisplayName(ULocale.ENGLISH));
+                logln("Index:\t" + mainCharString);
+                if (mainChars.size() > 100) {
+                    errln("Index character set too large");
+                }
+                showIfNotEmpty("A sequence sorting the same is already present", indexCharacters.getAlreadyIn());
+                showIfNotEmpty("A sequence sorts the same as components", indexCharacters.getNoDistinctSorting());
+                showIfNotEmpty("A sequence has only Marks or Nonalphabetics", indexCharacters.getNotAlphabetic());
+            }
+        }
+    }
+    private void showIfNotEmpty(String title, List alreadyIn) {
+        if (alreadyIn.size() != 0) {
+            logln("\t" + title + ":\t" + alreadyIn);
+        }
+    }
+    private void showIfNotEmpty(String title, Map alreadyIn) {
+        if (alreadyIn.size() != 0) {
+            logln("\t" + title + ":\t" + alreadyIn);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
new file mode 100644
index 0000000..3188d6e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/LotusCollationKoreanTest
+ * Source File: $ICU4CRoot/source/test/intltest/lcukocol.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class LotusCollationKoreanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new LotusCollationKoreanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0xac00}
+    };
+    
+    private static char[][] testTargetCases = {
+        {0xac01}
+    };
+    
+    private static int[] results = {
+        -1
+    };
+    
+    private Collator myCollation;
+    
+    public LotusCollationKoreanTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.KOREAN);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+    }
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 1; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+            }
+        }
+    
+    // main test routine, tests rules specific to "Korean" locale
+    private void doTest( char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result ); 
+    }
+
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/RandomCollator.java b/src/com/ibm/icu/dev/test/collator/RandomCollator.java
new file mode 100644
index 0000000..05120fb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/RandomCollator.java
@@ -0,0 +1,296 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.BNF;
+import com.ibm.icu.dev.test.util.BagFormatter;
+import com.ibm.icu.dev.test.util.Quoter;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.ParseException;
+import java.util.Random;
+
+public class RandomCollator extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new RandomCollator().run(args);
+        //new CollationAPITest().TestGetTailoredSet();
+    }
+
+    static final int CONSTRUCT_RANDOM_COUNT = 100;
+    static final int FORMAL_TEST_COUNT = 1000;
+    
+    static final String POSITION = "{$$$}";
+    
+    /*
+    class Shower extends BagFormatter.Shower {
+        public void print(String arg) {
+            log(arg);
+        }
+    }
+    
+    public Shower LOG = new Shower();
+    */
+       
+    public void TestRandom() throws IOException {
+//        int year 
+//        = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
+//        if (year < 2004) {
+//            System.out.println("\nTestRandom skipped for 2003");
+//            return;
+//        }
+        //String fileName;
+        PrintWriter pw = BagFormatter.openUTF8Writer(System.getProperty("user.dir")+File.separator, "RandomCollationTestLog.txt");
+        TestCollator tc = new TestCollator(chars);
+        pw.println("Collation Test Run");
+        pw.println("Note: For parse-exception, " + POSITION + " indicates the errorOffset");
+        pw.println("Rules:");
+        pw.println(currentRules);
+        String rules = "<unknown>";
+        int sCount = 0;
+        int peCount = 0;
+        int oeCount = 0;
+        for (int i = 0; i < CONSTRUCT_RANDOM_COUNT; ++i) {
+            try {
+                rules = get();
+                if (true) {                   
+                    Collator c = new RuleBasedCollator(rules.toString());
+                    tc.test(c, FORMAL_TEST_COUNT);
+                } else {
+                    pw.println(rules);
+                }
+                logln("ok");
+                sCount++;
+            } catch (ParseException pe) {
+                peCount++;
+                pw.println("========PARSE EXCEPTION======== (" + i + ")");
+                int errorOffset = pe.getErrorOffset();
+                pw.print(rules.substring(0,errorOffset));
+                pw.print(POSITION);
+                pw.println(rules.substring(errorOffset));
+                //pw.println("========ERROR======== (" + i + ")");
+                //pe.printStackTrace(pw);
+                //pw.println("========END======== (" + i + ")");
+                errln("ParseException");
+            } catch (Exception e) {
+                oeCount++;
+                pw.println("========OTHER EXCEPTION======== (" + i + ")");
+                e.printStackTrace(pw);
+                pw.println("========RULES======== (" + i + ")");
+                pw.println(rules);
+                //pw.println("========END======== (" + i + ")");
+                errln("ParseException");
+            }
+        }
+        pw.println("Successful: " + sCount 
+            + ",\tParseException: " + peCount 
+            + ",\tOther Exception: " + oeCount);
+        logln("Successful: " + sCount 
+            + ",\tParseException: " + peCount 
+            + ",\tOther Exception: " + oeCount);
+        pw.close();
+
+    }
+    
+    public static class TestCollator extends TestComparator {
+        BNF rs;
+        
+        TestCollator(UnicodeSet chars) {
+            rs = new BNF(new Random(0), new Quoter.RuleQuoter())
+            .addRules("$root = " + chars + "{1,8};").complete();
+        }
+        
+        public Object newObject(Object c) {
+            return rs.next();
+        }
+    
+        public String format(Object c) {
+            return BagFormatter.hex.transliterate(c.toString());
+        }
+    }
+
+    private BNF bnf;
+    String currentRules = null;
+    UnicodeSet chars;
+    
+    public String get() {
+        return bnf.next();
+    }
+    
+    public RandomCollator() {
+        
+    }
+    protected void init()throws Exception{
+        init(1,10, new UnicodeSet("[AZa-z<\\&\\[\\]]"));
+    }
+    private void init(int minRuleCount, int maxRuleCount, UnicodeSet setOfChars) {
+        this.chars = setOfChars;
+        bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addSet("$chars", setOfChars)
+        .addRules(collationBNF)
+        .complete();
+    }
+    
+    private static String collationBNF =
+        "$s = ' '? 50%;\r\n" +
+        "$relationList = (" +        "   '<'" +        " | '  <<'" +        " | '  ;'" +
+        " | '    <<<'" +        " | '    ,'" +
+        " | '      ='" +        ");\r\n" +
+        "$alternateOptions = non'-'ignorable | shifted;\r\n" +
+        "$caseFirstOptions = off | upper | lower;\r\n" +
+        "$strengthOptions = '1' | '2' | '3' | '4' | 'I';\r\n" +
+        "$commandList = '['" +        " ( alternate ' ' $alternateOptions" +        " | backwards' 2'" +        " | normalization ' ' $onoff " +        " | caseLevel ' ' $onoff " +        " | hiraganaQ ' ' $onoff" +        " | caseFirst ' ' $caseFirstOptions" +        " | strength ' ' $strengthOptions" +        " ) ']';\r\n" +
+        "$ignorableTypes = (tertiary | secondary | primary) ' ' ignorable;\r\n" +
+        "$allTypes = variable | regular | implicit | trailing | $ignorableTypes;\r\n" +
+        "$onoff = on | off;\r\n" +
+        "$positionList = '[' (first | last) ' ' $allTypes ']';\r\n" +        "$beforeList = '[before ' ('1' | '2' | '3') ']';\r\n" +        "$string = $chars{1,5}~@;\r\n" +
+        "$crlf = '\r\n';\r\n" +
+        "$rel1 = '[variable top]' $s ;\r\n" +
+        "$p1 = ($string $s '|' $s)? 25%;\r\n" +
+        "$p2 = ('\\' $s $string $s)? 25%;\r\n" +
+        "$rel2 = $p1 $string $s $p2;\r\n" +
+        "$relation = $relationList $s ($rel1 | $rel2) $crlf;\r\n" +
+        "$command = $commandList $crlf;\r\n" +
+        "$reset = '&' $s ($beforeList $s)? 10% ($positionList | $string 10%) $crlf;\r\n" +
+        "$mostRules = $command 1% | $reset 5% | $relation 25%;\r\n" +
+        "$root = $command{0,5} $reset $mostRules{1,20};\r\n";
+    
+    
+/*    
+    
+    
+    gc ; C         ; Other                            # Cc | Cf | Cn | Co | Cs
+    gc ; Cc        ; Control
+    gc ; Cf        ; Format
+    gc ; Cn        ; Unassigned
+    gc ; Co        ; Private_Use
+    gc ; Cs        ; Surrogate
+    gc ; L         ; Letter                           # Ll | Lm | Lo | Lt | Lu
+    gc ; LC        ; Cased_Letter                     # Ll | Lt | Lu
+    gc ; Ll        ; Lowercase_Letter
+    gc ; Lm        ; Modifier_Letter
+    gc ; Lo        ; Other_Letter
+    gc ; Lt        ; Titlecase_Letter
+    gc ; Lu        ; Uppercase_Letter
+    gc ; M         ; Mark                             # Mc | Me | Mn
+    gc ; Mc        ; Spacing_Mark
+    gc ; Me        ; Enclosing_Mark
+    gc ; Mn        ; Nonspacing_Mark
+    gc ; N         ; Number                           # Nd | Nl | No
+    gc ; Nd        ; Decimal_Number
+    gc ; Nl        ; Letter_Number
+    gc ; No        ; Other_Number
+    gc ; P         ; Punctuation                      # Pc | Pd | Pe | Pf | Pi | Po | Ps
+    gc ; Pc        ; Connector_Punctuation
+    gc ; Pd        ; Dash_Punctuation
+    gc ; Pe        ; Close_Punctuation
+    gc ; Pf        ; Final_Punctuation
+    gc ; Pi        ; Initial_Punctuation
+    gc ; Po        ; Other_Punctuation
+    gc ; Ps        ; Open_Punctuation
+    gc ; S         ; Symbol                           # Sc | Sk | Sm | So
+    gc ; Sc        ; Currency_Symbol
+    gc ; Sk        ; Modifier_Symbol
+    gc ; Sm        ; Math_Symbol
+    gc ; So        ; Other_Symbol
+    gc ; Z         ; Separator                        # Zl | Zp | Zs
+    gc ; Zl        ; Line_Separator
+    gc ; Zp        ; Paragraph_Separator
+    gc ; Zs        ; Space_Separator
+*/
+
+    /*
+    // each rule can be:
+    // "[" command "]"
+    // "& [" position "]"
+    // "&" before chars
+    // relation "[variable top]"
+    // relation (chars "|")? chars ("/" chars)?
+    // plus, a reset must come before a relation
+    
+    // the following reflects the above rules, plus allows whitespace.
+    Pick chars = Pick.string(1, 5, Pick.codePoint(uSet)); // insert something needing quotes
+    Pick s = Pick.maybe(0.8, Pick.unquoted(" ")).name("Space");    // optional space
+    Pick CRLF = Pick.unquoted("\r\n");
+        
+    Pick rel1 = Pick.and(Pick.unquoted("[variable top]")).and2(s);
+    Pick p1 = Pick.maybe(0.25, Pick.and(chars).and2(s).and2("|").and2(s));
+    Pick p2 = Pick.maybe(0.25, Pick.and("/").and2(s).and2(chars).and2(s));
+    Pick rel2 = Pick.and(p1).and2(chars).and2(s).and2(p2);
+    Pick relation = Pick.and(Pick.or(relationList)).and2(s)
+        .and2(Pick.or(1, rel1).or2(10, rel2))
+        .and2(CRLF).name("Relation");
+            
+    Pick command = Pick.and(Pick.or(commandList)).and2(CRLF).name("Command");
+        
+    Pick reset = Pick.and("&").and2(s)            
+        .and2(0.1, Pick.or(beforeList)).and2(s)            
+        .and2(Pick.or(0.1, Pick.or(positionList)).or2(1.0, chars))
+        .and2(CRLF).name("Reset");
+    Pick rule = Pick.and(Pick.or(1, command).or2(5, reset).or2(25, relation)).name("Rule");
+    Pick rules2 = Pick.and(Pick.repeat(0,5,command))            
+        .and2(reset)            
+        .and2(Pick.repeat(1,20,rule)).name("Rules");
+    rules = Pick.Target.make(rules2);
+   
+   static final String[] relationList = {" <", "  <<", "    <<<", "     =", "  ;", "   ,"};
+    
+    static final String[] commandList = {
+        "[alternate non-ignorable]",        "[alternate shifted]",
+        "[backwards 2]",
+        "[normalization off]",
+        "[normalization on]",
+        "[caseLevel off]",
+        "[caseLevel on]",
+        "[caseFirst off]",
+        "[caseFirst upper]",
+        "[caseFirst lower]",
+        "[strength 1]",
+        "[strength 2]",
+        "[strength 3]",
+        "[strength 4]",
+        "[strength I]",
+        "[hiraganaQ off]",
+        "[hiraganaQ on]"
+    };
+    
+    static final String[] positionList = {
+        "[first tertiary ignorable]",
+        "[last tertiary ignorable]",
+        "[first secondary ignorable]",
+        "[last secondary ignorable]",
+        "[first primary ignorable]",
+        "[last primary ignorable]",
+        "[first variable]",
+        "[last variable]",
+        "[first regular]",
+        "[last regular]",
+        "[first implicit]",
+        "[last implicit]",
+        "[first trailing]",
+        "[last trailing]"
+    };
+    
+    static final String[] beforeList = {
+        "[before 1]", 
+        "[before 2]",
+        "[before 3]"
+    };
+    */
+}
+//#endif
+
diff --git a/src/com/ibm/icu/dev/test/collator/TestAll.java b/src/com/ibm/icu/dev/test/collator/TestAll.java
new file mode 100644
index 0000000..d7f3607
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/TestAll.java
@@ -0,0 +1,55 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "CollationTest",
+                  "CollationAPITest",
+                  "CollationCurrencyTest",
+                  "CollationCreationMethodTest",
+                  //"CollationDanishTest", //Danish is already tested through data driven tests
+                  "CollationDummyTest",
+                  "CollationEnglishTest",
+                  "CollationFinnishTest",
+                  "CollationFrenchTest",
+                  "CollationGermanTest",
+                  "CollationIteratorTest",
+                  "CollationKanaTest",
+                  "CollationMonkeyTest",
+                  "CollationRegressionTest",
+                  "CollationSpanishTest",
+                  "CollationThaiTest",
+                  "CollationTurkishTest",
+                  "G7CollationTest",
+                  "LotusCollationKoreanTest",
+                  "CollationMiscTest",
+                  "CollationChineseTest",
+                  "CollationServiceTest",
+                  "CollationThreadTest",
+                  //"RandomCollator", //Disabled until the problem in the test case is resolved #5747
+                  "UCAConformanceTest",
+                  // don't test Search API twice!
+                  //"com.ibm.icu.dev.test.search.SearchTest"
+              },
+              "All Collation Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Collator";
+}
diff --git a/src/com/ibm/icu/dev/test/collator/TestComparator.java b/src/com/ibm/icu/dev/test/collator/TestComparator.java
new file mode 100644
index 0000000..bd3f07a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/TestComparator.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.*;
+
+public class TestComparator {
+
+    // test the symmetry and transitivity
+    public void test(Comparator comp, int count) {
+        Object c = null;
+        Object b = newObject(c);
+        Object a = newObject(b);
+        int compab = comp.compare(a,b);
+        while (--count >= 0) {
+            // rotate old values
+            c = b;
+            b = a;
+            int compbc = compab;
+            
+            // allocate new and get comparisons
+            a = newObject(b);
+            compab = comp.compare(a,b);
+            int compba = comp.compare(b,a);
+            int compac = comp.compare(a,c);
+            
+            // check symmetry
+            if (compab != -compba) {
+                log("Symmetry Failure", new Object[] {a, b});
+            }
+            
+            // check transitivity
+            check(a, b, c,  compab,  compbc,  compac);
+            check(a, c, b,  compab, -compbc,  compab);
+            check(b, a, c, -compab,  compac,  compbc);
+            check(b, c, a,  compbc, -compac, -compab);
+            check(c, a, b, -compac,  compab, -compbc);
+            check(c, b, a, -compbc, -compab, -compac);
+        }
+    }
+    
+    private void check(Object a, Object b, Object c, 
+      int compab, int compbc, int compac) {
+        if (compab <= 0 && compbc <= 0 && !(compac <= 0)) {
+            log("Transitivity Failure", new Object[] {a, b, c});             
+        }
+    }
+   
+    public Object newObject(Object c) {
+        // return a new object
+        return "";
+    }
+    
+    public String format(Object c) {
+        // return a new object
+        return c.toString();
+    }
+    
+    public void log(String title, Object[] arguments) {
+        String result = title + ": [";
+        for (int i = 0; i < arguments.length; ++i) {
+            if (i != 0) result += ", ";
+            result += format(arguments[i]);
+        }
+        result += "]";
+        throw new RuntimeException(result);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java b/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
new file mode 100644
index 0000000..7444df7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
@@ -0,0 +1,242 @@
+/********************************************************************
+ * COPYRIGHT: 
+ * Copyright (c) 2002-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+/**
+ * UCAConformanceTest performs conformance tests defined in the data
+ * files. ICU ships with stub data files, as the whole test are too 
+ * long. To do the whole test, download the test files.
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.io.BufferedReader;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+public class UCAConformanceTest extends TestFmwk {
+    
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        new UCAConformanceTest().run(args);
+    }
+    
+    public UCAConformanceTest() {
+    }
+    protected void init()throws Exception{
+        UCA = (RuleBasedCollator)Collator.getInstance(
+                new Locale("root", "", ""));
+
+        comparer = new UTF16.StringComparator(true, false, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+    }
+    RuleBasedCollator UCA;
+    RuleBasedCollator rbUCA;
+    UTF16.StringComparator comparer;
+    
+    public void TestTableNonIgnorable() {
+        setCollNonIgnorable(UCA);
+        openTestFile("NON_IGNORABLE");
+        conformanceTest(UCA);
+    }
+    
+    public void TestTableShifted() {
+        setCollShifted(UCA);
+        openTestFile("SHIFTED");
+        conformanceTest(UCA);
+    }
+    
+    public void TestRulesNonIgnorable() {
+        initRbUCA();
+        
+        setCollNonIgnorable(rbUCA);
+        openTestFile("NON_IGNORABLE");
+        conformanceTest(rbUCA);
+    }
+    
+    public void TestRulesShifted() {
+        logln("This test is currently disabled, as it is impossible to "+
+        "wholly represent fractional UCA using tailoring rules.");
+        return;
+        /*        initRbUCA();
+         
+         if(U_SUCCESS(status)) {
+         setCollShifted(rbUCA);
+         openTestFile("SHIFTED");
+         testConformance(rbUCA);
+         }
+         */
+    }
+    BufferedReader in;
+    private void openTestFile(String type)
+    {
+        String collationTest = "CollationTest_";
+        String ext = ".txt";
+        try {
+            if(in != null) {
+                in.close();
+            }
+        } catch (Exception e) {
+            errln("Could not close the opened file!");
+            return;
+        }
+        try {
+            in = TestUtil.getDataReader(collationTest+type+ext);
+        } catch (Exception e) {
+            try {
+                in = TestUtil.getDataReader(collationTest+type+"_SHORT"+ext);
+            } catch (Exception e1) {
+                try {
+                    in = TestUtil.getDataReader(collationTest+type+"_STUB"+ext);
+                    logln( "INFO: Working with the stub file.\n"+
+                            "If you need the full conformance test, please\n"+
+                            "download the appropriate data files from:\n"+
+                    "http://source.icu-project.org/repos/icu/tools/trunk/unicodetools/com/ibm/text/data/");
+                } catch (Exception e11) {
+                    errln("ERROR: Could not find any of the test files");
+                }
+            }
+        }
+    }          
+    
+    private void setCollNonIgnorable(RuleBasedCollator coll) 
+    {
+        if(coll != null) {
+            coll.setDecomposition(RuleBasedCollator.CANONICAL_DECOMPOSITION);
+            coll.setLowerCaseFirst(false);
+            coll.setCaseLevel(false);
+            coll.setStrength(RuleBasedCollator.TERTIARY);
+            coll.setAlternateHandlingShifted(false);
+        }
+    }
+    
+    private void setCollShifted(RuleBasedCollator coll) 
+    {
+        if(coll != null) {
+            coll.setDecomposition(RuleBasedCollator.CANONICAL_DECOMPOSITION);
+            coll.setLowerCaseFirst(false);
+            coll.setCaseLevel(false);
+            coll.setStrength(RuleBasedCollator.QUATERNARY);
+            coll.setAlternateHandlingShifted(true);
+        }
+    }
+    
+    
+    
+    private void initRbUCA() 
+    {
+        /*      if(!rbUCA) {
+         UParseError parseError;
+         UChar      *ucarules = buffer;
+         int32_t size = ucol_getRulesEx(UCA, UCOL_FULL_RULES, ucarules, 
+         BUFFER_SIZE_);
+         if (size > BUFFER_SIZE_) {
+         ucarules = (UChar *)malloc(size * sizeof(UChar));
+         size = ucol_getRulesEx(UCA, UCOL_FULL_RULES, ucarules, size);
+         }
+         rbUCA = ucol_openRules(ucarules, size, UCOL_DEFAULT, UCOL_TERTIARY, 
+         &parseError, &status);
+         if (U_FAILURE(status)) {
+         errln("Failure creating UCA rule-based collator: %s", u_errorName(status));
+         return;
+         }
+         }
+         */
+    }
+    
+    private String parseString(String line) {
+        int i = 0, value;
+        StringBuffer result = new StringBuffer(), buffer = new StringBuffer();
+        
+        for(;;) {
+            while(Character.isWhitespace(line.charAt(i))) {
+                i++;
+            }
+            if(line.charAt(i) == ';' || i == line.length()) {
+                return result.toString();
+            }
+            while(Character.isLetterOrDigit(line.charAt(i))) {
+                buffer.append(line.charAt(i));
+                i++;
+            }
+            /* read one code point */
+            value = Integer.parseInt(buffer.toString(), 16);
+            buffer.delete(0, buffer.length());
+            
+            UTF16.append(result, value);
+        }
+        
+    }
+    private void conformanceTest(RuleBasedCollator coll) {
+        if(in == null || coll == null) {
+            return;
+        }
+        
+        int lineNo = 0;
+        
+        String line = null, oldLine = null, buffer = null, oldB = null;
+        CollationKey oldSk = null, newSk = null;
+        
+        int res = 0, cmpres = 0, cmpres2 = 0;
+        
+        try {
+            while ((line = in.readLine()) != null) {
+                lineNo++;
+                if(line.length() < 3 || line.charAt(0) == '#') {
+                    continue;
+                }
+                buffer = parseString(line);
+                
+                newSk = coll.getCollationKey(buffer);
+                if(oldSk != null) {
+                    res = oldSk.compareTo(newSk);
+                    cmpres = coll.compare(oldB, buffer);
+                    cmpres2 = coll.compare(buffer, oldB);
+                    
+                    if(cmpres != -cmpres2) {
+                        errln("Compare result not symmetrical on line "+lineNo);
+                    }
+                    if(((res&0x80000000) != (cmpres&0x80000000)) || (res == 0 && cmpres != 0) || (res != 0 && cmpres == 0)) {
+                        errln("Difference between ucol_strcoll and sortkey compare on line " + lineNo);
+                        logln(oldLine);
+                        logln(line);
+                    }
+                    
+                    if(res > 0) {
+                        errln("Line " + lineNo + " is not greater or equal than previous line");
+                        logln(oldLine);
+                        logln(line);
+                        cmpres = coll.compare(oldB, buffer);
+                    } else if(res == 0) {  // equal 
+                        res = comparer.compare(oldB, buffer);
+                        if (res == 0) {
+                            errln("Probable error in test file on line " + lineNo +" (comparing identical strings)");
+                            logln(oldLine);
+                            logln(line);
+                        } else if (res > 0) {
+                            errln("Sortkeys are identical, but code point comapare gives >0 on line " + lineNo);
+                            logln(oldLine);
+                            logln(line);
+                        }
+                    }
+                }
+                
+                oldSk = newSk;
+                oldB = buffer;
+                oldLine = line;
+            }
+        } catch (Exception e) {
+            errln("Unexpected exception "+e);
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/compression/DecompressionTest.java b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
new file mode 100644
index 0000000..913ceae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeDecompressor;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DecompressionTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DecompressionTest().run(args);
+    }
+
+    /** Print out a segment of a character array, if in verbose mode */
+    private void log(char [] chars, int start, int count) {
+        log("|");
+        for(int i = start; i < start + count; ++i) {
+            log(String.valueOf(chars[i]));
+        }
+        log("|");
+    }
+
+    /** Print out a segment of a character array, followed by a newline */
+    private void logln(char [] chars, int start, int count)
+    {
+        log(chars, start, count);
+        logln("");
+    }
+
+    /** Decompress the two segments */
+    private String decompressTest(byte [] segment1, byte [] segment2) {
+        StringBuffer s = new StringBuffer();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+
+        int [] bytesRead = new int[1];
+        char [] charBuffer = new char [2*(segment1.length + segment2.length)];
+        int count1 = 0, count2 = 0;
+
+        count1 = myDecompressor.decompress(segment1, 0, segment1.length,
+                                           bytesRead,
+                                           charBuffer, 0, charBuffer.length);
+        
+        logln("Segment 1 (" + segment1.length + " bytes) " +
+                "decompressed into " + count1  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, 0, count1);
+        s.append(charBuffer, 0, count1);
+
+        count2 = myDecompressor.decompress(segment2, 0, segment2.length,
+                                           bytesRead,
+                                           charBuffer, count1, 
+                                           charBuffer.length);
+        
+        logln("Segment 2 (" + segment2.length + " bytes) " +
+                "decompressed into " + count2  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, count1, count2);
+        
+        s.append(charBuffer, count1, count2);
+
+        logln("Result: ");
+        logln(charBuffer, 0, count1 + count2);
+        logln("====================");
+
+        return s.toString();
+    }
+
+
+    public void testDecompression() throws Exception {
+        String result;
+
+        // compressed segment breaking on a define window sequence
+        /*                   B     o     o     t     h     SD1  */
+        byte [] segment1 = { 0x42, 0x6f, 0x6f, 0x74, 0x68, 0x19 };
+
+        // continuation
+        /*                   IDX   ,           S     .          */
+        byte [] segment2 = { 0x01, 0x2c, 0x20, 0x53, 0x2e };
+        
+        result = decompressTest(segment1, segment2);
+        if(! result.equals("Booth, S.")) {
+            errln("Decompression test failed");
+            return;
+        }
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   B     o     o     t     SQU        */
+        byte [] segment3 = { 0x42, 0x6f, 0x6f, 0x74, 0x0e, 0x00 };
+
+        // continuation
+        /*                   h     ,           S     .          */
+        byte [] segment4 = { 0x68, 0x2c, 0x20, 0x53, 0x2e };
+
+        result = decompressTest(segment3, segment4);
+        if(! result.equals("Booth, S.")) {
+            errln("Decompression test failed");
+            return;
+        }
+
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   SCU   UQU                         */
+        byte [] segment5 = { 0x0f, (byte)0xf0, 0x00 };
+
+        // continuation
+        /*                   B                                 */
+        byte [] segment6 = { 0x42 };
+
+        result = decompressTest(segment5, segment6);
+        if(! result.equals("B")) {
+            errln("Decompression test failed");
+            return;
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
new file mode 100644
index 0000000..2230027
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
@@ -0,0 +1,522 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeCompressor;
+import com.ibm.icu.text.UnicodeDecompressor;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class ExhaustiveTest extends TestFmwk {
+    public static void main(String args[]) throws Exception {
+        new ExhaustiveTest().run(args);
+    }
+
+    /** Test simple compress/decompress API, returning # of errors */
+    public void testSimple() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            simpleTest(fTestCases[i]);
+        }
+    }
+    private void simpleTest(String s) throws Exception {
+        byte [] compressed = UnicodeCompressor.compress(s);
+        String res = UnicodeDecompressor.decompress(compressed);
+        if (logDiffs(s.toCharArray(), s.length(), 
+                res.toCharArray(), res.length()) == false) {
+            logln(s.length() + " chars ===> " 
+                    + compressed.length + " bytes ===> " 
+                    + res.length() + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(compressed, compressed.length);
+            errln("testSimple did not compress correctly");
+        }
+    }
+
+    /** Test iterative compress/decompress API, returning # of errors */
+    public void testIterative() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myTest(char[] chars, int len) {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        int myByteCount = 0;
+        int myCharCount = 0;
+        int myCompressedSize = Math.max(512, 3*len);
+        byte[] myCompressed = new byte[myCompressedSize];
+        int myDecompressedSize = Math.max(2, 2 * len);
+        char[] myDecompressed = new char[myDecompressedSize];
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        myByteCount = myCompressor.compress(chars, 0, len, unicharsRead,
+                myCompressed, 0, myCompressedSize);
+
+        myCharCount = myDecompressor.decompress(myCompressed, 0, myByteCount,
+                bytesRead, myDecompressed, 0, myDecompressedSize);
+
+        if (logDiffs(chars, len, myDecompressed, myCharCount) == false) {
+            logln(len + " chars ===> " 
+                    + myByteCount + " bytes ===> " 
+                    + myCharCount + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(myCompressed, myByteCount);
+            errln("Iterative test failed");
+        }
+    }
+
+    /** Test iterative compress/decompress API */
+    public void testMultipass() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myMultipassTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myMultipassTest(char [] chars, int len) throws Exception {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        
+        // for looping
+        int byteBufferSize = 4;//Math.max(4, len / 4);
+        byte[] byteBuffer = new byte [byteBufferSize];
+        // real target
+        int compressedSize = Math.max(512, 3 * len);
+        byte[] compressed = new byte[compressedSize];
+
+        // for looping
+        int unicharBufferSize = 2;//byteBufferSize;
+        char[] unicharBuffer = new char[unicharBufferSize];
+        // real target
+        int decompressedSize = Math.max(2, 2 * len);
+        char[] decompressed = new char[decompressedSize];
+
+        int bytesWritten = 0;
+        int unicharsWritten = 0;
+
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        int totalCharsCompressed = 0;
+        int totalBytesWritten = 0;
+
+        int totalBytesDecompressed  = 0;
+        int totalCharsWritten = 0;
+
+        // not used boolean err = false;
+
+
+        // perform the compression in a loop
+        do {
+            
+            // do the compression
+            bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+                   len, unicharsRead, byteBuffer, 0, byteBufferSize);
+
+            // copy the current set of bytes into the target buffer
+            System.arraycopy(byteBuffer, 0, compressed, 
+                   totalBytesWritten, bytesWritten);
+            
+            // update the no. of characters compressed
+            totalCharsCompressed += unicharsRead[0];
+            
+            // update the no. of bytes written
+            totalBytesWritten += bytesWritten;
+            
+            /*System.out.logln("Compression pass complete.  Compressed "
+                               + unicharsRead[0] + " chars into "
+                               + bytesWritten + " bytes.");*/
+        } while(totalCharsCompressed < len);
+
+        if (totalCharsCompressed != len) {
+            errln("ERROR: Number of characters compressed("
+                    + totalCharsCompressed + ") != len(" + len + ")");
+        } else {
+            logln("MP: " + len + " chars ===> " + totalBytesWritten + " bytes.");
+        }
+        
+        // perform the decompression in a loop
+        do {
+            
+            // do the decompression
+            unicharsWritten = myDecompressor.decompress(compressed, 
+                    totalBytesDecompressed, totalBytesWritten, 
+                    bytesRead, unicharBuffer, 0, unicharBufferSize);
+
+            // copy the current set of chars into the target buffer
+            System.arraycopy(unicharBuffer, 0, decompressed, 
+                    totalCharsWritten, unicharsWritten);
+            
+            // update the no. of bytes decompressed
+            totalBytesDecompressed += bytesRead[0];
+            
+            // update the no. of chars written
+            totalCharsWritten += unicharsWritten;
+            
+            /*System.out.logln("Decompression pass complete.  Decompressed "
+                               + bytesRead[0] + " bytes into "
+                               + unicharsWritten + " chars.");*/
+        } while (totalBytesDecompressed < totalBytesWritten);
+
+        if (totalBytesDecompressed != totalBytesWritten) {
+            errln("ERROR: Number of bytes decompressed(" 
+                    + totalBytesDecompressed 
+                    + ") != totalBytesWritten(" 
+                    + totalBytesWritten + ")");
+        } else {
+            logln("MP: " + totalBytesWritten
+                    + " bytes ===> " + totalCharsWritten + " chars.");
+        }
+        
+        if (logDiffs(chars, len, decompressed, totalCharsWritten)) {
+            errln("ERROR: buffer contents incorrect");
+        }
+    }
+
+    /** Print differences between two character buffers */
+    private boolean logDiffs(char[] s1, int s1len, char[] s2, int s2len) {
+        boolean result  = false;
+        
+        if(s1len != s2len) {
+            logln("====================");
+            logln("Length doesn't match: expected " + s1len
+                               + ", got " + s2len);
+            logln("Expected:");
+            printChars(s1, s1len);
+            logln("Got:");
+            printChars(s2, s2len);
+            result = true;
+        }
+        
+        int len = Math.min(s1len, s2len);
+        for(int i = 0; i < len; ++i) {
+            if(s1[i] != s2[i]) {
+                if(result == false) {
+                    logln("====================");
+                }
+                logln("First difference at char " + i);
+                logln("Exp. char: " + Integer.toHexString(s1[i]));
+                logln("Got char : " + Integer.toHexString(s2[i]));
+                logln("Expected:");
+                printChars(s1, s1len);
+                logln("Got:");
+                printChars(s2, s2len);
+                result = true;
+                break;
+            }
+        }
+    
+        return result;
+    }
+
+    // generate a string of characters, with simulated runs of characters
+    /*private static char[] randomChars(int len, Random random) {
+        char[] result = new char [len];
+        int runLen = 0;
+        int used = 0;
+        
+        while(used < len) {
+            runLen = (int) (30 * random.nextDouble());
+            if(used + runLen >= len) {
+                runLen = len - used;
+            }
+            randomRun(result, used, runLen, random);
+            used += runLen;
+        }
+    
+        return result;
+    }*/
+
+    // generate a run of characters in a "window"
+    /*private static void randomRun(char[] target, int pos, int len, Random random) {
+        int offset = (int) (0xFFFF * random.nextDouble());
+
+        // don't overflow 16 bits
+        if(offset > 0xFF80) {
+            offset = 0xFF80;
+        }
+
+        for(int i = pos; i < pos + len; i++) {
+            target[i] = (char)(offset + (0x7F * random.nextDouble()));
+        }
+    }*/
+
+    private static final String [] fTestCases = {
+        "Hello \u9292 \u9192 World!",
+        "Hell\u0429o \u9292 \u9192 W\u0084rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+
+        "\u0648\u06c8", // catch missing reset
+        "\u0648\u06c8",
+
+        "\u4444\uE001", // lowest quotable
+        "\u4444\uf2FF", // highest quotable
+        "\u4444\uf188\u4444",
+        "\u4444\uf188\uf288",
+        "\u4444\uf188abc\0429\uf288",
+        "\u9292\u2222",
+        "Hell\u0429\u04230o \u9292 \u9292W\u0084\u0192rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+        "Hello World!123456",
+        "Hello W\u0081\u011f\u0082!", // Latin 1 run
+
+        "abc\u0301\u0302",  // uses SQn for u301 u302
+        "abc\u4411d",      // uses SQU
+        "abc\u4411\u4412d",// uses SCU
+        "abc\u0401\u0402\u047f\u00a5\u0405", // uses SQn for ua5
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000", // SJIS like data
+        "\u9292\u2222",
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000",
+        "\u9999\u3051\u300c\u9999\u9999\u3060\u9999\u3065\u3065\u3065\u300c",
+        "\u3000\u266a\u30ea\u30f3\u30b4\u53ef\u611b\u3044\u3084\u53ef\u611b\u3044\u3084\u30ea\u30f3\u30b4\u3002",
+
+        "", // empty input
+        "\u0000", // smallest BMP character
+        "\uFFFF", // largest BMP character
+
+        "\ud800\udc00", // smallest surrogate
+        "\ud8ff\udcff", // largest surrogate pair
+        
+        // regression tests
+        "\u6441\ub413\ua733\uf8fe\ueedb\u587f\u195f\u4899\uf23d\u49fd\u0aac\u5792\ufc22\ufc3c\ufc46\u00aa",
+        "\u30f9\u8321\u05e5\u181c\ud72b\u2019\u99c9\u2f2f\uc10c\u82e1\u2c4d\u1ebc\u6013\u66dc\ubbde\u94a5\u4726\u74af\u3083\u55b9\u000c",
+        "\u0041\u00df\u0401\u015f",
+        "\u9066\u2123abc",
+        "\ud266\u43d7\\\ue386\uc9c0\u4a6b\u9222\u901f\u7410\ua63f\u539b\u9596\u482e\u9d47\ucfe4\u7b71\uc280\uf26a\u982f\u862a\u4edd\uf513\ufda6\u869d\u2ee0\ua216\u3ff6\u3c70\u89c0\u9576\ud5ec\ubfda\u6cca\u5bb3\ubcea\u554c\u914e\ufa4a\uede3\u2990\ud2f5\u2729\u5141\u0f26\uccd8\u5413\ud196\ubbe2\u51b9\u9b48\u0dc8\u2195\u21a2\u21e9\u00e4\u9d92\u0bc0\u06c5",
+        "\uf95b\u2458\u2468\u0e20\uf51b\ue36e\ubfc1\u0080\u02dd\uf1b5\u0cf3\u6059\u7489"
+
+    };
+
+    //==========================
+    // Compression modes
+    //==========================
+    private final static int SINGLEBYTEMODE                 = 0;
+    private final static int UNICODEMODE                    = 1;
+    
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    private final static int SDEFINEX                   = 0x0B;
+    //private final static int SRESERVED                  = 0x0C;             // this is a reserved value
+    private final static int SQUOTEU                    = 0x0E;
+    private final static int SSWITCHU                   = 0x0F;
+
+    private final static int SQUOTE0                        = 0x01;
+    private final static int SQUOTE1                        = 0x02;
+    private final static int SQUOTE2                        = 0x03;
+    private final static int SQUOTE3                        = 0x04;
+    private final static int SQUOTE4                        = 0x05;
+    private final static int SQUOTE5                        = 0x06;
+    private final static int SQUOTE6                        = 0x07;
+    private final static int SQUOTE7                        = 0x08;
+
+    private final static int SSWITCH0                       = 0x10;
+    private final static int SSWITCH1                       = 0x11;
+    private final static int SSWITCH2                       = 0x12;
+    private final static int SSWITCH3                       = 0x13;
+    private final static int SSWITCH4                       = 0x14;
+    private final static int SSWITCH5                       = 0x15;
+    private final static int SSWITCH6                       = 0x16;
+    private final static int SSWITCH7                       = 0x17;
+
+    private final static int SDEFINE0                       = 0x18;
+    private final static int SDEFINE1                       = 0x19;
+    private final static int SDEFINE2                       = 0x1A;
+    private final static int SDEFINE3                       = 0x1B;
+    private final static int SDEFINE4                       = 0x1C;
+    private final static int SDEFINE5                       = 0x1D;
+    private final static int SDEFINE6                       = 0x1E;
+    private final static int SDEFINE7                       = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    private final static int USWITCH0                       = 0xE0;
+    private final static int USWITCH1                       = 0xE1;
+    private final static int USWITCH2                       = 0xE2;
+    private final static int USWITCH3                       = 0xE3;
+    private final static int USWITCH4                       = 0xE4;
+    private final static int USWITCH5                       = 0xE5;
+    private final static int USWITCH6                       = 0xE6;
+    private final static int USWITCH7                       = 0xE7;
+
+    private final static int UDEFINE0                       = 0xE8;
+    private final static int UDEFINE1                       = 0xE9;
+    private final static int UDEFINE2                       = 0xEA;
+    private final static int UDEFINE3                       = 0xEB;
+    private final static int UDEFINE4                       = 0xEC;
+    private final static int UDEFINE5                       = 0xED;
+    private final static int UDEFINE6                       = 0xEE;
+    private final static int UDEFINE7                       = 0xEF;
+
+    private final static int UQUOTEU                        = 0xF0;
+    private final static int UDEFINEX                       = 0xF1;
+    //private final static int URESERVED                      = 0xF2;         // this is a reserved value
+
+    /* Print out an array of characters, with non-printables (for me) 
+       displayed as hex values */
+    private void printChars(char[] chars, int len) {
+        for(int i = 0; i < len; i++) {
+            int c = (int)chars[i];
+            if(c < 0x0020 || c >= 0x7f) {
+                log("[0x");
+                log(Integer.toHexString(c));
+                log("]");
+            } else {
+                log(String.valueOf((char)c));
+            }
+        }
+        logln("");
+    }
+
+    private void printBytes(byte[] byteBuffer, int len) {
+        int curByteIndex = 0;
+        int byteBufferLimit = len;
+        int mode = SINGLEBYTEMODE;
+        int aByte = 0x00;
+        
+        if(len > byteBuffer.length) {
+            logln("Warning: printBytes called with length too large. Truncating");
+            byteBufferLimit = byteBuffer.length;
+        }
+        
+        while(curByteIndex < byteBufferLimit) {
+            switch(mode) {  
+            case SINGLEBYTEMODE:
+                while(curByteIndex < byteBufferLimit 
+                      && mode == SINGLEBYTEMODE)  {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        break;
+                        // quote unicode
+                    case SQUOTEU:
+                        log("SQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // switch to Unicode mode
+                    case SSWITCHU:
+                        log("SSWITCHU ");
+                        mode = UNICODEMODE;
+                        break;
+                        
+                        // handle all quote tags
+                    case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+                    case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+                        log("SQUOTE" + (aByte - SQUOTE0) + " ");
+                        if(curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case SSWITCH0: case SSWITCH1: case SSWITCH2: case SSWITCH3:
+                    case SSWITCH4: case SSWITCH5: case SSWITCH6: case SSWITCH7:
+                        log("SSWITCH" + (aByte - SSWITCH0) + " ");
+                        break;
+                                        
+                        // handle all define tags
+                    case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+                    case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+                        log("SDEFINE" + (aByte - SDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle define extended tag
+                    case SDEFINEX:
+                        log("SDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            case UNICODEMODE:
+                while(curByteIndex < byteBufferLimit && mode == UNICODEMODE) {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                        // handle all define tags
+                    case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+                    case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+                        log("UDEFINE" + (aByte - UDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // handle define extended tag
+                    case UDEFINEX:
+                        log("UDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case USWITCH0: case USWITCH1: case USWITCH2: case USWITCH3:
+                    case USWITCH4: case USWITCH5: case USWITCH6: case USWITCH7:
+                        log("USWITCH" + (aByte - USWITCH0) + " ");
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // quote unicode
+                    case UQUOTEU:
+                        log("UQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            } // end switch( mode )
+        } // end while
+        
+        logln("");
+    }    
+}
+
+
+
+
+
+
diff --git a/src/com/ibm/icu/dev/test/compression/TestAll.java b/src/com/ibm/icu/dev/test/compression/TestAll.java
new file mode 100644
index 0000000..133435b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/TestAll.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "DecompressionTest",
+            "ExhaustiveTest",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Compression";
+}
diff --git a/src/com/ibm/icu/dev/test/compression/package.html b/src/com/ibm/icu/dev/test/compression/package.html
new file mode 100644
index 0000000..426bc94
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java b/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
new file mode 100644
index 0000000..f54a484
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
@@ -0,0 +1,355 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.impl.XMLRecordReader;
+import com.ibm.icu.impl.duration.impl.XMLRecordWriter;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+public class DataReadWriteTest extends TestFmwk {
+
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new DataReadWriteTest().run(args);
+    }
+
+    // strip line ends and trailing spaces
+    private String normalize(String str) {
+        StringBuffer sb = new StringBuffer();
+        boolean inLine = true;
+        for (int i = 0; i < str.length(); ++i) {
+            char c = str.charAt(i);
+            if (inLine && c == ' ') {
+                continue;
+            }
+            if (c == '\n') {
+                inLine = true;
+                continue;
+            }
+            inLine = false;
+            sb.append("" + c);
+        }
+        return sb.toString();
+    }
+
+    public void testOpenClose() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        assertTrue(null, xrw.open("Test"));
+        assertTrue(null, xrw.close());
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<Test></Test>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.open("Test"));
+        assertTrue(null, xrr.close());
+    }
+
+    public void testBool() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.bool("x", true);
+        xrw.bool("y", false);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>true</x><y>false</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.bool("x"));
+        assertFalse(null, xrr.bool("y"));
+    }
+
+    public void testBoolArray() {
+        boolean[][] datas = {
+            {},
+            { true },
+            { true, false },
+            { true, false, true },
+        };
+    
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>true</test></testList>",
+            "<testList><test>true</test><test>false</test></testList>",
+            "<testList><test>true</test><test>false</test>" +
+            "<test>true</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            boolean[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.boolArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            boolean[] out = xrr.boolArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testCharacter() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.character("x", 'a');
+        xrw.character("y", 'b');
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>a</x><y>b</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertEquals(null, 'a', xrr.character("x"));
+        assertEquals(null, 'b', xrr.character("y"));
+    }
+
+    public void testCharacterArray() {
+        char[][] datas = {
+            {},
+            { 'a' },
+            { 'a', 'b' },
+            { 'a', 'b', 'c' },
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>a</test></testList>",
+            "<testList><test>a</test><test>b</test></testList>",
+            "<testList><test>a</test><test>b</test>" +
+            "<test>c</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            char[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.characterArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            char[] out = xrr.characterArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testNamedIndex() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        String[] names = { "zero", "one" };
+
+        xrw.namedIndex("x", names, 0);
+        xrw.namedIndex("y", names, 1);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>zero</x><y>one</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertEquals(null, 0, xrr.namedIndex("x", names));
+        assertEquals(null, 1, xrr.namedIndex("y", names));
+    }
+
+    public void testNamedIndexArray() {
+        String[] names = { "zero", "one" };
+        byte[][] datas = {
+            {},
+            { 0 },
+            { 1, 0 },
+            { 0, 1, 0 },
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>zero</test></testList>",
+            "<testList><test>one</test><test>zero</test></testList>",
+            "<testList><test>zero</test><test>one</test>" +
+            "<test>zero</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            byte[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.namedIndexArray("test", names, data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            byte[] out = xrr.namedIndexArray("test", names);
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testString() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+
+        String s = " This is <a> &&\t test. ";
+        String s1 = " This is <a> && test. ";
+        String t = " This is &lt;a> &amp;&amp; test. ";
+        xrw.string("x", s);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>"
+                + t + "</x>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        String res = xrr.string("x");
+        assertEquals("\n'" + res + "' == \n'" + s1 + "'", s1, res);
+    }
+
+    public void testStringArray() {
+        String s1 = "";
+        String s2 = " ";
+        String s3 = "This is a test";
+        String s4 = "  It is\n   only  a test\t  ";
+        String s4x = " It is only a test ";
+
+        String[][] datas = { 
+            {},
+            { s1 },
+            { s2, s1 },
+            { s3, s2, s1 },
+            { s3, null, s1, null },
+            { s4, s1, s3, s2 }
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s2 + "</test><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s3 + "</test><test>" + s2 + 
+                "</test><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s3 + "</test><test>Null</test><test>" + s1 + 
+                "</test><test>Null</test></testList>",
+            "<testList><test>" + s4x + "</test><test>" + s1 + 
+                "</test><test>" + s3 + "</test><test>" + s2 + "</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            String[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.stringArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j + " '" + str + "'", target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            String[] out = xrr.stringArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                String standin = data[i];
+                if (s4.equals(standin)) {
+                    standin = s4x;
+                }
+                assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin,
+                        out[i]);
+            }
+        }
+    }
+
+    public void testStringTable() {
+        String s1 = "";
+        String s2 = " ";
+        String s3 = "This is a test";
+        String s4 = "It is only a test";
+
+        String[][] table = { 
+            {},
+            { s1 },
+            { s2, s1 },
+            { s3, s2, s1 },
+            null,
+            { s4, s1, s3, s2 }
+        };
+
+        String target = "<testTable>" +
+            "<testList></testList>" +
+            "<testList><test></test></testList>" +
+            "<testList><test> </test><test></test></testList>" +
+            "<testList><test>This is a test</test><test> </test>" + 
+                "<test></test></testList>" +
+            "<testList>Null</testList>" +
+            "<testList><test>It is only a test</test><test></test>" +
+                "<test>This is a test</test><test> </test></testList>" +
+            "</testTable>";
+
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.stringTable("test", table);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals("'" + str + "'", target, normalize(str));
+    }
+
+    public void testOmittedFields() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.open("omit");
+        xrw.bool("x", true);
+        xrw.bool("y", false);
+        xrw.close();
+        xrw.flush();
+        String str = sw.toString();
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.open("omit"));
+        assertTrue(null, xrr.bool("x"));
+        assertEquals(null, '\uffff', xrr.character("z"));
+        assertFalse(null, xrr.bool("y"));
+        assertTrue(null, xrr.close());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java b/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
new file mode 100644
index 0000000..9a6e37e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -0,0 +1,246 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.duration;
+
+import java.util.Date;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+//#endif
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ *
+ */
+public class ICUDurationTest extends TestFmwk {
+
+    /**
+     * 
+     */
+    public ICUDurationTest() {
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        new ICUDurationTest().run(args);
+    }
+    
+    
+    /**
+     * Basic test
+     */
+    public void TestBasics() {
+        DurationFormat df;
+        String expect;
+        String formatted;
+        
+        df = DurationFormat.getInstance(new ULocale("it"));
+        formatted = df.formatDurationFromNow(4096);
+        expect = "fra quattro secondi";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format duration -> " + formatted);
+        }
+        
+        formatted = df.formatDurationFromNowTo(new Date(0));
+        Calendar cal = Calendar.getInstance();
+        int years = cal.get(Calendar.YEAR) - 1970; // year of Date(0)
+        expect = "fra " + years + " anni";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format date  -> " + formatted);
+        }
+        
+        formatted = df.formatDurationFrom(1000*3600*24, new Date(0).getTime());
+        expect = "fra un giorno";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format date from -> " + formatted);
+        }
+
+        formatted = df.format(new Long(1000*3600*24*2));
+        expect = "fra due giorni";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format long obj -> " + formatted);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    public void TestSimpleXMLDuration() {
+        DatatypeFactory factory = null;
+        try {
+            factory = DatatypeFactory.newInstance();
+        } catch (DatatypeConfigurationException e) {
+            errln("Error instantiating XML DatatypeFactory.");
+            e.printStackTrace();
+        }
+        
+        Duration d;
+        DurationFormat df;
+        String out;
+        String expected;
+        String expected2;
+        
+        // test 1
+        d = factory.newDuration("PT2H46M40S");
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "2 hours, 46 minutes, and 40 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        
+        // test 2
+        d = factory.newDuration(10000);
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "10 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        // test 3
+        d = factory.newDuration("P0DT0H0M10.0S");
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "10 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        // test 4
+        d = factory.newDuration(86400000);
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "1 day, 0 hours, 0 minutes, and 0 seconds";
+        expected2 = "1 day and 0 seconds"; // This is the expected result for Windows with IBM JRE6
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            if(out.equals(expected2)){
+                logln("WARNING: got " + out + " wanted " + expected + " from " + d);
+            } else{
+                errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+            }
+        }
+    }
+
+
+    public void TestXMLDuration() {
+        DatatypeFactory factory = null;
+        try {
+            factory = DatatypeFactory.newInstance();
+        } catch (DatatypeConfigurationException e) {
+            errln("Error instantiating XML DatatypeFactory.");
+            e.printStackTrace();
+        }
+        
+        String cases[] = {
+                "en",   "PT10.00099S",   "10 seconds",
+                "en",   "#10000",   "10 seconds",
+                "en",   "-PT10.00099S",   "10 seconds",
+                "en",   "#-10000",   "10 seconds",
+                
+                // from BD req's
+                "en",   "PT2H46M40S",   "2 hours, 46 minutes, and 40 seconds",
+                "it",   "PT2H46M40S",   "due ore, 46 minuti e 40 secondi",
+                
+                // more cases
+                "en",   "PT10S",        "10 seconds",
+                "en",   "PT88M70S",        "88 minutes and 70 seconds",
+                "en",   "PT10.100S",    "10 seconds and 100 milliseconds",
+                "en",   "-PT10S",       "10 seconds",
+                "en",   "PT0H5M0S",     "5 minutes and 0 seconds"
+        };
+        
+        for(int n=0;n<cases.length;n+=3) {
+            String loc = cases[n+0];
+            String from = cases[n+1];
+            String to = cases[n+2];
+            
+            ULocale locale = new ULocale(loc);
+            Duration d;
+            if(from.startsWith("#")) {
+                d = factory.newDuration(Long.parseLong(from.substring(1)));
+            } else {
+                d = factory.newDuration(from);
+            }
+            
+            DurationFormat df = DurationFormat.getInstance(locale);
+            String output = df.format(d);
+            
+            if(output.equals(to)) {
+                logln("SUCCESS: locale: " + loc + ", from " + from + " ["+d.toString()+"] " +" to " + to + "= " + output);
+            } else {
+                logln("FAIL: locale: " + loc + ", from " + from + " ["+d.toString()+"] " +": expected " + to + " got " + output);
+            }
+        }
+    }
+//#endif
+
+
+    public void TestBadObjectError() {
+        Runtime r = Runtime.getRuntime();
+        DurationFormat df = DurationFormat.getInstance(new ULocale("en"));
+        String output = null;
+        try {
+            output = df.format(r);
+            errln("FAIL: did NOT get IllegalArgumentException! Should have. Formatted Runtime as " + output + " ???");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: expected: Caught iae: " + iae.toString() );
+        }
+        // try a second time, because it is a different code path for java < 1.5
+        try {
+            output = df.format(r);
+            errln("FAIL: [#2] did NOT get IllegalArgumentException! Should have. Formatted Runtime as " + output + " ???");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: [#2] expected: Caught iae: " + iae.toString() );
+        }
+    }
+
+    public void TestBadLocaleError() {
+        try {
+            DurationFormat df = DurationFormat.getInstance(new ULocale("und"));
+            df.format(new Date());
+            logln("Should have thrown err.");
+            errln("failed, should have thrown err.");
+        } catch(MissingResourceException mre) {
+            logln("PASS: caught missing resource exception on locale 'und'");
+            logln(mre.toString());
+        }
+    }
+
+    public void TestResourceWithCalendar() {
+        DurationFormat df = DurationFormat.getInstance(new ULocale("th@calendar=buddhist"));
+        // should pass, but return a default formatter for th.
+        if (df == null) {
+            errln("FAIL: null DurationFormat returned.");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java b/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java
new file mode 100644
index 0000000..fc5f095
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java
@@ -0,0 +1,798 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.*;
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Test cases for en
+ */
+public class LanguageTestRoot extends TestFmwk implements TimeUnitConstants {
+
+    private static final TimeUnit[] units = {
+        TimeUnit.YEAR, TimeUnit.MONTH, TimeUnit.WEEK, TimeUnit.DAY, TimeUnit.HOUR, 
+        TimeUnit.MINUTE, TimeUnit.SECOND, TimeUnit.MILLISECOND
+    };
+
+    protected boolean inheritTargets() {
+        return true;
+    }
+
+    private static final BasicPeriodFormatterService pfs = BasicPeriodFormatterService
+            .getInstance();
+
+    private TestData data;
+    private String locale;
+
+    //private DurationFormatterFactory dfFactory;
+    private PeriodFormatterFactory pfFactory;
+    private PeriodBuilderFactory pbFactory;
+
+    private PrintWriter pw;
+
+    private static final Map datacache = new HashMap(); // String->TestData
+
+    private static final long[] approxDurations = {
+        36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+        60*60*1000L, 60*1000L, 1000L, 1L
+    };
+
+    private static long approximateDuration(TimeUnit unit) {
+        return approxDurations[unit.ordinal()];
+    }
+
+    private static TestData getTestData(String locale) {
+        // debug
+        if (locale.equals("testFullPluralizedForms")) {
+            Thread.dumpStack();
+        }
+        TestData data = (TestData) datacache.get(locale);
+        if (data == null) {
+            try {
+                InputStream is = LanguageTestRoot.class
+                        .getResourceAsStream("testdata/testdata_" + locale
+                                + ".txt");
+                // debug
+                if (is == null) {
+                    System.out.println("test data for locale '" + locale
+                            + "' is null");
+                }
+                InputStreamReader isr = new InputStreamReader(is, "UTF-8");
+                data = new FileTestData(isr);
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                // swallow any exception
+            }
+        }
+        return data;
+    }
+
+    public LanguageTestRoot(String locale, boolean ignore) {
+        this(getTestData(locale), locale);
+    }
+
+    public LanguageTestRoot(TestData data, String locale) {
+        if (data == null) {
+            data = DefaultData.getInstance();
+        }
+        this.data = data;
+        this.locale = locale;
+    }
+
+    public static void writeData(PrintWriter pw, String locale)
+            throws Exception {
+        LanguageTestRoot test = new LanguageTestRoot(DefaultData.getInstance(),
+                locale);
+        test.writeData(pw);
+    }
+
+    private void writeData(PrintWriter writer) throws Exception {
+/*
+      pw = writer;
+      setUp();
+      testFullPluralizedForms();
+      tearDown();
+      setUp();
+      testMediumForms();
+      tearDown();
+      setUp();
+      testShortForms();
+      tearDown();
+      setUp();
+      testCustomMinutes();
+      tearDown();
+      setUp();
+      testLimitedUnits();
+      tearDown();
+      setUp();
+      testHalfUnits();
+      tearDown();
+      setUp();
+      testFractionalUnits();
+      tearDown();
+      setUp();
+      testMultipleUnits();
+      tearDown();
+      pw = null;
+      writer.flush();
+*/
+    }
+
+    protected void xAssertEquals(String msg, String[] expected, int n,
+            String actual) {
+        if (pw != null) {
+            pw.println(actual);
+        } else {
+            // java doesn't dump enough context to be useful, so do it myself
+            if (actual == null) {
+                assertEquals(msg, expected[n], actual);
+            } else {
+                if (!actual.equals(expected[n])) {
+                    fail("\n(!!"
+                            + msg
+                            + ") "
+                            + asciify("expected '" + expected[n]
+                                    + "' but got '" + actual + "'"));
+                }
+            }
+        }
+    }
+
+    protected static String timestring(Period ts) {
+        StringBuffer buf = new StringBuffer();
+        if (ts.isMoreThan()) {
+            buf.append("mt");
+        } else if (ts.isLessThan()) {
+            buf.append("lt");
+        }
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit p = units[i];
+            if (ts.isSet(p)) {
+                buf.append(Float.toString(ts.getCount(p)));
+                buf.append(p.toString().charAt(0));
+            }
+        }
+        buf.append(ts.isInPast() ? "p" : "f");
+        return buf.toString();
+    }
+
+    protected static String asciify(String s) {
+        StringBuffer sb = null;
+        for (int i = 0, e = s.length(); i < e; ++i) {
+            char c = s.charAt(i);
+            if (c < 0x20 || c > 0x7e) {
+                if (sb == null) {
+                    sb = new StringBuffer();
+                    sb.append(s.substring(0, i));
+                }
+                sb.append("\\u");
+                if (c < 0x10) {
+                    sb.append("000");
+                } else if (c < 0x100) {
+                    sb.append("00");
+                } else if (c < 0x1000) {
+                    sb.append("0");
+                }
+                sb.append(Integer.toHexString(c));
+            } else {
+                if (sb != null) {
+                    sb.append(c);
+                }
+            }
+        }
+        if (sb != null) {
+            System.out.println("asciify '" + s + "' --> '" + sb.toString()
+                    + "'");
+        }
+        return sb == null ? s : sb.toString();
+    }
+
+    private void xAssertEquals(String[] expected, int n, String actual) {
+        xAssertEquals(null, expected, n, actual);
+    }
+
+    protected void setUp() throws Exception {
+        pfFactory = pfs.newPeriodFormatterFactory().setLocale(locale);
+        pbFactory = pfs.newPeriodBuilderFactory().setLocale(locale);
+    }
+
+    public void testFullPluralizedForms() throws Exception {
+        setUp();
+        int[] counts = data.getFullPluralizedFormCounts();
+        String[] targets = data.getFullPluralizedFormTargets();
+        if (pw != null) {
+            pw.println("=fullPluralizedFormCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                int c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=fullPluralizedFormTargets");
+        }
+
+        int n = 0;
+        PeriodFormatter pf = pfFactory.getFormatter();
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            // System.err.print("\nunit: " + u);
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            for (int j = 0; j < counts.length; ++j) {
+                int c = counts[j];
+                // System.err.println("\ncount[" + j + "]: " + c);
+                Period p = pb.create(approximateDuration(u) * c);
+                String string = pf.format(p);
+                xAssertEquals(u.toString() + c, targets, n++, string);
+            }
+        }
+    }
+
+    public void testMediumForms() throws Exception {
+        setUp();
+        String[] targets = data.getMediumFormTargets();
+
+        if (pw != null) {
+            pw.println("=mediumFormTargets");
+        }
+
+        pfFactory.setUnitVariant(EUnitVariant.MEDIUM);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            Period p = pb.create(approximateDuration(u) * 3);
+            String string = pf.format(p);
+            xAssertEquals(u.toString(), targets, n++, string);
+        }
+    }
+
+    public void testShortForms() throws Exception {
+        setUp();
+        String[] targets = data.getShortFormTargets();
+
+        if (pw != null) {
+            pw.println("=shortFormTargets");
+        }
+
+        pfFactory.setUnitVariant(EUnitVariant.SHORT);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            Period p = pb.create(approximateDuration(u) * 3);
+            String string = pf.format(p);
+            xAssertEquals(u.toString(), targets, n++, string);
+        }
+    }
+
+    public void testCustomMinutes() throws Exception {
+        setUp();
+        String[] targets = data.getCustomMinuteTargets();
+
+        if (pw != null) {
+            pw.println("=customMinuteTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.INTEGER_CUSTOM);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        Period p = Period.at(1, HOUR);
+        int n = 0;
+        for (int i = 1; i < 12; ++i) {
+            p = p.and(i * 5, MINUTE).omit(HOUR);
+            xAssertEquals(targets, n++, pf.format(p));
+            p = p.and(1, HOUR);
+            xAssertEquals(targets, n++, pf.format(p));
+        }
+    }
+
+    public void testLimitedUnits() throws Exception {
+        setUp();
+        String[] targets = data.getLimitedUnitTargets();
+
+        if (pw != null) {
+            pw.println("=limitedPeriodTargets");
+        }
+
+        Period p = Period.at(1, MONTH);
+        int n = 0;
+        for (int i = 0; i < 3; ++i) {
+            switch (i) {
+            case 0:
+                p = p.at();
+                break;
+            case 1:
+                p = p.lessThan();
+                break;
+            case 2:
+                p = p.moreThan();
+                break;
+            }
+            for (int j = 0; j < 3; ++j) {
+                pfFactory.setDisplayPastFuture(true);
+                switch (j) {
+                case 0:
+                    pfFactory.setDisplayPastFuture(false);
+                    break;
+                case 1:
+                    p = p.inPast();
+                    break;
+                case 2:
+                    p = p.inFuture();
+                    break;
+                }
+
+                PeriodFormatter pf = pfFactory.getFormatter();
+
+                p = p.omit(WEEK).omit(DAY);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(2, WEEK);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(3, DAY);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+
+        p = p.omit(MONTH).omit(WEEK).omit(DAY).and(1, HOUR);
+        for (int i = 0; i < 3; ++i) {
+            switch (i) {
+            case 0:
+                p = p.at();
+                break;
+            case 1:
+                p = p.lessThan();
+                break;
+            case 2:
+                p = p.moreThan();
+                break;
+            }
+            for (int j = 0; j < 3; ++j) {
+                pfFactory.setDisplayPastFuture(true);
+                switch (j) {
+                case 0:
+                    pfFactory.setDisplayPastFuture(false);
+                    break;
+                case 1:
+                    p = p.inPast();
+                    break;
+                case 2:
+                    p = p.inFuture();
+                    break;
+                }
+
+                PeriodFormatter pf = pfFactory.getFormatter();
+
+                p = p.omit(MINUTE).omit(SECOND);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(2, MINUTE);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(3, SECOND);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+    }
+
+    public void testHalfUnits() throws Exception {
+        setUp();
+        int[] counts = data.getHalfUnitCounts();
+        String[] targets = data.getHalfUnitTargets();
+
+        if (pw != null) {
+            pw.println("=halfPeriodCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                int c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=halfPeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.HALF_FRACTION);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            for (int j = 0; j < counts.length; ++j) {
+                int c = counts[j];
+                Period p = Period.at(c + .5f, u);
+                String string = pf.format(p);
+                xAssertEquals(u.toString(), targets, n++, string);
+            }
+        }
+    }
+
+    public void testFractionalUnits() throws Exception {
+        setUp();
+        float[] counts = data.getFractionalUnitCounts();
+        String[] targets = data.getFractionalUnitTargets();
+
+        if (pw != null) {
+            pw.println("=fractionalPeriodCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                float c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=fractionalPeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.DECIMAL2);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            for (int j = 0; j < counts.length; ++j) {
+                float c = counts[j];
+                Period p = Period.at(c, u);
+                String string = pf.format(p);
+                xAssertEquals(u.toString(), targets, n++, string);
+            }
+        }
+    }
+
+    public void testMultipleUnits() throws Exception {
+        setUp();
+        String[] targets = data.getMultipleUnitTargets();
+
+        if (pw != null) {
+            pw.println("=multiplePeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.INTEGER);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length - 1; ++i) {
+            Period p = Period.at(1, units[i]).and(2, units[i + 1]);
+            xAssertEquals(targets, n++, pf.format(p));
+            if (i < units.length - 2) {
+                p = Period.at(1, units[i]).and(3, units[i + 2]);
+                xAssertEquals(targets, n++, pf.format(p));
+                p = Period.at(1, units[i]).and(2, units[i + 1]).and(3,
+                        units[i + 2]);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+    }
+
+    public static abstract class TestData {
+        abstract int[] getFullPluralizedFormCounts();
+        abstract String[] getFullPluralizedFormTargets();
+        abstract String[] getMediumFormTargets();
+        abstract String[] getShortFormTargets();
+        abstract String[] getCustomMinuteTargets();
+        abstract String[] getLimitedUnitTargets();
+        abstract int[] getHalfUnitCounts();
+        abstract String[] getHalfUnitTargets();
+        abstract float[] getFractionalUnitCounts();
+        abstract String[] getFractionalUnitTargets();
+        abstract String[] getMultipleUnitTargets();
+    }
+
+}
+
+class FileTestData extends LanguageTestRoot.TestData {
+    private int[] fullPluralizedFormCounts;
+    private String[] fullPluralizedFormTargets;
+    private String[] mediumFormTargets;
+    private String[] shortFormTargets;
+    private String[] customMinuteTargets;
+    private String[] limitedUnitTargets;
+    private int[] halfUnitCounts;
+    private String[] halfUnitTargets;
+    private float[] fractionalUnitCounts;
+    private String[] fractionalUnitTargets;
+    private String[] multipleUnitTargets;
+
+    int[] getFullPluralizedFormCounts() {
+        return fullPluralizedFormCounts;
+    }
+
+    String[] getFullPluralizedFormTargets() {
+        return fullPluralizedFormTargets;
+    }
+
+    String[] getMediumFormTargets() {
+        return mediumFormTargets;
+    }
+
+    String[] getShortFormTargets() {
+        return shortFormTargets;
+    }
+
+    String[] getCustomMinuteTargets() {
+        return customMinuteTargets;
+    }
+
+    String[] getLimitedUnitTargets() {
+        return limitedUnitTargets;
+    }
+
+    int[] getHalfUnitCounts() {
+        return halfUnitCounts;
+    }
+
+    String[] getHalfUnitTargets() {
+        return halfUnitTargets;
+    }
+
+    float[] getFractionalUnitCounts() {
+        return fractionalUnitCounts;
+    }
+
+    String[] getFractionalUnitTargets() {
+        return fractionalUnitTargets;
+    }
+
+    String[] getMultipleUnitTargets() {
+        return multipleUnitTargets;
+    }
+
+    public FileTestData(InputStreamReader isr) throws Exception {
+        BufferedReader br = new BufferedReader(isr);
+
+        class Wrapup {
+            int[] intArray;
+
+            float[] floatArray;
+
+            String[] stringArray;
+
+            void wrapup(List /* of String */list, Element element) {
+                if (list == null)
+                    return;
+
+                switch (element.mode) {
+                case EMode.mString:
+                    stringArray = (String[]) list.toArray(new String[list
+                            .size()]);
+                    break;
+
+                case EMode.mInt:
+                    intArray = new int[list.size()];
+                    for (int i = 0, e = intArray.length; i < e; ++i) {
+                        intArray[i] = Integer.parseInt((String) list.get(i));
+                    }
+                    break;
+
+                case EMode.mFloat:
+                    floatArray = new float[list.size()];
+                    for (int i = 0, e = floatArray.length; i < e; ++i) {
+                        floatArray[i] = Float.parseFloat((String) list.get(i));
+                    }
+                    break;
+                }
+
+                switch (element.which) {
+                case Element.XfullPluralizedFormCounts:
+                    FileTestData.this.fullPluralizedFormCounts = intArray;
+                    break;
+                case Element.XfullPluralizedFormTargets:
+                    FileTestData.this.fullPluralizedFormTargets = stringArray;
+                    break;
+                case Element.XmediumFormTargets:
+                    FileTestData.this.mediumFormTargets = stringArray;
+                    break;
+                case Element.XshortFormTargets:
+                    FileTestData.this.shortFormTargets = stringArray;
+                    break;
+                case Element.XcustomMinuteTargets:
+                    FileTestData.this.customMinuteTargets = stringArray;
+                    break;
+                case Element.XlimitedUnitTargets:
+                    FileTestData.this.limitedUnitTargets = stringArray;
+                    break;
+                case Element.XhalfUnitCounts:
+                    FileTestData.this.halfUnitCounts = intArray;
+                    break;
+                case Element.XhalfUnitTargets:
+                    FileTestData.this.halfUnitTargets = stringArray;
+                    break;
+                case Element.XfractionalUnitCounts:
+                    FileTestData.this.fractionalUnitCounts = floatArray;
+                    break;
+                case Element.XfractionalUnitTargets:
+                    FileTestData.this.fractionalUnitTargets = stringArray;
+                    break;
+                case Element.XmultipleUnitTargets:
+                    FileTestData.this.multipleUnitTargets = stringArray;
+                    break;
+                }
+            }
+        }
+        Wrapup w = new Wrapup();
+
+        List /* of String */list = null;
+        Element element = null;
+        String line = null;
+        while (null != (line = br.readLine())) {
+            line = line.trim();
+            if (line.length() == 0 || line.charAt(0) == '#')
+                continue;
+            if (line.charAt(0) == '=') {
+                w.wrapup(list, element);
+
+                list = new ArrayList();
+                element = Element.forString(line.substring(1));
+            } else if (line.equals("null")) {
+                list.add(null);
+            } else {
+                list.add(line);
+            }
+        }
+        w.wrapup(list, element);
+    }
+}
+
+class DefaultData extends LanguageTestRoot.TestData {
+    private static final int[] fullPluralizedFormCounts = { -3, -2, -1, 0, 1,
+            2, 3, 5, 10, 11, 12, 20, 21, 22, 23, 25 };
+
+    private static final int[] halfUnitCounts = { 0, 1, 2, 5, 10, 11, 12, 20,
+            21, 22 };
+
+    private static final float[] fractionalUnitCounts = { 0.025f, 1.0f, 1.205f,
+            2.125f, 12.05f };
+
+    private static final DefaultData instance = new DefaultData();
+
+    private DefaultData() {
+    }
+
+    public static DefaultData getInstance() {
+        return instance;
+    }
+
+    int[] getFullPluralizedFormCounts() {
+        return fullPluralizedFormCounts;
+    }
+
+    String[] getFullPluralizedFormTargets() {
+        return null;
+    }
+
+    String[] getMediumFormTargets() {
+        return null;
+    }
+
+    String[] getShortFormTargets() {
+        return null;
+    }
+
+    String[] getCustomMinuteTargets() {
+        return null;
+    }
+
+    String[] getLimitedUnitTargets() {
+        return null;
+    }
+
+    int[] getHalfUnitCounts() {
+        return halfUnitCounts;
+    }
+
+    String[] getHalfUnitTargets() {
+        return null;
+    }
+
+    float[] getFractionalUnitCounts() {
+        return fractionalUnitCounts;
+    }
+
+    String[] getFractionalUnitTargets() {
+        return null;
+    }
+
+    String[] getMultipleUnitTargets() {
+        return null;
+    }
+}
+
+class EMode {
+    static final int mString = 0;
+    static final int mInt = 1;
+    static final int mFloat = 2;
+}
+
+class Element {
+    final String name;
+    final int mode;
+    final int which;
+
+    static int counter = 0;
+    static Element[] list = new Element[11];
+
+    Element(String name) {
+        this.name = name;
+        mode = EMode.mString;
+        this.which = counter++;
+        list[this.which] = this;
+    }
+
+    Element(String name, int mode) {
+        this.name = name;
+        this.mode = mode;
+        this.which = counter++;
+        list[this.which] = this;
+    }
+
+    static final int XfullPluralizedFormCounts = 0;
+    static final int XfullPluralizedFormTargets = 1;
+    static final int XmediumFormTargets = 2;
+    static final int XshortFormTargets = 3;
+    static final int XcustomMinuteTargets = 4;
+    static final int XlimitedUnitTargets = 5;
+    static final int XhalfUnitCounts = 6;
+    static final int XhalfUnitTargets = 7;
+    static final int XfractionalUnitCounts = 8;
+    static final int XfractionalUnitTargets = 9;
+    static final int XmultipleUnitTargets = 10;
+
+    static final Element fullPluralizedFormCounts = new Element(
+            "fullPluralizedFormCounts", EMode.mInt);
+
+    static final Element fullPluralizedFormTargets = new Element(
+            "fullPluralizedFormTargets");
+
+    static final Element mediumFormTargets = new Element("mediumFormTargets");
+
+    static final Element shortFormTargets = new Element("shortFormTargets");
+
+    static final Element customMinuteTargets = new Element(
+            "customMinuteTargets");
+
+    static final Element limitedUnitTargets = new Element("limitedUnitTargets");
+
+    static final Element halfUnitCounts = new Element("halfUnitCounts",
+            EMode.mInt);
+
+    static final Element halfUnitTargets = new Element("halfUnitTargets");
+
+    static final Element fractionalUnitCounts = new Element(
+            "fractionalUnitCounts", EMode.mFloat);
+
+    static final Element fractionalUnitTargets = new Element(
+            "fractionalUnitTargets");
+
+    static final Element multipleUnitTargets = new Element(
+            "multipleUnitTargets");
+
+    static Element forString(String s) {
+        for (int i = 0; i < list.length; ++i) {
+            if (list[i].name.equals(s)) {
+                return list[i];
+            }
+        }
+        return null;
+    }
+}
+      
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java b/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
new file mode 100644
index 0000000..b83f5c7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
@@ -0,0 +1,91 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2007 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterService;
+import com.ibm.icu.impl.duration.PeriodBuilder;
+import com.ibm.icu.impl.duration.TimeUnit;
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodBuilderFactory;
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+public class PeriodBuilderFactoryTest extends TestFmwk implements TimeUnitConstants {
+    private PeriodBuilderFactory pbf;
+
+    private static final long[] approxDurations = {
+      36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+      60*60*1000L, 60*1000L, 1000L, 1L
+    };
+    
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new PeriodBuilderFactoryTest().run(args);
+    }
+
+    public void testSetAvailableUnitRange() {
+        // sanity check, make sure by default all units are set
+        pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();
+        pbf.setLocale("en"); // in en locale, all units always available
+        PeriodBuilder b = pbf.getSingleUnitBuilder();
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));
+            assertTrue(null, p.isSet(unit));
+        }
+
+        pbf.setAvailableUnitRange(MINUTE, MONTH);
+        // units that are not available are never set
+        b = pbf.getSingleUnitBuilder();
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));
+            assertEquals(null, p.isSet(unit), unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal());
+        }
+
+        // fixed unit builder returns null when unit is not available
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            b = pbf.getFixedUnitBuilder(unit);
+            if (unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal()) {
+                assertNotNull(null, b);
+            } else {
+                assertNull(null, b);
+            }
+        }
+
+        // can't set empty range
+        try {
+            pbf.setAvailableUnitRange(MONTH, MINUTE);
+            fail("set empty range");
+        } catch (IllegalArgumentException e) {
+            // pass
+        }
+    }
+
+    public void testSetUnitIsAvailable() {
+        pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();
+        pbf.setAvailableUnitRange(MONTH, MONTH);
+        assertNotNull(null, pbf.getSingleUnitBuilder());
+        assertNotNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNotNull(null, pbf.getMultiUnitBuilder(2));
+
+        // now no units are available, make sure we can't generate a builder
+        pbf.setUnitIsAvailable(MONTH, false);
+        assertNull(null, pbf.getSingleUnitBuilder());
+        assertNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNull(null, pbf.getMultiUnitBuilder(2));
+
+        pbf.setUnitIsAvailable(DAY, true);
+        assertNotNull(null, pbf.getSingleUnitBuilder());
+        assertNotNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNotNull(null, pbf.getMultiUnitBuilder(2));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java b/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java
new file mode 100644
index 0000000..7a7927f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java
@@ -0,0 +1,22 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class PeriodBuilderTest extends TestFmwk {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new PeriodBuilderTest().run(args);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodTest.java b/src/com/ibm/icu/dev/test/duration/PeriodTest.java
new file mode 100644
index 0000000..ba2fda3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodTest.java
@@ -0,0 +1,109 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.TimeUnit;
+
+public class PeriodTest extends TestFmwk {
+
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new PeriodTest().run(args);
+    }
+
+    public void testIsSet() {
+        Period p = Period.at(0, TimeUnit.YEAR);
+        assertTrue(null, p.isSet());
+        assertTrue(null, p.isSet(TimeUnit.YEAR));
+        assertFalse(null, p.isSet(TimeUnit.MONTH));
+        assertEquals(null, 0f, p.getCount(TimeUnit.YEAR), .1f);
+        p = p.omit(TimeUnit.YEAR);
+        assertFalse(null, p.isSet(TimeUnit.YEAR));
+    }
+
+    public void testMoreLessThan() {
+        Period p = Period.moreThan(1, TimeUnit.YEAR);
+        assertTrue(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+        p = p.at();
+        assertFalse(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+        p = p.lessThan();
+        assertFalse(null, p.isMoreThan());
+        assertTrue(null, p.isLessThan());
+        p = p.moreThan();
+        assertTrue(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+
+        p = Period.lessThan(1, TimeUnit.YEAR);
+        assertFalse(null, p.isMoreThan());
+        assertTrue(null, p.isLessThan());
+
+        p = Period.at(1, TimeUnit.YEAR);
+        assertFalse(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+
+        assertEquals(null, 1f, p.getCount(TimeUnit.YEAR), .1f);
+    }
+
+    public void testFuturePast() {
+        Period p = Period.at(1, TimeUnit.YEAR).inFuture();
+        assertTrue(null, p.isInFuture());
+        p = p.inPast();
+        assertFalse(null, p.isInFuture());
+        p = p.inFuture(true);
+        assertTrue(null, p.isInFuture());
+        p = p.inFuture(false);
+        assertFalse(null, p.isInFuture());
+    }
+
+    public void testAnd() {
+        Period p = Period.at(1, TimeUnit.YEAR).and(3, TimeUnit.MONTH)
+                .inFuture();
+        assertTrue(null, p.isSet(TimeUnit.YEAR));
+        assertTrue(null, p.isSet(TimeUnit.MONTH));
+        assertEquals(null, 3f, p.getCount(TimeUnit.MONTH), .1f);
+        p = p.and(2, TimeUnit.MONTH);
+        assertEquals(null, 2f, p.getCount(TimeUnit.MONTH), .1f);
+    }
+
+    public void testInvalidCount() {
+        try {
+            Period.at(-1, TimeUnit.YEAR);
+            fail("at -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        try {
+            Period.moreThan(-1, TimeUnit.YEAR);
+            fail("moreThan -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        try {
+            Period.lessThan(-1, TimeUnit.YEAR);
+            fail("lessThan -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        Period p = Period.at(1, TimeUnit.YEAR);
+        try {
+            p = p.and(-1, TimeUnit.MONTH);
+            fail("and -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java b/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
new file mode 100644
index 0000000..cb88a5b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
@@ -0,0 +1,39 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.impl.ResourceBasedPeriodFormatterDataService;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+
+import java.util.Iterator;
+import java.util.Collection;
+
+public class ResourceBasedPeriodFormatterDataServiceTest extends TestFmwk {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new ResourceBasedPeriodFormatterDataServiceTest().run(args);
+  }
+
+  public void testAvailable() {
+    ResourceBasedPeriodFormatterDataService service =
+        ResourceBasedPeriodFormatterDataService.getInstance();
+    Collection locales = service.getAvailableLocales();
+    for (Iterator i = locales.iterator(); i.hasNext();) {
+      String locale = (String)i.next();
+      PeriodFormatterData pfd = service.get(locale);
+      assertFalse(locale + ": " + pfd.pluralization(), -1 == pfd.pluralization());
+    }
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/TestAll.java b/src/com/ibm/icu/dev/test/duration/TestAll.java
new file mode 100644
index 0000000..9b1a17f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/TestAll.java
@@ -0,0 +1,38 @@
+// Copyright 2006 Google Inc.  All Rights Reserved.
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+                  "com.ibm.icu.dev.test.duration.ICUDurationTest",
+                  "com.ibm.icu.dev.test.duration.DataReadWriteTest",
+                  "com.ibm.icu.dev.test.duration.PeriodBuilderFactoryTest",
+                  "com.ibm.icu.dev.test.duration.PeriodBuilderTest",
+                  "com.ibm.icu.dev.test.duration.PeriodTest",
+                  "com.ibm.icu.dev.test.duration.ResourceBasedPeriodFormatterDataServiceTest",
+                  "com.ibm.icu.dev.test.duration.languages.TestAll",
+              },
+              "Duration Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Duration";
+}
+
diff --git a/src/com/ibm/icu/dev/test/duration/languages/TestAll.java b/src/com/ibm/icu/dev/test/duration/languages/TestAll.java
new file mode 100644
index 0000000..ffaaa0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/TestAll.java
@@ -0,0 +1,44 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+//                  "com.ibm.icu.dev.test.duration.languages.Test_ar_EG",
+                  "com.ibm.icu.dev.test.duration.languages.Test_en",
+                  "com.ibm.icu.dev.test.duration.languages.Test_es",
+                  "com.ibm.icu.dev.test.duration.languages.Test_fr",
+                  "com.ibm.icu.dev.test.duration.languages.Test_he_IL",
+                  "com.ibm.icu.dev.test.duration.languages.Test_hi",
+                  "com.ibm.icu.dev.test.duration.languages.Test_it",
+                  "com.ibm.icu.dev.test.duration.languages.Test_ja",
+                  "com.ibm.icu.dev.test.duration.languages.Test_ko",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hans",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hans_SG",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hant",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hant_HK",
+              },
+              "Duration Language Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "DurationLanguages";
+}
+
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
new file mode 100644
index 0000000..09a059c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for ar_EG
+ */
+public class Test_ar_EG extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ar_EG().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ar_EG() {
+    super("ar_EG", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_en.java b/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
new file mode 100644
index 0000000..d9fad85
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
@@ -0,0 +1,29 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for en
+ */
+public class Test_en extends LanguageTestRoot {
+
+  public static void main(String[] args) {
+      new Test_en().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_en() {
+    super("en", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_es.java b/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
new file mode 100644
index 0000000..f1ccaf2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for es
+ */
+public class Test_es extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_es().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_es() {
+    super("es", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java b/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
new file mode 100644
index 0000000..eb17231
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for fr
+ */
+public class Test_fr extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_fr().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_fr() {
+    super("fr", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java b/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
new file mode 100644
index 0000000..cb7e3eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for he_IL
+ */
+public class Test_he_IL extends LanguageTestRoot {
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_he_IL().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_he_IL() {
+    super("he_IL", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java b/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
new file mode 100644
index 0000000..bf33b75
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
@@ -0,0 +1,71 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/*
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodFormatter;
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory;
+import com.ibm.icu.impl.duration.PeriodFormatterFactory;
+*/
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+/**
+ * Test cases for hi
+ */
+public class Test_hi extends LanguageTestRoot implements TimeUnitConstants {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_hi().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_hi() {
+    super("hi", false);
+  }
+
+  public void testMonthNames() {
+    // test that month uses the plural form with singular digit
+    // in these cases:
+    // "1 months from now"
+    // "1 months, and 2 weeks from now"
+    // "more than 1 months",
+    // "more than 1 months ago"
+/*
+    Period[] times = {
+      Period.at(1, MONTH).inFuture(),
+      Period.at(1, MONTH).and(2, WEEK).inFuture(),
+      Period.moreThan(1, MONTH),
+      Period.moreThan(1, MONTH).inFuture(),
+    };
+
+    String[] targets = {
+      "\u0905\u092d\u0940 \u0938\u0947 \u0967 \u092e\u0939\u0940\u0928\u0947 \u092c\u093e\u0926",
+      "\u0905\u092d\u0940 \u0938\u0947 \u0967 \u092e\u0939\u0940\u0928\u0947 \u0914\u0930 \u0968 \u0938\u092a\u094d\u0924\u093e\u0939 \u092c\u093e\u0926",
+      "\u0967 \u092e\u0939\u0940\u0928\u0947 \u0938\u0947 \u0915\u092e",
+      "\u0967 \u092e\u0939\u0940\u0928\u0947 \u0938\u0947 \u0915\u092e \u092a\u0939\u0932\u0947",
+    };
+
+    PeriodFormatterFactory pff = BasicPeriodFormatterFactory.getDefault()
+        .setLocale("hi");
+    PeriodFormatter pf = pff.getFormatter();
+    for (int i = 0; i < targets.length; ++i) {
+        xAssertEquals(timestring(times[i]), targets, i, pf.format(times[i]));
+    }
+*/
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_it.java b/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
new file mode 100644
index 0000000..518788b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for it
+ */
+public class Test_it extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_it().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_it() {
+    super("it", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
new file mode 100644
index 0000000..02619e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
@@ -0,0 +1,69 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory;
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodFormatter;
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+/**
+ * Test cases for en
+ */
+public class Test_ja extends LanguageTestRoot implements TimeUnitConstants {
+  private BasicPeriodFormatterFactory pff;
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ja().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ja() {
+    super("ja", false);
+    this.pff = (BasicPeriodFormatterFactory)BasicPeriodFormatterFactory.getDefault().
+        setLocale("ja");
+  }
+
+  public void testNoMillis() {
+    // explicit test that japanese doesn't use both seconds
+    // and milliseconds when formatting.  if both appear,
+    // force decimal3 seconds and merge millis with it.
+      logln("test disabled");
+      /*
+    PeriodFormatter pf = pff.getFormatter();
+    Period p = Period.at(1, MILLISECOND);
+    assertEquals(null, "1\u30df\u30ea\u79d2\u524d", pf.format(p));
+
+    p.and(1, SECOND);
+    assertEquals(null, "1.001\u79d2\u524d", pf.format(p));
+
+    p.and(1, MINUTE).omit(SECOND);
+    assertEquals(null, "1\u5206\u30681\u30df\u30ea\u79d2\u524d", pf.format(p));
+      */
+  }
+
+  public void testOmitZeros() {
+    // zeros are treated as omitted
+
+    PeriodFormatter pf = pff.getFormatter();
+    Period p = Period.at(1, MINUTE).and(0, SECOND).and(1, MILLISECOND);
+    String s1 = pf.format(p);
+    p.omit(SECOND);
+    String s2 = pf.format(p);
+    assertEquals(null, s1, s2);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
new file mode 100644
index 0000000..ae722a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for ko
+ */
+public class Test_ko extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ko().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ko() {
+    super("ko", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
new file mode 100644
index 0000000..f27d0a1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for ru
+ */
+public class Test_ru extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ru().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ru() {
+    super("ru", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
new file mode 100644
index 0000000..1dbc28a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hans
+ */
+public class Test_zh_Hans extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hans().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hans() {
+    super("zh_Hans", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
new file mode 100644
index 0000000..3932c06
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for zh_Hans_SG
+ */
+public class Test_zh_Hans_SG extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hans_SG().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hans_SG() {
+    super("zh_Hans_SG", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
new file mode 100644
index 0000000..df6963f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hant
+ */
+public class Test_zh_Hant extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hant().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hant() {
+    super("zh_Hant", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
new file mode 100644
index 0000000..4e49aff
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hant_HK
+ */
+public class Test_zh_Hant_HK extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hant_HK().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hant_HK() {
+    super("zh_Hant_HK", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt
new file mode 100644
index 0000000..40f20ee
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+منذ ٣ سنوات
+منذ سنتين
+منذ سنة
+٠ سنوات
+سنة بعد الآن
+سنتين بعد الآن
+٣ سنوات بعد الآن
+٥ سنوات بعد الآن
+١٠ سنوات بعد الآن
+١١ سنة بعد الآن
+١٢ سنة بعد الآن
+٢٠ سنة بعد الآن
+٢١ سنة بعد الآن
+٢٢ سنة بعد الآن
+٢٣ سنة بعد الآن
+٢٥ سنة بعد الآن
+منذ ٣ شهور
+منذ شهرين
+منذ شهر
+٠ شهور
+شهر بعد الآن
+شهرين بعد الآن
+٣ شهور بعد الآن
+٥ شهور بعد الآن
+١٠ شهور بعد الآن
+١١ شهر بعد الآن
+١٢ شهر بعد الآن
+٢٠ شهر بعد الآن
+٢١ شهر بعد الآن
+٢٢ شهر بعد الآن
+٢٣ شهر بعد الآن
+٢٥ شهر بعد الآن
+منذ ٣ أسابيع
+منذ أسبوعين
+منذ أسبوع
+٠ أسابيع
+أسبوع بعد الآن
+أسبوعين بعد الآن
+٣ أسابيع بعد الآن
+٥ أسابيع بعد الآن
+١٠ أسابيع بعد الآن
+١١ أسبوع بعد الآن
+١٢ أسبوع بعد الآن
+٢٠ أسبوع بعد الآن
+٢١ أسبوع بعد الآن
+٢٢ أسبوع بعد الآن
+٢٣ أسبوع بعد الآن
+٢٥ أسبوع بعد الآن
+منذ ٣ أيام
+منذ يومين
+منذ يوم
+٠ أيام
+يوم بعد الآن
+يومين بعد الآن
+٣ أيام بعد الآن
+٥ أيام بعد الآن
+١٠ أيام بعد الآن
+١١ يوم بعد الآن
+١٢ يوم بعد الآن
+٢٠ يوم بعد الآن
+٢١ يوم بعد الآن
+٢٢ يوم بعد الآن
+٢٣ يوم بعد الآن
+٢٥ يوم بعد الآن
+منذ ٣ ساعات
+منذ ساعتين
+منذ ساعة
+٠ ساعات
+ساعة بعد الآن
+ساعتين بعد الآن
+٣ ساعات بعد الآن
+٥ ساعات بعد الآن
+١٠ ساعات بعد الآن
+١١ ساعة بعد الآن
+١٢ ساعة بعد الآن
+٢٠ ساعة بعد الآن
+٢١ ساعة بعد الآن
+٢٢ ساعة بعد الآن
+٢٣ ساعة بعد الآن
+٢٥ ساعة بعد الآن
+منذ ٣ دقائق
+منذ دقيقتين
+منذ دقيقة
+٠ دقائق
+دقيقة بعد الآن
+دقيقتين بعد الآن
+٣ دقائق بعد الآن
+٥ دقائق بعد الآن
+١٠ دقائق بعد الآن
+١١ دقيقة بعد الآن
+١٢ دقيقة بعد الآن
+٢٠ دقيقة بعد الآن
+٢١ دقيقة بعد الآن
+٢٢ دقيقة بعد الآن
+٢٣ دقيقة بعد الآن
+٢٥ دقيقة بعد الآن
+منذ ٣ ثواني
+منذ ثانيتين
+منذ ثانية
+٠ ثواني
+ثانية بعد الآن
+ثانيتين بعد الآن
+٣ ثواني بعد الآن
+٥ ثواني بعد الآن
+١٠ ثواني بعد الآن
+١١ ثانية بعد الآن
+١٢ ثانية بعد الآن
+٢٠ ثانية بعد الآن
+٢١ ثانية بعد الآن
+٢٢ ثانية بعد الآن
+٢٣ ثانية بعد الآن
+٢٥ ثانية بعد الآن
+منذ ٣ أجزاء من الثانية
+منذ جزئين من الثانية
+منذ جزء من الثانية
+٠ أجزاء من الثانية
+جزء من الثانية بعد الآن
+جزئين من الثانية بعد الآن
+٣ أجزاء من الثانية بعد الآن
+٥ أجزاء من الثانية بعد الآن
+١٠ أجزاء من الثانية بعد الآن
+١١ جزء من الثانية بعد الآن
+١٢ جزء من الثانية بعد الآن
+٢٠ جزء من الثانية بعد الآن
+٢١ جزء من الثانية بعد الآن
+٢٢ جزء من الثانية بعد الآن
+٢٣ جزء من الثانية بعد الآن
+٢٥ جزء من الثانية بعد الآن
+=mediumFormTargets
+٣ سنوات
+٣ شهور
+٣ أسابيع
+٣ أيام
+٣ ساعات
+٣ دقائق
+٣ ثواني
+٣ أجزاء من الثانية
+=shortFormTargets
+٣ سنوات
+٣ شهور
+٣ أسابيع
+٣ أيام
+٣ ساعات
+٣ دقائق
+٣ ثواني
+٣ أجزاء من الثانية
+=customMinuteTargets
+٥ دقائق
+ساعة و٥ دقائق
+١٠ دقائق
+ساعة و١٠ دقائق
+١٥ دقيقة
+ساعة و١٥ دقيقة
+٢٠ دقيقة
+ساعة و٢٠ دقيقة
+٢٥ دقيقة
+ساعة و٢٥ دقيقة
+٣٠ دقيقة
+ساعة و٣٠ دقيقة
+٣٥ دقيقة
+ساعة و٣٥ دقيقة
+٤٠ دقيقة
+ساعة و٤٠ دقيقة
+٤٥ دقيقة
+ساعة و٤٥ دقيقة
+٥٠ دقيقة
+ساعة و٥٠ دقيقة
+٥٥ دقيقة
+ساعة و٥٥ دقيقة
+=limitedUnitTargets
+شهر
+شهر وأسبوعين
+شهر، وأسبوعين، و٣ أيام
+منذ شهر
+منذ شهر وأسبوعين
+منذ شهر، وأسبوعين، و٣ أيام
+شهر بعد الآن
+شهر وأسبوعين بعد الآن
+شهر، وأسبوعين، و٣ أيام بعد الآن
+أقل من شهر
+أقل من شهر وأسبوعين
+أقل من شهر، وأسبوعين، و٣ أيام
+منذ أقل من شهر
+منذ أقل من شهر وأسبوعين
+منذ أقل من شهر، وأسبوعين، و٣ أيام
+أقل من شهر بعد الآن
+أقل من شهر وأسبوعين بعد الآن
+أقل من شهر، وأسبوعين، و٣ أيام بعد الآن
+أكثر من شهر
+أكثر من شهر وأسبوعين
+أكثر من شهر، وأسبوعين، و٣ أيام
+منذ أكثر من شهر
+منذ أكثر من شهر وأسبوعين
+منذ أكثر من شهر، وأسبوعين، و٣ أيام
+أكثر من شهر بعد الآن
+أكثر من شهر وأسبوعين بعد الآن
+أكثر من شهر، وأسبوعين، و٣ أيام بعد الآن
+ساعة
+ساعة ودقيقتين
+ساعة، ودقيقتين، و٣ ثواني
+منذ ساعة
+منذ ساعة ودقيقتين
+منذ ساعة، ودقيقتين، و٣ ثواني
+ساعة بعد الآن
+ساعة ودقيقتين بعد الآن
+ساعة، ودقيقتين، و٣ ثواني بعد الآن
+أقل من ساعة
+أقل من ساعة ودقيقتين
+أقل من ساعة، ودقيقتين، و٣ ثواني
+منذ أقل من ساعة
+منذ أقل من ساعة ودقيقتين
+منذ أقل من ساعة، ودقيقتين، و٣ ثواني
+أقل من ساعة بعد الآن
+أقل من ساعة ودقيقتين بعد الآن
+أقل من ساعة، ودقيقتين، و٣ ثواني بعد الآن
+أكثر من ساعة
+أكثر من ساعة ودقيقتين
+أكثر من ساعة، ودقيقتين، و٣ ثواني
+منذ أكثر من ساعة
+منذ أكثر من ساعة ودقيقتين
+منذ أكثر من ساعة، ودقيقتين، و٣ ثواني
+أكثر من ساعة بعد الآن
+أكثر من ساعة ودقيقتين بعد الآن
+أكثر من ساعة، ودقيقتين، و٣ ثواني بعد الآن
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+نصف سنة
+سنة ونصف
+سنتين ونصف
+٥ سنوات ونصف
+١٠ سنوات ونصف
+١١ سنة ونصف
+١٢ سنة ونصف
+٢٠ سنة ونصف
+٢١ سنة ونصف
+٢٢ سنة ونصف
+نصف شهر
+شهر ونصف
+شهرين ونصف
+٥ شهور ونصف
+١٠ شهور ونصف
+١١ شهر ونصف
+١٢ شهر ونصف
+٢٠ شهر ونصف
+٢١ شهر ونصف
+٢٢ شهر ونصف
+نصف أسبوع
+أسبوع ونصف
+أسبوعين ونصف
+٥ أسابيع ونصف
+١٠ أسابيع ونصف
+١١ أسبوع ونصف
+١٢ أسبوع ونصف
+٢٠ أسبوع ونصف
+٢١ أسبوع ونصف
+٢٢ أسبوع ونصف
+نصف يوم
+يوم ونصف
+يومين ونصف
+٥ أيام ونصف
+١٠ أيام ونصف
+١١ يوم ونصف
+١٢ يوم ونصف
+٢٠ يوم ونصف
+٢١ يوم ونصف
+٢٢ يوم ونصف
+نصف ساعة
+ساعة ونصف
+ساعتين ونصف
+٥ ساعات ونصف
+١٠ ساعات ونصف
+١١ ساعة ونصف
+١٢ ساعة ونصف
+٢٠ ساعة ونصف
+٢١ ساعة ونصف
+٢٢ ساعة ونصف
+نصف دقيقة
+دقيقة ونصف
+دقيقتين ونصف
+٥ دقائق ونصف
+١٠ دقائق ونصف
+١١ دقيقة ونصف
+١٢ دقيقة ونصف
+٢٠ دقيقة ونصف
+٢١ دقيقة ونصف
+٢٢ دقيقة ونصف
+نصف ثانية
+ثانية ونصف
+ثانيتين ونصف
+٥ ثواني ونصف
+١٠ ثواني ونصف
+١١ ثانية ونصف
+١٢ ثانية ونصف
+٢٠ ثانية ونصف
+٢١ ثانية ونصف
+٢٢ ثانية ونصف
+نصف جزء من الثانية
+جزء من الثانية ونصف
+جزئين من الثانية ونصف
+٥ أجزاء من الثانية ونصف
+١٠ أجزاء من الثانية ونصف
+١١ جزء من الثانية ونصف
+١٢ جزء من الثانية ونصف
+٢٠ جزء من الثانية ونصف
+٢١ جزء من الثانية ونصف
+٢٢ جزء من الثانية ونصف
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+٠٫٠٢ سنة
+١٫٠٠ سنة
+١٫٢٠ سنة
+٢٫١٢ سنة
+١٢٫٠٥ سنة
+٠٫٠٢ شهر
+١٫٠٠ شهر
+١٫٢٠ شهر
+٢٫١٢ شهر
+١٢٫٠٥ شهر
+٠٫٠٢ أسبوع
+١٫٠٠ أسبوع
+١٫٢٠ أسبوع
+٢٫١٢ أسبوع
+١٢٫٠٥ أسبوع
+٠٫٠٢ يوم
+١٫٠٠ يوم
+١٫٢٠ يوم
+٢٫١٢ يوم
+١٢٫٠٥ يوم
+٠٫٠٢ ساعة
+١٫٠٠ ساعة
+١٫٢٠ ساعة
+٢٫١٢ ساعة
+١٢٫٠٥ ساعة
+٠٫٠٢ دقيقة
+١٫٠٠ دقيقة
+١٫٢٠ دقيقة
+٢٫١٢ دقيقة
+١٢٫٠٥ دقيقة
+٠٫٠٢ ثانية
+١٫٠٠ ثانية
+١٫٢٠ ثانية
+٢٫١٢ ثانية
+١٢٫٠٥ ثانية
+٠٫٠٢ جزء من الثانية
+١٫٠٠ جزء من الثانية
+١٫٢٠ جزء من الثانية
+٢٫١٢ جزء من الثانية
+١٢٫٠٥ جزء من الثانية
+=multipleUnitTargets
+سنة وشهرين
+سنة و٣ أسابيع
+سنة، وشهرين، و٣ أسابيع
+شهر وأسبوعين
+شهر و٣ أيام
+شهر، وأسبوعين، و٣ أيام
+أسبوع ويومين
+أسبوع و٣ ساعات
+أسبوع، ويومين، و٣ ساعات
+يوم وساعتين
+يوم و٣ دقائق
+يوم، وساعتين، و٣ دقائق
+ساعة ودقيقتين
+ساعة و٣ ثواني
+ساعة، ودقيقتين، و٣ ثواني
+دقيقة وثانيتين
+دقيقة و٣ أجزاء من الثانية
+دقيقة، وثانيتين، و٣ أجزاء من الثانية
+ثانية وجزئين من الثانية
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt
new file mode 100644
index 0000000..4d5a1d8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 years ago
+2 years ago
+1 year ago
+0 years
+1 year from now
+2 years from now
+3 years from now
+5 years from now
+10 years from now
+11 years from now
+12 years from now
+20 years from now
+21 years from now
+22 years from now
+23 years from now
+25 years from now
+3 months ago
+2 months ago
+1 month ago
+0 months
+1 month from now
+2 months from now
+3 months from now
+5 months from now
+10 months from now
+11 months from now
+12 months from now
+20 months from now
+21 months from now
+22 months from now
+23 months from now
+25 months from now
+3 weeks ago
+2 weeks ago
+1 week ago
+0 weeks
+1 week from now
+2 weeks from now
+3 weeks from now
+5 weeks from now
+10 weeks from now
+11 weeks from now
+12 weeks from now
+20 weeks from now
+21 weeks from now
+22 weeks from now
+23 weeks from now
+25 weeks from now
+3 days ago
+2 days ago
+1 day ago
+0 days
+1 day from now
+2 days from now
+3 days from now
+5 days from now
+10 days from now
+11 days from now
+12 days from now
+20 days from now
+21 days from now
+22 days from now
+23 days from now
+25 days from now
+3 hours ago
+2 hours ago
+1 hour ago
+0 hours
+1 hour from now
+2 hours from now
+3 hours from now
+5 hours from now
+10 hours from now
+11 hours from now
+12 hours from now
+20 hours from now
+21 hours from now
+22 hours from now
+23 hours from now
+25 hours from now
+3 minutes ago
+2 minutes ago
+1 minute ago
+0 minutes
+1 minute from now
+2 minutes from now
+3 minutes from now
+5 minutes from now
+10 minutes from now
+11 minutes from now
+12 minutes from now
+20 minutes from now
+21 minutes from now
+22 minutes from now
+23 minutes from now
+25 minutes from now
+3 seconds ago
+2 seconds ago
+1 second ago
+0 seconds
+1 second from now
+2 seconds from now
+3 seconds from now
+5 seconds from now
+10 seconds from now
+11 seconds from now
+12 seconds from now
+20 seconds from now
+21 seconds from now
+22 seconds from now
+23 seconds from now
+25 seconds from now
+3 milliseconds ago
+2 milliseconds ago
+1 millisecond ago
+0 milliseconds
+1 millisecond from now
+2 milliseconds from now
+3 milliseconds from now
+5 milliseconds from now
+10 milliseconds from now
+11 milliseconds from now
+12 milliseconds from now
+20 milliseconds from now
+21 milliseconds from now
+22 milliseconds from now
+23 milliseconds from now
+25 milliseconds from now
+=mediumFormTargets
+3 yr
+3 mnth
+3 wk
+3 dy
+3 hr
+3 min
+3 sec
+3 ms
+=shortFormTargets
+3 y
+3 m
+3 w
+3 d
+3 h
+3 m
+3 s
+3 x
+=customMinuteTargets
+5 minutes
+1 hour and 5 minutes
+10 minutes
+1 hour and 10 minutes
+15 minutes
+1 hour and 15 minutes
+20 minutes
+1 hour and 20 minutes
+25 minutes
+1 hour and 25 minutes
+30 minutes
+1 hour and 30 minutes
+35 minutes
+1 hour and 35 minutes
+40 minutes
+1 hour and 40 minutes
+45 minutes
+1 hour and 45 minutes
+50 minutes
+1 hour and 50 minutes
+55 minutes
+1 hour and 55 minutes
+=limitedUnitTargets
+1 month
+1 month and 2 weeks
+1 month, 2 weeks, and 3 days
+1 month ago
+1 month and 2 weeks ago
+1 month, 2 weeks, and 3 days ago
+1 month from now
+1 month and 2 weeks from now
+1 month, 2 weeks, and 3 days from now
+less than 1 month
+less than 1 month and 2 weeks
+less than 1 month, 2 weeks, and 3 days
+less than 1 month ago
+less than 1 month and 2 weeks ago
+less than 1 month, 2 weeks, and 3 days ago
+less than 1 month from now
+less than 1 month and 2 weeks from now
+less than 1 month, 2 weeks, and 3 days from now
+more than 1 month
+more than 1 month and 2 weeks
+more than 1 month, 2 weeks, and 3 days
+more than 1 month ago
+more than 1 month and 2 weeks ago
+more than 1 month, 2 weeks, and 3 days ago
+more than 1 month from now
+more than 1 month and 2 weeks from now
+more than 1 month, 2 weeks, and 3 days from now
+1 hour
+1 hour and 2 minutes
+1 hour, 2 minutes, and 3 seconds
+1 hour ago
+1 hour and 2 minutes ago
+1 hour, 2 minutes, and 3 seconds ago
+1 hour from now
+1 hour and 2 minutes from now
+1 hour, 2 minutes, and 3 seconds from now
+less than 1 hour
+less than 1 hour and 2 minutes
+less than 1 hour, 2 minutes, and 3 seconds
+less than 1 hour ago
+less than 1 hour and 2 minutes ago
+less than 1 hour, 2 minutes, and 3 seconds ago
+less than 1 hour from now
+less than 1 hour and 2 minutes from now
+less than 1 hour, 2 minutes, and 3 seconds from now
+more than 1 hour
+more than 1 hour and 2 minutes
+more than 1 hour, 2 minutes, and 3 seconds
+more than 1 hour ago
+more than 1 hour and 2 minutes ago
+more than 1 hour, 2 minutes, and 3 seconds ago
+more than 1 hour from now
+more than 1 hour and 2 minutes from now
+more than 1 hour, 2 minutes, and 3 seconds from now
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ year
+1½ years
+2½ years
+5½ years
+10½ years
+11½ years
+12½ years
+20½ years
+21½ years
+22½ years
+½ month
+1½ months
+2½ months
+5½ months
+10½ months
+11½ months
+12½ months
+20½ months
+21½ months
+22½ months
+½ week
+1½ weeks
+2½ weeks
+5½ weeks
+10½ weeks
+11½ weeks
+12½ weeks
+20½ weeks
+21½ weeks
+22½ weeks
+½ day
+1½ days
+2½ days
+5½ days
+10½ days
+11½ days
+12½ days
+20½ days
+21½ days
+22½ days
+½ hour
+1½ hours
+2½ hours
+5½ hours
+10½ hours
+11½ hours
+12½ hours
+20½ hours
+21½ hours
+22½ hours
+½ minute
+1½ minutes
+2½ minutes
+5½ minutes
+10½ minutes
+11½ minutes
+12½ minutes
+20½ minutes
+21½ minutes
+22½ minutes
+½ second
+1½ seconds
+2½ seconds
+5½ seconds
+10½ seconds
+11½ seconds
+12½ seconds
+20½ seconds
+21½ seconds
+22½ seconds
+½ millisecond
+1½ milliseconds
+2½ milliseconds
+5½ milliseconds
+10½ milliseconds
+11½ milliseconds
+12½ milliseconds
+20½ milliseconds
+21½ milliseconds
+22½ milliseconds
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 years
+1.00 years
+1.20 years
+2.12 years
+12.05 years
+0.02 months
+1.00 months
+1.20 months
+2.12 months
+12.05 months
+0.02 weeks
+1.00 weeks
+1.20 weeks
+2.12 weeks
+12.05 weeks
+0.02 days
+1.00 days
+1.20 days
+2.12 days
+12.05 days
+0.02 hours
+1.00 hours
+1.20 hours
+2.12 hours
+12.05 hours
+0.02 minutes
+1.00 minutes
+1.20 minutes
+2.12 minutes
+12.05 minutes
+0.02 seconds
+1.00 seconds
+1.20 seconds
+2.12 seconds
+12.05 seconds
+0.02 milliseconds
+1.00 milliseconds
+1.20 milliseconds
+2.12 milliseconds
+12.05 milliseconds
+=multipleUnitTargets
+1 year and 2 months
+1 year and 3 weeks
+1 year, 2 months, and 3 weeks
+1 month and 2 weeks
+1 month and 3 days
+1 month, 2 weeks, and 3 days
+1 week and 2 days
+1 week and 3 hours
+1 week, 2 days, and 3 hours
+1 day and 2 hours
+1 day and 3 minutes
+1 day, 2 hours, and 3 minutes
+1 hour and 2 minutes
+1 hour and 3 seconds
+1 hour, 2 minutes, and 3 seconds
+1 minute and 2 seconds
+1 minute and 3 milliseconds
+1 minute, 2 seconds, and 3 milliseconds
+1 second and 2 milliseconds
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt
new file mode 100644
index 0000000..ff440ff
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+hace 3 años
+hace 2 años
+hace un año
+0 años
+dentro de un año
+dentro de 2 años
+dentro de 3 años
+dentro de 5 años
+dentro de 10 años
+dentro de 11 años
+dentro de 12 años
+dentro de 20 años
+dentro de 21 años
+dentro de 22 años
+dentro de 23 años
+dentro de 25 años
+hace 3 meses
+hace 2 meses
+hace un mes
+0 meses
+dentro de un mes
+dentro de 2 meses
+dentro de 3 meses
+dentro de 5 meses
+dentro de 10 meses
+dentro de 11 meses
+dentro de 12 meses
+dentro de 20 meses
+dentro de 21 meses
+dentro de 22 meses
+dentro de 23 meses
+dentro de 25 meses
+hace 3 semanas
+hace 2 semanas
+hace una semana
+0 semanas
+dentro de una semana
+dentro de 2 semanas
+dentro de 3 semanas
+dentro de 5 semanas
+dentro de 10 semanas
+dentro de 11 semanas
+dentro de 12 semanas
+dentro de 20 semanas
+dentro de 21 semanas
+dentro de 22 semanas
+dentro de 23 semanas
+dentro de 25 semanas
+hace 3 días
+hace 2 días
+hace un día
+0 días
+dentro de un día
+dentro de 2 días
+dentro de 3 días
+dentro de 5 días
+dentro de 10 días
+dentro de 11 días
+dentro de 12 días
+dentro de 20 días
+dentro de 21 días
+dentro de 22 días
+dentro de 23 días
+dentro de 25 días
+hace 3 horas
+hace 2 horas
+hace una hora
+0 horas
+dentro de una hora
+dentro de 2 horas
+dentro de 3 horas
+dentro de 5 horas
+dentro de 10 horas
+dentro de 11 horas
+dentro de 12 horas
+dentro de 20 horas
+dentro de 21 horas
+dentro de 22 horas
+dentro de 23 horas
+dentro de 25 horas
+hace 3 minutos
+hace 2 minutos
+hace un minuto
+0 minutos
+dentro de un minuto
+dentro de 2 minutos
+dentro de 3 minutos
+dentro de 5 minutos
+dentro de 10 minutos
+dentro de 11 minutos
+dentro de 12 minutos
+dentro de 20 minutos
+dentro de 21 minutos
+dentro de 22 minutos
+dentro de 23 minutos
+dentro de 25 minutos
+hace 3 segundos
+hace 2 segundos
+hace un segundo
+0 segundos
+dentro de un segundo
+dentro de 2 segundos
+dentro de 3 segundos
+dentro de 5 segundos
+dentro de 10 segundos
+dentro de 11 segundos
+dentro de 12 segundos
+dentro de 20 segundos
+dentro de 21 segundos
+dentro de 22 segundos
+dentro de 23 segundos
+dentro de 25 segundos
+hace 3 milisegundos
+hace 2 milisegundos
+hace un milisegundo
+0 milisegundos
+dentro de un milisegundo
+dentro de 2 milisegundos
+dentro de 3 milisegundos
+dentro de 5 milisegundos
+dentro de 10 milisegundos
+dentro de 11 milisegundos
+dentro de 12 milisegundos
+dentro de 20 milisegundos
+dentro de 21 milisegundos
+dentro de 22 milisegundos
+dentro de 23 milisegundos
+dentro de 25 milisegundos
+=mediumFormTargets
+3 a
+3 m
+3 s
+3 d
+3 hr
+3 min
+3 seg
+3 mseg
+=shortFormTargets
+3 a
+3 m
+3 s
+3 d
+3 h
+3 m
+3 s
+3 ms
+=customMinuteTargets
+5 minutos
+una hora y 5 minutos
+10 minutos
+una hora y 10 minutos
+15 minutos
+una hora y 15 minutos
+20 minutos
+una hora y 20 minutos
+25 minutos
+una hora y 25 minutos
+30 minutos
+una hora y 30 minutos
+35 minutos
+una hora y 35 minutos
+40 minutos
+una hora y 40 minutos
+45 minutos
+una hora y 45 minutos
+50 minutos
+una hora y 50 minutos
+55 minutos
+una hora y 55 minutos
+=limitedUnitTargets
+un mes
+un mes y 2 semanas
+un mes, 2 semanas y 3 días
+hace un mes
+hace un mes y 2 semanas
+hace un mes, 2 semanas y 3 días
+dentro de un mes
+dentro de un mes y 2 semanas
+dentro de un mes, 2 semanas y 3 días
+menos de un mes
+menos de un mes y 2 semanas
+menos de un mes, 2 semanas y 3 días
+hace menos de un mes
+hace menos de un mes y 2 semanas
+hace menos de un mes, 2 semanas y 3 días
+dentro de menos de un mes
+dentro de menos de un mes y 2 semanas
+dentro de menos de un mes, 2 semanas y 3 días
+más de un mes
+más de un mes y 2 semanas
+más de un mes, 2 semanas y 3 días
+hace más de un mes
+hace más de un mes y 2 semanas
+hace más de un mes, 2 semanas y 3 días
+dentro más de un mes
+dentro más de un mes y 2 semanas
+dentro más de un mes, 2 semanas y 3 días
+una hora
+una hora y 2 minutos
+una hora, 2 minutos y 3 segundos
+hace una hora
+hace una hora y 2 minutos
+hace una hora, 2 minutos y 3 segundos
+dentro de una hora
+dentro de una hora y 2 minutos
+dentro de una hora, 2 minutos y 3 segundos
+menos de una hora
+menos de una hora y 2 minutos
+menos de una hora, 2 minutos y 3 segundos
+hace menos de una hora
+hace menos de una hora y 2 minutos
+hace menos de una hora, 2 minutos y 3 segundos
+dentro de menos de una hora
+dentro de menos de una hora y 2 minutos
+dentro de menos de una hora, 2 minutos y 3 segundos
+más de una hora
+más de una hora y 2 minutos
+más de una hora, 2 minutos y 3 segundos
+hace más de una hora
+hace más de una hora y 2 minutos
+hace más de una hora, 2 minutos y 3 segundos
+dentro más de una hora
+dentro más de una hora y 2 minutos
+dentro más de una hora, 2 minutos y 3 segundos
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+medio  año
+un año y medio
+2 años y medio
+5 años y medio
+10 años y medio
+11 años y medio
+12 años y medio
+20 años y medio
+21 años y medio
+22 años y medio
+medio  mes
+un mes y medio
+2 meses y medio
+5 meses y medio
+10 meses y medio
+11 meses y medio
+12 meses y medio
+20 meses y medio
+21 meses y medio
+22 meses y medio
+media  semana
+una semana y media
+2 semanas y media
+5 semanas y media
+10 semanas y media
+11 semanas y media
+12 semanas y media
+20 semanas y media
+21 semanas y media
+22 semanas y media
+medio  día
+un día y medio
+2 días y medio
+5 días y medio
+10 días y medio
+11 días y medio
+12 días y medio
+20 días y medio
+21 días y medio
+22 días y medio
+media  hora
+una hora y media
+2 horas y media
+5 horas y media
+10 horas y media
+11 horas y media
+12 horas y media
+20 horas y media
+21 horas y media
+22 horas y media
+medio  minuto
+un minuto y medio
+2 minutos y medio
+5 minutos y medio
+10 minutos y medio
+11 minutos y medio
+12 minutos y medio
+20 minutos y medio
+21 minutos y medio
+22 minutos y medio
+medio  segundo
+un segundo y medio
+2 segundos y medio
+5 segundos y medio
+10 segundos y medio
+11 segundos y medio
+12 segundos y medio
+20 segundos y medio
+21 segundos y medio
+22 segundos y medio
+medio  milisegundo
+un milisegundo y medio
+2 milisegundos y medio
+5 milisegundos y medio
+10 milisegundos y medio
+11 milisegundos y medio
+12 milisegundos y medio
+20 milisegundos y medio
+21 milisegundos y medio
+22 milisegundos y medio
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0,02 años
+1,00 años
+1,20 años
+2,12 años
+12,05 años
+0,02 meses
+1,00 meses
+1,20 meses
+2,12 meses
+12,05 meses
+0,02 semanas
+1,00 semanas
+1,20 semanas
+2,12 semanas
+12,05 semanas
+0,02 días
+1,00 días
+1,20 días
+2,12 días
+12,05 días
+0,02 horas
+1,00 horas
+1,20 horas
+2,12 horas
+12,05 horas
+0,02 minutos
+1,00 minutos
+1,20 minutos
+2,12 minutos
+12,05 minutos
+0,02 segundos
+1,00 segundos
+1,20 segundos
+2,12 segundos
+12,05 segundos
+0,02 milisegundos
+1,00 milisegundos
+1,20 milisegundos
+2,12 milisegundos
+12,05 milisegundos
+=multipleUnitTargets
+un año y 2 meses
+un año y 3 semanas
+un año, 2 meses y 3 semanas
+un mes y 2 semanas
+un mes y 3 días
+un mes, 2 semanas y 3 días
+una semana y 2 días
+una semana y 3 horas
+una semana, 2 días y 3 horas
+un día y 2 horas
+un día y 3 minutos
+un día, 2 horas y 3 minutos
+una hora y 2 minutos
+una hora y 3 segundos
+una hora, 2 minutos y 3 segundos
+un minuto y 2 segundos
+un minuto y 3 milisegundos
+un minuto, 2 segundos y 3 milisegundos
+un segundo y 2 milisegundos
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt
new file mode 100644
index 0000000..d709b06
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+il y a 3 ans
+il y a 2 ans
+il y a 1 an
+0 an
+dans 1 an
+dans 2 ans
+dans 3 ans
+dans 5 ans
+dans 10 ans
+dans 11 ans
+dans 12 ans
+dans 20 ans
+dans 21 ans
+dans 22 ans
+dans 23 ans
+dans 25 ans
+il y a 3 mois
+il y a 2 mois
+il y a 1 mois
+0 mois
+dans 1 mois
+dans 2 mois
+dans 3 mois
+dans 5 mois
+dans 10 mois
+dans 11 mois
+dans 12 mois
+dans 20 mois
+dans 21 mois
+dans 22 mois
+dans 23 mois
+dans 25 mois
+il y a 3 semaines
+il y a 2 semaines
+il y a 1 semaine
+0 semaine
+dans 1 semaine
+dans 2 semaines
+dans 3 semaines
+dans 5 semaines
+dans 10 semaines
+dans 11 semaines
+dans 12 semaines
+dans 20 semaines
+dans 21 semaines
+dans 22 semaines
+dans 23 semaines
+dans 25 semaines
+il y a 3 jours
+il y a 2 jours
+il y a 1 jour
+0 jour
+dans 1 jour
+dans 2 jours
+dans 3 jours
+dans 5 jours
+dans 10 jours
+dans 11 jours
+dans 12 jours
+dans 20 jours
+dans 21 jours
+dans 22 jours
+dans 23 jours
+dans 25 jours
+il y a 3 heures
+il y a 2 heures
+il y a 1 heure
+0 heure
+dans 1 heure
+dans 2 heures
+dans 3 heures
+dans 5 heures
+dans 10 heures
+dans 11 heures
+dans 12 heures
+dans 20 heures
+dans 21 heures
+dans 22 heures
+dans 23 heures
+dans 25 heures
+il y a 3 minutes
+il y a 2 minutes
+il y a 1 minute
+0 minute
+dans 1 minute
+dans 2 minutes
+dans 3 minutes
+dans 5 minutes
+dans 10 minutes
+dans 11 minutes
+dans 12 minutes
+dans 20 minutes
+dans 21 minutes
+dans 22 minutes
+dans 23 minutes
+dans 25 minutes
+il y a 3 secondes
+il y a 2 secondes
+il y a 1 seconde
+0 seconde
+dans 1 seconde
+dans 2 secondes
+dans 3 secondes
+dans 5 secondes
+dans 10 secondes
+dans 11 secondes
+dans 12 secondes
+dans 20 secondes
+dans 21 secondes
+dans 22 secondes
+dans 23 secondes
+dans 25 secondes
+il y a 3 millisecondes
+il y a 2 millisecondes
+il y a 1 milliseconde
+0 milliseconde
+dans 1 milliseconde
+dans 2 millisecondes
+dans 3 millisecondes
+dans 5 millisecondes
+dans 10 millisecondes
+dans 11 millisecondes
+dans 12 millisecondes
+dans 20 millisecondes
+dans 21 millisecondes
+dans 22 millisecondes
+dans 23 millisecondes
+dans 25 millisecondes
+=mediumFormTargets
+3 ans
+3 mois
+3 semaines
+3 jours
+3 heures
+3 minutes
+3 secondes
+3 millisecondes
+=shortFormTargets
+3 ans
+3 mois
+3 semaines
+3 jours
+3 heures
+3 minutes
+3 secondes
+3 millisecondes
+=customMinuteTargets
+5 minutes
+1 heure et 5 minutes
+10 minutes
+1 heure et 10 minutes
+15 minutes
+1 heure et 15 minutes
+20 minutes
+1 heure et 20 minutes
+25 minutes
+1 heure et 25 minutes
+30 minutes
+1 heure et 30 minutes
+35 minutes
+1 heure et 35 minutes
+40 minutes
+1 heure et 40 minutes
+45 minutes
+1 heure et 45 minutes
+50 minutes
+1 heure et 50 minutes
+55 minutes
+1 heure et 55 minutes
+=limitedUnitTargets
+1 mois
+1 mois et 2 semaines
+1 mois, 2 semaines et 3 jours
+il y a 1 mois
+il y a 1 mois et 2 semaines
+il y a 1 mois, 2 semaines et 3 jours
+dans 1 mois
+dans 1 mois et 2 semaines
+dans 1 mois, 2 semaines et 3 jours
+moins de 1 mois
+moins de 1 mois et 2 semaines
+moins de 1 mois, 2 semaines et 3 jours
+il y a moins de 1 mois
+il y a moins de 1 mois et 2 semaines
+il y a moins de 1 mois, 2 semaines et 3 jours
+dans moins de 1 mois
+dans moins de 1 mois et 2 semaines
+dans moins de 1 mois, 2 semaines et 3 jours
+plus de 1 mois
+plus de 1 mois et 2 semaines
+plus de 1 mois, 2 semaines et 3 jours
+il y a plus de 1 mois
+il y a plus de 1 mois et 2 semaines
+il y a plus de 1 mois, 2 semaines et 3 jours
+dans plus de 1 mois
+dans plus de 1 mois et 2 semaines
+dans plus de 1 mois, 2 semaines et 3 jours
+1 heure
+1 heure et 2 minutes
+1 heure, 2 minutes et 3 secondes
+il y a 1 heure
+il y a 1 heure et 2 minutes
+il y a 1 heure, 2 minutes et 3 secondes
+dans 1 heure
+dans 1 heure et 2 minutes
+dans 1 heure, 2 minutes et 3 secondes
+moins de 1 heure
+moins de 1 heure et 2 minutes
+moins de 1 heure, 2 minutes et 3 secondes
+il y a moins de 1 heure
+il y a moins de 1 heure et 2 minutes
+il y a moins de 1 heure, 2 minutes et 3 secondes
+dans moins de 1 heure
+dans moins de 1 heure et 2 minutes
+dans moins de 1 heure, 2 minutes et 3 secondes
+plus de 1 heure
+plus de 1 heure et 2 minutes
+plus de 1 heure, 2 minutes et 3 secondes
+il y a plus de 1 heure
+il y a plus de 1 heure et 2 minutes
+il y a plus de 1 heure, 2 minutes et 3 secondes
+dans plus de 1 heure
+dans plus de 1 heure et 2 minutes
+dans plus de 1 heure, 2 minutes et 3 secondes
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ an
+1½ ans
+2½ ans
+5½ ans
+10½ ans
+11½ ans
+12½ ans
+20½ ans
+21½ ans
+22½ ans
+½ mois
+1½ mois
+2½ mois
+5½ mois
+10½ mois
+11½ mois
+12½ mois
+20½ mois
+21½ mois
+22½ mois
+½ semaine
+1½ semaines
+2½ semaines
+5½ semaines
+10½ semaines
+11½ semaines
+12½ semaines
+20½ semaines
+21½ semaines
+22½ semaines
+½ jour
+1½ jours
+2½ jours
+5½ jours
+10½ jours
+11½ jours
+12½ jours
+20½ jours
+21½ jours
+22½ jours
+½ heure
+1½ heures
+2½ heures
+5½ heures
+10½ heures
+11½ heures
+12½ heures
+20½ heures
+21½ heures
+22½ heures
+½ minute
+1½ minutes
+2½ minutes
+5½ minutes
+10½ minutes
+11½ minutes
+12½ minutes
+20½ minutes
+21½ minutes
+22½ minutes
+½ seconde
+1½ secondes
+2½ secondes
+5½ secondes
+10½ secondes
+11½ secondes
+12½ secondes
+20½ secondes
+21½ secondes
+22½ secondes
+½ milliseconde
+1½ millisecondes
+2½ millisecondes
+5½ millisecondes
+10½ millisecondes
+11½ millisecondes
+12½ millisecondes
+20½ millisecondes
+21½ millisecondes
+22½ millisecondes
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 ans
+1.00 ans
+1.20 ans
+2.12 ans
+12.05 ans
+0.02 mois
+1.00 mois
+1.20 mois
+2.12 mois
+12.05 mois
+0.02 semaines
+1.00 semaines
+1.20 semaines
+2.12 semaines
+12.05 semaines
+0.02 jours
+1.00 jours
+1.20 jours
+2.12 jours
+12.05 jours
+0.02 heures
+1.00 heures
+1.20 heures
+2.12 heures
+12.05 heures
+0.02 minutes
+1.00 minutes
+1.20 minutes
+2.12 minutes
+12.05 minutes
+0.02 secondes
+1.00 secondes
+1.20 secondes
+2.12 secondes
+12.05 secondes
+0.02 millisecondes
+1.00 millisecondes
+1.20 millisecondes
+2.12 millisecondes
+12.05 millisecondes
+=multipleUnitTargets
+1 an et 2 mois
+1 an et 3 semaines
+1 an, 2 mois et 3 semaines
+1 mois et 2 semaines
+1 mois et 3 jours
+1 mois, 2 semaines et 3 jours
+1 semaine et 2 jours
+1 semaine et 3 heures
+1 semaine, 2 jours et 3 heures
+1 jour et 2 heures
+1 jour et 3 minutes
+1 jour, 2 heures et 3 minutes
+1 heure et 2 minutes
+1 heure et 3 secondes
+1 heure, 2 minutes et 3 secondes
+1 minute et 2 secondes
+1 minute et 3 millisecondes
+1 minute, 2 secondes et 3 millisecondes
+1 seconde et 2 millisecondes
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt
new file mode 100644
index 0000000..5399755
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+לפני 3 שנים
+לפני שנתיים
+לפני שנה
+0 שנים
+אחרי שנה
+אחרי שנתיים
+אחרי 3 שנים
+אחרי 5 שנים
+אחרי 10 שנים
+אחרי 11 שנים
+אחרי 12 שנה
+אחרי 20 שנה
+אחרי 21 שנה
+אחרי 22 שנה
+אחרי 23 שנה
+אחרי 25 שנה
+לפני 3 חודשים
+לפני חודשיים
+לפני חודש
+0 חודשים
+אחרי חודש
+אחרי חודשיים
+אחרי 3 חודשים
+אחרי 5 חודשים
+אחרי 10 חודשים
+אחרי 11 חודשים
+אחרי 12 חודשים
+אחרי 20 חודשים
+אחרי 21 חודשים
+אחרי 22 חודשים
+אחרי 23 חודשים
+אחרי 25 חודשים
+לפני 3 שבועות
+לפני שבועיים
+לפני שבוע
+0 שבועות
+אחרי שבוע
+אחרי שבועיים
+אחרי 3 שבועות
+אחרי 5 שבועות
+אחרי 10 שבועות
+אחרי 11 שבועות
+אחרי 12 שבועות
+אחרי 20 שבועות
+אחרי 21 שבועות
+אחרי 22 שבועות
+אחרי 23 שבועות
+אחרי 25 שבועות
+לפני 3 ימים
+לפני יומיים
+לפני יום
+0 ימים
+אחרי יום
+אחרי יומיים
+אחרי 3 ימים
+אחרי 5 ימים
+אחרי 10 ימים
+אחרי 11 ימים
+אחרי 12 ימים
+אחרי 20 ימים
+אחרי 21 ימים
+אחרי 22 ימים
+אחרי 23 ימים
+אחרי 25 ימים
+לפני 3 שעות
+לפני שעתיים
+לפני שעה
+0 שעות
+אחרי שעה
+אחרי שעתיים
+אחרי 3 שעות
+אחרי 5 שעות
+אחרי 10 שעות
+אחרי 11 שעות
+אחרי 12 שעות
+אחרי 20 שעות
+אחרי 21 שעות
+אחרי 22 שעות
+אחרי 23 שעות
+אחרי 25 שעות
+לפני 3 דקות
+לפני 2 דקות
+לפני דקה
+0 דקות
+אחרי דקה
+אחרי 2 דקות
+אחרי 3 דקות
+אחרי 5 דקות
+אחרי 10 דקות
+אחרי 11 דקות
+אחרי 12 דקות
+אחרי 20 דקות
+אחרי 21 דקות
+אחרי 22 דקות
+אחרי 23 דקות
+אחרי 25 דקות
+לפני 3 שניות
+לפני 2 שניות
+לפני שנייה
+0 שניות
+אחרי שנייה
+אחרי 2 שניות
+אחרי 3 שניות
+אחרי 5 שניות
+אחרי 10 שניות
+אחרי 11 שניות
+אחרי 12 שניות
+אחרי 20 שניות
+אחרי 21 שניות
+אחרי 22 שניות
+אחרי 23 שניות
+אחרי 25 שניות
+לפני 3 מילישניות
+לפני 2 מילישניות
+לפני מילישניה
+0 מילישניות
+אחרי מילישניה
+אחרי 2 מילישניות
+אחרי 3 מילישניות
+אחרי 5 מילישניות
+אחרי 10 מילישניות
+אחרי 11 מילישניות
+אחרי 12 מילישניות
+אחרי 20 מילישניות
+אחרי 21 מילישניות
+אחרי 22 מילישניות
+אחרי 23 מילישניות
+אחרי 25 מילישניות
+=mediumFormTargets
+3 שנים
+3 חודשים
+3 שבועות
+3 ימים
+3 שעות
+3 דקות
+3 שניות
+3 מילישניות
+=shortFormTargets
+3 שנים
+3 חודשים
+3 שבועות
+3 ימים
+3 שעות
+3 דקות
+3 שניות
+3 מילישניות
+=customMinuteTargets
+5 דקות
+שעה ו־5 דקות
+10 דקות
+שעה ו־10 דקות
+15 דקות
+שעה ו־15 דקות
+20 דקות
+שעה ו־20 דקות
+25 דקות
+שעה ו־25 דקות
+30 דקות
+שעה ו־30 דקות
+35 דקות
+שעה ו־35 דקות
+40 דקות
+שעה ו־40 דקות
+45 דקות
+שעה ו־45 דקות
+50 דקות
+שעה ו־50 דקות
+55 דקות
+שעה ו־55 דקות
+=limitedUnitTargets
+חודש
+חודש ושבועיים
+חודש, שבועיים ו־3 ימים
+לפני חודש
+לפני חודש ושבועיים
+לפני חודש, שבועיים ו־3 ימים
+אחרי חודש
+אחרי חודש ושבועיים
+אחרי חודש, שבועיים ו־3 ימים
+יותר מחודש
+יותר מחודש ושבועיים
+יותר מחודש, שבועיים ו־3 ימים
+לפני יותר מחודש
+לפני יותר מחודש ושבועיים
+לפני יותר מחודש, שבועיים ו־3 ימים
+אחרי יותר מחודש
+אחרי יותר מחודש ושבועיים
+אחרי יותר מחודש, שבועיים ו־3 ימים
+פחות מחודש
+פחות מחודש ושבועיים
+פחות מחודש, שבועיים ו־3 ימים
+לפני פחות מחודש
+לפני פחות מחודש ושבועיים
+לפני פחות מחודש, שבועיים ו־3 ימים
+אחרי פחות מחודש
+אחרי פחות מחודש ושבועיים
+אחרי פחות מחודש, שבועיים ו־3 ימים
+שעה
+שעה ו־2 דקות
+שעה, 2 דקות ו־3 שניות
+לפני שעה
+לפני שעה ו־2 דקות
+לפני שעה, 2 דקות ו־3 שניות
+אחרי שעה
+אחרי שעה ו־2 דקות
+אחרי שעה, 2 דקות ו־3 שניות
+יותר משעה
+יותר משעה ו־2 דקות
+יותר משעה, 2 דקות ו־3 שניות
+לפני יותר משעה
+לפני יותר משעה ו־2 דקות
+לפני יותר משעה, 2 דקות ו־3 שניות
+אחרי יותר משעה
+אחרי יותר משעה ו־2 דקות
+אחרי יותר משעה, 2 דקות ו־3 שניות
+פחות משעה
+פחות משעה ו־2 דקות
+פחות משעה, 2 דקות ו־3 שניות
+לפני פחות משעה
+לפני פחות משעה ו־2 דקות
+לפני פחות משעה, 2 דקות ו־3 שניות
+אחרי פחות משעה
+אחרי פחות משעה ו־2 דקות
+אחרי פחות משעה, 2 דקות ו־3 שניות
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ שנה
+½שנה
+½שנתיים
+5½ שנים
+10½ שנים
+11½ שנים
+12½ שנה
+20½ שנה
+21½ שנה
+22½ שנה
+½ חודש
+½חודש
+½חודשיים
+5½ חודשים
+10½ חודשים
+11½ חודשים
+12½ חודשים
+20½ חודשים
+21½ חודשים
+22½ חודשים
+½ שבוע
+½שבוע
+½שבועיים
+5½ שבועות
+10½ שבועות
+11½ שבועות
+12½ שבועות
+20½ שבועות
+21½ שבועות
+22½ שבועות
+½ יום
+½יום
+½יומיים
+5½ ימים
+10½ ימים
+11½ ימים
+12½ ימים
+20½ ימים
+21½ ימים
+22½ ימים
+½ שעה
+½שעה
+½שעתיים
+5½ שעות
+10½ שעות
+11½ שעות
+12½ שעות
+20½ שעות
+21½ שעות
+22½ שעות
+½ דקה
+½דקה
+2½ דקות
+5½ דקות
+10½ דקות
+11½ דקות
+12½ דקות
+20½ דקות
+21½ דקות
+22½ דקות
+½ שנייה
+½שנייה
+2½ שניות
+5½ שניות
+10½ שניות
+11½ שניות
+12½ שניות
+20½ שניות
+21½ שניות
+22½ שניות
+½ מילישניה
+½מילישניה
+2½ מילישניות
+5½ מילישניות
+10½ מילישניות
+11½ מילישניות
+12½ מילישניות
+20½ מילישניות
+21½ מילישניות
+22½ מילישניות
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 שנה
+1.00 שנים
+1.20 שנים
+2.12 שנים
+12.05 שנים
+0.02 חודש
+1.00 חודשים
+1.20 חודשים
+2.12 חודשים
+12.05 חודשים
+0.02 שבוע
+1.00 שבועות
+1.20 שבועות
+2.12 שבועות
+12.05 שבועות
+0.02 יום
+1.00 ימים
+1.20 ימים
+2.12 ימים
+12.05 ימים
+0.02 שעה
+1.00 שעות
+1.20 שעות
+2.12 שעות
+12.05 שעות
+0.02 דקה
+1.00 דקות
+1.20 דקות
+2.12 דקות
+12.05 דקות
+0.02 שנייה
+1.00 שניות
+1.20 שניות
+2.12 שניות
+12.05 שניות
+0.02 מילישניה
+1.00 מילישניות
+1.20 מילישניות
+2.12 מילישניות
+12.05 מילישניות
+=multipleUnitTargets
+שנה וחודשיים
+שנה ו־3 שבועות
+שנה, חודשיים ו־3 שבועות
+חודש ושבועיים
+חודש ו־3 ימים
+חודש, שבועיים ו־3 ימים
+שבוע ויומיים
+שבוע ו־3 שעות
+שבוע, יומיים ו־3 שעות
+יום ושעתיים
+יום ו־3 דקות
+יום, שעתיים ו־3 דקות
+שעה ו־2 דקות
+שעה ו־3 שניות
+שעה, 2 דקות ו־3 שניות
+דקה ו־2 שניות
+דקה ו־3 מילישניות
+דקה, 2 שניות ו־3 מילישניות
+שנייה ו־2 מילישניות
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt
new file mode 100644
index 0000000..0ac7666
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+३ साल पहले
+२ साल पहले
+१ साल पहले
+० साल
+अभी से १ साल बाद
+अभी से २ साल बाद
+अभी से ३ साल बाद
+अभी से ५ साल बाद
+अभी से १० साल बाद
+अभी से ११ साल बाद
+अभी से १२ साल बाद
+अभी से २० साल बाद
+अभी से २१ साल बाद
+अभी से २२ साल बाद
+अभी से २३ साल बाद
+अभी से २५ साल बाद
+३ महीने पहले
+२ महीने पहले
+१ महीना पहले
+० महीने
+अभी से १ महीना बाद
+अभी से २ महीने बाद
+अभी से ३ महीने बाद
+अभी से ५ महीने बाद
+अभी से १० महीने बाद
+अभी से ११ महीने बाद
+अभी से १२ महीने बाद
+अभी से २० महीने बाद
+अभी से २१ महीने बाद
+अभी से २२ महीने बाद
+अभी से २३ महीने बाद
+अभी से २५ महीने बाद
+३ सप्ताह पहले
+२ सप्ताह पहले
+१ सप्ताह पहले
+० सप्ताह
+अभी से १ सप्ताह बाद
+अभी से २ सप्ताह बाद
+अभी से ३ सप्ताह बाद
+अभी से ५ सप्ताह बाद
+अभी से १० सप्ताह बाद
+अभी से ११ सप्ताह बाद
+अभी से १२ सप्ताह बाद
+अभी से २० सप्ताह बाद
+अभी से २१ सप्ताह बाद
+अभी से २२ सप्ताह बाद
+अभी से २३ सप्ताह बाद
+अभी से २५ सप्ताह बाद
+३ दिन पहले
+२ दिन पहले
+१ दिन पहले
+० दिन
+अभी से १ दिन बाद
+अभी से २ दिन बाद
+अभी से ३ दिन बाद
+अभी से ५ दिन बाद
+अभी से १० दिन बाद
+अभी से ११ दिन बाद
+अभी से १२ दिन बाद
+अभी से २० दिन बाद
+अभी से २१ दिन बाद
+अभी से २२ दिन बाद
+अभी से २३ दिन बाद
+अभी से २५ दिन बाद
+३ घंटे पहले
+२ घंटे पहले
+१ घंटा पहले
+० घंटे
+अभी से १ घंटा बाद
+अभी से २ घंटे बाद
+अभी से ३ घंटे बाद
+अभी से ५ घंटे बाद
+अभी से १० घंटे बाद
+अभी से ११ घंटे बाद
+अभी से १२ घंटे बाद
+अभी से २० घंटे बाद
+अभी से २१ घंटे बाद
+अभी से २२ घंटे बाद
+अभी से २३ घंटे बाद
+अभी से २५ घंटे बाद
+३ मिनट पहले
+२ मिनट पहले
+१ मिनट पहले
+० मिनट
+अभी से १ मिनट बाद
+अभी से २ मिनट बाद
+अभी से ३ मिनट बाद
+अभी से ५ मिनट बाद
+अभी से १० मिनट बाद
+अभी से ११ मिनट बाद
+अभी से १२ मिनट बाद
+अभी से २० मिनट बाद
+अभी से २१ मिनट बाद
+अभी से २२ मिनट बाद
+अभी से २३ मिनट बाद
+अभी से २५ मिनट बाद
+३ सेकण्ड पहले
+२ सेकण्ड पहले
+१ सेकण्ड पहले
+० सेकण्ड
+अभी से १ सेकण्ड बाद
+अभी से २ सेकण्ड बाद
+अभी से ३ सेकण्ड बाद
+अभी से ५ सेकण्ड बाद
+अभी से १० सेकण्ड बाद
+अभी से ११ सेकण्ड बाद
+अभी से १२ सेकण्ड बाद
+अभी से २० सेकण्ड बाद
+अभी से २१ सेकण्ड बाद
+अभी से २२ सेकण्ड बाद
+अभी से २३ सेकण्ड बाद
+अभी से २५ सेकण्ड बाद
+३ मिली सेकण्ड पहले
+२ मिली सेकण्ड पहले
+१ मिली सेकण्ड पहले
+० मिली सेकण्ड
+अभी से १ मिली सेकण्ड बाद
+अभी से २ मिली सेकण्ड बाद
+अभी से ३ मिली सेकण्ड बाद
+अभी से ५ मिली सेकण्ड बाद
+अभी से १० मिली सेकण्ड बाद
+अभी से ११ मिली सेकण्ड बाद
+अभी से १२ मिली सेकण्ड बाद
+अभी से २० मिली सेकण्ड बाद
+अभी से २१ मिली सेकण्ड बाद
+अभी से २२ मिली सेकण्ड बाद
+अभी से २३ मिली सेकण्ड बाद
+अभी से २५ मिली सेकण्ड बाद
+=mediumFormTargets
+३ साल
+३ महीने
+३ सप्ताह
+३ दिन
+३ घंटे
+३ मिनट
+३ सेकण्ड
+३ मिली सेकण्ड
+=shortFormTargets
+३ साल
+३ महीने
+३ सप्ताह
+३ दिन
+३ घंटे
+३ मिनट
+३ सेकण्ड
+३ मिली सेकण्ड
+=customMinuteTargets
+५ मिनट
+१ घंटा और ५ मिनट
+१० मिनट
+१ घंटा और १० मिनट
+१५ मिनट
+१ घंटा और १५ मिनट
+२० मिनट
+१ घंटा और २० मिनट
+२५ मिनट
+१ घंटा और २५ मिनट
+३० मिनट
+१ घंटा और ३० मिनट
+३५ मिनट
+१ घंटा और ३५ मिनट
+४० मिनट
+१ घंटा और ४० मिनट
+४५ मिनट
+१ घंटा और ४५ मिनट
+५० मिनट
+१ घंटा और ५० मिनट
+५५ मिनट
+१ घंटा और ५५ मिनट
+=limitedUnitTargets
+१ महीना
+१ महीना और २ सप्ताह
+१ महीना, २ सप्ताह और ३ दिन
+१ महीना पहले
+१ महीना और २ सप्ताह पहले
+१ महीना, २ सप्ताह और ३ दिन पहले
+अभी से १ महीना बाद
+अभी से १ महीना और २ सप्ताह बाद
+अभी से १ महीना, २ सप्ताह और ३ दिन बाद
+१ महीना से कम
+१ महीना और २ सप्ताह से कम
+१ महीना, २ सप्ताह और ३ दिन से कम
+१ महीना से कम पहले
+१ महीना और २ सप्ताह से कम पहले
+१ महीना, २ सप्ताह और ३ दिन से कम पहले
+१ महीना से कम from now
+१ महीना और २ सप्ताह से कम from now
+१ महीना, २ सप्ताह और ३ दिन से कम from now
+१ महीना से ज़्यादा
+१ महीना और २ सप्ताह से ज़्यादा
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा
+१ महीना से ज़्यादा ago
+१ महीना और २ सप्ताह से ज़्यादा ago
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा ago
+१ महीना से ज़्यादा from now
+१ महीना और २ सप्ताह से ज़्यादा from now
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा from now
+१ घंटा
+१ घंटा और २ मिनट
+१ घंटा, २ मिनट और ३ सेकण्ड
+१ घंटा पहले
+१ घंटा और २ मिनट पहले
+१ घंटा, २ मिनट और ३ सेकण्ड पहले
+अभी से १ घंटा बाद
+अभी से १ घंटा और २ मिनट बाद
+अभी से १ घंटा, २ मिनट और ३ सेकण्ड बाद
+१ घंटा से कम
+१ घंटा और २ मिनट से कम
+१ घंटा, २ मिनट और ३ सेकण्ड से कम
+१ घंटा से कम पहले
+१ घंटा और २ मिनट से कम पहले
+१ घंटा, २ मिनट और ३ सेकण्ड से कम पहले
+१ घंटा से कम from now
+१ घंटा और २ मिनट से कम from now
+१ घंटा, २ मिनट और ३ सेकण्ड से कम from now
+१ घंटा से ज़्यादा
+१ घंटा और २ मिनट से ज़्यादा
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा
+१ घंटा से ज़्यादा ago
+१ घंटा और २ मिनट से ज़्यादा ago
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा ago
+१ घंटा से ज़्यादा from now
+१ घंटा और २ मिनट से ज़्यादा from now
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा from now
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ साल
+१½ साल
+२½ साल
+५½ साल
+१०½ साल
+११½ साल
+१२½ साल
+२०½ साल
+२१½ साल
+२२½ साल
+½ महीने
+१½ महीने
+२½ महीने
+५½ महीने
+१०½ महीने
+११½ महीने
+१२½ महीने
+२०½ महीने
+२१½ महीने
+२२½ महीने
+½ सप्ताह
+१½ सप्ताह
+२½ सप्ताह
+५½ सप्ताह
+१०½ सप्ताह
+११½ सप्ताह
+१२½ सप्ताह
+२०½ सप्ताह
+२१½ सप्ताह
+२२½ सप्ताह
+½ दिन
+१½ दिन
+२½ दिन
+५½ दिन
+१०½ दिन
+११½ दिन
+१२½ दिन
+२०½ दिन
+२१½ दिन
+२२½ दिन
+½ घंटे
+१½ घंटे
+२½ घंटे
+५½ घंटे
+१०½ घंटे
+११½ घंटे
+१२½ घंटे
+२०½ घंटे
+२१½ घंटे
+२२½ घंटे
+½ मिनट
+१½ मिनट
+२½ मिनट
+५½ मिनट
+१०½ मिनट
+११½ मिनट
+१२½ मिनट
+२०½ मिनट
+२१½ मिनट
+२२½ मिनट
+½ सेकण्ड
+१½ सेकण्ड
+२½ सेकण्ड
+५½ सेकण्ड
+१०½ सेकण्ड
+११½ सेकण्ड
+१२½ सेकण्ड
+२०½ सेकण्ड
+२१½ सेकण्ड
+२२½ सेकण्ड
+½ मिली सेकण्ड
+१½ मिली सेकण्ड
+२½ मिली सेकण्ड
+५½ मिली सेकण्ड
+१०½ मिली सेकण्ड
+११½ मिली सेकण्ड
+१२½ मिली सेकण्ड
+२०½ मिली सेकण्ड
+२१½ मिली सेकण्ड
+२२½ मिली सेकण्ड
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+०.०२ साल
+१.०० साल
+१.२० साल
+२.१२ साल
+१२.०५ साल
+०.०२ महीने
+१.०० महीने
+१.२० महीने
+२.१२ महीने
+१२.०५ महीने
+०.०२ सप्ताह
+१.०० सप्ताह
+१.२० सप्ताह
+२.१२ सप्ताह
+१२.०५ सप्ताह
+०.०२ दिन
+१.०० दिन
+१.२० दिन
+२.१२ दिन
+१२.०५ दिन
+०.०२ घंटे
+१.०० घंटे
+१.२० घंटे
+२.१२ घंटे
+१२.०५ घंटे
+०.०२ मिनट
+१.०० मिनट
+१.२० मिनट
+२.१२ मिनट
+१२.०५ मिनट
+०.०२ सेकण्ड
+१.०० सेकण्ड
+१.२० सेकण्ड
+२.१२ सेकण्ड
+१२.०५ सेकण्ड
+०.०२ मिली सेकण्ड
+१.०० मिली सेकण्ड
+१.२० मिली सेकण्ड
+२.१२ मिली सेकण्ड
+१२.०५ मिली सेकण्ड
+=multipleUnitTargets
+१ साल और २ महीने
+१ साल और ३ सप्ताह
+१ साल, २ महीने और ३ सप्ताह
+१ महीना और २ सप्ताह
+१ महीना और ३ दिन
+१ महीना, २ सप्ताह और ३ दिन
+१ सप्ताह और २ दिन
+१ सप्ताह और ३ घंटे
+१ सप्ताह, २ दिन और ३ घंटे
+१ दिन और २ घंटे
+१ दिन और ३ मिनट
+१ दिन, २ घंटे और ३ मिनट
+१ घंटा और २ मिनट
+१ घंटा और ३ सेकण्ड
+१ घंटा, २ मिनट और ३ सेकण्ड
+१ मिनट और २ सेकण्ड
+१ मिनट और ३ मिली सेकण्ड
+१ मिनट, २ सेकण्ड और ३ मिली सेकण्ड
+१ सेकण्ड और २ मिली सेकण्ड
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt
new file mode 100644
index 0000000..a705acb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+tre anni fa
+due anni fa
+un anno fa
+zero anni
+fra un anno
+fra due anni
+fra tre anni
+fra cinque anni
+fra dieci anni
+fra 11 anni
+fra 12 anni
+fra 20 anni
+fra 21 anni
+fra 22 anni
+fra 23 anni
+fra 25 anni
+tre mesi fa
+due mesi fa
+un mese fa
+zero mesi
+fra un mese
+fra due mesi
+fra tre mesi
+fra cinque mesi
+fra dieci mesi
+fra 11 mesi
+fra 12 mesi
+fra 20 mesi
+fra 21 mesi
+fra 22 mesi
+fra 23 mesi
+fra 25 mesi
+tre settimane fa
+due settimane fa
+una settimana fa
+zero settimane
+fra una settimana
+fra due settimane
+fra tre settimane
+fra cinque settimane
+fra dieci settimane
+fra 11 settimane
+fra 12 settimane
+fra 20 settimane
+fra 21 settimane
+fra 22 settimane
+fra 23 settimane
+fra 25 settimane
+tre giorni fa
+due giorni fa
+un giorno fa
+zero giorni
+fra un giorno
+fra due giorni
+fra tre giorni
+fra cinque giorni
+fra dieci giorni
+fra 11 giorni
+fra 12 giorni
+fra 20 giorni
+fra 21 giorni
+fra 22 giorni
+fra 23 giorni
+fra 25 giorni
+tre ore fa
+due ore fa
+un'ora fa
+zero ore
+fra un'ora
+fra due ore
+fra tre ore
+fra cinque ore
+fra dieci ore
+fra 11 ore
+fra 12 ore
+fra 20 ore
+fra 21 ore
+fra 22 ore
+fra 23 ore
+fra 25 ore
+tre minuti fa
+due minuti fa
+un minuto fa
+zero minuti
+fra un minuto
+fra due minuti
+fra tre minuti
+fra cinque minuti
+fra dieci minuti
+fra 11 minuti
+fra 12 minuti
+fra 20 minuti
+fra 21 minuti
+fra 22 minuti
+fra 23 minuti
+fra 25 minuti
+tre secondi fa
+due secondi fa
+un secondo fa
+zero secondi
+fra un secondo
+fra due secondi
+fra tre secondi
+fra cinque secondi
+fra dieci secondi
+fra 11 secondi
+fra 12 secondi
+fra 20 secondi
+fra 21 secondi
+fra 22 secondi
+fra 23 secondi
+fra 25 secondi
+tre millisecondi fa
+due millisecondi fa
+un millisecondo fa
+zero millisecondi
+fra un millisecondo
+fra due millisecondi
+fra tre millisecondi
+fra cinque millisecondi
+fra dieci millisecondi
+fra 11 millisecondi
+fra 12 millisecondi
+fra 20 millisecondi
+fra 21 millisecondi
+fra 22 millisecondi
+fra 23 millisecondi
+fra 25 millisecondi
+=mediumFormTargets
+tre ann.
+tre mes.
+tre sett.
+tre gg.
+tre or.
+tre min.
+tre sec.
+tre msec.
+=shortFormTargets
+tre A
+tre M
+tre S
+tre G
+tre H
+tre M
+tre S
+tre msec.
+=customMinuteTargets
+cinque minuti
+un'ora e cinque minuti
+dieci minuti
+un'ora e dieci minuti
+15 minuti
+un'ora e 15 minuti
+20 minuti
+un'ora e 20 minuti
+25 minuti
+un'ora e 25 minuti
+30 minuti
+un'ora e 30 minuti
+35 minuti
+un'ora e 35 minuti
+40 minuti
+un'ora e 40 minuti
+45 minuti
+un'ora e 45 minuti
+50 minuti
+un'ora e 50 minuti
+55 minuti
+un'ora e 55 minuti
+=limitedUnitTargets
+un mese
+un mese e due settimane
+un mese, due settimane e tre giorni
+un mese fa
+un mese e due settimane fa
+un mese, due settimane e tre giorni fa
+fra un mese
+fra un mese e due settimane
+fra un mese, due settimane e tre giorni
+meno di un mese
+meno di un mese e due settimane
+meno di un mese, due settimane e tre giorni
+meno di un mese fa
+meno di un mese e due settimane fa
+meno di un mese, due settimane e tre giorni fa
+fra meno di un mese
+fra meno di un mese e due settimane
+fra meno di un mese, due settimane e tre giorni
+oltre un mese
+oltre un mese e due settimane
+oltre un mese, due settimane e tre giorni
+oltre un mese fa
+oltre un mese e due settimane fa
+oltre un mese, due settimane e tre giorni fa
+fra oltre un mese
+fra oltre un mese e due settimane
+fra oltre un mese, due settimane e tre giorni
+un'ora
+un'ora e due minuti
+un'ora, due minuti e tre secondi
+un'ora fa
+un'ora e due minuti fa
+un'ora, due minuti e tre secondi fa
+fra un'ora
+fra un'ora e due minuti
+fra un'ora, due minuti e tre secondi
+meno di un'ora
+meno di un'ora e due minuti
+meno di un'ora, due minuti e tre secondi
+meno di un'ora fa
+meno di un'ora e due minuti fa
+meno di un'ora, due minuti e tre secondi fa
+fra meno di un'ora
+fra meno di un'ora e due minuti
+fra meno di un'ora, due minuti e tre secondi
+oltre un'ora
+oltre un'ora e due minuti
+oltre un'ora, due minuti e tre secondi
+oltre un'ora fa
+oltre un'ora e due minuti fa
+oltre un'ora, due minuti e tre secondi fa
+fra oltre un'ora
+fra oltre un'ora e due minuti
+fra oltre un'ora, due minuti e tre secondi
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+mezzo  anno
+un anno e mezzo
+due anni e mezzo
+cinque anni e mezzo
+dieci anni e mezzo
+11 anni e mezzo
+12 anni e mezzo
+20 anni e mezzo
+21 anni e mezzo
+22 anni e mezzo
+mezzo  mese
+un mese e mezzo
+due mesi e mezzo
+cinque mesi e mezzo
+dieci mesi e mezzo
+11 mesi e mezzo
+12 mesi e mezzo
+20 mesi e mezzo
+21 mesi e mezzo
+22 mesi e mezzo
+mezza  settimana
+una settimana e mezza
+due settimane e mezza
+cinque settimane e mezza
+dieci settimane e mezza
+11 settimane e mezza
+12 settimane e mezza
+20 settimane e mezza
+21 settimane e mezza
+22 settimane e mezza
+mezzo  giorno
+un giorno e mezzo
+due giorni e mezzo
+cinque giorni e mezzo
+dieci giorni e mezzo
+11 giorni e mezzo
+12 giorni e mezzo
+20 giorni e mezzo
+21 giorni e mezzo
+22 giorni e mezzo
+mezz'ora
+un'ora e mezza
+due ore e mezza
+cinque ore e mezza
+dieci ore e mezza
+11 ore e mezza
+12 ore e mezza
+20 ore e mezza
+21 ore e mezza
+22 ore e mezza
+mezzo  minuto
+un minuto e mezzo
+due minuti e mezzo
+cinque minuti e mezzo
+dieci minuti e mezzo
+11 minuti e mezzo
+12 minuti e mezzo
+20 minuti e mezzo
+21 minuti e mezzo
+22 minuti e mezzo
+mezzo  secondo
+un secondo e mezzo
+due secondi e mezzo
+cinque secondi e mezzo
+dieci secondi e mezzo
+11 secondi e mezzo
+12 secondi e mezzo
+20 secondi e mezzo
+21 secondi e mezzo
+22 secondi e mezzo
+mezzo  millisecondo
+un millisecondo e mezzo
+due millisecondi e mezzo
+cinque millisecondi e mezzo
+dieci millisecondi e mezzo
+11 millisecondi e mezzo
+12 millisecondi e mezzo
+20 millisecondi e mezzo
+21 millisecondi e mezzo
+22 millisecondi e mezzo
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 anni
+1.00 anni
+1.20 anni
+2.12 anni
+12.05 anni
+0.02 mesi
+1.00 mesi
+1.20 mesi
+2.12 mesi
+12.05 mesi
+0.02 settimane
+1.00 settimane
+1.20 settimane
+2.12 settimane
+12.05 settimane
+0.02 giorni
+1.00 giorni
+1.20 giorni
+2.12 giorni
+12.05 giorni
+0.02 ore
+1.00 ore
+1.20 ore
+2.12 ore
+12.05 ore
+0.02 minuti
+1.00 minuti
+1.20 minuti
+2.12 minuti
+12.05 minuti
+0.02 secondi
+1.00 secondi
+1.20 secondi
+2.12 secondi
+12.05 secondi
+0.02 millisecondi
+1.00 millisecondi
+1.20 millisecondi
+2.12 millisecondi
+12.05 millisecondi
+=multipleUnitTargets
+un anno e due mesi
+un anno e tre settimane
+un anno, due mesi e tre settimane
+un mese e due settimane
+un mese e tre giorni
+un mese, due settimane e tre giorni
+una settimana e due giorni
+una settimana e tre ore
+una settimana, due giorni e tre ore
+un giorno e due ore
+un giorno e tre minuti
+un giorno, due ore e tre minuti
+un'ora e due minuti
+un'ora e tre secondi
+un'ora, due minuti e tre secondi
+un minuto e due secondi
+un minuto e tre millisecondi
+un minuto, due secondi e tre millisecondi
+un secondo e due millisecondi
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt
new file mode 100644
index 0000000..ffa6d9b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3年前
+2年前
+1年前
+null
+今から1年後
+今から2年後
+今から3年後
+今から5年後
+今から10年後
+今から11年後
+今から12年後
+今から20年後
+今から21年後
+今から22年後
+今から23年後
+今から25年後
+3か月前
+2か月前
+1か月前
+null
+今から1か月後
+今から2か月後
+今から3か月後
+今から5か月後
+今から10か月後
+今から11か月後
+今から12か月後
+今から20か月後
+今から21か月後
+今から22か月後
+今から23か月後
+今から25か月後
+3週間前
+2週間前
+1週間前
+null
+今から1週間後
+今から2週間後
+今から3週間後
+今から5週間後
+今から10週間後
+今から11週間後
+今から12週間後
+今から20週間後
+今から21週間後
+今から22週間後
+今から23週間後
+今から25週間後
+3日前
+2日前
+1日前
+null
+今から1日後
+今から2日後
+今から3日後
+今から5日後
+今から10日後
+今から11日後
+今から12日後
+今から20日後
+今から21日後
+今から22日後
+今から23日後
+今から25日後
+3時間前
+2時間前
+1時間前
+null
+今から1時間後
+今から2時間後
+今から3時間後
+今から5時間後
+今から10時間後
+今から11時間後
+今から12時間後
+今から20時間後
+今から21時間後
+今から22時間後
+今から23時間後
+今から25時間後
+3分前
+2分前
+1分前
+null
+今から1分後
+今から2分後
+今から3分後
+今から5分後
+今から10分後
+今から11分後
+今から12分後
+今から20分後
+今から21分後
+今から22分後
+今から23分後
+今から25分後
+3秒前
+2秒前
+1秒前
+null
+今から1秒後
+今から2秒後
+今から3秒後
+今から5秒後
+今から10秒後
+今から11秒後
+今から12秒後
+今から20秒後
+今から21秒後
+今から22秒後
+今から23秒後
+今から25秒後
+3ミリ秒前
+2ミリ秒前
+1ミリ秒前
+null
+今から1ミリ秒後
+今から2ミリ秒後
+今から3ミリ秒後
+今から5ミリ秒後
+今から10ミリ秒後
+今から11ミリ秒後
+今から12ミリ秒後
+今から20ミリ秒後
+今から21ミリ秒後
+今から22ミリ秒後
+今から23ミリ秒後
+今から25ミリ秒後
+=mediumFormTargets
+3年
+3か月
+3週間
+3日
+3時間
+3分
+3秒
+3ミリ秒
+=shortFormTargets
+3年
+3か月
+3週間
+3日
+3時間
+3分
+3秒
+3ミリ秒
+=customMinuteTargets
+5分
+1時間5分
+10分
+1時間10分
+15分
+1時間15分
+20分
+1時間20分
+25分
+1時間25分
+30分
+1時間30分
+35分
+1時間35分
+40分
+1時間40分
+45分
+1時間45分
+50分
+1時間50分
+55分
+1時間55分
+=limitedUnitTargets
+1か月
+1か月と2週間
+1か月2週間と3日
+1か月前
+1か月と2週間前
+1か月2週間と3日前
+今から1か月後
+今から1か月と2週間後
+今から1か月2週間と3日後
+1か月以内
+1か月と2週間以内
+1か月2週間と3日以内
+過去1か月以内
+過去1か月と2週間以内
+過去1か月2週間と3日以内
+今から1か月以内
+今から1か月と2週間以内
+今から1か月2週間と3日以内
+1か月以上
+1か月と2週間以上
+1か月2週間と3日以上
+1か月以上前
+1か月と2週間以上前
+1か月2週間と3日以上前
+今から1か月以上後
+今から1か月と2週間以上後
+今から1か月2週間と3日以上後
+1時間
+1時間2分
+1時間2分3秒
+1時間前
+1時間2分前
+1時間2分3秒前
+今から1時間後
+今から1時間2分後
+今から1時間2分3秒後
+1時間以内
+1時間2分以内
+1時間2分3秒以内
+過去1時間以内
+過去1時間2分以内
+過去1時間2分3秒以内
+今から1時間以内
+今から1時間2分以内
+今から1時間2分3秒以内
+1時間以上
+1時間2分以上
+1時間2分3秒以上
+1時間以上前
+1時間2分以上前
+1時間2分3秒以上前
+今から1時間以上後
+今から1時間2分以上後
+今から1時間2分3秒以上後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+1年半
+2年半
+5年半
+10年半
+11年半
+12年半
+20年半
+21年半
+22年半
+半か月
+1か月半
+2か月半
+5か月半
+10か月半
+11か月半
+12か月半
+20か月半
+21か月半
+22か月半
+0.5週間
+1.5週間
+2.5週間
+5.5週間
+10.5週間
+11.5週間
+12.5週間
+20.5週間
+21.5週間
+22.5週間
+半日
+1日半
+2日半
+5日半
+10日半
+11日半
+12日半
+20日半
+21日半
+22日半
+半時間
+1時間半
+2時間半
+5時間半
+10時間半
+11時間半
+12時間半
+20時間半
+21時間半
+22時間半
+0.5分
+1分半
+2分半
+5分半
+10分半
+11分半
+12分半
+20分半
+21分半
+22分半
+半秒
+1秒半
+2秒半
+5秒半
+10秒半
+11秒半
+12秒半
+20秒半
+21秒半
+22秒半
+0.5ミリ秒
+1.5ミリ秒
+2.5ミリ秒
+5.5ミリ秒
+10.5ミリ秒
+11.5ミリ秒
+12.5ミリ秒
+20.5ミリ秒
+21.5ミリ秒
+22.5ミリ秒
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02か月
+1.00か月
+1.20か月
+2.12か月
+12.05か月
+0.02週間
+1.00週間
+1.20週間
+2.12週間
+12.05週間
+0.02日
+1.00日
+1.20日
+2.12日
+12.05日
+0.02時間
+1.00時間
+1.20時間
+2.12時間
+12.05時間
+0.02分
+1.00分
+1.20分
+2.12分
+12.05分
+0.02秒
+1.00秒
+1.20秒
+2.12秒
+12.05秒
+0.02ミリ秒
+1.00ミリ秒
+1.20ミリ秒
+2.12ミリ秒
+12.05ミリ秒
+=multipleUnitTargets
+1年2か月
+1年と3週間
+1年2か月と3週間
+1か月と2週間
+1か月と3日
+1か月2週間と3日
+1週間と2日
+1週間と3時間
+1週間と2日3時間
+1日2時間
+1日と3分
+1日2時間3分
+1時間2分
+1時間と3秒
+1時間2分3秒
+1分2秒
+1分と3ミリ秒
+1分2.003秒
+1.002秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt
new file mode 100644
index 0000000..6831459
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3년전
+2년전
+1년전
+0년
+지금부터1년
+지금부터2년
+지금부터3년
+지금부터5년
+지금부터10년
+지금부터11년
+지금부터12년
+지금부터20년
+지금부터21년
+지금부터22년
+지금부터23년
+지금부터25년
+3개월전
+2개월전
+1개월전
+0개월
+지금부터1개월
+지금부터2개월
+지금부터3개월
+지금부터5개월
+지금부터10개월
+지금부터11개월
+지금부터12개월
+지금부터20개월
+지금부터21개월
+지금부터22개월
+지금부터23개월
+지금부터25개월
+3주전
+2주전
+1주전
+0주
+지금부터1주
+지금부터2주
+지금부터3주
+지금부터5주
+지금부터10주
+지금부터11주
+지금부터12주
+지금부터20주
+지금부터21주
+지금부터22주
+지금부터23주
+지금부터25주
+3일전
+2일전
+1일전
+0일
+지금부터1일
+지금부터2일
+지금부터3일
+지금부터5일
+지금부터10일
+지금부터11일
+지금부터12일
+지금부터20일
+지금부터21일
+지금부터22일
+지금부터23일
+지금부터25일
+3시간전
+2시간전
+1시간전
+0시간
+지금부터1시간
+지금부터2시간
+지금부터3시간
+지금부터5시간
+지금부터10시간
+지금부터11시간
+지금부터12시간
+지금부터20시간
+지금부터21시간
+지금부터22시간
+지금부터23시간
+지금부터25시간
+3분전
+2분전
+1분전
+0분
+지금부터1분
+지금부터2분
+지금부터3분
+지금부터5분
+지금부터10분
+지금부터11분
+지금부터12분
+지금부터20분
+지금부터21분
+지금부터22분
+지금부터23분
+지금부터25분
+3초전
+2초전
+1초전
+0초
+지금부터1초
+지금부터2초
+지금부터3초
+지금부터5초
+지금부터10초
+지금부터11초
+지금부터12초
+지금부터20초
+지금부터21초
+지금부터22초
+지금부터23초
+지금부터25초
+3밀리세컨드전
+2밀리세컨드전
+1밀리세컨드전
+0밀리세컨드
+지금부터1밀리세컨드
+지금부터2밀리세컨드
+지금부터3밀리세컨드
+지금부터5밀리세컨드
+지금부터10밀리세컨드
+지금부터11밀리세컨드
+지금부터12밀리세컨드
+지금부터20밀리세컨드
+지금부터21밀리세컨드
+지금부터22밀리세컨드
+지금부터23밀리세컨드
+지금부터25밀리세컨드
+=mediumFormTargets
+3년
+3개월
+3주
+3일
+3시간
+3분
+3초
+3밀리세컨드
+=shortFormTargets
+3년
+3개월
+3주
+3일
+3시간
+3분
+3초
+3밀리세컨드
+=customMinuteTargets
+5분
+1시간 5분
+10분
+1시간 10분
+15분
+1시간 15분
+20분
+1시간 20분
+25분
+1시간 25분
+30분
+1시간 30분
+35분
+1시간 35분
+40분
+1시간 40분
+45분
+1시간 45분
+50분
+1시간 50분
+55분
+1시간 55분
+=limitedUnitTargets
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½년
+1½년
+2½년
+5½년
+10½년
+11½년
+12½년
+20½년
+21½년
+22½년
+½개월
+1½개월
+2½개월
+5½개월
+10½개월
+11½개월
+12½개월
+20½개월
+21½개월
+22½개월
+½주
+1½주
+2½주
+5½주
+10½주
+11½주
+12½주
+20½주
+21½주
+22½주
+½일
+1½일
+2½일
+5½일
+10½일
+11½일
+12½일
+20½일
+21½일
+22½일
+½시간
+1½시간
+2½시간
+5½시간
+10½시간
+11½시간
+12½시간
+20½시간
+21½시간
+22½시간
+½분
+1½분
+2½분
+5½분
+10½분
+11½분
+12½분
+20½분
+21½분
+22½분
+½초
+1½초
+2½초
+5½초
+10½초
+11½초
+12½초
+20½초
+21½초
+22½초
+½밀리세컨드
+1½밀리세컨드
+2½밀리세컨드
+5½밀리세컨드
+10½밀리세컨드
+11½밀리세컨드
+12½밀리세컨드
+20½밀리세컨드
+21½밀리세컨드
+22½밀리세컨드
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02년
+1.00년
+1.20년
+2.12년
+12.05년
+0.02개월
+1.00개월
+1.20개월
+2.12개월
+12.05개월
+0.02주
+1.00주
+1.20주
+2.12주
+12.05주
+0.02일
+1.00일
+1.20일
+2.12일
+12.05일
+0.02시간
+1.00시간
+1.20시간
+2.12시간
+12.05시간
+0.02분
+1.00분
+1.20분
+2.12분
+12.05분
+0.02초
+1.00초
+1.20초
+2.12초
+12.05초
+0.02밀리세컨드
+1.00밀리세컨드
+1.20밀리세컨드
+2.12밀리세컨드
+12.05밀리세컨드
+=multipleUnitTargets
+1년 2개월
+1년 3주
+1년 2개월 3주
+1개월 2주
+1개월 3일
+1개월 2주 3일
+1주 2일
+1주 3시간
+1주 2일 3시간
+1일 2시간
+1일 3분
+1일 2시간 3분
+1시간 2분
+1시간 3초
+1시간 2분 3초
+1분 2초
+1분 3밀리세컨드
+1분 2초 3밀리세컨드
+1초 2밀리세컨드
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt
new file mode 100644
index 0000000..28aeb7f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 года назад
+2 года назад
+1 год назад
+0 лет
+через 1 год
+через 2 года
+через 3 года
+через 5 лет
+через 10 лет
+через 11 лет
+через 12 лет
+через 20 лет
+через 21 год
+через 22 года
+через 23 года
+через 25 лет
+3 месяца назад
+2 месяца назад
+1 месяц назад
+0 месяцев
+через 1 месяц
+через 2 месяца
+через 3 месяца
+через 5 месяцев
+через 10 месяцев
+через 11 месяцев
+через 12 месяцев
+через 20 месяцев
+через 21 месяц
+через 22 месяца
+через 23 месяца
+через 25 месяцев
+3 недели назад
+2 недели назад
+1 неделя назад
+0 недель
+через 1 неделя
+через 2 недели
+через 3 недели
+через 5 недель
+через 10 недель
+через 11 недель
+через 12 недель
+через 20 недель
+через 21 неделя
+через 22 недели
+через 23 недели
+через 25 недель
+3 дня назад
+2 дня назад
+1 день назад
+0 дней
+через 1 день
+через 2 дня
+через 3 дня
+через 5 дней
+через 10 дней
+через 11 дней
+через 12 дней
+через 20 дней
+через 21 день
+через 22 дня
+через 23 дня
+через 25 дней
+3 часа назад
+2 часа назад
+1 час назад
+0 часов
+через 1 час
+через 2 часа
+через 3 часа
+через 5 часов
+через 10 часов
+через 11 часов
+через 12 часов
+через 20 часов
+через 21 час
+через 22 часа
+через 23 часа
+через 25 часов
+3 минуты назад
+2 минуты назад
+1 минута назад
+0 минут
+через 1 минута
+через 2 минуты
+через 3 минуты
+через 5 минут
+через 10 минут
+через 11 минут
+через 12 минут
+через 20 минут
+через 21 минута
+через 22 минуты
+через 23 минуты
+через 25 минут
+3 секунды назад
+2 секунды назад
+1 секунда назад
+0 секунд
+через 1 секунда
+через 2 секунды
+через 3 секунды
+через 5 секунд
+через 10 секунд
+через 11 секунд
+через 12 секунд
+через 20 секунд
+через 21 секунда
+через 22 секунды
+через 23 секунды
+через 25 секунд
+3 миллисекунды назад
+2 миллисекунды назад
+1 миллисекунда назад
+0 миллисекунд
+через 1 миллисекунда
+через 2 миллисекунды
+через 3 миллисекунды
+через 5 миллисекунд
+через 10 миллисекунд
+через 11 миллисекунд
+через 12 миллисекунд
+через 20 миллисекунд
+через 21 миллисекунда
+через 22 миллисекунды
+через 23 миллисекунды
+через 25 миллисекунд
+=mediumFormTargets
+3 г
+3 мес
+3 нед
+3 дн
+3 ч
+3 мин
+3 с
+3 мс
+=shortFormTargets
+3 г
+3 m
+3 н
+3 д
+3 ч
+3 м
+3 с
+3 x
+=customMinuteTargets
+5 минут
+1 час и 5 минут
+10 минут
+1 час и 10 минут
+15 минут
+1 час и 15 минут
+20 минут
+1 час и 20 минут
+25 минут
+1 час и 25 минут
+30 минут
+1 час и 30 минут
+35 минут
+1 час и 35 минут
+40 минут
+1 час и 40 минут
+45 минут
+1 час и 45 минут
+50 минут
+1 час и 50 минут
+55 минут
+1 час и 55 минут
+=limitedUnitTargets
+1 месяц
+1 месяц и 2 недели
+1 месяц, 2 недели и 3 дня
+1 месяц назад
+1 месяц и 2 недели назад
+1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+меньше, чем 1 месяц
+меньше, чем 1 месяц и 2 недели
+меньше, чем 1 месяц, 2 недели и 3 дня
+меньше, чем 1 месяц назад
+меньше, чем 1 месяц и 2 недели назад
+меньше, чем 1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+больше, чем 1 месяц
+больше, чем 1 месяц и 2 недели
+больше, чем 1 месяц, 2 недели и 3 дня
+больше, чем 1 месяц назад
+больше, чем 1 месяц и 2 недели назад
+больше, чем 1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+1 час
+1 час и 2 минуты
+1 час, 2 минуты и 3 секунды
+1 час назад
+1 час и 2 минуты назад
+1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+меньше, чем 1 час
+меньше, чем 1 час и 2 минуты
+меньше, чем 1 час, 2 минуты и 3 секунды
+меньше, чем 1 час назад
+меньше, чем 1 час и 2 минуты назад
+меньше, чем 1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+больше, чем 1 час
+больше, чем 1 час и 2 минуты
+больше, чем 1 час, 2 минуты и 3 секунды
+больше, чем 1 час назад
+больше, чем 1 час и 2 минуты назад
+больше, чем 1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ года
+1½ года
+2½ года
+5½ лет
+10½ лет
+11½ лет
+12½ лет
+20½ лет
+21½ год
+22½ года
+½ месяца
+1½ месяца
+2½ месяца
+5½ месяцев
+10½ месяцев
+11½ месяцев
+12½ месяцев
+20½ месяцев
+21½ месяц
+22½ месяца
+½ недели
+1½ недели
+2½ недели
+5½ недель
+10½ недель
+11½ недель
+12½ недель
+20½ недель
+21½ неделя
+22½ недели
+½ дня
+1½ дня
+2½ дня
+5½ дней
+10½ дней
+11½ дней
+12½ дней
+20½ дней
+21½ день
+22½ дня
+½ часа
+1½ часа
+2½ часа
+5½ часов
+10½ часов
+11½ часов
+12½ часов
+20½ часов
+21½ час
+22½ часа
+½ минуты
+1½ минуты
+2½ минуты
+5½ минут
+10½ минут
+11½ минут
+12½ минут
+20½ минут
+21½ минута
+22½ минуты
+½ секунды
+1½ секунды
+2½ секунды
+5½ секунд
+10½ секунд
+11½ секунд
+12½ секунд
+20½ секунд
+21½ секунда
+22½ секунды
+½ миллисекунды
+1½ миллисекунды
+2½ миллисекунды
+5½ миллисекунд
+10½ миллисекунд
+11½ миллисекунд
+12½ миллисекунд
+20½ миллисекунд
+21½ миллисекунда
+22½ миллисекунды
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 года
+1.00 года
+1.20 года
+2.12 года
+12.05 года
+0.02 месяца
+1.00 месяца
+1.20 месяца
+2.12 месяца
+12.05 месяца
+0.02 недели
+1.00 недели
+1.20 недели
+2.12 недели
+12.05 недели
+0.02 дня
+1.00 дня
+1.20 дня
+2.12 дня
+12.05 дня
+0.02 часа
+1.00 часа
+1.20 часа
+2.12 часа
+12.05 часа
+0.02 минуты
+1.00 минуты
+1.20 минуты
+2.12 минуты
+12.05 минуты
+0.02 секунды
+1.00 секунды
+1.20 секунды
+2.12 секунды
+12.05 секунды
+0.02 миллисекунды
+1.00 миллисекунды
+1.20 миллисекунды
+2.12 миллисекунды
+12.05 миллисекунды
+=multipleUnitTargets
+1 год и 2 месяца
+1 год и 3 недели
+1 год, 2 месяца и 3 недели
+1 месяц и 2 недели
+1 месяц и 3 дня
+1 месяц, 2 недели и 3 дня
+1 неделя и 2 дня
+1 неделя и 3 часа
+1 неделя, 2 дня и 3 часа
+1 день и 2 часа
+1 день и 3 минуты
+1 день, 2 часа и 3 минуты
+1 час и 2 минуты
+1 час и 3 секунды
+1 час, 2 минуты и 3 секунды
+1 минута и 2 секунды
+1 минута и 3 миллисекунды
+1 минута, 2 секунды и 3 миллисекунды
+1 секунда и 2 миллисекунды
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt
new file mode 100644
index 0000000..50a81fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 ปีที่แล้ว
+2 ปีที่แล้ว
+1 ปีที่แล้ว
+0 ปี
+อีก 1 ปี
+อีก 2 ปี
+อีก 3 ปี
+อีก 5 ปี
+อีก 10 ปี
+อีก 11 ปี
+อีก 12 ปี
+อีก 20 ปี
+อีก 21 ปี
+อีก 22 ปี
+อีก 23 ปี
+อีก 25 ปี
+3 เดือนที่แล้ว
+2 เดือนที่แล้ว
+1 เดือนที่แล้ว
+0 เดือน
+อีก 1 เดือน
+อีก 2 เดือน
+อีก 3 เดือน
+อีก 5 เดือน
+อีก 10 เดือน
+อีก 11 เดือน
+อีก 12 เดือน
+อีก 20 เดือน
+อีก 21 เดือน
+อีก 22 เดือน
+อีก 23 เดือน
+อีก 25 เดือน
+3 อาทิตย์ที่แล้ว
+2 อาทิตย์ที่แล้ว
+1 อาทิตย์ที่แล้ว
+0 อาทิตย์
+อีก 1 อาทิตย์
+อีก 2 อาทิตย์
+อีก 3 อาทิตย์
+อีก 5 อาทิตย์
+อีก 10 อาทิตย์
+อีก 11 อาทิตย์
+อีก 12 อาทิตย์
+อีก 20 อาทิตย์
+อีก 21 อาทิตย์
+อีก 22 อาทิตย์
+อีก 23 อาทิตย์
+อีก 25 อาทิตย์
+3 วันที่แล้ว
+2 วันที่แล้ว
+1 วันที่แล้ว
+0 วัน
+อีก 1 วัน
+อีก 2 วัน
+อีก 3 วัน
+อีก 5 วัน
+อีก 10 วัน
+อีก 11 วัน
+อีก 12 วัน
+อีก 20 วัน
+อีก 21 วัน
+อีก 22 วัน
+อีก 23 วัน
+อีก 25 วัน
+3 ชั่วโมงที่แล้ว
+2 ชั่วโมงที่แล้ว
+1 ชั่วโมงที่แล้ว
+0 ชั่วโมง
+อีก 1 ชั่วโมง
+อีก 2 ชั่วโมง
+อีก 3 ชั่วโมง
+อีก 5 ชั่วโมง
+อีก 10 ชั่วโมง
+อีก 11 ชั่วโมง
+อีก 12 ชั่วโมง
+อีก 20 ชั่วโมง
+อีก 21 ชั่วโมง
+อีก 22 ชั่วโมง
+อีก 23 ชั่วโมง
+อีก 25 ชั่วโมง
+3 นาทีที่แล้ว
+2 นาทีที่แล้ว
+1 นาทีที่แล้ว
+0 นาที
+อีก 1 นาที
+อีก 2 นาที
+อีก 3 นาที
+อีก 5 นาที
+อีก 10 นาที
+อีก 11 นาที
+อีก 12 นาที
+อีก 20 นาที
+อีก 21 นาที
+อีก 22 นาที
+อีก 23 นาที
+อีก 25 นาที
+3 วินาทีที่แล้ว
+2 วินาทีที่แล้ว
+1 วินาทีที่แล้ว
+0 วินาที
+อีก 1 วินาที
+อีก 2 วินาที
+อีก 3 วินาที
+อีก 5 วินาที
+อีก 10 วินาที
+อีก 11 วินาที
+อีก 12 วินาที
+อีก 20 วินาที
+อีก 21 วินาที
+อีก 22 วินาที
+อีก 23 วินาที
+อีก 25 วินาที
+0.003 วินาทีที่แล้ว
+0.002 วินาทีที่แล้ว
+0.001 วินาทีที่แล้ว
+0.000 วินาที
+อีก 0.001 วินาที
+อีก 0.002 วินาที
+อีก 0.003 วินาที
+อีก 0.005 วินาที
+อีก 0.010 วินาที
+อีก 0.011 วินาที
+อีก 0.012 วินาที
+อีก 0.020 วินาที
+อีก 0.021 วินาที
+อีก 0.022 วินาที
+อีก 0.023 วินาที
+อีก 0.025 วินาที
+=mediumFormTargets
+3 ปี
+3 เดือน
+3 อาทิตย์
+3 วัน
+3 ชม.
+3 นาที
+3 วินาที
+0.003 วินาที
+=shortFormTargets
+3 ปี
+3 เดือน
+3 อาทิตย์
+3 วัน
+3 ชม.
+3 นาที
+3 วินาที
+0.003 วินาที
+=customMinuteTargets
+5 นาที
+1 ชั่วโมง 5 นาที
+10 นาที
+1 ชั่วโมง 10 นาที
+15 นาที
+1 ชั่วโมง 15 นาที
+20 นาที
+1 ชั่วโมง 20 นาที
+25 นาที
+1 ชั่วโมง 25 นาที
+30 นาที
+1 ชั่วโมง 30 นาที
+35 นาที
+1 ชั่วโมง 35 นาที
+40 นาที
+1 ชั่วโมง 40 นาที
+45 นาที
+1 ชั่วโมง 45 นาที
+50 นาที
+1 ชั่วโมง 50 นาที
+55 นาที
+1 ชั่วโมง 55 นาที
+=limitedUnitTargets
+1 เดือน
+1 เดือน 2 อาทิตย์
+1 เดือน 2 อาทิตย์ 3 วัน
+1 เดือนที่แล้ว
+1 เดือน 2 อาทิตย์ที่แล้ว
+1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+อีก 1 เดือน
+อีก 1 เดือน 2 อาทิตย์
+อีก 1 เดือน 2 อาทิตย์ 3 วัน
+น้อยกว่า 1 เดือน
+น้อยกว่า 1 เดือน 2 อาทิตย์
+น้อยกว่า 1 เดือน 2 อาทิตย์ 3 วัน
+น้อยกว่า 1 เดือนที่แล้ว
+น้อยกว่า 1 เดือน 2 อาทิตย์ที่แล้ว
+น้อยกว่า 1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+ไม่ถึงอีก 1 เดือน
+ไม่ถึงอีก 1 เดือน 2 อาทิตย์
+ไม่ถึงอีก 1 เดือน 2 อาทิตย์ 3 วัน
+มากกว่า 1 เดือน
+มากกว่า 1 เดือน 2 อาทิตย์
+มากกว่า 1 เดือน 2 อาทิตย์ 3 วัน
+มากกว่า 1 เดือนที่แล้ว
+มากกว่า 1 เดือน 2 อาทิตย์ที่แล้ว
+มากกว่า 1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+อีัก 1 เดือนกว่าๆ
+อีัก 1 เดือน 2 อาทิตย์กว่าๆ
+อีัก 1 เดือน 2 อาทิตย์ 3 วันกว่าๆ
+1 ชั่วโมง
+1 ชั่วโมง 2 นาที
+1 ชั่วโมง 2 นาที 3 วินาที
+1 ชั่วโมงที่แล้ว
+1 ชั่วโมง 2 นาทีที่แล้ว
+1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+อีก 1 ชั่วโมง
+อีก 1 ชั่วโมง 2 นาที
+อีก 1 ชั่วโมง 2 นาที 3 วินาที
+น้อยกว่า 1 ชั่วโมง
+น้อยกว่า 1 ชั่วโมง 2 นาที
+น้อยกว่า 1 ชั่วโมง 2 นาที 3 วินาที
+น้อยกว่า 1 ชั่วโมงที่แล้ว
+น้อยกว่า 1 ชั่วโมง 2 นาทีที่แล้ว
+น้อยกว่า 1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+ไม่ถึงอีก 1 ชั่วโมง
+ไม่ถึงอีก 1 ชั่วโมง 2 นาที
+ไม่ถึงอีก 1 ชั่วโมง 2 นาที 3 วินาที
+มากกว่า 1 ชั่วโมง
+มากกว่า 1 ชั่วโมง 2 นาที
+มากกว่า 1 ชั่วโมง 2 นาที 3 วินาที
+มากกว่า 1 ชั่วโมงที่แล้ว
+มากกว่า 1 ชั่วโมง 2 นาทีที่แล้ว
+มากกว่า 1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+อีัก 1 ชั่วโมงกว่าๆ
+อีัก 1 ชั่วโมง 2 นาทีกว่าๆ
+อีัก 1 ชั่วโมง 2 นาที 3 วินาทีกว่าๆ
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+ครึ่งปี
+1 ปีครึ่ง
+2 ปีครึ่ง
+5 ปีครึ่ง
+10 ปีครึ่ง
+11 ปีครึ่ง
+12 ปีครึ่ง
+20 ปีครึ่ง
+21 ปีครึ่ง
+22 ปีครึ่ง
+ครึ่งเดือน
+1 เดือนครึ่ง
+2 เดือนครึ่ง
+5 เดือนครึ่ง
+10 เดือนครึ่ง
+11 เดือนครึ่ง
+12 เดือนครึ่ง
+20 เดือนครึ่ง
+21 เดือนครึ่ง
+22 เดือนครึ่ง
+ครึ่งอาทิตย์
+1 อาทิตย์ครึ่ง
+2 อาทิตย์ครึ่ง
+5 อาทิตย์ครึ่ง
+10 อาทิตย์ครึ่ง
+11 อาทิตย์ครึ่ง
+12 อาทิตย์ครึ่ง
+20 อาทิตย์ครึ่ง
+21 อาทิตย์ครึ่ง
+22 อาทิตย์ครึ่ง
+ครึ่งวัน
+1 วันครึ่ง
+2 วันครึ่ง
+5 วันครึ่ง
+10 วันครึ่ง
+11 วันครึ่ง
+12 วันครึ่ง
+20 วันครึ่ง
+21 วันครึ่ง
+22 วันครึ่ง
+ครึ่งชั่วโมง
+1 ชั่วโมงครึ่ง
+2 ชั่วโมงครึ่ง
+5 ชั่วโมงครึ่ง
+10 ชั่วโมงครึ่ง
+11 ชั่วโมงครึ่ง
+12 ชั่วโมงครึ่ง
+20 ชั่วโมงครึ่ง
+21 ชั่วโมงครึ่ง
+22 ชั่วโมงครึ่ง
+ครึ่งนาที
+1 นาทีครึ่ง
+2 นาทีครึ่ง
+5 นาทีครึ่ง
+10 นาทีครึ่ง
+11 นาทีครึ่ง
+12 นาทีครึ่ง
+20 นาทีครึ่ง
+21 นาทีครึ่ง
+22 นาทีครึ่ง
+0.5 วินาที
+1.5 วินาที
+2.5 วินาที
+5.5 วินาที
+10.5 วินาที
+11.5 วินาที
+12.5 วินาที
+20.5 วินาที
+21.5 วินาที
+22.5 วินาที
+0.000 วินาที
+0.001 วินาที
+0.002 วินาที
+0.005 วินาที
+0.010 วินาที
+0.011 วินาที
+0.012 วินาที
+0.020 วินาที
+0.021 วินาที
+0.022 วินาที
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 ปี
+1.00 ปี
+1.20 ปี
+2.12 ปี
+12.05 ปี
+0.02 เดือน
+1.00 เดือน
+1.20 เดือน
+2.12 เดือน
+12.05 เดือน
+0.02 อาทิตย์
+1.00 อาทิตย์
+1.20 อาทิตย์
+2.12 อาทิตย์
+12.05 อาทิตย์
+0.02 วัน
+1.00 วัน
+1.20 วัน
+2.12 วัน
+12.05 วัน
+0.02 ชั่วโมง
+1.00 ชั่วโมง
+1.20 ชั่วโมง
+2.12 ชั่วโมง
+12.05 ชั่วโมง
+0.02 นาที
+1.00 นาที
+1.20 นาที
+2.12 นาที
+12.05 นาที
+0.02 วินาที
+1.00 วินาที
+1.20 วินาที
+2.12 วินาที
+12.05 วินาที
+0.000 วินาที
+0.001 วินาที
+0.001 วินาที
+0.002 วินาที
+0.012 วินาที
+=multipleUnitTargets
+1 ปี 2 เดือน
+1 ปี 3 อาทิตย์
+1 ปี 2 เดือน 3 อาทิตย์
+1 เดือน 2 อาทิตย์
+1 เดือน 3 วัน
+1 เดือน 2 อาทิตย์ 3 วัน
+1 อาทิตย์ 2 วัน
+1 อาทิตย์ 3 ชั่วโมง
+1 อาทิตย์ 2 วัน 3 ชั่วโมง
+1 วัน 2 ชั่วโมง
+1 วัน 3 นาที
+1 วัน 2 ชั่วโมง 3 นาที
+1 ชั่วโมง 2 นาที
+1 ชั่วโมง 3 วินาที
+1 ชั่วโมง 2 นาที 3 วินาที
+1 นาที 2 วินาที
+1 นาที 0.003 วินาที
+1 นาที 2.003 วินาที
+1.002 วินาที
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt
new file mode 100644
index 0000000..fa5e422
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+两年以前
+一年以前
+零年
+一年以后
+两年以后
+三年以后
+五年以后
+十年以后
+十一年以后
+十二年以后
+二十年以后
+二十一年以后
+二十二年以后
+二十三年以后
+二十五年以后
+三个月以前
+两个月以前
+一个月以前
+零个月
+一个月以后
+两个月以后
+三个月以后
+五个月以后
+十个月以后
+十一个月以后
+十二个月以后
+二十个月以后
+二十一个月以后
+二十二个月以后
+二十三个月以后
+二十五个月以后
+三周以前
+两周以前
+一周以前
+零周
+一周以后
+两周以后
+三周以后
+五周以后
+十周以后
+十一周以后
+十二周以后
+二十周以后
+二十一周以后
+二十二周以后
+二十三周以后
+二十五周以后
+三天以前
+两天以前
+一天以前
+零天
+一天以后
+两天以后
+三天以后
+五天以后
+十天以后
+十一天以后
+十二天以后
+二十天以后
+二十一天以后
+二十二天以后
+二十三天以后
+二十五天以后
+三个小时以前
+两个小时以前
+一个小时以前
+零个小时
+一个小时以后
+两个小时以后
+三个小时以后
+五个小时以后
+十个小时以后
+十一个小时以后
+十二个小时以后
+二十个小时以后
+二十一个小时以后
+二十二个小时以后
+二十三个小时以后
+二十五个小时以后
+三分钟以前
+两分钟以前
+一分钟以前
+零分钟
+一分钟以后
+两分钟以后
+三分钟以后
+五分钟以后
+十分钟以后
+十一分钟以后
+十二分钟以后
+二十分钟以后
+二十一分钟以后
+二十二分钟以后
+二十三分钟以后
+二十五分钟以后
+三秒钟以前
+两秒钟以前
+一秒钟以前
+零秒钟
+一秒钟以后
+两秒钟以后
+三秒钟以后
+五秒钟以后
+十秒钟以后
+十一秒钟以后
+十二秒钟以后
+二十秒钟以后
+二十一秒钟以后
+二十二秒钟以后
+二十三秒钟以后
+二十五秒钟以后
+三毫秒以前
+两毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以后
+两毫秒以后
+三毫秒以后
+五毫秒以后
+十毫秒以后
+十一毫秒以后
+十二毫秒以后
+二十毫秒以后
+二十一毫秒以后
+二十二毫秒以后
+二十三毫秒以后
+二十五毫秒以后
+=mediumFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=shortFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=customMinuteTargets
+五分钟
+一个小时五分钟
+十分钟
+一个小时十分钟
+一刻钟
+一个小时一刻钟
+二十分钟
+一个小时二十分钟
+二十五分钟
+一个小时二十五分钟
+三十分钟
+一个小时三十分钟
+三十五分钟
+一个小时三十五分钟
+四十分钟
+一个小时四十分钟
+三刻钟
+一个小时三刻钟
+五十分钟
+一个小时五十分钟
+五十五分钟
+一个小时五十五分钟
+=limitedUnitTargets
+一个月
+一个月两周
+一个月两周三天
+一个月以前
+一个月两周以前
+一个月两周三天以前
+一个月以后
+一个月两周以后
+一个月两周三天以后
+不到一个月
+不到一个月两周
+不到一个月两周三天
+不到一个月以前
+不到一个月两周以前
+不到一个月两周三天以前
+不到一个月以后
+不到一个月两周以后
+不到一个月两周三天以后
+超过一个月
+超过一个月两周
+超过一个月两周三天
+超过一个月以前
+超过一个月两周以前
+超过一个月两周三天以前
+超过一个月以后
+超过一个月两周以后
+超过一个月两周三天以后
+一个小时
+一个小时两分钟
+一个小时两分三秒钟
+一个小时以前
+一个小时两分钟以前
+一个小时两分三秒钟以前
+一个小时以后
+一个小时两分钟以后
+一个小时两分三秒钟以后
+不到一个小时
+不到一个小时两分钟
+不到一个小时两分三秒钟
+不到一个小时以前
+不到一个小时两分钟以前
+不到一个小时两分三秒钟以前
+不到一个小时以后
+不到一个小时两分钟以后
+不到一个小时两分三秒钟以后
+超过一个小时
+超过一个小时两分钟
+超过一个小时两分三秒钟
+超过一个小时以前
+超过一个小时两分钟以前
+超过一个小时两分三秒钟以前
+超过一个小时以后
+超过一个小时两分钟以后
+超过一个小时两分三秒钟以后
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+两年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半个月
+一个半月
+两个半月
+五个半月
+十个半月
+十一个半月
+十二个半月
+二十个半月
+二十一个半月
+二十二个半月
+半周
+一周半
+两周半
+五周半
+十周半
+十一周半
+十二周半
+二十周半
+二十一周半
+二十二周半
+半天
+一天半
+两天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半个小时
+一个半小时
+两个半小时
+五个半小时
+十个半小时
+十一个半小时
+十二个半小时
+二十个半小时
+二十一个半小时
+二十二个半小时
+半分钟
+一分半钟
+两分半钟
+五分半钟
+十分半钟
+十一分半钟
+十二分半钟
+二十分半钟
+二十一分半钟
+二十二分半钟
+半秒钟
+一秒半钟
+两秒半钟
+五秒半钟
+十秒半钟
+十一秒半钟
+十二秒半钟
+二十秒半钟
+二十一秒半钟
+二十二秒半钟
+半毫秒
+一毫秒半
+两毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02个月
+1.00个月
+1.20个月
+2.12个月
+12.05个月
+0.02周
+1.00周
+1.20周
+2.12周
+12.05周
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02个小时
+1.00个小时
+1.20个小时
+2.12个小时
+12.05个小时
+0.02分钟
+1.00分钟
+1.20分钟
+2.12分钟
+12.05分钟
+0.02秒钟
+1.00秒钟
+1.20秒钟
+2.12秒钟
+12.05秒钟
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年两个月
+一年三周
+一年两个月三周
+一个月两周
+一个月三天
+一个月两周三天
+一周两天
+一周三个小时
+一周两天三个小时
+一天两个小时
+一天三分钟
+一天两个小时三分钟
+一个小时两分钟
+一个小时三秒钟
+一个小时两分三秒钟
+一分两秒钟
+一分三毫秒
+一分两秒三毫秒
+一秒两毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt
new file mode 100644
index 0000000..039221e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+两年以前
+一年以前
+零年
+一年以后
+两年以后
+三年以后
+五年以后
+十年以后
+十一年以后
+十二年以后
+二十年以后
+二十一年以后
+二十二年以后
+二十三年以后
+二十五年以后
+三个月以前
+两个月以前
+一个月以前
+零个月
+一个月以后
+两个月以后
+三个月以后
+五个月以后
+十个月以后
+十一个月以后
+十二个月以后
+二十个月以后
+二十一个月以后
+二十二个月以后
+二十三个月以后
+二十五个月以后
+三周以前
+两周以前
+一周以前
+零周
+一周以后
+两周以后
+三周以后
+五周以后
+十周以后
+十一周以后
+十二周以后
+二十周以后
+二十一周以后
+二十二周以后
+二十三周以后
+二十五周以后
+三天以前
+两天以前
+一天以前
+零天
+一天以后
+两天以后
+三天以后
+五天以后
+十天以后
+十一天以后
+十二天以后
+二十天以后
+二十一天以后
+二十二天以后
+二十三天以后
+二十五天以后
+三个小时以前
+两个小时以前
+一个小时以前
+零个小时
+一个小时以后
+两个小时以后
+三个小时以后
+五个小时以后
+十个小时以后
+十一个小时以后
+十二个小时以后
+二十个小时以后
+二十一个小时以后
+二十二个小时以后
+二十三个小时以后
+二十五个小时以后
+三分钟以前
+两分钟以前
+一分钟以前
+零分钟
+一分钟以后
+两分钟以后
+三分钟以后
+五分钟以后
+十分钟以后
+十一分钟以后
+十二分钟以后
+二十分钟以后
+二十一分钟以后
+二十二分钟以后
+二十三分钟以后
+二十五分钟以后
+三秒钟以前
+两秒钟以前
+一秒钟以前
+零秒钟
+一秒钟以后
+两秒钟以后
+三秒钟以后
+五秒钟以后
+十秒钟以后
+十一秒钟以后
+十二秒钟以后
+二十秒钟以后
+二十一秒钟以后
+二十二秒钟以后
+二十三秒钟以后
+二十五秒钟以后
+三毫秒以前
+两毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以后
+两毫秒以后
+三毫秒以后
+五毫秒以后
+十毫秒以后
+十一毫秒以后
+十二毫秒以后
+二十毫秒以后
+二十一毫秒以后
+二十二毫秒以后
+二十三毫秒以后
+二十五毫秒以后
+=mediumFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=shortFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=customMinuteTargets
+一个字
+一个小时一个字
+两个字
+一个小时两个字
+三个字
+一个小时三个字
+四个字
+一个小时四个字
+五个字
+一个小时五个字
+六个字
+一个小时六个字
+七个字
+一个小时七个字
+八个字
+一个小时八个字
+九个字
+一个小时九个字
+十个字
+一个小时十个字
+十一个字
+一个小时十一个字
+=limitedUnitTargets
+一个月
+一个月两周
+一个月两周三天
+一个月以前
+一个月两周以前
+一个月两周三天以前
+一个月以后
+一个月两周以后
+一个月两周三天以后
+不到一个月
+不到一个月两周
+不到一个月两周三天
+不到一个月以前
+不到一个月两周以前
+不到一个月两周三天以前
+不到一个月以后
+不到一个月两周以后
+不到一个月两周三天以后
+超过一个月
+超过一个月两周
+超过一个月两周三天
+超过一个月以前
+超过一个月两周以前
+超过一个月两周三天以前
+超过一个月以后
+超过一个月两周以后
+超过一个月两周三天以后
+一个小时
+一个小时两分钟
+一个小时两分三秒钟
+一个小时以前
+一个小时两分钟以前
+一个小时两分三秒钟以前
+一个小时以后
+一个小时两分钟以后
+一个小时两分三秒钟以后
+不到一个小时
+不到一个小时两分钟
+不到一个小时两分三秒钟
+不到一个小时以前
+不到一个小时两分钟以前
+不到一个小时两分三秒钟以前
+不到一个小时以后
+不到一个小时两分钟以后
+不到一个小时两分三秒钟以后
+超过一个小时
+超过一个小时两分钟
+超过一个小时两分三秒钟
+超过一个小时以前
+超过一个小时两分钟以前
+超过一个小时两分三秒钟以前
+超过一个小时以后
+超过一个小时两分钟以后
+超过一个小时两分三秒钟以后
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+两年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半个月
+一个半月
+两个半月
+五个半月
+十个半月
+十一个半月
+十二个半月
+二十个半月
+二十一个半月
+二十二个半月
+半周
+一周半
+两周半
+五周半
+十周半
+十一周半
+十二周半
+二十周半
+二十一周半
+二十二周半
+半天
+一天半
+两天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半个小时
+一个半小时
+两个半小时
+五个半小时
+十个半小时
+十一个半小时
+十二个半小时
+二十个半小时
+二十一个半小时
+二十二个半小时
+半分钟
+一分半钟
+两分半钟
+五分半钟
+十分半钟
+十一分半钟
+十二分半钟
+二十分半钟
+二十一分半钟
+二十二分半钟
+半秒钟
+一秒半钟
+两秒半钟
+五秒半钟
+十秒半钟
+十一秒半钟
+十二秒半钟
+二十秒半钟
+二十一秒半钟
+二十二秒半钟
+半毫秒
+一毫秒半
+两毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02个月
+1.00个月
+1.20个月
+2.12个月
+12.05个月
+0.02周
+1.00周
+1.20周
+2.12周
+12.05周
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02个小时
+1.00个小时
+1.20个小时
+2.12个小时
+12.05个小时
+0.02分钟
+1.00分钟
+1.20分钟
+2.12分钟
+12.05分钟
+0.02秒钟
+1.00秒钟
+1.20秒钟
+2.12秒钟
+12.05秒钟
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年两个月
+一年三周
+一年两个月三周
+一个月两周
+一个月三天
+一个月两周三天
+一周两天
+一周三个小时
+一周两天三个小时
+一天两个小时
+一天三分钟
+一天两个小时三分钟
+一个小时两分钟
+一个小时三秒钟
+一个小时两分三秒钟
+一分两秒钟
+一分三毫秒
+一分两秒三毫秒
+一秒两毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt
new file mode 100644
index 0000000..49f5b00
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+兩年以前
+一年以前
+零年
+一年以後
+兩年以後
+三年以後
+五年以後
+十年以後
+十一年以後
+十二年以後
+二十年以後
+二十一年以後
+二十二年以後
+二十三年以後
+二十五年以後
+三個月以前
+兩個月以前
+一個月以前
+零個月
+一個月以後
+兩個月以後
+三個月以後
+五個月以後
+十個月以後
+十一個月以後
+十二個月以後
+二十個月以後
+二十一個月以後
+二十二個月以後
+二十三個月以後
+二十五個月以後
+三週以前
+兩週以前
+一週以前
+零週
+一週以後
+兩週以後
+三週以後
+五週以後
+十週以後
+十一週以後
+十二週以後
+二十週以後
+二十一週以後
+二十二週以後
+二十三週以後
+二十五週以後
+三天以前
+兩天以前
+一天以前
+零天
+一天以後
+兩天以後
+三天以後
+五天以後
+十天以後
+十一天以後
+十二天以後
+二十天以後
+二十一天以後
+二十二天以後
+二十三天以後
+二十五天以後
+三個小時以前
+兩個小時以前
+一個小時以前
+零個小時
+一個小時以後
+兩個小時以後
+三個小時以後
+五個小時以後
+十個小時以後
+十一個小時以後
+十二個小時以後
+二十個小時以後
+二十一個小時以後
+二十二個小時以後
+二十三個小時以後
+二十五個小時以後
+三分鐘以前
+兩分鐘以前
+一分鐘以前
+零分鐘
+一分鐘以後
+兩分鐘以後
+三分鐘以後
+五分鐘以後
+十分鐘以後
+十一分鐘以後
+十二分鐘以後
+二十分鐘以後
+二十一分鐘以後
+二十二分鐘以後
+二十三分鐘以後
+二十五分鐘以後
+三秒鐘以前
+兩秒鐘以前
+一秒鐘以前
+零秒鐘
+一秒鐘以後
+兩秒鐘以後
+三秒鐘以後
+五秒鐘以後
+十秒鐘以後
+十一秒鐘以後
+十二秒鐘以後
+二十秒鐘以後
+二十一秒鐘以後
+二十二秒鐘以後
+二十三秒鐘以後
+二十五秒鐘以後
+三毫秒以前
+兩毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以後
+兩毫秒以後
+三毫秒以後
+五毫秒以後
+十毫秒以後
+十一毫秒以後
+十二毫秒以後
+二十毫秒以後
+二十一毫秒以後
+二十二毫秒以後
+二十三毫秒以後
+二十五毫秒以後
+=mediumFormTargets
+三年
+三個月
+三週
+三天
+三個小時
+三分鐘
+三秒鐘
+三毫秒
+=shortFormTargets
+三年
+三個月
+三週
+三天
+三個小時
+三分鐘
+三秒鐘
+三毫秒
+=customMinuteTargets
+五分鐘
+一個小時五分鐘
+十分鐘
+一個小時十分鐘
+一刻鐘
+一個小時一刻鐘
+二十分鐘
+一個小時二十分鐘
+二十五分鐘
+一個小時二十五分鐘
+三十分鐘
+一個小時三十分鐘
+三十五分鐘
+一個小時三十五分鐘
+四十分鐘
+一個小時四十分鐘
+三刻鐘
+一個小時三刻鐘
+五十分鐘
+一個小時五十分鐘
+五十五分鐘
+一個小時五十五分鐘
+=limitedUnitTargets
+一個月
+一個月兩週
+一個月兩週三天
+一個月以前
+一個月兩週以前
+一個月兩週三天以前
+一個月以後
+一個月兩週以後
+一個月兩週三天以後
+不到一個月
+不到一個月兩週
+不到一個月兩週三天
+不到一個月以前
+不到一個月兩週以前
+不到一個月兩週三天以前
+不到一個月以後
+不到一個月兩週以後
+不到一個月兩週三天以後
+超過一個月
+超過一個月兩週
+超過一個月兩週三天
+超過一個月以前
+超過一個月兩週以前
+超過一個月兩週三天以前
+超過一個月以後
+超過一個月兩週以後
+超過一個月兩週三天以後
+一個小時
+一個小時兩分鐘
+一個小時兩分三秒鐘
+一個小時以前
+一個小時兩分鐘以前
+一個小時兩分三秒鐘以前
+一個小時以後
+一個小時兩分鐘以後
+一個小時兩分三秒鐘以後
+不到一個小時
+不到一個小時兩分鐘
+不到一個小時兩分三秒鐘
+不到一個小時以前
+不到一個小時兩分鐘以前
+不到一個小時兩分三秒鐘以前
+不到一個小時以後
+不到一個小時兩分鐘以後
+不到一個小時兩分三秒鐘以後
+超過一個小時
+超過一個小時兩分鐘
+超過一個小時兩分三秒鐘
+超過一個小時以前
+超過一個小時兩分鐘以前
+超過一個小時兩分三秒鐘以前
+超過一個小時以後
+超過一個小時兩分鐘以後
+超過一個小時兩分三秒鐘以後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+兩年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半個月
+一個半月
+兩個半月
+五個半月
+十個半月
+十一個半月
+十二個半月
+二十個半月
+二十一個半月
+二十二個半月
+半週
+一週半
+兩週半
+五週半
+十週半
+十一週半
+十二週半
+二十週半
+二十一週半
+二十二週半
+半天
+一天半
+兩天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半個小時
+一個半小時
+兩個半小時
+五個半小時
+十個半小時
+十一個半小時
+十二個半小時
+二十個半小時
+二十一個半小時
+二十二個半小時
+半分鐘
+一分半鐘
+兩分半鐘
+五分半鐘
+十分半鐘
+十一分半鐘
+十二分半鐘
+二十分半鐘
+二十一分半鐘
+二十二分半鐘
+半秒鐘
+一秒半鐘
+兩秒半鐘
+五秒半鐘
+十秒半鐘
+十一秒半鐘
+十二秒半鐘
+二十秒半鐘
+二十一秒半鐘
+二十二秒半鐘
+半毫秒
+一毫秒半
+兩毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02個月
+1.00個月
+1.20個月
+2.12個月
+12.05個月
+0.02週
+1.00週
+1.20週
+2.12週
+12.05週
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02個小時
+1.00個小時
+1.20個小時
+2.12個小時
+12.05個小時
+0.02分鐘
+1.00分鐘
+1.20分鐘
+2.12分鐘
+12.05分鐘
+0.02秒鐘
+1.00秒鐘
+1.20秒鐘
+2.12秒鐘
+12.05秒鐘
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年兩個月
+一年三週
+一年兩個月三週
+一個月兩週
+一個月三天
+一個月兩週三天
+一週兩天
+一週三個小時
+一週兩天三個小時
+一天兩個小時
+一天三分鐘
+一天兩個小時三分鐘
+一個小時兩分鐘
+一個小時三秒鐘
+一個小時兩分三秒鐘
+一分兩秒鐘
+一分三毫秒
+一分兩秒三毫秒
+一秒兩毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt
new file mode 100644
index 0000000..3dcd425
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3年之前
+2年之前
+1年之前
+0年
+1年之後
+2年之後
+3年之後
+5年之後
+10年之後
+11年之後
+12年之後
+20年之後
+21年之後
+22年之後
+23年之後
+25年之後
+3個月之前
+2個月之前
+1個月之前
+0個月
+1個月之後
+2個月之後
+3個月之後
+5個月之後
+10個月之後
+11個月之後
+12個月之後
+20個月之後
+21個月之後
+22個月之後
+23個月之後
+25個月之後
+3週之前
+2週之前
+1週之前
+0週
+1週之後
+2週之後
+3週之後
+5週之後
+10週之後
+11週之後
+12週之後
+20週之後
+21週之後
+22週之後
+23週之後
+25週之後
+3天之前
+2天之前
+1天之前
+0天
+1天之後
+2天之後
+3天之後
+5天之後
+10天之後
+11天之後
+12天之後
+20天之後
+21天之後
+22天之後
+23天之後
+25天之後
+3小時之前
+2小時之前
+1小時之前
+0小時
+1小時之後
+2小時之後
+3小時之後
+5小時之後
+10小時之後
+11小時之後
+12小時之後
+20小時之後
+21小時之後
+22小時之後
+23小時之後
+25小時之後
+3分鐘之前
+2分鐘之前
+1分鐘之前
+0分鐘
+1分鐘之後
+2分鐘之後
+3分鐘之後
+5分鐘之後
+10分鐘之後
+11分鐘之後
+12分鐘之後
+20分鐘之後
+21分鐘之後
+22分鐘之後
+23分鐘之後
+25分鐘之後
+3秒之前
+2秒之前
+1秒之前
+0秒
+1秒之後
+2秒之後
+3秒之後
+5秒之後
+10秒之後
+11秒之後
+12秒之後
+20秒之後
+21秒之後
+22秒之後
+23秒之後
+25秒之後
+3毫秒之前
+2毫秒之前
+1毫秒之前
+0毫秒
+1毫秒之後
+2毫秒之後
+3毫秒之後
+5毫秒之後
+10毫秒之後
+11毫秒之後
+12毫秒之後
+20毫秒之後
+21毫秒之後
+22毫秒之後
+23毫秒之後
+25毫秒之後
+=mediumFormTargets
+3年
+3個月
+3週
+3天
+3小時
+3分鐘
+3秒
+3毫秒
+=shortFormTargets
+3年
+3個月
+3週
+3天
+3小時
+3分鐘
+3秒
+3毫秒
+=customMinuteTargets
+5分鐘
+1小時5分鐘
+10分鐘
+1小時10分鐘
+15分鐘
+1小時15分鐘
+20分鐘
+1小時20分鐘
+25分鐘
+1小時25分鐘
+30分鐘
+1小時30分鐘
+35分鐘
+1小時35分鐘
+40分鐘
+1小時40分鐘
+45分鐘
+1小時45分鐘
+50分鐘
+1小時50分鐘
+55分鐘
+1小時55分鐘
+=limitedUnitTargets
+1個月
+1個月2週
+1個月2週3天
+1個月之前
+1個月2週之前
+1個月2週3天之前
+1個月之後
+1個月2週之後
+1個月2週3天之後
+少於1個月
+少於1個月2週
+少於1個月2週3天
+1個月以內
+1個月2週以內
+1個月2週3天以內
+即時起1個月以內
+即時起1個月2週以內
+即時起1個月2週3天以內
+超過1個月
+超過1個月2週
+超過1個月2週3天
+超過1個月之前
+超過1個月2週之前
+超過1個月2週3天之前
+即時起1個月之後
+即時起1個月2週之後
+即時起1個月2週3天之後
+1小時
+1小時2分鐘
+1小時2分3秒
+1小時之前
+1小時2分鐘之前
+1小時2分3秒之前
+1小時之後
+1小時2分鐘之後
+1小時2分3秒之後
+少於1小時
+少於1小時2分鐘
+少於1小時2分3秒
+1小時以內
+1小時2分鐘以內
+1小時2分3秒以內
+即時起1小時以內
+即時起1小時2分鐘以內
+即時起1小時2分3秒以內
+超過1小時
+超過1小時2分鐘
+超過1小時2分3秒
+超過1小時之前
+超過1小時2分鐘之前
+超過1小時2分3秒之前
+即時起1小時之後
+即時起1小時2分鐘之後
+即時起1小時2分3秒之後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+1年半
+2年半
+5年半
+10年半
+11年半
+12年半
+20年半
+21年半
+22年半
+半個月
+1個半月
+2個半月
+5個半月
+10個半月
+11個半月
+12個半月
+20個半月
+21個半月
+22個半月
+半週
+1週半
+2週半
+5週半
+10週半
+11週半
+12週半
+20週半
+21週半
+22週半
+半天
+1天半
+2天半
+5天半
+10天半
+11天半
+12天半
+20天半
+21天半
+22天半
+半小時
+1小時半
+2小時半
+5小時半
+10小時半
+11小時半
+12小時半
+20小時半
+21小時半
+22小時半
+半分鐘
+1分半鐘
+2分半鐘
+5分半鐘
+10分半鐘
+11分半鐘
+12分半鐘
+20分半鐘
+21分半鐘
+22分半鐘
+半秒
+1秒半
+2秒半
+5秒半
+10秒半
+11秒半
+12秒半
+20秒半
+21秒半
+22秒半
+半毫秒
+1毫秒半
+2毫秒半
+5毫秒半
+10毫秒半
+11毫秒半
+12毫秒半
+20毫秒半
+21毫秒半
+22毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02個月
+1.00個月
+1.20個月
+2.12個月
+12.05個月
+0.02週
+1.00週
+1.20週
+2.12週
+12.05週
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02小時
+1.00小時
+1.20小時
+2.12小時
+12.05小時
+0.02分鐘
+1.00分鐘
+1.20分鐘
+2.12分鐘
+12.05分鐘
+0.02秒
+1.00秒
+1.20秒
+2.12秒
+12.05秒
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+1年2個月
+1年3週
+1年2個月3週
+1個月2週
+1個月3天
+1個月2週3天
+1週2天
+1週3小時
+1週2天3小時
+1天2小時
+1天3分鐘
+1天2小時3分鐘
+1小時2分鐘
+1小時3秒
+1小時2分3秒
+1分2秒
+1分3毫秒
+1分2秒3毫秒
+1秒2毫秒
diff --git a/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
new file mode 100644
index 0000000..cf8fe6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -0,0 +1,451 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.text.ParseException;
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @test
+ * General test of Big NumberFormat
+ */
+public class BigNumberFormatTest extends TestFmwk {
+
+    static final int ILLEGAL = -1;
+
+    public static void main(String[] args) throws Exception {
+        new BigNumberFormatTest().run(args);
+    }
+        
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        Number n = new Long(1234);
+        expect(fmt1, n, "1.234E3");
+        expect(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E3", n);
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+        expect(fmt2, "1.234E+3", n);
+    }
+
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+        expect(f, new Long(123456789), "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+        f.setSecondaryGroupingSize(4);
+        expect(f, new Long(123456789), "12,3456,789");
+        expectPat(f, "#,####,###");
+
+        // On Sun JDK 1.2-1.3, the hi_IN locale uses '0' for a zero digit,
+        // but on IBM JDK 1.2-1.3, the locale uses U+0966.
+        f = (DecimalFormat) NumberFormat.getInstance(new Locale("hi", "IN"));
+        String str = transmute("1,87,65,43,210",
+                               f.getDecimalFormatSymbols().getZeroDigit());
+        expect(f, new Long(1876543210), str);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat,
+                           int pos, int width, char pad) {
+        int apos = 0, awidth = 0;
+        char apad = 0;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apad = fmt.getPadCharacter();
+        } catch (IllegalArgumentException e) {
+            apos = -1;
+            awidth = width;
+            apad = pad;
+        }
+        if (apos == pos && awidth == width && apad == pad) {
+            logln("Ok   \"" + pat + "\" pos=" + apos +
+                  ((pos == -1) ? "" : " width=" + awidth + " pad=" + apad));
+        } else {
+            logln("FAIL \"" + pat + "\" pos=" + apos +
+                  " width=" + awidth + " pad=" + apad +
+                  ", expected " + pos + " " + width + " " + pad);
+        }
+    }
+
+    /**
+     */
+    public void TestPatterns() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, '^');
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, '^');
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, '^');
+        expectPad(fmt, "$*^$#", ILLEGAL);
+        expectPad(fmt, "#$*^$", ILLEGAL);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  12, 'x');
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  3, 'x');
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX,
+                  10, 'a');
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter('^');
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    private void expectPat(DecimalFormat fmt, String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + '"');
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + '"');
+        }
+    }
+
+    /**
+     * Test the handling of the AlphaWorks BigDecimal
+     */
+    public void TestAlphaBigDecimal() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.678901"),
+                           },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.4999"),
+                              new com.ibm.icu.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.5000"),
+                              new com.ibm.icu.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+    }
+
+    /**
+     */
+    public void TestScientific() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new Double(12345.678901),
+                              new java.math.BigDecimal("12345.678901"),
+                            },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345),
+               "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345.00001),
+               "12.35E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new Integer(12345),
+                              new Long(12345),
+                              new java.math.BigDecimal("12345.4999"),
+                              new java.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new java.math.BigDecimal("12345.5000"),
+                              new java.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.FRANCE),
+               new Double(12345.678901),
+               "1,2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(789.12345e-9),
+               "789.12E-9");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(780.e-9),
+               "780E-9");
+        expect(new DecimalFormat(".###E0", US),
+               new Double(45678),
+               ".457E5");
+        expect(new DecimalFormat(".###E0", US),
+               new Long(0),
+               ".0E0");
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),    
+                                     new DecimalFormat("00E0", US),   
+                                     new DecimalFormat("000E0", US), 
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",  
+                              "457E5",
+                            }
+               );
+        expect(new DecimalFormat("###E0", US),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        expect(new DecimalFormat("0.#E+00", US),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+    }
+
+    /**
+     */
+    public void TestPad() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(new DecimalFormat("*^##.##", US),
+               new Object[] { new Long(0),      "^^^^0",
+                              new Double(-1.3), "^-1.3",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+               new Object[] { new Long(0),       "0.0E0______ g-m/s^2",
+                              new Double(1.0/3), "333.333E-3_ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
+               new Object[] { new Long(0),       "0.0______ g-m/s^2",
+                              new Double(1.0/3), "0.33333__ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("*x#,###,###,##0.00;*x(#,###,###,##0.00)", US),
+               new Object[] {
+                   new Long(-100),        "xxxxxxxx(100.00)",
+                   new Long(-1000),       "xxxxxx(1,000.00)",
+                   new Long(-1000000),    "xx(1,000,000.00)",
+                   new Long(-1000000000), "(1,000,000,000.00)",
+               });
+    }
+    
+    private void expect(NumberFormat fmt, Object[] data) {
+        for (int i=0; i<data.length; i+=2) {
+            expect(fmt, (Number) data[i], (String) data[i+1]);
+        }
+    }
+    
+    private void expect(Object fmto, Object numo, Object expo) {
+        NumberFormat fmt = null, fmts[] = null;
+        Number num = null, nums[] = null;
+        String exp = null, exps[] = null;
+        if (fmto instanceof NumberFormat[]) {
+            fmts = (NumberFormat[]) fmto;
+        } else {
+            fmt = (NumberFormat) fmto;
+        }
+        if (numo instanceof Number[]) {
+            nums = (Number[]) numo;
+        } else {
+            num = (Number) numo;
+        }
+        if (expo instanceof String[]) {
+            exps = (String[]) expo;
+        } else {
+            exp = (String) expo;
+        }
+        int n = 1;
+        if (fmts != null) {
+            n = Math.max(n, fmts.length);
+        }
+        if (nums != null) {
+            n = Math.max(n, nums.length);
+        }
+        if (exps != null) {
+            n = Math.max(n, exps.length);
+        }
+        for (int i=0; i<n; ++i) {
+            expect(fmts == null ? fmt : fmts[i],
+                   nums == null ? num : nums[i],
+                   exps == null ? exp : exps[i]);
+        }
+    }
+
+    private static String showNumber(Number n) {
+        String cls = n.getClass().getName();
+        if (!(n instanceof com.ibm.icu.math.BigDecimal
+              || n instanceof java.math.BigDecimal)) {
+            int i = cls.lastIndexOf('.');
+            cls = cls.substring(i+1);
+        }
+        return n.toString() + " (" + cls + ')';
+    }
+
+    private void expect(NumberFormat fmt, Number n, String exp) {
+        String saw = fmt.format(n);
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   " + showNumber(n) + " x " +
+                  pat + " = " +
+                  Utility.escape(saw));
+        } else {
+            errln("FAIL " + showNumber(n) + " x " +
+                  pat + " = \"" +
+                  Utility.escape(saw) + ", expected " + Utility.escape(exp));
+        }
+    }
+
+    private void expect(NumberFormat fmt, String str, Number exp) {
+        Number saw = null;
+        try {
+            saw = fmt.parse(str);
+        } catch (ParseException e) {
+            saw = null;
+        }
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw));
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw) + ", expected " + showNumber(exp));
+        }
+    }
+
+    /**
+     * Given a string composed of [0-9] and other chars, convert the
+     * [0-9] chars to be offsets 0..9 from 'zero'.
+     */
+    private static String transmute(String str, char zero) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<str.length(); ++i) {
+            char c = str.charAt(i);
+            if (c >= '0' && c <= '9') {
+                c = (char) (c - '0' + zero);
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    public void Test4161100() {
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMinimumFractionDigits(1);
+        f.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = f.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) f).toPattern() + " = " +
+              s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }        
+
+    public void TestBigDecimalJ28() {
+        String[] DATA = {
+            "1", "1E0",
+            "-1", "-1E0",
+            "0", "0E0",
+            "12e34", "1.2E35",
+            "-12.3e-45", "-1.23E-44",
+            "0.73e-7", "7.3E-8",
+        };
+        NumberFormat fmt = NumberFormat.getScientificInstance(Locale.US);
+        logln("Pattern: " + ((DecimalFormat)fmt).toPattern());
+        for (int i=0; i<DATA.length; i+=2) {
+            String input = DATA[i];
+            String exp = DATA[i+1];
+            com.ibm.icu.math.BigDecimal bd = new com.ibm.icu.math.BigDecimal(input);
+            String output = fmt.format(bd);
+            if (output.equals(exp)) {
+                logln("input=" + input + " num=" + bd + " output=" + output);
+            } else {
+                errln("FAIL: input=" + input + " num=" + bd + " output=" + output +
+                      " expected=" + exp);
+            }
+        }
+    }
+//#if defined(FOUNDATION10)
+//#else
+    public void TestBigDecimalRounding() {
+        // jb 3657
+        java.text.DecimalFormat jdkFormat=new java.text.DecimalFormat("###,###,###,##0");
+        com.ibm.icu.text.DecimalFormat icuFormat=new com.ibm.icu.text.DecimalFormat("###,###,###,##0");
+        String[] values = {
+            "-1.74", "-1.24", "-0.74", "-0.24", "0.24", "0.74", "1.24", "1.74"
+        };
+        for (int i = 0; i < values.length; ++i) {
+            String val = values[i];
+            java.math.BigDecimal bd = new java.math.BigDecimal(val);
+            String jdk = jdkFormat.format(bd);
+            String icu = icuFormat.format(bd);
+            logln("Format of BigDecimal " + val + " by JDK is " + jdk);
+            logln("Format of BigDecimal " + val + " by ICU is " + icu);
+            if (!jdk.equals(icu)) {
+                errln("BigDecimal jdk: " + jdk + " != icu: " + icu);
+            }
+
+            double d = bd.doubleValue();
+            jdk = jdkFormat.format(d);
+            icu = icuFormat.format(d);
+            logln("Format of double " + val + " by JDK is " + jdk);
+            logln("Format of double " + val + " by ICU is " + icu);
+            if (!jdk.equals(icu)) {
+                errln("double jdk: " + jdk + " != icu: " + icu);
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java b/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
new file mode 100644
index 0000000..ffc2e37
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
@@ -0,0 +1,180 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.util.CalendarFieldsSet;
+import com.ibm.icu.dev.test.util.DateTimeStyleSet;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ *
+ */
+public class DataDrivenFormatTest extends ModuleTest {
+
+    /**
+     * @param baseName
+     * @param locName
+     */
+    public DataDrivenFormatTest() {
+        super("com/ibm/icu/dev/data/testdata/", "format");
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    public void processModules() {
+        //String testName = t.getName().toString();
+
+        for (Iterator siter = t.getSettingsIterator(); siter.hasNext();) {
+            // Iterate through and get each of the test case to process
+            DataMap settings = (DataMap) siter.next();
+            
+            String type = settings.getString("Type");
+
+            if(type.equals("date_format")) {
+                testConvertDate(t, settings, true);
+            } else if(type.equals("date_parse")) {
+                testConvertDate(t, settings, false);
+            } else {
+                errln("Unknown type: " + type);
+            }
+        }
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+         new DataDrivenFormatTest().run(args);
+    }
+   
+    private static final String kPATTERN = "PATTERN=";
+    private static final String kMILLIS = "MILLIS=";
+    private static final String kRELATIVE_MILLIS = "RELATIVE_MILLIS=";
+    private static final String kRELATIVE_ADD = "RELATIVE_ADD:";
+    
+    private void testConvertDate(TestDataModule.TestData testData, DataMap  settings, boolean fmt) {
+        DateFormat basicFmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+
+        int n = 0;
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            long now = System.currentTimeMillis();
+            DataMap currentCase = (DataMap) iter.next();
+            String caseString = "["+testData.getName()+"#"+n+(fmt?"format":"parse")+"]";
+            
+            String locale = currentCase.getString("locale");
+            String spec = currentCase.getString("spec");
+            String date = currentCase.getString("date");
+            String str = currentCase.getString("str");
+            
+            Date fromDate = null;
+            boolean useDate = false;
+            
+            ULocale loc = new ULocale(locale);
+            String pattern = null;
+//            boolean usePattern = false;
+            DateFormat format = null;
+            DateTimeStyleSet styleSet;
+            CalendarFieldsSet fromSet = null;
+            
+            // parse 'spec'  - either 'PATTERN=yy mm dd' or 'DATE=x,TIME=y'
+            if(spec.startsWith(kPATTERN)) {
+                pattern = spec.substring(kPATTERN.length());
+//                usePattern = true;
+                format = new SimpleDateFormat(pattern, loc);
+            } else {
+                styleSet = new DateTimeStyleSet();
+                styleSet.parseFrom(spec);
+                format = DateFormat.getDateTimeInstance(styleSet.getDateStyle(), styleSet.getTimeStyle(), loc);
+            }
+
+            Calendar cal = Calendar.getInstance(loc);
+            
+            // parse 'date' - either 'MILLIS=12345' or  a CalendarFieldsSet
+            if(date.startsWith(kMILLIS)) {
+                useDate = true;
+                fromDate = new Date(Long.parseLong(date.substring(kMILLIS.length())));
+            } else if(date.startsWith(kRELATIVE_MILLIS)) {
+                useDate = true;
+                fromDate = new Date(now+Long.parseLong(date.substring(kRELATIVE_MILLIS.length())));
+            } else if(date.startsWith(kRELATIVE_ADD)) {
+                String add = date.substring(kRELATIVE_ADD.length()); // "add" is a string indicating which fields to add
+                CalendarFieldsSet addSet = new CalendarFieldsSet();
+                addSet.parseFrom(add);
+                useDate = true;
+                cal.clear();
+                cal.setTimeInMillis(now);
+
+                /// perform op on 'to calendar'
+                for (int q=0; q<addSet.fieldCount(); q++) {
+                    if (addSet.isSet(q)) {
+                         cal.add(q,addSet.get(q));
+                    }
+                }
+
+                fromDate = cal.getTime();
+            } else {
+                fromSet = new CalendarFieldsSet();
+                fromSet.parseFrom(date);
+            }
+            
+            // run the test
+            if(fmt) {
+                StringBuffer output = new StringBuffer();
+                cal.clear();
+                FieldPosition pos = new FieldPosition(0);
+                if(useDate) {
+                    output = format.format(fromDate, output, pos);
+                } else {
+                    fromSet.setOnCalendar(cal);
+                    format.format(cal, output, pos);
+                }
+                
+                if(output.toString().equals(str)) {
+                    logln(caseString + " Success - strings match: " + output);
+                } else {
+                    errln(caseString + " FAIL: got " + output + " expected " + str);
+                }
+            } else { // parse
+                cal.clear();
+                ParsePosition pos = new ParsePosition(0);
+                format.parse(str, cal, pos);
+                if(useDate) {
+                    Date gotDate = cal.getTime(); 
+                    if(gotDate.equals(fromDate)) {
+                        logln(caseString + " SUCCESS: got=parse="+str);
+                    } else {
+                        errln(caseString + " FAIL: parsed " + str + " but got " + 
+                                basicFmt.format(gotDate) + " - " + gotDate + "  expected " + 
+                                basicFmt.format(fromDate));
+                    }
+                } else  {
+                    CalendarFieldsSet diffSet = new CalendarFieldsSet();
+                    if(!fromSet.matches(cal, diffSet)) {
+                        String diffs = diffSet.diffFrom(fromSet);
+                        errln(caseString + " FAIL:  differences: " + diffs);
+                    } else {
+                        logln(caseString + " SUCCESS: got=parse: " + str + " - " + fromSet.toString());
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
new file mode 100644
index 0000000..fd04c3f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
@@ -0,0 +1,154 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatMiscTests
+ * Source File: $ICU4CRoot/source/test/intltest/miscdtfm.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Date;
+
+/** 
+ * Performs miscellaneous tests for DateFormat, SimpleDateFormat, DateFormatSymbols
+ **/
+public class DateFormatMiscTests extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatMiscTests().run(args);
+    }
+    
+    /*
+     * @bug 4097450
+     */
+    public void Test4097450() {
+        //
+        // Date parse requiring 4 digit year.
+        //
+        String dstring[] = {
+            "97", "1997", "97", "1997", "01", "2001", "01", "2001",
+             "1", "1", "11", "11", "111", "111"}; 
+    
+        String dformat[] = 
+            {
+                "yy", "yy", "yyyy", "yyyy", "yy", "yy", "yyyy", "yyyy", 
+                "yy", "yyyy", "yy", "yyyy", "yy", "yyyy"};         
+    
+        SimpleDateFormat formatter;
+        SimpleDateFormat resultFormatter = new SimpleDateFormat("yyyy");
+        logln("Format\tSource\tResult");
+        logln("-------\t-------\t-------");
+        for (int i = 0; i < dstring.length ; i++) {
+            log(dformat[i] + "\t" + dstring[i] + "\t");
+            formatter = new SimpleDateFormat(dformat[i]);
+            try {
+                StringBuffer str = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                logln(resultFormatter.format(formatter.parse(dstring[i]), str, pos).toString()); 
+            }
+            catch (ParseException exception) {
+                errln("exception --> " + exception);
+            }
+            logln("");
+        }
+    }
+    
+    /* @Bug 4099975
+     * SimpleDateFormat constructor SimpleDateFormat(String, DateFormatSymbols)
+     * should clone the DateFormatSymbols parameter
+     */
+    public void Test4099975new() {
+        Date d = new Date();
+        //test SimpleDateFormat Constructor
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm", symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("Constructor: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+        //test SimpleDateFormat.setDateFormatSymbols()
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm");
+            df.setDateFormatSymbols(symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("setDateFormatSymbols: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+    }
+    
+    /*
+     * @bug 4117335
+     */
+    public void Test4117335() {
+        final String bc = "\u7D00\u5143\u524D";
+        final String ad = "\u897f\u66a6";
+        final String jstLong = "\u65e5\u672c\u6a19\u6e96\u6642";
+        final String jdtLong = "\u65e5\u672c\u590f\u6642\u9593";
+        final String jstShort = "JST";
+        final String jdtShort = "JDT";
+        final String tzID = "Asia/Tokyo";
+
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.JAPAN);
+        final String[] eras = symbols.getEras();
+
+        assertEquals("BC =", bc, eras[0]);
+        assertEquals("AD =", ad, eras[1]);
+
+        // don't use hard-coded index!
+        final String zones[][] = symbols.getZoneStrings();
+        int index = -1;
+        for (int i = 0; i < zones.length; ++i) {
+            if (tzID.equals(zones[i][0])) {
+                index = i;
+                break;
+            }
+        }
+
+        if (index == -1) {
+            errln("could not find " + tzID);
+        } else {
+            assertEquals("Long zone name = ", jstLong, zones[index][1]);
+            assertEquals("Short zone name = ", jstShort, zones[index][2]);
+            assertEquals("Long zone name (3) = ", jdtLong, zones[index][3]);
+            assertEquals("Short zone name (4) = ", jdtShort, zones[index][4]);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
new file mode 100644
index 0000000..eaa0ed7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -0,0 +1,1075 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+/** 
+ * Performs regression test for DateFormat
+ **/
+public class DateFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * @bug 4029195
+     */
+    public void Test4029195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        logln("today: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance();
+        String pat = sdf.toPattern();
+        logln("pattern: " + pat);
+        StringBuffer fmtd = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        fmtd = sdf.format(today, fmtd, pos);
+        logln("today: " + fmtd);
+    
+        sdf.applyPattern("G yyyy DDD");
+        StringBuffer todayS = new StringBuffer("");
+        todayS = sdf.format(today, todayS, pos);
+        logln("today: " + todayS);
+        try {
+            today = sdf.parse(todayS.toString());
+            logln("today date: " + today);
+        } catch (Exception e) {
+            errln("Error reparsing date: " + e.getMessage());
+        }
+    
+        try {
+            StringBuffer rt = new StringBuffer("");
+            rt = sdf.format(sdf.parse(todayS.toString()), rt, pos);
+            logln("round trip: " + rt);
+            if (!rt.toString().equals(todayS.toString()))
+                errln("Fail: Want " + todayS + " Got " + rt);
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4052408
+     */
+    public void Test4052408() {
+    
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(97 + 1900, Calendar.MAY, 3, 8, 55);
+        Date dt = cal.getTime();
+        String str = fmt.format(dt);
+        logln(str);
+        
+        if (!str.equals("5/3/97 8:55 AM"))
+            errln("Fail: Test broken; Want 5/3/97 8:55 AM Got " + str);
+    
+        String expected[] = {
+            "", //"ERA_FIELD",
+            "97", //"YEAR_FIELD",
+            "5", //"MONTH_FIELD",
+            "3", //"DATE_FIELD",
+            "", //"HOUR_OF_DAY1_FIELD",
+            "", //"HOUR_OF_DAY0_FIELD",
+            "55", //"MINUTE_FIELD",
+            "", //"SECOND_FIELD",
+            "", //"MILLISECOND_FIELD",
+            "", //"DAY_OF_WEEK_FIELD",
+            "", //"DAY_OF_YEAR_FIELD",
+            "", //"DAY_OF_WEEK_IN_MONTH_FIELD",
+            "", //"WEEK_OF_YEAR_FIELD",
+            "", //"WEEK_OF_MONTH_FIELD",
+            "AM", //"AM_PM_FIELD",
+            "8", //"HOUR1_FIELD",
+            "", //"HOUR0_FIELD",
+            "" //"TIMEZONE_FIELD"
+            };        
+        String fieldNames[] = {
+                "ERA_FIELD", 
+                "YEAR_FIELD", 
+                "MONTH_FIELD", 
+                "DATE_FIELD", 
+                "HOUR_OF_DAY1_FIELD", 
+                "HOUR_OF_DAY0_FIELD", 
+                "MINUTE_FIELD", 
+                "SECOND_FIELD", 
+                "MILLISECOND_FIELD", 
+                "DAY_OF_WEEK_FIELD", 
+                "DAY_OF_YEAR_FIELD", 
+                "DAY_OF_WEEK_IN_MONTH_FIELD", 
+                "WEEK_OF_YEAR_FIELD", 
+                "WEEK_OF_MONTH_FIELD", 
+                "AM_PM_FIELD", 
+                "HOUR1_FIELD", 
+                "HOUR0_FIELD", 
+                "TIMEZONE_FIELD"}; 
+    
+        boolean pass = true;
+        for (int i = 0; i <= 17; ++i) {
+            FieldPosition pos = new FieldPosition(i);
+            StringBuffer buf = new StringBuffer("");
+            fmt.format(dt, buf, pos);
+            //char[] dst = new char[pos.getEndIndex() - pos.getBeginIndex()];
+            String dst = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+            str = dst;
+            log(i + ": " + fieldNames[i] + ", \"" + str + "\", "
+                    + pos.getBeginIndex() + ", " + pos.getEndIndex()); 
+            String exp = expected[i];
+            if ((exp.length() == 0 && str.length() == 0) || str.equals(exp))
+                logln(" ok");
+            else {
+                logln(" expected " + exp);
+                pass = false;
+            }
+        }
+        if (!pass)
+            errln("Fail: FieldPosition not set right by DateFormat");
+    }
+    
+    /**
+     * @bug 4056591
+     * Verify the function of the [s|g]et2DigitYearStart() API.
+     */
+    public void Test4056591() {
+    
+        try {
+            SimpleDateFormat fmt = new SimpleDateFormat("yyMMdd", Locale.US);
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date start = cal.getTime();
+            fmt.set2DigitYearStart(start);
+            if ((fmt.get2DigitYearStart() != start))
+                errln("get2DigitYearStart broken");
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date d1 = cal.getTime();
+            cal.clear();
+            cal.set(1909, Calendar.DECEMBER, 24);
+            Date d2 = cal.getTime();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 26);
+            Date d3 = cal.getTime();
+            cal.clear();
+            cal.set(1861, Calendar.DECEMBER, 25);
+            Date d4 = cal.getTime();
+            
+            Date dates[] = {d1, d2, d3, d4};
+    
+            String strings[] = {"091225", "091224", "091226", "611225"};            
+    
+            for (int i = 0; i < 4; i++) {
+                String s = strings[i];
+                Date exp = dates[i];
+                Date got = fmt.parse(s);
+                logln(s + " . " + got + "; exp " + exp);
+                if (got.getTime() != exp.getTime())
+                    errln("set2DigitYearStart broken");
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4059917
+     */
+    public void Test4059917() {        
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/01/01";
+        aux917( fmt, myDate );        
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970101";
+        aux917( fmt, myDate );
+    }
+    
+    public void aux917(SimpleDateFormat fmt, String str) {
+    
+        String pat = fmt.toPattern();
+        logln("==================");
+        logln("testIt: pattern=" + pat + " string=" + str);
+        ParsePosition pos = new ParsePosition(0);
+        Object o = fmt.parseObject(str, pos);
+        //logln( UnicodeString("Parsed object: ") + o );
+    
+        StringBuffer formatted = new StringBuffer("");
+        FieldPosition poss = new FieldPosition(0);
+        formatted = fmt.format(o, formatted, poss);
+    
+        logln("Formatted string: " + formatted);
+        if (!formatted.toString().equals(str))
+            errln("Fail: Want " + str + " Got " + formatted);
+    }
+    
+    /**
+     * @bug 4060212
+     */
+    public void Test4060212() {
+        String dateString = "1995-040.05:01:29";
+        logln("dateString= " + dateString);
+        logln("Using yyyy-DDD.hh:mm:ss");
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-DDD.hh:mm:ss");
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG); 
+        String myString = fmt.format(myDate);
+        logln(myString);
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    
+        logln("Using yyyy-ddd.hh:mm:ss");
+        formatter = new SimpleDateFormat("yyyy-ddd.hh:mm:ss");
+        pos.setIndex(0);
+        myDate = formatter.parse(dateString, pos);
+        myString = fmt.format(myDate);
+        logln(myString);
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    }
+    /**
+     * @bug 4061287
+     */
+    public void Test4061287() {
+    
+        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        df.setLenient(false);
+        boolean ok = false;
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            ok = true;
+        }
+        if (!ok)
+            errln("Fail: Lenient not working");
+    }
+    
+    /**
+     * @bug 4065240
+     */
+    public void Test4065240() {
+        Date curDate;
+        DateFormat shortdate, fulldate;
+        String strShortDate, strFullDate;
+        Locale saveLocale = Locale.getDefault();
+        TimeZone saveZone = TimeZone.getDefault();
+    
+        try {
+            Locale curLocale = new Locale("de", "DE");
+            Locale.setDefault(curLocale);
+            // {sfb} adoptDefault instead of setDefault
+            //TimeZone.setDefault(TimeZone.createTimeZone("EST"));
+            TimeZone.setDefault(TimeZone.getTimeZone("EST"));
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(98 + 1900, 0, 1);
+            curDate = cal.getTime();
+            shortdate = DateFormat.getDateInstance(DateFormat.SHORT);
+            fulldate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+            strShortDate = "The current date (short form) is ";
+            String temp;
+            temp = shortdate.format(curDate);
+            strShortDate += temp;
+            strFullDate = "The current date (long form) is ";
+            String temp2 = fulldate.format(curDate);
+            strFullDate += temp2;
+    
+            logln(strShortDate);
+            logln(strFullDate);
+    
+            // {sfb} What to do with resource bundle stuff?????
+    
+            // Check to see if the resource is present; if not, we can't test
+            //ResourceBundle bundle = //The variable is never used
+            //    ICULocaleData.getBundle("DateFormatZoneData", curLocale); 
+    
+            // {sfb} API change to ResourceBundle -- add getLocale()
+            /*if (bundle.getLocale().getLanguage().equals("de")) {
+                // UPDATE THIS AS ZONE NAME RESOURCE FOR <EST> in de_DE is updated
+                if (!strFullDate.endsWith("GMT-05:00"))
+                    errln("Fail: Want GMT-05:00");
+            } else {
+                logln("*** TEST COULD NOT BE COMPLETED BECAUSE DateFormatZoneData ***");
+                logln("*** FOR LOCALE de OR de_DE IS MISSING ***");
+            }*/
+        } catch (Exception e) {
+            logln(e.getMessage());
+        } finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+    
+    }
+    
+    /*
+      DateFormat.equals is too narrowly defined.  As a result, MessageFormat
+      does not work correctly.  DateFormat.equals needs to be written so
+      that the Calendar sub-object is not compared using Calendar.equals,
+      but rather compared for equivalency.  This may necessitate adding a
+      (package private) method to Calendar to test for equivalency.
+      
+      Currently this bug breaks MessageFormat.toPattern
+      */
+    /**
+     * @bug 4071441
+     */
+    public void Test4071441() {
+        DateFormat fmtA = DateFormat.getInstance();
+        DateFormat fmtB = DateFormat.getInstance();
+    
+        // {sfb} Is it OK to cast away const here?
+        Calendar calA = fmtA.getCalendar();
+        Calendar calB = fmtB.getCalendar();
+        calA.clear();
+        calA.set(1900, 0 ,0);
+        calB.clear();
+        calB.set(1900, 0, 0);
+        if (!calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances unequal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equal");
+        calB.clear();
+        calB.set(1961, Calendar.DECEMBER, 25);
+        if (calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances equal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equivalent");
+        logln("DateFormat.equals ok");
+    }
+        
+    /* The java.text.DateFormat.parse(String) method expects for the
+      US locale a string formatted according to mm/dd/yy and parses it
+      correctly.
+    
+      When given a string mm/dd/yyyy it only parses up to the first
+      two y's, typically resulting in a date in the year 1919.
+      
+      Please extend the parsing method(s) to handle strings with
+      four-digit year values (probably also applicable to various
+      other locales.  */
+    /**
+     * @bug 4073003
+     */
+    public void Test4073003() {
+        try {
+            DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+            String tests[] = {"12/25/61", "12/25/1961", "4/3/2010", "4/3/10"};
+            for (int i = 0; i < 4; i += 2) {
+                Date d = fmt.parse(tests[i]);
+                Date dd = fmt.parse(tests[i + 1]);
+                String s;
+                s = fmt.format(d);
+                String ss;
+                ss = fmt.format(dd);
+                if (d.getTime() != dd.getTime())
+                    errln("Fail: " + d + " != " + dd);
+                if (!s.equals(ss))
+                    errln("Fail: " + s + " != " + ss);
+                logln("Ok: " + s + " " + d);
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }    
+    }
+    
+    /**
+     * @bug 4089106
+     */
+    public void Test4089106() {
+        TimeZone def = TimeZone.getDefault();
+        try {
+            TimeZone z = new SimpleTimeZone((int) (1.25 * 3600000), "FAKEZONE");
+            TimeZone.setDefault(z);
+            SimpleDateFormat f = new SimpleDateFormat();
+            if (!f.getTimeZone().equals(z))
+                errln("Fail: SimpleTimeZone should use TimeZone.getDefault()");
+        } finally {
+            TimeZone.setDefault(def);
+        }
+    }
+    
+    /**
+     * @bug 4100302
+     */
+    public void Test4100302() {
+        
+        Locale locales[] = {
+            Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+            Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH, 
+            Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY, 
+            Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN, 
+            Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN, 
+            Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US}; 
+        try {
+            boolean pass = true;
+            for (int i = 0; i < 21; i++) {
+                Format format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locales[i]); 
+                byte[] bytes;
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(format);
+                oos.flush();
+                baos.close();
+                bytes = baos.toByteArray();
+                ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+                Object o = ois.readObject();
+                if (!format.equals(o)) {
+                    pass = false;
+                    logln("DateFormat instance for locale " + locales[i] + " is incorrectly serialized/deserialized."); 
+                } else {
+                    logln("DateFormat instance for locale " + locales[i] + " is OKAY.");
+                }
+            }
+            if (!pass)
+                errln("Fail: DateFormat serialization/equality bug");
+        } catch (OptionalDataException e) {
+            errln("Fail: " + e);
+        } catch (IOException e) {
+            errln("Fail: " + e);
+        } catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+        }
+    
+    }
+    
+    /**
+     * @bug 4101483
+     */
+    public void Test4101483() {
+        SimpleDateFormat sdf = new SimpleDateFormat("z", Locale.US);
+        FieldPosition fp = new FieldPosition(DateFormat.TIMEZONE_FIELD);
+        Date d = new Date(9234567890L);
+        StringBuffer buf = new StringBuffer("");
+        sdf.format(d, buf, fp);
+        logln(sdf.format(d, buf, fp).toString());
+        logln("beginIndex = " + fp.getBeginIndex());
+        logln("endIndex = " + fp.getEndIndex());
+        if (fp.getBeginIndex() == fp.getEndIndex())
+            errln("Fail: Empty field");
+    }
+    
+    /**
+     * @bug 4103340
+     * @bug 4138203
+     * This bug really only works in Locale.US, since that's what the locale
+     * used for Date.toString() is.  Bug 4138203 reports that it fails on Korean
+     * NT; it would actually have failed on any non-US locale.  Now it should
+     * work on all locales.
+     */
+    public void Test4103340() {
+    
+        // choose a date that is the FIRST of some month 
+        // and some arbitrary time
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 3, 1, 1, 1, 1);
+        Date d = cal.getTime(); 
+        SimpleDateFormat df = new SimpleDateFormat("MMMM", Locale.US);
+        String s = d.toString();
+        StringBuffer s2 = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        s2 = df.format(d, s2, pos);
+        logln("Date=" + s); 
+        logln("DF=" + s2);
+        String substr = s2.substring(0,2);
+        if (s.indexOf(substr) == -1)
+          errln("Months should match");
+    }
+    
+    /**
+     * @bug 4103341
+     */
+    public void Test4103341() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            // {sfb} changed from adoptDefault to setDefault
+            TimeZone.setDefault(TimeZone.getTimeZone("CST"));
+            SimpleDateFormat simple = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+            TimeZone temp = TimeZone.getDefault();
+            if (!simple.getTimeZone().equals(temp))
+                errln("Fail: SimpleDateFormat not using default zone");
+        } finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    
+    /**
+     * @bug 4104136
+     */
+    public void Test4104136() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        String strings[] = {"time 10:30", "time 10:x", "time 10x"};
+        ParsePosition ppos[] = {new ParsePosition(10), new ParsePosition(0), new ParsePosition(0)};
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1970, Calendar.JANUARY, 1, 10, 30);
+        Date dates[] = {cal.getTime(), new Date(-1), new Date(-1)};
+        for (int i = 0; i < 3; i++) {
+            String text = strings[i];
+            ParsePosition finish = ppos[i];
+            Date exp = dates[i];
+            ParsePosition pos = new ParsePosition(0);
+            Date d = sdf.parse(text, pos);
+            logln(" text: \"" + text + "\"");
+            logln(" index: %d" + pos.getIndex());
+            logln(" result: " + d);
+            if (pos.getIndex() != finish.getIndex())
+                errln("Fail: Expected pos " + finish.getIndex());
+            if (!((d == null && exp.equals(new Date(-1))) || (d.equals(exp))))
+                errln( "Fail: Expected result " + exp);
+        }
+    }
+    
+    /**
+     * @bug 4104522
+     * CANNOT REPRODUCE
+     * According to the bug report, this test should throw a
+     * StringIndexOutOfBoundsException during the second parse.  However,
+     * this is not seen.
+     */
+    public void Test4104522() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        // works correctly
+        ParsePosition pp = new ParsePosition(0);
+        String text = "time ";
+        Date dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);
+        // works wrong
+        pp.setIndex(0);
+        text = "time";
+        dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);    
+    }
+    
+    /**
+     * @bug 4106807
+     */
+    public void Test4106807() {
+        Date dt;
+        DateFormat df = DateFormat.getDateTimeInstance();
+    
+        SimpleDateFormat sdfs[] = {
+                new SimpleDateFormat("yyyyMMddHHmmss"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'Z'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss''"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'a''a'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss %")}; 
+        String strings[] = {
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000a", 
+                "19980211140000 "}; 
+        GregorianCalendar gc = new GregorianCalendar();
+        TimeZone timeZone = TimeZone.getDefault();
+        TimeZone gmt = (TimeZone) timeZone.clone();
+        gmt.setRawOffset(0);
+        for (int i = 0; i < 5; i++) {
+            SimpleDateFormat format = sdfs[i];
+            String dateString = strings[i];
+            try {
+                format.setTimeZone(gmt);
+                dt = format.parse(dateString);
+                // {sfb} some of these parses will fail purposely
+    
+                StringBuffer fmtd = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                fmtd = df.format(dt, fmtd, pos);
+                logln(fmtd.toString());
+                //logln(df.format(dt)); 
+                gc.setTime(dt);
+                logln("" + gc.get(Calendar.ZONE_OFFSET));
+                StringBuffer s = new StringBuffer("");
+                s = format.format(dt, s, pos);
+                logln(s.toString());
+            } catch (ParseException e) {
+                logln("No way Jose");
+            }
+        }
+    }
+    
+    /*
+      Synopsis: Chinese time zone CTT is not recogonized correctly.
+      Description: Platform Chinese Windows 95 - ** Time zone set to CST ** 
+      */
+    /**
+     * @bug 4108407
+     */
+    
+    // {sfb} what to do with this one ?? 
+    public void Test4108407() {
+        /*
+    // TODO user.timezone is a protected system property, catch securityexception and warn
+    // if this is reenabled
+        long l = System.currentTimeMillis(); 
+        logln("user.timezone = " + System.getProperty("user.timezone", "?"));
+        logln("Time Zone :" + 
+                           DateFormat.getDateInstance().getTimeZone().getID()); 
+        logln("Default format :" + 
+                           DateFormat.getDateInstance().format(new Date(l))); 
+        logln("Full format :" + 
+                           DateFormat.getDateInstance(DateFormat.FULL).format(new 
+                                                                              Date(l))); 
+        logln("*** Set host TZ to CST ***");
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+        */
+    }
+    
+    /**
+     * @bug 4134203
+     * SimpleDateFormat won't parse "GMT"
+     */
+    public void Test4134203() {
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+        if(p0.equals(new ParsePosition(0)))
+            errln("Fail: failed to parse 'GMT'");
+        // In the failure case an exception is thrown by parse();
+        // if no exception is thrown, the test passes.
+    }
+    
+    /**
+     * @bug 4151631
+     * SimpleDateFormat incorrect handling of 2 single quotes in format()
+     */
+    public void Test4151631() {
+        String pattern = 
+            "'TO_DATE('''dd'-'MM'-'yyyy HH:mm:ss''' , ''DD-MM-YYYY HH:MI:SS'')'"; 
+        logln("pattern=" + pattern);
+        SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.US);
+        StringBuffer result = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1998, Calendar.JUNE, 30, 13, 30, 0);
+        Date d = cal.getTime();
+        result = format.format(d, result, pos); 
+        if (!result.toString().equals("TO_DATE('30-06-1998 13:30:00' , 'DD-MM-YYYY HH:MI:SS')")) {
+            errln("Fail: result=" + result);
+        } else {
+            logln("Pass: result=" + result);
+        }
+    }
+    
+    /**
+     * @bug 4151706
+     * 'z' at end of date format throws index exception in SimpleDateFormat
+     * CANNOT REPRODUCE THIS BUG ON 1.2FCS
+     */
+    public void Test4151706() {
+        String dateString = "Thursday, 31-Dec-98 23:00:00 GMT";
+        SimpleDateFormat fmt = new SimpleDateFormat("EEEE, dd-MMM-yy HH:mm:ss z", Locale.US);
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.US);
+        cal.clear();
+        cal.set(1998, Calendar.DECEMBER, 31, 23, 0, 0);
+        Date d = new Date();
+        try {
+            d = fmt.parse(dateString);
+            // {sfb} what about next two lines?
+            if (d.getTime() != cal.getTime().getTime())
+                errln("Incorrect value: " + d);
+        } catch (Exception e) {
+            errln("Fail: " + e);
+        }
+        StringBuffer temp = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        logln(dateString + " . " + fmt.format(d, temp, pos));
+    }
+    
+    /**
+     * @bug 4162071
+     * Cannot reproduce this bug under 1.2 FCS -- it may be a convoluted duplicate
+     * of some other bug that has been fixed.
+     */
+    public void Test4162071() {
+        String dateString = "Thu, 30-Jul-1999 11:51:14 GMT";
+        String format = "EEE', 'dd-MMM-yyyy HH:mm:ss z"; // RFC 822/1123
+        SimpleDateFormat df = new SimpleDateFormat(format, Locale.US);
+        try {
+            Date x = df.parse(dateString);
+            StringBuffer temp = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            logln(dateString + " -> " + df.format(x, temp, pos));
+        } catch (Exception e) {
+            errln("Parse format \"" + format + "\" failed.");
+        }
+    }
+    
+    /**
+     * DateFormat shouldn't parse year "-1" as a two-digit year (e.g., "-1" . 1999).
+     */
+    public void Test4182066() {
+        SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy", Locale.US);
+        SimpleDateFormat dispFmt = new SimpleDateFormat("MMM dd yyyy HH:mm:ss GG", Locale.US);
+        /* We expect 2-digit year formats to put 2-digit years in the right
+         * window.  Out of range years, that is, anything less than "00" or
+         * greater than "99", are treated as literal years.  So "1/2/3456"
+         * becomes 3456 AD.  Likewise, "1/2/-3" becomes -3 AD == 2 BC.
+         */
+        final String STRINGS[] = 
+            {"02/29/00", "01/23/01", "04/05/-1", "01/23/-9", "11/12/1314", "10/31/1", "09/12/+1", "09/12/001",}; 
+        int STRINGS_COUNT = STRINGS.length;
+                
+        Calendar cal = Calendar.getInstance();
+        Date FAIL_DATE = cal.getTime();
+        cal.clear();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date d0 = cal.getTime();
+        cal.clear();
+        cal.set(2001, Calendar.JANUARY, 23);
+        Date d1 = cal.getTime();
+        cal.clear();
+        cal.set(-1, Calendar.APRIL, 5);
+        Date d2 = cal.getTime();
+        cal.clear();
+        cal.set(-9, Calendar.JANUARY, 23);
+        Date d3 = cal.getTime();
+        cal.clear();
+        cal.set(1314, Calendar.NOVEMBER, 12);
+        Date d4 = cal.getTime();
+        cal.clear();
+        cal.set(1, Calendar.OCTOBER, 31);
+        Date d5 = cal.getTime();
+        cal.clear();        
+        cal.set(1, Calendar.SEPTEMBER, 12);
+        Date d7 = cal.getTime();
+        Date DATES[] = {d0, d1, d2, d3, d4, d5, FAIL_DATE, d7};
+    
+        String out = "";
+        boolean pass = true;
+        for (int i = 0; i < STRINGS_COUNT; ++i) {
+            String str = STRINGS[i];
+            Date expected = DATES[i];            
+            Date actual = null;
+            try {
+                actual = fmt.parse(str);
+            } catch (ParseException e) {
+                actual = FAIL_DATE;
+            }
+            String actStr = "";
+            if ((actual.getTime()) == FAIL_DATE.getTime()) {
+                actStr += "null";
+            } else {
+                // Yuck: See j25
+                actStr = ((DateFormat) dispFmt).format(actual);
+            }
+                               
+            if (expected.getTime() == (actual.getTime())) {
+                out += str + " => " + actStr + "\n";
+            } else {
+                String expStr = "";
+                if (expected.getTime() == FAIL_DATE.getTime()) {
+                    expStr += "null";
+                } else {
+                    // Yuck: See j25
+                    expStr = ((DateFormat) dispFmt).format(expected);
+                }
+                out += "FAIL: " + str + " => " + actStr + ", expected " + expStr + "\n";
+                pass = false;
+            }
+        }
+        if (pass) {
+            log(out);
+        } else {
+            err(out);
+        }
+    }
+    
+    /**
+     * j32 {JDK Bug 4210209 4209272}
+     * DateFormat cannot parse Feb 29 2000 when setLenient(false)
+     */
+    public void Test4210209() {
+    
+        String pattern = "MMM d, yyyy";
+        DateFormat fmt = new SimpleDateFormat(pattern, Locale.US);
+        DateFormat disp = new SimpleDateFormat("MMM dd yyyy GG", Locale.US);
+    
+        Calendar calx = fmt.getCalendar();
+        calx.setLenient(false);
+        Calendar calendar = Calendar.getInstance();
+        calendar.clear();
+        calendar.set(2000, Calendar.FEBRUARY, 29);
+        Date d = calendar.getTime();
+        String s = fmt.format(d);
+        logln(disp.format(d) + " f> " + pattern + " => \"" + s + "\"");
+        ParsePosition pos = new ParsePosition(0);
+        d = fmt.parse(s, pos);
+        logln("\"" + s + "\" p> " + pattern + " => " +
+              (d!=null?disp.format(d):"null"));
+        logln("Parse pos = " + pos.getIndex() + ", error pos = " + pos.getErrorIndex());
+        if (pos.getErrorIndex() != -1) {
+            errln("FAIL: Error index should be -1");
+        }
+    
+        // The underlying bug is in GregorianCalendar.  If the following lines
+        // succeed, the bug is fixed.  If the bug isn't fixed, they will throw
+        // an exception.
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.clear();
+        cal.setLenient(false);
+        cal.set(2000, Calendar.FEBRUARY, 29); // This should work!
+        d = cal.getTime();
+        logln("Attempt to set Calendar to Feb 29 2000: " + disp.format(d));
+    }
+    
+    public void Test714() {
+        //TimeZone Offset
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        Date d = new Date(978103543000l - (defaultOffset - PSTOffset));
+        d = new Date(d.getTime() - (defaultTZ.inDaylightTime(d) ? 3600000 : 0));
+        DateFormat fmt = DateFormat.getDateTimeInstance(-1, DateFormat.MEDIUM, Locale.US);
+        String tests = "7:25:43 AM";
+        String s = fmt.format(d);
+        if (!s.equals(tests)) {
+            errln("Fail: " + s + " != " + tests);
+        } else {
+            logln("OK: " + s + " == " + tests);
+        }
+    }
+
+    static final char kArabicZero = 0x0660;
+    static final char kHindiZero  = 0x0966;
+    static final char kLatinZero  = 0x0030;
+
+    public void TestHindiArabicDigits()
+    {
+        String s;
+        char first;
+        String what;
+
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("hi","IN"));
+            what = "Gregorian Calendar, hindi";
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            logln(what + "=" + s);
+            first = s.charAt(0);
+            if(first<kHindiZero || first>(kHindiZero+9)) {
+                errln(what + "- wrong digit,  got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new IslamicCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 21/10/1989 */
+            what = "Islamic Calendar, Arabic";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong digit, got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Gregorian,  ar_IQ, df.getInstance";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("mt","MT"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Gregorian,  mt_MT, df.getInstance";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kLatinZero || first>(kLatinZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new IslamicCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Islamic calendar, ar_IQ, df.getInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "ar_IQ, getDateTimeInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new JapaneseCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "ar_IQ, Japanese Calendar, getInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+    }
+
+    // Ticket#5683
+    // Some ICU4J 3.6 data files contain garbage data which prevent the code to resolve another
+    // bundle as an alias.  zh_TW should be equivalent to zh_Hant_TW
+    public void TestT5683() {
+        Locale[] aliasLocales = {
+            new Locale("zh", "CN"),
+            new Locale("zh", "TW"),
+            new Locale("zh", "HK"),
+            new Locale("zh", "SG"),
+            new Locale("zh", "MO")
+        };
+
+        ULocale[] canonicalLocales = {
+            new ULocale("zh_Hans_CN"),
+            new ULocale("zh_Hant_TW"),
+            new ULocale("zh_Hant_HK"),
+            new ULocale("zh_Hans_SG"),
+            new ULocale("zh_Hant_MO")
+        };
+
+        Date d = new Date(0);
+
+        for (int i = 0; i < aliasLocales.length; i++) {
+            DateFormat dfAlias = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, aliasLocales[i]);
+            DateFormat dfCanonical = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, canonicalLocales[i]);
+
+            String sAlias = dfAlias.format(d);
+            String sCanonical = dfCanonical.format(d);
+
+            if (!sAlias.equals(sCanonical)) {
+                errln("Fail: The format result for locale " + aliasLocales[i] + " is different from the result for locale " + canonicalLocales[i]
+                        + ": " + sAlias + "[" + aliasLocales[i] + "] / " + sCanonical + "[" + canonicalLocales[i] + "]");
+            }
+        }
+    }
+    
+    
+    public void Test5006GetShortMonths() throws Exception {
+
+        // Currently supported NLV locales
+        Locale ENGLISH = new Locale("en", "US"); // We don't support 'en' alone
+        Locale ARABIC = new Locale("ar", "");
+        Locale CZECH = new Locale("cs", "");
+        Locale GERMAN = new Locale("de", "");
+        Locale GREEK = new Locale("el", "");
+        Locale SPANISH = new Locale("es", "");
+        Locale FRENCH = new Locale("fr", "");
+        Locale HUNGARIAN = new Locale("hu", "");
+        Locale ITALIAN = new Locale("it", "");
+        Locale HEBREW = new Locale("iw", "");
+        Locale JAPANESE = new Locale("ja", "");
+        Locale KOREAN = new Locale("ko", "");
+        Locale POLISH = new Locale("pl", "");
+        Locale PORTUGUESE = new Locale("pt", "BR");
+        Locale RUSSIAN = new Locale("ru", "");
+        Locale TURKISH = new Locale("tr", "");
+        Locale CHINESE_SIMPLIFIED = new Locale("zh", "CN");
+        Locale CHINESE_TRADITIONAL = new Locale("zh", "TW");
+
+        Locale[] locales = new Locale[] { ENGLISH, ARABIC, CZECH, GERMAN, GREEK, SPANISH, FRENCH,
+                HUNGARIAN, ITALIAN, HEBREW, JAPANESE, KOREAN, POLISH, PORTUGUESE, RUSSIAN, TURKISH,
+                CHINESE_SIMPLIFIED, CHINESE_TRADITIONAL };
+
+        String[] islamicTwelfthMonthLocalized = new String[locales.length];
+        String[] gregorianTwelfthMonthLocalized = new String[locales.length];
+
+        for (int i = 0; i < locales.length; i++) {
+
+            Locale locale = locales[i];
+
+            // Islamic
+            com.ibm.icu.util.Calendar islamicCalendar = new com.ibm.icu.util.IslamicCalendar(locale);
+            com.ibm.icu.text.SimpleDateFormat islamicDateFormat = (com.ibm.icu.text.SimpleDateFormat) islamicCalendar
+                    .getDateTimeFormat(com.ibm.icu.text.DateFormat.FULL, -1, locale);
+            com.ibm.icu.text.DateFormatSymbols islamicDateFormatSymbols = islamicDateFormat
+                    .getDateFormatSymbols();
+
+            String[] shortMonths = islamicDateFormatSymbols.getShortMonths();
+            String twelfthMonthLocalized = shortMonths[11];
+
+            islamicTwelfthMonthLocalized[i] = twelfthMonthLocalized;
+
+            // Gregorian
+            com.ibm.icu.util.Calendar gregorianCalendar = new com.ibm.icu.util.GregorianCalendar(
+                    locale);
+            com.ibm.icu.text.SimpleDateFormat gregorianDateFormat = (com.ibm.icu.text.SimpleDateFormat) gregorianCalendar
+                    .getDateTimeFormat(com.ibm.icu.text.DateFormat.FULL, -1, locale);
+
+            com.ibm.icu.text.DateFormatSymbols gregorianDateFormatSymbols = gregorianDateFormat
+                    .getDateFormatSymbols();
+            shortMonths = gregorianDateFormatSymbols.getShortMonths();
+            twelfthMonthLocalized = shortMonths[11];
+
+            gregorianTwelfthMonthLocalized[i] = twelfthMonthLocalized;
+
+        }
+
+        // Compare
+        for (int i = 0; i < locales.length; i++) {
+
+            String gregorianTwelfthMonth = gregorianTwelfthMonthLocalized[i];
+            String islamicTwelfthMonth = islamicTwelfthMonthLocalized[i];
+
+            logln(locales[i] + ": " + gregorianTwelfthMonth + ", " + islamicTwelfthMonth);
+            if (gregorianTwelfthMonth.equalsIgnoreCase(islamicTwelfthMonth)) {
+                errln(locales[i] + ": gregorian and islamic are same: " + gregorianTwelfthMonth
+                        + ", " + islamicTwelfthMonth);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
new file mode 100644
index 0000000..14464f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
@@ -0,0 +1,287 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/*
+ * New added, 2001-10-17 [Jing/GCL]
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+public class DateFormatRegressionTestJ extends com.ibm.icu.dev.test.TestFmwk {
+    
+    private static final String TIME_STRING = "2000/11/17 08:01:00";
+    private static final long UTC_LONG = 974476860000L;
+    private static SimpleDateFormat sdf_;
+    
+    protected void init()throws Exception{
+        sdf_ = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+        
+    }
+    public static void main(String[] args) throws Exception {
+        new DateFormatRegressionTestJ().run(args);
+    }
+    
+    //Return value of getAmPmStrings
+    public void Test4103926() {
+        String act_Ampms[];
+        String exp_Ampms[]={"AM","PM"};
+        Locale.setDefault(Locale.US);
+        
+        DateFormatSymbols dfs = new DateFormatSymbols();
+        act_Ampms = dfs.getAmPmStrings();
+        if(act_Ampms.length != exp_Ampms.length) {
+            errln("The result is not expected!");
+        } else {
+            for(int i =0; i<act_Ampms.length; i++) {
+                if(!act_Ampms[i].equals(exp_Ampms[i]))
+                    errln("The result is not expected!");
+            }
+        }
+    }
+    
+    //Missing digit in millisecone format in SimpleDateFormat 
+    public void Test4148168() {
+            Date d = new Date(1002705212906l); 
+            String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSS000''"};
+            SimpleDateFormat aSimpleDF = (SimpleDateFormat)DateFormat.getDateTimeInstance();
+    
+            for(int i = 0; i<ISOPattern.length; i++) {
+                aSimpleDF.applyPattern( ISOPattern[i] );
+                logln( "Pattern = " + aSimpleDF.toPattern());
+                logln( "Format = " + aSimpleDF.format(d));
+            }
+    }
+    
+    //DateFormat getDateTimeInstance(int, int), invalid styles no exception
+    public void Test4213086() {
+        Date someDate = new Date();
+        String d=null;
+        try {
+            DateFormat df2 = DateFormat.getDateTimeInstance(2, -2);
+            d = df2.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = -2");
+            logln("Exception caught!");
+        }            
+        
+        try {
+            DateFormat df3 = DateFormat.getDateTimeInstance(4, 2);
+            d = df3.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 4" + "\t timeStyle = 2");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try {
+            DateFormat df4 = DateFormat.getDateTimeInstance(-12, -12);
+            d = df4.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = -12" + "\t timeStyle = -12");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try{
+            DateFormat df5 = DateFormat.getDateTimeInstance(2, 123);
+            d = df5.format(someDate);    
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = 123");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+        //read the value in d to get rid of the warning
+        if(d!=null){
+            logln("The value of d: " + d);
+        }
+    }
+    
+    //DateFormat.format works wrongly?
+    public void Test4250359() {
+        Locale.setDefault(Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(101 + 1900, 9, 9, 17, 53);
+        Date d = cal.getTime();
+        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
+        String act_result = tf.format(d);
+        String exp_result = "5:53 PM";
+        
+        if(!act_result.equals(exp_result)){
+            errln("The result is not expected");
+        }
+    }
+    
+    //pattern "s.S, parse '1ms'"
+    public void Test4253490() {
+        Date d = new Date(1002705212231l);
+    
+        String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", 
+                "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''"}; 
+    
+        SimpleDateFormat aSimpleDF = (SimpleDateFormat) DateFormat.getDateTimeInstance();
+        for (int i = 0; i < ISOPattern.length; i++) {
+            aSimpleDF.applyPattern(ISOPattern[i]);
+            logln("Pattern = " + aSimpleDF.toPattern());
+            logln("Format = " + aSimpleDF.format(d));
+        }
+    }
+    
+    //about regression test
+    public void Test4266432() {
+        Locale.setDefault(Locale.JAPAN);
+        Locale loc = Locale.getDefault();
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        logln("Under  " + loc +"  locale");
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+    }
+    
+    //SimpleDateFormat inconsistent for number of digits for years
+    public void Test4358730() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2001,11,10);
+        Date today = cal.getTime();
+    
+        sdf.applyPattern("MM d y");
+        logln(sdf.format(today));
+        sdf.applyPattern("MM d yy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyyy");
+        logln(sdf.format(today));
+    }
+    
+    //Parse invalid string
+    public void Test4375399() {
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.JAPAN);
+        try{
+            Date currentTime = sdf.parse("vggf 20  01.0 9.29 ap. J.-C. at 05:26:33 GMT+08:00",
+                                new ParsePosition(0));
+            if(currentTime ==null)
+                logln("parse right");
+        } catch(Exception e){
+            errln("Error");
+        }
+    }
+    /*
+    public void Test4407042() {
+        DateParseThread d1 = new DateParseThread();
+        DateFormatThread d2 = new DateFormatThread();
+        d1.start();
+        d2.start();
+        try {
+            logln("test");
+            Thread.sleep(1000);
+        } catch (Exception e) {}
+    }*/
+    
+    public void Test4468663() {
+        Date d =new Date(-93716671115767l);
+        String origin_d = d.toString();
+        String str;
+        final String pattern = new String("EEEE, MMMM d, yyyy");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+
+        if (sdf.getTimeZone().useDaylightTime()) {
+            logln("original date: " + origin_d.toString());
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+            
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+    
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);        
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateParseThread extends Thread {
+        public void run() {
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone defaultTZ = TimeZone.getDefault();
+            TimeZone PST = TimeZone.getTimeZone("PST");
+            int defaultOffset = defaultTZ.getRawOffset();
+            int PSTOffset = PST.getRawOffset();
+            int offset = defaultOffset - PSTOffset;
+            long ms = UTC_LONG - offset;
+            try {
+                int i = 0;
+                while (i < 10000) {
+                    Date date = sdf.parse(TIME_STRING);
+                    long t = date.getTime();
+                    i++;
+                    if (t != ms) {
+                        throw new ParseException("Parse Error: " + i + " (" + sdf.format(date) 
+                                  + ") " + t + " != " + ms, 0);
+                    }
+                }
+            } catch (Exception e) {
+                errln("parse error: " + e.getMessage());
+            }
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateFormatThread extends Thread {
+        public void run() {            
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone tz = TimeZone.getTimeZone("PST");
+            sdf.setTimeZone(tz);
+            int i = 0;
+            while (i < 10000) {
+                i++;
+                String s = sdf.format(new Date(UTC_LONG));
+                if (!s.equals(TIME_STRING)) {
+                    errln("Format Error: " + i + " " + s + " != " 
+                                    + TIME_STRING);
+                }
+            }
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
new file mode 100644
index 0000000..26e7757
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
@@ -0,0 +1,271 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmtrtts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.util.Random;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+/** 
+ * Performs round-trip tests for DateFormat
+ **/
+public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    public boolean INFINITE = false;
+    public boolean quick = true;
+    private SimpleDateFormat dateFormat;
+    private Calendar getFieldCal;
+    private int SPARSENESS = 18;
+    private int TRIALS = 4;
+    private int DEPTH = 5;
+    private Random ran;
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatRoundTripTest().run(args);
+    }
+    
+    public void TestDateFormatRoundTrip() {
+        dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G");
+        getFieldCal = Calendar.getInstance();
+        ran = createRandom(); // use test framework's random seed
+
+        final Locale[] avail = DateFormat.getAvailableLocales();
+        int locCount = avail.length;
+        logln("DateFormat available locales: " + locCount);
+        if (quick) {
+            if (locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only testing first 5 Locales");
+        }
+        TimeZone tz = TimeZone.getDefault();
+        logln("Default TimeZone:             " + tz.getID());
+    
+        if (INFINITE) {
+            // Special infinite loop test mode for finding hard to reproduce errors
+            Locale loc = Locale.getDefault();
+            logln("ENTERING INFINITE TEST LOOP FOR Locale: " + loc.getDisplayName());
+            for (;;) {
+                _test(loc);
+            }
+        } else {        
+            _test(Locale.getDefault());
+            for (int i = 0; i < locCount; ++i) {
+                _test(avail[i]);
+            }
+        }
+    }
+    
+    public String styleName(int s) {
+        switch (s) {
+            case DateFormat.SHORT :
+                return "SHORT";
+            case DateFormat.MEDIUM :
+                return "MEDIUM";
+            case DateFormat.LONG :
+                return "LONG";
+            case DateFormat.FULL :
+                return "FULL";
+            default :
+                return "Unknown";
+        }
+    }
+    
+    public void _test(Locale loc) {
+        if (!INFINITE) {
+            logln("Locale: " + loc.getDisplayName());
+        }
+        // Total possibilities = 24
+        //  4 date
+        //  4 time
+        //  16 date-time
+        boolean[] TEST_TABLE = new boolean[24];
+        int i = 0;
+        for (i = 0; i < 24; ++i)
+            TEST_TABLE[i] = true;
+    
+        // If we have some sparseness, implement it here.  Sparseness decreases
+        // test time by eliminating some tests, up to 23.
+        for (i = 0; i < SPARSENESS; i++) {
+            int random = (int) (ran.nextDouble() * 24);
+            if (random >= 0 && random < 24 && TEST_TABLE[i]) {
+                TEST_TABLE[random] = false;
+            }
+        }    
+        
+        int itable = 0;
+        int style = 0;
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style)); 
+                DateFormat df = DateFormat.getDateInstance(style, loc); 
+                _test(df, false);
+            }
+        }
+    
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style));
+                DateFormat  df = DateFormat.getTimeInstance(style, loc); 
+                _test(df, true);
+            }
+        }
+    
+        for (int dstyle = DateFormat.FULL; dstyle <= DateFormat.SHORT; ++dstyle) {
+            for (int tstyle = DateFormat.FULL; tstyle <= DateFormat.SHORT; ++tstyle) {
+                if (TEST_TABLE[itable++]) {
+                    logln("Testing dstyle " + styleName(dstyle) + ", tstyle " + styleName(tstyle)); 
+                    DateFormat df = DateFormat.getDateTimeInstance(dstyle, tstyle, loc); 
+                    _test(df, false);
+                }
+            }
+        }
+    }
+    
+    public void _test(DateFormat fmt, boolean timeOnly) {
+    
+        if (!(fmt instanceof SimpleDateFormat)) {
+            errln("DateFormat wasn't a SimpleDateFormat");
+            return;
+        }
+    
+        String pat = ((SimpleDateFormat) fmt).toPattern();
+        logln(pat);
+    
+        // NOTE TO MAINTAINER
+        // This indexOf check into the pattern needs to be refined to ignore
+        // quoted characters.  Currently, this isn't a problem with the locale
+        // patterns we have, but it may be a problem later.
+    
+        boolean hasEra = (pat.indexOf("G") != -1);
+        boolean hasZoneDisplayName = (pat.indexOf("z") != -1) || (pat.indexOf("v") != -1) || (pat.indexOf("V") != -1);
+    
+        // Because patterns contain incomplete data representing the Date,
+        // we must be careful of how we do the roundtrip.  We start with
+        // a randomly generated Date because they're easier to generate.
+        // From this we get a string.  The string is our real starting point,
+        // because this string should parse the same way all the time.  Note
+        // that it will not necessarily parse back to the original date because
+        // of incompleteness in patterns.  For example, a time-only pattern won't
+        // parse back to the same date.
+    
+        try {
+            for (int i = 0; i < TRIALS; ++i) {
+                Date[] d = new Date[DEPTH];
+                String[] s = new String[DEPTH];
+    
+                d[0] = generateDate();
+                
+                // We go through this loop until we achieve a match or until
+                // the maximum loop count is reached.  We record the points at
+                // which the date and the string starts to match.  Once matching
+                // starts, it should continue.
+                int loop;
+                int dmatch = 0; // d[dmatch].getTime() == d[dmatch-1].getTime()
+                int smatch = 0; // s[smatch].equals(s[smatch-1])
+                for (loop = 0; loop < DEPTH; ++loop) {
+                    if (loop > 0) {
+                        d[loop] = fmt.parse(s[loop - 1]);
+                    }
+    
+                    s[loop] = fmt.format(d[loop]);
+    
+                    if (loop > 0) {
+                        if (smatch == 0) {
+                            boolean match = s[loop].equals(s[loop - 1]);
+                            if (smatch == 0) {
+                                if (match)
+                                    smatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: String mismatch after match");
+                        }
+    
+                        if (dmatch == 0) {
+                            // {sfb} watch out here, this might not work
+                            boolean match = d[loop].getTime() == d[loop - 1].getTime();
+                            if (dmatch == 0) {
+                                if (match)
+                                    dmatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: Date mismatch after match");
+                        }
+    
+                        if (smatch != 0 && dmatch != 0)
+                            break;
+                    }
+                }
+                // At this point loop == DEPTH if we've failed, otherwise loop is the
+                // max(smatch, dmatch), that is, the index at which we have string and
+                // date matching.
+    
+                // Date usually matches in 2.  Exceptions handled below.
+                int maxDmatch = 2;
+                int maxSmatch = 1;
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    //If the Date is BC
+                    if (!timeOnly && !hasEra && getField(d[0], Calendar.ERA) == GregorianCalendar.BC) {
+                        maxDmatch = 3;
+                        maxSmatch = 2;
+                    }
+                    if (hasZoneDisplayName &&
+                            (fmt.getTimeZone().inDaylightTime(d[0])
+                                    || fmt.getTimeZone().inDaylightTime(d[1])
+                                    || d[0].getTime() < 0L /* before 1970 */)) {
+                        maxSmatch = 2;
+                        if (timeOnly) {
+                            maxDmatch = 3;
+                        }
+                    }
+                }
+                    
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM d, yyyy HH:mm:ss, z G", Locale.US);
+                    logln("Date = " + sdf.format(d[0]) + "; ms = " + d[0].getTime());
+                    logln("Dmatch: " + dmatch + " maxD: " + maxDmatch + " Smatch:" + smatch + " maxS:" + maxSmatch);
+                    for (int j = 0; j <= loop && j < DEPTH; ++j) {
+                        StringBuffer temp = new StringBuffer("");
+                        FieldPosition pos = new FieldPosition(0);
+                        logln((j > 0 ? " P> " : "    ") + dateFormat.format(d[j], temp, pos) 
+                            + " F> " + s[j] + (j > 0 && d[j].getTime() == d[j - 1].getTime() ? " d==" : "")
+                            + (j > 0 && s[j].equals(s[j - 1]) ? " s==" : ""));
+                    }
+                    errln("Pattern: " + pat + " failed to match" + "; ms = " + d[0].getTime());
+                }
+            }
+        } catch (ParseException e) {
+            errln("Exception: " + e.getMessage());
+            logln(e.toString());
+        }
+    }
+    
+    public int getField(Date d, int f) {
+        getFieldCal.setTime(d);
+        int ret = getFieldCal.get(f);
+        return ret;
+    }
+    
+    public Date generateDate() {
+        double a = ran.nextDouble();
+        // Now 'a' ranges from 0..1; scale it to range from 0 to 8000 years
+        a *= 8000;
+        // Range from (4000-1970) BC to (8000-1970) AD
+        a -= 4000;
+        // Now scale up to ms
+        a *= 365.25 * 24 * 60 * 60 * 1000;
+        return new Date((long)a);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
new file mode 100644
index 0000000..c5f03b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -0,0 +1,3413 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmttst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.CharacterIterator;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.ChineseDateFormatSymbols;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+public class DateFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new DateFormatTest().run(args);
+    }
+
+    /**
+     * Verify that patterns have the correct values and could produce the 
+     * the DateFormat instances that contain the correct localized patterns.
+     */
+    public void TestPatterns() {
+        final String[][] EXPECTED = {
+                {DateFormat.MINUTE_SECOND, "ms", "en", "m:s"},
+                {DateFormat.HOUR24_MINUTE, "Hm", "en", "H:m"},
+                {DateFormat.HOUR24_MINUTE_SECOND, "Hms","en","H:m:s"},
+                {DateFormat.HOUR_MINUTE, "hm","en","h:m a"},
+                {DateFormat.HOUR_MINUTE_SECOND, "hms","en","h:m:s a"},
+                {DateFormat.DAY, "d","en","d"},
+                {DateFormat.STANDALONE_MONTH, "LLLL","en","LLLL"},
+                {DateFormat.ABBR_STANDALONE_MONTH, "LLL","en","LLL"},
+                {DateFormat.YEAR, "y","en","y"},
+                {DateFormat.MONTH_DAY, "MMMMd","en","MMMM d"},
+                {DateFormat.ABBR_MONTH_DAY, "MMMd","en","MMM d"},
+                {DateFormat.NUM_MONTH_DAY, "Md","en","M/d"},
+                {DateFormat.MONTH_WEEKDAY_DAY, "MMMMEEEEd","en","EEEE, MMMM d"},
+                {DateFormat.ABBR_MONTH_WEEKDAY_DAY, "MMMEd","en","E, MMM d"},
+                {DateFormat.NUM_MONTH_WEEKDAY_DAY, "MEd","en","E, M/d"},
+                {DateFormat.YEAR_MONTH, "yMMMM","en","MMMM y"},
+                {DateFormat.YEAR_ABBR_MONTH, "yMMM","en","MMM y"},
+                {DateFormat.YEAR_NUM_MONTH, "yM","en","M/y"}, 
+                {DateFormat.YEAR_ABBR_MONTH_WEEKDAY_DAY, "yMMMEd", "en", "E, MMM d, y"},
+                {DateFormat.YEAR_NUM_MONTH_WEEKDAY_DAY, "yMEd", "en", "E, M/d/y"},
+                {DateFormat.YEAR_QUARTER, "yQQQ", "en", "QQQ y"},
+                {DateFormat.YEAR_ABBR_QUARTER, "yQ", "en", "Q y"}
+        };
+        
+        for (int i = 0; i < EXPECTED.length; i++) {
+            
+            // Verify that patterns have the correct values
+            String actualPattern = EXPECTED[i][0];
+            String expectedPattern = EXPECTED[i][1];
+            ULocale locale = new ULocale(EXPECTED[i][2], "", "");
+            if (!actualPattern.equals(expectedPattern)) {
+                errln("FAILURE! Expected pattern: " + expectedPattern + 
+                        " but was: " + actualPattern);
+            }
+            
+            // Verify that DataFormat instances produced contain the correct 
+            // localized patterns
+            DateFormat date1 = DateFormat.getPatternInstance(actualPattern, 
+                    locale);
+            DateFormat date2 = DateFormat.getPatternInstance(Calendar.getInstance(locale),
+                    actualPattern, locale);
+            
+            String expectedLocalPattern = EXPECTED[i][3];
+            String actualLocalPattern1 = ((SimpleDateFormat)date1).toLocalizedPattern();
+            String actualLocalPattern2 = ((SimpleDateFormat)date2).toLocalizedPattern();
+            if (!actualLocalPattern1.equals(expectedLocalPattern)) {
+                errln("FAILURE! Expected local pattern: " + expectedLocalPattern 
+                        + " but was: " + actualLocalPattern1);
+            }       
+            if (!actualLocalPattern2.equals(expectedLocalPattern)) {
+                errln("FAILURE! Expected local pattern: " + expectedLocalPattern 
+                        + " but was: " + actualLocalPattern2);
+            }      
+        }
+    }
+
+    // Test written by Wally Wedel and emailed to me.
+    public void TestWallyWedel() {
+        /*
+         * Instantiate a TimeZone so we can get the ids.
+         */
+        //TimeZone tz = new SimpleTimeZone(7, ""); //The variable is never used
+        /*
+         * Computational variables.
+         */
+        int offset, hours, minutes, seconds;
+        /*
+         * Instantiate a SimpleDateFormat set up to produce a full time
+         zone name.
+         */
+        SimpleDateFormat sdf = new SimpleDateFormat("zzzz");
+        /*
+         * A String array for the time zone ids.
+         */
+    
+        final String[] ids = TimeZone.getAvailableIDs();
+        int ids_length = ids.length; //when fixed the bug should comment it out
+    
+        /*
+         * How many ids do we have?
+         */
+        logln("Time Zone IDs size:" + ids_length);
+        /*
+         * Column headings (sort of)
+         */
+        logln("Ordinal ID offset(h:m) name");
+        /*
+         * Loop through the tzs.
+         */
+        Date today = new Date();
+        Calendar cal = Calendar.getInstance();
+        for (int i = 0; i < ids_length; i++) {
+            logln(i + " " + ids[i]);
+            TimeZone ttz = TimeZone.getTimeZone(ids[i]);
+            // offset = ttz.getRawOffset();
+            cal.setTimeZone(ttz);
+            cal.setTime(today);
+            offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+            // logln(i + " " + ids[i] + " offset " + offset);
+            String sign = "+";
+            if (offset < 0) {
+                sign = "-";
+                offset = -offset;
+            }
+            hours = offset / 3600000;
+            minutes = (offset % 3600000) / 60000;
+            seconds = (offset % 60000) / 1000;
+            String dstOffset = sign + (hours < 10 ? "0" : "") + hours
+                    + ":" + (minutes < 10 ? "0" : "") + minutes; 
+            if (seconds != 0) {
+                dstOffset += ":" + (seconds < 10 ? "0" : "") + seconds;
+            }
+            /*
+             * Instantiate a date so we can display the time zone name.
+             */
+            sdf.setTimeZone(ttz);
+            /*
+             * Format the output.
+             */
+            StringBuffer fmtOffset = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            
+            try {
+                fmtOffset = sdf.format(today, fmtOffset, pos);
+            } catch (Exception e) {            
+                logln("Exception:" + e);
+                continue;
+            }
+            // UnicodeString fmtOffset = tzS.toString();
+            String fmtDstOffset = null;
+            if (fmtOffset.toString().startsWith("GMT")) {
+                //fmtDstOffset = fmtOffset.substring(3);
+                fmtDstOffset = fmtOffset.substring(3, fmtOffset.length());
+            }
+            /*
+             * Show our result.
+             */
+    
+            boolean ok = fmtDstOffset == null || fmtDstOffset.equals("") || fmtDstOffset.equals(dstOffset);
+            if (ok) {
+                logln(i + " " + ids[i] + " " + dstOffset + " "
+                      + fmtOffset + (fmtDstOffset != null ? " ok" : " ?")); 
+            } else {
+                errln(i + " " + ids[i] + " " + dstOffset + " " + fmtOffset + " *** FAIL ***");
+            }
+        
+        }
+    }
+    
+    public void TestEquals() {
+        DateFormat fmtA = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        DateFormat fmtB = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        if (!fmtA.equals(fmtB))
+            errln("FAIL");    
+    }
+    
+    /**
+     * Test the parsing of 2-digit years.
+     */
+    public void TestTwoDigitYearDSTParse() {
+    
+        SimpleDateFormat fullFmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G"); 
+        SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yy h:mm:ss 'o''clock' a z", Locale.ENGLISH); 
+        String s = "03-Apr-04 2:20:47 o'clock AM PST";
+    
+        /*
+         * SimpleDateFormat(pattern, locale) Construct a SimpleDateDateFormat using
+         * the given pattern, the locale and using the TimeZone.getDefault();
+         * So it need to add the timezone offset on hour field. 
+         * ps. the Method Calendar.getTime() used by SimpleDateFormat.parse() always 
+         * return Date value with TimeZone.getDefault() [Richard/GCL]
+         */
+        
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        int hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000);
+        // hour is the expected hour of day, in units of seconds
+        hour = ((hour < 0) ? hour + 24 : hour) * 60*60;
+        try {
+            Date d = fmt.parse(s);
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(d);
+            //DSTOffset
+            hour += defaultTZ.inDaylightTime(d) ? 1 : 0;
+            
+            logln(s + " P> " + ((DateFormat) fullFmt).format(d));
+            // hr is the actual hour of day, in units of seconds
+            // adjust for DST
+            int hr = cal.get(Calendar.HOUR_OF_DAY) * 60*60 -
+                cal.get(Calendar.DST_OFFSET) / 1000;
+            if (hr != hour)
+                errln("FAIL: Hour (-DST) = " + hr / (60*60.0)+
+                      "; expected " + hour / (60*60.0));
+        } catch (ParseException e) {
+            errln("Parse Error:" + e.getMessage());
+        }
+    
+    }
+    
+    /**
+     * Verify that returned field position indices are correct.
+     */
+    public void TestFieldPosition() {
+        int i, j, exp;
+        StringBuffer buf = new StringBuffer();
+
+        // Verify data
+        if (VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(3, 7)) >= 0) {
+            DateFormatSymbols rootSyms = new DateFormatSymbols(new Locale("", "", ""));
+            assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars());
+        }
+        
+        assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES.length == DateFormat.FIELD_COUNT);
+        if(DateFormat.FIELD_COUNT != PATTERN_CHARS.length()){
+            errln("Did not get the correct value for DateFormat.FIELD_COUNT. Expected:  "+ PATTERN_CHARS.length());
+        }
+
+        // Create test formatters
+        final int COUNT = 4;
+        DateFormat[] dateFormats = new DateFormat[COUNT];
+        dateFormats[0] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        dateFormats[1] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRANCE);
+        // Make the pattern "G y M d..."
+        buf.append(PATTERN_CHARS);
+        for (j=buf.length()-1; j>=0; --j) buf.insert(j, ' ');
+        dateFormats[2] = new SimpleDateFormat(buf.toString(), Locale.US);
+        // Make the pattern "GGGG yyyy MMMM dddd..."
+        for (j=buf.length()-1; j>=0; j-=2) {
+            for (i=0; i<3; ++i) {
+                buf.insert(j, buf.charAt(j));
+            }
+        }
+        dateFormats[3] = new SimpleDateFormat(buf.toString(), Locale.US);
+
+        Date aug13 = new Date((long) 871508052513.0);
+
+        // Expected output field values for above DateFormats on aug13
+        // Fields are given in order of DateFormat field number
+        final String EXPECTED[] = {
+             "", "1997", "August", "13", "", "", "34", "12", "",
+            "Wednesday", "", "", "", "", "PM", "2", "", "", "", "", "", "", "", "", "PT","","","","","",
+
+            "", "1997", "ao\u00FBt", "13", "", "14", "34", "12", "",
+            "mercredi", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "\u00C9tats-Unis (Los Angeles)","","","","","",
+
+            "AD", "1997", "8", "13", "14", "14", "34", "12", "5",
+            "Wed", "225", "2", "33", "3", "PM", "2", "2", "PDT", "1997", "4", "1997", "2450674", "52452513", "-0700", "PT","4","8","3","3","PDT",
+
+            "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130",
+            "Wednesday", "0225", "0002", "0033", "0003", "PM", "0002", "0002", "Pacific Daylight Time", "1997",
+            "0004", "1997", "2450674", "52452513", "GMT-07:00", "Pacific Time","Wednesday","August", "3rd quarter", "3rd quarter","United States (Los Angeles)",
+        };
+
+        assertTrue("data size", EXPECTED.length == COUNT * DateFormat.FIELD_COUNT);
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        final DateFormat.Field[] DTFMT_FIELDS = {
+            DateFormat.Field.AM_PM,
+            DateFormat.Field.DAY_OF_MONTH,
+            DateFormat.Field.DAY_OF_WEEK,
+            DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+            DateFormat.Field.DAY_OF_YEAR,
+
+            DateFormat.Field.DOW_LOCAL,
+            DateFormat.Field.ERA,
+            DateFormat.Field.EXTENDED_YEAR,
+            DateFormat.Field.HOUR_OF_DAY0,
+            DateFormat.Field.HOUR_OF_DAY1,
+
+            DateFormat.Field.HOUR0,
+            DateFormat.Field.HOUR1,
+            DateFormat.Field.JULIAN_DAY,
+            DateFormat.Field.MILLISECOND,
+            DateFormat.Field.MILLISECONDS_IN_DAY,
+
+            DateFormat.Field.MINUTE,
+            DateFormat.Field.MONTH,
+            DateFormat.Field.QUARTER,
+            DateFormat.Field.SECOND,
+            DateFormat.Field.TIME_ZONE,
+
+            DateFormat.Field.WEEK_OF_MONTH,
+            DateFormat.Field.WEEK_OF_YEAR,
+            DateFormat.Field.YEAR,
+            DateFormat.Field.YEAR_WOY,
+        };
+
+        final String[][] EXPECTED_BY_FIELD = {
+            {"PM", "13", "Wednesday", "", "",
+             "", "", "", "", "",
+             "", "2", "", "", "",
+             "34", "August", "", "12", "PT",
+             "", "", "1997", ""},
+
+            {"", "13", "mercredi", "", "",
+             "", "", "", "14", "",
+             "", "", "", "", "",
+             "34", "ao\u00FBt", "", "12", "\u00C9tats-Unis (Los Angeles)",
+             "", "", "1997", ""},
+
+            {"PM", "13", "Wed", "2", "225",
+             "4", "AD", "1997", "14", "14",
+             "2", "2", "2450674", "5", "52452513",
+             "34", "8", "3", "12", "PDT",
+             "3", "33", "1997", "1997"},
+
+            {"PM", "0013", "Wednesday", "0002", "0225",
+             "0004", "Anno Domini", "1997", "0014", "0014",
+             "0002", "0002", "2450674", "5130", "52452513",
+             "0034", "August", "3rd quarter", "0012", "Pacific Daylight Time",
+             "0003", "0033", "1997", "1997"},
+        };
+//#endif
+
+        TimeZone PT = TimeZone.getTimeZone("America/Los_Angeles");
+        for (j = 0, exp = 0; j < COUNT; ++j) {
+            //  String str;
+            DateFormat df = dateFormats[j];
+            df.setTimeZone(PT);
+            logln(" Pattern = " + ((SimpleDateFormat) df).toPattern());
+            try {
+                logln("  Result = " + df.format(aug13));
+            } catch (Exception e) {
+                errln("FAIL: " + e);
+                e.printStackTrace();
+                continue;
+            }
+
+            FieldPosition pos;
+            String field;
+
+            for (i = 0; i < DateFormat.FIELD_COUNT; ++i, ++exp) {
+                pos = new FieldPosition(i);
+                buf.setLength(0);
+                df.format(aug13, buf, pos);    
+                field = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+                assertEquals("pattern#" + j + " field #" + i + " " + DATEFORMAT_FIELD_NAMES[i],
+                             EXPECTED[exp], field);
+            }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // FieldPostion initialized by DateFormat.Field trac#6089
+            for(i = 0; i < DTFMT_FIELDS.length; i++) {
+                // The format method only set position for the first occurrence of
+                // the specified field.
+                pos = new FieldPosition(DTFMT_FIELDS[i]);
+                buf.setLength(0);
+                df.format(aug13, buf, pos);
+                field = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+                assertEquals("pattern#" + j + " " + DTFMT_FIELDS[i].toString(), EXPECTED_BY_FIELD[j][i], field);
+            }
+//#endif
+        }
+    }
+    /**
+     * This MUST be kept in sync with DateFormatSymbols.patternChars.
+     */
+    static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV";
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * A list of the DateFormat.Field.
+     * This MUST be kept in sync with PATTERN_CHARS above.
+     */
+    static final DateFormat.Field[] DATEFORMAT_FIELDS = {
+        DateFormat.Field.ERA,           // G
+        DateFormat.Field.YEAR,          // y
+        DateFormat.Field.MONTH,         // M
+        DateFormat.Field.DAY_OF_MONTH,  // d
+        DateFormat.Field.HOUR_OF_DAY1,  // k
+        DateFormat.Field.HOUR_OF_DAY0,  // H
+        DateFormat.Field.MINUTE,        // m
+        DateFormat.Field.SECOND,        // s
+        DateFormat.Field.MILLISECOND,   // S
+        DateFormat.Field.DAY_OF_WEEK,   // E
+        DateFormat.Field.DAY_OF_YEAR,   // D
+        DateFormat.Field.DAY_OF_WEEK_IN_MONTH,  // F
+        DateFormat.Field.WEEK_OF_YEAR,  // w
+        DateFormat.Field.WEEK_OF_MONTH, // W
+        DateFormat.Field.AM_PM,         // a
+        DateFormat.Field.HOUR1,         // h
+        DateFormat.Field.HOUR0,         // K
+        DateFormat.Field.TIME_ZONE,     // z
+        DateFormat.Field.YEAR_WOY,      // Y
+        DateFormat.Field.DOW_LOCAL,     // e
+        DateFormat.Field.EXTENDED_YEAR, // u
+        DateFormat.Field.JULIAN_DAY,    // g
+        DateFormat.Field.MILLISECONDS_IN_DAY,   // A
+        DateFormat.Field.TIME_ZONE,     // Z
+        DateFormat.Field.TIME_ZONE,     // v
+        DateFormat.Field.DAY_OF_WEEK,   // c
+        DateFormat.Field.MONTH,         // L
+        DateFormat.Field.QUARTER,       // Q
+        DateFormat.Field.QUARTER,       // q
+        DateFormat.Field.TIME_ZONE,     // V
+    };
+//#endif
+
+    /**
+     * A list of the names of all the fields in DateFormat.
+     * This MUST be kept in sync with DateFormat.
+     */
+    static final String DATEFORMAT_FIELD_NAMES[] = {
+        "ERA_FIELD",
+        "YEAR_FIELD",
+        "MONTH_FIELD",
+        "DATE_FIELD",
+        "HOUR_OF_DAY1_FIELD",
+        "HOUR_OF_DAY0_FIELD",
+        "MINUTE_FIELD",
+        "SECOND_FIELD",
+        "MILLISECOND_FIELD",
+        "DAY_OF_WEEK_FIELD",
+        "DAY_OF_YEAR_FIELD",
+        "DAY_OF_WEEK_IN_MONTH_FIELD",
+        "WEEK_OF_YEAR_FIELD",
+        "WEEK_OF_MONTH_FIELD",
+        "AM_PM_FIELD",
+        "HOUR1_FIELD",
+        "HOUR0_FIELD",
+        "TIMEZONE_FIELD",
+        "YEAR_WOY_FIELD",
+        "DOW_LOCAL_FIELD",
+        "EXTENDED_YEAR_FIELD",
+        "JULIAN_DAY_FIELD",
+        "MILLISECONDS_IN_DAY_FIELD",
+        "TIMEZONE_RFC_FIELD",
+        "GENERIC_TIMEZONE_FIELD",
+        "STAND_ALONE_DAY_FIELD",
+        "STAND_ALONE_MONTH_FIELD",
+        "QUARTER_FIELD",
+        "STAND_ALONE_QUARTER_FIELD",
+        "TIMEZONE_SPECIAL_FIELD",
+    };
+
+    /**
+     * General parse/format tests.  Add test cases as needed.
+     */
+    public void TestGeneral() {
+        
+        String DATA[] = {
+            "yyyy MM dd HH:mm:ss.SSS",
+
+            // Milliseconds are left-justified, since they format as fractions of a second
+            // Both format and parse should round HALF_UP
+            "y/M/d H:mm:ss.S", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.6", "2004 03 10 16:36:31.600",
+            "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.57", "2004 03 10 16:36:31.570",
+            "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567",
+            "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.568", "2004/3/10 16:36:31.5680",
+        };
+        expect(DATA, new Locale("en", "", ""));
+    }
+
+    public void TestGenericTime() {
+
+
+        // any zone pattern should parse any zone
+        Locale en = new Locale("en", "", "");
+        String ZDATA[] = {
+            "yyyy MM dd HH:mm zzz",
+            // round trip
+            "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time",
+            "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT",
+            // non-generic timezone string influences dst offset even if wrong for date/time
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 PST",
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 Pacific Time",
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 PDT",
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 Pacific Time",
+            // generic timezone generates dst offset appropriate for local time
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT",
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time",
+            // daylight savings time transition edge cases.
+            // time to parse does not really exist, PT interpreted as earlier time
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT",
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT",
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PST",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PT",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PT",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PT",
+            "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30",
+            // time to parse is ambiguous, PT interpreted as later time
+            "y/M/d H:mm zzz", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30 PST",
+            "y/M/d H:mm v", "pf", "2005/10/30 1:30 PT", "2005 10 30  01:30 PST", "2005/10/30 1:30 PT",
+            "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30",
+
+            "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PST",
+             "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "2004/10/31 1:30 PST",
+             "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "2004/10/31 1:30 PDT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "2004/10/31 1:30 PT",
+             "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30",
+            // Below is actually an invalid test case.  See the note in #5910.  Disable the case for now.
+            // TODO: Revisit after 3.8
+            //"y/M/d H:mm vvvv", "pf", "2004/10/31 1:30 Argentina Time", "2004 10 30 21:30 PDT", "2004/10/31 1:30 Argentina Time",
+        };
+        expect(ZDATA, en);
+
+        logln("cross format/parse tests");
+        final String basepat = "yy/MM/dd H:mm ";
+        final SimpleDateFormat[] formats = { 
+            new SimpleDateFormat(basepat + "v", en),
+            new SimpleDateFormat(basepat + "vvvv", en),
+            new SimpleDateFormat(basepat + "zzz", en),
+            new SimpleDateFormat(basepat + "zzzz", en)
+        };
+
+        final SimpleDateFormat univ = new SimpleDateFormat("yyyy MM dd HH:mm zzz", en);
+        final String[] times = { "2004 01 02 03:04 PST", "2004 07 08 09:10 PDT" };
+        for (int i = 0; i < times.length; ++i) {
+            try {
+                Date d = univ.parse(times[i]);
+                logln("time: " + d);
+                for (int j = 0; j < formats.length; ++j) {
+                    String test = formats[j].format(d);
+                    logln("test: '" + test + "'");
+                    for (int k = 0; k < formats.length; ++k) {
+                        try {
+                            Date t = formats[k].parse(test);
+                            if (!d.equals(t)) {
+                                errln("format " + k + 
+                                      " incorrectly parsed output of format " + j + 
+                                      " (" + test + "), returned " +
+                                      t + " instead of " + d);
+                            } else {
+                                logln("format " + k + " parsed ok");
+                            }
+                        }
+                        catch (ParseException e) {
+                            errln("format " + k + 
+                                  " could not parse output of format " + j + 
+                                  " (" + test + ")");
+                        }
+                    }
+                }
+            }
+            catch (ParseException e) {
+                errln("univ could not parse: " + times[i]);
+            }
+        }
+
+    }
+
+    public void TestGenericTimeZoneOrder() {
+        // generic times should parse the same no matter what the placement of the time zone string
+        // should work for standard and daylight times
+
+        String XDATA[] = {
+            "yyyy MM dd HH:mm zzz",
+            // standard time, explicit daylight/standard
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d zzz H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1/1 PST 1:00",
+            "zzz y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 2004/1/1 1:00",
+
+            // standard time, generic
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d vvvv H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1/1 Pacific Time 1:00",
+            "vvvv y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacific Time 2004/1/1 1:00",
+
+            // daylight time, explicit daylight/standard
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT",
+            "y/M/d zzz H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PDT 1:00",
+            "zzz y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 2004/7/1 1:00",
+
+            // daylight time, generic
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time",
+            "y/M/d vvvv H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 Pacific Time 1:00",
+            "vvvv y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "Pacific Time 2004/7/1 1:00",
+        };
+        Locale en = new Locale("en", "", "");
+        expect(XDATA, en);
+    }
+
+    public void TestTimeZoneDisplayName() {
+        Calendar cal = new GregorianCalendar();
+        SimpleDateFormat testfmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+
+        for (int i = 0; i < fallbackTests.length; ++i) {
+            String[] info = fallbackTests[i];
+            logln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3]);
+
+            long time = 0;
+            try {
+                Date testd = testfmt.parse(info[2]);
+                time = testd.getTime();
+            } catch (ParseException pe) {
+                errln("Failed to parse test date data");
+                continue;
+            }
+            ULocale l = new ULocale(info[0]);
+            TimeZone tz = TimeZone.getTimeZone(info[1]);
+            SimpleDateFormat fmt = new SimpleDateFormat(info[3], l);
+            cal.setTimeInMillis(time);
+            cal.setTimeZone(tz);
+            String result = fmt.format(cal);
+            if (!result.equals(info[4])) {
+                errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 
+                      info[4] + "' but got: '" + result + "'");
+            }
+        }
+    }
+
+    private static final String GMT_BG = "\u0413\u0440\u0438\u0438\u043D\u0443\u0438\u0447";
+    private static final String GMT_ZH = "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4";
+    //private static final String GMT_BG = "GMT";
+
+    private static final String[][] fallbackTests  = {
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United States (Los Angeles)", "America/Los_Angeles" },
+        { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "America/Los_Angeles" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United States (Phoenix)", "America/Phoenix" },
+
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "CST (Cuba)", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "CDT (Cuba)", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" },
+
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" },
+
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" },
+
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" },
+    // icu en.txt has exemplar city for this time zone
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" },
+
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "IST", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "IST", "+05:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" },
+        
+        // ==========
+
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" },
+
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" },
+        // added to test proper fallback of country name
+        { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" },
+        { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" },
+
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" },
+
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" },
+
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "Vereinigtes K\u00f6nigreich", "Europe/London" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "Vereinigtes K\u00f6nigreich", "Europe/London" },
+
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien", "Asia/Calcutta" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indien", "Asia/Calcutta" },
+
+        // ==========
+
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0800", "-8:00" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0800", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0700", "-7:00" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0700", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6\u95f4", "America/Los_Angeles" },
+    // icu zh.txt has exemplar city for this time zone
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u7f8e\u56fd (\u6d1b\u6749\u77f6)", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u7f8e\u56fd\u592a\u5e73\u6d0b\u65f6\u95f4", "America/Los_Angeles" },
+
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+    // icu zh.txt does not have info for this time zone
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u963f\u6839\u5ef7 (\u5e03\u5b9c\u8bfa\u65af\u827e\u5229\u65af)", "America/Buenos_Aires" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "America/Buenos_Aires" },
+
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u963f\u6839\u5ef7 (\u5e03\u5b9c\u8bfa\u65af\u827e\u5229\u65af)", "America/Buenos_Aires" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "America/Buenos_Aires" },
+
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "-5:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\u53e4\u5df4\u590f\u4ee4\u6642\u9593", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u53e4\u5df4", "America/Havana" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u53e4\u5df4\u6642\u9593", "America/Havana" },
+
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u590f\u4ee4\u65f6\u95f4", "+11:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u6fb3\u5927\u5229\u4e9a (\u6089\u5c3c)", "Australia/Sydney" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u65f6\u95f4", "Australia/Sydney" },
+
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u590f\u4ee4\u65f6\u95f4", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4",  "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u6fb3\u5927\u5229\u4e9a (\u6089\u5c3c)", "Australia/Sydney" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u65f6\u95f4", "Australia/Sydney" },
+
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4", "+0:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u82f1\u56fd", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u82f1\u56fd", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\u82f1\u56fd", "Europe/London" },
+
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", GMT_ZH+"-0300", "-3:00" },
+
+        // JB#5150
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+0530", "+05:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u5370\u5ea6", "Asia/Calcutta" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u5370\u5EA6\u6807\u51c6\u65f6\u95f4", "Asia/Calcutta" },
+
+        // ==========
+
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e (\u0932\u094b\u0938 \u090f\u0902\u091c\u093f\u0932\u0947\u0938)", "America/Los_Angeles" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e (\u0932\u094b\u0938 \u090f\u0902\u091c\u093f\u0932\u0947\u0938)", "America/Los_Angeles" },
+
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u0915\u094d\u092f\u0942\u092c\u093e", "America/Havana" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u0915\u094d\u092f\u0942\u092c\u093e", "America/Havana" },
+
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u092C\u094D\u0930\u093F\u0924\u0928", "Europe/London" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u092C\u094D\u0930\u093F\u0924\u0928", "Europe/London" },
+
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u096B:\u0969\u0966", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u096B:\u0969\u0966", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "Asia/Calcutta" },
+
+        // ==========
+
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0800", "-8:00" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0800", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043E\u043E\u043A\u0435\u0430\u043D\u0441\u043A\u0430 \u0447\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0700", "-7:00" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0700", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043E\u043E\u043A\u0435\u0430\u043D\u0441\u043A\u0430 \u043B\u044F\u0442\u043D\u0430 \u0447\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430", "America/Los_Angeles" },
+    // icu bg.txt has exemplar city for this time zone
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+    // icu bg.txt does not have info for this time zone
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u041a\u0443\u0431\u0430", "America/Havana" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u041a\u0443\u0431\u0430", "America/Havana" },
+
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", GMT_BG+"+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u0427\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430 \u0413\u0440\u0438\u043D\u0443\u0438\u0447", "+0:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
+
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", GMT_BG+"-0300", "-3:00" },
+
+        // JB#5150
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", GMT_BG+"+0530", "+05:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u0418\u043D\u0434\u0438\u044F", "Asia/Calcutta" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u0418\u043D\u0434\u0438\u044F", "Asia/Calcutta" },
+
+    // ==========
+
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593", "America/Los_Angeles" },
+    // icu ja.txt has exemplar city for this time zone
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u30A2\u30E1\u30EA\u30AB\u5408\u8846\u56FD (\u30ed\u30b5\u30f3\u30bc\u30eb\u30b9)", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u30A2\u30E1\u30EA\u30AB\u592A\u5E73\u6D0B\u6642\u9593", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\u30A2\u30E1\u30EA\u30AB\u5408\u8846\u56FD (\u30ed\u30b5\u30f3\u30bc\u30eb\u30b9)", "America/Los_Angeles" },
+
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3 (\u30D6\u30A8\u30CE\u30B9\u30A2\u30A4\u30EC\u30B9)", "America/Buenos_Aires" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "America/Buenos_Aires" },
+
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3 (\u30D6\u30A8\u30CE\u30B9\u30A2\u30A4\u30EC\u30B9)", "America/Buenos_Aires" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "America/Buenos_Aires" },
+
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u30ad\u30e5\u30fc\u30d0\u6642\u9593", "America/Havana" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u30ad\u30e5\u30fc\u30d0\u6642\u9593", "America/Havana" },
+
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642", "+0:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u30A4\u30F3\u30C9\u6642\u9593", "Asia/Calcutta" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u30A4\u30F3\u30C9\u6642\u9593", "Asia/Calcutta" },
+
+    // ==========
+
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Angeles)", "America/Los_Angeles" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los Angeles)", "America/Los_Angeles" },
+
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "v", "CU", "America/Havana" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "CU", "America/Havana" },
+
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" },
+
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" },
+
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "v", "GB", "Europe/London" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "GB", "Europe/London" },
+
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IN", "Asia/Calcutta" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "IN", "Asia/Calcutta" },
+        
+    };
+
+    /**
+     * Verify that strings which contain incomplete specifications are parsed
+     * correctly.  In some instances, this means not being parsed at all, and
+     * returning an appropriate error.
+     */
+    public void TestPartialParse994() {
+    
+        SimpleDateFormat f = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 1 - 1, 17, 10, 11, 42);
+        Date date = null;
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", cal.getTime());
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", date);
+    }
+    
+    // internal test subroutine, used by TestPartialParse994
+    public void tryPat994(SimpleDateFormat format, String pat, String str, Date expected) {
+        Date Null = null;
+        logln("Pattern \"" + pat + "\"   String \"" + str + "\"");
+        try {
+            format.applyPattern(pat);
+            Date date = format.parse(str);    
+            String f = ((DateFormat) format).format(date);
+            logln(" parse(" + str + ") -> " + date);
+            logln(" format -> " + f);
+            if (expected.equals(Null) || !date.equals(expected))
+                errln("FAIL: Expected null"); //" + expected);
+            if (!f.equals(str))
+                errln("FAIL: Expected " + str);
+        } catch (ParseException e) {
+            logln("ParseException: " + e.getMessage());
+            if (!(expected ==Null))
+                errln("FAIL: Expected " + expected);
+        } catch (Exception e) {
+            errln("*** Exception:");
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern985() {
+        String format = "yyyyMMddHHmmssSSS";
+        String now, then;
+        //UBool flag;
+        SimpleDateFormat formatter = new SimpleDateFormat(format);
+        Date date1 = new Date();
+        now = ((DateFormat) formatter).format(date1);
+        logln(now);
+        ParsePosition pos = new ParsePosition(0);
+        Date date2 = formatter.parse(now, pos);
+        if (date2 == null)
+            then = "Parse stopped at " + pos.getIndex();
+        else
+            then = ((DateFormat) formatter).format(date2);
+        logln(then);
+        if (date2 == null || !date2.equals(date1))
+            errln("FAIL");
+    }
+
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern917() {
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/02/03";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 2 - 1, 3);
+        _testIt917(fmt, myDate, cal.getTime());
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970304";
+        cal.clear();
+        cal.set(1997, 3 - 1, 4);
+        _testIt917(fmt, myDate, cal.getTime());
+    
+    }
+    
+    // internal test subroutine, used by TestRunTogetherPattern917
+    public void _testIt917(SimpleDateFormat fmt, String str, Date expected) {
+        logln("pattern=" + fmt.toPattern() + "   string=" + str);
+        Date o = new Date();
+        o = (Date) ((DateFormat) fmt).parseObject(str, new ParsePosition(0));
+        logln("Parsed object: " + o);
+        if (o == null || !o.equals(expected))
+            errln("FAIL: Expected " + expected);
+        String formatted = o==null? "null" : ((DateFormat) fmt).format(o);
+        logln( "Formatted string: " + formatted);
+        if (!formatted.equals(str))
+            errln( "FAIL: Expected " + str);
+    }
+    
+    /**
+     * Verify the handling of Czech June and July, which have the unique attribute that
+     * one is a proper prefix substring of the other.
+     */
+    public void TestCzechMonths459() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, new Locale("cs", "", "")); 
+        logln("Pattern " + ((SimpleDateFormat) fmt).toPattern());
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.JUNE, 15);
+        Date june = cal.getTime();
+        cal.clear();
+        cal.set(1997, Calendar.JULY, 15);
+        Date july = cal.getTime();
+        String juneStr = fmt.format(june);
+        String julyStr = fmt.format(july);
+        try {
+            logln("format(June 15 1997) = " + juneStr);
+            Date d = fmt.parse(juneStr);
+            String s = fmt.format(d);
+            int month, yr, day;
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR);
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_MONTH);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JUNE)
+                errln("FAIL: Month should be June");
+            if (yr != 1997)
+                errln("FAIL: Year should be 1997");
+            if (day != 15)
+                errln("FAIL: day should be 15");
+            logln("format(July 15 1997) = " + julyStr);
+            d = fmt.parse(julyStr);
+            s = fmt.format(d);
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR) - 1900;
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_WEEK);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JULY)
+                errln("FAIL: Month should be July");
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of 'D' in patterns.
+     */
+    public void TestLetterDPattern212() {
+        String dateString = "1995-040.05:01:29";
+        String bigD = "yyyy-DDD.hh:mm:ss";
+        String littleD = "yyyy-ddd.hh:mm:ss";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1995, 0, 1, 5, 1, 29);
+        Date expLittleD = cal.getTime();
+        Date expBigD = new Date((long) (expLittleD.getTime() + 39 * 24 * 3600000.0));
+        expLittleD = expBigD; // Expect the same, with default lenient parsing
+        logln("dateString= " + dateString);
+        SimpleDateFormat formatter = new SimpleDateFormat(bigD);
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        logln("Using " + bigD + " . " + myDate);
+        if (!myDate.equals(expBigD))
+            errln("FAIL: Expected " + expBigD);
+        formatter = new SimpleDateFormat(littleD);
+        pos = new ParsePosition(0);
+        myDate = formatter.parse(dateString, pos);
+        logln("Using " + littleD + " . " + myDate);
+        if (!myDate.equals(expLittleD))
+            errln("FAIL: Expected " + expLittleD);
+    }
+    
+    /**
+     * Test the day of year pattern.
+     */
+    public void TestDayOfYearPattern195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        int year,month,day; 
+        year = cal.get(Calendar.YEAR);
+        month = cal.get(Calendar.MONTH);
+        day = cal.get(Calendar.DAY_OF_MONTH);
+        cal.clear();
+        cal.set(year, month, day);
+        Date expected = cal.getTime();
+        logln("Test Date: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateInstance();
+        tryPattern(sdf, today, null, expected);
+        tryPattern(sdf, today, "G yyyy DDD", expected);
+    }
+    
+    // interl test subroutine, used by TestDayOfYearPattern195
+    public void tryPattern(SimpleDateFormat sdf, Date d, String pattern, Date expected) {
+        if (pattern != null)
+            sdf.applyPattern(pattern);
+        logln("pattern: " + sdf.toPattern());
+        String formatResult = ((DateFormat) sdf).format(d);
+        logln(" format -> " + formatResult);
+        try {
+            Date d2 = sdf.parse(formatResult);
+            logln(" parse(" + formatResult + ") -> " + d2);
+            if (!d2.equals(expected))
+                errln("FAIL: Expected " + expected);
+            String format2 = ((DateFormat) sdf).format(d2);
+            logln(" format -> " + format2);
+            if (!formatResult.equals(format2))
+                errln("FAIL: Round trip drift");
+        } catch (Exception e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of single quotes in patterns.
+     */
+    public void TestQuotePattern161() {
+        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy 'at' hh:mm:ss a zzz", Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.AUGUST, 13, 10, 42, 28);
+        Date currentTime_1 = cal.getTime();
+        String dateString = ((DateFormat) formatter).format(currentTime_1);
+        String exp = "08/13/1997 at 10:42:28 AM ";
+        logln("format(" + currentTime_1 + ") = " + dateString);
+        if (!dateString.substring(0, exp.length()).equals(exp))
+            errln("FAIL: Expected " + exp);
+    
+    }
+        
+    /**
+     * Verify the correct behavior when handling invalid input strings.
+     */
+    public void TestBadInput135() {
+        int looks[] = {DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG, DateFormat.FULL}; 
+        int looks_length = looks.length;
+        final String[] strings = {"Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM"}; 
+        int strings_length = strings.length;
+        DateFormat full = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US); 
+        String expected = "March 1, 2000 1:23:45 AM ";
+        for (int i = 0; i < strings_length; ++i) {
+            final String text = strings[i];
+            for (int j = 0; j < looks_length; ++j) {
+                int dateLook = looks[j];
+                for (int k = 0; k < looks_length; ++k) {
+                    int timeLook = looks[k];
+                    DateFormat df = DateFormat.getDateTimeInstance(dateLook, timeLook, Locale.US); 
+                    String prefix = text + ", " + dateLook + "/" + timeLook + ": "; 
+                    try {
+                        Date when = df.parse(text);
+                        if (when == null) {
+                            errln(prefix + "SHOULD NOT HAPPEN: parse returned null.");
+                            continue;
+                        }  
+                        if (when != null) {
+                            String format;
+                            format = full.format(when);
+                            logln(prefix + "OK: " + format);
+                            if (!format.substring(0, expected.length()).equals(expected))
+                                errln("FAIL: Expected " + expected);
+                        }
+                    } catch(java.text.ParseException e) {
+                        logln(e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+    
+    /**
+     * Verify the correct behavior when parsing an array of inputs against an
+     * array of patterns, with known results.  The results are encoded after
+     * the input strings in each row.
+     */
+    public void TestBadInput135a() {
+    
+        SimpleDateFormat dateParse = new SimpleDateFormat("", Locale.US);
+        final String ss;
+        Date date;
+        String[] parseFormats ={"MMMM d, yyyy", "MMMM d yyyy", "M/d/yy",
+                                "d MMMM, yyyy", "d MMMM yyyy",  "d MMMM",
+                                "MMMM d", "yyyy", "h:mm a MMMM d, yyyy" };
+        String[] inputStrings = {
+            "bogus string", null, null, null, null, null, null, null, null, null,
+                "April 1, 1997", "April 1, 1997", null, null, null, null, null, "April 1", null, null,
+                "Jan 1, 1970", "January 1, 1970", null, null, null, null, null, "January 1", null, null,
+                "Jan 1 2037", null, "January 1 2037", null, null, null, null, "January 1", null, null,
+                "1/1/70", null, null, "1/1/70", null, null, null, null, "0001", null,
+                "5 May 1997", null, null, null, null, "5 May 1997", "5 May", null, "0005", null,
+                "16 May", null, null, null, null, null, "16 May", null, "0016", null,
+                "April 30", null, null, null, null, null, null, "April 30", null, null,
+                "1998", null, null, null, null, null, null, null, "1998", null,
+                "1", null, null, null, null, null, null, null, "0001", null,
+                "3:00 pm Jan 1, 1997", null, null, null, null, null, null, null, "0003", "3:00 PM January 1, 1997",
+                };
+        final int PF_LENGTH = parseFormats.length;
+        final int INPUT_LENGTH = inputStrings.length;
+    
+        dateParse.applyPattern("d MMMM, yyyy");
+        dateParse.setTimeZone(TimeZone.getDefault());
+        ss = "not parseable";
+        //    String thePat;
+        logln("Trying to parse \"" + ss + "\" with " + dateParse.toPattern());
+        try {
+            date = dateParse.parse(ss);
+        } catch (Exception ex) {
+            logln("FAIL:" + ex);
+        }
+        for (int i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) {
+            ParsePosition parsePosition = new ParsePosition(0);
+            String s = inputStrings[i];
+            for (int index = 0; index < PF_LENGTH; ++index) {
+                final String expected = inputStrings[i + 1 + index];
+                dateParse.applyPattern(parseFormats[index]);
+                dateParse.setTimeZone(TimeZone.getDefault());
+                try {
+                    parsePosition.setIndex(0);
+                    date = dateParse.parse(s, parsePosition);
+                    if (parsePosition.getIndex() != 0) {
+                        String s1, s2;
+                        s1 = s.substring(0, parsePosition.getIndex());
+                        s2 = s.substring(parsePosition.getIndex(), s.length());
+                        if (date == null) {
+                            errln("ERROR: null result fmt=\"" + parseFormats[index]
+                                    + "\" pos=" + parsePosition.getIndex()
+                                    + " " + s1 + "|" + s2);
+                        } else {
+                            String result = ((DateFormat) dateParse).format(date);
+                            logln("Parsed \"" + s + "\" using \"" + dateParse.toPattern() + "\" to: " + result);
+                            if (expected == null)
+                                errln("FAIL: Expected parse failure");
+                            else
+                                if (!result.equals(expected))
+                                    errln("FAIL: Expected " + expected);
+                        }
+                    } else
+                        if (expected != null) {
+                            errln("FAIL: Expected " + expected + " from \"" + s
+                                    + "\" with \"" + dateParse.toPattern()+ "\"");
+                        }
+                } catch (Exception ex) {
+                    logln("FAIL:" + ex);
+                }
+            }
+        }
+    
+    }
+    
+    /**
+     * Test the parsing of two-digit years.
+     */
+    public void TestTwoDigitYear() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(117 + 1900, Calendar.JUNE, 5);
+        parse2DigitYear(fmt, "6/5/17", cal.getTime());
+        cal.clear();
+        cal.set(34 + 1900, Calendar.JUNE, 4);
+        parse2DigitYear(fmt, "6/4/34", cal.getTime());
+    }
+    
+    // internal test subroutine, used by TestTwoDigitYear
+    public void parse2DigitYear(DateFormat fmt, String str, Date expected) {
+        try {
+            Date d = fmt.parse(str);
+            logln("Parsing \""+ str+ "\" with "+ ((SimpleDateFormat) fmt).toPattern()
+                    + "  => "+ d); 
+            if (!d.equals(expected))
+                errln( "FAIL: Expected " + expected);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone061() {
+        Date date;
+        DateFormat formatter;
+        date = new Date(859248000000l);
+        logln("Date 1997/3/25 00:00 GMT: " + date);
+        formatter = new SimpleDateFormat("dd-MMM-yyyyy HH:mm", Locale.UK);
+        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
+        String temp = formatter.format(date);
+        logln("Formatted in GMT to: " + temp);
+        try {
+            Date tempDate = formatter.parse(temp);
+            logln("Parsed to: " + tempDate);
+            if (!tempDate.equals(date))
+                errln("FAIL: Expected " + date + " Got: " + tempDate);
+        } catch (Throwable t) {
+            System.out.println(t);
+        }
+    
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone146() {
+        TimeZone saveDefault = TimeZone.getDefault();
+    
+        //try {
+        TimeZone thedefault = TimeZone.getTimeZone("GMT");
+        TimeZone.setDefault(thedefault);
+        // java.util.Locale.setDefault(new java.util.Locale("ar", "", ""));
+    
+        // check to be sure... its GMT all right
+        TimeZone testdefault = TimeZone.getDefault();
+        String testtimezone = testdefault.getID();
+        if (testtimezone.equals("GMT"))
+            logln("Test timezone = " + testtimezone);
+        else
+            errln("Test timezone should be GMT, not " + testtimezone);
+    
+        // now try to use the default GMT time zone
+        GregorianCalendar greenwichcalendar = new GregorianCalendar(1997, 3, 4, 23, 0);
+        //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault());
+        //greenwichcalendar.set(1997, 3, 4, 23, 0);
+        // try anything to set hour to 23:00 !!!
+        greenwichcalendar.set(Calendar.HOUR_OF_DAY, 23);
+        // get time
+        Date greenwichdate = greenwichcalendar.getTime();
+        // format every way
+        String DATA[] = {
+                "simple format:  ", "04/04/97 23:00 GMT+00:00", 
+                "MM/dd/yy HH:mm zzz", "full format:    ", 
+                "Friday, April 4, 1997 11:00:00 o'clock PM GMT+00:00", 
+                "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a zzz", 
+                "long format:    ", "April 4, 1997 11:00:00 PM GMT+00:00", 
+                "MMMM d, yyyy h:mm:ss a z", "default format: ", 
+                "04-Apr-97 11:00:00 PM", "dd-MMM-yy h:mm:ss a", 
+                "short format:   ", "4/4/97 11:00 PM", 
+                "M/d/yy h:mm a"}; 
+        int DATA_length = DATA.length;
+    
+        for (int i = 0; i < DATA_length; i += 3) {
+            DateFormat fmt = new SimpleDateFormat(DATA[i + 2], Locale.ENGLISH);
+            fmt.setCalendar(greenwichcalendar);
+            String result = fmt.format(greenwichdate);
+            logln(DATA[i] + result);
+            if (!result.equals(DATA[i + 1]))
+                errln("FAIL: Expected " + DATA[i + 1] + ", got " + result);
+        }
+        //}
+        //finally {
+        TimeZone.setDefault(saveDefault);
+        //}
+    
+    }
+    
+    /**
+     * Test the formatting of dates in different locales.
+     */
+    public void TestLocaleDateFormat() {
+    
+        Date testDate = new Date(874306800000l); //Mon Sep 15 00:00:00 PDT 1997
+        DateFormat dfFrench = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRENCH);
+        DateFormat dfUS = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        //Set TimeZone = PDT
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        dfFrench.setTimeZone(tz);
+        dfUS.setTimeZone(tz);
+        String expectedFRENCH_JDK12 = "lundi 15 septembre 1997 00:00:00 \u00C9tats-Unis (Los Angeles)";
+        //String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        String expectedUS = "Monday, September 15, 1997 12:00:00 AM PT";
+        logln("Date set to : " + testDate);
+        String out = dfFrench.format(testDate);
+        logln("Date Formated with French Locale " + out);
+        //fix the jdk resources differences between jdk 1.2 and jdk 1.3
+        /* our own data only has GMT-xxxx information here
+        String javaVersion = System.getProperty("java.version");
+        if (javaVersion.startsWith("1.2")) {
+            if (!out.equals(expectedFRENCH_JDK12))
+                errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+        } else {
+            if (!out.equals(expectedFRENCH))
+                errln("FAIL: Expected " + expectedFRENCH);
+        }
+        */
+        if (!out.equals(expectedFRENCH_JDK12))
+            errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+        out = dfUS.format(testDate);
+        logln("Date Formated with US Locale " + out);
+        if (!out.equals(expectedUS))
+            errln("FAIL: Expected " + expectedUS+" Got "+out);
+    }
+
+    /**
+     * Test the formatting of dates with the 'NONE' keyword.
+     */
+    public void TestDateFormatNone() {
+    
+        Date testDate = new Date(874306800000l); //Mon Sep 15 00:00:00 PDT 1997
+        DateFormat dfFrench = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.NONE, Locale.FRENCH);
+        //Set TimeZone = PDT
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        dfFrench.setTimeZone(tz);
+        String expectedFRENCH_JDK12 = "lundi 15 septembre 1997";
+        //String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        logln("Date set to : " + testDate);
+        String out = dfFrench.format(testDate);
+        logln("Date Formated with French Locale " + out);
+        if (!out.equals(expectedFRENCH_JDK12))
+            errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+    }
+
+
+    /**
+     * Test DateFormat(Calendar) API
+     */
+    public void TestDateFormatCalendar() {
+        DateFormat date=null, time=null, full=null;
+        Calendar cal=null;
+        ParsePosition pos = new ParsePosition(0);
+        String str;
+        Date when;
+
+        /* Create a formatter for date fields. */
+        date = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        if (date == null) {
+            errln("FAIL: getDateInstance failed");
+            return;
+        }
+
+        /* Create a formatter for time fields. */
+        time = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US);
+        if (time == null) {
+            errln("FAIL: getTimeInstance failed");
+            return;
+        }
+
+        /* Create a full format for output */
+        full = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,
+                                              Locale.US);
+        if (full == null) {
+            errln("FAIL: getInstance failed");
+            return;
+        }
+
+        /* Create a calendar */
+        cal = Calendar.getInstance(Locale.US);
+        if (cal == null) {
+            errln("FAIL: Calendar.getInstance failed");
+            return;
+        }
+
+        /* Parse the date */
+        cal.clear();
+        str = "4/5/2001";
+        pos.setIndex(0);
+        date.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(4/5/2001) failed at " +
+                  pos.getIndex());
+            return;
+        }
+
+        /* Parse the time */
+        str = "5:45 PM";
+        pos.setIndex(0);
+        time.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(17:45) failed at " +
+                  pos.getIndex());
+            return;
+        }
+    
+        /* Check result */
+        when = cal.getTime();
+        str = full.format(when);
+        // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000
+        if (when.getTime() == 986517900000.0) {
+            logln("Ok: Parsed result: " + str);
+        } else {
+            errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM");
+        }
+    }
+
+    /**
+     * Test DateFormat's parsing of space characters.  See jitterbug 1916.
+     */
+    public void TestSpaceParsing() {
+
+        String DATA[] = {
+            "yyyy MM dd",
+
+            // pattern, input, expected output (in quotes)
+            "MMMM d yy", " 04 05 06",  null, // MMMM wants Apr/April
+            null,        "04 05 06",   null,
+            "MM d yy",   " 04 05 06",  "2006 04 05",
+            null,        "04 05 06",   "2006 04 05",
+            "MMMM d yy", " Apr 05 06", "2006 04 05",
+            null,        "Apr 05 06",  "2006 04 05",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    /**
+     * Test handling of "HHmmss" pattern.
+     */
+    public void TestExactCountFormat() {
+        String DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            // pattern, input, expected parse or null if expect parse failure
+            "HHmmss", "123456", "1970 01 01 12:34:56",
+            null,     "12345",  "1970 01 01 01:23:45",
+            null,     "1234",   null,
+            null,     "00-05",  null,
+            null,     "12-34",  null,
+            null,     "00+05",  null,
+            "ahhmm",  "PM730",  "1970 01 01 19:30:00",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    /**
+     * Test handling of white space.
+     */
+    public void TestWhiteSpaceParsing() {
+        String DATA[] = {
+            "yyyy MM dd",
+
+            // pattern, input, expected parse or null if expect parse failure
+
+            // Pattern space run should parse input text space run
+            "MM   d yy",   " 04 01 03",    "2003 04 01",
+            null,          " 04  01   03 ", "2003 04 01",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    public void TestInvalidPattern() {
+        Exception e = null;
+        SimpleDateFormat f = null;
+        String out = null;
+        try {
+            f = new SimpleDateFormat("Yesterday");
+            out = f.format(new Date(0));
+        } catch (IllegalArgumentException e1) {
+            e = e1;
+        }
+        if (e != null) {
+            logln("Ok: Received " + e.getMessage());
+        } else {
+            errln("FAIL: Expected exception, got " + f.toPattern() +
+                  "; " + out);
+        }
+    }
+
+    public void TestGreekMay() {
+        Date date = new Date(-9896080848000L);
+        SimpleDateFormat fmt = new SimpleDateFormat("EEEE, dd MMMM yyyy h:mm:ss a",
+                             new Locale("el", "", ""));
+        String str = fmt.format(date);
+        ParsePosition pos = new ParsePosition(0);
+        Date d2 = fmt.parse(str, pos);
+        if (!date.equals(d2)) {
+            errln("FAIL: unable to parse strings where case-folding changes length");
+        }
+    }
+
+    public void testErrorChecking() {
+        try {
+            DateFormat.getDateTimeInstance(-1, -1, Locale.US);
+            errln("Expected exception for getDateTimeInstance(-1, -1, Locale)");
+        }
+        catch(IllegalArgumentException e) {
+            logln("one ok");
+        }
+        catch(Exception e) {
+            warnln("Expected IllegalArgumentException, got: " + e);
+        }
+        
+        try {
+            DateFormat df = new SimpleDateFormat("aabbccc");
+            df.format(new Date());
+            errln("Expected exception for format with bad pattern");
+        }
+        catch(IllegalArgumentException ex) {
+            logln("two ok");
+        }
+        catch(Exception e) {
+            warnln("Expected IllegalArgumentException, got: " + e);
+        }
+        
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yy"); // opposite of text
+            fmt.set2DigitYearStart(getDate(2003, Calendar.DECEMBER, 25));
+            String text = "12/25/03";
+            Calendar xcal = new GregorianCalendar();
+            xcal.setLenient(false);
+            ParsePosition pp = new ParsePosition(0);
+            fmt.parse(text, xcal, pp); // should get parse error on second field, not lenient
+            if (pp.getErrorIndex() == -1) {
+                errln("Expected parse error");
+            } else {
+                logln("three ok");
+            }
+        }
+    }
+
+    public void TestChineseDateFormatLocalizedPatternChars() {
+        // jb 4904
+        // make sure we can display localized versions of the chars used in the default
+        // chinese date format patterns
+        Calendar chineseCalendar = new ChineseCalendar();
+        chineseCalendar.setTimeInMillis((new Date()).getTime());
+        SimpleDateFormat longChineseDateFormat = 
+            (SimpleDateFormat)chineseCalendar.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, Locale.CHINA );
+        DateFormatSymbols dfs = new ChineseDateFormatSymbols( chineseCalendar, Locale.CHINA );
+        longChineseDateFormat.setDateFormatSymbols( dfs );
+        // This next line throws the exception
+        try {
+            longChineseDateFormat.toLocalizedPattern();
+        }
+        catch (Exception e) {
+            errln("could not localized pattern: " + e.getMessage());
+        }
+    }
+
+    public void TestCoverage() {
+        Date now = new Date();
+        Calendar cal = new GregorianCalendar();
+        DateFormat f = DateFormat.getTimeInstance();
+        logln("time: " + f.format(now));
+
+        int hash = f.hashCode(); // sigh, everyone overrides this
+        
+        f = DateFormat.getInstance(cal);
+        if(hash == f.hashCode()){
+            errln("FAIL: hashCode equal for inequal objects");
+        }
+        logln("time again: " + f.format(now));
+
+        f = DateFormat.getTimeInstance(cal, DateFormat.FULL);
+        logln("time yet again: " + f.format(now));
+
+        f = DateFormat.getDateInstance();
+        logln("time yet again: " + f.format(now));
+
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"de_DE");
+        DateFormatSymbols sym = new DateFormatSymbols(rb, Locale.GERMANY);
+        DateFormatSymbols sym2 = (DateFormatSymbols)sym.clone();
+        if (sym.hashCode() != sym2.hashCode()) {
+            errln("fail, date format symbols hashcode not equal");
+        }
+        if (!sym.equals(sym2)) {
+            errln("fail, date format symbols not equal");
+        }
+        
+        Locale foo = new Locale("fu", "FU", "BAR");
+        rb = null;
+        sym = new DateFormatSymbols(GregorianCalendar.class, foo);
+        sym.equals(null);
+        
+        sym = new ChineseDateFormatSymbols();
+        sym = new ChineseDateFormatSymbols(new ChineseCalendar(), foo);
+        // cover new ChineseDateFormatSymbols(Calendar, ULocale)
+        ChineseCalendar ccal = new ChineseCalendar();
+        sym = new ChineseDateFormatSymbols(ccal, ULocale.CHINA); //gclsh1 add
+        
+        StringBuffer buf = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        
+        f.format((Object)cal, buf, pos);
+        f.format((Object)now, buf, pos);
+        f.format((Object)new Long(now.getTime()), buf, pos);
+        try {
+            f.format((Object)"Howdy", buf, pos);
+        }
+        catch (Exception e) {
+        }
+
+        NumberFormat nf = f.getNumberFormat();
+        f.setNumberFormat(nf);
+        
+        boolean lenient = f.isLenient();
+        f.setLenient(lenient);
+        
+        ULocale uloc = f.getLocale(ULocale.ACTUAL_LOCALE);
+        
+        DateFormat sdfmt = new SimpleDateFormat();
+        
+        if (f.hashCode() != f.hashCode()) {
+            errln("hashCode is not stable");
+        }
+        if (!f.equals(f)) {
+            errln("f != f");
+        }
+        if (f.equals(null)) {
+            errln("f should not equal null");
+        }
+        if (f.equals(sdfmt)) {
+            errln("A time instance shouldn't equal a default date format");
+        }
+        
+        Date d;
+        {
+            ChineseDateFormat fmt = new ChineseDateFormat("yymm", Locale.US);
+            try {
+                fmt.parse("2"); // fewer symbols than required 2
+                errln("whoops");
+            }
+            catch (ParseException e) {
+                logln("ok");
+            }
+
+            try {
+                fmt.parse("2255"); // should succeed with obeycount
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("whoops");
+            }
+
+            try {
+                fmt.parse("ni hao"); // not a number, should fail
+                errln("whoops ni hao");
+            }
+            catch (ParseException e) {
+                logln("ok ni hao");
+            }
+        }
+        {
+            Calendar xcal = new GregorianCalendar();
+            xcal.set(Calendar.HOUR_OF_DAY, 0);
+            DateFormat fmt = new SimpleDateFormat("k");
+            StringBuffer xbuf = new StringBuffer();
+            FieldPosition fpos = new FieldPosition(Calendar.HOUR_OF_DAY);
+            fmt.format(xcal, xbuf, fpos);
+            try {
+                fmt.parse(xbuf.toString());
+                logln("ok");
+                
+                xbuf.setLength(0);
+                xcal.set(Calendar.HOUR_OF_DAY, 25);
+                fmt.format(xcal, xbuf, fpos);
+                Date d2 = fmt.parse(xbuf.toString());
+                logln("ok again - d2=" + d2);
+            }
+            catch (ParseException e) {
+                errln("whoops");
+            }
+        }
+        
+        {
+            // cover gmt+hh:mm
+            DateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            try {
+                d = fmt.parse("07/10/53 GMT+10:00");
+                logln("ok : d = " + d);
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+10:00 for pattern MM/dd/yy z");
+            }
+            
+            // cover invalid separator after GMT
+            {
+                ParsePosition pp = new ParsePosition(0);
+                String text = "07/10/53 GMT=10:00";
+                d = fmt.parse(text, pp);
+                if(pp.getIndex()!=12){
+                    errln("Parse of 07/10/53 GMT=10:00 for pattern MM/dd/yy z");
+                }
+                logln("Parsing of the text stopped at pos: " + pp.getIndex() + " as expected and length is "+text.length());
+            }
+            
+            // cover bad text after GMT+.
+            try {
+                fmt.parse("07/10/53 GMT+blecch");
+                logln("ok GMT+blecch");
+            }
+            catch (ParseException e) {
+                errln("whoops GMT+blecch");
+            }
+            
+            // cover bad text after GMT+hh:.
+            try {
+                fmt.parse("07/10/53 GMT+07:blecch");
+                logln("ok GMT+xx:blecch");
+            }
+            catch (ParseException e) {
+                errln("whoops GMT+xx:blecch");
+            }
+            
+            // cover no ':' GMT+#, # < 24 (hh)
+            try {
+                d = fmt.parse("07/10/53 GMT+07");
+                logln("ok GMT+07");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07 for pattern MM/dd/yy z");
+            }
+            
+            // cover no ':' GMT+#, # > 24 (hhmm)
+            try {
+                d = fmt.parse("07/10/53 GMT+0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+0730 for pattern MM/dd/yy z");
+            }
+            
+            // cover GMT+#, # with second field
+            try {
+                d = fmt.parse("07/10/53 GMT+07:30:15");
+                logln("ok GMT+07:30:15");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07:30:15 for pattern MM/dd/yy z");
+            }
+
+            // cover no ':' GMT+#, # with second field, no leading zero
+            try {
+                d = fmt.parse("07/10/53 GMT+73015");
+                logln("ok GMT+73015");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+73015 for pattern MM/dd/yy z");
+            }
+
+            // cover no ':' GMT+#, # with 1 digit second field
+            try {
+                d = fmt.parse("07/10/53 GMT+07300");
+                logln("ok GMT+07300");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07300 for pattern MM/dd/yy z");
+            }
+            
+            // cover raw digits with no leading sign (bad RFC822) 
+            try {
+                d = fmt.parse("07/10/53 07");
+                errln("Parse of 07/10/53 07 for pattern MM/dd/yy z passed!");
+            }
+            catch (ParseException e) {
+                logln("ok");
+            }
+            
+            // cover raw digits (RFC822) 
+            try {
+                d = fmt.parse("07/10/53 +07");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 +07 for pattern MM/dd/yy z failed");
+            }
+            
+            // cover raw digits (RFC822) 
+            try {
+                d = fmt.parse("07/10/53 -0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 -00730 for pattern MM/dd/yy z failed");
+            }
+            
+            // cover raw digits (RFC822) in DST
+            try {
+                fmt.setTimeZone(TimeZone.getTimeZone("PDT"));
+                d = fmt.parse("07/10/53 -0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 -0730 for pattern MM/dd/yy z failed");
+            }
+        }
+        
+        // TODO: revisit toLocalizedPattern
+        if (false) {
+            SimpleDateFormat fmt = new SimpleDateFormat("aabbcc");
+            try {
+                String pat = fmt.toLocalizedPattern();
+                errln("whoops, shouldn't have been able to localize aabbcc");
+            }
+            catch (IllegalArgumentException e) {
+                logln("aabbcc localize ok");
+            }
+        }
+
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("'aabbcc");
+            try {
+                fmt.toLocalizedPattern();
+                errln("whoops, localize unclosed quote");
+            }
+            catch (IllegalArgumentException e) {
+                logln("localize unclosed quote ok");
+            }
+        }
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            String text = "08/15/58 DBDY"; // bogus time zone
+            try {
+                fmt.parse(text);
+                errln("recognized bogus time zone DBDY");
+            }
+            catch (ParseException e) {
+                logln("time zone ex ok");
+            }
+        }
+        
+        {
+            // force fallback to default timezone when fmt timezone 
+            // is not named
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            // force fallback to default time zone, still fails
+            fmt.setTimeZone(TimeZone.getTimeZone("GMT+0147")); // not in equivalency group
+            String text = "08/15/58 DBDY";
+            try {
+                fmt.parse(text);
+                errln("Parse of 07/10/53 DBDY for pattern MM/dd/yy z passed");
+            }
+            catch (ParseException e) {
+                logln("time zone ex2 ok");
+            }
+            
+            // force success on fallback
+            text = "08/15/58 " + TimeZone.getDefault().getID();
+            try {
+                fmt.parse(text);
+                logln("found default tz");
+            }
+            catch (ParseException e) {
+                errln("whoops, got parse exception");
+            }
+        }
+        
+        {
+            // force fallback to symbols list of timezones when neither 
+            // fmt and default timezone is named
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            TimeZone oldtz = TimeZone.getDefault();
+            TimeZone newtz = TimeZone.getTimeZone("GMT+0137"); // nonstandard tz
+            fmt.setTimeZone(newtz);
+            TimeZone.setDefault(newtz); // todo: fix security issue
+
+            // fallback to symbol list, but fail
+            String text = "08/15/58 DBDY"; // try to parse the bogus time zone
+            try {
+                fmt.parse(text);
+                errln("Parse of 07/10/53 DBDY for pattern MM/dd/yy z passed");
+            }
+            catch (ParseException e) {
+                logln("time zone ex3 ok");
+            }
+            catch (Exception e) {
+                // hmmm... this shouldn't happen.  don't want to exit this
+                // fn with timezone improperly set, so just in case
+                TimeZone.setDefault(oldtz);
+                throw new IllegalStateException(e.getMessage());
+            }
+
+            // create DFS that recognizes our bogus time zone, sortof
+            DateFormatSymbols xsym = new DateFormatSymbols();
+            String[][] tzids = xsym.getZoneStrings();
+            if (tzids.length > 0) { // let's hope!
+                tzids[0][1] = "DBDY"; // change a local name
+                logln("replaced '" + tzids[0][0] + "' with DBDY");
+
+                xsym.setZoneStrings(tzids);
+                fmt.setDateFormatSymbols(xsym);
+
+                try {
+                    fmt.parse(text);
+                    logln("we parsed DBDY (as GMT, but still...)");
+                }
+                catch (ParseException e) {
+                    errln("hey, still didn't recognize DBDY");
+                }
+                finally {
+                    TimeZone.setDefault(oldtz);
+                }
+            }
+        }
+
+        {
+            //cover getAvailableULocales
+            final ULocale[] locales = DateFormat.getAvailableULocales();
+            long count = locales.length;
+            if (count==0) {
+                errln(" got a empty list for getAvailableULocales");
+            }else{
+                logln("" + count + " available ulocales");            
+            }
+        }
+        
+        {
+            //cover DateFormatSymbols.getDateFormatBundle
+            cal = new GregorianCalendar();
+            Locale loc = Locale.getDefault();
+            DateFormatSymbols mysym = new DateFormatSymbols(cal, loc);
+            if (mysym == null) 
+                errln("FAIL: constructs DateFormatSymbols with calendar and locale failed");
+            
+            uloc = ULocale.getDefault();
+            // These APIs are obsolete and return null
+            ResourceBundle resb = DateFormatSymbols.getDateFormatBundle(cal, loc);
+            ResourceBundle resb2 = DateFormatSymbols.getDateFormatBundle(cal, uloc);
+            ResourceBundle resb3 = DateFormatSymbols.getDateFormatBundle(cal.getClass(), loc);
+            ResourceBundle resb4 = DateFormatSymbols.getDateFormatBundle(cal.getClass(), uloc);
+
+            if (resb != null) {
+                logln("resb is not null");
+            }
+            if (resb2 != null) {
+                logln("resb2 is not null");
+            }
+            if (resb3 != null) {
+                logln("resb3 is not null");
+            }
+            if (resb4 != null) {
+                logln("resb4 is not null");
+            }
+        }
+
+        {
+            //cover DateFormatSymbols.getInstance
+            DateFormatSymbols datsym1 = DateFormatSymbols.getInstance();
+            DateFormatSymbols datsym2 = new DateFormatSymbols();
+            if (!datsym1.equals(datsym2)) {
+                errln("FAIL: DateFormatSymbols returned by getInstance()" +
+                        "does not match new DateFormatSymbols().");
+            }
+            datsym1 = DateFormatSymbols.getInstance(Locale.JAPAN);
+            datsym2 = DateFormatSymbols.getInstance(ULocale.JAPAN);
+            if (!datsym1.equals(datsym2)) {
+                errln("FAIL: DateFormatSymbols returned by getInstance(Locale.JAPAN)" +
+                        "does not match the one returned by getInstance(ULocale.JAPAN).");
+            }
+        }
+        {
+            //cover DateFormatSymbols.getAvailableLocales/getAvailableULocales
+            Locale[] allLocales = DateFormatSymbols.getAvailableLocales();
+            if (allLocales.length == 0) {
+                errln("FAIL: Got a empty list for DateFormatSymbols.getAvailableLocales");
+            } else {
+                logln("PASS: " + allLocales.length +
+                        " available locales returned by DateFormatSymbols.getAvailableLocales");            
+            }
+
+            ULocale[] allULocales = DateFormatSymbols.getAvailableULocales();
+            if (allULocales.length == 0) {
+                errln("FAIL: Got a empty list for DateFormatSymbols.getAvailableLocales");
+            } else {
+                logln("PASS: " + allULocales.length +
+                        " available locales returned by DateFormatSymbols.getAvailableULocales");            
+            }
+        }
+    }
+
+    public void TestStandAloneMonths()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "yyyy LLLL dd H:mm:ss", "fp", "2004 03 10 16:36:31", "2004 March 10 16:36:31", "2004 03 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "fp", "2004 03 10 16:36:31", "2004 Mar 10 16:36:31",   "2004 03 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "F",  "2004 03 10 16:36:31", "2004 March 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "pf", "2004 Mar 10 16:36:31", "2004 03 10 16:36:31", "2004 Mar 10 16:36:31",
+            
+            "LLLL", "fp", "1970 01 01 0:00:00", "January",   "1970 01 01 0:00:00",
+            "LLLL", "fp", "1970 02 01 0:00:00", "February",  "1970 02 01 0:00:00",
+            "LLLL", "fp", "1970 03 01 0:00:00", "March",     "1970 03 01 0:00:00",
+            "LLLL", "fp", "1970 04 01 0:00:00", "April",     "1970 04 01 0:00:00",
+            "LLLL", "fp", "1970 05 01 0:00:00", "May",       "1970 05 01 0:00:00",
+            "LLLL", "fp", "1970 06 01 0:00:00", "June",      "1970 06 01 0:00:00",
+            "LLLL", "fp", "1970 07 01 0:00:00", "July",      "1970 07 01 0:00:00",
+            "LLLL", "fp", "1970 08 01 0:00:00", "August",    "1970 08 01 0:00:00",
+            "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00",
+            "LLLL", "fp", "1970 10 01 0:00:00", "October",   "1970 10 01 0:00:00",
+            "LLLL", "fp", "1970 11 01 0:00:00", "November",  "1970 11 01 0:00:00",
+            "LLLL", "fp", "1970 12 01 0:00:00", "December",  "1970 12 01 0:00:00",
+            
+            "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00",
+            "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00",
+            "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00",
+            "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00",
+            "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00",
+            "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00",
+            "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00",
+            "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00",
+            "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00",
+            "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00",
+            "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00",
+            "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00",
+        };
+        
+        String CS_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "yyyy LLLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", "2004 04 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "fp", "2004 04 10 16:36:31", "2004 4. 10 16:36:31",   "2004 04 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "F",  "2004 04 10 16:36:31", "2004 duben 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "F",  "2004 04 10 16:36:31", "2004 dubna 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "pf", "2004 duben 10 16:36:31", "2004 04 10 16:36:31", "2004 duben 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "pf", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31",
+            
+            "LLLL", "fp", "1970 01 01 0:00:00", "leden",               "1970 01 01 0:00:00",
+            "LLLL", "fp", "1970 02 01 0:00:00", "\u00FAnor",           "1970 02 01 0:00:00",
+            "LLLL", "fp", "1970 03 01 0:00:00", "b\u0159ezen",         "1970 03 01 0:00:00",
+            "LLLL", "fp", "1970 04 01 0:00:00", "duben",               "1970 04 01 0:00:00",
+            "LLLL", "fp", "1970 05 01 0:00:00", "kv\u011Bten",         "1970 05 01 0:00:00",
+            "LLLL", "fp", "1970 06 01 0:00:00", "\u010Derven",         "1970 06 01 0:00:00",
+            "LLLL", "fp", "1970 07 01 0:00:00", "\u010Dervenec",       "1970 07 01 0:00:00",
+            "LLLL", "fp", "1970 08 01 0:00:00", "srpen",               "1970 08 01 0:00:00",
+            "LLLL", "fp", "1970 09 01 0:00:00", "z\u00E1\u0159\u00ED", "1970 09 01 0:00:00",
+            "LLLL", "fp", "1970 10 01 0:00:00", "\u0159\u00EDjen",     "1970 10 01 0:00:00",
+            "LLLL", "fp", "1970 11 01 0:00:00", "listopad",            "1970 11 01 0:00:00",
+            "LLLL", "fp", "1970 12 01 0:00:00", "prosinec",            "1970 12 01 0:00:00",
+
+            "LLL", "fp", "1970 01 01 0:00:00", "1.",  "1970 01 01 0:00:00",
+            "LLL", "fp", "1970 02 01 0:00:00", "2.",  "1970 02 01 0:00:00",
+            "LLL", "fp", "1970 03 01 0:00:00", "3.",  "1970 03 01 0:00:00",
+            "LLL", "fp", "1970 04 01 0:00:00", "4.",  "1970 04 01 0:00:00",
+            "LLL", "fp", "1970 05 01 0:00:00", "5.",  "1970 05 01 0:00:00",
+            "LLL", "fp", "1970 06 01 0:00:00", "6.",  "1970 06 01 0:00:00",
+            "LLL", "fp", "1970 07 01 0:00:00", "7.",  "1970 07 01 0:00:00",
+            "LLL", "fp", "1970 08 01 0:00:00", "8.",  "1970 08 01 0:00:00",
+            "LLL", "fp", "1970 09 01 0:00:00", "9.",  "1970 09 01 0:00:00",
+            "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00",
+            "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00",
+            "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00",
+        };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+        expect(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestStandAloneDays()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "cccc", "fp", "1970 01 04 0:00:00", "Sunday",    "1970 01 04 0:00:00",
+            "cccc", "fp", "1970 01 05 0:00:00", "Monday",    "1970 01 05 0:00:00",
+            "cccc", "fp", "1970 01 06 0:00:00", "Tuesday",   "1970 01 06 0:00:00",
+            "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00",
+            "cccc", "fp", "1970 01 01 0:00:00", "Thursday",  "1970 01 01 0:00:00",
+            "cccc", "fp", "1970 01 02 0:00:00", "Friday",    "1970 01 02 0:00:00",
+            "cccc", "fp", "1970 01 03 0:00:00", "Saturday",  "1970 01 03 0:00:00",
+            
+            "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00",
+            "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00",
+            "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00",
+            "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00",
+            "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00",
+            "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00",
+            "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00",
+        };
+            
+        String CS_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "cccc", "fp", "1970 01 04 0:00:00", "ned\u011Ble",       "1970 01 04 0:00:00",
+            "cccc", "fp", "1970 01 05 0:00:00", "pond\u011Bl\u00ED", "1970 01 05 0:00:00",
+            "cccc", "fp", "1970 01 06 0:00:00", "\u00FAter\u00FD",   "1970 01 06 0:00:00",
+            "cccc", "fp", "1970 01 07 0:00:00", "st\u0159eda",       "1970 01 07 0:00:00",
+            "cccc", "fp", "1970 01 01 0:00:00", "\u010Dtvrtek",      "1970 01 01 0:00:00",
+            "cccc", "fp", "1970 01 02 0:00:00", "p\u00E1tek",        "1970 01 02 0:00:00",
+            "cccc", "fp", "1970 01 03 0:00:00", "sobota",            "1970 01 03 0:00:00",
+            
+            "ccc", "fp", "1970 01 04 0:00:00", "ne",      "1970 01 04 0:00:00",
+            "ccc", "fp", "1970 01 05 0:00:00", "po",      "1970 01 05 0:00:00",
+            "ccc", "fp", "1970 01 06 0:00:00", "\u00FAt", "1970 01 06 0:00:00",
+            "ccc", "fp", "1970 01 07 0:00:00", "st",      "1970 01 07 0:00:00",
+            "ccc", "fp", "1970 01 01 0:00:00", "\u010Dt", "1970 01 01 0:00:00",
+            "ccc", "fp", "1970 01 02 0:00:00", "p\u00E1", "1970 01 02 0:00:00",
+            "ccc", "fp", "1970 01 03 0:00:00", "so",      "1970 01 03 0:00:00",
+        };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+        expect(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestNarrowNames()
+    {
+        String EN_DATA[] = {
+                "yyyy MM dd HH:mm:ss",
+
+                "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31",
+                "yyyy LLLLL dd H:mm:ss",  "2004 03 10 16:36:31", "2004 M 10 16:36:31",
+                
+                "MMMMM", "1970 01 01 0:00:00", "J",
+                "MMMMM", "1970 02 01 0:00:00", "F",
+                "MMMMM", "1970 03 01 0:00:00", "M",
+                "MMMMM", "1970 04 01 0:00:00", "A",
+                "MMMMM", "1970 05 01 0:00:00", "M",
+                "MMMMM", "1970 06 01 0:00:00", "J",
+                "MMMMM", "1970 07 01 0:00:00", "J",
+                "MMMMM", "1970 08 01 0:00:00", "A",
+                "MMMMM", "1970 09 01 0:00:00", "S",
+                "MMMMM", "1970 10 01 0:00:00", "O",
+                "MMMMM", "1970 11 01 0:00:00", "N",
+                "MMMMM", "1970 12 01 0:00:00", "D",
+                
+                "LLLLL", "1970 01 01 0:00:00", "J",
+                "LLLLL", "1970 02 01 0:00:00", "F",
+                "LLLLL", "1970 03 01 0:00:00", "M",
+                "LLLLL", "1970 04 01 0:00:00", "A",
+                "LLLLL", "1970 05 01 0:00:00", "M",
+                "LLLLL", "1970 06 01 0:00:00", "J",
+                "LLLLL", "1970 07 01 0:00:00", "J",
+                "LLLLL", "1970 08 01 0:00:00", "A",
+                "LLLLL", "1970 09 01 0:00:00", "S",
+                "LLLLL", "1970 10 01 0:00:00", "O",
+                "LLLLL", "1970 11 01 0:00:00", "N",
+                "LLLLL", "1970 12 01 0:00:00", "D",
+
+                "EEEEE", "1970 01 04 0:00:00", "S",
+                "EEEEE", "1970 01 05 0:00:00", "M",
+                "EEEEE", "1970 01 06 0:00:00", "T",
+                "EEEEE", "1970 01 07 0:00:00", "W",
+                "EEEEE", "1970 01 01 0:00:00", "T",
+                "EEEEE", "1970 01 02 0:00:00", "F",
+                "EEEEE", "1970 01 03 0:00:00", "S",
+                
+                "ccccc", "1970 01 04 0:00:00", "S",
+                "ccccc", "1970 01 05 0:00:00", "M",
+                "ccccc", "1970 01 06 0:00:00", "T",
+                "ccccc", "1970 01 07 0:00:00", "W",
+                "ccccc", "1970 01 01 0:00:00", "T",
+                "ccccc", "1970 01 02 0:00:00", "F",
+                "ccccc", "1970 01 03 0:00:00", "S",
+            };
+            
+            String CS_DATA[] = {
+                "yyyy MM dd HH:mm:ss",
+
+                "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31",
+                "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31",
+                
+                "MMMMM", "1970 01 01 0:00:00", "l",
+                "MMMMM", "1970 02 01 0:00:00", "\u00FA",
+                "MMMMM", "1970 03 01 0:00:00", "b",
+                "MMMMM", "1970 04 01 0:00:00", "d",
+                "MMMMM", "1970 05 01 0:00:00", "k",
+                "MMMMM", "1970 06 01 0:00:00", "\u010D",
+                "MMMMM", "1970 07 01 0:00:00", "\u010D",
+                "MMMMM", "1970 08 01 0:00:00", "s",
+                "MMMMM", "1970 09 01 0:00:00", "z",
+                "MMMMM", "1970 10 01 0:00:00", "\u0159",
+                "MMMMM", "1970 11 01 0:00:00", "l",
+                "MMMMM", "1970 12 01 0:00:00", "p",
+                
+                "LLLLL", "1970 01 01 0:00:00", "l",
+                "LLLLL", "1970 02 01 0:00:00", "\u00FA",
+                "LLLLL", "1970 03 01 0:00:00", "b",
+                "LLLLL", "1970 04 01 0:00:00", "d",
+                "LLLLL", "1970 05 01 0:00:00", "k",
+                "LLLLL", "1970 06 01 0:00:00", "\u010D",
+                "LLLLL", "1970 07 01 0:00:00", "\u010D",
+                "LLLLL", "1970 08 01 0:00:00", "s",
+                "LLLLL", "1970 09 01 0:00:00", "z",
+                "LLLLL", "1970 10 01 0:00:00", "\u0159",
+                "LLLLL", "1970 11 01 0:00:00", "l",
+                "LLLLL", "1970 12 01 0:00:00", "p",
+
+                "EEEEE", "1970 01 04 0:00:00", "N",
+                "EEEEE", "1970 01 05 0:00:00", "P",
+                "EEEEE", "1970 01 06 0:00:00", "\u00DA",
+                "EEEEE", "1970 01 07 0:00:00", "S",
+                "EEEEE", "1970 01 01 0:00:00", "\u010C",
+                "EEEEE", "1970 01 02 0:00:00", "P",
+                "EEEEE", "1970 01 03 0:00:00", "S",
+
+                "ccccc", "1970 01 04 0:00:00", "N",
+                "ccccc", "1970 01 05 0:00:00", "P",
+                "ccccc", "1970 01 06 0:00:00", "\u00DA",
+                "ccccc", "1970 01 07 0:00:00", "S",
+                "ccccc", "1970 01 01 0:00:00", "\u010C",
+                "ccccc", "1970 01 02 0:00:00", "P",
+                "ccccc", "1970 01 03 0:00:00", "S",
+            };
+            
+            expectFormat(EN_DATA, new Locale("en", "", ""));
+            expectFormat(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestEras()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd",
+
+            "MMMM dd yyyy G",    "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GG",   "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GGG",  "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17",
+
+            "MMMM dd yyyy G",    "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GG",   "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GGG",  "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17",
+       };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+    }
+/*    
+    public void TestQuarters()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd",
+
+            "Q",    "fp", "1970 01 01", "1",           "1970 01 01",
+            "QQ",   "fp", "1970 04 01", "02",          "1970 04 01",
+            "QQQ",  "fp", "1970 07 01", "Q3",          "1970 07 01",
+            "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01",
+
+            "q",    "fp", "1970 01 01", "1",           "1970 01 01",
+            "qq",   "fp", "1970 04 01", "02",          "1970 04 01",
+            "qqq",  "fp", "1970 07 01", "Q3",          "1970 07 01",
+            "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01",
+       };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+    }
+*/    
+    /**
+     * Test parsing.  Input is an array that starts with the following
+     * header:
+     *
+     * [0]   = pattern string to parse [i+2] with
+     *
+     * followed by test cases, each of which is 3 array elements:
+     *
+     * [i]   = pattern, or null to reuse prior pattern
+     * [i+1] = input string
+     * [i+2] = expected parse result (parsed with pattern [0])
+     *
+     * If expect parse failure, then [i+2] should be null.
+     */
+    void expectParse(String[] data, Locale loc) {
+        Date FAIL = null;
+        String FAIL_STR = "parse failure";
+        int i = 0;
+
+        SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+        SimpleDateFormat ref = new SimpleDateFormat(data[i++], loc);
+        SimpleDateFormat gotfmt = new SimpleDateFormat("G yyyy MM dd HH:mm:ss z", loc);
+
+        String currentPat = null;
+        while (i<data.length) {
+            String pattern  = data[i++];
+            String input    = data[i++];
+            String expected = data[i++];
+
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+            String gotstr = FAIL_STR;
+            Date got;
+            try {
+                got = fmt.parse(input);
+                gotstr = gotfmt.format(got);
+            } catch (ParseException e1) {
+                got = FAIL;
+            }
+
+            Date exp = FAIL;
+            String expstr = FAIL_STR;
+            if (expected != null) {
+                expstr = expected;
+                try {
+                    exp = ref.parse(expstr);
+                } catch (ParseException e2) {
+                    errln("FAIL: Internal test error");
+                }
+            }
+
+            if (got == exp || (got != null && got.equals(exp))) {
+                logln("Ok: " + input + " x " +
+                      currentPat + " => " + gotstr);                
+            } else {
+                errln("FAIL: " + input + " x " +
+                      currentPat + " => " + gotstr + ", expected " +
+                      expstr);
+            }
+        }    
+    }
+    
+    /**
+     * Test formatting.  Input is an array of String that starts
+     * with a single 'header' element
+     *
+     * [0]   = reference dateformat pattern string (ref)
+     *
+     * followed by test cases, each of which is 4 or 5 elements:
+     *
+     * [i]   = test dateformat pattern string (test), or null to reuse prior test pattern
+     * [i+1] = data string A
+     * [i+2] = data string B
+     *
+     * Formats a date, checks the result.
+     *
+     * Examples:
+     * "y/M/d H:mm:ss.SSS", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567"
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     */
+    void expectFormat(String[] data, Locale loc)
+    {
+        int i = 1;
+        String currentPat = null;
+        SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+
+        while (i<data.length) {
+            SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+            String pattern  = data[i++];
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+
+            String datestr = data[i++];
+            String string = data[i++];
+            Date date = null;
+            
+            try {
+                date = ref.parse(datestr);
+            } catch (ParseException e) {
+                errln("FAIL: Internal test error; can't parse " + datestr);
+                continue;
+            }
+            
+            assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                         string,
+                         fmt.format(date));
+        }
+    }
+
+    /**
+     * Test formatting and parsing.  Input is an array of String that starts
+     * with a single 'header' element
+     *
+     * [0]   = reference dateformat pattern string (ref)
+     *
+     * followed by test cases, each of which is 4 or 5 elements:
+     *
+     * [i]   = test dateformat pattern string (test), or null to reuse prior test pattern
+     * [i+1] = control string, either "fp", "pf", or "F".
+     * [i+2] = data string A
+     * [i+3] = data string B
+     * [i+4] = data string C (not present for 'F' control string)
+     *
+     * Note: the number of data strings depends on the control string.
+     *
+     * fp formats a date, checks the result, then parses the result and checks against a (possibly different) date
+     * pf parses a string, checks the result, then formats the result and checks against a (possibly different) string
+     * F is a shorthand for fp when the second date is the same as the first
+     * P is a shorthand for pf when the second string is the same as the first
+     *
+     * Examples:
+     * (fp) "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.56", "2004 03 10 16:36:31.560",
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     * -- test.parse B, get t1
+     * -- ref.parse C, get t2
+     * -- compare t1 and t2, fail if not equal
+     *
+     * (F) "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567"
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     * -- test.parse B, get t1
+     * -- compare t1 and t0, fail if not equal
+     *
+     * (pf) "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5670",
+     * -- test.parse A, get t0
+     * -- ref.parse B, get t1
+     * -- compare t0 to t1, fail if not equal
+     * -- test.format t1, get r0
+     * -- compare r0 and C, fail if not equal
+     *
+     * (P) "y/M/d H:mm:ss.SSSS", "P", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567"",
+     * -- test.parse A, get t0
+     * -- ref.parse B, get t1
+     * -- compare t0 to t1, fail if not equal
+     * -- test.format t1, get r0
+     * -- compare r0 and A, fail if not equal
+     */
+    void expect(String[] data, Locale loc) {
+        int i = 1;
+        SimpleDateFormat univ = new SimpleDateFormat("EE G yyyy MM dd HH:mm:ss.SSS zzz", loc);
+        String currentPat = null;
+        SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+
+        while (i<data.length) {
+            SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+            String pattern  = data[i++];
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+
+            String control = data[i++];
+
+            if (control.equals("fp") || control.equals("F")) {
+                // 'f'
+                String datestr = data[i++];
+                String string = data[i++];
+                String datestr2 = datestr;
+                if (control.length() == 2) {
+                    datestr2 = data[i++];
+                }
+                Date date = null;
+                try {
+                    date = ref.parse(datestr);
+                } catch (ParseException e) {
+                    errln("FAIL: Internal test error; can't parse " + datestr);
+                    continue;
+                }
+                assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                             string,
+                             fmt.format(date));
+                // 'p'
+                if (!datestr2.equals(datestr)) {
+                    try {
+                        date = ref.parse(datestr2);
+                    } catch (ParseException e2) {
+                        errln("FAIL: Internal test error; can't parse " + datestr2);
+                        continue;
+                    }
+                }
+                try {
+                    Date parsedate = fmt.parse(string);
+                    assertEquals("\"" + currentPat + "\".parse(" + string + ")",
+                                 univ.format(date),
+                                 univ.format(parsedate));
+                } catch (ParseException e3) {
+                    errln("FAIL: \"" + currentPat + "\".parse(" + string + ") => " +
+                          e3);
+                    continue;
+                }
+            }
+            else if (control.equals("pf") || control.equals("P")) {
+                // 'p'
+                String string = data[i++];
+                String datestr = data[i++];
+                String string2 = string;
+                if (control.length() == 2) {
+                    string2 = data[i++];
+                }
+
+                Date date = null;
+                try {
+                    date = ref.parse(datestr);
+                } catch (ParseException e) {
+                    errln("FAIL: Internal test error; can't parse " + datestr);
+                    continue;
+                }
+                try {
+                    Date parsedate = fmt.parse(string);
+                    assertEquals("\"" + currentPat + "\".parse(" + string + ")",
+                                 univ.format(date),
+                                 univ.format(parsedate));
+                } catch (ParseException e2) {
+                    errln("FAIL: \"" + currentPat + "\".parse(" + string + ") => " +
+                          e2);
+                    continue;
+                }
+                // 'f'
+                assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                             string2,
+                             fmt.format(date));
+            }
+            else {
+                errln("FAIL: Invalid control string " + control);
+                return;
+            }
+        }
+    }
+    /*
+    public void TestJB4757(){
+        DateFormat dfmt = DateFormat.getDateInstance(DateFormat.FULL, ULocale.ROOT);
+    }
+    */
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * Test case for formatToCharacterIterator
+     */
+    public void TestFormatToCharacterIterator() {
+        // Generate pattern string including all pattern letters with various length
+        AttributedCharacterIterator acit;
+        final char SEPCHAR = '~';
+        String[] patterns = new String[5];
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < patterns.length; i++) {
+            sb.setLength(0);
+            for (int j = 0; j < PATTERN_CHARS.length(); j++) {
+                if (j != 0) {
+                    for (int k = 0; k <= i; k++) {
+                        sb.append(SEPCHAR);
+                    }
+                }
+                char letter = PATTERN_CHARS.charAt(j);
+                for (int k = 0; k <= i; k++) {
+                    sb.append(letter);
+                }
+            }
+            patterns[i] = sb.toString();
+        }
+        if (isVerbose()) {
+            for (int i = 0; i < patterns.length; i++) {
+                logln("patterns[" + i + "] = " + patterns[i]);
+            }
+        }
+
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JULY, 16, 8, 20, 25);
+        cal.set(Calendar.MILLISECOND, 567);
+        final Date d = cal.getTime();
+
+        // Test AttributedCharacterIterator returned by SimpleDateFormat
+        for (int i = 0; i < patterns.length; i++) {
+            SimpleDateFormat sdf = new SimpleDateFormat(patterns[i]);
+            acit = sdf.formatToCharacterIterator(d);
+            int patidx = 0;
+
+            while (true) {
+                Map map = acit.getAttributes();
+                int limit = acit.getRunLimit();
+                if (map.isEmpty()) {
+                    // Must be pattern literal - '~'
+                    while (acit.getIndex() < limit) {
+                        if (acit.current() != SEPCHAR) {
+                            errln("FAIL: Invalid pattern literal at " + acit.current() + " in patterns[" + i + "]");
+                        }
+                        acit.next();
+                    }
+                } else {
+                    Set keySet = map.keySet();
+                    if (keySet.size() == 1) {
+                        // Check the attribute
+                        Iterator keyIterator = keySet.iterator();
+                        DateFormat.Field attr = (DateFormat.Field)keyIterator.next();
+                        if (!DATEFORMAT_FIELDS[patidx].equals(attr)) {
+                            errln("FAIL: The attribute at " + acit.getIndex() + " in patterns[" + i + "" +
+                                    "] is " + attr + " - Expected: " + DATEFORMAT_FIELDS[patidx]);
+                        }
+                    } else {
+                        // SimpleDateFormat#formatToCharacterIterator never set multiple
+                        // attributes to a single text run.
+                        errln("FAIL: Multiple attributes were set");
+                    }
+                    patidx++;
+                    // Move to the run limit
+                    acit.setIndex(limit);
+                }
+                if (acit.current() == CharacterIterator.DONE) {
+                    break;
+                }
+            }
+        }
+
+        // ChineseDateFormat has pattern letter 'l' for leap month marker in addition to regular DateFormat
+        cal.clear();
+        cal.set(2009, Calendar.JUNE, 22); // 26x78-5-30
+        Date nonLeapMonthDate = cal.getTime(); // non-leap month
+        cal.set(2009, Calendar.JUNE, 23); // 26x78-5*-1
+        Date leapMonthDate = cal.getTime(); // leap month
+
+        ChineseDateFormat cdf = new ChineseDateFormat("y'x'G-Ml-d", ULocale.US);
+        acit = cdf.formatToCharacterIterator(nonLeapMonthDate);
+        Set keys = acit.getAllAttributeKeys();
+        if (keys.contains(ChineseDateFormat.Field.IS_LEAP_MONTH)) {
+            errln("FAIL: IS_LEAP_MONTH attribute must not present for Chinese calendar date "
+                    + cdf.format(nonLeapMonthDate));
+        }
+        acit = cdf.formatToCharacterIterator(leapMonthDate);
+        keys = acit.getAllAttributeKeys();
+        if (!keys.contains(ChineseDateFormat.Field.IS_LEAP_MONTH)) {
+            errln("FAIL: IS_LEAP_MONTH attribute must present for Chinese calendar date "
+                    + cdf.format(leapMonthDate));
+        }
+    }
+
+    /*
+     * API coverage test case for formatToCharacterIterator
+     */
+    public void TestFormatToCharacterIteratorCoverage() {
+        // Calling formatToCharacterIterator, using various argument types
+        DateFormat df = DateFormat.getDateTimeInstance();
+        AttributedCharacterIterator acit = null;
+
+        Calendar cal = Calendar.getInstance();
+        try {
+            acit = df.formatToCharacterIterator(cal);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Calendar)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Calendar must be accepted by formatToCharacterIterator");
+        }
+
+        Date d = cal.getTime();
+        try {
+            acit = df.formatToCharacterIterator(d);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Date)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Date must be accepted by formatToCharacterIterator");
+        }
+
+        Number num = new Long(d.getTime());
+        try {
+            acit = df.formatToCharacterIterator(num);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Number)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Number must be accepted by formatToCharacterIterator");
+        }
+
+        boolean isException = false;
+        String str = df.format(d);
+        try {
+            acit = df.formatToCharacterIterator(str);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(String)");
+            }
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException is thrown by formatToCharacterIterator");
+            isException = true;
+        }
+        if (!isException) {
+            errln("FAIL: String must not be accepted by formatToCharacterIterator");
+        }
+
+        // DateFormat.Field#ofCalendarField and getCalendarField
+        for (int i = 0; i < DATEFORMAT_FIELDS.length; i++) {
+            int calField = DATEFORMAT_FIELDS[i].getCalendarField();
+            if (calField != -1) {
+                DateFormat.Field field = DateFormat.Field.ofCalendarField(calField);
+                if (field != DATEFORMAT_FIELDS[i]) {
+                    errln("FAIL: " + field + " is returned for a Calendar field " + calField
+                            + " - Expected: " + DATEFORMAT_FIELDS[i]);
+                }
+            }
+        }
+
+        // IllegalArgument for ofCalendarField
+        isException = false;
+        try {
+            DateFormat.Field.ofCalendarField(-1);
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException is thrown by ofCalendarField");
+            isException = true;
+        }
+        if (!isException) {
+            errln("FAIL: IllegalArgumentException must be thrown by ofCalendarField for calendar field value -1");
+        }
+
+        // ChineseDateFormat.Field#ofCalendarField and getCalendarField
+        int ccalField = ChineseDateFormat.Field.IS_LEAP_MONTH.getCalendarField();
+        if (ccalField != ChineseCalendar.IS_LEAP_MONTH) {
+            errln("FAIL: ChineseCalendar field " + ccalField + " is returned for ChineseDateFormat.Field.IS_LEAP_MONTH.getCalendarField()");
+        } else {
+            DateFormat.Field cfield = ChineseDateFormat.Field.ofCalendarField(ccalField);
+            if (cfield != ChineseDateFormat.Field.IS_LEAP_MONTH) {
+                errln("FAIL: " + cfield + " is returned for a ChineseCalendar field " + ccalField
+                        + " - Expected: " + ChineseDateFormat.Field.IS_LEAP_MONTH);
+            }
+        }
+    }
+//#endif
+
+    /*
+     * Test for checking SimpleDateFormat/DateFormatSymbols creation
+     * honor the calendar keyword in the given locale.  See ticket#6100
+     */
+    public void TestCalendarType() {
+        final String testPattern = "GGGG y MMMM d EEEE";
+
+        final ULocale[] testLocales = {
+                new ULocale("de"),
+                new ULocale("fr_FR@calendar=gregorian"),
+                new ULocale("en@calendar=islamic"),
+                new ULocale("ja_JP@calendar=japanese"),
+                new ULocale("zh_Hans_CN@calendar=bogus"),
+        };
+
+        SimpleDateFormat[] formatters = new SimpleDateFormat[5];
+        for (int i = 0; i < testLocales.length; i++) {
+            // Create a locale with no keywords
+            StringBuffer locStrBuf = new StringBuffer();
+            if (testLocales[i].getLanguage().length() > 0) {
+                locStrBuf.append(testLocales[i].getLanguage());
+            }
+            if (testLocales[i].getScript().length() > 0) {
+                locStrBuf.append('_');
+                locStrBuf.append(testLocales[i].getScript());
+            }
+            if (testLocales[i].getCountry().length() > 0) {
+                locStrBuf.append('_');
+                locStrBuf.append(testLocales[i].getCountry());
+            }
+            ULocale locNoKeywords = new ULocale(locStrBuf.toString());
+
+            Calendar cal = Calendar.getInstance(testLocales[i]);
+
+            // Calendar getDateFormat method
+            DateFormat df = cal.getDateTimeFormat(DateFormat.MEDIUM, DateFormat.MEDIUM, locNoKeywords);
+            if (df instanceof SimpleDateFormat) {
+                formatters[0] = (SimpleDateFormat)df;
+                formatters[0].applyPattern(testPattern);
+            } else {
+                formatters[0] = null;
+            }
+
+            // DateFormat constructor with locale
+            df = DateFormat.getDateInstance(DateFormat.MEDIUM, testLocales[i]);
+            if (df instanceof SimpleDateFormat) {
+                formatters[1] = (SimpleDateFormat)df;
+                formatters[1].applyPattern(testPattern);
+            } else {
+                formatters[1] = null;
+            }
+
+            // DateFormat constructor with Calendar
+            df = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, locNoKeywords);
+            if (df instanceof SimpleDateFormat) {
+                formatters[2] = (SimpleDateFormat)df;
+                formatters[2].applyPattern(testPattern);
+            } else {
+                formatters[2] = null;
+            }
+
+            // SimpleDateFormat constructor
+            formatters[3] = new SimpleDateFormat(testPattern, testLocales[i]);
+ 
+            // SimpleDateFormat with DateFormatSymbols
+            DateFormatSymbols dfs = new DateFormatSymbols(testLocales[i]);
+            formatters[4] = new SimpleDateFormat(testPattern, dfs, testLocales[i]);
+
+            // All SimpleDateFormat instances should produce the exact
+            // same result.
+            String expected = null;
+            Date d = new Date();
+            for (int j = 0; j < formatters.length; j++) {
+                if (formatters[j] != null) {
+                    String tmp = formatters[j].format(d);
+                    if (expected == null) {
+                        expected = tmp;
+                    } else if (!expected.equals(tmp)) {
+                        errln("FAIL: formatter[" + j + "] returned \"" + tmp + "\" in locale " +
+                                testLocales[i] + " - expected: " + expected);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
new file mode 100644
index 0000000..d41db8c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -0,0 +1,1018 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateIntervalFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtifmtts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateIntervalFormat;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.ULocale;
+
+public class DateIntervalFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new DateIntervalFormatTest().run(args);
+    }
+
+
+    /**
+     * Test format
+     */
+    public void testFormat() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/skeleton/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            // test skeleton with both date and time
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007 10:10 AM \\u2013 Nov 20, 2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007 10:10\\u201311:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "hms", "10:10:10 AM \\u2013 11:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMy", "October 10, 2007 \\u2013 October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMM", "October 10, 2007 \\u2013 October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMMy", "October 2007 \\u2013 October 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007 \\u2013 Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 2007 \\u2013 Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Oct 2007 \\u2013 Oct 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10/07 \\u2013 10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed \\u2013 10 Fri", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u20132008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10/07 \\u2013 10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007 \\u2013 Oct 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 2007 \\u2013 October 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 10/10/2008 10:10 AM PT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "h", "10/10/2007 10 \\u2013 10/10/2008 10", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hv", "10/10/2007 PT (Hour: 10) \\u2013 10/10/2008 PT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hz", "10/10/2007 PDT (Hour: 10) \\u2013 10/10/2008 PDT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 10/10/2008 10:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007 \\u2013 O 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/07 \\u2013 F, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10 \\u2013 Saturday, November 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 10 \\u2013 November 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "October 10 \\u2013 November 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "October\\u2013November 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10 \\u2013 Saturday, November 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10 \\u2013 Sat, Nov 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "Oct 10 \\u2013 Nov 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10 \\u2013 Nov 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct\\u2013Nov 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10 \\u2013 Sat, Nov 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMy", "10/10/07 \\u2013 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10/10 \\u2013 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10/07 \\u2013 11/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Wed, 10/10 \\u2013 Sat, 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10/10 \\u2013 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Ed", "10 Wed \\u2013 10 Sat", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10\\u201311", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Oct\\u2013Nov", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October-November", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 11/10/2007 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 11/10/2007 10:10 AM PT", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "h", "10/10/2007 10 \\u2013 11/10/2007 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hv", "10/10/2007 PT (Hour: 10) \\u2013 11/10/2007 PT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hz", "10/10/2007 PDT (Hour: 10) \\u2013 11/10/2007 PST (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmm", "10/10/2007 10:10 AM \\u2013 11/10/2007 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 11/10/2007 10:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMMy", "O 10 \\u2013 N 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEEdM", "W, 10/10 \\u2013 S, 11/10", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10 \\u2013 Tuesday, November 20, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "November 10\\u201320, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "November 10\\u201320", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "November 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10 \\u2013 Tuesday, November 20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10 \\u2013 Tue, Nov 20, 2007", 
+            
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10\\u201320", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10 \\u2013 Tue, Nov 20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "11/10/07 \\u2013 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11/2007", 
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sat, 11/10 \\u2013 Tue, 11/20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u201320", 
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Ed", "10 Sat \\u2013 20 Tue", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "Nov", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007 10:10 AM PT \\u2013 11/20/2007 10:10 AM PT", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "11/10/2007 10:10 AM PST \\u2013 11/20/2007 10:10 AM PST", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hz", "11/10/2007 PST (Hour: 10) \\u2013 11/20/2007 PST (Hour: 10)", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hms", "11/10/2007 10:10:10 AM \\u2013 11/20/2007 10:10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10\\u201320, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEEdM", "S, 11/10 \\u2013 T, 11/20", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMM", "January 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMMy", "January 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMy", "Wed, 1/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMy", "1/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dM", "1/10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdM", "Wed, 1/10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "d", "10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Ed", "10 Wed", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "y", "2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMM", "Jan", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMM", "January", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "10:00 AM \\u2013 2:10 PM", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM \\u2013 2:10 PM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM \\u2013 2 PM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "10 AM \\u2013 2 PM PT", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "10 AM \\u2013 2 PM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM \\u2013 2:10 PM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmmzz", "10:00 AM \\u2013 2:10 PM PST", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEEdM", "W, 1/10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMMy", "Wednesday, January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMy", "January 10, 2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMMMy", "January 2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMM", "Jan 10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dM", "1/10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdM", "Wed, 1/10", 
+            
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "y", "2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMM", "Jan", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00\\u201310:20 AM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00\\u201310:20 AM PT", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "PST (Hour: 10)", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00\\u201310:20 AM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00\\u201310:20 AM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hms", "10:0:10 AM \\u2013 10:20:10 AM", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMM", "January 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMMy", "Wed, Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMM", "Jan 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10", 
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dM", "1/10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "My", "1/2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdM", "Wed, 1/10", 
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "d", "10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Ed", "10 Wed", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "y", "2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "M", "1", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMM", "Jan", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMM", "January", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10 AM", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 AM PT", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "PST (Hour: 10)", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hms", "10:10:10 AM", 
+            
+            
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "2007\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10\\u20132008\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "10\\u670810\\u65e5\\u81f311\\u670810\\u65e5", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "10\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f311\\u670810\\u65e5\\u661f\\u671f\\u516d", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u20132007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007-11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "11\\u670810\\u65e5\\u5468\\u516d\\u81f320\\u65e5\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "07-11-10\\u5468\\u516d\\u81f307-11-20\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "07-11-10\\u81f307-11-20", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11-10\\u81f311-20", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007-11", 
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "11-10\\u5468\\u516d\\u81f311-20\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMM", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u20132007\\u5e7411\\u670820\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007\\u5e7411\\u670810\\u65e5 10\\u20132007\\u5e7411\\u670820\\u65e5 10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e7401\\u670810\\u65e5\\u661f\\u671f\\u4e09", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMM", "01-10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u4e0a\\u534810:00\\u81f310:20\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800 (\\u5c0f\\u65f6: 10)", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "2007\\u5e7401\\u670810\\u65e5\\u661f\\u671f\\u4e09", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt 2007 - Freitag, 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "10. Okt 2007 - 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "10. Okt 2007 - 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Okt 2007 - Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEdMMM", "Mi., 10. Okt 2007 - Fr., 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Mi., 10.10.07 - Fr., 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10.07 - 10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Mi., 10.10.07 - Fr., 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007-2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10.07 - 10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Okt 2007 - Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10.10.2007 10:10 - 10.10.2008 10:10", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt - Samstag, 10. Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "10. Okt - 10. Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "10. Okt - 10. Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt-Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt - Samstag, 10. Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Mi., 10.10.07 - Sa., 10.11.07", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10.10. - 10.11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10.07 - 11.07", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Mi., 10.10. - Sa., 10.11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10.10. - 10.11.", 
+            
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10.-11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Okt-Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10.10.2007 10:10 Vereinigte Staaten (Los Angeles) - 10.11.2007 10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10.10.2007 10:10:10 - 10.11.2007 10:10:10", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10. - Dienstag, 20. Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.-20. Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "10.-20. Nov", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10. - Dienstag, 20. Nov", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sa., 10.11.07 - Di., 20.11.07", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "10.11.07 - 20.11.07", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "10.11. - 20.11.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007-11", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sa., 10.11. - Di., 20.11.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10.-20.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "10.11.2007 10:10 Vereinigte Staaten (Los Angeles) - 20.11.2007 10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch 10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00-14:10 GMT-08:00", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10-14", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch 10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00-10:20", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00-10:20 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00-10:20 GMT-08:00", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "Vereinigte Staaten (Los Angeles) (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "GMT-08:00 (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 GMT-08:00", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "Vereinigte Staaten (Los Angeles) (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "GMT-08:00 (Stunde: 10)", 
+        };
+        expect(DATA, DATA.length);
+    }
+
+
+    private void expect(String[] data, int data_length) {
+        int i = 1;
+        int count = 0; 
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            count++;
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+    
+            String oneSkeleton = data[i++];
+            // Skipping some test case in the non-exhaustive mode to reduce the test time
+            //ticket#6503
+            if(params.inclusion<=5 && count%3!=0){
+                i++;
+                continue;
+            } 
+            
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(
+                                              oneSkeleton, loc);
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv);
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("\"" + locName + "\\" + oneSkeleton + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+    /* 
+     * Test format using user defined DateIntervalInfo
+     */
+    public void testFormatUserDII() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Oct 10, 2007 --- Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Oct 10 - Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Nov 10, 2007 --- Nov 20, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "2007\\u5e7410\\u670810\\u65e5 --- 2008\\u5e7410\\u670810\\u65e5", 
+            
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007\\u5e7411\\u670810\\u65e5 --- 2007\\u5e7411\\u670820\\u65e5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10. Okt 2007 --- 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Okt 10 - Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10. Nov 2007 --- 20. Nov 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10. Jan 2007", 
+            
+            "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 de oct de 2007 --- 10 de oct de 2008", 
+            
+            "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007", 
+            
+            "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 de nov de 2007 --- 20 de nov de 2007", 
+            
+            "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 de ene de 2007", 
+            
+            "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 de ene de 2007", 
+            
+            "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 de ene de 2007", 
+        };
+        expectUserDII(DATA, DATA.length);
+    }
+    
+    
+    private void expectUserDII(String[] data, int data_length) {
+        int i = 1;
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+
+            DateIntervalInfo dtitvinf = new DateIntervalInfo();
+            dtitvinf.setFallbackIntervalPattern("{0} --- {1}");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy MMM d - MMM y");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm");
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(
+                        DateFormat.YEAR_ABBR_MONTH_DAY,
+                        loc, dtitvinf);
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv);
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("userDII: \"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+
+    /* 
+     * Test format using user defined DateIntervalInfo
+     */
+    public void testFormatCLDR() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "all diff", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 diff Oct 10 - Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007 Nov 10 ~ 20", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "all diff", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 diff 10\\u6708 10 - 11\\u6708 2007", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007 11\\u6708 10 ~ 20", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\u5E7401\\u670810\u65E5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\u5E7401\\u670810\u65E5", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\u5E7401\\u670810\u65E5", 
+        };
+        expectUserCLDR(DATA, DATA.length);
+    }
+    
+    
+    private void expectUserCLDR(String[] data, int data_length) {
+        int i = 1;
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance("yyyyMMMdd", loc);
+            //DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance("yMd");
+            //SimpleDateFormat dtfmt = new SimpleDateFormat("yyyy 'year' MMM 'month' dd 'day'", loc);
+            //dtitvfmt.setDateFormat(dtfmt);
+            DateIntervalInfo dtitvinf = new DateIntervalInfo();
+            dtitvinf.setFallbackIntervalPattern("{0} --- {1}");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.YEAR, "'all diff'");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy 'diff' MMM d - MMM y");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.DATE, "yyyy MMM d ~ d");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMMd HH:mm ~ HH:mm");
+            dtitvfmt.setDateIntervalInfo(dtitvinf);
+            FieldPosition pos = new FieldPosition(0);
+            StringBuffer str = new StringBuffer("");
+            DateFormat dtfmt = dtitvfmt.getDateFormat();
+            Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+            Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+            fromCalendar.setTimeInMillis(dtitv.getFromDate());
+            toCalendar.setTimeInMillis(dtitv.getToDate());
+            dtitvfmt.format(fromCalendar, toCalendar, str, pos);
+
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv).toString();
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("CLDR: \"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+    /**
+     * Stress test
+     */
+    public void testStress() {
+        if (getInclusion() <= 5) {
+            logln("INFO: Skipping test");
+            return;
+        }
+
+        // test data.
+        // The 1st is the format pattern,
+        // Next are pairs in which the 1st in the pair is the earlier date
+        // and the 2nd in the pair is the later date
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",
+            "2007 10 10 10:10:10", "2008 10 10 10:10:10", 
+            "2007 10 10 10:10:10", "2007 11 10 10:10:10", 
+            "2007 11 10 10:10:10", "2007 11 20 10:10:10", 
+            "2007 01 10 10:00:10", "2007 01 10 14:10:10", 
+            "2007 01 10 10:00:10", "2007 01 10 10:20:10", 
+            "2007 01 10 10:10:10", "2007 01 10 10:10:20", 
+        };
+
+
+        String[][] testLocale = {
+            {"en", "", ""},
+            {"zh", "", ""},
+            {"de", "", ""},
+            {"ar", "", ""},
+            {"en", "GB",  ""},
+            {"fr", "", ""},
+            {"it", "", ""},
+            {"nl", "", ""},
+            {"zh", "TW",  ""},
+            {"ja", "", ""},
+            {"pt", "BR", ""},
+            {"ru", "", ""},
+            {"tr", "", ""},
+            {"es", "", ""},
+            {"ko", "", ""},
+            //{"th", "", ""},
+            {"sv", "", ""},
+            {"pl", "", ""},
+            {"fi", "", ""},
+            {"da", "", ""},
+            {"pt", "PT", ""},
+            {"ro", "", ""},
+            {"hu", "", ""},
+            {"he", "", ""},
+            {"in", "", ""},
+            {"cs", "", ""},
+            {"el", "", ""},
+            {"no", "", ""},
+            {"vi", "", ""},
+            {"bg", "", ""},
+            {"hr", "", ""},
+            {"lt", "", ""},
+            {"sk", "", ""},
+            {"sl", "", ""},
+            {"sr", "", ""},
+            {"ca", "", ""},
+            {"lv", "", ""},
+            {"uk", "", ""},
+            {"hi", "", ""},
+        };
+
+        int localeIndex;
+        for ( localeIndex = 0; localeIndex < testLocale.length; ++localeIndex) {
+            stress(DATA, DATA.length, new Locale(testLocale[localeIndex][0], 
+                   testLocale[localeIndex][1], testLocale[localeIndex][2]), 
+                   testLocale[localeIndex][0]+testLocale[localeIndex][1]);
+        }
+    }
+
+    private void stress(String[] data, int data_length, Locale loc, String locName) {
+        String[] skeleton = {
+            "EEEEdMMMMy",
+            "dMMMMy",
+            "dMMMM",
+            "MMMMy",
+            "EEEEdMMMM",
+            "EEEdMMMy",
+            "dMMMy",
+            "dMMM",
+            "MMMy",
+            "EEEdMMM",
+            "EEEdMy",
+            "dMy",
+            "dM",
+            "My",
+            "EEEdM",
+            "d",
+            "EEEd",
+            "y",
+            "M",
+            "MMM",
+            "MMMM",
+            "hm",
+            "hmv",
+            "hmz",
+            "h",
+            "hv",
+            "hz",
+            "EEddMMyyyy", // following could be normalized
+            "EddMMy", 
+            "hhmm",
+            "hhmmzz",
+            "hms",  // following could not be normalized
+            "dMMMMMy",
+            "EEEEEdM",
+        };
+
+        int i = 0;
+
+        SimpleDateFormat ref = new SimpleDateFormat(data[i++], loc);
+
+        while (i<data_length) {
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date;
+            Date date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), date_2.getTime());
+
+            for ( int skeletonIndex = 0; 
+                  skeletonIndex < skeleton.length; 
+                  ++skeletonIndex ) {
+                String oneSkeleton = skeleton[skeletonIndex];
+                // need special handle of "Thai" since the default calendar
+                // of "Thai" is "Budd", not "Gregorian".
+                DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(oneSkeleton, loc);
+                /*
+                if ( locName.equals("th") ) {
+                    // reset calendar to be Gregorian
+                    GregorianCalendar gregCal = new GregorianCalendar(loc);
+                    DateFormat dformat = dtitvfmt.getDateFormat();
+                    DateFormat newOne = (DateFormat)dformat.clone();
+                    newOne.setCalendar(gregCal);
+                    dtitvfmt.setDateFormat(newOne);
+                }
+                */
+                dtitvfmt.format(dtitv);
+            }
+
+
+            // test interval format by algorithm 
+            for ( int style = DateFormat.FULL; style  < 4; ++style ) {
+                SimpleDateFormat dtfmt = (SimpleDateFormat) DateFormat.getDateInstance(style, loc);
+                FieldPosition pos = new FieldPosition(0);
+                StringBuffer str = new StringBuffer("");
+                Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+                Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+                fromCalendar.setTimeInMillis(dtitv.getFromDate());
+                toCalendar.setTimeInMillis(dtitv.getToDate());
+                dtfmt.intervalFormatByAlgorithm(fromCalendar, toCalendar, str, pos);
+            } 
+        } 
+    }
+
+    /*
+     * Ticket#6396 DateIntervalInfo of ICU4J 4.0d3 throw NullPointerException 
+     */
+    public void TestT6396() {
+        DateIntervalInfo dii = new DateIntervalInfo(new ULocale("th_TH"));
+        try {
+            // ticket#6396 reported toString() throws NullPointerException
+            String diiStr = dii.toString();
+            logln("new DateIntervalInfo(new ULocale(\"th_TH\")).toString() - " + diiStr);
+
+            // equals also had the similar problem
+            DateIntervalInfo dii1 = (DateIntervalInfo)dii.clone();
+            if (!dii.equals(dii1)) {
+                errln("FAIL: Cloned DateIntervalInfo is not equal to the source");
+            }
+        } catch (Exception e) {
+            errln("FAIL: Exception - " + e.getClass().getName());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
new file mode 100644
index 0000000..d158503
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -0,0 +1,561 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.PatternTokenizer;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateTimePatternGenerator;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.DateTimePatternGenerator.VariableField;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class DateTimeGeneratorTest extends TestFmwk {
+    public static boolean GENERATE_TEST_DATA = System.getProperty("GENERATE_TEST_DATA") != null;
+    public static int RANDOM_COUNT = 1000;
+    public static boolean DEBUG = false;
+    
+    public static void main(String[] args) throws Exception {
+        new DateTimeGeneratorTest().run(args);
+    }
+    
+    public void TestSimple() {
+        // some simple use cases
+        Calendar cal = new GregorianCalendar(1999, Calendar.OCTOBER, 13, 23, 58, 59);
+        Date sampleDate = cal.getTime();
+        ULocale locale = ULocale.GERMANY;
+        TimeZone zone = TimeZone.getTimeZone("Europe/Paris");
+        // make from locale
+        DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
+        SimpleDateFormat format = new SimpleDateFormat(gen.getBestPattern("MMMddHmm"), locale);
+        format.setTimeZone(zone);
+        assertEquals("simple format: MMMddHmm", "14. Okt 8:58", format.format(sampleDate));
+        // (a generator can be built from scratch, but that is not a typical use case)
+
+        // modify the generator by adding patterns
+        DateTimePatternGenerator.PatternInfo returnInfo = new DateTimePatternGenerator.PatternInfo();
+        gen.addPattern("d'. von' MMMM", true, returnInfo); 
+        // the returnInfo is mostly useful for debugging problem cases
+        format.applyPattern(gen.getBestPattern("MMMMddHmm"));
+        assertEquals("modified format: MMMddHmm", "14. von Oktober 8:58", format.format(sampleDate));
+
+        // get a pattern and modify it
+        format = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
+        format.setTimeZone(zone);
+        String pattern = format.toPattern();
+        assertEquals("full-date", "Donnerstag, 14. Oktober 1999 08:58:59 Frankreich", format.format(sampleDate));
+
+        // modify it to change the zone.
+        String newPattern = gen.replaceFieldTypes(pattern, "vvvv");
+        format.applyPattern(newPattern);
+        assertEquals("full-date: modified zone", "Donnerstag, 14. Oktober 1999 08:58:59 Frankreich", format.format(sampleDate));
+
+        // add test of basic cases
+
+        //lang  YYYYMMM MMMd    MMMdhmm hmm hhmm    Full Date-Time
+        // en  Mar 2007    Mar 4   6:05 PM Mar 4   6:05 PM 06:05 PM    Sunday, March 4, 2007 6:05:05 PM PT
+        DateTimePatternGenerator enGen = DateTimePatternGenerator.getInstance(ULocale.ENGLISH);
+        TimeZone enZone = TimeZone.getTimeZone("Etc/GMT");
+        SimpleDateFormat enFormat = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, ULocale.ENGLISH);
+        enFormat.setTimeZone(enZone);
+        String[][] tests = {
+              {"yyyyMMMdd", "Oct 14, 1999"},
+              {"yMMMdd", "Oct 14, 1999"},
+              {"EyyyyMMMdd", "Thu, Oct 14, 1999"},
+              {"yyyyMMdd", "10/14/1999"},
+              {"yyyyMMM", "Oct 1999"},
+              {"yyyyMM", "10/1999"},
+              {"yyMM", "10/99"},
+              {"yMMMMMd", "O 14, 1999"},  // narrow format
+              {"EEEEEMMMMMd", "T, O 14"},  // narrow format
+              {"MMMd", "Oct 14"},
+              {"MMMdhmm", "Oct 14 6:58 AM"},
+              {"EMMMdhmms", "Thu, Oct 14 6:58:59 AM"},
+              {"MMdhmm", "10/14 6:58 AM"},
+              {"EEEEMMMdhmms", "Thursday, Oct 14 6:58:59 AM"},
+              {"yyyyMMMddhhmmss", "Oct 14, 1999 06:58:59 AM"},
+              {"EyyyyMMMddhhmmss", "Thu, Oct 14, 1999 06:58:59 AM"},
+              {"hmm", "6:58 AM"},
+              {"hhmm", "06:58 AM"},
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            final String testSkeleton = tests[i][0];
+            String pat = enGen.getBestPattern(testSkeleton);
+            enFormat.applyPattern(pat);
+            String formattedDate = enFormat.format(sampleDate);
+            assertEquals("Testing skeleton '" + testSkeleton + "' with  " + sampleDate, tests[i][1], formattedDate);
+        }
+    }
+
+    public void TestPatternParser() {
+        StringBuffer buffer = new StringBuffer();
+        PatternTokenizer pp = new PatternTokenizer()
+        .setIgnorableCharacters(new UnicodeSet("[-]"))
+        .setSyntaxCharacters(new UnicodeSet("[a-zA-Z]"))
+        .setEscapeCharacters(new UnicodeSet("[b#]"))
+        .setUsingQuote(true);
+        logln("Using Quote");
+        for (int i = 0; i < patternTestData.length; ++i) {
+            String patternTest = (String) patternTestData[i];
+            CheckPattern(buffer, pp, patternTest);
+        }
+        String[] randomSet = {"abcdef", "$12!@#-", "'\\"};
+        for (int i = 0; i < RANDOM_COUNT; ++i) {
+            String patternTest = getRandomString(randomSet, 0, 10);
+            CheckPattern(buffer, pp, patternTest);
+        }
+        logln("Using Backslash");
+        pp.setUsingQuote(false).setUsingSlash(true);
+        for (int i = 0; i < patternTestData.length; ++i) {
+            String patternTest = (String) patternTestData[i];
+            CheckPattern(buffer, pp, patternTest);
+        }
+        for (int i = 0; i < RANDOM_COUNT; ++i) {
+            String patternTest = getRandomString(randomSet, 0, 10);
+            CheckPattern(buffer, pp, patternTest);
+        }
+    }
+    
+    Random random = new java.util.Random(-1);
+    
+    private String getRandomString(String[] randomList, int minLen, int maxLen) {
+        StringBuffer result = new StringBuffer();
+        int len = random.nextInt(maxLen + 1 - minLen) + minLen;
+        for (int i = minLen; i < len; ++ i) {
+            String source = randomList[random.nextInt(randomList.length)]; // don't bother with surrogates
+            char ch = source.charAt(random.nextInt(source.length()));
+            UTF16.append(result, ch);
+        }
+        return result.toString();
+    }
+    
+    private void CheckPattern(StringBuffer buffer, PatternTokenizer pp, String patternTest) {
+        pp.setPattern(patternTest);
+        if (DEBUG && isVerbose()) {
+            showItems(buffer, pp, patternTest);
+        }
+        String normalized = pp.setStart(0).normalize();
+        logln("input:\t<" + patternTest + ">" + "\tnormalized:\t<" + normalized + ">");
+        String doubleNormalized = pp.setPattern(normalized).normalize();
+        if (!normalized.equals(doubleNormalized)) {
+            errln("Normalization not idempotent:\t" + patternTest + "\tnormalized: " + normalized +  "\tnormalized2: " + doubleNormalized);
+            // allow for debugging at the point of failure
+            if (DEBUG) {
+                pp.setPattern(patternTest);
+                normalized = pp.setStart(0).normalize();
+                pp.setPattern(normalized);
+                showItems(buffer, pp, normalized);
+                doubleNormalized = pp.normalize();
+            }
+        }
+    }
+
+    private void showItems(StringBuffer buffer, PatternTokenizer pp, String patternTest) {
+        logln("input:\t<" + patternTest + ">");
+        while (true) {
+            buffer.setLength(0);
+            int status = pp.next(buffer);
+            if (status == PatternTokenizer.DONE) break;
+            String lit = "";
+            if (status != PatternTokenizer.SYNTAX ) {
+                lit = "\t<" + pp.quoteLiteral(buffer) + ">";
+            }
+            logln("\t" + statusName[status] + "\t<" + buffer + ">" + lit);
+        }
+    }
+    
+    static final String[] statusName = {"DONE", "SYNTAX", "LITERAL", "BROKEN_QUOTE", "BROKEN_ESCAPE", "UNKNOWN"};
+    
+    public void TestBasic() {
+        ULocale uLocale = null;
+        DateTimePatternGenerator dtfg = null;
+        Date date = null;
+        for (int i = 0; i < dateTestData.length; ++i) {
+            if (dateTestData[i] instanceof ULocale) {
+                uLocale = (ULocale) dateTestData[i];
+                dtfg = DateTimePatternGenerator.getInstance(uLocale);
+                if (GENERATE_TEST_DATA) logln("new ULocale(\"" + uLocale.toString() + "\"),");
+            } else if (dateTestData[i] instanceof Date) {
+                date = (Date) dateTestData[i];
+                if (GENERATE_TEST_DATA) logln("new Date(" + date.getTime()+ "L),");
+            } else if (dateTestData[i] instanceof String) {
+                String testSkeleton = (String) dateTestData[i];
+                String pattern = dtfg.getBestPattern(testSkeleton);
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
+                String formatted = sdf.format(date);
+                if (GENERATE_TEST_DATA) logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
+                //logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
+            } else {
+                String[] testPair = (String[]) dateTestData[i];
+                String testSkeleton = testPair[0];
+                String testFormatted = testPair[1];
+                String pattern = dtfg.getBestPattern(testSkeleton);
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
+                String formatted = sdf.format(date);
+                if (GENERATE_TEST_DATA) {
+                    logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
+                } else if (!formatted.equals(testFormatted)) {
+                    if(skipIfBeforeICU(4,1,1)&& uLocale.equals("zh_Hans_CN") && testSkeleton.equals("HHmm")){
+                        logln(uLocale + "\tformatted string doesn't match test case: " + testSkeleton + "\t generated: " +  pattern + "\t expected: " + testFormatted + "\t got: " + formatted);
+                        continue;
+                    }
+                        
+                    errln(uLocale + "\tformatted string doesn't match test case: " + testSkeleton + "\t generated: " +  pattern + "\t expected: " + testFormatted + "\t got: " + formatted);
+                    if (true) { // debug
+                        pattern = dtfg.getBestPattern(testSkeleton);
+                        sdf = new SimpleDateFormat(pattern, uLocale);
+                        formatted = sdf.format(date);
+                    }
+                }
+                //logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
+            }
+        }
+    }
+    
+    static final Object[] patternTestData = {
+        "'$f''#c",
+        "'' 'a",
+        "'.''.'",
+        "\\u0061\\\\",
+        "mm.dd 'dd ' x",
+        "'' ''",
+    };
+    
+    // can be generated by using GENERATE_TEST_DATA. Must be reviewed before adding
+    static final Object[] dateTestData = {
+        new Date(916300739000L), // 1999-01-13T23:58:59,0-0800
+        new ULocale("en_US"),
+        new String[] {"yM", "1/1999"},
+        new String[] {"yMMM", "Jan 1999"},
+        new String[] {"yMd", "1/13/1999"},
+        new String[] {"yMMMd", "Jan 13, 1999"},
+        new String[] {"Md", "1/13"},
+        new String[] {"MMMd", "Jan 13"},
+        new String[] {"yQQQ", "Q1 1999"},
+        new String[] {"hhmm", "11:58 PM"},
+        new String[] {"HHmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("zh_Hans_CN"),
+        new String[] {"yM", "1999-1"},
+        new String[] {"yMMM", "1999-01"},
+        new String[] {"yMd", "1999\u5E741\u670813\u65E5"},
+        new String[] {"yMMMd", "1999\u5E7401\u670813\u65E5"},
+        new String[] {"Md", "1-13"},
+        new String[] {"MMMd", "01-13"},
+        new String[] {"yQQQ", "1999\u5E741\u5B63"},
+        new String[] {"hhmm", "\u4E0B\u534811:58"},
+        new String[] {"HHmm", "\u4E0B\u534811:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("de_DE"),
+        new String[] {"yM", "1999-1"},
+        new String[] {"yMMM", "Jan 1999"},
+        new String[] {"yMd", "13.1.1999"},
+        new String[] {"yMMMd", "13. Jan 1999"},
+        new String[] {"Md", "13.1."},   // 13.1
+        new String[] {"MMMd", "13. Jan"},
+        new String[] {"yQQQ", "Q1 1999"},
+        new String[] {"hhmm", "23:58"},  // 11:58 nachm.
+        new String[] {"HHmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("fi"),
+        new String[] {"yM", "1/1999"},   // 1.1999
+        new String[] {"yMMM", "tammi 1999"},  // tammi 1999
+        new String[] {"yMd", "13.1.1999"},
+        new String[] {"yMMMd", "13. tammi 1999"},
+        new String[] {"Md", "13.1."},
+        new String[] {"MMMd", "13. tammi"},
+        new String[] {"yQQQ", "1. nelj./1999"},  // 1. nelj. 1999
+        new String[] {"hhmm", "23.58"},
+        new String[] {"HHmm", "23.58"},
+        new String[] {"mmss", "58.59"},
+    };
+    
+    public void DayMonthTest() {
+        final ULocale locale = ULocale.FRANCE;
+        
+        // set up the generator
+        DateTimePatternGenerator dtpgen
+          = DateTimePatternGenerator.getInstance(locale);
+        
+        // get a pattern for an abbreviated month and day
+        final String pattern = dtpgen.getBestPattern("MMMd");
+        SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
+        
+        // use it to format (or parse)
+        String formatted = formatter.format(new Date());
+        logln("formatted=" + formatted);
+        // for French, the result is "13 sept."
+    }
+    
+    public void TestOrdering() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            for (int style1 = DateFormat.FULL; style1 <= DateFormat.SHORT; ++style1) {
+                for (int style2 = DateFormat.FULL; style2 < style1; ++style2) {
+                    checkCompatible(style1, style2, locales[i]);                    
+                }               
+            }
+        }
+    }
+    
+    public void TestReplacingZoneString() {
+        Date testDate = new Date();
+        TimeZone testTimeZone = TimeZone.getTimeZone("America/New_York");
+        TimeZone bogusTimeZone = new SimpleTimeZone(1234, "Etc/Unknown");
+        Calendar calendar = Calendar.getInstance();
+        ParsePosition parsePosition = new ParsePosition(0);
+
+        ULocale[] locales = ULocale.getAvailableLocales();
+        int count = 0;
+        for (int i = 0; i < locales.length; ++i) {
+            // skip the country locales unless we are doing exhaustive tests
+            if (getInclusion() < 6) {
+                if (locales[i].getCountry().length() > 0) {
+                    continue;
+                }
+            }
+            count++;
+            // Skipping some test case in the non-exhaustive mode to reduce the test time
+            //ticket#6503
+            if(params.inclusion<=5 && count%3!=0){
+                continue;
+            }
+            logln(locales[i].toString());
+            DateTimePatternGenerator dtpgen
+            = DateTimePatternGenerator.getInstance(locales[i]);
+            
+            for (int style1 = DateFormat.FULL; style1 <= DateFormat.SHORT; ++style1) {
+                final SimpleDateFormat oldFormat = (SimpleDateFormat) DateFormat.getTimeInstance(style1, locales[i]);
+                String pattern = oldFormat.toPattern();
+                String newPattern = dtpgen.replaceFieldTypes(pattern, "VVVV"); // replaceZoneString(pattern, "VVVV");
+                if (newPattern.equals(pattern)) {
+                    continue;
+                }
+                // verify that it roundtrips parsing
+                SimpleDateFormat newFormat = new SimpleDateFormat(newPattern, locales[i]);
+                newFormat.setTimeZone(testTimeZone);
+                String formatted = newFormat.format(testDate);
+                calendar.setTimeZone(bogusTimeZone);
+                parsePosition.setIndex(0);
+                newFormat.parse(formatted, calendar, parsePosition);
+                if (parsePosition.getErrorIndex() >= 0) {
+                    errln("Failed parse with VVVV:\t" + locales[i] + ",\t\"" + pattern + "\",\t\"" + newPattern + "\",\t\"" + formatted.substring(0,parsePosition.getErrorIndex()) + "{}" + formatted.substring(parsePosition.getErrorIndex()) + "\"");
+                } else if (!calendar.getTimeZone().getID().equals(testTimeZone.getID())) {
+                    errln("Failed timezone roundtrip with VVVV:\t" + locales[i] + ",\t\"" + pattern + "\",\t\"" + newPattern + "\",\t\"" + formatted + "\",\t" + calendar.getTimeZone().getID() + " != " + testTimeZone.getID());
+                } else {
+                    logln(locales[i] + ":\t\"" + pattern + "\" => \t\"" + newPattern + "\"\t" + formatted);
+                }
+            }
+        }
+    }
+    
+    public void TestVariableCharacters() {
+        UnicodeSet valid = new UnicodeSet("[G   y   Y   u   Q   q   M   L   w   W   d   D   F   g   E   e   c   a   h   H   K   k   j   m   s   S   A   z   Z   v   V]");
+        for (char c = 0; c < 0xFF; ++c) {
+            boolean works = false;
+            try {
+                VariableField vf = new VariableField(String.valueOf(c), true);
+                logln("VariableField " + vf.toString());
+                works = true;
+            } catch (Exception e) {}
+            if (works != valid.contains(c)) {
+                if (works) {
+                    errln("VariableField can be created with illegal character: " + c);
+                } else {
+                    errln("VariableField can't be created with legal character: " + c);
+                }
+            }
+        }
+    }
+    
+    static String[] DATE_STYLE_NAMES = {
+        "FULL", "LONG", "MEDIUM", "SHORT"
+    };
+    
+    /**
+     * @param fullOrder
+     * @param longOrder
+     */
+    private void checkCompatible(int style1, int style2, ULocale uLocale) {
+        DateOrder order1 = getOrdering(style1, uLocale);
+        DateOrder order2 = getOrdering(style2, uLocale);
+        if (!order1.hasSameOrderAs(order2)) {
+            if (order1.monthLength == order2.monthLength) { // error if have same month length, different ordering
+                if (skipIfBeforeICU(4,1,1)) {
+                    logln(showOrderComparison(uLocale, style1, style2, order1, order2));
+                } else {
+                    errln(showOrderComparison(uLocale, style1, style2, order1, order2));
+                }
+            } else if (isVerbose() && order1.monthLength > 2 && order2.monthLength > 2) { // warn if both are not numeric
+                logln(showOrderComparison(uLocale, style1, style2, order1, order2));
+            }
+        }
+    }
+
+    private String showOrderComparison(ULocale uLocale, int style1, int style2, DateOrder order1, DateOrder order2) {
+        String pattern1 = ((SimpleDateFormat) DateFormat.getDateInstance(style1, uLocale)).toPattern();
+        String pattern2 = ((SimpleDateFormat) DateFormat.getDateInstance(style2, uLocale)).toPattern();
+        return "Mismatch in in ordering for " + uLocale + ": " + DATE_STYLE_NAMES[style1] + ": " + order1 + ", <" + pattern1 
+                + ">; " 
+                + DATE_STYLE_NAMES[style2] + ": " + order2 + ", <" + pattern2 + ">; " ;
+    }
+
+    /**
+     * Main date fields -- Poor-man's enum -- change to real enum when we get JDK 1.5
+     */
+    public static class DateFieldType {
+        private String name;
+        private DateFieldType(String string) {
+            name = string;
+        }
+        
+        public static DateFieldType 
+        YEAR = new DateFieldType("YEAR"), 
+        MONTH = new DateFieldType("MONTH"), 
+        DAY = new DateFieldType("DAY");
+        
+        public String toString() {
+            return name;
+        }
+    }
+    
+    /**
+     * Simple struct for output from getOrdering
+     */
+    static class DateOrder {
+        int monthLength;
+        DateFieldType[] fields = new DateFieldType[3];
+        
+        public boolean isCompatible(DateOrder other) {
+            return monthLength == other.monthLength;
+        }
+        /**
+         * @param order2
+         * @return
+         */
+        public boolean hasSameOrderAs(DateOrder other) {
+            // TODO Auto-generated method stub
+            return fields[0] == other.fields[0] && fields[1] == other.fields[1] && fields[2] == other.fields[2];
+        }
+        public String toString() {
+            return "{" + monthLength + ", " + fields[0]  + ", " + fields[1]  + ", " + fields[2] + "}";
+        }
+        public boolean equals(Object that) {
+            DateOrder other = (DateOrder) that;
+            return monthLength == other.monthLength && fields[0] == other.fields[0] && fields[1] == other.fields[1] && fields[2] == other.fields[2];            
+        }
+    }
+    
+    /** 
+     * Some statics. If we were multithreaded, we'd need to protect these
+     */
+    static DateTimePatternGenerator.FormatParser formatParser = new DateTimePatternGenerator.FormatParser ();
+    static DateTimePatternGenerator generator = DateTimePatternGenerator.getEmptyInstance();
+    
+    /**
+     * Replace the zone string with a different type, eg v's for z's, etc. <p>Called with a pattern, such as one gotten from 
+     * <pre>
+     * String pattern = ((SimpleDateFormat) DateFormat.getTimeInstance(style, locale)).toPattern();
+     * </pre>
+     * @param pattern original pattern to change, such as "HH:mm zzzz"
+     * @param newZone Must be: z, zzzz, Z, ZZZZ, v, vvvv, V, or VVVV
+     * @return
+     */
+    public String replaceZoneString(String pattern, String newZone) {
+        final List itemList = formatParser.set(pattern).getItems();
+        boolean changed = false;
+        for (int i = 0; i < itemList.size(); ++i) {
+            Object item = itemList.get(i);
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    if (!variableField.toString().equals(newZone)) {
+                        changed = true;
+                        itemList.set(i, new VariableField(newZone, true));
+                    }
+                }
+            }
+        }
+        return changed ? formatParser.toString() : pattern;
+    }
+    
+    public boolean containsZone(String pattern) {
+        for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Get the ordering from a particular date format. Best is to use
+     * DateFormat.FULL to get the format with String form month (like "January")
+     * and DateFormat.SHORT for the numeric format order. They may be different.
+     * (Theoretically all 4 formats could be different but that never happens in
+     * practice.)
+     *
+     * @param style
+     *          DateFormat.FULL..DateFormat.SHORT
+     * @param locale
+     *          desired locale.
+     * @return
+     * @return list of ordered items DateFieldType (I
+     *         didn't know what form you really wanted so this is just a
+     *         stand-in.)
+     */
+  private static DateOrder getOrdering(int style, ULocale locale) {
+      // and the date pattern
+      String pattern = ((SimpleDateFormat) DateFormat.getDateInstance(style, locale)).toPattern();
+      int count = 0;
+      DateOrder result = new DateOrder();
+     
+      for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+          Object item = it.next();
+        if (!(item instanceof String)) {
+          // the first character of the variable field determines the type,
+          // according to CLDR.
+          String variableField = item.toString();
+          switch (variableField.charAt(0)) {
+            case 'y': case 'Y': case 'u':
+              result.fields[count++] = DateFieldType.YEAR;
+              break;
+            case 'M': case 'L':
+                result.monthLength = variableField.length();
+                if (result.monthLength < 2) {
+                    result.monthLength = 2;
+                }
+                result.fields[count++] = DateFieldType.MONTH;
+              break;
+            case 'd': case 'D': case 'F': case 'g':
+                result.fields[count++] = DateFieldType.DAY;
+              break;
+          }
+        }
+      }
+      return result;
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java b/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
new file mode 100644
index 0000000..b22553b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
@@ -0,0 +1,1567 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.GlobalizationPreferences;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+
+
+public class GlobalizationPreferencesTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new GlobalizationPreferencesTest().run(args);
+    }
+
+    public void TestDefault() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        ULocale defLocale = new ULocale("en_US");
+        ULocale defFallbackLocale = new ULocale("en");
+
+        if (!defLocale.equals(ULocale.getDefault())) {
+            // Locale.US is always used as the default locale in the test environment
+            // If not, some test cases will fail...
+            errln("FAIL: The default locale of the test environment must be en_US");
+        }
+        
+        logln("Default locale: " + defLocale.toString());
+
+        // First locale is en_US
+        ULocale gpLocale0 = gp.getLocale(0);
+        logln("Primary locale: " + gpLocale0.toString());
+        if (!gpLocale0.equals(defLocale)) {
+            errln("FAIL: The primary locale is not en_US");
+        }
+
+        // Second locale is en
+        ULocale gpLocale1 = gp.getLocale(1);
+        logln("Secondary locale: " + gpLocale1.toString());
+        if (!gpLocale1.equals(defFallbackLocale)) {
+            errln("FAIL: The secondary locale is not en");
+        }
+
+        // Third locale is null
+        ULocale gpLocale2 = gp.getLocale(2);
+        if (gpLocale2 != null) {
+            errln("FAIL: Number of locales must be 2");
+        }
+        
+        // Calendar locale
+        Calendar cal = gp.getCalendar();
+        ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);
+        logln("Calendar locale: " + calLocale.toString());
+        if (!calLocale.equals(defLocale)) {
+            errln("FAIL: The calendar locale must match with the default JVM locale");
+        }
+
+        // Collator locale
+        Collator coll = gp.getCollator();
+        ULocale collLocale = coll.getLocale(ULocale.VALID_LOCALE);
+        logln("Collator locale: " + collLocale.toString());
+        if (!collLocale.equals(defLocale)) {
+            errln("FAIL: The collator locale must match with the default JVM locale");
+        }
+
+        // BreakIterator locale
+        BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);
+        ULocale brkLocale = brk.getLocale(ULocale.VALID_LOCALE);
+        logln("BreakIterator locale: " + brkLocale.toString());
+        if (!brkLocale.equals(defLocale)) {
+            errln("FAIL: The break iterator locale must match with the default JVM locale");
+        }
+
+        /* Skip - Bug#5209
+        // DateFormat locale
+        DateFormat df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        ULocale dfLocale = df.getLocale(ULocale.VALID_LOCALE);
+        logln("DateFormat locale: " + dfLocale.toString());
+        if (!dfLocale.equals(defLocale)) {
+            errln("FAIL: The date format locale must match with the default JVM locale");
+        }
+        */
+
+        // NumberFormat locale
+        NumberFormat nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        ULocale nfLocale = nf.getLocale(ULocale.VALID_LOCALE);
+        logln("NumberFormat locale: " + nfLocale.toString());
+        if (!nfLocale.equals(defLocale)) {
+            errln("FAIL: The number format locale must match with the default JVM locale");
+        }
+    }
+
+    public void TestFreezable() {
+        logln("Create a new GlobalizationPreference object");
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        if (gp.isFrozen()) {
+            errln("FAIL: This object is not yet frozen");
+        }        
+
+        logln("Call reset()");
+        boolean bSet = true;
+        try {
+            gp.reset();
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (!bSet) {
+            errln("FAIL: reset() must not throw an exception before frozen");
+        }
+
+        // Freeze the object
+        logln("Freeze the object");
+        gp.freeze();
+        if (!gp.isFrozen()) {
+            errln("FAIL: This object is already fronzen");
+        }
+
+        // reset()
+        logln("Call reset() after frozen");
+        bSet = true;
+        try {
+            gp.reset();
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: reset() must be blocked after frozen");
+        }
+
+        // setLocales(ULocale[])
+        logln("Call setLocales(ULocale[]) after frozen");
+        bSet = true;
+        try {
+            gp.setLocales(new ULocale[] {new ULocale("fr_FR")});
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(ULocale[]) must be blocked after frozen");
+        }
+
+        // setLocales(ULocale[])
+        logln("Call setLocales(List) after frozen");
+        bSet = true;
+        ArrayList list = new ArrayList(1);
+        list.add(new ULocale("fr_FR"));
+        try {
+            gp.setLocales(list);
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(List) must be blocked after frozen");
+        }
+
+        // setLocales(String)
+        logln("Call setLocales(String) after frozen");
+        bSet = true;
+        try {
+            gp.setLocales("pt-BR,es;q=0.7");
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(String) must be blocked after frozen");
+        }
+
+        // setLocale(ULocale)
+        logln("Call setLocale(ULocale) after frozen");
+        bSet = true;
+        try {
+            gp.setLocale(new ULocale("fi_FI"));
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocale(ULocale) must be blocked after frozen");
+        }
+        
+        // setTerritory(String)
+        logln("Call setTerritory(String) after frozen");
+        bSet = true;
+        try {
+            gp.setTerritory("AU");
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setTerritory(String) must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("Create a modifiable clone");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+
+        if (gp1.isFrozen()) {
+            errln("FAIL: The object returned by cloneAsThawed() must not be frozen yet");
+        }        
+
+        // setLocale(ULocale)
+        logln("Call setLocale(ULocale) of the modifiable clone");
+        bSet = true;
+        try {
+            gp1.setLocale(new ULocale("fr_FR"));
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (!bSet) {
+            errln("FAIL: setLocales(ULocale) must not throw an exception before frozen");
+        }        
+    }
+
+    static String[][] INPUT_LOCALEIDS = {
+        {"en_US"},
+        {"fr_CA", "fr"},
+        {"fr", "fr_CA"},
+        {"es", "fr", "en_US"},
+        {"zh_CN", "zh_Hans", "zh_Hans_CN"},
+        {"en_US_123"},
+        {"es_US", "es"},
+        {"de_DE", "es", "fr_FR"},
+    };
+
+    static String[] ACCEPT_LANGUAGES = {
+        "en-US",
+        "fr-CA,fr;q=0.5",
+        "fr_CA;q=0.5,fr",
+        "es,fr;q=0.76,en_US;q=0.75",
+        "zh-CN,zh-Hans;q=0.5,zh-Hans-CN;q=0.1",
+        "en-US-123",
+        "  es\t; q   =0.5 \t, es-US ;q   =1",
+        "fr-FR; q=0.5, de-DE, es",
+    };
+
+    static String[][] RESULTS_LOCALEIDS = {
+        {"en_US", "en"},
+        {"fr_CA", "fr"},
+        {"fr_CA", "fr"},
+        {"es", "fr", "en_US", "en"},
+        {"zh_Hans_CN", "zh_CN", "zh_Hans", "zh"},
+        {"en_US_123", "en_US", "en"},
+        {"es_US", "es"},
+        {"de_DE", "de", "es", "fr_FR", "fr"},
+    };
+
+    public void TestSetLocales() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // setLocales(List)
+        for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {
+            String[] localeStrings = INPUT_LOCALEIDS[i];
+            ArrayList locales = new ArrayList();
+            StringBuffer sb = new StringBuffer();
+            for (int j = 0; j < localeStrings.length; j++) {
+                locales.add(new ULocale(localeStrings[j]));
+                if (j != 0) {
+                    sb.append(", ");
+                }
+                sb.append(localeStrings[j]);
+            }
+            logln("Input locales: " + sb.toString());
+            
+            gp.reset();
+            gp.setLocales(locales);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+        
+        // setLocales(ULocale[])
+        for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {
+            String[] localeStrings = INPUT_LOCALEIDS[i];
+            ULocale[] localeArray = new ULocale[INPUT_LOCALEIDS[i].length];
+            StringBuffer sb = new StringBuffer();
+            for (int j = 0; j < localeStrings.length; j++) {
+                localeArray[j] = new ULocale(localeStrings[j]);
+                if (j != 0) {
+                    sb.append(", ");
+                }
+                sb.append(localeStrings[j]);
+            }
+            logln("Input locales: " + sb.toString());
+            
+            gp.reset();
+            gp.setLocales(localeArray);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+
+        // setLocales(String)
+        for (int i = 0; i < ACCEPT_LANGUAGES.length; i++) {
+            String acceptLanguage = ACCEPT_LANGUAGES[i];
+            logln("Accept language: " + acceptLanguage);
+            
+            gp.reset();
+            gp.setLocales(acceptLanguage);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+
+
+        // accept-language without q-value
+        logln("Set accept-language - de,de-AT");
+        gp.setLocales("de,de-AT");
+        if (!gp.getLocale(0).toString().equals("de_AT")) {
+            errln("FAIL: getLocale(0) returns " + gp.getLocale(0).toString() + " Expected: de_AT");
+        }
+        
+        // Invalid accept-language
+        logln("Set locale - ko_KR");
+        gp.setLocale(new ULocale("ko_KR"));
+        boolean bException = false;
+        try {
+            logln("Set invlaid accept-language - ko=100");
+            gp.setLocales("ko=100");
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException was thrown");
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: IllegalArgumentException was not thrown for illegal accept-language - ko=100");
+        }
+        if (!gp.getLocale(0).toString().equals("ko_KR")) {
+            errln("FAIL: Previous valid locale list had gone");
+        }
+    }
+
+    public void TestResourceBundle() {
+        String baseName = "com.ibm.icu.dev.data.resources.TestDataElements";
+        ResourceBundle rb;
+
+        logln("Get a resource bundle " + baseName + 
+                " using GlobalizationPreferences initialized by locales - en_GB, en_US");
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("en_GB");
+        locales[1] = new ULocale("en_US");
+        gp.setLocales(locales);
+
+        try {
+            rb = gp.getResourceBundle(baseName);
+            String str = rb.getString("from_en_US");
+            if (!str.equals("This data comes from en_US")) {
+                errln("FAIL: from_en_US is not from en_US bundle");
+            }
+        } catch (MissingResourceException mre) {
+            errln("FAIL: Missing resouces");
+        }
+
+        gp.reset();
+
+        logln("Get a resource bundle " + baseName + 
+        " using GlobalizationPreferences initialized by locales - ja, en_US_California");
+
+        locales = new ULocale[2];
+        locales[0] = new ULocale("ja");
+        locales[1] = new ULocale("en_US_California");
+        gp.setLocales(locales);
+        
+        try {
+            rb = gp.getResourceBundle(baseName, Thread.currentThread().getContextClassLoader());
+            String str = rb.getString("from_en_US");
+            if (!str.equals("This data comes from en_US")) {
+                errln("FAIL: from_en_US is not from en_US bundle");
+            }
+        } catch (MissingResourceException mre) {
+            errln("FAIL: Missing resouces");
+        }
+
+        logln("Get a resource bundle which does not exist");
+        boolean bException = false;
+        try {
+            rb = gp.getResourceBundle("foo.bar.XXX");
+        } catch (MissingResourceException mre) {
+            logln("Missing resource exception for getting resource bundle - foo.bar.XXX");
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: MissingResourceException must be thrown for RB - foo.bar.XXX");
+        }
+    }
+
+    public void TestTerritory() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Territory for unsupported language locale
+        logln("Set locale - ang");
+        gp.setLocale(new ULocale("ang"));
+        String territory = gp.getTerritory();
+        if (!territory.equals("US")) {
+            errln("FAIL: Territory is " + territory + " - Expected: US");
+        }
+
+        // Territory for language only locale "fr"
+        logln("Set locale - fr");
+        gp.setLocale(new ULocale("fr"));
+        territory = gp.getTerritory();
+        if (!territory.equals("FR")) {
+            errln("FAIL: Territory is " + territory + " - Expected: FR");
+        }
+
+
+        // Set explicity territory
+        logln("Set explicit territory - CA");
+        gp.setTerritory("CA");
+        territory = gp.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is " + territory + " - Expected: CA");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        gp.freeze();
+        
+        boolean bFrozen = false;
+        try {
+            gp.setTerritory("FR");
+        } catch (UnsupportedOperationException uoe) {
+            logln("setTerritory is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setTerritory must be blocked after frozen");
+        }
+        territory = gp.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is not CA");
+        }
+
+        // Safe clone
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        territory = gp1.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is " + territory + " - Expected: CA");
+        }
+
+        gp1.reset();
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("ja");
+        locales[1] = new ULocale("zh_Hant_TW");
+ 
+        logln("Set locales - ja, zh_Hant_TW");
+        gp1.setLocales(locales);
+
+        territory = gp1.getTerritory();
+        if (!territory.equals("TW")) {
+            errln("FAIL: Territory is " + territory + " - Expected: TW");
+        }
+    }
+
+    public void TestCurrency() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set language only locale - ja
+        logln("Set locale - ja");
+        gp.setLocale(new ULocale("ja"));
+        Currency cur = gp.getCurrency();
+        String code = cur.getCurrencyCode();
+        if (!code.equals("JPY")) {
+            errln("FAIL: Currency is " + code + " - Expected: JPY");
+        }
+
+        gp.reset();
+        // Set locales with territory
+        logln("Set locale - ja_US");
+        gp.setLocale(new ULocale("ja_US"));
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("USD")) {
+            errln("FAIL: Currency is " + code + " - Expected: USD");
+        }
+
+        // Set locales with territory in the second locale
+        logln("Set locales - it, en_US");
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("it");
+        locales[1] = new ULocale("en_US");
+        gp.setLocales(locales);
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("USD")) {
+            errln("FAIL: Currency is " + code + " - Expected: USD");
+        }
+
+        // Set explicit territory
+        logln("Set territory - DE");
+        gp.setTerritory("DE");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("EUR")) {
+            errln("FAIL: Currency is " + code + " - Expected: EUR");
+        }
+
+        // Set explicit currency
+        Currency ecur = Currency.getInstance("BRL");
+        gp.setCurrency(ecur);
+        logln("Set explicit currency - BRL");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Set explicit territory again
+        logln("Set territory - JP");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        Currency ecur2 = Currency.getInstance("CHF");
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCurrency(ecur2);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCurrency is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setCurrency must be blocked");
+        }
+
+        // Safe clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Set ecplicit currency
+        gp1.setCurrency(ecur2);
+        cur = gp1.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("CHF")) {
+            errln("FAIL: Currency is " + code + " - Expected: CHF");
+        }
+    }
+
+    public void TestCalendar() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - pt_BR
+        logln("Set locale - pt");
+        gp.setLocale(new ULocale("pt"));
+        Calendar cal = gp.getCalendar();
+        String calType = cal.getType();
+        if (!calType.equals("gregorian")) {
+            errln("FAIL: Calendar type is " + calType + " Expected: gregorian");
+        }
+
+        // Set a list of locales
+        logln("Set locales - en, en_JP, en_GB");
+        ULocale[] locales = new ULocale[3];
+        locales[0] = new ULocale("en");
+        locales[1] = new ULocale("en_JP");
+        locales[2] = new ULocale("en_GB");
+        gp.setLocales(locales);
+
+        cal = gp.getCalendar();
+        ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);
+        if (!calLocale.equals(locales[2])) {
+            errln("FAIL: Calendar locale is " + calLocale.toString() + " - Expected: en_GB");
+        }
+
+        // Set ecplicit calendar
+        logln("Set Japanese calendar to this object");
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        gp.setCalendar(jcal);
+        cal = gp.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("japanese")) {
+            errln("FAIL: Calendar type is " + calType + " Expected: japanese");
+        }
+
+        jcal.setFirstDayOfWeek(3);
+        if (cal.getFirstDayOfWeek() == jcal.getFirstDayOfWeek()) {
+            errln("FAIL: Calendar returned by getCalendar must be a safe copy");
+        }
+        cal.setFirstDayOfWeek(3);
+        Calendar cal1 = gp.getCalendar();
+        if (cal1.getFirstDayOfWeek() == cal.getFirstDayOfWeek()) {
+            errln("FAIL: Calendar returned by getCalendar must be a safe copy");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        IslamicCalendar ical = new IslamicCalendar();
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCalendar(ical);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCalendar is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setCalendar must be blocked");
+        }
+
+        // Safe clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        cal = gp.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("japanese")) {
+            errln("FAIL: Calendar type afte clone is " + calType + " Expected: japanese");
+        }
+
+        logln("Set islamic calendar");
+        gp1.setCalendar(ical);
+        cal = gp1.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("islamic")) {
+            errln("FAIL: Calendar type afte clone is " + calType + " Expected: islamic");
+        }
+    }
+
+    public void TestTimeZone() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - zh_CN 
+        logln("Set locale - zh_CN");
+        gp.setLocale(new ULocale("zh_CN"));
+        TimeZone tz = gp.getTimeZone();
+        String tzid = tz.getID();
+        if (!tzid.equals("Asia/Shanghai")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Asia/Shanghai");
+        }
+
+        // Set locale - en
+        logln("Set locale - en");
+        gp.setLocale(new ULocale("en"));
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("America/New_York")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: America/New_York");
+        }
+
+        // Set territory - GB
+        logln("Set territory - GB");
+        gp.setTerritory("GB");
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("Europe/London")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");
+        }
+
+        // Check if getTimeZone returns a safe clone
+        tz.setID("Bad_ID");
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("Europe/London")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");
+        }
+
+        // Set explicit time zone
+        TimeZone jst = TimeZone.getTimeZone("Asia/Tokyo");
+        String customJstId = "Japan_Standard_Time";
+        jst.setID(customJstId);
+        gp.setTimeZone(jst);
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(customJstId)) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        TimeZone cst = TimeZone.getTimeZone("Europe/Paris");
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setTimeZone(cst);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setTimeZone is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setTimeZone must be blocked");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        tz = gp1.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(customJstId)) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);
+        }
+
+        // Set explicit time zone
+        gp1.setTimeZone(cst);
+        tz = gp1.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(cst.getID())) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + cst.getID());
+        }        
+    }
+
+    public void TestCollator() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - tr
+        logln("Set locale - tr");
+        gp.setLocale(new ULocale("tr"));
+        Collator coll = gp.getCollator();
+        String locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("tr")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: tr");
+        }
+
+        // Unsupported collator locale - zun
+        logln("Set locale - zun");
+        gp.setLocale(new ULocale("zun"));
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("root")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: root");
+        }
+
+        // Set locales - en_JP, fr, en_US, fr_FR
+        logln("Set locale - en_JP, fr, en_US, fr_FR");
+        ULocale[] locales = new ULocale[4];
+        locales[0] = new ULocale("en_JP");
+        locales[1] = new ULocale("fr");
+        locales[2] = new ULocale("en_US");
+        locales[3] = new ULocale("fr_FR");
+        gp.setLocales(locales);
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("fr_FR")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: fr_FR");
+        }
+
+        // Set explicit Collator
+        Collator coll1 = Collator.getInstance(new ULocale("it"));
+        coll1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        logln("Set collator for it in canonical deconposition mode");
+        gp.setCollator(coll1);
+        coll1.setStrength(Collator.IDENTICAL);
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("it")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: it");
+        }
+        if (coll1.equals(coll)) {
+            errln("FAIL: setCollator must use a safe copy of a Collator");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCollator(coll1);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCollator is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setCollator must be blocked after freeze");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        coll = gp1.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("it")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: it");
+        }
+        if (coll.getDecomposition() != Collator.CANONICAL_DECOMPOSITION) {
+            errln("FAIL: Decomposition mode is not CANONICAL_DECOMPOSITION");
+        }
+
+        // Set custom collator again
+        gp1.setCollator(coll1);
+        coll = gp1.getCollator();
+        if (coll.getStrength() != Collator.IDENTICAL) {
+            errln("FAIL: Strength is not IDENTICAL");
+        }
+    }
+
+    public void TestBreakIterator() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Unsupported break iterator locale - aar
+        logln("Set locale - aar");
+        gp.setLocale(new ULocale("aar"));
+        BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_LINE);
+        String locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("root")) {
+            errln("FAIL: Line break iterator locale is " + locStr + " Expected: root");
+        }
+
+        // Set locale - es
+        logln("Set locale - es");
+        gp.setLocale(new ULocale("es"));
+        brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);
+        /* TODO: JB#5383
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("es")) {
+            errln("FAIL: Character break iterator locale is " + locStr + " Expected: es");
+        }
+        */
+
+        // Set explicit break sentence iterator
+        logln("Set break iterator for sentence using locale hu_HU");
+        BreakIterator brk1 = BreakIterator.getSentenceInstance(new ULocale("hu_HU"));
+        gp.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brk1);
+
+        brk = gp.getBreakIterator(GlobalizationPreferences.BI_SENTENCE);
+        /* TODO: JB#5210
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("hu_HU")) {
+            errln("FAIL: Sentence break locale is " + locStr + " Expected: hu_HU");
+        }
+        */
+        brk.setText("This is a test case.  Is this a new instance?");
+        brk.next();
+        if (brk1.current() == brk.current()) {
+            errln("FAIL: getBreakIterator must return a new instance");
+        }
+
+        // Illegal argument
+        logln("Get break iterator type 100");
+        boolean illegalArg = false;
+        try {
+            brk = gp.getBreakIterator(100);
+        } catch (IllegalArgumentException iae) {
+            logln("Break iterator type 100 is illegal");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getBreakIterator must throw IllegalArgumentException for type 100");
+        }
+        logln("Set break iterator type -1");
+        illegalArg = false;
+        try {
+            gp.setBreakIterator(-1, brk1);
+        } catch (IllegalArgumentException iae) {
+            logln("Break iterator type -1 is illegal");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getBreakIterator must throw IllegalArgumentException for type -1");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        BreakIterator brk2 = BreakIterator.getTitleInstance(new ULocale("es_MX"));
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setBreakIterator(GlobalizationPreferences.BI_TITLE, brk2);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setBreakIterator is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setBreakIterator must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        brk = gp1.getBreakIterator(GlobalizationPreferences.BI_WORD);
+        /* TODO: JB#5383
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("es")) {
+            errln("FAIL: Word break iterator locale is " + locStr + " Expected: es");
+        }
+        */
+
+        ULocale frFR = new ULocale("fr_FR");
+        BreakIterator brkC = BreakIterator.getCharacterInstance(frFR);
+        BreakIterator brkW = BreakIterator.getWordInstance(frFR);
+        BreakIterator brkL = BreakIterator.getLineInstance(frFR);
+        BreakIterator brkS = BreakIterator.getSentenceInstance(frFR);
+        BreakIterator brkT = BreakIterator.getTitleInstance(frFR);
+
+        gp1.setBreakIterator(GlobalizationPreferences.BI_CHARACTER, brkC);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_WORD, brkW);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_LINE, brkL);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brkS);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_TITLE, brkT);
+
+        /* TODO: JB#5210
+        locStr = brkC.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Character break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkW.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Word break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkL.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Line break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkS.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Sentence break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkT.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Title break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        */
+    }
+
+    public void TestDisplayName() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        ULocale loc_fr_FR_Paris = new ULocale("fr_FR_Paris");
+        ULocale loc_peo = new ULocale("peo");
+
+        // Locale list - fr_FR_Paris
+        ArrayList locales1 = new ArrayList(1);
+        locales1.add(loc_fr_FR_Paris);
+
+        // Locale list - ain, fr_FR_Paris
+        ArrayList locales2 = new ArrayList(2);
+        locales2.add(loc_peo);
+        locales2.add(loc_fr_FR_Paris);
+
+        logln("Locales: <default> | <fr_FR_Paris> | <ain, fr_FR_Paris>");
+
+        // ID_LOCALE
+        String id = "zh_Hant_HK";
+        String name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+        gp.setLocales(locales1);
+        String name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+        gp.setLocales(locales2);
+        String name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+
+        logln("Locale[zh_Hant_HK]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Locale ID");
+        }
+
+        // ID_LANGUAGE
+        gp.reset();
+        id = "fr";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+
+        logln("Language[fr]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Language ID");
+        }
+
+        // ID_SCRIPT
+        gp.reset();
+        id = "cyrl";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+
+        logln("Script[cyrl]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Script ID");
+        }
+
+        // ID_TERRITORY
+        gp.reset();
+        id = "JP";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+
+        logln("Territory[JP]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Territory ID");
+        }
+
+        // ID_VARIANT
+        gp.reset();
+        id = "NEDIS";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+
+        logln("Variant[NEDIS]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Variant ID");
+        }
+
+        // ID_KEYWORD
+        gp.reset();
+        id = "collation";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+
+        logln("Keyword[collation]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Keyword ID");
+        }
+
+        // ID_KEYWORD_VALUE
+        gp.reset();
+        id = "collation=traditional";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+
+        logln("Keyword value[traditional]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Keyword value ID");
+        }
+
+        // ID_CURRENCY_SYMBOL
+        gp.reset();
+        id = "USD";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+
+        logln("Currency symbol[USD]: " + name1 + " | " + name2 + " | " + name3);
+        String dollar = "$";
+        String us_dollar = "$US";
+        if (!name1.equals(dollar) || !name2.equals(us_dollar) || !name3.equals(us_dollar)) {
+            errln("FAIL: Currency symbol ID");
+        }
+
+        // ID_CURRENCY
+        gp.reset();
+        id = "USD";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+
+        logln("Currency[USD]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Currency ID");
+        }
+
+        // ID_TIMEZONE
+        gp.reset();
+        id = "Europe/Paris";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+
+        logln("Timezone[Europe/Paris]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Timezone ID");
+        }
+
+        // Illegal ID
+        gp.reset();
+        boolean illegalArg = false;
+        try {
+            name1 = gp.getDisplayName(id, -1);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal type -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDisplayName must throw IllegalArgumentException for type -1");
+        }
+
+        illegalArg = false;
+        try {
+            name1 = gp.getDisplayName(id, 100);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal type 100");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDisplayName must throw IllegalArgumentException for type 100");
+        }
+    }
+
+    public void TestDateFormat() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        String pattern;
+        DateFormat df;
+
+        // Set unsupported locale - ach
+        logln("Set locale - ach");
+        gp.setLocale(new ULocale("ach"));
+
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        // root pattern must be used
+        if (!pattern.equals("yyyy-MM-dd")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: yyyy-MM-dd");
+        }
+
+        // Set locale - fr, fr_CA, fr_FR
+        ArrayList lcls = new ArrayList(3);
+        lcls.add(new ULocale("fr"));
+        lcls.add(new ULocale("fr_CA"));
+        lcls.add(new ULocale("fr_FR"));
+        logln("Set locales - fr, fr_CA, fr_FR");
+        gp.setLocales(lcls);
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        // fr_CA pattern must be used
+        if (!pattern.equals("yy-MM-dd")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: yy-MM-dd");
+        }
+
+
+        // Set locale - en_GB
+        logln("Set locale - en_GB");
+        gp.setLocale(new ULocale("en_GB"));
+        
+        // Date - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("EEEE, d MMMM yyyy")) {
+            errln("FAIL: FULL date pattern is " + pattern + " Expected: EEEE, d MMMM yyyy");
+        }
+
+        // Date - long
+        df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMMM yyyy")) {
+            errln("FAIL: LONG date pattern is " + pattern + " Expected: d MMMM yyyy");
+        }
+
+        // Date - medium
+        df = gp.getDateFormat(GlobalizationPreferences.DF_MEDIUM, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMM yyyy")) {
+            errln("FAIL: MEDIUM date pattern is " + pattern + " Expected: d MMM yyyy");
+        }
+
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("dd/MM/yyyy")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: dd/MM/yyyy");
+        }
+
+        // Time - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_FULL);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss v")) {
+            errln("FAIL: FULL time pattern is " + pattern + " Expected: HH:mm:ss v");
+        }
+
+        // Time - long
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_LONG);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss z")) {
+            errln("FAIL: LONG time pattern is " + pattern + " Expected: HH:mm:ss z");
+        }
+
+        // Time - medium
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_MEDIUM);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss")) {
+            errln("FAIL: MEDIUM time pattern is " + pattern + " Expected: HH:mm:ss");
+        }
+
+        // Time - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_SHORT);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm")) {
+            errln("FAIL: SHORT time pattern is " + pattern + " Expected: HH:mm");
+        }
+
+        // Date/Time - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_FULL);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("EEEE, d MMMM yyyy HH:mm:ss v")) {
+            errln("FAIL: FULL date/time pattern is " + pattern + " Expected: EEEE, d MMMM yyyy HH:mm:ss v");
+        }
+
+        // Invalid style
+        boolean illegalArg = false;
+        try {
+            df = gp.getDateFormat(-1, GlobalizationPreferences.DF_NONE);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal date style -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle -1");
+        }
+
+        illegalArg = false;
+        try {
+            df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_NONE);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal style - dateStyle:DF_NONE / timeStyle:DF_NONE");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle:DF_NONE/timeStyle:DF_NONE");
+        }
+
+        // Set explicit time zone
+        logln("Set timezone - America/Sao_Paulo");
+        TimeZone tz = TimeZone.getTimeZone("America/Sao_Paulo");
+        gp.setTimeZone(tz);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_MEDIUM);
+        String tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Set explicit calendar
+        logln("Set calendar - japanese");
+        Calendar jcal = new JapaneseCalendar();
+        jcal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
+        gp.setCalendar(jcal);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);
+        Calendar dfCal = df.getCalendar();
+        if (!(dfCal instanceof JapaneseCalendar)) {
+            errln("FAIL: The DateFormat instance must use Japanese calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Set explicit DateFormat
+        logln("Set explicit date format - full date");
+        DateFormat customFD = DateFormat.getDateInstance(new IslamicCalendar(), DateFormat.FULL, new ULocale("ar_SA"));
+        customFD.setTimeZone(TimeZone.getTimeZone("Asia/Riyadh"));
+        gp.setDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE, customFD);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof IslamicCalendar)) {
+            errln("FAIL: The DateFormat instance must use Islamic calendar");
+        }
+        // TimeZone in the custom DateFormat is overridden by GP's timezone setting
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        gp.freeze();
+        DateFormat customLD = DateFormat.getDateInstance(new BuddhistCalendar(), DateFormat.LONG, new ULocale("th"));
+        customLD.setTimeZone(TimeZone.getTimeZone("Asia/Bangkok"));
+        boolean isFrozen = false;
+        try {
+            gp.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setDateFormat is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setDateFormat must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        gp1.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);
+        
+        df = gp1.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof JapaneseCalendar)) {
+            errln("FAIL: The DateFormat instance must use Japanese calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        df = gp1.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof BuddhistCalendar)) {
+            errln("FAIL: The DateFormat instance must use Buddhist calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+    }
+
+    public void TestNumberFormat() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        NumberFormat nf;
+        String numStr;
+        double num = 123456.789;
+
+        // Set unsupported locale with supported territory ang_KR
+        logln("Set locale - ang_KR");
+        gp.setLocale(new ULocale("ang_KR"));
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("KRW\u00a0123,457")) {
+            errln("FAIL: Number string is " + numStr + " Expected: KRW\u00a0123,457");
+        }
+        
+        // Set locale - de_DE
+        logln("Set locale - de_DE");
+        gp.setLocale(new ULocale("de_DE"));
+
+        // NF_NUMBER
+        logln("NUMBER type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,789")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,789");
+        }
+
+        // NF_CURRENCY
+        logln("CURRENCY type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0\u20AC")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u20AC");
+        }
+
+        // NF_PERCENT
+        logln("PERCENT type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);
+        numStr = nf.format(num);
+        if (!numStr.equals("12.345.679\u00a0%")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 12.345.679\u00a0%");
+        }
+
+        // NF_SCIENTIFIC
+        logln("SCIENTIFIC type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);
+        numStr = nf.format(num);
+        if (!numStr.equals("1,23456789E5")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 1,23456789E5");
+        }
+
+        // NF_INTEGER
+        logln("INTEGER type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.457")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.457");
+        }
+
+        // Invalid number type
+        logln("INVALID type");
+        boolean illegalArg = false;
+        try {
+            nf = gp.getNumberFormat(100);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal number format type 100");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getNumberFormat must throw IllegalArgumentException for type 100");
+        }
+        illegalArg = false;
+        try {
+            nf = gp.getNumberFormat(-1);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal number format type -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getNumberFormat must throw IllegalArgumentException for type -1");
+        }
+        
+        // Set explicit territory
+        logln("Set territory - US");
+        gp.setTerritory("US");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0$")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0$");
+        }
+
+        // Set explicit currency
+        logln("Set currency - GBP");
+        gp.setCurrency(Currency.getInstance("GBP"));
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0\u00A3")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u00A3");
+        }
+
+        // Set exliplicit NumberFormat
+        logln("Set explicit NumberFormat objects");
+        NumberFormat customNum = NumberFormat.getNumberInstance(new ULocale("he_IL"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum);
+        NumberFormat customCur = NumberFormat.getCurrencyInstance(new ULocale("zh_CN"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_CURRENCY, customCur);
+        NumberFormat customPct = NumberFormat.getPercentInstance(new ULocale("el_GR"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_PERCENT, customPct);
+        NumberFormat customSci = NumberFormat.getScientificInstance(new ULocale("ru_RU"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC, customSci);
+        NumberFormat customInt = NumberFormat.getIntegerInstance(new ULocale("pt_PT"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_INTEGER, customInt);
+
+        
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {
+            errln("FAIL: The NumberFormat instance must use locale he_IL");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("zh_CN")) {
+            errln("FAIL: The NumberFormat instance must use locale zh_CN");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("el_GR")) {
+            errln("FAIL: The NumberFormat instance must use locale el_GR");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("ru_RU")) {
+            errln("FAIL: The NumberFormat instance must use locale ru_RU");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("pt_PT")) {
+            errln("FAIL: The NumberFormat instance must use locale pt_PT");
+        }
+
+        NumberFormat customNum1 = NumberFormat.getNumberInstance(new ULocale("hi_IN"));
+
+        // Freeze
+        logln("Freeze this object");
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setNumberFormat is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setNumberFormat must be blocked after frozen");
+        }
+
+        // Create a modifiable clone
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+
+        // Number type format's locale is still he_IL
+        nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {
+            errln("FAIL: The NumberFormat instance must use locale he_IL");
+        }
+
+        logln("Set custom number format using locale hi_IN");
+        gp1.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);
+        nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("hi_IN")) {
+            errln("FAIL: The NumberFormat instance must use locale hi_IN");
+        }
+    }
+
+    /*
+     * JB#5380 GlobalizationPreferences#getCalendar() should return a Calendar object
+     * initialized with the current time
+     */
+    public void TestJB5380() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        GregorianCalendar gcal = new GregorianCalendar();
+
+        // set way old date
+        gcal.set(Calendar.YEAR, 1950);
+
+        // set calendar to GP
+        gp.setCalendar(gcal);
+
+        Calendar cal = gp.getCalendar();
+        // Calendar instance returned from GP should be initialized
+        // by the current time
+        long timeDiff = System.currentTimeMillis() - cal.getTimeInMillis();
+        if (Math.abs(timeDiff) > 1000) {
+            // if difference is more than 1 second..
+            errln("FAIL: The Calendar was not initialized by current time - difference:" + timeDiff);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
new file mode 100644
index 0000000..e0cd6e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
@@ -0,0 +1,270 @@
+/***************************************************************************************
+ *
+ *   Copyright (C) 1996-2007, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ */
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormat
+ * Source File: java/text/format/IntlTestDateFormat.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.ULocale;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Random;
+import java.util.Date;
+
+public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
+    // Values in milliseconds (== Date)
+    private static final long ONESECOND = 1000;
+    private static final long ONEMINUTE = 60 * ONESECOND;
+    private static final long ONEHOUR = 60 * ONEMINUTE;
+    private static final long ONEDAY = 24 * ONEHOUR;
+    //private static final double ONEYEAR = 365.25 * ONEDAY; // Approximate //The variable is never used
+
+    // EModes
+    //private static final byte GENERIC = 0;
+    //private static final byte TIME = GENERIC + 1; //The variable is never used
+    //private static final byte DATE = TIME + 1; //The variable is never used
+    //private static final byte DATE_TIME = DATE + 1; //The variable is never used
+
+    private DateFormat fFormat = null;
+    private String fTestName = new String("getInstance");
+    private int fLimit = 3; // How many iterations it should take to reach convergence
+    private Random random; // initialized in randDouble
+
+    public IntlTestDateFormat() {
+        //Constructure
+    } 
+    protected void init() throws Exception{
+        fFormat = DateFormat.getInstance();
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormat().run(args);
+    }
+
+    public void TestULocale() {
+        localeTest(ULocale.getDefault(), "Default Locale");
+    }
+
+    // This test does round-trip testing (format -> parse -> format -> parse -> etc.) of DateFormat.
+    public void localeTest(final ULocale locale, final String localeName) {
+        int timeStyle, dateStyle;
+
+        // For patterns including only time information and a timezone, it may take
+        // up to three iterations, since the timezone may shift as the year number
+        // is determined.  For other patterns, 2 iterations should suffice.
+        fLimit = 3;
+
+        for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+            fTestName = new String("Time test " + timeStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getTimeInstance(timeStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest time getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        fLimit = 2;
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            fTestName = new String("Date test " + dateStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getDateInstance(dateStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest date getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+                fTestName = new String("DateTime test " + dateStyle + "/" + timeStyle + " (" + localeName + ")");
+                try {
+                    fFormat = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
+                }
+                catch(StringIndexOutOfBoundsException e) {
+                    errln("FAIL: localeTest date/time getDateTimeInstance exception");
+                    throw e;
+                }
+                TestFormat();
+            }
+        }
+    }
+
+    public void TestFormat() {
+        if (fFormat == null) {
+            errln("FAIL: DateFormat creation failed");
+            return;
+        }
+        //        logln("TestFormat: " + fTestName);
+        Date now = new Date();
+        tryDate(new Date(0));
+        tryDate(new Date((long) 1278161801778.0));
+        tryDate(now);
+        // Shift 6 months into the future, AT THE SAME TIME OF DAY.
+        // This will test the DST handling.
+        tryDate(new Date(now.getTime() + 6*30*ONEDAY));
+
+        Date limit = new Date(now.getTime() * 10); // Arbitrary limit
+        for (int i=0; i<2; ++i)
+            //            tryDate(new Date(floor(randDouble() * limit)));
+            tryDate(new Date((long) (randDouble() * limit.getTime())));
+    }
+
+    private void describeTest() {
+        if (fFormat == null) {
+            errln("FAIL: no DateFormat");
+            return;
+        }
+
+        // Assume it's a SimpleDateFormat and get some info
+        SimpleDateFormat s = (SimpleDateFormat) fFormat;
+        logln(fTestName + " Pattern " + s.toPattern());
+    }
+    
+    private void tryDate(Date theDate) {
+        final int DEPTH = 10;
+        Date[] date = new Date[DEPTH];
+        StringBuffer[] string = new StringBuffer[DEPTH];
+
+        int dateMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+        for (i=0; i<DEPTH; ++i) string[i] = new StringBuffer();
+        for (i=0; i<DEPTH; ++i) {
+            if (i == 0) date[i] = theDate;
+            else {
+                try {
+                    date[i] = fFormat.parse(string[i-1].toString());
+                }
+                catch (ParseException e) {
+                    describeTest();
+                    errln("********** FAIL: Parse of " + string[i-1] + " failed for locale: "+fFormat.getLocale(ULocale.ACTUAL_LOCALE));
+                    dump = true;
+                    break;
+                }
+            }
+            FieldPosition position = new FieldPosition(0);
+            fFormat.format(date[i], string[i], position);
+            if (i > 0) {
+                if (dateMatch == 0 && date[i] == date[i-1]) dateMatch = i;
+                else if (dateMatch > 0 && date[i] != date[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: Date mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1]) stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (dateMatch > 0 && stringMatch > 0) break;
+        }
+        if (i == DEPTH) --i;
+
+        if (stringMatch > fLimit || dateMatch > fLimit) {
+            describeTest();
+            errln("********** FAIL: No string and/or date match within " + fLimit + " iterations.");
+            dump = true;
+        }
+
+        if (dump) {
+            for (int k=0; k<=i; ++k) {
+                logln("" + k + ": " + date[k] + " F> " + string[k] + " P> ");
+            }
+        }
+    }
+
+    // Return a random double from 0.01 to 1, inclusive
+    private double randDouble() {
+    if (random == null) {
+        random = createRandom();
+    }
+        // Assume 8-bit (or larger) rand values.  Also assume
+        // that the system rand() function is very poor, which it always is.
+        //        double d;
+        //        int i;
+        //        do {
+        //            for (i=0; i < sizeof(double); ++i)
+        //            {
+        //                char poke = (char*)&d;
+        //                poke[i] = (rand() & 0xFF);
+        //            }
+        //        } while (TPlatformUtilities.isNaN(d) || TPlatformUtilities.isInfinite(d));
+
+        //        if (d < 0.0) d = -d;
+        //        if (d > 0.0)
+        //        {
+        //            double e = floor(log10(d));
+        //            if (e < -2.0) d *= pow(10.0, -e-2);
+        //            else if (e > -1.0) d /= pow(10.0, e+1);
+        //        }
+        //        return d;
+        return random.nextDouble();
+    }
+
+    public void TestAvailableLocales() {
+        final ULocale[] locales = DateFormat.getAvailableULocales();
+        long count = locales.length;
+        logln("" + count + " available locales");
+        if (locales != null  &&  count != 0) {
+            StringBuffer all = new StringBuffer();
+            for (int i=0; i<count; ++i) {
+                if (i!=0) all.append(", ");
+                all.append(locales[i].getDisplayName());
+            }
+            logln(all.toString());
+        }
+        else errln("********** FAIL: Zero available locales or null array pointer");
+    }
+
+    public void TestRoundtrip() {
+        ULocale[] locales;
+        if (isQuick()) {
+            locales = new ULocale[] {
+                    new ULocale("bg_BG"),
+                    new ULocale("fr_CA"),
+                    new ULocale("zh_TW"),
+            };
+        } else {
+            locales = DateFormat.getAvailableULocales();
+        }
+        long count = locales.length;
+        if (locales != null  &&  count != 0) {
+            for (int i=0; i<count; ++i) {
+                String name = locales[i].getDisplayName();
+                logln("Testing " + name + "...");
+                try {
+                    localeTest(locales[i], name);
+                }
+                catch(Exception e) {
+                    errln("FAIL: TestMonster localeTest exception" + e);
+                }
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
new file mode 100644
index 0000000..b6e8f86
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
@@ -0,0 +1,220 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatAPI
+ * Source File: java/text/format/IntlTestDateFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+public class IntlTestDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatAPI().run(args);
+    }
+
+    // Test that the equals method works correctly.
+    public void TestEquals()
+    {
+        // Create two objects at different system times
+        DateFormat a = DateFormat.getInstance();
+        Date start = Calendar.getInstance().getTime();
+        while (true) {
+            // changed to remove compiler warnings.
+            if (!start.equals(Calendar.getInstance().getTime())) {
+                break; // Wait for time to change
+            }
+        }
+        DateFormat b = DateFormat.getInstance();
+
+        if (!(a.equals(b)))
+            errln("FAIL: DateFormat objects created at different times are unequal.");
+
+        // Why has this test been disabled??? - aliu
+//        if (b instanceof SimpleDateFormat)
+//        {
+//            //double ONE_YEAR = 365*24*60*60*1000.0; //The variable is never used
+//            try {
+//                ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR);
+//                if (a.equals(b))
+//                    errln("FAIL: DateFormat objects with different two digit start dates are equal.");
+//            }
+//            catch (Exception e) {
+//                errln("FAIL: setTwoDigitStartDate failed.");
+//            }
+//        }
+    }
+
+    // This test checks various generic API methods in DateFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("DateFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+
+        // ======= Test constructors
+
+        logln("Testing DateFormat constructors");
+
+        DateFormat def = DateFormat.getInstance();
+        DateFormat fr = DateFormat.getTimeInstance(DateFormat.FULL, Locale.FRENCH);
+        DateFormat it = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ITALIAN);
+        DateFormat de = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.GERMAN);
+
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( fr.equals(it) ) {
+            errln("ERROR: equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        String res3 = new String();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = fr.format(d, res1, pos1);
+        logln("" + d.getTime() + " formatted to " + res1);
+
+        res2 = it.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        res3 = de.format(d);
+        logln("" + d.getTime() + " formatted to " + res3);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Object result1 = new Date();
+        Date result2 = new Date();
+        Date result3 = new Date();
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+
+        result1 = def.parseObject(text, pos);
+        if (result1 == null) {
+            errln("ERROR: parseObject() failed for " + text);
+        }
+        logln(text + " parsed into " + ((Date)result1).getTime());
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2.getTime());
+
+        result3 = def.parse(text, pos01);
+        if (result3 == null) {
+            errln("ERROR: parse() failed for " + text);
+        }
+        logln(text + " parsed into " + result3.getTime());
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = DateFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+
+        // Ticket#6280
+        // These locales should be included in the result
+        final Locale[] samples = {
+                new Locale("zh", "CN"),
+                new Locale("zh", "TW"),
+                new Locale("zh", "HK"),
+                new Locale("sr", "RS"),
+        };
+        boolean[] available = new boolean[samples.length];
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+            for (int j = 0; j < samples.length; j++) {
+                if (locales[i].equals(samples[j])) {
+                    available[j] = true;
+                    break;
+                }
+            }
+        }
+        for (int i = 0; i < available.length; i++) {
+            if (!available[i]) {
+                errln("ERROR: missing Locale: " + samples[i]);
+            }
+        }
+
+        fr.setLenient(it.isLenient());
+        if(fr.isLenient() != it.isLenient()) {
+            errln("ERROR: setLenient() failed");
+        }
+
+        final Calendar cal = def.getCalendar();
+        Calendar newCal = (Calendar) cal.clone();
+        de.setCalendar(newCal);
+        it.setCalendar(newCal);
+        if( ! de.getCalendar().equals(it.getCalendar())) {
+            errln("ERROR: set Calendar() failed");
+        }
+
+        final NumberFormat nf = def.getNumberFormat();
+        NumberFormat newNf = (NumberFormat) nf.clone();
+        de.setNumberFormat(newNf);
+        it.setNumberFormat(newNf);
+        if( ! de.getNumberFormat().equals(it.getNumberFormat())) {
+            errln("ERROR: set NumberFormat() failed");
+        }
+
+        final TimeZone tz = def.getTimeZone();
+        TimeZone newTz = (TimeZone) tz.clone();
+        de.setTimeZone(newTz);
+        it.setTimeZone(newTz);
+        if( ! de.getTimeZone().equals(it.getTimeZone())) {
+            errln("ERROR: set TimeZone() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DateFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
new file mode 100644
index 0000000..21467c6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -0,0 +1,156 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDateFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Date;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+/*
+ * This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+ * try to test the full functionality.  It just calls each function in the class and
+ * verifies that it works on a basic level.
+ */
+public class IntlTestDateFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDateFormatAPIC().run(args);
+    }
+    
+    /**
+     * Test hiding of parse() and format() APIs in the Format hierarchy.
+     * We test the entire hierarchy, even though this test is located in
+     * the DateFormat API test.
+     */
+    public void TestNameHiding() {
+    
+        // N.B.: This test passes if it COMPILES, since it's a test of
+        // compile-time name hiding.
+    
+        Date dateObj = new Date(0);
+        Number numObj = new Double(3.1415926535897932384626433832795);
+        StringBuffer strBuffer = new StringBuffer("");
+        String str;
+        FieldPosition fpos = new FieldPosition(0);
+        ParsePosition ppos = new ParsePosition(0);
+    
+        // DateFormat calling Format API
+        {
+            logln("DateFormat");
+            DateFormat dateFmt = DateFormat.getInstance();
+            if (dateFmt != null) {
+                str = dateFmt.format(dateObj);
+                strBuffer = dateFmt.format(dateObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create DateFormat");
+            }
+        }
+    
+        // SimpleDateFormat calling Format & DateFormat API
+        {
+            logln("SimpleDateFormat");
+            SimpleDateFormat sdf = new SimpleDateFormat();
+            // Format API
+            str = sdf.format(dateObj);
+            strBuffer = sdf.format(dateObj, strBuffer, fpos);
+            // DateFormat API
+            strBuffer = sdf.format(new Date(0), strBuffer, fpos);
+            str = sdf.format(new Date(0));
+            try {
+                sdf.parse(str);
+                sdf.parse(str, ppos);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        // NumberFormat calling Format API
+        {
+            logln("NumberFormat");
+            NumberFormat fmt = NumberFormat.getInstance();
+            if (fmt != null) {
+                str = fmt.format(numObj);
+                strBuffer = fmt.format(numObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create NumberFormat");
+            }
+        }
+    
+        // DecimalFormat calling Format & NumberFormat API
+        {
+            logln("DecimalFormat");
+            DecimalFormat fmt = new DecimalFormat();
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+                if(obj==null){
+                    errln("FAIL: The format object could not parse the string : "+str);
+                }
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+        
+        //ICU4J have not the classes ChoiceFormat and MessageFormat
+        /*
+        // ChoiceFormat calling Format & NumberFormat API
+        {
+            logln("ChoiceFormat");
+            ChoiceFormat fmt = new ChoiceFormat("0#foo|1#foos|2#foos");
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        
+        // MessageFormat calling Format API
+        {
+            logln("MessageFormat");
+            MessageFormat fmt = new MessageFormat("");
+            // Format API
+            // We use dateObj, which MessageFormat should reject.
+            // We're testing name hiding, not the format method.
+            try {
+                str = fmt.format(dateObj);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+            try {
+                strBuffer = fmt.format(dateObj, strBuffer, fpos);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+        }
+        */
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
new file mode 100644
index 0000000..a0882f0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
@@ -0,0 +1,479 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatSymbols
+ * Source File: java/text/format/IntlTestDateFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format Symbols
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+
+public class IntlTestDateFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatSymbols().run(args);
+    }
+
+    // Test getMonths
+    public void TestGetMonths()
+    {
+        final String[] month;
+        DateFormatSymbols symbol;
+
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        month=symbol.getMonths();
+        int cnt = month.length;
+
+        logln("size = " + cnt);
+
+        for (int i=0; i<cnt; ++i)
+        {
+            logln(month[i]);
+        }
+    }
+
+    public void TestGetMonths2()
+    {
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};
+        int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};
+        
+        for (int i = 0; i < context.length; i++) {
+            for (int j = 0; j < width.length; j++) {
+                String[] month =symbol.getMonths(context[i],width[j]);
+                int cnt = month.length;
+
+                logln("size = " + cnt);
+
+                for (int k = 0; k < month.length; k++) {
+                    logln(month[k]);
+                }
+            }
+        }
+    }
+    
+    public void TestGetWeekdays2(){
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};
+        int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};
+        
+        for (int i = 0; i < context.length; i++) {
+            for (int j = 0; j < width.length; j++) {
+                String[] wd =symbol.getWeekdays(context[i],width[j]);
+                int cnt = wd.length;
+
+                logln("size = " + cnt);
+
+                for (int k = 0; k < wd.length; k++) {
+                    logln(wd[k]);
+                }
+            }
+        }
+        
+    }
+    
+    public void TestGetEraNames(){
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+        String[] s = symbol.getEraNames();
+        for (int i = 0; i < s.length; i++) {
+            logln(s[i]);
+        }
+        
+    }
+
+    // Test the API of DateFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DateFormatSymbols fr = new DateFormatSymbols(Locale.FRENCH);
+        DateFormatSymbols fr2 = new DateFormatSymbols(Locale.FRENCH);
+
+        DateFormatSymbols en = new DateFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DateFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        long count;
+        final String[] eras = en.getEras();
+        fr.setEras(eras);
+        final String[] eras1 = fr.getEras();
+        count = eras.length;
+        if( count != eras1.length) {
+            errln("ERROR: setEras() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! eras[i].equals(eras1[i])) {
+                    errln("ERROR: setEras() failed (different string values)");
+                }
+            }
+        }
+
+
+        final String[] months = en.getMonths();
+        fr.setMonths(months);
+        final String[] months1 = fr.getMonths();
+        count = months.length;
+        if( count != months1.length) {
+            errln("ERROR: setMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! months[i].equals(months1[i])) {
+                    errln("ERROR: setMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortMonths = en.getShortMonths();
+        fr.setShortMonths(shortMonths);
+        final String[] shortMonths1 = fr.getShortMonths();
+        count = shortMonths.length;
+        if( count != shortMonths1.length) {
+            errln("ERROR: setShortMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortMonths[i].equals(shortMonths1[i])) {
+                    errln("ERROR: setShortMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setMonths(wideMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideMonths.length;
+        if( count != wideMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideMonths[i].equals(wideMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setMonths(abbrMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrMonths.length;
+        if( count != abbrMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrMonths[i].equals(abbrMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] narrowMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        fr.setMonths(narrowMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        final String[] narrowMonths1 = fr.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        count = narrowMonths.length;
+        if( count != narrowMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! narrowMonths[i].equals(narrowMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setMonths(standaloneMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneMonths.length;
+        if( count != standaloneMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneMonths[i].equals(standaloneMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setMonths(standaloneShortMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortMonths.length;
+        if( count != standaloneShortMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortMonths[i].equals(standaloneShortMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneNarrowMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        fr.setMonths(standaloneNarrowMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        final String[] standaloneNarrowMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        count = standaloneNarrowMonths.length;
+        if( count != standaloneNarrowMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneNarrowMonths[i].equals(standaloneNarrowMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] weekdays = en.getWeekdays();
+        fr.setWeekdays(weekdays);
+        final String[] weekdays1 = fr.getWeekdays();
+        count = weekdays.length;
+        if( count != weekdays1.length) {
+            errln("ERROR: setWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! weekdays[i].equals(weekdays1[i])) {
+                    errln("ERROR: setWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortWeekdays = en.getShortWeekdays();
+        fr.setShortWeekdays(shortWeekdays);
+        final String[] shortWeekdays1 = fr.getShortWeekdays();
+        count = shortWeekdays.length;
+        if( count != shortWeekdays1.length) {
+            errln("ERROR: setShortWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortWeekdays[i].equals(shortWeekdays1[i])) {
+                    errln("ERROR: setShortWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setWeekdays(wideWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideWeekdays.length;
+        if( count != wideWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideWeekdays[i].equals(wideWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setWeekdays(abbrWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrWeekdays.length;
+        if( count != abbrWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrWeekdays[i].equals(abbrWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] narrowWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        fr.setWeekdays(narrowWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        final String[] narrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        count = narrowWeekdays.length;
+        if( count != narrowWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! narrowWeekdays[i].equals(narrowWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setWeekdays(standaloneWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneWeekdays.length;
+        if( count != standaloneWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneWeekdays[i].equals(standaloneWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setWeekdays(standaloneShortWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortWeekdays.length;
+        if( count != standaloneShortWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortWeekdays[i].equals(standaloneShortWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneNarrowWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        fr.setWeekdays(standaloneNarrowWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        final String[] standaloneNarrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        count = standaloneNarrowWeekdays.length;
+        if( count != standaloneNarrowWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneNarrowWeekdays[i].equals(standaloneNarrowWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setQuarters(wideQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideQuarters.length;
+        if( count != wideQuarters1.length) {
+            errln("ERROR: setQuarters(FORMAT, WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideQuarters[i].equals(wideQuarters1[i])) {
+                    errln("ERROR: setQuarters(FORMAT, WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setQuarters(abbrQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrQuarters.length;
+        if( count != abbrQuarters1.length) {
+            errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrQuarters[i].equals(abbrQuarters1[i])) {
+                    errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setQuarters(standaloneQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneQuarters.length;
+        if( count != standaloneQuarters1.length) {
+            errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneQuarters[i].equals(standaloneQuarters1[i])) {
+                    errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setQuarters(standaloneShortQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortQuarters.length;
+        if( count != standaloneShortQuarters1.length) {
+            errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortQuarters[i].equals(standaloneShortQuarters1[i])) {
+                    errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] ampms = en.getAmPmStrings();
+        fr.setAmPmStrings(ampms);
+        final String[] ampms1 = fr.getAmPmStrings();
+        count = ampms.length;
+        if( count != ampms1.length) {
+            errln("ERROR: setAmPmStrings() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! ampms[i].equals(ampms1[i])) {
+                    errln("ERROR: setAmPmStrings() failed (different string values)");
+                }
+            }
+        }
+
+        long rowCount = 0, columnCount = 0;
+        final String[][] strings = en.getZoneStrings();
+        fr.setZoneStrings(strings);
+        final String[][] strings1 = fr.getZoneStrings();
+        rowCount = strings.length;
+        for(int i = 0; i < rowCount; i++) {
+            columnCount = strings[i].length;
+            for(int j = 0; j < columnCount; j++) {
+                if( strings[i][j] != strings1[i][j] ) {
+                    errln("ERROR: setZoneStrings() failed");
+                }
+            }
+        }
+
+//        final String pattern = DateFormatSymbols.getPatternChars();
+
+        String localPattern; // pat1, pat2; //The variable is never used
+        localPattern = en.getLocalPatternChars();
+        fr.setLocalPatternChars(localPattern);
+        if(! en.getLocalPatternChars().equals(fr.getLocalPatternChars())) {
+            errln("ERROR: setLocalPatternChars() failed");
+        }
+
+
+        //DateFormatSymbols foo = new DateFormatSymbols(); //The variable is never used
+
+        en = (DateFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
new file mode 100644
index 0000000..41a5f26
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -0,0 +1,269 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2004, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatAPI
+ * Source File: java/text/format/IntlTestDecimalFormatAPI.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.math.BigDecimal;
+import java.util.Locale;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+
+public class IntlTestDecimalFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPI().run(args);
+    }
+    
+    /**
+     * Problem 1: simply running 
+     * decF4.setRoundingMode(java.math.BigDecimal.ROUND_HALF_UP) does not work 
+     * as decF4.setRoundingIncrement(.0001) must also be run.
+     * Problem 2: decF4.format(8.88885) does not return 8.8889 as expected. 
+     * You must run decF4.format(new BigDecimal(Double.valueOf(8.88885))) in 
+     * order for this to work as expected.
+     * Problem 3: There seems to be no way to set half up to be the default 
+     * rounding mode.
+     * We solved the problem with the code at the bottom of this page however 
+     * this is not quite general purpose enough to include in icu4j. A static
+     * setDefaultRoundingMode function would solve the problem nicely. Also 
+     * decimal places past 20 are not handled properly. A small ammount of work 
+     * would make bring this up to snuff.
+     */
+    public void testJB1871()
+    {
+        // problem 2
+        double number = 8.88885;
+        String expected = "8.8889";
+        
+        String pat = ",##0.0000";
+        DecimalFormat dec = new DecimalFormat(pat);
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        double roundinginc = 0.0001;
+        dec.setRoundingIncrement(roundinginc);
+        String str = dec.format(number);
+        if (!str.equals(expected)) {
+            errln("Fail: " + number + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }   
+
+        pat = ",##0.0001";
+        dec = new DecimalFormat(pat);
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        str = dec.format(number);
+        if (!str.equals(expected)) {
+            errln("Fail: " + number + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }  
+        
+        // testing 20 decimal places
+        pat = ",##0.00000000000000000001";
+        dec = new DecimalFormat(pat);
+        BigDecimal bignumber = new BigDecimal("8.888888888888888888885");
+        expected = "8.88888888888888888889";
+        
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        str = dec.format(bignumber); 
+        if (!str.equals(expected)) {
+            errln("Fail: " + bignumber + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }   
+        
+    }
+
+    /** 
+     * This test checks various generic API methods in DecimalFormat to achieve 
+     * 100% API coverage.
+     */
+    public void TestAPI()
+    {
+        logln("DecimalFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing DecimalFormat constructors");
+
+        DecimalFormat def = new DecimalFormat();
+
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        }
+        catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+
+        // ======= Test clone(), assignment, and equality
+
+        logln("Testing clone() and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + d + " is the double value");
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln("" + d + " formatted to " + res1);
+
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + d + " formatted to " + res3);
+
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse(" + d2 + " != " + d + ")) for " + text);
+        }
+        logln(text + " parsed into " + (long) d2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if( ! pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if(posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if(negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if(posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if(negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if(multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if(groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln("DecimalSeparatorIsAlwaysShown (should be true) is " +  (tf ? "true" : "false"));
+        if(tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p2) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
new file mode 100644
index 0000000..88e3fd8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -0,0 +1,517 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dcfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Vector;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+
+// This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+// try to test the full functionality.  It just calls each function in the class and
+// verifies that it works on a basic level.
+public class IntlTestDecimalFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPIC().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI() {
+
+        logln("DecimalFormat API test---");
+        logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing DecimalFormat constructors");
+
+        DecimalFormat def = new DecimalFormat();
+
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        } catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+
+        // ======= Test clone(), assignment, and equality
+
+        logln("Testing clone() and equality operators");
+
+        Format clone = (Format) def.clone();
+        if (!def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        //        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+        //        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + Double.toString(d) + " is the double value");
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln("" + Double.toString(d) + " formatted to " + res1);
+
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + Double.toString(d) + " formatted to " + res3);
+
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if (d2 != d) {
+            errln(
+                "ERROR: Roundtrip failed (via parse(" + Double.toString(d2) + " != " + Double.toString(d) + ")) for " + text); 
+        }
+        logln(text + " parsed into " + (long) d2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if (!pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if (posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if (negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if (posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if (negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if (multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if (groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln(
+            "DecimalSeparatorIsAlwaysShown (should be true) is " + (tf ? "true" : "false")); 
+        if (tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if (!s2.equals(p1)) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if (!s3.equals(p2)) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+
+        // ======= Test getStaticClassID()
+
+        //        logln("Testing instanceof()");
+
+        //        try {
+        //           NumberFormat test = new DecimalFormat();
+
+        //            if (! (test instanceof DecimalFormat)) {
+        //                errln("ERROR: instanceof failed");
+        //            }
+        //        }
+        //        catch (Exception e) {
+        //            errln("ERROR: Couldn't create a DecimalFormat");
+        //        }
+       
+    }
+
+    public void TestRounding() {
+        double Roundingnumber = 2.55;
+        double Roundingnumber1 = -2.55;
+        //+2.55 results   -2.55 results
+        double result[] = {
+            3, -3,   
+            2, -2, 
+            3, -2, 
+            2, -3, 
+            3, -3, 
+            3, -3, 
+            3, -3 
+        };
+        DecimalFormat pat = new DecimalFormat();
+        String s = "";
+        s = pat.toPattern();
+        logln("pattern = " + s);
+        int mode;
+        int i = 0;
+        String message;
+        String resultStr;
+        for (mode = 0; mode < 7; mode++) {
+            pat.setRoundingMode(mode);
+            if (pat.getRoundingMode() != mode) {
+                errln(
+                     "SetRoundingMode or GetRoundingMode failed for mode=" + mode); 
+            }
+
+            //for +2.55 with RoundingIncrement=1.0
+            pat.setRoundingIncrement(1.0);
+            resultStr = pat.format(Roundingnumber);
+            message = "round(" + (double) Roundingnumber
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+
+            //for -2.55 with RoundingIncrement=1.0
+            resultStr = pat.format(Roundingnumber1);
+            message = "round(" + (double) Roundingnumber1
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void testFormatToCharacterIterator() {
+
+        Number number = new Double(350.76);
+        Number negativeNumber = new Double(-350.76);
+
+        Locale us = Locale.US;
+
+        // test number instance
+        t_Format(1, number, NumberFormat.getNumberInstance(us),
+                getNumberVectorUS());
+
+        // test percent instance
+        t_Format(3, number, NumberFormat.getPercentInstance(us),
+                getPercentVectorUS());
+
+        // test permille pattern
+        DecimalFormat format = new DecimalFormat("###0.##\u2030");
+        t_Format(4, number, format, getPermilleVector());
+
+        // test exponential pattern with positive exponent
+        format = new DecimalFormat("00.0#E0");
+        t_Format(5, number, format, getPositiveExponentVector());
+
+        // test exponential pattern with negative exponent
+        format = new DecimalFormat("0000.0#E0");
+        t_Format(6, number, format, getNegativeExponentVector());
+
+        // test currency instance with US Locale
+        t_Format(7, number, NumberFormat.getCurrencyInstance(us),
+                getPositiveCurrencyVectorUS());
+
+        // test negative currency instance with US Locale
+        t_Format(8, negativeNumber, NumberFormat.getCurrencyInstance(us),
+                getNegativeCurrencyVectorUS());
+
+        // test multiple grouping seperators
+        number = new Long(100300400);
+        t_Format(11, number, NumberFormat.getNumberInstance(us),
+                getNumberVector2US());
+
+        // test 0
+        number = new Long(0);
+        t_Format(12, number, NumberFormat.getNumberInstance(us),
+                getZeroVector());
+    }
+
+    private static Vector getNumberVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(4, 6, NumberFormat.Field.FRACTION));
+        return v;
+    }
+    
+//    private static Vector getPositiveCurrencyVectorTR() {
+//        Vector v = new Vector();
+//        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+//        v.add(new FieldContainer(4, 6, NumberFormat.Field.CURRENCY));
+//        return v;
+//    }
+//
+//    private static Vector getNegativeCurrencyVectorTR() {
+//        Vector v = new Vector();
+//        v.add(new FieldContainer(0, 1, NumberFormat.Field.SIGN));
+//        v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER));
+//        v.add(new FieldContainer(5, 7, NumberFormat.Field.CURRENCY));
+//        return v;
+//    }
+
+    private static Vector getPositiveCurrencyVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 1, NumberFormat.Field.CURRENCY));
+        v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(5, 7, NumberFormat.Field.FRACTION));
+        return v;
+    }
+
+    private static Vector getNegativeCurrencyVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(1, 2, NumberFormat.Field.CURRENCY));
+        v.add(new FieldContainer(2, 5, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(6, 8, NumberFormat.Field.FRACTION));
+        return v;
+    }
+
+    private static Vector getPercentVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(3, 6, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.PERCENT));
+        return v;
+    }
+
+    private static Vector getPermilleVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 6, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.PERMILLE));
+        return v;
+    }
+
+    private static Vector getNegativeExponentVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.FRACTION));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT_SYMBOL));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.EXPONENT_SIGN));
+        v.add(new FieldContainer(8, 9, NumberFormat.Field.EXPONENT));
+        return v;
+    }
+
+    private static Vector getPositiveExponentVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(3, 5, NumberFormat.Field.FRACTION));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.EXPONENT_SYMBOL));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT));
+        return v;
+    }
+
+    private static Vector getNumberVector2US() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 7, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(8, 11, NumberFormat.Field.INTEGER));
+        return v;
+    }
+
+    private static Vector getZeroVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 1, NumberFormat.Field.INTEGER));
+        return v;
+    }    
+    
+    private void t_Format(int count, Object object, Format format,
+            Vector expectedResults) {
+        Vector results = findFields(format.formatToCharacterIterator(object));
+        assertTrue("Test " + count
+                + ": Format returned incorrect CharacterIterator for "
+                + format.format(object), compare(results, expectedResults));
+    }
+
+    /**
+     * compares two vectors regardless of the order of their elements
+     */
+    private static boolean compare(Vector vector1, Vector vector2) {
+        return vector1.size() == vector2.size() && vector1.containsAll(vector2);
+    }
+    
+    /**
+     * finds attributes with regards to char index in this
+     * AttributedCharacterIterator, and puts them in a vector
+     * 
+     * @param iterator
+     * @return a vector, each entry in this vector are of type FieldContainer ,
+     *         which stores start and end indexes and an attribute this range
+     *         has
+     */
+    private static Vector findFields(AttributedCharacterIterator iterator) {
+        Vector result = new Vector();
+        while (iterator.getIndex() != iterator.getEndIndex()) {
+            int start = iterator.getRunStart();
+            int end = iterator.getRunLimit();
+
+            Iterator it = iterator.getAttributes().keySet().iterator();
+            while (it.hasNext()) {
+                AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute) it
+                        .next();
+                Object value = iterator.getAttribute(attribute);
+                result.add(new FieldContainer(start, end, attribute, value));
+                // System.out.println(start + " " + end + ": " + attribute + ",
+                // " + value );
+                // System.out.println("v.add(new FieldContainer(" + start +"," +
+                // end +"," + attribute+ "," + value+ "));");
+            }
+            iterator.setIndex(end);
+        }
+        return result;
+    }
+    protected static class FieldContainer {
+        int start, end;
+
+        AttributedCharacterIterator.Attribute attribute;
+
+        Object value;
+
+//         called from support_decimalformat and support_simpledateformat tests
+        public FieldContainer(int start, int end,
+        AttributedCharacterIterator.Attribute attribute) {
+            this(start, end, attribute, attribute);
+        }
+
+//         called from support_messageformat tests
+        public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, int value) {
+        this(start, end, attribute, new Integer(value));
+        }
+
+//         called from support_messageformat tests
+        public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute,
+        Object value) {
+        this.start = start;
+        this.end = end;
+        this.attribute = attribute;
+        this.value = value;
+        }
+
+        public boolean equals(Object obj) {
+        if (!(obj instanceof FieldContainer))
+        return false;
+
+        FieldContainer fc = (FieldContainer) obj;
+        return (start == fc.start && end == fc.end
+        && attribute == fc.attribute && value.equals(fc.value));
+        }
+    } 
+//#endif
+
+    /*Helper functions */
+    public void verify(String message, String got, double expected) {
+        logln(message + got + " Expected : " + (long)expected);
+        String expectedStr = "";
+        expectedStr=expectedStr + (long)expected;
+        if(!got.equals(expectedStr) ) {
+            errln("ERROR: Round() failed:  " + message + got + "  Expected : " + expectedStr);
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
new file mode 100644
index 0000000..78b7f7b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -0,0 +1,164 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatSymbols
+ * Source File: java/text/format/IntlTestDecimalFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format Symbols
+*/
+
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.Currency;
+
+import java.util.Locale;
+
+public class IntlTestDecimalFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbols().run(args);
+    }
+
+    // Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if(fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+
+        char sigDigit = en.getSignificantDigit();
+        fr.setSignificantDigit(sigDigit); 
+        if(fr.getSignificantDigit() != en.getSignificantDigit()) {
+            errln("ERROR: get/set SignificantDigit failed");
+        }
+
+        Currency currency = Currency.getInstance("USD");
+        fr.setCurrency(currency);
+        if (!fr.getCurrency().equals(currency)){
+            errln("ERROR: get/set Currency failed");
+        }
+            
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if(fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if(fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+
+        char monetaryGroup = en.getMonetaryGroupingSeparator();
+        fr.setMonetaryGroupingSeparator(monetaryGroup);
+        if(fr.getMonetaryGroupingSeparator() != en.getMonetaryGroupingSeparator()) {
+            errln("ERROR: get/set MonetaryGroupingSeparator failed");
+        }
+
+        char monetaryDecimal = en.getMonetaryDecimalSeparator();
+        fr.setMonetaryDecimalSeparator(monetaryDecimal);
+        if(fr.getMonetaryDecimalSeparator() != en.getMonetaryDecimalSeparator()) {
+            errln("ERROR: get/set MonetaryDecimalSeparator failed");
+        }
+
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if(fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if(fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if(! infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if(! nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if(fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+
+        char plusSign = en.getPlusSign();
+        fr.setPlusSign(plusSign);
+        if(fr.getPlusSign() != en.getPlusSign()) {
+            errln("ERROR: get/set PlusSign failed");
+        }
+
+        char padEscape = en.getPadEscape();
+        fr.setPadEscape(padEscape);
+        if(fr.getPadEscape() != en.getPadEscape()) {
+            errln("ERROR: get/set PadEscape failed");
+        }
+
+        String exponential = en.getExponentSeparator();
+        fr.setExponentSeparator(exponential);
+        if(fr.getExponentSeparator() != en.getExponentSeparator()) {
+            errln("ERROR: get/set Exponential failed");
+        }
+
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+
+        en = (DecimalFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+    
+    public void testCoverage() {
+        DecimalFormatSymbols df = new DecimalFormatSymbols();
+        DecimalFormatSymbols df2 = (DecimalFormatSymbols)df.clone();
+        if (!df.equals(df2) || df.hashCode() != df2.hashCode()) {
+            errln("decimal format symbols clone, equals, or hashCode failed");            
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
new file mode 100644
index 0000000..7f782a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols
+ * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.util.Locale;
+import com.ibm.icu.text.*;
+
+/**
+ * Tests for DecimalFormatSymbols
+ **/
+public class IntlTestDecimalFormatSymbolsC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbolsC().run(args);
+    }
+
+    /**
+     * Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+     */
+    public void TestSymbols() {    
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);    
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+    
+        if (en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+    
+        // just do some VERY basic tests to make sure that get/set work
+    
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if (fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+    
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if (fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+    
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if (fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+    
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if (fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+    
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if (fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+    
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if (!infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+    
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if (!nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+    
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if (fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+    
+        //        char exponential = en.getExponentialSymbol();
+        //        fr.setExponentialSymbol(exponential);
+        //        if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
+        //            errln("ERROR: get/set Exponential failed");
+        //        }
+    
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+    
+        en = (DecimalFormatSymbols) fr.clone();
+    
+        if (!en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+        
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+    
+        verify(34.5, "00.00", sym, "34.50");
+        sym.setDecimalSeparator('S');
+        verify(34.5, "00.00", sym, "34S50");
+        sym.setPercent('P');
+        verify(34.5, "00 %", sym, "3450 P");
+        sym.setCurrencySymbol("D");
+        verify(34.5, "\u00a4##.##", sym, "D34.5");
+        sym.setGroupingSeparator('|');
+        verify(3456.5, "0,000.##", sym, "3|456S5");
+    }
+    
+    /** helper functions**/
+    public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) {
+        DecimalFormat df = new DecimalFormat(pattern, sym);
+        StringBuffer buffer = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(-1);
+        buffer = df.format(value, buffer, pos);
+        if(!buffer.toString().equals(expected)){
+            errln("ERROR: format failed after setSymbols()\n Expected" + 
+                expected + ", Got " + buffer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
new file mode 100644
index 0000000..366278d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
@@ -0,0 +1,288 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestNumberFormat
+ * Source File: $ICU4CRoot/source/test/intltest/tsnmfmt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of
+ * NumberFormat.
+ */
+public class IntlTestNumberFormat extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public NumberFormat fNumberFormat;
+
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormat().run(args);
+    }
+    
+    /**
+     * Internal use
+     */
+    public void _testLocale(Locale locale) {
+        String localeName = locale + " (" + locale.getDisplayName() + ")";
+            
+        logln("Number test " + localeName);
+        fNumberFormat = NumberFormat.getInstance(locale);
+        _testFormat();
+    
+        logln("Currency test " + localeName);
+        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
+        _testFormat();
+    
+        logln("Percent test " + localeName);
+        fNumberFormat = NumberFormat.getPercentInstance(locale);
+        _testFormat();
+    }
+    
+    /**
+     * call _testFormat for currency, percent and plain number instances
+     */
+    public void TestLocale() {
+        Locale locale = Locale.getDefault();
+        String localeName = locale + " (" + locale.getDisplayName() + ")";
+            
+        logln("Number test " + localeName);
+        fNumberFormat = NumberFormat.getInstance(locale);
+        _testFormat();
+    
+        logln("Currency test " + localeName);
+        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
+        _testFormat();
+    
+        logln("Percent test " + localeName);
+        fNumberFormat = NumberFormat.getPercentInstance(locale);
+        _testFormat();
+    }
+    
+    /**
+     * call tryIt with many variations, called by testLocale
+     */
+    public void _testFormat() {
+        
+        if (fNumberFormat == null){
+            errln("**** FAIL: Null format returned by createXxxInstance.");
+             return;
+        }
+        DecimalFormat s = (DecimalFormat)fNumberFormat;
+        logln("pattern :" + s.toPattern());
+    
+        tryIt(-2.02147304840132e-68);
+        tryIt(3.88057859588817e-68); 
+        tryIt(-2.64651110485945e+65);
+        tryIt(9.29526819488338e+64);
+    
+        tryIt(-2.02147304840132e-100);
+        tryIt(3.88057859588817e-096); 
+        tryIt(-2.64651110485945e+306);
+        tryIt(9.29526819488338e+250); 
+    
+        tryIt(-9.18228054496402e+64);
+        tryIt(-9.69413034454191e+64);
+    
+        tryIt(-9.18228054496402e+255);
+        tryIt(-9.69413034454191e+273);
+    
+    
+        tryIt(1.234e-200);
+        tryIt(-2.3e-168);
+    
+        tryIt(Double.NaN);
+        tryIt(Double.POSITIVE_INFINITY);
+        tryIt(Double.NEGATIVE_INFINITY);
+    
+        tryIt(251887531);
+        tryIt(5e-20 / 9);
+        tryIt(5e20 / 9);
+        tryIt(1.234e-50);
+        tryIt(9.99999999999996);
+        tryIt(9.999999999999996);
+    
+        tryIt(Integer.MIN_VALUE);
+        tryIt(Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE);
+        tryIt((double)Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE - 1.0);
+        tryIt((double)Integer.MAX_VALUE + 1.0);
+    
+        tryIt(5.0 / 9.0 * 1e-20);
+        tryIt(4.0 / 9.0 * 1e-20);
+        tryIt(5.0 / 9.0 * 1e+20);
+        tryIt(4.0 / 9.0 * 1e+20);
+    
+        tryIt(2147483647.);
+        tryIt(0);
+        tryIt(0.0);
+        tryIt(1);
+        tryIt(10);
+        tryIt(100);
+        tryIt(-1);
+        tryIt(-10);
+        tryIt(-100);
+        tryIt(-1913860352);
+    
+        Random random = createRandom(); // use test framework's random seed
+        for (int j = 0; j < 10; j++) {
+            double d = random.nextDouble()*2e10 - 1e10;
+            tryIt(d);
+            
+        }
+    }
+    
+    /**
+     * Perform tests using aNumber and fNumberFormat, called in many variations
+     */
+    public void tryIt(double aNumber) {    
+        final int DEPTH = 10;
+        double[] number = new double[DEPTH];
+        String[] string = new String[DEPTH];
+        int numberMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+    
+        for (i = 0; i < DEPTH; i++) {
+            if (i == 0) {
+                number[i] = aNumber;
+            } else {
+                try {
+                    number[i - 1] = fNumberFormat.parse(string[i - 1]).doubleValue();
+                } catch(java.text.ParseException pe) {
+                    errln("**** FAIL: Parse of " + string[i-1] + " failed.");
+                    dump = true;
+                    break;
+                }
+            }
+    
+            string[i] = fNumberFormat.format(number[i]);
+            if (i > 0)
+            {
+                if (numberMatch == 0 && number[i] == number[i-1])
+                    numberMatch = i;
+                else if (numberMatch > 0 && number[i] != number[i-1])
+                {
+                    errln("**** FAIL: Numeric mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1])
+                    stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1])
+                {
+                    errln("**** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (numberMatch > 0 && stringMatch > 0)
+                break;
+    
+            if (i == DEPTH)
+            --i;
+    
+        if (stringMatch > 2 || numberMatch > 2)
+        {
+            errln("**** FAIL: No string and/or number match within 2 iterations.");
+            dump = true;
+        }
+    
+        if (dump)
+        {
+            for (int k=0; k<=i; ++k)
+            {
+                logln(k + ": " + number[k] + " F> " +
+                      string[k] + " P> ");
+            }
+        }
+        }
+    }
+    
+    /**
+     *  perform tests using aNumber and fNumberFormat, called in many variations
+     **/
+    public void tryIt(int aNumber) {
+        long number;
+        
+        String stringNum = fNumberFormat.format(aNumber);
+        try {
+            number = fNumberFormat.parse(stringNum).longValue();
+        } catch (java.text.ParseException pe) {
+            errln("**** FAIL: Parse of " + stringNum + " failed.");
+            return;
+        }
+    
+        if (number != aNumber) {
+            errln("**** FAIL: Parse of " + stringNum + " failed. Got:" + number
+                + " Expected:" + aNumber);
+        }
+        
+    }
+    
+    /**
+     *  test NumberFormat::getAvailableLocales
+     **/
+    public void TestAvailableLocales() {
+        final Locale[] locales = NumberFormat.getAvailableLocales();
+        int count = locales.length;
+        logln(count + " available locales");
+        if (count != 0)
+        {
+            String all = "";
+            for (int i = 0; i< count; ++i)
+            {
+                if (i!=0)
+                    all += ", ";
+                all += locales[i].getDisplayName();
+            }
+            logln(all);
+        }
+        else
+            errln("**** FAIL: Zero available locales or null array pointer");
+    }
+    
+    /**
+     *  call testLocale for all locales
+     **/    
+    public void TestMonster() {
+        final String SEP = "============================================================\n";
+        int count;
+        final Locale[] allLocales = NumberFormat.getAvailableLocales();
+        Locale[] locales = allLocales;
+        count = locales.length;
+        if (count != 0)
+        {
+            if (getInclusion() < 10 && count > 6) {
+                count = 6;
+                locales = new Locale[6];
+                locales[0] = allLocales[0];
+                locales[1] = allLocales[1];
+                locales[2] = allLocales[2];
+                // In a quick test, make sure we test locales that use
+                // currency prefix, currency suffix, and choice currency
+                // logic.  Otherwise bugs in these areas can slip through.
+                locales[3] = new Locale("ar", "AE", "");
+                locales[4] = new Locale("cs", "CZ", "");
+                locales[5] = new Locale("en", "IN", "");
+            }
+            for (int i=0; i<count; ++i)
+            {
+                logln(SEP);
+                _testLocale(locales[i]);
+            }
+        }
+    
+        logln(SEP);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
new file mode 100644
index 0000000..386b0e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -0,0 +1,231 @@
+//##header J2SE15
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestNumberFormatAPI
+ * Source File: java/text/format/IntlTestNumberFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Number Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Locale;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+
+public class IntlTestNumberFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("NumberFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing NumberFormat constructors");
+
+        NumberFormat def = NumberFormat.getInstance();
+
+        NumberFormat fr = NumberFormat.getInstance(Locale.FRENCH);
+
+        NumberFormat cur = NumberFormat.getCurrencyInstance();
+
+        NumberFormat cur_fr = NumberFormat.getCurrencyInstance(Locale.FRENCH);
+
+        NumberFormat per = NumberFormat.getPercentInstance();
+
+        NumberFormat per_fr = NumberFormat.getPercentInstance(Locale.FRENCH);
+        
+        NumberFormat integer = NumberFormat.getIntegerInstance();
+        
+        NumberFormat int_fr = NumberFormat.getIntegerInstance(Locale.FRENCH);
+        
+        //Fix "The variable is never used" compilation warnings
+        logln("Currency : " + cur.format(1234.5));
+        logln("Percent : " + per.format(1234.5));
+        logln("Integer : " + integer.format(1234.5));
+        logln("Int_fr : " + int_fr.format(1234.5));
+        
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( per_fr.equals(cur_fr) ) {
+            errln("ERROR: == failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+
+        String res1 = new String();
+        String res2 = new String();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        StringBuffer res5 = new StringBuffer();
+        StringBuffer res6 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = cur_fr.format(d);
+        logln( "" + d + " formatted to " + res1);
+
+        res2 = cur_fr.format(l);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cur_fr.format(d, res3, pos1);
+        logln( "" + d + " formatted to " + res3);
+
+        res4 = cur_fr.format(l, res4, pos2);
+        logln("" + l + " formatted to " + res4);
+
+        res5 = cur_fr.format(d, res5, pos3);
+        logln("" + d + " formatted to " + res5);
+
+        res6 = cur_fr.format(l, res6, pos4);
+        logln("" + l + " formatted to " + res6);
+
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+//        String text = new String("-10,456.0037");
+        String text = new String("-10456,0037");
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+        double d1 = ((Number)fr.parseObject(text, pos)).doubleValue();
+        if(d1 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d1);
+
+        double d2 = fr.parse(text, pos01).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d2);
+
+        double d3 = 0;
+        try {
+            d3 = fr.parse(text).doubleValue();
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        if(d3 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d3);
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = NumberFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+        }
+
+        fr.setParseIntegerOnly( def.isParseIntegerOnly() );
+        if(fr.isParseIntegerOnly() != def.isParseIntegerOnly() ) {
+                errln("ERROR: setParseIntegerOnly() failed");
+        }
+
+        fr.setGroupingUsed( def.isGroupingUsed() );
+        if(fr.isGroupingUsed() != def.isGroupingUsed() ) {
+                errln("ERROR: setGroupingUsed() failed");
+        }
+
+        fr.setMaximumIntegerDigits( def.getMaximumIntegerDigits() );
+        if(fr.getMaximumIntegerDigits() != def.getMaximumIntegerDigits() ) {
+                errln("ERROR: setMaximumIntegerDigits() failed");
+        }
+
+        fr.setMinimumIntegerDigits( def.getMinimumIntegerDigits() );
+        if(fr.getMinimumIntegerDigits() != def.getMinimumIntegerDigits() ) {
+                errln("ERROR: setMinimumIntegerDigits() failed");
+        }
+
+        fr.setMaximumFractionDigits( def.getMaximumFractionDigits() );
+        if(fr.getMaximumFractionDigits() != def.getMaximumFractionDigits() ) {
+                errln("ERROR: setMaximumFractionDigits() failed");
+        }
+
+        fr.setMinimumFractionDigits( def.getMinimumFractionDigits() );
+        if(fr.getMinimumFractionDigits() != def.getMinimumFractionDigits() ) {
+                errln("ERROR: setMinimumFractionDigits() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            NumberFormat test = new DecimalFormat();
+
+//            if (! (test instanceof DecimalFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DecimalFormat");
+//        }
+    }
+    
+    // Jitterbug 4451, for coverage
+    public void TestCoverage(){
+        class StubNumberFormat extends NumberFormat{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 3768385020503005993L;
+            public void run(){
+                String p = NumberFormat.getPattern(ULocale.getDefault().toLocale(),0);
+                if (!p.equals(NumberFormat.getPattern(ULocale.getDefault(),0))){
+                    errln("NumberFormat.getPattern(Locale, int) should delegate to (ULocale,)");
+                }
+            }
+            public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+//#if defined(FOUNDATION10)
+//#else
+            public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+//#endif
+            public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public Number parse(String text, ParsePosition parsePosition) {return null;}
+        }
+        new StubNumberFormat().run();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
new file mode 100644
index 0000000..5601f46
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
@@ -0,0 +1,199 @@
+/*****************************************************************************************
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996-2008 - 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.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI
+ * Source File: java/text/format/IntlTestSimpleDateFormatAPI.java
+ **/
+ 
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+/**
+* @test 1.4 98/03/06
+* @summary test International Simple Date Format API
+*/
+public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestSimpleDateFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("SimpleDateFormat API test---"); logln("");
+
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing SimpleDateFormat constructors");
+
+        SimpleDateFormat def = new SimpleDateFormat();
+
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat pat = new SimpleDateFormat(pattern);
+
+        SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);
+
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
+
+        SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);
+
+        // ======= Test clone() and equality
+
+        logln("Testing clone(), assignment and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! clone.equals(def) ) {
+            errln("ERROR: Format clone or equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln( "" + d.getTime() + " formatted to " + res1);
+
+        res2 = cust1.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Date result1 = new Date();
+        Date result2 = new Date();
+        ParsePosition pos= new ParsePosition(0);
+        result1 = def.parse(text, pos);
+        logln(text + " parsed into " + result1);
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DateFormatSymbols syms = pat.getDateFormatSymbols();
+        def.setDateFormatSymbols(syms);
+        pat_fr.setDateFormatSymbols(syms);
+        if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {
+            errln("ERROR: set DateFormatSymbols() failed");
+        }
+
+        /*
+        DateFormatSymbols has not the method getTwoDigitStartDate();
+        //Date startDate = null; //The variable is never used
+        try {
+//            startDate = pat.getTwoDigitStartDate();
+        }
+        catch (Exception e) {
+            errln("ERROR: getTwoDigitStartDate() failed");
+        }
+
+        try {
+//            pat_fr.setTwoDigitStartDate(startDate);
+        }
+        catch (Exception e) {
+            errln("ERROR: setTwoDigitStartDate() failed");
+        }*/
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+
+        String s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        logln("Applying pattern " + p1);
+        pat.applyLocalizedPattern(p1);
+        String s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p1) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+        
+        // ======= Test for Ticket 5684 (Parsing patterns with 'Y' and 'e'
+        logln("Testing parse()");
+
+        String p2 = new String("YYYY'W'wwe");
+        logln("Applying pattern " + p2);
+        pat.applyPattern(p2);
+        Date dt = pat.parse("2007W014", new ParsePosition(0));
+        if (dt == null) {
+            errln("ERROR: Parsing failed using 'Y' and 'e'");
+        }
+
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a SimpleDateFormat");
+//        }
+    }
+    
+    // Jitterbug 4451, for coverage
+    public void TestCoverage(){
+        class StubDateFormat extends SimpleDateFormat{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 8460897119491427934L;
+
+            public void run(){
+                if (!zeroPaddingNumber(12, 4, 6).equals("0012")){
+                    errln("SimpleDateFormat(zeroPaddingNumber(long , int , int )");
+                }
+            }
+        }
+        new StubDateFormat().run();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/MessageRegression.java b/src/com/ibm/icu/dev/test/format/MessageRegression.java
new file mode 100644
index 0000000..08f4d1a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/MessageRegression.java
@@ -0,0 +1,839 @@
+/*
+**********************************************************************
+* Copyright (c) 2005-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 12, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+/**
+ * MessageRegression.java
+ *
+ * @test 1.29 01/03/12
+ * @bug 4031438 4058973 4074764 4094906 4104976 4105380 4106659 4106660 4106661
+ * 4111739 4112104 4113018 4114739 4114743 4116444 4118592 4118594 4120552
+ * 4142938 4169959 4232154 4293229
+ * @summary Regression tests for MessageFormat and associated classes
+ */
+/*
+(C) Copyright Taligent, Inc. 1996 - All Rights Reserved
+(C) Copyright IBM Corp. 1996 - 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 com.ibm.icu.dev.test.format;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.text.ChoiceFormat;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.ibm.icu.text.MessageFormat;
+
+public class MessageRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new MessageRegression().run(args);
+    }
+
+    /* @bug 4074764
+     * Null exception when formatting pattern with MessageFormat
+     * with no parameters.
+     */
+    public void Test4074764() {
+        String[] pattern = {"Message without param",
+        "Message with param:{0}",
+        "Longer Message with param {0}"};
+        //difference between the two param strings are that
+        //in the first one, the param position is within the
+        //length of the string without param while it is not so
+        //in the other case.
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            //Apply pattern with param and print the result
+            messageFormatter.applyPattern(pattern[1]);
+            Object[] paramArray = {new String("BUG"), new Date()};
+            String tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Message with param:BUG"))
+                errln("MessageFormat with one param test failed.");
+            logln("Formatted with one extra param : " + tempBuffer);
+
+            //Apply pattern without param and print the result
+            messageFormatter.applyPattern(pattern[0]);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Message without param"))
+                errln("MessageFormat with no param test failed.");
+            logln("Formatted with no params : " + tempBuffer);
+
+             tempBuffer = messageFormatter.format(paramArray);
+             if (!tempBuffer.equals("Message without param"))
+                errln("Formatted with arguments > subsitution failed. result = " + tempBuffer.toString());
+             logln("Formatted with extra params : " + tempBuffer);
+            //This statement gives an exception while formatting...
+            //If we use pattern[1] for the message with param,
+            //we get an NullPointerException in MessageFormat.java(617)
+            //If we use pattern[2] for the message with param,
+            //we get an StringArrayIndexOutOfBoundsException in MessageFormat.java(614)
+            //Both are due to maxOffset not being reset to -1
+            //in applyPattern() when the pattern does not
+            //contain any param.
+        } catch (Exception foo) {
+            errln("Exception when formatting with no params.");
+        }
+    }
+
+    /* @bug 4058973
+     * MessageFormat.toPattern has weird rounding behavior.
+     */
+    public void Test4058973() {
+
+        MessageFormat fmt = new MessageFormat("{0,choice,0#no files|1#one file|1< {0,number,integer} files}");
+        String pat = fmt.toPattern();
+        if (!pat.equals("{0,choice,0.0#no files|1.0#one file|1.0< {0,number,integer} files}")) {
+            errln("MessageFormat.toPattern failed");
+        }
+    }
+    /* @bug 4031438
+     * More robust message formats.
+     */
+    public void Test4031438() {
+        String pattern1 = "Impossible {1} has occurred -- status code is {0} and message is {2}.";
+        String pattern2 = "Double '' Quotes {0} test and quoted '{1}' test plus 'other {2} stuff'.";
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            logln("Apply with pattern : " + pattern1);
+            messageFormatter.applyPattern(pattern1);
+            Object[] paramArray = {new Integer(7)};
+            String tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Impossible {1} has occurred -- status code is 7 and message is {2}."))
+                errln("Tests arguments < substitution failed");
+            logln("Formatted with 7 : " + tempBuffer);
+            ParsePosition status = new ParsePosition(0);
+            Object[] objs = messageFormatter.parse(tempBuffer, status);
+            if (objs[paramArray.length] != null)
+                errln("Parse failed with more than expected arguments");
+            for (int i = 0; i < objs.length; i++) {
+                if (objs[i] != null && !objs[i].toString().equals(paramArray[i].toString())) {
+                    errln("Parse failed on object " + objs[i] + " at index : " + i);
+                }
+            }
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Impossible {1} has occurred -- status code is {0} and message is {2}."))
+                errln("Tests with no arguments failed");
+            logln("Formatted with null : " + tempBuffer);
+            logln("Apply with pattern : " + pattern2);
+            messageFormatter.applyPattern(pattern2);
+            tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {1} test plus other {2} stuff."))
+                errln("quote format test (w/ params) failed.");
+            logln("Formatted with params : " + tempBuffer);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Double ' Quotes {0} test and quoted {1} test plus other {2} stuff."))
+                errln("quote format test (w/ null) failed.");
+            logln("Formatted with null : " + tempBuffer);
+            logln("toPattern : " + messageFormatter.toPattern());
+        } catch (Exception foo) {
+            warnln("Exception when formatting in bug 4031438. "+foo.getMessage());
+        }
+    }
+    public void Test4052223()
+    {
+        ParsePosition pos = new ParsePosition(0);
+        if (pos.getErrorIndex() != -1) {
+            errln("ParsePosition.getErrorIndex initialization failed.");
+        }
+        MessageFormat fmt = new MessageFormat("There are {0} apples growing on the {1} tree.");
+        String str = new String("There is one apple growing on the peach tree.");
+        Object[] objs = fmt.parse(str, pos);
+        logln("unparsable string , should fail at " + pos.getErrorIndex());
+        if (pos.getErrorIndex() == -1)
+            errln("Bug 4052223 failed : parsing string " + str);
+        pos.setErrorIndex(4);
+        if (pos.getErrorIndex() != 4)
+            errln("setErrorIndex failed, got " + pos.getErrorIndex() + " instead of 4");
+        
+        if (objs != null) {
+            errln("objs should be null");
+        }
+        ChoiceFormat f = new ChoiceFormat(
+            "-1#are negative|0#are no or fraction|1#is one|1.0<is 1+|2#are two|2<are more than 2.");
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        Number obj = f.parse("are negative", pos);
+        if (pos.getErrorIndex() != -1 && obj.doubleValue() == -1.0)
+            errln("Parse with \"are negative\" failed, at " + pos.getErrorIndex());
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        obj = f.parse("are no or fraction ", pos);
+        if (pos.getErrorIndex() != -1 && obj.doubleValue() == 0.0)
+            errln("Parse with \"are no or fraction\" failed, at " + pos.getErrorIndex());
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        obj = f.parse("go postal", pos);
+        if (pos.getErrorIndex() == -1 && !Double.isNaN(obj.doubleValue()))
+            errln("Parse with \"go postal\" failed, at " + pos.getErrorIndex());
+    }
+    /* @bug 4104976
+     * ChoiceFormat.equals(null) throws NullPointerException
+     */
+    public void Test4104976()
+    {
+        double[] limits = {1, 20};
+        String[] formats = {"xyz", "abc"};
+        ChoiceFormat cf = new ChoiceFormat(limits, formats);
+        try {
+            log("Compares to null is always false, returned : ");
+            logln(cf.equals(null) ? "TRUE" : "FALSE");
+        } catch (Exception foo) {
+            errln("ChoiceFormat.equals(null) throws exception.");
+        }
+    }
+    /* @bug 4106659
+     * ChoiceFormat.ctor(double[], String[]) doesn't check
+     * whether lengths of input arrays are equal.
+     */
+    public void Test4106659()
+    {
+        double[] limits = {1, 2, 3};
+        String[] formats = {"one", "two"};
+        ChoiceFormat cf = null;
+        try {
+            cf = new ChoiceFormat(limits, formats);
+        } catch (Exception foo) {
+            logln("ChoiceFormat constructor should check for the array lengths");
+            cf = null;
+        }
+        if (cf != null) errln(cf.format(5));
+    }
+
+    /* @bug 4106660
+     * ChoiceFormat.ctor(double[], String[]) allows unordered double array.
+     * This is not a bug, added javadoc to emphasize the use of limit
+     * array must be in ascending order.
+     */
+    public void Test4106660()
+    {
+        double[] limits = {3, 1, 2};
+        String[] formats = {"Three", "One", "Two"};
+        ChoiceFormat cf = new ChoiceFormat(limits, formats);
+        double d = 5.0;
+        String str = cf.format(d);
+        if (!str.equals("Two"))
+            errln("format(" + d + ") = " + cf.format(d));
+    }
+
+    /* @bug 4111739
+     * MessageFormat is incorrectly serialized/deserialized.
+     */
+    public void Test4111739()
+    {
+        MessageFormat format1 = null;
+        MessageFormat format2 = null;
+        ObjectOutputStream ostream = null;
+        ByteArrayOutputStream baos = null;
+        ObjectInputStream istream = null;
+
+        try {
+            baos = new ByteArrayOutputStream();
+            ostream = new ObjectOutputStream(baos);
+        } catch(IOException e) {
+            errln("Unexpected exception : " + e.getMessage());
+            return;
+        }
+
+        try {
+            format1 = new MessageFormat("pattern{0}");
+            ostream.writeObject(format1);
+            ostream.flush();
+
+            byte bytes[] = baos.toByteArray();
+
+            istream = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            format2 = (MessageFormat)istream.readObject();
+        } catch(Exception e) {
+            errln("Unexpected exception : " + e.getMessage());
+        }
+
+        if (!format1.equals(format2)) {
+            errln("MessageFormats before and after serialization are not" +
+                " equal\nformat1 = " + format1 + "(" + format1.toPattern() + ")\nformat2 = " +
+                format2 + "(" + format2.toPattern() + ")");
+        } else {
+            logln("Serialization for MessageFormat is OK.");
+        }
+    }
+    /* @bug 4114743
+     * MessageFormat.applyPattern allows illegal patterns.
+     */
+    public void Test4114743()
+    {
+        String originalPattern = "initial pattern";
+        MessageFormat mf = new MessageFormat(originalPattern);
+        try {
+            String illegalPattern = "ab { '}' de";
+            mf.applyPattern(illegalPattern);
+            errln("illegal pattern: \"" + illegalPattern + "\"");
+        } catch (IllegalArgumentException foo) {
+            if (!originalPattern.equals(mf.toPattern()))
+                errln("pattern after: \"" + mf.toPattern() + "\"");
+        }
+    }
+
+    /* @bug 4116444
+     * MessageFormat.parse has different behavior in case of null.
+     */
+    public void Test4116444()
+    {
+        String[] patterns = {"", "one", "{0,date,short}"};
+        MessageFormat mf = new MessageFormat("");
+
+        for (int i = 0; i < patterns.length; i++) {
+            String pattern = patterns[i];
+            mf.applyPattern(pattern);
+            try {
+                Object[] array = mf.parse(null, new ParsePosition(0));
+                logln("pattern: \"" + pattern + "\"");
+                log(" parsedObjects: ");
+                if (array != null) {
+                    log("{");
+                    for (int j = 0; j < array.length; j++) {
+                        if (array[j] != null)
+                            err("\"" + array[j].toString() + "\"");
+                        else
+                            log("null");
+                        if (j < array.length - 1) log(",");
+                    }
+                    log("}") ;
+                } else {
+                    log("null");
+                }
+                logln("");
+            } catch (Exception e) {
+                errln("pattern: \"" + pattern + "\"");
+                errln("  Exception: " + e.getMessage());
+            }
+        }
+
+    }
+    /* @bug 4114739 (FIX and add javadoc)
+     * MessageFormat.format has undocumented behavior about empty format objects.
+     */
+    public void Test4114739()
+    {
+
+        MessageFormat mf = new MessageFormat("<{0}>");
+        Object[] objs1 = null;
+        Object[] objs2 = {};
+        Object[] objs3 = {null};
+        try {
+            logln("pattern: \"" + mf.toPattern() + "\"");
+            log("format(null) : ");
+            logln("\"" + mf.format(objs1) + "\"");
+            log("format({})   : ");
+            logln("\"" + mf.format(objs2) + "\"");
+            log("format({null}) :");
+            logln("\"" + mf.format(objs3) + "\"");
+        } catch (Exception e) {
+            errln("Exception thrown for null argument tests.");
+        }
+    }
+
+    /* @bug 4113018
+     * MessageFormat.applyPattern works wrong with illegal patterns.
+     */
+    public void Test4113018()
+    {
+        String originalPattern = "initial pattern";
+        MessageFormat mf = new MessageFormat(originalPattern);
+        String illegalPattern = "format: {0, xxxYYY}";
+        logln("pattern before: \"" + mf.toPattern() + "\"");
+        logln("illegal pattern: \"" + illegalPattern + "\"");
+        try {
+            mf.applyPattern(illegalPattern);
+            errln("Should have thrown IllegalArgumentException for pattern : " + illegalPattern);
+        } catch (IllegalArgumentException e) {
+            if (!originalPattern.equals(mf.toPattern()))
+                errln("pattern after: \"" + mf.toPattern() + "\"");
+        }
+    }
+    /* @bug 4106661
+     * ChoiceFormat is silent about the pattern usage in javadoc.
+     */
+    public void Test4106661()
+    {
+        ChoiceFormat fmt = new ChoiceFormat(
+          "-1#are negative| 0#are no or fraction | 1#is one |1.0<is 1+ |2#are two |2<are more than 2.");
+        logln("Formatter Pattern : " + fmt.toPattern());
+
+        logln("Format with -INF : " + fmt.format(Double.NEGATIVE_INFINITY));
+        logln("Format with -1.0 : " + fmt.format(-1.0));
+        logln("Format with 0 : " + fmt.format(0));
+        logln("Format with 0.9 : " + fmt.format(0.9));
+        logln("Format with 1.0 : " + fmt.format(1));
+        logln("Format with 1.5 : " + fmt.format(1.5));
+        logln("Format with 2 : " + fmt.format(2));
+        logln("Format with 2.1 : " + fmt.format(2.1));
+        logln("Format with NaN : " + fmt.format(Double.NaN));
+        logln("Format with +INF : " + fmt.format(Double.POSITIVE_INFINITY));
+    }
+    /* @bug 4094906
+     * ChoiceFormat should accept \u221E as eq. to INF.
+     */
+    public void Test4094906()
+    {
+        ChoiceFormat fmt = new ChoiceFormat(
+          "-\u221E<are negative|0<are no or fraction|1#is one|1.0<is 1+|\u221E<are many.");
+        if (!fmt.toPattern().startsWith("-\u221E<are negative|0.0<are no or fraction|1.0#is one|1.0<is 1+|\u221E<are many."))
+            errln("Formatter Pattern : " + fmt.toPattern());
+        logln("Format with -INF : " + fmt.format(Double.NEGATIVE_INFINITY));
+        logln("Format with -1.0 : " + fmt.format(-1.0));
+        logln("Format with 0 : " + fmt.format(0));
+        logln("Format with 0.9 : " + fmt.format(0.9));
+        logln("Format with 1.0 : " + fmt.format(1));
+        logln("Format with 1.5 : " + fmt.format(1.5));
+        logln("Format with 2 : " + fmt.format(2));
+        logln("Format with +INF : " + fmt.format(Double.POSITIVE_INFINITY));
+    }
+
+    /* @bug 4118592
+     * MessageFormat.parse fails with ChoiceFormat.
+     */
+    public void Test4118592()
+    {
+        MessageFormat mf = new MessageFormat("");
+        String pattern = "{0,choice,1#YES|2#NO}";
+        String prefix = "";
+        for (int i = 0; i < 5; i++) {
+            String formatted = prefix + "YES";
+            mf.applyPattern(prefix + pattern);
+            prefix += "x";
+            Object[] objs = mf.parse(formatted, new ParsePosition(0));
+            logln(i + ". pattern :\"" + mf.toPattern() + "\"");
+            log(" \"" + formatted + "\" parsed as ");
+            if (objs == null) logln("  null");
+            else logln("  " + objs[0]);
+        }
+    }
+    /* @bug 4118594
+     * MessageFormat.parse fails for some patterns.
+     */
+    public void Test4118594()
+    {
+        MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+        String forParsing = "x, y, z";
+        Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + forParsing + "\"");
+        if (!objs[0].toString().equals("z"))
+            errln("argument0: \"" + objs[0] + "\"");
+        mf.setLocale(Locale.US);
+        mf.applyPattern("{0,number,#.##}, {0,number,#.#}");
+        Object[] oldobjs = {new Double(3.1415)};
+        String result = mf.format( oldobjs );
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + result + "\"");
+        // result now equals "3.14, 3.1"
+        if (!result.equals("3.14, 3.1"))
+            errln("result = " + result);
+        Object[] newobjs = mf.parse(result, new ParsePosition(0));
+        // newobjs now equals {new Double(3.1)}
+        if (((Number)newobjs[0]).doubleValue() != 3.1) // was (Double) [alan]
+            errln( "newobjs[0] = " + newobjs[0]);
+    }
+    /* @bug 4105380
+     * When using ChoiceFormat, MessageFormat is not good for I18n.
+     */
+    public void Test4105380()
+    {
+        String patternText1 = "The disk \"{1}\" contains {0}.";
+        String patternText2 = "There are {0} on the disk \"{1}\"";
+        MessageFormat form1 = new MessageFormat(patternText1);
+        MessageFormat form2 = new MessageFormat(patternText2);
+        double[] filelimits = {0,1,2};
+        String[] filepart = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form1.setFormat(1, fileform);
+        form2.setFormat(0, fileform);
+        Object[] testArgs = {new Long(12373), "MyDisk"};
+        logln(form1.format(testArgs));
+        logln(form2.format(testArgs));
+    }
+    /* @bug 4120552
+     * MessageFormat.parse incorrectly sets errorIndex.
+     */
+    public void Test4120552()
+    {
+        MessageFormat mf = new MessageFormat("pattern");
+        String texts[] = {"pattern", "pat", "1234"};
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        for (int i = 0; i < texts.length; i++) {
+            ParsePosition pp = new ParsePosition(0);
+            Object[] objs = mf.parse(texts[i], pp);
+            log("  text for parsing: \"" + texts[i] + "\"");
+            if (objs == null) {
+                logln("  (incorrectly formatted string)");
+                if (pp.getErrorIndex() == -1)
+                    errln("Incorrect error index: " + pp.getErrorIndex());
+            } else {
+                logln("  (correctly formatted string)");
+            }
+        }
+    }
+
+    /**
+     * @bug 4142938
+     * MessageFormat handles single quotes in pattern wrong.
+     * This is actually a problem in ChoiceFormat; it doesn't
+     * understand single quotes.
+     */
+    public void Test4142938() {
+        String pat = "''Vous'' {0,choice,0#n''|1#}avez s\u00E9lectionne\u00E9 " + 
+            "{0,choice,0#aucun|1#{0}} client{0,choice,0#s|1#|2#s} " + 
+            "personnel{0,choice,0#s|1#|2#s}.";
+        MessageFormat mf = new MessageFormat(pat);
+
+        String[] PREFIX = {
+            "'Vous' n'avez s\u00E9lectionne\u00E9 aucun clients personnels.",
+            "'Vous' avez s\u00E9lectionne\u00E9 ",
+            "'Vous' avez s\u00E9lectionne\u00E9 "
+        };  
+        String[] SUFFIX = {
+            null,
+            " client personnel.",
+            " clients personnels."
+        };
+    
+        for (int i=0; i<3; i++) {
+            String out = mf.format(new Object[]{new Integer(i)});
+            if (SUFFIX[i] == null) {
+                if (!out.equals(PREFIX[i]))
+                    errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"");
+            }
+            else {
+                if (!out.startsWith(PREFIX[i]) ||
+                    !out.endsWith(SUFFIX[i]))
+                    errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"...\"" +
+                          SUFFIX[i] + "\"");
+            }
+        }
+    }
+
+    /**
+     * @bug 4142938
+     * Test the applyPattern and toPattern handling of single quotes
+     * by ChoiceFormat.  (This is in here because this was a bug reported
+     * against MessageFormat.)  The single quote is used to quote the
+     * pattern characters '|', '#', '<', and '\u2264'.  Two quotes in a row
+     * is a quote literal.
+     */
+    public void TestChoicePatternQuote() {
+        String[] DATA = {
+            // Pattern                  0 value           1 value
+            "0#can''t|1#can",           "can't",          "can",
+            "0#'pound(#)=''#'''|1#xyz", "pound(#)='#'",   "xyz",
+            "0#'1<2 | 1\u22641'|1#''",  "1<2 | 1\u22641", "'",
+        };
+        for (int i=0; i<DATA.length; i+=3) {
+            try {
+                ChoiceFormat cf = new ChoiceFormat(DATA[i]);
+                for (int j=0; j<=1; ++j) {
+                    String out = cf.format(j);
+                    if (!out.equals(DATA[i+1+j]))
+                        errln("Fail: Pattern \"" + DATA[i] + "\" x "+j+" -> " +
+                              out + "; want \"" + DATA[i+1+j] + '"');
+                }
+                String pat = cf.toPattern();
+                String pat2 = new ChoiceFormat(pat).toPattern();
+                if (!pat.equals(pat2))
+                    errln("Fail: Pattern \"" + DATA[i] + "\" x toPattern -> \"" + pat + '"');
+                else
+                    logln("Ok: Pattern \"" + DATA[i] + "\" x toPattern -> \"" + pat + '"');
+            }
+            catch (IllegalArgumentException e) {
+                errln("Fail: Pattern \"" + DATA[i] + "\" -> " + e);
+            }
+        }
+    }
+
+    /**
+     * @bug 4112104
+     * MessageFormat.equals(null) throws a NullPointerException.  The JLS states
+     * that it should return false.
+     */
+    public void Test4112104() {
+        MessageFormat format = new MessageFormat("");
+        try {
+            // This should NOT throw an exception
+            if (format.equals(null)) {
+                // It also should return false
+                errln("MessageFormat.equals(null) returns false");
+            }
+        }
+        catch (NullPointerException e) {
+            errln("MessageFormat.equals(null) throws " + e);
+        }
+    }
+
+    /**
+     * @bug 4169959
+     * MessageFormat does not format null objects. CANNOT REPRODUCE THIS BUG.
+     */
+    public void Test4169959() {
+        // This works
+        logln(MessageFormat.format( "This will {0}",
+                                    new String[]{"work"} ) );
+        
+        // This fails
+        logln(MessageFormat.format( "This will {0}",
+                                    new Object[]{ null } ) );
+    }
+    
+    public void test4232154() {
+        boolean gotException = false;
+        try {
+            new MessageFormat("The date is {0:date}");
+        } catch (Exception e) {
+            gotException = true;
+            if (!(e instanceof IllegalArgumentException)) {
+                throw new RuntimeException("got wrong exception type");
+            }
+            if ("argument number too large at ".equals(e.getMessage())) {
+                throw new RuntimeException("got wrong exception message");
+            }
+        }
+        if (!gotException) {
+            throw new RuntimeException("didn't get exception for invalid input");
+        }
+    }
+    
+    public void test4293229() {
+        MessageFormat format = new MessageFormat("'''{'0}'' '''{0}'''");
+        Object[] args = { null };
+        String expected = "'{0}' '{0}'";
+        String result = format.format(args);
+        if (!result.equals(expected)) {
+            throw new RuntimeException("wrong format result - expected \"" +
+                    expected + "\", got \"" + result + "\"");
+        }
+    }
+     
+    // This test basically ensures that the tests defined above also work with
+    // valid named arguments.
+    public void testBugTestsWithNamesArguments() {
+        
+      { // Taken from Test4031438().
+        String pattern1 = "Impossible {arg1} has occurred -- status code is {arg0} and message is {arg2}.";
+        String pattern2 = "Double '' Quotes {ARG_ZERO} test and quoted '{ARG_ONE}' test plus 'other {ARG_TWO} stuff'.";
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            logln("Apply with pattern : " + pattern1);
+            messageFormatter.applyPattern(pattern1);
+            HashMap paramsMap = new HashMap();
+            paramsMap.put("arg0", new Integer(7));
+            String tempBuffer = messageFormatter.format(paramsMap);
+            if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is 7 and message is {arg2}."))
+                errln("Tests arguments < substitution failed");
+            logln("Formatted with 7 : " + tempBuffer);
+            ParsePosition status = new ParsePosition(0);
+            Map objs = messageFormatter.parseToMap(tempBuffer, status);
+            if (objs.get("arg1") != null || objs.get("arg2") != null)
+                errln("Parse failed with more than expected arguments");
+            for (Iterator keyIter = objs.keySet().iterator();
+                 keyIter.hasNext();) {
+                String key = (String) keyIter.next();
+                if (objs.get(key) != null && !objs.get(key).toString().equals(paramsMap.get(key).toString())) {
+                    errln("Parse failed on object " + objs.get(key) + " with argument name : " + key );
+                }
+            }
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is {arg0} and message is {arg2}."))
+                errln("Tests with no arguments failed");
+            logln("Formatted with null : " + tempBuffer);
+            logln("Apply with pattern : " + pattern2);
+            messageFormatter.applyPattern(pattern2);
+            paramsMap.clear();
+            paramsMap.put("ARG_ZERO", new Integer(7));
+            tempBuffer = messageFormatter.format(paramsMap);
+            if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {ARG_ONE} test plus other {ARG_TWO} stuff."))
+                errln("quote format test (w/ params) failed.");
+            logln("Formatted with params : " + tempBuffer);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Double ' Quotes {ARG_ZERO} test and quoted {ARG_ONE} test plus other {ARG_TWO} stuff."))
+                errln("quote format test (w/ null) failed.");
+            logln("Formatted with null : " + tempBuffer);
+            logln("toPattern : " + messageFormatter.toPattern());
+        } catch (Exception foo) {
+            warnln("Exception when formatting in bug 4031438. "+foo.getMessage());
+        }
+      }{ // Taken from Test4052223().
+        ParsePosition pos = new ParsePosition(0);
+        if (pos.getErrorIndex() != -1) {
+            errln("ParsePosition.getErrorIndex initialization failed.");
+        }
+        MessageFormat fmt = new MessageFormat("There are {numberOfApples} apples growing on the {whatKindOfTree} tree.");
+        String str = new String("There is one apple growing on the peach tree.");
+        Map objs = fmt.parseToMap(str, pos);
+        logln("unparsable string , should fail at " + pos.getErrorIndex());
+        if (pos.getErrorIndex() == -1)
+            errln("Bug 4052223 failed : parsing string " + str);
+        pos.setErrorIndex(4);
+        if (pos.getErrorIndex() != 4)
+            errln("setErrorIndex failed, got " + pos.getErrorIndex() + " instead of 4");
+        if (objs != null)
+            errln("unparsable string, should return null");
+    }{ // Taken from Test4111739().
+        MessageFormat format1 = null;
+        MessageFormat format2 = null;
+        ObjectOutputStream ostream = null;
+        ByteArrayOutputStream baos = null;
+        ObjectInputStream istream = null;
+
+        try {
+            baos = new ByteArrayOutputStream();
+            ostream = new ObjectOutputStream(baos);
+        } catch(IOException e) {
+            errln("Unexpected exception : " + e.getMessage());
+            return;
+        }
+
+        try {
+            format1 = new MessageFormat("pattern{argument}");
+            ostream.writeObject(format1);
+            ostream.flush();
+
+            byte bytes[] = baos.toByteArray();
+
+            istream = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            format2 = (MessageFormat)istream.readObject();
+        } catch(Exception e) {
+            errln("Unexpected exception : " + e.getMessage());
+        }
+
+        if (!format1.equals(format2)) {
+            errln("MessageFormats before and after serialization are not" +
+                " equal\nformat1 = " + format1 + "(" + format1.toPattern() + ")\nformat2 = " +
+                format2 + "(" + format2.toPattern() + ")");
+        } else {
+            logln("Serialization for MessageFormat is OK.");
+        }
+    }{ // Taken from Test4116444().
+        String[] patterns = {"", "one", "{namedArgument,date,short}"};
+        MessageFormat mf = new MessageFormat("");
+
+        for (int i = 0; i < patterns.length; i++) {
+            String pattern = patterns[i];
+            mf.applyPattern(pattern);
+            try {
+                Map objs = mf.parseToMap(null, new ParsePosition(0));
+                logln("pattern: \"" + pattern + "\"");
+                log(" parsedObjects: ");
+                if (objs != null) {
+                    log("{");
+                    for (Iterator keyIter = objs.keySet().iterator();
+                         keyIter.hasNext();) {
+                        String key = (String)keyIter.next();
+                        if (objs.get(key) != null) {
+                            err("\"" + objs.get(key).toString() + "\"");
+                        } else {
+                            log("null");
+                        }
+                        if (keyIter.hasNext()) {
+                            log(",");
+                        }
+                    }
+                    log("}") ;
+                } else {
+                    log("null");
+                }
+                logln("");
+            } catch (Exception e) {
+                errln("pattern: \"" + pattern + "\"");
+                errln("  Exception: " + e.getMessage());
+            }
+        }
+    }{ // Taken from Test4114739().
+        MessageFormat mf = new MessageFormat("<{arg}>");
+        Map objs1 = null;
+        Map objs2 = new HashMap();
+        Map objs3 = new HashMap();
+        objs3.put("arg", null);
+        try {
+            logln("pattern: \"" + mf.toPattern() + "\"");
+            log("format(null) : ");
+            logln("\"" + mf.format(objs1) + "\"");
+            log("format({})   : ");
+            logln("\"" + mf.format(objs2) + "\"");
+            log("format({null}) :");
+            logln("\"" + mf.format(objs3) + "\"");
+        } catch (Exception e) {
+            errln("Exception thrown for null argument tests.");
+        } 
+    }{ // Taken from Test4118594().
+        String argName = "something_stupid";
+        MessageFormat mf = new MessageFormat("{"+ argName + "}, {" + argName + "}, {" + argName + "}");
+        String forParsing = "x, y, z";
+        Map objs = mf.parseToMap(forParsing, new ParsePosition(0));
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + forParsing + "\"");
+        if (!objs.get(argName).toString().equals("z"))
+            errln("argument0: \"" + objs.get(argName) + "\"");
+        mf.setLocale(Locale.US);
+        mf.applyPattern("{" + argName + ",number,#.##}, {" + argName + ",number,#.#}");
+        Map oldobjs = new HashMap();
+        oldobjs.put(argName, new Double(3.1415));
+        String result = mf.format( oldobjs );
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + result + "\"");
+        // result now equals "3.14, 3.1"
+        if (!result.equals("3.14, 3.1"))
+            errln("result = " + result);
+        Map newobjs = mf.parseToMap(result, new ParsePosition(0));
+        // newobjs now equals {new Double(3.1)}
+        if (((Number)newobjs.get(argName)).doubleValue() != 3.1) // was (Double) [alan]
+            errln( "newobjs.get(argName) = " + newobjs.get(argName));
+    }{ // Taken from Test4105380().
+        String patternText1 = "The disk \"{diskName}\" contains {numberOfFiles}.";
+        String patternText2 = "There are {numberOfFiles} on the disk \"{diskName}\"";
+        MessageFormat form1 = new MessageFormat(patternText1);
+        MessageFormat form2 = new MessageFormat(patternText2);
+        double[] filelimits = {0,1,2};
+        String[] filepart = {"no files","one file","{numberOfFiles,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form1.setFormat(1, fileform);
+        form2.setFormat(0, fileform);
+        Map testArgs = new HashMap();
+        testArgs.put("diskName", "MyDisk");
+        testArgs.put("numberOfFiles", new Long(12373));
+        logln(form1.format(testArgs));
+        logln(form2.format(testArgs));
+    }{ // Taken from test4293229().
+        MessageFormat format = new MessageFormat("'''{'myNamedArgument}'' '''{myNamedArgument}'''");
+        Map args = new HashMap();
+        String expected = "'{myNamedArgument}' '{myNamedArgument}'";
+        String result = format.format(args);
+        if (!result.equals(expected)) {
+            throw new RuntimeException("wrong format result - expected \"" +
+                    expected + "\", got \"" + result + "\"");
+        }
+    }
+  }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
new file mode 100644
index 0000000..c0381b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.NumberFormat.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+
+public class NumberFormatRegistrationTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) {
+        new NumberFormatRegistrationTest().run(args);
+    }
+
+    public void TestRegistration() {
+        final ULocale SRC_LOC = ULocale.FRANCE;
+        final ULocale SWAP_LOC = ULocale.US;
+
+        class TestFactory extends SimpleNumberFormatFactory {
+            NumberFormat currencyStyle;
+
+            TestFactory() {
+                this(SRC_LOC, SWAP_LOC);
+            }
+
+            TestFactory(ULocale srcLoc, ULocale swapLoc) {
+                super(srcLoc);
+                currencyStyle = NumberFormat.getIntegerInstance(swapLoc);
+            }
+
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                if (formatType == FORMAT_CURRENCY) {
+                    return currencyStyle;
+                }
+                return null;
+            }
+        }
+
+        {
+            // coverage before registration
+
+            try {
+                NumberFormat.unregister(null);
+                errln("did not throw exception on null unregister");
+            }
+            catch (Exception e) {
+                logln("PASS: null unregister failed as expected");
+            }
+
+            try {
+                NumberFormat.registerFactory(null);
+                errln("did not throw exception on null register");
+            }
+            catch (Exception e) {
+                logln("PASS: null register failed as expected");
+            }
+
+            try {
+                // if no NF has been registered yet, shim is null, so this silently
+                // returns false.  if, on the other hand, a NF has been registered,
+                // this will try to cast the argument to a Factory, and throw
+                // an exception.
+                if (NumberFormat.unregister("")) {
+                    errln("unregister of empty string key succeeded");
+                }
+            }
+            catch (Exception e) {
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+        NumberFormat f0 = NumberFormat.getIntegerInstance(SWAP_LOC);
+        NumberFormat f1 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat f2 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        Object key = NumberFormat.registerFactory(new TestFactory());
+        Object key2 = NumberFormat.registerFactory(new TestFactory(fu_FU, ULocale.GERMANY));
+        if (!Arrays.asList(NumberFormat.getAvailableULocales()).contains(fu_FU)) {
+            errln("did not list fu_FU");
+        }
+        NumberFormat f3 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        NumberFormat f4 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat.unregister(key); // restore for other tests
+        NumberFormat f5 = NumberFormat.getCurrencyInstance(SRC_LOC);
+
+        NumberFormat.unregister(key2);
+
+        float n = 1234.567f;
+        logln("f0 swap int: " + f0.format(n));
+        logln("f1 src int: " + f1.format(n));
+        logln("f2 src cur: " + f2.format(n));
+        logln("f3 reg cur: " + f3.format(n));
+        logln("f4 reg int: " + f4.format(n));
+        logln("f5 unreg cur: " + f5.format(n));
+
+        if (!f3.format(n).equals(f0.format(n))) {
+            errln("registered service did not match");
+        }
+        if (!f4.format(n).equals(f1.format(n))) {
+            errln("registered service did not inherit");
+        }
+        if (!f5.format(n).equals(f2.format(n))) {
+            errln("unregistered service did not match original");
+        }
+
+        // coverage
+        NumberFormat f6 = NumberFormat.getNumberInstance(fu_FU);
+        if (f6 == null) {
+            errln("getNumberInstance(fu_FU) returned null");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
new file mode 100644
index 0000000..4893c7e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -0,0 +1,326 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/numrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParseException;
+import java.io.*;
+
+/** 
+ * Performs regression test for MessageFormat
+ **/
+public class NumberFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception{
+        new NumberFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * alphaWorks upgrade
+     */
+    public void Test4161100() {
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+        nf.setMinimumFractionDigits(1);
+        nf.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = nf.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) nf).toPattern() + " = " + s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }
+    
+    /**
+     * DateFormat should call setIntegerParseOnly(TRUE) on adopted
+     * NumberFormat objects.
+     */
+    public void TestJ691() {
+        
+        Locale loc = new Locale("fr", "CH");
+    
+        // set up the input date string & expected output
+        String udt = "11.10.2000";
+        String exp = "11.10.00";
+    
+        // create a Calendar for this locale
+        Calendar cal = Calendar.getInstance(loc);
+    
+        // create a NumberFormat for this locale
+        NumberFormat nf = NumberFormat.getInstance(loc);
+    
+        // *** Here's the key: We don't want to have to do THIS:
+        //nf.setParseIntegerOnly(true);
+    
+        // create the DateFormat
+        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);
+    
+        df.setCalendar(cal);
+        df.setNumberFormat(nf);
+    
+        // set parsing to lenient & parse
+        Date ulocdat = new Date();
+        df.setLenient(true);
+        try {
+            ulocdat = df.parse(udt);
+        } catch (java.text.ParseException pe) {
+            errln(pe.getMessage());
+        }
+        // format back to a string
+        String outString = df.format(ulocdat);
+    
+        if (!outString.equals(exp)) {
+            errln("FAIL: " + udt + " => " + outString);
+        }
+    }
+    
+    /**
+     * Test getIntegerInstance();
+     */
+    public void Test4408066() {
+        
+        NumberFormat nf1 = NumberFormat.getIntegerInstance();
+        NumberFormat nf2 = NumberFormat.getIntegerInstance(Locale.CHINA);
+    
+        //test isParseIntegerOnly
+        if (!nf1.isParseIntegerOnly() || !nf2.isParseIntegerOnly()) {
+            errln("Failed : Integer Number Format Instance should set setParseIntegerOnly(true)");
+        }
+    
+        //Test format
+        {
+            double[] data = {
+                -3.75, -2.5, -1.5, 
+                -1.25, 0,    1.0, 
+                1.25,  1.5,  2.5, 
+                3.75,  10.0, 255.5
+                };
+            String[] expected = {
+                "-4", "-2", "-2",
+                "-1", "0",  "1",
+                "1",  "2",  "2",
+                "4",  "10", "256"
+                };
+    
+            for (int i = 0; i < data.length; ++i) {
+                String result = nf1.format(data[i]);
+                if (!result.equals(expected[i])) {
+                    errln("Failed => Source: " + Double.toString(data[i]) 
+                        + ";Formatted : " + result
+                        + ";but expectted: " + expected[i]);
+                }
+            }
+        }
+        //Test parse, Parsing should stop at "."
+        {
+            String data[] = {
+                "-3.75", "-2.5", "-1.5", 
+                "-1.25", "0",    "1.0", 
+                "1.25",  "1.5",  "2.5", 
+                "3.75",  "10.0", "255.5"
+                };
+            long[] expected = {
+                -3, -2, -1,
+                -1, 0,  1,
+                1,  1,  2,
+                3,  10, 255
+                };
+            
+            for (int i = 0; i < data.length; ++i) {
+                Number n = null;
+                try {
+                    n = nf1.parse(data[i]);
+                } catch (ParseException e) {
+                    errln("Failed: " + e.getMessage());
+                }
+                if (!(n instanceof Long) || (n instanceof Integer)) {
+                    errln("Failed: Integer Number Format should parse string to Long/Integer");
+                }
+                if (n.longValue() != expected[i]) {
+                    errln("Failed=> Source: " + data[i] 
+                        + ";result : " + n.toString()
+                        + ";expected :" + Long.toString(expected[i]));
+                }
+            }
+        }
+    }
+    
+    //Test New serialized DecimalFormat(2.0) read old serialized forms of DecimalFormat(1.3.1.1)
+    public void TestSerialization() throws IOException{
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        byte[][] contents = NumberFormatSerialTestData.getContent();
+        double data = 1234.56;
+        String[] expected = {
+            "1,234.56", "$1,234.56", "123,456%", "1.23456E3"};
+        for (int i = 0; i < 4; ++i) {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(contents[i]));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                String result = format.format(data);
+                if (result.equals(expected[i])) {
+                    logln("OK: Deserialized bogus NumberFormat(new version read old version)");
+                } else {
+                    errln("FAIL: the test data formats are not euqal");
+                }
+            } catch (Exception e) {
+                warnln("FAIL: " + e.getMessage());
+            }
+        }
+//#endif
+    }
+
+    /*
+     * Test case for JB#5509, strict parsing issue
+     */
+    public void TestJB5509() {
+        String[] data = {
+                "1,2",
+                "1.2",
+                "1,2.5",
+                "1,23.5",
+                "1,234.5",
+                "1,234",
+                "1,234,567",
+                "1,234,567.8",
+                "1,234,5",
+                "1,234,5.6",
+                "1,234,56.7"
+        };
+        boolean[] expected = { // false for expected parse failure
+                false,
+                true,
+                false,
+                false,
+                true,
+                true,
+                true,
+                true,
+                false,
+                false,
+                false,
+                false
+        };
+
+        DecimalFormat df = new DecimalFormat("#,##0.###", new DecimalFormatSymbols(new ULocale("en_US")));
+        df.setParseStrict(true);
+        for (int i = 0; i < data.length; i++) {
+            try {
+                df.parse(data[i]);
+                if (!expected[i]) {
+                    errln("Failed: ParseException must be thrown for string " + data[i]);
+                }
+            } catch (ParseException pe) {
+                if (expected[i]) {
+                    errln("Failed: ParseException must not be thrown for string " + data[i]);
+                }
+            }
+        }
+    }
+
+    /*
+     * Test case for ticket#5698 - parsing extremely large/small values
+     */
+    public void TestT5698() {
+        final String[] data = {
+                "12345679E66666666666666666",
+                "-12345679E66666666666666666",
+                ".1E2147483648", // exponent > max int
+                ".1E2147483647", // exponent == max int
+                ".1E-2147483648", // exponent == min int
+                ".1E-2147483649", // exponent < min int
+                "1.23E350", // value > max double
+                "1.23E300", // value < max double
+                "-1.23E350", // value < min double
+                "-1.23E300", // value > min double
+                "4.9E-324", // value = smallest non-zero double
+                "1.0E-325", // 0 < value < smallest non-zero positive double0
+                "-1.0E-325", // 0 > value > largest non-zero negative double
+        };
+        final double[] expected = {
+                Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY,
+                Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY,
+                0.0,
+                0.0,
+                Double.POSITIVE_INFINITY,
+                1.23e300d,
+                Double.NEGATIVE_INFINITY,
+                -1.23e300d,
+                4.9e-324d,
+                0.0,
+                -0.0,
+        };
+
+        NumberFormat nfmt = NumberFormat.getInstance();
+
+        for (int i = 0; i < data.length; i++) {
+            try {
+                Number n = nfmt.parse(data[i]);
+                if (expected[i] != n.doubleValue()) {
+                    errln("Failed: Parsed result for " + data[i] + ": " 
+                            + n.doubleValue() + " / expected: " + expected[i]);
+                }
+            } catch (ParseException pe) {
+                errln("Failed: ParseException is thrown for " + data[i]);
+            }
+        }
+    }
+    
+    void checkNBSPPatternRtNum(String testcase, NumberFormat nf, double myNumber) {
+        String myString = nf.format(myNumber);
+        
+            double aNumber;
+            try {
+                aNumber = nf.parse(myString).doubleValue();
+            } catch (ParseException e) {
+                // TODO Auto-generated catch block
+                errln("FAIL: " + testcase +" - failed to parse. " + e.toString());
+                return;
+            }
+            if(Math.abs(aNumber-myNumber)>.001) {
+            errln("FAIL: "+testcase+": formatted "+myNumber+", parsed into "+aNumber+"\n");
+        } else {
+            logln("PASS: "+testcase+": formatted "+myNumber+", parsed into "+aNumber+"\n");
+        }
+    }
+
+    void checkNBSPPatternRT(String testcase, NumberFormat nf) {
+        checkNBSPPatternRtNum(testcase, nf, 12345.);
+        checkNBSPPatternRtNum(testcase, nf, -12345.);
+    }
+
+    public void TestNBSPInPattern() {
+    NumberFormat nf = null;
+    String testcase;
+    
+    
+    testcase="ar_AE UNUM_CURRENCY";
+    nf = NumberFormat.getCurrencyInstance(new ULocale("ar_AE"));
+    checkNBSPPatternRT(testcase, nf);
+    // if we don't have CLDR 1.6 data, bring out the problem anyways 
+    
+    String SPECIAL_PATTERN = "\u00A4\u00A4'\u062f.\u0625.\u200f\u00a0'###0.00";
+    testcase = "ar_AE special pattern: " + SPECIAL_PATTERN;
+    nf = new DecimalFormat();
+    ((DecimalFormat)nf).applyPattern(SPECIAL_PATTERN);
+    checkNBSPPatternRT(testcase, nf);
+    
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
new file mode 100644
index 0000000..b269130
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -0,0 +1,234 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Porting From: ICU4C v1.8.1 : format : NumberFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/nmfmtrt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Random;
+
+/** 
+ * Performs round-trip tests for NumberFormat
+ **/
+public class NumberFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public double MAX_ERROR = 1e-14;
+    public double max_numeric_error = 0.0;
+    public double min_numeric_error = 1.0;
+    public boolean verbose = false;
+    public boolean STRING_COMPARE = false;
+    public boolean EXACT_NUMERIC_COMPARE = false;
+    public boolean DEBUG = false;
+    public boolean quick = true;
+    
+    public static void main(String[] args) throws Exception {
+        new NumberFormatRoundTripTest().run(args);
+    }
+    
+    public void TestNumberFormatRoundTrip() {
+    
+        NumberFormat fmt = null;
+    
+        logln("Default Locale");
+        
+        logln("Default Number format");
+        fmt = NumberFormat.getInstance();
+        _test(fmt);
+    
+        logln("Currency Format");
+        fmt = NumberFormat.getCurrencyInstance();
+        _test(fmt);
+    
+        logln("Percent Format");
+        fmt = NumberFormat.getPercentInstance();
+        _test(fmt);
+    
+    
+        int locCount = 0;
+        final Locale[] loc = NumberFormat.getAvailableLocales();
+        if(quick) {
+            if(locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only _testing first 5 Locales");
+        }
+        for(int i = 0; i < locCount; ++i) {
+            logln(loc[i].getDisplayName());
+    
+            fmt = NumberFormat.getInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getCurrencyInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getPercentInstance(loc[i]);
+            _test(fmt);
+        }
+    
+        logln("Numeric error " + min_numeric_error + " to " + max_numeric_error);
+    }
+    
+    /**
+     * Return a random value from -range..+range.
+     */
+    private Random random;
+    public double randomDouble(double range) {
+        if (random == null) {
+            random = createRandom(); // use test framework's random seed
+        }
+        return  random.nextDouble() * range;
+    } 
+    
+    public void _test(NumberFormat fmt) {
+    
+        _test(fmt, Double.NaN);
+        _test(fmt, Double.POSITIVE_INFINITY);
+        _test(fmt, Double.NEGATIVE_INFINITY);
+    
+        _test(fmt, 500);
+        _test(fmt, 0);
+        _test(fmt, -0);
+        _test(fmt, 0.0);
+        double negZero = 0.0;
+        negZero /= -1.0;
+        _test(fmt, negZero);
+        _test(fmt, 9223372036854775808.0d);
+        _test(fmt, -9223372036854775809.0d);
+        //_test(fmt, 6.936065876100493E74d);
+        
+    //    _test(fmt, 6.212122845281909E48d);
+        for (int i = 0; i < 10; ++i) {
+    
+            _test(fmt, randomDouble(1));
+            
+            _test(fmt, randomDouble(10000));
+    
+            _test(fmt, Math.floor((randomDouble(10000))));
+    
+            _test(fmt, randomDouble(1e50));
+    
+            _test(fmt, randomDouble(1e-50));
+    
+            _test(fmt, randomDouble(1e100));
+    
+            _test(fmt, randomDouble(1e75));
+    
+            _test(fmt, randomDouble(1e308) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e75) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e65) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e-292));
+    
+            _test(fmt, randomDouble(1e-78));
+    
+            _test(fmt, randomDouble(1e-323));
+    
+            _test(fmt, randomDouble(1e-100));
+    
+            _test(fmt, randomDouble(1e-78));
+        }
+    }
+    
+    public void _test(NumberFormat fmt, double value) {
+        _test(fmt, new Double(value));
+    }
+    
+    public void _test(NumberFormat fmt, long value) {
+        _test(fmt, new Long(value));
+    }
+    
+    public void _test(NumberFormat fmt, Number value) {
+        logln("test data = " + value);
+        fmt.setMaximumFractionDigits(999);
+        String s, s2;
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s = fmt.format(value.doubleValue());
+        else
+            s = fmt.format(value.longValue());
+    
+        Number n = new Double(0);
+        boolean show = verbose;
+        if (DEBUG)
+            logln(
+            /*value.getString(temp) +*/ " F> " + s);
+        try {
+            n = fmt.parse(s);
+        } catch (java.text.ParseException e) {
+            System.out.println(e);
+        }
+    
+        if (DEBUG)
+            logln(s + " P> " /*+ n.getString(temp)*/);
+    
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s2 = fmt.format(n.doubleValue());
+        else
+            s2 = fmt.format(n.longValue());
+    
+        if (DEBUG)
+            logln(/*n.getString(temp) +*/ " F> " + s2);
+    
+        if (STRING_COMPARE) {
+            if (!s.equals(s2)) {
+                errln("*** STRING ERROR \"" + s + "\" != \"" + s2 + "\"");
+                show = true;
+            }
+        }
+    
+        if (EXACT_NUMERIC_COMPARE) {
+            if (value != n) {
+                errln("*** NUMERIC ERROR");
+                show = true;
+            }
+        } else {
+            // Compute proportional error
+            double error = proportionalError(value, n);
+    
+            if (error > MAX_ERROR) {
+                errln("*** NUMERIC ERROR " + error);
+                show = true;
+            }
+    
+            if (error > max_numeric_error)
+                max_numeric_error = error;
+            if (error < min_numeric_error)
+                min_numeric_error = error;
+        }
+    
+        if (show)
+            logln(
+            /*value.getString(temp) +*/ value.getClass().getName() + " F> " + s + " P> " +
+            /*n.getString(temp) +*/ n.getClass().getName() + " F> " + s2);
+    
+    }
+        
+    public double proportionalError(Number a, Number b) {
+        double aa,bb;
+        
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            aa = a.doubleValue();
+        else
+            aa = a.longValue();
+    
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            bb = b.doubleValue();
+        else
+            bb = b.longValue();
+    
+        double error = aa - bb;
+        if(aa != 0 && bb != 0) 
+            error /= aa;
+           
+        return Math.abs(error);
+    }   
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
new file mode 100644
index 0000000..f3d7a49
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
@@ -0,0 +1,306 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+public class NumberFormatSerialTestData {
+    //get Content
+    public static byte[][] getContent() {
+            return content;
+    }
+
+    //NumberFormat.getInstance(Locale.US)
+    static byte[] generalInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 3, 127, 0, 0, 0, 3, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 116, 0, 0, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 111, 109, 
+        46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 
+        108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 8, 104, 
+        -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 97, 114, 
+        97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 111, 110, 
+        101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 67, 0, 
+        17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 
+        9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 114, 110, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 108, 67, 
+        0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 103, 110, 
+        73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 
+        114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 3, 78, 
+        97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 83, 121, 
+        109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 110, 116, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 110, 102, 
+        105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 117, 114, 
+        114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 0, 46, 
+        0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 0, 43, 
+        0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 1, 69, 
+        116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getCurrencyInstance(Locale.US)
+    static byte[] currencyInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 2, 127, 0, 0, 0, 2, 0, 0, 
+        1, 53, 2, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 3, 40, -62, -92, 116, 0, 1, 41, 116, 0, 2, 40, 
+        36, 116, 0, 1, 41, 116, 0, 2, -62, -92, 116, 0, 0, 116, 0, 1, 36, 116, 0, 0, 
+        112, 115, 114, 0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 
+        116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 
+        108, 115, 80, 29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 
+        109, 97, 108, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 
+        67, 0, 11, 101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 
+        117, 115, 83, 105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 
+        16, 112, 97, 116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 
+        112, 101, 114, 77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 
+        112, 108, 117, 115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 
+        115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 
+        105, 103, 105, 116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 
+        114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 
+        101, 120, 112, 111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 
+        0, 1, 76, 0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 
+        18, 105, 110, 116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 
+        0, 126, 0, 1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 
+        0, 59, 32, 48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 
+        116, 0, 1, 36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+        
+    };
+
+    //NumberFormat.getPercentInstance(Locale.US)
+    static byte[] percentInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 0, 127, 0, 0, 0, 0, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 100, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 1, 37, 116, 0, 1, 45, 116, 0, 
+        1, 37, 116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 1, 37, 112, 115, 114, 
+        0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 
+        101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 
+        29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 
+        101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 
+        110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 
+        105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 
+        116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 
+        116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 
+        77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 
+        115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 
+        110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 
+        116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 
+        110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 
+        111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 
+        0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 
+        116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 
+        1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 
+        48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 
+        36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getScientificInstance(Locale.US)
+    static byte[] scientificInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
+        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 1, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 
+        111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 
+        109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 
+        8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 
+        111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 
+        67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 
+        67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 
+        114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 
+        108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 
+        103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 
+        83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 
+        3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 
+        83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 
+        110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 
+        110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 
+        117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 
+        0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 
+        0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 
+        1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
new file mode 100644
index 0000000..a98cc65
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -0,0 +1,1872 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/numfmtst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.NumberFormat.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.impl.data.TokenIterator;
+import com.ibm.icu.math.BigDecimal;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.ArrayList;
+
+public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new NumberFormatTest().run(args);
+    }
+
+    // Test various patterns
+    public void TestPatterns() {
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[]    = { "#.#", "#.", ".#", "#" };
+        int pat_length = pat.length;
+        final String newpat[] = { "#0.#", "#0.", "#.0", "#" };
+        final String num[]    = { "0",   "0.", ".0", "0" };
+        for (int i=0; i<pat_length; ++i)
+        {
+            DecimalFormat fmt = new DecimalFormat(pat[i], sym);
+            String newp = fmt.toPattern();
+            if (!newp.equals(newpat[i]))
+                errln("FAIL: Pattern " + pat[i] + " should transmute to " + newpat[i] +
+                      "; " + newp + " seen instead");
+
+            String s = ((NumberFormat)fmt).format(0);
+            if (!s.equals(num[i]))
+            {
+                errln("FAIL: Pattern " + pat[i] + " should format zero as " + num[i] +
+                      "; " + s + " seen instead");
+                logln("Min integer digits = " + fmt.getMinimumIntegerDigits());
+            }
+            // BigInteger 0 - ticket#4731
+            s = ((NumberFormat)fmt).format(BigInteger.ZERO);
+            if (!s.equals(num[i]))
+            {
+                errln("FAIL: Pattern " + pat[i] + " should format BigInteger zero as " + num[i] +
+                      "; " + s + " seen instead");
+                logln("Min integer digits = " + fmt.getMinimumIntegerDigits());
+            }
+        }
+    }
+
+    // Test exponential pattern
+    public void TestExponential() {
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[] = { "0.####E0", "00.000E00", "##0.######E000", "0.###E0;[0.###E0]" };
+        int pat_length = pat.length;
+
+        double val[] = { 0.01234, 123456789, 1.23e300, -3.141592653e-271 };
+        int val_length = val.length;
+        final String valFormat[] = {
+            // 0.####E0
+            "1.234E-2", "1.2346E8", "1.23E300", "-3.1416E-271",
+            // 00.000E00
+            "12.340E-03", "12.346E07", "12.300E299", "-31.416E-272",
+            // ##0.######E000
+            "12.34E-003", "123.4568E006", "1.23E300", "-314.1593E-273",
+            // 0.###E0;[0.###E0]
+            "1.234E-2", "1.235E8", "1.23E300", "[3.142E-271]" };
+        /*double valParse[] =
+            {
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123456800, 1.23E300, -3.141593E-271,
+                0.01234, 123500000, 1.23E300, -3.142E-271,
+            };*/ //The variable is never used
+
+        int lval[] = { 0, -1, 1, 123456789 };
+        int lval_length = lval.length;
+        final String lvalFormat[] = {
+            // 0.####E0
+            "0E0", "-1E0", "1E0", "1.2346E8",
+            // 00.000E00
+            "00.000E00", "-10.000E-01", "10.000E-01", "12.346E07",
+            // ##0.######E000
+            "0E000", "-1E000", "1E000", "123.4568E006",
+            // 0.###E0;[0.###E0]
+            "0E0", "[1E0]", "1E0", "1.235E8" };
+        int lvalParse[] =
+            {
+                0, -1, 1, 123460000,
+                0, -1, 1, 123460000,
+                0, -1, 1, 123456800,
+                0, -1, 1, 123500000,
+            };
+        int ival = 0, ilval = 0;
+        for (int p = 0; p < pat_length; ++p) {
+            DecimalFormat fmt = new DecimalFormat(pat[p], sym);
+            logln("Pattern \"" + pat[p] + "\" -toPattern-> \"" + fmt.toPattern() + "\"");
+            int v;
+            for (v = 0; v < val_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(val[v]);
+                logln(" " + val[v] + " -format-> " + s);
+                if (!s.equals(valFormat[v + ival]))
+                    errln("FAIL: Expected " + valFormat[v + ival]);
+
+                ParsePosition pos = new ParsePosition(0);
+                double a = fmt.parse(s, pos).doubleValue();
+                if (pos.getIndex() == s.length()) {
+                    logln("  -parse-> " + Double.toString(a));
+                    // Use epsilon comparison as necessary
+                } else
+                    errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + a);
+            }
+            for (v = 0; v < lval_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(lval[v]);
+                logln(" " + lval[v] + "L -format-> " + s);
+                if (!s.equals(lvalFormat[v + ilval]))
+                    errln("ERROR: Expected " + lvalFormat[v + ilval] + " Got: " + s);
+
+                ParsePosition pos = new ParsePosition(0);
+                long a = 0;
+                Number A = fmt.parse(s, pos);
+                if (A != null) {
+                    a = A.longValue();
+                    if (pos.getIndex() == s.length()) {
+                        logln("  -parse-> " + a);
+                        if (a != lvalParse[v + ilval])
+                            errln("FAIL: Expected " + lvalParse[v + ilval]);
+                    } else
+                        errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + Long.toString(a));
+                } else {
+                    errln("Fail to parse the string: " + s);
+                }
+            }
+            ival += val_length;
+            ilval += lval_length;
+        }
+    }
+
+    // Test the handling of quotes
+    public void TestQuotes() {
+
+        StringBuffer pat;
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        pat = new StringBuffer("a'fo''o'b#");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("afo'ob123"))
+            errln("FAIL: Expected afo'ob123");
+
+        s ="";
+        pat = new StringBuffer("a''b#");
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("a'b123"))
+            errln("FAIL: Expected a'b123");
+    }
+
+    public void TestParseCurrencyTrailingSymbol() {
+        // see sun bug 4709840
+        NumberFormat fmt = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        float val = 12345.67f;
+        String str = fmt.format(val);
+        logln("val: " + val + " str: " + str);
+        try {
+            Number num = fmt.parse(str);
+            logln("num: " + num);
+        } catch (ParseException e) {
+            errln("parse of '" + str + "' threw exception: " + e);
+        }
+    }
+
+    /**
+     * Test the handling of the currency symbol in patterns.
+     **/
+    public void TestCurrencySign() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        StringBuffer pat = new StringBuffer("");
+        char currency = 0x00A4;
+        // "\xA4#,##0.00;-\xA4#,##0.00"
+        pat.append(currency).append("#,##0.00;-").append(currency).append("#,##0.00");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat) fmt).format(1234.56);
+        pat = new StringBuffer("");
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + 1234.56 + " . " + s);
+        if (!s.equals("$1,234.56"))
+            errln("FAIL: Expected $1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("-$1,234.56"))
+            errln("FAIL: Expected -$1,234.56");
+
+        pat = new StringBuffer("");
+        // "\xA4\xA4 #,##0.00;\xA4\xA4 -#,##0.00"
+        pat.append(currency).append(currency).append(" #,##0.00;").append(currency).append(currency).append(" -#,##0.00");
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = "";
+        s = ((NumberFormat) fmt).format(1234.56);
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + Double.toString(1234.56) + " . " + s);
+
+        if (!s.equals("USD 1,234.56"))
+            errln("FAIL: Expected USD 1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("USD -1,234.56"))
+            errln("FAIL: Expected USD -1,234.56");
+
+    }
+
+    /**
+     * Test localized currency patterns.
+     */
+    public void TestCurrency() {
+        String[] DATA = {
+            "fr", "CA", "", "1,50\u00a0$",
+            "de", "DE", "", "1,50\u00a0\u20AC",
+            "de", "DE", "PREEURO", "1,50\u00a0DM",
+            "fr", "FR", "", "1,50\u00a0\u20AC",
+            "fr", "FR", "PREEURO", "1,50\u00a0F",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            Locale locale = new Locale(DATA[i], DATA[i+1], DATA[i+2]);
+            NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
+            String s = fmt.format(1.50);
+            if (s.equals(DATA[i+3])) {
+                logln("Ok: 1.50 x " + locale + " => " + s);
+            } else {
+                logln("FAIL: 1.50 x " + locale + " => " + s +
+                      ", expected " + DATA[i+3]);
+            }
+        }
+
+        // format currency with CurrencyAmount
+        for (int i=0; i<DATA.length; i+=4) {
+            Locale locale = new Locale(DATA[i], DATA[i+1], DATA[i+2]);
+
+            Currency curr = Currency.getInstance(locale);
+            logln("\nName of the currency is: " + curr.getName(locale, Currency.LONG_NAME, new boolean[] {false}));
+            CurrencyAmount cAmt = new CurrencyAmount(1.5, curr);
+            logln("CurrencyAmount object's hashCode is: " + cAmt.hashCode()); //cover hashCode
+
+            NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
+            String sCurr = fmt.format(cAmt);
+            if (sCurr.equals(DATA[i+3])) {
+                logln("Ok: 1.50 x " + locale + " => " + sCurr);
+            } else {
+                errln("FAIL: 1.50 x " + locale + " => " + sCurr +
+                      ", expected " + DATA[i+3]);
+            }
+        }
+
+        //Cover MeasureFormat.getCurrencyFormat()
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+        MeasureFormat curFmt = MeasureFormat.getCurrencyFormat();
+        String strBuf = curFmt.format(new CurrencyAmount(new Float(1234.56), Currency.getInstance("USD")));
+        try {
+            CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(strBuf);
+            Number val = parsedVal.getNumber();
+            if (!val.equals(new BigDecimal("1234.56"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the number. val=" + val);
+            }
+            if (!parsedVal.getCurrency().equals(Currency.getInstance("USD"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the currency");
+            }
+        }
+        catch (ParseException e) {
+            errln("FAIL: " + e.getMessage());
+        }
+        ULocale.setDefault(save);
+    }
+
+    /**
+     * Test the Currency object handling, new as of ICU 2.2.
+     */
+    public void TestCurrencyObject() {
+        NumberFormat fmt =
+            NumberFormat.getCurrencyInstance(Locale.US);
+
+        expectCurrency(fmt, null, 1234.56, "$1,234.56");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "\u20AC1,234.56"); // Euro
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "\u00A51,235"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "Fr.1,234.55"); // 0.05 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "$1,234.56");
+
+        fmt = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+
+        expectCurrency(fmt, null, 1234.56, "1 234,56 \u20AC");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "1 235 \u00A5JP"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "1 234,55 sFr."); // 0.25 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "1 234,56 $US");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "1 234,56 \u20AC"); // Euro
+    }
+
+    public void TestCurrencyPatterns() {
+        int i;
+        Locale[] locs = NumberFormat.getAvailableLocales();
+        for (i=0; i<locs.length; ++i) {
+            NumberFormat nf = NumberFormat.getCurrencyInstance(locs[i]);
+            // Make sure currency formats do not have a variable number
+            // of fraction digits
+            int min = nf.getMinimumFractionDigits();
+            int max = nf.getMaximumFractionDigits();
+            if (min != max) {
+                String a = nf.format(1.0);
+                String b = nf.format(1.125);
+                errln("FAIL: " + locs[i] +
+                      " min fraction digits != max fraction digits; "+
+                      "x 1.0 => " + a +
+                      "; x 1.125 => " + b);
+            }
+
+            // Make sure EURO currency formats have exactly 2 fraction digits
+            if (nf instanceof DecimalFormat) {
+                Currency curr = ((DecimalFormat) nf).getCurrency();
+                if (curr != null && "EUR".equals(curr.getCurrencyCode())) {
+                    if (min != 2 || max != 2) {
+                        String a = nf.format(1.0);
+                        errln("FAIL: " + locs[i] +
+                              " is a EURO format but it does not have 2 fraction digits; "+
+                              "x 1.0 => " +
+                              a);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Do rudimentary testing of parsing.
+     */
+    public void TestParse() {
+        String arg = "0.0";
+        DecimalFormat format = new DecimalFormat("00");
+        double aNumber = 0l;
+        try {
+            aNumber = format.parse(arg).doubleValue();
+        } catch (ParseException e) {
+            System.out.println(e);
+        }
+        logln("parse(" + arg + ") = " + aNumber);
+    }
+
+    /**
+     * Test proper rounding by the format method.
+     */
+    public void TestRounding487() {
+
+        NumberFormat nf = NumberFormat.getInstance();
+        roundingTest(nf, 0.00159999, 4, "0.0016");
+        roundingTest(nf, 0.00995, 4, "0.01");
+
+        roundingTest(nf, 12.3995, 3, "12.4");
+
+        roundingTest(nf, 12.4999, 0, "12");
+        roundingTest(nf, - 19.5, 0, "-20");
+
+    }
+
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+
+        expect(f, 123456789L, "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+
+        f.setSecondaryGroupingSize(4);
+        expect(f, 123456789L, "12,3456,789");
+        expectPat(f, "#,####,###");
+        NumberFormat g = NumberFormat.getInstance(new Locale("hi", "IN"));
+
+        String out = "";
+        long l = 1876543210L;
+        out = g.format(l);
+
+        // expect "1,87,65,43,210", but with Hindi digits
+        //         01234567890123
+        boolean ok = true;
+        if (out.length() != 14) {
+            ok = false;
+        } else {
+            for (int i = 0; i < out.length(); ++i) {
+                boolean expectGroup = false;
+                switch (i) {
+                    case 1 :
+                    case 4 :
+                    case 7 :
+                    case 10 :
+                        expectGroup = true;
+                        break;
+                }
+                // Later -- fix this to get the actual grouping
+                // character from the resource bundle.
+                boolean isGroup = (out.charAt(i) == 0x002C);
+                if (isGroup != expectGroup) {
+                    ok = false;
+                    break;
+                }
+            }
+        }
+        if (!ok) {
+            errln("FAIL  Expected "+ l + " x hi_IN . \"1,87,65,43,210\" (with Hindi digits), got \""
+                    + out + "\"");
+        } else {
+            logln("Ok    " + l + " x hi_IN . \"" + out + "\"");
+        }
+    }
+
+    public void roundingTest(NumberFormat nf, double x, int maxFractionDigits, final String expected) {
+        nf.setMaximumFractionDigits(maxFractionDigits);
+        String out = nf.format(x);
+        logln(x + " formats with " + maxFractionDigits + " fractional digits to " + out);
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        int n = 1234;
+        expect2(fmt1, n, "1.234E3");
+        expect2(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestScientific() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+
+        // Test pattern round-trip
+        final String PAT[] = { "#E0", "0.####E0", "00.000E00", "##0.####E000", "0.###E0;[0.###E0]" };
+        int PAT_length = PAT.length;
+        int DIGITS[] = {
+            // min int, max int, min frac, max frac
+            0, 1, 0, 0, // "#E0"
+            1, 1, 0, 4, // "0.####E0"
+            2, 2, 3, 3, // "00.000E00"
+            1, 3, 0, 4, // "##0.####E000"
+            1, 1, 0, 3, // "0.###E0;[0.###E0]"
+        };
+        for (int i = 0; i < PAT_length; ++i) {
+            String pat = PAT[i];
+            DecimalFormat df = new DecimalFormat(pat, US);
+            String pat2 = df.toPattern();
+            if (pat.equals(pat2)) {
+                logln("Ok   Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            } else {
+                errln("FAIL Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            }
+            // Make sure digit counts match what we expect
+            if (df.getMinimumIntegerDigits() != DIGITS[4 * i]
+                || df.getMaximumIntegerDigits() != DIGITS[4 * i + 1]
+                || df.getMinimumFractionDigits() != DIGITS[4 * i + 2]
+                || df.getMaximumFractionDigits() != DIGITS[4 * i + 3]) {
+                errln("FAIL \""+ pat+ "\" min/max int; min/max frac = "
+                        + df.getMinimumIntegerDigits() + "/"
+                        + df.getMaximumIntegerDigits() + ";"
+                        + df.getMinimumFractionDigits() + "/"
+                        + df.getMaximumFractionDigits() + ", expect "
+                        + DIGITS[4 * i] + "/"
+                        + DIGITS[4 * i + 1] + ";"
+                        + DIGITS[4 * i + 2] + "/"
+                        + DIGITS[4 * i + 3]);
+            }
+        }
+
+        expect2(new DecimalFormat("#E0", US), 12345.0, "1.2345E4");
+        expect(new DecimalFormat("0E0", US), 12345.0, "1E4");
+
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        //when the pattern problem is finalized, delete comment mark'//'
+        //of the following code
+        expect2(NumberFormat.getScientificInstance(Locale.US), 12345.678901, "1.2345678901E4");
+        logln("Testing NumberFormat.getScientificInstance(ULocale) ...");
+        expect2(NumberFormat.getScientificInstance(ULocale.US), 12345.678901, "1.2345678901E4");
+
+        expect(new DecimalFormat("##0.###E0", US), 12345.0, "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US), 12345.00001, "12.35E3");
+        expect2(new DecimalFormat("##0.####E0", US), 12345, "12.345E3");
+
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        expect2(NumberFormat.getScientificInstance(Locale.FRANCE), 12345.678901, "1,2345678901E4");
+        logln("Testing NumberFormat.getScientificInstance(ULocale) ...");
+        expect2(NumberFormat.getScientificInstance(ULocale.FRANCE), 12345.678901, "1,2345678901E4");
+
+        expect(new DecimalFormat("##0.####E0", US), 789.12345e-9, "789.12E-9");
+        expect2(new DecimalFormat("##0.####E0", US), 780.e-9, "780E-9");
+        expect(new DecimalFormat(".###E0", US), 45678.0, ".457E5");
+        expect2(new DecimalFormat(".###E0", US), 0, ".0E0");
+        /*
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),
+                                     new DecimalFormat("00E0", US),
+                                     new DecimalFormat("000E0", US),
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",
+                              "457E5",
+                            }
+               );
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("#E0", US), 45678000, "4.5678E7");
+        expect2(new DecimalFormat("##E0", US), 45678000, "45.678E6");
+        expect2(new DecimalFormat("####E0", US), 45678000, "4567.8E4");
+        expect(new DecimalFormat("0E0", US), 45678000, "5E7");
+        expect(new DecimalFormat("00E0", US), 45678000, "46E6");
+        expect(new DecimalFormat("000E0", US), 45678000, "457E5");
+        /*
+        expect(new DecimalFormat("###E0", US, status),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new Double(0.00123), "1.23E-3",
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("###E0", US), 0.0000123, "12.3E-6");
+        expect2(new DecimalFormat("###E0", US), 0.000123, "123E-6");
+        expect2(new DecimalFormat("###E0", US), 0.00123, "1.23E-3");
+        expect2(new DecimalFormat("###E0", US), 0.0123, "12.3E-3");
+        expect2(new DecimalFormat("###E0", US), 0.123, "123E-3");
+        expect2(new DecimalFormat("###E0", US), 1.23, "1.23E0");
+        expect2(new DecimalFormat("###E0", US), 12.3, "12.3E0");
+        expect2(new DecimalFormat("###E0", US), 123.0, "123E0");
+        expect2(new DecimalFormat("###E0", US), 1230.0, "1.23E3");
+        /*
+        expect(new DecimalFormat("0.#E+00", US, status),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("0.#E+00", US), 0.00012, "1.2E-04");
+        expect2(new DecimalFormat("0.#E+00", US), 12000, "1.2E+04");
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPad() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect2(new DecimalFormat("*^##.##", US), 0, "^^^^0");
+        expect2(new DecimalFormat("*^##.##", US), -1.3, "^-1.3");
+        expect2(
+            new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+            0,
+            "0.0E0______ g-m/s^2");
+        expect(
+            new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+            1.0 / 3,
+            "333.333E-3_ g-m/s^2");
+        expect2(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US), 0, "0.0______ g-m/s^2");
+        expect(
+            new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
+            1.0 / 3,
+            "0.33333__ g-m/s^2");
+
+        // Test padding before a sign
+        final String formatStr = "*x#,###,###,##0.0#;*x(###,###,##0.0#)";
+        expect2(new DecimalFormat(formatStr, US), -10, "xxxxxxxxxx(10.0)");
+        expect2(new DecimalFormat(formatStr, US), -1000, "xxxxxxx(1,000.0)");
+        expect2(new DecimalFormat(formatStr, US), -1000000, "xxx(1,000,000.0)");
+        expect2(new DecimalFormat(formatStr, US), -100.37, "xxxxxxxx(100.37)");
+        expect2(new DecimalFormat(formatStr, US), -10456.37, "xxxxx(10,456.37)");
+        expect2(new DecimalFormat(formatStr, US), -1120456.37, "xx(1,120,456.37)");
+        expect2(new DecimalFormat(formatStr, US), -112045600.37, "(112,045,600.37)");
+        expect2(new DecimalFormat(formatStr, US), -1252045600.37, "(1,252,045,600.37)");
+
+        expect2(new DecimalFormat(formatStr, US), 10, "xxxxxxxxxxxx10.0");
+        expect2(new DecimalFormat(formatStr, US), 1000, "xxxxxxxxx1,000.0");
+        expect2(new DecimalFormat(formatStr, US), 1000000, "xxxxx1,000,000.0");
+        expect2(new DecimalFormat(formatStr, US), 100.37, "xxxxxxxxxx100.37");
+        expect2(new DecimalFormat(formatStr, US), 10456.37, "xxxxxxx10,456.37");
+        expect2(new DecimalFormat(formatStr, US), 1120456.37, "xxxx1,120,456.37");
+        expect2(new DecimalFormat(formatStr, US), 112045600.37, "xx112,045,600.37");
+        expect2(new DecimalFormat(formatStr, US), 10252045600.37, "10,252,045,600.37");
+
+        // Test padding between a sign and a number
+        final String formatStr2 = "#,###,###,##0.0#*x;(###,###,##0.0#*x)";
+        expect2(new DecimalFormat(formatStr2, US), -10, "(10.0xxxxxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1000, "(1,000.0xxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1000000, "(1,000,000.0xxx)");
+        expect2(new DecimalFormat(formatStr2, US), -100.37, "(100.37xxxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -10456.37, "(10,456.37xxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1120456.37, "(1,120,456.37xx)");
+        expect2(new DecimalFormat(formatStr2, US), -112045600.37, "(112,045,600.37)");
+        expect2(new DecimalFormat(formatStr2, US), -1252045600.37, "(1,252,045,600.37)");
+
+        expect2(new DecimalFormat(formatStr2, US), 10, "10.0xxxxxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1000, "1,000.0xxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1000000, "1,000,000.0xxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 100.37, "100.37xxxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 10456.37, "10,456.37xxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1120456.37, "1,120,456.37xxxx");
+        expect2(new DecimalFormat(formatStr2, US), 112045600.37, "112,045,600.37xx");
+        expect2(new DecimalFormat(formatStr2, US), 10252045600.37, "10,252,045,600.37");
+
+        //testing the setPadCharacter(UnicodeString) and getPadCharacterString()
+        DecimalFormat fmt = new DecimalFormat("#", US);
+        char padString = 'P';
+        fmt.setPadCharacter(padString);
+        expectPad(fmt, "*P##.##", DecimalFormat.PAD_BEFORE_PREFIX, 5, padString);
+        fmt.setPadCharacter('^');
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        //commented untill implementation is complete
+        /*  fmt.setPadCharacter((UnicodeString)"^^^");
+          expectPad(fmt, "*^^^#", DecimalFormat.kPadBeforePrefix, 3, (UnicodeString)"^^^");
+          padString.remove();
+          padString.append((UChar)0x0061);
+          padString.append((UChar)0x0302);
+          fmt.setPadCharacter(padString);
+          UChar patternChars[]={0x002a, 0x0061, 0x0302, 0x0061, 0x0302, 0x0023, 0x0000};
+          UnicodeString pattern(patternChars);
+          expectPad(fmt, pattern , DecimalFormat.kPadBeforePrefix, 4, padString);
+          */
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPatterns2() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        char hat = 0x005E; /*^*/
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, hat);
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, hat);
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, hat);
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, hat);
+        expectPad(fmt, "$*^$#", -1);
+        expectPad(fmt, "#$*^$", -1);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX, 12, (char) 0x0078 /*x*/);
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX, 3, (char) 0x0078 /*x*/);
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX, 10, (char) 0x0061 /*a*/);
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter(hat);
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    public void TestRegistration() {
+        final ULocale SRC_LOC = ULocale.FRANCE;
+        final ULocale SWAP_LOC = ULocale.US;
+
+        class TestFactory extends SimpleNumberFormatFactory {
+            NumberFormat currencyStyle;
+
+            TestFactory() {
+                super(SRC_LOC, true);
+                currencyStyle = NumberFormat.getIntegerInstance(SWAP_LOC);
+            }
+
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                if (formatType == FORMAT_CURRENCY) {
+                    return currencyStyle;
+                }
+                return null;
+            }
+        }
+
+        NumberFormat f0 = NumberFormat.getIntegerInstance(SWAP_LOC);
+        NumberFormat f1 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat f2 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        Object key = NumberFormat.registerFactory(new TestFactory());
+        NumberFormat f3 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        NumberFormat f4 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat.unregister(key); // restore for other tests
+        NumberFormat f5 = NumberFormat.getCurrencyInstance(SRC_LOC);
+
+        float n = 1234.567f;
+        logln("f0 swap int: " + f0.format(n));
+        logln("f1 src int: " + f1.format(n));
+        logln("f2 src cur: " + f2.format(n));
+        logln("f3 reg cur: " + f3.format(n));
+        logln("f4 reg int: " + f4.format(n));
+        logln("f5 unreg cur: " + f5.format(n));
+
+        if (!f3.format(n).equals(f0.format(n))) {
+            errln("registered service did not match");
+        }
+        if (!f4.format(n).equals(f1.format(n))) {
+            errln("registered service did not inherit");
+        }
+        if (!f5.format(n).equals(f2.format(n))) {
+            errln("unregistered service did not match original");
+        }
+    }
+
+    public void TestScientific2() {
+        // jb 2552
+        DecimalFormat fmt = (DecimalFormat)NumberFormat.getCurrencyInstance();
+        Number num = new Double(12.34);
+        expect(fmt, num, "$12.34");
+        fmt.setScientificNotation(true);
+        expect(fmt, num, "$1.23E1");
+        fmt.setScientificNotation(false);
+        expect(fmt, num, "$12.34");
+    }
+
+    public void TestScientificGrouping() {
+        // jb 2552
+        DecimalFormat fmt = new DecimalFormat("###.##E0");
+        expect(fmt, .01234, "12.3E-3");
+        expect(fmt, .1234, "123E-3");
+        expect(fmt, 1.234, "1.23E0");
+        expect(fmt, 12.34, "12.3E0");
+        expect(fmt, 123.4, "123E0");
+        expect(fmt, 1234, "1.23E3");
+    }
+
+    // additional coverage tests
+
+    // sigh, can't have static inner classes, why not?
+
+    static final class PI extends Number {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -305601227915602172L;
+
+        private PI() {}
+        public int intValue() { return (int)Math.PI; }
+        public long longValue() { return (long)Math.PI; }
+        public float  floatValue() { return (float)Math.PI; }
+        public double doubleValue() { return (double)Math.PI; }
+        public byte byteValue() { return (byte)Math.PI; }
+        public short shortValue() { return (short)Math.PI; }
+
+        public static final Number INSTANCE = new PI();
+    }
+
+    public void TestCoverage() {
+        NumberFormat fmt = NumberFormat.getNumberInstance(); // default locale
+        logln(fmt.format(new BigInteger("1234567890987654321234567890987654321", 10)));
+
+        fmt = NumberFormat.getScientificInstance(); // default locale
+
+        logln(fmt.format(PI.INSTANCE));
+
+        try {
+            logln(fmt.format("12345"));
+            errln("numberformat of string did not throw exception");
+        }
+        catch (Exception e) {
+            logln("PASS: numberformat of string failed as expected");
+        }
+
+        int hash = fmt.hashCode();
+        logln("hash code " + hash);
+
+        logln("compare to string returns: " + fmt.equals(""));
+
+        // For ICU 2.6 - alan
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat df = new DecimalFormat("'*&'' '\u00A4' ''&*' #,##0.00", US);
+        df.setCurrency(Currency.getInstance("INR"));
+        expect2(df, 1.0, "*&' \u20a8 '&* 1.00");
+        expect2(df, -2.0, "-*&' \u20a8 '&* 2.00");
+        df.applyPattern("#,##0.00 '*&'' '\u00A4' ''&*'");
+        expect2(df, 2.0, "2.00 *&' \u20a8 '&*");
+        expect2(df, -1.0, "-1.00 *&' \u20a8 '&*");
+
+//#if defined(FOUNDATION10)
+//##        com.ibm.icu.math.BigDecimal r = df.getRoundingIncrement();
+//#else
+        java.math.BigDecimal r = df.getRoundingIncrement();
+//#endif
+        if (r != null) {
+            errln("FAIL: rounding = " + r + ", expect null");
+        }
+
+        if (df.isScientificNotation()) {
+            errln("FAIL: isScientificNotation = true, expect false");
+        }
+
+        df.applyPattern("0.00000");
+        df.setScientificNotation(true);
+        if (!df.isScientificNotation()) {
+            errln("FAIL: isScientificNotation = false, expect true");
+        }
+        df.setMinimumExponentDigits((byte)2);
+        if (df.getMinimumExponentDigits() != 2) {
+            errln("FAIL: getMinimumExponentDigits = " +
+                  df.getMinimumExponentDigits() + ", expect 2");
+        }
+        df.setExponentSignAlwaysShown(true);
+        if (!df.isExponentSignAlwaysShown()) {
+            errln("FAIL: isExponentSignAlwaysShown = false, expect true");
+        }
+        df.setSecondaryGroupingSize(0);
+        if (df.getSecondaryGroupingSize() != 0) {
+            errln("FAIL: getSecondaryGroupingSize = " +
+                  df.getSecondaryGroupingSize() + ", expect 0");
+        }
+        expect2(df, 3.14159, "3.14159E+00");
+
+        // DecimalFormatSymbols#getInstance
+        DecimalFormatSymbols decsym1 = DecimalFormatSymbols.getInstance();
+        DecimalFormatSymbols decsym2 = new DecimalFormatSymbols();
+        if (!decsym1.equals(decsym2)) {
+            errln("FAIL: DecimalFormatSymbols returned by getInstance()" +
+            "does not match new DecimalFormatSymbols().");
+        }
+        decsym1 = DecimalFormatSymbols.getInstance(Locale.JAPAN);
+        decsym2 = DecimalFormatSymbols.getInstance(ULocale.JAPAN);
+        if (!decsym1.equals(decsym2)) {
+            errln("FAIL: DecimalFormatSymbols returned by getInstance(Locale.JAPAN)" +
+            "does not match the one returned by getInstance(ULocale.JAPAN).");
+        }
+
+        // DecimalFormatSymbols#getAvailableLocales/#getAvailableULocales
+        Locale[] allLocales = DecimalFormatSymbols.getAvailableLocales();
+        if (allLocales.length == 0) {
+            errln("FAIL: Got a empty list for DecimalFormatSymbols.getAvailableLocales");
+        } else {
+            logln("PASS: " + allLocales.length +
+                    " available locales returned by DecimalFormatSymbols.getAvailableLocales");
+        }
+        ULocale[] allULocales = DecimalFormatSymbols.getAvailableULocales();
+        if (allULocales.length == 0) {
+            errln("FAIL: Got a empty list for DecimalFormatSymbols.getAvailableLocales");
+        } else {
+            logln("PASS: " + allULocales.length +
+                    " available locales returned by DecimalFormatSymbols.getAvailableULocales");
+        }
+    }
+
+    public void TestWhiteSpaceParsing() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("a  b#0c  ", US);
+        int n = 1234;
+        expect(fmt, "a b1234c ", n);
+        expect(fmt, "a   b1234c   ", n);
+    }
+
+    /**
+     * Test currencies whose display name is a ChoiceFormat.
+     */
+    public void TestComplexCurrency() {
+        Locale loc = new Locale("kn", "IN", "");
+        NumberFormat fmt = NumberFormat.getCurrencyInstance(loc);
+
+        expect2(fmt, 1.0, "Re.\u00a01.00");
+        expect(fmt, 1.001, "Re.\u00a01.00"); // tricky
+        expect2(fmt, 12345678.0, "Rs.\u00a01,23,45,678.00");
+        expect2(fmt, 0.5, "Rs.\u00a00.50");
+        expect2(fmt, -1.0, "-Re.\u00a01.00");
+        expect2(fmt, -10.0, "-Rs.\u00a010.00");
+    }
+
+    public void TestCurrencyKeyword() {
+    ULocale locale = new ULocale("th_TH@currency=QQQ");
+    NumberFormat format = NumberFormat.getCurrencyInstance(locale);
+    String result = format.format(12.34f);
+    if (!"QQQ12.34".equals(result)) {
+        errln("got unexpected currency: " + result);
+    }
+    }
+
+    public void TestThreadedFormat() {
+
+        class FormatTask implements Runnable {
+            DecimalFormat fmt;
+            StringBuffer buf;
+            boolean inc;
+            float num;
+
+            FormatTask(DecimalFormat fmt, int index) {
+                this.fmt = fmt;
+                this.buf = new StringBuffer();
+                this.inc = (index & 0x1) == 0;
+                this.num = inc ? 0 : 10000;
+            }
+
+            public void run() {
+        if (inc) {
+            while (num < 10000) {
+            buf.append(fmt.format(num) + "\n");
+            num += 3.14159;
+            }
+        } else {
+            while (num > 0) {
+            buf.append(fmt.format(num) + "\n");
+            num -= 3.14159;
+            }
+        }
+        }
+
+        String result() {
+        return buf.toString();
+        }
+    }
+
+        DecimalFormat fmt = new DecimalFormat("0.####");
+        FormatTask[] tasks = new FormatTask[8];
+        for (int i = 0; i < tasks.length; ++i) {
+        tasks[i] = new FormatTask(fmt, i);
+    }
+
+    TestUtil.runUntilDone(tasks);
+
+        for (int i = 2; i < tasks.length; i++) {
+        String str1 = tasks[i].result();
+        String str2 = tasks[i-2].result();
+            if (!str1.equals(str2)) {
+                System.out.println("mismatch at " + i);
+                System.out.println(str1);
+                System.out.println(str2);
+                errln("decimal format thread mismatch");
+
+                break;
+            }
+            str1 = str2;
+        }
+    }
+
+    public void TestPerMill() {
+        DecimalFormat fmt = new DecimalFormat("###.###\u2030");
+        assertEquals("0.4857 x ###.###\u2030",
+                     "485.7\u2030", fmt.format(0.4857));
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.ENGLISH);
+        sym.setPerMill('m');
+        DecimalFormat fmt2 = new DecimalFormat("", sym);
+        fmt2.applyLocalizedPattern("###.###m");
+        assertEquals("0.4857 x ###.###m",
+                     "485.7m", fmt2.format(0.4857));
+    }
+
+    public void TestIllegalPatterns() {
+        // Test cases:
+        // Prefix with "-:" for illegal patterns
+        // Prefix with "+:" for legal patterns
+        String DATA[] = {
+            // Unquoted special characters in the suffix are illegal
+            "-:000.000|###",
+            "+:000.000'|###'",
+        };
+        for (int i=0; i<DATA.length; ++i) {
+            String pat=DATA[i];
+            boolean valid = pat.charAt(0) == '+';
+            pat = pat.substring(2);
+            Exception e = null;
+            try {
+                // locale doesn't matter here
+                new DecimalFormat(pat);
+            } catch (IllegalArgumentException e1) {
+                e = e1;
+            } catch (IndexOutOfBoundsException e1) {
+                e = e1;
+            }
+            String msg = (e==null) ? "success" : e.getMessage();
+            if ((e==null) == valid) {
+                logln("Ok: pattern \"" + pat + "\": " + msg);
+            } else {
+                errln("FAIL: pattern \"" + pat + "\" should have " +
+                      (valid?"succeeded":"failed") + "; got " + msg);
+            }
+        }
+    }
+
+    /**
+     * Parse a CurrencyAmount using the given NumberFormat, with
+     * the 'delim' character separating the number and the currency.
+     */
+    private static CurrencyAmount parseCurrencyAmount(String str, NumberFormat fmt,
+                                                      char delim)
+        throws ParseException {
+        int i = str.indexOf(delim);
+        return new CurrencyAmount(fmt.parse(str.substring(0,i)),
+                                  Currency.getInstance(str.substring(i+1)));
+    }
+
+    /**
+     * Return an integer representing the next token from this
+     * iterator.  The integer will be an index into the given list, or
+     * -1 if there are no more tokens, or -2 if the token is not on
+     * the list.
+     */
+    private static int keywordIndex(String tok) {
+        for (int i=0; i<KEYWORDS.length; ++i) {
+            if (tok.equals(KEYWORDS[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    private static final String KEYWORDS[] = {
+        /*0*/ "ref=", // <reference pattern to parse numbers>
+        /*1*/ "loc=", // <locale for formats>
+        /*2*/ "f:",   // <pattern or '-'> <number> <exp. string>
+        /*3*/ "fp:",  // <pattern or '-'> <number> <exp. string> <exp. number>
+        /*4*/ "rt:",  // <pattern or '-'> <(exp.) number> <(exp.) string>
+        /*5*/ "p:",   // <pattern or '-'> <string> <exp. number>
+        /*6*/ "perr:", // <pattern or '-'> <invalid string>
+        /*7*/ "pat:", // <pattern or '-'> <exp. toPattern or '-' or 'err'>
+        /*8*/ "fpc:", // <loc or '-'> <curr.amt> <exp. string> <exp. curr.amt>
+        /*9*/ "strict=", // true or false
+    };
+
+    public void TestCases() {
+        String caseFileName = "NumberFormatTestCases.txt";
+        java.io.InputStream is = NumberFormatTest.class.getResourceAsStream(caseFileName);
+
+        ResourceReader reader = new ResourceReader(is, caseFileName, "utf-8");
+        TokenIterator tokens = new TokenIterator(reader);
+
+        Locale loc = new Locale("en", "US", "");
+        DecimalFormat ref = null, fmt = null;
+        MeasureFormat mfmt = null;
+        String pat = null, str = null, mloc = null;
+        boolean strict = false;
+
+        try {
+            for (;;) {
+                String tok = tokens.next();
+                if (tok == null) {
+                    break;
+                }
+                String where = "(" + tokens.getLineNumber() + ") ";
+                int cmd = keywordIndex(tok);
+                switch (cmd) {
+                case 0:
+                    // ref= <reference pattern>
+                    ref = new DecimalFormat(tokens.next(),
+                                            new DecimalFormatSymbols(Locale.US));
+                    ref.setParseStrict(strict);
+                    logln("Setting reference pattern to:\t" + ref);
+                    break;
+                case 1:
+                    // loc= <locale>
+                    loc = LocaleUtility.getLocaleFromName(tokens.next());
+                    pat = ((DecimalFormat) NumberFormat.getInstance(loc)).toPattern();
+                    logln("Setting locale to:\t" + loc + ", \tand pattern to:\t" + pat);
+                    break;
+                case 2: // f:
+                case 3: // fp:
+                case 4: // rt:
+                case 5: // p:
+                    tok = tokens.next();
+                    if (!tok.equals("-")) {
+                        pat = tok;
+                    }
+                    try {
+                        fmt = new DecimalFormat(pat, new DecimalFormatSymbols(loc));
+                        fmt.setParseStrict(strict);
+                    } catch (IllegalArgumentException iae) {
+                        errln(where + "Pattern \"" + pat + '"');
+                        iae.printStackTrace();
+                        tokens.next(); // consume remaining tokens
+                        //tokens.next();
+                        if (cmd == 3) tokens.next();
+                        continue;
+                    }
+                   str = null;
+                    try {
+                        if (cmd == 2 || cmd == 3 || cmd == 4) {
+                            // f: <pattern or '-'> <number> <exp. string>
+                            // fp: <pattern or '-'> <number> <exp. string> <exp. number>
+                            // rt: <pattern or '-'> <number> <string>
+                            String num = tokens.next();
+                            str = tokens.next();
+                            Number n = (Number) ref.parse(num);
+                            assertEquals(where + '"' + pat + "\".format(" + num + ")",
+                                         str, fmt.format(n));
+                            if (cmd == 3) { // fp:
+                                n = (Number) ref.parse(tokens.next());
+                            }
+                            if (cmd != 2) { // != f:
+                                assertEquals(where + '"' + pat + "\".parse(\"" + str + "\")",
+                                             n, fmt.parse(str));
+                            }
+                        }
+                        // p: <pattern or '-'> <string to parse> <exp. number>
+                        else {
+                            str = tokens.next();
+                            String expstr = tokens.next();
+                            Number parsed = fmt.parse(str);
+                            Number exp = (Number) ref.parse(expstr);
+                            assertEquals(where + '"' + pat + "\".parse(\"" + str + "\")",
+                                         exp, parsed);
+                        }
+                    } catch (ParseException e) {
+                        errln(where + '"' + pat + "\".parse(\"" + str +
+                              "\") threw an exception");
+                        e.printStackTrace();
+                    }
+                    break;
+                case 6:
+                    // perr: <pattern or '-'> <invalid string>
+                    errln("Under construction");
+                    return;
+                case 7:
+                    // pat: <pattern> <exp. toPattern, or '-' or 'err'>
+                    String testpat = tokens.next();
+                    String exppat  = tokens.next();
+                    boolean err    = exppat.equals("err");
+                    if (testpat.equals("-")) {
+                        if (err) {
+                            errln("Invalid command \"pat: - err\" at " +  tokens.describePosition());
+                            continue;
+                        }
+                        testpat = pat;
+                    }
+                    if (exppat.equals("-")) exppat = testpat;
+                    try {
+                        DecimalFormat f = null;
+                        if (testpat == pat) { // [sic]
+                            f = fmt;
+                        } else {
+                            f = new DecimalFormat(testpat);
+                            f.setParseStrict(strict);
+                        }
+                        if (err) {
+                            errln(where + "Invalid pattern \"" + testpat +
+                                  "\" was accepted");
+                        } else {
+                            assertEquals(where + '"' + testpat + "\".toPattern()",
+                                         exppat, f.toPattern());
+                        }
+                    } catch (IllegalArgumentException iae2) {
+                        if (err) {
+                            logln("Ok: " + where + "Invalid pattern \"" + testpat +
+                                  "\" threw an exception");
+                        } else {
+                            errln(where + "Valid pattern \"" + testpat +
+                                  "\" threw an exception");
+                            iae2.printStackTrace();
+                        }
+                    }
+                    break;
+                case 8: // fpc:
+                    tok = tokens.next();
+                    if (!tok.equals("-")) {
+                        mloc = tok;
+                        ULocale l = new ULocale(mloc);
+                        try {
+                            mfmt = MeasureFormat.getCurrencyFormat(l);
+                        } catch (IllegalArgumentException iae) {
+                            errln(where + "Loc \"" + tok + '"');
+                            iae.printStackTrace();
+                            tokens.next(); // consume remaining tokens
+                            tokens.next();
+                            tokens.next();
+                            continue;
+                        }
+                    }
+                    str = null;
+                    try {
+                        // fpc: <loc or '-'> <curr.amt> <exp. string> <exp. curr.amt>
+                        String currAmt = tokens.next();
+                        str = tokens.next();
+                        CurrencyAmount n = parseCurrencyAmount(currAmt, ref, '/');
+                        assertEquals(where + "getCurrencyFormat(" + mloc + ").format(" + currAmt + ")",
+                                     str, mfmt.format(n));
+                        n = parseCurrencyAmount(tokens.next(), ref, '/');
+                        assertEquals(where + "getCurrencyFormat(" + mloc + ").parse(\"" + str + "\")",
+                                     n, (CurrencyAmount) mfmt.parseObject(str));
+                    } catch (ParseException e) {
+                        errln(where + '"' + pat + "\".parse(\"" + str +
+                              "\") threw an exception");
+                        e.printStackTrace();
+                    }
+                    break;
+                case 9: // strict= true or false
+                    strict = "true".equalsIgnoreCase(tokens.next());
+                    logln("Setting strict to:\t" + strict);
+                    break;
+                case -1:
+                    errln("Unknown command \"" + tok + "\" at " + tokens.describePosition());
+                    return;
+                }
+            }
+        } catch (java.io.IOException e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        throw new RuntimeException(e.getMessage());
+//#else
+            throw new RuntimeException(e);
+//#endif
+        }
+    }
+
+    public void TestRounding() {
+        DecimalFormat nf = (DecimalFormat) com.ibm.icu.text.NumberFormat.getInstance(ULocale.ENGLISH);
+        if (false) { // for debugging specific value
+            nf.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+            checkRounding(nf, new BigDecimal("300.0300000000"), 0, new BigDecimal("0.020000000"));
+        }
+        // full tests
+        int[] roundingIncrements = {1, 2, 5, 20, 50, 100};
+        int[] testValues = {0, 300};
+        for (int j = 0; j < testValues.length; ++j) {
+            for (int mode = BigDecimal.ROUND_UP; mode < BigDecimal.ROUND_HALF_EVEN; ++mode) {
+                nf.setRoundingMode(mode);
+                for (int increment = 0; increment < roundingIncrements.length; ++increment) {
+                    BigDecimal base = new BigDecimal(testValues[j]);
+                    BigDecimal rInc = new BigDecimal(roundingIncrements[increment]);
+                    checkRounding(nf,  base, 20, rInc);
+                    rInc = new BigDecimal("1.000000000").divide(rInc);
+                    checkRounding(nf,  base, 20, rInc);
+                }
+            }
+        }
+    }
+
+    void checkRounding(DecimalFormat nf, BigDecimal base, int iterations, BigDecimal increment) {
+//#if defined(FOUNDATION10)
+//##        nf.setRoundingIncrement(increment);
+//#else
+        nf.setRoundingIncrement(increment.toBigDecimal());
+//#endif
+        BigDecimal lastParsed = new BigDecimal(Integer.MIN_VALUE); // used to make sure that rounding is monotonic
+        for (int i = -iterations; i <= iterations; ++i) {
+            BigDecimal iValue = base.add(increment.multiply(new BigDecimal(i)).movePointLeft(1));
+            BigDecimal smallIncrement = new BigDecimal("0.00000001");
+            if (iValue.signum() != 0) {
+                smallIncrement.multiply(iValue); // scale unless zero
+            }
+            // we not only test the value, but some values in a small range around it.
+            lastParsed = checkRound(nf, iValue.subtract(smallIncrement), lastParsed);
+            lastParsed = checkRound(nf, iValue, lastParsed);
+            lastParsed = checkRound(nf, iValue.add(smallIncrement), lastParsed);
+        }
+    }
+
+    private BigDecimal checkRound(DecimalFormat nf, BigDecimal iValue, BigDecimal lastParsed) {
+        String formatedBigDecimal = nf.format(iValue);
+        String formattedDouble = nf.format(iValue.doubleValue());
+        if (!equalButForTrailingZeros(formatedBigDecimal, formattedDouble)) {
+            errln("Failure at: " + iValue + " (" + iValue.doubleValue() + ")"
+                  + ",\tRounding-mode: " + roundingModeNames[nf.getRoundingMode()]
+                  + ",\tRounding-increment: " + nf.getRoundingIncrement()
+                  + ",\tdouble: " + formattedDouble
+                  + ",\tBigDecimal: " + formatedBigDecimal);
+        } else {
+            logln("Value: " + iValue
+                  + ",\tRounding-mode: " + roundingModeNames[nf.getRoundingMode()]
+                  + ",\tRounding-increment: " + nf.getRoundingIncrement()
+                  + ",\tdouble: " + formattedDouble
+                  + ",\tBigDecimal: " + formatedBigDecimal);
+        }
+        try {
+            // Number should have compareTo(...)
+            BigDecimal parsed = toBigDecimal(nf.parse(formatedBigDecimal));
+            if (lastParsed.compareTo(parsed) > 0) {
+                errln("Rounding wrong direction!: " + lastParsed + " > " + parsed);
+            }
+            lastParsed = parsed;
+        } catch (ParseException e) {
+            errln("Parse Failure with: " + formatedBigDecimal);
+        }
+        return lastParsed;
+    }
+
+    static BigDecimal toBigDecimal(Number number) {
+        return number instanceof BigDecimal ? (BigDecimal) number
+            : number instanceof BigInteger ? new BigDecimal((BigInteger)number)
+//#if defined(FOUNDATION10)
+//#else
+            : number instanceof java.math.BigDecimal ? new BigDecimal((java.math.BigDecimal)number)
+//#endif
+            : number instanceof Double ? new BigDecimal(number.doubleValue())
+            : number instanceof Float ? new BigDecimal(number.floatValue())
+            : new BigDecimal(number.longValue());
+    }
+
+    static String[] roundingModeNames = {
+        "ROUND_UP", "ROUND_DOWN", "ROUND_CEILING", "ROUND_FLOOR",
+        "ROUND_HALF_UP", "ROUND_HALF_DOWN", "ROUND_HALF_EVEN",
+        "ROUND_UNNECESSARY"
+    };
+
+    private static boolean equalButForTrailingZeros(String formatted1, String formatted2) {
+        if (formatted1.length() == formatted2.length()) return formatted1.equals(formatted2);
+        return stripFinalZeros(formatted1).equals(stripFinalZeros(formatted2));
+    }
+
+    private static String stripFinalZeros(String formatted) {
+        int len1 = formatted.length();
+        char ch;
+        while (len1 > 0 && ((ch = formatted.charAt(len1-1)) == '0' || ch == '.')) --len1;
+        return formatted.substring(0,len1);
+    }
+
+    //------------------------------------------------------------------
+    // Support methods
+    //------------------------------------------------------------------
+
+    // Format-Parse test
+    public void expect2(NumberFormat fmt, Number n, String exp) {
+        // Don't round-trip format test, since we explicitly do it
+        expect(fmt, n, exp, false);
+        expect(fmt, exp, n);
+    }
+
+    // Format-Parse test (convenience)
+    public void expect2(NumberFormat fmt, double n, String exp) {
+        expect2(fmt, new Double(n), exp);
+    }
+
+    // Format-Parse test (convenience)
+    public void expect2(NumberFormat fmt, long n, String exp) {
+        expect2(fmt, new Long(n), exp);
+    }
+
+    // Format test
+    public void expect(NumberFormat fmt, Number n, String exp, boolean rt) {
+        StringBuffer saw = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        fmt.format(n, saw, pos);
+        String pat = ((DecimalFormat)fmt).toPattern();
+        if (saw.toString().equals(exp)) {
+            logln("Ok   " + n + " x " +
+                  pat + " = \"" +
+                  saw + "\"");
+            // We should be able to round-trip the formatted string =>
+            // number => string (but not the other way around: number
+            // => string => number2, might have number2 != number):
+            if (rt) {
+                try {
+                    Number n2 = fmt.parse(exp);
+                    StringBuffer saw2 = new StringBuffer();
+                    fmt.format(n2, saw2, pos);
+                    if (!saw2.toString().equals(exp)) {
+                        errln("FAIL \"" + exp + "\" => " + n2 +
+                              " => \"" + saw2 + '"');
+                    }
+                } catch (ParseException e) {
+                    errln(e.getMessage());
+                    return;
+                }
+            }
+        } else {
+            errln("FAIL " + n + " x " +
+                  pat + " = \"" +
+                  saw + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, Number n, String exp) {
+        expect(fmt, n, exp, true);
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, double n, String exp) {
+        expect(fmt, new Double(n), exp);
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, long n, String exp) {
+        expect(fmt, new Long(n), exp);
+    }
+
+    // Parse test
+    public void expect(NumberFormat fmt, String str, Number n) {
+        Number num = null;
+        try {
+            num = (Number) fmt.parse(str);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+            return;
+        }
+        String pat = ((DecimalFormat)fmt).toPattern();
+        // A little tricky here -- make sure Double(12345.0) and
+        // Long(12345) match.
+        if (num.equals(n) || num.doubleValue() == n.doubleValue()) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  num);
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  num + ", expected " + n);
+        }
+    }
+
+    // Parse test (convenience)
+    public void expect(NumberFormat fmt, String str, double n) {
+        expect(fmt, str, new Double(n));
+    }
+
+    // Parse test (convenience)
+    public void expect(NumberFormat fmt, String str, long n) {
+        expect(fmt, str, new Long(n));
+    }
+
+    private void expectCurrency(NumberFormat nf, Currency curr,
+                                double value, String string) {
+        DecimalFormat fmt = (DecimalFormat) nf;
+        if (curr != null) {
+            fmt.setCurrency(curr);
+        }
+        String s = fmt.format(value).replace('\u00A0', ' ');
+
+        if (s.equals(string)) {
+            logln("Ok: " + value + " x " + curr + " => " + s);
+        } else {
+            errln("FAIL: " + value + " x " + curr + " => " + s +
+                  ", expected " + string);
+        }
+    }
+
+    public void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    public void expectPad(DecimalFormat fmt, final String pat, int pos, int width, final char pad) {
+        int apos = 0, awidth = 0;
+        char apadStr;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apadStr = fmt.getPadCharacter();
+        } catch (Exception e) {
+            apos = -1;
+            awidth = width;
+            apadStr = pad;
+        }
+
+        if (apos == pos && awidth == width && apadStr == pad) {
+            logln("Ok   \"" + pat + "\" pos="
+                    + apos + ((pos == -1) ? "" : " width=" + awidth + " pad=" + apadStr));
+        } else {
+            errln("FAIL \"" + pat + "\" pos=" + apos + " width="
+                    + awidth + " pad=" + apadStr + ", expected "
+                    + pos + " " + width + " " + pad);
+        }
+    }
+
+    public void expectPat(DecimalFormat fmt, final String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + "\"");
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    public void TestJB3832(){
+        ULocale locale = new ULocale("pt_PT@currency=PTE");
+        NumberFormat format = NumberFormat.getCurrencyInstance(locale);
+        Currency curr = Currency.getInstance(locale);
+        logln("\nName of the currency is: " + curr.getName(locale, Currency.LONG_NAME, new boolean[] {false}));
+        CurrencyAmount cAmt = new CurrencyAmount(1150.50, curr);
+        logln("CurrencyAmount object's hashCode is: " + cAmt.hashCode()); //cover hashCode
+        String str = format.format(cAmt);
+        String expected = "1,150$50\u00a0Esc.";
+        if(!expected.equals(str)){
+            errln("Did not get the expected output Expected: "+expected+" Got: "+ str);
+        }
+    }
+
+    public void TestStrictParse() {
+        String[] pass = {
+            "0",           // single zero before end of text is not leading
+            "0 ",          // single zero at end of number is not leading
+            "0.",          // single zero before period (or decimal, it's ambiguous) is not leading
+            "0,",          // single zero before comma (not group separator) is not leading
+            "0.0",         // single zero before decimal followed by digit is not leading
+            "0. ",         // same as above before period (or decimal) is not leading
+            "0.100,5",     // comma stops parse of decimal (no grouping)
+            ".00",         // leading decimal is ok, even with zeros
+            "1234567",     // group separators are not required
+            "12345, ",     // comma not followed by digit is not a group separator, but end of number
+            "1,234, ",     // if group separator is present, group sizes must be appropriate
+            "1,234,567",   // ...secondary too
+            "0E",          // an exponnent not followed by zero or digits is not an exponent
+        };
+        String[] fail = {
+            "00",        // leading zero before zero
+            "012",       // leading zero before digit
+            "0,456",     // leading zero before group separator
+            "1,2",       // wrong number of digits after group separator
+            ",0",        // leading group separator before zero
+            ",1",        // leading group separator before digit
+            ",.02",      // leading group separator before decimal
+            "1,.02",     // group separator before decimal
+            "1,,200",    // multiple group separators
+            "1,45",      // wrong number of digits in primary group
+            "1,45 that", // wrong number of digits in primary group
+            "1,45.34",   // wrong number of digits in primary group
+            "1234,567",  // wrong number of digits in secondary group
+            "12,34,567", // wrong number of digits in secondary group
+            "1,23,456,7890", // wrong number of digits in primary and secondary groups
+        };
+
+        DecimalFormat nf = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
+        runStrictParseBatch(nf, pass, fail);
+
+        String[] scientificPass = {
+            "0E2",      // single zero before exponent is ok
+            "1234E2",   // any number of digits before exponent is ok
+            "1,234E",   // an exponent string not followed by zero or digits is not an exponent
+        };
+        String[] scientificFail = {
+            "00E2",     // double zeros fail
+            "1,234E2",  // group separators with exponent fail
+        };
+
+        nf = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
+        runStrictParseBatch(nf, scientificPass, scientificFail);
+
+        String[] mixedPass = {
+            "12,34,567",
+            "12,34,567,",
+            "12,34,567, that",
+            "12,34,567 that",
+        };
+        String[] mixedFail = {
+            "12,34,56",
+            "12,34,56,",
+            "12,34,56, that ",
+            "12,34,56 that",
+        };
+
+        nf = new DecimalFormat("#,##,##0.#");
+        runStrictParseBatch(nf, mixedPass, mixedFail);
+    }
+
+    void runStrictParseBatch(DecimalFormat nf, String[] pass, String[] fail) {
+        nf.setParseStrict(false);
+        runStrictParseTests("should pass", nf, pass, true);
+        runStrictParseTests("should also pass", nf, fail, true);
+        nf.setParseStrict(true);
+        runStrictParseTests("should still pass", nf, pass, true);
+        runStrictParseTests("should fail", nf, fail, false);
+    }
+
+    void runStrictParseTests(String msg, DecimalFormat nf, String[] tests, boolean pass) {
+        logln("");
+        logln("pattern: '" + nf.toPattern() + "'");
+        logln(msg);
+        for (int i = 0; i < tests.length; ++i) {
+            String str = tests[i];
+            ParsePosition pp = new ParsePosition(0);
+            Number n = nf.parse(str, pp);
+            String formatted = n != null ? nf.format(n) : "null";
+            String err = pp.getErrorIndex() == -1 ? "" : "(error at " + pp.getErrorIndex() + ")";
+            if ((err.length() == 0) != pass) {
+                errln("'" + str + "' parsed '" +
+                      str.substring(0, pp.getIndex()) +
+                      "' returned " + n + " formats to '" +
+                      formatted + "' " + err);
+            } else {
+                if (err.length() > 0) {
+                    err = "got expected " + err;
+                }
+                logln("'" + str + "' parsed '" +
+                      str.substring(0, pp.getIndex()) +
+                      "' returned " + n + " formats to '" +
+                      formatted + "' " + err);
+            }
+        }
+    }
+    public void TestJB5251(){
+        //save default locale
+        ULocale defaultLocale = ULocale.getDefault();
+        ULocale.setDefault(new ULocale("qr_QR"));
+        try {
+            NumberFormat.getInstance();
+        }
+        catch (Exception e) {
+            errln("Numberformat threw exception for non-existent locale. It should use the default.");
+        }
+        //reset default locale
+        ULocale.setDefault(defaultLocale);
+    }
+
+    public void TestParseReturnType() {
+        String[] defaultNonBigDecimals = {
+            "123",      // Long
+            "123.0",    // Long
+            "0.0",      // Long
+            "12345678901234567890"      // BigInteger
+        };
+
+        String[] doubles = {
+            "-0.0",
+            "NaN",
+            "\u221E"    // Infinity
+        };
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat nf = new DecimalFormat("#.#", sym);
+
+        if (nf.isParseBigDecimal()) {
+            errln("FAIL: isParseDecimal() must return false by default");
+        }
+
+        // isParseBigDecimal() is false
+        for (int i = 0; i < defaultNonBigDecimals.length; i++) {
+            try {
+                Number n = nf.parse(defaultNonBigDecimals[i]);
+                if (n instanceof BigDecimal) {
+                    errln("FAIL: parse returns BigDecimal instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + defaultNonBigDecimals[i] + "' threw exception: " + e);
+            }
+        }
+        // parse results for doubls must be always Double
+        for (int i = 0; i < doubles.length; i++) {
+            try {
+                Number n = nf.parse(doubles[i]);
+                if (!(n instanceof Double)) {
+                    errln("FAIL: parse does not return Double instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + doubles[i] + "' threw exception: " + e);
+            }
+        }
+
+        // force this DecimalFormat to return BigDecimal
+        nf.setParseBigDecimal(true);
+        if (!nf.isParseBigDecimal()) {
+            errln("FAIL: isParseBigDecimal() must return true");
+        }
+
+        // isParseBigDecimal() is true
+        for (int i = 0; i < defaultNonBigDecimals.length; i++) {
+            try {
+                Number n = nf.parse(defaultNonBigDecimals[i]);
+                if (!(n instanceof BigDecimal)) {
+                    errln("FAIL: parse does not return BigDecimal instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + defaultNonBigDecimals[i] + "' threw exception: " + e);
+            }
+        }
+        // parse results for doubls must be always Double
+        for (int i = 0; i < doubles.length; i++) {
+            try {
+                Number n = nf.parse(doubles[i]);
+                if (!(n instanceof Double)) {
+                    errln("FAIL: parse does not return Double instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + doubles[i] + "' threw exception: " + e);
+            }
+        }
+    }
+
+    public void TestNonpositiveMultiplier() {
+        DecimalFormat df = new DecimalFormat("0");
+
+        // test zero multiplier
+
+        try {
+            df.setMultiplier(0);
+
+            // bad
+            errln("DecimalFormat.setMultiplier(0) did not throw an IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // good
+        }
+
+        // test negative multiplier
+
+        try {
+            df.setMultiplier(-1);
+
+            if (df.getMultiplier() != -1) {
+                errln("DecimalFormat.setMultiplier(-1) did not change the multiplier to -1");
+                return;
+            }
+
+            // good
+        } catch (IllegalArgumentException ex) {
+            // bad
+            errln("DecimalFormat.setMultiplier(-1) threw an IllegalArgumentException");
+            return;
+        }
+
+        expect(df, "1122.123", -1122.123);
+        expect(df, "-1122.123", 1122.123);
+        expect(df, "1.2", -1.2);
+        expect(df, "-1.2", 1.2);
+
+        expect2(df, Long.MAX_VALUE, BigInteger.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, Long.MIN_VALUE, BigInteger.valueOf(Long.MIN_VALUE).negate().toString());
+        expect2(df, Long.MAX_VALUE / 2, BigInteger.valueOf(Long.MAX_VALUE / 2).negate().toString());
+        expect2(df, Long.MIN_VALUE / 2, BigInteger.valueOf(Long.MIN_VALUE / 2).negate().toString());
+
+        expect2(df, BigDecimal.valueOf(Long.MAX_VALUE), BigDecimal.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, BigDecimal.valueOf(Long.MIN_VALUE), BigDecimal.valueOf(Long.MIN_VALUE).negate().toString());
+        
+//#if defined(FOUNDATION10)
+//#else
+        expect2(df, java.math.BigDecimal.valueOf(Long.MAX_VALUE), java.math.BigDecimal.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, java.math.BigDecimal.valueOf(Long.MIN_VALUE), java.math.BigDecimal.valueOf(Long.MIN_VALUE).negate().toString());
+//#endif
+    }
+
+    public void TestJB5358() {
+        int numThreads = 10;
+        String numstr = "12345";
+        double expected = 12345;
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#.#", sym);
+        ArrayList errors = new ArrayList();
+
+        ParseThreadJB5358[] threads = new ParseThreadJB5358[numThreads];
+        for (int i = 0; i < numThreads; i++) {
+            threads[i] = new ParseThreadJB5358((DecimalFormat)fmt.clone(), numstr, expected, errors);
+            threads[i].start();
+        }
+        for (int i = 0; i < numThreads; i++) {
+            try {
+                threads[i].join();
+            } catch (InterruptedException ie) {
+                ie.printStackTrace();
+            }
+        }
+        if (errors.size() != 0) {
+            StringBuffer errBuf = new StringBuffer();
+            for (int i = 0; i < errors.size(); i++) {
+                errBuf.append((String)errors.get(i));
+                errBuf.append("\n");
+            }
+            errln("FAIL: " + errBuf);
+        }
+    }
+
+    static private class ParseThreadJB5358 extends Thread {
+        private DecimalFormat decfmt;
+        private String numstr;
+        private double expect;
+        private ArrayList errors;
+
+        public ParseThreadJB5358(DecimalFormat decfmt, String numstr, double expect, ArrayList errors) {
+            this.decfmt = decfmt;
+            this.numstr = numstr;
+            this.expect = expect;
+            this.errors = errors;
+        }
+
+        public void run() {
+            for (int i = 0; i < 10000; i++) {
+                try {
+                    Number n = decfmt.parse(numstr);
+                    if (n.doubleValue() != expect) {
+                        synchronized(errors) {
+                            errors.add(new String("Bad parse result - expected:" + expect + " actual:" + n.doubleValue()));
+                        }
+                    }
+                } catch (Throwable t) {
+                    synchronized(errors) {
+                        errors.add(new String(t.getClass().getName() + " - " + t.getMessage()));
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt b/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
new file mode 100644
index 0000000..afbf7a4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
@@ -0,0 +1,121 @@
+######################################################################
+# Copyright (c) 2004, 2008 International Business Machines
+# Corporation and others.  All Rights Reserved.
+######################################################################
+# Author: Alan Liu
+# Created: March 15 2004
+# Since: ICU 3.0
+######################################################################
+
+ref= "#.#"
+
+rt:  "0.###"  1.0         "1"         
+
+# Basics
+fp:  "0.####" 0.10005     "0.1"        0.1
+fp:  -        0.10006     "0.1001"     0.1001
+pat: -        "#0.####"
+fp:  "#.####" 0.10005     "0.1"        0.1
+pat: -        "#0.####"
+
+rt:  "0"      1234        "1234"
+pat: -        "#0"
+
+# Significant digits                                                  
+fp:  "@@@"    1.234567    "1.23"       1.23
+fp:  -        1234567     "1230000"    1230000
+fp:  -        0.012345    "0.0123"     0.0123
+pat: -        -                                    
+fp:  "#,@@@"  1234567     "1,230,000"  1230000
+pat: -        "#,@@@"
+rt:  "@@@@"   0.0012      "0.001200"  
+fp:  -        0.99999     "1.000"      1
+pat: -        -
+rt:  "@###"   0.00123     "0.00123"   
+rt:  -        123000      "123000"    
+fp:  -        123456      "123500"     123500
+fp:  -        12.3456     "12.35"      12.35
+fp:  -        0.0123456   "0.01235"    0.01235
+pat: -        -
+fp:  "@,###"  27182       "27,180"     27180
+rt:  -        123000      "123,000"   
+fp:  -        0.99999     "1"          1
+rt:  -        0.9999      "0.9999"    
+pat: -        -
+rt:  "@##E0"  20000       "2E4"
+rt:  -        27000       "2.7E4"     
+rt:  -        27100       "2.71E4"
+fp:  -        27182       "2.72E4"     27200
+pat: -        -
+rt:  "@@@E0"  20000       "2.00E4"
+rt:  -        27000       "2.70E4"    
+rt:  -        27100       "2.71E4"
+fp:  -        27182       "2.72E4"     27200
+pat: -        -
+fp:  "#,@@##" 314156      "31,4200"    314200
+rt:  -        3           "3.0"       
+rt:  -        5000        "5000"      
+rt:  -        0.005       "0.0050"    
+pat: -        -
+fp:  "@@@@@@" 123456.7    "123457"     123457
+pat: -        -
+
+pat: "##,@@##" "#,@@##"
+pat: "##@@##"  "@@##"
+
+pat: "@@.@@"  err  # decimal sep. disallowed in sig. digits
+pat: "@#@"    err  # only one cluster of sig. digits
+pat: "@@0"    err  # either @ or 0, not both
+
+# NumberRegression/Test4140009
+rt:  ""       123.456     "123.456"
+rt:  ""       -123.456    "-123.456"
+
+# Currency
+fpc: "en_US"        1234.56/USD  "$1,234.56"    1234.56/USD
+fpc: -              1234.56/JPY  "¥1,235"  1235/JPY
+# ISO codes that overlap display names (QQQ vs. Q)
+fpc: -              123/QQQ      "QQQ123.00"    123/QQQ   # QQQ is fake
+fpc: -              123/GTQ      "Q123.00"      123/GTQ
+# ChoiceFormat-based display names
+fpc: -              1/INR        "₨1.00"      1/INR
+
+fpc: -              2/INR        "₨2.00"      2/INR
+# Display names with shared prefix (YDD vs. Y)
+fpc: -              100/YDD      "YDD100.00"    100/YDD
+fpc: -              100/CNY      "RMB100.00"      100/CNY
+
+# Lenient Tests
+
+loc= "en"
+p: -              "1,234.56" 1234.56
+p: -              "1'234.56" 1234.56
+p: -              "1 234.56" 1234.56
+p: -              "1٬234.56" 1234.56
+p: -              "1，234．56" 1234.56
+p: -              "1.234.56" 1.234
+p: -              "1、234。56" 1234.56
+
+loc= "fr"
+p: -              "1.234,56" 1234.56
+p: -              "1'234,56" 1234.56
+p: -              "1 234,56" 1234.56
+p: -              "1,234,56" 1.234
+p: -              "1。234、56" 1234.56
+
+loc= "ar"
+p: -              "1.234٫56" 1234.56
+p: -              "1'234،56" 1234.56
+p: -              "1٬234،56" 1234.56
+p: -              "1.234,56" 1234.56
+p: -              "1'234,56" 1234.56
+p: -              "1٬234,56" 1234.56
+
+strict= true
+loc= "en"
+p: -              "1、234。56" 1
+loc= "fr"
+p: -              "1。234、56" 1
+loc= "ar"
+p: -              "1'234،56" 1234
+p: -              "1٬234،56" 1234
diff --git a/src/com/ibm/icu/dev/test/format/NumberRegression.java b/src/com/ibm/icu/dev/test/format/NumberRegression.java
new file mode 100644
index 0000000..6eeb130
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberRegression.java
@@ -0,0 +1,1861 @@
+//##header J2SE15
+/*****************************************************************************************
+ *
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.NumberRegression
+ * Source File: java/text/format/NumberRegression.java
+ **/
+ 
+/**
+ * @test 1.49 01/05/21
+ * @bug 4052223 4059870 4061302 4062486 4066646 4068693 4070798 4071005 4071014
+ * 4071492 4071859 4074454 4074620 4075713 4083018 4086575 4087244 4087245
+ * 4087251 4087535 4088161 4088503 4090489 4090504 4092480 4092561 4095713
+ * 4098741 4099404 4101481 4106658 4106662 4106664 4108738 4110936 4122840
+ * 4125885 4134034 4134300 4140009 4141750 4145457 4147295 4147706 4162198
+ * 4162852 4167494 4170798 4176114 4179818 4185761 4212072 4212073 4216742
+ * 4217661 4243011 4243108 4330377 4233840
+ * @summary Regression tests for NumberFormat and associated classes
+ */
+
+package com.ibm.icu.dev.test.format;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+public class NumberRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new NumberRegression().run(args);
+    }
+
+    private static final char EURO = '\u20ac';
+
+    /**
+     * NumberFormat.equals comparing with null should always return false.
+     */
+    public void Test4075713(){
+
+        try {
+            MyNumberFormatTest tmp = new MyNumberFormatTest();
+            if (!tmp.equals(null))
+                logln("NumberFormat.equals passed");
+        } catch (NullPointerException e) {
+            errln("(new MyNumberFormatTest()).equals(null) throws unexpected exception");
+        }
+    }
+
+    /**
+     * NumberFormat.equals comparing two obj equal even the setGroupingUsed
+     * flag is different.
+     */
+    public void Test4074620() {
+
+        MyNumberFormatTest nf1 = new MyNumberFormatTest();
+        MyNumberFormatTest nf2 = new MyNumberFormatTest();
+
+        nf1.setGroupingUsed(false);
+        nf2.setGroupingUsed(true);
+
+        if (nf1.equals(nf2)) errln("Test for bug 4074620 failed");
+        else logln("Test for bug 4074620 passed.");
+        return;
+    }
+
+
+    /**
+     * DecimalFormat.format() incorrectly uses maxFractionDigits setting.
+     */
+
+    public void Test4088161 (){
+        DecimalFormat df = new DecimalFormat();
+        double d = 100;
+        df.setMinimumFractionDigits(0);
+        df.setMaximumFractionDigits(16);
+        StringBuffer sBuf1 = new StringBuffer("");
+        FieldPosition fp1 = new FieldPosition(0);
+        logln("d = " + d);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        logln(" format(d) = '" + df.format(d, sBuf1, fp1) + "'");
+        df.setMaximumFractionDigits(17);
+        StringBuffer sBuf2 = new StringBuffer("");
+        FieldPosition fp2 = new FieldPosition(0);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        df.format(d, sBuf2, fp2);
+        if (!sBuf2.toString().equals("100"))
+            errln(" format(d) = '" + sBuf2 + "'");
+    }
+    /**
+     * DecimalFormatSymbols should be cloned in the ctor DecimalFormat.
+     * DecimalFormat(String, DecimalFormatSymbols).
+     */
+    public void Test4087245 (){
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+        DecimalFormat df = new DecimalFormat("#,##0.0", symbols);
+        long n = 123;
+        StringBuffer buf1 = new StringBuffer();
+        StringBuffer buf2 = new StringBuffer();
+        logln("format(" + n + ") = " +
+        df.format(n, buf1, new FieldPosition(0)));
+        symbols.setDecimalSeparator('p'); // change value of field
+        logln("format(" + n + ") = " +
+        df.format(n, buf2, new FieldPosition(0)));
+        if (!buf1.toString().equals(buf2.toString()))
+            errln("Test for bug 4087245 failed");
+    }
+    /**
+     * DecimalFormat.format() incorrectly formats 0.0
+     */
+    public void Test4087535 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumIntegerDigits(0);
+
+        double n = 0;
+        String buffer = new String();
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+        n = 0.1;
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+    }
+
+    /**
+     * DecimalFormat.format fails when groupingSize is set to 0.
+     */
+    public void Test4088503 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setGroupingSize(0);
+        StringBuffer sBuf = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        try {
+            logln(df.format(123, sBuf, fp).toString());
+        } catch (Exception foo) {
+            errln("Test for bug 4088503 failed.");
+        }
+
+    }
+    /**
+     * NumberFormat.getCurrencyInstance is wrong.
+     */
+    public void Test4066646 () {
+        //float returnfloat = 0.0f; //The variable is never used
+        assignFloatValue(2.04f);
+        assignFloatValue(2.03f);
+        assignFloatValue(2.02f);
+        assignFloatValue(0.0f);
+    }
+
+    public float assignFloatValue(float returnfloat)
+    {
+        logln(" VALUE " + returnfloat);
+        NumberFormat nfcommon =  NumberFormat.getCurrencyInstance(Locale.US);
+        nfcommon.setGroupingUsed(false);
+
+        String stringValue = nfcommon.format(returnfloat).substring(1);
+        if (Float.valueOf(stringValue).floatValue() != returnfloat)
+            errln(" DISPLAYVALUE " + stringValue);
+        return returnfloat;
+    } // End Of assignFloatValue()
+
+    /**
+     * DecimalFormat throws exception when parsing "0"
+     */
+    public void Test4059870() {
+        DecimalFormat format = new DecimalFormat("00");
+        try {
+            logln(format.parse("0").toString());
+        } catch (Exception e) { errln("Test for bug 4059870 failed : " + e); }
+    }
+    /**
+     * DecimalFormatSymbol.equals should always return false when
+     * comparing with null.
+     */
+
+    public void Test4083018 (){
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+        try {
+            if (!dfs.equals(null))
+                logln("Test Passed!");
+        } catch (Exception foo) {
+            errln("Test for bug 4083018 failed => Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat does not round up correctly.
+     */
+    public void Test4071492 (){
+        double x = 0.00159999;
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        String out = nf.format(x);
+        logln("0.00159999 formats with 4 fractional digits to " + out);
+        String expected = "0.0016";
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+
+    /**
+     * A space as a group separator for localized pattern causes
+     * wrong format.  WorkAround : use non-breaking space.
+     */
+    public void Test4086575() {
+
+        NumberFormat nf = NumberFormat.getInstance(Locale.FRANCE);
+        logln("nf toPattern1: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern1: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        // No group separator
+        logln("...applyLocalizedPattern ###,00;(###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("###,00;(###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        logln("nf: " + nf.format(1234)); // 1234,00
+        logln("nf: " + nf.format(-1234)); // (1234,00)
+
+        // Space as group separator
+
+        logln("...applyLocalizedPattern # ###,00;(# ###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("#\u00a0###,00;(#\u00a0###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+        String buffer = nf.format(1234);
+        if (!buffer.equals("1\u00a0234,00"))
+            errln("nf : " + buffer); // Expect 1 234,00
+        buffer = nf.format(-1234);
+        if (!buffer.equals("(1\u00a0234,00)"))
+            errln("nf : " + buffer); // Expect (1 234,00)
+
+        // Erroneously prints:
+        // 1234,00 ,
+        // (1234,00 ,)
+
+    }
+    /**
+     * DecimalFormat.parse returns wrong value
+     */
+    public void Test4068693()
+    {
+        logln("----- Test Application -----");
+        //ParsePosition pos;
+        DecimalFormat df = new DecimalFormat();
+        Number d = df.parse("123.55456", new ParsePosition(0));
+        if (!d.toString().equals("123.55456")) {
+            errln("Result -> " + d.doubleValue());
+        }
+    }
+
+    /* bugs 4069754, 4067878
+     * null pointer thrown when accessing a deserialized DecimalFormat
+     * object.
+     */
+    public void Test4069754() throws Exception
+    {
+        //try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(baos);
+            myformat it = new myformat();
+            logln(it.Now());
+            oos.writeObject(it);
+            oos.flush();
+            baos.close();
+            logln("Save OK!");
+            byte [] bytes = baos.toByteArray();
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            myformat o = (myformat)ois.readObject();
+            ois.close();
+            it.Now();
+            logln("Load OK!");
+            if (!o._dateFormat.equals(it._dateFormat)) {
+                throw new Exception("The saved and loaded object are not equals!");
+            }
+            logln("Compare OK!");
+        //} catch (Exception foo) {
+            //errln("Test for bug 4069754 or 4057878 failed => Exception: " + foo.getMessage());
+        //}
+    }
+
+    /**
+     * DecimalFormat.applyPattern(String) allows illegal patterns
+     */
+    public void Test4087251 (){
+        DecimalFormat df = new DecimalFormat();
+        try {
+            df.applyPattern("#.#.#");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#.#.#\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Caught Illegal Argument Error !");
+        }
+        // Second test; added 5/11/98 when reported to fail on 1.2b3
+        try {
+            df.applyPattern("#0.0#0#0");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#0.0#0#0\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Ok - IllegalArgumentException for #0.0#0#0");
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090489 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumFractionDigits(10);
+        df.setGroupingUsed(false);
+        double d = 1.000000000000001E7;
+        java.math.BigDecimal bd = new java.math.BigDecimal(d);
+        StringBuffer sb = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        logln("d = " + d);
+        logln("BigDecimal.toString():  " + bd.toString());
+        df.format(d, sb, fp);
+        if (!sb.toString().equals("10000000.0000000100")) {
+            errln("DecimalFormat.format(): " + sb.toString());
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090504 ()
+    {
+        double d = 1;
+        logln("d = " + d);
+        DecimalFormat df = new DecimalFormat();
+        StringBuffer sb;
+        FieldPosition fp;
+        try {
+            for (int i = 17; i <= 20; i++) {
+                df.setMaximumFractionDigits(i);
+                sb = new StringBuffer("");
+                fp = new FieldPosition(0);
+                logln("  getMaximumFractionDigits() = " + i);
+                logln("  formated: " + df.format(d, sb, fp));
+            }
+        } catch (Exception foo) {
+            errln("Bug 4090504 regression test failed. Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat.parse(String str, ParsePosition pp) loses precision
+     */
+    public void Test4095713 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String str = "0.1234";
+        Double d1 = new Double(str);
+        Number d2 = df.parse(str, new ParsePosition(0));
+        logln(d1.toString());
+        if (d2.doubleValue() != d1.doubleValue())
+            errln("Bug 4095713 test failed, new double value : " + d2.doubleValue());
+    }
+
+    /**
+     * DecimalFormat.parse() fails when multiplier is not set to 1
+     */
+    public void Test4092561 ()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        String str = Long.toString(Long.MIN_VALUE);
+        logln("Long.MIN_VALUE : " + df.parse(str, new ParsePosition(0)).toString());
+        df.setMultiplier(100);
+        Number num = df.parse(str, new ParsePosition(0));
+        if (num.doubleValue() != -9.223372036854776E16) {
+            errln("Bug 4092561 test failed when multiplier is set to not 1.");
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat: Negative format ignored.
+     */
+    public void Test4092480 ()
+    {
+        DecimalFormat dfFoo = new DecimalFormat("000");
+
+        try {
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+            dfFoo.applyPattern("000;-000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("000;-0000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+        } catch (Exception foo) {
+            errln("Message " + foo.getMessage());
+        }
+    }
+    /**
+     * NumberFormat.getCurrencyInstance() produces format that uses
+     * decimal separator instead of monetary decimal separator.
+     *
+     * Rewrote this test not to depend on the actual pattern.  Pattern should
+     * never contain the monetary separator!  Decimal separator in pattern is
+     * interpreted as monetary separator if currency symbol is seen!
+     */
+    public void Test4087244 () {
+        Locale de = new Locale("pt", "PT");
+        DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance(de);
+        DecimalFormatSymbols sym = df.getDecimalFormatSymbols();
+        sym.setMonetaryDecimalSeparator('$');
+    df.setDecimalFormatSymbols(sym);
+        char decSep = sym.getDecimalSeparator();
+        char monSep = sym.getMonetaryDecimalSeparator();
+        //char zero = sym.getZeroDigit(); //The variable is never used
+        if (decSep == monSep) {
+            errln("ERROR in test: want decimal sep != monetary sep");
+        } else {
+            df.setMinimumIntegerDigits(1);
+            df.setMinimumFractionDigits(2);
+            String str = df.format(1.23);
+            String monStr = "1" + monSep + "23";
+            String decStr = "1" + decSep + "23";
+            if (str.indexOf(monStr) >= 0 && str.indexOf(decStr) < 0) {
+                logln("OK: 1.23 -> \"" + str + "\" contains \"" +
+                      monStr + "\" and not \"" + decStr + '"');
+            } else {
+                errln("FAIL: 1.23 -> \"" + str + "\", should contain \"" +
+                      monStr +
+                      "\" and not \"" + decStr + '"');
+            }
+        }
+    }
+    /**
+     * Number format data rounding errors for locale FR
+     */
+    public void Test4070798 () {
+        NumberFormat formatter;
+        String tempString;
+        /* User error :
+        String expectedDefault = "-5\u00a0789,987";
+        String expectedCurrency = "5\u00a0789,98\u00a0F";
+        String expectedPercent = "-578\u00a0998%";
+        */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99\u00a0" + EURO; // euro
+        String expectedPercent = "-578\u00a0999\u00a0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4070798 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+        tempString = formatter.format( 5789.9876 );
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4070798 currency test assed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getPercentInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4070798 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+    /**
+     * Data rounding errors for French (Canada) locale
+     */
+    public void Test4071005 () {
+
+        NumberFormat formatter;
+        String tempString;
+    /* user error :
+        String expectedDefault = "-5 789,987";
+        String expectedCurrency = "5 789,98\u00a0$";
+        String expectedPercent = "-578 998%";
+    */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99\u00a0$";
+        String expectedPercent = "-578\u00a0999\u00A0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071005 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071005 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+        formatter = NumberFormat.getPercentInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071005 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+
+    /**
+     * Data rounding errors for German (Germany) locale
+     */
+    public void Test4071014 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "5.789,98\u00a0DM";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "5.789,99\u00a0" + EURO;
+        String expectedPercent = "-578.999\u00a0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071014 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071014 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071014 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /**
+     * Data rounding errors for Italian locale number formats
+     * Note- with the Euro, there is no need for currency rounding anymore
+     */
+    public void Test4071859 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "-L.\u00a05.789,98";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "-" + EURO + "\u00a05.789,99";
+        String expectedPercent = "-578.999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071859 default test passed.");
+        } else {
+            errln("a) Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.ITALY);
+        tempString = formatter.format( -5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071859 currency test passed.");
+        } else {
+            errln("b) Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071859 percentage test passed.");
+        } else {
+            errln("c) Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /* bug 4071859
+     * Test rounding for nearest even.
+     */
+    public void Test4093610()
+    {
+        DecimalFormat df = new DecimalFormat("#0.#");
+        roundingTest(df, 12.35, "12.4");
+        roundingTest(df, 12.45, "12.4");
+        roundingTest(df, 12.452,"12.5");
+        roundingTest(df, 12.55, "12.6");
+        roundingTest(df, 12.65, "12.6");
+        roundingTest(df, 12.652,"12.7");
+        roundingTest(df, 12.75, "12.8");
+        roundingTest(df, 12.752,"12.8");
+        roundingTest(df, 12.85, "12.8");
+        roundingTest(df, 12.852,"12.9");
+        roundingTest(df, 12.95, "13");
+        roundingTest(df, 12.952,"13");
+
+    }
+    void roundingTest(DecimalFormat df, double x, String expected)
+    {
+        String out = df.format(x);
+        logln("" + x + " formats with 1 fractional digits to " + out);
+        if (!out.equals(expected)) errln("FAIL: Expected " + expected);
+    }
+    /**
+     * Tests the setMaximumFractionDigits limit.
+     */
+    public void Test4098741()
+    {
+        try {
+            NumberFormat fmt = NumberFormat.getPercentInstance();
+            fmt.setMaximumFractionDigits(20);
+            logln(fmt.format(.001));
+        } catch (Exception foo) {
+            warnln("Bug 4098471 failed with exception thrown : " + foo.getMessage());
+        }
+    }
+    /**
+     * Tests illegal pattern exception.
+     * Fix comment : HShih A31 Part1 will not be fixed and javadoc needs to be updated.
+     * Part2 has been fixed.
+     */
+    public void Test4074454()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00;-#.#");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            logln("Inconsistent negative pattern is fine.");
+            DecimalFormat newFmt = new DecimalFormat("#,#00.00 p''ieces;-#,#00.00 p''ieces");
+            String tempString = newFmt.format(3456.78);
+            if (!tempString.equals("3,456.78 p'ieces"))
+                errln("Failed!  3456.78 p'ieces expected, but got : " + tempString);
+        } catch (Exception foo) {
+            warnln("An exception was thrown for any inconsistent negative pattern.");
+        }
+    }
+    /**
+     * Tests all different comments.
+     * Response to some comments :
+     * [1] DecimalFormat.parse API documentation is more than just one line.
+     * This is not a reproducable doc error in 116 source code.
+     * [2] See updated javadoc.
+     * [3] Fixed.
+     * [4] NumberFormat.parse(String, ParsePosition) : If parsing fails,
+     * a null object will be returned.  The unchanged parse position also
+     * reflects an error.
+     * NumberFormat.parse(String) : If parsing fails, an ParseException
+     * will be thrown.
+     * See updated javadoc for more details.
+     * [5] See updated javadoc.
+     * [6] See updated javadoc.
+     * [7] This is a correct behavior if the DateFormat object is linient.
+     * Otherwise, an IllegalArgumentException will be thrown when formatting
+     * "January 35".  See GregorianCalendar class javadoc for more details.
+     */
+    public void Test4099404()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("000.0#0");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"000.0#0\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"000.0#0\" passed");
+        }
+        try {
+            DecimalFormat fmt = new DecimalFormat("0#0.000");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"0#0.000\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"0#0.000\" passed");
+        }
+    }
+    /**
+     * DecimalFormat.applyPattern doesn't set minimum integer digits
+     */
+    public void Test4101481()
+    {
+        DecimalFormat sdf = new DecimalFormat("#,##0");
+        if (sdf.getMinimumIntegerDigits() != 1)
+            errln("Minimum integer digits : " + sdf.getMinimumIntegerDigits());
+    }
+    /**
+     * Tests ParsePosition.setErrorPosition() and ParsePosition.getErrorPosition().
+     */
+    public void Test4052223()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00");
+            Number num = fmt.parse("abc3");
+            errln("Bug 4052223 failed : can't parse string \"a\".  Got " + num);
+        } catch (ParseException foo) {
+            logln("Caught expected ParseException : " + foo.getMessage() + " at index : " + foo.getErrorOffset());
+        }
+    }
+    /**
+     * API tests for API addition request A9.
+     */
+    public void Test4061302()
+    {
+        DecimalFormatSymbols fmt = new DecimalFormatSymbols();
+        String currency = fmt.getCurrencySymbol();
+        String intlCurrency = fmt.getInternationalCurrencySymbol();
+        char monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (currency.equals("") ||
+            intlCurrency.equals("") ||
+            monDecSeparator == 0) {
+            errln("getCurrencySymbols failed, got empty string.");
+        }
+        logln("Before set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+        fmt.setCurrencySymbol("XYZ");
+        fmt.setInternationalCurrencySymbol("ABC");
+        fmt.setMonetaryDecimalSeparator('*');
+        currency = fmt.getCurrencySymbol();
+        intlCurrency = fmt.getInternationalCurrencySymbol();
+        monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (!currency.equals("XYZ") ||
+            !intlCurrency.equals("ABC") ||
+            monDecSeparator != '*') {
+            errln("setCurrencySymbols failed.");
+        }
+        logln("After set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+    }
+    /**
+     * API tests for API addition request A23. FieldPosition.getBeginIndex and
+     * FieldPosition.getEndIndex.
+     */
+    public void Test4062486()
+    {
+        DecimalFormat fmt = new DecimalFormat("#,##0.00");
+        StringBuffer formatted = new StringBuffer();
+        FieldPosition field = new FieldPosition(0);
+        Double num = new Double(1234.5);
+        fmt.format(num, formatted, field);
+        if (field.getBeginIndex() != 0 && field.getEndIndex() != 5)
+            errln("Format 1234.5 failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+        field.setBeginIndex(7);
+        field.setEndIndex(4);
+        if (field.getBeginIndex() != 7 && field.getEndIndex() != 4)
+            errln("Set begin/end field indexes failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+    }
+
+    /**
+     * DecimalFormat.parse incorrectly works with a group separator.
+     */
+    public void Test4108738()
+    {
+
+        DecimalFormat df = new DecimalFormat("#,##0.###", new
+        DecimalFormatSymbols(java.util.Locale.US));
+        String text = "1.222,111";
+        Number num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+        text = "1.222x111";
+        num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+    }
+
+    /**
+     * DecimalFormat.format() incorrectly formats negative doubles.
+     */
+    public void Test4106658()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat(); // Corrected; see 4147706
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer buffer = new StringBuffer();
+        logln("pattern: \"" + df.toPattern() + "\"");
+        df.format(d1, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d1 + "      is formatted as " + buffer);
+        }
+        buffer.setLength(0);
+        df.format(d2, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d2 + "      is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.parse returns 0 if string parameter is incorrect.
+     */
+    public void Test4106662()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String text = "x";
+        ParsePosition pos1 = new ParsePosition(0), pos2 = new ParsePosition(0);
+
+        logln("pattern: \"" + df.toPattern() + "\"");
+        Number num = df.parse(text, pos1);
+        if (num != null) {
+            errln("Test Failed: \"" + text + "\" is parsed as " + num);
+        }
+        df = null;
+        df = new DecimalFormat("$###.00");
+        num = df.parse("$", pos2);
+        if (num != null){
+            errln("Test Failed: \"$\" is parsed as " + num);
+        }
+    }
+
+    /**
+     * NumberFormat.parse doesn't return null
+     */
+    public void Test4114639()
+    {
+        NumberFormat format = NumberFormat.getInstance();
+        String text = "time 10:x";
+        ParsePosition pos = new ParsePosition(8);
+        Number result = format.parse(text, pos);
+        if (result != null) errln("Should return null but got : " + result); // Should be null; it isn't
+    }
+
+    /**
+     * DecimalFormat.format(long n) fails if n * multiplier > MAX_LONG.
+     */
+    public void Test4106664()
+    {
+        DecimalFormat df = new DecimalFormat();
+        long n = 1234567890123456L;
+        int m = 12345678;
+        BigInteger bigN = BigInteger.valueOf(n);
+        bigN = bigN.multiply(BigInteger.valueOf(m));
+        df.setMultiplier(m);
+        df.setGroupingUsed(false);
+        logln("formated: " +
+            df.format(n, new StringBuffer(), new FieldPosition(0)));
+        logln("expected: " + bigN.toString());
+    }
+    /**
+     * DecimalFormat.format incorrectly formats -0.0.
+     */
+    public void Test4106667()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setPositivePrefix("+");
+        double d = -0.0;
+        logln("pattern: \"" + df.toPattern() + "\"");
+        StringBuffer buffer = new StringBuffer();
+        df.format(d, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d + "  is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.setMaximumIntegerDigits() works incorrectly.
+     */
+    public void Test4110936()
+    {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(128);
+        logln("setMaximumIntegerDigits(128)");
+        if (nf.getMaximumIntegerDigits() != 128)
+            errln("getMaximumIntegerDigits() returns " +
+                nf.getMaximumIntegerDigits());
+    }
+    
+    /**
+     * Locale data should use generic currency symbol
+     *
+     * 1) Make sure that all currency formats use the generic currency symbol.
+     * 2) Make sure we get the same results using the generic symbol or a
+     *    hard-coded one.
+     */
+    public void Test4122840()
+    {
+        Locale[] locales = NumberFormat.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i++) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locales[i]);
+
+            //
+            // Get the currency pattern for this locale.  We have to fish it
+            // out of the ResourceBundle directly, since DecimalFormat.toPattern
+            // will return the localized symbol, not \00a4
+            //
+            UResourceBundle numPatterns = rb.get("NumberPatterns");
+            String pattern = numPatterns.getString(1);
+            
+            if (pattern.indexOf('\u00A4') == -1 ) { // 'x' not "x" -- workaround bug in IBM JDK 1.4.1
+                errln("Currency format for " + locales[i] +
+                        " does not contain generic currency symbol:" +
+                        pattern );
+            }
+            
+            // Create a DecimalFormat using the pattern we got and format a number
+            DecimalFormatSymbols symbols = new DecimalFormatSymbols(locales[i]);
+            DecimalFormat fmt1 = new DecimalFormat(pattern, symbols);
+            
+            String result1 = fmt1.format(1.111);
+            
+            //
+            // Now substitute in the locale's currency symbol and create another
+            // pattern.  Replace the decimal separator with the monetary separator.
+            //
+            //char decSep = symbols.getDecimalSeparator(); //The variable is never used
+            char monSep = symbols.getMonetaryDecimalSeparator();
+            StringBuffer buf = new StringBuffer(pattern);
+            for (int j = 0; j < buf.length(); j++) {
+                if (buf.charAt(j) == '\u00a4') {
+                    String cur = "'" + symbols.getCurrencySymbol() + "'";
+                    buf.replace(j, j+1, cur); 
+                    j += cur.length() - 1;
+                }
+            }
+            symbols.setDecimalSeparator(monSep);
+            DecimalFormat fmt2 = new DecimalFormat(buf.toString(), symbols);
+            
+            String result2 = fmt2.format(1.111);
+            
+            // NOTE: en_IN is a special case (ChoiceFormat currency display name)
+            if (!result1.equals(result2) &&
+                !locales[i].toString().equals("en_IN")) {
+                errln("Results for " + locales[i] + " differ: " +
+                      result1 + " vs " + result2);
+            }
+        }
+    }
+     
+    /**
+     * DecimalFormat.format() delivers wrong string.
+     */
+    public void Test4125885()
+    {
+        double rate = 12.34;
+        DecimalFormat formatDec = new DecimalFormat ("000.00");
+        logln("toPattern: " + formatDec.toPattern());
+        String rateString= formatDec.format(rate);
+        if (!rateString.equals("012.34"))
+            errln("result : " + rateString + " expected : 012.34");
+        rate = 0.1234;
+        formatDec = null;
+        formatDec = new DecimalFormat ("+000.00%;-000.00%");
+        logln("toPattern: " + formatDec.toPattern());
+        rateString= formatDec.format(rate);
+        if (!rateString.equals("+012.34%"))
+            errln("result : " + rateString + " expected : +012.34%");
+    }
+
+    /**
+     **
+     * DecimalFormat produces extra zeros when formatting numbers.
+     */
+    public void Test4134034() {
+        DecimalFormat nf = new DecimalFormat("##,###,###.00");
+        
+        String f = nf.format(9.02);
+        if (f.equals("9.02")) logln(f + " ok"); else errln("9.02 -> " + f + "; want 9.02");
+
+        f = nf.format(0);
+        if (f.equals(".00")) logln(f + " ok"); else errln("0 -> " + f + "; want .00");
+    }
+
+    /**
+     * CANNOT REPRODUCE - This bug could not be reproduced.  It may be
+     * a duplicate of 4134034.
+     *
+     * JDK 1.1.6 Bug, did NOT occur in 1.1.5
+     * Possibly related to bug 4125885.
+     * 
+     * This class demonstrates a regression in version 1.1.6
+     * of DecimalFormat class.
+     * 
+     * 1.1.6 Results
+     * Value 1.2 Format #.00 Result '01.20' !!!wrong
+     * Value 1.2 Format 0.00 Result '001.20' !!!wrong
+     * Value 1.2 Format 00.00 Result '0001.20' !!!wrong
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '001.20' !!!wrong
+     * 
+     * 1.1.5 Results
+     * Value 1.2 Format #.00 Result '1.20'
+     * Value 1.2 Format 0.00 Result '1.20'
+     * Value 1.2 Format 00.00 Result '01.20'
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '1.20'
+     */
+    public void Test4134300() {
+        String[] DATA = {
+         // Pattern      Expected string
+            "#.00",      "1.20",
+            "0.00",      "1.20",
+            "00.00",     "01.20",
+            "#0.0#",     "1.2",
+            "#0.00",     "1.20",
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            String result = new DecimalFormat(DATA[i]).format(1.2);
+            if (!result.equals(DATA[i+1])) {
+                errln("Fail: 1.2 x " + DATA[i] + " = " + result +
+                      "; want " + DATA[i+1]);
+            }
+            else {
+                logln("Ok: 1.2 x " + DATA[i] + " = " + result);
+            }
+        }
+    }
+
+    /**
+     * Empty pattern produces double negative prefix.
+     */
+    public void Test4140009() {
+        final double IN[]  = {  123.456,   -123.456  };
+        final String OUT[] = { "123.456", "-123.456" };
+        for (int i=0; i<2; ++i) {
+            DecimalFormat f = null;
+            switch (i) {
+            case 0:
+                f = new DecimalFormat("",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                break;
+            case 1:
+                f = new DecimalFormat("#.#",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                f.applyPattern("");
+                break;
+            }
+            for (int j=0; j<2; ++j) {
+                assertEquals("<empty pat " + i + ">.format(" + IN[j] + ")",
+                             OUT[j], f.format(IN[j]));
+            }
+        }
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * BigDecimal numbers get their fractions truncated by NumberFormat.
+     */
+    public void Test4141750() {
+        try {
+            String str = "12345.67";
+            java.math.BigDecimal bd = new java.math.BigDecimal(str);
+            String sd = NumberFormat.getInstance(Locale.US).format(bd);
+            if (!sd.endsWith("67")) errln("Fail: " + str + " x format -> " + sd);
+        }
+        catch (Exception e) {
+            warnln(e.toString());
+            //e.printStackTrace();
+        }
+    }
+//#endif
+
+    /**
+     * DecimalFormat toPattern() doesn't quote special characters or handle
+     * single quotes.
+     */
+    public void Test4145457() {
+        try {
+            DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance();
+            DecimalFormatSymbols sym = nf.getDecimalFormatSymbols();
+            sym.setDecimalSeparator('\'');
+            nf.setDecimalFormatSymbols(sym);
+            double pi = 3.14159;
+
+            String[] PATS = { "#.00 'num''ber'", "''#.00''" };
+
+            for (int i=0; i<PATS.length; ++i) {
+                nf.applyPattern(PATS[i]);
+                String out = nf.format(pi);
+                String pat = nf.toPattern();
+                double val = nf.parse(out).doubleValue();
+            
+                nf.applyPattern(pat);
+                String out2 = nf.format(pi);
+                String pat2 = nf.toPattern();
+                double val2 = nf.parse(out2).doubleValue();
+            
+                if (!pat.equals(pat2))
+                    errln("Fail with \"" + PATS[i] + "\": Patterns should concur, \"" +
+                          pat + "\" vs. \"" + pat2 + "\"");
+                else
+                    logln("Ok \"" + PATS[i] + "\" toPattern() -> \"" + pat + '"');
+
+                if (val == val2 && out.equals(out2)) {
+                    logln("Ok " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+                else {
+                    errln("Fail " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+            }
+        }
+        catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * DecimalFormat.applyPattern() sets minimum integer digits incorrectly.
+     * CANNOT REPRODUCE
+     * This bug is a duplicate of 4139344, which is a duplicate of 4134300
+     */
+    public void Test4147295() {
+        DecimalFormat sdf = new DecimalFormat();
+        String pattern = "#,###";
+        logln("Applying pattern \"" + pattern + "\"");
+        sdf.applyPattern(pattern);
+        int minIntDig = sdf.getMinimumIntegerDigits();
+        if (minIntDig != 0) {
+            errln("Test failed");
+            errln(" Minimum integer digits : " + minIntDig);
+            errln(" new pattern: " + sdf.toPattern());
+        } else {
+            logln("Test passed");
+            logln(" Minimum integer digits : " + minIntDig);
+        }
+    }
+
+    /**
+     * DecimalFormat formats -0.0 as +0.0
+     * See also older related bug 4106658, 4106667
+     */
+    public void Test4147706() {
+        DecimalFormat df = new DecimalFormat("#,##0.0##");
+        df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ENGLISH));
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer f1 = df.format(d1, new StringBuffer(), new FieldPosition(0));
+        StringBuffer f2 = df.format(d2, new StringBuffer(), new FieldPosition(0));
+        if (!f1.toString().equals("-0.0")) {
+            errln(d1 + " x \"" + df.toPattern() + "\" is formatted as \"" + f1 + '"');
+        }
+        if (!f2.toString().equals("-0.0")) {
+            errln(d2 + " x \"" + df.toPattern() + "\" is formatted as \"" + f2 + '"');
+        }
+    }
+
+    /**
+     * NumberFormat cannot format Double.MAX_VALUE
+     */
+    public void Test4162198() {
+        double dbl = Double.MAX_VALUE;
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMaximumFractionDigits(Integer.MAX_VALUE);
+        f.setMaximumIntegerDigits(Integer.MAX_VALUE);
+        String s = f.format(dbl);
+        logln("The number " + dbl + " formatted to " + s);
+        Number n = null;
+        try {
+            n = f.parse(s);
+        } catch (java.text.ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }
+        logln("The string " + s + " parsed as " + n);
+        if (n.doubleValue() != dbl) {
+            errln("Round trip failure");
+        }
+    }
+
+    /**
+     * NumberFormat does not parse negative zero.
+     */
+    public void Test4162852() throws ParseException {
+        for (int i=0; i<2; ++i) {
+            NumberFormat f = (i == 0) ? NumberFormat.getInstance()
+                : NumberFormat.getPercentInstance();
+            double d = -0.0;
+            String s = f.format(d);
+            double e = f.parse(s).doubleValue();
+            logln("" +
+                  d + " -> " +
+                  '"' + s + '"' + " -> " +
+              e);
+            if (e != 0.0 || 1.0/e > 0.0) {
+                logln("Failed to parse negative zero");
+            }
+        }
+    }
+
+    /**
+     * NumberFormat truncates data
+     */
+    public void Test4167494() throws Exception {
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        
+        double a = Double.MAX_VALUE;
+        String s = fmt.format(a);
+        double b = fmt.parse(s).doubleValue();
+        boolean match = a == b;
+        if (match) {
+            logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+        } else {
+            errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+        }
+
+        // We don't test Double.MIN_VALUE because the locale data for the US
+        // currently doesn't specify enough digits to display Double.MIN_VALUE.
+        // This is correct for now; however, we leave this here as a reminder
+        // in case we want to address this later.
+        if (false) {
+            a = Double.MIN_VALUE;
+            s = fmt.format(a);
+            b = fmt.parse(s).doubleValue();
+            match = a == b;
+            if (match) {
+                logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+            } else {
+                errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails when ParseIntegerOnly set to true
+     */
+    public void Test4170798() {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setParseIntegerOnly(true);
+        Number n = df.parse("-0.0", new ParsePosition(0));
+        if (!(n instanceof Double)
+            || n.intValue() != 0) {
+            errln("FAIL: parse(\"-0.0\") returns " +
+                  n + " (" + n.getClass().getName() + ')');
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * toPattern only puts the first grouping separator in.
+     */
+    public void Test4176114() {
+        String[] DATA = {
+            "00", "#00",
+            "000", "#000", // No grouping
+            "#000", "#000", // No grouping
+            "#,##0", "#,##0",
+            "#,000", "#,000",
+            "0,000", "#0,000",
+            "00,000", "#00,000",
+            "000,000", "#,000,000",
+            "0,000,000,000,000.0000", "#0,000,000,000,000.0000", // Reported
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            DecimalFormat df = new DecimalFormat(DATA[i]);
+            String s = df.toPattern();
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + " -> " + s + ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat is incorrectly rounding numbers like 1.2501 to 1.2
+     */
+    public void Test4179818() {
+        String DATA[] = {
+            // Input  Pattern  Expected output
+            "1.2511", "#.#",   "1.3",
+            "1.2501", "#.#",   "1.3",
+            "0.9999", "#",     "1",
+        };
+        DecimalFormat fmt = new DecimalFormat("#",
+                new DecimalFormatSymbols(Locale.US));
+        for (int i=0; i<DATA.length; i+=3) {
+            double in = Double.valueOf(DATA[i]).doubleValue();
+            String pat = DATA[i+1];
+            String exp = DATA[i+2];
+            fmt.applyPattern(pat);
+            String out = fmt.format(in);
+            if (out.equals(exp)) {
+                logln("Ok: " + in + " x " + pat + " = " + out);
+            } else {
+                errln("FAIL: " + in + " x  " + pat + " = " + out +
+                      ", expected " + exp);
+            }
+        }
+    }
+
+    public void Test4185761() throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(baos);
+        
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+
+    // Set special values we are going to search for in the output byte stream
+    // These are all legal values.
+        nf.setMinimumIntegerDigits(0x111); // Keep under 309
+        nf.setMaximumIntegerDigits(0x112); // Keep under 309
+        nf.setMinimumFractionDigits(0x113); // Keep under 340
+        nf.setMaximumFractionDigits(0x114); // Keep under 340
+        
+        oos.writeObject(nf);
+        oos.flush();
+        baos.close();
+        
+        byte[] bytes = baos.toByteArray();
+
+    // Scan for locations of min/max int/fract values in the byte array.
+    // At the moment (ICU4J 2.1), there is only one instance of each target pair
+    // in the byte stream, so assume first match is it.  Note this is not entirely
+    // failsafe, and needs to be checked if we change the package or structure of
+    // this class.
+    // Current positions are 890, 880, 886, 876
+        int[] offsets = new int[4];
+        for (int i = 0; i < bytes.length - 1; ++i) {
+            if (bytes[i] == 0x01) { // high byte
+                for (int j = 0; j < offsets.length; ++j) {
+                    if ((offsets[j] == 0) && (bytes[i+1] == (0x11 + j))) { // low byte
+                        offsets[j] = i;
+                        break;
+                    }
+                }
+            }
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            Object o = ois.readObject();
+            ois.close();
+            
+            if (!nf.equals(o)) {
+                errln("Fail: DateFormat serialization/equality bug");
+            } else {
+                logln("DateFormat serialization/equality is OKAY.");
+            }
+        }
+
+    // Change the values in the byte stream so that min > max.
+    // Numberformat should catch this and throw an exception.
+        for (int i = 0; i < offsets.length; ++i) {
+            bytes[offsets[i]] = (byte)(4 - i);
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                logln("format: " + format.format(1234.56)); //fix "The variable is never used"
+                errln("FAIL: Deserialized bogus NumberFormat with minXDigits > maxXDigits");
+            } catch (InvalidObjectException e) {
+                logln("Ok: " + e.getMessage());
+            }
+        }
+
+    // Set values so they are too high, but min <= max
+    // Format should pass the min <= max test, and DecimalFormat should reset to current maximum
+    // (for compatibility with versions streamed out before the maximums were imposed).
+        for (int i = 0; i < offsets.length; ++i) {
+            bytes[offsets[i]] = 4;
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            NumberFormat format = (NumberFormat) ois.readObject();
+            //For compatibility with previous version
+            if ((format.getMaximumIntegerDigits() != 309) 
+                || format.getMaximumFractionDigits() != 340) {
+                errln("FAIL: Deserialized bogus NumberFormat with values out of range," +
+                      " intMin: " + format.getMinimumIntegerDigits() +
+                      " intMax: " + format.getMaximumIntegerDigits() +
+                      " fracMin: " + format.getMinimumFractionDigits() +
+                      " fracMax: " + format.getMaximumFractionDigits());
+            } else {
+                logln("Ok: Digit count out of range");
+            }
+        }
+    }
+
+
+    /**
+     * Some DecimalFormatSymbols changes are not picked up by DecimalFormat.
+     * This includes the minus sign, currency symbol, international currency
+     * symbol, percent, and permille.  This is filed as bugs 4212072 and
+     * 4212073.
+     */
+    public void Test4212072() throws IOException, ClassNotFoundException {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", sym);
+
+        sym.setMinusSign('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(-1).equals("^1")) {
+            errln("FAIL: -1 x (minus=^) -> " + fmt.format(-1) +
+                  ", exp ^1");
+        }
+        if (!fmt.getNegativePrefix().equals("^")) {
+            errln("FAIL: (minus=^).getNegativePrefix -> " +
+                  fmt.getNegativePrefix() + ", exp ^");
+        }
+        sym.setMinusSign('-');
+
+        fmt.applyPattern("#%");
+        sym.setPercent('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("25^")) {
+            errln("FAIL: 0.25 x (percent=^) -> " + fmt.format(0.25) +
+                  ", exp 25^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (percent=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPercent('%');
+        
+        fmt.applyPattern("#\u2030");
+        sym.setPerMill('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("250^")) {
+            errln("FAIL: 0.25 x (permill=^) -> " + fmt.format(0.25) +
+                  ", exp 250^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (permill=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPerMill('\u2030');
+
+        fmt.applyPattern("\u00A4#.00");
+        sym.setCurrencySymbol("usd");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("usd12.50")) {
+            errln("FAIL: 12.5 x (currency=usd) -> " + fmt.format(12.5) +
+                  ", exp usd12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("usd")) {
+            errln("FAIL: (currency=usd).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp usd");
+        }
+        sym.setCurrencySymbol("$");
+
+        fmt.applyPattern("\u00A4\u00A4#.00");
+        sym.setInternationalCurrencySymbol("DOL");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("DOL12.50")) {
+            errln("FAIL: 12.5 x (intlcurrency=DOL) -> " + fmt.format(12.5) +
+                  ", exp DOL12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("DOL")) {
+            errln("FAIL: (intlcurrency=DOL).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp DOL");
+        }
+        sym.setInternationalCurrencySymbol("USD");
+
+        if (VersionInfo.ICU_VERSION == VersionInfo.getInstance(2,2)) {
+            // bug in 2.2 that fails this test
+            // to be fixed in the later versions
+            System.out.println("\n        Test skipped for release 2.2");
+            return;
+        }
+        
+        // Since the pattern logic has changed, make sure that patterns round
+        // trip properly.  Test stream in/out integrity too.
+        Locale[] avail = NumberFormat.getAvailableLocales();
+        for (int i=0; i<avail.length; ++i) {
+            for (int j=0; j<3; ++j) {
+                NumberFormat nf;
+                switch (j) {
+                case 0:
+                    nf = NumberFormat.getInstance(avail[i]);
+                    break;
+                case 1:
+                    nf = NumberFormat.getCurrencyInstance(avail[i]);
+                    break;
+                default:
+                    nf = NumberFormat.getPercentInstance(avail[i]);
+                    break;
+                }
+                DecimalFormat df = (DecimalFormat) nf;
+                
+                // Test toPattern/applyPattern round trip
+                String pat = df.toPattern();
+                DecimalFormatSymbols symb = new DecimalFormatSymbols(avail[i]);
+                DecimalFormat f2 = new DecimalFormat(pat, symb);
+                if (!df.equals(f2)) {
+                    errln("FAIL: " + avail[i] + " #" + j + " -> \"" + pat +
+                          "\" -> \"" + f2.toPattern() + '"');
+                }
+
+                // Test toLocalizedPattern/applyLocalizedPattern round trip
+                pat = df.toLocalizedPattern();
+                try{
+                    f2.applyLocalizedPattern(pat);
+                    
+                    String s1 = f2.format(123456);
+                    String s2 = df.format(123456);
+                    if(!s1.equals(s2)){
+                        errln("FAIL: " + avail[i] + " #" + j + " -> localized \"" + s2 +
+                                "\" -> \"" + s2 + '"'+ " in locale "+df.getLocale(ULocale.ACTUAL_LOCALE));
+  
+                    }
+                    if (!df.equals(f2)) {
+                        errln("FAIL: " + avail[i] + " #" + j + " -> localized \"" + pat +
+                              "\" -> \"" + f2.toLocalizedPattern() + '"'+ " in locale "+df.getLocale(ULocale.ACTUAL_LOCALE));
+                        errln("s1: "+s1+" s2: "+s2);
+                    }
+                   
+                }catch(IllegalArgumentException ex){
+                    errln(ex.getMessage()+" for locale "+ df.getLocale(ULocale.ACTUAL_LOCALE));
+                }
+                
+
+                // Test writeObject/readObject round trip
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(df);
+                oos.flush();
+                baos.close();
+                byte[] bytes = baos.toByteArray();
+                ObjectInputStream ois =
+                    new ObjectInputStream(new ByteArrayInputStream(bytes));
+                f2 = (DecimalFormat) ois.readObject();
+                if (!df.equals(f2)) {
+                    errln("FAIL: Stream in/out " + avail[i] + " -> \"" + pat +
+                          "\" -> " +
+                          (f2 != null ? ("\""+f2.toPattern()+'"') : "null"));
+                }
+
+            }
+        }
+
+        // @since ICU 2.4
+        // Make sure that all special characters, when quoted in a suffix or
+        // prefix, lose their special meaning.
+        char[] SPECIALS = { '0', ',', '.', '\u2030', '%', '#',
+                            ';', 'E', '*', '+', '-' };
+        sym = new DecimalFormatSymbols(Locale.US);
+        for (int j=0; j<SPECIALS.length; ++j) {
+            char special = SPECIALS[j];
+            String pat = "'" + special + "'#0'" + special + "'";
+            try {
+                fmt = new DecimalFormat(pat, sym);
+                String pat2 = fmt.toPattern();
+                if (!pat.equals(pat2)) {
+                    errln("FAIL: Pattern \"" + pat + "\" => toPattern() => \"" +
+                          pat2 + "\"");
+                }
+                String s = fmt.format(123);
+                String exp = "" + special + "123" + special;
+                if (!s.equals(exp)) {
+                    errln("FAIL: 123 x \"" + pat + "\" => \"" + s + "\", exp \"" +
+                          exp + "\"");
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Pattern \"" + pat + "\" => " + e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails for mulipliers 2^n.
+     */
+    public void Test4216742() throws ParseException {
+        DecimalFormat fmt = (DecimalFormat) NumberFormat.getInstance(Locale.US);
+        long[] DATA = { Long.MIN_VALUE, Long.MAX_VALUE, -100000000L, 100000000L};
+        for (int i=0; i<DATA.length; ++i) {
+            String str = Long.toString(DATA[i]);
+            for (int m = 1; m <= 100; m++) {
+                fmt.setMultiplier(m);
+                long n = ((Number) fmt.parse(str)).longValue();
+                if (n > 0 != DATA[i] > 0) {
+                    errln("\"" + str + "\" parse(x " + fmt.getMultiplier() +
+                          ") => " + n);
+                }
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat formats 1.001 to "1.00" instead of "1" with 2 fraction
+     * digits.
+     */
+    public void Test4217661() {
+        Object[] DATA = {
+            new Double(0.001), "0",
+            new Double(1.001), "1",
+            new Double(0.006), "0.01",
+            new Double(1.006), "1.01",
+        };
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        fmt.setMaximumFractionDigits(2); 
+        for (int i=0; i<DATA.length; i+=2) {
+            String s = fmt.format(((Double) DATA[i]).doubleValue());
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: Got " + s + ", exp " + DATA[i+1]); 
+            }
+        }
+    }
+    
+    /**
+     * 4243011: Formatting .5 rounds to "1" instead of "0"
+     */
+    public void Test4243011() {
+        double DATA[] = {0.5, 1.5, 2.5, 3.5, 4.5};
+        String EXPECTED[] = {"0.", "2.", "2.", "4.", "4."};
+        
+        DecimalFormat format = new DecimalFormat("0.");
+        for (int i = 0; i < DATA.length; i++) {
+            String result = format.format(DATA[i]);
+            if (result.equals(EXPECTED[i])) {
+                logln("OK: got " + result);
+            } else {
+                errln("FAIL: got " + result);
+            }
+        }
+    }
+    
+    /**
+     * 4243108: format(0.0) gives "0.1" if preceded by parse("99.99")
+     */
+    public void Test4243108() {
+        DecimalFormat f = new DecimalFormat("#.#");
+        String result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+        try {
+            double dResult = f.parse("99.99").doubleValue();
+            if (dResult == 99.99) {
+                logln("OK: got " + dResult);
+            } else {
+                errln("FAIL: got " + dResult);
+            }
+        } catch (ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }            
+        result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+    }
+    
+    /**
+     * 4330377: DecimalFormat engineering notation gives incorrect results
+     */
+    public void test4330377() {
+        /*
+        double[] input = {5000.0, 500.0, 50.0, 5.0, 0.5, 0.05, 0.005, 0.0005,
+               5050.0, 505.0, 50.5, 5.05, 0.505, 0.0505, 0.00505, 0.000505};
+        String[] pattern = {"000.#E0", "##0.#E0", "#00.#E0"};
+        String[][] expected = {
+            // it's questionable whether "#00.#E0" should result in post-decimal
+            // zeroes, i.e., whether "5.0E3", "5.0E0", "5.0E-3" are really good
+            {"500E1", "5E3", "5.0E3"},
+            {"500E0", "500E0", "500E0"},
+            {"500E-1", "50E0", "50E0"},
+            {"500E-2", "5E0", "5.0E0"},
+            {"500E-3", "500E-3", "500E-3"},
+            {"500E-4", "50E-3", "50E-3"},
+            {"500E-5", "5E-3", "5.0E-3"},
+            {"500E-6", "500E-6", "500E-6"},
+            {"505E1", "5.05E3", "5.05E3"},
+            {"505E0", "505E0", "505E0"},
+            {"505E-1", "50.5E0", "50.5E0"},
+            {"505E-2", "5.05E0", "5.05E0"},
+            {"505E-3", "505E-3", "505E-3"},
+            {"505E-4", "50.5E-3", "50.5E-3"},
+            {"505E-5", "5.05E-3", "5.05E-3"},
+            {"505E-6", "505E-6", "505E-6"}
+        };
+        for (int i = 0; i < input.length; i++) {
+            for (int j = 0; j < pattern.length; j++) {
+                DecimalFormat format = new DecimalFormat(pattern[j]);
+                String result = format.format(input[i]);
+                if (!result.equals(expected[i][j])) {
+                    errln("FAIL: input: " + input[i] +
+                            ", pattern: " + pattern[j] +
+                            ", expected: " + expected[i][j] +
+                            ", got: " + result);
+                }
+            }
+        }
+        */
+    }
+    
+    /**
+     * 4233840: NumberFormat does not round correctly
+     */
+    public void test4233840() {
+        float f = 0.0099f;
+
+        NumberFormat nf = new DecimalFormat("0.##", new DecimalFormatSymbols(Locale.US));
+    nf.setMinimumFractionDigits(2);
+    
+    String result = nf.format(f);
+    
+    if (!result.equals("0.01")) {
+        errln("FAIL: input: " + f + ", expected: 0.01, got: " + result);
+    }
+    }
+    
+    /**
+     * 4241880: Decimal format doesnt round a double properly when the number is less than 1
+     */
+    public void test4241880() {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        double[] input = {
+                .019, .009, .015, .016, .014,
+                .004, .005, .006, .007, .008,
+                .5, 1.5, .05, .15, .005,
+                .015, .0005, .0015,
+        };
+        String[] pattern = {
+                "##0%", "##0%", "##0%", "##0%", "##0%",
+                "##0%", "##0%", "##0%", "##0%", "##0%",
+                "#,##0", "#,##0", "#,##0.0", "#,##0.0", "#,##0.00",
+                "#,##0.00", "#,##0.000", "#,##0.000",
+        };
+        String[] expected = {
+                "2%", "1%", "2%", "2%", "1%",
+                "0%", "0%", "1%", "1%", "1%",
+                "0", "2", "0.0", "0.2", "0.00",
+                "0.02", "0.000", "0.002",
+        };
+        for (int i = 0; i < input.length; i++) {
+            DecimalFormat format = new DecimalFormat(pattern[i]);
+            String result = format.format(input[i]);
+            if (!result.equals(expected[i])) {
+                errln("FAIL: input: " + input[i] +
+                        ", pattern: " + pattern[i] +
+                        ", expected: " + expected[i] +
+                        ", got: " + result);
+            }
+        }
+        Locale.setDefault(savedLocale);
+    }
+}
+
+class myformat implements Serializable
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4120813612616076506L;
+    DateFormat _dateFormat = DateFormat.getDateInstance();
+
+    public String Now()
+    {
+        GregorianCalendar calendar = new GregorianCalendar();
+        Date t = calendar.getTime();
+        String nowStr = _dateFormat.format(t);
+        return nowStr;
+    }
+}
+
+class MyNumberFormatTest extends NumberFormat {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1251303884737169952L;
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(long number,StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public Number parse(String text, ParsePosition parsePosition) {
+        return new Integer(0);
+    }
+//#if defined(FOUNDATION10)
+//#else
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+//#endif
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/PluralFormatTest.java b/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
new file mode 100644
index 0000000..5a141a9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
@@ -0,0 +1,218 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.PluralFormat;
+import com.ibm.icu.util.ULocale;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author tschumann (Tim Schumann)
+ *
+ */
+public class PluralFormatTest extends TestFmwk {
+  
+  public static void main(String[] args) throws Exception {
+    new PluralFormatTest().run(args);
+  }
+  
+  private void helperTestRules(String localeIDs, String testPattern, Map changes) {
+    String[] locales = Utility.split(localeIDs, ',');
+    
+    // Create example outputs for all supported locales.
+    /*
+    System.out.println("\n" + localeIDs);
+    String lastValue = (String) changes.get(new Integer(0));
+    int  lastNumber = 0; 
+    
+    for (int i = 1; i < 199; ++i) {
+        if (changes.get(new Integer(i)) != null) {
+            if (lastNumber == i-1) {
+                System.out.println(lastNumber + ": " + lastValue);
+            } else {
+                System.out.println(lastNumber + "... " + (i-1) + ": " + lastValue);
+            }
+            lastNumber = i;
+            lastValue = (String) changes.get(new Integer(i));
+        }
+    }
+    System.out.println(lastNumber + "..." + 199 + ": " + lastValue);
+    */
+    log("test pattern: '" + testPattern + "'");
+    for (int i = 0; i < locales.length; ++i) {
+      try {
+        PluralFormat plf = new PluralFormat(new ULocale(locales[i]), testPattern);
+        log("plf: " + plf);
+        String expected = (String) changes.get(new Integer(0));
+        for (int n = 0; n < 200; ++n) {
+          if (changes.get(new Integer(n)) != null) {
+            expected = (String) changes.get(new Integer(n));
+          }
+          assertEquals("Locale: " + locales[i] + ", number: " + n,
+                       expected, plf.format(n));
+        }
+      } catch (IllegalArgumentException e) {
+        errln(e.getMessage() + " locale: " + locales[i] + " pattern: '" + testPattern + "' " + System.currentTimeMillis());
+      }
+    }
+  }
+  
+  public void TestOneFormLocales() {
+    String localeIDs = "ja,ko,tr,vi";
+    String testPattern = "other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingular1Locales() {
+    String localeIDs = "da,de,el,en,eo,es,et,fi,fo,he,it,nb,nl,nn,no,pt_PT,sv";
+    String testPattern = "one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "other");
+    changes.put(new Integer(1), "one");
+    changes.put(new Integer(2), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingular01Locales() {
+    String localeIDs = "fr,pt_BR";
+    String testPattern = "one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "one");
+    changes.put(new Integer(2), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestZeroSingularLocales() {
+    String localeIDs = "lv";
+    String testPattern = "zero{zero} one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "zero");
+    changes.put(new Integer(1), "one");
+    changes.put(new Integer(2), "other");
+    for (int i = 2; i < 20; ++i) {
+      if (i == 11) {
+        continue;
+      }
+      changes.put(new Integer(i*10 + 1), "one");
+      changes.put(new Integer(i*10 + 2), "other");
+    }
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularDual() {
+      String localeIDs = "ga";
+      String testPattern = "one{one} two{two} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "two");
+      changes.put(new Integer(3), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularZeroSome() {
+      String localeIDs = "ro";
+      String testPattern = "few{few} one{one} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "few");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(20), "other");
+      changes.put(new Integer(101), "few");
+      changes.put(new Integer(120), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSpecial12_19() {
+      String localeIDs = "lt";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(10), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 11) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 1), "one");
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer((i+1)*10), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucalExcept11_14() {
+      String localeIDs = "hr,ru,sr,uk";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 11) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 1), "one");
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer(i*10 + 5), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularPaucal() {
+      String localeIDs = "cs,sk";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucal1_234() {
+      String localeIDs = "pl";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 2 || i == 11 || i == 12) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer(i*10 + 5), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucal1_2_34() {
+      String localeIDs = "sl";
+      String testPattern = "one{one} two{two} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "two");
+      changes.put(new Integer(3), "few");
+      changes.put(new Integer(5), "other");
+      changes.put(new Integer(101), "one");
+      changes.put(new Integer(102), "two");
+      changes.put(new Integer(103), "few");
+      changes.put(new Integer(105), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java b/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
new file mode 100644
index 0000000..9a889a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
@@ -0,0 +1,251 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.text.ParsePosition;
+
+/**
+ * @author tschumann (Tim Schumann)
+ *
+ */
+public class PluralFormatUnitTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new PluralFormatUnitTest().run(args);
+    }
+
+    public void TestConstructor() {
+        // Test correct formatting of numbers.
+        PluralFormat plFmts[] = new PluralFormat[8];
+        plFmts[0] = new PluralFormat();
+        plFmts[0].applyPattern("other{#}");
+        plFmts[1] = new PluralFormat(PluralRules.DEFAULT);
+        plFmts[1].applyPattern("other{#}");
+        plFmts[2] = new PluralFormat(PluralRules.DEFAULT, "other{#}");
+        plFmts[3] = new PluralFormat("other{#}");
+        plFmts[4] = new PluralFormat(ULocale.getDefault());
+        plFmts[4].applyPattern("other{#}");
+        plFmts[5] = new PluralFormat(ULocale.getDefault(), PluralRules.DEFAULT);
+        plFmts[5].applyPattern("other{#}");
+        plFmts[6] = new PluralFormat(ULocale.getDefault(),
+                                   PluralRules.DEFAULT,
+                                   "other{#}");
+        plFmts[7] = new PluralFormat(ULocale.getDefault(), "other{#}");
+
+        // These plural formats should produce the same output as a
+        // NumberFormat for the default locale.
+        NumberFormat numberFmt = NumberFormat.getInstance(ULocale.getDefault());
+        for (int n = 1; n < 13; n++) {
+            String result = numberFmt.format(n);
+            for (int k = 0; k < plFmts.length; ++k) {
+                this.assertEquals("PluralFormat's output is not as expected",
+                                  result, plFmts[k].format(n));
+            }
+        }
+        // Test some bigger numbers.
+        for (int n = 100; n < 113; n++) {
+            String result = numberFmt.format(n*n);
+            for (int k = 0; k < plFmts.length; ++k) {
+                this.assertEquals("PluralFormat's output is not as expected",
+                                  result, plFmts[k].format(n*n));
+            }
+        }
+    }
+
+    public void TestApplyPatternAndFormat() {
+        // Create rules for testing.
+        PluralRules oddAndEven =  PluralRules.createRules("odd: n mod 2 is 1");
+        {
+            // Test full specified case for testing RuleSet
+            PluralFormat plfOddAndEven = new PluralFormat(oddAndEven);
+            plfOddAndEven.applyPattern("odd{# is odd.} other{# is even.}");
+
+            // Test fall back to other.
+            PluralFormat plfOddOrEven = new PluralFormat(oddAndEven);
+            plfOddOrEven.applyPattern("other{# is odd or even.}");
+
+            NumberFormat numberFormat =
+                NumberFormat.getInstance(ULocale.getDefault());
+            for (int i = 0; i < 22; ++i) {
+                assertEquals("Fallback to other gave wrong results",
+                             numberFormat.format(i) + " is odd or even.",
+                             plfOddOrEven.format(i));
+                assertEquals("Fully specified PluralFormat gave wrong results",
+                        numberFormat.format(i) + ((i%2 == 1) ?  " is odd."
+                                                             :  " is even."),
+                        plfOddAndEven.format(i));
+            }
+
+            // Check that double definition results in an exception.
+            try {
+                PluralFormat plFmt = new PluralFormat(oddAndEven);
+                plFmt.applyPattern("odd{foo} odd{bar} other{foobar}");
+                errln("Double definition of a plural case message should " +
+                       "provoke an exception but did not.");
+            }catch (IllegalArgumentException e){}
+            try {
+                PluralFormat plFmt = new PluralFormat(oddAndEven);
+                plFmt.applyPattern("odd{foo} other{bar} other{foobar}");
+                errln("Double definition of a plural case message should " +
+                       "provoke an exception but did not.");
+            }catch (IllegalArgumentException e){}
+        }
+        // omit other keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo}");
+            errln("Not defining plural case other should result in an " +
+                    "exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test unknown keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("otto{foo} other{bar}");
+            errln("Defining a message for an unknown keyword should result in" +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test invalid keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("1odd{foo} other{bar}");
+            errln("Defining a message for an invalid keyword should result in" +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test invalid syntax
+        //   -- comma between keyword{message} clauses
+        //   -- space in keywords
+        //   -- keyword{message1}{message2}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo},other{bar}");
+            errln("Separating keyword{message} items with other characters " +
+                    "than space should provoke an exception but did not.");
+        }catch (IllegalArgumentException e){}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("od d{foo} other{bar}");
+            errln("Spaces inside keywords should provoke an exception but " +
+                    "did not.");
+        }catch (IllegalArgumentException e){}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo}{foobar}other{foo}");
+            errln("Defining multiple messages after a keyword should provoke " +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Check that nested format is preserved.
+        {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{The number {0, number, #.#0} is odd.}" +
+                               "other{The number {0, number, #.#0} is even.}");
+            for (int i = 1; i < 3; ++i) {
+                assertEquals("format did not preserve a nested format string.",
+                              ((i % 2 == 1) ?
+                                      "The number {0, number, #.#0} is odd."
+                                    : "The number {0, number, #.#0} is even."),
+                              plFmt.format(i));
+            }
+
+        }
+        // Check that a pound sign in curly braces is preserved.
+        {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{The number {#} is odd.}" +
+                               "other{The number {#} is even.}");
+            for (int i = 1; i < 3; ++i) {
+                assertEquals("format did not preserve # inside curly braces.",
+                              ((i % 2 == 1) ? "The number {#} is odd."
+                                            : "The number {#} is even."),
+                              plFmt.format(i));
+            }
+
+        }
+    }
+
+    public void TestSetLocale() {
+        // Create rules for testing.
+        PluralRules oddAndEven = PluralRules.createRules("odd__: n mod 2 is 1");
+
+        PluralFormat plFmt = new PluralFormat(oddAndEven);
+        plFmt.applyPattern("odd__{odd} other{even}");
+        plFmt.setLocale(ULocale.ENGLISH);
+
+        // Check that pattern gets deleted.
+        NumberFormat nrFmt = NumberFormat.getInstance(ULocale.ENGLISH);
+        assertEquals("pattern was not resetted by setLocale() call.",
+                     nrFmt.format(5),
+                     plFmt.format(5));
+
+        // Check that rules got updated.
+        try {
+            plFmt.applyPattern("odd__{odd} other{even}");
+            errln("SetLocale should reset rules but did not.");
+        } catch (IllegalArgumentException e) {
+            if (e.getMessage().indexOf("Unknown keyword") < 0){
+                errln("Wrong exception thrown");
+            }
+        }
+        plFmt.applyPattern("one{one} other{not one}");
+        for (int i = 0; i < 20; ++i) {
+            assertEquals("Wrong ruleset loaded by setLocale()",
+                         ((i==1) ? "one" : "not one"),
+                         plFmt.format(i));
+        }
+    }
+
+    public void TestParse() {
+        PluralFormat plFmt = new PluralFormat("other{test}");
+        try {
+            plFmt.parse("test", new ParsePosition(0));
+            errln("parse() should throw an UnsupportedOperationException but " +
+                    "did not");
+        } catch (UnsupportedOperationException e) {
+        }
+
+        plFmt = new PluralFormat("other{test}");
+        try {
+            plFmt.parseObject("test", new ParsePosition(0));
+            errln("parse() should throw an UnsupportedOperationException but " +
+                    "did not");
+        } catch (UnsupportedOperationException e) {
+        }
+    }
+
+    public void TestPattern() {
+        Object[] args = { "acme", null };
+
+        {
+            PluralFormat pf = new PluralFormat("  one {one ''widget} other {# widgets}  ");
+            String pat = pf.toPattern();
+            logln("pf pattern: '" + pat + "'");
+
+            assertEquals("no leading spaces", "o", pat.substring(0, 1));
+            assertEquals("no trailing spaces", "}", pat.substring(pat.length() - 1));
+        }
+
+        MessageFormat pfmt = new MessageFormat("The disk ''{0}'' contains {1, plural,  one {one ''''{1, number, #.0}'''' widget} other {# widgets}}.");
+        System.out.println();
+        for (int i = 0; i < 3; ++i) {
+            args[1] = new Integer(i);
+            logln(pfmt.format(args));
+        }
+        PluralFormat pf = (PluralFormat)pfmt.getFormatsByArgumentIndex()[1];
+        logln(pf.toPattern());
+        logln(pfmt.toPattern());
+        MessageFormat pfmt2 = new MessageFormat(pfmt.toPattern());
+        assertEquals("message formats are equal", pfmt, pfmt2);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/PluralRulesTest.java b/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
new file mode 100644
index 0000000..cb53dc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.util.ULocale;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author dougfelt (Doug Felt)
+ */
+public class PluralRulesTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new PluralRulesTest().run(args);
+    }
+
+    private static final String[] parseTestData = {
+        "a: n is 1", "a:1",
+        "a: n mod 10 is 2", "a:2,12,22",
+        "a: n is not 1", "a:0,2,3,4,5",
+        "a: n mod 3 is not 1", "a:0,2,3,5,6,8,9",
+        "a: n in 2..5", "a:2,3,4,5",
+        "a: n within 2..5", "a:2,3,4,5",
+        "a: n not in 2..5", "a:0,1,6,7,8",
+        "a: n not within 2..5", "a:0,1,6,7,8",
+        "a: n mod 10 in 2..5", "a:2,3,4,5,12,13,14,15,22,23,24,25",
+        "a: n mod 10 within 2..5", "a:2,3,4,5,12,13,14,15,22,23,24,25",
+        "a: n mod 10 is 2 and n is not 12", "a:2,22,32,42",
+        "a: n mod 10 in 2..3 or n mod 10 is 5", "a:2,3,5,12,13,15,22,23,25",
+        "a: n mod 10 within 2..3 or n mod 10 is 5", "a:2,3,5,12,13,15,22,23,25",
+        "a: n is 1 or n is 4 or n is 23", "a:1,4,23",
+        "a: n mod 2 is 1 and n is not 3 and n in 1..11", "a:1,5,7,9,11",
+        "a: n mod 2 is 1 and n is not 3 and n within 1..11", "a:1,5,7,9,11",
+        "a: n mod 2 is 1 or n mod 5 is 1 and n is not 6", "a:1,3,5,7,9,11,13,15,16",
+        "a: n in 2..5; b: n in 5..8; c: n mod 2 is 1", "a:2,3,4,5;b:6,7,8;c:1,9,11",
+        "a: n within 2..5; b: n within 5..8; c: n mod 2 is 1", "a:2,3,4,5;b:6,7,8;c:1,9,11",
+    };
+
+    private String[] getTargetStrings(String targets) {
+        List list = new ArrayList(50);
+        String[] valSets = Utility.split(targets, ';');
+        for (int i = 0; i < valSets.length; ++i) {
+            String[] temp = Utility.split(valSets[i], ':');
+            String key = temp[0].trim();
+            String[] vals = Utility.split(temp[1], ',');
+            for (int j = 0; j < vals.length; ++j) {
+                String valString = vals[j].trim();
+                int val = Integer.parseInt(valString);
+                while (list.size() <= val) {
+                    list.add(null);
+                }
+                if (list.get(val) != null) {
+                    fail("key: " + list.get(val) + " already set for: " + val);
+                }
+                list.set(val, key);
+            }
+        }
+
+        String[] result = (String[]) list.toArray(new String[list.size()]);
+        for (int i = 0; i < result.length; ++i) {
+            if (result[i] == null) {
+                result[i] = "other";
+            }
+        }
+        return result;
+    }
+
+    private void checkTargets(PluralRules rules, String[] targets) {
+        for (int i = 0; i < targets.length; ++i) {
+            assertEquals("value " + i, targets[i], rules.select(i));
+        }
+    }
+
+    public void testParseEmpty() throws ParseException {
+        PluralRules rules = PluralRules.parseDescription("a:n");
+        assertEquals("empty", "a", rules.select(0));
+    }
+
+    public void testParsing() {
+        for (int i = 0; i < parseTestData.length; i += 2) {
+            String pattern = parseTestData[i];
+            String expected = parseTestData[i + 1];
+
+            logln("pattern[" + i + "] " + pattern);
+            try {
+                PluralRules rules = PluralRules.createRules(pattern);
+                String[] targets = getTargetStrings(expected);
+                checkTargets(rules, targets);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+    }
+
+    private static String[][] equalityTestData = {
+        { "a: n in 2..3", 
+            "a: n is 2 or n is 3", 
+            "a:n is 3 and n in 2..5 or n is 2" },
+        { "a: n is 12; b:n mod 10 in 2..3",
+          "b: n mod 10 in 2..3 and n is not 12; a: n in 12..12",
+          "b: n is 13; a: n in 12..13; b: n mod 10 is 2 or n mod 10 is 3" },
+    };
+
+    private void compareEquality(Object[] objects) {
+        for (int i = 0; i < objects.length; ++i) {
+            Object lhs = objects[i];
+            for (int j = i; j < objects.length; ++j) {
+                Object rhs = objects[j];
+                assertEquals("obj " + i + " and " + j, lhs, rhs);
+            }
+        }
+    }
+
+    public void testEquality() {
+        for (int i = 0; i < equalityTestData.length; ++i) {
+            String[] patterns = equalityTestData[i];
+            PluralRules[] rules = new PluralRules[patterns.length];
+            for (int j = 0; j < patterns.length; ++j) {
+                rules[j] = PluralRules.createRules(patterns[j]);
+            }
+            compareEquality(rules);
+        }
+    }
+
+    public void testBuiltInRules() {
+        // spot check
+        PluralRules rules = PluralRules.forLocale(ULocale.US);
+        assertEquals("us 0", PluralRules.KEYWORD_OTHER, rules.select(0));
+        assertEquals("us 1", PluralRules.KEYWORD_ONE, rules.select(1));
+        assertEquals("us 2", PluralRules.KEYWORD_OTHER, rules.select(2));
+
+        rules = PluralRules.forLocale(ULocale.JAPAN);
+        assertEquals("ja 0", PluralRules.KEYWORD_OTHER, rules.select(0));
+        assertEquals("ja 1", PluralRules.KEYWORD_OTHER, rules.select(1));
+        assertEquals("ja 2", PluralRules.KEYWORD_OTHER, rules.select(2));
+
+        rules = PluralRules.forLocale(ULocale.createCanonical("ru"));
+        assertEquals("ru 0", PluralRules.KEYWORD_MANY, rules.select(0));
+        assertEquals("ru 1", PluralRules.KEYWORD_ONE, rules.select(1));
+        assertEquals("ru 2", PluralRules.KEYWORD_FEW, rules.select(2));
+    }
+
+    public void testFunctionalEquivalent() {
+        // spot check
+        ULocale unknown = ULocale.createCanonical("zz_ZZ");
+        ULocale un_equiv = PluralRules.getFunctionalEquivalent(unknown, null);
+        assertEquals("unknown locales have root", ULocale.ROOT, un_equiv);
+
+        ULocale jp_equiv = PluralRules.getFunctionalEquivalent(ULocale.JAPAN, null);
+        ULocale cn_equiv = PluralRules.getFunctionalEquivalent(ULocale.CHINA, null);
+        assertEquals("japan and china equivalent locales", jp_equiv, cn_equiv);
+
+        boolean[] available = new boolean[1];
+        ULocale russia = ULocale.createCanonical("ru_RU");
+        ULocale ru_ru_equiv = PluralRules.getFunctionalEquivalent(russia, available);
+        assertFalse("ru_RU not listed", available[0]);
+
+        ULocale russian = ULocale.createCanonical("ru");
+        ULocale ru_equiv = PluralRules.getFunctionalEquivalent(russian, available);
+        assertTrue("ru listed", available[0]);
+        assertEquals("ru and ru_RU equivalent locales", ru_ru_equiv, ru_equiv);
+    }
+
+    public void testAvailableULocales() {
+        ULocale[] locales = PluralRules.getAvailableULocales();
+        Set localeSet = new HashSet();
+        localeSet.addAll(Arrays.asList(locales));
+
+        assertEquals("locales are unique in list", locales.length, localeSet.size());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/RBNFParseTest.java b/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
new file mode 100644
index 0000000..e26c93b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -0,0 +1,101 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class RBNFParseTest extends TestFmwk {
+    public static void main(String[] args) {
+    new RBNFParseTest().run(args);
+    }
+
+  public void TestParse() {
+
+    // these rules make no sense but behave rationally
+    String[] okrules = {
+      "random text",
+      "%foo:bar",
+      "%foo: bar",
+      "0:",
+      "0::",
+      "%%foo:;",
+      "-",
+      "-1",
+      "-:",
+      ".",
+      ".1",
+      "[",
+      "]",
+      "[]",
+      "[foo]",
+      "[[]",
+      "[]]",
+      "[[]]",
+      "[][]",
+      "<",
+      ">",
+      "=",
+      "==",
+      "===",
+      "=foo=",
+    };
+
+    String[] exceptrules = {
+      "",
+      ";",
+      ";;",
+      ":",
+      "::",
+      ":1",
+      ":;",
+      ":;:;",
+      "<<",
+      "<<<",
+      "10:;9:;",
+      ">>",
+      ">>>",
+      "10:", // formatting any value with a one's digit will fail
+      "11: << x", // formating a multiple of 10 causes rollback rule to fail
+      "%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
+    };
+
+    String[][] allrules = {
+      okrules,
+      exceptrules,
+    };
+
+    for (int j = 0; j < allrules.length; ++j) {
+      String[] tests = allrules[j];
+      boolean except = tests == exceptrules;
+      for (int i = 0; i < tests.length; ++i) {
+    logln("----------");
+    logln("rules: '" + tests[i] + "'");
+    boolean caughtException = false;
+    try {
+      RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(tests[i], Locale.US);
+      logln("1.23: " + fmt.format(20));
+      logln("-123: " + fmt.format(-123));
+      logln(".123: " + fmt.format(.123));
+      logln(" 123: " + fmt.format(123));
+    }
+    catch (Exception e) {
+      if (!except) {
+        errln("Unexpected exception: " + e.getMessage());
+      } else {
+        caughtException = true;
+      }
+    }
+    if (except && !caughtException) {
+      errln("expected exception but didn't get one!");
+    }
+      }
+    }
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
new file mode 100644
index 0000000..0197f6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -0,0 +1,207 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class RbnfRoundTripTest extends TestFmwk {
+    public static void main(String[] args) {
+        RbnfRoundTripTest test = new RbnfRoundTripTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                            + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the English spellout rules
+     */
+    public void TestEnglishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the duration-formatting rules
+     */
+    public void TestDurationsRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Spanish spellout rules
+     */
+    public void TestSpanishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("es", "es",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the French spellout rules
+     */
+    public void TestFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.FRANCE,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Italian spellout rules
+     */
+    public void TestItalianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.ITALIAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -999999, 999999);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the German spellout rules
+     */
+    public void TestGermanSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.GERMANY,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swedish spellout rules
+     */
+    public void TestSwedishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("sv", "SE",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Dutch spellout rules
+     */
+    public void TestDutchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("nl", "NL",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Japanese spellout rules
+     */
+    public void TestJapaneseSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.JAPAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Russian spellout rules
+     */
+    public void TestRussianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("ru", "RU",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestGreekSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("el", "GR",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter,  long lowLimit,
+                    long highLimit) {
+        try {
+            long count = 0;
+            long increment = 1;
+            for (long i = lowLimit; i <= highLimit; i += increment) {
+                if (count % 1000 == 0)
+                    logln(Long.toString(i));
+
+                if (Math.abs(i) < 5000)
+                    increment = 1;
+                else if (Math.abs(i) < 500000)
+                    increment = 2737;
+                else
+                    increment = 267437;
+
+                String text = formatter.format(i);
+                long rt = formatter.parse(text).longValue();
+
+                if (rt != i) {
+                    errln("Round-trip failed: " + i + " -> " + text +
+                                    " -> " + rt);
+                }
+
+                ++count;
+            }
+
+            if (lowLimit < 0) {
+                double d = 1.234;
+                while (d < 1000) {
+                    String text = formatter.format(d);
+                    double rt = formatter.parse(text).doubleValue();
+
+                    if (rt != d) {
+                        errln("Round-trip failed: " + d + " -> " + text +
+                                        " -> " + rt);
+                    }
+                    d *= 10;
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/RbnfTest.java b/src/com/ibm/icu/dev/test/format/RbnfTest.java
new file mode 100644
index 0000000..de98f41
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -0,0 +1,1052 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+
+import java.math.BigInteger;
+import java.util.Locale;
+import java.util.Random;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+
+public class RbnfTest extends TestFmwk {
+    public static void main(String[] args) {
+        RbnfTest test = new RbnfTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                               + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    static String fracRules = 
+        "%main:\n" +
+        // this rule formats the number if it's 1 or more.  It formats
+        // the integral part using a DecimalFormat ("#,##0" puts
+        // thousands separators in the right places) and the fractional
+        // part using %%frac.  If there is no fractional part, it
+        // just shows the integral part.
+        "    x.0: <#,##0<[ >%%frac>];\n" +
+        // this rule formats the number if it's between 0 and 1.  It
+        // shows only the fractional part (0.5 shows up as "1/2," not
+        // "0 1/2")
+        "    0.x: >%%frac>;\n" +
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        "%%frac:\n" +
+        "    2: 1/2;\n" +
+        "    3: <0</3;\n" +
+        "    4: <0</4;\n" +
+        "    5: <0</5;\n" +
+        "    6: <0</6;\n" +
+        "    7: <0</7;\n" +
+        "    8: <0</8;\n" +
+        "    9: <0</9;\n" +
+        "   10: <0</10;\n";
+
+    static {
+        // mondo hack
+    char[] fracRulesArr = fracRules.toCharArray();
+        int len = fracRulesArr.length;
+        int change = 2;
+        for (int i = 0; i < len; ++i) {
+            char ch = fracRulesArr[i];
+            if (ch == '\n') {
+                change = 2; // change ok
+            } else if (ch == ':') {
+                change = 1; // change, but once we hit a non-space char, don't change
+            } else if (ch == ' ') {
+                if (change != 0) {
+                    fracRulesArr[i] = (char)0x200e;
+                }
+            } else {
+                if (change == 1) {
+                    change = 0;
+                }
+            }
+        }
+    fracRules = new String(fracRulesArr);
+    }
+
+    static final String durationInSecondsRules =
+        // main rule set for formatting with words
+        "%with-words:\n"
+        // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+        // use %%hr to format values greater than 3,600 seconds
+        // (the ">>>" below causes us to see the number of minutes
+        // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+        // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+        // higher values are shown with colons: %%min-sec is used for
+        // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+        // ...and %%hr-min-sec is used for values of 3,600 seconds
+        // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    public void TestCoverage() {
+        // extra calls to boost coverage numbers
+        RuleBasedNumberFormat fmt0 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        RuleBasedNumberFormat fmt1 = (RuleBasedNumberFormat)fmt0.clone();
+        RuleBasedNumberFormat fmt2 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        if (!fmt0.equals(fmt0)) {
+            errln("self equality fails");
+        }
+        if (!fmt0.equals(fmt1)) {
+            errln("clone equality fails");
+        }
+        if (!fmt0.equals(fmt2)) {
+            errln("duplicate equality fails");
+        }
+        String str = fmt0.toString();
+        logln(str);
+
+        RuleBasedNumberFormat fmt3 =  new RuleBasedNumberFormat(durationInSecondsRules);
+
+        if (fmt0.equals(fmt3)) {
+            errln("nonequal fails");
+        }
+        if (!fmt3.equals(fmt3)) {
+            errln("self equal 2 fails");
+        }
+        str = fmt3.toString();
+        logln(str);
+
+        String[] names = fmt3.getRuleSetNames();
+
+        try {
+            fmt3.setDefaultRuleSet(null);
+            fmt3.setDefaultRuleSet("%%foo");
+            errln("sdrf %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            fmt3.setDefaultRuleSet("%bogus");
+            errln("sdrf %bogus didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            str = fmt3.format(2.3, names[0]);
+            logln(str);
+            str = fmt3.format(2.3, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            str = fmt3.format(123L, names[0]);
+            logln(str);
+            str = fmt3.format(123L, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        RuleBasedNumberFormat fmt4 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        RuleBasedNumberFormat fmt5 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        str = fmt4.toString();
+        logln(str);
+        if (!fmt4.equals(fmt5)) {
+            errln("duplicate 2 equality failed");
+        }
+        str = fmt4.format(123L);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(456.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+    }
+
+    public void TestUndefinedSpellout() {
+        Locale greek = new Locale("el", "", "");
+        RuleBasedNumberFormat[] formatters = {
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.SPELLOUT),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.ORDINAL),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.DURATION),
+        };
+
+        String[] data = {
+            "0",
+            "1",
+            "15",
+            "20",
+            "23",
+            "73",
+            "88",
+            "100",
+            "106",
+            "127",
+            "200",
+            "579",
+            "1,000",
+            "2,000",
+            "3,004",
+            "4,567",
+            "15,943",
+            "105,000",
+            "2,345,678",
+            "-36",
+            "-36.91215",
+            "234.56789"
+        };
+
+        NumberFormat decFormat = NumberFormat.getInstance(Locale.US);
+        for (int j = 0; j < formatters.length; ++j) {
+            com.ibm.icu.text.NumberFormat formatter = formatters[j];
+            logln("formatter[" + j + "]");
+            for (int i = 0; i < data.length; ++i) {
+                try {
+                    String result = formatter.format(decFormat.parse(data[i]));
+                    logln("[" + i + "] " + data[i] + " ==> " + result);
+                }
+                catch (Exception e) {
+                    errln("formatter[" + j + "], data[" + i + "] " + data[i] + " threw exception " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * Perform a simple spot check on the English spellout rules
+     */
+    public void TestEnglishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "one" },
+            { "15", "fifteen" },
+            { "20", "twenty" },
+            { "23", "twenty-three" },
+            { "73", "seventy-three" },
+            { "88", "eighty-eight" },
+            { "100", "one hundred" },
+            { "106", "one hundred and six" },
+            { "127", "one hundred and twenty-seven" },
+            { "200", "two hundred" },
+            { "579", "five hundred and seventy-nine" },
+            { "1,000", "one thousand" },
+            { "2,000", "two thousand" },
+            { "3,004", "three thousand and four" },
+            { "4,567", "four thousand five hundred and sixty-seven" },
+            { "15,943", "fifteen thousand nine hundred and forty-three" },
+            { "2,345,678", "two million, three hundred and forty-five "
+              + "thousand, six hundred and seventy-eight" },
+            { "-36", "minus thirty-six" },
+            { "234.567", "two hundred and thirty-four point five six seven" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "FOurhundred     thiRTY six", "436" },
+            // test spaces before fifty-7 causing lenient parse match of "fifty-" to " fifty"
+            // leaving "-7" for remaining parse, resulting in 2643 as the parse result.
+            { "fifty-7", "57" },
+            { " fifty-7", "57" },
+            { "  fifty-7", "57" },
+            { "2 thousand six HUNDRED   fifty-7", "2,657" },
+            { "fifteen hundred and zero", "1,500" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the English ordinal-abbreviation rules
+     */
+    public void TestOrdinalAbbreviations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.ORDINAL);
+        String[][] testData = {
+            { "1", "1st" },
+            { "2", "2nd" },
+            { "3", "3rd" },
+            { "4", "4th" },
+            { "7", "7th" },
+            { "10", "10th" },
+            { "11", "11th" },
+            { "13", "13th" },
+            { "20", "20th" },
+            { "21", "21st" },
+            { "22", "22nd" },
+            { "23", "23rd" },
+            { "24", "24th" },
+            { "33", "33rd" },
+            { "102", "102nd" },
+            { "312", "312th" },
+            { "12,345", "12,345th" }
+        };
+
+        doTest(formatter, testData, false);
+    }
+
+    /**
+     * Perform a simple spot check on the duration-formatting rules
+     */
+    public void TestDurations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.DURATION);
+        String[][] testData = {
+            { "3,600", "1:00:00" },             //move me and I fail
+            { "0", "0 sec." },
+            { "1", "1 sec." },
+            { "24", "24 sec." },
+            { "60", "1:00" },
+            { "73", "1:13" },
+            { "145", "2:25" },
+            { "666", "11:06" },
+            //            { "3,600", "1:00:00" },
+            { "3,740", "1:02:20" },
+            { "10,293", "2:51:33" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2-51-33", "10,293" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Spanish spellout rules
+     */
+    public void TestSpanishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("es", "es",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "6", "seis" },
+            { "16", "diecis\u00e9is" },
+            { "20", "veinte" },
+            { "24", "veinticuatro" },
+            { "26", "veintis\u00e9is" },
+            { "73", "setenta y tres" },
+            { "88", "ochenta y ocho" },
+            { "100", "cien" },
+            { "106", "ciento seis" },
+            { "127", "ciento veintisiete" },
+            { "200", "doscientos" },
+            { "579", "quinientos setenta y nueve" },
+            { "1,000", "mil" },
+            { "2,000", "dos mil" },
+            { "3,004", "tres mil cuatro" },
+            { "4,567", "cuatro mil quinientos sesenta y siete" },
+            { "15,943", "quince mil novecientos cuarenta y tres" },
+            { "2,345,678", "dos mill\u00f3n trescientos cuarenta y cinco mil "
+              + "seiscientos setenta y ocho"},
+            { "-36", "menos treinta y seis" },
+            { "234.567", "doscientos treinta y cuatro punto cinco seis siete" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the French spellout rules
+     */
+    public void TestFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.FRANCE,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "soixante-dix" },
+            { "71", "soixante et onze" },
+            { "73", "soixante-treize" },
+            { "80", "quatre-vingts" },
+            { "88", "quatre-vingt-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents soixante-dix-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents quatre-vingt-quatorze" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+              + "six cents soixante-dix-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "trente-un", "31" },
+            { "un cents quatre vingt dix huit", "198" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "septante" },
+            { "71", "septante-et-un" },
+            { "73", "septante-trois" },
+            { "80", "huitante" },
+            { "88", "huitante-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents septante-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents nonante-quatre" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+              + "six cents septante-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the Italian spellout rules
+     */
+    public void TestItalianSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.ITALIAN,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "15", "quindici" },
+            { "20", "venti" },
+            { "23", "ventitr\u00E9" },
+            { "73", "settantatr\u00E9" },
+            { "88", "ottantotto" },
+            { "100", "cento" },
+            { "106", "centosei" },
+            { "108", "centotto" },
+            { "127", "centoventisette" },
+            { "181", "centottantuno" },
+            { "200", "duecento" },
+            { "579", "cinquecentosettantanove" },
+            { "1,000", "mille" },
+            { "2,000", "duemila" },
+            { "3,004", "tremilaquattro" },
+            { "4,567", "quattromilacinquecentosessantasette" },
+            { "15,943", "quindicimilanovecentoquarantatr\u00E9" },
+            { "-36", "meno trentasei" },
+            { "234.567", "duecentotrentaquattro virgola cinque sei sette" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the German spellout rules
+     */
+    public void TestGermanSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.GERMANY,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "eins" },
+            { "15", "f\u00fcnfzehn" },
+            { "20", "zwanzig" },
+            { "23", "dreiundzwanzig" },
+            { "73", "dreiundsiebzig" },
+            { "88", "achtundachtzig" },
+            { "100", "hundert" },
+            { "106", "hundertsechs" },
+            { "127", "hundertsiebenundzwanzig" },
+            { "200", "zweihundert" },
+            { "579", "f\u00fcnfhundertneunundsiebzig" },
+            { "1,000", "tausend" },
+            { "2,000", "zweitausend" },
+            { "3,004", "dreitausendvier" },
+            { "4,567", "viertausendf\u00fcnfhundertsiebenundsechzig" },
+            { "15,943", "f\u00fcnfzehntausendneunhundertdreiundvierzig" },
+            { "2,345,678", "zwei Millionen dreihundertf\u00fcnfundvierzigtausend"
+              + "sechshundertachtundsiebzig" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Thai spellout rules
+     */
+    public void TestThaiSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("th", "TH", ""),
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "0", "\u0e28\u0e39\u0e19\u0e22\u0e4c" },
+            { "1", "\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "10", "\u0e2a\u0e34\u0e1a" },
+            { "11", "\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "21", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "101", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "1.234", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e2a\u0e35\u0e48" },
+            { "21.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "22.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e2d\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "23.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "123.45", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "12,345.678", "\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E2B\u0E21\u0E37\u0E48\u0E19\u0E2A\u0E2D\u0E07\u0E1E\u0E31\u0E19\u0E2A\u0E32\u0E21\u0E23\u0E49\u0E2D\u0E22\u0E2A\u0E35\u0E48\u0E2A\u0E34\u0E1A\u0E2B\u0E49\u0E32\u0E08\u0E38\u0E14\u0E2B\u0E01\u0E40\u0E08\u0E47\u0E14\u0E41\u0E1B\u0E14" },
+        };
+
+        doTest(formatter, testData, true);
+
+        /*
+          formatter.setLenientParseMode(true);
+          String[][] lpTestData = {
+          { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+          };
+          doLenientParseTest(formatter, lpTestData);
+        */
+    }
+
+    public void TestFractionalRuleSet() {
+
+
+        RuleBasedNumberFormat formatter =
+            new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+
+        String[][] testData = {
+            { "0", "0" },
+            { "1", "1" },
+            { "10", "10" },
+            { ".1", "1/10" },
+            { ".11", "1/9" },
+            { ".125", "1/8" },
+            { ".1428", "1/7" },
+            { ".1667", "1/6" },
+            { ".2", "1/5" },
+            { ".25", "1/4" },
+            { ".333", "1/3" },
+            { ".5", "1/2" },
+            { "1.1", "1 1/10" },
+            { "2.11", "2 1/9" },
+            { "3.125", "3 1/8" },
+            { "4.1428", "4 1/7" },
+            { "5.1667", "5 1/6" },
+            { "6.2", "6 1/5" },
+            { "7.25", "7 1/4" },
+            { "8.333", "8 1/3" },
+            { "9.5", "9 1/2" },
+            { ".2222", "2/9" },
+            { ".4444", "4/9" },
+            { ".5555", "5/9" },
+            { "1.2856", "1 2/7" }
+        };
+        doTest(formatter, testData, false); // exact values aren't parsable from fractions
+    }
+
+    public void TestSwedishSpellout()
+    {
+        Locale locale = new Locale("sv", "", "");
+        RuleBasedNumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT);
+
+        String[][] testDataDefault = {
+            { "101", "etthundra\u00aden" },
+            { "123", "etthundra\u00adtjugotre" },
+            { "1,001", "ettusen en" },
+            { "1,100", "ettusen etthundra" },
+            { "1,101", "ettusen etthundra\u00aden" },
+            { "1,234", "ettusen tv\u00e5hundra\u00adtrettiofyra" },
+            { "10,001", "tio\u00adtusen en" },
+            { "11,000", "elva\u00adtusen" },
+            { "12,000", "tolv\u00adtusen" },
+            { "20,000", "tjugo\u00adtusen" },
+            { "21,000", "tjugoen\u00adtusen" },
+            { "21,001", "tjugoen\u00adtusen en" },
+            { "200,000", "tv\u00e5hundra\u00adtusen" },
+            { "201,000", "tv\u00e5hundra\u00aden\u00adtusen" },
+            { "200,200", "tv\u00e5hundra\u00adtusen tv\u00e5hundra" },
+            { "2,002,000", "tv\u00e5 miljoner tv\u00e5\u00adtusen" },
+            { "12,345,678", "tolv miljoner trehundra\u00adfyrtiofem\u00adtusen sexhundra\u00adsjuttio\u00e5tta" },
+            { "123,456.789", "etthundra\u00adtjugotre\u00adtusen fyrahundra\u00adfemtiosex komma sju \u00e5tta nio" },
+            { "-12,345.678", "minus tolv\u00adtusen trehundra\u00adfyrtiofem komma sex sju \u00e5tta" }
+        };
+
+        logln("testing default rules");
+        doTest(formatter, testDataDefault, true);
+
+        String[][] testDataNeutrum = {
+            { "101", "etthundra\u00adett" },
+            { "1,001", "ettusen ett" },
+            { "1,101", "ettusen etthundra\u00adett" },
+            { "10,001", "tio\u00adtusen ett" },
+            { "21,001", "tjugoen\u00adtusen ett" }
+        };
+
+        formatter.setDefaultRuleSet("%neutrum");
+        logln("testing neutrum rules");
+        doTest(formatter, testDataNeutrum, true);
+
+        String[][] testDataYear = {
+            { "101", "etthundra\u00adett" },
+            { "900", "niohundra" },
+            { "1,001", "tiohundra\u00adett" },
+            { "1,100", "elvahundra" },
+            { "1,101", "elvahundra\u00adett" },
+            { "1,234", "tolvhundra\u00adtrettiofyra" },
+            { "2,001", "tjugohundra\u00adett" },
+            { "10,001", "tio\u00adtusen ett" }
+        };
+
+        formatter.setDefaultRuleSet("%year");
+        logln("testing year rules");
+        doTest(formatter, testDataYear, true);
+    }
+
+    public void TestBigNumbers() {
+        BigInteger bigI = new BigInteger("1234567890", 10);
+        StringBuffer buf = new StringBuffer();
+        RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        fmt.format(bigI, buf, null);
+        logln("big int: " + buf.toString());
+
+//#if defined(FOUNDATION10)
+//#else
+        buf.setLength(0);
+        java.math.BigDecimal bigD = new java.math.BigDecimal(bigI);
+        fmt.format(bigD, buf, null);
+        logln("big dec: " + buf.toString());
+//#endif
+    }
+
+  public void TestTrailingSemicolon() {
+    String thaiRules = 
+        "%default:\n" +
+        "  -x: \u0e25\u0e1a>>;\n" +
+        "  x.x: <<\u0e08\u0e38\u0e14>>>;\n" +
+        "  \u0e28\u0e39\u0e19\u0e22\u0e4c; \u0e2b\u0e19\u0e36\u0e48\u0e07; \u0e2a\u0e2d\u0e07; \u0e2a\u0e32\u0e21;\n" +
+        "  \u0e2a\u0e35\u0e48; \u0e2b\u0e49\u0e32; \u0e2b\u0e01; \u0e40\u0e08\u0e47\u0e14; \u0e41\u0e1b\u0e14;\n" +
+        "  \u0e40\u0e01\u0e49\u0e32; \u0e2a\u0e34\u0e1a; \u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2a\u0e2d\u0e07; \u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2a\u0e35\u0e48; \u0e2a\u0e34\u0e1a\u0e2b\u0e49\u0e32;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2b\u0e01; \u0e2a\u0e34\u0e1a\u0e40\u0e08\u0e47\u0e14;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e41\u0e1b\u0e14; \u0e2a\u0e34\u0e1a\u0e40\u0e01\u0e49\u0e32;\n" +
+        "  20: \u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  30: \u0e2a\u0e32\u0e21\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  40: \u0e2a\u0e35\u0e48\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  50: \u0e2b\u0e49\u0e32\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  60: \u0e2b\u0e01\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  70: \u0e40\u0e08\u0e47\u0e14\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  80: \u0e41\u0e1b\u0e14\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  90: \u0e40\u0e01\u0e49\u0e32\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  100: <<\u0e23\u0e49\u0e2d\u0e22[>>];\n" +
+        "  1000: <<\u0e1e\u0e31\u0e19[>>];\n" +
+        "  10000: <<\u0e2b\u0e21\u0e37\u0e48\u0e19[>>];\n" +
+        "  100000: <<\u0e41\u0e2a\u0e19[>>];\n" +
+        "  1,000,000: <<\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000: <<\u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000,000: <<\u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000,000,000: =#,##0=;\n" +
+        "%%alt-ones:\n" +
+        "  \u0e28\u0e39\u0e19\u0e22\u0e4c;\n" +
+        "  \u0e40\u0e2d\u0e47\u0e14;\n" +
+        "  =%default=;\n ; ;; ";
+
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(thaiRules, new Locale("th", "TH", ""));
+
+        String[][] testData = {
+            { "0", "\u0e28\u0e39\u0e19\u0e22\u0e4c" },
+            { "1", "\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "123.45", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" }
+        };
+        
+        doTest(formatter, testData, true);
+    }
+
+    public void TestSmallValues() {
+    String[][] testData = {
+        { "0.001", "zero point zero zero one" },
+        { "0.0001", "zero point zero zero zero one" },
+        { "0.00001", "zero point zero zero zero zero one" },
+        { "0.000001", "zero point zero zero zero zero zero one" },
+        { "0.0000001", "zero point zero zero zero zero zero zero one" },
+        { "0.00000001", "zero point zero zero zero zero zero zero zero one" },
+        { "0.000000001", "zero point zero zero zero zero zero zero zero zero one" },
+        { "0.0000000001", "zero point zero zero zero zero zero zero zero zero zero one" },
+        { "0.00000000001", "zero point zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.0000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.00000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.000000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "10,000,000.001", "ten million point zero zero one" },
+        { "10,000,000.0001", "ten million point zero zero zero one" },
+        { "10,000,000.00001", "ten million point zero zero zero zero one" },
+        { "10,000,000.000001", "ten million point zero zero zero zero zero one" },
+        { "10,000,000.0000001", "ten million point zero zero zero zero zero zero one" },
+        { "10,000,000.00000001", "ten million point zero zero zero zero zero zero zero one" },
+        { "10,000,000.000000002", "ten million point zero zero zero zero zero zero zero zero two" },
+        { "10,000,000", "ten million" },
+        { "1,234,567,890.0987654", "one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninety point zero nine eight seven six five four" },
+        { "123,456,789.9876543", "one hundred and twenty-three million, four hundred and fifty-six thousand, seven hundred and eighty-nine point nine eight seven six five four three" },
+        { "12,345,678.87654321", "twelve million, three hundred and forty-five thousand, six hundred and seventy-eight point eight seven six five four three two one" },
+        { "1,234,567.7654321", "one million, two hundred and thirty-four thousand, five hundred and sixty-seven point seven six five four three two one" },
+        { "123,456.654321", "one hundred and twenty-three thousand, four hundred and fifty-six point six five four three two one" },
+        { "12,345.54321", "twelve thousand three hundred and forty-five point five four three two one" },
+        { "1,234.4321", "one thousand two hundred and thirty-four point four three two one" },
+        { "123.321", "one hundred and twenty-three point three two one" },
+        { "0.0000000011754944", "zero point zero zero zero zero zero zero zero zero one one seven five four nine four four" },
+        { "0.000001175494351", "zero point zero zero zero zero zero one one seven five four nine four three five one" },
+    };
+
+    RuleBasedNumberFormat formatter
+        = new RuleBasedNumberFormat(Locale.US, RuleBasedNumberFormat.SPELLOUT);
+    doTest(formatter, testData, true);
+    }
+
+    public void TestRuleSetDisplayName() {
+        ULocale.setDefault(ULocale.US);
+        String[][] localizations = new String[][] {
+            /* public rule sets*/
+            {"%simplified", "%default", "%ordinal"},
+            /* display names in "en_US" locale*/
+            {"en_US", "Simplified", "Default", "Ordinal"},
+            /* display names in "zh_Hans" locale*/
+            {"zh_Hans", "\u7B80\u5316", "\u7F3A\u7701",  "\u5E8F\u5217"},
+            /* display names in a fake locale*/
+            {"foo_Bar_BAZ", "Simplified", "Default", "Ordinal"}
+        };
+        
+        //Construct RuleBasedNumberFormat by rule sets and localizations list
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(ukEnglish, localizations, ULocale.US);
+        RuleBasedNumberFormat f2= new RuleBasedNumberFormat(ukEnglish, localizations);
+        assertTrue("Check the two formatters' equality", formatter.equals(f2));        
+
+        //get displayName by name
+        String[] ruleSetNames = formatter.getRuleSetNames();
+        for (int i=0; i<ruleSetNames.length; i++) {
+            logln("Rule set name: " + ruleSetNames[i]);
+            String RSName_defLoc = formatter.getRuleSetDisplayName(ruleSetNames[i]);
+            assertEquals("Display name in default locale", localizations[1][i+1], RSName_defLoc);
+            String RSName_loc = formatter.getRuleSetDisplayName(ruleSetNames[i], ULocale.CHINA);
+            assertEquals("Display name in Chinese", localizations[2][i+1], RSName_loc);
+        }
+                
+        // getDefaultRuleSetName
+        String defaultRS = formatter.getDefaultRuleSetName();
+        //you know that the default rule set is %simplified according to rule sets string ukEnglish
+        assertEquals("getDefaultRuleSetName", "%simplified", defaultRS);
+        
+        //get locales of localizations
+        ULocale[] locales = formatter.getRuleSetDisplayNameLocales();
+        for (int i=0; i<locales.length; i++) {
+            logln(locales[i].getName());
+        }
+        
+        //get displayNames
+        String[] RSNames_defLoc = formatter.getRuleSetDisplayNames();
+        for (int i=0; i<RSNames_defLoc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in default locale", localizations[1][i+1], RSNames_defLoc[i]);
+        }
+        
+        String[] RSNames_loc = formatter.getRuleSetDisplayNames(ULocale.UK);
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in English", localizations[1][i+1], RSNames_loc[i]);
+        }    
+        
+        RSNames_loc = formatter.getRuleSetDisplayNames(ULocale.CHINA);
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in Chinese", localizations[2][i+1], RSNames_loc[i]);
+        }        
+
+        RSNames_loc = formatter.getRuleSetDisplayNames(new ULocale("foo_Bar_BAZ"));
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in fake locale", localizations[3][i+1], RSNames_loc[i]);
+        }              
+    }
+
+    public void TestAllLocales() {
+        StringBuffer errors = null;
+        ULocale[] locales = ULocale.getAvailableLocales();
+        Random r = createRandom();
+        String[] names = {
+            " (spellout) ",
+            " (ordinal)  ",
+            " (duration) "
+        };
+        for (int i = 0; i < locales.length; ++i) {
+            ULocale loc = locales[i];
+            for (int j = 0; j < 3; ++j) {
+                try {
+                    RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(loc, j+1);
+                    float n = ((int)(r.nextInt(1000) - 300)) / 16f;
+                    String s = fmt.format(n);
+                    if (isVerbose()) {
+                        logln(loc.getName() + names[j] + "success: " + n + " -> " + s);
+                    }
+                }
+                catch (Exception e) {
+                    String msg = loc.getName() + names[j] + "ERROR:" + e.getMessage();
+                    if (isVerbose()) {
+                        logln(msg);
+                    }
+                    if (errors == null) {
+                        errors = new StringBuffer();
+                    }
+                    errors.append("\n" + msg);
+                }
+            }
+        }
+        if (errors != null) {
+            errln(errors.toString());
+        }
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
+                boolean testParsing) {
+    //        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+    NumberFormat decFmt = new DecimalFormat("#,###.################");
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String number = testData[i][0];
+                String expectedWords = testData[i][1];
+                logln("test[" + i + "] number: " + number + " target: " + expectedWords);
+                Number num = decFmt.parse(number);
+                String actualWords = formatter.format(num);
+
+                if (!actualWords.equals(expectedWords)) {
+                    errln("Spot check format failed: for " + number + ", expected\n    "
+                          + expectedWords + ", but got\n    " +
+                          actualWords);
+                }
+                else if (testParsing) {
+                    String actualNumber = decFmt.format(formatter
+                                                        .parse(actualWords));
+
+                    if (!actualNumber.equals(number)) {
+                        errln("Spot check parse failed: for " + actualWords +
+                              ", expected " + number + ", but got " +
+                              actualNumber);
+                    }
+                }
+            }
+        }
+        catch (Throwable e) {
+            e.printStackTrace();
+            errln("Test failed with exception: " + e.toString());
+        }
+    }
+
+    void doLenientParseTest(RuleBasedNumberFormat formatter,
+                            String[][] testData) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String words = testData[i][0];
+                String expectedNumber = testData[i][1];
+                String actualNumber = decFmt.format(formatter.parse(words));
+
+                if (!actualNumber.equals(expectedNumber)) {
+                    errln("Lenient-parse spot check failed: for "
+                          + words + ", expected " + expectedNumber
+                          + ", but got " + actualNumber);
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Spellout rules for U.K. English.  
+     * I borrow the rule sets for TestRuleSetDisplayName()
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/TestAll.java b/src/com/ibm/icu/dev/test/format/TestAll.java
new file mode 100644
index 0000000..b0725a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TestAll.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+                  "TestAll$RBNF",
+                  "TestAll$NumberFormat",
+                  "TestAll$DateFormat",
+                  "TestAll$DateIntervalFormat",
+                  "TestAll$TimeUnitFormat",
+                  "TestAll$MessageFormat",
+                  "TestAll$PluralFormat",
+                  "com.ibm.icu.dev.test.format.BigNumberFormatTest",
+                  "com.ibm.icu.dev.test.format.GlobalizationPreferencesTest",
+                  "DataDrivenFormatTest"
+              },
+              "Formatting Tests");
+    }
+
+    public static class RBNF extends TestGroup {
+        public RBNF() {
+            super(new String[] {
+                "RbnfTest",
+                "RbnfRoundTripTest",
+        "RBNFParseTest",
+            });
+        }
+    }
+
+    public static class NumberFormat extends TestGroup {
+        public NumberFormat() {
+            super(new String[] {
+                "IntlTestNumberFormat",
+                "IntlTestNumberFormatAPI",
+                "NumberFormatTest",
+                "NumberFormatRegistrationTest",
+                "NumberFormatRoundTripTest",
+                "NumberRegression",
+                "NumberFormatRegressionTest",
+                "IntlTestDecimalFormatAPI",
+                "IntlTestDecimalFormatAPIC",
+                "IntlTestDecimalFormatSymbols",
+                "IntlTestDecimalFormatSymbolsC",
+            });
+        }
+    }
+
+    public static class DateFormat extends TestGroup {
+        public DateFormat() {
+            super(new String[] {
+                "DateFormatMiscTests",
+                "DateFormatRegressionTest",
+                "DateFormatRoundTripTest",
+                "DateFormatTest",
+                "IntlTestDateFormat",
+                "IntlTestDateFormatAPI",
+                "IntlTestDateFormatAPIC",
+                "IntlTestDateFormatSymbols",
+                "DateTimeGeneratorTest",
+                "IntlTestSimpleDateFormatAPI",
+                "DateFormatRegressionTestJ",
+                "TimeZoneFormatTest"
+            });
+        }
+    }
+    
+    public static class DateIntervalFormat extends TestGroup {
+        public DateIntervalFormat() {
+            super(new String[] {
+                "DateIntervalFormatTest"
+            });
+        }
+    }
+    
+    public static class TimeUnitFormat extends TestGroup {
+        public TimeUnitFormat() {
+            super(new String[] {
+                "TimeUnitTest"
+            });
+        }
+    }
+    
+    public static class PluralFormat extends TestGroup {
+        public PluralFormat() {
+            super(new String[] {
+                "PluralFormatUnitTest",
+                "PluralFormatTest",
+                "PluralRulesTest",
+            });
+        }
+    }
+
+    public static class MessageFormat extends TestGroup {
+        public MessageFormat() {
+            super(new String[] {
+                "TestMessageFormat",
+                "MessageRegression",
+            });
+        }
+    }
+
+    public static final String CLASS_TARGET_NAME = "Format";
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/TestMessageFormat.java b/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
new file mode 100644
index 0000000..adbc787
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -0,0 +1,1451 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 6, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.UFormat;
+import com.ibm.icu.util.ULocale;
+
+public class TestMessageFormat extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TestMessageFormat().run(args);
+    }
+
+    public void TestBug3()
+    {
+        double myNumber = -123456;
+        DecimalFormat form = null;
+        Locale locale[] = {
+            new Locale("ar", "", ""),
+            new Locale("be", "", ""),
+            new Locale("bg", "", ""),
+            new Locale("ca", "", ""),
+            new Locale("cs", "", ""),
+            new Locale("da", "", ""),
+            new Locale("de", "", ""),
+            new Locale("de", "AT", ""),
+            new Locale("de", "CH", ""),
+            new Locale("el", "", ""),       // 10
+            new Locale("en", "CA", ""),
+            new Locale("en", "GB", ""),
+            new Locale("en", "IE", ""),
+            new Locale("en", "US", ""),
+            new Locale("es", "", ""),
+            new Locale("et", "", ""),
+            new Locale("fi", "", ""),
+            new Locale("fr", "", ""),
+            new Locale("fr", "BE", ""),
+            new Locale("fr", "CA", ""),     // 20
+            new Locale("fr", "CH", ""),
+            new Locale("he", "", ""),
+            new Locale("hr", "", ""),
+            new Locale("hu", "", ""),
+            new Locale("is", "", ""),
+            new Locale("it", "", ""),
+            new Locale("it", "CH", ""),
+            new Locale("ja", "", ""),
+            new Locale("ko", "", ""),
+            new Locale("lt", "", ""),       // 30
+            new Locale("lv", "", ""),
+            new Locale("mk", "", ""),
+            new Locale("nl", "", ""),
+            new Locale("nl", "BE", ""),
+            new Locale("no", "", ""),
+            new Locale("pl", "", ""),
+            new Locale("pt", "", ""),
+            new Locale("ro", "", ""),
+            new Locale("ru", "", ""),
+            new Locale("sh", "", ""),       // 40
+            new Locale("sk", "", ""),
+            new Locale("sl", "", ""),
+            new Locale("sq", "", ""),
+            new Locale("sr", "", ""),
+            new Locale("sv", "", ""),
+            new Locale("tr", "", ""),
+            new Locale("uk", "", ""),
+            new Locale("zh", "", ""),
+            new Locale("zh", "TW", "")      // 49
+        };
+        StringBuffer buffer = new StringBuffer();
+        ParsePosition parsePos = new ParsePosition(0);
+        int i;
+        for (i= 0; i < 49; i++) {
+    //        form = (DecimalFormat)NumberFormat.getCurrencyInstance(locale[i]);
+            form = (DecimalFormat)NumberFormat.getInstance(locale[i]);
+            if (form == null) {
+                errln("Number format creation failed for " + locale[i].getDisplayName());
+                continue;
+            }
+            FieldPosition pos = new FieldPosition(0);
+            buffer.setLength(0);
+            form.format(myNumber, buffer, pos);
+            parsePos.setIndex(0);
+            Object result = form.parse(buffer.toString(), parsePos);
+            logln(locale[i].getDisplayName() + " -> " + result);
+            if (parsePos.getIndex() != buffer.length()) {
+                errln("Number format parse failed.");
+            }
+        }
+    }
+
+    public void TestBug1()
+    {
+        final double limit[] = {0.0, 1.0, 2.0};
+        final String formats[] = {"0.0<=Arg<1.0",
+                                  "1.0<=Arg<2.0",
+                                  "2.0<-Arg"};
+        ChoiceFormat cf = new ChoiceFormat(limit, formats);
+        assertEquals("ChoiceFormat.format", formats[1], cf.format(1));
+    }
+
+    public void TestBug2()
+    {
+        // {sfb} use double format in pattern, so result will match (not strictly necessary)
+        final String pattern = "There {0,choice,0.0#are no files|1.0#is one file|1.0<are {0, number} files} on disk {1}. ";
+        logln("The input pattern : " + pattern);
+        try {
+            MessageFormat fmt = new MessageFormat(pattern);
+            assertEquals("toPattern", pattern, fmt.toPattern());
+        } catch (IllegalArgumentException e) {
+            errln("MessageFormat pattern creation failed.");
+        }
+    }
+
+    public void TestPattern() // aka PatternTest()
+    {
+        Object testArgs[] = {
+            new Double(1), new Double(3456),
+            "Disk", new Date(1000000000L)
+        };
+        String testCases[] = {
+           "Quotes '', '{', 'a' {0} '{0}'",
+           "Quotes '', '{', 'a' {0,number} '{0}'",
+           "'{'1,number,'#',##} {1,number,'#',##}",
+           "There are {1} files on {2} at {3}.",
+           "On {2}, there are {1} files, with {0,number,currency}.",
+           "'{1,number,percent}', {1,number,percent},",
+           "'{1,date,full}', {1,date,full},",
+           "'{3,date,full}', {3,date,full},",
+           "'{1,number,#,##}' {1,number,#,##}",
+        };
+
+        String testResultPatterns[] = {
+            "Quotes '', '{', a {0} '{'0}",
+            "Quotes '', '{', a {0,number} '{'0}",
+            "'{'1,number,#,##} {1,number,'#'#,##}",
+            "There are {1} files on {2} at {3}.",
+            "On {2}, there are {1} files, with {0,number,currency}.",
+            "'{'1,number,percent}, {1,number,percent},",
+            "'{'1,date,full}, {1,date,full},",
+            "'{'3,date,full}, {3,date,full},",
+            "'{'1,number,#,##} {1,number,#,##}"
+        };
+
+        String testResultStrings[] = {
+            "Quotes ', {, a 1 {0}",
+            "Quotes ', {, a 1 {0}",
+            "{1,number,#,##} #34,56",
+            "There are 3,456 files on Disk at 1/12/70 5:46 AM.",
+            "On Disk, there are 3,456 files, with $1.00.",
+            "{1,number,percent}, 345,600%,",
+            "{1,date,full}, Wednesday, December 31, 1969,",
+            "{3,date,full}, Monday, January 12, 1970,",
+            "{1,number,#,##} 34,56"
+        };
+
+        for (int i = 0; i < 9; ++i) {
+            //it_out << "\nPat in:  " << testCases[i]);
+
+            //String buffer;
+            MessageFormat form = null;
+            try {
+                form = new MessageFormat(testCases[i], Locale.US);
+            } catch (IllegalArgumentException e1) {
+                errln("MessageFormat for " + testCases[i] + " creation failed.");
+                continue;
+            }
+            assertEquals("\"" + testCases[i] + "\".toPattern()", testResultPatterns[i], form.toPattern());
+
+            //it_out << "Pat out: " << form.toPattern(buffer));
+            StringBuffer result = new StringBuffer();
+            FieldPosition fieldpos = new FieldPosition(0);
+            form.format(testArgs, result, fieldpos);
+            assertEquals("format", testResultStrings[i], result.toString());
+
+            //it_out << "Result:  " << result);
+    //        /* TODO: Look at this test and see if this is still a valid test */
+    //        logln("---------------- test parse ----------------");
+    //
+    //        int count = 4;
+    //        form.toPattern(buffer);
+    //        logln("MSG pattern for parse: " + buffer);
+    //
+    //        int parseCount = 0;
+    //        Formattable* values = form.parse(result, parseCount, success);
+    //        if (U_FAILURE(success)) {
+    //            errln("MessageFormat failed test #5");
+    //            logln(String("MessageFormat failed test #5 with error code ")+(int)success);
+    //        } else if (parseCount != count) {
+    //            errln("MSG count not %d as expected. Got %d", count, parseCount);
+    //        }
+    //        UBool failed = FALSE;
+    //        for (int j = 0; j < parseCount; ++j) {
+    //             if (values == 0 || testArgs[j] != values[j]) {
+    //                errln(((String)"MSG testargs[") + j + "]: " + toString(testArgs[j]));
+    //                errln(((String)"MSG values[") + j + "]  : " + toString(values[j]));
+    //                failed = TRUE;
+    //             }
+    //        }
+    //        if (failed)
+    //            errln("MessageFormat failed test #6");
+        }
+    }
+
+    public void TestSample() // aka sample()
+    {
+        MessageFormat form = null;
+        StringBuffer buffer2 = new StringBuffer();
+        try {
+            form = new MessageFormat("There are {0} files on {1}");
+        } catch (IllegalArgumentException e1) {
+            errln("Sample message format creation failed.");
+            return;
+        }
+        Object testArgs1[] = { "abc", "def" };
+        FieldPosition fieldpos = new FieldPosition(0);
+        assertEquals("format",
+                     "There are abc files on def",
+                     form.format(testArgs1, buffer2, fieldpos).toString());
+    }
+
+    public void TestStaticFormat()
+    {
+        Object arguments[] = {
+            new Integer(7),
+            new Date(871068000000L),
+            "a disturbance in the Force"
+        };
+
+        assertEquals("format",
+            "At 12:20:00 PM on Aug 8, 1997, there was a disturbance in the Force on planet 7.",
+            MessageFormat.format("At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+                                 arguments));
+    }
+
+    static final int FieldPosition_DONT_CARE = -1;
+
+    public void TestSimpleFormat()
+    {
+        Object testArgs1[] = {new Integer(0), "MyDisk"};
+        Object testArgs2[] = {new Integer(1), "MyDisk"};
+        Object testArgs3[] = {new Integer(12), "MyDisk"};
+
+        MessageFormat form = new MessageFormat(
+            "The disk \"{1}\" contains {0} file(s).");
+
+        StringBuffer string = new StringBuffer();
+        FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
+        form.format(testArgs1, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 0 file(s).",
+                     string.toString());
+
+        string.setLength(0);
+        form.format(testArgs2, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 1 file(s).",
+                     string.toString());
+
+        string.setLength(0);
+        form.format(testArgs3, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 12 file(s).",
+                     string.toString());
+    }
+
+    public void TestMsgFormatChoice()
+    {
+        MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+        double filelimits[] = {0,1,2};
+        String filepart[] = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form.setFormat(1, fileform); // NOT zero, see below
+
+        FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
+        StringBuffer string = new StringBuffer();
+        Object testArgs1[] = {new Integer(0), "MyDisk"};
+        form.format(testArgs1, string, ignore);
+        assertEquals("format#1",
+                     "The disk \"MyDisk\" contains no files.",
+                     string.toString());
+
+        string.setLength(0);
+        Object testArgs2[] = {new Integer(1), "MyDisk"};
+        form.format(testArgs2, string, ignore);
+        assertEquals("format#2",
+                     "The disk \"MyDisk\" contains one file.",
+                     string.toString());
+
+        string.setLength(0);
+        Object testArgs3[] = {new Integer(1273), "MyDisk"};
+        form.format(testArgs3, string, ignore);
+        assertEquals("format#3",
+                     "The disk \"MyDisk\" contains 1,273 files.",
+                     string.toString());
+    }
+
+    //---------------------------------
+    //  API Tests
+    //---------------------------------
+
+    public void TestClone()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat z = new MessageFormat("There are {0} files on {1} created");
+        MessageFormat y = null;
+        y = (MessageFormat)x.clone();
+        if (x.equals(y) &&
+            !x.equals(z) &&
+            !y.equals(z) )
+            logln("First test (operator ==): Passed!");
+        else {
+            errln("First test (operator ==): Failed!");
+        }
+        if ((x.equals(y) && y.equals(x)) &&
+            (!x.equals(z) && !z.equals(x)) &&
+            (!y.equals(z) && !z.equals(y)) )
+            logln("Second test (equals): Passed!");
+        else {
+            errln("Second test (equals): Failed!");
+        }
+
+    }
+
+    public void TestEquals()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = new MessageFormat("There are {0} files on {1}");
+        if (!x.equals(y)) {
+            errln("First test (operator ==): Failed!");
+        }
+
+    }
+
+    public void TestNotEquals()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = new MessageFormat("There are {0} files on {1}");
+        y.setLocale(Locale.FRENCH);
+        if (x.equals(y)) {
+            errln("First test (operator !=): Failed!");
+        }
+        y = new MessageFormat("There are {0} files on {1}");
+        y.applyPattern("There are {0} files on {1} the disk");
+        if (x.equals(y)) {
+            errln("Second test (operator !=): Failed!");
+        }
+    }
+
+    public void TestHashCode()
+    {
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat z = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = null;
+        y = (MessageFormat)x.clone();
+        if (x.hashCode() != y.hashCode())
+            errln("FAIL: identical objects have different hashcodes");
+        if (x.hashCode() != z.hashCode())
+            errln("FAIL: identical objects have different hashcodes");
+
+    /* These are not errors
+        y.setLocale(ULocale.FRENCH);
+        if (x.hashCode() == y.hashCode())
+            errln("FAIL: different objects have same hashcodes. Locale ignored");
+
+        z.applyPattern("There are {0} files on {1} the disk");
+        if (x.hashCode() == z.hashCode())
+            errln("FAIL: different objects have same hashcodes. Pattern ignored");
+    */
+
+        ULocale.setDefault(save);
+    }
+
+    public void TestSetLocale()
+    {
+        Object arguments[] = {
+            new Double(456.83),
+            new Date(871068000000L),
+            "deposit"
+            };
+
+        StringBuffer result = new StringBuffer();
+
+        //String formatStr = "At {1,time} on {1,date}, you made a {2} of {0,number,currency}.";
+        String formatStr = "At <time> on {1,date}, you made a {2} of {0,number,currency}.";
+        // {sfb} to get $, would need Locale::US, not Locale::ENGLISH
+        // Just use unlocalized currency symbol.
+        //String compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of $456.83.";
+        String compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of ";
+        compareStrEng += '\u00a4';
+        compareStrEng += "456.83.";
+        // {sfb} to get DM, would need Locale::GERMANY, not Locale::GERMAN
+        // Just use unlocalized currency symbol.
+        //String compareStrGer = "At <time> on 08.08.1997, you made a deposit of 456,83 DM.";
+        String compareStrGer = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStrGer += "456,83\u00a0";
+        compareStrGer += '\u00a4';
+        compareStrGer += ".";
+
+        MessageFormat msg = new MessageFormat(formatStr, Locale.ENGLISH);
+        result.setLength(0);
+        FieldPosition pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrEng, result.toString());
+
+        msg.setLocale(Locale.ENGLISH);
+        assertEquals("getLocale", Locale.ENGLISH, msg.getLocale());
+
+        msg.setLocale(Locale.GERMAN);
+        assertEquals("getLocale", Locale.GERMAN, msg.getLocale());
+
+        msg.applyPattern(formatStr);
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrGer, result.toString());
+
+        //Cover getULocale()
+        logln("Testing set/get ULocale ...");
+        msg.setLocale(ULocale.ENGLISH);
+        assertEquals("getULocale", ULocale.ENGLISH, msg.getULocale());
+
+        msg.setLocale(ULocale.GERMAN);
+        assertEquals("getULocale", ULocale.GERMAN, msg.getULocale());
+
+        msg.applyPattern(formatStr);
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrGer, result.toString());
+    }
+
+    public void TestFormat()
+    {
+        final Object ft_arr[] =
+        {
+            new Date(871068000000L)
+        };
+
+        StringBuffer result = new StringBuffer();
+
+        //String formatStr = "At {1,time} on {1,date}, you made a {2} of {0,number,currency}.";
+        String formatStr = "On {0,date}, it began.";
+        String compareStr = "On Aug 8, 1997, it began.";
+
+        MessageFormat msg = new MessageFormat(formatStr);
+        FieldPosition fp = new FieldPosition(0);
+
+        try {
+            msg.format(new Date(871068000000L),
+                       result,
+                       fp);
+            errln("*** MSG format without expected error code.");
+        } catch (Exception e1) {
+        }
+
+        result.setLength(0);
+        result = msg.format(
+            ft_arr,
+            result,
+            fp);
+        assertEquals("format", compareStr, result.toString());
+    }
+
+    public void TestParse()
+    {
+        String msgFormatString = "{0} =sep= {1}";
+        MessageFormat msg = new MessageFormat(msgFormatString);
+        String source = "abc =sep= def";
+
+        try {
+            Object[] fmt_arr = msg.parse(source);
+            if (fmt_arr.length != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                // TODO: This if statement seems to be redundant. [tschumann]
+                if (fmt_arr.length != 2) {
+                    errln("*** MSG parse (ustring, parsepos., count) count err.");
+                } else {
+                    assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                    assertEquals("parse()[1]", "def", fmt_arr[1]);
+                }
+            }
+        } catch (ParseException e1) {
+            errln("*** MSG parse (ustring, count, err) error.");
+        }
+
+        ParsePosition pp = new ParsePosition(0);
+
+        Object[] fmt_arr = msg.parse(source, pp);
+        if (pp.getIndex()==0 || fmt_arr==null) {
+            errln("*** MSG parse (ustring, parsepos., count) error.");
+        } else {
+            if (fmt_arr.length != 2) {
+                errln("*** MSG parse (ustring, parsepos., count) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                assertEquals("parse()[1]", "def", fmt_arr[1]);
+            }
+        }
+
+        pp.setIndex(0);
+        Object[] fmta;
+
+        fmta = (Object[]) msg.parseObject( source, pp );
+        if (pp.getIndex() == 0) {
+            errln("*** MSG parse (ustring, Object, parsepos ) error.");
+        } else {
+            if (fmta.length != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                // TODO: Don't we want to check fmta?
+                //       In this case this if statement would be redundant, too.
+                //       [tschumann]
+                if (fmt_arr.length != 2) {
+                    errln("*** MSG parse (ustring, parsepos., count) count err.");
+                } else {
+                    // TODO: Don't we want to check fmta? [tschumann]
+                    assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                    assertEquals("parse()[1]", "def", fmt_arr[1]);
+                }
+            }
+        }
+    }
+
+    /**
+     * Of course, in Java there is no adopt, but we retain the same
+     * method name. [alan]
+     */
+    public void TestAdopt()
+    {
+        String formatStr = "{0,date},{1},{2,number}";
+        String formatStrChange = "{0,number},{1,number},{2,date}";
+        MessageFormat msg = new MessageFormat(formatStr);
+        MessageFormat msgCmp = new MessageFormat(formatStr);
+        Format[] formats = msg.getFormats();
+        Format[] formatsCmp = msgCmp.getFormats();
+        Format[] formatsChg = null;
+        Format[] formatsAct = null;
+        Format a = null;
+        Format b = null;
+        Format[] formatsToAdopt = null;
+
+        if (formats==null || formatsCmp==null || (formats.length <= 0) || (formats.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        int i;
+
+        for (i = 0; i < formats.length; i++) {
+            a = formats[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+        formatsChg = msg.getFormats(); // tested function
+        if (formatsChg==null || (formatsChg.length != formats.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        boolean diff;
+        diff = true;
+        for (i = 0; i < formats.length; i++) {
+            a = formatsChg[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (a.equals(b)) {
+                    logln("formatsChg == formatsCmp at index " + i);
+                    diff = false;
+                }
+            }
+        }
+        if (!diff) {
+            errln("*** MSG getFormats diff err.");
+            return;
+        }
+
+        logln("MSG getFormats tested.");
+
+        msg.setFormats( formatsCmp ); //tested function
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("formatsAct != formatsCmp at index " + i);
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG setFormats tested.");
+
+        //----
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+
+        formatsToAdopt = new Format[formatsCmp.length];
+        if (formatsToAdopt==null) {
+            errln("memory allocation error");
+            return;
+        }
+
+        for (i = 0; i < formatsCmp.length; i++) {
+            if (formatsCmp[i] == null) {
+                formatsToAdopt[i] = null;
+            } else {
+                formatsToAdopt[i] = (Format) formatsCmp[i].clone();
+                if (formatsToAdopt[i]==null) {
+                    errln("Can't clone format at index " + i);
+                    return;
+                }
+            }
+        }
+        msg.setFormats( formatsToAdopt ); // function to test
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG adoptFormats tested.");
+
+        //---- adoptFormat
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+
+        formatsToAdopt = new Format[formatsCmp.length];
+        if (formatsToAdopt==null) {
+            errln("memory allocation error");
+            return;
+        }
+
+        for (i = 0; i < formatsCmp.length; i++) {
+            if (formatsCmp[i] == null) {
+                formatsToAdopt[i] = null;
+            } else {
+                formatsToAdopt[i] = (Format) formatsCmp[i].clone();
+                if (formatsToAdopt[i]==null) {
+                    errln("Can't clone format at index " + i);
+                    return;
+                }
+            }
+        }
+
+        for ( i = 0; i < formatsCmp.length; i++ ) {
+            msg.setFormat( i, formatsToAdopt[i] ); // function to test
+        }
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG adoptFormat tested.");
+    }
+
+    /**
+     * Verify that MessageFormat accomodates more than 10 arguments and
+     * more than 10 subformats.
+     */
+    public void TestUnlimitedArgsAndSubformats() {
+        final String pattern =
+            "On {0,date} (aka {0,date,short}, aka {0,date,long}) "+
+            "at {0,time} (aka {0,time,short}, aka {0,time,long}) "+
+            "there were {1,number} werjes "+
+            "(a {3,number,percent} increase over {2,number}) "+
+            "despite the {4}''s efforts "+
+            "and to delight of {5}, {6}, {7}, {8}, {9}, and {10} {11}.";
+        try {
+            MessageFormat msg = new MessageFormat(pattern);
+
+            final Object ARGS[] = {
+                new Date(10000000000000L),
+                new Integer(1303),
+                new Integer(1202),
+                new Double(1303.0/1202 - 1),
+                "Glimmung",
+                "the printers",
+                "Nick",
+                "his father",
+                "his mother",
+                "the spiddles",
+                "of course",
+                "Horace"
+            };
+
+            String expected =
+                "On Nov 20, 2286 (aka 11/20/86, aka November 20, 2286) "+
+                "at 9:46:40 AM (aka 9:46 AM, aka 9:46:40 AM PST) "+
+                "there were 1,303 werjes "+
+                "(a 8% increase over 1,202) "+
+                "despite the Glimmung's efforts "+
+                "and to delight of the printers, Nick, his father, "+
+                "his mother, the spiddles, and of course Horace.";
+            assertEquals("format", expected, msg.format(ARGS));
+        } catch (IllegalArgumentException e1) {
+            errln("FAIL: constructor failed");
+        }
+    }
+
+    // test RBNF extensions to message format
+    public void TestRBNF() {
+        // WARNING: this depends on the RBNF formats for en_US
+        Locale locale = Locale.US;
+        String[] values = {
+            // decimal values do not format completely for ordinal or duration, and
+            // do not always parse, so do not include them
+            "0", "1", "12", "100", "123", "1001", "123,456", "-17",
+        };
+        String[] formats = {
+            "There are {0,spellout} files to search.",
+            "There are {0,spellout,%simplified} files to search.",
+            "The bogus spellout {0,spellout,%BOGUS} files behaves like the default.",
+            "This is the {0,ordinal} file to search.", // TODO fix bug, ordinal does not parse
+            "Searching this file will take {0,duration} to complete.",
+            "Searching this file will take {0,duration,%with-words} to complete.",
+        };
+        final NumberFormat numFmt = NumberFormat.getInstance(locale);
+        Object[] args = new Object[1];
+        Number num = null;
+        for (int i = 0; i < formats.length; ++i) {
+            MessageFormat fmt = new MessageFormat(formats[i], locale);
+            logln("Testing format pattern: '" + formats[i] + "'");
+            for (int j = 0; j < values.length; ++j) {
+                try {
+                    num = numFmt.parse(values[j]);
+                }
+                catch (Exception e) {
+                    throw new IllegalStateException("failed to parse test argument");
+                }
+                args[0] = num;
+                String result = fmt.format(args);
+                logln("value: " + num + " --> " + result);
+
+                if (i != 3) { // TODO: fix this, for now skip ordinal parsing (format string at index 3)
+                    try {
+                        Object[] parsedArgs = fmt.parse(result);
+                        if (parsedArgs.length != 1) {
+                            errln("parse returned " + parsedArgs.length + " args");
+                        } else if (!parsedArgs[0].equals(num)) {
+                            errln("parsed argument " + parsedArgs[0] + " != " + num);
+                        }
+                    }
+                    catch (Exception e) {
+                        errln("parse of '" + result + " returned exception: " + e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestSetGetFormats()
+    {
+        Object arguments[] = {
+            new Double(456.83),
+            new Date(871068000000L),
+            "deposit"
+            };
+
+        StringBuffer result = new StringBuffer();
+
+        String formatStr = "At <time> on {1,date}, you made a {2} of {0,number,currency}.";
+        // original expected format result
+        String compareStr = "At <time> on Aug 8, 1997, you made a deposit of $456.83.";
+        // the date being German-style, but the currency being English-style
+        String compareStr2 = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStr2 += '\u00a4';
+        compareStr2 += "456.83.";
+        // both date and currency formats are German-style
+        String compareStr3 = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStr3 += "456,83\u00a0";
+        compareStr3 += '\u00a4';
+        compareStr3 += ".";
+
+        MessageFormat msg = new MessageFormat(formatStr, ULocale.US);
+        result.setLength(0);
+        FieldPosition pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr, result.toString());
+
+        // constructs a Format array with a English-style Currency formatter
+        //                            and a German-style Date formatter
+        //      might not meaningful, just for testing setFormatsByArgIndex
+        Format[] fmts = new Format[] {
+            NumberFormat.getCurrencyInstance(ULocale.ENGLISH),
+            DateFormat.getDateInstance(DateFormat.DEFAULT, ULocale.GERMAN)
+            };
+
+        msg.setFormatsByArgumentIndex(fmts);
+        result.setLength(0);
+        pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr2, result.toString());
+
+        // Construct a German-style Currency formatter, replace the corresponding one
+        // Thus both formatters should format objects with German-style
+        Format newFmt = NumberFormat.getCurrencyInstance(ULocale.GERMAN);
+        msg.setFormatByArgumentIndex(0, newFmt);
+        result.setLength(0);
+        pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr3, result.toString());
+
+        // verify getFormatsByArgumentIndex
+        //   you should got three formats by that
+        //          - DecimalFormat     locale: de
+        //          - SimpleDateFormat  locale: de
+        //          - null
+        Format[] fmts2 = msg.getFormatsByArgumentIndex();
+        assertEquals("1st subformmater: Format Class", "com.ibm.icu.text.DecimalFormat", fmts2[0].getClass().getName());
+        assertEquals("1st subformmater: its Locale", ULocale.GERMAN, ((UFormat)fmts2[0]).getLocale(ULocale.VALID_LOCALE));
+        assertEquals("2nd subformatter: Format Class", "com.ibm.icu.text.SimpleDateFormat", fmts2[1].getClass().getName());
+        assertEquals("2nd subformmater: its Locale", ULocale.GERMAN, ((UFormat)fmts2[1]).getLocale(ULocale.VALID_LOCALE));
+        assertTrue("The third subFormatter is null", null == fmts2[2]);
+    }
+
+    // Test the fix pattern api
+    public void TestAutoQuoteApostrophe() {
+        final String[] patterns = { // new pattern, expected pattern
+            "'", "''",
+            "''", "''",
+            "'{", "'{'",
+            "' {", "'' {",
+            "'a", "''a",
+            "'{'a", "'{'a",
+            "'{a'", "'{a'",
+            "'{}", "'{}'",
+            "{'", "{'",
+            "{'a", "{'a",
+            "{'a{}'a}'a", "{'a{}'a}''a",
+            "'}'", "'}'",
+            "'} '{'}'", "'} '{'}''",
+            "'} {{{''", "'} {{{'''",
+        };
+        for (int i = 0; i < patterns.length; i += 2) {
+            assertEquals("[" + (i/2) + "] \"" + patterns[i] + "\"", patterns[i+1], MessageFormat.autoQuoteApostrophe(patterns[i]));
+        }
+    }
+    
+    // This tests passing named arguments instead of numbers to format(). 
+    public void testFormatNamedArguments() {
+        Map arguments = new HashMap();
+        arguments.put("startDate", new Date(871068000000L));
+
+        StringBuffer result = new StringBuffer();
+        
+        String formatStr = "On {startDate,date}, it began.";
+        String compareStr = "On Aug 8, 1997, it began.";
+
+        MessageFormat msg = new MessageFormat(formatStr);
+        FieldPosition fp = new FieldPosition(0);
+
+        try {
+            msg.format(arguments.get("startDate"), result, fp);
+            errln("*** MSG format without expected error code.");
+        } catch (Exception e1) {
+        }
+
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            fp);
+        assertEquals("format", compareStr, result.toString());
+    }
+    
+    // This tests parsing formatted messages with named arguments instead of
+    // numbers. 
+    public void testParseNamedArguments() {
+        String msgFormatString = "{foo} =sep= {bar}";
+        MessageFormat msg = new MessageFormat(msgFormatString);
+        String source = "abc =sep= def";
+
+        try {
+            Map fmt_map = msg.parseToMap(source);
+            if (fmt_map.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_map.get("foo"));
+                assertEquals("parse()[1]", "def", fmt_map.get("bar"));
+            }
+        } catch (ParseException e1) {
+            errln("*** MSG parse (ustring, count, err) error.");
+        }
+
+        ParsePosition pp = new ParsePosition(0);
+        Map fmt_map = msg.parseToMap(source, pp); 
+        if (pp.getIndex()==0 || fmt_map==null) {
+            errln("*** MSG parse (ustring, parsepos., count) error.");
+        } else {
+            if (fmt_map.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, parsepos., count) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_map.get("foo"));
+                assertEquals("parse()[1]", "def", fmt_map.get("bar"));
+            }
+        }
+
+        pp.setIndex(0);
+       
+        Map fmta = (Map) msg.parseObject( source, pp );
+        if (pp.getIndex() == 0) {
+            errln("*** MSG parse (ustring, Object, parsepos ) error.");
+        } else {
+            if (fmta.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmta.get("foo"));
+                assertEquals("parse()[1]", "def", fmta.get("bar"));
+            }
+        }
+    }
+    
+    // Ensure that methods designed for numeric arguments only, will throw
+    // an exception when called on MessageFormat objects created with
+    // named arguments.
+    public void testNumericOnlyMethods() {
+        MessageFormat msg = new MessageFormat("Number of files: {numfiles}");
+        boolean gotException = false;
+        try {
+            Format fmts[] = {new DecimalFormat()};
+            msg.setFormatsByArgumentIndex(fmts);
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.setFormatsByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.setFormatByArgumentIndex(0, new DecimalFormat());
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.setFormatByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.getFormatsByArgumentIndex();
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.getFormatsByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            Object args[] = {new Long(42)};
+            msg.format(args, new StringBuffer(), new FieldPosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.format(Object[], StringBuffer, FieldPosition) " +
+                  "should throw an IllegalArgumentException when called on " + 
+                  "formats with named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            Object args[] = {new Long(42)};
+            msg.format((Object) args, new StringBuffer(), new FieldPosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.format(Object, StringBuffer, FieldPosition) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.parse("Number of files: 5", new ParsePosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.parse(String, ParsePosition) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.parse("Number of files: 5");
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        } catch (ParseException e) {
+            errln("Wrong exception thrown.");
+        }
+        if (!gotException) {
+            errln("MessageFormat.parse(String) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+    }
+    
+    public void testNamedArguments() {
+        // Ensure that mixed argument types are not allowed.
+        // Either all arguments have to be numeric or valid identifiers.
+        try {
+            new MessageFormat("Number of files in folder {0}: {numfiles}");
+            errln("Creating a MessageFormat with mixed argument types " + 
+                    "(named and numeric) should throw an " + 
+                    "IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Number of files in folder {folder}: {1}");
+            errln("Creating a MessageFormat with mixed argument types " + 
+                    "(named and numeric) should throw an " + 
+                    "IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        // Test named arguments.
+        MessageFormat mf = new MessageFormat("Number of files in folder {folder}: {numfiles}");
+        if (!mf.usesNamedArguments()) {
+            errln("message format 1 should have used named arguments");
+        }
+        mf = new MessageFormat("Wavelength:  {\u028EValue\uFF14}");
+        if (!mf.usesNamedArguments()) {
+            errln("message format 2 should have used named arguments");
+        }
+        
+        // Test argument names with invalid start characters.
+        try {
+            new MessageFormat("Wavelength:  {_\u028EValue\uFF14}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Wavelength:  {\uFF14\u028EValue}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        // Test argument names with invalid continue characters.
+        try {
+            new MessageFormat("Wavelength:  {Value@\uFF14}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Wavelength:  {Value(\uFF14)}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}        
+    }
+
+    public void testNumericFormatWithMap() {
+        MessageFormat mf = new MessageFormat("X:{2} Y:{1}");
+        if (mf.usesNamedArguments()) {
+            errln("should not use named arguments");
+        }
+
+        Map map12 = new HashMap();
+        map12.put("1", "one");
+        map12.put("2", "two");
+
+        String target = "X:two Y:one";
+        String result = mf.format(map12);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+
+        try {
+            Map mapResult = mf.parseToMap(target);
+            if (!map12.equals(mapResult)) {
+                errln("expected " + map12 + " but got " + mapResult);
+            }
+        } catch (ParseException e) {
+            errln("unexpected exception: " + e.getMessage());
+        }
+
+        Map map10 = new HashMap();
+        map10.put("1", "one");
+        map10.put("0", "zero");
+        target = "X:{2} Y:one";
+        result = mf.format(map10);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+
+        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
+        DateFormat timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
+        Map fmtMap = new HashMap();
+        fmtMap.put("1", dateFormat);
+        fmtMap.put("2", timeFormat);
+        mf.setFormatsByArgumentName(fmtMap);
+        Date date = new Date(661439820000L);
+
+        try {
+            result = mf.format(map12); // should fail, wrong argument type
+            fail("expected exception but got '" + result + "'");
+        } catch (IllegalArgumentException e) {
+            // expect this
+        }
+
+        Map argMap = new HashMap();
+        argMap.put("1", date);
+        argMap.put("2", date);
+        target = "X:5:17:00 AM Y:Dec 17, 1990";
+        result = mf.format(argMap);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+    }
+
+    // This tests nested Formats inside PluralFormat.
+    public void testNestedFormatsInPluralFormat() {
+        try {
+            MessageFormat msgFmt = new MessageFormat(
+                    "{0, plural, one {{0, number,C''''est #,##0.0# fichier}} " +
+                    "other {Ce sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            Object objArray[] = {new Long(0)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = msgFmt.format(objArray);
+            if (!result.equals("C'est 0,0 fichier dans la liste.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    // This tests PluralFormats used inside MessageFormats.
+    public void testPluralFormat() {
+        {
+            MessageFormat mfNum = new MessageFormat(
+                    "{0, plural, one{C''est # fichier} other " + 
+                      "{Ce sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            MessageFormat mfAlpha = new MessageFormat(
+                    "{argument, plural, one{C''est # fichier} other {Ce " +
+                      "sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            Object objArray[] = {new Long(0)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = mfNum.format(objArray);
+            if (!result.equals(mfAlpha.format(objMap))) {
+                errln("PluralFormat's output differs when using named " + 
+                        "arguments instead of numbers!");
+            }
+            if (!result.equals("C'est 0 fichier dans la liste.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        }
+        {
+            MessageFormat mfNum = new MessageFormat (
+                    "There {0, plural, one{is # zavod}few{are {0, " +
+                      "number,###.0} zavoda} other{are # zavodov}} in the " +
+                      "directory.",
+                    new ULocale("ru"));
+            MessageFormat mfAlpha = new MessageFormat (
+                    "There {argument, plural, one{is # zavod}few{" +
+                      "are {argument, number,###.0} zavoda} other{are # " + 
+                      "zavodov}} in the directory.",
+                    new ULocale("ru"));
+            Object objArray[] = {new Long(4)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = mfNum.format(objArray);
+            if (!result.equals(mfAlpha.format(objMap))) {
+                errln("PluralFormat's output differs when using named " + 
+                        "arguments instead of numbers!");
+            }
+            if (!result.equals("There are 4,0 zavoda in the directory.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        }
+    }
+
+  // Test toPattern when there is a PluralFormat
+  public void testPluralFormatToPattern() {
+    String[] patterns = {
+      "Beware of vicious {0, plural, one {hamster} other {hamsters}}.",
+      "{0, plural, one {{0, number,C''''est #,##0.0# fichier}} other {Ce sont # fichiers}} dans la liste.",
+      "{0, plural, one {C''est # fichier} other {Ce sont # fichiers}} dans la liste.",
+    };
+
+    for (int i = 0; i < patterns.length; ++i) {
+      String pattern = patterns[i];
+      MessageFormat mf = new MessageFormat(pattern);
+      MessageFormat mf2 = new MessageFormat(mf.toPattern());
+      if (!mf.equals(mf2)) {
+        errln("message formats not equal for pattern:\n*** '" + pattern + "'\n*** '" +
+              mf.toPattern() + "'");
+      }
+    }
+  }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    // Test case for formatToCharacterIterator
+    public void TestFormatToCharacterIterator() {
+        MessageFormat[] msgfmts = {
+            new MessageFormat("The {3,ordinal} folder ''{0}'' contains {2,number} file(s), created at {1,time} on {1,date}."),
+            new MessageFormat("The {arg3,ordinal} folder ''{arg0}'' contains {arg2,number} file(s), created at {arg1,time} on {arg1,date}."), // same as above, but named args
+            new MessageFormat("The folder contains {0}.")
+        };
+
+        double filelimits[] = {0,1,2};
+        String filepart[] = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        msgfmts[2].setFormat(0, fileform);
+
+        
+        Object[] args0 = new Object[] {"tmp", new Date(1184777888000L), new Integer(15), new Integer(2)};
+
+        HashMap args1 = new HashMap();
+        args1.put("arg0", "tmp");
+        args1.put("arg1", new Date(1184777888000L));
+        args1.put("arg2", new Integer(15));
+        args1.put("arg3", new Integer(2));
+
+        Object[] args2 = new Object[] {new Integer(34)};
+
+        Object[] args = {
+            args0,
+            args1,
+            args2
+        };
+        
+        String[] expectedStrings = {
+            "The 2nd folder 'tmp' contains 15 file(s), created at 9:58:08 AM on Jul 18, 2007.",
+            "The 2nd folder 'tmp' contains 15 file(s), created at 9:58:08 AM on Jul 18, 2007.",
+            "The folder contains 34 files."
+        };
+
+        AttributedString[] expectedAttributedStrings = {
+            new AttributedString(expectedStrings[0]),
+            new AttributedString(expectedStrings[1]),
+            new AttributedString(expectedStrings[2])
+        };
+
+        // Add expected attributes to the expectedAttributedStrings[0]
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(3), 4, 7);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 16, 19);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(2), 30, 32);
+        expectedAttributedStrings[0].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 53, 63);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 67, 79);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
+
+        // Add expected attributes to the expectedAttributedStrings[1]
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg3", 4, 7);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg0", 16, 19);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg2", 30, 32);
+        expectedAttributedStrings[1].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg1", 53, 63);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg1", 67, 79);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
+
+        // Add expected attributes to the expectedAttributedStrings[2]
+        expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 20, 28);
+        expectedAttributedStrings[2].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 20, 22);
+
+        for (int i = 0; i < msgfmts.length; i++) {
+            AttributedCharacterIterator acit = msgfmts[i].formatToCharacterIterator(args[i]);
+            AttributedCharacterIterator expectedAcit = expectedAttributedStrings[i].getIterator();
+
+            // Check available attributes
+            Set attrSet = acit.getAllAttributeKeys();
+            Set expectedAttrSet = expectedAcit.getAllAttributeKeys();
+            if (attrSet.size() != expectedAttrSet.size()) {
+                errln("FAIL: Number of attribute keys is " + attrSet.size() + " expected: " + expectedAttrSet.size());
+            }
+            Iterator attrIterator = attrSet.iterator();
+            while (attrIterator.hasNext()) {
+                AttributedCharacterIterator.Attribute attr = (AttributedCharacterIterator.Attribute)attrIterator.next();
+                if (!expectedAttrSet.contains(attr)) {
+                    errln("FAIL: The attribute " + attr + " is not expected.");
+                }
+            }
+
+            StringBuffer buf = new StringBuffer();
+            int index = acit.getBeginIndex();
+            int end = acit.getEndIndex();
+            int indexExp = expectedAcit.getBeginIndex();
+            int expectedLen = expectedAcit.getEndIndex() - indexExp;
+            if (end - index != expectedLen) {
+                errln("FAIL: Length of the result attributed string is " + (end - index) + " expected: " + expectedLen);
+            } else {
+                // Check attributes associated with each character
+                while (index < end) {
+                    char c = acit.setIndex(index);
+                    buf.append(c);
+                    expectedAcit.setIndex(indexExp);
+
+                    Map attrs = acit.getAttributes();
+                    Map attrsExp = expectedAcit.getAttributes();
+                    if (attrs.size() != attrsExp.size()) {
+                        errln("FAIL: Number of attributes associated with index " + index + " is " + attrs.size()
+                                + " expected: " + attrsExp.size());
+                    } else {
+                        // Check all attributes at the index
+                        Iterator entryIterator = attrsExp.entrySet().iterator();
+                        while (entryIterator.hasNext()) {
+                            Map.Entry entry = (Map.Entry)entryIterator.next();
+                            if (attrs.containsKey(entry.getKey())) {
+                                Object value = attrs.get(entry.getKey());
+                                assertEquals("Attribute value at index " + index, entry.getValue(), value);
+                            } else {
+                                errln("FAIL: Attribute " + entry.getKey() + " is missing at index " + index);
+                            }
+                        }
+                    }
+                    index++;
+                    indexExp++;
+                }
+                assertEquals("AttributedString contents", expectedStrings[i], buf.toString());
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/format/TimeUnitTest.java b/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
new file mode 100644
index 0000000..980c8c0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
@@ -0,0 +1,105 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParseException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.TimeUnitFormat;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author markdavis
+ *
+ */
+public class TimeUnitTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new TimeUnitTest().run(args);
+    }
+
+    public void TestBasic() {
+        String[] locales = {"en", "sl", "fr", "zh", "ar", "ru", "zh_Hant"};
+        for ( int locIndex = 0; locIndex < locales.length; ++locIndex ) {
+            //System.out.println("locale: " + locales[locIndex]);
+            Object[] formats = new Object[] {
+                new TimeUnitFormat(new ULocale(locales[locIndex]), TimeUnitFormat.FULL_NAME),
+                new TimeUnitFormat(new ULocale(locales[locIndex]), TimeUnitFormat.ABBREVIATED_NAME)
+            };
+            for (int style = TimeUnitFormat.FULL_NAME;
+                 style <= TimeUnitFormat.ABBREVIATED_NAME;
+                 ++style) {
+                final TimeUnit[] values = TimeUnit.values();
+                for (int j = 0; j < values.length; ++j) {
+                    final TimeUnit timeUnit = values[j];
+                    double[] tests = {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 5, 10, 100, 101.35};
+                    for (int i = 0; i < tests.length; ++i) {
+                        TimeUnitAmount source = new TimeUnitAmount(tests[i], timeUnit);
+                        String formatted = ((TimeUnitFormat)formats[style]).format(source);
+                        //System.out.println(formatted);
+                        logln(tests[i] + " => " + formatted);
+                        try {
+                            TimeUnitAmount result = (TimeUnitAmount) ((TimeUnitFormat)formats[style]).parseObject(formatted);
+                            if (result == null || !source.equals(result)) {
+                                errln("No round trip: " + source + " => " + formatted + " => " + result);
+                            }
+                            // mix style parsing
+                            result = (TimeUnitAmount) ((TimeUnitFormat)formats[1 - style]).parseObject(formatted);
+                            if (result == null || !source.equals(result)) {
+                                errln("No round trip: " + source + " => " + formatted + " => " + result);
+                            }
+                        } catch (ParseException e) {
+                            errln(e.getMessage());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestAPI() {
+        TimeUnitFormat format = new TimeUnitFormat();
+        format.setLocale(new ULocale("pt_BR"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new ULocale("de"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new ULocale("ja"));
+        format.setNumberFormat(NumberFormat.getNumberInstance(new ULocale("en")));
+        formatParsing(format);
+
+        format = new TimeUnitFormat();
+        ULocale es = new ULocale("es");
+        format.setNumberFormat(NumberFormat.getNumberInstance(es));
+        format.setLocale(es);
+        formatParsing(format);
+        
+    }
+
+    private void formatParsing(TimeUnitFormat format) {
+        final TimeUnit[] values = TimeUnit.values();
+        for (int j = 0; j < values.length; ++j) {
+            final TimeUnit timeUnit = values[j];
+            double[] tests = {0, 0.5, 1, 2, 3, 5};
+            for (int i = 0; i < tests.length; ++i) {
+                TimeUnitAmount source = new TimeUnitAmount(tests[i], timeUnit);
+                String formatted = format.format(source);
+                //System.out.println(formatted);
+                logln(tests[i] + " => " + formatted);
+                try {
+                    TimeUnitAmount result = (TimeUnitAmount) format.parseObject(formatted);
+                    if (result == null || !source.equals(result)) {
+                        errln("No round trip: " + source + " => " + formatted + " => " + result);
+                    }
+                } catch (ParseException e) {
+                    errln(e.getMessage());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt b/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
new file mode 100644
index 0000000..d9ffead
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
@@ -0,0 +1,165 @@
+#--------------------------------------------------------------------
+# Copyright (c) 2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+America/Atka ; America/Adak
+America/Ensenada ; America/Tijuana
+America/Fort_Wayne ; America/Indianapolis
+America/Indiana/Indianapolis ; America/Indianapolis
+America/Kentucky/Louisville ; America/Louisville
+America/Knox_IN ; America/Indiana/Knox
+America/Porto_Acre ; America/Rio_Branco
+America/Rosario ; America/Cordoba
+America/Shiprock ; America/Denver
+America/Virgin ; America/St_Thomas
+Antarctica/South_Pole ; Antarctica/McMurdo
+Arctic/Longyearbyen ; Europe/Oslo
+Asia/Ashkhabad ; Asia/Ashgabat
+Asia/Chungking ; Asia/Chongqing
+Asia/Dacca ; Asia/Dhaka
+Asia/Istanbul ; Europe/Istanbul
+Asia/Macao ; Asia/Macau
+Asia/Tel_Aviv ; Asia/Jerusalem
+Asia/Thimbu ; Asia/Thimphu
+Asia/Ujung_Pandang ; Asia/Makassar
+Asia/Ulan_Bator ; Asia/Ulaanbaatar
+#Atlantic/Jan_Mayen ; Europe/Oslo
+Australia/ACT ; Australia/Sydney
+Australia/Canberra ; Australia/Sydney
+Australia/LHI ; Australia/Lord_Howe
+Australia/NSW ; Australia/Sydney
+Australia/North ; Australia/Darwin
+Australia/Queensland ; Australia/Brisbane
+Australia/South ; Australia/Adelaide
+Australia/Tasmania ; Australia/Hobart
+Australia/Victoria ; Australia/Melbourne
+Australia/West ; Australia/Perth
+Australia/Yancowinna ; Australia/Broken_Hill
+Brazil/Acre ; America/Porto_Acre
+Brazil/DeNoronha ; America/Noronha
+Brazil/East ; America/Sao_Paulo
+Brazil/West ; America/Manaus
+CST6CDT ; America/Chicago
+Canada/Atlantic ; America/Halifax
+Canada/Central ; America/Winnipeg
+Canada/East-Saskatchewan ; America/Regina
+Canada/Eastern ; America/Toronto
+Canada/Mountain ; America/Edmonton
+Canada/Newfoundland ; America/St_Johns
+Canada/Pacific ; America/Vancouver
+Canada/Saskatchewan ; America/Regina
+Canada/Yukon ; America/Whitehorse
+Chile/Continental ; America/Santiago
+Chile/EasterIsland ; Pacific/Easter
+Cuba ; America/Havana
+EST ; America/Indianapolis
+EST5EDT ; America/New_York
+Egypt ; Africa/Cairo
+Eire ; Europe/Dublin
+Etc/GMT+0 ; Etc/GMT
+Etc/GMT-0 ; Etc/GMT
+Etc/GMT0 ; Etc/GMT
+Etc/Greenwich ; Etc/GMT
+Etc/Universal ; Etc/UTC
+Etc/Zulu ; Etc/UTC
+#Europe/Bratislava ; Europe/Prague
+#Europe/Ljubljana ; Europe/Belgrade
+Europe/Nicosia ; Asia/Nicosia
+#Europe/San_Marino ; Europe/Rome
+#Europe/Sarajevo ; Europe/Belgrade
+#Europe/Skopje ; Europe/Belgrade
+Europe/Tiraspol ; Europe/Chisinau
+#Europe/Vatican ; Europe/Rome
+#Europe/Zagreb ; Europe/Belgrade
+GB ; Europe/London
+GB-Eire ; Europe/London
+GMT ; Etc/GMT
+GMT+0 ; Etc/GMT+0
+GMT-0 ; Etc/GMT-0
+GMT0 ; Etc/GMT0
+Greenwich ; Etc/Greenwich
+HST ; Pacific/Honolulu
+Hongkong ; Asia/Hong_Kong
+Iceland ; Atlantic/Reykjavik
+Iran ; Asia/Tehran
+Israel ; Asia/Jerusalem
+Jamaica ; America/Jamaica
+Japan ; Asia/Tokyo
+Kwajalein ; Pacific/Kwajalein
+Libya ; Africa/Tripoli
+MST ; America/Phoenix
+MST7MDT ; America/Denver
+Mexico/BajaNorte ; America/Tijuana
+Mexico/BajaSur ; America/Mazatlan
+Mexico/General ; America/Mexico_City
+Mideast/Riyadh87 ; Asia/Riyadh87
+Mideast/Riyadh88 ; Asia/Riyadh88
+Mideast/Riyadh89 ; Asia/Riyadh89
+NZ ; Pacific/Auckland
+NZ-CHAT ; Pacific/Chatham
+Navajo ; America/Denver
+PRC ; Asia/Shanghai
+PST8PDT ; America/Los_Angeles
+Pacific/Samoa ; Pacific/Pago_Pago
+Poland ; Europe/Warsaw
+Portugal ; Europe/Lisbon
+ROC ; Asia/Taipei
+ROK ; Asia/Seoul
+Singapore ; Asia/Singapore
+SystemV/AST4 ; America/Puerto_Rico
+SystemV/AST4ADT ; America/Halifax
+SystemV/CST6 ; America/Regina
+SystemV/CST6CDT ; America/Chicago
+SystemV/EST5 ; America/Indianapolis
+SystemV/EST5EDT ; America/New_York
+SystemV/HST10 ; Pacific/Honolulu
+SystemV/MST7 ; America/Phoenix
+SystemV/MST7MDT ; America/Denver
+SystemV/PST8 ; Pacific/Pitcairn
+SystemV/PST8PDT ; America/Los_Angeles
+SystemV/YST9 ; Pacific/Gambier
+SystemV/YST9YDT ; America/Anchorage
+Turkey ; Europe/Istanbul
+UCT ; Etc/UCT
+US/Alaska ; America/Anchorage
+US/Aleutian ; America/Adak
+US/Arizona ; America/Phoenix
+US/Central ; America/Chicago
+US/East-Indiana ; America/Indianapolis
+US/Eastern ; America/New_York
+US/Hawaii ; Pacific/Honolulu
+US/Indiana-Starke ; America/Indiana/Knox
+US/Michigan ; America/Detroit
+US/Mountain ; America/Denver
+US/Pacific ; America/Los_Angeles
+US/Pacific-New ; America/Los_Angeles
+US/Samoa ; Pacific/Pago_Pago
+UTC ; Etc/UTC
+Universal ; Etc/Universal
+W-SU ; Europe/Moscow
+Zulu ; Etc/Zulu
+ACT ; Australia/Darwin
+AET ; Australia/Sydney
+AGT ; America/Buenos_Aires
+ART ; Africa/Cairo
+AST ; America/Anchorage
+BET ; America/Sao_Paulo
+BST ; Asia/Dhaka
+CAT ; Africa/Harare
+CNT ; America/St_Johns
+CST ; America/Chicago
+CTT ; Asia/Shanghai
+EAT ; Africa/Addis_Ababa
+ECT ; Europe/Paris
+IET ; America/Indianapolis
+IST ; Asia/Calcutta
+JST ; Asia/Tokyo
+MIT ; Pacific/Apia
+NET ; Asia/Yerevan
+NST ; Pacific/Auckland
+PLT ; Asia/Karachi
+PNT ; America/Phoenix
+PRT ; America/Puerto_Rico
+PST ; America/Los_Angeles
+SST ; Pacific/Guadalcanal
+VST ; Asia/Saigon
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java b/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
new file mode 100644
index 0000000..ea8611f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -0,0 +1,333 @@
+/*
+ ********************************************************************************
+ * Copyright (C) 2007-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                             *
+ ********************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneFormatTest().run(args);
+    }
+
+    private static final String[] PATTERNS = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VVVV"};
+
+    /*
+     * Test case for checking if a TimeZone is properly set in the result calendar
+     * and if the result TimeZone has the expected behavior.
+     */
+    public void TestTimeZoneRoundTrip() {
+        TimeZone unknownZone = new SimpleTimeZone(-31415, "Etc/Unknown");
+        int badDstOffset = -1234;
+        int badZoneOffset = -2345;
+
+        int[][] testDateData = {
+            {2007, 1, 15},
+            {2007, 6, 15},
+            {1990, 1, 15},
+            {1990, 6, 15},
+            {1960, 1, 15},
+            {1960, 6, 15},
+        };
+
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+        cal.clear();
+
+        // Set up rule equivalency test range
+        long low, high;
+        cal.set(1900, 0, 1);
+        low = cal.getTimeInMillis();
+        cal.set(2040, 0, 1);
+        high = cal.getTimeInMillis();
+
+        // Set up test dates
+        Date[] DATES = new Date[testDateData.length];
+        cal.clear();
+        for (int i = 0; i < DATES.length; i++) {
+            cal.set(testDateData[i][0], testDateData[i][1], testDateData[i][2]);
+            DATES[i] = cal.getTime();
+        }
+
+        // Set up test locales
+        ULocale[] LOCALES = null;
+        if (getInclusion() > 5) {
+            LOCALES = ULocale.getAvailableLocales();
+        } else {
+            LOCALES = new ULocale[] {new ULocale("en"), new ULocale("en_CA"), new ULocale("fr"), new ULocale("zh_Hant")};
+        }
+
+        String[] tzids = TimeZone.getAvailableIDs();
+        int[] inOffsets = new int[2];
+        int[] outOffsets = new int[2];
+
+        // Run the roundtrip test
+        for (int locidx = 0; locidx < LOCALES.length; locidx++) {
+            for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
+                SimpleDateFormat sdf = new SimpleDateFormat(PATTERNS[patidx], LOCALES[locidx]);
+
+                for (int tzidx = 0; tzidx < tzids.length; tzidx++) {
+                    TimeZone tz = TimeZone.getTimeZone(tzids[tzidx]);
+
+                    for (int datidx = 0; datidx < DATES.length; datidx++) {
+                        // Format
+                        sdf.setTimeZone(tz);
+                        String tzstr = sdf.format(DATES[datidx]);
+
+                        // Before parse, set unknown zone to SimpleDateFormat instance
+                        // just for making sure that it does not depends on the time zone
+                        // originally set.
+                        sdf.setTimeZone(unknownZone);
+
+                        // Parse
+                        ParsePosition pos = new ParsePosition(0);
+                        Calendar outcal = Calendar.getInstance(unknownZone);
+                        outcal.set(Calendar.DST_OFFSET, badDstOffset);
+                        outcal.set(Calendar.ZONE_OFFSET, badZoneOffset);
+
+                        sdf.parse(tzstr, outcal, pos);
+
+                        // Check the result
+                        TimeZone outtz = outcal.getTimeZone();
+
+                        tz.getOffset(DATES[datidx].getTime(), false, inOffsets);
+                        outtz.getOffset(DATES[datidx].getTime(), false, outOffsets);
+
+                        // Check if localized GMT format or RFC format is used.
+                        int numDigits = 0;
+                        for (int n = 0; n < tzstr.length(); n++) {
+                            if (UCharacter.isDigit(tzstr.charAt(n))) {
+                                numDigits++;
+                            }
+                        }
+                        if (numDigits >= 3) {
+                            // Localized GMT or RFC: total offset (raw + dst) must be preserved.
+                            int inOffset = inOffsets[0] + inOffsets[1];
+                            int outOffset = outOffsets[0] + outOffsets[1];
+                            if (inOffset != outOffset) {
+                                errln("Offset round trip failed; tz=" + tzids[tzidx]
+                                    + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                    + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                    + ", inOffset=" + inOffset + ", outOffset=" + outOffset);
+                            }
+                        } else if (PATTERNS[patidx].equals("z") || PATTERNS[patidx].equals("zzzz")
+                                || PATTERNS[patidx].equals("v") || PATTERNS[patidx].equals("vvvv")
+                                || PATTERNS[patidx].equals("V")) {
+                            // Specific or generic: raw offset must be preserved.
+                            if (inOffsets[0] != outOffsets[0]) {
+                                errln("Raw offset round trip failed; tz=" + tzids[tzidx]
+                                    + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                    + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                    + ", inRawOffset=" + inOffsets[0] + ", outRawOffset=" + outOffsets[0]);
+                            }
+                        } else { // "VVVV"
+                            // Location: time zone rule must be preserved.
+                            String canonicalID = TimeZone.getCanonicalID(tzids[tzidx]);
+                            if (canonicalID != null && !outtz.getID().equals(canonicalID)) {
+                                // Canonical ID did not match - check the rules
+                                if (!((BasicTimeZone)outtz).hasEquivalentTransitions(tz, low, high)) {
+                                    errln("Canonical round trip failed; tz=" + tzids[tzidx]
+                                        + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                        + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                        + ", outtz=" + outtz.getID());
+                                }
+                            }
+                        }
+                        
+                    }
+                }
+            }
+        }
+
+    }
+
+    /*
+     * Test case of round trip time and text.  This test case detects every canonical TimeZone's
+     * rule transition since 1900 until 2020, then check if time around each transition can
+     * round trip as expected.
+     */
+    public void TestTimeRoundTrip() {
+
+        boolean TEST_ALL = "true".equalsIgnoreCase(getProperty("TimeZoneRoundTripAll"));
+
+        int startYear, endYear;
+
+        if (TEST_ALL || getInclusion() > 5) {
+            startYear = 1900;
+        } else {
+            startYear = 1990;
+        }
+
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+        endYear = cal.get(Calendar.YEAR) + 3;
+
+        cal.set(startYear, Calendar.JANUARY, 1);
+        final long START_TIME = cal.getTimeInMillis();
+
+        cal.set(endYear, Calendar.JANUARY, 1);
+        final long END_TIME = cal.getTimeInMillis();
+
+        // Whether each pattern is ambiguous at DST->STD local time overlap
+        final boolean[] AMBIGUOUS_DST_DECESSION = {false, false, false, false, true, true, false, true};
+        // Whether each pattern is ambiguous at STD->STD/DST->DST local time overlap
+        final boolean[] AMBIGUOUS_NEGATIVE_SHIFT = {true, true, false, false, true, true, true, true};
+
+        final String BASEPATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS";
+
+        ULocale[] LOCALES = null;
+        boolean REALLY_VERBOSE = false;
+
+        // timer for performance analysis
+        long[] times = new long[PATTERNS.length];
+        long timer;
+
+        if (TEST_ALL) {
+            // It may take about an hour for testing all locales
+            LOCALES = ULocale.getAvailableLocales();
+        } else if (getInclusion() > 5) {
+            LOCALES = new ULocale[] {
+                new ULocale("ar_EG"), new ULocale("bg_BG"), new ULocale("ca_ES"), new ULocale("da_DK"), new ULocale("de"),
+                new ULocale("de_DE"), new ULocale("el_GR"), new ULocale("en"), new ULocale("en_AU"), new ULocale("en_CA"),
+                new ULocale("en_US"), new ULocale("es"), new ULocale("es_ES"), new ULocale("es_MX"), new ULocale("fi_FI"),
+                new ULocale("fr"), new ULocale("fr_CA"), new ULocale("fr_FR"), new ULocale("he_IL"), new ULocale("hu_HU"),
+                new ULocale("it"), new ULocale("it_IT"), new ULocale("ja"), new ULocale("ja_JP"), new ULocale("ko"),
+                new ULocale("ko_KR"), new ULocale("nb_NO"), new ULocale("nl_NL"), new ULocale("nn_NO"), new ULocale("pl_PL"),
+                new ULocale("pt"), new ULocale("pt_BR"), new ULocale("pt_PT"), new ULocale("ru_RU"), new ULocale("sv_SE"),
+                new ULocale("th_TH"), new ULocale("tr_TR"), new ULocale("zh"), new ULocale("zh_Hans"), new ULocale("zh_Hans_CN"),
+                new ULocale("zh_Hant"), new ULocale("zh_Hant_HK"), new ULocale("zh_Hant_TW")
+            };
+        } else {
+            LOCALES = new ULocale[] {
+                new ULocale("en"),
+            };
+        }
+
+        SimpleDateFormat sdfGMT = new SimpleDateFormat(BASEPATTERN);
+        sdfGMT.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
+
+        long testCounts = 0;
+        long[] testTimes = new long[4];
+        boolean[] expectedRoundTrip = new boolean[4];
+        int testLen = 0;
+        for (int locidx = 0; locidx < LOCALES.length; locidx++) {
+            logln("Locale: " + LOCALES[locidx].toString());
+            for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
+                logln("    pattern: " + PATTERNS[patidx]);
+                String pattern = BASEPATTERN + " " + PATTERNS[patidx];
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, LOCALES[locidx]);
+
+                String[] ids = TimeZone.getAvailableIDs();
+                for (int zidx = 0; zidx < ids.length; zidx++) {
+                    String id = TimeZone.getCanonicalID(ids[zidx]);
+                    if (id == null || !id.equals(ids[zidx])) {
+                        // Skip aliases
+                        continue;
+                    }
+                    BasicTimeZone btz = (BasicTimeZone)TimeZone.getTimeZone(ids[zidx], TimeZone.TIMEZONE_ICU);
+                    TimeZone tz = TimeZone.getTimeZone(ids[zidx]);
+                    sdf.setTimeZone(tz);
+
+                    long t = START_TIME;
+                    TimeZoneTransition tzt = null;
+                    boolean middle = true;
+                    while (t < END_TIME) {
+                        if (tzt == null) {
+                            testTimes[0] = t;
+                            expectedRoundTrip[0] = true;
+                            testLen = 1;
+                        } else {
+                            int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings();
+                            int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings();
+                            int delta = toOffset - fromOffset;
+                            if (delta < 0) {
+                                boolean isDstDecession = tzt.getFrom().getDSTSavings() > 0 && tzt.getTo().getDSTSavings() == 0;
+                                testTimes[0] = t + delta - 1;
+                                expectedRoundTrip[0] = true;
+                                testTimes[1] = t + delta;
+                                expectedRoundTrip[1] = isDstDecession ?
+                                        !AMBIGUOUS_DST_DECESSION[patidx] : !AMBIGUOUS_NEGATIVE_SHIFT[patidx];
+                                testTimes[2] = t - 1;
+                                expectedRoundTrip[2] = isDstDecession ?
+                                        !AMBIGUOUS_DST_DECESSION[patidx] : !AMBIGUOUS_NEGATIVE_SHIFT[patidx];
+                                testTimes[3] = t;
+                                expectedRoundTrip[3] = true;
+                                testLen = 4;
+                            } else {
+                                testTimes[0] = t - 1;
+                                expectedRoundTrip[0] = true;
+                                testTimes[1] = t;
+                                expectedRoundTrip[1] = true;
+                                testLen = 2;
+                            }
+                        }
+                        for (int testidx = 0; testidx < testLen; testidx++) {
+                            testCounts++;
+                            timer = System.currentTimeMillis();
+                            String text = sdf.format(new Date(testTimes[testidx]));
+                            try {
+                                Date parsedDate = sdf.parse(text);
+                                long restime = parsedDate.getTime();
+                                if (restime != testTimes[testidx]) {
+                                    StringBuffer msg = new StringBuffer();
+                                    msg.append("Time round trip failed for ")
+                                        .append("tzid=").append(ids[zidx])
+                                        .append(", locale=").append(LOCALES[locidx])
+                                        .append(", pattern=").append(PATTERNS[patidx])
+                                        .append(", text=").append(text)
+                                        .append(", gmt=").append(sdfGMT.format(new Date(testTimes[testidx])))
+                                        .append(", time=").append(testTimes[testidx])
+                                        .append(", restime=").append(restime)
+                                        .append(", diff=").append(restime - testTimes[testidx]);
+                                    if (expectedRoundTrip[testidx]) {
+                                        errln("FAIL: " + msg.toString());
+                                    } else if (REALLY_VERBOSE) {
+                                        logln(msg.toString());
+                                    }
+                                }
+                            } catch (ParseException pe) {
+                                errln("FAIL: " + pe.getMessage());
+                            }
+                            times[patidx] += System.currentTimeMillis() - timer;
+                        }
+                        tzt = btz.getNextTransition(t, false);
+                        if (tzt == null) {
+                            break;
+                        }
+                        if (middle) {
+                            // Test the date in the middle of two transitions.
+                            t += (tzt.getTime() - t)/2;
+                            middle = false;
+                            tzt = null;
+                        } else {
+                            t = tzt.getTime();
+                        }
+                    }
+                }
+            }
+        }
+
+        long total = 0;
+        logln("### Elapsed time by patterns ###");
+        for (int i = 0; i < PATTERNS.length; i++) {
+            logln(times[i] + "ms (" + PATTERNS[i] + ")");
+            total += times[i];
+        }
+        logln("Total: " + total + "ms");
+        logln("Iteration: " + testCounts);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
new file mode 100644
index 0000000..81b575a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
@@ -0,0 +1,89 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.io.*;
+
+/**
+ * @version     1.0
+ * @author Ram Viswanadha
+ */
+public class WriteNumberFormatSerialTestData {
+    static final String header="/*\n" +
+                               " *******************************************************************************\n"+
+                               " * Copyright (C) 2001, International Business Machines Corporation and         *\n"+
+                               " * others. All Rights Reserved.                                                *\n"+
+                               " *******************************************************************************\n"+
+                               " */\n\n"+
+                               "package com.ibm.icu.dev.test.format;\n\n"+
+                                
+                               "public class NumberFormatSerialTestData {\n"+
+                               "    //get Content\n"+
+                               "    public static byte[][] getContent() {\n"+
+                               "            return content;\n"+
+                               "    }\n";
+                              
+    static final String footer ="\n    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};\n"+
+                                "}\n";                           
+    public static void main(String[] args){
+        NumberFormat nf     = NumberFormat.getInstance(Locale.US);
+        NumberFormat nfc    = NumberFormat.getCurrencyInstance(Locale.US);
+        NumberFormat nfp     = NumberFormat.getPercentInstance(Locale.US);
+        NumberFormat nfsp     = NumberFormat.getScientificInstance(Locale.US);
+        
+        try{
+            FileOutputStream file = new FileOutputStream("NumberFormatSerialTestData.java");
+            file.write(header.getBytes());
+            write(file,(Object)nf,"generalInstance", "//NumberFormat.getInstance(Locale.US)");
+            write(file,(Object)nfc,"currencyInstance","//NumberFormat.getCurrencyInstance(Locale.US)");
+            write(file,(Object)nfp,"percentInstance","//NumberFormat.getPercentInstance(Locale.US)");
+            write(file,(Object)nfsp,"scientificInstance","//NumberFormat.getScientificInstance(Locale.US)");
+            file.write(footer.getBytes());            
+            file.close();
+        }catch( Exception e){
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    private static void write(FileOutputStream file,Object o ,String name,String comment){
+        try{
+            ByteArrayOutputStream bts =  new ByteArrayOutputStream();
+            ObjectOutputStream os = new ObjectOutputStream(bts);    
+            os.writeObject((Object)o);
+            os.flush();
+            os.close();
+            byte[] myArr = bts.toByteArray();
+            //String temp = new String(myArr);
+            System.out.println("    "+comment+ " :");
+            /*System.out.println("minimumIntegerDigits : "  + (temp.indexOf("minimumIntegerDigits")+"minimumIntegerDigits".length()));
+            System.out.println("maximumIntegerDigits : "  + (temp.indexOf("maximumIntegerDigits")+"maximumIntegerDigits".length()));
+            System.out.println("minimumFractionDigits : " + (temp.indexOf("minimumFractionDigits")+"minimumFractionDigits".length()));
+            System.out.println("maximumFractionDigits : " + (temp.indexOf("maximumFractionDigits")+"maximumFractionDigits".length()));
+            */
+            //file.write(myArr);
+            file.write(("\n    "+comment).getBytes());
+            file.write(new String("\n    static byte[] "+name+" = new byte[]{ \n").getBytes("UTF-8"));
+            file.write( "        ".getBytes());
+            for(int i=0; i<myArr.length; i++){
+                file.write(String.valueOf((int)myArr[i]).getBytes());
+                file.write( ", ".getBytes());
+                if((i+1)%20 == 0){
+                    file.write("\n".getBytes());
+                    file.write( "        ".getBytes());
+                }
+            }
+            file.write(new String("\n    };\n").getBytes("UTF-8"));
+        }catch( Exception e){
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+    
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/impl/TestAll.java b/src/com/ibm/icu/dev/test/impl/TestAll.java
new file mode 100644
index 0000000..f66b855
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/impl/TestAll.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.impl;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super("com.ibm.icu.dev.test.util",
+              new String[] {
+                  "ICUServiceTest",
+                  "ICUServiceThreadTest",
+                  "ICUBinaryTest",
+                  "TextTrieMapTest"
+              },
+              "Test miscellaneous implementation utilities");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Impl";
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
new file mode 100644
index 0000000..725739e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
@@ -0,0 +1,484 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.iterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.ReplaceableString;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class TestUCharacterIterator extends TestFmwk{
+
+    // constructor -----------------------------------------------------
+  
+    /**
+     * Constructor
+     */
+    public TestUCharacterIterator()
+    {
+    }
+  
+    // public methods --------------------------------------------------
+  
+    /**
+    * Testing cloning
+    */
+    public void TestClone() throws CloneNotSupportedException
+    {
+         UCharacterIterator iterator = UCharacterIterator.getInstance("testing");
+         UCharacterIterator cloned = (UCharacterIterator)iterator.clone();
+         int completed = 0;
+         while (completed != UCharacterIterator.DONE) {
+            completed = iterator.next();
+            if (completed != cloned.next()) {
+                errln("Cloned operation failed");
+            }
+         }
+    }
+    public void getText(UCharacterIterator iterator, String result){
+        /* test getText */
+        char[] buf= new char[1];
+        for(;;){
+            try{
+                iterator.getText(buf);
+                break;
+            }catch(IndexOutOfBoundsException e){
+                buf = new char[iterator.getLength()];
+            }
+        }
+        if(result.compareTo(new String(buf,0,iterator.getLength()))!=0){
+            errln("getText failed for iterator");
+        }
+    }
+    
+    /**
+     * Testing iteration
+     */
+    public void TestIteration()
+    {
+        UCharacterIterator iterator  = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        UCharacterIterator iterator2 = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        iterator.setToStart();                                               
+        if (iterator.current() != ITERATION_STRING_.charAt(0)) {
+            errln("Iterator failed retrieving first character");
+        }
+        iterator.setToLimit(); 
+        if (iterator.previous() != ITERATION_STRING_.charAt(
+                                       ITERATION_STRING_.length() - 1)) {
+            errln("Iterator failed retrieving last character");
+        }                                               
+        if (iterator.getLength() != ITERATION_STRING_.length()) {
+            errln("Iterator failed determining begin and end index");
+        }  
+        iterator2.setIndex(0);
+        iterator.setIndex(0);
+        int ch = 0;
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.nextCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.next() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in next() and nextCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.next() ||
+                    UTF16.getTrailSurrogate(ch) != iterator.next()) {
+                    errln("Error mismatch in next and nextCodePoint for " +
+                          "supplementary characters");
+                }
+            }
+        }
+        iterator.setIndex(ITERATION_STRING_.length());
+        iterator2.setIndex(ITERATION_STRING_.length());
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.previousCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.previous() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in previous() and " +
+                          "previousCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.previous() || 
+                    UTF16.getTrailSurrogate(ch) != iterator.previous()) {
+                    errln("Error mismatch in previous and " +
+                          "previousCodePoint for supplementary characters");
+                }
+            }
+        }
+    }
+    
+    public static void main(String[] arg)
+    {
+        try
+        {
+            TestUCharacterIterator test = new TestUCharacterIterator();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    //Tests for new API for utf-16 support 
+    public void TestIterationUChar32() {
+        String text="\u0061\u0062\ud841\udc02\u20ac\ud7ff\ud842\udc06\ud801\udc00\u0061";
+        int c;
+        int i;
+        {
+            UCharacterIterator iter = UCharacterIterator.getInstance(text);
+    
+            String iterText = iter.getText();
+            if (!iterText.equals(text))
+              errln("iter.getText() failed");
+            
+            iter.setIndex(1);
+            if (iter.currentCodePoint() != UTF16.charAt(text,1))
+                errln("Iterator didn't start out in the right place.");
+    
+            iter.setToStart();
+            c=iter.currentCodePoint();
+            i=0;
+            i=iter.moveCodePointIndex(1);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,1) || i!=1)
+                errln("moveCodePointIndex(1) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+    
+            i=iter.moveCodePointIndex(2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,4) || i!=4)
+                errln("moveCodePointIndex(2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,4)) + " i= " + i);
+                
+            i=iter.moveCodePointIndex(-2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,1) || i!=1)
+                 errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+
+            iter.setToLimit();
+            i=iter.moveCodePointIndex(-2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,(text.length()-3)) || i!=(text.length()-3))
+                errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,(text.length()-3)) ) + " i= " + i);
+            
+            iter.setToStart();
+            c = iter.currentCodePoint();
+            i = 0;
+    
+            //testing first32PostInc, nextCodePointPostInc, setTostart
+            i = 0;
+            iter.setToStart();
+            c =iter.next();
+            if(c != UTF16.charAt(text,i))
+                errln("first32PostInc failed.  Expected->"+hex(UTF16.charAt(text,i))+" Got-> "+hex(c));
+            if(iter.getIndex() != UTF16.getCharCount(c) + i)
+                errln("getIndex() after first32PostInc() failed");
+    
+            iter.setToStart();
+            i=0;
+            if (iter.getIndex() != 0)
+                errln("setToStart failed");
+           
+            logln("Testing forward iteration...");
+            do {
+                if (c != UCharacterIterator.DONE)
+                    c = iter.nextCodePoint();
+    
+                if(c != UTF16.charAt(text,i))
+                    errln("Character mismatch at position "+i+", iterator has "+hex(c)+", string has "+hex(UTF16.charAt(text,i)));
+    
+                i+=UTF16.getCharCount(c);
+                if(iter.getIndex() != i)
+                    errln("getIndex() aftr nextCodePointPostInc() isn't working right");
+                c = iter.currentCodePoint();                   
+                if( c!=UCharacterIterator.DONE && c != UTF16.charAt(text,i))
+                    errln("current() after nextCodePointPostInc() isn't working right");
+
+            } while (c!=UCharacterIterator.DONE);
+            c=iter.nextCodePoint();
+            if(c!= UCharacterIterator.DONE)
+                errln("nextCodePointPostInc() didn't return DONE at the beginning");
+    
+    
+        }
+    }  
+    
+    class UCharIterator {
+    
+       public UCharIterator(int[] src, int len, int index){
+            
+            s=src;
+            length=len;
+            i=index;
+       }
+    
+        public int current() {
+            if(i<length) {
+                return s[i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int next() {
+            if(i<length) {
+                return s[i++];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int previous() {
+            if(i>0) {
+                return s[--i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int getIndex() {
+            return i;
+        }
+    
+        private int[] s;
+        private int length, i;
+    }
+    public void TestPreviousNext(){
+        // src and expect strings
+        char src[]={
+                UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+                UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+                0xc4,
+                0x1ed0
+            };
+        // iterators
+        UCharacterIterator iter1 = UCharacterIterator.getInstance(new ReplaceableString(new String(src)));
+        UCharacterIterator iter2 = UCharacterIterator.getInstance(src/*char array*/);
+        UCharacterIterator iter3 = UCharacterIterator.getInstance(new StringCharacterIterator(new String(src)));
+        UCharacterIterator iter4 = UCharacterIterator.getInstance(new StringBuffer(new String(src)));
+        previousNext(iter1);
+        previousNext(iter2);
+        previousNext(iter3);
+        previousNext(iter4);
+        getText(iter1,new String(src));
+        getText(iter2,new String(src));
+        getText(iter3,new String(src));
+        /* getCharacterIterator */
+        CharacterIterator citer1 = iter1.getCharacterIterator();
+        CharacterIterator citer2 = iter2.getCharacterIterator();
+        CharacterIterator citer3 = iter3.getCharacterIterator();
+        if(citer1.first() !=iter1.current()){
+            errln("getCharacterIterator for iter1 failed");
+        }
+        if(citer2.first() !=iter2.current()){
+            errln("getCharacterIterator for iter2 failed");
+        }
+        if(citer3.first() !=iter3.current()){
+            errln("getCharacterIterator for iter3 failed");
+        }
+        /* Test clone()  && moveIndex()*/
+        try{
+            UCharacterIterator clone1 = (UCharacterIterator)iter1.clone();
+            UCharacterIterator clone2 = (UCharacterIterator)iter2.clone();
+            UCharacterIterator clone3 = (UCharacterIterator)iter3.clone();
+            if(clone1.moveIndex(3)!=iter1.moveIndex(3)){
+                errln("moveIndex for iter1 failed");
+            }
+            if(clone2.moveIndex(3)!=iter2.moveIndex(3)){
+                errln("moveIndex for iter2 failed");
+            }
+            if(clone3.moveIndex(3)!=iter3.moveIndex(3)){
+                errln("moveIndex for iter1 failed");
+            }
+        }catch (Exception e){
+            errln("could not clone the iterator");
+        }
+    }
+    public void previousNext(UCharacterIterator iter) {
+
+        int expect[]={
+            0x2f999,
+            0x1d15f,
+            0xc4,
+            0x1ed0
+        };
+    
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,0,
+            1,1,
+            2,
+            3,
+            4 //needed 
+        };
+    
+        // initial indexes into the src and expect strings
+        
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=2;
+        
+    
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+    
+        
+        UCharIterator iter32 = new UCharIterator(expect, expect.length, 
+                                                     EXPECT_MIDDLE);
+    
+        int c1, c2;
+        char m;
+    
+        // initially set the indexes into the middle of the strings
+        iter.setIndex(SRC_MIDDLE);
+    
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previousCodePoint();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.currentCodePoint();
+                c2=iter32.current();
+            } else  {// m=='+' 
+                c1=iter.nextCodePoint();
+                c2=iter32.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(expectIndex[iter.getIndex()]!=iter32.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    public void TestUCharacterIteratorWrapper(){
+        String source ="asdfasdfjoiuyoiuy2341235679886765";
+        UCharacterIterator it = UCharacterIterator.getInstance(source);
+        CharacterIterator wrap_ci = it.getCharacterIterator();
+        CharacterIterator ci = new StringCharacterIterator(source);
+        wrap_ci.setIndex(10);
+        ci.setIndex(10);
+        String moves="0+0+0--0-0-+++0--+++++++0--------++++0000----0-";
+        int c1, c2;
+        char m;
+        int movesIndex =0;
+        
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=wrap_ci.previous();
+                c2=ci.previous();
+            } else if(m=='0') {
+                c1=wrap_ci.current();
+                c2=ci.current();
+            } else  {// m=='+' 
+                c1=wrap_ci.next();
+                c2=ci.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(wrap_ci.getIndex()!=ci.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +wrap_ci.getIndex()
+                      +" expected "+ ci.getIndex());
+                break;
+            }
+        }
+        if(ci.first()!=wrap_ci.first()){
+            errln("CharacterIteratorWrapper.first() failed. expected: " + ci.first() + " got: " +wrap_ci.first());
+        }
+        if(ci.last()!=wrap_ci.last()){
+            errln("CharacterIteratorWrapper.last() failed expected: " + ci.last() + " got: " +wrap_ci.last());
+        }
+        if(ci.getBeginIndex()!=wrap_ci.getBeginIndex()){
+            errln("CharacterIteratorWrapper.getBeginIndex() failed expected: " + ci.getBeginIndex() + " got: " +wrap_ci.getBeginIndex());
+        }
+        if(ci.getEndIndex()!=wrap_ci.getEndIndex()){
+            errln("CharacterIteratorWrapper.getEndIndex() failed expected: " + ci.getEndIndex() + " got: " +wrap_ci.getEndIndex());
+        }
+        try{
+            CharacterIterator cloneWCI = (CharacterIterator) wrap_ci.clone();
+            if(wrap_ci.getIndex()!=cloneWCI.getIndex()){
+                errln("CharacterIteratorWrapper.clone() failed expected: " +wrap_ci.getIndex() + " got: " + cloneWCI.getIndex());
+            }
+        }catch(Exception e){
+             errln("CharacterIterator.clone() failed");
+        }
+    }
+    // private data members ---------------------------------------------
+    
+    private static final String ITERATION_STRING_ =
+                                        "Testing 1 2 3 \ud800\udc00 456";
+    private static final int ITERATION_SUPPLEMENTARY_INDEX = 14;
+    
+    public void TestJitterbug1952(){
+        //test previous code point
+        char[] src = new char[]{ '\uDC00','\uD800','\uDC01','\uD802','\uDC02','\uDC03'};
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        iter.setIndex(1);
+        int ch;
+        // this should never go into a infinite loop
+        // if it does then we have a problem
+        while((ch=iter.previousCodePoint())!=UCharacterIterator.DONE){
+            if(ch!=0xDc00){
+                errln("iter.previousCodePoint() failed");
+            }
+        }
+        iter.setIndex(5);
+        while((ch=iter.nextCodePoint()) !=UCharacterIterator.DONE){
+            if(ch!= 0xDC03){
+                errln("iter.nextCodePoint() failed");
+            } 
+        }      
+    }
+        
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestAll.java b/src/com/ibm/icu/dev/test/lang/TestAll.java
new file mode 100644
index 0000000..6e72fe1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestAll.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run character property tests.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] { 
+                  "TestCharacter", 
+                  "TestUScript", 
+                  "TestUScriptRun" 
+              },
+              "Character and Script Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Property";
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestCharacter.java b/src/com/ibm/icu/dev/test/lang/TestCharacter.java
new file mode 100644
index 0000000..3a4f0b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestCharacter.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestCharacter extends TestGroup {
+    public static void main(String[] args) {
+        new TestCharacter().run(args);
+    }
+
+    public TestCharacter() {
+        super(
+              new String[] { 
+                  "UCharacterTest", 
+                  "UCharacterCaseTest",
+                  "UCharacterCategoryTest", 
+                  "UCharacterDirectionTest", 
+                  "UPropertyAliasesTest",
+                  "UTF16Test",
+                  "UCharacterSurrogateTest",
+                  "UCharacterThreadTest"
+              },
+              "Character Property and UTF16 Tests");
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScript.java b/src/com/ibm/icu/dev/test/lang/TestUScript.java
new file mode 100644
index 0000000..9665019
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -0,0 +1,410 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class TestUScript extends TestFmwk {
+
+    /**
+    * Constructor
+    */
+    public TestUScript()
+    {
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestUScript().run(args);
+    }
+    public void TestLocaleGetCode(){
+        final ULocale[] testNames={
+        /* test locale */
+        new ULocale("en"), new ULocale("en_US"),
+        new ULocale("sr"), new ULocale("ta") ,
+        new ULocale("te_IN"),
+        new ULocale("hi"),
+        new ULocale("he"), new ULocale("ar"),
+        new ULocale("abcde"),
+        new ULocale("abcde_cdef"),
+        new ULocale("iw")
+        };
+        final int[] expected ={
+                /* locales should return */
+                UScript.LATIN, UScript.LATIN,
+                UScript.CYRILLIC, UScript.TAMIL,
+                UScript.TELUGU,UScript.DEVANAGARI,
+                UScript.HEBREW, UScript.ARABIC,
+                UScript.INVALID_CODE,UScript.INVALID_CODE,
+                UScript.HEBREW
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+
+            if(code==null){
+                if(expected[i]!=UScript.INVALID_CODE){
+                    logln("Error getting script code Got: null" + " Expected: " +expected[i] +" for name "+testNames[i]);
+                    numErrors++;
+                }
+                // getCode returns null if the code could not be found
+                continue;
+            }
+            if((code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        reportDataErrors(numErrors);
+        
+        // 
+        ULocale defaultLoc = ULocale.getDefault(); 
+        ULocale esparanto = new ULocale("eo_DE");
+        ULocale.setDefault(esparanto);
+        int[] code = UScript.getCode(esparanto); 
+        if(code != null){
+            if( code[0] != UScript.LATIN){
+                errln("Did not get the expected script code for Esparanto");
+            }
+        }else{
+            warnln("Could not load the locale data.");
+        }
+        ULocale.setDefault(defaultLoc);
+    }
+
+    private void reportDataErrors(int numErrors) {
+        if (numErrors >0) {
+            // assume missing locale data, so not an error, just a warning
+            if (isModularBuild() || noData()) {
+                // if nodata is set don't even warn
+                warnln("Could not find locale data");
+            } else {
+                errln("encountered " + numErrors + " errors.");
+            }
+        }
+    }
+
+    public void TestMultipleCode(){
+        final String[] testNames = { "ja" ,"ko_KR","zh","zh_TW"};
+        final int[][] expected = {
+                                {UScript.KATAKANA,UScript.HIRAGANA,UScript.HAN},
+                                {UScript.HANGUL, UScript.HAN},
+                                {UScript.HAN},
+                                {UScript.HAN,UScript.BOPOMOFO}
+                              };
+
+        int numErrors = 0;
+        for(int i=0; i<testNames.length;i++){
+            int[] code = UScript.getCode(testNames[i]);
+            int[] expt = (int[]) expected[i];
+            if(code!=null){
+                for(int j =0; j< code.length;j++){
+                    if(code[j]!=expt[j]){
+                        numErrors++;
+                        logln("Error getting script code Got: " +code[j] + " Expected: " +expt[j] +" for name "+testNames[i]);
+                    }
+                }
+            }else{
+                numErrors++;
+                logln("Error getting script code for name "+testNames[i]);
+            }
+        }
+        reportDataErrors(numErrors);
+        
+        //cover UScript.getCode(Locale)
+        Locale[] testLocales = new Locale[] {
+            Locale.JAPANESE,
+            Locale.KOREA,
+            Locale.CHINESE,
+            Locale.TAIWAN };
+        logln("Testing UScript.getCode(Locale) ...");
+        numErrors = 0;
+        for(int i=0; i<testNames.length;i++){
+            logln("  Testing locale: " + testLocales[i].getDisplayName());
+            int[] code = UScript.getCode(testLocales[i]);
+            int[] expt = (int[]) expected[i];
+            if(code!=null){
+                for(int j =0; j< code.length;j++){
+                    if(code[j]!=expt[j]){
+                        numErrors++;
+                        logln("  Error getting script code Got: " +code[j] + " Expected: " +expt[j] +" for name "+testNames[i]);
+                    }
+                }
+            }else{
+                numErrors++;
+                logln("  Error getting script code for name "+testNames[i]);
+            }
+        }
+        reportDataErrors(numErrors);                 
+    }
+
+    public void TestGetCode(){
+
+        final String[] testNames={
+            /* test locale */
+            "en", "en_US", "sr", "ta", "gu", "te_IN", 
+            "hi", "he", "ar",
+            /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Lao",
+            "Latn",/*"Latf","Latg",*/
+            "Mlym", "Mong",
+
+            /* test names */
+            "CYRILLIC","DESERET","DEVANAGARI","ETHIOPIC","GEORGIAN",
+            "GOTHIC",  "GREEK",  "GUJARATI", "COMMON", "INHERITED",
+            /* test lower case names */
+            "malayalam", "mongolian", "myanmar", "ogham", "old-italic",
+            "oriya",     "runic",     "sinhala", "syriac","tamil",
+            "telugu",    "thaana",    "thai",    "tibetan",
+            /* test the bounds*/
+            "Cans", "arabic","Yi","Zyyy"
+        };
+        final int[] expected ={
+            /* locales should return */
+            UScript.LATIN, UScript.LATIN,
+            UScript.CYRILLIC, UScript.TAMIL, UScript.GUJARATI,
+            UScript.TELUGU,UScript.DEVANAGARI,
+            UScript.HEBREW, UScript.ARABIC,
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN,/* UScript.LATIN, UScript.LATIN,*/
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI, UScript.COMMON, UScript.INHERITED,
+            /* lower case names should return */
+            UScript.MALAYALAM, UScript.MONGOLIAN, UScript.MYANMAR, UScript.OGHAM, UScript.OLD_ITALIC,
+            UScript.ORIYA, UScript.RUNIC, UScript.SINHALA, UScript.SYRIAC, UScript.TAMIL,
+            UScript.TELUGU, UScript.THAANA, UScript.THAI, UScript.TIBETAN,
+            /* bounds */
+            UScript.CANADIAN_ABORIGINAL, UScript.ARABIC, UScript.YI, UScript.COMMON
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+            if(code == null){
+                if(expected[i]==UScript.INVALID_CODE){
+                    // getCode returns null if the code could not be found
+                    continue;
+                }
+                // currently commented out until jitterbug#2678 is fixed
+                logln("Error getting script code Got: null" + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+                continue;
+            }
+            if((code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        reportDataErrors(numErrors);
+    }
+
+    public void TestGetName(){
+
+        final int[] testCodes={
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI,
+        };
+
+        final String[] expectedNames={
+
+            /* test names */
+            "Cyrillic","Deseret","Devanagari","Ethiopic","Georgian",
+            "Gothic",  "Greek",  "Gujarati",
+        };
+        int i =0;
+        int numErrors=0;
+        while(i< testCodes.length){
+            String scriptName  = UScript.getName(testCodes[i]);
+            if(!expectedNames[i].equals(scriptName)){
+                logln("Error getting abbreviations Got: " +scriptName +" Expected: "+expectedNames[i]);
+                numErrors++;
+            }
+            i++;
+        }
+        if(numErrors >0 ){
+            warnln("encountered " + numErrors + " errors in UScript.getName()");
+        }
+
+    }
+    public void TestGetShortName(){
+        final int[] testCodes={
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN,
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+        };
+
+        final String[] expectedAbbr={
+              /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Laoo",
+            "Latn",
+            "Mlym", "Mong",
+        };
+        int i=0;
+        int numErrors=0;
+        while(i<testCodes.length){
+            String  shortName = UScript.getShortName(testCodes[i]);
+            if(!expectedAbbr[i].equals(shortName)){
+                logln("Error getting abbreviations Got: " +shortName+ " Expected: " +expectedAbbr[i]);
+                numErrors++;
+            }
+            i++;
+        }
+        if(numErrors >0 ){
+            warnln("encountered " + numErrors + " errors in UScript.getShortName()");
+        }
+    }
+    public void TestGetScript(){
+        int codepoints[][] = new int[][] {
+                {0x0000FF9D, UScript.KATAKANA },
+                {0x0000FFBE, UScript.HANGUL },
+                {0x0000FFC7, UScript.HANGUL },
+                {0x0000FFCF, UScript.HANGUL },
+                {0x0000FFD7, UScript.HANGUL}, 
+                {0x0000FFDC, UScript.HANGUL},
+                {0x00010300, UScript.OLD_ITALIC},
+                {0x00010330, UScript.GOTHIC},
+                {0x0001034A, UScript.GOTHIC},
+                {0x00010400, UScript.DESERET},
+                {0x00010428, UScript.DESERET},
+                {0x0001D167, UScript.INHERITED},
+                {0x0001D17B, UScript.INHERITED},
+                {0x0001D185, UScript.INHERITED},
+                {0x0001D1AA, UScript.INHERITED},
+                {0x00020000, UScript.HAN},
+                {0x00000D02, UScript.MALAYALAM},
+                {0x00000D00, UScript.UNKNOWN},
+                {0x00000000, UScript.COMMON},
+                {0x0001D169, UScript.INHERITED },
+                {0x0001D182, UScript.INHERITED },
+                {0x0001D18B, UScript.INHERITED },
+                {0x0001D1AD, UScript.INHERITED },
+        };
+
+        int i =0;
+        int code = UScript.INVALID_CODE;
+        boolean passed = true;
+
+        while(i< codepoints.length){
+            code = UScript.getScript(codepoints[i][0]);
+
+            if(code != codepoints[i][1]){
+                logln("UScript.getScript for codepoint 0x"+ hex(codepoints[i][0])+" failed");
+                passed = false;
+            }
+
+            i++;
+        }
+        if(!passed){
+           errln("UScript.getScript failed.");
+        }
+    }
+    public void TestScriptNames(){
+        for(int i=0; i<UScript.CODE_LIMIT;i++){
+            String name = UScript.getName(i);
+            if(name.equals("") ){
+                errln("FAILED: getName for code : "+i);
+            }
+            String shortName= UScript.getShortName(i);
+            if(shortName.equals("")){
+                errln("FAILED: getName for code : "+i);
+            }
+        }
+    }
+    public void TestAllCodepoints(){
+        int code;
+        //String oldId="";
+        //String oldAbbrId="";
+        for( int i =0; i <= 0x10ffff; i++){
+          code =UScript.INVALID_CODE;
+          code = UScript.getScript(i);
+          if(code==UScript.INVALID_CODE){
+                errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+          String id =UScript.getName(code);
+          if(id.indexOf("INVALID")>=0){
+                 errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+          String abbr = UScript.getShortName(code);
+          if(abbr.indexOf("INV")>=0){
+                 errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+        }
+    }
+    public void TestNewCode(){
+        /*
+         * These script codes were originally added to ICU pre-3.6, so that ICU would
+         * have all ISO 15924 script codes. ICU was then based on Unicode 4.1.
+         * These script codes were added with only short names because we don't
+         * want to invent long names ourselves.
+         * Unicode 5 and later encode some of these scripts and give them long names.
+         * Whenever this happens, the long script names here need to be updated.
+         */
+        String[] expectedLong = new String[]{
+            "Balinese", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp", 
+            "Geok", "Hans", "Hant", "Hmng", "Hung", "Inds", "Java", "Kayah_Li", "Latf", "Latg", 
+            "Lepcha", "Lina", "Mand", "Maya", "Mero", "Nko", "Orkh", "Perm", "Phags_Pa", "Phoenician", 
+            "Plrd", "Roro", "Sara", "Syre", "Syrj", "Syrn", "Teng", "Vai", "Visp", "Cuneiform", 
+            "Zxxx", "Unknown",
+            "Carian", "Jpan", "Lana", "Lycian", "Lydian", "Ol_Chiki", "Rejang", "Saurashtra", "Sgnw", "Sundanese",
+            "Moon", "Mtei",
+
+            // ICU 4.0
+            "Armi", "Avst", "Cakm", "Kore", "Kthi", "Mani", "Phli", "Phlp", "Phlv", "Prti",
+            "Samr", "Tavt", "Zmth", "Zsym",
+        };
+        String[] expectedShort = new String[]{
+            "Bali", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp", 
+            "Geok", "Hans", "Hant", "Hmng", "Hung", "Inds", "Java", "Kali", "Latf", "Latg", 
+            "Lepc", "Lina", "Mand", "Maya", "Mero", "Nkoo", "Orkh", "Perm", "Phag", "Phnx", 
+            "Plrd", "Roro", "Sara", "Syre", "Syrj", "Syrn", "Teng", "Vaii", "Visp", "Xsux", 
+            "Zxxx", "Zzzz",
+            "Cari", "Jpan", "Lana", "Lyci", "Lydi", "Olck", "Rjng", "Saur", "Sgnw", "Sund",
+            "Moon", "Mtei", 
+
+            // ICU 4.0
+            "Armi", "Avst", "Cakm", "Kore", "Kthi", "Mani", "Phli", "Phlp", "Phlv", "Prti",
+            "Samr", "Tavt", "Zmth", "Zsym",
+        };
+        int j = 0;
+        int i = 0;
+        for(i=UScript.BALINESE; i<UScript.CODE_LIMIT; i++, j++){
+            String name = UScript.getName(i);
+            if(name==null || !name.equals(expectedLong[j])){
+                errln("UScript.getName failed for code"+ i + name +"!=" +expectedLong[j]);
+            }
+            name = UScript.getShortName(i);
+            if(name==null || !name.equals(expectedShort[j])){
+                errln("UScript.getShortName failed for code"+ i + name +"!=" +expectedShort[j]);
+            }
+        }
+        for(i=0; i<expectedLong.length; i++){
+            int[] ret = UScript.getCode(expectedShort[i]);
+            if(ret.length>1){
+                errln("UScript.getCode did not return expected number of codes for script"+ expectedShort[i]+". EXPECTED: 1 GOT: "+ ret.length);
+            }
+            if(ret[0]!= (UScript.BALINESE+i)){
+                errln("UScript.getCode did not return expected code for script"+ expectedShort[i]+". EXPECTED: "+ (UScript.BALINESE+i)+" GOT: %i\n"+ ret[0] );
+            }
+        }
+    }
+ }
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
new file mode 100644
index 0000000..86b8acf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
@@ -0,0 +1,402 @@
+/**
+*******************************************************************************
+* Copyright (C) 1999-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UScriptRun;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class TestUScriptRun extends TestFmwk
+{
+    public TestUScriptRun()
+    {
+        // nothing
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestUScriptRun().run(args);
+    }
+
+    private static final class RunTestData
+    {
+        String runText;
+        int    runScript;
+        
+        public RunTestData(String theText, int theScriptCode)
+        {
+            runText   = theText;
+            runScript = theScriptCode;
+        }
+    }
+    
+    private static final RunTestData[][] m_testData = {
+        {
+            new RunTestData("\u0020\u0946\u0939\u093F\u0928\u094D\u0926\u0940\u0020", UScript.DEVANAGARI),
+            new RunTestData("\u0627\u0644\u0639\u0631\u0628\u064A\u0629\u0020", UScript.ARABIC),
+            new RunTestData("\u0420\u0443\u0441\u0441\u043A\u0438\u0439\u0020", UScript.CYRILLIC),
+            new RunTestData("English (", UScript.LATIN),
+            new RunTestData("\u0E44\u0E17\u0E22", UScript.THAI),
+            new RunTestData(") ", UScript.LATIN),
+            new RunTestData("\u6F22\u5B75", UScript.HAN),
+            new RunTestData("\u3068\u3072\u3089\u304C\u306A\u3068", UScript.HIRAGANA),
+            new RunTestData("\u30AB\u30BF\u30AB\u30CA", UScript.KATAKANA),
+            new RunTestData("\uD801\uDC00\uD801\uDC01\uD801\uDC02\uD801\uDC03", UScript.DESERET),
+        },
+        {
+            new RunTestData("((((((((((abc))))))))))", UScript.LATIN)
+        }
+    };
+    
+    private static final String padding = "This string is used for padding...";
+    
+    private void CheckScriptRuns(UScriptRun scriptRun, int[] runStarts, RunTestData[] testData)
+    {
+        int run, runStart, runLimit;
+        int runScript;
+
+        /* iterate over all the runs */
+        run = 0;
+        while (scriptRun.next()) {
+            runStart  = scriptRun.getScriptStart();
+            runLimit  = scriptRun.getScriptLimit();
+            runScript = scriptRun.getScriptCode();
+            
+            if (runStart != runStarts[run]) {
+                errln("Incorrect start offset for run " + run + ": expected " + runStarts[run] + ", got " + runStart);
+            }
+
+            if (runLimit != runStarts[run + 1]) {
+                errln("Incorrect limit offset for run " + run + ": expected " + runStarts[run + 1] + ", got " + runLimit);
+            }
+
+            if (runScript != testData[run].runScript) {
+                errln("Incorrect script for run " + run + ": expected \"" + UScript.getName(testData[run].runScript) + "\", got \"" + UScript.getName(runScript) + "\"");
+            }
+            
+            run += 1;
+
+            /* stop when we've seen all the runs we expect to see */
+            if (run >= testData.length) {
+                break;
+            }
+        }
+
+        /* Complain if we didn't see then number of runs we expected */
+        if (run != testData.length) {
+            errln("Incorrect number of runs: expected " + testData.length + ", got " + run);
+        }
+    }
+
+    public void TestContstruction()
+    {
+        UScriptRun scriptRun = null;
+        char[] nullChars  = null, dummyChars  = {'d', 'u', 'm', 'm', 'y'};
+        String nullString = null, dummyString = new String(dummyChars);
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, 100);
+            errln("new UScriptRun(nullString, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 100, 0);
+            errln("new UScriptRun(nullString, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, -100);
+            errln("new UScriptRun(nullString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, -100, 0);
+            errln("new UScriptRun(nullString, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, 100);
+            errln("new UScriptRun(nullChars, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 100, 0);
+            errln("new UScriptRun(nullChars, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, -100);
+            errln("new UScriptRun(nullChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, -100, 0);
+            errln("new UScriptRun(nullChars, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, 6);
+            errln("new UScriptRun(dummyString, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 6, 0);
+            errln("new UScriptRun(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, -100);
+            errln("new UScriptRun(dummyString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, 6);
+            errln("new UScriptRun(dummyChars, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 6, 0);
+            errln("new UScriptRun(dummyChars, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, -100);
+            errln("new UScriptRun(dummyChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        if(scriptRun!=null){
+            errln("Did not get the expected Exception");
+        }
+    }
+    
+    public void TestReset()
+    {
+        UScriptRun scriptRun = null;
+        char[] dummy = {'d', 'u', 'm', 'm', 'y'};
+        
+        try {
+            scriptRun = new UScriptRun();
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun() produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset(0, 100);
+            errln("scriptRun.reset(0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(100, 0);
+            errln("scriptRun.reset(100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(0, -100);
+            errln("scriptRun.reset(0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(-100, 0);
+            errln("scriptRun.reset(-100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, 6);
+            errln("scriptRun.reset(dummy, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 6, 0);
+            errln("scriptRun.reset(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, -100);
+            errln("scriptRun.reset(dummy, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, -100, 0);
+            errln("scriptRun.reset(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, dummy.length);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset(dummy, 0, dummy.length) produced an IllegalArgumentException!");
+        }
+        
+        
+        try {
+            scriptRun.reset(0, 6);
+            errln("scriptRun.reset(0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(6, 0);
+            errln("scriptRun.reset(6, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+    }
+    
+    public void TestRuns()
+    {
+        for (int i = 0; i < m_testData.length; i += 1) {
+            RunTestData[] test = m_testData[i];
+            int stringLimit = 0;
+            int[] runStarts = new int[test.length + 1];
+            String testString = "";
+            UScriptRun scriptRun = null;
+        
+            /*
+             * Fill in the test string and the runStarts array.
+             */
+            for (int run = 0; run < test.length; run += 1) {
+                runStarts[run] = stringLimit;
+                stringLimit += test[run].runText.length();
+                testString  += test[run].runText;
+            }
+
+            /* The limit of the last run */ 
+            runStarts[test.length] = stringLimit;
+        
+            try {
+                scriptRun = new UScriptRun(testString);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun(testString) produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset();
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun = new UScriptRun(testString.toCharArray());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun(testString.toCharArray()) produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset();
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun = new UScriptRun();
+            
+                if (scriptRun.next()) {
+                    errln("scriptRun.next() on an empty UScriptRun returned true!");
+                }
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun() produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset(testString, 0, testString.length());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(testString, 0, testString.length) produced an IllegalArgumentException!");
+            }
+
+            try {
+                scriptRun.reset(testString.toCharArray(), 0, testString.length());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(testString.toCharArray(), 0, testString.length) produced an IllegalArgumentException!");
+            }
+
+            String paddedTestString = padding + testString + padding;
+            int startOffset = padding.length();
+            int count = testString.length();
+            
+            for (int run = 0; run < runStarts.length; run += 1) {
+                runStarts[run] += startOffset;
+            }
+            
+            try {
+                scriptRun.reset(paddedTestString, startOffset, count);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(paddedTestString, startOffset, count) produced an IllegalArgumentException!");
+            }
+
+            try {
+                scriptRun.reset(paddedTestString.toCharArray(), startOffset, count);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(paddedTestString.toCharArray(), startOffset, count) produced an IllegalArgumentException!");
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
new file mode 100644
index 0000000..c5d6224
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
@@ -0,0 +1,952 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.lang;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+import java.io.BufferedReader;
+import java.util.Vector;
+
+
+/**
+* <p>Testing character casing</p>
+* <p>Mostly following the test cases in strcase.cpp for ICU</p>
+* @author Syn Wee Quek
+* @since march 14 2002
+*/
+public final class UCharacterCaseTest extends TestFmwk
+{
+    // constructor -----------------------------------------------------------
+
+    /**
+     * Constructor
+     */
+    public UCharacterCaseTest()
+    {
+    }
+
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            UCharacterCaseTest test = new UCharacterCaseTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Testing the uppercase and lowercase function of UCharacter
+     */
+    public void TestCharacter()
+    {
+        for (int i = 0; i < CHARACTER_LOWER_.length; i ++) {
+            if (UCharacter.isLetter(CHARACTER_LOWER_[i]) &&
+                !UCharacter.isLowerCase(CHARACTER_LOWER_[i])) {
+                errln("FAIL isLowerCase test for \\u" +
+                      hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (UCharacter.isLetter(CHARACTER_UPPER_[i]) &&
+                !(UCharacter.isUpperCase(CHARACTER_UPPER_[i]) ||
+                  UCharacter.isTitleCase(CHARACTER_UPPER_[i]))) {
+                errln("FAIL isUpperCase test for \\u" +
+                      hex(CHARACTER_UPPER_[i]));
+                break;
+            }
+            if (CHARACTER_LOWER_[i] !=
+                UCharacter.toLowerCase(CHARACTER_UPPER_[i]) ||
+                (CHARACTER_UPPER_[i] !=
+                UCharacter.toUpperCase(CHARACTER_LOWER_[i]) &&
+                CHARACTER_UPPER_[i] !=
+                UCharacter.toTitleCase(CHARACTER_LOWER_[i]))) {
+                errln("FAIL case conversion test for \\u" +
+                      hex(CHARACTER_UPPER_[i]) +
+                      " to \\u" + hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (CHARACTER_LOWER_[i] !=
+                UCharacter.toLowerCase(CHARACTER_LOWER_[i])) {
+                errln("FAIL lower case conversion test for \\u" +
+                      hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (CHARACTER_UPPER_[i] !=
+                UCharacter.toUpperCase(CHARACTER_UPPER_[i]) &&
+                CHARACTER_UPPER_[i] !=
+                UCharacter.toTitleCase(CHARACTER_UPPER_[i])) {
+                errln("FAIL upper case conversion test for \\u" +
+                      hex(CHARACTER_UPPER_[i]));
+                break;
+            }
+            logln("Ok    \\u" + hex(CHARACTER_UPPER_[i]) + " and \\u" +
+                  hex(CHARACTER_LOWER_[i]));
+        }
+    }
+
+    public void TestFolding()
+    {
+        // test simple case folding
+        for (int i = 0; i < FOLDING_SIMPLE_.length; i += 3) {
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], true) !=
+                FOLDING_SIMPLE_[i + 1]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", true) should be \\u" + hex(FOLDING_SIMPLE_[i + 1]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], 
+                                    UCharacter.FOLD_CASE_DEFAULT) !=
+                                                      FOLDING_SIMPLE_[i + 1]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", UCharacter.FOLD_CASE_DEFAULT) should be \\u" 
+                      + hex(FOLDING_SIMPLE_[i + 1]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], false) !=
+                FOLDING_SIMPLE_[i + 2]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", false) should be \\u" + hex(FOLDING_SIMPLE_[i + 2]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], 
+                                    UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I) !=
+                                    FOLDING_SIMPLE_[i + 2]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I) should be \\u" 
+                      + hex(FOLDING_SIMPLE_[i + 2]));
+            }
+        }
+
+        // Test full string case folding with default option and separate
+        // buffers
+        if (!FOLDING_DEFAULT_[0].equals(UCharacter.foldCase(FOLDING_MIXED_[0], true))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", true)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], true)) +
+                  " should be " + prettify(FOLDING_DEFAULT_[0]));
+        }
+        
+        if (!FOLDING_DEFAULT_[0].equals(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_DEFAULT))) {
+                    errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                          ", UCharacter.FOLD_CASE_DEFAULT)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_DEFAULT))
+                          + " should be " + prettify(FOLDING_DEFAULT_[0]));
+                }
+
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[0].equals(
+                            UCharacter.foldCase(FOLDING_MIXED_[0], false))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", false)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], false))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[0]));
+        }
+        
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[0].equals(
+                                    UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[0]));
+        }
+
+        if (!FOLDING_DEFAULT_[1].equals(UCharacter.foldCase(FOLDING_MIXED_[1], true))) {
+           errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                 ", true)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], true))
+                 + " should be " + prettify(FOLDING_DEFAULT_[1]));
+        }
+
+        if (!FOLDING_DEFAULT_[1].equals(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_DEFAULT))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                         ", UCharacter.FOLD_CASE_DEFAULT)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_DEFAULT))
+                         + " should be " + prettify(FOLDING_DEFAULT_[1]));
+        }
+        
+        // alternate handling for dotted I/dotless i (U+0130, U+0131)
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[1].equals(
+                        UCharacter.foldCase(FOLDING_MIXED_[1], false))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                  ", false)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], false))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[1]));
+        }
+        
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[1].equals(
+                                UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                  ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))
+                  + " should be "
+                  + prettify(FOLDING_EXCLUDE_SPECIAL_I_[1]));
+        }
+    }
+
+    /**
+     * Testing the strings case mapping methods
+     */
+    public void TestUpper()
+    {
+        // uppercase with root locale and in the same buffer
+        if (!UPPER_ROOT_.equals(UCharacter.toUpperCase(UPPER_BEFORE_))) {
+            errln("Fail " + UPPER_BEFORE_ + " after uppercase should be " +
+                  UPPER_ROOT_ + " instead got " +
+                  UCharacter.toUpperCase(UPPER_BEFORE_));
+        }
+
+        // uppercase with turkish locale and separate buffers
+        if (!UPPER_TURKISH_.equals(UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                                         UPPER_BEFORE_))) {
+            errln("Fail " + UPPER_BEFORE_ +
+                  " after turkish-sensitive uppercase should be " +
+                  UPPER_TURKISH_ + " instead of " +
+                  UCharacter.toUpperCase(TURKISH_LOCALE_, UPPER_BEFORE_));
+        }
+
+        // uppercase a short string with root locale
+        if (!UPPER_MINI_UPPER_.equals(UCharacter.toUpperCase(UPPER_MINI_))) {
+            errln("error in toUpper(root locale)=\"" + UPPER_MINI_ +
+                  "\" expected \"" + UPPER_MINI_UPPER_ + "\"");
+        }
+
+        if (!SHARED_UPPERCASE_TOPKAP_.equals(
+                       UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_))) {
+            errln("toUpper failed: expected \"" +
+                  SHARED_UPPERCASE_TOPKAP_ + "\", got \"" +
+                  UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_TURKISH_.equals(
+                  UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                         SHARED_LOWERCASE_TOPKAP_))) {
+            errln("toUpper failed: expected \"" +
+                  SHARED_UPPERCASE_TURKISH_ + "\", got \"" +
+                  UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                     SHARED_LOWERCASE_TOPKAP_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_GERMAN_.equals(
+                UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                       SHARED_LOWERCASE_GERMAN_))) {
+            errln("toUpper failed: expected \"" + SHARED_UPPERCASE_GERMAN_
+                  + "\", got \"" + UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                        SHARED_LOWERCASE_GERMAN_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_GREEK_.equals(
+                UCharacter.toUpperCase(SHARED_LOWERCASE_GREEK_))) {
+            errln("toLower failed: expected \"" + SHARED_UPPERCASE_GREEK_ +
+                  "\", got \"" + UCharacter.toUpperCase(
+                                        SHARED_LOWERCASE_GREEK_) + "\".");
+        }
+    }
+
+    public void TestLower()
+    {
+        if (!LOWER_ROOT_.equals(UCharacter.toLowerCase(LOWER_BEFORE_))) {
+            errln("Fail " + LOWER_BEFORE_ + " after lowercase should be " +
+                  LOWER_ROOT_ + " instead of " +
+                  UCharacter.toLowerCase(LOWER_BEFORE_));
+        }
+
+        // lowercase with turkish locale
+        if (!LOWER_TURKISH_.equals(UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                                          LOWER_BEFORE_))) {
+            errln("Fail " + LOWER_BEFORE_ +
+                  " after turkish-sensitive lowercase should be " +
+                  LOWER_TURKISH_ + " instead of " +
+                  UCharacter.toLowerCase(TURKISH_LOCALE_, LOWER_BEFORE_));
+        }
+        if (!SHARED_LOWERCASE_ISTANBUL_.equals(
+                     UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_))) {
+            errln("1. toLower failed: expected \"" +
+                  SHARED_LOWERCASE_ISTANBUL_ + "\", got \"" +
+              UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_) + "\".");
+        }
+
+        if (!SHARED_LOWERCASE_TURKISH_.equals(
+                UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                       SHARED_UPPERCASE_ISTANBUL_))) {
+            errln("2. toLower failed: expected \"" +
+                  SHARED_LOWERCASE_TURKISH_ + "\", got \"" +
+                  UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                SHARED_UPPERCASE_ISTANBUL_) + "\".");
+        }
+        if (!SHARED_LOWERCASE_GREEK_.equals(
+                UCharacter.toLowerCase(GREEK_LOCALE_,
+                                       SHARED_UPPERCASE_GREEK_))) {
+            errln("toLower failed: expected \"" + SHARED_LOWERCASE_GREEK_ +
+                  "\", got \"" + UCharacter.toLowerCase(GREEK_LOCALE_,
+                                        SHARED_UPPERCASE_GREEK_) + "\".");
+        }
+    }
+
+    public void TestTitleRegression() throws java.io.IOException {
+        UCaseProps props = new UCaseProps();
+        int type = props.getTypeOrIgnorable('\'');
+        assertEquals("Case Ignorable check", -1, type); // should be case-ignorable (-1)
+        UnicodeSet allCaseIgnorables = new UnicodeSet();
+        for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+            if (props.getTypeOrIgnorable(cp) < 0) {
+                allCaseIgnorables.add(cp);
+            }
+        }
+        logln(allCaseIgnorables.toString());
+        assertEquals("Titlecase check",
+                "The Quick Brown Fox Can't Jump Over The Lazy Dogs.",
+                UCharacter.toTitleCase(ULocale.ENGLISH, "THE QUICK BROWN FOX CAN'T JUMP OVER THE LAZY DOGS.", null));
+    }
+
+    public void TestTitle()
+    {
+         try{ 
+            for (int i = 0; i < TITLE_DATA_.length;) {
+                String test = TITLE_DATA_[i++];
+                String expected = TITLE_DATA_[i++];
+                ULocale locale = new ULocale(TITLE_DATA_[i++]);
+                int breakType = Integer.parseInt(TITLE_DATA_[i++]);
+                String optionsString = TITLE_DATA_[i++];
+                BreakIterator iter =
+                    breakType >= 0 ?
+                        BreakIterator.getBreakInstance(locale, breakType) :
+                        breakType == -2 ?
+                            // Open a trivial break iterator that only delivers { 0, length }
+                            // or even just { 0 } as boundaries.
+                            new RuleBasedBreakIterator(".*;") :
+                            null;
+                int options = 0;
+                if (optionsString.indexOf('L') >= 0) {
+                    options |= UCharacter.TITLECASE_NO_LOWERCASE;
+                }
+                if (optionsString.indexOf('A') >= 0) {
+                    options |= UCharacter.TITLECASE_NO_BREAK_ADJUSTMENT;
+                }
+                String result = UCharacter.toTitleCase(locale, test, iter, options);
+                if (!expected.equals(result)) {
+                    errln("titlecasing for " + prettify(test) + " (options " + options + ") should be " +
+                          prettify(expected) + " but got " +
+                          prettify(result));
+                }
+                if (options == 0) {
+                    result = UCharacter.toTitleCase(locale, test, iter);
+                    if (!expected.equals(result)) {
+                        errln("titlecasing for " + prettify(test) + " should be " +
+                              prettify(expected) + " but got " +
+                              prettify(result));
+                    }
+                }
+            }
+         }catch(Exception ex){
+            warnln("Could not find data for BreakIterators");
+         }
+    }
+
+    public void TestDutchTitle() {
+        ULocale LOC_DUTCH = new ULocale("nl");
+        int options = 0;
+        options |= UCharacter.TITLECASE_NO_LOWERCASE;
+        BreakIterator iter = BreakIterator.getWordInstance(LOC_DUTCH);
+
+        assertEquals("Dutch titlecase check in English",
+                "Ijssel Igloo Ijmuiden",
+                UCharacter.toTitleCase(ULocale.ENGLISH, "ijssel igloo IJMUIDEN", null));
+
+        assertEquals("Dutch titlecase check in Dutch",
+                "IJssel Igloo IJmuiden",
+                UCharacter.toTitleCase(LOC_DUTCH, "ijssel igloo IJMUIDEN", null));
+
+        iter.setText("ijssel igloo IjMUIdEN iPoD ijenough");
+        assertEquals("Dutch titlecase check in Dutch with nolowercase option",
+                "IJssel Igloo IJMUIdEN IPoD IJenough",
+                UCharacter.toTitleCase(LOC_DUTCH, "ijssel igloo IjMUIdEN iPoD ijenough", iter, options));
+    }
+
+    public void TestSpecial()
+    {
+        for (int i = 0; i < SPECIAL_LOCALES_.length; i ++) {
+            int    j      = i * 3;
+            Locale locale = SPECIAL_LOCALES_[i];
+            String str    = SPECIAL_DATA_[j];
+            if (locale != null) {
+                if (!SPECIAL_DATA_[j + 1].equals(
+                     UCharacter.toLowerCase(locale, str))) {
+                    errln("error lowercasing special characters " +
+                        hex(str) + " expected " + hex(SPECIAL_DATA_[j + 1])
+                        + " for locale " + locale.toString() + " but got " +
+                        hex(UCharacter.toLowerCase(locale, str)));
+                }
+                if (!SPECIAL_DATA_[j + 2].equals(
+                     UCharacter.toUpperCase(locale, str))) {
+                    errln("error uppercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 2]
+                        + " for locale " + locale.toString() + " but got " +
+                        hex(UCharacter.toUpperCase(locale, str)));
+                }
+            }
+            else {
+                if (!SPECIAL_DATA_[j + 1].equals(
+                     UCharacter.toLowerCase(str))) {
+                    errln("error lowercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 1] +
+                        " but got " +
+                        hex(UCharacter.toLowerCase(locale, str)));
+                }
+                if (!SPECIAL_DATA_[j + 2].equals(
+                     UCharacter.toUpperCase(locale, str))) {
+                    errln("error uppercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 2] +
+                        " but got " +
+                        hex(UCharacter.toUpperCase(locale, str)));
+                }
+            }
+        }
+
+        // turkish & azerbaijani dotless i & dotted I
+        // remove dot above if there was a capital I before and there are no
+        // more accents above
+        if (!SPECIAL_DOTTED_LOWER_TURKISH_.equals(UCharacter.toLowerCase(
+                                        TURKISH_LOCALE_, SPECIAL_DOTTED_))) {
+            errln("error in dots.toLower(tr)=\"" + SPECIAL_DOTTED_ +
+                  "\" expected \"" + SPECIAL_DOTTED_LOWER_TURKISH_ +
+                  "\" but got " + UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                                         SPECIAL_DOTTED_));
+        }
+        if (!SPECIAL_DOTTED_LOWER_GERMAN_.equals(UCharacter.toLowerCase(
+                                             GERMAN_LOCALE_, SPECIAL_DOTTED_))) {
+            errln("error in dots.toLower(de)=\"" + SPECIAL_DOTTED_ +
+                  "\" expected \"" + SPECIAL_DOTTED_LOWER_GERMAN_ +
+                  "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                                         SPECIAL_DOTTED_));
+        }
+
+        // lithuanian dot above in uppercasing
+        if (!SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_.equals(
+             UCharacter.toUpperCase(LITHUANIAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+            errln("error in dots.toUpper(lt)=\"" + SPECIAL_DOT_ABOVE_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ +
+                  "\" but got " + UCharacter.toUpperCase(LITHUANIAN_LOCALE_,
+                                                         SPECIAL_DOT_ABOVE_));
+        }
+        if (!SPECIAL_DOT_ABOVE_UPPER_GERMAN_.equals(UCharacter.toUpperCase(
+                                        GERMAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+            errln("error in dots.toUpper(de)=\"" + SPECIAL_DOT_ABOVE_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_GERMAN_ +
+                  "\" but got " + UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                                         SPECIAL_DOT_ABOVE_));
+        }
+
+        // lithuanian adds dot above to i in lowercasing if there are more
+        // above accents
+        if (!SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_.equals(
+            UCharacter.toLowerCase(LITHUANIAN_LOCALE_,
+                                   SPECIAL_DOT_ABOVE_UPPER_))) {
+            errln("error in dots.toLower(lt)=\"" + SPECIAL_DOT_ABOVE_UPPER_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ +
+                  "\" but got " + UCharacter.toLowerCase(LITHUANIAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+        }
+        if (!SPECIAL_DOT_ABOVE_LOWER_GERMAN_.equals(
+            UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                   SPECIAL_DOT_ABOVE_UPPER_))) {
+            errln("error in dots.toLower(de)=\"" + SPECIAL_DOT_ABOVE_UPPER_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_GERMAN_ +
+                  "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+        }
+    }
+
+    /**
+     * Tests for case mapping in the file SpecialCasing.txt
+     * This method reads in SpecialCasing.txt file for testing purposes.
+     * A default path is provided relative to the src path, however the user
+     * could set a system property to change the directory path.<br>
+     * e.g. java -DUnicodeData="data_dir_path" com.ibm.dev.test.lang.UCharacterTest
+     */
+    public void TestSpecialCasingTxt()
+    {
+        try
+        {
+            // reading in the SpecialCasing file
+            BufferedReader input = TestUtil.getDataReader(
+                                                  "unicode/SpecialCasing.txt");
+            while (true)
+            {
+                String s = input.readLine();
+                if (s == null) {
+                    break;
+                }
+                if (s.length() == 0 || s.charAt(0) == '#') {
+                    continue;
+                }
+
+                String chstr[] = getUnicodeStrings(s);
+                StringBuffer strbuffer   = new StringBuffer(chstr[0]);
+                StringBuffer lowerbuffer = new StringBuffer(chstr[1]);
+                StringBuffer upperbuffer = new StringBuffer(chstr[3]);
+                Locale locale = null;
+                for (int i = 4; i < chstr.length; i ++) {
+                    String condition = chstr[i];
+                    if (Character.isLowerCase(chstr[i].charAt(0))) {
+                        // specified locale
+                        locale = new Locale(chstr[i], "");
+                    }
+                    else if (condition.compareToIgnoreCase("Not_Before_Dot")
+                                                      == 0) {
+                        // turns I into dotless i
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                      "More_Above") == 0) {
+                            strbuffer.append((char)0x300);
+                            lowerbuffer.append((char)0x300);
+                            upperbuffer.append((char)0x300);
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                "After_Soft_Dotted") == 0) {
+                            strbuffer.insert(0, 'i');
+                            lowerbuffer.insert(0, 'i');
+                            String lang = "";
+                            if (locale != null) {
+                                lang = locale.getLanguage();
+                            }
+                            if (lang.equals("tr") || lang.equals("az")) {
+                                // this is to be removed when 4.0 data comes out
+                                // and upperbuffer.insert uncommented
+                                // see jitterbug 2344
+                                chstr[i] = "After_I";
+                                strbuffer.deleteCharAt(0);
+                                lowerbuffer.deleteCharAt(0);
+                                i --;
+                                continue;
+                                // upperbuffer.insert(0, '\u0130');
+                            }
+                            else {
+                                upperbuffer.insert(0, 'I');
+                            }
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                      "Final_Sigma") == 0) {
+                            strbuffer.insert(0, 'c');
+                            lowerbuffer.insert(0, 'c');
+                            upperbuffer.insert(0, 'C');
+                    }
+                    else if (condition.compareToIgnoreCase("After_I") == 0) {
+                            strbuffer.insert(0, 'I');
+                            lowerbuffer.insert(0, 'i');
+                            String lang = "";
+                            if (locale != null) {
+                                lang = locale.getLanguage();
+                            }
+                            if (lang.equals("tr") || lang.equals("az")) {
+                                upperbuffer.insert(0, 'I');
+                            }
+                    }
+                }
+                chstr[0] = strbuffer.toString();
+                chstr[1] = lowerbuffer.toString();
+                chstr[3] = upperbuffer.toString();
+                if (locale == null) {
+                    if (!UCharacter.toLowerCase(chstr[0]).equals(chstr[1])) {
+                        errln(s);
+                        errln("Fail: toLowerCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[1]) + " but resulted in " +
+                              Utility.escape(UCharacter.toLowerCase(chstr[0])));
+                    }
+                    if (!UCharacter.toUpperCase(chstr[0]).equals(chstr[3])) {
+                        errln(s);
+                        errln("Fail: toUpperCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[3]) + " but resulted in " +
+                              Utility.escape(UCharacter.toUpperCase(chstr[0])));
+                    }
+                }
+                else {
+                    if (!UCharacter.toLowerCase(locale, chstr[0]).equals(
+                                                                   chstr[1])) {
+                        errln(s);
+                        errln("Fail: toLowerCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[1]) + " but resulted in " +
+                              Utility.escape(UCharacter.toLowerCase(locale,
+                                                                    chstr[0])));
+                    }
+                    if (!UCharacter.toUpperCase(locale, chstr[0]).equals(
+                                                                   chstr[3])) {
+                        errln(s);
+                        errln("Fail: toUpperCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[3]) + " but resulted in " +
+                              Utility.escape(UCharacter.toUpperCase(locale,
+                                                                    chstr[0])));
+                    }
+                }
+            }
+            input.close();
+        }
+        catch (Exception e)
+        {
+          e.printStackTrace();
+        }
+    }
+
+    public void TestUpperLower()
+    {
+        int upper[] = {0x0041, 0x0042, 0x00b2, 0x01c4, 0x01c6, 0x01c9, 0x01c8,
+                        0x01c9, 0x000c};
+        int lower[] = {0x0061, 0x0062, 0x00b2, 0x01c6, 0x01c6, 0x01c9, 0x01c9,
+                        0x01c9, 0x000c};
+        String upperTest = "abcdefg123hij.?:klmno";
+        String lowerTest = "ABCDEFG123HIJ.?:KLMNO";
+
+        // Checks LetterLike Symbols which were previously a source of
+        // confusion [Bertrand A. D. 02/04/98]
+        for (int i = 0x2100; i < 0x2138; i ++) {
+            /* Unicode 5.0 adds lowercase U+214E (TURNED SMALL F) to U+2132 (TURNED CAPITAL F) */
+            if (i != 0x2126 && i != 0x212a && i != 0x212b && i!=0x2132) {
+                if (i != UCharacter.toLowerCase(i)) { // itself
+                    errln("Failed case conversion with itself: \\u"
+                            + Utility.hex(i, 4));
+                }
+                if (i != UCharacter.toUpperCase(i)) {
+                    errln("Failed case conversion with itself: \\u"
+                            + Utility.hex(i, 4));
+                }
+            }
+        }
+        for (int i = 0; i < upper.length; i ++) {
+            if (UCharacter.toLowerCase(upper[i]) != lower[i]) {
+                errln("FAILED UCharacter.tolower() for \\u"
+                        + Utility.hex(upper[i], 4)
+                        + " Expected \\u" + Utility.hex(lower[i], 4)
+                        + " Got \\u"
+                        + Utility.hex(UCharacter.toLowerCase(upper[i]), 4));
+            }
+        }
+        logln("testing upper lower");
+        for (int i = 0; i < upperTest.length(); i ++) {
+            logln("testing to upper to lower");
+            if (UCharacter.isLetter(upperTest.charAt(i)) &&
+                !UCharacter.isLowerCase(upperTest.charAt(i))) {
+                errln("Failed isLowerCase test at \\u"
+                        + Utility.hex(upperTest.charAt(i), 4));
+            }
+            else if (UCharacter.isLetter(lowerTest.charAt(i))
+                     && !UCharacter.isUpperCase(lowerTest.charAt(i))) {
+                errln("Failed isUpperCase test at \\u"
+                      + Utility.hex(lowerTest.charAt(i), 4));
+            }
+            else if (upperTest.charAt(i)
+                            != UCharacter.toLowerCase(lowerTest.charAt(i))) {
+                errln("Failed case conversion from \\u"
+                        + Utility.hex(lowerTest.charAt(i), 4) + " To \\u"
+                        + Utility.hex(upperTest.charAt(i), 4));
+            }
+            else if (lowerTest.charAt(i)
+                    != UCharacter.toUpperCase(upperTest.charAt(i))) {
+                errln("Failed case conversion : \\u"
+                        + Utility.hex(upperTest.charAt(i), 4) + " To \\u"
+                        + Utility.hex(lowerTest.charAt(i), 4));
+            }
+            else if (upperTest.charAt(i)
+                    != UCharacter.toLowerCase(upperTest.charAt(i))) {
+                errln("Failed case conversion with itself: \\u"
+                        + Utility.hex(upperTest.charAt(i)));
+            }
+            else if (lowerTest.charAt(i)
+                    != UCharacter.toUpperCase(lowerTest.charAt(i))) {
+                errln("Failed case conversion with itself: \\u"
+                        + Utility.hex(lowerTest.charAt(i)));
+            }
+        }
+        logln("done testing upper Lower");
+    }
+
+    // private data members - test data --------------------------------------
+
+    private static final Locale TURKISH_LOCALE_ = new Locale("tr", "TR");
+    private static final Locale GERMAN_LOCALE_ = new Locale("de", "DE");
+    private static final Locale GREEK_LOCALE_ = new Locale("el", "GR");
+    private static final Locale ENGLISH_LOCALE_ = new Locale("en", "US");
+    private static final Locale LITHUANIAN_LOCALE_ = new Locale("lt", "LT");
+
+    private static final int CHARACTER_UPPER_[] =
+                      {0x41, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+                       0x00b1, 0x00b2, 0xb3, 0x0048, 0x0049, 0x004a, 0x002e,
+                       0x003f, 0x003a, 0x004b, 0x004c, 0x4d, 0x004e, 0x004f,
+                       0x01c4, 0x01c8, 0x000c, 0x0000};
+    private static final int CHARACTER_LOWER_[] =
+                      {0x61, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+                       0x00b1, 0x00b2, 0xb3, 0x0068, 0x0069, 0x006a, 0x002e,
+                       0x003f, 0x003a, 0x006b, 0x006c, 0x6d, 0x006e, 0x006f,
+                       0x01c6, 0x01c9, 0x000c, 0x0000};
+
+    /*
+     * CaseFolding.txt says about i and its cousins:
+     *   0049; C; 0069; # LATIN CAPITAL LETTER I
+     *   0049; T; 0131; # LATIN CAPITAL LETTER I
+     *
+     *   0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+     *   0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+     * That's all.
+     * See CaseFolding.txt and the Unicode Standard for how to apply the case foldings.
+     */
+    private static final int FOLDING_SIMPLE_[] = {
+        // input, default, exclude special i
+        0x61,   0x61,  0x61,
+        0x49,   0x69,  0x131,
+        0x130,  0x130, 0x69,
+        0x131,  0x131, 0x131,
+        0xdf,   0xdf,  0xdf,
+        0xfb03, 0xfb03, 0xfb03,
+        0x1040e,0x10436,0x10436,
+        0x5ffff,0x5ffff,0x5ffff
+    };
+    private static final String FOLDING_MIXED_[] =
+                          {"\u0061\u0042\u0130\u0049\u0131\u03d0\u00df\ufb03\ud93f\udfff",
+                           "A\u00df\u00b5\ufb03\uD801\uDC0C\u0130\u0131"};
+    private static final String FOLDING_DEFAULT_[] =
+         {"\u0061\u0062\u0069\u0307\u0069\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+          "ass\u03bcffi\uD801\uDC34i\u0307\u0131"};
+    private static final String FOLDING_EXCLUDE_SPECIAL_I_[] =
+         {"\u0061\u0062\u0069\u0131\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+          "ass\u03bcffi\uD801\uDC34i\u0131"};
+    /**
+     * "IESUS CHRISTOS"
+     */
+    private static final String SHARED_UPPERCASE_GREEK_ =
+        "\u0399\u0395\u03a3\u03a5\u03a3\u0020\u03a7\u03a1\u0399\u03a3\u03a4\u039f\u03a3";
+    /**
+     * "iesus christos"
+     */
+    private static final String SHARED_LOWERCASE_GREEK_ =
+        "\u03b9\u03b5\u03c3\u03c5\u03c2\u0020\u03c7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c2";
+    private static final String SHARED_LOWERCASE_TURKISH_ =
+        "\u0069\u0073\u0074\u0061\u006e\u0062\u0075\u006c\u002c\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0073\u0074\u0061\u006e\u0074\u0131\u006e\u006f\u0070\u006c\u0065\u0021";
+    private static final String SHARED_UPPERCASE_TURKISH_ =
+        "\u0054\u004f\u0050\u004b\u0041\u0050\u0049\u0020\u0050\u0041\u004c\u0041\u0043\u0045\u002c\u0020\u0130\u0053\u0054\u0041\u004e\u0042\u0055\u004c";
+    private static final String SHARED_UPPERCASE_ISTANBUL_ =
+                                          "\u0130STANBUL, NOT CONSTANTINOPLE!";
+    private static final String SHARED_LOWERCASE_ISTANBUL_ =
+                                          "i\u0307stanbul, not constantinople!";
+    private static final String SHARED_LOWERCASE_TOPKAP_ =
+                                          "topkap\u0131 palace, istanbul";
+    private static final String SHARED_UPPERCASE_TOPKAP_ =
+                                          "TOPKAPI PALACE, ISTANBUL";
+    private static final String SHARED_LOWERCASE_GERMAN_ =
+                                          "S\u00FC\u00DFmayrstra\u00DFe";
+    private static final String SHARED_UPPERCASE_GERMAN_ =
+                                          "S\u00DCSSMAYRSTRASSE";
+
+    private static final String UPPER_BEFORE_ =
+         "\u0061\u0042\u0069\u03c2\u00df\u03c3\u002f\ufb03\ufb03\ufb03\ud93f\udfff";
+    private static final String UPPER_ROOT_ =
+         "\u0041\u0042\u0049\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+    private static final String UPPER_TURKISH_ =
+         "\u0041\u0042\u0130\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+    private static final String UPPER_MINI_ = "\u00df\u0061";
+    private static final String UPPER_MINI_UPPER_ = "\u0053\u0053\u0041";
+
+    private static final String LOWER_BEFORE_ =
+                      "\u0061\u0042\u0049\u03a3\u00df\u03a3\u002f\ud93f\udfff";
+    private static final String LOWER_ROOT_ =
+                      "\u0061\u0062\u0069\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+    private static final String LOWER_TURKISH_ = 
+                      "\u0061\u0062\u0131\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+
+    /**
+     * each item is an array with input string, result string, locale ID, break iterator, options
+     * the break iterator is specified as an int, same as in BreakIterator.KIND_*:
+     * 0=KIND_CHARACTER  1=KIND_WORD  2=KIND_LINE  3=KIND_SENTENCE  4=KIND_TITLE  -1=default (NULL=words)  -2=no breaks (.*)
+     * options: T=U_FOLD_CASE_EXCLUDE_SPECIAL_I  L=U_TITLECASE_NO_LOWERCASE  A=U_TITLECASE_NO_BREAK_ADJUSTMENT
+     * see ICU4C source/test/testdata/casing.txt
+     */
+    private static final String TITLE_DATA_[] = {
+        "\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+        "\u0041\u0042\u0020\u0049\u03a3\u0020\u0053\u0073\u03a3\u002f\u0046\u0066\u0069\ud93f\udfff",
+        "",
+        "0",
+        "",
+
+        "\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+        "\u0041\u0062\u0020\u0049\u03c2\u0020\u0053\u0073\u03c3\u002f\u0046\u0066\u0069\ud93f\udfff",
+        "",
+        "1",
+        "",
+
+        "\u02bbaMeLikA huI P\u016b \u02bb\u02bb\u02bbiA", "\u02bbAmelika Hui P\u016b \u02bb\u02bb\u02bbIa", // titlecase first _cased_ letter, j4933
+        "",
+        "-1",
+        "",
+
+        " tHe QUIcK bRoWn", " The Quick Brown",
+        "",
+        "4",
+        "",
+
+        "\u01c4\u01c5\u01c6\u01c7\u01c8\u01c9\u01ca\u01cb\u01cc", 
+        "\u01c5\u01c5\u01c5\u01c8\u01c8\u01c8\u01cb\u01cb\u01cb", // UBRK_CHARACTER
+        "",
+        "0",
+        "",
+
+        "\u01c9ubav ljubav", "\u01c8ubav Ljubav", // Lj vs. L+j
+        "",
+        "-1",
+        "",
+
+        "'oH dOn'T tItLeCaSe AfTeR lEtTeR+'",  "'Oh Don't Titlecase After Letter+'",
+        "",
+        "-1",
+        "",
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbCat. A \u02bbDog! \u02bbEtc.",
+        "",
+        "-1",
+        "", // default
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbcat. A \u02bbdog! \u02bbetc.",
+        "",
+        "-1",
+        "A", // U_TITLECASE_NO_BREAK_ADJUSTMENT
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbCaT. A \u02bbdOg! \u02bbETc.",
+        "",
+        "3",
+        "L", // UBRK_SENTENCE and U_TITLECASE_NO_LOWERCASE
+
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbCat! \u02bbetc.",
+        "",
+        "-2",
+        "", // -2=Trivial break iterator
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbcat! \u02bbetc.",
+        "",
+        "-2",
+        "A", // U_TITLECASE_NO_BREAK_ADJUSTMENT
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbCAt! \u02bbeTc.",
+        "",
+        "-2",
+        "L", // U_TITLECASE_NO_LOWERCASE
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbcAt! \u02bbeTc.",
+        "",
+        "-2",
+        "AL" // Both options
+    };
+
+
+    /**
+     * <p>basic string, lower string, upper string, title string</p>
+     */
+    private static final String SPECIAL_DATA_[] = {
+        UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+        UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+        UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+        "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " +
+                         UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+        "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " +
+                              UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+        "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " +
+                              UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+        // sigmas followed/preceded by cased letters
+        "i\u0307\u03a3\u0308j \u0307\u03a3\u0308j i\u00ad\u03a3\u0308 \u0307\u03a3\u0308 ",
+        "i\u0307\u03c3\u0308j \u0307\u03c3\u0308j i\u00ad\u03c2\u0308 \u0307\u03c3\u0308 ",
+        "I\u0307\u03a3\u0308J \u0307\u03a3\u0308J I\u00ad\u03a3\u0308 \u0307\u03a3\u0308 "
+    };
+    private static final Locale SPECIAL_LOCALES_[] = {
+        null,
+        ENGLISH_LOCALE_,
+        null,
+    };
+
+    private static final String SPECIAL_DOTTED_ =
+            "I \u0130 I\u0307 I\u0327\u0307 I\u0301\u0307 I\u0327\u0307\u0301";
+    private static final String SPECIAL_DOTTED_LOWER_TURKISH_ =
+            "\u0131 i i i\u0327 \u0131\u0301\u0307 i\u0327\u0301";
+    private static final String SPECIAL_DOTTED_LOWER_GERMAN_ =
+            "i i\u0307 i\u0307 i\u0327\u0307 i\u0301\u0307 i\u0327\u0307\u0301";
+    private static final String SPECIAL_DOT_ABOVE_ =
+            "a\u0307 \u0307 i\u0307 j\u0327\u0307 j\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ =
+            "A\u0307 \u0307 I J\u0327 J\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_GERMAN_ =
+            "A\u0307 \u0307 I\u0307 J\u0327\u0307 J\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_ =
+            "I I\u0301 J J\u0301 \u012e \u012e\u0301 \u00cc\u00cd\u0128";
+    private static final String SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ =
+            "i i\u0307\u0301 j j\u0307\u0301 \u012f \u012f\u0307\u0301 i\u0307\u0300i\u0307\u0301i\u0307\u0303";
+    private static final String SPECIAL_DOT_ABOVE_LOWER_GERMAN_ =
+            "i i\u0301 j j\u0301 \u012f \u012f\u0301 \u00ec\u00ed\u0129";
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Converting the hex numbers represented betwee                             n ';' to Unicode strings
+     * @param str string to break up into Unicode strings
+     * @return array of Unicode strings ending with a null
+     */
+    private String[] getUnicodeStrings(String str)
+    {
+        Vector v = new Vector(10);
+        int start = 0;
+        for (int casecount = 4; casecount > 0; casecount --) {
+            int end = str.indexOf("; ", start);
+            String casestr = str.substring(start, end);
+            StringBuffer buffer = new StringBuffer();
+            int spaceoffset = 0;
+            while (spaceoffset < casestr.length()) {
+                int nextspace = casestr.indexOf(' ', spaceoffset);
+                if (nextspace == -1) {
+                    nextspace = casestr.length();
+                }
+                buffer.append((char)Integer.parseInt(
+                                     casestr.substring(spaceoffset, nextspace),
+                                                      16));
+                spaceoffset = nextspace + 1;
+            }
+            start = end + 2;
+            v.add(buffer.toString());
+        }
+        int comments = str.indexOf(" #", start);
+        if (comments != -1 && comments != start) {
+            if (str.charAt(comments - 1) == ';') {
+                comments --;
+            }
+            String conditions = str.substring(start, comments);
+            int offset = 0;
+            while (offset < conditions.length()) {
+                int spaceoffset = conditions.indexOf(' ', offset);
+                if (spaceoffset == -1) {
+                    spaceoffset = conditions.length();
+                }
+                v.add(conditions.substring(offset, spaceoffset));
+                offset = spaceoffset + 1;
+            }
+        }
+        int size = v.size();
+        String result[] = new String[size];
+        for (int i = 0; i < size; i ++) {
+            result[i] = (String)v.elementAt(i);
+        }
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
new file mode 100644
index 0000000..6f8e1d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
@@ -0,0 +1,86 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.test.lang;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterCategory;
+
+/**
+* Testing UCharacterCategory
+* @author Syn Wee Quek
+* @since April 02 2002
+*/
+public class UCharacterCategoryTest extends TestFmwk
+{
+    // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterCategoryTest()
+    {
+    }
+    
+      // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+              UCharacterCategoryTest test = new UCharacterCategoryTest();
+              test.run(arg);
+        }
+        catch (Exception e)
+        {
+              e.printStackTrace();
+        }
+    }
+    
+    /**
+    * Gets the name of the argument category
+    * @returns category name
+    */
+    public void TestToString()
+    {
+          String name[] = {"Unassigned",
+                           "Letter, Uppercase",
+                           "Letter, Lowercase",
+                           "Letter, Titlecase",
+                           "Letter, Modifier",
+                           "Letter, Other",
+                           "Mark, Non-Spacing",
+                           "Mark, Enclosing",
+                           "Mark, Spacing Combining",
+                           "Number, Decimal Digit",
+                           "Number, Letter",
+                           "Number, Other",
+                           "Separator, Space",
+                           "Separator, Line",
+                           "Separator, Paragraph",
+                           "Other, Control",
+                           "Other, Format",
+                           "Other, Private Use",
+                           "Other, Surrogate",
+                           "Punctuation, Dash",
+                           "Punctuation, Open",
+                           "Punctuation, Close",
+                           "Punctuation, Connector",
+                           "Punctuation, Other",
+                           "Symbol, Math",
+                           "Symbol, Currency",
+                           "Symbol, Modifier",
+                           "Symbol, Other", 
+                           "Punctuation, Initial quote",
+                           "Punctuation, Final quote"};
+        for (int i = UCharacterCategory.UNASSIGNED; 
+                 i < UCharacterCategory.CHAR_CATEGORY_COUNT; i ++) {
+             if (!UCharacterCategory.toString(i).equals(name[i])) {
+                 errln("Error toString for category " + i + " expected " +
+                       name[i]);
+             }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
new file mode 100644
index 0000000..65206f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
@@ -0,0 +1,308 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+/**
+* A class to compare the difference in methods between java.lang.Character and
+* UCharacter
+* @author Syn Wee Quek
+* @since oct 06 2000
+* @see com.ibm.icu.lang.UCharacter
+*/
+
+public final class UCharacterCompare
+{ 
+  // private variables ================================================
+  
+  private static Hashtable m_hashtable_ = new Hashtable();
+  
+  // public methods ======================================================
+  
+  /**
+  * Main testing method
+  */
+  public static void main(String arg[])
+  {
+      System.out.println("Starting character compare");
+    try
+    {
+      FileWriter f;
+      if (arg.length == 0)
+        f = new FileWriter("compare.txt");
+      else
+        f = new FileWriter(arg[0]);
+      PrintWriter p = new PrintWriter(f);
+      p.print("char  character name                                                           ");
+      p.println("method name               ucharacter character");
+      for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i ++)
+      {
+          System.out.println("character \\u" + Integer.toHexString(i));
+        if (UCharacter.isDefined(i) != Character.isDefined(i))
+          trackDifference(p, i, "isDefined()", "" + UCharacter.isDefined(i), 
+                          "" + Character.isDefined(i));
+        else
+        {
+          if (UCharacter.digit(i, 10) != Character.digit(i, 10))
+            trackDifference(p, i, "digit()", "" + UCharacter.digit(i, 10),
+                            "" + Character.digit(i, 10));
+          if (UCharacter.getNumericValue(i) != Character.getNumericValue(i))
+            trackDifference(p, i, "getNumericValue()", 
+                            "" + UCharacter.getNumericValue(i),
+                            "" + Character.getNumericValue(i));
+          if (!compareType(UCharacter.getType(i), Character.getType(i)))
+            trackDifference(p, i, "getType()", "" + UCharacter.getType(i),
+                            "" + Character.getType(i));
+          if (UCharacter.isDigit(i) != Character.isDigit(i))
+            trackDifference(p, i, "isDigit()",
+                            "" + UCharacter.isDigit(i), 
+                            "" + Character.isDigit(i));
+          if (UCharacter.isISOControl(i) != Character.isISOControl(i))
+            trackDifference(p, i, "isISOControl()", 
+                            "" + UCharacter.isISOControl(i),
+                            "" + Character.isISOControl(i));
+          if (UCharacter.isLetter(i) != Character.isLetter(i))
+            trackDifference(p, i, "isLetter()", "" + UCharacter.isLetter(i),
+                            "" + Character.isLetter(i));
+          if (UCharacter.isLetterOrDigit(i) != Character.isLetterOrDigit(i))
+            trackDifference(p, i, "isLetterOrDigit()", 
+                            "" + UCharacter.isLetterOrDigit(i),
+                            "" + Character.isLetterOrDigit(i));
+          if (UCharacter.isLowerCase(i) != Character.isLowerCase(i))
+            trackDifference(p, i, "isLowerCase()", 
+                            "" + UCharacter.isLowerCase(i),
+                            "" + Character.isLowerCase(i));
+          if (UCharacter.isWhitespace(i) != Character.isWhitespace(i))
+            trackDifference(p, i, "isWhitespace()", 
+                            "" + UCharacter.isWhitespace(i),
+                            "" + Character.isWhitespace(i));
+          if (UCharacter.isSpaceChar(i) != Character.isSpaceChar(i))
+            trackDifference(p, i, "isSpaceChar()", 
+                            "" + UCharacter.isSpaceChar(i),
+                            "" + Character.isSpaceChar(i));
+          if (UCharacter.isTitleCase(i) != Character.isTitleCase(i))
+            trackDifference(p, i, "isTitleChar()", 
+                            "" + UCharacter.isTitleCase(i),
+                            "" + Character.isTitleCase(i));
+          if (UCharacter.isUnicodeIdentifierPart(i) != 
+              Character.isUnicodeIdentifierPart(i))
+            trackDifference(p, i, "isUnicodeIdentifierPart()", 
+                            "" + UCharacter.isUnicodeIdentifierPart(i),
+                            "" + Character.isUnicodeIdentifierPart(i));
+          if (UCharacter.isUnicodeIdentifierStart(i) != 
+              Character.isUnicodeIdentifierStart(i))
+            trackDifference(p, i, "isUnicodeIdentifierStart()",
+                            "" + UCharacter.isUnicodeIdentifierStart(i),
+                            "" + Character.isUnicodeIdentifierStart(i));
+          if (UCharacter.isIdentifierIgnorable(i) != 
+              Character.isIdentifierIgnorable(i))
+            trackDifference(p, i, "isIdentifierIgnorable()",
+                            "" + UCharacter.isIdentifierIgnorable(i),
+                            "" + Character.isIdentifierIgnorable(i));
+          if (UCharacter.isUpperCase(i) != Character.isUpperCase(i))
+            trackDifference(p, i, "isUpperCase()", 
+                            "" + UCharacter.isUpperCase(i),
+                            "" + Character.isUpperCase(i));
+          if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))
+            trackDifference(p, i, "toLowerCase()", 
+                            Integer.toHexString(UCharacter.toLowerCase(i)),
+                            Integer.toHexString(Character.toLowerCase(i)));
+          if (!UCharacter.toString(i).equals(new Character(i).toString()))
+            trackDifference(p, i, "toString()",
+                            UCharacter.toString(i),
+                            new Character(i).toString());
+          if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))
+            trackDifference(p, i, "toTitleCase()",
+                            Integer.toHexString(UCharacter.toTitleCase(i)),
+                            Integer.toHexString(Character.toTitleCase(i)));
+          if (UCharacter.toUpperCase(i) != Character.toUpperCase(i))
+            trackDifference(p, i, "toUpperCase()",
+                            Integer.toHexString(UCharacter.toUpperCase(i)),
+                            Integer.toHexString(Character.toUpperCase(i)));
+        }
+      }
+      summary(p);
+      p.close();
+    } 
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+  }
+  
+  // private methods ===================================================
+  
+  /**
+  * Comparing types
+  * @param uchartype UCharacter type
+  * @param jchartype java.lang.Character type
+  */
+  private static boolean compareType(int uchartype, int jchartype)
+  {
+    if (uchartype == UCharacterCategory.UNASSIGNED && 
+        jchartype == Character.UNASSIGNED)
+      return true;
+    if (uchartype == UCharacterCategory.UPPERCASE_LETTER && 
+        jchartype == Character.UPPERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.LOWERCASE_LETTER && 
+        jchartype == Character.LOWERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.TITLECASE_LETTER && 
+        jchartype == Character.TITLECASE_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.MODIFIER_LETTER && 
+        jchartype == Character.MODIFIER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_LETTER && 
+        jchartype == Character.OTHER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.NON_SPACING_MARK && 
+        jchartype == Character.NON_SPACING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.ENCLOSING_MARK && 
+        jchartype == Character.ENCLOSING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.COMBINING_SPACING_MARK && 
+        jchartype == Character.COMBINING_SPACING_MARK)
+      return true;
+      if (uchartype == UCharacterCategory.DECIMAL_DIGIT_NUMBER && 
+        jchartype == Character.DECIMAL_DIGIT_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.LETTER_NUMBER && 
+        jchartype == Character.LETTER_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.OTHER_NUMBER && 
+        jchartype == Character.OTHER_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.SPACE_SEPARATOR && 
+        jchartype == Character.SPACE_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.LINE_SEPARATOR && 
+        jchartype == Character.LINE_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.PARAGRAPH_SEPARATOR && 
+        jchartype == Character.PARAGRAPH_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.CONTROL && 
+        jchartype == Character.CONTROL)
+      return true;
+    if (uchartype == UCharacterCategory.FORMAT && 
+        jchartype == Character.FORMAT)
+      return true;
+      if (uchartype == UCharacterCategory.PRIVATE_USE && 
+        jchartype == Character.PRIVATE_USE)
+      return true;
+    if (uchartype == UCharacterCategory.SURROGATE && 
+        jchartype == Character.SURROGATE)
+      return true;
+    if (uchartype == UCharacterCategory.DASH_PUNCTUATION && 
+        jchartype == Character.DASH_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.START_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.END_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.CONNECTOR_PUNCTUATION && 
+        jchartype == Character.CONNECTOR_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_PUNCTUATION && 
+        jchartype == Character.OTHER_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.MATH_SYMBOL && 
+        jchartype == Character.MATH_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.CURRENCY_SYMBOL && 
+        jchartype == Character.CURRENCY_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.MODIFIER_SYMBOL && 
+        jchartype == Character.MODIFIER_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.OTHER_SYMBOL && 
+        jchartype == Character.OTHER_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.INITIAL_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.FINAL_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+      /*if (uchartype == UCharacterCategory.GENERAL_OTHER_TYPES && 
+        jchartype == Character.GENERAL_OTHER_TYPES)
+      return true;*/
+    return false;
+    }
+    
+    /**
+    * Difference writing to file
+    * @param f file outputstream
+    * @param ch code point
+    * @param method for testing
+    * @param ucharval UCharacter value after running method
+    * @param charval Character value after running method
+    */
+    private static void trackDifference(PrintWriter f, int ch, String method,
+                                        String ucharval, String charval)
+      throws Exception
+    {
+      if (m_hashtable_.containsKey(method))
+      {
+        Integer value = (Integer)m_hashtable_.get(method);
+        m_hashtable_.put(method, new Integer(value.intValue() + 1));
+      }
+      else
+        m_hashtable_.put(method, new Integer(1));
+      
+      String temp = Integer.toHexString(ch);
+      StringBuffer s = new StringBuffer(temp);
+      for (int i = 0; i < 6 - temp.length(); i ++)
+        s.append(' ');
+      temp = UCharacter.getExtendedName(ch);
+      if (temp == null)
+        temp = " ";
+      s.append(temp);
+      for (int i = 0; i < 73 - temp.length(); i ++)
+        s.append(' ');
+      
+      s.append(method);
+      for (int i = 0; i < 27 - method.length(); i ++)
+        s.append(' ');
+      s.append(ucharval);
+      for (int i = 0; i < 11 - ucharval.length(); i ++)
+        s.append(' ');
+      s.append(charval);
+      f.println(s.toString());
+    }
+    
+    /**
+    * Does up a summary of the differences
+    * @param f file outputstream
+    */
+    private static void summary(PrintWriter f)
+    {
+      f.println("==================================================");
+      f.println("Summary of differences");
+      for (Enumeration e = m_hashtable_.keys() ; e.hasMoreElements() ;) 
+      {
+        StringBuffer method = new StringBuffer((String)e.nextElement());
+        int count = ((Integer)m_hashtable_.get(method.toString())).intValue();
+        for (int i = 30 - method.length(); i > 0; i --)
+          method.append(' ');
+      f.println(method + "  " + count);
+    }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
new file mode 100644
index 0000000..d7239e7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -0,0 +1,77 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+* Testing UCharacterDirection
+* @author Syn Wee Quek
+* @since July 22 2002
+*/
+public class UCharacterDirectionTest extends TestFmwk
+{    
+    // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterDirectionTest()
+    {
+    }
+    
+    // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+            UCharacterDirectionTest test = new UCharacterDirectionTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+    * Gets the name of the argument category
+    * @returns category name
+    */
+    public void TestToString()
+    {
+        String name[] = {"Left-to-Right",
+                         "Right-to-Left", 
+                         "European Number",
+                         "European Number Separator",
+                         "European Number Terminator",
+                         "Arabic Number",
+                         "Common Number Separator",
+                         "Paragraph Separator",
+                         "Segment Separator",
+                         "Whitespace",
+                         "Other Neutrals",
+                         "Left-to-Right Embedding",
+                         "Left-to-Right Override",
+                         "Right-to-Left Arabic",
+                         "Right-to-Left Embedding",
+                         "Right-to-Left Override",
+                         "Pop Directional Format",
+                         "Non-Spacing Mark",
+                         "Boundary Neutral",
+                         "Unassigned"};
+        for (int i = UCharacterDirection.LEFT_TO_RIGHT; 
+                 i < UCharacterDirection.CHAR_DIRECTION_COUNT; i ++) {
+             if (!UCharacterDirection.toString(i).equals(name[i])) {
+                errln("Error toString for direction " + i + " expected " +
+                      name[i]);
+             }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
new file mode 100644
index 0000000..c1216ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
@@ -0,0 +1,422 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Test JDK 1.5 cover APIs.
+ */
+public final class UCharacterSurrogateTest extends TestFmwk {
+
+    public static void main(String[] args) {
+        new UCharacterSurrogateTest().run(args);
+    }
+
+    public void TestUnicodeBlockForName() {
+      String[] names = {"Latin-1 Supplement", 
+                        "Optical Character Recognition",
+                        "CJK Unified Ideographs Extension A", 
+                        "Supplemental Arrows-B",
+                        "Supplemental arrows b", 
+                        "supp-lement-al arrowsb",
+                        "Supplementary Private Use Area-B",
+                        "supplementary_Private_Use_Area-b",
+                        "supplementary_PRIVATE_Use_Area_b"};
+        for (int i = 0; i < names.length; ++i) {
+            try {
+                UCharacter.UnicodeBlock b = UCharacter.UnicodeBlock
+                        .forName(names[i]);
+                logln("found: " + b + " for name: " + names[i]);
+            } catch (Exception e) {
+                errln("could not find block for name: " + names[i]);
+                break;
+            }
+        }
+    }
+
+    public void TestIsValidCodePoint() {
+        if (UCharacter.isValidCodePoint(-1))
+            errln("-1");
+        if (!UCharacter.isValidCodePoint(0))
+            errln("0");
+        if (!UCharacter.isValidCodePoint(UCharacter.MAX_CODE_POINT))
+            errln("0x10ffff");
+        if (UCharacter.isValidCodePoint(UCharacter.MAX_CODE_POINT + 1))
+            errln("0x110000");
+    }
+
+    public void TestIsSupplementaryCodePoint() {
+        if (UCharacter.isSupplementaryCodePoint(-1))
+            errln("-1");
+        if (UCharacter.isSupplementaryCodePoint(0))
+            errln("0");
+        if (UCharacter
+                .isSupplementaryCodePoint(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT - 1))
+            errln("0xffff");
+        if (!UCharacter
+                .isSupplementaryCodePoint(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT))
+            errln("0x10000");
+        if (!UCharacter.isSupplementaryCodePoint(UCharacter.MAX_CODE_POINT))
+            errln("0x10ffff");
+        if (UCharacter.isSupplementaryCodePoint(UCharacter.MAX_CODE_POINT + 1))
+            errln("0x110000");
+    }
+
+    public void TestIsHighSurrogate() {
+        if (UCharacter
+                .isHighSurrogate((char) (UCharacter.MIN_HIGH_SURROGATE - 1)))
+            errln("0xd7ff");
+        if (!UCharacter.isHighSurrogate(UCharacter.MIN_HIGH_SURROGATE))
+            errln("0xd800");
+        if (!UCharacter.isHighSurrogate(UCharacter.MAX_HIGH_SURROGATE))
+            errln("0xdbff");
+        if (UCharacter
+                .isHighSurrogate((char) (UCharacter.MAX_HIGH_SURROGATE + 1)))
+            errln("0xdc00");
+    }
+
+    public void TestIsLowSurrogate() {
+        if (UCharacter
+                .isLowSurrogate((char) (UCharacter.MIN_LOW_SURROGATE - 1)))
+            errln("0xdbff");
+        if (!UCharacter.isLowSurrogate(UCharacter.MIN_LOW_SURROGATE))
+            errln("0xdc00");
+        if (!UCharacter.isLowSurrogate(UCharacter.MAX_LOW_SURROGATE))
+            errln("0xdfff");
+        if (UCharacter
+                .isLowSurrogate((char) (UCharacter.MAX_LOW_SURROGATE + 1)))
+            errln("0xe000");
+    }
+
+    public void TestIsSurrogatePair() {
+        if (UCharacter.isSurrogatePair(
+                (char) (UCharacter.MIN_HIGH_SURROGATE - 1),
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd7ff,0xdc00");
+        if (UCharacter.isSurrogatePair(
+                (char) (UCharacter.MAX_HIGH_SURROGATE + 1),
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd800,0xdc00");
+        if (UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                (char) (UCharacter.MIN_LOW_SURROGATE - 1)))
+            errln("0xd800,0xdbff");
+        if (UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                (char) (UCharacter.MAX_LOW_SURROGATE + 1)))
+            errln("0xd800,0xe000");
+        if (!UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd800,0xdc00");
+    }
+
+    public void TestCharCount() {
+        UCharacter.charCount(-1);
+        UCharacter.charCount(UCharacter.MAX_CODE_POINT + 1);
+        if (UCharacter.charCount(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT - 1) != 1)
+            errln("0xffff");
+        if (UCharacter.charCount(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT) != 2)
+            errln("0x010000");
+    }
+
+    public void TestToCodePoint() {
+        final char[] pairs = {(char) (UCharacter.MIN_HIGH_SURROGATE + 0),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 0),
+                (char) (UCharacter.MIN_HIGH_SURROGATE + 1),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 1),
+                (char) (UCharacter.MIN_HIGH_SURROGATE + 2),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 2),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 2),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 2),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 1),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 1),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 0),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 0),};
+        for (int i = 0; i < pairs.length; i += 2) {
+            int cp = UCharacter.toCodePoint(pairs[i], pairs[i + 1]);
+            if (pairs[i] != UTF16.getLeadSurrogate(cp)
+                    || pairs[i + 1] != UTF16.getTrailSurrogate(cp)) {
+
+                errln(Integer.toHexString(pairs[i]) + ", " + pairs[i + 1]);
+                break;
+            }
+        }
+    }
+
+    public void TestCodePointAtBefore() {
+        String s = "" + UCharacter.MIN_HIGH_SURROGATE + // isolated high
+                UCharacter.MIN_HIGH_SURROGATE + // pair
+                UCharacter.MIN_LOW_SURROGATE + UCharacter.MIN_LOW_SURROGATE; // isolated
+                                                                             // low
+        char[] c = s.toCharArray();
+        int[] avalues = {
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                        UCharacter.MIN_LOW_SURROGATE),
+                UCharacter.MIN_LOW_SURROGATE, UCharacter.MIN_LOW_SURROGATE};
+        int[] bvalues = {
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                        UCharacter.MIN_LOW_SURROGATE),
+                UCharacter.MIN_LOW_SURROGATE,};
+        StringBuffer b = new StringBuffer(s);
+        for (int i = 0; i < avalues.length; ++i) {
+            if (UCharacter.codePointAt(s, i) != avalues[i])
+                errln("string at: " + i);
+            if (UCharacter.codePointAt(c, i) != avalues[i])
+                errln("chars at: " + i);
+            if (UCharacter.codePointAt(b, i) != avalues[i])
+                errln("stringbuffer at: " + i);
+
+            if (UCharacter.codePointBefore(s, i + 1) != bvalues[i])
+                errln("string before: " + i);
+            if (UCharacter.codePointBefore(c, i + 1) != bvalues[i])
+                errln("chars before: " + i);
+            if (UCharacter.codePointBefore(b, i + 1) != bvalues[i])
+                errln("stringbuffer before: " + i);
+        }
+
+        //cover codePointAtBefore with limit
+        logln("Testing codePointAtBefore with limit ...");
+        for (int i = 0; i < avalues.length; ++i) {
+            if (UCharacter.codePointAt(c, i, 4) != avalues[i])
+                errln("chars at: " + i);
+            if (UCharacter.codePointBefore(c, i + 1, 0) != bvalues[i])
+                errln("chars before: " + i);
+        }
+
+    }
+
+    public void TestToChars() {
+        char[] chars = new char[3];
+        int cp = UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_LOW_SURROGATE);
+        UCharacter.toChars(cp, chars, 1);
+        if (chars[1] != UCharacter.MIN_HIGH_SURROGATE
+                || chars[2] != UCharacter.MIN_LOW_SURROGATE) {
+
+            errln("fail");
+        }
+
+        chars = UCharacter.toChars(cp);
+        if (chars[0] != UCharacter.MIN_HIGH_SURROGATE
+                || chars[1] != UCharacter.MIN_LOW_SURROGATE) {
+
+            errln("fail");
+        }
+    }
+
+    public void TestCodePointCount() {
+        class Test {
+            String str(String s, int start, int limit) {
+                if(s==null){
+                    s="";
+                }
+                return "codePointCount('" + Utility.escape(s) + "' " + start
+                        + ", " + limit + ")";
+            }
+
+            void test(String s, int start, int limit, int expected) {
+                int val1 = UCharacter.codePointCount(s.toCharArray(), start,
+                        limit);
+                int val2 = UCharacter.codePointCount(s, start, limit);
+                if (val1 != expected) {
+                    errln("char[] " + str(s, start, limit) + "(" + val1
+                            + ") != " + expected);
+                } else if (val2 != expected) {
+                    errln("String " + str(s, start, limit) + "(" + val2
+                            + ") != " + expected);
+                } else if (isVerbose()) {
+                    logln(str(s, start, limit) + " == " + expected);
+                }
+            }
+
+            void fail(String s, int start, int limit, Class exc) {
+                try {
+                    UCharacter.codePointCount(s, start, limit);
+                    errln("unexpected success " + str(s, start, limit));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        warnln("bad exception " + str(s, start, limit)
+                                + e.getClass().getName());
+                    }
+                }
+            }
+        }
+
+        Test test = new Test();
+        test.fail(null, 0, 1, NullPointerException.class);
+        test.fail("a", -1, 0, IndexOutOfBoundsException.class);
+        test.fail("a", 1, 2, IndexOutOfBoundsException.class);
+        test.fail("a", 1, 0, IndexOutOfBoundsException.class);
+        test.test("", 0, 0, 0);
+        test.test("\ud800", 0, 1, 1);
+        test.test("\udc00", 0, 1, 1);
+        test.test("\ud800\udc00", 0, 1, 1);
+        test.test("\ud800\udc00", 1, 2, 1);
+        test.test("\ud800\udc00", 0, 2, 1);
+        test.test("\udc00\ud800", 0, 1, 1);
+        test.test("\udc00\ud800", 1, 2, 1);
+        test.test("\udc00\ud800", 0, 2, 2);
+        test.test("\ud800\ud800\udc00", 0, 2, 2);
+        test.test("\ud800\ud800\udc00", 1, 3, 1);
+        test.test("\ud800\ud800\udc00", 0, 3, 2);
+        test.test("\ud800\udc00\udc00", 0, 2, 1);
+        test.test("\ud800\udc00\udc00", 1, 3, 2);
+        test.test("\ud800\udc00\udc00", 0, 3, 2);
+    }
+
+    public void TestOffsetByCodePoints() {
+        class Test {
+            String str(String s, int start, int count, int index, int offset) {
+                return "offsetByCodePoints('" + Utility.escape(s) + "' "
+                        + start + ", " + count + ", " + index + ", " + offset
+                        + ")";
+            }
+
+            void test(String s, int start, int count, int index, int offset,
+                    int expected, boolean flip) {
+                char[] chars = s.toCharArray();
+                String string = s.substring(start, start + count);
+                int val1 = UCharacter.offsetByCodePoints(chars, start, count,
+                        index, offset);
+                int val2 = UCharacter.offsetByCodePoints(string, index - start,
+                        offset)
+                        + start;
+
+                if (val1 != expected) {
+                    errln("char[] " + str(s, start, count, index, offset) + "("
+                            + val1 + ") != " + expected);
+                } else if (val2 != expected) {
+                    errln("String " + str(s, start, count, index, offset) + "("
+                            + val2 + ") != " + expected);
+                } else if (isVerbose()) {
+                    logln(str(s, start, count, index, offset) + " == "
+                            + expected);
+                }
+
+                if (flip) {
+                    val1 = UCharacter.offsetByCodePoints(chars, start, count,
+                            expected, -offset);
+                    val2 = UCharacter.offsetByCodePoints(string, expected
+                            - start, -offset)
+                            + start;
+                    if (val1 != index) {
+                        errln("char[] "
+                                + str(s, start, count, expected, -offset) + "("
+                                + val1 + ") != " + index);
+                    } else if (val2 != index) {
+                        errln("String "
+                                + str(s, start, count, expected, -offset) + "("
+                                + val2 + ") != " + index);
+                    } else if (isVerbose()) {
+                        logln(str(s, start, count, expected, -offset) + " == "
+                                + index);
+                    }
+                }
+            }
+
+            void fail(char[] text, int start, int count, int index, int offset,
+                    Class exc) {
+                try {
+                    UCharacter.offsetByCodePoints(text, start, count, index,
+                            offset);
+                    errln("unexpected success "
+                            + str(new String(text), start, count, index, offset));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        errln("bad exception "
+                                + str(new String(text), start, count, index,
+                                        offset) + e.getClass().getName());
+                    }
+                }
+            }
+
+            void fail(String text, int index, int offset, Class exc) {
+                try {
+                    UCharacter.offsetByCodePoints(text, index, offset);
+                    errln("unexpected success "
+                            + str(text, index, offset, 0, text.length()));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        errln("bad exception "
+                                + str(text, 0, text.length(), index, offset)
+                                + e.getClass().getName());
+                    }
+                }
+            }
+        }
+
+        Test test = new Test();
+
+        test.test("\ud800\ud800\udc00", 0, 2, 0, 1, 1, true);
+
+        test.fail((char[]) null, 0, 1, 0, 1, NullPointerException.class);
+        test.fail((String) null, 0, 1, NullPointerException.class);
+        test.fail("abc", -1, 0, IndexOutOfBoundsException.class);
+        test.fail("abc", 4, 0, IndexOutOfBoundsException.class);
+        test.fail("abc", 1, -2, IndexOutOfBoundsException.class);
+        test.fail("abc", 2, 2, IndexOutOfBoundsException.class);
+        char[] abc = "abc".toCharArray();
+        test.fail(abc, -1, 2, 0, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 2, 2, 3, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, -1, 0, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 1, 2, -2, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 1, 1, 2, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 2, 1, 3, IndexOutOfBoundsException.class);
+        test.fail(abc, 0, 2, 2, -3, IndexOutOfBoundsException.class);
+        test.test("", 0, 0, 0, 0, 0, false);
+        test.test("\ud800", 0, 1, 0, 1, 1, true);
+        test.test("\udc00", 0, 1, 0, 1, 1, true);
+
+        String s = "\ud800\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, false);
+        test.test(s, 1, 1, 1, 1, 2, true);
+
+        s = "\udc00\ud800";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 2, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, true);
+        test.test(s, 1, 1, 1, 1, 2, true);
+
+        s = "\ud800\ud800\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 2, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, true);
+        test.test(s, 0, 3, 0, 1, 1, true);
+        test.test(s, 0, 3, 0, 2, 3, true);
+        test.test(s, 0, 3, 1, 1, 3, true);
+        test.test(s, 0, 3, 2, 1, 3, false);
+        test.test(s, 1, 1, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 1, 3, true);
+        test.test(s, 1, 2, 2, 1, 3, false);
+        test.test(s, 2, 1, 2, 1, 3, true);
+
+        s = "\ud800\udc00\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, false);
+        test.test(s, 0, 3, 0, 1, 2, true);
+        test.test(s, 0, 3, 0, 2, 3, true);
+        test.test(s, 0, 3, 1, 1, 2, false);
+        test.test(s, 0, 3, 1, 2, 3, false);
+        test.test(s, 0, 3, 2, 1, 3, true);
+        test.test(s, 1, 1, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 2, 3, true);
+        test.test(s, 1, 2, 2, 1, 3, true);
+        test.test(s, 2, 1, 2, 1, 3, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
new file mode 100644
index 0000000..3d7583c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -0,0 +1,2427 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import java.io.BufferedReader;
+import java.util.Arrays;
+
+/**
+* Testing class for UCharacter
+* Mostly following the test cases for ICU
+* @author Syn Wee Quek
+* @since nov 04 2000
+*/
+public final class UCharacterTest extends TestFmwk
+{
+    // private variables =============================================
+
+    /**
+    * ICU4J data version number
+    */
+    private final VersionInfo VERSION_ = VersionInfo.getInstance("5.1.0.0");
+
+    // constructor ===================================================
+
+    /**
+    * Constructor
+    */
+    public UCharacterTest()
+    {
+    }
+
+    // public methods ================================================
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            UCharacterTest test = new UCharacterTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+        e.printStackTrace();
+        }
+    }
+
+    /**
+    * Testing the letter and number determination in UCharacter
+    */
+    public void TestLetterNumber()
+    {
+        for (int i = 0x0041; i < 0x005B; i ++)
+        if (!UCharacter.isLetter(i))
+            errln("FAIL \\u" + hex(i) + " expected to be a letter");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+        if (UCharacter.isLetter(i))
+            errln("FAIL \\u" + hex(i) + " expected not to be a letter");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+        if (!UCharacter.isDigit(i))
+            errln("FAIL \\u" + hex(i) + " expected to be a digit");
+
+        for (int i = 0x0041; i < 0x005B; i ++)
+            if (!UCharacter.isLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) + " expected not to be a digit");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+            if (!UCharacter.isLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) +
+                    "expected to be either a letter or a digit");
+
+        /*
+         * The following checks work only starting from Unicode 4.0.
+         * Check the version number here.
+         */
+        VersionInfo version =    UCharacter.getUnicodeVersion();
+        if(version.getMajor()<4 || version.equals(VersionInfo.getInstance(4, 0, 1))) {
+            return;
+        }
+
+
+
+        /*
+         * Sanity check:
+         * Verify that exactly the digit characters have decimal digit values.
+         * This assumption is used in the implementation of u_digit()
+         * (which checks nt=de)
+         * compared with the parallel java.lang.Character.digit()
+         * (which checks Nd).
+         *
+         * This was not true in Unicode 3.2 and earlier.
+         * Unicode 4.0 fixed discrepancies.
+         * Unicode 4.0.1 re-introduced problems in this area due to an
+         * unintentionally incomplete last-minute change.
+         */
+        String digitsPattern = "[:Nd:]";
+        String decimalValuesPattern = "[:Numeric_Type=Decimal:]";
+
+        UnicodeSet digits, decimalValues;
+
+        digits= new UnicodeSet(digitsPattern);
+        decimalValues=new UnicodeSet(decimalValuesPattern);
+
+
+        compareUSets(digits, decimalValues, "[:Nd:]", "[:Numeric_Type=Decimal:]", true);
+
+
+    }
+
+    /**
+    * Tests for space determination in UCharacter
+    */
+    public void TestSpaces()
+    {
+        int spaces[] = {0x0020, 0x0000a0, 0x002000, 0x002001, 0x002005};
+        int nonspaces[] = {0x61, 0x0062, 0x0063, 0x0064, 0x0074};
+        int whitespaces[] = {0x2008, 0x002009, 0x00200a, 0x00001c, 0x00000c};
+        int nonwhitespaces[] = {0x61, 0x0062, 0x003c, 0x0028, 0x003f};
+
+        int size = spaces.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isSpaceChar(spaces[i]))
+            {
+                errln("FAIL \\u" + hex(spaces[i]) +
+                    " expected to be a space character");
+                break;
+            }
+
+            if (UCharacter.isSpaceChar(nonspaces[i]))
+            {
+                errln("FAIL \\u" + hex(nonspaces[i]) +
+                " expected not to be space character");
+                break;
+            }
+
+            if (!UCharacter.isWhitespace(whitespaces[i]))
+            {
+                errln("FAIL \\u" + hex(whitespaces[i]) +
+                        " expected to be a white space character");
+                break;
+            }
+            if (UCharacter.isWhitespace(nonwhitespaces[i]))
+            {
+                errln("FAIL \\u" + hex(nonwhitespaces[i]) +
+                            " expected not to be a space character");
+                break;
+            }
+            logln("Ok    \\u" + hex(spaces[i]) + " and \\u" +
+                  hex(nonspaces[i]) + " and \\u" + hex(whitespaces[i]) +
+                  " and \\u" + hex(nonwhitespaces[i]));
+        }
+
+        int rulewhitespace[] = {0x9, 0xd, 0x20, 0x85,
+                                0x200e, 0x200f, 0x2028, 0x2029};
+        int nonrulewhitespace[] = {0x8, 0xe, 0x21, 0x86, 0xa0, 0xa1,
+                                   0x1680, 0x1681, 0x180e, 0x180f,
+                                   0x1FFF, 0x2000, 0x200a, 0x200b,
+                                   0x2010, 0x202f, 0x2030, 0x205f,
+                                   0x2060, 0x3000, 0x3001};
+        for (int i = 0; i < rulewhitespace.length; i ++) {
+            if (!UCharacterProperty.isRuleWhiteSpace(rulewhitespace[i])) {
+                errln("\\u" + Utility.hex(rulewhitespace[i], 4)
+                      + " expected to be a rule white space");
+            }
+        }
+        for (int i = 0; i < nonrulewhitespace.length; i ++) {
+            if (UCharacterProperty.isRuleWhiteSpace(nonrulewhitespace[i])) {
+                errln("\\u" + Utility.hex(nonrulewhitespace[i], 4)
+                      + " expected to be a non rule white space");
+            }
+        }
+    }
+
+    /**
+    * Tests for defined and undefined characters
+    */
+    public void TestDefined()
+    {
+        int undefined[] = {0xfff1, 0xfff7, 0xfa6b};
+        int defined[] = {0x523E, 0x004f88, 0x00fffd};
+
+        int size = undefined.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (UCharacter.isDefined(undefined[i]))
+            {
+                errln("FAIL \\u" + hex(undefined[i]) +
+                            " expected not to be defined");
+                break;
+            }
+            if (!UCharacter.isDefined(defined[i]))
+            {
+                errln("FAIL \\u" + hex(defined[i]) + " expected defined");
+                break;
+            }
+        }
+    }
+
+    /**
+    * Tests for base characters and their cellwidth
+    */
+    public void TestBase()
+    {
+        int base[] = {0x0061, 0x000031, 0x0003d2};
+        int nonbase[] = {0x002B, 0x000020, 0x00203B};
+        int size = base.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (UCharacter.isBaseForm(nonbase[i]))
+            {
+                errln("FAIL \\u" + hex(nonbase[i]) +
+                            " expected not to be a base character");
+                break;
+            }
+            if (!UCharacter.isBaseForm(base[i]))
+            {
+                errln("FAIL \\u" + hex(base[i]) +
+                      " expected to be a base character");
+                break;
+            }
+        }
+    }
+
+    /**
+    * Tests for digit characters
+    */
+    public void TestDigits()
+    {
+        int digits[] = {0x0030, 0x000662, 0x000F23, 0x000ED5, 0x002160};
+
+        //special characters not in the properties table
+        int digits2[] = {0x3007, 0x004e00, 0x004e8c, 0x004e09, 0x0056d8,
+                         0x004e94, 0x00516d, 0x4e03, 0x00516b, 0x004e5d};
+        int nondigits[] = {0x0010, 0x000041, 0x000122, 0x0068FE};
+
+        int digitvalues[] = {0, 2, 3, 5, 1};
+        int digitvalues2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+        int size  = digits.length;
+        for (int i = 0; i < size; i ++) {
+            if (UCharacter.isDigit(digits[i]) &&
+                UCharacter.digit(digits[i]) != digitvalues[i])
+            {
+                errln("FAIL \\u" + hex(digits[i]) +
+                        " expected digit with value " + digitvalues[i]);
+                break;
+            }
+        }
+        size = nondigits.length;
+        for (int i = 0; i < size; i ++)
+            if (UCharacter.isDigit(nondigits[i]))
+            {
+                errln("FAIL \\u" + hex(nondigits[i]) + " expected nondigit");
+                break;
+            }
+
+        size = digits2.length;
+        for (int i = 0; i < 10; i ++) {
+            if (UCharacter.isDigit(digits2[i]) &&
+                UCharacter.digit(digits2[i]) != digitvalues2[i])
+            {
+                errln("FAIL \\u" + hex(digits2[i]) +
+                    " expected digit with value " + digitvalues2[i]);
+                break;
+            }
+        }
+    }
+
+    /**
+    *  Tests for numeric characters
+    */
+    public void TestNumeric()
+    {
+        if (UCharacter.getNumericValue(0x00BC) != -2) {
+            errln("Numeric value of 0x00BC expected to be -2");
+        }
+
+        for (int i = '0'; i < '9'; i ++) {
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n1 != n2 ||  n1 != (i - '0')) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - '0'));
+            }
+        }
+        for (int i = 'A'; i < 'F'; i ++) {
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n2 != UCharacter.NO_NUMERIC_VALUE ||  n1 != (i - 'A' + 10)) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - 'A' + 10));
+            }
+        }
+        for (int i = 0xFF21; i < 0xFF26; i ++) {
+            // testing full wideth latin characters A-F
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n2 != UCharacter.NO_NUMERIC_VALUE ||  n1 != (i - 0xFF21 + 10)) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - 0xFF21 + 10));
+            }
+        }
+        // testing han numbers
+        int han[] = {0x96f6, 0, 0x58f9, 1, 0x8cb3, 2, 0x53c3, 3,
+                     0x8086, 4, 0x4f0d, 5, 0x9678, 6, 0x67d2, 7,
+                     0x634c, 8, 0x7396, 9, 0x5341, 10, 0x62fe, 10,
+                     0x767e, 100, 0x4f70, 100, 0x5343, 1000, 0x4edf, 1000,
+                     0x824c, 10000, 0x5104, 100000000};
+        for (int i = 0; i < han.length; i += 2) {
+            if (UCharacter.getHanNumericValue(han[i]) != han[i + 1]) {
+                errln("Numeric value of \\u" +
+                      Integer.toHexString(han[i]) + " expected to be " +
+                      han[i + 1]);
+            }
+        }
+    }
+
+    /**
+    * Tests for version
+    */
+    public void TestVersion()
+    {
+        if (!UCharacter.getUnicodeVersion().equals(VERSION_))
+            errln("FAIL expected: " + VERSION_ + "got: " + UCharacter.getUnicodeVersion());
+    }
+
+    /**
+    * Tests for control characters
+    */
+    public void TestISOControl()
+    {
+        int control[] = {0x001b, 0x000097, 0x000082};
+        int noncontrol[] = {0x61, 0x000031, 0x0000e2};
+
+        int size = control.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isISOControl(control[i]))
+            {
+                errln("FAIL 0x" + Integer.toHexString(control[i]) +
+                        " expected to be a control character");
+                break;
+            }
+            if (UCharacter.isISOControl(noncontrol[i]))
+            {
+                errln("FAIL 0x" + Integer.toHexString(noncontrol[i]) +
+                        " expected to be not a control character");
+                break;
+            }
+
+            logln("Ok    0x" + Integer.toHexString(control[i]) + " and 0x" +
+                    Integer.toHexString(noncontrol[i]));
+        }
+    }
+
+    /**
+     * Test Supplementary
+     */
+    public void TestSupplementary()
+    {
+        for (int i = 0; i < 0x10000; i ++) {
+            if (UCharacter.isSupplementary(i)) {
+                errln("Codepoint \\u" + Integer.toHexString(i) +
+                      " is not supplementary");
+            }
+        }
+        for (int i = 0x10000; i < 0x10FFFF; i ++) {
+            if (!UCharacter.isSupplementary(i)) {
+                errln("Codepoint \\u" + Integer.toHexString(i) +
+                      " is supplementary");
+            }
+        }
+    }
+
+    /**
+     * Test mirroring
+     */
+    public void TestMirror()
+    {
+        if (!(UCharacter.isMirrored(0x28) && UCharacter.isMirrored(0xbb) &&
+              UCharacter.isMirrored(0x2045) && UCharacter.isMirrored(0x232a)
+              && !UCharacter.isMirrored(0x27) &&
+              !UCharacter.isMirrored(0x61) && !UCharacter.isMirrored(0x284)
+              && !UCharacter.isMirrored(0x3400))) {
+            errln("isMirrored() does not work correctly");
+        }
+
+        if (!(UCharacter.getMirror(0x3c) == 0x3e &&
+              UCharacter.getMirror(0x5d) == 0x5b &&
+              UCharacter.getMirror(0x208d) == 0x208e &&
+              UCharacter.getMirror(0x3017) == 0x3016 &&
+
+              UCharacter.getMirror(0xbb) == 0xab &&
+              UCharacter.getMirror(0x2215) == 0x29F5 &&
+              UCharacter.getMirror(0x29F5) == 0x2215 && /* large delta between the code points */
+
+              UCharacter.getMirror(0x2e) == 0x2e &&
+              UCharacter.getMirror(0x6f3) == 0x6f3 &&
+              UCharacter.getMirror(0x301c) == 0x301c &&
+              UCharacter.getMirror(0xa4ab) == 0xa4ab &&
+
+              /* see Unicode Corrigendum #6 at http://www.unicode.org/versions/corrigendum6.html */
+              UCharacter.getMirror(0x2018) == 0x2018 &&
+              UCharacter.getMirror(0x201b) == 0x201b &&
+              UCharacter.getMirror(0x301d) == 0x301d)) {
+            errln("getMirror() does not work correctly");
+        }
+
+        /* verify that Bidi_Mirroring_Glyph roundtrips */
+        UnicodeSet set=new UnicodeSet("[:Bidi_Mirrored:]");
+        UnicodeSetIterator iter=new UnicodeSetIterator(set);
+        int start, end, c2, c3;
+        while(iter.nextRange() && (start=iter.codepoint)>=0) {
+            end=iter.codepointEnd;
+            do {
+                c2=UCharacter.getMirror(start);
+                c3=UCharacter.getMirror(c2);
+                if(c3!=start) {
+                    errln("getMirror() does not roundtrip: U+"+hex(start)+"->U+"+hex(c2)+"->U+"+hex(c3));
+                }
+            } while(++start<=end);
+        }
+
+        // verify that Unicode Corrigendum #6 reverts mirrored status of the following
+        if (UCharacter.isMirrored(0x2018) ||
+            UCharacter.isMirrored(0x201d) ||
+            UCharacter.isMirrored(0x201f) ||
+            UCharacter.isMirrored(0x301e)) {
+            errln("Unicode Corrigendum #6 conflict, one or more of 2018/201d/201f/301e has mirrored property");
+        }
+    }
+
+    /**
+    * Tests for printable characters
+    */
+    public void TestPrint()
+    {
+        int printable[] = {0x0042, 0x00005f, 0x002014};
+        int nonprintable[] = {0x200c, 0x00009f, 0x00001b};
+
+        int size = printable.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isPrintable(printable[i]))
+            {
+                errln("FAIL \\u" + hex(printable[i]) +
+                    " expected to be a printable character");
+                break;
+            }
+            if (UCharacter.isPrintable(nonprintable[i]))
+            {
+                errln("FAIL \\u" + hex(nonprintable[i]) +
+                        " expected not to be a printable character");
+                break;
+            }
+            logln("Ok    \\u" + hex(printable[i]) + " and \\u" +
+                    hex(nonprintable[i]));
+        }
+
+        // test all ISO 8 controls
+        for (int ch = 0; ch <= 0x9f; ++ ch) {
+            if (ch == 0x20) {
+                // skip ASCII graphic characters and continue with DEL
+                ch = 0x7f;
+            }
+            if (UCharacter.isPrintable(ch)) {
+                errln("Fail \\u" + hex(ch) +
+                    " is a ISO 8 control character hence not printable\n");
+            }
+        }
+
+        /* test all Latin-1 graphic characters */
+        for (int ch = 0x20; ch <= 0xff; ++ ch) {
+            if (ch == 0x7f) {
+                ch = 0xa0;
+            }
+            if (!UCharacter.isPrintable(ch)
+                && ch != 0x00AD/* Unicode 4.0 changed the defintion of soft hyphen to be a Cf*/) {
+                errln("Fail \\u" + hex(ch) +
+                      " is a Latin-1 graphic character\n");
+            }
+        }
+    }
+
+    /**
+    * Testing for identifier characters
+    */
+    public void TestIdentifier()
+    {
+        int unicodeidstart[] = {0x0250, 0x0000e2, 0x000061};
+        int nonunicodeidstart[] = {0x2000, 0x00000a, 0x002019};
+        int unicodeidpart[] = {0x005f, 0x000032, 0x000045};
+        int nonunicodeidpart[] = {0x2030, 0x0000a3, 0x000020};
+        int idignore[] = {0x0006, 0x0010, 0x206b};
+        int nonidignore[] = {0x0075, 0x0000a3, 0x000061};
+
+        int size = unicodeidstart.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isUnicodeIdentifierStart(unicodeidstart[i]))
+            {
+                errln("FAIL \\u" + hex(unicodeidstart[i]) +
+                    " expected to be a unicode identifier start character");
+                break;
+            }
+            if (UCharacter.isUnicodeIdentifierStart(nonunicodeidstart[i]))
+            {
+                errln("FAIL \\u" + hex(nonunicodeidstart[i]) +
+                        " expected not to be a unicode identifier start " +
+                        "character");
+                break;
+            }
+            if (!UCharacter.isUnicodeIdentifierPart(unicodeidpart[i]))
+            {
+                errln("FAIL \\u" + hex(unicodeidpart[i]) +
+                    " expected to be a unicode identifier part character");
+                break;
+            }
+            if (UCharacter.isUnicodeIdentifierPart(nonunicodeidpart[i]))
+            {
+                errln("FAIL \\u" + hex(nonunicodeidpart[i]) +
+                        " expected not to be a unicode identifier part " +
+                        "character");
+                break;
+            }
+            if (!UCharacter.isIdentifierIgnorable(idignore[i]))
+            {
+                errln("FAIL \\u" + hex(idignore[i]) +
+                        " expected to be a ignorable unicode character");
+                break;
+            }
+            if (UCharacter.isIdentifierIgnorable(nonidignore[i]))
+            {
+                errln("FAIL \\u" + hex(nonidignore[i]) +
+                    " expected not to be a ignorable unicode character");
+                break;
+            }
+            logln("Ok    \\u" + hex(unicodeidstart[i]) + " and \\u" +
+                    hex(nonunicodeidstart[i]) + " and \\u" +
+                    hex(unicodeidpart[i]) + " and \\u" +
+                    hex(nonunicodeidpart[i]) + " and \\u" +
+                    hex(idignore[i]) + " and \\u" + hex(nonidignore[i]));
+        }
+    }
+
+    /**
+    * Tests for the character types, direction.<br>
+    * This method reads in UnicodeData.txt file for testing purposes. A
+    * default path is provided relative to the src path, however the user
+    * could set a system property to change the directory path.<br>
+    * e.g. java -DUnicodeData="data_directory_path"
+    * com.ibm.icu.dev.test.lang.UCharacterTest
+    */
+    public void TestUnicodeData()
+    {
+        // this is the 2 char category types used in the UnicodeData file
+        final String TYPE =
+            "LuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCfCoCsPdPsPePcPoSmScSkSoPiPf";
+
+        // directory types used in the UnicodeData file
+        // padded by spaces to make each type size 4
+        final String DIR =
+            "L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  ";
+
+        final int LASTUNICODECHAR = 0xFFFD;
+        int ch = 0,
+            index = 0,
+            type = 0,
+            dir = 0;
+
+        try
+        {
+            BufferedReader input = TestUtil.getDataReader(
+                                                "unicode/UnicodeData.txt");
+            int numErrors = 0;
+
+            while (ch != LASTUNICODECHAR)
+            {
+                String s = input.readLine();
+                if(s.length()<4 || s.startsWith("#")) {
+                    continue;
+                }
+                // geting the unicode character, its type and its direction
+                ch = Integer.parseInt(s.substring(0, 4), 16);
+                index = s.indexOf(';', 5);
+                String t = s.substring(index + 1, index + 3);
+                index += 4;
+                int oldindex = index;
+                index = s.indexOf(';', index);
+                int cc = Integer.parseInt(s.substring(oldindex, index));
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String d = s.substring(oldindex, index);
+
+                for (int i = 0; i < 6; i ++) {
+                    index = s.indexOf(';', index + 1);
+                    // skipping to the 11th field
+                }
+                // iso comment
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String isocomment = s.substring(oldindex, index);
+                // uppercase
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String upper = s.substring(oldindex, index);
+                // lowercase
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String lower = s.substring(oldindex, index);
+                // titlecase last element
+                oldindex = index + 1;
+                String title = s.substring(oldindex);
+
+                // testing the category
+                // we override the general category of some control
+                // characters
+                type = TYPE.indexOf(t);
+                if (type < 0)
+                    type = 0;
+                else
+                    type = (type >> 1) + 1;
+                if (UCharacter.getType(ch) != type)
+                {
+                    errln("FAIL \\u" + hex(ch) + " expected type " +
+                            type);
+                    break;
+                }
+
+                if (UCharacter.getIntPropertyValue(ch,
+                           UProperty.GENERAL_CATEGORY_MASK) != (1 << type)) {
+                    errln("error: getIntPropertyValue(\\u" +
+                          Integer.toHexString(ch) +
+                          ", UProperty.GENERAL_CATEGORY_MASK) != " +
+                          "getMask(getType(ch))");
+                }
+
+                // testing combining class
+                if (UCharacter.getCombiningClass(ch) != cc)
+                {
+                    errln("FAIL \\u" + hex(ch) + " expected combining " +
+                            "class " + cc);
+                    break;
+                }
+
+                // testing the direction
+                if (d.length() == 1)
+                    d = d + "   ";
+
+                dir = DIR.indexOf(d) >> 2;
+                if (UCharacter.getDirection(ch) != dir)
+                {
+                    errln("FAIL \\u" + hex(ch) +
+                        " expected direction " + dir + " but got " +
+              UCharacter.getDirection(ch));
+                    break;
+                }
+
+                byte bdir = (byte)dir;
+                if (UCharacter.getDirectionality(ch) != bdir)
+                {
+                    errln("FAIL \\u" + hex(ch) +
+                        " expected directionality " + bdir + " but got " +
+              UCharacter.getDirectionality(ch));
+                    break;
+                }
+
+                // testing iso comment
+                try{
+                    String comment = UCharacter.getISOComment(ch);
+                    if (comment == null) {
+                        comment = "";
+                    }
+                    if (!comment.equals(isocomment)) {
+                        errln("FAIL \\u" + hex(ch) +
+                            " expected iso comment " + isocomment);
+                        break;
+                    }
+                }catch(Exception e){
+                    if(e.getMessage().indexOf("unames.icu") >= 0){
+                        numErrors++;
+                    }else{
+                        throw e;
+                    }
+                }
+
+                int tempchar = ch;
+                if (upper.length() > 0) {
+                    tempchar = Integer.parseInt(upper, 16);
+                }
+                if (UCharacter.toUpperCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected uppercase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+                tempchar = ch;
+                if (lower.length() > 0) {
+                    tempchar = Integer.parseInt(lower, 16);
+                }
+                if (UCharacter.toLowerCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected lowercase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+                tempchar = ch;
+                if (title.length() > 0) {
+                    tempchar = Integer.parseInt(title, 16);
+                }
+                if (UCharacter.toTitleCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected titlecase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+            }
+            input.close();
+            if(numErrors > 0){
+                warnln("Could not find unames.icu");
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+
+        if (UCharacter.UnicodeBlock.of(0x0041)
+                                        != UCharacter.UnicodeBlock.BASIC_LATIN
+            || UCharacter.getIntPropertyValue(0x41, UProperty.BLOCK)
+                              != UCharacter.UnicodeBlock.BASIC_LATIN.getID()) {
+            errln("UCharacter.UnicodeBlock.of(\\u0041) property failed! "
+                    + "Expected : "
+                    + UCharacter.UnicodeBlock.BASIC_LATIN.getID() + " got "
+                    + UCharacter.UnicodeBlock.of(0x0041));
+        }
+
+        // sanity check on repeated properties
+        for (ch = 0xfffe; ch <= 0x10ffff;) {
+            type = UCharacter.getType(ch);
+            if (UCharacter.getIntPropertyValue(ch,
+                                               UProperty.GENERAL_CATEGORY_MASK)
+                != (1 << type)) {
+                errln("error: UCharacter.getIntPropertyValue(\\u"
+                      + Integer.toHexString(ch)
+                      + ", UProperty.GENERAL_CATEGORY_MASK) != "
+                      + "getMask(getType())");
+            }
+            if (type != UCharacterCategory.UNASSIGNED) {
+                errln("error: UCharacter.getType(\\u" + Utility.hex(ch, 4)
+                        + " != UCharacterCategory.UNASSIGNED (returns "
+                        + UCharacterCategory.toString(UCharacter.getType(ch))
+                        + ")");
+            }
+            if ((ch & 0xffff) == 0xfffe) {
+                ++ ch;
+            }
+            else {
+                ch += 0xffff;
+            }
+        }
+
+        // test that PUA is not "unassigned"
+        for(ch = 0xe000; ch <= 0x10fffd;) {
+            type = UCharacter.getType(ch);
+            if (UCharacter.getIntPropertyValue(ch,
+                                               UProperty.GENERAL_CATEGORY_MASK)
+                != (1 << type)) {
+                errln("error: UCharacter.getIntPropertyValue(\\u"
+                      + Integer.toHexString(ch)
+                      + ", UProperty.GENERAL_CATEGORY_MASK) != "
+                      + "getMask(getType())");
+            }
+
+            if (type == UCharacterCategory.UNASSIGNED) {
+                errln("error: UCharacter.getType(\\u"
+                        + Utility.hex(ch, 4)
+                        + ") == UCharacterCategory.UNASSIGNED");
+            }
+            else if (type != UCharacterCategory.PRIVATE_USE) {
+                logln("PUA override: UCharacter.getType(\\u"
+                      + Utility.hex(ch, 4) + ")=" + type);
+            }
+            if (ch == 0xf8ff) {
+                ch = 0xf0000;
+            }
+            else if (ch == 0xffffd) {
+                ch = 0x100000;
+            }
+            else {
+                ++ ch;
+            }
+        }
+    }
+
+
+    /**
+    * Test for the character names
+    */
+    public void TestNames()
+    {
+        try{
+            int length = UCharacterName.getInstance().getMaxCharNameLength();
+            if (length < 83) { // Unicode 3.2 max char name length
+               errln("getMaxCharNameLength()=" + length + " is too short");
+            }
+            // ### TODO same tests for max ISO comment length as for max name length
+
+            int c[] = {0x0061,                //LATIN SMALL LETTER A
+                       0x000284,              //LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+                       0x003401,              //CJK UNIFIED IDEOGRAPH-3401
+                       0x007fed,              //CJK UNIFIED IDEOGRAPH-7FED
+                       0x00ac00,              //HANGUL SYLLABLE GA
+                       0x00d7a3,              //HANGUL SYLLABLE HIH
+                       0x00d800, 0x00dc00,    //LINEAR B SYLLABLE B008 A
+                       0xff08,                //FULLWIDTH LEFT PARENTHESIS
+                       0x00ffe5,              //FULLWIDTH YEN SIGN
+                       0x00ffff,              //null
+                       0x0023456              //CJK UNIFIED IDEOGRAPH-23456
+                       };
+            String name[] = {
+                             "LATIN SMALL LETTER A",
+                             "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK",
+                             "CJK UNIFIED IDEOGRAPH-3401",
+                             "CJK UNIFIED IDEOGRAPH-7FED",
+                             "HANGUL SYLLABLE GA",
+                             "HANGUL SYLLABLE HIH",
+                             "",
+                             "",
+                             "FULLWIDTH LEFT PARENTHESIS",
+                             "FULLWIDTH YEN SIGN",
+                             "",
+                             "CJK UNIFIED IDEOGRAPH-23456"
+                             };
+            String oldname[] = {"", "LATIN SMALL LETTER DOTLESS J BAR HOOK", "",
+                            "",
+                            "", "", "", "", "FULLWIDTH OPENING PARENTHESIS", "",
+                            "", ""};
+            String extendedname[] = {"LATIN SMALL LETTER A",
+                                 "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK",
+                                 "CJK UNIFIED IDEOGRAPH-3401",
+                                 "CJK UNIFIED IDEOGRAPH-7FED",
+                                 "HANGUL SYLLABLE GA",
+                                 "HANGUL SYLLABLE HIH",
+                                 "<lead surrogate-D800>",
+                                 "<trail surrogate-DC00>",
+                                 "FULLWIDTH LEFT PARENTHESIS",
+                                 "FULLWIDTH YEN SIGN",
+                                 "<noncharacter-FFFF>",
+                                 "CJK UNIFIED IDEOGRAPH-23456"};
+
+            int size = c.length;
+            String str;
+            int uc;
+
+            for (int i = 0; i < size; i ++)
+            {
+                // modern Unicode character name
+                str = UCharacter.getName(c[i]);
+                if ((str == null && name[i].length() > 0) ||
+                    (str != null && !str.equals(name[i])))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected name " +
+                            name[i]);
+                    break;
+                }
+
+                // 1.0 Unicode character name
+                str = UCharacter.getName1_0(c[i]);
+                if ((str == null && oldname[i].length() > 0) ||
+                    (str != null && !str.equals(oldname[i])))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected 1.0 name " +
+                            oldname[i]);
+                    break;
+                }
+
+                // extended character name
+                str = UCharacter.getExtendedName(c[i]);
+                if (str == null || !str.equals(extendedname[i]))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected extended name " +
+                            extendedname[i]);
+                    break;
+                }
+
+                // retrieving unicode character from modern name
+                uc = UCharacter.getCharFromName(name[i]);
+                if (uc != c[i] && name[i].length() != 0)
+                {
+                    errln("FAIL " + name[i] + " expected character \\u" +
+                          hex(c[i]));
+                    break;
+                }
+
+                //retrieving unicode character from 1.0 name
+                uc = UCharacter.getCharFromName1_0(oldname[i]);
+                if (uc != c[i] && oldname[i].length() != 0)
+                {
+                    errln("FAIL " + oldname[i] + " expected 1.0 character \\u" +
+                          hex(c[i]));
+                    break;
+                }
+
+                //retrieving unicode character from 1.0 name
+                uc = UCharacter.getCharFromExtendedName(extendedname[i]);
+                if (uc != c[i] && i != 0 && (i == 1 || i == 6))
+                {
+                    errln("FAIL " + extendedname[i] +
+                          " expected extended character \\u" + hex(c[i]));
+                    break;
+                }
+            }
+
+            // test getName works with mixed-case names (new in 2.0)
+            if (0x61 != UCharacter.getCharFromName("LATin smALl letTER A")) {
+                errln("FAIL: 'LATin smALl letTER A' should result in character "
+                      + "U+0061");
+            }
+
+            if (getInclusion() >= 5) {
+                // extra testing different from icu
+                for (int i = UCharacter.MIN_VALUE; i < UCharacter.MAX_VALUE; i ++)
+                {
+                    str = UCharacter.getName(i);
+                    if (str != null && UCharacter.getCharFromName(str) != i)
+                    {
+                        errln("FAIL \\u" + hex(i) + " " + str  +
+                                            " retrieval of name and vice versa" );
+                        break;
+                    }
+                }
+            }
+
+            // Test getCharNameCharacters
+            if (getInclusion() >= 10) {
+                boolean map[] = new boolean[256];
+
+                UnicodeSet set = new UnicodeSet(1, 0); // empty set
+                UnicodeSet dumb = new UnicodeSet(1, 0); // empty set
+
+                // uprv_getCharNameCharacters() will likely return more lowercase
+                // letters than actual character names contain because
+                // it includes all the characters in lowercased names of
+                // general categories, for the full possible set of extended names.
+                UCharacterName.getInstance().getCharNameCharacters(set);
+
+                // build set the dumb (but sure-fire) way
+                Arrays.fill(map, false);
+
+                int maxLength = 0;
+                for (int cp = 0; cp < 0x110000; ++ cp) {
+                    String n = UCharacter.getExtendedName(cp);
+                    int len = n.length();
+                    if (len > maxLength) {
+                        maxLength = len;
+                    }
+
+                    for (int i = 0; i < len; ++ i) {
+                        char ch = n.charAt(i);
+                        if (!map[ch & 0xff]) {
+                            dumb.add(ch);
+                            map[ch & 0xff] = true;
+                        }
+                    }
+                }
+
+                length = UCharacterName.getInstance().getMaxCharNameLength();
+                if (length != maxLength) {
+                    errln("getMaxCharNameLength()=" + length
+                          + " differs from the maximum length " + maxLength
+                          + " of all extended names");
+                }
+
+                // compare the sets.  Where is my uset_equals?!!
+                boolean ok = true;
+                for (int i = 0; i < 256; ++ i) {
+                    if (set.contains(i) != dumb.contains(i)) {
+                        if (0x61 <= i && i <= 0x7a // a-z
+                            && set.contains(i) && !dumb.contains(i)) {
+                            // ignore lowercase a-z that are in set but not in dumb
+                            ok = true;
+                        }
+                        else {
+                            ok = false;
+                            break;
+                        }
+                    }
+                }
+
+                String pattern1 = set.toPattern(true);
+                String pattern2 = dumb.toPattern(true);
+
+                if (!ok) {
+                    errln("FAIL: getCharNameCharacters() returned " + pattern1
+                          + " expected " + pattern2
+                          + " (too many lowercase a-z are ok)");
+                } else {
+                    logln("Ok: getCharNameCharacters() returned " + pattern1);
+                }
+            }
+            // improve code coverage
+           String expected = "LATIN SMALL LETTER A|LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK|"+
+                             "CJK UNIFIED IDEOGRAPH-3401|CJK UNIFIED IDEOGRAPH-7FED|HANGUL SYLLABLE GA|"+
+                             "HANGUL SYLLABLE HIH|LINEAR B SYLLABLE B008 A|FULLWIDTH LEFT PARENTHESIS|"+
+                             "FULLWIDTH YEN SIGN|"+
+                             "null|"+ // getName returns null because 0xFFFF does not have a name, but has an extended name!
+                             "CJK UNIFIED IDEOGRAPH-23456";
+           String separator= "|";
+           String source = Utility.valueOf(c);
+           String result = UCharacter.getName(source, separator);
+           if(!result.equals(expected)){
+               errln("UCharacter.getName did not return the expected result.\n\t Expected: "+ expected+"\n\t Got: "+ result);
+           }
+
+        }catch(IllegalArgumentException e){
+            if(e.getMessage().indexOf("unames.icu") >= 0){
+                warnln("Could not find unames.icu");
+            }else{
+                throw e;
+            }
+        }
+
+    }
+
+
+    /**
+    * Testing name iteration
+    */
+    public void TestNameIteration()throws Exception
+    {
+        try {
+            ValueIterator iterator = UCharacter.getExtendedNameIterator();
+            ValueIterator.Element element = new ValueIterator.Element();
+            ValueIterator.Element old     = new ValueIterator.Element();
+            // testing subrange
+            iterator.setRange(-10, -5);
+            if (iterator.next(element)) {
+                errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+            }
+            iterator.setRange(0x110000, 0x111111);
+            if (iterator.next(element)) {
+                errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+            }
+            try {
+                iterator.setRange(50, 10);
+                errln("Fail, expected exception when encountered invalid range");
+            } catch (Exception e) {
+            }
+
+            iterator.setRange(-10, 10);
+            if (!iterator.next(element) || element.integer != 0) {
+                errln("Fail, expected iterator to return 0 when range start limit is set outside the meaningful range");
+            }
+
+            iterator.setRange(0x10FFFE, 0x200000);
+            int last = 0;
+            while (iterator.next(element)) {
+                last = element.integer;
+            }
+            if (last != 0x10FFFF) {
+                errln("Fail, expected iterator to return 0x10FFFF when range end limit is set outside the meaningful range");
+            }
+
+            iterator = UCharacter.getNameIterator();
+            iterator.setRange(0xF, 0x45);
+            while (iterator.next(element)) {
+                if (element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getName(element.integer).equals(element.value))
+                {
+                    errln("FAIL next codepoint \\u" +
+                        Integer.toHexString(element.integer) +
+                        " does not have the expected name " +
+                        UCharacter.getName(element.integer) +
+                        " instead have the name " + (String)element.value);
+                    break;
+                }
+                old.integer = element.integer;
+            }
+
+            iterator.reset();
+            iterator.next(element);
+            if (element.integer != 0x20) {
+                errln("FAIL reset in iterator");
+            }
+
+            iterator.setRange(0, 0x110000);
+            old.integer = 0;
+            while (iterator.next(element)) {
+                if (element.integer != 0 && element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getName(element.integer).equals(element.value))
+                {
+                    errln("FAIL next codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " does not have the expected name " +
+                            UCharacter.getName(element.integer) +
+                            " instead have the name " + (String)element.value);
+                    break;
+                }
+                for (int i = old.integer + 1; i < element.integer; i ++) {
+                    if (UCharacter.getName(i) != null) {
+                        errln("FAIL between codepoints are not null \\u" +
+                                Integer.toHexString(old.integer) + " and " +
+                                Integer.toHexString(element.integer) + " has " +
+                                Integer.toHexString(i) + " with a name " +
+                                UCharacter.getName(i));
+                        break;
+                    }
+                }
+                old.integer = element.integer;
+            }
+
+            iterator = UCharacter.getExtendedNameIterator();
+            old.integer = 0;
+            while (iterator.next(element)) {
+                if (element.integer != 0 && element.integer != old.integer) {
+                    errln("FAIL next returned a codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " different from \\u" +
+                            Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getExtendedName(element.integer).equals(
+                                                              element.value)) {
+                    errln("FAIL next codepoint \\u" +
+                        Integer.toHexString(element.integer) +
+                        " name should be "
+                        + UCharacter.getExtendedName(element.integer) +
+                        " instead of " + (String)element.value);
+                    break;
+                }
+                old.integer++;
+            }
+            iterator = UCharacter.getName1_0Iterator();
+            old.integer = 0;
+            while (iterator.next(element)) {
+                logln(Integer.toHexString(element.integer) + " " +
+                                                        (String)element.value);
+                if (element.integer != 0 && element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!element.value.equals(UCharacter.getName1_0(
+                                                            element.integer))) {
+                    errln("FAIL next codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " name cannot be null");
+                    break;
+                }
+                for (int i = old.integer + 1; i < element.integer; i ++) {
+                    if (UCharacter.getName1_0(i) != null) {
+                        errln("FAIL between codepoints are not null \\u" +
+                            Integer.toHexString(old.integer) + " and " +
+                            Integer.toHexString(element.integer) + " has " +
+                            Integer.toHexString(i) + " with a name " +
+                            UCharacter.getName1_0(i));
+                        break;
+                    }
+                }
+                old.integer = element.integer;
+            }
+        } catch(Exception e){
+            // !!! wouldn't preflighting be simpler?  This looks like
+            // it is effectively be doing that.  It seems that for every
+            // true error the code will call errln, which will throw the error, which
+            // this will catch, which this will then rethrow the error.  Just seems
+            // cumbersome.
+            if(e.getMessage().indexOf("unames.icu") >= 0){
+                warnln("Could not find unames.icu");
+            } else {
+                errln(e.getMessage());
+            }
+        }
+    }
+
+    /**
+    * Testing the for illegal characters
+    */
+    public void TestIsLegal()
+    {
+        int illegal[] = {0xFFFE, 0x00FFFF, 0x005FFFE, 0x005FFFF, 0x0010FFFE,
+                         0x0010FFFF, 0x110000, 0x00FDD0, 0x00FDDF, 0x00FDE0,
+                         0x00FDEF, 0xD800, 0xDC00, -1};
+        int legal[] = {0x61, 0x00FFFD, 0x0010000, 0x005FFFD, 0x0060000,
+                       0x0010FFFD, 0xFDCF, 0x00FDF0};
+        for (int count = 0; count < illegal.length; count ++) {
+            if (UCharacter.isLegal(illegal[count])) {
+                errln("FAIL \\u" + hex(illegal[count]) +
+                        " is not a legal character");
+            }
+        }
+
+        for (int count = 0; count < legal.length; count ++) {
+            if (!UCharacter.isLegal(legal[count])) {
+                errln("FAIL \\u" + hex(legal[count]) +
+                                                   " is a legal character");
+            }
+        }
+
+        String illegalStr = "This is an illegal string ";
+        String legalStr = "This is a legal string ";
+
+        for (int count = 0; count < illegal.length; count ++) {
+            StringBuffer str = new StringBuffer(illegalStr);
+            if (illegal[count] < 0x10000) {
+                str.append((char)illegal[count]);
+            }
+            else {
+                char lead = UTF16.getLeadSurrogate(illegal[count]);
+                char trail = UTF16.getTrailSurrogate(illegal[count]);
+                str.append(lead);
+                str.append(trail);
+            }
+            if (UCharacter.isLegal(str.toString())) {
+                errln("FAIL " + hex(str.toString()) +
+                      " is not a legal string");
+            }
+        }
+
+        for (int count = 0; count < legal.length; count ++) {
+            StringBuffer str = new StringBuffer(legalStr);
+            if (legal[count] < 0x10000) {
+                str.append((char)legal[count]);
+            }
+            else {
+                char lead = UTF16.getLeadSurrogate(legal[count]);
+                char trail = UTF16.getTrailSurrogate(legal[count]);
+                str.append(lead);
+                str.append(trail);
+            }
+            if (!UCharacter.isLegal(str.toString())) {
+                errln("FAIL " + hex(str.toString()) + " is a legal string");
+            }
+        }
+    }
+
+    /**
+     * Test getCodePoint
+     */
+    public void TestCodePoint()
+    {
+        int ch = 0x10000;
+        for (char i = 0xD800; i < 0xDC00; i ++) {
+            for (char j = 0xDC00; j <= 0xDFFF; j ++) {
+                if (UCharacter.getCodePoint(i, j) != ch) {
+                    errln("Error getting codepoint for surrogate " +
+                          "characters \\u"
+                          + Integer.toHexString(i) + " \\u" +
+                          Integer.toHexString(j));
+                }
+                ch ++;
+            }
+        }
+        try
+        {
+            UCharacter.getCodePoint((char)0xD7ff, (char)0xDC00);
+            errln("Invalid surrogate characters should not form a " +
+                  "supplementary");
+        } catch(Exception e) {
+        }
+        for (char i = 0; i < 0xFFFF; i++) {
+            if (i == 0xFFFE ||
+                (i >= 0xD800 && i <= 0xDFFF) ||
+                (i >= 0xFDD0 && i <= 0xFDEF)) {
+                // not a character
+                try {
+                    UCharacter.getCodePoint(i);
+                    errln("Not a character is not a valid codepoint");
+                } catch (Exception e) {
+                }
+            }
+            else {
+                if (UCharacter.getCodePoint(i) != i) {
+                    errln("A valid codepoint should return itself");
+                }
+            }
+        }
+    }
+
+    /**
+    * This method is alittle different from the type test in icu4c.
+    * But combined with testUnicodeData, they basically do the same thing.
+    */
+    public void TestIteration()
+    {
+        int limit     = 0;
+        int prevtype  = -1;
+        int shouldBeDir;
+        int test[][]={{0x41, UCharacterCategory.UPPERCASE_LETTER},
+                        {0x308, UCharacterCategory.NON_SPACING_MARK},
+                        {0xfffe, UCharacterCategory.GENERAL_OTHER_TYPES},
+                        {0xe0041, UCharacterCategory.FORMAT},
+                        {0xeffff, UCharacterCategory.UNASSIGNED}};
+
+        // default Bidi classes for unassigned code points
+        int defaultBidi[][]={{ 0x0590, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0x0600, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x07C0, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x0900, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xFB1D, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFB50, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xFE00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xFE70, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFF00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x10800, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0x11000, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x110000, UCharacterDirection.LEFT_TO_RIGHT }};
+
+        RangeValueIterator iterator = UCharacter.getTypeIterator();
+        RangeValueIterator.Element result = new RangeValueIterator.Element();
+        while (iterator.next(result)) {
+            if (result.start != limit) {
+                errln("UCharacterIteration failed: Ranges not continuous " +
+                        "0x" + Integer.toHexString(result.start));
+            }
+
+            limit = result.limit;
+            if (result.value == prevtype) {
+                errln("Type of the next set of enumeration should be different");
+            }
+            prevtype = result.value;
+
+            for (int i = result.start; i < limit; i ++) {
+                int temptype = UCharacter.getType(i);
+                if (temptype != result.value) {
+                    errln("UCharacterIteration failed: Codepoint \\u" +
+                            Integer.toHexString(i) + " should be of type " +
+                            temptype + " not " + result.value);
+                }
+            }
+
+            for (int i = 0; i < test.length; ++ i) {
+                if (result.start <= test[i][0] && test[i][0] < result.limit) {
+                    if (result.value != test[i][1]) {
+                        errln("error: getTypes() has range ["
+                              + Integer.toHexString(result.start) + ", "
+                              + Integer.toHexString(result.limit)
+                              + "] with type " + result.value
+                              + " instead of ["
+                              + Integer.toHexString(test[i][0]) + ", "
+                              + Integer.toHexString(test[i][1]));
+                    }
+                }
+            }
+
+            // LineBreak.txt specifies:
+            //   #  - Assigned characters that are not listed explicitly are given the value
+            //   #    "AL".
+            //   #  - Unassigned characters are given the value "XX".
+            //
+            // PUA characters are listed explicitly with "XX".
+            // Verify that no assigned character has "XX".
+            if (result.value != UCharacterCategory.UNASSIGNED
+                && result.value != UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                while (c < result.limit) {
+                    if (0 == UCharacter.getIntPropertyValue(c,
+                                                UProperty.LINE_BREAK)) {
+                        logln("error UProperty.LINE_BREAK(assigned \\u"
+                              + Utility.hex(c, 4) + ")=XX");
+                    }
+                    ++ c;
+                }
+            }
+
+            /*
+             * Verify default Bidi classes.
+             * For recent Unicode versions, see UCD.html.
+             *
+             * For older Unicode versions:
+             * See table 3-7 "Bidirectional Character Types" in UAX #9.
+             * http://www.unicode.org/reports/tr9/
+             *
+             * See also DerivedBidiClass.txt for Cn code points!
+             *
+             * Unicode 4.0.1/Public Review Issue #28 (http://www.unicode.org/review/resolved-pri.html)
+             * changed some default values.
+             * In particular, non-characters and unassigned Default Ignorable Code Points
+             * change from L to BN.
+             *
+             * UCD.html version 4.0.1 does not yet reflect these changes.
+             */
+            if (result.value == UCharacterCategory.UNASSIGNED
+                || result.value == UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                for (int i = 0; i < defaultBidi.length && c < result.limit;
+                     ++ i) {
+                    if (c < defaultBidi[i][0]) {
+                        while (c < result.limit && c < defaultBidi[i][0]) {
+                            // TODO change to public UCharacter.isNonCharacter(c) once it's available
+                            if(com.ibm.icu.impl.UCharacterUtility.isNonCharacter(c) || UCharacter.hasBinaryProperty(c, UProperty.DEFAULT_IGNORABLE_CODE_POINT)) {
+                                shouldBeDir=UCharacter.BOUNDARY_NEUTRAL;
+                            } else {
+                                shouldBeDir=defaultBidi[i][1];
+                            }
+
+                            if (UCharacter.getDirection(c) != shouldBeDir
+                                || UCharacter.getIntPropertyValue(c,
+                                                          UProperty.BIDI_CLASS)
+                                   != shouldBeDir) {
+                                errln("error: getDirection(unassigned/PUA "
+                                      + Integer.toHexString(c)
+                                      + ") should be "
+                                      + shouldBeDir);
+                            }
+                            ++ c;
+                        }
+                    }
+                }
+            }
+        }
+
+        iterator.reset();
+        if (iterator.next(result) == false || result.start != 0) {
+            System.out.println("result " + result.start);
+            errln("UCharacterIteration reset() failed");
+        }
+    }
+
+    /**
+     * Testing getAge
+     */
+    public void TestGetAge()
+    {
+        int ages[] = {0x41,    1, 1, 0, 0,
+                      0xffff,  1, 1, 0, 0,
+                      0x20ab,  2, 0, 0, 0,
+                      0x2fffe, 2, 0, 0, 0,
+                      0x20ac,  2, 1, 0, 0,
+                      0xfb1d,  3, 0, 0, 0,
+                      0x3f4,   3, 1, 0, 0,
+                      0x10300, 3, 1, 0, 0,
+                      0x220,   3, 2, 0, 0,
+                      0xff60,  3, 2, 0, 0};
+        for (int i = 0; i < ages.length; i += 5) {
+            VersionInfo age = UCharacter.getAge(ages[i]);
+            if (age != VersionInfo.getInstance(ages[i + 1], ages[i + 2],
+                                               ages[i + 3], ages[i + 4])) {
+                errln("error: getAge(\\u" + Integer.toHexString(ages[i]) +
+                      ") == " + age.toString() + " instead of " +
+                      ages[i + 1] + "." + ages[i + 2] + "." + ages[i + 3] +
+                      "." + ages[i + 4]);
+            }
+        }
+    }
+
+    /**
+     * Test binary non core properties
+     */
+    public void TestAdditionalProperties()
+    {
+        // test data for hasBinaryProperty()
+        int props[][] = { // code point, property
+            { 0x0627, UProperty.ALPHABETIC, 1 },
+            { 0x1034a, UProperty.ALPHABETIC, 1 },
+            { 0x2028, UProperty.ALPHABETIC, 0 },
+
+            { 0x0066, UProperty.ASCII_HEX_DIGIT, 1 },
+            { 0x0067, UProperty.ASCII_HEX_DIGIT, 0 },
+
+            { 0x202c, UProperty.BIDI_CONTROL, 1 },
+            { 0x202f, UProperty.BIDI_CONTROL, 0 },
+
+            { 0x003c, UProperty.BIDI_MIRRORED, 1 },
+            { 0x003d, UProperty.BIDI_MIRRORED, 0 },
+
+            /* see Unicode Corrigendum #6 at http://www.unicode.org/versions/corrigendum6.html */
+            { 0x2018, UProperty.BIDI_MIRRORED, 0 },
+            { 0x201d, UProperty.BIDI_MIRRORED, 0 },
+            { 0x201f, UProperty.BIDI_MIRRORED, 0 },
+            { 0x301e, UProperty.BIDI_MIRRORED, 0 },
+
+            { 0x058a, UProperty.DASH, 1 },
+            { 0x007e, UProperty.DASH, 0 },
+
+            { 0x0c4d, UProperty.DIACRITIC, 1 },
+            { 0x3000, UProperty.DIACRITIC, 0 },
+
+            { 0x0e46, UProperty.EXTENDER, 1 },
+            { 0x0020, UProperty.EXTENDER, 0 },
+
+            { 0xfb1d, UProperty.FULL_COMPOSITION_EXCLUSION, 1 },
+            { 0x1d15f, UProperty.FULL_COMPOSITION_EXCLUSION, 1 },
+            { 0xfb1e, UProperty.FULL_COMPOSITION_EXCLUSION, 0 },
+
+            { 0x110a, UProperty.NFD_INERT, 1 },      /* Jamo L */
+            { 0x0308, UProperty.NFD_INERT, 0 },
+
+            { 0x1164, UProperty.NFKD_INERT, 1 },     /* Jamo V */
+            { 0x1d79d, UProperty.NFKD_INERT, 0 },   /* math compat version of xi */
+
+            { 0x0021, UProperty.NFC_INERT, 1 },      /* ! */
+            { 0x0061, UProperty.NFC_INERT, 0 },     /* a */
+            { 0x00e4, UProperty.NFC_INERT, 0 },     /* a-umlaut */
+            { 0x0102, UProperty.NFC_INERT, 0 },     /* a-breve */
+            { 0xac1c, UProperty.NFC_INERT, 0 },     /* Hangul LV */
+            { 0xac1d, UProperty.NFC_INERT, 1 },      /* Hangul LVT */
+
+            { 0x1d79d, UProperty.NFKC_INERT, 0 },   /* math compat version of xi */
+            { 0x2a6d6, UProperty.NFKC_INERT, 1 },    /* Han, last of CJK ext. B */
+
+            { 0x00e4, UProperty.SEGMENT_STARTER, 1 },
+            { 0x0308, UProperty.SEGMENT_STARTER, 0 },
+            { 0x110a, UProperty.SEGMENT_STARTER, 1 }, /* Jamo L */
+            { 0x1164, UProperty.SEGMENT_STARTER, 0 },/* Jamo V */
+            { 0xac1c, UProperty.SEGMENT_STARTER, 1 }, /* Hangul LV */
+            { 0xac1d, UProperty.SEGMENT_STARTER, 1 }, /* Hangul LVT */
+
+            { 0x0044, UProperty.HEX_DIGIT, 1 },
+            { 0xff46, UProperty.HEX_DIGIT, 1 },
+            { 0x0047, UProperty.HEX_DIGIT, 0 },
+
+            { 0x30fb, UProperty.HYPHEN, 1 },
+            { 0xfe58, UProperty.HYPHEN, 0 },
+
+            { 0x2172, UProperty.ID_CONTINUE, 1 },
+            { 0x0307, UProperty.ID_CONTINUE, 1 },
+            { 0x005c, UProperty.ID_CONTINUE, 0 },
+
+            { 0x2172, UProperty.ID_START, 1 },
+            { 0x007a, UProperty.ID_START, 1 },
+            { 0x0039, UProperty.ID_START, 0 },
+
+            { 0x4db5, UProperty.IDEOGRAPHIC, 1 },
+            { 0x2f999, UProperty.IDEOGRAPHIC, 1 },
+            { 0x2f99, UProperty.IDEOGRAPHIC, 0 },
+
+            { 0x200c, UProperty.JOIN_CONTROL, 1 },
+            { 0x2029, UProperty.JOIN_CONTROL, 0 },
+
+            { 0x1d7bc, UProperty.LOWERCASE, 1 },
+            { 0x0345, UProperty.LOWERCASE, 1 },
+            { 0x0030, UProperty.LOWERCASE, 0 },
+
+            { 0x1d7a9, UProperty.MATH, 1 },
+            { 0x2135, UProperty.MATH, 1 },
+            { 0x0062, UProperty.MATH, 0 },
+
+            { 0xfde1, UProperty.NONCHARACTER_CODE_POINT, 1 },
+            { 0x10ffff, UProperty.NONCHARACTER_CODE_POINT, 1 },
+            { 0x10fffd, UProperty.NONCHARACTER_CODE_POINT, 0 },
+
+            { 0x0022, UProperty.QUOTATION_MARK, 1 },
+            { 0xff62, UProperty.QUOTATION_MARK, 1 },
+            { 0xd840, UProperty.QUOTATION_MARK, 0 },
+
+            { 0x061f, UProperty.TERMINAL_PUNCTUATION, 1 },
+            { 0xe003f, UProperty.TERMINAL_PUNCTUATION, 0 },
+
+            { 0x1d44a, UProperty.UPPERCASE, 1 },
+            { 0x2162, UProperty.UPPERCASE, 1 },
+            { 0x0345, UProperty.UPPERCASE, 0 },
+
+            { 0x0020, UProperty.WHITE_SPACE, 1 },
+            { 0x202f, UProperty.WHITE_SPACE, 1 },
+            { 0x3001, UProperty.WHITE_SPACE, 0 },
+
+            { 0x0711, UProperty.XID_CONTINUE, 1 },
+            { 0x1d1aa, UProperty.XID_CONTINUE, 1 },
+            { 0x007c, UProperty.XID_CONTINUE, 0 },
+
+            { 0x16ee, UProperty.XID_START, 1 },
+            { 0x23456, UProperty.XID_START, 1 },
+            { 0x1d1aa, UProperty.XID_START, 0 },
+
+            /*
+             * Version break:
+             * The following properties are only supported starting with the
+             * Unicode version indicated in the second field.
+             */
+            { -1, 0x320, 0 },
+
+            { 0x180c, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 1 },
+            { 0xfe02, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 1 },
+            { 0x1801, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 0 },
+
+            { 0x0341, UProperty.DEPRECATED, 1 },
+            { 0xe0041, UProperty.DEPRECATED, 1 },       /* Changed from Unicode 5 to 5.1 */
+
+            { 0x00a0, UProperty.GRAPHEME_BASE, 1 },
+            { 0x0a4d, UProperty.GRAPHEME_BASE, 0 },
+            { 0xff9d, UProperty.GRAPHEME_BASE, 1 },
+            { 0xff9f, UProperty.GRAPHEME_BASE, 0 },      /* changed from Unicode 3.2 to 4  and again 5 to 5.1 */
+
+            { 0x0300, UProperty.GRAPHEME_EXTEND, 1 },
+            { 0xff9d, UProperty.GRAPHEME_EXTEND, 0 }, 
+            { 0xff9f, UProperty.GRAPHEME_EXTEND, 1 },   /* changed from Unicode 3.2 to 4 and again 5 to 5.1 */
+            { 0x0603, UProperty.GRAPHEME_EXTEND, 0 },
+
+            { 0x0a4d, UProperty.GRAPHEME_LINK, 1 },
+            { 0xff9f, UProperty.GRAPHEME_LINK, 0 },
+
+            { 0x2ff7, UProperty.IDS_BINARY_OPERATOR, 1 },
+            { 0x2ff3, UProperty.IDS_BINARY_OPERATOR, 0 },
+
+            { 0x2ff3, UProperty.IDS_TRINARY_OPERATOR, 1 },
+            { 0x2f03, UProperty.IDS_TRINARY_OPERATOR, 0 },
+
+            { 0x0ec1, UProperty.LOGICAL_ORDER_EXCEPTION, 1 },
+            { 0xdcba, UProperty.LOGICAL_ORDER_EXCEPTION, 0 },
+
+            { 0x2e9b, UProperty.RADICAL, 1 },
+            { 0x4e00, UProperty.RADICAL, 0 },
+
+            { 0x012f, UProperty.SOFT_DOTTED, 1 },
+            { 0x0049, UProperty.SOFT_DOTTED, 0 },
+
+            { 0xfa11, UProperty.UNIFIED_IDEOGRAPH, 1 },
+            { 0xfa12, UProperty.UNIFIED_IDEOGRAPH, 0 },
+
+            { -1, 0x401, 0 }, /* version break for Unicode 4.0.1 */
+
+            { 0x002e, UProperty.S_TERM, 1 },
+            { 0x0061, UProperty.S_TERM, 0 },
+
+            { 0x180c, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xfe03, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xe01ef, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xe0200, UProperty.VARIATION_SELECTOR, 0 },
+
+            /* enum/integer type properties */
+            /* test default Bidi classes for unassigned code points */
+            { 0x0590, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x05cf, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x05ed, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x07f2, UProperty.BIDI_CLASS, UCharacterDirection.DIR_NON_SPACING_MARK }, /* Nko, new in Unicode 5.0 */
+            { 0x07fe, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT }, /* unassigned R */
+            { 0x08ba, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xfb37, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xfb42, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10806, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10909, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10fe4, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+
+            { 0x0605, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x061c, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x063f, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x070e, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x0775, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfbc2, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfd90, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfefe, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+
+            { 0x02AF, UProperty.BLOCK, UCharacter.UnicodeBlock.IPA_EXTENSIONS.getID() },
+            { 0x0C4E, UProperty.BLOCK, UCharacter.UnicodeBlock.TELUGU.getID()},
+            { 0x155A, UProperty.BLOCK, UCharacter.UnicodeBlock.UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS.getID() },
+            { 0x1717, UProperty.BLOCK, UCharacter.UnicodeBlock.TAGALOG.getID() },
+            { 0x1900, UProperty.BLOCK, UCharacter.UnicodeBlock.LIMBU.getID() },
+            { 0x1AFF, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID()},
+            { 0x3040, UProperty.BLOCK, UCharacter.UnicodeBlock.HIRAGANA.getID()},
+            { 0x1D0FF, UProperty.BLOCK, UCharacter.UnicodeBlock.BYZANTINE_MUSICAL_SYMBOLS.getID()},
+            { 0x50000, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID() },
+            { 0xEFFFF, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID() },
+            { 0x10D0FF, UProperty.BLOCK, UCharacter.UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B.getID() },
+
+            /* UProperty.CANONICAL_COMBINING_CLASS tested for assigned characters in TestUnicodeData() */
+            { 0xd7d7, UProperty.CANONICAL_COMBINING_CLASS, 0 },
+
+            { 0x00A0, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NOBREAK },
+            { 0x00A8, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.COMPAT },
+            { 0x00bf, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NONE },
+            { 0x00c0, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0x1E9B, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0xBCDE, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0xFB5D, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.MEDIAL },
+            { 0x1D736, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.FONT },
+            { 0xe0033, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NONE },
+
+            { 0x0009, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0x0020, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NARROW },
+            { 0x00B1, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x20A9, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.HALFWIDTH },
+            { 0x2FFB, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x3000, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.FULLWIDTH },
+            { 0x35bb, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x58bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0xD7A3, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0xEEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x1D198, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0x20000, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x2F8C7, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x3a5bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x5a5bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0xFEEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x10EEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+
+            /* UProperty.GENERAL_CATEGORY tested for assigned characters in TestUnicodeData() */
+            { 0xd7d7, UProperty.GENERAL_CATEGORY, 0 },
+
+            { 0x0444, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.NO_JOINING_GROUP },
+            { 0x0639, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.AIN },
+            { 0x072A, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.DALATH_RISH },
+            { 0x0647, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HEH },
+            { 0x06C1, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HEH_GOAL },
+            { 0x06C3, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HAMZA_ON_HEH_GOAL },
+
+            { 0x200C, UProperty.JOINING_TYPE, UCharacter.JoiningType.NON_JOINING },
+            { 0x200D, UProperty.JOINING_TYPE, UCharacter.JoiningType.JOIN_CAUSING },
+            { 0x0639, UProperty.JOINING_TYPE, UCharacter.JoiningType.DUAL_JOINING },
+            { 0x0640, UProperty.JOINING_TYPE, UCharacter.JoiningType.JOIN_CAUSING },
+            { 0x06C3, UProperty.JOINING_TYPE, UCharacter.JoiningType.RIGHT_JOINING },
+            { 0x0300, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+            { 0x070F, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+            { 0xe0033, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+
+            /* TestUnicodeData() verifies that no assigned character has "XX" (unknown) */
+            { 0xe7e7, UProperty.LINE_BREAK, UCharacter.LineBreak.UNKNOWN },
+            { 0x10fffd, UProperty.LINE_BREAK, UCharacter.LineBreak.UNKNOWN },
+            { 0x0028, UProperty.LINE_BREAK, UCharacter.LineBreak.OPEN_PUNCTUATION },
+            { 0x232A, UProperty.LINE_BREAK, UCharacter.LineBreak.CLOSE_PUNCTUATION },
+            { 0x3401, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0x4e02, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0x20004, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0xf905, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0xdb7e, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0xdbfd, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0xdffc, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0x2762, UProperty.LINE_BREAK, UCharacter.LineBreak.EXCLAMATION },
+            { 0x002F, UProperty.LINE_BREAK, UCharacter.LineBreak.BREAK_SYMBOLS },
+            { 0x1D49C, UProperty.LINE_BREAK, UCharacter.LineBreak.ALPHABETIC },
+            { 0x1731, UProperty.LINE_BREAK, UCharacter.LineBreak.ALPHABETIC },
+
+            /* UProperty.NUMERIC_TYPE tested in TestNumericProperties() */
+
+            /* UProperty.SCRIPT tested in TestUScriptCodeAPI() */
+
+            { 0x1100, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x1111, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x1159, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x115f, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+
+            { 0x1160, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x1161, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x1172, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x11a2, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+
+            { 0x11a8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11b8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11c8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11f9, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+
+            { 0x115a, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x115e, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11a3, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11a7, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11fa, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11ff, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+
+            { 0xac00, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xac1c, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xc5ec, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xd788, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+
+            { 0xac01, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xac1b, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xac1d, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xc5ee, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xd7a3, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+
+            { 0xd7a4, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+
+            { -1, 0x410, 0 }, /* version break for Unicode 4.1 */
+
+            { 0x00d7, UProperty.PATTERN_SYNTAX, 1 },
+            { 0xfe45, UProperty.PATTERN_SYNTAX, 1 },
+            { 0x0061, UProperty.PATTERN_SYNTAX, 0 },
+
+            { 0x0020, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x0085, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x200f, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x00a0, UProperty.PATTERN_WHITE_SPACE, 0 },
+            { 0x3000, UProperty.PATTERN_WHITE_SPACE, 0 },
+
+            { 0x1d200, UProperty.BLOCK, UCharacter.UnicodeBlock.ANCIENT_GREEK_MUSICAL_NOTATION_ID },
+            { 0x2c8e,  UProperty.BLOCK, UCharacter.UnicodeBlock.COPTIC_ID },
+            { 0xfe17,  UProperty.BLOCK, UCharacter.UnicodeBlock.VERTICAL_FORMS_ID },
+
+            { 0x1a00,  UProperty.SCRIPT, UScript.BUGINESE },
+            { 0x2cea,  UProperty.SCRIPT, UScript.COPTIC },
+            { 0xa82b,  UProperty.SCRIPT, UScript.SYLOTI_NAGRI },
+            { 0x103d0, UProperty.SCRIPT, UScript.OLD_PERSIAN },
+
+            { 0xcc28, UProperty.LINE_BREAK, UCharacter.LineBreak.H2 },
+            { 0xcc29, UProperty.LINE_BREAK, UCharacter.LineBreak.H3 },
+            { 0xac03, UProperty.LINE_BREAK, UCharacter.LineBreak.H3 },
+            { 0x115f, UProperty.LINE_BREAK, UCharacter.LineBreak.JL },
+            { 0x11aa, UProperty.LINE_BREAK, UCharacter.LineBreak.JT },
+            { 0x11a1, UProperty.LINE_BREAK, UCharacter.LineBreak.JV },
+
+            { 0xb2c9, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.LVT },
+            { 0x036f, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.EXTEND },
+            { 0x0000, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.CONTROL },
+            { 0x1160, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.V },
+
+            { 0x05f4, UProperty.WORD_BREAK, UCharacter.WordBreak.MIDLETTER },
+            { 0x4ef0, UProperty.WORD_BREAK, UCharacter.WordBreak.OTHER },
+            { 0x19d9, UProperty.WORD_BREAK, UCharacter.WordBreak.NUMERIC },
+            { 0x2044, UProperty.WORD_BREAK, UCharacter.WordBreak.MIDNUM },
+
+            { 0xfffd, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.OTHER },
+            { 0x1ffc, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.UPPER },
+            { 0xff63, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.CLOSE },
+            { 0x2028, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.SEP },
+
+            /* undefined UProperty values */
+            { 0x61, 0x4a7, 0 },
+            { 0x234bc, 0x15ed, 0 }
+        };
+
+
+        if (UCharacter.getIntPropertyMinValue(UProperty.DASH) != 0
+            || UCharacter.getIntPropertyMinValue(UProperty.BIDI_CLASS) != 0
+            || UCharacter.getIntPropertyMinValue(UProperty.BLOCK)!= 0  /* j2478 */
+            || UCharacter.getIntPropertyMinValue(UProperty.SCRIPT)!= 0 /* JB#2410 */
+            || UCharacter.getIntPropertyMinValue(0x2345) != 0) {
+            errln("error: UCharacter.getIntPropertyMinValue() wrong");
+        }
+
+        if( UCharacter.getIntPropertyMaxValue(UProperty.DASH)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.DASH) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.ID_CONTINUE)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.ID_CONTINUE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BINARY_LIMIT-1)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BINARY_LIMIT-1) wrong\n");
+        }
+
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS)!=UCharacterDirection.CHAR_DIRECTION_COUNT-1 ) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BLOCK)!=UCharacter.UnicodeBlock.COUNT-1 ) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BLOCK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK)!=UCharacter.LineBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT)!=UScript.CODE_LIMIT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.NUMERIC_TYPE)!=UCharacter.NumericType.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.NUMERIC_TYPE) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.GENERAL_CATEGORY)!=UCharacterCategory.CHAR_CATEGORY_COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.GENERAL_CATEGORY) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.HANGUL_SYLLABLE_TYPE)!=UCharacter.HangulSyllableType.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.HANGUL_SYLLABLE_TYPE) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.GRAPHEME_CLUSTER_BREAK)!=UCharacter.GraphemeClusterBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.GRAPHEME_CLUSTER_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.SENTENCE_BREAK)!=UCharacter.SentenceBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.SENTENCE_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.WORD_BREAK)!=UCharacter.WordBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.WORD_BREAK) wrong\n");
+        }
+        /*JB#2410*/
+        if( UCharacter.getIntPropertyMaxValue(0x2345)!=-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(0x2345) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.DECOMPOSITION_TYPE) !=  (UCharacter.DecompositionType.COUNT - 1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.DECOMPOSITION_TYPE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.JOINING_GROUP) !=   (UCharacter.JoiningGroup.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.JOINING_GROUP) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.JOINING_TYPE) !=  (UCharacter.JoiningType.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.JOINING_TYPE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.EAST_ASIAN_WIDTH) !=  (UCharacter.EastAsianWidth.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.EAST_ASIAN_WIDTH) wrong\n");
+        }
+
+        VersionInfo version = UCharacter.getUnicodeVersion();
+
+        // test hasBinaryProperty()
+        for (int i = 0; i < props.length; ++ i) {
+            if (props[i][0] < 0) {
+                if (version.compareTo(VersionInfo.getInstance(props[i][1] >> 8,
+                                                          (props[i][1] >> 4) & 0xF,
+                                                          props[i][1] & 0xF,
+                                                          0)) < 0) {
+                    break;
+                }
+                continue;
+            }
+            boolean expect = true;
+            if (props[i][2] == 0) {
+                expect = false;
+            }
+            if (props[i][1] < UProperty.INT_START) {
+                if (UCharacter.hasBinaryProperty(props[i][0], props[i][1])
+                    != expect) {
+                    errln("error: UCharacter.hasBinaryProperty(\\u" +
+                          Integer.toHexString(props[i][0]) + ", " +
+                          Integer.toHexString(props[i][1])
+                          + ") has an error expected " + props[i][2]);
+                }
+            }
+
+            int retVal = UCharacter.getIntPropertyValue(props[i][0], props[i][1]);
+            if (retVal != props[i][2]) {
+                errln("error: UCharacter.getIntPropertyValue(\\u" +
+                      Utility.hex(props[i][0], 4) +
+                      ", " + props[i][1] + " is wrong, should be "
+                      + props[i][2] + " not " + retVal);
+            }
+
+            // test separate functions, too
+            switch (props[i][1]) {
+            case UProperty.ALPHABETIC:
+                if (UCharacter.isUAlphabetic(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUAlphabetic(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            case UProperty.LOWERCASE:
+                if (UCharacter.isULowercase(props[i][0]) != expect) {
+                    errln("error: UCharacter.isULowercase(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " +props[i][2]);
+                }
+                break;
+            case UProperty.UPPERCASE:
+                if (UCharacter.isUUppercase(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUUppercase(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            case UProperty.WHITE_SPACE:
+                if (UCharacter.isUWhiteSpace(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUWhiteSpace(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    public void TestNumericProperties()
+    {
+        // see UnicodeData.txt, DerivedNumericValues.txt
+        int testvar[][] = {
+            { 0x0F33, UCharacter.NumericType.NUMERIC },
+            { 0x0C66, UCharacter.NumericType.DECIMAL },
+            { 0x2159, UCharacter.NumericType.NUMERIC },
+            { 0x00BD, UCharacter.NumericType.NUMERIC },
+            { 0x0031, UCharacter.NumericType.DECIMAL },
+            { 0x10320, UCharacter.NumericType.NUMERIC },
+            { 0x0F2B, UCharacter.NumericType.NUMERIC },
+            { 0x00B2, UCharacter.NumericType.DIGIT }, /* Unicode 4.0 change */
+            { 0x1813, UCharacter.NumericType.DECIMAL },
+            { 0x2173, UCharacter.NumericType.NUMERIC },
+            { 0x278E, UCharacter.NumericType.DIGIT },
+            { 0x1D7F2, UCharacter.NumericType.DECIMAL },
+            { 0x247A, UCharacter.NumericType.DIGIT },
+            { 0x1372, UCharacter.NumericType.NUMERIC },
+            { 0x216B, UCharacter.NumericType.NUMERIC },
+            { 0x16EE, UCharacter.NumericType.NUMERIC },
+            { 0x249A, UCharacter.NumericType.NUMERIC },
+            { 0x303A, UCharacter.NumericType.NUMERIC },
+            { 0x32B2, UCharacter.NumericType.NUMERIC },
+            { 0x1375, UCharacter.NumericType.NUMERIC },
+            { 0x10323, UCharacter.NumericType.NUMERIC },
+            { 0x0BF1, UCharacter.NumericType.NUMERIC },
+            { 0x217E, UCharacter.NumericType.NUMERIC },
+            { 0x2180, UCharacter.NumericType.NUMERIC },
+            { 0x2181, UCharacter.NumericType.NUMERIC },
+            { 0x137C, UCharacter.NumericType.NUMERIC },
+            { 0x61, UCharacter.NumericType.NONE },
+            { 0x3000, UCharacter.NumericType.NONE },
+            { 0xfffe, UCharacter.NumericType.NONE },
+            { 0x10301, UCharacter.NumericType.NONE },
+            { 0xe0033, UCharacter.NumericType.NONE },
+            { 0x10ffff, UCharacter.NumericType.NONE },
+            /* Unicode 4.0 Changes */
+            { 0x96f6,  UCharacter.NumericType.NUMERIC },
+            { 0x4e00,  UCharacter.NumericType.NUMERIC },
+            { 0x58f1,  UCharacter.NumericType.NUMERIC },
+            { 0x5f10,  UCharacter.NumericType.NUMERIC },
+            { 0x5f0e,  UCharacter.NumericType.NUMERIC },
+            { 0x8086,  UCharacter.NumericType.NUMERIC },
+            { 0x7396,  UCharacter.NumericType.NUMERIC },
+            { 0x5345,  UCharacter.NumericType.NUMERIC },
+            { 0x964c,  UCharacter.NumericType.NUMERIC },
+            { 0x4edf,  UCharacter.NumericType.NUMERIC },
+            { 0x4e07,  UCharacter.NumericType.NUMERIC },
+            { 0x4ebf,  UCharacter.NumericType.NUMERIC },
+            { 0x5146,  UCharacter.NumericType.NUMERIC }
+        };
+
+        double expected[] = {-1/(double)2,
+                             0,
+                             1/(double)6,
+                             1/(double)2,
+                             1,
+                             1,
+                             3/(double)2,
+                             2,
+                             3,
+                             4,
+                             5,
+                             6,
+                             7,
+                             10,
+                             12,
+                             17,
+                             19,
+                             30,
+                             37,
+                             40,
+                             50,
+                             100,
+                             500,
+                             1000,
+                             5000,
+                             10000,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             0 ,
+                             1 ,
+                             1 ,
+                             2 ,
+                             3 ,
+                             4 ,
+                             9 ,
+                             30 ,
+                             100 ,
+                             1000 ,
+                             10000 ,
+                             100000000 ,
+                             1000000000000.00
+        };
+
+
+        for (int i = 0; i < testvar.length; ++ i) {
+            int c = testvar[i][0];
+            int type = UCharacter.getIntPropertyValue(c,
+                                                      UProperty.NUMERIC_TYPE);
+            double nv = UCharacter.getUnicodeNumericValue(c);
+
+            if (type != testvar[i][1]) {
+                errln("UProperty.NUMERIC_TYPE(\\u" + Utility.hex(c, 4)
+                       + ") = " + type + " should be " + testvar[i][1]);
+            }
+            if (0.000001 <= Math.abs(nv - expected[i])) {
+                errln("UCharacter.getNumericValue(\\u" + Utility.hex(c, 4)
+                        + ") = " + nv + " should be " + expected[i]);
+            }
+        }
+    }
+
+    /**
+     * Test the property values API.  See JB#2410.
+     */
+    public void TestPropertyValues() {
+        int i, p, min, max;
+
+        /* Min should be 0 for everything. */
+        /* Until JB#2478 is fixed, the one exception is UProperty.BLOCK. */
+        for (p=UProperty.INT_START; p<UProperty.INT_LIMIT; ++p) {
+            min = UCharacter.getIntPropertyMinValue(p);
+            if (min != 0) {
+                if (p == UProperty.BLOCK) {
+                    /* This is okay...for now.  See JB#2487.
+                       TODO Update this for JB#2487. */
+                } else {
+                    String name;
+                    name = UCharacter.getPropertyName(p, UProperty.NameChoice.LONG);
+                    errln("FAIL: UCharacter.getIntPropertyMinValue(" + name + ") = " +
+                          min + ", exp. 0");
+                }
+            }
+        }
+
+        if (UCharacter.getIntPropertyMinValue(UProperty.GENERAL_CATEGORY_MASK)
+            != 0
+            || UCharacter.getIntPropertyMaxValue(
+                                               UProperty.GENERAL_CATEGORY_MASK)
+               != -1) {
+            errln("error: UCharacter.getIntPropertyMin/MaxValue("
+                  + "UProperty.GENERAL_CATEGORY_MASK) is wrong");
+        }
+
+        /* Max should be -1 for invalid properties. */
+        max = UCharacter.getIntPropertyMaxValue(-1);
+        if (max != -1) {
+            errln("FAIL: UCharacter.getIntPropertyMaxValue(-1) = " +
+                  max + ", exp. -1");
+        }
+
+        /* Script should return 0 for an invalid code point. If the API
+           throws an exception then that's fine too. */
+        for (i=0; i<2; ++i) {
+            try {
+                int script = 0;
+                String desc = null;
+                switch (i) {
+                case 0:
+                    script = UScript.getScript(-1);
+                    desc = "UScript.getScript(-1)";
+                    break;
+                case 1:
+                    script = UCharacter.getIntPropertyValue(-1, UProperty.SCRIPT);
+                    desc = "UCharacter.getIntPropertyValue(-1, UProperty.SCRIPT)";
+                    break;
+                }
+                if (script != 0) {
+                    errln("FAIL: " + desc + " = " + script + ", exp. 0");
+                }
+            } catch (IllegalArgumentException e) {}
+        }
+    }
+
+    public void TestIsBMP()
+    {
+        int ch[] = {0x0, -1, 0xffff, 0x10ffff, 0xff, 0x1ffff};
+        boolean flag[] = {true, false, true, false, true, false};
+        for (int i = 0; i < ch.length; i ++) {
+            if (UCharacter.isBMP(ch[i]) != flag[i]) {
+                errln("Fail: \\u" + Utility.hex(ch[i], 8)
+                      + " failed at UCharacter.isBMP");
+            }
+        }
+    }
+
+    /* add characters from a serialized set to a normal one */
+    private static void _setAddSerialized(UnicodeSet set, USerializedSet sset) {
+     //  int start, end;
+       int i, count;
+
+       count=sset.countRanges();
+       int[] range = new int[2];
+       for(i=0; i<count; ++i) {
+           sset.getRange(i,range);
+           set.add(range[0],range[1]);
+       }
+    }
+
+    private boolean showADiffB(UnicodeSet a, UnicodeSet b,
+                                        String a_name, String b_name,
+                                        boolean expect,
+                                        boolean diffIsError){
+        int i, start, end, length;
+        boolean equal;
+        equal=true;
+        i=0;
+        for(;;) {
+            start  = a.getRangeStart(i);
+            length = (i < a.getRangeCount()) ? 0 : a.getRangeCount();
+            end    = a.getRangeEnd(i);
+
+            if(length!=0) {
+                return equal; /* done with code points, got a string or -1 */
+            }
+
+            if(expect!=b.contains(start, end)) {
+                equal=false;
+                while(start<=end) {
+                    if(expect!=b.contains(start)) {
+                        if(diffIsError) {
+                            if(expect) {
+                                errln("error: "+ a_name +" contains "+ hex(start)+" but "+ b_name +" does not");
+                            } else {
+                                errln("error: "+a_name +" and "+ b_name+" both contain "+hex(start) +" but should not intersect");
+                            }
+                        } else {
+                            if(expect) {
+                                logln("info: "+a_name +" contains "+hex(start)+ "but " + b_name +" does not");
+                            } else {
+                                logln("info: "+a_name +" and "+b_name+" both contain "+hex(start)+" but should not intersect");
+                            }
+                        }
+                    }
+                    ++start;
+                }
+            }
+
+            ++i;
+        }
+    }
+    private boolean showAMinusB(UnicodeSet a, UnicodeSet b,
+                                        String a_name, String b_name,
+                                        boolean diffIsError) {
+
+        return showADiffB(a, b, a_name, b_name, true, diffIsError);
+    }
+
+    private boolean showAIntersectB(UnicodeSet a, UnicodeSet b,
+                                            String a_name, String b_name,
+                                            boolean diffIsError) {
+        return showADiffB(a, b, a_name, b_name, false, diffIsError);
+    }
+
+    private boolean compareUSets(UnicodeSet a, UnicodeSet b,
+                                         String a_name, String b_name,
+                                         boolean diffIsError) {
+        return
+            showAMinusB(a, b, a_name, b_name, diffIsError) &&
+            showAMinusB(b, a, b_name, a_name, diffIsError);
+    }
+
+   /* various tests for consistency of UCD data and API behavior */
+   public void TestConsistency() {
+       char[] buffer16 = new char[300];
+       char[] buffer   = new char[300];
+       UnicodeSet set1, set2, set3, set4;
+
+       USerializedSet sset;
+       int start, end;
+       int i, length;
+
+       String hyphenPattern = "[:Hyphen:]";
+       String dashPattern = "[:Dash:]";
+       String lowerPattern = "[:Lowercase:]";
+       String formatPattern = "[:Cf:]";
+       String alphaPattern  =  "[:Alphabetic:]";
+
+       /*
+        * It used to be that UCD.html and its precursors said
+        * "Those dashes used to mark connections between pieces of words,
+        *  plus the Katakana middle dot."
+        *
+        * Unicode 4 changed 00AD Soft Hyphen to Cf and removed it from Dash
+        * but not from Hyphen.
+        * UTC 94 (2003mar) decided to leave it that way and to changed UCD.html.
+        * Therefore, do not show errors when testing the Hyphen property.
+        */
+       logln("Starting with Unicode 4, inconsistencies with [:Hyphen:] are\n"
+                   + "known to the UTC and not considered errors.\n");
+
+       set1=new UnicodeSet(hyphenPattern);
+       set2=new UnicodeSet(dashPattern);
+
+           /* remove the Katakana middle dot(s) from set1 */
+           set1.remove(0x30fb);
+           set2.remove (0xff65); /* halfwidth variant */
+           showAMinusB(set1, set2, "[:Hyphen:]", "[:Dash:]", false);
+
+
+       /* check that Cf is neither Hyphen nor Dash nor Alphabetic */
+       set3=new UnicodeSet(formatPattern);
+       set4=new UnicodeSet(alphaPattern);
+
+       showAIntersectB(set3, set1, "[:Cf:]", "[:Hyphen:]", false);
+       showAIntersectB(set3, set2, "[:Cf:]", "[:Dash:]", true);
+       showAIntersectB(set3, set4, "[:Cf:]", "[:Alphabetic:]", true);
+       /*
+        * Check that each lowercase character has "small" in its name
+        * and not "capital".
+        * There are some such characters, some of which seem odd.
+        * Use the verbose flag to see these notices.
+        */
+       set1=new UnicodeSet(lowerPattern);
+
+       for(i=0;; ++i) {
+//               try{
+//                   length=set1.getItem(set1, i, &start, &end, NULL, 0, &errorCode);
+//               }catch(Exception e){
+//                   break;
+//               }
+            start = set1.getRangeStart(i);
+            end = set1.getRangeEnd(i);
+            length = i<set1.getRangeCount() ? set1.getRangeCount() : 0;
+           if(length!=0) {
+               break; /* done with code points, got a string or -1 */
+           }
+
+           while(start<=end) {
+               String name=UCharacter.getName(start);
+
+               if( (name.indexOf("SMALL")< 0 || name.indexOf("CAPITAL")<-1) &&
+                   name.indexOf("SMALL CAPITAL")==-1
+               ) {
+                   logln("info: [:Lowercase:] contains U+"+hex(start) + " whose name does not suggest lowercase: " + name);
+               }
+               ++start;
+           }
+       }
+
+
+       /*
+        * Test for an example that unorm_getCanonStartSet() delivers
+        * all characters that compose from the input one,
+        * even in multiple steps.
+        * For example, the set for "I" (0049) should contain both
+        * I-diaeresis (00CF) and I-diaeresis-acute (1E2E).
+        * In general, the set for the middle such character should be a subset
+        * of the set for the first.
+        */
+       set1=new UnicodeSet();
+       set2=new UnicodeSet();
+       sset = new USerializedSet();
+       NormalizerImpl.getCanonStartSet(0x49,sset);
+       _setAddSerialized(set1, sset);
+
+       /* enumerate all characters that are plausible to be latin letters */
+       for(start=0xa0; start<0x2000; ++start) {
+           if(NormalizerImpl.getDecomposition(start, false, buffer16,0,buffer16.length) > 1 && buffer[0]==0x0049) {
+               set2.add(start);
+           }
+       }
+
+       compareUSets(set1, set2,
+                    "[canon start set of 0049]", "[all c with canon decomp with 0049]",
+                    false);
+
+   }
+
+    public void TestCoverage() {
+        //cover forDigit
+        char ch1 = UCharacter.forDigit(7, 11);
+        assertEquals("UCharacter.forDigit ", "7", String.valueOf(ch1));
+        char ch2 = UCharacter.forDigit(17, 20);
+        assertEquals("UCharacter.forDigit ", "h", String.valueOf(ch2));
+
+        //Jitterbug 4451, for coverage
+        for (int i = 0x0041; i < 0x005B; i++) {
+            if (!UCharacter.isJavaLetter(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a letter");
+            if (!UCharacter.isJavaIdentifierStart(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a Java identifier start character");
+            if (!UCharacter.isJavaLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) + " expected not to be a Java letter");
+            if (!UCharacter.isJavaIdentifierPart(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a Java identifier part character");
+        }
+        char[] spaces = {'\t','\n','\f','\r',' '};
+        for (int i = 0; i < spaces.length; i++){
+            if (!UCharacter.isSpace(spaces[i]))
+                errln("FAIL \\u" + hex(spaces[i]) + " expected to be a Java space");
+        }
+        if (!UCharacter.getStringPropertyValue(UProperty.AGE,'\u3400',0).equals("3.0.0.0")){
+            errln("FAIL \\u3400 expected to be 3.0.0.0");
+        }
+    }
+
+    public void TestCasePropsDummy() {
+        // code coverage for UCaseProps.getDummy() 
+        if(UCaseProps.getDummy().tolower(0x41)!=0x41) {
+            errln("UCaseProps.getDummy().tolower(0x41)!=0x41");
+        }
+    }
+
+    public void TestBiDiPropsDummy() {
+        // code coverage for UBiDiProps.getDummy() 
+        if(UBiDiProps.getDummy().getClass(0x20)!=0) {
+            errln("UBiDiProps.getDummy().getClass(0x20)!=0");
+        }
+    }
+    
+    public void TestBlockData()
+    {
+        Class ubc = UCharacter.UnicodeBlock.class;
+        
+        for (int b = 1; b < UCharacter.UnicodeBlock.COUNT; b += 1) {
+            UCharacter.UnicodeBlock blk = UCharacter.UnicodeBlock.getInstance(b);
+            int id = blk.getID();
+            String name = blk.toString();
+            
+            if (id != b) {
+                errln("UCharacter.UnicodeBlock.getInstance(" + b + ") returned a block with id = " + id);
+            }
+            
+            try {
+                if (ubc.getField(name + "_ID").getInt(blk) != b) {
+                    errln("UCharacter.UnicodeBlock.getInstance(" + b + ") returned a block with a name of " + name +
+                          " which does not match the block id.");
+                }
+            } catch (Exception e) {
+                errln("Couldn't get the id name for id " + b);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
new file mode 100644
index 0000000..9461a65
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
@@ -0,0 +1,88 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author aheninger
+ *
+ */
+public class UCharacterThreadTest extends TestFmwk {
+  // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterThreadTest()
+    {
+    }
+    
+      // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+            UCharacterThreadTest test = new UCharacterThreadTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+              e.printStackTrace();
+        }
+    }
+    
+    
+    //
+    //  Test multi-threaded parallel calls to UCharacter.getName(codePoint)
+    //  Regression test for ticket 6264.
+    //
+    public void TestUCharactersGetName() throws InterruptedException {
+        List threads = new LinkedList();
+        for(int t=0; t<20; t++) {
+          int codePoint = 47 + t;
+          String correctName = UCharacter.getName(codePoint);
+          GetNameThread thread = new GetNameThread(codePoint, correctName);
+          thread.start();
+          threads.add(thread);
+        }
+        ListIterator i = threads.listIterator();
+        while (i.hasNext()) {
+            GetNameThread thread = (GetNameThread)i.next();
+            thread.join();
+            if (!thread.correctName.equals(thread.actualName)) {
+                errln("FAIL, expected \"" + thread.correctName + "\", got \"" + thread.actualName + "\"");
+            }
+        }
+      }
+
+      private static class GetNameThread extends Thread {
+        private final int codePoint;
+        private final String correctName;
+        private String actualName;
+
+        GetNameThread(int codePoint, String correctName) {
+           this.codePoint = codePoint;
+           this.correctName = correctName;
+        }
+
+        public void run() {
+          for(int i=0; i<10000; i++) {
+            actualName = UCharacter.getName(codePoint);
+            if (!correctName.equals(actualName)) {
+              break;
+            }
+          }
+        }
+      }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java b/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
new file mode 100644
index 0000000..f4888c5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
@@ -0,0 +1,127 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 5 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class UPropertyAliasesTest extends TestFmwk {
+  
+    public UPropertyAliasesTest() {}
+    
+    public static void main(String[] args) throws Exception {
+        new UPropertyAliasesTest().run(args);
+    }
+
+    /**
+     * Test the property names and property value names API.
+     */
+    public void TestPropertyNames() {
+        int p, v, choice, rev;
+        for (p=0; ; ++p) {
+            boolean sawProp = false;
+            for (choice=0; ; ++choice) {
+                String name = null;
+                try {
+                    name = UCharacter.getPropertyName(p, choice);
+                    if (!sawProp) log("prop " + p + ":");
+                    String n = (name != null) ? ("\"" + name + '"') : "null";
+                    log(" " + choice + "=" + n);
+                    sawProp = true;
+                } catch (IllegalArgumentException e) {
+                    if (choice > 0) break;
+                }
+                if (name != null) {
+                    /* test reverse mapping */
+                    rev = UCharacter.getPropertyEnum(name);
+                    if (rev != p) {
+                        errln("Property round-trip failure: " + p + " -> " +
+                              name + " -> " + rev);
+                    }
+                }
+            }
+            if (sawProp) {
+                /* looks like a valid property; check the values */
+                String pname = UCharacter.getPropertyName(p, UProperty.NameChoice.LONG);
+                int max = 0;
+                if (p == UProperty.CANONICAL_COMBINING_CLASS) {
+                    max = 255;
+                } else if (p == UProperty.GENERAL_CATEGORY_MASK) {
+                    /* it's far too slow to iterate all the way up to
+                       the real max, U_GC_P_MASK */
+                    max = 0x1000; // U_GC_NL_MASK;
+                } else if (p == UProperty.BLOCK) {
+                    /* UBlockCodes, unlike other values, start at 1 */
+                    max = 1;
+                }
+                logln("");
+                for (v=-1; ; ++v) {
+                    boolean sawValue = false;
+                    for (choice=0; ; ++choice) {
+                        String vname = null;
+                        try {
+                            vname = UCharacter.getPropertyValueName(p, v, choice);
+                            String n = (vname != null) ? ("\"" + vname + '"') : "null";
+                            if (!sawValue) log(" " + pname + ", value " + v + ":");
+                            log(" " + choice + "=" + n);
+                            sawValue = true;
+                        }
+                        catch (IllegalArgumentException e) {
+                            if (choice>0) break;
+                        }
+                        if (vname != null) {
+                            /* test reverse mapping */
+                            rev = UCharacter.getPropertyValueEnum(p, vname);
+                            if (rev != v) {
+                                errln("Value round-trip failure (" + pname +
+                                      "): " + v + " -> " +
+                                      vname + " -> " + rev);
+                            }
+                        }
+                    }
+                    if (sawValue) {
+                        logln("");
+                    }
+                    if (!sawValue && v>=max) break;
+                }
+            }
+            if (!sawProp) {
+                if (p>=UProperty.STRING_LIMIT) {
+                    break;
+                } else if (p>=UProperty.DOUBLE_LIMIT) {
+                    p = UProperty.STRING_START - 1;
+                } else if (p>=UProperty.MASK_LIMIT) {
+                    p = UProperty.DOUBLE_START - 1;
+                } else if (p>=UProperty.INT_LIMIT) {
+                    p = UProperty.MASK_START - 1;
+                } else if (p>=UProperty.BINARY_LIMIT) {
+                    p = UProperty.INT_START - 1;
+                }
+            }
+        }
+        
+        int i = UCharacter.getIntPropertyMinValue(
+                                        UProperty.CANONICAL_COMBINING_CLASS);
+        try {
+            for (; i <= UCharacter.getIntPropertyMaxValue(
+                                          UProperty.CANONICAL_COMBINING_CLASS);
+                 i ++) {   
+                 UCharacter.getPropertyValueName(
+                                           UProperty.CANONICAL_COMBINING_CLASS,
+                                           i, UProperty.NameChoice.LONG);
+            }
+        }      
+        catch (IllegalArgumentException e) {
+            errln("0x" + Integer.toHexString(i) 
+                  + " should have a null property value name");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UTF16Test.java b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
new file mode 100644
index 0000000..88e72dc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
@@ -0,0 +1,1644 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.UTF16Util;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.impl.Utility;
+
+/**
+* Testing class for UTF16
+* @author Syn Wee Quek
+* @since feb 09 2001
+*/
+public final class UTF16Test extends TestFmwk
+{
+    // constructor ===================================================
+
+    /**
+     * Constructor
+     */
+    public UTF16Test()
+    {
+    }
+
+    // public methods ================================================
+
+    /**
+     * Testing UTF16 class methods append
+     */
+    public void TestAppend()
+    {
+          StringBuffer strbuff = new StringBuffer("this is a string ");
+          char array[] = new char[UCharacter.MAX_VALUE >> 2];
+          int strsize = strbuff.length();
+          int arraysize = strsize;
+
+          Utility.getChars(strbuff, 0, strsize, array, 0);
+          for (int i = 1; i < UCharacter.MAX_VALUE; i += 100) {
+        UTF16.append(strbuff, i);
+        arraysize = UTF16.append(array, arraysize, i);
+
+        String arraystr = new String(array, 0, arraysize);
+        if (!arraystr.equals(strbuff.toString())) {
+        errln("FAIL Comparing char array append and string append " +
+              "with 0x" + Integer.toHexString(i));
+        }
+
+        // this is to cater for the combination of 0xDBXX 0xDC50 which
+        // forms a supplementary character
+        if (i == 0xDC51) {
+        strsize --;
+        }
+
+        if (UTF16.countCodePoint(strbuff) != strsize + (i / 100) + 1) {
+        errln("FAIL Counting code points in string appended with " +
+              " 0x" + Integer.toHexString(i));
+        break;
+        }
+    }
+
+    // coverage for new 1.5 - cover only so no real test
+    strbuff = new StringBuffer();
+    UTF16.appendCodePoint(strbuff, 0x10000);
+    if (strbuff.length() != 2) {
+        errln("fail appendCodePoint");
+    }
+    }
+
+    /**
+     * Testing UTF16 class methods bounds
+     */
+    public void TestBounds()
+    {
+          StringBuffer strbuff =
+                        //0     12345     6     7     8     9
+        new StringBuffer("\udc000123\ud800\udc00\ud801\udc01\ud802");
+          String str = strbuff.toString();
+          char array[] = str.toCharArray();
+          int boundtype[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.LEAD_SURROGATE_BOUNDARY,
+               UTF16.TRAIL_SURROGATE_BOUNDARY,
+               UTF16.LEAD_SURROGATE_BOUNDARY,
+               UTF16.TRAIL_SURROGATE_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY};
+          int length = str.length();
+          for (int i = 0; i < length; i ++) {
+        if (UTF16.bounds(str, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+        if (UTF16.bounds(strbuff, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+        if (UTF16.bounds(array, 0, length, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+          }
+          // does not straddle between supplementary character
+          int start = 4;
+          int limit = 9;
+          int subboundtype1[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY};
+          try {
+        UTF16.bounds(array, start, limit, -1);
+        errln("FAIL Out of bounds index in bounds should fail");
+          } catch (Exception e) {
+        // getting rid of warnings
+        System.out.print("");
+          }
+
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype1[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype1[i] + " at offset " + i);
+        }
+          }
+
+          // starts from the mid of a supplementary character
+          int subboundtype2[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY};
+
+          start = 6;
+          limit = 9;
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype2[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype2[i] + " at offset " + i);
+        }
+          }
+
+          // ends in the mid of a supplementary character
+          int subboundtype3[] = {UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY,
+                   UTF16.SINGLE_CHAR_BOUNDARY};
+          start = 5;
+          limit = 8;
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype3[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype3[i] + " at offset " + i);
+        }
+          }
+    }
+
+    /**
+     * Testing UTF16 class methods charAt and charAtCodePoint
+     */
+    public void TestCharAt()
+    {
+          StringBuffer strbuff =
+        new StringBuffer("12345\ud800\udc0167890\ud800\udc02");
+          if (UTF16.charAt(strbuff, 0) != '1' || UTF16.charAt(strbuff, 2) != '3'
+              || UTF16.charAt(strbuff, 5) != 0x10001 ||
+        UTF16.charAt(strbuff, 6) != 0x10001 ||
+        UTF16.charAt(strbuff, 12) != 0x10002 ||
+        UTF16.charAt(strbuff, 13) != 0x10002) {
+        errln("FAIL Getting character from string buffer error" );
+          }
+          String str = strbuff.toString();
+          if (UTF16.charAt(str, 0) != '1' || UTF16.charAt(str, 2) != '3' ||
+        UTF16.charAt(str, 5) != 0x10001 || UTF16.charAt(str, 6) != 0x10001
+        || UTF16.charAt(str, 12) != 0x10002 ||
+        UTF16.charAt(str, 13) != 0x10002)
+        {
+              errln("FAIL Getting character from string error" );
+        }
+          char array[] = str.toCharArray();
+          int start = 0;
+          int limit = str.length();
+          if (UTF16.charAt(array, start, limit, 0) != '1' ||
+        UTF16.charAt(array, start, limit, 2) != '3' ||
+        UTF16.charAt(array, start, limit, 5) != 0x10001 ||
+        UTF16.charAt(array, start, limit, 6) != 0x10001 ||
+        UTF16.charAt(array, start, limit, 12) != 0x10002 ||
+        UTF16.charAt(array, start, limit, 13) != 0x10002) {
+        errln("FAIL Getting character from array error" );
+          }
+          // check the sub array here.
+          start = 6;
+          limit = 13;
+          try {
+        UTF16.charAt(array, start, limit, -1);
+        errln("FAIL out of bounds error expected");
+          } catch (Exception e) {
+        System.out.print("");
+          }
+          try {
+        UTF16.charAt(array, start, limit, 8);
+        errln("FAIL out of bounds error expected");
+          } catch (Exception e) {
+        System.out.print("");
+          }
+          if (UTF16.charAt(array, start, limit, 0) != 0xdc01) {
+        errln("FAIL Expected result in subarray 0xdc01");
+          }
+          if (UTF16.charAt(array, start, limit, 6) != 0xd800) {
+        errln("FAIL Expected result in subarray 0xd800");
+          }
+          ReplaceableString replaceable = new ReplaceableString(str);
+          if (UTF16.charAt(replaceable, 0) != '1' ||
+              UTF16.charAt(replaceable, 2) != '3' ||
+        UTF16.charAt(replaceable, 5) != 0x10001 ||
+        UTF16.charAt(replaceable, 6) != 0x10001 ||
+        UTF16.charAt(replaceable, 12) != 0x10002 ||
+        UTF16.charAt(replaceable, 13) != 0x10002) {
+        errln("FAIL Getting character from replaceable error" );
+          }
+    }
+
+    /**
+     * Testing UTF16 class methods countCodePoint
+     */
+    public void TestCountCodePoint()
+    {
+        StringBuffer strbuff = new StringBuffer("");
+        char         array[] = null;
+        if (UTF16.countCodePoint(strbuff) != 0 ||
+        UTF16.countCodePoint("") != 0 ||
+        UTF16.countCodePoint(array,0 ,0) != 0) {
+        errln("FAIL Counting code points for empty strings");
+        }
+
+        strbuff = new StringBuffer("this is a string ");
+        String str = strbuff.toString();
+        array = str.toCharArray();
+        int size = str.length();
+
+        if (UTF16.countCodePoint(array, 0, 0) != 0) {
+        errln("FAIL Counting code points for 0 offset array");
+        }
+
+        if (UTF16.countCodePoint(str) != size ||
+        UTF16.countCodePoint(strbuff) != size ||
+        UTF16.countCodePoint(array, 0, size) != size) {
+        errln("FAIL Counting code points");
+        }
+
+        UTF16.append(strbuff, 0x10000);
+        str = strbuff.toString();
+        array = str.toCharArray();
+        if (UTF16.countCodePoint(str) != size + 1 ||
+        UTF16.countCodePoint(strbuff) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 2) != size + 1) {
+        errln("FAIL Counting code points");
+        }
+        UTF16.append(strbuff, 0x61);
+        str = strbuff.toString();
+        array = str.toCharArray();
+        if (UTF16.countCodePoint(str) != size + 2 ||
+        UTF16.countCodePoint(strbuff) != size + 2 ||
+        UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 2) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 3) != size + 2) {
+        errln("FAIL Counting code points");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods delete
+     */
+    public void TestDelete()
+    {                                        //01234567890123456
+        StringBuffer strbuff = new StringBuffer("these are strings");
+        int size = strbuff.length();
+        char array[] = strbuff.toString().toCharArray();
+
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        try {
+        UTF16.delete(strbuff, strbuff.length());
+        errln("FAIL deleting out of bounds character should fail");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        UTF16.delete(strbuff, strbuff.length() - 1);
+        if (!strbuff.toString().equals("the string")) {
+        errln("FAIL expected result after deleting characters is " +
+          "\"the string\"");
+        }
+
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        try {
+        UTF16.delete(array, size, size);
+        errln("FAIL deleting out of bounds character should fail");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        size = UTF16.delete(array, size, size - 1);
+        String str = new String(array, 0, size);
+        if (!str.equals("the string")) {
+        errln("FAIL expected result after deleting characters is " +
+          "\"the string\"");
+        }
+    //012345678     9     01     2      3     4
+        strbuff = new StringBuffer("string: \ud800\udc00 \ud801\udc01 \ud801\udc01");
+        size = strbuff.length();
+        array = strbuff.toString().toCharArray();
+
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 9);
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 9);
+        UTF16.delete(strbuff, 6);
+        UTF16.delete(strbuff, 6);
+        if (!strbuff.toString().equals("string")) {
+        errln("FAIL expected result after deleting characters is \"string\"");
+        }
+
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 9);
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 9);
+        size = UTF16.delete(array, size, 6);
+        size = UTF16.delete(array, size, 6);
+        str = new String(array, 0, size);
+        if (!str.equals("string")) {
+        errln("FAIL expected result after deleting characters is \"string\"");
+        }
+    }
+
+    /**
+     * Testing findOffsetFromCodePoint and findCodePointOffset
+     */
+    public void TestfindOffset()
+    {
+        // jitterbug 47
+        String str = "a\uD800\uDC00b";
+        StringBuffer strbuff = new StringBuffer(str);
+        char array[] = str.toCharArray();
+        int limit = str.length();
+        if (UTF16.findCodePointOffset(str, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(str, 0) != 0 ||
+        UTF16.findCodePointOffset(strbuff, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 0) != 0 ||
+        UTF16.findCodePointOffset(array, 0, limit, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 0) != 0) {
+        errln("FAIL Getting the first codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(str, 1) != 1 ||
+        UTF16.findCodePointOffset(strbuff, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 1) != 1 ||
+        UTF16.findCodePointOffset(array, 0, limit, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 1) != 1) {
+        errln("FAIL Getting the second codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(str, 2) != 3 ||
+        UTF16.findCodePointOffset(strbuff, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 2) != 3 ||
+        UTF16.findCodePointOffset(array, 0, limit, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 2) != 3) {
+        errln("FAIL Getting the third codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(str, 3) != 4 ||
+        UTF16.findCodePointOffset(strbuff, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 3) != 4 ||
+        UTF16.findCodePointOffset(array, 0, limit, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 3) != 4) {
+        errln("FAIL Getting the last codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 4) != 3 ||
+        UTF16.findCodePointOffset(strbuff, 4) != 3 ||
+        UTF16.findCodePointOffset(array, 0, limit, 4) != 3) {
+        errln("FAIL Getting the length offset to a string with " +
+          "supplementary characters");
+        }
+        try {
+        UTF16.findCodePointOffset(str, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(str, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findCodePointOffset(strbuff, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(strbuff, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findCodePointOffset(array, 0, limit, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+
+        if (UTF16.findCodePointOffset(array, 1, 3, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(array, 1, 3, 0) != 0 ||
+        UTF16.findCodePointOffset(array, 1, 3, 1) != 0 ||
+        UTF16.findCodePointOffset(array, 1, 3, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 1, 3, 1) != 2) {
+        errln("FAIL Getting valid codepoint offset in sub array");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods getCharCount, *Surrogate
+     */
+    public void TestGetCharCountSurrogate()
+    {
+        if (UTF16.getCharCount(0x61) != 1 ||
+        UTF16.getCharCount(0x10000) != 2) {
+        errln("FAIL getCharCount result failure");
+        }
+        if (UTF16.getLeadSurrogate(0x61) != 0 ||
+        UTF16.getTrailSurrogate(0x61) != 0x61 ||
+        UTF16.isLeadSurrogate((char)0x61) ||
+        UTF16.isTrailSurrogate((char)0x61) ||
+        UTF16.getLeadSurrogate(0x10000) != 0xd800 ||
+        UTF16.getTrailSurrogate(0x10000) != 0xdc00 ||
+        UTF16.isLeadSurrogate((char)0xd800) != true ||
+        UTF16.isTrailSurrogate((char)0xd800) ||
+        UTF16.isLeadSurrogate((char)0xdc00) ||
+        UTF16.isTrailSurrogate((char)0xdc00) != true) {
+        errln("FAIL *Surrogate result failure");
+        }
+
+        if (UTF16.isSurrogate((char)0x61) || !UTF16.isSurrogate((char)0xd800)
+            || !UTF16.isSurrogate((char)0xdc00)) {
+        errln("FAIL isSurrogate result failure");
+        }
+    }
+
+    /**
+     * Testing UTF16 class method insert
+     */
+    public void TestInsert()
+    {
+        StringBuffer strbuff = new StringBuffer("0123456789");
+        char array[] = new char[128];
+        Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+        int length = 10;
+        UTF16.insert(strbuff, 5, 't');
+        UTF16.insert(strbuff, 5, 's');
+        UTF16.insert(strbuff, 5, 'e');
+        UTF16.insert(strbuff, 5, 't');
+        if (!(strbuff.toString().equals("01234test56789"))) {
+        errln("FAIL inserting \"test\"");
+        }
+        length = UTF16.insert(array, length, 5, 't');
+        length = UTF16.insert(array, length, 5, 's');
+        length = UTF16.insert(array, length, 5, 'e');
+        length = UTF16.insert(array, length, 5, 't');
+        String str = new String(array, 0, length);
+        if (!(str.equals("01234test56789"))) {
+        errln("FAIL inserting \"test\"");
+        }
+        UTF16.insert(strbuff, 0, 0x10000);
+        UTF16.insert(strbuff, 11, 0x10000);
+        UTF16.insert(strbuff, strbuff.length(), 0x10000);
+        if (!(strbuff.toString().equals(
+                    "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        errln("FAIL inserting supplementary characters");
+        }
+        length = UTF16.insert(array, length, 0, 0x10000);
+        length = UTF16.insert(array, length, 11, 0x10000);
+        length = UTF16.insert(array, length, length, 0x10000);
+        str = new String(array, 0, length);
+        if (!(str.equals(
+             "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        errln("FAIL inserting supplementary characters");
+        }
+
+        try {
+        UTF16.insert(strbuff, -1, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(strbuff, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(array, length, -1, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(array, length, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        // exceeded array size
+        UTF16.insert(array, array.length, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    /*
+     * Testing moveCodePointOffset APIs
+     */
+
+    //
+    //   checkMoveCodePointOffset
+    //      Run a single test case through each of the moveCodePointOffset() functions.
+    //          Parameters -
+    //              s               The string to work in.
+    //              startIdx        The starting position within the string.
+    //              amount          The number of code points to move.
+    //              expectedResult  The string index after the move, or -1 if the
+    //                              function should throw an exception.
+    private void checkMoveCodePointOffset(String s, int startIdx, int amount, int expectedResult) {
+        // Test with the String flavor of moveCodePointOffset
+        try {
+            int result = UTF16.moveCodePointOffset(s, startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(String \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(String \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Test with the StringBuffer flavor of moveCodePointOffset
+        StringBuffer sb = new StringBuffer(s);
+        try {
+            int result = UTF16.moveCodePointOffset(sb, startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(StringBuffer \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(StringBuffer \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Test with the char[] flavor of moveCodePointOffset
+        char ca[] = s.toCharArray();
+        try {
+            int result = UTF16.moveCodePointOffset(ca, 0, s.length(), startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(char[] \"" + s + "\", 0, " + s.length()
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(char[] \"" + s + "\", 0, " + s.length()
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Put the test string into the interior of a char array,
+        //   run test on the subsection of the array.
+        char ca2[] = new char[s.length()+2];
+        ca2[0] = (char)0xd800;
+        ca2[s.length()+1] = (char)0xd8ff;
+        s.getChars(0, s.length(), ca2, 1);
+        try {
+            int result = UTF16.moveCodePointOffset(ca2, 1, s.length()+1, startIdx, amount);
+            if (result != expectedResult) {
+                errln("UTF16.moveCodePointOffset(char[] \"" + "." + s + ".\", 1, " + (s.length()+1)
+                        + ", " + startIdx + ", " + amount + ")" +
+                         " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("UTF16.moveCodePointOffset(char[] \"" + "." + s + ".\", 1, " + (s.length()+1)
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+    }
+
+
+    public void TestMoveCodePointOffset()
+    {
+        // checkMoveCodePointOffset(String, startIndex, amount, expected );  expected=-1 for exception.
+
+        // No Supplementary chars
+        checkMoveCodePointOffset("abc", 1,  1, 2);
+        checkMoveCodePointOffset("abc", 1, -1, 0);
+        checkMoveCodePointOffset("abc", 1, -2, -1);
+        checkMoveCodePointOffset("abc", 1,  2, 3);
+        checkMoveCodePointOffset("abc", 1,  3, -1);
+        checkMoveCodePointOffset("abc", 1,  0, 1);
+
+        checkMoveCodePointOffset("abc", 3, 0, 3);
+        checkMoveCodePointOffset("abc", 4, 0, -1);
+        checkMoveCodePointOffset("abc", 0, 0, 0);
+        checkMoveCodePointOffset("abc", -1, 0, -1);
+
+        checkMoveCodePointOffset("", 0, 0, 0);
+        checkMoveCodePointOffset("", 0, -1, -1);
+        checkMoveCodePointOffset("", 0, 1, -1);
+
+        checkMoveCodePointOffset("a", 0, 0, 0);
+        checkMoveCodePointOffset("a", 1, 0, 1);
+        checkMoveCodePointOffset("a", 0, 1, 1);
+        checkMoveCodePointOffset("a", 1, -1, 0);
+
+
+        // Supplementary in middle of string
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 1, 1);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 2, 3);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 3, 4);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 4, -1);
+
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -1, 3);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -2, 1);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -3, 0);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -4, -1);
+
+        // Supplementary at start of string
+        checkMoveCodePointOffset("\ud800\udc00ab", 0, 1, 2);
+        checkMoveCodePointOffset("\ud800\udc00ab", 1, 1, 2);
+        checkMoveCodePointOffset("\ud800\udc00ab", 2, 1, 3);
+        checkMoveCodePointOffset("\ud800\udc00ab", 2, -1, 0);
+        checkMoveCodePointOffset("\ud800\udc00ab", 1, -1, 0);
+        checkMoveCodePointOffset("\ud800\udc00ab", 0, -1, -1);
+
+
+        // Supplementary at end of string
+        checkMoveCodePointOffset("ab\ud800\udc00", 1, 1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 2, 1, 4);
+        checkMoveCodePointOffset("ab\ud800\udc00", 3, 1, 4);
+        checkMoveCodePointOffset("ab\ud800\udc00", 4, 1, -1);
+
+        checkMoveCodePointOffset("ab\ud800\udc00", 5, -2, -1);
+        checkMoveCodePointOffset("ab\ud800\udc00", 4, -1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 3, -1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 2, -1, 1);
+        checkMoveCodePointOffset("ab\ud800\udc00", 1, -1, 0);
+
+        // Unpaired surrogate in middle
+        checkMoveCodePointOffset("a\ud800b", 0, 1, 1);
+        checkMoveCodePointOffset("a\ud800b", 1, 1, 2);
+        checkMoveCodePointOffset("a\ud800b", 2, 1, 3);
+
+        checkMoveCodePointOffset("a\udc00b", 0, 1, 1);
+        checkMoveCodePointOffset("a\udc00b", 1, 1, 2);
+        checkMoveCodePointOffset("a\udc00b", 2, 1, 3);
+
+        checkMoveCodePointOffset("a\udc00\ud800b", 0, 1, 1);
+        checkMoveCodePointOffset("a\udc00\ud800b", 1, 1, 2);
+        checkMoveCodePointOffset("a\udc00\ud800b", 2, 1, 3);
+        checkMoveCodePointOffset("a\udc00\ud800b", 3, 1, 4);
+
+        checkMoveCodePointOffset("a\ud800b", 1, -1, 0);
+        checkMoveCodePointOffset("a\ud800b", 2, -1, 1);
+        checkMoveCodePointOffset("a\ud800b", 3, -1, 2);
+
+        checkMoveCodePointOffset("a\udc00b", 1, -1, 0);
+        checkMoveCodePointOffset("a\udc00b", 2, -1, 1);
+        checkMoveCodePointOffset("a\udc00b", 3, -1, 2);
+
+        checkMoveCodePointOffset("a\udc00\ud800b", 1, -1, 0);
+        checkMoveCodePointOffset("a\udc00\ud800b", 2, -1, 1);
+        checkMoveCodePointOffset("a\udc00\ud800b", 3, -1, 2);
+        checkMoveCodePointOffset("a\udc00\ud800b", 4, -1, 3);
+
+        // Unpaired surrogate at start
+        checkMoveCodePointOffset("\udc00ab", 0, 1, 1);
+        checkMoveCodePointOffset("\ud800ab", 0, 2, 2);
+        checkMoveCodePointOffset("\ud800\ud800ab", 0, 3, 3);
+        checkMoveCodePointOffset("\udc00\udc00ab", 0, 4, 4);
+
+        checkMoveCodePointOffset("\udc00ab", 2, -1, 1);
+        checkMoveCodePointOffset("\ud800ab", 1, -1, 0);
+        checkMoveCodePointOffset("\ud800ab", 1, -2, -1);
+        checkMoveCodePointOffset("\ud800\ud800ab", 2, -1, 1);
+        checkMoveCodePointOffset("\udc00\udc00ab", 2, -2, 0);
+        checkMoveCodePointOffset("\udc00\udc00ab", 2, -3, -1);
+
+        // Unpaired surrogate at end
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 3, 1, 4);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 2, 1, 3);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 1, 1, 2);
+
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 4, -1, 3);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 3, -1, 2);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 2, -1, 1);
+
+
+                               //01234567890     1     2     3     45678901234
+        String str = new String("0123456789\ud800\udc00\ud801\udc010123456789");
+        int move1[] = { 1,  2,  3,  4,  5,  6,  7,  8,  9, 10,
+                       12, 12, 14, 14, 15, 16, 17, 18, 19, 20,
+                       21, 22, 23, 24};
+        int move2[] = { 2,  3,  4,  5,  6,  7,  8,  9, 10, 12,
+                       14, 14, 15, 15, 16, 17, 18, 19, 20, 21,
+                       22, 23, 24, -1};
+        int move3[] = { 3,  4,  5,  6,  7,  8,  9, 10, 12, 14,
+                       15, 15, 16, 16, 17, 18, 19, 20, 21, 22,
+                       23, 24, -1, -1};
+        int size = str.length();
+        for (int i = 0; i < size; i ++) {
+            checkMoveCodePointOffset(str, i, 1, move1[i]);
+            checkMoveCodePointOffset(str, i, 2, move2[i]);
+            checkMoveCodePointOffset(str, i, 3, move3[i]);
+        }
+
+        char strarray[] = str.toCharArray();
+        if (UTF16.moveCodePointOffset(strarray, 9, 13, 0, 2) != 3) {
+            errln("FAIL: Moving offset 0 by 2 codepoint in subarray [9, 13] " +
+            "expected result 3");
+        }
+        if (UTF16.moveCodePointOffset(strarray, 9, 13, 1, 2) != 4) {
+            errln("FAIL: Moving offset 1 by 2 codepoint in subarray [9, 13] " +
+            "expected result 4");
+        }
+        if (UTF16.moveCodePointOffset(strarray, 11, 14, 0, 2) != 3) {
+            errln("FAIL: Moving offset 0 by 2 codepoint in subarray [11, 14] "
+                    + "expected result 3");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods setCharAt
+     */
+    public void TestSetCharAt()
+    {
+        StringBuffer strbuff = new StringBuffer("012345");
+        char array[] = new char[128];
+        Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+        int length = 6;
+        for (int i = 0; i < length; i ++) {
+        UTF16.setCharAt(strbuff, i, '0');
+        UTF16.setCharAt(array, length, i, '0');
+        }
+        String str = new String(array, 0, length);
+        if (!(strbuff.toString().equals("000000")) ||
+        !(str.equals("000000"))) {
+        errln("FAIL: setChar to '0' failed");
+        }
+        UTF16.setCharAt(strbuff, 0, 0x10000);
+        UTF16.setCharAt(strbuff, 4, 0x10000);
+        UTF16.setCharAt(strbuff, 7, 0x10000);
+        if (!(strbuff.toString().equals(
+                    "\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        errln("FAIL: setChar to 0x10000 failed");
+        }
+        length = UTF16.setCharAt(array, length, 0, 0x10000);
+        length = UTF16.setCharAt(array, length, 4, 0x10000);
+        length = UTF16.setCharAt(array, length, 7, 0x10000);
+        str = new String(array, 0, length);
+        if (!(str.equals("\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        errln("FAIL: setChar to 0x10000 failed");
+        }
+        UTF16.setCharAt(strbuff, 0, '0');
+        UTF16.setCharAt(strbuff, 1, '1');
+        UTF16.setCharAt(strbuff, 2, '2');
+        UTF16.setCharAt(strbuff, 4, '3');
+        UTF16.setCharAt(strbuff, 4, '4');
+        UTF16.setCharAt(strbuff, 5, '5');
+        if (!strbuff.toString().equals("012345")) {
+        errln("Fail converting supplementaries in StringBuffer to BMP " +
+          "characters");
+        }
+        length = UTF16.setCharAt(array, length, 0, '0');
+        length = UTF16.setCharAt(array, length, 1, '1');
+        length = UTF16.setCharAt(array, length, 2, '2');
+        length = UTF16.setCharAt(array, length, 4, '3');
+        length = UTF16.setCharAt(array, length, 4, '4');
+        length = UTF16.setCharAt(array, length, 5, '5');
+        str = new String(array, 0, length);
+        if (!str.equals("012345")) {
+        errln("Fail converting supplementaries in array to BMP " +
+          "characters");
+        }
+        try {
+        UTF16.setCharAt(strbuff, -1, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(array, length, -1, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(strbuff, length, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(array, length, length, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    /**
+     * Testing UTF16 valueof APIs
+     */
+    public void TestValueOf()
+    {
+        if(UCharacter.getCodePoint('\ud800','\udc00')!=0x10000){
+            errln("FAIL: getCodePoint('\ud800','\udc00')");
+        }
+        if (!UTF16.valueOf(0x61).equals("a") ||
+        !UTF16.valueOf(0x10000).equals("\ud800\udc00")) {
+        errln("FAIL: valueof(char32)");
+        }
+        String str = new String("01234\ud800\udc0056789");
+        StringBuffer strbuff = new StringBuffer(str);
+        char array[] = str.toCharArray();
+        int length = str.length();
+
+        String expected[] = {"0", "1", "2", "3", "4", "\ud800\udc00",
+                 "\ud800\udc00", "5", "6", "7", "8", "9"};
+        for (int i = 0; i < length; i ++) {
+        if (!UTF16.valueOf(str, i).equals(expected[i]) ||
+                !UTF16.valueOf(strbuff, i).equals(expected[i]) ||
+                !UTF16.valueOf(array, 0, length, i).equals(expected[i])) {
+                errln("FAIL: valueOf() expected " + expected[i]);
+        }
+        }
+        try {
+        UTF16.valueOf(str, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(strbuff, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 0, length, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(str, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(strbuff, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 0, length, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        if (!UTF16.valueOf(array, 6, length, 0).equals("\udc00") ||
+        !UTF16.valueOf(array, 0, 6, 5).equals("\ud800")) {
+        errln("FAIL: error getting partial supplementary character");
+        }
+        try {
+        UTF16.valueOf(array, 3, 5, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 3, 5, 3);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    public void TestIndexOf()
+    {
+    //012345678901234567890123456789012345
+        String test1     = "test test ttest tetest testesteststt";
+        String test2     = "test";
+        int    testChar1 = 0x74;
+        int    testChar2 = 0x20402;
+        // int    testChar3 = 0xdc02;
+        // int    testChar4 = 0xd841;
+        String test3     = "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+        String test4     = UCharacter.toString(testChar2);
+
+        if (UTF16.indexOf(test1, test2) != 0 ||
+            UTF16.indexOf(test1, test2, 0) != 0) {
+            errln("indexOf failed: expected to find '" + test2 +
+                  "' at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test1, testChar1) != 0 ||
+            UTF16.indexOf(test1, testChar1, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar1) +
+                  " at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test3, testChar2) != 0 ||
+            UTF16.indexOf(test3, testChar2, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        String test5 = "\ud841\ud841\udc02";
+        if (UTF16.indexOf(test5, testChar2) != 1 ||
+            UTF16.indexOf(test5, testChar2, 0) != 1) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        if (UTF16.lastIndexOf(test1, test2) != 29 ||
+            UTF16.lastIndexOf(test1, test2, test1.length()) != 29) {
+            errln("lastIndexOf failed: expected to find '" + test2 +
+                  "' at position 29 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test1, testChar1) != 35 ||
+            UTF16.lastIndexOf(test1, testChar1, test1.length()) != 35) {
+            errln("lastIndexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar1) +
+                  " at position 35 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test3, testChar2) != 13 ||
+            UTF16.lastIndexOf(test3, testChar2, test3.length()) != 13) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 13 in text '" + Utility.hex(test3) + "'");
+        }
+        int occurrences = 0;
+        for (int startPos = 0; startPos != -1 && startPos < test1.length();)
+        {
+        startPos = UTF16.indexOf(test1, test2, startPos);
+        if (startPos >= 0) {
+            ++ occurrences;
+            startPos += 4;
+        }
+        }
+        if (occurrences != 6) {
+            errln("indexOf failed: expected to find 6 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10; startPos != -1 && startPos < test1.length();)
+        {
+        startPos = UTF16.indexOf(test1, test2, startPos);
+        if (startPos >= 0) {
+            ++ occurrences;
+            startPos += 4;
+        }
+        }
+        if (occurrences != 4) {
+            errln("indexOf with starting offset failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 2;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found "
+          + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+             startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 2;
+            }
+        }
+        if (occurrences != 2) {
+            errln("indexOf failed: expected to find 2 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 16) {
+            errln("indexOf with character failed: expected to find 16 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+         startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 12) {
+            errln("indexOf with character & start offset failed: expected to find 12 occurrences, found "
+          + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 5; startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 3) {
+            errln("indexOf with character & start & end offsets failed: expected to find 2 occurrences, found "
+          + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, test2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 6) {
+            errln("lastIndexOf with starting and ending offsets failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 7) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 11 occurrences, found "
+          + occurrences);
+        }
+
+        //testing UChar32
+        occurrences = 0;
+        for (int startPos = test3.length(); startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test3, testChar2, startPos - 5);
+            if (startPos != -1) {
+                ++ occurrences;
+            }
+        }
+        if (occurrences != 3) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 3 occurrences, found "
+          + occurrences);
+        }
+
+        // testing supplementary
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_CHAR_.length; i ++) {
+        int ch = INDEXOF_SUPPLEMENTARY_CHAR_[i];
+        for (int j = 0; j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length;
+         j ++) {
+        int index = 0;
+        int expected = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j];
+        if  (j > 0) {
+            index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j - 1] + 1;
+        }
+        if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch, index) !=
+            expected ||
+            UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                  UCharacter.toString(ch), index) !=
+            expected) {
+            errln("Failed finding index for supplementary 0x" +
+              Integer.toHexString(ch));
+        }
+        index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        if (j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length - 1) {
+            index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j + 1] - 1;
+        }
+        if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch,
+                      index) != expected ||
+            UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                      UCharacter.toString(ch), index)
+            != expected)
+            {
+            errln("Failed finding last index for supplementary 0x" +
+                  Integer.toHexString(ch));
+            }
+        }
+        }
+
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length; i ++) {
+        int index = 0;
+        int expected = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i];
+        if  (i > 0) {
+        index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i - 1] + 1;
+        }
+        if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                  INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        errln("Failed finding index for supplementary string " +
+              hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        }
+        index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        if (i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length - 1) {
+        index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i + 1] - 1;
+        }
+        if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                              INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        errln("Failed finding last index for supplementary string " +
+              hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        }
+        }
+    }
+
+    public void TestReplace()
+    {
+        String test1 = "One potato, two potato, three potato, four\n";
+        String test2 = "potato";
+        String test3 = "MISSISSIPPI";
+
+        String result = UTF16.replace(test1, test2, test3);
+        String expectedValue =
+            "One MISSISSIPPI, two MISSISSIPPI, three MISSISSIPPI, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+        result = UTF16.replace(test1, test3, test2);
+        expectedValue = test1;
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, ',', 'e');
+        expectedValue = "One potatoe two potatoe three potatoe four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, ',', 0x10000);
+        expectedValue = "One potato\ud800\udc00 two potato\ud800\udc00 three potato\ud800\udc00 four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, "potato", "\ud800\udc00\ud801\udc01");
+        expectedValue = "One \ud800\udc00\ud801\udc01, two \ud800\udc00\ud801\udc01, three \ud800\udc00\ud801\udc01, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        String test4 = "\ud800\ud800\udc00\ud800\udc00\udc00\ud800\ud800\udc00\ud800\udc00\udc00";
+        result = UTF16.replace(test4, 0xd800, 'A');
+        expectedValue = "A\ud800\udc00\ud800\udc00\udc00A\ud800\udc00\ud800\udc00\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test4, 0xdC00, 'A');
+        expectedValue = "\ud800\ud800\udc00\ud800\udc00A\ud800\ud800\udc00\ud800\udc00A";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test4, 0x10000, 'A');
+        expectedValue = "\ud800AA\udc00\ud800AA\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+    }
+
+    public void TestReverse()
+    {
+        StringBuffer test = new StringBuffer(
+                         "backwards words say to used I");
+
+        StringBuffer result = UTF16.reverse(test);
+        if (!result.toString().equals("I desu ot yas sdrow sdrawkcab")) {
+            errln("reverse() failed:  Expected \"I desu ot yas sdrow sdrawkcab\",\n got \""
+          + result + "\"");
+        }
+        StringBuffer testbuffer = new StringBuffer();
+        UTF16.append(testbuffer, 0x2f999);
+        UTF16.append(testbuffer, 0x1d15f);
+        UTF16.append(testbuffer, 0x00c4);
+        UTF16.append(testbuffer, 0x1ed0);
+        result = UTF16.reverse(testbuffer);
+        if (result.charAt(0) != 0x1ed0 ||
+            result.charAt(1) != 0xc4 ||
+            UTF16.charAt(result, 2) != 0x1d15f ||
+            UTF16.charAt(result, 4)!=0x2f999) {
+            errln("reverse() failed with supplementary characters");
+        }
+    }
+
+    /**
+     * Testing the setter and getter apis for StringComparator
+     */
+    public void TestStringComparator()
+    {
+        UTF16.StringComparator compare = new UTF16.StringComparator();
+        if (compare.getCodePointCompare() != false) {
+            errln("Default string comparator should be code unit compare");
+        }
+        if (compare.getIgnoreCase() != false) {
+            errln("Default string comparator should be case sensitive compare");
+        }
+        if (compare.getIgnoreCaseOption()
+            != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Default string comparator should have fold case default compare");
+        }
+        compare.setCodePointCompare(true);
+        if (compare.getCodePointCompare() != true) {
+            errln("Error setting code point compare");
+        }
+        compare.setCodePointCompare(false);
+        if (compare.getCodePointCompare() != false) {
+            errln("Error setting code point compare");
+        }
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        if (compare.getIgnoreCase() != true
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(false, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if (compare.getIgnoreCase() != false
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if (compare.getIgnoreCase() != true
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(false, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        if (compare.getIgnoreCase() != false
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Error setting ignore case and options");
+        }
+    }
+
+    public void TestCodePointCompare()
+    {
+        // these strings are in ascending order
+        String str[] = {"\u0061", "\u20ac\ud801", "\u20ac\ud800\udc00",
+                        "\ud800", "\ud800\uff61", "\udfff",
+                        "\uff61\udfff", "\uff61\ud800\udc02", "\ud800\udc02",
+                        "\ud84d\udc56"};
+        UTF16.StringComparator cpcompare
+            = new UTF16.StringComparator(true, false,
+                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        UTF16.StringComparator cucompare
+            = new UTF16.StringComparator();
+        for (int i = 0; i < str.length - 1; ++ i) {
+            if (cpcompare.compare(str[i], str[i + 1]) >= 0) {
+                errln("error: compare() in code point order fails for string "
+                      + Utility.hex(str[i]) + " and "
+                      + Utility.hex(str[i + 1]));
+            }
+            // test code unit compare
+            if (cucompare.compare(str[i], str[i + 1])
+                != str[i].compareTo(str[i + 1])) {
+                errln("error: compare() in code unit order fails for string "
+                      + Utility.hex(str[i]) + " and "
+                      + Utility.hex(str[i + 1]));
+            }
+        }
+    }
+
+    public void TestCaseCompare()
+    {
+        String mixed = "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff";
+        String otherDefault = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff";
+        String otherExcludeSpecialI = "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff";
+        String different = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd";
+
+        UTF16.StringComparator compare = new UTF16.StringComparator();
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        // test u_strcasecmp()
+        int result = compare.compare(mixed, otherDefault);
+        if (result != 0) {
+            errln("error: default compare(mixed, other) = " + result
+                  + " instead of 0");
+        }
+
+        // test u_strcasecmp() - exclude special i
+        compare.setIgnoreCase(true,
+                  UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        result = compare.compare(mixed, otherExcludeSpecialI);
+        if (result != 0) {
+            errln("error: exclude_i compare(mixed, other) = " + result
+                  + " instead of 0");
+        }
+
+        // test u_strcasecmp()
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed, different);
+        if (result <= 0) {
+            errln("error: default compare(mixed, different) = " + result
+                  + " instead of positive");
+        }
+
+        // test substrings - stop before the sharp s (U+00df)
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed.substring(0, 4),
+                                 different.substring(0, 4));
+        if (result != 0) {
+            errln("error: default compare(mixed substring, different substring) = "
+          + result + " instead of 0");
+        }
+        // test substrings - stop in the middle of the sharp s (U+00df)
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed.substring(0, 5),
+                                 different.substring(0, 5));
+        if (result <= 0) {
+            errln("error: default compare(mixed substring, different substring) = "
+          + result + " instead of positive");
+        }
+    }
+
+    public void TestHasMoreCodePointsThan()
+    {
+        String str = "\u0061\u0062\ud800\udc00\ud801\udc01\u0063\ud802\u0064"
+        + "\udc03\u0065\u0066\ud804\udc04\ud805\udc05\u0067";
+        int length = str.length();
+        while (length >= 0) {
+            for (int i = 0; i <= length; ++ i) {
+                String s = str.substring(0, i);
+                for (int number = -1; number <= ((length - i) + 2); ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(s, number);
+                    if (flag != (UTF16.countCodePoint(s) > number)) {
+                        errln("hasMoreCodePointsThan(" + Utility.hex(s)
+                              + ", " + number + ") = " + flag + " is wrong");
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for(length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan((String)null,
+                                                               number);
+                    if (flag != (UTF16.countCodePoint((String)null) > number)) {
+                        errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+                    }
+                }
+            }
+        }
+
+        length = str.length();
+        while (length >= 0) {
+            for (int i = 0; i <= length; ++ i) {
+                StringBuffer s = new StringBuffer(str.substring(0, i));
+                for (int number = -1; number <= ((length - i) + 2); ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(s, number);
+                    if (flag != (UTF16.countCodePoint(s) > number)) {
+                        errln("hasMoreCodePointsThan(" + Utility.hex(s)
+                              + ", " + number + ") = " + flag + " is wrong");
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for (length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(
+                                   (StringBuffer)null, number);
+                    if (flag
+                        != (UTF16.countCodePoint((StringBuffer)null) > number))
+            {
+                errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+            }
+                }
+            }
+        }
+
+        char strarray[] = str.toCharArray();
+        while (length >= 0) {
+            for (int limit = 0; limit <= length; ++ limit) {
+                for (int start = 0; start <= limit; ++ start) {
+                    for (int number = -1; number <= ((limit - start) + 2);
+                         ++ number) {
+                        boolean flag = UTF16.hasMoreCodePointsThan(strarray,
+                                   start, limit, number);
+                        if (flag != (UTF16.countCodePoint(strarray, start,
+                                                          limit) > number)) {
+                            errln("hasMoreCodePointsThan("
+                                  + Utility.hex(str.substring(start, limit))
+                                  + ", " + start + ", " + limit + ", " + number
+                                  + ") = " + flag + " is wrong");
+                        }
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for (length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(
+                                   (StringBuffer)null, number);
+                    if (flag
+                        != (UTF16.countCodePoint((StringBuffer)null) > number))
+            {
+                errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+            }
+                }
+            }
+        }
+
+        // bad input
+        try {
+            UTF16.hasMoreCodePointsThan(strarray, -2, -1, 5);
+            errln("hasMoreCodePointsThan(chararray) with negative indexes has to throw an exception");
+        } catch (Exception e) {
+            logln("PASS: UTF16.hasMoreCodePointsThan failed as expected");
+        }
+        try {
+            UTF16.hasMoreCodePointsThan(strarray, 5, 2, 5);
+            errln("hasMoreCodePointsThan(chararray) with limit less than start index has to throw an exception");
+        } catch (Exception e) {
+            logln("PASS: UTF16.hasMoreCodePointsThan failed as expected");
+        }
+        try {
+            if (UTF16.hasMoreCodePointsThan(strarray, -2, 2, 5)) {
+                errln("hasMoreCodePointsThan(chararray) with negative start indexes can't return true");
+            }
+        } catch (Exception e) {
+        }
+    }
+
+    public void TestNewString() {
+    final int[] codePoints = {
+        UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE, UCharacter.MAX_LOW_SURROGATE),
+        UCharacter.toCodePoint(UCharacter.MAX_HIGH_SURROGATE, UCharacter.MIN_LOW_SURROGATE),
+        UCharacter.MAX_HIGH_SURROGATE,
+        'A',
+        -1,
+    };
+
+    final String cpString = "" +
+        UCharacter.MIN_HIGH_SURROGATE +
+        UCharacter.MAX_LOW_SURROGATE +
+        UCharacter.MAX_HIGH_SURROGATE +
+        UCharacter.MIN_LOW_SURROGATE +
+        UCharacter.MAX_HIGH_SURROGATE +
+        'A';
+
+    final int[][] tests = {
+        { 0, 1, 0, 2 },
+        { 0, 2, 0, 4 },
+        { 1, 1, 2, 2 },
+        { 1, 2, 2, 3 },
+        { 1, 3, 2, 4 },
+        { 2, 2, 4, 2 },
+        { 2, 3, 0, -1 },
+        { 4, 5, 0, -1 },
+        { 3, -1, 0, -1 }
+    };
+
+     for (int i = 0; i < tests.length; ++i) {
+        int[] t = tests[i];
+        int s = t[0];
+        int c = t[1];
+        int rs = t[2];
+        int rc = t[3];
+
+        Exception e = null;
+        try {
+        String str = UTF16.newString(codePoints, s, c);
+        if (rc == -1 || !str.equals(cpString.substring(rs, rs+rc))) {
+            errln("failed codePoints iter: " + i + " start: " + s + " len: " + c);
+        }
+        continue;
+        }
+        catch (IndexOutOfBoundsException e1) {
+        e = e1;
+        }
+        catch (IllegalArgumentException e2) {
+        e = e2;
+        }
+        if (rc != -1) {
+        errln(e.getMessage());
+        }
+    }
+    }
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+        UTF16Test test = new UTF16Test();
+        test.run(arg);
+        // test.TestCaseCompare();
+        }
+        catch (Exception e)
+        {
+        e.printStackTrace();
+        }
+    }
+
+
+    // private data members ----------------------------------------------
+
+    private final static String INDEXOF_SUPPLEMENTARY_STRING_ =
+        "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072" +
+        "\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_[] =
+    {0x71, 0xd841, 0xdc02,
+     UTF16Util.getRawSupplementary((char)0xd841,
+                 (char)0xdc02)};
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[][] =
+    {{2, 5, 8, 12, 15},
+     {4, 17},
+     {3, 16},
+     {0, 6, 10, 13}
+    };
+    private final static String INDEXOF_SUPPLEMENTARY_STR_ = "\udc02\ud841";
+    private final static int INDEXOF_SUPPLEMENTARY_STR_INDEX_[] =
+    {3, 16};
+
+    // private methods ---------------------------------------------------
+}
+
diff --git a/src/com/ibm/icu/dev/test/manifest.test.stub b/src/com/ibm/icu/dev/test/manifest.test.stub
new file mode 100644
index 0000000..e1ad499
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/manifest.test.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: icu4j.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: ICU for Java Tests
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2000-2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/test/normalizer/BasicTest.java b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
new file mode 100644
index 0000000..08cd982
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
@@ -0,0 +1,2937 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.text.StringCharacterIterator;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+
+public class BasicTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new BasicTest().run(args);
+    }
+
+    String[][] canonTests = {
+        // Input                Decomposed              Composed
+        { "cat",                "cat",                  "cat"               },
+        { "\u00e0ardvark",      "a\u0300ardvark",       "\u00e0ardvark",    },
+
+        { "\u1e0a",             "D\u0307",              "\u1e0a"            }, // D-dot_above
+        { "D\u0307",            "D\u0307",              "\u1e0a"            }, // D dot_above
+
+        { "\u1e0c\u0307",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_below dot_above
+        { "\u1e0a\u0323",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_above dot_below
+        { "D\u0307\u0323",      "D\u0323\u0307",        "\u1e0c\u0307"      }, // D dot_below dot_above
+
+        { "\u1e10\u0307\u0323", "D\u0327\u0323\u0307",  "\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+        { "D\u0307\u0328\u0323","D\u0328\u0323\u0307",  "\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+        { "\u1E14",             "E\u0304\u0300",        "\u1E14"            }, // E-macron-grave
+        { "\u0112\u0300",       "E\u0304\u0300",        "\u1E14"            }, // E-macron + grave
+        { "\u00c8\u0304",       "E\u0300\u0304",        "\u00c8\u0304"      }, // E-grave + macron
+
+        { "\u212b",             "A\u030a",              "\u00c5"            }, // angstrom_sign
+        { "\u00c5",             "A\u030a",              "\u00c5"            }, // A-ring
+
+        { "\u00c4ffin",         "A\u0308ffin",          "\u00c4ffin"        },
+        { "\u00c4\uFB03n",      "A\u0308\uFB03n",       "\u00c4\uFB03n"     },
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        }, //updated with 3.0
+        { "\u00fd\uFB03n",      "y\u0301\uFB03n",       "\u00fd\uFB03n"     }, //updated with 3.0
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry \u2163",         "Henry \u2163"      },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+        { "\uFF76\uFF9E",       "\uFF76\uFF9E",         "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\uFF9E",         "\u30AB\uFF9E"      }, // ka + hw_ten
+        { "\uFF76\u3099",       "\uFF76\u3099",         "\uFF76\u3099"      }, // hw_ka + ten
+
+        { "A\u0300\u0316", "A\u0316\u0300", "\u00C0\u0316" },
+        {"\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e","\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165", "\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165"},
+    };
+
+    String[][] compatTests = {
+            // Input                Decomposed              Composed
+        { "cat",                 "cat",                     "cat"           },
+        { "\uFB4f",             "\u05D0\u05DC",         "\u05D0\u05DC",     }, // Alef-Lamed vs. Alef, Lamed
+
+        { "\u00C4ffin",         "A\u0308ffin",          "\u00C4ffin"        },
+        { "\u00C4\uFB03n",      "A\u0308ffin",          "\u00C4ffin"        }, // ffi ligature -> f + f + i
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        },        //updated for 3.0
+        { "\u00fd\uFB03n",      "y\u0301ffin",          "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry IV",             "Henry IV"          },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+
+        { "\uFF76\u3099",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + ten
+
+        /* These two are broken in Unicode 2.1.2 but fixed in 2.1.5 and later*/
+        { "\uFF76\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // ka + hw_ten
+
+    };
+
+    // With Canonical decomposition, Hangul syllables should get decomposed
+    // into Jamo, but Jamo characters should not be decomposed into
+    // conjoining Jamo
+    String[][] hangulCanon = {
+        // Input                Decomposed              Composed
+        { "\ud4db",             "\u1111\u1171\u11b6",   "\ud4db"        },
+        { "\u1111\u1171\u11b6", "\u1111\u1171\u11b6",   "\ud4db"        },
+    };
+
+    // With compatibility decomposition turned on,
+    // it should go all the way down to conjoining Jamo characters.
+    // THIS IS NO LONGER TRUE IN UNICODE v2.1.8, SO THIS TEST IS OBSOLETE
+    String[][] hangulCompat = {
+        // Input        Decomposed                          Composed
+        // { "\ud4db",     "\u1111\u116e\u1175\u11af\u11c2",   "\ud478\u1175\u11af\u11c2"  },
+    };
+
+    public void TestHangulCompose()
+                throws Exception{
+        // Make sure that the static composition methods work
+        logln("Canonical composition...");
+        staticTest(Normalizer.NFC, hangulCanon,  2);
+        logln("Compatibility composition...");
+        staticTest(Normalizer.NFKC, hangulCompat, 2);
+        // Now try iterative composition....
+        logln("Iterative composition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFC,0);
+        iterateTest(norm, hangulCanon, 2);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 2);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFC);
+        backAndForth(norm, hangulCanon);
+     }
+
+    public void TestHangulDecomp() throws Exception{
+        // Make sure that the static decomposition methods work
+        logln("Canonical decomposition...");
+        staticTest(Normalizer.NFD, hangulCanon,  1);
+        logln("Compatibility decomposition...");
+        staticTest(Normalizer.NFKD, hangulCompat, 1);
+
+         // Now the iterative decomposition methods...
+        logln("Iterative decomposition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFD,0);
+        iterateTest(norm, hangulCanon, 1);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 1);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFD);
+        backAndForth(norm, hangulCanon);
+    }
+    public void TestNone() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NONE,0);
+        iterateTest(norm, canonTests, 0);
+        staticTest(Normalizer.NONE, canonTests, 0);
+    }
+    public void TestDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFD,0);
+        iterateTest(norm, canonTests, 1);
+        staticTest(Normalizer.NFD, canonTests, 1);
+        decomposeTest(Normalizer.NFD, canonTests, 1);
+    }
+
+    public void TestCompatDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKD,0);
+        iterateTest(norm, compatTests, 1);
+        staticTest(Normalizer.NFKD,compatTests, 1);
+        decomposeTest(Normalizer.NFKD,compatTests, 1);
+    }
+
+    public void TestCanonCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFC,0);
+        iterateTest(norm, canonTests, 2);
+        staticTest(Normalizer.NFC, canonTests, 2);
+        composeTest(Normalizer.NFC, canonTests, 2);
+    }
+
+    public void TestCompatCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKC,0);
+        iterateTest(norm, compatTests, 2);
+        staticTest(Normalizer.NFKC,compatTests, 2);
+        composeTest(Normalizer.NFKC,compatTests, 2);
+    }
+
+    public void TestExplodingBase() throws Exception{
+        // \u017f - Latin small letter long s
+        // \u0307 - combining dot above
+        // \u1e61 - Latin small letter s with dot above
+        // \u1e9b - Latin small letter long s with dot above
+        String[][] canon = {
+            // Input                Decomposed              Composed
+            { "Tschu\u017f",        "Tschu\u017f",          "Tschu\u017f"    },
+            { "Tschu\u1e9b",        "Tschu\u017f\u0307",    "Tschu\u1e9b"    },
+        };
+        String[][] compat = {
+            // Input                Decomposed              Composed
+            { "\u017f",        "s",              "s"           },
+            { "\u1e9b",        "s\u0307",        "\u1e61"      },
+        };
+
+        staticTest(Normalizer.NFD, canon,  1);
+        staticTest(Normalizer.NFC, canon,  2);
+
+        staticTest(Normalizer.NFKD, compat, 1);
+        staticTest(Normalizer.NFKC, compat, 2);
+
+    }
+
+    /**
+     * The Tibetan vowel sign AA, 0f71, was messed up prior to
+     * Unicode version 2.1.9.
+     * Once 2.1.9 or 3.0 is released, uncomment this test.
+     */
+    public void TestTibetan() throws Exception{
+        String[][] decomp = {
+            { "\u0f77", "\u0f77", "\u0fb2\u0f71\u0f80" }
+        };
+        String[][] compose = {
+            { "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80" }
+        };
+
+        staticTest(Normalizer.NFD, decomp, 1);
+        staticTest(Normalizer.NFKD,decomp, 2);
+        staticTest(Normalizer.NFC, compose, 1);
+        staticTest(Normalizer.NFKC,compose, 2);
+    }
+
+    /**
+     * Make sure characters in the CompositionExclusion.txt list do not get
+     * composed to.
+     */
+    public void TestCompositionExclusion()
+                throws Exception{
+        // This list is generated from CompositionExclusion.txt.
+        // Update whenever the normalizer tables are updated.  Note
+        // that we test all characters listed, even those that can be
+        // derived from the Unicode DB and are therefore commented
+        // out.
+        String EXCLUDED =
+            "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+            "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+            "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+            "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+            "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+            "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+            "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB" +
+            "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+            "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+            "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+            "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+            "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+            "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+            "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E";
+        for (int i=0; i<EXCLUDED.length(); ++i) {
+            String a = String.valueOf(EXCLUDED.charAt(i));
+            String b = Normalizer.normalize(a, Normalizer.NFKD);
+            String c = Normalizer.normalize(b, Normalizer.NFC);
+            if (c.equals(a)) {
+                errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            } else if (isVerbose()) {
+                logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            }
+        }
+        // The following method works too, but it is somewhat
+        // incestuous.  It uses UInfo, which is the same database that
+        // NormalizerBuilder uses, so if something is wrong with
+        // UInfo, the following test won't show it.  All it will show
+        // is that NormalizerBuilder has been run with whatever the
+        // current UInfo is.
+        //
+        // We comment this out in favor of the test above, which
+        // provides independent verification (but also requires
+        // independent updating).
+//      logln("---");
+//      UInfo uinfo = new UInfo();
+//      for (int i=0; i<=0xFFFF; ++i) {
+//          if (!uinfo.isExcludedComposition((char)i) ||
+//              (!uinfo.hasCanonicalDecomposition((char)i) &&
+//               !uinfo.hasCompatibilityDecomposition((char)i))) continue;
+//          String a = String.valueOf((char)i);
+//          String b = Normalizer.normalize(a,Normalizer.DECOMP_COMPAT,0);
+//          String c = Normalizer.normalize(b,Normalizer.COMPOSE,0);
+//          if (c.equals(a)) {
+//              errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          } else if (isVerbose()) {
+//              logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          }
+//      }
+    }
+
+    /**
+     * Test for a problem that showed up just before ICU 1.6 release
+     * having to do with combining characters with an index of zero.
+     * Such characters do not participate in any canonical
+     * decompositions.  However, having an index of zero means that
+     * they all share one typeMask[] entry, that is, they all have to
+     * map to the same canonical class, which is not the case, in
+     * reality.
+     */
+    public void TestZeroIndex()
+                throws Exception{
+        String[] DATA = {
+            // Expect col1 x COMPOSE_COMPAT => col2
+            // Expect col2 x DECOMP => col3
+            "A\u0316\u0300", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0300\u0316", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0327\u0300", "\u00C0\u0327", "A\u0327\u0300",
+            "c\u0321\u0327", "c\u0321\u0327", "c\u0321\u0327",
+            "c\u0327\u0321", "\u00E7\u0321", "c\u0327\u0321",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String a = DATA[i];
+            String b = Normalizer.normalize(a, Normalizer.NFKC);
+            String exp = DATA[i+1];
+            if (b.equals(exp)) {
+                logln("Ok: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b));
+            } else {
+                errln("FAIL: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b) +
+                      ", expect " + hex(exp));
+            }
+            a = Normalizer.normalize(b, Normalizer.NFD);
+            exp = DATA[i+2];
+            if (a.equals(exp)) {
+                logln("Ok: " + hex(b) + " x DECOMP => " + hex(a));
+            } else {
+                errln("FAIL: " + hex(b) + " x DECOMP => " + hex(a) +
+                      ", expect " + hex(exp));
+            }
+        }
+    }
+
+    /**
+     * Test for a problem found by Verisign.  Problem is that
+     * characters at the start of a string are not put in canonical
+     * order correctly by compose() if there is no starter.
+     */
+    public void TestVerisign()
+                throws Exception{
+        String[] inputs = {
+            "\u05b8\u05b9\u05b1\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u0592\u05b7\u05bc\u05a5\u05b0\u05c0\u05c4\u05ad"
+        };
+        String[] outputs = {
+            "\u05b1\u05b8\u05b9\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u05b0\u05b7\u05bc\u05a5\u0592\u05c0\u05ad\u05c4"
+        };
+
+        for (int i = 0; i < inputs.length; ++i) {
+            String input = inputs[i];
+            String output = outputs[i];
+            String result = Normalizer.decompose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln(" decompose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+            result = Normalizer.compose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln("   compose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+        }
+
+    }
+    public void  TestQuickCheckResultNO()
+                 throws Exception{
+        final char CPNFD[] = {0x00C5, 0x0407, 0x1E00, 0x1F57, 0x220C,
+                                0x30AE, 0xAC00, 0xD7A3, 0xFB36, 0xFB4E};
+        final char CPNFC[] = {0x0340, 0x0F93, 0x1F77, 0x1FBB, 0x1FEB,
+                                0x2000, 0x232A, 0xF900, 0xFA1E, 0xFB4E};
+        final char CPNFKD[] = {0x00A0, 0x02E4, 0x1FDB, 0x24EA, 0x32FE,
+                                0xAC00, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+        final char CPNFKC[] = {0x00A0, 0x017F, 0x2000, 0x24EA, 0x32FE,
+                                0x33FE, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                    Normalizer.NFD,0) != Normalizer.NO)
+            {
+                errln("ERROR in NFD quick check at U+" +
+                       Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                        Normalizer.NFC,0) !=Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                       Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                Normalizer.NFKD,0) != Normalizer.NO)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                       Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC,0) !=Normalizer.NO)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                       Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            // for improving coverage
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC) !=Normalizer.NO)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                       Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+
+    public void TestQuickCheckResultYES()
+                throws Exception{
+        final char CPNFD[] = {0x00C6, 0x017F, 0x0F74, 0x1000, 0x1E9A,
+                                0x2261, 0x3075, 0x4000, 0x5000, 0xF000};
+        final char CPNFC[] = {0x0400, 0x0540, 0x0901, 0x1000, 0x1500,
+                                0x1E9A, 0x3000, 0x4000, 0x5000, 0xF000};
+        final char CPNFKD[] = {0x00AB, 0x02A0, 0x1000, 0x1027, 0x2FFB,
+                                0x3FFF, 0x4FFF, 0xA000, 0xF000, 0xFA27};
+        final char CPNFKC[] = {0x00B0, 0x0100, 0x0200, 0x0A02, 0x1000,
+                                0x2010, 0x3030, 0x4000, 0xA000, 0xFA0E};
+
+        final int SIZE = 10;
+        int count = 0;
+
+        char cp = 0;
+        while (cp < 0xA0)
+        {
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFC,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKD,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+" +
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKC,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                                       Integer.toHexString(cp));
+                return;
+            }
+            // improve the coverage
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKC)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                                       Integer.toHexString(cp));
+                return;
+            }
+            cp++;
+        }
+
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                                         Normalizer.NFD,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                             Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                         Normalizer.NFC,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                             Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                         Normalizer.NFKD,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                                    Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                        Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            // improve the coverage
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                        Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+    public void TestBengali() throws Exception{
+        String input = "\u09bc\u09be\u09cd\u09be";
+        String output=Normalizer.normalize(input,Normalizer.NFC);
+        if(!input.equals(output)){
+             errln("ERROR in NFC of string");
+        }
+    }
+    public void TestQuickCheckResultMAYBE()
+                throws Exception{
+
+        final char[] CPNFC = {0x0306, 0x0654, 0x0BBE, 0x102E, 0x1161,
+                                0x116A, 0x1173, 0x1175, 0x3099, 0x309A};
+        final char[] CPNFKC = {0x0300, 0x0654, 0x0655, 0x09D7, 0x0B3E,
+                                0x0DCF, 0xDDF, 0x102E, 0x11A8, 0x3099};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+
+        /* NFD and NFKD does not have any MAYBE codepoints */
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                        Normalizer.NFC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                       Normalizer.NFKC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFC[count]},
+                                        Normalizer.NFC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NFKC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NONE,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+    public void TestQuickCheckStringResult()
+                throws Exception{
+        int count;
+        String d;
+        String c;
+
+        for (count = 0; count < canonTests.length; count ++)
+        {
+            d = canonTests[count][1];
+            c = canonTests[count][2];
+            if (Normalizer.quickCheck(d,Normalizer.NFD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c, Normalizer.NFC,0)
+                                            == Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check for string at count " + count);
+                return;
+            }
+        }
+
+        for (count = 0; count < compatTests.length; count ++)
+        {
+            d = compatTests[count][1];
+            c = compatTests[count][2];
+            if (Normalizer.quickCheck(d, Normalizer.NFKD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c,  Normalizer.NFKC,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check for string at count " + count);
+                return;
+            }
+        }
+    }
+
+    static final int qcToInt(Normalizer.QuickCheckResult qc) {
+        if(qc==Normalizer.NO) {
+            return 0;
+        } else if(qc==Normalizer.YES) {
+            return 1;
+        } else /* Normalizer.MAYBE */ {
+            return 2;
+        }
+    }
+
+    public void TestQuickCheckPerCP() {
+        int c, lead, trail;
+        String s, nfd;
+        int lccc1, lccc2, tccc1, tccc2;
+        int qc1, qc2;
+
+        if(
+            UCharacter.getIntPropertyMaxValue(UProperty.NFD_QUICK_CHECK)!=1 || // YES
+            UCharacter.getIntPropertyMaxValue(UProperty.NFKD_QUICK_CHECK)!=1 ||
+            UCharacter.getIntPropertyMaxValue(UProperty.NFC_QUICK_CHECK)!=2 || // MAYBE
+            UCharacter.getIntPropertyMaxValue(UProperty.NFKC_QUICK_CHECK)!=2 ||
+            UCharacter.getIntPropertyMaxValue(UProperty.LEAD_CANONICAL_COMBINING_CLASS)!=UCharacter.getIntPropertyMaxValue(UProperty.CANONICAL_COMBINING_CLASS) ||
+            UCharacter.getIntPropertyMaxValue(UProperty.TRAIL_CANONICAL_COMBINING_CLASS)!=UCharacter.getIntPropertyMaxValue(UProperty.CANONICAL_COMBINING_CLASS)
+        ) {
+            errln("wrong result from one of the u_getIntPropertyMaxValue(UCHAR_NF*_QUICK_CHECK) or UCHAR_*_CANONICAL_COMBINING_CLASS");
+        }
+
+        /*
+         * compare the quick check property values for some code points
+         * to the quick check results for checking same-code point strings
+         */
+        c=0;
+        while(c<0x110000) {
+            s=UTF16.valueOf(c);
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFC_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFC));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFC)="+qc1+" != "+qc2+"=quickCheck(NFC) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFD_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFD));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFD)="+qc1+" != "+qc2+"=quickCheck(NFD) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFKC_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFKC));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFKC)="+qc1+" != "+qc2+"=quickCheck(NFKC) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFKD_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFKD));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFKD)="+qc1+" != "+qc2+"=quickCheck(NFKD) for U+"+Integer.toHexString(c));
+            }
+
+            nfd=Normalizer.normalize(s, Normalizer.NFD);
+            lead=UTF16.charAt(nfd, 0);
+            trail=UTF16.charAt(nfd, nfd.length()-1);
+
+            lccc1=UCharacter.getIntPropertyValue(c, UProperty.LEAD_CANONICAL_COMBINING_CLASS);
+            lccc2=UCharacter.getCombiningClass(lead);
+            tccc1=UCharacter.getIntPropertyValue(c, UProperty.TRAIL_CANONICAL_COMBINING_CLASS);
+            tccc2=UCharacter.getCombiningClass(trail);
+
+            if(lccc1!=lccc2) {
+                errln("getIntPropertyValue(lccc)="+lccc1+" != "+lccc2+"=getCombiningClass(lead) for U+"+Integer.toHexString(c));
+            }
+            if(tccc1!=tccc2) {
+                errln("getIntPropertyValue(tccc)="+tccc1+" != "+tccc2+"=getCombiningClass(trail) for U+"+Integer.toHexString(c));
+            }
+
+            /* skip some code points */
+            c=(20*c)/19+1;
+        }
+    }
+
+    //------------------------------------------------------------------------
+    // Internal utilities
+    //
+       //------------------------------------------------------------------------
+    // Internal utilities
+    //
+
+/*    private void backAndForth(Normalizer iter, String input)
+    {
+        iter.setText(input);
+
+        // Run through the iterator forwards and stick it into a StringBuffer
+        StringBuffer forward =  new StringBuffer();
+        for (int ch = iter.first(); ch != Normalizer.DONE; ch = iter.next()) {
+            forward.append(ch);
+        }
+
+        // Now do it backwards
+        StringBuffer reverse = new StringBuffer();
+        for (int ch = iter.last(); ch != Normalizer.DONE; ch = iter.previous()) {
+            reverse.insert(0, ch);
+        }
+
+        if (!forward.toString().equals(reverse.toString())) {
+            errln("FAIL: Forward/reverse mismatch for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        } else if (isVerbose()) {
+            logln("Ok: Forward/reverse for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        }
+    }*/
+
+    private void backAndForth(Normalizer iter, String[][] tests)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            iter.setText(tests[i][0]);
+
+            // Run through the iterator forwards and stick it into a
+            // StringBuffer
+            StringBuffer forward =  new StringBuffer();
+            for (int ch = iter.first(); ch != Normalizer.DONE; ch = iter.next()) {
+                forward.append(ch);
+            }
+
+            // Now do it backwards
+            StringBuffer reverse = new StringBuffer();
+            for (int ch = iter.last(); ch != Normalizer.DONE; ch = iter.previous()) {
+                reverse.insert(0, ch);
+            }
+
+            if (!forward.toString().equals(reverse.toString())) {
+                errln("FAIL: Forward/reverse mismatch for input "
+                    + hex(tests[i][0]) + ", forward: " + hex(forward)
+                    + ", backward: " + hex(reverse));
+            } else if (isVerbose()) {
+                logln("Ok: Forward/reverse for input " + hex(tests[i][0])
+                      + ", forward: " + hex(forward) + ", backward: "
+                      + hex(reverse));
+            }
+        }
+    }
+
+    private void staticTest (Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.normalize(input, mode);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect =Utility.unescape( tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.normalize(input,output, mode,0);
+                    if(reqLength<=output.length    ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+    }
+    private void decomposeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.decompose(input, mode==Normalizer.NFKD);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.decompose(input,output, mode==Normalizer.NFKD,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+        output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+           char[] input = Utility.unescape(tests[i][0]).toCharArray();
+           String expect = Utility.unescape(tests[i][outCol]);
+    
+           logln("Normalizing '" + new String(input) + "' (" +
+                       hex(new String(input)) + ")" );
+           int reqLength=0;
+           while(true){
+               try{
+                   reqLength=Normalizer.decompose(input,0,input.length,output,0,output.length, mode==Normalizer.NFKD,0);
+                   if(reqLength<=output.length ){
+                       break;
+                   }
+               }catch(IndexOutOfBoundsException e){
+                   output= new char[Integer.parseInt(e.getMessage())];
+                   continue;
+               }
+           }
+           if (!expect.equals(new String(output,0,reqLength))) {
+               errln("FAIL: case " + i
+                   + " expected '" + expect + "' (" + hex(expect) + ")"
+                   + " but got '" + new String(output)
+                   + "' ("  + hex(new String(output)) + ")" );
+           }
+           char[] output2 = new char[reqLength * 2];
+           System.arraycopy(output, 0, output2, 0, reqLength);
+           int retLength = Normalizer.decompose(input,0,input.length, output2, reqLength, output2.length, mode==Normalizer.NFKC,0);
+           if(retLength != reqLength){
+               logln("FAIL: Normalizer.compose did not return the expected length. Expected: " +reqLength + " Got: " + retLength);
+           }
+        }
+    }
+
+    private void composeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.compose(input, mode==Normalizer.NFKC);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.compose(input,output, mode==Normalizer.NFKC,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+        output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.compose(input,0,input.length, output, 0, output.length, mode==Normalizer.NFKC,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+            
+            char[] output2 = new char[reqLength * 2];
+            System.arraycopy(output, 0, output2, 0, reqLength);
+            int retLength = Normalizer.compose(input,0,input.length, output2, reqLength, output2.length, mode==Normalizer.NFKC,0);
+            if(retLength != reqLength){
+                logln("FAIL: Normalizer.compose did not return the expected length. Expected: " +reqLength + " Got: " + retLength);
+            }
+        }
+    }
+    private void iterateTest(Normalizer iter, String[][] tests, int outCol){
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            iter.setText(input);
+            assertEqual(expect, iter, "case " + i + " ");
+        }
+    }
+
+    private void assertEqual(String expected, Normalizer iter, String msg)
+    {
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= Normalizer.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " + msg + "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " + msg + "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=Normalizer.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    //--------------------------------------------------------------------------
+
+    // NOTE: These tests are used for quick debugging so are not ported
+    // to ICU4C tsnorm.cpp in intltest
+    //
+
+    public void TestDebugStatic(){
+        String in = Utility.unescape("\\U0001D157\\U0001D165");
+        if(!Normalizer.isNormalized(in,Normalizer.NFC,0)){
+            errln("isNormalized failed");
+        }
+
+        String input  =  "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+            "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+            "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+            "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+            "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "d\u031B\u0307\u0323";
+        String expect = "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65aaaaaaaaaaaaaaaaaazzzzzz"+
+                        "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccc"+
+                        "cccccccccccccccccccccccccccccccccccccccccccccccc"+
+                        "ddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                        "dddddddddddddddddddddddd"+
+                        "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\u0064\u031B\u0323\u0307";
+            String output = Normalizer.normalize(Utility.unescape(input),
+                            Normalizer.NFD);
+            if(!expect.equals(output)){
+                errln("FAIL expected: "+hex(expect) + " got: "+hex(output));
+            }
+
+
+
+    }
+    public void TestDebugIter(){
+        String src = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        String expected = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(src)),
+                                                Normalizer.NONE,0);
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= Normalizer.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " +  "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=Normalizer.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    public void TestDebugIterOld(){
+        String input = "\\U0001D15E";
+        String expected = "\uD834\uDD57\uD834\uDD65";
+        String expectedReverse = "\uD834\uDD65\uD834\uDD57";
+        int index = 0;
+        int ch;
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(input)),
+                                                Normalizer.NFKC,0);
+        StringBuffer got = new StringBuffer();
+        for (ch = iter.first();ch!=Normalizer.DONE;ch=iter.next())
+        {
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch +
+                       "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UCharacter.toString(ch));
+            index++;
+        }
+        if (!expected.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                        + " but expected '" + expected + "' ("
+                        + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                           + expected.length());
+        }
+
+        logln("Reverse Iteration\n");
+        iter.setIndexOnly(iter.endIndex());
+        got.setLength(0);
+        for(ch=iter.previous();ch!=Normalizer.DONE;ch=iter.previous()){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                               + "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UCharacter.toString(ch));
+        }
+        if (!expectedReverse.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                               + " but expected '" + expected
+                               + "' (" + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                      + expected.length());
+        }
+
+    }
+    //--------------------------------------------------------------------------
+    // helper class for TestPreviousNext()
+    // simple UTF-32 character iterator
+    class UCharIterator {
+
+       public UCharIterator(int[] src, int len, int index){
+
+            s=src;
+            length=len;
+            i=index;
+       }
+
+        public int current() {
+            if(i<length) {
+                return s[i];
+            } else {
+                return -1;
+            }
+        }
+
+        public int next() {
+            if(i<length) {
+                return s[i++];
+            } else {
+                return -1;
+            }
+        }
+
+        public int previous() {
+            if(i>0) {
+                return s[--i];
+            } else {
+                return -1;
+            }
+        }
+
+        public int getIndex() {
+            return i;
+        }
+
+        private int[] s;
+        private int length, i;
+    }
+    public void TestPreviousNext() {
+        // src and expect strings
+        char src[]={
+            UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+            UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+            0xc4,
+            0x1ed0
+        };
+        int expect[]={
+            0x831d,
+            0x1d158, 0x1d165,
+            0x41, 0x308,
+            0x4f, 0x302, 0x301
+        };
+
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,
+            2, 2,
+            4, 4,
+            5, 5, 5,
+            6 // behind last character
+        };
+
+        // initial indexes into the src and expect strings
+
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=3;
+
+
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+        // iterators
+        Normalizer iter = new Normalizer(new String(src),
+                                                Normalizer.NFD,0);
+        UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+        int c1, c2;
+        char m;
+
+        // initially set the indexes into the middle of the strings
+        iter.setIndexOnly(SRC_MIDDLE);
+
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previous();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.current();
+                c2=iter32.current();
+            } else /* m=='+' */ {
+                c1=iter.next();
+                c2=iter32.next();
+            }
+
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+
+            // compare indexes
+            if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    // Only in ICU4j
+    public void TestPreviousNextJCI() {
+        // src and expect strings
+        char src[]={
+            UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+            UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+            0xc4,
+            0x1ed0
+        };
+        int expect[]={
+            0x831d,
+            0x1d158, 0x1d165,
+            0x41, 0x308,
+            0x4f, 0x302, 0x301
+        };
+
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,
+            2, 2,
+            4, 4,
+            5, 5, 5,
+            6 // behind last character
+        };
+
+        // initial indexes into the src and expect strings
+
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=3;
+
+
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+        // iterators
+        StringCharacterIterator text = new StringCharacterIterator(new String(src));
+        Normalizer iter = new Normalizer(text,Normalizer.NFD,0);
+        UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+        int c1, c2;
+        char m;
+
+        // initially set the indexes into the middle of the strings
+        iter.setIndexOnly(SRC_MIDDLE);
+
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previous();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.current();
+                c2=iter32.current();
+            } else /* m=='+' */ {
+                c1=iter.next();
+                c2=iter32.next();
+            }
+
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+
+            // compare indexes
+            if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+
+    // test APIs that are not otherwise used - improve test coverage
+    public void TestNormalizerAPI() throws Exception {
+        try{
+            // instantiate a Normalizer from a CharacterIterator
+            String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+            // make s a bit longer and more interesting
+            UCharacterIterator iter = UCharacterIterator.getInstance(s+s);
+            Normalizer norm = new Normalizer(iter, Normalizer.NFC,0);
+            if(norm.next()!=0xe4) {
+                errln("error in Normalizer(CharacterIterator).next()");
+            }   
+    
+            // test clone(), ==, and hashCode()
+            Normalizer clone=(Normalizer)norm.clone();
+            if(clone.equals(norm)) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone()!=norm");
+            }
+    
+            
+            if(clone.getLength()!= norm.getLength()){
+               errln("error in Normalizer.getBeginIndex()");
+            } 
+            // clone must have the same hashCode()
+            //if(clone.hashCode()!=norm.hashCode()) {
+            //    errln("error in Normalizer(Normalizer(CharacterIterator)).clone().hashCode()!=copy.hashCode()");
+            //}
+            if(clone.next()!=0xac00) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).next()");
+            }
+            int ch = clone.next();
+            if(ch!=0x4e3d) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next()");
+            }
+            // position changed, must change hashCode()
+            if(clone.hashCode()==norm.hashCode()) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next().hashCode()==copy.hashCode()");
+            }
+    
+            // test compose() and decompose()
+            StringBuffer tel;
+            String nfkc, nfkd;
+            tel=new StringBuffer("\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121");
+            tel.insert(1,(char)0x0301);
+    
+            nfkc=Normalizer.compose(tel.toString(), true);
+            nfkd=Normalizer.decompose(tel.toString(), true);
+            if(
+                !nfkc.equals(Utility.unescape("TE\u0139TELTELTELTELTELTELTELTELTEL"))||
+                !nfkd.equals(Utility.unescape("TEL\u0301TELTELTELTELTELTELTELTELTEL"))
+            ) {
+                errln("error in Normalizer::(de)compose(): wrong result(s)");
+            }
+    
+            // test setIndex()
+//            ch=norm.setIndex(3);
+//            if(ch!=0x4e3d) {
+//                errln("error in Normalizer(CharacterIterator).setIndex(3)");
+//            }
+    
+            // test setText(CharacterIterator) and getText()
+            String out, out2;
+            clone.setText(iter);
+    
+            out = clone.getText();
+            out2 = iter.getText();
+            if( !out.equals(out2) ||
+                clone.startIndex()!=0||
+                clone.endIndex()!=iter.getLength()
+            ) {
+                errln("error in Normalizer::setText() or Normalizer::getText()");
+            }
+     
+            char[] fillIn1 = new char[clone.getLength()];
+            char[] fillIn2 = new char[iter.getLength()];
+            int len = clone.getText(fillIn1);
+            iter.getText(fillIn2,0);
+            if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+                errln("error in Normalizer.getText(). Normalizer: "+
+                                Utility.hex(new String(fillIn1))+ 
+                                " Iter: " + Utility.hex(new String(fillIn2)));
+            }
+            
+            clone.setText(fillIn1);
+            len = clone.getText(fillIn2);
+            if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+                errln("error in Normalizer.setText() or Normalizer.getText()"+
+                                Utility.hex(new String(fillIn1))+ 
+                                " Iter: " + Utility.hex(new String(fillIn2)));
+            }
+    
+            // test setText(UChar *), getUMode() and setMode()
+            clone.setText(s);
+            clone.setIndexOnly(1);
+            clone.setMode(Normalizer.NFD);
+            if(clone.getMode()!=Normalizer.NFD) {
+                errln("error in Normalizer::setMode() or Normalizer::getMode()");
+            }
+            if(clone.next()!=0x308 || clone.next()!=0x1100) {
+                errln("error in Normalizer::setText() or Normalizer::setMode()");
+            }
+    
+            // test last()/previous() with an internal buffer overflow
+            StringBuffer buf = new StringBuffer("aaaaaaaaaa");
+            buf.setCharAt(10-1,'\u0308');
+            clone.setText(buf);
+            if(clone.last()!=0x308) {
+                errln("error in Normalizer(10*U+0308).last()");
+            }
+    
+            // test UNORM_NONE
+            norm.setMode(Normalizer.NONE);
+            if(norm.first()!=0x61 || norm.next()!=0x308 || norm.last()!=0x2f800) {
+                errln("error in Normalizer(UNORM_NONE).first()/next()/last()");
+            }
+            out=Normalizer.normalize(s, Normalizer.NONE);
+            if(!out.equals(s)) {
+                errln("error in Normalizer::normalize(UNORM_NONE)");
+            }
+            ch = 0x1D15E;
+            String exp = "\\U0001D157\\U0001D165";
+            String ns = Normalizer.normalize(ch,Normalizer.NFC);
+            if(!ns.equals(Utility.unescape(exp))){
+                errln("error in Normalizer.normalize(int,Mode)");
+            }
+            ns = Normalizer.normalize(ch,Normalizer.NFC,0);
+            if(!ns.equals(Utility.unescape(exp))){
+                errln("error in Normalizer.normalize(int,Mode,int)");
+            }
+            
+            
+        }catch(Exception e){
+            throw e;
+        }
+    }
+
+    public void TestConcatenate() {
+
+        Object[][]cases=new Object[][]{
+            /* mode, left, right, result */
+            {
+                Normalizer.NFC,
+                "re",
+                "\u0301sum\u00e9",
+                "r\u00e9sum\u00e9"
+            },
+            {
+                Normalizer.NFC,
+                "a\u1100",
+                "\u1161bcdefghijk",
+                "a\uac00bcdefghijk"
+            },
+            /* ### TODO: add more interesting cases */
+            {
+                Normalizer.NFD,
+                "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+                "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+                "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+                "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+                "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+                "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+                "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB",
+
+                "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+                "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+                "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+                "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+                "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+                "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+                "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E",
+
+                "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+                "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+                "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+                "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+                "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+                "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+                "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u0399" +
+                "\u0301\u03C5\u0308\u0301\u1FEB\u1FEE\u1FEF\u1FF9" +
+                "\u1FFB\u1FFD\u2000\u2001\u2126\u212A\u212B\u2329" +
+                "\u232A\uF900\uFA10\uFA12\uFA15\uFA20\uFA22\uFA25" +
+                "\uFA26\uFA2A\uFB1F\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E" +
+                "\uFB2F\uFB30\uFB31\uFB32\uFB33\uFB34\uFB35\uFB36" +
+                "\uFB38\uFB39\uFB3A\uFB3B\uFB3C\uFB3E\uFB40\uFB41" +
+                "\uFB43\uFB44\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B" +
+                "\uFB4C\uFB4D\uFB4E"
+            }
+        };
+
+        String left, right, expect, result;
+        Normalizer.Mode mode;
+        int i;
+
+        /* test concatenation */
+        for(i=0; i<cases.length; ++i) {
+            mode = (Normalizer.Mode)cases[i][0];
+
+            left=(String)cases[i][1];
+            right=(String)cases[i][2];
+            expect=(String)cases[i][3];
+            {
+                result=Normalizer.concatenate(left, right, mode,0);
+                if( result.equals(expect)) {
+                    errln("error in Normalizer.concatenate(), cases[] failed"
+                          +", result==expect: expected: "
+                          + hex(expect)+" =========> got: " + hex(result));
+                }
+            }
+            {
+                result=Normalizer.concatenate(left.toCharArray(), right.toCharArray(), mode,0);
+                if( result.equals(expect)) {
+                    errln("error in Normalizer.concatenate(), cases[] failed"
+                          +", result==expect: expected: "
+                          + hex(expect)+" =========> got: " + hex(result));
+                }
+            }
+        }
+    }
+    private final int RAND_MAX = 0x7fff;
+
+    public void TestCheckFCD()
+    {
+      char[] FAST = {0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+                     0x0008, 0x0009, 0x000A};
+
+      char[] FALSE = {0x0001, 0x0002, 0x02EA, 0x03EB, 0x0300, 0x0301,
+                      0x02B9, 0x0314, 0x0315, 0x0316};
+
+      char[] TRUE = {0x0030, 0x0040, 0x0440, 0x056D, 0x064F, 0x06E7,
+                     0x0050, 0x0730, 0x09EE, 0x1E10};
+
+      char[][] datastr= { {0x0061, 0x030A, 0x1E05, 0x0302, 0},
+                          {0x0061, 0x030A, 0x00E2, 0x0323, 0},
+                          {0x0061, 0x0323, 0x00E2, 0x0323, 0},
+                          {0x0061, 0x0323, 0x1E05, 0x0302, 0}
+                        };
+      Normalizer.QuickCheckResult result[] = {Normalizer.YES, Normalizer.NO, Normalizer.NO, Normalizer.YES};
+
+      char[] datachar= {        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
+                                0x6a,
+                                0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+                                0xea,
+                                0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306,
+                                0x0307, 0x0308, 0x0309, 0x030a,
+                                0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326,
+                                0x0327, 0x0328, 0x0329, 0x032a,
+                                0x1e00, 0x1e01, 0x1e02, 0x1e03, 0x1e04, 0x1e05, 0x1e06,
+                                0x1e07, 0x1e08, 0x1e09, 0x1e0a
+                       };
+
+      int count = 0;
+
+      if (Normalizer.quickCheck(FAST,0,FAST.length, Normalizer.FCD,0) != Normalizer.YES)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for fast Normalizer.quickCheck is Normalizer.YES\n");
+      if (Normalizer.quickCheck(FALSE,0, FALSE.length,Normalizer.FCD,0) != Normalizer.NO)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for error Normalizer.quickCheck is Normalizer.NO\n");
+      if (Normalizer.quickCheck(TRUE,0,TRUE.length,Normalizer.FCD,0) != Normalizer.YES)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for correct Normalizer.quickCheck is Normalizer.YES\n");
+
+
+      while (count < 4)
+      {
+        Normalizer.QuickCheckResult fcdresult = Normalizer.quickCheck(datastr[count],0,datastr[count].length, Normalizer.FCD,0);
+        if (result[count] != fcdresult) {
+            errln("Normalizer.quickCheck(FCD) failed: Data set "+ count
+                    + " expected value "+ result[count]);
+        }
+        count ++;
+      }
+
+      /* random checks of long strings */
+      //srand((unsigned)time( NULL ));
+      Random rand = createRandom(); // use test framework's random
+
+      for (count = 0; count < 50; count ++)
+      {
+        int size = 0;
+        Normalizer.QuickCheckResult testresult = Normalizer.YES;
+        char[] data= new char[20];
+        char[] norm= new char[100];
+        char[] nfd = new char[100];
+        int normStart = 0;
+        int nfdsize = 0;
+        while (size != 19) {
+          data[size] = datachar[rand.nextInt(RAND_MAX)*50/RAND_MAX];
+          logln("0x"+data[size]);
+          normStart += Normalizer.normalize(data,size,size+1,
+                                              norm,normStart,100,
+                                              Normalizer.NFD,0);
+          size ++;
+        }
+        logln("\n");
+
+        nfdsize = Normalizer.normalize(data,0,size, nfd,0,nfd.length,Normalizer.NFD,0);
+        //    nfdsize = unorm_normalize(data, size, UNORM_NFD, UCOL_IGNORE_HANGUL,
+        //                      nfd, 100, &status);
+        if (nfdsize != normStart || Utility.arrayRegionMatches(nfd,0, norm,0,nfdsize) ==false) {
+          testresult = Normalizer.NO;
+        }
+        if (testresult == Normalizer.YES) {
+          logln("result Normalizer.YES\n");
+        }
+        else {
+          logln("result Normalizer.NO\n");
+        }
+
+        if (Normalizer.quickCheck(data,0,data.length, Normalizer.FCD,0) != testresult) {
+          errln("Normalizer.quickCheck(FCD) failed: expected "+ testresult +" for random data: "+hex(new String(data)) );
+        }
+      }
+    }
+
+
+    // reference implementation of Normalizer::compare
+    private int ref_norm_compare(String s1, String s2, int options) {
+        String t1, t2,r1,r2;
+
+        int normOptions=(int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT);
+        
+        if((options&Normalizer.COMPARE_IGNORE_CASE)!=0) {
+            // NFD(toCasefold(NFD(X))) = NFD(toCasefold(NFD(Y)))
+            r1 = Normalizer.decompose(s1,false,normOptions);
+            r2 = Normalizer.decompose(s2,false,normOptions);
+            r1 = UCharacter.foldCase(r1,options);
+            r2 = UCharacter.foldCase(r2,options);
+        }else{
+            r1 = s1;
+            r2 = s2;
+        }
+        
+        t1 = Normalizer.decompose(r1, false, normOptions);
+        t2 = Normalizer.decompose(r2, false, normOptions);
+
+        if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp 
+                    = new UTF16.StringComparator(true, false, 
+                                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            return comp.compare(t1,t2);
+        } else {
+            return t1.compareTo(t2);
+        }
+
+    }
+
+    // test wrapper for Normalizer::compare, sets UNORM_INPUT_IS_FCD appropriately
+    private int norm_compare(String s1, String s2, int options) {
+        int normOptions=(int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT);
+
+        if( Normalizer.YES==Normalizer.quickCheck(s1,Normalizer.FCD,normOptions) &&
+            Normalizer.YES==Normalizer.quickCheck(s2,Normalizer.FCD,normOptions)) {
+            options|=Normalizer.INPUT_IS_FCD;
+        }
+
+        return Normalizer.compare(s1, s2, options);
+    }
+
+    // reference implementation of UnicodeString::caseCompare
+    private int ref_case_compare(String s1, String s2, int options) {
+        String t1, t2;
+
+        t1=s1;
+        t2=s2;
+
+        t1 = UCharacter.foldCase(t1,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+        t2 = UCharacter.foldCase(t2,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+
+        if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp 
+                    = new UTF16.StringComparator(true, false,
+                                    UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            return comp.compare(t1,t2);
+        } else {
+            return t1.compareTo(t2);
+        }
+
+    }
+
+    // reduce an integer to -1/0/1
+    private static int sign(int value) {
+        if(value==0) {
+            return 0;
+        } else {
+            return (value>>31)|1;
+        }
+    }
+    private static String signString(int value) {
+        if(value<0) {
+            return "<0";
+        } else if(value==0) {
+            return "=0";
+        } else /* value>0 */ {
+            return ">0";
+        }
+    }
+    // test Normalizer::compare and unorm_compare (thinly wrapped by the former)
+    // by comparing it with its semantic equivalent
+    // since we trust the pieces, this is sufficient
+
+    // test each string with itself and each other
+    // each time with all options
+    private  String strings[]=new String[]{
+                // some cases from NormalizationTest.txt
+                // 0..3
+                "D\u031B\u0307\u0323",
+                "\u1E0C\u031B\u0307",
+                "D\u031B\u0323\u0307",
+                "d\u031B\u0323\u0307",
+        
+                // 4..6
+                "\u00E4",
+                "a\u0308",
+                "A\u0308",
+        
+                // Angstrom sign = A ring
+                // 7..10
+                "\u212B",
+                "\u00C5",
+                "A\u030A",
+                "a\u030A",
+        
+                // 11.14
+                "a\u059A\u0316\u302A\u032Fb",
+                "a\u302A\u0316\u032F\u059Ab",
+                "a\u302A\u0316\u032F\u059Ab",
+                "A\u059A\u0316\u302A\u032Fb",
+        
+                // from ICU case folding tests
+                // 15..20
+                "A\u00df\u00b5\ufb03\\U0001040c\u0131",
+                "ass\u03bcffi\\U00010434i",
+                "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff",
+                "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff",
+                "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff",
+                "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd",
+        
+                //     U+d800 U+10001   see implementation comment in unorm_cmpEquivFold
+                // vs. U+10000          at bottom - code point order
+                // 21..22
+                "\ud800\ud800\udc01",
+                "\ud800\udc00",
+        
+                // other code point order tests from ustrtest.cpp
+                // 23..31
+                "\u20ac\ud801",
+                "\u20ac\ud800\udc00",
+                "\ud800",
+                "\ud800\uff61",
+                "\udfff",
+                "\uff61\udfff",
+                "\uff61\ud800\udc02",
+                "\ud800\udc02",
+                "\ud84d\udc56",
+        
+                // long strings, see cnormtst.c/TestNormCoverage()
+                // equivalent if case-insensitive
+                // 32..33
+                "\uAD8B\uAD8B\uAD8B\uAD8B"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+                "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                "\uAD8B\uAD8B\uAD8B\uAD8B"+
+                "d\u031B\u0307\u0323",
+        
+                "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "aaaaaaaaaaAAAAAAAAZZZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+                "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+                "\u1E0C\u031B\u0307",
+        
+                // some strings that may make a difference whether the compare function
+                // case-folds or decomposes first
+                // 34..41
+                "\u0360\u0345\u0334",
+                "\u0360\u03b9\u0334",
+        
+                "\u0360\u1f80\u0334",
+                "\u0360\u03b1\u0313\u03b9\u0334",
+        
+                "\u0360\u1ffc\u0334",
+                "\u0360\u03c9\u03b9\u0334",
+        
+                "a\u0360\u0345\u0360\u0345b",
+                "a\u0345\u0360\u0345\u0360b",
+        
+                // interesting cases for canonical caseless match with turkic i handling
+                // 42..43
+                "\u00cc",
+                "\u0069\u0300",
+        
+                // strings with post-Unicode 3.2 normalization or normalization corrections
+                // 44..45
+                "\u00e4\u193b\\U0002f868",
+                "\u0061\u193b\u0308\u36fc",
+
+
+    };
+
+    // all combinations of options
+    // UNORM_INPUT_IS_FCD is set automatically if both input strings fulfill FCD conditions
+    final class Temp {
+        int options;
+        String name;
+        public Temp(int opt,String str){
+            options =opt;
+            name = str;
+        }
+
+    }
+    // set UNORM_UNICODE_3_2 in one additional combination
+  
+    private Temp[] opt = new Temp[]{
+                    new Temp(0,"default"),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER, "code point order" ),
+                    new Temp(Normalizer.COMPARE_IGNORE_CASE, "ignore case" ),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE, "code point order & ignore case" ),
+                    new Temp(Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "ignore case & special i"),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "code point order & ignore case & special i"),
+                    new Temp(Normalizer.UNICODE_3_2 << Normalizer.COMPARE_NORM_OPTIONS_SHIFT, "Unicode 3.2")
+            };
+
+
+    public void TestCompareDebug(){
+
+        String[] s = new String[100]; // at least as many items as in strings[] !
+
+
+        int i, j, k, count=strings.length;
+        int result, refResult;
+
+        // create the UnicodeStrings
+        for(i=0; i<count; ++i) {
+            s[i]=Utility.unescape(strings[i]);
+        }
+        UTF16.StringComparator comp = new UTF16.StringComparator(true, false, 
+                                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        // test them each with each other
+
+        i = 42;
+        j = 43;
+        k = 2;
+        // test Normalizer::compare
+        result=norm_compare(s[i], s[j], opt[k].options);
+        refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+        if(sign(result)!=sign(refResult)) {
+            errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+        }
+
+        // test UnicodeString::caseCompare - same internal implementation function
+         if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+        //    result=s[i]. (s[j], opt[k].options);
+            if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+            {
+                comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            }
+            else {
+                comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+            }
+            
+            result=comp.compare(s[i],s[j]);
+            refResult=ref_case_compare(s[i], s[j], opt[k].options);
+            if(sign(result)!=sign(refResult)) {
+                      errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                            }
+        }
+        String value1 = "\u00dater\u00fd";
+        String value2 = "\u00fater\u00fd";
+        if(Normalizer.compare(value1,value2,0)!=0){
+            if(Normalizer.compare(value1,value2,Normalizer.COMPARE_IGNORE_CASE)==0){
+
+            }
+        }
+    }
+
+    public void TestCompare() {
+
+        String[] s = new String[100]; // at least as many items as in strings[] !
+
+        int i, j, k, count=strings.length;
+        int result, refResult;
+
+        // create the UnicodeStrings
+        for(i=0; i<count; ++i) {
+            s[i]=Utility.unescape(strings[i]);
+        }
+        UTF16.StringComparator comp = new UTF16.StringComparator();
+        // test them each with each other
+        for(i=0; i<count; ++i) {
+            for(j=i; j<count; ++j) {
+                for(k=0; k<opt.length; ++k) {
+                    // test Normalizer::compare
+                    result=norm_compare(s[i], s[j], opt[k].options);
+                    refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+                    if(sign(result)!=sign(refResult)) {
+                        errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                    }
+
+                    // test UnicodeString::caseCompare - same internal implementation function
+                     if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+                        //    result=s[i]. (s[j], opt[k].options);
+                        if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+                        {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+                        }
+                        else {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+                        }
+                        
+                        comp.setCodePointCompare((opt[k].options & Normalizer.COMPARE_CODE_POINT_ORDER) != 0);
+                        // result=comp.caseCompare(s[i],s[j], opt[k].options);
+                        result=comp.compare(s[i],s[j]);
+                        refResult=ref_case_compare(s[i], s[j], opt[k].options);
+                        if(sign(result)!=sign(refResult)) {
+                                  errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                                         }
+                    }
+                }
+            }
+        }
+        
+        // test cases with i and I to make sure Turkic works
+        char[] iI= new char[]{ 0x49, 0x69, 0x130, 0x131 };
+        USerializedSet sset=new USerializedSet();
+        UnicodeSet set = new UnicodeSet();
+    
+        String s1, s2;
+        int start, end;
+    
+        // collect all sets into one for contiguous output
+        int[] startEnd = new int[2];
+        for(i=0; i<iI.length; ++i) {
+            if(NormalizerImpl.getCanonStartSet(iI[i], sset)) {
+                count=sset.countRanges();
+                for(j=0; j<count; ++j) {
+                    sset.getRange(j, startEnd);
+                    set.add(startEnd[0], startEnd[1]);
+                }
+            }
+        }
+
+        // test all of these precomposed characters
+        UnicodeSetIterator it = new UnicodeSetIterator(set);
+        while(it.nextRange() && it.codepoint!=UnicodeSetIterator.IS_STRING) {
+            start=it.codepoint;
+            end=it.codepointEnd;
+            while(start<=end) {
+                s1 = Integer.toString(start);
+                s2 = Normalizer.decompose(s1, false, 0);
+//                if(U_FAILURE(errorCode)) {
+//                    errln("Normalizer::decompose(U+%04x) failed: %s", start, u_errorName(errorCode));
+//                    return;
+//                }
+                for(k=0; k<opt.length; ++k) {
+                    // test Normalizer::compare
+
+                    result= norm_compare(s1, s2, opt[k].options);
+                    refResult=ref_norm_compare(s1, s2, opt[k].options);
+                    if(sign(result)!=sign(refResult)) {
+                        errln("Normalizer.compare(U+"+hex(start)+" with its NFD, "+opt[k].name+")" 
+                              + signString(result)+" should be "+signString(refResult));
+                    }
+    
+                    // test UnicodeString::caseCompare - same internal implementation function
+                    if((opt[k].options & Normalizer.COMPARE_IGNORE_CASE)>0) {
+                         if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+                        {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+                        }
+                        else {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+                        }
+                        
+                        comp.setCodePointCompare((opt[k].options & Normalizer.COMPARE_CODE_POINT_ORDER) != 0);
+         
+                        result=comp.compare(s1,s2);
+                        refResult=ref_case_compare(s1, s2, opt[k].options);
+                        if(sign(result)!=sign(refResult)) {
+                            errln("UTF16.compare(U+"+hex(start)+" with its NFD, "
+                                  +opt[k].name+")"+signString(result) +" should be "+signString(refResult));
+                        }
+                    }
+                }
+    
+                ++start;
+            }
+        }
+
+    }
+
+    // verify that case-folding does not un-FCD strings
+    int countFoldFCDExceptions(int foldingOptions) {
+        String s, d;
+        int c;
+        int count;
+        int/*unsigned*/ cc, trailCC, foldCC, foldTrailCC;
+        Normalizer.QuickCheckResult qcResult;
+        int category;
+        boolean isNFD;
+
+
+        logln("Test if case folding may un-FCD a string (folding options 0x)"+hex(foldingOptions));
+
+        count=0;
+        for(c=0; c<=0x10ffff; ++c) {
+            category=UCharacter.getType(c);
+            if(category==UCharacterCategory.UNASSIGNED) {
+                continue; // skip unassigned code points
+            }
+            if(c==0xac00) {
+                c=0xd7a3; // skip Hangul - no case folding there
+                continue;
+            }
+            // skip Han blocks - no case folding there either
+            if(c==0x3400) {
+                c=0x4db5;
+                continue;
+            }
+            if(c==0x4e00) {
+                c=0x9fa5;
+                continue;
+            }
+            if(c==0x20000) {
+                c=0x2a6d6;
+                continue;
+            }
+
+            s= UTF16.valueOf(c);
+
+            // get leading and trailing cc for c
+            d= Normalizer.decompose(s,false);
+            isNFD= s==d;
+            cc=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+            trailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+            // get leading and trailing cc for the case-folding of c
+            UCharacter.foldCase(s,(foldingOptions==0));
+            d = Normalizer.decompose(s, false);
+            foldCC=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+            foldTrailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+            qcResult=Normalizer.quickCheck(s, Normalizer.FCD,0);
+
+
+            // bad:
+            // - character maps to empty string: adjacent characters may then need reordering
+            // - folding has different leading/trailing cc's, and they don't become just 0
+            // - folding itself is not FCD
+            if( qcResult!=Normalizer.YES ||
+                s.length()==0 ||
+                (cc!=foldCC && foldCC!=0) || (trailCC!=foldTrailCC && foldTrailCC!=0)
+            ) {
+                ++count;
+                errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+                //errln("  cc %02x trailCC %02x    foldCC(U+%04lx) %02x foldTrailCC(U+%04lx) %02x   quickCheck(folded)=%d", cc, trailCC, UTF16.charAt(d,0), foldCC, UTF16.charAt(d,d.length()-1), foldTrailCC, qcResult);
+                continue;
+            }
+
+            // also bad:
+            // if a code point is in NFD but its case folding is not, then
+            // unorm_compare will also fail
+            if(isNFD && Normalizer.YES!=Normalizer.quickCheck(s, Normalizer.NFD,0)) {
+                ++count;
+                errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+            }
+        }
+
+        logln("There are "+hex(count)+" code points for which case-folding may un-FCD a string (folding options"+foldingOptions+"x)" );
+        return count;
+    }
+
+    public void TestFindFoldFCDExceptions() {
+        int count;
+
+        count=countFoldFCDExceptions(0);
+        count+=countFoldFCDExceptions(Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if(count>0) {
+            //*
+            //* If case-folding un-FCDs any strings, then unorm_compare() must be
+            //* re-implemented.
+            //* It currently assumes that one can check for FCD then case-fold
+            //* and then still have FCD strings for raw decomposition without reordering.
+            //*
+            errln("error: There are "+count+" code points for which case-folding"+
+                  " may un-FCD a string for all folding options.\n See comment"+
+                  " in BasicNormalizerTest::FindFoldFCDExceptions()!");
+        }
+    }
+    
+    public void TestCombiningMarks(){
+        String src = "\u0f71\u0f72\u0f73\u0f74\u0f75";
+        String expected = "\u0F71\u0F71\u0F71\u0F72\u0F72\u0F74\u0F74";
+        String result = Normalizer.decompose(src,false);
+        if(!expected.equals(result)){
+            errln("Reordering of combining marks failed. Expected: "+Utility.hex(expected)+" Got: "+ Utility.hex(result));
+        }
+    }
+
+    /*
+     * Re-enable this test when UTC fixes UAX 21
+    public void TestUAX21Failure(){
+        final String[][] cases = new String[][]{
+                {"\u0061\u0345\u0360\u0345\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+                {"\u0061\u0345\u0345\u0360\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+                {"\u0061\u0345\u0360\u0362\u0360\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+                {"\u0061\u0360\u0345\u0360\u0362\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+                {"\u0061\u0345\u0360\u0362\u0361\u0062", "\u0061\u0362\u0360\u0361\u0345\u0062"},
+                {"\u0061\u0361\u0345\u0360\u0362\u0062", "\u0061\u0362\u0361\u0360\u0345\u0062"},
+        };
+        for(int i = 0; i< cases.length; i++){
+            String s1 =cases[0][0]; 
+            String s2 = cases[0][1];
+            if( (Normalizer.compare(s1,s2,Normalizer.FOLD_CASE_DEFAULT ==0)//case sensitive compare
+                &&
+                (Normalizer.compare(s1,s2,Normalizer.COMPARE_IGNORE_CASE)!=0)){
+                errln("Normalizer.compare() failed for s1: " 
+                        + Utility.hex(s1) +" s2: " + Utility.hex(s2));
+            }
+        }
+    }
+    */
+    public void TestFCNFKCClosure() {
+        final class TestStruct{
+            int c;
+            String s;
+            TestStruct(int cp, String src){
+                c=cp;
+                s=src;
+            }
+        }
+        
+        TestStruct[] tests= new TestStruct[]{
+            new TestStruct( 0x037A, "\u0020\u03B9" ),
+            new TestStruct( 0x03D2, "\u03C5" ),
+            new TestStruct( 0x20A8, "\u0072\u0073" ) ,
+            new TestStruct( 0x210B, "\u0068" ),
+            new TestStruct( 0x210C, "\u0068" ),
+            new TestStruct( 0x2121, "\u0074\u0065\u006C" ),
+            new TestStruct( 0x2122, "\u0074\u006D" ),
+            new TestStruct( 0x2128, "\u007A" ),
+            new TestStruct( 0x1D5DB,"\u0068" ),
+            new TestStruct( 0x1D5ED,"\u007A" ),
+            new TestStruct( 0x0061, "" )
+        };
+    
+
+        for(int i = 0; i < tests.length; ++ i) {
+            String result=Normalizer.getFC_NFKC_Closure(tests[i].c);
+            if(!result.equals(new String(tests[i].s))) {
+                errln("getFC_NFKC_Closure(U+"+Integer.toHexString(tests[i].c)+") is wrong");
+            }
+        }
+    
+        /* error handling */
+
+        int length=Normalizer.getFC_NFKC_Closure(0x5c, null);
+        if(length!=0){
+            errln("getFC_NFKC_Closure did not perform error handling correctly");
+        }
+    }
+    public void TestBugJ2324(){
+       /* String[] input = new String[]{
+                            //"\u30FD\u3099",
+                            "\u30FA\u309A",
+                            "\u30FB\u309A",
+                            "\u30FC\u309A",
+                            "\u30FE\u309A",
+                            "\u30FD\u309A",
+
+        };*/
+        String troublesome = "\u309A";
+        for(int i=0x3000; i<0x3100;i++){
+            String input = ((char)i)+troublesome;
+            try{                            
+              /*  String result =*/ Normalizer.compose(input,false);
+            }catch(IndexOutOfBoundsException e){
+                errln("compose() failed for input: " + Utility.hex(input) + " Exception: " + e.toString());
+            }
+        }
+                
+    }
+
+     static final int D = 0, C = 1, KD= 2, KC = 3, FCD=4, NONE=5;   
+    private static UnicodeSet[] initSkippables(UnicodeSet[] skipSets){
+        if( skipSets.length < 4 ){
+            return null;
+        }
+        skipSets[D].applyPattern(
+            "[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+            + "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+            + "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+            + "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+            + "\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC"
+            + "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0350-\\u036F"
+            + "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+            + "\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407"
+            + "\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C"
+            + "-\\u045E\\u0476\\u0477\\u0483-\\u0487\\u04C1\\u04C2\\u04D0-"
+            + "\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-"
+            + "\\u04F5\\u04F8\\u04F9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4"
+            + "\\u05C5\\u05C7\\u0610-\\u061A\\u0622-\\u0626\\u064B-\\u065E"
+            + "\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33"
+            + "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+            + "\\u0B48\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+            + "\\u0C48\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA"
+            + "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u103A\\u108D\\u135F\\u1714\\u1734"
+            + "\\u17D2\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B06\\u1B08"
+            + "\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B34\\u1B3B\\u1B3D\\u1B40\\u1B41"
+            + "\\u1B43\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1DC0-\\u1DE6"
+            + "\\u1DFE-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-"
+            + "\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59"
+            + "\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC"
+            + "\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-"
+            + "\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD\\u2000\\u2001\\u20D0-"
+            + "\\u20DC\\u20E1\\u20E5-\\u20F0\\u2126\\u212A\\u212B\\u219A\\u219B"
+            + "\\u21AE\\u21CD-\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u2241"
+            + "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275"
+            + "\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-"
+            + "\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329\\u232A\\u2ADC"
+            + "\\u2DE0-\\u2DFF\\u302A-\\u302F\\u304C\\u304E\\u3050\\u3052"
+            + "\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065"
+            + "\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079"
+            + "\\u307A\\u307C\\u307D\\u3094\\u3099\\u309A\\u309E\\u30AC\\u30AE"
+            + "\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0"
+            + "\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6"
+            + "\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE"
+            + "\\uA66F\\uA67C\\uA67D\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953\\uAC00"
+            + "-\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20"
+            + "\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-"
+            + "\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E"
+            + "\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE26"
+            + "\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010"
+            + "A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+            + "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+            + "D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-\\U0002FA1D]", false);
+
+      skipSets[C].applyPattern(
+          "[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+          + "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+          + "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124"
+          + "\\u0125\\u0128-\\u012D\\u0130\\u0139\\u013A\\u013D\\u013E\\u0143"
+          + "\\u0144\\u0147\\u0148\\u014C-\\u0151\\u0154\\u0155\\u0158-"
+          + "\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168-\\u0171\\u0174-"
+          + "\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7\\u01CD-\\u01DC\\u01DE"
+          + "-\\u01E1\\u01E6-\\u01EB\\u01F4\\u01F5\\u01F8-\\u01FB\\u0200-"
+          + "\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0292\\u0300-\\u034E"
+          + "\\u0350-\\u036F\\u0374\\u037E\\u0387\\u0391\\u0395\\u0397\\u0399"
+          + "\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7"
+          + "\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D2\\u0406"
+          + "\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423\\u0427\\u042B"
+          + "\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E\\u0443\\u0447"
+          + "\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0487\\u04D8\\u04D9"
+          + "\\u04E8\\u04E9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5"
+          + "\\u05C7\\u0610-\\u061A\\u0622\\u0623\\u0627\\u0648\\u064A-"
+          + "\\u065E\\u0670\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-\\u06E4"
+          + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+          + "\\u07F3\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958"
+          + "-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF"
+          + "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+          + "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92"
+          + "\\u0BBE\\u0BC6\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56"
+          + "\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E"
+          + "\\u0D46\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF"
+          + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+          + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+          + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+          + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+          + "\\u0FC6\\u1025\\u102E\\u1037\\u1039\\u103A\\u108D\\u1100-\\u1112"
+          + "\\u1161-\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2"
+          + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B05\\u1B07\\u1B09"
+          + "\\u1B0B\\u1B0D\\u1B11\\u1B34\\u1B35\\u1B3A\\u1B3C\\u1B3E\\u1B3F"
+          + "\\u1B42\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1DC0-\\u1DE6"
+          + "\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B\\u1E20-\\u1E27"
+          + "\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D\\u1E80-\\u1E87"
+          + "\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-\\u1EF3\\u1EF6-\\u1EF9"
+          + "\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31\\u1F38\\u1F39"
+          + "\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59\\u1F60-\\u1F71"
+          + "\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D\\u1F80\\u1F81"
+          + "\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0\\u1FA1\\u1FA8"
+          + "\\u1FA9\\u1FB3\\u1FB6\\u1FBB\\u1FBC\\u1FBE\\u1FBF\\u1FC3\\u1FC6"
+          + "\\u1FC9\\u1FCB\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB\\u1FEE\\u1FEF"
+          + "\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000\\u2001\\u20D0-"
+          + "\\u20DC\\u20E1\\u20E5-\\u20F0\\u2126\\u212A\\u212B\\u2190\\u2192"
+          + "\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225"
+          + "\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264\\u2265\\u2272"
+          + "\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282\\u2283\\u2286\\u2287"
+          + "\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB\\u22B2-\\u22B5\\u2329"
+          + "\\u232A\\u2ADC\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3046\\u304B"
+          + "\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D"
+          + "\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078"
+          + "\\u307B\\u3099\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1"
+          + "\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4"
+          + "\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2"
+          + "\\u30FD\\uA66F\\uA67C\\uA67D\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953"
+          + "\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0"
+          + "\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC"
+          + "\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8"
+          + "\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4"
+          + "\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0"
+          + "\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC"
+          + "\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8"
+          + "\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4"
+          + "\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0"
+          + "\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC"
+          + "\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8"
+          + "\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4"
+          + "\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0"
+          + "\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC"
+          + "\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8"
+          + "\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4"
+          + "\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0"
+          + "\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C"
+          + "\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98"
+          + "\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94"
+          + "\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090"
+          + "\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C"
+          + "\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288"
+          + "\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384"
+          + "\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480"
+          + "\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C"
+          + "\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678"
+          + "\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774"
+          + "\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870"
+          + "\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C"
+          + "\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68"
+          + "\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64"
+          + "\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60"
+          + "\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C"
+          + "\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58"
+          + "\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54"
+          + "\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050"
+          + "\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C"
+          + "\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248"
+          + "\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344"
+          + "\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440"
+          + "\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C"
+          + "\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638"
+          + "\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734"
+          + "\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-"
+          + "\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+          + "\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-"
+          + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20"
+          + "-\\uFE26\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A"
+          + "\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001"
+          + "D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD"
+          + "\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-"
+          + "\\U0002FA1D]", false);
+   
+        skipSets[KD].applyPattern(
+              "[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+              + "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+              + "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+              + "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+              + "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+              + "\\u0154-\\u0165\\u0168-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0"
+              + "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+              + "\\u021E\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+              + "\\u02E0-\\u02E4\\u0300-\\u034E\\u0350-\\u036F\\u0374\\u037A"
+              + "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+              + "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+              + "\\u03F9\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+              + "\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u0483"
+              + "-\\u0487\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-"
+              + "\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0587"
+              + "\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610"
+              + "-\\u061A\\u0622-\\u0626\\u064B-\\u065E\\u0670\\u0675-\\u0678"
+              + "\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7"
+              + "\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-\\u07F3"
+              + "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+              + "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36"
+              + "\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B48"
+              + "\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD\\u0C48"
+              + "\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB"
+              + "\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE\\u0E33"
+              + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-"
+              + "\\u0ECB\\u0EDC\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39"
+              + "\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80"
+              + "-\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+              + "\\u0FC6\\u1026\\u1037\\u1039\\u103A\\u108D\\u10FC\\u135F\\u1714"
+              + "\\u1734\\u17D2\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B06"
+              + "\\u1B08\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B34\\u1B3B\\u1B3D\\u1B40"
+              + "\\u1B41\\u1B43\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1D2C-"
+              + "\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A\\u1D78"
+              + "\\u1D9B-\\u1DE6\\u1DFE-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15"
+              + "\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57"
+              + "\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-"
+              + "\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-"
+              + "\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-"
+              + "\\u2026\\u202F\\u2033\\u2034\\u2036\\u2037\\u203C\\u203E\\u2047-"
+              + "\\u2049\\u2057\\u205F\\u2070\\u2071\\u2074-\\u208E\\u2090-"
+              + "\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2100-"
+              + "\\u2103\\u2105-\\u2107\\u2109-\\u2113\\u2115\\u2116\\u2119-"
+              + "\\u211D\\u2120-\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D"
+              + "\\u212F-\\u2131\\u2133-\\u2139\\u213B-\\u2140\\u2145-\\u2149"
+              + "\\u2153-\\u217F\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204"
+              + "\\u2209\\u220C\\u2224\\u2226\\u222C\\u222D\\u222F\\u2230\\u2241"
+              + "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275"
+              + "\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-"
+              + "\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329\\u232A\\u2460-"
+              + "\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2C7C\\u2C7D\\u2D6F\\u2DE0"
+              + "-\\u2DFF\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F"
+              + "\\u3036\\u3038-\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056"
+              + "\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069"
+              + "\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C"
+              + "\\u307D\\u3094\\u3099-\\u309C\\u309E\\u309F\\u30AC\\u30AE\\u30B0"
+              + "\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2"
+              + "\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7"
+              + "\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\u30FF"
+              + "\\u3131-\\u318E\\u3192-\\u319F\\u3200-\\u321E\\u3220-\\u3243"
+              + "\\u3250-\\u327E\\u3280-\\u32FE\\u3300-\\u33FF\\uA66F\\uA67C"
+              + "\\uA67D\\uA770\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953\\uAC00-"
+              + "\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20"
+              + "\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-"
+              + "\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-"
+              + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3"
+              + "-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE10-"
+              + "\\uFE19\\uFE20-\\uFE26\\uFE30-\\uFE44\\uFE47-\\uFE52\\uFE54-"
+              + "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+              + "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+              + "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U000101FD\\U00010"
+              + "A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010A3F\\U0001D15E-"
+              + "\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001"
+              + "D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0"
+              + "\\U0001D242-\\U0001D244\\U0001D400-\\U0001D454\\U0001D456-"
+              + "\\U0001D49C\\U0001D49E\\U0001D49F\\U0001D4A2\\U0001D4A5\\U0001D4"
+              + "A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001D4BB"
+              + "\\U0001D4BD-\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-"
+              + "\\U0001D50A\\U0001D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001"
+              + "D51E-\\U0001D539\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544"
+              + "\\U0001D546\\U0001D54A-\\U0001D550\\U0001D552-\\U0001D6A5\\U0001"
+              + "D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
+   
+        skipSets[KC].applyPattern(
+                "[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+                + "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+                + "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+                + "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+                + "\\u0124\\u0125\\u0128-\\u012D\\u0130\\u0132\\u0133\\u0139\\u013A"
+                + "\\u013D-\\u0140\\u0143\\u0144\\u0147-\\u0149\\u014C-\\u0151"
+                + "\\u0154\\u0155\\u0158-\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168"
+                + "-\\u0171\\u0174-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7"
+                + "\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F1-\\u01F5"
+                + "\\u01F8-\\u01FB\\u0200-\\u021B\\u021E\\u021F\\u0226-\\u0233"
+                + "\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-\\u02E4\\u0300-"
+                + "\\u034E\\u0350-\\u036F\\u0374\\u037A\\u037E\\u0384\\u0385\\u0387"
+                + "\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC"
+                + "\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-"
+                + "\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+                + "\\u03F9\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423"
+                + "\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E"
+                + "\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0487"
+                + "\\u04D8\\u04D9\\u04E8\\u04E9\\u0587\\u0591-\\u05BD\\u05BF\\u05C1"
+                + "\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u0622\\u0623\\u0627"
+                + "\\u0648\\u064A-\\u065E\\u0670\\u0675-\\u0678\\u06C1\\u06D2"
+                + "\\u06D5-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED"
+                + "\\u0711\\u0730-\\u074A\\u07EB-\\u07F3\\u0928\\u0930\\u0933"
+                + "\\u093C\\u094D\\u0951-\\u0954\\u0958-\\u095F\\u09BC\\u09BE"
+                + "\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C"
+                + "\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47"
+                + "\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92\\u0BBE\\u0BC6\\u0BC7"
+                + "\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CBF\\u0CC2"
+                + "\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E\\u0D46\\u0D47\\u0D4D"
+                + "\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E33\\u0E38-\\u0E3A"
+                + "\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-\\u0ECB\\u0EDC"
+                + "\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D"
+                + "\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80-\\u0F84"
+                + "\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6"
+                + "\\u1025\\u102E\\u1037\\u1039\\u103A\\u108D\\u10FC\\u1100-\\u1112"
+                + "\\u1161-\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2"
+                + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B05\\u1B07\\u1B09"
+                + "\\u1B0B\\u1B0D\\u1B11\\u1B34\\u1B35\\u1B3A\\u1B3C\\u1B3E\\u1B3F"
+                + "\\u1B42\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1D2C-\\u1D2E"
+                + "\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A\\u1D78\\u1D9B-"
+                + "\\u1DE6\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B\\u1E20-"
+                + "\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D\\u1E80-"
+                + "\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-\\u1EF3\\u1EF6-"
+                + "\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31\\u1F38"
+                + "\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59\\u1F60-"
+                + "\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D\\u1F80"
+                + "\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0\\u1FA1"
+                + "\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB-\\u1FC1\\u1FC3\\u1FC6\\u1FC9"
+                + "\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD-\\u1FDF\\u1FE3\\u1FEB"
+                + "\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000-"
+                + "\\u200A\\u2011\\u2017\\u2024-\\u2026\\u202F\\u2033\\u2034\\u2036"
+                + "\\u2037\\u203C\\u203E\\u2047-\\u2049\\u2057\\u205F\\u2070\\u2071"
+                + "\\u2074-\\u208E\\u2090-\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1"
+                + "\\u20E5-\\u20F0\\u2100-\\u2103\\u2105-\\u2107\\u2109-\\u2113"
+                + "\\u2115\\u2116\\u2119-\\u211D\\u2120-\\u2122\\u2124\\u2126"
+                + "\\u2128\\u212A-\\u212D\\u212F-\\u2131\\u2133-\\u2139\\u213B-"
+                + "\\u2140\\u2145-\\u2149\\u2153-\\u217F\\u2190\\u2192\\u2194"
+                + "\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225\\u222C"
+                + "\\u222D\\u222F\\u2230\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261"
+                + "\\u2264\\u2265\\u2272\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282"
+                + "\\u2283\\u2286\\u2287\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB"
+                + "\\u22B2-\\u22B5\\u2329\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-"
+                + "\\u2A76\\u2ADC\\u2C7C\\u2C7D\\u2D6F\\u2DE0-\\u2DFF\\u2E9F\\u2EF3"
+                + "\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-\\u303A"
+                + "\\u3046\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059"
+                + "\\u305B\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072"
+                + "\\u3075\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6\\u30AB\\u30AD"
+                + "\\u30AF\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF"
+                + "\\u30C1\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB"
+                + "\\u30EF-\\u30F2\\u30FD\\u30FF\\u3131-\\u318E\\u3192-\\u319F"
+                + "\\u3200-\\u321E\\u3220-\\u3243\\u3250-\\u327E\\u3280-\\u32FE"
+                + "\\u3300-\\u33FF\\uA66F\\uA67C\\uA67D\\uA770\\uA806\\uA8C4\\uA92B"
+                + "-\\uA92D\\uA953\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+                + "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+                + "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+                + "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+                + "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+                + "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+                + "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+                + "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+                + "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+                + "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+                + "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+                + "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+                + "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+                + "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+                + "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+                + "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+                + "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+                + "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+                + "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+                + "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+                + "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+                + "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+                + "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+                + "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+                + "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+                + "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+                + "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+                + "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+                + "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+                + "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+                + "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+                + "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+                + "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+                + "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+                + "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+                + "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+                + "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+                + "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+                + "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+                + "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+                + "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+                + "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+                + "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+                + "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+                + "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+                + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+                + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17"
+                + "\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43"
+                + "\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-"
+                + "\\uFDC7\\uFDF0-\\uFDFC\\uFE10-\\uFE19\\uFE20-\\uFE26\\uFE30-"
+                + "\\uFE44\\uFE47-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+                + "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+                + "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+                + "\\uFFE8-\\uFFEE\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-"
+                + "\\U00010A3A\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001"
+                + "D172\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+                + "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0001"
+                + "D400-\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E\\U0001D49F"
+                + "\\U0001D4A2\\U0001D4A5\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D"
+                + "4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C3\\U0001D4C5-"
+                + "\\U0001D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001"
+                + "D516-\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E"
+                + "\\U0001D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001"
+                + "D552-\\U0001D6A5\\U0001D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF"
+                + "\\U0002F800-\\U0002FA1D]", false);
+   
+        return skipSets;
+    }
+
+    public void TestSkippable() {
+       UnicodeSet starts;
+       UnicodeSet[] skipSets = new UnicodeSet[]{
+                                                    new UnicodeSet(), //NFD
+                                                    new UnicodeSet(), //NFC
+                                                    new UnicodeSet(), //NFKC
+                                                    new UnicodeSet(), //NFKD
+                                                    new UnicodeSet(), //FCD
+                                                    new UnicodeSet(), //NONE
+                                               };
+       UnicodeSet[] expectSets = new UnicodeSet[]{
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                               };
+       StringBuffer s, pattern;
+       int start, limit, rangeEnd;
+       int i, range, count;
+       starts = new UnicodeSet();
+       /*
+       //[\u0350-\u0357\u035D-\u035F\u0610-\u0615\u0656-\u0658\u0CBC\u17DD\u1939-\u193B]
+       for(int ch=0;ch<=0x10FFFF;ch++){
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFD)) {
+                   skipSets[D].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFKD)) {
+                   skipSets[KD].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFC)) {
+                   skipSets[C].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFKC)) {
+                   skipSets[KC].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.FCD)) {
+                   skipSets[FCD].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NONE)) {
+                   skipSets[NONE].add(ch);
+               }
+       }
+       */
+       // build NF*Skippable sets from runtime data 
+       NormalizerImpl.addPropertyStarts(starts);
+       count=starts.getRangeCount();
+   
+       start=limit=0;
+       rangeEnd=0;
+       range=0;
+       for(;;) {
+           if(start<limit) {
+               // get properties for start and apply them to [start..limit[ 
+               if(Normalizer.isNFSkippable(start, Normalizer.NFD)) {
+                   skipSets[D].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFKD)) {
+                   skipSets[KD].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFC)) {
+                   skipSets[C].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFKC)) {
+                   skipSets[KC].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.FCD)) {
+                   skipSets[FCD].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NONE)) {
+                   skipSets[NONE].add(start, limit-1);
+               }
+               
+           }
+   
+           // go to next range of same properties 
+           start=limit;
+           if(++limit>rangeEnd) {
+               if(range<count) {
+                   limit=starts.getRangeStart(range);
+                   rangeEnd=starts.getRangeEnd(range);
+                   ++range;
+               } else if(range==count) {
+                   // additional range to complete the Unicode code space 
+                   limit=rangeEnd=0x110000;
+                   ++range;
+               } else {
+                   break;
+               }
+           }
+       }
+   
+       expectSets = initSkippables(expectSets);
+       if(expectSets[D].contains(0x0350)){
+            errln("expectSets[D] contains 0x0350");
+       }
+       //expectSets.length for now do not test FCD and NONE since there is no data
+       for(i=0; i< 4; ++i) {
+
+           if(!skipSets[i].equals(expectSets[i])) {
+               errln("error: TestSkippable skipSets["+i+"]!=expectedSets["+i+"]\n"+
+                     "May need to update hardcoded UnicodeSet patterns in com.ibm.icu.dev.test.normalizer.BasicTest.java\n"+
+                     "See ICU4J - unicodetools.com.ibm.text.UCD.NFSkippable\n" +
+                     "Run com.ibm.text.UCD.Main with the option NFSkippable.");
+   
+               s=new StringBuffer();
+               
+               s.append("\n\nskip=       ");
+               s.append(skipSets[i].toPattern(true));
+               s.append("\n\n");
+               
+               s.append("skip-expect=");             
+               pattern = new StringBuffer(((UnicodeSet)skipSets[i].clone()).removeAll(expectSets[i]).toPattern(true));
+               s.append(pattern);
+   
+               pattern.delete(0,pattern.length());
+               s.append("\n\nexpect-skip=");
+               pattern = new StringBuffer(((UnicodeSet)expectSets[i].clone()).removeAll(skipSets[i]).toPattern(true));
+               s.append(pattern);
+               s.append("\n\n");
+               
+               pattern.delete(0,pattern.length());
+               s.append("\n\nintersection(expect,skip)=");
+               UnicodeSet intersection  = ((UnicodeSet) expectSets[i].clone()).retainAll(skipSets[i]);
+               pattern = new StringBuffer(intersection.toPattern(true));
+               s.append(pattern);
+               s.append("\n\n");
+               
+
+               
+               errln(s.toString());
+           }
+       }
+     }
+     
+     public void TestBugJ2068(){
+        String sample = "The quick brown fox jumped over the lazy dog";
+        UCharacterIterator text = UCharacterIterator.getInstance(sample);
+        Normalizer norm = new Normalizer(text,Normalizer.NFC,0);
+        text.setIndex(4);
+        if(text.current() == norm.current()){
+            errln("Normalizer is not cloning the UCharacterIterator");
+        }
+     }   
+     public void TestGetCombiningClass(){
+        for(int i=0;i<0x10FFFF;i++){
+            int cc = UCharacter.getCombiningClass(i);
+            if(0xD800<= i && i<=0xDFFF && cc >0 ){
+                cc = UCharacter.getCombiningClass(i);
+                errln("CC: "+ cc + " for codepoint: " +Utility.hex(i,8));
+            } 
+        }
+    }  
+    
+    public void TestGetNX(){
+        UnicodeSet set = NormalizerImpl.getNX(1 /*NormalizerImpl.NX_HANGUL*/);
+        if(!set.contains(0xac01)){
+            errln("getNX did not return correct set for NX_HANGUL");
+        }
+        
+        set = NormalizerImpl.getNX(2/*NormalizerImpl.NX_CJK_COMPAT*/);
+        if(!set.contains('\uFA20')){
+            errln("getNX did not return correct set for NX_CJK_COMPAT");
+        }
+    }
+    public void TestSerializedSet(){
+        USerializedSet sset=new USerializedSet();
+        UnicodeSet set = new UnicodeSet();
+        int start, end;
+    
+        // collect all sets into one for contiguous output
+        int[] startEnd = new int[2];
+
+        if(NormalizerImpl.getCanonStartSet(0x0130, sset)) {
+            int count=sset.countRanges();
+            for(int j=0; j<count; ++j) {
+                sset.getRange(j, startEnd);
+                set.add(startEnd[0], startEnd[1]);
+            }
+        }
+       
+
+        // test all of these precomposed characters
+        UnicodeSetIterator it = new UnicodeSetIterator(set);
+        while(it.nextRange() && it.codepoint!=UnicodeSetIterator.IS_STRING) {
+            start=it.codepoint;
+            end=it.codepointEnd;
+            while(start<=end) {
+                if(!sset.contains(start)){
+                    errln("USerializedSet.contains failed for "+Utility.hex(start,8));
+                }
+            }
+        }
+    }
+    
+    public void TestReturnFailure(){
+        char[] term = {'r','\u00e9','s','u','m','\u00e9' };
+        char[] decomposed_term = new char[10 + term.length + 2];
+        int rc = Normalizer.decompose(term,0,term.length, decomposed_term,0,decomposed_term.length,true, 0);
+        int rc1 = Normalizer.decompose(term,0,term.length, decomposed_term,10,decomposed_term.length,true, 0); 
+        if(rc!=rc1){
+            errln("Normalizer decompose did not return correct length");
+        }
+    }
+
+    private final static class TestCompositionCase {
+        public Normalizer.Mode mode;
+        public int options;
+        public String input, expect;
+        TestCompositionCase(Normalizer.Mode mode, int options, String input, String expect) {
+            this.mode=mode;
+            this.options=options;
+            this.input=input;
+            this.expect=expect;
+        }
+    }
+
+    public void TestComposition() {
+        final TestCompositionCase cases[]=new TestCompositionCase[]{
+            /*
+             * special cases for UAX #15 bug
+             * see Unicode Public Review Issue #29
+             * at http://www.unicode.org/review/resolved-pri.html#pri29
+             */
+            new TestCompositionCase(Normalizer.NFC, 0, "\u1100\u0300\u1161\u0327",      "\u1100\u0300\u1161\u0327"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\u1100\u0300\u1161\u0327\u11a8","\u1100\u0300\u1161\u0327\u11a8"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\uac00\u0300\u0327\u11a8",      "\uac00\u0327\u0300\u11a8"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\u0b47\u0300\u0b3e",            "\u0b47\u0300\u0b3e"),
+
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u1100\u0300\u1161\u0327",       "\uac00\u0300\u0327"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u1100\u0300\u1161\u0327\u11a8", "\uac01\u0300\u0327"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\uac00\u0300\u0327\u11a8",       "\uac01\u0327\u0300"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u0b47\u0300\u0b3e",             "\u0b4b\u0300")
+
+            /* TODO: add test cases for UNORM_FCC here (j2151) */
+        };
+
+        String output;
+        int i;
+
+        for(i=0; i<cases.length; ++i) {
+            output=Normalizer.normalize(cases[i].input, cases[i].mode, cases[i].options);
+            if(!output.equals(cases[i].expect)) {
+                errln("unexpected result for case "+i);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
new file mode 100644
index 0000000..359d199
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
@@ -0,0 +1,517 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class ConformanceTest extends TestFmwk {
+
+    Normalizer normalizer;
+
+    public static void main(String[] args) throws Exception {
+        new ConformanceTest().run(args);
+    }
+    
+    public ConformanceTest() {
+        // Doesn't matter what the string and mode are; we'll change
+        // them later as needed.
+        normalizer = new Normalizer("", Normalizer.NFC, 0);
+    }
+    // more interesting conformance test cases, not in the unicode.org NormalizationTest.txt
+    static  String[] moreCases ={
+        // Markus 2001aug30
+        "0061 0332 0308;00E4 0332;0061 0332 0308;00E4 0332;0061 0332 0308; # Markus 0",
+    
+        // Markus 2001oct26 - test edge case for iteration: U+0f73.cc==0 but decomposition.lead.cc==129
+        "0061 0301 0F73;00E1 0F71 0F72;0061 0F71 0F72 0301;00E1 0F71 0F72;0061 0F71 0F72 0301; # Markus 1"
+    };
+
+    /**
+     * Test the conformance of Normalizer to
+     * http://www.unicode.org/unicode/reports/tr15/conformance/Draft-TestSuite.txt.* http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
+     * This file must be located at the path specified as TEST_SUITE_FILE.
+     */
+    public void TestConformance() throws Exception{
+        runConformance("unicode/NormalizationTest.txt",0);
+    }
+    public void TestConformance_3_2() throws Exception{
+        runConformance("unicode/NormalizationTest-3.2.0.txt",Normalizer.UNICODE_3_2);
+    }
+    
+    public void runConformance(String fileName, int options) throws Exception{
+        BufferedReader input = null;
+        String line = null;
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        int passCount = 0;
+        int failCount = 0;
+        UnicodeSet other = new UnicodeSet(0, 0x10ffff);
+        int c=0;
+        try {
+            input = TestUtil.getDataReader(fileName);
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) {
+                    //read the extra test cases
+                    if(count > moreCases.length) {
+                        count = 0;
+                    } else if(count == moreCases.length) {
+                        // all done
+                        break;
+                    }
+                    line = moreCases[count++];
+                }
+                if (line.length() == 0) continue;
+
+                // Expect 5 columns of this format:
+                // 1E0C;1E0C;0044 0323;1E0C;0044 0323; # <comments>
+
+                // Skip comments
+                if (line.charAt(0) == '#'  || line.charAt(0)=='@') continue;
+
+                // Parse out the fields
+                hexsplit(line, ';', fields, buf);
+                
+                // Remove a single code point from the "other" UnicodeSet
+                if(fields[0].length()==UTF16.moveCodePointOffset(fields[0],0, 1)) {
+                    c=UTF16.charAt(fields[0],0); 
+                    if(0xac20<=c && c<=0xd73f) {
+                        // not an exhaustive test run: skip most Hangul syllables
+                        if(c==0xac20) {
+                            other.remove(0xac20, 0xd73f);
+                        }
+                        continue;
+                    }
+                    other.remove(c);
+                }
+                if (checkConformance(fields, line,options)) {
+                    ++passCount;
+                } else {
+                    ++failCount;
+                }
+                if ((count % 1000) == 999) {
+                    logln("Line " + (count+1));
+                }
+            }
+        } catch (IOException ex) {
+            if (input != null) {
+                try {
+                    input.close();
+                } catch (Exception ex2) {
+                    System.out.print("");
+                }
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+
+        if (failCount != 0) {
+            errln("Total: " + failCount + " lines failed, " +
+                  passCount + " lines passed");
+        } else {
+            logln("Total: " + passCount + " lines passed");
+        }
+    }
+    
+    /**
+     * Verify the conformance of the given line of the Unicode
+     * normalization (UTR 15) test suite file.  For each line,
+     * there are five columns, corresponding to field[0]..field[4].
+     *
+     * The following invariants must be true for all conformant implementations
+     *  c2 == NFC(c1) == NFC(c2) == NFC(c3)
+     *  c3 == NFD(c1) == NFD(c2) == NFD(c3)
+     *  c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+     *  c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+     *
+     * @param field the 5 columns
+     * @param line the source line from the test suite file
+     * @return true if the test passes
+     */
+    private boolean checkConformance(String[] field, String line, int options) throws Exception{
+        boolean pass = true;
+        StringBuffer buf = new StringBuffer(); // scratch
+        String out,fcd;
+        int i=0;
+        for (i=0; i<5; ++i) {
+            if (i<3) {
+                out = Normalizer.normalize(field[i], Normalizer.NFC, options);
+                pass &= assertEqual("C", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, +1,options);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, -1,options);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, +1,options);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, -1,options);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                 
+                out = Normalizer.normalize(field[i], Normalizer.NFD);
+                pass &= assertEqual("D", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, +1,options);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, -1,options);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, +1,options);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, -1,options);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                cross(field[2] /*NFD String*/, field[1]/*NFC String*/, Normalizer.NFC);
+                cross(field[1] /*NFC String*/, field[2]/*NFD String*/, Normalizer.NFD);
+            }
+            out = Normalizer.normalize(field[i], Normalizer.NFKC,options);
+            pass &= assertEqual("KC", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+              
+
+            out = Normalizer.normalize(field[i], Normalizer.NFKD,options);
+            pass &= assertEqual("KD", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+         
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            cross(field[4] /*NFKD String*/, field[3]/*NFKC String*/, Normalizer.NFKC);
+            cross(field[3] /*NFKC String*/, field[4]/*NFKD String*/, Normalizer.NFKD);
+  
+        }
+        compare(field[1],field[2]);
+        compare(field[0],field[1]);
+        compare(field[0],field[2]);
+         // test quick checks
+        if(Normalizer.NO == Normalizer.quickCheck(field[1], Normalizer.NFC,options)) {
+            errln("Normalizer error: quickCheck(NFC(s), Normalizer.NFC) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.NFD,options)) {
+            errln("Normalizer error: quickCheck(NFD(s), Normalizer.NFD) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[3], Normalizer.NFKC,options)) {
+            errln("Normalizer error: quickCheck(NFKC(s), Normalizer.NFKC) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.NFKD,options)) {
+            errln("Normalizer error: quickCheck(NFKD(s), Normalizer.NFKD) is Normalizer.NO");
+            pass = false;
+        }
+    
+        if(!Normalizer.isNormalized(field[1], Normalizer.NFC, options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[1]) && Normalizer.isNormalized(field[0], Normalizer.NFC, options)) {
+            errln("Normalizer error: isNormalized(s, Normalizer.NFC) is TRUE");
+            pass = false;
+        }
+        if(!Normalizer.isNormalized(field[3], Normalizer.NFKC, options)) {
+            errln("Normalizer error: isNormalized(NFKC(s), Normalizer.NFKC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[3]) && Normalizer.isNormalized(field[0], Normalizer.NFKC, options)) {
+            errln("Normalizer error: isNormalized(s, Normalizer.NFKC) is TRUE");
+            pass = false;
+        }
+        // test api that takes a char[]
+        if(!Normalizer.isNormalized(field[1].toCharArray(),0,field[1].length(), Normalizer.NFC,options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        // test api that takes a codepoint
+        if(!Normalizer.isNormalized(UTF16.charAt(field[1],0), Normalizer.NFC,options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        // test FCD quick check and "makeFCD"
+        fcd=Normalizer.normalize(field[0], Normalizer.FCD);
+        if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD,options)) {
+            errln("Normalizer error: quickCheck(FCD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        // check FCD return length
+        {
+            char[] fcd2 = new char[ fcd.length() * 2 ];
+            char[] src = field[0].toCharArray();
+            int fcdLen = Normalizer.normalize(src, 0, src.length, fcd2, fcd.length(), fcd2.length,Normalizer.FCD, 0);
+            if(fcdLen != fcd.length()){
+                errln("makeFCD did not return the correct length");
+            }
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(FCD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(NFD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+
+        if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(NFKD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, -1,options);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, -1,options);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, -1,options);
+        
+        out=Normalizer.normalize(fcd, Normalizer.NFD);
+        if(!out.equals(field[2])) {
+            errln("Normalizer error: NFD(FCD(s))!=NFD(s)");
+            pass = false;
+        }    
+        if (!pass) {
+            errln("FAIL: " + line);
+        }     
+        if(field[0]!=field[2]) {
+            // two strings that are canonically equivalent must test
+            // equal under a canonical caseless match
+            // see UAX #21 Case Mappings and Jitterbug 2021 and
+            // Unicode Technical Committee meeting consensus 92-C31
+            int rc;
+            if((rc = Normalizer.compare(field[0], field[2], (options<<Normalizer.COMPARE_NORM_OPTIONS_SHIFT)|Normalizer.COMPARE_IGNORE_CASE))!=0){
+               errln("Normalizer.compare(original, NFD, case-insensitive) returned "+rc+" instead of 0 for equal");
+               pass=false;
+            }
+        }
+        
+        return pass;
+    }
+    // two strings that are canonically equivalent must test
+    // equal under a canonical caseless match
+    // see UAX #21 Case Mappings and Jitterbug 2021 and
+    // Unicode Technical Committee meeting consensus 92-C31
+    private void compare(String s1, String s2){
+        if(s1.length()==1 && s2.length()==1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),UTF16.charAt(s2,0),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,int) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()==1 && s2.length()>1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),s2,Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,String) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()>1 && s2.length()>1){
+            // TODO: Re-enable this tests after UTC fixes UAX 21
+            if(Normalizer.compare(s1.toCharArray(),s2.toCharArray(),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(char[],char[]) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }    
+    }
+    private void cross(String s1, String s2,Normalizer.Mode mode){
+        String result = Normalizer.normalize(s1,mode);
+        if(!result.equals(s2)){
+            errln("cross test failed s1: " + Utility.hex(s1) + " s2: " 
+                        +Utility.hex(s2));
+        }
+    }
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(String str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir ,int options) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        normalizer.setOption(-1, false);      // reset all options
+        normalizer.setOption(options, true);  // set desired options
+
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.valueOf(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.valueOf(ch));
+            }
+        }
+        return buf.toString();
+    }
+    
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param str a Java StringCharacterIterator
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(StringCharacterIterator str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir,int options) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        normalizer.setOption(-1, false);      // reset all options
+        normalizer.setOption(options, true);  // set desired options
+
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.valueOf(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.valueOf(ch));
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * @param op name of normalization form, e.g., "KC"
+     * @param s string being normalized
+     * @param got value received
+     * @param exp expected value
+     * @param msg description of this test
+     * @returns true if got == exp
+     */
+    private boolean assertEqual(String op, String s, String got,
+                                String exp, String msg) {
+        if (exp.equals(got)) {
+            return true;
+        }
+        errln(("      " + msg + ") " + op + "(" + s + ")=" + hex(got) +
+                             ", exp. " + hex(exp)));
+        return false;
+    }
+
+    /**
+     * Split a string into pieces based on the given delimiter
+     * character.  Then, parse the resultant fields from hex into
+     * characters.  That is, "0040 0400;0C00;0899" -> new String[] {
+     * "\u0040\u0400", "\u0C00", "\u0899" }.  The output is assumed to
+     * be of the proper length already, and exactly output.length
+     * fields are parsed.  If there are too few an exception is
+     * thrown.  If there are too many the extras are ignored.
+     *
+     * @param buf scratch buffer
+     */
+    private static void hexsplit(String s, char delimiter,
+                                 String[] output, StringBuffer buf) {
+        int i;
+        int pos = 0;
+        for (i=0; i<output.length; ++i) {
+            int delim = s.indexOf(delimiter, pos);
+            if (delim < 0) {
+                throw new IllegalArgumentException("Missing field in " + s);
+            }
+            // Our field is from pos..delim-1.
+            buf.setLength(0);
+            
+            String toHex = s.substring(pos,delim);
+            pos = delim;
+            int index = 0;
+            int len = toHex.length();
+            while(index< len){
+                if(toHex.charAt(index)==' '){
+                    index++;
+                }else{
+                    int spacePos = toHex.indexOf(' ', index);
+                    if(spacePos==-1){
+                        appendInt(buf,toHex.substring(index,len),s);
+                        spacePos = len;
+                    }else{
+                        appendInt(buf,toHex.substring(index, spacePos),s);
+                    }
+                    index = spacePos+1;
+                }
+            }
+            
+            if (buf.length() < 1) {
+                throw new IllegalArgumentException("Empty field " + i + " in " + s);
+            }
+            output[i] = buf.toString();
+            ++pos; // Skip over delim
+        }
+    }
+    public static void appendInt(StringBuffer buf, String strToHex, String s){
+        int hex = Integer.parseInt(strToHex,16);
+        if (hex < 0 ) {
+            throw new IllegalArgumentException("Out of range hex " +
+                                                hex + " in " + s);
+        }else if (hex > 0xFFFF){
+            buf.append((char)((hex>>10)+0xd7c0)); 
+            buf.append((char)((hex&0x3ff)|0xdc00));
+        }else{
+            buf.append((char) hex);
+        }
+    }
+            
+    // Specific tests for debugging.  These are generally failures
+    // taken from the conformance file, but culled out to make
+    // debugging easier.  These can be eliminated without affecting
+    // coverage.
+
+    public void _hideTestCase6(int options) throws Exception{
+        _testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;",options);
+    }
+
+    public void _testOneLine(String line,int options) throws Exception{
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        // Parse out the fields
+        hexsplit(line, ';', fields, buf);
+        checkConformance(fields, line,options);
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java b/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
new file mode 100644
index 0000000..71e9a1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
@@ -0,0 +1,38 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Integer hash table. Uses Java Hashtable for now.
+ * @author Mark Davis
+ */
+ 
+public class IntHashtable {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public IntHashtable (int defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(int key, int value) {
+        if (value == defaultValue) {
+            table.remove(new Integer(key));
+        } else {
+            table.put(new Integer(key), new Integer(value));
+        }
+    }
+    
+    public int get(int key) {
+        Object value = table.get(new Integer(key));
+        if (value == null) return defaultValue;
+        return ((Integer)value).intValue();
+    }
+    
+    private int defaultValue;
+    private Hashtable table = new Hashtable();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java b/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
new file mode 100644
index 0000000..e8eef4c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
@@ -0,0 +1,38 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Integer-String hash table. Uses Java Hashtable for now.
+ * @author Mark Davis
+ */
+ 
+public class IntStringHashtable {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public IntStringHashtable (String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(int key, String value) {
+        if (value == defaultValue) {
+            table.remove(new Integer(key));
+        } else {
+            table.put(new Integer(key), value);
+        }
+    }
+    
+    public String get(int key) {
+        Object value = table.get(new Integer(key));
+        if (value == null) return defaultValue;
+        return (String)value;
+    }
+    
+    private String defaultValue;
+    private Hashtable table = new Hashtable();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java b/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
new file mode 100644
index 0000000..35d2b22
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
@@ -0,0 +1,40 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Hashtable storing ints addressed by longs. Used
+ * for storing of composition data. Uses Java Hashtable
+ * for now.
+ * @author Vladimir Weinstein
+ */
+public class LongHashtable {
+//    static final String copyright = "Copyright (C) 2002-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public LongHashtable (int defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(long key, int value) {
+        if (value == defaultValue) {
+            table.remove(new Long(key));
+        } else {
+            table.put(new Long(key), new Integer(value));
+        }
+    }
+    
+    public int get(long key) {
+        Object value = table.get(new Long(key));
+        if (value == null) return defaultValue;
+        return ((Integer)value).intValue();
+    }
+    
+    private int defaultValue;
+    private Hashtable table = new Hashtable();
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java b/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
new file mode 100644
index 0000000..a36bac9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+
+public class NormalizationMonkeyTest extends TestFmwk {
+    int loopCount = 100;
+    int maxCharCount = 20;
+    int maxCodePoint = 0x10ffff;
+    Random random = null; // initialized in getTestSource
+    UnicodeNormalizer unicode_NFD;
+    UnicodeNormalizer unicode_NFC;
+    UnicodeNormalizer unicode_NFKD;
+    UnicodeNormalizer unicode_NFKC;
+    
+    public NormalizationMonkeyTest() {
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new NormalizationMonkeyTest().run(args);
+    }
+    
+    public void TestNormalize() {
+        if (unicode_NFD == null) {
+            try {
+                unicode_NFD = new UnicodeNormalizer(UnicodeNormalizer.D, true);
+                unicode_NFC = new UnicodeNormalizer(UnicodeNormalizer.C, true);
+                unicode_NFKD = new UnicodeNormalizer(UnicodeNormalizer.KD, true);
+                unicode_NFKC = new UnicodeNormalizer(UnicodeNormalizer.KC, true);
+            }
+            catch (Exception e) {
+                String msg = "Normalization tests could not be run: " + e.getMessage();
+                if (isModularBuild()) {
+                    warnln(msg);
+                } else {
+                    errln(msg);
+                }
+            }
+        }
+        int i = 0;
+        while (i < loopCount) {
+            String source = getTestSource();
+            logln("Test source:" + source);
+            //NFD
+            String uncodeNorm = unicode_NFD.normalize(source);
+            String icuNorm = Normalizer.normalize(source, Normalizer.NFD);
+            logln("\tNFD(Unicode): " + uncodeNorm);
+            logln("\tNFD(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFD: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFC
+            uncodeNorm = unicode_NFC.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFC);
+            logln("\tNFC(Unicode): " + uncodeNorm);
+            logln("\tNFC(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFC: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFKD
+            uncodeNorm = unicode_NFKD.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFKD);
+            logln("\tNFKD(Unicode): " + uncodeNorm);
+            logln("\tNFKD(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFKD: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFKC
+            uncodeNorm = unicode_NFKC.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFKC);
+            logln("\tNFKC(Unicode): " + uncodeNorm);
+            logln("\tNFKC(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFKC: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            
+            i++;
+        }
+    }
+    
+    String getTestSource() {
+    if (random == null) {
+        random = createRandom(); // use test framework's random seed
+    }
+        String source = "";
+        int i = 0;
+        while (i < (random.nextInt(maxCharCount) + 1)) {
+            int codepoint = random.nextInt(maxCodePoint);
+            //Elimate unassigned characters
+            while (UCharacter.getType(codepoint) == UCharacterCategory.UNASSIGNED) {
+                codepoint = random.nextInt(maxCodePoint);
+            }
+            source = source + UTF16.valueOf(codepoint);
+            i++;
+        }
+        return source;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
new file mode 100644
index 0000000..6308478
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
@@ -0,0 +1,507 @@
+/**
+ * Builds the normalization tables. This is a separate class so that it
+ * can be unloaded once not needed.<br>
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.io.BufferedReader;
+import java.util.BitSet;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.dev.test.UTF16Util;
+
+class NormalizerBuilder {
+    //private static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+     * Testing flags
+     */
+
+    private static final boolean DEBUG = false;
+    //private static final boolean GENERATING = false;
+
+    /**
+     * Constants for the data file version to use.
+     */
+    /*static final boolean NEW_VERSION = true;
+    private static final String DIR = "D:\\UnicodeData\\" + (NEW_VERSION ? "WorkingGroups\\" : "");
+
+    static final String UNIDATA_VERSION = NEW_VERSION ? "3.0.0d12" : "2.1.9";
+    static final String EXCLUSIONS_VERSION = NEW_VERSION ? "1d4" : "1";
+
+    public static final String UNICODE_DATA = DIR + "UnicodeData-" + UNIDATA_VERSION + ".txt";
+    public static final String COMPOSITION_EXCLUSIONS = DIR + "CompositionExclusions-" + EXCLUSIONS_VERSION +".txt";
+    */
+
+    /**
+     * Called exactly once by NormalizerData to build the static data
+     */
+
+    static NormalizerData build(boolean fullData) {
+        try {
+            IntHashtable canonicalClass = new IntHashtable(0);
+            IntStringHashtable decompose = new IntStringHashtable(null);
+            LongHashtable compose = new LongHashtable(NormalizerData.NOT_COMPOSITE);
+            BitSet isCompatibility = new BitSet();
+            BitSet isExcluded = new BitSet();
+            if (fullData) {
+                //System.out.println("Building Normalizer Data from file.");
+                readExclusionList(isExcluded);
+                //System.out.println(isExcluded.get(0x00C0));
+                buildDecompositionTables(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+            } else {    // for use in Applets
+                //System.out.println("Building abridged data.");
+                setMinimalDecomp(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+            }
+            return new NormalizerData(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+        } catch (java.io.IOException e) {
+            System.err.println("Can't load data file." + e + ", " + e.getMessage());
+            return null;
+        }
+    }
+
+// =============================================================
+// Building Decomposition Tables
+// =============================================================
+
+    /**
+     * Reads exclusion list and stores the data
+     */
+    private static void readExclusionList(BitSet isExcluded) throws java.io.IOException {
+        if (DEBUG) System.out.println("Reading Exclusions");
+
+        BufferedReader in = TestUtil.getDataReader("unicode/CompositionExclusions.txt");
+
+        while (true) {
+            // read a line, discarding comments and blank lines
+
+            String line = in.readLine();
+            if (line == null) break;
+            int comment = line.indexOf('#');                    // strip comments
+            if (comment != -1) line = line.substring(0,comment);
+            if (line.length() == 0) continue;                   // ignore blanks
+            if(line.indexOf(' ') != -1) {
+                line = line.substring(0, line.indexOf(' '));
+            }
+            // store -1 in the excluded table for each character hit
+
+            int value = Integer.parseInt(line,16);
+            isExcluded.set(value);
+            //System.out.println("Excluding " + hex(value));
+        }
+        in.close();
+        if (DEBUG) System.out.println("Done reading Exclusions");
+    }
+
+    /**
+     * Builds a decomposition table from a UnicodeData file
+     */
+    private static void buildDecompositionTables(
+      IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded)
+      throws java.io.IOException {
+        if (DEBUG) System.out.println("Reading Unicode Character Database");
+        //BufferedReader in = new BufferedReader(new FileReader(UNICODE_DATA), 64*1024);
+        BufferedReader in = null;
+        try {
+            in = TestUtil.getDataReader("unicode/UnicodeData.txt");
+        } catch (Exception e) {
+            System.err.println("Failed to read UnicodeData.txt");
+            System.exit(1);
+        }
+
+        int value;
+        long pair;
+        int counter = 0;
+        while (true) {
+
+            // read a line, discarding comments and blank lines
+
+            String line = in.readLine();
+            if (line == null) break;
+            int comment = line.indexOf('#');                    // strip comments
+            if (comment != -1) line = line.substring(0,comment);
+            if (line.length() == 0) continue;
+            if (DEBUG) {
+                counter++;
+                if ((counter & 0xFF) == 0) System.out.println("At: " + line);
+            }
+
+            // find the values of the particular fields that we need
+            // Sample line: 00C0;LATIN ...A GRAVE;Lu;0;L;0041 0300;;;;N;LATIN ... GRAVE;;;00E0;
+
+            int start = 0;
+            int end = line.indexOf(';'); // code
+            value = Integer.parseInt(line.substring(start,end),16);
+            if (true && value == '\u00c0') {
+                //System.out.println("debug: " + line);
+            }
+            end = line.indexOf(';',start=end+1); // name
+            /*String name = line.substring(start,end);*/
+            end = line.indexOf(';',start=end+1); // general category
+            end = line.indexOf(';',start=end+1); // canonical class
+
+            // check consistency: canonical classes must be from 0 to 255
+
+            int cc = Integer.parseInt(line.substring(start,end));
+            if (cc != (cc & 0xFF)) System.err.println("Bad canonical class at: " + line);
+            canonicalClass.put(value,cc);
+            end = line.indexOf(';',start=end+1); // BIDI
+            end = line.indexOf(';',start=end+1); // decomp
+
+            // decomp requires more processing.
+            // store whether it is canonical or compatibility.
+            // store the decomp in one table, and the reverse mapping (from pairs) in another
+
+            if (start != end) {
+                String segment = line.substring(start, end);
+                boolean compat = segment.charAt(0) == '<';
+                if (compat) isCompatibility.set(value);
+                String decomp = fromHex(segment);
+
+                // a small snippet of code to generate the Applet data
+
+                /*if (GENERATING) {
+                    if (value < 0xFF) {
+                        System.out.println(
+                            "\"\\u" + hex((char)value) + "\", "
+                            + "\"\\u" + hex(decomp, "\\u") + "\", "
+                            + (compat ? "\"K\"," : "\"\",")
+                            + "// " + name);
+                    }
+                }*/
+
+                // check consistency: all canon decomps must be singles or pairs!
+                int decompLen = UTF16Util.countCodePoint(decomp);
+                if (decompLen < 1 || decompLen > 2 && !compat) {
+                    System.err.println("Bad decomp at: " + line);
+                }
+                decompose.put(value, decomp);
+
+                // only compositions are canonical pairs
+                // skip if script exclusion
+
+                if (!compat && !isExcluded.get(value)) {
+                    int first = '\u0000';
+                    int second = UTF16Util.nextCodePoint(decomp, 0);
+                    if (decompLen > 1) {
+                        first = second;
+                        second = UTF16Util.nextCodePoint(decomp,
+                            UTF16Util.codePointLength(first));
+                    }
+
+                    // store composition pair in single integer
+
+                    pair = ((long)first << 32) | second;
+                    if (DEBUG && value == '\u00C0') {
+                        System.out.println("debug2: " + line);
+                    }
+                    compose.put(pair, value);
+                } else if (DEBUG) {
+                    System.out.println("Excluding: " + decomp);
+                }
+            }
+        }
+        in.close();
+        if (DEBUG) System.out.println("Done reading Unicode Character Database");
+
+        // add algorithmic Hangul decompositions
+        // this is more compact if done at runtime, but for simplicity we
+        // do it this way.
+
+        if (DEBUG) System.out.println("Adding Hangul");
+
+        for (int SIndex = 0; SIndex < SCount; ++SIndex) {
+            int TIndex = SIndex % TCount;
+            char first, second;
+            if (TIndex != 0) { // triple
+                first = (char)(SBase + SIndex - TIndex);
+                second = (char)(TBase + TIndex);
+            } else {
+                first = (char)(LBase + SIndex / NCount);
+                second = (char)(VBase + (SIndex % NCount) / TCount);
+            }
+            pair = ((long)first << 32) | second;
+            value = SIndex + SBase;
+            decompose.put(value, String.valueOf(first) + second);
+            compose.put(pair, value);
+        }
+        if (DEBUG) System.out.println("Done adding Hangul");
+    }
+
+    /**
+     * Hangul composition constants
+     */
+    static final int
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount;   // 11172
+
+    /**
+     * For use in an applet: just load a minimal set of data.
+     */
+    private static void setMinimalDecomp(IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded) {
+        String[] decomposeData = {
+            "\u005E", "\u0020\u0302", "K",
+            "\u005F", "\u0020\u0332", "K",
+            "\u0060", "\u0020\u0300", "K",
+            "\u00A0", "\u0020", "K",
+            "\u00A8", "\u0020\u0308", "K",
+            "\u00AA", "\u0061", "K",
+            "\u00AF", "\u0020\u0304", "K",
+            "\u00B2", "\u0032", "K",
+            "\u00B3", "\u0033", "K",
+            "\u00B4", "\u0020\u0301", "K",
+            "\u00B5", "\u03BC", "K",
+            "\u00B8", "\u0020\u0327", "K",
+            "\u00B9", "\u0031", "K",
+            "\u00BA", "\u006F", "K",
+            "\u00BC", "\u0031\u2044\u0034", "K",
+            "\u00BD", "\u0031\u2044\u0032", "K",
+            "\u00BE", "\u0033\u2044\u0034", "K",
+            "\u00C0", "\u0041\u0300", "",
+            "\u00C1", "\u0041\u0301", "",
+            "\u00C2", "\u0041\u0302", "",
+            "\u00C3", "\u0041\u0303", "",
+            "\u00C4", "\u0041\u0308", "",
+            "\u00C5", "\u0041\u030A", "",
+            "\u00C7", "\u0043\u0327", "",
+            "\u00C8", "\u0045\u0300", "",
+            "\u00C9", "\u0045\u0301", "",
+            "\u00CA", "\u0045\u0302", "",
+            "\u00CB", "\u0045\u0308", "",
+            "\u00CC", "\u0049\u0300", "",
+            "\u00CD", "\u0049\u0301", "",
+            "\u00CE", "\u0049\u0302", "",
+            "\u00CF", "\u0049\u0308", "",
+            "\u00D1", "\u004E\u0303", "",
+            "\u00D2", "\u004F\u0300", "",
+            "\u00D3", "\u004F\u0301", "",
+            "\u00D4", "\u004F\u0302", "",
+            "\u00D5", "\u004F\u0303", "",
+            "\u00D6", "\u004F\u0308", "",
+            "\u00D9", "\u0055\u0300", "",
+            "\u00DA", "\u0055\u0301", "",
+            "\u00DB", "\u0055\u0302", "",
+            "\u00DC", "\u0055\u0308", "",
+            "\u00DD", "\u0059\u0301", "",
+            "\u00E0", "\u0061\u0300", "",
+            "\u00E1", "\u0061\u0301", "",
+            "\u00E2", "\u0061\u0302", "",
+            "\u00E3", "\u0061\u0303", "",
+            "\u00E4", "\u0061\u0308", "",
+            "\u00E5", "\u0061\u030A", "",
+            "\u00E7", "\u0063\u0327", "",
+            "\u00E8", "\u0065\u0300", "",
+            "\u00E9", "\u0065\u0301", "",
+            "\u00EA", "\u0065\u0302", "",
+            "\u00EB", "\u0065\u0308", "",
+            "\u00EC", "\u0069\u0300", "",
+            "\u00ED", "\u0069\u0301", "",
+            "\u00EE", "\u0069\u0302", "",
+            "\u00EF", "\u0069\u0308", "",
+            "\u00F1", "\u006E\u0303", "",
+            "\u00F2", "\u006F\u0300", "",
+            "\u00F3", "\u006F\u0301", "",
+            "\u00F4", "\u006F\u0302", "",
+            "\u00F5", "\u006F\u0303", "",
+            "\u00F6", "\u006F\u0308", "",
+            "\u00F9", "\u0075\u0300", "",
+            "\u00FA", "\u0075\u0301", "",
+            "\u00FB", "\u0075\u0302", "",
+            "\u00FC", "\u0075\u0308", "",
+            "\u00FD", "\u0079\u0301", "",
+// EXTRAS, outside of Latin 1
+            "\u1EA4", "\u00C2\u0301", "",
+            "\u1EA5", "\u00E2\u0301", "",
+            "\u1EA6", "\u00C2\u0300", "",
+            "\u1EA7", "\u00E2\u0300", "",
+        };
+
+        int[] classData = {
+            0x0300, 230,
+            0x0301, 230,
+            0x0302, 230,
+            0x0303, 230,
+            0x0304, 230,
+            0x0305, 230,
+            0x0306, 230,
+            0x0307, 230,
+            0x0308, 230,
+            0x0309, 230,
+            0x030A, 230,
+            0x030B, 230,
+            0x030C, 230,
+            0x030D, 230,
+            0x030E, 230,
+            0x030F, 230,
+            0x0310, 230,
+            0x0311, 230,
+            0x0312, 230,
+            0x0313, 230,
+            0x0314, 230,
+            0x0315, 232,
+            0x0316, 220,
+            0x0317, 220,
+            0x0318, 220,
+            0x0319, 220,
+            0x031A, 232,
+            0x031B, 216,
+            0x031C, 220,
+            0x031D, 220,
+            0x031E, 220,
+            0x031F, 220,
+            0x0320, 220,
+            0x0321, 202,
+            0x0322, 202,
+            0x0323, 220,
+            0x0324, 220,
+            0x0325, 220,
+            0x0326, 220,
+            0x0327, 202,
+            0x0328, 202,
+            0x0329, 220,
+            0x032A, 220,
+            0x032B, 220,
+            0x032C, 220,
+            0x032D, 220,
+            0x032E, 220,
+            0x032F, 220,
+            0x0330, 220,
+            0x0331, 220,
+            0x0332, 220,
+            0x0333, 220,
+            0x0334, 1,
+            0x0335, 1,
+            0x0336, 1,
+            0x0337, 1,
+            0x0338, 1,
+            0x0339, 220,
+            0x033A, 220,
+            0x033B, 220,
+            0x033C, 220,
+            0x033D, 230,
+            0x033E, 230,
+            0x033F, 230,
+            0x0340, 230,
+            0x0341, 230,
+            0x0342, 230,
+            0x0343, 230,
+            0x0344, 230,
+            0x0345, 240,
+            0x0360, 234,
+            0x0361, 234
+        };
+
+        // build the same tables we would otherwise get from the
+        // Unicode Character Database, just with limited data
+
+        for (int i = 0; i < decomposeData.length; i+=3) {
+            char value = decomposeData[i].charAt(0);
+            String decomp = decomposeData[i+1];
+            boolean compat = decomposeData[i+2].equals("K");
+            if (compat) isCompatibility.set(value);
+            decompose.put(value, decomp);
+            if (!compat) {
+                int first = '\u0000';
+                int second = UTF16Util.nextCodePoint(decomp, 0);
+                if (decomp.length() > 1) {
+                    first = second;
+                    second = UTF16Util.nextCodePoint(decomp,
+                        UTF16Util.codePointLength(first));
+                }
+                long pair = (first << 16) | second;
+                compose.put(pair, value);
+            }
+        }
+
+        for (int i = 0; i < classData.length;) {
+            canonicalClass.put(classData[i++], classData[i++]);
+        }
+    }
+
+    /**
+     * Utility: Parses a sequence of hex Unicode characters separated by spaces
+     */
+    static public String fromHex(String source) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < source.length(); ++i) {
+            char c = source.charAt(i);
+            switch (c) {
+              case ' ': break; // ignore
+              case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7':
+              case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+              case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                int end = 0;
+                int value = 0;
+                try {
+                    //System.out.println(source.substring(i, i + 4) + "************" + source);
+                    end = source.indexOf(' ',i);
+                    if (end < 0) {
+                        end = source.length();
+                    }
+                    value = Integer.parseInt(source.substring(i, end),16);
+                    UTF16Util.appendCodePoint(result, value);
+                } catch (Exception e) {
+                    System.out.println("i: " + i + ";end:" + end + "source:" + source);
+                    //System.out.println(source.substring(i, i + 4) + "************" + source);
+                    System.exit(1);
+                }
+                //i+= 3; // skip rest of number
+                i = end;
+                break;
+              case '<': int j = source.indexOf('>',i); // skip <...>
+                if (j > 0) {
+                    i = j;
+                    break;
+                } // else fall through--error
+              default:
+                throw new IllegalArgumentException("Bad hex value in " + source);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of an integer (without 0x)
+     */
+    static public String hex(int i) {
+        String result = Long.toString(i & 0xFFFFFFFFL, 16).toUpperCase();
+        return "00000000".substring(result.length(),8) + result;
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of a Unicode character (without 0x, \\u)
+     */
+    static public String hex(char i) {
+        String result = Integer.toString(i, 16).toUpperCase();
+        return "0000".substring(result.length(),4) + result;
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of a Unicode character (without 0x, \\u)
+     */
+    public static String hex(String s, String sep) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(sep);
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
new file mode 100644
index 0000000..c6c54a7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.BitSet;
+
+import com.ibm.icu.dev.test.UTF16Util;
+
+/**
+ * Accesses the Normalization Data used for Forms C and D.<br>
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+public class NormalizerData {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+    * Constant for use in getPairwiseComposition
+    */
+    public static final int NOT_COMPOSITE = '\uFFFF';
+
+    /**
+    * Gets the combining class of a character from the
+    * Unicode Character Database.
+    * @param   ch      the source character
+    * @return          value from 0 to 255
+    */
+    public int getCanonicalClass(int ch) {
+        return canonicalClass.get(ch);
+    }
+
+    /**
+    * Returns the composite of the two characters. If the two
+    * characters don't combine, returns NOT_COMPOSITE.
+    * @param   first   first character (e.g. 'c')
+    * @param   second  second character (e.g. \u0327 cedilla)
+    * @return          composite (e.g. \u00C7 c cedilla)
+    */
+    public int getPairwiseComposition(int first, int second) {
+        return compose.get(((long)first << 32) | second);
+    }
+
+
+    /**
+    * Gets recursive decomposition of a character from the
+    * Unicode Character Database.
+    * @param   canonical    If true
+    *                  bit is on in this byte, then selects the recursive
+    *                  canonical decomposition, otherwise selects
+    *                  the recursive compatibility and canonical decomposition.
+    * @param   ch      the source character
+    * @param   buffer  buffer to be filled with the decomposition
+    */
+    public void getRecursiveDecomposition(boolean canonical, int ch, StringBuffer buffer) {
+        String decomp = decompose.get(ch);
+        if (decomp != null && !(canonical && isCompatibility.get(ch))) {
+            for (int i = 0; i < decomp.length(); i+=UTF16Util.codePointLength(ch)) {
+                ch = UTF16Util.nextCodePoint(decomp, i);
+                getRecursiveDecomposition(canonical, ch, buffer);
+            }
+        } else {                    // if no decomp, append
+            UTF16Util.appendCodePoint(buffer, ch);
+        }
+    }
+
+    // =================================================
+    //                   PRIVATES
+    // =================================================
+
+    /**
+     * Only accessed by NormalizerBuilder.
+     */
+    NormalizerData(IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded) {
+        this.canonicalClass = canonicalClass;
+        this.decompose = decompose;
+        this.compose = compose;
+        this.isCompatibility = isCompatibility;
+        this.isExcluded = isExcluded;
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    boolean getExcluded (char ch) {
+        return isExcluded.get(ch);
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    String getRawDecompositionMapping (char ch) {
+        return decompose.get(ch);
+    }
+
+    /**
+    * For now, just use IntHashtable
+    * Two-stage tables would be used in an optimized implementation.
+    */
+    private IntHashtable canonicalClass;
+
+    /**
+    * The main data table maps chars to a 32-bit int.
+    * It holds either a pair: top = first, bottom = second
+    * or singleton: top = 0, bottom = single.
+    * If there is no decomposition, the value is 0.
+    * Two-stage tables would be used in an optimized implementation.
+    * An optimization could also map chars to a small index, then use that
+    * index in a small array of ints.
+    */
+    private IntStringHashtable decompose;
+
+    /**
+    * Maps from pairs of characters to single.
+    * If there is no decomposition, the value is NOT_COMPOSITE.
+    */
+    private LongHashtable compose;
+
+    /**
+    * Tells whether decomposition is canonical or not.
+    */
+    private BitSet isCompatibility = new BitSet();
+
+    /**
+    * Tells whether character is script-excluded or not.
+    * Used only while building, and for testing.
+    */
+
+    private BitSet isExcluded = new BitSet();
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
new file mode 100644
index 0000000..558e677
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Normalizer;
+
+public class NormalizerRegressionTests extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new NormalizerRegressionTests().run(args);
+    }
+
+    public void TestJB4472() {
+        // submitter's test case
+        String tamil = "\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe";
+        logln("Normalized: " + Normalizer.isNormalized(tamil, Normalizer.NFC, 0));
+
+        // markus's test case
+        // the combining cedilla can't be applied to 'b', so this is in normalized form.
+        // but the isNormalized test identifies the cedilla as a 'maybe' and so tries
+        // to normalize the relevant substring ("b\u0327")and compare the result to the
+        // original.  the original code was passing in the start and length of the
+        // substring (3, 5-3 = 2) but the called code was expecting start and limit.
+        // it subtracted the start again to get what it thought was the length, but
+        // ended up with -1.  the loop was incrementing an index from 0 and testing
+        // against length, but 0 was never == -1 before it walked off the array end.
+
+        // a workaround in lieu of this patch is to catch the exception and always
+        // normalize.
+
+        // this should return true, since the string is normalized (and it should
+        // not throw an exception!)
+        String sample = "aaab\u0327";
+        logln("Normalized: " + Normalizer.isNormalized(sample, Normalizer.NFC, 0));
+
+        // this should return false, since the string is _not_ normalized (and it should
+        // not throw an exception!)
+        String sample2 = "aaac\u0327";
+        logln("Normalized: " + Normalizer.isNormalized(sample2, Normalizer.NFC, 0));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestAll.java b/src/com/ibm/icu/dev/test/normalizer/TestAll.java
new file mode 100644
index 0000000..ba236ed
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestAll.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run normalizer tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "BasicTest",
+            "ConformanceTest",
+            "TestDeprecatedNormalizerAPI",
+            "TestCanonicalIterator",
+            "NormalizationMonkeyTest",
+            "NormalizerRegressionTests",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Normalizer";
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
new file mode 100644
index 0000000..c135068
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
@@ -0,0 +1,270 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.Set;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.CanonicalIterator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+
+
+// TODO: fit into test framework
+
+public class TestCanonicalIterator extends TestFmwk {
+    
+    static final boolean SHOW_NAMES = false;
+
+    public static void main(String[] args) throws Exception {
+        new TestCanonicalIterator().run(args);
+    }
+    
+    static final String testArray[][] = {
+        {"\u00C5d\u0307\u0327", "A\u030Ad\u0307\u0327, A\u030Ad\u0327\u0307, A\u030A\u1E0B\u0327, "
+            + "A\u030A\u1E11\u0307, \u00C5d\u0307\u0327, \u00C5d\u0327\u0307, "
+            + "\u00C5\u1E0B\u0327, \u00C5\u1E11\u0307, \u212Bd\u0307\u0327, "
+            + "\u212Bd\u0327\u0307, \u212B\u1E0B\u0327, \u212B\u1E11\u0307"},
+        {"\u010d\u017E", "c\u030Cz\u030C, c\u030C\u017E, \u010Dz\u030C, \u010D\u017E"},
+        {"x\u0307\u0327", "x\u0307\u0327, x\u0327\u0307, \u1E8B\u0327"},
+    };
+    
+     
+    public void TestExhaustive() {
+        int counter = 0;
+        CanonicalIterator it = new CanonicalIterator("");
+        /*
+        CanonicalIterator slowIt = new CanonicalIterator("");
+        slowIt.SKIP_ZEROS = false;
+        */
+        //Transliterator name = Transliterator.getInstance("[^\\u0020-\\u007F] name");
+        //Set itSet = new TreeSet();
+        //Set slowItSet = new TreeSet();
+
+
+        for (int i = 0; i < 0x10FFFF; ++i) {
+
+            // skip characters we know don't have decomps
+            int type = UCharacter.getType(i);
+            if (type == Character.UNASSIGNED || type == Character.PRIVATE_USE
+                || type == Character.SURROGATE) continue;
+
+            if ((++counter % 5000) == 0) logln("Testing " + Utility.hex(i,0));
+
+            String s = UTF16.valueOf(i);
+            characterTest(s, i, it);
+
+            characterTest(s + "\u0345", i, it);
+        }
+    }
+    
+    public int TestSpeed() {
+         // skip unless verbose
+        if (!isVerbose()) return 0;
+
+           String s = "\uAC01\u0345";
+           
+        CanonicalIterator it = new CanonicalIterator(s);
+        double start, end;
+        int x = 0; // just to keep code from optimizing away.
+        int iterations = 10000;
+        double slowDelta = 0;
+        
+        /*
+        CanonicalIterator slowIt = new CanonicalIterator(s);
+        slowIt.SKIP_ZEROS = false;
+
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            slowIt.setSource(s);
+            while (true) {
+                String item = slowIt.next();
+                if (item == null) break;
+                x += item.length();
+            }
+        }
+        end = System.currentTimeMillis();
+        double slowDelta = (end-start) / iterations;
+        logln("Slow iteration: " + slowDelta);
+        */
+
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            it.setSource(s);
+            while (true) {
+                String item = it.next();
+                if (item == null) break;
+                x += item.length();
+            }
+        }
+        end = System.currentTimeMillis();
+        double fastDelta = (end-start) / iterations;
+        logln("Fast iteration: " + fastDelta + (slowDelta != 0 ? ", " + (fastDelta/slowDelta) : ""));
+        
+        
+        return x;
+    }
+    
+    public void TestBasic() {
+//      This is not interesting anymore as the data is already built 
+//      beforehand
+
+//        check build
+//        UnicodeSet ss = CanonicalIterator.getSafeStart();
+//        logln("Safe Start: " + ss.toPattern(true));
+//        ss = CanonicalIterator.getStarts('a');
+//        expectEqual("Characters with 'a' at the start of their decomposition: ", "", CanonicalIterator.getStarts('a'),
+//            new UnicodeSet("[\u00E0-\u00E5\u0101\u0103\u0105\u01CE\u01DF\u01E1\u01FB"
+//            + "\u0201\u0203\u0227\u1E01\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7]")
+//                );
+        
+        // check permute
+        // NOTE: we use a TreeSet below to sort the output, which is not guaranteed to be sorted!
+        
+        Set results = new TreeSet();
+        CanonicalIterator.permute("ABC", false, results);
+        expectEqual("Simple permutation ", "", collectionToString(results), "ABC, ACB, BAC, BCA, CAB, CBA");
+        
+        // try samples
+        SortedSet set = new TreeSet();
+        for (int i = 0; i < testArray.length; ++i) {
+            //logln("Results for: " + name.transliterate(testArray[i]));
+            CanonicalIterator it = new CanonicalIterator(testArray[i][0]);
+           // int counter = 0;
+            set.clear();
+            String first = null;
+            while (true) {
+                String result = it.next();
+                if(first==null){
+                    first = result;
+                }
+                if (result == null) break;
+                set.add(result); // sort them
+                //logln(++counter + ": " + hex.transliterate(result));
+                //logln(" = " + name.transliterate(result));
+            }
+            expectEqual(i + ": ", testArray[i][0], collectionToString(set), testArray[i][1]);
+            it.reset();
+            if(!it.next().equals(first)){
+                errln("CanonicalIterator.reset() failed");
+            }
+            if(!it.getSource().equals(Normalizer.normalize(testArray[i][0],Normalizer.NFD))){
+                errln("CanonicalIterator.getSource() does not return NFD of input source");
+            }
+        }
+    }
+    
+    public void expectEqual(String message, String item, Object a, Object b) {
+        if (!a.equals(b)) {
+            errln("FAIL: " + message + getReadable(item));
+            errln("\t" + getReadable(a));
+            errln("\t" + getReadable(b));
+        } else {
+            logln("Checked: " + message + getReadable(item));
+            logln("\t" + getReadable(a));
+            logln("\t" + getReadable(b));
+        }
+    }
+    
+    //Transliterator name = null;
+    //Transliterator hex = null;
+        
+    public String getReadable(Object obj) {
+        if (obj == null) return "null";
+        String s = obj.toString();
+        if (s.length() == 0) return "";
+        // set up for readable display
+        //if (name == null) name = Transliterator.getInstance("[^\\ -\\u007F] name");
+        //if (hex == null) hex = Transliterator.getInstance("[^\\ -\\u007F] hex");
+        return "[" + (SHOW_NAMES ? hex(s) + "; " : "") + hex(s) + "]";
+    }
+    
+    public void characterTest(String s, int ch, CanonicalIterator it)
+    {
+        int mixedCounter = 0;
+        int lastMixedCounter = -1;
+        boolean gotDecomp = false;
+        boolean gotComp = false;
+        boolean gotSource = false;
+        String decomp = Normalizer.decompose(s, false);
+        String comp = Normalizer.compose(s, false);
+        
+        // skip characters that don't have either decomp.
+        // need quick test for this!
+        if (s.equals(decomp) && s.equals(comp)) return;
+        
+        it.setSource(s);
+
+        while (true) {
+            String item = it.next();
+            if (item == null) break;
+            if (item.equals(s)) gotSource = true;
+            if (item.equals(decomp)) gotDecomp = true;
+            if (item.equals(comp)) gotComp = true;
+            if ((mixedCounter & 0x7F) == 0 && (ch < 0xAD00 || ch > 0xAC00 + 11172)) {
+                if (lastMixedCounter != mixedCounter) {
+                    logln("");
+                    lastMixedCounter = mixedCounter;
+                }
+                logln("\t" + mixedCounter + "\t" + hex(item)
+                + (item.equals(s) ? "\t(*original*)" : "")
+                + (item.equals(decomp) ? "\t(*decomp*)" : "")
+                + (item.equals(comp) ? "\t(*comp*)" : "")
+                );
+            }
+
+        }
+        
+        // check that zeros optimization doesn't mess up.
+        /*
+        if (true) {
+            it.reset();
+            itSet.clear();
+            while (true) {
+                String item = it.next();
+                if (item == null) break;
+                itSet.add(item);
+            }
+            slowIt.setSource(s);
+            slowItSet.clear();
+            while (true) {
+                String item = slowIt.next();
+                if (item == null) break;
+                slowItSet.add(item);
+            }
+            if (!itSet.equals(slowItSet)) {
+                errln("Zero optimization failure with " + getReadable(s));
+            }
+        }
+        */
+        
+        mixedCounter++;
+        if (!gotSource || !gotDecomp || !gotComp) {
+            errln("FAIL CanonicalIterator: " + s + " decomp: " +decomp+" comp: "+comp);
+            it.reset();
+            for(String item=it.next();item!=null;item=it.next()){
+                err(item + "    ");
+            }
+            errln("");   
+        }
+    }
+    
+    static String collectionToString(Collection col) {
+        StringBuffer result = new StringBuffer();
+        Iterator it = col.iterator();
+        while (it.hasNext()) {
+            if (result.length() != 0) result.append(", ");
+            result.append(it.next().toString());
+        }
+        return result.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java b/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
new file mode 100644
index 0000000..f49d711
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
@@ -0,0 +1,176 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.ComposedCharIter;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.StringCharacterIterator;
+
+public class TestDeprecatedNormalizerAPI extends TestFmwk
+{
+     
+    public static void main(String[] args) throws Exception
+    {
+        String[] tempArgs = new String[args.length];
+        int count = 0;
+
+        // Allow the test to be pointed at a specific version of the Unicode database
+        //for (int i = 0; i < args.length; i++)
+        //{
+        //    if (args[i].equals("-data")) {
+        //        tempInfo = new UInfo(args[++i], args[++i]);
+        //    } else {
+        //        tempArgs[count++] = args[i];
+        //    }
+        //}
+
+        args = new String[count];
+        System.arraycopy(tempArgs, 0, args, 0, count);
+
+
+
+        new TestDeprecatedNormalizerAPI().run(args);
+    }
+    
+    public TestDeprecatedNormalizerAPI() {
+    }
+
+    public void TestNormalizerAPI(){
+         // instantiate a Normalizer from a CharacterIterator
+        String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+        // make s a bit longer and more interesting
+        java.text.CharacterIterator iter = new StringCharacterIterator(s+s);
+        //test deprecated constructors
+        Normalizer norm = new Normalizer(iter, Normalizer.NFC,0);
+        if(norm.next()!=0xe4) {
+            errln("error in Normalizer(CharacterIterator).next()");
+        }       
+        Normalizer norm2 = new Normalizer(s,Normalizer.NFC,0);
+        if(norm2.next()!=0xe4) {
+            errln("error in Normalizer(CharacterIterator).next()");
+        }       
+        // test clone(), ==, and hashCode()
+        Normalizer clone=(Normalizer)norm.clone();
+        if(clone.getBeginIndex()!= norm.getBeginIndex()){
+           errln("error in Normalizer.getBeginIndex()");
+        }
+        
+        if(clone.getEndIndex()!= norm.getEndIndex()){
+           errln("error in Normalizer.getEndIndex()");
+        }
+        // test setOption() and getOption()
+        clone.setOption(0xaa0000, true);
+        clone.setOption(0x20000, false);
+        if(clone.getOption(0x880000) ==0|| clone.getOption(0x20000)==1) {
+           errln("error in Normalizer::setOption() or Normalizer::getOption()");
+        }
+        //test deprecated normalize method
+        Normalizer.normalize(s,Normalizer.NFC,0);
+        //test deprecated compose method
+        Normalizer.compose(s,false,0);
+        //test deprecated decompose method
+        Normalizer.decompose(s,false,0);
+
+    }
+
+    /**
+     * Run through all of the characters returned by a composed-char iterator
+     * and make sure that:
+     * <ul>
+     * <li>a) They do indeed have decompositions.
+     * <li>b) The decomposition according to the iterator is the same as
+     *          returned by Normalizer.decompose().
+     * <li>c) All characters <em>not</em> returned by the iterator do not
+     *          have decompositions.
+     * </ul>
+     */
+    public void TestComposedCharIter() {
+        doTestComposedChars(false);
+    }
+
+    public void doTestComposedChars(boolean compat) {
+        int options = Normalizer.IGNORE_HANGUL;
+        ComposedCharIter iter = new ComposedCharIter(compat, options);
+
+        char lastChar = 0;
+
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            // Test all characters between the last one and this one to make
+            // sure that they don't have decompositions
+            assertNoDecomp(lastChar, ch, compat, options);
+            lastChar = ch;
+
+            // Now make sure that the decompositions for this character
+            // make sense
+            String chString   = new StringBuffer().append(ch).toString();
+            String iterDecomp = iter.decomposition();
+            String normDecomp = Normalizer.decompose(chString, compat);
+
+            if (iterDecomp.equals(chString)) {
+                errln("ERROR: " + hex(ch) + " has identical decomp");
+            }
+            else if (!iterDecomp.equals(normDecomp)) {
+                errln("ERROR: Normalizer decomp for " + hex(ch) + " (" + hex(normDecomp) + ")"
+                    + " != iter decomp (" + hex(iterDecomp) + ")" );
+            }
+        }
+        assertNoDecomp(lastChar, '\uFFFF', compat, options);
+    }
+
+    void assertNoDecomp(char start, char limit, boolean compat, int options)
+    {
+        for (char x = ++start; x < limit; x++) {
+            String xString   = new StringBuffer().append(x).toString();
+            String decomp = Normalizer.decompose(xString, compat);
+            if (!decomp.equals(xString)) {
+                errln("ERROR: " + hex(x) + " has decomposition (" + hex(decomp) + ")"
+                    + " but was not returned by iterator");
+            }
+        }
+    }
+
+
+    public void TestRoundTrip() {
+        int options = Normalizer.IGNORE_HANGUL;
+        boolean compat = false;
+
+        ComposedCharIter iter = new ComposedCharIter(false, options);
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            String chStr = new StringBuffer().append(ch).toString();
+            String decomp = Normalizer.decompose(chStr, compat);
+            String comp = Normalizer.compose(decomp, compat);
+
+            if (NormalizerImpl.isFullCompositionExclusion(ch)) {
+                logln("Skipped excluded char " + hex(ch) + " (" + UCharacter.getName(ch) + ")" );
+                continue;
+            }
+
+            // Avoid disparaged characters
+            if (getDecomposition(ch,compat).length() == 4) continue;
+
+            if (!comp.equals(chStr)) {
+                errln("ERROR: Round trip invalid: " + hex(chStr) + " --> " + hex(decomp)
+                    + " --> " + hex(comp));
+
+                errln("  char decomp is '" + getDecomposition(ch,compat) + "'");
+            }
+        }
+    }
+    private String getDecomposition(char ch, boolean compat){
+        char[] dest = new char[10];   
+        int length = NormalizerImpl.getDecomposition(ch,compat,dest,0,dest.length);   
+        return new String(dest,0,length);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
new file mode 100644
index 0000000..ed9d722
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.UTF16Util;
+
+/**
+ * Implements Unicode Normalization Forms C, D, KC, KD.<br>
+ * See UTR#15 for details.<br>
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+public class UnicodeNormalizer {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+     * Create a normalizer for a given form.
+     */
+    public UnicodeNormalizer(byte form, boolean fullData) {
+        this.form = form;
+        if (data == null) data = NormalizerBuilder.build(fullData); // load 1st time
+    }
+
+    /**
+    * Masks for the form selector
+    */
+    static final byte
+        COMPATIBILITY_MASK = 1,
+        COMPOSITION_MASK = 2;
+
+    /**
+    * Normalization Form Selector
+    */
+    public static final byte
+        D = 0 ,
+        C = COMPOSITION_MASK,
+        KD = COMPATIBILITY_MASK,
+        KC = (byte)(COMPATIBILITY_MASK + COMPOSITION_MASK);
+
+    /**
+    * Normalizes text according to the chosen form,
+    * replacing contents of the target buffer.
+    * @param   source      the original text, unnormalized
+    * @param   target      the resulting normalized text
+    */
+    public StringBuffer normalize(String source, StringBuffer target) {
+
+        // First decompose the source into target,
+        // then compose if the form requires.
+
+        if (source.length() != 0) {
+            internalDecompose(source, target);
+            if ((form & COMPOSITION_MASK) != 0) {
+                internalCompose(target);
+            }
+        }
+        return target;
+    }
+
+    /**
+    * Normalizes text according to the chosen form
+    * @param   source      the original text, unnormalized
+    * @return  target      the resulting normalized text
+    */
+    public String normalize(String source) {
+        return normalize(source, new StringBuffer()).toString();
+    }
+
+    // ======================================
+    //                  PRIVATES
+    // ======================================
+
+    /**
+     * The current form.
+     */
+    private byte form;
+
+    /**
+    * Decomposes text, either canonical or compatibility,
+    * replacing contents of the target buffer.
+    * @param   form        the normalization form. If COMPATIBILITY_MASK
+    *                      bit is on in this byte, then selects the recursive
+    *                      compatibility decomposition, otherwise selects
+    *                      the recursive canonical decomposition.
+    * @param   source      the original text, unnormalized
+    * @param   target      the resulting normalized text
+    */
+    private void internalDecompose(String source, StringBuffer target) {
+        StringBuffer buffer = new StringBuffer();
+        boolean canonical = (form & COMPATIBILITY_MASK) == 0;
+        int ch;
+        for (int i = 0; i < source.length();) {
+            buffer.setLength(0);
+            ch = UTF16Util.nextCodePoint(source, i);
+            i+=UTF16Util.codePointLength(ch);
+            data.getRecursiveDecomposition(canonical, ch, buffer);
+
+            // add all of the characters in the decomposition.
+            // (may be just the original character, if there was
+            // no decomposition mapping)
+
+            for (int j = 0; j < buffer.length();) {
+                ch = UTF16Util.nextCodePoint(buffer, j);
+                j+=UTF16Util.codePointLength(ch);
+                int chClass = data.getCanonicalClass(ch);
+                int k = target.length(); // insertion point
+                if (chClass != 0) {
+
+                    // bubble-sort combining marks as necessary
+
+                    int ch2;
+                    for (; k > 0; k -= UTF16Util.codePointLength(ch2)) {
+                        ch2 = UTF16Util.prevCodePoint(target, k);
+                        if (data.getCanonicalClass(ch2) <= chClass) break;
+                    }
+                }
+                UTF16Util.insertCodePoint(target, k, ch);
+            }
+        }
+    }
+
+    /**
+    * Composes text in place. Target must already
+    * have been decomposed.
+    * @param   target      input: decomposed text.
+    *                      output: the resulting normalized text.
+    */
+    private void internalCompose(StringBuffer target) {
+
+        int starterPos = 0;
+        int starterCh = UTF16Util.nextCodePoint(target,0);
+        int compPos = UTF16Util.codePointLength(starterCh);
+        int lastClass = data.getCanonicalClass(starterCh);
+        if (lastClass != 0) lastClass = 256; // fix for irregular combining sequence
+
+        // Loop on the decomposed characters, combining where possible
+
+        for (int decompPos = UTF16Util.codePointLength(starterCh); decompPos < target.length(); ) {
+            int ch = UTF16Util.nextCodePoint(target, decompPos);
+            decompPos += UTF16Util.codePointLength(ch);
+            int chClass = data.getCanonicalClass(ch);
+            int composite = data.getPairwiseComposition(starterCh, ch);
+            if (composite != NormalizerData.NOT_COMPOSITE
+            && (lastClass < chClass || lastClass == 0)) {
+                UTF16Util.setCodePointAt(target, starterPos, composite);
+                starterCh = composite;
+            } else {
+                if (chClass == 0) {
+                    starterPos = compPos;
+                    starterCh  = ch;
+                }
+                lastClass = chClass;
+                decompPos += UTF16Util.setCodePointAt(target, compPos, ch);
+                compPos += UTF16Util.codePointLength(ch);
+            }
+        }
+        target.setLength(compPos);
+    }
+
+    /**
+    * Contains normalization data from the Unicode Character Database.
+    * use false for the minimal set, true for the real set.
+    */
+    private static NormalizerData data = null;
+
+    /**
+    * Just accessible for testing.
+    */
+    boolean getExcluded (char ch) {
+        return data.getExcluded(ch);
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    String getRawDecompositionMapping (char ch) {
+        return data.getRawDecompositionMapping(ch);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
new file mode 100644
index 0000000..6605e93
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
@@ -0,0 +1,270 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+
+public class UnicodeNormalizerConformanceTest extends TestFmwk {
+
+    UnicodeNormalizer normalizer_C, normalizer_D, normalizer_KC, normalizer_KD;
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeNormalizerConformanceTest().run(args);
+    }
+    
+    public UnicodeNormalizerConformanceTest() {
+        // Doesn't matter what the string and mode are; we'll change
+        // them later as needed.
+        normalizer_C = new UnicodeNormalizer(UnicodeNormalizer.C, true);
+        normalizer_D = new UnicodeNormalizer(UnicodeNormalizer.D, false);
+        normalizer_KC = new UnicodeNormalizer(UnicodeNormalizer.KC, false);
+        normalizer_KD = new UnicodeNormalizer(UnicodeNormalizer.KD, false);
+        
+    }
+    // more interesting conformance test cases, not in the unicode.org NormalizationTest.txt
+    static  String[] moreCases ={
+        // Markus 2001aug30
+        "0061 0332 0308;00E4 0332;0061 0332 0308;00E4 0332;0061 0332 0308; # Markus 0",
+    
+        // Markus 2001oct26 - test edge case for iteration: U+0f73.cc==0 but decomposition.lead.cc==129
+        "0061 0301 0F73;00E1 0F71 0F72;0061 0F71 0F72 0301;00E1 0F71 0F72;0061 0F71 0F72 0301; # Markus 1"
+    };
+
+    /**
+     * Test the conformance of NewNormalizer to
+     * http://www.unicode.org/unicode/reports/tr15/conformance/Draft-TestSuite.txt.
+     * This file must be located at the path specified as TEST_SUITE_FILE.
+     */
+    public void TestConformance() throws Exception{
+        BufferedReader input = null;
+        String line = null;
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        int passCount = 0;
+        int failCount = 0;
+        UnicodeSet other = new UnicodeSet(0, 0x10ffff);
+        int c=0;
+        try {
+            input = TestUtil.getDataReader("unicode/NormalizationTest.txt");
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) {
+                    //read the extra test cases
+                    if(count > moreCases.length) {
+                        count = 0;
+                    } else if(count == moreCases.length) {
+                        // all done
+                        break;
+                    }
+                    line = moreCases[count++];
+                }
+                if (line.length() == 0) continue;
+
+                // Expect 5 columns of this format:
+                // 1E0C;1E0C;0044 0323;1E0C;0044 0323; # <comments>
+
+                // Skip comments
+                if (line.charAt(0) == '#'  || line.charAt(0)=='@') continue;
+
+                // Parse out the fields
+                hexsplit(line, ';', fields, buf);
+                
+                // Remove a single code point from the "other" UnicodeSet
+                if(fields[0].length()==UTF16.moveCodePointOffset(fields[0],0, 1)) {
+                    c=UTF16.charAt(fields[0],0); 
+                    if(0xac20<=c && c<=0xd73f) {
+                        // not an exhaustive test run: skip most Hangul syllables
+                        if(c==0xac20) {
+                            other.remove(0xac20, 0xd73f);
+                        }
+                        continue;
+                    }
+                    other.remove(c);
+                }
+                if (checkConformance(fields, line)) {
+                    ++passCount;
+                } else {
+                    ++failCount;
+                }
+                if ((count % 1000) == 999) {
+                    logln("Line " + (count+1));
+                }
+            }
+        } catch (IOException ex) {
+            if (input != null) {
+                try {
+                    input.close();
+                } catch (Exception ex2) {
+                    System.out.print("");
+                }
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+
+        if (failCount != 0) {
+            errln("Total: " + failCount + " lines failed, " +
+                  passCount + " lines passed");
+        } else {
+            logln("Total: " + passCount + " lines passed");
+        }
+    }
+    
+    /**
+     * Verify the conformance of the given line of the Unicode
+     * normalization (UTR 15) test suite file.  For each line,
+     * there are five columns, corresponding to field[0]..field[4].
+     *
+     * The following invariants must be true for all conformant implementations
+     *  c2 == NFC(c1) == NFC(c2) == NFC(c3)
+     *  c3 == NFD(c1) == NFD(c2) == NFD(c3)
+     *  c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+     *  c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+     *
+     * @param field the 5 columns
+     * @param line the source line from the test suite file
+     * @return true if the test passes
+     */
+    private boolean checkConformance(String[] field, String line) throws Exception{
+        boolean pass = true;
+       // StringBuffer buf = new StringBuffer(); // scratch
+        String out;
+        int i=0;
+        for (i=0; i<5; ++i) {
+            if (i<3) {
+                out = normalizer_C.normalize(field[i]);
+                pass &= assertEqual("C", field[i], out, field[1], "c2!=C(c" + (i+1));
+                 
+                out = normalizer_D.normalize(field[i]);
+                pass &= assertEqual("D", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+            }
+            out = normalizer_KC.normalize(field[i]);
+            pass &= assertEqual("KC", field[i], out, field[3], "c4!=KC(c" + (i+1));
+
+            out = normalizer_KD.normalize(field[i]);
+            pass &= assertEqual("KD", field[i], out, field[4], "c5!=KD(c" + (i+1));
+              
+        }
+        
+        if (!pass) {
+            errln("FAIL: " + line);
+        }     
+       
+        return pass;
+    }
+    
+    /**
+     * @param op name of normalization form, e.g., "KC"
+     * @param s string being normalized
+     * @param got value received
+     * @param exp expected value
+     * @param msg description of this test
+     * @returns true if got == exp
+     */
+    private boolean assertEqual(String op, String s, String got,
+                                String exp, String msg) {
+        if (exp.equals(got)) {
+            return true;
+        }
+        errln(("      " + msg + ") " + op + "(" + s + ")=" + hex(got) +
+                             ", exp. " + hex(exp)));
+        return false;
+    }
+
+    /**
+     * Split a string into pieces based on the given delimiter
+     * character.  Then, parse the resultant fields from hex into
+     * characters.  That is, "0040 0400;0C00;0899" -> new String[] {
+     * "\u0040\u0400", "\u0C00", "\u0899" }.  The output is assumed to
+     * be of the proper length already, and exactly output.length
+     * fields are parsed.  If there are too few an exception is
+     * thrown.  If there are too many the extras are ignored.
+     *
+     * @param buf scratch buffer
+     */
+    private static void hexsplit(String s, char delimiter,
+                                 String[] output, StringBuffer buf) {
+        int i;
+        int pos = 0;
+        for (i=0; i<output.length; ++i) {
+            int delim = s.indexOf(delimiter, pos);
+            if (delim < 0) {
+                throw new IllegalArgumentException("Missing field in " + s);
+            }
+            // Our field is from pos..delim-1.
+            buf.setLength(0);
+            
+            String toHex = s.substring(pos,delim);
+            pos = delim;
+            int index = 0;
+            int len = toHex.length();
+            while(index< len){
+                if(toHex.charAt(index)==' '){
+                    index++;
+                }else{
+                    int spacePos = toHex.indexOf(' ', index);
+                    if(spacePos==-1){
+                        appendInt(buf,toHex.substring(index,len),s);
+                        spacePos = len;
+                    }else{
+                        appendInt(buf,toHex.substring(index, spacePos),s);
+                    }
+                    index = spacePos+1;
+                }
+            }
+            
+            if (buf.length() < 1) {
+                throw new IllegalArgumentException("Empty field " + i + " in " + s);
+            }
+            output[i] = buf.toString();
+            ++pos; // Skip over delim
+        }
+    }
+    public static void appendInt(StringBuffer buf, String strToHex, String s){
+        int hex = Integer.parseInt(strToHex,16);
+        if (hex < 0 ) {
+            throw new IllegalArgumentException("Out of range hex " +
+                                                hex + " in " + s);
+        }else if (hex > 0xFFFF){
+            buf.append((char)((hex>>10)+0xd7c0)); 
+            buf.append((char)((hex&0x3ff)|0xdc00));
+        }else{
+            buf.append((char) hex);
+        }
+    }
+            
+    // Specific tests for debugging.  These are generally failures
+    // taken from the conformance file, but culled out to make
+    // debugging easier.  These can be eliminated without affecting
+    // coverage.
+
+    public void _hideTestCase6() throws Exception{
+        _testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;");
+    }
+
+    public void _testOneLine(String line) throws Exception{
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        // Parse out the fields
+        hexsplit(line, ';', fields, buf);
+        checkConformance(fields, line);
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/package.html b/src/com/ibm/icu/dev/test/normalizer/package.html
new file mode 100644
index 0000000..d7a927a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for Normalizer.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/package.html b/src/com/ibm/icu/dev/test/package.html
new file mode 100644
index 0000000..61370bf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
new file mode 100644
index 0000000..9ae22d1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
@@ -0,0 +1,194 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines           *
+ * Corporation and others.  All Rights Reserved.                      *
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.FileInputStream;
+import java.util.ArrayList;
+
+public class BreakIteratorPerformanceTest extends PerfTest {
+
+    String fileContents;
+
+    com.ibm.icu.text.BreakIterator iSentenceIter;
+    com.ibm.icu.text.BreakIterator iWordIter;
+    com.ibm.icu.text.BreakIterator iLineIter;
+    com.ibm.icu.text.BreakIterator iCharacterIter;
+    java.text.BreakIterator jSentenceIter;
+    java.text.BreakIterator jWordIter;
+    java.text.BreakIterator jLineIter;
+    java.text.BreakIterator jCharacterIter;
+    String[] iSentences;
+    String[] iWords;
+    String[] iLines;
+    String[] iCharacters;
+    String[] jSentences;
+    String[] jWords;
+    String[] jLines;
+    String[] jCharacters;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            // read in the input file, being careful with a possible BOM
+            FileInputStream in = new FileInputStream(fileName);
+            BOMFreeReader reader = new BOMFreeReader(in, encoding);
+            fileContents = new String(readToEOS(reader));
+
+            // // get rid of any characters that may cause differences between ICU4J and Java BreakIterator
+            // // fileContents = fileContents.replaceAll("[\t\f\r\n\\-/ ]+", " ");
+            // String res = "";
+            // StringTokenizer tokenizer = new StringTokenizer(fileContents, "\t\f\r\n-/ ");
+            // while (tokenizer.hasMoreTokens())
+            // res += tokenizer.nextToken() + " ";
+            // fileContents = res.trim();
+
+            // create the break iterators with respect to locale
+            if (locale == null) {
+                iSentenceIter = com.ibm.icu.text.BreakIterator.getSentenceInstance();
+                iWordIter = com.ibm.icu.text.BreakIterator.getWordInstance();
+                iLineIter = com.ibm.icu.text.BreakIterator.getLineInstance();
+                iCharacterIter = com.ibm.icu.text.BreakIterator.getCharacterInstance();
+
+                jSentenceIter = java.text.BreakIterator.getSentenceInstance();
+                jWordIter = java.text.BreakIterator.getWordInstance();
+                jLineIter = java.text.BreakIterator.getLineInstance();
+                jCharacterIter = java.text.BreakIterator.getCharacterInstance();
+            } else {
+                iSentenceIter = com.ibm.icu.text.BreakIterator.getSentenceInstance(locale);
+                iWordIter = com.ibm.icu.text.BreakIterator.getWordInstance(locale);
+                iLineIter = com.ibm.icu.text.BreakIterator.getLineInstance(locale);
+                iCharacterIter = com.ibm.icu.text.BreakIterator.getCharacterInstance(locale);
+
+                jSentenceIter = java.text.BreakIterator.getSentenceInstance(locale);
+                jWordIter = java.text.BreakIterator.getWordInstance(locale);
+                jLineIter = java.text.BreakIterator.getLineInstance(locale);
+                jCharacterIter = java.text.BreakIterator.getCharacterInstance(locale);
+            }
+
+            iSentences = init(iSentenceIter);
+            iWords = init(iWordIter);
+            iLines = init(iLineIter);
+            iCharacters = init(iCharacterIter);
+            jSentences = init(jSentenceIter);
+            jWords = init(jWordIter);
+            jLines = init(jLineIter);
+            jCharacters = init(jCharacterIter);
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException(ex.getMessage());
+        }
+
+        // we created some heavy objects, so lets try to clean up a little before running the tests
+        gc();
+    }
+
+    private String[] init(com.ibm.icu.text.BreakIterator iter) {
+        // set the string to iterate on
+        iter.setText(fileContents);
+
+        // produce a token list
+        ArrayList tokenList = new ArrayList();
+        int start = iter.first();
+        for (int end = iter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iter.next())
+            tokenList.add(fileContents.substring(start, end));
+
+        // return the token list as a string array
+        return (String[]) tokenList.toArray(new String[0]);
+    }
+
+    private String[] init(java.text.BreakIterator iter) {
+        // set the string to iterate on
+        iter.setText(fileContents);
+
+        // produce a token list
+        ArrayList tokenList = new ArrayList();
+        int start = iter.first();
+        for (int end = iter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iter.next())
+            tokenList.add(fileContents.substring(start, end));
+
+        // return the token list as a string array
+        return (String[]) tokenList.toArray(new String[0]);
+    }
+
+    PerfTest.Function createTestICU(final com.ibm.icu.text.BreakIterator iIter, final String[] correct,
+            final String breakType) {
+        return new PerfTest.Function() {
+            public void call() {
+                int k = 0;
+                int start = iIter.first();
+                for (int end = iIter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iIter
+                        .next())
+                    if (!correct[k++].equals(fileContents.substring(start, end)))
+                        throw new RuntimeException("ICU4J BreakIterator gave the wrong answer for " + breakType + " "
+                                + (k - 1) + " during the performance test. Cannot continue the performance test.");
+                if (k != correct.length)
+                    throw new RuntimeException("ICU4J BreakIterator gave the wrong number of " + breakType
+                            + "s during the performance test. Cannot continue the performance test.");
+            }
+
+            public long getOperationsPerIteration() {
+                return fileContents.length();
+            }
+        };
+    }
+
+    PerfTest.Function createTestJava(final java.text.BreakIterator jIter, final String[] correct, final String breakType) {
+        return new PerfTest.Function() {
+            public void call() {
+                int k = 0;
+                int start = jIter.first();
+                for (int end = jIter.next(); end != java.text.BreakIterator.DONE; start = end, end = jIter.next())
+                    if (!correct[k++].equals(fileContents.substring(start, end)))
+                        throw new RuntimeException("Java BreakIterator gave the wrong answer for " + breakType + " "
+                                + (k - 1) + " during the performance test. Cannot continue the performance test.");
+                if (k != correct.length)
+                    throw new RuntimeException("Java BreakIterator gave the wrong number of " + breakType
+                            + "s during the performance test. Cannot continue the performance test.");
+            }
+
+            public long getOperationsPerIteration() {
+                return fileContents.length();
+            }
+        };
+    }
+
+    PerfTest.Function TestICUSentences() {
+        return createTestICU(iSentenceIter, iSentences, "sentence");
+    }
+
+    PerfTest.Function TestICUWords() {
+        return createTestICU(iWordIter, iWords, "word");
+    }
+
+    PerfTest.Function TestICULines() {
+        return createTestICU(iLineIter, iLines, "line");
+    }
+
+    PerfTest.Function TestICUCharacters() {
+        return createTestICU(iCharacterIter, iCharacters, "character");
+    }
+
+    PerfTest.Function TestJavaSentences() {
+        return createTestJava(jSentenceIter, jSentences, "sentence");
+    }
+
+    PerfTest.Function TestJavaWords() {
+        return createTestJava(jWordIter, jWords, "word");
+    }
+
+    PerfTest.Function TestJavaLines() {
+        return createTestJava(jLineIter, jLines, "line");
+    }
+
+    PerfTest.Function TestJavaCharacters() {
+        return createTestJava(jCharacterIter, jCharacters, "character");
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
new file mode 100644
index 0000000..8c62c7a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
@@ -0,0 +1,1262 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.text.*;
+import java.util.*;
+import java.io.*;
+import com.ibm.icu.impl.LocaleUtility;
+
+public class CollationPerformanceTest {
+    static final String usageString = 
+        "usage:  collperf options...\n"
+        + "-help                      Display this message.\n"
+        + "-file file_name            utf-16 format file of names.\n"
+        + "-locale name               ICU locale to use.  Default is en_US\n"
+        + "-rules file_name           Collation rules file (overrides locale)\n"
+        //+ "-langid 0x1234             Windows Language ID number.  Default to value for -locale option\n"
+        //+ "                              see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm\n"
+        //+ "-win                       Run test using Windows native services.  (ICU is default)\n"
+        //+ "-unix                      Run test using Unix strxfrm, strcoll services.\n"
+        //+ "-uselen                    Use API with string lengths.  Default is null-terminated strings\n"
+        + "-usekeys                   Run tests using sortkeys rather than strcoll\n"
+        + "-strcmp                    Run tests using u_strcmp rather than strcoll\n"
+        + "-strcmpCPO                 Run tests using u_strcmpCodePointOrder rather than strcoll\n"
+        + "-loop nnnn                 Loopcount for test.  Adjust for reasonable total running time.\n"
+        + "-iloop n                   Inner Loop Count.  Default = 1.  Number of calls to function\n"
+        + "                               under test at each call point.  For measuring test overhead.\n"
+        + "-terse                     Terse numbers-only output.  Intended for use by scripts.\n"
+        + "-french                    French accent ordering\n"
+        + "-frenchoff                 No French accent ordering (for use with French locales.)\n"
+        + "-norm                      Normalizing mode on\n"
+        + "-shifted                   Shifted mode\n"
+        + "-lower                     Lower case first\n"
+        + "-upper                     Upper case first\n"
+        + "-case                      Enable separate case level\n"
+        + "-level n                   Sort level, 1 to 5, for Primary, Secndary, Tertiary, Quaternary, Identical\n"
+        + "-keyhist                   Produce a table sort key size vs. string length\n"
+        + "-binsearch                 Binary Search timing test\n"
+        + "-keygen                    Sort Key Generation timing test\n"
+        + "-qsort                     Quicksort timing test\n"
+        + "-iter                      Iteration Performance Test\n"
+        + "-dump                      Display strings, sort keys and CEs.\n"
+        + "-java                      Run test using java.text.Collator.\n";
+    
+    //enum {FLAG, NUM, STRING} type;
+    static StringBuffer temp_opt_fName      = new StringBuffer("");
+    static StringBuffer temp_opt_locale     = new StringBuffer("en_US");
+    //static StringBuffer temp_opt_langid     = new StringBuffer("0");         // Defaults to value corresponding to opt_locale.
+    static StringBuffer temp_opt_rules      = new StringBuffer("");
+    static StringBuffer temp_opt_help       = new StringBuffer("");
+    static StringBuffer temp_opt_loopCount  = new StringBuffer("1");
+    static StringBuffer temp_opt_iLoopCount = new StringBuffer("1");
+    static StringBuffer temp_opt_terse      = new StringBuffer("false");
+    static StringBuffer temp_opt_qsort      = new StringBuffer("");
+    static StringBuffer temp_opt_binsearch  = new StringBuffer("");
+    static StringBuffer temp_opt_icu        = new StringBuffer("true");
+    //static StringBuffer opt_win        = new StringBuffer("");      // Run with Windows native functions.
+    //static StringBuffer opt_unix       = new StringBuffer("");      // Run with UNIX strcoll, strxfrm functions.
+    //static StringBuffer opt_uselen     = new StringBuffer("");
+    static StringBuffer temp_opt_usekeys    = new StringBuffer("");
+    static StringBuffer temp_opt_strcmp     = new StringBuffer("");
+    static StringBuffer temp_opt_strcmpCPO  = new StringBuffer("");
+    static StringBuffer temp_opt_norm       = new StringBuffer("");
+    static StringBuffer temp_opt_keygen     = new StringBuffer("");
+    static StringBuffer temp_opt_french     = new StringBuffer("");
+    static StringBuffer temp_opt_frenchoff  = new StringBuffer("");
+    static StringBuffer temp_opt_shifted    = new StringBuffer("");
+    static StringBuffer temp_opt_lower      = new StringBuffer("");
+    static StringBuffer temp_opt_upper      = new StringBuffer("");
+    static StringBuffer temp_opt_case       = new StringBuffer("");
+    static StringBuffer temp_opt_level      = new StringBuffer("0");
+    static StringBuffer temp_opt_keyhist    = new StringBuffer("");
+    static StringBuffer temp_opt_itertest   = new StringBuffer("");
+    static StringBuffer temp_opt_dump       = new StringBuffer("");
+    static StringBuffer temp_opt_java       = new StringBuffer("");
+    
+    
+    static String   opt_fName      = "";
+    static String   opt_locale     = "en_US";
+    //static int      opt_langid     = 0;         // Defaults to value corresponding to opt_locale.
+    static String   opt_rules      = "";
+    static boolean  opt_help       = false;
+    static int      opt_loopCount  = 1;
+    static int      opt_iLoopCount = 1;
+    static boolean  opt_terse      = false;
+    static boolean  opt_qsort      = false;
+    static boolean  opt_binsearch  = false;
+    static boolean  opt_icu        = true;
+    //static boolean  opt_win        = false;      // Run with Windows native functions.
+    //static boolean  opt_unix       = false;      // Run with UNIX strcoll, strxfrm functions.
+    //static boolean  opt_uselen     = false;
+    static boolean  opt_usekeys    = false;
+    static boolean  opt_strcmp     = false;
+    static boolean  opt_strcmpCPO  = false;
+    static boolean  opt_norm       = false;
+    static boolean  opt_keygen     = false;
+    static boolean  opt_french     = false;
+    static boolean  opt_frenchoff  = false;
+    static boolean  opt_shifted    = false;
+    static boolean  opt_lower      = false;
+    static boolean  opt_upper      = false;
+    static boolean  opt_case       = false;
+    static int      opt_level      = 0;
+    static boolean  opt_keyhist    = false;
+    static boolean  opt_itertest   = false;
+    static boolean  opt_dump       = false;
+    static boolean  opt_java       = false;
+
+    static OptionSpec[] options = {
+        new OptionSpec("-file", 2, temp_opt_fName),
+        new OptionSpec("-locale", 2, temp_opt_locale),
+        //new OptionSpec("-langid", 1, temp_opt_langid),
+        new OptionSpec("-rules", 2, temp_opt_rules),
+        new OptionSpec("-qsort", 0, temp_opt_qsort),
+        new OptionSpec("-binsearch", 0, temp_opt_binsearch),
+        new OptionSpec("-iter", 0, temp_opt_itertest),
+        //new OptionSpec("-win", 0, temp_opt_win),
+        //new OptionSpec("-unix", 0, temp_opt_unix),
+        //new OptionSpec("-uselen", 0, temp_opt_uselen),
+        new OptionSpec("-usekeys", 0, temp_opt_usekeys),
+        new OptionSpec("-strcmp", 0, temp_opt_strcmp),
+        new OptionSpec("-strcmpCPO", 0, temp_opt_strcmpCPO),
+        new OptionSpec("-norm", 0, temp_opt_norm),
+        new OptionSpec("-french", 0, temp_opt_french),
+        new OptionSpec("-frenchoff", 0, temp_opt_frenchoff),
+        new OptionSpec("-shifted", 0, temp_opt_shifted),
+        new OptionSpec("-lower", 0, temp_opt_lower),
+        new OptionSpec("-upper", 0, temp_opt_upper),
+        new OptionSpec("-case", 0, temp_opt_case),
+        new OptionSpec("-level", 1, temp_opt_level),
+        new OptionSpec("-keyhist", 0, temp_opt_keyhist),
+        new OptionSpec("-keygen", 0, temp_opt_keygen),
+        new OptionSpec("-loop", 1, temp_opt_loopCount),
+        new OptionSpec("-iloop", 1, temp_opt_iLoopCount),
+        new OptionSpec("-terse", 0, temp_opt_terse),
+        new OptionSpec("-dump", 0, temp_opt_dump),
+        new OptionSpec("-help", 0, temp_opt_help),
+        new OptionSpec("-?", 0, temp_opt_help),
+        new OptionSpec("-java", 0, temp_opt_java),
+    };
+    
+    static java.text.Collator javaCol = null;
+    static com.ibm.icu.text.Collator icuCol = null;
+    static NumberFormat nf = null;
+    static NumberFormat percent = null;
+    ArrayList list = null;
+    String[] tests = null;
+    int globalCount = 0;
+    
+    public static void main(String[] args) {
+        CollationPerformanceTest collPerf = new CollationPerformanceTest();
+        if ( !CollationPerformanceTest.processOptions(args) || opt_help || opt_fName.length()==0) {
+            System.out.println(usageString);
+            System.exit(1);
+        }
+        
+        nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(2);
+        percent = NumberFormat.getPercentInstance();
+        
+        collPerf.setOptions();
+        collPerf.readDataLines();
+        
+        if (opt_dump) {
+            collPerf.doDump();
+        }
+        
+        if (opt_qsort) {
+            collPerf.doQSort();
+        }
+        
+        if (opt_binsearch) {
+            collPerf.doBinarySearch();
+        }
+        
+        if (opt_keygen) {
+            collPerf.doKeyGen();
+        }
+        
+        if (opt_keyhist) {
+            collPerf.doKeyHist();
+        }
+        
+        if (opt_itertest) {
+            collPerf.doIterTest();
+        }
+        
+    }
+    
+    //Dump file lines, CEs, Sort Keys if requested
+    void doDump() {
+        for(int i = 0; i < list.size(); i++) {
+            //print the line
+            String line = com.ibm.icu.impl.Utility.escape((String)list.get(i));
+            System.out.println(line);
+            
+            System.out.print("  CEs:  ");
+            CollationElementIterator CEiter = ((com.ibm.icu.text.RuleBasedCollator)icuCol).getCollationElementIterator(line);
+            int ce;
+            int j = 0;
+            for(;;) {
+                ce = CEiter.next();
+                if (ce == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                //System.out.print();
+                String outStr = Integer.toHexString(ce); 
+                for (int len = 0; len < 8 - outStr.length(); len++) {
+                    outStr ='0' + outStr;
+                }
+                System.out.print(outStr + "  ");
+                if(++j >8) {
+                    System.out.print("\n        ");
+                    j = 0;
+                }
+            }
+                
+            System.out.print("\n   ICU Sort Key: ");
+            CollationKey ck = ((com.ibm.icu.text.RuleBasedCollator)icuCol).getCollationKey(line);
+            byte[] cks = ck.toByteArray();
+            j = 0;
+            for(int k = 0; k < cks.length; k++) {
+                String outStr = Integer.toHexString(cks[k]);
+                switch (outStr.length()) {
+                case 1:     outStr = '0' + outStr;
+                            break;
+                case 8:     outStr = outStr.substring(6);
+                            break; 
+                }
+                System.out.print(outStr);
+                System.out.print("  ");
+                j++;
+                if(j > 0 && j % 20 == 0) {
+                    System.out.print("\n                 ");
+                }
+            }
+            System.out.println("\n");
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *   doQSort()    The quick sort timing test.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doQSort() {
+        callGC();
+        //String[] sortTests = (String[]) tests.clone();
+        //Adjust loop count to compensate for file size. QSort should be nlog(n) 
+        double dLoopCount = opt_loopCount * 3000 / ((Math.log(tests.length) / Math.log(10)* tests.length));
+ 
+        if(opt_usekeys) {
+            dLoopCount *= 5;
+        }
+        
+        int adj_loopCount = (int)dLoopCount;
+        if(adj_loopCount < 1) {
+            adj_loopCount = 1;
+        }
+        
+        globalCount = 0;
+        long startTime = 0;
+        long endTime = 0;
+        if (opt_icu && opt_usekeys) {
+            startTime = System.currentTimeMillis();
+            qSortImpl_icu_usekeys(tests, 0, tests.length -1, icuCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_icu && !opt_usekeys){
+            startTime = System.currentTimeMillis();
+            qSortImpl_nokeys(tests, 0, tests.length -1, icuCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_java && opt_usekeys) {
+            startTime = System.currentTimeMillis();
+            qSortImpl_java_usekeys(tests, 0, tests.length -1, javaCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_java && !opt_usekeys){
+            startTime = System.currentTimeMillis();
+            qSortImpl_nokeys(tests, 0, tests.length -1, javaCol);
+            endTime = System.currentTimeMillis();
+        }
+        long elapsedTime = endTime - startTime;
+        int ns = (int)(1000000 * elapsedTime / (globalCount + 0.0));
+        if (!opt_terse) {
+            System.out.println("qsort:  total # of string compares = " + globalCount);
+            System.out.println("qsort:  time per compare = " + ns);
+        } else {
+            System.out.println(ns);
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doBinarySearch()    Binary Search timing test.  Each name from the list
+     *                        is looked up in the full sorted list of names.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doBinarySearch() {
+        callGC();
+        int gCount = 0;
+        int loops = 0;
+        double dLoopCount = opt_loopCount * 3000 / (Math.log(tests.length) / Math.log(10)* tests.length);
+        long startTime = 0;
+        long elapsedTime = 0;
+        
+        if(opt_usekeys) {
+            dLoopCount *= 5;
+        }
+        int adj_loopCount = (int)dLoopCount;
+        if(adj_loopCount < 1) {
+            adj_loopCount = 1;
+        }
+        
+        //int opt2 = 0;
+        
+        for(;;) {   //not really a loop, just allows "break" to work, to simplify 
+                    //inadvertantly running more than one test through here
+            if(opt_strcmp) {
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for(loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length-1;
+                        int lo = 0;
+                        int guess = -1;
+                        for(;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if(newGuess == guess){
+                                break;
+                            }
+                            guess = newGuess;
+                            r = tests[j].compareTo(tests[guess]);
+                            gCount++;
+                            if(r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            
+            if (opt_strcmpCPO) {
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for(loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length-1;
+                        int lo = 0;
+                        int guess = -1;
+                        for(;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if(newGuess == guess){
+                                break;
+                            }
+                            guess = newGuess;
+                            r = com.ibm.icu.text.Normalizer.compare(tests[j], tests[guess], Normalizer.COMPARE_CODE_POINT_ORDER);
+                            gCount++;
+                            if(r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            
+            if (opt_icu) {
+               
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for (loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length - 1;
+                        int lo = 0;
+                        int guess = -1;
+                        for (;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if (newGuess == guess) {
+                                break;
+                            }
+                            guess = newGuess;
+                            if (opt_usekeys) {
+                                com.ibm.icu.text.CollationKey sortKey1 = icuCol.getCollationKey(tests[j]);
+                                com.ibm.icu.text.CollationKey sortKey2 = icuCol.getCollationKey(tests[guess]);
+                                r = sortKey1.compareTo(sortKey2);
+                                gCount ++;
+                            } else {
+                                r = icuCol.compare(tests[j], tests[guess]);
+                                gCount++;
+                            }
+                            if (r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            if (opt_java) {
+               
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for (loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length - 1;
+                        int lo = 0;
+                        int guess = -1;
+                        for (;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if (newGuess == guess) {
+                                break;
+                            }
+                            guess = newGuess;
+                            if (opt_usekeys) {
+                                java.text.CollationKey sortKey1 = javaCol.getCollationKey(tests[j]);
+                                java.text.CollationKey sortKey2 = javaCol.getCollationKey(tests[guess]);
+                                r = sortKey1.compareTo(sortKey2);
+                                gCount ++;
+                            } else {
+                                r = javaCol.compare(tests[j], tests[guess]);
+                                gCount++;
+                            }
+                            if (r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            break; 
+        }
+        int ns = (int)((float)(1000000) * (float)elapsedTime / (float)gCount);
+        if (!opt_terse) {
+            System.out.println("binary search:  total # of string compares = " + gCount);
+            System.out.println("binary search:  compares per loop = " + gCount / loops);
+            System.out.println("binary search:  time per compare = " + ns);
+        } else {
+            System.out.println(ns);
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *   doKeyGen()     Key Generation Timing Test
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doKeyGen() {
+        callGC();
+        
+        // Adjust loop count to compensate for file size.   Should be order n
+        double dLoopCount = opt_loopCount * (1000.0 /  (double)list.size());
+        int adj_loopCount = (int)dLoopCount;
+        if (adj_loopCount < 1) adj_loopCount = 1;
+
+        long startTime = 0;
+        long totalKeyLen = 0;
+        long totalChars = 0;
+        if (opt_java) {
+            startTime = System.currentTimeMillis();
+            for (int loops=0; loops<adj_loopCount; loops++) {
+                for (int line=0; line < tests.length; line++) {
+                    for (int iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+                        totalChars += tests[line].length();
+                        byte[] sortKey = javaCol.getCollationKey(tests[line]).toByteArray();
+                        totalKeyLen += sortKey.length;
+                    }
+                }
+            }
+        } else {
+            startTime = System.currentTimeMillis();
+            for (int loops=0; loops<adj_loopCount; loops++) {
+                for (int line=0; line < tests.length; line++) {
+                    for (int iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+                        totalChars += tests[line].length();
+                        byte[] sortKey = icuCol.getCollationKey(tests[line]).toByteArray();
+                        totalKeyLen += sortKey.length;
+                    }
+                }
+            }
+        }
+        
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        long ns = (long)(1000000 * elapsedTime / (adj_loopCount * tests.length + 0.0));
+        if (!opt_terse) {
+            System.out.println("Sort Key Generation:  total # of keys =" + adj_loopCount * tests.length);
+            System.out.println("Sort Key Generation:  time per key = " + ns + " ns");
+            System.out.println("Key Length / character = " + nf.format(totalKeyLen / (totalChars + 0.0)));
+        }
+        else {
+            System.out.print(ns + ",  ");
+            System.out.println(nf.format(totalKeyLen / (totalChars + 0.0)) + ", ");
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doKeyHist()       Output a table of data for average sort key size vs. string length.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doKeyHist() {
+        callGC();
+        int     maxLen = 0;
+
+        // Find the maximum string length
+        for (int i = 0; i < tests.length; i++) {
+            if (tests[i].length() > maxLen) maxLen = tests[i].length();
+        }
+        
+        int[] accumulatedLen  = new int[maxLen + 1];
+        int[] numKeysOfSize   = new int[maxLen + 1];
+        
+        // Fill the arrays...
+        for (int i = 0; i < tests.length; i++) {
+            int len = tests[i].length();
+            accumulatedLen[len] += icuCol.getCollationKey(tests[i]).toByteArray().length;
+            numKeysOfSize[len]  += 1;
+        }
+        
+        // And write out averages
+        System.out.println("String Length,  Avg Key Length,  Avg Key Len per char");
+        for (int i = 1; i <= maxLen; i++) {
+            if (numKeysOfSize[i] > 0) {
+                System.out.println(i + ", " + nf.format(accumulatedLen[i] / (numKeysOfSize[i]+ 0.0)) + ", " 
+                    + nf.format(accumulatedLen[i] / (numKeysOfSize[i] * i + 0.0)));
+            }
+        }
+        
+    }
+    
+    void doForwardIterTest() {
+        callGC();
+        System.out.print("\n\nPerforming forward iteration performance test with ");
+        System.out.println("performance test on strings from file -----------");
+    
+        CollationElementIterator iter = ((RuleBasedCollator)icuCol).getCollationElementIterator("");
+        
+        int gCount = 0;
+        int count = 0;
+        long startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                while (iter.next() != CollationElementIterator.NULLORDER) {
+                    gCount++;
+                }
+                linecount ++;
+            }
+            count ++;
+        }
+        
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        // empty loop recalculation
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) { 
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                linecount ++;
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+
+        int ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Total number of strings compared " + tests.length 
+                            + "in " + opt_loopCount + " loops");
+        System.out.println("Average time per CollationElementIterator.next() nano seconds " + ns);
+        System.out.println("performance test on skipped-5 concatenated strings from file -----------");
+        
+        String totalStr = "";
+        int    strlen = 0;
+        // appending all the strings
+        int linecount = 0;
+        while (linecount < tests.length) {
+            totalStr += tests[linecount];
+            strlen += tests[linecount].length();
+            linecount ++;
+        }
+        System.out.println("Total size of strings " + strlen);
+        
+        gCount = 0;
+        count  = 0;
+        iter = ((RuleBasedCollator)icuCol).getCollationElementIterator(totalStr);
+        strlen -= 5; // any left over characters are not iterated,
+                     // this is to ensure the backwards and forwards iterators
+                     // gets the same position
+        int strindex = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 0;
+            iter.setOffset(strindex);
+            while (true) {
+                if (iter.next() == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                gCount++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    iter.setOffset(strindex);
+                    count5 = 5;
+                }
+            }
+            count ++;
+        }
+    
+        elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime);
+        
+        // empty loop recalculation
+        int tempgCount = 0;
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 0;
+            iter.setOffset(strindex);
+            while (true) {
+                tempgCount ++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    iter.setOffset(strindex);
+                    count5 = 5;
+                }
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime);
+    
+        System.out.println("gCount " + gCount);
+        ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Average time per CollationElementIterator.next() nano seconds " + ns);
+    }
+    
+    void doBackwardIterTest() {
+        System.out.print("\n\nPerforming backward iteration performance test with ");
+        System.out.println("performance test on strings from file -----------\n");
+        
+        CollationElementIterator iter = ((RuleBasedCollator)icuCol).getCollationElementIterator("");
+        
+        int gCount = 0;
+        int count = 0;
+        long startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                while (iter.previous() != CollationElementIterator.NULLORDER) {
+                    gCount++;
+                }
+                linecount ++;
+            }
+            count ++;
+        }
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        // empty loop recalculation
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                linecount ++;
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        int ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Total number of strings compared " + tests.length 
+                            + "in " + opt_loopCount + " loops");
+        System.out.println("Average time per CollationElementIterator.previous() nano seconds " + ns);
+        System.out.println("performance test on skipped-5 concatenated strings from file -----------");
+    
+        String totalStr = "";
+        int    strlen = 0;
+        // appending all the strings
+        int linecount = 0;
+        while (linecount < tests.length) {
+            totalStr += tests[linecount];
+            strlen += tests[linecount].length();
+            linecount ++;
+        }
+        System.out.println("Total size of strings " + strlen);
+        
+        gCount = 0;
+        count  = 0;
+    
+        iter = ((RuleBasedCollator)icuCol).getCollationElementIterator(totalStr);
+        int strindex = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 5;
+            iter.setOffset(strindex);
+            while (true) {
+                if (iter.previous() == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                 gCount ++;
+                 count5 --;
+                 if (count5 == 0) {
+                     strindex += 10;
+                     if (strindex > strlen) {
+                        break;
+                     }
+                     iter.setOffset(strindex);
+                     count5 = 5;
+                 }
+            }
+            count ++;
+        }
+    
+        elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime);
+        
+        // empty loop recalculation
+        count = 0;
+        int tempgCount = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 5;
+            iter.setOffset(strindex);
+            while (true) {
+                 tempgCount ++;
+                 count5 --;
+                 if (count5 == 0) {
+                     strindex += 10;
+                     if (strindex > strlen) {
+                        break;
+                     }
+                     iter.setOffset(strindex);
+                     count5 = 5;
+                 }
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime);
+    
+        System.out.println("gCount " + gCount);
+        ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Average time per CollationElementIterator.previous() nano seconds " + ns);
+    }
+    
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doIterTest()       Iteration test
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doIterTest() {
+        doForwardIterTest();
+        doBackwardIterTest();
+    }
+    
+    void setOptions() {
+        
+        if (opt_java) {
+            opt_icu = false;
+        }
+        
+        if (opt_rules.length() != 0) {
+            try {
+                icuCol = new com.ibm.icu.text.RuleBasedCollator(getCollationRules(opt_rules));
+            } catch (Exception e) {
+                System.out.println("Cannot open rules:" + e.getMessage());
+                System.exit(1);
+            }
+        } else {
+            icuCol = com.ibm.icu.text.Collator.getInstance(
+                                LocaleUtility.getLocaleFromName(opt_locale));
+        }
+        
+        javaCol = java.text.Collator.getInstance(
+                                LocaleUtility.getLocaleFromName(opt_locale));
+        
+        if (opt_norm) {
+            javaCol.setDecomposition(java.text.Collator.CANONICAL_DECOMPOSITION);
+            icuCol.setDecomposition(com.ibm.icu.text.Collator.CANONICAL_DECOMPOSITION);
+        }
+        
+        if (opt_french && opt_frenchoff) {
+            System.err.println("Error: specified both -french and -frenchoff options.");
+        }
+        
+        if (opt_french) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setFrenchCollation(true);
+        }
+        if (opt_frenchoff) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setFrenchCollation(false);
+        }
+        
+        if (opt_lower) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setLowerCaseFirst(true);
+        }
+        
+        if (opt_upper) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setUpperCaseFirst(true);
+        }
+        
+        if (opt_shifted) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setAlternateHandlingShifted(true);
+        }
+        
+        if (opt_level != 0) {
+            switch (opt_level) {
+                case 1 :
+                        javaCol.setStrength(java.text.Collator.PRIMARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.PRIMARY);
+                        break;
+                case 2 :
+                        javaCol.setStrength(java.text.Collator.SECONDARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.SECONDARY);
+                        break;
+                case 3 :
+                        javaCol.setStrength(java.text.Collator.TERTIARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.TERTIARY);
+                        break;
+                case 4 :
+                        icuCol.setStrength(com.ibm.icu.text.Collator.QUATERNARY);
+                        break;
+                case 5 :
+                        javaCol.setStrength(java.text.Collator.IDENTICAL);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.IDENTICAL);
+                        break;
+                default:
+                    System.err.println("-level param must be between 1 and 5\n");
+                    System.exit(1);
+            }
+        }
+        // load classes at least once before starting
+        javaCol.compare("a", "b");
+        icuCol.compare("a", "b");
+    }
+    
+    static boolean processOptions(String[] args) {
+        int argNum;
+        for (argNum =0; argNum < args.length; argNum++) {
+            for (int i = 0; i < options.length; i++) {
+                if (args[argNum].equalsIgnoreCase(options[i].name)) {
+                    switch (options[i].type) {
+                        case 0:
+                                options[i].value.delete(0, options[i].value.capacity()).append("true");
+                                break;
+                        case 1:
+                                argNum++;
+                                if ((argNum >= args.length) || (args[argNum].charAt(0)=='-')) {
+                                    System.err.println("value expected for"+ options[i].name +"option.\n");
+                                    return false;
+                                }
+                                try {
+                                   /* int value =*/ Integer.parseInt(args[argNum]);
+                                    options[i].value.delete(0, options[i].value.capacity()).append(args[argNum]);
+                                } catch (NumberFormatException e) {
+                                    System.err.println("Expected: a number value");
+                                    return false;    
+                                }
+                                break;
+                        case 2:
+                                argNum++;
+                                if ((argNum >= args.length) || (args[argNum].charAt(0)=='-')) {
+                                    System.err.println("value expected for"+ options[i].name +"option.\n");
+                                    return false;
+                                }
+                                options[i].value.delete(0, options[i].value.capacity()).append(args[argNum]);
+                                break;
+                        default:
+                                System.err.println("Option type error: {FLAG=0, NUM=1, STRING=2}");
+                                return false;
+                    }
+                }
+            }
+        }
+        
+        opt_fName      = temp_opt_fName.toString();
+        opt_locale     = temp_opt_locale.toString();
+        opt_rules      = temp_opt_rules.toString();
+        if (temp_opt_help.toString().equalsIgnoreCase("true")) {
+            opt_help = true;
+        }
+        opt_loopCount  = Integer.parseInt(temp_opt_loopCount.toString());
+        opt_iLoopCount = Integer.parseInt(temp_opt_iLoopCount.toString());
+        if (temp_opt_terse.toString().equalsIgnoreCase("true")) {
+            opt_terse = true;
+        }
+        if (temp_opt_qsort.toString().equalsIgnoreCase("true")) {
+            opt_qsort = true;
+        }
+        if (temp_opt_binsearch.toString().equalsIgnoreCase("true")) {
+            opt_binsearch = true;
+        }
+        if (temp_opt_icu.toString().equalsIgnoreCase("true")) {
+            opt_icu = true;
+        }
+        if (temp_opt_usekeys.toString().equalsIgnoreCase("true")) {
+            opt_usekeys = true;
+        }
+        if (temp_opt_strcmp.toString().equalsIgnoreCase("true")) {
+            opt_strcmp = true;
+        }
+        if (temp_opt_strcmpCPO.toString().equalsIgnoreCase("true")) {
+            opt_strcmpCPO = true;
+        }
+        if (temp_opt_keygen.toString().equalsIgnoreCase("true")) {
+            opt_keygen = true;
+        }
+        if (temp_opt_norm.toString().equalsIgnoreCase("true")) {
+            opt_norm = true;
+        }
+        if (temp_opt_french.toString().equalsIgnoreCase("true")) {
+            opt_french = true;
+        }
+        if (temp_opt_frenchoff.toString().equalsIgnoreCase("true")) {
+            opt_frenchoff = true;
+        }
+        if (temp_opt_shifted.toString().equalsIgnoreCase("true")) {
+            opt_shifted = true;
+        }
+        if (temp_opt_lower.toString().equalsIgnoreCase("true")) {
+            opt_lower = true;
+        }
+        if (temp_opt_upper.toString().equalsIgnoreCase("true")) {
+            opt_upper = true;
+        }
+        if (temp_opt_case.toString().equalsIgnoreCase("true")) {
+            opt_case = true;
+        }
+        opt_level      = Integer.parseInt(temp_opt_level.toString());
+        if (temp_opt_keyhist.toString().equalsIgnoreCase("true")) {
+            opt_keyhist = true;
+        }
+        if (temp_opt_itertest.toString().equalsIgnoreCase("true")) {
+            opt_itertest = true;
+        }
+        if (temp_opt_dump.toString().equalsIgnoreCase("true")) {
+            opt_dump = true;
+        }
+        if (temp_opt_java.toString().equalsIgnoreCase("true")) {
+            opt_java = true;
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Invoke the runtime's garbage collection procedure repeatedly
+     * until the amount of free memory stabilizes to within 10%.
+     */    
+    private void callGC() {
+        // From "Java Platform Performance".  This is the procedure
+        // recommended by Javasoft.
+        try {
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+            
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+        } catch (InterruptedException e) {}
+    }
+
+    //private boolean needCRLF = false;
+    
+    public int DOTMASK = 0x7FF;
+ 
+    void dot(int i) {
+        if ((i % DOTMASK) == 0) {
+            //needCRLF = true;
+            // I do not know why print the dot here
+            //System.out.print('.');
+        }
+    }
+    
+    String readDataLine(BufferedReader br) throws Exception {
+        String originalLine = "";
+        String line = "";
+        
+        try {
+            line = originalLine = br.readLine();
+            if (line == null) return null;
+            if (line.length() > 0 && line.charAt(0) == 0xFEFF) line = line.substring(1);
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+        } catch (Exception e) {
+            throw new Exception("Line \"{0}\",  \"{1}\"" + originalLine + " "
+                                + line + " " + e.toString());
+        }
+        return line;
+    }
+    
+    void readDataLines() {
+        // Read in  the input file.
+        //   File assumed to be utf-16.
+        //   Lines go onto heap buffers.  Global index array to line starts is created.
+        //   Lines themselves are null terminated.
+        //
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(opt_fName);
+            isr = new InputStreamReader(fis, "UTF-8");
+            br= new BufferedReader(isr, 32*1024);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(2);
+        }
+        
+        int counter = 0;
+        
+        list = new ArrayList();
+        while (true) {
+            String line = null;
+            try {
+                line = readDataLine(br);
+            } catch (Exception e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            
+            if (line == null) break;
+            if (line.length() == 0) continue;
+            dot(counter++);
+            list.add(line);
+        }
+        if (!opt_terse) {
+            System.out.println("Read " + counter + " lines in file");
+        }
+        
+        int size = list.size();
+        tests = new String [size];
+        
+        for (int i = 0; i < size; ++i) {
+            tests[i] = (String) list.get(i);
+        }
+    }
+    
+    /**
+     * Get the Collator Rules
+     * The Rule File format:
+     * 1. leading and trailing whitespaces will be omitted
+     * 2. lines with the leading character '#' will be treated as comments
+     * 3. File encoding is ISO-8859-1
+     */
+    String getCollationRules(String ruleFileName) {
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(opt_rules);
+            isr = new InputStreamReader(fis,"ISO-8859-1");
+            br= new BufferedReader(isr);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(2);
+        }
+        String rules = "";
+        String line = "";
+        while (true) {
+            try {
+                line = br.readLine();
+            } catch (IOException e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            if (line == null) {
+                break;
+            }
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+            rules = rules + line;
+        }
+        return rules;
+    }
+    
+    //Implementing qsort
+    void qSortImpl_java_usekeys(String src[], int fromIndex, int toIndex, java.text.Collator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(c.getCollationKey(src[low]), c.getCollationKey(middle)) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(c.getCollationKey(src[high]), c.getCollationKey(middle)) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_java_usekeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_java_usekeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    void qSortImpl_icu_usekeys(String src[], int fromIndex, int toIndex, com.ibm.icu.text.Collator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(c.getCollationKey(src[low]), c.getCollationKey(middle)) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(c.getCollationKey(src[high]), c.getCollationKey(middle)) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_icu_usekeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_icu_usekeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    void qSortImpl_nokeys(String src[], int fromIndex, int toIndex, Comparator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(src[low], middle, c) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(src[high], middle, c) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_nokeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_nokeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    int compare(String source, String target, Comparator c) {
+        globalCount++;
+        return c.compare(source, target);
+    }
+    
+    int compare(java.text.CollationKey source, java.text.CollationKey target) {
+        globalCount++;
+        return source.compareTo(target);
+    }
+    
+    int compare(com.ibm.icu.text.CollationKey source, com.ibm.icu.text.CollationKey target) {
+        globalCount++;
+        return source.compareTo(target);
+    } 
+    
+    //Class for command line option
+    static class OptionSpec {
+        String name;
+        int type;
+        StringBuffer value;
+        public OptionSpec(String name, int type, StringBuffer value) {
+            this.name = name;
+            this.type = type;
+            this.value = value;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
new file mode 100644
index 0000000..4aea48c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
@@ -0,0 +1,318 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.charset.CharsetProviderICU;
+
+/**
+ * @author ram
+ */
+public class ConverterPerformanceTest extends PerfTest {
+   public static void main(String[] args) throws Exception {
+       new ConverterPerformanceTest().run(args);
+   }
+   char[] unicodeBuffer = null;
+   byte[] encBuffer = null;
+
+   protected void setup(String[] args) {
+        try{
+            // read in the input file, being careful with a possible BOM
+            FileInputStream in = new FileInputStream(fileName);
+            BOMFreeReader reader = new BOMFreeReader(in, encoding);
+            unicodeBuffer = readToEOS(reader);
+            
+            // use java.nio to convert unicodeBuffer from char[] to byte[] 
+            CharBuffer source = CharBuffer.wrap(unicodeBuffer, 0, unicodeBuffer.length);
+            CharsetEncoder encoder = Charset.forName(encoding).newEncoder();
+            encoder.onMalformedInput(CodingErrorAction.REPORT);
+            encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+            ByteBuffer target = encoder.encode(source);
+            
+            // target.array() will probably return what we want, but lets take no chances
+            encBuffer = new byte[target.limit()];
+            for (int i=0; i<encBuffer.length; i++)
+                encBuffer[i] = target.get(i);
+            
+        } catch(Exception ex){
+            ex.printStackTrace();
+            throw new RuntimeException(ex.getMessage());
+        }
+
+        // we created some heavy objects, so lets try to clean up a little before running the tests
+        gc();
+   }
+
+   PerfTest.Function TestFromUnicodeStream() {
+        return new PerfTest.Function() {
+            public void call() {
+                try{
+                    ByteArrayOutputStream out = new ByteArrayOutputStream(unicodeBuffer.length * 10);
+                    OutputStreamWriter writer = new OutputStreamWriter(out, testName);
+                    writer.write(unicodeBuffer, 0, unicodeBuffer.length);
+                    writer.flush();
+                }catch(Exception e){
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+            public long getOperationsPerIteration() {
+                return unicodeBuffer.length;
+            }
+        };
+    }
+    PerfTest.Function TestToUnicodeStream() {
+        return new PerfTest.Function() {
+            char[] dst = new char[encBuffer.length];
+            public void call() {
+                try{
+                    ByteArrayInputStream is = new ByteArrayInputStream(encBuffer, 0, encBuffer.length);
+                    InputStreamReader reader = new InputStreamReader(is, testName);
+                    reader.read(dst, 0, dst.length);
+                    reader.close();
+                }catch(Exception e){
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+            public long getOperationsPerIteration() {
+                return encBuffer.length;
+            }
+        };
+    }
+/*
+    PerfTest.Function TestByteToCharConverter() { // decoder  charset.forname().newencoder().decode
+        try{
+            return new PerfTest.Function() {
+                char[] dst = new char[encBuffer.length];
+                int numOut =0;
+                ByteToCharConverter conv = ByteToCharConverter.getConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(encBuffer, 0, encBuffer.length, dst, 0,dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharToByteConverter() { // encoder charset.forname().newencoder().encode
+        try{
+            return new PerfTest.Function() {
+                byte[] dst = new byte[encBuffer.length];
+                int numOut =0;
+                CharToByteConverter conv = CharToByteConverter.getConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(unicodeBuffer, 0,unicodeBuffer.length,dst,0, dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestByteToCharConverterICU() { // decoder  charsetprovidericu.getdecoder
+        try{
+            return new PerfTest.Function() {
+                char[] dst = new char[encBuffer.length];
+                int numOut =0;
+                ByteToCharConverter conv = ByteToCharConverterICU.createConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(encBuffer, 0, encBuffer.length, dst, 0,dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharToByteConverterICU() {
+        try{
+            return new PerfTest.Function() {
+                byte[] dst = new byte[encBuffer.length*2];
+                int numOut =0;
+                CharToByteConverter conv = CharToByteConverterICU.createConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(unicodeBuffer, 0,unicodeBuffer.length,dst,0, dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+*/
+    PerfTest.Function TestCharsetDecoder() {
+        try{
+            return new PerfTest.Function() {
+                CharBuffer outBuf = CharBuffer.allocate(unicodeBuffer.length);
+                Charset myCharset = Charset.forName(testName);
+                ByteBuffer srcBuf = ByteBuffer.wrap(encBuffer,0,encBuffer.length);
+                CharsetDecoder decoder = myCharset.newDecoder();
+
+                public void call() {
+                    try{
+                        decoder.decode(srcBuf,outBuf,false);
+                        decoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetEncoder() {
+        try{
+            return new PerfTest.Function() {
+                ByteBuffer outBuf = ByteBuffer.allocate(encBuffer.length);
+                Charset myCharset = Charset.forName(testName);
+                CharBuffer srcBuf = CharBuffer.wrap(unicodeBuffer,0,unicodeBuffer.length);
+                CharsetEncoder encoder = myCharset.newEncoder();
+
+                public void call() {
+                    try{
+                        encoder.encode(srcBuf,outBuf,false);
+                        encoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetDecoderICU() {
+        try{
+            return new PerfTest.Function() {
+                CharBuffer outBuf = CharBuffer.allocate(unicodeBuffer.length);
+                Charset myCharset = new CharsetProviderICU().charsetForName(testName);
+                ByteBuffer srcBuf = ByteBuffer.wrap(encBuffer,0,encBuffer.length);
+                CharsetDecoder decoder = myCharset.newDecoder();
+
+                public void call() {
+                    try{
+                        decoder.decode(srcBuf,outBuf,false);
+                        decoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetEncoderICU() {
+        try{
+            return new PerfTest.Function() {
+                ByteBuffer outBuf = ByteBuffer.allocate(encBuffer.length);
+                Charset myCharset = new CharsetProviderICU().charsetForName(testName);
+                CharBuffer srcBuf = CharBuffer.wrap(unicodeBuffer,0,unicodeBuffer.length);
+                CharsetEncoder encoder = myCharset.newEncoder();
+
+                public void call() {
+                    try{
+                        encoder.encode(srcBuf,outBuf,false);
+                        encoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/Dataset.pm b/src/com/ibm/icu/dev/test/perf/Dataset.pm
new file mode 100644
index 0000000..1e08efc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/Dataset.pm
@@ -0,0 +1,86 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+package Dataset;
+use Statistics::Descriptive;
+use Statistics::Distributions;
+use strict;
+
+# Create a new Dataset with the given data.
+sub new {
+    my ($class) = shift;
+    my $self = bless {
+        _data => \@_,
+        _scale => 1.0,
+        _mean => 0.0,
+        _error => 0.0,
+    }, $class;
+
+    my $n = @_;
+    
+    if ($n >= 1) {
+        my $stats = Statistics::Descriptive::Full->new();
+        $stats->add_data(@{$self->{_data}});
+        $self->{_mean} = $stats->mean();
+
+        if ($n >= 2) {
+            # Use a t distribution rather than Gaussian because (a) we
+            # assume an underlying normal dist, (b) we do not know the
+            # standard deviation -- we estimate it from the data, and (c)
+            # we MAY have a small sample size (also works for large n).
+            my $t = Statistics::Distributions::tdistr($n-1, 0.005);
+            $self->{_error} = $t * $stats->standard_deviation();
+        }
+    }
+
+    $self;
+}
+
+# Set a scaling factor for all data; 1.0 means no scaling.
+# Scale must be > 0.
+sub setScale {
+    my ($self, $scale) = @_;
+    $self->{_scale} = $scale;
+}
+
+# Multiply the scaling factor by a value.
+sub scaleBy {
+    my ($self, $a) = @_;
+    $self->{_scale} *= $a;
+}
+
+# Return the mean.
+sub getMean {
+    my $self = shift;
+    return $self->{_mean} * $self->{_scale};
+}
+
+# Return a 99% error based on the t distribution.  The dataset
+# is desribed as getMean() +/- getError().
+sub getError {
+    my $self = shift;
+    return $self->{_error} * $self->{_scale};
+}
+
+# Divide two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub divide {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $minratio = ($self->{_mean} - $self->{_error}) /
+                   ($rhs->{_mean} + $rhs->{_error});
+    my $maxratio = ($self->{_mean} + $self->{_error}) /
+                   ($rhs->{_mean} - $rhs->{_error});
+
+    my $result = Dataset->new();
+    $result->{_mean} = ($minratio + $maxratio) / 2;
+    $result->{_error} = $result->{_mean} - $minratio;
+    $result->{_scale} = $self->{_scale} / $rhs->{_scale};
+    $result;
+}
+
+1;
diff --git a/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
new file mode 100644
index 0000000..4e23127
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
@@ -0,0 +1,115 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.  * 
+ * All Rights Reserved.                                                         *
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * @author ajmacher
+ */
+public class DateFormatPerformanceTest extends PerfTest {
+    private String pattern;
+
+    private String dateString;
+
+    private Date date;
+
+    private com.ibm.icu.text.SimpleDateFormat[] icuDateFormat;
+
+    private java.text.SimpleDateFormat[] jdkDateFormat;
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            if (args.length == 0 || args.length > 2) {
+                throw new UsageException();
+            }
+
+            pattern = args[0];
+
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            icuDateFormat = new com.ibm.icu.text.SimpleDateFormat[threads];
+            jdkDateFormat = new java.text.SimpleDateFormat[threads];
+            for (int i = 0; i < threads; i++) {
+                icuDateFormat[i] = new com.ibm.icu.text.SimpleDateFormat(pattern, locale);
+                jdkDateFormat[i] = new java.text.SimpleDateFormat(pattern, locale);
+            }
+
+            if (args.length == 2) {
+                dateString = args[1];
+                date = icuDateFormat[0].parse(dateString);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    PerfTest.Function TestICUConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new com.ibm.icu.text.SimpleDateFormat(pattern, locale);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new java.text.SimpleDateFormat(pattern, locale);
+            }
+        };
+    }
+
+    PerfTest.Function TestICUParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    icuDateFormat[id].parse(dateString);
+                } catch (ParseException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    jdkDateFormat[id].parse(dateString);
+                } catch (ParseException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestICUFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                icuDateFormat[id].format(date);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                jdkDateFormat[id].format(date);
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
new file mode 100644
index 0000000..505aa5a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
@@ -0,0 +1,119 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and * others.
+ * All Rights Reserved. *
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.text.ParseException;
+import java.util.Locale;
+
+/**
+ * @author ajmacher
+ */
+public class DecimalFormatPerformanceTest extends PerfTest {
+    String pattern;
+
+    String decimalAsString;
+
+    Number decimalAsNumber;
+
+    com.ibm.icu.text.DecimalFormat[] icuDecimalFormat;
+
+    java.text.DecimalFormat[] javaDecimalFormat;
+
+    public static void main(String[] args) throws Exception {
+        new DecimalFormatPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            if (args.length == 0 || args.length > 2) {
+                throw new UsageException();
+            }
+
+            pattern = args[0];
+
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            icuDecimalFormat = new com.ibm.icu.text.DecimalFormat[threads];
+            javaDecimalFormat = new java.text.DecimalFormat[threads];
+            for (int i = 0; i < threads; i++) {
+                icuDecimalFormat[i] = new com.ibm.icu.text.DecimalFormat(pattern,
+                        new com.ibm.icu.text.DecimalFormatSymbols(locale));
+                javaDecimalFormat[i] = new java.text.DecimalFormat(pattern,
+                        new java.text.DecimalFormatSymbols(locale));
+            }
+
+            if (args.length == 2) {
+                decimalAsString = args[1];
+                decimalAsNumber = icuDecimalFormat[0].parse(decimalAsString);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    PerfTest.Function TestICUConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new com.ibm.icu.text.DecimalFormat(pattern,
+                        new com.ibm.icu.text.DecimalFormatSymbols(locale));
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new java.text.DecimalFormat(pattern, new java.text.DecimalFormatSymbols(locale));
+            }
+        };
+    }
+
+    PerfTest.Function TestICUParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    icuDecimalFormat[id].parse(decimalAsString);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    javaDecimalFormat[id].parse(decimalAsString);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestICUFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                icuDecimalFormat[id].format(decimalAsNumber);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                javaDecimalFormat[id].format(decimalAsNumber);
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
new file mode 100644
index 0000000..ddcce34
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -0,0 +1,706 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines           *
+* Corporation and others.  All Rights Reserved.                      *
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.text.Normalizer;
+
+public class NormalizerPerformanceTest extends PerfTest {
+    
+    String[] NFDFileLines;
+    String[] NFCFileLines;
+    String[] fileLines;
+    
+    
+    public static void main(String[] args) throws Exception {
+        new NormalizerPerformanceTest().run(args);
+    }
+    
+    protected void setup(String[] args) {
+        fileLines = readLines(fileName, encoding, bulk_mode);
+        NFDFileLines = normalizeInput(fileLines, Normalizer.NFD);
+        NFCFileLines = normalizeInput(fileLines, Normalizer.NFC);
+    }
+    
+    // Test NFC Performance
+    PerfTest.Function TestICU_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test NFD Performance
+    PerfTest.Function TestICU_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+
+    // Test NFC Performance
+    PerfTest.Function TestJDK_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    normalizerTest(NFDFileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    totalChars = totalChars + NFDFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+  
+    PerfTest.Function TestJDK_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    normalizerTest(NFCFileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    totalChars = totalChars + NFCFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++)
+                    normalizerTest(fileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++)
+                    totalChars = totalChars + fileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test NFD Performance
+    PerfTest.Function TestJDK_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    normalizerTest(NFDFileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    totalChars = totalChars + NFDFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    normalizerTest(NFCFileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    totalChars = totalChars + NFCFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++)
+                    normalizerTest(fileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++)
+                    totalChars = totalChars + fileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    // Test FCD Performance
+    PerfTest.Function TestICU_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+
+    PerfTest.Function TestICU_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test Quick Check Performance
+    PerfTest.Function TestQC_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.quickCheck(NFDFileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.quickCheck(NFCFileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.quickCheck(fileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.quickCheck(NFDFileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.quickCheck(NFCFileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.quickCheck(fileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.quickCheck(NFDFileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.quickCheck(NFCFileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.quickCheck(fileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test isNormalized Performance
+    PerfTest.Function TestIsNormalized_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.isNormalized(NFCFileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.isNormalized(fileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.isNormalized(NFCFileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.isNormalized(fileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.isNormalized(NFCFileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.isNormalized(fileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+      
+    /*
+      private void printUsage() {
+        System.out.println("Usage: " + this.getClass().getName() + " [OPTIONS] fileName\n"
+                            + "\t-f or --fileName  \tfile to be used as test data\n"
+                            + "\t-s or --sourceDir \tsource directory for files followed by path\n"
+                            + "\t-e or --encoding  \tencoding of source files\n"
+                            + "\t-b or --bulkMode  \tnormalize whole file at once\n"
+                            + "\t-l or --lineMode  \tnormalize file one line at a time\n"
+            );
+        System.exit(1);
+    }
+    */
+    
+    String[] normalizeInput(String[] src, Normalizer.Mode mode) {
+        String[] dest = new String[src.length];
+        for (int i = 0; i < src.length; i++) {
+            dest[i] = Normalizer.normalize(src[i], mode);
+        }
+        
+        return dest;
+    }
+    
+    /*
+    void normalizerInit(boolean compose) {
+        Class normalizer;
+        boolean sun;
+        
+        try {
+            normalizer = Class.forName("java.text.Normalizer");
+            sun = false;
+        } catch (ClassNotFoundException ex) {
+            try {
+                normalizer = Class.forName("sun.text.Normalizer");
+                sun = true;
+            } catch (ClassNotFoundException ex2) {
+                throw new RuntimeException(
+                        "Could not find sun.text.Normalizer nor java.text.Normalizer and their required subclasses");
+            }
+        }
+        
+        try {
+            if (sun) {
+                normalizerArgs = new Object[] { null, null, new Integer(0) };
+                normalizerArgs[1] = normalizer.getField(compose ? "COMPOSE" : "DECOMP").get(null);
+                normalizerMethod = normalizer.getMethod("normalize", new Class[] { String.class, normalizerArgs[1].getClass(), int.class });
+                // sun.text.Normalizer.normalize(line, compose
+                //   ? sun.text.Normalizer.COMPOSE
+                //   : sun.text.Normalizer.DECOMP, 0);
+            } else {
+                normalizerArgs = new Object[] { null, null };
+                normalizerArgs[1] = Class.forName("java.text.Normalizer$Form").getField(compose ? "NFC" : "NFD").get(null);
+                normalizerMethod = normalizer.getMethod("normalize", new Class[] { CharSequence.class, normalizerArgs[1].getClass()});
+                // java.text.Normalizer.normalize(line, compose
+                //   ? java.text.Normalizer.Form.NFC
+                //   : java.text.Normalizer.Form.NFD);
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException("Reflection error -- could not load the JDK normalizer (" + normalizer.getName() + ")");
+        }
+    }
+    
+    void normalizerTest(String line) {
+        try {
+            normalizerArgs[0] = line;
+            normalizerMethod.invoke(line, normalizerArgs);
+        } catch (Exception ex) {
+            if (ex instanceof InvocationTargetException) {
+                Throwable cause = ex.getCause();
+                cause.printStackTrace();
+                throw new RuntimeException(cause.getMessage());
+            } else {
+                throw new RuntimeException("Reflection error -- could not run the JDK normalizer");
+            }
+        }
+    }
+    */
+
+    void normalizerTest(String line, boolean compose) {
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14) || defined(J2SE15)
+ sun.text.Normalizer.normalize(line, compose
+      ? sun.text.Normalizer.COMPOSE
+      : sun.text.Normalizer.DECOMP, 0);
+//#else
+//## java.text.Normalizer.normalize(line, compose
+//##      ? java.text.Normalizer.Form.NFC
+//##      : java.text.Normalizer.Form.NFD);
+//#endif
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/PerfTest.java b/src/com/ibm/icu/dev/test/perf/PerfTest.java
new file mode 100644
index 0000000..b71e28c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/PerfTest.java
@@ -0,0 +1,932 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PushbackInputStream;
+import java.io.Reader;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.dev.tool.UOption;
+import com.ibm.icu.impl.LocaleUtility;
+
+/**
+ * Base class for performance testing framework. To use, the subclass can simply
+ * define one or more instance methods with names beginning with "test" (case
+ * ignored). The prototype of the method is
+ *
+ * PerfTest.Function testTheName()
+ *
+ * The actual performance test will execute on the returned Commond object
+ * (refer to Command Pattern). To call a test from command line, the 'test'
+ * prefix of the test method name can be ignored/removed.
+ *
+ * In addition, the subclass should define a main() method that calls
+ * PerfTest.run() as defined here.
+ *
+ * If the subclasses uses any command line arguments (beyond those handled
+ * automatically by this calss) then it should override PerfTest.setup() to
+ * handle its arguments. If the subclasse needs more sophisticated management
+ * for controlling finding/calling test method, it can replace the default
+ * implementation for PerfTest.testProvider before calling PerfTest.run().
+ *
+ * Example invocation: java -cp classes -verbose:gc
+ * com.ibm.icu.dev.test.perf.UnicodeSetPerf --gc --passes 4 --iterations 100
+ * UnicodeSetAdd [[:l:][:c:]]
+ *
+ * Example output: [GC 511K->192K(1984K), 0.0086170 secs] [GC 704K->353K(1984K),
+ * 0.0059619 secs] [Full GC 618K->371K(1984K), 0.0242779 secs] [Full GC
+ * 371K->371K(1984K), 0.0228649 secs] = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11977 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 12047 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11987 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11978 1109044
+ *
+ * The [] lines are emitted by the JVM as a result of the -verbose:gc switch.
+ *
+ * Lines beginning with '=' are emitted by PerfTest: = testUnicodeSetAdd begin
+ * 100 A 'begin' statement contains the name of the setup method, which
+ * determines what test function is measures, and the number of iterations that
+ * will be times. = testUnicodeSetAdd end 12047 1109044 An 'end' statement gives
+ * the name of the setup method again, and then two integers. The first is the
+ * total elapsed time in milliseconds, and the second is the number of events
+ * per iteration. In this example, the time per event is 12047 / (100 * 1109044)
+ * or 108.6 ns/event.
+ *
+ * Raw times are given as integer ms, because this is what the system measures.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public abstract class PerfTest {
+    // Command-line options set these:
+    protected boolean verbose;
+    protected String sourceDir;
+    protected String fileName;
+
+    // protected String resolvedFileName;
+    protected String encoding;
+    protected String testName;
+    protected boolean uselen;
+    protected int iterations;
+    protected int passes;
+    protected int time;
+    protected boolean line_mode;
+    protected boolean bulk_mode;
+    protected Locale locale;
+    protected boolean doPriorGC;
+    protected int threads;
+
+    protected TestCmdProvider testProvider = new TestPrefixProvider(this);
+
+    static interface TestCmdProvider {
+        /**
+         * @return The names for all available test.
+         */
+        public Set getAllTestCmdNames();
+
+        /**
+         * @param name
+         * @return Whether the given name is a test name. The implementation may
+         *         have more sophisticated naming control here.
+         *         TestCmdProvider.isTestCmd() != Set.contains()
+         */
+        public boolean isTestCmd(String name);
+
+        /**
+         * @param name
+         * @return the test Command or null
+         */
+        public PerfTest.Function getTestCmd(String name);
+    }
+
+    /**
+     * Treat all method beginning with 'test' prefix (ignoring case) for given
+     * object as the test methods.
+     */
+    static class TestPrefixProvider implements TestCmdProvider {
+        private Map theTests = null; // Map<string(no case), string(with case)>
+        private Set orgNames = null; // shadow reference, ==theTests, for better output
+        private Object refer;
+
+        TestPrefixProvider(Object theProvider) {
+            refer = theProvider;
+        }
+
+        public Set getAllTestCmdNames() {
+            if (theTests == null) {
+                theTests = new HashMap();
+                orgNames = new HashSet();
+                Method[] methods = refer.getClass().getDeclaredMethods();
+                for (int i = 0; i < methods.length; i++) {
+                    String org = methods[i].getName();
+                    String name = org.toLowerCase(); // ignoring case
+                    // beginning with 'test'
+                    // Note: methods named 'test()' are ignored
+                    if (name.length() > 4 && name.startsWith("test")) {
+                        if (theTests.containsKey(name)) {
+                            throw new Error(
+                                    "Duplicate method name ignoring case: "
+                                            + name);
+                        }
+                        theTests.put(name, org);
+                        orgNames.add(org);
+                    }
+                }
+            }
+            return orgNames; // begining with 'test', keeping case
+        }
+
+        /**
+         * The given name will map to a method of the same name, or a method
+         * named "test" + name. Case is ignored.
+         */
+        private String isTestCmd_impl(String name) {
+            getAllTestCmdNames();
+            String tn1 = name.toLowerCase();
+            String tn2 = "test" + tn1;
+            if (theTests.containsKey(tn1)) {
+                return tn1;
+            } else if (theTests.containsKey(tn2)) {
+                return tn2;
+            }
+            return null;
+        }
+
+        public boolean isTestCmd(String name) {
+            return isTestCmd_impl(name) != null;
+        }
+
+        public Function getTestCmd(String aname) {
+            String name = (String) theTests.get(isTestCmd_impl(aname));
+            if (name == null) {
+                return null;
+            }
+
+            try {
+                Method m = refer.getClass().getDeclaredMethod(name,
+                        (Class[]) null);
+                return (Function) m.invoke(refer, new Object[] {});
+            } catch (Exception e) {
+                throw new Error(
+                        "TestPrefixProvider implementation error. Finding: "
+                                + name, e);
+            }
+        }
+    }
+
+    /**
+     * Subclasses of PerfTest will need to create subclasses of Function that
+     * define a call() method which contains the code to be timed. They then
+     * call setTestFunction() in their "Test..." method to establish this as the
+     * current test functor.
+     */
+    public abstract static class Function {
+
+        /**
+         * Subclasses should implement this method to do the action to be
+         * measured if the action is thread-safe
+         */
+        public void call() { call(0); }
+
+        /**
+         * Subclasses should implement this method if the action is not thread-safe
+         */
+        public void call(int i) { call(); }
+
+        /**
+         * Subclasses may implement this method to return positive integer
+         * indicating the number of operations in a single call to this object's
+         * call() method. If subclasses do not override this method, the default
+         * implementation returns 1.
+         */
+        public long getOperationsPerIteration() {
+            return 1;
+        }
+
+        /**
+         * Subclasses may implement this method to return either positive or
+         * negative integer indicating the number of events in a single call to
+         * this object's call() method. If subclasses do not override this
+         * method, the default implementation returns -1, indicating that events
+         * are not applicable to this test. e.g: Number of breaks / iterations
+         * for break iterator
+         */
+        public long getEventsPerIteration() {
+            return -1;
+        }
+
+        /**
+         * Call call() n times in a tight loop and return the elapsed
+         * milliseconds. If n is small and call() is fast the return result may
+         * be zero. Small return values have limited meaningfulness, depending
+         * on the underlying VM and OS.
+         */
+        public final long time(long n) {
+            long start, stop;
+            start = System.currentTimeMillis();
+            while (n-- > 0) {
+                call();
+            }
+            stop = System.currentTimeMillis();
+            return stop - start; // ms
+        }
+        
+        
+        /**
+         * init is called each time before looping through call
+         */
+        public void init() {}
+        
+        
+        public final int getID() {
+            return id;
+        }
+        
+        public final void setID(int id) {
+            this.id = id;
+        }
+        
+        private int id;
+    }
+    
+    private class FunctionRunner implements Runnable {
+        public FunctionRunner(Function f, long loops, int id) {
+            this.f = f;
+            this.loops = loops;
+            this.id = id;
+        }
+
+        public void run() {
+            long n = loops;
+            while (n-- > 0)
+                f.call(id);
+        }
+        
+        private Function f;
+
+        private long loops;
+        private int id;
+    }
+    
+
+    /**
+     * Exception indicating a usage error.
+     */
+    public static class UsageException extends Exception {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -1201256240606806242L;
+
+        public UsageException(String message) {
+            super(message);
+        }
+
+        public UsageException() {
+            super();
+        }
+    }
+
+    /**
+     * Constructor.
+     */
+    protected PerfTest() {
+    }
+
+    /**
+     * Framework method. Default implementation does not parse any extra
+     * arguments. Subclasses may override this to parse extra arguments.
+     * Subclass implementations should NOT call the base class implementation.
+     */
+    protected void setup(String[] args) {
+        if (args.length > 0) {
+            throw new RuntimeException("Extra arguments received");
+        }
+    }
+
+    /**
+     * These must be kept in sync with getOptions().
+     */
+    static final int HELP1 = 0;
+    static final int HELP2 = 1;
+    static final int VERBOSE = 2;
+    static final int SOURCEDIR = 3;
+    static final int ENCODING = 4;
+    static final int USELEN = 5;
+    static final int FILE_NAME = 6;
+    static final int PASSES = 7;
+    static final int ITERATIONS = 8;
+    static final int TIME = 9;
+    static final int LINE_MODE = 10;
+    static final int BULK_MODE = 11;
+    static final int LOCALE = 12;
+    static final int TEST_NAME = 13;
+    static final int THREADS = 14;
+
+    // Options above here are identical to those in C; keep in sync with C
+    // Options below here are unique to Java; shift down as necessary
+    static final int GARBAGE_COLLECT = 14;
+    static final int LIST = 15;
+
+    UOption[] getOptions() {
+        return new UOption[] {
+                UOption.HELP_H(),
+                UOption.HELP_QUESTION_MARK(),
+                UOption.VERBOSE(),
+                UOption.SOURCEDIR(),
+                UOption.ENCODING(),
+                UOption.DEF("uselen",     'u', UOption.NO_ARG),
+                UOption.DEF("filename",   'f', UOption.REQUIRES_ARG),
+                UOption.DEF("passes",     'p', UOption.REQUIRES_ARG),
+                UOption.DEF("iterations", 'i', UOption.REQUIRES_ARG),
+                UOption.DEF("time",       't', UOption.REQUIRES_ARG),
+                UOption.DEF("line-mode",  'l', UOption.NO_ARG),
+                UOption.DEF("bulk-mode",  'b', UOption.NO_ARG),
+                UOption.DEF("locale",     'L', UOption.REQUIRES_ARG),
+                UOption.DEF("testname",   'T', UOption.REQUIRES_ARG),
+                UOption.DEF("threads",    'r', UOption.REQUIRES_ARG),
+
+                // Options above here are identical to those in C; keep in sync
+                // Options below here are unique to Java
+
+                UOption.DEF("gc", 'g', UOption.NO_ARG),
+                UOption.DEF("list", (char) -1, UOption.NO_ARG), };
+    }
+
+    /**
+     * Subclasses should call this method in their main(). run() will in turn
+     * call setup() with any arguments it does not parse. This method parses the
+     * command line and runs the tests given on the command line, with the given
+     * parameters. See the class description for details.
+     */
+    protected final void run(String[] args) throws Exception {
+        Set testList = parseOptions(args);
+
+        // Run the tests
+        for (Iterator iter = testList.iterator(); iter.hasNext();) {
+            String meth = (String) iter.next();
+
+            // Call meth to set up the test
+            // long eventsPerCall = -1;
+            Function testFunction = testProvider.getTestCmd(meth);
+            if (testFunction == null) {
+                throw new RuntimeException(meth
+                        + " failed to return a test function");
+            }
+            if (testFunction.getOperationsPerIteration() < 1) {
+                throw new RuntimeException(meth
+                        + " returned an illegal operations/iteration()");
+            }
+
+            long t;
+            // long b = System.currentTimeMillis();
+            long loops = getIteration(meth, testFunction);
+            // System.out.println("The guess cost: " + (System.currentTimeMillis() - b)/1000. + " s.");
+
+            for (int j = 0; j < passes; ++j) {
+                long events = -1;
+                if (verbose) {
+                    if (iterations > 0) {
+                        System.out.println("= " + meth + " begin " + iterations);
+                    } else {
+                        System.out.println("= " + meth + " begin " + time + " seconds");
+                    }
+                } else {
+                    System.out.println("= " + meth + " begin ");
+                }
+
+                t = performLoops(testFunction, loops);
+                
+                events = testFunction.getEventsPerIteration();
+
+                if (verbose) {
+                    if (events == -1) {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " loops: " + loops + " operations: "
+                                + testFunction.getOperationsPerIteration());
+                    } else {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " loops: " + loops + " operations: "
+                                + testFunction.getOperationsPerIteration() + " events: " + events);
+                    }
+                } else {
+                    if (events == -1) {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " " + loops + " "
+                                + testFunction.getOperationsPerIteration());
+                    } else {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " " + loops + " "
+                                + testFunction.getOperationsPerIteration() + " " + events);
+                    }
+                }
+
+            }
+        }
+    }
+
+    /**
+     * @param args
+     * @return the method list to call
+     * @throws UsageException
+     */
+    private Set parseOptions(String[] args) throws UsageException {
+
+        doPriorGC = false;
+        encoding = "";
+        uselen = false;
+        fileName = null;
+        sourceDir = null;
+        line_mode = false;
+        verbose = false;
+        bulk_mode = false;
+        passes = iterations = time = -1;
+        locale = null;
+        testName = null;
+        threads = 1;
+
+        UOption[] options = getOptions();
+        int remainingArgc = UOption.parseArgs(args, options);
+
+        if (args.length == 0 || options[HELP1].doesOccur || options[HELP2].doesOccur)
+            throw new UsageException();
+
+        if (options[LIST].doesOccur) {
+            System.err.println("Available tests:");
+            Set testNames = testProvider.getAllTestCmdNames();
+            for (Iterator iter = testNames.iterator(); iter.hasNext();) {
+                String name = (String) iter.next();
+                System.err.println(" " + name);
+            }
+            System.exit(0);
+        }
+
+        if (options[TIME].doesOccur && options[ITERATIONS].doesOccur)
+            throw new UsageException("Cannot specify both '-t <seconds>' and '-i <iterations>'");
+        else if (!options[TIME].doesOccur && !options[ITERATIONS].doesOccur)
+            throw new UsageException("Either '-t <seconds>' or '-i <iterations>' must be specified");
+        else if (options[ITERATIONS].doesOccur) {
+            try {
+                iterations = Integer.parseInt(options[ITERATIONS].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-i <iterations>' requires an integer number of iterations");
+            }
+        } else { //if (options[TIME].doesOccur)
+            try {
+                time = Integer.parseInt(options[TIME].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-r <seconds>' requires an integer number of seconds");
+            }
+        }
+
+        if (!options[PASSES].doesOccur)
+            throw new UsageException("'-p <passes>' must be specified");
+        else
+            passes = Integer.parseInt(options[PASSES].value);
+
+        if (options[LINE_MODE].doesOccur && options[BULK_MODE].doesOccur)
+            throw new UsageException("Cannot specify both '-l' (line mode) and '-b' (bulk mode)");
+
+        if (options[THREADS].doesOccur) {
+            try {
+                threads = Integer.parseInt(options[THREADS].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-r <threads>' requires an integer number of threads");
+            }
+            if (threads <= 0)
+                throw new UsageException("'-r <threads>' requires an number of threads greater than 0");
+        }
+        
+        line_mode = options[LINE_MODE].doesOccur;
+        bulk_mode = options[BULK_MODE].doesOccur;
+        verbose   = options[VERBOSE].doesOccur;
+        uselen    = options[USELEN].doesOccur;
+        doPriorGC = options[GARBAGE_COLLECT].doesOccur;
+
+        if (options[SOURCEDIR].doesOccur) sourceDir = options[SOURCEDIR].value;
+        if (options[ENCODING].doesOccur)  encoding  = options[ENCODING].value;
+        if (options[FILE_NAME].doesOccur) fileName  = options[FILE_NAME].value;
+        if (options[TEST_NAME].doesOccur) testName  = options[TEST_NAME].value;
+        if (options[LOCALE].doesOccur)    locale    = LocaleUtility.getLocaleFromName(options[LOCALE].value);
+
+
+        // build the test list
+        Set testList = new HashSet();
+        int i, j;
+        for (i = 0; i < remainingArgc; ++i) {
+            // is args[i] a method name?
+            if (testProvider.isTestCmd(args[i])) {
+                testList.add(args[i]);
+            } else {
+                // args[i] is neither a method name nor a number. Pass
+                // everything from here on through to the subclass via
+                // setup().
+                break;
+            }
+        }
+
+        // if no tests were specified, put all the tests in the test list
+        if (testList.size() == 0) {
+            Set testNames = testProvider.getAllTestCmdNames();
+            Iterator iter = testNames.iterator();
+            while (iter.hasNext())
+                testList.add((String)iter.next());
+        }
+
+        // pass remaining arguments, if any, through to the subclass via setup() method.
+        String[] subclassArgs = new String[remainingArgc - i];
+        for (j = 0; i < remainingArgc; j++)
+            subclassArgs[j] = args[i++];
+        setup(subclassArgs);
+
+        // Put the heap in a consistent state
+        if (doPriorGC)
+            gc();
+
+        return testList;
+    }
+
+    /**
+     * Translate '-t time' to iterations (or just return '-i iteration')
+     *
+     * @param meth
+     * @param fn
+     * @return rt
+     */
+    private long getIteration(String methName, Function fn) throws InterruptedException {
+        long iter = 0;
+        if (time < 0) { // && iterations > 0
+            iter = iterations;
+        } else { // && iterations < 0
+            // Translate time to iteration
+            // Assuming there is a linear relation between time and iterations
+
+            if (verbose) {
+                System.out.println("= " + methName + " calibrating " + time
+                        + " seconds");
+            }
+
+            long base = time * 1000;
+            // System.out.println("base :" + base);
+            long seed = 1;
+            long t = 0;
+            while (t < base * 0.9 || base * 1.1 < t) { // + - 10%
+                if (iter == 0 || t == 0) {
+                    iter = seed; // start up from 1
+                    seed *= 100; // if the method is too fast (t == 0),
+                    // multiply 100 times
+                    // 100 is rational because 'base' is always larger than 1000
+                } else {
+                    // If 't' is large enough, use linear function to calculate
+                    // new iteration
+                    //
+                    // new iter(base) old iter
+                    // -------------- = -------- = k
+                    // new time old time
+                    //
+                    // System.out.println("before guess t: " + t);
+                    // System.out.println("before guess iter: " + iter);
+                    iter = (long) ((double) iter / t * base); // avoid long
+                    // cut, eg. 1/10
+                    // == 0
+                    if (iter == 0) {
+                        throw new RuntimeException(
+                                "Unable to converge on desired duration");
+                    }
+                }
+                t = performLoops(fn, iter);
+            }
+            // System.out.println("final t : " + t);
+            // System.out.println("final i : " + iter);
+        }
+        return iter;
+    }
+    
+    
+    private long performLoops(Function function, long loops) throws InterruptedException {
+        function.init();
+        if (threads > 1) {
+            Thread[] threadList = new Thread[threads];
+            for (int i=0; i<threads; i++)
+                threadList[i] = new Thread(new FunctionRunner(function, loops, i));
+            
+            long start = System.currentTimeMillis();
+            for (int i=0; i<threads; i++)
+                threadList[i].start();
+            for (int i=0; i<threads; i++)
+                threadList[i].join();
+            return System.currentTimeMillis() - start;
+            
+        } else {
+            return function.time(loops); // ms
+        }
+    }
+    
+
+    /**
+     * Invoke the runtime's garbage collection procedure repeatedly until the
+     * amount of free memory stabilizes to within 10%.
+     */
+    protected void gc() {
+        if (false) {
+            long last;
+            long free = 1;
+            Runtime runtime = Runtime.getRuntime();
+            do {
+                runtime.gc();
+                last = free;
+                free = runtime.freeMemory();
+            } while (((double) Math.abs(free - last)) / free > 0.1);
+            // Wait for the change in free memory to drop under 10%
+            // between successive calls.
+        }
+
+        // From "Java Platform Performance". This is the procedure
+        // recommended by Javasoft.
+        try {
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+        } catch (InterruptedException e) {
+        }
+    }
+
+
+    public static char[] readToEOS(Reader reader) {
+        ArrayList vec = new ArrayList();
+        int count = 0;
+        int pos = 0;
+        final int MAXLENGTH = 0x8000; // max buffer size - 32K
+        int length = 0x80; // start with small buffers and work up
+        do {
+            pos = 0;
+            length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+            char[] buffer = new char[length];
+            try {
+                do {
+                    int n = reader.read(buffer, pos, length - pos);
+                    if (n == -1) {
+                        break;
+                    }
+                    pos += n;
+                } while (pos < length);
+            }
+            catch (IOException e) {
+            }
+            vec.add(buffer);
+            count += pos;
+        } while (pos == length);
+
+        char[] data = new char[count];
+        pos = 0;
+        for (int i = 0; i < vec.size(); ++i) {
+            char[] buf = (char[]) vec.get(i);
+            int len = Math.min(buf.length, count - pos);
+            System.arraycopy(buf, 0, data, pos, len);
+            pos += len;
+        }
+        return data;
+    }
+    public static byte[] readToEOS(InputStream stream) {
+
+        ArrayList vec = new ArrayList();
+        int count = 0;
+        int pos = 0;
+        final int MAXLENGTH = 0x8000; // max buffer size - 32K
+        int length = 0x80; // start with small buffers and work up
+        do {
+            pos = 0;
+            length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+            byte[] buffer = new byte[length];
+            try {
+                do {
+                    int n = stream.read(buffer, pos, length - pos);
+                    if (n == -1) {
+                        break;
+                    }
+                    pos += n;
+                } while (pos < length);
+            }
+            catch (IOException e) {
+            }
+            vec.add(buffer);
+            count += pos;
+        } while (pos == length);
+
+
+        byte[] data = new byte[count];
+        pos = 0;
+        for (int i = 0; i < vec.size(); ++i) {
+            byte[] buf = (byte[]) vec.get(i);
+            int len = Math.min(buf.length, count - pos);
+            System.arraycopy(buf, 0, data, pos, len);
+            pos += len;
+        }
+        return data;
+    }
+
+    protected String[] readLines(String filename, String srcEncoding, boolean bulkMode) {
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(filename);
+            isr = new InputStreamReader(fis, srcEncoding);
+            br = new BufferedReader(isr);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(1);
+        }
+        ArrayList list = new ArrayList();
+        while (true) {
+            String line = null;
+            try {
+                line = readDataLine(br);
+            } catch (Exception e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            if (line == null) break;
+            if (line.length() == 0) continue;
+            list.add(line);
+        }
+
+        int size = list.size();
+        String[] lines = null;
+
+        if (bulkMode) {
+            lines = new String[1];
+            StringBuffer buffer = new StringBuffer("");
+            for (int i = 0; i < size; ++i) {
+                buffer.append((String) list.get(i));
+                /*if (i < (size - 1)) {
+                    buffer.append("\r\n");
+                }*/
+            }
+            lines[0] = buffer.toString();
+        } else {
+            lines = new String[size];
+            for (int i = 0; i < size; ++i) {
+                lines[i] = (String) list.get(i);
+            }
+        }
+
+        return lines;
+    }
+
+    public String readDataLine(BufferedReader br) throws Exception {
+        String originalLine = "";
+        String line = "";
+        try {
+            line = originalLine = br.readLine();
+            if (line == null) return null;
+            if (line.length() > 0 && line.charAt(0) == 0xFEFF) line = line.substring(1);
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+        } catch (Exception e) {
+            throw new Exception("Line \"{0}\",  \"{1}\"" + originalLine + " "
+                    + line + " " + e.toString());
+        }
+        return line;
+    }
+
+    
+    public static class BOMFreeReader extends Reader {
+        InputStreamReader reader;
+        String encoding;
+        int MAX_BOM_LENGTH = 5;
+
+        /**
+         * Creates a new reader, skipping a BOM associated with the given
+         * encoding. Equivalent to BOMFreeReader(in, null).
+         * 
+         * @param in
+         *            The input stream.
+         * @throws IOException
+         *             Thrown if reading for a BOM causes an IOException.
+         */
+        public BOMFreeReader(InputStream in) throws IOException {
+            this(in, null);
+        }
+        
+        /**
+         * Creates a new reader, skipping a BOM associated with the given
+         * encoding. If encoding is null, attempts to detect the encoding by the
+         * BOM.
+         * 
+         * @param in
+         *            The input stream.
+         * @param encoding
+         *            The encoding to use. Can be null.
+         * @throws IOException
+         *             Thrown if reading for a BOM causes an IOException.
+         */
+        public BOMFreeReader(InputStream in, String encoding) throws IOException {
+            PushbackInputStream pushback = new PushbackInputStream(in, MAX_BOM_LENGTH);
+            this.encoding = encoding;
+            
+            byte[] start = new byte[MAX_BOM_LENGTH];
+            Arrays.fill(start, (byte)0xa5);
+            
+            int amountRead = pushback.read(start, 0, MAX_BOM_LENGTH);
+            int bomLength = detectBOMLength(start);
+            if (amountRead > bomLength)
+                pushback.unread(start, bomLength, amountRead - bomLength);
+            
+            reader = (encoding == null) ? new InputStreamReader(pushback) : new InputStreamReader(pushback, encoding);
+        }
+
+        /**
+         * Determines the length of a BOM in the beginning of start. Assumes
+         * start is at least a length 5 array. If encoding is null, the check
+         * will not be encoding specific and it will set the encoding of this
+         * BOMFreeReader.
+         * 
+         * @param start
+         *            The starting bytes.
+         * @param encoding
+         *            The encoding. Can be null.
+         * @return The length of a detected BOM.
+         */
+        private int detectBOMLength(byte[] start) {
+            if ((encoding == null || "UTF-16BE".equals(encoding)) && start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "UTF-16BE";
+                return 2; // "UTF-16BE";
+            } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+                if ((encoding == null || "UTF-32LE".equals(encoding)) && start[2] == (byte) 0x00
+                        && start[3] == (byte) 0x00) {
+                    if (encoding == null) this.encoding = "UTF-32LE";
+                    return 4; // "UTF-32LE";
+                } else if ((encoding == null || "UTF-16LE".equals(encoding))) {
+                    if (encoding == null) this.encoding = "UTF-16LE";
+                    return 2; // "UTF-16LE";
+                }
+            } else if ((encoding == null || "UTF-8".equals(encoding)) && start[0] == (byte) 0xEF
+                    && start[1] == (byte) 0xBB && start[2] == (byte) 0xBF) {
+                if (encoding == null) this.encoding = "UTF-8";
+                return 3; // "UTF-8";
+            } else if ((encoding == null || "UTF-32BE".equals(encoding)) && start[0] == (byte) 0x00
+                    && start[1] == (byte) 0x00 && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "UTF-32BE";
+                return 4; // "UTF-32BE";
+            } else if ((encoding == null || "SCSU".equals(encoding)) && start[0] == (byte) 0x0E
+                    && start[1] == (byte) 0xFE && start[2] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "SCSU";
+                return 3; // "SCSU";
+            } else if ((encoding == null || "BOCU-1".equals(encoding)) && start[0] == (byte) 0xFB
+                    && start[1] == (byte) 0xEE && start[2] == (byte) 0x28) {
+                if (encoding == null) this.encoding = "BOCU-1";
+                return 3; // "BOCU-1";
+            } else if ((encoding == null || "UTF-7".equals(encoding)) && start[0] == (byte) 0x2B
+                    && start[1] == (byte) 0x2F && start[2] == (byte) 0x76) {
+                if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+                    if (encoding == null) this.encoding = "UTF-7";
+                    return 5; // "UTF-7";
+                } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39 || start[3] == (byte) 0x2B
+                        || start[3] == (byte) 0x2F) {
+                    if (encoding == null) this.encoding = "UTF-7";
+                    return 4; // "UTF-7";
+                }
+            } else if ((encoding == null || "UTF-EBCDIC".equals(encoding)) && start[0] == (byte) 0xDD
+                    && start[2] == (byte) 0x73 && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+                if (encoding == null) this.encoding = "UTF-EBCDIC";
+                return 4; // "UTF-EBCDIC";
+            }
+
+            /* no known Unicode signature byte sequence recognized */
+            return 0;
+        }
+
+        public int read(char[] cbuf, int off, int len) throws IOException {
+            return reader.read(cbuf, off, len);
+        }
+
+        public void close() throws IOException {
+            reader.close();
+        }
+    }
+}
+
+
+
+// eof
diff --git a/src/com/ibm/icu/dev/test/perf/RBBIPerf.java b/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
new file mode 100644
index 0000000..7f03287
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
@@ -0,0 +1,157 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+import com.ibm.icu.text.*;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.text.BreakIterator;
+
+/**
+ * A class for testing UnicodeSet performance.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public class RBBIPerf extends PerfTest {
+
+    String                  dataFileName;
+    RuleBasedBreakIterator  bi;
+    BreakIterator           jdkbi;
+    String                  testString;
+
+    public static void main(String[] args) throws Exception {
+        new RBBIPerf().run(args);
+    }
+
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        if (args.length != 2) {
+            throw new RuntimeException("RBBITest params:  data_file_name break_iterator_type ");
+        }
+
+        try {
+            dataFileName = args[0];
+            StringBuffer  testFileBuf = new StringBuffer();
+            InputStream is = new FileInputStream(dataFileName);
+            InputStreamReader isr = new InputStreamReader(is, "UTF-8");           
+            int c;
+            for (;;) {
+                c = isr.read();
+                if (c < 0) {
+                    break;
+                }
+                UTF16.append(testFileBuf, c);
+            }
+            testString = testFileBuf.toString();
+        }
+        catch (IOException e) {
+            throw new RuntimeException(e.toString());   
+        }
+        
+        if (args.length >= 2) {
+            if (args[1].equals("char")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getCharacterInstance();  
+            } else if (args[1].equals("word")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getWordInstance();
+            } else if (args[1].equals("line")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getLineInstance();
+            } else if (args[1].equals("jdkline")) {
+                jdkbi  = BreakIterator.getLineInstance();
+            }
+        }
+        if (bi!=null ) {
+            bi.setText(testString);
+        }
+        if (jdkbi != null) {
+            jdkbi.setText(testString);   
+        }
+        
+    }
+
+    
+    
+    PerfTest.Function testRBBINext() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                int n;
+                if (bi != null) {
+                    n = bi.first();
+                    for (; n != BreakIterator.DONE; n=bi.next()) {
+                    }   
+                } else {
+                    n = jdkbi.first();
+                    for (; n != BreakIterator.DONE; n=jdkbi.next()) {
+                    }   
+                }
+            }
+        
+            
+            public long getOperationsPerIteration() {
+                int n;
+                int count = 0;
+                if (bi != null) {
+                    for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) {
+                        count++;
+                    }
+                } else {                  
+                    for (n=jdkbi.first(); n != BreakIterator.DONE; n=jdkbi.next()) {
+                        count++;
+                    }
+                }
+                return count;
+            }
+        };
+    }
+    
+    
+    PerfTest.Function testRBBIPrevious() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                bi.first();
+                int n=0;
+                for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
+                }   
+            }
+            
+            
+            public long getOperationsPerIteration() {
+                int n;
+                int count = 0;
+                for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
+                    count++;
+                }   
+                return count;
+            }
+        };
+    }
+
+
+    PerfTest.Function testRBBIIsBoundary() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                int n=testString.length();
+                int i;
+                for (i=0; i<n; i++) {
+                    bi.isBoundary(i);
+                }   
+            }
+            
+            public long getOperationsPerIteration() {
+                int n = testString.length();
+                return n;
+            }
+        };
+    }
+
+
+ 
+}
diff --git a/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java b/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
new file mode 100644
index 0000000..dd8c40f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
@@ -0,0 +1,372 @@
+/*
+**********************************************************************
+* Copyright (c) 2006-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+package com.ibm.icu.dev.test.perf;
+
+import java.nio.ByteBuffer;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.util.UResourceBundle;
+
+public class ResourceBundlePerf extends PerfTest {
+    
+    private UResourceBundle icuRes  = null;
+    private ResourceBundle javaRes = null;
+    
+    public static void main(String[] org_args) throws Exception {
+      new ResourceBundlePerf().run(org_args);
+    }
+    
+    protected void setup(String[] args) {
+        icuRes = UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes");
+        javaRes = ResourceBundle.getBundle("com.ibm.icu.dev.data.TestDataElements_testtypes");
+    }    
+
+    PerfTest.Function TestResourceBundleConstructionJava() {
+        return new PerfTest.Function() {
+            public void call() {
+                javaRes = ResourceBundle.getBundle("com.ibm.icu.dev.data.TestDataElements_testtypes");
+            }
+        };
+    }
+    PerfTest.Function TestResourceBundleConstructionICU() {
+        return new PerfTest.Function() {
+            public void call() {
+                UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes");
+            }       
+        };
+    }
+    
+    PerfTest.Function TestEmptyArrayJava() {
+        return new PerfTest.Function(){
+            public void call(){
+                String[] s = javaRes.getStringArray("emptyarray");
+                if (s.length != 0) throw new Error ("not zero");
+            }
+        };
+    }
+
+    PerfTest.Function TestEmptyArrayICU() {
+        return new PerfTest.Function(){
+            public void call(){
+                String[] s = icuRes.getStringArray("emptyarray");
+                if (s.length != 0) throw new Error ("not zero");
+            }
+        };
+    }
+    
+    class GetStringJava extends PerfTest.Function {
+        String key;
+        String expected;
+        GetStringJava(String key, String expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            String s = javaRes.getString(key);
+            if (!s.equals(expected)) throw new Error("not equal");
+        }
+    }
+    
+    class GetStringIcu extends PerfTest.Function {
+        String key;
+        String expected;
+        GetStringIcu(String key, String expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            String s = icuRes.getString(key);
+            if (!s.equals(expected)) throw new Error("not equal");
+        }
+    }
+    
+    PerfTest.Function TestZeroTestJava(){
+        return new GetStringJava("zerotest", "abc\u0000def");
+    }
+
+    PerfTest.Function TestZeroTestICU(){
+        return new GetStringIcu("zerotest", "abc\u0000def");
+    }
+
+    PerfTest.Function TestEmptyExplicitStringJava(){
+        return new GetStringJava("emptyexplicitstring", "");
+    }
+    
+    PerfTest.Function TestEmptyExplicitStringICU(){
+        return new GetStringIcu("emptyexplicitstring", "");
+    }
+
+    PerfTest.Function TestEmptyStringJava(){
+        return new GetStringJava("emptystring", "");
+    }
+    
+    PerfTest.Function TestEmptyStringICU(){
+        return new GetStringIcu("emptystring", "");
+    }
+
+    class GetIntJava extends PerfTest.Function {
+        String key;
+        int expected;
+        GetIntJava(String key, int expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            Integer t = (Integer) javaRes.getObject(key);
+            if (t.intValue() != expected) throw new Error("not equal");
+        }
+    }
+    
+    class GetIntIcu extends PerfTest.Function {
+        String key;
+        int expected;
+        GetIntIcu(String key, int expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            int t = temp.getInt();
+            if (t != expected) throw new Error("not equal");
+        }
+    }
+
+    PerfTest.Function TestGet123Java(){
+        return new GetIntJava("onehundredtwentythree", 123);
+    }
+    
+    PerfTest.Function TestGet123ICU(){
+        return new GetIntIcu("onehundredtwentythree", 123);
+    }
+
+    PerfTest.Function TestGetEmptyIntJava(){
+        return new GetIntJava("emptyint", 0);
+    }
+    
+    PerfTest.Function TestGetEmptyIntICU(){
+        return new GetIntIcu("emptyint", 0);
+    }
+
+    PerfTest.Function TestGetOneJava(){
+        return new GetIntJava("one", 1);
+    }
+    
+    PerfTest.Function TestGetOneICU(){
+        return new GetIntIcu("one", 1);
+    }
+    
+    PerfTest.Function TestGetMinusOneJava(){
+        return new GetIntJava("minusone", -1);
+    }
+    
+    PerfTest.Function TestGetMinusOneICU(){
+        return new GetIntIcu("minusone", -1);
+    }
+
+    PerfTest.Function TestGetPlusOneJava(){
+        return new GetIntJava("plusone", 1);
+    }
+    
+    PerfTest.Function TestGetPlusOneICU(){
+        return new GetIntIcu("plusone", 1);
+    }
+
+    PerfTest.Function TestGetMinusOneUintJava(){ // TODO: no equivalence?
+        return new PerfTest.Function(){
+            public void call(){
+                Integer t = (Integer) javaRes.getObject("minusone");
+                if (t.intValue() != -1 ) throw new Error("not equal");
+            }
+        };
+    }
+    
+    PerfTest.Function TestGetMinusOneUintICU(){
+        return new PerfTest.Function(){
+            public void call(){
+                UResourceBundle sub = icuRes.get("minusone");
+                int t = sub.getUInt();
+                if (t != 0xFFFFFFF) throw new Error("not equal");
+            }
+        };
+    }
+    
+
+    class GetIvJava  extends PerfTest.Function {
+        String key;
+        int[] expected;
+        GetIvJava(String key, int[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            Integer[] iv = (Integer[]) javaRes.getObject(key);
+            for (int i = 0; i < iv.length; i++){
+                if (expected[i] != iv[i].intValue()) throw new Error("not equal"); 
+            }
+        }
+    }
+    
+    class GetIvIcu  extends PerfTest.Function {
+        String key;
+        int[] expected;
+        GetIvIcu(String key, int[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            int[] iv = temp.getIntVector();
+            for (int i = 0; i < iv.length; i++){
+                if (expected[i] != iv[i]) throw new Error("not equal"); 
+            }
+        }
+    }
+
+    PerfTest.Function TestGetIntegerArrayJava(){
+        return new GetIvJava("integerarray", new int[]{1,2,3,-3,4,5,6,7});
+    }
+    
+    PerfTest.Function TestGetIntegerArrayICU(){
+        return new GetIvIcu("integerarray", new int[]{1,2,3,-3,4,5,6,7});
+    }
+
+    PerfTest.Function TestGetEmptyIntegerArrayJava(){
+        return new GetIvJava("emptyintv", new int[0]);
+    }
+    
+    PerfTest.Function TestGetEmptyIntegerArrayICU(){
+        return new GetIvIcu("emptyintv", new int[0]);
+    }
+
+    
+    class GetBinaryIcu extends PerfTest.Function {
+        String key;
+        int expected_len;
+        GetBinaryIcu(String key, int expected_len) {
+            this.key = key;
+            this.expected_len = expected_len;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            ByteBuffer got = temp.getBinary();
+            if(got.remaining() != expected_len) throw new Error("not the expected len");
+            for(int i=0; i< got.remaining(); i++){
+              byte b = got.get();
+              if (i != b) throw new Error("not equal");
+            }
+        }
+    }
+
+    class GetBinaryJava extends PerfTest.Function {
+        String key;
+        int expected_len;
+        GetBinaryJava(String key, int expected_len) {
+            this.key = key;
+            this.expected_len = expected_len;
+        }
+        public void call() {
+            ByteBuffer got = ByteBuffer.wrap((byte[])javaRes.getObject(key));
+            if(got.remaining() != expected_len) throw new Error("not the expected len");
+            for(int i=0; i< got.remaining(); i++){
+              byte b = got.get();
+              if (i != b) throw new Error("not equal");
+            }
+        }
+    }
+
+    PerfTest.Function TestGetBinaryTestICU(){
+        return new GetBinaryIcu("binarytest", 15);
+    }
+    
+    PerfTest.Function TestGetBinaryTestJava(){
+        return new GetBinaryJava("binarytest", 15);
+    }
+    
+    PerfTest.Function TestGetEmptyBinaryICU(){
+        return new GetBinaryIcu("emptybin", 0);
+    }
+    
+    PerfTest.Function TestGetEmptyBinaryJava(){
+        return new GetBinaryJava("emptybin", 0);
+    }
+
+    class GetMenuJava extends PerfTest.Function {
+        String key;
+        String[] expected;
+        GetMenuJava(String key, String[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            int p = 0;
+            Object[][] menus = (Object[][]) javaRes.getObject(key);
+            int sizei = menus.length;
+            for (int i=0; i<sizei; i++){
+                String menu_name = (String) menus[i][0];
+                Object[][] menu_items = (Object[][]) menus[i][1];
+                if (!expected[p++].equals(menu_name)) throw new Error("not equal");
+                
+                int sizej = menu_items.length;
+                for (int j=0; j< sizej; j++){
+                    String itemKey = (String) menu_items[j][0];
+                    String value = (String) menu_items[j][1];
+                    if(!expected[p++].equals(itemKey)) throw new Error("not equal");
+                    if(!expected[p++].equals(value)) throw new Error("not equal");
+                }
+            }
+            
+        }
+    }
+    
+    class GetMenuIcu extends PerfTest.Function {
+        String key;
+        String[] expected;
+        GetMenuIcu(String key, String[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            int p = 0;
+            UResourceBundle menus = icuRes.get(key);
+            int sizei = menus.getSize();
+            for (int i=0; i<sizei; i++){
+                UResourceBundle menu = menus.get(i);
+                String menu_name = menu.getKey();
+                if (!expected[p++].equals(menu_name)) throw new Error("not equal");
+                
+                int sizej = menu.getSize();
+                for (int j=0; j< sizej; j++){
+                    UResourceBundle menu_item = menu.get(j);
+                    String itemKey = menu_item.getKey();
+                    String value = menu_item.getString();
+                    if(!expected[p++].equals(itemKey)) throw new Error("not equal");
+                    if(!expected[p++].equals(value)) throw new Error("not equal");
+                }
+            }
+            
+        }
+    }
+
+    PerfTest.Function TestGetMenuJava(){
+        String[] expected = new String[]{"file", "exit", "Exit", "open", "Open", "save", "Save"};
+        return new GetMenuJava("menu", expected);
+    }
+    
+    PerfTest.Function TestGetMenuICU(){
+        String[] expected = new String[]{"file", "exit", "Exit", "open", "Open", "save", "Save"};
+        return new GetMenuIcu("menu", expected);
+    }
+
+    PerfTest.Function TestGetEmptyMenuJava(){
+        return new GetMenuJava("emptytable", new String[]{});
+    }
+    
+    PerfTest.Function TestGetEmptyMenuICU(){
+        return new GetMenuIcu("emptytable", new String[]{});
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java b/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
new file mode 100644
index 0000000..4eab56b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
@@ -0,0 +1,533 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * Base performance test that takes in a method name for testing with JDK.
+ * To use 
+ * <code>
+ * java com.ibm.icu.dev.test.perf.UCharacterPerf $MethodName $LoopCount - 
+ *                                  $START_TEST_CHARACTER $END_TEST_CHARACTER
+ * </code>
+ * where $*_TEST_CHARACTER are in hex decimals with a leading 0x
+ */
+public final class UCharacterPerf extends PerfTest 
+{
+    // public methods ------------------------------------------------------
+    
+    public static void main(String[] args) throws Exception
+    {   
+        new UCharacterPerf().run(args);
+        // new UCharacterPerf().TestPerformance();
+    }
+    
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        MIN_ = Character.MIN_VALUE;
+        MAX_ = Character.MAX_VALUE;
+        if (args.length >= 1) {
+            MIN_ = Integer.parseInt(args[0], 16);
+        }
+        if (args.length >= 2) {
+            MAX_ = Integer.parseInt(args[1], 16);
+        }
+    }
+    
+    PerfTest.Function testDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.digit(ch, 10);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.digit(ch, 10);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testGetNumericValue() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.getNumericValue(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testJDKGetNumericValue() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.getNumericValue(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+     
+    PerfTest.Function testGetType() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.getType(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }   
+
+    PerfTest.Function testJDKGetType() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.getType(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testIsDefined() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isDefined(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsDefined() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isDefined(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+
+    PerfTest.Function testIsDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsIdentifierIgnorable() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isIdentifierIgnorable(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsIdentifierIgnorable() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isIdentifierIgnorable(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsISOControl() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isISOControl(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsISOControl() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isISOControl(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsLetter() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLetter(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsLetter() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLetter(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsLetterOrDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLetterOrDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsLetterOrDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLetterOrDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testIsLowerCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLowerCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsLowerCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLowerCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testIsSpaceChar() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isSpaceChar(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsSpaceChar() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isSpaceChar(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }  
+    
+    PerfTest.Function testIsTitleCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isTitleCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsTitleCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isTitleCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testIsUnicodeIdentifierPart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isUnicodeIdentifierPart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsUnicodeIdentifierPart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUnicodeIdentifierPart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testIsUnicodeIdentifierStart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isUnicodeIdentifierStart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsUnicodeIdentifierStart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUnicodeIdentifierStart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testIsUpperCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    UCharacter.isUpperCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsUpperCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUpperCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+         
+    PerfTest.Function testIsWhiteSpace() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isWhitespace(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsWhiteSpace() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isWhitespace(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    // private data member --------------------------------------------------
+    
+    /**
+     * Minimum codepoint to do test. Test is ran from MIN_ to MAX_
+     */
+    private static int MIN_;
+    /**
+     * Minimum codepoint to do test. Test is ran from MIN_ to MAX_
+     */
+    private static int MAX_;
+}
diff --git a/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java b/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
new file mode 100644
index 0000000..32e990f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
@@ -0,0 +1,161 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+import com.ibm.icu.text.*;
+import java.util.HashSet;
+import java.util.Iterator;
+
+/**
+ * A class for testing UnicodeSet performance.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public class UnicodeSetPerf extends PerfTest {
+
+    String pattern;
+    UnicodeSet testChars;
+    UnicodeSetIterator it;
+    UnicodeSet us;
+    HashSet hs;
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeSetPerf().run(args);
+    }
+
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        if (args.length != 1) {
+            throw new RuntimeException("Please supply UnicodeSet pattern");
+        }
+
+        pattern = args[0];
+        testChars = new UnicodeSet(pattern);
+        it = new UnicodeSetIterator(testChars);
+        us = new UnicodeSet();
+        hs = new HashSet();
+    }
+
+    PerfTest.Function testUnicodeSetAdd() {
+        return new PerfTest.Function() {
+            public void call() {
+                us.clear();
+                it.reset();
+                int n=0;
+                while (it.nextRange()) {
+                    for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {
+                        us.add(cp);
+                        ++n;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetAdd() {
+        return new PerfTest.Function() {
+            public void call() {
+                hs.clear();
+                it.reset();
+                int n=0;
+                while (it.nextRange()) {
+                    for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {
+                        hs.add(new Integer(cp));
+                        ++n;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testUnicodeSetContains() {
+        us.clear();
+        us.set(testChars);
+        
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+                    if (us.contains(cp)) {
+                        temp += cp;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return 0x110000;
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetContains() {
+        hs.clear();
+        it.reset();
+        while (it.next()) {
+            hs.add(new Integer(it.codepoint));
+        }
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+                    if (hs.contains(new Integer(cp))) {
+                        temp += cp;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return 0x110000;
+            }
+        };
+    }
+
+    PerfTest.Function testUnicodeSetIterate() {
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                UnicodeSetIterator uit = new UnicodeSetIterator(testChars);
+                while (uit.next()) {
+                    temp += uit.codepoint;
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetIterate() {
+        hs.clear();
+        it.reset();
+        while (it.next()) {
+            hs.add(new Integer(it.codepoint));
+        }
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                Iterator itr = hs.iterator();
+                while (itr.hasNext()) {
+                    temp += ((Integer)itr.next()).intValue();
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/collationperf.pl b/src/com/ibm/icu/dev/test/perf/collationperf.pl
new file mode 100755
index 0000000..2c568c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/collationperf.pl
@@ -0,0 +1,126 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+#
+#  ICU and Windows Collation performance test script
+#      Used in conjunction with the collperf test program.
+#      This script defines the locales and data files to be tested,
+#        runs the collperf program, and formats and prints the results.
+#
+#        7 June 2001   Andy Heninger
+#
+#  ICU4J and Java Collator performance test script
+#  2002-09-25 modified by Richard Liang
+
+print "To run this performance test\n";
+print "cd to the ICU4J root directory, one directory below src\n";
+print "run perl src\\com\\ibm\\icu\\dev\\test\\perf\\collationperf.pl\n";
+
+#
+# Map defines the set of data files to run in each locale
+#
+%dataFiles = (
+   "en_US",         "TestNames_Latin.txt",
+   "da_DK",         "TestNames_Latin.txt",
+   "de_DE",         "TestNames_Latin.txt",
+   "de__PHONEBOOK", "TestNames_Latin.txt",
+   "fr_FR",         "TestNames_Latin.txt",
+   "ja_JP",         "TestNames_Latin.txt TestNames_Japanese_h.txt TestNames_Japanese_k.txt TestNames_Asian.txt",
+   "zh_CN",         "TestNames_Latin.txt TestNames_Chinese.txt",
+   "zh_TW",         "TestNames_Latin.txt TestNames_Chinese.txt",
+   "zh__PINYIN",    "TestNames_Latin.txt TestNames_Chinese.txt",
+   "ru_RU", 	    "TestNames_Latin.txt TestNames_Russian.txt",
+   "th",            "TestNames_Latin.txt TestNames_Thai.txt",
+   "ko_KR",         "TestNames_Latin.txt TestNames_Korean.txt",
+   );
+
+
+#
+#  Outer loop runs through the locales to test
+#     (Edit this list dirctly to make changes)
+#
+   foreach $locale (
+	   "en_US",
+	   "da_DK",
+	   "de_DE",
+	   "de__PHONEBOOK",
+	   "fr_FR",
+	   "ja_JP",
+       "zh_CN",
+	   "zh_TW",
+	   "zh__PINYIN",
+       "ko_KR",
+	   "ru_RU",
+	   "th",
+                   )
+       {
+       #
+       # Inner loop runs over the set of data files specified for each locale.
+       #    (Edit the %datafiles initialization, above, to make changes.
+       #
+       $ff = $dataFiles{$locale};
+       @ff = split(/[\s]+/, $ff);
+       foreach $data (@ff) {
+
+          #
+          # Run ICU Test for this (locale, data file) pair.
+          #
+          $iStrCol = `java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -binsearch`;
+          $iStrCol =~s/[,\s]*//g;  # whack off the leading "  ," in the returned result.
+          doKeyTimes("java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -keygen",
+                     $iKeyGen, $iKeyLen);
+
+
+          #
+          # Run Windows test for this (locale, data file) pair.  Only do if
+          #    we are not on Windows 98/ME and we hava a windows langID
+          #    for the locale.
+          #
+          $wStrCol = $wKeyGen = $wKeyLen = 0;
+          $wStrCol = `java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -binsearch -java`;
+          $wStrCol =~s/[,\s]*//g;  # whack off the leading "  ," in the returned result.
+          doKeyTimes("java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -keygen -java",
+                     $wKeyGen, $wKeyLen);
+                     
+          $collDiff = $keyGenDiff = $keyLenDiff = 0;
+          if ($wKeyLen > 0) {
+              $collDiff   = (($wStrCol - $iStrCol) / $iStrCol) * 100;
+              $keyGenDiff = (($wKeyGen - $iKeyGen) / $iKeyGen) * 100;
+              $keyLenDiff = (($wKeyLen - $iKeyLen) / $iKeyLen) * 100;
+          }
+
+         #
+         #  Write the line of results for this (locale, data file).
+         #
+         write;
+    }
+ }
+
+#
+#  doKeyGenTimes($Command_to_run, $time, $key_length)
+#       Do a key-generation test and return the time and key length/char values.
+#
+sub doKeyTimes($$$) {
+   # print "$_[0]\n";
+   local($x) = `$_[0]`;                  # execute the collperf command.
+   ($_[1], $_[2]) = split(/\,/, $x);     # collperf returns "time, keylength" string.
+}
+
+
+#
+#  Output Formats ...
+#
+#
+format STDOUT_TOP =
+                                      -------- ICU --------   ------ JAVA -------      (JAVA - ICU)/ICU
+Locale     Data file                  strcoll keygen  keylen  strcoll keygen  keylen    coll  keygen  keylen
+------------------------------------------------------------------------------------------------------------
+.
+
+format STDOUT =
+@<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<| @######  @####   @#.##  |@##### @#####   @#.## | @###%  @###%   @###%
+$locale, $data, $iStrCol, $iKeyGen, $iKeyLen, $wStrCol, $wKeyGen, $wKeyLen, $collDiff, $keyGenDiff, $keyLenDiff
+.
diff --git a/src/com/ibm/icu/dev/test/perf/converterperf.pl b/src/com/ibm/icu/dev/test/perf/converterperf.pl
new file mode 100755
index 0000000..eb4b311
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/converterperf.pl
@@ -0,0 +1,510 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.ConverterPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+##               ['TestByteToCharConverter', 'TestByteToCharConverterICU'],
+##               ['TestCharToByteConverter', 'TestCharToByteConverterICU'],
+                 ['TestCharsetDecoder',      'TestCharsetDecoderICU'],
+                 ['TestCharsetEncoder',      'TestCharsetEncoderICU']
+               );
+
+# Patterns which define the set of characters used for testing.
+
+my $SOURCEDIR ="src/com/ibm/icu/dev/test/perf/data/conversion/";
+
+my @OPTIONS = (
+#                                 src text          src encoding    test encoding  
+                                [ "arabic.txt",     "UTF-8",        "csisolatinarabic"],
+                                [ "french.txt",     "UTF-8",        "csisolatin1"],
+                                [ "greek.txt",      "UTF-8",        "csisolatingreek"],
+                                [ "hebrew.txt",     "UTF-8",        "csisolatinhebrew"],
+#                               [ "hindi.txt" ,     "UTF-8",        "iscii"],
+                                [ "japanese.txt",   "UTF-8",        "EUC-JP"],
+#                               [ "japanese.txt",   "UTF-8",        "csiso2022jp"],
+                                [ "japanese.txt",   "UTF-8",        "shift_jis"],
+#                               [ "korean.txt",     "UTF-8",        "csiso2022kr"],
+                                [ "korean.txt",     "UTF-8",        "EUC-KR"],
+                                [ "s-chinese.txt",  "UTF-8",        "EUC_CN"],
+                                [ "arabic.txt",     "UTF-8",        "UTF-8"],
+                                [ "french.txt",     "UTF-8",        "UTF-8"],                                
+                                [ "greek.txt",      "UTF-8",        "UTF-8"],
+                                [ "hebrew.txt",     "UTF-8",        "UTF-8"],
+                                [ "hindi.txt" ,     "UTF-8",        "UTF-8"],
+                                [ "japanese.txt",   "UTF-8",        "UTF-8"],
+                                [ "korean.txt",     "UTF-8",        "UTF-8"],
+                                [ "s-chinese.txt",  "UTF-8",        "UTF-8"],
+                                [ "french.txt",     "UTF-8",        "UTF-16BE"],
+                                [ "french.txt",     "UTF-8",        "UTF-16LE"],
+                                [ "english.txt",    "UTF-8",        "US-ASCII"],
+                          );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], @$pat[2]</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $fileName = $SOURCEDIR.@$pat[0] ;
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -f $fileName -e @$pat[1] -T @$pat[2]";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt
new file mode 100644
index 0000000..ecb8f83
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt
@@ -0,0 +1,10008 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,やすお
+あいかわ,のりお
+あかつか,かずひこ
+あわず,あきら
+あさの,よしや
+あらき,よしかず
+いのうえ,ひろひと
+かとう,まさとし
+なかむら,けいぞう
+ふじわら,たかこ
+やなぎはら,みどり
+かわだ,なおこ
+いしの,きよなが
+ごとう,かつのり
+いしじま,りょうへい
+あとう,まさのり
+みしま,たかゆき
+みよし,のぶまさ
+たちの,じゅん
+おおの,かずお
+きたがわ,よしたか
+ふるさわ,さとし
+おおはし,ひとし
+よしかわ,としゆき
+かわい,としお
+いしと,こうき
+いまい,たかゆき
+やまなか,さつみ
+ほりかわ,かつみ
+すずき,しゅんじ
+あわえ,あつし
+ながせ,たかひろ
+こばやし,じゅんいち
+まえだ,ひろし
+かとう,まさかず
+すみた,かおる
+せきぐち,たかゆき
+たなか,てるひさ
+ひらの,たかし
+はまぐち,しんじ
+さかがみ,のりかず
+こばやし,やすし
+たきもと,のりこ
+ほし,ひろふみ
+おおたか,ゆうこ
+すぎむら,しげお
+あおき,まさる
+なかはら,ゆうぞう
+かとう,おさむ
+まえさか,ともみつ
+ふじたに,かずひこ
+ほった,しげひと
+あきやま,ゆたか
+ふじた,まさゆき
+とよなが,やすひろ
+はっとり,まさお
+のむら,しげお
+かわしま,たかこ
+むろや,てつお
+あしかわ,やすしげ
+はやし,たかお
+みやがわ,ふみのり
+おぐら,やすひろ
+よしだ,としひこ
+くどう,ひろし
+くまがい,たかゆき
+にしお,ひでき
+おおいやま,のぼる
+たけたに,ふとし
+いしだ,かつや
+おいかわ,のぶあき
+たかはし,せいじ
+むらた,とおる
+すずき,すすむ
+はやし,しんちょう
+くろかわ,まさあき
+やじま,とおる
+かつらい,わたる
+あかり,りょうじ
+あずま,のぶゆき
+あつみ,しゅうじ
+まるお,よしゆき
+いけお,みのる
+とりやま,りつお
+はまの,よういち
+やまもと,こうたろう
+こうち,ゆうすけ
+なかじま,のりひこ
+あら,ひろし
+ほそかわ,まさひろ
+いずみ,かねみつ
+あわじ,あつお
+みずひき,よしお
+おだじま,なほみ
+ふるかわ,しげお
+みずぐち,じろう
+いとう,ひろし
+ふくい,さとし
+ふじはら,たけひと
+やの,ゆうじ
+はやしぐち,ひろし
+ほり,としゆき
+よしい,たかし
+あんどう,ひろし
+はた,こういち
+こばり,ひでゆき
+おだしま,かつろう
+うえやま,みつなり
+むた,まなぶ
+たなか,しげお
+こんの,ゆうこ
+ふじわら,としはる
+みやき,ゆたか
+はなわ,まさひろ
+てじま,あきら
+くぼ,あつし
+おおば,しんご
+こんの,たくや
+まつばら,ひでお
+はしもと,すみこ
+わたなべ,かずひろ
+こたき,てつや
+ふかや,ももき
+まつうら,てっぺい
+ふなだ,かずひこ
+ひがしだ,としゆき
+いのまた,ひろし
+さとう,ひろみ
+いとう,たつし
+みたむら,まゆみ
+すがはら,みつる
+たかみや,ひでのぶ
+やまぐち,こすけ
+おた,つよし
+せのお,はじめ
+しばざき,あつし
+なかむら,やすひろ
+ふじかわ,ひろゆき
+あらい,りゅうじ
+おおくら,ひさのり
+まつば,しげる
+ためひろ,もとこ
+まんぽ,かつみ
+こぐち,たかし
+たにぐち,なおすけ
+やまもと,たかひろ
+ひらもと,ひであき
+あんらく,たかし
+たなか,のりこ
+ちゃき,しげひで
+さかい,ちはる
+いなおか,ひろかず
+うしじま,しんいち
+こけつ,あきひさ
+むらた,ひとし
+きむら,よしひろ
+しんたに,りゅうじ
+おおはた,のぶあき
+たぶち,ゆたか
+すみだ,きよし
+みうら,ななこ
+りゅうと,ひろみ
+いけだ,ひろなり
+たかやなぎ,ひろふみ
+えんど,けんいち
+おしかわ,しんじ
+こばやし,ひでゆき
+やまだ,いわお
+おだ,まさお
+たきざわ,あつし
+もり,やすのり
+かなざわ,たつゆき
+おおた,たかあき
+おおつ,てつろう
+ふじもと,かずひろ
+もりかわ,まさのぶ
+いとう,こうじ
+かとう,こういち
+うえの,よしひこ
+おおかわ,さかえ
+まるい,じゅんこ
+いわお,しゅうじ
+うめだ,かずや
+めかた,まさる
+つじ,つぐひこ
+たご,ひろし
+やました,まさと
+すぎやま,ひろゆき
+ふたば,としあき
+みやひら,みちあき
+にしざき,すすむ
+たなか,くにこ
+むらもと,ともあき
+まえだ,ひさかず
+みやけ,あつし
+とうじま,たつひろ
+おおや,まさる
+うえの,ともひろ
+たかさき,やすひさ
+こんの,よしひさ
+たけお,のりかず
+かなやま,やすひこ
+おおおか,としろう
+こばやし,しゅう
+にしざか,みか
+ますみだ,ともひこ
+つぼい,やすお
+たがみ,まさる
+おかだ,てるお
+かたぎり,さとし
+かわて,たかし
+みずい,あやお
+かさおか,としひこ
+ひがしたに,ひでふみ
+うしき,かずいち
+ひらさわ,ながこ
+なりた,しゅういち
+こだま,かずひろ
+いのまた,ひろみ
+きむら,しょうご
+いとう,ふみお
+わたなべ,てるあき
+てらさわ,みつお
+はやし,しんいち
+あさくら,しんや
+やまき,こういち
+なかむら,しんいちろう
+えのもと,ひろみち
+かまた,たかひろ
+はしもと,なおき
+あらい,よしみ
+かりや,たかひこ
+こんど,よしき
+ますだ,ひろお
+いとう,けいすけ
+おか,みちはる
+おおつか,ひでき
+まつお,こうじ
+あそ,てるかず
+かみむら,ひろゆき
+たかばたけ,しげのり
+ふくだ,ひろゆき
+たかはし,けんと
+いわき,まこと
+すん,とよゆき
+あんどう,よしお
+はしもと,かな
+やはた,ひでお
+ふじき,けんじ
+まつお,さとし
+あおき,よういちろう
+ごとう,しんじ
+にしかわ,ひとし
+すみと,まさふみ
+ひらの,こうじ
+いとう,けい
+こいずみ,のりこ
+かわばた,のぞみ
+むとう,かつのり
+あだち,まさし
+きら,まさし
+あやの,こうき
+たるい,よしお
+はやし,きょうこ
+いけだ,じゅん
+ほりみぞ,けいすけ
+ふるなが,はるひこ
+おしま,なすお
+はやし,ひとし
+にし,ゆきみつ
+こむろ,かなめ
+ひろたに,よしお
+すが,ひろし
+つるみ,あきひさ
+とみやま,かずみつ
+やまざき,ようこ
+いしだ,しょういちろう
+うちとみ,あきら
+おおさわ,よしかず
+やなぎ,ひでひろ
+みやした,ひでき
+たかはし,こうじ
+とがわ,ひろゆき
+なかむら,しげる
+うえむら,たけし
+あさの,ゆういち
+おおやま,けんじ
+かわの,えいこ
+ばば,ひとし
+いとう,しんいち
+うえの,のぶゆき
+しらい,けんしん
+いかみ,はるお
+かわしま,ともゆき
+みやけ,たかひろ
+さくらい,けんじ
+たけのした,しゅうへい
+にしおか,せいいちろう
+くろき,まさよし
+たなか,みのる
+いいじま,たかし
+さとう,ひろあき
+さくらい,かずしげ
+やなぎさわ,のぶお
+うちやま,しげよし
+おくつ,かずとし
+にしやま,せいじ
+たけだ,たかこ
+ふりはら,かずお
+やぶき,まさひろ
+なか,かずひろ
+よしおか,かずや
+もちずき,たかゆき
+すぎやま,ひでひろ
+いわなが,けいいち
+みわ,はるかず
+ほりかわ,かつき
+たかだ,こうじ
+いしまる,しげやす
+おむら,ひでお
+きたむら,りか
+すぎき,たかき
+にしむら,ちえこ
+なかはら,こういち
+まつもと,あきら
+ふくしま,まさる
+かじおか,あきひと
+なかざわ,のぼる
+ますざき,たかし
+なか,としたか
+おさだ,はじめ
+かわた,なおみ
+よしだ,こうじ
+なか,としひろ
+えいどめ,ひでかず
+まつもと,よしまさ
+ながさか,よしあき
+ふじさわ,かつひこ
+きよたに,つとむ
+ありもと,せいこ
+えぞえ,けいいち
+つちや,かずや
+ふじおか,やすこ
+つかもと,ふみお
+たかはし,とよひこ
+さかいだ,やすひろ
+すずき,こうじ
+おしま,やすとし
+まきうち,たくや
+はらだ,ひさかず
+まさき,あきら
+おがわ,のぶあき
+うしまる,けん
+いしだ,のぶたか
+はなぶさ,あつこ
+よしむら,よしひさ
+たにがわ,まりお
+さとう,たつし
+かつ,たかし
+やまぐち,ひろき
+はくちょう,いさお
+いとう,たかし
+さかい,かずのり
+たんご,ひでお
+こいずみ,けんすけ
+わかすぎ,ただたか
+うえの,しんいち
+うえだ,ともき
+すずき,ひさえ
+おおの,よしのり
+あべ,けんいち
+しいき,ひろし
+あらき,きよはる
+あずま,ひろよし
+でぐち,ひろのり
+えりかわ,ゆうこ
+ふかやま,のぶゆき
+ふなき,さかえ
+いちむら,まこと
+はしもと,のりあき
+ひがし,きよたか
+ひろさわ,あつし
+ほりぐち,ゆういち
+いばらき,ゆういち
+いなむら,こういち
+いしかわ,みきお
+いとい,ただし
+かなざし,のりこ
+かたぎし,まさし
+かとう,やすし
+かわだ,けんすけ
+きのした,やすひろ
+こばやし,かつのり
+こまつ,やすたか
+こたに,ひでき
+くろせ,おさむ
+まえだ,ゆうじ
+まんたに,よういち
+まつもと,やすあき
+みむら,しげのぶ
+みわ,まさひろ
+もりた,あきひこ
+むねむら,としみつ
+ながた,けんじ
+なかこじ,たつや
+なかむら,よういち
+なかやま,たかし
+にむら,すすむ
+やじま,よしえ
+のま,とよみ
+ぬきい,かつみ
+おがさわら,しゅうじ
+おおさわ,ひでたか
+まつなが,よしあき
+おかもと,ひろゆき
+おさだ,むつみ
+さいとう,あきひろ
+さくらい,しげのり
+さとう,よしのり
+せざい,かずやす
+しみず,あきとし
+しょうみつ,よしひろ
+すぎさわ,のぶゆき
+すずき,ゆうじ
+すずき,ゆうこ
+たかはし,たかゆき
+たかさか,はじめ
+ふじい,あつこ
+たまき,さとこ
+たに,かずひこ
+ときぞの,しげお
+とりざわ,えみ
+つるかわ,えいじ
+うだ,ひさよし
+うめむら,きみひろ
+わたり,やすよし
+やまもと,てつや
+やまもと,まさよし
+やの,ゆきお
+よだ,いさお
+やまぐち,かずよし
+ほ,あきら
+まつみや,ゆういち
+さわだ,ひろし
+こはら,まさのり
+さいとう,みつる
+やの,みつお
+ふじもり,のりこ
+やまぐち,やすひろ
+やまだ,たかし
+ふじた,としき
+きむら,たけお
+はやし,まさひろ
+まえざわ,いずみ
+しぶかわ,きよひさ
+みほ,まさのり
+すぎやま,しんいち
+ふるかわ,よしふみ
+のちせ,かずひこ
+まつもと,ひであき
+おくの,ゆきお
+やまざき,やすひろ
+いしげ,あきこ
+みうら,りゅうぞう
+ばば,たくや
+もちずき,えみこ
+とくなが,ふみひと
+くろかわ,ひろし
+いけの,めぐみ
+やまかげ,ようじ
+やぎはし,しゅういち
+きよみつ,けんじ
+むらやま,えいじゅ
+おおつか,ひでひこ
+おやまだ,たかし
+あげた,じゅんいち
+あもう,あきお
+あらかわ,ひでし
+ばんの,まさきよ
+えさき,しんいち
+ふかざわ,ともひと
+ふなばし,まさゆき
+はなだ,かつのり
+はしもと,えみこ
+ひじくろ,なおゆき
+ほうや,かずひこ
+ほそだ,ちえみ
+いけざわ,のぶやす
+いぬつか,なおき
+かじたに,おさむ
+いとう,ちくさ
+いわした,しこ
+かみや,くにあき
+かすや,あきら
+かわばた,だい
+かわくぼ,かずとし
+きばし,ひでひこ
+きりさわ,いちろう
+こだま,おさむ
+とうどう,こうじ
+こやいし,みか
+くらた,こすけ
+くわの,ひろたか
+ますだ,じゅん
+まつした,ただし
+みやけ,あつし
+みよだ,たかひさ
+みずたに,つよし
+もりわき,しんいちろう
+むとう,かつき
+ながわ,しんいち
+なかしま,ひさよし
+にしだ,ひろよし
+にしお,まさと
+のむら,てつや
+おだおおはら,しんご
+おおひら,いちろう
+おおぬま,なるし
+おおやぎ,まさひろ
+おかね,たかし
+おくの,かつし
+さいとう,よしみ
+さかうえ,やすゆき
+さとう,たけし
+せきもと,としゆき
+しいな,ふみはる
+しみず,ひでとし
+しらさき,ようこ
+すどう,さとこ
+すずき,ひろし
+ほそかわ,ゆり
+やまざき,なおき
+たかす,かずよ
+たけだ,ひろゆき
+たまたに,かずあき
+たにもと,しんいち
+とみなが,ひろひさ
+つかだ,ひでき
+うらかわ,ゆうじ
+わたり,こうじ
+やまもと,あつし
+やました,としひで
+やざき,たけし
+よこた,ゆうこ
+よしかわ,みつひろ
+あさの,みちこ
+おくだ,ひさこ
+いなだ,まさつな
+しもかわ,ふみひこ
+つぼた,のりお
+おおくぼ,たけし
+さいとう,しゅういち
+ふじた,つねお
+まきむら,たけお
+にのみや,かずお
+たばた,よしたか
+むらかみ,ひろき
+いまにし,たけお
+たきがわ,しげよし
+おんずか,ひろし
+とのかわ,たけし
+いけだ,ときお
+ごとう,かずや
+そだ,けんじ
+もりた,まさゆき
+たんの,えいいち
+ごうだ,きょうこ
+やまぐち,ひろかず
+おさない,あつし
+ひがし,しょうこ
+やまもと,ひであき
+さとう,たかお
+みぞぐち,としゆき
+きたがわ,ひろし
+おおにし,そういち
+あいはら,ひでお
+あきば,つとむ
+あまの,とおる
+あおやぎ,たかお
+あら,あきお
+あさの,よしひろ
+ばん,こうたろう
+えびぬま,あけみ
+ふじえだ,じゅん
+ふじい,しげのり
+おぐら,あやこ
+ふかお,みつひろ
+ふくだ,みか
+ふくおか,しんご
+ごうだ,よりこ
+はぎわら,きくお
+はなみつ,よしたか
+はら,みゆき
+はつしま,けん
+はっとり,よしのり
+はやし,かつみ
+ひなた,じゅん
+ひらさわ,かずひろ
+ひろせ,ひさゆき
+すぎもと,せいいち
+ほり,かずお
+ほそ,かずみ
+いでい,まさかず
+いいむら,よしのぶ
+いけだ,くにひろ
+いまい,ただし
+いのうえ,ひろたか
+いしぐろ,ひろし
+いしかわ,ようこ
+いしわた,なおひさ
+いとう,てつや
+いとう,たかし
+いわくぼ,たかゆき
+いわさき,たつひこ
+かがみ,しげよし
+かまもと,たえこ
+かみ,まこと
+かなざわ,さだいち
+かねこ,やえ
+かしわぎ,ひろし
+かたおか,あつし
+ごとう,ひろかず
+かわはら,ひろあき
+かわきた,やすこ
+きだ,よしふみ
+きむら,みのる
+おかざき,たけお
+きたむら,あきお
+こばやし,みよこ
+ひろせ,はるお
+こさか,よしゆき
+こくまい,みえこ
+こもおか,ふみお
+こんどう,たつと
+くぼ,たかゆき
+くまもと,あきひこ
+くりやま,ゆきえ
+くしだ,わたる
+まえかわ,ひでたか
+ますだ,みきお
+まつだ,しげお
+かのう,ひろゆき
+まつなみ,ひろゆき
+まつざき,ただし
+みもり,ひろし
+みうら,よういち
+みやはし,きょうこ
+みやたけ,しげみ
+みずこし,としお
+もりき,やすひろ
+もり,さとる
+むかい,たつみ
+むらた,さとし
+むつしか,えいいち
+ながさわ,かずと
+ながえ,たかゆき
+なかじま,かつとも
+なかまた,のりひろ
+なかむら,はじめ
+おおにし,まさのり
+なかの,もえこ
+なかた,しげこ
+なかやま,かつひこ
+なつやま,ゆうこ
+もり,ゆきこ
+にわ,まさき
+のま,さとし
+のりかね,まさる
+おだね,よしかず
+おおばやし,やすゆき
+おき,よしゆき
+おらい,すすむ
+おおとも,あきお
+おひゃ,くにひこ
+おかもと,よしお
+うえだ,とよかず
+にし,あつき
+ただ,たかゆき
+やました,けんじ
+ささもり,ゆたか
+はせがわ,ともゆき
+いまい,みゆき
+よこやま,けんじ
+すぎやま,よしまさ
+あらい,ともこ
+あまがや,ゆめの
+つる,みのる
+やいた,まき
+せき,まり
+はら,よしのり
+みうら,すすむ
+ささ,ゆきこ
+たかさき,まきこ
+はらだ,えみこ
+くらた,やすひろ
+あげまつ,ひろみち
+ふくもと,みきお
+おくむら,だい
+おそえがわ,やすなり
+さいた,まさひろ
+さかい,ひろみ
+さかり,のぶひろ
+さの,ゆたか
+さとう,よしひこ
+さとう,あきお
+さとう,さとし
+せきかわ,あきら
+せしも,こうじ
+しぶや,まさのり
+しまもり,まさひこ
+しもだ,けいみん
+しんたに,ゆうじ
+しらい,しげき
+しゅう,ごいち
+すだ,なおき
+すぎた,ゆういちろ
+すざき,てつや
+すずき,としや
+すずき,のりゆき
+たがい,やすし
+たかぎ,けんたろう
+たかはし,まさこ
+たかいし,ともあき
+たかおか,たかき
+たかやま,しんいち
+たけもと,のぞみ
+たまち,ひろし
+たなか,ひろふみ
+たに,ひろぶみ
+てらさき,ひろゆき
+さくらぎ,のりひさ
+とよさと,ひろし
+つじもと,ゆきお
+つるた,しのぶ
+うちやま,たけし
+ききょう,よしたか
+うえの,よしこ
+ながた,のりこ
+わだ,しずお
+いとい,よしひさ
+わたなべ,ひでとし
+やぶうち,しょうへい
+やまだ,あきお
+やまもと,あきひろ
+やまもと,まさとし
+やました,つとむ
+やました,あきら
+やの,ともゆき
+よこた,みなこ
+よねむら,ただし
+よしむら,ひろみ
+まつだ,よしつぐ
+ほそや,しょうじ
+みやした,しげとも
+しが,まさみつ
+やまだ,ゆういち
+はやし,さほり
+いけだ,つよし
+うえの,かずたか
+さいとう,てるよし
+ながやす,こうじ
+はぎお,ともひこ
+はまだ,まさじ
+むらかみ,のりひろ
+あべ,しゅんじ
+あきやま,としゆき
+あんどう,てんせい
+あらき,しげみつ
+あそ,くにかず
+ばば,ゆうすけ
+えびさわ,ひろし
+ふじい,よしのり
+ふじい,たつや
+ふじた,ひろし
+ふじわら,ひろむ
+ふくだ,じゅん
+ふくおか,いさお
+ふるや,としゆき
+がど,ひさし
+はが,あつし
+はましま,ゆみ
+はせ,ゆたか
+はしずめ,なおき
+つだ,ひろこ
+はやし,としろう
+ひらい,ゆういち
+ひらさか,ひろゆき
+ひろわたり,たかひろ
+すずき,ひでき
+ほそみ,ひろあき
+いだ,ちはる
+いがらし,ゆきや
+いいじま,たけし
+いまむら,こういち
+いれい,まさる
+いしい,ともゆき
+いその,みつとし
+いとう,よしまさ
+いわさ,としみ
+いずみさわ,せいじ
+かいだ,こうじ
+かまた,としえ
+かんべ,たかひろ
+かねこ,あきら
+よねもち,なおし
+かたおか,かずひこ
+かとう,やすひろ
+かとう,ゆうじ
+たまがわ,こういちろう
+なるけ,たかし
+きど,たかふみ
+きくら,かつみ
+きむら,まさき
+きのした,やすひろ
+きたあき,ひろゆき
+こばやし,かずひろ
+こばやし,としき
+こんの,よう
+こみやま,よしひろ
+こにし,あきのり
+こやま,ひろみ
+くどう,じゅん
+くりや,ゆういち
+よしだ,さとる
+まきの,としお
+まさき,ひでよ
+まつい,やすひろ
+まつもと,たけし
+まつやま,じゅん
+みたむら,じゅん
+みわた,なおき
+みやもと,ひとみ
+もちずき,しゅういち
+もり,まさゆき
+まつだ,けんじ
+もりわき,のぶゆき
+むらかみ,たけお
+むらやま,さとし
+ながしま,みちのり
+うちぞの,たかし
+なかじま,ひろあき
+なかむら,ひろし
+なかむら,よしひこ
+なかしま,のりお
+ならはら,さとし
+にしぶ,あやこ
+にしもと,なおこ
+にしざわ,だいすけ
+のじま,のりお
+ぬわ,たけし
+おがわ,けんいち
+おおがき,かずひろ
+おき,まさひこ
+おおもり,ひろあき
+おおぬま,まさお
+おおたけ,さえこ
+さこだ,しゅういち
+おかだ,てつじ
+おきた,さとこ
+おおの,たかし
+おりい,しゅんじ
+おざわ,やすひろ
+さいとう,けいじ
+さかもと,よしお
+さかた,まさひろ
+さなぎ,よしき
+ささき,ながまさ
+さとう,まもる
+さとう,ひでき
+せきの,のりひろ
+しまだ,あつし
+しみず,たかあき
+しもだ,ひろゆき
+しのざき,あつし
+しょうだ,けんじ
+すがの,ひろゆき
+すぎさき,ようこ
+すぎやま,たけし
+すずき,ひでゆき
+すずき,まさのり
+たぐち,しん
+たかはし,かずのり
+たかはし,おさむ
+たかはし,ひでき
+たかやなぎ,しげる
+たけい,のぶお
+たけしま,かつしろう
+たむら,しょういち
+たなか,やすじ
+さの,ひろふみ
+てらまえ,まき
+とぐち,たけし
+とみい,まさひろ
+とっとり,あきひこ
+つじ,まさひこ
+つきざわ,こうじ
+つるた,のりこ
+うちだ,しょうこ
+うえだ,ようすけ
+うえの,じゅんじ
+えがしら,ただし
+きたわき,せいき
+わたなべ,たかし
+わたなべ,ひろゆき
+わたらい,じろう
+やまだ,あつし
+ふじた,まさとし
+やまもと,やすし
+やまね,みちる
+やました,しげみ
+やまざき,ただし
+よだ,しゅんすけ
+よしだ,かずよし
+よしむら,さとる
+おざわ,かつゆき
+やまだ,きよし
+ささき,のぶゆき
+あぜがみ,しげかず
+ふくはら,のぶゆき
+はしもと,よしひろ
+いそだ,こういち
+かまた,たつや
+きむら,よしひろ
+こばやし,げん
+くまさき,よしあき
+みくに,とみお
+えだ,たかし
+ねもと,まさゆき
+おの,たくじ
+さえき,のりゆき
+せき,ゆきお
+すやま,ひろこ
+たなか,けんご
+たざわ,みきお
+えんど,じゅんこ
+やまぐち,のりお
+やすだ,さとし
+すずき,たけし
+ひろはし,やすお
+かとう,ひろよし
+うえはま,みのる
+まとば,ちひろ
+わたなべ,とおる
+かわしま,てつお
+ふじかた,みつお
+こいけ,おさむ
+たなか,りょうぞう
+だけやま,ひろゆき
+くしびき,すけひで
+すがはら,てつお
+ひがし,ふみひろ
+ほか,けんたろう
+いわた,たかゆき
+すがわら,ますこ
+すと,まさみ
+まつざき,まさのり
+あかまる,おさむ
+あべかわ,れいじ
+よねだ,まさお
+そがべ,ゆきお
+わかばやし,はれお
+すみた,てつや
+いのうえ,たかよし
+みやもと,つとむ
+ふじかわ,なおと
+さいとう,ふみお
+たなべ,けんじ
+しみず,せいじ
+のぐち,しげあき
+かわなみ,まさあき
+ふくしま,あきら
+おだわら,みちお
+おおた,ようじ
+かわの,ただよし
+くにゆき,やすひろ
+しまだ,みつる
+たかしま,みつぎ
+つや,まこと
+なかしま,まさお
+やぎした,としお
+きしもと,まこと
+くげ,けんじ
+あさの,よしあき
+かわかみ,つねお
+しまだ,しゅういち
+ふじい,しゅんいち
+ひが,じゅんき
+たなべ,あきら
+くらや,きへい
+なかざわ,まさひと
+あわた,しげる
+じだ,あきお
+ほそかわ,としお
+しぶや,よしかず
+こばやし,きよし
+きたがわ,よしてる
+みずたに,あきら
+たかせ,としお
+みやむら,とおる
+よこはた,としひこ
+なりた,みつよし
+あべ,さだひろ
+なまえ,けんじ
+きむら,ゆたか
+なごし,ひであき
+とみなか,よしお
+なかの,つもる
+おおさく,かずお
+はやし,しげあき
+おおさ,たかし
+やまうち,じ
+おだ,りょうじ
+めぐろ,ひろよし
+かなさき,とみお
+おかの,やすお
+くさかわ,なおき
+いのうえ,たけし
+やだ,かずおみ
+まつおか,ゆきお
+すずき,ゆうじ
+たきもと,くにお
+ひがしばた,ひでお
+いいだ,けんし
+かんの,まさひろ
+たなか,しげる
+いくた,やすひさ
+さの,ひでまさ
+すがわら,やすひろ
+ながた,ゆきお
+うらの,さとし
+すぎやま,かつゆき
+おかべ,ふみお
+こいで,たかし
+いしたに,さとし
+もり,えいじ
+きたむら,たかし
+いわみ,やすお
+ふかだ,たかし
+うえだ,ゆうじ
+ふるたに,たかまさ
+どい,たかし
+ながの,としのり
+きむら,あきら
+かどや,ゆうご
+おおた,くにお
+たけうち,けんいちろ
+とくもと,たかあき
+いとう,しふみ
+やまざき,ときお
+あおき,よしみ
+ちぎり,えいじろう
+よしなが,ちかえ
+ひらばやし,ひろかず
+なかはら,けんじ
+ひろや,のりひろ
+かない,かんせい
+とおやま,たかし
+うの,きんご
+しばた,としお
+きたがわ,きはちろう
+はらだ,ひでゆき
+やまむら,けんじ
+くまみ,ゆうぞう
+いしばし,としゆき
+しばた,はるき
+さくやま,かずお
+いけだ,せいいち
+たけもと,かずお
+たもと,とみお
+こむろ,りょういち
+たなか,まさとし
+かまだ,ひろし
+たばた,けいいち
+ひらかた,かずお
+たけうち,てつお
+いまず,やすただ
+ふじた,としみち
+やまもと,つとむ
+やまき,ゆうじ
+しらいち,まさる
+ささき,むつみ
+みやかわ,まさたか
+くどう,けいこ
+あらまき,のぶお
+きはら,なおき
+おか,きょう
+こにし,しげみ
+たけうち,さちこ
+たなか,しんいちろう
+さかもと,まもる
+まつだいら,えいじ
+いの,たつろう
+おばな,しげやす
+おおくわ,きよし
+ごとう,しんじ
+すずき,きよし
+にしおか,さぶろう
+ささき,ひでお
+はら,いくお
+せき,ひろし
+さいとう,ひとし
+ふじた,しゅんすけ
+さかた,こういち
+まえざき,いさお
+しおみ,みつお
+たかくわ,まさのぶ
+いしはら,ちえこ
+こくぼ,けいこ
+みやざき,しげお
+ありま,けいこ
+うちやま,たかし
+なしき,かおる
+ふじた,ゆみこ
+たかぎわ,いさむ
+にしだ,ひとし
+きくち,ひでふみ
+なかい,まさみ
+いいだ,やすし
+やまぐち,のぶひろ
+やの,ゆういち
+やまもと,ひさし
+ほりむき,よしま
+あだち,ふみのり
+うらの,こういち
+たけだ,みちこ
+さいとう,ひろつぐ
+しまむら,こうじ
+ふくだ,つよし
+きむら,えいこ
+やまもと,えりこ
+しげやす,えいいち
+かのう,ひろあき
+すわ,ふみお
+おかざき,のりお
+ふかや,まさひろ
+こざい,みつる
+ほどやま,ひでお
+くぼた,きよし
+いいずか,りょうこ
+たかぎ,たけのり
+いわお,まさし
+いしい,いさむ
+わかばやし,としひで
+ぜんけ,としお
+わたべ,よしみ
+まつもと,ひろしげ
+まるやま,けいじ
+なかの,ひでのり
+おおくぼ,かずはる
+くぼた,まさと
+にしかわ,ひろし
+にった,ふみこ
+いしだ,ひでひこ
+かます,けんぞう
+かげやま,みのる
+まつむら,としみち
+ささき,すすむ
+ひらの,よしかず
+すずき,いちろう
+にしはら,けい
+くろいわ,たかし
+たかはし,ひろし
+たけうち,ひであつ
+しみず,あきひで
+さたけ,しんじ
+こたに,たくもり
+こでら,まさと
+はまの,みちお
+なかむら,ひろし
+ゆあさ,けんじ
+おかだ,よしひろ
+こばやし,よしはる
+ふくだ,じゅんいち
+かみむら,たかし
+いまだ,まさひろ
+そね,ふみお
+みのぐち,よしのり
+くだなみ,まさゆき
+いのうえ,みどり
+うえむら,のぼる
+みうら,おさむ
+すがわら,さとし
+わたなべ,なおゆき
+にしわき,ようじ
+おおたに,まさあき
+くろかわ,きよし
+くぼた,のぶお
+たむら,ひろひこ
+えびはら,きいち
+なかむら,ようこ
+やまね,よしと
+あさま,まさひろ
+みうら,やすのぶ
+あらかわ,しんじ
+こじま,よしあき
+さかた,こうへい
+こばやし,おさふみ
+おがわ,よしお
+かとう,たかゆき
+みつい,けいいち
+てしま,かずまさ
+あそ,ひろいち
+もりや,ひとし
+やな,かずお
+さいとう,ひろゆき
+いちき,ひろし
+おおた,ひろし
+ほりうち,けいいち
+たにぐち,よしお
+にしの,そういちろう
+ふるはし,こうぞう
+あきた,としお
+おくしま,たかし
+おおたに,ただひろ
+かめおか,よしお
+はらおか,かつやす
+なかむら,ひろし
+あらしま,ゆきお
+ながさわ,よしろう
+やまおか,きよし
+はせ,まさかつ
+きしもと,くにお
+すずき,よしお
+かめや,かつみ
+ますだ,まさはる
+えんど,けんいち
+さくらい,たかあき
+ふるしょう,ふじお
+うしき,かずみ
+こいけ,ひろし
+とうま,さちひろ
+なかざと,ひろし
+やまおか,よしのぶ
+なかね,のぶはる
+とみた,のりかず
+さとむら,けいじ
+ひさまつ,とよとし
+おがわ,まさと
+さかい,たけし
+なかぎ,ゆみ
+さわぐち,まさくに
+まつもと,としお
+ふるかわ,こういち
+ふたみ,きよし
+たなか,ふくむ
+ひびの,ひろし
+すなはら,しょうじ
+いけだ,たかし
+ごとう,のぶゆき
+いしの,つとむ
+きむら,しげる
+やまだ,みつお
+もりもと,まさる
+おかもと,まつお
+なかじま,さかえ
+きたむら,ますみ
+なかいし,たけゆき
+わさ,ひでお
+こしむら,まさし
+ひなた,きょうへい
+なかむら,のぶお
+ふくい,たつひこ
+たかだ,かずお
+なかむら,ひろし
+にしやま,まさひろ
+なかやま,たかやす
+はりがや,ひろあき
+ますもと,よしお
+てらにし,まさのぶ
+ながくぼ,おさむ
+よしの,たかし
+もりた,のぼる
+てらお,みつひろ
+よしむら,きよじ
+わたなべ,けんじ
+まつもと,きよし
+おざき,よしあき
+ひぐち,ふじき
+みやもと,みさお
+やまぐち,ますみ
+やまもと,えつこ
+かとう,こういち
+なかい,かずみ
+ふじた,ひろし
+すがわら,こうじょう
+いしざき,たかゆき
+たつみ,よしあき
+なかした,まこと
+おじま,ひろあき
+あさした,まさふみ
+ほりい,みよし
+いり,けんいち
+ふじまき,ただあき
+かじわら,しゅういち
+はせがわ,みつお
+ふなやま,えつお
+きはら,たかし
+たけだ,けいこ
+いいだ,かなえ
+ふるど,まさお
+もり,しゅういち
+ふくと,なおや
+おおはし,あきひと
+あおき,ひでし
+たじま,ひろし
+おおつか,ともひろ
+あおの,じんいち
+いのうえ,ひとし
+えんど,まさひろ
+ひろせ,よしかつ
+えんど,あきお
+かわい,みちる
+あいざわ,ふとし
+こいたばし,きよひろ
+さとう,やすひろ
+かのう,しげき
+うえむら,まさとし
+すみよし,ひでお
+ひろた,さとる
+いなとみ,かずよし
+いとう,のりかつ
+くぼ,ひであき
+かぶらぎ,としひろ
+いけだ,よしのり
+たかはし,かずお
+さかい,まさひろ
+かとう,やすくに
+たけい,やすゆき
+はんだ,とおる
+ながや,かつみ
+はっとり,ひろのり
+しみず,よしなお
+いまにし,まさと
+くまべ,まさお
+まちだ,つかさ
+やぎ,ちはる
+おだま,ゆきお
+きたじま,じゅんこ
+たちばな,たくろう
+ふじもと,しゅうじ
+みずの,いくお
+えぐち,かつみ
+かわべ,さつこ
+なかむら,ちあき
+あすま,きよかず
+はむら,つとむ
+いとう,ゆうじ
+いけざき,たけし
+やまさき,のりゆき
+にしざわ,そうじ
+にわ,えいひこ
+みうら,ひさし
+かたおか,あけみ
+はやし,まきこ
+みさき,たけし
+おだくら,ひろみち
+ふしみ,ちかと
+ひろた,たかし
+はたや,としゆき
+さかい,ゆうじ
+いだ,いちろう
+さとう,ただし
+ほしの,のぼる
+おがわ,なつあき
+ふくざと,りゅういち
+たなか,せいじ
+ささき,きょうこ
+おずち,みつお
+ふろもと,みのる
+にしむら,しんや
+たけだ,とみこ
+たけとみ,こういち
+おかだ,みちお
+まと,かずゆき
+すずき,あきよし
+むかい,よういち
+こが,やすお
+かとう,かずみ
+よこい,ふみとし
+うしごめ,まさたか
+こまつ,よしたか
+いとう,ひさあき
+さとう,しゅんすけ
+ひろせ,のりよし
+ごみ,じゅん
+たなか,たつお
+まつもと,たいいち
+はやし,せいじ
+たかはし,かつひろ
+あらい,としゆき
+ほし,きよし
+てらだ,しげる
+いずは,はるお
+すなだ,やすじろう
+いじま,ふみお
+たかだ,としはる
+わかまつ,こうじ
+つだ,としゆき
+ほしくま,まさはる
+ほんだ,ひろみ
+かまだ,えいじ
+はやし,みつひろ
+いまい,たつる
+つちや,いずみ
+わだ,いくと
+よしだ,きみひろ
+だて,じゅん
+はすこ,よしのり
+たけなか,ひろあき
+おくだ,かずお
+ほし,ゆうすけ
+かめだ,かおる
+ひしぬま,ひろふみ
+おおにし,ひろあき
+さとう,まさあき
+ほそかわ,あきら
+よしざわ,ひでお
+はらだ,よしたか
+ささき,ともゆき
+いいだ,ひでみ
+きがわ,こういち
+いけお,ひろゆき
+あらい,やすお
+かきかわ,じゅんいち
+ごとう,くにとし
+みやこし,やすえ
+ふじた,あつみ
+くらた,ひろゆき
+もりおか,ゆみこ
+やまうら,やすよし
+くろは,ようこ
+いずはら,なおかず
+しげとめ,よしあき
+にし,やすふみ
+あきやま,とみお
+いけだ,かずきち
+もり,やすみ
+ひろかわ,ゆうじ
+そめや,あきお
+さくらい,えみこ
+みずの,いさむ
+てらだ,としかず
+ひらまつ,しげる
+おおた,ごろう
+ひらまつ,えつお
+にしだ,ゆきお
+むらた,ひでゆき
+みずこし,けんいち
+とみた,たかお
+かわみ,せいいち
+しいの,しげお
+なかむら,のぶお
+いしかわ,こういち
+かねたけ,かなめ
+おしげ,たいち
+こじま,ゆうぞう
+とば,まこと
+いわた,ひであき
+おの,けんじ
+こさか,ひさたけ
+かんの,あきお
+いとう,としつぐ
+たかぎ,みちこ
+たかの,しんいち
+いながき,てつお
+のざき,じゅん
+たけだ,ふみこ
+ごとう,しんじ
+ほりかわ,かずひろ
+すぎもと,りょう
+あらい,せいじ
+ふじわら,ひですぎ
+よしだ,しゅういち
+おしま,たけし
+ごとう,だいじろう
+いずみさわ,よしとも
+いわぶち,まさつぐ
+いまきた,しょうじ
+むらた,しょうこ
+しもの,かずひろ
+ごかいち,こうじ
+やまもと,のぼる
+ながしま,じろう
+みしま,よしひろ
+やすなが,かつみ
+おふち,じろう
+こむかい,きよみ
+ながさわ,たいせい
+きたおか,かずひこ
+はら,かずや
+ふかだ,のりふみ
+きたがわ,たかあき
+おおもり,れいこ
+はぶち,ひでかず
+みやざき,ひろむ
+しろた,まさゆき
+こみや,こうじ
+てらお,じろう
+にしぐち,としあき
+かねずか,ひろあき
+すぎやま,てつじ
+たちばなき,はるあき
+もりおか,まさかず
+よのもと,ひでき
+くすだ,かずいち
+ありやす,えつお
+つじもと,ひさと
+ふかみ,じゅんいち
+あきやま,きよし
+もちずき,よしたか
+のむら,しゅんじ
+わだ,きよし
+おち,ひろし
+むらまつ,ちえこ
+やの,おさむ
+もちずき,きよし
+ひらた,なおき
+わかまつ,としさだ
+さかもり,かよこ
+こばやし,あきひこ
+いまむら,よしひろ
+おおすが,かえで
+たかやま,たかとら
+きたみ,ひろひで
+まえだ,たえこ
+ともの,けんいち
+かぶらぎ,まさゆき
+ねぎし,けいぞう
+わだ,ゆみこ
+すずき,やすゆき
+さなえ,かずまさ
+の,たつや
+いしばし,ひろゆき
+やました,つねお
+すずき,かずひろ
+みやわき,としひこ
+まつうら,よしあき
+きたやま,よしひろ
+やまぐち,じゅんじ
+にしやま,かつじ
+かわばた,まさひこ
+みかみ,じゅん
+すぎやま,いさお
+きじま,のりお
+ひがし,しゅうじ
+あべ,まさと
+いのうえ,ようこ
+ふかだ,あきお
+むらまつ,じゅん
+ひらばる,たけお
+ちょうなん,よしまろ
+かわむろ,さとし
+つくだ,みのる
+みやもと,としひろ
+すえひろ,じゅんいち
+しらかわ,こうじ
+たなか,けいし
+やすい,よしのぶ
+きむら,かつこ
+なかがわ,かつよし
+くさの,としひろ
+あだち,よしひろ
+なかとも,むつみ
+ますもと,つとむ
+わたぬき,やすひろ
+たかはし,かつじ
+こぼり,みきお
+おがわ,こういち
+ふじもり,みきお
+いはら,えみ
+わたなべ,ゆうこ
+うらべ,いさむ
+みうら,みつる
+なかい,けいいち
+わらしな,しげる
+ふくなが,よしかず
+おおつぼ,よしあき
+よしだ,みのる
+はやみ,かつひこ
+のむら,まさかず
+ひらい,よしゆき
+しまだ,まさえ
+すずき,なおとし
+てらしま,きみひこ
+しずはら,れいこ
+やまとや,かずひこ
+おぎの,ひろお
+まつぐま,しげほ
+きたい,としひこ
+あかだ,しずお
+たけよし,せいのすけ
+ひろの,そおじゃ
+しまむら,とまさ
+りゅうご,しゅんいち
+くにえだ,まきお
+おおつか,ほこく
+いけがみ,ひでとし
+かねまつ,かねひで
+おおがわら,よしのぶ
+すずき,たかし
+てらだ,せつこ
+かわさき,てつじ
+おしやま,よしひさ
+かわかみ,しげき
+なかむら,としあき
+みたに,としひこ
+こまつ,ひろたか
+あかいわ,としひこ
+いちい,ふみや
+ふくやま,まさあき
+くどう,よしてる
+まつした,しんじ
+にしかわ,ゆきひろ
+あまがみ,しん
+やしき,あいいちろう
+わだ,あつこ
+ますだ,ともこ
+よしむら,ゆうじ
+おだ,しんじ
+よこやま,たかふみ
+いとい,ゆりこ
+すずき,かつひろ
+ながはま,ひろゆき
+やざき,ていぞう
+やじま,きよし
+むかえだ,さとる
+なかむら,たつあき
+やまむら,こういち
+のもと,としゆき
+やまざき,としひこ
+さとう,としや
+いのうえ,ひろゆき
+おかの,ひでお
+なかにし,はるひさ
+うえだ,ひろみ
+あいざわ,あきお
+あらい,ともなり
+ながいし,かつみ
+はこい,まさお
+くすもと,たかよし
+ありとみ,じつろう
+はら,たみお
+ほんま,まさはる
+はしもと,みちはる
+はしもと,まさお
+おおぬま,いさお
+はなき,しんいちろう
+はしもと,あきこ
+さくらざわ,ひでとし
+あかぎ,やすひと
+あきずき,まさとし
+あんどう,ひろき
+あらい,たまお
+あさむら,かつみ
+ちば,あこ
+えぐち,ゆきたか
+ふちの,とおる
+ふじまる,ひさと
+ふじさわ,のりお
+ふかだ,ふみひろ
+ふくい,ひろし
+ふくとみ,りゅうさく
+ぎま,かずよし
+はぎわら,いちろう
+はら,きよたか
+はるな,たかあき
+はつみ,あずさ
+はやせ,しんご
+はやつ,ひろし
+ひらおか,まゆみ
+ひろし,のぶこ
+ほしこ,まさひろ
+いちかわ,まさる
+いがわ,きよし
+いいずか,ありさ
+みつもと,ひろたか
+いまむら,ひろゆき
+いなみ,ひろみち
+いのうえ,たけし
+いせ,ゆきお
+すぎはら,ひろたか
+いしもと,けんじ
+いしずか,とおる
+いとう,ようじ
+かみかわ,ただみつ
+いわさき,けいこ
+いずみ,みわ
+かまだ,たかひろ
+たけうち,みき
+のむら,えみこ
+かたの,てるひさ
+かとう,たかし
+かわだ,ひろゆき
+いしい,やすき
+かわしま,えいこ
+きくかわ,ゆかり
+きし,たくし
+こばやし,てつや
+こばやし,かずひこ
+こやま,あきら
+こくぼ,ようこ
+こんど,みえ
+こしお,まさとし
+くぼ,つとむ
+ほしの,としや
+くさかわ,けいいち
+くすみ,ゆたか
+まきの,ちひろ
+まるやま,まこと
+なかむら,ちとせ
+まつもと,あつし
+めざわ,ひとし
+みね,まさやす
+みと,のぶお
+みやもと,しげる
+みやざわ,かつみ
+みずた,けんじ
+もり,はずき
+もりもと,まなぶ
+もろおか,みつひろ
+あんどう,いわお
+みょうが,たかゆき
+ながお,あきひろ
+ながせ,すすむ
+ないとう,さだみつ
+なかじま,とおる
+なかまる,としこ
+なかむら,りゅういち
+なかにし,ひでと
+なかの,つかさ
+しなだ,あきら
+なりた,たくじ
+にいやま,ひろし
+にしかわ,あきら
+にしずか,としや
+ひの,かずゆき
+はせがわ,みつあき
+おがた,ひとし
+むさし,みつる
+おおくぼ,はるし
+おおさわ,ひでき
+おおた,しんじ
+おおわだ,ひろのり
+おかだ,たかよし
+おかもと,ひろし
+おきもと,まさひこ
+おにつか,まさあき
+おさき,たかし
+さえき,よしひろ
+さかい,りょうじ
+さかき,きょうこ
+さかうえ,たかゆき
+さの,としふみ
+さとう,やすし
+さとう,さとし
+さわい,みちひろ
+せきはら,あきら
+せしも,しゅういち
+しばた,てつろう
+むらた,りゅうたろう
+しみず,はやとし
+しもおさ,たけし
+しのだ,はつえ
+しらい,かずひこ
+すどう,もとゆき
+すぎしま,まさる
+すやま,とものり
+すずき,ゆたか
+しゅくや,じゅんいち
+たぐち,なおゆき
+みやもと,たかし
+たかはし,けんりゅう
+たかはし,ゆきえ
+たかはし,いちろう
+たかせ,しげき
+みかみ,けいすけ
+たけやま,としあき
+たなべ,ひろゆき
+たなか,ひろこ
+たなか,のりあき
+たにぐち,じゅんこ
+たていし,なおや
+てるきな,あきよ
+とみおか,なおき
+とよだ,まさひこ
+つちや,よしひろ
+つじ,ひろし
+つのがい,やすのり
+うちだ,まさふみ
+うだ,けいじ
+うえはら,しんじ
+うえの,ゆうじ
+うめはら,まこと
+うすい,こうへい
+わだ,よしあき
+わたなべ,さとし
+やはぎ,なおふみ
+やまだ,としお
+やまぐち,ともかず
+やまもと,けんじろう
+やまもと,まなぶ
+やました,りんじゅ
+やまざき,ひとし
+やすだ,まさみ
+よどがわ,のりお
+よろずや,なおひさ
+よしまつ,ちはる
+えだひろ,みどり
+こじま,やすひさ
+おがわ,めぐみ
+たかせ,まみこ
+ふくた,かずみ
+たぐち,ひろむ
+あさの,としひこ
+ふじい,けんじ
+ふじわら,こうじ
+ごとう,ひろかず
+はやし,としあき
+ひらい,ひろたか
+いちい,しげゆき
+いけだ,いくじろう
+いしまる,みわ
+いとう,てつや
+かげやま,つよし
+かさま,のりまさ
+かとう,こうた
+きくち,ともあき
+きたがわ,みちはる
+こばやし,こうたろう
+こんど,のりこ
+くどう,はやと
+くさふか,しのぶ
+まつだいら,まき
+みくに,やすし
+みやち,たかふみ
+みやざわ,ひろき
+もりた,くるみ
+むろぞの,ひろあき
+なかみち,しょう
+にしむら,しんや
+おがわ,たかし
+おおえ,まさみち
+おおた,たかし
+おかやま,みつより
+さいとう,たかのぶ
+さの,たくや
+さとう,たかし
+しい,みさこ
+しんきゅう,まさゆき
+すぎやま,きよたか
+たかぎ,よしお
+たけうち,かほる
+たなか,のぶこ
+たるさわ,あきこ
+ともの,かずみ
+わたなべ,まさとし
+やまもと,ひでと
+やまざき,ふみの
+よねみつ,まこと
+ゆり,ともお
+まつぐま,ふみこ
+あじま,やすあき
+あまの,ちあき
+あおき,よしこ
+あおき,なおひさ
+あらき,かつじ
+あさくら,たつお
+あずま,りえ
+さたけ,けいこ
+だいお,ひでき
+なかむら,たかこ
+ふじい,たつのり
+ふじおか,てつろう
+ふくい,こうじ
+ふなだ,ゆうこ
+ごとう,かいちろう
+はまだ,よしみ
+さとう,せいご
+はりま,なおき
+はせがわ,あきひこ
+はた,しんいちろう
+はっとり,ゆき
+はやみ,すみひと
+はやし,まさのり
+ひえだ,みちかず
+ひおき,とうめい
+ほだ,ひろき
+ひろすえ,じゅんこ
+ひしだ,ひろし
+ほんごう,まさと
+ほりえ,あきのり
+ほしな,こういち
+いちかわ,ひとし
+いがた,えいいちろう
+いいずか,まこと
+いけだ,たかゆき
+ほそい,けんたろう
+いの,じゅん
+いのうえ,ふみのり
+おおもり,けんいちろ
+いしい,けいじろう
+いしい,やすし
+いしつか,としゆき
+いそがい,ゆうこ
+いとう,さとし
+いわはし,ゆうこ
+いわさき,ひろゆき
+かがぶ,しんじろう
+かまほり,ともひこ
+かみや,のぶゆき
+かない,のりこ
+かんだ,ちえ
+かのう,たけし
+たまたに,しま
+かとう,ひろき
+かとう,じゅんこ
+かわぐち,こうじ
+かわむら,しゅうじ
+かわしま,のぶこ
+きくち,いちろう
+きむら,たかひさ
+きし,なおき
+きたがわ,なおみ
+きよはら,つとむ
+こばやし,けんじ
+こだま,やすひろ
+こいわ,ともゆき
+こじま,さとし
+こんど,けんいち
+くぼ,なおき
+くまくら,けんいち
+ひらい,こうじ
+くろだ,あつし
+くろさわ,えいじろう
+まえだ,さとし
+しぶたに,こうじ
+ますだ,ゆうこ
+はら,けんじ
+まつい,しんじ
+まつもと,ひろし
+まつなみ,よしこ
+まつおか,しんご
+まつやま,あきら
+みかみ,ひでお
+みなみ,あきら
+みたむら,まさとし
+みつま,かずひと
+みやした,ひろゆき
+はしぐち,しげき
+みずの,としゆき
+もり,まさし
+もり,ひろかず
+もりや,むつお
+むねかた,かずよし
+むらた,ゆきもと
+みょうじん,みちお
+ながしま,よしかず
+ないとう,まさき
+なかじま,てるみ
+なかもと,ひろかず
+なかむら,ゆうじ
+なかむら,けんた
+なかや,わたる
+なん,けいすけ
+なとり,けんや
+にいざわ,よしのり
+にしだ,やすお
+にしな,きよし
+にしざわ,よしひろ
+のがわ,ひろや
+のむら,まさひろ
+おがさわら,かずてる
+おがわ,やすのり
+おはし,さとし
+おおの,ひろやす
+おしま,つとむ
+おおたき,ふとし
+おおつか,えいき
+おおや,むねお
+おかだ,ひろゆき
+おかざき,こうたろう
+おおみ,あやこ
+おのでら,まさひこ
+おの,たかあき
+おざき,よしまさ
+さいだ,ももこ
+さかぐち,こうじ
+さかい,なおき
+さこ,あかし
+さんべ,まこと
+ささき,ゆたか
+さたけ,としき
+さとう,ゆきたか
+ひらの,ひろあき
+さわむら,ひろし
+せきね,かずあき
+しばはら,かずの
+しばざき,まさこ
+しま,こすけ
+しみず,けいすけ
+しもかわべ,あきひろ
+しのざき,ひろし
+しらはま,みちひさ
+しょうなご,たかしげ
+すだ,めいじろう
+すぎもと,みか
+すぎた,たかゆき
+すみだ,あつし
+すずき,まさふみ
+すずき,しげる
+すずの,かつふみ
+たぐち,みゆき
+たかぎ,としかず
+たかはし,ひろみち
+たかはし,ひでのり
+たかはし,けんいち
+たかの,みきこ
+たかしま,ただし
+たけだ,いずみ
+たけなか,けんいち
+たけやす,れいじ
+たむら,ひろゆき
+たなか,こういち
+たなか,たかよし
+たなか,とおる
+たにぐち,かつひこ
+てらまえ,せいいちろう
+ときわ,ちえこ
+とりごえ,さだゆき
+つちたに,ひでき
+つじむら,たかし
+つかもと,けんたろう
+つつみ,まさのり
+うちの,さとし
+ねず,としあき
+うえつぼ,よしたか
+うおずみ,さんぺい
+わだ,みつのり
+わたなべ,よしき
+やぶ,こうじ
+やまだ,ゆうこ
+ひさの,りか
+やまぐち,のりゆき
+やまかわ,ゆきこ
+やまもと,なおと
+やまもと,しんいち
+やまうち,しんいちろう
+やまざき,たかお
+はぎわら,みきお
+よねざわ,えり
+よしだ,さちこ
+よしまつ,けんたろう
+ずし,ゆきお
+いわかわ,そうたろう
+いしまつ,ひろやす
+あべ,えいいち
+あかいし,えいち
+あまがた,たかし
+あんざい,まさひで
+あらき,としみつ
+あしだ,さとし
+ちょう,えいじ
+どい,けんいち
+えのもと,きよみ
+ふじい,さつき
+ふじた,たかし
+ふくむろ,たかし
+ふなき,なおき
+ふるや,ともや
+いわさき,さえこ
+いとう,しろう
+はだ,ひであき
+はなど,みのる
+はらだ,たけし
+はらぞの,のぶひろ
+はしもと,さとし
+はっとり,まこと
+はやし,たかよし
+ひがし,かずお
+ひらの,ひろこ
+ひりき,けんいちろ
+ほんだ,さなえ
+ほしやま,みぎふみ
+いちはら,たかし
+いがらし,かつのぶ
+いけだ,りょう
+いまむら,おさむ
+いなむら,とものり
+いのうえ,やすひろ
+いさか,しげる
+いしだ,けいいち
+いしい,のぼる
+いしずか,ゆきお
+いとう,しょうこ
+いとう,まさみ
+いとう,えいじ
+いわなが,なおこ
+じんば,つねのり
+かじもと,たくや
+かこ,としひこ
+かん,たくや
+かのう,まゆみ
+かすや,まさなり
+かとう,けんじ
+かわべ,よしゆき
+かわかみ,けんいち
+かわの,まさひこ
+かわしま,やすのぶ
+きくち,まもる
+きむら,あつし
+きの,あき
+きたがわ,おさむ
+こばやし,としひろ
+いとう,しんじ
+こくしょう,まさる
+こんど,まさゆき
+こやま,ひろたか
+くれまつ,たかひで
+くりゅう,よしえ
+まちた,まさき
+まるいち,まさゆき
+ますだ,ゆきこ
+まつい,ひでし
+まつもと,よしき
+なかむら,ひろゆき
+まつおか,たけし
+まつやま,こうたろう
+みしま,かずみ
+みつもと,きよみ
+みやもと,としあき
+うちやま,みきこ
+みずの,まさよし
+もぎ,もゆる
+もり,まさひろ
+もりた,かずひさ
+もとばやし,さとる
+むらかみ,ひろあき
+むらた,とものり
+なば,ひろゆき
+ながおけ,さとし
+ながた,しょうへい
+なかがわ,よしゆき
+なかじま,たかし
+なかむら,たつや
+なかにし,いずる
+なかお,あきこ
+なかやま,ふみお
+ねもと,みつあき
+にしだ,よしや
+にしむら,きわむ
+のぶはら,こうじ
+のぞえ,はじめ
+おおぎ,たけし
+おおえ,よういち
+おおくぼ,ひろふみ
+おおもり,なおき
+おの,あきら
+おおた,あさこ
+おおたに,やすひろ
+おか,ふみこ
+おかまつ,たかひろ
+おかもと,のりお
+おおの,なおき
+とくみや,てつや
+さいとう,ゆたか
+さかきばら,たかお
+みたに,けんいち
+さの,しゅうぞう
+ささき,せいじ
+さとう,たかかず
+さとう,のぼる
+さとう,ともき
+さやの,いくや
+せんな,としみつ
+しぶたに,きょうこ
+しまむら,よしみつ
+しなだ,かつみ
+しらはま,たろう
+しゅとう,ゆみこ
+すだ,なおひろ
+すぎやま,ひでまさ
+すみおか,ともや
+すずき,ひでひろ
+たばこ,くみこ
+たがわ,まこと
+たかはし,しんや
+わたなべ,まき
+たかくら,けんすけ
+たかおか,ごう
+たけはな,まさかつ
+たけうち,さとし
+たなか,けんたろう
+たなか,せいじ
+たなか,のりひろ
+たにい,ゆりこ
+たしろ,けんいち
+てらもと,えいじ
+ときおか,たかしげ
+とみかわ,のりこ
+とりかい,なおき
+つだ,こういち
+さかい,みほこ
+うだ,あつこ
+うえの,おさむ
+うめはら,としお
+うしば,みのる
+わかお,けいじ
+わたべ,まさとし
+わたなべ,だいち
+とみやす,としひさ
+やまだ,まき
+やまこし,だいすけ
+やまもと,じゅん
+やました,なおこ
+やなぎ,としあき
+よこさわ,たくや
+よこやま,かずのぶ
+よしだ,なおと
+よしみ,たいき
+よしざわ,としかつ
+いま,まさひろ
+くぼ,まさひこ
+なかはら,たくや
+おぐら,とおる
+たかまつ,けんいち
+いのうえ,むねひろ
+あいば,さとし
+あまの,なおこ
+ありた,ひであき
+あたぐち,ひろし
+だて,しげひこ
+えざわ,なりひで
+ふじもと,みきお
+ふくどめ,たかし
+ふるかわ,あけみ
+はぎわら,りゅうた
+はなた,ひらく
+はせがわ,ゆたか
+かじわら,よしこ
+はっとり,たかゆき
+ひがし,りゅうすけ
+ひらお,まさゆき
+ひろせ,みつる
+ほんま,たけし
+ふくろい,けんじ
+いちのせき,としひろ
+いけだ,ゆたか
+いまむら,けんすけ
+いのうえ,かずお
+いしだ,こうじ
+いしかわ,あきら
+いわさき,たけし
+かいずか,ひろこ
+かみがき,のりひで
+かねこ,くにひこ
+かたぎり,なおゆき
+かとう,けんじ
+かわかみ,こうじ
+かつき,あきとも
+きむら,さとる
+きのした,ゆかり
+きたやま,ちひろ
+あめした,なおき
+こばやし,たかひろ
+こが,のりゆき
+こいけ,あきお
+こんど,とものり
+くぼき,いくこ
+くらしな,かつひと
+くろき,つよし
+まえだ,やすひろ
+まさだ,ひろゆき
+まつだ,なおみ
+まつもと,しゅういち
+めかた,ひろき
+みやもと,あきひろ
+もり,ゆか
+もりた,かずよし
+むらかみ,まさあき
+むた,ひさし
+ながやま,てつや
+なかはら,たかこ
+なかむら,あきのぶ
+なかむら,まり
+なかた,こういち
+なかざわ,けいすけ
+にし,かねのぶ
+にしやま,みなこ
+のと,じゅんいち
+おがわ,ようじ
+おおば,まさひで
+おむら,まゆ
+いけまつ,たかこ
+おいだ,ひとし
+おかざわ,ひとし
+おの,なおみ
+さいとう,あきひさ
+さかい,のぶやす
+さくた,よしあき
+さとう,まさひこ
+さとう,こうじ
+さわはし,たつゆき
+しばた,あやこ
+しみず,かつゆき
+しおみ,しんじ
+したら,ひさし
+すぎた,かつひこ
+すけがわ,のぶよし
+すずき,あきひろ
+しょう,しょうたろう
+たい,まさてる
+たかぎ,てつろう
+たかはし,としお
+たかやま,ひでつぐ
+たけした,しょうぞう
+たこ,よしき
+たなか,きょうへい
+たに,かずなり
+たずけ,せいいち
+ともとし,けんじ
+つちもと,ふみお
+つのだ,しょうじ
+うちだ,さとる
+うえだ,あきのり
+うのき,のぶひこ
+わだ,ひろたつ
+わしず,しょう
+わたなべ,こうせい
+やまだ,たかと
+やまぐち,ようじ
+やまもと,みつぞう
+やまな,せいいちろう
+やしろ,たけし
+よこやま,まさひこ
+よしだ,ともみ
+ゆき,せつこ
+ひらかわ,まなぶ
+もりいち,えいじろう
+しみず,けい
+ふじゅう,しんいち
+はがわ,たかし
+はせがわ,ひであき
+ひらの,たくや
+ほんごう,てるひこ
+いけだ,としゆき
+いしかわ,ひろき
+いとう,よしみ
+かなやま,こうじ
+かたぎり,しんすけ
+きもと,たくや
+きやま,せいじ
+こじな,けん
+こんど,ひろひこ
+くりた,さとし
+ますだ,だいち
+みかみ,みつお
+みわ,たかのぶ
+もちずき,のぶゆき
+もりやま,としお
+ながふじ,きみひと
+なかじま,まさひこ
+なかむら,ひさと
+なすの,なおき
+のだ,ゆうこ
+おがわ,りょうこ
+おおかわ,じゅんこ
+おおたに,けん
+おくむら,まなみ
+いぎ,あきのり
+さなだ,よしひろ
+さとう,ひでひさ
+せき,よういち
+しばた,ゆきのり
+しまかわ,しげる
+しおじり,ひろし
+すだ,ともはる
+すずき,こうじ
+たかだ,たかのり
+たかはし,きょうこ
+たかす,つよし
+たにぐち,なおき
+つねかわ,ひろふみ
+うえはら,ひであき
+やぎもと,ひろし
+やまぐち,ともこ
+やました,かずき
+やざき,なおき
+よしだ,はるひこ
+あいかわ,ひろふみ
+ちかはら,おさむ
+わたなべ,たかえ
+のざき,てるあき
+あかにし,なおひろ
+しまもと,あとむ
+あなざわ,みのる
+いうち,まこと
+いしかわ,こういち
+いちかわ,そよ
+いまはやし,しんいち
+うちやま,よしたか
+おうさか,まさたか
+おおたに,ひでき
+おおばやし,しんじ
+おぐら,ひろこ
+かきもと,ひろし
+かとう,しげのり
+かみやま,ひろかず
+かわせ,なおき
+きたじま,あきひろ
+くさかべ,まえこ
+こいで,ひでき
+こまつ,けいいち
+さいとう,ひでき
+さとう,じゅん
+しゅう,まさや
+しのだ,ますみ
+しみず,さとし
+すがわら,しげふみ
+すみかわ,かつあき
+たかせ,きよたか
+たけだ,けいいち
+たなか,けんじ
+たばた,みわこ
+つちはし,むねひろ
+とむろ,なつひこ
+なかがわ,たかこ
+なす,ひろし
+にしはら,なおき
+のむら,かずひこ
+はせがわ,けんいち
+はらだ,ともこ
+ひじり,えり
+ふじた,のぶこ
+ほそかわ,たつお
+ますぶち,たかし
+まつなが,ゆき
+まつやま,てつや
+みた,みのる
+みよし,ようこ
+むらやま,まこと
+もりした,かずひろ
+やじま,なおこ
+やまざき,ひろゆき
+くりはら,まさき
+よこやま,ようこ
+わたなべ,よしひと
+くわしま,すぐる
+さかもと,ひでのぶ
+いとう,ただひろ
+うめない,すすむ
+おかしろ,しろう
+かわおか,ひでき
+くば,たかし
+こうだ,まさたけ
+さとう,まゆみ
+あべ,まさはる
+たかはし,ひさみ
+たばた,かつゆき
+なかがわ,こういち
+はしもと,とおる
+ひらの,まさたか
+ほその,あきひと
+むらかみ,けいこ
+よしむら,えり
+あまや,まさる
+ちょう,だいすけ
+ごうだ,きよのぶ
+はやかわ,ひろき
+ふるた,なるき
+いいだ,たかひろ
+いしわたり,ひろかつ
+かばやま,まさき
+かんだ,やすひと
+きたむら,よしお
+こんの,こういち
+まちだ,はるみ
+まつい,たけし
+みうら,けいご
+たはら,のりこ
+むらかみ,たつひこ
+なかみね,まもる
+なかざわ,きよし
+おおた,しげあき
+いしかわ,よう
+いとう,ともや
+さとう,つぐひで
+しばた,なおき
+そめや,あきひこ
+たけだ,あきら
+たなか,こういちろう
+たにした,ふみの
+つちや,よしこ
+わじま,りこ
+やまだ,ひろき
+やまざき,ゆたか
+たかはし,まさき
+あんどう,ゆき
+いしもと,りょうすけ
+いわさき,みずまさ
+うめはら,たかし
+おがた,やすし
+おにざわ,しげき
+かじ,おさむ
+かねこ,のぶかつ
+かわまた,ひろき
+くぼ,とものり
+こうさき,こういち
+さいほ,なるひろ
+さなだ,おさむ
+ししど,くにお
+すぎはら,きよしげ
+たかおか,ゆみ
+いとう,じゅんじ
+なかお,しんじ
+なかの,じ
+にしかい,としみつ
+ねろめ,ひろし
+はぶ,まこと
+ひらい,かおり
+ふじわら,とおる
+ほんま,ゆきのぶ
+まつざわ,ちから
+みやもと,やすじ
+もりや,ほまれ
+やの,ひろし
+やました,まいこ
+よだ,たかひろ
+わたべ,たかし
+あきば,けいいち
+あべ,まゆみ
+いとう,ようじ
+いしむら,ゆみこ
+いとう,まさる
+いまい,たけし
+うえはら,もとこ
+うめつ,あきひこ
+いまにし,ひろゆき
+おおいし,まさはる
+おかの,ゆき
+おがわ,とおる
+かがみ,えりか
+かたやま,みつこ
+かみ,よしてる
+かわさき,ひとし
+かわもと,みちお
+きたもと,つとむ
+ぎょうぶ,ひろこ
+こいけだ,たつろう
+こだま,たいちろう
+こばやし,ひでひと
+さいごう,みわこ
+さかがみ,いちろう
+ささき,ななえ
+さわ,けんご
+しみず,ゆきお
+しょうだ,しげのり
+すずき,かずひら
+いしはま,けんと
+たかはし,まきこ
+たけわ,しんじ
+たはら,さとし
+つつみ,まこと
+ないとう,こうじ
+なかじま,のぞむ
+なかむら,そういちろう
+いけだ,まさたか
+にし,つねあき
+ののいちや,ますお
+はしずめ,ゆうこ
+はっとり,ゆう
+いのぐち,かつふみ
+ひまき,とものり
+ふかざわ,りえ
+ふじなが,ふみこ
+ふるや,まりこ
+ほりかわ,ともひろ
+いぐち,たかひろ
+みつはし,えいいち
+みやした,ようこ
+むらまつ,まさゆき
+いのうえ,あきのり
+やの,ただたか
+やまだ,たつお
+やまもと,むねたか
+よしだ,りょう
+わたなべ,ひでゆき
+わたなべ,としえ
+こうだ,さとる
+おがわ,ひろあき
+あきもと,すすむ
+あさの,ともひこ
+あべ,まさおみ
+いつの,みきお
+いちのせ,こずえ
+いりた,やすあき
+いしおか,しんいち
+いちき,まさと
+いはら,きよたか
+いまず,つよし
+いわすぎ,みか
+うすい,まさひろ
+えとう,けんじ
+おう,よしひろ
+いわきり,わたる
+おおつき,じゅん
+おむら,くみ
+おかざき,ともみち
+おがわ,あきら
+きたむら,まりこ
+おおやま,ちずる
+かさざき,よしひろ
+かつの,たかのり
+かとり,けんじ
+がみ,ひろし
+かわかみ,まさみ
+かわみ,しんじ
+きたしろ,かずよし
+きむら,しげる
+くじらおか,だいき
+いしぐろ,たろう
+いなとみ,だいすけ
+こずま,まいこ
+こしい,ともひろ
+こにし,ただし
+こばやし,よしお
+さいとう,ともえ
+さかい,みねお
+さかもと,じゅんこ
+さとう,しんいちろう
+いしぐろ,ひでたか
+しなだ,よしこ
+しまだ,よしさだ
+いとう,きょうこ
+すぎやま,かずな
+すずき,こうじ
+せきぐち,けいこ
+かみや,かすみ
+たかの,けんいち
+たかはし,こういちろう
+たかみざわ,りゅうき
+たけうち,たかきよ
+たけもと,かずひこ
+たちばな,あやこ
+たなか,なおこ
+たなみ,つねお
+たのおか,みえこ
+ちゅう,さやか
+つちや,せれな
+とじ,まさこ
+とよだ,たくや
+なかじま,ともこ
+ながた,よしひこ
+ながはら,よしゆき
+なかむら,まさかつ
+にしかわ,いわお
+にわ,ゆきえ
+のがみ,ゆか
+はしずめ,たかし
+はせべ,ようへい
+はなぶさ,おさむ
+はやし,まこと
+はるたに,たかひろ
+ひょうえ,ともひろ
+ひらぬま,かずお
+ふくだ,たかひろ
+ふじお,たかゆき
+いのうえ,のりお
+ふるかわ,まさみつ
+ふわ,みお
+まえかわ,るみ
+まきた,かつゆき
+まつうら,えりこ
+まつだ,たかし
+まつみや,けんいち
+まなべ,りょうすけ
+みなと,ひろゆき
+むらかみ,まさみ
+もとよし,まこと
+もりた,けんじ
+やぎ,けいすけ
+がん,はなえ
+やまぐち,やすまさ
+やまさき,じゅん
+やまだ,たつじ
+やまにし,なおき
+よこた,ともふみ
+よしかわ,たくや
+よしむら,くにひこ
+わきた,とおる
+わたなべ,そう
+あまこ,よしお
+まの,あき
+うちむら,ちなつ
+さくらい,まみ
+しらい,ゆたか
+てらくら,ようじ
+おかだ,たつし
+ごとう,あきひろ
+つばき,せいいちろう
+いながき,ひでとし
+ほりべ,もとじ
+かい,よしえ
+たかだ,とくひこ
+こたに,ふみひこ
+いはら,けいこ
+あきはら,しゅんすけ
+あべ,ゆき
+あらき,ひろし
+いしい,のぶやす
+いしぜき,だいすけ
+いたに,たかし
+いとう,しずこ
+いの,みき
+いわざき,ひろたか
+うえの,けんじ
+うめはら,なつこ
+おおえ,だいすけ
+おおつ,ちえ
+おおつぼ,まさみつ
+おかだ,たつや
+おかもと,ひさし
+おくなか,せいし
+おばら,ゆりこ
+かじなが,ゆたか
+かとう,りょう
+かとう,わたる
+かわい,こうじ
+かわぐち,すすむ
+きし,れいこ
+きどころ,あつし
+くぼた,まゆみ
+くわばら,ゆかり
+こくぼ,ももえ
+ごとう,けいこ
+こみやま,まさよし
+さいとう,しげる
+さかもと,ちから
+ささの,あかぎ
+さなだ,まさゆき
+しまだ,たけし
+しもふじ,のぶひこ
+しわ,けんいち
+すぎはら,ひろのぶ
+すずき,まさや
+せき,あつなり
+たかぎ,かよ
+たかはし,ひろなお
+たきざわ,さとし
+たけだ,ゆういちろ
+たなか,せいじ
+たにかわ,よしつぐ
+たばた,けいたろう
+つかだ,りえ
+つぼた,まさや
+とうかいりん,ゆみ
+とのい,あきこ
+なかがわ,よしのり
+ながの,りょうた
+なかやま,ともひろ
+にしおか,しんいち
+ねぎし,りか
+のざき,だいすけ
+はしぐち,としひろ
+はっとり,ゆういち
+はまだ,だいじ
+ひしぬま,あつし
+ひらた,まみこ
+ふくだ,たかし
+ふじえだ,ひさかず
+ふじわら,たくと
+ほりかわ,しゅうじ
+まつお,ひでのり
+まつやま,みつてる
+みや,あきら
+みやもと,くにこ
+むらかみ,たつひろ
+もりた,まみ
+やぐら,しんじ
+やまだ,みずほ
+ゆら,けんいち
+よしざわ,ゆうこ
+ろく,あきこ
+わらび,ひろのり
+みひら,りょうへい
+みぎた,まな
+たけうち,りょう
+おのでら,くにひろ
+あかがわ,もとこ
+あさぬま,あや
+あらい,つよし
+いざわ,ちはる
+いしばし,としゆき
+いで,なるみ
+いのうえ,まこと
+いまぜき,くみこ
+いわた,こうじ
+うさみ,まりこ
+えのきど,よりこ
+おきた,ゆきのり
+おおつか,もとい
+おの,ひろし
+おかだ,かずひろ
+おくくぼ,たかし
+かない,けんいち
+かみや,さちこ
+かわさき,ひろき
+きだ,えいすけ
+きむら,ふみと
+くめうち,けんじ
+くわはら,しの
+こが,たくじ
+こばやし,あんな
+さいとう,けんいち
+ささき,はなこ
+さとう,みき
+さはら,たかふみ
+しだ,よしひろ
+しみず,たつお
+しもざき,たつひこ
+すぎうら,まさのぶ
+すと,さとし
+せと,けいじ
+たかぎ,のりゆき
+たかはし,みか
+たけだ,ゆうじ
+ただ,よしたか
+たにぐち,たかのり
+たむら,けいこ
+つかはら,みずほ
+つぼうち,あきふみ
+てらだ,よしき
+とみい,じゅんこ
+ないとう,たかお
+ながさか,こうじ
+ながの,やすお
+なかむら,えいじ
+にし,なおゆき
+にしだ,りょうへいた
+のぐち,かずよし
+のむら,かずお
+はっとり,さとみ
+はやかわ,ゆき
+はらだ,みえ
+ひでしま,みきこ
+ふかお,みゆき
+ふくはら,ゆきこ
+ふじもと,えりこ
+ほしの,すみお
+ほりぐち,じゅんいち
+まきの,たけお
+こみや,のぼる
+こばやし,ひろし
+かみくぼ,けんじ
+まつお,きよし
+なかち,きよし
+こすぎ,よしみ
+かつまた,としかず
+かがやま,まさはる
+くぜ,みきお
+くまだ,まさあき
+こじょう,さなえ
+かしくま,けんぞう
+きくち,よしひさ
+くまの,まさゆき
+こばやし,しゅんじ
+こばやし,のぶこ
+こにし,けんいち
+こばしがわ,ひとし
+かいど,みほ
+くろき,じゅん
+かなたに,りえ
+きたがわ,なおたか
+みずもと,なるき
+みやおか,けんろう
+むらた,けんじ
+もりた,ひでとも
+やなぎだ,えりこ
+やまざき,けん
+やまもと,やすのり
+よご,とものり
+よねだ,ゆみこ
+わこ,りえ
+あかはね,ひろあき
+あさべ,かよ
+あらい,ひでお
+いけだ,よしたか
+いしど,ゆきこ
+いずの,みつひろ
+いとう,たけし
+いのうえ,のぶたか
+いわた,よしひろ
+うかい,ひさなが
+えとう,ひろき
+おおさか,たてき
+おおにし,みつる
+おむら,ともこ
+おかの,やすふみ
+おがわ,たくや
+おざき,たかゆき
+おとがわ,りょうこ
+かさい,なおこ
+かすが,さなこ
+かとう,けんいちろ
+かめたか,たいすけ
+かわぐち,あゆみ
+かわばた,あゆみ
+きたがわ,たけし
+きむら,よしかず
+きりさこ,てっぺい
+くらはし,たかあき
+ごうだ,たけひろ
+こてら,きみひろ
+こばやし,なつこ
+こまつばら,ともひさ
+さいとう,てるひさ
+さかい,たかゆき
+さくらい,さだよし
+さとう,あき
+さわさき,たかし
+しまの,としあき
+しょうだ,くみ
+しんたに,けんた
+すぎやま,たかね
+せきもと,かつあき
+たかはし,れい
+たぐち,わたる
+たちばな,なおと
+たなか,さちえ
+たまき,なおこ
+つかだ,てつや
+つぼくら,たくや
+どい,のぶたか
+とだ,しゅんすけ
+ながさか,みちこ
+なかしま,あきひろ
+なかにし,みどり
+なかむら,まゆ
+なかやま,たけし
+にしの,ゆか
+のくお,かおり
+ばこし,しんご
+はたの,ようこ
+はやし,さとこ
+はらだ,あつし
+ひらい,ゆうすけ
+ひろえ,あつし
+ふくだ,さやか
+ふじむら,あきこ
+ふるかわ,ひろこ
+ほそだ,しゅんご
+まえかわ,みわ
+まさとうみ,まいこ
+まつおか,ともこ
+まつばら,あきこ
+みうら,きよまさ
+みぞはた,ちえ
+みはら,まさき
+みやむら,あや
+むらた,くみこ
+もり,くみこ
+もろえ,ひろかず
+やなぎさわ,けいすけ
+やまがた,まこと
+やまだ,のぶこ
+やまもと,てるひこ
+やまもと,わたる
+よこやま,あゆみ
+よしだ,なおこ
+よしむら,だいすけ
+わだ,いさむ
+わたなべ,ひろし
+ささの,すすむ
+こだま,たかひこ
+かわしま,まさなり
+かわの,こういち
+かみうら,かずひで
+こんの,ひでき
+くやま,たけし
+こい,せいいちろう
+かさじま,ひろふみ
+かとう,ともみ
+くぼた,ひろゆき
+けがさわ,ひさし
+かわぎし,ひろし
+かまだ,たかし
+きくち,おさむ
+かとう,かずひこ
+まちだ,かずお
+むらさき,としお
+まつもと,けんいち
+まさき,きくお
+みずたに,なおひこ
+まるやま,せいじ
+むらしま,ただお
+みずた,よしお
+もりい,ぎょじ
+みやざわ,よしお
+みずの,ゆりこ
+むらいし,まもる
+むらかみ,かずお
+むらまつ,あつし
+みたく,けいぞう
+まえだ,あきお
+むらい,とよみ
+まつだ,さとし
+みてら,やすお
+もり,つとむ
+まつい,たかし
+みうら,くにお
+まつもと,たけし
+まつざわ,よしお
+みかみ,はるき
+たぶち,けんじ
+なかじま,まさひろ
+ないとう,たけお
+にしな,きみひと
+なかがみ,しゅういち
+なかはた,かずとし
+にしおか,ひろし
+にしだ,よしろう
+のむら,くにひこ
+なかむら,ひでゆき
+ないとう,かずあき
+にった,ゆたか
+なかじま,かつお
+なかせ,としあき
+なかがわ,のぶお
+なかじま,むねたか
+なかむら,ほずみ
+ながしま,なおじ
+おき,すみお
+おくだ,としお
+おおはし,ひろし
+おがわ,とおる
+おざわ,ひろし
+おおはし,ゆたか
+おおの,みつお
+おおいし,じ
+おおかわ,かおる
+おりがさ,やすたけ
+おおた,よしひこ
+おざき,じゅんいち
+おだしま,ただし
+おおひら,せつじ
+おおや,ひでほ
+おかの,あきこ
+おぐし,あけみ
+おおいがわ,たかはる
+なかたに,しんいち
+しらおがわ,らいた
+なかむら,としみつ
+あべ,えみこ
+かわうち,まりえ
+いとう,けんそう
+こいずみ,たくや
+かなおか,ひろし
+ありま,やよい
+うまやはら,やすみ
+かねまつ,さきこ
+ふかや,くにあき
+ごとう,ゆういちろう
+すぎもと,くにお
+くりはら,とよひこ
+おおた,ゆきこ
+すずき,たけし
+よしだ,かずとし
+はっとり,ひろし
+かどた,あきひろ
+いしざわ,ゆずき
+みやもと,みどり
+おじ,やすひろ
+あらい,としあき
+きたむら,りかこ
+さいとう,よしひと
+こばやし,きょうぞう
+にしかわ,ともみ
+たなか,かずひろ
+ずし,やすお
+あらい,しょうへい
+まえでら,てるゆき
+こんど,なお
+ながほり,ゆきこ
+いわさき,みやび
+なかたに,たかし
+なかがき,けいこ
+くわはら,まこと
+すずき,ゆき
+ただ,えいき
+わだ,なおこ
+さの,ひろし
+ときた,なつこ
+こさい,ゆうこ
+せごえ,さとこ
+なかい,あつみ
+はらだ,としまさ
+きのした,みちお
+みやざき,かずみ
+たきざわ,まさあき
+さとう,こういちろう
+みずしま,たける
+たにぐち,はるみ
+まつした,たかし
+すぎうら,けんたろう
+たにがき,せいこ
+さとう,しげお
+やまかわ,さだはる
+すずき,しげひろ
+とくだ,まんなり
+いわま,のぶあき
+おおはら,ゆきなお
+しおぬま,ひでとし
+すずき,あきよし
+すずき,よしこ
+すずき,のぶあき
+せき,おさむ
+すずき,つとむ
+すがお,てつじ
+すずき,けいたろう
+さどとも,あきら
+しま,みのる
+さいとう,おさむ
+すずき,まさひろ
+さいとう,ゆきお
+そま,おさむ
+さとう,けんじ
+しろさき,よういち
+すずき,ようじろう
+すずき,てつろう
+すぎもと,まさお
+さかい,しんいち
+すずき,かずゆき
+さとう,たつじ
+しおた,とよお
+そま,かんじ
+しゅどう,たかお
+さくらい,としお
+そうや,せいじ
+さわむら,なるみ
+せお,ゆうじ
+しみず,としお
+さきもり,いわお
+さいとう,ひさお
+しみず,えいぞう
+しおのや,きよかず
+たかぎ,ひでお
+たきいし,りょうじ
+とば,まさし
+たぐち,まさお
+たかの,むねお
+たかやす,とよみ
+たなか,しげる
+たかはま,よしあき
+つちだ,まもる
+たかお,ますみ
+たにぐち,みちあき
+つじかわ,ゆういち
+よしざわ,まさはる
+たなか,じゅんぞう
+たまる,まさみ
+たかぎ,きょうこ
+つねひろ,じゅんじ
+たかはし,としあき
+あさい,ゆうじ
+たかさき,あきら
+たかなみ,まさる
+ともなが,つねかず
+たかぎ,いつお
+つかもと,あきお
+てらうち,さだゆき
+たのおか,すすむ
+うすぎ,かずひろ
+うつき,てつお
+うちだ,けんすけ
+うめむら,としお
+うの,としひで
+わたなべ,ひさゆき
+わたなべ,かつなり
+わたなべ,こんごう
+わだ,たけみつ
+おおた,まこと
+なかじま,けいいち
+ふるさわ,つよし
+かしわぎ,こ
+はた,しょうすけ
+うしじま,まさかず
+まつい,あきら
+かわな,だいじろう
+みやもと,たかひさ
+よしだ,すみゆき
+おおかわら,げんたろう
+すやま,くんろう
+すずき,ゆうじ
+くにぎた,よういち
+きど,まさし
+いしい,ちかとし
+うえだ,たかし
+いちかわ,かずお
+おさじま,としや
+うえむら,としひで
+きむら,ときち
+よこやま,ひさお
+いとう,まさゆき
+みやべ,かずと
+たまい,かずみち
+こり,こういちろう
+いわさわ,まなぶ
+よしやす,ごう
+またき,しんご
+やまもり,かつお
+たかた,のりお
+すどう,しょうこ
+うえむら,ゆたか
+すずき,みのる
+すずき,あきら
+あらき,せきね
+かだ,あきら
+にしより,みのる
+いなば,かずと
+ほりい,つねお
+すどう,まさひこ
+しろやま,こ
+てらい,あきこ
+まつもと,なおたけ
+いとう,せいじ
+そとやま,かつのり
+ひらおか,やすし
+ひらき,たもつ
+たなべ,ゆうじろう
+ためちか,たてお
+よねだ,としひで
+えじま,とものり
+たかはし,みさこ
+てらお,ひろひさ
+ほんだ,ゆみ
+おちり,やすひろ
+おおい,なおみ
+かわい,みのる
+むらかみ,みよし
+なかじま,ひとし
+いしはら,ふみたか
+あかほり,みつのぶ
+やすだ,あきら
+よこせ,ともしげ
+よしかわ,としろう
+やまぐち,みのる
+よしむら,まさひこ
+よねだ,かおる
+やました,しょうぞう
+やまだ,えいぞう
+やまざき,すすむ
+よしだ,ひろし
+やまたに,ひろつぐ
+やまね,よねたか
+やまかわ,じゅんいち
+よしだ,たかお
+やまさき,のりお
+やまもと,てるお
+よこた,えいいち
+やまだ,かつひろ
+よしの,だいすけ
+よしだ,むつお
+のむら,まさたか
+やまだ,さとる
+いしかわ,ちよたけ
+すずき,ひろふみ
+ますだ,けんじ
+いまい,まさぞう
+きゅうそじん,けんすけ
+やまだ,あきら
+ひらの,たいき
+なかにし,かずしげ
+たつた,しげる
+みむら,まさお
+ひらまつ,さだお
+とみた,まさひろ
+こばやし,しんいちろう
+たけなか,まさひろ
+あまの,のりこ
+いしい,きょうこ
+いで,さきこ
+おかだ,りえこ
+ひらいし,まり
+よしもと,ひろこ
+かわしま,まゆみ
+とばた,のりかず
+たなか,ひかる
+あんべ,まなみ
+たかはし,まさひろ
+とみやま,よしあき
+たかやま,としゆき
+みやした,みのる
+はしもと,みきお
+とがめ,みわこ
+のぐち,かずまさ
+のぐち,あきら
+そうみや,けんじ
+きむら,ようじ
+かとう,ともゆき
+すずき,けんじ
+おかだ,ひろみ
+やの,じゅんこ
+おのさと,はん
+まつだ,よしあき
+きむら,たかし
+たむら,とものり
+かとう,としや
+いぬまる,ひろじ
+おのでら,なおこ
+すずき,ちはる
+たにかわ,ほずえ
+さくま,しま
+いまむら,るりこ
+えいどめ,ゆき
+よしい,ただひろ
+おおたき,ゆみこ
+くすもと,いさお
+みやした,ゆきお
+まちい,かずひろ
+はやしだ,たかとし
+はるはら,たかし
+てらもと,ゆうじろう
+まつもり,かずお
+わたなべ,こうじ
+かねこ,やすし
+おりがさ,まつのり
+つかもと,ひろみち
+よしだ,みな
+にしだ,ひさえ
+ふるかわ,りえ
+むらかみ,たかお
+おおばやし,こうきち
+さとう,けいこ
+やま,ふみこ
+みやた,たかてる
+虹如
+丁心嵐
+丁志宏
+丁建文
+丁偉民
+丁甦南
+丁綺慧
+丁譽琳
+于秀美
+于殿聖
+尹居才
+尹曉恩
+孔繁霖
+尤良
+尤星策
+尤盟貴
+尤蒔萱
+文儀詠
+方文鋒
+方志明
+方幸宜
+方俊雄
+方彥程
+方若珊
+方健剛
+方淑儒
+方策民
+方裕欽
+方慧琴
+方麗雅
+毛佩娟
+毛漢梅
+王一珍
+王上維
+王大昌
+王子熙
+王中憓
+王仁宗
+王友志
+王心忠
+王文平
+王文郁
+王文鴻
+王世宇
+王世廣
+王弘毅
+王永仁
+王玉文
+王生勳
+王光麃
+王宇清
+王有權
+王伯逸
+王孝君
+王宏嘉
+王志文
+王志峰
+王志欽
+王志銘
+王秀芬
+王育德
+王依韻
+王佩
+王坤賢
+王岡陵
+王怡文
+王怡清
+王怡蘋
+王明珊
+王欣之
+王治邦
+王金華
+王信仁
+王信裕
+王俊彥
+王俊凱
+王俊超
+王俞文
+王則勝
+王奕鈞
+王威能
+王建文
+王建雄
+王彥智
+王思潔
+王昭人
+王昱凱
+王柏堯
+王為蒨
+王盈傑
+王紀
+王美淑
+王美懿
+王英蓉
+王郁欣
+王郁珺
+王哲聰
+王悅如
+王時蔚
+王浩倫
+王素卿
+王偉州
+王健民
+王國彥
+王執信
+王崑龍
+王啟宗
+王敏銓
+王清鴻
+王淑眉
+王淑雯
+王淨瑩
+王莉汶
+王傑立
+王凱蒂
+王博文
+王富昌
+王惠玲
+王敦正
+王景泉
+王智鳴
+王朝鍵
+王琪
+王翔寧
+王菁蘭
+王逸修
+王雅伶
+王雅雯
+王雯
+王勤善
+王愛嘉
+王毓菁
+王瑞吟
+王瑞頤
+王聖
+王聖棋
+王裕正
+王詩婷
+王鉅翔
+王嘉君
+王嘉農
+王嘉齡
+王睿君
+王維如
+王翠華
+王銘梅
+王德皓
+王慧英
+王慧靜
+王儒隆
+王曉雯
+王興邦
+王錦慧
+王爵暐
+王謙維
+王禮謙
+王瓊珮
+王韻淑
+王麗芬
+王麗雯
+王耀暉
+王鐘銘
+王齡梓
+王躍霖
+王浟美
+王棨德
+王嫆棻
+王筱萱
+王薏雯
+丘真綺
+包宮維
+古玉鳳
+古明晟
+古桂菊
+古智偉
+古俶綺
+史明原
+史曜彰
+甘永裕
+甘霈霖
+田沐恩
+田芳茹
+田淑君
+田璧菀
+白大尹
+白佳渝
+白振源
+白喜文
+白榮修
+石乃如
+石育玟
+石明周
+石峻平
+石傑宇
+石錦航
+伍世揚
+伍家誼
+任才俊
+任新蘭
+向西陽
+成丹玲
+朱文碧
+朱玉汶
+朱妍如
+朱沛怡
+朱宗蔚
+朱東應
+朱俊祥
+朱建泰
+朱珍慧
+朱郁庭
+朱家欣
+朱峰誼
+朱珮儀
+朱偉傑
+朱康銘
+朱寓理
+朱雅鈴
+朱達明
+朱鳳薇
+朱靜文
+朱芮宜
+江中健
+江文瓊
+江立峰
+江呈陽
+江秀玲
+江佳霖
+江協勇
+江宗哲
+江岩達
+江昌鴻
+江明璋
+江欣容
+江長壽
+江俊興
+江建銘
+江政儒
+江玲慧
+江衍龍
+江振宇
+江純玫
+江啟仲
+江盛龍
+江智維
+江雅惠
+江嘉倫
+江寬慈
+江憶雯
+江蕾
+江媞
+牟昕
+何仁田
+何世雄
+何亙彬
+何君萍
+何育杰
+何佳融
+何其澤
+何季秦
+何宗禧
+何怡君
+何明宗
+何昇儒
+何秉欣
+何俊廷
+何冠霖
+何彥駒
+何炳賢
+何若瑜
+何峻杰
+何素君
+何敏菁
+何涵
+何惠鈺
+何雅琪
+何嘉展
+何銘宏
+何學厚
+何靜儀
+何旻霜
+余心農
+余吉祥
+余佳音
+余坪芳
+余宛儒
+余明娟
+余金典
+余俊儒
+余彥霖
+余盈鋒
+余泰男
+余婉萍
+余惠文
+余瑞萍
+余齊威
+余謝輝
+利秀蘭
+吳大維
+吳仁佑
+吳元嫈
+吳文玉
+吳文發
+吳文斌
+吳世達
+吳平和
+吳永昌
+吳玉茹
+吳立民
+吳兆文
+吳安邦
+吳行中
+吳妙倫
+吳志宏
+吳志漢
+吳沛晃
+吳秀紋
+吳育霖
+吳依蓓
+吳佳南
+吳佳容
+吳佳蓉
+吳佳穎
+吳佳鴻
+吳佩珊
+吳佩純
+吳佩諭
+吳其霖
+吳坤鴻
+吳孟宗
+吳孟娟
+吳孟憲
+吳宗岱
+吳宗隆
+吳宗翰
+吳宜芳
+吳宜穆
+吳宛縈
+吳岡儒
+吳幸真
+吳忠霖
+吳怡萍
+吳怡憲
+吳承璋
+吳昌庭
+吳明
+吳明哲
+吳明達
+吳明曄
+吳昕姿
+吳東霖
+吳欣怡
+吳欣儒
+吳治英
+吳秉勳
+吳芳瑜
+吳金玉
+吳雨哲
+吳亭誼
+吳信輝
+吳俊奇
+吳俊儀
+吳俊緯
+吳俊諺
+吳冠群
+吳品蓉
+吳姿儀
+吳宣鋒
+吳建芝
+吳建勳
+吳律銘
+吳思穎
+吳政彬
+吳政穎
+吳春緩
+吳昭龍
+吳柏儀
+吳炫宗
+吳皇欣
+吳秋美
+吳美玲
+吳美慧
+吳致銘
+吳英鴻
+吳重毅
+吳原宇
+吳家明
+吳家慧
+吳振成
+吳晏平
+吳泰昌
+吳珮禎
+吳純欣
+吳偉誠
+吳國偉
+吳堅瑋
+吳婉歆
+吳悠
+吳敏真
+吳淑如
+吳淑敏
+吳涵宜
+吳雪妮
+吳勝祺
+吳惠君
+吳斯燻
+吳犀靈
+吳詠宸
+吳鈞婷
+吳雅嵐
+吳雲驥
+吳毓真
+吳瑞哲
+吳聖威
+吳鼎偉
+吳嘉勝
+吳寧瑄
+吳福量
+吳肇騰
+吳銓友
+吳慶文
+吳慧敏
+吳賜忠
+吳曉青
+吳曉薇
+吳蕙紋
+吳錦鎰
+吳靜芳
+吳總成
+吳鴻昌
+吳豐吉
+吳韻卉
+吳馨怡
+吳佼佼
+吳昶葳
+吳瑋琳
+呂子豪
+呂文專
+呂正安
+呂自達
+呂育芳
+呂佳容
+呂佩純
+呂宗銘
+呂宜霖
+呂怡慧
+呂明泰
+呂芳俊
+呂保岸
+呂南畿
+呂建鋒
+呂昭儀
+呂秋雲
+呂英瑋
+呂格豪
+呂國培
+呂淑卿
+呂紹榮
+呂詠真
+呂雯歆
+呂嘉元
+呂銘智
+呂學叡
+呂靜蓉
+呂廳嚴
+宋心慧
+宋伯瑜
+宋佩珊
+宋昌霖
+宋奕儒
+宋禹瑩
+宋舫臣
+宋喬玉
+宋碧琳
+宋竄
+巫戎怡
+巫明翰
+巫振嘉
+巫嘉興
+李乃文
+李中任
+李仁凱
+李元裕
+李心仁
+李文志
+李文惠
+李文達
+李月星
+李世寬
+李巧琳
+李正彥
+李永昌
+李玉卿
+李立仁
+李仲玄
+李兆斌
+李如珍
+李安琳
+李羽
+李君彥
+李宏文
+李志成
+李志偉
+李沛杰
+李秀玲
+李秀蘅
+李育瑩
+李亞倫
+李依恂
+李佳芳
+李佳珍
+李佳晃
+李佳雯
+李佳儒
+李佳霖
+李佳蓁
+李佩芝
+李佩玲
+李佩儀
+李佩嬬
+李函芬
+李坤源
+李奇翰
+李孟哲
+李孟穎
+李宗坤
+李宗義
+李宗穎
+李宗鴻
+李宜洲
+李宜峻
+李宜樺
+李宛玲
+李尚賢
+李岳峰
+李幸娟
+李忠穎
+李怡玲
+李怡慧
+李怡旻
+李易修
+李昆宏
+李明利
+李明彥
+李明釗
+李明勳
+李明霞
+李昇翰
+李東龍
+李欣怡
+李欣達
+李法漢
+李玥瑩
+李芳圻
+李芝綾
+李金鈴
+李長榮
+李青陽
+李信德
+李俊宏
+李俊彥
+李俊德
+李俊賢
+李俞慧
+李冠瑩
+李南嬌
+李姿儀
+李威德
+李建民
+李建明
+李建賢
+李建興
+李彥宜
+李彥霖
+李思萱
+李思諭
+李政哲
+李政龍
+李昭美
+李昱春
+李柏蓉
+李珊珊
+李盈潔
+李秋梅
+李美玉
+李美儀
+李胤瑤
+李英志
+李貞宜
+李郁偉
+李倩
+李哲緯
+李家豪
+李容婷
+李振昌
+李晉豪
+李泰霖
+李珮琳
+李祖珍
+李訓億
+李偉愷
+李健源
+李國強
+李國維
+李基弘
+李婉瑞
+李康正
+李敏吉
+李清吟
+李淑貞
+李淑華
+李祥瑞
+李連峰
+李凱楨
+李惠芬
+李惠雯
+李智強
+李湘樺
+李詠秋
+李進福
+李雅玲
+李雅惠
+李雅燕
+李意雯
+李毓真
+李瑞華
+李聖琰
+李道林
+李嘉凌
+李嘉鴻
+李榮馳
+李福蓉
+李維楨
+李銘毓
+李廣祁
+李慶華
+李慧珠
+李賢淦
+李曉妮
+李曉菁
+李璟郁
+李蕙如
+李錦昇
+李靜怡
+李龍生
+李聰岳
+李鴻達
+李鎔阡
+李麗珠
+李馨怡
+李劭軍
+李苹慈
+李絜
+李鈺雯
+李恒君
+杜志賢
+杜宛諭
+杜芳政
+杜彥霖
+杜珮詩
+杜陽圓
+杜燕華
+沈士傑
+沈正德
+沈佑翰
+沈志龍
+沈佳慧
+沈宗慶
+沈昌明
+沈秉誼
+沈冠宏
+沈建德
+沈柏寬
+沈郁康
+沈益承
+沈晨鐘
+沈舒琳
+沈瑞欽
+沈維毓
+沈蕙君
+沈筱雲
+汪秀燕
+汪青蓉
+汪家瑩
+汪靖國
+谷泓道
+辛奕成
+邢能文
+阮信憲
+阮斐瑜
+阮鵬碩
+卓志忠
+卓芳如
+卓英哲
+卓淑媛
+卓誌隆
+周士傑
+周中興
+周文雅
+周代尉
+周玉蓮
+周吉龍
+周佑禎
+周孝芳
+周志清
+周秀晏
+周亞欣
+周佩宜
+周奇蓉
+周宜芳
+周怡伶
+周明弘
+周杰
+周玟萱
+周金燕
+周俊豪
+周威呈
+周彥岑
+周柏甫
+周秋萍
+周郁文
+周娟如
+周振凱
+周珮如
+周偉茹
+周敏鈺
+周惠蓮
+周詠訓
+周雲棠
+周煌耿
+周裕豐
+周嘉慶
+周翠芬
+周賢德
+周燕盈
+周聰宇
+周蘭芳
+周鈺翔
+季育澤
+官芳如
+尚書
+於家珍
+昌孟翰
+林上志
+林于禎
+林士力
+林士傑
+林士農
+林女滿
+林子傑
+林子勤
+林小琪
+林之菁
+林介一
+林天民
+林文中
+林文將
+林文斯
+林文德
+林木興
+林世芳
+林世淇
+林主恩
+林可鈞
+林平苑
+林正一
+林正偉
+林永昌
+林永祥
+林永晟
+林玉玲
+林玉菁
+林石隆
+林立偉
+林仰望
+林后唯
+林守德
+林百揚
+林佑珊
+林伯岳
+林伶貞
+林呈任
+林君翰
+林妙君
+林孝全
+林宏韋
+林宏儒
+林廷吉
+林志成
+林志杰
+林志皇
+林志堅
+林志豪
+林志穎
+林志鴻
+林材俊
+林灼龍
+林秀玲
+林秀真
+林秀穎
+林育民
+林育名
+林育宏
+林育進
+林育慧
+林育麟
+林谷峰
+林享燁
+林佳生
+林佳怡
+林佳盈
+林佳綺
+林佳慶
+林佳潔
+林佳樺
+林佳鴻
+林佩怡
+林佩雯
+林佩慧
+林侑青
+林協村
+林坤韋
+林奇模
+林孟萱
+林孟穎
+林季燁
+林宗慶
+林宗澤
+林宜君
+林宜聖
+林宜樺
+林宜蓁
+林宛樺
+林岱蓉
+林幸蓉
+林忠岳
+林怡汝
+林怡君
+林怡君
+林怡均
+林怡芳
+林怡萱
+林怡礽
+林於妮
+林昌賢
+林明生
+林明杰
+林明楓
+林明毅
+林明環
+林昇龍
+林杰欣
+林欣怡
+林欣慈
+林欣毅
+林欣麗
+林牧台
+林玫君
+林秉瑩
+林芳如
+林芳儀
+林芬芳
+林金仕
+林金龍
+林青志
+林亮仁
+林信宏
+林保成
+林俊佑
+林俊宏
+林俊男
+林俊逸
+林俊魁
+林俐亭
+林冠吟
+林冠儒
+林品宜
+林奕秀
+林姿吾
+林威名
+林威良
+林建一
+林建吾
+林建廷
+林建良
+林建華
+林彥文
+林彥伶
+林彥甫
+林彥興
+林恆碩
+林政良
+林政儀
+林春年
+林昭志
+林星晨
+林柑杏
+林柏村
+林柏翰
+林為文
+林玲至
+林盈君
+林祈均
+林秋惠
+林美如
+林美吟
+林美玲
+林美華
+林致君
+林英男
+林虹如
+林貞延
+林郁敏
+林郁蘭
+林韋嘉
+林倩如
+林原合
+林哲宏
+林娟如
+林家生
+林家勇
+林家聖
+林家慶
+林容仟
+林峻暉
+林庭瑋
+林振浩
+林晉全
+林晏稚
+林書楷
+林桂珠
+林泰維
+林珮如
+林益弘
+林祐禾
+林窈意
+林素華
+林耘德
+林起翎
+林偉民
+林偉德
+林國欣
+林培堯
+林婉瑜
+林康寧
+林敏裕
+林清雲
+林淑玲
+林淑娥
+林淑萍
+林淑儀
+林盛傑
+林雪萍
+林博隆
+林惠文
+林惠敏
+林惠琇
+林智能
+林期
+林湘惠
+林紫菁
+林視尊
+林逸昀
+林逸儒
+林雅君
+林雅倫
+林雅惠
+林雅華
+林雅謙
+林順安
+林嵩山
+林敬文
+林新凡
+林楠棋
+林毓超
+林煌軒
+林瑞家
+林瑞蘭
+林祺勛
+林義傑
+林群峰
+林聖恩
+林聖鈞
+林裕堅
+林詩凡
+林詩雯
+林雍翔
+林鼎植
+林嘉珍
+林嘉群
+林榮欽
+林睿暘
+林精湛
+林翠萍
+林銘煌
+林齊蔚
+林廣義
+林慧君
+林慧美
+林慧萍
+林慧麗
+林瑾蘭
+林賢得
+林學隆
+林曉君
+林曉華
+林澤義
+林穎
+林興釗
+林錦隆
+林靜宜
+林靜芬
+林懋州
+林駿逸
+林鴻達
+林豐舜
+林麗君
+林麗華
+林繼平
+林巍龍
+林芊亨
+林姝均
+林倬世
+林琮閔
+林煒鴻
+林筱菁
+林鈺凱
+林驧
+祁義國
+初若凡
+邵奕鈞
+邵懷德
+邱千綺
+邱子楓
+邱天宏
+邱文鴻
+邱幼媚
+邱玉玲
+邱安台
+邱志光
+邱秀英
+邱佳松
+邱延齡
+邱昌裕
+邱泓彰
+邱信益
+邱俊榮
+邱品華
+邱奕睿
+邱建誠
+邱政湧
+邱柏瑜
+邱盈棠
+邱致穎
+邱重憲
+邱振峰
+邱珮綺
+邱國恭
+邱婉嬅
+邱清龍
+邱淑慧
+邱創儉
+邱惠詩
+邱湘雲
+邱雅芬
+邱雅茜
+邱毓玲
+邱盟琇
+邱詩琁
+邱嘉慧
+邱韶瑩
+邱慧婷
+邱靜宜
+邱豐祥
+邱韻寧
+邱繼瑩
+邱顯桓
+邱琬淑
+邱鈺斐
+金明輝
+金勤
+侯文哲
+侯宏昌
+侯岳宏
+侯信宇
+侯柏青
+侯淵銘
+侯雅雯
+侯靜汝
+俞佳凡
+俞芊薈
+姜宏榮
+姜芝怡
+姜凱傑
+姜增炫
+姜旻姍
+姚立三
+姚佳慧
+姚威宇
+姚凱文
+姚德麟
+律振揚
+施可隆
+施宇駿
+施孝德
+施育瑜
+施佩華
+施宛直
+施明妍
+施俊名
+施建宇
+施柏如
+施郁蕙
+施敏男
+施博元
+施智勇
+施雅娟
+施嘉琪
+施慧君
+施靜怡
+施瑋瑜
+柯文祥
+柯全益
+柯志明
+柯佩君
+柯宛君
+柯欣儀
+柯俊隆
+柯盈如
+柯敏盛
+柯博元
+柯棋棣
+柯毓萍
+柯鳳儀
+柯瓊鎣
+柳佩君
+柳棋元
+段明宏
+洪力壹
+洪士育
+洪子婷
+洪文明
+洪世嘉
+洪永昌
+洪玉蒨
+洪名衡
+洪君祥
+洪志明
+洪村銘
+洪良欣
+洪坤錡
+洪宜良
+洪怡真
+洪明龍
+洪俊雄
+洪政霈
+洪美萍
+洪重卿
+洪振益
+洪珮芳
+洪偉哲
+洪曼珊
+洪國翔
+洪婉紋
+洪御彗
+洪清健
+洪淑淩
+洪雪芳
+洪惠棋
+洪菁隆
+洪雅苓
+洪慈伶
+洪煌凱
+洪瑞鴻
+洪萱鋒
+洪靖凱
+洪嘉蓮
+洪榮輝
+洪綺
+洪肇彥
+洪銘鍾
+洪慶銘
+洪瑩珍
+洪靜怡
+洪藝菁
+洪繼賢
+洪晢惇
+洪鈺櫻
+紀文欽
+紀志霖
+紀怡婷
+紀盈州
+紀博敏
+紀順興
+紀蘭潔
+胡文瑜
+胡玉慧
+胡廷威
+胡定宇
+胡芳慈
+胡玲婉
+胡家榮
+胡純菁
+胡淑君
+胡博硯
+胡智銘
+胡雅智
+胡瑞洙
+胡碧媜
+胡靜苑
+胡懿心
+范文政
+范吉慶
+范明中
+范姜慧怡
+范家誠
+范耕魁
+范博彰
+范智欽
+范瑞祥
+范綱賢
+范耀聰
+計竹宇
+韋桂仁
+倪威遠
+倪瑞期
+凌明德
+唐千惠
+唐邦泰
+唐英娜
+唐淑芬
+唐義堯
+唐譽玫
+夏春香
+夏慧齡
+孫元俊
+孫永信
+孫伯中
+孫協裕
+孫建崴
+孫振涼
+孫國書
+孫淑芬
+孫傳凱
+孫道隆
+孫豪志
+孫學儀
+孫瑀
+徐乙可
+徐士勛
+徐仁乾
+徐文益
+徐仕泓
+徐永光
+徐立達
+徐如昇
+徐克鈞
+徐志偉
+徐育慈
+徐佩錦
+徐昆羿
+徐松鴻
+徐信中
+徐思維
+徐美華
+徐家楷
+徐浚傑
+徐偉峻
+徐國倫
+徐婉儀
+徐敏芳
+徐淑娟
+徐莉真
+徐掌瑛
+徐詠媛
+徐順宏
+徐瑞恭
+徐裕彬
+徐嘉宏
+徐夢麟
+徐維揚
+徐銘謙
+徐慧心
+徐震東
+徐鴻仁
+徐繼政
+徐菡禧
+徐鈺綾
+柴學舜
+殷肇陽
+祖曉鳳
+秦梓銘
+翁于琪
+翁文茹
+翁仲賢
+翁育稔
+翁明安
+翁柏聖
+翁珮怡
+翁崇庭
+翁淑華
+翁逸軒
+翁義宗
+翁夢君
+翁銘遜
+翁靜瑜
+翁靚晏
+袁如岡
+袁偉倫
+袁榮燦
+馬一文
+馬玉娟
+馬佳伶
+馬英傑
+馬智君
+馬緒川
+高一銘
+高小文
+高世昌
+高正國
+高伊俊
+高宏銘
+高秀鈴
+高妮瑋
+高明
+高咸實
+高美芳
+高峰
+高健
+高培真
+高敏娉
+高笙輔
+高琪舒
+高雅腹
+高照閔
+高詩娉
+高彰隆
+高翠翎
+高銘琇
+高慧萍
+高譜倫
+高斌鑫
+商弘易
+崔倩苓
+康乃月
+康攸華
+康美玲
+康傑民
+康雅婷
+康曉蕙
+張一鴻
+張力夫
+張千里
+張小萍
+張仁杰
+張元隆
+張天鳳
+張心瑜
+張文彥
+張文欽
+張文豪
+張文騰
+張世明
+張世儒
+張仕育
+張可欣
+張弘泰
+張正忠
+張正衛
+張永俊
+張玄鴻
+張玉琪
+張立文
+張亦寧
+張光仁
+張匡杰
+張如瑩
+張旭宗
+張至睿
+張佑群
+張克偉
+張妙慧
+張宏瑞
+張志
+張志明
+張志祥
+張志達
+張志豪
+張沅璽
+張秀琪
+張育崧
+張育誠
+張育瑋
+張亞銜
+張佳惠
+張佩瑛
+張孟婷
+張宜新
+張念慈
+張昆煌
+張明照
+張林芬
+張治國
+張芝友
+張金鳳
+張俊偉
+張冠華
+張建豪
+張恆瑋
+張柔明
+張界聰
+張紀君
+張美雯
+張茂醒
+張香璽
+張倫瑋
+張哲健
+張哲維
+張家振
+張家菱
+張家群
+張家綺
+張家豪
+張家銘
+張家瑋
+張峻嘉
+張庭源
+張振源
+張晉豪
+張書維
+張書馨
+張桂鳳
+張珮怡
+張益維
+張秦芸
+張純益
+張耿崚
+張高瑞
+張健良
+張國媛
+張婉暄
+張惟捷
+張梅君
+張清凱
+張淑珍
+張淑茹
+張淑雅
+張淵富
+張莉茹
+張凱宇
+張凱琳
+張勝傑
+張博勛
+張喬翔
+張富淳
+張惠娟
+張惠菁
+張敦義
+張景渾
+張智清
+張智翔
+張智謙
+張湘怡
+張登翔
+張紫鈴
+張舜華
+張証荃
+張逸群
+張鈞貽
+張雅姍
+張雅敏
+張雅婷
+張雅惠
+張雅琴
+張雅鈴
+張雯儀
+張嗣文
+張新宏
+張毓倫
+張瑚珊
+張瑞芸
+張瑞氶
+張祺昇
+張聖莉
+張詩怡
+張靖怡
+張嘉正
+張嘉芬
+張嘉晉
+張嘉惠
+張嘉聲
+張榕容
+張睿穎
+張碩桓
+張綵芳
+張維哲
+張翠文
+張蓓萱
+張銘宗
+張鳳平
+張慶怡
+張慧娟
+張瑩珊
+張憶君
+張曉菁
+張翰文
+張靜如
+張環伊
+張鴻智
+張簡欣華
+張豐璸
+張瓊文
+張藝馨
+張寶云
+張耀云
+張耀聲
+張馨文
+張巍耀
+張芃
+張琇閔
+張琬菁
+張瑋芸
+張筱雯
+張禕倫
+張恒中
+曹士敏
+曹聿男
+曹昌男
+曹哲嘉
+曹淑媛
+曹皓雲
+曹嘉文
+曹璽穠
+梁文安
+梁正忠
+梁汝舜
+梁志銘
+梁東林
+梁彥豪
+梁家明
+梁晉魁
+梁啟玄
+梁勝銘
+梁朝凱
+梁愷芸
+梁嘉珍
+梁慧華
+梁瓊丹
+梅光宇
+盛心
+莫星宇
+莊士國
+莊文昭
+莊弘任
+莊玉麟
+莊志榮
+莊依婷
+莊坤哲
+莊宗勳
+莊怡軒
+莊東明
+莊金靜
+莊政憲
+莊倉杰
+莊峻榕
+莊純純
+莊培鑫
+莊淑芬
+莊淑珺
+莊勝利
+莊復貴
+莊惠蓉
+莊智涵
+莊登發
+莊雅心
+莊雅惠
+莊雯雯
+莊裕文
+莊銘景
+莊樹宏
+莊靜怡
+莊鎔璞
+莊懿強
+莊筱婷
+許又仁
+許壬耀
+許文厚
+許文豪
+許世民
+許加宏
+許正忠
+許永毅
+許玉嬋
+許名世
+許汎穎
+許克仲
+許宏德
+許志崇
+許志遠
+許秀珊
+許良
+許佳雯
+許孟翔
+許怡珮
+許松等
+許芳銘
+許信榮
+許恬綾
+許珊瑜
+許美華
+許郁敏
+許哲瑞
+許哲瑋
+許家暘
+許家豪
+許峻哲
+許庭瑋
+許晉熒
+許書銓
+許珮嘉
+許素菁
+許財得
+許婉茹
+許梅菁
+許淑芬
+許淑惠
+許莉莉
+許勝勛
+許堡如
+許惠如
+許惠雯
+許景鈞
+許智凱
+許智德
+許竣能
+許華倚
+許逸章
+許雅玲
+許雅惠
+許雅雁
+許雯琳
+許楨祥
+許瑞
+許瑞儀
+許聖杰
+許嘉元
+許嘉珮
+許榕
+許碩修
+許維真
+許銘仁
+許閣文
+許慧貞
+許憶芳
+許錦文
+許嶸仁
+許瓊文
+許麗華
+許馨仁
+許昶華
+許筱萍
+許恒達
+連佑仁
+連建智
+連桂宏
+連啟智
+連嘉純
+郭乃榮
+郭于禎
+郭子立
+郭仁哲
+郭文惠
+郭世蘭
+郭永明
+郭仲淵
+郭年真
+郭君怡
+郭志宏
+郭育先
+郭邦彥
+郭佳鑫
+郭孟蓉
+郭怡伶
+郭怡秀
+郭明宗
+郭明瑋
+郭玥妦
+郭芝睿
+郭保君
+郭俊億
+郭品秀
+郭威志
+郭建良
+郭思宜
+郭昭安
+郭柏秀
+郭盈君
+郭美善
+郭貞孍
+郭凌志
+郭家祥
+郭宸昀
+郭振漢
+郭桂鳳
+郭素綾
+郭國正
+郭添新
+郭淑慧
+郭惠青
+郭智瑋
+郭進昌
+郭雅菱
+郭瑞欽
+郭嘉偉
+郭碧娟
+郭慶生
+郭儒謙
+郭燕玲
+郭靜美
+郭鎮元
+郭獻文
+郭籠慶
+郭暐
+陳一華
+陳乃榮
+陳又昕
+陳千錦
+陳子彥
+陳己升
+陳仁宗
+陳元靖
+陳天賞
+陳心潔
+陳文忠
+陳文涓
+陳文欽
+陳文德
+陳文鈺
+陳世宗
+陳世政
+陳世章
+陳世澤
+陳以靜
+陳仕叡
+陳可欣
+陳巧珊
+陳幼欣
+陳弘訓
+陳札培
+陳正峰
+陳正豪
+陳永
+陳永青
+陳永誌
+陳玉文
+陳玉芬
+陳玉珠
+陳玉菁
+陳玉璘
+陳石育
+陳立倫
+陳立維
+陳伊倫
+陳光甫
+陳向榮
+陳如蘋
+陳安佑
+陳江立
+陳至凱
+陳佑庭
+陳伯蒼
+陳君航
+陳均碩
+陳妍秀
+陳宏仁
+陳宏美
+陳宏達
+陳宏煒
+陳志平
+陳志沛
+陳志明
+陳志彥
+陳志祥
+陳志源
+陳志維
+陳志豪
+陳志穎
+陳攸婷
+陳汶津
+陳秀芝
+陳秀惠
+陳秀慧
+陳育佐
+陳育詩
+陳良政
+陳酉茹
+陳依翔
+陳佳吟
+陳佳玥
+陳佳惠
+陳佳雯
+陳佳璘
+陳侃婷
+陳佩佩
+陳佩琳
+陳其鈞
+陳坤佐
+陳委承
+陳孟偉
+陳孟輝
+陳宗志
+陳宗旗
+陳宜平
+陳宜姿
+陳宜璋
+陳尚文
+陳幸足
+陳忠良
+陳怡文
+陳怡如
+陳怡如
+陳怡竹
+陳怡伶
+陳怡君
+陳怡君
+陳怡君
+陳怡昌
+陳怡真
+陳怡琴
+陳怡誠
+陳怡潔
+陳怡靜
+陳怡叡
+陳昌文
+陳明正
+陳明材
+陳明珠
+陳明楷
+陳明豐
+陳東華
+陳欣如
+陳欣怡
+陳欣蘭
+陳泓翔
+陳泊辰
+陳玟瑛
+陳玫臻
+陳秉斌
+陳芝倩
+陳金良
+陳長慶
+陳亭君
+陳亮穎
+陳信吟
+陳信甫
+陳信裕
+陳保元
+陳俊仰
+陳俊宇
+陳俊旭
+陳俊宏
+陳俊廷
+陳俊良
+陳俊郎
+陳俊華
+陳俊榕
+陳俊銘
+陳俊樺
+陳俐安
+陳俞仲
+陳冠夫
+陳冠宇
+陳冠宏
+陳冠傑
+陳冠銘
+陳勇在
+陳勁吾
+陳品先
+陳奕中
+陳奕廷
+陳奕穎
+陳姿文
+陳姿吟
+陳姿穎
+陳威全
+陳威助
+陳威邑
+陳威儒
+陳宣每
+陳帥名
+陳建任
+陳建安
+陳建旭
+陳建宏
+陳建廷
+陳建甫
+陳建邦
+陳建揚
+陳建達
+陳建輔
+陳建璋
+陳建烜
+陳彥任
+陳彥帆
+陳彥君
+陳彥廷
+陳彥昌
+陳彥綸
+陳彥勳
+陳思年
+陳思源
+陳思穎
+陳政文
+陳政裕
+陳春妃
+陳昭文
+陳昭偉
+陳昭瑋
+陳映儒
+陳昱丞
+陳昱甫
+陳柔安
+陳柏份
+陳柏年
+陳柏志
+陳柏峰
+陳柏寧
+陳柏輯
+陳炫君
+陳炳錕
+陳珍瑩
+陳盈全
+陳盈安
+陳盈孜
+陳盈婷
+陳盈璇
+陳禹齊
+陳秋帆
+陳秋萍
+陳紀足
+陳美如
+陳美君
+陳美芝
+陳美純
+陳美琴
+陳美慧
+陳羿谷
+陳致福
+陳茂雄
+陳英傑
+陳虹曲
+陳衍至
+陳貞妤
+陳郁文
+陳郁菁
+陳重廷
+陳韋伶
+陳音
+陳香吟
+陳倖翠
+陳哲強
+陳家珍
+陳家雯
+陳家慧
+陳容萱
+陳振東
+陳時盟
+陳桂玉
+陳泰峰
+陳浩茹
+陳珮珮
+陳益裕
+陳素娥
+陳耘寬
+陳乾淦
+陳偉莉
+陳健霖
+陳國峰
+陳國榮
+陳培端
+陳婉菁
+陳崑銘
+陳啟存
+陳敏新
+陳清奇
+陳淑君
+陳淑芬
+陳淑娟
+陳淑羚
+陳淑雅
+陳淑靜
+陳紹庭
+陳許民
+陳傑裕
+陳勝嘉
+陳婷玟
+陳惠文
+陳惠玲
+陳惠萍
+陳惠齡
+陳景泰
+陳智偉
+陳朝熙
+陳湘琴
+陳琦琳
+陳肅權
+陳詠亮
+陳逸平
+陳逸菁
+陳進隆
+陳隆斌
+陳雅芬
+陳雅苓
+陳雅惠
+陳雅琴
+陳雅雯
+陳雅韻
+陳順發
+陳意雯
+陳敬文
+陳榆涵
+陳毓鈞
+陳照慈
+陳瑞利
+陳瑞瑜
+陳瑜詩
+陳義忠
+陳聖宜
+陳蜂灝
+陳裕智
+陳詩婷
+陳運徵
+陳鼎仁
+陳嘉宏
+陳嘉峰
+陳嘉雁
+陳嘉瑩
+陳旗昌
+陳榮燿
+陳碧紅
+陳福林
+陳維哲
+陳肇鴻
+陳銘泉
+陳銘耀
+陳儀
+陳廣麟
+陳德遠
+陳慶華
+陳慶鴻
+陳慧芝
+陳慧美
+陳慧純
+陳慧雯
+陳慕儒
+陳潔音
+陳瑩瑄
+陳誼芳
+陳黎桂
+陳憲儀
+陳曉青
+陳曉筠
+陳樹年
+陳燕菁
+陳穎祥
+陳蕙芳
+陳錦秀
+陳錦鴻
+陳靜怡
+陳靜淑
+陳靜慧
+陳龍寬
+陳薇
+陳駿揚
+陳鴻清
+陳璿如
+陳瓊淇
+陳贊中
+陳韻如
+陳韻竹
+陳麒元
+陳麗如
+陳麗芬
+陳麗婷
+陳寶玉
+陳耀笙
+陳櫻容
+陳艷鈴
+陳旻政
+陳姵如
+陳昶昱
+陳堜
+陳琬菁
+陳瑋典
+陳筱芳
+陳鈺玫
+陳銚茹
+陳瀅如
+陳嬿伶
+陸正義
+陸津華
+陸鳳玲
+章文芝
+章翔
+麥盧寶全
+傅文進
+傅亞凡
+傅建國
+傅珮淇
+傅淑雯
+傅鉛文
+傅琮
+喬宗堯
+彭仁志
+彭文慧
+彭玉華
+彭成傑
+彭佳偉
+彭朋雍
+彭俊福
+彭建榮
+彭若慈
+彭浩倫
+彭崇信
+彭盛
+彭滋萍
+彭雅絹
+彭聖萍
+彭慧如
+彭錦炫
+彭馨慧
+景雨秋
+曾士軒
+曾小玲
+曾孔鈺
+曾文彬
+曾令瑜
+曾玉如
+曾仲盟
+曾羽嶺
+曾志傑
+曾育菁
+曾季歆
+曾承志
+曾芝蘭
+曾俊智
+曾冠樺
+曾建和
+曾建霖
+曾思維
+曾映齡
+曾秋敏
+曾美齡
+曾郁穎
+曾珮琳
+曾偉翔
+曾國書
+曾婉惠
+曾淑芳
+曾涵副
+曾凱悌
+曾惠玲
+曾智祺
+曾華齡
+曾雅青
+曾意文
+曾溥元
+曾瑛琳
+曾裕凱
+曾嘉英
+曾維群
+曾慶瑄
+曾憲忠
+曾繁青
+曾瓊慧
+曾寶磁
+曾馨儀
+曾暐清
+曾瞍
+游大緯
+游世斌
+游兆君
+游李雄
+游佩勳
+游昌翰
+游青霏
+游秋怡
+游家豪
+游婉青
+游淑惠
+游喬智
+游智超
+游進富
+游雅筠
+游榮華
+游錫宗
+游獻群
+湯一珊
+湯志忠
+湯家豪
+湯富棋
+湯慶錚
+程之寧
+程尚則
+程建翰
+程偉政
+程雅惠
+程瓊萱
+童弘
+童美滿
+童韻如
+華國鋒
+賀厚平
+辜信福
+閔任遠
+須上苑
+馮永瀅
+馮長龍
+馮彩娟
+馮瑞陽
+馮耀文
+黃力言
+黃于芬
+黃于真
+黃千凌
+黃士原
+黃士嘉
+黃大倫
+黃子卿
+黃小娟
+黃中偉
+黃仁良
+黃元隆
+黃天健
+黃心怡
+黃心姮
+黃文怡
+黃文玲
+黃文隆
+黃文璋
+黃月瑾
+黃世朋
+黃世嘉
+黃以喬
+黃巧婷
+黃弘毅
+黃正佩
+黃永仁
+黃永漢
+黃玉雨
+黃玉菁
+黃立芬
+黃亦萱
+黃任延
+黃兆敏
+黃夙慧
+黃宇廷
+黃旭弘
+黃聿君
+黃伯年
+黃妙芬
+黃宏進
+黃志成
+黃志強
+黃志嘉
+黃志龍
+黃秀容
+黃育信
+黃依文
+黃佳媛
+黃佩俐
+黃坤德
+黃宗基
+黃幸儀
+黃怡珊
+黃怡菁
+黃怡維
+黃明志
+黃明瑞
+黃東海
+黃欣愉
+黃玟瑾
+黃芷雲
+黃長澤
+黃信捷
+黃信彰
+黃信斌
+黃俊哲
+黃俊傑
+黃俊舜
+黃俊嘉
+黃俊賢
+黃俞斐
+黃冠雅
+黃勇慧
+黃品毅
+黃姿綾
+黃宣凱
+黃建文
+黃建程
+黃建彰
+黃建勳
+黃彥太
+黃彥瑜
+黃彥斌
+黃思賢
+黃政揚
+黃昭智
+黃昱中
+黃柏元
+黃柏翔
+黃柏翰
+黃炳憲
+黃盈惠
+黃秋萍
+黃美玉
+黃美羚
+黃美蓉
+黃若薇
+黃英傑
+黃貞穎
+黃郁珊
+黃郁雯
+黃韋琪
+黃倉彥
+黃家隆
+黃庭鈺
+黃振誠
+黃書鈺
+黃浩鈞
+黃珮舒
+黃祖賢
+黃能豐
+黃偉峰
+黃偉銘
+黃健溢
+黃國芳
+黃國軒
+黃國裕
+黃國鐘
+黃婉貞
+黃崇訓
+黃彩銘
+黃啟修
+黃敏修
+黃梅玲
+黃清麟
+黃淑玲
+黃淑梅
+黃淑華
+黃淑靜
+黃祥斌
+黃莉娟
+黃途巖
+黃凱威
+黃勝裕
+黃堯偉
+黃富詳
+黃惠芬
+黃惠琴
+黃惠霞
+黃景裕
+黃智康
+黃朝琴
+黃湘巧
+黃琪婷
+黃竣南
+黃舒彥
+黃菊英
+黃逸
+黃閔農
+黃雅津
+黃雅淑
+黃雅琪
+黃雅萱
+黃雅齡
+黃順吉
+黃意超
+黃敬斌
+黃榆婷
+黃源璋
+黃瑞伶
+黃瑞陽
+黃盟凱
+黃義君
+黃聖哲
+黃聖鴻
+黃裕盛
+黃詩芸
+黃詩雯
+黃鈴琪
+黃靖惠
+黃嘉勇
+黃嘉萱
+黃榮順
+黃睿伸
+黃維智
+黃銘偉
+黃儀君
+黃慶華
+黃慧茹
+黃澄偉
+黃震宇
+黃曉佩
+黃燕娥
+黃錚暉
+黃靜宜
+黃應璿
+黃駿達
+黃薰瑩
+黃瀚德
+黃瓊儀
+黃瓊誼
+黃韻如
+黃麗妃
+黃麗蓉
+黃寶儀
+黃繼增
+黃耀瑩
+黃鐘葦
+黃馨慧
+黃齡萱
+黃艷玉
+黃昶斌
+黃翊宸
+黃琬君
+黃菀鈴
+黃瑋寧
+黃筱雁
+黃鈺婷
+黃鉦閔
+黃謵說
+塗時雨
+楊三賢
+楊士弘
+楊士賢
+楊子毅
+楊之慧
+楊允中
+楊文宏
+楊文瑞
+楊世凱
+楊可歆
+楊正彬
+楊玉鼎
+楊仲民
+楊守城
+楊伶慧
+楊志能
+楊志雍
+楊秀珠
+楊育儒
+楊佳菁
+楊佩珊
+楊坤英
+楊孟蓉
+楊宗堯
+楊宗翰
+楊宜璋
+楊岱儒
+楊怡芳
+楊承熹
+楊昆霖
+楊明寰
+楊東敏
+楊欣珮
+楊秉順
+楊長潔
+楊俊輝
+楊思雋
+楊昭輝
+楊紀芸
+楊美藝
+楊哲安
+楊家銘
+楊振宗
+楊書豪
+楊珮琦
+楊虔雅
+楊健國
+楊培恩
+楊惟白
+楊淳硯
+楊淑佳
+楊淑敏
+楊淑慧
+楊盛斌
+楊凱仲
+楊勝宇
+楊博欽
+楊婷鈞
+楊循婷
+楊惠婷
+楊斯凱
+楊景雯
+楊智傑
+楊智鈞
+楊森發
+楊皓瑋
+楊舒帆
+楊菁芬
+楊貴媛
+楊閔翔
+楊雅倫
+楊雅嵐
+楊雅翔
+楊雅雲
+楊雲翔
+楊煥章
+楊裕
+楊嘉玲
+楊槐駒
+楊趙銘
+楊慶隆
+楊璋
+楊曉菁
+楊蕙芳
+楊靜如
+楊戴州
+楊礎遠
+楊豐銘
+楊瓊華
+楊曦琳
+楊琇如
+楊琬婷
+楊鎧伊
+溫至任
+溫承翰
+溫若婷
+溫培青
+溫雅清
+溫曉華
+萬佳昕
+萬曉明
+葉又嘉
+葉大葦
+葉天將
+葉代權
+葉亦盛
+葉如雯
+葉宏傑
+葉秀梅
+葉佳欣
+葉佩真
+葉宗智
+葉怡君
+葉昌倫
+葉明鑫
+葉玟君
+葉長青
+葉俊宏
+葉俞杉
+葉建君
+葉思儀
+葉昱志
+葉秋月
+葉郁菁
+葉家宇
+葉峻賓
+葉書瑋
+葉耿齊
+葉張建
+葉淑鈴
+葉惠禎
+葉詠晴
+葉雅雯
+葉義松
+葉銘昌
+葉潔恩
+葉蕙芳
+葉駿逸
+葉騰遠
+葉琤怡
+葛倩如
+董巧玲
+董怡君
+董彥宏
+董振雄
+董慧美
+裘元愷
+詹子民
+詹世傑
+詹宏彬
+詹佳振
+詹孟晃
+詹忠榮
+詹青艷
+詹美珍
+詹浚昇
+詹茗芸
+詹淑萍
+詹勝欽
+詹景堯
+詹証富
+詹雅閔
+詹嘉璿
+詹穎萍
+詹玓瑋
+賈治國
+鄒一仲
+鄒李昌
+鄒金德
+鄒新全
+雍敦元
+雷雅菁
+廖于文
+廖大樟
+廖元利
+廖文評
+廖月觀
+廖正偉
+廖丞晞
+廖含潔
+廖志偉
+廖育良
+廖佩如
+廖怡玲
+廖明儀
+廖芝堅
+廖俊欽
+廖姿毓
+廖彥凱
+廖昱樹
+廖美玲
+廖英男
+廖述茂
+廖卿惠
+廖家瑩
+廖恩慈
+廖書珮
+廖珮玫
+廖素卿
+廖偉成
+廖偉鴻
+廖國勛
+廖培瑜
+廖寄萍
+廖惇治
+廖梓茜
+廖淑惠
+廖貫珮
+廖惠娟
+廖進平
+廖楷文
+廖嗾
+廖銘仁
+廖瑩璇
+廖錦瑜
+廖麒閔
+廖斌傑
+熊立新
+熊崇緯
+管幼仲
+臺文照
+裴偉程
+褚家德
+趙仁佑
+趙文忠
+趙必昌
+趙君杰
+趙佩芬
+趙明輝
+趙品彥
+趙炫勛
+趙家良
+趙桂青
+趙偉廷
+趙培霖
+趙皎君
+趙鈞志
+趙廣元
+趙雙駿
+鄞豪輝
+劉乃萱
+劉力豪
+劉千瑜
+劉大榮
+劉子頎
+劉仁正
+劉心儀
+劉文勝
+劉日順
+劉世慶
+劉正河
+劉玉文
+劉玉琇
+劉仲涵
+劉全彬
+劉如薰
+劉旭芬
+劉君祺
+劉廷楷
+劉志源
+劉秀郁
+劉育宗
+劉育穎
+劉亞芸
+劉佳芳
+劉佳達
+劉佩青
+劉坤穎
+劉宗怡
+劉宜昆
+劉岡陵
+劉怡伶
+劉怡和
+劉怡靜
+劉昌誠
+劉明哲
+劉果珍
+劉欣茹
+劉玫寧
+劉芳蘭
+劉金鳳
+劉信良
+劉俊廷
+劉俊巖
+劉冠良
+劉品宜
+劉姿吟
+劉建宏
+劉建良
+劉建町
+劉彥博
+劉恪人
+劉映秀
+劉柏麟
+劉盈如
+劉秋成
+劉美侖
+劉羿汝
+劉軍毅
+劉修明
+劉哲瑋
+劉家昇
+劉家鳳
+劉峻伶
+劉振中
+劉書宏
+劉浚銘
+劉益禎
+劉純杏
+劉偉誠
+劉國龍
+劉康楝
+劉敏琪
+劉淑莉
+劉祥民
+劉博文
+劉揚銘
+劉朝蓮
+劉舒慈
+劉閔結
+劉雅萍
+劉勤經
+劉源倫
+劉經綸
+劉嘉育
+劉嘉樺
+劉熙慧
+劉肇鵬
+劉德正
+劉慧玲
+劉瑩娟
+劉曉芬
+劉樹蕙
+劉穎蒨
+劉錦堂
+劉龍山
+劉鴻霖
+劉瀚陽
+劉寶婷
+劉懿慧
+劉姵嘉
+劉瑋玲
+厲斌中
+歐士源
+歐志盈
+歐怡秀
+歐建民
+歐娉妦
+歐逸青
+歐陽惠如
+歐穎君
+潘允仁
+潘玉惠
+潘宏宗
+潘佩君
+潘怡君
+潘玟樺
+潘冠宏
+潘建成
+潘政緯
+潘美玲
+潘能哲
+潘惠娟
+潘瑞香
+潘儀恬
+潘鴻銘
+潘鈺柔
+蔣中衍
+蔣沆祥
+蔣宜靜
+蔣長旻
+蔣淑慧
+蔣濱州
+蔡士旺
+蔡仁偉
+蔡天祺
+蔡文博
+蔡文鴻
+蔡世鴻
+蔡正宗
+蔡玉秋
+蔡亦雯
+蔡名書
+蔡旭曜
+蔡伯鴻
+蔡宏培
+蔡志明
+蔡志鴻
+蔡汶鴻
+蔡育正
+蔡育勳
+蔡依容
+蔡佳宏
+蔡佳芬
+蔡佳容
+蔡佳蓉
+蔡佳霖
+蔡佩君
+蔡佩珊
+蔡佩娥
+蔡佩穎
+蔡其珮
+蔡坤雄
+蔡奇霖
+蔡孟芳
+蔡孟真
+蔡孟諭
+蔡宗志
+蔡宗達
+蔡宗翰
+蔡宜廷
+蔡宜倩
+蔡宜霖
+蔡尚岳
+蔡岳書
+蔡幸淳
+蔡忠穎
+蔡承璋
+蔡易陞
+蔡昌儒
+蔡明汎
+蔡明芳
+蔡明峰
+蔡明蒲
+蔡明龍
+蔡昇穎
+蔡杰志
+蔡欣怡
+蔡武諺
+蔡秉昆
+蔡芳洵
+蔡金龍
+蔡信良
+蔡品儀
+蔡思捷
+蔡政哲
+蔡政龍
+蔡玲津
+蔡美芝
+蔡郁君
+蔡娟娟
+蔡悅玟
+蔡珮怡
+蔡偉杰
+蔡培譯
+蔡添文
+蔡淑玲
+蔡淑薇
+蔡勝雄
+蔡富貴
+蔡惠燕
+蔡智暐
+蔡舒宇
+蔡逸珊
+蔡雅芬
+蔡雅菁
+蔡傳德
+蔡瑞文
+蔡裕健
+蔡嘉恆
+蔡榮昌
+蔡碧容
+蔡裴伶
+蔡銘賢
+蔡慧民
+蔡賢皇
+蔡曉然
+蔡翰熊
+蔡靜宜
+蔡鴻民
+蔡豐文
+蔡鵑彌
+蔡麗惠
+蔡馨儀
+蔡旻憲
+蔡瑋竑
+鄭一凡
+鄭力仁
+鄭子見
+鄭仁富
+鄭心如
+鄭文富
+鄭世昌
+鄭巧青
+鄭玉伶
+鄭立享
+鄭仲宏
+鄭光淳
+鄭吏孜
+鄭如欣
+鄭宇淨
+鄭成棠
+鄭百婷
+鄭伯南
+鄭志功
+鄭秀娟
+鄭貝如
+鄭佳儀
+鄭孟玲
+鄭怡君
+鄭明忠
+鄭欣榮
+鄭俊宏
+鄭彥達
+鄭美玉
+鄭迪允
+鄭振宜
+鄭祐阡
+鄭偉珊
+鄭培聰
+鄭梅君
+鄭淑米
+鄭淑燕
+鄭莉雯
+鄭凱文
+鄭勝旭
+鄭喬銘
+鄭惠文
+鄭惠霜
+鄭景文
+鄭智元
+鄭朝營
+鄭皓云
+鄭翔龍
+鄭詔謙
+鄭雅友
+鄭雅芬
+鄭雅甄
+鄭意中
+鄭瑜琳
+鄭裕年
+鄭嘉揚
+鄭肇心
+鄭慶哲
+鄭蔚蟬
+鄭曉薇
+鄭靜芳
+鄭鴻源
+鄭獻文
+鄭埵
+鄭靋
+鄧永忠
+鄧旭敦
+鄧明芳
+鄧振英
+鄧博仁
+鄧翔仁
+鄧福隆
+鄧劦呈
+黎世廉
+黎俐均
+黎銘仁
+盧仁杰
+盧弘海
+盧吉勇
+盧育聖
+盧定均
+盧怡涵
+盧雨涵
+盧俊儒
+盧威霖
+盧思源
+盧美如
+盧家鈺
+盧淑麗
+盧愷莉
+盧慧宜
+盧龍生
+盧筱瑩
+蕭尹貞
+蕭文筆
+蕭以亮
+蕭玉貞
+蕭兆琳
+蕭如珊
+蕭有宏
+蕭宏裕
+蕭育隆
+蕭季薇
+蕭昆廷
+蕭青萍
+蕭美娟
+蕭振安
+蕭國正
+蕭清燕
+蕭雪吟
+蕭博仰
+蕭惠芳
+蕭智梅
+蕭詠方
+蕭雅文
+蕭愛玲
+蕭詩璇
+蕭維倩
+蕭慧怡
+蕭靜宜
+蕭鶴軒
+賴乃頌
+賴天鴻
+賴世維
+賴正野
+賴玉霜
+賴旭彥
+賴廷禹
+賴志綱
+賴育廷
+賴佳欣
+賴孟華
+賴居正
+賴怡君
+賴明宏
+賴欣宜
+賴芳延
+賴信誠
+賴俊達
+賴勇志
+賴威均
+賴建佑
+賴彥佐
+賴思霖
+賴昭龍
+賴柏龍
+賴紅霞
+賴茂廷
+賴郁雯
+賴浩豐
+賴國恩
+賴淑怡
+賴莉雯
+賴貴義
+賴順振
+賴葦帆
+賴榮璉
+賴慶銘
+賴鋒
+賴錦億
+賴麗
+賴柊棋
+遲尚權
+錢欣宜
+錢德俊
+霍莘瑜
+駱芳梧
+駱嘉慶
+龍星兆
+戴乙菁
+戴文雄
+戴全利
+戴宏丞
+戴佳平
+戴明珠
+戴振遠
+戴莉
+戴傳家
+戴嘉宏
+戴賢祥
+戴薏珊
+薛丹桂
+薛光程
+薛依蒨
+薛奕龍
+薛偉伯
+薛景文
+薛瑞珍
+薛儒霙
+謝于櫻
+謝心雅
+謝文瑜
+謝弘亮
+謝玉珠
+謝如鴻
+謝佐宜
+謝宏忠
+謝志明
+謝扶錦
+謝育娟
+謝依倫
+謝佳倩
+謝佳穎
+謝佩芳
+謝佩真
+謝周熾
+謝孟芸
+謝孟芩
+謝宗賢
+謝宜芳
+謝宜臻
+謝尚儒
+謝怡婷
+謝易霖
+謝明宏
+謝明倫
+謝明憲
+謝昇哲
+謝松憲
+謝欣釗
+謝秉諺
+謝長原
+謝俊宏
+謝彥吏
+謝柏舟
+謝美玲
+謝家菱
+謝素菱
+謝國彬
+謝梓麟
+謝淑娟
+謝凱偉
+謝嵐屏
+謝景仁
+謝皓智
+謝雅雪
+謝順隆
+謝萬龍
+謝嘉銘
+謝翠環
+謝鳳玲
+謝慧瓊
+謝燕玲
+謝靜宜
+謝鴻駿
+謝瓊文
+謝顯銘
+謝煒頻
+鍾元振
+鍾月圓
+鍾兆民
+鍾孝其
+鍾秀芳
+鍾佳穎
+鍾卓儒
+鍾宜興
+鍾承璋
+鍾明憲
+鍾秉諺
+鍾政民
+鍾美琳
+鍾商駿
+鍾淑萍
+鍾智傑
+鍾雲光
+鍾禎元
+鍾樂吟
+鍾薰嫺
+鞠岱琦
+韓佩劭
+韓相宜
+韓嘉駿
+簡士益
+簡文亨
+簡巧婷
+簡立人
+簡宇屏
+簡伶娟
+簡宏倫
+簡志雄
+簡秀純
+簡佩琪
+簡明雁
+簡昭萸
+簡家新
+簡國斌
+簡淑婷
+簡森乙
+簡順立
+簡瑞棻
+簡嘉宏
+簡禎佑
+簡銘辰
+簡憶如
+簡驪潔
+聶東南
+藍元皓
+藍仲偉
+藍春發
+藍國華
+藍雅齡
+藍黛瑩
+闕逢毅
+顏大福
+顏弘祥
+顏如玉
+顏呈旭
+顏宏叡
+顏志麟
+顏宗平
+顏奕仁
+顏家祺
+顏尉凱
+顏華成
+顏瑞文
+顏嘉成
+顏福順
+顏澤宇
+顏鈺芸
+魏仁威
+魏任廷
+魏百盛
+魏孝寬
+魏秀恬
+魏明章
+魏英鎮
+魏崇桓
+魏朝信
+魏筠文
+魏嫦妝
+魏慕帆
+魏瑄誼
+羅子軒
+羅元甫
+羅心屏
+羅月凰
+羅巧莉
+羅玉萍
+羅兆維
+羅宏一
+羅亞寧
+羅怡惠
+羅芷青
+羅美蓮
+羅振廷
+羅素花
+羅國華
+羅強
+羅淇文
+羅傑
+羅惠蘭
+羅華濃
+羅雯琴
+羅聖琳
+羅際川
+羅曉威
+羅馨宜
+譚光華
+譚諦
+關淑雲
+嚴可君
+嚴婉玲
+嚴維德
+藺心怡
+蘇子翔
+蘇文娟
+蘇巧寧
+蘇玉修
+蘇竹安
+蘇志堅
+蘇育弘
+蘇佳足
+蘇怡如
+蘇怡馨
+蘇武龍
+蘇青妙
+蘇俊銘
+蘇奕傑
+蘇建志
+蘇恆至
+蘇柏州
+蘇皇原
+蘇美玲
+蘇貞燕
+蘇倉永
+蘇家信
+蘇庭瑤
+蘇益祿
+蘇軒民
+蘇堂豪
+蘇清安
+蘇博玄
+蘇湘怡
+蘇雅君
+蘇順誠
+蘇猷翔
+蘇聖涵
+蘇靖嵐
+蘇聞謹
+蘇慧娟
+蘇曉芃
+蘇聲振
+蘇旻君
+蘇瑋琳
+鐘士欽
+鐘佳絹
+鐘敏愫
+鐘碧蘭
+饒亮
+黨一為
+顧倩如
+龔于珊
+龔佩君
+龔書聖
+龔靖詒
+佘尚鴻
+涂世和
+涂政男
+涂富星
+涂慧珍
+粘育瑋
+鄔心怡
+欒季強
+銘源
+アキモト,ヤスオ
+アイカワ,ノリオ
+アカツカ,カズヒコ
+アワズ,アキラ
+アサノ,ヨシヤ
+アラキ,ヨシカズ
+イノウエ,ヒロヒト
+カトウ,マサトシ
+ナカムラ,ケイゾウ
+フジワラ,タカコ
+ヤナギハラ,ミドリ
+カワダ,ナオコ
+イシノ,キヨナガ
+ゴトウ,カツノリ
+イシジマ,リョウヘイ
+アトウ,マサノリ
+ミシマ,タカユキ
+ミヨシ,ノブマサ
+タチノ,ジュン
+オオノ,カズオ
+キタガワ,ヨシタカ
+フルサワ,サトシ
+オオハシ,ヒトシ
+ヨシカワ,トシユキ
+カワイ,トシオ
+イシト,コウキ
+イマイ,タカユキ
+ヤマナカ,サツミ
+ホリカワ,カツミ
+スズキ,シュンジ
+アワエ,アツシ
+ナガセ,タカヒロ
+コバヤシ,ジュンイチ
+マエダ,ヒロシ
+カトウ,マサカズ
+スミタ,カオル
+セキグチ,タカユキ
+タナカ,テルヒサ
+ヒラノ,タカシ
+ハマグチ,シンジ
+サカガミ,ノリカズ
+コバヤシ,ヤスシ
+タキモト,ノリコ
+ホシ,ヒロフミ
+オオタカ,ユウコ
+スギムラ,シゲオ
+アオキ,マサル
+ナカハラ,ユウゾウ
+カトウ,オサム
+マエサカ,トモミツ
+フジタニ,カズヒコ
+ホッタ,シゲヒト
+アキヤマ,ユタカ
+フジタ,マサユキ
+トヨナガ,ヤスヒロ
+ハットリ,マサオ
+ノムラ,シゲオ
+カワシマ,タカコ
+ムロヤ,テツオ
+アシカワ,ヤスシゲ
+ハヤシ,タカオ
+ミヤガワ,フミノリ
+オグラ,ヤスヒロ
+ヨシダ,トシヒコ
+クドウ,ヒロシ
+クマガイ,タカユキ
+ニシオ,ヒデキ
+オオイヤマ,ノボル
+タケタニ,フトシ
+イシダ,カツヤ
+オイカワ,ノブアキ
+タカハシ,セイジ
+ムラタ,トオル
+スズキ,ススム
+ハヤシ,シンチョウ
+クロカワ,マサアキ
+ヤジマ,トオル
+カツライ,ワタル
+アカリ,リョウジ
+アズマ,ノブユキ
+アツミ,シュウジ
+マルオ,ヨシユキ
+イケオ,ミノル
+トリヤマ,リツオ
+ハマノ,ヨウイチ
+ヤマモト,コウタロウ
+コウチ,ユウスケ
+ナカジマ,ノリヒコ
+アラ,ヒロシ
+ホソカワ,マサヒロ
+イズミ,カネミツ
+アワジ,アツオ
+ミズヒキ,ヨシオ
+オダジマ,ナホミ
+フルカワ,シゲオ
+ミズグチ,ジロウ
+イトウ,ヒロシ
+フクイ,サトシ
+フジハラ,タケヒト
+ヤノ,ユウジ
+ハヤシグチ,ヒロシ
+ホリ,トシユキ
+ヨシイ,タカシ
+アンドウ,ヒロシ
+ハタ,コウイチ
+コバリ,ヒデユキ
+オダシマ,カツロウ
+ウエヤマ,ミツナリ
+ムタ,マナブ
+タナカ,シゲオ
+コンノ,ユウコ
+フジワラ,トシハル
+ミヤキ,ユタカ
+ハナワ,マサヒロ
+テジマ,アキラ
+クボ,アツシ
+オオバ,シンゴ
+コンノ,タクヤ
+マツバラ,ヒデオ
+ハシモト,スミコ
+ワタナベ,カズヒロ
+コタキ,テツヤ
+フカヤ,モモキ
+マツウラ,テッペイ
+フナダ,カズヒコ
+ヒガシダ,トシユキ
+イノマタ,ヒロシ
+サトウ,ヒロミ
+イトウ,タツシ
+ミタムラ,マユミ
+スガハラ,ミツル
+タカミヤ,ヒデノブ
+ヤマグチ,コスケ
+オタ,ツヨシ
+セノオ,ハジメ
+シバザキ,アツシ
+ナカムラ,ヤスヒロ
+フジカワ,ヒロユキ
+アライ,リュウジ
+オオクラ,ヒサノリ
+マツバ,シゲル
+タメヒロ,モトコ
+マンポ,カツミ
+コグチ,タカシ
+タニグチ,ナオスケ
+ヤマモト,タカヒロ
+ヒラモト,ヒデアキ
+アンラク,タカシ
+タナカ,ノリコ
+チャキ,シゲヒデ
+サカイ,チハル
+イナオカ,ヒロカズ
+ウシジマ,シンイチ
+コケツ,アキヒサ
+ムラタ,ヒトシ
+キムラ,ヨシヒロ
+シンタニ,リュウジ
+オオハタ,ノブアキ
+タブチ,ユタカ
+スミダ,キヨシ
+ミウラ,ナナコ
+リュウト,ヒロミ
+イケダ,ヒロナリ
+タカヤナギ,ヒロフミ
+エンド,ケンイチ
+オシカワ,シンジ
+コバヤシ,ヒデユキ
+ヤマダ,イワオ
+オダ,マサオ
+タキザワ,アツシ
+モリ,ヤスノリ
+カナザワ,タツユキ
+オオタ,タカアキ
+オオツ,テツロウ
+フジモト,カズヒロ
+モリカワ,マサノブ
+イトウ,コウジ
+カトウ,コウイチ
+ウエノ,ヨシヒコ
+オオカワ,サカエ
+マルイ,ジュンコ
+イワオ,シュウジ
+ウメダ,カズヤ
+メカタ,マサル
+ツジ,ツグヒコ
+タゴ,ヒロシ
+ヤマシタ,マサト
+スギヤマ,ヒロユキ
+フタバ,トシアキ
+ミヤヒラ,ミチアキ
+ニシザキ,ススム
+タナカ,クニコ
+ムラモト,トモアキ
+マエダ,ヒサカズ
+ミヤケ,アツシ
+トウジマ,タツヒロ
+オオヤ,マサル
+ウエノ,トモヒロ
+タカサキ,ヤスヒサ
+コンノ,ヨシヒサ
+タケオ,ノリカズ
+カナヤマ,ヤスヒコ
+オオオカ,トシロウ
+コバヤシ,シュウ
+ニシザカ,ミカ
+マスミダ,トモヒコ
+ツボイ,ヤスオ
+タガミ,マサル
+オカダ,テルオ
+カタギリ,サトシ
+カワテ,タカシ
+ミズイ,アヤオ
+カサオカ,トシヒコ
+ヒガシタニ,ヒデフミ
+ウシキ,カズイチ
+ヒラサワ,ナガコ
+ナリタ,シュウイチ
+コダマ,カズヒロ
+イノマタ,ヒロミ
+キムラ,ショウゴ
+イトウ,フミオ
+ワタナベ,テルアキ
+テラサワ,ミツオ
+ハヤシ,シンイチ
+アサクラ,シンヤ
+ヤマキ,コウイチ
+ナカムラ,シンイチロウ
+エノモト,ヒロミチ
+カマタ,タカヒロ
+ハシモト,ナオキ
+アライ,ヨシミ
+カリヤ,タカヒコ
+コンド,ヨシキ
+マスダ,ヒロオ
+イトウ,ケイスケ
+オカ,ミチハル
+オオツカ,ヒデキ
+マツオ,コウジ
+アソ,テルカズ
+カミムラ,ヒロユキ
+タカバタケ,シゲノリ
+フクダ,ヒロユキ
+タカハシ,ケント
+イワキ,マコト
+スン,トヨユキ
+アンドウ,ヨシオ
+ハシモト,カナ
+ヤハタ,ヒデオ
+フジキ,ケンジ
+マツオ,サトシ
+アオキ,ヨウイチロウ
+ゴトウ,シンジ
+ニシカワ,ヒトシ
+スミト,マサフミ
+ヒラノ,コウジ
+イトウ,ケイ
+コイズミ,ノリコ
+カワバタ,ノゾミ
+ムトウ,カツノリ
+アダチ,マサシ
+キラ,マサシ
+アヤノ,コウキ
+タルイ,ヨシオ
+ハヤシ,キョウコ
+イケダ,ジュン
+ホリミゾ,ケイスケ
+フルナガ,ハルヒコ
+オシマ,ナスオ
+ハヤシ,ヒトシ
+ニシ,ユキミツ
+コムロ,カナメ
+ヒロタニ,ヨシオ
+スガ,ヒロシ
+ツルミ,アキヒサ
+トミヤマ,カズミツ
+ヤマザキ,ヨウコ
+イシダ,ショウイチロウ
+ウチトミ,アキラ
+オオサワ,ヨシカズ
+ヤナギ,ヒデヒロ
+ミヤシタ,ヒデキ
+タカハシ,コウジ
+トガワ,ヒロユキ
+ナカムラ,シゲル
+ウエムラ,タケシ
+アサノ,ユウイチ
+オオヤマ,ケンジ
+カワノ,エイコ
+ババ,ヒトシ
+イトウ,シンイチ
+ウエノ,ノブユキ
+シライ,ケンシン
+イカミ,ハルオ
+カワシマ,トモユキ
+ミヤケ,タカヒロ
+サクライ,ケンジ
+タケノシタ,シュウヘイ
+ニシオカ,セイイチロウ
+クロキ,マサヨシ
+タナカ,ミノル
+イイジマ,タカシ
+サトウ,ヒロアキ
+サクライ,カズシゲ
+ヤナギサワ,ノブオ
+ウチヤマ,シゲヨシ
+オクツ,カズトシ
+ニシヤマ,セイジ
+タケダ,タカコ
+フリハラ,カズオ
+ヤブキ,マサヒロ
+ナカ,カズヒロ
+ヨシオカ,カズヤ
+モチズキ,タカユキ
+スギヤマ,ヒデヒロ
+イワナガ,ケイイチ
+ミワ,ハルカズ
+ホリカワ,カツキ
+タカダ,コウジ
+イシマル,シゲヤス
+オムラ,ヒデオ
+キタムラ,リカ
+スギキ,タカキ
+ニシムラ,チエコ
+ナカハラ,コウイチ
+マツモト,アキラ
+フクシマ,マサル
+カジオカ,アキヒト
+ナカザワ,ノボル
+マスザキ,タカシ
+ナカ,トシタカ
+オサダ,ハジメ
+カワタ,ナオミ
+ヨシダ,コウジ
+ナカ,トシヒロ
+エイドメ,ヒデカズ
+マツモト,ヨシマサ
+ナガサカ,ヨシアキ
+フジサワ,カツヒコ
+キヨタニ,ツトム
+アリモト,セイコ
+エゾエ,ケイイチ
+ツチヤ,カズヤ
+フジオカ,ヤスコ
+ツカモト,フミオ
+タカハシ,トヨヒコ
+サカイダ,ヤスヒロ
+スズキ,コウジ
+オシマ,ヤストシ
+マキウチ,タクヤ
+ハラダ,ヒサカズ
+マサキ,アキラ
+オガワ,ノブアキ
+ウシマル,ケン
+イシダ,ノブタカ
+ハナブサ,アツコ
+ヨシムラ,ヨシヒサ
+タニガワ,マリオ
+サトウ,タツシ
+カツ,タカシ
+ヤマグチ,ヒロキ
+ハクチョウ,イサオ
+イトウ,タカシ
+サカイ,カズノリ
+タンゴ,ヒデオ
+コイズミ,ケンスケ
+ワカスギ,タダタカ
+ウエノ,シンイチ
+ウエダ,トモキ
+スズキ,ヒサエ
+オオノ,ヨシノリ
+アベ,ケンイチ
+シイキ,ヒロシ
+アラキ,キヨハル
+アズマ,ヒロヨシ
+デグチ,ヒロノリ
+エリカワ,ユウコ
+フカヤマ,ノブユキ
+フナキ,サカエ
+イチムラ,マコト
+ハシモト,ノリアキ
+ヒガシ,キヨタカ
+ヒロサワ,アツシ
+ホリグチ,ユウイチ
+イバラキ,ユウイチ
+イナムラ,コウイチ
+イシカワ,ミキオ
+イトイ,タダシ
+カナザシ,ノリコ
+カタギシ,マサシ
+カトウ,ヤスシ
+カワダ,ケンスケ
+キノシタ,ヤスヒロ
+コバヤシ,カツノリ
+コマツ,ヤスタカ
+コタニ,ヒデキ
+クロセ,オサム
+マエダ,ユウジ
+マンタニ,ヨウイチ
+マツモト,ヤスアキ
+ミムラ,シゲノブ
+ミワ,マサヒロ
+モリタ,アキヒコ
+ムネムラ,トシミツ
+ナガタ,ケンジ
+ナカコジ,タツヤ
+ナカムラ,ヨウイチ
+ナカヤマ,タカシ
+ニムラ,ススム
+ヤジマ,ヨシエ
+ノマ,トヨミ
+ヌキイ,カツミ
+オガサワラ,シュウジ
+オオサワ,ヒデタカ
+マツナガ,ヨシアキ
+オカモト,ヒロユキ
+オサダ,ムツミ
+サイトウ,アキヒロ
+サクライ,シゲノリ
+サトウ,ヨシノリ
+セザイ,カズヤス
+シミズ,アキトシ
+ショウミツ,ヨシヒロ
+スギサワ,ノブユキ
+スズキ,ユウジ
+スズキ,ユウコ
+タカハシ,タカユキ
+タカサカ,ハジメ
+フジイ,アツコ
+タマキ,サトコ
+タニ,カズヒコ
+トキゾノ,シゲオ
+トリザワ,エミ
+ツルカワ,エイジ
+ウダ,ヒサヨシ
+ウメムラ,キミヒロ
+ワタリ,ヤスヨシ
+ヤマモト,テツヤ
+ヤマモト,マサヨシ
+ヤノ,ユキオ
+ヨダ,イサオ
+ヤマグチ,カズヨシ
+ホ,アキラ
+マツミヤ,ユウイチ
+サワダ,ヒロシ
+コハラ,マサノリ
+サイトウ,ミツル
+ヤノ,ミツオ
+フジモリ,ノリコ
+ヤマグチ,ヤスヒロ
+ヤマダ,タカシ
+フジタ,トシキ
+キムラ,タケオ
+ハヤシ,マサヒロ
+マエザワ,イズミ
+シブカワ,キヨヒサ
+ミホ,マサノリ
+スギヤマ,シンイチ
+フルカワ,ヨシフミ
+ノチセ,カズヒコ
+マツモト,ヒデアキ
+オクノ,ユキオ
+ヤマザキ,ヤスヒロ
+イシゲ,アキコ
+ミウラ,リュウゾウ
+ババ,タクヤ
+モチズキ,エミコ
+トクナガ,フミヒト
+クロカワ,ヒロシ
+イケノ,メグミ
+ヤマカゲ,ヨウジ
+ヤギハシ,シュウイチ
+キヨミツ,ケンジ
+ムラヤマ,エイジュ
+オオツカ,ヒデヒコ
+オヤマダ,タカシ
+アゲタ,ジュンイチ
+アモウ,アキオ
+アラカワ,ヒデシ
+バンノ,マサキヨ
+エサキ,シンイチ
+フカザワ,トモヒト
+フナバシ,マサユキ
+ハナダ,カツノリ
+ハシモト,エミコ
+ヒジクロ,ナオユキ
+ホウヤ,カズヒコ
+ホソダ,チエミ
+イケザワ,ノブヤス
+イヌツカ,ナオキ
+カジタニ,オサム
+イトウ,チクサ
+イワシタ,シコ
+カミヤ,クニアキ
+カスヤ,アキラ
+カワバタ,ダイ
+カワクボ,カズトシ
+キバシ,ヒデヒコ
+キリサワ,イチロウ
+コダマ,オサム
+トウドウ,コウジ
+コヤイシ,ミカ
+クラタ,コスケ
+クワノ,ヒロタカ
+マスダ,ジュン
+マツシタ,タダシ
+ミヤケ,アツシ
+ミヨダ,タカヒサ
+ミズタニ,ツヨシ
+モリワキ,シンイチロウ
+ムトウ,カツキ
+ナガワ,シンイチ
+ナカシマ,ヒサヨシ
+ニシダ,ヒロヨシ
+ニシオ,マサト
+ノムラ,テツヤ
+オダオオハラ,シンゴ
+オオヒラ,イチロウ
+オオヌマ,ナルシ
+オオヤギ,マサヒロ
+オカネ,タカシ
+オクノ,カツシ
+サイトウ,ヨシミ
+サカウエ,ヤスユキ
+サトウ,タケシ
+セキモト,トシユキ
+シイナ,フミハル
+シミズ,ヒデトシ
+シラサキ,ヨウコ
+スドウ,サトコ
+スズキ,ヒロシ
+ホソカワ,ユリ
+ヤマザキ,ナオキ
+タカス,カズヨ
+タケダ,ヒロユキ
+タマタニ,カズアキ
+タニモト,シンイチ
+トミナガ,ヒロヒサ
+ツカダ,ヒデキ
+ウラカワ,ユウジ
+ワタリ,コウジ
+ヤマモト,アツシ
+ヤマシタ,トシヒデ
+ヤザキ,タケシ
+ヨコタ,ユウコ
+ヨシカワ,ミツヒロ
+アサノ,ミチコ
+オクダ,ヒサコ
+イナダ,マサツナ
+シモカワ,フミヒコ
+ツボタ,ノリオ
+オオクボ,タケシ
+サイトウ,シュウイチ
+フジタ,ツネオ
+マキムラ,タケオ
+ニノミヤ,カズオ
+タバタ,ヨシタカ
+ムラカミ,ヒロキ
+イマニシ,タケオ
+タキガワ,シゲヨシ
+オンズカ,ヒロシ
+トノカワ,タケシ
+イケダ,トキオ
+ゴトウ,カズヤ
+ソダ,ケンジ
+モリタ,マサユキ
+タンノ,エイイチ
+ゴウダ,キョウコ
+ヤマグチ,ヒロカズ
+オサナイ,アツシ
+ヒガシ,ショウコ
+ヤマモト,ヒデアキ
+サトウ,タカオ
+ミゾグチ,トシユキ
+キタガワ,ヒロシ
+オオニシ,ソウイチ
+アイハラ,ヒデオ
+アキバ,ツトム
+アマノ,トオル
+アオヤギ,タカオ
+アラ,アキオ
+アサノ,ヨシヒロ
+バン,コウタロウ
+エビヌマ,アケミ
+フジエダ,ジュン
+フジイ,シゲノリ
+オグラ,アヤコ
+フカオ,ミツヒロ
+フクダ,ミカ
+フクオカ,シンゴ
+ゴウダ,ヨリコ
+ハギワラ,キクオ
+ハナミツ,ヨシタカ
+ハラ,ミユキ
+ハツシマ,ケン
+ハットリ,ヨシノリ
+ハヤシ,カツミ
+ヒナタ,ジュン
+ヒラサワ,カズヒロ
+ヒロセ,ヒサユキ
+スギモト,セイイチ
+ホリ,カズオ
+ホソ,カズミ
+イデイ,マサカズ
+イイムラ,ヨシノブ
+イケダ,クニヒロ
+イマイ,タダシ
+イノウエ,ヒロタカ
+イシグロ,ヒロシ
+イシカワ,ヨウコ
+イシワタ,ナオヒサ
+イトウ,テツヤ
+イトウ,タカシ
+イワクボ,タカユキ
+イワサキ,タツヒコ
+カガミ,シゲヨシ
+カマモト,タエコ
+カミ,マコト
+カナザワ,サダイチ
+カネコ,ヤエ
+カシワギ,ヒロシ
+カタオカ,アツシ
+ゴトウ,ヒロカズ
+カワハラ,ヒロアキ
+カワキタ,ヤスコ
+キダ,ヨシフミ
+キムラ,ミノル
+オカザキ,タケオ
+キタムラ,アキオ
+コバヤシ,ミヨコ
+ヒロセ,ハルオ
+コサカ,ヨシユキ
+コクマイ,ミエコ
+コモオカ,フミオ
+コンドウ,タツト
+クボ,タカユキ
+クマモト,アキヒコ
+クリヤマ,ユキエ
+クシダ,ワタル
+マエカワ,ヒデタカ
+マスダ,ミキオ
+マツダ,シゲオ
+カノウ,ヒロユキ
+マツナミ,ヒロユキ
+マツザキ,タダシ
+ミモリ,ヒロシ
+ミウラ,ヨウイチ
+ミヤハシ,キョウコ
+ミヤタケ,シゲミ
+ミズコシ,トシオ
+モリキ,ヤスヒロ
+モリ,サトル
+ムカイ,タツミ
+ムラタ,サトシ
+ムツシカ,エイイチ
+ナガサワ,カズト
+ナガエ,タカユキ
+ナカジマ,カツトモ
+ナカマタ,ノリヒロ
+ナカムラ,ハジメ
+オオニシ,マサノリ
+ナカノ,モエコ
+ナカタ,シゲコ
+ナカヤマ,カツヒコ
+ナツヤマ,ユウコ
+モリ,ユキコ
+ニワ,マサキ
+ノマ,サトシ
+ノリカネ,マサル
+オダネ,ヨシカズ
+オオバヤシ,ヤスユキ
+オキ,ヨシユキ
+オライ,ススム
+オオトモ,アキオ
+オヒャ,クニヒコ
+オカモト,ヨシオ
+ウエダ,トヨカズ
+ニシ,アツキ
+タダ,タカユキ
+ヤマシタ,ケンジ
+ササモリ,ユタカ
+ハセガワ,トモユキ
+イマイ,ミユキ
+ヨコヤマ,ケンジ
+スギヤマ,ヨシマサ
+アライ,トモコ
+アマガヤ,ユメノ
+ツル,ミノル
+ヤイタ,マキ
+セキ,マリ
+ハラ,ヨシノリ
+ミウラ,ススム
+ササ,ユキコ
+タカサキ,マキコ
+ハラダ,エミコ
+クラタ,ヤスヒロ
+アゲマツ,ヒロミチ
+フクモト,ミキオ
+オクムラ,ダイ
+オソエガワ,ヤスナリ
+サイタ,マサヒロ
+サカイ,ヒロミ
+サカリ,ノブヒロ
+サノ,ユタカ
+サトウ,ヨシヒコ
+サトウ,アキオ
+サトウ,サトシ
+セキカワ,アキラ
+セシモ,コウジ
+シブヤ,マサノリ
+シマモリ,マサヒコ
+シモダ,ケイミン
+シンタニ,ユウジ
+シライ,シゲキ
+シュウ,ゴイチ
+スダ,ナオキ
+スギタ,ユウイチロ
+スザキ,テツヤ
+スズキ,トシヤ
+スズキ,ノリユキ
+タガイ,ヤスシ
+タカギ,ケンタロウ
+タカハシ,マサコ
+タカイシ,トモアキ
+タカオカ,タカキ
+タカヤマ,シンイチ
+タケモト,ノゾミ
+タマチ,ヒロシ
+タナカ,ヒロフミ
+タニ,ヒロブミ
+テラサキ,ヒロユキ
+サクラギ,ノリヒサ
+トヨサト,ヒロシ
+ツジモト,ユキオ
+ツルタ,シノブ
+ウチヤマ,タケシ
+キキョウ,ヨシタカ
+ウエノ,ヨシコ
+ナガタ,ノリコ
+ワダ,シズオ
+イトイ,ヨシヒサ
+ワタナベ,ヒデトシ
+ヤブウチ,ショウヘイ
+ヤマダ,アキオ
+ヤマモト,アキヒロ
+ヤマモト,マサトシ
+ヤマシタ,ツトム
+ヤマシタ,アキラ
+ヤノ,トモユキ
+ヨコタ,ミナコ
+ヨネムラ,タダシ
+ヨシムラ,ヒロミ
+マツダ,ヨシツグ
+ホソヤ,ショウジ
+ミヤシタ,シゲトモ
+シガ,マサミツ
+ヤマダ,ユウイチ
+ハヤシ,サホリ
+イケダ,ツヨシ
+ウエノ,カズタカ
+サイトウ,テルヨシ
+ナガヤス,コウジ
+ハギオ,トモヒコ
+ハマダ,マサジ
+ムラカミ,ノリヒロ
+アベ,シュンジ
+アキヤマ,トシユキ
+アンドウ,テンセイ
+アラキ,シゲミツ
+アソ,クニカズ
+ババ,ユウスケ
+エビサワ,ヒロシ
+フジイ,ヨシノリ
+フジイ,タツヤ
+フジタ,ヒロシ
+フジワラ,ヒロム
+フクダ,ジュン
+フクオカ,イサオ
+フルヤ,トシユキ
+ガド,ヒサシ
+ハガ,アツシ
+ハマシマ,ユミ
+ハセ,ユタカ
+ハシズメ,ナオキ
+ツダ,ヒロコ
+ハヤシ,トシロウ
+ヒライ,ユウイチ
+ヒラサカ,ヒロユキ
+ヒロワタリ,タカヒロ
+スズキ,ヒデキ
+ホソミ,ヒロアキ
+イダ,チハル
+イガラシ,ユキヤ
+イイジマ,タケシ
+イマムラ,コウイチ
+イレイ,マサル
+イシイ,トモユキ
+イソノ,ミツトシ
+イトウ,ヨシマサ
+イワサ,トシミ
+イズミサワ,セイジ
+カイダ,コウジ
+カマタ,トシエ
+カンベ,タカヒロ
+カネコ,アキラ
+ヨネモチ,ナオシ
+カタオカ,カズヒコ
+カトウ,ヤスヒロ
+カトウ,ユウジ
+タマガワ,コウイチロウ
+ナルケ,タカシ
+キド,タカフミ
+キクラ,カツミ
+キムラ,マサキ
+キノシタ,ヤスヒロ
+キタアキ,ヒロユキ
+コバヤシ,カズヒロ
+コバヤシ,トシキ
+コンノ,ヨウ
+コミヤマ,ヨシヒロ
+コニシ,アキノリ
+コヤマ,ヒロミ
+クドウ,ジュン
+クリヤ,ユウイチ
+ヨシダ,サトル
+マキノ,トシオ
+マサキ,ヒデヨ
+マツイ,ヤスヒロ
+マツモト,タケシ
+マツヤマ,ジュン
+ミタムラ,ジュン
+ミワタ,ナオキ
+ミヤモト,ヒトミ
+モチズキ,シュウイチ
+モリ,マサユキ
+マツダ,ケンジ
+モリワキ,ノブユキ
+ムラカミ,タケオ
+ムラヤマ,サトシ
+ナガシマ,ミチノリ
+ウチゾノ,タカシ
+ナカジマ,ヒロアキ
+ナカムラ,ヒロシ
+ナカムラ,ヨシヒコ
+ナカシマ,ノリオ
+ナラハラ,サトシ
+ニシブ,アヤコ
+ニシモト,ナオコ
+ニシザワ,ダイスケ
+ノジマ,ノリオ
+ヌワ,タケシ
+オガワ,ケンイチ
+オオガキ,カズヒロ
+オキ,マサヒコ
+オオモリ,ヒロアキ
+オオヌマ,マサオ
+オオタケ,サエコ
+サコダ,シュウイチ
+オカダ,テツジ
+オキタ,サトコ
+オオノ,タカシ
+オリイ,シュンジ
+オザワ,ヤスヒロ
+サイトウ,ケイジ
+サカモト,ヨシオ
+サカタ,マサヒロ
+サナギ,ヨシキ
+ササキ,ナガマサ
+サトウ,マモル
+サトウ,ヒデキ
+セキノ,ノリヒロ
+シマダ,アツシ
+シミズ,タカアキ
+シモダ,ヒロユキ
+シノザキ,アツシ
+ショウダ,ケンジ
+スガノ,ヒロユキ
+スギサキ,ヨウコ
+スギヤマ,タケシ
+スズキ,ヒデユキ
+スズキ,マサノリ
+タグチ,シン
+タカハシ,カズノリ
+タカハシ,オサム
+タカハシ,ヒデキ
+タカヤナギ,シゲル
+タケイ,ノブオ
+タケシマ,カツシロウ
+タムラ,ショウイチ
+タナカ,ヤスジ
+サノ,ヒロフミ
+テラマエ,マキ
+トグチ,タケシ
+トミイ,マサヒロ
+トットリ,アキヒコ
+ツジ,マサヒコ
+ツキザワ,コウジ
+ツルタ,ノリコ
+ウチダ,ショウコ
+ウエダ,ヨウスケ
+ウエノ,ジュンジ
+エガシラ,タダシ
+キタワキ,セイキ
+ワタナベ,タカシ
+ワタナベ,ヒロユキ
+ワタライ,ジロウ
+ヤマダ,アツシ
+フジタ,マサトシ
+ヤマモト,ヤスシ
+ヤマネ,ミチル
+ヤマシタ,シゲミ
+ヤマザキ,タダシ
+ヨダ,シュンスケ
+ヨシダ,カズヨシ
+ヨシムラ,サトル
+オザワ,カツユキ
+ヤマダ,キヨシ
+ササキ,ノブユキ
+アゼガミ,シゲカズ
+フクハラ,ノブユキ
+ハシモト,ヨシヒロ
+イソダ,コウイチ
+カマタ,タツヤ
+キムラ,ヨシヒロ
+コバヤシ,ゲン
+クマサキ,ヨシアキ
+ミクニ,トミオ
+エダ,タカシ
+ネモト,マサユキ
+オノ,タクジ
+サエキ,ノリユキ
+セキ,ユキオ
+スヤマ,ヒロコ
+タナカ,ケンゴ
+タザワ,ミキオ
+エンド,ジュンコ
+ヤマグチ,ノリオ
+ヤスダ,サトシ
+スズキ,タケシ
+ヒロハシ,ヤスオ
+カトウ,ヒロヨシ
+ウエハマ,ミノル
+マトバ,チヒロ
+ワタナベ,トオル
+カワシマ,テツオ
+フジカタ,ミツオ
+コイケ,オサム
+タナカ,リョウゾウ
+ダケヤマ,ヒロユキ
+クシビキ,スケヒデ
+スガハラ,テツオ
+ヒガシ,フミヒロ
+ホカ,ケンタロウ
+イワタ,タカユキ
+スガワラ,マスコ
+スト,マサミ
+マツザキ,マサノリ
+アカマル,オサム
+アベカワ,レイジ
+ヨネダ,マサオ
+ソガベ,ユキオ
+ワカバヤシ,ハレオ
+スミタ,テツヤ
+イノウエ,タカヨシ
+ミヤモト,ツトム
+フジカワ,ナオト
+サイトウ,フミオ
+タナベ,ケンジ
+シミズ,セイジ
+ノグチ,シゲアキ
+カワナミ,マサアキ
+フクシマ,アキラ
+オダワラ,ミチオ
+オオタ,ヨウジ
+カワノ,タダヨシ
+クニユキ,ヤスヒロ
+シマダ,ミツル
+タカシマ,ミツギ
+ツヤ,マコト
+ナカシマ,マサオ
+ヤギシタ,トシオ
+キシモト,マコト
+クゲ,ケンジ
+アサノ,ヨシアキ
+カワカミ,ツネオ
+シマダ,シュウイチ
+フジイ,シュンイチ
+ヒガ,ジュンキ
+タナベ,アキラ
+クラヤ,キヘイ
+ナカザワ,マサヒト
+アワタ,シゲル
+ジダ,アキオ
+ホソカワ,トシオ
+シブヤ,ヨシカズ
+コバヤシ,キヨシ
+キタガワ,ヨシテル
+ミズタニ,アキラ
+タカセ,トシオ
+ミヤムラ,トオル
+ヨコハタ,トシヒコ
+ナリタ,ミツヨシ
+アベ,サダヒロ
+ナマエ,ケンジ
+キムラ,ユタカ
+ナゴシ,ヒデアキ
+トミナカ,ヨシオ
+ナカノ,ツモル
+オオサク,カズオ
+ハヤシ,シゲアキ
+オオサ,タカシ
+ヤマウチ,ジ
+オダ,リョウジ
+メグロ,ヒロヨシ
+カナサキ,トミオ
+オカノ,ヤスオ
+クサカワ,ナオキ
+イノウエ,タケシ
+ヤダ,カズオミ
+マツオカ,ユキオ
+スズキ,ユウジ
+タキモト,クニオ
+ヒガシバタ,ヒデオ
+イイダ,ケンシ
+カンノ,マサヒロ
+タナカ,シゲル
+イクタ,ヤスヒサ
+サノ,ヒデマサ
+スガワラ,ヤスヒロ
+ナガタ,ユキオ
+ウラノ,サトシ
+スギヤマ,カツユキ
+オカベ,フミオ
+コイデ,タカシ
+イシタニ,サトシ
+モリ,エイジ
+キタムラ,タカシ
+イワミ,ヤスオ
+フカダ,タカシ
+ウエダ,ユウジ
+フルタニ,タカマサ
+ドイ,タカシ
+ナガノ,トシノリ
+キムラ,アキラ
+カドヤ,ユウゴ
+オオタ,クニオ
+タケウチ,ケンイチロ
+トクモト,タカアキ
+イトウ,シフミ
+ヤマザキ,トキオ
+アオキ,ヨシミ
+チギリ,エイジロウ
+ヨシナガ,チカエ
+ヒラバヤシ,ヒロカズ
+ナカハラ,ケンジ
+ヒロヤ,ノリヒロ
+カナイ,カンセイ
+トオヤマ,タカシ
+ウノ,キンゴ
+シバタ,トシオ
+キタガワ,キハチロウ
+ハラダ,ヒデユキ
+ヤマムラ,ケンジ
+クマミ,ユウゾウ
+イシバシ,トシユキ
+シバタ,ハルキ
+サクヤマ,カズオ
+イケダ,セイイチ
+タケモト,カズオ
+タモト,トミオ
+コムロ,リョウイチ
+タナカ,マサトシ
+カマダ,ヒロシ
+タバタ,ケイイチ
+ヒラカタ,カズオ
+タケウチ,テツオ
+イマズ,ヤスタダ
+フジタ,トシミチ
+ヤマモト,ツトム
+ヤマキ,ユウジ
+シライチ,マサル
+ササキ,ムツミ
+ミヤカワ,マサタカ
+クドウ,ケイコ
+アラマキ,ノブオ
+キハラ,ナオキ
+オカ,キョウ
+コニシ,シゲミ
+タケウチ,サチコ
+タナカ,シンイチロウ
+サカモト,マモル
+マツダイラ,エイジ
+イノ,タツロウ
+オバナ,シゲヤス
+オオクワ,キヨシ
+ゴトウ,シンジ
+スズキ,キヨシ
+ニシオカ,サブロウ
+ササキ,ヒデオ
+ハラ,イクオ
+セキ,ヒロシ
+サイトウ,ヒトシ
+フジタ,シュンスケ
+サカタ,コウイチ
+マエザキ,イサオ
+シオミ,ミツオ
+タカクワ,マサノブ
+イシハラ,チエコ
+コクボ,ケイコ
+ミヤザキ,シゲオ
+アリマ,ケイコ
+ウチヤマ,タカシ
+ナシキ,カオル
+フジタ,ユミコ
+タカギワ,イサム
+ニシダ,ヒトシ
+キクチ,ヒデフミ
+ナカイ,マサミ
+イイダ,ヤスシ
+ヤマグチ,ノブヒロ
+ヤノ,ユウイチ
+ヤマモト,ヒサシ
+ホリムキ,ヨシマ
+アダチ,フミノリ
+ウラノ,コウイチ
+タケダ,ミチコ
+サイトウ,ヒロツグ
+シマムラ,コウジ
+フクダ,ツヨシ
+キムラ,エイコ
+ヤマモト,エリコ
+シゲヤス,エイイチ
+カノウ,ヒロアキ
+スワ,フミオ
+オカザキ,ノリオ
+フカヤ,マサヒロ
+コザイ,ミツル
+ホドヤマ,ヒデオ
+クボタ,キヨシ
+イイズカ,リョウコ
+タカギ,タケノリ
+イワオ,マサシ
+イシイ,イサム
+ワカバヤシ,トシヒデ
+ゼンケ,トシオ
+ワタベ,ヨシミ
+マツモト,ヒロシゲ
+マルヤマ,ケイジ
+ナカノ,ヒデノリ
+オオクボ,カズハル
+クボタ,マサト
+ニシカワ,ヒロシ
+ニッタ,フミコ
+イシダ,ヒデヒコ
+カマス,ケンゾウ
+カゲヤマ,ミノル
+マツムラ,トシミチ
+ササキ,ススム
+ヒラノ,ヨシカズ
+スズキ,イチロウ
+ニシハラ,ケイ
+クロイワ,タカシ
+タカハシ,ヒロシ
+タケウチ,ヒデアツ
+シミズ,アキヒデ
+サタケ,シンジ
+コタニ,タクモリ
+コデラ,マサト
+ハマノ,ミチオ
+ナカムラ,ヒロシ
+ユアサ,ケンジ
+オカダ,ヨシヒロ
+コバヤシ,ヨシハル
+フクダ,ジュンイチ
+カミムラ,タカシ
+イマダ,マサヒロ
+ソネ,フミオ
+ミノグチ,ヨシノリ
+クダナミ,マサユキ
+イノウエ,ミドリ
+ウエムラ,ノボル
+ミウラ,オサム
+スガワラ,サトシ
+ワタナベ,ナオユキ
+ニシワキ,ヨウジ
+オオタニ,マサアキ
+クロカワ,キヨシ
+クボタ,ノブオ
+タムラ,ヒロヒコ
+エビハラ,キイチ
+ナカムラ,ヨウコ
+ヤマネ,ヨシト
+アサマ,マサヒロ
+ミウラ,ヤスノブ
+アラカワ,シンジ
+コジマ,ヨシアキ
+サカタ,コウヘイ
+コバヤシ,オサフミ
+オガワ,ヨシオ
+カトウ,タカユキ
+ミツイ,ケイイチ
+テシマ,カズマサ
+アソ,ヒロイチ
+モリヤ,ヒトシ
+ヤナ,カズオ
+サイトウ,ヒロユキ
+イチキ,ヒロシ
+オオタ,ヒロシ
+ホリウチ,ケイイチ
+タニグチ,ヨシオ
+ニシノ,ソウイチロウ
+フルハシ,コウゾウ
+アキタ,トシオ
+オクシマ,タカシ
+オオタニ,タダヒロ
+カメオカ,ヨシオ
+ハラオカ,カツヤス
+ナカムラ,ヒロシ
+アラシマ,ユキオ
+ナガサワ,ヨシロウ
+ヤマオカ,キヨシ
+ハセ,マサカツ
+キシモト,クニオ
+スズキ,ヨシオ
+カメヤ,カツミ
+マスダ,マサハル
+エンド,ケンイチ
+サクライ,タカアキ
+フルショウ,フジオ
+ウシキ,カズミ
+コイケ,ヒロシ
+トウマ,サチヒロ
+ナカザト,ヒロシ
+ヤマオカ,ヨシノブ
+ナカネ,ノブハル
+トミタ,ノリカズ
+サトムラ,ケイジ
+ヒサマツ,トヨトシ
+オガワ,マサト
+サカイ,タケシ
+ナカギ,ユミ
+サワグチ,マサクニ
+マツモト,トシオ
+フルカワ,コウイチ
+フタミ,キヨシ
+タナカ,フクム
+ヒビノ,ヒロシ
+スナハラ,ショウジ
+イケダ,タカシ
+ゴトウ,ノブユキ
+イシノ,ツトム
+キムラ,シゲル
+ヤマダ,ミツオ
+モリモト,マサル
+オカモト,マツオ
+ナカジマ,サカエ
+キタムラ,マスミ
+ナカイシ,タケユキ
+ワサ,ヒデオ
+コシムラ,マサシ
+ヒナタ,キョウヘイ
+ナカムラ,ノブオ
+フクイ,タツヒコ
+タカダ,カズオ
+ナカムラ,ヒロシ
+ニシヤマ,マサヒロ
+ナカヤマ,タカヤス
+ハリガヤ,ヒロアキ
+マスモト,ヨシオ
+テラニシ,マサノブ
+ナガクボ,オサム
+ヨシノ,タカシ
+モリタ,ノボル
+テラオ,ミツヒロ
+ヨシムラ,キヨジ
+ワタナベ,ケンジ
+マツモト,キヨシ
+オザキ,ヨシアキ
+ヒグチ,フジキ
+ミヤモト,ミサオ
+ヤマグチ,マスミ
+ヤマモト,エツコ
+カトウ,コウイチ
+ナカイ,カズミ
+フジタ,ヒロシ
+スガワラ,コウジョウ
+イシザキ,タカユキ
+タツミ,ヨシアキ
+ナカシタ,マコト
+オジマ,ヒロアキ
+アサシタ,マサフミ
+ホリイ,ミヨシ
+イリ,ケンイチ
+フジマキ,タダアキ
+カジワラ,シュウイチ
+ハセガワ,ミツオ
+フナヤマ,エツオ
+キハラ,タカシ
+タケダ,ケイコ
+イイダ,カナエ
+フルド,マサオ
+モリ,シュウイチ
+フクト,ナオヤ
+オオハシ,アキヒト
+アオキ,ヒデシ
+タジマ,ヒロシ
+オオツカ,トモヒロ
+アオノ,ジンイチ
+イノウエ,ヒトシ
+エンド,マサヒロ
+ヒロセ,ヨシカツ
+エンド,アキオ
+カワイ,ミチル
+アイザワ,フトシ
+コイタバシ,キヨヒロ
+サトウ,ヤスヒロ
+カノウ,シゲキ
+ウエムラ,マサトシ
+スミヨシ,ヒデオ
+ヒロタ,サトル
+イナトミ,カズヨシ
+イトウ,ノリカツ
+クボ,ヒデアキ
+カブラギ,トシヒロ
+イケダ,ヨシノリ
+タカハシ,カズオ
+サカイ,マサヒロ
+カトウ,ヤスクニ
+タケイ,ヤスユキ
+ハンダ,トオル
+ナガヤ,カツミ
+ハットリ,ヒロノリ
+シミズ,ヨシナオ
+イマニシ,マサト
+クマベ,マサオ
+マチダ,ツカサ
+ヤギ,チハル
+オダマ,ユキオ
+キタジマ,ジュンコ
+タチバナ,タクロウ
+フジモト,シュウジ
+ミズノ,イクオ
+エグチ,カツミ
+カワベ,サツコ
+ナカムラ,チアキ
+アスマ,キヨカズ
+ハムラ,ツトム
+イトウ,ユウジ
+イケザキ,タケシ
+ヤマサキ,ノリユキ
+ニシザワ,ソウジ
+ニワ,エイヒコ
+ミウラ,ヒサシ
+カタオカ,アケミ
+ハヤシ,マキコ
+ミサキ,タケシ
+オダクラ,ヒロミチ
+フシミ,チカト
+ヒロタ,タカシ
+ハタヤ,トシユキ
+サカイ,ユウジ
+イダ,イチロウ
+サトウ,タダシ
+ホシノ,ノボル
+オガワ,ナツアキ
+フクザト,リュウイチ
+タナカ,セイジ
+ササキ,キョウコ
+オズチ,ミツオ
+フロモト,ミノル
+ニシムラ,シンヤ
+タケダ,トミコ
+タケトミ,コウイチ
+オカダ,ミチオ
+マト,カズユキ
+スズキ,アキヨシ
+ムカイ,ヨウイチ
+コガ,ヤスオ
+カトウ,カズミ
+ヨコイ,フミトシ
+ウシゴメ,マサタカ
+コマツ,ヨシタカ
+イトウ,ヒサアキ
+サトウ,シュンスケ
+ヒロセ,ノリヨシ
+ゴミ,ジュン
+タナカ,タツオ
+マツモト,タイイチ
+ハヤシ,セイジ
+タカハシ,カツヒロ
+アライ,トシユキ
+ホシ,キヨシ
+テラダ,シゲル
+イズハ,ハルオ
+スナダ,ヤスジロウ
+イジマ,フミオ
+タカダ,トシハル
+ワカマツ,コウジ
+ツダ,トシユキ
+ホシクマ,マサハル
+ホンダ,ヒロミ
+カマダ,エイジ
+ハヤシ,ミツヒロ
+イマイ,タツル
+ツチヤ,イズミ
+ワダ,イクト
+ヨシダ,キミヒロ
+ダテ,ジュン
+ハスコ,ヨシノリ
+タケナカ,ヒロアキ
+オクダ,カズオ
+ホシ,ユウスケ
+カメダ,カオル
+ヒシヌマ,ヒロフミ
+オオニシ,ヒロアキ
+サトウ,マサアキ
+ホソカワ,アキラ
+ヨシザワ,ヒデオ
+ハラダ,ヨシタカ
+ササキ,トモユキ
+イイダ,ヒデミ
+キガワ,コウイチ
+イケオ,ヒロユキ
+アライ,ヤスオ
+カキカワ,ジュンイチ
+ゴトウ,クニトシ
+ミヤコシ,ヤスエ
+フジタ,アツミ
+クラタ,ヒロユキ
+モリオカ,ユミコ
+ヤマウラ,ヤスヨシ
+クロハ,ヨウコ
+イズハラ,ナオカズ
+シゲトメ,ヨシアキ
+ニシ,ヤスフミ
+アキヤマ,トミオ
+イケダ,カズキチ
+モリ,ヤスミ
+ヒロカワ,ユウジ
+ソメヤ,アキオ
+サクライ,エミコ
+ミズノ,イサム
+テラダ,トシカズ
+ヒラマツ,シゲル
+オオタ,ゴロウ
+ヒラマツ,エツオ
+ニシダ,ユキオ
+ムラタ,ヒデユキ
+ミズコシ,ケンイチ
+トミタ,タカオ
+カワミ,セイイチ
+シイノ,シゲオ
+ナカムラ,ノブオ
+イシカワ,コウイチ
+カネタケ,カナメ
+オシゲ,タイチ
+コジマ,ユウゾウ
+トバ,マコト
+イワタ,ヒデアキ
+オノ,ケンジ
+コサカ,ヒサタケ
+カンノ,アキオ
+イトウ,トシツグ
+タカギ,ミチコ
+タカノ,シンイチ
+イナガキ,テツオ
+ノザキ,ジュン
+タケダ,フミコ
+ゴトウ,シンジ
+ホリカワ,カズヒロ
+スギモト,リョウ
+アライ,セイジ
+フジワラ,ヒデスギ
+ヨシダ,シュウイチ
+オシマ,タケシ
+ゴトウ,ダイジロウ
+イズミサワ,ヨシトモ
+イワブチ,マサツグ
+イマキタ,ショウジ
+ムラタ,ショウコ
+シモノ,カズヒロ
+ゴカイチ,コウジ
+ヤマモト,ノボル
+ナガシマ,ジロウ
+ミシマ,ヨシヒロ
+ヤスナガ,カツミ
+オフチ,ジロウ
+コムカイ,キヨミ
+ナガサワ,タイセイ
+キタオカ,カズヒコ
+ハラ,カズヤ
+フカダ,ノリフミ
+キタガワ,タカアキ
+オオモリ,レイコ
+ハブチ,ヒデカズ
+ミヤザキ,ヒロム
+シロタ,マサユキ
+コミヤ,コウジ
+テラオ,ジロウ
+ニシグチ,トシアキ
+カネズカ,ヒロアキ
+スギヤマ,テツジ
+タチバナキ,ハルアキ
+モリオカ,マサカズ
+ヨノモト,ヒデキ
+クスダ,カズイチ
+アリヤス,エツオ
+ツジモト,ヒサト
+フカミ,ジュンイチ
+アキヤマ,キヨシ
+モチズキ,ヨシタカ
+ノムラ,シュンジ
+ワダ,キヨシ
+オチ,ヒロシ
+ムラマツ,チエコ
+ヤノ,オサム
+モチズキ,キヨシ
+ヒラタ,ナオキ
+ワカマツ,トシサダ
+サカモリ,カヨコ
+コバヤシ,アキヒコ
+イマムラ,ヨシヒロ
+オオスガ,カエデ
+タカヤマ,タカトラ
+キタミ,ヒロヒデ
+マエダ,タエコ
+トモノ,ケンイチ
+カブラギ,マサユキ
+ネギシ,ケイゾウ
+ワダ,ユミコ
+スズキ,ヤスユキ
+サナエ,カズマサ
+ノ,タツヤ
+イシバシ,ヒロユキ
+ヤマシタ,ツネオ
+スズキ,カズヒロ
+ミヤワキ,トシヒコ
+マツウラ,ヨシアキ
+キタヤマ,ヨシヒロ
+ヤマグチ,ジュンジ
+ニシヤマ,カツジ
+カワバタ,マサヒコ
+ミカミ,ジュン
+スギヤマ,イサオ
+キジマ,ノリオ
+ヒガシ,シュウジ
+アベ,マサト
+イノウエ,ヨウコ
+フカダ,アキオ
+ムラマツ,ジュン
+ヒラバル,タケオ
+チョウナン,ヨシマロ
+カワムロ,サトシ
+ツクダ,ミノル
+ミヤモト,トシヒロ
+スエヒロ,ジュンイチ
+シラカワ,コウジ
+タナカ,ケイシ
+ヤスイ,ヨシノブ
+キムラ,カツコ
+ナカガワ,カツヨシ
+クサノ,トシヒロ
+アダチ,ヨシヒロ
+ナカトモ,ムツミ
+マスモト,ツトム
+ワタヌキ,ヤスヒロ
+タカハシ,カツジ
+コボリ,ミキオ
+オガワ,コウイチ
+フジモリ,ミキオ
+イハラ,エミ
+ワタナベ,ユウコ
+ウラベ,イサム
+ミウラ,ミツル
+ナカイ,ケイイチ
+ワラシナ,シゲル
+フクナガ,ヨシカズ
+オオツボ,ヨシアキ
+ヨシダ,ミノル
+ハヤミ,カツヒコ
+ノムラ,マサカズ
+ヒライ,ヨシユキ
+シマダ,マサエ
+スズキ,ナオトシ
+テラシマ,キミヒコ
+シズハラ,レイコ
+ヤマトヤ,カズヒコ
+オギノ,ヒロオ
+マツグマ,シゲホ
+キタイ,トシヒコ
+アカダ,シズオ
+タケヨシ,セイノスケ
+ヒロノ,ソオジャ
+シマムラ,トマサ
+リュウゴ,シュンイチ
+クニエダ,マキオ
+オオツカ,ホコク
+イケガミ,ヒデトシ
+カネマツ,カネヒデ
+オオガワラ,ヨシノブ
+スズキ,タカシ
+テラダ,セツコ
+カワサキ,テツジ
+オシヤマ,ヨシヒサ
+カワカミ,シゲキ
+ナカムラ,トシアキ
+ミタニ,トシヒコ
+コマツ,ヒロタカ
+アカイワ,トシヒコ
+イチイ,フミヤ
+フクヤマ,マサアキ
+クドウ,ヨシテル
+マツシタ,シンジ
+ニシカワ,ユキヒロ
+アマガミ,シン
+ヤシキ,アイイチロウ
+ワダ,アツコ
+マスダ,トモコ
+ヨシムラ,ユウジ
+オダ,シンジ
+ヨコヤマ,タカフミ
+イトイ,ユリコ
+スズキ,カツヒロ
+ナガハマ,ヒロユキ
+ヤザキ,テイゾウ
+ヤジマ,キヨシ
+ムカエダ,サトル
+ナカムラ,タツアキ
+ヤマムラ,コウイチ
+ノモト,トシユキ
+ヤマザキ,トシヒコ
+サトウ,トシヤ
+イノウエ,ヒロユキ
+オカノ,ヒデオ
+ナカニシ,ハルヒサ
+ウエダ,ヒロミ
+アイザワ,アキオ
+アライ,トモナリ
+ナガイシ,カツミ
+ハコイ,マサオ
+クスモト,タカヨシ
+アリトミ,ジツロウ
+ハラ,タミオ
+ホンマ,マサハル
+ハシモト,ミチハル
+ハシモト,マサオ
+オオヌマ,イサオ
+ハナキ,シンイチロウ
+ハシモト,アキコ
+サクラザワ,ヒデトシ
+アカギ,ヤスヒト
+アキズキ,マサトシ
+アンドウ,ヒロキ
+アライ,タマオ
+アサムラ,カツミ
+チバ,アコ
+エグチ,ユキタカ
+フチノ,トオル
+フジマル,ヒサト
+フジサワ,ノリオ
+フカダ,フミヒロ
+フクイ,ヒロシ
+フクトミ,リュウサク
+ギマ,カズヨシ
+ハギワラ,イチロウ
+ハラ,キヨタカ
+ハルナ,タカアキ
+ハツミ,アズサ
+ハヤセ,シンゴ
+ハヤツ,ヒロシ
+ヒラオカ,マユミ
+ヒロシ,ノブコ
+ホシコ,マサヒロ
+イチカワ,マサル
+イガワ,キヨシ
+イイズカ,アリサ
+ミツモト,ヒロタカ
+イマムラ,ヒロユキ
+イナミ,ヒロミチ
+イノウエ,タケシ
+イセ,ユキオ
+スギハラ,ヒロタカ
+イシモト,ケンジ
+イシズカ,トオル
+イトウ,ヨウジ
+カミカワ,タダミツ
+イワサキ,ケイコ
+イズミ,ミワ
+カマダ,タカヒロ
+タケウチ,ミキ
+ノムラ,エミコ
+カタノ,テルヒサ
+カトウ,タカシ
+カワダ,ヒロユキ
+イシイ,ヤスキ
+カワシマ,エイコ
+キクカワ,ユカリ
+キシ,タクシ
+コバヤシ,テツヤ
+コバヤシ,カズヒコ
+コヤマ,アキラ
+コクボ,ヨウコ
+コンド,ミエ
+コシオ,マサトシ
+クボ,ツトム
+ホシノ,トシヤ
+クサカワ,ケイイチ
+クスミ,ユタカ
+マキノ,チヒロ
+マルヤマ,マコト
+ナカムラ,チトセ
+マツモト,アツシ
+メザワ,ヒトシ
+ミネ,マサヤス
+ミト,ノブオ
+ミヤモト,シゲル
+ミヤザワ,カツミ
+ミズタ,ケンジ
+モリ,ハズキ
+モリモト,マナブ
+モロオカ,ミツヒロ
+アンドウ,イワオ
+ミョウガ,タカユキ
+ナガオ,アキヒロ
+ナガセ,ススム
+ナイトウ,サダミツ
+ナカジマ,トオル
+ナカマル,トシコ
+ナカムラ,リュウイチ
+ナカニシ,ヒデト
+ナカノ,ツカサ
+シナダ,アキラ
+ナリタ,タクジ
+ニイヤマ,ヒロシ
+ニシカワ,アキラ
+ニシズカ,トシヤ
+ヒノ,カズユキ
+ハセガワ,ミツアキ
+オガタ,ヒトシ
+ムサシ,ミツル
+オオクボ,ハルシ
+オオサワ,ヒデキ
+オオタ,シンジ
+オオワダ,ヒロノリ
+オカダ,タカヨシ
+オカモト,ヒロシ
+オキモト,マサヒコ
+オニツカ,マサアキ
+オサキ,タカシ
+サエキ,ヨシヒロ
+サカイ,リョウジ
+サカキ,キョウコ
+サカウエ,タカユキ
+サノ,トシフミ
+サトウ,ヤスシ
+サトウ,サトシ
+サワイ,ミチヒロ
+セキハラ,アキラ
+セシモ,シュウイチ
+シバタ,テツロウ
+ムラタ,リュウタロウ
+シミズ,ハヤトシ
+シモオサ,タケシ
+シノダ,ハツエ
+シライ,カズヒコ
+スドウ,モトユキ
+スギシマ,マサル
+スヤマ,トモノリ
+スズキ,ユタカ
+シュクヤ,ジュンイチ
+タグチ,ナオユキ
+ミヤモト,タカシ
+タカハシ,ケンリュウ
+タカハシ,ユキエ
+タカハシ,イチロウ
+タカセ,シゲキ
+ミカミ,ケイスケ
+タケヤマ,トシアキ
+タナベ,ヒロユキ
+タナカ,ヒロコ
+タナカ,ノリアキ
+タニグチ,ジュンコ
+タテイシ,ナオヤ
+テルキナ,アキヨ
+トミオカ,ナオキ
+トヨダ,マサヒコ
+ツチヤ,ヨシヒロ
+ツジ,ヒロシ
+ツノガイ,ヤスノリ
+ウチダ,マサフミ
+ウダ,ケイジ
+ウエハラ,シンジ
+ウエノ,ユウジ
+ウメハラ,マコト
+ウスイ,コウヘイ
+ワダ,ヨシアキ
+ワタナベ,サトシ
+ヤハギ,ナオフミ
+ヤマダ,トシオ
+ヤマグチ,トモカズ
+ヤマモト,ケンジロウ
+ヤマモト,マナブ
+ヤマシタ,リンジュ
+ヤマザキ,ヒトシ
+ヤスダ,マサミ
+ヨドガワ,ノリオ
+ヨロズヤ,ナオヒサ
+ヨシマツ,チハル
+エダヒロ,ミドリ
+コジマ,ヤスヒサ
+オガワ,メグミ
+タカセ,マミコ
+フクタ,カズミ
+タグチ,ヒロム
+アサノ,トシヒコ
+フジイ,ケンジ
+フジワラ,コウジ
+ゴトウ,ヒロカズ
+ハヤシ,トシアキ
+ヒライ,ヒロタカ
+イチイ,シゲユキ
+イケダ,イクジロウ
+イシマル,ミワ
+イトウ,テツヤ
+カゲヤマ,ツヨシ
+カサマ,ノリマサ
+カトウ,コウタ
+キクチ,トモアキ
+キタガワ,ミチハル
+コバヤシ,コウタロウ
+コンド,ノリコ
+クドウ,ハヤト
+クサフカ,シノブ
+マツダイラ,マキ
+ミクニ,ヤスシ
+ミヤチ,タカフミ
+ミヤザワ,ヒロキ
+モリタ,クルミ
+ムロゾノ,ヒロアキ
+ナカミチ,ショウ
+ニシムラ,シンヤ
+オガワ,タカシ
+オオエ,マサミチ
+オオタ,タカシ
+オカヤマ,ミツヨリ
+サイトウ,タカノブ
+サノ,タクヤ
+サトウ,タカシ
+シイ,ミサコ
+シンキュウ,マサユキ
+スギヤマ,キヨタカ
+タカギ,ヨシオ
+タケウチ,カホル
+タナカ,ノブコ
+タルサワ,アキコ
+トモノ,カズミ
+ワタナベ,マサトシ
+ヤマモト,ヒデト
+ヤマザキ,フミノ
+ヨネミツ,マコト
+ユリ,トモオ
+マツグマ,フミコ
+アジマ,ヤスアキ
+アマノ,チアキ
+アオキ,ヨシコ
+アオキ,ナオヒサ
+アラキ,カツジ
+アサクラ,タツオ
+アズマ,リエ
+サタケ,ケイコ
+ダイオ,ヒデキ
+ナカムラ,タカコ
+フジイ,タツノリ
+フジオカ,テツロウ
+フクイ,コウジ
+フナダ,ユウコ
+ゴトウ,カイチロウ
+ハマダ,ヨシミ
+サトウ,セイゴ
+ハリマ,ナオキ
+ハセガワ,アキヒコ
+ハタ,シンイチロウ
+ハットリ,ユキ
+ハヤミ,スミヒト
+ハヤシ,マサノリ
+ヒエダ,ミチカズ
+ヒオキ,トウメイ
+ホダ,ヒロキ
+ヒロスエ,ジュンコ
+ヒシダ,ヒロシ
+ホンゴウ,マサト
+ホリエ,アキノリ
+ホシナ,コウイチ
+イチカワ,ヒトシ
+イガタ,エイイチロウ
+イイズカ,マコト
+イケダ,タカユキ
+ホソイ,ケンタロウ
+イノ,ジュン
+イノウエ,フミノリ
+オオモリ,ケンイチロ
+イシイ,ケイジロウ
+イシイ,ヤスシ
+イシツカ,トシユキ
+イソガイ,ユウコ
+イトウ,サトシ
+イワハシ,ユウコ
+イワサキ,ヒロユキ
+カガブ,シンジロウ
+カマホリ,トモヒコ
+カミヤ,ノブユキ
+カナイ,ノリコ
+カンダ,チエ
+カノウ,タケシ
+タマタニ,シマ
+カトウ,ヒロキ
+カトウ,ジュンコ
+カワグチ,コウジ
+カワムラ,シュウジ
+カワシマ,ノブコ
+キクチ,イチロウ
+キムラ,タカヒサ
+キシ,ナオキ
+キタガワ,ナオミ
+キヨハラ,ツトム
+コバヤシ,ケンジ
+コダマ,ヤスヒロ
+コイワ,トモユキ
+コジマ,サトシ
+コンド,ケンイチ
+クボ,ナオキ
+クマクラ,ケンイチ
+ヒライ,コウジ
+クロダ,アツシ
+クロサワ,エイジロウ
+マエダ,サトシ
+シブタニ,コウジ
+マスダ,ユウコ
+ハラ,ケンジ
+マツイ,シンジ
+マツモト,ヒロシ
+マツナミ,ヨシコ
+マツオカ,シンゴ
+マツヤマ,アキラ
+ミカミ,ヒデオ
+ミナミ,アキラ
+ミタムラ,マサトシ
+ミツマ,カズヒト
+ミヤシタ,ヒロユキ
+ハシグチ,シゲキ
+ミズノ,トシユキ
+モリ,マサシ
+モリ,ヒロカズ
+モリヤ,ムツオ
+ムネカタ,カズヨシ
+ムラタ,ユキモト
+ミョウジン,ミチオ
+ナガシマ,ヨシカズ
+ナイトウ,マサキ
+ナカジマ,テルミ
+ナカモト,ヒロカズ
+ナカムラ,ユウジ
+ナカムラ,ケンタ
+ナカヤ,ワタル
+ナン,ケイスケ
+ナトリ,ケンヤ
+ニイザワ,ヨシノリ
+ニシダ,ヤスオ
+ニシナ,キヨシ
+ニシザワ,ヨシヒロ
+ノガワ,ヒロヤ
+ノムラ,マサヒロ
+オガサワラ,カズテル
+オガワ,ヤスノリ
+オハシ,サトシ
+オオノ,ヒロヤス
+オシマ,ツトム
+オオタキ,フトシ
+オオツカ,エイキ
+オオヤ,ムネオ
+オカダ,ヒロユキ
+オカザキ,コウタロウ
+オオミ,アヤコ
+オノデラ,マサヒコ
+オノ,タカアキ
+オザキ,ヨシマサ
+サイダ,モモコ
+サカグチ,コウジ
+サカイ,ナオキ
+サコ,アカシ
+サンベ,マコト
+ササキ,ユタカ
+サタケ,トシキ
+サトウ,ユキタカ
+ヒラノ,ヒロアキ
+サワムラ,ヒロシ
+セキネ,カズアキ
+シバハラ,カズノ
+シバザキ,マサコ
+シマ,コスケ
+シミズ,ケイスケ
+シモカワベ,アキヒロ
+シノザキ,ヒロシ
+シラハマ,ミチヒサ
+ショウナゴ,タカシゲ
+スダ,メイジロウ
+スギモト,ミカ
+スギタ,タカユキ
+スミダ,アツシ
+スズキ,マサフミ
+スズキ,シゲル
+スズノ,カツフミ
+タグチ,ミユキ
+タカギ,トシカズ
+タカハシ,ヒロミチ
+タカハシ,ヒデノリ
+タカハシ,ケンイチ
+タカノ,ミキコ
+タカシマ,タダシ
+タケダ,イズミ
+タケナカ,ケンイチ
+タケヤス,レイジ
+タムラ,ヒロユキ
+タナカ,コウイチ
+タナカ,タカヨシ
+タナカ,トオル
+タニグチ,カツヒコ
+テラマエ,セイイチロウ
+トキワ,チエコ
+トリゴエ,サダユキ
+ツチタニ,ヒデキ
+ツジムラ,タカシ
+ツカモト,ケンタロウ
+ツツミ,マサノリ
+ウチノ,サトシ
+ネズ,トシアキ
+ウエツボ,ヨシタカ
+ウオズミ,サンペイ
+ワダ,ミツノリ
+ワタナベ,ヨシキ
+ヤブ,コウジ
+ヤマダ,ユウコ
+ヒサノ,リカ
+ヤマグチ,ノリユキ
+ヤマカワ,ユキコ
+ヤマモト,ナオト
+ヤマモト,シンイチ
+ヤマウチ,シンイチロウ
+ヤマザキ,タカオ
+ハギワラ,ミキオ
+ヨネザワ,エリ
+ヨシダ,サチコ
+ヨシマツ,ケンタロウ
+ズシ,ユキオ
+イワカワ,ソウタロウ
+イシマツ,ヒロヤス
+アベ,エイイチ
+アカイシ,エイチ
+アマガタ,タカシ
+アンザイ,マサヒデ
+アラキ,トシミツ
+アシダ,サトシ
+チョウ,エイジ
+ドイ,ケンイチ
+エノモト,キヨミ
+フジイ,サツキ
+フジタ,タカシ
+フクムロ,タカシ
+フナキ,ナオキ
+フルヤ,トモヤ
+イワサキ,サエコ
+イトウ,シロウ
+ハダ,ヒデアキ
+ハナド,ミノル
+ハラダ,タケシ
+ハラゾノ,ノブヒロ
+ハシモト,サトシ
+ハットリ,マコト
+ハヤシ,タカヨシ
+ヒガシ,カズオ
+ヒラノ,ヒロコ
+ヒリキ,ケンイチロ
+ホンダ,サナエ
+ホシヤマ,ミギフミ
+イチハラ,タカシ
+イガラシ,カツノブ
+イケダ,リョウ
+イマムラ,オサム
+イナムラ,トモノリ
+イノウエ,ヤスヒロ
+イサカ,シゲル
+イシダ,ケイイチ
+イシイ,ノボル
+イシズカ,ユキオ
+イトウ,ショウコ
+イトウ,マサミ
+イトウ,エイジ
+イワナガ,ナオコ
+ジンバ,ツネノリ
+カジモト,タクヤ
+カコ,トシヒコ
+カン,タクヤ
+カノウ,マユミ
+カスヤ,マサナリ
+カトウ,ケンジ
+カワベ,ヨシユキ
+カワカミ,ケンイチ
+カワノ,マサヒコ
+カワシマ,ヤスノブ
+キクチ,マモル
+キムラ,アツシ
+キノ,アキ
+キタガワ,オサム
+コバヤシ,トシヒロ
+イトウ,シンジ
+コクショウ,マサル
+コンド,マサユキ
+コヤマ,ヒロタカ
+クレマツ,タカヒデ
+クリュウ,ヨシエ
+マチタ,マサキ
+マルイチ,マサユキ
+マスダ,ユキコ
+マツイ,ヒデシ
+マツモト,ヨシキ
+ナカムラ,ヒロユキ
+マツオカ,タケシ
+マツヤマ,コウタロウ
+ミシマ,カズミ
+ミツモト,キヨミ
+ミヤモト,トシアキ
+ウチヤマ,ミキコ
+ミズノ,マサヨシ
+モギ,モユル
+モリ,マサヒロ
+モリタ,カズヒサ
+モトバヤシ,サトル
+ムラカミ,ヒロアキ
+ムラタ,トモノリ
+ナバ,ヒロユキ
+ナガオケ,サトシ
+ナガタ,ショウヘイ
+ナカガワ,ヨシユキ
+ナカジマ,タカシ
+ナカムラ,タツヤ
+ナカニシ,イズル
+ナカオ,アキコ
+ナカヤマ,フミオ
+ネモト,ミツアキ
+ニシダ,ヨシヤ
+ニシムラ,キワム
+ノブハラ,コウジ
+ノゾエ,ハジメ
+オオギ,タケシ
+オオエ,ヨウイチ
+オオクボ,ヒロフミ
+オオモリ,ナオキ
+オノ,アキラ
+オオタ,アサコ
+オオタニ,ヤスヒロ
+オカ,フミコ
+オカマツ,タカヒロ
+オカモト,ノリオ
+オオノ,ナオキ
+トクミヤ,テツヤ
+サイトウ,ユタカ
+サカキバラ,タカオ
+ミタニ,ケンイチ
+サノ,シュウゾウ
+ササキ,セイジ
+サトウ,タカカズ
+サトウ,ノボル
+サトウ,トモキ
+サヤノ,イクヤ
+センナ,トシミツ
+シブタニ,キョウコ
+シマムラ,ヨシミツ
+シナダ,カツミ
+シラハマ,タロウ
+シュトウ,ユミコ
+スダ,ナオヒロ
+スギヤマ,ヒデマサ
+スミオカ,トモヤ
+スズキ,ヒデヒロ
+タバコ,クミコ
+タガワ,マコト
+タカハシ,シンヤ
+ワタナベ,マキ
+タカクラ,ケンスケ
+タカオカ,ゴウ
+タケハナ,マサカツ
+タケウチ,サトシ
+タナカ,ケンタロウ
+タナカ,セイジ
+タナカ,ノリヒロ
+タニイ,ユリコ
+タシロ,ケンイチ
+テラモト,エイジ
+トキオカ,タカシゲ
+トミカワ,ノリコ
+トリカイ,ナオキ
+ツダ,コウイチ
+サカイ,ミホコ
+ウダ,アツコ
+ウエノ,オサム
+ウメハラ,トシオ
+ウシバ,ミノル
+ワカオ,ケイジ
+ワタベ,マサトシ
+ワタナベ,ダイチ
+トミヤス,トシヒサ
+ヤマダ,マキ
+ヤマコシ,ダイスケ
+ヤマモト,ジュン
+ヤマシタ,ナオコ
+ヤナギ,トシアキ
+ヨコサワ,タクヤ
+ヨコヤマ,カズノブ
+ヨシダ,ナオト
+ヨシミ,タイキ
+ヨシザワ,トシカツ
+イマ,マサヒロ
+クボ,マサヒコ
+ナカハラ,タクヤ
+オグラ,トオル
+タカマツ,ケンイチ
+イノウエ,ムネヒロ
+アイバ,サトシ
+アマノ,ナオコ
+アリタ,ヒデアキ
+アタグチ,ヒロシ
+ダテ,シゲヒコ
+エザワ,ナリヒデ
+フジモト,ミキオ
+フクドメ,タカシ
+フルカワ,アケミ
+ハギワラ,リュウタ
+ハナタ,ヒラク
+ハセガワ,ユタカ
+カジワラ,ヨシコ
+ハットリ,タカユキ
+ヒガシ,リュウスケ
+ヒラオ,マサユキ
+ヒロセ,ミツル
+ホンマ,タケシ
+フクロイ,ケンジ
+イチノセキ,トシヒロ
+イケダ,ユタカ
+イマムラ,ケンスケ
+イノウエ,カズオ
+イシダ,コウジ
+イシカワ,アキラ
+イワサキ,タケシ
+カイズカ,ヒロコ
+カミガキ,ノリヒデ
+カネコ,クニヒコ
+カタギリ,ナオユキ
+カトウ,ケンジ
+カワカミ,コウジ
+カツキ,アキトモ
+キムラ,サトル
+キノシタ,ユカリ
+キタヤマ,チヒロ
+アメシタ,ナオキ
+コバヤシ,タカヒロ
+コガ,ノリユキ
+コイケ,アキオ
+コンド,トモノリ
+クボキ,イクコ
+クラシナ,カツヒト
+クロキ,ツヨシ
+マエダ,ヤスヒロ
+マサダ,ヒロユキ
+マツダ,ナオミ
+マツモト,シュウイチ
+メカタ,ヒロキ
+ミヤモト,アキヒロ
+モリ,ユカ
+モリタ,カズヨシ
+ムラカミ,マサアキ
+ムタ,ヒサシ
+ナガヤマ,テツヤ
+ナカハラ,タカコ
+ナカムラ,アキノブ
+ナカムラ,マリ
+ナカタ,コウイチ
+ナカザワ,ケイスケ
+ニシ,カネノブ
+ニシヤマ,ミナコ
+ノト,ジュンイチ
+オガワ,ヨウジ
+オオバ,マサヒデ
+オムラ,マユ
+イケマツ,タカコ
+オイダ,ヒトシ
+オカザワ,ヒトシ
+オノ,ナオミ
+サイトウ,アキヒサ
+サカイ,ノブヤス
+サクタ,ヨシアキ
+サトウ,マサヒコ
+サトウ,コウジ
+サワハシ,タツユキ
+シバタ,アヤコ
+シミズ,カツユキ
+シオミ,シンジ
+シタラ,ヒサシ
+スギタ,カツヒコ
+スケガワ,ノブヨシ
+スズキ,アキヒロ
+ショウ,ショウタロウ
+タイ,マサテル
+タカギ,テツロウ
+タカハシ,トシオ
+タカヤマ,ヒデツグ
+タケシタ,ショウゾウ
+タコ,ヨシキ
+タナカ,キョウヘイ
+タニ,カズナリ
+タズケ,セイイチ
+トモトシ,ケンジ
+ツチモト,フミオ
+ツノダ,ショウジ
+ウチダ,サトル
+ウエダ,アキノリ
+ウノキ,ノブヒコ
+ワダ,ヒロタツ
+ワシズ,ショウ
+ワタナベ,コウセイ
+ヤマダ,タカト
+ヤマグチ,ヨウジ
+ヤマモト,ミツゾウ
+ヤマナ,セイイチロウ
+ヤシロ,タケシ
+ヨコヤマ,マサヒコ
+ヨシダ,トモミ
+ユキ,セツコ
+ヒラカワ,マナブ
+モリイチ,エイジロウ
+シミズ,ケイ
+フジュウ,シンイチ
+ハガワ,タカシ
+ハセガワ,ヒデアキ
+ヒラノ,タクヤ
+ホンゴウ,テルヒコ
+イケダ,トシユキ
+イシカワ,ヒロキ
+イトウ,ヨシミ
+カナヤマ,コウジ
+カタギリ,シンスケ
+キモト,タクヤ
+キヤマ,セイジ
+コジナ,ケン
+コンド,ヒロヒコ
+クリタ,サトシ
+マスダ,ダイチ
+ミカミ,ミツオ
+ミワ,タカノブ
+モチズキ,ノブユキ
+モリヤマ,トシオ
+ナガフジ,キミヒト
+ナカジマ,マサヒコ
+ナカムラ,ヒサト
+ナスノ,ナオキ
+ノダ,ユウコ
+オガワ,リョウコ
+オオカワ,ジュンコ
+オオタニ,ケン
+オクムラ,マナミ
+イギ,アキノリ
+サナダ,ヨシヒロ
+サトウ,ヒデヒサ
+セキ,ヨウイチ
+シバタ,ユキノリ
+シマカワ,シゲル
+シオジリ,ヒロシ
+スダ,トモハル
+スズキ,コウジ
+タカダ,タカノリ
+タカハシ,キョウコ
+タカス,ツヨシ
+タニグチ,ナオキ
+ツネカワ,ヒロフミ
+ウエハラ,ヒデアキ
+ヤギモト,ヒロシ
+ヤマグチ,トモコ
+ヤマシタ,カズキ
+ヤザキ,ナオキ
+ヨシダ,ハルヒコ
+アイカワ,ヒロフミ
+チカハラ,オサム
+ワタナベ,タカエ
+ノザキ,テルアキ
+アカニシ,ナオヒロ
+シマモト,アトム
+アナザワ,ミノル
+イウチ,マコト
+イシカワ,コウイチ
+イチカワ,ソヨ
+イマハヤシ,シンイチ
+ウチヤマ,ヨシタカ
+オウサカ,マサタカ
+オオタニ,ヒデキ
+オオバヤシ,シンジ
+オグラ,ヒロコ
+カキモト,ヒロシ
+カトウ,シゲノリ
+カミヤマ,ヒロカズ
+カワセ,ナオキ
+キタジマ,アキヒロ
+クサカベ,マエコ
+コイデ,ヒデキ
+コマツ,ケイイチ
+サイトウ,ヒデキ
+サトウ,ジュン
+シュウ,マサヤ
+シノダ,マスミ
+シミズ,サトシ
+スガワラ,シゲフミ
+スミカワ,カツアキ
+タカセ,キヨタカ
+タケダ,ケイイチ
+タナカ,ケンジ
+タバタ,ミワコ
+ツチハシ,ムネヒロ
+トムロ,ナツヒコ
+ナカガワ,タカコ
+ナス,ヒロシ
+ニシハラ,ナオキ
+ノムラ,カズヒコ
+ハセガワ,ケンイチ
+ハラダ,トモコ
+ヒジリ,エリ
+フジタ,ノブコ
+ホソカワ,タツオ
+マスブチ,タカシ
+マツナガ,ユキ
+マツヤマ,テツヤ
+ミタ,ミノル
+ミヨシ,ヨウコ
+ムラヤマ,マコト
+モリシタ,カズヒロ
+ヤジマ,ナオコ
+ヤマザキ,ヒロユキ
+クリハラ,マサキ
+ヨコヤマ,ヨウコ
+ワタナベ,ヨシヒト
+クワシマ,スグル
+サカモト,ヒデノブ
+イトウ,タダヒロ
+ウメナイ,ススム
+オカシロ,シロウ
+カワオカ,ヒデキ
+クバ,タカシ
+コウダ,マサタケ
+サトウ,マユミ
+アベ,マサハル
+タカハシ,ヒサミ
+タバタ,カツユキ
+ナカガワ,コウイチ
+ハシモト,トオル
+ヒラノ,マサタカ
+ホソノ,アキヒト
+ムラカミ,ケイコ
+ヨシムラ,エリ
+アマヤ,マサル
+チョウ,ダイスケ
+ゴウダ,キヨノブ
+ハヤカワ,ヒロキ
+フルタ,ナルキ
+イイダ,タカヒロ
+イシワタリ,ヒロカツ
+カバヤマ,マサキ
+カンダ,ヤスヒト
+キタムラ,ヨシオ
+コンノ,コウイチ
+マチダ,ハルミ
+マツイ,タケシ
+ミウラ,ケイゴ
+タハラ,ノリコ
+ムラカミ,タツヒコ
+ナカミネ,マモル
+ナカザワ,キヨシ
+オオタ,シゲアキ
+イシカワ,ヨウ
+イトウ,トモヤ
+サトウ,ツグヒデ
+シバタ,ナオキ
+ソメヤ,アキヒコ
+タケダ,アキラ
+タナカ,コウイチロウ
+タニシタ,フミノ
+ツチヤ,ヨシコ
+ワジマ,リコ
+ヤマダ,ヒロキ
+ヤマザキ,ユタカ
+タカハシ,マサキ
+アンドウ,ユキ
+イシモト,リョウスケ
+イワサキ,ミズマサ
+ウメハラ,タカシ
+オガタ,ヤスシ
+オニザワ,シゲキ
+カジ,オサム
+カネコ,ノブカツ
+カワマタ,ヒロキ
+クボ,トモノリ
+コウサキ,コウイチ
+サイホ,ナルヒロ
+サナダ,オサム
+シシド,クニオ
+スギハラ,キヨシゲ
+タカオカ,ユミ
+イトウ,ジュンジ
+ナカオ,シンジ
+ナカノ,ジ
+ニシカイ,トシミツ
+ネロメ,ヒロシ
+ハブ,マコト
+ヒライ,カオリ
+フジワラ,トオル
+ホンマ,ユキノブ
+マツザワ,チカラ
+ミヤモト,ヤスジ
+モリヤ,ホマレ
+ヤノ,ヒロシ
+ヤマシタ,マイコ
+ヨダ,タカヒロ
+ワタベ,タカシ
+アキバ,ケイイチ
+アベ,マユミ
+イトウ,ヨウジ
+イシムラ,ユミコ
+イトウ,マサル
+イマイ,タケシ
+ウエハラ,モトコ
+ウメツ,アキヒコ
+イマニシ,ヒロユキ
+オオイシ,マサハル
+オカノ,ユキ
+オガワ,トオル
+カガミ,エリカ
+カタヤマ,ミツコ
+カミ,ヨシテル
+カワサキ,ヒトシ
+カワモト,ミチオ
+キタモト,ツトム
+ギョウブ,ヒロコ
+コイケダ,タツロウ
+コダマ,タイチロウ
+コバヤシ,ヒデヒト
+サイゴウ,ミワコ
+サカガミ,イチロウ
+ササキ,ナナエ
+サワ,ケンゴ
+シミズ,ユキオ
+ショウダ,シゲノリ
+スズキ,カズヒラ
+イシハマ,ケント
+タカハシ,マキコ
+タケワ,シンジ
+タハラ,サトシ
+ツツミ,マコト
+ナイトウ,コウジ
+ナカジマ,ノゾム
+ナカムラ,ソウイチロウ
+イケダ,マサタカ
+ニシ,ツネアキ
+ノノイチヤ,マスオ
+ハシズメ,ユウコ
+ハットリ,ユウ
+イノグチ,カツフミ
+ヒマキ,トモノリ
+フカザワ,リエ
+フジナガ,フミコ
+フルヤ,マリコ
+ホリカワ,トモヒロ
+イグチ,タカヒロ
+ミツハシ,エイイチ
+ミヤシタ,ヨウコ
+ムラマツ,マサユキ
+イノウエ,アキノリ
+ヤノ,タダタカ
+ヤマダ,タツオ
+ヤマモト,ムネタカ
+ヨシダ,リョウ
+ワタナベ,ヒデユキ
+ワタナベ,トシエ
+コウダ,サトル
+オガワ,ヒロアキ
+アキモト,ススム
+アサノ,トモヒコ
+アベ,マサオミ
+イツノ,ミキオ
+イチノセ,コズエ
+イリタ,ヤスアキ
+イシオカ,シンイチ
+イチキ,マサト
+イハラ,キヨタカ
+イマズ,ツヨシ
+イワスギ,ミカ
+ウスイ,マサヒロ
+エトウ,ケンジ
+オウ,ヨシヒロ
+イワキリ,ワタル
+オオツキ,ジュン
+オムラ,クミ
+オカザキ,トモミチ
+オガワ,アキラ
+キタムラ,マリコ
+オオヤマ,チズル
+カサザキ,ヨシヒロ
+カツノ,タカノリ
+カトリ,ケンジ
+ガミ,ヒロシ
+カワカミ,マサミ
+カワミ,シンジ
+キタシロ,カズヨシ
+キムラ,シゲル
+クジラオカ,ダイキ
+イシグロ,タロウ
+イナトミ,ダイスケ
+コズマ,マイコ
+コシイ,トモヒロ
+コニシ,タダシ
+コバヤシ,ヨシオ
+サイトウ,トモエ
+サカイ,ミネオ
+サカモト,ジュンコ
+サトウ,シンイチロウ
+イシグロ,ヒデタカ
+シナダ,ヨシコ
+シマダ,ヨシサダ
+イトウ,キョウコ
+スギヤマ,カズナ
+スズキ,コウジ
+セキグチ,ケイコ
+カミヤ,カスミ
+タカノ,ケンイチ
+タカハシ,コウイチロウ
+タカミザワ,リュウキ
+タケウチ,タカキヨ
+タケモト,カズヒコ
+タチバナ,アヤコ
+タナカ,ナオコ
+タナミ,ツネオ
+タノオカ,ミエコ
+チュウ,サヤカ
+ツチヤ,セレナ
+トジ,マサコ
+トヨダ,タクヤ
+ナカジマ,トモコ
+ナガタ,ヨシヒコ
+ナガハラ,ヨシユキ
+ナカムラ,マサカツ
+ニシカワ,イワオ
+ニワ,ユキエ
+ノガミ,ユカ
+ハシズメ,タカシ
+ハセベ,ヨウヘイ
+ハナブサ,オサム
+ハヤシ,マコト
+ハルタニ,タカヒロ
+ヒョウエ,トモヒロ
+ヒラヌマ,カズオ
+フクダ,タカヒロ
+フジオ,タカユキ
+イノウエ,ノリオ
+フルカワ,マサミツ
+フワ,ミオ
+マエカワ,ルミ
+マキタ,カツユキ
+マツウラ,エリコ
+マツダ,タカシ
+マツミヤ,ケンイチ
+マナベ,リョウスケ
+ミナト,ヒロユキ
+ムラカミ,マサミ
+モトヨシ,マコト
+モリタ,ケンジ
+ヤギ,ケイスケ
+ガン,ハナエ
+ヤマグチ,ヤスマサ
+ヤマサキ,ジュン
+ヤマダ,タツジ
+ヤマニシ,ナオキ
+ヨコタ,トモフミ
+ヨシカワ,タクヤ
+ヨシムラ,クニヒコ
+ワキタ,トオル
+ワタナベ,ソウ
+アマコ,ヨシオ
+マノ,アキ
+ウチムラ,チナツ
+サクライ,マミ
+シライ,ユタカ
+テラクラ,ヨウジ
+オカダ,タツシ
+ゴトウ,アキヒロ
+ツバキ,セイイチロウ
+イナガキ,ヒデトシ
+ホリベ,モトジ
+カイ,ヨシエ
+タカダ,トクヒコ
+コタニ,フミヒコ
+イハラ,ケイコ
+アキハラ,シュンスケ
+アベ,ユキ
+アラキ,ヒロシ
+イシイ,ノブヤス
+イシゼキ,ダイスケ
+イタニ,タカシ
+イトウ,シズコ
+イノ,ミキ
+イワザキ,ヒロタカ
+ウエノ,ケンジ
+ウメハラ,ナツコ
+オオエ,ダイスケ
+オオツ,チエ
+オオツボ,マサミツ
+オカダ,タツヤ
+オカモト,ヒサシ
+オクナカ,セイシ
+オバラ,ユリコ
+カジナガ,ユタカ
+カトウ,リョウ
+カトウ,ワタル
+カワイ,コウジ
+カワグチ,ススム
+キシ,レイコ
+キドコロ,アツシ
+クボタ,マユミ
+クワバラ,ユカリ
+コクボ,モモエ
+ゴトウ,ケイコ
+コミヤマ,マサヨシ
+サイトウ,シゲル
+サカモト,チカラ
+ササノ,アカギ
+サナダ,マサユキ
+シマダ,タケシ
+シモフジ,ノブヒコ
+シワ,ケンイチ
+スギハラ,ヒロノブ
+スズキ,マサヤ
+セキ,アツナリ
+タカギ,カヨ
+タカハシ,ヒロナオ
+タキザワ,サトシ
+タケダ,ユウイチロ
+タナカ,セイジ
+タニカワ,ヨシツグ
+タバタ,ケイタロウ
+ツカダ,リエ
+ツボタ,マサヤ
+トウカイリン,ユミ
+トノイ,アキコ
+ナカガワ,ヨシノリ
+ナガノ,リョウタ
+ナカヤマ,トモヒロ
+ニシオカ,シンイチ
+ネギシ,リカ
+ノザキ,ダイスケ
+ハシグチ,トシヒロ
+ハットリ,ユウイチ
+ハマダ,ダイジ
+ヒシヌマ,アツシ
+ヒラタ,マミコ
+フクダ,タカシ
+フジエダ,ヒサカズ
+フジワラ,タクト
+ホリカワ,シュウジ
+マツオ,ヒデノリ
+マツヤマ,ミツテル
+ミヤ,アキラ
+ミヤモト,クニコ
+ムラカミ,タツヒロ
+モリタ,マミ
+ヤグラ,シンジ
+ヤマダ,ミズホ
+ユラ,ケンイチ
+ヨシザワ,ユウコ
+ロク,アキコ
+ワラビ,ヒロノリ
+ミヒラ,リョウヘイ
+ミギタ,マナ
+タケウチ,リョウ
+オノデラ,クニヒロ
+アカガワ,モトコ
+アサヌマ,アヤ
+アライ,ツヨシ
+イザワ,チハル
+イシバシ,トシユキ
+イデ,ナルミ
+イノウエ,マコト
+イマゼキ,クミコ
+イワタ,コウジ
+ウサミ,マリコ
+エノキド,ヨリコ
+オキタ,ユキノリ
+オオツカ,モトイ
+オノ,ヒロシ
+オカダ,カズヒロ
+オククボ,タカシ
+カナイ,ケンイチ
+カミヤ,サチコ
+カワサキ,ヒロキ
+キダ,エイスケ
+キムラ,フミト
+クメウチ,ケンジ
+クワハラ,シノ
+コガ,タクジ
+コバヤシ,アンナ
+サイトウ,ケンイチ
+ササキ,ハナコ
+サトウ,ミキ
+サハラ,タカフミ
+シダ,ヨシヒロ
+シミズ,タツオ
+シモザキ,タツヒコ
+スギウラ,マサノブ
+スト,サトシ
+セト,ケイジ
+タカギ,ノリユキ
+タカハシ,ミカ
+タケダ,ユウジ
+タダ,ヨシタカ
+タニグチ,タカノリ
+タムラ,ケイコ
+ツカハラ,ミズホ
+ツボウチ,アキフミ
+テラダ,ヨシキ
+トミイ,ジュンコ
+ナイトウ,タカオ
+ナガサカ,コウジ
+ナガノ,ヤスオ
+ナカムラ,エイジ
+ニシ,ナオユキ
+ニシダ,リョウヘイタ
+ノグチ,カズヨシ
+ノムラ,カズオ
+ハットリ,サトミ
+ハヤカワ,ユキ
+ハラダ,ミエ
+ヒデシマ,ミキコ
+フカオ,ミユキ
+フクハラ,ユキコ
+フジモト,エリコ
+ホシノ,スミオ
+ホリグチ,ジュンイチ
+マキノ,タケオ
+コミヤ,ノボル
+コバヤシ,ヒロシ
+カミクボ,ケンジ
+マツオ,キヨシ
+ナカチ,キヨシ
+コスギ,ヨシミ
+カツマタ,トシカズ
+カガヤマ,マサハル
+クゼ,ミキオ
+クマダ,マサアキ
+コジョウ,サナエ
+カシクマ,ケンゾウ
+キクチ,ヨシヒサ
+クマノ,マサユキ
+コバヤシ,シュンジ
+コバヤシ,ノブコ
+コニシ,ケンイチ
+コバシガワ,ヒトシ
+カイド,ミホ
+クロキ,ジュン
+カナタニ,リエ
+キタガワ,ナオタカ
+ミズモト,ナルキ
+ミヤオカ,ケンロウ
+ムラタ,ケンジ
+モリタ,ヒデトモ
+ヤナギダ,エリコ
+ヤマザキ,ケン
+ヤマモト,ヤスノリ
+ヨゴ,トモノリ
+ヨネダ,ユミコ
+ワコ,リエ
+アカハネ,ヒロアキ
+アサベ,カヨ
+アライ,ヒデオ
+イケダ,ヨシタカ
+イシド,ユキコ
+イズノ,ミツヒロ
+イトウ,タケシ
+イノウエ,ノブタカ
+イワタ,ヨシヒロ
+ウカイ,ヒサナガ
+エトウ,ヒロキ
+オオサカ,タテキ
+オオニシ,ミツル
+オムラ,トモコ
+オカノ,ヤスフミ
+オガワ,タクヤ
+オザキ,タカユキ
+オトガワ,リョウコ
+カサイ,ナオコ
+カスガ,サナコ
+カトウ,ケンイチロ
+カメタカ,タイスケ
+カワグチ,アユミ
+カワバタ,アユミ
+キタガワ,タケシ
+キムラ,ヨシカズ
+キリサコ,テッペイ
+クラハシ,タカアキ
+ゴウダ,タケヒロ
+コテラ,キミヒロ
+コバヤシ,ナツコ
+コマツバラ,トモヒサ
+サイトウ,テルヒサ
+サカイ,タカユキ
+サクライ,サダヨシ
+サトウ,アキ
+サワサキ,タカシ
+シマノ,トシアキ
+ショウダ,クミ
+シンタニ,ケンタ
+スギヤマ,タカネ
+セキモト,カツアキ
+タカハシ,レイ
+タグチ,ワタル
+タチバナ,ナオト
+タナカ,サチエ
+タマキ,ナオコ
+ツカダ,テツヤ
+ツボクラ,タクヤ
+ドイ,ノブタカ
+トダ,シュンスケ
+ナガサカ,ミチコ
+ナカシマ,アキヒロ
+ナカニシ,ミドリ
+ナカムラ,マユ
+ナカヤマ,タケシ
+ニシノ,ユカ
+ノクオ,カオリ
+バコシ,シンゴ
+ハタノ,ヨウコ
+ハヤシ,サトコ
+ハラダ,アツシ
+ヒライ,ユウスケ
+ヒロエ,アツシ
+フクダ,サヤカ
+フジムラ,アキコ
+フルカワ,ヒロコ
+ホソダ,シュンゴ
+マエカワ,ミワ
+マサトウミ,マイコ
+マツオカ,トモコ
+マツバラ,アキコ
+ミウラ,キヨマサ
+ミゾハタ,チエ
+ミハラ,マサキ
+ミヤムラ,アヤ
+ムラタ,クミコ
+モリ,クミコ
+モロエ,ヒロカズ
+ヤナギサワ,ケイスケ
+ヤマガタ,マコト
+ヤマダ,ノブコ
+ヤマモト,テルヒコ
+ヤマモト,ワタル
+ヨコヤマ,アユミ
+ヨシダ,ナオコ
+ヨシムラ,ダイスケ
+ワダ,イサム
+ワタナベ,ヒロシ
+ササノ,ススム
+コダマ,タカヒコ
+カワシマ,マサナリ
+カワノ,コウイチ
+カミウラ,カズヒデ
+コンノ,ヒデキ
+クヤマ,タケシ
+コイ,セイイチロウ
+カサジマ,ヒロフミ
+カトウ,トモミ
+クボタ,ヒロユキ
+ケガサワ,ヒサシ
+カワギシ,ヒロシ
+カマダ,タカシ
+キクチ,オサム
+カトウ,カズヒコ
+マチダ,カズオ
+ムラサキ,トシオ
+マツモト,ケンイチ
+マサキ,キクオ
+ミズタニ,ナオヒコ
+マルヤマ,セイジ
+ムラシマ,タダオ
+ミズタ,ヨシオ
+モリイ,ギョジ
+ミヤザワ,ヨシオ
+ミズノ,ユリコ
+ムライシ,マモル
+ムラカミ,カズオ
+ムラマツ,アツシ
+ミタク,ケイゾウ
+マエダ,アキオ
+ムライ,トヨミ
+マツダ,サトシ
+ミテラ,ヤスオ
+モリ,ツトム
+マツイ,タカシ
+ミウラ,クニオ
+マツモト,タケシ
+マツザワ,ヨシオ
+ミカミ,ハルキ
+タブチ,ケンジ
+ナカジマ,マサヒロ
+ナイトウ,タケオ
+ニシナ,キミヒト
+ナカガミ,シュウイチ
+ナカハタ,カズトシ
+ニシオカ,ヒロシ
+ニシダ,ヨシロウ
+ノムラ,クニヒコ
+ナカムラ,ヒデユキ
+ナイトウ,カズアキ
+ニッタ,ユタカ
+ナカジマ,カツオ
+ナカセ,トシアキ
+ナカガワ,ノブオ
+ナカジマ,ムネタカ
+ナカムラ,ホズミ
+ナガシマ,ナオジ
+オキ,スミオ
+オクダ,トシオ
+オオハシ,ヒロシ
+オガワ,トオル
+オザワ,ヒロシ
+オオハシ,ユタカ
+オオノ,ミツオ
+オオイシ,ジ
+オオカワ,カオル
+オリガサ,ヤスタケ
+オオタ,ヨシヒコ
+オザキ,ジュンイチ
+オダシマ,タダシ
+オオヒラ,セツジ
+オオヤ,ヒデホ
+オカノ,アキコ
+オグシ,アケミ
+オオイガワ,タカハル
+ナカタニ,シンイチ
+シラオガワ,ライタ
+ナカムラ,トシミツ
+アベ,エミコ
+カワウチ,マリエ
+イトウ,ケンソウ
+コイズミ,タクヤ
+カナオカ,ヒロシ
+アリマ,ヤヨイ
+ウマヤハラ,ヤスミ
+カネマツ,サキコ
+フカヤ,クニアキ
+ゴトウ,ユウイチロウ
+スギモト,クニオ
+クリハラ,トヨヒコ
+オオタ,ユキコ
+スズキ,タケシ
+ヨシダ,カズトシ
+ハットリ,ヒロシ
+カドタ,アキヒロ
+イシザワ,ユズキ
+ミヤモト,ミドリ
+オジ,ヤスヒロ
+アライ,トシアキ
+キタムラ,リカコ
+サイトウ,ヨシヒト
+コバヤシ,キョウゾウ
+ニシカワ,トモミ
+タナカ,カズヒロ
+ズシ,ヤスオ
+アライ,ショウヘイ
+マエデラ,テルユキ
+コンド,ナオ
+ナガホリ,ユキコ
+イワサキ,ミヤビ
+ナカタニ,タカシ
+ナカガキ,ケイコ
+クワハラ,マコト
+スズキ,ユキ
+タダ,エイキ
+ワダ,ナオコ
+サノ,ヒロシ
+トキタ,ナツコ
+コサイ,ユウコ
+セゴエ,サトコ
+ナカイ,アツミ
+ハラダ,トシマサ
+キノシタ,ミチオ
+ミヤザキ,カズミ
+タキザワ,マサアキ
+サトウ,コウイチロウ
+ミズシマ,タケル
+タニグチ,ハルミ
+マツシタ,タカシ
+スギウラ,ケンタロウ
+タニガキ,セイコ
+サトウ,シゲオ
+ヤマカワ,サダハル
+スズキ,シゲヒロ
+トクダ,マンナリ
+イワマ,ノブアキ
+オオハラ,ユキナオ
+シオヌマ,ヒデトシ
+スズキ,アキヨシ
+スズキ,ヨシコ
+スズキ,ノブアキ
+セキ,オサム
+スズキ,ツトム
+スガオ,テツジ
+スズキ,ケイタロウ
+サドトモ,アキラ
+シマ,ミノル
+サイトウ,オサム
+スズキ,マサヒロ
+サイトウ,ユキオ
+ソマ,オサム
+サトウ,ケンジ
+シロサキ,ヨウイチ
+スズキ,ヨウジロウ
+スズキ,テツロウ
+スギモト,マサオ
+サカイ,シンイチ
+スズキ,カズユキ
+サトウ,タツジ
+シオタ,トヨオ
+ソマ,カンジ
+シュドウ,タカオ
+サクライ,トシオ
+ソウヤ,セイジ
+サワムラ,ナルミ
+セオ,ユウジ
+シミズ,トシオ
+サキモリ,イワオ
+サイトウ,ヒサオ
+シミズ,エイゾウ
+シオノヤ,キヨカズ
+タカギ,ヒデオ
+タキイシ,リョウジ
+トバ,マサシ
+タグチ,マサオ
+タカノ,ムネオ
+タカヤス,トヨミ
+タナカ,シゲル
+タカハマ,ヨシアキ
+ツチダ,マモル
+タカオ,マスミ
+タニグチ,ミチアキ
+ツジカワ,ユウイチ
+ヨシザワ,マサハル
+タナカ,ジュンゾウ
+タマル,マサミ
+タカギ,キョウコ
+ツネヒロ,ジュンジ
+タカハシ,トシアキ
+アサイ,ユウジ
+タカサキ,アキラ
+タカナミ,マサル
+トモナガ,ツネカズ
+タカギ,イツオ
+ツカモト,アキオ
+テラウチ,サダユキ
+タノオカ,ススム
+ウスギ,カズヒロ
+ウツキ,テツオ
+ウチダ,ケンスケ
+ウメムラ,トシオ
+ウノ,トシヒデ
+ワタナベ,ヒサユキ
+ワタナベ,カツナリ
+ワタナベ,コンゴウ
+ワダ,タケミツ
+オオタ,マコト
+ナカジマ,ケイイチ
+フルサワ,ツヨシ
+カシワギ,コ
+ハタ,ショウスケ
+ウシジマ,マサカズ
+マツイ,アキラ
+カワナ,ダイジロウ
+ミヤモト,タカヒサ
+ヨシダ,スミユキ
+オオカワラ,ゲンタロウ
+スヤマ,クンロウ
+スズキ,ユウジ
+クニギタ,ヨウイチ
+キド,マサシ
+イシイ,チカトシ
+ウエダ,タカシ
+イチカワ,カズオ
+オサジマ,トシヤ
+ウエムラ,トシヒデ
+キムラ,トキチ
+ヨコヤマ,ヒサオ
+イトウ,マサユキ
+ミヤベ,カズト
+タマイ,カズミチ
+コリ,コウイチロウ
+イワサワ,マナブ
+ヨシヤス,ゴウ
+マタキ,シンゴ
+ヤマモリ,カツオ
+タカタ,ノリオ
+スドウ,ショウコ
+ウエムラ,ユタカ
+スズキ,ミノル
+スズキ,アキラ
+アラキ,セキネ
+カダ,アキラ
+ニシヨリ,ミノル
+イナバ,カズト
+ホリイ,ツネオ
+スドウ,マサヒコ
+シロヤマ,コ
+テライ,アキコ
+マツモト,ナオタケ
+イトウ,セイジ
+ソトヤマ,カツノリ
+ヒラオカ,ヤスシ
+ヒラキ,タモツ
+タナベ,ユウジロウ
+タメチカ,タテオ
+ヨネダ,トシヒデ
+エジマ,トモノリ
+タカハシ,ミサコ
+テラオ,ヒロヒサ
+ホンダ,ユミ
+オチリ,ヤスヒロ
+オオイ,ナオミ
+カワイ,ミノル
+ムラカミ,ミヨシ
+ナカジマ,ヒトシ
+イシハラ,フミタカ
+アカホリ,ミツノブ
+ヤスダ,アキラ
+ヨコセ,トモシゲ
+ヨシカワ,トシロウ
+ヤマグチ,ミノル
+ヨシムラ,マサヒコ
+ヨネダ,カオル
+ヤマシタ,ショウゾウ
+ヤマダ,エイゾウ
+ヤマザキ,ススム
+ヨシダ,ヒロシ
+ヤマタニ,ヒロツグ
+ヤマネ,ヨネタカ
+ヤマカワ,ジュンイチ
+ヨシダ,タカオ
+ヤマサキ,ノリオ
+ヤマモト,テルオ
+ヨコタ,エイイチ
+ヤマダ,カツヒロ
+ヨシノ,ダイスケ
+ヨシダ,ムツオ
+ノムラ,マサタカ
+ヤマダ,サトル
+イシカワ,チヨタケ
+スズキ,ヒロフミ
+マスダ,ケンジ
+イマイ,マサゾウ
+キュウソジン,ケンスケ
+ヤマダ,アキラ
+ヒラノ,タイキ
+ナカニシ,カズシゲ
+タツタ,シゲル
+ミムラ,マサオ
+ヒラマツ,サダオ
+トミタ,マサヒロ
+コバヤシ,シンイチロウ
+タケナカ,マサヒロ
+アマノ,ノリコ
+イシイ,キョウコ
+イデ,サキコ
+オカダ,リエコ
+ヒライシ,マリ
+ヨシモト,ヒロコ
+カワシマ,マユミ
+トバタ,ノリカズ
+タナカ,ヒカル
+アンベ,マナミ
+タカハシ,マサヒロ
+トミヤマ,ヨシアキ
+タカヤマ,トシユキ
+ミヤシタ,ミノル
+ハシモト,ミキオ
+トガメ,ミワコ
+ノグチ,カズマサ
+ノグチ,アキラ
+ソウミヤ,ケンジ
+キムラ,ヨウジ
+カトウ,トモユキ
+スズキ,ケンジ
+オカダ,ヒロミ
+ヤノ,ジュンコ
+オノサト,ハン
+マツダ,ヨシアキ
+キムラ,タカシ
+タムラ,トモノリ
+カトウ,トシヤ
+イヌマル,ヒロジ
+オノデラ,ナオコ
+スズキ,チハル
+タニカワ,ホズエ
+サクマ,シマ
+イマムラ,ルリコ
+エイドメ,ユキ
+ヨシイ,タダヒロ
+オオタキ,ユミコ
+クスモト,イサオ
+ミヤシタ,ユキオ
+マチイ,カズヒロ
+ハヤシダ,タカトシ
+ハルハラ,タカシ
+テラモト,ユウジロウ
+マツモリ,カズオ
+ワタナベ,コウジ
+カネコ,ヤスシ
+オリガサ,マツノリ
+ツカモト,ヒロミチ
+ヨシダ,ミナ
+ニシダ,ヒサエ
+フルカワ,リエ
+ムラカミ,タカオ
+オオバヤシ,コウキチ
+サトウ,ケイコ
+ヤマ,フミコ
+ミヤタ,タカテル
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt
new file mode 100644
index 0000000..593a0f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+虹如
+丁一賢
+丁川偉
+丁心嵐
+丁弘光
+丁任法
+丁志宏
+丁幸姬
+丁俊夫
+丁建文
+丁映純
+丁羿文
+丁哲
+丁偉民
+丁國梅
+丁淑玲
+丁甦南
+丁毓彥
+丁雍哲
+丁綺慧
+丁慧嵐
+丁璟楓
+丁譽琳
+丁鋐鎰
+卜正倫
+于弋翔
+于秀美
+于秉弘
+于清華
+于殿聖
+山傑
+尹寸欣
+尹居才
+尹振威
+尹瑞豐
+尹曉恩
+仇家琪
+孔守中
+孔智杰
+孔繁霖
+尤心瑜
+尤吟文
+尤良
+尤明仲
+尤俊響
+尤星策
+尤偉仕
+尤淨纓
+尤欽樂
+尤盟貴
+尤寬宏
+尤韻琇
+尤蒔萱
+文志忠
+文真花
+文儀詠
+方士銘
+方天中
+方文鋒
+方永清
+方汝育
+方孝君
+方志明
+方秀敏
+方佳俊
+方幸宜
+方怡潔
+方長揚
+方俊雄
+方奕斌
+方建智
+方彥程
+方映芬
+方柏欽
+方秋錦
+方若珊
+方重凱
+方晉德
+方健剛
+方彩宜
+方淑芬
+方淑儒
+方凱玲
+方景弘
+方策民
+方雅琪
+方愛珍
+方瑞遠
+方裕欽
+方嘉興
+方翠鴻
+方慧琴
+方靜宜
+方瓊儀
+方麗雅
+方鐘鋒
+方菀萍
+毛文勇
+毛佩娟
+毛彥喬
+毛淑芬
+毛漢梅
+水祥苓
+牛貴賢
+王一珍
+王乃俐
+王力平
+王上維
+王士忠
+王士榮
+王士豪
+王大昌
+王子成
+王子英
+王子熙
+王小芬
+王中平
+王中憓
+王尹聖
+王仁君
+王仁宗
+王仁舜
+王元助
+王元興
+王友志
+王天文
+王少文
+王心忠
+王心怡
+王心智
+王文平
+王文君
+王文志
+王文杰
+王文郁
+王文琪
+王文瑤
+王文鴻
+王方怡
+王月婷
+王世宇
+王世明
+王世傑
+王世廣
+王丕銓
+王可欣
+王巧瑩
+王弘毅
+王正威
+王正達
+王永仁
+王永昇
+王永誠
+王玉文
+王玉珠
+王玉雲
+王生勳
+王立梅
+王立瑋
+王仲琦
+王光麃
+王吉佳
+王如玉
+王宇清
+王安凱
+王旭全
+王有權
+王自強
+王佐輔
+王伯逸
+王利生
+王君瑞
+王妙紅
+王孝君
+王宏仁
+王宏哲
+王宏嘉
+王序綸
+王志仁
+王志文
+王志弘
+王志呈
+王志忠
+王志峰
+王志偉
+王志清
+王志欽
+王志誠
+王志豪
+王志銘
+王杏如
+王秀云
+王秀芬
+王秀珠
+王秀雯
+王秀椿
+王育德
+王谷神
+王亞志
+王依韻
+王佳珍
+王佳琪
+王佩
+王佩音
+王佩詩
+王坤賢
+王孟謙
+王宗棋
+王宜彥
+王岡陵
+王念慈
+王怡仁
+王怡文
+王怡方
+王怡珍
+王怡清
+王怡婷
+王怡晴
+王怡雅
+王怡蘋
+王承舜
+王明仁
+王明珊
+王明富
+王昀珩
+王欣之
+王欣慧
+王泓翔
+王治邦
+王玫樺
+王芳慧
+王邵郁
+王金華
+王雨湘
+王亭鈞
+王信仁
+王信泰
+王信富
+王信裕
+王俊仁
+王俊立
+王俊彥
+王俊清
+王俊傑
+王俊凱
+王俊凱
+王俊富
+王俊欽
+王俊超
+王俊道
+王俊龍
+王俞文
+王冠倫
+王冠然
+王則勝
+王勁凌
+王品淇
+王奕君
+王奕鈞
+王姿今
+王姿萍
+王威能
+王宣卿
+王建山
+王建文
+王建政
+王建凱
+王建欽
+王建雄
+王建斌
+王彥能
+王彥智
+王律之
+王思捷
+王思潔
+王政治
+王政權
+王昭人
+王昭淑
+王昭懿
+王星皓
+王昱凱
+王昱蘋
+王柏欣
+王柏堯
+王柏鈞
+王派軒
+王為蒨
+王玲英
+王盈心
+王盈傑
+王盈雅
+王祈鈞
+王秋惠
+王紀
+王美玉
+王美玲
+王美淑
+王美惠
+王美雯
+王美懿
+王致棠
+王若筑
+王英文
+王英蓉
+王衍易
+王貞懿
+王郁欣
+王郁婷
+王郁菁
+王郁珺
+王韋翔
+王修蘭
+王哲聰
+王家偉
+王家瑜
+王展瑋
+王悅如
+王振宇
+王振浩
+王時蔚
+王桂岑
+王海天
+王浩倫
+王珮倫
+王珮璇
+王素卿
+王純美
+王茹馨
+王偉民
+王偉州
+王偉軍
+王偉德
+王健民
+王健勳
+王國
+王國彥
+王國隆
+王國龍
+王執信
+王培樺
+王婉瑜
+王崇明
+王崑龍
+王彩霞
+王惇慧
+王啟宗
+王啟樵
+王敏貞
+王敏銓
+王晨曄
+王梅蘭
+王淳慧
+王清鴻
+王淑怡
+王淑冠
+王淑眉
+王淑娟
+王淑媛
+王淑雯
+王淑慧
+王淑韻
+王淨瑩
+王祥宇
+王祥霖
+王紹真
+王莉汶
+王莉雯
+王雪如
+王傑立
+王凱弘
+王凱怡
+王凱蒂
+王勝弘
+王勝雄
+王博文
+王博修
+王堯弘
+王婷儀
+王富昌
+王復輝
+王惠君
+王惠玲
+王惠敏
+王惠慧
+王敦正
+王晴姿
+王景元
+王景泉
+王智弘
+王智立
+王智益
+王智鳴
+王智龍
+王朝永
+王朝鍵
+王欽帝
+王湘雲
+王琪
+王琦枚
+王皓正
+王紫雯
+王翔寧
+王舒瑜
+王舜生
+王菁蘭
+王詠慧
+王貴龍
+王逸修
+王進鴻
+王閔韋
+王雅伶
+王雅姿
+王雅貞
+王雅惠
+王雅雯
+王雅儀
+王雅慧
+王雯
+王雲生
+王順鴻
+王勤善
+王意惠
+王慈慶
+王愛嘉
+王敬翔
+王新慧
+王榆富
+王毓菁
+王毓煇
+王照興
+王瑞吟
+王瑞烽
+王瑞雲
+王瑞頤
+王瑞薌
+王盟仁
+王稜鈞
+王聖
+王聖尤
+王聖淳
+王聖棋
+王聖維
+王聖瑋
+王裕正
+王裕智
+王詩郁
+王詩婷
+王詩雅
+王詩馨
+王道仁
+王鉅翔
+王靖雯
+王鼎允
+王嘉君
+王嘉郁
+王嘉琪
+王嘉農
+王嘉慧
+王嘉興
+王嘉齡
+王彰懋
+王榮發
+王漢祥
+王睿君
+王碩慶
+王福祥
+王維如
+王維雯
+王維燦
+王翠華
+王蒼龍
+王豪傑
+王銘梅
+王銘鴻
+王鳳宜
+王儀穎
+王德皓
+王慶堂
+王慧君
+王慧英
+王慧凱
+王慧雯
+王慧靜
+王標欽
+王瑾瑜
+王輝銘
+王儒隆
+王憲盟
+王曉音
+王曉雯
+王曉瑋
+王燕強
+王興邦
+王蕙容
+王錫祿
+王錦慧
+王靜怡
+王靜琪
+王靜慧
+王爵暐
+王臆鈴
+王薇媛
+王謙維
+王鴻志
+王鴻鈞
+王禮謙
+王寵惠
+王瀚基
+王瓊珮
+王瓊瑤
+王繪嵐
+王證雄
+王韻淑
+王鵬
+王麒鈞
+王麗芬
+王麗淑
+王麗琦
+王麗雯
+王麓斯
+王寶龍
+王繼堯
+王耀暉
+王耀慶
+王耀鐸
+王鐘銘
+王馨敏
+王馨苹
+王齡梓
+王儷穎
+王櫻娟
+王躍霖
+王顯卉
+王芊雯
+王姵雯
+王浟美
+王琇姿
+王翊螢
+王棨德
+王琮瑋
+王琡雯
+王嫆棻
+王瑋鈴
+王筱婷
+王筱萱
+王鈺欣
+王鈺植
+王蓁儀
+王薏雯
+王嬿淑
+世潓靜
+丘真綺
+冉兆珍
+包志文
+包宮維
+古一真
+古月娥
+古玉鳳
+古秀鈴
+古佩玉
+古承弘
+古明晟
+古俊綱
+古英山
+古桂菊
+古惟銘
+古莉霜
+古智偉
+古雲仁
+古詩儀
+古學涵
+古俶綺
+司順安
+史先鴻
+史明原
+史國福
+史聖鴻
+史曜彰
+左宗元
+左蓌
+甘永裕
+甘孟龍
+甘政弘
+甘惠華
+甘霈霖
+田世賢
+田兆琪
+田沐恩
+田佩灝
+田怡
+田芳茹
+田英志
+田珮促
+田淑君
+田欽文
+田嘉玲
+田曉鈞
+田璧菀
+申志斌
+申富鑫
+白大尹
+白全成
+白岑怡
+白佳渝
+白宜錚
+白欣松
+白玲慈
+白振源
+白耿行
+白淑瑜
+白喜文
+白舜元
+白煌麒
+白榮修
+白靜如
+白麗娜
+石乃如
+石世名
+石玉鳳
+石旭生
+石育玟
+石佳蓉
+石宗仁
+石明周
+石芳珊
+石美玲
+石峻平
+石純綺
+石彩慧
+石傑宇
+石朝安
+石雅惠
+石慶和
+石錦航
+石馥瑄
+石瑋靜
+伍世揚
+伍秀蓉
+伍建文
+伍家誼
+伍健鵬
+伍碧玲
+任才俊
+任君敏
+任俊儒
+任純慧
+任新蘭
+任筱清
+危明康
+向西陽
+向德容
+安志偉
+成丹玲
+曲昌隆
+朱乙真
+朱心怡
+朱文碧
+朱世鈞
+朱正文
+朱玉汶
+朱亦丹
+朱百晟
+朱妍如
+朱希振
+朱志洋
+朱沛怡
+朱育佑
+朱育瑩
+朱佳琪
+朱宗蔚
+朱念英
+朱怡臻
+朱東應
+朱秉慧
+朱邱明
+朱俊祥
+朱俊龍
+朱奎州
+朱建泰
+朱彥儒
+朱政哲
+朱柏蒼
+朱珍慧
+朱秋慧
+朱若梅
+朱郁庭
+朱原宏
+朱家正
+朱家欣
+朱家慧
+朱容練
+朱峰誼
+朱時彥
+朱書賢
+朱殷廷
+朱珮儀
+朱祐呈
+朱純瑩
+朱偉傑
+朱健誠
+朱培萱
+朱康銘
+朱敏道
+朱淑惠
+朱陳啟源
+朱寓理
+朱朝麟
+朱詠聯
+朱雅鈴
+朱嗣芬
+朱瑞勇
+朱達明
+朱榮宏
+朱福山
+朱鳳薇
+朱慧真
+朱輝耀
+朱曉晴
+朱靜文
+朱璿尹
+朱麗婷
+朱芮宜
+朱琬蓁
+次蘭英
+江中健
+江天授
+江文松
+江文瓊
+江世華
+江正傑
+江玉卉
+江立峰
+江吉祥
+江成斌
+江呈陽
+江志宏
+江志隆
+江秀玲
+江育霆
+江佳芳
+江佳純
+江佳霖
+江佩玲
+江佩縈
+江協勇
+江孟芝
+江孟澤
+江宗哲
+江宜芳
+江宜樺
+江岩達
+江忠遠
+江怡萱
+江怡禛
+江昌鴻
+江明松
+江明書
+江明璋
+江明藝
+江東懋
+江欣容
+江玩萩
+江芝敏
+江長壽
+江信東
+江俊明
+江俊億
+江俊興
+江品儀
+江威德
+江建銘
+江彥輝
+江恬
+江政儒
+江昭賢
+江柏葦
+江玲慧
+江紀明
+江美慧
+江英信
+江衍龍
+江風遠
+江家銘
+江振宇
+江書瑩
+江珮宙
+江純玫
+江健成
+江國慶
+江寅甫
+江啟仲
+江條均
+江淑貞
+江盛龍
+江凱潔
+江惠華
+江智維
+江逸安
+江雅文
+江雅惠
+江傳江
+江瑞祥
+江裕國
+江嘉倫
+江榕櫻
+江翠芳
+江寬慈
+江慧芳
+江慕屏
+江憶雯
+江穎明
+江錦輝
+江蕾
+江豐良
+江麗娟
+江劭倫
+江媞
+江檉皇
+池泰宏
+牟昕
+艾青蓉
+何大新
+何仁田
+何天恩
+何文文
+何文萱
+何世雄
+何永琳
+何玉潔
+何亙彬
+何光櫺
+何旭平
+何君萍
+何志浩
+何沛熙
+何育杰
+何享蓉
+何佳南
+何佳真
+何佳融
+何佩芝
+何佩純
+何其澤
+何姍蓉
+何孟賢
+何季秦
+何宗彬
+何宗熹
+何宗禧
+何宜倩
+何宜璇
+何岳珈
+何怡君
+何承仲
+何易展
+何明宗
+何明書
+何明穎
+何昇儒
+何松瑤
+何欣軒
+何秉欣
+何芷瑄
+何雨雯
+何信宗
+何俊廷
+何俊達
+何俊賢
+何冠霖
+何威德
+何建樂
+何彥駒
+何思穎
+何政翰
+何昭賢
+何炳賢
+何秋萱
+何美玲
+何若瑜
+何香葉
+何家菁
+何峻杰
+何振維
+何浚銘
+何素君
+何健維
+何國晟
+何崇維
+何敏菁
+何清龍
+何淑婷
+何涵
+何勝合
+何惠君
+何惠鈺
+何舒嵐
+何逸然
+何雅琪
+何意瑩
+何瑞美
+何萱璇
+何嘉展
+何榮文
+何維耕
+何銘宏
+何慶興
+何慧儀
+何學厚
+何曉盈
+何燕屏
+何錦題
+何靜儀
+何織
+何麗君
+何旻霜
+何翊綺
+余子銘
+余心農
+余文裕
+余弘偉
+余吉祥
+余伶
+余志龍
+余迅
+余佳音
+余佳興
+余佩娟
+余坪芳
+余孟霏
+余宗儒
+余宛儒
+余忠燈
+余昌翰
+余明娟
+余明澤
+余東曉
+余法昌
+余金典
+余信偉
+余俊淵
+余俊儒
+余勁毅
+余帝慶
+余彥霖
+余政隆
+余星柔
+余盈鋒
+余若帆
+余凌昌
+余家瑩
+余泰男
+余素蘭
+余國安
+余婉萍
+余晨華
+余盛欽
+余惠文
+余智傑
+余雅淑
+余慈宴
+余瑞萍
+余嘉峰
+余福浩
+余齊威
+余憲宗
+余諧
+余謝輝
+余麗琴
+余琬瑜
+利秀蘭
+利德絃
+吳乃元
+吳千慧
+吳大維
+吳子豪
+吳中宏
+吳仁佑
+吳仁貴
+吳元平
+吳元嫈
+吳少鈞
+吳心惠
+吳文玉
+吳文怡
+吳文益
+吳文傑
+吳文發
+吳文鈴
+吳文毅
+吳文斌
+吳火山
+吳世偉
+吳世達
+吳仕強
+吳仟一
+吳平和
+吳必勝
+吳正奇
+吳正華
+吳永昌
+吳永裕
+吳玉吟
+吳玉茹
+吳玉景
+吳玉蓉
+吳立民
+吳立勤
+吳伊蘋
+吳仲泂
+吳兆文
+吳吉龍
+吳如楦
+吳安邦
+吳旭泰
+吳至仁
+吳行中
+吳伶麗
+吳君育
+吳妙倫
+吳宏仁
+吳宏基
+吳希祖
+吳志宏
+吳志恆
+吳志偉
+吳志漢
+吳志龍
+吳杏旋
+吳沛晃
+吳汶汶
+吳秀玲
+吳秀紋
+吳秀鵑
+吳育宗
+吳育碩
+吳育霖
+吳亞欣
+吳依妮
+吳依蓓
+吳佳和
+吳佳芳
+吳佳南
+吳佳玲
+吳佳玲
+吳佳倩
+吳佳容
+吳佳真
+吳佳惠
+吳佳蓉
+吳佳憬
+吳佳樺
+吳佳穎
+吳佳蕙
+吳佳靜
+吳佳鴻
+吳佩君
+吳佩芳
+吳佩城
+吳佩珊
+吳佩玲
+吳佩娥
+吳佩純
+吳佩蓉
+吳佩儒
+吳佩諭
+吳佩蓁
+吳侑庭
+吳其霖
+吳函蓁
+吳叔鎮
+吳坤祐
+吳坤鴻
+吳奇哲
+吳奇龍
+吳孟宗
+吳孟芬
+吳孟貞
+吳孟娟
+吳孟茹
+吳孟蓉
+吳孟憲
+吳孟錫
+吳孟蕎
+吳季瑾
+吳宗岱
+吳宗祈
+吳宗桓
+吳宗隆
+吳宗儒
+吳宗憲
+吳宗翰
+吳宗興
+吳宗龍
+吳定疆
+吳宜芳
+吳宜貞
+吳宜祐
+吳宜穆
+吳宜嬪
+吳宛怡
+吳宛縈
+吳尚倍
+吳尚儒
+吳岡儒
+吳岱霖
+吳岳桐
+吳幸枝
+吳幸真
+吳延晃
+吳忠政
+吳忠霖
+吳怡君
+吳怡珊
+吳怡萍
+吳怡慶
+吳怡瑩
+吳怡憲
+吳怡靜
+吳怡嫺
+吳承哲
+吳承璋
+吳招
+吳易遜
+吳昌庭
+吳昆
+吳昆璋
+吳明
+吳明忠
+吳明芳
+吳明珍
+吳明哲
+吳明恭
+吳明軒
+吳明達
+吳明璋
+吳明勳
+吳明曄
+吳明龍
+吳明顏
+吳昕姿
+吳昇橋
+吳東和
+吳東耿
+吳東霖
+吳松沛
+吳欣佩
+吳欣怡
+吳欣倫
+吳欣碩
+吳欣儒
+吳欣鴻
+吳泓玳
+吳治英
+吳玫姍
+吳直耕
+吳秉倫
+吳秉勳
+吳秉駿
+吳芳青
+吳芳瑜
+吳芝緯
+吳采芳
+吳金玉
+吳金曆
+吳長柏
+吳雨哲
+吳青育
+吳青峰
+吳青環
+吳亭誼
+吳信幸
+吳信寬
+吳信輝
+吳侯璋
+吳俊宏
+吳俊奇
+吳俊杰
+吳俊傑
+吳俊達
+吳俊儀
+吳俊德
+吳俊毅
+吳俊緯
+吳俊賢
+吳俊鋒
+吳俊諺
+吳俊叡
+吳俞瑩
+吳冠群
+吳冠賢
+吳冠翬
+吳勁龍
+吳品蓉
+吳奕成
+吳奕羲
+吳姿儀
+吳姿樺
+吳威芳
+吳宣鋒
+吳建生
+吳建男
+吳建芝
+吳建達
+吳建德
+吳建賢
+吳建勳
+吳建旻
+吳彥慶
+吳律銘
+吳思萱
+吳思瑩
+吳思穎
+吳政
+吳政旺
+吳政原
+吳政彬
+吳政德
+吳政勳
+吳政穎
+吳政霖
+吳春生
+吳春緩
+吳昭蓉
+吳昭毅
+吳昭龍
+吳昱宏
+吳柄德
+吳柏青
+吳柏儀
+吳柏毅
+吳柏穎
+吳炫宗
+吳炳嶢
+吳玲媛
+吳皇欣
+吳盈潔
+吳祉龍
+吳秋美
+吳秋慧
+吳紀君
+吳美妮
+吳美玲
+吳美惠
+吳美禎
+吳美慧
+吳美螢
+吳羿諠
+吳致銘
+吳若華
+吳英宏
+吳英鴻
+吳貞宜
+吳貞瑩
+吳郁芳
+吳重毅
+吳飛龍
+吳倩
+吳原宇
+吳哲雯
+吳哲權
+吳家明
+吳家琪
+吳家榮
+吳家豪
+吳家慧
+吳容瑩
+吳庭獄
+吳振成
+吳振豪
+吳挺鋒
+吳晏平
+吳書榮
+吳桂箐
+吳泰昌
+吳海芬
+吳珮君
+吳珮慈
+吳珮禎
+吳益芳
+吳素芬
+吳純欣
+吳軒軒
+吳偉倫
+吳偉誠
+吳健民
+吳健鑫
+吳國偉
+吳國獅
+吳國熙
+吳國銘
+吳堅瑋
+吳培賢
+吳婉婷
+吳婉歆
+吳崇銘
+吳彩邑
+吳悠
+吳啟揚
+吳啟斌
+吳敏真
+吳敏鉅
+吳梓逢
+吳添鋒
+吳淑如
+吳淑芬
+吳淑卿
+吳淑敏
+吳淑華
+吳淑鳳
+吳涵宜
+吳祥維
+吳紹華
+吳莉婷
+吳雪妮
+吳竟芳
+吳凱雯
+吳勝祺
+吳喬森
+吳復興
+吳惠君
+吳惠彩
+吳惠雯
+吳斯燻
+吳智東
+吳智豪
+吳棟隆
+吳犀靈
+吳善銘
+吳菁菁
+吳詠宸
+吳逸民
+吳逸群
+吳鈞婷
+吳雅坤
+吳雅郁
+吳雅嵐
+吳雅萍
+吳雅雯
+吳雅綺
+吳雲驥
+吳圓朗
+吳敬琪
+吳毓真
+吳源章
+吳瑞
+吳瑞哲
+吳瑞欽
+吳瑞慶
+吳稚霆
+吳聖威
+吳詩婷
+吳誠昌
+吳鼎偉
+吳嘉信
+吳嘉娟
+吳嘉勝
+吳嘉榮
+吳嘉蕙
+吳寧瑄
+吳榮泰
+吳漢銘
+吳碧俐
+吳福量
+吳維倩
+吳維裕
+吳肇騰
+吳遠誠
+吳銘振
+吳銓友
+吳鳳蘭
+吳德元
+吳慶文
+吳慧君
+吳慧玲
+吳慧貞
+吳慧敏
+吳慧雯
+吳潔珊
+吳賜忠
+吳憲中
+吳憶屏
+吳曉青
+吳曉純
+吳曉菁
+吳曉薇
+吳燕芬
+吳穎軒
+吳蕙如
+吳蕙紋
+吳遵先
+吳錦佳
+吳錦鎰
+吳靜宜
+吳靜怡
+吳靜芳
+吳靜茹
+吳靜雯
+吳龍寶
+吳總成
+吳聲源
+吳邁
+吳鴻昌
+吳鴻森
+吳曜臣
+吳豐吉
+吳鎮利
+吳瓊玉
+吳韻卉
+吳麗春
+吳麗婷
+吳獻良
+吳馨怡
+吳懿婷
+吳顯宗
+吳佼佼
+吳旻儒
+吳玠蓉
+吳昶葳
+吳淩安
+吳琮傑
+吳瑋琳
+吳筱珈
+吳璁
+吳韞德
+呂子豪
+呂仁團
+呂友婷
+呂文專
+呂文鈴
+呂世豪
+呂正安
+呂玉秋
+呂立偉
+呂如英
+呂自達
+呂志宏
+呂志鋒
+呂育芳
+呂育瑋
+呂佳宜
+呂佳容
+呂佳樺
+呂佩姍
+呂佩純
+呂其霖
+呂姍姍
+呂季芳
+呂宗銘
+呂宜芳
+呂宜晏
+呂宜霖
+呂居勳
+呂忠育
+呂怡慧
+呂旺騏
+呂明
+呂明泰
+呂明龍
+呂杰緯
+呂欣穎
+呂芳俊
+呂金彥
+呂長馨
+呂保岸
+呂俊儀
+呂俐
+呂南畿
+呂威德
+呂建彥
+呂建鋒
+呂彥融
+呂政彥
+呂政諭
+呂昭儀
+呂柏宏
+呂皇其
+呂秋雲
+呂美惠
+呂美齡
+呂英瑋
+呂韋箴
+呂哲明
+呂庭維
+呂格豪
+呂祐吉
+呂偉欽
+呂國培
+呂婉茹
+呂梅音
+呂淑卿
+呂淑禎
+呂理霖
+呂紹榮
+呂雪瑜
+呂惠菁
+呂智傑
+呂詠真
+呂雅玲
+呂雅琪
+呂雯歆
+呂滄堯
+呂聖章
+呂嘉元
+呂嘉豐
+呂維玲
+呂銘智
+呂慧惠
+呂學君
+呂學智
+呂學叡
+呂燕林
+呂錦順
+呂靜蓉
+呂鴻麟
+呂麗娟
+呂廳嚴
+呂翊民
+宋大辰
+宋之揆
+宋心慧
+宋世文
+宋玉婷
+宋伯瑜
+宋沛勇
+宋育瑋
+宋佩珊
+宋孟瑛
+宋幸真
+宋昌霖
+宋東威
+宋秉萱
+宋俊洋
+宋奕儒
+宋建欣
+宋政隆
+宋禹瑩
+宋致遠
+宋家霖
+宋舫臣
+宋培元
+宋敏華
+宋喬玉
+宋朝斌
+宋雲明
+宋嘉仁
+宋碧琳
+宋慧潔
+宋燕儷
+宋竄
+宋旻真
+巫子懿
+巫戎怡
+巫佩璇
+巫宜學
+巫明翰
+巫芷瑋
+巫冠誼
+巫柏毅
+巫振嘉
+巫清文
+巫善福
+巫嘉興
+巫曉芬
+巫晟逸
+李乃文
+李士享
+李子允
+李小芬
+李中任
+李中慧
+李仁修
+李仁凱
+李今黛
+李元圃
+李元裕
+李友淳
+李天樺
+李心仁
+李心嵐
+李文
+李文吉
+李文志
+李文政
+李文莉
+李文惠
+李文琦
+李文意
+李文達
+李文賢
+李文斌
+李月星
+李世安
+李世偉
+李世剴
+李世寬
+李以新
+李可立
+李巧琳
+李弘昊
+李正元
+李正彥
+李正勝
+李正豪
+李永昌
+李永欽
+李永鴻
+李玉佩
+李玉卿
+李玉琳
+李玉鈴
+李立仁
+李立強
+李亦晴
+李仲玄
+李光
+李光祥
+李光倢
+李兆斌
+李吉敏
+李名倫
+李如珍
+李宇弘
+李守維
+李安琳
+李成漢
+李有欽
+李羽
+李至章
+李佐寧
+李伯毅
+李君彥
+李含仁
+李妍瑩
+李宏文
+李宏洲
+李廷偉
+李志成
+李志明
+李志峰
+李志偉
+李志章
+李志銘
+李志鵬
+李沛杰
+李汪盛
+李秀年
+李秀玲
+李秀卿
+李秀華
+李秀蘅
+李育枝
+李育庭
+李育群
+李育瑩
+李育融
+李見汶
+李亞倫
+李京樺
+李依純
+李依恂
+李佳汶
+李佳明
+李佳芳
+李佳芬
+李佳玲
+李佳玲
+李佳珍
+李佳倩
+李佳家
+李佳晃
+李佳真
+李佳訓
+李佳雯
+李佳蓉
+李佳慶
+李佳儒
+李佳樺
+李佳穎
+李佳臻
+李佳霖
+李佳霏
+李佳鍵
+李佳蓁
+李侃洋
+李佩佩
+李佩芝
+李佩姿
+李佩珊
+李佩玲
+李佩倩
+李佩真
+李佩陵
+李佩儀
+李佩曄
+李佩諭
+李佩嬬
+李侑宬
+李其澧
+李函芬
+李卓道
+李和昌
+李坤明
+李坤源
+李坤霖
+李奇展
+李奇翰
+李孟坤
+李孟珊
+李孟哲
+李孟軒
+李孟儒
+李孟穎
+李孟燦
+李孟璁
+李季華
+李宗坤
+李宗倫
+李宗恩
+李宗義
+李宗賢
+李宗憲
+李宗穎
+李宗翰
+李宗霖
+李宗鴻
+李定遠
+李宜明
+李宜芳
+李宜洲
+李宜玲
+李宜哲
+李宜峻
+李宜純
+李宜潔
+李宜樺
+李宜霖
+李宜韓
+李宜圜
+李宛玲
+李宛萍
+李宛靜
+李尚賢
+李岩暉
+李岱蓁
+李岳峰
+李岳樺
+李岳鴻
+李幸娟
+李幸錠
+李忠和
+李忠義
+李忠穎
+李念蒨
+李怡昌
+李怡玲
+李怡萱
+李怡寬
+李怡慧
+李怡瑾
+李怡穎
+李怡旻
+李承宗
+李承璋
+李承龍
+李易修
+李易諺
+李昌達
+李昆宏
+李昆達
+李昆龍
+李明利
+李明怡
+李明杰
+李明彥
+李明修
+李明哲
+李明書
+李明釗
+李明達
+李明潔
+李明勳
+李明樺
+李明諭
+李明霞
+李明墉
+李昀臻
+李昊
+李昇翰
+李東彥
+李東隆
+李東龍
+李杰如
+李松家
+李欣怡
+李欣怡
+李欣哲
+李欣達
+李欣儒
+李欣穎
+李欣霞
+李法漢
+李治安
+李玟玟
+李玥瑩
+李秉朔
+李秉翰
+李芳圻
+李芳婷
+李芳儀
+李芝綾
+李芸彥
+李虎峰
+李金泓
+李金鈴
+李金樺
+李長文
+李長榮
+李長紘
+李青松
+李青陽
+李非霏
+李信成
+李信杰
+李信德
+李信穎
+李保蓁
+李俊宏
+李俊奇
+李俊昀
+李俊彥
+李俊祺
+李俊億
+李俊德
+李俊毅
+李俊賢
+李俊賢
+李俊賢
+李俊勳
+李俊錡
+李俞慧
+李冠朋
+李冠儀
+李冠瑩
+李冠臻
+李勇寧
+李南嬌
+李品慧
+李奕枚
+李奏銳
+李姿儀
+李姿瑩
+李威宏
+李威德
+李威霖
+李宣瑩
+李建民
+李建宏
+李建邦
+李建明
+李建威
+李建葦
+李建寬
+李建賢
+李建鋒
+李建樺
+李建興
+李建禲
+李彥宏
+李彥宜
+李彥儀
+李彥瑩
+李彥儒
+李彥霖
+李律瑋
+李思怡
+李思萱
+李思儀
+李思瑩
+李思諭
+李政
+李政忠
+李政哲
+李政達
+李政輝
+李政曄
+李政龍
+李春枝
+李春燕
+李昭美
+李昭緯
+李映萱
+李昱春
+李昱燐
+李柏杉
+李柏蓉
+李柏賢
+李柏璁
+李炳坤
+李珊珊
+李界鋒
+李盈盈
+李盈潔
+李盈穎
+李科泯
+李秋梅
+李秋儀
+李秋麟
+李美玉
+李美芳
+李美倫
+李美瑜
+李美儀
+李美瑩
+李美錡
+李胤瑤
+李致慧
+李茂全
+李英志
+李英瑞
+李英瑋
+李虹儀
+李貞宜
+李貞慧
+李述申
+李郁偉
+李重賢
+李音慧
+李倩
+李修齊
+李哲安
+李哲緯
+李家宏
+李家珍
+李家萱
+李家豪
+李家儂
+李家興
+李容婷
+李師媺
+李悅嘉
+李振昌
+李振誠
+李振儀
+李晉豪
+李書涵
+李根嘉
+李桃森
+李泰霖
+李浩庭
+李珮如
+李珮琳
+李珮嘉
+李益榮
+李祖珍
+李素梅
+李純慧
+李能遠
+李訓億
+李乾暉
+李偉吉
+李偉愷
+李偉嘉
+李偉顒
+李健源
+李健銘
+李國全
+李國強
+李國華
+李國瑞
+李國榮
+李國維
+李國銀
+李國興
+李基弘
+李培華
+李婉真
+李婉瑞
+李崇仁
+李崇豪
+李康正
+李彩瑩
+李啟弘
+李啟滄
+李敏吉
+李敏嘉
+李敏龍
+李清吟
+李淑君
+李淑芬
+李淑貞
+李淑茹
+李淑惠
+李淑華
+李淑蓉
+李淑靜
+李涵富
+李祥瑞
+李紹綺
+李翎毓
+李連峰
+李雪萍
+李傑如
+李凱楨
+李勝雄
+李喬錚
+李嵐琦
+李惠芬
+李惠珠
+李惠琳
+李惠雯
+李晴雯
+李智怡
+李智強
+李智維
+李森
+李湘樺
+李皖玲
+李善同
+李舜華
+李詠秋
+李逸才
+李逸群
+李進福
+李隆華
+李雅玫
+李雅玲
+李雅梅
+李雅婷
+李雅惠
+李雅惠
+李雅萍
+李雅雯
+李雅燕
+李雯燕
+李傳君
+李意雯
+李想
+李新澤
+李毓真
+李源
+李瑞文
+李瑞貞
+李瑞華
+李瑞騏
+李義雄
+李聖琰
+李詩偉
+李詩楷
+李道林
+李嘉
+李嘉林
+李嘉凌
+李嘉軒
+李嘉華
+李嘉銘
+李嘉鴻
+李寧芳
+李榮茂
+李榮馳
+李漢祺
+李碧婷
+李福蓉
+李維仁
+李維倫
+李維楨
+李肇欣
+李誌明
+李銘周
+李銘毓
+李鳴宇
+李齊芳
+李廣祁
+李德海
+李慶宏
+李慶華
+李慧芬
+李慧美
+李慧珠
+李慧儀
+李毅信
+李瑩潔
+李賢淦
+李學明
+李憲斌
+李曉妮
+李曉玲
+李曉嵐
+李曉菁
+李曉榕
+李澤育
+李燕玲
+李璟郁
+李翰青
+李興舜
+李蕙如
+李蕙芸
+李豫凡
+李錦昇
+李錦蓮
+李靜宜
+李靜怡
+李靜怡
+李靜美
+李靜蓉
+李龍生
+李龍麟
+李爵臣
+李聰岳
+李輿鑫
+李鴻志
+李鴻達
+李曜存
+李謹帆
+李鎔阡
+李馥如
+李瓊英
+李麗枝
+李麗珠
+李寶玉
+李耀民
+李馨怡
+李懿如
+李權家
+李劭軍
+李旻昇
+李旻瑋
+李昶欣
+李苹慈
+李涴汝
+李堨
+李絜
+李瑋琪
+李筱雲
+李鈺雯
+李靚宸
+李鎧任
+李恒君
+杜文傑
+杜民傑
+杜全林
+杜志賢
+杜佳豪
+杜孟政
+杜宛諭
+杜承鑫
+杜昇翰
+杜芳政
+杜俊毅
+杜威廷
+杜彥霖
+杜炳龍
+杜美慧
+杜家昌
+杜珮詩
+杜婉雯
+杜淑錚
+杜陽圓
+杜嘉玲
+杜維修
+杜燕華
+杜耀仁
+沙正悅
+沈士傑
+沈仁傑
+沈文祥
+沈世閔
+沈正德
+沈立仁
+沈如峰
+沈佑翰
+沈君璐
+沈志川
+沈志龍
+沈汶萍
+沈育星
+沈依穎
+沈佳慧
+沈佩雯
+沈坤昇
+沈宗慶
+沈宜蓁
+沈怡伶
+沈昌明
+沈明萱
+沈欣學
+沈秉誼
+沈芸萩
+沈信增
+沈俊翔
+沈冠宏
+沈姿慧
+沈建成
+沈建德
+沈恆光
+沈昭賢
+沈柏寬
+沈盈菁
+沈美娟
+沈郁康
+沈哲標
+沈家榮
+沈振興
+沈益承
+沈純如
+沈國銓
+沈晨鐘
+沈淑華
+沈惠菁
+沈舒琳
+沈雅惠
+沈暉庭
+沈瑞欽
+沈聖崑
+沈道論
+沈嘉蕙
+沈維毓
+沈德厚
+沈學成
+沈蕙君
+沈鴻洲
+沈妏真
+沈筱雲
+汪大倫
+汪巧玲
+汪百軒
+汪秀燕
+汪孟涵
+汪怡華
+汪青蓉
+汪冠宏
+汪美玉
+汪家瑩
+汪啟文
+汪雅萍
+汪靖國
+汪慶珍
+汪麗娟
+狄家溧
+谷泓道
+車益華
+辛宗潭
+辛奕成
+辛菁娥
+辛旻修
+邢能文
+阮文祥
+阮呂真
+阮信憲
+阮昱宏
+阮飛銘
+阮淑茹
+阮斐瑜
+阮雅倫
+阮睿祥
+阮鵬碩
+卓士勛
+卓永堂
+卓志忠
+卓佳慶
+卓宛君
+卓明儀
+卓芳如
+卓俊宏
+卓建隆
+卓英哲
+卓家楠
+卓訓良
+卓淑媛
+卓朝閔
+卓瑞崇
+卓誌隆
+卓靜如
+卓恒生
+周上欽
+周士傑
+周大鈞
+周子敬
+周中興
+周心怡
+周文政
+周文雅
+周月霜
+周世豐
+周代尉
+周弘敏
+周正國
+周永雄
+周玉蓮
+周立偉
+周仲凱
+周吉龍
+周年盛
+周至芬
+周佑禎
+周伯鑫
+周君鴻
+周孝芳
+周宏瑜
+周廷隆
+周志忠
+周志清
+周志勳
+周汶珊
+周秀晏
+周育伶
+周育潤
+周亞欣
+周佳怡
+周佳蓉
+周佳震
+周佩宜
+周佩儀
+周協利
+周奇蓉
+周孟誼
+周宗建
+周宜芳
+周宛萱
+周幸蓉
+周怡伶
+周怡君
+周怡邦
+周怡儷
+周明弘
+周明徹
+周明輝
+周杰
+周欣芸
+周欣瑩
+周玟萱
+周芳如
+周芝涵
+周金燕
+周青蓉
+周信輝
+周俊宏
+周俊豪
+周冠伶
+周品妍
+周威呈
+周建呈
+周建銘
+周彥岑
+周思微
+周政翰
+周星同
+周柏甫
+周玲
+周盈杉
+周秋萍
+周美春
+周致丞
+周郁文
+周韋翰
+周凌悌
+周娟如
+周家浩
+周家慶
+周峰正
+周振凱
+周書婷
+周泰安
+周珮如
+周祐慧
+周耿行
+周偉茹
+周國靖
+周婉琳
+周敏鈺
+周淑娟
+周淑燕
+周凱慧
+周惠蓮
+周智敏
+周渝珊
+周詠訓
+周逸蘭
+周雅婷
+周雲棠
+周敬晏
+周業欽
+周煌耿
+周瑞楠
+周義峰
+周聖慧
+周裕豐
+周道泓
+周嘉松
+周嘉慶
+周漢源
+周福鳳
+周翠芬
+周億信
+周慧姿
+周樂天
+周賢德
+周憲邦
+周曉萍
+周燕盈
+周融駿
+周靜雯
+周聰宇
+周鎮邦
+周麗玲
+周蘭芳
+周旻靜
+周旆瑜
+周瑋
+周鈺翔
+孟天祥
+孟慶安
+季育澤
+官大弘
+官育萱
+官芳如
+官苑傑
+官農哲
+尚書
+屈道剛
+岳維鋌
+房兆隆
+於家珍
+易足真
+易智健
+昌孟翰
+東慎琳
+林一煒
+林上志
+林久勻
+林于正
+林于婷
+林于禎
+林千媚
+林千毓
+林士力
+林士郁
+林士淵
+林士傑
+林士揚
+林士越
+林士農
+林大元
+林大祥
+林大鈞
+林女滿
+林子玄
+林子偉
+林子傑
+林子惠
+林子詠
+林子勤
+林子綺
+林子瑄
+林小琪
+林山雲
+林才元
+林中強
+林之菁
+林仁彥
+林仁傑
+林介一
+林元愷
+林升權
+林天民
+林心如
+林心嵐
+林文中
+林文全
+林文泳
+林文科
+林文將
+林文祥
+林文勝
+林文斯
+林文琦
+林文雯
+林文德
+林文聰
+林文媄
+林月英
+林木興
+林世平
+林世昌
+林世芳
+林世峰
+林世偉
+林世淇
+林世翔
+林世寰
+林主恩
+林以晨
+林仕偉
+林加冠
+林可鈞
+林巨淙
+林巧梅
+林平苑
+林弘昇
+林弘祥
+林正一
+林正宗
+林正軍
+林正偉
+林正凱
+林正福
+林民基
+林永昌
+林永信
+林永清
+林永祥
+林永森
+林永慶
+林永晟
+林玉如
+林玉芳
+林玉玲
+林玉珮
+林玉敏
+林玉婷
+林玉菁
+林玉雲
+林玉龍
+林石隆
+林立任
+林立倫
+林立偉
+林立群
+林立鑫
+林仲威
+林仰望
+林兆盈
+林吉伯
+林后唯
+林如敏
+林宇星
+林守德
+林安緹
+林有俊
+林百揚
+林至承
+林行謙
+林佑安
+林佑珊
+林佑儒
+林佑鍾
+林伯岳
+林伯峻
+林伯勳
+林伶貞
+林克威
+林克寰
+林呈任
+林君宜
+林君玲
+林君瑜
+林君翰
+林吟姿
+林均郁
+林妙君
+林妙娥
+林妍妤
+林孝全
+林孝憲
+林宏坤
+林宏亮
+林宏韋
+林宏乾
+林宏達
+林宏儒
+林宏錡
+林岐益
+林廷吉
+林廷輝
+林志民
+林志成
+林志良
+林志忠
+林志明
+林志杰
+林志芬
+林志勇
+林志皇
+林志峰
+林志偉
+林志堅
+林志揚
+林志慎
+林志豪
+林志豪
+林志銘
+林志儒
+林志穎
+林志謀
+林志龍
+林志鴻
+林志鴻
+林李銘
+林材俊
+林沛君
+林沛蓁
+林灼龍
+林秀坪
+林秀花
+林秀俐
+林秀玲
+林秀美
+林秀卿
+林秀真
+林秀雯
+林秀鳳
+林秀穎
+林秀馨
+林育仕
+林育正
+林育民
+林育生
+林育立
+林育名
+林育如
+林育成
+林育宏
+林育昀
+林育珊
+林育進
+林育群
+林育萱
+林育蓓
+林育慧
+林育賢
+林育鋒
+林育麟
+林良俊
+林見明
+林谷峰
+林貝珊
+林里燕
+林享燁
+林依盈
+林依潔
+林依璇
+林佳生
+林佳宏
+林佳良
+林佳怡
+林佳欣
+林佳亭
+林佳盈
+林佳貞
+林佳陵
+林佳陽
+林佳綺
+林佳蓉
+林佳億
+林佳慶
+林佳慧
+林佳慧
+林佳潔
+林佳瑩
+林佳賢
+林佳樺
+林佳燕
+林佳臻
+林佳靜
+林佳鴻
+林佳潓
+林佩君
+林佩怡
+林佩芬
+林佩貞
+林佩雯
+林佩蓉
+林佩蓉
+林佩慧
+林佩樺
+林佩錦
+林佩璇
+林侑青
+林其侯
+林其鋒
+林協村
+林和秀
+林坤生
+林坤韋
+林坤樑
+林坤霂
+林奇模
+林孟仕
+林孟君
+林孟亭
+林孟萱
+林孟德
+林孟賢
+林孟穎
+林孟葳
+林季苗
+林季燁
+林宗廷
+林宗順
+林宗億
+林宗慶
+林宗賢
+林宗輝
+林宗澤
+林宗謨
+林官逸
+林宜君
+林宜玫
+林宜珍
+林宜聖
+林宜蓉
+林宜慧
+林宜賢
+林宜樺
+林宜錚
+林宜靜
+林宜蓁
+林宜嫺
+林宛瑜
+林宛樺
+林尚良
+林尚穎
+林岱蓉
+林岱融
+林岳儀
+林岳嶙
+林幸蓉
+林庚立
+林征衛
+林忠岳
+林忠慶
+林怡
+林怡汝
+林怡伶
+林怡利
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡均
+林怡秀
+林怡辰
+林怡芳
+林怡青
+林怡莉
+林怡菁
+林怡萱
+林怡寬
+林怡儒
+林怡礽
+林承岳
+林承毅
+林於妮
+林易珊
+林昌弘
+林昌賢
+林昆田
+林昆模
+林昆煇
+林明生
+林明志
+林明宗
+林明杰
+林明彥
+林明莉
+林明楓
+林明誌
+林明德
+林明毅
+林明緯
+林明輝
+林明勳
+林明環
+林昀龍
+林昇永
+林昇龍
+林東茂
+林東毅
+林杰欣
+林松堯
+林欣立
+林欣怡
+林欣怡
+林欣怡
+林欣政
+林欣慈
+林欣儀
+林欣儀
+林欣毅
+林欣誼
+林欣穎
+林欣麗
+林武諺
+林泓君
+林泱秀
+林牧台
+林玟君
+林玟妏
+林玫君
+林玫蓉
+林秉泓
+林秉瑩
+林芳一
+林芳如
+林芳如
+林芳州
+林芳芳
+林芳新
+林芳儀
+林芝卉
+林芝寧
+林芬芳
+林芸暉
+林芷筠
+林金仕
+林金明
+林金蓮
+林金龍
+林長志
+林長慶
+林雨農
+林青志
+林青慧
+林青霞
+林亮仁
+林信全
+林信佑
+林信宏
+林信廷
+林信延
+林信義
+林保成
+林俊仲
+林俊宇
+林俊佑
+林俊伯
+林俊宏
+林俊宏
+林俊廷
+林俊甫
+林俊男
+林俊言
+林俊杰
+林俊傑
+林俊逸
+林俊達
+林俊豪
+林俊魁
+林俊賢
+林俊麟
+林俐亭
+林俞增
+林冠宇
+林冠吟
+林冠宏
+林冠秀
+林冠瑛
+林冠儒
+林勇成
+林南宏
+林品宜
+林奕成
+林奕伶
+林奕秀
+林奕嵐
+林奎君
+林姿伶
+林姿吾
+林姿妙
+林姿婷
+林威名
+林威利
+林威廷
+林威良
+林宣任
+林宣鰲
+林建一
+林建仲
+林建宇
+林建成
+林建吾
+林建宏
+林建宏
+林建廷
+林建志
+林建男
+林建良
+林建邦
+林建昇
+林建華
+林建彰
+林建瑩
+林建勳
+林彥文
+林彥名
+林彥亨
+林彥伶
+林彥孝
+林彥宏
+林彥甫
+林彥享
+林彥嘉
+林彥興
+林思吟
+林思華
+林思親
+林恆碩
+林恪群
+林政位
+林政良
+林政浩
+林政裕
+林政儀
+林政緯
+林政鋒
+林政翰
+林春年
+林春美
+林昭宇
+林昭志
+林昭銘
+林映汝
+林星晨
+林昱君
+林昱偉
+林柑杏
+林柏州
+林柏伸
+林柏宏
+林柏村
+林柏城
+林柏榮
+林柏翰
+林泉洋
+林洪霄
+林為文
+林炳煌
+林珊如
+林玲至
+林珍如
+林皇利
+林盈成
+林盈君
+林盈志
+林盈萱
+林祈均
+林科宏
+林秋良
+林秋惠
+林秋菊
+林秋蓮
+林紀元
+林美如
+林美伶
+林美君
+林美吟
+林美秀
+林美怡
+林美玲
+林美珠
+林美智
+林美華
+林美慧
+林美齡
+林羿妏
+林致君
+林致穎
+林茂盛
+林英男
+林英傑
+林英銘
+林虹如
+林虹宏
+林貞
+林貞延
+林郁文
+林郁欣
+林郁芬
+林郁敏
+林郁森
+林郁雄
+林郁蘭
+林韋丞
+林韋廷
+林韋嘉
+林香君
+林倍伊
+林倩如
+林倩慧
+林修民
+林倫旭
+林原合
+林哲民
+林哲任
+林哲宏
+林哲裕
+林哲輝
+林娟如
+林娉孜
+林家弘
+林家弘
+林家生
+林家如
+林家亨
+林家勇
+林家惠
+林家暉
+林家聖
+林家禎
+林家銘
+林家慶
+林家賢
+林家蕙
+林家斌
+林容仟
+林容聖
+林展聖
+林峻暉
+林峰年
+林師群
+林庭瑋
+林恩光
+林恩霈
+林振浩
+林振暘
+林振濱
+林時新
+林晉全
+林晉畿
+林晏如
+林晏稚
+林書弘
+林書聿
+林書楷
+林書毅
+林書澤
+林桓賦
+林桂珠
+林格妃
+林泰安
+林泰維
+林浚傑
+林浩群
+林珮如
+林珮菁
+林珮儒
+林益弘
+林益如
+林益運
+林真綺
+林祐禾
+林祐榆
+林祐瑄
+林窈意
+林素如
+林素貞
+林素華
+林純如
+林純湘
+林耘德
+林耿弘
+林耿真
+林茵
+林起翎
+林軒頡
+林高源
+林偉民
+林偉彬
+林偉楨
+林偉德
+林健青
+林唯凱
+林國欣
+林國祥
+林國隆
+林國勳
+林培堯
+林婉君
+林婉婷
+林婉瑜
+林崇宇
+林崇毅
+林康寧
+林啟人
+林啟航
+林啟豐
+林敏裕
+林梅隴
+林清吉
+林清雲
+林淑君
+林淑芬
+林淑玲
+林淑貞
+林淑娟
+林淑娥
+林淑梅
+林淑媛
+林淑惠
+林淑萍
+林淑華
+林淑雯
+林淑儀
+林淑錚
+林涵瑜
+林盛傑
+林莘怡
+林荷芳
+林雪萍
+林傑聖
+林創
+林勝傑
+林博隆
+林婷
+林富美
+林惠文
+林惠怡
+林惠美
+林惠敏
+林惠萍
+林惠雯
+林惠琇
+林敦煌
+林景民
+林景雰
+林智能
+林智清
+林智業
+林期
+林森田
+林港貴
+林湘惠
+林湲舒
+林琦國
+林登山
+林紫菁
+林舒慧
+林華一
+林視尊
+林詠翔
+林超
+林逸昀
+林逸峰
+林逸菁
+林逸儒
+林進益
+林鈞陶
+林雁敏
+林雅君
+林雅芬
+林雅玲
+林雅倫
+林雅淳
+林雅博
+林雅惠
+林雅琪
+林雅萍
+林雅華
+林雅雯
+林雅慧
+林雅慧
+林雅謙
+林雯宣
+林雲正
+林順安
+林順興
+林勤淙
+林嵩山
+林意倫
+林意騰
+林愛惠
+林敬文
+林敬淵
+林敬翔
+林新凡
+林新發
+林暉皓
+林楠棋
+林殿一
+林毓珊
+林毓超
+林源河
+林照男
+林煜庭
+林煌軒
+林煥欽
+林瑞明
+林瑞家
+林瑞雪
+林瑞德
+林瑞蘭
+林瑜莉
+林盟傑
+林祺勛
+林稚揚
+林經維
+林義峰
+林義傑
+林義智
+林義雄
+林群峰
+林群耀
+林聖怡
+林聖恩
+林聖傑
+林聖智
+林聖鈞
+林聖耀
+林葦萍
+林裕昕
+林裕堅
+林裕勝
+林裕舜
+林詩凡
+林詩倩
+林詩淵
+林詩雯
+林詩苹
+林運浩
+林鉉智
+林雍翔
+林靖修
+林頌博
+林鼎植
+林嘉禾
+林嘉信
+林嘉珍
+林嘉偉
+林嘉琪
+林嘉群
+林嘉慧
+林嘉鴻
+林摑彥
+林榮欽
+林漢
+林漢斌
+林睿暘
+林碧惠
+林碩儒
+林精湛
+林維珊
+林維莉
+林翠萍
+林蓓羚
+林豪彥
+林銘洲
+林銘煌
+林銘熛
+林鳳珍
+林齊蔚
+林儀虹
+林增威
+林廣義
+林德晉
+林慶昇
+林慶蓉
+林慧君
+林慧怡
+林慧珊
+林慧美
+林慧珠
+林慧淳
+林慧萍
+林慧華
+林慧雯
+林慧麗
+林憬良
+林澄澤
+林瑩芳
+林瑾蘭
+林蔚玲
+林衛聖
+林賢得
+林適之
+林儒民
+林學隆
+林憲政
+林憶淳
+林曉君
+林曉芳
+林曉玲
+林曉婷
+林曉華
+林曉嘉
+林曉娸
+林澤義
+林燕梅
+林璟
+林穎
+林穎莉
+林穎聰
+林興釗
+林蕙淇
+林豫亭
+林錦伶
+林錦隆
+林錦鴻
+林靜吟
+林靜宜
+林靜怡
+林靜怡
+林靜芬
+林靜雯
+林靜儀
+林龍生
+林懋州
+林聰仁
+林謙妙
+林駿逸
+林鴻君
+林鴻彬
+林鴻達
+林鴻錡
+林禮強
+林豐舜
+林瀛文
+林瓊芳
+林韻娟
+林麗君
+林麗美
+林麗珠
+林麗華
+林麗蓉
+林寶秀
+林繼平
+林耀南
+林藹文
+林巍龍
+林懿君
+林麟
+林夆賓
+林芊亨
+林旻逸
+林炅嶔
+林姝均
+林昶安
+林珈妤
+林倬世
+林紓瑋
+林琇雯
+林棨任
+林琮閔
+林琬瑜
+林暐庭
+林煒鴻
+林瑋竣
+林筱玲
+林筱菁
+林萩燕
+林鈺庭
+林鈺凱
+林鈺慧
+林璇怡
+林霙真
+林驧
+武良文
+武敬和
+祁義國
+花羽薇
+花雅斐
+初若凡
+邵文泰
+邵志豐
+邵奕鈞
+邵郁惠
+邵勝添
+邵愛玟
+邵懷德
+邱一真
+邱于倩
+邱千綺
+邱士恭
+邱大剛
+邱子楓
+邱小嫚
+邱仁傑
+邱天宏
+邱文玉
+邱文柏
+邱文欽
+邱文鴻
+邱世民
+邱仕傑
+邱幼媚
+邱正祥
+邱永嘉
+邱玉玲
+邱立國
+邱仲韻
+邱名仕
+邱安台
+邱有諒
+邱君清
+邱志光
+邱志強
+邱志斌
+邱秀英
+邱秀靜
+邱良毅
+邱佳松
+邱佳潁
+邱孟月
+邱定邦
+邱延齡
+邱怡喬
+邱怡禎
+邱昌裕
+邱明琪
+邱欣怡
+邱泓彰
+邱芳宜
+邱金生
+邱信益
+邱信輝
+邱俊昌
+邱俊智
+邱俊榮
+邱俊霖
+邱冠瑜
+邱品華
+邱垂章
+邱奕明
+邱奕睿
+邱姿惠
+邱建中
+邱建誠
+邱建鋐
+邱彥瑛
+邱思嘉
+邱政湧
+邱昭欽
+邱昱臻
+邱柏瑜
+邱柏霖
+邱珀祥
+邱盈棠
+邱紀華
+邱美惠
+邱美慧
+邱致穎
+邱軍浩
+邱郁淑
+邱重憲
+邱哲琳
+邱家賢
+邱振峰
+邱桂鈴
+邱浩彰
+邱珮綺
+邱純瑋
+邱偉倫
+邱健雄
+邱國恭
+邱國潔
+邱培瑜
+邱婉嬅
+邱啟翔
+邱敏蕙
+邱清龍
+邱淑娟
+邱淑琴
+邱淑慧
+邱紹溢
+邱莉婷
+邱凱
+邱創儉
+邱富源
+邱惠娥
+邱惠詩
+邱景萍
+邱智傑
+邱湘雲
+邱結
+邱詠淳
+邱逸群
+邱雅芬
+邱雅莉
+邱雅雯
+邱雅茜
+邱圓惠
+邱敬雯
+邱毓玲
+邱煥文
+邱瑞梅
+邱盟琇
+邱聖文
+邱聖斌
+邱詩淵
+邱詩琁
+邱靖雯
+邱嘉傑
+邱嘉慧
+邱碧施
+邱維婉
+邱韶瑩
+邱德凱
+邱慧如
+邱慧婷
+邱緯平
+邱曉玲
+邱樹國
+邱靜宜
+邱靜雯
+邱鍾仁
+邱豐祥
+邱瓊惠
+邱瓊慧
+邱韻寧
+邱麗英
+邱寶萱
+邱繼瑩
+邱蘊靜
+邱馨儀
+邱齡頤
+邱顯桓
+邱顯霖
+邱姵綾
+邱琬淑
+邱椿凱
+邱筱雯
+邱鈺斐
+邱瞍
+金士為
+金京榮
+金明輝
+金政諺
+金珞琳
+金勤
+金磊
+侯力維
+侯文哲
+侯正鴻
+侯如芬
+侯宏昌
+侯秀如
+侯佳典
+侯函秀
+侯岳宏
+侯昆助
+侯欣翰
+侯信宇
+侯咸仰
+侯彥伸
+侯柏青
+侯致中
+侯素雲
+侯淵銘
+侯博元
+侯景勛
+侯貴齡
+侯雅雯
+侯嘉珍
+侯慶辰
+侯靜汝
+侯麗慧
+侯霈青
+俞佳凡
+俞泊霖
+俞能方
+俞雅婷
+俞芊薈
+姜元鈞
+姜后怡
+姜宏榮
+姜佩伶
+姜明宏
+姜芝怡
+姜建銘
+姜堉潁
+姜凱傑
+姜智鈞
+姜雅婷
+姜義愷
+姜增炫
+姜樹錦
+姜禮豪
+姜旻姍
+姚又文
+姚方潔
+姚立三
+姚克鈞
+姚志憲
+姚佳慧
+姚宗樸
+姚怡蘭
+姚金源
+姚威宇
+姚盈任
+姚素蘭
+姚凱文
+姚琛富
+姚瑞賢
+姚德麟
+姚麗人
+宣志凌
+律振揚
+施大維
+施文
+施文豪
+施可隆
+施玉品
+施名玥
+施宇駿
+施百樺
+施伯宜
+施孝德
+施宏澤
+施志豪
+施秀宛
+施育瑜
+施佳君
+施佩君
+施佩華
+施孟宏
+施宜呈
+施宛直
+施怡如
+施怡鈴
+施明妍
+施杰松
+施玫君
+施雨佐
+施俊名
+施俊賢
+施奕涵
+施建宇
+施彥甫
+施政豪
+施柏如
+施皇旭
+施美瑛
+施郁蕙
+施振坤
+施素卿
+施健鴻
+施敏男
+施淑惠
+施雪姿
+施博元
+施富浩
+施惠琪
+施智勇
+施程凱
+施詠然
+施鈞倫
+施雅娟
+施雯琪
+施義滄
+施嘉琪
+施漢嶸
+施誌豪
+施慧君
+施瑾倫
+施曉雯
+施靜怡
+施瓊如
+施馨貴
+施旻宜
+施瑋瑜
+柯力豪
+柯元凱
+柯文祥
+柯世賢
+柯永忠
+柯全益
+柯伯彥
+柯宏威
+柯志明
+柯沛志
+柯良蕙
+柯佳秀
+柯佩君
+柯坤明
+柯宗伯
+柯宛君
+柯怡玟
+柯明翰
+柯欣儀
+柯金杏
+柯俊吉
+柯俊隆
+柯宣宇
+柯彥旭
+柯昭生
+柯盈如
+柯虹如
+柯泰名
+柯敏盛
+柯淑惠
+柯連田
+柯博元
+柯富議
+柯惠菱
+柯智仁
+柯棋棣
+柯閔文
+柯雅華
+柯毓萍
+柯嘉汶
+柯碧昭
+柯鳳儀
+柯憲蒼
+柯錦男
+柯瓊鎣
+柯旻良
+查慧琳
+柳如庭
+柳佩君
+柳建良
+柳茹萍
+柳棋元
+柳嘉軒
+柳鶴松
+段明宏
+段逸軒
+洪一中
+洪力壹
+洪于閔
+洪千惠
+洪千琦
+洪士育
+洪士傑
+洪大為
+洪子婷
+洪小惠
+洪元斌
+洪文明
+洪文凱
+洪文賢
+洪世昇
+洪世嘉
+洪加達
+洪正光
+洪永昌
+洪玉芳
+洪玉婷
+洪玉蒨
+洪亦潔
+洪光億
+洪名衡
+洪安俐
+洪百賢
+洪佑昇
+洪君祥
+洪宏政
+洪志生
+洪志明
+洪志雄
+洪志銘
+洪村銘
+洪秀芳
+洪秀瑩
+洪良欣
+洪依琪
+洪佳琳
+洪佩伶
+洪坤錡
+洪孟瑤
+洪宗漢
+洪宜良
+洪尚銘
+洪忠聖
+洪怡真
+洪明化
+洪明偉
+洪明龍
+洪欣昇
+洪芷漪
+洪信嘉
+洪俊雄
+洪宣竹
+洪思琪
+洪政霈
+洪柏寧
+洪秋華
+洪美萍
+洪茂雄
+洪英傑
+洪郁庭
+洪重卿
+洪家琪
+洪悅玲
+洪振益
+洪振銘
+洪根華
+洪珮芳
+洪珮綺
+洪耿智
+洪偉哲
+洪偉傑
+洪偉諭
+洪健峰
+洪曼珊
+洪國哲
+洪國惟
+洪國翔
+洪國耀
+洪培倫
+洪婉紋
+洪崇恩
+洪崑健
+洪御彗
+洪啟偉
+洪敏芳
+洪敏雄
+洪清健
+洪淑貞
+洪淑惠
+洪淑淩
+洪紹文
+洪翎賓
+洪雪芳
+洪勝凱
+洪惠文
+洪惠棋
+洪晴晴
+洪智賢
+洪琦惠
+洪菁隆
+洪菱紫
+洪隆智
+洪雅苓
+洪雅雯
+洪順男
+洪慈伶
+洪愷廷
+洪楨邦
+洪毓嬪
+洪煌凱
+洪瑞堂
+洪瑞蓉
+洪瑞鴻
+洪萬得
+洪聖恩
+洪萱鋒
+洪裕焜
+洪詩雅
+洪靖凱
+洪嘉圻
+洪嘉珊
+洪嘉琳
+洪嘉蓮
+洪嘉駿
+洪寧
+洪榮輝
+洪甄苡
+洪碩偉
+洪綺
+洪維良
+洪維澤
+洪肇彥
+洪誌強
+洪銘佐
+洪銘陽
+洪銘鍾
+洪魁禧
+洪寬泰
+洪慶銘
+洪慧玲
+洪慧萍
+洪瑩珍
+洪儒明
+洪曉嵐
+洪蕙心
+洪靜怡
+洪聲銓
+洪禮君
+洪藝菁
+洪麗姿
+洪麗鈞
+洪繼賢
+洪儷鳳
+洪劭元
+洪晢惇
+洪斌凱
+洪歆怡
+洪筱佩
+洪鈺櫻
+相孟豪
+紀人瑋
+紀文欽
+紀吉如
+紀伯璁
+紀志霖
+紀佳宜
+紀宗霖
+紀怡婷
+紀泓堯
+紀長興
+紀威羽
+紀盈州
+紀祖豪
+紀淑芳
+紀博敏
+紀智仁
+紀鈞閎
+紀順興
+紀銘坤
+紀曉恩
+紀蘭潔
+胡丁元
+胡小萍
+胡心慧
+胡文瑜
+胡世融
+胡正翰
+胡玉慧
+胡同亮
+胡成章
+胡廷威
+胡志銘
+胡育維
+胡佳禎
+胡定宇
+胡怡芳
+胡東昇
+胡芳慈
+胡金灝
+胡帝
+胡玲婉
+胡若男
+胡修瑀
+胡家榮
+胡展銘
+胡振中
+胡書綿
+胡純菁
+胡乾鋒
+胡授淳
+胡淑君
+胡淑雅
+胡凱智
+胡博硯
+胡惠婷
+胡景雯
+胡智銘
+胡竣硯
+胡貴月
+胡雅妍
+胡雅智
+胡順隆
+胡毓發
+胡瑞洙
+胡詩菁
+胡嘉真
+胡碧媜
+胡赫廷
+胡慧如
+胡憲霖
+胡靜苑
+胡瓊文
+胡耀仁
+胡懿心
+胡煒珍
+范中威
+范文政
+范世璋
+范玉萱
+范吉慶
+范均沛
+范甫宗
+范佳雯
+范明中
+范冠偉
+范姜彥如
+范姜慧怡
+范秋霞
+范郁如
+范家誠
+范振文
+范振麟
+范耕魁
+范國基
+范淑玲
+范莉苓
+范博彰
+范揚宜
+范揚騰
+范智欽
+范鈞傑
+范毓貞
+范瑞祥
+范詩漪
+范漢君
+范綱賢
+范慧如
+范曉怡
+范瀚文
+范耀聰
+范琇璇
+苗後傑
+計竹宇
+韋人瑜
+韋志鴻
+韋桂仁
+候昺辰
+倪玉龍
+倪志鴻
+倪威遠
+倪偉智
+倪淑婷
+倪瑞期
+倪慧珊
+凌世芳
+凌明德
+凌雪惠
+凌慧萍
+唐千惠
+唐文賢
+唐永興
+唐作豪
+唐邦泰
+唐明志
+唐思維
+唐英娜
+唐珮珊
+唐國忠
+唐淑芬
+唐朝緯
+唐雅燕
+唐義堯
+唐嘉羚
+唐韶霙
+唐曉微
+唐譽玫
+夏正邦
+夏良玉
+夏春香
+夏淑蓉
+夏達偉
+夏慧齡
+夏翊倫
+孫上雯
+孫士烘
+孫元俊
+孫方儀
+孫可為
+孫永信
+孫立民
+孫如彬
+孫伯中
+孫志勇
+孫育芝
+孫協裕
+孫忠凱
+孫明駿
+孫采薇
+孫建崴
+孫美英
+孫郁婷
+孫振涼
+孫珮芳
+孫偉倫
+孫國書
+孫崇哲
+孫惟正
+孫淑芬
+孫傑
+孫琦
+孫逸燕
+孫傳凱
+孫溢堂
+孫睦傑
+孫道隆
+孫嘉蔭
+孫綱
+孫豪志
+孫銘鴻
+孫慧津
+孫學儀
+孫龍翔
+孫麗娟
+孫炘宜
+孫瑀
+宮姍姍
+師宜青
+徐乙可
+徐千祐
+徐千雅
+徐士勛
+徐子平
+徐子強
+徐小萍
+徐仁乾
+徐心宜
+徐文君
+徐文益
+徐月娥
+徐世基
+徐仕泓
+徐巧凌
+徐正怡
+徐永光
+徐永鳴
+徐玉芬
+徐玉慈
+徐立達
+徐光平
+徐匡平
+徐如昇
+徐有慶
+徐艾伶
+徐克鈞
+徐宏宇
+徐志宇
+徐志偉
+徐志豪
+徐李全
+徐秀玲
+徐育慈
+徐佳如
+徐佩如
+徐佩錦
+徐宗源
+徐忠義
+徐昆羿
+徐明華
+徐明鴻
+徐松鴻
+徐欣妏
+徐知本
+徐采薇
+徐信中
+徐俊傑
+徐奕暉
+徐思維
+徐柏韜
+徐美玉
+徐美華
+徐若馨
+徐英碩
+徐郁樺
+徐家楷
+徐振洲
+徐書政
+徐浚傑
+徐珮禎
+徐偉凡
+徐偉峻
+徐偉順
+徐健順
+徐國倫
+徐國智
+徐國耀
+徐培溶
+徐婉儀
+徐崑崙
+徐從誥
+徐敏芳
+徐敏華
+徐梅凌
+徐淑娟
+徐淑嬪
+徐祥然
+徐莉真
+徐雪瓊
+徐富康
+徐惠珍
+徐掌瑛
+徐朝康
+徐舒亞
+徐詠媛
+徐進寶
+徐雅棋
+徐順宏
+徐愛婷
+徐毓良
+徐瑚鎂
+徐瑞恭
+徐瑞聰
+徐瑜敏
+徐裕彬
+徐資証
+徐靖惠
+徐嘉宏
+徐嘉琳
+徐嘉駒
+徐夢麟
+徐榮辰
+徐甄鴻
+徐福祥
+徐維揚
+徐翠遙
+徐銘佛
+徐銘謙
+徐鳳憶
+徐德賢
+徐慧心
+徐慧婷
+徐毅宏
+徐震東
+徐曉筠
+徐興淦
+徐靜儀
+徐鴻仁
+徐贊登
+徐麗珍
+徐繼政
+徐櫻芳
+徐淯
+徐菡禧
+徐瑋芬
+徐筱芸
+徐鈺綾
+徐鑫豪
+書百川
+桑怡秋
+柴學舜
+殷芷若
+殷紹閔
+殷肇陽
+浦曉鳳
+留乾焜
+祖曉鳳
+秦一平
+秦安立
+秦建瑋
+秦梓銘
+秦聖傑
+秦麗雅
+翁于琪
+翁士軒
+翁子婷
+翁文茹
+翁以哲
+翁玉娟
+翁仲賢
+翁宇駿
+翁宏霖
+翁志豪
+翁育稔
+翁佳韻
+翁宗裕
+翁明安
+翁林鋌
+翁信臺
+翁柏聖
+翁英斌
+翁振芳
+翁珮怡
+翁偉倫
+翁健緯
+翁基清
+翁崇庭
+翁啟信
+翁晨耀
+翁淑華
+翁壹姿
+翁滋珮
+翁逸軒
+翁雅惠
+翁毓翎
+翁瑞羚
+翁義宗
+翁鼎昌
+翁嘉翎
+翁夢君
+翁碧壕
+翁維良
+翁銘遜
+翁德卿
+翁曉芬
+翁靜瑜
+翁麒昌
+翁儷倩
+翁瑋娟
+翁靚晏
+荊偉政
+袁天英
+袁如岡
+袁怡茹
+袁柏偉
+袁偉倫
+袁啟鑫
+袁雅惠
+袁榮燦
+袁靜華
+記佳雯
+郝政鴻
+馬一文
+馬中驊
+馬占峰
+馬玉娟
+馬安妮
+馬志明
+馬佳伶
+馬岳宏
+馬南欣
+馬英傑
+馬珮婷
+馬國蕾
+馬淑卿
+馬智君
+馬煌坤
+馬嘉隆
+馬緒川
+馬憶婷
+馬櫻菁
+高一銘
+高千惠
+高士明
+高子淇
+高小文
+高友慧
+高文彬
+高世昌
+高主強
+高弘州
+高正國
+高玉如
+高玉馨
+高伊俊
+高合助
+高旭慶
+高至寬
+高宏銘
+高志偉
+高志魁
+高秀鈴
+高亞蘭
+高佩吟
+高妮瑋
+高宗煒
+高幸瑜
+高明
+高明瑋
+高欣潔
+高金志
+高咸實
+高彥勛
+高柏豪
+高美芳
+高英凱
+高郁凱
+高峰
+高栩
+高珮綺
+高偉倫
+高健
+高國哲
+高國寧
+高培真
+高彬原
+高啟祐
+高敏娉
+高淑芳
+高淑惠
+高笙輔
+高雪卿
+高婷
+高景怡
+高琪舒
+高詠彥
+高雅芳
+高雅腹
+高意禎
+高毓辰
+高照閔
+高瑞瑤
+高義忠
+高詩娉
+高頌清
+高嘉良
+高嘉嶼
+高彰隆
+高睿蘭
+高端玫
+高翠翎
+高銀穗
+高銘傑
+高銘琇
+高儀銘
+高慶斌
+高慧萍
+高憶如
+高靜民
+高薇薇
+高譜倫
+高麗蕙
+高顥哲
+高斌鑫
+高筱慧
+高薏涵
+商弘易
+商鳳英
+寇麗雯
+崔佑維
+崔倩苓
+崔琦民
+常欣玉
+康乃月
+康仕宗
+康宇寧
+康攸華
+康孟意
+康金鋒
+康美玲
+康家彰
+康庭瑞
+康配容
+康傑民
+康智昇
+康登傑
+康雅婷
+康稚暘
+康嘉蘭
+康曉蕙
+康麗貞
+張
+張一鴻
+張乃文
+張乃偉
+張力仁
+張力夫
+張又千
+張又牙
+張千里
+張士賢
+張子昌
+張小萍
+張中薇
+張尹馨
+張仁杰
+張仁傑
+張仁聰
+張元
+張元隆
+張元鴻
+張友
+張天鳳
+張尤子
+張心怡
+張心瑜
+張心馨
+張文育
+張文明
+張文彥
+張文玲
+張文軒
+張文欽
+張文雯
+張文榮
+張文豪
+張文樵
+張文爐
+張文騰
+張月容
+張世中
+張世岳
+張世明
+張世芬
+張世雯
+張世儒
+張世壎
+張以全
+張仕育
+張仕旻
+張加昇
+張可欣
+張央昌
+張巧玲
+張幼瑋
+張弘泰
+張必明
+張正余
+張正忠
+張正杰
+張正隆
+張正衛
+張正玗
+張永材
+張永昆
+張永俊
+張永棋
+張永勳
+張玄鴻
+張玉欣
+張玉玲
+張玉琪
+張玉蓉
+張玉旻
+張立文
+張立欣
+張立鈞
+張立緯
+張亦寧
+張仲平
+張仲銓
+張光仁
+張光偉
+張兆域
+張匡杰
+張吉豐
+張好禮
+張如瑩
+張宇竣
+張安妮
+張式良
+張旭宗
+張汎騏
+張羽潔
+張至睿
+張艾鈴
+張佑民
+張佑群
+張作成
+張伯駿
+張克偉
+張君如
+張君瑜
+張吟慈
+張妙慧
+張宋萍
+張宏春
+張宏瑞
+張宏銘
+張希聖
+張志
+張志仰
+張志宇
+張志舟
+張志明
+張志偉
+張志堅
+張志祥
+張志琳
+張志源
+張志達
+張志豪
+張志豪
+張志豪
+張志銘
+張志鴻
+張志瑄
+張沅璽
+張秀玉
+張秀珍
+張秀琪
+張秀蓉
+張育平
+張育崧
+張育菁
+張育慎
+張育誠
+張育彰
+張育綸
+張育銓
+張育瑋
+張良源
+張邑如
+張亞銜
+張佳文
+張佳音
+張佳惠
+張佳雯
+張佳蓉
+張佩帆
+張佩瑛
+張叔美
+張孟玉
+張孟婷
+張宗仁
+張宗賢
+張宜新
+張尚鈞
+張延任
+張念慈
+張怡欣
+張怡莉
+張怡慧
+張昆煌
+張明利
+張明祥
+張明照
+張明璋
+張昇欽
+張林芬
+張欣怡
+張欣蕙
+張治國
+張秉祺
+張芳菁
+張芳綾
+張芝友
+張芸慧
+張金山
+張金鳳
+張雨筑
+張信發
+張俊偉
+張俊堯
+張俊賢
+張冠華
+張姿媚
+張建邦
+張建祥
+張建豪
+張彥菁
+張思儀
+張恆瑋
+張政傑
+張昭元
+張柔明
+張洲期
+張為棟
+張玲婉
+張界聰
+張盈鴻
+張秋婷
+張紀君
+張美玲
+張美羚
+張美雯
+張美霞
+張致蒨
+張茂醒
+張英琦
+張郁芬
+張郁婷
+張香璽
+張倖碧
+張修豪
+張倫瑋
+張剛維
+張原謀
+張哲健
+張哲瑞
+張哲榕
+張哲維
+張哲銘
+張娟華
+張家明
+張家振
+張家淦
+張家棟
+張家菱
+張家源
+張家瑜
+張家群
+張家榕
+張家榮
+張家碩
+張家綺
+張家豪
+張家豪
+張家豪
+張家赫
+張家銘
+張家銘
+張家潤
+張家懷
+張家瑋
+張容菱
+張宸宗
+張峻杰
+張峻嘉
+張峻嚴
+張峰榮
+張庭源
+張庭瑋
+張恩瓊
+張振源
+張振鎰
+張晉通
+張晉豪
+張晏誠
+張晏齡
+張書航
+張書維
+張書豪
+張書銘
+張書馨
+張根源
+張桂華
+張桂鳳
+張泰青
+張浩堂
+張珮怡
+張珮琪
+張益州
+張益華
+張益維
+張祐慈
+張祐維
+張秦芸
+張素秋
+張素華
+張純益
+張純瑋
+張耿
+張耿維
+張耿崚
+張訓義
+張軒豪
+張高瑞
+張偉倫
+張偉鈞
+張健良
+張國志
+張國浩
+張國媛
+張國璽
+張堂凡
+張婉君
+張婉暄
+張崇偉
+張康虔
+張惟捷
+張啟明
+張敏芝
+張梅君
+張淳惠
+張清文
+張清凱
+張淑君
+張淑芳
+張淑芬
+張淑珍
+張淑貞
+張淑娟
+張淑茹
+張淑婷
+張淑琦
+張淑雅
+張淑嫻
+張淑謹
+張淵富
+張涵軒
+張盛綱
+張紹暉
+張莉茹
+張逢時
+張雪雲
+張凱宇
+張凱淳
+張凱嵐
+張凱琳
+張凱超
+張凱維
+張勝仁
+張勝傑
+張勝雄
+張博和
+張博勛
+張博鈞
+張喻
+張喬翔
+張壹能
+張婷韻
+張富淳
+張富禎
+張惠如
+張惠珊
+張惠娟
+張惠婷
+張惠琪
+張惠菁
+張惠雯
+張惠蘭
+張敦義
+張晴晴
+張景倫
+張景渾
+張景閎
+張智安
+張智剛
+張智清
+張智傑
+張智崴
+張智翔
+張智鈞
+張智豪
+張智謙
+張朝凱
+張朝龍
+張棋雯
+張湘怡
+張琪華
+張琦紹
+張登翔
+張皓崴
+張程順
+張紫鈴
+張翔智
+張舒琦
+張舜華
+張菁茹
+張華倩
+張詠茵
+張証荃
+張貴琳
+張逸凡
+張逸群
+張量然
+張鈞富
+張鈞貽
+張閔富
+張雁婷
+張雅姍
+張雅芬
+張雅玲
+張雅卿
+張雅敏
+張雅婷
+張雅婷
+張雅婷
+張雅婷
+張雅嵐
+張雅惠
+張雅惠
+張雅琪
+張雅琴
+張雅萍
+張雅雯
+張雅雯
+張雅鈴
+張雅瑩
+張雯茵
+張雯儀
+張順吉
+張順福
+張嗣文
+張意誠
+張慈灑
+張愷晏
+張新宏
+張毓
+張毓芬
+張毓倫
+張毓潔
+張源鑫
+張瑚珊
+張瑞君
+張瑞杰
+張瑞芸
+張瑞娟
+張瑞景
+張瑞樺
+張瑞氶
+張瑜君
+張瑜娟
+張祺昇
+張義忠
+張群朋
+張聖莉
+張裕昌
+張裕雯
+張詩怡
+張詩雯
+張資昊
+張道智
+張靖怡
+張鼎鉉
+張嘉元
+張嘉正
+張嘉宏
+張嘉欣
+張嘉芬
+張嘉玲
+張嘉玲
+張嘉哲
+張嘉晉
+張嘉真
+張嘉訓
+張嘉惠
+張嘉雄
+張嘉維
+張嘉聲
+張嘉珣
+張寧馨
+張榕容
+張榮盈
+張榮憲
+張熒珊
+張睿穎
+張碧娟
+張碩元
+張碩桓
+張福政
+張綱邑
+張綵芳
+張維全
+張維珊
+張維哲
+張維真
+張維淳
+張維潔
+張翠文
+張翠琪
+張肇樑
+張蓓萱
+張豪文
+張銀芳
+張銘宗
+張銘峰
+張銘翰
+張鳳平
+張鳳儀
+張廣浩
+張德榆
+張慶怡
+張慶豐
+張慧怡
+張慧娟
+張慧萍
+張慧箴
+張瑩珊
+張衛帆
+張適恆
+張學倫
+張憶君
+張曉昀
+張曉婷
+張曉菁
+張曉鳳
+張燕妮
+張翰文
+張醒世
+張錦婷
+張靜如
+張靜怡
+張靜茹
+張龍仁
+張環伊
+張謙達
+張鴻如
+張鴻智
+張曜銓
+張簡正偉
+張簡欣華
+張簡嘉人
+張藍尹
+張豐璸
+張懷恩
+張瓊之
+張瓊文
+張瓊文
+張瓊方
+張瓊惠
+張藝馨
+張麗君
+張麗淑
+張寶云
+張獻壬
+張繽文
+張繼昌
+張耀云
+張耀允
+張耀正
+張耀聲
+張釋文
+張馨文
+張馨文
+張騰元
+張儷薰
+張巍耀
+張譽馨
+張鶴耀
+張霽月
+張芃
+張倛
+張茜茹
+張琇閔
+張媜媜
+張琬宜
+張琬菁
+張菀倩
+張煒寧
+張瑋芸
+張瑋倫
+張瑋婷
+張筱君
+張筱雯
+張鄐憛
+張鈺彩
+張禕倫
+張璁文
+張鐙尹
+張恒中
+戚久智
+敖永龍
+曹士敏
+曹文彥
+曹世浩
+曹立行
+曹聿男
+曹志強
+曹佳安
+曹昌男
+曹欣良
+曹春文
+曹哲嘉
+曹峻昌
+曹珮怡
+曹偉茹
+曹淑媛
+曹勝豐
+曹智欣
+曹皓雲
+曹雅惠
+曹新彥
+曹嘉文
+曹維倫
+曹毅勇
+曹璽穠
+曹莨賢
+梁乃健
+梁仁華
+梁文安
+梁文賓
+梁世豪
+梁正忠
+梁玉玲
+梁任中
+梁汝舜
+梁君霙
+梁志彬
+梁志銘
+梁育華
+梁佳進
+梁怡芬
+梁東林
+梁信元
+梁俐琦
+梁彥豪
+梁炳鑄
+梁郁蓁
+梁家明
+梁家豪
+梁峻銘
+梁晉魁
+梁珮珮
+梁秦宜
+梁健忠
+梁啟玄
+梁淑娟
+梁莉娟
+梁勝銘
+梁惠婷
+梁景堯
+梁朝凱
+梁舒怡
+梁逸芬
+梁雅舒
+梁愷芸
+梁瑞軒
+梁聖昌
+梁嘉珍
+梁碧慧
+梁翠珊
+梁慧華
+梁曉維
+梁靜宜
+梁瓊丹
+梁繼仁
+梁懿德
+梁瑋真
+梅光宇
+梅雅婷
+畢志華
+盛心
+盛祥
+符肇中
+莫星宇
+莊一凡
+莊于瑩
+莊士國
+莊子凱
+莊仁宏
+莊心萍
+莊文昭
+莊文豪
+莊世杰
+莊弘任
+莊正揚
+莊永福
+莊玉麟
+莊如軒
+莊克偉
+莊志明
+莊志榮
+莊秀鈴
+莊育榕
+莊依婷
+莊佳榮
+莊佩雯
+莊坤哲
+莊孟玲
+莊孟紓
+莊宗勳
+莊官璇
+莊宜璇
+莊忠益
+莊怡軒
+莊昌曄
+莊明達
+莊東明
+莊欣哲
+莊玥嬛
+莊金靜
+莊俊傑
+莊建
+莊政憲
+莊秋子
+莊美馨
+莊英琴
+莊倉杰
+莊家昇
+莊家銘
+莊峻榕
+莊桓嘉
+莊珮鈴
+莊純純
+莊偉仁
+莊國辰
+莊培鑫
+莊啟文
+莊梨青
+莊清富
+莊淑芬
+莊淑婷
+莊淑閔
+莊淑珺
+莊莉莉
+莊凱茵
+莊勝利
+莊博清
+莊堯任
+莊富傑
+莊復貴
+莊惠茹
+莊惠萍
+莊惠蓉
+莊晴雲
+莊景琇
+莊智涵
+莊智鈞
+莊朝鈞
+莊登發
+莊善芳
+莊賀喬
+莊閔旭
+莊雅心
+莊雅玲
+莊雅婷
+莊雅惠
+莊雅萍
+莊雅雲
+莊雯雯
+莊嵩緯
+莊瑞南
+莊裕文
+莊嘉玲
+莊漢清
+莊維銘
+莊銘景
+莊慧心
+莊瑩姿
+莊樹宏
+莊蕙萍
+莊錦平
+莊靜怡
+莊濱綺
+莊曜旭
+莊蟬妃
+莊鎔璞
+莊馥綱
+莊麗足
+莊懿強
+莊捃娉
+莊斌智
+莊筱婷
+許一之
+許乃積
+許又仁
+許大容
+許仁全
+許元銘
+許壬耀
+許心盈
+許文忠
+許文厚
+許文桐
+許文華
+許文豪
+許文藍
+許日春
+許世民
+許世昌
+許世恬
+許世賢
+許加宏
+許平
+許弘毅
+許正忠
+許正誼
+許永明
+許永毅
+許玉芳
+許玉娟
+許玉嬋
+許甲
+許立群
+許仲賢
+許名世
+許宇杰
+許戎岑
+許汎穎
+許至全
+許佑銓
+許克仲
+許君豪
+許妍希
+許宏偉
+許宏德
+許志同
+許志宏
+許志崇
+許志雄
+許志維
+許志遠
+許志鵬
+許汶州
+許秀珊
+許秀蓉
+許育菁
+許育誠
+許良
+許貝如
+許佳政
+許佳雯
+許佩茹
+許卓塵
+許孟翔
+許宗榮
+許幸雯
+許怡珮
+許承訓
+許明傑
+許明德
+許松等
+許泓琮
+許芳慈
+許芳銘
+許芙瑲
+許金發
+許信榮
+許俊雄
+許姿怡
+許彥然
+許恬綾
+許昭元
+許柏樺
+許珊瑜
+許秋玲
+許美芳
+許美華
+許致維
+許英傑
+許郁敏
+許俸昌
+許修銘
+許原銘
+許哲瑞
+許哲彰
+許哲豪
+許哲瑋
+許家宣
+許家傑
+許家暘
+許家彰
+許家榮
+許家豪
+許家豪
+許家慶
+許宸豪
+許峻哲
+許峻瑋
+許峰銘
+許庭瑋
+許振湖
+許時嘉
+許晉熒
+許書
+許書榮
+許書銓
+許根宜
+許栓豪
+許浩瑋
+許珮嘉
+許益軒
+許祐萊
+許素菁
+許純瑜
+許耿豪
+許財得
+許偉忠
+許國安
+許國賢
+許婉茹
+許彩真
+許啟揚
+許梅菁
+許淳琇
+許清楓
+許淑芬
+許淑貞
+許淑茹
+許淑惠
+許淑華
+許淑蓮
+許盛昌
+許莉莉
+許凱惇
+許凱嘉
+許勝勛
+許博為
+許博森
+許堡如
+許富忠
+許富雄
+許惠如
+許惠珍
+許惠茹
+許惠琳
+許惠雯
+許惠瀅
+許晴斐
+許景鈞
+許智玲
+許智惟
+許智凱
+許智翔
+許智雄
+許智德
+許朝富
+許欽豪
+許登淵
+許竣能
+許善凱
+許舒茜
+許華倚
+許詠勝
+許貴彰
+許逸章
+許進興
+許閔雄
+許雅欣
+許雅玲
+許雅淑
+許雅婷
+許雅惠
+許雅惠
+許雅萍
+許雅雁
+許雅雯
+許雅慧
+許雯琳
+許順清
+許意苹
+許愷翔
+許楨祥
+許毓娟
+許源泉
+許瑞
+許瑞芸
+許瑞恩
+許瑞儀
+許瑜芳
+許稟曼
+許聖杰
+許裕億
+許詩筠
+許鈴英
+許嘉元
+許嘉芳
+許嘉倩
+許嘉珮
+許嘉惠
+許嘉穎
+許榕
+許榮隆
+許瑤馨
+許碧珠
+許碩修
+許箔涵
+許維育
+許維真
+許翠端
+許誘
+許銘仁
+許銘哲
+許銘財
+許閣文
+許鳳雅
+許慶文
+許慧君
+許慧貞
+許慕貞
+許適楓
+許憶芳
+許曉菁
+許燕萍
+許錦文
+許靜宜
+許靜雪
+許嶸仁
+許鴻文
+許薰文
+許懷文
+許瓊文
+許瓊月
+許隴祺
+許麗華
+許繽如
+許耀文
+許馨仁
+許騰元
+許躍議
+許昶華
+許琇婷
+許琮邦
+許嫈玉
+許筱萍
+許鈺茹
+許鋑鴻
+許恒達
+連仁聖
+連世和
+連佑仁
+連秀仁
+連佩泠
+連芸凰
+連建智
+連秋旺
+連容琪
+連桂宏
+連偉傑
+連婉儀
+連啟智
+連勝祥
+連雅貞
+連嘉純
+連慶豐
+連靜茹
+郭一樺
+郭乃榮
+郭人豪
+郭力瑋
+郭于禎
+郭士華
+郭士鳳
+郭子立
+郭子熒
+郭子禕
+郭仁哲
+郭天立
+郭文同
+郭文彥
+郭文惠
+郭文銓
+郭水山
+郭世蘭
+郭卉雯
+郭正宗
+郭永明
+郭玉珍
+郭立
+郭立達
+郭仲淵
+郭兆雯
+郭夙吟
+郭年真
+郭有鎮
+郭至哲
+郭君怡
+郭宏文
+郭宏駿
+郭志宏
+郭志祥
+郭杏
+郭沂村
+郭育先
+郭育昌
+郭育維
+郭邦彥
+郭佳欣
+郭佳雯
+郭佳鑫
+郭佩琦
+郭奇文
+郭孟蓉
+郭宗慶
+郭尚勳
+郭忠和
+郭怡伶
+郭怡君
+郭怡君
+郭怡秀
+郭怡鈴
+郭承儀
+郭明宗
+郭明峰
+郭明道
+郭明瑋
+郭松穎
+郭武安
+郭玟玟
+郭玥妦
+郭芳君
+郭芳雯
+郭芝睿
+郭長樹
+郭信宏
+郭保君
+郭俊宏
+郭俊男
+郭俊信
+郭俊億
+郭俐亨
+郭冠廷
+郭品秀
+郭姿伶
+郭姿欣
+郭威志
+郭建宏
+郭建廷
+郭建良
+郭建源
+郭彥君
+郭彥甫
+郭思宜
+郭政忠
+郭政璋
+郭昭安
+郭昭顯
+郭昱旻
+郭柏秀
+郭炳成
+郭玲慈
+郭盈君
+郭省萱
+郭美君
+郭美姍
+郭美善
+郭美蘭
+郭茂虔
+郭貞孍
+郭倍安
+郭倖銓
+郭凌志
+郭哲成
+郭哲瑋
+郭家宏
+郭家祥
+郭家豪
+郭家慧
+郭宸昀
+郭峰昇
+郭庭蓉
+郭振漢
+郭晏佑
+郭書豪
+郭桂鳳
+郭浩志
+郭益元
+郭祖佑
+郭素綾
+郭耿任
+郭軒
+郭國正
+郭婉玲
+郭啟沐
+郭添新
+郭淑芯
+郭淑敏
+郭淑慧
+郭逢祥
+郭勝
+郭喬年
+郭惠青
+郭惠旻
+郭智明
+郭智瑋
+郭琪媧
+郭詠珮
+郭進昌
+郭雅汝
+郭雅婷
+郭雅菱
+郭雅薇
+郭慈盈
+郭煜崇
+郭瑞欽
+郭義棠
+郭詩屏
+郭嘉偉
+郭夢竹
+郭榮慶
+郭碧娟
+郭綸益
+郭肇強
+郭銘傑
+郭慶生
+郭慧珍
+郭慧薄
+郭儒謙
+郭曉卉
+郭曉雯
+郭燕玲
+郭蕙萍
+郭錕霖
+郭靜美
+郭濟維
+郭駿
+郭曜彰
+郭鎮元
+郭瓊媛
+郭麗秋
+郭獻文
+郭蘊忱
+郭馨鎂
+郭籠慶
+郭旻瑜
+郭晟宇
+郭暐
+郭鈺芳
+郭恒妙
+陳一成
+陳一華
+陳一瑋
+陳乃釧
+陳乃榮
+陳人甄
+陳力凡
+陳又昕
+陳又聖
+陳上倫
+陳千錦
+陳士傑
+陳大同
+陳子仁
+陳子彥
+陳子鈞
+陳小萍
+陳己升
+陳中銘
+陳之諭
+陳仁宗
+陳仁傑
+陳今凡
+陳元孝
+陳元靖
+陳兮
+陳天仁
+陳天賞
+陳心怡
+陳心怡
+陳心潔
+陳文川
+陳文成
+陳文忠
+陳文亮
+陳文昭
+陳文郎
+陳文涓
+陳文彬
+陳文章
+陳文欽
+陳文華
+陳文蓉
+陳文德
+陳文學
+陳文鴻
+陳文鈺
+陳月妮
+陳水泉
+陳世宇
+陳世宗
+陳世明
+陳世杰
+陳世政
+陳世庭
+陳世偉
+陳世章
+陳世棻
+陳世盟
+陳世豪
+陳世澤
+陳世鴻
+陳主欣
+陳以靜
+陳仕芳
+陳仕源
+陳仕叡
+陳加明
+陳功霖
+陳可欣
+陳右民
+陳右諭
+陳巨鶠
+陳巧珊
+陳巧惠
+陳巧頤
+陳幼欣
+陳弘文
+陳弘欣
+陳弘訓
+陳弘毅
+陳弘鎧
+陳札培
+陳正宏
+陳正昌
+陳正芳
+陳正峰
+陳正傑
+陳正雄
+陳正豪
+陳正興
+陳民
+陳永
+陳永宗
+陳永昌
+陳永青
+陳永凌
+陳永康
+陳永富
+陳永誌
+陳永穆
+陳永珩
+陳玉文
+陳玉奇
+陳玉芳
+陳玉芬
+陳玉珊
+陳玉珍
+陳玉娟
+陳玉珠
+陳玉梅
+陳玉琳
+陳玉菁
+陳玉雲
+陳玉嬌
+陳玉璘
+陳玉馨
+陳生松
+陳石育
+陳立凡
+陳立言
+陳立欣
+陳立倫
+陳立偉
+陳立翎
+陳立維
+陳立翰
+陳亦凡
+陳伊倫
+陳仲志
+陳仲賢
+陳光甫
+陳光華
+陳兆奕
+陳吉利
+陳向榮
+陳在明
+陳如芬
+陳如蘋
+陳宇杰
+陳宇超
+陳安佑
+陳安樸
+陳旬
+陳有志
+陳江立
+陳百傑
+陳羽珊
+陳至凱
+陳亨成
+陳佑任
+陳佑庭
+陳伸田
+陳伯杰
+陳伯蒼
+陳克宇
+陳克銘
+陳君妃
+陳君航
+陳君榮
+陳君儒
+陳均碩
+陳妙楨
+陳妍伶
+陳妍秀
+陳妤蕙
+陳孝銓
+陳宏仁
+陳宏安
+陳宏昌
+陳宏波
+陳宏美
+陳宏彬
+陳宏隆
+陳宏達
+陳宏銘
+陳宏賢
+陳宏煒
+陳廷俊
+陳志山
+陳志平
+陳志仲
+陳志安
+陳志宏
+陳志沛
+陳志岳
+陳志怡
+陳志明
+陳志昇
+陳志欣
+陳志彥
+陳志浩
+陳志偉
+陳志強
+陳志祥
+陳志翔
+陳志雄
+陳志源
+陳志達
+陳志榮
+陳志維
+陳志豪
+陳志豪
+陳志豪
+陳志遠
+陳志銘
+陳志寬
+陳志穎
+陳志鴻
+陳志斌
+陳攸婷
+陳村龍
+陳沛吟
+陳汶津
+陳甸
+陳秀君
+陳秀芝
+陳秀玲
+陳秀娟
+陳秀敏
+陳秀惠
+陳秀雅
+陳秀鈴
+陳秀慧
+陳秀蘭
+陳育正
+陳育佐
+陳育奇
+陳育章
+陳育廉
+陳育詩
+陳育瑩
+陳育斌
+陳良政
+陳見秋
+陳辰揚
+陳酉茹
+陳亞鈴
+陳依辰
+陳依翔
+陳佳
+陳佳汝
+陳佳伶
+陳佳吟
+陳佳宏
+陳佳妮
+陳佳玥
+陳佳盈
+陳佳真
+陳佳惠
+陳佳琪
+陳佳琦
+陳佳雯
+陳佳群
+陳佳鳳
+陳佳慧
+陳佳璘
+陳佳駿
+陳佳怜
+陳侃婷
+陳佩君
+陳佩君
+陳佩佩
+陳佩芸
+陳佩真
+陳佩琳
+陳佩瑜
+陳佩瑩
+陳侑娥
+陳其鈞
+陳協昌
+陳和成
+陳坤佐
+陳坤傑
+陳坤鍾
+陳委承
+陳孟伶
+陳孟良
+陳孟威
+陳孟偉
+陳孟琪
+陳孟鈴
+陳孟輝
+陳季佑
+陳宗仁
+陳宗志
+陳宗盈
+陳宗雄
+陳宗旗
+陳宗緯
+陳宗龍
+陳定至
+陳宜平
+陳宜君
+陳宜秀
+陳宜姿
+陳宜培
+陳宜群
+陳宜璋
+陳宜旻
+陳宛姍
+陳尚文
+陳尚瑜
+陳居仁
+陳岳君
+陳幸足
+陳幸滿
+陳延道
+陳忠良
+陳忠義
+陳怡
+陳怡文
+陳怡卉
+陳怡冰
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡安
+陳怡竹
+陳怡伶
+陳怡伶
+陳怡伶
+陳怡利
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡廷
+陳怡秀
+陳怡昌
+陳怡芳
+陳怡珊
+陳怡香
+陳怡真
+陳怡婷
+陳怡婷
+陳怡琴
+陳怡菁
+陳怡雯
+陳怡誠
+陳怡碩
+陳怡蓉
+陳怡潔
+陳怡儒
+陳怡穎
+陳怡靜
+陳怡靜
+陳怡蘋
+陳怡蓁
+陳怡叡
+陳招誠
+陳易村
+陳昌文
+陳昌港
+陳昆杰
+陳昂佑
+陳明正
+陳明伸
+陳明宏
+陳明材
+陳明昌
+陳明政
+陳明珠
+陳明莉
+陳明婷
+陳明楷
+陳明裕
+陳明德
+陳明賢
+陳明豐
+陳昕方
+陳昇毅
+陳東華
+陳杰盛
+陳松萍
+陳欣如
+陳欣宏
+陳欣宜
+陳欣怡
+陳欣怡
+陳欣泰
+陳欣瑜
+陳欣蘭
+陳泳任
+陳法光
+陳泓翔
+陳泓霖
+陳治宇
+陳泊辰
+陳玟光
+陳玟伶
+陳玟瑛
+陳玫如
+陳玫君
+陳玫芳
+陳玫臻
+陳玥燕
+陳秉淳
+陳秉斌
+陳芳珍
+陳芳萱
+陳芝倩
+陳芝範
+陳芯怡
+陳邵鑫
+陳金良
+陳金堤
+陳金聲
+陳長慶
+陳雨新
+陳青瑜
+陳亭君
+陳亮丞
+陳亮君
+陳亮穎
+陳信伊
+陳信宇
+陳信旭
+陳信吟
+陳信宏
+陳信宏
+陳信甫
+陳信忠
+陳信智
+陳信裕
+陳信豪
+陳信學
+陳保元
+陳保彰
+陳俊仁
+陳俊文
+陳俊仰
+陳俊吉
+陳俊如
+陳俊宇
+陳俊安
+陳俊成
+陳俊旭
+陳俊佑
+陳俊呈
+陳俊宏
+陳俊宏
+陳俊宏
+陳俊宏
+陳俊廷
+陳俊男
+陳俊男
+陳俊良
+陳俊和
+陳俊杰
+陳俊郎
+陳俊彬
+陳俊傑
+陳俊凱
+陳俊華
+陳俊源
+陳俊達
+陳俊榕
+陳俊維
+陳俊豪
+陳俊銘
+陳俊銘
+陳俊璋
+陳俊樺
+陳俊諺
+陳俊龍
+陳俊瑋
+陳俐安
+陳俐秀
+陳俐潔
+陳俞仲
+陳俞妙
+陳俞靜
+陳冠夫
+陳冠仰
+陳冠如
+陳冠宇
+陳冠州
+陳冠舟
+陳冠含
+陳冠宏
+陳冠廷
+陳冠男
+陳冠傑
+陳冠嗚
+陳冠維
+陳冠銘
+陳冠樺
+陳冠妏
+陳則欽
+陳勇在
+陳勇志
+陳勇達
+陳勁吾
+陳南居
+陳厚銘
+陳品先
+陳品秀
+陳品輝
+陳奕中
+陳奕任
+陳奕帆
+陳奕利
+陳奕廷
+陳奕盈
+陳奕達
+陳奕穎
+陳奕蓁
+陳奎每
+陳姿文
+陳姿百
+陳姿利
+陳姿吟
+陳姿岐
+陳姿珊
+陳姿蓉
+陳姿穎
+陳姿璇
+陳威丞
+陳威全
+陳威宇
+陳威成
+陳威助
+陳威廷
+陳威志
+陳威志
+陳威邑
+陳威翔
+陳威豪
+陳威儒
+陳威霖
+陳宣任
+陳宣每
+陳宥任
+陳宥諭
+陳帥名
+陳建中
+陳建元
+陳建文
+陳建任
+陳建同
+陳建宇
+陳建安
+陳建州
+陳建成
+陳建旭
+陳建行
+陳建呈
+陳建宏
+陳建宏
+陳建宏
+陳建宏
+陳建廷
+陳建志
+陳建志
+陳建甫
+陳建男
+陳建良
+陳建邦
+陳建明
+陳建國
+陳建揚
+陳建華
+陳建評
+陳建源
+陳建達
+陳建榮
+陳建蓉
+陳建輔
+陳建銘
+陳建銘
+陳建璋
+陳建勳
+陳建樺
+陳建龍
+陳建烜
+陳彥夫
+陳彥文
+陳彥任
+陳彥合
+陳彥宇
+陳彥帆
+陳彥竹
+陳彥伸
+陳彥君
+陳彥壯
+陳彥宏
+陳彥宏
+陳彥廷
+陳彥甫
+陳彥良
+陳彥昌
+陳彥凱
+陳彥愷
+陳彥綸
+陳彥豪
+陳彥慰
+陳彥勳
+陳彥霖
+陳律元
+陳思先
+陳思年
+陳思妤
+陳思亮
+陳思源
+陳思蓉
+陳思樸
+陳思穎
+陳思翰
+陳思璇
+陳政文
+陳政宏
+陳政昕
+陳政堯
+陳政裕
+陳政毅
+陳政謙
+陳春妃
+陳春明
+陳春燕
+陳昭文
+陳昭宇
+陳昭伶
+陳昭志
+陳昭偉
+陳昭榮
+陳昭銘
+陳昭瑋
+陳映旭
+陳映志
+陳映儒
+陳星宇
+陳星熹
+陳昱丞
+陳昱全
+陳昱汝
+陳昱宏
+陳昱甫
+陳昱達
+陳昱樺
+陳柔安
+陳柄方
+陳柏元
+陳柏份
+陳柏宇
+陳柏州
+陳柏年
+陳柏舟
+陳柏含
+陳柏宏
+陳柏志
+陳柏沅
+陳柏岳
+陳柏峰
+陳柏凱
+陳柏瑞
+陳柏寧
+陳柏蓉
+陳柏璋
+陳柏翰
+陳柏輯
+陳柏瑋
+陳洲星
+陳炫君
+陳炳仲
+陳炳辰
+陳炳錕
+陳炯錦
+陳珊珊
+陳珍瑩
+陳皆興
+陳皇旭
+陳皇龍
+陳盈全
+陳盈如
+陳盈如
+陳盈安
+陳盈竹
+陳盈君
+陳盈孜
+陳盈杉
+陳盈貝
+陳盈婷
+陳盈綺
+陳盈璋
+陳盈諭
+陳盈璇
+陳相達
+陳祈賓
+陳禹齊
+陳科順
+陳秋方
+陳秋帆
+陳秋秀
+陳秋純
+陳秋萍
+陳秋雯
+陳秋燕
+陳紅玉
+陳紀足
+陳美云
+陳美玉
+陳美如
+陳美年
+陳美伶
+陳美君
+陳美吟
+陳美廷
+陳美秀
+陳美芝
+陳美玲
+陳美娟
+陳美純
+陳美喬
+陳美惠
+陳美琴
+陳美菱
+陳美鈴
+陳美慧
+陳美儒
+陳美靜
+陳美鈺
+陳羿谷
+陳致仰
+陳致宏
+陳致福
+陳致叡
+陳若曦
+陳茂雄
+陳英杰
+陳英振
+陳英傑
+陳英蓓
+陳英鴻
+陳苓娟
+陳虹曲
+陳虹吟
+陳虹潔
+陳衍至
+陳衍霖
+陳貞旭
+陳貞妤
+陳貞蓉
+陳貞瑋
+陳郁仁
+陳郁文
+陳郁芬
+陳郁傑
+陳郁菁
+陳郁楓
+陳重光
+陳重廷
+陳重儒
+陳韋在
+陳韋伶
+陳韋廷
+陳韋承
+陳韋豪
+陳音
+陳飛良
+陳香如
+陳香吟
+陳香婷
+陳倍甄
+陳倖翠
+陳凌硯
+陳哲民
+陳哲強
+陳哲賢
+陳家正
+陳家奇
+陳家珍
+陳家祥
+陳家湖
+陳家雯
+陳家漢
+陳家儀
+陳家慧
+陳家興
+陳家琮
+陳容萱
+陳峰州
+陳恕
+陳恩榮
+陳振東
+陳振湧
+陳振銘
+陳時盟
+陳書光
+陳書毓
+陳桂玉
+陳桂慧
+陳泰全
+陳泰伶
+陳泰峰
+陳泰銘
+陳浚欽
+陳浩茹
+陳珮云
+陳珮怡
+陳珮珮
+陳珮瑜
+陳珮瑋
+陳益裕
+陳祐悌
+陳紡
+陳素珍
+陳素娥
+陳素瑜
+陳純怡
+陳耘寬
+陳荃豪
+陳郡怡
+陳乾淦
+陳偉民
+陳偉信
+陳偉莉
+陳偉裕
+陳健上
+陳健封
+陳健霖
+陳國元
+陳國明
+陳國峰
+陳國梁
+陳國棋
+陳國榮
+陳國鋒
+陳堅民
+陳培育
+陳培端
+陳婉育
+陳婉卿
+陳婉菁
+陳婉潔
+陳崇原
+陳崑銘
+陳彩純
+陳捷
+陳啟存
+陳啟清
+陳啟銘
+陳敏星
+陳敏新
+陳梓瑋
+陳梅馨
+陳清奇
+陳清源
+陳淑
+陳淑君
+陳淑怡
+陳淑芬
+陳淑芬
+陳淑玲
+陳淑秋
+陳淑貞
+陳淑娟
+陳淑娟
+陳淑真
+陳淑羚
+陳淑惠
+陳淑萍
+陳淑雅
+陳淑鈴
+陳淑慧
+陳淑靜
+陳淵秋
+陳猛宗
+陳祥鈞
+陳紹庭
+陳莊偉
+陳莉婷
+陳許民
+陳雪芬
+陳雪華
+陳傑裕
+陳凱玲
+陳凱鈿
+陳勝如
+陳勝嘉
+陳博康
+陳喬宇
+陳婷玟
+陳富民
+陳富榮
+陳惠文
+陳惠君
+陳惠芬
+陳惠玲
+陳惠美
+陳惠娟
+陳惠婷
+陳惠萍
+陳惠雯
+陳惠雯
+陳惠齡
+陳揚哲
+陳晶晶
+陳景泰
+陳景鑫
+陳智亮
+陳智偉
+陳智陽
+陳智寬
+陳朝文
+陳朝熙
+陳棋珍
+陳湘于
+陳湘琴
+陳渝文
+陳琪雯
+陳琦琳
+陳登隆
+陳筑筠
+陳肅權
+陳舒憛
+陳菁
+陳華偉
+陳詠亮
+陳賀鈺
+陳辜亮
+陳逸平
+陳逸明
+陳逸盈
+陳逸菁
+陳逸維
+陳逸鴻
+陳進志
+陳進隆
+陳鈞屏
+陳閔隆
+陳隆斌
+陳雅君
+陳雅玫
+陳雅芬
+陳雅玲
+陳雅玲
+陳雅苓
+陳雅珮
+陳雅雪
+陳雅婷
+陳雅惠
+陳雅惠
+陳雅琪
+陳雅琴
+陳雅菁
+陳雅雯
+陳雅雯
+陳雅鈴
+陳雅慧
+陳雅韻
+陳雯
+陳雯惠
+陳雲樸
+陳順發
+陳傳興
+陳意文
+陳意雯
+陳慈雅
+陳愛甄
+陳敬文
+陳敬傑
+陳新烈
+陳業統
+陳榆涵
+陳毓良
+陳毓茹
+陳毓鈞
+陳源正
+陳溫萍
+陳照慈
+陳煦淑
+陳煥森
+陳瑞利
+陳瑞昌
+陳瑞芬
+陳瑞釧
+陳瑞瑜
+陳瑞霖
+陳瑞麟
+陳瑜詩
+陳祺富
+陳經國
+陳義忠
+陳義緯
+陳聖尹
+陳聖宜
+陳聖傑
+陳聖憲
+陳萱蔓
+陳蜂灝
+陳裕升
+陳裕廷
+陳裕智
+陳詩平
+陳詩泉
+陳詩婷
+陳詩詩
+陳詩蘋
+陳運徵
+陳達裕
+陳雍
+陳靖怡
+陳鼎仁
+陳嘉仁
+陳嘉亨
+陳嘉宏
+陳嘉怡
+陳嘉玲
+陳嘉峰
+陳嘉茵
+陳嘉淦
+陳嘉惠
+陳嘉雁
+陳嘉勤
+陳嘉德
+陳嘉瑩
+陳嘉營
+陳嘉琮
+陳旗昌
+陳榮杰
+陳榮進
+陳榮燿
+陳漢珍
+陳漢蔚
+陳瑤真
+陳碧紅
+陳碧雲
+陳碩偉
+陳福林
+陳綺華
+陳維邦
+陳維哲
+陳維儀
+陳翠婷
+陳肇鴻
+陳蓓玲
+陳誌睿
+陳銘
+陳銘泉
+陳銘強
+陳銘雄
+陳銘耀
+陳鳳玲
+陳鳳鳴
+陳儀
+陳儀珊
+陳儀潔
+陳寬如
+陳廣麟
+陳德和
+陳德堂
+陳德遠
+陳徵宗
+陳慶星
+陳慶華
+陳慶維
+陳慶翰
+陳慶鴻
+陳慧玉
+陳慧如
+陳慧君
+陳慧芝
+陳慧珊
+陳慧玲
+陳慧美
+陳慧卿
+陳慧真
+陳慧純
+陳慧敏
+陳慧萍
+陳慧雯
+陳慧蓉
+陳慧樵
+陳慧蘭
+陳慕儒
+陳毅正
+陳毅鴻
+陳潔音
+陳瑩芳
+陳瑩蓉
+陳瑩瑄
+陳緯恩
+陳蔚青
+陳誼芳
+陳賢典
+陳輝吉
+陳震宇
+陳黎桂
+陳學明
+陳憲仁
+陳憲儀
+陳憶雯
+陳曉姍
+陳曉青
+陳曉風
+陳曉嵐
+陳曉菁
+陳曉筠
+陳曉慧
+陳曉麗
+陳樹年
+陳澤珊
+陳燕伶
+陳燕菁
+陳燕怜
+陳穎君
+陳穎祥
+陳穎慧
+陳穆蓉
+陳翰璋
+陳蕙芳
+陳蕙苹
+陳錫華
+陳錦秀
+陳錦堂
+陳錦慧
+陳錦鴻
+陳靜如
+陳靜宜
+陳靜怡
+陳靜怡
+陳靜怡
+陳靜芳
+陳靜淑
+陳靜寧
+陳靜儀
+陳靜慧
+陳靜賢
+陳龍生
+陳龍寬
+陳曙東
+陳聰仁
+陳臆仁
+陳薇
+陳薇如
+陳謙毅
+陳駿揚
+陳鴻文
+陳鴻志
+陳鴻清
+陳鴻裕
+陳鴻霖
+陳璿如
+陳豐振
+陳懷哲
+陳璽爭
+陳瓊淇
+陳瓊樺
+陳藝心
+陳贊中
+陳鏗任
+陳韻夙
+陳韻如
+陳韻如
+陳韻如
+陳韻竹
+陳韻婷
+陳韻靜
+陳鵬禾
+陳麒元
+陳麒全
+陳麗文
+陳麗如
+陳麗宇
+陳麗而
+陳麗芬
+陳麗卿
+陳麗珠
+陳麗婷
+陳麗萍
+陳麗雯
+陳麗蓮
+陳寶玉
+陳寶蓮
+陳耀仁
+陳耀笙
+陳馨怡
+陳儷文
+陳櫻容
+陳譽齡
+陳鶴中
+陳懿映
+陳艷鈴
+陳芊秀
+陳怜君
+陳旻政
+陳玠源
+陳姮霏
+陳姵如
+陳姵吟
+陳姵瑱
+陳昶昱
+陳珈琦
+陳彧馨
+陳琇如
+陳堜
+陳琮閔
+陳琬婷
+陳琬菁
+陳椸涓
+陳瑋
+陳瑋典
+陳瑋耘
+陳瑋昶
+陳筱芳
+陳筱婷
+陳筱筠
+陳萩芸
+陳鈺玫
+陳鈺婷
+陳鈺璽
+陳銚茹
+陳霈宇
+陳薏雯
+陳瀅如
+陳瀅淑
+陳嬿因
+陳嬿伶
+陳顗文
+陳鑫麟
+陸小燕
+陸正義
+陸季宏
+陸信龍
+陸津華
+陸梅婷
+陸雲泰
+陸鳳玲
+陸淯鈴
+陶育均
+陶惟萱
+章文芝
+章佳雲
+章根源
+章翔
+章瓊方
+麥佩雯
+麥盧寶全
+傅一雄
+傅子恒
+傅文進
+傅正希
+傅光智
+傅宏斌
+傅亞凡
+傅怡芳
+傅金宏
+傅建國
+傅映先
+傅美蓉
+傅珮淇
+傅國棟
+傅啟皇
+傅淑雯
+傅斯平
+傅雅卿
+傅煌錦
+傅鉛文
+傅德政
+傅鍬淼
+傅琮
+單亦俠
+喻至善
+喬宗堯
+富康翔
+彭上吉
+彭士恒
+彭仁志
+彭及辰
+彭文宏
+彭文慧
+彭以信
+彭正良
+彭玉華
+彭伊芬
+彭如敏
+彭成傑
+彭旭初
+彭宏君
+彭志豪
+彭佳偉
+彭宗意
+彭怡蕙
+彭朋雍
+彭秉正
+彭保欣
+彭俊福
+彭冠瑛
+彭威翔
+彭建榮
+彭律凡
+彭柏威
+彭秋萍
+彭若慈
+彭郁仁
+彭哲仁
+彭浩倫
+彭偉君
+彭國峰
+彭崇信
+彭啟鈞
+彭淑珍
+彭盛
+彭雪琦
+彭喜浩
+彭晶聲
+彭滋萍
+彭舒彥
+彭開明
+彭雅絹
+彭愛蘋
+彭瑞苓
+彭聖萍
+彭嘉君
+彭榮桂
+彭銘淇
+彭慧如
+彭賢一
+彭曉琪
+彭錦炫
+彭駿洁
+彭麗慧
+彭馨慧
+彭瑋彥
+彭頎蘋
+景雨秋
+曾凡哲
+曾于慈
+曾千豪
+曾士軒
+曾士恒
+曾子庭
+曾小玲
+曾仁佑
+曾元志
+曾孔鈺
+曾文
+曾文忠
+曾文彬
+曾文慧
+曾文顗
+曾世煌
+曾令瑜
+曾平誥
+曾正耀
+曾玉如
+曾玉菁
+曾立德
+曾仲盟
+曾吉宏
+曾如君
+曾安琪
+曾羽嶺
+曾君豪
+曾志玄
+曾志傑
+曾志麟
+曾秀梅
+曾育菁
+曾佳玲
+曾佳瑱
+曾季歆
+曾尚志
+曾怡娟
+曾怡嘉
+曾承志
+曾明德
+曾泓霖
+曾芝蘭
+曾信傑
+曾俊彥
+曾俊智
+曾俊豪
+曾俊瑋
+曾冠樺
+曾品彰
+曾姿綺
+曾威諭
+曾建和
+曾建博
+曾建榮
+曾建霖
+曾彥閔
+曾彥翰
+曾思維
+曾政豪
+曾昭翔
+曾映齡
+曾柏涵
+曾柏興
+曾皇龍
+曾秋敏
+曾美怡
+曾美華
+曾美齡
+曾英峰
+曾郁文
+曾郁穎
+曾家振
+曾展其
+曾書慧
+曾珮琳
+曾素鈴
+曾軒彬
+曾偉翔
+曾健逢
+曾國志
+曾國書
+曾國裕
+曾國鋆
+曾婉惠
+曾庸哲
+曾啟強
+曾梅玉
+曾淑芳
+曾淑敏
+曾淑萍
+曾涵副
+曾祥達
+曾貫智
+曾凱悌
+曾博彥
+曾富鈺
+曾惠玲
+曾惠雯
+曾斐紅
+曾智弘
+曾智祺
+曾湘雲
+曾舒平
+曾華齡
+曾貴禎
+曾鈞鼎
+曾雅青
+曾雅惠
+曾雅鉉
+曾雲沐
+曾意文
+曾慈惠
+曾暉洸
+曾溥元
+曾煥傑
+曾瑞晃
+曾瑛琳
+曾筠凊
+曾聖然
+曾裕凱
+曾詩翰
+曾靖娟
+曾鼎元
+曾嘉英
+曾榮
+曾碧蓮
+曾維群
+曾銘銜
+曾德龍
+曾慶瑄
+曾慧真
+曾澄堉
+曾憲忠
+曾曉琪
+曾蕙菁
+曾靜怡
+曾繁青
+曾鴻家
+曾懷賢
+曾瓊慧
+曾韻真
+曾麗娟
+曾寶磁
+曾繼增
+曾耀賢
+曾馨儀
+曾齡慧
+曾郅絜
+曾琮彥
+曾暐清
+曾筱婷
+曾鈺芬
+曾瞍
+游力行
+游士漢
+游大緯
+游之嫻
+游文志
+游文聰
+游世斌
+游本威
+游玉姿
+游兆君
+游君苹
+游志偉
+游李雄
+游亞俐
+游佳敏
+游佩勳
+游宗憲
+游宜群
+游怡祥
+游昌翰
+游明儀
+游欣
+游青霏
+游奕霖
+游政璋
+游秋怡
+游英如
+游娟娟
+游家豪
+游恩政
+游珮筠
+游高杰
+游婉青
+游啟輝
+游淑如
+游淑惠
+游祥杰
+游凱媜
+游喬智
+游惠玲
+游景翔
+游智超
+游朝舜
+游竣盛
+游舜傑
+游進富
+游雅芳
+游雅婷
+游雅筠
+游瑞蓮
+游裕德
+游榮華
+游慶芳
+游輝祥
+游曉芸
+游錫宗
+游駿偉
+游鎮邦
+游獻群
+游旻憲
+游矞皇
+湯一珊
+湯今蘭
+湯玉琴
+湯志忠
+湯佳翰
+湯岳豊
+湯治邦
+湯家豪
+湯健文
+湯淵富
+湯富棋
+湯詠瑜
+湯雅楓
+湯慶錚
+湯鴻賢
+焦信祥
+程之寧
+程文鍾
+程立輝
+程志文
+程尚則
+程秉鑫
+程奕欣
+程建翰
+程柏章
+程秋蘭
+程偉政
+程婉欣
+程淑玲
+程斐文
+程雅惠
+程詩婷
+程潔菡
+程瓊萱
+程蘊霞
+童士芬
+童弘
+童安亨
+童信和
+童美滿
+童惟新
+童湘芸
+童聖傑
+童韻如
+童瀅蓉
+舒婷婷
+華國鋒
+覃思齊
+費騏葳
+賀厚平
+賀瑞麗
+買菁華
+辜信福
+辜郁仁
+辜惠群
+辜靜怡
+閔任遠
+陽正光
+雲智勇
+須上苑
+馮允中
+馮文政
+馮永瀅
+馮佑雄
+馮佳琦
+馮長龍
+馮建筌
+馮美珊
+馮晉嘉
+馮彩娟
+馮博偉
+馮翔瑜
+馮瑞陽
+馮誌遵
+馮熾煒
+馮耀文
+黃一
+黃一倫
+黃乙上
+黃力言
+黃上芳
+黃凡維
+黃于芬
+黃于珊
+黃于哲
+黃于真
+黃于禎
+黃千芳
+黃千凌
+黃千華
+黃士
+黃士欣
+黃士原
+黃士峰
+黃士釗
+黃士嘉
+黃士豪
+黃士賢
+黃大倫
+黃子才
+黃子建
+黃子卿
+黃子軒
+黃子穆
+黃小佩
+黃小娟
+黃山峰
+黃才旺
+黃中偉
+黃之亭
+黃仁弘
+黃仁良
+黃仁柏
+黃仁璋
+黃元山
+黃元隆
+黃元駿
+黃友謙
+黃天健
+黃少雨
+黃心怡
+黃心怡
+黃心怡
+黃心儀
+黃心姮
+黃文正
+黃文孝
+黃文村
+黃文怡
+黃文信
+黃文彥
+黃文玲
+黃文益
+黃文勝
+黃文隆
+黃文祺
+黃文榮
+黃文璋
+黃文龍
+黃文麒
+黃日青
+黃月瑾
+黃世安
+黃世宜
+黃世朋
+黃世堅
+黃世湧
+黃世嘉
+黃世增
+黃世穎
+黃以喬
+黃仕達
+黃加欣
+黃可甄
+黃巧婷
+黃平宇
+黃弘吉
+黃弘毅
+黃正一
+黃正安
+黃正佩
+黃正偉
+黃正順
+黃正錕
+黃永仁
+黃永昇
+黃永智
+黃永漢
+黃汀滿
+黃玉君
+黃玉雨
+黃玉娟
+黃玉婷
+黃玉菁
+黃玉瑩
+黃玉蘭
+黃立文
+黃立芬
+黃立達
+黃立緯
+黃亦萱
+黃仲正
+黃仲煦
+黃任延
+黃光玉
+黃光滿
+黃兆敏
+黃全富
+黃吉廷
+黃名池
+黃夙慧
+黃如真
+黃如翰
+黃宇廷
+黃守田
+黃安德
+黃旭弘
+黃旭輝
+黃江瑜
+黃百燦
+黃聿君
+黃至枰
+黃至鵬
+黃伯年
+黃克任
+黃君怡
+黃妙芬
+黃孝彰
+黃宏亮
+黃宏進
+黃宏駿
+黃志仁
+黃志平
+黃志成
+黃志明
+黃志偉
+黃志強
+黃志揚
+黃志雄
+黃志嘉
+黃志豪
+黃志銘
+黃志龍
+黃杏如
+黃沛聲
+黃秀玲
+黃秀容
+黃秀華
+黃秀蓉
+黃育信
+黃良
+黃邦彥
+黃依文
+黃佳元
+黃佳春
+黃佳媛
+黃佳華
+黃佳嫻
+黃佳蕙
+黃佩俐
+黃佩萱
+黃卓君
+黃坤德
+黃孟專
+黃孟樵
+黃宗基
+黃宗賢
+黃宜玲
+黃宛貞
+黃幸儀
+黃念芹
+黃怡君
+黃怡珊
+黃怡茹
+黃怡萍
+黃怡菁
+黃怡雯
+黃怡嘉
+黃怡維
+黃怡齡
+黃承德
+黃昌鼎
+黃明志
+黃明彥
+黃明理
+黃明瑞
+黃明慧
+黃昕嵐
+黃東海
+黃松筠
+黃欣怡
+黃欣愉
+黃欣蕙
+黃河順
+黃治平
+黃玟瑾
+黃秉鈞
+黃芝華
+黃芷雲
+黃金湯
+黃金樹
+黃長澤
+黃亭萍
+黃亮凱
+黃信文
+黃信捷
+黃信棠
+黃信愷
+黃信彰
+黃信銘
+黃信穎
+黃信斌
+黃保璁
+黃俊生
+黃俊哲
+黃俊淇
+黃俊傑
+黃俊傑
+黃俊傑
+黃俊凱
+黃俊棋
+黃俊舜
+黃俊隆
+黃俊祺
+黃俊嘉
+黃俊維
+黃俊豪
+黃俊賢
+黃俊穎
+黃俊龍
+黃俊燁
+黃俞斐
+黃冠怡
+黃冠程
+黃冠雅
+黃冠賓
+黃冠龍
+黃勇慧
+黃厚盛
+黃品傑
+黃品毅
+黃奕揆
+黃奕霖
+黃姿婷
+黃姿綾
+黃威凱
+黃威銘
+黃宣凱
+黃宣穆
+黃建中
+黃建文
+黃建青
+黃建凱
+黃建智
+黃建程
+黃建鈞
+黃建源
+黃建彰
+黃建豪
+黃建銘
+黃建勳
+黃建穎
+黃建龍
+黃彥太
+黃彥強
+黃彥博
+黃彥皓
+黃彥瑜
+黃彥賓
+黃彥樵
+黃彥斌
+黃思凱
+黃思嘉
+黃思賢
+黃思瑋
+黃政原
+黃政揚
+黃政龍
+黃春堤
+黃昭仁
+黃昭智
+黃昭維
+黃映瑄
+黃昱中
+黃昱愷
+黃昱龍
+黃柏元
+黃柏強
+黃柏喬
+黃柏翔
+黃柏瑞
+黃柏綺
+黃柏璋
+黃柏翰
+黃柏禲
+黃為棟
+黃炳憲
+黃珊萍
+黃珀鐘
+黃盈惠
+黃盈彰
+黃相志
+黃秋芳
+黃秋萍
+黃秋瑛
+黃秋霞
+黃美玉
+黃美玲
+黃美娟
+黃美羚
+黃美筑
+黃美雯
+黃美蓉
+黃美燕
+黃致恆
+黃致遠
+黃若薇
+黃茂源
+黃英彥
+黃英傑
+黃英銘
+黃衍欽
+黃貞穎
+黃郁仁
+黃郁玫
+黃郁珊
+黃郁茗
+黃郁婷
+黃郁棠
+黃郁雯
+黃郁靜
+黃重凱
+黃韋琪
+黃韋勳
+黃香榕
+黃倉彥
+黃哲楓
+黃孫宇
+黃家珍
+黃家隆
+黃家緯
+黃峻崢
+黃庭鈺
+黃振甫
+黃振庭
+黃振誠
+黃振瑲
+黃書寅
+黃書鈺
+黃泰崑
+黃泰霖
+黃浩天
+黃浩鈞
+黃珮芸
+黃珮娟
+黃珮舒
+黃珮瑜
+黃益建
+黃祖賢
+黃素真
+黃純美
+黃能豐
+黃釗俊
+黃偉宙
+黃偉修
+黃偉峰
+黃偉傑
+黃偉誠
+黃偉銘
+黃健奇
+黃健晏
+黃健溢
+黃凰慈
+黃國全
+黃國芳
+黃國倫
+黃國展
+黃國晉
+黃國軒
+黃國棟
+黃國鈞
+黃國裕
+黃國榮
+黃國豪
+黃國鐘
+黃堂軒
+黃培峻
+黃培銘
+黃婉貞
+黃婉菁
+黃尉翔
+黃崇訓
+黃崇銘
+黃常樹
+黃彩銘
+黃惟聖
+黃啟宏
+黃啟修
+黃啟書
+黃啟彰
+黃敏
+黃敏修
+黃敏華
+黃敏慧
+黃梅玲
+黃添虎
+黃清泰
+黃清麟
+黃淑岑
+黃淑芬
+黃淑玲
+黃淑貞
+黃淑卿
+黃淑桃
+黃淑梅
+黃淑媛
+黃淑琪
+黃淑華
+黃淑雯
+黃淑甄
+黃淑靜
+黃淵賢
+黃皎
+黃祥恩
+黃祥斌
+黃紹萱
+黃莉
+黃莉娟
+黃莉琪
+黃莉嘉
+黃途巖
+黃雪鳳
+黃傑文
+黃凱威
+黃凱琪
+黃凱麟
+黃勝志
+黃勝裕
+黃博泰
+黃喜麟
+黃堯偉
+黃婷婷
+黃富
+黃富詳
+黃復聰
+黃惠君
+黃惠芬
+黃惠珍
+黃惠娥
+黃惠敏
+黃惠琴
+黃惠勤
+黃惠詩
+黃惠霞
+黃揚名
+黃斯駿
+黃景裕
+黃智勇
+黃智偉
+黃智康
+黃智隆
+黃智銘
+黃智瑋
+黃朝琴
+黃朝樑
+黃植懋
+黃湘巧
+黃湘婷
+黃渝芳
+黃琪婷
+黃琳鈞
+黃琦棻
+黃登鍵
+黃竣南
+黃筑鈺
+黃善暉
+黃舒彥
+黃舜忠
+黃菁薇
+黃菊英
+黃詠瑞
+黃貴堂
+黃逸
+黃逸純
+黃逸瑋
+黃鈞沁
+黃閔農
+黃雅君
+黃雅芳
+黃雅津
+黃雅玲
+黃雅卿
+黃雅淑
+黃雅雪
+黃雅惠
+黃雅琪
+黃雅琴
+黃雅萍
+黃雅雯
+黃雅萱
+黃雅鈴
+黃雅慧
+黃雅齡
+黃雯玉
+黃雯筠
+黃順吉
+黃傳圍
+黃廉智
+黃意茹
+黃意超
+黃慈嫺
+黃敬元
+黃敬斌
+黃暉文
+黃楷祺
+黃榆婷
+黃毓翎
+黃毓華
+黃源璋
+黃照凱
+黃煦雰
+黃瑟芸
+黃瑞伶
+黃瑞屏
+黃瑞祥
+黃瑞陽
+黃瑞興
+黃瑜淑
+黃盟凱
+黃祺芬
+黃筠真
+黃義君
+黃義銘
+黃群雄
+黃聖圳
+黃聖哲
+黃聖傑
+黃聖棻
+黃聖鴻
+黃裕中
+黃裕宜
+黃裕盛
+黃裕翔
+黃裕昶
+黃詩芸
+黃詩茹
+黃詩涵
+黃詩惠
+黃詩雯
+黃詩蘋
+黃道全
+黃鈴琪
+黃雋琦
+黃靖芸
+黃靖惠
+黃靖雯
+黃鼎能
+黃嘉民
+黃嘉勇
+黃嘉倫
+黃嘉雪
+黃嘉萱
+黃嘉賢
+黃榮山
+黃榮順
+黃漢光
+黃漢輝
+黃睿伸
+黃碧雲
+黃禎慶
+黃維
+黃維智
+黃肇宏
+黃遠宏
+黃銘偉
+黃銘輝
+黃魁彬
+黃儀君
+黃德秀
+黃德煒
+黃慶華
+黃慧玉
+黃慧芬
+黃慧娟
+黃慧茹
+黃慧菁
+黃慧禎
+黃澄偉
+黃蔚仁
+黃賢章
+黃震宇
+黃憲得
+黃憶菁
+黃曉佩
+黃曉音
+黃曉菱
+黃曉薇
+黃燕娥
+黃興元
+黃蕙萍
+黃錚暉
+黃錦章
+黃靜子
+黃靜宜
+黃靜怡
+黃靜莉
+黃龍一
+黃應璿
+黃聰琪
+黃薇瓊
+黃駿達
+黃鴻智
+黃禮伸
+黃薰瑩
+黃雙玉
+黃懷慶
+黃瀚德
+黃瓊妃
+黃瓊華
+黃瓊儀
+黃瓊儀
+黃瓊慧
+黃瓊慧
+黃瓊誼
+黃瓊嫺
+黃鏡生
+黃韻如
+黃韻韻
+黃鵬圖
+黃麗妃
+黃麗芬
+黃麗香
+黃麗容
+黃麗蓉
+黃麗錚
+黃寶玉
+黃寶儀
+黃寶稹
+黃獻諄
+黃繼增
+黃耀文
+黃耀俊
+黃耀德
+黃耀瑩
+黃耀輝
+黃議德
+黃鐘葦
+黃馨怡
+黃馨儀
+黃馨慧
+黃馨毅
+黃馨霈
+黃齡萱
+黃蘭玉
+黃鐵豪
+黃顯婷
+黃艷玉
+黃玠晟
+黃姵瑄
+黃昶斌
+黃勖軒
+黃琇苓
+黃翊宸
+黃棖吉
+黃琮富
+黃琬君
+黃琬婷
+黃琬雯
+黃琬瑂
+黃菀鈴
+黃暐睿
+黃瑋欣
+黃瑋寧
+黃筱芸
+黃筱喬
+黃筱雁
+黃筱蘋
+黃鈺娟
+黃鈺婷
+黃鈺婷
+黃鈺斐
+黃鈺雯
+黃鉦閔
+黃瞍
+黃薏澄
+黃謵說
+黃齠
+塗巧憶
+塗時雨
+塗媄雲
+楊
+楊人穎
+楊三賢
+楊千里
+楊千慧
+楊士弘
+楊士朋
+楊士毅
+楊士賢
+楊大毅
+楊子恆
+楊子毅
+楊子瑢
+楊小慧
+楊中孚
+楊之慧
+楊仁華
+楊介文
+楊允中
+楊心怡
+楊心德
+楊文宏
+楊文杰
+楊文媛
+楊文瑞
+楊文儀
+楊文瑋
+楊世平
+楊世凱
+楊世鵬
+楊仕馨
+楊可歆
+楊弘先
+楊本聖
+楊正彬
+楊永正
+楊永琦
+楊玉君
+楊玉鼎
+楊白鯨
+楊立群
+楊仲民
+楊兆欽
+楊妃婷
+楊守城
+楊旨祥
+楊自雄
+楊伶慧
+楊妙恩
+楊宏祥
+楊志平
+楊志能
+楊志偉
+楊志祥
+楊志雍
+楊志學
+楊沛蒔
+楊秀珠
+楊秀慧
+楊育真
+楊育儒
+楊亞琦
+楊佳欣
+楊佳展
+楊佳菁
+楊佳撰
+楊佳螢
+楊佩珊
+楊佩儒
+楊其瀚
+楊坤英
+楊奇惠
+楊孟修
+楊孟蓉
+楊孟翰
+楊宗
+楊宗倍
+楊宗堯
+楊宗儒
+楊宗穎
+楊宗翰
+楊宗烜
+楊宜文
+楊宜璋
+楊宜蓁
+楊尚訓
+楊尚融
+楊岱儒
+楊忠仁
+楊忠憲
+楊怡芳
+楊怡萍
+楊承
+楊承熹
+楊易倫
+楊昌賓
+楊昆霖
+楊明杰
+楊明純
+楊明誠
+楊明寰
+楊明禧
+楊昇樺
+楊東敏
+楊松銘
+楊欣怡
+楊欣珮
+楊欣燕
+楊泓褘
+楊秉順
+楊芳雄
+楊芸
+楊金璋
+楊長潔
+楊青峰
+楊俊宏
+楊俊輝
+楊奕昶
+楊建彥
+楊思雋
+楊政彬
+楊政勳
+楊政霖
+楊昭輝
+楊為舜
+楊秋男
+楊紀芸
+楊美玲
+楊美惠
+楊美藝
+楊苑利
+楊倩
+楊哲安
+楊哲銘
+楊家明
+楊家祺
+楊家銘
+楊家瑋
+楊恭沛
+楊振宗
+楊振漢
+楊晏菁
+楊書豪
+楊涓櫻
+楊珮君
+楊珮琦
+楊真珠
+楊素卿
+楊荐翔
+楊虔雅
+楊偉文
+楊偉琪
+楊健國
+楊國松
+楊國鼎
+楊培恩
+楊婉莉
+楊崇鑫
+楊惟白
+楊啟宏
+楊敏芳
+楊梵孛
+楊淳硯
+楊清桃
+楊淑元
+楊淑佳
+楊淑芬
+楊淑美
+楊淑敏
+楊淑惠
+楊淑萍
+楊淑雅
+楊淑慧
+楊淵勝
+楊淨芝
+楊盛斌
+楊莉芳
+楊雪雅
+楊凱仲
+楊凱傑
+楊凱鈞
+楊勝宇
+楊勝斐
+楊勛凱
+楊博宇
+楊博欽
+楊喻閔
+楊壹舒
+楊婷鈞
+楊富安
+楊富琛
+楊循婷
+楊惠宇
+楊惠真
+楊惠婷
+楊惠琳
+楊惠雯
+楊敦傑
+楊斯凱
+楊景元
+楊景堯
+楊景雯
+楊智元
+楊智宏
+楊智傑
+楊智堯
+楊智善
+楊智鈞
+楊智龍
+楊朝敏
+楊朝舜
+楊森發
+楊湧評
+楊登安
+楊皓瑋
+楊策航
+楊善惠
+楊舒帆
+楊舒媛
+楊舒雯
+楊舜欽
+楊菁芬
+楊菱雅
+楊詠菘
+楊貴媛
+楊逸莉
+楊鈞百
+楊閔翔
+楊雅玉
+楊雅芳
+楊雅倫
+楊雅淑
+楊雅婷
+楊雅婷
+楊雅嵐
+楊雅惠
+楊雅晶
+楊雅翔
+楊雅超
+楊雅雯
+楊雅雲
+楊雅茜
+楊雯惠
+楊雲翔
+楊順棋
+楊慈儀
+楊毓玲
+楊煥章
+楊瑞傑
+楊萬帆
+楊裕
+楊詩軒
+楊道忠
+楊嘉玲
+楊嘉瑜
+楊嘉豐
+楊榮吉
+楊槐駒
+楊碧雯
+楊維華
+楊趙銘
+楊銘顧
+楊德志
+楊慶隆
+楊慧玲
+楊慧瓊
+楊璋
+楊震偉
+楊憲昇
+楊曉青
+楊曉菁
+楊橋霖
+楊燕雲
+楊蕙芳
+楊蕙嘉
+楊錫憲
+楊靜如
+楊靜怡
+楊靜雯
+楊戴州
+楊爵駿
+楊駿民
+楊曜準
+楊礎遠
+楊繡綾
+楊豐全
+楊豐銘
+楊鎮遠
+楊馥誠
+楊瓊華
+楊麗冠
+楊麗琴
+楊曦琳
+楊鐘鉉
+楊靈苓
+楊茜卉
+楊琇如
+楊琇媛
+楊翊珮
+楊琬婷
+楊瑋琦
+楊蓁蓁
+楊鎧伊
+溫丈緯
+溫心嵐
+溫正龍
+溫至任
+溫秀怡
+溫宗
+溫承翰
+溫金瑞
+溫建聲
+溫若婷
+溫展華
+溫素梅
+溫培青
+溫淑怡
+溫凱
+溫智連
+溫雅清
+溫聖延
+溫銘哲
+溫曉華
+溫馥遠
+溫菘渝
+萬佳昕
+萬建明
+萬敏婉
+萬曉明
+葉丁源
+葉乃禎
+葉人賓
+葉又嘉
+葉千菊
+葉士新
+葉大葦
+葉子豪
+葉山華
+葉天將
+葉文偉
+葉文龍
+葉世民
+葉代權
+葉正聖
+葉玉玲
+葉亦盛
+葉光愉
+葉向陽
+葉如雯
+葉竹育
+葉佐駿
+葉宏傑
+葉志彥
+葉志博
+葉步旻
+葉秀梅
+葉育峰
+葉依青
+葉佳欣
+葉佳菁
+葉佳勳
+葉佩真
+葉奉杰
+葉孟堯
+葉宗智
+葉宗鑫
+葉宛軒
+葉忠欣
+葉怡君
+葉怡芳
+葉承泓
+葉昌倫
+葉明昇
+葉明旋
+葉明鑫
+葉松炫
+葉欣毓
+葉玟君
+葉芳伶
+葉芳萍
+葉芷妘
+葉長青
+葉亭志
+葉信廷
+葉俊宏
+葉俊甫
+葉俊慶
+葉俞杉
+葉冠慧
+葉奕維
+葉姿妏
+葉建君
+葉建昇
+葉彥志
+葉思儀
+葉政輝
+葉昭伶
+葉昱志
+葉柏綱
+葉玲岑
+葉秋月
+葉美娟
+葉致忠
+葉衍孜
+葉郁菁
+葉倩
+葉哲全
+葉家宇
+葉家鈴
+葉家儒
+葉峻賓
+葉振福
+葉晉嘉
+葉書瑋
+葉涓涓
+葉益昇
+葉素綾
+葉耿齊
+葉健偉
+葉國賢
+葉張建
+葉欲恒
+葉淑珍
+葉淑鈴
+葉紹任
+葉勝玄
+葉惠文
+葉惠禎
+葉智仁
+葉森渝
+葉詠晴
+葉雁甄
+葉雅婷
+葉雅雯
+葉雲鵬
+葉毓峰
+葉義松
+葉鈴珊
+葉嘉華
+葉睿哲
+葉銘昌
+葉儀芳
+葉慧欣
+葉潔恩
+葉曉芬
+葉樹開
+葉蕙芳
+葉錦鳳
+葉曙慶
+葉駿逸
+葉禮維
+葉瓊文
+葉寶壬
+葉騰遠
+葉驥
+葉玴豪
+葉琤怡
+葉懌馨
+葛世萱
+葛倩如
+董人宏
+董子青
+董巧玲
+董合恩
+董志仁
+董佳豪
+董怡君
+董芳銘
+董姿利
+董彥宏
+董秋瑾
+董修銘
+董振雄
+董能瑞
+董惠芳
+董聖緣
+董慧美
+董鴻楠
+董嶢泓
+裘元愷
+解美鈴
+詹于芳
+詹子民
+詹仁嘉
+詹文祥
+詹世傑
+詹永祥
+詹立成
+詹如鈐
+詹宏彬
+詹志鴻
+詹育雯
+詹佳振
+詹佳興
+詹佩穎
+詹孟晃
+詹宗憲
+詹宜紋
+詹忠榮
+詹昌吉
+詹明潔
+詹欣宜
+詹青艷
+詹前泰
+詹政峰
+詹美珍
+詹卿苹
+詹家銓
+詹浚昇
+詹益偉
+詹益銘
+詹茗芸
+詹婉君
+詹啟緯
+詹淑妃
+詹淑萍
+詹淑芩
+詹凱捷
+詹勝欽
+詹富智
+詹惠媛
+詹景堯
+詹智傑
+詹森
+詹翔任
+詹証富
+詹鈞維
+詹雅婷
+詹雅閔
+詹雯瑩
+詹群毅
+詹嘉璿
+詹德馨
+詹勳明
+詹穎萍
+詹璨嶸
+詹豐宇
+詹鵑年
+詹玓瑋
+詹琬渝
+資君儀
+賈治國
+賈愛玫
+賈髐憛
+鄒一仲
+鄒文隆
+鄒立彥
+鄒李昌
+鄒佳華
+鄒宗華
+鄒明原
+鄒金德
+鄒國龍
+鄒智仁
+鄒新全
+鄒維剛
+鄒靜珮
+雍敦元
+雷宜庭
+雷衍興
+雷惠琦
+雷雅菁
+雷鵬程
+廖丁逸
+廖于文
+廖千慧
+廖士堯
+廖大樟
+廖小華
+廖仁禾
+廖元利
+廖允靖
+廖文平
+廖文茹
+廖文評
+廖文甄
+廖文潔
+廖月觀
+廖仕綺
+廖本元
+廖正偉
+廖玉
+廖玉萍
+廖丞晞
+廖光輝
+廖守正
+廖伯璋
+廖含潔
+廖宏慈
+廖志民
+廖志偉
+廖志遠
+廖秀卿
+廖育良
+廖良淮
+廖佳玥
+廖佩如
+廖佩鳳
+廖宗山
+廖宜群
+廖怡玲
+廖怡景
+廖承慶
+廖明儀
+廖欣儀
+廖芳玲
+廖芝堅
+廖青松
+廖信寬
+廖俊傑
+廖俊欽
+廖冠美
+廖奕任
+廖姿毓
+廖建城
+廖建鈞
+廖彥凱
+廖恆毅
+廖春菊
+廖昱樹
+廖炳焜
+廖盈奇
+廖秋怡
+廖美玲
+廖美琳
+廖茂良
+廖英男
+廖英傑
+廖苑君
+廖述茂
+廖郁婷
+廖倩宜
+廖卿惠
+廖哲論
+廖家玲
+廖家寧
+廖家瑩
+廖家婧
+廖峻毅
+廖恩慈
+廖振良
+廖挺崴
+廖書珮
+廖桂君
+廖浚宏
+廖珮君
+廖珮玫
+廖珮愛
+廖益群
+廖素卿
+廖耕輝
+廖乾成
+廖偉成
+廖偉辰
+廖偉斯
+廖偉鴻
+廖健明
+廖健銘
+廖國宏
+廖國勛
+廖國華
+廖基宏
+廖培瑜
+廖婉利
+廖婉欣
+廖寄萍
+廖崇碩
+廖康霖
+廖惇治
+廖啟良
+廖敏汝
+廖敏玲
+廖梓茜
+廖淑君
+廖淑貞
+廖淑惠
+廖淑麗
+廖祥達
+廖貫珮
+廖章棋
+廖富田
+廖惠娟
+廖智輝
+廖琪美
+廖舒儀
+廖進平
+廖雅倩
+廖順帆
+廖楷文
+廖筠怡
+廖萱芹
+廖嗾
+廖嘉陽
+廖漢鼎
+廖維珍
+廖銘仁
+廖慶賀
+廖慧雯
+廖瑩璇
+廖憲堂
+廖曉慧
+廖錦瑜
+廖擎帆
+廖曜瑩
+廖麒閔
+廖耀東
+廖顯慶
+廖偲妤
+廖斌傑
+廖鈺銘
+漢述仁
+熊立新
+熊東增
+熊凌霆
+熊崇緯
+熊勤云
+甄慧明
+管幼仲
+管金玲
+管琪芸
+翟敦敏
+臺文照
+蒲信全
+蒲駿毅
+裴偉程
+褚心怡
+褚俊偉
+褚家德
+賓敬文
+趙士齊
+趙子維
+趙仁佑
+趙元宏
+趙友崧
+趙文忠
+趙方愷
+趙世裕
+趙必昌
+趙玉蓮
+趙安琪
+趙君杰
+趙宏鈞
+趙志豪
+趙育琳
+趙佩芬
+趙宜君
+趙怡婷
+趙明輝
+趙芷菁
+趙俊凱
+趙品彥
+趙建勝
+趙恬儀
+趙炫勛
+趙秋鳳
+趙英龍
+趙修霖
+趙家良
+趙家賢
+趙振宏
+趙桂青
+趙珮汛
+趙祐甄
+趙偉廷
+趙偉翔
+趙國志
+趙培霖
+趙崇閔
+趙敏如
+趙淑芳
+趙皎君
+趙婷完
+趙湘君
+趙鈞志
+趙瑞昌
+趙嘉敬
+趙廣元
+趙慕群
+趙樹儀
+趙龍基
+趙雙駿
+趙玹羲
+遠藤永康
+鄞豪輝
+齊雪汝
+劉乙萱
+劉乃萱
+劉人豪
+劉几萍
+劉力豪
+劉又慈
+劉上旗
+劉于菁
+劉千瑜
+劉士華
+劉士豪
+劉大榮
+劉子由
+劉子嘉
+劉子頎
+劉山豪
+劉中琪
+劉仁正
+劉仁裕
+劉元鳳
+劉少維
+劉心儀
+劉文玉
+劉文玲
+劉文勝
+劉文超
+劉文福
+劉日順
+劉世文
+劉世清
+劉世慶
+劉以筠
+劉台
+劉弘偉
+劉正河
+劉正雄
+劉永健
+劉玉文
+劉玉家
+劉玉萍
+劉玉琇
+劉立偉
+劉亦昇
+劉伊修
+劉仲涵
+劉光杰
+劉兆容
+劉全彬
+劉名娟
+劉如芳
+劉如薰
+劉宇薇
+劉安祥
+劉旭芬
+劉汝娟
+劉至安
+劉伯彥
+劉君祺
+劉孝倫
+劉宏偉
+劉廷楷
+劉志勇
+劉志浩
+劉志源
+劉志瑋
+劉沂昀
+劉秀郁
+劉秀雯
+劉育成
+劉育志
+劉育宗
+劉育洸
+劉育誠
+劉育穎
+劉邦平
+劉邦相
+劉亞芸
+劉依文
+劉佳沐
+劉佳怡
+劉佳芳
+劉佳洧
+劉佳琪
+劉佳達
+劉佳穎
+劉侃如
+劉佩青
+劉佩綾
+劉和德
+劉坤穎
+劉孟佳
+劉孟冠
+劉孟翰
+劉宗怡
+劉宗葆
+劉定宇
+劉宜昆
+劉宜婷
+劉宛如
+劉岡陵
+劉幸雪
+劉忠勳
+劉怡伶
+劉怡君
+劉怡君
+劉怡君
+劉怡和
+劉怡芬
+劉怡惠
+劉怡靜
+劉承樺
+劉昌
+劉昌誠
+劉明合
+劉明杰
+劉明哲
+劉明達
+劉明麗
+劉昇鑫
+劉果珍
+劉欣坤
+劉欣怡
+劉欣茹
+劉武浚
+劉玟成
+劉玫寧
+劉穹林
+劉芳吟
+劉芳玲
+劉芳蘭
+劉芬芳
+劉采真
+劉金鳳
+劉青蘋
+劉信宏
+劉信良
+劉信鴻
+劉俊宏
+劉俊廷
+劉俊良
+劉俊杰
+劉俊毅
+劉俊巖
+劉俐梅
+劉冠妍
+劉冠良
+劉冠顯
+劉勃彥
+劉品宜
+劉奕志
+劉姿
+劉姿吟
+劉威汗
+劉威昌
+劉建民
+劉建宏
+劉建宏
+劉建村
+劉建良
+劉建明
+劉建德
+劉建町
+劉彥君
+劉彥廷
+劉彥良
+劉彥博
+劉律明
+劉思潔
+劉恪人
+劉政勳
+劉昭如
+劉映秀
+劉昱辰
+劉柏宏
+劉柏麟
+劉為明
+劉珊妮
+劉珍佑
+劉盈如
+劉盈秀
+劉盈蘭
+劉秋成
+劉秋燕
+劉美君
+劉美侖
+劉美玲
+劉美華
+劉羿汝
+劉若謹
+劉英龍
+劉貞伶
+劉軍毅
+劉韋成
+劉倍如
+劉修明
+劉哲宇
+劉哲郎
+劉哲瑋
+劉家成
+劉家宏
+劉家昇
+劉家琳
+劉家僖
+劉家豪
+劉家鳳
+劉家馨
+劉容懿
+劉峻伶
+劉峰郡
+劉恩吉
+劉振中
+劉振豪
+劉晉育
+劉晏誠
+劉書宏
+劉根豪
+劉桐盛
+劉浚銘
+劉珮怡
+劉益伸
+劉益禎
+劉祖寧
+劉素玲
+劉純杏
+劉耕維
+劉軒宇
+劉偉立
+劉偉誠
+劉國平
+劉國棟
+劉國龍
+劉婉玲
+劉崇理
+劉康楝
+劉得光
+劉啟平
+劉敏琪
+劉淳雅
+劉淑芬
+劉淑貞
+劉淑莉
+劉淑華
+劉淑慧
+劉祥民
+劉莉燕
+劉凱茹
+劉博文
+劉富明
+劉惠怡
+劉惠紋
+劉揚銘
+劉智仁
+劉智鈞
+劉朝蓮
+劉湘琪
+劉皓寧
+劉舒慈
+劉詠薇
+劉逸竹
+劉閔結
+劉雅君
+劉雅玲
+劉雅惠
+劉雅萍
+劉雅慧
+劉雲霞
+劉勤經
+劉敬民
+劉毓波
+劉源倫
+劉瑞芳
+劉瑞豪
+劉經綸
+劉裕宏
+劉詩韻
+劉靖
+劉嘉育
+劉嘉淳
+劉嘉雯
+劉嘉樺
+劉彰
+劉榮德
+劉熙慧
+劉碩穩
+劉維泰
+劉肇鵬
+劉銘村
+劉銘輝
+劉鳳興
+劉德正
+劉德誠
+劉慶鎮
+劉慧玲
+劉慧婷
+劉慧瓏
+劉瑩娟
+劉賢熒
+劉震鴻
+劉憶
+劉曉芬
+劉曉琪
+劉曉樺
+劉樹蕙
+劉燕萍
+劉璟鋒
+劉穎蒨
+劉興家
+劉蕙瑄
+劉錦堂
+劉錦鴻
+劉靜芳
+劉靜華
+劉龍山
+劉爵維
+劉鍾霖
+劉鴻霖
+劉璧瑩
+劉鎮嘉
+劉瀚陽
+劉韻琦
+劉麗惠
+劉寶婷
+劉耀升
+劉譯聰
+劉灌輝
+劉懿慧
+劉讚嘻
+劉旻珊
+劉姵嘉
+劉挐
+劉翊邡
+劉瑋玲
+劉筱慧
+劉瀅騿
+厲斌中
+樊乃嘉
+樊修龍
+樂子駿
+歐士源
+歐世洋
+歐如程
+歐志盈
+歐邦華
+歐宗原
+歐怡秀
+歐昀修
+歐長晏
+歐俊彥
+歐建民
+歐政艷
+歐美瑩
+歐娉妦
+歐書豪
+歐淑姿
+歐逸青
+歐陽有慧
+歐陽玫
+歐陽惠如
+歐陽銘文
+歐陽忻憶
+歐榮杰
+歐穎君
+歐繕嘉
+潘
+潘允仁
+潘文華
+潘正元
+潘玉惠
+潘亦蕾
+潘成富
+潘宏宗
+潘志偉
+潘秀盈
+潘佳妤
+潘佩君
+潘宗裕
+潘延輝
+潘怡君
+潘怡瑾
+潘明楷
+潘玟樺
+潘亮如
+潘信翰
+潘俊良
+潘冠宏
+潘品潔
+潘威歷
+潘建成
+潘建彰
+潘彥蓉
+潘政緯
+潘柔考
+潘珍琪
+潘美玲
+潘述東
+潘家銘
+潘泰全
+潘能哲
+潘婉萍
+潘淑雯
+潘惠娟
+潘進益
+潘雅馨
+潘瑞香
+潘裕智
+潘睿哲
+潘儀恬
+潘慧敏
+潘儒瑩
+潘錦昌
+潘鴻銘
+潘麗萍
+潘姵如
+潘鈺柔
+滕憶雯
+練建伸
+蔣中衍
+蔣正福
+蔣汝安
+蔣沆祥
+蔣佳珊
+蔣佩餘
+蔣孟儒
+蔣宜靜
+蔣怡慧
+蔣明儒
+蔣長旻
+蔣政穎
+蔣珮泠
+蔣淑慧
+蔣萍
+蔣葦立
+蔣德才
+蔣濱州
+蔣耀毅
+蔡丁經哲
+蔡士旺
+蔡子怡
+蔡中鈞
+蔡仁偉
+蔡元正
+蔡元雄
+蔡天祺
+蔡文仁
+蔡文彥
+蔡文偉
+蔡文博
+蔡文欽
+蔡文嘉
+蔡文鴻
+蔡月珠
+蔡世杰
+蔡世鴻
+蔡巧如
+蔡弘原
+蔡正宗
+蔡正暉
+蔡永彬
+蔡永瑩
+蔡玉秋
+蔡玉菁
+蔡立芬
+蔡亦雯
+蔡仲寧
+蔡兆驊
+蔡名書
+蔡如婷
+蔡宇倫
+蔡安喬
+蔡旭曜
+蔡羽容
+蔡行真
+蔡伯鴻
+蔡君毅
+蔡宏文
+蔡宏培
+蔡廷穎
+蔡志宏
+蔡志明
+蔡志晃
+蔡志揚
+蔡志維
+蔡志鴻
+蔡沁玲
+蔡沛婷
+蔡汶鴻
+蔡秀玲
+蔡秀惠
+蔡育正
+蔡育彥
+蔡育真
+蔡育勳
+蔡貝珊
+蔡享翰
+蔡依珊
+蔡依容
+蔡依齡
+蔡佳伶
+蔡佳宏
+蔡佳良
+蔡佳欣
+蔡佳芬
+蔡佳玲
+蔡佳珍
+蔡佳容
+蔡佳真
+蔡佳航
+蔡佳琳
+蔡佳蓉
+蔡佳樺
+蔡佳穎
+蔡佳霖
+蔡佳礽
+蔡佩如
+蔡佩君
+蔡佩妤
+蔡佩芳
+蔡佩芬
+蔡佩珊
+蔡佩珊
+蔡佩玲
+蔡佩娥
+蔡佩紋
+蔡佩蓉
+蔡佩穎
+蔡佩靜
+蔡侑廷
+蔡其珮
+蔡協甫
+蔡受勳
+蔡坤佑
+蔡坤雄
+蔡坤錦
+蔡奇均
+蔡奇霖
+蔡孟君
+蔡孟育
+蔡孟芳
+蔡孟秋
+蔡孟哲
+蔡孟真
+蔡孟雄
+蔡孟儒
+蔡孟樺
+蔡孟諭
+蔡季玲
+蔡宗佑
+蔡宗志
+蔡宗玫
+蔡宗益
+蔡宗達
+蔡宗儒
+蔡宗憲
+蔡宗穎
+蔡宗翰
+蔡宗霖
+蔡宜君
+蔡宜廷
+蔡宜芳
+蔡宜珊
+蔡宜倩
+蔡宜真
+蔡宜蓉
+蔡宜霖
+蔡宜蓁
+蔡宛玲
+蔡宛諭
+蔡尚岳
+蔡尚穎
+蔡岱勳
+蔡岳書
+蔡幸如
+蔡幸恆
+蔡幸淳
+蔡弦豪
+蔡忠信
+蔡忠穎
+蔡怡君
+蔡怡萍
+蔡承昊
+蔡承璋
+蔡承翰
+蔡易亨
+蔡易陞
+蔡易憲
+蔡昌宇
+蔡昌儒
+蔡昆佑
+蔡明
+蔡明汎
+蔡明宏
+蔡明杉
+蔡明宗
+蔡明芳
+蔡明倫
+蔡明哲
+蔡明峰
+蔡明茵
+蔡明欽
+蔡明蒲
+蔡明賜
+蔡明憲
+蔡明穎
+蔡明龍
+蔡昀甫
+蔡昇伯
+蔡昇穎
+蔡東明
+蔡東穎
+蔡杰志
+蔡松柏
+蔡松霖
+蔡欣怡
+蔡欣倫
+蔡欣達
+蔡欣穎
+蔡武諺
+蔡牧勳
+蔡直勳
+蔡秉昆
+蔡秉璋
+蔡秉諭
+蔡芳洵
+蔡采芳
+蔡金峰
+蔡金龍
+蔡長榮
+蔡雨潔
+蔡青峰
+蔡信良
+蔡俊晏
+蔡俊賢
+蔡品儀
+蔡宥定
+蔡建裕
+蔡思捷
+蔡政宏
+蔡政言
+蔡政哲
+蔡政群
+蔡政勳
+蔡政翰
+蔡政龍
+蔡昭龍
+蔡柏毅
+蔡玲津
+蔡禹歆
+蔡紀源
+蔡美芝
+蔡美莉
+蔡美慧
+蔡英宗
+蔡郁君
+蔡韋志
+蔡凌鳳
+蔡娟娟
+蔡家華
+蔡容瑛
+蔡悅玟
+蔡振議
+蔡栩維
+蔡珮怡
+蔡真禕
+蔡素碧
+蔡茹茵
+蔡偉杰
+蔡國手
+蔡國聖
+蔡培譯
+蔡崇民
+蔡啟堂
+蔡添文
+蔡淑妃
+蔡淑怡
+蔡淑玲
+蔡淑真
+蔡淑惠
+蔡淑瑜
+蔡淑薇
+蔡盛勳
+蔡雪卿
+蔡勝雄
+蔡博全
+蔡喬安
+蔡富貴
+蔡惠如
+蔡惠美
+蔡惠琪
+蔡惠燕
+蔡景淑
+蔡智宏
+蔡智暐
+蔡湘怡
+蔡皓明
+蔡舒宇
+蔡菁菁
+蔡詠翔
+蔡逸珊
+蔡進昌
+蔡隆泰
+蔡雅君
+蔡雅芬
+蔡雅茹
+蔡雅惠
+蔡雅菁
+蔡雅慧
+蔡雯淇
+蔡傳德
+蔡楨瑜
+蔡毓霖
+蔡瑞文
+蔡瑞峰
+蔡瑞麒
+蔡義益
+蔡裕健
+蔡詩薏
+蔡嘉仁
+蔡嘉恆
+蔡嘉章
+蔡嘉慶
+蔡榮昌
+蔡榮賢
+蔡漢義
+蔡碧容
+蔡福晏
+蔡維玲
+蔡維蓁
+蔡裴伶
+蔡銘
+蔡銘峰
+蔡銘賢
+蔡鳳儀
+蔡徵霖
+蔡慧民
+蔡慧貞
+蔡慧萱
+蔡毅軒
+蔡賢皇
+蔡學文
+蔡憶鈴
+蔡曉然
+蔡澤銘
+蔡穎箴
+蔡翰熊
+蔡蕙婷
+蔡錦坡
+蔡靜宜
+蔡靜惠
+蔡龍儀
+蔡翼如
+蔡鴻民
+蔡鴻斌
+蔡璧光
+蔡豐文
+蔡豐杰
+蔡鎮嶽
+蔡鵑彌
+蔡瓊儀
+蔡麗芳
+蔡麗惠
+蔡獻毅
+蔡耀群
+蔡耀駒
+蔡馨儀
+蔡佶興
+蔡旻芳
+蔡旻憲
+蔡琄竹
+蔡歆怡
+蔡瑋竑
+蔡緶
+蔡鑫廷
+談昭蘭
+鄭一凡
+鄭乃佳
+鄭人元
+鄭力仁
+鄭又仁
+鄭士韋
+鄭子見
+鄭小嵐
+鄭尹斯
+鄭仁富
+鄭元孝
+鄭元瑜
+鄭友誠
+鄭心如
+鄭文正
+鄭文彬
+鄭文富
+鄭文嘉
+鄭月枝
+鄭世昌
+鄭世湘
+鄭仕鑫
+鄭巧青
+鄭弘偉
+鄭正誠
+鄭永津
+鄭玉伶
+鄭玉英
+鄭玉菁
+鄭立享
+鄭亙吟
+鄭伊真
+鄭仲宏
+鄭仲賢
+鄭光佑
+鄭光淳
+鄭兆均
+鄭先萌
+鄭吉佑
+鄭吏孜
+鄭合修
+鄭夙涵
+鄭如欣
+鄭如純
+鄭宇宏
+鄭宇淨
+鄭守東
+鄭安芸
+鄭安翔
+鄭成棠
+鄭旭盛
+鄭有財
+鄭百婷
+鄭羽晴
+鄭至剛
+鄭伯南
+鄭君達
+鄭宏明
+鄭志功
+鄭志偉
+鄭志龍
+鄭秀怡
+鄭秀娟
+鄭秀慧
+鄭育昇
+鄭貝如
+鄭佳宜
+鄭佳祥
+鄭佳儀
+鄭佩珊
+鄭其雯
+鄭孟玲
+鄭宗杰
+鄭宜芳
+鄭幸宜
+鄭怡君
+鄭怡婷
+鄭昌岳
+鄭明忠
+鄭明銓
+鄭欣如
+鄭欣榮
+鄭秉泓
+鄭芸芸
+鄭長志
+鄭俊宏
+鄭勇猛
+鄭建佳
+鄭彥達
+鄭春菊
+鄭省村
+鄭美玉
+鄭美琴
+鄭若琤
+鄭迪允
+鄭倩如
+鄭家典
+鄭家銘
+鄭振宜
+鄭書鈺
+鄭珮君
+鄭祐阡
+鄭素彬
+鄭茗聰
+鄭偉珊
+鄭國正
+鄭國祥
+鄭培聰
+鄭崇佑
+鄭惟心
+鄭啟榮
+鄭梅君
+鄭清俊
+鄭淑云
+鄭淑米
+鄭淑玲
+鄭淑婷
+鄭淑燕
+鄭淵藤
+鄭祥如
+鄭莉雯
+鄭傑元
+鄭凱仁
+鄭凱元
+鄭凱文
+鄭凱育
+鄭凱鴻
+鄭勝旭
+鄭博仁
+鄭博文
+鄭喬銘
+鄭婷文
+鄭富仁
+鄭尊孝
+鄭惠文
+鄭惠君
+鄭惠紋
+鄭惠霜
+鄭斯尹
+鄭景仁
+鄭景文
+鄭景隆
+鄭智仁
+鄭智元
+鄭智昌
+鄭智豪
+鄭朝元
+鄭朝營
+鄭植寰
+鄭湘昀
+鄭皓云
+鄭程議
+鄭絲雯
+鄭翔龍
+鄭舒蕊
+鄭詠仁
+鄭詔謙
+鄭逸嫻
+鄭閔鴻
+鄭雅云
+鄭雅友
+鄭雅文
+鄭雅妃
+鄭雅芬
+鄭雅娟
+鄭雅琪
+鄭雅甄
+鄭雅黛
+鄭雲鵬
+鄭意中
+鄭敬樺
+鄭毓齡
+鄭瑞美
+鄭瑜琳
+鄭義憲
+鄭聖賢
+鄭裕年
+鄭詩慧
+鄭嘉仁
+鄭嘉揚
+鄭嘉旻
+鄭榮娟
+鄭福和
+鄭肇心
+鄭銘泰
+鄭鳳齡
+鄭慶哲
+鄭慧芳
+鄭慧鎂
+鄭蔚蟬
+鄭憲存
+鄭曉怡
+鄭曉薇
+鄭穎銓
+鄭蕙琦
+鄭霖駿
+鄭靜芳
+鄭懋傑
+鄭謝冠
+鄭鴻源
+鄭豐嘉
+鄭麗君
+鄭獻文
+鄭旻軒
+鄭琇仁
+鄭埵
+鄭絜心
+鄭瑋隆
+鄭鈺鐘
+鄭靋
+鄧升敦
+鄧文儀
+鄧永忠
+鄧伊容
+鄧后琛
+鄧旭敦
+鄧志煌
+鄧佳玲
+鄧宜欣
+鄧明芳
+鄧金鴻
+鄧秋惠
+鄧振英
+鄧偉賢
+鄧淑玲
+鄧博仁
+鄧惠文
+鄧景龍
+鄧翔仁
+鄧雅心
+鄧順展
+鄧裕馨
+鄧福隆
+鄧震宇
+鄧穎駿
+鄧劦呈
+魯忠豪
+魯憲雲
+黎世廉
+黎宇容
+黎明倫
+黎俐均
+黎家伶
+黎婉儀
+黎煥元
+黎銘仁
+黎禮智
+盧三仁
+盧仁杰
+盧文忠
+盧文晟
+盧弘海
+盧永昇
+盧申泰
+盧吉勇
+盧呈芳
+盧志忠
+盧志融
+盧育聖
+盧佳惠
+盧叔欣
+盧定均
+盧延華
+盧怡伶
+盧怡涵
+盧承業
+盧欣宜
+盧玫妏
+盧雨涵
+盧保全
+盧俊言
+盧俊儒
+盧冠曄
+盧奎伯
+盧威霖
+盧建宏
+盧建銘
+盧思源
+盧星全
+盧柏良
+盧盈宏
+盧美如
+盧英仁
+盧韋仁
+盧家鈺
+盧祖翔
+盧婉瑜
+盧淑麗
+盧惠傑
+盧超群
+盧愷莉
+盧群育
+盧嘉振
+盧德芳
+盧慧宜
+盧輝展
+盧穎志
+盧龍生
+盧韻岑
+盧譽允
+盧筱瑩
+穆美蕙
+蕭人豪
+蕭士泰
+蕭尹貞
+蕭允泰
+蕭文欣
+蕭文筆
+蕭文魁
+蕭世民
+蕭以亮
+蕭正平
+蕭永泓
+蕭玉貞
+蕭立韋
+蕭亦維
+蕭仲志
+蕭兆琳
+蕭名沂
+蕭圭妙
+蕭如珊
+蕭宇伯
+蕭安廷
+蕭有宏
+蕭聿宏
+蕭君怡
+蕭宏裕
+蕭志羽
+蕭志豪
+蕭秀惠
+蕭育隆
+蕭佳悌
+蕭佩珊
+蕭季薇
+蕭尚文
+蕭怡芳
+蕭昆廷
+蕭欣怡
+蕭芳盈
+蕭青萍
+蕭俊賢
+蕭彥彰
+蕭柏軒
+蕭美娟
+蕭述仁
+蕭夏敏
+蕭振安
+蕭珮如
+蕭訓國
+蕭國正
+蕭國寶
+蕭崇論
+蕭敏彥
+蕭清燕
+蕭淑珍
+蕭淑穎
+蕭雪吟
+蕭凱懋
+蕭博仁
+蕭博仰
+蕭富元
+蕭惠元
+蕭惠芳
+蕭惠鄉
+蕭斐如
+蕭景聰
+蕭智梅
+蕭棋元
+蕭竣鴻
+蕭詠方
+蕭逸平
+蕭雅丹
+蕭雅文
+蕭雅莉
+蕭雯心
+蕭愛玲
+蕭煥緯
+蕭瑛旗
+蕭聖樺
+蕭詩璇
+蕭嘉琪
+蕭寧君
+蕭維倩
+蕭輔彥
+蕭銘權
+蕭慧怡
+蕭瑩真
+蕭憶蘭
+蕭翰英
+蕭靜宜
+蕭豐智
+蕭麗娟
+蕭鶴軒
+蕭琮翰
+蕭檉譁
+賴乃頌
+賴士超
+賴仁祐
+賴天鴻
+賴文英
+賴文華
+賴世昌
+賴世維
+賴可恩
+賴弘璘
+賴正野
+賴永鈴
+賴玉唐
+賴玉霜
+賴亦貞
+賴妃君
+賴旭彥
+賴伯威
+賴妙宣
+賴宏昌
+賴廷禹
+賴志昌
+賴志偉
+賴志綱
+賴杏儒
+賴秀春
+賴育廷
+賴育麟
+賴佳伶
+賴佳欣
+賴佳慧
+賴佩君
+賴其亮
+賴孟華
+賴宗誠
+賴宜佳
+賴居正
+賴怡文
+賴怡伶
+賴怡君
+賴怡欣
+賴怡樺
+賴昌彥
+賴明宏
+賴明德
+賴東延
+賴欣宜
+賴武溪
+賴玫如
+賴芳延
+賴長佑
+賴信光
+賴信誠
+賴俊兆
+賴俊宏
+賴俊杰
+賴俊達
+賴俐卉
+賴冠宏
+賴勇志
+賴奕帆
+賴姿均
+賴威均
+賴宣妤
+賴建合
+賴建佑
+賴建志
+賴建雄
+賴建融
+賴彥佐
+賴彥良
+賴彥樺
+賴思霖
+賴政寬
+賴昭光
+賴昭龍
+賴昱勛
+賴柏伸
+賴柏龍
+賴珀賢
+賴盈青
+賴科印
+賴紅霞
+賴美冠
+賴美錵
+賴茂廷
+賴虹伶
+賴軍舉
+賴郁雯
+賴韋達
+賴家弘
+賴振生
+賴浩豐
+賴秩光
+賴高志
+賴國恩
+賴基淥
+賴啟源
+賴淑怡
+賴淑貞
+賴淑萍
+賴莉雯
+賴惠君
+賴愉芳
+賴欽詮
+賴貴義
+賴隆平
+賴雅琴
+賴順振
+賴源淳
+賴義中
+賴葦帆
+賴靖宜
+賴嘉慧
+賴榮璉
+賴維廷
+賴銘相
+賴增聰
+賴慶銘
+賴慧娟
+賴潔芳
+賴鋒
+賴曉楓
+賴穎輝
+賴錦億
+賴靜璇
+賴鴻銘
+賴韻如
+賴麗
+賴麗雯
+賴芃君
+賴柊棋
+賴瑋昀
+賴霈儒
+遲尚權
+錢以恬
+錢良蕙
+錢欣宜
+錢威融
+錢郁蘋
+錢逸霖
+錢德俊
+錡惠雯
+閻惠玲
+霍莘瑜
+駱永建
+駱季平
+駱芳梧
+駱建呈
+駱衍龍
+駱嘉慶
+鮑行仁
+鮑國峰
+龍秀貞
+龍星兆
+儲于超
+應志宏
+戴乙菁
+戴大鈞
+戴元利
+戴文雄
+戴正平
+戴立人
+戴全利
+戴守正
+戴佑洲
+戴呈安
+戴宏丞
+戴志昇
+戴杏芳
+戴佳平
+戴季全
+戴怡貞
+戴明珠
+戴俊緯
+戴秋香
+戴郁芳
+戴振遠
+戴國良
+戴惟有
+戴莉
+戴森地
+戴雅如
+戴傳家
+戴瑞君
+戴群峰
+戴嘉宏
+戴嘉憲
+戴維伸
+戴增瑜
+戴賢祥
+戴靜儀
+戴忞臻
+戴薏珊
+繆信宇
+薛乃允
+薛丹桂
+薛世煌
+薛玉鋒
+薛光程
+薛如君
+薛百惠
+薛志宏
+薛依蒨
+薛幸嘉
+薛昇旭
+薛奕龍
+薛美芳
+薛展立
+薛偉伯
+薛淑靖
+薛凱文
+薛圍中
+薛景文
+薛竣綸
+薛雅萍
+薛瑞珍
+薛嘉雄
+薛蓓芳
+薛儒霙
+薛韻婷
+薛鈺真
+謝于櫻
+謝小梅
+謝仁哲
+謝元貴
+謝心雅
+謝文娟
+謝文堯
+謝文瑜
+謝文斌
+謝以欣
+謝弘亮
+謝正益
+謝永信
+謝玉珠
+謝立群
+謝光中
+謝吉豐
+謝如鴻
+謝戌嘉
+謝聿
+謝佐宜
+謝克強
+謝均毅
+謝宏忠
+謝宏緯
+謝志宏
+謝志明
+謝志偉
+謝志逸
+謝志德
+謝扶錦
+謝秀青
+謝秀蓮
+謝育娟
+謝育霖
+謝亞嵐
+謝依倫
+謝佳文
+謝佳宏
+謝佳芳
+謝佳倩
+謝佳純
+謝佳雯
+謝佳穎
+謝佳櫻
+謝佩君
+謝佩芳
+謝佩珊
+謝佩珍
+謝佩真
+謝佩蓉
+謝侑書
+謝其斌
+謝周熾
+謝坤憲
+謝孟君
+謝孟芸
+謝孟真
+謝孟樺
+謝孟芩
+謝宗佑
+謝宗容
+謝宗賢
+謝宗憲
+謝宗翰
+謝宜
+謝宜芳
+謝宜倫
+謝宜婷
+謝宜臻
+謝宛玲
+謝宛諮
+謝尚儒
+謝幸宜
+謝庚翰
+謝忠勤
+謝怡婷
+謝承達
+謝於叡
+謝易霖
+謝昌瑾
+謝明
+謝明宏
+謝明村
+謝明芳
+謝明倫
+謝明書
+謝明惠
+謝明憬
+謝明憲
+謝明翰
+謝明諴
+謝昇哲
+謝東昇
+謝東曉
+謝松憲
+謝欣宏
+謝欣怡
+謝欣釗
+謝欣霖
+謝牧阮
+謝秉容
+謝秉諺
+謝芝青
+謝金貞
+謝長原
+謝雨青
+謝青樺
+謝俊宏
+謝俞枰
+謝奕姝
+謝彥吏
+謝政男
+謝政達
+謝政翰
+謝柏舟
+謝皇翔
+謝秋燕
+謝美玲
+謝致群
+謝郁瑄
+謝家菱
+謝庭恩
+謝晉賢
+謝浩然
+謝素菱
+謝乾駿
+謝曼盈
+謝國彬
+謝婉玲
+謝啟文
+謝梓麟
+謝清洲
+謝淑芬
+謝淑娟
+謝淑鈞
+謝皎盈
+謝笠元
+謝凱偉
+謝博皓
+謝媛琪
+謝嵐屏
+謝惠芬
+謝惠萍
+謝景仁
+謝智浩
+謝植岡
+謝皓智
+謝菊蕙
+謝進忠
+謝雅如
+謝雅雪
+謝雅萍
+謝雯凱
+謝順隆
+謝毓玲
+謝瑞梅
+謝萬龍
+謝詩慧
+謝嘉珊
+謝嘉銘
+謝榮哲
+謝碧菁
+謝維仁
+謝翠環
+謝銘忠
+謝銘智
+謝鳳玲
+謝德鈞
+謝慧珍
+謝慧瓊
+謝蔚儒
+謝學綱
+謝曉嵐
+謝燕玲
+謝蕙
+謝融齊
+謝靜宜
+謝靜儀
+謝璦如
+謝鴻駿
+謝禮成
+謝鎮宇
+謝瓊文
+謝韻儒
+謝寶瑢
+謝耀養
+謝顯銘
+謝旻莉
+謝晟銘
+謝煒頻
+謝燿聰
+鍾乙民
+鍾元振
+鍾文宇
+鍾文欽
+鍾月圓
+鍾幼凌
+鍾永雄
+鍾玉惠
+鍾兆民
+鍾成奇
+鍾伯君
+鍾孝其
+鍾志宏
+鍾志豪
+鍾秀芳
+鍾育諺
+鍾依靜
+鍾佳真
+鍾佳穎
+鍾佩芸
+鍾佩婷
+鍾卓儒
+鍾孟憬
+鍾宜全
+鍾宜興
+鍾尚儒
+鍾延華
+鍾承璋
+鍾易達
+鍾明秀
+鍾明晏
+鍾明憲
+鍾昇穎
+鍾欣翰
+鍾秉諺
+鍾金璋
+鍾俊甫
+鍾政民
+鍾政錦
+鍾盈慧
+鍾美琳
+鍾郁翎
+鍾振泓
+鍾紋易
+鍾商駿
+鍾崇梅
+鍾淑芬
+鍾淑萍
+鍾凱依
+鍾惠如
+鍾智傑
+鍾絢如
+鍾逸石
+鍾雲光
+鍾源德
+鍾裕文
+鍾嘉鳳
+鍾禎元
+鍾銘智
+鍾德霖
+鍾樂吟
+鍾曉嵐
+鍾錦琳
+鍾薰嫺
+鍾鵬飛
+鍾懿華
+鍾旻圜
+鞠岱琦
+韓文豐
+韓克儉
+韓佩劭
+韓宜潔
+韓明倫
+韓相宜
+韓梅
+韓雅而
+韓嘉駿
+韓寶瑩
+叢淑華
+簡上哲
+簡士益
+簡士濠
+簡小蕙
+簡文亨
+簡文貴
+簡世裕
+簡巧婷
+簡民龍
+簡玉珍
+簡立人
+簡伊婕
+簡仰壯
+簡吉聰
+簡宇屏
+簡百應
+簡至霆
+簡伶娟
+簡君玲
+簡妤玲
+簡宏倫
+簡廷安
+簡志安
+簡志峰
+簡志雄
+簡志穎
+簡秀杏
+簡秀純
+簡貝珊
+簡佳琪
+簡佩琪
+簡宗德
+簡怡婷
+簡明雁
+簡玫玉
+簡雨蔭
+簡建一
+簡昭萸
+簡美娟
+簡虹琪
+簡家新
+簡珮雅
+簡健俊
+簡國斌
+簡啟恆
+簡淑芬
+簡淑婷
+簡莉靜
+簡博彬
+簡惠湘
+簡森乙
+簡華真
+簡雅如
+簡順立
+簡敬庭
+簡溢均
+簡瑞棻
+簡聖豪
+簡詩峰
+簡嘉宏
+簡嘉彬
+簡嘉齡
+簡漢璋
+簡禎佑
+簡維萱
+簡遠真
+簡銘辰
+簡鳳儀
+簡慧娟
+簡憶如
+簡錫淵
+簡駿貿
+簡藝峰
+簡驪潔
+簡瑋倫
+簡恒聖
+聶東南
+聶暐峻
+藍子桓
+藍元皓
+藍文孝
+藍弘偉
+藍仲偉
+藍志發
+藍怡平
+藍昕緯
+藍春發
+藍峻彬
+藍偉仁
+藍國華
+藍梓侖
+藍惠萍
+藍雅齡
+藍嘉哲
+藍慧珊
+藍黛瑩
+闕少芳
+闕吟夙
+闕明慧
+闕逢毅
+闕瀅芬
+顏士彬
+顏大福
+顏小凡
+顏月
+顏弘祥
+顏永芳
+顏玉瑋
+顏光玗
+顏如玉
+顏有男
+顏伯奇
+顏呈旭
+顏妙芳
+顏宏哲
+顏宏叡
+顏志成
+顏志揚
+顏志麟
+顏秀真
+顏良澤
+顏佳慧
+顏宗平
+顏承偉
+顏秉德
+顏奕仁
+顏秋琴
+顏若庭
+顏家祺
+顏珮嵐
+顏國書
+顏尉凱
+顏晨暐
+顏淑雲
+顏婷玲
+顏華成
+顏雅卉
+顏雯韻
+顏瑞文
+顏瑜慧
+顏聖鴻
+顏嘉成
+顏嘉琳
+顏寧佑
+顏福順
+顏銀桐
+顏鳴慶
+顏瑩鵬
+顏澤宇
+顏鴻欽
+顏獻佑
+顏鈺芸
+魏士傑
+魏子晴
+魏仁威
+魏文綺
+魏巧晴
+魏玉雯
+魏任廷
+魏名汎
+魏宇達
+魏百盛
+魏伶娟
+魏君潔
+魏孝寬
+魏岑芬
+魏志倫
+魏秀恬
+魏良佑
+魏佳卿
+魏宜寬
+魏明章
+魏俊旺
+魏春生
+魏英鎮
+魏晉一
+魏偉
+魏崇桓
+魏淑玫
+魏逢毅
+魏朝信
+魏逸玲
+魏愛津
+魏滇佑
+魏筠文
+魏鈴芝
+魏嘉良
+魏嫦妝
+魏碩穎
+魏銘漢
+魏慕帆
+魏趨吉
+魏麒容
+魏瑄誼
+龐永培
+曠婉君
+羅千雯
+羅子軒
+羅尹伶
+羅仁勇
+羅元甫
+羅允中
+羅友聲
+羅心屏
+羅文宜
+羅文彬
+羅文齊
+羅月凰
+羅世銘
+羅仕棋
+羅巧莉
+羅正邦
+羅永智
+羅玉萍
+羅亦旋
+羅仰真
+羅兆維
+羅宇任
+羅旭君
+羅至善
+羅宏一
+羅志雄
+羅秀玲
+羅亞寧
+羅佳琦
+羅宜君
+羅怡惠
+羅明章
+羅欣慈
+羅芷青
+羅俊彥
+羅彥
+羅玲玲
+羅美蓮
+羅苑榕
+羅家欣
+羅振廷
+羅泰倫
+羅珮娟
+羅素花
+羅偉哲
+羅健志
+羅唯瑄
+羅國華
+羅國暐
+羅婉娥
+羅強
+羅敏文
+羅敏儀
+羅淇文
+羅淑蓉
+羅紹文
+羅傑
+羅凱頤
+羅博俊
+羅惠方
+羅惠蘭
+羅智能
+羅紫菁
+羅華濃
+羅鈞耀
+羅雅敏
+羅雯琴
+羅毓傑
+羅瑞榮
+羅聖琳
+羅達
+羅嘉玲
+羅榮輝
+羅際川
+羅慶傑
+羅瑩棻
+羅曉威
+羅興安
+羅鴻基
+羅馨宜
+羅煒程
+譚又民
+譚光華
+譚佩嵐
+譚悅馨
+譚智仁
+譚諦
+關一心
+關志宇
+關淑雲
+嚴子筑
+嚴心元
+嚴可君
+嚴志哲
+嚴春鳳
+嚴振興
+嚴婉玲
+嚴淑菁
+嚴詠聖
+嚴維德
+嚴馥
+竇瑞霞
+藺心怡
+蘇千代
+蘇士豪
+蘇子翔
+蘇中怡
+蘇元乙
+蘇文
+蘇文娟
+蘇文輝
+蘇世庭
+蘇巧寧
+蘇正家
+蘇永傑
+蘇玉修
+蘇立凱
+蘇如蕙
+蘇竹安
+蘇君霏
+蘇宏泰
+蘇志孟
+蘇志堅
+蘇志鴻
+蘇秀玲
+蘇育弘
+蘇育俞
+蘇育瑱
+蘇佳足
+蘇佩瑜
+蘇宗一
+蘇尚瑾
+蘇怡如
+蘇怡君
+蘇怡菁
+蘇怡馨
+蘇明俊
+蘇明鴻
+蘇武龍
+蘇芳正
+蘇芳瑩
+蘇青妙
+蘇信源
+蘇俊夫
+蘇俊祥
+蘇俊銘
+蘇俞如
+蘇勇誠
+蘇奕傑
+蘇威達
+蘇建中
+蘇建志
+蘇建豪
+蘇彥熒
+蘇恆至
+蘇政謙
+蘇昭君
+蘇昱任
+蘇柏州
+蘇柏樺
+蘇珊瑩
+蘇皇原
+蘇盈穗
+蘇紀敏
+蘇美玲
+蘇致仁
+蘇英皓
+蘇貞燕
+蘇郁倫
+蘇郁雅
+蘇香琪
+蘇倉永
+蘇哲億
+蘇家
+蘇家信
+蘇家瑩
+蘇峻民
+蘇庭瑤
+蘇振銘
+蘇桓慶
+蘇浩為
+蘇益祿
+蘇窈瑱
+蘇純慧
+蘇軒民
+蘇偉誠
+蘇國典
+蘇堂豪
+蘇婉惠
+蘇敏
+蘇清安
+蘇淑婷
+蘇皎慧
+蘇莉惠
+蘇博玄
+蘇惠貞
+蘇晶新
+蘇湘怡
+蘇舜卿
+蘇逸真
+蘇雅君
+蘇雅惠
+蘇雅慧
+蘇順誠
+蘇意嵐
+蘇敬菱
+蘇毓彬
+蘇猷翔
+蘇睦仁
+蘇群傑
+蘇聖涵
+蘇裕文
+蘇詩婷
+蘇靖嵐
+蘇嘉宏
+蘇嘉鴻
+蘇碧昭
+蘇聞謹
+蘇億珍
+蘇慧文
+蘇慧娟
+蘇毅
+蘇曉如
+蘇曉芃
+蘇錦昇
+蘇靜芳
+蘇聲振
+蘇鴻儀
+蘇鵬翰
+蘇麗華
+蘇旻君
+蘇烜毅
+蘇琡評
+蘇瑋琳
+蘇豊棋
+蘇鈺菁
+鐘士欽
+鐘文秀
+鐘玉如
+鐘佳絹
+鐘盈凱
+鐘挺豪
+鐘國銘
+鐘敏愫
+鐘惠宇
+鐘順禹
+鐘碧蘭
+鐘馨誼
+饒志豪
+饒亮
+饒珮齡
+饒敬國
+黨一為
+顧文絢
+顧立蘋
+顧宗沛
+顧倩如
+顧崇德
+顧翠華
+龔于珊
+龔文穎
+龔兆祺
+龔佩君
+龔青雲
+龔彥名
+龔貞如
+龔書聖
+龔淑苗
+龔雅欣
+龔靖詒
+龔豫慧
+亓隆祥
+佘尚鴻
+佘聯斌
+邾亦南
+涂世和
+涂君蓉
+涂育榮
+涂欣宏
+涂政男
+涂振民
+涂啟原
+涂富星
+涂雅燕
+涂嘉原
+涂慧珍
+涂耀升
+粘弘吉
+粘育瑋
+粘純如
+粘聖鑫
+粘耀仁
+鄔心怡
+靳立偉
+鄺光寧
+欒季強
+芳琦
+婉婷
+銘源
+文勳
+鳳琪
+信義
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt
new file mode 100644
index 0000000..fcece28
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt
@@ -0,0 +1,22833 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,ひろし
+あきば,ひろし
+あらい,よしひろ
+あらい,ひとし
+あかがわ,えいじ
+あらき,きよみ
+あいかわ,よしひろ
+あきの,みちお
+あきやま,ひろし
+あさい,かずまさ
+あべ,きよたか
+ありが,ひろし
+あきた,ひろし
+あかつか,とる
+あらい,かずお
+あさはら,つとむ
+あつみ,けんいち
+あわや,かずや
+あさかわ,よしゆき
+あおき,ひろし
+あわず,やすお
+あきくさ,しげる
+あおやぎ,ひであき
+あじさわ,けんいち
+あいそ,としお
+あおしま,せいご
+あと,のりお
+あさの,ゆきお
+ありが,つよし
+あおき,ひとし
+あいかわ,まもる
+あきた,つとむ
+あさの,よしてる
+あさと,かずひこ
+あらき,まさはる
+あんどう,かずお
+あさかわ,まさあき
+いいだ,ひとし
+いわさわ,としあき
+いしかわ,おさむ
+いのうえ,あきら
+いしはら,よすけ
+うかじ,はつかず
+うめたに,しゅひち
+おけたに,やすし
+おすぎ,ちよかず
+おかわ,まさひこ
+かとう,よしや
+かも,そひち
+くまがい,りょへい
+こんど,ゆきお
+すぎもと,まさひろ
+はまさき,のりあき
+ちだ,ひでし
+なかむら,よしかず
+ながた,やすし
+さわむら,ひろし
+なるお,まこと
+なりた,まさき
+はせがわ,まさお
+ふじた,ひろひと
+ふじわら,よしのり
+ぶよ,さちこ
+ほり,かつひこ
+みなみむら,けんじ
+みやじま,あきひろ
+やまだ,みきひこ
+やまぐち,まさとし
+やなぎはら,まさあき
+よしの,まさし
+にいだ,あきら
+おひゃま,おさむ
+かながわ,よしのり
+きむら,しゅんじ
+つかざき,けいぞ
+かわだ,ちえこ
+あさかわ,かちこ
+しもつ,よしのぶ
+おか,ゆみこ
+おがわ,ひろこ
+たいら,けいこ
+いしの,たかこ
+きみしま,てつお
+さとう,こうじ
+やまだ,ちあき
+おた,ちより
+まえだ,まり
+かざらし,たかし
+ごと,みどり
+ほし,しんいち
+くろだ,くにひこ
+つかわき,ゆうこ
+いながき,いちろう
+いわもと,りえこ
+つるた,みほ
+いしじま,なおこ
+やまなか,みさこ
+うえき,まさあき
+にしむら,たかひと
+わいだ,こすけ
+よしだ,しょひち
+しぶや,きよなが
+あと,あきら
+みやた,てつや
+おたき,おさむ
+きよおか,なおみち
+おたに,ひでとし
+にしわき,みつる
+にしやま,かつのり
+みしま,まもる
+かとう,しんや
+いまお,としや
+おざき,まさひろ
+せきや,たもつ
+つくだ,たかし
+みよし,りょへい
+よしみ,ひろとし
+ささおか,あきこ
+おしま,あつこ
+くぼた,ただし
+しばやま,るみ
+おくぼ,ゆたか
+たちの,まさのり
+わだ,かおる
+まつした,つぎお
+こむら,まこと
+まきした,たかし
+あかお,なおみ
+はしもと,たかし
+おの,たかゆき
+せきもと,ひろし
+まえだ,みずほ
+みつほり,こうじ
+みなみぞの,まさゆき
+せがわ,のぶゆき
+すずき,のぶまさ
+きたがわ,たかゆき
+よしやす,たかし
+やまもと,ちはる
+かとう,ちずこ
+かわかみ,しゅぞ
+まきの,となみ
+すずき,じゅん
+ふるさわ,みちよ
+はやし,まさもり
+いまにし,やすひこ
+みやもと,けいこ
+まき,やすひろ
+こいで,ひとし
+わたなべ,かずお
+おはし,よしお
+あかお,ちから
+あさい,なおき
+いまい,まさき
+きら,かおり
+にしむら,とよじ
+よしかわ,よしたか
+みなみ,じろ
+つるた,まり
+なかむら,ひろし
+たなか,よ
+まつうら,なおき
+すぎた,まさお
+かわい,さとし
+こくぼ,じょじ
+つだ,としひこ
+みやたけ,ゆか
+くろさわ,くにあき
+すみひら,さほ
+たかき,まさこ
+いしと,ひとし
+やまだ,あきお
+にいつ,かずこ
+いわむら,たかし
+かわなべ,まさひこ
+ながい,てるき
+やまね,としゆき
+いまい,けんじ
+なかお,のりお
+おしきり,じゅにち
+いしかわ,けんじ
+おかじま,たけし
+おにし,じょじ
+すずき,としお
+やまなか,さつき
+たにぐち,まこと
+かわべ,としたか
+こんの,よしかず
+さとう,まさひこ
+たかやま,まさお
+もりみち,こき
+ほりかわ,もとかず
+ふくい,のぶあき
+きたむら,かんじ
+なかはら,よしひろ
+いちい,ひろゆき
+いわさ,ちあき
+すずき,たかゆき
+よねたに,いさお
+たの,ふみはる
+しばた,じゅん
+いのうえ,じゅん
+いしかわ,まさはる
+きし,てつじょ
+あわえ,さつみ
+たけお,かずひろ
+きのした,ときお
+つかだ,みき
+ありどめ,やすひろ
+きっかわ,しんいち
+おがさわら,いたる
+ながせ,かつみ
+はるやま,たまこ
+おず,あきら
+こさか,ひろみ
+しらさき,ひでのり
+たなべ,かよこ
+いけがみ,しゅんじ
+こばやし,かつふみ
+まつばら,たけし
+なかがわ,ひでよ
+おがわ,まさのり
+よしだ,としお
+いけ,まさみ
+たにぐち,あつし
+まえだ,よしあき
+ひらの,かずひこ
+しみず,ふみあき
+やまだ,としゆき
+たなか,としあき
+こまつざき,ひさかず
+かとう,たかひろ
+おわ,あつひこ
+いわむら,やすお
+いりえ,としかず
+あかやま,とる
+あきもと,つとむ
+かみむら,つよし
+すみた,じゅにち
+はまさき,なおと
+やすだ,もりひろ
+たけむら,せいじ
+むらかみ,まさのぶ
+なかじま,さだのぶ
+もりもと,まさみち
+せきぐち,ひろし
+なかじま,たかゆき
+きがわ,きみこ
+たかひら,あきとし
+もちだ,ひろあき
+かめやま,まもる
+おやまだ,まさかず
+たなか,のりこ
+ほんま,ひろただ
+きのした,かずゆき
+しのつか,まさゆき
+あいはら,ひろあき
+ながまつ,あきひこ
+とよむら,かおる
+ひらの,あつし
+きむら,まもる
+いけだ,みきや
+いしはら,とみつぐ
+のぐち,ひさとも
+こけつ,こうじ
+おくやま,たかゆき
+はまぐち,まさひこ
+つじさか,ひろひさ
+いちかわ,たかし
+よしだ,あつし
+やまだ,たかし
+しみず,まさひさ
+さかがみ,てるひさ
+こすぎ,しんじ
+にしだ,やすひこ
+いいだ,のぶしげ
+うちだ,やすふみ
+もとやま,えいじ
+みやもと,まさあき
+こばやし,たかし
+かとう,じゅん
+しらい,せいじ
+はぎわら,ゆうこ
+やまうち,まさる
+みつはし,みつまさ
+もんじ,あつひこ
+たきもと,しんじ
+おくだ,ひであき
+つかもと,さとる
+むこはら,せいご
+さるや,よひち
+おかじま,やすし
+ほしの,のりかず
+ほし,ひさひこ
+ふしみ,せいじ
+たかはし,かつら
+にしやま,やすみ
+つるまち,ちはや
+とみた,いくよ
+うちだ,やすし
+おたか,ひろゆき
+さかい,さとし
+そがべ,こうじ
+わだ,ゆきひで
+こさか,かおり
+あそ,よひち
+あらい,のりこ
+すぎむら,しゅじ
+あきよし,しゅじ
+あさかわ,やすいく
+わだ,みちお
+いけだ,としひこ
+おかもと,ひさと
+あおき,ひろふみ
+うえさわ,こういち
+うやま,たつや
+なかはま,しんじ
+かわもと,しょひち
+しょひゃま,なると
+すえまつ,とる
+ながい,ゆうこ
+なかはら,たかひさ
+なわた,かつみ
+かつざわ,けんじ
+やまうち,まさみ
+あかぎし,あけみ
+くさずみ,としはる
+ほかり,しげお
+かとう,かずお
+きりう,つとむ
+おがわ,さかえ
+たなか,こういち
+あいむら,りょじ
+いがらし,まさる
+かわわき,つよし
+まえさか,ひであき
+まつしま,すすむ
+まつもと,まさゆき
+かたい,ひろき
+こじま,じゅんじ
+つじもと,さとし
+なわた,ゆぞ
+ふじたに,なりあき
+きせ,ひろし
+さかぐち,みゆき
+すずき,つよし
+はまさき,としひこ
+よしだ,ひろし
+ほった,おさむ
+ますこ,ひろき
+たけなか,まさと
+いしい,まさよし
+たさか,つとむ
+まつだ,まさと
+はた,たかみち
+あきやま,ともみつ
+たかはし,あつし
+やまかわ,ひでと
+よこち,まさひろ
+よねたに,まさあき
+ふじの,とる
+はせがわ,さとし
+ふじた,かずひこ
+あんらく,てつろ
+はしもと,じゅにち
+いなだ,としゆき
+ゆげ,まさひろ
+いまだ,ひとし
+さかもと,しげひと
+とよなが,ひさお
+はしもと,こすけ
+はない,はるき
+しみず,ひろし
+なかむら,まさひろ
+かじむら,たかし
+いしがき,ゆたか
+はっとり,やすひと
+あまの,しょじ
+みかみ,まさひろ
+ふるてら,きいちろう
+まみや,ゆすけ
+つるの,かつとし
+あさい,まさゆき
+のむら,まさこ
+よこやま,のぶゆき
+いけだ,れいこ
+あんどう,まさよし
+おかやす,いずみ
+ごと,かずひさ
+かわしま,やすひろ
+はぎわら,てつお
+あたらし,よしのり
+たかやま,たつお
+にしやま,よしはる
+えちご,よしひこ
+やまざき,けんぞ
+むろや,まさお
+きむら,りょ
+なかはら,かおる
+うえの,まゆみ
+よしだ,ひでき
+つかもと,むつこ
+おざき,やすき
+あしかわ,しげお
+ねぎし,しんじ
+きゅの,ゆたか
+さとう,あきお
+いのうえ,やすこ
+きくずみ,ひであき
+まつもと,たかこ
+はやし,えり
+ふくおじ,ゆみこ
+なるせ,としひと
+まつもと,としゆき
+もり,しんいち
+みき,よしひろ
+なかたに,てつお
+みやがわ,ゆきお
+ありよし,ふみお
+しらい,たかし
+みなみ,けんた
+とりごえ,ただし
+こすが,とおる
+つじの,やすしげ
+おぐら,とものり
+おりた,しゅひち
+あみもと,よしひで
+おさか,かずひこ
+はやし,まさる
+みなみ,だいさく
+よしだ,たかお
+にしはら,かんじ
+おくがわ,けんたろう
+つじ,まさき
+なかい,まさし
+にしむら,のぶお
+にたない,よしあき
+くどう,ふみのり
+さい,いくお
+しょ,よしゆき
+いのうえ,まさよし
+たにぐち,ふじお
+なかにし,ただし
+おもり,かずひろ
+くまがい,やすひろ
+いしあい,ちかし
+はぎはら,じゅにち
+たがた,とる
+すずき,よしひろ
+くぼ,みのる
+かなうち,としひこ
+にしお,よしお
+いなだ,まさとも
+たけいち,てるゆき
+あんどう,たかし
+まつなみ,つぐお
+みなくち,けんご
+かなうち,ひろし
+おひゃま,たかお
+ますだ,まなぶ
+やぎはら,かおる
+みずの,ひろたね
+のぶくみ,しんじ
+なだ,ひろゆき
+たけたに,たかゆき
+いまいずみ,とよかず
+いなだ,かずのり
+いまに,けんじ
+おき,みちお
+ふくしま,ぜんさく
+いいお,しんや
+いしだ,ひでき
+ひらた,ひでのぶ
+いたがき,しんじ
+やまふく,まこと
+さとう,しょひち
+なかがわ,しゅさく
+おさか,なおき
+おいかわ,のぼる
+かしお,しょじ
+ほしざき,としお
+せきじま,けんじ
+おかまえ,とる
+さとう,たかあき
+こいで,ふとし
+たかはし,いちろう
+おがわ,いさお
+てらしま,たかふみ
+やました,まさひろ
+のせ,よすけ
+まつまえ,ひろとも
+よした,かつや
+むらた,こうじ
+はら,かずひろ
+やまうち,さとし
+かみじょ,のりお
+すがい,りょ
+たかの,しゅひち
+ところ,のぶあき
+すずき,よしひろ
+ささき,しげき
+つのだ,こうじ
+やまさき,のりひろ
+みうら,たかし
+おだぎり,たかなお
+はやし,せいじ
+とみおか,こういち
+いぐち,たくお
+こんど,まさあき
+くぼ,ひでゆき
+くらぬき,あゆみ
+とみまつ,のりあき
+くろかわ,とる
+のざわ,のりひこ
+かわさき,けんじ
+たけだ,かつゆき
+しのはら,たつゆき
+ふるや,よしのぶ
+なかむら,よししろ
+やじま,すすむ
+にしがき,あつゆき
+なかがわ,てつろ
+ひらやま,てつや
+やまぐち,かつみ
+よしむら,あつこ
+つだ,しんちょ
+かつらい,ひとし
+みない,せいいち
+たきぐち,たかし
+わけべ,ひでお
+にしかわ,きょこ
+しらがき,なおこ
+ばば,まさあき
+あかり,すみお
+あべ,くにあき
+かい,かつや
+おもり,あきひろ
+すずき,しげる
+ながさわ,さとる
+さわだ,とる
+あずま,きよし
+おの,そ
+かわにし,しゅにち
+まなべ,むつひろ
+ありやま,ゆうじ
+にしかわ,たかゆき
+あつみ,わたる
+いとう,としかず
+ひろた,かずお
+ほかぞの,よしひろ
+ほしの,まさや
+やまぐち,ひろあき
+あがた,まさかず
+まるお,りょじ
+こいで,たくや
+かみむら,くにひろ
+さいとう,ひでかつ
+ふくみつ,たかし
+ひらやま,ひとし
+さいとう,えみこ
+いけお,のぶゆき
+ふるかわ,ひでき
+いいだ,のぶひで
+みやざき,かずひろ
+よしだ,ゆうじ
+きくた,きよし
+ちば,しゅじ
+とりやま,ひろゆき
+えざわ,としや
+おば,かずと
+やまもと,やすひろ
+にしかわ,まこと
+えんど,こうじ
+ふくい,よしゆき
+はまの,ひろあき
+きたはら,まさひで
+さとう,なおき
+まつお,あつし
+とよた,ひかる
+ひらもと,てつや
+やまもと,みのる
+はまだ,じゅにち
+いわかみ,ひろあき
+くぼ,もとひろ
+えんど,やすゆき
+かげやま,えりこ
+にいや,てつお
+こち,りつお
+あだち,りゅうたろう
+はやし,よしたみ
+なかの,おさむ
+いしはま,まさのぶ
+こくぼ,まさはる
+かわの,おさむ
+なかじま,よいち
+たいら,けんじょ
+たけぎ,ゆきひろ
+もりしま,まさふみ
+なかむら,ひでや
+のぐち,としひで
+あらき,こうたろう
+あら,まゆみ
+いとう,みのる
+はやさか,てつお
+こつか,かずひろ
+たけうち,まさのり
+いわた,ともゆき
+まえだ,ゆすけ
+ほそかわ,しげゆき
+あらい,しゅんじ
+おくら,まこと
+たけこし,まさひろ
+やまぐち,りゅひち
+しみず,はじめ
+いとう,のりひこ
+いずみ,つよし
+ごと,りつお
+おつぼ,ともこ
+かみこがわ,ひろあき
+たけい,ひろき
+みやはら,やすてる
+あわじ,ひろし
+うしろだ,なおこ
+もりいずみ,ふとし
+ながの,まさかず
+たなか,ひろし
+ふかえ,たかし
+ふるや,よしお
+みずひき,まさひろ
+くぼ,やすひろ
+たぐち,かんじ
+なかお,あつし
+やました,けんじ
+くろき,かつとし
+まつだ,よしつぐ
+おだじま,かねみつ
+ほり,そうたろう
+たにぐち,かずみ
+あらい,しんいち
+ごと,さとこ
+とねがわ,まさし
+もりた,あつお
+ふるかわ,かおる
+ゆき,はじめ
+しらいし,あつし
+いけや,むねゆき
+わたなべ,けんじ
+たにぐち,みさお
+ますだ,よしお
+みずぐち,みつよし
+はやみず,ふみあき
+ほかり,つぎと
+いしい,ゆひち
+しらいし,しょご
+しもかわら,けんいち
+もりもと,なほみ
+いとう,ゆきお
+おひゃ,つねやす
+みよし,としのり
+しばた,てつじ
+たんざん,のりゆき
+いわさき,たかこ
+ふくい,しげお
+もりばやし,よしのり
+やまだ,たかひろ
+ふじわら,さちこ
+なつめ,たつおき
+しのはら,こういち
+おさだ,しのぶ
+ふじはら,じろ
+ふじもと,ゆみ
+きの,あきひこ
+やまもと,のりひこ
+いしじま,まさひこ
+いが,しげひろ
+なかえ,ともこ
+やの,ひろし
+かなみつ,けいじ
+すずき,みのる
+たかだ,のりひろ
+いしばし,ともひこ
+おつぼ,ひでかず
+すぎ,さとし
+はやしぐち,かずや
+てらした,ひでみ
+しもやま,さとし
+みやざき,やすと
+もり,ひろし
+やまもと,まさし
+であい,たけひと
+ほり,ひろみ
+あねざき,よしお
+くぼた,もとき
+ごじょ,もりひろ
+ひきだ,あきら
+さかぐち,だいじ
+よしい,ゆうじ
+きたはら,おさむ
+ふじい,てるお
+なめき,りょこ
+よしむら,ひろゆき
+たむら,みつはる
+うみの,たかし
+あんどう,ひろし
+よしもと,かずお
+ねもと,よしふみ
+みやざき,みつる
+たかもり,やすひろ
+くまがい,ひとし
+ごだ,きよひろ
+はた,としゆき
+くずみ,かずお
+なつい,たかひろ
+しまだ,まさとし
+おつき,ひろし
+まみや,のりあき
+さとう,たかし
+こばり,かつと
+ささき,みどり
+かねこ,やすこ
+おの,としお
+おひゃま,だいすけ
+まとば,ひろし
+いたくら,ひろし
+おだしま,たけし
+しいき,よしふみ
+しばた,まさひこ
+かつら,ちえこ
+あらい,くにお
+さいとう,こうたろう
+まつもと,こういち
+うえやま,さちこ
+まの,いくお
+みさお,ひでお
+そのべ,かずひろ
+すずき,ひろかず
+やたに,けんじ
+むた,ひでゆき
+まるやま,やすゆき
+ふだ,まさき
+こばやし,とおる
+わたなべ,よしえ
+おだ,まさはる
+おふち,じゅにち
+たなか,かつろ
+さわき,のりこ
+さいとう,かずひろ
+はぎの,ちかこ
+うしやま,よしのり
+おくひら,つよし
+よしいけ,まさのり
+こんの,みつなり
+のだ,しんいち
+えんど,なおき
+すずき,きみゆき
+たなか,あきお
+きど,きょこ
+いとう,まなぶ
+ふじわら,ふみあき
+はせがわ,たかよし
+ますもと,けいいちろう
+かい,かおる
+たかはた,まこと
+ひでしま,まさお
+たかやま,しげお
+みやき,まさし
+ふせ,ひろし
+ももい,のぼる
+つゆき,たかし
+かわはら,のぶひろ
+まつい,さなえ
+はなわ,ゆうこ
+ひわだ,としお
+ますい,としゆき
+かとう,みつお
+たけま,よしひろ
+しらいし,けいじ
+ふるかわ,まさのぶ
+てじま,としはる
+あきもと,あきら
+すぎやま,けいじ
+なんぶ,ひとし
+つじの,ともこ
+てらさか,かずのり
+さかい,しげき
+くぼ,ゆたか
+まるたに,かずひこ
+たかはし,ひろやす
+まつうら,みつぐ
+たなか,しげる
+ゆざわ,あきひろ
+たかはし,まさひろ
+おば,てつや
+まえかわ,たかし
+にわ,ただつぐ
+かわむら,ふみお
+こいけ,よしお
+くりした,しょいち
+ひろせ,あきら
+この,さとし
+はせがわ,ひろあき
+いとう,ゆきひろ
+きざき,けん
+えなみ,いっしん
+つかなか,ひであき
+さかもと,あつし
+まつばら,まさや
+てらい,みのる
+おした,しんや
+たなか,せんじ
+やまもと,たかあき
+いしぐろ,かずや
+はしもと,しんご
+さとう,とおる
+やまもと,とおる
+ふるかわ,まさき
+やまだ,かずえ
+いくた,としゆき
+さとう,おさむ
+わたなべ,たくや
+かこ,ひろひこ
+ますだ,ひろし
+かみじ,あつし
+いはら,のりあき
+あさみ,ふみあき
+なかじま,ひろみ
+こたき,ひでお
+かわもと,しげあき
+かわしま,たかよし
+あずま,よしあき
+なかの,まなぶ
+ひらの,よしと
+たかはし,すみこ
+ふかや,やすひろ
+おば,とおる
+さくらい,としのぶ
+さかい,ひろと
+あおき,しょこ
+よしだ,ゆひち
+こはし,かずひろ
+まつうら,たつじ
+さとう,ひろのり
+にしきおり,たかゆき
+みよし,かずひろ
+こすぎ,かずひろ
+さとう,たかし
+ふじい,てつや
+ふなだ,えいいち
+すぎた,かずひこ
+しょだ,りゅじ
+もりした,しゅいち
+ひら,さとし
+しんたく,まさる
+ひがしだ,ももき
+くりた,たけし
+いなだ,ひろあき
+にしの,いっせい
+いけじり,たくお
+なかむら,やすし
+なかかど,まさのり
+いのまた,てっぺい
+つるみ,おさむ
+ひらもと,ともこ
+みよし,よしひさ
+あわの,つかさ
+あきた,たかいち
+ひがしやま,よしひろ
+さとう,かずひこ
+かわさき,とおる
+まるやま,かずひろ
+すなが,としお
+いまい,ひとし
+ふじい,ひろゆき
+まきた,としゆき
+いとう,まさよし
+たかはし,ゆさく
+きりま,としや
+おにし,のりあき
+みのしま,なおひろ
+さとう,よひち
+やました,ひろし
+みたむら,ひろよし
+さとう,しげき
+とまつ,ふみあき
+えびしま,たかし
+わだ,よしえ
+すずき,たけし
+すがはら,ひろみ
+たぐち,けいいち
+とがし,はつお
+ながはら,ひでき
+やまもと,たみこ
+たけだ,ゆきお
+さとう,みつお
+たかみや,たつし
+あおき,りゅひち
+こやぎ,しんじ
+おのざき,ともゆき
+もりた,たけひと
+さくらぎ,かずたか
+おかさか,たかゆき
+やまぐち,まゆみ
+かわしま,しげる
+いわの,たまみ
+ごこ,やすゆき
+もりた,かずや
+しげたか,きよたか
+てずか,みつる
+おた,ひろむ
+やまだ,まさひこ
+ふかだ,さとる
+はせべ,けいこ
+まつの,まさゆき
+つじかわ,みのる
+まつもと,ひでのぶ
+せのお,たかひろ
+のむら,すみたか
+あらい,りょすけ
+おぐり,のりこ
+じんの,ゆみこ
+ひろずみ,ひろのり
+まつい,こすけ
+しばざき,よしのり
+いのうえ,かずのり
+たなか,やすはる
+さそ,やすじ
+しらはま,なおき
+たなか,えいさく
+なかむら,つよし
+いしがみ,まさはる
+しばた,ひさゆき
+のぐち,もとあき
+いちば,あつし
+かわぐち,けんいちろ
+よしみ,かつみ
+ふじかわ,はじめ
+かとう,さとし
+たかはし,とよしげ
+ふじさわ,すみえ
+みずたに,まさひろ
+せきぐち,みのる
+まえかわ,すすむ
+あらい,あつし
+もり,ひでお
+さとう,ひでかず
+くわた,なおふみ
+おぐり,あきひこ
+ひらい,なおき
+にしむら,やすひろ
+おくら,よしあき
+そのべ,てっぺい
+いいだ,あゆみ
+こぐち,こうじ
+もろほし,ひでこ
+はまだ,ひでみ
+かなざわ,ひろゆき
+まつば,つよし
+いわた,いさむ
+あずち,かずお
+こんど,ともふみ
+たかはし,よしろ
+あまの,むつみ
+かただ,りゅじ
+ためひろ,けいたろう
+まつだ,なおこ
+なりいし,しょひち
+おきた,ひろし
+やました,かつひこ
+すずき,ふみとし
+まんぽ,ひさのり
+いちい,あきこ
+こいで,やすあき
+たかはし,えいいちろう
+なかがわ,ひでかず
+おはま,のりかつ
+たかはた,かずゆき
+こぐち,しげる
+みやがわ,ひでとし
+しばやま,まさる
+あらい,いさお
+わたなべ,よしお
+なかむら,ひろあき
+ふるはた,おさむ
+たにぐち,もとこ
+ほんだ,たかし
+まつもと,やすよし
+たかき,もりみち
+きくち,ひろし
+いのうえ,ゆうじ
+はら,かつみ
+やまもと,けんじ
+むらかみ,ともこ
+ばば,なおこ
+はせがわ,かずお
+ささき,たかし
+あつた,ひろみ
+たちかわ,たかし
+ひらもと,かずや
+なかむら,はじめ
+つむら,やすひろ
+たかはし,すすむ
+よこやま,ゆたか
+こたけ,まさなり
+あんらく,なおすけ
+みずの,すすむ
+おぬき,あきひろ
+さかい,はるみつ
+おた,しんや
+はやし,こういち
+さいとう,まさお
+たなか,たかひろ
+はるはら,ともやす
+おつか,まさひこ
+きたがわ,としひこ
+よこた,あきふみ
+よしむら,ひとみ
+おひら,ひろつぐ
+ちゃき,ひであき
+さかぐち,としや
+すずき,たかお
+ちかざわ,そういちろう
+なかじま,みのる
+わたなべ,みつお
+しば,たかし
+さかい,しんいち
+やまみさか,あきら
+よしがみ,はじめ
+ひらて,しょぞ
+わくしま,のりお
+あさま,あきひろ
+あずみ,のりこ
+いなおか,とご
+さない,まさゆき
+やまうち,ひでみ
+いはら,かっぺい
+たやま,あつこ
+ささき,しんいち
+ふじうち,しげひで
+うしじま,こういち
+ののむら,あきひろ
+にし,まゆみ
+いけだ,まさのり
+すぎたに,ただお
+おざき,じゅんこ
+こけつ,ちはる
+さとう,てつお
+せんば,あきら
+あずま,まさゆき
+なおい,ただし
+ほしの,ちから
+かみや,ただし
+むらた,ひろかず
+いちみや,ひろし
+たるい,やすひろ
+はぎはら,としひこ
+たかはし,おさむ
+おちあい,しんや
+あきやま,としあき
+きむら,しんいち
+はやし,まさたか
+やまぐち,たけひろ
+ところ,ひろみ
+かすや,ひろし
+いりえ,たけし
+むらいし,あきひさ
+しんたに,よすけ
+うえの,あつし
+うちだ,ひでと
+はせがわ,いちろう
+くろだ,よしき
+いとう,やすひろ
+ほりうち,ひとし
+おはた,けいこ
+ほんだ,やすあき
+なかむら,みわこ
+さえき,たかし
+あべ,ひとし
+うめだ,けいすけ
+ぬま,よしひろ
+たぶち,ひでお
+きむら,みつる
+うだ,なおたか
+あおき,えつこ
+なかむら,しゅじ
+ふじこし,みなこ
+すみだ,りゅじ
+くずはら,みほ
+わたなべ,こうじ
+あらた,
+ろっかくゆきひろ,るりこ
+いのうえ,かつひろ
+つじもと,まや
+みうら,のぶあき
+ねもと,ひでゆき
+あめみや,すすむ
+なかむら,おきもり
+あいば,てるひさ
+よねざわ,たかひろ
+ふじむら,まさゆき
+りゅと,ゆたか
+わたなべ,みつる
+きたがわ,たかみ
+あたらし,のりこ
+きくち,まさと
+すずき,さとし
+たなか,きよし
+いけだ,のぼる
+よこかわ,ひろし
+くさつぐ,さとみ
+みずの,まゆみ
+ながほり,みつまさ
+すぎもと,まさみ
+あんどう,ななこ
+たかやなぎ,よしお
+しば,よしかず
+かみやま,ひろゆき
+おひら,のぶたか
+ほんま,しんや
+たばた,しゅ
+えんど,ひろみ
+いしがき,ともみ
+しば,しんじ
+やまだ,ともなお
+たかの,じゅん
+よしだ,あきら
+あまさき,ひろし
+おしかわ,ひろなり
+にしの,みつひこ
+かとう,たかし
+はまおか,けんじ
+さの,こういち
+すえしげ,こうじ
+なかた,つねお
+こばやし,ひろふみ
+すどう,まさこ
+つつみ,かずひろ
+みたに,ひろみ
+いしだ,はるゆき
+いいずか,のぶよし
+しらい,けんいち
+やまだ,せいじ
+つじかど,ゆひちろ
+まつなが,まさひと
+たなか,かつお
+みなみ,たつや
+さかい,としひこ
+うえき,しんじ
+おだ,みほこ
+まえだ,おさむ
+できたに,ともこ
+あまの,たかかず
+みやこし,くにてる
+あんざい,ひろみ
+うめだ,ひでゆき
+たきざわ,やすし
+むらにし,きよひと
+くりはら,こうじ
+やまさき,やすふみ
+おつか,ゆたか
+あみの,ゆみ
+もり,いわお
+にしもり,かずこ
+たけの,こういち
+しんがき,かずえ
+まつお,ひろし
+ふじね,まさゆき
+かなまる,しおり
+かなざわ,まさお
+しみず,せいじ
+わだ,じゅん
+いしくら,たかひろ
+ふくだ,しげかず
+うかい,としみち
+ありま,ゆきお
+おた,あつし
+もりたに,きよし
+あだち,としひこ
+くまで,まり
+あら,みつひろ
+はしもと,たかし
+とよおか,やすのり
+おつ,しんじ
+みやき,まさお
+いしかわ,よしかず
+いがらし,よしき
+おにし,まさき
+しらいし,ひろよし
+よこめ,たつゆき
+ふじもと,りゅじ
+かんの,いつこ
+たちばな,たけし
+やまだ,あきひろ
+あさみ,よしこ
+みうら,おさむ
+とくひろ,たかあき
+もりかわ,たかし
+いとう,よしひろ
+さの,まさのり
+すずき,すすむ
+しもとの,とおる
+まかべ,まこと
+いとう,てつろ
+つくだ,けいいち
+よしかわ,じゅにち
+たかやなぎ,なおつぐ
+ほんだ,きんや
+にしの,こういち
+きむら,よしあき
+かとう,かずひろ
+おはた,もりやす
+うつみ,みちお
+あんどう,ちなみ
+はまたに,しげお
+きのした,やすし
+かわせ,ひろのぶ
+うえの,まさのぶ
+しかま,みきひさ
+すずき,ともみつ
+ふじおか,まこと
+いのうえ,まなぶ
+きたざき,さとみ
+あいべ,こうじ
+おかわ,じゅんじ
+たけい,みつぐ
+からはし,ひろき
+すずき,たかよし
+あらい,ゆうじ
+いのだ,よしひろ
+おくむら,こういち
+まるい,じゅん
+ひろずみ,かずひこ
+わしず,かずひさ
+よしむら,みのる
+かつまた,たかふみ
+ますかわ,としたか
+いわお,よしひこ
+やまもと,りょじ
+たなか,まさゆき
+たけうち,まさひろ
+のはら,ともひろ
+ふなはし,やすゆき
+なごし,ひろし
+うめだ,さかえ
+あきやま,やすはる
+なかだ,ひろし
+さいとう,まゆみ
+たはら,ひろし
+にしまつ,のりゆき
+ひらみつ,えり
+めかた,じゅんこ
+たかみ,あきひさ
+そのだ,たくや
+みやざき,たかひさ
+まるやま,たかし
+つのかわ,かつら
+はらだ,しゅじ
+つじ,よしひと
+いがらし,さとる
+よしだ,のりゆき
+たけがた,しゅぞ
+あべ,かずのり
+あかぬま,けんじ
+かわだ,かずや
+たご,ひとし
+かみむら,まさと
+まつや,めぐみ
+いわた,じゅにちろ
+まえかわ,よしひろ
+やまぐち,まこと
+しろした,まさる
+やました,りゅうたろう
+つじかわ,ひでゆき
+たなか,ゆうじ
+みなみ,ひであき
+さとう,まさし
+うおずみ,かつみ
+すぎやま,つぐひこ
+ちば,としお
+かない,かおり
+まつやま,こき
+たかの,りょじ
+くまがい,とくひろ
+たけこし,ひろあき
+ふたば,ひろし
+うめざき,まさし
+おいわけ,げん
+ながつか,あきひこ
+いまがわ,さとし
+はしもと,れいこ
+おひら,ともひろ
+みやひら,まさと
+のぐち,じゅにち
+すぎもと,よしふみ
+かわぐち,ともひろ
+しのせ,よしあき
+なりさわ,あきら
+ひろせ,ひろゆき
+にしざき,まさゆき
+もり,さとし
+ふかお,つよし
+みやじま,あきら
+まつの,こういち
+いわい,むつひさ
+かい,としあき
+たなか,かずただ
+ちば,よすけ
+その,まなぶ
+よこやま,ひとみ
+たかしま,あきら
+おかもと,ゆたろう
+みやかわ,みちあき
+むらもと,けいぞ
+きむら,かずふみ
+まつなが,かつのり
+ふくだ,つよし
+おにし,よしひと
+あい,あきひろ
+まえだ,すすむ
+いのうえ,のぶゆき
+いいだ,よしこ
+ふじい,けいぞ
+さくらい,かずしげ
+まつい,しげのぶ
+いまだ,みどり
+みやけ,くにこ
+さかい,まさみ
+かとう,ひろし
+いわた,あきひさ
+おの,じゅん
+いそべ,こうじ
+おやまだ,だいすけ
+とじま,ともあき
+たけうち,こういち
+なかやま,ゆみこ
+しらいし,つとむ
+かのまた,まさし
+すどう,ひでかず
+しらやま,ひさかず
+おひゃ,よしみ
+みながわ,たかひさ
+きむら,ひろゆき
+たかぎ,たくや
+さとう,ういり
+ふじわら,しんじ
+いもと,あつし
+うえの,ひろひさ
+きょの,おさむ
+きりう,なおと
+くぼた,まさや
+こせき,たかよし
+すざき,つとむ
+たかさき,たつひろ
+つかもと,かずひこ
+ないとう,ますお
+なかごめ,おさむ
+なかむら,あつし
+はぎわら,たかひろ
+まつもと,あきひろ
+この,まさる
+さいぐさ,ともひろ
+ほんだ,たつや
+たなか,だいぞ
+まつとみ,ゆきお
+あかさか,みつる
+せんがん,ようた
+たけお,ともひろ
+むらた,けんご
+かわせ,よしただ
+にしざき,つねお
+へいとう,たかし
+おさわ,まさひろ
+うえだ,やすひさ
+かなやま,しんいち
+はらだ,けんじ
+なかがわ,ひろかず
+みやもり,ひでやす
+かい,かつみ
+きぐち,かよこ
+さたけ,よしひさ
+おほか,たもつ
+なかざわ,ゆきお
+やすおか,ひろし
+くろみつ,かよこ
+かなだ,ひろあき
+まるかわ,あきひで
+ながさわ,のりかず
+こばやし,ひろゆき
+えんど,ともひろ
+いんなみ,たつゆき
+やまもと,えいいち
+ながくら,まさはる
+うえの,よひち
+にしざか,やすひこ
+さとう,ともゆき
+もりやま,あつし
+こはやせ,まこと
+どいた,けんじ
+ほそかわ,しゅじ
+あおき,けんじ
+ますみだ,としろ
+おち,こうじ
+すずき,まさひで
+すぎやま,やすたか
+ふじわら,ひでき
+たなべ,ひでき
+とだ,たけゆき
+つぼい,しゅ
+すぎた,まさのり
+あだち,はるお
+ふじい,きよたか
+すがもり,さとし
+やすだ,まちこ
+たかはし,みか
+たがみ,てつろ
+とみやま,たつお
+はねだ,しげお
+おざき,ひろし
+おぐら,のぶお
+てらさき,みつい
+つちや,ともひこ
+おかだ,まさいち
+あべ,けんじ
+あべ,けんいち
+もりわき,せいや
+はやの,みつゆき
+とみなが,あつし
+すずき,やすお
+かたぎり,まさのり
+あはら,けいた
+ほし,まさき
+いしかわ,ひろし
+しもむら,なおひこ
+わきもと,ひろゆき
+かわて,まさる
+あぶらかわ,ゆうじ
+よしたけ,やすゆき
+いしだ,たけし
+ほんだ,やすゆき
+したま,のぶや
+のぐち,えつこ
+みずい,てるお
+あんどう,のぶゆき
+よねしま,みつえ
+あきた,こういちろ
+うえ,けんた
+すぎ,じゅん
+なかじま,みき
+かさおか,さとし
+のだ,はやと
+まつざわ,ななこ
+わたべ,たつや
+あいざわ,よしひさ
+いわさ,みゆき
+こが,たかし
+ひがしたに,かずおみ
+いけだ,たかし
+あきなか,まさゆき
+ふじた,としろ
+やまおか,よしお
+わち,たけし
+うえの,あやお
+うしき,なおふみ
+やまもと,なつみ
+かとう,じゅんこ
+ながい,あつし
+ふくだ,こういち
+なかたに,まり
+ひらさわ,としひこ
+みやざき,てつふみ
+てらしま,こういちろ
+あらい,たつお
+たなか,けいじろ
+かねこ,しん
+さとう,あきひこ
+なりた,ひでふみ
+ながしま,としや
+さかの,やすはる
+みうら,かずや
+やまぐち,ひさたか
+おでら,せつや
+あべ,けんたろう
+こだま,かずいち
+やまもと,はるひこ
+おしま,まさとし
+いしず,ただひろ
+かんばやし,あやこ
+おかわ,えみ
+ひえだ,ながこ
+いのまた,まさる
+まきた,むねかず
+がなは,ちが
+はやかわ,しんいち
+あかぬま,たかあき
+むろかわ,てつじ
+おの,しゅひち
+きむら,じゅにちろ
+はたざわ,としお
+ふじた,さとし
+うえだ,けい
+やまのうち,なおとし
+ふるた,あつし
+おくやま,かずひろ
+いとう,ひろゆき
+おさない,とおる
+こたに,つとむ
+おつか,ゆきお
+ふくしま,ひろゆき
+いいずか,たけひこ
+わたなべ,ひろみ
+もりた,としや
+かとう,たかゆき
+ほんだ,ひろゆき
+かとう,てつや
+あさぬま,まさのり
+あずま,けいすけ
+てらさわ,しょご
+あかし,やすこ
+かとう,まさき
+おのさと,だいすけ
+なかむら,いさお
+のむら,よしひろ
+いのうえ,けんいちろ
+はやし,ふみお
+たむら,せいいち
+さかい,たけし
+すぎむら,ただあき
+とみやま,こすけ
+かきざわ,けん
+にしたに,てるあき
+あさくら,けんいちろ
+いしざき,ひろき
+まつもと,としあき
+ながお,あきのり
+きの,やすひろ
+あべ,まさお
+とじょ,みつお
+やまき,つねお
+あらい,なおと
+やまだ,たかし
+おくむら,ひろつぐ
+はら,ひでみ
+やまもと,えいいち
+なかむら,しんいち
+あらい,がく
+いけど,すえのぶ
+いとう,りょ
+いとう,けい
+うりゅ,としあき
+うちやま,しょういちろう
+えのもと,しんや
+えずら,さとし
+おつか,しんいちろう
+えにゃ,としお
+あかお,りえ
+おにし,たすく
+かがや,こうじ
+かまた,こういち
+かわかみ,げん
+ささき,けいじ
+たかはし,かずえ
+ただ,しょたろう
+にしの,かつひさ
+あさお,しんいちろう
+はしもと,かずや
+はっとり,まさたか
+ほし,けいじ
+ほりた,ゆうじ
+まえぞの,あきら
+まえじま,ただし
+みやざき,ひろみち
+あらい,とおる
+もり,けいすけ
+まえだ,すすむ
+おち,けいすけ
+あさくら,しょじ
+うさみ,いなん
+おくやま,たかひろ
+かりや,のぶひさ
+うえだ,やすよし
+おたべ,なおひこ
+きむら,こういち
+くしだ,まさよし
+あまは,なおき
+こんど,なおき
+しみず,たかこ
+すずき,たお
+すん,しんいち
+たどころ,なるひで
+とねさく,みのる
+なかむら,ゆみこ
+ますだ,よしみ
+みやざき,こすけ
+よしなが,ひろし
+よこかわ,けん
+つちや,のりお
+たかはし,あつし
+たなべ,たかし
+いとう,たかひこ
+ながお,ひでゆき
+さとう,けいぞ
+ただ,いさむ
+あきもと,よしはる
+たむら,こうじ
+たむら,よしき
+おか,しょういちろう
+さくらぎ,しゅこう
+すずき,すみお
+もりおか,ひとし
+やぐち,いさむ
+みやもと,ひろし
+しらかわ,ひろお
+おつか,みはる
+やまもと,あきひさ
+なかまち,たくま
+わかはら,まゆみ
+あき,まさのり
+たきた,まさじ
+あらかわ,けいすけ
+まつお,しんいち
+ちょ,たけし
+くろだ,ともひろ
+やました,しゅんすけ
+ともおか,まもる
+なかお,かずゆき
+あそ,みちはる
+ふくだ,けんいち
+あおき,ひろし
+くる,ただし
+むらかみ,ゆし
+くろだ,さとし
+みかみ,ひでき
+かみむら,ひでき
+きたじま,ともやす
+まるやま,やすふみ
+さたけ,やすお
+もてき,たかし
+とみた,かずひろ
+にわ,けいいち
+たかばたけ,こうじ
+あずま,ゆういち
+ふるや,しげる
+なす,たろう
+こり,えみこ
+いけだ,わたる
+ごと,てるかず
+まる,のぶたか
+ふくだ,ひとし
+すがはら,ひさと
+きむら,やすひろ
+たかせ,たくや
+にしおか,あきひろ
+ふるかわ,ひろゆき
+くどう,なおき
+たかはし,よしひさ
+やまもと,けんいち
+みやもと,たけし
+のた,ふき
+なかむら,ふみこ
+あきば,しげのり
+いわき,まさる
+かとう,さちこ
+もりもと,よしひろ
+なかむら,まり
+なかやま,まさひろ
+おたに,こうじ
+すぎやま,じあぃん
+すん,ひろゆき
+やまもと,じゅんじ
+ほんど,としひこ
+はが,まり
+しおざき,りょ
+ふじの,てつお
+おの,けんいち
+あんどう,けんと
+やまぐち,よしひろ
+くろだ,りょへい
+あんどう,ゆきひろ
+うの,しのぶ
+いとうたに,みや
+おか,まこと
+みうら,しほ
+はしもと,まさかず
+えもと,かずとし
+こが,かずや
+きはら,しげひろ
+まつだ,みのる
+やまだ,とよゆき
+たかはし,ひろし
+やはた,ゆたか
+たざき,かくじ
+やまもと,かずひこ
+たかだ,みのる
+のだ,けんじ
+さいみょ,よしお
+こばやし,としあき
+ふじき,たかし
+しらさか,じぇ
+ちぇん,りょひち
+たかはし,たけひこ
+やつ,えつみ
+うおたに,のぶゆき
+たむら,かな
+まつお,まこと
+なかざわ,ひろし
+きだ,ひろし
+たんげ,ふみただ
+ひろせ,あきこ
+まつしま,よひち
+おかの,ひでお
+あおき,けいた
+はせがわ,りゅひち
+にしほり,ひろみ
+いしずか,まさつぐ
+つぼい,かおる
+いしだ,あらた
+はしもと,けんじ
+ごと,ふみお
+あきやま,のぶひろ
+みつはし,とおる
+ごしま,あつお
+ふくだ,ふみひこ
+やました,としひこ
+なかざわ,さとし
+にしかわ,たくや
+いけうち,ゆきこ
+たがみ,てつろ
+かわきた,すすむ
+なかむら,みちや
+こまい,さとる
+ほしや,よひちろ
+すみと,りゅじ
+ほしの,ちから
+なかや,たかや
+はら,ひでゆき
+むろやま,まさる
+しのだ,さとる
+もり,しんじ
+しらいし,ひろき
+ひらの,しげる
+はしもと,かずお
+あべ,ひろし
+いしかわ,なおふみ
+あずま,ひさし
+おつか,ひとし
+いとう,かずゆき
+おしま,たかお
+こざい,けんじろ
+かわかみ,がく
+なかの,こすけ
+うじもと,あゆむ
+きしだ,まさふみ
+こいずみ,かずお
+ないとう,しんいち
+よしずみ,みずほ
+すぎもり,かずひこ
+あおき,かしゅく
+たかはし,ひでき
+いが,まさひろ
+かわばた,こうじ
+しばた,ゆうこ
+だんじょ,じゅんじ
+たぐち,ありかつ
+まちだ,よしみ
+あしだ,のぶお
+あんどう,けい
+むと,ちかお
+こやま,きよひろ
+すずき,まさとし
+のむら,むねひこ
+いとや,まさひこ
+ちかおか,ひとし
+じんぶ,のりこ
+あだち,としひろ
+かわい,よしき
+みのわ,としひろ
+あさひ,ともはる
+おた,こういち
+たなか,のりかね
+きら,のぞみ
+やまざき,ひろひで
+やまうち,まなみ
+ほった,かずひろ
+あらかわ,ともお
+おくむら,ゆうこ
+かねこ,ていじ
+あやの,かつのり
+はやかわ,きよと
+いとう,けいいち
+おくむら,じゅん
+たんざわ,まさとし
+さきの,つとむ
+かわはら,みちやす
+たるい,まさし
+ありもと,やすし
+えびこ,こういち
+ひの,としあき
+やまだ,よしあき
+おの,きよし
+たけした,まさし
+はやし,みか
+いしだ,みつる
+しおや,よしのり
+あんどう,しげお
+まつばら,じゅん
+にしだ,いたる
+なかむら,こき
+いけだ,ともなり
+はやみ,まさひこ
+すずき,ひさのり
+おがわ,たつお
+いしかわ,よしひろ
+あさみ,とおる
+はたけやま,よしお
+ほりみぞ,あつし
+まるたに,ともなり
+さとう,かつや
+さかなか,しょよ
+なかむら,くみ
+いとう,ゆりこ
+ふるなが,きょこ
+ふくしま,けん
+みずがみ,たけし
+たけうち,のぼる
+とりうみ,まさふみ
+ねぎし,まさる
+こやま,まさのり
+おしま,じゅん
+かたおか,ひでお
+たきぐち,しょぞ
+こまつ,あきら
+やぎ,としあき
+たかぎ,けんじ
+ますい,たかし
+はやし,けいすけ
+あねたい,ちひろ
+きはら,あきお
+さいとう,かずお
+きたわき,ともひこ
+のぐち,かおる
+さかぐち,はるひこ
+にし,まさと
+いけだ,よしゆき
+さとう,みちお
+いまい,みのる
+やまだ,しげき
+たなか,あきのり
+おさこ,なすお
+こむろ,たかし
+さいとう,ひでふみ
+すずき,かずお
+ふなとがわ,たかし
+いしい,よしお
+まつい,てつろ
+すえひら,ひとし
+ひろたに,まさゆき
+ひがし,けんいち
+いむら,しげお
+あべ,みちひこ
+よねくら,ひろみち
+わたなべ,もとい
+すが,ゆきみつ
+さの,てつお
+しば,たかし
+やまぐち,まさひと
+きざわ,しげいく
+かさまき,やすひさ
+きむら,まこと
+つるみ,かなめ
+あおき,ひでき
+いしだ,けんいち
+もろ,ゆかり
+おくむら,てるあき
+たかぎ,のぼる
+いけや,ひとし
+とみやま,よしお
+やぎ,きよし
+とみき,あつこ
+とのむら,やすのり
+やつずか,のぶとし
+ぶま,よしみつ
+なかざわ,ひろし
+やまざき,ひろし
+まつした,ともじ
+いだ,しゅんじ
+すずき,よしひろ
+なかの,よしろ
+かわぐち,けいすけ
+たかはし,あきひさ
+いしだ,しょこ
+うだ,もとし
+ふじわら,あきお
+こいで,ひろゆき
+つかだ,こうじ
+ひらやま,みちお
+うちとみ,かずみつ
+いまはら,たかお
+うえだ,てつろ
+ささかわ,みのる
+あいかわ,としひろ
+うえき,けんしょ
+なかやま,ふみとも
+おさわ,ようこ
+たかおか,しのぶ
+わだ,しん
+いぬずか,よしひろ
+たなか,やすひろ
+たけだ,まさお
+やまだ,つとむ
+やなぎ,しょういちろう
+たけした,さとる
+にし,りゅじ
+おたけ,としたけ
+にたない,へいはち
+ほんま,ひろし
+なかの,あきら
+みやした,ひろよし
+うえの,ひとし
+ばば,よしひろ
+みやざき,たかあき
+くにい,たかよし
+こばやし,よしみ
+ますだ,よしかず
+たかはし,としゆき
+つかお,つぎお
+かわむら,くにひさ
+かわばた,こうきち
+あかさか,きよたか
+いいだ,のぼる
+しらはま,ひでひろ
+とがわ,よしたけ
+いとう,たつひこ
+おかべ,ゆひち
+わたなべ,しげお
+さかば,のぶひこ
+ひろさわ,よしのり
+なかむら,ひでき
+やすい,じゅんじろ
+ひらた,さだむ
+きたがわ,まさお
+あまの,つとむ
+つじむら,けいじ
+かわさき,ひろし
+うえむら,こうじ
+むらかみ,ひろき
+いのうえ,たかゆき
+はぜ,こぞ
+としひろ,じゅんこ
+こばやし,てつや
+いの,ただし
+あさの,ひろゆき
+もり,ひでいち
+いなざわ,まさし
+こばやし,ひろお
+さかき,としひろ
+うちやま,ひとし
+まなべ,しげる
+おひゃま,さとし
+しみず,かずひさ
+よねむら,しんいち
+ばらだ,てつや
+ふるぞの,えつろ
+ふじもと,こういち
+さの,たけし
+かわの,しげな
+ほしかわ,きよし
+ささもと,けん
+すどう,きみひろ
+さとう,しげゆき
+はやし,ただのり
+ばば,ゆひち
+ばば,こうじ
+おやね,こよ
+ながさわ,てるひろ
+さかもと,よしひこ
+あおき,せいじ
+むなかた,やすき
+いとう,けんじ
+かわばた,まさひこ
+すぎもと,ひろゆき
+ばんど,あきひこ
+のむら,よしかず
+この,かずあき
+かわい,まもる
+うえの,えいこ
+はらだ,こうじ
+かの,もとつぐ
+おおはた,まさと
+すどう,たかお
+まつだ,ひろし
+いけがみ,ひでのり
+しらい,ひとし
+さとう,ひでお
+さかい,やすゆき
+おき,まさはる
+かわむら,せいじ
+やまだ,まさはる
+いとう,しんいち
+いかみ,ひろゆき
+あずまお,みちお
+ふじむら,じゅん
+きたむら,あきひこ
+とがみ,よしみち
+こすげ,かずのり
+せき,のぶゆき
+かわしま,ひろし
+たかい,あきら
+あきやま,みきお
+すずき,たかし
+なかむら,ひとし
+にしの,まこと
+みやけ,けんしん
+よねもち,たかあき
+たかしま,たけし
+さかい,としゆき
+おつき,けんじ
+かわさき,ひろお
+にしかわ,あきひさ
+さくらい,はるお
+すぎ,ひでと
+ほりこし,とおる
+もり,ゆうじ
+はけだ,としみ
+にいだ,まさお
+きくたに,ひろゆき
+たけのした,ともゆき
+たかはし,ゆご
+たなべ,ゆきお
+いけもと,としふみ
+まつやま,しゅいち
+よしざわ,たかゆき
+あかい,たかひろ
+にしおか,もとじ
+たけもと,しげお
+とくだ,としのり
+おもり,あきとし
+かとう,みき
+かわと,たきお
+まえだ,けんじ
+くろき,ひであき
+いいだ,とおる
+こやなぎ,かつや
+まつなが,たかし
+いとう,しんいち
+やまもと,さとし
+つつい,しゅへい
+たなか,ひろみ
+ふくしま,まさこ
+こじま,のりこ
+にしだ,ゆきこ
+にしやま,よしひさ
+すずき,みのる
+いいじま,せいいちろう
+たまい,のぶお
+この,よしお
+みます,やすひろ
+よねはら,たつし
+よしだ,ふみお
+ふくだ,そひち
+さとう,まさよし
+やまもと,くみこ
+きたご,はじめ
+さんの,あつし
+やさか,やすあき
+むらた,たつお
+なかもと,としあき
+さくらい,みのる
+はらだ,しゅにち
+さとう,よしひこ
+さいとう,みつぐ
+そね,じゅんこ
+はすみ,だいすけ
+ひらた,たかし
+やなぎさわ,すすむ
+たちばな,おさむ
+いとう,としみつ
+はら,せいいち
+さいとう,かずみ
+いとう,ひろし
+たなか,ひろあき
+うちやま,ひろし
+かがわ,のぼる
+たきざわ,ともとし
+しながわ,としお
+かきはら,しげみ
+すがぬま,あきし
+かめい,かずしげ
+おくつ,よしもと
+いしかわ,あつお
+すぎうら,みつお
+うめだ,けいこ
+みなぐち,あきひろ
+ほしの,かずひろ
+にしやま,のぶお
+たけだ,ようこ
+さかい,まさずみ
+やつだ,あきら
+もりた,としひろ
+さきま,こういち
+あらい,かずや
+たけだ,しげよし
+たむら,けいいち
+おかだ,ゆうじん
+やまね,くにひこ
+なかむら,しろ
+あおの,じゅにち
+すぎやま,としや
+ふりはら,かずとし
+わたなべ,しょしゅん
+かつ,もりお
+さはら,ひさし
+かくた,いちろう
+えのもと,たけひこ
+わたなべ,せいじ
+やぶき,たつや
+あまさき,きいちろう
+よこた,たけし
+ほりのうち,けいぞ
+きはら,なおひろ
+たけだ,ゆたか
+いねな,たかこ
+なかじょ,よしこ
+いちやなぎ,はるみ
+すずき,ちはる
+なるしま,ゆひち
+しらいし,たつお
+おの,かねよし
+よしおか,かずお
+まつうら,のぶと
+ふじた,つかさ
+いわみ,ひろみ
+とくしげ,あきひこ
+たなだ,たかし
+おかの,まこと
+もちずき,まさひろ
+たかしま,こういち
+とりうみ,まさひで
+たかみ,としあき
+はやせ,つねお
+たかはら,つるまつ
+きん,まさひこ
+すぎやま,かずひろ
+きたじま,ただし
+にった,しょけい
+ぶん,なおきち
+しゃ,たかし
+おか,とおる
+おはし,かずや
+はらだ,ひろかず
+わきさか,てつじ
+いわなが,とよはる
+かわしり,けいじ
+いなもと,きみひこ
+さわ,かずまさ
+たけだ,たかゆき
+いいだ,こういち
+かじの,かずお
+みわ,よしたか
+ふくい,ともゆき
+すえなが,えいじ
+くにえだ,まさゆき
+きたおか,ひでひろ
+いど,こうじ
+おくだ,よしのぶ
+ほりかわ,さとる
+すえもと,ひろかず
+よこやま,ゆきのぶ
+ふじもと,ひろし
+きせ,きはちろ
+にしむら,ひろし
+たかだ,けいいち
+つかだ,みつお
+とよだ,まさかず
+さの,ひろゆき
+にしだ,たけひこ
+おもり,よしひと
+おざき,まもる
+いしまる,はるかず
+たなか,けいいち
+かしわばら,とおる
+あさの,ゆたか
+ひらの,かずひこ
+たにやま,とおる
+うめばやし,りょすけ
+おむら,かつき
+さかぐち,てつや
+おかむら,としひろ
+やまもと,とみお
+えちご,しょじ
+さわだ,ひでひこ
+よこい,こうじ
+きたむら,まさかず
+やす,えいじ
+たかお,とおる
+かつらおか,まさひこ
+つぼい,いちろう
+つじ,とおる
+たかはし,しげやす
+すぎき,こういち
+たけうち,のぼる
+かみじょ,やすかず
+こばやかわ,しんじ
+あおと,てつろ
+ただ,けんじ
+ひだか,ひでお
+にしむら,きよかず
+えばら,しょご
+みずもと,あきら
+すずき,これあき
+しいな,やすひこ
+しおた,かずゆき
+なかはら,りか
+ごだ,かおる
+ふるた,じゅんこ
+ますもと,しんぞ
+なかがわ,まさひこ
+いど,しげお
+よりふじ,あきお
+まつもと,たかき
+さいとう,たかひろ
+なつい,としかず
+うおの,やすひこ
+たなご,じつじ
+たまがわ,よりこ
+おか,のりこ
+ふくしま,ちえこ
+おかだ,つねお
+きのした,かずや
+しみず,きよし
+こばやし,はるよし
+のだ,みつひこ
+かの,こういち
+かじおか,きよし
+おの,まさひさ
+おはし,じゅにち
+こばやし,きいち
+こいずみ,たかゆき
+たなか,のぼる
+ふくだ,あきら
+なかざわ,くにあき
+ほりかわ,ひでき
+うちやま,かおり
+いずたに,けいこ
+たきい,のりひと
+たかせ,たかし
+ますざき,まさる
+あんどう,ゆうこ
+かたぎり,ひでひこ
+もりやま,あきら
+さとう,きよたか
+ひるかわ,まさし
+うえだ,つぐひろ
+なか,あきひと
+みやざき,たかし
+おくぼ,まさゆき
+たちかわ,ゆひち
+わたなべ,いくお
+あさかわ,ひとし
+かわはら,としや
+おさだ,のぼる
+さかい,さとし
+くりやま,もりひろ
+さいとう,じゅにち
+すきがら,としこ
+あけひ,のぶつぐ
+はやし,たかし
+かわた,とおる
+しまがき,しげいちろう
+ほり,としや
+のむら,あきひろ
+とむら,さとし
+くぼ,まさお
+にしもと,としたか
+よしだ,ひろし
+さぎ,まさたか
+かんの,まこと
+やぶの,みちなお
+やすなが,せいじ
+ひがしうえ,まさや
+こさき,はじめ
+なかじょ,はるお
+おの,さなえ
+むらた,こずえ
+しょじ,よしこ
+かわもと,くみこ
+えさき,きよみ
+えいどめ,なおみ
+すずき,みさえ
+もとやま,かずよ
+はまだ,よしこ
+こしかわ,しんいち
+はやし,きよこ
+やまざき,のりひと
+まつもと,こうじ
+おの,たかよし
+はなわ,けいこ
+はせがわ,まさき
+みやた,ひろゆき
+きたざわ,ひろひと
+えんど,まさゆき
+ながさか,としひろ
+よしもと,とおる
+くろさわ,こぞ
+まるやま,ひであき
+なかにし,あきひろ
+よしだ,まさる
+ふくた,ひでかず
+ふじさわ,ゆたか
+さくま,やすかず
+はしもと,あきら
+わだ,としお
+にしざき,まさはる
+ふかがわ,ゆきや
+あおやま,よしまさ
+きよたに,しんいち
+とりはら,ただし
+ながの,けいじ
+おが,まさあき
+さかの,まさかず
+みつはし,やすひこ
+ありもと,よしあき
+よしまつ,ひろみつ
+あおやぎ,けんさく
+やまだ,よしはる
+むらた,かずゆき
+いりえ,けいいち
+やまざき,ひでや
+えぞえ,かつひこ
+さとう,よしはる
+おた,かつみ
+いのう,まさおみ
+かど,のぶお
+ささき,えつこ
+かけひ,まさかず
+つちや,つとむ
+まさおか,ひろゆき
+すずき,たけし
+とね,ゆたか
+おわだ,たかし
+うえき,まさひろ
+まえだ,せいこ
+ふじおか,たかあき
+うらべ,あきお
+なかむら,まさひこ
+いさか,ゆみこ
+にしさか,しんいち
+いわさ,まさのり
+たくしま,けいいち
+つかもと,つよし
+さくま,きよし
+ひょど,もりひと
+なかむら,たつや
+ささき,よしひろ
+ふくわき,よしひろ
+おくむら,かずや
+たかはし,しょぞ
+しろい,やすお
+こかぶ,とみひろ
+のぐち,のりあき
+たかつ,まさと
+よねざわ,かずのり
+さかいだ,やすこ
+こいずみ,なおこ
+まえだ,ゆひち
+まんだ,まさあき
+こぐれ,のぶお
+あきもと,えいいち
+たけむら,よしお
+すずき,ふみお
+やまうち,たけひこ
+さえき,ひろし
+わかばやし,こういちろ
+あきもと,まさお
+よしだ,としや
+さとう,まさよし
+おしま,とよひこ
+ささき,やすし
+あらい,ただお
+わたなべ,ひろき
+いけもと,ひろかず
+きくい,てつや
+ひらた,やすひろ
+まきうち,みつや
+こせき,かつゆき
+にしかわ,ただし
+いがらし,いちろう
+たなか,よしと
+ほんだ,ともあき
+はった,こうじ
+はらだ,じゅにち
+よしだ,ゆうじ
+わたなべ,のぶゆき
+こいずみ,まさひこ
+こすだ,ひろあき
+みやけ,つねお
+ふじや,やすとし
+まさき,まさひで
+さくらい,あきひで
+にしやま,てつじ
+かわせ,ゆきお
+おかざわ,こういち
+あさか,ひろみ
+おがわ,たくや
+ながさわ,しろ
+きたわき,やすひろ
+しみず,ふみお
+こばやし,ただつね
+たちばな,えいいち
+いまなか,ひろみ
+うしまる,ひさかず
+おかむら,おさむ
+やまの,ひろし
+きたむら,りょひち
+たかまつ,なおひさ
+ときかわ,まさあき
+いけだ,たけし
+いしだ,あきら
+たにはら,ひでき
+おがわ,よしお
+たなか,たかのぶ
+なかじょ,しんや
+ともざわ,としゆき
+はらだ,のぶあき
+はなぶさ,はじめ
+とくおか,まさお
+べっしょ,まさのり
+なかしま,まさはる
+あさくら,しげこ
+みやでら,さとみ
+すずき,けん
+よしむら,けんいち
+さわ,ゆういち
+なかやま,みちかず
+ひらざわ,ひでき
+ふじわら,かずひで
+すがわら,としや
+たにがわ,のぶたか
+ほんだ,みつぎ
+はない,ひとし
+えぐち,しょすけ
+かさい,けいこ
+くろさわ,のぶこ
+たじま,せつこ
+さとう,あつこ
+ひびの,あつし
+すがや,まさひろ
+くらた,かつひこ
+ますだ,やすひこ
+すぎはら,ひろし
+かねこ,なおき
+かつ,よしひさ
+まる,まさゆき
+たなか,こういち
+としおか,よしひろ
+しげの,まさあき
+やまもと,とおる
+なかがわ,まりお
+やまぐち,やすと
+かわもり,こういち
+むらやま,さくめい
+しゅ,よひち
+いけだ,ひろし
+こだま,しん
+かとう,たつし
+はくちょ,つねお
+かげん,しゅ
+てずか,こういち
+たにぐち,はるき
+てらだ,けいこ
+かとう,よしゆき
+ないとう,たかし
+いとう,ひろや
+こばやし,ひでかず
+たなか,あきら
+ささき,りょじ
+ほんだ,さとみ
+ひえだ,かつみ
+さかい,ひろき
+かつみ,よしひろ
+たけべ,まさる
+のぐち,なおや
+わだ,ひろゆき
+うえやま,たつお
+うえの,さとる
+たんご,いさお
+むらかみ,かおる
+あらき,こうじ
+あらせ,まさたけ
+やまもと,なおき
+わしお,たかき
+わけじま,たけお
+こいずみ,たかし
+とくやま,けんじ
+とみなが,ひでとし
+きしだ,わたる
+じょけん,みちと
+ひろせ,あきお
+うちやま,かずのり
+わかすぎ,たかし
+いしぐろ,たかし
+にしむら,つよし
+いのまた,えいじ
+つつみ,けんじ
+いりえ,たかひろ
+さいとう,ひでお
+うえの,かつみ
+ほんだ,こぞ
+きたむら,ますひろ
+やまがみ,しろ
+なかにし,ひろゆき
+うえだ,よしふみ
+ひろた,けんすけ
+うえだ,としふみ
+いけだ,けんじ
+はなぶさ,せいじ
+こだま,みちひろ
+おかもと,よしゆき
+すずき,けんいち
+すずき,ただたか
+にいくら,かつのり
+にしだ,ひろかず
+おさべ,かおる
+ほそかわ,としひこ
+いまお,あつし
+ふじた,かずお
+おの,しんいち
+なかやま,おさむ
+はやし,かよこ
+すがはら,なみ
+はらだ,まさひろ
+あべ,たかし
+あべ,わたる
+あべ,ともき
+あだち,ひろし
+あいば,よりのぶ
+あかばね,ひろあき
+あんどう,なおき
+あんどう,ひろみつ
+あおき,ひさえ
+しいき,あきひろ
+あらい,ひろひさ
+あらい,じゅにち
+あらい,けんいち
+あらかわ,よひち
+あらき,よしのぶ
+あらき,よしのり
+あらき,よしお
+あらき,けいじ
+あらまき,かずのり
+あらめ,いちろう
+ありむら,しゅにち
+あさみ,けいいち
+あずま,けんいち
+ばば,ただひろ
+ばば,だいすけ
+ちば,かずお
+ちば,えいほ
+ちん,ともゆき
+だいこく,まさし
+でぐち,ひろし
+でき,しょひち
+どい,とおる
+えださわ,たけし
+えぐち,いさお
+えんど,たつや
+えんど,たかゆき
+えりかわ,きよはる
+ふじい,かずあき
+ふじもと,まきお
+ふじもと,たかね
+ふじの,たけし
+ふかはら,しゅひち
+ふかみ,ひろよし
+ふかやま,ひでかず
+ふくだ,もとこ
+ふくい,のぶあき
+ふくもと,こういち
+ふくなが,ともゆき
+ふくしま,よしのぶ
+ふくしま,ひろのり
+ふなき,よしあき
+ふなき,のぶひこ
+ふるや,ひでき
+ごはら,よしなり
+ごと,かずろ
+はが,まさお
+はぎの,ゆうこ
+いちむら,ひろし
+はま,ひでと
+はなだ,まゆみ
+いば,よしあき
+はせべ,あきら
+はせがわ,なおき
+はしもと,のぶゆき
+はし,まさゆき
+はたの,まさひこ
+はとり,ひろし
+はやし,まさひこ
+はやし,のぶお
+ひだか,かずたか
+ひがし,さかえ
+まの,やすふみ
+ひらい,いさお
+かみさき,よしひさ
+ひらの,しんいちろう
+ひろい,ただし
+ひろもり,かずろ
+ひろさわ,まこと
+ひろさわ,なおき
+ひろせ,まさよし
+ほんだ,きよさだ
+ほんま,かつへい
+ほりべ,としろ
+ほりえ,のりあき
+ほりぐち,なおあき
+まつもと,のぶひろ
+ほり,しんたろう
+ほり,あきひこ
+ほしかわ,こうじ
+ほそかわ,かずこ
+ひょど,きよたか
+いばらき,よしかず
+いちおか,よしたか
+いけだ,としひこ
+いまい,まさひこ
+いまむら,ひでお
+いまなか,よしはる
+いなだ,あつし
+いなむら,おさむ
+いのうえ,しんいち
+あらい,よ
+いのうえ,ひろやす
+いしい,しげる
+いしい,ひろし
+いしかわ,ゆひち
+いしかわ,としひで
+いしおか,はじめ
+いそだ,ひろみ
+いとう,のりゆき
+いとう,すすむ
+いとう,まさはる
+いとい,ゆひち
+いとう,あつふみ
+いわい,たかひと
+いずみや,よしたか
+かじた,たかあき
+かめい,ともや
+かない,ひろし
+かなざし,こういち
+かねこ,さとる
+かねこ,としみ
+かの,えいじ
+かりう,きよみ
+つきじ,ひろし
+かさまつ,みきお
+かたぎし,あきら
+かたやま,まこと
+かたやま,まりこ
+いそだ,まさひろ
+かたやま,ちずこ
+かとう,かずひと
+かとう,ただし
+かとう,しんじ
+かとう,あきら
+かつまた,まさのり
+かわべ,さとし
+かわべ,しんじ
+かわべ,まさひろ
+かわだ,のりこ
+かわだ,たけし
+かわもと,まこと
+かわたに,いくお
+きみずか,しげじ
+きむら,たかのり
+きむら,ひろゆき
+きのした,まさし
+きさか,あきら
+きしだ,てつめい
+きたがわ,たかお
+きたむら,こうじ
+きた,さつお
+きよの,まこと
+こばやし,やすし
+こだま,ちえ
+どひ,たくや
+こはら,ゆきのぶ
+こいで,あつし
+こいわ,むねひと
+こいずみ,けんすけ
+こまつ,あきひこ
+こめだ,あきお
+こんど,せいき
+こんど,みちろ
+こにし,かずや
+こさか,りょたろう
+こたき,やすひろ
+こたに,ひでお
+ことぶき,たかこ
+たしろ,きょひち
+くぼた,よしひろ
+くぼ,ひでと
+くどう,まさゆき
+くまがい,かつのり
+くろせ,かずなり
+くしま,ひらやす
+くしみや,まさき
+くつかけ,としや
+くわの,ひょじ
+ぇえ,はるこ
+まつなが,やすたか
+まえだ,ひろゆき
+まえはら,みき
+えのき,とおる
+まえかわ,じゅんじ
+まえき,ひろあき
+まんの,じゅん
+まの,ひでき
+まんたに,ひろし
+まるやま,かずのり
+ませ,ゆきまさ
+ますざわ,てつや
+まつだ,まさと
+まつい,やすひろ
+まつい,おさむ
+まつもと,やすこ
+まつむら,こき
+まつの,しんいち
+まつざき,しゅぞ
+みき,かずひろ
+みこだ,ひでき
+みむら,ゆうじ
+みむら,さとし
+みなみ,としや
+みなみ,こうじろ
+みなと,あやこ
+みねまつ,しんぎ
+みね,えいじ
+みしま,よひち
+みわ,やすひろ
+みやぐち,かずひこ
+みよし,まさお
+みずた,みつのり
+もものい,いつこ
+ほんだ,まさと
+もりた,やすあき
+もりた,かずあき
+もり,のりゆき
+もり,れいこ
+もり,しげる
+もり,てるゆき
+もり,かずたか
+むねむら,しげのぶ
+むらかみ,さとし
+むらおか,のぶひろ
+みょが,やすし
+ながみね,のりこ
+やまだ,まさたか
+ながお,ひろゆき
+ながた,まさひろ
+ないとう,たかひろ
+なかがわ,ゆうこ
+なかいち,じゅんこ
+ささき,けいすけ
+なかじま,たけし
+なかしま,やすし
+なかこじ,あきひこ
+なかむら,あきら
+なかむら,あつし
+なかむら,かずひろ
+なかむら,みのる
+なかむら,たかし
+なかむら,としみつ
+なかむら,よじ
+なかむら,こうじ
+なかにし,ひろき
+なかの,まさし
+なかの,しんいち
+なかしお,としかず
+なかた,けんじ
+なかやま,こういちろう
+なんけ,たろう
+ならざき,ひろのり
+なりせ,つかさ
+なるおか,ひろし
+ねもと,そうたろう
+にむら,たつや
+にむら,まさふみ
+にしむら,さとし
+にしの,とおる
+にしした,じゅん
+にしうち,だいすけ
+にしやま,ゆうこ
+やじま,よひち
+にしざわ,くみこ
+にわ,としゆき
+のぶなが,てつや
+のがみ,きんや
+のぐち,こういちろ
+のぐち,かなこ
+のま,たかし
+のま,あつし
+のむら,たいちろう
+のむら,ゆきひろ
+のむら,いさむ
+のせ,ただし
+のざわ,すすむ
+ぬきい,まさゆき
+ぬまお,つとむ
+ぬまた,かずまさ
+おちあい,てつのり
+おちあい,しゅひち
+おだはら,なおひと
+おだ,よしえ
+おがさわら,ゆたか
+おどまり,あきら
+おかど,みつし
+おまさ,まこと
+おなが,しんいち
+おの,みゆき
+おさき,とよみ
+おさわ,こういち
+おすみ,こうじ
+やました,のりお
+おた,しゅにちろ
+おた,ただあき
+おつか,よひち
+まつなが,かつみ
+おひゃま,あきら
+おかだ,かずひろ
+おかだ,たかゆき
+おかだ,よしお
+おかだ,いくお
+おのでら,みのる
+おかもと,しゅじ
+おかざき,とひちろ
+おくだ,ふみお
+おく,あきら
+おの,ひろゆき
+おの,ひでゆき
+おりて,あつし
+おさだ,ひでたか
+さいとう,かずゆき
+さいとう,まさる
+さいとう,なんてつ
+さいとう,たかし
+さいとう,たつや
+さいとう,よしあき
+さいとう,のりゆき
+さかい,りえ
+いしざき,たけし
+さかもと,ひろふみ
+さかのうえ,よしのり
+さかうえ,たかお
+さこだ,ひろゆき
+さくらい,たかあき
+さくらい,としゆき
+さぬき,のぶゆき
+ささき,さちこ
+とみた,けいいちろう
+さとう,けんいち
+さとう,むつみ
+さとう,むつお
+さとう,しんご
+さとう,しゅじ
+さとう,よいち
+さとう,ゆたか
+さわだ,かずひろ
+せお,あきひろ
+せざい,いちろう
+しばた,ゆきのり
+しばた,ひろし
+しがき,ひでお
+しみず,かずまさ
+しみず,のぶお
+しみず,しげのり
+しみず,たかし
+しみず,りゅうたろう
+しもむら,あきと
+しのはら,ともなり
+しらつ,てつお
+しろした,なおき
+しょじ,よしのり
+しょみつ,まさゆき
+そだ,としや
+そもり,かきょ
+そ,あつこ
+なか,まさと
+すぎむら,けんさく
+すぎの,かずやす
+すぎさわ,たけひこ
+すぎた,よ
+すぎうち,あきひこ
+すぎやま,ひろむ
+すぎやま,よしみ
+すぎやま,あきら
+すずき,あきとし
+すずき,ひでお
+すずき,ひろあき
+すずき,かずひろ
+すずき,まこと
+すずき,さとし
+すずき,ゆうこ
+すずき,よしひろ
+たちばな,かつすけ
+たいら,たつお
+たいら,かずひこ
+たかだ,ゆうじ
+たかぎ,けいし
+たかはし,まさひろ
+たかはし,のぶゆき
+たかはし,さゆり
+ますざわ,しんすけ
+たかはし,あきのり
+たかま,まさのり
+たかの,かずみ
+たかの,しんや
+たかさか,ゆうじ
+たかせ,しん
+たかた,ひろあき
+たかやま,としあき
+たかやなぎ,ひでと
+たけだ,こういち
+たけだ,ゆうこ
+ふじい,たかし
+たけのり,あきら
+たけした,ひであき
+たけうち,ひろゆき
+たけうち,まさかず
+たきざわ,のりいつ
+たきざわ,たかゆき
+たまき,はじめ
+たむら,ひとし
+たむら,まさあき
+たむら,ひさと
+たなか,みえこ
+わたなべ,かずよし
+たにやま,はじめ
+たに,かつじ
+てらきた,くみこ
+てずか,あつし
+とばり,ありひろ
+とがし,えり
+やまだ,あきら
+ときぞの,あつこ
+とみなが,いくし
+とみなが,ひろかず
+とみた,ゆうじ
+とみた,たかとし
+ともおか,まさあき
+とのさき,つよし
+とりざわ,さとこ
+こいけ,あきひろ
+とよかわ,てつね
+とよかわ,のぶお
+つぼい,しょご
+つかだ,あきひろ
+つくい,のぼる
+つるかわ,かずひこ
+つつい,ながのり
+つつい,しんいち
+うちだ,すすむ
+うちだ,じゅにち
+うちま,けんいち
+うちやま,しげお
+うだ,もとひさ
+うえだ,しんじ
+うえの,しんじ
+うえの,てつお
+うえの,ひとし
+うけがわ,よしのり
+うまずめ,えみ
+うめむら,ひろこ
+わだ,まさよし
+わだ,ひさよし
+わたなべ,ただし
+いいだ,とおる
+わたなべ,ひさし
+わたり,えいじ
+やぎ,としかず
+やまだ,ゆうじ
+やまが,ひろき
+やまぐち,じゅにち
+やまぐち,しゅにち
+やまぐち,あきひろ
+やまもと,ひさよし
+やまもと,かずのり
+やまもと,きよし
+やまもと,のりお
+やまもと,たかし
+やまもと,たかゆき
+やまもと,よしひろ
+やまもと,きみひろ
+やまなか,ひろし
+やました,やすひこ
+やまうち,りょ
+やまざき,さとし
+やまざき,たかし
+やまざき,やすよし
+やの,よしゆき
+やの,ひろゆき
+やすだ,ひでお
+やすまつ,まさのり
+やすもと,ひでお
+やすにわ,まさし
+よだ,てつや
+よだ,まさゆき
+よしだ,かずゆき
+よしい,ひでし
+よしなが,まさのり
+よしの,かずと
+よしたけ,かおる
+たきざわ,まさよし
+やまぐち,えいじ
+かばしま,さとる
+さくら,かずあき
+むらやま,はるひこ
+ひきだ,まさとし
+むらい,けんじ
+じょほ,ゆきお
+えんど,こういち
+てらむら,たけし
+わたなべ,かつなり
+いまい,こうじ
+もりもと,たかゆき
+こやり,おさむ
+まつみや,いさお
+しばた,よしひろ
+ちしろ,たつや
+いたみ,ゆみこ
+おざき,たつみ
+ふくもと,あきひろ
+おかだ,たかし
+さわだ,かずよし
+さくらい,かずひさ
+はやし,ゆすけ
+まつおか,ひろゆき
+みよし,かずみ
+やまなか,くにひろ
+しみず,あきら
+こはら,せいじ
+にしかわ,たつお
+いまい,たかひこ
+ふじむら,しげや
+こじま,としかず
+こばやし,せいじ
+きくち,ゆひち
+さいとう,かずお
+やました,よしひろ
+あべ,ひでお
+てずか,ひとし
+たなか,まさつぐ
+にわ,ひろし
+かめい,ひろし
+やの,たかし
+なかまる,よしのり
+おはた,やすのり
+やすやま,のりよし
+かすが,こうじろ
+いしい,ひとし
+ふじもり,まさのり
+いわもと,ひろし
+やました,やすお
+きた,ひろゆき
+むらおか,やすゆき
+いぐさ,ひろし
+ながさわ,かつひこ
+やまぐち,みつる
+おだじま,ひであき
+おた,しんじ
+はぎの,たかし
+やぶき,わたる
+いき,みのる
+さいとう,みずほ
+やまだ,みつお
+なかやま,やすし
+むらまつ,まさのり
+たしろ,まさひろ
+いしはら,みつお
+しばおか,あきひこ
+なかお,のりこ
+ふじた,ひろし
+さくた,るみこ
+はた,ともみ
+おひゃま,ゆうこ
+たご,よしずみ
+まつむら,ひろじ
+いとう,やすひろ
+きむら,ゆたか
+あおき,まみ
+こまがた,なおいちろう
+ならむら,としあき
+ふじもと,よしとし
+みやさか,まさと
+はやし,たかし
+さいとう,まりこ
+おがさわら,かおる
+おつか,しょひち
+かわい,まさゆき
+しまず,たつお
+たかはし,やすのり
+まえざわ,としき
+はだ,まさゆき
+まつひら,すすむ
+すぎはら,ただし
+なかじま,きょこ
+はたけやま,かずお
+あおき,まさゆき
+しぶかわ,たけお
+いしだ,みつたか
+おかだ,ひでとし
+いとう,かずこ
+かとう,まさき
+こばやし,としひこ
+むらさわ,まさひろ
+みほ,かずひこ
+すがね,しょじ
+いしかわ,としゆき
+おか,ともゆき
+いわみ,よひち
+なかやま,きしこ
+いとう,いずみ
+すぎやま,かおる
+かしもと,えり
+なかむら,のぼる
+あおやま,よしのぶ
+しばた,てつや
+まつお,まさひこ
+しのむら,きよひさ
+ふるかわ,しげる
+もとき,たかし
+わたなべ,あきら
+あんどう,まさひろ
+たけひ,なおみつ
+いしい,みのる
+のちせ,まさのり
+みやなが,よしのぶ
+しんど,よしひこ
+おた,やすひろ
+たに,ゆみこ
+こむろ,ひろし
+いわさ,かずき
+まつもと,しんいち
+きむら,よしこ
+あおき,まさゆき
+まつばやし,ひでのり
+ごと,けんいち
+おがわ,よしのり
+すぎたに,あおい
+おくの,よしふみ
+さくらだ,しゅひち
+むこひゃま,ちお
+いとう,まさひろ
+やまもと,さちこ
+やまもと,あきふみ
+かねこ,かずひこ
+やまざき,としこ
+なかむら,ひろみ
+みわ,みよこ
+さむかわ,よしあき
+なかだ,ふみのり
+よしとみ,ひろみち
+たかしま,ひであき
+いしげ,ひさと
+すえはら,あきひこ
+いのうえ,ひろし
+のじま,ふみゆき
+さくま,あきら
+さの,はるお
+むらおか,ゆきお
+みうら,しんぺい
+さかもと,のりこ
+なるお,さとし
+はせがわ,ただし
+おかだ,まさとし
+やひろ,しゅへい
+ばば,やすひろ
+あた,とも
+ながせ,おさむ
+かわえ,しろ
+みうら,としゆき
+ふじた,けんいち
+つるみ,つねじ
+もちずき,あきこ
+よしだ,ひろゆき
+おかもと,ひでみ
+やすもと,まりこ
+ねもと,さちえ
+ひだか,よしみち
+ますだ,かつじ
+とくなが,りゅぞ
+なかざわ,じゅん
+ふじなわ,せいこ
+よびかわ,みつひろ
+きただ,てつお
+よしの,のぶゆき
+ばば,たくや
+くろかわ,あやの
+かとう,きよし
+わたなべ,いずみ
+つちだ,まきよ
+すずき,さとこ
+みずの,よしお
+たにもと,えみこ
+いけの,かずあき
+いとう,まさふみ
+たけだ,みつはる
+まえだ,たくじ
+くどう,うえみつ
+かげやま,くみこ
+やまかげ,ふみひと
+さえぐさ,すすむ
+みずたに,よしはる
+くどう,かずひろ
+こおりやま,たけし
+かたよせ,やすひろ
+おさだ,よしと
+やぎはし,ひろし
+すみ,たかし
+たなか,としお
+くどう,あつこ
+たけひ,みゆき
+あめみや,あきら
+なかむら,たくみ
+きよみつ,めぐみ
+いずみだ,しょこ
+ふなき,とおる
+たけした,こへい
+みうら,かつみ
+いしばし,みねお
+もりあい,よじ
+むらやま,れいこ
+おさわ,なおこ
+ふかだ,としひこ
+やまだ,みずほ
+いとう,よしえ
+おのでら,けいこ
+はやさか,しゅひち
+おつか,たつお
+とひゃま,あつし
+かわはら,ゆきお
+えびさわ,あきら
+やまかわ,みちひろ
+やまもと,たかし
+すずき,けんじ
+おやまだ,よしか
+まつやま,ひろあき
+あべ,かずひこ
+あべ,きくお
+あべ,のぶこ
+あべ,けいじ
+あげた,えいじゅ
+あかはね,やすのり
+あけなが,よしかず
+あきやま,ひでひこ
+あきざわ,あきら
+あまだ,とみお
+あまの,まさみち
+あも,ひでひこ
+あんどう,ひろたか
+あんどう,みつる
+あんどう,まさき
+あおの,てつや
+あおやま,やすとも
+あらい,とおる
+あらかわ,たかし
+ありもと,りゅひち
+ありお,のぶひろ
+あさい,やすお
+あさかわ,かずまさ
+くろき,ゆきお
+あずま,じゅにち
+ばんの,ひでひろ
+べつやく,じゅん
+びと,しげお
+ちば,ひでかず
+ちゅじょ,みきお
+えだ,まさし
+えんど,あきお
+えさき,ひであき
+ふじい,なおき
+ふじい,としふみ
+ふじもと,ひろき
+ふじた,いわお
+ふじた,かずひろ
+ふじわら,ひでし
+ふかざわ,ひでき
+ふくだ,まこと
+ふくはら,あきら
+ふくしま,よしひと
+ふくどめ,ゆきのり
+ふくやま,しんじ
+ふなばし,まさきよ
+ふるだて,けんご
+ふるさわ,じん
+ふるた,ひろし
+ふるや,かつき
+ふしき,けんいちろ
+はまだ,なおみ
+はなだ,しんいち
+はなみ,ひろし
+はらだ,ふみお
+はるかわ,あきら
+はせがわ,きよなお
+おつ,あきひろ
+はしもと,さとし
+はしもと,ともひと
+はすもと,すすむ
+はっとり,やすひこ
+はやさか,かずよし
+ひだか,かずひさ
+ひぐち,さとし
+ひぐち,まさゆき
+ひじくろ,あきひこ
+ひらかわ,しんじ
+ひらの,りきや
+ひらた,しんいち
+ひろせ,ゆひち
+ひさだ,こういちろ
+ほり,かつのり
+ほひゃ,ひでお
+ほんだ,あきら
+ほんま,いずみ
+たなか,よひち
+ほしじま,むねひろ
+ほしか,あつし
+ほそだ,えみこ
+いちかわ,あつし
+いちむら,つよし
+いがの,たかお
+いいだ,けさお
+いいおか,けいこ
+ながの,ふさゆき
+いけざわ,なおゆき
+いもと,じゅにち
+いなずみ,ひろよ
+くしみや,まさひろ
+いのうえ,さちこ
+いのうえ,たかし
+いのうえ,のりやす
+いぬつか,かずひこ
+いさじ,しげゆき
+いしだ,たつや
+いしだ,つよし
+いしだ,たつお
+いしがき,たけし
+いしがみ,ちえみ
+かじたに,やすひろ
+いしはら,けいご
+いしむら,みどり
+いしやま,まさゆき
+いしざき,ひろし
+いそべ,さとる
+いそざき,のぶやす
+いとう,すみれ
+いとう,やすはる
+いわあさ,しんいち
+いわい,しんや
+いわま,あきら
+いわもと,ともゆき
+いわなが,なおき
+いわした,ひでと
+いわた,しゅひち
+いわた,いさお
+かどわき,くにあき
+かげやま,えりこ
+わたなべ,じゅにち
+かみや,おさむ
+かみや,ひろゆき
+かんばやし,まさひこ
+かの,しゅひち
+かりや,のぶお
+かさき,よしひこ
+かしま,まさあき
+かすや,ちくさ
+かとう,ひさと
+かとう,けんたろう
+かとう,なおたか
+かとう,さとし
+かとう,よひち
+かとう,ひろのり
+かわばた,しこ
+かわばた,かずまさ
+かわぐち,えいじ
+かわはら,さとし
+かわはら,けんいち
+かわじり,いずみ
+かわかみ,くにあき
+かわくぼ,けんいち
+かわまた,きんじ
+かわむら,ひろし
+かわの,なりやす
+かわさき,じゅん
+かわしま,まさお
+かわず,あきら
+きばし,たかき
+きまち,かずひろ
+きもと,けんじ
+きむら,みつぐ
+きんばら,ひでのり
+きのした,ひろゆき
+きのした,だい
+きりさわ,あつし
+こばやし,ひでみち
+こばやし,ひろみ
+こばやし,かずふみ
+こばやし,みちお
+こだま,てつお
+こだま,かずとし
+たかむら,たかのぶ
+こひなた,ひとし
+この,のりあき
+この,まさひと
+こひゃま,としひさ
+こずき,まさのり
+とど,ひでひこ
+こじま,まさき
+こんど,たけし
+こんど,たくや
+こんど,よしみち
+こんの,やすし
+こたき,ひろき
+こやいし,いちろう
+こやなぎ,じゅにち
+くぼ,ひろあき
+くどう,まさお
+くまがい,ふじひこ
+くまき,こうじ
+くらち,おさむ
+くらた,もとひこ
+くりた,ゆすけ
+くりやま,ひろし
+くろだ,たかひろ
+くろかぎ,こうじ
+くろさわ,としお
+くろさわ,こうじ
+くわの,しんじ
+まえばし,あきら
+まえざわ,たかし
+まの,まさとし
+まるわか,かおる
+うちやま,ひとし
+ますだ,みか
+まつい,のぼる
+まつい,けんたろう
+まつもと,きみひと
+まつもと,なおゆき
+まつなが,しんじ
+まつしま,たかゆき
+まつした,こすけ
+まつざき,みき
+いないし,しゅんじ
+みかみ,こすけ
+みなぎ,まさのぶ
+みつやま,しんじ
+みうら,せいき
+みやけ,ひろたか
+みやもと,としあき
+みやた,のぶゆき
+みやうち,よしお
+みやうち,ひでなお
+みやざわ,たつお
+みやざわ,じゅん
+みよだ,しげき
+みぞぶち,さとし
+みぞた,しんいち
+ちば,ひさと
+みずはし,まさとし
+みずまち,もりひろ
+みずたに,ただし
+みずたに,たけし
+みずたに,よしお
+もちずき,けいいち
+もりもと,あきみつ
+もりたに,こういちろ
+もりた,しげき
+もりた,あつし
+もりわき,あつこ
+おくい,こうじ
+もり,まさき
+もり,いちろう
+むこひゃま,あきら
+むらて,たかし
+むと,たかひさ
+ながい,けんじ
+ながの,たけお
+ながおか,ひろひさ
+ながせ,まこと
+ながた,せいじ
+ながた,さとし
+ながわ,つよし
+なかまる,ひろゆき
+なかむら,みのる
+なかむら,ななこ
+あべ,たかし
+なかむら,とよひこ
+なかむら,たかし
+なかしま,しんいちろう
+なかしお,たけひこ
+なか,たけみ
+なみき,たかゆき
+なんぶ,ひろゆき
+やまぐち,しんいち
+にいみ,かつき
+にしだ,みつひろ
+にしだ,みつとし
+にしだ,たかひろ
+にしだ,かつみ
+にしくぼ,ひろゆき
+にしむら,もとき
+にしむら,しんいち
+にしお,よしき
+にしお,あきら
+にしやま,ともこ
+やがわ,よひちろ
+にった,としや
+のべおか,あきら
+のじり,ひさよし
+のむら,ひろゆき
+のなか,のりこ
+おばな,のりかず
+おちあい,ひろしげ
+おちみず,しんじ
+おち,しげふみ
+おだおはら,ひろよし
+おだ,えいじ
+おがた,まさあき
+おがわ,すすむ
+おがわ,あきひろ
+おぐら,たかあき
+おひら,つよし
+おひら,まさと
+おひし,しんじ
+おひし,たかし
+おき,けいじ
+おくぼ,ひろみ
+おの,あきほ
+おぬま,よしのぶ
+おぬま,てつや
+おたき,かつし
+おた,みのる
+おた,としゆき
+おた,たかし
+おと,みつのり
+おつぼ,しんご
+おひゃぎ,ひろかず
+おひゃま,まさき
+おいえ,まさとし
+おじま,えつこ
+おかべ,なおゆき
+おかだ,のぶゆき
+おかもと,いちろう
+おかね,あきら
+おかの,まこと
+おかの,かゆ
+おかざき,かずこ
+わたなべ,けいこ
+おくだ,しげのぶ
+おくの,なるし
+おなや,まさひで
+おの,とおる
+おの,よしなが
+おの,こういち
+おさない,まさずみ
+おざき,ひろふみ
+さいとう,まさひろ
+さいとう,あつし
+さじ,かずや
+さじ,あきら
+さかい,いちろう
+さかい,とおる
+さかくら,まさき
+さかうえ,たかし
+ささべ,ひでお
+ささき,まさこ
+なみき,はるひこ
+さたけ,まさとし
+さたけ,あつひろ
+さとう,かつし
+さとう,かずこ
+さとう,きよし
+さとう,しんや
+さとう,ゆたか
+さとう,きよあき
+さわだ,ひでお
+せきぐち,よしみ
+せきもと,じゅん
+せきね,やすひで
+せきおか,かずお
+せきや,かずひこ
+せき,ともすけ
+せんた,たかひろ
+しばた,やすゆき
+しいな,まこと
+しいや,ひでかず
+しまばやし,ひろし
+しまだ,かつひろ
+しまだ,わき
+しまむら,しゅひち
+しみず,たけし
+しみず,なおき
+しもむら,ゆぞ
+しのだ,しげき
+しのはら,ひろし
+しおざわ,はじめ
+しらいし,ひろあき
+しらさき,としゆき
+しらとり,きいち
+しさい,まもる
+しょだ,ひろあき
+そう,じゅにちろ
+そのべ,のりあき
+すどう,さとし
+すどう,ふみはる
+すぎうら,ひでき
+すぎやま,まもる
+すぎやま,しんいちろう
+すみだ,みちとし
+すみかわ,あきひと
+すずき,ひでとし
+すずき,いたる
+すずき,かつあき
+すずき,こうじ
+すずき,もとゆき
+すずき,のぶゆき
+すずき,ゆうじ
+すずき,ようこ
+ほそかわ,ひでじ
+たぶし,まさひろ
+たちざわ,けいすけ
+ただ,なおき
+ただ,とおる
+たかた,しゅにち
+たかがき,さとこ
+やまざき,なおき
+たかはし,りょひち
+たかはし,ともじ
+たかはし,ひろき
+たかの,ひとし
+たかさき,みねかず
+たかす,ひろし
+たかとり,あつし
+たかやま,としなり
+たかやま,よしゆき
+たかやま,やすぞ
+たかや,はじめ
+たけだ,かずあき
+たけだ,ゆり
+まつおか,いくた
+たけい,のりふみ
+たけうち,たかあき
+たけうち,ひろとし
+たけ,ゆすけ
+たきみや,ひでかず
+たまたに,なおき
+たむら,よしつぐ
+たむら,ひろき
+たなか,まさやす
+たなか,たかひろ
+たなか,たかし
+たなか,かずよ
+たにもと,こうじ
+たにやま,まさみ
+たんの,しげる
+たの,ゆうじ
+てらざわ,よしかず
+とくしげ,たえこ
+ごと,ひろゆき
+とみなが,よしひろ
+とんしょ,のぶひこ
+つぼい,ともおき
+つぼた,のりとし
+つじむら,けいこ
+まつむら,ともひろ
+つかだ,かずあき
+つねよし,よしひろ
+つるおか,けんじ
+つる,かずひさ
+うちだ,ともやす
+うえだ,あやこ
+うめさき,のりひろ
+うらかわ,しんいち
+うらかわ,あきひこ
+わだ,おさむ
+わかばやし,ひさお
+わかまつ,あきら
+わたなべ,さとる
+わたなべ,なおき
+わたり,ひろひさ
+やべ,ひでゆき
+やはぎ,しょひち
+やまだ,しょじ
+やまだ,なおき
+やまこし,あきら
+やまもと,ひでき
+やまもと,さとみ
+やまもと,まさや
+やまもと,よしお
+やまもと,ひでゆき
+やまうち,たもつ
+やまの,きよし
+やまおか,ゆうじ
+やました,かずし
+やまうち,じゅん
+やまざき,けんじ
+やまざき,よしかず
+やなぎしま,あつこ
+やまもと,たかし
+やの,こうじ
+やざき,こういち
+よご,しんじ
+よこい,かずひろ
+よこみぞ,かずひろ
+よこた,まさゆき
+よこた,そひち
+よこた,あつし
+よしだ,よいち
+よしだ,さち
+よしふさ,まさみ
+よしはら,とおる
+よしいえ,ひろふみ
+よしかわ,ともたか
+よしかわ,としひで
+よしお,たけし
+ゆあさ,ひろまさ
+ゆき,ゆかり
+あだち,ますみ
+おにし,みかこ
+おた,たかひこ
+あさの,たけし
+にしむら,やすはる
+やまだ,かつまさ
+さい,としき
+みやもと,ゆうじ
+すずき,ひさお
+ふくい,ゆうこ
+おくだ,しんいちろう
+さいとう,まちこ
+ふるや,いくふみ
+もとやま,ともまさ
+よしざき,はじめ
+なかむら,ちえ
+ときわ,みつひろ
+いなだ,ゆうじ
+ときわ,まさよし
+よしだ,あきら
+たかの,としゆき
+うえだ,かずお
+つちや,みわこ
+しもかわ,みちこ
+まつい,みつよし
+すがや,ひろのり
+みのぐち,くにお
+うえだ,かずお
+いの,かずひこ
+まえだ,くにや
+つぼた,ひさこ
+よしみ,たかお
+いちかわ,かつみ
+ほり,なおひろ
+はやし,ゆひち
+しばた,あつろ
+こばやし,しゅひち
+おくぼ,まさつな
+いわた,のりゆき
+ふじた,たかゆき
+きたむら,けいこ
+くろき,ともこ
+やまもと,ゆうこ
+やまばた,ふみひこ
+さいとう,かつみ
+ふじわら,よしお
+いとう,やすこ
+いいけ,ひかる
+さむかわ,ともじ
+あずま,まこと
+あおき,のりお
+ふじた,いくお
+みよし,しげひろ
+せきやま,ひでや
+てらだ,ゆたか
+えんど,いくこ
+かきもと,ますひこ
+ふるや,たけし
+まきむら,のぶゆき
+こんの,まさひろ
+すぎさき,かずお
+よしだ,けいこ
+はぎわら,たかし
+やざき,ゆきこ
+にのみや,しゅひち
+こさか,ただし
+さの,かずと
+さいとう,とおる
+しもせ,あきのり
+たかはし,まさき
+たつおか,あつし
+たばた,つねお
+なおい,としかず
+ながた,よしお
+にしおか,てるひさ
+まつかわ,たけし
+みずの,けんじろう
+とくなが,いわお
+むらかみ,たけお
+やすかわ,ひろし
+やまぐち,としゆき
+よこうえ,しげお
+あずま,ひろし
+いなだ,ゆうじ
+いしい,かずお
+いまにし,ひろやす
+おかの,しんご
+きし,だいすけ
+くぼた,たかよし
+こみなみ,かずひと
+あいやま,まさき
+さの,よしたか
+たきがわ,まさこ
+こんの,まさお
+せんだい,しげる
+にわの,あつし
+しじょ,ゆうこ
+かとう,けいこ
+あかさか,ひろき
+おんずか,としのり
+こが,ゆきお
+はやかわ,ただし
+はせがわ,のぼる
+ふるかわ,みつゆき
+ふじかど,のぼる
+とのかわ,たけお
+まつお,かねみつ
+きみずか,としこ
+おち,まさのり
+いちこはら,まゆみ
+いけだ,しょじろ
+あらたけ,ちから
+いけだ,しげよし
+いとう,ひろやす
+いけだ,たかし
+いいだ,ひですけ
+おくま,なおよし
+くさば,かずなり
+こばやし,くにお
+ごと,ひろし
+すずき,こういち
+せきね,ともみ
+たかだ,まさよし
+こんど,たけし
+たけやま,ゆうじ
+たかいち,たけし
+そだ,よしお
+たの,まさのり
+しのざき,まこと
+はらだ,まさやす
+くどう,あきこ
+つのだ,いくお
+ふるかわ,ときお
+もりた,よひち
+やまもと,えつ
+やました,まさと
+ゆかわ,かずえ
+よしだ,まさき
+はやし,さよこ
+たんの,かずや
+たかはし,もとのり
+なりあい,ひろし
+たかむら,としゆき
+たんの,よすけ
+こばやし,けいしろ
+ごと,おさむ
+ごだ,けんじ
+なかしま,まこと
+ほしの,さとし
+わこ,あや
+すずき,かつこ
+よしまつ,じゅね なおこ
+なみおか,としあき
+やまぐち,まさゆき
+いしばし,とおる
+いしだ,よしはる
+うちやま,よしお
+えんど,えいこ
+なかの,としたか
+いまい,えいいち
+おさない,まこと
+さかもと,よしのり
+しおみ,あきお
+しまざき,てつお
+てるや,こういち
+なかたに,とおる
+はぎわら,きょこ
+ひがし,みつお
+ほりうち,ふみただ
+みぞろぎ,なおき
+もり,しげお
+いのうえ,まさくに
+しだ,しんじ
+やまもと,ひろかず
+やまもと,まこと
+おたき,せんや
+ふじ,せいじ
+あきもと,しげる
+いいじま,まさふみ
+おぐま,かずお
+さとう,あつし
+つちや,きよし
+さいとう,ちかし
+はら,なおき
+ふじまき,としや
+むろた,なおき
+もり,きよかず
+みぞぐち,しょこ
+いけはた,よしお
+おがわ,なおき
+うえの,たもつ
+たなか,たけひこ
+こばやし,みちよ
+くろす,みちこ
+きたがわ,ひであき
+しのみ,かずや
+はせ,さなえ
+てるぬま,まもる
+きくち,あきこ
+はしもと,ゆみこ
+おかわ,たかお
+おにし,よしひろ
+あべ,かずよし
+あだち,せいいちろう
+あだち,しんや
+あだち,みつまさ
+あご,とおる
+あいはら,としゆき
+あいはら,ひろゆき
+あいざわ,ひろたか
+あかまつ,まさとし
+あかま,かずひろ
+あかせ,まさかず
+あかやま,やすじ
+ふくしま,ひろし
+あきば,まさゆき
+あきの,ゆぞ
+あきしか,ようこ
+なめき,さとし
+あきずき,のりゆき
+あまだ,しんと
+あまの,そひち
+あみの,まさひと
+あんべ,ひでき
+あんどう,まさと
+あんざい,としゆき
+あんざい,かおり
+あおき,あきひこ
+あおやぎ,ひでお
+あおやぎ,じゅにち
+あおやぎ,たつお
+あらかわ,ともみ
+あらかわ,まさゆき
+あらき,しんげん
+あらやす,ともの
+あら,つとむ
+ありた,はるき
+あさだ,ゆうじ
+あさだ,なおみ
+あさかわ,しんいち
+あさくら,ゆきお
+なかさと,とおる
+あさの,のぶはる
+あさり,やすし
+あつみ,ひろとし
+あわか,たかよし
+ばば,ひろし
+ばん,さとし
+ばん,たかお
+ばん,ひろゆき
+ちょさ,ひさし
+だいど,たいすけ
+だいもん,まさゆき
+でむら,としゆき
+どい,ひとし
+えびぬま,あきお
+えぐち,きょこ
+えはら,くにお
+えなみ,ひろあき
+えと,のりえ
+いわさき,ともゆき
+えざき,あきら
+ふじえだ,よしひろ
+ふじえ,かずき
+ふじがき,あきよし
+ふじい,かつみ
+ふじい,かずひろ
+ふじい,けんぞ
+ふじい,わたる
+ふじい,こうたろう
+ふじかわ,まさし
+ふじもり,けいしん
+ふじもと,なおひこ
+ふじもと,よしと
+ふじの,たかし
+ふじおか,あけみ
+おぐら,じゅん
+ふじた,かずお
+ふじた,なつこ
+ふじた,よしなる
+ふじた,かずお
+ふじわら,ゆうじ
+ふかだ,じゅん
+ふかお,こういち
+ふかお,よしちか
+ふかせ,としゆき
+ふくち,あきら
+ふくだ,じゅにち
+ふくだ,みゆき
+まつかわ,しげのり
+ふくだ,しんいち
+ふくだ,ともの
+ふくだ,しょご
+ふくはら,しの
+ふくい,たかし
+ふくい,やすし
+ふくおか,あやこ
+しが,まさと
+ふくしま,さとる
+ふくしま,ゆきお
+ふくしま,しょじ
+おの,ひろし
+ふなつ,あつし
+ごだ,みつひろ
+ごだ,みさき
+ご,まりこ
+こぐれ,よしひろ
+ごと,ゆうこ
+ごと,ふみひこ
+はが,ひでお
+はぎわら,みか
+はまだ,ゆきこ
+まえだ,けんじ
+はまはた,ゆきお
+はまの,ひろし
+はなぶさ,じゅにち
+はなた,しんご
+はなみつ,なおと
+はんだ,あつし
+はらだ,ちかこ
+はらだ,なおき
+はらだ,なおき
+はらだ,としゆき
+はら,よりこ
+はら,ひであき
+はせがわ,かいろ
+はしぐち,きんや
+はしもと,たかし
+はしもと,ゆきよ
+はたけやま,りょいち
+はたなか,きくお
+はつしま,あきお
+はっとり,けんいち
+はっとり,のぼる
+はっとり,のぶひろ
+はっとり,りゅひちろ
+はっとり,よしじ
+はっとり,よしたか
+はやかわ,すみと
+はやしだ,あやこ
+かんだ,ふみお
+はやし,じゅにち
+はやし,まさのり
+はやし,まさゆき
+はやし,みゆき
+とびかわ,まこと
+ひげた,いさお
+ひぐち,まさとし
+ひぐち,のりき
+ひじかわ,さとし
+ひかい,きよし
+ひなた,けん
+ひの,よしひさ
+ひの,つねひさ
+ひらぎ,まさこ
+よもだ,ふみお
+ひらの,ゆきひこ
+ひらの,よしのり
+ひらさわ,あきら
+ひらた,まさや
+あさの,けんじ
+ひらた,こうじ
+ひらつか,つよし
+ひろかわ,ひろし
+ひろなか,かつみ
+ひろせ,みゆき
+たしろ,よひち
+ひろせ,みつひろ
+ひしぬま,ゆうこ
+いわもと,よしのり
+ひうら,まどか
+すぎもと,じゅん
+ほんま,しょひち
+ほんま,たかゆき
+ほんま,やすし
+ほんま,かずと
+ほりかわ,まさのぶ
+ほりお,ひろゆき
+ほり,かずひろ
+ほり,まさひろ
+ほり,ひろし
+ほしの,ひさお
+ほしの,たけし
+ほしの,ふみあき
+ほし,かずひさ
+ほそ,ひさゆき
+ほたて,きみこ
+いちかわ,まこと
+いちかわ,ひろのぶ
+いちき,じゅん
+いちのせ,ひとし
+いだ,せいいち
+いでい,やすゆき
+いがらし,つよし
+いぐち,たいら
+いいだ,たつろ
+いいだ,じゅにち
+いいじま,かつよし
+いいじま,かずお
+いいむら,あつし
+いいの,こういち
+いいずか,しんじ
+いいずか,あきこ
+はるた,ふとし
+いけだ,ひろこ
+すずき,かずみ
+いけだ,ゆか
+いそべ,ゆみこ
+いけやま,さとし
+いくた,たけし
+いまいずみ,あり
+もりした,なおき
+いまい,まさかず
+いまむら,ゆうじ
+いまむら,ご
+いなみ,えいざぶろ
+いのうえ,ふじお
+いのうえ,ひろゆき
+いのうえ,かずのり
+いのうえ,よしのぶ
+いのうえ,ひでき
+いぬい,ひろし
+いしだ,かつひこ
+いしだ,としこ
+いしだ,なおひろ
+いしぐろ,とおる
+いしぐろ,くにひろ
+いしはら,こうじ
+いしい,すぎお
+いしい,としあき
+いしい,ちずこ
+ゆきまさ,しげき
+いしかわ,ただし
+いしかわ,まなぶ
+いしくら,のりゆき
+いしもり,けんや
+いしもと,やすひで
+いしもと,ひろし
+いしおか,ひろし
+いしおか,ひろたか
+いしわた,みつこ
+かん,ゆきとし
+いしざか,まなぶ
+いそがい,としひろ
+いたばし,ゆたか
+いたばし,まり
+さぎや,ひろし
+いとう,じゅにち
+いとう,かおる
+いとう,けいいち
+いとう,こうじ
+いとう,まさとし
+いとう,たかし
+いとう,ようこ
+さかい,ゆたか
+いとう,ひろあき
+いわい,りえ
+しまむら,さちこ
+いわい,ゆか
+かわなか,のぶお
+いわくぼ,なおひさ
+いわもと,よひちろ
+いわもと,かよこ
+たけだ,たかひろ
+いわむら,しんいち
+いわなが,しげき
+いわお,ひであき
+いわさき,てつや
+いわさき,あけみ
+せがわ,のぞむ
+いわしろ,なおよし
+いずみ,かずしげ
+かえりやま,なおゆき
+かがみ,たかし
+かがみ,こういち
+かじたに,かずゆき
+やまもと,かおる
+かきぬま,ふさちか
+かく,きょこ
+かまだ,かずみ
+いながき,たかゆき
+かまもと,さやか
+かまたに,ひであき
+かまた,さちこ
+やまだ,ひろゆき
+かめだ,ひでお
+かめや,こういち
+かみじょ,たつひこ
+かみお,とらひこ
+かみや,まさたか
+かもと,よしひさ
+かなだ,まこと
+かない,なおき
+かない,いくお
+かなざわ,しげよし
+かんだ,かずひこ
+かねいち,えいいち
+かねこ,ひろあき
+かねこ,ひろゆき
+かねこ,まこと
+かねこ,まさえ
+かねこ,たえこ
+かねこ,なおふみ
+かねまる,ともこ
+かりや,えいじ
+かるべ,あきこ
+かしま,ひでき
+かしわぎ,まこと
+かしわぎ,まなみ
+かすや,まさのり
+かすや,よりこ
+かすや,まさたか
+かたの,きょこ
+しらき,りえこ
+かたおか,さだいち
+かたおか,たかひろ
+かたやま,あきお
+かとう,ひろぶみ
+かとう,ますお
+かとう,しゅじ
+かとう,たけひこ
+かとう,やえ
+ごと,ひさし
+かつや,あつし
+かわだ,よしのぶ
+かわだ,きょじ
+かわぐち,ひろゆき
+かわはら,よしゆき
+かわはら,ひろし
+かわはた,けいご
+かわい,しょこ
+かわい,たかし
+かわい,けんいち
+かわかみ,かつお
+かわきた,よひちろ
+かわきた,あつし
+かわむら,まりこ
+かわむら,たてお
+かわむら,ひろし
+かわぞえ,ひろこ
+ふたくち,ひろや
+きだ,たけし
+きだ,ひろかず
+きど,ひろし
+きはら,みちお
+きくち,さちこ
+きくち,さとし
+きくた,せいいちろう
+きもと,ひろあき
+きむら,ひろゆき
+きむら,じゅにち
+きむら,かよこ
+きむら,みほ
+まつもと,たけし
+きむら,ともあき
+きむら,やすこ
+おかざき,ゆきまさ
+きむら,ゆき
+きむら,まさゆき
+きのした,みな
+きし,ただし
+きす,やすひろ
+きたかぜ,よしふみ
+きたむら,あきお
+きうち,かつとし
+きうち,こうじ
+きよた,あいこ
+こばやし,いさお
+こばやし,かずまさ
+こばやし,みのる
+こばやし,なほみ
+こばやし,しゅにち
+こばやし,すみひろ
+こばやし,たくろ
+こばやし,としお
+こばやし,じゅんこ
+ひろせ,たけお
+こでら,ゆか
+こがい,あつし
+こぐれ,けいこ
+もりた,きみひこ
+こもと,じゅんこ
+この,のぶき
+こさか,あきお
+こいけ,なおと
+こいけ,たかぞ
+こいし,だいすけ
+こじま,まさはる
+こじま,けんじ
+こくほ,みよこ
+こくまい,よしゆき
+こまがた,たかし
+こまき,ひであき
+こまつ,ゆひち
+こまつ,よしお
+こみね,ひろひで
+こみやま,はるお
+こもおか,あきひろ
+こもり,ひさたか
+こんど,かずお
+こんど,みちひこ
+こんど,よすけ
+こんど,あきひろ
+こんどう,よしゆき
+こんの,きよし
+こすぎ,よひち
+こだ,あきお
+こやなぎ,かずたか
+くぼた,てつ
+くぼた,かつや
+くぼ,みえこ
+くどう,まこと
+くが,かずゆき
+くじま,よひち
+くまだ,あつし
+くまき,かつのり
+くまくら,よしのぶ
+くまもと,ふみお
+くもかわ,しげのり
+くらしま,ひろし
+くりはら,みきお
+くりはら,よしぞ
+くりむら,たかゆき
+くりす,たつと
+くりやま,てつお
+くりやま,よひち
+くろだ,としゆき
+くろかわ,のぶひこ
+くろき,ひろゆき
+くろさき,なおき
+くろす,たかゆき
+くしだ,ご
+くすだ,しげる
+くわばら,えり
+うちだ,ひろし
+まえだ,まき
+にわ,かつと
+まえひら,あきひこ
+まえかわ,ひろのり
+まきむら,こういち
+まきの,こうじ
+まきの,ゆみこ
+ようこた,しゅじ
+まるやま,ひろし
+ますだ,ゆきえ
+ますだ,じゅにち
+ますひろ,あきら
+ますやま,ひろし
+まつばら,のぶや
+まつばら,のぶあき
+まつだいら,ひろし
+まつだ,わたる
+ささもと,よしこ
+まつだ,いちろう
+まつふさ,けいいち
+まつい,やすひこ
+まつい,しげみつ
+まつき,まさと
+かの,ひでたか
+まつもと,ひろみつ
+まつもと,ゆうじ
+まつもと,まり
+はしもと,みちやす
+まつむら,ただし
+まつむら,みきお
+まつなみ,てるあき
+まつなみ,きみ
+ちば,たくじ
+まつしば,こうじ
+まつした,やすなり
+まつした,まさと
+まつうら,しげお
+まつざき,さゆり
+いまい,としみ
+まゆやま,かつじ
+めんじょ,とおる
+みちがみ,じゅにち
+みはら,あきひこ
+みき,ひろゆき
+みもり,ゆひち
+みなみぐち,としゆき
+みなずき,ふじお
+みねむら,しょじ
+みしな,きにち
+みつい,ひろゆき
+みうら,ひろゆき
+みうら,ゆきお
+むらかみ,てつや
+みわ,こういち
+みやがわ,ひろし
+みやぎ,えいいち
+みやはら,いちろう
+みやはし,ただし
+みやかわ,まさゆき
+みやき,あつし
+みやもと,まさと
+みやもと,のりお
+みやもと,はるこ
+みやさか,あつし
+みやたけ,ひろし
+みやた,かなめ
+みやた,なおゆき
+みやた,ゆかり
+くろだ,かずひろ
+みよし,たけはる
+みずこし,よひち
+みずこし,けんいち
+みずの,まさはる
+みずの,しげゆき
+みずたに,まさお
+もり,みちこ
+もり,としお
+もりかわ,きょこ
+もりき,まさとし
+もりした,まさずみ
+もりた,せいじ
+もりた,ひろし
+もりやま,まさひろ
+もりぞの,なおき
+もり,しげみ
+もり,としひろ
+もり,ゆうじ
+もり,まさみち
+もろずみ,けいこ
+いのはな,なおこ
+こじま,まきお
+むかい,としお
+むかい,たつや
+むらい,のぶはる
+むらかみ,しんじ
+むらかみ,しょじ
+むらまつ,のりこ
+にわ,あきこ
+むらた,やすひろ
+むらた,よしみ
+おの,ただし
+むらやま,かずひろ
+むと,としお
+むと,つよし
+むと,さとる
+むつしか,かつとみ
+ながい,やすお
+ながい,ひろのり
+ながもと,のぼる
+あらい,かずお
+ながお,しんご
+ながさわ,たつみ
+ながさわ,さちお
+ながやま,ちなつ
+ないとう,とおる
+ないとう,ちはる
+なかばやし,まさかず
+なかだて,かつひろ
+なかがき,さとし
+ながえ,いちろう
+なかがわ,たかし
+なかがわ,ちはる
+なかごめ,ひろや
+なかひら,たかし
+なかい,あまね
+なかじま,えいいち
+なかじま,ひろし
+なかじま,かつゆき
+なかじま,けんいち
+なかじま,たけとし
+なかじま,やすなり
+なかじま,あつし
+なかまた,かずと
+なかみち,あきひろ
+なかむら,ふさのぶ
+なかむら,かつお
+なかむら,かずひさ
+なかむら,こういち
+なかむら,まさのり
+なかむら,たかゆき
+なかむら,てるじ
+なかむら,としゆき
+なかむら,よしなり
+なかむら,ゆたか
+なかむら,えみこ
+なかにし,かつとも
+おおにし,みえこ
+なかにし,なおや
+なかにし,えり
+なかの,つねあき
+おかざわ,けいいち
+なかの,なおひで
+なかの,のりひろ
+なかの,しゅにちろ
+なかおか,まさき
+なかお,としあき
+なかお,まこと
+なかせ,てるひろ
+なかそぎ,しんじ
+なかた,はじめ
+なかつか,のりあき
+なかつか,ひろゆき
+なかやま,かずひこ
+なかやま,まさゆき
+なかやま,なおき
+なかやま,としあき
+なかやま,まさのり
+なかざわ,としゆき
+なみき,のぶやす
+ならしま,きよたか
+なら,かよこ
+くどう,のぞみ
+なつの,よしふみ
+なつやま,もえこ
+えと,てつや
+にへい,ふみこ
+おくの,えいじ
+まえほり,こし
+にしだ,まさとみ
+にしぐち,しげこ
+もり,たかし
+にしかわ,まこと
+にしくら,ひでき
+にしもと,あつし
+にしお,たつや
+にしわき,こへい
+にし,かつひこ
+にわ,みつぐ
+のぶまさ,くにお
+のだ,まさあき
+のぐち,たけひこ
+のぐち,ひさし
+のほり,みちはる
+のたに,ゆうこ
+のま,ひろし
+のみやま,たかし
+のもと,さゆり
+たんざん,ひろみ
+おかわ,ひとし
+ののやま,たつお
+のりかね,ゆきこ
+のろ,まさし
+の,しげる
+おばな,まさき
+おびなた,としひこ
+おちあい,けいこ
+しまむら,まさる
+おだね,まさき
+おがわ,みさと
+おぐら,もとひこ
+おぐら,たかし
+おぐら,けん
+おぐろ,ひでゆき
+おばやし,まさたけ
+おばやし,さとし
+おば,としろ
+おち,としあき
+おで,みちお
+おほり,かずひこ
+おほ,まさき
+おひし,まさる
+おき,せいいち
+おくぼ,しんいち
+おくぼ,ひろし
+おみち,あきひこ
+おむら,よしのり
+おおにし,ひろし
+おの,よしかず
+おらい,なおみ
+おさき,ひでとし
+おさわ,せいじ
+おさわ,しんすけ
+おさわ,いわお
+おたに,けいぞ
+おた,やすゆき
+おとも,えりこ
+おざき,しんご
+おつか,としひこ
+おつか,のりお
+おつき,こすけ
+おひゃ,もといち
+おひゃ,よしゆき
+おひゃ,まさひろ
+おかだ,まさくに
+おかだ,たけのり
+おかだ,つねあき
+おかだ,いさお
+おかはら,こういちろ
+おかもと,すすむ
+くさば,さとし
+おかむら,そういちろう
+おかむら,ただし
+おかの,りゅじ
+とびた,けんじ
+ほそかわ,なおき
+うえだ,あきお
+こせき,こうじ
+たざわ,たけし
+やまざき,としろ
+えぐち,てつや
+もちだ,まさひろ
+あきもと,くにひこ
+にし,すぐる
+いまいし,つぐお
+たかやす,よしひろ
+はた,としひろ
+ふじさわ,しんいち
+むと,ひろき
+もたい,よしお
+ただ,ひろし
+こいずみ,まさかず
+つぼくら,まさき
+ひらばやし,ひろし
+つじかわ,しゅへい
+みついし,こうじ
+やました,とよかず
+まるおか,ゆみ
+ふかお,しゅんじ
+つむら,よしかず
+まゆみ,ひろゆき
+あらかわ,すすむ
+おふち,きえい
+ささもり,あつき
+さとう,しげとし
+たかぎ,のぶよし
+たなか,まさゆき
+つぼご,あきら
+とりさわ,ひさし
+なかぐき,しんいち
+はせがわ,たかゆき
+はやし,かずよし
+ひらやま,こぞ
+ふくしま,ひろじ
+まつしま,ひろかず
+よしい,せいいち
+いしい,けんじ
+いまい,のぶたか
+なかつじ,とおる
+ほいだ,かなこ
+さわはた,としえ
+たはら,みどり
+たかはし,じゅん
+すずき,ゆたか
+よこやま,あきら
+いしかわ,まこと
+あさの,まさみつ
+かねこ,ふみひこ
+くろせ,ひろゆき
+さかきばら,けいご
+かさま,ともゆき
+すぎやま,こうじ
+すだ,しげる
+たなか,としき
+つぼい,かずひろ
+はしもと,ひでき
+ふくち,のりこ
+あらい,みゆき
+たなか,ゆきえ
+やしま,つねお
+かわまた,みつる
+すんだ,しょうじ
+みずたに,みねまさ
+やまこし,ひであき
+あまがや,けんじ
+あらき,けんじ
+いまい,よしたか
+いまざき,しゅうじ
+きむら,ようすけ
+すぎやま,あらた
+すずき,けいこ
+つる,よしまさ
+はこざき,てつや
+たきざわ,あや
+いとう,えつこ
+ますだ,ちえこ
+つばき,さとみ
+みすみ,ともこ
+やいた,けんじ
+かわつ,なおゆき
+つかだ,たけのり
+なかもと,あつや
+ふなびき,みのる
+よしざわ,のりゆき
+とま,ゆめの
+せき,ひさよ
+むらた,としはる
+かたやま,たかひさ
+きど,かつひで
+こばやし,いさお
+しのみや,だいすけ
+たなか,みのる
+はら,あきら
+もりたに,つよし
+いちのせ,かずのぶ
+ふじもと,よしのり
+うえの,ちあき
+ししど,ちかこ
+みうら,まき
+うちだ,ひとし
+どい,たけひこ
+そすみ,ふみこ
+よしだ,さなえ
+たかはし,きょこ
+やまぐち,ようこ
+ささ,まり
+はせがわ,なおき
+あつた,まさひろ
+いちかわ,しゅじ
+うの,こうじ
+おがわ,ともかず
+おだ,かずゆき
+たかさき,よしのり
+たかはし,しょへい
+ただ,かずゆき
+たなか,かつゆき
+とくなが,こうじ
+とみた,としのり
+ないとう,すすむ
+はらだ,るみこ
+ひらかわ,こういち
+ふなもと,としゆき
+どばし,まさゆき
+みうら,としお
+よしだ,なえこ
+おたけ,ゆきこ
+くらた,かおり
+くりた,よしお
+だんじょ,まさあき
+もりしま,さとみ
+よしだ,ゆきこ
+わかばやし,ひろかず
+あげまつ,まきこ
+いしぐろ,つよし
+かとう,ただし
+さいとう,ひろし
+ないとう,ひろし
+みやまえ,じゅんこ
+かどわき,りえ
+ふくもと,えみこ
+にしはら,ともこ
+おかやま,ひろたか
+おかやす,ゆき
+くろかわ,ちこ
+おきた,ひろあき
+おくみや,じゅんじ
+おくむら,やすひろ
+おのだ,さとし
+おのでら,まこと
+おの,しんじ
+おの,よじ
+おの,ゆみこ
+まつい,ひろみち
+おそえがわ,こすけ
+おざき,かずひろ
+おぜき,しんいち
+たかの,みちよ
+りょかい,としや
+さげさか,あつし
+さぎや,みきお
+さいた,あきら
+さいとう,かずなり
+さいとう,みえこ
+さいとう,とおる
+さいとう,よしひさ
+さいとう,まさかず
+さかぐち,だい
+さかい,なるみ
+しまだ,ひとし
+さかきばら,はるゆき
+さかもと,なおふみ
+さかもと,よしふみ
+さかもと,てるお
+さかり,やすなり
+さかた,のぶゆき
+さくま,ひろゆき
+さくらい,いさお
+さくらい,よしき
+さくらい,りゅひち
+さんのまる,きょひち
+さの,まさひろ
+ささべ,あきみつ
+ささき,ごろ
+ささき,ひろゆき
+ささき,つねお
+ささき,りか
+よしだ,ひであき
+さとう,ひろみ
+さとう,ひろし
+さとう,いつろ
+さとう,けんじ
+さとう,まさき
+さとう,むねひろ
+さとう,のぶひろ
+さとう,さとる
+さとう,しんじ
+さとう,たかのぶ
+さとう,たかし
+さとう,よしひろ
+さとう,ゆきお
+さとう,ゆたか
+さとう,たつろ
+さわいで,しんご
+さわい,ともひろ
+さやなぎ,たけし
+せがわ,なおと
+せいみや,ひろし
+せいやま,よしひこ
+せきかわ,かずのり
+せき,たかのり
+せき,はやと
+せんだ,やすひこ
+せんごく,よしゆき
+せの,よしと
+せしも,あきお
+せたか,まさこ
+すが,ともこ
+みなみ,ゆひち
+しばた,ちあき
+しぶや,かずや
+しぶや,まさみ
+しぶや,さとし
+しいの,ゆひち
+しかた,こういちろ
+しきぶ,まり
+しまだ,よしひろ
+しまだ,ひろし
+しまがみ,しげき
+しまもり,あきら
+しまむら,こうじ
+しまざき,たけし
+しまざき,ひろたか
+しみず,きょこ
+しみず,としあき
+しみず,こうじ
+しもだ,けい
+しもひら,りょひち
+しのはら,やすし
+しのはら,ちあき
+しのざき,ひろみち
+しのざき,つよし
+しんぽ,まさのり
+しんたに,ひろこ
+おきど,たかひろ
+しおぬま,ひろし
+しおた,まさひろ
+しおや,ひろし
+しおざわ,としあき
+しらい,まさひこ
+しらさき,ゆきのり
+しらさき,こ
+しらとり,たかあき
+しらとり,えいぞ
+しろき,りえ
+しろした,ひろし
+かしま,けいみん
+しゅ,こうたろう
+いまい,あきひろ
+そえだ,まなぶ
+そが,のぶこ
+そわ,ひろき
+すだ,かすみ
+すだ,ゆうじ
+すだ,そとひろ
+すえだ,きよみ
+すえもり,くにあき
+すえおか,まさひろ
+すがわら,いさお
+すげの,しげき
+すぎもと,ひろし
+すぎた,こひょ
+すぎやま,まさとし
+すぎやま,たかひろ
+すぎやま,ひとし
+すみとも,しげき
+すみ,よしお
+すなが,ごいち
+すざき,ひではる
+すずき,ひろこ
+すずき,いずる
+すずき,かずなり
+すずき,こういち
+すずき,まさる
+すずき,なおき
+すずき,のりよし
+すずき,さきこ
+すずき,しょひち
+すずき,しんじ
+おおにし,やすひろ
+すずき,やすお
+すずき,ゆひちろ
+すずき,みつお
+たぼ,けいいちろう
+たぶち,えいじ
+たぶさ,のぼる
+たちかわ,ゆき
+ひらき,ひでゆき
+たがい,てつや
+たがわ,てるみ
+たが,あきら
+たぐち,やすし
+たぐち,ゆきお
+たぐち,しのぶ
+たかばたけ,しんいち
+たかぎ,としや
+たかはら,ひろし
+たかはし,かずあき
+たかはし,けいじ
+たかはし,まさはる
+たかはし,のぶお
+たかはし,のりゆき
+たかはし,りょすけ
+たかはし,しん
+たかはし,たつや
+たかはし,としふみ
+たかはし,やすゆき
+たかはし,ゆひち
+たかはし,やすし
+たかいし,みほ
+こばやし,のぶたか
+たかみ,みさお
+たかむら,しん
+たかなし,みなこ
+はせがわ,よいち
+たかの,けんたろう
+たかおか,としや
+たかおか,としゆき
+たかたに,ひろし
+たかつじ,せいいち
+たかつか,よしひさ
+たかつ,はるさだ
+たかやま,まさこ
+たかやま,まさゆき
+たかやま,ひでお
+たけだ,かずしげ
+たけだ,のりひこ
+たけだ,とよみ
+たけだ,みのる
+たけもと,ともあき
+たけもと,かずひろ
+たけうち,みのる
+たけうち,しろ
+たけうち,よしのり
+たけうち,ひろゆき
+たきもと,きょこ
+たまち,たかき
+たむら,のぶゆき
+たなべ,あきら
+たなか,かつじ
+たなか,きよし
+たなか,まさみ
+たなか,しんいち
+たなか,とおる
+たなか,やすし
+たなか,こういち
+たんだ,やすのり
+たにだ,たかかず
+たにがわ,なおひと
+たにむら,のぞみ
+たに,かつし
+たしろ,たかこ
+ひらさか,ひろかず
+たわだ,ゆひち
+たわら,とおる
+てらだ,たかひろ
+てらさき,ひろし
+てらしま,としひろ
+こばやし,つかさ
+てらうち,けいこ
+わたなべ,なぎさ
+ときとも,たかゆき
+とくだ,まき
+さくらぎ,ひろふみ
+とみもと,くにひこ
+とみた,かおり
+ともみ,みきこ
+とんぐ,きみほ
+とりうみ,よしたか
+とよだ,よしなり
+とよさと,ひろぶみ
+とよしま,ゆきお
+つちだ,のぶゆき
+つちもと,えいえつ
+つちや,しんじ
+つだ,とよひさ
+つだ,ひろゆき
+つじもと,ひでこ
+つじ,たいぞ
+つじ,やすみつ
+つかごし,しんいち
+つかもと,まさのり
+つきだて,たかゆき
+もりた,のりひさ
+つるた,まさひこ
+つしま,ひでお
+つし,ひろみつ
+つつみ,まさし
+つやま,ひろすけ
+うちだ,かつひさ
+うちだ,ひろし
+うちやま,てつや
+うだ,じゅん
+うえだ,まこと
+うえだ,めぐみ
+つかもと,たつろ
+うえだ,ゆか
+ききょ,ゆきお
+うえだ,のりお
+うえぐり,ひろし
+うえはら,としかず
+うえまつ,けいじ
+さとう,ひろし
+うえの,こぞ
+うえの,しのぶ
+うえの,ともあき
+うえの,としひこ
+うえの,すみと
+うえやま,やすき
+うめだ,ゆきお
+うめかわ,ようこ
+ながた,たけし
+うらご,ゆかり
+うるしざか,さおり
+たかはし,ひろし
+うつのみや,ちえみ
+わだ,ひでお
+わだ,よしたか
+わだ,いくえ
+わかばやし,とおる
+わかばやし,ひろゆき
+わかまつ,かつや
+わかまつ,かずひこ
+わきもと,ひでたか
+わくい,よしこ
+いとい,ひろゆき
+わたべ,しげき
+わたべ,ひでき
+わたなべ,ひろのり
+わたなべ,かなう
+わたなべ,かよ
+わたなべ,のりこ
+わたなべ,とよひろ
+わたなべ,ゆきお
+わたなべ,しょひち
+わたぬき,しんぺい
+やぶした,かずひろ
+やぶた,みきえ
+やぶうち,しずお
+やじま,ゆみこ
+やくしじ,かずひこ
+やまだ,かずき
+やまだ,こうじ
+やまだ,なりと
+やまだ,しゅじ
+やまだ,よしひさ
+やまだ,かつや
+やまがみ,なおたか
+やまぐち,しゅにち
+やまぐち,ひろし
+やまかわ,ただし
+やまこし,えいいち
+やまもと,ひでとし
+やまもと,ひろゆき
+やまもと,ひろゆき
+やまもと,まさる
+やまもと,みどり
+やまもと,みつよし
+やまもと,しょへい
+やまもと,ようこ
+かわぐち,ふみひろ
+やまむろ,ゆきこ
+いわた,ひろえ
+やまおか,ひさ
+やまさき,あきのぶ
+やました,あきお
+やました,えいすけ
+やました,ひろふみ
+やました,じろ
+やました,こうじ
+やました,しん
+やました,たかし
+やました,あきひろ
+やまざき,けい
+やまざき,まさみち
+やまざき,ひろゆき
+やながわ,えいじ
+たかおか,ひろふみ
+やなせ,まさのり
+やの,まさとし
+やお,あきら
+やすだ,ひろみち
+やすかわ,たけし
+よがい,かずひろ
+よこがわ,ひでくに
+よこさわ,ひろし
+よこた,つとむ
+よこた,としあき
+よこうち,あきこ
+なかやま,ひろゆき
+よこやま,かずひで
+よこやま,かつゆき
+よねはら,あきら
+よねむら,ひろゆき
+よしだ,かおる
+みやむら,こうじ
+よしだ,まさひろ
+よしだ,ひかる
+なか,りょひち
+よしむら,ともゆき
+よしむら,えりこ
+ぬまお,としふみ
+よしざき,ひとみ
+なかむら,こういち
+ゆあさ,せいじ
+ゆげ,まさゆき
+ゆかわ,みなこ
+まつだ,やすし
+あべ,つとむ
+はせがわ,あつし
+はしもと,はるひこ
+ひらつか,まさお
+ほしかわ,としゆき
+ほそや,ただし
+いしはら,まさとし
+いわき,つとむ
+かねだ,きみあき
+きむら,まさかつ
+こんの,よしひろ
+まつだ,よひち
+みやした,ひろみ
+さかもと,みねお
+のむら,えいじ
+おばやし,けんじ
+さいとう,りょた
+ささがわ,たかひろ
+さとう,よしたか
+しが,よしつぐ
+しのはら,やすひろ
+しょ,かつまさ
+たけがわ,ひとし
+たつみ,たもつ
+とみえ,みのる
+わたなべ,しょじ
+やまだ,たかし
+やまだ,たちはる
+やまもと,こうじ
+やまざき,たけし
+こまつざき,まこと
+ふちだ,よしひさ
+たなか,しげとも
+はやし,まり
+ながた,しんいち
+ばば,えつこ
+あかま,ゆきえ
+かざま,ゆうこ
+すずき,やよい
+もり,まさみつ
+いけだ,まさし
+わたなべ,めぐみ
+みま,みえこ
+あんどう,ゆたか
+まえぞの,のりひこ
+おたか,まもる
+はやし,ゆういち
+うえの,とみひろ
+つのだ,たけし
+すどう,まさお
+さかもと,ちあき
+たなか,まさひこ
+ことうだ,かずゆき
+かるべ,さほり
+さいとう,せいいち
+ひらの,まこと
+さとう,たかし
+なかやま,かずしげ
+のだ,じゅい-ちぇん
+ま,ひろあき
+しながわ,つよし
+ながやす,かつと
+あおき,ふみお
+なかた,ともひろ
+みくりや,みつひろ
+まるやま,こういち
+えちぜん,まさひろ
+なかにし,かずたか
+はぎお,けいいち
+たむら,たかとし
+たぐち,みつあき
+おざわ,もりしげ
+やおいた,ゆきのり
+あさの,ふみひろ
+くさの,てるよし
+はまだ,ひろこ
+いりやま,ひろまさ
+むらた,けんいち
+あさの,ゆりこ
+たかの,やすひろ
+やまぐち,ちから
+むらかみ,こうじ
+たなか,こうじ
+たかおか,はやと
+すずき,てるゆき
+みねぎし,ひでとし
+あべ,ひさし
+あべ,しょひち
+あべ,ともひこ
+あべ,まさあき
+あがつま,よしとし
+あいざわ,おさむ
+あかいけ,としひろ
+あきもと,のりやす
+あきたや,てるひろ
+あきやま,まさじ
+あくつ,はなこ
+あまの,なおや
+あまの,よじ
+あまの,けんいち
+あめみや,あきとし
+あんどう,のりひろ
+あんどう,かつじ
+あんざい,じゅにち
+あおき,みさほ
+あおき,なおや
+あおき,のりあき
+あらい,みずほ
+あらき,しゅんじ
+あらき,ひでき
+あらや,あきら
+ありよし,たかし
+あさひな,じゅんこ
+あさい,よしのぶ
+あさみ,ゆきお
+あさつけ,としゆき
+あそ,しげき
+あずま,ただかつ
+あずま,あつのり
+ばば,ふみえ
+ばば,かずみ
+かが,まさひろ
+ばば,てんせい
+ばん,ゆうじ
+びるかわ,りつこ
+ぼ,たかゆき
+だいご,さだはる
+だいごく,はるひと
+どばし,よひち
+えびさわ,しげみつ
+えはら,よしたか
+えんにゅ,とものぶ
+ふちがみ,よひち
+ふじばやし,なりと
+ふじえだ,ひろゆき
+ふじい,かずゆき
+ふじい,くにかず
+ふじい,まこと
+ふじい,さとこ
+ふじい,すみこ
+さかもと,ともこ
+きただ,よしき
+ふじい,ゆすけ
+ふじい,ゆか
+ふじい,れいこ
+ふじかわ,ふくお
+ふじもり,しゅんすけ
+ふじもと,じゅにち
+ふじの,とおる
+ふじさわ,ひろし
+ふじた,ひろとし
+ふじた,さとこ
+ふじた,りゅうたろう
+くすもと,ひろし
+ふじわら,りょひち
+ふじわら,せいご
+ふじわら,しんじ
+ふじわら,よしのり
+ふじわら,まさや
+ふかぼり,ひであき
+ふかみ,しゅへい
+ふかみ,えいいち
+ふくだ,かおる
+ふくだ,しんいち
+ふくだ,たつや
+ふくだ,かずひこ
+ふくい,きょこ
+ふくい,ひろし
+ふくなが,せいじ
+ふくなが,ひろたか
+ふくおか,としや
+ふくおか,ひろし
+ふくし,けいじ
+ふくしま,ひろふみ
+ふくとめ,ひろし
+ふくやま,けい
+ふなばし,まこと
+ふるの,ひろむ
+ふるや,としき
+ふるや,ひでお
+ふるやま,さなえ
+ふたば,ひさこ
+あなみ,ゆうこ
+ふたみ,さとみ
+ふたむら,じゅん
+がど,ゆか
+ご,のりちか
+ごだ,ともじ
+ごか,けんじ
+ごと,まさやす
+ごと,みのる
+はぶ,いさお
+はが,やすのり
+はぎ,としゆき
+はま,せいじ
+はまだ,かつひと
+はまの,とおる
+はまの,あきら
+はましま,としゆき
+はましま,ひろゆき
+はない,みのる
+はら,ゆみこ
+おた,ひさのり
+はらだ,ふじお
+はらこ,ともこ
+はせ,ひさし
+はせがわ,りょこ
+はせがわ,しん
+はしもと,たつや
+はしもと,としたか
+はしもと,しのぶ
+はしずめ,しょじ
+はしずめ,あつし
+はた,けんじ
+はた,ただひろ
+はた,まさる
+はたの,おさむ
+はたの,たつや
+はたの,ゆみ
+つだ,さだみつ
+はやかわ,てつお
+はやの,たつき
+はやし,こういち
+はやし,なおき
+はやし,たつひろ
+はやし,ゆたか
+はやし,ひろし
+はやしたに,しょじ
+ひがしの,さとし
+ひぐち,せつお
+ひぐち,あけみ
+ひめの,まさき
+ひらばやし,なおき
+ひらい,しんいち
+ひらかわ,よしひこ
+ひらき,たけひこ
+ひらの,きょこ
+あおき,やすゆき
+ひらおか,よしひろ
+ひらさか,ひろこ
+ひらやま,よしのり
+ひろはた,かなこ
+まえかわ,さおり
+ひろせ,すすむ
+ひろせ,のぶゆき
+ひろた,ひろゆき
+ひろわたり,としろ
+ひろみつ,あきら
+ひうら,きみたけ
+ほぼ,かずひこ
+ほくら,しんいちろう
+ほんだ,やすし
+ほんだ,ゆうこ
+すずき,ゆひち
+ほんご,ひろし
+ほりぐち,ひろし
+ほりい,せいりょ
+ほりかわ,みちこ
+ほしの,まさや
+ほそかわ,ひろゆき
+ほそみ,よしのり
+ほった,ゆひちろ
+いぶか,やすひろ
+いぶき,まなぶ
+いちかわ,ひろよし
+いちむら,まさのぶ
+いだ,たかひろ
+いだ,ひろし
+いで,まもる
+いで,たいすけ
+いで,まこと
+いでた,いさお
+いがらし,ようこ
+いがらし,ひでき
+いげ,かずたか
+いいだ,きいちろう
+いいだ,きにち
+いいだ,てるお
+いいだ,やすひろ
+いいはら,ひでゆき
+いいじま,ひろあき
+いけだ,かずあき
+いけだ,のぶみち
+いこま,ひでゆき
+いまい,ひろし
+いまい,きみえ
+たなか,かなめ
+いまむら,ちはる
+いまなり,やすひで
+いまぜき,きよたか
+いなだ,なおゆき
+いなます,たかし
+いのうえ,けいこ
+いで,ゆきや
+いれい,さつき
+いしはら,しょぞ
+いしはら,たかゆき
+いしはら,たまみ
+いしはら,よしひさ
+いしはら,ひろし
+いしい,たけし
+いしい,かつや
+いしかわ,まさあき
+いしかわ,のぶまさ
+いしむら,きよひと
+いしわたり,まこと
+いしざき,きょこ
+いしずか,こういち
+いその,たつや
+いそやま,じゅんじ
+いすだ,まゆみ
+いたくら,ひろし
+いとう,ひろゆき
+いとう,まさひろ
+いとう,まさる
+いとう,みつみ
+まつい,みゆき
+いとう,なおき
+いとう,すすむ
+いとう,じゅにち
+いわかみ,たかゆき
+いわさ,ともゆき
+いわさき,ゆうじ
+いわさき,なおふみ
+いわした,ひろゆき
+いずみ,ますみ
+いとう,のりよし
+いずみ,なおとく
+いずみさわ,みつとし
+じんの,みつのぶ
+じょみど,しげお
+かが,まさひろ
+かがみ,まさひろ
+かげやま,ひろふみ
+かい,よしまさ
+かいだ,はるお
+かいず,たけひこ
+かじた,たけひこ
+かけひ,まさちか
+かきもと,まさひこ
+かきぬま,つとむ
+かきぬま,としみ
+かまた,ゆうじ
+かまた,なおゆき
+かみぐち,みちたか
+かみむら,とおる
+かねこ,あつし
+かなまる,とへい
+かなざわ,せいじ
+かんべ,やすし
+かんだ,りゅじ
+かねはら,あけみ
+ごと,ふさお
+かねこ,ひさなが
+かねこ,ひとし
+かねこ,こうじ
+かねこ,たけひと
+かねこ,じょじ
+かねみつ,あけみ
+かねむら,ともひろ
+かねた,さちこ
+たなか,しずか
+よねもち,としえ
+かんの,けんいち
+かさい,みえこ
+かしま,よしお
+たかぎ,まさのり
+きたむら,じょじ
+かたおか,まもる
+かたおか,たかひろ
+かたおか,こぞ
+かたせ,けん
+かたやま,しげかず
+かたやま,たけし
+かたやま,やすなお
+かたやま,あきら
+かとう,ひでとし
+かとう,ひろふみ
+かとう,ひろみつ
+かとう,かずお
+かとう,こういち
+かとう,まさよし
+かとう,なおし
+かとう,やすまさ
+かとう,ゆかり
+そめや,こうじろ
+かわばた,ひでき
+かわぐち,まさみ
+かわぐち,やすゆき
+たまがわ,かずひこ
+かわはら,しげゆき
+かわはら,やすなり
+かわひと,みちこ
+かわい,なおゆき
+かわい,ゆうこ
+はぎわら,きょこ
+なるけ,やすひろ
+かわさき,ひろあき
+かわしま,しんいち
+かわしま,つとむ
+かわた,ひろゆき
+かやま,としひろ
+かざまつり,よしみ
+きど,ゆうじ
+きがみ,つとむ
+きごし,じゅんこ
+もりさわ,まこと
+きくち,まさいち
+きくち,しんや
+きくち,こういちろ
+きくら,ひさし
+きむら,じゅんじ
+きむら,かつひさ
+きむら,のりひさ
+きむら,のりこ
+きむら,しげき
+きむら,たかし
+きむら,よしひろ
+きむら,ゆかり
+きむら,ゆきこ
+きむら,ゆたか
+きむら,ひろかず
+きのした,ひろこ
+きのした,たかふみ
+きのした,まなぶ
+きしべ,ひさや
+きしだ,きよし
+きしもと,みつぐ
+きしもと,きいち
+きた,のりお
+きたあき,かつみ
+きただ,つねお
+きたがわ,ひろき
+きたほり,あけみ
+きたじま,ともひさ
+きたむら,かつのり
+こばやし,けいいち
+こばやし,まさき
+こばやし,まさゆき
+こばやし,けんいち
+しらい,のりこ
+こばやし,しんきち
+こばやし,たいこ
+こばやし,としひこ
+こばやし,やすひろ
+こばやし,ひろき
+こだま,よしのり
+こぎた,たけし
+こぐれ,たつや
+こはし,たかみち
+こご,ひろゆき
+この,ひろゆき
+この,としゆき
+この,ひろゆき
+このす,たつや
+こいで,ひろし
+こまつばら,しげよし
+こみや,かずひろ
+こみやま,ちふゆ
+こもだ,やすゆき
+こんど,だいすけ
+こんど,ひろゆき
+こんど,しんいち
+こんど,としや
+こんど,としき
+こにし,なおふみ
+こさ,ひろゆき
+こすぎ,けいいち
+こたき,よしかず
+こたに,のりしげ
+こやま,たかひで
+こやま,よ
+こやま,きんや
+こざわ,やすひろ
+こずる,ひろかず
+くぼた,こうじ
+くぼた,ひでとし
+くぼや,おさむ
+くどう,よしひろ
+せのお,たかし
+くまがい,かずまさ
+くらどみ,まさと
+くらもと,ひとし
+くらとみ,かつや
+くりの,かずとし
+くりや,あきのり
+くろだ,まさと
+くろかわ,けんいちろ
+くさかわ,まさゆき
+くさの,けいいち
+くわばら,みき
+くわの,ひろみ
+よしだ,かつひこ
+くずの,まさのり
+まちだ,よしあき
+まえだ,ひろし
+まえかわ,じゅんこ
+おたに,ともこ
+まき,じゅん
+まきの,ひとし
+まるおか,かずのり
+まるやま,きよふみ
+まるやま,のりゆき
+まるやま,けいすけ
+まさい,やすひろ
+まさき,ゆひち
+ませ,ひろし
+ますだ,みつあき
+まとば,のぶみつ
+まとば,さとし
+まつばら,としひろ
+まつい,やすひろ
+まつい,さとる
+まつかわ,ひろかず
+まつもり,ひろし
+まつもと,けんいち
+まつもと,みねかず
+まつもと,ただしげ
+まつもと,たくや
+まつもと,としお
+まつもと,やすひろ
+まつもと,じゅんこう
+ぇえ,のりひろ
+まつお,みのる
+まつおか,しんご
+まつしま,ひでよ
+なかにわ,たかし
+まつやま,ゆたか
+まつやま,たかとし
+まつざわ,くにひこ
+みむら,たかあき
+みにゅ,ひさし
+みた,やすひろ
+みた,せいいち
+みたむら,しょぞ
+みつだ,たかし
+みつだ,まさよし
+みつまた,しげる
+みつおか,じゅんこ
+みうら,たけし
+みうら,とおる
+みわた,さだお
+ながせ,えいいち
+みやけ,かずよし
+みやけ,たけとし
+みやま,たかひろ
+みやもと,としろ
+みやもと,じゅん
+みやなが,じゅんじ
+みやざき,ひでよ
+みずば,しゅにち
+みずぬま,こういち
+みずさき,まなぶ
+みずた,ひろかず
+もちずき,じゅん
+もちずき,おさむ
+もちずき,じゅにち
+もぎ,よしのり
+ももせ,あやこ
+ひらの,きょこ
+もり,みどり
+もり,なおき
+もり,たかし
+もり,あきお
+もりかわ,ゆかり
+やぎした,せいじ
+もりもと,てつお
+もりもと,ひとみ
+まつだ,まさかつ
+もりおか,もとふみ
+もりした,ひろし
+もりた,かつみ
+もりた,みわ
+かねこ,のりあき
+もりた,しゅひち
+もりわき,あつき
+もろどみ,ちから
+もとはし,ひろし
+もとじま,つよし
+もとき,あきひで
+もり,ゆうき
+うすい,まさゆき
+むらかみ,まさゆき
+むらかみ,しげお
+むらかみ,しんじ
+むらかみ,いさお
+むらた,こういちろ
+むらた,こうじ
+むらやま,けんじ
+むと,あきひこ
+なだぐち,りえ
+ながはし,くにひろ
+ながい,きよえい
+ながむら,かずあき
+ながお,まさゆき
+ながしま,のぶゆき
+ながしま,よひち
+ながた,よしひで
+ながた,てつお
+ながつか,けいこ
+ながやま,みわ
+うちだ,かおる
+うちぞの,たけお
+なかだ,だいせい
+なかがわ,ひでし
+なかがわ,ひとし
+なかがわ,よしお
+なかがわ,きよひこ
+なかじま,さとし
+なかじま,よしひろ
+なかじま,すみと
+なかみち,いさお
+なかもと,まさひろ
+なかもと,まこと
+なかむら,まさみ
+なかむら,みちのり
+なかむら,みよこ
+あきやま,なおり
+なかむら,のぼる
+なかむら,のりゆき
+なかむら,さなえ
+なかむら,たかひで
+なかむら,たかし
+なかむら,としや
+なかむら,やすひろ
+なかむら,ゆきひろ
+なかむら,ちはる
+なかの,なおゆき
+なかの,こういちろ
+なかしま,ひろあき
+なかつぼ,きょこ
+なかつか,りゅひち
+なかやま,やすとも
+なかやま,ひろし
+なかざわ,ひろし
+なおつか,ゆみこ
+ならはら,ひろし
+なるしま,たかじ
+なとり,ひでと
+にいじま,つとむ
+にいや,たかこ
+にし,ゆきこ
+にし,よしひこ
+にしぶ,せいじ
+にしだ,ゆひち
+にしはら,ひろみ
+にしかわ,さとし
+たなか,たかし
+にしかわ,けいじ
+にしもと,のりお
+にしもと,まさひこ
+にしむら,てつろ
+にしむら,まこと
+にしの,まさひこ
+にしの,おさむ
+にしおか,あきこ
+にしざき,さとし
+にしざわ,まさこ
+にわ,ひろたか
+のぶ,ゆか
+のがいと,りか
+のぐち,としひさ
+のじ,まさひろ
+のじま,あやこ
+のむら,たつや
+のむら,たかあき
+のなか,まさこ
+なかじま,いさお
+のざき,まさと
+のざき,ひであき
+ぬわ,なおこ
+おち,たかし
+おちあい,こぞ
+おだ,けんじ
+おがさわら,しんや
+おがさわら,まさのぶ
+おがた,けんじ
+おがわ,だいすけ
+おぎはら,もりよし
+おはら,みのる
+おば,のぶゆき
+おば,ようこ
+まつだ,ひろゆき
+おへ,のりお
+おがき,あきこ
+しょじま,しんいち
+おはま,ゆきのり
+おはし,ちふゆ
+おぎの,みきお
+おかわ,よしゆき
+おかわら,たけし
+おき,たかし
+ねもと,としゆき
+おくぼ,あつし
+おくら,よしゆき
+おま,とみお
+おみか,かずはる
+おもり,けんいち
+おもり,ひろき
+わたなべ,かつみ
+おおにし,ゆみこ
+おおにし,えいじ
+おの,しげゆき
+おの,ゆうじ
+おぬま,かずひろ
+おしま,としひで
+おしま,ひろゆき
+おた,けいこ
+おた,しげき
+おた,こういち
+おたか,まなぶ
+おたけ,まさひこ
+おたけ,じゅん
+おたに,のぶゆき
+おつぼ,ともひこ
+おつか,ともひさ
+おつか,てつし
+おつき,ひでみ
+さこだ,ひろあき
+おわ,かずあき
+おひゃ,みつる
+おいかわ,まさひで
+おかべ,さなえ
+こばやし,じゅんこ
+おかだ,まさお
+おかだ,たかゆき
+おかだ,まさし
+おかもと,まさゆき
+おかもと,もとい
+めら,かおる
+おかの,としあき
+おかざき,さえこ
+おきた,ひでふみ
+おくだ,くにお
+おくぬき,あつゆき
+おんだ,てつお
+おんだ,としひこ
+うつみ,いずみ
+おの,しゅひち
+おの,さとし
+かわもと,じゅんせい
+かど,まさき
+おしま,まなぶ
+おすみ,そ
+おた,やすみつ
+おりい,てつじ
+おりた,てつや
+おさか,ひであき
+おそのい,ひでのぶ
+おざさ,ひろゆき
+おざわ,かずのり
+おざわ,かずゆき
+おざわ,さとこ
+しらとり,えいいちろう
+おぞね,まさかず
+さの,ちずこ
+さいとう,ひらたか
+さいとう,まさひろ
+さいとう,たかし
+さいとう,ゆきひろ
+さいとう,ひでゆき
+さかい,くにひろ
+さかい,しろ
+さかい,あきら
+さかきばら,かずゆき
+さかもと,しゅんじ
+さかもと,しゅひち
+さかもと,とよひで
+さかもと,ゆきお
+さかもと,ゆきのぶ
+さかむら,たつじ
+さかね,なおのり
+さかた,やすひろ
+さかた,じゅん
+あくたがわ,あきお
+さくらい,ひろひさ
+さくらい,まさみ
+まつばら,なおき
+さくらい,みえこ
+さなぎ,けいじ
+さの,ちかこ
+おがき,ひろみ
+ささき,けんじ
+ささき,まこと
+ささき,みつあき
+ささき,れいこ
+ささき,よしお
+ささき,ともこ
+さたけ,じゅんぺい
+こだま,かおる
+さとう,けんじ
+さとう,こうじ
+さとう,まさひこ
+さとう,まさひろ
+さとう,まさひろ
+さとう,まさと
+さとう,るりこ
+さとう,りょこ
+さとう,さとる
+さとう,よしき
+さとう,ゆきこ
+さかい,ちひろ
+さわだ,ふみひろ
+せがわ,とおる
+せいの,ひでゆき
+せき,いくふみ
+せきど,ながまさ
+せきの,ともこ
+せお,たかゆき
+せりかわ,まさひろ
+しばさき,とおる
+しが,ふじお
+しげる,ひではる
+しまだ,まもる
+しまだ,まゆみ
+しまだ,しろ
+しまだ,けんじ
+しまもと,ひでのり
+しまむら,けいいち
+しまの,あきひろ
+しみず,ひでき
+しみず,けんじ
+しみず,こうたろう
+しみず,さとる
+しみず,しょじ
+しみず,つとむ
+しみず,しんじ
+しもだ,のりひろ
+しもがき,たかゆき
+しもはた,おさむ
+しもむら,ひろのり
+しもおか,かなみ
+しむら,よしこ
+やえがし,あつし
+しのざき,みつえ
+はぎわら,まこと
+しおだ,かおる
+しおた,みつやす
+しおざわ,たつや
+しらい,たかし
+しらいし,たかあき
+しょだ,としひろ
+しゅ,ただし
+そめや,つとむ
+すだ,こうじろ
+すえ,さとる
+すえた,みずき
+しぶいち,ひろゆき
+すがの,けんや
+すがわら,ひろゆき
+すぎえ,のぶひろ
+すぎまさ,としあき
+すぎもり,しょひち
+すぎもと,あつこ
+すぎさき,あつし
+すぎうら,ひでお
+すぎうら,まさひと
+みずおち,ひさよし
+すぎやま,けんいち
+すぎやま,たけし
+すぎやま,ともひさ
+すぎやま,けんじ
+すみ,ともこ
+たべい,まさし
+すなみ,くみこ
+すさわ,ひでお
+すずき,ひでお
+すずき,ひでゆき
+すずき,ひろゆき
+すずき,ひさたか
+すずき,かつとし
+すずき,けいた
+すずき,のぶゆき
+すずき,とおる
+すずき,ようこ
+すずき,ゆきお
+すずき,じゅにち
+たべ,たかし
+たちはら,まさや
+たげ,まなぶ
+たぐち,けん
+なかた,たけし
+たぐち,まさもと
+たじま,よしのり
+たじま,ひろこ
+たかだ,おさむ
+たかぎわ,あきこ
+たかはし,えいじ
+たかはし,ひでゆき
+たかはし,ひろあき
+たかはし,かなこ
+たかくら,かなこ
+たかくら,かずよし
+たかはし,けんた
+たかはし,こうじ
+たかはし,まさのり
+たかはし,なりまさ
+たかはし,りゅひちろ
+たかはし,たかし
+たかはし,としき
+たかはし,わたる
+たかはし,わたる
+たかはし,しん
+たかくら,あきら
+たかみや,まこと
+たかさご,こういち
+たかさき,みつひろ
+たかせ,かずよし
+たかつか,ひろやす
+たかやなぎ,かずのり
+たかやなぎ,みつとし
+たけち,こうじ
+たけだ,やすまさ
+たけだ,やひろ
+たけがみ,あきふみ
+たけひさ,おさむ
+たけい,ゆうじ
+たけい,ひろゆき
+たけかわ,つかさ
+たけむら,しんいち
+たけなか,ゆうこ
+いまい,まこと
+たけさこ,ひでき
+たけしま,つとむ
+たけうち,たまみ
+ひだか,くにひこ
+たきもと,まさと
+たきざわ,まさひと
+たまい,しんいち
+たむら,しげる
+たなべ,やえきち
+たなべ,ひであき
+たなか,ひろし
+たなか,いつひと
+たなか,かつみ
+たなか,まこと
+たなか,のぶお
+たなか,ただゆき
+たなか,たけひこ
+たなか,としひで
+たなか,としひろ
+たなか,よひち
+たなか,よひち
+さの,かつしろ
+たに,ひろとし
+たにむら,とおる
+たにやま,みどり
+たさか,きくみ
+かとう,まさる
+てらだ,しょひち
+てらまえ,えいじ
+てらにし,よへい
+てらにし,あきと
+てらぞの,いさむ
+とびた,みどり
+いずみさわ,よしなり
+とだ,やすじ
+とぐち,たかし
+とまつ,ありひと
+あきむら,しんご
+ときたけ,しゅひち
+とくます,ひろゆき
+とくたけ,たかし
+とまき,ひろふみ
+とみい,えいいちろう
+とみた,よしふみ
+とみやま,だいすけ
+ともだ,やすまさ
+ともなが,えいじ
+とさか,よしゆき
+とっとり,まき
+まつお,のぶゆき
+とよだ,ひろみつ
+つぼい,かおり
+かとう,まさみ
+つちや,ひでき
+つだ,さとし
+つじ,たけし
+つじ,ともあき
+つじの,のぶゆき
+つかこし,たけし
+つかもと,あきひろ
+つかざき,あきひこ
+つきあし,かずや
+つきざわ,まさひろ
+つみた,きみお
+えんど,まさと
+つと,くみこ
+つむら,まさのり
+つねかわ,なおと
+つるおか,あきひこ
+つるた,よしゆき
+つるた,よしゆき
+つるた,あきら
+つつみ,としひろ
+つつみ,かずし
+つわこ,しんご
+つやま,まさひこ
+うちだ,よひち
+うちだ,よすけ
+うちだ,あきら
+うちやま,しげひろ
+うちやま,ふみひろ
+うど,あきら
+うえだ,こうじ
+うえだ,えいいち
+まつむら,ただひこ
+うえだ,としひろ
+うえだ,よしお
+うえまつ,そのすけ
+うえの,よしひこ
+うえの,のりこ
+いしだ,もとゆき
+うめだ,たつゆき
+うめがき,しゅんや
+うの,かつみ
+うらはし,ゆか
+しみず,きよふさ
+えがしら,しょこ
+すえかね,まさひろ
+うつ,せつこ
+うつはし,しんご
+うつみ,ひでお
+わだ,きよみ
+わだ,はるき
+きたわき,よすけ
+わしず,だいじろ
+わたべ,あけみ
+わたなべ,あきお
+わたなべ,ひでお
+わたなべ,ひろみ
+わたなべ,じゅんじ
+わたなべ,かずひこ
+わたなべ,こせい
+わたなべ,くにこ
+わたなべ,まもる
+わたなべ,まりこ
+わたなべ,さとし
+わたなべ,ただし
+わたなべ,てるゆき
+わたなべ,とおる
+わたなべ,としひろ
+わたなべ,けいいち
+えはら,つねふみ
+わたなべ,たつみ
+わたらい,せいき
+やえがし,はるなが
+やはぎ,ふみよ
+やまだ,ひろし
+やまだ,まさや
+やまだ,さとみ
+こんど,しんいち
+やまだ,たかし
+やまだ,つとむ
+やまだ,よしあき
+やまだ,つねお
+えのもと,まさよ
+さいとう,えいじ
+やまぐち,ひろこ
+ふじた,ひろゆき
+やまぐち,かつし
+やまぐち,ゆうじろ
+えざき,やすお
+やまぐち,あつし
+やまもと,ひであき
+やまもと,じろ
+やまもと,おさむ
+やまもと,しのぶ
+やまもと,しゅひち
+やまもと,たけし
+やまもと,よじ
+やまもと,としや
+やまなか,あつし
+やまね,おさむ
+やまのくち,みき
+やまさき,あきひろ
+やました,ひろし
+やました,ひろゆき
+やました,きんや
+やました,まさとし
+やました,さとこ
+しさい,やすひろ
+やました,ひとし
+やまうち,さとる
+やまうち,さとし
+やまざき,とおる
+やまざき,やすし
+やまざき,たけし
+やなぎもと,こういち
+やの,こき
+やの,としゆき
+やしろ,まさる
+やざわ,ひろし
+よだ,みちる
+よぎ,さとし
+よこい,たかし
+よこやま,まさかず
+よねざき,ひろき
+よしだ,けいいちろう
+よしだ,こき
+よしだ,しげみ
+よしだ,まさゆき
+えびな,としひろ
+よしだ,としゆき
+よしだ,まこと
+よしいけ,ひでお
+よしむら,ただし
+よしむら,むつみ
+よしの,たけし
+よしお,りょじ
+よしたけ,ひろき
+ゆあさ,やすし
+おわだ,まこと
+えぐち,しゅんすけ
+おざわ,ふみゆき
+さとう,こうじ
+しんたに,けんしょ
+すぎたに,ふとし
+たかはし,じゅん
+たきざわ,りえこ
+みよだ,かずよし
+やまだ,じゅんこ
+やはぎ,せいいち
+きや,ただし
+みせき,たつお
+えのもと,やすのり
+さくらだ,みつゆき
+ささき,さとる
+ばば,しんいち
+あぼ,のぼる
+あだち,しげよし
+あかさか,てつじ
+あまさき,しょじ
+あおき,さとる
+あぜがみ,かつゆき
+えどの,みつあき
+どい,たけみ
+ふじい,よしひこ
+ふじい,いずみ
+ふじもと,なおき
+ふじもと,けんじ
+ふくはら,きよし
+ふくおか,さとし
+ふくしま,ただし
+ふさやま,のりかず
+ごと,けんたろう
+はまべ,まさき
+はなだ,のぶゆき
+はしもと,たけお
+ひび,かおり
+ひらつか,こへい
+いかり,まさひろ
+いくた,ひでと
+いまい,かんじ
+いしはら,しげかず
+いそだ,ふみひろ
+いそざき,かずお
+じんぐ,ともひと
+じょない,さゆり
+じょにし,ひろき
+かじはら,たけし
+かまた,のぶゆき
+かめい,てつや
+かみやま,けんいち
+かとう,こういち
+かとう,よしひろ
+えみ,えいじ
+かわもり,けいすけ
+きむら,よしひろ
+きむら,さかえ
+きしべ,かずゆき
+きしかわ,たかゆき
+きたがわ,あきひこ
+きたなか,てつし
+こばやし,やすひろ
+こばやし,こういち
+こいけ,よしたか
+こいずみ,よしあき
+こじま,みのる
+こにし,おさみ
+こやま,よしあき
+くどう,たつや
+くまさき,あきら
+くろだ,てつや
+くさか,たつじ
+えんど,としゆき
+まえかわ,ひであき
+まるた,まもる
+まつした,よしひろ
+みくに,かずお
+えんど,くにひこ
+みね,かずよし
+みうら,しんいち
+みぞぐち,めぐみ
+ほんじょ,まさゆき
+みずしま,げん
+えだ,とた
+ながお,かずや
+なかむら,たかひさ
+なかにし,きよかず
+なかの,たくや
+なかお,かずや
+ねもと,よしあき
+にしかわ,ひろかず
+にしわき,しんご
+のだ,けんじ
+のぐち,まさひろ
+おちあい,ひでき
+おはし,しんご
+おの,とみお
+えみ,よしのり
+おくむら,やすたか
+おくの,しゅひち
+えんど,しょじ
+おおにし,よしあき
+おざき,しげる
+さえき,たかし
+さがわ,あつし
+さくま,とおる
+さとう,ゆうじ
+さとう,ようこ
+さわ,かつや
+せがわ,まさゆき
+せき,こうじ
+せんだ,けんいち
+しぶや,たかこ
+しみず,みとし
+しんでん,こうじ
+しおた,やすよし
+しゅくたに,たくじ
+すやま,ひでお
+すずむら,まさひろ
+たかおか,ひでみつ
+たけうち,よしただ
+たけうち,あきら
+たまい,くにはる
+たん,のりゆき
+たなか,のぼる
+えと,まさほ
+たにひら,しげあき
+たにやま,みつひろ
+たおか,きよたか
+たしま,こうじ
+たざわ,ゆきお
+ときた,けんじ
+とみた,しゅひち
+とみた,よしはる
+とみた,あきよし
+つじべ,ひとし
+つじかわ,としお
+えんど,ひろこ
+みやざき,いさお
+わだ,よしゆき
+わたなべ,かつのり
+やまだ,かずし
+やまだ,まさひろ
+やまだ,かずひろ
+やまぐち,けんご
+やまもと,てるあき
+やまおか,かずひろ
+やました,きくお
+やました,しげき
+やまぞえ,まさゆき
+やお,みきお
+やすだ,かつよし
+よつたに,しげき
+よしはら,けんじ
+よこうら,あきお
+ひらせ,ひろこ
+まつい,けんいち
+こばやし,じゅんこ
+すずき,まきこ
+かとう,よしたか
+くにとも,ひろみ
+えんど,なおや
+いとう,ただし
+おかざき,さやか
+ひろはし,のりお
+さかき,たかこ
+みき,かつのり
+くまき,のぶお
+たやま,かずひさ
+おわき,ひろまさ
+みょど,やすはる
+かとう,さとし
+ばば,よしお
+かねこ,ひでお
+こぐれ,まさお
+たけだ,しげお
+いちむら,いちたろう
+いとう,かずひさ
+うえはま,たけし
+なかい,としくに
+こばやし,のぶゆき
+しまだ,ご
+めぐろ,さとる
+やまや,ひでお
+ふじた,やすお
+まとば,ようこ
+いとう,ときこ
+なかい,まさお
+おかだ,てつお
+のもと,きはち
+ながしま,まさと
+よねかわ,ひろよし
+わたなべ,みきお
+むらまつ,はるひこ
+きたに,ひろあき
+みかみ,よしのり
+あだち,まもる
+いのうえ,のぼる
+おかだ,みのる
+かわしま,こうじ
+せき,まさお
+たかはし,まなお
+わたなべ,しげる
+くりはら,ひろし
+わたなべ,みつぐ
+ふじかた,ちひろ
+よしと,もとかず
+かわせ,しずお
+たなか,まさひと
+いまい,としき
+こむろ,よじ
+まえだ,たもつ
+こいけ,とおる
+わたなべ,ともちか
+こんど,ゆひちろ
+いしい,ひろし
+みしま,みつお
+こばやし,まさあき
+やました,たかあき
+たなか,てつお
+やまだ,あきら
+かみや,よしじ
+やまもと,まさる
+しおざき,ちはる
+なかむら,けいすけ
+たけもと,みつお
+だけやま,のりお
+あらかわ,おさむ
+よこた,まこと
+なかむら,けんじ
+あらかわ,ゆきとし
+おみち,えいご
+まつき,おさむ
+くしびき,みちあき
+にった,ひさとし
+つぼうち,ひさや
+さいとう,たかし
+たけむら,よしかず
+たなべ,けんじ
+まえだ,りょぞ
+すがはら,まさとし
+かねこ,みちやす
+やまうち,りきお
+かみざわ,とおる
+こが,ちかし
+つるさき,さちお
+ひがし,ひろゆき
+いしだ,ぜんじ
+なかがわ,まさゆき
+てらしま,かずひこ
+きたむら,としお
+はっとり,まこと
+ささき,えいき
+ほか,すけひで
+のむら,てるひこ
+はやの,みきお
+あんざい,ひろゆき
+ふるの,としひろ
+にしわき,かずお
+はせがわ,もとくに
+いわた,てつお
+とだ,しょじ
+なかむら,まさひこ
+ふるいし,ひろふみ
+なかむら,とくひろ
+なかがわ,すなお
+なかま,ふみひろ
+すがわら,やすひろ
+まつもと,はるお
+はしもと,ひさはる
+なかつ,しゅんじ
+さとうり,ひでみ
+いきた,よしひろ
+やまだ,けんたろう
+きくち,てるお
+すと,かずお
+しばた,しんいち
+ないとう,きよひで
+もり,くに
+いとい,まさお
+いとう,たかゆき
+まつざき,ひろあき
+うえの,まさと
+かたおか,ますみ
+ばんど,ふじお
+さいとう,ひでお
+いわい,たつや
+しもやま,ますこ
+あかまる,つとむ
+ごと,ようたろう
+まつだ,やすかず
+ねがみ,あきら
+やました,ゆきのぶ
+よねやま,しょへつ
+いしやま,たけし
+あべかわ,まさみ
+いまむら,ひさのり
+いわなが,こうじ
+うえだ,かずこ
+ふじかわ,あきら
+たむら,けんじ
+かしい,まさのり
+よねだ,みつのり
+よこつ,きよかず
+あさお,たつお
+たなか,じゅんじ
+たなか,しげる
+やしき,みのる
+かいがい,おさむ
+そがべ,はじめ
+ふるかわ,すすむ
+かわうち,としお
+ふじい,まさおみ
+いけのや,りゅへい
+おち,ひさお
+なかもと,れいじ
+わかばやし,しげる
+あらき,みのる
+やべ,くにひこ
+たかはし,ゆきお
+しばの,よしひさ
+たがしら,まさと
+すみた,まさお
+さとう,あきお
+ちの,ゆうじ
+やまだ,けいじ
+いがらし,ただみ
+いけがみ,やすゆき
+ふなだ,たけし
+いのうえ,ゆきお
+にしやま,けんじ
+いしはら,ゆひち
+すずき,のりゆき
+こもりや,たつお
+ちゅご,のりお
+こばやし,なおはる
+みやもと,はれお
+なかた,ふみお
+いりたに,ひでお
+おがわ,やすひろ
+おね,みつお
+こまつ,としお
+みのわ,てつや
+ふじかわ,こうじろ
+かわぐち,しげと
+ちば,やすひろ
+なかにし,のりよし
+さくま,けんいち
+たけまさ,たかゆき
+せき,たかよし
+さいとう,ひろし
+ふじもと,としたか
+おぐり,たいち
+いしばし,かずお
+あざみ,ひろし
+おがさわら,おさむ
+さいとう,つとむ
+たなべ,たかゆき
+もりやま,たくお
+きたざわ,ゆきち
+かなざわ,けんじ
+はらだ,まさあき
+おくやま,ひろし
+しみず,なおと
+いのまた,やすひろ
+ふるさわ,としひこ
+たけうち,さだお
+おの,ひとし
+もろおか,としゆき
+しのざき,よひち
+のぐち,ふみお
+しまだ,やすお
+かわさき,たつじ
+おかわ,きよし
+さめしま,しげる
+ほそじま,なおいち
+わたなべ,ひろし
+かわなみ,けんじ
+くさの,しゅへい
+つちた,ひでとし
+おはし,かつお
+のだ,まさと
+わたなべ,さとし
+よしたけ,せいじ
+ふくしま,ゆきお
+いわや,せいき
+さかもと,しろ
+くぼた,つとむ
+いそやま,けんじ
+おの,ふみあき
+あべ,しげあき
+おだわら,こうじ
+きうち,ゆたか
+いしかわ,まこと
+よしだ,まさひろ
+ちゃばたけ,かずひこ
+さかい,とみお
+おた,まさあき
+なかの,けいさく
+はだ,ともあき
+なかやま,こうじ
+さかぐち,みきお
+ながしま,ひさお
+さがら,やすひろ
+かわの,あきら
+かねこ,たかお
+なかだ,もとはる
+あまの,しょじ
+やざき,こういち
+ひらぎの,みつあき
+たばた,たつお
+くにゆき,みちお
+おくうち,けんじ
+すぎもと,としふみ
+なかむら,たつお
+すぎさき,まさふみ
+やました,よしお
+のむら,よじ
+しまだ,まさみ
+ふくだ,たかし
+さとう,じゅんじ
+おくぼり,けんじ
+よこかわ,やすお
+でんだ,としひろ
+ふくなが,ただよし
+たかしま,いさお
+かとう,みつる
+いしぐろ,たかし
+いけべ,しゅじ
+おつか,かずお
+しみず,いちお
+すずき,やすひろ
+つや,ひろのり
+うちだ,ひでじ
+おち,りょじ
+ありが,わたる
+なかしま,たかてる
+まさき,かずみ
+なかしま,みつる
+あさはら,かずのり
+ごと,ひでお
+うえまつ,ひろし
+さきもり,まさみ
+よしだ,きよし
+ふじた,すすむ
+やぎした,みつぎ
+むろふし,てつお
+かめだ,あきのり
+いかわ,くにゆき
+やまざき,すすむ
+つるはし,よしのり
+みのしま,たかお
+きしもと,まこと
+たけした,まさたか
+なかた,けんいち
+えんど,たけし
+もりや,かつじ
+くぼた,まつみ
+なおはら,まさお
+くげ,まさよし
+かさの,ひさお
+いいむら,ひろし
+すずき,よしあき
+おた,つとむ
+たけこ,やすよし
+むらこし,としお
+よしだ,まさひろ
+あさの,えいいち
+よしだ,ひろただ
+はやし,ひろし
+すずき,まこと
+おだ,のりお
+やまうち,まこと
+かわかみ,まさし
+うすだ,しんいち
+さとう,きよし
+くらしま,けいめい
+ませ,すみお
+この,ひろし
+まつざわ,けんじ
+しまだ,まさはる
+やまもと,たかし
+おくぼ,けにつ
+おぐら,まさゆき
+さくま,ひろふみ
+のぐち,としお
+ひなた,けんじ
+ふじい,よしあき
+すぎもと,まさとし
+つかはら,てつろ
+みつなが,たつや
+なかむら,りょひち
+やじま,きよし
+かみた,つねお
+ひが,こうじ
+みながわ,しんいち
+とみ,しんじ
+さかきばら,のぼる
+かくた,ひろし
+つちや,あきら
+むらた,しゅひち
+たなべ,よしのり
+しもだ,けんじ
+つかもと,かずのり
+はなはた,えいじ
+かんだ,ひろのり
+かわだ,こういち
+よしい,しゅにち
+くらや,まさし
+てらしま,ごろ
+きたがわ,まさあき
+いで,まさよし
+つる,たけし
+うつのみや,すすむ
+なかざわ,じゅんき
+ひだ,よしてる
+ほそかわ,たかお
+ちぐさ,ひろし
+そひゃ,あきひろ
+やまぐち,ひでゆき
+さかて,けん
+あわた,あきら
+わかばやし,よしのり
+えんじゅじ,くらじ
+のぐち,ひでお
+かわむら,しんじ
+もりもと,ゆきお
+よねはな,つねお
+じだ,きへい
+うえだ,ひでゆき
+しのはら,よしお
+たかやま,としひろ
+やまむろ,ひさお
+わき,としかず
+あまの,まさひと
+ほそかわ,よしのぶ
+とご,ひでじ
+なか,せいじ
+のだ,ひろみ
+やました,こへい
+なかじま,ふみお
+ながおか,しげる
+しぶや,かずひこ
+せりざわ,まこと
+ふじもり,こういち
+ふくだ,まさお
+ふじた,みきお
+やまじ,ただひろ
+こばやし,あきお
+こばやし,けんじ
+ししくら,いさむ
+こぐれ,まさかず
+もり,まさのぶ
+なかむら,じゅんこ
+いいじま,まつお
+きたがわ,としお
+たむら,ひろひさ
+ながしま,とみお
+えのき,たかのり
+さとう,ちえこ
+まつもと,ひろし
+うえだ,こうじ
+みずたに,よしかず
+じゅの,こぞ
+あかし,せいじ
+なかもと,たつひろ
+なかやま,たかひさ
+ふじい,ひであき
+なかやま,いずみ
+よねみつ,きよし
+たかせ,よしあき
+わたなべ,まさはる
+ふかざわ,よひち
+かげうら,のりたか
+しんど,のりゆき
+しみず,よしてる
+さかした,ただよし
+みやむら,やすえ
+たなか,いずみ
+たかいし,よしのぶ
+いしがき,よしお
+たかだ,ひろお
+たていし,あきら
+さかた,とくよし
+よこはた,たつお
+くや,おさむ
+よしだ,ひろのぶ
+きただ,やすひろ
+よしだ,しょひち
+こばやし,てつお
+なりた,としお
+いぬい,ひとし
+やすかわ,としのぶ
+のぐち,まさみ
+しょだ,かつじ
+やまだ,たつみ
+わくだ,よしの
+あべ,とおる
+たけかわ,まさとし
+さとう,すすむ
+はなおか,けんじ
+おの,よしかず
+たなか,かずなか
+つのだ,ひでお
+なまえ,としひこ
+たかはし,たもつ
+なかじま,まさひで
+なかむら,はるお
+うりう,しんじろ
+ふじいわ,かずみ
+ささき,みつよし
+きむら,まさよし
+たかぎ,ふみお
+かたやま,すなお
+いぐち,いちぞ
+あべ,てるひさ
+すずき,つとむ
+ひら,さだひろ
+なごし,たかお
+あだち,ひでき
+むらやま,よしお
+くにかた,ひでお
+まつい,けんぞ
+こいで,あきお
+ひろた,けんじ
+とみなか,ただひさ
+わきた,しげる
+うめむら,きみこ
+ふけ,はるたけ
+うえまつ,ふみひこ
+まつざき,たかし
+なかの,ゆたか
+こだか,しゅひち
+ひろたに,ひろと
+たかはし,おさむ
+さの,てるお
+しみず,たかひろ
+かんざき,かずひろ
+おさく,ひであき
+わしだ,けんじ
+くにもと,まもる
+しろかわ,すすむ
+かわはら,まこと
+おか,みつお
+こもり,ひろやす
+はやし,よしお
+かねこ,ふじお
+かどいけ,しょじ
+おかむら,よひち
+おかむろ,かつみ
+たぶち,やすひろ
+やまもと,つもる
+おさ,たけお
+いりえ,けんじ
+たかは,こういち
+たいら,じゅにちろ
+みなみ,よしかず
+いけだ,てるよし
+あおき,かずお
+やまうち,まさひで
+よしはら,やすまさ
+ささき,まこと
+みずたに,けんいち
+ひらの,つねかず
+ながた,よしあき
+かたやま,しげあき
+おだ,いくお
+えのもと,なおみち
+たけなか,じゅにち
+まつざき,じゅにちろ
+まつばら,なおこ
+やました,あきのり
+めぐろ,たかし
+おざき,しんいちろう
+おがみ,かずひこ
+おまえ,はるお
+きだ,やすまさ
+うえの,しげる
+おかだ,ふみお
+かなさき,じょじ
+やかべ,まさふみ
+なむら,あきひと
+いいじま,としいち
+ささき,かつゆき
+もちずき,あきら
+ぶんや,けい
+おかの,りょじ
+たけうち,ゆうき
+うえの,さかえ
+ふじもと,ひろし
+かわぐち,こうじ
+たきもと,せつこ
+かたおか,ひろよし
+くさかわ,ひでゆき
+あさい,こういち
+もり,しんいち
+くぼ,かんじ
+あんどう,おさむ
+うらやま,かつゆき
+くりた,とみお
+いのうえ,ひろゆき
+かねかわ,ゆみこ
+うえもと,もとあき
+なかお,のぶゆき
+おかもと,よしのぶ
+にしむら,としお
+やだ,やすお
+きど,さとし
+おかばやし,とおる
+かわしま,ひでと
+はしき,みつはる
+みやもと,まさのり
+なかお,しげる
+まつおか,なおき
+ひびの,ひとし
+にしかわ,えいいち
+かぶた,よしくに
+わたなべ,いちろう
+やまの,おさむ
+さいとう,よしお
+すずき,たけし
+くわはら,ひでお
+もりた,りょぞ
+ふじい,けんいち
+ながしま,はるお
+いなむら,きよし
+おざわ,かずおみ
+たきもと,おさむ
+みやした,みつひろ
+もうり,じゅんぞ
+いのうえ,たかみち
+ながの,いちろう
+はらと,たかひこ
+まみや,ゆきお
+ひがしばた,ひろみ
+にしたに,かおる
+たかく,けんじ
+はなだ,きよし
+あさの,こういち
+ばば,しげみつ
+いとう,ゆうじ
+いいだ,さとし
+こはやかわ,としひろ
+ふじわら,すみよし
+しゅくり,つねゆき
+ゆたに,まさひろ
+むねかわ,ひとし
+かんの,くにお
+にと,ひさし
+たむら,まさゆき
+なかしま,みつお
+おた,もとあき
+いのうえ,よしお
+くままる,としかず
+たなか,ひでお
+まえだ,さとし
+あみ,のぶゆき
+みなと,みのる
+にしだ,みちお
+いしはら,ひろし
+なかしま,しんきち
+いくた,けんし
+おき,たけひこ
+かがわ,かつみ
+ひらかわ,やすひこ
+やまざき,けん
+くまがい,いくこ
+たしろ,まさひろ
+さの,かつみ
+みどりかわ,よしあき
+なかむら,さとし
+よしみ,ちかこ
+いなみ,よしこ
+わたなべ,けんじ
+こが,しげる
+すがわら,まさあき
+たけうち,のぶお
+えだ,あきら
+あんどう,かずお
+たるい,さぶろ
+ごと,としお
+しもがき,やすひさ
+ながた,ただお
+ほしかわ,しゅひちろ
+こみなみ,としお
+かが,としのり
+はぜかわ,こうじろ
+ちば,みつしげ
+うらの,ひでまさ
+この,ふみひこ
+こばやし,まさのり
+ももせ,ひろこ
+つげ,ひでと
+やすこち,きよし
+ほそざわ,ともひで
+すぎやま,やすひろ
+あべ,よひち
+たなか,よしろ
+せいけ,ひろお
+つげ,ゆたか
+わかばやし,ひろし
+おくぼ,しげる
+おかべ,ゆきお
+いわい,じゅにち
+たなか,まさお
+やまもと,よ
+たかやま,のぶお
+たじま,しずか
+かずしろ,さとし
+こいで,としき
+かも,かずよし
+きたじま,ゆうこ
+はまの,じゅんじ
+いいやま,やすたか
+やました,しょひち
+きた,かつゆき
+いしたに,たけゆき
+くじめ,のぶゆき
+きしかわ,やすひろ
+ながの,まさのぶ
+よむら,あきお
+なかしま,たかお
+もり,ふみお
+やまじ,ひさお
+おぜき,てるゆき
+いなだ,みつお
+はやせ,なおき
+ほんぽ,ひでのり
+おひゃ,まさはる
+きたむら,たかし
+としん,たつのり
+たけい,よしゆき
+おかやま,しげる
+いしずか,としゆき
+はた,しょひち
+すがはら,しげゆき
+いわみ,さとし
+ゆもと,さだお
+きたがわ,かずお
+いはら,まさひろ
+のむら,ただのり
+みやさか,としゆき
+よしだ,えいじ
+ふかだ,よしかず
+ふじわら,まさたか
+きと,やすし
+うえもり,たかし
+やまかわ,すすむ
+くろだ,かんじ
+おつか,たかし
+うえだ,さとおる
+その,やすふみ
+じょだい,のぶお
+しんぞ,こうたろう
+うえだ,としあき
+わかみや,ゆうじ
+かむら,やすお
+ふるたに,ひでお
+かつうら,ゆたか
+くまい,ゆぞ
+ばば,いちろう
+かねとも,けんじ
+むらはし,ともよし
+どい,たかし
+なみかわ,かずみつ
+たかおか,としあき
+まつもと,いさお
+わたなべ,まさみ
+ただ,みちろ
+ありま,ひろし
+ながの,ゆうじ
+やの,みきお
+いさか,ともみち
+いとう,ひろかず
+やまざき,ゆたか
+くの,かずみ
+しば,ふみつぐ
+きむら,たかまさ
+すみだ,かつみ
+もとがいと,せいじ
+にわ,はるつぐ
+たけうち,たつみ
+たむら,とおる
+ぼた,たかし
+かどや,しげはる
+はらだ,けんじ
+みついし,りゅひちろ
+いのうえ,よぞ
+むらはし,まさひろ
+にしかわ,よしてる
+ますだ,としのり
+おた,てるゆき
+ふくい,ゆきひろ
+かげやま,とくいち
+ながつか,すみお
+くさの,かずお
+こじま,けんじ
+くらた,あきら
+たけうち,かずお
+いけだ,ひろかず
+たかの,しげこ
+くらや,ゆうじ
+おの,かずよし
+なかだ,けいすけ
+とくもと,ゆご
+おはし,よしのぶ
+やまだ,ひろし
+はんだ,けいすけ
+いしはら,まこと
+よしはら,しんいち
+たていし,こうじ
+いとう,くにお
+さとう,まさお
+おくら,けんじ
+なかすじ,ただゆき
+たいら,しげお
+きひら,ひろゆき
+なかじま,ただし
+やまざき,けんいちろ
+とびた,あつお
+なかざわ,ゆたか
+にしはら,しんいち
+めぐろ,つとむ
+まるやま,じゅんぞ
+きくち,たかあき
+あおき,としふみ
+きったか,あきら
+やすい,てつお
+いちまる,せいじ
+やまざき,さとし
+すがはら,としひこ
+とみなが,しふみ
+ちぎり,たかお
+おば,しょじろ
+まつい,よひち
+ひらやま,ひろし
+やまむら,はるひこ
+おで,ひでつね
+よしなが,ときお
+こじま,あきら
+とみなが,はるお
+さが,かずお
+はら,じゅんじ
+とみよし,こぞ
+よしだ,ひさのり
+ひらばやし,よしみ
+まつど,たみお
+いまふく,ゆきこ
+きよせ,よしあき
+はなぶさ,としゆき
+ちば,じゅにち
+やまざき,よしひこ
+なかはら,えいじろ
+おの,ゆりこ
+うえまつ,ふくみ
+あきやま,まさひろ
+とたに,みつのぶ
+よねだ,まさみ
+ふるくさ,ちかえ
+ひろや,たけのり
+よしだ,ちえこ
+かねこ,てつや
+ながた,ゆうじろ
+いべ,たかし
+せきね,そのえ
+おかだ,ひろかず
+かない,ひでお
+さとう,ゆし
+さかきばら,しんや
+いまい,すすむ
+ひめじ,としのり
+おぎはら,りゅじ
+たけむら,けんじ
+とひゃま,こへい
+きたはら,かよこ
+おさか,まさあき
+おこち,よいち
+たかお,まさひろ
+うど,さかえ
+うの,のりひろ
+ふじき,しんさく
+さとう,しげる
+いそがい,まさはる
+からさき,しんじ
+やまだ,まさゆき
+わだ,まさはる
+しばた,かんせい
+しおざき,ひとし
+しが,よしお
+くりた,みはる
+はしもと,しんぞ
+よしむら,まさよし
+みやざき,たかのり
+きたがわ,たかし
+おだけ,たかひさ
+すずき,かつひこ
+やまいし,かずまさ
+おぜき,のりこ
+たかい,としろ
+かねこ,きんご
+はらだ,ひろみ
+しまだ,としお
+やなぎ,まさみ
+すずき,よしお
+たかはし,たもつ
+おぐりやま,えつお
+わたなべ,としお
+やまむら,たつお
+たかはし,みつのぶ
+しおじま,みちお
+つるおか,よしろ
+いとう,たかし
+まつうら,ひろのり
+やまもと,きはちろ
+くまみ,ちから
+けんよし,あきら
+やまかげ,きよあき
+ごと,ひろし
+たけうち,さとみ
+はやし,けんじ
+いしばし,ひでゆき
+いな,けんさく
+いのうえ,たけお
+にしかわ,たかひと
+はんだ,やすお
+たてばやし,とおる
+おしま,のぶゆき
+しばた,けんじ
+みうら,ただひで
+こかご,かおる
+いいだ,とおる
+たけすえ,としみち
+いがらし,せいき
+ますやま,たかお
+さくやま,ゆぞ
+さくらい,たかし
+たまり,よしあき
+いまにし,ひろお
+おがわ,まさとし
+はぎわら,かずゆき
+おくに,としゆき
+いけだ,りょ
+まえじま,たかゆき
+いわい,ひでお
+やまだ,きよじ
+すだ,かずよし
+ときわ,くにひこ
+はやし,はるき
+たけもと,あつし
+かんばやし,かずのり
+とざわ,ゆたか
+たての,かずみ
+かんべ,てつや
+おくだ,よしお
+たもと,かずお
+ながい,けん
+おざわ,まさお
+さとう,みのる
+こんど,まさひと
+ねぎし,きよし
+たなか,ひでひこ
+こむろ,せいいち
+よしだ,あきら
+いいじま,かつみ
+にいほり,まさき
+こもりや,まさと
+しんど,おさむ
+やの,ゆひち
+たなか,かずお
+はぎたに,まさお
+こすぎ,つとむ
+いべ,しんご
+かなざわ,けいこ
+ただ,よしと
+ながた,とみお
+かまだ,のぶたか
+たかはし,しんいち
+おいで,やすなり
+たかくら,あきお
+やすまつ,ただし
+まる,てつお
+くぼた,りょひち
+たばた,とよふみ
+もりた,ひろみ
+くにとも,かずお
+あさぬま,よしたか
+ほしな,ひでずみ
+のざわ,よひち
+まつむら,まさとし
+ひらかた,ろくろ
+ひらま,だいきち
+しみず,のりお
+よこかわ,ひろし
+きくち,ただひさ
+くろさわ,りゅすけ
+たけうち,ひろし
+ひらが,よしお
+さいとう,まこと
+うちぼり,ひろし
+いなむら,すすむ
+おさだ,よしひさ
+すぎやま,のぼる
+いまず,けいいち
+うらの,のりお
+もちずき,つねじ
+すがわ,ひろかず
+いけだ,やすお
+たなか,はるひさ
+さいとう,しんいち
+ふじた,かずお
+みやね,はるお
+かまだ,たかし
+ねぎし,わたる
+おくがわ,あつし
+はやし,いさむ
+ばば,てつお
+やまもと,よじ
+えんど,のりお
+そめや,こういち
+あらい,よしはる
+あべ,たかし
+ちば,たかとし
+たかやま,やすただ
+やまき,まさよし
+たけうち,かずお
+たけべ,しげる
+あだち,としお
+たかしま,はるお
+よこやま,たつじ
+しらいち,としみち
+くどう,つとむ
+すずき,みのる
+たかしま,よしのり
+やまがた,ゆきお
+よしだ,ひさし
+みやかわ,のぶひこ
+ささき,つとむ
+いでうら,のぼる
+たなか,おさむ
+いとう,よしゆき
+おつ,あきら
+ふえき,たつお
+しもふさ,みのる
+みやかわ,ゆうじ
+はしもと,しげふさ
+やまぞえ,たかお
+にいくら,よしあき
+わたなべ,あきら
+むろふし,のりなお
+かんだ,まさる
+くどう,しげお
+たかはら,きよし
+おかだ,たかし
+どい,みのる
+たなべ,たくお
+こむろ,けんじ
+もりやま,むつみ
+あらまき,かずこ
+こしべ,ひろし
+さの,あつひこ
+おかだ,たけし
+ふじわら,としかず
+まつお,あつし
+たなか,まさたか
+きはら,たかし
+にしはた,こうじ
+にしわき,のぶお
+おかざき,としのり
+ふじわら,かな
+やすだ,かつまさ
+おか,けいこ
+ほその,わたる
+あかし,けいじ
+なかい,さとる
+やすだ,まもる
+てらむら,けんいち
+くぼた,ふみこ
+こにし,のぶお
+のむら,かずろ
+いのせ,のぶひろ
+わたなべ,よしまさ
+にしお,きょこ
+もみき,かずみ
+すなだ,みねお
+たけうち,なおき
+あきせ,ゆ
+しおた,よしたか
+きど,ひろかず
+いしわたり,おさむ
+しらがみ,ゆかこ
+うちなが,きょ
+たなか,しげお
+くろさき,たくま
+おとし,こういち
+さとう,きくじ
+すずき,ふみたか
+ひろた,よしゆき
+やのかわ,しげみ
+さかもと,あきら
+こむろ,くにこ
+いまた,やすひこ
+ほそや,かずひさ
+てらさか,こすけ
+ほんま,ひろたか
+かすが,さちこ
+まつだいら,ひろし
+かわかみ,よしひこ
+ねごろ,よしあき
+ふくだ,としお
+すずき,たかひろ
+とまつ,ひでや
+いの,しんいちろう
+すずき,てつお
+あさい,ゆひち
+はら,まさお
+ほし,まさゆき
+なるかわ,さいじ
+おだ,じゅにち
+おばな,まもる
+たにざわ,まさと
+ふじおか,よひち
+ごと,かずたか
+これなが,まさゆき
+たかはし,かずえ
+たから,ひろしげ
+おくわ,えいじ
+たなか,しゅじ
+さとう,しんじ
+しまぬき,えいぞ
+そね,ひろし
+たなか,よしじ
+ふじむら,たつろ
+ごと,じゅんじ
+はしもと,かずお
+ひるま,たかのり
+ほしば,くにかつ
+かめわり,かずのり
+おくい,たかあき
+ひさもと,しげやす
+すずき,まさひろ
+ひらさわ,たかし
+きたで,たかじ
+ふくだ,としあき
+しおざき,だいすけ
+むと,みつはる
+にしおか,きよし
+つぼの,ひでかず
+なつうめ,のりお
+たにがき,けん
+おすが,ひろし
+うちだ,かずお
+かとう,こうじ
+ささき,しんじ
+かしま,やすたか
+あかさか,あきら
+かわかみ,ひでよ
+しど,ひろみ
+やまうち,ひろし
+かの,おさむ
+はら,きよし
+まつばら,よしたか
+てらかど,のりあき
+しおた,かずひさ
+おかだ,けいじ
+くろだ,ゆたか
+もりもと,さぶろ
+せき,ひろひさ
+すずき,としまさ
+たけくさ,ひろあき
+たがしら,かずお
+こばやし,ひでお
+さえき,えいじ
+たつざわ,ひでお
+さいとう,のりお
+ふるかわ,かずお
+たむら,よひち
+つりや,たつや
+さかぐち,よしひで
+ふくしま,ゆたか
+おかわ,いくお
+ふじた,けんじ
+かわぐち,かずひろ
+ときおか,よしのり
+なかの,ひとし
+いのうえ,りょ
+くにとし,ふじお
+さかた,ひろし
+もりかわ,あきら
+のぐち,ひろし
+くぼた,のぶお
+なかおか,おさむ
+のふじ,けいじ
+もがり,きみあき
+まえざき,ひとし
+おつか,きよし
+みずた,ふみと
+すぎやま,まちお
+かがわ,ふみとし
+にしはら,よひち
+てずか,ひろし
+しおみ,しゅんすけ
+おはら,かつのり
+あさくら,てるお
+しまだ,とみお
+しまかわ,まさゆき
+はしもと,たくろ
+うず,こういち
+たかくわ,つねお
+みちた,ひろし
+うえだ,むつみ
+しが,たつお
+いけみ,けいじ
+もり,えいじ
+かしもと,いさお
+いしはら,しげよし
+かねこ,けんのすけ
+たかはし,よしひさ
+もとい,よしたか
+こたけ,よしふみ
+かさい,しんいち
+かとう,みつお
+こくぼ,ただあき
+わかやま,あきひろ
+さなだ,てつや
+さかた,すすむ
+のむら,ひとし
+はやかわ,しずお
+みやざき,まさのぶ
+おにつか,しゅにち
+いで,ういり
+ながさこ,たかつぐ
+いとう,みつぐ
+かねたけ,まさあき
+くぼた,ますみ
+ありま,ちえこ
+わかお,ちえこ
+いしざか,としお
+おた,まさお
+さかもと,みちお
+おほり,すえこ
+しんたに,のりこ
+うちやま,けいこ
+ひらた,しげや
+ありぞの,まさひこ
+いとう,とみよし
+あおやぎ,みつお
+なかむら,かずみ
+いいだ,しげお
+なしき,けんじ
+むらせ,おさむ
+まつお,たかのり
+さとう,みちたか
+あさぬま,てるあき
+ふたみ,きよゆき
+ふなと,けいこ
+ふじた,ひろし
+ふるかわ,たかゆき
+ふなはし,ぜんはちろ
+ぶと,けいご
+かの,ゆきお
+おきつ,としあき
+たかぎわ,たかし
+ほしの,みなこ
+にしじま,さとこ
+かまた,たかし
+つじもと,まさあき
+はなだ,さだお
+ひろせ,みちお
+にしだ,かおる
+うえき,かずお
+よしの,けいご
+きたむら,しろ
+しみず,しんいちろう
+いしざき,やすまさ
+はやし,くにみ
+きくち,ゆみこ
+おかど,たけお
+こむら,ひさや
+はしもと,ひろゆき
+なかつか,かつひろ
+おひし,ひろたか
+くろだ,いさむ
+なかい,ちえこ
+きたざわ,くにひろ
+きしだ,ちあき
+かなまる,としいち
+あらい,しんじ
+ふたつぎ,まさお
+きくち,ひとし
+いいだ,としかず
+なかえ,きよお
+ひらまつ,せいいち
+にしおか,みちこ
+さとう,ひさし
+もり,みつのぶ
+ほしの,ひでふみ
+やまぐち,つぐお
+うすい,しげる
+まつばら,つとむ
+ありさか,たけし
+にしお,ますよし
+きだ,まさよし
+やの,まさみ
+かとう,のりあき
+わたなべ,しげる
+はやし,まこと
+わたべ,しずお
+わたなべ,はるお
+ゆぐち,としお
+やまもと,やすし
+さいとう,あきお
+かいず,みのる
+ほしの,じゅんぞ
+しのはら,けいき
+おぬま,はるお
+みわ,いさお
+ほりむき,のぶひろ
+いしたて,よひち
+みふね,えいいち
+もみき,まさき
+はせがわ,えいじ
+すぎやま,てつお
+つくだ,ゆひち
+あだち,けんた
+でざわ,ちひろ
+おた,やすお
+さとう,よひち
+せきぐち,まさお
+こくぶん,ひろこ
+ほしな,ひさし
+うらの,ふみお
+たけむら,けんいち
+とくなが,ひでお
+くりはら,のぶひろ
+おくむら,まもる
+さいとう,たけし
+まつした,よしま
+たけだ,しんいちろう
+にしき,きよし
+うめだ,まこと
+ほんだ,てるお
+かも,しゅんじ
+うしだ,ただし
+さいとう,ふみのり
+はすだ,ただよし
+みかわ,きよし
+うちだ,あきら
+にしざき,みつのり
+いがらし,よしき
+わたなべ,ゆきふみ
+しまむら,こういち
+かとう,やすひろ
+かわべ,ひとし
+さかもと,ひでと
+もりした,じゅにち
+すがはら,しんいちろう
+とみやま,けいぞ
+ふくだ,みちこ
+おとざき,もとよし
+ふじもり,さかえ
+こもり,いくお
+ふくなが,かずうみ
+みやはら,つよし
+じんの,ひろつぐ
+きむら,ますお
+いながき,ようこ
+もり,くにひこ
+わたなべ,しょひち
+つじもと,しょじ
+もんぜん,あさこ
+なむら,こうじ
+やまもと,のりこ
+はしもと,しょこ
+やまうち,よじ
+あらい,もとよし
+ふじい,りょ
+わたなべ,かつひこ
+はせがわ,つよし
+しげやす,あつひこ
+やまのい,たかお
+こばやし,きよゆき
+ながい,まさあき
+さわ,かつのり
+まつよし,みつお
+さいとう,えいこ
+かの,ゆきこ
+うしごめ,のりお
+いしい,かつのり
+うすき,あきお
+すどう,ひろゆき
+かじやま,まりこ
+おば,えりこ
+すわ,ひろき
+いわた,うん
+と,やすのり
+おいかわ,ひろし
+ひらい,てつ
+たかしま,とよかず
+ふみの,えいいち
+おかざき,たくま
+しらき,まさる
+たけもと,よしあき
+まつもと,のぶお
+まつばら,みちお
+えびはら,かおる
+ふじの,ひろあき
+ふかや,やすお
+ほしの,こうじ
+かたやま,いずる
+あらかわ,よしお
+たかの,たかきみ
+くろだ,ひでき
+いとう,ふみお
+こざい,やすと
+うえやま,はじめ
+はっとり,ひとし
+にしむら,えいこ
+ふるかわ,としお
+やしき,ひろし
+ほどやま,のりお
+えと,まさつね
+やまもと,ゆうじ
+せきぐち,のりひこ
+たなべ,ひろし
+たけだ,こうじ
+しんたに,やすお
+くぼた,まさひろ
+すぎおか,たかし
+やまざき,さちこ
+さいとう,まさゆき
+うえの,かずお
+しまもと,やすひろ
+きたの,じゅんこ
+いいずか,みつる
+いずみ,きよし
+はらだ,としき
+おちあい,としたか
+やまうち,たかお
+えぐち,しげき
+はぎわら,ひでお
+たかぎ,ともひこ
+おくもと,まさとし
+まつざき,いさむ
+いちむら,ひでとし
+みやさか,としゆき
+みやた,かたし
+ながお,きよし
+いわお,さとみ
+ふかざわ,さだのり
+たむら,ひでき
+きりゅ,としたけ
+まつざき,こすけ
+かとう,まさみ
+みた,りょこ
+いしい,きょじ
+おかもと,たかゆき
+うえおか,さとし
+きょの,あきひろ
+かねこ,ひでつね
+さくらい,たけし
+わかばやし,たけのり
+わたなべ,まなぶ
+あさい,りょひち
+かどの,ゆりこ
+やまざき,ともこ
+あわの,せいいち
+おがわ,しょきち
+ぜんけ,まさし
+ふくもと,しげる
+おど,まさお
+もりもと,ただお
+とぼ,よしお
+かたやま,てるみつ
+ながまつ,なおと
+わたべ,いさむ
+いしき,てつお
+いながわ,のぶお
+なかの,まさと
+にしやま,ゆぞ
+しもだ,きょこ
+しげた,としひで
+まつもと,よしひろ
+かたやま,にすけ
+その,ゆうじ
+いせき,とよひろ
+いとう,としゆき
+せきね,たかのり
+むらやま,としお
+まるやま,ともひこ
+くろさわ,かずのり
+すみ,たかお
+のぐち,かずみ
+さとうみ,まさし
+おかわ,たかあき
+なかの,よしみ
+おひし,ゆ
+はぶ,ゆうこ
+うちだ,たかはる
+みき,やすよし
+すずき,みよこ
+かさはら,たかお
+おくぼ,ひろしげ
+かたかみ,ゆ
+たかはし,かつみ
+いしかわ,ゆきお
+たかとり,よしかず
+たにぐち,まさお
+せき,ふじお
+くぼた,けいじ
+あべかわ,よしふみ
+ふじまき,とおる
+かたやま,ゆうじ
+こやま,ひでき
+はしもと,つぐひと
+すみ,ひでのり
+にしかわ,じょじ
+さわま,あきら
+はしもと,のりまさ
+なかた,ふみのぶ
+うちやま,つねゆき
+ささき,いずみ
+あさはら,かずはる
+にった,のりかず
+だん,としひこ
+すぎた,かずや
+やまもと,たかお
+おふち,しんじ
+こばやし,ゆきまさ
+みよし,まさと
+いしだ,むつお
+おにき,たけし
+くりはら,まさゆき
+しらい,けんじ
+さかにし,あけみ
+おだ,みちお
+かます,ひろし
+なかがわ,あやこ
+かしもと,ゆうこ
+ばんど,やすまさ
+ふたみ,ひろし
+やました,まり
+はやし,みつひろ
+かげやま,ふみこ
+あすま,るりこ
+しもむら,てつし
+やまぐち,しんいち
+やまと,みき
+さとう,みわこ
+まつだいら,こうきち
+まつむら,ひでひこ
+この,のぼる
+おはし,たみお
+きくた,つかさ
+よしおか,けんいち
+さの,ひさし
+たなか,けんぞ
+ささき,まさよし
+かわぐち,きょひち
+やました,ゆずる
+たけむら,まさし
+ふくち,たかし
+まなか,ゆうじ
+あらき,みのる
+ひらの,のぶお
+なかむら,ゆひち
+はしもと,ただし
+かとう,ひろし
+はまかわ,しげる
+はやし,かずや
+いとう,としみち
+すずき,よしや
+たけうち,やさぶろ
+にし,しげき
+いわほり,ひろし
+いまい,よしお
+もりの,ゆきのり
+にしはら,すすむ
+きりや,あつし
+さとう,たつお
+ほそだ,ふみお
+たかはし,かずえ
+なかじま,とみえ
+やすはら,たかのぶ
+くろいわ,よしかず
+かも,つとむ
+あかまつ,としかつ
+きたむら,いくこ
+にしだ,くにお
+おかだ,けいこ
+ささき,けんいち
+たかはし,いちろう
+しみず,かずひこ
+えんど,こういち
+うだがわ,としまさ
+しみず,くみこ
+あおやぎ,たかし
+はしもと,けい
+たけうち,ひさと
+あらい,とよこ
+いしじま,ひさこ
+こがね,ただし
+さわしま,しげる
+たかやなぎ,なるゆき
+まさだ,たかし
+しみず,ひろし
+おのでら,くにあき
+たなか,まゆみ
+のむら,ゆきこ
+よしだ,しんいち
+よしだ,としゆき
+さたけ,ひろし
+さいとう,いさむ
+みやぎ,しんすけ
+たかしま,てるお
+かばや,のりふみ
+いしざき,せいぞ
+かがや,かずお
+こたに,ひであつ
+こすだ,やすし
+いじり,いさお
+まるやま,ひでお
+かない,しんいち
+やぎ,みのる
+ふじの,ひろみち
+こでら,あきひで
+すぎお,たかお
+すがはら,みつる
+さいとう,のぶお
+おか,ひろし
+いしまる,としすけ
+みやざき,しんじ
+はまの,まもる
+こたじま,ひろし
+たかしま,けいじ
+つかだ,ひろふみ
+なかむら,しんいち
+たけだ,よひち
+やすむろ,たくもり
+なかむら,やすあき
+ふじしま,ゆたか
+おかだ,たみや
+あや,よしお
+なかむら,みつぐ
+たかはし,さとし
+すがはら,まさと
+ゆあさ,まさゆき
+いしい,こういち
+おくぼ,みつやす
+おさわ,はるやす
+やまもと,おさむ
+いまいずみ,こぞ
+おかだ,みちお
+なかむら,よしのり
+たなか,あけふみ
+なかの,せいいち
+おもり,かつふみ
+やまもと,まさのり
+ながい,はるひこ
+こばやし,ひろし
+ひきち,しげまさ
+やまだ,たけし
+つかもと,みつまる
+いのうえ,みつまる
+いのうえ,たけひろ
+すみかわ,しげただ
+ふくだ,けんじ
+やまもと,むねよし
+さいとう,ひろとし
+かんば,まさたけ
+さらい,みきお
+さかき,かずひこ
+やすい,よしひろ
+かみむら,くにお
+せべ,きよし
+よしだ,たくお
+ながせ,かずひこ
+ふくち,かずお
+ふくだ,ゆきまさ
+のなか,よしはる
+いまだ,ひさし
+にしかわ,としお
+こやの,つとむ
+なかざわ,まさと
+おがわ,あきら
+なかやま,かおる
+ぬのかわ,じゅにち
+そね,せつこ
+みぞぐち,ゆうこ
+こばやし,よしみつ
+よしまつ,まさあき
+おはら,しょじ
+やまだ,たかし
+みのぐち,たかし
+しんめん,よしたか
+のせ,としかず
+いわはし,ただし
+あかい,いずみ
+つたもと,じょじ
+なかもと,のぶひこ
+くだなみ,まさひろ
+いちだ,ますこ
+やの,ひでお
+まつき,あきお
+ささき,たかし
+ふるの,はるひさ
+ふじた,けいこ
+いのうえ,ふみお
+たや,ゆきお
+みやざわ,いわお
+わたなべ,まさお
+あくね,まさおみ
+ほしの,しんじ
+よしだ,よしのり
+うえむら,たかふみ
+かみや,まさお
+すずき,りょひち
+あんどう,たけし
+とよいずみ,まさはる
+くわな,みのる
+にいみ,まさゆき
+みうら,たかし
+のむら,えいじ
+おかだ,きみお
+あさぬま,よししげ
+ささお,かおる
+いながき,あきら
+すがわら,みどり
+しょじ,みつやす
+たがわ,たろう
+そが,ようこ
+しょわ,としろ
+まつかわ,しんいち
+しもむら,かずお
+わたなべ,のぼる
+こばやし,けんじ
+いいだ,たけし
+ふくもと,たかはる
+むらやま,としお
+ほり,のりこ
+やまの,かつし
+にしわき,おさむ
+まつお,あきら
+おかもと,じゅん
+おさき,かずひろ
+うめもと,ひでゆき
+おかむら,まさと
+こいけ,さとし
+おたに,たけさだ
+かたおか,みのる
+おかだ,のぶとも
+ふくしま,きよみ
+えだなか,ひろゆき
+すずき,ゆうじ
+いちかわ,なおゆき
+くろかわ,しんじ
+さとう,こういち
+おさわ,けんいち
+もちずき,ひろき
+やました,まさあき
+いちかわ,ひでお
+ふかざわ,よじ
+くぼた,まさな
+にしむら,まこと
+ねぎし,けんいち
+こんど,なおふみ
+ふるや,あたる
+こばやし,こせい
+たむら,まさあき
+みつはし,まさき
+くまざわ,しちろ
+やまだ,よしお
+ひろつ,やすのり
+かねだ,しげる
+あそ,せいいち
+えびはら,きよし
+やすい,きよひさ
+すどう,かずひこ
+やはた,すえひろ
+さかい,けいいちろう
+さが,たかし
+やまざき,かずほ
+なかむら,のぶお
+いざわ,こうじ
+あらい,ひさゆき
+うぶかた,けんじ
+わたぬき,みつぎ
+ひした,たつお
+かとう,ひろひこ
+やまね,だいはちろ
+やました,かつみ
+のむら,よしお
+やない,かずみつ
+むらかみ,ゆたか
+あおき,ゆきお
+やしろ,きいち
+あさま,くにお
+おくだ,ひろこ
+いしばし,まさのり
+みなみで,ともひろ
+いぬずか,よしお
+ときわ,えみこ
+みうら,ようこ
+まぶち,ひろちか
+おばら,けんいち
+まつき,さだみ
+えぐち,ただゆき
+おみ,のぼる
+わたなべ,ゆうこ
+あらかわ,よしと
+すがの,ひろし
+やすい,よしろ
+みやもと,まさゆき
+ふじぎわ,まさみち
+きたがわ,あきら
+たにぐち,すすむ
+こじま,まさひろ
+あまかわ,ふみお
+おぬき,ゆうじ
+たなべ,ひであき
+まるはし,こへい
+やどや,よしはる
+おがく,やすのぶ
+さかた,としはる
+はら,ひろゆき
+たかぎ,ひろし
+あいはら,けんいち
+おた,たけし
+あきやま,たけし
+しみず,しんじ
+こばやし,あきら
+はたもと,こへい
+うすだ,ひろやす
+たかはし,こういち
+なかがわ,みきお
+まつばら,みつる
+くぬぎ,よしあき
+おがわ,ゆたか
+つじ,ゆたか
+かわい,こうじ
+すがわら,いさお
+むと,じゅにち
+おばら,よしひろ
+かとう,こへい
+かぶらき,ひでみ
+わかたべ,ひでお
+おがわ,あきら
+いわさき,とおる
+なりた,よしひろ
+あきやま,たかお
+みつい,おさふみ
+えんど,けんじ
+よねた,たかのぶ
+あおい,かずお
+おかもと,てつお
+おつか,はるお
+ふくもり,ゆたか
+てしま,よしお
+はま,かずたか
+よしだ,けいいちろう
+かわべ,しゅひち
+たなか,かずお
+たかはし,やすとし
+たなべ,たかゆき
+あそ,ゆきお
+たかだ,つとむ
+みやの,こしろ
+うえずみ,ひろゆき
+いちかわ,おさむ
+あさわ,たかし
+いなもと,けいいち
+もりや,ゆたか
+なかたに,あきお
+みやもと,きよし
+みくに,よしひさ
+きたむら,しんいち
+やたべ,さかえ
+ながかわ,かずまさ
+やな,ひでき
+さくま,はじめ
+あらい,よしはる
+しまだ,やすのり
+てずか,きょひち
+うえの,ふみあき
+さいとう,ひろいち
+おくわだ,ひろし
+よこやま,としお
+わたなべ,ひとし
+にしむら,やすあき
+たかまつ,ともふみ
+にしむら,かずお
+いちき,ひとし
+いわした,けん
+おの,いちぞ
+にしき,えいいち
+さわ,ただまさ
+たかみ,まさひで
+やすふく,りょひち
+おた,かずお
+おかもと,みつる
+さかい,としお
+ふじもと,なおこ
+まつもと,しゅにち
+おひゃぶ,しゅにち
+にしむら,ひろゆき
+ほりうち,まなぶ
+いしもと,よしおみ
+まつもと,よひち
+たけうち,あきのり
+もとやま,こういち
+よしなが,たつま
+ふるかわ,ひろし
+たにぐち,のぶつな
+たけこし,としお
+つむら,たつお
+おの,かずお
+おかもと,おさむ
+ふるた,けんじ
+にしの,ひろし
+みずたに,ひろまさ
+こやま,やすお
+きくち,ときお
+おこうち,しげのり
+かわた,かずや
+くはら,しゅひち
+ふるはし,けいいち
+たかよし,しゅひち
+かす,なりお
+あみもと,しんいちろうう
+むねとう,こしろ
+まつもと,こうじ
+たかなし,みちお
+あきた,よしお
+たかはし,まさとし
+ながい,こせい
+よしだ,しげお
+まつもと,さとし
+とくだ,まさひろ
+ひらい,そういちろう
+おくしま,ひろゆき
+ました,ひさし
+やまだ,けんいち
+さくらい,まさあき
+たきざわ,たかし
+ますこ,よしゆき
+しんかわ,こぞ
+おたに,ふみとよ
+かわの,のぶゆき
+あらかわ,すすむ
+あだち,としお
+うちだ,すすむ
+こはら,まさあき
+おはし,としお
+かめおか,やすみち
+みむら,たかし
+いき,つかさ
+あしずか,やすあき
+やまもと,みちお
+よしだ,のぞむ
+はらおか,たかし
+うるわし,しげお
+おんだ,きみひろ
+いんど,ともお
+たけなか,さとし
+ふじさわ,ゆうじ
+おもり,ひろえ
+なかむら,ただひろ
+しょじ,よしみつ
+きたじま,てつお
+いとう,たかゆき
+ひらお,けんじ
+すみもと,としひこ
+なかたに,かずひこ
+あらしま,よしお
+かたやま,とみお
+うえだ,よぞ
+ふじもと,ひろし
+やまはた,ひろのり
+おたに,おさむ
+いいぬま,かつやす
+ながさわ,ひろし
+やすだ,けんじ
+ふくしま,まさお
+さかきばら,まさとし
+かとう,まもる
+よこざわ,まさゆき
+かどの,ひろし
+やまおか,よしのり
+かみたに,よしあき
+かとう,あきら
+のもと,かずたか
+すぎもと,のぶや
+ふじの,ひろし
+いのうえ,ゆきお
+はせ,ゆきのぶ
+もり,まさひろ
+かわばた,ひろふみ
+かわぞえ,りゅじ
+はしもと,つとむ
+ひろまさ,よしひろ
+きしもと,よしろ
+ひらつか,しゅじ
+うえだ,りょひち
+あらい,あやこ
+いいだ,たかし
+ひろしま,ふみたか
+いさか,かずみ
+すずき,きよし
+くらもち,ひろき
+さいとう,えつろ
+すずき,としかず
+ふかや,せいいち
+さかい,こうじ
+おわだ,しょじ
+かめや,まさかつ
+くさうら,えらぶ
+わだ,ひでお
+ごと,しょひち
+ひらふく,だいしん
+もろや,やすひろ
+いけだ,くにお
+ますだ,みのる
+みずの,よしゆき
+はやし,としひこ
+あおき,まさゆき
+こばり,しょぞ
+みさわ,かつひろ
+たかぎ,よしお
+えんど,たかお
+すがさわ,まさお
+おりはら,みつぐ
+まつなが,てつじ
+かさい,としろ
+せむら,としお
+さくらい,かつみ
+てらかど,としお
+ふじた,かずお
+かわのべ,きょひち
+あおば,あきら
+むらもと,ひでとし
+つぼうち,さだゆき
+ふるしょ,まさはる
+しばやま,としたか
+やまもと,きよとし
+うちだ,としひこ
+まえざわ,まさゆき
+こむら,さぶろ
+やまさき,てつお
+うしき,けんいち
+まちやま,せいじ
+ふじぬき,とよみ
+なかむら,たかふみ
+くすもと,きよあき
+すずき,たかし
+うえやま,たかあき
+こいけ,よしゆき
+はせがわ,やすあき
+ふるかわ,かいち
+やまだ,まさる
+ゆはらぎ,ゆきよし
+おしま,たかし
+そね,ふじお
+とま,ふみお
+たかはし,たかひろ
+かけはた,ひろふみ
+いしい,とみお
+さとう,あきのぶ
+むらやま,よしじ
+ほりぐち,かずみ
+なかざと,しょじ
+さとう,すすむ
+かねこ,まつみ
+かしま,てるお
+とぐち,よしお
+こみやま,としゆき
+やまおか,ひろし
+たかはし,みつあき
+もりた,やすひろ
+よこい,あきお
+ひらい,みつよし
+しいばし,のりゆき
+かねこ,まさひろ
+なかね,さちひろ
+せきぐち,しずお
+みもり,まさお
+きくち,しげる
+やまもと,のりゆき
+あらかわ,けんじ
+ともくに,まこと
+とみた,ひろし
+たかはし,まこと
+とがし,りゅぞ
+かわむら,としのぶ
+ふくなが,ひろむ
+まきた,きみあきら
+さの,よしのぶ
+さとむら,けいいち
+さかの,けいいち
+つちはし,よしのぶ
+うえの,けいいち
+なかがわ,まさたけ
+とくなが,まさふみ
+いとう,のぶはる
+ひさまつ,てつお
+おつか,たかひこ
+かわもと,まさたか
+のむら,かつじ
+かの,たかお
+うえさか,まさき
+ふじわら,のりかず
+おがわ,しゅへい
+くらた,のぶお
+はなそと,としひろ
+にしかわ,けいじ
+えびす,とくみ
+やすのり,みのる
+さかい,けいじ
+まえだ,じゅんや
+ふくだ,しげあき
+やまもと,けんぞ
+しおた,ひであき
+むらかみ,けんじ
+いくみ,かずお
+なかぎ,とよとし
+とくまつ,かめお
+たにい,しげき
+おひゃま,よしいち
+たの,ゆたか
+おた,ゆうじ
+くまの,ひらお
+さわぐち,まさと
+あさの,ともふみ
+さかぐち,とよふみ
+わたなべ,たかよし
+かとう,ひでお
+まえかわ,よしはる
+まつもと,たけし
+まつもと,よしあき
+やまなか,しげたか
+こばやし,まさずみ
+ふじた,やすまさ
+やぎ,ともよ
+いわい,たかし
+ふくしま,ゆみ
+ふるかわ,たかお
+おがた,としゆき
+すずき,けんじ
+しかま,たかちほ
+きしもと,ひろのぶ
+ころぎ,あきお
+ふたみ,まさくに
+やしろ,かずお
+はりいけ,のりゆき
+しむら,つとむ
+ながくら,かずお
+みなみ,たかし
+とくなが,かずお
+たなか,としお
+てらさき,えいじ
+かとう,こうじ
+みずの,たつお
+たもと,まさみ
+うちだ,まさたか
+たけいち,ひでみ
+ひびの,こういち
+こばやし,まさのり
+わたなべ,ただひこ
+ふかだ,たかし
+いしたに,しゅにち
+いで,かつみ
+にいさと,きよし
+すなはら,としお
+しみず,よしはる
+かとう,ありまさ
+ないとう,いちろう
+こいけ,こうじ
+きたむら,きよし
+かがわ,ふくむ
+いけだ,しろ
+かの,とおる
+おかもと,よしあき
+こばやし,ひとし
+いしい,ひろかず
+さえき,よしゆき
+さわだ,ひろし
+ごと,りょへい
+おの,ひろただ
+ふなおか,まさひろ
+しんや,かずひさ
+ほんざわ,よしゆき
+やまうち,まさゆき
+いしの,しょじ
+いおく,まさお
+あらき,のりゆき
+ふじわき,じゅんじ
+いちむら,とすけ
+はやし,とよひこ
+もり,としゆき
+きむら,たかし
+ゆきふき,たかし
+はぎもと,そじ
+はしもと,さだひろ
+きたやま,まさひろ
+ふじもり,ますゆき
+おくの,たかし
+やまだ,のぶゆき
+たご,まさひろ
+あさい,まさあき
+もりの,まさかず
+みない,ひかる
+もりさわ,しげじ
+なりさわ,つとむ
+もりもと,ひでとし
+こばやし,ようこ
+しまだ,みのる
+すずき,まさき
+ふくだ,よしさだ
+あらい,たくじ
+たにやま,しげる
+おかもと,まさひさ
+だいもん,いわお
+はやし,ひでお
+いしだ,よしてる
+ひろさわ,けんじ
+よしおか,おさむ
+まつもと,みつお
+なかじま,たかし
+きた,よしひろ
+にしむら,ひろし
+はっとり,けいこ
+やまもと,とよこ
+いとう,ふみこ
+きたむら,まさる
+たなか,よしのり
+いおき,ひでき
+かまた,みさこ
+しみず,けい
+ますおか,あきのぶ
+さわだ,しゅひち
+なかいし,まつお
+わたなべ,みのる
+よしざわ,よしなお
+ささおか,ふくお
+たかみ,よしみち
+やまぐち,まさずみ
+いまふく,しんいち
+かみや,さかえ
+わさ,さなえ
+きくち,しげかず
+うかい,ひでお
+いわま,かずお
+つじ,あきら
+たけだ,ますみ
+せとがわ,とみお
+こしむら,とみやす
+わたなべ,こうじ
+うさみ,ひろし
+おかだ,ひでお
+ふじわら,しょこ
+かとう,たけゆき
+いしはら,まさひろ
+ひなた,あきお
+うえすぎ,のりあき
+しばた,しょひょ
+おくだ,としお
+すなやま,ただし
+いまい,とみえ
+なかむら,ひでお
+なかもり,あきひこ
+ふかさわ,みきお
+みずた,せいいち
+おの,ぶんじ
+さいとう,さだつぐ
+しゅど,しげとし
+ふくい,まさし
+のだ,じゅにち
+おの,みつのぶ
+こがみ,としひこ
+みき,しょじ
+いけだ,やすゆき
+ふじもり,まさる
+たかだ,きょへい
+いけだ,しげひろ
+いとう,のぶかず
+わたなべ,まさる
+さわだ,よしお
+まえじま,あきひこ
+いなむら,のぶお
+なかむら,こうじ
+なかじま,むねひさ
+いわま,しんいち
+わかつき,かずし
+はせがわ,ひろし
+いのうえ,みのる
+かさはら,たつひこ
+にしやま,かなえ
+すどう,はるき
+おかべ,よしまさ
+ふくば,まさゆき
+まつなが,ふみお
+さかい,としひこ
+ふじた,かずお
+なかやま,のぶぞ
+よねだ,のぶたか
+くまた,かずひろ
+こやま,まさふみ
+よねやま,まこと
+ふじかわ,すすむ
+はりがや,ひろし
+はせがわ,しのぶ
+よしだ,よしゆき
+くすのき,ひでき
+たかはし,よしろ
+ながた,たかし
+そのくら,こうじ
+ますもと,まさひろ
+おぎはら,じゅひち
+よしだ,としひろ
+たなか,けんじ
+えだ,やすお
+なかじょ,ひろひこ
+いいずか,ゆきお
+てらにし,たかやす
+ふくい,けんぞ
+でむら,こういち
+さえき,ひろゆき
+うちだ,たけし
+しいな,けんじ
+ふるや,ひろあき
+ながくぼ,かずひと
+てらうち,ただし
+おたか,よしふみ
+ふじよし,さちこ
+さいとう,しんじ
+くろさわ,ひろし
+いしかわ,よしお
+よしの,ひろし
+こみや,まなぶ
+やまがた,まさひこ
+つや,せいいち
+にしの,たもつ
+うちだ,のぼる
+わたなべ,まさのぶ
+もりた,せいじ
+こしだ,かずひこ
+ひろせ,しげはる
+よしむら,ひでのり
+みうら,のぶお
+こいずみ,よしはる
+てらお,おさむ
+せがわ,ひであき
+かいずか,まさあき
+ふくます,とおる
+いとうず,まさお
+せきがみ,ふさえ
+ふじ,けんそ
+よしむら,たかし
+ふるもと,かずよし
+たきた,としお
+おかだ,かおる
+たかはし,のりゆき
+たにふじ,ひさお
+いまおか,かずみち
+わたなべ,のぼる
+やまもと,こぞ
+よだ,りょへい
+ふかやま,かつとし
+やまぐち,よしかず
+さの,ひでのぶ
+たかはし,みつひろ
+まつもと,みちお
+やの,あきら
+あきば,すずよ
+みどりかわ,じょじ
+たかし,ひろし
+ふるかわ,いずみ
+ひきた,きよじ
+おざき,よしゆき
+あおき,まなぶ
+さえぐさ,ひろひさ
+ふじもと,あきら
+こにし,まさあき
+おにし,かずひろ
+ひぐち,けんじ
+くぼた,かおる
+やまぐち,やすお
+ふるかわ,ひろし
+なりた,ひさお
+たなか,きみ
+はたけやま,ゆり
+みやもと,きよし
+のざき,ひさし
+はせがわ,かずよし
+しらかわ,ひろみつ
+あいだ,みよこ
+ひろかわ,みのる
+りゅかわ,えいじ
+やまぐち,よしあき
+くりさき,しげおみ
+もりもと,まさひろ
+くぼた,ひろし
+くまさこ,ゆうじ
+あだち,しゅんすけ
+この,ふじき
+やまもと,じゅにち
+いわい,しろ
+おはら,まさと
+いしはら,いちろう
+あおき,ふさいち
+もり,てつお
+ろっぽんぎ,みさお
+かとう,やすはる
+さとう,ちょしろ
+まえぞの,よしひこ
+ふじもと,こへい
+たにむら,ひろし
+なかにし,つよむ
+たかはし,ますみ
+なかい,ひでお
+たかはし,よしみち
+しも,まさあき
+しばた,もりしげ
+ふるみち,けんた
+たけだ,ひろあき
+ふじた,えつこ
+かぎやま,りょた
+わち,ひでお
+ふじた,とものり
+こんど,たけし
+まつもと,よりこ
+ふくい,まさあき
+すがわら,こういち
+ふかやま,やすお
+いまい,えいじろ
+さとう,ひでのぶ
+かなざわ,ひろし
+ふちざき,ゆたか
+つかだ,しんじ
+いしざき,かずみ
+とくら,たけふみ
+とのさき,ゆひちろ
+たかき,いさむ
+ふじた,よしお
+ながせ,あきら
+たなか,ひろし
+たつみ,てつや
+やまもと,まさのり
+ふくた,ひとし
+くわはら,しげのり
+ふじた,たかし
+いなくま,ひでゆき
+みさお,こうじょ
+なかした,あきら
+おくやま,まさたか
+ながえ,くにひこ
+ながい,かずお
+やまざき,おさむ
+しらいし,しょひち
+うえだ,たかゆき
+おじま,みきお
+ひろせ,もとよし
+ひらの,ひでお
+ふるた,ひろゆき
+こぬま,れいこ
+たかやま,ひろゆき
+あさした,よしあき
+よつはし,ゆひち
+つちや,たかなお
+おにし,よしゆき
+やまぐち,えいぞ
+しずの,としこ
+はしべ,こぞ
+ほりい,まこと
+ながおか,ゆうじ
+くりた,かずひろ
+きば,しょご
+いだ,まさる
+ふくとみ,しょひち
+こばやし,しげる
+いり,ひろあき
+さた,まさのぶ
+まるやま,まさる
+あおやま,たかお
+しんど,かおる
+あいかわ,ともはる
+さかのうえ,まさふみ
+ふじまき,ひろし
+かわはら,たかみ
+むらた,いさお
+よしだ,しょじ
+いたくら,いさむ
+じぞばら,りょひち
+たなか,みよし
+かじわら,のりこ
+たなか,しょへい
+はすいけ,さなえ
+とま,まちこ
+かわきた,かずみ
+まつもと,のぼる
+はせがわ,けんいち
+ふじい,ますぐ
+のむら,ひろふみ
+ようこた,しげる
+かなざわ,やすお
+ますやま,きょじ
+かの,けんいち
+ふなやま,ただあき
+やました,まこと
+さとう,ひでゆき
+かめもと,ゆひち
+いとう,てつや
+おくむら,よ
+ふじい,としお
+きはら,しゅひち
+のむら,おさむ
+あくたがわ,しゅじ
+いしだ,ゆみこ
+うめはら,あきら
+おぎ,やすひこ
+こんど,みつお
+たけだ,とおる
+まつい,みちたか
+かみおか,ひでお
+かもした,こぞ
+やなぎさわ,しんいち
+たけうち,ひろし
+もんま,えつお
+いいだ,きちひこ
+はせがわ,まさかず
+ながほり,よしふみ
+もりおか,きよし
+にしやま,しげお
+やまもと,てるお
+いしだ,たかし
+ふるど,りさく
+かんだ,つとむ
+いしだ,くにお
+さいとう,しげる
+きむら,なおゆき
+いわみ,はるお
+もり,けいこ
+たかやま,ふみえい
+はやしぐち,まさる
+さいとう,ひろみ
+しばたき,たけひろ
+おぎはら,まもる
+かとう,みのる
+ふくと,かなえ
+おだ,としじ
+さとう,ひろし
+なかむら,ただのり
+はまだ,あきお
+おがさわら,やすお
+むらき,としお
+おはし,まさお
+たかの,まさあき
+なかざわ,しげる
+みやじ,たかひろ
+すえなが,ひとし
+たたき,やすのぶ
+よしだ,しゅいち
+あおき,しょぞ
+すぎむら,あきひこ
+いとう,やすお
+たかはし,くにあき
+すずき,よしはる
+かたやま,いさみ
+さいとう,なおや
+たじま,ひであき
+あべ,まさひろ
+なかじま,ゆたか
+やまぐち,たかひろ
+わきざか,てつや
+さこ,かずひこ
+おつか,あきひと
+つかもと,たかし
+いのうえ,かずとし
+ながお,あきひろ
+うらば,やすお
+こじま,あきら
+たけだ,いわお
+あおの,ひでし
+いずかわ,かおる
+くどう,まさとし
+なかむら,しんいち
+まつお,いさむ
+いながき,としひこ
+にしもと,まさし
+いのうえ,ひろし
+おのでら,よひちろ
+いしざか,しげき
+はぎわら,まこと
+ふるた,まさひこ
+うえじま,さだと
+ぬまた,ともひろ
+えんど,すすむ
+かがやま,ふみお
+ゆりもと,とおる
+ふち,まさお
+ふじおき,やすひろ
+さいとう,ゆうじ
+まつもと,じにち
+ひろせ,のぶお
+ばば,かずあき
+こばやし,としゆき
+すずき,まさふみ
+なかやま,しんいち
+きし,しょひち
+あさの,ひとし
+えんど,てつや
+いしばし,としひこ
+かいだ,けんぞ
+いけじま,まさる
+はらだ,とみお
+はまの,しゅひち
+かわい,まさひろ
+わだ,しんや
+さとう,ひとし
+たなか,ただお
+あくつ,ひろのぶ
+いとう,まさとし
+あんどう,みつあき
+あいざわ,よしかつ
+くぼた,じゅひちろ
+ふかうみ,ひろゆき
+しみず,まさみ
+たかはし,かずお
+なみき,ひろし
+のざわ,まさかず
+こいたばし,あきお
+たていし,だいご
+かわかみ,みつお
+こばやし,ひであき
+おのずか,としお
+たぐち,このむ
+たかはし,みちる
+さとう,としまさ
+くわはら,ひろし
+せと,せいじ
+ごけ,よしのり
+よしむら,きよみ
+たかやま,いわじ
+ささき,ふとし
+かの,きよし
+たかはし,さとし
+ながおか,ひとし
+すずき,さとし
+やまぐち,てつろ
+もり,やすし
+すずき,きよひろ
+うえむら,ひろみ
+やぶはら,かずお
+しらいし,かずのり
+きくた,ひでお
+なかい,みつぐ
+くらもと,まさあき
+すみよし,やすひろ
+たかぎ,しろ
+しょじ,さとし
+おさだ,ひでき
+あさの,きよし
+いわさ,のぶゆき
+ばば,ゆきお
+ひろた,しげき
+ふじもと,しげはる
+さの,ともゆき
+もとき,ひでき
+いとう,あきら
+うけがわ,さとる
+うめばやし,いつお
+いなとみ,まさとし
+たかやなぎ,みつよし
+はら,かずき
+なかはら,まさのぶ
+さいたけ,みつのり
+かしやま,ゆたか
+さかい,ひでお
+いとう,ひろひさ
+なかむら,のりお
+おのぎ,まさゆき
+いかみ,さとし
+たかはし,きよし
+しいな,ゆたか
+たまのい,さとおる
+くぼ,みさこ
+きむら,まさる
+ほった,やすゆき
+ほかり,まさのり
+さとう,ふみお
+ほしの,いさお
+かぶらぎ,かずよし
+おさだ,まさあき
+すえひろ,いさお
+むらかわ,ぶんろ
+いわさき,せいじ
+やまむら,ひろし
+もりた,ともゆき
+いけだ,のりかつ
+やうち,よしのぶ
+やました,たけし
+わたなべ,ゆたか
+あなん,しんいち
+にしの,とみお
+こしみず,しょひち
+たかはし,ひであき
+えがわ,たかし
+やまざき,ひとし
+いまぜき,たかゆき
+すずき,あきお
+にしはら,しゅひち
+おかべ,としひろ
+さかい,としふみ
+ただ,たかお
+すえよし,よしみ
+はやし,けんじ
+たかはし,しんじ
+こあし,たつお
+もりかわ,よしのり
+かとう,ひろし
+まえば,かずひで
+やの,ひろし
+いとう,えつじ
+なかい,たつろ
+おだぎり,やすお
+えんど,かずお
+たけい,としお
+なかたに,たつひろ
+いわさき,よしふゆ
+からかさ,ひでき
+あさの,ゆひち
+いわぶち,いさむ
+はんだ,まさひろ
+てらお,としお
+たけい,みきお
+はしもと,いたる
+みやさか,けんじ
+てらだ,はじめ
+さかた,えいし
+ながや,やすくに
+はしもと,まさひろ
+おくら,たつお
+なかさき,よしはる
+きりはら,ひろし
+あらい,かずお
+いわの,てつお
+はっとり,やすゆき
+すずき,みちのり
+にしはら,ともひろ
+ささき,あきひろ
+はなふさ,けんいち
+のどの,まさる
+かわばた,とおる
+しみず,よしゆき
+ながしま,よしもと
+もり,よしみ
+しみず,つとむ
+ひさやす,いちろう
+かたうら,やすゆき
+たけむら,かつみ
+いまにし,けんじ
+おかだ,つとむ
+なかえ,みつぐ
+しろの,としゆき
+よこやま,しゅんじ
+おかざわ,ひろゆき
+かみじょ,ひろのり
+くまべ,とおる
+しみず,ひろし
+やなぎさわ,しずお
+まきの,つとむ
+さわ,たつゆき
+うしろだ,くにお
+まちだ,よしなお
+こばやし,つぐひこ
+しげむら,かずお
+ひぐち,しげあき
+いいぬま,けいぞ
+いずみ,しげゆき
+はやし,あきみつ
+やぎ,まさと
+おかわら,あきひこ
+ふくおじ,おさむ
+うがじん,じゅにち
+たなべ,のぶお
+ごしま,まさひこ
+あんどう,のりとし
+おだま,まさお
+おかざき,たつろ
+いしかわ,しょひち
+むらやま,ゆうじ
+はやさか,わたる
+なかじま,くにお
+たけもと,つかさ
+きたじま,たかお
+みかみ,としはる
+わらしな,たかし
+きむら,まさゆき
+おざわ,みのる
+やまむら,ひろとし
+よしだ,ちはる
+たちばな,きよたけ
+まつもと,おさむ
+みしま,まさみ
+せき,しん
+でぐち,まさひで
+たかはし,ひろし
+おひけ,ゆきお
+ふじもと,いわお
+よしむら,ふみゆき
+こばやし,まさこ
+おがみ,けいじ
+かい,たく
+かえつ,よしみ
+もろい,じゅんこ
+みずの,なみ
+おつか,じゅんや
+おた,しん
+せきね,よしかず
+みやぐち,ひとし
+よねだ,しげき
+ほりうち,たくろ
+えぐち,のりのすけ
+うしろまつ,ひであき
+いいだ,ひろし
+よしだ,じゅんど
+なかせ,やすひさ
+すずき,まさし
+おいかわ,しゅじ
+かわべ,のぶひこ
+たにざわ,めいじ
+かねこ,よしゆき
+ふじおか,しょたろう
+むらおか,まさはる
+うぬま,たかひろ
+みやけ,いくお
+なかむら,あきひこ
+おわ,かおる
+ねもと,りゅじ
+にしむら,かずたか
+たつみ,なほこ
+さとう,まさこ
+すのはら,かつみ
+あすま,かずみ
+たかば,ゆきひろ
+よしむら,よしみ
+あべ,あきお
+きくち,ゆうこ
+なかむら,えいこ
+はむら,さつこ
+すずき,たかお
+かわむら,はるよ
+ひびの,けいこ
+きただ,つよし
+さとう,けいこ
+かとう,ふきこ
+いとう,ちあき
+ふくとみ,まさはる
+むろずみ,いちろう
+やまなか,ともひさ
+おかだ,いわお
+とご,あきお
+なりた,としひこ
+いけざき,きよかず
+かわばた,のぶあき
+まつおか,さとし
+なかだ,なおと
+さとう,けいじ
+たけざわ,かずまさ
+やながわ,つとむ
+やまさき,のぶひと
+しがき,としや
+ゆみ,ひさえ
+おざき,まさひろ
+ながしま,つねお
+やぶうち,かずお
+ほそや,ゆうじ
+にしざわ,まさる
+はやみ,まさひろ
+はせがわ,じゅにち
+かわさき,けんいち
+とよいずみ,たけし
+おくむら,たかし
+やまだ,たけし
+にわ,しろ
+にしざき,のぶお
+すぎもと,ひろし
+おさわ,しんや
+とだ,よしひろ
+なかの,ひろし
+みうら,のりゆき
+やまざき,のりあき
+さかもと,たけし
+やまだ,つとむ
+いのうえ,たいすけ
+やすい,ひさお
+まつだ,ひさし
+かたおか,そじ
+すずき,よしお
+はやし,なおみ
+はままつ,かつひこ
+はまの,たかゆき
+みずたに,まさと
+すみた,のぶひろ
+はやし,えいひこ
+とくなが,ひろし
+かとう,しげる
+まつうら,ともなお
+ひゃくな,としあき
+あんざい,よしかつ
+ふかまち,ひさし
+みさき,なおゆき
+もちずき,ひらく
+あおやぎ,みちこ
+たかはし,かよこ
+きせ,まさよ
+うえもり,ゆみ
+あずま,あけみ
+おだくら,けいこ
+たなか,けいこ
+といたに,やすこ
+やまざき,えり
+はしもと,みよこ
+まつみや,もとちか
+ふしみ,まきこ
+きょひゃま,ゆみこ
+よしだ,のぶこ
+うるしど,みえこ
+せお,ひでこ
+みなかわ,ようこ
+ふじの,すみお
+ひろた,たけし
+おた,とよひこ
+おが,あきら
+ながはま,ゆきひで
+じんの,あきら
+いちかわ,しげる
+はやし,みえこ
+はたや,ひろみち
+ほりこし,ひさお
+かに,かつろ
+ほんだ,けんいち
+つちや,たかし
+たまて,まさひこ
+ゆかわ,ちかと
+さかい,てるお
+みやじ,けいこ
+たむら,あつこ
+かわぐち,みえこ
+さの,つきこ
+なかむら,かずゆき
+こばやし,たかし
+いだ,よしみ
+せきもと,まさのり
+かわまた,たつお
+くぼ,やすき
+たかの,はじめ
+わたなべ,ただし
+いかるぎ,としゆき
+さとう,のぶひこ
+ひだか,あきお
+よしい,もとひさ
+しまむら,とみお
+おび,みつる
+なかじま,えいじ
+ほしの,ゆうじ
+かわもと,ゆひち
+にしだ,ひとし
+しみず,ひでまる
+たむら,まさかず
+とよしま,ゆひち
+えんど,ゆきお
+おがわ,いちろう
+きたはら,よしひろ
+おぐに,かずお
+おぶち,ひろし
+みよし,やすひろ
+いけの,やよい
+うえまつ,みのる
+ふくざと,ただし
+あおき,よしひこ
+さめじま,こぞ
+きどま,えいろ
+こだいら,としお
+ひぐち,とくのぶ
+まえしろ,のぼる
+たなか,じゅんじ
+なかがわ,やすひで
+いのうえ,まさあき
+とりう,じゅん
+まるやま,よしみつ
+まつうら,たかお
+ためちか,なつあき
+ささき,ふみお
+おたき,けんじ
+おがわ,けいぞ
+まつみ,かずお
+ありまつ,しんいち
+こらく,かつあき
+みやした,りゅひち
+おずち,たかし
+さかきばら,さちお
+さとう,けんじ
+ひろせ,きくお
+つちだ,たつお
+はしら,かずひろ
+ふろもと,せいじ
+こさか,よすけ
+たけいち,やすひで
+てらだ,まさあき
+こいで,なおき
+さいとう,けんじ
+みやなが,かおる
+にしむら,きょこ
+たなか,しんすけ
+じょ,まこと
+ゆくひろ,ますえ
+よしわら,しげお
+あおき,ゆぞ
+たていし,みのる
+たけだ,みつお
+やすだ,たかこ
+あおき,あきら
+よしだ,ともこ
+あだち,としあき
+のぐち,ちよ
+わたなべ,みのる
+たけとみ,あきひろ
+くりわき,よいち
+きたずめ,よしかず
+ふなばし,ひでき
+おさだ,しょひち
+あしがい,のりひこ
+さかした,しんや
+つちだ,ゆうぞ
+おかだ,ゆみこ
+たなか,れいこ
+おたごし,じゅん
+くろさか,るみこ
+すざき,ゆりこ
+かねみつ,とみこ
+まと,ふじこ
+とよふく,ひでゆき
+あらい,なおこ
+ふじかわ,あきこ
+よこお,よしのぶ
+あまの,しげゆき
+おの,こういち
+すずき,まさき
+かとう,もとひこ
+さいとう,しゅれい
+おう,としお
+みやざき,よしたか
+きや,きよし
+ふじた,しゅにち
+むかい,みちお
+まつもと,ひでちか
+かわい,こぞ
+まつもと,えいじ
+たけうち,あつし
+こじま,ひろゆき
+はせがわ,かずゆき
+こが,まさお
+やまだ,ひろかず
+おた,のぶあき
+やまもと,たかよし
+さくらもと,はるお
+やなぎさわ,たかふみ
+ふくい,あきよし
+かとう,まさゆき
+いわた,みつお
+ふじもと,かつみ
+きのした,いさお
+やまだ,ふみたま
+くらまえ,かずひこ
+くらた,よひち
+よこい,かおる
+こばやし,ゆきお
+かとう,きよたか
+ますい,りょじ
+うらた,ひでお
+たかはし,たつお
+うしごめ,やすお
+はらい,こういち
+うだがわ,みのる
+たかぎ,しんすけ
+みやざき,ふじと
+やまむら,くにお
+やまぎし,こうじ
+こまつ,かずみ
+はまぐち,やすゆき
+もり,ただふさ
+やまだ,あきひこ
+かがわ,じろ
+きくち,こうじ
+くじ,たかし
+いとう,ふみとし
+かわぐち,ひでや
+あらき,もりよし
+おかべ,ひとし
+こぼり,てるあき
+おち,まさひろ
+まるお,まさたか
+さとう,しんじ
+たなか,としろ
+まつやま,かずゆき
+おつか,さとみ
+やまもと,まさひろ
+ふじお,りゅひち
+のむら,よしたか
+ひろせ,ゆか
+あんざい,ひろかず
+おつぼ,やすのり
+さいとう,みちお
+いとう,ふみき
+わらさわ,やすし
+あらかわ,ひさあき
+ごみ,よしかず
+えんど,しんすけ
+よしだ,ひろみ
+うちだ,しんいち
+あさいね,おさむ
+おしま,はじめ
+たなか,しゅんすけ
+おこ,ひでのり
+いずつ,としお
+はやし,くにお
+ふじき,けんじ
+しおかい,みつえ
+ながふち,ひさたか
+まつもと,のりよし
+かとう,しげのり
+わたなべ,みちろ
+はまぐち,りゅじ
+かねこ,さとし
+さとう,きくお
+おひ,やすなり
+はやし,じゅん
+きみつか,さちお
+ふくだ,まさはる
+なかむら,ひでお
+やばし,てつや
+こばやし,しげお
+とくだ,たつお
+たかはし,まさろ
+いとう,なおる
+のぐち,まさゆき
+かわな,とおる
+なかの,かずひこ
+やまだ,きよつぐ
+ひらまつ,たいいち
+あらい,ひろし
+よしの,けいじ
+はまだ,りゅひち
+おた,ゆたか
+しばた,としお
+わかやま,まさき
+ほし,せいじ
+みわ,まさお
+たなか,まもる
+かなや,ただし
+たけなか,けんじ
+さとう,たかゆき
+みずしま,ともかず
+てらだ,かつひろ
+もりや,みつお
+すぎやま,よひちろ
+うみ,のりお
+きぐち,つやこ
+うるわし,まさこ
+ひらまつ,そうたろう
+いずは,としゆき
+いとう,かおり
+さとう,かずお
+しげのぶ,としひこ
+よしもと,ますあき
+しばた,あきひろ
+ふなこし,きよし
+すなだ,まさお
+まりこ,ゆうじ
+きくま,のりひこ
+すと,じん
+にしざわ,としゆき
+こばやし,とよいち
+かわごえ,しげる
+いじま,ただゆき
+にしお,もとはる
+にしやま,はるお
+さいとう,よひちろ
+かどわき,たけし
+ひろせ,みちおき
+たぐち,はるお
+たかだ,まこと
+わたなべ,ますお
+かとう,けんじ
+なかはら,かずお
+いしくぼ,つよし
+やまだ,いちぞ
+わかまつ,やすじろ
+かわしま,やすお
+かたもと,なおひこ
+たかやま,さとし
+つちだ,ひでお
+たちばな,みつこ
+こばやし,まさひこ
+つだ,ふみお
+もりかわ,ひろし
+おくの,のぶゆき
+いまい,よしあき
+むらお,ひろみ
+しもむら,たかお
+えんど,たかよし
+ほしくま,としはる
+かわせ,けんじ
+まちだ,しげあき
+こばやし,くにお
+はだ,りゅひち
+つくだ,よしお
+にしかわ,こうじ
+ほんだ,ひろゆき
+わしおか,けんじ
+むろい,きみひこ
+やすだ,たつし
+よしだ,ひでお
+ほり,あきら
+こだ,としゆき
+かまだ,ゆきお
+うえむら,よしお
+まつばら,まもる
+みなとぐち,ただし
+くがてん,じろ
+いわせ,としのぶ
+はやし,まさはる
+いくなみ,しんさく
+いとう,むねし
+こやま,たつお
+おとまる,ひろし
+ながい,まさはる
+いとう,しょ
+いまい,ひろみ
+ますだ,としひろ
+かわべ,よ
+さとう,まさし
+さこ,ひろゆき
+むかい,あつこ
+おしま,こうえ
+つちや,えいじ
+はやしぐち,ひろみ
+さとう,かずや
+むらさと,しげる
+はるやま,やすし
+しげもり,のぶひろ
+ふなき,みつひろ
+わだ,しんじ
+つぼか,たかし
+とだ,ひろみち
+やまむら,よしひと
+いしぐろ,もとはる
+ふなはし,まこと
+すずき,たつる
+よしだ,たかひろ
+わたなべ,りょた
+なかにし,けいじ
+やまもと,まさはる
+いしかわ,じゅにち
+たけうち,くすたか
+おくの,いずみ
+だて,としあき
+たべ,せいいち
+やぎ,ゆきひこ
+よしだ,まさお
+ふるた,しゅにち
+かわぐち,ひさお
+はすこ,いくと
+ながみね,しんすけ
+たけした,じゅにちろ
+あかお,ただあき
+わきもと,しんいち
+たさか,ゆき
+なかしま,よしお
+たけなか,きみひろ
+やました,つぎお
+くぼえ,たかみつ
+おぐし,じゅんじ
+あさか,まさゆき
+えぐち,こういち
+おさき,さとし
+おくだ,じゅん
+おくむら,まさとし
+かなまる,りょひち
+きのした,かずお
+ささき,たかゆき
+たかの,りゅうたろう
+はしだ,よしのり
+ほし,しゅんじ
+みずの,さとし
+みつはし,かずゆき
+もとはし,たかし
+やまだ,けんじ
+ながの,やすよし
+いしい,ひろあき
+かめだ,なおひこ
+きはた,てるお
+こばやし,しょひち
+しらふね,しげとし
+なつはら,ひろよし
+にしはら,まこと
+はしば,かずお
+ひしぬま,かずろ
+ひびや,よしひこ
+みや,おさむ
+むらかみ,きよひで
+むらた,たつお
+わたなべ,しげる
+おにし,ゆすけ
+たけした,かつひこ
+つばきもと,たつや
+はまおか,まさし
+みずの,てつじ
+あべ,まさゆき
+あらいし,ゆきひろ
+さとう,かおる
+さわの,たけひで
+しもじょう,おさむ
+たかだ,たかよし
+ながた,ひろあき
+にしはた,やすひさ
+はやし,たくお
+ほそかわ,ひろふみ
+あおき,しんたろう
+よしだ,ひではる
+わたなべ,ふみお
+いわさわ,はじめ
+のせ,しょひち
+ひらした,ひろあき
+よしざわ,ひろし
+むと,やすし
+みわうら,たけお
+きくち,とよたか
+えぞえ,ひろみ
+いしかわ,まさみ
+いちかわ,まさあき
+はらだ,せいざぶろ
+むらた,ただみ
+いとう,かずひで
+ほしな,やすひろ
+とくだ,まさふみ
+たぐり,そひち
+ささき,あきら
+たまる,みきとし
+にしはし,ひろとし
+じつかわ,たかお
+すずき,たかはる
+おにし,すえお
+ながさき,ひろやす
+いいだ,ひでお
+たかの,けいぞ
+ひさの,ひであき
+いのうえ,はじめ
+いしくら,ひろみ
+あきやま,たけし
+いちかわ,たかし
+きがわ,よしたか
+さいとう,よしと
+よだ,みきお
+あらき,けいや
+すぎはら,のりお
+かわぐち,かずよし
+みや,ともゆき
+いけお,はるお
+さくらい,しげお
+こしの,かずひこ
+きくかわ,さいち
+ゆあさ,きみこ
+すずき,ゆうこ
+ますだ,ひでみ
+あらい,まさひろ
+いけだ,としつぐ
+きす,ひでき
+うしやま,まさゆき
+かまた,こうじ
+うさみ,せんり
+なかの,こういち
+かきかわ,ひろゆき
+きじま,みきお
+むかい,ゆうじ
+ながやま,ひでひさ
+はっとり,ていじ
+みしま,まさひこ
+ごと,ひろゆき
+いとう,ふじお
+おがた,よすけ
+くさば,かずお
+てらえ,たかし
+ほんだ,ゆうじ
+あくたがわ,しんたろう
+みやこし,やすお
+ふくしま,としお
+しのずか,あきら
+おたき,れい
+ながまつ,えつし
+あらい,きよし
+まつだ,たけし
+ふじた,じゅにち
+かみぐち,ひろゆき
+かとう,まさよし
+やまざき,まさこ
+うめたに,まさお
+なるせ,つよし
+くぼ,くにとし
+くらた,ひろゆき
+こんど,かよこ
+たけうち,はるゆき
+いのうえ,ひさと
+たかだ,のりお
+あくつ,みのる
+とりい,やすえ
+もりおか,けいすけ
+かくたに,ともこ
+たけいち,しょじ
+たい,せいいちろう
+つちや,まさる
+ますだ,さちよ
+かんだ,あつみ
+やまうら,ひろあき
+きのした,ひとし
+ほさか,たけのり
+まるおか,あつこ
+かまた,じゅんこ
+はたなか,くにお
+くろは,ひろゆき
+とつか,てるお
+いしい,みきや
+もりた,のりお
+ほんま,よしかず
+あらかき,かつゆき
+たけ,ひろみ
+いずはら,ゆみこ
+ひさとみ,まなぶ
+すずき,ちえこ
+にしなか,けいこ
+みずの,まさふみ
+もりむら,まさたか
+たかはし,ひさお
+しげとめ,やすよし
+ひろかわ,しげみつ
+さとう,くにお
+まえかわ,ひでゆき
+よしい,ひろし
+ほそや,まさみ
+さかもと,ようこ
+こいずみ,ようこ
+にし,ふよ
+かねこ,まち
+すみくら,しげる
+よこお,よしとも
+ささき,たけひこ
+はやし,なおかず
+たなか,たろう
+あきやま,よしひろ
+さいす,ひさのり
+のがみ,こぞ
+とよしま,あきら
+しんじょ,としかず
+ふきの,よしあき
+いけだ,けの
+おだわら,ゆうじ
+たかはし,まさみ
+けいま,としのり
+しみず,ひでひこ
+いまいずみ,かずお
+もりた,しげみ
+もり,やすふみ
+まえかわ,あきら
+やなぎだ,しょへい
+むらもと,たかお
+すずき,かずお
+ほそえ,あきら
+いしくら,きよし
+ひろかわ,とみお
+からしま,よしかず
+まちだ,せいじ
+もりやま,しゅいちろう
+たけむら,たかし
+つかもと,もりよし
+やまぐち,かずきち
+そめや,りつ
+なかごめ,としかつ
+いわなが,じゅん
+せきや,こうじ
+てらい,ともじ
+たなか,ゆみこ
+せきや,やすみ
+さくらい,やすかず
+いそべ,すすむ
+まつおか,ひろし
+いちじょ,ひろし
+やまもと,まさひこ
+でぐち,せいじ
+ひらまつ,ゆうじ
+みずの,たかし
+とみなが,しんいち
+たかしま,ひさのり
+のがみ,てつぞ
+おつ,あきふみ
+こばやし,ひろひと
+てらだ,あきお
+さいとう,ひでお
+あさの,けいすけ
+しもむら,けんじ
+おひし,かずひろ
+たなか,ひでお
+まつもと,じゅんろ
+ひらまつ,えみこ
+たけうち,まつたろう
+しげはら,たかひこ
+おかもと,まさのり
+むらやま,しろ
+こまつばら,たかとし
+えばた,よしお
+おた,いさむ
+てらお,まさひろ
+おさわ,ひとし
+かわしま,ひろし
+あらい,ひろふみ
+はしずめ,けんいち
+みずしま,としかず
+ひらまつ,たつや
+おくむら,たかや
+みずなか,のりとし
+ほりうち,のりよし
+たきもと,つねお
+やすば,きよし
+きたの,しげる
+にしだ,みのる
+いしかわ,てるまさ
+おば,はじめ
+かしわぎ,もとこ
+さとう,しずお
+まつだ,けんじ
+こむろ,ごろ
+むらた,ひろゆき
+ささがわ,まさる
+さたけ,たつみ
+くわの,まさし
+ごと,あきら
+ふじい,こうじ
+みずこし,えつお
+ふじまき,よしこ
+いでた,こし
+なかつか,しゅひち
+うんの,としお
+すずき,こうじ
+はま,もとのぶ
+とみた,ゆきお
+たにつ,としみ
+すずき,ひさお
+おくむら,かずゆき
+ふくしま,おさむ
+おはし,あきお
+やました,なおき
+かわみ,ひでゆき
+はるた,かずお
+みやもと,はるとし
+つじた,ひさお
+いまむら,かつみ
+さとう,しんいち
+なかじま,けんいち
+しいの,かずや
+ごと,ひとし
+かとう,たかし
+ながい,たけみ
+うちの,かずひろ
+えいじま,ひろし
+やまなか,たかお
+なかむら,ゆご
+すずき,まさみち
+せむら,ちよじ
+なかがわ,かずひこ
+たや,ひかる
+むらかみ,たかお
+いしかわ,せいいち
+せきぐち,けんいちろ
+おの,ひろし
+おいかわ,ゆうこ
+いわい,まさお
+あさひ,さぶろ
+ごと,ゆきこ
+かねたけ,しげお
+うえまつ,みのる
+ふくしま,もとはる
+ふくだ,ちえこ
+すずき,あつし
+おぐら,おさむ
+ひらで,こうじ
+おしげ,のぶお
+まつもと,やすゆき
+ささき,りゅひち
+ごんだ,かつひろ
+まつおか,たかし
+うめざわ,ひろのり
+にしお,こういち
+こじま,しょういちろう
+たにぐち,よしゆき
+おぎす,としや
+さだひさ,くにやす
+ふじわら,けんじ
+はっとり,かおる
+かまた,かなめ
+とば,としのり
+やまだ,ひろじ
+やまもと,たかゆき
+たけうち,きょこ
+あらき,ゆきひこ
+にしお,のぶかず
+もりうち,たいち
+いわた,えりこ
+ささき,えつお
+まえがわ,まさる
+ふくにし,せいじ
+うえだ,まさつぐ
+やまぎし,かずなり
+おの,ゆぞ
+ふじた,よしつぐ
+きたむら,ひろし
+よしはら,こういち
+いわさわ,もりお
+こまつ,なおゆき
+たにむら,としお
+こさか,まこと
+たしま,ただひろ
+にしおか,みきお
+すずき,たけし
+ごと,ひでふみ
+かわはら,せつこ
+たじま,さなえ
+かんの,ひであき
+かたしま,まさろ
+はしもと,やすつぐ
+なかだ,かずのぶ
+かさはら,ともよ
+てらもと,まこと
+わかまつ,けんじ
+いとう,ふくきち
+わだ,よしみつ
+たんじ,ゆりこ
+おつか,たくみ
+つじもと,たつよし
+せりざわ,ひろあき
+とのさき,ひさたけ
+たかぎ,まさゆき
+おふち,かつゆき
+あまの,としお
+なかむら,やすひら
+たばた,じゅにち
+とよずみ,しょじ
+しゅくや,あきお
+たかの,しんや
+むらかみ,みすず
+いしずか,ひろし
+いいずか,せいいち
+しらい,たかあき
+ふくはら,まなみ
+いながき,としつぐ
+ひらしま,ひでみ
+つじばやし,ひろあき
+まつお,めぐみ
+やまもと,けいいち
+もりの,のぶはる
+たじま,ふみえ
+のざき,みちこ
+あだち,かつなり
+たかや,みちお
+おの,あきら
+まつもと,ゆうじ
+はしもと,まさあき
+かの,よしろ
+たけだ,しんいち
+きりはら,ひとし
+たなか,のぶよし
+とりい,としひこ
+なかしま,あきら
+せすみ,すえはる
+まえのその,てつお
+ごと,ひとし
+ほり,あつし
+たかいら,まさみ
+たにだ,まなぶ
+ふるどい,たかお
+おぎや,としお
+なかじま,じゅん
+ほりかわ,のぶたか
+すずき,たかし
+あおき,まさお
+おくはた,かつあき
+くわばら,かずひで
+かんだ,やすし
+すぎもと,ふみこ
+やまもと,けいこ
+かねこ,やすひこ
+なりた,あきのぶ
+にしお,まさお
+いかり,じゅん
+ふるかわ,かずなり
+あらい,しんじ
+くずかみ,ゆきよし
+ごと,きょひち
+やまはら,あきひろ
+やまだ,しゅひちろ
+いじ,まさなお
+くらもち,のぶよし
+ふじわら,かずひろ
+たけだ,まこと
+たかのせ,のぶゆき
+ともむら,まさひろ
+さとう,ゆすけ
+さかきばら,ひろみつ
+みやざき,りょ
+よしだ,ひであき
+たなか,まさる
+ごと,もとゆき
+にしだ,たけひろ
+なかしま,はるお
+きむら,けんいち
+いのうえ,せいじ
+おしま,ひろし
+おひゃ,しゅひち
+みやもと,ますみ
+やました,しげる
+たなか,としろ
+もり,みきお
+なるみ,ひですぎ
+ごと,さとし
+やまちか,えつお
+ささき,しげふみ
+きしだ,はじめ
+おひゃま,まさゆき
+しいの,ゆうじ
+いずみさわ,しゅひち
+かみむら,よしひこ
+さかい,みちお
+ごと,けいいち
+かとう,みつひろ
+たかはし,しげゆき
+くの,まさとし
+いわぶち,たけし
+ほんぶ,まもる
+もりた,まさのり
+せきや,おさむ
+ぬまた,ますみ
+ごと,あつし
+まなべ,おさむ
+いまきた,だいじろ
+こだか,あきら
+よしだ,まさひと
+さとう,みちお
+くすみ,よすけ
+はぎわら,かつや
+ふるせ,よしとも
+むらた,だいに
+おくむら,けんいち
+たにがみ,かずお
+なかむら,きいちろう
+こいずみ,こうじ
+すどう,たつひこ
+いで,まさつぐ
+しもの,まさふみ
+たかぎ,じゅん
+さかい,こ
+いのうえ,かずや
+ふるた,めいさい
+あさい,まさる
+ふかさわ,しょじ
+ごかいち,けんじ
+おつか,たけひさ
+さとう,たけし
+いのうえ,かずゆき
+たけだ,としかず
+ますだ,てるひこ
+やまもと,しょこ
+おはら,まさひこ
+ふなつ,たいち
+こやま,しんじ
+やまざき,まさひこ
+たじり,ひろし
+さとう,てつや
+ながしま,かずひろ
+つだ,よしあき
+ながお,あつし
+おすぎ,かずお
+いとう,みちのぶ
+たまい,きよし
+みやした,くにひこ
+みしま,こうじ
+ほりい,やすのり
+ごと,さとし
+やお,しげる
+ひじや,まさゆき
+ほりい,よしひこ
+たけだ,のぼる
+やすなが,まなぶ
+やまざき,かずひこ
+やの,じゅんぞ
+しわく,としひろ
+かみの,みねはる
+なかじま,つよし
+ますだ,じろ
+おふち,たかし
+ふくざき,ともみ
+いたがき,ひろゆき
+しも,ともなり
+ふくい,ゆたか
+いび,よひちろ
+こむかい,よしひろ
+ふじえ,なおあき
+まつき,まこと
+こばやし,じゅいち
+ごち,たつや
+はせがわ,ひでじ
+かわごえ,たかよし
+ながさわ,かつみ
+やました,ひでひと
+いしざき,あきら
+おだ,みのる
+しんど,あきら
+しもさこ,たいじろ
+つつみ,くにひこ
+きたおか,じろ
+きたざわ,れいこ
+なかおか,しげき
+いしばし,ちえ
+はしぐち,のぶあき
+わたなべ,じにち
+おば,きよみ
+はら,のぶゆき
+しみず,かずひこ
+いざわ,かずよし
+よしやま,かずとし
+すぎもと,けん
+こまつ,ともふみ
+へんみ,たいせい
+ふかだ,さかえ
+こばやし,しんいちろう
+すぎもと,みちひろ
+よこやま,たかあき
+たなか,はるひさ
+みやたに,きよし
+はせがわ,かずひこ
+きたがわ,こうじ
+ふくおか,えいじ
+おむら,みゆき
+いぐち,みわこ
+はやし,あきひろ
+ひらい,かなめ
+おもり,かずや
+おぎの,こみな
+たむら,よしひこ
+たけだ,あきら
+みやなが,ひろゆき
+ひらい,こういち
+にしむら,こぞ
+はぶち,のりふみ
+おくら,よしひさ
+はった,けんじ
+いこま,つとむ
+あさひな,のりひこ
+かの,さとる
+なかにし,あつし
+みやざき,たかあき
+いちかど,ひろゆき
+ながさわ,さとる
+はまぐち,まこと
+やしろ,まりこ
+むらお,かえこ
+おぎまち,れいこ
+しろた,いちろう
+てしま,みつお
+かわさき,ひであき
+やまだ,こういちろ
+ほんだ,のりまさ
+かねこ,ひろゆき
+まつしま,ひでかず
+こみや,よしあき
+わだ,えいじ
+よしだ,ひろゆき
+もりさき,たかし
+いまひがし,しんご
+くらもち,しゅじ
+ゆかわ,ひろむ
+てらお,とよあき
+こんど,あきのぶ
+さいとう,はるお
+よしなが,ひろのり
+ゆあさ,まき
+とべっと,あきら
+せんが,まさゆき
+にしぐち,みつお
+うえだ,やすゆき
+やまおか,おさむ
+やまもと,まさひで
+ふじかわ,しげる
+おぐら,ひろずみ
+かわの,こうじ
+かねずか,つよし
+おかもと,たかし
+かわつき,ゆうじ
+すえよし,ひでお
+かわべ,わたる
+たかはし,さとし
+もり,じろ
+すぎやま,まき
+まえやま,まさゆき
+こめたに,ひろし
+ふじわら,はるゆき
+あでがわ,かずま
+とみざわ,よしお
+なかた,としあき
+たちばなき,なおき
+こだま,としお
+はない,かずお
+ちのね,としたけ
+しみず,たかし
+たきざわ,ひでお
+くどう,ひろあき
+もりおか,ゆすけ
+かねひら,かずお
+さとう,たつや
+やばな,しげゆき
+さかずめ,たかゆき
+はしもと,しんすけ
+よのもと,てつじ
+ばんしょ,きよし
+ふちえ,ゆうじ
+すずき,きよし
+すずき,ひろゆき
+こばやし,おさむ
+かとう,まさあき
+くすだ,はるあき
+みやたけ,しょご
+さの,ちほ
+まるた,かずお
+まきた,こういち
+かしわぎ,まさと
+たに,けんじ
+ありやす,まさかず
+かとう,あきお
+たなか,ひろのぶ
+つじた,としお
+おがわら,ひろゆき
+むらさわ,きよ
+せきもと,ひでき
+つじもと,くにお
+しおたに,かずお
+みわ,いくお
+ながさか,ゆきのり
+こいで,かずひろ
+おぐら,たかつぐ
+つつみ,かずいち
+ふかみ,よしひろ
+よしだ,ひでじ
+もろほし,としあき
+しおの,まりこ
+やまぐち,はじめ
+まみや,よしみ
+さいとう,えつお
+あきやま,しゅじ
+あだち,まさひと
+かわの,ひろし
+なかむら,ただお
+やまぐち,としひろ
+さくま,ひさし
+もちずき,ひさと
+わたなべ,よひちろ
+こばやし,としお
+きし,せいじ
+はやさか,あきら
+こふじ,つとむ
+さいとう,たかのり
+のむら,じゅにち
+まつい,たかし
+はやしだ,すすむ
+おがわ,ただひで
+ほんだ,のぶみち
+こざわ,つかさ
+ささき,しげゆき
+わだ,きよし
+やまわき,かずひろ
+ふじい,としみつ
+たきざわ,あきひろ
+さとう,としき
+みかみ,ひでみ
+みわ,よしたか
+おち,よじ
+ふじた,せいじ
+ながた,みれい
+くぼた,みちよ
+あおがき,まさのぶ
+かりやど,あきこ
+みはし,しゅんじ
+むらまつ,ゆきお
+かたやま,まさえ
+やまざき,たかし
+おぎそ,たかし
+ばば,よしもと
+みしま,ひであき
+やの,きよし
+なかじま,たみ
+たけした,はるよ
+なかの,やすひこ
+たかの,こうじ
+かわだ,さとし
+たじま,のぼる
+もちずき,ひろし
+きむら,けいじ
+あきほ,いちろう
+やまもと,ようこ
+かわせ,げん
+ささ,なおこ
+のせ,しんいち
+ひらた,ちえこ
+こばやし,おさむ
+あがわ,としひこ
+てらもと,きよたか
+おざき,まさかず
+もり,まさひこ
+うつ,おさむ
+わかまつ,あきひこ
+いまい,きょこ
+くぼ,みのる
+たかの,ゆき
+ひびの,かずまさ
+すずき,こうたろう
+たなか,きよし
+さかもり,かつみ
+たきざわ,とみもと
+よしかわ,あき
+とよだ,ゆたか
+うらしま,ひさお
+こんの,かずなり
+てらかわ,なおき
+こばやし,しゅひち
+きむら,ゆすけ
+かみお,ひろふみ
+くればやし,さかえ
+かねだ,きょこ
+かわもと,ひとし
+いまむら,としさだ
+こはぎざわ,ふみこ
+しのざき,たかひろ
+めぐろ,じゅんじ
+くにさだ,ひでお
+もり,はるき
+かわぎし,たかはる
+おすが,かよこ
+すだ,てつ
+なかむら,たえこ
+いしこ,りゅひち
+すずき,ゆうじ
+きくち,もとひろ
+おぎた,たけなが
+たかやま,あきひこ
+なかしま,たかこ
+つじもと,れい
+はやま,きよみ
+いたがき,ひろこ
+やまもと,こへい
+あだち,よしひろ
+きたみ,みのる
+たまき,しゅひちろ
+まえだ,さとし
+あだち,まさはる
+たまだ,きよ
+もりぐち,たかゆき
+よしなが,かえで
+まえだ,ひろし
+わたなべ,きよかず
+たかはし,じゅん
+いしこ,なおや
+おじま,かずひこ
+しばやま,あきら
+しば,たかとら
+ともの,きよし
+すみ,ひろし
+みつなが,くにひろ
+うらの,まさあき
+よこずか,ひろあき
+ふじかわ,ひろし
+かぶらぎ,ひろひで
+よしだ,みちお
+さいとう,ゆうじ
+やの,しょぞ
+よこた,ぐんじ
+なかむら,ゆうじ
+なみさと,のりこ
+ねぎし,たえこ
+きの,たまき
+なかじま,よりたか
+つつみ,てつろ
+こだ,かつじ
+ほり,よしあき
+この,たけひこ
+わだ,けんいち
+まつなが,まさふみ
+にしむら,あきこ
+いい,まさき
+やすい,さとし
+こばやし,はるひろ
+やまさき,まさゆき
+すずき,ゆたか
+いわた,よしあき
+しげもり,たかひさ
+いまむら,なおみ
+つかもと,あつし
+いとう,まさかず
+くぼ,けいぞ
+さなえ,のぼる
+こだま,あきら
+いとう,しゅひち
+あくつ,やすひこ
+あたらし,みゆき
+たぐり,かずや
+じょの,ゆみこ
+あかまつ,さだお
+あさの,としゆき
+なかがわ,やすひろ
+かわしま,なおき
+さとう,しゅひち
+おぐら,まさひろ
+いしばし,やすゆき
+まつおか,はるひこ
+たきざわ,たかし
+いたくら,のぶたか
+ほんご,あきよ
+ながやす,しんすい
+うちだ,じろ
+やました,かずまさ
+いしぐろ,あきお
+もり,かつし
+たなか,ようこ
+ひぐち,みえこ
+きと,じゅんこ
+たなか,たつや
+すずき,けんじろ
+すがい,けんじ
+よねざわ,まさあき
+あらかわ,あさこ
+いのだ,ひでお
+かとう,せいじ
+かげやま,ひろゆき
+みやわき,たかよし
+みちやま,まさよし
+もり,さとし
+もりさわ,よしかず
+にしむら,たかゆき
+さいとう,ひろし
+やまもと,つねお
+まつうら,ひろし
+はせがわ,とよひこ
+うちだ,こういち
+やすだ,しげと
+いしだ,しんいち
+もりの,かずゆき
+きたやま,かずひろ
+さかもと,けんじ
+そうみや,よしかず
+きくち,りゅじ
+しぶい,やすひさ
+とみた,まさお
+もり,まさし
+やまぐち,としひこ
+きたやま,ただやす
+まんもと,としあき
+たなか,しんいちろう
+もり,かつゆき
+いたくら,やすのり
+いちみや,よすけ
+にしやま,よしあき
+わたなべ,つとむ
+はんがい,じゅにち
+ながの,こういち
+しば,とおる
+こじま,かつまさ
+たたの,よしひろ
+かわばた,よしのり
+たけだ,ひろゆき
+おむら,しんいち
+さこ,こうじ
+いしはら,あつし
+いちのせ,こうじ
+きしだ,じゅんじ
+みかみ,よしひろ
+はやし,あきら
+ささき,ゆたか
+よねみつ,かずひろ
+せきね,いさむ
+いまにし,まさし
+あおき,かつじ
+すぎやま,ひろし
+なかもり,はるお
+しまだ,けいいちろう
+ますだ,けんじ
+つぼい,すすむ
+せきや,さとし
+きじま,まさひこ
+よしずみ,たろう
+やなぎだて,いくろ
+しげまつ,ひろし
+いのうえ,みのる
+たけうち,すすむ
+たなか,よしみ
+ひがし,じゅん
+たかた,たくじ
+なかい,あゆみ
+はせがわ,かずなり
+たに,よしなり
+こばやし,きよただ
+たかはし,ただし
+あべ,いさお
+こばやし,よしふみ
+おの,まさひこ
+たかはし,ふさお
+くろだ,ひろし
+わたなべ,すすむ
+あべ,のりお
+いのうえ,ひでたか
+えんど,しんや
+ののした,はるやす
+かない,なおき
+こたき,けいこ
+たかはし,たけし
+しげやま,しゅじ
+ふかだ,なおひろ
+しおじ,つぎお
+もりや,じゅにち
+おつか,たかし
+あべ,みきとよ
+ひらい,あさこ
+むらまつ,まさと
+みずた,よしぞ
+ほりえ,いくや
+ひかさ,ゆきひろ
+おしたに,あつし
+こばやし,ひろし
+くらはし,しんじ
+ひらばる,ようこ
+ふじえだ,よしお
+とざわ,しげふみ
+やなせ,くみこ
+くぼた,じょじ
+まみや,ようこ
+ゆはらぎ,とみお
+ちょなん,あきお
+みよし,かつゆき
+のじま,ふみひろ
+もりさき,まさや
+こやま,まさたか
+かとう,たかゆき
+きのした,じゅん
+かわむろ,まさみ
+もり,かずゆき
+ひらした,まさたか
+かわしま,まこと
+ふるかわ,かつみ
+いんでん,ひでゆき
+やまだ,たけお
+つくだ,まこと
+いわさき,かつみ
+おまえ,しげる
+すずき,よしお
+はら,まさき
+さかい,まさみ
+もりや,よしまろ
+みやもと,とおる
+しげた,よしのり
+いしかわ,まこと
+たざき,としあき
+すえひろ,ひろき
+かねだ,やちよ
+すえひろ,さとし
+ささき,けいいち
+ひやま,さだき
+きどぐち,りょ
+しまだ,あきと
+みやけ,まさひこ
+もり,やすゆき
+しらかわ,みのる
+わかばやし,まさひと
+やました,おさむ
+あまの,まさゆき
+たけいち,まさひこ
+しんじょ,たつむね
+かさはら,かずまさ
+たなか,としひろ
+おくだ,まさひろ
+かとう,ひでのり
+かわさき,さだむ
+かとう,むねや
+いちせ,こういち
+きたがわ,じゅにち
+やすい,りゅさく
+えだ,たつはる
+はやし,よしひろ
+ながい,としゆき
+とのむら,ひとみ
+たなか,じろ
+くりばやし,こうじ
+きむら,しんいちろう
+はぜき,かずお
+あんの,じゅんじ
+たかよし,ひろたか
+あんざい,けいこ
+たかはし,てつや
+はらの,けいし
+なかがわ,あきら
+にしかわ,ともこ
+しぶや,まさこ
+かとう,かずお
+あだち,まさあき
+さくらい,げんへい
+くさの,よしのぶ
+みなみぞの,とみかず
+つじむら,たつじ
+やまだ,さとし
+かつしま,まさのり
+こやなか,のぶゆき
+たばた,よしのり
+あだち,かつこ
+ひろの,のぶゆき
+つざき,あつし
+たちばな,よしさと
+べっしょ,しょじろ
+まつした,おさむ
+たにぐち,つねお
+なかとも,かつよし
+にしむら,ゆきお
+みうら,かずひろ
+こんど,のぶひろ
+まつい,としひろ
+まつもと,やすたか
+ほりい,としひろ
+ますもと,みのる
+なかじま,あきとし
+きむら,いさむ
+みわ,しげみ
+いしばし,ひろゆき
+えぐち,あきら
+いなふく,よしひろ
+わたぬき,せいいち
+ひぐち,ひろあき
+いけの,しげあき
+うめはら,かずみ
+のざわ,ちゅぞ
+いまい,けんしゅ
+たかはし,むつみ
+いいだ,ひろし
+ふじかわ,まこと
+にしえ,おさむ
+こすげ,まさき
+おた,ひろかず
+のじ,ひろし
+こぼり,つとむ
+すぎやま,ちかし
+かわた,けんいち
+さめしま,ひろゆき
+こやま,やすし
+えんかい,のりひさ
+こもだ,じゅん
+おがわ,やすひろ
+やまむら,よしひこ
+えのもと,きくお
+たかだ,まなぶ
+なかみぞ,ただし
+おかむら,まさき
+かみばやし,かつじ
+ふじもり,はるひさ
+くろだ,かおる
+さとう,ただひこ
+よしむら,ひろし
+もたい,じゅんこ
+むらた,くにひこ
+みわ,みきお
+いはら,よしあき
+いまい,てつひこ
+ひの,みねお
+まつもと,きよたか
+せと,たかし
+くまがい,つとむ
+やまだ,こういち
+わたなべ,かずまさ
+やさか,れいじ
+さとう,ひさただ
+みやたけ,ゆみこ
+まつうら,ひろし
+まつした,せいじ
+うらべ,みきお
+しがき,しんいち
+てらだ,よりえ
+いわもと,たきお
+いのうえ,たくじ
+もちずき,とおる
+よしずみ,なおと
+みうら,えみ
+みずの,たかし
+よしい,かずお
+ふるい,たかし
+はやし,よじ
+しらいし,やすひろ
+すがわら,よしお
+なかい,ゆうこ
+のふじ,ひろし
+さとう,あきひろ
+くろだ,ひろのぶ
+いけだ,ひとし
+さが,まこと
+みやかわ,いさむ
+わらしな,まさよし
+きたがわ,よしひと
+いまい,よしあき
+みさき,じろ
+いしだ,ゆきお
+りくら,えいいち
+しょじ,みつる
+ふくなが,たかゆき
+くろき,じゅにち
+またき,よしひろ
+せきね,しげあき
+やました,ひでお
+たなか,たつお
+おおはま,けいいち
+おつぼ,よしはる
+たい,ひろかず
+つるや,きいち
+よしだ,たかし
+ますみつ,けいし
+かすや,いくひさ
+よしだ,しげる
+かわむら,のぶゆき
+はやし,ふみあき
+くにもと,ひろのぶ
+あらかわ,たけし
+なかむら,ひであき
+いしぐろ,こういちろ
+はやみ,よしかず
+みなみぞの,たかお
+さかた,しょざん
+かわもと,まさはる
+むらおか,みつひろ
+いとう,よしあき
+わたなべ,まさひろ
+のむら,よしあき
+さとう,ひさはる
+わたなべ,まさのり
+こばやし,よひち
+ぬるき,たかし
+よしだ,しげお
+さいとう,みのる
+ひらい,ひでき
+きむら,くにひこ
+おく,まさゆき
+はやさか,ひなこ
+あさの,まさのり
+ふじさき,せいじ
+あきもと,かつひこ
+しまだ,きんじ
+みずかみ,みのる
+なかがわ,ふみかず
+さとう,やすのり
+こばしり,よしお
+あらき,みちお
+すずき,まさかず
+にしで,はるな
+おちあい,ひろし
+のなか,まさかつ
+やすい,ひでひこ
+こはた,よひち
+みのしま,ひろし
+てらしま,よしゆき
+やくわ,たかし
+すがわら,ろ
+みつはし,やすこ
+のむら,けんじ
+ちょ,しんや
+さとう,りか
+しずはら,まさえ
+はやしかわ,まさはる
+にわ,とおる
+みえの,てつや
+しまだ,けんじ
+なかむら,よしお
+ひらの,なおとし
+やまとや,せつ
+つのだ,よしひさ
+こばやし,たかし
+さかくら,りゅじ
+まつだ,けんいち
+いまむら,あつお
+やぎはし,きみひこ
+おぎの,よしお
+たなか,みちお
+ひが,てつろ
+さこ,のりこ
+たざき,あずみ
+いいだ,りょこ
+いいだ,れいこ
+まつぐま,けんじ
+むらた,よしお
+やすもと,けんいち
+しみず,ひでと
+わくい,としお
+たかはし,りょひち
+きたい,かずひこ
+あだち,やすのり
+はなぶち,のぶあき
+さとう,きょこ
+あらい,まさあき
+たけなか,せいし
+かい,なおこ
+あかだ,ひろお
+くにすえ,よしまさ
+まえかわ,よしかず
+みなみ,つとむ
+たきがみ,たもつ
+まつい,まさはる
+しらい,りょすけ
+たけよし,しげほ
+たかだ,けん
+たかぎ,まこと
+くどう,ひろし
+しまだ,よしたか
+かとう,よしお
+しぎょ,としひこ
+ひろの,しょういちろう
+きのした,はじめ
+しみず,くにひろ
+しむら,としひこ
+くさかり,さとし
+かるべ,みほこ
+まつもと,しずお
+しまむら,ひろあき
+かつかわ,あきら
+いず,みつし
+さくらもと,ひでゆき
+もりた,まこと
+たなべ,まさみち
+はっとり,せいのすけ
+りゅご,きよたか
+おまつざわ,たかひこ
+おとわ,きよたか
+こだま,のぶこ
+かやしま,かずお
+こばやし,ひであき
+くにえだ,そおじゃ
+こ,よしえ
+にしやま,しょぞ
+わだ,ひろあき
+にしもと,みほ
+さいとう,としはる
+としま,なおゆき
+おつか,とまさ
+おの,たかお
+すずき,いさお
+さくらい,いつじ
+おぜき,じろ
+おかだ,くにいち
+おがわ,ふみと
+いけがみ,しゅにち
+こまつ,まさはる
+よしい,ゆきよし
+ひらの,せいいち
+たかすか,ゆうじ
+はしもと,しげる
+くわえ,まきお
+かねまつ,かずなり
+まつお,ひとみ
+いど,ひろや
+いの,たかし
+さいとう,かつのり
+かみやま,よひち
+こしもと,ほこく
+おがわら,まさる
+たかはし,たかし
+ながまつ,たかし
+すずき,たかし
+てらお,まさみつ
+ほりけ,ひろし
+すずき,ひでとし
+おがわ,たかのり
+みやもと,よしあき
+おすみ,しょいち
+いわぶち,ひろし
+まつうら,やすゆき
+さわち,きくお
+てらだ,かねひで
+いばやし,けいいち
+いわせ,たかひこ
+おがわ,じゅにち
+あそ,たけし
+ふくもと,こうじ
+いで,こういち
+かわさき,よしのぶ
+はるな,まこと
+たじま,しんいち
+かなやま,ごろ
+たなか,よじ
+まつざき,かおる
+いのさか,たかし
+おしやま,こういち
+たけうち,のぶお
+ささおか,ひろゆき
+こもり,のぶやす
+たじま,たつお
+いけがみ,ちかお
+やまぐち,せつこ
+かわかみ,ゆたか
+いせき,じゅにちろ
+たけだ,せいじ
+たかやす,やすとも
+かめだ,さゆり
+ふじの,ふみたか
+みさき,てつじ
+なかむら,まさのり
+おがわ,ゆきふみ
+なかざわ,よじ
+せき,わたる
+よしかわ,まさお
+たがわ,こうじ
+みたに,よしひさ
+すえた,たかし
+いぬい,としゆき
+おさだ,まさあき
+ふるかわ,ひろあき
+すずき,けんじ
+きたむら,まさあき
+こまつ,しげき
+あさだ,えいすけ
+かんざき,ひでゆき
+うすい,まなぶ
+ふるや,たけとし
+よけむら,まこと
+よこえ,やすのり
+あかいわ,としあき
+ふくしま,こうじ
+やじま,ひでとし
+はら,やすくに
+きしだ,たくや
+くぼ,たかし
+かたぎり,としひこ
+いちい,あきひと
+まつき,けん
+わけべ,さとし
+まるやま,かつお
+つばき,まこと
+さの,りょすけ
+みやもと,ひろたか
+ふくやま,よひちろ
+うえむら,やすまさ
+くわかど,よしふみ
+くにまつ,としひこ
+かたおか,ふみよし
+とみた,よしき
+なかむら,としひこ
+くどう,ひろやす
+おぶち,やすし
+よしかわ,みゆき
+かげやま,ゆぞ
+とだ,みつる
+たかはら,やすのり
+まつした,ふみや
+こだいら,としあき
+しんかい,けんじ
+てらだ,ひでお
+かわきた,しげる
+みうら,ひろし
+あべ,まさとし
+にしかわ,まさあき
+ほそだ,まさる
+ますだ,りき
+かざま,まさる
+あらまき,のりゆき
+わたぬき,かずのり
+さかもと,あつひこ
+あまがみ,よしてる
+この,てるひこ
+おくだ,とおる
+おはく,まこと
+なかむら,けいいち
+なかむら,さとし
+うしやま,しんじ
+やしき,ひでし
+きのせ,もとお
+わかやま,まさひと
+いまい,はじめ
+まえだ,さなえ
+まつした,ひとし
+ひらぐち,ゆきひろ
+わだ,いわお
+わたなべ,よしお
+まつい,たけし
+まつもと,かずお
+なかむら,みつぎ
+たきた,つよし
+ますだ,しん
+みやうち,いさお
+しむら,よしのり
+まつい,みつお
+はらはた,よしふみ
+ひさたに,ゆひち
+かがみ,ゆきお
+よしむら,あいいちろう
+おつか,しゅにち
+たなか,こういち
+ひらの,まさゆき
+たけすえ,きよし
+にしの,えいじ
+おつか,ひろし
+おだ,あつこ
+しみず,そひち
+はまもと,しんいち
+みやまえ,みきお
+ながしま,じゅにちろ
+みつめ,よしと
+かごたに,ともこ
+よこやま,まゆみ
+さかた,さかえ
+おいくぼ,たきこ
+くらもち,とみたろう
+あんざい,あつし
+ふくしま,まさつぐ
+なかむら,ゆうじ
+いとい,けいご
+ほしの,しんいち
+こいで,しゅ
+おざき,てつや
+せじも,よしゆき
+すどう,めぐみ
+かじわら,しんじ
+すずき,ゆたか
+ほしの,たかよし
+なかむら,まさなり
+もりた,えいじ
+やまざき,こうじ
+おくがわ,よしかず
+ながはま,たかふみ
+よしむら,けんじ
+まつだ,あきひで
+ほかぞの,ひろや
+あべ,まさゆき
+ながい,りえ
+とがし,ひとみ
+やざき,ゆりこ
+やまうち,みちこ
+みさき,ひろひこ
+よしだ,じゅん
+なかもと,まさみち
+しのはら,まさみつ
+なかにし,みどり
+やじま,かつひろ
+とよふく,はるこ
+たかしま,よしあき
+ふしにし,あきかず
+むかい,としひこ
+にしむら,まさひこ
+かわばた,ひろゆき
+むかえだ,あきみつ
+しせき,たかとし
+かたおか,あつひさ
+ないとう,としつぐ
+みと,こうじ
+おにし,としひと
+よこやま,ていぞ
+なかむら,ひでき
+いざわ,なおき
+たにがわ,しんじ
+すぎた,しげる
+おした,つねかず
+しまだ,あきら
+やまむら,きよし
+ふくおか,ゆうじ
+やなり,かつじ
+すずき,きみえ
+さかい,てつや
+やまだ,ひろゆし
+やまこし,さとし
+のもと,さとる
+たけした,いっしん
+みのだ,よしひで
+あさい,ひろき
+むねやす,やすと
+かわにし,としろ
+さかぐち,たかし
+やまざき,たつあき
+あさおか,ひさのり
+きのした,とみえ
+みま,ゆか
+ふくもりた,まさゆき
+かじやま,ともこ
+やまざき,こういち
+さとう,まさし
+かわべ,ひろあき
+まるやま,しんじ
+おがらね,さとる
+どい,ゆきひろ
+たなか,しげる
+おぎしま,としゆき
+いのうえ,もとき
+ふるや,しげゆき
+ふくい,しほ
+ますだ,ひでゆき
+ほんだ,まこと
+なかにし,やすひさ
+みやまえ,としひこ
+おかの,ひでのぶ
+ばば,みきぞ
+だけやま,きよみ
+やまぐち,しげお
+はやし,よしこ
+とみずか,じゅにち
+なかにし,としや
+あべ,みつひこ
+あおやぎ,のぶよし
+てらわき,のぶこ
+かたぎり,ゆぞ
+なかがわ,みつお
+こばやし,おさむ
+うえだ,ひろゆき
+ふじわら,ひろのり
+はやさか,つよし
+きむら,たかひろ
+ごと,ゆみこ
+しむら,なおたか
+せき,なおひこ
+あいざわ,ひでお
+のむら,よひちろ
+かんだ,さくこ
+うらい,やすお
+もとやま,としろ
+かみむら,やすひろ
+ひらい,はるひさ
+あらい,はじめ
+さいとう,ひろこ
+まきはら,きよこ
+おわく,のぼる
+もちずき,まさお
+はんがい,かずひろ
+いのうえ,ひろみ
+ながいし,あきひろ
+にしもと,たつみ
+つちや,ひろし
+まつもと,まさひろ
+ほんじょ,けいぞ
+いわい,としかず
+くぼ,あきお
+はこい,こすけ
+わたなべ,しゅじ
+すぎた,ますみ
+なかむら,よしはる
+からさき,てつお
+のりまつ,まさゆき
+くすもと,ともなり
+にしむら,よひち
+こすげ,まさし
+ふくみつ,おさむ
+やまぐち,まさひろ
+いしぐろ,よしひろ
+とくだ,かずひと
+ありとみ,かつみ
+ひやま,あきら
+ひろせ,しょひち
+にしだ,たかし
+はっとり,しょご
+ひらばやし,たつや
+はらしま,まさお
+はら,まさお
+はまの,のりお
+はまだ,としみつ
+はしもと,かずひろ
+はやし,こういち
+ひぐち,みつひこ
+ひらの,たかよし
+ほんま,さとし
+はるまし,まさな
+はしもと,やすみ
+ひだ,さぶろ
+ひらすか,かずみ
+はぎわら,なおや
+はまだ,じつろ
+はしもと,しんいち
+ほんま,まさとし
+ほかり,とおる
+はらだ,よしみ
+はやし,けんいち
+ほりべ,えいじ
+はしもと,たみお
+はせがわ,かずゆき
+ひろべ,まさとし
+はしもと,かつひこ
+ひらの,ひさじ
+はしもと,まさみ
+ひじかた,ゆたか
+おぬま,まさはる
+はぶつ,よしまさ
+ひだか,やすお
+はしもと,たかし
+はまの,ちょじ
+ひしぬま,こういち
+はら,きみえ
+はなき,みちはる
+はら,みよし
+はが,やすひろ
+はなだ,みちこ
+ひらやなぎ,けんじ
+ほりかわ,かずお
+ほりかわ,まさお
+はしもと,ただかず
+はた,みきお
+ひらい,かずみ
+はらぐち,まさゆき
+ひらお,けん
+はしずめ,つぎえ
+つじ,いさお
+さくらざわ,ひろゆき
+あべ,かずひろ
+あべ,きんや
+あべ,なおき
+あべ,のぶゆき
+あべ,よしみ
+あべ,しんいちろう
+あかぎ,けんじ
+おかもと,たけお
+えんど,まさのり
+あかいし,のぶたか
+にしな,みつのり
+あきもと,けん
+あきずき,あきこ
+ひらばやし,としひこ
+あめみや,じゅん
+あみの,やすまさ
+あなみ,ゆひち
+あなざわ,かんた
+あんどう,まなぶ
+あんどう,ひでとし
+あおやま,こういち
+あおやま,まさひろ
+あおやま,ひろた
+あらい,こうじ
+あらい,おさむ
+あらい,たかお
+あらい,やすひと
+あらい,しずお
+あらき,みちこ
+すがわら,つねはる
+あさひ,まこと
+あさくら,としお
+あさみ,まさとし
+あさむら,しげまさ
+やましな,あきら
+あさり,あきひろ
+あさず,まさかず
+あつみ,かおる
+ばん,ゆうぞう
+べっしょ,ひろき
+ちば,まさき
+ちかきよ,こうじ
+ちむら,しんいち
+どばし,こういち
+えばし,まさし
+えびはら,まこと
+えがみ,たまお
+えぐち,まさやす
+えぐち,みゆき
+えじり,ともみ
+えんど,しげる
+えんど,たかし
+えのもと,ふみとし
+ふちの,かつみ
+ふじい,かずお
+ふじい,まさこ
+いしい,ともこ
+むらやま,よしゆき
+ふじかた,ひろやす
+ふじかわ,けいいち
+ふじまる,あこ
+ふじもと,なおひさ
+ふじもと,たみえ
+ふじもと,たけお
+ふじの,しょへい
+ふじお,よしふみ
+ふじさか,ゆきお
+ふじさわ,ゆきたか
+ふじさわ,さとし
+ふじた,すぐる
+ふじた,まゆみ
+ふじわら,たつお
+ふじわら,よしつぐ
+ふじわら,とおる
+ふかだ,おさむ
+ふかがわ,てつ
+ふかの,じゅん
+ふかわ,としひさ
+ふかや,たつや
+ふかざわ,かずとも
+ふくだ,ひさと
+ふくい,くにひろ
+ふくもと,ただよし
+ふくもと,としかず
+ふくもと,やすとも
+ふくもと,としあき
+ふくしま,さとし
+ふくとみ,のりお
+ふなき,たかひろ
+ふるさわ,まさゆき
+あびこ,まさゆき
+ふせ,とおる
+ふせがわ,まさゆき
+ふしみ,しんしょ
+ぎま,ふみひろ
+ごみ,あつひろ
+ごと,けい
+ごと,せいじ
+ごと,としかず
+ぐんじ,ひとし
+はぎわら,こうじ
+はぎわら,ひろし
+はいの,ひろたか
+はかまだ,ひろあき
+はまだ,まさひこ
+はまだ,すすむ
+はまぐち,ひろゆき
+はら,りゅさく
+はら,しんじ
+はら,たろう
+はら,まさゆき
+はらだ,のりお
+はらだ,よしなお
+はらだ,なおひさ
+はらこ,かずよし
+はるな,まこと
+はせがわ,のりこ
+おしま,ともあき
+はしもと,ひさのり
+はたの,みよ
+はたざわ,よしこ
+はと,いちろう
+はつみ,ひさよし
+はっとり,のりゆき
+はやかわ,ゆき
+はやかわ,ゆきお
+はやかわ,けんじ
+はやの,しんいち
+はやせ,きよたか
+はやし,くにひこ
+はやし,まさなり
+はやし,ますみ
+はやし,みなこ
+はやし,のりこ
+いもと,たかひろ
+はやつ,たかあき
+ひがき,たくや
+ひがし,あきら
+ひの,たかし
+ひらばやし,かずひろ
+ひらの,かずみち
+ひらの,まさし
+ひらおか,あずさ
+はらさき,ともゆき
+ひらて,としひろ
+ひらやま,あつろ
+ひろえ,としひこ
+ひろかわ,あつし
+ひろせ,しんご
+ひろし,たかはる
+ひさむね,かおり
+ほんだ,よしひろ
+ほりかわ,けいじ
+ほりこし,せいた
+ほりこし,まさよし
+ほし,ひろし
+ほしこ,ひであき
+ひらさわ,すみこ
+ほそい,けんじ
+ひょど,なおと
+ひょど,かずひろ
+いべ,けいいち
+いちかわ,まゆみ
+いちかわ,たつや
+いちかわ,ひでお
+いちのみや,とおる
+いで,よしかず
+いで,しゅひち
+いがらし,ひでたか
+いがわ,のぶこ
+いぐち,けいこ
+いいだ,こういち
+いいだ,のりあき
+いいじま,しんいち
+いいつか,ひろゆき
+いいずか,ゆきお
+いいずか,まさひろ
+いからし,さだゆき
+いけだ,しんいち
+いけだ,たかし
+いけだ,ゆすけ
+いけだ,しんいち
+いけなが,まさひろ
+みつもと,まさる
+いけやま,ゆみ
+いけざ,みつる
+いけざき,みつゆき
+いくた,ゆり
+いまい,やすゆき
+いまいずみ,きよし
+いまむら,しんや
+いまむら,しゅひち
+いまにし,ひろし
+いながき,こういち
+いながき,のぶお
+いながわ,かずのり
+いなほ,ありさ
+いなみ,ともき
+いなつぐ,なおき
+いなよし,まさふみ
+いの,じゅん
+いのおか,ひでと
+いのうえ,ひろお
+いのうえ,ひろたか
+いのうえ,ひろゆき
+いのうえ,ひとし
+いのうえ,おさむ
+いのうえ,てるゆき
+いのうえ,よしのり
+いりさわ,のりひろ
+いせ,ひろゆき
+いせき,えいり
+いしだ,ともひろ
+いしだ,かおり
+おかだ,かつゆき
+いしい,たつや
+やまだ,まさる
+すぎはら,ひろみち
+いしかわ,みさお
+いしかわ,たつお
+いしかわ,かずと
+いしまる,しんや
+いしもと,たかゆき
+いしもと,たけし
+いしもと,ひでかず
+いしの,たかし
+いしつか,たかあき
+いしわた,ゆひち
+いしわた,きくお
+ひらばやし,あきひこ
+いしざき,ゆきお
+いしずか,かつや
+いそだ,やすのり
+とおか,つよし
+くりはら,はるみ
+いとう,えいじ
+いとう,ひろぶみ
+いとう,ひろたか
+いとう,かつら
+いとう,まさこ
+いちやなぎ,まさみ
+いとう,のりこ
+ながた,たつお
+いとう,まさひろ
+かみかわ,けんじ
+いわい,かくいちろう
+いわかわ,さとし
+いわみ,たくや
+いわみ,ゆうじ
+いわもと,えいじ
+いわなが,もとのり
+いわさき,とおる
+いわさき,たけし
+いわせ,としゆき
+いわした,けいじ
+いわた,けんいち
+いわた,よしあき
+いわたて,えつき
+いずみ,ようじ
+じんの,さとし
+かがわ,しげひと
+かいぬま,つねひろ
+かじた,かつみ
+かけがわ,たかはる
+かきぬま,ただみつ
+かまだ,のぼる
+かまた,てるひさ
+かめたに,としひこ
+かみじょ,たかし
+かみむら,ともこ
+かみやま,まさひろ
+かなうち,けいこ
+たけうち,ふみかず
+かねこ,ひろゆき
+かねこ,おさむ
+かんぬき,こせい
+かの,さとし
+からはし,ひでき
+かさい,みわ
+のむら,たかやす
+かさい,ひでお
+かせ,のぶお
+かしくら,たかみち
+かしむら,かずたか
+かしわぎ,なおき
+かたの,たかひろ
+かたおか,ひろき
+かとう,くにあき
+かとう,まさのり
+かとう,まさし
+かとう,まさゆき
+かとう,たかゆき
+かとう,みき
+かとうおか,やすのぶ
+かつい,やすき
+かつまた,せいいち
+かわばた,きよくに
+かわちや,ひろあき
+かわだ,みのる
+かわだ,えみこ
+いりさわ,ももこ
+かわい,じゅにち
+かわかみ,よしろ
+かわかみ,さとし
+かわみ,かよこ
+かわむら,てるひさ
+いしい,やすし
+かわの,おさむ
+かわむら,なおき
+かわさき,けい
+かわせ,まさはる
+かわせ,たかあき
+かわせ,たかし
+かわしま,ゆかり
+かわたに,じょじ
+けいだ,みのる
+きだ,たかお
+きだち,としあき
+きはら,りせい
+きくかわ,ひろゆき
+きもと,ふみお
+きむら,みわ
+かまた,けんじ
+いくみ,みのる
+きのした,あきら
+きのうち,けんじ
+きし,やすき
+きしもと,まさひろ
+きうち,きよひろ
+こば,のぶゆき
+もり,なおき
+こばやかわ,ひろし
+くぼた,えいじ
+こばやし,えいこ
+おかわ,くにひこ
+こばやし,まさあき
+こばやし,しげこ
+こまた,しげお
+こばやし,ともえ
+こばやし,ゆかり
+こばやし,まさひで
+こだま,けんいち
+こえじ,ひろゆき
+こぐち,まゆみ
+こはた,しげかず
+こひら,まき
+なかがわ,たくし
+こひゃま,かずひろ
+こいで,とよあき
+こいで,ひろゆき
+こいけ,ひでき
+こいずみ,たけし
+こじま,ひとし
+こけぐち,てつや
+こくぼ,しん
+こまつ,てつじ
+こまつ,きよのり
+こみや,えいたつ
+こんど,かつみ
+こんど,かつゆき
+こんど,かずひこ
+こんど,やすし
+こんど,つとむ
+こにし,けんじ
+こさか,としひこ
+こせき,きみお
+こしいし,りえこ
+こしお,あきら
+こすげ,よしろ
+こひゃ,じゅん
+こやま,しげる
+こやま,もとこ
+たけち,たくや
+くぼ,やすまさ
+くぼ,ようこ
+くぼ,たかこ
+くがい,ゆみこ
+いからし,よじ
+くまざわ,かずとし
+くにみつ,あきら
+くの,みえ
+ほしの,たかゆき
+くらしげ,たつお
+くりはら,たかこ
+なかがわ,まさひろ
+やなぎだ,としひこ
+くりやま,たつや
+くろかわ,まさとし
+くさかわ,としあき
+くさなぎ,まさのり
+くさの,かずし
+くせ,おさむ
+くしだ,しゅぞ
+くすだ,としや
+くすき,つとむ
+くすみ,ふみき
+まえだ,たかゆき
+まえだ,かずひろ
+まえかわ,のぶこ
+まえかわ,ひさよし
+まがりふち,せいし
+まきの,としや
+まきの,こうじ
+まなべ,みか
+あがつま,しょひち
+まるお,ゆきお
+まるた,ひであき
+まるやま,ひでゆき
+まるやま,けいいち
+まるやま,おさむ
+まるやま,ひでひこ
+ますだ,さとる
+ますだ,ちえ
+かんばら,こういちろ
+まつばら,ちえこ
+なかむら,ゆたか
+まつだ,たつや
+まつだ,あきお
+まつい,ひろこ
+まつい,たかお
+まつい,よしお
+まつい,ちひろ
+まつもと,けんじ
+まつもと,まさよ
+まつもと,たつゆき
+まつもと,しげる
+まつおか,なおき
+なるせ,ゆか
+まつや,まこと
+めざわ,たかひろ
+みえの,ゆうじ
+みぎた,てるみつ
+みかみ,としや
+みむら,いずみ
+やなぎ,ひろし
+みなかた,ちとせ
+みね,くにのり
+みね,まさゆき
+みのわ,ひろゆき
+みさわ,よしのり
+みさわ,しゅひちろ
+みしま,ちよこ
+みたむら,あつし
+みと,けんじ
+みつひら,まさかつ
+みついし,しんや
+みつなり,みほ
+みうら,りゅじ
+みやべ,のぶひこ
+みやじま,ひとし
+みやもと,きゅひゃ
+みやもと,まゆみ
+みやさか,しょじ
+みやさか,かずや
+みやした,こういち
+みやした,まさゆき
+みやざき,まさやす
+みやざわ,やすえい
+みやざわ,きよえ
+みぞはし,まきこ
+さかい,たかひろ
+みずの,つよし
+みずおち,ともひろ
+みずしま,のぶお
+みずた,まりこ
+もちはら,まさふみ
+もちずき,たかえ
+ももせ,ひろかず
+もり,けんじ
+もり,しげき
+もり,しげる
+もり,ともみ
+もり,ゆひちろ
+もり,けんいちろ
+もりかわ,ひろか
+もりもと,じゅんこ
+もりもと,のりしげ
+もりもと,かつみ
+もりむら,たかゆき
+もりの,たけひこ
+もりさわ,ひろし
+しまおか,ひろあき
+もりした,たかお
+もりやま,けんじ
+もろおか,けんじ
+もろとみ,くに
+もとき,こういち
+もとの,しゅひち
+もとたか,ひろき
+むぐるま,あきひろ
+むかい,ちえ
+あんどう,はずき
+はね,ひでき
+むらかみ,まもる
+むらまつ,まさよ
+むらしげ,やすひろ
+しもむら,こういち
+むらた,まなぶ
+みょが,しんいち
+ながはら,かずみ
+いとう,くにかず
+ながい,おさむ
+ながい,ゆか
+いわと,ひろこ
+たけしげ,みつひろ
+ながお,なおき
+ながお,ただとし
+ながお,かつゆき
+ふくつか,ひでき
+ながさわ,たくじ
+ながさわ,よしみ
+ながせ,いわお
+ながしま,こき
+ながたに,としかず
+ながわき,つとむ
+ながやま,かずゆき
+なごや,じゅん
+ないとう,まこと
+ないとう,たかゆき
+なかだ,ひろし
+なかがき,かつみ
+なかがわ,けいた
+なかがわ,とおる
+なかがわ,よしき
+なかがわ,ちほこ
+なかじま,あきひろ
+ほりうち,みちのり
+なかはら,いさえ
+なかじま,けいこ
+なかじま,ひでき
+きくた,やすひろ
+なかじま,すすむ
+なかまる,あきお
+なかむら,ふみひこ
+なかむら,ひろやす
+なかむら,まさひで
+なかむら,もりお
+なかむら,のぶゆき
+なかむら,さだみつ
+なかむら,たくや
+なかむら,ひろあき
+はっとり,てるのぶ
+なかむら,としひろ
+なかむら,やすひろ
+なかむら,まさし
+みやもと,とおる
+なかにし,とよじ
+なかにし,かずひと
+なかの,かずゆき
+なかの,こうじ
+なかの,みか
+なかの,としあき
+なかの,としこ
+なかの,よし
+なかの,まこと
+なかお,ちえ
+なかおか,のりこ
+なかしま,たかお
+なかしま,たかし
+しなだ,りゅひち
+なかた,しげかず
+なかや,まなぶ
+さいかわ,さぶろ
+はせがわ,とおる
+なかざわ,たつじ
+なまつ,いずる
+なりた,ひでと
+なすの,すなお
+ねもと,よしあき
+ねおい,ちゆき
+ねず,やすひで
+にいむら,おさむ
+にいやま,つかさ
+にいやま,けい
+にのみや,よしのぶ
+にのみや,たかひろ
+にし,まさかつ
+にしだ,しんいち
+にしだ,かずなり
+にしどの,あきら
+にしかわ,かずなり
+にしきど,たくじ
+にしむら,ひとし
+にしな,ひろし
+にしお,まみ
+いのうえ,まみ
+にしざわ,たくじ
+にしずか,たかあき
+にった,みねあき
+のだ,まこと
+のむら,なおき
+ののむら,かずまさ
+のりはし,ちかげ
+ひの,ひろし
+のざき,ひろし
+のざわ,かずあき
+ぬまの,たかお
+おびせ,まさのり
+おぼかた,まさし
+おち,よしのり
+はせがわ,あきら
+まなべ,あきひこ
+おだ,あきら
+おだ,だいいつ
+おだ,じゅんじ
+おだ,かずとし
+おだくら,たかあき
+おがた,としや
+おがわ,ひとみ
+あべ,わかこ
+おぐち,さとし
+おぐま,ひろゆき
+おぐら,いさお
+おぐら,かずゆき
+むさし,しん
+おぐら,まさひろ
+おぐり,のぶこ
+おば,ひろき
+おはし,けんすけ
+おひ,あきひろ
+おひえ,みつあき
+おくぼ,ひろゆき
+おくま,かつみ
+おくま,しんすけ
+おの,ひでひろ
+おぬま,じゅんこ
+たかせ,ぎょ
+おさわ,ひとし
+おさわ,としひこ
+おさわ,よすけ
+おさわ,こき
+おしま,まさよし
+おしま,たまき
+おしま,ひでお
+おた,みつる
+おたか,まさひこ
+おたき,まこと
+おたに,けんじ
+おつか,よひち
+おつか,ひろかず
+おわ,けんじ
+おわだ,はるし
+おひゃま,いさむ
+おぞね,ひろし
+おか,かつみ
+おか,かよこ
+おか,よしひで
+おか,ひでき
+おかだ,ひろし
+おかだ,けんじ
+おかだ,そすけ
+おかだ,まりこ
+おかどめ,ひろお
+おかもと,みつひろ
+おかもと,しんじ
+おかもと,ひろゆき
+おかむら,たけし
+おかの,よじ
+おかのや,ひろのぶ
+おかお,てつお
+おかざき,まこと
+おき,ひろのり
+おきもと,ひとし
+おくむら,のぶゆき
+おくむら,やすし
+おくの,ひろあき
+おまた,かずしげ
+おにき,たかのり
+おにつか,たかよし
+おのでら,ひとし
+おのざわ,まさゆき
+おにし,とよあき
+おにし,きよかつ
+おつか,やすし
+おさだ,こうじ
+おさき,ひろし
+おさなみ,りか
+おやまだ,あきら
+おざわ,みつる
+おざわ,やすじ
+おざわ,ひでお
+ろ,ひろゆき
+さえぐさ,まさひこ
+さえき,ともこ
+なかじま,ゆきひこ
+さいた,あい
+おがわ,あきよし
+さいとう,ひろゆき
+さいとう,まさあき
+さいとう,あきら
+さかい,ひでつぐ
+さかい,けん
+さかい,くによし
+さかい,なおひさ
+さかい,とものぶ
+さかい,たかし
+さかいり,しずよし
+さかき,やすのり
+さかま,こうじろ
+さかまき,しろ
+さかもと,やすのり
+さかもと,よりと
+さかもと,やすのり
+さかた,よしひろ
+さかうえ,たけし
+さかずめ,ちえこ
+なかの,やすはる
+さくま,かずひさ
+さんぼんまつ,たかひこ
+さの,よしのり
+さの,りょじ
+ささがわ,ひでのり
+ささき,けいじ
+ささき,たけし
+ささき,たく
+ささき,しょご
+ささざわ,ひろゆき
+さとう,きょこ
+さとう,まさのり
+さとう,まさとも
+さとう,まさとし
+さとう,さとる
+さとう,しゅひち
+さとう,たかし
+さとう,たかゆき
+さとう,たくみ
+さとう,ともひろ
+さとう,よしひこ
+さとう,かずひろ
+さつま,たけし
+さわぐち,としふみ
+さわい,ゆたか
+さわらぎ,ゆりこ
+さわたに,やすゆき
+せいた,かずよし
+せき,こうじ
+せき,としゆき
+せき,やすし
+せきはら,かつひと
+せきね,よしたか
+せきね,たかゆき
+しらいし,のぶたか
+せんが,ゆすけ
+せの,ひでゆき
+せしも,さとし
+せと,おさむ
+せとぐち,まゆみ
+てるや,のぶお
+しいば,ひでのり
+しばの,みわこ
+しばさき,なおと
+しばた,みちひろ
+しぶさわ,やすお
+しぶさわ,くにお
+しち,あつし
+しちた,まさまろ
+しげひさ,のぶひろ
+しげさわ,のりやす
+むらた,あきら
+しまず,ゆすけ
+しまず,ひろゆき
+きしだ,まさひろ
+しみず,のぶお
+しみず,のりゆき
+しみず,しゅひち
+しみず,たつお
+しみず,たつや
+しみず,ゆひち
+しみず,りか
+みやこし,ともゆき
+しもみち,いくこ
+なかばやし,てつろ
+しもおさ,まさふみ
+しもつじ,よしひろ
+しなだ,だいえい
+しながわ,たかゆき
+しんもと,とおる
+しの,みゆき
+しのだ,りゅうたろう
+しのだ,たかつぐ
+しのざき,たつし
+しおたに,たかし
+しおや,みちお
+しらべ,えいいち
+しらがき,ひろし
+しらい,はやとし
+しらいし,くんじ
+しらいし,けいこ
+しらき,ひろしげ
+しずた,としひろ
+しょじ,まりこ
+そのだ,かおる
+すどう,たけし
+すえだ,しんじ
+すえつぐ,ちかし
+すがた,のぶお
+すがわら,まさひろ
+すぎの,よしのり
+すぎさき,りゅうたろう
+すぎしま,はつえ
+ながい,しょじ
+すぎやま,てつひろ
+すみ,つかさ
+すみたに,いっせい
+すさき,よしはる
+すすき,かずひこ
+すやま,えつひろ
+すずき,ひろし
+すずき,かずひろ
+すずき,けいこ
+たじま,けいた
+すずき,みどり
+すずき,もとゆき
+すずき,せいこ
+すずき,たかし
+すずき,やすすけ
+すずき,よしあき
+すずき,よしのぶ
+すずき,ゆうじ
+すずき,まさる
+しゅくや,まりこ
+たちばな,としひろ
+たちやま,かつひろ
+たどころ,しんいち
+たがわ,ひろゆき
+たぐち,こういち
+たぐち,とものり
+たぐち,みちお
+たい,けんいち
+たじま,こういち
+たかだ,さとき
+たかだ,たくや
+たかぎ,やすこ
+みやもと,ゆたか
+たかはま,あきこ
+たかはし,あつし
+たかはし,ひでとも
+たかはし,ひでとし
+たかはし,ひでとし
+たかはし,ひろき
+たかはし,じゅにち
+たかはし,かよ
+たかはし,こういち
+たかはし,まさあき
+たかはし,まさひと
+たかはし,もとかず
+たかはし,なおゆき
+たかはし,のぶひさ
+たかはし,のりお
+たかはし,さちえ
+たかはし,さとる
+たかはし,しげのぶ
+たかはし,すすむ
+たかはし,たかし
+たかはし,てつお
+たかはし,やすあき
+たかはし,まさのり
+たかなし,つとむ
+たかの,まさゆき
+たかおか,まこと
+たかせ,けんりゅ
+たかしな,としひさ
+たかしな,やすし
+たかた,ひろゆき
+たかやま,やすのり
+たかやなぎ,ひろし
+たけばやし,もとやす
+みかみ,ゆきえ
+たけい,やすこ
+たけき,たかし
+たけもり,よしひさ
+たけむら,としゆき
+たけうち,さとこ
+たけや,ひでき
+たけやま,いちろう
+たきぐち,のぶあき
+たきした,みつる
+たきざわ,しん
+たまい,かつのり
+たみや,てつや
+たむら,しげき
+たなべ,こせい
+たなはし,だいさく
+たなか,ひろあき
+たなか,ひろゆき
+たなか,じゅん
+たなか,かつみ
+たなか,けいすけ
+たなか,まこと
+たなか,ましゅ
+たなか,のぶひこ
+たなか,おさむ
+たなか,けん
+こだま,しょひち
+たなか,としあき
+たなか,としかず
+たなか,としゆき
+たなか,あきら
+たなむら,しげる
+たんば,あきこ
+たにぐち,よすけ
+たにぐち,ひろゆき
+たにい,よしゆき
+たにむら,しげと
+たにわき,ひでのり
+たるい,ひろゆき
+たさき,ひろき
+たしろ,ゆきこ
+たていし,ひろこ
+たうち,じゅにち
+たうら,しん
+てらだ,まさかず
+さとう,じゅんこ
+てらにし,よしひこ
+てらした,あさお
+てるきな,のりあき
+とべ,さとし
+とご,おさむ
+とぐち,さとし
+とじ,かずなり
+とみなが,けいじ
+とみなが,じゅんこ
+とみおか,げん
+とみた,とものり
+とみやま,おさむ
+とねがわ,しょじ
+としなり,かずゆき
+とよだ,まさや
+とよだ,なおや
+とよだ,りょこ
+おもり,ひろあき
+とずか,よしお
+やまかわ,あきら
+つぼい,もりゆき
+つちはし,ひろし
+つちの,あきよ
+つちや,えりこ
+まき,たかはる
+つだ,えいじ
+つがわ,かつのり
+つじ,まさと
+つじ,やすまさ
+つじ,なおき
+つかだ,すぐる
+つかもと,ひろたか
+つむら,あきら
+つなしま,じゅんこ
+おくやま,こうじ
+つのだ,かつや
+つのがい,まさひこ
+つしま,よひちろ
+つつみ,ひでお
+つずき,りゅへい
+つるおか,じゅんこ
+うちだ,かつみ
+うちだ,みのる
+うちだ,よしひろ
+うちだ,ひでのり
+うちの,みつのぶ
+うちのくら,けんじ
+うちやま,さとし
+うちやま,とよかず
+うちやま,ひろし
+うだ,ひろゆき
+うえだ,きよし
+うえだ,たかゆき
+うえだ,ゆきお
+うえだ,まもる
+うえはら,さだはる
+うえはら,やすのり
+うえはら,のぼる
+うえじま,ひろし
+うえき,かつみ
+うえむら,ひでと
+うえの,ひさし
+うえの,まさる
+うえの,まさふみ
+うえやま,やすし
+うい,あきひこ
+うめだ,めぐみ
+うめだ,みちはる
+うめだ,たかのり
+うめだ,のぶひろ
+うめはら,けいじ
+うめかわ,しげる
+うるしだに,なつこ
+いのうえ,よしと
+うさみ,としはる
+うしまる,しげる
+うしやま,まさお
+うすい,しんじ
+うすい,ひろゆき
+うつみ,えりこ
+ささがわ,くにひろ
+そめや,たかひで
+わだ,とくひろ
+わだ,ゆうじ
+わだ,よしこ
+たのうえ,けいすけ
+わしだ,しょひち
+わたい,あつし
+わたなべ,ちはる
+わたなべ,けんじ
+わたなべ,まこと
+わたなべ,まさのり
+わたなべ,まさゆき
+わたなべ,たけし
+わたなべ,ゆうこ
+わたなべ,たつひろ
+やぎ,かつゆき
+やご,こへい
+やはぎ,おさむ
+やくし,じろ
+やまだ,かずあき
+やまだ,けんじ
+やまだ,まさお
+やまだ,まさよし
+やまだ,よしあき
+やまだ,ゆひち
+やまだ,ひであき
+やまがた,みちあき
+やまぎし,まさゆき
+はり,あきお
+やまぐち,かずひさ
+やまぐち,さとし
+やまぐち,ひでき
+あおつか,とおる
+やまぐち,ひろゆき
+やまじ,あきら
+やまもと,かずお
+やまもと,まさひこ
+やまもと,なおふみ
+やまもと,おさむ
+やまもと,れいき
+やまもと,たかし
+やまもと,とみやす
+やまもと,としひろ
+やまもと,としお
+やまもと,よしお
+やまもと,ゆか
+やまもと,たけし
+やまむら,まさえ
+やまなか,まさゆき
+やましな,かつし
+やました,ともかず
+やました,ともみ
+やました,よしさと
+やました,まさのり
+やまて,みちお
+やまうち,ひろのり
+やまざき,じゅにち
+やまざき,けんじろ
+やまざき,かずひろ
+やなぎ,ひろふみ
+やなぎだ,たかゆき
+やなぎだ,あきひで
+やない,としのり
+やなか,えいじ
+やすだ,まなぶ
+やすだ,としゆき
+やすだ,なおふみ
+やすもと,ともかず
+やつか,ゆたか
+やざわ,しんじ
+よだ,ゆきひろ
+よどがわ,りんじゅ
+よだ,けんじ
+よこはた,ひとし
+よこやま,けい
+よこやま,あきら
+よもり,ゆきひさ
+よねもち,のぼる
+よろずや,ひとし
+よしだ,かずお
+よしだ,こういちろ
+よしだ,みほ
+ふじさき,さとし
+よしだ,ただし
+よしだ,まさみ
+よしまつ,いわお
+よしもと,せきこ
+よしむら,かずや
+いしばし,なおき
+よしの,みずほ
+たかの,てつや
+ゆはし,のりお
+えだひろ,ひろのり
+はらだ,ひろや
+はやさか,いわお
+いながき,しげる
+いのうえ,あきよし
+いしはら,よしつぐ
+こじま,なおひさ
+こすぎ,たつぞ
+くぼた,たかし
+もり,のりお
+なかばやし,こういち
+ねもと,ひとし
+にのみや,てつお
+おがわ,ちはる
+おたに,ゆすけ
+せき,かつや
+しぶたに,ただし
+しんと,たつや
+そぶえ,けいご
+たかはし,しょこ
+たかせ,みどり
+とよだ,まさゆき
+うえだ,りゅせい
+やまもと,まさき
+やまずみ,さとし
+よしだ,たかし
+あさかい,やすひさ
+ふくた,しんご
+かわさき,なるみ
+ひろせ,たかし
+はら,なおひさ
+かさはら,たかし
+おざわ,けい
+かとう,めぐみ
+なかむら,まさこ
+たぐち,くみ
+あだち,つとむ
+あかし,ひろゆき
+あきやま,ひとし
+あおき,たけし
+あらき,まみこ
+あさひ,ひろひで
+あさの,しんたろう
+あわの,やすゆき
+あわの,ひろし
+どじ,こうじ
+どぞの,なるとし
+ふちかみ,かずみ
+ふじい,かずお
+ふじい,よしかず
+ふじいえ,かが
+こわ,せつこ
+ふじしろ,けいいち
+ふじた,けいいち
+ふじた,せいえい
+ふじわら,ひろむ
+ふくだ,りょせい
+ふくだ,よしひさ
+ふくだ,えみ
+さいとう,しょじ
+ふくやま,ともたけ
+ふるはた,ふみのり
+ごと,としひこ
+はむろ,おさむ
+はせ,じゅんじろ
+はしもと,なおゆき
+はしもと,せいや
+はっとり,かつろ
+はやし,けんじ
+はやし,こういち
+はやし,のぶや
+はやし,しゅにち
+はやし,まさお
+はやし,ようこ
+ひび,ひろゆき
+ひぐま,こうじ
+ひらい,なおゆき
+ひらかわ,たつお
+ひらの,けん
+ひろなか,おさみ
+ほりぐち,じゅにち
+ほさか,こうじ
+ほそや,ひろかず
+いちい,おさむ
+いちかわ,たくひさ
+いぐま,まさひろ
+いいさか,じゅにち
+いかわ,じゅん
+いけだ,かつひこ
+いけだ,としあき
+いけがみ,まさかず
+いのうえ,しげみつ
+いのうえ,めい
+こばやし,まさつぐ
+いしばし,ひろゆき
+いしだ,たくや
+いしまる,ひろたか
+いしずか,つねとも
+いそ,かずひこ
+いとう,みのる
+いとう,のぶあき
+いとう,さとし
+いとう,せいじ
+いとう,しげゆき
+いとう,もとひろ
+いとう,えいいち
+いわた,まゆみ
+かりや,いわお
+じょがさき,あゆこ
+かが,いくじろ
+かげやま,まもる
+かじなみ,しろ
+かみひらた,ひさあき
+かなもり,とくじろ
+かねこ,やすひさ
+かねこ,よしゆき
+かにわ,みわ
+かさま,としゆき
+かせ,ひであき
+かしむら,ひであき
+かたおか,あきひこ
+かとう,まさひろ
+かとう,さわこ
+かとう,てつや
+かとう,よしみね
+かとう,けんいち
+かわち,さとし
+かわぐち,せいいち
+かわの,しげお
+かわしま,かずひさ
+きくち,つよし
+きもと,たかゆき
+きむら,ひろゆき
+きのした,たつや
+きしはら,てるお
+きしかわ,よしお
+きた,あきら
+きたがわ,のりまさ
+きたの,ひろゆき
+きたやま,ふみとし
+きよおか,けんじ
+きよせ,じゅんこ
+こばり,けいじ
+こばやし,こた
+こばやし,あきひこ
+こぼり,のぶひで
+こいわ,けいこ
+こじま,ちさと
+はしもと,みつお
+こみやま,てつじ
+こんど,ともあき
+こんど,よしひろ
+こんど,かつや
+こしかわ,てつ
+こてがわ,つぐあき
+こわ,ひでゆき
+くぼた,りえ
+くぼた,みちはる
+くどう,りえこ
+くが,せいこ
+もり,まさよ
+くにたけ,つかさ
+くらかけ,たてき
+くり,かおる
+くさふか,こうたろう
+くわばら,たまみ
+まちだ,たけし
+まるやま,ふみよ
+たけうち,こういち
+まつば,たかひろ
+まつばら,ともゆき
+まつだいら,のりこ
+まつもと,よすけ
+まつもと,あきふみ
+まつなが,けんじ
+まつお,のぶゆき
+まつお,しょひち
+まつお,ひろゆき
+みくに,はやと
+みながわ,よしひろ
+みながわ,ゆきひろ
+みのて,はじめ
+みた,ひろかず
+みとめ,まさひと
+みつやま,しのぶ
+みやち,とおる
+みやじ,ひろゆき
+みやじま,ゆき
+みやた,あきお
+みやざき,あつし
+みやざき,たけろ
+みやざと,まき
+みやざわ,よりこ
+みぞぐち,よしあき
+みずい,みほ
+もんの,まさや
+もり,のりゆき
+もり,しんや
+もりた,やすし
+もりた,わたる
+もりやま,しげる
+むらかみ,ともあき
+むらかみ,よしくに
+むらかみ,たけし
+むらまつ,しゅいち
+むろぞの,たかふみ
+ながぶち,こうじ
+ながの,みつお
+ながせ,けいこ
+ながたに,きよあき
+なごや,まこと
+なかがわ,よしなり
+なかみち,ひろき
+なかむら,もとこ
+なかむら,まさよし
+なかの,えいじ
+なかしま,みつひろ
+にしだ,のりすみ
+にしはら,くるみ
+にしむら,としあき
+にしおか,まりこ
+のぐち,りゅひち
+のせ,こういちろ
+おばた,みのる
+おちあい,しんすけ
+おちあい,ひろあき
+おがわ,ひろし
+おがわ,みつる
+おがわ,りゅひち
+おがわ,しほ
+おぎの,ひろあき
+おぐら,かおり
+こんど,しょ
+おへ,じゅにちろ
+おがき,まさのり
+おにし,ひろし
+おの,ひろのり
+おた,じゅん
+おしろ,あつと
+おた,しんや
+おたしろ,かずひこ
+おつ,のぼる
+おつ,まさずみ
+おひゃぎ,ゆうじ
+おひゃま,いくこ
+おかもと,ひでひこ
+おかやま,たかし
+おけたに,まさと
+おくやま,たみや
+おのでら,かつとし
+おざわ,まゆみ
+さいとう,たかあき
+さいとう,やすゆき
+さいとう,まさみち
+さかぐち,じろ
+さかなか,のりあき
+さかにわ,まさみち
+さかうち,ひろし
+さくらい,かずしげ
+さくらい,たかし
+さの,ひでき
+ささき,まさかず
+ささき,めぐみ
+ささき,えいじ
+ささま,ちはる
+さとう,ひろぶみ
+さとう,みつより
+さとう,たつこ
+さとう,くみこ
+にしまた,ひでとし
+さわだ,みのる
+せんば,かずひで
+せと,てるお
+しぶや,たかのぶ
+しい,ひろかず
+しまだ,もとむ
+しまだ,よりこ
+おかもと,としたか
+しながわ,つとむ
+しんかわ,まさゆき
+しんきゅ,たくや
+しのだ,まさみ
+しのはら,えり
+あさかわ,りえ
+しおはら,まさかず
+しろた,たけや
+すぎもと,ひろゆき
+すぎやま,たかし
+すぐち,みわ
+もろとみ,てつお
+すずき,まさひさ
+たぐち,ゆひち
+たぐち,よしのり
+たはら,ゆきお
+たかぎ,みさこ
+たかはし,こへい
+たかい,みえ
+たかやま,まさとし
+たけ,さちえ
+たけばやし,ひさや
+たけかわ,まさゆき
+たけうち,てるえ
+わたなべ,せいいち
+たけうち,かおる
+たみや,まさと
+たむら,かつひろ
+たなべ,かずひで
+たなか,きよたか
+たなか,のぶこ
+たなか,はるこ
+たにぐち,まさふみ
+たにぐち,あきお
+たにむら,ゆうじ
+たのうえ,ひろゆき
+たるさわ,よしお
+たしろ,かずお
+てらだ,けんじ
+とが,かずこ
+とがし,なおき
+とご,りゅじ
+とくなが,じゅんこ
+ともの,かほる
+とよだ,こうじ
+つちや,ひでき
+つかはら,まさかず
+うらさき,ひろし
+わだ,まさひろ
+わだ,けいこ
+わたなべ,のぶこ
+わたなべ,つよし
+やぎぬま,あつし
+やまだ,かずひろ
+やまだ,たつお
+やまだ,あきひろ
+やまもと,あきこ
+やまもと,としはる
+やまもと,ゆきひこ
+やまもと,ひでみね
+やまなか,しげお
+やまなか,しんや
+やました,あやこ
+ひぐち,かずみ
+やまざき,よじろ
+やなぎ,ひろあき
+やすだ,のぶひろ
+やすえ,ゆうじ
+よこえ,ともやす
+よこやま,れいこ
+よねはら,まさとし
+よねみつ,ふみお
+よりまつ,けいこ
+よしだ,としあき
+よしの,ひさし
+よしたき,けいじ
+ゆかわ,まさあき
+ゆり,ひでと
+もり,たつや
+ささき,ゆきひろ
+しらはま,ちひろ
+てんぱく,かおる
+うちだ,まさひろ
+やまうら,じゅんじ
+まつぐま,ふみの
+あべ,ひろし
+あべ,のぶゆき
+あべ,としや
+あべ,のぶあき
+あだち,りえこ
+あいはら,こういち
+あじま,まこと
+あかさか,ともこ
+あきもと,ふみひろ
+あきやま,みつひろ
+あきやま,おさむ
+あくね,じゅんや
+あまの,ともお
+あまの,たかひさ
+あめみや,かつひこ
+あんどう,たけひろ
+あんどう,ゆひちろ
+あんどう,なおや
+あんじき,とる
+あんぺいじ,ふみこ
+あおき,ひろゆき
+あおき,かつみ
+あおき,かずお
+あおき,なおあき
+あおき,ななお
+はらしま,つよし
+あおき,やすあき
+あおき,とおる
+あおやぎ,こぞ
+あおやま,たかし
+あおやま,たつや
+あらい,ひろし
+あらき,まなぶ
+あらき,ちあき
+あらた,まさつぐ
+あらや,みき
+こばやかわ,みわ
+ありた,かずお
+あさば,ゆうこ
+あさえだ,しゅにち
+あさか,よしこ
+あさくら,しげはる
+あさの,ゆきこ
+あさの,じゅん
+あしべ,としあき
+あわみや,りか
+あざみ,つとむ
+あぜやなぎ,なおひさ
+あずま,たかゆき
+あずま,よひち
+あずま,けいすけ
+ばば,こういち
+ばば,まこと
+ばば,かつじ
+ばなか,みき
+さたけ,しんいち
+ちば,やすひろ
+ちぎら,なるひと
+ちはら,よしゆき
+ちかい,なむす
+ちょん,ともちか
+ちゅま,たつお
+だい,しゅじ
+だいお,ともあき
+だて,まさひこ
+でぐち,ひろゆき
+でわ,つとむ
+どい,ひろみ
+えびさわ,りえ
+なかむら,たかゆき
+えいもり,なおゆき
+えんど,よしかず
+えんど,かつゆき
+えのもと,だいすけ
+ふじい,かずや
+ふじい,けいこ
+ふじい,もとはる
+ふじい,のぶひこ
+ふじい,たかふみ
+ふじかわ,あつし
+ふじもり,あつこ
+あおき,たけし
+ふじもと,まさひろ
+ふじおか,ひでき
+ふじた,ひろし
+ふじた,こうじ
+ふかお,えみこ
+ふくだ,たいぞ
+ふくだ,ひろみつ
+ふくい,たかこ
+ふくい,はるみ
+ふくもと,なおき
+ふくしま,たかお
+ふくしま,けいこ
+ひの,ひろかず
+ふくざわ,けんいちろ
+ふくざわ,たつのり
+ふなだ,みつよし
+ふるだて,としあき
+ふるや,しのぶ
+ふたむら,あきこ
+なかむら,あきら
+ごと,なおや
+ごと,てつろ
+ごと,やすひさ
+ごと,むつお
+はば,しんいち
+はちやま,かつひこ
+はぎわら,ひろし
+はまべ,ひでお
+はまだ,こうじ
+はまだ,ひでたか
+まえおか,ひでのぶ
+はなみ,のぶこ
+はなおか,さち
+せざい,きょこ
+はら,みきこ
+さとう,ゆうこ
+はら,けいこ
+はらだ,けいすけ
+はらだ,みきや
+はらだ,もとひさ
+はらだ,しげき
+はらだ,かずや
+はりま,かいちろう
+ほんま,ようこ
+はるやま,ようこ
+はせ,まさみ
+はせがわ,しん
+はせがわ,たかゆき
+はせがわ,よしみ
+はせがわ,たかひで
+はしぐち,ひとし
+はしもと,やすひで
+はしもと,あきこ
+はしずめ,なおき
+はしずめ,りょじ
+はしずめ,せいご
+はた,あつし
+はたの,なつみ
+はたの,えいいち
+はとり,かずひこ
+はっとり,まさあき
+はっとり,みつのり
+はっとり,なおき
+はっとり,のぶあき
+はっとり,しげる
+はっとり,よひち
+はっとり,たつお
+はやかわ,やよい
+はやかわ,けんたろう
+はやみ,あきひこ
+はやし,ひとし
+はやし,かつこ
+はやし,かずや
+はやし,こうたろう
+はやし,みわ
+ささたに,しゅんすけ
+はやし,しんいちろう
+はざま,ちから
+へんみ,かずとも
+ひび,なおき
+ひだか,たけし
+ひだか,よいち
+ひだか,あきひこ
+ひえだ,ゆき
+ひがき,さとし
+ひがし,まさき
+ひいどめ,わたる
+ひじくろ,けいこ
+ふくい,なおみ
+ひま,すみひと
+ひおき,ひであき
+ひらい,ゆみこ
+みき,まさたか
+ひらの,まゆみ
+ひらの,やすひろ
+ひらた,あきら
+ひらつか,まさのり
+ほだ,せいいち
+ひらやま,かなこ
+ひろべ,ともみ
+ひろい,とこ
+ひろさわ,ゆうこ
+ひろさわ,たろう
+ひろすえ,みちかず
+ひろた,しょじ
+はやま,よしひさ
+ひろわたり,ひろみち
+ひさもと,せいいち
+ひさの,いさお
+ひさゆき,よしき
+ひしだ,とめい
+ひしたに,まり
+わだ,まさゆき
+ひやま,ふきよ
+ありくら,かずひろ
+ほんだ,しろ
+ほんだ,ふみかず
+ほんご,ひろき
+ほんま,なおこ
+ほんま,きくみ
+まつもと,まさひろ
+ほり,まさひろ
+ほり,なおこ
+ほりべ,じゅんこ
+ほりえ,おさむ
+ほりえ,ゆうこ
+ほりえ,さゆり
+ほりうち,みかこ
+ほしば,よしあき
+ほしかわ,ゆかり
+かとう,ひろし
+ほしな,やすし
+ほり,ふみえ
+ほしの,のぶひこ
+ほそだ,ゆたか
+ほった,みのる
+ほちど,けいすけ
+いぶか,まさと
+いちかわ,ゆひち
+いちかわ,あきのぶ
+いちます,けんた
+いちのせ,まなぶ
+いで,あきと
+いがらし,としゆき
+いがた,あきのり
+いい,まさひこ
+いいだ,ただし
+いいだ,よしふみ
+いいだ,とおる
+いいの,ひでお
+いいより,なおき
+いいずか,こういち
+いかるぎ,のりゆき
+いかわ,たかし
+いけち,のぶお
+いけだ,さおり
+いけだ,たかや
+いけだ,よしてる
+いけだ,ひとし
+いけがみ,まりこ
+いけじり,つとむ
+いけたき,かつみ
+いくもと,まさひこ
+いまい,まさと
+いまい,えいいちろう
+ほそい,ゆりこ
+いまい,まさよし
+いまにし,まさゆき
+いなだ,しんじ
+いながき,いちろう
+いなげ,みちはる
+はざま,まこと
+いの,かつや
+いのまた,けいすけ
+いのうえ,まみ
+やすかわ,こういちろ
+はる,もとはる
+いのうえ,たかこ
+いのうえ,たかゆき
+いのうえ,ともひろ
+いのうえ,かずや
+いおき,くにおみ
+いりえ,しん
+いさか,たけし
+いさか,れいこ
+おもり,けんたろう
+いしばし,さぶろ
+いしだ,たけし
+いしだ,はじめ
+いしはら,まなぶ
+いしはら,けんいち
+ひらと,ひさもと
+いしい,じゅん
+いしい,けいたろう
+いしい,りえ
+いしい,たかひと
+いしい,とおる
+いしい,てるお
+はねいし,つとむ
+いしい,ふみのり
+いしかわ,ひろひさ
+いしかわ,まさみち
+いしかわ,のぶゆき
+いしかわ,とおる
+いしかわ,わたる
+いしおか,けんいちろ
+いしつか,まなぶ
+いしわた,けいいち
+いしざか,うらら
+いしざか,よしと
+いしざき,はるお
+いしずき,ひでお
+いそ,けいじろ
+いそがい,みきお
+いたば,あつし
+いとう,はるお
+いとう,けいじ
+いとう,まさこ
+いとう,しんすけ
+いとう,やすし
+いとう,ようこ
+ひだか,よすけ
+いとう,よしひこ
+いとう,ゆか
+にし,のりこ
+いわだれ,よしゆき
+いわはし,としゆき
+いわき,ありひろ
+いわもと,こうじ
+いわさき,えいいち
+ひらつか,こうじ
+いわさき,なおと
+いわさき,しげひと
+いわさき,ゆうこ
+じんぐ,ゆうじ
+いわしげ,いのり
+いわた,まさひろ
+じんぐ,まさひろ
+じょご,ばん
+かが,さとし
+かがぶ,あつし
+かぎやま,ひでつぐ
+かい,まさひろ
+かいだ,ゆき
+かいだ,しんいち
+かまち,よしのり
+かまだ,ゆうこ
+かまほり,みずほ
+かまた,よしのり
+かめだ,のぶかず
+かめい,ひろし
+かみの,ひろゆき
+かみの,まさゆき
+かみとの,ひろゆき
+かみや,さとこ
+かみや,まこと
+かみやま,ひろし
+かもん,よしのり
+かもん,やすかず
+かん,かつや
+かない,しんじろ
+かない,ひでお
+かなじ,ゆぞ
+かなおか,のりゆき
+かなざわ,のりまさ
+かんべ,ひろゆき
+かんだ,まさこ
+かんだ,ともひこ
+かねき,こういちろう
+かねきよ,まゆみ
+かねこ,ふみひこ
+かねした,たけし
+かねやす,ひとし
+かの,りゅじ
+かの,のぶゆき
+かんずい,ちあき
+かさはら,けんぎ
+かさはら,ひでき
+かさい,えいたろう
+かさまつ,とものり
+かさも,のりこ
+たまたに,すみこ
+かしわぎ,まさゆき
+かしわぐら,たみお
+かただ,かつひさ
+かたおか,さおり
+ほし,やすたか
+かたおか,ちえ
+かとう,えいすけ
+かとう,ひろと
+かとう,ひろゆき
+かとう,かずひろ
+かとう,なおや
+かとう,しんじ
+かとう,たけし
+かとう,たみゆき
+かとう,ななこ
+かとの,ひでひさ
+かつむら,えいいち
+かわばた,くにとし
+かわごえ,けんいちろ
+かわぐち,しま
+かわはら,ゆりみ
+かしむら,ひでゆき
+かわい,さちこ
+かわい,なおき
+かわもと,ひろと
+かわむら,しゅじ
+かわむら,ひろき
+かわな,やすゆき
+かわな,もりひろ
+かわなみ,しんいち
+かわの,りょた
+かわせ,けいこ
+はらだ,てるひこ
+かわしま,じゅんこ
+かざみ,みちや
+かずさわ,きよし
+きばやし,ひでき
+きだ,いちろう
+きはら,あきら
+きくち,こうじ
+きくち,ますみ
+さいとう,ゆうこ
+きくい,なおみ
+きもと,ひろゆき
+きむら,まなぶ
+きむら,さとる
+きむら,しゅじ
+きむら,ゆきひと
+きむら,まさかず
+きの,ひでひこ
+きりの,しんじ
+きさぬき,じゅにちろ
+きし,しゅこ
+きし,のぶこ
+きしだ,なおと
+きしかわ,やすひろ
+ひらて,ゆひち
+きしなみ,たけし
+きそ,よしひこ
+きた,ひろし
+きたがわ,いちろう
+きたじま,けんじ
+きたじま,つよし
+きたむら,ようこ
+きたの,のぶゆき
+きたざき,つよし
+きたざわ,としつぐ
+きよはら,たかひさ
+はしもと,はるみ
+のざき,かずまさ
+こばやし,かずや
+こばやし,まこと
+こばやし,まさき
+こばやし,なおき
+こばやし,さとし
+こばやし,しん
+こばやし,しんじ
+こばやし,やすまさ
+こばやし,よしお
+こばやし,ひであき
+こち,なおみ
+こだま,ひろゆき
+こが,せいか
+とど,のりこ
+こはら,としゆき
+こひ,ただし
+この,たつし
+こいけ,つとむ
+こいわ,おさむ
+こいずみ,ふみきよ
+こじか,ふみお
+こじま,まさゆき
+こじま,なおき
+こじま,たかはる
+こじま,けんじ
+こまつばら,あつし
+こみや,えいじ
+こもだ,さちこ
+こむろ,しょじ
+こんど,ともひろ
+こんど,ゆき
+こんど,やすひろ
+こさけ,あきひろ
+こせ,しゅひち
+こすぎ,なおすみ
+こずか,はるみ
+くぼ,ひろふみ
+くぼ,とおる
+くぼ,ともゆき
+くぼ,しゅご
+くぼじょ,みえこ
+くどう,ながお
+くどう,りちこ
+くどう,かずひこ
+くまかわ,さとし
+くまくら,りゅた
+くましろ,きよし
+くまた,あきよし
+くにもと,としゆき
+くらもち,なつみ
+くらしま,けんじ
+くりはら,けんいち
+ひらい,こういち
+くりはら,たかし
+くりはら,たけし
+くりはら,やすのり
+くりはら,はるみ
+くりはし,たけひろ
+くりす,なおき
+くろだ,しげお
+くろだ,ひろし
+くろき,まり
+くろき,せいいち
+くろき,まさき
+くろめ,けんじ
+くろさわ,けんいち
+くるみや,せいいち
+くさやなぎ,しろ
+くすのせ,じゅんじ
+くわはら,しゅひち
+まちだ,ひろし
+まだらめ,かずひろ
+まえだ,こうじ
+まえだ,よしゆき
+まえだ,かつよ
+まえがわ,ゆうじ
+まえはら,てつお
+まえきた,みつのぶ
+まきの,ようこ
+しぶたに,あつし
+まなべ,ひろゆき
+まるやま,たかひろ
+まるやま,ともこ
+まるやま,えいじ
+まさおか,まこと
+ますぶち,えいじろ
+ますだ,こき
+ますだ,まさとし
+ますだ,なおおみ
+ますだ,しんじ
+ますだ,ようこ
+ますだ,としたか
+まつば,さとし
+はら,さとる
+まつだ,しんいちろう
+まつだ,ふみひで
+まつふじ,ぎんじ
+まつふじ,かずこ
+たちくい,たかひろ
+まつい,こうじ
+まつかわ,よしのり
+まつまる,あきら
+まつもと,ひろゆき
+まつもと,けいいち
+まつもと,たかし
+まつもと,よしのり
+まつもと,ゆうこ
+まつもと,よしはる
+しおばら,たかとし
+まつむら,たくや
+まつむら,ひろかず
+まつなが,ひろき
+まつなが,のぞみ
+まつなみ,けんじ
+まつお,けんじ
+まつお,だいすけ
+まつおか,あきお
+はやしだ,かずなり
+まつおか,みき
+あぜやなぎ,しんじ
+まつおか,たかひろ
+まつおか,しゅさく
+まつせ,あきお
+まつしま,かずのり
+まつした,あきひこ
+まつたに,のりこ
+まつわか,ひろし
+まつやま,つとむ
+まつざき,しんいち
+まつなが,しゅにち
+ほんな,よしのり
+めかた,ゆきこ
+みかじり,まさひろ
+みかみ,よしこ
+みかみ,としや
+みき,ともひろ
+みみた,えいこ
+みなくち,かずひろ
+みなみ,せいいち
+みなみ,せいじ
+みなみ,しんご
+みなと,ひろあき
+みね,たかゆき
+みね,けんじ
+みしま,こうじ
+みしま,しんじ
+みその,さとし
+みたむら,あきら
+みたんだ,きくお
+みつぼ,まこと
+みつぼし,きわむ
+はすむら,けんじ
+みつはし,きょこ
+しなだ,しんすけ
+みつま,ひでお
+みやはら,まさゆき
+みやはら,みちろ
+みやい,ふみはる
+みやじま,さとし
+みやもと,ともゆき
+みやもと,あきら
+みやした,しょじ
+みやた,よしたか
+みやた,あつし
+みやうち,こうじ
+みやうち,おさむ
+みやうら,ひろひさ
+みやざき,まさとし
+はしぐち,けんいち
+みやざわ,よしかず
+みやざわ,としひろ
+みやず,としふみ
+みぞかみ,ひろみつ
+みずの,ひろゆき
+みずの,かずひと
+みずたに,じつや
+もちだ,ひではる
+もちずき,みえこ
+もちずき,ゆかこ
+みよし,かずなり
+もり,ひでのり
+もり,ひろゆき
+もり,ひろゆき
+もり,かおる
+もり,けんじ
+もり,おさむ
+もり,たけひさ
+もり,たけし
+もり,しげき
+もりぐち,こうじ
+もりかわ,あきお
+もりなが,やすひと
+もりさき,じゅにち
+もりた,てつひこ
+もりた,としゆき
+もりや,のぶゆき
+もりやま,あきひろ
+もてぎ,あきお
+もとき,じろ
+はぎわら,たかし
+むかいだ,まさき
+むねひろ,まさし
+むねかた,だいいち
+むらかみ,まさゆき
+むらかみ,てつや
+むらかみ,ひろかず
+むらこし,つねあき
+むらまつ,いずみ
+むらぬき,ひろかず
+むらた,ひろき
+むらた,こうじ
+むらた,まさし
+むらやま,あけみ
+やました,よひち
+むろた,えいじ
+みょじん,むつお
+ながい,ひでお
+はしもと,みつひろ
+ながぬま,くにひろ
+ながお,のぶよし
+ながおか,しこ
+ながさわ,ひでゆき
+ながしま,かずよし
+ながしま,つよし
+ながた,やすひろ
+ながた,やすお
+はせがわ,ひろこ
+いがらし,まさと
+ながやま,けいじ
+ながよし,ゆきもと
+ないとう,まさき
+なかばやし,せいじ
+なかがわ,よしはる
+なかごめ,あきひろ
+なかしま,ひろかず
+なかじま,みちお
+なかじま,のりこ
+なかじま,おこ
+なかじま,ゆきお
+なかじま,えり
+なかくき,みほ
+なかまる,かおる
+なかみち,たかし
+なかもと,よしかず
+なかもと,よしやす
+なかもと,ちえこ
+わたなべ,ひろあき
+なかむら,かずひろ
+なかむら,けんじ
+なかむら,まさかつ
+なかむら,まさき
+なかむら,まさのり
+なかむら,しんいち
+はぎわら,さとし
+なかむら,としあき
+なかむら,やすまさ
+なかむら,ゆうこ
+なかむら,てるみ
+なかの,くらと
+なかお,ゆうじ
+なかお,しんいちろう
+なかおか,りか
+なかしま,みか
+にしじま,ゆきひろ
+なかや,ひろかず
+なかやま,ひろゆき
+なかざと,ひろふみ
+なまため,まさなり
+なめら,しんいちろう
+ななみ,せいじ
+なんば,かずのり
+なんじょ,ゆうじ
+なんぽ,てるゆき
+ならぶ,さとこ
+なりはら,まきこ
+なりとみ,ひでゆき
+なるしま,てつや
+なすかわ,けんた
+なとり,やすし
+ねぎし,ゆうこ
+ねもと,ひろゆき
+にえだ,ともゆき
+にいじま,さとし
+にいくら,たかし
+にいつま,わたる
+にいざわ,ひろし
+にしだ,かつあき
+にしだ,まもる
+にしだ,もりひと
+にしだ,ただとし
+ひだか,たかお
+にしだ,けいすけ
+にしかど,あきら
+にしかわ,ひでき
+にしかわ,ひろみ
+にしかわ,なおき
+にしもと,まこと
+にしむら,じゅんや
+にしな,けんや
+にしの,えみこ
+にした,いずみ
+ふかみ,とおる
+にしわき,まこと
+にしやま,まさる
+にしやま,けんじ
+にしざわ,よしのり
+にった,ひろひと
+にわた,たけし
+にわやま,えいじ
+のあみ,ひでと
+のぼりたて,ゆきまさ
+のだ,やすお
+のがわ,あつし
+のぐち,えいじゅ
+のぐち,ともあき
+のじり,まさのぶ
+のもと,ひでや
+のむら,まさのり
+はやさか,きよし
+のむら,ひろかず
+のと,みき
+のざき,かずよ
+こさか,たけひこ
+おばな,かつし
+おち,ひとし
+おだ,よしひろ
+おがさわら,ひろよし
+おがた,ほずみ
+くき,ちず
+おかだ,くにこ
+おがわ,まなぶ
+おがわ,たかゆき
+おがわ,ひろや
+おぎはら,ともあき
+おぎの,たかし
+おぶ,ひろゆき
+おはら,ゆうこ
+はまもと,みきこ
+おはら,かずひろ
+おはし,まさひろ
+おかわ,そのみ
+おくぼ,としや
+おみや,やすし
+おもり,あやこ
+おむら,まさてる
+おにし,はるのぶ
+おの,かずてる
+おぬき,ひろやす
+おさき,ゆたか
+おさき,ひろあき
+おさわ,ひろゆき
+おしま,まさゆき
+おしま,やすのり
+おしま,かずとし
+おた,こういち
+おた,みか
+おた,ただひこ
+おた,やすこ
+あんどう,ゆうじ
+おた,さとし
+おたか,まさと
+おたき,まさあき
+おたに,せいじ
+おたに,てつや
+おたに,りょひち
+はやし,まさたか
+おつぼ,ひろやす
+おつか,かずお
+おつか,さとし
+おつか,ゆうこ
+はやし,しろ
+おつる,たけし
+おふち,たかお
+おわ,つとむ
+おひゃ,やすお
+おじお,のぶひろ
+おか,みか
+おかべ,ひろし
+おかだ,けんいち
+おかだ,おた
+おかだ,たかあき
+おかだ,ふとし
+おかもと,かずひこ
+おかもと,のりひさ
+おかもと,まさかず
+おかむら,ゆきこ
+おかむら,たけひさ
+おかざき,よしのり
+おかざき,えいき
+おきの,あつし
+おくだ,えみこ
+おくだ,みちえ
+おくがわ,としこ
+はぎはら,たけし
+おくうち,むねお
+おみ,ふみのぶ
+おむら,まさとし
+おんだ,あゆむ
+おの,まさき
+おの,たかや
+おの,とおる
+おの,ひろゆき
+おのでら,たかゆき
+おのでら,ゆ
+おのでら,ともゆき
+おのむら,ひろくに
+おのざわ,けいいち
+おぬき,ひろとし
+おの,こうたろう
+おひゃま,かおる
+おりど,はじめ
+おりしきだ,まさのり
+おさか,じゅにち
+おやま,けんじ
+おざき,むねし
+おざき,あやこ
+おざわ,ひとし
+こざわ,かずひろ
+おざわ,ゆたか
+おざわ,ひょそお
+ぇえ,みのる
+はたなか,しゅんすけ
+さえき,まさひこ
+さいだ,よしのり
+さいぐさ,としお
+はんだ,みのる
+さいとう,しんや
+さいとう,てつろ
+さいとう,たかあき
+さかち,ひとし
+さかぐち,ひであき
+さかい,こういち
+さかい,ただお
+ひらの,たいち
+さかい,たつや
+さかい,よしまさ
+さかい,ゆすけ
+さかい,ひろし
+さかもと,まさはる
+さかもと,たけし
+ひろせ,まさし
+さかもと,みつひろ
+さかた,りょこ
+きしだ,ももこ
+さこ,ひろし
+さくま,たけし
+さくらば,やすとも
+さくらい,まさひさ
+さくらやま,しげひと
+さめしま,まさお
+さんべ,こうじ
+さるわたり,みのる
+はせがわ,こぞ
+ささえ,あきひろ
+ささはら,あきら
+ささき,ひろみ
+ささき,みきお
+ささき,なおき
+ささき,たかし
+はびろ,やすひろ
+ささお,よしあき
+ささおか,よきち
+ささたに,ともじ
+さた,ひろあき
+さたけ,あかし
+さとう,まさる
+ほしの,えみ
+さとう,はるみ
+はっとり,ひろし
+さとう,かずよし
+さとう,まこと
+さとう,まさき
+さとう,まさと
+さとう,なおき
+さとう,りょじ
+さとう,たかまさ
+さとう,たかし
+さとう,ゆたか
+ひらの,ゆきこ
+さとう,ゆたか
+さとう,かずしげ
+さわだ,ともこ
+さわだ,よしみ
+さわふじ,ともみ
+さわき,としき
+さわむら,じゅん
+せがわ,けいじ
+せがわ,まさはる
+せき,しんや
+せき,とおる
+せきぐち,しげき
+せきね,ゆきたか
+せきね,りょひち
+ひらの,たつき
+せんごく,けいじ
+せお,まりお
+せら,としあき
+せら,けいいち
+しばはら,ひろあき
+しばた,ひろゆき
+しばた,やすのり
+はせがわ,けいいち
+しばた,こへい
+しばた,たかひろ
+しばた,こへい
+しばざき,ひろし
+しぶたに,しんたろう
+しぶや,かずき
+しちひょ,りつこ
+しき,たいち
+しきしま,ひさし
+しま,かずあき
+しま,かつみ
+しまだ,えいいち
+しまぬき,やすし
+しまおか,ひろし
+しました,ただし
+しまず,ひろかつ
+しみず,かずの
+しみず,かずひこ
+はせがわ,ともひろ
+しみず,ともみつ
+しみず,ゆたか
+しみず,まさたけ
+しもがい,まさゆき
+しもかわべ,まさこ
+しもおか,ともはる
+しもさか,ともかつ
+しもやま,きみあき
+しんぼり,まさる
+しのはら,たけし
+しのはら,あきこ
+しのざき,こすけ
+しのざき,かつひろ
+しのずか,たかし
+しんや,やすたか
+しおた,なおひろ
+しおたに,けいいち
+しおや,ひでき
+しらはま,けいすけ
+しらい,ちえこ
+しらいし,まさお
+しらいし,ゆりこ
+しらいし,かずひさ
+しらき,としこ
+しらさき,あきひろ
+しょなご,あきひろ
+おひゃま,ひでゆき
+しゅと,てつや
+しもいず,ひろえ
+そえだ,なおたか
+ほりの,ひさとし
+そとじま,ひろし
+すだ,よしこ
+すだ,けんいち
+すどう,ひでこ
+すが,じゅんきち
+すがぬま,けんじ
+すがわら,とおる
+すぎばやし,みちひさ
+すぎもと,みか
+すぎもと,みさ
+すぎむら,やすひと
+すぎの,つとむ
+すぎさき,けいすけ
+すぎさわ,かずゆき
+すぎた,たかしげ
+はやし,みか
+すぎうら,ひろき
+すぎやま,よりと
+すぎやま,たくみ
+すご,ひろかつ
+すいた,ふとし
+すみだ,めいじろ
+すみかわ,ここ
+すなが,ひでひと
+すのはら,はじめ
+すずき,ひろかず
+すずき,けい
+すずき,まさとし
+すずき,みか
+すずき,のぶこ
+すずき,のりひこ
+すずき,さとる
+すずき,しんいち
+すずき,たかお
+すずき,たかゆき
+すずき,たみ
+やまかわ,とおる
+すずき,としや
+すずき,しんじ
+はが,やすお
+すずき,よしひさ
+すずき,あつし
+すずの,さとし
+しゅと,とおる
+たばら,まさみ
+ただ,あきら
+はりがい,ともゆき
+ただ,よしゆき
+たがしら,まさふみ
+たぐち,しょご
+たぐち,たけひろ
+たじま,よしのり
+たじま,かずふ
+ほった,あきこ
+たかだ,かつひこ
+たかぎ,しげる
+たかぎ,たつお
+たかぎ,あさこ
+たかはし,あきひこ
+はしぐち,ひろかず
+たかはし,いさと
+たかはし,かおり
+たかはし,かつふみ
+たかはし,くにひで
+たかはし,まこ
+たかはし,まさる
+たかはし,たかのぶ
+はせがわ,まさゆき
+たかはし,みなこ
+たかはし,みゆき
+たかはし,のぶあき
+たかはし,しんじ
+たかはし,しんじ
+たかはし,しゅにち
+たかはし,とものり
+たかはし,としかず
+たかはし,よひち
+たかはし,ゆうこ
+おみ,えいこ
+たかひら,ひろあき
+たかい,ひろし
+たかみや,なおみ
+たかなし,ひろみち
+たかの,かつとし
+たかの,かずこ
+たかの,かずお
+たかの,ともひろ
+たかの,てるお
+はやかわ,けんたろう
+たかお,ひでのり
+たかしま,かつみ
+たかす,しんいち
+たかとうり,よしみつ
+たかとり,かずひろ
+たかや,いちたろう
+たけ,あつのり
+たけだ,けんいち
+たけだ,ふさひこ
+ほり,けんじ
+たけだ,みのる
+たけはら,よしとも
+たけい,こうじ
+たけもと,りほ
+たけもと,みきこ
+たけなか,よしひろ
+はやし,たまよ
+たかぎ,よしひと
+たけとみ,あきひろ
+たけうち,もとひろ
+たけうち,しゅひゃ
+たけうち,ただし
+たけやす,かつのり
+たけざわ,ひでひこ
+たきば,ふさみ
+たくぼ,のりあき
+はにゅう,あきひろ
+たまより,せいじ
+たもつ,いずみ
+たむら,こぞ
+たむら,しんいち
+たむら,ひかる
+たなべ,しんいち
+たなべ,あき
+たなか,あきすけ
+たなか,けんいち
+たなか,まさひこ
+たなか,まさき
+たけだ,まさのり
+たなか,みほ
+はせがわ,みつお
+たなか,のぶよし
+たなか,れいじ
+たなか,りょじ
+たなか,さとし
+たなか,たかのり
+たなか,つよし
+たなか,ゆうこ
+たなか,ゆた
+たなか,ひろゆき
+たに,あけみ
+みたに,あきら
+たにぐち,やすのり
+はっとり,ひでひこ
+たにぐち,ひろゆき
+たにぐち,よしゆき
+たにぐち,こういち
+たにかわ,あつし
+たさか,よしこ
+たしま,ただし
+たてかわ,まさる
+たての,ひでゆき
+てらじま,たかよし
+てらまえ,まなぶ
+てらさわ,かつき
+てらやま,まこと
+てしま,ゆうこ
+とだ,こういち
+ととみ,よしお
+とひゃま,とおる
+ときわ,ひろこ
+ふくやま,へいご
+とくざわ,ひであき
+とみなが,ひろこ
+とみた,けんいち
+とみやま,ゆうこ
+さわむら,かつひこ
+とりごえ,けんし
+とりたに,まこと
+とさか,けいすけ
+つぼい,まさる
+ひらばやし,こうじ
+つちだ,はじめ
+つちたに,せいいちろう
+つちや,まこと
+つだ,みよこ
+つだ,えつまさ
+つじ,もとゆき
+つじい,たけひこ
+つじむら,ゆきひこ
+つじむら,ちえこ
+つじの,けんじ
+つじさわ,まさる
+つかだ,こうじ
+つかはら,ひでし
+つかもと,かずのり
+つかもと,たつみ
+つかもと,さだゆき
+つねだ,ひでのり
+つのだ,しゅじ
+つのだ,まさひこ
+つるまる,ともなり
+つさか,ひろゆき
+つつい,ひでき
+つつみ,しげと
+つつみ,ひろし
+つつみはら,あつよし
+うちだ,ひろし
+うちだ,かずお
+はやし,なると
+うちだ,たかし
+うちの,しゅひち
+うちやま,ゆみ
+うだがわ,たいぞ
+うえだ,てつお
+うえだ,やすき
+うえだ,よしみ
+ねず,けんたろう
+うえむら,まさひろ
+うえむら,たけし
+うえむら,けんいちろ
+うえの,たかし
+うえの,けん
+うえさわ,たかしげ
+うえつぼ,まさのり
+うえつき,まさはる
+うけの,たかお
+うまはし,まこと
+うめだ,さだゆき
+うめむら,たかゆき
+うみだ,たつや
+うおずみ,さとし
+うらた,あやの
+うしくさ,しんいち
+うすなみ,ひろゆき
+わだ,けんじ
+わだ,たけし
+わだ,としあき
+わだ,さとし
+わかせ,しょた
+わき,けんいち
+わたなべ,しんや
+わたなべ,ともふみ
+わたなべ,としひろ
+わたなべ,よしたか
+わたなべ,よしてる
+わたなべ,ゆすけ
+わたなべ,ひでふみ
+わたぬき,やすたか
+わたぬき,かおる
+わたり,こうきち
+はしぐち,さんぺい
+やぶ,せんた
+やぎぬま,としゆき
+やじま,じゅん
+やまだ,じゅにち
+やまだ,かおり
+やまだ,みき
+やまだ,みつのり
+やまだ,さとよし
+やまだ,ただし
+やまだ,たけし
+やまだ,ともあき
+やまだ,よしひさ
+やまだ,ていじ
+ひさの,よしき
+やまだ,よしゆき
+やまだ,かずと
+やまふじ,よしひさ
+やまぎわ,ひでお
+やまぐち,ひろみつ
+やまぐち,じゅんや
+やまぐち,こうじ
+やまぐち,みつあき
+やまぐち,なおき
+やまぐち,しげふみ
+やまぐち,よしたか
+やまぐち,ゆすけ
+やまぐち,ゆうこ
+やまかわ,あきあつ
+やまもと,あきら
+やまもと,ちえ
+みずたに,ひろこ
+やまもと,かずみ
+やまもと,まさよし
+やまもと,りか
+やまもと,さとし
+やまもと,さやか
+やまもと,たつや
+やまもと,やすひこ
+やまもと,やすひろ
+やまもと,よしひろ
+やまもと,のりゆき
+やまね,ゆい
+やまね,いさお
+やました,てつや
+やました,たけはる
+はんだ,あきら
+やまうち,たかひろ
+やまうち,ゆきこ
+やまうら,ひろし
+やまざき,かなこ
+やまざき,きみお
+やまざき,みどり
+たむら,みつひろ
+やまざき,よのすけ
+やまざき,なおと
+やまぞえ,たかし
+やなぎさわ,かつじ
+やの,かず
+やすだ,かずあき
+やすはら,ひなこ
+こしもと,しんいち
+はぎわら,まこと
+よこた,やすひさ
+よこやま,としお
+よもだ,かずひさ
+よなが,いさお
+よねだ,よしや
+よねやま,しんいちろう
+よねざわ,たかし
+よねざわ,ひろと
+よしだ,かずよし
+よしだ,けんいち
+よしだ,まさとし
+よしだ,さとし
+よしだ,たかお
+よしだ,たかし
+よしだ,ゆみこ
+よしだ,たけし
+よしぐち,ひでき
+よしい,けいこ
+よしいけ,もと
+よしまつ,みきお
+よしの,てるひさ
+よしの,たけし
+よしざわ,あきら
+よつたに,さとし
+ゆきざね,ひろたけ
+ゆやま,さちよ
+ずし,えり
+あらい,ともひさ
+ふじき,まゆみ
+ひらの,てるやす
+かめやま,かつひろ
+こじま,まさと
+なかお,あきひさ
+いわかわ,さちこ
+つちや,けんご
+いじろ,きよひと
+くどう,のぶこ
+ながしま,ゆきお
+はしぐち,きよゆき
+つちや,けんたろう
+いしまつ,ひさよし
+はらだ,しげお
+みずの,おさむ
+ほしの,みつひろ
+あべ,せいじ
+あべ,よしひさ
+あべ,ゆきお
+あべ,まさと
+あぶかわ,ゆひち
+あだち,しげる
+あいざわ,ひでのぶ
+あじろ,かずお
+あかい,めぐみ
+たもと,そうたろう
+あかいし,たつや
+あかし,こうじ
+あきいけ,ともこ
+あきた,かずひと
+あきやま,かつゆき
+あまがい,けいこ
+あまがた,ひろやす
+あまの,ひろたか
+あめみや,ふみお
+あんどう,はるお
+あんどう,しげのり
+あんどう,たかこ
+あんどう,ゆたか
+あんざい,えいいち
+あおき,みさ
+あおき,けんたろう
+あおやぎ,きりこ
+あおやま,まさゆき
+あらい,としあき
+あらい,みきお
+あらき,えいち
+あらや,まゆみ
+ありま,やすひろ
+ありたけ,のりちか
+あさだ,むつみ
+あさひ,ひでふみ
+あさの,たかし
+あしだ,みほ
+あしかわ,かつみ
+ばば,かずひろ
+ばば,たかゆき
+ばば,だいご
+ちば,しんご
+ごと,まさひで
+ちょ,まさとし
+だいど,あきふみ
+どあい,あつと
+どい,ゆうこ
+ほそい,まさし
+どい,ともなり
+どい,としみつ
+えがしら,ひろあき
+えぐち,しんいち
+えばら,せいじ
+えんど,たけお
+えんど,ゆうじ
+あまり,じゅんこ
+えのもと,さとし
+えのもと,さとし
+えのもと,やすゆき
+えのもと,たかはる
+えざき,けんじ
+ふじはら,じゅんこ
+ふじい,まさひこ
+ふじい,えいじ
+ひるかわ,ゆうこ
+ふじい,こうじ
+ふじさわ,ともひろ
+ふじさわ,たくじ
+ひご,いさお
+ふじた,けんいち
+ふじた,ひでたか
+ふじわら,やすひろ
+ふかみ,つとむ
+ふかざわ,しんいち
+はせがわ,さとし
+ふくだ,けんじ
+ふくもと,きよみ
+ふくむろ,まさみ
+ふくろ,あきら
+ふくし,ちから
+ふくしま,かずひと
+ふくしま,まさはる
+はぎわら,たかし
+ふくしま,さつき
+ふなき,けん
+ふなくぼ,まさひこ
+はらだ,はるみ
+ふるはた,ひろゆき
+ふるかわ,かつゆき
+ふるもと,つよし
+ふるや,たかし
+ふしみ,とおる
+ごだ,やすゆき
+いりえ,たけし
+いしはら,よすけ
+いちかわ,じゅんこ
+いば,みつお
+いわさき,たかし
+いのうえ,やすこ
+いいもり,ひろみ
+いはら,たかみ
+いわむら,しんいち
+いながき,としお
+いしじま,あきら
+いとう,なおき
+ごんど,ふみお
+ごと,みのる
+いしかわ,もとふみ
+いとう,まちこ
+いせき,たかし
+ごと,ともや
+はだ,ひろみ
+はぎわら,みきお
+はぎわら,しんじ
+はいじま,あきら
+はまだ,まさゆき
+はまの,まみ
+はまおか,さえこ
+はなど,あやこ
+はなた,まさひろ
+はら,せいじ
+はら,しょた
+はら,ゆきお
+はら,かずひろ
+はらだ,しろ
+はらだ,しゅじ
+はらだ,すみれ
+すずき,まさひこ
+はらが,まさのぶ
+はらみ,りこ
+はらやま,ひろゆき
+はらぞの,ひであき
+はせべ,みわこ
+かねこ,ともこ
+つちだ,あいこ
+はしもと,ひろし
+はしもと,ひろつぐ
+はしもと,こすけ
+はしもと,みのる
+はしもと,てつや
+はしもと,ともひこ
+はしもと,ゆうじ
+はしもと,たけし
+はた,きょこ
+はっとり,しん
+はっとり,たけし
+はっとり,あきひと
+はやかわ,たけろ
+はやかわ,たつや
+はやさか,けんたろう
+はやさき,のぶひこ
+はやし,のぶひろ
+はやし,たくじ
+はやし,ともあき
+はやし,よひち
+はやし,りえ
+はやしだ,ふみひろ
+ひび,かなえ
+ひがし,さとし
+ひがし,たかあき
+ひぐち,ひでき
+ひじかた,ひでき
+ひじや,よしひこ
+ひなが,けいこ
+ひらかわ,ひであき
+ひらの,まこと
+ひらの,せいじ
+ひらの,きよし
+ひらお,ひではる
+ひらしま,よしかず
+ひらやま,せいご
+ひらやす,としひこ
+ひりき,たかよし
+ひろまさ,たかなり
+ひろもと,やすき
+ひろおか,あきら
+ひろせ,けんぞ
+ひろせ,かずのぶ
+うめだ,やすひろ
+ほんだ,かずお
+ほんど,こういちろ
+ほりもと,けんじ
+ほりの,よしお
+ほりうち,たけし
+ほさか,ひであき
+ほしの,ひろこ
+ほしやま,いたる
+ほそかわ,ただお
+ほそかわ,たかひと
+ほそかわ,なおき
+ほそや,としろ
+いばらき,ひとし
+いちはら,けんいちろ
+いちはら,わたる
+いちはら,しんじ
+いちかわ,まなぶ
+いちのせ,ゆみこ
+いだ,まつたろう
+いでぐち,りょひち
+いど,さなえ
+いがらし,たけし
+いがらし,やすゆき
+いがらし,かずしげ
+いいだ,たかね
+いいだ,あきこ
+いいじま,まこと
+いけだ,みぎふみ
+いけだ,てつや
+いけだ,よしひろ
+いけだ,しげお
+いまい,ひろし
+いまいずみ,のぶお
+いまいずみ,ひさみつ
+いまむら,たかし
+いまむら,のぶこ
+いもん,けんいち
+いなだ,さとし
+いながき,たけし
+いながき,かずひと
+いなむら,まさし
+いなむら,かつのぶ
+いの,ゆきひこ
+いのかわ,ひろし
+いのまた,ひろお
+いのうえ,かつとし
+いのうえ,こうじ
+いのうえ,りょ
+いのうえ,ともみ
+いのうえ,ともみ
+いのうえ,ようこ
+いのうえ,こき
+いぬい,けいこ
+いぬしま,みわ
+いりえ,おさむ
+いさか,みのる
+いしば,かずゆき
+いしばし,ますみ
+いしばし,かずや
+いしだ,みつや
+いしだ,たかし
+いしだ,とものり
+いしだ,せいいちろう
+いしがみ,あすこ
+いしぐろ,かずひと
+いしはら,ひろかず
+いしい,さとし
+いしい,しほ
+いしい,やすひろ
+いしい,ゆうじ
+いしい,ゆうた
+いしい,こういちろ
+いしかわ,しんいちろう
+いしまる,まゆみ
+かわず,まさのり
+いしずか,しげる
+いたや,ちひろ
+いいだ,だいすけ
+いとう,ひでき
+いとう,ひろみつ
+いとう,ひろし
+いとう,かつひろ
+いとう,けいいち
+いとう,こういち
+いとう,こうじ
+いとう,まりこ
+いとう,まさひろ
+いとう,なおみ
+いとう,のぼる
+いとう,せつこ
+いとう,ただし
+いとう,たかはる
+いとう,としお
+いとう,つよし
+いとう,よひち
+いとう,ゆきお
+いとう,のりひさ
+いとう,あきひろ
+いわい,ひろみち
+いわい,ひろし
+いわみ,いくお
+いわむら,かずや
+いわなが,しょこ
+いわお,かずひろ
+いわさき,じゅん
+いわた,まこと
+いわた,おさむ
+いわた,よしまさ
+いずみ,まさゆき
+じんば,まさみ
+じょのうち,ひろあき
+じょらく,たまき
+かがみ,きよたか
+かがわ,まさふみ
+かげやま,ひろかず
+かい,ゆきお
+かじもと,えいじ
+かじわら,みほこ
+くりはら,たかゆき
+かきむら,かずしげ
+かきのき,きよし
+かきうち,よしたか
+かきざき,なおこ
+かこ,かずあき
+かめしま,りゅこ
+かみえす,きよこ
+かみくら,みつひろ
+かみむら,しんじ
+かみたき,のぞむ
+かみよしかわ,つねのり
+かん,りえ
+かない,よしのり
+かんばやし,ひろし
+かんだ,けいた
+かねこ,たまき
+かねこ,じゅん
+かねた,たくや
+かの,せいじ
+かりの,えいじ
+かさみ,じゅん
+かさなみ,たかあき
+かせ,ひろゆき
+かすが,こうじ
+かすや,としひこ
+かたおか,だいすけ
+かとう,えいいち
+かとう,ひろし
+かとう,こういちろう
+かとう,まさじ
+かとう,まさゆき
+かとう,たくや
+かとう,としかず
+かとう,いちろう
+かとう,よしひと
+かとう,たかゆき
+かつまた,やすゆき
+かつら,たかし
+かわべ,まゆみ
+かわだ,ひろし
+かわぐち,かなえ
+さいとう,たかと
+かわぐち,まもる
+かわはた,ひろし
+かわかみ,まさなり
+かわかみ,のりこ
+やじま,なおこ
+かわもと,ひろし
+かわむら,まさゆき
+かわむら,のりあき
+かわむら,ただあき
+かわむら,けんじ
+かわの,けんじ
+かわの,たかゆき
+かわさき,あきひと
+かわせ,じろ
+かわしま,くみ
+かわしま,まさき
+かわしま,よしゆき
+かわしま,たけし
+きだ,ひでき
+きくち,ひでたか
+きくち,いくこ
+やまもと,かおり
+あきよし,かずよし
+きくち,けんいち
+きくち,みつよ
+きくち,つよし
+きくち,ひであき
+きむら,ひろし
+きむら,じゅにち
+きむら,まり
+きむら,まさひこ
+きむら,まさかつ
+きむら,しげゆき
+きむら,けんじ
+かとう,としや
+きなせ,よしはる
+きね,ひでき
+きの,やすのぶ
+きの,みのる
+きのした,かずや
+きら,たかひで
+きしもと,やすひろ
+きたばたけ,やすひろ
+きたばたけ,まもる
+きたがわ,たつや
+きたがわ,みつる
+きたむら,あきこ
+たかはし,ふみひこ
+きたやま,まさひこ
+きよなり,あきひこ
+こばやし,あつし
+こばやし,ひろし
+こばやし,まさき
+こばやし,みのる
+こばやし,しょじ
+こばやし,ゆうじ
+こばやし,まさこ
+いとう,あき
+この,かずひろ
+この,けいた
+この,ようこ
+この,とおる
+こいけ,あきお
+こじま,たかひこ
+こくしょ,おさむ
+こまき,ちかこ
+まかべ,ひろあき
+こまつ,めぐみ
+こまつ,えいじ
+こんど,ひろし
+こんど,きよし
+こんど,としひろ
+こしば,あきこ
+よこえ,たかし
+こてがわ,ひろし
+この,ひろあき
+こやま,なおき
+こやま,しんじ
+こやま,よひち
+こざす,たかみつ
+くちいし,ひろし
+くぎみや,かずあき
+くじらい,ともふみ
+くまのみど,わたる
+くまざき,まさる
+くれまつ,かずや
+くりき,さぶろ
+くりやま,たけし
+くりやま,ひろえ
+くろべ,しん
+くろさわ,たくみ
+くろさわ,まさゆき
+くりゅ,みき
+くさの,やすのり
+くわはら,まさのり
+くずの,かずあき
+きゅだ,れいこ
+まぶち,もとくに
+まちた,ひろたか
+まえだ,としのり
+まえいえ,かずとし
+まえかわ,りゅすけ
+ままだ,あつし
+まなべ,ひろし
+まなべ,ともき
+まるいち,たかひで
+まるたに,まさゆき
+まるやま,としろ
+まさおか,ひろし
+ますだ,なおと
+ますだ,ともあき
+ますだ,やすゆき
+ますだ,よしえ
+ますだ,かつゆき
+まつばら,じゅん
+まつだ,よしたか
+まつだ,たくや
+まつだいら,けんいち
+まつえだ,まさき
+まつい,よひち
+まつい,あきふみ
+まつもと,ちあき
+まつもと,ひろし
+まつもと,ひろたか
+まつもと,かずお
+まつもと,まさゆき
+まつもと,たかひで
+まつもと,たかこ
+まつもと,たかゆき
+まつもと,たつみ
+まつもと,つよし
+まつもと,よしぶみ
+まつもと,ゆきこ
+なかむら,ひろかず
+まつむら,こぞ
+まつなが,かつや
+まつの,ひろゆき
+まつお,としふみ
+まつお,あゆみ
+まつおか,ひでし
+まつおか,ひろき
+まつおか,のぶお
+まつおか,せいいち
+まつおか,かずひろ
+まつしま,きよかず
+まつたに,きょこ
+まつやま,よしき
+みちもと,なりあき
+みえき,あきのり
+みかみ,けん
+みかみ,としかず
+みながわ,けん
+みなかわ,だい
+みしま,ひろゆき
+みしま,くみ
+みしま,けんじろ
+みたち,かずと
+みつだ,りゅいち
+みつはし,たかお
+みつい,たけし
+みつもと,かずのり
+みうら,ただあき
+みうら,ひろし
+みやべ,あつし
+みやち,きみお
+みやじま,あや
+ばん,こうたろう
+みやもと,まゆみ
+よこえ,たくろ
+みやさか,かずみ
+みやた,よしたか
+みやた,つよし
+みやうち,しょこ
+うちやま,かずみ
+さかい,しのぶ
+みやざわ,ひろあき
+みぞぶち,こうじ
+みぞぐち,なおき
+みぞぐち,じゅん
+みずもと,ひろし
+みずの,きよみ
+みずの,きょじ
+みずの,まさひろ
+みずしま,あきら
+みずた,まさゆき
+みずたに,あきのり
+もぎ,まなぶ
+もぎ,としあき
+もぎ,こぞ
+ももせ,けいいち
+もんま,ひろゆき
+もり,かずお
+もり,まさひろ
+もり,みきこ
+もり,りょすけ
+もり,としあき
+もり,えいこ
+もりもと,あきら
+もりの,いずみ
+よしだ,あつひこ
+もりた,まさよし
+もりた,まさゆき
+もりた,ゆうじ
+もりた,ゆきお
+もりた,ゆたか
+もりわき,ひさと
+もろ,かずのり
+もたい,もゆる
+もとばやし,ひろし
+もとはし,だいすけ
+もとやま,ゆうじ
+もとざわ,れいこ
+むかわ,けいすけ
+むなかた,けんいち
+むらかみ,まさひろ
+むらかみ,りか
+むらかみ,つとむ
+むらかみ,ゆきひろ
+むらかみ,よすけ
+むらかわ,なおふみ
+むらなか,ひでのぶ
+むらた,かずひさ
+むらた,かつみ
+むらやま,よしや
+むらやま,しげお
+むろはし,たくお
+むと,よしろ
+むと,ひろし
+なば,さとる
+ながい,しげまさ
+ながい,まさのり
+ながの,ゆうじ
+ながの,いつこ
+ながお,ふみこ
+やまもと,ひろあき
+ながおけ,よしき
+ながおさ,ひろゆき
+ながしま,やすこ
+ながしま,あきひさ
+ながた,まさこ
+おば,まゆこ
+ながた,とものり
+ながた,ひろき
+ながたに,けんじ
+ないとう,ひろし
+なかち,こうじ
+なかだ,かおる
+なかだい,あきこ
+なかがわ,ひろゆき
+なかがわ,まさる
+なかがわ,なおあき
+なかがわ,かつや
+なかはら,たまみ
+なかい,やすひろ
+なかい,かずひろ
+なかじま,さとし
+なかじま,あきひろ
+なかむら,かつや
+なかむら,くみ
+きみひら,みき
+いとう,さとし
+なかむら,しんじ
+なかむら,しょへい
+なかむら,つよし
+なかむら,やすのり
+なかむら,よしはる
+なかむら,よしゆき
+なかむら,ゆひち
+なかむら,なおゆき
+なかにし,よしゆき
+なかにし,あつし
+なかの,ひろゆき
+なかの,じゅん
+なかの,けいいち
+なかの,しの
+なかの,たかし
+なかお,こうじ
+なかさく,しゅご
+なかせ,まさゆき
+なかた,みか
+なかた,たかひさ
+なかた,こうじ
+なかたけ,たつや
+なかやま,かずゆき
+なみき,はじめ
+ななさわ,まさあき
+なんば,ひろき
+なんもく,みき
+ねもと,ともお
+ねもと,いずる
+にい,たかひろ
+にいで,ゆうこ
+にいくら,やすあき
+にいずま,てつや
+にかみ,かずのり
+にしばやし,あつし
+にしだ,あきこ
+にしはら,しょたつ
+にしはら,ひろたか
+にしかわ,くるみ
+にしかぜ,ひろみ
+にしみや,やすひろ
+にしむら,たくお
+にしむら,ふみお
+にしやま,けいし
+にしやま,なみじ
+にった,だいすけ
+にわ,えみこ
+とご,なつこ
+にわ,みつあき
+のぶはら,よしこ
+おがわ,ひでつぐ
+のがみ,ひでや
+のがみ,たいちろう
+のもと,あきら
+のむら,まさひこ
+のむら,よしや
+のぞえ,しきこ
+ぬまた,さとし
+おだじま,たかひろ
+おがえり,かずのり
+おがた,さとし
+おがわ,しんいち
+おがわ,きわむ
+おぎ,ひとし
+おぎくぼ,もとあき
+おご,かつあき
+おぐら,きよし
+おば,まなぶ
+おばやし,かつや
+おへ,こうじ
+おがま,ゆうこ
+おはし,おさむ
+おひし,じゅにち
+おかわ,みか
+おきど,まなぶ
+おくぼ,たかひろ
+おくぼ,はじめ
+おくま,てつ
+おま,えり
+おまえ,とおる
+おまえ,ひでき
+おもり,しげる
+おもり,たけお
+おもり,たけし
+おもり,よじろ
+おもり,ともき
+おもと,ひろゆき
+おにし,ともひろ
+おにし,よりこ
+おにし,よひち
+おの,こういち
+おぬま,なおき
+おさか,けんじ
+おさわ,やすひこ
+おさわ,まさお
+おしま,ひろゆき
+おしろ,ひろふみ
+おた,まこと
+おた,まもる
+おた,むつろ
+おた,たかし
+おた,ともひろ
+おた,みつよし
+おたに,なおき
+おつ,ひろき
+おつか,まさやす
+おつき,みつる
+おいかわ,あいこ
+おか,けんじ
+おか,まさてる
+おか,あきら
+おかだ,ひろき
+おかだ,りさ
+おかだ,たかひろ
+おかだ,すみこ
+おかぐち,たかし
+おかい,しんいち
+おかまつ,あさこ
+おかもと,あつお
+おかもと,ひでゆき
+おかもと,まさみ
+おかもと,むねやす
+おかもと,しんいちろう
+おかもと,やすひろ
+おかもと,ひろゆき
+おかの,たかし
+おかざき,あきひろ
+おきもと,みちお
+おくの,よしひさ
+おくやま,ひでき
+おみ,ふみこ
+おの,みき
+おの,やすし
+おの,ゆひち
+おのせ,さとる
+おのざき,のぶひろ
+おりえ,ゆたか
+おざき,たかひろ
+とくみや,よしあき
+さいち,えいいち
+さいとう,ひでお
+さいとう,まさぶみ
+さいとう,まさひろ
+さいとう,みちはる
+さいとう,のりお
+さいとう,ともひろ
+さいとう,ゆきと
+さいとう,えつこ
+はかまだ,よしたみ
+さかぐち,やすお
+さかい,しげる
+さかきばら,なおき
+さかきもと,ひろふみ
+さかもと,ひろし
+さかもと,じゅんこ
+さかもと,たかし
+さかもと,よしこ
+さかもと,まさこ
+みたに,てつや
+さかうち,かおり
+さきもと,しんいち
+さくま,ひとき
+さくらい,ひであき
+さの,ひろたか
+さの,ゆたか
+さの,やすひこ
+ささだ,たいし
+ささはら,かおる
+ささき,かよ
+ささき,こうじ
+ささき,まりこ
+とだに,たかお
+ささき,よしえ
+さたけ,えいじ
+さとう,えり
+さとう,ひでひろ
+さとう,いずみ
+さとう,けいいち
+さとう,けんいち
+さとう,くにひこ
+さとう,まさひこ
+さとう,みつる
+さとう,もとのり
+さとう,りきや
+さとう,りゅひち
+さとう,しゅぞ
+さとう,しゅんすけ
+さとう,すすむ
+さとう,たかひと
+さとう,としひこ
+さとう,やすふみ
+さとう,つよし
+さとう,せいじ
+さわだ,つねのり
+さわだ,やすひろ
+さわだ,しんご
+いわた,ひさはる
+さわい,ゆひち
+さわい,よしあき
+さやの,たかかず
+せき,りえこ
+せきぐち,とおる
+せきぐち,ゆひち
+せきぐち,はるお
+せきね,しんいちろう
+せきの,のぼる
+せんな,こうじ
+せりざわ,だいすけ
+せと,あきら
+しばた,けいたろう
+しばた,ともこ
+しばた,じゅんじ
+しばたに,ともき
+しぶたに,けいたろう
+しが,まこ
+しげのぶ,みちよ
+しま,まゆみ
+しまだ,としひこ
+しまだ,そういちろう
+しまむら,いくや
+しみず,たけし
+しみず,まさよし
+しもばやし,みか
+しもがわ,あきら
+しもひごし,あきひろ
+しもいで,たかし
+しなだ,としみつ
+しねい,ひろゆき
+しんがい,かつや
+しのだ,こういち
+しのはら,まさひで
+しのざき,けいすけ
+しおや,さとし
+しらはま,きょこ
+しらいし,さとる
+しらいし,かずよし
+したら,みきこ
+しょじ,れいじろ
+しょじ,さとこ
+ますやま,よしみつ
+しゅと,たけかず
+そえだ,さだみち
+そね,きよし
+そねだ,こうじ
+そのべ,てつひさ
+そのべ,たいし
+そらの,かつみ
+すだ,ゆか
+すがい,ただし
+すがわら,こうじ
+すぎもと,たかひろ
+すぎもと,ともよし
+すぎうら,たくや
+すぎやま,たろう
+すぎやま,ゆひち
+すぎやま,たかし
+すじゃく,たけし
+すか,ひろゆき
+すけがわ,しん
+すみなが,まさひで
+すみおか,ゆみこ
+すなやま,ひでかず
+すずき,ひでき
+すずき,たくお
+いしい,まさひろ
+すずき,まさし
+すずき,みほ
+すずき,なおひろ
+やましろ,のりゆき
+すずき,せいま
+すずき,たかひろ
+すずき,たかまさ
+すずき,よしのり
+すずき,まさひろ
+たばこ,ひでまさ
+たばた,れいこ
+なかじま,たかやす
+たばた,とおる
+たちばな,ひろゆき
+たがみ,きみこ
+ままだ,ともや
+たがわ,けんいち
+たじま,まさや
+たかばやし,ひろし
+たかだ,やすひこ
+たかだ,しげる
+たかぎ,たかゆき
+たかぎ,ひでひろ
+たかはし,ひでき
+たかはし,ひろし
+たかはし,じょ
+たかはし,かつゆき
+たかはし,かずのり
+たかはし,こういち
+たかはし,くみこ
+わたなべ,まさき
+たかはし,てるゆき
+たかはし,よしつぐ
+たかはし,としゆき
+たかはし,たいせい
+たかい,けんじ
+たかくら,まこと
+たかくら,もとひろ
+たかまち,ゆき
+たかまつ,ともよ
+まつなが,たかひろ
+たかもと,えみ
+たかむら,だいすけ
+たかおか,しんや
+たかすぎ,ゆきお
+たかや,ひろき
+たかやま,ひろこ
+きたはら,いずる
+たけだ,まさき
+たけだ,みしょ
+たけはな,まき
+たけまつ,やすし
+たけおか,ゆたか
+いしかわ,こへい
+たけした,まさふみ
+たけたに,ひでき
+たけうち,けんすけ
+たけうち,しほ
+たけやま,かつのり
+たけざわ,あきよし
+たきざわ,やすひろ
+たきざわ,よしき
+たまい,のぶかつ
+たなはし,ご
+たなか,はるこ
+たなか,ひであき
+たなか,ひろゆき
+たなか,けんいち
+たなか,くにひで
+たなか,まさひろ
+たなか,まさかつ
+たなか,まさみ
+たなか,みのる
+たなか,もとふみ
+たなか,なおき
+たなか,のぶゆき
+たなか,さとし
+たなか,さとし
+たなか,たけし
+たなか,きよじ
+いしだ,つとむ
+たなか,ちから
+たにぐち,ともゆき
+たにぐち,のぶゆき
+たにい,けんたろう
+たにむら,こすけ
+たにおか,ひろゆき
+たんの,ひろし
+たぬま,けいこ
+よこやま,もとき
+たしろ,せいじ
+たしろ,かずひと
+たて,ゆうこ
+たうら,えいいち
+たぞえ,えいじ
+たずけ,つねひろ
+てんも,まさひろ
+てらだ,のりひろ
+てらもと,かずなお
+てらおか,のぼる
+てずか,けんや
+とぐち,かずお
+とま,しげる
+とま,けんいち
+とひゃま,ゆりこ
+ときおか,みちよ
+たにやま,ともこ
+みうら,ゆきお
+とくら,まもる
+とくやま,わたる
+とみいし,あきら
+とみかわ,けんいち
+とみなが,ひでと
+とみた,まこと
+とみた,ゆうこ
+おもり,まこと
+ともた,かよこ
+ともの,ちえこ
+とりかい,えいじ
+とりうみ,けい
+とつか,ひろゆき
+とよだ,じゅんこ
+とよだ,こういち
+とよおか,ひろやす
+つちだ,かずゆき
+つだ,たかしげ
+つじたに,ひであき
+つかもと,そひち
+つかもと,かずお
+つかわき,ひろや
+つるまき,くにひこ
+いちばんがせ,のりこ
+さかい,あつし
+うちだ,ふみえ
+かなおか,もとよし
+うちだ,まさゆき
+うちうみ,ひでひこ
+うちやま,けいじ
+うちやま,なおき
+うだ,よしのぶ
+うだがわ,あやこ
+おしま,けいいち
+うえだ,みきひろ
+うえだ,たくのぶ
+うえはら,こうじ
+うえむら,こういち
+うえの,まさつぐ
+うえの,よしてる
+うえすぎ,ひろあき
+うえつき,まさたか
+うかわ,ようこ
+うまずめ,ゆきこ
+うめはら,みほこ
+うめむら,かずひろ
+うめざわ,こへい
+うの,たつや
+うの,なおひこ
+うらもと,ふみたか
+うるま,ゆき
+うしば,あつこ
+ながた,たろう
+うしぐさ,あつこ
+はせがわ,えいか
+さかまき,よしみつ
+うわべ,ひでゆき
+わだ,まさき
+わかお,おさむ
+わかお,ひろのり
+わきた,まさみ
+いのまた,たいち
+わくい,まさひで
+わしざわ,しんや
+わしずか,としお
+わたべ,ひろふみ
+わたなべ,ひろし
+わたなべ,ひろし
+わたなべ,ひさや
+わたなべ,けい
+わたなべ,まさふみ
+わたなべ,みのる
+わたなべ,りゅた
+わたなべ,としあき
+わたなべ,よしあき
+わたなべ,ゆり
+とよた,まさゆき
+わたり,あきこ
+とみやす,けいじ
+やえがき,れいこ
+やぎ,ようこ
+やぎ,ひろみ
+やぎぬま,まさや
+やく,けいこ
+やまだ,こうじ
+やまだ,まさとし
+やまだ,のりゆき
+やまぎし,かずひろ
+やまぐち,しげる
+やまぐち,たかお
+やまぐち,つよし
+やまぐち,ともゆき
+やまこし,だいち
+やまもと,ひでき
+やまもと,ひろかず
+やまもと,ひろみ
+やまもと,ひとし
+やまもと,けいこ
+たちばな,としひさ
+やまもと,よしあき
+やまもと,みよこ
+はらたに,よしまさ
+やまなか,だいすけ
+やまね,あきと
+やました,かずひこ
+やました,まき
+やました,ようこ
+やまたに,あつし
+やまうち,こういち
+やまざき,としゆき
+やな,かおる
+やなべ,あきら
+やながわ,だいすけ
+やなぎ,まさひろ
+やなぎだ,けんじ
+やさか,たけお
+やすだ,せいいち
+やすふく,しゅじ
+やすかわ,まさとし
+よこさわ,じゅん
+よこた,けんいち
+よこた,ともこ
+はらだ,たかし
+よこうち,よしふみ
+よこうち,あきひこ
+よこやま,ひろし
+よこやま,なおこ
+よねだ,たかし
+よねの,ともこ
+かさはら,あきら
+よしだ,ひろあき
+よしだ,ひろき
+よしだ,りょ
+よしだ,としあき
+よしだ,りゅひち
+よしどめ,かずひで
+よしはら,まさみつ
+よしい,ゆたか
+よしい,きよかず
+よしかわ,たくや
+よしみ,ひろし
+よしの,かずひろ
+よしの,こすけ
+よしの,まさひろ
+よしおか,しんすけ
+よしおか,まこと
+よしたけ,かずのぶ
+よしざわ,なおき
+ゆずはら,なおみ
+ぜんげ,さとみ
+ずし,ひでお
+ごみ,じゅん
+ごと,ひろし
+いけだ,なおと
+いまじょ,ひろし
+あべ,しずか
+かとう,たかひろ
+かわばた,さとる
+こばやし,まこと
+こんど,しおり
+くぼ,たいき
+くらもち,ふみお
+まるやま,やすし
+もりかく,ともこ
+むらおか,けんいち
+ながしま,こういちろ
+なか,ただし
+なかはら,としかつ
+なかむら,こうじ
+なかせ,かずたか
+なりた,みお
+にしむら,ひろき
+のなか,ひろし
+おがわ,たけはる
+おぐら,まさひろ
+おみ,まなぶ
+おかの,しげる
+しまだ,しげる
+しみず,ゆきひこ
+しむら,くにむね
+たかはし,まさひこ
+たかまつ,ようこ
+うえだ,よしあき
+うじ,ゆきお
+うつみ,ひろゆき
+あべ,ようこ
+こんど,としや
+たかのうち,たくや
+いのうえ,つよし
+なかはら,とみ
+あだち,ひさえ
+なかの,えみこ
+あいば,ひでなお
+あいば,よしお
+あいば,とおる
+あいだ,まこと
+あいはら,まさや
+あかいし,じゅんじ
+あかいわ,かずのしん
+あかおぎ,ひでゆき
+あきた,みつまさ
+あまの,けんいち
+あおき,むつお
+あおき,ご
+あおぬま,しゅひち
+あおやぎ,よひち
+あらき,たかし
+ありまち,けんさく
+ありた,むねひろ
+あさだ,ひとし
+あさえだ,ゆたか
+あさはら,ひろき
+あさかわ,のりあき
+あさもと,たけし
+あさの,さとし
+あたぐち,まさひろ
+あやき,あつし
+ばば,まさおみ
+ばば,よしひろ
+ばば,としひで
+ばん,つよし
+だいこく,なおこ
+だて,ひろこ
+さの,ゆきこ
+みつおか,ひとし
+でんだ,えいじ
+どい,あきら
+えんど,としのぶ
+えんど,ひであき
+えざわ,てつや
+ふじえ,たかひろ
+ふじい,よしはる
+ふじい,かずひこ
+ふじまき,つとむ
+ふじもと,ゆたか
+ふじもと,ひろし
+ふじむろ,はるこ
+もろずみ,しゅんすけ
+ふじさわ,かおる
+ふじた,ななこ
+ふかせ,たけし
+ふくだ,みちよ
+ふくどめ,しげひこ
+ふくい,じゅにち
+ふくなが,しげき
+ふくしま,かずひこ
+ふくざわ,えみ
+ふるばやし,ともひこ
+ふるかわ,よひちろ
+ふるかわ,なりひで
+ご,たけふみ
+ごまる,かずひろ
+ごと,まさあき
+ごと,まさかつ
+ごと,みわ
+のもと,みきお
+はぎわら,こうじ
+はいやま,かんじ
+はま,けんじ
+はまち,ひろゆき
+はまだ,たつや
+はまたに,しせい
+はない,たかし
+はなた,ひさし
+はねじ,ふみひさ
+はんざわ,ひでお
+はら,まりか
+はら,あきら
+はらだ,ひでき
+はらだ,あけみ
+はせがわ,はな
+はせがわ,すすむ
+はせがわ,しょ
+はしぐち,たつや
+はしもと,ちずか
+ごと,かおる
+かじわら,りゅた
+はすみ,きょこ
+かたやなぎ,かずみち
+はたけやま,しゅひち
+むらい,なおひさ
+はたに,しげお
+はっとり,やすひと
+はっとり,ひらく
+はやし,ひろこ
+おすみ,まさひこ
+はやし,みほ
+はやし,しんじ
+はやしだ,かずひで
+ひが,きよし
+ひがし,ゆたか
+ひがしだ,なおこ
+とよだ,てつや
+ひの,まさよし
+ひら,やすゆき
+ひらもと,けい
+ひらお,よしこ
+ひらお,つぐのり
+ひらた,えいいち
+ひらやま,しんいち
+ひろい,みつゆき
+ひろかわ,りゅひち
+ひろかわ,やすのぶ
+ひろます,たかゆき
+ひろせ,たかゆき
+ひろせ,まさこ
+ひしや,かずなり
+ほしょ,よしのぶ
+ほんだ,さき
+はやし,たけお
+ほんま,りゅすけ
+ほりぐち,しゅひち
+ほりい,ゆひちろ
+ほし,たけひこ
+ほそい,てつや
+ほそみ,じゅんこ
+ほった,まさと
+ふくろい,まさゆき
+ふるや,なおみ
+いぶか,たけし
+いちば,たかし
+いちはら,のりかず
+いちかわ,よたろう
+いちむら,かずゆき
+いちのせき,みつる
+いいだ,たかお
+いいだ,さとし
+いいじま,あきこ
+しのはら,みほこ
+いけだ,のぞむ
+いけだ,たけし
+いけだ,てるお
+いけだ,ひろみ
+いけざわ,あきひこ
+いまい,かつや
+いまい,やすお
+いまい,まさひで
+いまき,けんじ
+いまむら,あきひと
+いもと,そひち
+あべ,たかし
+いなだ,ひろし
+いのうえ,ひろし
+いのうえ,じゅにちろ
+いのうえ,としひろ
+いのうえ,としや
+いりえ,じゅんこ
+つるおか,ようこ
+おはし,はじめ
+いしだ,りえ
+いしだ,ゆき
+いしだ,ゆたか
+いしだ,ようこ
+いしぐろ,かずたか
+いしはら,まゆみ
+いしはら,けいた
+いしい,くにひこ
+いしかわ,みのる
+いしかわ,けんすけ
+いしわた,しょひち
+いとう,よしやす
+いとう,ゆきこ
+いとやま,ともひろ
+いつき,たかし
+いわき,まさひこ
+いわさき,かずお
+いずつ,よしひこ
+じぶ,ひとし
+かどい,ひさとし
+あだち,ゆうじ
+かい,けんじ
+かいせ,こうじ
+かいずか,はじめ
+かじわら,よしき
+かき,しげお
+かきみ,じゅんこ
+すぎた,みつひこ
+かくたに,まさのり
+かみばやし,あきら
+かみがき,まさのり
+かみや,たかし
+かもだ,あきこ
+かもと,としお
+かんばやし,かずひろ
+かねこ,こうたろう
+かねこ,たけし
+かねこ,ゆうじ
+かねこ,えみこ
+かにさわ,てるやす
+かる,けんじ
+かしわぎ,たかゆき
+かすみ,ひろあき
+かたぎり,ひろこ
+かとう,ひろし
+かとう,かつとし
+かとう,こうじ
+かとう,れいき
+かとう,やすこ
+たぐち,かつひこ
+かとう,のりひで
+かとう,さとし
+かとう,こういち
+かつら,たもつ
+そご,もとひろ
+かわひと,しんご
+かわい,みつや
+かわかみ,くにひこ
+かわみ,みつお
+かわむら,たつや
+かわむら,たかゆき
+かわさき,てつや
+かわさき,よひちろ
+かわうち,なおゆき
+かつき,みつひろ
+きだ,あつし
+きどころ,ゆうこ
+もり,のぶお
+きくち,たつろ
+きくがわ,じゅんこ
+きむら,けんじ
+きむら,こう
+きむら,しん-いち
+きむら,あきら
+きのした,けん
+きのした,まこと
+きのした,りえこ
+きのした,こうじ
+きしだ,しげる
+きしかわ,しんじ
+きた,てるき
+きたぐち,ひろし
+あまの,ともかず
+きたむら,まさあき
+きたやま,あきとも
+こばやし,へいじ
+こばやし,ひろし
+こばやし,けんじ
+こばやし,まこと
+こばやし,みえ
+こばやし,みつひろ
+あめした,さとる
+こばやし,たけし
+こばやし,たくみ
+こばやし,とよき
+こばやし,よしあき
+こばやし,よしはる
+こばやし,ゆかり
+こばやし,ゆきこ
+おだ,まさひこ
+こぼり,としお
+こだいら,けいすけ
+こだま,みちよ
+かわぐち,まなぶ
+こだて,ちひろ
+こが,なおと
+こが,もとのり
+こがねまる,ひろゆき
+こはら,やすてる
+こだ,ともあき
+この,じゅんじ
+こざい,なおき
+こいけ,こういち
+こいずみ,ひろみ
+こじま,けんじ
+こじま,きよたか
+こまつ,まゆみ
+こもり,だいすけ
+こんど,たかひろ
+こんど,まさひこ
+こんた,ひでみ
+こたか,のぶひろ
+こたけ,せいじ
+こやま,あつし
+くぼ,みつる
+くぼき,のりゆき
+くぼた,あきら
+くが,まさみ
+くまがい,ともなり
+くにもり,けんいち
+くらもと,まなぶ
+くらさわ,こういち
+くらしな,あきお
+くらた,まさお
+くりもと,やすろ
+くりた,けん
+くろだ,たかし
+くろだ,よしたか
+くろかわ,とものり
+くろき,いさむ
+くろさき,けんいち
+くろさわ,みつのり
+くりゅ,まさき
+くわた,とろく
+くずみ,ひろし
+まぶち,いくこ
+まえだ,よひち
+まえだ,たつじ
+まえがわ,やすなり
+まえかわ,よひち
+まきお,じゅん
+まめはら,あつし
+まさだ,かつひと
+ますだ,さとし
+ますだ,たけお
+ますだ,よしまさ
+ますだ,としかず
+ますやま,ひであき
+まつだ,しんご
+まつだ,つよし
+まつえだ,りょひち
+まつい,ひろゆき
+まつもと,けんじ
+まつもと,まさひこ
+まつもと,たかひろ
+まつもと,たくみ
+まつもと,やすひろ
+まつもと,けいし
+まつなが,あきひこ
+まつの,やすとし
+まつの,せいいち
+まつおか,あきひろ
+まゆみ,ひろゆき
+めかた,よすけ
+めら,ひろし
+みたに,たかし
+みたに,ともこ
+みと,りつこ
+みやがみ,むつみ
+いおき,なおみ
+みやもと,つよし
+みやむら,たかまさ
+みやの,けんたろう
+みやうち,けいじ
+みやざき,せいいち
+もちずき,ゆひち
+ももい,しゅひち
+もり,ようたろう
+もり,まさゆき
+もりもと,やすひこ
+もりもと,しんいち
+もりおか,みちこ
+もりさわ,あきら
+もりた,ひろき
+もりた,こうじ
+もりた,たろう
+もりた,みちひと
+もりやま,ゆみこ
+もりやま,しげひさ
+もてぎ,まさあき
+むらかみ,あきひろ
+あさの,ともゆき
+あゆかわ,たかあき
+むらお,まさはる
+むらおか,まさかつ
+むらた,ゆき
+むしあけ,ひでまさ
+むた,ゆか
+なべい,くみこ
+ながい,よひち
+ながい,むつこ
+ながみね,けんじ
+ながさわ,ともひろ
+ながた,かずよし
+ながやま,ひろのぶ
+なぐら,あきひこ
+ないとう,しんや
+なかがわ,たかし
+なかがわ,たつひこ
+なかがわ,とおる
+なかがわ,まさあき
+なかはら,けんご
+なかい,さとし
+なかい,だいすけ
+なかじま,しげる
+なかじま,ともかず
+なかじま,えみこ
+さわだ,ひさし
+なかむら,まさひろ
+ばんば,こういち
+なかむら,まさこ
+なかむら,さゆり
+なかむら,ただし
+なかむら,てつお
+なかむら,てつや
+なかむら,ゆみこ
+なかむら,ひろし
+なかの,りゅじ
+なかの,ゆみこ
+なかお,やすし
+なかしま,まさひろ
+なかた,たかこ
+なかた,しげる
+なかやま,たかひろ
+なかやま,とおる
+なかやま,ゆみこ
+なかやま,かつや
+なかざわ,みえこ
+なかざわ,あきのぶ
+ながおか,てつや
+ななしゃ,ひでひと
+なりた,こういち
+なりた,まさのり
+なす,かずお
+なすた,まり
+にし,たけし
+にしだ,あきひろ
+にしむら,ふみこ
+まさだ,ひろかず
+にしむら,のぶゆき
+にしむら,やすひろ
+にしお,こういち
+にしやま,あきこ
+にった,なおやす
+のがみ,ひろふみ
+のなか,あきひろ
+のせ,けいこ
+のたべ,かつや
+のと,けいすけ
+のて,ゆたか
+ぬくい,よしひろ
+おち,つよし
+おちあい,まこと
+おだ,たけし
+おがさわら,ひろし
+おがわ,かねのぶ
+おがわ,のぶゆき
+おがわ,さちお
+おがわ,たけひこ
+おがわ,ともこ
+おがわ,まさゆき
+おぎの,よしただ
+おば,みなこ
+たきみや,かおり
+おはし,やすひろ
+おはし,たかひろ
+おひ,ひでお
+おかわ,しんご
+おもり,じゅにち
+おむら,ひろき
+おなかはら,まさひろ
+おにし,あきひこ
+おの,としゆき
+おほか,よしかず
+おしま,ゆうじ
+おしま,よじ
+いけまつ,こうじ
+おた,まさひこ
+おた,まさや
+おた,なおたけ
+おた,ともみ
+ふくだ,まこと
+おぜき,まさひで
+おいだ,ゆきお
+おいじ,ただゆき
+おかだ,たくみん
+すぎもと,ちさと
+おかざき,えみ
+おかざき,じゅんか
+おかざわ,まゆ
+おくだ,たけつぐ
+おくだ,よしのり
+おくだ,あきこ
+おくむら,たかし
+おくむら,のぶ
+おくの,けんいち
+おくやま,たかこ
+おの,たけし
+おぬき,たかし
+おはし,さちこ
+とひゃ,たみこ
+おとぐろ,みえ
+ぇえ,けいいち
+さいご,ひとし
+さいとう,くにひろ
+さいとう,しんじ
+さいとう,たかゆき
+さいとう,やすひろ
+さいとう,やすし
+さいとう,ひとし
+さいとう,てつや
+さかえだに,ちゅんぁん
+ちぇん,まさき
+さかい,しげる
+さかい,ひでひと
+さかた,こうたろう
+さかた,あきひろ
+さくま,なおみ
+さくらばやし,ひでのり
+さくらい,としお
+さくた,まさひろ
+ささき,のぶゆき
+ささき,たかあき
+ささき,たけひろ
+ささき,よしたろう
+ささめ,あきひさ
+さとう,ふみひこ
+さとう,ひろき
+さとう,ひろし
+さとう,じゅん
+さとう,かんじ
+さとう,みか
+さとう,もとゆき
+さとう,のぶやす
+さとう,とくじろ
+さとう,つよし
+さとう,かずひこ
+さとう,たかひろ
+さとう,あつし
+さわだ,まつお
+さわはし,よしあき
+さわの,まさかず
+せぐち,あきら
+せき,さちこ
+せきぐち,よしゆき
+せきぐち,よひち
+しば,かずのり
+しばた,まさひこ
+しばた,よしひろ
+しぶや,よしろ
+しまだ,はじめ
+しみず,ひろみ
+いしかわ,ひろし
+しみず,こうじ
+しみず,しょじ
+しみず,やえ
+しみず,くみこ
+ふじえだ,ひろやす
+しもやまだ,りえ
+しながわ,たかね
+しんや,たつゆき
+しおみ,かずひろ
+しおつ,しゅへい
+せきぐち,ともこ
+つのだ,よしひろ
+しらさか,さとし
+しろした,かおり
+したら,あやこ
+しょ,まさはる
+すがわら,たかし
+すがわら,しゅじ
+すぎもと,かつゆき
+すぎた,たかゆき
+すぎた,ともひろ
+すぎた,かつゆき
+すぎうら,けんじ
+すぎうら,けんたろう
+すぎやま,こういちろ
+いけぞえ,しんいち
+すぎやま,ともひで
+すか,みつのり
+すけがわ,しんじ
+すみのうえ,かつひこ
+すみよし,とおる
+すみよし,たかし
+すなみ,あつお
+すずき,ひろゆき
+すずき,ひさし
+すずき,じゆにち
+すずき,みほ
+すずき,さとし
+すずき,しょひち
+すずき,ともかず
+すずき,まさより
+しょじ,かつひこ
+しょじょ,さとこ
+たばた,とよひさ
+ただ,みずほ
+たどころ,まさとし
+たがみ,ひろあき
+たぐち,ともゆき
+たぐち,のぶよし
+たい,ひでき
+たいら,たねかず
+たいさ,としみつ
+たじま,ひろゆき
+たかだ,やちよ
+たかだ,まもる
+たかぎ,あきひろ
+たかはし,あきら
+たかはし,ひろあき
+たかはし,いっぺい
+たかはし,まさと
+たかはし,のぶあき
+たかはし,しず
+たかはし,しょたろう
+たかはし,そういちろう
+たかはし,としお
+たかはし,ひでゆき
+たかい,こうじ
+たかの,たかし
+たかしま,ひろあき
+たかやま,まさてる
+たけだ,あつし
+たけいち,みつひろ
+たけまさ,きよし
+たけむら,ただなお
+たけむら,えつろ
+たけなか,てつろ
+たけした,あつや
+たけうち,ひろし
+たけうち,とおる
+たけうち,なおき
+たきかわ,さとし
+たききた,ゆうじ
+たきざわ,としお
+たこ,ゆすけ
+たかの,なおき
+たまがわ,よしふみ
+たまき,しのぶ
+たむら,かんこ
+たなべ,なおや
+たなべ,ひでつぐ
+たなか,かずよし
+たなか,けいすけ
+たなか,けんいち
+たなか,しほ
+たなか,しゅんすけ
+たなか,なおと
+たに,しょぞ
+たにぐち,あつと
+たにしょ,ひとし
+たてやま,えいいちろう
+たつみ,あつし
+たうら,たかし
+たざわ,ひでと
+たずけ,よしき
+てらだ,もとゆき
+とま,ひろゆき
+とひゃま,おさむ
+とめおく,かずたか
+とみいえ,ひろのぶ
+ふたつぎ,ふみお
+ともとし,きょへい
+とねがわ,きょこ
+おくむら,みほ
+とししげ,よしひさ
+とよだ,ようこ
+とよなか,まさよし
+つばき,かずなり
+つちもと,のぶひろ
+つだ,しんご
+つだ,よしふみ
+つだ,ますみ
+つじい,たかとし
+つじむら,ともゆき
+つかはら,せいいち
+つのだ,けいこ
+つるぎ,かずひろ
+つるた,かずひろ
+つしま,あきお
+つつい,はやと
+つちだ,ひろし
+うちだ,けんじ
+うちだ,あきこ
+うちくら,のりひこ
+うちたに,ひろし
+うえだ,かずなり
+うえだ,まさや
+うえだ,てつや
+うえだ,ふみお
+うえむら,さとし
+うえの,かよ
+うえつき,としえ
+いけ,ともたか
+うめだ,のりこ
+うめむら,としろ
+うのき,しょじ
+うらした,はるひこ
+うらた,てるひこ
+うしお,きぬよ
+うたがわ,ひろゆき
+わだ,かつゆき
+わだ,さとる
+わだ,たくじ
+わだ,たけし
+わがつま,かつこ
+わかまつ,さきこ
+わきた,ちえ
+わこ,がく
+わりかた,あきのり
+わしず,ひろこ
+わたなべ,ひろし
+わたなべ,まき
+わたなべ,まさる
+わたなべ,みほ
+わたなべ,なつこ
+おむら,のぶひこ
+わたなべ,ともこ
+わたなべ,ともゆき
+わたなべ,よしお
+わたなべ,てつや
+やぎ,ともこ
+やぎ,あきひと
+やまだ,ひろたつ
+やまだ,まさひろ
+やまだ,しょひち
+やまだ,ゆうじ
+やまだ,ひろあき
+やまふく,ひろかず
+やまぐち,なおゆき
+やまぐち,しょ
+やまぐち,しゅんじ
+やまぐち,よしゆき
+やまじ,としお
+やまかわ,がく
+やまもと,ひろふみ
+やまもと,ひろひで
+やまもと,こせい
+やまもと,なおこ
+やまもと,りゅひち
+やまもと,てつろ
+やまもと,ともみ
+やまもと,ゆうこ
+やまもと,たかと
+やまな,のりとし
+やまさき,ひでふみ
+やました,しげお
+やました,たけひろ
+やまざき,ひでお
+やなぎ,まりこ
+やの,よじ
+やしろ,ようこ
+やすい,ひろかず
+やすむろ,とおる
+やすうじ,こうじ
+よこえ,たかのり
+よこい,けんいち
+よこみぞ,みつぞ
+よこやま,ゆきこ
+よねざわ,ひろやす
+よしだ,こうじ
+よしだ,まさき
+よしだ,ゆうじ
+よしだ,ゆたか
+よしだ,せいいちろう
+よしい,かつみ
+よしむら,のりとし
+よしやま,とおる
+よしざわ,ひろし
+ふじしま,りょ
+ゆあさ,けんたろう
+ゆき,たけし
+ゆき,ふとし
+ゆい,たかし
+あだち,よしゆき
+ばん,ひでのり
+ふるい,まや
+はせがわ,きよしげ
+ひらかわ,まさひこ
+いとう,かずひこ
+いわさき,けんや
+かとう,のぶひろ
+かわはら,かつや
+まえはら,かずあき
+まつたに,ともみ
+もりいち,しげと
+にしうち,てるかず
+ふじまき,えいじ
+おはら,さちこ
+さなだ,けんたろう
+そね,けい
+とのむら,せつこ
+しみず,あきよ
+みしま,だいすけ
+ふじた,なおたけ
+ふじた,たかし
+ふじた,よしのり
+ふじわら,はじめ
+ふじゅ,まなぶ
+ふかだ,としひこ
+ふくだ,りょじ
+ふくひさ,けんじ
+ふくざと,よしみつ
+ふくざわ,おさむ
+ふるさわ,しげお
+はがわ,えいじろ
+はぎ,のぶゆき
+はらだ,たいぞ
+はらだ,たかし
+はらだ,ひであき
+はらまき,つとむ
+はせがわ,よしゆき
+はせがわ,けい
+はしお,まりこ
+はすみ,たろう
+はすみ,ひでき
+はっとり,よ
+いしかわ,こうじろ
+はやし,しんいち
+ひらの,たくや
+ひらの,ゆたか
+ひらの,なおたか
+ひろべ,あや
+しのだ,たかし
+ひさだ,きはる
+ほじょ,たかし
+ほんご,ひろたか
+ほし,みつる
+ほしの,のぶひろ
+ほそかわ,まき
+ほその,なおこ
+かとう,りえ
+いぎ,ひであき
+いけだ,ゆか
+いくろ,ひろし
+いまい,けんいちろ
+いなだ,よりこ
+いのぐち,ぶんぺい
+いしぐろ,たかこ
+いしかわ,たくや
+いしかわ,かずあき
+いしざき,としあき
+いしぜき,ひでき
+いとう,けんじ
+いとう,たかゆき
+いとう,たけし
+いとう,てるひこ
+いまがわ,みちこ
+いざわ,まさき
+いずみ,ひろかず
+いずみだて,ゆみ
+かぶらぎ,よしろ
+かみやま,ようこ
+かなやま,としゆき
+かなざわ,のりひろ
+かんばら,かずよし
+かんだ,こへい
+かんだ,たかゆき
+かねこ,つぐかず
+かしむら,ひろき
+かたぎり,けんじ
+かとう,ゆかり
+かとう,よしと
+かわだ,てつや
+かわすみ,まさよし
+きど,なおき
+きくち,よしみ
+きもと,けい
+きむら,こうじ
+きんど,しょじ
+きたむら,のりとし
+きたの,かおり
+きたわたせ,とおる
+きった,こうじ
+きやま,じろ
+きよた,かつよし
+こばやし,ゆうこ
+こばやし,みすまる
+こが,なりとも
+こはら,ひろし
+こじな,しんすけ
+この,ひろのり
+こずか,のぶひさ
+こいで,はるみ
+こまつ,ようこ
+こみなと,しゅにち
+こもり,のぶひろ
+こんど,たくや
+こにし,けんた
+くぼやま,みちはる
+くまがい,みほ
+くまた,さだお
+くりはら,すすむ
+くりはら,やすこ
+くりた,せいじ
+くさの,ひろゆき
+くしだ,じゅんじ
+まえだ,ようこ
+まき,あつや
+まきた,たかゆき
+まるやま,けん
+ますだ,けいご
+まつばら,まさき
+まつばら,しんじ
+まつい,りゅすけ
+まつもと,しゅうじ
+まつむら,さとこ
+まつお,ひろひこ
+みかみ,のりこ
+みき,ただあき
+みのうら,りょじ
+みしま,たかこ
+みつなが,たけし
+みうら,けいこ
+みわ,さとし
+みやお,ひろふみ
+みやた,あきひこ
+みずたに,ゆき
+みずたに,けいすけ
+もちずき,しんじ
+もちずき,つねお
+もちずき,だいち
+もぎ,ちから
+もり,ひでとし
+もり,けいこ
+もり,まさゆき
+もり,しんたろう
+もり,かずひろ
+もりやま,みつお
+もろおか,たかあき
+もとば,せいじ
+むねと,けんいち
+むらい,よしゆき
+むらおか,まさのり
+むろい,たかのぶ
+ながふじ,やすはる
+ながい,かなう
+ないとう,かずひこ
+ないとう,ひでのぶ
+なかがわ,みつる
+なかはら,くみこ
+なかじま,のぶゆき
+なかじま,ひろし
+なかむら,さとる
+なかむら,ただひこ
+なかむら,ただゆき
+なかむら,ともひさ
+なかむら,としき
+なかむら,としお
+なかむら,ゆき
+やまだ,だいさく
+なかお,かつまさ
+なかつかさ,よしこ
+なかやま,けん
+なむら,ひでひろ
+なすの,きみひと
+にいぜき,あきら
+にしかわ,ゆきこ
+にしきおり,たろう
+にしざわ,みのる
+のあき,みやこ
+のだ,ゆたか
+のだ,まさひこ
+のぐち,たけし
+のむら,ひろし
+おちあい,あや
+もり,あきら
+おがさわら,あきら
+おがさわら,あつし
+おがわ,ひさと
+おがわ,たかし
+おがわ,えいじ
+おぐら,きよし
+おぐら,まり
+おひし,むねゆき
+おかわ,なおき
+おかわ,としはる
+おかぜ,こぞ
+おき,よしあき
+おむら,かつのり
+おすみ,ようこ
+おた,けんたろう
+おたけ,ゆうこ
+おたに,ひさし
+おひゃま,ひでき
+おぜき,こすけ
+おかもと,まりこ
+おかむら,みつひさ
+おかむら,たつし
+おくむら,りょこ
+おんだ,たかひろ
+おのでら,やすひさ
+おやべ,ふみのり
+さが,まさき
+さいとう,ひろや
+さかい,としあき
+いぎ,じゅんこ
+さかもと,なおき
+さかもと,てつや
+さかつぎ,あつし
+さかうえ,まさひろ
+さくま,ふみひこ
+さくら,てつじ
+さなだ,けん
+ささき,けんじ
+ささき,ひろし
+さとう,じゅん
+さとう,こしん
+さとう,まもる
+さとう,まなみ
+さとう,のりひこ
+さとう,のりゆき
+さとう,たかのり
+さとう,としあき
+さとう,ゆうこ
+さとう,さなえ
+せいけ,あきのり
+せき,ひさね
+せき,よしひろ
+せき,かずお
+せきぐち,けんじ
+せた,まりこ
+しんがい,えいき
+しばた,よしひろ
+しばた,たけお
+しぶき,なおや
+しげとみ,かつゆき
+しが,たかひろ
+しいば,としあき
+しまだ,しゅういち
+しまかわ,ひでひさ
+しみず,かつひろ
+しみず,きょこ
+しみず,やすひと
+しみず,かずひで
+しもむら,さとみ
+しもむら,まさのり
+しおじり,よういち
+しおざわ,てつや
+しらい,てつ
+しらかわ,たけし
+そまん,としお
+そひゃ,あきこ
+そのだ,よしこ
+すだ,ゆきのり
+すがの,じろ
+すがぬま,かずみつ
+すがわ,ひろし
+すぎうら,みか
+すぎやま,いちろう
+すずき,しげる
+すずき,すすむ
+すずき,たかつな
+すずき,おさむ
+しょじ,たかし
+たぐち,たかし
+たいら,あきら
+たじま,ひろし
+たかだ,あやこ
+おかやま,ゆうこ
+たかぎし,ふみえ
+たかはし,じん
+たかはし,まさと
+たかはし,まゆみ
+たかはし,ともはる
+たかはし,けんいち
+たかき,さとし
+たかおか,せいいち
+たかおか,きょすけ
+いまいずみ,ともひろ
+たかさわ,けん
+たかす,こうじ
+たけい,あつし
+たけなか,しんいちろう
+たけざき,てつや
+たまいし,かつや
+たまき,ただと
+たなか,りえ
+たにぐち,たかのり
+たうち,あさこ
+てらみつ,みかこ
+とだ,しんいちろう
+とみなが,やすし
+とみた,まさよし
+とんぐ,とおる
+つねかわ,きょこ
+つつい,よいち
+うちだ,たくや
+うちはし,ひろゆき
+うえだ,よしお
+いとう,たかし
+うえだ,つよし
+うえはら,せつこ
+ふじた,たけし
+うめだ,よしこ
+うめはら,ひであき
+うらべ,しげる
+わたべ,あきら
+やがさき,なおき
+やぎもと,ひろなお
+やじま,だいすけ
+やまだ,まや
+やまだ,しんいちろう
+やまだ,あきよ
+やまぐち,ひでとし
+やまぐち,ひろふみ
+やまもと,かつよし
+やまもと,たけし
+やまもと,たくお
+やまもと,まさひこ
+やまね,よひち
+やまさき,ひろし
+やました,ひであき
+やまざき,しほ
+やまさき,てつや
+やながわ,やよい
+やなぎだ,ひさこ
+おの,やすし
+やなぎさわ,すみか
+やざき,ひろし
+やざわ,かつみ
+よこやま,みちこ
+よこやま,たかし
+よも,みかこ
+よしだ,さとこ
+よしだ,ともこ
+よしだ,やすひろ
+よしはら,やすひろ
+よしはら,なおき
+よしもり,こうじ
+ぜっつ,かずひろ
+あべ,はるのり
+あだち,かずき
+あいかわ,まさゆき
+あかえ,としや
+あんどう,たけし
+あさみ,やすお
+いまなか,ひでのぶ
+べっぷ,やすし
+べっぷ,なおき
+ちかはら,せいじ
+ふじい,ひろこ
+ふじさき,たけし
+ふくしま,きょじ
+くろだ,ひでお
+もり,ゆうじ
+なかむら,はるひこ
+わたなべ,あゆみ
+くろだ,まさひで
+みやうち,たかし
+いとう,ひでよ
+いいだ,よしただ
+かわの,こうじ
+あいうら,ひろふみ
+のざき,みちこ
+びたに,まき
+たにあい,みさ
+あおき,はるよ
+おき,ゆすけ
+あおき,ひろあき
+あおやぎ,おさむ
+あかにし,みつとし
+あさお,たかゆき
+あさくら,あずさ
+あしざわ,としみ
+あたく,まさひで
+あだち,しゅひょ
+いとう,たかえ
+しまもと,あさこ
+さいとう,じゅんこ
+しのはら,きくこ
+おかの,まゆみ
+おかもと,まい
+ひらかわ,としお
+すがぬま,てるあき
+あなざわ,あやみ
+あらい,だいすけ
+あらい,じゅにち
+あらかわ,きさく
+あらかね,かずゆき
+あらき,けんた
+あんどう,なおひろ
+いうち,まさひこ
+いけだ,かえ
+いけや,かずき
+いしかわ,ひろし
+いしかわ,ゆうこ
+いしかわ,ゆり
+いしかわ,あとむ
+いしがき,まさる
+いしぐろ,かつみ
+いしはら,ひでこ
+いそむら,ひろし
+いたがき,よごろ
+いいだ,ともみち
+いちかわ,みのる
+いちかわ,としかず
+いで,きんや
+いとう,ゆみこ
+いぬい,あきこ
+いのうえ,しげのり
+いまにし,ひろひさ
+いまはやし,まこと
+いわさき,やすひろ
+いわさき,まさき
+いわもと,ひろし
+うえの,まさみ
+うえの,ひろし
+うちいけ,こういち
+うちやま,ひろし
+うめだ,かおる
+うめむら,まさき
+うめもと,くみこ
+うるしばら,きよみ
+えぐま,しろ
+えら,そよ
+おうさか,よしとし
+おかわ,いたる
+おさわ,ひろふみ
+おしま,まきと
+おしま,のぶひろ
+おすが,むねたか
+おたに,しんいち
+おつ,まさつぐ
+おつか,まゆみ
+おね,けいいち
+おの,えいじ
+おはし,かずのり
+おはし,よしあき
+おばやし,よしたか
+おひょし,しゅじ
+おかもと,さよ
+おがさわら,ちほこ
+おがわ,よしひこ
+おくたに,えり
+おくむら,なおや
+おぐら,まさたか
+いいかわ,まさみつ
+おぐら,まさひこ
+おざわ,よしたか
+おざわ,まなぶ
+おの,たつひこ
+かきもと,ひでき
+かきもと,まさふみ
+かげやま,ただひさ
+いしかわ,まさゆき
+かそり,あきら
+かつみ,けんいち
+かとう,けんご
+かとう,しんじ
+かとう,たかゆき
+かとう,ただゆき
+かとう,よしこ
+けずか,ひでのり
+かどわき,ご
+かねこ,ゆうこ
+かの,ひろこ
+かみやま,けんいちろ
+かわしま,さとし
+かわせ,たかのり
+かわの,ひでひこ
+かわもと,やすのり
+かわもと,れいこ
+かわせ,ひろし
+かんだ,ともみ
+きくち,ひろし
+きくち,やすひと
+きくち,なおき
+きたあらし,なおこ
+きたおか,のりこ
+きたじま,しげのり
+きたむら,だいすけ
+きたむら,けいじ
+きてら,あきら
+きのした,みつしろ
+きむら,あきひろ
+きりう,のりこ
+くさかべ,ひろかず
+くぼた,ひろゆき
+くまがい,さとる
+くまの,かずき
+くりはら,まさたか
+くるしま,しん
+なかがわ,なおき
+こいで,ひでとし
+この,ひさゆき
+こもと,あきこ
+こが,のぶお
+こじま,まいこ
+こにし,みゆき
+こばやし,あきひろ
+こまつ,たけみ
+こみや,あつし
+こんど,さとし
+こんど,じゅんこ
+ごと,たかひろ
+さいとう,たけし
+さいとう,まえこ
+さいとう,こすけ
+さかもと,けんじろ
+さくま,さり
+しみず,まさと
+さだちか,あきよし
+さと,ちか
+さとう,ひでき
+さとう,まさし
+さとう,ゆうこ
+さとう,くにはる
+さわだ,たいじ
+いそわ,かよこ
+しもじょ,せいう
+しゅ,けいいち
+しおかわ,しんや
+しおざわ,さとし
+しかうち,つとむ
+しずり,だいすけ
+しの,たつや
+しのざき,こうじ
+しのだ,ひでき
+しのだ,たけお
+しばざき,としかず
+しばた,なおき
+しまむら,けいじゅ
+しみず,さよこ
+しみず,じゅん
+しみず,ひとみ
+しみず,みか
+たきたに,かつゆき
+しらの,じゅんじ
+すえひろ,まさひこ
+すがい,たかあき
+すがよし,まさや
+すがわら,あやの
+すぎうら,まさひこ
+すぎしま,みつる
+すぎもと,たけし
+すずかわ,てつじ
+すだ,じゅんじろ
+すみかわ,ますみ
+すみの,ゆきこ
+せきぐち,あきひと
+そえじま,さおり
+たおか,のぼる
+たかき,みまこ
+たかしま,ゆうじ
+たかせ,さとし
+たかはし,しんいちろう
+たかはし,ゆひち
+たかはし,たかゆき
+たきたに,けん
+たけうち,みきお
+たけうち,けんじ
+たけだ,しげふみ
+たけだ,のりあき
+たけだ,しゅんすけ
+たけむら,ひさし
+たご,よしえ
+たきざわ,あきよし
+たなか,かつあき
+たなか,こうじ
+たなか,しげみ
+いわの,やすなり
+たなか,ただし
+たにえ,きょこ
+たにぐち,しんいち
+たにぐち,きよたか
+たにまつ,かつや
+たばた,たつや
+たまき,えいいち
+いせもと,なな
+たみや,ひろぶみ
+ちゃもと,けんわ
+ちん,ただゆき
+つかもと,けいいち
+つちはし,いくひこ
+てらさわ,なおひさ
+とじょ,まさこ
+ふくしま,ちかこ
+とば,ようこ
+とみよし,りょすけ
+とむろ,けんじ
+とよしま,かずしげ
+とりやま,ひろし
+ないとう,さだよし
+いで,かずえ
+はた,じょじ
+なかがき,ひろし
+なかがわ,みわこ
+なかざわ,たつや
+なかで,じょ
+なかはら,あき
+たけうち,ふさし
+なかむら,よひちろ
+なかむら,ようこ
+なす,むねひろ
+にいむら,たつや
+にしおか,みちこ
+にしかわ,なおし
+にしざわ,きょこ
+にしと,ひとき
+にしの,なつひこ
+にしはら,じゅにち
+にしむら,なおゆき
+ねもと,ひろゆき
+のぐち,みちかず
+のぐち,ふさお
+のじり,みき
+のじり,たかこ
+のむら,よしこ
+はった,しょこ
+はしば,あつし
+はしもと,かつひさ
+はしもと,さとし
+いのうえ,たけし
+はしもと,ひろし
+はせがわ,としひろ
+はた,ひであき
+はた,あきら
+はたの,しげる
+はやし,やすこ
+はやし,こうじ
+はらだ,なおき
+はらだ,くにもり
+ばば,さちよ
+ばば,えみ
+ひぐち,まさや
+ひぐち,よしなお
+ひさき,たかひろ
+ひじり,かずひこ
+ひらやま,あきこ
+ふくだ,ちかこ
+ふじい,ゆか
+すがい,いちろう
+ふじた,きよし
+ふじた,たかこ
+ふじた,けんいち
+ふじたに,かずき
+ふじなみ,よしかつ
+ふじの,まいこ
+ののむら,ひろゆき
+ふせ,くみこ
+すぎもと,ともこ
+ほそかわ,けんいち
+ほりうち,ひろふみ
+ほりかわ,あすか
+まきの,のぶひこ
+まきの,きょこ
+ましこ,ごじ
+ますだ,えり
+ますぶち,たかゆき
+ますぶち,まゆみ
+まつい,ひろふみ
+まつざわ,さとみ
+とみなが,かずや
+まつなが,ゆきこ
+まつなが,のぶこ
+すずき,さとし
+まつむら,しげゆき
+まつもと,たつゆき
+まつもと,かつじ
+まつやま,たてる
+まつやま,よひちろ
+まつやま,たつお
+まつよし,なおみ
+まの,ひろあき
+まるおか,いくこ
+みかみ,のりひこ
+みき,としひこ
+みぞぐち,かずや
+みた,たかし
+みね,あきひろ
+みねお,まきこ
+さとう,まさと
+いくた,たかし
+みやざき,よしこ
+たかぎわ,ゆき
+みよし,やすじ
+むかい,けいいち
+むらかみ,ひでふみ
+いしだ,ともひさ
+むらかみ,のりこ
+むらかみ,こうじ
+むらやま,てつや
+むらやま,あきこ
+むろい,せいじ
+もたい,としやす
+もとき,ようこ
+もとむら,ひろき
+もり,まさみ
+かせ,みのる
+もりした,ちあき
+もりた,さとる
+もろとみ,かつのり
+もろはし,あや
+かわもと,ひでき
+やぐち,しげる
+やじま,ようこ
+やすかわ,みつたか
+やすだ,まさあき
+やつずか,つかさ
+やなぎさわ,さとし
+やまぐち,かずたか
+やまさき,こうじ
+やまざき,まこと
+やまざき,まさたか
+やまざき,かずまさ
+やまだ,かずや
+やまだ,こうじ
+やまだ,かつひろ
+やまなか,あきよし
+くりはら,かずひろ
+やまもと,なおき
+やまもと,ひでのぶ
+やまもと,ゆきこ
+まつお,ひろのり
+よぎ,てるひこ
+よこやま,なおこ
+よこやま,ひろし
+よしかわ,まさひと
+よしかわ,まりこ
+よしだ,ゆき
+わくい,きんや
+わたなべ,たかや
+わたなべ,ひろゆき
+わたなべ,よしこ
+わたなべ,せいじろ
+はやし,けんたろう
+やまだ,なおき
+わかばやし,たかのり
+いわむら,しゅひち
+わたなべ,まさき
+くわしま,まさこ
+おばた,しんたろう
+あなざわ,やすし
+やぎ,ますみ
+あかお,ちとせ
+しみず,ひでき
+さかもと,ようこ
+あおき,なおひで
+あずま,よしこ
+いいだ,こうじ
+いけうち,てつや
+いしかわ,けんたろう
+いそがい,しほ
+いとう,よしひと
+いば,まなぶ
+いわもと,たかし
+うえさか,のぶや
+うえの,さとし
+うえひら,のりまさ
+うちやま,のぼる
+うめない,すぐる
+えむら,さとみ
+おきた,ひかる
+おくぼ,こすけ
+おたに,ともかず
+おつ,なつこ
+おつか,ひでのぶ
+おかしろ,しげあき
+おだ,こういち
+おの,えな
+かとう,めばえ
+かねひさ,てつお
+かみや,まこと
+かわい,ただひろ
+かわおか,あずさ
+きたの,しんじ
+きぶし,たけひろ
+きむら,まもる
+きむら,けんご
+くさか,けんじ
+くば,すすむ
+くぼた,たかひろ
+くろいわ,じゅにち
+くわばら,ひろし
+こいけ,あや
+こいたばし,ひろこ
+こだ,よしみ
+こだ,しろ
+こしむら,あつし
+こやなぎ,ひろみ
+はとり,よしゆき
+さかうえ,なおこ
+あべ,おさむ
+さとう,たくよし
+さとう,ひでき
+さとう,じゅにち
+しまだ,つへ
+いまい,まさたか
+すがぬま,まさこ
+せき,さとみ
+せの,たかし
+あべ,しろ
+たかすが,しんじ
+たかすぎ,えいじ
+たかはし,すみお
+たかはし,つかさ
+たかはし,ひでお
+たかはし,まさたけ
+たかはし,あつし
+たきもと,ひさこ
+たくぼ,ゆうこ
+たけうち,さわ
+たけなか,こういち
+たなか,やすみつ
+たなか,まゆみ
+たばた,よしお
+たみや,りえ
+たむら,かつあき
+ちゅま,ちよ
+ほんご,あきひろ
+なかお,たかやす
+なかがわ,まさはる
+なかぞの,まゆみ
+なかの,のぶこ
+にった,ともみ
+にわ,けんたろう
+のじ,あきひと
+はざの,こうじ
+はしもと,ひさみ
+はしもと,ゆうた
+はやし,よしゆき
+はやし,ともこ
+はらぐち,ゆきひこ
+はるぐち,もといち
+ひらで,ちずる
+ひらの,かつゆき
+ひらやま,たけし
+ふかざわ,れいこ
+ふくます,ひろたか
+ふくもり,ゆうこ
+ふじかわ,のぶあき
+ほしの,こういち
+ほその,ひでのり
+まつおか,みつひろ
+まつむら,はな
+みずかみ,りょひち
+みつい,ひろあき
+みのかみ,たかし
+みやもと,とおる
+むらかみ,ゆうこ
+むらかみ,ちおり
+やた,とこ
+やなぎた,たかし
+やまぐち,としお
+やました,いさむ
+やまもと,まさたか
+よしたけ,ゆき
+よしむら,ひろみ
+ひぐち,かよ
+はしもと,まさる
+わたなべ,しげる
+あきば,のりこ
+あきもと,あきひと
+あまや,よしなり
+あんどう,なみこ
+あんざわ,てつろ
+あさはた,たいすけ
+ばば,としゆき
+べっしょ,たつし
+ちかもと,きょひょ
+ちょ,けいこ
+ふじひら,なおこ
+ふじい,みのる
+ふじたに,こうじ
+ふかだ,みちお
+ふるだて,ゆひちろ
+ふるやま,ひでのり
+ごだ,えり
+こいけ,たけし
+はかまだ,あつし
+はせがわ,ゆき
+はしもと,たけひこ
+はった,みつよ
+はっとり,まさる
+はやかわ,てつろ
+はやかわ,のぶひろ
+ひぬま,かずひと
+ひろき,みちひと
+ほりのうち,てるひと
+ほその,さおり
+ふじおか,だいすけ
+ふるた,みわこ
+ふさの,けいこ
+ふしみ,よしかつ
+いたど,まさあき
+いだ,なおき
+いはら,ひろゆき
+いいだ,きよのぶ
+いなやま,よしゆき
+いの,こぞ
+いのうえ,たかお
+いしだ,こういち
+いしもと,けんいち
+いしわ,たかひろ
+いしわたり,ひろき
+いたくら,なるつぐ
+いとう,たくや
+いとう,ともひで
+いわい,ゆうじ
+いざわ,あつこ
+じぶ,ひでき
+かばやま,なるき
+かい,けん
+かきぬま,おさむ
+かきざき,ひとし
+かくだ,まさひろ
+かながわ,けい
+かんべ,たかひろ
+かんだ,ひろかず
+かさだ,じゅにち
+かわい,めぐみ
+ささき,よしつぐ
+かわせ,やすよし
+きもと,みつる
+きたはら,ひろかつ
+きたむら,なほこ
+こばやし,たかひろ
+こぶけ,しゅひち
+こいずみ,ななこ
+こみやま,
+こんのかずひろ,すぐる
+こしかわ,まさき
+この,ゆうこ
+くぼ,じゅん
+くぼかわ,まさき
+くどう,しゅすけ
+くりはら,しん
+くろぎ,たけお
+まちだ,やすひと
+まじま,みちたか
+いしず,ともこ
+まかべ,いくえ
+まるやま,さほ
+ますだ,みきね
+まつがさき,のぶお
+まつい,よしお
+まつい,ひろえ
+まつもと,ゆうこ
+まわたり,かなこ
+みちもと,まりこ
+みき,やすひと
+みつま,たかゆき
+みうら,こういち
+みわ,まさのぶ
+みやもと,なつき
+みやもと,ともか
+みやもと,かついち
+みやた,さえこ
+むらかみ,はるみ
+たはら,やすこ
+みずたに,のりゆき
+もり,ひろよ
+もりぐち,ひであき
+もりかわ,かよ
+もりもと,あきら
+もりた,たけし
+むらかみ,さおり
+あでがわ,けんじ
+ながさか,かんじ
+ながた,としひろ
+ながた,すみこ
+いざわ,たかのり
+なかみね,けいご
+なかむら,まこと
+なかむら,かつひさ
+いもと,やすのぶ
+なかむら,たけのぶ
+なかお,まさし
+なかやま,とおる
+なかざわ,のりこ
+なみき,ともか
+にいみ,ゆき
+にいぜき,まさひこ
+にしで,ひろし
+にわ,かずみ
+のべ,れいこ
+おた,たつひこ
+おがわ,あい
+おぐす,ひかる
+おもと,じゅり
+おしま,かつのぶ
+おた,かおり
+おひゃ,まもる
+いしかわ,ひろのり
+おかだ,たつや
+おく,こういちろ
+おくだ,たけし
+おしくぼ,ゆうじ
+おぜき,うしん
+らい,きよし
+いとう,はるよし
+さいき,あきひろ
+さいとう,かおり
+よしだ,ひであき
+さこ,ひでき
+ささじま,みさ
+ささき,しげあき
+さとう,まさよし
+いわもと,ゆすけ
+さとう,しょじ
+さわだ,たかのり
+せきかわ,けんいち
+せきね,ひみこ
+しばた,よ
+しげはら,たけし
+しまおか,ふみゆき
+しみず,まさき
+しもじょ,けんいち
+しもむら,かつひこ
+しむら,ゆうじ
+そめや,ともや
+すえよし,ひろし
+すずき,たつや
+すずき,みちやす
+たかだ,しげみつ
+たかはし,じゅんや
+たかせ,ゆきこ
+たけだ,つぐひで
+たけい,かずひこ
+たけもと,ちえこ
+たまい,ひでやす
+たむら,いずみ
+たむら,みつお
+いしかわ,なおき
+たなか,しんや
+たなか,あきひこ
+たにぐち,かずひろ
+たにぐち,まさあき
+たにぐち,たかし
+たにぐち,たかひさ
+いしだ,あきひこ
+たにした,けんいち
+てらにし,ひでゆき
+とひゃま,なおき
+とみた,いちろう
+とねがわ,じょ
+とよだ,まなぶ
+とよた,あきら
+つちや,ひさよし
+いしかわ,はじめ
+つむら,としひこ
+つのかわ,たかゆき
+うちだ,さとる
+うさみ,ひとし
+わじま,こういちろ
+わたなべ,まさひろ
+わたなべ,たけのり
+わたなべ,ひろたか
+やぎ,けんじ
+やぎ,けん
+やくわ,あつし
+やまだ,ふみの
+やまだ,つよし
+やまぐち,きょこ
+やまのくち,みわ
+やました,たく
+やました,のりこ
+やまざき,しゅじ
+やまざき,よしこ
+やながわ,なおき
+やすだ,としあき
+やすえ,よしみ
+いそがい,ひとし
+やたがい,たけし
+よしだ,りこ
+たかはし,まき
+おかだ,よひち
+あおき,やよい
+あきば,けいいち
+あべ,きょこ
+あまの,ひろふみ
+ありもと,ひろき
+あんどう,たかゆき
+いかわ,としゆき
+いしい,まさこ
+いしかわ,こういち
+いしずか,なおゆき
+いしばし,ひでゆき
+いしもと,ゆたか
+いで,たつろ
+いちのせ,とよあき
+いなだ,ともゆき
+いぬい,ただのぶ
+いのうえ,えり
+いやま,りょこ
+いわさき,まさき
+いわま,しゅひち
+いわまつ,まさる
+うえだ,あきこ
+うえの,あきこ
+うちだ,まさお
+うど,しゅじ
+うめはら,ゆき
+えぐち,たいへい
+えのき,のりひろ
+えもと,なおこ
+えもり,ゆみ
+なかがわ,しゅんすけ
+おた,りょすけ
+おがた,さとこ
+おがわ,さとし
+おがわ,まなぶ
+おくい,やすよ
+おくむら,まみこ
+おたに,こうじ
+おつとも,みずまさ
+おにざわ,かずこ
+おの,おさなお
+おばな,ひろこ
+おまがり,ひろき
+かきざわ,たかお
+かけひ,けんじ
+かさはら,たかし
+かじ,とみさぶ
+かじた,よしこ
+かじた,みつもと
+かじやま,せいや
+かとう,なおあき
+かなだ,ひでゆき
+かねこ,やすし
+かねこ,のぶたか
+いたの,れいこ
+ながつま,たくじ
+かの,もとこ
+かまえ,てるあき
+かわい,ゆきこ
+かわまた,しげき
+かんの,のりあき
+きうち,せいいちろうう
+きし,まさや
+きたがわ,てつひろ
+きのした,えりこ
+きょがく,まどか
+くぼ,おさむ
+くぼた,たかお
+くぼた,たかお
+くりはら,みのる
+くりやま,よしのぶ
+いしがき,けい
+くろい,のぶかつ
+こうさき,りょた
+こだ,けんすけ
+こばやし,しゅへい
+こばやし,せいじ
+こばやし,なおき
+こばやし,てつお
+いのうえ,ひろき
+さいほ,まいこ
+さかがわ,いずみ
+かわむら,ようこ
+ささおか,とものぶ
+ささき,なりとし
+さとう,まこと
+さとう,とものり
+さなだ,たくや
+さるやま,しんぺい
+しおつ,りえ
+しおのや,けいこ
+しおやま,としふさ
+しぎはら,いつろ
+ししど,こういち
+しのざき,あつし
+しばた,のぶあき
+しみず,てつや
+しょの,ゆすけ
+しらき,こうじ
+すぎおか,のぶあき
+すぎはら,なるひろ
+すずき,ようへい
+すずき,ゆたか
+すみやま,ようこ
+せった,のぼる
+いしわた,のりかず
+せんごく,まなぶ
+たかおか,おさむ
+たかざわ,けんいち
+たかはし,えいすけ
+たかむら,しのぶ
+たきと,のぼる
+たなか,ひろゆき
+たなか,くにお
+いとう,かずひと
+たなべ,みのる
+たにぐち,
+ちゃわんやたけし,しんいち
+てらさか,ひろゆき
+ところ,みつかず
+なかい,きよしげ
+なかお,ひさてる
+ながおか,しげゆき
+なかがわ,せいじ
+なかじま,まさき
+ながせ,だいじゅ
+なかの,みのる
+なかの,ゆみ
+ながの,たかしげ
+いけだ,あやこ
+なかむら,たかゆき
+なかやま,ひでき
+にお,かず
+にしお,あきこ
+にしかい,じゅんじ
+にしざか,けんじ
+にしだ,まなぶ
+にしだ,よしはる
+いいじま,ひろき
+にしはら,じゅにち
+にしむら,たかし
+ねろめ,しんじ
+のじま,みほ
+のなか,もとあき
+はしば,すひち
+はちや,たつや
+はっとり,せいた
+いいだ,じょじ
+はぶ,ゆうこ
+はやかわ,あきこ
+はやし,まりこ
+はやしま,かつとし
+はら,じゅにち
+ひがしだ,のりこ
+せきぐち,としみつ
+ひらい,よしこ
+ひろすえ,だいすけ
+ひろはた,たかし
+ふくしま,まさき
+ふじお,かずゆき
+ふじた,かずや
+ふじまき,ひろし
+ふじわら,さねひろ
+ふるいち,だいすけ
+ほさか,のりかず
+ほしの,たかひろ
+ほり,こ
+ほりもと,ひろゆき
+ほんま,まこと
+まえかわ,てつろ
+まえだ,なおこ
+まえだ,ひでし
+まえだ,たくみ
+まさい,まさる
+まつい,きょひち
+まつざわ,かおり
+まつだ,ひろゆき
+まつとも,たくや
+まつなが,みつお
+まつもと,てんぺい
+みずぐち,ゆういちろう
+みやもと,ゆきひこ
+みやもと,とおる
+むらかみ,ゆすけ
+むらかみ,たけし
+むらなか,こうじ
+もちずき,ゆきこ
+もとくら,ゆうじ
+もり,ゆきのぶ
+もりや,たけはる
+やすい,たかひと
+やすだ,みきお
+やすだ,たつや
+やた,くみ
+やたき,ひでのぶ
+やち,ちから
+やの,たかゆき
+やまいずみ,まさなお
+やまおか,けんじ
+やまぐち,よすけ
+やまぐち,ともたか
+やまざき,まゆみ
+やまざき,やすじ
+やました,かずひで
+やまもと,まさひろ
+よこぜき,さとし
+よしだ,たくや
+よしの,ともこ
+よしみ,くにかず
+よだ,ほまれ
+よだ,たいげん
+ら,みきこ
+ろじ,きよひと
+わだ,かずひろ
+わたなべ,のぶお
+わたなべ,ふみひこ
+わたなべ,ひろし
+わたべ,よしあき
+かの,まさき
+にった,やすひろ
+あおき,よしのり
+あおき,あきお
+あおやま,なな
+あおやま,まいこ
+あきば,けん
+あさだ,たいち
+あだち,なおと
+あだち,やすお
+あとべ,たかし
+あべ,たかひろ
+あべ,ひろあき
+あべ,ともき
+あまの,ふみあき
+あまの,まみ
+あらかわ,ゆきお
+ありた,ひでき
+ありとも,かずお
+あんざい,たかし
+いとう,たかとし
+あんどう,おさむ
+いがらし,しゅう
+いけだ,はなこ
+たかはし,まさあき
+いしばし,ぬい
+いしむら,けいいち
+いしもと,まりこ
+いちい,ともみ
+いちかわ,ゆうこ
+いちかわ,はると
+いちのせ,かつひこ
+いとう,のぶお
+いとう,まゆみ
+いとう,まき
+いなおか,じゅにちろ
+いなば,りょうすけ
+いぬずか,ようへい
+いのうえ,ひろし
+いのかわ,ひであき
+いまい,よじ
+いましゅく,りえこ
+いわい,みおこ
+いわしま,いずみ
+うえぞの,あつお
+うえだ,ただし
+うえはら,ゆみこ
+うえはら,まりこ
+かきた,けいこ
+うさみ,ひろと
+うちだ,まきこ
+うちだ,きよし
+うちぼり,あきひろ
+うめがい,まさる
+うめつ,りさ
+うめの,まさふみ
+うらかわ,ひろたけ
+うらべ,まゆみ
+えぐち,ひでおみ
+えずみ,しゅんすけ
+えのもと,たけし
+いまにし,りょ
+えのもと,ともひこ
+えんど,しゅいち
+おいかわ,めぐみ
+おいかわ,たかひろ
+おひ,たかゆき
+おひし,もとこ
+おた,けん
+おつか,ひじり
+おにし,ひろき
+おにし,あやこ
+おかだ,みさと
+おかだ,かずえ
+おかの,あきひこ
+おかべ,たけし
+おかべ,ゆき
+おかむら,しげひさ
+おかもと,ただし
+おかもと,いくよ
+おがわ,たろう
+おがわ,ひろゆき
+おくだ,ふみこ
+おくだ,よしき
+おざき,まさき
+おの,ゆきふみ
+おやま,よじ
+かいずか,まさはる
+かがみ,ふみかず
+かきた,しんすけ
+かく,かつあき
+かさい,みちえ
+かじい,やすお
+かじた,まさる
+かたえ,ゆき
+かたやま,よしひろ
+かつ,ひであき
+かとう,りょう
+かとう,みき
+かみじょ,みゆき
+かねこ,たえこ
+かまだ,とおる
+かみじょ,けん
+かみひさ,てつや
+かみもと,まみこ
+かみや,なおこ
+かみやま,たかし
+かわかみ,としふみ
+かわさき,えりか
+かわせ,かおる
+かわはた,こうじ
+かわはら,ゆきのり
+かわむら,あかね
+かわもと,なおや
+かわもと,ゆうじん
+かわもと,みつこ
+かんだ,とおる
+きくち,たく
+きたがわ,だいすけ
+きたなが,あつこ
+きたの,くにひと
+きたむら,かずひろ
+きたもと,よしてる
+きのえ,ゆうじ
+きぶせ,かおり
+きむら,かずお
+きむら,まき
+きもと,ますみ
+きもと,ひとし
+ぎょうぶ,ひろかず
+くに,たけちか
+くにまさ,じゅんこ
+くまさか,かずひろ
+くらしげ,けいすけ
+くりた,ひろし
+くりはら,みちお
+こいけ,たけし
+こいけだ,えり
+こいずみ,まさぶみ
+こいぬま,さかえ
+こつか,しんご
+こが,たつや
+こしもと,つとむ
+こだま,ひろし
+こだま,たかえ
+ごと,じゅにち
+こにし,ともき
+こばやし,ひでゆき
+こばやし,ゆり
+こばやし,ひろこ
+こばやし,みほ
+こまき,みえこ
+こまば,たいせつ
+こみや,あきお
+こやま,こひゃ
+こやま,たけし
+さいき,めぐみ
+さいご,たつろ
+さいとう,ひろし
+さいとう,みちこ
+さいとう,かずあき
+いがらし,しげき
+さえぐさ,ひろみつ
+さかい,たいちろうう
+さかがみ,まさかず
+さかね,ありよし
+さかもと,ともこ
+さかもと,よしじ
+さくらい,まさき
+さくらだ,やすたか
+さこん,ひでひと
+ささき,たつや
+ささはら,かずのり
+さとう,かつひこ
+さとう,まさのり
+さとう,やすのり
+さとう,ともひさ
+さの,みわこ
+さわ,けんじ
+しぶや,てつお
+しぶや,いさむ
+しまだ,しょうご
+しまだ,なみ
+しまだ,あきら
+しみず,いちろう
+しみず,だいき
+しみず,とものり
+しみず,まこと
+しみず,ひろみ
+いのうえ,りょうじ
+しも,まさひろ
+しょだ,ななえ
+じんの,わかこ
+じんの,げん
+しんまち,じゅにち
+すぎい,けんご
+すぎおか,なおと
+すぎもと,ひであき
+すずき,けんご
+すずき,ただし
+すずき,ひでお
+すずき,まなえ
+すずき,ひでたけ
+せお,やよい
+せき,ゆきお
+いしはま,だいすけ
+そのだ,ひでき
+たい,あきの
+たかいわ,なおゆき
+たかぎ,けいすけ
+たかはし,さとし
+たかはし,しげのり
+たかはし,まこと
+たかはし,りゅうじ
+たかはし,たけし
+たかむく,まさなお
+たぐち,たかひこ
+たけうち,みちのり
+たけかわ,かずひら
+たけわ,だいすけ
+ただまつ,かずひろ
+たたら,ひろしげ
+たなか,ゆういちろう
+たにもと,のりこ
+たねむら,そう
+たはら,けんと
+たむら,こうたろう
+だん,よしあき
+いいだ,きよし
+ちば,ゆうじ
+ちょとく,まきこ
+つかはら,のぶゆき
+つつみ,まきこ
+つもり,たけし
+てらした,あきひこ
+どい,けんし
+どい,ひろこ
+どい,よしこ
+としま,まさし
+ないとう,しんじ
+なかい,ひでき
+なかい,こうじ
+なかお,たかし
+なかがわ,ゆうじ
+ながさき,あきふみ
+なかじま,さとし
+なかじま,ひろし
+なかしま,たかゆき
+なかだ,むねのり
+なかはら,えいすけ
+なかむら,ひでゆき
+なかむら,ひろゆき
+なかむら,まこと
+なかむら,まりこ
+なかむら,ゆういちろう
+なかむら,ゆたか
+なかむら,よしえ
+ほしの,よういち
+なかもと,こへい
+いけだ,こうじ
+なかもり,まさひろ
+ながよし,しゅへい
+なではら,きほこ
+ななもり,ちあき
+ならさか,かおり
+なんば,たかふみ
+にし,のぞむ
+にしかわ,さなえ
+にしだ,きよこ
+にしむら,みなこ
+のぐち,じゅんぞう
+のだ,しゅうたろう
+のなみ,ゆり
+ののいちや,そういちろう
+のむら,みつひろ
+のもと,かつひこ
+はがや,ひでや
+はぎわら,としはる
+はく,あきこ
+はし,まさたか
+はしずめ,とおる
+はしば,たかまさ
+はせべ,ひろし
+はた,つとむ
+はたえ,ひろし
+はたの,ゆき
+はちの,つねあき
+はっとり,ひであき
+はやし,けんし
+はやしだ,ゆき
+はやふね,さとし
+はら,けんいち
+はらだ,すぐる
+はらだ,ますお
+いのぐち,ともひこ
+はらだ,ゆういち
+ひがしやま,なおゆき
+ひぐち,やすゆき
+ひご,ともひと
+ひだの,たかし
+ひまき,ゆうこ
+くらしげ,まこと
+いしはら,たかまさ
+ひらた,まさみち
+ひろさわ,みきと
+ひろた,あきよし
+ふかさわ,すすむ
+ふかざわ,ゆう
+ふかざわ,れいこ
+ふくむろ,あきら
+ふじい,よしあき
+いとう,たつじ
+ふじい,くみこ
+ふじなが,まさこ
+ふじなが,かつふみ
+ふじわら,たかゆき
+ふじわら,ようこ
+ふじわら,ひでき
+ふたつぎ,ひろし
+ふたつもり,ともや
+ふるはた,とものり
+ふるや,かずゆき
+へんみ,れいこ
+ほし,しげお
+ほしの,ゆきこ
+ほり,けいこ
+ほりえ,みきこ
+ほりおか,りえ
+ほりかわ,たかし
+まえふね,まさとも
+まきの,てつや
+ますだ,けいこ
+まつうら,みおこ
+まつした,けいじ
+まつもと,ふみこ
+いぐち,のりひろ
+まつやま,りえ
+まなべ,なおゆき
+まるやま,つよし
+みうら,しずか
+みき,のぶあき
+みつはし,まりこ
+みつべ,まさる
+みとべ,まいこ
+ちょとく,かつあき
+いけふじ,きみひろ
+みやざき,しんじ
+みやざき,あつこ
+みやした,ともひろ
+みやた,なみこ
+むこうやま,やすのり
+むらい,おくと
+むらかみ,たけし
+むらかみ,あきし
+むらた,ひでたか
+むらまつ,たかひろ
+もとき,まさひろ
+もとよし,ちの
+もみやま,なおゆき
+もり,みちる
+もり,たかゆき
+もりうえ,えいいち
+いのうえ,まさと
+もりうち,ひさや
+もりた,たまき
+やぎさわ,のぶよし
+やしま,まさはる
+やすだ,あきら
+やの,ようこ
+やの,たかし
+やまぐち,みちひで
+やまさき,みほ
+やまざき,まみ
+やました,みつあき
+やました,ともゆき
+やまだ,まさゆき
+やまな,じゅんた
+やまみち,せいいち
+いなか,えいじ
+やまもと,たかし
+やまもと,たけや
+やまもと,よしたか
+やまもと,あきのり
+ゆば,しんたろう
+よこたに,ゆうき
+よこやま,かずみ
+よしだ,こうじ
+よしだ,ふみひこ
+いわさき,みき
+よしだ,ただたか
+よだ,じゅん
+ぅお,ふみひこ
+わかまつ,のぶひこ
+わさ,けいじ
+わだ,あつし
+わたなべ,たつお
+いわくら,かな
+わたなべ,けいすけ
+わたなべ,げんた
+わたなべ,こうじ
+わたなべ,たくや
+わたなべ,ひでお
+わたなべ,むねたか
+わたなべ,ゆたか
+わたなべ,まこと
+おひ,よしお
+いいだ,かずひろ
+むかい,としかず
+ふみはら,としかず
+かわごえ,りょう
+くろかわ,えみ
+こうだ,あきひこ
+ふじた,みちえ
+こばやし,りょこ
+はまむら,かおる
+いわせ,けいぞ
+たけだ,えいいち
+おがわ,ひでゆき
+みずた,かずみね
+いいだ,しょたろう
+あいはら,ゆき
+あおう,しげる
+あおき,ひろゆき
+あおば,きよかず
+あきもと,としえ
+あさい,のぶひろ
+いしやま,ゆきこ
+あさお,たかし
+あさだ,かおり
+あさだ,まさはる
+あさの,ひろみ
+あさの,さとる
+あざみ,ゆうこ
+あすま,たけし
+あそう,かよ
+あだち,やすひろ
+あとみ,まさる
+あなみ,ひろあき
+あべ,さとる
+あべ,あつし
+あべ,やすこ
+あまの,としき
+あやべ,しんこ
+たけきた,ひろよし
+あらい,すすむ
+いつの,ゆうこ
+ありかわ,しゅんすけ
+ありた,えみこ
+あんじゅ,としき
+あんどう,けんたろう
+あんどう,ふじお
+いちのせ,ともひこ
+いいぬま,としゆき
+いうえ,しゅへい
+いがらし,ゆか
+いけうち,きょういち
+いけがみ,のりひろ
+いけだ,やすひさ
+いりた,まさおみ
+いけだ,まこと
+いけだ,まこと
+いけだ,まさとし
+いしい,たろう
+いしい,まなぶ
+いしい,まき
+いしおか,みきお
+いまい,よしのぶ
+いしかわ,こういち
+いしかわ,つよし
+いしぐろ,まさき
+いしだ,りゅた
+いせき,こずえ
+いちき,ひろゆき
+いちのせ,よしあき
+いちのみや,あきこ
+いとう,おりか
+いとう,みのる
+いなだ,たけし
+いなば,やすあき
+いはら,しゅひち
+いのうえ,しょいち
+いのうえ,じろ
+いのうえ,じゅにち
+いまいずみ,ともこ
+いまじょ,なおみ
+いまだ,しんいち
+いまず,たけし
+いまむら,りょへい
+いりたに,とものぶ
+いわき,ゆきひろ
+いわさき,たつゆき
+いわさき,たけし
+いわすぎ,まさと
+いわた,ともひろ
+いわはし,ふみたけ
+いわぶち,しんいち
+いわほり,のりこ
+うえだ,よしたか
+うえまつ,せいいちろう
+うすい,きよたか
+うすい,おさむ
+うちだ,のりこ
+うつみ,ともゆき
+うめだ,あつし
+うらの,さとこ
+えがわ,みお
+えざき,つよし
+えと,みつとし
+えのもと,たくじ
+えのもと,たつや
+えま,まり
+えんど,まな
+えんど,みか
+おいたに,しょしゅ
+お,いちろう
+おひ,なほ
+おへ,あきひこ
+おき,のぶえ
+おくぼ,たかし
+おさわ,ともいち
+おさわ,まさひろ
+いわきり,かおり
+おすみ,まきこ
+おた,ひでのぶ
+おた,やすひろ
+おつか,たけし
+おつか,あつこ
+おつか,けんじ
+おつき,はるひら
+おなか,あきら
+おにし,あきこ
+おぼ,ひさのり
+おま,よしまさ
+おむら,ゆき
+おむら,よしひろ
+いしい,かおる
+おもり,あきひろ
+おもり,あや
+おもり,ふみのり
+おわだ,いさお
+おかい,ひさし
+おかざき,わたる
+おかざき,もとひこ
+いけだ,みつひろ
+おかの,たかし
+おかべ,あきのり
+おかもと,こういち
+おがわ,ともひろ
+おがわ,じゅん
+おがわ,だいすけ
+おがわ,ようこ
+おがわら,まさこ
+おくはら,きよし
+おくやま,しのぶ
+おぐら,くみ
+きたむら,なおこ
+おざわ,よしひろ
+おち,ひろかず
+おの,のぶひさ
+おの,たかふみ
+おのでら,れい
+おばた,ともみち
+おやま,かずひと
+おんた,あきお
+いわた,えいいち
+かいぶき,うらら
+かきもと,えつこ
+かざぐち,ゆうこ
+かさざき,あきら
+かじ,りょひち
+かじむら,きよの
+かしわい,くにはる
+かしわばら,さとし
+かたくら,まこ
+かたやま,やすはる
+かつの,まりこ
+かど,しげみつ
+かとう,もとひろ
+いその,たかし
+かとう,ちか
+かとう,けんし
+かとう,かつよし
+かとり,ちずる
+かなさか,めぐみ
+かなざわ,たけし
+かなやま,ゆみ
+かねこ,まちこ
+かねこ,まさのり
+かねだ,よしひろ
+がみ,さおり
+かめおか,はるな
+からさわ,のりこ
+からしま,なおや
+かるいし,よしゆき
+かわい,まいこ
+かわい,たかのり
+かわかみ,ちえこ
+かわかみ,のぶゆき
+かわず,みどり
+かわなか,たかし
+かわの,しほ
+かわばた,あきよし
+かわべ,けんじ
+かわみ,もとひろ
+かんばし,みちこ
+かんばら,かなこ
+きしい,ゆきお
+きしだ,ともこ
+きたがわ,もとき
+きたしろ,ひろし
+きたはら,まなみ
+きたむら,あきてる
+きど,きよふみ
+きのした,いずみ
+えだ,なおゆき
+きむら,たかおみ
+きむら,まさみ
+きむら,けんた
+きよなが,あつし
+きよみや,えいすけ
+きりや,たかし
+いとう,なおや
+くしだ,しほ
+くじらおか,しんじ
+くにもと,みちこ
+くぬぎ,あつし
+くぼ,やすえ
+くぼさわ,あきひろ
+くぼた,まさき
+くめの,かずよし
+いしぐろ,よしかず
+くら,よひち
+くらさわ,ちえこ
+くらた,わかこ
+くろかわ,えい
+くろす,なつこ
+くろやなぎ,しげる
+いなとみ,あつし
+こいけ,のりみつ
+こいけ,たかお
+こいしかわ,まさき
+こいずみ,ともや
+こいずみ,きょこ
+こいで,だいき
+こずま,たけとし
+この,とおる
+こひゃま,あつし
+こり,まさき
+かつかわ,たかひろ
+こがの,のぶお
+こしい,たろう
+こしまる,ともあき
+こすぎ,ふみはる
+こせき,りょこ
+こたに,たかひさ
+こだま,まみこ
+こにし,さんしろ
+こにし,だいすけ
+こば,まゆこ
+こばたけ,わたる
+こばやし,ひでゆき
+こばやし,てるみ
+こばやし,のりまさ
+こばやし,まどか
+こばやし,まいこ
+なかむら,あつこ
+こばやし,だいき
+こぼり,たかひで
+こまつ,せいいちろう
+こやま,あきふみ
+こんど,ともひろ
+こんの,だいとく
+さいとう,まさし
+さいとう,まなぶ
+さいとう,やいち
+さいとう,せんじ
+いとう,たみこ
+さかい,ただし
+さかい,ともき
+さかい,けいいち
+さかきばら,あきこ
+さかぐち,やすゆき
+いわさき,よじ
+さかもと,まさや
+さかもと,よしお
+さかもと,よへい
+ささき,ひろこ
+ささき,くにひこ
+ささき,つよし
+ささき,つぎお
+いまはし,きょほ
+さつみ,たかこ
+さとう,ともえ
+さとう,あつこ
+さとう,ひろゆき
+さとう,ひろゆき
+さとう,ふきこ
+さとう,ちひろ
+さの,きよし
+いしぐろ,みねお
+さわやなぎ,としき
+しおた,いちろう
+しき,れいこ
+しげおか,のりお
+しげた,よじ
+ししど,じゅんこ
+しなだ,かつとし
+いで,こさく
+しばた,じゅんこ
+しばた,れな
+しばた,ひろみ
+しばた,たかゆき
+しまず,しんいちろう
+しまだ,ゆうじ
+しまず,ともくに
+しみず,まりこ
+しみず,こき
+しもはし,ゆみこ
+しもやま,しの
+じょじょ,ひでたか
+いとう,みつひろ
+すがた,けいすけ
+すがや,ゆうこ
+すぎた,れい
+すぎなか,まもる
+すぎもと,りか
+すぎやま,よしこ
+すぎやま,よしふみ
+すぎやま,ようこ
+すげの,ありひと
+すずき,りょ
+すずき,しゅいち
+すずき,もなみ
+すずき,よしさだ
+すずき,つねお
+いわさき,ひでただ
+すずき,くにえ
+すずき,ひろのぶ
+いちかわ,かおり
+せき,たかし
+せきぐち,きょこ
+せきや,のぶえ
+せこ,あきひろ
+せら,たかひろ
+そが,えいじ
+そが,ふみお
+いとう,かずな
+かみや,ゆうじ
+そんく,とおる
+たかき,ご
+たかぎ,こうじ
+たかさき,まさひろ
+いけだ,ひであき
+たかしま,こうじ
+たかの,ゆうこ
+たかの,ともふみ
+たかの,ようこ
+たかの,こうじ
+たかの,りか
+たかはし,まさよし
+たかはし,けいこ
+たかはし,けんじ
+たかはし,けんたろう
+たかはし,ひろゆき
+たかはし,ゆか
+たかまつ,えいこ
+たがみ,あきら
+たかみざわ,かすみ
+たからだ,としかず
+たきかわ,ゆみこ
+たきざわ,よしはる
+いいの,やすお
+たけい,ひとし
+たけうち,やすひと
+たけうち,けんいち
+たけきた,ひでき
+たけなか,まきこ
+たけのうち,なおひろ
+たけはな,よしひさ
+いとう,よしお
+たけもと,こへい
+たけもと,こういちろ
+たご,がく
+たさか,かな
+たじま,たかのり
+たしろ,ひろし
+たしろ,ひとし
+たたら,りゅき
+たちばな,しんいち
+いちむら,えみこ
+たていし,いわお
+たての,ゆみ
+たての,よしひろ
+たなか,しんいちろう
+たなか,たかきよ
+たなか,まき
+たなか,ふみお
+たなか,りょじ
+たなか,ふみ
+たなか,とくこ
+がみ,まさる
+たなみ,かずひこ
+たに,すすむ
+たにぐち,よしのぶ
+なかおか,ひろかず
+たにざわ,よしこ
+たにだ,ご
+たにもと,さなえ
+たのおか,あやこ
+たばた,さとし
+たはら,ゆき
+たむら,ひさし
+ちかざわ,だいぞ
+ちの,けんいちろ
+ちはら,まさひろ
+ちゅじょ,なおこ
+ちゅま,とおる
+つかだ,きょこ
+つかもと,やすし
+つかもと,ようこ
+つだ,まこと
+つちだ,つねお
+つちや,まみ
+つちや,ゆみこ
+つねき,ゆき
+でみせ,よしのり
+てらおか,のぶゆき
+いずみ,あきみ
+と,みえこ
+とじ,まさき
+としおか,みかこ
+とだ,ゆきひろ
+とびない,のりひと
+ともい,たかのぶ
+とやま,ひさの
+とよしま,さやか
+とよだ,けいいち
+とよはま,ひでたけ
+ながえ,のぶたか
+ながえ,ゆたか
+なかお,とものり
+なかお,まさお
+なかじま,せれな
+なかじま,あき
+なかじま,くみこ
+ながしま,たかし
+ながせ,かなこ
+なかぞの,あつし
+なかた,せいじ
+ながた,まさこ
+ながと,みすず
+なかにし,はなえ
+なかの,あきこ
+ながの,みねき
+ながの,あいこ
+ながの,こういち
+ながはら,たくや
+なかひがし,としお
+なかむら,けんじ
+いぬずか,しほ
+なかむら,ともひで
+なかむら,けんたろう
+なかむら,ともこ
+なかむら,よしたか
+なかや,つよし
+なかや,まり
+ならさき,こういちろ
+なりた,じゅんこ
+なりた,あさこ
+にいだ,よしひこ
+にしかわ,まりこ
+にしむら,げん
+にしむら,よしこ
+にしむら,ひろき
+にしやま,たかし
+にしやま,てつや
+にむら,よしゆき
+にわ,めぐみ
+ぬまた,きふみ
+ぬまた,ともかず
+ぬまだ,ふみき
+ねぎし,ひとし
+のざき,みほ
+のがみ,まさかつ
+のだ,ゆたか
+のはら,けい
+のぶはら,のぶなり
+はが,りゅた
+はぎわら,よしこ
+はぎわら,ともあき
+はしずめ,いわお
+はしもと,ちぎり
+はしもと,たいいち
+はしもと,かつみ
+はせがわ,とおる
+はせがわ,のりまさ
+はせがわ,ひろゆき
+はせべ,ゆきえ
+はた,なおこ
+はたけやま,たかひろ
+はたなか,つよし
+はたの,いさお
+はっとり,たかなお
+はなざき,ゆか
+はなぶさ,たつや
+はなむら,つよし
+ばば,ゆうこ
+はまさき,まさと
+はまだ,ただかず
+はやし,かつら
+はやし,たかし
+はやし,たかゆき
+はやし,そよか
+はら,あきら
+はらしま,まこと
+はらだ,まゆみ
+はらだ,かずたか
+はるたに,ようへい
+ひがしの,まさひろ
+ひがしやま,はずき
+ひぐち,いくぞ
+いしはら,あつよ
+ひじかた,あきよし
+ひび,たつや
+ひょへ,おさむ
+ひらい,ご
+ひらかわ,あきこ
+ひらく,よしゆき
+ひらさわ,つぐき
+いのはら,まなぶ
+ひらた,たけひろ
+ひらぬま,まこと
+ひらの,りょ
+ひらやま,まさひで
+ひろうち,おさむ
+ひろおか,なおや
+ひろかわ,りえ
+ふくい,たかひろ
+ふくだ,まき
+ふくだ,ゆ
+こり,しげみつ
+ふじい,たけよし
+ふじい,ひろあき
+いで,たつと
+ふじい,ともひろ
+ふじお,ひでのり
+ふじおか,じゅんや
+ふじくら,しげき
+ふじさわ,けんじ
+ふじさわ,たくひろ
+ふじしげ,くにつぐ
+ふじた,かずお
+いのうえ,たろう
+ふじと,しげる
+ふじなが,れい
+ふじわら,ゆかこ
+ふじわら,けんたろう
+ふせ,まさき
+ふるかわ,たかひろ
+ふるかわ,すすむ
+いしい,きょこ
+ふるさわ,じゅにち
+ふるた,だいぞ
+ふるた,ちえこ
+ふるた,ひろかず
+ふわ,たかゆき
+ほし,けんいち
+ほそだ,きくこ
+いしい,こうじ
+ほりかわ,けんたろう
+ほりこし,けいいち
+ほんだ,けんいち
+まえかわ,のりお
+まえだ,ゆか
+まえだ,ながまさ
+まえだ,ともはる
+まえの,としき
+まき,かおる
+まきぞの,まさみつ
+まきた,ゆういち
+まきの,だいすけ
+まさき,ひろき
+ますざき,こういち
+ますだ,よしあき
+ますぶち,なおこ
+まちだ,みお
+まつうら,まゆみ
+まつかわ,けいすけ
+まつざき,ひろみち
+まつざき,なおこ
+まつした,ひろあき
+まつしま,のぼる
+まつだ,るみ
+まつだ,みなこ
+まつだ,たろう
+まつなが,たかし
+まつなみ,さとし
+まつばら,なみ
+まつばら,さやか
+まつみや,かつゆき
+まつもと,むねき
+まつもと,ゆずる
+まつもと,よしこ
+まつもと,ゆすけ
+まつもと,かずひろ
+まつやま,みゆき
+まなべ,えりこ
+まるやま,もとよ
+まるやま,だいすけ
+みうら,まき
+みくに,こずえ
+みずかみ,ひでお
+みつはし,しげゆき
+みなと,たかし
+みなみ,あゆみ
+みふね,たかし
+みやがわ,こうじ
+みやさか,のりふみ
+みやざわ,さとみ
+むらお,けんいち
+むらかみ,まこと
+むらた,かずひで
+むらまつ,たけふみ
+むらやま,ゆすけ
+むらやま,ひろこ
+めぐろ,ちずこ
+もちずき,りょすけ
+もとよし,まさき
+ももず,ひろき
+もり,やすみつ
+もり,ふみなり
+もり,ひでき
+もり,のりよし
+もりた,ひろゆき
+もりた,たかゆき
+もりの,よしひろ
+もりもと,まさし
+もりもと,しのぶ
+もりやま,じゅん
+もりわき,まさこ
+やぎ,まさみ
+やぎ,けんすけ
+やくしじ,のぶゆき
+やこ,としお
+やざわ,かずあき
+やすま,ともひこ
+やとご,こういち
+じょがん,まこと
+やなぶ,ゆきこ
+やの,まさき
+やぶた,やすたか
+やまうち,みほ
+やまうち,たまよ
+やまぐち,けんじ
+やまぐち,けんいちろ
+やまぐち,みちお
+じだい,たかし
+やまぐち,ゆきこ
+やまぐち,かずゆき
+やまぐち,ふみあき
+やまさき,けいすけ
+やまさき,ゆたか
+やまざき,おさむ
+やました,つよし
+やました,けんいち
+やました,けんじろ
+やまだ,あい
+やまだ,はなえ
+やまだ,さとし
+やまだ,しゅこ
+やまだ,ひろし
+やまとや,ゆきこ
+やまなか,みつはる
+やまなし,りょ
+やまにし,やすまさ
+やまもと,なおこ
+やまもと,ひろあき
+やまもと,えいた
+やまもと,せいこ
+やまもと,こうじ
+やまもと,やすひろ
+やまもと,じゅん
+よこた,あつや
+よこた,かずひろ
+よこた,まさと
+よこて,たくや
+よしおか,たかし
+よしおか,やすお
+よしおか,たつじ
+よしかわ,やすひさ
+よしかわ,きょこ
+よしだ,まりこ
+よしだ,ひふみ
+よしだ,じゅん
+よしの,なおき
+よしみ,ちか
+よしむら,かずや
+よだ,りか
+よねざわ,まなみ
+りゅと,ぐおふい
+ぃん,よすけ
+わかつき,たつや
+わきざか,ともふみ
+わきた,しげゆき
+わきた,かよ
+わきもと,せいいちろう
+わだ,たかし
+わだ,あつし
+わたせ,ひでと
+わたなべ,たくや
+わたなべ,りょひち
+わたなべ,まさゆき
+わたなべ,じゅんこ
+わたなべ,あかね
+きのした,みのる
+あおき,まさゆき
+やなぎはら,くにひこ
+あまこ,のりひさ
+こんどう,あらた
+しらかわ,けい
+こやま,ご
+こんど,しんすけ
+もり,しんや
+おの,ゆすけ
+まの,とおる
+ながの,しょこ
+さとう,たかし
+みやざき,あきこ
+おがわ,だい
+きむら,やすはる
+よこお,そう
+うちむら,ひろゆき
+ごしま,なおこ
+さえき,よしたか
+なかじま,ゆうこ
+いわみ,よしひこ
+えげ,きよし
+うめぞの,よしお
+さくらい,しおり
+わたなべ,ようこ
+ながい,たかゆき
+おそがみ,まこと
+くろかわ,としお
+たかすか,ひでよし
+おばた,あき
+しらい,すみこ
+まつうら,えり
+なかざわ,あや
+まつい,あきら
+こせき,ひでとし
+つかだ,けんじ
+てらくら,ちなつ
+にへい,りゅいち
+かわむら,みき
+ひご,ひろみ
+こばやし,みほ
+ふるた,れい
+もちずき,かおり
+おかだ,まみ
+さいとう,まや
+かわはら,しょご
+すずかけ,あつひこ
+いとう,まさよし
+いしずか,よしかず
+たべい,まさひこ
+ごと,ゆたか
+しもさか,まこと
+かわい,よしひさ
+わたなべ,ゆひち
+すずき,こうたろう
+まつやま,のりゆき
+はら,よじ
+つばき,きよし
+やすい,たかゆき
+こばやし,まさゆき
+おかべ,きよのり
+おがわ,たかゆき
+やまぐち,ひろゆき
+ふじかわ,たつし
+いながき,ゆきこ
+ちぞ,ゆき
+はなだ,たくや
+おこ,あつこ
+おくら,ひさと
+まつお,やすまさ
+えんど,あきひろ
+ほりべ,とおる
+かつ,かずま
+おたか,よしかず
+たかはし,いつふみ
+むらやま,ひろし
+よしおか,りょへい
+かい,せいいちろう
+たかはし,たかゆき
+ぐんげ,けんたろう
+やの,さゆり
+はやし,しょこ
+みうら,さとし
+あおやぎ,けんじ
+たかだ,ひでとし
+ぬまた,としひこ
+かたおか,じゅんや
+しみず,もとあき
+しみず,すみひろ
+まつむら,つとむ
+おりと,まりこ
+こたに,もとじ
+おはし,てつひろ
+かんせき,まさのぶ
+きたむら,としや
+さくた,ゆうこ
+よしだ,さゆり
+こはら,よしえ
+ぃ,わかこ
+いはら,たまよ
+つじうら,たい
+なかむら,あやこ
+あおき,まなみ
+あおやま,ひろたか
+あかいけ,とくひこ
+あかつ,けんじ
+あきはら,かおる
+あきもと,さちこ
+あさくら,ゆうこ
+あさの,たろう
+あびる,さとし
+あべ,ふみひこ
+あべ,りょ
+あべ,けいこ
+あべかわ,こうたろう
+あらい,しんいちろう
+あらい,たかし
+あらかわ,とおる
+あらき,はるな
+あらき,けいこ
+ありえ,かずひろ
+あんどう,つよし
+いいだ,あきこ
+いけだ,だいすけ
+いけだ,ひろみ
+いけだ,じゅん
+いしい,しゅんすけ
+いしい,まり
+いしがき,たかし
+いしかわ,りょ
+いしかわ,あいこ
+いしざわ,のりたか
+いしずみ,ゆき
+いしぜき,たくや
+いしだ,ともこ
+いしだ,のりひと
+いしだ,まさとし
+いしづ,ひろき
+いしはら,たかあき
+いしまる,ひろし
+いたに,まさふみ
+いたはら,けんたろう
+いちま,じゅにち
+いとう,しゅんすけ
+いとう,たけし
+いとう,なおき
+いとう,のぶやす
+いとう,はやと
+いとう,みやこ
+いとう,ゆき
+いとう,ゆみこ
+いながき,てるき
+いなみ,しゅへい
+いの,だいすけ
+いのうえ,ゆうじ
+いのうえ,れいこ
+いまお,よしたか
+いまだ,たかし
+いわかみ,ふみなお
+いわくら,しゅひち
+いわざき,たかし
+いわた,ひさつぐ
+いわもと,なおと
+うえすぎ,ゆうこ
+うえだ,ゆういちろう
+うえたか,ひろかず
+うえち,あきこ
+うえの,しずこ
+ひりゅ,おき
+うえむら,つよし
+うちだ,ひろゆき
+うちだ,しげき
+うちはし,れお
+うちやま,みき
+うめはら,まさき
+うりたに,たかし
+えべ,じゅんぺい
+おいかわ,けんいち
+おおい,ゆすけ
+おおい,ゆたか
+おおいし,ひろたか
+おうち,こうじ
+おえ,ひろき
+おおおか,じゅんこ
+おおかわ,まさや
+おおくぼ,しょじ
+おおくま,まり
+おおた,けんじ
+おたに,こうじ
+おおつ,まさひろ
+おおつ,あや
+おおつか,きいち
+おおつか,ご
+おおつか,れみ
+おおつか,なつこ
+おおつぼ,ますみ
+おおはた,ゆひゃ
+おおまさ,けんたろう
+おおや,ともゆき
+おやま,かよこ
+おか,まさひこ
+おかじま,けんしん
+おかだ,だいすけ
+おかだ,まさひろ
+おかだ,まさや
+おかだ,りょ
+おかだ,のりひろ
+おかはた,のぶひろ
+おかべ,しずか
+おかもと,ちえ
+おかもと,てつや
+おかもと,じゅん
+おがわ,てるひろ
+おがわ,あきら
+おくだ,けい
+おくと,まさみつ
+おくなか,あきこ
+おぐら,たつお
+おざき,けいじ
+おさだ,たいすけ
+おざわ,たろう
+おじま,みつのぶ
+おじま,たつや
+おばら,ちひろ
+かいとう,のりよし
+かきくら,さとし
+かきもと,るみ
+かく,たつや
+かげやま,やすまさ
+かじなが,ひさし
+かしま,よしのり
+かたおか,ひでき
+かたぎり,けいこ
+かたやま,だいすけ
+かど,こへい
+かとう,さち
+かとう,せいし
+かとう,たろう
+かとう,のぶあき
+かとう,ひろし
+かとう,ひろみ
+かとう,まこと
+かとう,まさし
+かとう,ゆりこ
+かとう,たかし
+かなもと,まさゆき
+かなや,てつや
+かねこ,こうじ
+かねもり,ただひさ
+かわ,ゆたか
+かわい,よしひこ
+かわい,たかひろ
+かわかみ,なつこ
+かわぐち,まひと
+かわぐち,ゆみこ
+かわぐち,りつこ
+かわぐち,りょ
+かわぐち,ふみ
+かわごいし,れいこ
+かわしま,すみれ
+かわな,ひろし
+かわのべ,てつや
+かんの,さとし
+きくち,わたる
+きし,こういちろ
+きしもと,あきこ
+きしろ,しんや
+きたお,よしかず
+きたはま,ゆ
+きたむら,よしかず
+きどころ,こうじ
+きむら,はるこ
+きむら,まさおみ
+きむら,ちかこ
+きりあけ,しゅんすけ
+くきもと,としひこ
+くぼ,ひろき
+くぼた,すすむ
+くまくら,たかゆき
+くまだ,ごろ
+くまもと,たけし
+くめ,ゆきこ
+くらや,やすのぶ
+くりわき,のぞみ
+くわばら,れいこ
+ご,たけし
+こいけ,やすし
+こいけ,しん
+こさか,たけのり
+こだ,よしのり
+こが,あつし
+こくぼ,こういち
+こくら,まこと
+こご,あいこ
+こさき,えいさく
+こじま,としき
+こでら,くにゆき
+ごと,まゆみ
+ごと,りか
+ごと,ゆすけ
+こはた,ひろあき
+こばやし,まさひと
+こばやし,こへい
+こまつばら,まきこ
+こみや,ゆかり
+こみやま,てるお
+こやなぎ,さとる
+こやま,れおな
+こんど,むつみ
+こんの,あやこ
+さいとう,こういち
+さいとう,ももえ
+さいとう,りえ
+さいとう,りゅじ
+さいとう,りょうすけ
+さかい,ひろこ
+さかの,かずと
+さかもと,だいすけ
+さかもと,けいこ
+さくらい,かずのり
+ささき,ちよみ
+ささき,とおる
+ささき,なほこ
+ささき,みほ
+ささき,とくこ
+ささの,まさよし
+さだもと,しんや
+さとう,たかこ
+さとう,のぶか
+さとう,のぶほ
+さとう,ひろひで
+さとう,しげる
+さなだ,けんいち
+さねしげ,けんご
+さの,あい
+しげとみ,りょすけ
+しのはら,ゆきこ
+しばかわ,わたる
+しばの,ちから
+しまだ,まさふみ
+しまだ,よしこ
+しみず,たけゆき
+しむら,ゆきお
+しむら,さき
+しもかわ,やすひろ
+しもふじ,あかぎ
+しもやま,げんこ
+しょ,ひろき
+しらい,ゆひちろ
+しらが,たかし
+しらかわ,たかひろ
+しらす,ともこ
+しわ,まさゆき
+しんけ,としのぶ
+しんど,かずひこ
+すがはら,さとこ
+すぎうち,もりひこ
+すぎうら,けんじろ
+すぎさわ,りょ
+すぎはら,たけし
+すぎもと,たつろ
+すぎやま,たかお
+すずき,たかのり
+すずき,たけし
+すずき,ともや
+すずき,のぶひこ
+すずき,ひでかず
+すずき,ひろゆき
+すずき,りえ
+すずき,こうじ
+すだ,やすこ
+すと,みゆき
+すみだ,けんいち
+せき,ないしん
+せき,ともかず
+せんだ,ひろかず
+そめみや,しょたろう
+そや,ちあき
+だいまる,ようこ
+たかお,ひろのぶ
+たかぎ,てるゆき
+たかざわ,たつや
+たかせ,まさゆき
+たかね,しんいち
+たかはし,たいすけ
+たかはし,まこと
+たかはし,まさや
+たかはし,りゅた
+たかはし,のりこ
+たかやま,みかこ
+たきうち,りんや
+たきかわ,てつや
+たきぐち,あきひろ
+たきざわ,あつなり
+たきざわ,かずき
+たきざわ,ゆきこ
+たきた,ちえ
+たぐち,ひろき
+たけい,あきら
+たけうち,はなえ
+たけだ,かよ
+たけはら,だん
+たての,けんじ
+たなか,さとし
+たなか,じゅんこ
+たなか,たかし
+たなか,ひろなお
+たなか,ひろゆき
+たなか,まなぶ
+たなか,ゆきお
+たなか,りえ
+たなか,あきら
+たなべ,けんたろう
+たに,さとし
+たにかわ,こうじろ
+たにぐち,ちひろ
+たになか,あきら
+たにもと,けんたろう
+たぬま,くにお
+たばた,しんご
+たばた,ゆひちろ
+たばた,ようこ
+たばた,なおたか
+たむら,だいすけ
+たるき,すすむ
+たんじ,あきら
+ちば,なお
+ちば,せいじ
+つかだ,とおる
+つきもと,なおこ
+つじ,えりこ
+つだ,みつえ
+つちもと,しんいちろう
+つつみ,ちかよ
+つつみ,よしつぐ
+つぼた,けつ
+てい,ひろたか
+てらかど,ちずる
+みのうら,ふみひこ
+てるい,じゅん
+どい,こ
+と,よすけ
+とかいりん,けいたろう
+どめん,こういち
+とかい,ゆき
+とくなが,きよのり
+とくやま,かずゆき
+としま,ひろかず
+どち,りえ
+とのい,あつし
+とのむら,ひろし
+とみた,きみひこ
+ともの,しんご
+とりい,ともこ
+ながい,じゅにち
+なかがわ,まさや
+なかがわ,わかみ
+なかがわ,みつあき
+なかざと,まなぶ
+なかしま,まり
+ながた,こうたろう
+なかの,まきこ
+ながの,ゆみ
+ながの,えつこ
+なかむら,かおり
+なかむら,きみたか
+なかむら,たいが
+なかむら,みわこ
+なかもり,ともゆき
+なかやま,あきこ
+なるせ,りえこ
+なんご,くにお
+なんば,ひでかず
+なんば,まもる
+にいみ,とものり
+にしお,いくま
+にしおか,よしのり
+にしおか,だいすけ
+にしさか,もとのぶ
+にしざき,ちかこ
+にしざわ,ゆか
+にしの,かな
+ぬまたき,りょた
+ねぎし,りょ
+ねやま,ようこ
+のだ,さとし
+のぐち,たけし
+のぐち,てつや
+のぐち,とくこ
+のぐち,ともひろ
+のざき,たかし
+のだ,まさき
+のぼり,けん
+のむら,こうじ
+のむら,こへい
+のむら,よじ
+はぎわら,しんいち
+はしぐち,ともこ
+はしもと,まみ
+まき,たくま
+はせがわ,なおき
+はせがわ,さとし
+はだ,もとき
+はっとり,りか
+はっとり,たけし
+ばば,ちあき
+ばば,のりこ
+ばば,よすけ
+ばば,けいじ
+はまだ,しんきち
+はまだ,だいすけ
+はまだ,ひろこ
+はまだ,よしひろ
+はまの,しゅひち
+はやし,みさこ
+ひぐち,けんじ
+ひさつね,しょたろう
+ひしぬま,としひろ
+びょど,たかふみ
+ひらい,かずと
+ひらおか,たけお
+ひらかわ,おさむ
+ひらさわ,あやこ
+ひらしま,ゆひち
+ひらた,まゆこ
+ひらの,まさき
+ひるま,けんじ
+ひろせ,しんいちろう
+ひろせ,りかこ
+ひろた,くみこ
+ふくい,だいじ
+ふくだ,りさ
+ふくば,ふみひろ
+ふくむら,まさゆき
+ふくもと,あきのり
+ふじい,こき
+ふじい,まこと
+ふじい,あつし
+ふじえだ,ひろこ
+ふじた,まさかず
+ふじた,みき
+ふじつ,ともひろ
+ふじの,たくじ
+ふじもと,じろ
+ふじわら,まみこ
+ふじわら,やよい
+ふじわら,ゆひち
+ふるかわ,ひでき
+ほじょ,かつよし
+ほしの,ひろし
+ほそかわ,あずさ
+ほりかわ,たかし
+ほんご,かなめ
+まえだ,ゆみこ
+まおか,だいすけ
+ますぶち,けん
+ますみつ,ゆき
+まつい,みわ
+まつお,ひさかず
+まつおか,ひでかず
+まつおか,ゆきこ
+まつだ,たけし
+まつばら,たかほ
+わたなべ,さとこ
+まつやま,たくと
+まつやま,りな
+まつやま,くみ
+まとば,りょ
+みうら,まさのり
+みつぎ,むねとも
+みと,てるひこ
+みのうら,しゅじ
+みや,よしあき
+みやけ,あつし
+みやした,つとむ
+みやした,つよし
+みやた,きょへい
+みやもと,けんたろう
+みやもと,ひでのり
+みやもと,きょすけ
+むくだ,さちこ
+むしか,りょ
+むと,あきこ
+むらかみ,だいすけ
+むらかみ,たけし
+むらかみ,みつてる
+むらかみ,よしき
+むらたに,ともひろ
+むらまつ,まさき
+むらやま,たけし
+もちずき,しゅひち
+もりぐち,やすひさ
+もりた,あきら
+もりばやし,ひでまさ
+もろと,あい
+やえがし,ゆきお
+やおやま,あきひろ
+やがみ,たつや
+やぎ,くにこ
+やぐら,まさひろ
+やすこち,ともあり
+やすだ,ゆきこ
+やすだ,あきら
+やまぐち,ゆか
+やまぐち,かなこ
+やまだ,たつひろ
+やまだ,ひでつぐ
+やまだ,もとひろ
+やまみち,まさこ
+やまもと,よしあき
+やまもと,としひこ
+ゆき,みさと
+ゆみば,まみ
+ゆら,こめい
+よこすか,ひろたつ
+よこた,ひでゆき
+よこやま,げんた
+よしおか,よしひろ
+よしおか,けいじ
+よしざわ,しんじ
+よしだ,のぼる
+よしだ,ゆすけ
+よしだ,のりこ
+よしの,ゆすけ
+よしむら,しょしん
+りゅ,わいけん
+ろく,みずほ
+さかもと,あきら
+わたなべ,かつゆき
+わたなべ,じゅんこ
+わたなべ,ひろみ
+わたなべ,まみこ
+わたなべ,けいいち
+わらび,けんいち
+のざわ,はるのぶ
+くぼ,あい
+よしもと,あやこ
+やまもと,なおこ
+やまもと,かずひろ
+ひろさわ,ゆうこ
+みひら,みつる
+おの,あかり
+おだ,たかし
+おばたけ,かずみ
+かどえ,ゆうこ
+にしだ,えいじ
+まつもと,あきこ
+みぎた,けいこ
+みやもり,れいな
+やました,ゆふこ
+やまだ,ゆ
+のりとみ,たかこ
+いけだ,やよい
+もりた,ひろのり
+たけうち,ゆうこ
+みた,やすこ
+いぬい,こ
+と,たかし
+まきの,たかし
+なつめ,りえ
+おのでら,りょへい
+おた,ひろゆき
+うるしさこ,かずひこ
+さかきばら,みほこ
+あおき,あい
+あおき,とよひろ
+あおき,よしあき
+あかがわ,まな
+あかつか,みお
+あかほり,まどか
+あきやま,しんご
+あさい,ちえ
+あさい,ゆすけ
+あさおか,りょじ
+あさぬま,りょ
+あそ,よしのり
+あたけ,けん
+あだち,のりゆき
+あべ,まり
+あべ,しんや
+あべ,くにひろ
+あらい,みきこ
+ありま,りつこ
+いいずか,しげのり
+いがらし,えいすけ
+いけだ,なおと
+いけだ,ゆうこ
+いけはた,もとこ
+いざわ,かずひと
+いしい,けいじろ
+いしかわ,かずひろ
+いしぐろ,てるみ
+いしだ,しんぺい
+いしだ,けんじ
+いしばし,あや
+いしはら,なおふみ
+いしもと,としき
+いそはた,しんご
+いたみ,たかみち
+いちかわ,のぶやす
+いっしき,ゆきえ
+いで,つよし
+いで,ともこ
+いとう,だいすけ
+いとう,ゆたか
+いとう,こずえ
+いとう,けんたろう
+いとう,ひろき
+いのうえ,ちはる
+いのうえ,やすし
+いのうえ,りょこ
+いのうえ,あきひろ
+いのくち,こうたろう
+いまい,たつお
+いまきゅれい,としゆき
+いまぜき,たかひろ
+いまむら,まゆこ
+いまむら,あさこ
+いわい,たかあき
+いわい,なるたか
+いわさき,たつや
+いわせ,なるみ
+いわた,こうじ
+いわで,まゆみ
+いわむら,じゅんぺい
+うえだ,まさお
+うえの,なつこ
+うえの,まい
+うかい,まこと
+うさみ,よすけ
+うちうみ,なおき
+うちやま,かつき
+うらはら,のりゆき
+えぎ,りほ
+えじり,れいこ
+えのきど,くみこ
+えもり,ますみ
+えんど,けんいちろ
+おひ,さとる
+おひけ,たかし
+おふら,ともこ
+おかわ,すすむ
+おきた,こうじ
+おさわ,けんたろう
+おた,まさひと
+おた,ふみお
+おた,まさふみ
+おたに,しんじ
+おたに,ひろき
+おつか,まりこ
+おつか,りえこ
+おつか,まさふみ
+おつき,たいじ
+おど,たかひこ
+おとんべ,ひろし
+おの,よりこ
+おの,いつき
+おはし,はじめ
+おはた,なつこ
+おみち,ともかず
+おひゃま,だいすけ
+おかざき,よしこ
+おかじま,ゆきのり
+おかだ,まさゆき
+おかだ,ともこ
+おかもと,あきなお
+おかもと,よへい
+おがわ,たかあき
+おぎた,ゆきひで
+おくくぼ,もとい
+おちあい,よしのり
+おまた,だいじろ
+かさ,さとる
+かしわ,たくみ
+かとう,たつや
+かとう,まさひこ
+かない,ひろし
+かなやま,たつや
+かねこ,あきら
+かねつき,みほ
+かねまる,みきひと
+かべうち,たつふみ
+かみむら,みなこ
+かみや,かずひろ
+かみや,たくま
+かわい,たけし
+かわい,だいすけ
+かわかみ,じゅん
+かわぐち,としふみ
+かわさき,たかし
+かわさき,とものり
+かわさき,けん
+かわしま,ゆきこ
+かわた,だいすけ
+かわまた,こへい
+かわもと,ただし
+きしもと,けんいち
+きしろ,だいすけ
+きだ,ふみや
+きたおか,じゅんや
+きただ,あずさ
+きたの,なおと
+きたはら,かおり
+きたむら,さちこ
+きたもと,こういちろ
+きむら,ゆみこ
+きむら,ひろし
+きもと,らい
+きん,みん ちゃう
+んぐいぇん,やすひろ
+くしやま,てつあき
+くどう,ひろき
+くどう,たかお
+くめうち,けいいち
+くらしげ,こた
+くらち,けいすけ
+くらなか,あきよし
+くりはら,けいた
+くろき,えいすけ
+くろさか,じゅん
+くわはら,う
+ゆえ,まさひこ
+こいずみ,そうへい
+こうじま,たろう
+こだ,みほ
+この,たけひろ
+こが,ふみと
+こが,けいこ
+こくぶん,よしゆき
+こさか,だいすけ
+こって,あきよ
+はたなか,とものり
+こばやし,しゅんすけ
+こばやし,けんじ
+こばやし,こうじ
+こばやし,かずひろ
+こばやし,たけし
+こまつ,よすけ
+こまつばら,まさき
+こめだに,ようこ
+さいき,しの
+さいとう,かつのり
+さかい,しんや
+さかぐち,よしひこ
+さかまき,かつゆき
+さくま,けんいち
+さこ,しょひち
+ささい,たくじ
+ささお,ちかこ
+ささき,あきこ
+ささき,まいこ
+さとう,たかし
+さとう,ゆか
+さとう,ひでき
+さとう,あんな
+さとう,のりあき
+さとう,きみひこ
+さとう,しんすけ
+さとう,ふみ
+さとう,てつろ
+さの,あつし
+さの,けんいち
+さはら,ひろあき
+さるやま,たろう
+さわぐち,ぁん
+し,ゆきこ
+しおざき,まや
+しおだ,なおや
+しき,かずきみ
+しだ,はなこ
+しのはら,まさお
+しのはら,かつひこ
+しぶさわ,かずゆき
+しまだ,ひろひと
+しまだ,まさき
+しまだ,みき
+しみず,まさこ
+しみず,みき
+しみず,のぶゆき
+しみず,りょさく
+しみず,まさこ
+しみず,なぎさ
+しも,たかふみ
+しもざき,たかゆき
+しもじま,あや
+しもつ,えみ
+しもの,ひであき
+しもや,えいじ
+しらす,まさる
+すぎうら,よしひろ
+すぎうら,ひとし
+すずき,ひさし
+すずき,よすけ
+すずき,りゅた
+すずき,みほこ
+すずき,けんたろう
+すと,たつお
+すなだ,わたる
+すやま,ともこ
+せお,さとこ
+せき,じゅにち
+せきね,じろ
+せきば,きぬえ
+せと,たつひこ
+せんごく,えいいちろう
+せんだ,たかひろ
+せんば,あきひこ
+そめや,よりこ
+たかぎ,しんご
+たかぎ,まさのぶ
+たかぎ,としろ
+たかせ,ともみ
+たかだ,えりこ
+たかはし,ゆすけ
+たかはし,よしのり
+たかはし,よしき
+たかはし,さとし
+たかはし,さとし
+たかはし,だいすけ
+たかみざわ,かおり
+たきざわ,こへい
+たぐち,みつる
+たけした,まき
+たけだ,けいじ
+たけだ,のりひさ
+たけだ,ゆうこ
+たけなか,みずほ
+たけはら,けいご
+たけやま,ひでき
+たじ,あい
+ただ,のりゆき
+だて,よひちろ
+たなか,よすけ
+たなか,やすゆき
+たなか,よしのり
+たなか,たかのり
+たなか,まさと
+たにぐち,みか
+たにこし,やすひろ
+たにの,こずえ
+たぶき,けいぞ
+たぶち,きょこ
+たまおき,けん
+たまがわ,かずま
+たむら,ゆうじ
+ためのり,こうじ
+たんの,たかひろ
+たんぼ,みきこ
+ちだ,みつる
+ちねん,みか
+つがねざわ,よしたか
+つかはら,くみこ
+つちや,ちかふみ
+つちや,のりひこ
+つちや,たくなが
+つずき,たかゆき
+つずらはら,たかゆき
+つねよし,たかのり
+つぼうち,けんたろう
+つるしま,たかあき
+でぐち,たろう
+てずか,よしひと
+てらかわ,まさよし
+てらぐち,ともこ
+てらしま,けいこ
+てらだ,よへい
+とがし,えり
+とくむら,あきひこ
+とざわ,かつひさ
+とびおか,ゆき
+とまりの,のぶゆき
+とみい,みずほ
+とみざわ,まゆみ
+とみた,よすけ
+とみた,やすゆき
+とみなが,まみ
+とよだ,さちこ
+とらたに,てるのぶ
+ないとう,あきふみ
+ながい,りえ
+ながい,たくや
+なかいけ,みつのぶ
+なかうえ,たかし
+ながお,むねのり
+なかこじ,けんじ
+ながさか,よしき
+なかじま,だいすけ
+なかじま,こういち
+ながた,ゆうこ
+ながた,たけし
+ながた,じゅんこ
+なかつる,じゅんこ
+ながの,あや
+なかむら,たいち
+なかむら,ゆうた
+なかむら,ようこ
+なかむら,そうたろう
+なかむら,まさこ
+なかむら,たかお
+なかむら,ちえ
+なつはら,じゅんこ
+なりさだ,しんご
+なんぶ,だいすけ
+にかいど,りょこ
+にし,さやか
+にし,こうじ
+にしお,ゆきこ
+にしかわ,まり
+にしくら,かつや
+にしざわ,あつひさ
+にしざわ,なおき
+にしだ,ひろあき
+にしだ,やすお
+にしやま,さとる
+ぬのや,ひろし
+ぬまざき,くみこ
+ぬまた,ひろし
+のどみ,ゆか
+のみ,まさあき
+のぐち,えいじ
+のじま,さやか
+のじり,しんすけ
+のだ,のぶゆき
+のだ,ともや
+のむら,そういちろう
+のむら,なおゆき
+のむら,としや
+はこしま,けんじ
+はしもと,さとこ
+はしもと,いさむ
+はせがわ,えりな
+はたけやま,しんいち
+はった,りょへいた
+はっとり,ひさのり
+はない,しげお
+はなだ,ゆきお
+はまぐち,たけし
+はまだ,りな
+はまだ,まさき
+はまの,かずよし
+はやかわ,てるあき
+はやし,としゆき
+はやし,みきこ
+はやし,ゆきこ
+はら,しんへい
+はら,かずえ
+はらだ,かずお
+ひえかた,わたる
+ひがさ,りょ
+ひがみ,けい
+ひきの,けんたろう
+ひだ,ゆふこ
+ひだか,ゆひ
+ひでしま,さとみ
+さかい,たけはる
+ひらい,けいすけ
+ひらいわ,けん
+ひらた,まなみ
+ひらばやし,けいこ
+ひろせ,たかゆき
+ふかお,ゆき
+ふくい,てつお
+ふくざき,ともなが
+ふくだ,けんたろう
+ふくだ,ちかこ
+ふくだ,やすあき
+ふくだ,みえ
+ふくはら,さとこ
+ふくむろ,あつし
+ふじうら,せいじ
+ふじおか,てつじ
+ふじおか,たかし
+ふじた,しん
+ふじもと,みきこ
+ふじもと,じゅんや
+ふじわら,はやと
+ふたむれ,えつこ
+ふるさわ,ひでき
+ふるた,なおゆき
+ふるや,あやこ
+ほこら,みゆき
+ほしの,ひでひこ
+ほしの,みれい
+ほその,よへい
+ほり,やすひろ
+ほりうち,まさる
+ほりおか,じゅにち
+ほりぐち,ゆきこ
+ほんま,ひろふみ
+まえかわ,あや
+まえじま,こういちろ
+まえだ,まや
+まえはら,しげる
+まき,ゆかり
+まきの,えりこ
+ますい,あきひろ
+ますだ,いさお
+ますだ,いちろう
+まつい,ひさお
+くまがい,ひでお
+かねこ,まつお
+こみや,すみお
+こがいと,たもつ
+かんばやし,ひろみち
+きのした,とし
+きくち,えつお
+こまば,やすお
+こくぶ,じゅにち
+こばやし,いさお
+こばやし,ともゆき
+きつたか,こうじ
+まつお,としひろ
+かわい,としひこ
+くりはら,しげのり
+かどの,たけお
+かみくぼ,ひろし
+かわぐち,きよし
+かまた,まさみつ
+かんだ,かんじ
+かんだ,かつひこ
+こしむら,りょじ
+まつお,のぼる
+くさき,みちこ
+かもはら,てるまさ
+かさじま,はるひこ
+まつき,みのる
+かみくら,ゆたか
+くりはら,みつこ
+なかち,ひろし
+かがわ,てるお
+こばやし,ちゅけん
+かんの,たかゆき
+まつした,まなぶ
+かしわだ,とおる
+こんの,ひろよし
+こすぎ,けんじ
+こもり,たかし
+かわの,まさもと
+きたむら,かずみ
+かじま,みつお
+かとう,としゆき
+こやの,きよし
+かつまた,じゅんじ
+くわだ,まさふみ
+こたに,としまさ
+かじうち,よしかず
+こんど,つねお
+こんど,のぶあき
+まつなみ,きよし
+かがやま,しんいち
+かねこ,せいじ
+こやま,としお
+きつかわ,ふみお
+かしくら,おさむ
+くろき,かずお
+こいずみ,よしみ
+くぜ,としろ
+かわかみ,ゆきお
+かみじょ,たけひこ
+きむら,てつや
+まつの,ひでお
+きくた,ゆきお
+くまだ,としかず
+くにはら,けいじ
+こじま,やまと
+くりはら,のぶこ
+よねくら,たかし
+こばやし,よしかず
+こばやし,しんや
+こじょう,まさはる
+きむら,やすひこ
+こばやし,やすはる
+こんど,こせい
+かわい,かんじ
+くまはら,よしゆき
+きせ,しゅへい
+かしくま,みきお
+かこ,けいこ
+いしがい,さちお
+かみぐち,とおる
+くもだ,かずひさ
+こまつ,おさむ
+かねだ,まさあき
+きくち,しゅにち
+こたに,ゆたか
+こばやし,まさのり
+かわぐち,よしたみ
+かねこ,つねお
+かも,てつお
+かわむら,さなえ
+くまの,じゅにち
+こばやし,まさあき
+きむら,のぶかず
+きしもと,としかつ
+きむら,けんじ
+かみぐち,みちやす
+きむら,けんぞ
+こばやし,じゅにち
+かどくら,よしあき
+きたむら,ただし
+かつき,としお
+かんざき,しょひち
+かたぎり,みつお
+こばやし,よしひさ
+こまつざき,よしゆき
+きた,やすと
+かつはら,よしお
+こぐれ,ひろあき
+こじま,よしあき
+こめだ,えいじ
+こにし,まさゆき
+くわはら,よしえ
+こやま,かずひさ
+まつもと,ひろひさ
+かじもと,きしお
+くまざわ,てつや
+きむら,まさはち
+こばしがわ,しゅんじ
+かみや,かなこ
+まつもと,ひでよ
+こはし,ひさし
+こだま,まさのぶ
+かわかみ,いくみ
+まつもと,のぶこ
+かいど,こぞ
+きむら,ひろのり
+くご,しゅ
+まつもと,あきえ
+まつやま,あつし
+まるやま,ひさし
+この,けんいち
+くろき,やすまさ
+こみや,ひであき
+きむら,のりゆき
+きの,よしあき
+こまつ,かつみ
+かねちか,としお
+かなたに,ひとし
+こばやし,ゆ
+きたやま,しょじ
+かじ,えいぞ
+かわしま,ぜにち
+きむら,かずみ
+こばら,はるお
+きたがわ,みほ
+まるやま,としお
+かもん,きよみ
+みうら,よしゆき
+みしま,りょすけ
+みすぎ,さちこ
+みずた,きよし
+みずもと,じゅん
+みぞぐち,りょこ
+みずか,なおゆき
+みなみ,みあ
+みなみたに,ゆき
+みねた,りょすけ
+みやい,りえ
+みやおか,よしろ
+みやざき,かなこ
+みやざき,ひろこ
+みやはら,なおき
+みよし,まきこ
+むらかみ,たくま
+むらき,なおたか
+むらた,なほこ
+むらた,まさし
+むらた,たかし
+むらやま,かつひろ
+もとの,ともあき
+もり,じゅんこ
+もり,なるき
+もりた,まさこ
+もりた,ゆたか
+もりやま,たける
+もりやま,まさと
+やざわ,ゆきこ
+やじま,こた
+やなぎだ,けんろ
+やまがた,まゆみ
+やまかわ,じゅり
+やまぐち,たつひこ
+やまぐち,あきのぶ
+やまぐち,まさひで
+やまさき,あつこ
+やまざき,けんじ
+やました,みちや
+やまだ,めぐみ
+やまだ,まさこ
+やまだ,やすまさ
+やまなか,としゆき
+やまね,なお
+やまもと,ひでとも
+やまもと,りえ
+やまもと,あつし
+ゆかわ,かおり
+ゆざ,かずこ
+ゆたに,ともひろ
+ゆたに,えりこ
+よご,けいいち
+よこぼり,しんや
+よしおか,さとみ
+よしかわ,ゆき
+よしだ,ただゆき
+よしだ,まさき
+よしもと,けん
+よねだ,しゅくほ
+ら,よしあき
+わかさや,けんいち
+わたなべ,しゅん
+わたなべ,まさし
+みつやま,しんご
+ひらおか,やすのり
+かんの,かずひろ
+わこ,ひでゆき
+あおき,さとし
+あかお,あきこ
+あかぎ,りえ
+あかし,だいすけ
+あかつか,とものり
+あかはね,まさたけ
+あかほり,ただあき
+あきもと,ひろみ
+あきやま,ひろたか
+あさい,きょこ
+あさの,もとお
+あさひ,ゆみこ
+あさべ,ともこ
+あはれん,しずか
+あべ,じゅにちろ
+あべ,やすひろ
+あべ,まさみ
+あまの,りさ
+あめもり,かつと
+あらい,りえ
+あらい,わたる
+あらい,まさのり
+あらたに,りょへい
+ありなか,ひろこ
+いいご,やすゆき
+いいだ,ひろあき
+いけだ,ゆうこ
+いこが,ちえ
+いしい,みほ
+いしおか,まさかず
+いしざか,やすひろ
+いしじま,あさこ
+いしだ,かよ
+いしど,だいすけ
+いしの,としひこ
+いしまぶし,かおる
+いせり,ひろふみ
+いそべ,まさみ
+いたに,ありさ
+いずの,ひでお
+いでの,えつこ
+いとう,かつひろ
+いとう,さつき
+いとう,ともひろ
+いとう,のりあき
+いとう,まゆみ
+いとう,よしたか
+いとやま,えみこ
+いな,かおり
+いなさき,たかし
+いなば,ゆきえ
+いなば,みお
+いのうえ,ゆい
+いのうえ,ゆきこ
+いのうえ,たかお
+いべ,あきひと
+いまい,おとひこ
+いまおか,はるか
+いまむら,たかあき
+いわた,みつひろ
+いわた,よへい
+いわた,ようこ
+いわみ,みつたか
+いわもと,よしあき
+うえだ,ゆかり
+うえの,まな
+うえはら,たけし
+うかい,あつし
+うだがわ,あきら
+うちやま,やすのり
+うつみ,よすけ
+うつみ,ただし
+うの,たけし
+えがしら,のぶたか
+えと,まりこ
+えとみ,きょこ
+えんど,ゆきえ
+えんど,しゅへい
+おかど,まさし
+おくら,たけひろ
+おさか,よしひろ
+おさか,おさむ
+おさわ,ゆうこ
+おすみ,けんいちろ
+おた,れいこ
+おたに,さら
+おにし,たかのり
+おにし,ひさなが
+おにし,ゆひち
+おにし,ひろまさ
+おの,ひろゆき
+おの,まりこ
+おの,まこと
+おまつ,しゅんすけ
+おむら,ひろき
+おや,ひでみ
+おか,めぐみ
+おかい,ひろき
+おかうち,たかひさ
+おかだ,ひろこ
+おかだ,たてき
+おかの,こうたろう
+おかむら,さち
+おかもと,さとこ
+おがわ,ちえこ
+おがわ,まこと
+おがわ,まさひろ
+おがわ,みつる
+おがわ,むさし
+おがわ,まさお
+おぎの,なほこ
+おく,みかこ
+おくかわ,ようこ
+おくだ,よすけ
+おくむら,ともこ
+おざき,ゆきえ
+おじま,のりひと
+おぜき,けんいち
+おだ,とものり
+おだ,ゆうき
+おちあい,まりこ
+おとがわ,やすふみ
+おの,あかり
+おはら,そ
+かいじま,いずみ
+かがわ,こずえ
+かきお,きんや
+かけひ,みちこ
+かさい,たくや
+かさみ,ゆみこ
+かじた,えりこ
+かじたに,さやか
+かしま,ひろあき
+かしま,あきお
+かじもと,さとこ
+かすが,たかゆき
+かせ,たかし
+かたぎり,けいいち
+かたやま,ひろゆき
+かたやま,あつこ
+かとう,なおき
+かとう,りょこ
+かとう,みずき
+かなざわ,けいこ
+かねみつ,けんた
+かの,ともみつ
+かまた,たかや
+かみざき,ともみ
+かみじょ,なおこ
+かめたか,よしふみ
+かも,けいいち
+かわい,まさなり
+かわい,やすひろ
+かわかみ,ゆうこ
+かわかみ,あやこ
+かわぐち,さなこ
+かわぐち,れいこ
+かわぐち,かずしげ
+かわさき,りょこ
+かわさき,ゆうじ
+かわなみ,ひとし
+かわね,くにあき
+かわばた,けんいちろ
+かわむら,ひろかず
+かわもと,とものり
+かんだ,ゆきえ
+かんだ,ひろたか
+かんの,まさとし
+きしもと,よひち
+きたがわ,たいすけ
+きたはら,けんや
+きたむら,ともかず
+きたむら,じゅり
+きぬや,たかし
+きのした,みお
+きはら,あゆみ
+きむら,かずひで
+きむら,さとし
+きむら,じん
+きむら,なおき
+きよしま,あきこ
+きよずか,かなこ
+きら,あゆみ
+きりさこ,もう
+きん,ゆ
+きん,みどり
+くにえだ,なおし
+くぼ,まさこ
+くまの,けんたろう
+くらた,たけし
+くらはし,ともはる
+くれ,しょ
+くろい,しんご
+くろき,としみ
+くわの,てつじょ
+ご,たつや
+ごだ,よしかず
+こが,まさひろ
+こくしょ,あきよし
+こさか,じゅん
+こじま,はるみ
+こぞの,ゆき
+こだま,たかし
+こてら,てっぺい
+こでら,さゆり
+ごと,なおこ
+ごと,かずあき
+こにし,ご
+こにし,たけと
+こにし,あきひろ
+こばやし,たかあき
+こばやし,とおる
+こばやし,よしたか
+こばやし,ゆうこ
+こぶせ,ひろたか
+こまき,さえ
+こまざわ,たけひろ
+こまつばら,けい
+こやま,つよし
+こんど,しゅいちろう
+さいき,りょすけ
+さいじょ,あいわ
+さいとう,いくお
+さいとう,きみひろ
+さいとう,しんたろう
+さいとう,ただのり
+さいとう,ひろこ
+さいとう,みさき
+さいとう,ようこ
+さいとう,ともや
+さかい,なつこ
+さかみ,こうじ
+さかもと,ちえ
+さかもと,つよし
+さかもと,ひでゆき
+さかもと,ひろなお
+さかもと,たかまさ
+さくらい,ともひさ
+さくらぎ,いちろう
+ささき,ひろこ
+ささき,かおる
+さとう,かずや
+さとう,きょこ
+さとう,こういち
+さとう,てるひさ
+さとう,はじめ
+さとう,ひろみ
+さとう,ふみこ
+さとう,ひとし
+さの,まきこ
+さの,たかゆき
+さわさき,たかし
+さわだ,こうじ
+さんぺい,ひでき
+しおずか,まさよし
+しの,ななこ
+しばた,よひちろ
+しま,さだよし
+しまの,なほこ
+しみず,まさき
+しみず,ゆみえ
+しもかわ,ふくたろう
+しもむら,しゅさく
+しゅくり,たかし
+しょじま,あき
+しょだ,けんいちろ
+しらいし,かずみち
+しらかた,ゆみ
+しらさき,りょすけ
+しろた,とおる
+じんぐうじ,りょすけ
+しんたに,たかし
+しんぼ,ひろこ
+じんぼ,さとる
+しんむら,あつし
+すがい,かずのり
+すぎもと,かずたか
+すぎもり,じゅん
+すぎやま,としあき
+すぎやま,よしこ
+すぎやま,まみ
+すずき,よしおみ
+せがわ,えいぶ
+せき,まなみ
+せきね,たつお
+せきもと,くみ
+せと,のりかず
+せら,じゅん
+そでやま,ももこ
+そのい,まさひろ
+たいら,しげかず
+たかき,けんた
+たかはし,のぶゆき
+たかはし,もとはる
+たかはし,ひでとし
+たかはま,つとむ
+たかみや,みほ
+たかやなぎ,ひろこ
+たかやま,たかね
+たぐち,じゅん
+たけうち,たくま
+たけざき,きくこ
+たけした,じゅん
+たけもと,けんじ
+ただ,ひろし
+たちかわ,かつあき
+たちばな,あつし
+たつがわ,かずよし
+たなか,そらこ
+たなか,てるえ
+たなか,まさし
+たなか,みちる
+たなか,れい
+たなか,みねこ
+たなべ,ともお
+たにぐち,こき
+たにわき,ちはる
+たばた,かずひこ
+たはら,さとし
+たまき,わたる
+たまむら,あつし
+たるみ,まゆこ
+たんばら,さとみ
+ちかつ,ひろとも
+ちば,あつこ
+ちょ,まこと
+つかだ,なおと
+つかもと,ともこ
+つじもと,やすのり
+つちだ,あきよ
+つちや,まさたか
+つちや,こうすけ
+つつみ,さちえ
+つぼくら,しょへい
+つむら,のりこ
+てしま,たけし
+てらさき,ひろふみ
+てらさき,よしひさ
+てらだ,けんじ
+どい,なおこ
+どい,まこと
+と,ひろみ
+ときた,りょこ
+ときと,てつひこ
+とくだ,かほり
+としずみ,りょた
+とだ,てつや
+とよだ,さちか
+ないとう,みき
+なかい,けいこ
+なかお,たかあき
+ながお,ちから
+なかがわ,さとし
+ながさか,たくや
+なかさか,ともえ
+ながさき,あきこ
+なかざわ,まさひと
+なかざわ,くみ
+なかしま,たけはる
+なかじま,ともこ
+なかしま,のぶたか
+なかじま,ひろこ
+なかじま,しんいちろう
+なかだ,りょすけ
+なかだ,えみ
+ながつか,まほ
+なかと,しゅんすけ
+なかにし,ひろあき
+なかにし,りょた
+なかにし,まさとし
+ながまつ,あきひこ
+なかむら,えりこ
+なかむら,ともみ
+なかむら,みちこ
+なかむら,やすひろ
+なかむら,ゆひちろ
+なかむら,ゆへい
+なかむら,ようこ
+なかむら,ゆや
+なかもり,えみこ
+なかや,あきひろ
+なかやま,しゅたろう
+なす,りょすけ
+なりとみ,かよこ
+なんぶ,あやこ
+にいみ,いさお
+にしかわ,しゅじ
+にしの,みどり
+にしやま,すすむ
+ぬかだ,いたる
+ぬまた,まさひろ
+ぬまた,しげとし
+のがみ,きょこ
+のぎ,あやこ
+のくお,まゆ
+のぐち,けいこ
+のざき,なおこ
+のじ,ひろかず
+のま,さやこ
+のむら,てつや
+のむら,ゆうじ
+ばこし,たけし
+はしもと,こうじ
+はすぬま,しんたろう
+はせ,ともや
+はせがわ,やすたか
+はたがわ,そのこ
+はたけやま,ゆか
+はたの,たかひろ
+はない,よしこ
+はまさき,ゆういち
+はまだ,さとし
+はまで,さとし
+はやかわ,あやこ
+はやし,かおり
+はやし,たかゆき
+はやし,なつね
+はやし,ゆき
+はやし,れいこ
+はやし,まさお
+はら,ゆひち
+はらしな,しんご
+はらだ,なおこ
+はらだ,ちえ
+はるな,よいち
+ひきた,ひろし
+ひだい,じゅんこ
+ひらい,ゆうこ
+ひらい,ようこ
+ひらい,りか
+ひらいわ,まこと
+ひらお,ひろたか
+ひらかわ,たかし
+ひらた,あき
+ひらまつ,あや
+ひろえ,さとこ
+ひろせ,さとし
+ふかざわ,じゅん
+ふかほり,ようこ
+ふくしま,すすむ
+ふくだ,ともひさ
+ふくだ,のぶき
+ふくだ,あつし
+ふじい,みどり
+ふじかわ,しゅすけ
+ふじた,ひでと
+ふじた,まゆみ
+ふじた,きょこ
+ふじむら,ゆすけ
+ふじむら,えりこ
+ふじもと,くみこ
+ふじもと,ひでかず
+ふじわら,まき
+ふじわら,よしあき
+ふたかた,たかお
+ふない,あつし
+ふるかわ,ひでのり
+ふるかわ,ひでゆき
+ふるまた,のりひろ
+ほし,まきお
+ほしうら,ひろゆき
+ほしろ,ひろふみ
+ほそだ,さやか
+ほり,りえこ
+ほり,かずみ
+ほりえ,けんじ
+ほりぐち,まさお
+ほんな,よしろ
+ほんぼ,ともゆき
+まえかわ,あきこ
+まえだ,しょへい
+まえだ,りゅへい
+まえだ,けいさく
+まきうち,さとし
+まきの,じろ
+まきもと,さちこ
+まさとうみ,ひろこ
+ますい,じゅにち
+ますだ,ともや
+ますだ,ゆき
+まつい,ひろし
+まつうら,いつみ
+まつおか,しゅんご
+まつおか,のぶひで
+まつおか,ゆき
+まつおか,のぶと
+まつかげ,のぞむ
+まつした,かおる
+まつなが,ひろゆき
+まつばら,みわ
+まつばら,こすけ
+まつもと,たかし
+まつもと,えつこ
+まつやま,けいじ
+みうら,しょこ
+みうら,とものり
+みうら,まいこ
+みうら,よすけ
+みき,まさゆき
+みずかわ,みほ
+みずたに,みお
+みずの,かずひさ
+みその,あきひろ
+みぞはた,ともこ
+みながわ,まゆみ
+みながわ,だいすけ
+みなみ,ひさお
+みなみ,さとし
+みなみかた,わたる
+みなみむら,のぞみ
+みはら,あきこ
+みむら,ひろみつ
+みやい,ほくと
+みやざき,まいこ
+みやざわ,りょ
+みやざわ,あつし
+みやむら,あつし
+みやむら,きよまさ
+みやもと,ゆうじ
+みやもと,ひろゆき
+みよし,ゆきこ
+むねむら,ゆせい
+むらかた,ただまさ
+むらずみ,ちえ
+むらた,まちこ
+むらた,あや
+むらもと,ひろゆき
+むらやま,たかし
+もり,たかのぶ
+もり,ひでき
+もり,まさき
+もり,みきこ
+もり,のぶあき
+もりうち,あつし
+もりした,なおや
+もりたに,あきら
+もりもと,かおり
+もりやま,あや
+もろえ,ゆへい
+やご,まさや
+やすがき,つかさ
+やすだ,ちかふみ
+やすもと,ともゆき
+やつなみ,みつのり
+やなぎさわ,くみこ
+やなぎはら,まき
+やぶなか,かずのぶ
+やまうち,なお
+やまおか,なおこ
+やまおか,かつまさ
+やまおき,あつひこ
+やまがた,くみこ
+やまぐち,みき
+やまぐち,のりこ
+やました,ゆひちろ
+やました,かずと
+やまだ,げん
+やまだ,こうじ
+やまだ,ひろかず
+やまだ,みのる
+やまだ,ともふみ
+やまなか,あやこ
+やまむら,あつし
+やまむろ,あきお
+やまもと,けいすけ
+やまもと,しんすけ
+やまもと,たいし
+やまもと,たかゆき
+やまもと,ただし
+やまもと,なおや
+やまもと,ひろゆき
+やまもと,まこと
+やまもと,しんいち
+ゆあさ,ひろこ
+ゆき,まどか
+ゆりやま,ちえ
+よこた,ちえ
+よこはま,じゅんじ
+よこやま,のぶこ
+よこやま,あや
+よしおか,まきこ
+よしおか,めぐみ
+よしおか,いっせい
+よしだ,かなこ
+よしだ,こうへい
+よしだ,てるひこ
+よしだ,まさゆき
+よしだ,みつよし
+よしだ,みのる
+よしの,しのぶ
+よしひろ,とおる
+よしまつ,あすか
+よしむら,わたる
+よしむら,くみこ
+わかまつ,なおこ
+わきた,のりひろ
+わきた,あつひさ
+わしお,としゆき
+わしざわ,あゆみ
+わだ,かずき
+わだ,きょうこ
+わだ,まいこ
+わだ,まりこ
+わだ,たかとし
+わたなべ,なおこ
+わたなべ,なおこ
+わたなべ,まりえ
+わたなべ,ゆうじ
+わたなべ,ゆうじ
+わたなべ,ゆか
+わたなべ,ゆみ
+やまぐち,とおる
+すずき,だいすけ
+ささの,かずふみ
+かねこ,ひろや
+くぼた,かずお
+こすけがわ,けんしろ
+かない,よしあき
+かとう,ちあき
+こだま,いさむ
+こばやし,としお
+こじま,いさお
+かめやま,たけし
+くらばやし,かつえ
+かんだ,かずしん
+こんの,とくじ
+かわしま,ひろし
+かわかみ,きよおみ
+かなか,よしひろ
+かわむら,よりみつ
+きむら,けいじ
+かすが,もとじ
+こじま,じろ
+かわの,すすむ
+かわな,たけし
+こずま,れいこ
+かわさき,まさなお
+かたの,さぶろ
+かただ,こういち
+きくち,たかひこ
+かみうら,としひろ
+かねだ,とおる
+この,かずひこ
+かわもと,のぶお
+かばや,かずゆき
+こぶくろ,じゅんじ
+くまがい,まさなり
+この,こうじ
+こやま,かくたろう
+きたしろ,ひろうみ
+こだま,しゅにち
+かとう,ひろし
+きむら,もとよし
+こいで,こういち
+くやま,よしまさ
+きりはら,たけし
+かよ,まさあき
+かねこ,まさあき
+こはら,あきお
+かとう,まさおみ
+こい,かずひで
+かやま,てつお
+こいけ,やすお
+こじま,しげみ
+こまつ,ひろし
+きたむら,けんきち
+きたわき,ゆうじ
+かさじま,ひでき
+きむら,しょひち
+かみぐち,ひとし
+かとう,たけし
+かわむら,えいいち
+かどた,としはる
+おたけ,いさお
+かとう,たけし
+きの,もりひろ
+かみじょ,まさただ
+きくち,としお
+かきうち,いわお
+こじま,ゆきお
+かたおか,せいいちろう
+くぼた,いさお
+きたざわ,くにひこ
+こみね,あきと
+くぼ,まさじ
+きたずめ,のりよし
+こばやし,ぜにちろ
+かわぐち,ひろふみ
+けがさわ,てつろ
+こち,さちお
+こやま,ふじお
+かわきた,としひと
+かわみつ,のぶたか
+かたひら,しげる
+かわぎし,ともみ
+こんど,のぶひさ
+きむら,まさみ
+くぼやま,まさゆき
+くまもと,ひろひさ
+かわた,まさみ
+くにのぶ,しゅんすけ
+かまだ,ひろゆき
+かく,まさあき
+かねこ,もとゆき
+こばやし,たかゆき
+かしお,かずとし
+かないわ,かつお
+けんもち,よしひこ
+きくち,ひさし
+かざま,みちお
+こまつもと,とおる
+こんど,たかひで
+きくしま,しょぞ
+こばやし,あつお
+くまがい,ひろし
+かとう,よしみつ
+まるばやし,あきひこ
+むと,しんたろう
+みたに,まさき
+みわ,ふみよ
+しみず,やすお
+みずの,たかし
+まちだ,おさむ
+まつい,おさむ
+みうら,あきら
+ひの,けんじ
+むらかみ,けいじ
+みやの,ただし
+まるい,おさむ
+むらさき,やすあき
+まさか,えいこ
+みねた,かつひこ
+まつなが,かつまさ
+みながわ,せいこ
+みやけ,まさとし
+まつもと,かずひこ
+みさわ,たかし
+まえだ,かつみ
+うだがわ,たけし
+みやはら,まさし
+むらい,つとむ
+まつもり,としお
+まさき,かずお
+みうら,かずたみ
+もとみや,りゅひち
+むらかみ,りょひち
+まとば,まさひろ
+みうら,ひろゆき
+まつかわ,まさのり
+みずたに,としお
+みやの,ひでのり
+まつだ,たけみ
+みす,ゆたか
+まつやま,せいじ
+みやもと,なおあき
+みずの,けんいち
+まるやま,としゆき
+まるこ,こぞ
+もちだ,としかつ
+もとはし,こうじ
+みずや,しょじ
+みやざき,しげき
+みやがわ,きくお
+むらしま,えいじ
+ますさこ,きよし
+もり,ひろふみ
+もりた,まさあき
+みなみ,としお
+みやき,かずひろ
+もりやま,なおひこ
+みずた,まさゆき
+まつい,ふさちか
+まつお,あきら
+まつした,としえ
+こばやし,ただあつ
+むかえ,ふみお
+もりい,せいじ
+もりた,みちたか
+むかい,とおる
+まつお,まもる
+むらやま,こうじ
+まつもと,みちまさ
+みやさと,みつる
+みやざわ,ただお
+もりむら,せいいち
+むらの,いちろう
+ますだ,かずお
+むらた,よしあき
+みやさか,まさお
+もとばやし,けんじ
+みずの,よしお
+ももい,みつぐ
+まつだ,まさよ
+すがわら,ゆたか
+まつばら,かつみ
+まつもと,まさじ
+みやはら,ぎょじ
+むらいし,たいぞ
+まつむら,まさお
+みよし,ときわ
+もりもと,よしひこ
+みずたに,としお
+まつば,みのる
+まつい,よしお
+むらかみ,たかし
+もりた,ひでお
+むらた,みのる
+まさき,のぶお
+みやざき,けんじ
+まつばら,まさみつ
+むらまつ,ゆりこ
+もり,よしお
+もりむら,とくお
+すわ,なおえ
+こわたり,まこと
+まつざき,みのる
+まっさき,あつよし
+みたく,まもる
+まつかわ,まもる
+もぎ,てつよし
+まぶち,かずお
+まつもと,たけし
+もり,あつし
+まつうら,かん
+まえだ,かずお
+ますだ,しげはる
+まえにし,しげお
+まるやま,ひろし
+まつだ,よしき
+まき,しんいち
+もうえ,あつし
+むらい,のぶゆき
+まつい,まさかず
+もりた,よしみ
+まえだ,なおき
+むらうち,よしのぶ
+みつやす,まさひろ
+もり,けいぞ
+まつだ,さとし
+まつお,しこ
+まるやま,きよし
+まつがえ,としろ
+かみくら,りょひち
+みどりかわ,かずなり
+ますだ,あきお
+みてら,ひろし
+まつなが,ひろし
+もりおか,なおや
+みそお,たかお
+むらやま,としひこ
+もりもと,しんいちろう
+もり,とよみ
+ますだ,くにひこ
+みやもと,まさる
+むらた,たかぶみ
+みなみさわ,いさむ
+ましま,あきら
+もりぐち,けんじ
+まつい,さとし
+まえかわ,まさふみ
+もちずき,あきお
+ますだ,しげひろ
+まつもと,こういち
+もりなが,ゆうじろ
+ますだ,しげのぶ
+みうら,やすお
+まつの,あきら
+まつおか,よしみ
+まちい,えつお
+みずたに,かつよし
+まつもと,しげる
+まさき,つとむ
+まつもと,ひろたか
+みつや,かつまさ
+みずの,よしてる
+まえだ,かずひろ
+むらまつ,すみひろ
+むさしの,よしあき
+まえはた,たかし
+まつざわ,ひとし
+みつい,じゅん
+ももだ,しんきち
+まつお,じゅんぞ
+みわ,かずのり
+むらかみ,ひろたみ
+みかみ,くにお
+ぬかざわ,ただお
+なかむら,よしてる
+にしむら,こういち
+にった,としお
+ながつゆ,よしのり
+にいの,ひでと
+たぶち,たけし
+にしの,ひでやす
+ぬかた,じろ
+にしむら,ふみお
+ながの,けんじ
+なかがわ,あきら
+にしやま,まさひこ
+なかじま,よしお
+にしだ,よしかず
+なかむら,みつかず
+のむら,かつみ
+なかもと,しゅじ
+なかがわ,てつや
+なるさわ,はるき
+ないとう,しんじ
+のべ,しずえ
+にしな,くにひこ
+のむら,けんじ
+なかむら,ときやす
+にかいど,ひろし
+なかだ,けんじ
+にしな,さぶろ
+なりた,たもつ
+のぐち,ひさお
+のや,たかゆき
+ながい,よしあき
+なかむら,ひろし
+にいずま,まさひろ
+なかがみ,みつお
+ながた,ふみお
+にしざわ,ゆきお
+のせ,のりあき
+ながい,かずたみ
+にしざわ,つねお
+なかはた,たけお
+なかじま,よしひで
+なかだ,やすのり
+のなか,ただし
+なかがわ,しんじろ
+なかしま,よしやす
+なかもと,たつお
+にしおか,きみひと
+にしまえ,としお
+なかむら,よしひろ
+なかにし,こき
+のだ,まさと
+なかむら,きよし
+なかざわ,たかみ
+にしだ,しゅひち
+にしだ,きしお
+にい,はつえ
+やまもと,じゅろ
+なかうち,ゆきお
+なかじま,まさお
+なかむら,かずとし
+のむら,ひろし
+にしむら,まつお
+のなか,まさき
+にしむら,まさあき
+にしお,たみお
+ながお,まさる
+にいみ,ひろし
+なかむら,しんたろう
+ねずか,まさお
+なかむら,かずお
+なかざと,むつや
+あさの,あきひこ
+のがみ,りょひち
+なかじま,よしろ
+ないとう,ただゆき
+なかむら,りょじ
+なかにし,ひとし
+なかだ,やすお
+ながさわ,かずたか
+ながの,まさみ
+にった,くにひこ
+なんば,やすひろ
+のずえ,ただひこ
+ながみ,としひで
+ながい,きよし
+なかはら,きよし
+なかじま,けんじ
+なかじま,ひでゆき
+にしだ,よしのり
+なおい,ゆきとし
+なべしま,てつや
+なかの,じゅん
+なかむら,くにひろ
+のだ,かずひこ
+なかせ,かずあき
+なかじま,よしのり
+ながさわ,きよあき
+にへい,たみお
+ながい,たかし
+なかしま,かずゆき
+なかお,ゆたか
+なかがわ,みつひろ
+ないとう,くにみつ
+のじま,ひろし
+ながの,じゅにち
+にしだ,みずほ
+なかだ,たけよし
+なかはら,かつお
+なかじま,あきひこ
+ねもと,しちろ
+なかむら,よしまさ
+ながとも,しょひち
+なかむら,はるお
+なかやま,みつよし
+なかむら,としあき
+なかむら,みつしげ
+のじま,ただし
+ながふち,みつよ
+なかの,りょすけ
+にしやま,たかお
+なかむら,せい
+ながしま,のぶお
+にわ,こういちろ
+なかの,ゆすけ
+おにざわ,ゆきお
+おしかた,かずお
+おか,きよし
+おくやま,たかのすけ
+おき,むねたか
+おかみや,きよし
+おぐら,けんじ
+おで,まさみ
+おのだ,ひとみ
+おにし,よしお
+おくだ,ほずみ
+おくだ,ふみのり
+おがわ,てつろ
+おの,やすろ
+おすみ,ごいち
+おつか,しんいち
+おとも,まさゆき
+おかざき,なおじ
+おはし,ゆたか
+おぎの,やすあき
+おさだ,ゆきお
+おば,まさお
+おしま,かつひろ
+おかわ,のぼる
+おかもと,すみお
+おがわ,けんじ
+おの,まさき
+おかの,まさのり
+おざわ,まさひこ
+おはく,まさき
+おしたに,きょいちろう
+おざわ,としお
+おはし,こうじ
+おはた,まさお
+おのでら,こうじ
+おの,たかし
+おほか,まさあき
+おの,ゆうじ
+おはし,ひろし
+おた,ふみお
+おもり,しずあき
+おしま,ひさし
+おかもと,あやこ
+ひろせ,かずや
+おみず,ひろし
+おの,とおる
+おちあい,きよと
+おかべ,とおる
+おたに,ゆきまさ
+おくの,ひろし
+おすが,たかし
+おのき,ひろし
+おひし,たかのぶ
+おかだ,ことく
+おみじゃ,みや
+さたけ,ふみお
+おだぎ,ふじこ
+おた,よしのり
+おふち,ゆたか
+おかわ,たかし
+おかど,けんたろう
+おさわ,こ
+おぎさわ,こういち
+おかべ,ともゆき
+おとよし,やすお
+おがわ,みつお
+おりがさ,まさひさ
+おば,たい
+おばた,あきひろ
+おの,しげお
+おさか,けんいち
+おみね,かおる
+おた,じょじ
+いのうえ,もとつぐ
+おこし,ゆきひろ
+おざわ,つねお
+おかべ,はちろ
+おぼら,さとる
+おた,ただよし
+おざき,かおる
+おくだ,さとる
+おざわ,ひでき
+おかだ,ゆきひろ
+おつか,あつし
+おのでら,ひでお
+おしお,たつろ
+おだしま,やすたけ
+おざき,ゆきこ
+まえだ,たかし
+おき,たかよし
+おのだ,まさや
+おなぎ,けんぞ
+おくだ,よしひこ
+おひら,あきお
+おのざわ,しげき
+おぎはら,ひでお
+おくま,けいいち
+おはら,えいじろ
+おき,じょひちろ
+おがわ,じゅにち
+おひゃ,やすひろ
+おさわ,てるあき
+おはら,すすむ
+おだ,こうじ
+おざわ,こういち
+おがた,ただしげ
+おかの,ただし
+おひし,しげる
+おない,みつお
+おつか,まさお
+おつか,ときえ
+おいで,あきら
+おきやま,よしきよ
+おぐし,せつじ
+おだ,としひこ
+おかばやし,くにあき
+おたに,かずお
+おつき,のぶひろ
+おかだ,かつすけ
+おすみ,たつや
+おひがわ,ひでほ
+おかだ,さぶろ
+おざわ,ひろよし
+おたに,たかこ
+おざき,みつお
+おた,りょすけ
+やなぎや,あきこ
+なかたに,しま
+こばやし,ひろゆき
+みくに,じゅんこ
+すずき,てつお
+はだの,よしあき
+みやま,かずこ
+たかはし,あけみ
+しらおがわ,やすし
+なかむら,ただひろ
+まつざき,じゅんじ
+やました,あゆみ
+しもやま,ひろし
+ふたむら,ちはる
+くわ,たかはる
+なかむら,すすむ
+よこやま,かずひこ
+ひるま,てつろ
+たちかわ,ひろゆき
+わかばやし,まさこ
+たかはた,ゆかり
+あべ,しんいち
+せき,ひでし
+やまざき,よしひろ
+やまね,じゅにち
+たざわ,ゆきまさ
+かじかわ,かおり
+さとう,まさと
+かわうち,らいた
+おひゃま,あそか
+しんみょ,きいちろう
+たちわだ,たかよし
+おくぼ,しげる
+とご,のぶゆき
+ながくら,たかし
+いとう,としみつ
+やまざき,ひろあき
+かざま,ゆきこ
+かんばやし,なおみ
+ささの,てるみ
+かわしま,とも
+しんぐう,えみこ
+こいずみ,りゅご
+かねこ,ひとし
+こばやし,よしひろ
+かもした,じゅんじ
+たむら,あさこ
+はせがわ,まさひろ
+くりはら,まりえ
+かなおか,のぶこ
+こばやし,じゅんこ
+ひいし,なおみ
+にへい,てつや
+まるた,ひろゆき
+とひゃま,たかはる
+せきざわ,けんそう
+ありま,せい
+くりはら,はるゆき
+すみの,ひでお
+よしだ,めいこ
+きのした,みゆき
+おちあい,のりあき
+うまやはら,たくや
+ほそかわ,よしみ
+ふかがわ,すえつぐ
+かわむら,しゅいち
+まつい,さちよ
+よしもと,たかし
+うなかみ,ひろふみ
+かねまつ,ひろし
+かわかみ,ゆきたか
+とよだ,たかゆき
+やの,いくこ
+せき,なおこ
+なかにし,なみ
+はしもと,ちか
+ふかや,やよい
+みやもと,ともえ
+たけだ,みのる
+みやざわ,ひでき
+いけだ,ともこ
+おしま,みゆき
+なかむら,やすみ
+ごと,ひろこ
+うしごめ,しんじ
+くわやま,えいぞ
+つかだ,けいこ
+むらた,たかひろ
+さとう,ともこ
+くろだ,さきこ
+すぎもと,まこと
+やすだ,ひでお
+きうち,あきひこ
+けどういん,たかあき
+たなか,ひとし
+なかむら,あき
+くりはら,くにあき
+たきざわ,ひでくに
+うえだ,としふみ
+こべ,みきお
+のぐち,かずひこ
+この,ひろし
+とみた,えりこ
+おた,ゆういちろう
+まき,ひろし
+あまの,ひろあき
+こみね,ちはる
+さとう,ちかお
+いまで,よしたか
+まつなが,かおり
+すずき,くにお
+まつお,こういち
+さいとう,さとし
+よしざわ,じゅにち
+うやま,ちか
+あんどう,ひろあき
+すずき,とよひこ
+よしだ,かずのり
+かわだ,ひであき
+ふくだ,ひであき
+もりしま,ふみお
+つちだ,ともひこ
+さかい,かなめ
+つかだ,ゆきこ
+はっとり,ひかる
+たむら,けんいちろ
+わたなべ,あきひろ
+こすぎ,ともや
+ひらた,ゆうじ
+すぎやま,たつや
+もりかわ,たけし
+かどた,かえ
+さの,きょいち
+おざき,わたる
+よこまつ,けいこ
+たなか,まさひこ
+いしさか,さとし
+いしざわ,かずとし
+こばやし,えみこ
+よしだ,けい
+きむら,まさし
+おつか,とうる
+あだち,みちやす
+あかさか,あつし
+みやもと,ひろし
+いちむら,こうじ
+おした,なおき
+ほんだ,たかあき
+かやぬま,けいた
+のざき,よしゆき
+かどわき,もとはる
+おじ,あきひろ
+たぐち,ひろし
+たけいし,てつお
+ひらい,かつひさ
+かなざわ,ゆみこ
+ふるかわ,こういちろう
+もりなか,ゆずき
+あらい,じゅん
+たなか,ともあき
+しみず,りえこ
+いちはら,たける
+きたのはら,たかし
+きたお,しょうじ
+もりもと,みどり
+きたむら,かおり
+ささざわ,のぶゆき
+まつおか,おさむ
+こうら,こうじ
+みわ,ゆうじ
+よしおか,ふじえ
+ほり,やすひろ
+さいとう,やすつね
+ながせ,あきと
+もりしま,しんじ
+おわり,じゅにち
+たなか,えりか
+てらむら,まさよ
+こばやし,としあき
+さいとう,よしのり
+きむら,よしゆき
+はしもと,まさる
+なかがわ,ひでひろ
+なかむら,ともひと
+はぎわら,ひでき
+にしかわ,りかこ
+きたじま,たけし
+たかうら,なおこ
+あさだ,たかひろ
+きたずめ,ひろこ
+ねもと,ひろこ
+たなか,ゆみこ
+たなか,よしひと
+あだち,ひではる
+はら,ひろか
+あかまつ,まきこ
+いまむら,みき
+むらやま,としまさ
+たけうち,きょぞ
+ずし,ひろのり
+こばやし,たけし
+やまざき,よしひさ
+はまぐち,てつや
+かげやま,まさおき
+かなもり,くにひこ
+かとり,ともみ
+あらい,こういち
+みやた,やすお
+すずき,ひでよ
+はるた,あらた
+なかざわ,わかこ
+すが,まさひこ
+まえでら,かずひろ
+あらまき,かずひこ
+きたの,まさゆき
+よしの,けんご
+みくりや,あつし
+おくのぎ,よじ
+さくらい,たかゆき
+こんど,やすお
+すずき,かほ
+くりはら,あつこ
+むこうぐち,そいち
+ふじい,ひろゆき
+かげ,ひでき
+まえだ,つよし
+ながほり,しょへい
+つじ,まりこ
+きむら,えみこ
+まつお,ひでや
+たての,たかし
+きむら,まさゆき
+すざき,てるゆき
+いわさき,あつし
+さとう,たつや
+にった,しげみつ
+たなか,ようこ
+しまだ,けんじ
+たにぐち,よしかつ
+ほんだ,なお
+なかたに,のりこ
+みやじま,くみこ
+くきやま,まき
+せきね,あきひろ
+よしはら,ゆうこ
+ひらた,のぶや
+ながさわ,ゆきこ
+なかがき,ももこ
+くろかわ,しんたろう
+かけたり,こういち
+いとう,のりよし
+まえかわ,まこと
+まつだ,たつや
+くわはら,みやび
+いいずか,ゆり
+まじま,だいかん
+むらた,まり
+あきいけ,あかね
+なみき,のりこ
+よしの,すなお
+すずき,たかし
+たむら,しゅん
+かめだ,こうじ
+にし,りょたろう
+いなおか,さとる
+いわさき,まさかず
+かんだ,としお
+ただ,けいこ
+うつ,やすゆき
+しまだ,けんじろ
+よしだ,かよこ
+おくがわ,じゅんじ
+すずき,あきお
+たんぽ,まこと
+わだ,わかこ
+うるしはら,ひでゆき
+いいお,ともこ
+にいはら,ゆういち
+おむら,てつや
+いのうえ,みきこ
+もりなが,ゆき
+さの,みどり
+なかたに,しんや
+あべ,やすし
+うちだ,けんじ
+ひろた,ゆうじ
+いわくら,なみ
+いしおか,えいき
+ときた,ともあき
+きのした,まさお
+みずの,ひろゆき
+やすえ,よしふみ
+いわもと,けいこ
+やまじ,みねこ
+こさい,なおこ
+くぼ,えいすけ
+ちば,たろう
+やつたに,きょこ
+いがらし,たくや
+あらかわ,ぜんじろ
+てらさき,としひろ
+せごえ,ひろし
+とくしま,まさやす
+ばんど,まさなお
+たきざわ,けんじ
+みずさき,ゆさく
+たきぐち,かいじろ
+ひおき,ひであき
+なかい,なつこ
+おいかわ,なおすけ
+まつむら,あいこ
+えんど,まさみ
+たじま,さとる
+やまざき,ゆかり
+せのお,ゆうこ
+はらだ,としえ
+ふくい,ひかる
+まつうら,あつし
+かわむら,たかずみ
+てらもと,あかね
+はぎわら,もとあき
+なかしま,さとこ
+きのした,まさこ
+あらい,しょこ
+むらやま,けんじ
+さえぐさ,けんたろうう
+たなか,けい
+まえだ,まさし
+みやざき,あつみ
+いけべ,れいこ
+くわばら,ちぐさ
+よだ,よしお
+たちばな,さとこ
+やまぐち,えいじ
+いしはら,こうじ
+たきざわ,としまさ
+ひらの,ともか
+かわさき,けい
+やまもと,ゆういち
+あらせ,たかみち
+やなぎさわ,たくみ
+しおや,えみこ
+さとう,みちお
+かとう,ちずる
+おの,じゅんこ
+きたはま,ともみ
+ごと,みつこ
+にのみや,おさむ
+うすい,かずみ
+みずしま,あきら
+すどう,たかのり
+いけだ,たかお
+なかひがし,やすあき
+くりもと,よしあき
+とだ,けいこ
+はかまた,まさあき
+たにぐち,よしぶみ
+いまぜき,たかよし
+ほりお,ひさとし
+かすが,あつし
+かわせ,まさのぶ
+さとう,あきえ
+たかなし,こういちろう
+まつした,ひとみ
+やぐち,よしたか
+かねこ,やすまさ
+ひだか,のりこ
+さっさ,まゆみ
+そが,とものり
+すぎうら,たける
+さとう,まこと
+たにばやし,あきこ
+にしおか,ありしげ
+ともなが,ろわる
+おはし,ひろたか
+ながしま,あつのぶ
+たにがき,はるみ
+こうだ,いくこ
+きよの,まゆみ
+やまかわ,つよし
+なかじま,なおこ
+もてぎ,ひろみ
+おぬま,のぶあき
+さとう,たかし
+ふるいえ,ひでき
+あいもと,かずゆき
+よこお,みお
+にしかわ,たいち
+びと,たくや
+きたむら,けんたろう
+やまかわ,あみこ
+とみた,さちこ
+つちだ,たかし
+いしぐろ,なおき
+まつお,ひでき
+うえもと,せいた
+いいだ,せいこ
+すずき,こみな
+たむら,さとし
+おくだ,としお
+ほり,ひろし
+くさつぐ,こうじ
+やまだ,ゆたか
+あさはら,しげお
+とくだ,よしこ
+いでた,もとふみ
+いとう,くにお
+さとう,けんじ
+つじさわ,よしなが
+おの,しんや
+いわま,さだはる
+だいごく,たけし
+やまむら,ひでと
+はせがわ,りえ
+いぎ,とおる
+まかべ,こういちろ
+おかもと,みきこ
+おはら,しげひろ
+せきやま,かずよし
+きたじま,のぼる
+とりうみ,よしみ
+みやざき,やすし
+うい,まさなお
+くらもち,たかひろ
+しおぬま,まんなり
+らいた,よしひろ
+しもこべ,てるみち
+さわの,きいちろう
+さかにし,けい
+ささき,こうじ
+せいの,のぶあき
+すずき,じゅにち
+さかもと,よしかず
+すずき,としかず
+さわの,たかひろ
+しが,まさかつ
+ごと,かつお
+すだ,ゆきなお
+すずき,かずお
+さかきばら,ひろあき
+さとう,まさひろ
+さかぐち,たてお
+すぎさき,よしひと
+すえき,かずひろ
+すずき,ひでとし
+しばた,いくお
+すぎやま,のぶかず
+さかい,てるお
+しみず,ゆうじ
+すぎもと,としお
+さとう,けいぞ
+せき,あきよし
+さくらい,としお
+せきぐち,しろ
+さとう,かつや
+すずき,てつや
+さいとう,とくまさ
+せきね,じゅんじ
+すずき,よしこ
+いいだ,としお
+すずき,けんじ
+ささき,よしのり
+すえなが,みつくに
+さかもと,たかし
+さいとう,のぶあき
+すがお,ことじ
+しまず,ただお
+さいとう,まさゆき
+しのざき,ただし
+すずき,としお
+すなが,たくじ
+さとう,おさむ
+すずき,はるゆき
+せきね,こすけ
+ささき,えいじ
+さわだ,ゆのすけ
+さいとう,ただお
+しもぞの,とよふみ
+すえ,つとむ
+さどとも,きよたか
+せきね,ひろし
+さとう,みつお
+さんご,としお
+すどう,ひであき
+そのだ,まさみ
+しま,てつじ
+さとう,みのる
+さとう,ふみお
+しぶや,あきら
+さとう,よしゆき
+さとう,けん
+さかた,おさむ
+さいとう,けいたろう
+すわき,さだのり
+そり,としお
+さかもと,あきら
+しらいし,かずお
+すずき,ただひこ
+しまだ,たかし
+すずき,あきら
+すずき,けんすけ
+さとう,さとし
+すずき,よしのぶ
+さとう,くにあき
+しげまつ,なおみ
+さがら,みのる
+さいとう,よねぞ
+しんぐ,とみお
+すがぬま,かずあき
+そが,かずお
+ささき,てるひこ
+さとう,よねお
+さわだ,おさむ
+そま,たかし
+しばた,たけじ
+さとう,しゅにち
+さとう,まさとし
+しまだ,あきお
+ささき,としお
+さとう,まさひろ
+さいとう,よしお
+しもで,はじめ
+ささき,きよし
+さとう,つとむ
+さとう,きよし
+さわだ,たかとし
+しろさき,ゆきお
+しばい,たかお
+さいとう,てるのぶ
+すずき,たけし
+そがべ,のぶゆき
+せがわ,しげる
+しみず,てつお
+すずき,おさむ
+しろやま,たけお
+しいな,みちこ
+さやま,きよし
+さかもと,ひでお
+さとう,のぶお
+すずき,けんじ
+すずき,しげる
+ささせ,ひでき
+さくらい,としお
+しまだ,よ
+さとう,ひさお
+しもの,しんいち
+すずき,よひち
+すぎもと,すすむ
+しみず,みちお
+さの,としお
+すずき,いさお
+しまだ,ちひろ
+すずき,みのる
+すぎふじ,よじろ
+さかい,よしひこ
+さかぐち,よしお
+すがわら,まもる
+しのずか,まこと
+しが,ひろし
+さかがみ,ただよし
+すずき,てつろ
+すぎの,かつゆき
+すぎうら,まさき
+しみず,せいじ
+すずき,かつひろ
+ささこ,よすけ
+せき,よしなり
+さとう,まさお
+しま,たけお
+すずき,よしのぶ
+さかもと,こへい
+ささき,かずひこ
+しまだ,はるひさ
+さいとう,ひとし
+しおた,しんいち
+しおだ,えいじ
+すだ,だいさく
+しいな,じゅにち
+しおのや,みつお
+さいしょ,とよま
+そいだ,かずゆき
+そま,ひでお
+さとう,すすむ
+さとう,かずみ
+しおばら,たけしげ
+ささおか,せいぞ
+ささき,ゆきよし
+せと,たつじ
+しゅど,ひろし
+さかもと,きよてる
+さくま,よしかず
+しのざわ,ひろし
+しおばら,いそじ
+さくらい,ただひさ
+さとう,とよお
+さくらい,いさむ
+ささべ,えいじ
+さとう,けんぞ
+すぎうら,てつお
+さかい,やすひろ
+そま,えいいち
+そひゃ,かんじ
+そねかつ,ひろし
+せきね,たけみち
+すずき,きよえ
+せきね,よしたか
+さかきばら,みつのぶ
+しもかわべ,ふみお
+さわむら,たかお
+せき,ひろし
+すずき,たかし
+さかまき,つよし
+さがわ,ひろゆき
+すぎやま,ゆずる
+すぎもと,めぐむ
+せお,としお
+さいとう,ひろし
+さかい,りゅぞ
+さくらい,ゆぞ
+せきね,まさお
+さとう,のぶお
+しみず,せいじ
+しみず,あきら
+さいとう,たけお
+さくらい,のりお
+すぎやま,としつぐ
+しずか,かずとし
+しらかわ,けん
+さいとう,なるみ
+さきもり,じゅにち
+さとう,こずえ
+せきぐち,ひであき
+せきね,としひさ
+しばた,たけゆき
+すずき,こ
+さいとう,ゆうじ
+さとう,たかし
+せきね,みきお
+さかい,ただひろ
+ささお,まさのり
+すどう,はつみ
+もり,たかし
+しみず,としお
+さとう,まさお
+すずき,まさあき
+しむら,やすお
+しばさき,ひさなお
+すがまた,あきら
+すずき,ゆずる
+しおのや,いわお
+たかはし,てつお
+つきやま,おきとし
+つのだ,のりこ
+たかはし,こうじろ
+とくざわ,たかひろ
+たぐち,ひさお
+たかぎ,のりお
+たかの,おさむ
+たはら,はるひこ
+とよさわ,しんじ
+とよます,まこと
+たかはし,しょじ
+たけうち,えいぞ
+たきいし,てるお
+たかいし,いさお
+たかさき,ひろとし
+たにがわ,ひろし
+たかはし,かずお
+たなはし,ひろし
+たまき,きよかず
+とば,としろ
+たばた,きくお
+つじ,よしき
+たなか,なおと
+たかはし,もりはる
+とくなが,まさお
+たぐち,ひでお
+たきざわ,てるみつ
+とみ,きよかず
+つじ,こういち
+うちだ,けいいち
+たなか,まさのぶ
+つねよし,ていじ
+たかの,りょじ
+たかはし,しげお
+たかやなぎ,けんじ
+たけだ,ひろゆき
+たぼ,まさとし
+たなか,こうじ
+たけうち,ひろし
+たかやす,まさし
+つちや,たかし
+とくなが,たかお
+つちだ,あつし
+つぼい,まさのり
+たかはし,きみお
+つかもと,まさお
+たなか,かつしげ
+ともつね,たねまさ
+ちじ,けいこ
+さとう,としお
+たかた,いわお
+とはた,のりかず
+たかはし,むねお
+たかはま,ゆきち
+てらさわ,よいち
+たかばやし,けいすけ
+てらだ,ゆたか
+つかだ,かずお
+たなか,まさき
+とりまる,とよみ
+つちだ,ゆはつ
+たきもと,けんじ
+たきい,なおかた
+たねだ,えいえつ
+たむら,まさしげ
+たどころ,さだむ
+たかお,しげる
+たなか,すすむ
+たかはし,としはる
+たかはし,せいじ
+たかはし,つねお
+とみた,よしみ
+たかはし,みのる
+たにぐち,よしあき
+たなか,なおこ
+つぼい,しょじ
+たけうち,しゅじ
+つだ,せいじ
+たけだ,ひでお
+たけい,たみお
+つじかわ,まもる
+たけむら,としひこ
+たき,ひであき
+たかだ,けんじ
+たきざわ,よしのり
+たなか,ひさお
+たにむら,ますみ
+よしざわ,ひかる
+つねかわ,はつお
+たなか,しげゆき
+たかだ,ふじお
+つる,とおる
+たに,あつのり
+たぐち,みちあき
+たなか,ゆぞ
+たにぐち,ひろみ
+たなか,ほぶん
+つじ,とよし
+たなか,まさゆき
+つゆき,しげお
+たまる,ゆういち
+つちや,せいじゅ
+つるおか,まさあき
+たかはし,まさあき
+たかはし,しげる
+とふくじ,まさじ
+たなか,たけよし
+たかぎ,まさはる
+たかはし,たろう
+たにぐち,ひろし
+とよだ,かつお
+たかぎ,あきら
+たけい,まさひろ
+つだ,いさお
+つねひろ,じゅんぞ
+たきざわ,かずひろ
+たちばな,のりみつ
+たかはし,ゆひち
+たにぐち,かつみ
+たけだ,ひさお
+つちや,まさみ
+たかはし,けいじ
+たのうえ,のぶお
+たかばたけ,てつお
+たかはし,みつこ
+ふなき,としお
+たけだ,おきつぐ
+とくなが,きょこ
+あさい,よしひさ
+たかはし,りょじ
+たかはし,ひとし
+たがわ,たけし
+たなか,しげる
+たちかわ,ふみお
+たぐち,じゅんじ
+たかさき,としお
+たまおき,ごいち
+たなか,かつゆき
+たかの,こすけ
+たけうち,かずと
+つだ,けんいち
+たかなみ,としあき
+つきなわ,ひこさぶろ
+とみもり,まさのぶ
+たけだ,またさぶろ
+とがし,てるやす
+つずき,かつまさ
+とびた,たつ
+ともなが,ゆうじ
+つつい,みきこ
+たかぎ,のりお
+たにぐち,しょひち
+たかの,のぶゆき
+たなか,たけし
+とまつり,かずよし
+たかぎ,あきら
+たかしま,しずお
+たはら,せいいちろう
+たなか,しん
+たかだ,しげる
+とりい,せんじ
+たけべ,まさる
+つかもと,よしなお
+たむら,すすむ
+とみなが,とおる
+たかいわ,てつひこ
+たばた,しげとし
+たかはし,のぶあき
+てんぽりん,つねかず
+てらうち,しげあき
+たかはし,じゅんじ
+たかせ,かずとし
+たけむら,としひろ
+たむかい,さとし
+たかはし,しろ
+たけつ,いつお
+たのおか,ふみお
+たかはし,よしあき
+とひゃま,かずこ
+たけうち,よしお
+たかはし,みつゆき
+うしお,のぶゆき
+うすぎ,あきお
+うちやま,のぶひろ
+うめだ,さかえ
+うけもり,さとし
+うちだ,けんじ
+うえだ,くにお
+うちだ,そひち
+うつき,さだゆき
+うえだ,きよし
+うちだ,ちから
+うえはら,もとい
+うえむら,ふみお
+うちだ,ゆうじ
+うちむら,かつじ
+うちだ,すすむ
+うちだ,ただし
+うえき,きよのぶ
+うかじ,あつし
+うちだ,まさお
+うえむら,ゆずる
+うしお,かずひろ
+うめむら,よいち
+うめしま,かずすけ
+うこん,まさな
+うちいけ,みちや
+うるしの,ひさお
+うちなし,けいじ
+うぐさ,てつお
+うの,みきひこ
+うえき,ひでき
+うえもと,しゅ
+うえむら,のぶや
+うえはら,さだゆき
+うえだ,けいいち
+わたなべ,けんすけ
+わたなべ,けいいち
+わたなべ,あきこ
+わかむら,まさてる
+わたなべ,まさあき
+わたなべ,ひでお
+わたなべ,とくじ
+わたなべ,としお
+わたなべ,りきつぐ
+わたなべ,かおる
+わたなべ,じゅにち
+わたなべ,たかあき
+わきた,へいた
+わたなべ,まさゆき
+わたなべ,としひで
+わたなべ,みのる
+わたなべ,けん
+わたなべ,ゆきお
+わたなべ,ひろし
+わだ,しんぺい
+わたなべ,ひさゆき
+わだ,かつみ
+わだ,きんや
+わたなべ,やすろ
+わたなべ,ひでじ
+わたなべ,よしたか
+わかばやし,ひろはる
+わたなべ,かつなり
+おた,ひでお
+ふじわら,かつひこ
+こいけ,やすあき
+かたおか,ただし
+ひろしげ,こめい
+しんざわ,ときお
+みずかみ,こんご
+なかじま,あきら
+ふくしま,おさむ
+なか,けんじ
+ひらやま,すみただ
+にわやま,やすし
+しみず,たつひこ
+ふるさわ,たけみつ
+さくらい,ほまれ
+たけなか,まさあき
+すぎうら,あきら
+かとう,しげあき
+ほしかわ,みねお
+おがわ,ひさお
+かしわぎ,まこと
+さかい,すみあき
+もり,みちお
+ほんぼ,てつや
+いいじま,きよし
+こじま,ひろし
+たかはし,まさみつ
+はた,けいいち
+おがわ,しげき
+つちや,ひろし
+こやま,まさこ
+ふるみ,かつじ
+くめ,そじろ
+くらた,つよし
+うしじま,みずほ
+えばと,あつのぶ
+さとう,かよこ
+むしゃ,けんじ
+ゆあさ,まさお
+きくち,いさお
+まつばやし,こ
+まつい,ひろこ
+たけむら,はるお
+てらしま,のぶゆき
+くら,よしあき
+まつい,たかお
+うえだ,のぼる
+はやし,しょすけ
+かわな,あきのり
+はやし,かつや
+でもと,いさお
+しぶき,てつお
+はま,つねお
+えんど,せつお
+みやもと,まさかず
+まつだ,かつのり
+やまもと,のぶゆき
+むらかみ,なおひこ
+おかだ,まもる
+わたなべ,なおき
+いわさき,てるよし
+よしだ,あきら
+おもり,ひろし
+みずたに,よすけ
+すぎうら,ひでくに
+のなか,よしお
+わたなべ,いさお
+さいとう,しんいち
+おかわら,だいじろ
+かどいけ,かずお
+まつもと,まさひろ
+なか,たけし
+かとう,たつお
+かわいし,こざぶろ
+ながさわ,たかひさ
+すやま,ひろし
+くましろ,ともこ
+たかばやし,しげお
+こんど,だいきち
+いなば,かずゆき
+こばやし,あきよ
+やまぐち,すみゆき
+すずき,まさのり
+あきやま,ひさえ
+たかだ,かずお
+さわい,みつたか
+なかた,いさむ
+いたば,たけお
+くにぎた,げんたろう
+やまだ,たけただ
+やまだ,のりかず
+たかはし,たかお
+うめむら,けんぞ
+こばやし,ゆうこ
+かねみつ,つとむ
+なかがわ,くんろ
+きど,ひろし
+かねき,ひでお
+こむら,けんぞ
+ふじもり,さとる
+やました,としひろ
+くりやま,みかこ
+とざわ,ゆうじ
+いしい,ゆたか
+たかはし,あきら
+たなか,まさひこ
+いしざき,きよゆき
+はらだ,ゆひち
+とくひさ,よひち
+いしむら,ようこ
+うえだ,ゆうこ
+おふち,よいちろう
+やつるぎ,のりひこ
+みなと,のぶあき
+よしだ,ただお
+みなみ,よざぶ
+おか,まさし
+いちかわ,ただお
+おくぼ,まさひろ
+いしだ,けんいち
+とみた,てるたけ
+ひらおか,まさひろ
+かとう,たかし
+おむら,ちかとし
+おさじま,よひち
+ふなこし,かずみ
+こだ,てつお
+あさおか,まさひろ
+かすが,しげやす
+ももはら,ただひろ
+うえむら,たかし
+おばた,くにひろ
+おのだ,みつお
+みやした,まゆみ
+ほそや,まさひろ
+やしろ,やすお
+わたなべ,あきお
+きむら,かずお
+かみじょ,ひでき
+さとう,ひろゆき
+まつしま,いさお
+かたやま,ひろひさ
+ひらの,ひでお
+なからい,むつお
+よこやま,としや
+おがね,せつお
+きむら,ひであき
+のざさ,たつお
+もりの,あけみ
+えちごや,ぶにち
+ふくしま,としひで
+いとう,かずこ
+いけだ,ゆきお
+とくなが,かんじ
+きもと,やすお
+おしだ,ゆきお
+はしもと,あつし
+のぐち,ときち
+みやべ,ひさえ
+くわはら,よしおき
+きむら,あきら
+おだ,ようこ
+あいざわ,ごへい
+うえの,だいすけ
+まつばら,ひさお
+たまい,ともひろ
+しらい,まこと
+おはし,よしのり
+たみや,かずしげ
+はらだ,みちひこ
+うすい,ひでお
+こり,まさゆき
+のだ,ゆきこ
+なみき,りえ
+なかお,あいこ
+かどや,さとこ
+おの,のりかず
+しぶかわ,としのり
+いわさわ,かずと
+たぶせ,やすえ
+おさわ,ひろみ
+なかだい,かずゆき
+えがしら,たみお
+ささき,かつお
+ふくち,のりゆき
+よしやす,かずみち
+わたなべ,よしお
+うえの,こうじ
+えと,ふみや
+よしだ,よしこ
+たけい,たかし
+はやし,こういちろ
+またき,しげひこ
+もりもと,まさと
+いはら,まさみつ
+つかはら,あきら
+かの,としひで
+むねゆき,しんいち
+おつぼ,まなぶ
+やまもり,いちろう
+あんどう,たかよし
+やまざき,けんじ
+たきもと,ひろゆき
+たけむら,かつお
+むらかみ,かずひこ
+たかた,ご
+ひろせ,こさと
+やくわ,れいこ
+しんぐりょ,まさのり
+たち,まさお
+さとう,ゆひち
+やまもと,ひさし
+すどう,しんご
+ほんま,いちろう
+おつぼ,けんじ
+かざま,てるお
+あがわ,ともこ
+いのうえ,ひでまさ
+あらい,よしたか
+うえむら,かつお
+にしくら,せいき
+みやざき,よしあき
+ふくだ,よひち
+つりや,なおかず
+たなか,まこと
+おがわ,のりお
+すずき,つたひろ
+はまぐち,たかし
+かめだ,ようこ
+ももはら,まさし
+ひらお,かずお
+たかだ,まさひろ
+いけだ,しょこ
+すずき,ひろき
+たかはし,としお
+たなか,みつひろ
+せら,みほこ
+たけむら,りゅひち
+ほりきり,まさち
+いけだ,ゆたか
+あらき,まさひろ
+おつか,よしかず
+くにまつ,もりまさ
+うしば,ただお
+はやし,ひろかず
+いしい,こうじ
+かだ,みのる
+やぎ,たくじ
+ひらい,かつや
+くろせ,ひでお
+おかべ,たかこ
+かねこ,なおゆき
+こじま,よしひろ
+にしより,あきら
+なかじょ,かずよし
+はしくら,じろ
+たかはし,たいち
+うえくさ,としあき
+しばた,まもる
+たかはし,みのる
+いなば,せきね
+じゅにちろ,かずいちろう
+はやかわ,せいざぶろ
+いとう,たかし
+きもと,まさと
+いだ,みきお
+ほじょ,あきら
+ほりい,ただお
+かいせ,こういちろう
+はしもと,ひろし
+すずき,いさむ
+かねさか,としゆき
+やまぐち,さとる
+すずき,みのる
+すどう,じろ
+おば,つとむ
+むらた,たつお
+あきやま,のぶあき
+あすま,ひろし
+かわじり,てるお
+まつもと,かずと
+しろやま,あきのり
+ふじい,ひでお
+ごと,たけし
+たにあい,まさつぐ
+かつぼり,ひろし
+ひあて,かつひこ
+てらい,つねお
+はんだ,あつし
+みしま,やすあき
+たかしま,ひとし
+まつだ,よしお
+こんど,ゆうじ
+いたや,まさかず
+まつもと,まさひこ
+いいやま,みほこ
+じっと,としこ
+くぼた,まさし
+いしぐろ,たけお
+もり,ひでお
+かんの,きょじ
+いとう,こ
+よしだ,あつこ
+まるやま,だいすけ
+さとう,やすまさ
+こだ,まき
+わたに,くみこ
+させ,あきこ
+そとやま,まさこ
+ほんだ,ひろみ
+いぬい,かずみ
+すずき,あきら
+こにし,のりこ
+すぎい,けんじ
+あらき,なおたけ
+ひらおか,ひでお
+おつか,かつひろ
+かとう,さちこ
+しおの,えいじ
+かたやま,うつみ
+ふちかみ,さちこ
+ひらき,せいじ
+いわさき,りゅじ
+えのき,くにお
+いわた,なほ
+しゅと,よじ
+とひゃま,まもる
+こいで,いくお
+たなべ,かつのり
+やまもと,てるくに
+かいはつ,ゆたか
+あらい,よしのり
+うえだ,よしのぶ
+くらおか,ゆきひさ
+こばやし,のぶお
+ためちか,やすし
+よしだ,むつお
+まつもと,しげお
+さかした,ひろし
+わだ,ひろのり
+いとう,たけひこ
+よしだ,たもつ
+よねだ,きみお
+おむら,じゅん
+たかぎ,せいいち
+うちやま,ただし
+かしわぎ,まつのり
+にしだ,じゅんざぶろ
+おしか,ゆうじろ
+えじま,しゅにち
+おか,せいし
+よしだ,かつじ
+いまい,ゆぞ
+やまみち,そういちろう
+あいもの,えつひろ
+ひの,たてお
+たかはし,しずお
+よこた,しげる
+いのう,かねお
+よしだ,としあき
+よしおか,やすお
+うめざわ,かつじ
+てらお,としひで
+かわはら,まさみ
+はせがわ,しちろ
+きし,あきこ
+はしずめ,けいこ
+よしだ,せつお
+みねふじ,たけお
+ほんだ,とものり
+たかさわ,けんいち
+おはし,やすえ
+かがわ,やすしろ
+にしだ,ともこ
+いたがき,かつお
+あきやま,もとこ
+さいとう,みさこ
+おちり,えいこ
+のざわ,たえこ
+さいとう,ひろこ
+きむら,あきこ
+あべ,うきこ
+くすのき,ひろひさ
+はやし,はるお
+おひ,みのる
+かみおか,てるこ
+あきやま,みつひろ
+ありた,めぐみ
+きたむら,なおこ
+ますむら,ゆみ
+おさわ,みゆき
+かわい,ようこ
+いたがき,ちか
+もり,まり
+あおき,あきこ
+ふじしろ,のりひろ
+しみず,こひょ
+むらかみ,やすひろ
+なかじま,こうじ
+もぎ,けんじ
+みうら,ちえ
+たかまつ,なおと
+たかだ,ともこ
+こんど,やすひろ
+なかじま,なおみ
+ねれい,はるよし
+うしく,いさお
+きたざわ,かつみ
+さっさ,みちゆき
+いっしき,たかのり
+かわの,けん
+いしはら,みのる
+かめおか,ひでお
+きうち,たかお
+ながい,みきお
+のぐち,こうじ
+おした,もとしげ
+よしむら,みよし
+あかほり,てつお
+まるなが,あきお
+よしの,かずお
+やの,けんじ
+やまぐち,しょひち
+やまぐち,まさこ
+せんどだ,ひとし
+やすだ,ひろし
+よこえ,おさむ
+やました,こ
+よしだ,のぶひろ
+やました,よしひろ
+やすい,のりつぐ
+やまおか,ふみたか
+よこせ,ただお
+やまぐち,のりかず
+やはぎ,ひとし
+やまおか,みちお
+よつや,たかお
+やまもと,としみち
+よしかわ,みつのぶ
+やました,よしつぐ
+やまおか,こうたろう
+よねみつ,よしひろ
+よしだ,まさひで
+やまざき,かつとし
+やまもと,まさる
+やまぐち,あきら
+やまうち,じゅにち
+よしざわ,せいざぶろ
+よしおか,とみぞ
+やまもと,すすむ
+やまおか,かずお
+やまざき,きょすけ
+よしむら,ともしげ
+やすだ,けんじ
+やました,やすはる
+やだ,ひろまる
+よしだ,とおる
+やまもと,じゅんこ
+やまだ,としろ
+よねだ,しょじ
+よしだ,ひろこ
+やまだ,せいじ
+やまぐち,けんいち
+やまぐち,てつお
+やまもと,ひかる
+よしだ,みのる
+やました,さかえ
+やんべ,かつみ
+やまぐち,かつひと
+やまもと,のぶお
+やまね,みちとし
+やまさき,あきら
+やすおか,まさひこ
+やまだ,こうじ
+よしざわ,せいいち
+やじま,しんや
+やない,いちろう
+やまざき,つとむ
+やまうち,ごろ
+やまざき,かおる
+よしの,まさひろ
+やまかげ,くすお
+やぎ,たかふみ
+やすだ,ふみひろ
+やまや,たかこ
+たかぐち,すすむ
+よしだ,しょぞ
+よしの,あつひろ
+やまむら,のりよし
+やぎ,じゅんじ
+やまだ,こうじろ
+ゆかわ,けんたろう
+やまもと,ゆきお
+やまたに,えいぞ
+やまむろ,じろ
+よしだ,あきら
+よこかわ,てつお
+やまざき,かずお
+やまもと,ふくみち
+よしの,すすむ
+やまね,たつゆき
+やすなが,ただのぶ
+やなか,じつのり
+やまね,まさお
+やまうち,のぶお
+やまぐち,のぼる
+やまわき,ひろし
+やまかわ,こうじ
+やまだ,じゅにち
+よこやま,かつのり
+やまもと,こすけ
+やまぐち,まさとし
+やまぐち,じょじ
+よしだ,ひろつぐ
+やまなか,よしかね
+やまもと,としひこ
+よしだ,ともよし
+やまだ,こういち
+やまおか,たけお
+よこやま,きよし
+やまさき,よねたか
+やまもと,あきひろ
+やまかわ,けいいち
+やうち,てつお
+よしはら,よしゆき
+よこみぞ,ゆうじ
+やまもと,しょたろう
+やまもと,じゅにち
+やまもと,かずみ
+よしだ,しょたろう
+よしだ,やそみ
+やすい,のぼる
+やまぐち,たかよし
+やまもと,たかお
+よこた,かずみ
+よしだ,ただはる
+よこやま,たかお
+やすい,さとる
+やまさき,よしとも
+よしおか,まさひさ
+よしだ,のりお
+やまだ,かつひこ
+やまもと,まさよし
+よしだ,ただよし
+やまざき,かつじ
+やまね,しげる
+ゆたに,しゅぞ
+よねざわ,てるお
+よしの,えいいちろう
+よしだ,まさひろ
+よしもり,ふみひろ
+よしわら,みのる
+やまだ,しげる
+よしだ,あきら
+よしだ,えいいち
+やまもと,ゆたか
+こじま,ひでき
+おの,かずもと
+まえかわ,かずひろ
+この,のぶお
+まきせ,しゅんろく
+のむら,かつひろ
+やすはら,よじ
+ながしま,せいぞ
+きたはし,せいしろ
+つる,なおじ
+つくだ,すすむ
+てらうち,よしひろ
+やまだ,だいすけ
+せんば,たけお
+さえき,ひさとよ
+おかだ,たけし
+みやうち,としき
+こんど,としかず
+ふきあげ,むつお
+いしかわ,もりひこ
+いわもと,くにかつ
+くぼ,しげお
+たなか,こうたろう
+わだ,のぶゆき
+いわお,きよし
+くまがい,まさたか
+すずき,まさひこ
+たかむら,あつよし
+にしうら,まさお
+みつじ,きよみち
+たききた,みちお
+おうち,たけし
+こま,さとる
+ますだ,すすむ
+かとう,のりお
+いいずか,しょひち
+まるやま,ひさお
+としたに,としお
+はなぶち,やすお
+いまい,ちよたけ
+おかひろ,まさお
+きむら,じゅにちろ
+たじま,ひろかつ
+かんだ,のりお
+どい,つねのり
+あらがき,たかひろ
+きゅそじん,ひろふみ
+たけうち,ひろし
+うぬま,せいいちろう
+やまぐち,まさし
+よもり,あきら
+しまざき,けんじ
+とくや,あきお
+やまだ,けんじ
+ふかや,としろ
+えぐち,かずひこ
+さの,のぶあき
+とくの,とおる
+おとも,まさひろ
+しらおがわ,まさぞ
+ひらの,つねお
+おだ,としひこ
+たなか,まさはる
+ふじた,つらゆき
+あらい,おさむ
+ふじた,やすのぶ
+なかがわ,けんすけ
+なかにし,つねよ
+はら,ひでなり
+ちば,よしたか
+いしわた,もとひさ
+やぐち,くにひこ
+てじま,としお
+たつた,あきら
+くさか,しげお
+ふるた,はるお
+ごと,ひでのぶ
+おだぎり,あきら
+すずき,さだむ
+くまがい,ひろし
+むらかみ,たいき
+みむら,ゆうじ
+よこい,りょぞ
+いなげ,あきら
+あめみや,あきひで
+いのうえ,ゆうじ
+ぬまた,ひろゆき
+さかもと,かずしげ
+ひらまつ,あきひろ
+なりた,としこ
+つねみ,としひさ
+たかしま,たけひろ
+みす,かずお
+さきやま,しげる
+ふじわら,たけし
+とみた,たけはる
+つなわき,まさのぶ
+はせがわ,ただし
+ふくざわ,だぇ
+ごえけ,たける
+なか,みずほ
+えばと,まさお
+こばやし,くにひこ
+ひらつか,ともゆき
+さとう,みつお
+いのうえ,さだお
+はすぬま,じにち
+ふるはた,ごへい
+うえの,さだお
+たけなか,かおる
+くにたけ,いちろう
+ひらた,ふさひこ
+はせがわ,かずみ
+ふくはら,よしひこ
+ふなぐち,ただし
+あまの,まさひろ
+おの,みねお
+すわ,たけし
+のがみ,ゆぞ
+うめの,あきら
+いけの,まさひろ
+なかじま,けいこ
+いしい,しんいちろう
+さいとう,きよし
+たなか,のぶお
+たていし,あきら さとし
+すずき,まさお
+きのした,あさこ
+おさわ,あつし
+いで,まさひろ
+おがわ,よしお
+えのもと,ゆうこ
+おざわ,げん
+はたけやま,あつし
+いいだ,とおる
+しのざき,のりこ
+おかだ,みずのり
+たかま,のりこ
+やぎ,みか
+さかい,やすゆき
+しみず,ゆうこ
+ほりかわ,はなこ
+ながお,きょこ
+ひらいし,ともこ
+さがわ,かずゆき
+はらだ,としかず
+たかはし,よしひこ
+たち,ひかる
+ひえ,よしひろ
+とむら,さきこ
+ただ,しほ
+よしもと,わきこ
+もちずき,みずほ
+たなか,ともひろ
+たぐち,みつあき
+さとう,じゅにち
+さかした,りえこ
+かわしま,まさし
+ほりぐち,ひろゆき
+ふくま,まさよ
+かわたに,こうじ
+じびき,ようこ
+さいとう,こへい
+しおつ,まり
+とばた,たもつ
+やまもと,まさみ
+おふち,りゅいち
+しのはら,まさよ
+やまかわ,きみお
+たむら,まりちゅ
+はたけやま,みなこ
+たなか,ひろこ
+かなざわ,ちひろ
+たかはし,こうじ
+ふじむら,まゆみ
+ながしま,いくお
+きのした,ゆきえ
+こんど,まゆみ
+あんべ,かおり
+さいとう,すみたか
+あさだ,あきら
+きのした,おさむ
+かどや,みつる
+うえだ,いさお
+さいとう,のりかず
+たかはし,まさひこ
+いしざき,ひろみち
+おざわ,のぶお
+はやし,かずただ
+やがわ,としお
+たかはし,たかこ
+とみやま,ひかる
+あだち,ひであき
+あかいわ,えりこ
+かがや,みなこ
+あらい,よしゆき
+おしきり,ときこ
+やまむら,まみ
+たかやま,まなみ
+よこやま,いずみ
+ばん,みき
+いずみ,ふみえ
+みずの,あきこ
+ぶんや,とおる
+てらおか,もに
+みやした,まさひろ
+あさま,しもん
+ささき,てるひさ
+にしお,おさむ
+ふるや,みちお
+いまだ,たみお
+いしはら,よしあき
+はしもと,ゆぞ
+まるやま,しょすけ
+かじ,ゆきのぶ
+かねこ,さおり
+なかだ,たかし
+ちざわ,えいじ
+さわ,としゆき
+とがめ,おさむ
+よしだ,つぐお
+おの,よしのり
+やこ,ただお
+いしかわ,みのる
+ことだ,しょじ
+さがわ,みのる
+のぐち,けいこ
+でんぼ,てつお
+はるき,よりと
+いね,てつお
+おの,ひでゆき
+かねだ,いくえ
+のぐち,みきお
+おば,ともゆき
+おた,かずたか
+しもまき,はなこ
+わたひき,のりひと
+やまもと,なほ
+ふじむら,あさこ
+そうみや,みわこ
+しま,げん
+ささき,ひろこ
+かがわ,まさひこ
+たけうち,あきのり
+さいき,ひろこ
+いとう,かずま
+きむら,かずまさ
+たばた,ひろふみ
+くめ,あきひこ
+たかだ,しょうえい
+たむら,くにお
+たかまつ,たつひこ
+しろした,あきら
+かとう,ひろみつ
+あわい,とくいちろう
+ほさか,やすお
+たなか,ゆうこ
+みひら,まり
+さとう,まりこ
+おざわ,けんじ
+すずき,くみ
+みやざき,たかゆき
+もりたに,れいこ
+いわぐろ,くみこ
+うえま,みよこ
+ふかた,のりこ
+ひろせ,よじ
+おかだ,たかひろ
+かとう,とよあき
+まき,まりこ
+のだ,みえ
+くぼ,まきこ
+にしきおり,しゅさく
+やの,ともゆき
+かわむこう,としのり
+やすむら,のりこ
+とにし,るみ
+やまもと,しゅさく
+しもだ,けいこ
+おたに,ゆきお
+おのさと,けんじ
+かなざわ,りゅぞ
+おかもと,ゆかり
+さいとう,つとむ
+かしわばら,しょこ
+たかはし,ちか
+さいとう,あきこ
+まつだ,ひろみ
+たちざき,ありか
+こんど,さゆり
+しみず,ともかず
+ながおか,きょこ
+なかがわ,つぎお
+たかと,じゅんこ
+きむら,なおき
+なるせ,みよこ
+おぐま,ともこ
+たかはし,ひかる
+きくち,だいすけ
+さとう,くにお
+えんど,はん
+んぐいぇん,ひろあき
+たむら,みわこ
+やまもと,みなこ
+あさい,のぶこ
+もり,まさのぶ
+たかしろ, まなぶ
+おか,よしあき
+かとう,わかこ
+いぐち,ともこ
+たなか,だいすけ
+よしだ,かおり
+あきもと,あつし
+にしい,ひろゆき
+わしおか,たかし
+いぬまる,きよみ
+ほし,かえ
+よねやま,みなえ
+くろべ,せいこ
+いしい,はじめ
+ひぐち,まりこ
+なかだ,ひろき
+おのでら,とものり
+とだ,こうじ
+まえだ,よしひろ
+ながい,おさむ
+こぬた,めぐみ
+しばさき,さいか
+うかい,としや
+すずき,さちこ
+ひらき,きょこ
+なかむら,こうじ
+やまだ,まどか
+かどくら,じゅんじ
+たかさき,こうじ
+なかた,ひろじ
+たにかわ,しずか
+にしむら,まさのぶ
+みなみ,ゆういち
+おぬき,ひさえ
+さとう,じゅにち
+たかはし,たかはる
+ひだ,なおこ
+さくま,としゆき
+にえだ,ひろこ
+よこい,ゆきこ
+よねくら,ひさよし
+ばんば,かつとし
+やまだ,あきか
+いまむら,ちはる
+いけだ,のぶこ
+なかむら,ゆうこ
+すどう,まさみ
+なかそね,まさし
+おさわ,こうじ
+さとう,きよみ
+えいどめ,ほずえ
+いがらし,まさや
+たや,あやみ
+おひら,みのる
+いしぐち,ひろし
+わたなべ,たかお
+さかもと,おさむ
+すぎもと,しま
+かとう,たかし
+よしい,れみ
+いわや,たけお
+きのした,りえ
+すぎさわ,あきひで
+わだ,るりこ
+みやした,ちあき
+うえの,みなこ
+おたき,りえ
+いしばし,かおり
+いわした,ちかこ
+いしかわ,しちろ
+きし,ゆき
+まるやま,みか
+ほんま,たかこ
+くすもと,よしこ
+いまの,ぃさ
+ぐあにお,ぃさ
+げれみあ,さとし
+おにし,こうじ
+やまだ,みなこ
+ふじおか,ただひろ
+はなだ,ようこ
+しばた,きょこ
+みやした,かずよ
+かさはら,みよこ
+おやけ,えみこ
+いまい,のぶこ
+こせき,ゆみこ
+おた,きょこ
+まちい,まさお
+きくち,ひでひこ
+ひぐち,たてお
+みなよし,ひさお
+すずき,たかお
+なんば,いさお
+おにし,きみひで
+はやしだ,たかお
+たなか,かん
+かねこ,せいぞ
+つちや,しょ
+いいだ,とらお
+ふるや,やすかず
+なかむら,あさお
+はるはら,ゆきお
+ほりえ,まさお
+おた,はるお
+すずき,くにお
+おと,まりこ
+なかがわ,のぼる
+かわしま,かずひろ
+てらもと,せつお
+きむら,かずえ
+よどなわ,じゅんじ
+こだいら,ひろかず
+かくらい,なおき
+おぐり,だいさく
+はた,たかとし
+まつもり,ひでひろ
+よしおか,かずのり
+しげた,ともゆき
+かわぐち,えつお
+かねこ,かずお
+あさひ,みつぐ
+わたなべ,たかし
+ありやま,よりしげ
+つじた,たけし
+よしはし,やすつぐ
+みしま,まさとし
+さとう,まゆみ
+かねまる,よへい
+かねこ,ゆうじろ
+えじま,あきら
+みつくち,ゆかり
+もり,ひであき
+おち,ようこ
+まえかわ,ひろよし
+たなか,けんじ
+おりがさ,かずお
+こせき,せいじ
+ひらやま,みちあき
+こぼり,ともひろ
+なかうえ,まさお
+すとう,ただあき
+ごと,こうじ
+つかもと,つぐお
+えびはら,たつお
+もりの,ひでお
+すずき,せいし
+よしだ,かつじ
+いまい,えつひろ
+ひの,やすし
+よしだ,ひろあき
+おにずか,じゅん
+たかぎ,きみお
+おむら,せいいち
+うちやま,かずお
+くろかわ,まさのり
+やました,まつのり
+にしだ,かおる
+わたなべ,ただし
+かしわぎ,えつよし
+かねこ,たつお
+くまだ,まさお
+こじま,きよひこ
+しらい,ひろみち
+ふるかわ,よしあき
+むしう,ひでのり
+よしの,まさあき
+すぎうら,まこと
+ふじさわ,まさき
+さとう,むねたか
+えざき,みな
+むらかみ,すみただ
+にわやま,まさひこ
+やすの,かつひと
+どだ,えつこ
+かじい,よしのぶ
+たなか,たきお
+まつなり,ひさえ
+おばやし,すさん
+つあぞん,ひろし
+たかはし,ゆきこ
+まつむら,みきお
+こもり,なおずみ
+のぞえ,てつひこ
+おの,りえ
+かんの,ただあき
+さとう,としお
+のなか,せいいち
+かわはら,まり
+なかむら,あきひろ
+やました,たかゆき
+こういち,たかお
+いたや,まつもり
+やま,みか
+やまもと,ともひこ
+くらた,もなみ
+かわず,ようこ
+みかみ,いさお
+たきがわ,こうきち
+たなか,まなぶ
+みやた,たくや
+ないとう,やすまさ
+まるた,まきこ
+わだ,かずえ
+ひえだ,きよみ
+たけだ,こずえ
+かじもと,けいこ
+のむら,わかこ
+ねや,ゆみ
+すずき,まゆみ
+きむら,としかず
+むらた,ももえ
+いしかわ,ひでお
+ふじわら,ふみこ
+もり,そういちろう
+あいもの,やすこ
+たかだ,いたる
+おだ,こういち
+きのした,よしかず
+たなか,ひろあき
+さくま,たかてる
+じょうこう,きみのり
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt
new file mode 100644
index 0000000..70619ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,やすお
+あきば,しげる
+あらい,ひであき
+あらい,けんいち
+あかがわ,としお
+あらき,せいご
+あいかわ,のりお
+あきの,ゆきお
+あきやま,つよし
+あさい,ひとし
+あべ,まもる
+ありが,つとむ
+あきた,よしてる
+あかつか,かずひこ
+あらい,まさはる
+あさはら,かずお
+あつみ,まさあき
+あわや,ひとし
+あさかわ,としあき
+あおき,おさむ
+あわず,あきら
+あきくさ,ようすけ
+あおやぎ,はつかず
+あじさわ,しゅういち
+あいそ,やすし
+あおしま,ちよかず
+あとう,まさひこ
+あさの,よしや
+ありが,そういち
+あおき,りょうへい
+あいかわ,ゆきお
+あきた,まさひろ
+あさの,のりあき
+あさと,ひでし
+あらき,よしかず
+あんどう,やすし
+あさかわ,ひろし
+いいだ,まこと
+いわさわ,まさき
+いしかわ,まさお
+いのうえ,ひろひと
+いしはら,よしのり
+うかじ,さちこ
+うめたに,かつひこ
+おけたに,けんじ
+おおすぎ,あきひろ
+おおかわ,みきひこ
+かとう,まさとし
+かも,まさあき
+くまがい,まさし
+こんど,あきら
+すぎもと,おさむ
+はまさき,よしのり
+ちだ,しゅんじ
+なかむら,けいぞう
+ながた,ちえこ
+さわむら,かちこ
+なるお,よしのぶ
+なりた,ゆみこ
+はせがわ,ひろこ
+ふじた,けいこ
+ふじわら,たかこ
+ぶよう,てつお
+ほり,こうじ
+みなみむら,ちあき
+みやじま,ちより
+やまだ,まり
+やまぐち,たかし
+やなぎはら,みどり
+よしの,しんいち
+にいだ,くにひこ
+おおいやま,ゆうこ
+かながわ,いちろう
+きむら,りえこ
+つかざき,みほ
+かわだ,なおこ
+あさかわ,みさこ
+しもつ,まさあき
+おか,たかひと
+おがわ,こすけ
+たいら,しょういち
+いしの,きよなが
+きみしま,あきら
+さとう,てつや
+やまだ,おさむ
+おおた,なおみち
+まえだ,ひでとし
+かざらし,みつる
+ごとう,かつのり
+ほし,まもる
+くろだ,しんや
+つかわき,としや
+いながき,まさひろ
+いわもと,たもつ
+つるた,たかし
+いしじま,りょうへい
+やまなか,ひろとし
+うえき,あきこ
+にしむら,あつこ
+わいだ,ただし
+よしだ,るみ
+しぶや,ゆたか
+あとう,まさのり
+みやた,かおる
+おおたき,つぎお
+きよおか,まこと
+おおたに,たかし
+にしわき,なおみ
+にしやま,たかし
+みしま,たかゆき
+かとう,ひろし
+いまお,みずほ
+おざき,こうじ
+せきや,まさゆき
+つくだ,のぶゆき
+みよし,のぶまさ
+よしみ,たかゆき
+ささおか,たかし
+おしま,ちはる
+くぼた,ちずこ
+しばやま,しゅうぞう
+おおくぼ,となみ
+たちの,じゅん
+わだ,みちよ
+まつした,まさもり
+こむら,やすひこ
+まきした,けいこ
+あかお,やすひろ
+はしもと,ひとし
+おおの,かずお
+せきもと,よしお
+まえだ,ちから
+みつほり,なおき
+みなみぞの,まさき
+せがわ,かおり
+すずき,とよじ
+きたがわ,よしたか
+よしやす,じろう
+やまもと,まり
+かとう,ひろし
+かわかみ,よう
+まきの,なおき
+すずき,まさお
+ふるさわ,さとし
+はやし,じ
+いまにし,としひこ
+みやもと,ゆか
+まき,くにあき
+こいで,さほ
+わたなべ,まさこ
+おおはし,ひとし
+あかお,あきお
+あさい,かずこ
+いまい,たかし
+きら,まさひこ
+にしむら,てるき
+よしかわ,としゆき
+みなみ,けんじ
+つるた,のりお
+なかむら,じゅんいち
+たなか,けんじ
+まつうら,たけし
+すぎた,じ
+かわい,としお
+こくぼ,さつき
+つだ,まこと
+みやたけ,としたか
+くろさわ,よしかず
+すみひら,まさひこ
+たかき,まさお
+いしと,こうき
+やまだ,もとかず
+にいつ,のぶあき
+いわむら,かんじ
+かわなべ,よしひろ
+ながい,ひろゆき
+やまね,ちあき
+いまい,たかゆき
+なかお,いさお
+おしきり,ふみはる
+いしかわ,じゅん
+おかじま,じゅん
+おおにし,まさはる
+すずき,てつ
+やまなか,さつみ
+たにぐち,かずひろ
+かわべ,ときお
+こんの,みき
+さとう,やすひろ
+たかやま,しんいち
+もりみち,いたる
+ほりかわ,かつみ
+ふくい,たまこ
+きたむら,あきら
+なかはら,ひろみ
+いちい,ひでのり
+いわさ,かよこ
+すずき,しゅんじ
+よねたに,かつふみ
+たの,たけし
+しばた,ひでよ
+いのうえ,まさのり
+いしかわ,としお
+きし,まさみ
+あわえ,あつし
+たけお,よしあき
+きのした,かずひこ
+つかだ,ふみあき
+ありどめ,としゆき
+きっかわ,としあき
+おがさわら,ひさかず
+ながせ,たかひろ
+はるやま,あつひこ
+おず,やすお
+こさか,としかず
+しらさき,とおる
+たなべ,つとむ
+いけがみ,つよし
+こばやし,じゅんいち
+まつばら,なおと
+なかがわ,もりひろ
+おがわ,せいじ
+よしだ,まさのぶ
+いけ,さだのぶ
+たにぐち,まさみち
+まえだ,ひろし
+ひらの,たかゆき
+しみず,きみこ
+やまだ,あきとし
+たなか,ひろあき
+こまつざき,まもる
+かとう,まさかず
+おわ,のりこ
+いわむら,ひろただ
+いりえ,かずゆき
+あかやま,まさゆき
+あきもと,ひろあき
+かみむら,あきひこ
+すみた,かおる
+はまさき,あつし
+やすだ,まもる
+たけむら,みきや
+むらかみ,とみつぐ
+なかじま,ひさとも
+もりもと,こうじ
+せきぐち,たかゆき
+なかじま,まさひこ
+きがわ,ひろひさ
+たかひら,たかし
+もちだ,あつし
+かめやま,たかし
+おやまだ,まさひさ
+たなか,てるひさ
+ほんま,しんじ
+きのした,やすひこ
+しのつか,のぶしげ
+あいはら,やすふみ
+ながまつ,えいじ
+とよむら,まさあき
+ひらの,たかし
+きむら,じゅん
+いけだ,せいじ
+いしはら,ゆうこ
+のぐち,まさる
+こけつ,みつまさ
+おくやま,あつひこ
+はまぐち,しんじ
+つじさか,ひであき
+いちかわ,さとる
+よしだ,せいご
+やまだ,よういち
+しみず,やすし
+さかがみ,のりかず
+こすぎ,ひさひこ
+にしだ,せいじ
+いいだ,かつら
+うちだ,やすみ
+もとやま,ちはや
+みやもと,いくよ
+こばやし,やすし
+かとう,ひろゆき
+しらい,さとし
+はぎわら,こうじ
+やまうち,ゆきひで
+みつはし,かおり
+もんじ,よういち
+たきもと,のりこ
+おくだ,しゅうじ
+つかもと,しゅうじ
+むこはら,やすいく
+さるや,みちお
+おかじま,としひこ
+ほしの,ひさと
+ほし,ひろふみ
+ふしみ,こういち
+たかはし,たつや
+にしやま,しんじ
+つるまち,しょういち
+とみた,なると
+うちだ,とおる
+おおたか,ゆうこ
+さかい,たかひさ
+そがべ,かつみ
+わだ,けんじ
+こさか,まさみ
+あそ,あけみ
+あらい,としはる
+すぎむら,しげお
+あきよし,かずお
+あさかわ,つとむ
+わだ,さかえ
+いけだ,こういち
+おかもと,りょうじ
+あおき,まさる
+うえさわ,つよし
+うやま,ひであき
+なかはま,すすむ
+かわもと,まさゆき
+すえまつ,じゅんじ
+ながい,さとし
+なかはら,ゆうぞう
+なわた,なりあき
+かつざわ,ひろし
+やまうち,みゆき
+あかぎし,つよし
+くさずみ,としひこ
+ほかり,ひろし
+かとう,おさむ
+きりう,ひろき
+おがわ,まさと
+たなか,まさよし
+あいむら,つとむ
+いがらし,まさと
+かわわき,たかみち
+まえさか,ともみつ
+まつしま,あつし
+まつもと,ひでと
+かたい,まさひろ
+こじま,まさあき
+つじもと,とおる
+なわた,さとし
+ふじたに,かずひこ
+きせ,てつろう
+さかぐち,じゅんいち
+すずき,としゆき
+はまさき,まさひろ
+よしだ,ひとし
+ほった,しげひと
+ますこ,ひさお
+たけなか,こすけ
+いしい,はるき
+たさか,ひろし
+まつだ,まさひろ
+はた,たかし
+あきやま,ゆたか
+たかはし,やすひと
+やまかわ,しょうじ
+よこち,まさひろ
+よねたに,きいちろう
+ふじの,ゆうすけ
+はせがわ,かつとし
+ふじた,まさゆき
+あんらく,まさこ
+はしもと,のぶゆき
+いなだ,れいこ
+ゆげ,まさよし
+いまだ,いずみ
+さかもと,かずひさ
+とよなが,やすひろ
+はしもと,てつお
+はない,よしのり
+しみず,たつお
+なかむら,よしはる
+かじむら,よしひこ
+いしがき,けんぞう
+はっとり,まさお
+あまの,りょう
+みかみ,かおる
+ふるてら,まゆみ
+まみや,ひでき
+つるの,むつこ
+あさい,やすき
+のむら,しげお
+よこやま,しんじ
+いけだ,ゆたか
+あんどう,あきお
+おかやす,やすこ
+ごとう,ひであき
+かわしま,たかこ
+はぎわら,えり
+あたらし,ゆみこ
+たかやま,としひと
+にしやま,としゆき
+えちご,しんいち
+やまざき,よしひろ
+むろや,てつお
+きむら,ゆきお
+なかはら,ふみお
+うえの,たかし
+よしだ,けんた
+つかもと,ただし
+おざき,とおる
+あしかわ,やすしげ
+ねぎし,とものり
+きゅうの,しゅういち
+さとう,よしひで
+いのうえ,かずひこ
+きくずみ,まさる
+まつもと,だいさく
+はやし,たかお
+ふくおじ,かんじ
+なるせ,けんたろう
+まつもと,まさき
+もり,まさし
+みき,のぶお
+なかたに,よしあき
+みやがわ,ふみのり
+ありよし,いくお
+しらい,よしゆき
+みなみ,まさよし
+とりごえ,ふじお
+こすが,ただし
+つじの,かずひろ
+おぐら,やすひろ
+おりた,ちかし
+あみもと,じゅんいち
+おさか,とおる
+はやし,よしひろ
+みなみ,みのる
+よしだ,としひこ
+にしはら,よしお
+おくがわ,まさとも
+つじ,てるゆき
+なかい,たかし
+にしむら,つぐお
+にたない,けんご
+くどう,ひろし
+さい,たかお
+しょう,まなぶ
+いのうえ,かおる
+たにぐち,ひろたね
+なかにし,しんじ
+おおもり,ひろゆき
+くまがい,たかゆき
+いしあい,とよかず
+はぎはら,かずのり
+たがた,けんじ
+すずき,みちお
+くぼ,ぜんさく
+かなうち,しんや
+にしお,ひでき
+いなだ,ひでのぶ
+たけいち,しんじ
+あんどう,まこと
+まつなみ,しょういち
+みなくち,しゅうさく
+かなうち,なおき
+おおいやま,のぼる
+ますだ,しょうじ
+やぎはら,としお
+みずの,けんじ
+のぶくみ,とおる
+なだ,たかあき
+たけたに,ふとし
+いまいずみ,いちろう
+いなだ,いさお
+いまに,たかふみ
+おき,まさひろ
+ふくしま,ようすけ
+いいお,ひろとも
+いしだ,かつや
+ひらた,こうじ
+いたがき,かずひろ
+やまふく,さとし
+さとう,のりお
+なかがわ,りょう
+おさか,しゅういち
+おいかわ,のぶあき
+かしお,よしひろ
+ほしざき,しげき
+せきじま,こうじ
+おかまえ,のりひろ
+さとう,たかし
+こいで,たかなお
+たかはし,せいじ
+おがわ,こういち
+てらしま,たくお
+やました,まさあき
+のせ,ひでゆき
+まつまえ,あゆみ
+よした,のりあき
+むらた,とおる
+はら,のりひこ
+やまうち,けんじ
+かみ,かつゆき
+すがい,たつゆき
+たかの,よしのぶ
+ところ,よしひろ
+すずき,すすむ
+ささき,あつゆき
+つのだ,てつろう
+やまさき,てつや
+みうら,かつみ
+おだぎり,あつこ
+はやし,しんちょう
+とみおか,ひとし
+いぐち,せいいち
+こんど,たかし
+くぼ,ひでお
+くらぬき,きょうこ
+とみまつ,なおこ
+くろかわ,まさあき
+のざわ,すみお
+かわさき,くにあき
+たけだ,かつや
+しのはら,あきひろ
+ふるや,しげる
+なかむら,さとる
+やじま,とおる
+にしがき,きよし
+なかがわ,そう
+ひらやま,しゅんいち
+やまぐち,むつひろ
+よしむら,ゆうじ
+つだ,たかゆき
+かつらい,わたる
+みない,としかず
+たきぐち,かずお
+わけべ,よしひろ
+にしかわ,まさや
+しらがき,ひろあき
+ばば,まさかず
+あかり,りょうじ
+あべ,たくや
+かい,くにひろ
+おおもり,ひでかつ
+すずき,たかし
+ながさわ,ひとし
+さわだ,えみこ
+あずま,のぶゆき
+おの,ひでき
+かわにし,のぶひで
+まなべ,かずひろ
+ありやま,ゆうじ
+にしかわ,きよし
+あつみ,しゅうじ
+いとう,ひろゆき
+ひろた,としや
+ほかぞの,かずと
+ほしの,やすひろ
+やまぐち,まこと
+あがた,こうじ
+まるお,よしゆき
+こいで,ひろあき
+かみむら,まさひで
+さいとう,なおき
+ふくみつ,あつし
+ひらやま,ひかる
+さいとう,てつや
+いけお,みのる
+ふるかわ,じゅんいち
+いいだ,ひろあき
+みやざき,もとひろ
+よしだ,やすゆき
+きくた,えりこ
+ちば,てつお
+とりやま,りつお
+えざわ,りゅうたろう
+おおば,よしたみ
+やまもと,おさむ
+にしかわ,まさのぶ
+えんど,まさはる
+ふくい,おさむ
+はまの,よういち
+きたはら,けんじょう
+さとう,ゆきひろ
+まつお,まさふみ
+とよた,ひでや
+ひらもと,としひで
+やまもと,こうたろう
+はまだ,まゆみ
+いわかみ,みのる
+くぼ,てつお
+えんど,かずひろ
+かげやま,まさのり
+にいや,ともゆき
+こうち,ゆうすけ
+あだち,しげゆき
+はやし,しゅんじ
+なかの,まこと
+いしはま,まさひろ
+こくぼ,りゅういち
+かわの,はじめ
+なかじま,のりひこ
+たいら,つよし
+たけぎ,りつお
+もりしま,ともこ
+なかむら,ひろあき
+のぐち,ひろき
+あらき,やすてる
+あら,ひろし
+いとう,なおこ
+はやさか,ふとし
+こつか,まさかず
+たけうち,ひろし
+いわた,たかし
+まえだ,よしお
+ほそかわ,まさひろ
+あらい,やすひろ
+おおくら,かんじ
+たけこし,あつし
+やまぐち,けんじ
+しみず,かつとし
+いとう,よしつぐ
+いずみ,かねみつ
+ごとう,そうたろう
+おおつぼ,かずみ
+かみこがわ,しんいち
+たけい,さとこ
+みやはら,まさし
+あわじ,あつお
+うしろだ,かおる
+もりいずみ,はじめ
+ながの,あつし
+たなか,むねゆき
+ふかえ,けんじ
+ふるや,みさお
+みずひき,よしお
+くぼ,みつよし
+たぐち,ふみあき
+なかお,つぎと
+やました,ゆういち
+くろき,しょうご
+まつだ,けんいち
+おだじま,なほみ
+ほり,ゆきお
+たにぐち,つねやす
+あらい,としのり
+ごとう,てつじ
+とねがわ,のりゆき
+もりた,たかこ
+ふるかわ,しげお
+ゆき,よしのり
+しらいし,たかひろ
+いけや,さちこ
+わたなべ,たつおき
+たにぐち,こういち
+ますだ,しのぶ
+みずぐち,じろう
+はやみず,ゆみ
+ほかり,あきひこ
+いしい,のりひこ
+しらいし,まさひこ
+しもかわら,しげひろ
+もりもと,ともこ
+いとう,ひろし
+おおや,けいじ
+みよし,みのる
+しばた,のりひろ
+たんざん,ともひこ
+いわさき,ひでかず
+ふくい,さとし
+もりばやし,かずや
+やまだ,ひでみ
+ふじわら,さとし
+なつめ,やすと
+しのはら,ひろし
+おさだ,まさし
+ふじはら,たけひと
+ふじもと,ひろみ
+きの,よしお
+やまもと,もとき
+いしじま,もりひろ
+いが,あきら
+なかえ,だいじ
+やの,ゆうじ
+かなみつ,おさむ
+すずき,てるお
+たかだ,りょうこ
+いしばし,ひろゆき
+おおつぼ,みつはる
+すぎ,たかし
+はやしぐち,ひろし
+てらした,かずお
+しもやま,よしふみ
+みやざき,みつる
+もり,やすひろ
+やまもと,ひとし
+であい,きよひろ
+ほり,としゆき
+あねざき,かずお
+くぼた,たかひろ
+ご,まさとし
+ひきだ,ひろし
+さかぐち,のりあき
+よしい,たかし
+きたはら,かつと
+ふじい,みどり
+なめき,やすこ
+よしむら,としお
+たむら,だいすけ
+うみの,ひろし
+あんどう,ひろし
+よしもと,たけし
+ねもと,よしふみ
+みやざき,まさひこ
+たかもり,ちえこ
+くまがい,くにお
+ごうだ,こうたろう
+はた,こういち
+くずみ,さちこ
+なつい,いくお
+しまだ,ひでお
+おおつき,かずひろ
+まみや,ひろかず
+さとう,けんじ
+こばり,ひでゆき
+ささき,やすゆき
+かねこ,まさき
+おの,とおる
+おおやま,よしえ
+まとば,まさはる
+いたくら,じゅんいち
+おだしま,かつろう
+しいき,のりこ
+しばた,かずひろ
+かつら,ちかこ
+あらい,よしのり
+さいとう,つよし
+まつもと,まさのり
+うえやま,みつなり
+まの,しんいち
+みさお,なおき
+そのべ,きみゆき
+すずき,あきお
+やたに,きょうこ
+むた,まなぶ
+まるやま,ふみあき
+ふだ,たかよし
+こばやし,けいいちろう
+わたなべ,かおる
+おだ,まこと
+おふち,まさお
+たなか,しげお
+さわき,まさし
+さいとう,ひろし
+はぎの,のぼる
+うしやま,たかし
+おくひら,のぶひろ
+よしいけ,さなえ
+こんの,ゆうこ
+のだ,としお
+えんど,としゆき
+すずき,みつお
+たなか,よしひろ
+きど,けいじ
+いとう,まさのぶ
+ふじわら,としはる
+はせがわ,あきら
+ますもと,けいじ
+かい,ひとし
+たかはた,ともこ
+ひでしま,かずのり
+たかやま,しげき
+みやき,ゆたか
+ふせ,かずひこ
+ももい,ひろやす
+つゆき,みつぐ
+かわはら,しげる
+まつい,あきひろ
+はなわ,まさひろ
+ひわだ,てつや
+ますい,たかし
+かとう,ただつぐ
+たけま,ふみお
+しらいし,よしお
+ふるかわ,しょういち
+てじま,あきら
+あきもと,さとし
+すぎやま,ひろあき
+なんぶ,ゆきひろ
+つじの,けん
+てらさか,いっしん
+さかい,ひであき
+くぼ,あつし
+まるたに,まさや
+たかはし,みのる
+まつうら,しんや
+たなか,せんじ
+ゆざわ,たかあき
+たかはし,かずや
+おおば,しんご
+まえかわ,とおる
+にわ,とおる
+かわむら,まさき
+こいけ,かずえ
+くりした,としゆき
+ひろせ,おさむ
+こんの,たくや
+はせがわ,ひろひこ
+いとう,ひろし
+きざき,あつし
+えなみ,のりあき
+つかなか,ふみあき
+さかもと,ひろみ
+まつばら,ひでお
+てらい,しげあき
+おした,たかよし
+たなか,よしあき
+やまもと,まなぶ
+いしぐろ,よしと
+はしもと,すみこ
+さとう,やすひろ
+やまもと,とおる
+ふるかわ,としのぶ
+やまだ,ひろと
+いくた,しょうこ
+さとう,ゆういち
+わたなべ,かずひろ
+かこ,たつじ
+ますだ,ひろのり
+かみじ,たかゆき
+いはら,かずひろ
+あさみ,かずひろ
+なかじま,たかし
+こたき,てつや
+かわもと,えいいち
+かわしま,かずひこ
+あずま,りゅうじ
+なかの,しゅういち
+ひらの,さとし
+たかはし,まさる
+ふかや,ももき
+おおば,たけし
+さくらい,ひろあき
+さかい,いっせい
+あおき,たくお
+よしだ,やすし
+こはし,まさのり
+まつうら,てっぺい
+さとう,おさむ
+にしきおり,ともこ
+みよし,よしひさ
+こすぎ,つかさ
+さとう,たかいち
+ふじい,よしひろ
+ふなだ,かずひこ
+すぎた,とおる
+しょうだ,かずひろ
+もりした,としお
+ひら,ひとし
+しんたく,ひろゆき
+ひがしだ,としゆき
+くりた,まさよし
+いなだ,ゆうさく
+にしの,としや
+いけじり,のりあき
+なかむら,なおひろ
+なかかど,よういち
+いのまた,ひろし
+つるみ,ひろよし
+ひらもと,しげき
+みよし,ふみあき
+あわの,たかし
+あきた,よしえ
+ひがしやま,たけし
+さとう,ひろみ
+かわさき,けいいち
+まるやま,はつお
+すなが,ひでき
+いまい,たみこ
+ふじい,ゆきお
+まきた,みつお
+いとう,たつし
+たかはし,りゅういち
+きりま,しんじ
+おおにし,ともゆき
+みのしま,たけひと
+さとう,かずたか
+やました,たかゆき
+みたむら,まゆみ
+さとう,しげる
+とまつ,たまみ
+えびしま,やすゆき
+わだ,かずや
+すずき,きよたか
+すがはら,みつる
+たぐち,ひろむ
+とがし,まさひこ
+ながはら,さとる
+やまもと,けいこ
+たけだ,まさゆき
+さとう,みのる
+たかみや,ひでのぶ
+あおき,たかひろ
+こやぎ,すみたか
+おのざき,りょうすけ
+もりた,のりこ
+さくらぎ,ゆみこ
+おかさか,ひろのり
+やまぐち,こすけ
+かわしま,よしのり
+いわの,かずのり
+ごうこ,やすはる
+もりた,やすじ
+しげたか,なおき
+てずか,えいさく
+おた,つよし
+やまだ,まさはる
+ふかだ,ひさゆき
+はせべ,もとあき
+まつの,あつし
+つじかわ,けんいちろ
+まつもと,かつみ
+せのお,はじめ
+のむら,さとし
+あらい,とよしげ
+おぐり,すみえ
+じんの,まさひろ
+ひろずみ,みのる
+まつい,すすむ
+しばざき,あつし
+いのうえ,ひでお
+たなか,ひでかず
+さそ,なおふみ
+しらはま,あきひこ
+たなか,なおき
+なかむら,やすひろ
+いしがみ,よしあき
+しばた,てっぺい
+のぐち,あゆみ
+いちば,こうじ
+かわぐち,ひでこ
+よしみ,ひでみ
+ふじかわ,ひろゆき
+かとう,つよし
+たかはし,いさむ
+ふじさわ,かずお
+みずたに,ともふみ
+せきぐち,よしろう
+まえかわ,むつみ
+あらい,りゅうじ
+もり,けいたろう
+さとう,なおこ
+くわた,しょういち
+おぐり,ひろし
+ひらい,かつひこ
+にしむら,ふみとし
+おおくら,ひさのり
+そのべ,あきこ
+いいだ,やすあき
+こぐち,えいいちろう
+もろほし,ひでかず
+はまだ,のりかつ
+かなざわ,かずゆき
+まつば,しげる
+いわた,ひでとし
+あずち,まさる
+こんど,いさお
+たかはし,よしお
+あまの,ひろあき
+かただ,おさむ
+ためひろ,もとこ
+まつだ,たかし
+なりいし,やすよし
+おきた,もりみち
+やました,ひろし
+すずき,ゆうじ
+まんぽ,かつみ
+いちい,けんじ
+こいで,ともこ
+たかはし,なおこ
+なかがわ,かずお
+おはま,たかし
+たかはた,ひろみ
+こぐち,たかし
+みやがわ,かずや
+しばやま,はじめ
+あらい,やすひろ
+わたなべ,すすむ
+なかむら,ゆたか
+ふるはた,まさなり
+たにぐち,なおすけ
+ほんだ,すすむ
+まつもと,あきひろ
+たかき,はるみつ
+きくち,しんや
+いのうえ,こういち
+はら,まさお
+やまもと,たかひろ
+むらかみ,ともやす
+ばば,まさひこ
+はせがわ,としひこ
+ささき,あきふみ
+あつた,ひとみ
+たちかわ,ひろつぐ
+ひらもと,ひであき
+なかむら,としや
+つむら,たかお
+たかはし,そういちろう
+よこやま,みのる
+こたけ,みつお
+あんらく,たかし
+みずの,しんいち
+おおぬき,あきら
+さかい,はじめ
+おた,しょうぞう
+はやし,のりお
+さいとう,あきひろ
+たなか,のりこ
+はるはら,とうご
+おおつか,まさゆき
+きたがわ,ひでみ
+よこた,かっぺい
+よしむら,あつこ
+おおひら,しんいち
+ちゃき,しげひで
+さかぐち,こういち
+すずき,あきひろ
+ちかざわ,まゆみ
+なかじま,まさのり
+わたなべ,ただお
+しば,じゅんこ
+さかい,ちはる
+やまみさか,てつお
+よしがみ,あきら
+ひらて,まさゆき
+わくしま,ただし
+あさま,ちから
+あずみ,ただし
+いなおか,ひろかず
+さない,ひろし
+やまうち,やすひろ
+いはら,としひこ
+たやま,おさむ
+ささき,しんや
+ふじうち,としあき
+うしじま,しんいち
+ののむら,まさたか
+にし,たけひろ
+いけだ,ひろみ
+すぎたに,ひろし
+おざき,たけし
+こけつ,あきひさ
+さとう,ようすけ
+せんば,あつし
+あずま,ひでと
+なおい,いちろう
+ほしの,よしき
+かみや,やすひろ
+むらた,ひとし
+いちみや,けいこ
+たるい,やすあき
+はぎはら,みわこ
+たかはし,たかし
+おちあい,ひとし
+あきやま,けいすけ
+きむら,よしひろ
+はやし,ひでお
+やまぐち,みつる
+ところ,なおたか
+かすや,えつこ
+いりえ,しゅうじ
+むらいし,みなこ
+しんたに,りゅうじ
+うえの,みほ
+うちだ,こうじ
+はせがわ,
+くろだ,るりこ
+いとう,かつひろ
+ほりうち,まや
+おおはた,のぶあき
+ほんだ,ひでゆき
+なかむら,すすむ
+さえき,おきもり
+あべ,てるひさ
+うめだ,たかひろ
+ぬま,まさゆき
+たぶち,ゆたか
+きむら,みつる
+うだ,たかみ
+あおき,のりこ
+なかむら,まさと
+ふじこし,さとし
+すみだ,きよし
+くずはら,のぼる
+わたなべ,ひろし
+あらた,さとみ
+ろっかく,まゆみ
+いのうえ,みつまさ
+つじもと,まさみ
+みうら,ななこ
+ねもと,よしお
+あめみや,よしかず
+なかむら,ひろゆき
+あいば,のぶたか
+よねざわ,しんや
+ふじむら,しゅう
+りゅうと,ひろみ
+わたなべ,ともみ
+きたがわ,しんじ
+あたらし,ともなお
+きくち,じゅん
+すずき,あきら
+たなか,ひろし
+いけだ,ひろなり
+よこかわ,みつひこ
+くさつぐ,たかし
+みずの,けんじ
+ながほり,こういち
+すぎもと,こうじ
+あんどう,つねお
+たかやなぎ,ひろふみ
+しば,まさこ
+かみやま,かずひろ
+おおひら,ひろみ
+ほんま,はるゆき
+たばた,のぶよし
+えんど,けんいち
+いしがき,せいじ
+しば,ゆういちろ
+やまだ,まさひと
+たかの,かつお
+よしだ,たつや
+あまさき,としひこ
+おしかわ,しんじ
+にしの,みほこ
+かとう,おさむ
+はまおか,ともこ
+さの,たかかず
+すえしげ,くにてる
+なかた,ひろみ
+こばやし,ひでゆき
+すどう,やすし
+つつみ,きよひと
+みたに,こうじ
+いしだ,やすふみ
+いいずか,ゆたか
+しらい,ゆみ
+やまだ,いわお
+つじかど,かずこ
+まつなが,こういち
+たなか,かずえ
+みなみ,ひろし
+さかい,まさゆき
+うえき,しおり
+おだ,まさお
+まえだ,せいじ
+できたに,じゅん
+あまの,たかひろ
+みやこし,しげかず
+あんざい,としみち
+うめだ,ゆきお
+たきざわ,あつし
+むらにし,きよし
+くりはら,としひこ
+やまさき,まり
+おおつか,みつひろ
+あみの,たかし
+もり,やすのり
+にしもり,しんじ
+たけの,まさお
+しんがき,よしかず
+まつお,よしき
+ふじね,まさき
+かなまる,ひろよし
+かなざわ,たつゆき
+しみず,りゅうじ
+わだ,いつこ
+いしくら,たけし
+ふくだ,あきひろ
+うかい,よしこ
+ありま,おさむ
+おおた,たかあき
+もりたに,たかし
+あだち,よしひろ
+くまで,まさのり
+あら,すすむ
+はしもと,とおる
+とよおか,まこと
+おおつ,てつろう
+みやき,けいいち
+いしかわ,じゅんいち
+いがらし,なおつぐ
+おおにし,きんや
+しらいし,こういち
+よこめ,よしあき
+ふじもと,かずひろ
+かんの,もりやす
+たちばな,みちお
+やまだ,ちなみ
+あさみ,しげお
+みうら,やすし
+とくひろ,ひろのぶ
+もりかわ,まさのぶ
+いとう,みきひさ
+さの,ともみつ
+すずき,まこと
+しもとの,まなぶ
+まかべ,さとみ
+いとう,こうじ
+つくだ,じゅんじ
+よしかわ,みつぐ
+たかやなぎ,ひろき
+ほんだ,たかよし
+にしの,ゆうじ
+きむら,よしひろ
+かとう,こういち
+おおはた,じゅん
+うつみ,かずひこ
+あんどう,かずひさ
+はまたに,みのる
+きのした,たかふみ
+かわせ,としたか
+うえの,よしひこ
+しかま,りょうじ
+すずき,まさゆき
+ふじおか,まさひろ
+いのうえ,ともひろ
+きたざき,やすゆき
+あいべ,ひろし
+おおかわ,さかえ
+たけい,やすはる
+からはし,ひろし
+すずき,まゆみ
+あらい,ひろし
+いのだ,のりゆき
+おくむら,えり
+まるい,じゅんこ
+ひろずみ,あきひさ
+わしず,たくや
+よしむら,たかひさ
+かつまた,たかし
+ますかわ,かつら
+いわお,しゅうじ
+やまもと,よしひと
+たなか,さとる
+たけうち,のりゆき
+のはら,しゅうぞう
+ふなはし,かずのり
+なごし,けんじ
+うめだ,かずや
+あきやま,ひとし
+なかだ,まさと
+さいとう,めぐみ
+たはら,じゅんいちろ
+にしまつ,よしひろ
+ひらみつ,まこと
+めかた,まさる
+たかみ,りゅうたろう
+そのだ,ひでゆき
+みやざき,ゆうじ
+まるやま,ひであき
+つのかわ,まさし
+はらだ,かつみ
+つじ,つぐひこ
+いがらし,としお
+よしだ,かおり
+たけがた,こうき
+あべ,りょうじ
+あかぬま,とくひろ
+かわだ,ひろあき
+たご,ひろし
+かみむら,まさし
+まつや,げん
+いわた,あきひこ
+まえかわ,さとし
+やまぐち,れいこ
+しろした,ともひろ
+やました,まさと
+つじかわ,じゅんいち
+たなか,よしふみ
+みなみ,ともひろ
+さとう,よしあき
+うおずみ,あきら
+すぎやま,ひろゆき
+ちば,まさゆき
+かない,さとし
+まつやま,つよし
+たかの,あきら
+くまがい,こういち
+たけこし,むつひさ
+ふたば,としあき
+うめざき,かずただ
+おいわけ,ようすけ
+ながつか,まなぶ
+いまがわ,ひとみ
+はしもと,あきら
+おおひら,ゆうたろう
+みやひら,みちあき
+のぐち,けいぞう
+すぎもと,かずふみ
+かわぐち,かつのり
+しのせ,つよし
+なりさわ,よしひと
+ひろせ,あきひろ
+にしざき,すすむ
+もり,のぶゆき
+ふかお,よしこ
+みやじま,けいぞう
+まつの,かずしげ
+いわい,しげのぶ
+かい,みどり
+たなか,くにこ
+ちば,まさみ
+その,ひろし
+よこやま,あきひさ
+たかしま,じゅん
+おかもと,こうじ
+みやかわ,だいすけ
+むらもと,ともあき
+きむら,こういち
+まつなが,ゆみこ
+ふくだ,つとむ
+おおにし,まさし
+あい,ひでかず
+まえだ,ひさかず
+いのうえ,よしみ
+いいだ,たかひさ
+ふじい,ひろゆき
+さくらい,たくや
+まつい,ういり
+いまだ,しんじ
+みやけ,あつし
+さかい,ひろひさ
+かとう,おさむ
+いわた,なおと
+おおの,まさや
+いそべ,たかよし
+おやまだ,つとむ
+とうじま,たつひろ
+たけうち,かずひこ
+なかやま,ますお
+しらいし,おさむ
+かのまた,あつし
+すどう,たかひろ
+しらやま,あきひろ
+おおや,まさる
+みながわ,ともひろ
+きむら,たつや
+たかぎ,だいぞ
+さとう,ゆきお
+ふじわら,みつる
+いもと,ようた
+うえの,ともひろ
+きょうの,けんご
+きりう,よしただ
+くぼた,つねお
+こせき,たかし
+すざき,まさひろ
+たかさき,やすひさ
+つかもと,しんいち
+ないとう,けんじ
+なかごめ,ひろかず
+なかむら,ひでやす
+はぎわら,かつみ
+まつもと,かよこ
+こんの,よしひさ
+さいぐさ,たもつ
+ほんだ,ゆきお
+たなか,ひろし
+まつとみ,かよこ
+あかさか,ひろあき
+せんがん,あきひで
+たけお,のりかず
+むらた,ひろゆき
+かわせ,ともひろ
+にしざき,たつゆき
+へいとう,えいいち
+おおさわ,まさはる
+うえだ,よういち
+かなやま,やすひこ
+はらだ,ともゆき
+なかがわ,あつし
+みやもり,まこと
+かい,けんじ
+きぐち,しゅうじ
+さたけ,けんじ
+おおおか,としろう
+なかざわ,こうじ
+やすおか,まさひで
+くろみつ,やすたか
+かなだ,ひでき
+まるかわ,ひでき
+ながさわ,たけゆき
+こばやし,しゅう
+えんど,まさのり
+いんなみ,はるお
+やまもと,きよたか
+ながくら,さとし
+うえの,まちこ
+にしざか,みか
+さとう,てつろう
+もりやま,たつお
+こはやせ,しげお
+どいた,ひろし
+ほそかわ,のぶお
+あおき,みつい
+ますみだ,ともひこ
+おち,まさいち
+すずき,けんじ
+すぎやま,けんいち
+ふじわら,せいや
+たなべ,みつゆき
+とだ,あつし
+つぼい,やすお
+すぎた,まさのり
+あだち,けいた
+ふじい,まさき
+すがもり,ひろし
+やすだ,なおひこ
+たかはし,ひろゆき
+たがみ,まさる
+とみやま,ゆうじ
+はねだ,やすゆき
+おざき,たけし
+おぐら,やすゆき
+てらさき,のぶや
+つちや,えつこ
+おかだ,てるお
+あべ,のぶゆき
+あべ,みつえ
+もりわき,こういちろう
+はやの,けんた
+とみなが,じゅん
+すずき,みき
+かたぎり,さとし
+あはら,はやと
+ほし,ななこ
+いしかわ,たつや
+しもむら,よしひさ
+わきもと,みゆき
+かわて,たかし
+あぶらかわ,かずおみ
+よしたけ,たかし
+いしだ,まさゆき
+ほんだ,としろう
+したま,よしお
+のぐち,たけし
+みずい,あやお
+あんどう,なおふみ
+よねしま,なつみ
+あきた,じゅんこ
+うえ,あつし
+すぎ,こういち
+なかじま,まり
+かさおか,としひこ
+のだ,てつふみ
+まつざわ,こういちろう
+わたべ,たつお
+あいざわ,けいじろう
+いわさ,しん
+こが,あきひこ
+ひがしたに,ひでふみ
+いけだ,としや
+あきなか,やすはる
+ふじた,かずや
+やまおか,ひさたか
+わち,せつや
+うえの,けんたろう
+うしき,かずいち
+やまもと,はるひこ
+かとう,まさとし
+ながい,ただひろ
+ふくだ,あやこ
+なかたに,えみ
+ひらさわ,ながこ
+みやざき,まさる
+てらしま,むねかず
+あらい,ちが
+たなか,しんいち
+かねこ,たかあき
+さとう,てつじ
+なりた,しゅういち
+ながしま,じゅんいちろ
+さかの,としお
+みうら,さとし
+やまぐち,けい
+おでら,なおとし
+あべ,あつし
+こだま,かずひろ
+やまもと,ひろゆき
+おしま,とおる
+いしず,つとむ
+かんばやし,ゆきお
+おおかわ,ひろゆき
+ひえだ,たけひこ
+いのまた,ひろみ
+まきた,としや
+がなは,たかゆき
+はやかわ,ひろゆき
+あかぬま,てつや
+むろかわ,まさのり
+おの,けいすけ
+きむら,しょうご
+はたざわ,やすこ
+ふじた,まさき
+うえだ,だいすけ
+やまのうち,いさお
+ふるた,よしひろ
+おくやま,けんいちろ
+いとう,ふみお
+おさない,せいいち
+こたに,たけし
+おおつか,ただあき
+ふくしま,こすけ
+いいずか,けん
+わたなべ,てるあき
+もりた,けんいちろ
+かとう,ひろき
+ほんだ,としあき
+かとう,あきのり
+あさぬま,やすひろ
+あずま,まさお
+てらさわ,みつお
+あかし,つねお
+かとう,なおと
+おのさと,たかし
+なかむら,ひろつぐ
+のむら,ひでみ
+いのうえ,えいいち
+はやし,しんいち
+たむら,がく
+さかい,すえのぶ
+すぎむら,りょう
+とみやま,けい
+かきざわ,としあき
+にしたに,しょういちろう
+あさくら,しんや
+いしざき,さとし
+まつもと,しんいちろう
+ながお,としお
+きの,りえ
+あべ,たすく
+と,こうじ
+やまき,こういち
+あらい,げん
+やまだ,けいじ
+おくむら,かずえ
+はら,しょうたろう
+やまもと,かつひさ
+なかむら,しんいちろう
+あらい,かずや
+いけど,まさたか
+いとう,けいじ
+いとう,ゆうじ
+うりゅう,あきら
+うちやま,ただし
+えのもと,ひろみち
+えずら,とおる
+おおつか,けいすけ
+えにゃ,すすむ
+あかお,けいすけ
+おおにし,しょうじ
+かがや,いなん
+かまた,たかひろ
+かわかみ,のぶひさ
+ささき,やすよし
+たかはし,なおひこ
+ただ,こういち
+にしの,まさよし
+あさお,なおき
+はしもと,なおき
+はっとり,たかこ
+ほし,たお
+ほりた,しんいち
+まえぞの,なるひで
+まえじま,みのる
+みやざき,ゆみこ
+あらい,よしみ
+もり,こすけ
+まえだ,ひろし
+おち,けん
+あさくら,のりお
+うさみ,あつし
+おくやま,たかし
+かりや,たかひこ
+うえだ,ひでゆき
+おたべ,けいぞう
+きむら,いさむ
+くしだ,よしはる
+あまは,こうじ
+こんど,よしき
+しみず,しょういちろう
+すずき,しゅうこう
+すん,すみお
+たどころ,ひとし
+とねさく,いさむ
+なかむら,ひろし
+ますだ,ひろお
+みやざき,みはる
+よしなが,あきひさ
+よこかわ,たくま
+つちや,まゆみ
+たかはし,まさのり
+たなべ,まさじ
+いとう,けいすけ
+ながお,しんいち
+さとう,たけし
+ただ,ともひろ
+あきもと,しゅんすけ
+たむら,まもる
+たむら,かずゆき
+おか,みちはる
+さくらぎ,けんいち
+すずき,ひろし
+もりおか,ただし
+やぐち,ゆうし
+みやもと,さとし
+しらかわ,ひでき
+おおつか,ひでき
+やまもと,ともやす
+なかまち,やすふみ
+わかはら,やすお
+あき,たかし
+たきた,かずひろ
+あらかわ,けいいち
+まつお,こうじ
+ちょう,ゆういち
+くろだ,しげる
+やました,たろう
+ともおか,えみこ
+なかお,わたる
+あそ,てるかず
+ふくだ,のぶたか
+あおき,ひとし
+くる,ひさと
+むらかみ,やすひろ
+くろだ,たくや
+みかみ,あきひろ
+かみむら,ひろゆき
+きたじま,なおき
+まるやま,よしひさ
+さたけ,けんいち
+もてき,たけし
+とみた,ふき
+にわ,ふみこ
+たかばたけ,しげのり
+あずま,まさる
+ふるや,さちこ
+なす,よしひろ
+こり,まり
+いけだ,まさひろ
+ごとう,こうじ
+ふくだ,ひろゆき
+すがはら,じゅんじ
+きむら,としひこ
+たかせ,まり
+にしおか,りょう
+ふるかわ,てつお
+くどう,けんいち
+たかはし,けんと
+やまもと,よしひろ
+みやもと,りょうへい
+のた,ゆきひろ
+なかむら,しのぶ
+あきば,みや
+いわき,まこと
+かとう,しほ
+もりもと,まさかず
+なかむら,かずとし
+なかやま,かずや
+おおたに,しげひろ
+すぎやま,みのる
+すん,とよゆき
+やまもと,ひろし
+ほんど,ゆたか
+はが,かくじ
+しおざき,かずひこ
+ふじの,みのる
+おの,けんじ
+あんどう,よしお
+やまぐち,としあき
+くろだ,たかし
+うの,りょういち
+いとうたに,たけひこ
+おか,えつみ
+みうら,のぶゆき
+はしもと,かな
+えもと,まこと
+こが,ひろし
+きはら,ひろし
+まつだ,ふみただ
+やまだ,あきこ
+たかはし,よういち
+やはた,ひでお
+たざき,けいた
+やまもと,りゅういち
+たかだ,ひろみ
+のだ,まさつぐ
+さいみょう,かおる
+こばやし,あらた
+ふじき,けんじ
+しらさか,ふみお
+たかはし,とおる
+やつ,あつお
+うおたに,ふみひこ
+たむら,としひこ
+まつお,さとし
+なかざわ,たくや
+きだ,ゆきこ
+たんげ,てつろう
+ひろせ,すすむ
+まつしま,みちや
+おかの,さとる
+あおき,よういちろう
+はせがわ,りゅうじ
+にしほり,ちから
+いしずか,たかや
+つぼい,ひでゆき
+いしだ,まさる
+はしもと,さとる
+ごとう,しんじ
+あきやま,ひろき
+みつはし,しげる
+ごしま,かずお
+ふくだ,ひろし
+やました,なおふみ
+なかざわ,ひさし
+にしかわ,ひとし
+いけうち,かずゆき
+たがみ,たかお
+かわきた,けんじろう
+なかむら,がく
+こまい,こすけ
+ほしや,あゆむ
+すみと,まさふみ
+ほしの,かずお
+なかや,しんいち
+はら,みずほ
+むろやま,かずひこ
+もり,ひでき
+しらいし,まさひろ
+ひらの,こうじ
+はしもと,ゆうこ
+あべ,じゅんじ
+いしかわ,ありかつ
+あずま,よしみ
+おおつか,のぶお
+いとう,けい
+おしま,ちかお
+こざい,きよひろ
+かわかみ,まさとし
+なかの,むねひこ
+うじもと,まさひこ
+きしだ,ひとし
+こいずみ,のりこ
+ないとう,としひろ
+よしずみ,よしき
+すぎもり,としひろ
+あおき,ともはる
+たかはし,こういち
+いが,のりかね
+かわばた,のぞみ
+しばた,ひろひで
+だん,まなみ
+たぐち,かずひろ
+まちだ,ともお
+あしだ,ゆうこ
+あんどう,ていじ
+むとう,かつのり
+こやま,きよと
+すずき,けいいち
+のむら,じゅん
+いとや,まさとし
+ちかおか,つとむ
+じんぶ,みちやす
+あだち,まさし
+かわい,やすし
+みのわ,こういち
+あさひ,としあき
+おおた,よしあき
+たなか,きよし
+きら,まさし
+やまざき,みか
+やまうち,みつる
+ほった,よしのり
+あらかわ,しげお
+おくむら,じゅん
+かねこ,いたる
+あやの,こうき
+はやかわ,ともなり
+いとう,まさひこ
+おくむら,ひさのり
+たんざわ,たつお
+さきの,よしひろ
+かわはら,とおる
+たるい,よしお
+ありもと,あつし
+えびこ,ともなり
+ひの,かつや
+やまだ,しょうよう
+おおの,くみ
+たけした,ゆりこ
+はやし,きょうこ
+いしだ,けん
+しおや,たけし
+あんどう,のぼる
+まつばら,まさふみ
+にしだ,まさる
+なかむら,まさのり
+いけだ,じゅん
+はやみ,ひでお
+すずき,しょうぞう
+おがわ,あきら
+いしかわ,としあき
+あさみ,けんじ
+はたけやま,たかし
+ほりみぞ,けいすけ
+まるたに,ちひろ
+さとう,あきお
+さかなか,かずお
+なかむら,ともひこ
+いとう,かおる
+ふるなが,はるひこ
+ふくしま,まさと
+みずがみ,よしゆき
+たけうち,みちお
+とりうみ,みのる
+ねぎし,しげき
+こやま,あきのり
+おしま,なすお
+かたおか,たかし
+たきぐち,ひでふみ
+こまつ,かずお
+やぎ,たかし
+たかぎ,よしお
+ますい,てつろう
+はやし,ひとし
+あねたい,まさゆき
+きはら,けんいち
+さいとう,しげお
+きたわき,みちひこ
+のぐち,ひろみち
+さかぐち,もとい
+にし,ゆきみつ
+いけだ,てつお
+さとう,たかし
+いまい,まさひと
+やまだ,しげいく
+たなか,やすひさ
+おおさこ,まこと
+こむろ,かなめ
+さいとう,ひでき
+すずき,けんいち
+ふなとがわ,ゆかり
+いしい,てるあき
+まつい,のぼる
+すえひら,ひとし
+ひろたに,よしお
+ひがし,きよし
+いむら,あつこ
+あべ,やすのり
+よねくら,のぶとし
+わたなべ,よしみつ
+すが,ひろし
+さの,ひろし
+しば,ともじ
+やまぐち,しゅんじ
+きざわ,よしひろ
+かさまき,よしろう
+きむら,けいすけ
+つるみ,あきひさ
+あおき,しょうこ
+いしだ,もとし
+もろ,あきお
+おくむら,ひろゆき
+たかぎ,こうじ
+いけや,みちお
+とみやま,かずみつ
+やぎ,たかお
+とみき,てつろう
+とのむら,みのる
+やつずか,としひろ
+ぶま,けんしょう
+なかざわ,ふみとも
+やまざき,ようこ
+まつした,しのぶ
+いだ,しん
+すずき,よしひろ
+なかの,やすひろ
+かわぐち,まさお
+たかはし,つとむ
+いしだ,しょういちろう
+うだ,さとる
+ふじわら,りゅうじ
+こいで,としたけ
+つかだ,へいはち
+ひらやま,ひろし
+うちとみ,あきら
+いまはら,ひろよし
+うえだ,ひとし
+ささかわ,よしひろ
+あいかわ,たかあき
+うえき,たかよし
+なかやま,よしみ
+おおさわ,よしかず
+たかおか,としゆき
+わだ,つぎお
+いぬずか,くにひさ
+たなか,こうきち
+たけだ,きよたか
+やまだ,のぼる
+やなぎ,ひでひろ
+たけした,よしたけ
+にし,たつひこ
+おおたけ,ゆういち
+にたない,しげお
+ほんま,のぶひこ
+なかの,よしのり
+みやした,ひでき
+うえの,じゅんじろう
+ばば,さだむ
+みやざき,まさお
+くにい,つとむ
+こばやし,けいじ
+ますだ,ひろし
+たかはし,こうじ
+つかお,ひろき
+かわむら,たかゆき
+かわばた,こうぞう
+あかさか,じゅんこ
+いいだ,てつや
+しらはま,ただし
+とがわ,ひろゆき
+いとう,ひでいち
+おかべ,まさし
+わたなべ,ひろお
+さかば,としひろ
+ひろさわ,ひとし
+なかむら,しげる
+やすい,さとし
+ひらた,かずひさ
+きたがわ,しんいち
+あまの,てつや
+つじむら,えつろう
+かわさき,こういち
+うえむら,たけし
+むらかみ,しげな
+いのうえ,きよし
+はぜ,けん
+としひろ,きみひろ
+こばやし,しげゆき
+いの,ただのり
+あさの,ゆういち
+もり,こうじ
+いなざわ,こうよう
+こばやし,てるひろ
+さかき,よしひこ
+うちやま,せいじ
+まなべ,やすき
+おおやま,けんじ
+しみず,まさひこ
+よねむら,ひろゆき
+ばらだ,あきひこ
+ふるぞの,よしかず
+ふじもと,かずあき
+さの,まもる
+かわの,えいこ
+ほしかわ,こうじ
+ささもと,もとつぐ
+すどう,まさと
+さとう,たかお
+はやし,ひろし
+ばば,ひでのり
+ばば,ひとし
+おおやね,ひでお
+ながさわ,やすゆき
+さかもと,まさはる
+あおき,せいじ
+むなかた,まさはる
+いとう,しんいち
+かわばた,ひろゆき
+すぎもと,みちお
+ばんどう,じゅん
+のむら,あきひこ
+こんの,よしみち
+かわい,かずのり
+うえの,のぶゆき
+はらだ,ひろし
+かのう,あきら
+おおはた,みきお
+すどう,たかし
+まつだ,ひとし
+いけがみ,まこと
+しらい,けんしん
+さとう,たかあき
+さかい,たけし
+おき,としゆき
+かわむら,けんじ
+やまだ,ひろお
+いとう,あきひさ
+いかみ,はるお
+あずまお,ひでと
+ふじむら,とおる
+きたむら,ゆうじ
+とがみ,としみ
+こすげ,まさお
+せき,ひろゆき
+かわしま,ともゆき
+たかい,ゆうご
+あきやま,ゆきお
+すずき,としふみ
+なかむら,しゅういち
+にしの,たかゆき
+みやけ,たかひろ
+よねもち,もとじ
+たかしま,しげお
+さかい,としのり
+おおつき,あきとし
+かわさき,みき
+にしかわ,たきお
+さくらい,けんじ
+すぎ,ひであき
+ほりこし,とおる
+もり,かつや
+はけだ,たかし
+にいだ,しんいち
+きくたに,さとし
+たけのした,しゅうへい
+たかはし,ひろみ
+たなべ,まさこ
+いけもと,のりこ
+まつやま,ゆきこ
+よしざわ,よしひさ
+あかい,みのる
+にしおか,せいいちろう
+たけもと,のぶお
+とくだ,よしお
+おおもり,やすひろ
+かとう,たつし
+かわと,ふみお
+まえだ,そういち
+くろき,まさよし
+いいだ,くみこ
+こやなぎ,はじめ
+まつなが,あつし
+いとう,やすあき
+やまもと,たつお
+つつい,としあき
+たなか,みのる
+ふくしま,しゅんいち
+こじま,よしひこ
+にしだ,みつぐ
+にしやま,じゅんこ
+すずき,だいすけ
+いいじま,たかし
+たまい,すすむ
+こんの,おさむ
+みます,としみつ
+よねはら,せいいち
+よしだ,かずみ
+ふくだ,ひろし
+さとう,ひろあき
+やまもと,ひろし
+きたご,のぼる
+さんの,ともとし
+やさか,としお
+むらた,しげみ
+なかもと,あきし
+さくらい,かずしげ
+はらだ,よしもと
+さとう,あつお
+さいとう,みつお
+そね,けいこ
+はすみ,あきひろ
+ひらた,かずひろ
+やなぎさわ,のぶお
+たちばな,ようこ
+いとう,まさずみ
+はら,あきら
+さいとう,としひろ
+いとう,こういち
+たなか,かずや
+うちやま,しげよし
+かがわ,けいいち
+たきざわ,ゆうじん
+しながわ,くにひこ
+かきはら,しろう
+すがぬま,じゅんいち
+かめい,としや
+おくつ,かずとし
+いしかわ,しょうしゅん
+すぎうら,もりお
+うめだ,ひさし
+みなぐち,いちろう
+ほしの,たけひこ
+にしやま,せいじ
+たけだ,たつや
+さかい,きいちろう
+やつだ,たけし
+もりた,けいぞう
+さきま,なおひろ
+あらい,ゆたか
+たけだ,たかこ
+たむら,よしこ
+おかだ,はるみ
+やまね,ちはる
+なかむら,ゆういち
+あおの,たつお
+すぎやま,かねよし
+ふりはら,かずお
+わたなべ,のぶと
+かつ,つかさ
+さはら,ひろみ
+かくた,あきひこ
+えのもと,たかし
+わたなべ,まこと
+やぶき,まさひろ
+あまさき,こういち
+よこた,まさひで
+ほりのうち,としあき
+きはら,つねお
+たけだ,つるまつ
+いねな,まさひこ
+なか,かずひろ
+いちやなぎ,ただし
+すずき,しょうけい
+なるしま,なおきち
+しらいし,たかし
+おの,とおる
+よしおか,かずや
+まつうら,ひろかず
+ふじた,てつじ
+いわみ,とよはる
+とくしげ,けいじ
+たなだ,きみひこ
+おかの,かずまさ
+もちずき,たかゆき
+たかしま,こういち
+とりうみ,かずお
+たかみ,よしたか
+はやせ,ともゆき
+たかはら,えいじ
+きん,まさゆき
+すぎやま,ひでひろ
+きたじま,こうじ
+にった,よしのぶ
+おか,ゆきのぶ
+おおはし,ひろし
+はらだ,きはちろう
+わきさか,ひろし
+いわなが,けいいち
+かわしり,みつお
+いなもと,まさかず
+さわ,ひろゆき
+たけだ,たけひこ
+いいだ,よしひと
+かじの,まもる
+みわ,はるかず
+ふくい,けいいち
+すえなが,とおる
+くにえだ,ゆたか
+きたおか,かずひこ
+いど,とおる
+おくだ,りょうすけ
+ほりかわ,かつき
+すえもと,てつや
+よこやま,としひろ
+ふじもと,とみお
+きせ,しょうじ
+にしむら,ひでひこ
+たかだ,こうじ
+つかだ,まさかず
+とよだ,えいじ
+さの,とおる
+にしだ,まさひこ
+おおもり,いちろう
+おざき,とおる
+いしまる,しげやす
+たなか,こういち
+かしわばら,のぼる
+あさの,やすかず
+ひらの,しんじ
+たにやま,てつろう
+うめばやし,けんじ
+おむら,ひでお
+さかぐち,きよかず
+おかむら,しょうご
+やまもと,あきら
+えちご,これあき
+さわだ,やすひこ
+よこい,かずゆき
+きたむら,りか
+やす,かおる
+たかお,じゅんこ
+かつらおか,しんぞう
+つぼい,まさひこ
+つじ,しげお
+たかはし,あきお
+すぎき,たかき
+たけうち,たかひろ
+かみ,としかず
+こばやかわ,やすひこ
+あおと,じつじ
+ただ,よりこ
+ひだか,のりこ
+にしむら,ちえこ
+えばら,つねお
+みずもと,かずや
+すずき,きよし
+しいな,はるよし
+しおた,みつひこ
+なかはら,こういち
+ごうだ,きよし
+ふるた,まさひさ
+ますもと,じゅんいち
+なかがわ,きいち
+いど,たかゆき
+よりふじ,のぼる
+まつもと,あきら
+さいとう,くにあき
+なつい,ひでき
+うおの,かおり
+たなご,けいこ
+たまがわ,のりひと
+おか,たかし
+ふくしま,まさる
+おかだ,ゆうこ
+きのした,ひでひこ
+しみず,あきら
+こばやし,きよたか
+のだ,まさし
+かのう,つぐひろ
+かじおか,あきひと
+おおの,たかし
+おおはし,まさゆき
+こばやし,ゆういち
+こいずみ,いくお
+たなか,ひとし
+ふくだ,としや
+なかざわ,のぼる
+ほりかわ,さとし
+うちやま,もりひろ
+いずたに,じゅんいち
+たきい,としこ
+たかせ,のぶつぐ
+ますざき,たかし
+あんどう,とおる
+かたぎり,しげいちろう
+もりやま,としや
+さとう,あきひろ
+ひるかわ,さとし
+うえだ,まさお
+なか,としたか
+みやざき,ひろし
+おおくぼ,まさたか
+たちかわ,まこと
+わたなべ,みちなお
+あさかわ,せいじ
+かわはら,まさや
+おさだ,はじめ
+さかい,はるお
+くりやま,さなえ
+さいとう,こずえ
+すきがら,よしこ
+あけひ,くみこ
+はやし,きよみ
+かわた,なおみ
+しまがき,みさえ
+ほり,かずよ
+のむら,よしこ
+とむら,しんいち
+くぼ,きよこ
+にしもと,のりひと
+よしだ,こうじ
+さぎ,たかよし
+かんの,けいこ
+やぶの,まさき
+やすなが,ひろゆき
+ひがしうえ,ひろひと
+こさき,まさゆき
+なか,としひろ
+おの,とおる
+むらた,こうぞう
+しょうじ,ひであき
+かわもと,あきひろ
+えさき,まさる
+えいどめ,ひでかず
+すずき,ゆたか
+もとやま,やすかず
+はまだ,あきら
+こしかわ,としお
+はやし,まさはる
+やまざき,ゆきや
+まつもと,よしまさ
+おの,しんいち
+はなわ,ただし
+はせがわ,けいじ
+みやた,まさあき
+きたざわ,まさかず
+えんど,やすひこ
+ながさか,よしあき
+よしもと,ひろみつ
+くろさわ,けんさく
+まるやま,よしはる
+なかにし,かずゆき
+よしだ,けいいち
+ふくた,ひでや
+ふじさわ,かつひこ
+さくま,よしはる
+はしもと,かつみ
+わだ,まさおみ
+にしざき,のぶお
+ふかがわ,えつこ
+あおやま,まさかず
+きよたに,つとむ
+とりはら,ひろゆき
+ながの,たけし
+おおが,ゆたか
+さかの,たかし
+みつはし,まさひろ
+ありもと,せいこ
+よしまつ,たかあき
+あおやぎ,あきお
+やまだ,まさひこ
+むらた,ゆみこ
+いりえ,しんいち
+やまざき,まさのり
+えぞえ,けいいち
+さとう,つよし
+おおた,きよし
+いのう,もりひと
+かど,たつや
+ささき,よしひろ
+かけひ,よしひろ
+つちや,かずや
+まさおか,しょうぞう
+すずき,やすお
+とね,とみひろ
+おおわだ,のりあき
+うえき,まさと
+まえだ,かずのり
+ふじおか,やすこ
+うらべ,なおこ
+なかむら,ゆういち
+いさか,まさあき
+にしさか,のぶお
+いわさ,えいいち
+たくしま,よしお
+つかもと,ふみお
+さくま,たけひこ
+ひょうどう,ひろし
+なかむら,こういちろう
+ささき,まさお
+ふくわき,としや
+おくむら,まさよし
+たかはし,とよひこ
+しろい,やすし
+こかぶ,ただお
+のぐち,ひろき
+たかつ,ひろかず
+よねざわ,てつや
+さかいだ,やすひろ
+こいずみ,みつや
+まえだ,かつゆき
+まんだ,ただし
+こぐれ,いちろう
+あきもと,よしと
+たけむら,ともあき
+すずき,こうじ
+やまうち,じゅんいち
+さえき,ゆうじ
+わかばやし,のぶゆき
+あきもと,まさひこ
+よしだ,ひろあき
+さとう,つねお
+おしま,やすとし
+ささき,まさひで
+あらい,あきひで
+わたなべ,てつじ
+いけもと,ゆきお
+きくい,こういち
+ひらた,ひろみ
+まきうち,たくや
+こせき,しろう
+にしかわ,やすひろ
+いがらし,ふみお
+たなか,ただつね
+ほんだ,えいいち
+はった,ひろみ
+はらだ,ひさかず
+よしだ,おさむ
+わたなべ,ひろし
+こいずみ,りょういち
+こすだ,なおひさ
+みやけ,まさあき
+ふじや,たけし
+まさき,あきら
+さくらい,ひでき
+にしやま,よしお
+かわせ,たかのぶ
+おかざわ,しんや
+あさか,としゆき
+おがわ,のぶあき
+ながさわ,はじめ
+きたわき,まさお
+しみず,まさのり
+こばやし,まさはる
+たちばな,しげこ
+いまなか,さとみ
+うしまる,けん
+おかむら,けんいち
+やまの,ゆういち
+きたむら,みちかず
+たかまつ,ひでき
+ときかわ,かずひで
+いけだ,としや
+いしだ,のぶたか
+たにはら,みつぎ
+おがわ,ひとし
+たなか,しょうすけ
+なか,けいこ
+ともざわ,のぶこ
+はらだ,せつこ
+はなぶさ,あつこ
+とくおか,あつし
+べっしょ,まさひろ
+なかしま,かつひこ
+あさくら,やすひこ
+みやでら,ひろし
+すずき,なおき
+よしむら,よしひさ
+さわ,まさゆき
+なかやま,こういち
+ひらざわ,よしひろ
+ふじわら,まさあき
+すがわら,とおる
+たにがわ,まりお
+ほんだ,やすと
+はない,こういち
+えぐち,さくめい
+かさい,よういち
+くろさわ,ひろし
+たじま,しん
+さとう,たつし
+ひびの,つねお
+すがや,しゅう
+くらた,こういち
+ますだ,はるき
+すぎはら,けいこ
+かねこ,よしゆき
+かつ,たかし
+まる,ひろや
+たなか,ひでかず
+としおか,あきら
+しげの,りょうじ
+やまもと,さとみ
+なかがわ,かつみ
+やまぐち,ひろき
+かわもり,よしひろ
+むらやま,まさる
+しゅう,なおや
+いけだ,ひろゆき
+こだま,たつお
+かとう,さとる
+はくちょう,いさお
+かげん,かおる
+てずか,こうじ
+たにぐち,まさたけ
+てらだ,なおき
+かとう,たかき
+ないとう,たけお
+いとう,たかし
+こばやし,けんじ
+たなか,ひでとし
+ささき,わたる
+ほんだ,みちと
+ひえだ,あきお
+さかい,かずのり
+かつみ,たかし
+たけべ,たかし
+のぐち,つよし
+わだ,えいじ
+うえやま,けんじ
+うえの,たかひろ
+たんご,ひでお
+むらかみ,かつみ
+あらき,こうぞう
+あらせ,ますひろ
+やまもと,しろう
+わしお,ひろゆき
+わけじま,よしふみ
+こいずみ,けんすけ
+とくやま,としふみ
+とみなが,けんじ
+きしだ,せいじ
+けん,みちひろ
+ひろせ,よしゆき
+うちやま,けんいち
+わかすぎ,ただたか
+いしぐろ,かつのり
+にしむら,ひろかず
+いのまた,かおる
+つつみ,としひこ
+いりえ,あつし
+さいとう,かずお
+うえの,しんいち
+ほんだ,おさむ
+きたむら,かよこ
+やまがみ,なみ
+なかにし,まさひろ
+うえだ,たかし
+ひろた,わたる
+うえだ,ともき
+いけだ,ひろし
+はなぶさ,よりのぶ
+こだま,ひろあき
+おかもと,なおき
+すずき,ひろみつ
+すずき,ひさえ
+にいくら,あきひろ
+にしだ,ひろひさ
+おさべ,じゅんいち
+ほそかわ,けんいち
+いまお,よういち
+ふじた,よしのぶ
+おおの,よしのり
+なかやま,よしお
+はやし,けいじ
+すがはら,かずのり
+はらだ,いちろう
+あべ,しゅんいち
+あべ,けいいち
+あべ,けんいち
+あだち,ただひろ
+あいば,だいすけ
+あかばね,かずお
+あんどう,えいほ
+あんどう,ともゆき
+あおき,まさし
+しいき,ひろし
+あらい,しょういち
+あらい,とおる
+あらい,たけし
+あらかわ,いさお
+あらき,たつや
+あらき,たかゆき
+あらき,きよはる
+あらき,かずあき
+あらまき,まきお
+あらめ,たかね
+ありむら,たけし
+あさみ,しゅういち
+あずま,ひろよし
+ばば,ひでかず
+ばば,もとこ
+ちば,のぶあき
+ちば,こういち
+ちの,ともゆき
+だいこく,よしのぶ
+でぐち,ひろのり
+でき,よしあき
+どい,のぶひこ
+えださわ,ひでき
+えぐち,よしなり
+えんど,かずろ
+えんど,まさお
+えりかわ,ゆうこ
+ふじい,ひろし
+ふじもと,ひでと
+ふじもと,まゆみ
+ふじの,よしあき
+ふかはら,あきら
+ふかみ,なおき
+ふかやま,のぶゆき
+ふくだ,まさゆき
+ふくい,まさひこ
+ふくもと,ひろし
+ふくなが,まさひこ
+ふくしま,のぶお
+ふくしま,かずたか
+ふなき,さかえ
+ふなき,やすふみ
+ふるや,いさお
+ごうはら,よしひさ
+ごとう,しんいちろう
+はが,ただし
+はぎの,かずろ
+いちむら,まこと
+はま,なおき
+はなだ,まさよし
+いば,きよさだ
+はせべ,かつへい
+はせがわ,としろう
+はしもと,のりあき
+はし,なおあき
+はたの,のぶひろ
+はとり,しんたろう
+はやし,あきひこ
+はやし,こうじ
+ひだか,かずこ
+ひがし,きよたか
+まの,よしかず
+ひらい,よしたか
+かみさき,としひこ
+ひらの,まさひこ
+ひろい,ひでお
+ひろもり,よしはる
+ひろさわ,あつし
+ひろさわ,おさむ
+ひろせ,しんいち
+ほんだ,よう
+ほんま,ひろやす
+ほりべ,しげる
+ほりえ,ひろし
+ほりぐち,ゆういち
+まつもと,としひで
+ほり,はじめ
+ほり,ひろみ
+ほしかわ,のりゆき
+ほそかわ,すすむ
+ひょうどう,まさはる
+いばらき,ゆういち
+いちおか,あつふみ
+いけだ,たかひと
+いまい,よしたか
+いまむら,たかあき
+いまなか,ともや
+いなだ,ひろし
+いなむら,こういち
+いのうえ,さとる
+あらい,としみ
+いのうえ,えいじ
+いしい,きよみ
+いしい,ひろし
+いしかわ,みきお
+いしかわ,あきら
+いしおか,まこと
+いそだ,
+いとう,まさひろ
+いとう,ちずこ
+いとう,かずひと
+いとい,ただし
+いとう,しんじ
+いわい,あきら
+いずみや,まさのり
+かじた,さとし
+かめい,しんじ
+かない,まさひろ
+かなざし,のりこ
+かねこ,たけし
+かねこ,まこと
+かのう,いくお
+かりう,しげじ
+つきじ,たかのり
+かさまつ,ひろゆき
+かたぎし,まさし
+かたやま,あきら
+かたやま,てつめい
+いそだ,たかお
+かたやま,こうじ
+かとう,さつお
+かとう,まこと
+かとう,やすし
+かとう,ちえ
+かつまた,たくや
+かわべ,ゆきのぶ
+かわべ,あつし
+かわべ,むねひと
+かわだ,けんすけ
+かわだ,あきひこ
+かわもと,あきお
+かわたに,せいき
+きみずか,みちろ
+きむら,かずや
+きむら,りょうたろう
+きのした,やすひろ
+きさか,ひでお
+きしだ,たかこ
+きたがわ,きょういち
+きたむら,よしひろ
+きた,ひでと
+きよの,まさゆき
+こばやし,かつのり
+こだま,かずなり
+どひ,ひらやす
+こはら,まさき
+こいで,としや
+こいわ,ひょうじ
+こいずみ,はるこ
+こまつ,やすたか
+こめだ,ひろゆき
+こんど,みき
+こんど,とおる
+こにし,じゅんじ
+こさか,ひろあき
+こたき,じゅん
+こたに,ひでき
+ことぶき,ひろし
+たしろ,かずのり
+くぼた,ゆきまさ
+くぼ,てつや
+くどう,まさと
+くまがい,やすひろ
+くろせ,おさむ
+くしま,やすこ
+くしみや,こうき
+くつかけ,しんいち
+くわの,しゅうぞう
+まつなが,ひでき
+まえだ,ゆうじ
+まえはら,さとし
+えのき,としや
+まえかわ,こうじろう
+まえき,あやこ
+まんの,しんぎ
+まの,えいじ
+まんたに,よういち
+まるやま,やすひろ
+ませ,かずひこ
+ますざわ,まさお
+まつだ,みつのり
+まつい,いつこ
+まつい,まさと
+まつもと,やすあき
+まつむら,かずあき
+まつの,のりゆき
+まつざき,れいこ
+みき,しげる
+みこだ,てるゆき
+みむら,かずたか
+みむら,しげのぶ
+みなみ,さとし
+みなみ,のぶひろ
+みなと,やすし
+みねまつ,のりこ
+みね,まさたか
+みしま,ひろゆき
+みわ,まさひろ
+みやぐち,たかひろ
+みよし,ゆうこ
+みずた,じゅんこ
+もものい,けいすけ
+ほんだ,たけし
+もりた,やすし
+もりた,あきひこ
+もり,あきら
+もり,あつし
+もり,かずひろ
+もり,みのる
+もり,たかし
+むねむら,としみつ
+むらかみ,ようじ
+むらおか,こうじ
+みょうが,ひろき
+ながみね,まさし
+やまだ,しんいち
+ながお,としかず
+ながた,けんじ
+ないとう,こういちろう
+なかがわ,たろう
+なかいち,ひろのり
+ささき,つかさ
+なかじま,ひろし
+なかしま,そうたろう
+なかこじ,たつや
+なかむら,まさふみ
+なかむら,さとし
+なかむら,とおる
+なかむら,じゅん
+なかむら,だいすけ
+なかむら,ゆうこ
+なかむら,よういち
+なかむら,くみこ
+なかにし,としゆき
+なかの,てつや
+なかの,きんや
+なかしお,こういちろう
+なかた,かなこ
+なかやま,たかし
+なんけ,あつし
+ならざき,たいちろう
+なりせ,ゆきひろ
+なるおか,いさむ
+ねもと,ただし
+にむら,すすむ
+にむら,まさゆき
+にしむら,つとむ
+にしの,かずまさ
+にしした,てつのり
+にしうち,しゅういち
+にしやま,なおひと
+やじま,よしえ
+にしざわ,ゆたか
+にわ,あきら
+のぶなが,みつし
+のがみ,まこと
+のぐち,しんいち
+のぐち,みゆき
+のま,とよみ
+のま,こういち
+のむら,こうじ
+のむら,のりお
+のむら,しゅんいちろう
+のせ,ただあき
+のざわ,よういち
+ぬきい,かつみ
+ぬまお,あきら
+ぬまた,かずひろ
+おちあい,たかゆき
+おちあい,よしお
+おだはら,いくお
+おだ,みのる
+おがさわら,しゅうじ
+おどまり,とういちろう
+おかど,ふみお
+おまさ,あきら
+おなが,ひろゆき
+おおの,ひでゆき
+おおさき,あつし
+おおさわ,ひでたか
+おおすみ,かずゆき
+やました,まさる
+おおた,なんてつ
+おおた,たかし
+おおつか,たつや
+まつなが,よしあき
+おおやま,のりゆき
+おかだ,りえ
+おかだ,たけし
+おかだ,ひろふみ
+おかだ,よしのり
+おのでら,たかお
+おかもと,ひろゆき
+おかざき,たかあき
+おくだ,としゆき
+おく,のぶゆき
+おの,さちこ
+おの,けいいちろう
+おりて,けんいち
+おさだ,むつみ
+さいとう,むつお
+さいとう,しんご
+さいとう,しゅうじ
+さいとう,よういち
+さいとう,ゆたか
+さいとう,かずひろ
+さいとう,あきひろ
+さかい,いちろう
+いしざき,ゆきのり
+さかもと,ひろし
+さかのうえ,ひでお
+さかうえ,かずまさ
+さこだ,のぶお
+さくらい,しげのり
+さくらい,たかし
+さぬき,りゅうたろう
+ささき,あきと
+とみた,ともなり
+さとう,てつお
+さとう,なおき
+さとう,よしのり
+さとう,まさゆき
+さとう,としや
+さとう,あつこ
+さわだ,まさと
+せお,けんさく
+せざい,かずやす
+しばた,たけひこ
+しばた,よう
+しがき,あきひこ
+しみず,ひろむ
+しみず,よしみ
+しみず,あきら
+しみず,あきとし
+しみず,ひでお
+しもむら,ひろあき
+しのはら,かずひろ
+しらつ,まこと
+しろした,さとし
+しょうじ,ゆうこ
+しょうみつ,よしひろ
+そだ,かつすけ
+そもり,たつお
+そう,かずひこ
+なか,ゆうじ
+すぎむら,けいし
+すぎの,まさひろ
+すぎさわ,のぶゆき
+すぎた,さゆり
+すぎうち,しんすけ
+すぎやま,あきのり
+すぎやま,まさのり
+すぎやま,かずみ
+すずき,しんや
+すずき,ゆうじ
+すずき,しん
+すずき,ひろあき
+すずき,としあき
+すずき,ひでと
+すずき,こういち
+すずき,ゆうこ
+たちばな,たかし
+たいら,あきら
+たいら,ひであき
+たかだ,ひろゆき
+たかぎ,まさかず
+たかはし,のりいつ
+たかはし,たかゆき
+たかはし,はじめ
+ますざわ,ひとし
+たかはし,まさあき
+たかま,ひさと
+たかの,みえこ
+たかの,かずよし
+たかさか,はじめ
+たかせ,かつじ
+たかた,くみこ
+たかやま,あつし
+たかやなぎ,ありひろ
+たけだ,えり
+たけだ,あきら
+ふじい,あつこ
+たけのり,いくし
+たけした,ひろかず
+たけうち,ゆうじ
+たけうち,たかとし
+たきざわ,まさあき
+たきざわ,つよし
+たまき,さとこ
+たむら,あきひろ
+たむら,てつね
+たむら,のぶお
+たなか,しょうご
+わたなべ,あきひろ
+たにやま,のぼる
+たに,かずひこ
+てらきた,ながのり
+てずか,しんいち
+とばり,すすむ
+とがし,じゅんいち
+やまだ,けんいち
+ときぞの,しげお
+とみなが,もとひさ
+とみなが,しんじ
+とみた,しんじ
+とみた,てつお
+ともおか,ひとし
+とのさき,よしのり
+とりざわ,えみ
+こいけ,ひろこ
+とよかわ,まさよし
+とよかわ,ひさよし
+つぼい,ただし
+つかだ,とおる
+つくい,ひさし
+つるかわ,えいじ
+つつい,としかず
+つつい,ゆうじ
+うちだ,ひろき
+うちだ,じゅんいち
+うちま,しゅんいち
+うちやま,あきひろ
+うだ,ひさよし
+うえだ,かずのり
+うえの,きよし
+うえの,のりお
+うえの,たかし
+うけがわ,たかゆき
+うまずめ,よしひろ
+うめむら,きみひろ
+わだ,ひろし
+わだ,やすひこ
+わたなべ,りょう
+いいだ,さとし
+わたなべ,たかし
+わたり,やすよし
+やぎ,よしゆき
+やまだ,ひろゆき
+やまが,ひでお
+やまぐち,まさのり
+やまぐち,ひでお
+やまぐち,まさし
+やまもと,てつや
+やまもと,まさゆき
+やまもと,かずゆき
+やまもと,ひでし
+やまもと,まさのり
+やまもと,かずと
+やまもと,かおる
+やまもと,まさよし
+やまなか,えいじ
+やました,さとる
+やまうち,かずあき
+やまざき,はるひこ
+やまざき,まさとし
+やまざき,けんじ
+やの,ゆきお
+やの,こういち
+やすだ,たけし
+やすまつ,かつなり
+やすもと,こうじ
+やすにわ,たかゆき
+よだ,おさむ
+よだ,いさお
+よしだ,よしひろ
+よしい,たつや
+よしなが,ゆみこ
+よしの,たつみ
+よしたけ,あきひろ
+たきざわ,たかし
+やまぐち,かずよし
+かばしま,かずひさ
+さくら,ゆうすけ
+むらやま,ひろゆき
+ひきだ,かずみ
+むらい,くにひろ
+ほ,あきら
+えんど,せいじ
+てらむら,たつお
+わたなべ,たかひこ
+いまい,しげや
+もりもと,としかず
+こやり,せいじ
+まつみや,ゆういち
+しばた,かずお
+ちしろ,よしひろ
+いたみ,ひでお
+おざき,ひとし
+ふくもと,まさつぐ
+おかだ,ひろし
+さわだ,ひろし
+さくらい,たかし
+はやし,よしのり
+まつおか,やすのり
+みよし,のりよし
+やまなか,こうじろう
+しみず,ひとし
+こはら,まさのり
+にしかわ,ひろし
+いまい,やすお
+ふじむら,ひろゆき
+こじま,やすゆき
+こばやし,ひろし
+きくち,かつひこ
+さいとう,みつる
+やました,ひであき
+あべ,しんじ
+てずか,たかし
+たなか,わたる
+にわ,みのる
+かめい,みずほ
+やの,みつお
+なかまる,やすし
+おおはた,まさのり
+やすやま,まさひろ
+かすが,みつお
+いしい,あきひこ
+ふじもり,のりこ
+いわもと,ひろし
+やました,るみこ
+きた,ともみ
+むらおか,ゆうこ
+いぐさ,よしずみ
+ながさわ,ひろじ
+やまぐち,やすひろ
+おだじま,ゆたか
+おおた,まみ
+はぎの,なおいちろう
+やぶき,としあき
+いき,よしとし
+さいとう,まさと
+やまだ,たかし
+なかやま,
+むらまつ,かおる
+たしろ,しょういち
+いしはら,まさゆき
+しばおか,たつお
+なかお,やすのり
+ふじた,としき
+さくた,まさゆき
+はた,すすむ
+おおやま,ただし
+たご,きょうこ
+まつむら,かずお
+いとう,まさゆき
+きむら,たけお
+あおき,みつたか
+こまがた,ひでとし
+ならむら,かずこ
+ふじもと,まさき
+みやさか,としひこ
+はやし,まさひろ
+さいとう,かずひこ
+おがさわら,しょうじ
+おおつか,としゆき
+かわい,ともゆき
+しまず,よういち
+たかはし,きしこ
+まえざわ,いずみ
+はだ,かおる
+まつひら,えり
+すぎはら,のぼる
+なかじま,よしのぶ
+はたけやま,てつや
+あおき,まさひこ
+しぶかわ,きよひさ
+いしだ,しげる
+おかだ,たかし
+いとう,あきら
+かとう,まさひろ
+こばやし,なおみつ
+むらさわ,みのる
+みほ,まさのり
+すがね,よしのぶ
+いしかわ,よしひこ
+おか,やすひろ
+いわみ,ゆみこ
+なかやま,ひろし
+いとう,かずき
+すぎやま,しんいち
+かしもと,よしこ
+なかむら,まさゆき
+あおやま,ひでのり
+しばた,けんいち
+まつお,よしのり
+しのむら,あおい
+ふるかわ,よしふみ
+もとき,しゅういち
+わたなべ,ちお
+あんどう,まさひろ
+たけひ,さちこ
+いしい,あきふみ
+のちせ,かずひこ
+みやなが,としこ
+しんどう,ひろみ
+おおた,みよこ
+たに,よしあき
+こむろ,ふみのり
+いわさ,ひろみち
+まつもと,ひであき
+きむら,ひさと
+あおき,あきひこ
+まつばやし,ひろし
+ごとう,ふみゆき
+おがわ,あきら
+すぎたに,はるお
+おくの,ゆきお
+さくらだ,しんぺい
+むこやま,のりこ
+いとう,さとし
+やまもと,ただし
+やまもと,まさとし
+かねこ,しゅうへい
+やまざき,やすひろ
+なかむら,とも
+みわ,おさむ
+さむかわ,しろう
+なかだ,としゆき
+よしとみ,けんいち
+たかしま,つねじ
+いしげ,あきこ
+すえはら,ひろゆき
+いのうえ,ひでみ
+のじま,
+さくま,さちえ
+さの,よしみち
+むらおか,かつじ
+みうら,りゅうぞう
+さかもと,じゅん
+なるお,せいこ
+はせがわ,みつひろ
+おかだ,てつお
+やひろ,のぶゆき
+ばば,たくや
+あた,あやの
+ながせ,きよし
+かわえ,いずみ
+みうら,まきよ
+ふじた,さとこ
+つるみ,よしお
+もちずき,えみこ
+よしだ,かずあき
+おかもと,まさふみ
+やすもと,みつはる
+ねもと,たくじ
+ひだか,うえみつ
+ますだ,くみこ
+とくなが,ふみひと
+なかざわ,すすむ
+ふじなわ,よしはる
+よびかわ,かずひろ
+きただ,たけし
+よしの,やすひろ
+ばば,よしと
+くろかわ,ひろし
+かとう,たかし
+わたなべ,としお
+つちだ,あつこ
+すずき,みゆき
+みずの,あきら
+たにもと,たくみ
+いけの,めぐみ
+いとう,しょうこ
+たけだ,とおる
+まえだ,こうへい
+くどう,かつみ
+かげやま,みねお
+やまかげ,ようじ
+さえぐさ,れいこ
+みずたに,なおこ
+くどう,としひこ
+こおりやま,みずほ
+かたよせ,よしえ
+おさだ,けいこ
+やぎはし,しゅういち
+すみ,たつお
+たなか,あつし
+くどう,ゆきお
+たけひ,あきら
+あめみや,みちひろ
+なかむら,たかし
+きよみつ,けんじ
+いずみだ,よしか
+ふなき,ひろあき
+たけした,かずひこ
+みうら,きくお
+いしばし,のぶこ
+もりあい,けいじ
+むらやま,えいじゅ
+おさわ,やすのり
+ふかだ,よしかず
+やまだ,ひでひこ
+いとう,あきら
+おのでら,とみお
+はやさか,まさみち
+おおつか,ひでひこ
+とおやま,ひろたか
+かわはら,みつる
+えびさわ,まさき
+やまかわ,てつや
+やまもと,やすとも
+すずき,とおる
+おやまだ,たかし
+まつやま,りゅういち
+あべ,のぶひろ
+あべ,やすお
+あべ,かずまさ
+あべ,ゆきお
+あげた,じゅんいち
+あかはね,ひでひろ
+あけなが,じゅん
+あきやま,しげお
+あきざわ,ひでかず
+あまだ,みきお
+あまの,まさし
+あもう,あきお
+あんどう,ひであき
+あんどう,なおき
+あんどう,としふみ
+あおの,ひろき
+あおやま,いわお
+あらい,かずひろ
+あらかわ,ひでし
+ありもと,ひでき
+ありお,まこと
+あさい,あきら
+あさかわ,よしひと
+くろき,ゆきのり
+あずま,しんじ
+ばんの,まさきよ
+べつやく,けんご
+びとう,じん
+ちば,ひろし
+ちゅう,かつき
+えだ,けんいちろ
+えんど,なおみ
+えさき,しんいち
+ふじい,ひろし
+ふじい,ふみお
+ふじもと,あきら
+ふじた,きよなお
+ふじた,あきひろ
+ふじわら,さとし
+ふかざわ,ともひと
+ふくだ,すすむ
+ふくはら,やすひこ
+ふくしま,かずよし
+ふくどめ,かずひさ
+ふくやま,さとし
+ふなばし,まさゆき
+ふるだて,あきひこ
+ふるさわ,しんじ
+ふるた,りきや
+ふるや,しんいち
+ふしき,ゆういち
+はまだ,こういちろう
+はなだ,かつのり
+はなみ,ひでお
+はらだ,あきら
+はるかわ,いずみ
+はせがわ,よういち
+おおつ,むねひろ
+はしもと,あつし
+はしもと,えみこ
+はすもと,あつし
+はっとり,つよし
+はやさか,たかお
+ひだか,けさお
+ひぐち,けいこ
+ひぐち,ふさゆき
+ひじくろ,なおゆき
+ひらかわ,じゅんいち
+ひらの,ひろよ
+ひらた,まさひろ
+ひろせ,さちこ
+ひさだ,たかし
+ほり,のりやす
+ほうや,かずひこ
+ほんだ,しげゆき
+ほんま,たつや
+たなか,つよし
+ほしじま,たつお
+ほしか,たけし
+ほそだ,ちえみ
+いちかわ,やすひろ
+いちむら,けいご
+いがの,みどり
+いいだ,まさゆき
+いいおか,ひろし
+ながの,さとる
+いけざわ,のぶやす
+いもと,すみれ
+いなずみ,やすはる
+くしみや,しんいち
+いのうえ,しんや
+いのうえ,あきら
+いのうえ,ともゆき
+いぬつか,なおき
+いさじ,ひでと
+いしだ,しゅういち
+いしだ,いさお
+いしだ,くにあき
+いしがき,えりこ
+いしがみ,じゅんいち
+かじたに,おさむ
+いしはら,ひろゆき
+いしむら,まさひこ
+いしやま,しゅういち
+いしざき,のぶお
+いそべ,よしひこ
+いそざき,まさあき
+いとう,ちくさ
+いとう,ひさと
+いわあさ,けんたろう
+いわい,なおたか
+いわま,さとし
+いわもと,よういち
+いわなが,ひろのり
+いわした,しこ
+いわた,かずまさ
+いわた,えいじ
+かどわき,さとし
+かげやま,けんいち
+わたなべ,いずみ
+かみや,くにあき
+かみや,けんいち
+かんばやし,きんじ
+かのう,ひろし
+かりや,なりやす
+かさき,じゅん
+かしま,まさお
+かすや,あきら
+かとう,たかき
+かとう,かずひろ
+かとう,けんじ
+かとう,みつぐ
+かとう,ひでのり
+かとう,ひろゆき
+かわばた,だい
+かわばた,あつし
+かわぐち,ひでみち
+かわはら,ひろみ
+かわはら,かずふみ
+かわじり,みちお
+かわかみ,てつお
+かわくぼ,かずとし
+かわまた,たかのぶ
+かわむら,ひとし
+かわの,のりあき
+かわさき,まさひと
+かわしま,としひさ
+かわず,まさのり
+きばし,ひでひこ
+きまち,まさき
+きもと,たけし
+きむら,たくや
+きんばら,よしみち
+きのした,やすし
+きのした,ひろき
+きりさわ,いちろう
+こばやし,じゅんいち
+こばやし,ひろあき
+こばやし,まさお
+こばやし,ふじひこ
+こだま,こうじ
+こだま,おさむ
+たかむら,もとひこ
+こひなた,ゆうすけ
+こんの,ひろし
+こんの,たかひろ
+こやま,こうじ
+こずき,としお
+とうどう,こうじ
+こじま,しんじ
+こんど,あきら
+こんど,たかし
+こんど,まさとし
+こんの,かおる
+こたき,ひとし
+こやいし,みか
+こやなぎ,のぼる
+くぼ,けんたろう
+くどう,きみひと
+くまがい,なおゆき
+くまき,しんじ
+くらち,たかゆき
+くらた,こすけ
+くりた,みき
+くりやま,しゅんじ
+くろだ,こすけ
+くろかぎ,まさのぶ
+くろさわ,しんじ
+くろさわ,せいき
+くわの,ひろたか
+まえばし,としあき
+まえざわ,のぶゆき
+まの,よしお
+まるわか,ひでなお
+うちやま,たつお
+ますだ,じゅん
+まつい,しげき
+まつい,さとし
+まつもと,しんいち
+まつもと,ひさと
+まつなが,まさとし
+まつしま,もりひろ
+まつした,ただし
+まつざき,たけし
+いないし,よしお
+みかみ,けいいち
+みなぎ,あきみつ
+みつやま,こういちろう
+みうら,しげき
+みやけ,あつし
+みやもと,あつこ
+みやた,こうじ
+みやうち,まさき
+みやうち,いちろう
+みやざわ,あきら
+みやざわ,たかし
+みよだ,たかひさ
+みぞぶち,けんじ
+みぞた,たけお
+ちば,ひろひさ
+みずはし,まこと
+みずまち,せいじ
+みずたに,さとし
+みずたに,つよし
+みずたに,ひろゆき
+もちずき,みのる
+もりもと,ななこ
+もりたに,たかし
+もりた,とよひこ
+もりた,たかし
+もりわき,しんいちろう
+おくい,たけひこ
+もり,たけみ
+もり,たかゆき
+むこやま,ひろゆき
+むらて,しんいち
+むとう,かつき
+ながい,みつひろ
+ながの,みつとし
+ながおか,たかひろ
+ながせ,かつみ
+ながた,ひろゆき
+ながた,もとき
+ながわ,しんいち
+なかまる,よしき
+なかむら,あきら
+なかむら,ともこ
+あべ,よういちろう
+なかむら,としや
+なかむら,あきら
+なかしま,ひさよし
+なかしお,ひろゆき
+なか,のりこ
+なみき,のりかず
+なんぶ,ひろしげ
+やまぐち,しんじ
+にいみ,しげふみ
+にしだ,ひろよし
+にしだ,えいじ
+にしだ,まさあき
+にしだ,すすむ
+にしくぼ,あきひろ
+にしむら,たかあき
+にしむら,つよし
+にしお,まさと
+にしお,しんじ
+にしやま,たかし
+やがわ,けいじ
+にった,ひろみ
+のべおか,あきほ
+のじり,よしのぶ
+のむら,てつや
+のなか,かつし
+おばな,みのる
+おちあい,としゆき
+おちみず,たかし
+おち,みつのり
+おだおおはら,しんご
+おだ,ひろかず
+おがた,まさき
+おがわ,まさとし
+おがわ,えつこ
+おぐら,なおゆき
+おおひら,のぶゆき
+おおひら,いちろう
+おおいし,あきら
+おおいし,まこと
+おき,かゆ
+おおくぼ,かずこ
+おおの,けいこ
+おおぬま,しげのぶ
+おおぬま,なるし
+おおたき,まさひで
+おおた,とおる
+おおた,よしなが
+おおた,こういち
+おと,まさずみ
+おおつぼ,ひろふみ
+おおやぎ,まさひろ
+おおやま,あつし
+おいえ,かずや
+おじま,あきら
+おかべ,いちろう
+おかだ,とおる
+おかもと,まさき
+おかね,たかし
+おかの,ひでお
+おかの,まさこ
+おかざき,はるひこ
+わたなべ,まさとし
+おくだ,あつひろ
+おくの,かつし
+おなや,かずこ
+おの,きよし
+おの,しんや
+おおの,ゆたか
+おさない,きよあき
+おざき,ひでお
+さいとう,よしみ
+さいとう,じゅん
+さじ,やすひで
+さじ,かずお
+さかい,かずひこ
+さかい,ともすけ
+さかくら,たかひろ
+さかうえ,やすゆき
+ささべ,まこと
+ささき,ひでかず
+なみき,ひろし
+さたけ,かつひろ
+さたけ,わき
+さとう,しゅういち
+さとう,たけし
+さとう,なおき
+さとう,ゆうぞう
+さとう,しげき
+さとう,ひろし
+さわだ,はじめ
+せきぐち,ひろあき
+せきもと,としゆき
+せきね,きいち
+せきおか,まもる
+せきや,ひろあき
+せき,じゅんいちろ
+せんた,のりあき
+しばた,さとし
+しいな,ふみはる
+しいや,ひでき
+しまばやし,まもる
+しまだ,しんいちろう
+しまだ,みちとし
+しまむら,あきひと
+しみず,ひでとし
+しみず,いたる
+しもむら,かつあき
+しのだ,こうじ
+しのはら,もとゆき
+しおざわ,のぶゆき
+しらいし,ゆうじ
+しらさき,ようこ
+しらとり,ひでじ
+しさい,まさひろ
+しょうだ,けいすけ
+そう,なおき
+そのべ,とおる
+すどう,しゅんいち
+すどう,さとこ
+すぎうら,なおき
+すぎやま,りょういち
+すぎやま,ともじ
+すみだ,ひろき
+すみかわ,ひとし
+すずき,みねかず
+すずき,ひろし
+すずき,あつし
+すずき,としなり
+すずき,よしゆき
+すずき,やすぞ
+すずき,はじめ
+すずき,かずあき
+ほそかわ,ゆり
+たぶし,いくた
+たちざわ,のりふみ
+ただ,たかあき
+ただ,ひろとし
+たかた,ゆうすけ
+たかがき,ひでかず
+やまざき,なおき
+たかはし,よしつぐ
+たかはし,ひろき
+たかはし,まさやす
+たかの,たかひろ
+たかさき,たかし
+たかす,かずよ
+たかとり,こうじ
+たかやま,まさみ
+たかやま,しげる
+たかやま,ゆうじ
+たかや,よしかず
+たけだ,たえこ
+たけだ,ひろゆき
+まつおか,よしひろ
+たけい,のぶひこ
+たけうち,ともおき
+たけうち,のりとし
+たけ,けいこ
+たきみや,ともひろ
+たまたに,かずあき
+たむら,よしひろ
+たむら,けんじ
+たなか,かずひさ
+たなか,ともやす
+たなか,あやこ
+たなか,のりひろ
+たにもと,しんいち
+たにやま,あきひこ
+たんの,おさむ
+たの,ひさお
+てらざわ,あきら
+とくしげ,さとる
+ごとう,なおき
+とみなが,ひろひさ
+とんしょう,ひでゆき
+つぼい,しょういち
+つぼた,しょうじ
+つじむら,なおき
+まつむら,あきら
+つかだ,ひでき
+つねよし,さとみ
+つるおか,まさや
+つる,よしお
+うちだ,ひでゆき
+うえだ,たもつ
+うめさき,きよし
+うらかわ,ゆうじ
+うらかわ,かずし
+わだ,じゅん
+わかばやし,けんじ
+わかまつ,よしかず
+わたなべ,あつこ
+わたなべ,たかし
+わたり,こうじ
+やべ,こういち
+やはぎ,しんじ
+やまだ,かずひろ
+やまだ,かずひろ
+やまこし,まさゆき
+やまもと,そういち
+やまもと,あつし
+やまもと,よういち
+やまもと,さち
+やまもと,まさみ
+やまうち,とおる
+やまの,ひろふみ
+やまおか,ともたか
+やました,としひで
+やまうち,たけし
+やまざき,ひろまさ
+やまざき,ゆかり
+やなぎしま,ますみ
+やまもと,みかこ
+やの,たかひこ
+やざき,たけし
+よご,やすはる
+よこい,かつまさ
+よこみぞ,としき
+よこた,ゆうじ
+よこた,ひさお
+よこた,ゆうこ
+よしだ,しんいちろう
+よしだ,まちこ
+よしふさ,いくふみ
+よしはら,ともまさ
+よしいえ,はじめ
+よしかわ,ちえ
+よしかわ,みつひろ
+よしお,ゆうじ
+ゆあさ,まさよし
+ゆき,あきら
+あだち,としゆき
+おおにし,かずお
+おおた,みわこ
+あさの,みちこ
+にしむら,みつよし
+やまだ,ひろのり
+さい,くにお
+みやもと,かずお
+すずき,かずひこ
+ふくい,くにや
+おくだ,ひさこ
+さいとう,たかお
+ふるや,かつみ
+もとやま,なおひろ
+よしざき,ゆういち
+なかむら,あつろう
+ときわ,しゅういち
+いなだ,まさつな
+ときわ,のりゆき
+よしだ,たかゆき
+たかの,けいこ
+うえだ,ともこ
+つちや,ゆうこ
+しもかわ,ふみひこ
+まつい,かつみ
+すがや,よしお
+みのぐち,やすこ
+うえだ,ひかる
+いの,ともじ
+まえだ,まこと
+つぼた,のりお
+よしみ,いくお
+いちかわ,しげひろ
+ほり,ひでや
+はやし,ゆたか
+しばた,いくこ
+こばやし,ますひこ
+おおくぼ,たけし
+いわた,のぶゆき
+ふじた,まさひろ
+きたむら,かずお
+くろき,けいこ
+やまもと,たかし
+やまばた,ゆきこ
+さいとう,しゅういち
+ふじわら,ただし
+いとう,かずと
+いいけ,とおる
+さむかわ,あきのり
+あずま,まさき
+あおき,あつし
+ふじた,つねお
+みよし,としかず
+せきやま,よしお
+てらだ,てるひさ
+えんど,たけし
+かきもと,けんじろう
+ふるや,いわお
+まきむら,たけお
+こんの,ひろし
+すぎさき,としゆき
+よしだ,しげお
+はぎわら,ひろし
+やざき,ゆうじ
+にのみや,かずお
+こさか,ひろやす
+さの,しんご
+さいとう,だいすけ
+しもせ,たかよし
+たかはし,かずひと
+たつおか,まさき
+たばた,よしたか
+なおい,まさこ
+ながた,まさお
+にしおか,しげる
+まつかわ,あつし
+みずの,ゆうこ
+とくなが,けいこ
+むらかみ,ひろき
+やすかわ,としのり
+やまぐち,ゆきお
+よこうえ,ただし
+あずま,のぼる
+いなだ,みつゆき
+いしい,のぼる
+いまにし,たけお
+おかの,かねみつ
+きし,としこ
+くぼた,まさのり
+こみなみ,まゆみ
+あいやま,しょうじろう
+さの,ちから
+たきがわ,しげよし
+こんの,ひろやす
+せんだい,たかし
+にわの,ひですけ
+し,なおよし
+かとう,かずなり
+あかさか,くにお
+おんずか,ひろし
+こが,こういち
+はやかわ,ともみ
+はせがわ,まさよし
+ふるかわ,たけし
+ふじかど,ゆうじ
+とのかわ,たけし
+まつお,よしお
+きみずか,まさのり
+おち,まこと
+いちこはら,まさやす
+いけだ,あきこ
+あらたけ,いくお
+いけだ,ときお
+いとう,よういち
+いけだ,えつ
+いいだ,まさと
+おおくま,かずえ
+くさば,まさき
+こばやし,さよこ
+ごとう,かずや
+すずき,もとのり
+せきね,ひろし
+たかだ,としゆき
+こんど,ようすけ
+たけやま,けいしろう
+たかいち,おさむ
+そだ,けんじ
+たの,まこと
+しのざき,さとし
+はらだ,あや
+くどう,かつこ
+つのだ,なおこ
+ふるかわ,としあき
+もりた,まさゆき
+やまもと,とおる
+やました,よしはる
+ゆかわ,よしお
+よしだ,えいこ
+はやし,としたか
+たんの,えいいち
+たかはし,まこと
+なりあい,よしのり
+たかむら,あきお
+たんの,てつお
+こばやし,こういち
+ごとう,とおる
+ごうだ,きょうこ
+なかしま,みつお
+ほしの,ふみただ
+わこ,なおき
+すずき,しげお
+よしまつ,まさくに
+なみおか,しんじ
+やまぐち,ひろかず
+いしばし,まこと
+いしだ,せんや
+うちやま,せいじ
+えんど,しげる
+なかの,まさふみ
+いまい,かずお
+おさない,あつし
+さかもと,きよし
+しおみ,ちかし
+しまざき,なおき
+てるや,としや
+なかたに,なおき
+はぎわら,きよかず
+ひがし,しょうこ
+ほりうち,よしお
+みぞろぎ,なおき
+もり,たもつ
+いのうえ,たけひこ
+しだ,みちよ
+やまもと,みちこ
+やまもと,ひであき
+おおたき,かずや
+ふじ,さなえ
+あきもと,まもる
+いいじま,あきこ
+おぐま,ゆみこ
+さとう,たかお
+つちや,よしひろ
+さいとう,かずよし
+はら,せいいちろう
+ふじまき,しんや
+むろた,みつまさ
+もり,とおる
+みぞぐち,としゆき
+いけはた,ひろゆき
+おがわ,ひろたか
+うえの,まさとし
+たなか,かずひろ
+こばやし,まさかず
+くろす,やすじ
+きたがわ,ひろし
+しのみ,まさゆき
+はせ,ゆうぞう
+てるぬま,ようこ
+きくち,さとし
+はしもと,のりゆき
+おおかわ,しんと
+おおにし,そういち
+あべ,まさひと
+あだち,ひでき
+あだち,まさと
+あだち,としゆき
+あご,かおり
+あいはら,あきひこ
+あいはら,ひでお
+あいざわ,じゅんいち
+あかまつ,たつお
+あかま,ともみ
+あかせ,まさゆき
+あかやま,しんげん
+ふくしま,ともの
+あきば,つとむ
+あきの,はるき
+あきしか,ゆうじ
+なめき,なおみ
+あきずき,しんいち
+あまだ,ゆきお
+あまの,とおる
+あみの,のぶはる
+あんべ,やすし
+あんどう,ひろとし
+あんざい,たかよし
+あんざい,ひろし
+あおき,さとし
+あおやぎ,たかお
+あおやぎ,ひろゆき
+あおやぎ,ひさし
+あらかわ,たいすけ
+あらかわ,まさゆき
+あらき,としゆき
+あらやす,ひとし
+あら,あきお
+ありた,きょうこ
+あさだ,くにお
+あさだ,ひろあき
+あさかわ,のりえ
+あさくら,ともゆき
+なかさと,あきら
+あさの,よしひろ
+あさり,かずき
+あつみ,あきよし
+あわか,かつみ
+ばば,かずひろ
+ばん,けんぞう
+ばん,わたる
+ばん,こうたろう
+ちょうさ,まさし
+だいど,けいしん
+だいもん,なおひこ
+でむら,よしと
+どい,たかし
+えびぬま,あけみ
+えぐち,じゅん
+えはら,かずお
+えなみ,なつこ
+えとう,よしなる
+いわさき,かずお
+えざき,ゆうじ
+ふじえだ,じゅん
+ふじえ,こういち
+ふじがき,よしちか
+ふじい,としゆき
+ふじい,あきら
+ふじい,じゅんいち
+ふじい,みゆき
+ふじい,しげのり
+ふじかわ,しんいち
+ふじもり,ともの
+ふじもと,しょうご
+ふじもと,しの
+ふじの,たかし
+ふじおか,やすし
+おぐら,あやこ
+ふじた,まさと
+ふじた,さとる
+ふじた,ゆきお
+ふじた,しょうじ
+ふじわら,ひろし
+ふかだ,あつし
+ふかお,みつひろ
+ふかお,みさき
+ふかせ,
+ふくち,よしひろ
+ふくだ,ゆうこ
+ふくだ,ふみひこ
+まつかわ,ひでお
+ふくだ,みか
+ふくだ,ゆきこ
+ふくだ,けんじ
+ふくはら,ゆきお
+ふくい,ひろし
+ふくい,じゅんいち
+ふくおか,しんご
+しが,なおと
+ふくしま,あつし
+ふくしま,ちかこ
+ふくしま,なおき
+おおの,なおき
+ふなつ,としゆき
+ごうだ,よりこ
+ごうだ,ひであき
+ごう,かいろう
+こぐれ,きんや
+ごとう,たかし
+ごとう,ゆきよ
+はが,りょういち
+はぎわら,きくお
+はまだ,あきお
+まえだ,けんいち
+はまはた,のぼる
+はまの,のぶひろ
+はなぶさ,りゅういちろう
+はなた,よしじ
+はなみつ,よしたか
+はんだ,すみと
+はらだ,あやこ
+はらだ,ふみお
+はらだ,じゅんいち
+はらだ,まさのり
+はら,まさゆき
+はら,みゆき
+はせがわ,まこと
+はしぐち,いさお
+はしもと,まさとし
+はしもと,のりき
+はたけやま,さとし
+はたなか,きよし
+はつしま,けん
+はっとり,よしひさ
+はっとり,つねひさ
+はっとり,まさこ
+はっとり,ふみお
+はっとり,ゆきひこ
+はっとり,よしのり
+はやかわ,あきら
+はやしだ,まさや
+かんだ,けんじ
+はやし,こうじ
+はやし,つよし
+はやし,ひろし
+はやし,かつみ
+とびかわ,みゆき
+ひげた,よういち
+ひぐち,みつひろ
+ひぐち,ゆうこ
+ひじかわ,よしのり
+ひかい,まどか
+ひなた,じゅん
+ひの,しょういち
+ひの,たかゆき
+ひらぎ,やすし
+よもだ,かずと
+ひらの,まさのぶ
+ひらの,ひろゆき
+ひらさわ,かずひろ
+ひらた,まさひろ
+あさの,ひろし
+ひらた,ひさお
+ひらつか,たけし
+ひろかわ,ふみあき
+ひろなか,かずひさ
+ひろせ,ひさゆき
+たしろ,きみこ
+ひろせ,まこと
+ひしぬま,ひろのぶ
+いわもと,じゅん
+ひうら,ひとし
+すぎもと,せいいち
+ほんま,やすゆき
+ほんま,つよし
+ほんま,たいら
+ほんま,たつろう
+ほりかわ,じゅんいち
+ほりお,かつよし
+ほり,かずお
+ほり,あつし
+ほり,こういち
+ほしの,しんじ
+ほしの,あきこ
+ほしの,ふとし
+ほし,ひろこ
+ほそ,かずみ
+ほたて,ゆか
+いちかわ,ゆみこ
+いちかわ,さとし
+いちき,たけし
+いちのせ,あり
+いだ,なおき
+いでい,まさかず
+いがらし,ゆうじ
+いぐち,ごう
+いいだ,えいざぶろう
+いいだ,ふじお
+いいじま,ひろゆき
+いいじま,かずのり
+いいむら,よしのぶ
+いいの,ひでき
+いいずか,ひろし
+いいずか,かつひこ
+はるた,としこ
+いけだ,なおひろ
+すずき,とおる
+いけだ,くにひろ
+いそべ,こうじ
+いけやま,すぎお
+いくた,としあき
+いまいずみ,ちずこ
+もりした,しげき
+いまい,ただし
+いまむら,まなぶ
+いまむら,のりゆき
+いなみ,けんや
+いのうえ,やすひで
+いのうえ,ひろし
+いのうえ,ひろし
+いのうえ,ひろたか
+いのうえ,みつこ
+いぬい,ゆきとし
+いしだ,まなぶ
+いしだ,としひろ
+いしだ,ゆたか
+いしぐろ,まり
+いしぐろ,ひろし
+いしはら,じゅんいち
+いしい,かおる
+いしい,けいいち
+いしい,こうじ
+ゆきまさ,まさとし
+いしかわ,たかし
+いしかわ,ようこ
+いしくら,ゆたか
+いしもり,ひろあき
+いしもと,りえ
+いしもと,さちこ
+いしおか,ゆか
+いしおか,のぶお
+いしわた,なおひさ
+かん,よういちろう
+いしざか,かよこ
+いそがい,たかひろ
+いたばし,しんいち
+いたばし,しげき
+さぎや,ひであき
+いとう,てつや
+いとう,あけみ
+いとう,のぞむ
+いとう,なおよし
+いとう,かずしげ
+いとう,なおゆき
+いとう,たかし
+さかい,こういち
+いとう,かずゆき
+いわい,かおる
+しまむら,ふさちか
+いわい,きょうこ
+かわなか,かずみ
+いわくぼ,たかゆき
+いわもと,さやか
+いわもと,ひであき
+たけだ,さちこ
+いわむら,ひろゆき
+いわなが,ひでお
+いわお,こういち
+いわさき,たつひこ
+いわさき,とらひこ
+せがわ,まさたか
+いわしろ,よしひさ
+いずみ,まこと
+かえりやま,なおき
+かがみ,いくお
+かがみ,しげよし
+かじたに,かずひこ
+やまもと,えいいち
+かきぬま,ひろあき
+かく,ひろゆき
+かまだ,まこと
+いながき,まさえ
+かまもと,たえこ
+かまたに,なおふみ
+かまた,ともこ
+やまだ,えいじ
+かめだ,あきこ
+かめや,ひでき
+かみ,まこと
+かみお,まなみ
+かみや,まさのり
+かもと,よりこ
+かなだ,まさたか
+かない,きょうこ
+かない,りえこ
+かなざわ,さだいち
+かんだ,たかひろ
+かねいち,あきお
+かねこ,ひろぶみ
+かねこ,ますお
+かねこ,しゅうじ
+かねこ,たけひこ
+かねこ,やえ
+かねこ,ひさし
+かねまる,あつし
+かりや,よしのぶ
+かるべ,きょうじ
+かしま,ひろゆき
+かしわぎ,よしゆき
+かしわぎ,ひろし
+かすや,けいご
+かすや,しょうこ
+かすや,たかし
+かたの,けんいち
+しらき,かつお
+かたおか,よういちろう
+かたおか,あつし
+かたやま,
+かとう,たてお
+かとう,ひろし
+かとう,ひろこ
+かとう,ひろや
+かとう,たけし
+ごとう,ひろかず
+かつや,ひろし
+かわだ,みちお
+かわだ,さちこ
+かわぐち,さとし
+かわはら,せいいちろう
+かわはら,ひろあき
+かわはた,ひろゆき
+かわい,じゅんいち
+かわい,かよこ
+かわい,みほ
+かわかみ,たけし
+かわきた,ともあき
+かわきた,やすこ
+かわむら,ゆきまさ
+かわむら,ゆき
+かわむら,まさゆき
+かわぞえ,みな
+ふたくち,ただし
+きだ,やすひろ
+きだ,よしふみ
+きど,あきお
+きはら,かつとし
+きくち,こうじ
+きくち,あいこ
+きくた,いさお
+きもと,かずまさ
+きむら,みのる
+きむら,なほみ
+きむら,しゅんいち
+きむら,すみひろ
+まつもと,たくろう
+きむら,としお
+きむら,じゅんこ
+おかざき,たけお
+きむら,ゆか
+きむら,あつし
+きのした,けいこ
+きし,きみひこ
+きす,じゅんこ
+きたかぜ,のぶき
+きたむら,あきお
+きうち,なおと
+きうち,たかぞう
+きよた,だいすけ
+こばやし,まさはる
+こばやし,けんじ
+こばやし,みよこ
+こばやし,よしゆき
+こばやし,たかし
+こばやし,ひであき
+こばやし,ゆういち
+こばやし,よしお
+こばやし,ひろひで
+ひろせ,はるお
+こでら,あきひろ
+こがい,ひさたか
+こぐれ,かずお
+もりた,みちひこ
+こもと,ようすけ
+こんの,あきひろ
+こさか,よしゆき
+こいけ,きよし
+こいけ,よういち
+こいし,あきお
+こじま,かずたか
+こじま,てつ
+こくほ,かつや
+こくまい,みえこ
+こまがた,まこと
+こまき,かずゆき
+こまつ,よういち
+こまつ,あつし
+こみね,かつのり
+こみやま,よしのぶ
+こもおか,ふみお
+こもり,しげのり
+こんど,ひろし
+こんど,みきお
+こんど,よしぞう
+こんど,たかゆき
+こんどう,たつと
+こんの,てつお
+こすぎ,よういち
+こうだ,としゆき
+こやなぎ,のぶひこ
+くぼた,ひろゆき
+くぼた,なおき
+くぼ,たかゆき
+くどう,ごう
+くが,しげる
+くじま,えり
+くまだ,ひろし
+くまき,まき
+くまくら,かつと
+くまもと,あきひこ
+くもかわ,ひろのり
+くらしま,こういち
+くりはら,こうじ
+くりはら,ゆみこ
+くりむら,しゅうじ
+くりす,ひろし
+くりやま,ゆきえ
+くりやま,じゅんいち
+くろだ,あきら
+くろかわ,ひろし
+くろき,のぶや
+くろさき,のぶあき
+くろす,ひろし
+くしだ,わたる
+くすだ,よしこ
+くわばら,いちろう
+うちだ,けいいち
+まえだ,やすひこ
+にわ,しげみつ
+まえひら,まさと
+まえかわ,ひでたか
+まきむら,ひろみつ
+まきの,ゆうじ
+まきの,まり
+ようこた,みちやす
+まるやま,ただし
+ますだ,みきお
+ますだ,てるあき
+ますひろ,きみ
+ますやま,たくじ
+まつばら,こうじ
+まつばら,やすなり
+まつだいら,まさと
+まつだ,しげお
+ささもと,さゆり
+まつだ,としみ
+まつふさ,かつじ
+まつい,とおる
+まつい,じゅんいち
+まつき,あきひこ
+かのう,ひろゆき
+まつもと,ゆういち
+まつもと,としゆき
+まつもと,ふじお
+はしもと,しょうじ
+まつむら,きにち
+まつむら,ひろゆき
+まつなみ,ひろゆき
+まつなみ,ゆきお
+ちば,てつや
+まつしば,こういち
+まつした,ひろし
+まつした,えいいち
+まつうら,いちろう
+まつざき,ただし
+いまい,まさゆき
+まゆやま,あつし
+めん,まさと
+みちがみ,のりお
+みはら,はるこ
+みき,あつし
+みもり,ひろし
+みなみぐち,かなめ
+みなずき,なおゆき
+みねむら,ゆかり
+みしな,かずひろ
+みつい,たけはる
+みうら,よういち
+みうら,けんいち
+むらかみ,まさはる
+みわ,しげゆき
+みやがわ,まさお
+みやぎ,みちこ
+みやはら,としお
+みやはし,きょうこ
+みやかわ,まさとし
+みやき,まさずみ
+みやもと,せいじ
+みやもと,ひろし
+みやもと,まさひろ
+みやさか,なおき
+みやたけ,しげみ
+みやた,としひろ
+みやた,ゆうじ
+みやた,まさみち
+くろだ,けいこ
+みよし,なおこ
+みずこし,まきお
+みずこし,としお
+みずの,たつや
+みずの,のぶはる
+みずたに,しんじ
+もり,しょうじ
+もり,のりこ
+もりかわ,あきこ
+もりき,やすひろ
+もりした,よしみ
+もりた,ただし
+もりた,かずひろ
+もりやま,としお
+もりぞの,つよし
+もり,さとる
+もり,かつとみ
+もり,やすお
+もり,ひろのり
+もろずみ,のぼる
+いのはな,かずお
+こじま,しんご
+むかい,たつみ
+むかい,さちお
+むらい,ちなつ
+むらかみ,とおる
+むらかみ,ちはる
+むらまつ,まさかず
+にわ,かつひろ
+むらた,さとし
+むらた,いちろう
+おおの,たかし
+むらやま,ちはる
+むとう,ひろや
+むとう,たかし
+むとう,あまね
+むつしか,えいいち
+ながい,ひろし
+ながい,かつゆき
+ながもと,けんいち
+あらい,たけとし
+ながお,やすなり
+ながさわ,あつし
+ながさわ,かずと
+ながやま,あきひろ
+ないとう,ふさのぶ
+ないとう,かつお
+なかばやし,かずひさ
+なかだて,こういち
+なかがき,まさのり
+ながえ,たかゆき
+なかがわ,てるじ
+なかがわ,としゆき
+なかごめ,よしなり
+なかひら,ゆたか
+なかい,えみこ
+なかじま,かつとも
+なかじま,みえこ
+なかじま,なおや
+なかじま,えり
+なかじま,つねあき
+なかじま,けいいち
+なかじま,なおひで
+なかまた,のりひろ
+なかみち,しゅんいちろう
+なかむら,まさき
+なかむら,としあき
+なかむら,まこと
+なかむら,てるひろ
+なかむら,しんじ
+なかむら,はじめ
+なかむら,のりあき
+なかむら,ひろゆき
+なかむら,かずひこ
+なかむら,まさゆき
+なかむら,なおき
+なかにし,としあき
+おおにし,まさのり
+なかにし,としゆき
+なかにし,のぶやす
+なかの,きよたか
+おかざわ,かよこ
+なかの,のぞみ
+なかの,よしふみ
+なかの,もえこ
+なかおか,てつや
+なかお,ふみこ
+なかお,えいじ
+なかせ,こうし
+なかそぎ,まさとみ
+なかた,しげこ
+なかつか,たかし
+なかつか,まこと
+なかやま,ひでき
+なかやま,あつし
+なかやま,たつや
+なかやま,こうへい
+なかやま,かつひこ
+なかざわ,みつぐ
+なみき,くにお
+ならしま,まさあき
+なら,たけひこ
+くどう,ひさし
+なつの,みちはる
+なつやま,ゆうこ
+えとう,ひろし
+にへい,たかし
+おくの,さゆり
+まえほり,ひろみ
+にしだ,ひとし
+にしぐち,たつお
+もり,ゆきこ
+にしかわ,まさし
+にしくら,しげる
+にしもと,まさき
+にしお,としひこ
+にしわき,けいこ
+にし,まさる
+にわ,まさき
+のぶまさ,みさと
+のだ,もとひこ
+のぐち,たかし
+のぐち,けん
+のほり,ひでゆき
+のたに,まさたけ
+のま,さとし
+のみやま,としろう
+のもと,としあき
+たんざん,みちお
+おおかわ,かずひこ
+ののやま,まさき
+のりかね,まさる
+のろ,せいいち
+の,しんいち
+おばな,ひろし
+おびなた,あきひこ
+おちあい,よしのり
+しまむら,ひろし
+おだね,よしかず
+おがわ,なおみ
+おぐら,ひでとし
+おぐら,せいじ
+おぐら,しんすけ
+おおぐろ,いわお
+おおばやし,けいぞう
+おおばやし,やすゆき
+おおば,えりこ
+おち,しんご
+おおで,としひこ
+おおほり,のりお
+おほ,こすけ
+おおいし,もといち
+おき,よしゆき
+おおくぼ,まさひろ
+おおくぼ,まさくに
+おおみち,たけのり
+おむら,つねあき
+おおにし,いさお
+おの,こういちろう
+おらい,すすむ
+おさき,さとし
+おおさわ,そういちろう
+おおさわ,ただし
+おおさわ,りゅうじ
+おおたに,けんじ
+おおた,なおき
+おおとも,あきお
+おざき,こうじ
+おおつか,たけし
+おおつか,としろう
+おおつき,てつや
+おおや,まさひろ
+おひゃ,くにひこ
+おおや,すぐる
+おかだ,つぐお
+おかだ,よしひろ
+おかだ,としひろ
+おかだ,しんいち
+おかはら,ひろき
+おかもと,よしお
+くさば,ひろし
+おかむら,まさかず
+おかむら,まさき
+おかの,ひろし
+とびた,しゅうへい
+ほそかわ,こうじ
+うえだ,とよかず
+こせき,ゆみ
+たざわ,しゅんじ
+やまざき,よしかず
+えぐち,ひろゆき
+もちだ,すすむ
+あきもと,きえい
+にし,あつき
+いまいし,しげとし
+たかやす,のぶよし
+はた,まさゆき
+ふじさわ,あきら
+むとう,ひさし
+もたい,しんいち
+ただ,たかゆき
+こいずみ,かずよし
+つぼくら,こうぞう
+ひらばやし,ひろじ
+つじかわ,ひろかず
+みついし,せいいち
+やました,けんじ
+まるおか,のぶたか
+ふかお,とおる
+つむら,かなこ
+まゆみ,としえ
+あらかわ,みどり
+おふち,じゅん
+ささもり,ゆたか
+さとう,あきら
+たかぎ,まこと
+たなか,まさみつ
+つぼご,ふみひこ
+とりさわ,ひろゆき
+なかぐき,けいご
+はせがわ,ともゆき
+はやし,こうじ
+ひらやま,しげる
+ふくしま,としき
+まつしま,かずひろ
+よしい,ひでき
+いしい,のりこ
+いまい,みゆき
+なかつじ,ゆきえ
+ほいだ,つねお
+さわはた,みつる
+たはら,しょうじ
+たかはし,みねまさ
+すずき,ひであき
+よこやま,けんじ
+いしかわ,けんじ
+あさの,よしたか
+かねこ,しゅうじ
+くろせ,ようすけ
+さかきばら,あらた
+かさま,けいこ
+すぎやま,よしまさ
+すだ,てつや
+たなか,あや
+つぼい,えつこ
+はしもと,ちえこ
+ふくち,さとみ
+あらい,ともこ
+たなか,けんじ
+やしま,なおゆき
+かわまた,たけのり
+すんだ,あつや
+みずたに,みのる
+やまこし,のりゆき
+あまがや,ゆめの
+あらき,ひさよ
+いまい,としはる
+いまざき,たかひさ
+きむら,かつひで
+すぎやま,いさお
+すずき,だいすけ
+つる,みのる
+はこざき,あきら
+たきざわ,つよし
+いとう,かずのぶ
+ますだ,よしのり
+つばき,ちあき
+みすみ,ちかこ
+やいた,まき
+かわつ,ひとし
+つかだ,たけひこ
+なかもと,ふみこ
+ふなびき,さなえ
+よしざわ,きょうこ
+とうま,ようこ
+せき,まり
+むらた,なおき
+かたやま,まさひろ
+きど,しゅうじ
+こばやし,こうじ
+しのみや,ともかず
+たなか,かずゆき
+はら,よしのり
+もりたに,しょうへい
+いちのせ,かずゆき
+ふじもと,かつゆき
+うえの,こうじ
+ししど,としのり
+みうら,すすむ
+うちだ,るみこ
+どい,こういち
+そすみ,としゆき
+よしだ,まさゆき
+たかはし,としお
+やまぐち,なえこ
+ささ,ゆきこ
+はせがわ,かおり
+あつた,よしお
+いちかわ,まさあき
+うの,さとみ
+おがわ,ゆきこ
+おだ,ひろかず
+たかさき,まきこ
+たかはし,つよし
+ただ,ただし
+たなか,ひろし
+とくなが,ひろし
+とみた,じゅんこ
+ないとう,りえ
+はらだ,えみこ
+ひらかわ,ともこ
+ふなもと,ひろたか
+どばし,ゆき
+みうら,ちこ
+よしだ,ひろあき
+おおたけ,じゅんじ
+くらた,やすひろ
+くりた,さとし
+だん,まこと
+もりしま,しんじ
+よしだ,ようじ
+わかばやし,ゆみこ
+あげまつ,ひろみち
+いしぐろ,こすけ
+かとう,かずひろ
+さいとう,しんいち
+ないとう,みちよ
+みやまえ,としや
+かどわき,あつし
+ふくもと,みきお
+にしはら,あきら
+おかやま,かずなり
+おかやす,みえこ
+くろかわ,とおる
+おきた,よしひさ
+おくみや,まさかず
+おくむら,だい
+おのだ,なるみ
+おのでら,ひとし
+おの,はるゆき
+おの,なおふみ
+おの,よしふみ
+まつい,てるお
+おそえがわ,やすなり
+おざき,のぶゆき
+おぜき,ひろゆき
+たかの,いさお
+りょうかい,よしき
+さげさか,りゅういち
+さぎや,きょういち
+さいた,まさひろ
+さいとう,あきみつ
+さいとう,ごろう
+さいとう,ひろゆき
+さいとう,つねお
+さいとう,りか
+さかぐち,ひであき
+さかい,ひろみ
+しまだ,ひろし
+さかきばら,いつろう
+さかもと,けんじ
+さかもと,まさき
+さかもと,むねひろ
+さかり,のぶひろ
+さかた,さとる
+さくま,しんじ
+さくらい,たかのぶ
+さくらい,たかし
+さくらい,よしひろ
+さんのうまる,ゆきお
+さの,ゆたか
+ささべ,たつろう
+ささき,しんご
+ささき,ともひろ
+ささき,たけし
+ささき,なおと
+よしだ,ひろし
+さとう,よしひこ
+さとう,かずのり
+さとう,たかのり
+さとう,はやと
+さとう,やすひこ
+さとう,よしゆき
+さとう,よしと
+さとう,あきお
+さとう,まさこ
+さとう,ともこ
+さとう,ゆういち
+さとう,ちあき
+さとう,かずや
+さとう,まさみ
+さとう,さとし
+さわいで,ゆういち
+さわい,こういちろう
+さやなぎ,まり
+せがわ,よしひろ
+せいみや,ひろし
+せいやま,しげき
+せきかわ,あきら
+せき,こうじ
+せき,たけし
+せんだ,ひろたか
+せんごく,きょうこ
+せの,としあき
+せしも,こうじ
+せたか,けい
+すが,りょういち
+みなみ,やすし
+しばた,ちあき
+しぶや,ひろみち
+しぶや,つよし
+しぶや,まさのり
+しいの,ひろこ
+しかた,たかひろ
+しきぶ,ひろし
+しまだ,まさひろ
+しまだ,ひろし
+しまがみ,としあき
+しまもり,まさひこ
+しまむら,ゆきのり
+しまざき,こう
+しまざき,たかあき
+しみず,えいぞう
+しみず,りえ
+しみず,ひろし
+しもだ,けいみん
+しもひら,こうたろう
+しのはら,あきひろ
+しのはら,まなぶ
+しのざき,のぶこ
+しのざき,ひろき
+しんぽ,かすみ
+しんたに,ゆうじ
+おおきど,そとひろ
+しおぬま,きよみ
+しおた,くにあき
+しおや,まさひろ
+しおざわ,いさお
+しらい,しげき
+しらさき,ひろし
+しらとり,まさとし
+しらとり,たかひろ
+しろき,ひとし
+しろした,しげき
+かしま,よしお
+しゅう,ごいち
+いまい,ひではる
+そえだ,ひろこ
+そが,いずる
+そわ,かずなり
+すだ,こういち
+すだ,まさる
+すだ,なおき
+すえだ,のりよし
+すえもり,さきこ
+すえおか,しょういち
+すがわら,しんじ
+すげの,やすひろ
+すぎもと,やすお
+すぎた,ゆういちろ
+すぎやま,みつお
+すぎやま,けいいちろう
+すぎやま,えいじ
+すみとも,のぼる
+すみ,ゆき
+すなが,ひでゆき
+すざき,てつや
+すずき,てるみ
+すずき,あきら
+すずき,やすし
+すずき,ゆきお
+すずき,しのぶ
+すずき,しんいち
+すずき,としや
+すずき,ひろし
+すずき,かずあき
+すずき,けいじ
+おおにし,まさはる
+すずき,のぶお
+すずき,のりゆき
+すずき,りょうすけ
+たぼ,しん
+たぶち,たつや
+たぶさ,としふみ
+たちかわ,やすゆき
+ひらき,ゆういち
+たがい,やすし
+たがわ,みほ
+たが,のぶたか
+たぐち,みさお
+たぐち,しん
+たぐち,みなこ
+たかばたけ,よういち
+たかぎ,けんたろう
+たかはら,としや
+たかはし,としゆき
+たかはし,ひろし
+たかはし,せいいち
+たかはし,よしひさ
+たかはし,はるさだ
+たかはし,まさこ
+たかはし,まさゆき
+たかはし,ひでお
+たかはし,かずしげ
+たかはし,のりひこ
+たかはし,とよみ
+たかはし,みのる
+たかいし,ともあき
+こばやし,かずひろ
+たかみ,みのる
+たかむら,しろう
+たかなし,よしのり
+はせがわ,ひろゆき
+たかの,きょうこ
+たかおか,たかき
+たかおか,のぶゆき
+たかたに,あきら
+たかつじ,かつじ
+たかつか,きよし
+たかつ,まさみ
+たかやま,しんいち
+たかやま,とおる
+たかやま,やすし
+たけだ,こういち
+たけだ,やすのり
+たけだ,たかかず
+たけだ,なおひと
+たけもと,のぞみ
+たけもと,かつし
+たけうち,たかこ
+たけうち,ひろかず
+たけうち,ゆういち
+たけうち,とおる
+たきもと,たかひろ
+たまち,ひろし
+たむら,としひろ
+たなべ,つかさ
+たなか,けいこ
+たなか,なぎさ
+たなか,たかゆき
+たなか,まき
+たなか,ひろふみ
+たなか,くにひこ
+たなか,かおり
+たんだ,みきこ
+たにだ,きみほ
+たにがわ,よしたか
+たにむら,よしなり
+たに,ひろぶみ
+たしろ,ゆきお
+ひらさか,のぶゆき
+たわだ,えいえつ
+たわら,しんじ
+てらだ,とよひさ
+てらさき,ひろゆき
+てらしま,ひでこ
+こばやし,たいぞう
+てらうち,やすみつ
+わたなべ,しんいち
+ときとも,まさのり
+とくだ,たかゆき
+さくらぎ,のりひさ
+とみもと,まさひこ
+とみた,ひでお
+ともみ,ひろみつ
+とんぐう,まさし
+とりうみ,ひろすけ
+とよだ,かつひさ
+とよさと,ひろし
+とよしま,てつや
+つちだ,じゅん
+つちもと,まこと
+つちや,めぐみ
+つだ,たつろう
+つだ,ゆか
+つじもと,ゆきお
+つじ,のりお
+つじ,ひろし
+つかごし,としかず
+つかもと,けいじ
+つきだて,ひろし
+もりた,こうぞう
+つるた,しのぶ
+つしま,ともあき
+つし,としひこ
+つつみ,すみと
+つやま,やすき
+うちだ,ゆきお
+うちだ,ようこ
+うちやま,たけし
+うだ,ゆかり
+うえだ,さおり
+うえだ,ひろし
+つかもと,ちえみ
+うえだ,ひでお
+ききょう,よしたか
+うえだ,いくえ
+うえぐり,とおる
+うえはら,ひろゆき
+うえまつ,かつや
+さとう,かずひこ
+うえの,ひでたか
+うえの,よしこ
+うえの,ひろゆき
+うえの,しげき
+うえの,ひでき
+うえやま,ひろのり
+うめだ,かなう
+うめかわ,かよ
+ながた,のりこ
+うらご,とよひろ
+うるしざか,ゆきお
+たかはし,しょういち
+うつのみや,しんぺい
+わだ,かずひろ
+わだ,みきえ
+わだ,しずお
+わかばやし,ゆみこ
+わかばやし,かずひこ
+わかまつ,かずき
+わかまつ,こうじ
+わきもと,なりと
+わくい,しゅうじ
+いとい,よしひさ
+わたべ,かつや
+わたべ,なおたか
+わたなべ,しゅんいち
+わたなべ,ひろし
+わたなべ,ただし
+わたなべ,えいいち
+わたなべ,ひでとし
+わたなべ,ひろゆき
+わたなべ,ひろゆき
+わたぬき,まさる
+やぶした,みどり
+やぶた,みつよし
+やぶうち,しょうへい
+やじま,ようこ
+やくしじ,ふみひろ
+やまだ,ゆきこ
+やまだ,ひろえ
+やまだ,ひさ
+やまだ,あきのぶ
+やまだ,あきお
+やまだ,えいすけ
+やまがみ,ひろふみ
+やまぐち,じろう
+やまぐち,こうじ
+やまかわ,しん
+やまこし,たかし
+やまもと,あきひろ
+やまもと,けい
+やまもと,まさみち
+やまもと,ひろゆき
+やまもと,えいじ
+やまもと,ひろふみ
+やまもと,まさのり
+やまもと,まさとし
+かわぐち,あきら
+やまむろ,ひろみち
+いわた,たけし
+やまおか,かずひろ
+やまさき,ひでくに
+やました,ひろし
+やました,つとむ
+やました,としあき
+やました,あきこ
+やました,ひろゆき
+やました,かずひで
+やました,かつゆき
+やました,あきら
+やまざき,ひろゆき
+やまざき,かおる
+やまざき,こうじ
+やながわ,まさひろ
+たかおか,ひかる
+やなせ,りょういち
+やの,ともゆき
+やお,えりこ
+やすだ,としふみ
+やすかわ,ひとみ
+よがい,こういち
+よこがわ,せいじ
+よこさわ,まさゆき
+よこた,みなこ
+よこた,やすし
+よこうち,つとむ
+なかやま,あつし
+よこやま,はるひこ
+よこやま,まさお
+よねはら,としゆき
+よねむら,ただし
+よしだ,まさとし
+みやむら,つとむ
+よしだ,きみあき
+よしだ,まさかつ
+なか,よしひろ
+よしむら,よういち
+よしむら,ひろみ
+ぬまお,みねお
+よしざき,えいじ
+なかむら,けんじ
+ゆあさ,りょうた
+ゆげ,たかひろ
+ゆかわ,よしたか
+まつだ,よしつぐ
+あべ,やすひろ
+はせがわ,かつまさ
+はしもと,ひとし
+ひらつか,たもつ
+ほしかわ,みのる
+ほそや,しょうじ
+いしはら,たかし
+いわき,たちはる
+かねだ,こうじ
+きむら,たけし
+こんの,まこと
+まつだ,よしひさ
+みやした,しげとも
+さかもと,まり
+のむら,しんいち
+おおばやし,えつこ
+さいとう,ゆきえ
+ささがわ,ゆうこ
+さとう,やよい
+しが,まさみつ
+しのはら,まさし
+しょう,めぐみ
+たけがわ,みえこ
+たつみ,ゆたか
+とみえ,のりひこ
+わたなべ,まもる
+やまだ,ゆういち
+やまだ,とみひろ
+やまもと,たけし
+やまざき,まさお
+こまつざき,ちあき
+ふちだ,まさひこ
+たなか,かずゆき
+はやし,さほり
+ながた,せいいち
+ばば,まこと
+あかま,たかし
+かざま,かずしげ
+もり,ひろあき
+いけだ,つよし
+わたなべ,かつと
+みま,ふみお
+あんどう,ともひろ
+まえぞの,みつひろ
+おたか,こういち
+はやし,まさひろ
+うえの,かずたか
+つのだ,けいいち
+すどう,たかとし
+さかもと,みつあき
+たなか,もりしげ
+ことうだ,ゆきのり
+かるべ,ふみひろ
+さいとう,てるよし
+ひらの,ひろこ
+さとう,ひろまさ
+なかやま,けんいち
+のだ,ゆりこ
+ま,やすひろ
+しながわ,ちから
+ながやす,こうじ
+あおき,こうじ
+なかた,はやと
+みくりや,てるゆき
+まるやま,ひでとし
+えちぜん,ひさし
+なかにし,しょういち
+はぎお,ともひこ
+たむら,まさあき
+たぐち,よしとし
+おざわ,おさむ
+やおいた,としひろ
+あさの,のりやす
+くさの,てるひろ
+はまだ,まさじ
+いりやま,はなこ
+むらた,なおや
+あさの,ようじ
+たかの,けんいち
+やまぐち,あきとし
+むらかみ,のりひろ
+たなか,かつじ
+たかおか,じゅんいち
+すずき,みさほ
+みねぎし,なおや
+あべ,のりあき
+あべ,みずほ
+あべ,しゅんじ
+あべ,ひでき
+あがつま,あきら
+あいざわ,たかし
+あかいけ,じゅんこ
+あきもと,よしのぶ
+あきたや,ゆきお
+あきやま,としゆき
+あくつ,しげき
+あまの,ただかつ
+あまの,あつのり
+あまの,ふみえ
+あめみや,かずみ
+あんどう,まさひろ
+あんどう,てんせい
+あんざい,ゆうじ
+あおき,りつこ
+あおき,たかゆき
+あおき,さだはる
+あらい,はるひと
+あらき,よういち
+あらき,しげみつ
+あらや,よしたか
+ありよし,とものぶ
+あさひな,よういち
+あさい,なりと
+あさみ,ひろゆき
+あさつけ,かずゆき
+あそ,くにかず
+あずま,まこと
+あずま,さとこ
+ばば,すみこ
+ばば,ともこ
+かが,よしき
+ばば,ゆうすけ
+ばん,ゆか
+びるかわ,れいこ
+ぼう,ふくお
+だいご,しゅんすけ
+だいごく,じゅんいち
+どばし,とおる
+えびさわ,ひろし
+えはら,ひろとし
+ふちがみ,りゅうたろう
+ふじばやし,ひろし
+ふじえだ,りょういち
+ふじい,せいご
+ふじい,しんじ
+ふじい,よしのり
+ふじい,まさや
+ふじい,ひであき
+さかもと,しゅうへい
+きただ,えいいち
+ふじい,かおる
+ふじい,しんいち
+ふじい,たつや
+ふじかわ,かずひこ
+ふじもり,きょうこ
+ふじもと,ひろし
+ふじの,せいじ
+ふじさわ,ひろたか
+ふじた,としや
+ふじた,ひろし
+ふじた,けいじ
+くすもと,ひろふみ
+ふじわら,ひろし
+ふじわら,けい
+ふじわら,まこと
+ふじわら,ひろむ
+ふじわら,としき
+ふかぼり,ひでお
+ふかみ,さなえ
+ふかみ,ひさこ
+ふくだ,ゆうこ
+ふくだ,さとみ
+ふくだ,じゅん
+ふくだ,ゆか
+ふくい,のりちか
+ふくい,ともじ
+ふくなが,けんじ
+ふくなが,まさやす
+ふくおか,みのる
+ふくおか,いさお
+ふくし,やすのり
+ふくしま,としゆき
+ふくとめ,せいじ
+ふくやま,かつひと
+ふなばし,とおる
+ふるの,あきら
+ふるや,としゆき
+ふるや,ひろゆき
+ふるやま,みのる
+ふたば,ゆみこ
+あなみ,ひさのり
+ふたみ,ふじお
+ふたむら,ともこ
+がど,ひさし
+ごう,りょうこ
+ごうだ,しん
+ごか,たつや
+ごとう,としたか
+ごとう,しのぶ
+はぶ,しょうじ
+はが,あつし
+はぎ,けんじ
+はま,ただひろ
+はまだ,まさる
+はまの,おさむ
+はまの,たつや
+はましま,ゆみ
+はましま,さだみつ
+はない,てつお
+はら,たつき
+おた,こういち
+はらだ,なおき
+はらこ,たつひろ
+はせ,ゆたか
+はせがわ,ひろし
+はせがわ,しょうじ
+はしもと,さとし
+はしもと,せつお
+はしもと,あけみ
+はしずめ,まさき
+はしずめ,なおき
+はた,しんいち
+はた,よしひこ
+はた,たけひこ
+はたの,きょうこ
+はたの,やすゆき
+はたの,よしひろ
+つだ,ひろこ
+はやかわ,よしのり
+はやの,かなこ
+はやし,さおり
+はやし,すすむ
+はやし,のぶゆき
+はやし,ひろゆき
+はやし,としろう
+はやしたに,あきら
+ひがしの,きみたけ
+ひぐち,かずひこ
+ひぐち,しんいちろう
+ひめの,やすし
+ひらばやし,ゆうこ
+ひらい,ゆういち
+ひらかわ,ひろし
+ひらき,ひろし
+ひらの,せいりょう
+あおき,みちこ
+ひらおか,まさや
+ひらさか,ひろゆき
+ひらやま,よしのり
+ひろはた,ゆういちろ
+まえかわ,やすひろ
+ひろせ,まなぶ
+ひろせ,ひろよし
+ひろた,まさのぶ
+ひろわたり,たかひろ
+ひろみつ,ひろし
+ひうら,まもる
+ほぼ,たいすけ
+ほくら,まこと
+ほんだ,いさお
+ほんだ,ようこ
+すずき,ひでき
+ほんごう,かずたか
+ほりぐち,きいちろう
+ほりい,きにち
+ほりかわ,てるお
+ほしの,やすひろ
+ほそかわ,ひでゆき
+ほそみ,ひろあき
+ほった,かずあき
+いぶか,のぶみち
+いぶき,ひでゆき
+いちかわ,ひろし
+いちむら,きみえ
+いだ,かなめ
+いだ,ちはる
+いで,やすひで
+いで,きよたか
+いで,なおゆき
+いでた,たかし
+いがらし,けいこ
+いがらし,ゆきや
+いげ,さつき
+いいだ,しょうぞう
+いいだ,たかゆき
+いいだ,たまみ
+いいだ,よしひさ
+いいはら,ひろし
+いいじま,たけし
+いけだ,かつや
+いけだ,まさあき
+いこま,のぶまさ
+いまい,きよひと
+いまい,まこと
+たなか,きょうこ
+いまむら,こういち
+いまなり,たつや
+いまぜき,じゅんじ
+いなだ,まゆみ
+いなます,ひろし
+いのうえ,ひろゆき
+いで,まさひろ
+いれい,まさる
+いしはら,みつみ
+いしはら,みゆき
+いしはら,なおき
+いしはら,すすむ
+いしはら,じゅんいち
+いしい,たかゆき
+いしい,ともゆき
+いしかわ,ゆうじ
+いしかわ,なおふみ
+いしむら,ひろゆき
+いしわたり,ますみ
+いしざき,のりよし
+いしずか,なおとく
+いその,みつとし
+いそやま,みつのぶ
+いすだ,しげお
+いたくら,まさひろ
+いとう,まさひろ
+いとう,ひろふみ
+いとう,よしまさ
+いとう,はるお
+まつい,たけひこ
+いとう,たけひこ
+いとう,まさちか
+いとう,まさひこ
+いわかみ,つとむ
+いわさ,としみ
+いわさき,ゆうじ
+いわさき,なおゆき
+いわした,みちたか
+いずみ,とおる
+いとう,あつし
+いずみ,とへい
+いずみさわ,せいじ
+じんの,やすし
+みど,りゅうじ
+かが,あけみ
+かがみ,ふさお
+かげやま,ひさなが
+かい,ひとし
+かいだ,こうじ
+かいず,たけひと
+かじた,じ
+かけひ,あけみ
+かきもと,ともひろ
+かきぬま,さちこ
+かきぬま,しずか
+かまた,としえ
+かまた,けんいち
+かみぐち,みえこ
+かみむら,よしお
+かねこ,まさのり
+かなまる,じ
+かなざわ,まもる
+かんべ,たかひろ
+かんだ,こうぞう
+かねはら,けん
+ごとう,しげかず
+かねこ,たけし
+かねこ,やすなお
+かねこ,あきら
+かねこ,ひでとし
+かねこ,ひろふみ
+かねみつ,ひろみつ
+かねむら,かずお
+かねた,こういち
+たなか,まさよし
+よねもち,なおし
+かんの,やすまさ
+かさい,ゆかり
+かしま,こうじろう
+たかぎ,ひでき
+きたむら,まさみ
+かたおか,やすゆき
+かたおか,かずひこ
+かたおか,しげゆき
+かたせ,やすなり
+かたやま,みちこ
+かたやま,なおゆき
+かたやま,ゆうこ
+かたやま,きょうこ
+かとう,やすひろ
+かとう,ひろあき
+かとう,しんいち
+かとう,つとむ
+かとう,ひろゆき
+かとう,としひろ
+かとう,よしみ
+かとう,ゆうじ
+かとう,つとむ
+そめや,じゅんこ
+かわばた,まこと
+かわぐち,まさいち
+かわぐち,しんや
+たまがわ,こういちろう
+かわはら,ひさし
+かわはら,じゅんじ
+かわひと,かつひさ
+かわい,のりひさ
+かわい,のりこ
+はぎわら,しげき
+なるけ,たかし
+かわさき,よしひろ
+かわしま,ゆかり
+かわしま,ゆきこ
+かわた,ゆたか
+かやま,ひろかず
+かざまつり,ひろこ
+きど,たかふみ
+きがみ,まなぶ
+きごし,ひさや
+もりさわ,きよし
+きくち,みつぐ
+きくち,きいち
+きくち,のりお
+きくら,かつみ
+きむら,つねお
+きむら,ひろき
+きむら,あけみ
+きむら,ともひさ
+きむら,かつのり
+きむら,けいいち
+きむら,まさき
+きむら,まさゆき
+きむら,けんいち
+きむら,のりこ
+きむら,しんきち
+きのした,たいこ
+きのした,としひこ
+きのした,やすひろ
+きしべ,ひろき
+きしだ,よしのり
+きしもと,たけし
+きしもと,たつや
+きた,たかみち
+きたあき,ひろゆき
+きただ,ひろゆき
+きたがわ,としゆき
+きたほり,ひろゆき
+きたじま,たつや
+きたむら,ひろし
+こばやし,しげよし
+こばやし,かずひろ
+こばやし,ちふゆ
+こばやし,やすゆき
+しらい,だいすけ
+こばやし,ひろゆき
+こばやし,しんいち
+こばやし,としや
+こばやし,としき
+こばやし,なおふみ
+こだま,ひろゆき
+こぎた,けいいち
+こぐれ,よしかず
+こはし,のりしげ
+こご,たかひで
+こんの,よう
+こんの,きんや
+こんの,やすひろ
+こんのす,ひろかず
+こいで,こうじ
+こまつばら,ひでとし
+こみや,おさむ
+こみやま,よしひろ
+こもだ,たかし
+こんど,かずまさ
+こんど,まさと
+こんど,ひとし
+こんど,かつや
+こんど,かずとし
+こにし,あきのり
+こさ,まさと
+こすぎ,けんいちろ
+こたき,まさゆき
+こたに,けいいち
+こやま,みき
+こやま,ひろみ
+こやま,かつひこ
+こざわ,まさのり
+こずる,よしあき
+くぼた,ひろし
+くぼた,じゅんこ
+くぼや,ともこ
+くどう,じゅん
+せのお,ひとし
+くまがい,かずのり
+くらどみ,きよふみ
+くらもと,のりゆき
+くらとみ,けいすけ
+くりの,やすひろ
+くりや,ゆういち
+くろだ,ひろし
+くろかわ,みつあき
+くさかわ,のぶみつ
+くさの,さとし
+くわばら,としひろ
+くわの,やすひろ
+よしだ,さとる
+くずの,ひろかず
+まちだ,ひろし
+まえだ,けんいち
+まえかわ,みねかず
+おおたに,ただしげ
+まき,たくや
+まきの,としお
+まるおか,やすひろ
+まるやま,じゅんこう
+まるやま,のりひろ
+まるやま,みのる
+まさい,しんご
+まさき,ひでよ
+ませ,たかし
+ますだ,ゆたか
+まとば,たかとし
+まとば,くにひこ
+まつばら,たかあき
+まつい,ひさし
+まつい,やすひろ
+まつかわ,せいいち
+まつもり,しょうぞ
+まつもと,たかし
+まつもと,まさよし
+まつもと,しげる
+まつもと,じゅんこ
+まつもと,たけし
+まつもと,とおる
+まつもと,さだお
+まつお,かずよし
+まつおか,たけとし
+まつしま,たかひろ
+なかにわ,としろう
+まつやま,じゅん
+まつやま,じゅんじ
+まつざわ,ひでよ
+みむら,しゅんいち
+みにゅう,こういち
+みた,まなぶ
+みた,ひろかず
+みたむら,じゅん
+みつだ,おさむ
+みつだ,じゅんいち
+みつまた,よしのり
+みつおか,あやこ
+みうら,きょうこ
+みうら,みどり
+みわた,なおき
+ながせ,たかし
+みやけ,あきお
+みやけ,ゆかり
+みやま,せいじ
+みやもと,てつお
+みやもと,ひとみ
+みやなが,まさかつ
+みやざき,もとふみ
+みずば,ひろし
+みずぬま,かつみ
+みずさき,みわ
+みずた,のりあき
+もちずき,しゅういち
+もちずき,あつき
+もちずき,ちから
+もぎ,ひろし
+ももせ,つよし
+ひらの,あきひで
+もり,ゆうき
+もり,まさゆき
+もり,まさゆき
+もり,しげお
+もりかわ,しんじ
+やぎした,いさお
+もりもと,こういちろう
+もりもと,こうじ
+まつだ,けんじ
+もりおか,あきひこ
+もりした,りえ
+もりた,くにひろ
+もりた,きよえい
+かねこ,かずあき
+もりた,まさゆき
+もりわき,のぶゆき
+もろどみ,よういち
+もとはし,よしひで
+もとじま,てつお
+もとき,けいこ
+もり,みわ
+うすい,かおる
+むらかみ,たけお
+むらかみ,だいせい
+むらかみ,ひでし
+むらかみ,ひとし
+むらた,よしお
+むらた,きよひこ
+むらやま,さとし
+むとう,よしひろ
+なだぐち,すみと
+ながはし,いさお
+ながい,まさひろ
+ながむら,まこと
+ながお,まさみ
+ながしま,みちのり
+ながしま,みよこ
+ながた,なおり
+ながた,のぼる
+ながつか,のりゆき
+ながやま,さなえ
+うちだ,たかひで
+うちぞの,たかし
+なかだ,としや
+なかがわ,やすひろ
+なかがわ,ゆきひろ
+なかがわ,ちはる
+なかがわ,なおゆき
+なかじま,こういちろう
+なかじま,ひろあき
+なかじま,きょうこ
+なかみち,りゅういち
+なかもと,やすとも
+なかもと,ひろし
+なかむら,ひろし
+なかむら,ゆみこ
+なかむら,ひろし
+あきやま,たかじ
+なかむら,ひでと
+なかむら,つとむ
+なかむら,たかこ
+なかむら,ゆきこ
+なかむら,よしひこ
+なかむら,せいじ
+なかむら,ゆういち
+なかむら,ひろみ
+なかむら,さとし
+なかの,たかし
+なかの,けいじ
+なかしま,のりお
+なかつぼ,まさひこ
+なかつか,てつろう
+なかやま,まこと
+なかやま,まさひこ
+なかざわ,おさむ
+なおつか,あきこ
+ならはら,さとし
+なるしま,まさこ
+なとり,ひろたか
+にいじま,ゆか
+にいや,りか
+にし,としひさ
+にし,まさひろ
+にしぶ,あやこ
+にしだ,たつや
+にしはら,たかあき
+にしかわ,まさこ
+たなか,いさお
+にしかわ,まさと
+にしもと,ひであき
+にしもと,なおこ
+にしむら,たかし
+にしむら,こうぞう
+にしの,けんじ
+にしの,しんや
+にしおか,まさのぶ
+にしざき,けんじ
+にしざわ,だいすけ
+にわ,もりよし
+のぶ,みのる
+のがいと,のぶゆき
+のぐち,ようこ
+のじ,ひろゆき
+のじま,のりお
+のむら,あきこ
+のむら,しんいち
+のなか,ゆきのり
+なかじま,ちふゆ
+のざき,みきお
+のざき,よしゆき
+ぬわ,たけし
+おち,たかし
+おちあい,としゆき
+おだ,あつし
+おがさわら,よしゆき
+おがさわら,とみお
+おがた,かずはる
+おがわ,けんいち
+おぎはら,ひろき
+おおはら,かつみ
+おおば,ゆみこ
+おおば,えいじ
+まつだ,しげゆき
+おおえ,ゆうじ
+おおがき,かずひろ
+しょうじま,としひで
+おはま,ひろゆき
+おおはし,けいこ
+おぎの,しげき
+おおかわ,こういち
+おおかわら,まなぶ
+おき,まさひこ
+ねもと,じゅん
+おおくぼ,のぶゆき
+おおくら,ともひこ
+おま,ともひさ
+おおみか,てつし
+おおもり,ひでみ
+おおもり,ひろあき
+わたなべ,かずあき
+おおにし,みつる
+おおにし,まさひで
+おの,さなえ
+おの,じゅんこ
+おおぬま,まさお
+おしま,たかゆき
+おしま,まさし
+おおた,まさゆき
+おおた,もとい
+おおた,かおる
+おおたか,としあき
+おおたけ,さえこ
+おおたけ,ひでふみ
+おおたに,くにお
+おおつぼ,あつゆき
+おおつか,てつお
+おおつか,としひこ
+おおつき,いずみ
+さこだ,しゅういち
+おおわ,さとし
+おおや,じゅんせい
+おいかわ,まさき
+おかべ,まなぶ
+こばやし,そう
+おかだ,やすみつ
+おかだ,てつじ
+おかだ,てつや
+おかもと,ひであき
+おかもと,ひでのぶ
+めら,ひろゆき
+おかの,かずのり
+おかざき,かずゆき
+おきた,さとこ
+おくだ,えいいちろう
+おくぬき,まさかず
+おんだ,ちずこ
+おんだ,ひらたか
+うつみ,まさひろ
+おおの,たかし
+おおの,ゆきひろ
+かわもと,ひでゆき
+かど,くにひろ
+おしま,しろう
+おおすみ,あきら
+おおた,かずゆき
+おりい,しゅんじ
+おりた,しゅういち
+おおさか,とよひで
+おそのい,ゆきお
+おざさ,ゆきのぶ
+おざわ,たつじ
+おざわ,なおのり
+おざわ,やすひろ
+しらとり,じゅん
+おぞね,あきお
+さの,ひろひさ
+さいとう,まさみ
+さいとう,なおき
+さいとう,みえこ
+さいとう,けいじ
+さいとう,ちかこ
+さかい,ひろみ
+さかい,けんじ
+さかい,まこと
+さかきばら,みつあき
+さかもと,れいこ
+さかもと,よしお
+さかもと,ともこ
+さかもと,じゅんぺい
+さかもと,かおる
+さかむら,けんじ
+さかね,こうじ
+さかた,まさひこ
+さかた,まさひろ
+あくたがわ,まさひろ
+さくらい,まさと
+さくらい,るりこ
+まつばら,りょうこ
+さくらい,さとる
+さなぎ,よしき
+さの,ゆきこ
+おおがき,ちひろ
+ささき,ふみひろ
+ささき,とおる
+ささき,ひでゆき
+ささき,いくふみ
+ささき,ながまさ
+ささき,ともこ
+さたけ,たかゆき
+こだま,まさひろ
+さとう,とおる
+さとう,ふじお
+さとう,ひではる
+さとう,まもる
+さとう,まゆみ
+さとう,しろう
+さとう,けんじ
+さとう,ひでのり
+さとう,けいいち
+さとう,あきひろ
+さとう,ひでき
+さかい,けんじ
+さわだ,こうたろう
+せがわ,さとる
+せいの,しょうじ
+せき,つとむ
+せきど,しんじ
+せきの,のりひろ
+せお,たかゆき
+せりかわ,おさむ
+しばさき,ひろのり
+しが,かなみ
+しげる,よしこ
+しまだ,あつし
+しまだ,みつえ
+しまだ,まこと
+しまだ,かおる
+しまもと,みつやす
+しまむら,たつや
+しまの,たかし
+しみず,たかあき
+しみず,としひろ
+しみず,ただし
+しみず,つとむ
+しみず,こうじろう
+しみず,さとる
+しみず,みずき
+しもだ,ひろゆき
+しもがき,けんや
+しもはた,ひろゆき
+しもむら,のぶひろ
+しもおか,としあき
+しむら,しょういち
+やえがし,あつこ
+しのざき,あつし
+はぎわら,ひでお
+しおだ,まさひと
+しおた,ひさよし
+しおざわ,けんいち
+しらい,たけし
+しらいし,ともひさ
+しょうだ,けんじ
+しゅう,ともこ
+そめや,まさし
+すだ,くみこ
+すえ,ひでお
+すえた,ひでお
+しぶいち,ひでゆき
+すがの,ひろゆき
+すがわら,ひさたか
+すぎえ,かつとし
+すぎまさ,けいた
+すぎもり,のぶゆき
+すぎもと,とおる
+すぎさき,ようこ
+すぎうら,ゆきお
+すぎうら,じゅんいち
+みずおち,たかし
+すぎやま,まさや
+すぎやま,まなぶ
+すぎやま,けん
+すぎやま,たけし
+すみ,まさもと
+たべい,よしのり
+すなみ,ひろこ
+すさわ,おさむ
+すずき,あきこ
+すずき,えいじ
+すずき,ひでゆき
+すずき,ひろあき
+すずき,かなこ
+すずき,かなこ
+すずき,かずよし
+すずき,けんた
+すずき,こうじ
+すずき,まさのり
+すずき,なりまさ
+たべ,りゅういちろう
+たちはら,たかし
+たげ,としき
+たぐち,わたる
+なかた,わたる
+たぐち,しん
+たじま,あきら
+たじま,まこと
+たかだ,こういち
+たかぎわ,みつひろ
+たかはし,かずよし
+たかはし,ひろやす
+たかはし,かずのり
+たかはし,みつとし
+たかくら,こうじ
+たかくら,やすまさ
+たかはし,やひろ
+たかはし,あきふみ
+たかはし,おさむ
+たかはし,ゆうじ
+たかはし,ひろゆき
+たかはし,つかさ
+たかはし,しんいち
+たかはし,ゆうこ
+たかはし,まこと
+たかはし,ひでき
+たかくら,つとむ
+たかみや,たまみ
+たかさご,くにひこ
+たかさき,まさと
+たかせ,まさひと
+たかつか,しんいち
+たかやなぎ,しげる
+たかやなぎ,やえきち
+たけち,ひであき
+たけだ,ひろし
+たけだ,いつひと
+たけがみ,かつみ
+たけひさ,まこと
+たけい,のぶお
+たけい,ただゆき
+たけかわ,たけひこ
+たけむら,としひで
+たけなか,としひろ
+いまい,よういち
+たけさこ,よういち
+たけしま,かつしろう
+たけうち,ひろとし
+ひだか,とおる
+たきもと,みどり
+たきざわ,きくみ
+たまい,まさる
+たむら,しょういち
+たなべ,えいじ
+たなべ,ようへい
+たなか,あきと
+たなか,いさむ
+たなか,みどり
+たなか,よしなり
+たなか,やすじ
+たなか,たかし
+たなか,ありひと
+たなか,しんご
+たなか,しゅういち
+たなか,ひろゆき
+たなか,たかし
+さの,ひろふみ
+たに,えいいちろう
+たにむら,よしふみ
+たにやま,だいすけ
+たさか,やすまさ
+かとう,えいじ
+てらだ,よしゆき
+てらまえ,まき
+てらにし,のぶゆき
+てらにし,ひろみつ
+てらぞの,かおり
+とびた,まさみ
+いずみさわ,ひでき
+とだ,さとし
+とぐち,たけし
+とまつ,ともあき
+あきむら,のぶゆき
+ときたけ,たけし
+とくます,あきひろ
+とくたけ,あきひこ
+とまき,かずや
+とみい,まさひろ
+とみた,きみお
+とみやま,まさと
+ともだ,くみこ
+ともなが,まさのり
+とさか,なおと
+とっとり,あきひこ
+まつお,よしゆき
+とよだ,よしゆき
+つぼい,あきら
+かとう,としひろ
+つちや,かずし
+つだ,しんご
+つじ,まさひこ
+つじ,よういち
+つじの,ようすけ
+つかこし,あきら
+つかもと,しげひろ
+つかざき,ふみひろ
+つきあし,あきら
+つきざわ,こうじ
+つみた,えいいち
+えんど,ただひこ
+つと,としひろ
+つむら,よしお
+つねかわ,そのすけ
+つるおか,よしひこ
+つるた,のりこ
+つるた,もとゆき
+つるた,たつゆき
+つつみ,しゅんや
+つつみ,かつみ
+つわこ,ゆか
+つやま,きよふさ
+うちだ,しょうこ
+うちだ,まさひろ
+うちだ,せつこ
+うちやま,しんご
+うちやま,ひでお
+うど,きよみ
+うえだ,はるき
+うえだ,ようすけ
+まつむら,だいじろう
+うえだ,あけみ
+うえだ,あきお
+うえまつ,ひでお
+うえの,ひろみ
+うえの,じゅんじ
+いしだ,かずひこ
+うめだ,こうせい
+うめがき,くにこ
+うの,まもる
+うらはし,
+しみず,さとし
+えがしら,ただし
+すえかね,てるゆき
+うつ,とおる
+うつはし,としひろ
+うつみ,けいいち
+わだ,つねふみ
+わだ,たつみ
+きたわき,せいき
+わしず,はるなが
+わたべ,ふみよ
+わたなべ,ひろし
+わたなべ,まさや
+わたなべ,さとみ
+わたなべ,しんいち
+わたなべ,たかし
+わたなべ,つとむ
+わたなべ,よしあき
+わたなべ,つねお
+わたなべ,まさよ
+わたなべ,えいじ
+わたなべ,ひろこ
+わたなべ,ひろゆき
+わたなべ,かつし
+わたなべ,ゆうじろう
+わたなべ,やすお
+えはら,あつし
+わたなべ,ひであき
+わたらい,じろう
+やえがし,おさむ
+やはぎ,しのぶ
+やまだ,しゅういち
+やまだ,たけし
+やまだ,ようじ
+こんど,としや
+やまだ,あつし
+やまだ,おさむ
+やまだ,みき
+やまだ,あきひろ
+えのもと,ひろし
+さいとう,ひろゆき
+やまぐち,きんや
+ふじた,まさとし
+やまぐち,さとこ
+やまぐち,やすひろ
+えざき,ひとし
+やまぐち,さとる
+やまもと,さとし
+やまもと,とおる
+やまもと,やすし
+やまもと,たけし
+やまもと,こういち
+やまもと,こうき
+やまもと,としゆき
+やまもと,まさる
+やまなか,ひろし
+やまね,みちる
+やまのくち,さとし
+やまさき,たかし
+やました,まさかず
+やました,ひろき
+やました,けいいちろう
+やました,こうき
+やました,しげみ
+しさい,まさゆき
+やました,としひろ
+やまうち,としゆき
+やまうち,まこと
+やまざき,ひでお
+やまざき,ただし
+やまざき,むつみ
+やなぎもと,たけし
+やの,りょうじ
+やの,ひろき
+やしろ,やすし
+やざわ,まこと
+よだ,しゅんすけ
+よぎ,ふみゆき
+よこい,こうじ
+よこやま,けんしょう
+よねざき,ふとし
+よしだ,じゅん
+よしだ,りえこ
+よしだ,かずよし
+よしだ,じゅんこ
+えびな,せいいち
+よしだ,ただし
+よしだ,たつお
+よしいけ,やすのり
+よしむら,みつゆき
+よしむら,さとる
+よしの,しんいち
+よしお,のぼる
+よしたけ,しげよし
+ゆあさ,てつじ
+おおわだ,しょうじ
+えぐち,さとる
+おざわ,かつゆき
+さとう,みつあき
+しんたに,たけみ
+すぎたに,よしひこ
+たかはし,いずみ
+たきざわ,なおき
+みよだ,けんじ
+やまだ,きよし
+やはぎ,さとし
+きや,ただし
+みせき,のりかず
+えのもと,けんたろう
+さくらだ,まさき
+ささき,のぶゆき
+ばば,たけお
+あぼ,かおり
+あだち,こうへい
+あかさか,まさひろ
+あまさき,ひでと
+あおき,かんじ
+あぜがみ,しげかず
+えどの,ふみひろ
+どい,かずお
+ふじい,ともひと
+ふじい,さゆり
+ふじもと,ひろき
+ふじもと,たけし
+ふくはら,のぶゆき
+ふくおか,てつや
+ふくしま,けんいち
+ふさやま,こういち
+ごとう,よしひろ
+はまべ,えいじ
+はなだ,けいすけ
+はしもと,よしひろ
+ひび,さかえ
+ひらつか,かずゆき
+いかり,たかゆき
+いくた,あきひこ
+いまい,てつし
+いしはら,やすひろ
+いそだ,こういち
+いそざき,よしたか
+じんぐう,よしあき
+ない,みのる
+じょうにし,おさみ
+かじはら,よしあき
+かまた,たつや
+かめい,あきら
+かみやま,てつや
+かとう,たつじ
+かとう,としゆき
+えみ,ひであき
+かわもり,まもる
+きむら,よしひろ
+きむら,かずお
+きしべ,くにひこ
+きしかわ,かずよし
+きたがわ,しんいち
+きたなか,めぐみ
+こばやし,まさゆき
+こばやし,げん
+こいけ,とうた
+こいずみ,かずや
+こじま,たかひさ
+こにし,きよかず
+こやま,たくや
+くどう,かずや
+くまさき,よしあき
+くろだ,ひろかず
+くさか,しんご
+えんど,けんじ
+まえかわ,まさひろ
+まるた,ひでき
+まつした,しんご
+みくに,とみお
+えんど,よしのり
+みね,やすたか
+みうら,しゅういち
+みぞぐち,しょうじ
+ほん,よしあき
+みずしま,しげる
+えだ,たかし
+ながお,あつし
+なかむら,とおる
+なかにし,ゆうじ
+なかの,ようこ
+なかお,かつや
+ねもと,まさゆき
+にしかわ,こうじ
+にしわき,けんいち
+のだ,たかこ
+のぐち,みとし
+おちあい,こうじ
+おおはし,やすよし
+おの,たくじ
+えみ,ひでお
+おくむら,まさひろ
+おくの,ひでみつ
+えんど,よしただ
+おおにし,あきら
+おざき,くにはる
+さえき,のりゆき
+さがわ,のぼる
+さくま,まさほ
+さとう,しげあき
+さとう,みつひろ
+さわ,きよたか
+せがわ,こうじ
+せき,ゆきお
+せんだ,けんじ
+しぶや,しゅういち
+しみず,よしはる
+しんでん,あきよし
+しおた,ひとし
+しゅくたに,としお
+すやま,ひろこ
+すずむら,いさお
+たかおか,よしゆき
+たけうち,かつのり
+たけうち,かずし
+たまい,まさひろ
+たん,かずひろ
+たなか,けんご
+えとう,てるあき
+たにひら,かずひろ
+たにやま,きくお
+たおか,しげき
+たしま,まさゆき
+たざわ,みきお
+ときた,かつよし
+とみた,しげき
+とみた,けんじ
+とみた,あきお
+つじべ,ひろこ
+つじかわ,けんいち
+えんど,じゅんこ
+みやざき,まきこ
+わだ,よしたか
+わたなべ,ひろみ
+やまだ,なおや
+やまだ,ただし
+やまだ,さやか
+やまぐち,のりお
+やまもと,たかこ
+やまおか,かつのり
+やました,のぶお
+やました,かずひさ
+やまぞえ,ひろまさ
+やお,やすはる
+やすだ,さとし
+よつたに,よしお
+よしはら,ひでお
+よこうら,まさお
+ひらせ,しげお
+まつい,いちたろう
+こばやし,かずひさ
+すずき,たけし
+かとう,としくに
+くにとも,のぶゆき
+えんど,ごう
+いとう,さとる
+おかざき,ひでお
+ひろはし,やすお
+さかき,ようこ
+みき,ときこ
+くまき,まさお
+たやま,てつお
+おおわき,きはち
+みょうどう,まさと
+かとう,ひろよし
+ばば,みきお
+かねこ,はるひこ
+こぐれ,ひろあき
+たけだ,よしのり
+いちむら,まもる
+いとう,のぼる
+うえはま,みのる
+なかい,こうじ
+こばやし,まさお
+しまだ,まなお
+めぐろ,しげる
+やまや,ひろし
+ふじた,みつぐ
+まとば,ちひろ
+いとう,もとかず
+なかい,しずお
+おかだ,まさひと
+のもと,としき
+ながしま,ようじ
+よねかわ,たもつ
+わたなべ,とおる
+むらまつ,ともちか
+きたに,ゆういちろ
+みかみ,ひろし
+あだち,みつお
+いのうえ,まさあき
+おかだ,たかあき
+かわしま,てつお
+せき,あきら
+たかはし,よしじ
+わたなべ,まさる
+くりはら,ちはる
+わたなべ,けいすけ
+ふじかた,みつお
+よしと,のりお
+かわせ,おさむ
+たなか,まこと
+いまい,けんじ
+こむろ,ゆきとし
+まえだ,えいご
+こいけ,おさむ
+わたなべ,みちあき
+こんど,ひさとし
+いしい,ひさや
+みしま,たかし
+こばやし,よしかず
+やました,けんじ
+たなか,りょうぞう
+やまだ,まさとし
+かみや,みちやす
+やまもと,りきお
+しおざき,とおる
+なかむら,ちかし
+たけもと,さちお
+だけやま,ひろゆき
+あらかわ,ぜんじ
+よこた,まさゆき
+なかむら,かずひこ
+あらかわ,としお
+おおみち,まこと
+まつき,えいき
+くしびき,すけひで
+にった,てるひこ
+つぼうち,みきお
+さいとう,ひろゆき
+たけむら,としひろ
+たなべ,かずお
+まえだ,もとくに
+すがはら,てつお
+かねこ,しょうじ
+やまうち,まさひこ
+かみざわ,ひろふみ
+こが,とくひろ
+つるさき,すなお
+ひがし,ふみひろ
+いしだ,やすひろ
+なかがわ,はるお
+てらしま,ひさはる
+きたむら,しゅんじ
+はっとり,ひでみ
+ささき,よしひろ
+ほか,けんたろう
+のむら,てるお
+はやの,かずお
+あんざい,しんいち
+ふるの,きよひで
+にしわき,くに
+はせがわ,まさお
+いわた,たかゆき
+とだ,ひろあき
+なかむら,まさと
+ふるいし,ますみ
+なかむら,ふじお
+なかがわ,ひでお
+なかま,たつや
+すがわら,ますこ
+まつもと,つとむ
+はしもと,ようたろう
+なかつ,やすかず
+さとうり,あきら
+いきた,ゆきのぶ
+きくち,たけし
+すと,まさみ
+しばた,ひさのり
+ないとう,こうじ
+もり,かずこ
+いとい,あきら
+いとう,けんじ
+まつざき,まさのり
+うえの,みつのり
+かたおか,きよかず
+ばんどう,たつお
+さいとう,じゅんじ
+いわい,しげる
+しもやま,みのる
+あかまる,おさむ
+ごとう,はじめ
+まつだ,すすむ
+ねがみ,としお
+やました,まさおみ
+よねやま,りゅうへい
+いしやま,ひさお
+あべかわ,れいじ
+いまむら,しげる
+いわなが,みのる
+うえだ,くにひこ
+ふじかわ,ゆきお
+たむら,よしひさ
+かしい,まさと
+よねだ,まさお
+よこつ,あきお
+あさお,ゆうじ
+たなか,けいじ
+たなか,ただみ
+やしき,やすゆき
+かいがい,たけし
+そがべ,ゆきお
+ふるかわ,けんじ
+かわうち,ゆういち
+ふじい,のりゆき
+いけのや,たつお
+おち,のりお
+なかもと,なおはる
+わかばやし,はれお
+あらき,ふみお
+やべ,ひでお
+たかはし,やすひろ
+しばの,みつお
+たがしら,としお
+すみた,てつや
+さとう,こうじろう
+ちの,しげと
+やまだ,やすひろ
+いがらし,のりよし
+いけがみ,けんいち
+ふなだ,たかゆき
+いのうえ,たかよし
+にしやま,ひろし
+いしはら,としたか
+すずき,たいち
+こもりや,かずお
+ちゅうご,ひろし
+こばやし,おさむ
+みやもと,つとむ
+なかた,たかゆき
+いりたに,たくお
+おがわ,ゆきち
+おね,けんじ
+こまつ,まさあき
+みのわ,ひろし
+ふじかわ,なおと
+かわぐち,やすひろ
+ちば,としひこ
+なかにし,さだお
+さくま,ひとし
+たけまさ,としゆき
+せき,よういち
+さいとう,ふみお
+ふじもと,やすお
+おぐり,たつじ
+いしばし,きよし
+あざみ,しげる
+おがさわら,なおいち
+さいとう,ひろし
+たなべ,けんじ
+もりやま,しゅうへい
+きたざわ,ひでとし
+かなざわ,かつお
+はらだ,まさと
+おくやま,さとし
+しみず,せいじ
+いのまた,ゆきお
+ふるさわ,せいき
+たけうち,しろう
+おおの,つとむ
+もろおか,けんじ
+しのざき,ふみあき
+のぐち,しげあき
+しまだ,こうじ
+かわさき,ゆたか
+おおかわ,まこと
+さめしま,まさひろ
+ほそじま,かずひこ
+わたなべ,とみお
+かわなみ,まさあき
+くさの,けいさく
+つちた,ともあき
+おおはし,こうじ
+のだ,みきお
+わたなべ,ひさお
+よしたけ,やすひろ
+ふくしま,あきら
+いわや,たかお
+さかもと,もとはる
+くぼた,しょうじ
+いそやま,こういち
+おおの,みつあき
+あべ,たつお
+おだわら,みちお
+きうち,けんじ
+いしかわ,としふみ
+よしだ,たつお
+ちゃばたけ,まさふみ
+さかい,よしお
+おおた,ようじ
+なかの,まさみ
+はだ,たかし
+なかやま,じゅんじ
+さかぐち,けんじ
+ながしま,やすお
+さがら,としひろ
+かわの,ただよし
+かねこ,いさお
+なかだ,みつる
+あまの,たかし
+やざき,しゅうじ
+ひらぎの,かずお
+たばた,いちお
+くにゆき,やすひろ
+おくうち,ひろのり
+すぎもと,ひでじ
+なかむら,りょうじ
+すぎさき,わたる
+やました,たかてる
+のむら,かずみ
+しまだ,みつる
+ふくだ,かずのり
+さとう,ひでお
+おくぼり,ひろし
+よこかわ,まさみ
+でんだ,きよし
+ふくなが,すすむ
+たかしま,みつぎ
+かとう,てつお
+いしぐろ,あきのり
+いけべ,くにゆき
+おおつか,すすむ
+しみず,よしのり
+すずき,たかお
+つや,まこと
+うちだ,まさたか
+おち,けんいち
+ありが,たけし
+なかしま,かつじ
+まさき,まつみ
+なかしま,まさお
+あさはら,まさよし
+ごとう,ひさお
+うえまつ,ひろし
+さきもり,よしあき
+よしだ,つとむ
+ふじた,やすよし
+やぎした,としお
+むろふし,まさひろ
+かめだ,えいいち
+いかわ,ひろただ
+やまざき,ひろし
+つるはし,まこと
+みのしま,のりお
+きしもと,まこと
+たけした,まさし
+なかた,しんいち
+えんど,きよし
+もりや,けいめい
+くぼた,すみお
+なおはら,ひろし
+くげ,けんじ
+かさの,まさはる
+いいむら,たかし
+おおた,まさゆき
+たけこ,ひろふみ
+むらこし,としお
+よしだ,けんじ
+あさの,よしあき
+よしだ,まさとし
+はやし,てつろう
+すずき,たつや
+おだ,りょういち
+やまうち,きよし
+かわかみ,つねお
+うすだ,こうじ
+さとう,しんいち
+くらしま,しんじ
+ませ,のぼる
+こんの,ひろし
+まつざわ,あきら
+しまだ,しゅういち
+やまもと,よしのり
+おおくぼ,けんじ
+おぐら,かずのり
+さくま,えいじ
+のぐち,ひろのり
+ひなた,こういち
+ふじい,しゅんいち
+すぎもと,まさし
+つかはら,ごろう
+みつなが,まさあき
+なかむら,まさよし
+やじま,たけし
+かみた,すすむ
+ひが,じゅんき
+みながわ,よしてる
+とみ,たかお
+さかきばら,ひろし
+かくた,あきひろ
+つちや,ひでゆき
+むらた,けん
+たなべ,あきら
+しもだ,よしのり
+つかもと,くらじ
+はなはた,ひでお
+かんだ,しんじ
+かわだ,ゆきお
+よしい,つねお
+くらや,きへい
+てらしま,ひでゆき
+きたがわ,よしお
+いで,としひろ
+つる,ひさお
+うつのみや,としかず
+なかざわ,まさひと
+ひだ,よしのぶ
+ほそかわ,ひでじ
+ちぐさ,せいじ
+そうや,ひろみ
+やまぐち,こうへい
+さかて,ふみお
+あわた,しげる
+わかばやし,かずひこ
+えんじゅうじ,まこと
+のぐち,こういち
+かわむら,まさお
+もりもと,みきお
+よねはな,ただひろ
+じだ,あきお
+うえだ,けんじ
+しのはら,いさむ
+たかやま,まさかず
+やまむろ,まさのぶ
+わき,じゅんこ
+あまの,まつお
+ほそかわ,としお
+とうごう,ひろひさ
+なか,とみお
+のだ,たかのり
+やました,ちえこ
+なかじま,ひろし
+ながおか,こうじ
+しぶや,よしかず
+せりざわ,こうぞう
+ふじもり,せいじ
+ふくだ,たつひろ
+ふじた,たかひさ
+やまじ,ひであき
+こばやし,いずみ
+こばやし,きよし
+ししくら,よしあき
+こぐれ,まさはる
+もり,よういち
+なかむら,のりたか
+いいじま,のりゆき
+きたがわ,よしてる
+たむら,ただよし
+ながしま,やすえ
+えのき,いずみ
+さとう,よしのぶ
+まつもと,よしお
+うえだ,ひろお
+みずたに,あきら
+あかし,たつお
+なかもと,おさむ
+なかやま,ひろのぶ
+ふじい,やすひろ
+なかやま,しょういち
+よねみつ,てつお
+たかせ,としお
+わたなべ,ひとし
+ふかざわ,としのぶ
+かげうら,まさみ
+しんどう,かつじ
+しみず,たつみ
+さかした,よしの
+みやむら,とおる
+たなか,まさとし
+たかいし,すすむ
+いしがき,けんじ
+たかだ,よしかず
+たていし,かずなか
+さかた,ひでお
+よこはた,としひこ
+くや,たもつ
+よしだ,まさひで
+きただ,はるお
+よしだ,しんじろう
+こばやし,かずみ
+なりた,みつよし
+いぬい,まさよし
+やすかわ,ふみお
+のぐち,すなお
+しょうだ,いちぞう
+やまだ,てるひさ
+わくだ,つとむ
+あべ,さだひろ
+たけかわ,たかお
+さとう,ひでき
+はなおか,よしお
+おおの,ひでお
+たなか,けんぞう
+つのだ,あきお
+なまえ,けんじ
+たかはし,ただひさ
+なかじま,しげる
+なかむら,きみこ
+うりう,はるたけ
+ふじいわ,ふみひこ
+ささき,たかし
+きむら,ゆたか
+たかぎ,しゅういち
+かたやま,ひろと
+いぐち,おさむ
+あべ,てるお
+すずき,たかひろ
+ひら,かずひろ
+なごし,ひであき
+あだち,けんじ
+むらやま,まもる
+くにかた,すすむ
+まつい,まこと
+こいで,みつお
+ひろた,ひろやす
+とみなか,よしお
+わきた,ふじお
+うめむら,しょうじ
+ふけ,よういち
+うえまつ,かつみ
+まつざき,やすひろ
+なかの,つもる
+こだか,たけお
+ひろたに,けんじ
+たかはし,こういち
+さの,じゅんいちろ
+しみず,よしかず
+かんざき,てるよし
+おおさく,かずお
+わしだ,まさひで
+くにもと,やすまさ
+しろかわ,まこと
+かわはら,けんいち
+おか,つねかず
+こもり,よしあき
+はやし,しげあき
+かねこ,いくお
+かどいけ,なおみち
+おかむら,じゅんいち
+おかむろ,じゅんいちろ
+たぶち,なおこ
+やまもと,あきのり
+おおさ,たかし
+いりえ,しんいちろう
+たかは,かずひこ
+たいら,はるお
+みなみ,やすまさ
+いけだ,しげる
+あおき,ふみお
+やまうち,じ
+よしはら,まさふみ
+ささき,あきひと
+みずたに,としいち
+ひらの,かつゆき
+ながた,あきら
+かたやま,けい
+おだ,りょうじ
+えのもと,ゆうき
+たけなか,さかえ
+まつざき,ひろし
+まつばら,こうじ
+やました,せつこ
+めぐろ,ひろよし
+おざき,ひでゆき
+おおがみ,こういち
+おまえ,しんいち
+きだ,かんじ
+うえの,おさむ
+おかだ,かつゆき
+かなさき,とみお
+やかべ,ひろゆき
+なむら,ゆみこ
+いいじま,もとあき
+ささき,のぶゆき
+もちずき,よしのぶ
+ぶんや,としお
+おかの,やすお
+たけうち,さとし
+うえの,とおる
+ふじもと,ひでと
+かわぐち,みつはる
+たきもと,まさのり
+かたおか,しげる
+くさかわ,なおき
+あさい,ひとし
+もり,えいいち
+くぼ,よしくに
+あんどう,いちろう
+うらやま,おさむ
+くりた,よしお
+いのうえ,たけし
+かねかわ,ひでお
+うえもと,りょうぞう
+なかお,けんいち
+おかもと,はるお
+にしむら,きよし
+やだ,かずおみ
+きど,おさむ
+おかばやし,みつひろ
+かわしま,じゅんぞう
+はしき,たかみち
+みやもと,いちろう
+なかお,たかひこ
+まつおか,ゆきお
+ひびの,ひろみ
+にしかわ,かおる
+かぶた,けんじ
+わたなべ,きよし
+やまの,こういち
+さいとう,しげみつ
+すずき,ゆうじ
+くわはら,さとし
+もりた,としひろ
+ふじい,すみよし
+ながしま,つねゆき
+いなむら,まさひろ
+おざわ,ひとし
+たきもと,くにお
+みやした,ひさし
+もうり,まさゆき
+いのうえ,みつお
+ながの,もとあき
+はらと,よしお
+まみや,としかず
+ひがしばた,ひでお
+にしたに,さとし
+たかく,のぶゆき
+はなだ,みのる
+あさの,みちお
+ばば,ひろし
+いとう,しんきち
+いいだ,けんし
+こはやかわ,たけひこ
+ふじわら,かつみ
+しゅくり,やすひこ
+ゆたに,けん
+むねかわ,いくこ
+かんの,まさひろ
+にと,かつみ
+たむら,よしあき
+なかしま,さとし
+おおた,ちかこ
+いのうえ,よしこ
+くままる,けんじ
+たなか,しげる
+まえだ,まさあき
+あみ,のぶお
+みなと,あきら
+にしだ,かずお
+いしはら,さぶろう
+なかしま,としお
+いくた,やすひさ
+おき,ただお
+かがわ,しゅういちろう
+ひらかわ,としお
+やまざき,としのり
+くまがい,こうじろう
+たしろ,みつしげ
+さの,ひでまさ
+みどりかわ,ふみひこ
+なかむら,まさのり
+よしみ,ひろこ
+いなみ,ひでと
+わたなべ,きよし
+こが,ともひで
+すがわら,やすひろ
+たけうち,よういち
+えだ,よしろう
+あんどう,ひろお
+たるい,ゆたか
+ごとう,ひろし
+しもがき,しげる
+ながた,ゆきお
+ほしかわ,じゅんいち
+こみなみ,まさお
+かが,よう
+はぜかわ,のぶお
+ちば,しずか
+うらの,さとし
+こんの,としき
+こばやし,かずよし
+ももせ,ゆうこ
+つげ,じゅんじ
+やすこち,やすたか
+ほそざわ,しょういち
+すぎやま,かつゆき
+あべ,たけゆき
+たなか,のぶゆき
+せいけ,やすひろ
+つげ,まさのぶ
+わかばやし,あきお
+おおくぼ,たかお
+おかべ,ふみお
+いわい,ひさお
+たなか,てるゆき
+やまもと,みつお
+たかやま,なおき
+たじま,ひでのり
+かずしろ,まさはる
+こいで,たかし
+かも,たつのり
+きたじま,よしゆき
+はまの,しげる
+いいやま,としゆき
+やました,しょういち
+きた,しげゆき
+いしたに,さとし
+くじめ,さだお
+きしかわ,かずお
+ながの,まさひろ
+よむら,ただのり
+なかしま,としゆき
+もり,えいじ
+やまじ,よしかず
+おぜき,まさたか
+いなだ,やすし
+はやせ,たかし
+ほんぽ,すすむ
+おおや,かんじ
+きたむら,たかし
+としん,さとる
+たけい,やすふみ
+おかやま,のぶお
+いしずか,こうたろう
+はた,としあき
+すがはら,ゆうじ
+いわみ,やすお
+ゆもと,ひでお
+きたがわ,ゆたか
+いはら,ゆうぞう
+のむら,いちろう
+みやさか,けんじ
+よしだ,ともよし
+ふかだ,たかし
+ふじわら,かずみつ
+きと,としあき
+うえもり,いさお
+やまかわ,まさみ
+くろだ,みちろ
+おおつか,ひろし
+うえだ,ゆうじ
+その,みきお
+だい,ともみち
+しんぞう,ひろかず
+うえだ,ゆたか
+わかみや,かずみ
+かむら,ふみつぐ
+ふるたに,たかまさ
+かつうら,かつみ
+くまい,せいじ
+ばば,はるつぐ
+かねとも,たつみ
+むらはし,とおる
+どい,たかし
+なみかわ,しげはる
+たかおか,けんじ
+まつもと,りゅういちろう
+わたなべ,よぞ
+ただ,まさひろ
+ありま,よしてる
+ながの,としのり
+やの,てるゆき
+いさか,ゆきひろ
+いとう,とくいち
+やまざき,すみお
+くの,かずお
+しば,けんじ
+きむら,あきら
+すみだ,かずお
+もとがいと,ひろかず
+にわ,しげこ
+たけうち,ゆうじ
+たむら,かずよし
+ぼうた,けいすけ
+かどや,ゆうご
+はらだ,よしのぶ
+みついし,ひろし
+いのうえ,けいすけ
+むらはし,まこと
+にしかわ,しんいち
+ますだ,こうじ
+おおた,くにお
+ふくい,まさお
+かげやま,けんじ
+ながつか,ただゆき
+くさの,しげお
+こじま,ひろゆき
+くらた,ただし
+たけうち,けんいちろ
+いけだ,あつお
+たかの,ゆたか
+くらや,しんいち
+おの,つとむ
+なかだ,じゅんぞう
+とくもと,たかあき
+おおはし,としふみ
+やまだ,あきら
+はんだ,てつお
+いしはら,せいじ
+よしはら,さとし
+たていし,としひこ
+いとう,しふみ
+さとう,たかお
+おおくら,しょうじろう
+なかすじ,よういち
+たいら,ひろし
+きひら,はるひこ
+なかじま,ひでつね
+やまざき,ときお
+とびた,あきら
+なかざわ,はるお
+にしはら,かずお
+めぐろ,じゅんじ
+まるやま,こうぞう
+きくち,ひさのり
+あおき,よしみ
+きったか,たみお
+やすい,ゆきこ
+いちまる,よしあき
+やまざき,としゆき
+すがはら,じゅんいち
+とみなが,よしひこ
+ちぎり,えいじろう
+おおば,ゆりこ
+まつい,ふくみ
+ひらやま,まさひろ
+やまむら,みつのぶ
+おおで,まさみ
+よしなが,ちかえ
+こじま,たけのり
+とみなが,ちえこ
+さが,てつや
+はら,ゆうじろう
+とみよし,たかし
+よしだ,そのえ
+ひらばやし,ひろかず
+まつど,ひでお
+いまふく,ゆうし
+きよせ,しんや
+はなぶさ,すすむ
+ちば,としのり
+やまざき,りゅうじ
+なかはら,けんじ
+おの,こうへい
+うえまつ,かよこ
+あきやま,まさあき
+とたに,よういち
+よねだ,まさひろ
+ふるくさ,さかえ
+ひろや,のりひろ
+よしだ,しんさく
+かねこ,しげる
+ながた,まさはる
+いべ,しんじ
+せきね,まさゆき
+おかだ,まさはる
+かない,かんせい
+さとう,ひとし
+さかきばら,よしお
+いまい,みはる
+ひめじ,しんぞう
+おぎはら,まさよし
+たけむら,たかのり
+とおやま,たかし
+きたはら,たかひさ
+おおさか,かつひこ
+おおこうち,かずまさ
+たかお,のりこ
+うど,としろう
+うの,きんご
+ふじき,ひろみ
+さとう,としお
+いそがい,まさみ
+からさき,よしお
+やまだ,たもつ
+わだ,えつお
+しばた,としお
+しおざき,たつお
+しが,みつのぶ
+くりた,みちお
+はしもと,よしろう
+よしむら,たかし
+みやざき,ひろのり
+きたがわ,きはちろう
+おだけ,ちから
+すずき,あきら
+やまいし,きよあき
+おぜき,ひろし
+たかい,さとみ
+かねこ,けんじ
+はらだ,ひでゆき
+しまだ,けんさく
+やなぎ,たけお
+すずき,たかひと
+たかはし,やすお
+おぐりやま,とおる
+わたなべ,のぶゆき
+やまむら,けんじ
+たかはし,ただひで
+しおじま,かおる
+つるおか,とおる
+いとう,としみち
+まつうら,せいき
+やまもと,たかお
+くまみ,ゆうぞう
+けんよし,たかし
+やまかげ,よしあき
+ごとう,ひろお
+たけうち,まさとし
+はやし,かずゆき
+いしばし,としゆき
+いな,りょう
+いのうえ,たかゆき
+にしかわ,ひでお
+はんだ,きよじ
+たてばやし,かずよし
+おしま,くにひこ
+しばた,はるき
+みうら,あつし
+こかご,かずのり
+いいだ,ゆたか
+たけすえ,かずみ
+いがらし,てつや
+ますやま,よしお
+さくやま,かずお
+さくらい,けん
+たまり,まさお
+いまにし,みのる
+おがわ,まさひと
+はぎわら,きよし
+おおくに,ひでひこ
+いけだ,せいいち
+まえじま,あきら
+いわい,かつみ
+やまだ,まさき
+すだ,まさと
+ときわ,おさむ
+はやし,ゆういち
+たけもと,かずお
+かんばやし,まさお
+とざわ,つとむ
+たての,しんご
+かんべ,けいこ
+おくだ,よしと
+たもと,とみお
+ながい,のぶたか
+おざわ,しんいち
+さとう,やすなり
+こんど,あきお
+ねぎし,ただし
+たなか,てつお
+こむろ,りょういち
+よしだ,とよふみ
+いいじま,ひろみ
+にいほり,かずお
+こもりや,よしたか
+しんどう,ひでずみ
+やの,よういち
+たなか,まさとし
+はぎたに,ろくろう
+こすぎ,だいきち
+いべ,のりお
+かなざわ,ひろし
+ただ,ただひさ
+ながた,りゅうすけ
+かまだ,ひろし
+たかはし,よしお
+おいで,まこと
+たかくら,ひろし
+やすまつ,すすむ
+まる,よしひさ
+くぼた,のぼる
+たばた,けいいち
+もりた,のりお
+くにとも,つねじ
+あさぬま,ひろかず
+ほしな,やすお
+のざわ,はるひさ
+まつむら,しんいち
+ひらかた,かずお
+ひらま,はるお
+しみず,たかし
+よこかわ,わたる
+きくち,あつし
+くろさわ,いさむ
+たけうち,てつお
+ひらが,ようじ
+さいとう,のりお
+うちぼり,こういち
+いなむら,よしはる
+おさだ,たかし
+すぎやま,たかとし
+いまず,やすただ
+うらの,まさよし
+もちずき,かずお
+すがわ,しげる
+いけだ,としお
+たなか,はるお
+さいとう,たつじ
+ふじた,としみち
+みやね,つとむ
+かまだ,みのる
+ねぎし,よしのり
+おくがわ,ゆきお
+はやし,ひさし
+ばば,のぶひこ
+やまもと,つとむ
+えんど,のぼる
+そめや,おさむ
+あらい,よしゆき
+あべ,あきら
+ちば,たつお
+たかやま,みのる
+やまき,ゆうじ
+たけうち,しげふさ
+たけべ,たかお
+あだち,よしあき
+たかしま,あきら
+よこやま,のりなお
+しらいち,まさる
+くどう,しげお
+すずき,きよし
+たかしま,たかし
+やまがた,みのる
+よしだ,たくお
+みやかわ,けんじ
+ささき,むつみ
+いでうら,かずこ
+たなか,ひろし
+いとう,あつひこ
+おおつ,たけし
+ふえき,としかず
+しもふさ,あつし
+みやかわ,まさたか
+はしもと,たかし
+やまぞえ,こうじ
+にいくら,のぶお
+わたなべ,としのり
+むろふし,かな
+かんだ,かつまさ
+くどう,けいこ
+たかはら,わたる
+おかだ,けいじ
+どい,さとる
+たなべ,まもる
+こむろ,けんいち
+もりやま,ふみこ
+あらまき,のぶお
+こしべ,かずろ
+さの,のぶひろ
+おかだ,よしまさ
+ふじわら,きょうこ
+まつお,かずみ
+たなか,みねお
+きはら,なおき
+にしはた,ゆう
+にしわき,よしたか
+おかざき,ひろかず
+ふじわら,おさむ
+やすだ,ゆかこ
+おか,きょう
+ほその,しげお
+あかし,たくま
+なかい,こういち
+やすだ,きくじ
+てらむら,ふみたか
+くぼた,よしゆき
+こにし,しげみ
+のむら,あきら
+いのせ,くにこ
+わたなべ,やすひこ
+にしお,かずひさ
+もみき,こすけ
+すなだ,ひろたか
+たけうち,さちこ
+あきせ,ひろし
+しおた,よしひこ
+きど,よしあき
+いしわたり,としお
+しらがみ,たかひろ
+うちなが,ひでや
+たなか,しんいちろう
+くろさき,てつお
+おとし,ゆういち
+さとう,まさお
+すずき,まさゆき
+ひろた,さいじ
+やのかわ,じゅんいち
+さかもと,まもる
+こむろ,まさと
+いまた,よういち
+ほそや,かずたか
+てらさか,まさゆき
+ほんま,かずえ
+かすが,ひろしげ
+まつだいら,えいじ
+かわかみ,しゅうじ
+ねごろ,しんじ
+ふくだ,えいぞう
+すずき,ひろし
+とまつ,よしじ
+いの,たつろう
+すずき,じゅんじ
+あさい,かずお
+はら,たかのり
+ほし,くにかつ
+なるかわ,かずのり
+おだ,たかあき
+おばな,しげやす
+たにざわ,まさひろ
+ふじおか,たかし
+ごとう,たかじ
+これなが,としあき
+たかはし,だいすけ
+たから,みつはる
+おおくわ,きよし
+たなか,ひでかず
+さとう,のりお
+しまぬき,けん
+そね,ひろし
+たなか,かずお
+ふじむら,こうじ
+ごとう,しんじ
+はしもと,やすたか
+ひるま,あきら
+ほしば,ひでよ
+かめわり,ひろみ
+おくい,ひろし
+ひさもと,おさむ
+すずき,きよし
+ひらさわ,よしたか
+きたで,のりあき
+ふくだ,かずひさ
+しおざき,けいじ
+むとう,ゆたか
+にしおか,さぶろう
+つぼの,ひろひさ
+なつうめ,としまさ
+たにがき,ひろあき
+おおすが,かずお
+うちだ,ひでお
+かとう,えいじ
+ささき,ひでお
+かしま,のりお
+あかさか,かずお
+かわかみ,よういち
+しど,たつや
+やまうち,よしひで
+かの,ゆたか
+はら,いくお
+まつばら,けんじ
+てらかど,かずひろ
+しおた,よしのり
+おかだ,ひとし
+くろだ,りょう
+もりもと,ふじお
+せき,ひろし
+すずき,あきら
+たけくさ,ひろし
+たがしら,のぶお
+こばやし,おさむ
+さえき,けいじ
+たつざわ,きみあき
+さいとう,ひとし
+ふるかわ,きよし
+たむら,ふみと
+つりや,まちお
+さかぐち,ふみとし
+ふくしま,よういち
+おおかわ,ひろし
+ふじた,しゅんすけ
+かわぐち,かつのり
+ときおか,てるお
+なかの,とみお
+いのうえ,まさゆき
+くにとし,たくろう
+さかた,こういち
+もりかわ,つねお
+のぐち,ひろし
+くぼた,むつみ
+なかおか,たつお
+のふじ,けいじ
+もがり,えいじ
+まえざき,いさお
+おおつか,しげよし
+みずた,けんのすけ
+すぎやま,よしひさ
+かがわ,よしたか
+にしはら,よしふみ
+てずか,しんいち
+しおみ,みつお
+おおはら,ただあき
+あさくら,あきひろ
+しまだ,てつや
+しまかわ,すすむ
+はしもと,ひとし
+うず,しずお
+たかくわ,まさのぶ
+みちた,しゅんいち
+うえだ,ういり
+しが,たかつぐ
+いけみ,みつぐ
+もり,まさあき
+かしもと,ますみ
+いしはら,ちえこ
+かねこ,ちえこ
+たかはし,としお
+もとい,まさお
+こたけ,みちお
+かさい,すえこ
+かとう,のりこ
+こくぼ,けいこ
+わかやま,しげや
+さなだ,まさひこ
+さかた,とみよし
+のむら,みつお
+はやかわ,かずみ
+みやざき,しげお
+おにつか,けんじ
+いで,おさむ
+ながさこ,たかのり
+いとう,みちたか
+かねたけ,てるあき
+くぼた,きよゆき
+ありま,けいこ
+わかお,ひろし
+いしざか,たかゆき
+おた,ぜんはちろう
+さかもと,けいご
+おおほり,ゆきお
+しんたに,としあき
+うちやま,たかし
+ひらた,みなこ
+ありぞの,さとこ
+いとう,たかし
+あおやぎ,まさあき
+なかむら,さだお
+いいだ,みちお
+なしき,かおる
+むらせ,かずお
+まつお,けいご
+さとう,しろう
+あさぬま,しんいちろう
+ふたみ,やすまさ
+ふなと,くにみ
+ふじた,ゆみこ
+ふるかわ,たけお
+ふなはし,ひさや
+ぶとう,ひろゆき
+かのう,かつひろ
+おきつ,ひろたか
+たかぎわ,いさむ
+ほしの,ちえこ
+にしじま,くにひろ
+かまた,ちあき
+つじもと,としいち
+はなだ,しんじ
+ひろせ,まさお
+にしだ,ひとし
+うえき,としかず
+よしの,きよお
+きたむら,せいいち
+しみず,みちこ
+いしざき,ひさし
+はやし,みつのぶ
+きくち,ひでふみ
+おかど,つぐお
+こむら,しげる
+はしもと,つとむ
+なかつか,たけし
+おおいし,ますよし
+くろだ,まさよし
+なかい,まさみ
+きたざわ,のりあき
+きしだ,しげる
+かなまる,まこと
+あらい,しずお
+ふたつぎ,はるお
+きくち,としお
+いいだ,やすし
+なかえ,あきお
+ひらまつ,みのる
+にしおか,じゅんぞう
+さとう,けいき
+もり,はるお
+ほしの,いさお
+やまぐち,のぶひろ
+うすい,よういち
+まつばら,えいいち
+ありさか,まさき
+にしお,えいじ
+きだ,てつお
+やの,ゆういち
+かとう,けんた
+わたなべ,ちひろ
+はやし,やすお
+わたべ,よういち
+わたなべ,まさお
+ゆぐち,ひろこ
+やまもと,ひさし
+さいとう,ふみお
+かいず,けんいち
+ほしの,ひでお
+しのはら,のぶひろ
+おおぬま,まもる
+みわ,たけし
+ほりむき,よしま
+いしたて,しんいちろう
+みふね,きよし
+もみき,まこと
+はせがわ,てるお
+すぎやま,しゅんじ
+つくだ,ただし
+あだち,ふみのり
+でざわ,ただよし
+おた,きよし
+さとう,あきら
+せきぐち,みつのり
+こくぶん,よしき
+ほしな,ゆきふみ
+うらの,こういち
+たけむら,やすひろ
+とくなが,ひとし
+くりはら,ひでと
+おくむら,じゅんいち
+さいとう,しんいちろう
+まつした,けいぞう
+たけだ,みちこ
+にしき,もとよし
+うめだ,さかえ
+ほんだ,いくお
+かも,かずうみ
+うしだ,つよし
+さいとう,ひろつぐ
+はすだ,ますお
+みかわ,ようこ
+うちだ,くにひこ
+にしざき,しょういち
+いがらし,しょうじ
+わたなべ,あさこ
+しまむら,こうじ
+かとう,のりこ
+かわべ,しょうこ
+さかもと,ようじ
+もりした,もとよし
+すがはら,りょう
+とみやま,かつひこ
+ふくだ,つよし
+おとざき,あつひこ
+ふじもり,たかお
+こもり,きよゆき
+ふくなが,まさあき
+みやはら,かつのり
+じんの,みつお
+きむら,えいこ
+いながき,ゆきこ
+もり,のりお
+わたなべ,かつのり
+つじもと,あきお
+もんぜん,ひろゆき
+なむら,
+やまもと,えりこ
+はしもと,ひろき
+あらい,やすのり
+ふじい,ひろし
+わたなべ,てつ
+はせがわ,とよかず
+しげやす,えいいち
+やまのい,たくま
+こばやし,まさる
+ながい,よしあき
+さわ,のぶお
+まつよし,みちお
+さいとう,かおる
+かのう,ひろあき
+うしごめ,やすお
+いしい,こうじ
+うすき,いずる
+すどう,よしお
+かじやま,たかきみ
+おおば,ひでき
+すわ,ふみお
+いわた,やすと
+とう,はじめ
+おいかわ,ひとし
+ひらい,えいこ
+たかしま,としお
+ふみの,ひろし
+おかざき,のりお
+しらき,まさつね
+たけもと,ゆうじ
+まつもと,のりひこ
+まつばら,ひろし
+えびはら,こうじ
+ふじの,やすお
+ふかや,まさひろ
+ほしの,たかし
+かたやま,さちこ
+あらかわ,まさゆき
+たかの,かずお
+くろだ,やすひろ
+いとう,じゅんこ
+こざい,みつる
+うえやま,きよし
+はっとり,としき
+にしむら,としたか
+ふるかわ,たかお
+やしき,しげき
+ほどやま,ひでお
+えとう,ともひこ
+やまもと,まさとし
+せきぐち,いさむ
+たなべ,ひでとし
+たけだ,としゆき
+しんたに,かたし
+くぼた,きよし
+すぎおか,さとみ
+やまざき,さだのり
+さいとう,ひでき
+うえの,としたけ
+しまもと,こすけ
+きたの,まさみ
+いいずか,りょうこ
+いずみ,きょうじ
+はらだ,たかゆき
+おちあい,さとし
+やまうち,あきひろ
+えぐち,ひでつね
+はぎわら,たけし
+たかぎ,たけのり
+おくもと,まなぶ
+まつざき,りょういち
+いちむら,ゆりこ
+みやさか,ともこ
+みやた,せいいち
+ながお,しょうきち
+いわお,まさし
+ふかざわ,しげる
+たむら,まさお
+きりゅう,ただお
+まつざき,よしお
+かとう,てるみつ
+みた,なおと
+いしい,いさむ
+おかもと,てつお
+うえおか,のぶお
+きょうの,まさと
+かねこ,ゆうぞう
+さくらい,きょうこ
+わかばやし,としひで
+わたなべ,よしひろ
+あさい,にすけ
+かどの,ゆうじ
+やまざき,とよひろ
+あわの,としゆき
+おがわ,たかのり
+ぜんけ,としお
+ふくもと,ともひこ
+おど,かずのり
+もりもと,たかお
+とうぼう,かずみ
+かたやま,まさし
+ながまつ,たかあき
+わたべ,よしみ
+いしき,ゆう
+いながわ,ゆうこ
+なかの,たかはる
+にしやま,やすよし
+しもだ,みよこ
+しげた,たかお
+まつもと,ひろしげ
+かたやま,ゆう
+その,かつみ
+いせき,ゆきお
+いとう,よしかず
+せきね,まさお
+むらやま,ふじお
+まるやま,けいじ
+くろさわ,よしふみ
+すみ,とおる
+のぐち,ゆうじ
+さとうみ,ひでき
+おおかわ,つぐひと
+なかの,ひでのり
+おおいし,じ
+はぶ,あきら
+うちだ,のりまさ
+みき,ふみのぶ
+すずき,つねゆき
+かさはら,いずみ
+おおくぼ,かずはる
+かたかみ,のりかず
+たかはし,としひこ
+いしかわ,かずや
+たかとり,たかお
+たにぐち,しんじ
+せき,ゆきまさ
+くぼた,まさと
+あべかわ,むつお
+ふじまき,たけし
+かたやま,まさゆき
+こやま,けんじ
+はしもと,あけみ
+すみ,みちお
+にしかわ,ひろし
+さわま,あやこ
+はしもと,ゆうこ
+なかた,やすまさ
+うちやま,ひろし
+ささき,まり
+あさはら,みつひろ
+にった,ふみこ
+だん,るりこ
+すぎた,てつし
+やまもと,しんいち
+おふち,みき
+こばやし,みわこ
+みよし,こうきち
+いしだ,ひでひこ
+おにき,のぼる
+くりはら,たみお
+しらい,つかさ
+さかにし,けんいち
+おだ,ひさし
+かます,けんぞう
+なかがわ,まさよし
+かしもと,きょういち
+ばんどう,ゆずる
+ふたみ,まさし
+やました,たかし
+はやし,ゆうじ
+かげやま,みのる
+あすま,のぶお
+しもむら,ゆういち
+やまぐち,ただし
+やまと,ひろし
+さとう,しげる
+まつだいら,かずや
+まつむら,としみち
+こんの,よしや
+おおはし,やさぶろう
+きくた,しげき
+よしおか,ひろし
+さの,よしお
+たなか,ゆきのり
+ささき,すすむ
+かわぐち,あつし
+やました,たつお
+たけむら,ふみお
+ふくち,かずえ
+まなか,とみえ
+あらき,たかのぶ
+ひらの,よしかず
+なかむら,つとむ
+はしもと,としかつ
+かとう,いくこ
+はまかわ,くにお
+はやし,けいこ
+いとう,けんいち
+すずき,いちろう
+たけうち,かずひこ
+にし,こういち
+いわほり,としまさ
+いまい,くみこ
+もりの,たかし
+にしはら,けい
+きりや,ひさと
+さとう,とよこ
+ほそだ,ひさこ
+たかはし,ただし
+なかじま,しげる
+やすはら,なるゆき
+くろいわ,たかし
+かも,ひろし
+あかまつ,くにあき
+きたむら,まゆみ
+にしだ,ゆきこ
+おかだ,しんいち
+ささき,としゆき
+たかはし,ひろし
+しみず,いさむ
+えんど,しんすけ
+うだがわ,てるお
+しみず,のりふみ
+あおやぎ,せいぞう
+はしもと,かずお
+たけうち,ひであつ
+あらい,やすし
+いしじま,いさお
+こがね,ひでお
+さわしま,しんいち
+たかやなぎ,みのる
+まさだ,ひろみち
+しみず,あきひで
+おのでら,たかお
+たなか,みつる
+のむら,のぶお
+よしだ,ひろし
+よしだ,としすけ
+さたけ,しんじ
+さいとう,まもる
+みやぎ,ひろし
+たかしま,けいじ
+かばや,ひろふみ
+いしざき,しんいち
+かがや,よういち
+こたに,たくもり
+こすだ,やすあき
+いじり,ゆたか
+まるやま,たみや
+かない,よしお
+やぎ,みつぐ
+ふじの,さとし
+こでら,まさと
+すぎお,まさゆき
+すがはら,こういち
+さいとう,みつやす
+おか,はるやす
+いしまる,おさむ
+みやざき,こうぞう
+はまの,みちお
+こたじま,よしのり
+たかしま,あけふみ
+つかだ,せいいち
+なかむら,かつふみ
+たけだ,まさのり
+やすむろ,はるひこ
+なかむら,ひろし
+ふじしま,しげまさ
+おかだ,たけし
+あや,みつまる
+なかむら,みつまる
+たかはし,たけひろ
+すがはら,しげただ
+ゆあさ,けんじ
+いしい,むねよし
+おおくぼ,ひろとし
+おさわ,まさたけ
+やまもと,みきお
+いまいずみ,かずひこ
+おかだ,よしひろ
+なかむら,くにお
+たなか,きよし
+なかの,たくお
+おおもり,かずひこ
+やまもと,かずお
+ながい,ゆきまさ
+こばやし,よしはる
+ひきち,ひさし
+やまだ,としお
+つかもと,つとむ
+いのうえ,まさと
+いのうえ,あきら
+すみかわ,かおる
+ふくだ,じゅんいち
+やまもと,せつこ
+さいとう,ゆうこ
+かんば,よしみつ
+さらい,まさあき
+さかき,しょうじ
+やすい,たかし
+かみむら,たかし
+せべ,よしたか
+よしだ,としかず
+ながせ,ただし
+ふくち,いずみ
+ふくだ,じ
+のなか,のぶひこ
+いまだ,まさひろ
+にしかわ,ますこ
+こやの,ひでお
+なかざわ,あきお
+おがわ,たかし
+なかやま,はるひさ
+ぬのかわ,けいこ
+そね,ふみお
+みぞぐち,ゆきお
+こばやし,いわお
+よしまつ,まさお
+おおはら,まさおみ
+やまだ,しんじ
+みのぐち,よしのり
+しんめん,たかふみ
+のせ,まさお
+いわはし,りょういち
+あかい,たけし
+つたもと,まさはる
+なかもと,みのる
+くだなみ,まさゆき
+いちだ,たかし
+やの,えいじ
+まつき,きみお
+ささき,よししげ
+ふるの,かおる
+ふじた,あきら
+いのうえ,みどり
+たや,みつやす
+みやざわ,たろう
+わたなべ,ようこ
+あくね,としろう
+ほしの,しんいち
+よしだ,かずお
+うえむら,のぼる
+かみや,けんじ
+すずき,たけし
+あんどう,たかはる
+とよいずみ,としお
+くわな,のりこ
+にいみ,かつし
+みうら,おさむ
+のむら,あきら
+おかだ,じゅん
+あさぬま,かずひろ
+ささお,ひでゆき
+いながき,まさと
+すがわら,さとし
+しょうじ,たけさだ
+たがわ,みのる
+そが,のぶとも
+しょうわ,きよみ
+まつかわ,ひろゆき
+しもむら,ゆうじ
+わたなべ,なおゆき
+こばやし,しんじ
+いいだ,こういち
+ふくもと,けんいち
+むらやま,ひろき
+ほり,まさあき
+やまの,ひでお
+にしわき,ようじ
+まつお,まさな
+おかもと,まこと
+おおさき,けんいち
+うめもと,なおふみ
+おかむら,あたる
+こいけ,こうせい
+おおたに,まさあき
+かたおか,まさき
+おかだ,しちろう
+ふくしま,よしお
+えだなか,やすのり
+すずき,しげる
+いちかわ,せいいち
+くろかわ,きよし
+さとう,きよひさ
+おおさわ,かずひこ
+もちずき,すえひろ
+やました,けいいちろう
+いちかわ,たかし
+ふかざわ,かずほ
+くぼた,のぶお
+にしむら,こうじ
+ねぎし,ひさゆき
+こんど,けんじ
+ふるや,みつぎ
+こばやし,たつお
+たむら,ひろひこ
+みつはし,だいはちろう
+くまざわ,かつみ
+やまだ,よしお
+ひろつ,かずみつ
+かねだ,ゆたか
+あそ,ゆきお
+えびはら,きいち
+やすい,くにお
+すどう,ひろこ
+やはた,まさのり
+さかい,ともひろ
+さが,よしお
+やまざき,えみこ
+なかむら,ようこ
+いざわ,ひろちか
+あらい,けんいち
+うぶかた,さだみ
+わたぬき,ただゆき
+ひした,のぼる
+かとう,ゆうこ
+やまね,よしと
+やました,ひろし
+のむら,よしろう
+やない,まさゆき
+むらかみ,まさみち
+あおき,あきら
+やしろ,すすむ
+あさま,まさひろ
+おくだ,ふみお
+いしばし,ゆうじ
+みなみで,ひであき
+いぬずか,こうへい
+ときわ,よしはる
+みうら,やすのぶ
+まぶち,としはる
+おばら,ひろゆき
+まつき,ひろし
+えぐち,けんいち
+おおみ,たけし
+わたなべ,たけし
+あらかわ,しんじ
+すがの,あきら
+やすい,こうへい
+みやもと,ひろやす
+ふじぎわ,こういち
+きたがわ,みきお
+たにぐち,みつる
+こじま,よしあき
+あまかわ,ゆたか
+おおぬき,ゆたか
+たなべ,こうじ
+まるはし,いさお
+やどや,じゅんいち
+おおがく,よしひろ
+さかた,こうへい
+はら,ひでみ
+たかぎ,ひでお
+あいはら,あきら
+おおた,とおる
+あきやま,よしひろ
+しみず,たかお
+こばやし,おさふみ
+はたもと,けんじ
+うすだ,たかのぶ
+たかはし,かずお
+なかがわ,てつお
+まつばら,はるお
+くぬぎ,ゆたか
+おがわ,よしお
+つじ,かずたか
+かわい,けいいちろう
+すがわら,しゅういち
+むとう,かずお
+おばら,やすとし
+かとう,たかゆき
+かぶらき,ゆきお
+わかたべ,つとむ
+おがわ,こうしろう
+いわさき,ひろゆき
+なりた,おさむ
+あきやま,たかし
+みつい,けいいち
+えんど,ゆたか
+よねた,あきお
+あおい,きよし
+おかもと,よしひさ
+おおつか,しんいち
+ふくもり,さかえ
+てしま,かずまさ
+はま,ひでき
+よしだ,はじめ
+かわべ,よしはる
+たなか,やすのり
+たかはし,きょういち
+たなべ,ふみあき
+あそ,ひろいち
+たかだ,ひろし
+みやの,としお
+うえずみ,ひとし
+いちかわ,やすあき
+あさわ,ともふみ
+いなもと,かずお
+もりや,ひとし
+なかたに,けん
+みやもと,いちぞう
+みくに,えいいち
+きたむら,ただまさ
+やたべ,まさひで
+ながかわ,りょういち
+やな,かずお
+さくま,みつる
+あらい,としお
+しまだ,なおこ
+てずか,しゅんいち
+うえの,しゅんいち
+さいとう,ひろゆき
+おおくわだ,まなぶ
+よこやま,よしおみ
+わたなべ,よういち
+にしむら,あきのり
+たかまつ,こういち
+にしむら,たつま
+いちき,ひろし
+いわした,のぶつな
+おの,としお
+にしき,たつお
+さわ,かずお
+たかみ,おさむ
+やすふく,けんじ
+おおた,ひろし
+おかもと,ひろまさ
+さかい,やすお
+ふじもと,ときお
+まつもと,しげのり
+おおやぶ,かずや
+にしむら,しゅういち
+ほりうち,けいいち
+いしもと,しゅういち
+まつもと,なりお
+たけうち,しんいちろう
+もとやま,こうしろう
+よしなが,こうじ
+ふるかわ,みちお
+たにぐち,よしお
+たけこし,まさとし
+つむら,こうせい
+おの,しげお
+おかもと,さとし
+ふるた,まさひろ
+にしの,そういちろう
+みずたに,ひろゆき
+こやま,ひさし
+きくち,けんいち
+おおこうち,まさあき
+かわた,たかし
+くはら,よしゆき
+ふるはし,こうぞう
+たかよし,ふみとよ
+かす,のぶゆき
+あみもと,すすむ
+むねとう,としお
+まつもと,すすむ
+たかなし,まさあき
+あきた,としお
+たかはし,やすみち
+ながい,たかし
+よしだ,つかさ
+まつもと,やすあき
+とくだ,みちお
+ひらい,のぞむ
+おくしま,たかし
+ました,しげお
+やまだ,きみひろ
+さくらい,ともお
+たきざわ,さとし
+ますこ,ゆうじ
+しんかわ,ひろえ
+おおたに,ただひろ
+かわの,よしみつ
+あらかわ,てつお
+あだち,たかゆき
+うちだ,けんじ
+こはら,としひこ
+おおはし,かずひこ
+かめおか,よしお
+みむら,とみお
+いき,よぞ
+あしずか,ひろし
+やまもと,ひろのり
+よしだ,おさむ
+はらおか,かつやす
+うるわし,ひろし
+おんだ,けんじ
+いんど,まさお
+たけなか,まさとし
+ふじさわ,まもる
+おおもり,まさゆき
+なかむら,ひろし
+しょうじ,よしのり
+きたじま,よしあき
+いとう,あきら
+ひらお,かずたか
+すみもと,のぶや
+なかたに,ひろし
+あらしま,ゆきお
+かたやま,ゆきのぶ
+うえだ,まさひろ
+ふじもと,ひろふみ
+やまはた,りゅうじ
+おおたに,つとむ
+いいぬま,よしひろ
+ながさわ,よしろう
+やすだ,しゅうじ
+ふくしま,りょういち
+さかきばら,あやこ
+かとう,たかし
+よこざわ,ふみたか
+かどの,かずみ
+やまおか,きよし
+かみたに,ひろき
+かとう,えつろう
+のもと,としかず
+すぎもと,せいいち
+ふじの,こうじ
+いのうえ,しょうじ
+はせ,まさかつ
+もり,えらぶ
+かわばた,ひでお
+かわぞえ,しょういち
+はしもと,だいしん
+ひろまさ,やすひろ
+きしもと,くにお
+ひらつか,みのる
+うえだ,よしゆき
+あらい,としひこ
+いいだ,まさゆき
+ひろしま,しょうぞう
+いさか,かつひろ
+すずき,よしお
+くらもち,たかお
+さいとう,まさお
+すずき,みつぐ
+ふかや,てつじ
+さかい,としろう
+おおわだ,としお
+かめや,かつみ
+くさうら,としお
+わだ,かずお
+ごとう,きょういち
+ひらふく,あきら
+もろや,ひでとし
+いけだ,さだゆき
+ますだ,まさはる
+みずの,としたか
+はやし,きよとし
+あおき,としひこ
+こばり,まさゆき
+みさわ,さぶろう
+たかぎ,てつお
+えんど,けんいち
+すがさわ,せいじ
+おりはら,とよみ
+まつなが,たかふみ
+かさい,きよあき
+せむら,たかし
+さくらい,たかあき
+てらかど,よしゆき
+ふじた,やすあき
+かわのべ,かいち
+あおば,まさる
+むらもと,ゆきよし
+つぼうち,たかし
+ふるしょう,ふじお
+しばやま,ふみお
+やまもと,たかひろ
+うちだ,ひろふみ
+まえざわ,とみお
+こむら,あきのぶ
+やまさき,よしじ
+うしき,かずみ
+まちやま,しょうじ
+ふじぬき,すすむ
+なかむら,まつみ
+くすもと,てるお
+すずき,よしお
+うえやま,としゆき
+こいけ,ひろし
+はせがわ,みつあき
+ふるかわ,やすひろ
+やまだ,あきお
+ゆはらぎ,みつよし
+おしま,のりゆき
+そね,まさひろ
+とうま,さちひろ
+たかはし,しずお
+かけはた,まさお
+いしい,しげる
+さとう,のりゆき
+むらやま,けんじ
+ほりぐち,まこと
+なかざと,ひろし
+さとう,まこと
+かねこ,りゅうぞう
+かしま,としのぶ
+とぐち,ひろむ
+こみやま,きみあきら
+やまおか,よしのぶ
+たかはし,けいいち
+もりた,けいいち
+よこい,よしのぶ
+ひらい,けいいち
+しいばし,まさたけ
+かねこ,まさふみ
+なかね,のぶはる
+せきぐち,てつお
+みもり,たかひこ
+きくち,まさたか
+やまもと,かつじ
+あらかわ,たかお
+ともくに,まさき
+とみた,のりかず
+たかはし,しゅうへい
+とがし,のぶお
+かわむら,としひろ
+ふくなが,けいじ
+まきた,とくみ
+さの,みのる
+さとむら,けいじ
+さかの,じゅんや
+つちはし,しげあき
+うえの,けんぞう
+なかがわ,ひであき
+とくなが,けんじ
+いとう,かずお
+ひさまつ,とよとし
+おおつか,かめお
+かわもと,しげき
+のむら,よしいち
+かのう,ゆたか
+うえさか,ゆうじ
+ふじわら,ひらお
+おがわ,まさと
+くらた,ともふみ
+はなそと,とよふみ
+にしかわ,たかよし
+えびす,ひでお
+やすのり,よしはる
+さかい,たけし
+まえだ,よしあき
+ふくだ,しげたか
+やまもと,まさずみ
+しおた,やすまさ
+むらかみ,ともよ
+いくみ,たかし
+なかぎ,ゆみ
+とくまつ,たかお
+たにい,としゆき
+おおやま,けんじ
+たの,たかちほ
+おおた,ひろのぶ
+くまの,あきお
+さわぐち,まさくに
+あさの,かずお
+さかぐち,のりゆき
+わたなべ,つとむ
+かとう,かずお
+まえかわ,たかし
+まつもと,かずお
+まつもと,としお
+やまなか,えいじ
+こばやし,こうじ
+ふじた,たつお
+やぎ,まさみ
+いわい,まさたか
+ふくしま,ひでみ
+ふるかわ,こういち
+おがた,まさのり
+すずき,ただひこ
+しかま,たかし
+きしもと,しゅんいち
+ころぎ,かつみ
+ふたみ,きよし
+やしろ,としお
+はりいけ,よしはる
+しむら,ありまさ
+ながくら,いちろう
+みなみ,こうじ
+とくなが,きよし
+たなか,ふくむ
+てらさき,しろう
+かとう,とおる
+みずの,よしあき
+たもと,ひとし
+うちだ,ひろかず
+たけいち,よしゆき
+ひびの,ひろし
+こばやし,りょうへい
+わたなべ,ひろただ
+ふかだ,まさひろ
+いしたに,かずひさ
+いで,よしゆき
+にいさと,まさゆき
+すなはら,しょうじ
+しみず,まさお
+かとう,のりゆき
+ないとう,じゅんじ
+こいけ,とうすけ
+きたむら,とよひこ
+かがわ,としゆき
+いけだ,たかし
+かのう,たかし
+おかもと,そうじ
+こばやし,さだひろ
+いしい,まさひろ
+さえき,ますゆき
+さわだ,たかし
+ごとう,のぶゆき
+おの,まさひろ
+ふなおか,まさあき
+しんや,まさかず
+ほんざわ,ひかる
+やまうち,しげじ
+いしの,つとむ
+いおく,ひでとし
+あらき,ようこ
+ふじわき,みのる
+いちむら,まさき
+はやし,よしさだ
+もり,たくじ
+きむら,しげる
+ゆきふき,まさひさ
+はぎもと,いわお
+はしもと,ひでお
+きたやま,よしてる
+ふじもり,けんじ
+おくの,おさむ
+やまだ,みつお
+たご,たかし
+あさい,よしひろ
+もりの,ひろし
+みない,けいこ
+もりさわ,とよこ
+なりさわ,ふみこ
+もりもと,まさる
+こばやし,よしのり
+しまだ,ひでき
+すずき,みさこ
+ふくだ,けい
+あらい,あきのぶ
+たにやま,しゅういち
+おかもと,まつお
+だいもん,みのる
+はやし,よしなお
+いしだ,ふくお
+ひろさわ,よしみち
+よしおか,まさずみ
+まつもと,しんいち
+なかじま,さかえ
+きた,さなえ
+にしむら,しげかず
+はっとり,ひでお
+やまもと,かずお
+いとう,あきら
+きたむら,ますみ
+たなか,とみお
+いおき,とみやす
+かまた,こうじ
+しみず,ひろし
+ますおか,ひでお
+さわだ,しょうこ
+なかいし,たけゆき
+わたなべ,まさひろ
+よしざわ,あきお
+ささおか,のりあき
+やまぐち,としお
+いまふく,ただし
+かみや,とみえ
+わさ,ひでお
+きくち,あきひこ
+うかい,みきお
+いわま,せいいち
+つじ,ぶんじ
+たけだ,さだつぐ
+せとがわ,しげとし
+こしむら,まさし
+わたなべ,じゅんいち
+うさみ,みつのぶ
+おかだ,としひこ
+ふじわら,しょうじ
+かとう,やすゆき
+いしはら,まさる
+ひなた,きょうへい
+うえすぎ,しげひろ
+しばた,のぶかず
+おくだ,まさる
+すなやま,よしお
+いまい,あきひこ
+なかむら,のぶお
+なかもり,こうじ
+ふかさわ,むねひさ
+みずた,しんいち
+おの,かずし
+さいとう,ひろし
+しゅどう,みのる
+ふくい,たつひこ
+のだ,かなえ
+おおの,はるき
+こがみ,よしまさ
+みき,まさゆき
+いけだ,ふみお
+ふじもり,としひこ
+たかだ,かずお
+いけだ,のぶぞう
+いとう,のぶたか
+わたなべ,かずひろ
+さわだ,まさふみ
+まえじま,まこと
+いなむら,すすむ
+なかむら,ひろし
+なかじま,しのぶ
+いわま,よしゆき
+わかつき,ひでき
+はせがわ,よしろう
+いのうえ,たかし
+かさはら,こうじ
+にしやま,まさひろ
+すどう,じゅんいち
+おかべ,としひろ
+ふくば,けんじ
+まつなが,やすお
+さかい,ひろひこ
+ふじた,ゆきお
+なかやま,たかやす
+よねだ,けんぞう
+くまた,こういち
+こやま,ひろゆき
+よねやま,たけし
+ふじかわ,けんじ
+はりがや,ひろあき
+はせがわ,かずひと
+よしだ,ただし
+くすのき,よしふみ
+たかはし,さちこ
+ながた,しんじ
+そのくら,ひろし
+ますもと,よしお
+おぎはら,ひろし
+よしだ,まなぶ
+たなか,まさひこ
+えだ,せいいち
+なか,たもつ
+いいずか,のぼる
+てらにし,まさのぶ
+ふくい,せいじ
+でむら,かずひこ
+さえき,しげはる
+うちだ,ひでのり
+しいな,のぶお
+ふるや,よしはる
+ながくぼ,おさむ
+てらうち,ひであき
+おおたか,まさあき
+ふじよし,とおる
+さいとう,まさお
+くろさわ,ふさえ
+いしかわ,けんそう
+よしの,たかし
+こみや,かずよし
+やまがた,としお
+つや,かおる
+にしの,のりゆき
+うちだ,ひさお
+わたなべ,かずみち
+もりた,のぼる
+こしだ,こうぞう
+ひろせ,りょうへい
+よしむら,かつとし
+みうら,よしかず
+こいずみ,ひでのぶ
+てらお,みつひろ
+せがわ,みちお
+かいずか,あきら
+ふくます,すずよ
+いとうず,じ
+せきがみ,ひろし
+ふじ,いずみ
+よしむら,きよじ
+ふるもと,よしゆき
+たきた,まなぶ
+おかだ,ひろひさ
+たかはし,あきら
+たにふじ,まさあき
+いまおか,かずひろ
+わたなべ,けんじ
+やまもと,かおる
+よだ,やすお
+ふかやま,ひろし
+やまぐち,ひさお
+さの,きみ
+たかはし,ゆり
+まつもと,きよし
+やの,ひさし
+あきば,かずよし
+みどりかわ,ひろみつ
+たかし,みよこ
+ふるかわ,みのる
+ひきた,えいじ
+おざき,よしあき
+あおき,しげおみ
+さえぐさ,まさひろ
+ふじもと,ひろし
+こにし,ゆうじ
+おおにし,しゅんすけ
+ひぐち,ふじき
+くぼた,じゅんいち
+やまぐち,しろう
+ふるかわ,まさと
+なりた,いちろう
+たなか,ふさいち
+はたけやま,てつお
+みやもと,みさお
+のざき,やすはる
+はせがわ,ちょうしろう
+しらかわ,よしひこ
+あいだ,こうへい
+ひろかわ,ひろし
+りゅうかわ,つよむ
+やまぐち,ますみ
+くりさき,ひでお
+もりもと,よしみち
+くぼた,まさあき
+くまさこ,もりしげ
+あだち,けんた
+こんの,ひろあき
+やまもと,えつこ
+いわい,りょうた
+おおはら,ひでお
+いしはら,とものり
+あおき,たけし
+もり,よりこ
+ろっぽんぎ,まさあき
+かとう,こういち
+さとう,やすお
+まえぞの,えいじろう
+ふじもと,ひでのぶ
+たにむら,ひろし
+なかにし,ゆたか
+たかはし,しんじ
+なかい,かずみ
+たかはし,たけふみ
+しも,ゆういちろ
+しばた,いさむ
+ふるみち,よしお
+たけだ,あきら
+ふじた,ひろし
+かぎやま,てつや
+わち,まさのり
+ふじた,ひとし
+こんど,しげのり
+まつもと,たかし
+ふくい,ひでゆき
+すがわら,こうじょう
+ふかやま,あきら
+いまい,まさたか
+さとう,くにひこ
+かなざわ,かずお
+ふちざき,おさむ
+つかだ,しょういち
+いしざき,たかゆき
+とくら,みきお
+とのさき,もとよし
+たかき,ひでお
+ふじた,ひろゆき
+ながせ,れいこ
+たなか,ひろゆき
+たつみ,よしあき
+やまもと,ゆういち
+ふくた,たかなお
+くわはら,よしゆき
+ふじた,えいぞう
+いなくま,としこ
+みさお,こうぞう
+なかした,まこと
+おくやま,ゆうじ
+ながえ,かずひろ
+ながい,しょうご
+やまざき,まさる
+しらいし,しょういち
+うえだ,しげる
+おじま,ひろあき
+ひろせ,まさのぶ
+ひらの,まさる
+ふるた,たかお
+こぬま,かおる
+たかやま,ともはる
+あさした,まさふみ
+よつはし,ひろし
+つちや,たかみ
+おおにし,いさお
+やまぐち,しょうじ
+しずの,いさむ
+はしべ,りょういち
+ほりい,みよし
+ながおか,のりこ
+くりた,しょうへい
+きば,さなえ
+いだ,まちこ
+ふくとみ,かずみ
+こばやし,のぼる
+いり,けんいち
+さた,ますぐ
+まるやま,ひろふみ
+あおやま,しげる
+しんどう,やすお
+あいかわ,きょうじ
+さかのうえ,けんいち
+ふじまき,ただあき
+かわはら,まこと
+むらた,ひでゆき
+よしだ,ゆういち
+いたくら,てつや
+じぞばら,よう
+たなか,としお
+かじわら,しゅういち
+たなか,おさむ
+はすいけ,しゅうじ
+とうま,ゆみこ
+かわきた,あきら
+まつもと,やすひこ
+はせがわ,みつお
+ふじい,とおる
+のむら,みちたか
+ようこた,ひでお
+かなざわ,こうぞう
+ますやま,しんいち
+かのう,ひろし
+ふなやま,えつお
+やました,きちひこ
+さとう,まさかず
+かめもと,よしふみ
+いとう,きよし
+おくむら,しげお
+ふじい,てるお
+きはら,たかし
+のむら,りさく
+あくたがわ,つとむ
+いしだ,くにお
+うめはら,しげる
+おおぎ,なおゆき
+こんど,はるお
+たけだ,けいこ
+まつい,ふみえい
+かみおか,まさる
+かもした,ひろみ
+やなぎさわ,たけひろ
+たけうち,まもる
+もんま,みのる
+いいだ,かなえ
+はせがわ,としじ
+ながほり,ひろし
+もりおか,ただのり
+にしやま,あきお
+やまもと,やすお
+いしだ,としお
+ふるど,まさお
+かんだ,まさあき
+いしだ,しげる
+さいとう,たかひろ
+きむら,ひとし
+いわみ,やすのぶ
+もり,しゅういち
+たかやま,しょうぞう
+はやしぐち,あきひこ
+さいとう,やすお
+しばたき,くにあき
+おぎはら,よしはる
+かとう,いさみ
+ふくと,なおや
+おだ,ひであき
+さとう,まさひろ
+なかむら,ゆたか
+はまだ,たかひろ
+おがさわら,てつや
+むらき,かずひこ
+おおはし,あきひと
+たかの,たかし
+なかざわ,かずとし
+みやじ,あきひろ
+すえなが,やすお
+たたき,あきら
+よしだ,いわお
+あおき,ひでし
+すぎむら,かおる
+いとう,まさとし
+たかはし,しんいち
+すずき,いさむ
+かたやま,としひこ
+さいとう,まさし
+たじま,ひろし
+あべ,よういちろう
+なかじま,しげき
+やまぐち,まこと
+わきざか,まさひこ
+さこ,さだと
+おおつか,ともひろ
+つかもと,すすむ
+いのうえ,ふみお
+ながお,とおる
+うらば,まさお
+こじま,やすひろ
+たけだ,ゆうじ
+あおの,じんいち
+いずかわ,のぶお
+くどう,かずあき
+なかむら,としゆき
+まつお,まさふみ
+いながき,しんいち
+にしもと,しょういち
+いのうえ,ひとし
+おのでら,てつや
+いしざか,としひこ
+はぎわら,けんぞう
+ふるた,まさる
+うえじま,とみお
+ぬまた,しゅういち
+えんど,まさひろ
+かがやま,しんや
+ゆりもと,ひとし
+ふち,ただお
+ふじおき,ひろのぶ
+さいとう,まさとし
+まつもと,みつあき
+ひろせ,よしかつ
+ばば,じゅんいちろ
+こばやし,ひろゆき
+すずき,まさみ
+なかやま,かずお
+きし,ひろし
+あさの,まさかず
+えんど,あきお
+いしばし,だいご
+かいだ,みつお
+いけじま,ひであき
+はらだ,としお
+はまの,このむ
+かわい,みちる
+わだ,としまさ
+さとう,ひろし
+たなか,せいじ
+あくつ,よしのり
+いとう,きよみ
+あんどう,いわじ
+あいざわ,ふとし
+くぼた,きよし
+ふかうみ,さとし
+しみず,ひとし
+たかはし,さとし
+なみき,てつろう
+のざわ,やすし
+こいたばし,きよひろ
+たていし,ひろみ
+かわかみ,かずお
+こばやし,かずのり
+おのずか,ひでお
+たぐち,みつぐ
+たかはし,まさあき
+さとう,やすひろ
+くわはら,しろう
+せと,さとし
+ごけ,ひでき
+よしむら,きよし
+たかやま,のぶゆき
+ささき,ゆきお
+かのう,しげき
+たかはし,しげはる
+ながおか,ともゆき
+すずき,ひでき
+やまぐち,あきら
+もり,さとる
+すずき,いつお
+うえむら,まさとし
+やぶはら,みつよし
+しらいし,かずき
+きくた,まさのぶ
+なかい,みつのり
+くらもと,ゆたか
+すみよし,ひでお
+たかぎ,ひろひさ
+しょうじ,のりお
+おさだ,まさゆき
+あさの,さとし
+いわさ,きよし
+ばば,ゆたか
+ひろた,さとる
+ふじもと,みさこ
+さの,まさる
+もとき,やすゆき
+いとう,まさのり
+うけがわ,ふみお
+うめばやし,いさお
+いなとみ,かずよし
+たかやなぎ,まさあき
+はら,いさお
+なかはら,ぶんろう
+さいたけ,せいじ
+かしやま,ひろし
+さかい,ともゆき
+いとう,のりかつ
+なかむら,よしのぶ
+おおのぎ,たけし
+いかみ,ゆたか
+たかはし,しんいち
+しいな,とみお
+たまのい,しょういち
+くぼ,ひであき
+きむら,たかし
+ほった,ひとし
+ほかり,たかゆき
+さとう,あきお
+ほしの,しゅういち
+かぶらぎ,としひろ
+おさだ,としふみ
+すえひろ,たかお
+むらかわ,よしみ
+いわさき,けんじ
+やまむら,しんじ
+もりた,たつお
+いけだ,よしのり
+やうち,ひろし
+やました,かずひで
+わたなべ,ひろし
+あなん,えつじ
+にしの,たつろう
+こしみず,やすお
+たかはし,かずお
+えがわ,としお
+やまざき,たつひろ
+いまぜき,よしふゆ
+すずき,ひでき
+にしはら,ゆういち
+おかべ,いさむ
+さかい,まさひろ
+ただ,としお
+すえよし,みきお
+はやし,いたる
+たかはし,けんじ
+こあし,はじめ
+もりかわ,えいし
+かとう,やすくに
+まえば,まさひろ
+やの,たつお
+いとう,よしはる
+なかい,ひろし
+おだぎり,かずお
+えんど,てつお
+たけい,やすゆき
+なかたに,みちのり
+いわさき,ともひろ
+からかさ,あきひろ
+あさの,けんいち
+いわぶち,まさる
+はんだ,とおる
+てらお,よしゆき
+たけい,よしもと
+はしもと,よしみ
+みやさか,つとむ
+てらだ,いちろう
+さかた,やすゆき
+ながや,かつみ
+はしもと,けんじ
+おおくら,つとむ
+なかさき,みつぐ
+きりはら,としゆき
+あらい,しゅんじ
+いわの,ひろゆき
+はっとり,ひろのり
+すずき,とおる
+にしはら,ひろし
+ささき,しずお
+はなふさ,つとむ
+のどの,たつゆき
+かわばた,くにお
+しみず,よしなお
+ながしま,つぐひこ
+もり,かずお
+しみず,しげあき
+ひさやす,けいぞう
+かたうら,しげゆき
+たけむら,あきみつ
+いまにし,まさと
+おかだ,あきひこ
+なかえ,おさむ
+しろの,じゅんいち
+よこやま,のぶお
+おかざわ,まさひこ
+かみ,のりとし
+くまべ,まさお
+しみず,たつろう
+やなぎさわ,しょういち
+まきの,ゆうじ
+さわ,わたる
+うしろだ,くにお
+まちだ,つかさ
+こばやし,たかお
+しげむら,としはる
+ひぐち,たかし
+いいぬま,まさゆき
+いずみ,みのる
+はやし,ひろとし
+やぎ,ちはる
+おおかわら,きよたけ
+ふくおじ,おさむ
+うがじん,まさみ
+たなべ,しん
+ごしま,まさひで
+あんどう,ひろし
+おだま,ゆきお
+おかざき,いわお
+いしかわ,ふみゆき
+むらやま,まさこ
+はやさか,けいじ
+なかじま,たく
+たけもと,よしみ
+きたじま,じゅんこ
+みかみ,なみ
+わらしな,じゅんや
+きむら,しん
+おざわ,よしかず
+やまむら,ひとし
+よしだ,しげき
+たちばな,たくろう
+まつもと,のりのすけ
+みしま,ひであき
+せき,ひろし
+たかはし,やすひさ
+おおいけ,まさし
+ふじもと,しゅうじ
+よしむら,のぶひこ
+こばやし,めいじ
+おおがみ,よしゆき
+かい,しょうたろう
+かえつ,まさはる
+もろい,たかひろ
+みずの,いくお
+おおつか,あきひこ
+おおた,かおる
+せきね,りゅうじ
+みやぐち,かずたか
+よねだ,なほこ
+ほりうち,まさこ
+えぐち,かつみ
+うしろまつ,かずみ
+いいだ,ゆきひろ
+よしだ,よしみ
+なかせ,あきお
+すずき,ゆうこ
+おいかわ,えいこ
+かわべ,さつこ
+たにざわ,たかお
+かねこ,はるよ
+ふじおか,けいこ
+むらおか,つよし
+うぬま,けいこ
+みやけ,ふきこ
+なかむら,ちあき
+おおわ,まさはる
+ねもと,いちろう
+にしむら,ともひさ
+たつみ,いわお
+さとう,あきお
+すのはら,としひこ
+あすま,きよかず
+たかば,のぶあき
+よしむら,さとし
+あべ,なおと
+きくち,けいじ
+なかむら,かずまさ
+はむら,つとむ
+すずき,のぶひと
+かわむら,としや
+ひびの,ひさえ
+きただ,まさひろ
+さとう,つねお
+かとう,かずお
+いとう,ゆうじ
+ふくとみ,まさる
+むろずみ,まさひろ
+やまなか,じゅんいち
+おかだ,けんいち
+とうごう,たけし
+なりた,たかし
+いけざき,たけし
+かわばた,しろう
+まつおか,のぶお
+なかだ,ひろし
+さとう,しんや
+たけざわ,よしひろ
+やながわ,ひろし
+やまさき,のりゆき
+しがき,のりあき
+ゆみ,たけし
+おざき,つとむ
+ながしま,たいすけ
+やぶうち,ひさお
+ほそや,ひさし
+にしざわ,そうじ
+はやみ,よしお
+はせがわ,なおみ
+かわさき,かつひこ
+とよいずみ,たかゆき
+おくむら,まさと
+やまだ,のぶひろ
+にわ,えいひこ
+にしざき,ひろし
+すぎもと,しげる
+おおさわ,ともなお
+とだ,としあき
+なかの,よしかつ
+みうら,ひさし
+やまざき,なおゆき
+さかもと,ひらく
+やまだ,みちこ
+いのうえ,かよこ
+やすい,まさよ
+まつだ,ゆみ
+かたおか,あけみ
+すずき,けいこ
+はやし,けいこ
+はままつ,やすこ
+はまの,えり
+みずたに,みよこ
+すみた,もとちか
+はやし,まきこ
+とくなが,ゆみこ
+かとう,のぶこ
+まつうら,みえこ
+ひゃくな,ひでこ
+あんざい,ようこ
+ふかまち,すみお
+みさき,たけし
+もちずき,とよひこ
+あおやぎ,あきら
+たかはし,ゆきひで
+きせ,あきら
+うえもり,しげる
+あずま,みえこ
+おだくら,ひろみち
+たなか,ひさお
+といたに,かつろう
+やまざき,けんいち
+はしもと,たかし
+まつみや,まさひこ
+ふしみ,ちかと
+きょうやま,てるお
+よしだ,けいこ
+うるしど,あつこ
+せお,みえこ
+みなかわ,つきこ
+ふじの,かずゆき
+ひろた,たかし
+おおた,よしみ
+おおが,まさのり
+ながはま,たつお
+じんの,やすき
+いちかわ,はじめ
+はやし,ただし
+はたや,としゆき
+ほりこし,のぶひこ
+かに,あきお
+ほんだ,もとひさ
+つちや,とみお
+たまて,みつる
+ゆかわ,えいじ
+さかい,ゆうじ
+みやじ,ゆういち
+たむら,ひとし
+かわぐち,ひでまる
+さの,まさかず
+なかむら,ゆういち
+こばやし,ゆきお
+いだ,いちろう
+せきもと,よしひろ
+かわまた,かずお
+くぼ,ひろし
+たかの,やすひろ
+わたなべ,やよい
+いかるぎ,みのる
+さとう,ただし
+ひだか,よしひこ
+よしい,こうぞう
+しまむら,えいろ
+おび,としお
+なかじま,とくのぶ
+ほしの,のぼる
+かわもと,じゅんじ
+にしだ,やすひで
+しみず,まさあき
+たむら,じゅん
+とよしま,よしみつ
+えんど,たかお
+おがわ,なつあき
+きたはら,ふみお
+おぐに,けんじ
+おぶち,けいぞう
+みよし,かずお
+いけの,しんいち
+うえまつ,かつあき
+ふくざと,りゅういち
+あおき,たかし
+さめじま,さちお
+きどま,けんじ
+こだいら,きくお
+ひぐち,たつお
+まえしろ,かずひろ
+たなか,せいじ
+なかがわ,ようすけ
+いのうえ,やすひで
+とりう,まさあき
+まるやま,なおき
+まつうら,けんじ
+ためちか,かおる
+ささき,きょうこ
+おおたき,しんすけ
+おがわ,まこと
+まつみ,ますえ
+ありまつ,しげお
+こらく,ゆうぞう
+みやした,みのる
+おずち,みつお
+さかきばら,たかこ
+さとう,あきら
+ひろせ,ともこ
+つちだ,としあき
+はしら,ちよ
+ふろもと,みのる
+こさか,あきひろ
+たけいち,よういち
+てらだ,よしかず
+こいで,ひでき
+さいとう,しょういち
+みやなが,のりひこ
+にしむら,しんや
+たなか,ゆうぞう
+,ゆみこ
+ゆくひろ,れいこ
+よしわら,じゅん
+あおき,るみこ
+たていし,ゆりこ
+たけだ,とみこ
+やすだ,ふじこ
+あおき,ひでゆき
+よしだ,なおこ
+あだち,あきこ
+のぐち,よしのぶ
+わたなべ,しげゆき
+たけとみ,こういち
+くりわき,まさき
+きたずめ,もとひこ
+おさだ,としお
+あしがい,よしたか
+さかした,きよし
+つちだ,しゅんいち
+おかだ,みちお
+たなか,ひでちか
+おおたごし,こうぞう
+くろさか,えいじ
+すざき,あつし
+かねみつ,ひろゆき
+まと,かずゆき
+とよふく,まさお
+あらい,ひろかず
+ふじかわ,のぶあき
+よこお,たかよし
+あまの,はるお
+おおの,たかふみ
+すずき,あきよし
+かとう,まさゆき
+さいとう,みつお
+おう,かつみ
+みやざき,いさお
+きや,ふみたま
+ふじた,かずひこ
+むかい,よういち
+まつもと,かおる
+かわい,ゆきお
+まつもと,きよたか
+たけうち,りょうじ
+こじま,ひでお
+はせがわ,たつお
+こが,やすお
+やまだ,こういち
+おおた,みのる
+やまもと,しんすけ
+さくらもと,ふじと
+やなぎさわ,くにお
+ふくい,こうじ
+かとう,かずみ
+いわた,やすゆき
+ふじもと,ただふさ
+きのした,あきひこ
+やまだ,じろう
+くらまえ,こうじ
+くらた,たかし
+よこい,ふみとし
+こばやし,ひでや
+かとう,もりよし
+ますい,ひとし
+うらた,てるあき
+たかはし,まさひろ
+うしごめ,まさたか
+はらい,しんじ
+うだがわ,としろう
+たかぎ,かずゆき
+みやざき,さとみ
+やまむら,まさひろ
+やまぎし,りゅういち
+こまつ,よしたか
+はまぐち,ゆか
+もり,ひろかず
+やまだ,やすのり
+かがわ,みちお
+きくち,ふみき
+くじ,やすし
+いとう,ひさあき
+かわぐち,よしかず
+あらき,しんすけ
+おかべ,ひろみ
+こぼり,しんいち
+おち,おさむ
+まるお,はじめ
+さとう,しゅんすけ
+たなか,ひでのり
+まつやま,としお
+おおつか,くにお
+やまもと,けんじ
+ふじお,みつえ
+のむら,ひさたか
+ひろせ,のりよし
+あんざい,しげのり
+おおつぼ,みちろ
+さいとう,りゅうじ
+いとう,さとし
+わらさわ,きくお
+あらかわ,やすなり
+ごみ,じゅん
+えんど,さちお
+よしだ,まさはる
+うちだ,ひでお
+あさいね,てつや
+おしま,しげお
+たなか,たつお
+おおこ,まさろう
+いずつ,なおる
+はやし,まさゆき
+ふじき,とおる
+しおかい,かずひこ
+ながふち,きよつぐ
+まつもと,たいいち
+かとう,ひろし
+わたなべ,けいじ
+はまぐち,りゅういち
+かねこ,ゆたか
+さとう,としお
+おおい,まさき
+はやし,せいじ
+きみつか,まさお
+ふくだ,まもる
+なかむら,ただし
+やばし,けんじ
+こばやし,たかゆき
+とくだ,ともかず
+たかはし,かつひろ
+いとう,みつお
+のぐち,よういちろう
+かわな,のりお
+なかの,つやこ
+やまだ,まさこ
+ひらまつ,そうたろう
+あらい,としゆき
+よしの,かおり
+はまだ,かずお
+おおた,としひこ
+しばた,ますあき
+わかやま,あきひろ
+ほし,きよし
+みわ,まさお
+たなか,ゆうじ
+かなや,のりひこ
+たけなか,じん
+さとう,としゆき
+みずしま,とよういち
+てらだ,しげる
+もりや,ただゆき
+すぎやま,もとはる
+うみ,はるお
+きぐち,よういちろう
+うるわし,たけし
+ひらまつ,みちおき
+いずは,はるお
+いとう,まこと
+さとう,ますお
+しげのぶ,けんじ
+よしもと,かずお
+しばた,つよし
+ふなこし,いちぞう
+すなだ,やすじろう
+,やすお
+きくま,なおひこ
+すと,さとし
+にしざわ,ひでお
+こばやし,みつこ
+かわごえ,まさひこ
+いじま,ふみお
+にしお,ひろし
+にしやま,のぶゆき
+さいとう,よしあき
+かどわき,ひろみ
+ひろせ,たかお
+たぐち,たかよし
+たかだ,としはる
+わたなべ,けんじ
+かとう,しげあき
+なかはら,くにお
+いしくぼ,りゅういち
+やまだ,よしお
+わかまつ,こうじ
+かわしま,ひろゆき
+かたもと,けんじ
+たかやま,きみひこ
+つちだ,たつし
+たちばな,ひでお
+こばやし,あきら
+つだ,としゆき
+もりかわ,ゆきお
+おくの,よしお
+いまい,まもる
+むらお,ただし
+しもむら,じろう
+えんど,としのぶ
+ほしくま,まさはる
+かわせ,しんさく
+まちだ,むねし
+こばやし,たつお
+はだ,ひろし
+つくだ,まさはる
+にしかわ,しょう
+ほんだ,ひろみ
+わしおか,としひろ
+むろい,よう
+やすだ,まさし
+よしだ,ひろゆき
+ほり,あつこ
+こうだ,こうえい
+かまだ,えいじ
+うえむら,ひろみ
+まつばら,かずや
+みなとぐち,しげる
+くがてん,やすし
+いわせ,のぶひろ
+はやし,みつひろ
+いくなみ,しんじ
+いとう,たかし
+こやま,ひろみち
+おとまる,よしひと
+ながい,もとはる
+いとう,まこと
+いまい,たつる
+ますだ,たかひろ
+かわべ,りょうた
+さとう,けいじ
+さこ,まさはる
+むかい,じゅんいち
+おしま,くすたか
+つちや,いずみ
+はやしぐち,としあき
+さとう,せいいち
+むらさと,ゆきひこ
+はるやま,まさお
+しげもり,しゅんいち
+ふなき,ひさお
+わだ,いくと
+つぼか,しんすけ
+とだ,じゅんいちろ
+やまむら,ただあき
+いしぐろ,しんいち
+ふなはし,ゆき
+すずき,よしお
+よしだ,きみひろ
+わたなべ,つぎお
+なかにし,たかみつ
+やまもと,じゅんじ
+いしかわ,まさゆき
+たけうち,こういち
+おくの,さとし
+だて,じゅん
+たべ,まさとし
+やぎ,りょういち
+よしだ,かずお
+ふるた,たかゆき
+かわぐち,りゅうたろう
+はすこ,よしのり
+ながみね,しゅんじ
+たけした,さとし
+あかお,かずゆき
+わきもと,たかし
+たさか,けんじ
+なかしま,やすよし
+たけなか,ひろあき
+やました,なおひこ
+くぼえ,てるお
+おぐし,しょういち
+あさか,しげとし
+えぐち,ひろよし
+おおさき,まこと
+おくだ,かずお
+おくむら,かずろ
+かなまる,よしひこ
+きのした,おさむ
+ささき,きよひで
+たかの,たつお
+はしだ,しげる
+ほし,ゆうすけ
+みずの,かつひこ
+みつはし,たつや
+もとはし,まさし
+やまだ,てつじ
+ながの,まさゆき
+いしい,ゆきひろ
+かめだ,かおる
+きはた,たけひで
+こばやし,おさむ
+しらふね,たかよし
+なつはら,ひろあき
+にしはら,やすひさ
+はしば,たくお
+ひしぬま,ひろふみ
+ひびや,しんたろう
+みや,ひではる
+むらかみ,ふみお
+むらた,はじめ
+わたなべ,しょういち
+おおにし,ひろあき
+たけした,ひろし
+つばきもと,やすし
+はまおか,たけお
+みずの,とよたか
+あべ,ひろみ
+あらいし,まさみ
+さとう,まさあき
+さわの,せいざぶろう
+しもじょう,ただみ
+たかだ,かずひで
+ながた,やすひろ
+にしはた,まさふみ
+はやし,そういち
+ほそかわ,あきら
+あおき,みきとし
+よしだ,ひろとし
+わたなべ,たかお
+いわさわ,たかはる
+のせ,すえお
+ひらした,ひろやす
+よしざわ,ひでお
+むとう,けいぞう
+みわうら,ひであき
+きくち,はじめ
+えぞえ,ひろみ
+いしかわ,たけし
+いちかわ,たかし
+はらだ,よしたか
+むらた,よしと
+いとう,みきお
+ほしな,けいや
+とくだ,のりお
+たぐり,かずよし
+ささき,ともゆき
+たまる,はるお
+にしはし,しげお
+じつかわ,かずひこ
+すずき,さいち
+おおにし,きみこ
+ながさき,ゆうこ
+いいだ,ひでみ
+たかの,まさひろ
+ひさの,としつぐ
+いのうえ,ひでき
+いしくら,まさゆき
+あきやま,こうじ
+いちかわ,せんり
+きがわ,こういち
+さいとう,ひろゆき
+よだ,みきお
+あらき,ゆうじ
+すぎはら,ひでひさ
+かわぐち,ていじ
+みや,まさひこ
+いけお,ひろゆき
+さくらい,ふじお
+こしの,ようすけ
+きくかわ,かずお
+ゆあさ,たかし
+すずき,ゆうじ
+ますだ,しんたろう
+あらい,やすお
+いけだ,としお
+きす,あきら
+うしやま,れい
+かまた,えつし
+うさみ,きよし
+なかの,たけし
+かきかわ,じゅんいち
+きじま,ひろゆき
+むかい,まさよし
+ながやま,まさこ
+はっとり,まさお
+みしま,つよし
+ごとう,くにとし
+いとう,ひろゆき
+おがた,かよこ
+くさば,はるゆき
+てらえ,ひさと
+ほんだ,のりお
+あくたがわ,みのる
+みやこし,やすえ
+ふくしま,けいすけ
+しのずか,ともこ
+おおたき,しょうじ
+ながまつ,せいいちろう
+あらい,まさる
+まつだ,さちよ
+ふじた,あつみ
+かみぐち,ひろあき
+かとう,ひとし
+やまざき,たけのり
+うめたに,あつこ
+なるせ,じゅんこ
+くぼ,くにお
+くらた,ひろゆき
+こんど,てるお
+たけうち,みきや
+いのうえ,のりお
+たかだ,よしかず
+あくつ,かつゆき
+とりい,ひろみ
+もりおか,ゆみこ
+かくたに,まなぶ
+たけいち,ちえこ
+たい,けいこ
+つちや,まさふみ
+ますだ,まさたか
+かんだ,ひさお
+やまうら,やすよし
+きのした,しげみつ
+ほさか,くにお
+まるおか,ひでゆき
+かまた,ひろし
+はたなか,まさみ
+くろは,ようこ
+とつか,ようこ
+いしい,ふよ
+もりた,まち
+ほんま,しげる
+あらかき,よしとも
+たけ,たけひこ
+いずはら,なおかず
+ひさとみ,たろう
+すずき,よしひろ
+にしなか,ひさのり
+みずの,こうぞう
+もりむら,あきら
+たかはし,としかず
+しげとめ,よしあき
+さとう,ゆうじ
+まえかわ,まさみ
+よしい,としのり
+ほそや,ひでひこ
+さかもと,かずお
+こいずみ,しげみ
+にし,やすふみ
+かねこ,あきら
+すみくら,しょうへい
+よこお,たかお
+ささき,かずお
+はやし,あきら
+たなか,きよし
+あきやま,とみお
+さいす,よしかず
+のがみ,せいじ
+とよしま,しゅういちろう
+しん,たかし
+ふきの,もりよし
+いけだ,かずきち
+おだわら,りつ
+たかはし,としかつ
+けいま,じゅん
+しみず,こうじ
+いまいずみ,ともじ
+もりた,ゆみこ
+もり,やすみ
+まえかわ,やすかず
+やなぎだ,すすむ
+むらもと,ひろし
+すずき,ひろし
+ほそえ,まさひこ
+いしくら,せいじ
+ひろかわ,ゆうじ
+からしま,たかし
+まちだ,しんいち
+もりやま,ひさのり
+たけむら,てつぞう
+つかもと,あきふみ
+やまぐち,ひろひと
+そめや,あきお
+なかごめ,ひでお
+いわなが,けいすけ
+せきや,けんじ
+てらい,かずひろ
+たなか,ひでお
+せきや,じゅんろう
+さくらい,えみこ
+いそべ,まつたろう
+まつおか,たかひこ
+いち,まさのり
+やまもと,しろう
+でぐち,たかとし
+ひらまつ,よしお
+みずの,いさむ
+とみなが,まさひろ
+たかしま,ひとし
+のがみ,ひろし
+おおつ,ひろふみ
+こばやし,けんいち
+てらだ,としかず
+さいとう,たつや
+あさの,たかや
+しもむら,のりとし
+おおいし,のりよし
+たなか,つねお
+まつもと,きよし
+ひらまつ,しげる
+たけうち,みのる
+しげはら,てるまさ
+おかもと,はじめ
+むらやま,もとこ
+こまつばら,しずお
+えばた,けんじ
+おおた,ごろう
+てらお,ひろゆき
+おおさわ,まさる
+かわしま,たつみ
+あらい,まさし
+はしずめ,あきら
+みずしま,こうじ
+ひらまつ,えつお
+おくむら,よしこ
+みずなか,こうし
+ほりうち,しゅういち
+たきもと,としお
+やすば,こうじ
+きたの,もとのぶ
+にしだ,ゆきお
+いしかわ,としみ
+おおば,ひさお
+かしわぎ,かずゆき
+さとう,おさむ
+まつだ,あきお
+こむろ,なおき
+むらた,ひでゆき
+ささがわ,かずお
+さたけ,はるとし
+くわの,ひさお
+ごとう,かつみ
+ふじい,しんいち
+みずこし,けんいち
+ふじまき,かずや
+いでた,ひとし
+なかつか,たかし
+うんの,たけみ
+すずき,かずひろ
+はま,ひろし
+とみた,たかお
+たにつ,ゆうご
+すずき,まさみち
+おくむら,ちよじ
+ふくしま,かずひこ
+おおはし,ひかる
+やました,たかお
+かわみ,せいいち
+はるた,けんいちろ
+みやもと,ひろし
+つじた,ゆうこ
+いまむら,まさお
+さとう,さぶろう
+なかじま,ゆきこ
+しいの,しげお
+ごとう,みのる
+かとう,もとはる
+ながい,ちえこ
+うちの,あつし
+えいじま,おさむ
+やまなか,こうじ
+なかむら,のぶお
+すずき,やすゆき
+せむら,りゅういち
+なかがわ,かつひろ
+たや,たかし
+むらかみ,ひろのり
+いしかわ,こういち
+せきぐち,しょういちろう
+おおの,よしゆき
+おいかわ,としや
+いわい,くにやす
+あさひ,けんじ
+ごとう,かおる
+かねたけ,かなめ
+うえまつ,としのり
+ふくしま,ひろじ
+ふくだ,たかゆき
+すずき,きょうこ
+おぐら,ゆきひこ
+ひらで,のぶかず
+おしげ,たいち
+まつもと,えりこ
+ささき,えつお
+ごんだ,まさる
+まつおか,せいじ
+うめざわ,まさつぐ
+にしお,かずなり
+こじま,ゆうぞう
+たにぐち,よしつぐ
+おおぎす,ひろし
+さだひさ,こういち
+ふじわら,もりお
+はっとり,なおゆき
+かまた,としお
+とば,まこと
+やまだ,ただひろ
+やまもと,みきお
+たけうち,たけし
+あらき,ひでふみ
+にしお,せつこ
+もりうち,さなえ
+いわた,ひであき
+ささき,まさろう
+まえがわ,やすつぐ
+ふくにし,かずのぶ
+うえだ,ともよ
+やまぎし,まこと
+おの,けんじ
+ふじた,ふくきち
+きたむら,よしみつ
+よしはら,ゆりこ
+いわさわ,たくみ
+こまつ,たつよし
+たにむら,ひろあき
+こさか,ひさたけ
+たしま,まさゆき
+にしおか,かつゆき
+すずき,としお
+ごとう,やすひら
+かわはら,じゅんいち
+たじま,しょうじ
+かんの,あきお
+かたしま,しんや
+はしもと,みすず
+なかだ,ひろし
+かさはら,せいいち
+てらもと,たかあき
+わかまつ,まなみ
+いとう,としつぐ
+わだ,ひでみ
+たんじ,ひろあき
+おおつか,めぐみ
+つじもと,けいいち
+せりざわ,のぶはる
+とのさき,ふみえ
+たかぎ,みちこ
+おふち,かつなり
+あまの,みちお
+なかむら,あきら
+たばた,ゆうじ
+とよずみ,まさあき
+しゅくや,よしろう
+たかの,しんいち
+むらかみ,ひとし
+いしずか,のぶよし
+いいずか,としひこ
+しらい,あきら
+ふくはら,すえはる
+いながき,てつお
+ひらしま,ひとし
+つじばやし,あつし
+まつお,まさみ
+やまもと,まなぶ
+もりの,たかお
+たじま,としお
+のざき,じゅん
+あだち,のぶたか
+たかや,たかし
+おの,まさお
+まつもと,かつあき
+はしもと,かずひで
+かの,やすし
+たけだ,ふみこ
+きりはら,けいこ
+たなか,やすひこ
+とりい,あきのぶ
+なかしま,まさお
+せすみ,じゅん
+まえのその,かずなり
+ごとう,しんじ
+ほり,ゆきよし
+たかいら,きょういち
+たにだ,あきひろ
+ふるどい,しゅういちろう
+おおぎや,まさなお
+なかじま,のぶよし
+ほりかわ,かずひろ
+すずき,まこと
+あおき,のぶゆき
+おくはた,まさひろ
+くわばら,ゆうすけ
+かんだ,ひろみつ
+すぎもと,りょう
+やまもと,ひであき
+かねこ,まさる
+なりた,もとゆき
+にしお,たけひろ
+いかり,はるお
+ふるかわ,けんいち
+あらい,せいじ
+くずかみ,ひろし
+ごとう,しゅういち
+やまはら,ますみ
+やまだ,しげる
+いじ,としろう
+くらもち,みきお
+ふじわら,ひですぎ
+たけだ,さとし
+たかのせ,えつお
+ともむら,しげふみ
+さとう,はじめ
+さかきばら,まさゆき
+みやざき,ゆうじ
+よしだ,しゅういち
+たなか,よしひこ
+ごとう,みちお
+にしだ,けいいち
+なかしま,みつひろ
+きむら,しげゆき
+いのうえ,まさとし
+おしま,たけし
+おおや,まもる
+みやもと,まさのり
+やました,おさむ
+たなか,ますみ
+もり,あつし
+なるみ,おさむ
+ごとう,だいじろう
+やまちか,あきら
+ささき,まさひと
+きしだ,みちお
+おおやま,ようすけ
+しいの,かつや
+いずみさわ,よしとも
+かみむら,だいち
+さかい,けんいち
+ごとう,かずお
+かとう,きいちろう
+たかはし,こうじ
+くの,たつひこ
+いわぶち,まさつぐ
+ほんぶ,まさふみ
+もりた,じゅん
+せきや,こ
+ぬまた,かずや
+ごとう,めいさい
+まなべ,まさる
+いまきた,しょうじ
+こだか,けんじ
+よしだ,たけひさ
+さとう,たけし
+くすみ,かずゆき
+はぎわら,としかず
+ふるせ,てるひこ
+むらた,しょうこ
+おくむら,まさひこ
+たにがみ,たいち
+なかむら,しんじ
+こいずみ,まさひこ
+すどう,ひろし
+いで,てつや
+しもの,かずひろ
+たかぎ,よしあき
+さかい,あつし
+いのうえ,かずお
+ふるた,みちのぶ
+あさい,きよし
+ふかさわ,くにひこ
+ごかいち,こうじ
+おおつか,やすのり
+さとう,さとし
+いのうえ,しげる
+たけだ,まさゆき
+ますだ,よしひこ
+やまもと,のぼる
+おおはら,まなぶ
+ふなつ,かずひこ
+こやま,じゅんぞう
+やまざき,としひろ
+たじり,みねはる
+さとう,つよし
+ながしま,じろう
+つだ,たかし
+ながお,ともみ
+おおすぎ,ひろゆき
+いとう,ともなり
+たまい,ゆたか
+みやした,よういちろう
+みしま,よしひろ
+ほりい,なおあき
+ごとう,まこと
+やお,じゅんいち
+ひじや,たつや
+ほりい,ひでじ
+たけだ,たかよし
+やすなが,かつみ
+やまざき,ひでひと
+やの,あきら
+しわく,みのる
+かみの,あきら
+なかじま,たいじろう
+ますだ,くにひこ
+おふち,じろう
+ふくざき,れいこ
+いたがき,しげき
+しも,ちえ
+ふくい,のぶあき
+いび,じんいち
+こむかい,きよみ
+ふじえ,のぶゆき
+まつき,かずひこ
+こばやし,かずよし
+ごうち,かずとし
+はせがわ,けん
+かわごえ,ともふみ
+ながさわ,たいせい
+やました,さかえ
+いしざき,しんいちろう
+おだ,みちひろ
+しんどう,たかあき
+しもさこ,はるひさ
+つつみ,きよし
+きたおか,かずひこ
+きたざわ,こうじ
+なかおか,えいじ
+いしばし,みゆき
+はしぐち,みわこ
+わたなべ,あきひろ
+おおば,かなめ
+はら,かずや
+しみず,こみな
+いざわ,よしひこ
+よしやま,あきら
+すぎもと,ひろゆき
+こまつ,こういち
+へんみ,こうぞう
+ふかだ,のりふみ
+こばやし,よしひさ
+すぎもと,けんじ
+よこやま,つとむ
+たなか,のりひこ
+みやたに,さとる
+はせがわ,あつし
+きたがわ,たかあき
+ふくおか,ひろゆき
+おむら,さとる
+いぐち,まこと
+はやし,まりこ
+ひらい,かえこ
+おおもり,れいこ
+おぎの,いちろう
+たむら,みつお
+たけだ,ひであき
+みやなが,こういちろう
+ひらい,のりまさ
+にしむら,ひろゆき
+はぶち,ひでかず
+おおくら,よしあき
+はった,えいじ
+いこま,ひろゆき
+あさひな,たかし
+かのう,しんご
+なかにし,しゅうじ
+みやざき,ひろむ
+いちかど,とよあき
+ながさわ,あきのぶ
+はまぐち,はるお
+やしろ,ひろのり
+むらお,まき
+おおぎまち,あきら
+しろた,まさゆき
+てしま,みつお
+かわさき,やすゆき
+やまだ,おさむ
+ほんだ,まさひで
+かねこ,しげる
+まつしま,ひろずみ
+こみや,こうじ
+わだ,つよし
+よしだ,たかし
+もりさき,ゆうじ
+いまひがし,ひでお
+くらもち,わたる
+ゆかわ,さとし
+てらお,じろう
+こんど,まき
+さいとう,まさゆき
+よしなが,ひろし
+ゆあさ,はるゆき
+せんが,よしお
+にしぐち,としあき
+うえだ,なおき
+やまおか,としお
+やまもと,かずお
+ふじかわ,としたけ
+おぐら,たかし
+かわの,ひでお
+かねずか,ひろあき
+おかもと,ゆうすけ
+かわつき,かずお
+すえよし,たつや
+かわべ,しげゆき
+たかはし,たかゆき
+もり,しんすけ
+すぎやま,てつじ
+まえやま,きよし
+こめたに,ゆうじ
+ふじわら,きよし
+あでがわ,ひろゆき
+とみざわ,おさむ
+なかた,まさあき
+たちばなき,はるあき
+こだま,しょうご
+はない,ちほ
+ちのね,かずお
+しみず,こういち
+たきざわ,まさと
+くどう,けんじ
+もりおか,まさかず
+かねひら,あきお
+さとう,ひろのぶ
+やばな,としお
+さかずめ,ひろゆき
+はしもと,きよ
+よのもと,ひでき
+ばんしょう,くにお
+ふちえ,かずお
+すずき,いくお
+すずき,ゆきのり
+こばやし,かずひろ
+かとう,たかつぐ
+くすだ,かずいち
+みやたけ,よしひろ
+さの,ひでじ
+まるた,としあき
+まきた,まりこ
+かしわぎ,はじめ
+たに,よしみ
+ありやす,えつお
+かとう,しゅうじ
+たなか,まさひと
+つじた,ひろし
+おおがわら,ただお
+むらさわ,としひろ
+せきもと,ひさし
+つじもと,ひさと
+しおたに,よういちろう
+みわ,としお
+ながさか,せいじ
+こいで,あきら
+おぐら,つとむ
+つつみ,たかのり
+ふかみ,じゅんいち
+よしだ,たかし
+もろほし,すすむ
+しおの,ただひで
+やまぐち,のぶみち
+まみや,つかさ
+さいとう,しげゆき
+あきやま,きよし
+あだち,かずひろ
+かわの,としみつ
+なかむら,あきひろ
+やまぐち,としき
+さくま,ひでみ
+もちずき,よしたか
+わたなべ,ようじ
+こばやし,せいじ
+きし,みれい
+はやさか,みちよ
+こふじ,まさのぶ
+さいとう,あきこ
+のむら,しゅんじ
+まつい,ゆきお
+はやしだ,まさえ
+おがわ,たかし
+ほんだ,たかし
+こざわ,よしもと
+ささき,ひであき
+わだ,きよし
+やまわき,たみ
+ふじい,はるよ
+たきざわ,やすひこ
+さとう,こうじ
+みかみ,さとし
+みわ,のぼる
+おち,ひろし
+ふじた,けいじ
+ながた,いちろう
+くぼた,ようこ
+あおがき,げん
+かりやど,なおこ
+みはし,しんいち
+むらまつ,ちえこ
+かたやま,おさむ
+やまざき,としひこ
+おおぎそ,きよたか
+ばば,まさかず
+みしま,まさひこ
+やの,おさむ
+なかじま,あきひこ
+たけした,きょうこ
+なかの,みのる
+たかの,ゆき
+かわだ,かずまさ
+たじま,こうたろう
+もちずき,きよし
+きむら,かつみ
+あきほ,とみもと
+やまもと,あき
+かわせ,ゆたか
+ささ,ひさお
+のせ,かずなり
+ひらた,なおき
+こばやし,しゅういち
+あがわ,ゆうすけ
+てらもと,ひろふみ
+おざき,さかえ
+もり,きょうこ
+うつ,ひとし
+わかまつ,としさだ
+いまい,ふみこ
+くぼ,たかひろ
+たかの,じゅんじ
+ひびの,ひでお
+すずき,はるき
+たなか,たかはる
+さかもり,かよこ
+たきざわ,てつ
+よしかわ,たえこ
+とよだ,りゅういち
+うらしま,ゆうじ
+こんの,もとひろ
+てらかわ,たけなが
+こばやし,あきひこ
+きむら,たかこ
+かみお,れい
+くればやし,きよみ
+かねだ,ひろこ
+かわもと,こうへい
+いまむら,よしひろ
+こはぎざわ,みのる
+しのざき,しゅういちろう
+めぐろ,さとし
+くにさだ,まさはる
+もり,きよ
+かわぎし,たかゆき
+おおすが,かえで
+すだ,ひろし
+なかむら,きよかず
+いしこ,じゅん
+すずき,なおや
+きくち,かずひこ
+おぎた,あきら
+たかやま,たかとら
+なかしま,きよし
+つじもと,ひろし
+はやま,くにひろ
+いたがき,まさあき
+やまもと,ひろあき
+あだち,ひろし
+きたみ,ひろひで
+たまき,みちお
+まえだ,ゆうじ
+あだち,しょうぞう
+たまだ,ぐんじ
+もりぐち,ゆうじ
+よしなが,のりこ
+まえだ,たえこ
+わたなべ,たまき
+たかはし,よりたか
+いしこ,てつろう
+おじま,かつじ
+しばやま,よしあき
+しば,たけひこ
+ともの,けんいち
+すみ,まさふみ
+みつなが,あきこ
+うらの,まさき
+よこずか,さとし
+ふじかわ,はるひろ
+かぶらぎ,まさゆき
+よしだ,ゆたか
+さいとう,よしあき
+やの,たかひさ
+よこた,なおみ
+なかむら,あつし
+なみさと,まさかず
+ねぎし,けいぞう
+きの,のぼる
+なかじま,あきら
+つつみ,しゅういち
+こうだ,やすひこ
+ほり,みゆき
+こんの,かずや
+わだ,ゆみこ
+まつなが,さだお
+にしむら,としゆき
+いい,やすひろ
+やすい,なおき
+こばやし,しゅういち
+やまさき,まさひろ
+すずき,やすゆき
+いわた,はるひこ
+しげもり,たかし
+いまむら,のぶたか
+つかもと,あきよ
+いとう,しんすい
+くぼ,じろう
+さなえ,かずまさ
+こだま,あきお
+いとう,かつし
+あくつ,ようこ
+あたらし,みえこ
+たぐり,じゅんこ
+の,たつや
+あかまつ,けんじろう
+あさの,けんじ
+なかがわ,まさあき
+かわしま,あさこ
+さとう,ひでお
+おぐら,せいじ
+いしばし,ひろゆき
+まつおか,たかよし
+たきざわ,まさよし
+いたくら,さとし
+ほんごう,よしかず
+ながやす,たかゆき
+うちだ,ひろし
+やました,つねお
+いしぐろ,ひろし
+もり,とよひこ
+たなか,こういち
+ひぐち,しげと
+きと,しんいち
+たなか,かずゆき
+すずき,かずひろ
+すがい,けんじ
+よねざわ,よしかず
+あらかわ,りゅうじ
+いのだ,やすひさ
+かとう,まさお
+かげやま,まさし
+みやわき,としひこ
+みちやま,ただやす
+もり,としあき
+もりさわ,しんいちろう
+にしむら,かつゆき
+さいとう,やすのり
+やまもと,ようすけ
+まつうら,よしあき
+はせがわ,つとむ
+うちだ,じゅんいち
+やすだ,こういち
+いしだ,とおる
+もりの,かつまさ
+きたやま,よしひろ
+さかもと,よしのり
+そうみや,ひろゆき
+きくち,しんいち
+しぶい,こうじ
+とみた,あつし
+もり,こうじ
+やまぐち,じゅんじ
+きたやま,よしひろ
+まんもと,あきら
+たなか,ゆたか
+もり,かずひろ
+いたくら,いさむ
+いちみや,まさし
+にしやま,かつじ
+わたなべ,ひろし
+はんがい,はるお
+ながの,けいいちろう
+しば,けんじ
+こじま,すすむ
+たたの,さとし
+かわばた,まさひこ
+たけだ,たろう
+おむら,いくろう
+さこ,ひろし
+いしはら,みのる
+いちのせ,すすむ
+きしだ,よしみ
+みかみ,じゅん
+はやし,たくじ
+ささき,あゆみ
+よねみつ,かずなり
+せきね,よしなり
+いまにし,きよただ
+あおき,ただし
+すぎやま,いさお
+なかもり,よしふみ
+しまだ,まさひこ
+ますだ,ふさお
+つぼい,ひろし
+せきや,すすむ
+きじま,のりお
+よしずみ,ひでたか
+やなぎだて,しんや
+しげまつ,はるやす
+いのうえ,なおき
+たけうち,けいこ
+たなか,たけし
+ひがし,しゅうじ
+たかた,なおひろ
+なかい,つぎお
+はせがわ,じゅんいち
+たに,たかし
+こばやし,みきとよ
+たかはし,あさこ
+あべ,まさと
+こばやし,よしぞう
+おの,いくや
+たかはし,ゆきひろ
+くろだ,あつし
+わたなべ,ひろし
+あべ,しんじ
+いのうえ,ようこ
+えんど,よしお
+ののした,しげふみ
+かない,くみこ
+こたき,じ
+たかはし,ようこ
+しげやま,とみお
+ふかだ,あきお
+しおじ,かつゆき
+もりや,ふみひろ
+おおつか,まさや
+あべ,まさたか
+ひらい,たかゆき
+むらまつ,じゅん
+みずた,まさみ
+ほりえ,かずゆき
+ひかさ,まさたか
+おしたに,まこと
+こばやし,かつみ
+くらはし,ひでゆき
+ひらばる,たけお
+ふじえだ,まこと
+とざわ,かつみ
+やなせ,しげる
+くぼた,よしお
+まみや,まさき
+ゆはらぎ,まさみ
+ちょうなん,よしまろ
+みよし,とおる
+のじま,よしのり
+もりさき,まこと
+こやま,としあき
+かとう,ひろき
+きのした,やちよ
+かわむろ,さとし
+もり,けいいち
+ひらした,さだき
+かわしま,りょう
+ふるかわ,あきと
+いんでん,まさひこ
+やまだ,やすゆき
+つくだ,みのる
+いわさき,まさひと
+おまえ,おさむ
+すずき,まさゆき
+はら,まさひこ
+さかい,たつむね
+もりや,かずまさ
+みやもと,としひろ
+しげた,まさひろ
+いしかわ,ひでのり
+たざき,さだむ
+すえひろ,むねや
+かねだ,こういち
+すえひろ,じゅんいち
+ささき,りゅうさく
+ひやま,たつはる
+きどぐち,よしひろ
+しまだ,としゆき
+みやけ,ひとみ
+もり,じろう
+しらかわ,こうじ
+わかばやし,しんいちろう
+やました,かずお
+あまの,じゅんじ
+たけいち,ひろたか
+しん,けいこ
+かさはら,てつや
+たなか,けいし
+おくだ,あきら
+かとう,ともこ
+かわさき,まさこ
+かとう,かずお
+いちせ,まさあき
+きたがわ,げんへい
+やすい,よしのぶ
+えだ,とみかず
+はやし,たつじ
+ながい,さとし
+とのむら,まさのり
+たなか,のぶゆき
+くりばやし,よしのり
+きむら,かつこ
+はぜき,のぶゆき
+あんの,あつし
+たかよし,よしさと
+あんざい,しょうじろう
+たかはし,おさむ
+はらの,つねお
+なかがわ,かつよし
+にしかわ,ゆきお
+しぶや,かずひろ
+かとう,のぶひろ
+あだち,としひろ
+さくらい,やすたか
+くさの,としひろ
+みなみぞの,みのる
+つじむら,あきとし
+やまだ,いさむ
+かつしま,しげみ
+こやなか,ひろゆき
+たばた,あきら
+あだち,よしひろ
+ひろの,せいいち
+つざき,ひろあき
+たちばな,しげあき
+べっしょ,かずみ
+まつした,ちゅうぞう
+たにぐち,けんしゅう
+なかとも,むつみ
+にしむら,ひろし
+みうら,まこと
+こんど,おさむ
+まつい,まさき
+まつもと,ひろかず
+ほりい,ひろし
+ますもと,つとむ
+なかじま,ちかし
+きむら,けんいち
+みわ,ひろゆき
+いしばし,やすし
+えぐち,のりひさ
+いなふく,じゅん
+わたぬき,やすひろ
+ひぐち,よしひこ
+いけの,きくお
+うめはら,まなぶ
+のざわ,ただし
+いまい,まさき
+たかはし,かつじ
+いいだ,はるひさ
+ふじかわ,かおる
+にしえ,ただひこ
+こすげ,ひろし
+おおた,じゅんこ
+のじ,くにひこ
+こぼり,みきお
+すぎやま,よしあき
+かわた,てつひこ
+さめしま,みねお
+こやま,きよたか
+えんかい,たかし
+こもだ,つとむ
+おがわ,こういち
+やまむら,かずまさ
+えのもと,れいじ
+たかだ,ひさただ
+なかみぞ,ゆみこ
+おかむら,ひろし
+かみばやし,せいじ
+ふじもり,みきお
+くろだ,しんいち
+さとう,よりえ
+よしむら,たきお
+もたい,たくじ
+むらた,とおる
+みわ,なおと
+いはら,えみ
+いまい,たかし
+ひの,かずお
+まつもと,たかし
+せと,ようじ
+くまがい,やすひろ
+やまだ,よしお
+わたなべ,ゆうこ
+やさか,ひろし
+さとう,あきひろ
+みやたけ,ひろのぶ
+まつうら,ひとし
+まつした,まこと
+うらべ,いさむ
+しがき,まさよし
+てらだ,よしひと
+いわもと,よしあき
+いのうえ,じろう
+もちずき,ゆきお
+よしずみ,えいいち
+みうら,みつる
+みずの,たかゆき
+よしい,じゅんいち
+ふるい,よしひろ
+はやし,しげあき
+しらいし,ひでお
+すがわら,たつお
+なかい,けいいち
+のふじ,よしはる
+さとう,ひろかず
+くろだ,きいち
+いけだ,たかし
+さが,けいし
+みやかわ,いくひさ
+わらしな,しげる
+きたがわ,のぶゆき
+いまい,ふみあき
+みさき,ひろのぶ
+いしだ,たけし
+りくら,ひであき
+しょうじ,こういちろう
+ふくなが,よしかず
+くろき,たかお
+またき,しょうざん
+せきね,まさはる
+やました,みつひろ
+たなか,よしあき
+おおはま,まさひろ
+おおつぼ,よしあき
+たい,ひさはる
+つるや,まさのり
+よしだ,よういち
+ますみつ,たかし
+かすや,しげお
+よしだ,みのる
+かわむら,ひでき
+はやし,くにひこ
+くにもと,まさゆき
+あらかわ,ひなこ
+なかむら,まさのり
+いしぐろ,せいじ
+はやみ,かつひこ
+みなみぞの,きんじ
+さかた,みのる
+かわもと,ふみかず
+むらおか,やすのり
+いとう,よしお
+わたなべ,みちお
+のむら,まさかず
+さとう,はるな
+わたなべ,ひろし
+こばやし,まさかつ
+ぬるき,ひでひこ
+よしだ,よういち
+さいとう,ひろし
+ひらい,よしゆき
+きむら,たかし
+おく,ろう
+はやさか,やすこ
+あさの,けんじ
+ふじさき,しんや
+あきもと,りか
+しまだ,まさえ
+みずかみ,まさはる
+なかがわ,とおる
+さとう,てつや
+こばしり,けんじ
+あらき,よしお
+すずき,なおとし
+にしで,せつ
+おちあい,よしひさ
+のなか,たかし
+やすい,りゅうじ
+こはた,けんいち
+みのしま,あつお
+てらしま,きみひこ
+やくわ,よしお
+すがわら,みちお
+みつはし,てつろう
+のむら,のりこ
+ちょう,あずみ
+さとう,りょうこ
+しずはら,れいこ
+はやしかわ,けんじ
+にわ,よしお
+みえの,けんいち
+しまだ,ひでと
+なかむら,としお
+ひらの,りょういち
+やまとや,かずひこ
+つのだ,やすのり
+こばやし,のぶあき
+さかくら,きょうこ
+まつだ,まさあき
+いまむら,せいし
+やぎはし,なおこ
+おぎの,ひろお
+たなか,よしまさ
+ひが,よしかず
+さこ,つとむ
+たざき,たもつ
+いいだ,まさはる
+いいだ,りょうすけ
+まつぐま,しげほ
+むらた,けん
+やすもと,まこと
+しみず,ひろし
+わくい,よしたか
+たかはし,よしお
+きたい,としひこ
+あだち,しょういちろう
+はなぶち,はじめ
+さとう,くにひろ
+あらい,としひこ
+たけなか,さとし
+かい,みほこ
+あかだ,しずお
+くにすえ,ひろあき
+まえかわ,あきら
+みなみ,みつし
+たきがみ,ひでゆき
+まつい,まこと
+しらい,まさみち
+たけよし,せいのすけ
+たかだ,きよたか
+たかぎ,たかひこ
+くどう,きよたか
+しまだ,のぶこ
+かとう,かずお
+しぎょう,ひであき
+ひろの,そおじゃ
+きのした,よしえ
+しみず,しょうぞう
+しむら,ひろあき
+くさかり,みほ
+かるべ,としはる
+まつもと,なおゆき
+しまむら,とまさ
+かつかわ,たかお
+いず,いさお
+さくらもと,いつじ
+もりた,じろう
+たなべ,くにいち
+はっとり,ふみと
+りゅうご,しゅんいち
+おまつざわ,まさはる
+おとわ,ゆきよし
+こだま,せいいち
+かやしま,ゆうじ
+こばやし,しげる
+くにえだ,まきお
+こう,かずなり
+にしやま,ひとみ
+わだ,ひろや
+にしもと,たかし
+さいとう,かつのり
+としま,よういち
+おおつか,ほこく
+おの,まさる
+すずき,たかし
+さくらい,たかし
+おぜき,たかし
+おかだ,まさみつ
+おがわ,ひろし
+いけがみ,ひでとし
+こまつ,たかのり
+よしい,よしあき
+ひらの,しょういち
+たかすか,ひろし
+はしもと,やすゆき
+くわえ,きくお
+かねまつ,かねひで
+まつお,けいいち
+いど,たかひこ
+いの,じゅんいち
+さいとう,たけし
+かみやま,こうじ
+こしもと,こういち
+おおがわら,よしのぶ
+たかはし,まこと
+ながまつ,しんいち
+すずき,ごろう
+てらお,ようじ
+ほりけ,かおる
+すずき,たかし
+おがわ,こういち
+みやもと,のぶお
+おおすみ,ひろゆき
+いわぶち,のぶやす
+まつうら,たつお
+さわち,ちかお
+てらだ,せつこ
+いばやし,ゆたか
+いわせ,じゅんいちろ
+おがわ,せいじ
+あそ,やすとも
+ふくもと,さゆり
+いで,ふみたか
+かわさき,てつじ
+はるな,まさのり
+たじま,ゆきふみ
+かなやま,ようじ
+たなか,わたる
+まつざき,まさお
+いのさか,こうじ
+おしやま,よしひさ
+たけうち,たかし
+ささおか,としゆき
+こもり,まさあき
+たじま,ひろあき
+いけがみ,けんじ
+やまぐち,まさあき
+かわかみ,しげき
+いせき,えいすけ
+たけだ,ひでゆき
+たかやす,まなぶ
+かめだ,たけとし
+ふじの,まこと
+みさき,やすのり
+なかむら,としあき
+おがわ,こうじ
+なかざわ,ひでとし
+せき,やすくに
+よしかわ,たくや
+たがわ,たかし
+みたに,としひこ
+すえた,あきひと
+いぬい,けん
+おさだ,さとし
+ふるかわ,かつお
+すずき,まこと
+きたむら,りょうすけ
+こまつ,ひろたか
+あさだ,よういちろう
+かんざき,やすまさ
+うすい,よしふみ
+ふるや,としひこ
+よけむら,ふみよし
+よこえ,よしき
+あかいわ,としひこ
+ふくしま,ひろやす
+やじま,やすし
+はら,みゆき
+きしだ,ゆうぞう
+くぼ,みつる
+かたぎり,やすのり
+いちい,ふみや
+まつき,としあき
+わけべ,けんじ
+まるやま,ひでお
+つばき,しげる
+さの,ひろし
+みやもと,まさとし
+ふくやま,まさあき
+うえむら,まさる
+くわかど,りき
+くにまつ,まさる
+かたおか,のりゆき
+とみた,かずのり
+なかむら,あつひこ
+くどう,よしてる
+おぶち,てるひこ
+よしかわ,とおる
+かげやま,まこと
+とだ,けいいち
+たかはら,さとし
+まつした,しんじ
+こだいら,ひでし
+しんかい,もとお
+てらだ,まさひと
+かわきた,はじめ
+みうら,さなえ
+あべ,ひとし
+にしかわ,ゆきひろ
+ほそだ,いわお
+ますだ,よしお
+かざま,たけし
+あらまき,かずお
+わたぬき,みつぎ
+さかもと,つよし
+あまがみ,しん
+こんの,いさお
+おくだ,よしのり
+おはく,みつお
+なかむら,よしふみ
+なかむら,ゆういち
+うしやま,ゆきお
+やしき,あいいちろう
+きのせ,しゅんいち
+わかやま,こういち
+いまい,まさゆき
+まえだ,きよし
+まつした,えいじ
+ひらぐち,ひろし
+わだ,あつこ
+わたなべ,そういち
+まつい,しんいち
+まつもと,みきお
+なかむら,じゅんいちろ
+たきた,よしと
+ますだ,ともこ
+みやうち,まゆみ
+しむら,さかえ
+まつい,たきこ
+はらはた,とみたろう
+ひさたに,あつし
+かがみ,まさつぐ
+よしむら,ゆうじ
+おおつか,けいご
+たなか,しんいち
+ひらの,しゅう
+たけすえ,てつや
+にしの,よしゆき
+おおつか,めぐみ
+おだ,しんじ
+しみず,ゆたか
+はまもと,たかよし
+みやまえ,まさなり
+ながしま,えいじ
+みつめ,こうじ
+かごたに,よしかず
+よこやま,たかふみ
+さかた,けんじ
+おいくぼ,あきひで
+くらもち,ひろや
+あんざい,まさゆき
+ふくしま,りえ
+なかむら,ひとみ
+いとい,ゆりこ
+ほしの,みちこ
+こいで,ひろひこ
+おざき,じゅん
+せじも,まさみち
+すどう,まさみつ
+かじわら,みどり
+すずき,かつひろ
+ほしの,はるこ
+なかむら,よしあき
+もりた,あきかず
+やまざき,としひこ
+おくがわ,まさひこ
+ながはま,ひろゆき
+よしむら,あきみつ
+まつだ,たかとし
+ほかぞの,あつひさ
+あべ,としつぐ
+ながい,こうじ
+とがし,としひと
+やざき,ていぞう
+やまうち,ひでき
+みさき,なおき
+よしだ,しんじ
+なかもと,しげる
+しのはら,つねかず
+なかにし,あきら
+やじま,きよし
+とよふく,ゆうじ
+たかしま,かつじ
+ふしにし,きみえ
+むかい,てつや
+にしむら,ひろゆし
+かわばた,さとし
+むかえだ,さとる
+しせき,いっしん
+かたおか,よしひで
+ないとう,ひろき
+みと,やすと
+おおにし,としろう
+よこやま,たかし
+なかむら,たつあき
+いざわ,ひさのり
+たにがわ,とみえ
+すぎた,ゆか
+おした,まさゆき
+しまだ,ともこ
+やまむら,こういち
+ふくおか,まさし
+やなり,ひろあき
+すずき,しんじ
+さかい,さとる
+やまだ,ゆきひろ
+やまこし,しげる
+のもと,としゆき
+たけした,もとき
+みのだ,しげゆき
+あさい,しほ
+むねやす,ひでゆき
+かわにし,まこと
+さかぐち,やすひさ
+やまざき,としひこ
+あさおか,ひでのぶ
+きのした,みきぞう
+みま,きよみ
+ふくもりた,しげお
+かじやま,よしこ
+やまざき,じゅんいち
+さとう,としや
+かわべ,みつひこ
+まるやま,のぶよし
+おがらね,のぶこ
+どい,ゆうぞう
+たなか,みつお
+おぎしま,おさむ
+いのうえ,ひろゆき
+ふるや,ひろのり
+ふくい,つよし
+ますだ,たかひろ
+ほんだ,ゆみこ
+なかにし,なおたか
+みやまえ,なおひこ
+おかの,ひでお
+ばば,よういちろう
+だけやま,さくこ
+やまぐち,やすお
+はやし,としろう
+とみずか,やすひろ
+なかにし,はるひさ
+あべ,はじめ
+あおやぎ,ひろこ
+てらわき,きよこ
+かたぎり,のぼる
+なかがわ,まさお
+こばやし,かずひろ
+うえだ,ひろみ
+ふじわら,あきひろ
+はやさか,たつみ
+きむら,ひろし
+ごとう,まさひろ
+しむら,けいぞう
+せき,としかず
+あいざわ,あきお
+のむら,こすけ
+かんだ,しゅうじ
+うらい,ますみ
+もとやま,よしはる
+かみむら,てつお
+ひらい,まさゆき
+あらい,ともなり
+さいとう,よういち
+まきはら,まさし
+おおわく,おさむ
+もちずき,まさひろ
+はんがい,よしひろ
+いのうえ,かずひと
+ながいし,かつみ
+にしもと,あきら
+つちや,しょういち
+まつもと,たかし
+ほん,しょうご
+いわい,たつや
+くぼ,まさお
+はこい,まさお
+わたなべ,のりお
+すぎた,としみつ
+なかむら,かずひろ
+からさき,こういち
+のりまつ,みつひこ
+くすもと,たかよし
+にしむら,さとし
+こすげ,まさな
+ふくみつ,やすみ
+やまぐち,さぶろう
+いしぐろ,かずみ
+とくだ,なおや
+ありとみ,じつろう
+ひやま,しんいち
+ひろせ,まさとし
+にしだ,とおる
+はっとり,よしみ
+ひらばやし,けんいち
+はらしま,えいじ
+はら,たみお
+はまの,かずゆき
+はまだ,まさとし
+はしもと,かつひこ
+はやし,ひさじ
+ひぐち,まさみ
+ひらの,ゆたか
+ほんま,まさはる
+はるまし,よしまさ
+はしもと,やすお
+ひだ,たかし
+ひらすか,ちょうじ
+はぎわら,こういち
+はまだ,きみえ
+はしもと,みちはる
+ほんま,みよし
+ほかり,やすひろ
+はらだ,みちこ
+はやし,けんじ
+ほりべ,かずお
+はしもと,まさお
+はせがわ,ただかず
+ひろべ,みきお
+はしもと,かずみ
+ひらの,まさゆき
+はしもと,けん
+ひじかた,つぎえ
+おおぬま,いさお
+はぶつ,ひろゆき
+ひだか,かずひろ
+はしもと,きんや
+はまの,なおき
+ひしぬま,のぶゆき
+はら,よしみ
+はなき,しんいちろう
+はら,けんじ
+はが,たけお
+はなだ,まさのり
+ひらやなぎ,のぶたか
+ほりかわ,みつのり
+ほりかわ,けん
+はしもと,あきこ
+はた,としひこ
+ひらい,じゅん
+はらぐち,やすまさ
+ひらお,ゆういち
+はしずめ,かんた
+つじ,まなぶ
+さくらざわ,ひでとし
+あべ,こういち
+あべ,まさひろ
+あべ,ひろた
+あべ,こうじ
+あべ,おさむ
+あべ,たかお
+あかぎ,やすひと
+おかもと,しずお
+えんど,みちこ
+あかいし,つねはる
+にしな,まこと
+あきもと,としお
+あきずき,まさとし
+ひらばやし,しげまさ
+あめみや,あきら
+あみの,あきひろ
+あなみ,まさかず
+あなざわ,かおる
+あんどう,ゆうぞう
+あんどう,ひろき
+あおやま,まさき
+あおやま,こうじ
+あおやま,しんいち
+あらい,こういち
+あらい,まさし
+あらい,まこと
+あらい,たまお
+あらい,まさやす
+あらき,みゆき
+すがわら,ともみ
+あさひ,しげる
+あさくら,たかし
+あさみ,ふみとし
+あさむら,かつみ
+やましな,かずお
+あさり,まさこ
+あさず,ともこ
+あつみ,よしゆき
+ばん,ひろやす
+べっしょ,けいいち
+ちば,あこ
+ちかきよ,なおひさ
+ちむら,たみえ
+どばし,たけお
+えばし,しょうへい
+えびはら,よしふみ
+えがみ,ゆきお
+えぐち,ゆきたか
+えぐち,さとし
+えじり,すぐる
+えんど,まゆみ
+えんど,たつお
+えのもと,よしつぐ
+ふちの,とおる
+ふじい,おさむ
+ふじい,てつ
+いしい,じゅん
+むらやま,としひさ
+ふじかた,たつや
+ふじかわ,かずとも
+ふじまる,ひさと
+ふじもと,くにひろ
+ふじもと,ただよし
+ふじもと,としかず
+ふじの,やすとも
+ふじお,としあき
+ふじさか,さとし
+ふじさわ,のりお
+ふじさわ,たかひろ
+ふじた,まさゆき
+ふじた,まさゆき
+ふじわら,とおる
+ふじわら,まさゆき
+ふじわら,しんしょう
+ふかだ,ふみひろ
+ふかがわ,あつひろ
+ふかの,けい
+ふかわ,せいじ
+ふかや,としかず
+ふかざわ,ひとし
+ふくだ,こうじ
+ふくい,ひろし
+ふくもと,ひろたか
+ふくもと,ひろあき
+ふくもと,まさひこ
+ふくもと,すすむ
+ふくしま,ひろゆき
+ふくとみ,りゅうさく
+ふなき,しんじ
+ふるさわ,たろう
+あびこ,まさゆき
+ふせ,のりお
+ふせがわ,よしなお
+ふしみ,なおひさ
+ぎま,かずよし
+ごみ,まこと
+ごとう,のりこ
+ごとう,ともあき
+ごとう,ひさのり
+ぐんじ,みよ
+はぎわら,よしこ
+はぎわら,いちろう
+はいの,ひさよし
+はかまだ,のりゆき
+はまだ,ゆき
+はまだ,ゆきお
+はまぐち,けんじ
+はら,しんいち
+はら,きよたか
+はら,くにひこ
+はら,まさなり
+はらだ,ますみ
+はらだ,みなこ
+はらだ,のりこ
+はらこ,たかひろ
+はるな,たかあき
+はせがわ,たくや
+おしま,あきら
+はしもと,たかし
+はたの,かずひろ
+はたざわ,かずみち
+はと,まさし
+はつみ,あずさ
+はっとり,ともゆき
+はやかわ,としひろ
+はやかわ,あつろう
+はやかわ,としひこ
+はやの,あつし
+はやせ,しんご
+はやし,たかはる
+はやし,かおり
+はやし,よしひろ
+はやし,けいじ
+はやし,せいた
+いもと,まさよし
+はやつ,ひろし
+ひがき,ひであき
+ひがし,すみこ
+ひの,けんじ
+ひらばやし,なおと
+ひらの,かずひろ
+ひらの,けいいち
+ひらおか,まゆみ
+はらさき,たつや
+ひらて,ひでお
+ひらやま,とおる
+ひろえ,よしかず
+ひろかわ,しゅういち
+ひろせ,ひでたか
+ひろし,のぶこ
+ひさむね,けいこ
+ほんだ,こういち
+ほりかわ,のりあき
+ほりこし,しんいち
+ほりこし,ひろゆき
+ほし,ゆきお
+ほしこ,まさひろ
+ひらさわ,さだゆき
+ほそい,しんいち
+ひょうどう,たかし
+ひょうどう,ゆうすけ
+いべ,しんいち
+いちかわ,まさひろ
+いちかわ,まさる
+いちかわ,ゆみ
+いちのみや,みつる
+いで,みつゆき
+いで,ゆり
+いがらし,やすゆき
+いがわ,きよし
+いぐち,しんや
+いいだ,しゅういち
+いいだ,ひろし
+いいじま,こういち
+いいつか,のぶお
+いいずか,かずのり
+いいずか,ありさ
+いからし,ともき
+いけだ,なおき
+いけだ,まさふみ
+いけだ,じゅん
+いけだ,ひでと
+いけなが,ひろお
+みつもと,ひろたか
+いけやま,ひろゆき
+いけざ,ひとし
+いけざき,おさむ
+いくた,てるゆき
+いまい,よしのり
+いまいずみ,のりひろ
+いまむら,ひろゆき
+いまむら,えいり
+いまにし,ともひろ
+いながき,かおり
+いながき,かつゆき
+いながわ,たつや
+いなほ,まさる
+いなみ,ひろみち
+いなつぐ,みさお
+いなよし,たつお
+いの,かずと
+いのおか,しんや
+いのうえ,たかゆき
+いのうえ,たけし
+いのうえ,ひでかず
+いのうえ,たかし
+いのうえ,たかあき
+いのうえ,ゆういち
+いのうえ,きくお
+いりさわ,あきひこ
+いせ,ゆきお
+いせき,かつや
+いしだ,やすのり
+いしだ,つよし
+おかだ,はるみ
+いしい,えいじ
+やまだ,ひろぶみ
+すぎはら,ひろたか
+いしかわ,かつら
+いしかわ,まさこ
+いしかわ,まさみ
+いしまる,のりこ
+いしもと,たつお
+いしもと,まさひろ
+いしもと,けんじ
+いしの,かくいちろう
+いしつか,さとし
+いしわた,たくや
+いしわた,ゆうじ
+ひらばやし,えいじ
+いしざき,もとのり
+いしずか,とおる
+いそだ,たけし
+とおか,としゆき
+くりはら,けいじ
+いとう,けんいち
+いとう,よしあき
+いとう,えつき
+いとう,ようじ
+いとう,さとし
+いちやなぎ,しげひと
+いとう,つねひろ
+ながた,かつみ
+いとう,たかはる
+かみかわ,ただみつ
+いわい,のぼる
+いわかわ,てるひさ
+いわみ,としひこ
+いわみ,たかし
+いわもと,ともこ
+いわなが,まさひろ
+いわさき,けいこ
+いわさき,ふみかず
+いわせ,ひろゆき
+いわした,おさむ
+いわた,こうせい
+いわた,さとし
+いわたて,ひでき
+いずみ,みわ
+じんの,たかやす
+かがわ,ひでお
+かいぬま,のぶお
+かじた,たかみち
+かけがわ,かずたか
+かきぬま,なおき
+かまだ,たかひろ
+かまた,ひろき
+かめたに,くにあき
+かみ,まさのり
+かみむら,まさし
+かみやま,まさゆき
+かなうち,たかゆき
+たけうち,みき
+かねこ,やすのぶ
+かねこ,やすき
+かんぬき,せいいち
+かのう,きよくに
+からはし,ひろあき
+かさい,みのる
+のむら,えみこ
+かさい,ももこ
+かせ,じゅんいち
+かしくら,よしろう
+かしむら,さとし
+かしわぎ,かよこ
+かたの,てるひさ
+かたおか,やすし
+かとう,おさむ
+かとう,なおき
+かとう,けい
+かとう,まさはる
+かとう,たかあき
+かとう,たかし
+かとうおか,ゆかり
+かつい,じ
+かつまた,みのる
+かわばた,たかお
+かわちや,としあき
+かわだ,りせい
+かわだ,ひろゆき
+いりさわ,ふみお
+かわい,みわ
+かわかみ,けんじ
+かわかみ,みのる
+かわみ,あきら
+かわむら,けんじ
+いしい,やすき
+かわの,まさひろ
+かわむら,きよひろ
+かわさき,のぶゆき
+かわせ,なおき
+かわせ,ひろし
+かわせ,えいじ
+かわしま,えいこ
+かわたに,くにひこ
+けいだ,まさあき
+きだ,しげこ
+きだち,しげお
+きはら,ともえ
+きくかわ,ゆかり
+きもと,まさひで
+きむら,けんいち
+かまた,ひろゆき
+いくみ,まゆみ
+きのした,しげかず
+きのうち,まき
+きし,たくし
+きしもと,かずひろ
+きうち,とよあき
+こば,ひろゆき
+もり,ひでき
+こばやかわ,たけし
+くぼた,ひとし
+こばやし,てつや
+おおかわ,しん
+こばやし,てつじ
+こばやし,きよのり
+こまた,えいたつ
+こばやし,かつみ
+こばやし,かつゆき
+こばやし,かずひこ
+こだま,やすし
+こえじ,つとむ
+こぐち,けんじ
+こはた,としひこ
+こひら,きみお
+なかがわ,りえこ
+こやま,あきら
+こいで,よしろう
+こいで,じゅん
+こいけ,しげる
+こいずみ,もとこ
+こじま,たくや
+こけぐち,やすまさ
+こくぼ,ようこ
+こまつ,たかこ
+こまつ,ゆみこ
+こみや,ようじ
+こんど,かずとし
+こんど,あきら
+こんど,みえ
+こんど,たかゆき
+こんど,たつお
+こにし,たかこ
+こさか,まさひろ
+こせき,としひこ
+こしいし,たつや
+こしお,まさとし
+こすげ,としあき
+こうや,まさのり
+こやま,かずし
+こやま,おさむ
+たけち,しゅうぞう
+くぼ,としや
+くぼ,つとむ
+くぼ,ふみき
+くがい,たかゆき
+いからし,かずひろ
+くまざわ,のぶこ
+くにみつ,ひさよし
+くの,せいし
+ほしの,としや
+くらしげ,こうじ
+くりはら,みか
+なかがわ,しょういち
+やなぎだ,ゆきお
+くりやま,ひであき
+くろかわ,ひでゆき
+くさかわ,けいいち
+くさなぎ,おさむ
+くさの,ひでひこ
+くせ,さとる
+くしだ,ちえ
+くすだ,こういちろう
+くすき,ちえこ
+くすみ,ゆたか
+まえだ,たつや
+まえだ,あきお
+まえかわ,ひろこ
+まえかわ,たかお
+まがりふち,よしお
+まきの,ちひろ
+まきの,けんじ
+まなべ,まさよ
+あがつま,たつゆき
+まるお,しげる
+まるた,なおき
+まるやま,ゆか
+まるやま,まこと
+まるやま,たかひろ
+まるやま,ゆうじ
+ますだ,てるみつ
+ますだ,としや
+かんばら,いずみ
+まつばら,ひろし
+なかむら,ちとせ
+まつだ,くにのり
+まつだ,まさゆき
+まつい,ひろゆき
+まつい,よしのり
+まつい,しゅういちろう
+まつい,ちよこ
+まつもと,あつし
+まつもと,けんじ
+まつもと,まさかつ
+まつもと,しんや
+まつおか,みほ
+なるせ,りゅうじ
+まつや,のぶひこ
+めざわ,ひとし
+みぎた,まゆみ
+みかみ,しょうじ
+みむら,かずや
+やなぎ,こういち
+みなかた,まさゆき
+みね,まさやす
+みね,やすえい
+みのわ,きよえ
+みさわ,まきこ
+みさわ,たかひろ
+みしま,つよし
+みたむら,ともひろ
+みと,のぶお
+みつひら,まりこ
+みついし,まさふみ
+みつなり,たかえ
+みうら,ひろかず
+みやべ,けんじ
+みやじま,しげき
+みやもと,しげる
+みやもと,ともみ
+みやさか,ゆういちろ
+みやさか,けんいちろ
+みやした,ひろか
+みやした,じゅんこ
+みやざき,のりしげ
+みやざわ,かつみ
+みやざわ,たかゆき
+みぞはし,たけひこ
+さかい,ひろし
+みずの,ひろあき
+みずおち,たかお
+みずしま,けんじ
+みずた,けんじ
+もちはら,くに
+もちずき,こういち
+ももせ,しゅういち
+もり,ひろき
+もり,あきひろ
+もり,ちえ
+もり,はずき
+もり,ひでき
+もり,まもる
+もりかわ,まさよ
+もりもと,やすひろ
+もりもと,こういち
+もりもと,まなぶ
+もりむら,しんいち
+もりの,かずみ
+もりさわ,くにかず
+しまおか,おさむ
+もりした,ゆか
+もりやま,ひろこ
+もろおか,みつひろ
+もろとみ,なおき
+もとき,ただとし
+もとの,かつゆき
+もとたか,ひでき
+むぐるま,たくじ
+むかい,よしみ
+あんどう,いわお
+はね,こうき
+むらかみ,としかず
+むらまつ,つとむ
+むらしげ,かずゆき
+しもむら,じゅん
+むらた,まこと
+みょうが,たかゆき
+ながはら,ひろし
+いとう,かつみ
+ながい,けいた
+ながい,とおる
+いわと,よしき
+たけしげ,ちほこ
+ながお,あきひろ
+ながお,みちのり
+ながお,いさえ
+ふくつか,けいこ
+ながさわ,ひでき
+ながさわ,やすひろ
+ながせ,すすむ
+ながしま,あきお
+ながたに,ふみひこ
+ながわき,ひろやす
+ながやま,まさひで
+なごや,もりお
+ないとう,のぶゆき
+ないとう,さだみつ
+なかだ,たくや
+なかがき,ひろあき
+なかがわ,てるのぶ
+なかがわ,としひろ
+なかがわ,やすひろ
+なかがわ,まさし
+なかじま,とおる
+ほりうち,とよじ
+なかはら,かずひと
+なかじま,かずゆき
+なかじま,こうじ
+きくた,みか
+なかじま,としあき
+なかまる,としこ
+なかむら,よし
+なかむら,まこと
+なかむら,ちえ
+なかむら,のりこ
+なかむら,たかお
+なかむら,たかし
+なかむら,りゅういち
+なかむら,しげかず
+はっとり,まなぶ
+なかむら,さぶろう
+なかむら,とおる
+なかむら,たつじ
+みやもと,いずる
+なかにし,ひでと
+なかにし,すなお
+なかの,よしあき
+なかの,ちゆき
+なかの,やすひで
+なかの,おさむ
+なかの,つかさ
+なかの,けい
+なかの,よしのぶ
+なかお,たかひろ
+なかおか,まさかつ
+なかしま,しんいち
+なかしま,かずなり
+しなだ,あきら
+なかた,かずなり
+なかや,たくじ
+さいかわ,ひとし
+はせがわ,ひろし
+なかざわ,まみ
+なまつ,まみ
+なりた,たくじ
+なすの,たかあき
+ねもと,みねあき
+ねおい,まこと
+ねず,なおき
+にいむら,かずまさ
+にいやま,ちかげ
+にいやま,ひろし
+にのみや,ひろし
+にのみや,かずあき
+にし,たかお
+にしだ,まさのり
+にしだ,まさし
+にしどの,よしのり
+にしかわ,あきら
+にしきど,あきひこ
+にしむら,あきら
+にしな,だいいつ
+にしお,じゅんじ
+いのうえ,かずとし
+にしざわ,たかあき
+にしずか,としや
+にった,ひとみ
+のだ,わかこ
+のむら,さとし
+ののむら,ひろゆき
+のりはし,いさお
+ひの,かずゆき
+のざき,しん
+のざわ,まさひろ
+ぬまの,のぶこ
+おびせ,ひろき
+おぼかた,けんすけ
+おち,あきひろ
+はせがわ,みつあき
+まなべ,ひろゆき
+おだ,かつみ
+おだ,しんすけ
+おだ,ひでひろ
+おだ,じゅんこ
+おだくら,ぎょ
+おがた,ひとし
+おがわ,としひこ
+あべ,ようすけ
+おぐち,こうき
+おぐま,まさよし
+おぐら,たまき
+おぐら,ひでお
+むさし,みつる
+おぐら,まさひこ
+おぐり,まこと
+おおば,けんじ
+おおはし,よういち
+おおい,ひろかず
+おおいえ,けんじ
+おおくぼ,はるし
+おおくま,いさむ
+おおくま,ひろし
+おの,かつみ
+おおぬま,かよこ
+たかせ,よしひで
+おおさわ,ひでき
+おおさわ,ひろし
+おおさわ,けんじ
+おおさわ,そうすけ
+おしま,まりこ
+おしま,ひろお
+おしま,みつひろ
+おおた,しんじ
+おおたか,ひろゆき
+おおたき,たけし
+おおたに,ようじ
+おおつか,ひろのぶ
+おおつか,てつお
+おおわ,まこと
+おおわだ,ひろのり
+おおやま,ひとし
+おぞね,のぶゆき
+おか,やすし
+おか,ひろあき
+おか,かずしげ
+おか,たかのり
+おかだ,たかよし
+おかだ,ひとし
+おかだ,まさゆき
+おかだ,とよあき
+おかどめ,きよかつ
+おかもと,やすし
+おかもと,こうじ
+おかもと,ひろし
+おかむら,りか
+おかの,あきら
+おかのや,みつる
+おかお,やすじ
+おかざき,ひでお
+おき,ひろゆき
+おきもと,まさひこ
+おくむら,ともこ
+おくむら,ゆきひこ
+おくの,あい
+おまた,あきよし
+おにき,ひろゆき
+おにつか,まさあき
+おのでら,あきら
+おのざわ,ひでつぐ
+おおにし,けん
+おおにし,くによし
+おおつか,なおひさ
+おさだ,とものぶ
+おさき,たかし
+おさなみ,しずよし
+おやまだ,やすのり
+おざわ,こうじろう
+おざわ,しろう
+おざわ,やすのり
+さえぐさ,やすのり
+さえき,よしひろ
+なかじま,たけし
+さいた,ちえこ
+おがわ,やすはる
+さいとう,かずひさ
+さいとう,たかひこ
+さいとう,よしのり
+さかい,りょうじ
+さかい,ひでのり
+さかい,けいじ
+さかい,たけし
+さかい,たく
+さかい,しょうご
+さかいり,ひろゆき
+さかき,きょうこ
+さかま,まさのり
+さかまき,まさとも
+さかもと,まさとし
+さかもと,さとる
+さかもと,しゅういち
+さかた,たかし
+さかうえ,たかゆき
+さかずめ,たくみ
+なかの,ともひろ
+さくま,よしひこ
+さんぼんまつ,かずひろ
+さの,たけし
+さの,としふみ
+ささがわ,ゆたか
+ささき,ゆりこ
+ささき,やすゆき
+ささき,かずよし
+ささき,こうじ
+ささざわ,としゆき
+さとう,やすし
+さとう,かつひと
+さとう,よしたか
+さとう,たかゆき
+さとう,のぶたか
+さとう,ゆうすけ
+さとう,ひでゆき
+さとう,さとし
+さとう,おさむ
+さとう,まゆみ
+さとう,のぶお
+さとう,ひでのり
+さつま,みわこ
+さわぐち,なおと
+さわい,みちひろ
+さわらぎ,やすお
+さわたに,くにお
+せいた,あつし
+せき,まさまろ
+せき,のぶひろ
+せき,のりやす
+せきはら,あきら
+せきね,ゆうすけ
+せきね,ひろゆき
+しらいし,まさひろ
+せんが,のぶお
+せの,のりゆき
+せしも,しゅういち
+せと,たつお
+せとぐち,たつや
+てるや,ゆういち
+しいば,りか
+しばの,ともゆき
+しばさき,いくこ
+しばた,てつろう
+しぶさわ,まさふみ
+しぶさわ,よしひろ
+しち,だいえい
+しちた,たかゆき
+しげひさ,とおる
+しげさわ,みゆき
+むらた,りゅうたろう
+しまず,たかつぐ
+しまず,たつし
+きしだ,たかし
+しみず,みちお
+しみず,えいいち
+しみず,ひろし
+しみず,はやとし
+しみず,くんじ
+しみず,けいこ
+しみず,ひろしげ
+みやこし,としひろ
+しもみち,まりこ
+なかばやし,かおる
+しもおさ,たけし
+しもつじ,しんじ
+しなだ,ちかし
+しながわ,のぶお
+しんもと,まさひろ
+しの,よしのり
+しのだ,りゅうたろう
+しのだ,はつえ
+しのざき,しょうじ
+しおたに,てつひろ
+しおや,つかさ
+しらべ,いっせい
+しらがき,よしはる
+しらい,かずひこ
+しらいし,えつひろ
+しらいし,ひろし
+しらき,かずひろ
+しずた,けいこ
+しょうじ,けいた
+そのだ,みどり
+すどう,もとゆき
+すえだ,せいこ
+すえつぐ,たかし
+すがた,やすすけ
+すがわら,よしあき
+すぎの,よしのぶ
+すぎさき,ゆうじ
+すぎしま,まさる
+ながい,まりこ
+すぎやま,としひろ
+すみ,かつひろ
+すみたに,しんいち
+すさき,ひろゆき
+すすき,こういち
+すやま,とものり
+すずき,みちお
+すずき,けんいち
+すずき,こういち
+たじま,さとき
+すずき,たくや
+すずき,やすこ
+すずき,ゆたか
+すずき,あきこ
+すずき,あつし
+すずき,ひでとも
+すずき,ひでとし
+すずき,ひでとし
+すずき,ひろき
+しゅくや,じゅんいち
+たちばな,かよ
+たちやま,こういち
+たどころ,まさあき
+たがわ,まさひと
+たぐち,もとかず
+たぐち,なおゆき
+たぐち,のぶひさ
+たい,のりお
+たじま,さちえ
+たかだ,さとる
+たかだ,しげのぶ
+たかぎ,すすむ
+みやもと,たかし
+たかはま,てつお
+たかはし,やすあき
+たかはし,まさのり
+たかはし,つとむ
+たかはし,まさゆき
+たかはし,まこと
+たかはし,けんりゅう
+たかはし,としひさ
+たかはし,やすし
+たかはし,ひろゆき
+たかはし,やすのり
+たかはし,ひろし
+たかはし,もとやす
+たかはし,ゆきえ
+たかはし,やすこ
+たかはし,たかし
+たかはし,よしひさ
+たかはし,としゆき
+たかはし,さとこ
+たかはし,ひでき
+たかはし,いちろう
+たかはし,のぶあき
+たかはし,みつる
+たかなし,しん
+たかの,かつのり
+たかおか,てつや
+たかせ,しげき
+たかしな,こうせい
+たかしな,だいさく
+たかた,ひろあき
+たかやま,ひろゆき
+たかやなぎ,じゅん
+たけばやし,かつみ
+みかみ,けいすけ
+たけい,まこと
+たけき,ましゅう
+たけもり,のぶひこ
+たけむら,おさむ
+たけうち,けん
+たけや,しょういち
+たけやま,としあき
+たきぐち,としかず
+たきした,としゆき
+たきざわ,あきら
+たまい,しげる
+たみや,あきこ
+たむら,ようすけ
+たなべ,ひろゆき
+たなはし,よしゆき
+たなか,しげと
+たなか,ひでのり
+たなか,ひろゆき
+たなか,ひろき
+たなか,ゆきこ
+たなか,ひろこ
+たなか,じゅんいち
+たなか,しん
+たなか,まさかず
+たなか,じゅんこ
+こだま,よしひこ
+たなか,あさお
+たなか,のりあき
+たなか,さとし
+たなか,おさむ
+たなむら,さとし
+たんば,かずなり
+たにぐち,けいじ
+たにぐち,じゅんこ
+たにい,げん
+たにむら,とものり
+たにわき,おさむ
+たるい,しょうじ
+たさき,かずゆき
+たしろ,まさや
+たていし,なおや
+たうち,りょうこ
+たうら,ひろあき
+てらだ,よしお
+さとう,あきら
+てらにし,もりゆき
+てらした,ひろし
+てるきな,あきよ
+とべ,えりこ
+とうごう,たかはる
+とぐち,えいじ
+とじ,かつのり
+とみなが,まさと
+とみなが,やすまさ
+とみおか,なおき
+とみた,すぐる
+とみやま,ひろたか
+とねがわ,あきら
+としなり,じゅんこ
+とよだ,こうじ
+とよだ,かつや
+とよだ,まさひこ
+おおもり,よういちろう
+とずか,ひでお
+やまかわ,りゅうへい
+つぼい,じゅんこ
+つちはし,かつみ
+つちの,みのる
+つちや,よしひろ
+まき,ひでのり
+つだ,みつのぶ
+つがわ,けんじ
+つじ,さとし
+つじ,とよかず
+つじ,ひろし
+つかだ,ひろゆき
+つかもと,きよし
+つむら,たかゆき
+つなしま,ゆきお
+おくやま,まもる
+つのだ,さだはる
+つのがい,やすのり
+つしま,のぼる
+つつみ,ひろし
+つずき,かつみ
+つるおか,ひでと
+うちだ,ひさし
+うちだ,まさる
+うちだ,まさふみ
+うちだ,やすし
+うちの,あきひこ
+うちのくら,めぐみ
+うちやま,みちはる
+うちやま,たかのり
+うちやま,のぶひろ
+うだ,けいじ
+うえだ,しげる
+うえだ,なつこ
+うえだ,よしと
+うえだ,としはる
+うえはら,しげる
+うえはら,まさお
+うえはら,しんじ
+うえじま,ひろゆき
+うえき,えりこ
+うえむら,くにひろ
+うえの,たかひで
+うえの,とくひろ
+うえの,ゆうじ
+うえやま,よしこ
+うい,けいすけ
+うめだ,しょういち
+うめだ,あつし
+うめだ,ちはる
+うめだ,けんじ
+うめはら,まこと
+うめかわ,まさのり
+うるしだに,まさゆき
+いのうえ,たけし
+うさみ,ゆうこ
+うしまる,たつひろ
+うしやま,かつゆき
+うすい,こうへい
+うすい,おさむ
+うつみ,じろう
+ささがわ,かずあき
+そめや,けんじ
+わだ,まさお
+わだ,まさよし
+わだ,よしあき
+たのうえ,ゆういち
+わしだ,ひであき
+わたい,みちあき
+わたなべ,まさゆき
+わたなべ,あきお
+わたなべ,かずひさ
+わたなべ,さとし
+わたなべ,ひでき
+わたなべ,とおる
+わたなべ,ひろゆき
+わたなべ,あきら
+やぎ,かずお
+やご,まさひこ
+やはぎ,なおふみ
+やくし,おさむ
+やまだ,れいき
+やまだ,たかし
+やまだ,とみやす
+やまだ,としひろ
+やまだ,としお
+やまだ,よしお
+やまだ,ゆか
+やまがた,たけし
+やまぎし,まさえ
+はり,まさゆき
+やまぐち,かつし
+やまぐち,ともかず
+やまぐち,ともみ
+あおつか,よしさと
+やまぐち,まさのり
+やまじ,みちお
+やまもと,ひろのり
+やまもと,じゅんいち
+やまもと,けんじろう
+やまもと,かずひろ
+やまもと,ひろふみ
+やまもと,たかゆき
+やまもと,あきひで
+やまもと,としのり
+やまもと,えいじ
+やまもと,まなぶ
+やまもと,としゆき
+やまもと,なおふみ
+やまむら,ともかず
+やまなか,ゆたか
+やましな,しんじ
+やました,ゆきひろ
+やました,りんじゅ
+やました,けんじ
+やました,ひとし
+やまて,けい
+やまうち,あきら
+やまざき,ゆきひさ
+やまざき,のぼる
+やまざき,ひとし
+やなぎ,かずお
+やなぎだ,こういちろう
+やなぎだ,みほ
+やない,さとし
+やなか,ただし
+やすだ,まさみ
+やすだ,いわお
+やすだ,せきこ
+やすもと,かずや
+やつか,なおき
+やざわ,みずほ
+よだ,てつや
+よどがわ,のりお
+よだ,ひろのり
+よこはた,ひろや
+よこやま,いわお
+よこやま,しげる
+よもり,あきよし
+よねもち,よしつぐ
+よろずや,なおひさ
+よしだ,たつぞう
+よしだ,たかし
+よしだ,のりお
+ふじさき,こういち
+よしだ,ひとし
+よしだ,てつお
+よしまつ,ちはる
+よしもと,ゆうすけ
+よしむら,かつや
+いしばし,ただし
+よしの,たつや
+たかの,けいご
+ゆはし,しょうこ
+えだひろ,みどり
+はらだ,まさゆき
+はやさか,りゅうせい
+いながき,まさき
+いのうえ,さとし
+いしはら,たかし
+こじま,やすひさ
+こすぎ,しんご
+くぼた,なるみ
+もり,たかし
+なかばやし,なおひさ
+ねもと,たかし
+にのみや,けい
+おがわ,めぐみ
+おおたに,まさこ
+せき,くみ
+しぶたに,つとむ
+しんと,ひろゆき
+そぶえ,ひとし
+たかはし,たけし
+たかせ,まみこ
+とよだ,ひろひで
+うえだ,しんたろう
+やまもと,やすゆき
+やまずみ,ひろし
+よしだ,こうじ
+あさかい,なるとし
+ふくた,かずみ
+かわさき,かずお
+ひろせ,よしかず
+かさはら,せつこ
+おざわ,けいいち
+かとう,けいいち
+なかむら,せいえい
+たぐち,ひろむ
+あだち,りょうせい
+あかし,よしひさ
+あきやま,えみ
+あおき,しょうじ
+あらき,ともたけ
+あさひ,ふみのり
+あさの,としひこ
+あわの,おさむ
+あわの,じゅんじろう
+どうじ,なおゆき
+どうぞの,せいや
+ふちかみ,かつろう
+ふじい,けんじ
+ふじい,こういち
+ふじいえ,のぶや
+こわ,しゅんいち
+ふじしろ,まさお
+ふじた,ようこ
+ふじた,ひろゆき
+ふじわら,こうじ
+ふくだ,なおゆき
+ふくだ,たつお
+ふくだ,けん
+さいとう,おさみ
+ふくやま,じゅんいち
+ふるはた,こうじ
+ごとう,ひろかず
+はむろ,おさむ
+はせ,たくひさ
+はしもと,まさひろ
+はしもと,じゅんいち
+はっとり,じゅん
+はやし,かつひこ
+はやし,としあき
+はやし,まさかず
+はやし,しげみつ
+はやし,めい
+はやし,まさつぐ
+ひび,ひろゆき
+ひぐま,たくや
+ひらい,ひろたか
+ひらかわ,つねとも
+ひらの,かずひこ
+ひろなか,みのる
+ほりぐち,のぶあき
+ほさか,さとし
+ほそや,せいじ
+いちい,しげゆき
+いちかわ,もとひろ
+いぐま,えいいち
+いいさか,まゆみ
+いかわ,いわお
+いけだ,あゆこ
+いけだ,いくじろう
+いけがみ,まもる
+いのうえ,しろう
+いのうえ,ひさあき
+こばやし,とくじろう
+いしばし,やすひさ
+いしだ,よしゆき
+いしまる,みわ
+いしずか,としゆき
+いそ,ひであき
+いとう,ひであき
+いとう,あきひこ
+いとう,まさひろ
+いとう,さわこ
+いとう,てつや
+いとう,よしみね
+いとう,けんいち
+いわた,さとし
+かりや,せいいち
+がさき,しげお
+かが,かずひさ
+かげやま,つよし
+かじなみ,たかゆき
+かみひらた,ひろゆき
+かなもり,たつや
+かねこ,てるお
+かねこ,よしお
+かにわ,あきら
+かさま,のりまさ
+かせ,ひろゆき
+かしむら,ふみとし
+かたおか,けんじ
+かとう,じゅんこ
+かとう,けいじ
+かとう,こうた
+かとう,あきひこ
+かとう,のぶひで
+かわち,けいこ
+かわぐち,ちさと
+かわの,みつお
+かわしま,てつじ
+きくち,ともあき
+きもと,よしひろ
+きむら,かつや
+きのした,てつ
+きしはら,つぐあき
+きしかわ,ひでゆき
+きた,りえ
+きたがわ,みちはる
+きたの,りえこ
+きたやま,せいこ
+きよおか,まさよ
+きよせ,つかさ
+こばり,たてき
+こばやし,かおる
+こばやし,こうたろう
+こぼり,たまみ
+こいわ,たけし
+こじま,ふみよ
+はしもと,こういち
+こみやま,たかひろ
+こんど,ともゆき
+こんど,のりこ
+こんど,ようすけ
+こしかわ,あきふみ
+こてがわ,けんじ
+こわ,のぶゆき
+くぼた,しょういち
+くぼた,ひろゆき
+くどう,はやと
+くが,よしひろ
+もり,ゆきひろ
+くにたけ,はじめ
+くらかけ,ひろかず
+くり,まさひと
+くさふか,しのぶ
+くわばら,とおる
+まちだ,ひろゆき
+まるやま,ゆき
+たけうち,あきお
+まつば,あつし
+まつばら,たけろ
+まつだいら,まき
+まつもと,よりこ
+まつもと,よしあき
+まつなが,みほ
+まつお,まさや
+まつお,のりゆき
+まつお,しんや
+みくに,やすし
+みながわ,わたる
+みながわ,しげる
+みのて,ともあき
+みた,よしくに
+みとめ,たけし
+みつやま,しゅういち
+みやち,たかふみ
+みやじ,こうじ
+みやじま,みつお
+みやた,けいこ
+みやざき,きよあき
+みやざき,まこと
+みやざと,よしなり
+みやざわ,ひろき
+みぞぐち,もとこ
+みずい,まさよし
+もんの,えいじ
+もり,みつひろ
+もり,のりすみ
+もりた,くるみ
+もりた,としあき
+もりやま,まりこ
+むらかみ,りゅういち
+むらかみ,こういちろう
+むらかみ,みのる
+むらまつ,しんすけ
+むろぞの,ひろあき
+ながぶち,ひろし
+ながの,みつる
+ながせ,りゅういち
+ながたに,しほ
+なごや,ひろあき
+なかがわ,かおり
+なかみち,しょう
+なかむら,じゅんいちろ
+なかむら,まさのり
+なかの,ひろし
+なかしま,ひろのり
+にしだ,じゅん
+にしはら,あつと
+にしむら,しんや
+にしおか,かずひこ
+のぐち,のぼる
+のせ,まさずみ
+おばた,ゆうじ
+おちあい,いくこ
+おちあい,ひでひこ
+おがわ,たかし
+おがわ,まさと
+おがわ,たみや
+おがわ,かつとし
+おぎの,まゆみ
+おぐら,たかあき
+こんど,やすゆき
+おおえ,まさみち
+おおがき,じろう
+おおにし,のりあき
+おおの,まさみち
+おおた,ひろし
+おしろ,かずしげ
+おおた,たかし
+おおたしろ,ひでき
+おおつ,まさかず
+おおつ,めぐみ
+おおやぎ,えいじ
+おおやま,ちはる
+おかもと,ひろぶみ
+おかやま,みつより
+おけたに,たつこ
+おくやま,くみこ
+おのでら,ひでとし
+おざわ,みのる
+さいとう,かずひで
+さいとう,てるお
+さいとう,たかのぶ
+さかぐち,ひろかず
+さかなか,もとむ
+さかにわ,よりこ
+さかうち,としたか
+さくらい,つとむ
+さくらい,まさゆき
+さの,たくや
+ささき,まさみ
+ささき,えり
+ささき,りえ
+ささま,まさかず
+さとう,たけや
+さとう,ひろゆき
+さとう,たかし
+さとう,みわ
+にしまた,てつお
+さわだ,まさひさ
+せんば,ゆういち
+せと,よしのり
+しぶや,ゆきお
+しい,みさこ
+しまだ,こうへい
+しまだ,みえ
+おかもと,まさとし
+しながわ,さちえ
+しんかわ,ひさや
+しんきゅう,まさゆき
+しのだ,てるえ
+しのはら,せいいち
+あさかわ,かおる
+しおはら,まさと
+しろた,かつひろ
+すぎもと,かずひで
+すぎやま,きよたか
+すぐち,のぶこ
+もろとみ,はるこ
+すずき,まさふみ
+たぐち,あきお
+たぐち,ゆうじ
+たはら,ひろゆき
+たかぎ,よしお
+たかはし,かずお
+たかい,けんじ
+たかやま,かずこ
+たけ,なおき
+たけばやし,りゅうじ
+たけかわ,じゅんこ
+たけうち,かほる
+わたなべ,こうじ
+たけうち,ひでき
+たみや,まさかず
+たむら,ひろし
+たなべ,まさひろ
+たなか,けいこ
+たなか,のぶこ
+たなか,つよし
+たにぐち,あつし
+たにぐち,かずひろ
+たにむら,たつお
+たのうえ,あきひろ
+たるさわ,あきこ
+たしろ,としはる
+てらだ,ゆきひこ
+とうが,ひでみね
+とがし,しげお
+とうごう,しんや
+とくなが,あやこ
+ともの,かずみ
+とよだ,ようじろう
+つちや,ひろあき
+つかはら,のぶひろ
+うらさき,ゆうじ
+わだ,ともやす
+わだ,れいこ
+わたなべ,まさとし
+わたなべ,ふみお
+やぎぬま,けいこ
+やまだ,としあき
+やまだ,ひさし
+やまだ,けいじ
+やまもと,まさあき
+やまもと,ひでと
+やまもと,たつや
+やまもと,ゆきひろ
+やまなか,ちひろ
+やまなか,かおる
+やました,まさひろ
+ひぐち,じゅんじ
+やまざき,ふみの
+やなぎ,ひろし
+やすだ,のぶゆき
+やすえ,としや
+よこえ,のぶあき
+よこやま,りえこ
+よねはら,こういち
+よねみつ,まこと
+よりまつ,ともこ
+よしだ,ふみひろ
+よしの,みつひろ
+よしたき,おさむ
+ゆかわ,じゅんや
+ゆり,ともお
+もり,たかひさ
+ささき,かつひこ
+しらはま,たけひろ
+てんぱく,ゆういちろ
+うちだ,なおや
+やまうら,とおる
+まつぐま,ふみこ
+あべ,ひろゆき
+あべ,かつみ
+あべ,かずお
+あべ,なおあき
+あだち,ななお
+あいはら,つよし
+あじま,やすあき
+あかさか,とおる
+あきもと,こうぞう
+あきやま,たかし
+あきやま,たつや
+あくね,ひろし
+あまの,まなぶ
+あまの,ちあき
+あめみや,まさつぐ
+あんどう,みき
+あんどう,みわ
+あんどう,かずお
+あんじき,ゆうこ
+あんぺいじ,しゅんいち
+あおき,よしこ
+あおき,しげはる
+あおき,ゆきこ
+あおき,じゅん
+あおき,としあき
+はらしま,りか
+あおき,つとむ
+あおき,なおひさ
+あおやぎ,たかゆき
+あおやま,よういち
+あおやま,けいすけ
+あらい,こういち
+あらき,まこと
+あらき,かつじ
+あらた,みき
+あらや,しんいち
+こばやかわ,やすひろ
+ありた,なるひと
+あさば,よしゆき
+あさか,ともちか
+あさくら,たつお
+あさの,しゅうじ
+あさの,ともあき
+あしべ,まさひこ
+あわみや,ひろゆき
+あざみ,つとむ
+あぜやなぎ,ひろみ
+あずま,りえ
+あずま,たかゆき
+あずま,なおゆき
+ばば,よしかず
+ばば,かつゆき
+ばば,だいすけ
+ばなか,かずや
+さたけ,けいこ
+ちば,もとはる
+ちぎら,のぶひこ
+ちはら,たかふみ
+ちかい,あつし
+ちゅうま,たけし
+だい,まさひろ
+だいお,ひでき
+だて,ひろし
+でぐち,こうじ
+でわ,えみこ
+どい,たいぞう
+えびさわ,ひろみつ
+なかむら,たかこ
+えいもり,はるみ
+えんど,なおき
+えんど,たかお
+えのもと,けいこ
+ふじい,ひろかず
+ふじい,けんいちろ
+ふじい,たつのり
+ふじい,みつよし
+ふじい,としあき
+ふじかわ,しのぶ
+ふじもり,あきこ
+あおき,あきら
+ふじもと,なおや
+ふじおか,てつろう
+ふじた,やすひさ
+ふじた,むつお
+ふかお,しんいち
+ふくだ,かつひこ
+ふくだ,ひろし
+ふくい,ひでお
+ふくい,こうじ
+ふくもと,ひでたか
+ふくしま,ひでのぶ
+ふくしま,のぶこ
+ひの,さち
+ふくざわ,きょうこ
+ふくざわ,みきこ
+ふなだ,ゆうこ
+ふるだて,けいこ
+ふるや,けいすけ
+ふたむら,みきや
+なかむら,もとひさ
+ごとう,しげき
+ごとう,かずや
+ごとう,かいちろう
+ごとう,ようこ
+はば,ようこ
+はちやま,まさみ
+はぎわら,しん
+はまべ,たかゆき
+はまだ,よしみ
+はまだ,たかひで
+まえおか,ひとし
+はなみ,やすひで
+はなおか,あきこ
+せざい,なおき
+はら,りょうじ
+さとう,せいご
+はら,あつし
+はらだ,なつみ
+はらだ,えいいち
+はらだ,かずひこ
+はらだ,まさあき
+はらだ,みつのり
+はりま,なおき
+ほんま,のぶあき
+はるやま,しげる
+はせ,よういち
+はせがわ,たつお
+はせがわ,やよい
+はせがわ,けんたろう
+はせがわ,あきひこ
+はしぐち,ひとし
+はしもと,かつこ
+はしもと,かずや
+はしずめ,こうたろう
+はしずめ,みわ
+はしずめ,しゅんすけ
+はた,しんいちろう
+はたの,ちから
+はたの,かずとも
+はとり,なおき
+はっとり,たけし
+はっとり,よういち
+はっとり,あきひこ
+はっとり,ゆき
+はっとり,さとし
+はっとり,まさき
+はっとり,わたる
+はやかわ,けいこ
+はやかわ,なおみ
+はやみ,すみひと
+はやし,ひであき
+はやし,ゆみこ
+はやし,まさたか
+はやし,まゆみ
+はやし,やすひろ
+ささたに,あきら
+はやし,まさのり
+はざま,せいいち
+へんみ,かなこ
+ひび,ともみ
+ひだか,とうこ
+ひだか,ゆうこ
+ひだか,たろう
+ひえだ,みちかず
+ひがき,しょうじ
+ひがし,よしひさ
+ひいどめ,ひろみち
+ひじくろ,せいいち
+ふくい,いさお
+ひま,よしき
+ひおき,とうめい
+ひらい,まり
+みき,まさゆき
+ひらの,ふきよ
+ひらの,かずひろ
+ひらた,しろう
+ひらつか,ふみかず
+ほだ,ひろき
+ひらやま,なおこ
+ひろべ,きくみ
+ひろい,まさひろ
+ひろさわ,まさひろ
+ひろさわ,なおこ
+ひろすえ,じゅんこ
+ひろた,おさむ
+はやま,ゆうこ
+ひろわたり,さゆり
+ひさもと,みかこ
+ひさの,よしあき
+ひさゆき,ゆかり
+ひしだ,ひろし
+ひしたに,やすし
+わだ,ふみえ
+ひやま,のぶひこ
+ありくら,ゆたか
+ほんだ,みのる
+ほんだ,けいすけ
+ほんごう,まさと
+ほんま,ゆういち
+ほんま,あきのぶ
+まつもと,けんた
+ほり,まなぶ
+ほり,あきと
+ほりべ,としゆき
+ほりえ,あきのり
+ほりえ,まさひこ
+ほりえ,ただし
+ほりうち,よしふみ
+ほしば,とおる
+ほしかわ,ひでお
+かとう,なおき
+ほしな,こういち
+ほり,のりゆき
+ほしの,たかし
+ほそだ,のぶお
+ほった,さおり
+ほちど,たかや
+いぶか,よしてる
+いちかわ,ひとし
+いちかわ,まりこ
+いちます,つとむ
+いちのせ,かつみ
+いで,まさひこ
+いがらし,まさと
+いがた,えいいちろう
+いい,ゆりこ
+いいだ,まさよし
+いいだ,まさゆき
+いいだ,しんじ
+いいの,いちろう
+いいより,みちはる
+いいずか,まこと
+いかるぎ,かつや
+いかわ,けいすけ
+いけち,まみ
+いけだ,こういちろう
+いけだ,もとはる
+いけだ,たかこ
+いけだ,たかゆき
+いけがみ,ともひろ
+いけじり,かずや
+いけたき,くにおみ
+いくもと,しん
+いまい,たけし
+いまい,れいこ
+ほそい,けんたろう
+いまい,さぶろう
+いまにし,たけし
+いなだ,はじめ
+いながき,まなぶ
+いなげ,けんいち
+はざま,ひさもと
+いの,じゅん
+いのまた,けいたろう
+いのうえ,りえ
+やすかわ,たかひと
+はる,とおる
+いのうえ,てるお
+いのうえ,つとむ
+いのうえ,ふみのり
+いのうえ,ひろひさ
+いおき,まさみち
+いりえ,のぶゆき
+いさか,とおる
+いさか,わたる
+おおもり,けんいちろ
+いしばし,まなぶ
+いしだ,けいいち
+いしだ,うらら
+いしはら,よしと
+いしはら,はるお
+ひらと,ひでお
+いしい,けいじろう
+いしい,みきお
+いしい,あつし
+いしい,はるお
+いしい,けいじ
+いしい,まさこ
+はねいし,しんすけ
+いしい,やすし
+いしかわ,ようこ
+いしかわ,ようすけ
+いしかわ,よしひこ
+いしかわ,ゆか
+いしかわ,のりこ
+いしおか,よしゆき
+いしつか,としゆき
+いしわた,ありひろ
+いしざか,こうじ
+いしざか,えいいち
+いしざき,こうじ
+いしずき,なおと
+いそ,しげひと
+いそがい,ゆうこ
+いたば,ゆうじ
+いとう,いのり
+いとう,まさひろ
+いとう,まさひろ
+いとう,ばん
+いとう,さとし
+いとう,あつし
+ひだか,ひでつぐ
+いとう,まさひろ
+いとう,ゆき
+にし,しんいち
+いわだれ,よしのり
+いわはし,ゆうこ
+いわき,みずほ
+いわもと,よしのり
+いわさき,のぶかず
+ひらつか,ひろし
+いわさき,ひろゆき
+いわさき,まさゆき
+いわさき,ひろゆき
+じんぐう,さとこ
+いわしげ,まこと
+いわた,ひろし
+じんぐう,よしのり
+ご,やすかず
+かが,かつや
+かがぶ,しんじろう
+かぎやま,ひでお
+かい,ゆうぞう
+かいだ,のりゆき
+かいだ,のりまさ
+かまち,ひろゆき
+かまだ,まさこ
+かまほり,ともひこ
+かまた,こういちろう
+かめだ,まゆみ
+かめい,ふみひこ
+かみの,たけし
+かみの,ひとし
+かみとの,りゅうじ
+かみや,のぶゆき
+かみや,ちあき
+かみやま,けんぎ
+かもん,ひでき
+かもん,えいたろう
+かん,とものり
+かない,のりこ
+かない,すみこ
+かなじ,まさゆき
+かなおか,たみお
+かなざわ,かつひさ
+かんべ,さおり
+かんだ,やすたか
+かんだ,ちえ
+かねき,えいすけ
+かねきよ,ひろと
+かねこ,ひろゆき
+かねした,かずひろ
+かねやす,なおや
+かのう,しんじ
+かのう,たけし
+かんずい,たみゆき
+かさはら,ななこ
+かさはら,ひでひさ
+かさい,えいいち
+かさまつ,くにとし
+かさも,けんいちろ
+たまたに,しま
+かしわぎ,ゆりみ
+かしわぐら,ひでゆき
+かただ,さちこ
+かたおか,なおき
+ほし,ひろと
+かたおか,しゅうじ
+かとう,ひろき
+かとう,やすゆき
+かとう,もりひろ
+かとう,しんいち
+かとう,りょうた
+かとう,けいこ
+かとう,てるひこ
+かとう,じゅんこ
+かとう,みちや
+かとの,きよし
+かつむら,ひでき
+かわばた,いちろう
+かわごえ,あきら
+かわぐち,こうじ
+かわはら,ますみ
+かしむら,ゆうこ
+かわい,なおみ
+かわい,ひろゆき
+かわもと,まなぶ
+かわむら,さとる
+かわむら,しゅうじ
+かわな,ゆきひと
+かわな,まさかず
+かわなみ,ひでひこ
+かわの,しんじ
+かわせ,じゅんいちろ
+はらだ,しゅうこう
+かわしま,のぶこ
+かざみ,なおと
+かずさわ,やすひろ
+きばやし,ゆういち
+きだ,たけし
+きはら,よしひこ
+きくち,ひろし
+きくち,いちろう
+さいとう,けんじ
+きくい,つよし
+きもと,ようこ
+きむら,のぶゆき
+きむら,つよし
+きむら,としつぐ
+きむら,たかひさ
+きむら,はるみ
+きの,かずまさ
+きりの,かずや
+きさぬき,まこと
+きし,まさき
+きし,なおき
+きしだ,さとし
+きしかわ,しん
+ひらて,しんじ
+きしなみ,やすまさ
+きそ,よしお
+きた,ひであき
+きたがわ,なおみ
+きたじま,ひろゆき
+きたじま,せいか
+きたむら,のりこ
+きたの,としゆき
+きたざき,ただし
+きたざわ,たつし
+きよはら,つとむ
+はしもと,おさむ
+のざき,ふみきよ
+こばやし,ふみお
+こばやし,まさゆき
+こばやし,なおき
+こばやし,たかはる
+こばやし,けんじ
+こばやし,あつし
+こばやし,えいじ
+こばやし,さちこ
+こばやし,しょうじ
+こばやし,ともひろ
+こうち,ゆき
+こだま,やすひろ
+こが,あきひろ
+とうどう,しゅういち
+こはら,なおすみ
+こひ,はるみ
+こんの,ひろふみ
+こいけ,とおる
+こいわ,ともゆき
+こいずみ,しゅうご
+こじか,みえこ
+こじま,ながお
+こじま,りちこ
+こじま,かずひこ
+こじま,さとし
+こまつばら,りゅうた
+こみや,きよし
+こもだ,あきよし
+こむろ,としゆき
+こんど,なつみ
+こんど,けんじ
+こんど,けんいち
+こさけ,こういち
+こせ,たかし
+こすぎ,たけし
+こずか,やすのり
+くぼ,はるみ
+くぼ,たけひろ
+くぼ,なおき
+くぼ,しげお
+くぼ,ひろし
+くどう,まり
+くどう,せいいち
+くどう,まさき
+くまかわ,けんじ
+くまくら,けんいち
+くましろ,せいいち
+くまた,しろう
+くにもと,じゅんじ
+くらもち,しゅういち
+くらしま,ひろし
+くりはら,かずひろ
+ひらい,こうじ
+くりはら,よしゆき
+くりはら,かつよ
+くりはら,ゆうじ
+くりはら,てつお
+くりはし,みつのぶ
+くりす,ようこ
+くろだ,あつし
+くろだ,ひろゆき
+くろき,たかひろ
+くろき,ともこ
+くろき,えいじ
+くろめ,まこと
+くろさわ,えいじろう
+くるみや,こうき
+くさやなぎ,まさとし
+くすのせ,なおおみ
+くわはら,しんじ
+まちだ,ようこ
+まだらめ,としたか
+まえだ,さとし
+まえだ,さとる
+まえだ,しんいちろう
+まえがわ,ふみひで
+まえはら,ぎんじ
+まえきた,かずこ
+まきの,たかひろ
+しぶたに,こうじ
+まなべ,よしのり
+まるやま,あきら
+まるやま,ひろゆき
+まるやま,けいいち
+まさおか,たかし
+ますぶち,よしのり
+ますだ,ゆうこ
+ますだ,よしはる
+ますだ,たかとし
+ますだ,たくや
+ますだ,ひろかず
+ますだ,ひろき
+まつば,のぞみ
+はら,けんじ
+まつだ,けんじ
+まつだ,だいすけ
+まつふじ,あきお
+まつふじ,かずなり
+たちくい,みき
+まつい,しんじ
+まつかわ,たかひろ
+まつまる,しゅうさく
+まつもと,あきお
+まつもと,かずのり
+まつもと,あきひこ
+まつもと,のりこ
+まつもと,ひろし
+まつもと,つとむ
+しおばら,しんいち
+まつむら,しゅんいち
+まつむら,よしのり
+まつなが,ゆきこ
+まつなが,まさひろ
+まつなみ,よしこ
+まつお,としや
+まつお,ともひろ
+まつおか,えいこ
+はやしだ,かずひろ
+まつおか,せいいち
+あぜやなぎ,せいじ
+まつおか,しんご
+まつおか,ひろあき
+まつせ,たかゆき
+まつしま,けんじ
+まつした,こうじ
+まつたに,しんじ
+まつわか,さとし
+まつやま,あきら
+まつざき,きくお
+まつなが,まこと
+ほんな,きわむ
+めかた,けんじ
+みかじり,きょうこ
+みかみ,しんすけ
+みかみ,ひでお
+みき,まさゆき
+みみた,みちろ
+みなくち,ふみはる
+みなみ,さとし
+みなみ,ともゆき
+みなみ,あきら
+みなと,しょうじ
+みね,よしたか
+みね,あつし
+みしま,こうじ
+みしま,おさむ
+みその,ひろひさ
+みたむら,まさとし
+みたんだ,けんいち
+みつぼ,よしかず
+みつぼし,としひろ
+はすむら,としふみ
+みつはし,ひろみつ
+しなだ,ひろゆき
+みつま,かずひと
+みやはら,じつや
+みやはら,ひではる
+みやい,みえこ
+みやじま,ゆかこ
+みやもと,かずなり
+みやもと,ひでのり
+みやした,ひろゆき
+みやた,ひろゆき
+みやた,かおる
+みやうち,けんじ
+みやうち,おさむ
+みやうら,たけひさ
+みやざき,たけし
+はしぐち,しげき
+みやざわ,こうじ
+みやざわ,あきお
+みやず,やすひと
+みぞかみ,じゅんいち
+みずの,てつひこ
+みずの,としゆき
+みずたに,のぶゆき
+もちだ,あきひろ
+もちずき,あきお
+もちずき,じろう
+みよし,たかし
+もり,まさき
+もり,まさし
+もり,だいいち
+もり,まさゆき
+もり,てつや
+もり,ひろかず
+もり,つねあき
+もり,いずみ
+もり,ひろかず
+もりぐち,ひろき
+もりかわ,こうじ
+もりなが,まさし
+もりさき,あけみ
+もりた,よういち
+もりた,えいじ
+もりや,むつお
+もりやま,ひでお
+もてぎ,みつひろ
+もとき,くにひろ
+はぎわら,のぶよし
+むかいだ,しこ
+むねひろ,ひでゆき
+むねかた,かずよし
+むらかみ,つよし
+むらかみ,やすひろ
+むらかみ,やすお
+むらこし,ひろこ
+むらまつ,まさと
+むらぬき,けいじ
+むらた,ゆきもと
+むらた,まさき
+むらた,せいじ
+むらやま,よしはる
+やました,あきひろ
+むろた,ひろかず
+みょうじん,みちお
+ながい,のりこ
+ながぬま,ゆきお
+ながお,えり
+ながおか,みほ
+ながさわ,かおる
+ながしま,たかし
+ながしま,よしかず
+ながた,よしやす
+ながた,ちえこ
+はせがわ,ひろあき
+いがらし,かずひろ
+ながやま,けんじ
+ながよし,まさかつ
+ないとう,まさき
+なかばやし,まさのり
+なかがわ,しんいち
+なかごめ,さとし
+なかしま,としあき
+なかじま,やすまさ
+なかじま,ゆうこ
+なかじま,てるみ
+なかじま,くらと
+なかじま,ゆうじ
+なかくき,しんいちろう
+なかまる,りか
+なかみち,みか
+なかもと,ゆきひろ
+なかもと,ひろかず
+なかもと,ひろゆき
+わたなべ,ひろふみ
+なかむら,まさなり
+なかむら,しんいちろう
+なかむら,せいじ
+なかむら,かずのり
+なかむら,ゆうじ
+なかむら,てるゆき
+はぎわら,さとこ
+なかむら,まきこ
+なかむら,ひでゆき
+なかむら,てつや
+なかむら,けんた
+なかの,やすし
+なかお,ゆうこ
+なかお,ひろゆき
+なかおか,ともゆき
+なかしま,さとし
+にしじま,たかし
+なかや,わたる
+なかやま,ひろし
+なかざと,かつあき
+なまため,まもる
+なめら,もりひと
+ななみ,ただとし
+なんば,たかお
+なん,けいすけ
+なんぽ,あきら
+ならぶ,ひでき
+なりはら,ひろみ
+なりとみ,なおき
+なるしま,まこと
+なすかわ,じゅんや
+なとり,けんや
+ねぎし,えみこ
+ねもと,いずみ
+にえだ,とおる
+にいじま,まこと
+にいくら,まさる
+にいつま,けんじ
+にいざわ,よしのり
+にしだ,ひろひと
+にしだ,たけし
+にしだ,えいじ
+にしだ,ひでと
+ひだか,ゆきまさ
+にしだ,やすお
+にしかど,あつし
+にしかわ,えいじゅ
+にしかわ,ともあき
+にしかわ,まさのぶ
+にしもと,ひでや
+にしむら,まさのり
+にしな,きよし
+にしの,ひろかず
+にした,みき
+ふかみ,かずよ
+にしわき,たけひこ
+にしやま,かつし
+にしやま,ひとし
+にしざわ,よしひろ
+にった,ひろよし
+にわた,ほずみ
+にわやま,ちず
+のあみ,くにこ
+のぼりたて,まなぶ
+のだ,たかゆき
+のがわ,ひろや
+のぐち,ともあき
+のぐち,たかし
+のじり,ひろゆき
+のもと,ゆうこ
+のむら,みきこ
+はやさか,かずひろ
+のむら,まさひろ
+のと,そのみ
+のざき,としや
+こさか,やすし
+おばな,あやこ
+おち,まさてる
+おだ,はるのぶ
+おがさわら,かずてる
+おがた,ひろやす
+くき,ゆたか
+おかだ,ひろあき
+おがわ,ひろゆき
+おがわ,まさゆき
+おがわ,やすのり
+おぎはら,かずとし
+おぎの,こういち
+おぶ,みか
+おおはら,ただひこ
+はまもと,やすこ
+おおはら,ゆうじ
+おはし,さとし
+おおかわ,まさと
+おおくぼ,まさあき
+おおみや,せいじ
+おおもり,てつや
+おむら,りょういち
+おおにし,まさたか
+おおの,ひろやす
+おおぬき,かずお
+おおさき,さとし
+おおさき,ゆうこ
+おおさわ,しろう
+おしま,たけし
+おしま,たかお
+おしま,つとむ
+おおた,やすお
+おおた,のぶひろ
+おおた,みか
+おおた,ひろし
+あんどう,けんいち
+おたか,たかあき
+おおたき,ふとし
+おおたに,かずひこ
+おおたに,のりひさ
+おおたに,まさかず
+はやし,ゆきこ
+おおつぼ,たけひさ
+おおつか,よしのり
+おおつか,えいき
+おおつか,あつし
+はやし,えみこ
+おおつる,みちえ
+おふち,としこ
+おおわ,たけし
+おおや,むねお
+おじお,ふみのぶ
+おか,まさとし
+おかべ,あゆむ
+おかだ,まさき
+おかだ,たかや
+おかだ,とおる
+おかだ,ひろゆき
+おかもと,たかゆき
+おかもと,ゆう
+おかもと,ともゆき
+おかむら,ひろくに
+おかむら,けいいち
+おかざき,ひろとし
+おかざき,こうたろう
+おきの,かおる
+おくだ,はじめ
+おくだ,まさのり
+おくがわ,じゅんいち
+はぎはら,けんじ
+おくうち,むねし
+おおみ,あやこ
+おむら,ひとし
+おんだ,かずひろ
+おおの,ゆたか
+おおの,ひょうぞう
+おおの,みのる
+おおの,しゅんすけ
+おのでら,まさひこ
+おのでら,よしのり
+おのでら,としお
+おのむら,みのる
+おのざわ,しんや
+おおぬき,てつろう
+おの,たかあき
+おおやま,ひとし
+おりど,ひであき
+おりしきだ,こういち
+おおさか,ただお
+おやま,たいち
+おざき,たつや
+おざき,よしまさ
+おざわ,ゆうすけ
+こざわ,ひろし
+おざわ,まさはる
+おざわ,たけし
+はたなか,みつひろ
+さえき,りょうこ
+さいだ,ももこ
+さいぐさ,ひろし
+はんだ,たけし
+さいとう,やすとも
+さいとう,まさひさ
+さいとう,しげひと
+さかち,まさお
+さかぐち,こうじ
+さかい,みのる
+さかい,こうぞう
+ひらの,あきひろ
+さかい,あきら
+さかい,ひろみ
+さかい,みきお
+さかい,なおき
+さかもと,たかし
+さかもと,やすひろ
+ひろせ,よしあき
+さかもと,ようきち
+さかた,ともじ
+きしだ,ひろあき
+さこ,あかし
+さくま,まさる
+さくらば,えみ
+さくらい,はるみ
+さくらやま,ひろし
+さめしま,かずよし
+さんべ,まこと
+さるわたり,まさき
+はせがわ,まさと
+ささえ,なおき
+ささはら,りょうじ
+ささき,たかまさ
+ささき,たかし
+ささき,ゆたか
+ささき,ゆきこ
+はびろ,ゆたか
+ささお,かずしげ
+ささおか,ともこ
+ささたに,よしみ
+さた,ともみ
+さたけ,としき
+さとう,じゅん
+ほしの,けいじ
+さとう,まさはる
+はっとり,しんや
+さとう,とおる
+さとう,しげき
+さとう,ゆきたか
+さとう,りょういち
+さとう,たつき
+さとう,けいじ
+さとう,まりお
+さとう,としあき
+さとう,けいいち
+ひらの,ひろあき
+さとう,ひろゆき
+さとう,やすのり
+さわだ,けいいち
+さわだ,こうへい
+さわふじ,たかひろ
+さわき,こうへい
+さわむら,ひろし
+せがわ,しんたろう
+せがわ,かずき
+せき,りつこ
+せき,たいち
+せきぐち,ひさし
+せきね,かずあき
+せきね,かつみ
+ひらの,えいいち
+せんごく,やすし
+せお,ひろし
+せら,ただし
+せら,ひろかつ
+しばはら,かずの
+しばた,かずひこ
+しばた,ともひろ
+はせがわ,ともみつ
+しばた,ゆたか
+しばた,まさたけ
+しばた,まさゆき
+しばざき,まさこ
+しぶたに,ともはる
+しぶや,ともかつ
+しちひょう,きみあき
+しき,まさる
+しきしま,たけし
+しま,あきこ
+しま,こすけ
+しまだ,かつひろ
+しまぬき,たかし
+しまおか,やすたか
+しました,なおひろ
+しまず,けいいち
+しみず,ひでき
+しみず,けいすけ
+はせがわ,ちえこ
+しみず,まさお
+しみず,ゆりこ
+しみず,かずひさ
+しもがい,としこ
+しもかわべ,あきひろ
+しもおか,あきひろ
+しもさか,ひでゆき
+しもやま,てつや
+しんぼり,ひろえ
+しのはら,なおたか
+しのはら,ひさとし
+しのざき,ひろし
+しのざき,よしこ
+しのずか,けんいち
+しんや,ひでこ
+しおた,じゅんきち
+しおたに,けんじ
+しおや,とおる
+しらはま,みちひさ
+しらい,みか
+しらいし,みさ
+しらいし,やすひと
+しらいし,つとむ
+しらき,けいすけ
+しらさき,かずゆき
+しょうなご,たかしげ
+おおやま,みか
+しゅとう,ひろき
+しもいず,よりと
+そえだ,たくみ
+ほりの,ひろかつ
+そとじま,ふとし
+すだ,めいじろう
+すだ,こうこ
+すどう,ひでひと
+すが,はじめ
+すがぬま,ひろかず
+すがわら,けい
+すぎばやし,まさとし
+すぎもと,みか
+すぎもと,のぶこ
+すぎむら,のりひこ
+すぎの,さとる
+すぎさき,しんいち
+すぎさわ,たかお
+すぎた,たかゆき
+はやし,たみ
+すぎうら,とおる
+すぎやま,としや
+すぎやま,しんじ
+すご,やすお
+すいた,よしひさ
+すみだ,あつし
+すみかわ,さとし
+すなが,とおる
+すのはら,まさみ
+すずき,あきら
+すずき,ともゆき
+すずき,よしゆき
+すずき,まさふみ
+すずき,しょうご
+すずき,たけひろ
+すずき,よしのり
+すずき,かずふ
+すずき,あきこ
+すずき,かつひこ
+すずき,しげる
+やまかわ,たつお
+すずき,あさこ
+すずき,あきひこ
+はが,ひろかず
+すずき,いさと
+すずき,かおり
+すずの,かつふみ
+しゅとう,くにひで
+たばら,まこ
+ただ,まさる
+はりがい,たかのぶ
+ただ,まさゆき
+たがしら,みなこ
+たぐち,みゆき
+たぐち,のぶあき
+たじま,しんじ
+たじま,しんじ
+ほった,しゅんいち
+たかだ,とものり
+たかぎ,としかず
+たかぎ,よういち
+たかぎ,ゆうこ
+たかはし,えいこ
+はしぐち,ひろあき
+たかはし,ひろし
+たかはし,なおみ
+たかはし,ひろみち
+たかはし,かつとし
+たかはし,かずこ
+たかはし,かずお
+たかはし,ともひろ
+はせがわ,てるお
+たかはし,けんたろう
+たかはし,ひでのり
+たかはし,かつみ
+たかはし,しんいち
+たかはし,よしみつ
+たかはし,かずひろ
+たかはし,いちたろう
+たかはし,あつのり
+たかはし,けんいち
+たかはし,ふさひこ
+おおみ,けんじ
+たかひら,みのる
+たかい,よしとも
+たかみや,こうじ
+たかなし,りほ
+たかの,みきこ
+たかの,よしひろ
+たかの,たまよ
+たかの,よしひと
+たかの,あきひろ
+はやかわ,もとひろ
+たかしま,ただし
+たかす,かつのり
+たかとうり,ひでひこ
+たかとり,ふさみ
+たかや,のりあき
+たけ,あきひろ
+たけだ,せいじ
+たけだ,いずみ
+ほり,こうぞう
+たけだ,しんいち
+たけはら,ひかる
+たけい,しんいち
+たけもと,あき
+たけもと,あきすけ
+たけなか,けんいち
+はやし,まさひこ
+たかぎ,まさき
+たけとみ,まさのり
+たけうち,みほ
+たけうち,みつお
+たけうち,のぶよし
+たけやす,れいじ
+たけざわ,りょうじ
+たきば,さとし
+たくぼ,たかのり
+はにゅう,つよし
+たまより,ゆうこ
+たもつ,ゆうた
+たむら,ひろゆき
+たむら,あけみ
+たむら,あきら
+たなべ,やすのり
+たなべ,ひでひこ
+たなか,ひろゆき
+たなか,よしゆき
+たなか,こういち
+たなか,あつし
+たけだ,よしこ
+たなか,ただし
+はせがわ,まさる
+たなか,ひでゆき
+たなか,たかよし
+たなか,まなぶ
+たなか,かつき
+たなか,まこと
+たなか,ゆうこ
+たなか,こういち
+たなか,よしお
+たなか,とおる
+たに,ひろこ
+みたに,へいご
+たにぐち,ひであき
+はっとり,ひろこ
+たにぐち,けんいち
+たにぐち,ゆうこ
+たにぐち,かつひこ
+たにかわ,けんし
+たさか,まこと
+たしま,けいすけ
+たてかわ,まさる
+たての,こうじ
+てらじま,はじめ
+てらまえ,せいいちろう
+てらさわ,まこと
+てらやま,みよこ
+てしま,えつまさ
+とだ,もとゆき
+ととみ,たけひこ
+とおやま,ゆきひこ
+ときわ,ちえこ
+ふくやま,けんじ
+とくざわ,まさる
+とみなが,こうじ
+とみた,ひでし
+とみやま,かずのり
+さわむら,たつみ
+とりごえ,さだゆき
+とりたに,ひでのり
+とさか,しゅうじ
+つぼい,まさひこ
+ひらばやし,ともなり
+つちだ,ひろゆき
+つちたに,ひでき
+つちや,しげと
+つだ,ひろし
+つだ,あつよし
+つじ,ひろし
+つじい,かずお
+つじむら,なると
+つじむら,たかし
+つじの,しゅういち
+つじさわ,ゆみ
+つかだ,たいぞう
+つかはら,てつお
+つかもと,やすき
+つかもと,よしみ
+つかもと,けんたろう
+つねだ,まさひろ
+つのだ,たけし
+つのだ,けんいちろ
+つるまる,たかし
+つさか,けん
+つつい,たかしげ
+つつみ,まさのり
+つつみ,まさはる
+つつみはら,たかお
+うちだ,まこと
+うちだ,さだゆき
+はやし,たかゆき
+うちだ,たつや
+うちの,さとし
+うちやま,あやの
+うだがわ,しんいち
+うえだ,ひろゆき
+うえだ,けんじ
+うえだ,たけし
+ねず,としあき
+うえむら,さとし
+うえむら,しょうた
+うえむら,けんいち
+うえの,しんや
+うえの,ともふみ
+うえさわ,としひろ
+うえつぼ,よしたか
+うえつき,よしてる
+うけの,ゆうすけ
+うまはし,ひでふみ
+うめだ,やすたか
+うめむら,かおる
+うみだ,こうきち
+うおずみ,さんぺい
+うらた,せんた
+うしくさ,としゆき
+うすなみ,じゅん
+わだ,じゅんいち
+わだ,かおり
+わだ,みき
+わだ,みつのり
+わかせ,さとよし
+わき,ただし
+わたなべ,たけし
+わたなべ,ともあき
+わたなべ,よしひさ
+わたなべ,ていじ
+わたなべ,よしき
+わたなべ,よしゆき
+わたなべ,かずと
+わたぬき,よしひさ
+わたぬき,ひでお
+わたり,ひろみつ
+はしぐち,じゅんや
+やぶ,こうじ
+やぎぬま,みつあき
+やじま,なおき
+やまだ,しげふみ
+やまだ,よしたか
+やまだ,ゆうすけ
+やまだ,ゆうこ
+やまだ,あきあつ
+やまだ,あきら
+やまだ,ちえ
+やまだ,ひろこ
+やまだ,かずみ
+やまだ,まさよし
+ひさの,りか
+やまだ,さとし
+やまだ,さやか
+やまふじ,たつや
+やまぎわ,やすひこ
+やまぐち,やすひろ
+やまぐち,よしひろ
+やまぐち,のりゆき
+やまぐち,ゆい
+やまぐち,いさお
+やまぐち,てつや
+やまぐち,たけはる
+やまぐち,あきら
+やまぐち,たかひろ
+やまかわ,ゆきこ
+やまもと,ひろし
+やまもと,かなこ
+みずたに,きみお
+やまもと,みどり
+やまもと,みつひろ
+やまもと,よのすけ
+やまもと,なおと
+やまもと,たかし
+やまもと,かつじ
+やまもと,かず
+やまもと,かずあき
+やまもと,ひなこ
+やまもと,しんいち
+やまね,まこと
+やまね,やすひさ
+やました,としお
+やました,かずひさ
+はんだ,いさお
+やまうち,よしや
+やまうち,しんいちろう
+やまうら,たかし
+やまざき,ひろと
+やまざき,かずよし
+やまざき,けんいち
+たむら,まさとし
+やまざき,さとし
+やまざき,たかお
+やまぞえ,たかし
+やなぎさわ,ゆみこ
+やの,たけし
+やすだ,ひでき
+やすはら,けいこ
+こしもと,もと
+はぎわら,みきお
+よこた,てるひさ
+よこやま,たけし
+よもだ,あきら
+よなが,さとし
+よねだ,ひろたけ
+よねやま,さちよ
+よねざわ,えり
+よねざわ,ともひさ
+よしだ,まゆみ
+よしだ,てるやす
+よしだ,かつひろ
+よしだ,まさと
+よしだ,あきひさ
+よしだ,さちこ
+よしだ,けんご
+よしだ,きよひと
+よしぐち,のぶこ
+よしい,ゆきお
+よしいけ,きよゆき
+よしまつ,けんたろう
+よしの,ひさよし
+よしの,しげお
+よしざわ,おさむ
+よつたに,みつひろ
+ゆきざね,せいじ
+ゆやま,よしひさ
+ずし,ゆきお
+あらい,まさと
+ふじき,ゆういち
+ひらの,しげる
+かめやま,ひでのぶ
+こじま,かずお
+なかお,めぐみ
+いわかわ,そうたろう
+つちや,たつや
+いじろ,こうじ
+くどう,ともこ
+ながしま,かずひと
+はしぐち,かつゆき
+つちや,けいこ
+いしまつ,ひろやす
+はらだ,ひろたか
+みずの,ふみお
+ほしの,はるお
+あべ,しげのり
+あべ,たかこ
+あべ,ゆたか
+あべ,えいいち
+あぶかわ,みさ
+あだち,けんたろう
+あいざわ,きりこ
+あじろ,まさゆき
+あかい,としあき
+たもと,みきお
+あかいし,えいち
+あかし,まゆみ
+あきいけ,やすひろ
+あきた,のりちか
+あきやま,むつみ
+あまがい,ひでふみ
+あまがた,たかし
+あまの,みほ
+あめみや,かつみ
+あんどう,かずひろ
+あんどう,たかゆき
+あんどう,だいご
+あんどう,しんご
+あんざい,まさひで
+あおき,まさとし
+あおき,あきふみ
+あおやぎ,あつと
+あおやま,ゆうこ
+あらい,まさし
+あらい,ともなり
+あらき,としみつ
+あらや,ひろあき
+ありま,しんいち
+ありたけ,せいじ
+あさだ,たけお
+あさひ,ゆうじ
+あさの,じゅんこ
+あしだ,さとし
+あしかわ,さとし
+ばば,やすゆき
+ばば,たかはる
+ばば,けんじ
+ちば,じゅんこ
+ごとう,まさひこ
+ちょう,えいじ
+だいど,ゆうこ
+どあい,こうじ
+どい,ともひろ
+ほそい,たくじ
+どい,いさお
+どい,けんいち
+えがしら,ひでたか
+えぐち,やすひろ
+えばら,つとむ
+えんど,しんいち
+えんど,さとし
+あまり,けんじ
+えのもと,きよみ
+えのもと,まさみ
+えのもと,あきら
+えのもと,ちから
+えざき,かずひと
+ふじはら,まさはる
+ふじい,たかし
+ふじい,さつき
+ひるかわ,けん
+ふじい,まさひこ
+ふじさわ,はるみ
+ふじさわ,ひろゆき
+ひご,かつゆき
+ふじた,つよし
+ふじた,たかし
+ふじわら,とおる
+ふかみ,やすゆき
+ふかざわ,たけし
+はせがわ,ようすけ
+ふくだ,じゅんこ
+ふくもと,みつお
+ふくむろ,たかし
+ふくろ,やすこ
+ふくし,ひろみ
+ふくしま,たかみ
+ふくしま,しんいち
+はぎわら,としお
+ふくしま,あきら
+ふなき,なおき
+ふなくぼ,ふみお
+はらだ,みのる
+ふるはた,もとふみ
+ふるかわ,まちこ
+ふるもと,たかし
+ふるや,ともや
+ふしみ,ひろみ
+ごうだ,みきお
+いりえ,しんじ
+いしはら,あきら
+いちかわ,まさゆき
+いば,まみ
+いわさき,さえこ
+いのうえ,あやこ
+いいもり,まさひろ
+いはら,せいじ
+いわむら,しょうた
+いながき,ゆきお
+いしじま,かずひろ
+いとう,しろう
+ごんどう,しゅうじ
+ごとう,すみれ
+いしかわ,まさひこ
+いとう,まさのぶ
+いせき,りこ
+ごとう,ひろゆき
+はだ,ひであき
+はぎわら,みわこ
+はぎわら,ともこ
+はいじま,あいこ
+はまだ,ひろし
+はまの,ひろつぐ
+はまおか,こすけ
+はなど,みのる
+はなた,てつや
+はら,ともひこ
+はら,ゆうじ
+はら,たけし
+はら,きょうこ
+はらだ,しん
+はらだ,たけし
+はらだ,あきひと
+すずき,たけろ
+はらが,たつや
+はらみ,けんたろう
+はらやま,のぶひこ
+はらぞの,のぶひろ
+はせべ,たくじ
+かねこ,ともあき
+つちだ,よういち
+はしもと,りえ
+はしもと,ふみひろ
+はしもと,かなえ
+はしもと,さとし
+はしもと,たかあき
+はしもと,ひでき
+はしもと,ひでき
+はしもと,よしひこ
+はた,けいこ
+はっとり,ひであき
+はっとり,まこと
+はっとり,せいじ
+はやかわ,きよし
+はやかわ,ひではる
+はやさか,よしかず
+はやさき,せいご
+はやし,としひこ
+はやし,たかよし
+はやし,たかなり
+はやし,やすき
+はやし,あきら
+はやしだ,けんぞう
+ひび,かずのぶ
+ひがし,やすひろ
+ひがし,かずお
+ひぐち,こういちろう
+ひじかた,けんじ
+ひじや,よしお
+ひなが,たけし
+ひらかわ,ひであき
+ひらの,ひろこ
+ひらの,いたる
+ひらの,ただお
+ひらお,たかひと
+ひらしま,なおき
+ひらやま,としろう
+ひらやす,ひとし
+ひりき,けんいちろ
+ひろまさ,わたる
+ひろもと,しんじ
+ひろおか,まなぶ
+ひろせ,ゆみこ
+ひろせ,まつたろう
+うめだ,りょういち
+ほんだ,さなえ
+ほんど,たけし
+ほりもと,やすゆき
+ほりの,かずしげ
+ほりうち,たかね
+ほさか,あきこ
+ほしの,まこと
+ほしやま,みぎふみ
+ほそかわ,てつや
+ほそかわ,よしひろ
+ほそかわ,しげお
+ほそや,ひろし
+いばらき,のぶお
+いちはら,ひさみつ
+いちはら,たかし
+いちはら,のぶこ
+いちかわ,けんいち
+いちのせ,さとし
+いだ,たけし
+いでぐち,かずひと
+いど,まさし
+いがらし,かつのぶ
+いがらし,ゆきひこ
+いがらし,ひろし
+いいだ,ひろお
+いいだ,かつとし
+いいじま,こうじ
+いけだ,りょう
+いけだ,ともみ
+いけだ,ともみ
+いけだ,ようこ
+いまい,こうき
+いまいずみ,けいこ
+いまいずみ,みわ
+いまむら,おさむ
+いまむら,みのる
+いもん,かずゆき
+いなだ,ますみ
+いながき,かずや
+いながき,みつや
+いなむら,たかし
+いなむら,とものり
+いの,せいいちろう
+いのかわ,あすこ
+いのまた,かずひと
+いのうえ,ひろかず
+いのうえ,さとし
+いのうえ,しほ
+いのうえ,やすひろ
+いのうえ,ゆうじ
+いのうえ,ゆうた
+いのうえ,こういちろう
+いぬい,しんいちろう
+いぬしま,まゆみ
+いりえ,まさのり
+いさか,しげる
+いしば,ちひろ
+いしばし,だいすけ
+いしばし,ひでき
+いしだ,ひろみつ
+いしだ,ひろし
+いしだ,かつひろ
+いしだ,けいいち
+いしがみ,こういち
+いしぐろ,こうじ
+いしはら,まりこ
+いしい,まさひろ
+いしい,なおみ
+いしい,のぼる
+いしい,せつこ
+いしい,ただし
+いしい,たかはる
+いしかわ,としお
+いしまる,つよし
+かわず,よういち
+いしずか,ゆきお
+いたや,のりひさ
+いいだ,あきひろ
+いとう,ひろみち
+いとう,ひろし
+いとう,いくお
+いとう,かずや
+いとう,しょうこ
+いとう,かずひろ
+いとう,じゅん
+いとう,まこと
+いとう,おさむ
+いとう,よしまさ
+いとう,まさゆき
+いとう,まさみ
+いとう,ひろあき
+いとう,たまき
+いとう,きよたか
+いとう,まさふみ
+いとう,ひろかず
+いとう,ゆきお
+いとう,えいじ
+いとう,みほこ
+いわい,たかゆき
+いわい,かずしげ
+いわみ,きよし
+いわむら,よしたか
+いわなが,なおこ
+いわお,かずあき
+いわさき,りゅうこ
+いわた,きよこ
+いわた,みつひろ
+いわた,しんじ
+いずみ,のぞむ
+じんば,つねのり
+のうち,りえ
+らく,よしのり
+かがみ,ひろし
+かがわ,けいた
+かげやま,たまき
+かい,じゅん
+かじもと,たくや
+かじわら,せいじ
+くりはら,えいじ
+かきむら,じゅん
+かきのき,たかあき
+かきうち,ひろゆき
+かきざき,こうじ
+かこ,としひこ
+かめしま,だいすけ
+かみえす,えいいち
+かみくら,ひろし
+かみむら,こういちろう
+かみたき,まさじ
+かみよしかわ,まさゆき
+かん,たくや
+かない,としかず
+かんばやし,いちろう
+かんだ,よしひと
+かねこ,たかゆき
+かねこ,やすゆき
+かねた,たかし
+かのう,まゆみ
+かりの,ひろし
+かさみ,かなえ
+かさなみ,たかと
+かせ,まもる
+かすが,ひろし
+かすや,まさなり
+かたおか,のりこ
+かとう,なおこ
+かとう,ひろし
+かとう,まさゆき
+かとう,のりあき
+かとう,ただあき
+かとう,けんじ
+かとう,けんじ
+かとう,たかゆき
+かとう,あきひと
+かとう,じろう
+かつまた,くみ
+かつら,まさき
+かわべ,よしゆき
+かわだ,たけし
+かわぐち,ひでき
+さいとう,ひでたか
+かわぐち,いくこ
+かわはた,かおり
+かわかみ,かずよし
+かわかみ,けんいち
+やじま,みつよ
+かわもと,つよし
+かわむら,ひであき
+かわむら,ひろし
+かわむら,じゅんいち
+かわむら,まり
+かわの,まさひこ
+かわの,まさかつ
+かわさき,しげゆき
+かわせ,けんじ
+かわしま,としや
+かわしま,よしはる
+かわしま,ひでき
+かわしま,やすのぶ
+きだ,みのる
+きくち,かずや
+きくち,たかひで
+やまもと,やすひろ
+あきよし,やすひろ
+きくち,まもる
+きくち,たつや
+きくち,みつる
+きくち,あきこ
+きむら,ふみひこ
+きむら,まさひこ
+きむら,あきひこ
+きむら,あつし
+きむら,ひろし
+きむら,まさき
+きむら,みのる
+かとう,しょうじ
+きなせ,ゆうじ
+きね,まさこ
+きの,あき
+きの,かずひろ
+きのした,けいた
+きら,ようこ
+きしもと,とおる
+きたばたけ,あきお
+きたばたけ,たかひこ
+きたがわ,おさむ
+きたがわ,ちかこ
+きたむら,ひろあき
+たかはし,めぐみ
+きたやま,えいじ
+きよなり,ひろし
+こばやし,きよし
+こばやし,としひろ
+こばやし,あきこ
+こばやし,たかし
+こばやし,ひろし
+こばやし,ひろあき
+こばやし,なおき
+いとう,しんじ
+こんの,よういち
+こんの,たかみつ
+こんの,ひろし
+こんの,かずあき
+こいけ,ともふみ
+こじま,わたる
+こくしょう,まさる
+こまき,かずや
+まかべ,さぶろう
+こまつ,たけし
+こまつ,ひろえ
+こんど,しん
+こんど,たくみ
+こんど,まさゆき
+こしば,みき
+よこえ,やすのり
+こてがわ,まさのり
+こんの,かずあき
+こやま,れいこ
+こやま,もとくに
+こやま,ひろたか
+こざす,としのり
+くちいし,かずとし
+くぎみや,りゅうすけ
+くじらい,あつし
+くまのみど,ひろし
+くまざき,ともき
+くれまつ,たかひで
+くりき,まさゆき
+くりやま,としろう
+くりやま,ひろし
+くろべ,なおと
+くろさわ,ともあき
+くろさわ,やすゆき
+くりゅう,よしえ
+くさの,かつゆき
+くわはら,じゅん
+くずの,よしたか
+きゅうだ,たくや
+まぶち,けんいち
+まちた,まさき
+まえだ,よういち
+まえいえ,あきふみ
+まえかわ,ちあき
+ままだ,ひろし
+まなべ,ひろたか
+まなべ,かずお
+まるいち,まさゆき
+まるたに,たかひで
+まるやま,たかこ
+まさおか,たかゆき
+ますだ,たつみ
+ますだ,つよし
+ますだ,よしぶみ
+ますだ,ゆきこ
+ますだ,ひろかず
+まつばら,こうぞう
+まつだ,かつや
+まつだ,ひろゆき
+まつだいら,としふみ
+まつえだ,あゆみ
+まつい,ひでし
+まつい,ひろき
+まつもと,のぶお
+まつもと,せいいち
+まつもと,かずひろ
+まつもと,きよかず
+まつもと,きょうこ
+まつもと,よしき
+まつもと,なりあき
+まつもと,あきのり
+まつもと,けん
+まつもと,としかず
+まつもと,けん
+まつもと,だい
+なかむら,ひろゆき
+まつむら,くみ
+まつなが,けんじろう
+まつの,かずと
+まつお,りゅういち
+まつお,たかお
+まつおか,たけし
+まつおか,かずのり
+まつおか,ただあき
+まつおか,ひろし
+まつおか,あつし
+まつしま,きみお
+まつたに,あや
+まつやま,こうたろう
+みちもと,まゆみ
+みえき,たくろう
+みかみ,かずみ
+みかみ,よしたか
+みながわ,つよし
+みなかわ,しょうこ
+みしま,かずみ
+みしま,しのぶ
+みしま,ひろあき
+みたち,こうじ
+みつだ,なおき
+みつはし,じゅん
+みつい,ひろし
+みつもと,きよみ
+みうら,きょうじ
+みうら,まさひろ
+みやべ,あきら
+みやち,まさゆき
+みやじま,あきのり
+ばん,まなぶ
+みやもと,としあき
+よこえ,こうぞう
+みやさか,けいいち
+みやた,ひろゆき
+みやた,かずお
+みやうち,まさひろ
+うちやま,みきこ
+さかい,りょうすけ
+みやざわ,としあき
+みぞぶち,えいこ
+みぞぐち,あきら
+みぞぐち,いずみ
+みずもと,あつひこ
+みずの,まさよし
+みずの,まさゆき
+みずの,ゆうじ
+みずしま,ゆきお
+みずた,ゆたか
+みずたに,ひさと
+もぎ,かずのり
+もぎ,もゆる
+もぎ,ひろし
+ももせ,だいすけ
+もんま,ゆうじ
+もり,れいこ
+もり,けいすけ
+もり,けんいち
+もり,まさひろ
+もり,りか
+もり,つとむ
+もりもと,ゆきひろ
+もりの,ようすけ
+よしだ,なおふみ
+もりた,ひでのぶ
+もりた,かずひさ
+もりた,かつみ
+もりた,よしや
+もりた,しげお
+もりわき,たくお
+もろ,よしろう
+もたい,ひろし
+もとばやし,さとる
+もとはし,しげまさ
+もとやま,まさのり
+もとざわ,ゆうじ
+むかわ,いつこ
+むなかた,ふみこ
+むらかみ,ひろあき
+むらかみ,よしき
+むらかみ,ひろゆき
+むらかみ,やすこ
+むらかみ,あきひさ
+むらかわ,まさこ
+むらなか,まゆこ
+むらた,とものり
+むらた,ひろき
+むらやま,けんじ
+むらやま,ひろし
+むろはし,こうじ
+むとう,かおる
+むとう,あきこ
+なば,ひろゆき
+ながい,まさる
+ながい,なおあき
+ながの,かつや
+ながの,たまみ
+ながお,やすひろ
+やまもと,かずひろ
+ながおけ,さとし
+ながおさ,あきひろ
+ながしま,かつや
+ながしま,くみ
+ながた,みき
+おおば,さとし
+ながた,しんじ
+ながた,しょうへい
+ながたに,つよし
+ないとう,やすのり
+なかち,よしはる
+なかだ,よしゆき
+なかだい,ゆういち
+なかがわ,なおゆき
+なかがわ,よしゆき
+なかがわ,あつし
+なかがわ,ひろゆき
+なかはら,じゅん
+なかい,けいいち
+なかい,しの
+なかじま,たかし
+なかじま,こうじ
+なかむら,しゅうご
+なかむら,まさゆき
+きみひら,みか
+いとう,たかひさ
+なかむら,こうじ
+なかむら,たつや
+なかむら,かずゆき
+なかむら,はじめ
+なかむら,まさあき
+なかむら,ひろき
+なかむら,みき
+なかむら,ともお
+なかにし,いずる
+なかにし,たかひろ
+なかの,ゆうこ
+なかの,やすあき
+なかの,てつや
+なかの,かずのり
+なかの,あつし
+なかお,あきこ
+なかさく,しょうたつ
+なかせ,ひろたか
+なかた,くるみ
+なかた,ひろみ
+なかた,やすひろ
+なかたけ,たくお
+なかやま,ふみお
+なみき,けいし
+ななさわ,なみじ
+なんば,だいすけ
+なんもく,えみこ
+ねもと,なつこ
+ねもと,みつあき
+にい,よしこ
+にいで,ひでつぐ
+にいくら,ひでや
+にいずま,たいちろう
+にかみ,あきら
+にしばやし,まさひこ
+にしだ,よしや
+にしはら,しきこ
+にしはら,さとし
+にしかわ,たかひろ
+にしかぜ,かずのり
+にしみや,さとし
+にしむら,しんいち
+にしむら,きわむ
+にしやま,ひとし
+にしやま,もとあき
+にった,かつあき
+にわ,きよし
+とうごう,まなぶ
+にわ,かつや
+のぶはら,こうじ
+おがわ,ゆうこ
+のがみ,おさむ
+のがみ,じゅんいち
+のもと,みか
+のむら,まなぶ
+のむら,たかひろ
+のぞえ,はじめ
+ぬまた,てつ
+おだじま,えり
+おおがえり,とおる
+おがた,ひでき
+おがわ,しげる
+おがわ,たけお
+おおぎ,たけし
+おぎくぼ,ようじろう
+おご,ともき
+おぐら,ひろゆき
+おおば,ともひろ
+おおばやし,よりこ
+おおえ,よういち
+おおがま,こういち
+おはし,なおき
+おおいし,けんじ
+おおかわ,やすひこ
+おおきど,まさお
+おおくぼ,ひろゆき
+おおくぼ,ひろふみ
+おおくま,まこと
+おま,まもる
+おまえ,むつろう
+おまえ,たかし
+おおもり,ともひろ
+おおもり,みつよし
+おおもり,なおき
+おおもり,ひろき
+おおもり,まさやす
+おおもと,みつる
+おおにし,あいこ
+おおにし,けんじ
+おおにし,まさてる
+おの,あきら
+おおぬま,ひろき
+おおさか,りさ
+おおさわ,たかひろ
+おおさわ,すみこ
+おしま,たかし
+おしろ,しんいち
+おおた,あさこ
+おおた,あつお
+おおた,ひでゆき
+おおた,まさみ
+おおた,むねやす
+おおた,しんいちろう
+おおたに,やすひろ
+おおつ,ひろゆき
+おおつか,たかし
+おおつき,あきひろ
+おいかわ,みちお
+おか,よしひさ
+おか,ひでき
+おか,ふみこ
+おかだ,みき
+おかだ,やすし
+おかだ,ゆういち
+おかだ,さとる
+おかぐち,のぶひろ
+おかい,ゆたか
+おかまつ,たかひろ
+おかもと,よしあき
+おかもと,えいいち
+おかもと,ひでお
+おかもと,まさぶみ
+おかもと,まさひろ
+おかもと,みちはる
+おかもと,のりお
+おかの,ともひろ
+おかざき,ゆきと
+おきもと,えつこ
+おくの,よしたみ
+おくやま,やすお
+おおみ,しげる
+おおの,なおき
+おおの,ひろふみ
+おおの,ひろし
+おおのせ,じゅんこ
+おのざき,たかし
+おりえ,よしこ
+おざき,まさこ
+とくみや,てつや
+さいち,かおり
+さいとう,しんいち
+さいとう,ひとき
+さいとう,ひであき
+さいとう,ひろたか
+さいとう,ゆたか
+さいとう,やすひこ
+さいとう,たいし
+さいとう,かおる
+はかまだ,かよ
+さかぐち,こうじ
+さかい,まりこ
+さかきばら,たかお
+さかきもと,よしえ
+さかもと,えいじ
+さかもと,えり
+さかもと,ひでひろ
+さかもと,いずみ
+さかもと,けいいち
+みたに,けんいち
+さかうち,くにひこ
+さきもと,まさひこ
+さくま,みつる
+さくらい,もとのり
+さの,りきや
+さの,りゅういち
+さの,しゅうぞう
+ささだ,しゅんすけ
+ささはら,すすむ
+ささき,たかひと
+ささき,としひこ
+ささき,やすふみ
+とだに,つよし
+ささき,せいじ
+さたけ,つねのり
+さとう,やすひろ
+さとう,しんご
+さとう,ひさはる
+さとう,ゆういち
+さとう,よしあき
+さとう,たかかず
+さとう,りえこ
+さとう,とおる
+さとう,ゆういち
+さとう,はるお
+さとう,しんいちろう
+さとう,のぼる
+さとう,こうじ
+さとう,だいすけ
+さとう,あきら
+さとう,けいたろう
+さとう,ともこ
+さとう,じゅんじ
+さとう,ともき
+さわだ,けいたろう
+さわだ,まこ
+さわだ,みちよ
+いわた,まゆみ
+さわい,としひこ
+さわい,そういちろう
+さやの,いくや
+せき,たけし
+せきぐち,まさよし
+せきぐち,みか
+せきぐち,あきら
+せきね,あきひろ
+せきの,たかし
+せんな,としみつ
+せりざわ,ひろゆき
+せと,かつや
+しばた,こういち
+しばた,まさひで
+しばた,けいすけ
+しばたに,さとし
+しぶたに,きょうこ
+しが,さとる
+しげのぶ,かずよし
+しま,みきこ
+しまだ,れいじろう
+しまだ,さとこ
+しまむら,よしみつ
+しみず,たけかず
+しみず,さだみち
+しもばやし,きよし
+しもがわ,こうじ
+しもひごし,てつひさ
+しもいで,たいし
+しなだ,かつみ
+しねい,ゆか
+しんがい,ただし
+しのだ,こうじ
+しのはら,たかひろ
+しのざき,ともよし
+しおや,たくや
+しらはま,たろう
+しらいし,ゆういち
+しらいし,たかし
+したら,たけし
+しょうじ,ひろゆき
+しょうじ,しん
+ますやま,まさひで
+しゅとう,ゆみこ
+そえだ,ひでかず
+そね,ひでき
+そねだ,たくお
+そのべ,まさひろ
+そのべ,まさし
+そらの,みほ
+すだ,なおひろ
+すがい,のりゆき
+すがわら,せいま
+すぎもと,たかひろ
+すぎもと,たかまさ
+すぎうら,よしのり
+すぎやま,まさひろ
+すぎやま,ひでまさ
+すぎやま,れいこ
+すじゃく,たかやす
+すか,とおる
+すけがわ,ひろゆき
+すみなが,きみこ
+すみおか,ともや
+すなやま,けんいち
+すずき,まさや
+すずき,ひろし
+いしい,やすひこ
+すずき,しげる
+すずき,たかゆき
+すずき,ひでひろ
+やましろ,ひでき
+すずき,ひろし
+すずき,
+すずき,かつゆき
+すずき,かずのり
+すずき,こういち
+たばこ,くみこ
+たばた,まさき
+なかじま,てるゆき
+たばた,よしつぐ
+たちばな,としゆき
+たがみ,たいせい
+ままだ,けんじ
+たがわ,まこと
+たじま,もとひろ
+たかばやし,ゆき
+たかだ,ともよ
+たかだ,たかひろ
+たかぎ,えみ
+たかぎ,だいすけ
+たかはし,しんや
+たかはし,ゆきお
+たかはし,ひろき
+たかはし,ひろこ
+たかはし,いずる
+たかはし,まさき
+たかはし,みしょう
+わたなべ,まき
+たかはし,やすし
+たかはし,ゆたか
+たかはし,こうへい
+たかはし,まさふみ
+たかい,ひでき
+たかくら,けんすけ
+たかくら,しほ
+たかまち,かつのり
+たかまつ,あきよし
+まつなが,やすひろ
+たかもと,よしき
+たかむら,のぶかつ
+たかおか,ごう
+たかすぎ,はるこ
+たかや,ひであき
+たかやま,ひろゆき
+きたはら,けんいち
+たけだ,くにひで
+たけだ,まさひろ
+たけはな,まさかつ
+たけまつ,まさみ
+たけおか,みのる
+いしかわ,もとふみ
+たけした,なおき
+たけたに,のぶゆき
+たけうち,さとし
+たけうち,さとし
+たけやま,たけし
+たけざわ,きよじ
+たきざわ,つとむ
+たきざわ,ちから
+たまい,ともゆき
+たなはし,のぶゆき
+たなか,けんたろう
+たなか,こすけ
+たなか,ひろゆき
+たなか,ひろし
+たなか,けいこ
+たなか,もとき
+たなか,せいじ
+たなか,かずひと
+たなか,ゆうこ
+たなか,えいいち
+たなか,えいじ
+たなか,つねひろ
+たなか,まさひろ
+たなか,のりひろ
+たなか,かずなお
+たなか,のぼる
+いしだ,けんや
+たなか,かずお
+たにぐち,しげる
+たにぐち,けんいち
+たにい,ゆりこ
+たにむら,みちよ
+たにおか,ともこ
+たんの,ゆきお
+たぬま,まもる
+よこやま,わたる
+たしろ,あきら
+たしろ,けんいち
+たて,ひでと
+たうら,まこと
+たぞえ,ゆうこ
+たずけ,まこと
+てんも,かよこ
+てらだ,ちえこ
+てらもと,えいじ
+てらおか,けい
+てずか,ひろゆき
+とぐち,じゅんこ
+とうま,こういち
+とうま,ひろやす
+とおやま,かずゆき
+ときおか,たかしげ
+たにやま,ひであき
+みうら,そういち
+とくら,かずお
+とくやま,ひろや
+とみいし,くにひこ
+とみかわ,のりこ
+とみなが,あつし
+とみた,ふみえ
+とみた,もとよし
+おおもり,まさゆき
+ともた,ひでひこ
+ともの,けいじ
+とりかい,なおき
+とりうみ,よしのぶ
+とつか,あやこ
+とよだ,けいいち
+とよだ,みきひろ
+とよおか,たくのぶ
+つちだ,こうじ
+つだ,こういち
+つじたに,まさつぐ
+つかもと,よしてる
+つかもと,ひろあき
+つかわき,まさたか
+つるまき,ようこ
+いちばんがせ,ゆきこ
+さかい,みほこ
+うちだ,かずひろ
+かなおか,こうへい
+うちだ,たつや
+うちうみ,なおひこ
+うちやま,ふみたか
+うちやま,ゆき
+うだ,あつこ
+うだがわ,たろう
+おしま,あつこ
+うえだ,えいか
+うえだ,よしみつ
+うえはら,ひでゆき
+うえむら,まさき
+うえの,おさむ
+うえの,ひろのり
+うえすぎ,まさみ
+うえつき,たいち
+うかわ,まさひで
+うまずめ,しんや
+うめはら,としお
+うめむら,ひろふみ
+うめざわ,ひろし
+うの,ひろし
+うの,ひさや
+うらもと,けい
+うるま,まさふみ
+うしば,みのる
+ながた,りゅうた
+うしぐさ,としあき
+はせがわ,よしあき
+さかまき,ゆり
+うわべ,まさゆき
+わだ,あきこ
+わかお,けいじ
+わかお,れいこ
+わきた,ようこ
+いのまた,ひろみ
+わくい,まさや
+わしざわ,けいこ
+わしずか,こうじ
+わたべ,まさとし
+わたなべ,のりゆき
+わたなべ,かずひろ
+わたなべ,しげる
+わたなべ,たかお
+わたなべ,つよし
+わたなべ,ともゆき
+わたなべ,だいち
+わたなべ,ひでき
+わたなべ,ひろかず
+わたなべ,ひろみ
+とよた,ひとし
+わたり,けいこ
+とみやす,としひさ
+やえがき,よしあき
+やぎ,みよこ
+やぎ,よしまさ
+やぎぬま,だいすけ
+やく,あきと
+やまだ,かずひこ
+やまだ,まき
+やまだ,ようこ
+やまぎし,あつし
+やまぐち,こういち
+やまぐち,としゆき
+やまぐち,かおる
+やまぐち,あきら
+やまこし,だいすけ
+やまもと,まさひろ
+やまもと,けんじ
+やまもと,たけお
+やまもと,せいいち
+やまもと,しゅうじ
+たちばな,まさとし
+やまもと,じゅん
+やまもと,けんいち
+はらたに,ともこ
+やまなか,たかし
+やまね,よしふみ
+やました,あきひこ
+やました,ひろし
+やました,なおこ
+やまたに,たかし
+やまうち,ともこ
+やまざき,あきら
+やな,ひろあき
+やなべ,ひろき
+やながわ,りょう
+やなぎ,としあき
+やなぎだ,りゅういち
+やさか,かずひで
+やすだ,まさみつ
+やすふく,ゆたか
+やすかわ,きよかず
+よこさわ,たくや
+よこた,ひろし
+よこた,かずひろ
+はらだ,こすけ
+よこうち,まさひろ
+よこうち,しんすけ
+よこやま,まこと
+よこやま,かずのぶ
+よねだ,なおき
+よねの,なおみ
+かさはら,さとみ
+よしだ,ひでお
+よしだ,じゅん
+よしだ,ひろし
+よしだ,なおと
+よしだ,ひろし
+よしどめ,しずか
+よしはら,たかひろ
+よしい,さとる
+よしい,まこと
+よしかわ,しおり
+よしみ,たいき
+よしの,ふみお
+よしの,やすし
+よしの,ともこ
+よしおか,けんいち
+よしおか,こういちろう
+よしたけ,ただし
+よしざわ,としかつ
+ゆずはら,こうじ
+ぜんげ,かずたか
+ずし,みお
+ごみ,ひろき
+ごとう,ひろし
+いけだ,たけはる
+いま,まさひろ
+あべ,まなぶ
+かとう,しげる
+かわばた,しげる
+こばやし,ゆきひこ
+こんど,くにむね
+くぼ,まさひこ
+くらもち,ようこ
+まるやま,よしあき
+もりかく,ゆきお
+むらおか,ひろゆき
+ながしま,ようこ
+なか,としや
+なかはら,たくや
+なかむら,つよし
+なかせ,とみ
+なりた,ひさえ
+にしむら,えみこ
+のなか,ひでなお
+おがわ,よしお
+おぐら,とおる
+おおみ,まこと
+おかの,まさや
+しまだ,じゅんじ
+しみず,かずのしん
+しむら,ひでゆき
+たかはし,みつまさ
+たかまつ,けんいち
+うえだ,むつお
+うじ,ごう
+うつみ,しゅういち
+あべ,よういち
+こんど,たかし
+たかのうち,けんさく
+いのうえ,むねひろ
+なかはら,ひとし
+あだち,ゆたか
+なかの,ひろき
+あいば,のりあき
+あいば,たけし
+あいば,さとし
+あいだ,まさひろ
+あいはら,あつし
+あかいし,まさおみ
+あかいわ,よしひろ
+あかおぎ,としひで
+あきた,つよし
+あまの,なおこ
+あおき,ひろこ
+あおき,ゆきこ
+あおぬま,ひとし
+あおやぎ,えいじ
+あらき,あきら
+ありまち,としのぶ
+ありた,ひであき
+あさだ,てつや
+あさえだ,たかひろ
+あさはら,よしはる
+あさかわ,かずひこ
+あさもと,つとむ
+あさの,ゆたか
+あたぐち,ひろし
+あやき,はるこ
+ばば,しゅんすけ
+ばば,かおる
+ばば,ななこ
+ばん,たけし
+だいこく,みちよ
+だて,しげひこ
+さの,じゅんいち
+みつおか,しげき
+でんだ,かずひこ
+どい,えみ
+えんど,ともひこ
+えんど,よういちろう
+えざわ,なりひで
+ふじえ,たけふみ
+ふじい,かずひろ
+ふじい,まさあき
+ふじまき,まさかつ
+ふじもと,みわ
+ふじもと,みきお
+ふじむろ,こうじ
+もろずみ,かんじ
+ふじさわ,けんじ
+ふじた,ひろゆき
+ふかせ,たつや
+ふくだ,しせい
+ふくどめ,たかし
+ふくい,ひさし
+ふくなが,ふみひさ
+ふくしま,ひでお
+ふくざわ,まりか
+ふるばやし,あきら
+ふるかわ,ひでき
+ふるかわ,あけみ
+ごう,はな
+ごまる,すすむ
+ごとう,しょう
+ごとう,たつや
+ごとう,ちずか
+のもと,かおる
+はぎわら,りゅうた
+はいやま,きょうこ
+はま,かずみち
+はまち,しゅういち
+はまだ,なおひさ
+はまたに,しげお
+はない,やすひと
+はなた,ひらく
+はねじ,ひろこ
+はんざわ,まさひこ
+はら,みほ
+はら,しんじ
+はらだ,かずひで
+はらだ,きよし
+はせがわ,ゆたか
+はせがわ,なおこ
+はせがわ,てつや
+はしぐち,まさよし
+はしもと,やすゆき
+ごとう,けい
+かじわら,よしこ
+はすみ,つぐのり
+かたやなぎ,えいいち
+はたけやま,しんいち
+むらい,みつゆき
+はたに,りゅういち
+はっとり,やすのぶ
+はっとり,たかゆき
+はやし,たかゆき
+おおすみ,まさこ
+はやし,かずなり
+はやし,よしのぶ
+はやしだ,さき
+ひが,たけお
+ひがし,りゅうすけ
+ひがしだ,しゅういち
+とよだ,ゆういちろ
+ひの,たけひこ
+ひら,てつや
+ひらもと,じゅんこ
+ひらお,まさと
+ひらお,まさゆき
+ひらた,なおみ
+ひらやま,たけし
+ひろい,たかし
+ひろかわ,のりかず
+ひろかわ,よたろう
+ひろます,かずゆき
+ひろせ,みつる
+ひろせ,たかお
+ひしや,さとし
+ほうしょう,あきこ
+ほんだ,みほこ
+はやし,のぞむ
+ほんま,たけし
+ほりぐち,てるお
+ほりい,ひろみ
+ほし,あきひこ
+ほそい,かつや
+ほそみ,やすお
+ほった,まさひで
+ふくろい,けんじ
+ふるや,あきひと
+いぶか,そういち
+いちば,たかし
+いちはら,ひろし
+いちかわ,ひろし
+いちむら,じゅんいちろ
+いちのせき,としひろ
+いいだ,としや
+いいだ,じゅんこ
+いいじま,ようこ
+しのはら,はじめ
+いけだ,りえ
+いけだ,ゆき
+いけだ,ゆたか
+いけだ,ようこ
+いけざわ,かずたか
+いまい,まゆみ
+いまい,けいた
+いまい,くにひこ
+いまき,みのる
+いまむら,けんすけ
+いもと,しょういち
+あべ,よしやす
+いなだ,ゆきこ
+いのうえ,ともひろ
+いのうえ,たかし
+いのうえ,まさひこ
+いのうえ,かずお
+いりえ,よしひこ
+つるおか,ひとし
+おおはし,ひさとし
+いしだ,ゆうじ
+いしだ,けんじ
+いしだ,こうじ
+いしだ,はじめ
+いしぐろ,よしき
+いしはら,しげお
+いしはら,じゅんこ
+いしい,みつひこ
+いしかわ,まさのり
+いしかわ,あきら
+いしわた,まさのり
+いとう,たかし
+いとう,あきこ
+いとやま,としお
+いつき,かずひろ
+いわき,こうたろう
+いわさき,たけし
+いずつ,ゆうじ
+じぶ,えみこ
+かどい,てるやす
+あだち,けんじ
+かい,たかゆき
+かいせ,ひろあき
+かいずか,ひろこ
+かじわら,ひろし
+かき,かつとし
+かきみ,こうじ
+すぎた,れいき
+かくたに,やすこ
+かみばやし,かつひこ
+かみがき,のりひで
+かみや,さとし
+かもだ,こういち
+かもと,たもつ
+かんばやし,もとひろ
+かねこ,しんご
+かねこ,みつや
+かねこ,くにひこ
+かねこ,みつお
+かにさわ,たつや
+かる,たかゆき
+かしわぎ,てつや
+かすみ,よういちろう
+かたぎり,なおゆき
+かとう,みつひろ
+かとう,あつし
+かとう,ゆうこ
+かとう,のぶお
+かとう,たつろう
+たぐち,じゅんこ
+かとう,けんじ
+かとう,こう
+かとう,しんいち
+かつら,あきら
+そご,けん
+かわひと,まこと
+かわい,りえこ
+かわかみ,こうじ
+かわみ,しげる
+かわむら,しんじ
+かわむら,てるき
+かわさき,ひろし
+かわさき,ともかず
+かわうち,まさあき
+かつき,あきとも
+きだ,へいじ
+きどころ,ひろし
+もり,けんじ
+きくち,まこと
+きくがわ,みえ
+きむら,みつひろ
+きむら,さとる
+きむら,たけし
+きむら,たくみ
+きのした,とよき
+きのした,よしあき
+きのした,よしはる
+きのした,ゆかり
+きしだ,ゆきこ
+きしかわ,まさひこ
+きた,としお
+きたぐち,けいすけ
+あまの,みちよ
+きたむら,まなぶ
+きたやま,ちひろ
+こばやし,なおと
+こばやし,もとのり
+こばやし,ひろゆき
+こばやし,やすてる
+こばやし,ともあき
+こばやし,じゅんじ
+あめした,なおき
+こばやし,こういち
+こばやし,ひろみ
+こばやし,けんじ
+こばやし,きよたか
+こばやし,まゆみ
+こばやし,だいすけ
+こばやし,たかひろ
+おだ,まさひこ
+こぼり,ひでみ
+こだいら,のぶひろ
+こだま,せいじ
+かわぐち,あつし
+こだて,みつる
+こが,のりゆき
+こが,あきら
+こがねまる,まさみ
+こはら,ともなり
+こうだ,けんいち
+こんの,まなぶ
+こざい,こういち
+こいけ,あきお
+こいずみ,まさお
+こじま,やすろ
+こじま,けん
+こまつ,たかし
+こもり,よしたか
+こんど,とものり
+こんど,いさむ
+こんた,けんいち
+こたか,みつのり
+こたけ,まさき
+こやま,とうろく
+くぼ,ひろし
+くぼき,いくこ
+くぼた,よういち
+くが,たつじ
+くまがい,やすなり
+くにもり,よういち
+くらもと,じゅん
+くらさわ,あつし
+くらしな,かつひと
+くらた,さとし
+くりもと,たけお
+くりた,よしまさ
+くろだ,としかず
+くろだ,ひであき
+くろかわ,しんご
+くろき,つよし
+くろさき,りょういち
+くろさわ,ひろゆき
+くりゅう,けんじ
+くわた,まさひこ
+くずみ,たかひろ
+まぶち,たくみ
+まえだ,やすひろ
+まえだ,けいし
+まえがわ,あきひこ
+まえかわ,やすとし
+まきお,せいいち
+まめはら,あきひろ
+まさだ,ひろゆき
+ますだ,ようすけ
+ますだ,ひろし
+ますだ,たかし
+ますだ,ともこ
+ますやま,りつこ
+まつだ,むつみ
+まつだ,なおみ
+まつえだ,つよし
+まつい,たかまさ
+まつもと,けんたろう
+まつもと,けいじ
+まつもと,せいいち
+まつもと,ゆういち
+まつもと,しゅういち
+まつもと,ようたろう
+まつなが,まさゆき
+まつの,やすひこ
+まつの,しんいち
+まつおか,みちこ
+まゆみ,あきら
+めかた,ひろき
+めら,こうじ
+みたに,たろう
+みたに,みちひと
+みと,ゆみこ
+みやがみ,しげひさ
+いおき,まさあき
+みやもと,あきひろ
+みやむら,ともゆき
+みやの,たかあき
+みやうち,まさはる
+みやざき,まさかつ
+もちずき,ゆき
+ももい,ひでまさ
+もり,ゆか
+もり,くみこ
+もりもと,よういち
+もりもと,むつこ
+もりおか,けんじ
+もりさわ,ともひろ
+もりた,かずよし
+もりた,ひろのぶ
+もりた,あきひこ
+もりた,しんや
+もりやま,たかし
+もりやま,たつひこ
+もてぎ,とおる
+むらかみ,まさあき
+あさの,けんご
+あゆかわ,さとし
+むらお,だいすけ
+むらおか,しげる
+むらた,ともかず
+むしあけ,えみこ
+むた,ひさし
+なべい,まさひろ
+ながい,こういち
+ながい,まさこ
+ながみね,さゆり
+ながさわ,ただし
+ながた,てつお
+ながやま,てつや
+なぐら,ゆみこ
+ないとう,ひろし
+なかがわ,りゅうじ
+なかがわ,ゆみこ
+なかがわ,やすし
+なかがわ,まさひろ
+なかはら,たかこ
+なかい,しげる
+なかい,たかひろ
+なかじま,とおる
+なかじま,ゆみこ
+なかじま,かつや
+さわだ,みえこ
+なかむら,あきのぶ
+ばんば,てつや
+なかむら,ひでひと
+なかむら,こういち
+なかむら,まさのり
+なかむら,かずお
+なかむら,まり
+なかむら,たけし
+なかむら,あきひろ
+なかの,ふみこ
+なかの,ひろかず
+なかお,のぶゆき
+なかしま,やすひろ
+なかた,こういち
+なかた,あきこ
+なかやま,なおやす
+なかやま,ひろふみ
+なかやま,あきひろ
+なかやま,けいこ
+なかざわ,かつや
+なかざわ,けいすけ
+ながおか,ゆたか
+ななしゃ,よしひろ
+なりた,つよし
+なりた,まこと
+なす,たけし
+なすた,ひろし
+にし,かねのぶ
+にしだ,のぶゆき
+にしむら,さちお
+まさだ,たけひこ
+にしむら,ともこ
+にしむら,まさゆき
+にしお,よしただ
+にしやま,みなこ
+にった,かおり
+のがみ,やすひろ
+のなか,たかひろ
+のせ,ひでお
+のたべ,しんご
+のと,じゅんいち
+のて,ひろき
+ぬくい,まさひろ
+おち,あきひこ
+おちあい,としゆき
+おだ,よしかず
+おがさわら,ゆうじ
+おがわ,ようじ
+おがわ,こうじ
+おがわ,まさひこ
+おがわ,まさや
+おがわ,なおたけ
+おがわ,ともみ
+おぎの,まこと
+おおば,まさひで
+たきみや,ゆきお
+おおはし,ただゆき
+おおはし,たくみん
+おおい,ちさと
+おおかわ,えみ
+おおもり,じゅんか
+おむら,まゆ
+おなかはら,たけつぐ
+おおにし,よしのり
+おの,あきこ
+おおおか,たかし
+おしま,のぶ
+おしま,けんいち
+いけまつ,たかこ
+おおた,たけし
+おおた,たかし
+おおた,さちこ
+おおた,たみこ
+ふくだ,みえ
+おぜき,けいいち
+おいだ,ひとし
+おいじ,くにひろ
+おかだ,しんじ
+すぎもと,たかゆき
+おかざき,やすひろ
+おかざき,やすし
+おかざわ,ひとし
+おくだ,てつや
+おくだ,まさき
+おくむら,しげる
+おくむら,ひでひと
+おくの,こうたろう
+おくやま,あきひろ
+おの,なおみ
+おおぬき,ひでのり
+おおはし,としお
+とおや,まさひろ
+おとぐろ,のぶゆき
+さいごう,たけひろ
+さいとう,よしたろう
+さいとう,あきひさ
+さいとう,ふみひこ
+さいとう,ひろき
+さいとう,ひろし
+さいとう,じゅん
+さいとう,かんじ
+さかえだに,みか
+さかい,のぶやす
+さかい,とくじろう
+さかた,つよし
+さかた,かずひこ
+さくま,たかひろ
+さくらばやし,あつし
+さくらい,まつお
+さくた,よしあき
+ささき,まさかず
+ささき,あきら
+ささき,さちこ
+ささき,よしゆき
+ささめ,よういち
+さとう,かずのり
+さとう,まさひこ
+さとう,よしひろ
+さとう,よしろう
+さとう,はじめ
+さとう,ひろみ
+さとう,ひろし
+さとう,こうじ
+さとう,しょうじ
+さとう,やえ
+さとう,くみこ
+さとう,ひろやす
+さとう,りえ
+さわだ,たかね
+さわはし,たつゆき
+さわの,かずひろ
+せぐち,しゅうへい
+せき,ともこ
+せきぐち,よしひろ
+せきぐち,さとし
+しば,かおり
+しばた,あやこ
+しばた,まさはる
+しぶや,たかし
+しまだ,しゅうじ
+しみず,かつゆき
+いしかわ,たかゆき
+しみず,ともひろ
+しみず,かつゆき
+しみず,けんじ
+しみず,けんたろう
+ふじえだ,こういちろう
+しもやまだ,しんいち
+しながわ,ともひで
+しんや,みつのり
+しおみ,しんじ
+しおつ,かつひこ
+せきぐち,とおる
+つのだ,たかし
+しらさか,あつお
+しろした,ひろゆき
+したら,ひさし
+しょう,じゅんいち
+すがわら,みほ
+すがわら,さとし
+すぎもと,しょういち
+すぎた,ともかず
+すぎた,まさより
+すぎた,かつひこ
+すぎうら,さとこ
+すぎうら,とよひさ
+すぎやま,みずほ
+いけぞえ,まさとし
+すぎやま,ひろあき
+すか,ともゆき
+すけがわ,のぶよし
+すみのうえ,ひでき
+すみよし,たねかず
+すみよし,としみつ
+すなみ,ひろゆき
+すずき,やちよ
+すずき,まもる
+すずき,あきひろ
+すずき,あきら
+すずき,ひろあき
+すずき,いっぺい
+すずき,まさと
+すずき,のぶあき
+しょうじ,しず
+しょう,しょうたろう
+たばた,そういちろう
+ただ,としお
+たどころ,ひでゆき
+たがみ,こうじ
+たぐち,たかし
+たぐち,ひろあき
+たい,まさてる
+たいら,あつし
+たいさ,みつひろ
+たじま,きよし
+たかだ,ただなお
+たかだ,えつろう
+たかぎ,てつろう
+たかはし,あつや
+たかはし,ひろし
+たかはし,とおる
+たかはし,なおき
+たかはし,さとし
+たかはし,ゆうじ
+たかはし,としお
+たかはし,ゆうすけ
+たかはし,なおき
+たかはし,よしふみ
+たかい,しのぶ
+たかの,かんこ
+たかしま,なおや
+たかやま,ひでつぐ
+たけだ,かずよし
+たけいち,けいすけ
+たけまさ,けんいち
+たけむら,しほ
+たけむら,しゅんすけ
+たけなか,なおと
+たけした,しょうぞう
+たけうち,あつと
+たけうち,ひとし
+たけうち,えいいちろう
+たきかわ,あつし
+たききた,たかし
+たきざわ,ひでと
+たこ,よしき
+たかの,もとゆき
+たまがわ,ひろゆき
+たまき,おさむ
+たむら,かずたか
+たなべ,ひろのぶ
+たなべ,ふみお
+たなか,きょうへい
+たなか,きょうこ
+たなか,みほ
+たなか,よしひさ
+たなか,ようこ
+たなか,まさよし
+たに,かずなり
+たにぐち,のぶひろ
+たにしょう,しんご
+たてやま,よしふみ
+たつみ,ますみ
+たうら,たかとし
+たざわ,ともゆき
+たずけ,せいいち
+てらだ,けいこ
+とうま,かずひろ
+とおやま,かずひろ
+とめおく,あきお
+とみいえ,はやと
+ふたつぎ,ひろし
+ともとし,けんじ
+とねがわ,あきこ
+おくむら,のりひこ
+とししげ,ひろし
+とよだ,かずなり
+とよなか,まさや
+つばき,てつや
+つちもと,ふみお
+つだ,さとし
+つだ,かよ
+つだ,としえ
+つじい,ともたか
+つじむら,のりこ
+つかはら,としろう
+つのだ,しょうじ
+つるぎ,はるひこ
+つるた,てるひこ
+つしま,きぬよ
+つつい,ひろゆき
+つちだ,かつゆき
+うちだ,さとる
+うちだ,たくじ
+うちくら,たけし
+うちたに,かつこ
+うえだ,さきこ
+うえだ,ちえ
+うえだ,がく
+うえだ,あきのり
+うえむら,ひろこ
+うえの,ひろし
+うえつき,まき
+いけ,まさる
+うめだ,みほ
+うめむら,なつこ
+うのき,のぶひこ
+うらした,ともこ
+うらた,ともゆき
+うしお,よしお
+うたがわ,てつや
+わだ,ともこ
+わだ,あきひと
+わだ,ひろたつ
+わだ,まさひろ
+わがつま,しょういち
+わかまつ,ゆうじ
+わきた,ひろあき
+わこ,ひろかず
+わりかた,なおゆき
+わしず,しょう
+わたなべ,しゅんじ
+わたなべ,よしゆき
+わたなべ,としお
+わたなべ,がく
+わたなべ,ひろふみ
+おむら,ひろひで
+わたなべ,こうせい
+わたなべ,なおこ
+わたなべ,りゅういち
+わたなべ,てつろう
+やぎ,ともみ
+やぎ,ゆうこ
+やまだ,たかと
+やまだ,のりとし
+やまだ,ひでふみ
+やまだ,しげお
+やまだ,たけひろ
+やまふく,ひでお
+やまぐち,まりこ
+やまぐち,ようじ
+やまぐち,ようこ
+やまぐち,ひろかず
+やまじ,とおる
+やまかわ,こうじ
+やまもと,たかのり
+やまもと,けんいち
+やまもと,みつぞう
+やまもと,ゆきこ
+やまもと,ひろやす
+やまもと,こうじ
+やまもと,まさき
+やまもと,ゆうじ
+やまもと,ゆたか
+やまな,せいいちろう
+やまさき,かつみ
+やました,のりとし
+やました,とおる
+やまざき,ひろし
+やなぎ,りょう
+やの,けんたろう
+やしろ,たけし
+やすい,ふとし
+やすむろ,たかし
+やすうじ,よしゆき
+よこえ,ひでのり
+よこい,まや
+よこみぞ,きよしげ
+よこやま,まさひこ
+よねざわ,かずひこ
+よしだ,けんや
+よしだ,のぶひろ
+よしだ,かつや
+よしだ,かずあき
+よしだ,ともみ
+よしい,しげと
+よしむら,てるかず
+よしやま,えいじ
+よしざわ,さちこ
+ふじしま,けんたろう
+ゆあさ,けい
+ゆき,せつこ
+ゆき,あきよ
+ゆい,だいすけ
+あだち,なおたけ
+ばん,たかし
+ふるい,よしのり
+はせがわ,はじめ
+ひらかわ,まなぶ
+いとう,としひこ
+いわさき,りょうじ
+かとう,けんじ
+かわはら,よしみつ
+まえはら,おさむ
+まつたに,しげお
+もりいち,えいじろう
+にしうち,のぶゆき
+ふじまき,たいぞう
+おおはら,たかし
+さなだ,ひであき
+そね,つとむ
+とのむら,よしゆき
+しみず,けい
+みしま,まりこ
+ふじた,たろう
+ふじた,ひでき
+ふじた,よう
+ふじわら,こうじろう
+ふじゅう,しんいち
+ふかだ,たくや
+ふくだ,ゆたか
+ふくひさ,なおたか
+ふくざと,あや
+ふくざわ,たかし
+ふるさわ,きはる
+はがわ,たかし
+はぎ,ひろたか
+はらだ,みつる
+はらだ,のぶひろ
+はらだ,まき
+はらまき,なおこ
+はせがわ,りえ
+はせがわ,ひであき
+はしお,ゆか
+はすみ,ひろし
+はすみ,けんいちろ
+はっとり,よりこ
+いしかわ,ぶんぺい
+はやし,たかこ
+ひらの,たくや
+ひらの,かずあき
+ひらの,としあき
+ひろべ,ひでき
+しのだ,けんじ
+ひさだ,たかゆき
+ほ,たけし
+ほんごう,てるひこ
+ほし,みちこ
+ほしの,まさき
+ほそかわ,ひろかず
+ほその,ゆみ
+かとう,よしろう
+いぎ,ようこ
+いけだ,としゆき
+いくろ,のりひろ
+いまい,かずよし
+いなだ,こうへい
+いのぐち,たかゆき
+いしぐろ,つぐかず
+いしかわ,ひろき
+いしかわ,けんじ
+いしざき,ゆかり
+いしぜき,よしと
+いとう,てつや
+いとう,まさよし
+いとう,なおき
+いとう,よしみ
+いまがわ,けい
+いざわ,こうじ
+いずみ,しょうじ
+いずみだて,のりとし
+かぶらぎ,かおり
+かみやま,とおる
+かなやま,こうじ
+かなざわ,じろう
+かんばら,かつよし
+かんだ,ゆうこ
+かんだ,みすまる
+かねこ,なりとも
+かしむら,ひろし
+かたぎり,しんすけ
+かとう,ひろのり
+かとう,のぶひさ
+かわだ,はるみ
+かわすみ,ようこ
+きど,しゅんいち
+きくち,のぶひろ
+きもと,たくや
+きむら,けんた
+きんど,みちはる
+きたむら,みほ
+きたの,さだお
+きたわたせ,すすむ
+きった,やすこ
+きやま,せいじ
+きよた,ひろゆき
+こばやし,じゅんじ
+こばやし,ようこ
+こが,あつや
+こはら,たかゆき
+こじな,けん
+こんの,けいご
+こずか,まさき
+こいで,しんじ
+こまつ,りゅうすけ
+こみなと,しゅうじ
+こもり,さとこ
+こんど,ひろひこ
+こにし,のりこ
+くぼやま,ただあき
+くまがい,りょうじ
+くまた,たかこ
+くりはら,たけし
+くりはら,けいこ
+くりた,さとし
+くさの,ひろふみ
+くしだ,あきひこ
+まえだ,ゆき
+まき,けいすけ
+まきた,しんじ
+まるやま,つねお
+ますだ,だいち
+まつばら,ちから
+まつばら,ひでとし
+まつい,けいこ
+まつもと,まさゆき
+まつむら,しんたろう
+まつお,かずひろ
+みかみ,みつお
+みき,たかあき
+みのうら,せいじ
+みしま,けんいち
+みつなが,よしゆき
+みうら,まさのり
+みわ,たかのぶ
+みやお,やすはる
+みやた,かなう
+みずたに,かずひこ
+みずたに,ひでのぶ
+もちずき,みつる
+もちずき,くみこ
+もちずき,のぶゆき
+もぎ,ひろし
+もり,さとる
+もり,ただひこ
+もり,ただゆき
+もり,ともひさ
+もり,としき
+もりやま,としお
+もろおか,ゆき
+もとば,だいさく
+むねと,かつまさ
+むらい,よしこ
+むらおか,けん
+むろい,ひでひろ
+ながふじ,きみひと
+ながい,あきら
+ないとう,ゆきこ
+ないとう,たろう
+なかがわ,みのる
+なかはら,みやこ
+なかじま,ゆたか
+なかじま,まさひこ
+なかむら,たけし
+なかむら,ひろし
+なかむら,あや
+なかむら,あきら
+なかむら,あきら
+なかむら,あつし
+なかむら,ひさと
+やまだ,たかし
+なかお,えいじ
+なかつかさ,きよし
+なかやま,まり
+なむら,むねゆき
+なすの,なおき
+にいぜき,としはる
+にしかわ,こうぞう
+にしきおり,よしあき
+にしざわ,かつのり
+のあき,ようこ
+のだ,けんたろう
+のだ,ゆうこ
+のぐち,ひさし
+のむら,ひでき
+おちあい,こすけ
+もり,まりこ
+おがさわら,みつひさ
+おがさわら,たつし
+おがわ,りょうこ
+おがわ,たかひろ
+おがわ,やすひさ
+おぐら,ふみのり
+おぐら,まさき
+おおいし,ひろや
+おおかわ,としあき
+おおかわ,じゅんこ
+おかぜ,なおき
+おき,てつや
+おむら,あつし
+おおすみ,まさひろ
+おおた,ふみひこ
+おおたけ,てつじ
+おおたに,けん
+おおやま,けんじ
+おぜき,ひろし
+おかもと,じゅん
+おかむら,こうしん
+おかむら,まもる
+おくむら,まなみ
+おんだ,のりひこ
+おのでら,のりゆき
+おやべ,たかのり
+さが,としあき
+さいとう,ゆうこ
+さかい,さなえ
+いぎ,あきのり
+さかもと,ひさね
+さかもと,よしひろ
+さかつぎ,かずお
+さかうえ,けんじ
+さくま,まりこ
+さくら,えいき
+さなだ,よしひろ
+ささき,たけお
+ささき,なおや
+さとう,かつゆき
+さとう,たかひろ
+さとう,としあき
+さとう,しゅういち
+さとう,ひでひさ
+さとう,かつひろ
+さとう,きょうこ
+さとう,やすひと
+さとう,かずひで
+さとう,さとみ
+せいけ,まさのり
+せき,よういち
+せき,てつや
+せき,てつ
+せきぐち,たけし
+せた,としお
+しんがい,あきこ
+しばた,よしこ
+しばた,ゆきのり
+しぶき,じろう
+しげとみ,かずみつ
+しが,ひろし
+しいば,みか
+しまだ,いちろう
+しまかわ,しげる
+しみず,すすむ
+しみず,たかつな
+しみず,おさむ
+しみず,たかし
+しもむら,たかし
+しもむら,あきら
+しおじり,ひろし
+しおざわ,あやこ
+しらい,ゆうこ
+しらかわ,ふみえ
+そまん,じん
+そうや,まさと
+そのだ,まゆみ
+すだ,ともはる
+すがの,けんいち
+すがぬま,さとし
+すがわ,せいいち
+すぎうら,きょうすけ
+すぎやま,ともひろ
+すずき,けん
+すずき,こうじ
+すずき,あつし
+すずき,しんいちろう
+しょうじ,てつや
+たぐち,かつや
+たいら,ただと
+たじま,りえ
+たかだ,たかのり
+おかやま,あさこ
+たかぎし,みかこ
+たかはし,しんいちろう
+たかはし,やすし
+たかはし,まさよし
+たかはし,とおる
+たかはし,きょうこ
+たかき,よういち
+たかおか,たくや
+たかおか,ひろゆき
+いまいずみ,よしお
+たかさわ,たかし
+たかす,つよし
+たけい,せつこ
+たけなか,たけし
+たけざき,よしこ
+たまいし,ひであき
+たまき,しげる
+たなか,あきら
+たにぐち,なおき
+たうち,ひろなお
+てらみつ,だいすけ
+とだ,まや
+とみなが,しんいちろう
+とみた,あきよ
+とんぐう,ひでとし
+つねかわ,ひろふみ
+つつい,かつよし
+うちだ,たけし
+うちはし,たくお
+うえだ,まさひこ
+いとう,よういち
+うえだ,ひろし
+うえはら,ひであき
+ふじた,しほ
+うめだ,てつや
+うめはら,やよい
+うらべ,ひさこ
+わたべ,やすし
+やがさき,すみか
+やぎもと,ひろし
+やじま,かつみ
+やまだ,みちこ
+やまだ,たかし
+やまだ,みかこ
+やまぐち,さとこ
+やまぐち,ともこ
+やまもと,やすひろ
+やまもと,やすひろ
+やまもと,なおき
+やまもと,こうじ
+やまね,かずひろ
+やまさき,はるのり
+やました,かずき
+やまざき,まさゆき
+やまさき,としや
+やながわ,たけし
+やなぎだ,やすお
+おの,ひでのぶ
+やなぎさわ,やすし
+やざき,なおき
+やざわ,せいじ
+よこやま,ひろこ
+よこやま,たけし
+よも,きょうじ
+よしだ,ひでお
+よしだ,ゆうじ
+よしだ,はるひこ
+よしはら,あゆみ
+よしはら,まさひで
+よしもり,たかし
+ぜっつ,ひでよ
+あべ,よしただ
+あだち,こうじ
+あいかわ,ひろふみ
+あかえ,みちこ
+あんどう,まき
+あさみ,みさ
+いまなか,はるよ
+べっぷ,ゆうすけ
+べっぷ,ひろあき
+ちかはら,おさむ
+ふじい,みつとし
+ふじさき,たかゆき
+ふくしま,あずさ
+くろだ,としみ
+もり,まさひで
+わたなべ,たかえ
+くろだ,あさこ
+みやうち,じゅんこ
+いとう,きくこ
+いいだ,まゆみ
+かわの,まい
+あいうら,としお
+のざき,てるあき
+びたに,あやみ
+たにあい,だいすけ
+あおき,じゅんいち
+おき,きさく
+あおき,かずゆき
+あおやぎ,けんた
+あかにし,なおひろ
+あさお,まさひこ
+あさくら,かえ
+あしざわ,かずき
+あたく,ひろし
+あだち,ゆうこ
+いとう,ゆり
+しまもと,あとむ
+さいとう,まさる
+しのはら,かつみ
+おかの,ひでこ
+おかもと,ひろし
+ひらかわ,よごろう
+すがぬま,ともみち
+あなざわ,みのる
+あらい,としかず
+あらい,きんや
+あらかわ,ゆみこ
+あらかね,あきこ
+あらき,しげのり
+あんどう,ひろひさ
+いうち,まこと
+いけだ,やすひろ
+いけや,まさき
+いしかわ,ひろし
+いしかわ,まさみ
+いしかわ,ひろし
+いしかわ,こういち
+いしがき,ひろし
+いしぐろ,かおる
+いしはら,まさき
+いそむら,くみこ
+いたがき,きよみ
+いいだ,しろう
+いちかわ,そよ
+いちかわ,よしとし
+いで,いたる
+いとう,ひろふみ
+いぬい,まきと
+いのうえ,のぶひろ
+いまにし,むねたか
+いまはやし,しんいち
+いわさき,まさつぐ
+いわさき,まゆみ
+いわもと,けいいち
+うえの,えいじ
+うえの,かずのり
+うちいけ,よしあき
+うちやま,よしたか
+うめだ,しゅうじ
+うめむら,さよ
+うめもと,ちほこ
+うるしばら,よしひこ
+えぐま,えり
+えら,なおや
+おうさか,まさたか
+おおかわ,まさみつ
+おおさわ,まさひこ
+おしま,よしたか
+おしま,まなぶ
+おおすが,たつひこ
+おおたに,ひでき
+おおつ,まさふみ
+おおつか,ただひさ
+おね,まさゆき
+おおの,あきら
+おおはし,けんいち
+おおはし,けんご
+おおばやし,しんじ
+おおよし,たかゆき
+おかもと,ただゆき
+おがさわら,よしこ
+おがわ,ひでのり
+おくたに,ごう
+おくむら,ゆうこ
+おぐら,ひろこ
+いいかわ,けんいちろ
+おぐら,さとし
+おざわ,たかのり
+おざわ,ひでひこ
+おおの,やすのり
+かきもと,れいこ
+かきもと,ひろし
+かげやま,ともみ
+いしかわ,ひろし
+かそり,やすひと
+かつみ,なおき
+かとう,なおこ
+かとう,のりこ
+かとう,しげのり
+かとう,だいすけ
+かとう,けいじ
+けずか,あきら
+かどわき,みつしろう
+かねこ,あきひろ
+かのう,のりこ
+かみやま,ひろかず
+かわしま,ひろゆき
+かわせ,さとる
+かわの,かずき
+かわもと,まさたか
+かわもと,しん
+かわせ,なおき
+かんだ,ひでとし
+きくち,ひさゆき
+きくち,あきこ
+きくち,のぶお
+きたあらし,まいこ
+きたおか,みゆき
+きたじま,あきひろ
+きたむら,たけみ
+きたむら,あつし
+きてら,さとし
+きのした,じゅんこ
+きむら,たかひろ
+きりう,たけし
+くさかべ,まえこ
+くぼた,こすけ
+くまがい,けんじろう
+くまの,さり
+くりはら,まさと
+くるしま,あきよし
+なかがわ,ちか
+こいで,ひでき
+こんの,まさし
+こもと,ゆうこ
+こが,くにはる
+こじま,たいじ
+こにし,かよこ
+こばやし,せいう
+こまつ,けいいち
+こみや,しんや
+こんど,さとし
+こんど,つとむ
+ごとう,だいすけ
+さいとう,たつや
+さいとう,こうじ
+さいとう,ひでき
+さかもと,たけお
+さくま,としかず
+しみず,なおき
+さだちか,けいじゅ
+さと,さよこ
+さとう,じゅん
+さとう,ひとみ
+さとう,みか
+さとう,かつゆき
+さわだ,じゅんじ
+いそわ,まさひこ
+しも,たかあき
+しゅう,まさや
+しおかわ,あやの
+しおざわ,まさひこ
+しかうち,みつる
+しずり,たけし
+しの,てつじ
+しのざき,じゅんじろう
+しのだ,ますみ
+しのだ,ゆきこ
+しばざき,あきひと
+しばた,さおり
+しまむら,のぼる
+しみず,みまこ
+しみず,ゆうじ
+しみず,さとし
+しみず,しんいちろう
+たきたに,ゆういち
+しらの,たかゆき
+すえひろ,けん
+すがい,みきお
+すがよし,けんじ
+すがわら,しげふみ
+すぎうら,のりあき
+すぎしま,しゅんすけ
+すぎもと,ひさし
+すずかわ,よしえ
+すだ,あきよし
+すみかわ,かつあき
+すみの,こうじ
+せきぐち,しげみ
+そえじま,やすなり
+たおか,ただし
+たかき,きょうこ
+たかしま,しんいち
+たかせ,きよたか
+たかはし,かつや
+たかはし,たつや
+たかはし,えいいち
+たきたに,なな
+たけうち,ひろぶみ
+たけだ,ただゆき
+たけだ,けいいち
+たけだ,いくひこ
+たけむら,なおひさ
+たご,まさこ
+たきざわ,ちかこ
+たなか,ようこ
+たなか,りょうすけ
+たなか,けんじ
+いわの,かずしげ
+たなか,ひろし
+たにえ,さだよし
+たにぐち,かずえ
+たにぐち,じ
+たにまつ,ひろし
+たばた,みわこ
+たまき,たつや
+いせもと,
+たみや,あき
+ちゃもと,ふさし
+ちの,よういちろう
+つかもと,ようこ
+つちはし,むねひろ
+てらさわ,たつや
+と,みちこ
+ふくしま,なおし
+とば,きょうこ
+とみよし,ひとき
+とむろ,なつひこ
+とよしま,じゅんいち
+とりやま,なおゆき
+ないとう,ひろゆき
+いで,みちかず
+はた,ふさお
+なかがき,みき
+なかがわ,たかこ
+なかざわ,よしこ
+なかで,しょうこ
+なかはら,あつし
+たけうち,かつひさ
+なかむら,さとし
+なかむら,たけし
+なす,ひろし
+にいむら,としひろ
+にしおか,ひであき
+にしかわ,あきら
+にしざわ,しげる
+にしと,やすこ
+にしの,こうじ
+にしはら,なおき
+にしむら,くにもり
+ねもと,さちよ
+のぐち,えみ
+のぐち,まさや
+のじり,よしなお
+のじり,たかひろ
+のむら,かずひこ
+はった,あきこ
+はしば,ちかこ
+はしもと,ゆか
+はしもと,いちろう
+いのうえ,きよし
+はしもと,たかこ
+はせがわ,けんいち
+はた,かずき
+はた,よしかつ
+はたの,まいこ
+はやし,ひろゆき
+はやし,くみこ
+はらだ,ともこ
+はらだ,けんいち
+ばば,ひろふみ
+ばば,あすか
+ひぐち,のぶひこ
+ひぐち,きょうこ
+ひさき,ごうじ
+ひじり,えり
+ひらやま,たかゆき
+ふくだ,まゆみ
+ふじい,ひろふみ
+すがい,さとみ
+ふじた,かずや
+ふじた,ゆきこ
+ふじた,のぶこ
+ふじたに,さとし
+ふじなみ,しげゆき
+ふじの,たつゆき
+ののむら,かつじ
+ふせ,たてる
+すぎもと,よういちろう
+ほそかわ,たつお
+ほりうち,なおみ
+ほりかわ,ひろあき
+まきの,いくこ
+まきの,のりひこ
+ましこ,としひこ
+ますだ,かずや
+ますぶち,たかし
+ますぶち,あきひろ
+まつい,まきこ
+まつざわ,まさと
+とみなが,たかし
+まつなが,よしこ
+まつなが,ゆき
+すずき,やすじ
+まつむら,けいいち
+まつもと,ひでふみ
+まつもと,ともひさ
+まつやま,のりこ
+まつやま,こうじ
+まつやま,てつや
+まつよし,あきこ
+まの,せいじ
+まるおか,としやす
+みかみ,ようこ
+みき,ひろき
+みぞぐち,まさみ
+みた,みのる
+みね,ちあき
+みねお,さとる
+さとう,かつのり
+いくた,あや
+みやざき,ひでき
+たかぎわ,しげる
+みよし,ようこ
+むかい,みつたか
+むらかみ,まさあき
+いしだ,つかさ
+むらかみ,さとし
+むらかみ,かずたか
+むらやま,こうじ
+むらやま,まこと
+むろい,まさたか
+もたい,かずまさ
+もとき,かずや
+もとむら,こうじ
+もり,かつひろ
+かせ,あきよし
+もりした,かずひろ
+もりた,なおき
+もろとみ,ひでのぶ
+もろはし,ゆきこ
+かわもと,ひろのり
+やぐち,てるひこ
+やじま,なおこ
+やすかわ,ひろし
+やすだ,まさひと
+やつずか,まりこ
+やなぎさわ,ゆき
+やまぐち,きんや
+やまさき,たかや
+やまざき,ひろゆき
+やまざき,よしこ
+やまざき,せいじろう
+やまだ,けんたろう
+やまだ,なおき
+やまだ,たかのり
+やまなか,しゅういち
+くりはら,まさき
+やまもと,まさこ
+やまもと,しんたろう
+やまもと,やすし
+まつお,ますみ
+よぎ,ちとせ
+よこやま,ひでき
+よこやま,ようこ
+よしかわ,なおひで
+よしかわ,よしこ
+よしだ,こうじ
+わくい,てつや
+わたなべ,けんたろう
+わたなべ,しほ
+わたなべ,よしひと
+わたなべ,まなぶ
+はやし,たかし
+やまだ,のぶや
+わかばやし,さとし
+いわむら,のりまさ
+わたなべ,のぼる
+くわしま,すぐる
+おばた,さとみ
+あなざわ,ひかる
+やぎ,こすけ
+あかお,ともかず
+しみず,なつこ
+さかもと,ひでのぶ
+あおき,しげあき
+あずま,こういち
+いいだ,えな
+いけうち,めばえ
+いしかわ,てつお
+いそがい,まこと
+いとう,ただひろ
+いば,あずさ
+いわもと,しんじ
+うえさか,たけひろ
+うえの,まもる
+うえひら,けんご
+うちやま,けんじ
+うめない,すすむ
+えむら,たかひろ
+おきた,じゅんいち
+おおくぼ,ひろし
+おおたに,あや
+おおつ,ひろこ
+おおつか,よしみ
+おかしろ,しろう
+おだ,あつし
+おの,ひろみ
+かとう,よしゆき
+かねひさ,なおこ
+かみや,おさむ
+かわい,たくよし
+かわおか,ひでき
+きたの,じゅんいち
+きぶし,つへ
+きむら,まさたか
+きむら,まさこ
+くさか,さとみ
+くば,たかし
+くぼた,しろう
+くろいわ,しんじ
+くわばら,えいじ
+こいけ,すみお
+こいたばし,つかさ
+こうだ,ひでお
+こうだ,まさたけ
+こしむら,あつし
+こやなぎ,ひさこ
+はとり,ゆうこ
+さかうえ,さわ
+あべ,こういち
+さとう,やすみつ
+さとう,まゆみ
+さとう,よしお
+しまだ,りえ
+いまい,かつあき
+すがぬま,ちよ
+せき,あきひろ
+せの,たかやす
+あべ,まさはる
+たかすが,まゆみ
+たかすぎ,のぶこ
+たかはし,ともみ
+たかはし,けんたろう
+たかはし,あきひと
+たかはし,こうじ
+たかはし,ひさみ
+たきもと,ゆうた
+たくぼ,よしゆき
+たけうち,ともこ
+たけなか,ゆきひこ
+たなか,もといち
+たなか,ちずる
+たばた,かつゆき
+たみや,たけし
+たむら,れいこ
+ちゅうま,ひろたか
+ほんごう,ゆうこ
+なかお,のぶあき
+なかがわ,こういち
+なかぞの,ひでのり
+なかの,みつひろ
+にった,はな
+にわ,りょういち
+のじ,ひろあき
+はざの,たかし
+はしもと,とおる
+はしもと,ゆうこ
+はやし,ちおり
+はやし,とうこ
+はらぐち,たかし
+はるぐち,としお
+ひらで,いさむ
+ひらの,まさたか
+ひらやま,ゆき
+ふかざわ,ひろみ
+ふくます,かよ
+ふくもり,まさる
+ふじかわ,しげる
+ほしの,のりこ
+ほその,あきひと
+まつおか,よしなり
+まつむら,なみこ
+みずかみ,てつろう
+みつい,たいすけ
+みのかみ,としゆき
+みやもと,たつし
+むらかみ,けいこ
+やた,なおこ
+やなぎた,みのる
+やまぐち,こうじ
+やました,みちお
+やまもと,ゆういちろ
+よしたけ,ひでのり
+よしむら,えり
+ひぐち,たけし
+はしもと,あつし
+わたなべ,ゆき
+あきば,たけひこ
+あきもと,みつよ
+あまや,まさる
+あんどう,てつろう
+あんざわ,のぶひろ
+あさはた,かずひと
+ばば,みちひと
+べっしょ,てるひと
+ちかもと,さおり
+ちょう,だいすけ
+ふじひら,みわこ
+ふじい,けいこ
+ふじたに,よしかつ
+ふかだ,まさあき
+ふるだて,なおき
+ふるやま,ひろゆき
+ごうだ,きよのぶ
+こいけ,よしゆき
+はかまだ,こうぞう
+はせがわ,たかお
+はしもと,こういち
+はった,けんいち
+はっとり,たかひろ
+はやかわ,ひろき
+はやかわ,なるつぐ
+ひぬま,たくや
+ひろき,ともひで
+ほりのうち,ゆうじ
+ほその,あつこ
+ふじおか,ひでき
+ふるた,なるき
+ふさの,けん
+ふしみ,おさむ
+いたど,ひとし
+いだ,まさひろ
+いはら,けい
+いいだ,たかひろ
+いなやま,ひろかず
+いの,じゅんいち
+いのうえ,めぐみ
+いしだ,よしつぐ
+いしもと,やすよし
+いしわ,みつる
+いしわたり,ひろかつ
+いたくら,なほこ
+いとう,たかひろ
+いとう,しゅういち
+いわい,ななこ
+いざわ,
+じぶ,すぐる
+かばやま,まさき
+かい,ゆうこ
+かきぬま,じゅん
+かきざき,まさき
+かくだ,しゅうすけ
+かながわ,しん
+かんべ,たけお
+かんだ,やすひと
+かさだ,みちたか
+かわい,ともこ
+ささき,いくえ
+かわせ,さほ
+きもと,みきね
+きたはら,のぶお
+きたむら,よしお
+こばやし,ひろえ
+こぶけ,ゆうこ
+こいずみ,かなこ
+こみやま,まりこ
+こんのかずひろ,やすひと
+こしかわ,たかゆき
+こんの,こういち
+くぼ,まさのぶ
+くぼかわ,なつき
+くどう,ともか
+くりはら,かついち
+くろぎ,さえこ
+まちだ,はるみ
+まじま,やすこ
+いしず,のりゆき
+まかべ,ひろよ
+まるやま,ひであき
+ますだ,かよ
+まつがさき,あきら
+まつい,たけし
+まつい,さおり
+まつもと,けんじ
+まわたり,かんじ
+みちもと,としひろ
+みき,すみこ
+みつま,たかのり
+みうら,けいご
+みわ,まこと
+みやもと,かつひさ
+みやもと,やすのぶ
+みやもと,たけのぶ
+みやた,まさし
+むらかみ,とおる
+たはら,のりこ
+みずたに,ともか
+もり,ゆき
+もりぐち,まさひこ
+もりかわ,ひろし
+もりもと,かずみ
+もりた,れいこ
+むらかみ,たつひこ
+あでがわ,あい
+ながさか,ひかる
+ながた,じゅり
+ながた,かつのぶ
+いざわ,かおり
+なかみね,まもる
+なかむら,ひろのり
+なかむら,たつや
+いもと,こういちろう
+なかむら,たけし
+なかお,ゆうじ
+なかやま,うしん
+なかざわ,きよし
+なみき,はるよし
+にいみ,あきひろ
+にいぜき,かおり
+にしで,ひであき
+にわ,ひでき
+のべ,みさ
+おおた,しげあき
+おがわ,まさよし
+おぐす,ゆうすけ
+おおもと,しょうじ
+おしま,たかのり
+おおた,けんいち
+おおや,ひみこ
+いしかわ,よう
+おかだ,たけし
+おく,ふみゆき
+おくだ,まさき
+おしくぼ,けんいち
+おぜき,かつひこ
+らい,ゆうじ
+いとう,ともや
+さいき,ひろし
+さいとう,たつや
+よしだ,みちやす
+さこ,しげみつ
+ささじま,じゅんや
+ささき,ゆきこ
+さとう,つぐひで
+いわもと,かずひこ
+さとう,ちえこ
+さわだ,ひでやす
+せきかわ,いずみ
+せきね,みつお
+しばた,なおき
+しげはら,しんや
+しまおか,あきひこ
+しみず,かずひろ
+しも,まさあき
+しもむら,たかし
+しむら,たかひさ
+そめや,あきひこ
+すえよし,けんいち
+すずき,ひでゆき
+すずき,なおき
+たかだ,いちろう
+たかはし,
+たかせ,まなぶ
+たけだ,あきら
+たけい,ひさよし
+たけもと,はじめ
+たまい,としひこ
+たむら,たかゆき
+たむら,さとる
+いしかわ,ひとし
+たなか,こういちろう
+たなか,まさひろ
+たにぐち,たけのり
+たにぐち,ひろたか
+たにぐち,けんじ
+たにぐち,けん
+いしだ,あつし
+たにした,ふみの
+てらにし,つよし
+とおやま,きょうこ
+とみた,みわ
+とねがわ,たく
+とよだ,のりこ
+とよた,しゅうじ
+つちや,よしこ
+いしかわ,なおき
+つむら,としあき
+つのかわ,よしみ
+うちだ,ひとし
+うさみ,たけし
+わじま,りこ
+わたなべ,まき
+わたなべ,よういち
+わたなべ,やよい
+やぎ,けいいち
+やぎ,きょうこ
+やくわ,ひろふみ
+やまだ,ひろき
+やまだ,たかゆき
+やまぐち,としゆき
+やまのくち,まさこ
+やました,こういち
+やました,なおゆき
+やまざき,ひでゆき
+やまざき,ゆたか
+やながわ,たつろう
+やすだ,とよあき
+やすえ,ともゆき
+いそがい,ただのぶ
+やたがい,えり
+よしだ,りょうこ
+たかはし,まさき
+おかだ,しゅういち
+あおき,まさる
+あきば,あきこ
+あべ,あきこ
+あまの,まさお
+ありもと,しゅうじ
+あんどう,ゆき
+いかわ,たいへい
+いしい,のりひろ
+いしかわ,なおこ
+いしずか,ゆみ
+いしばし,しゅんすけ
+いしもと,りょうすけ
+いで,さとこ
+いちのせ,さとし
+いなだ,まなぶ
+いぬい,やすよ
+いのうえ,まみこ
+いやま,こうじ
+いわさき,みずまさ
+いわま,かずこ
+いわまつ,おさなお
+うえだ,ひろこ
+うえの,ひろき
+うちだ,たかお
+うど,けんじ
+うめはら,たかし
+えぐち,とみさぶ
+えのき,よしこ
+えもと,みつもと
+えもり,せいや
+なかがわ,なおあき
+おおた,ひでゆき
+おがた,やすし
+おがわ,のぶたか
+おがわ,れいこ
+おくい,たくじ
+おくむら,もとこ
+おおたに,てるあき
+おつとも,ゆきこ
+おにざわ,しげき
+おの,のりあき
+おばな,せいいちろう
+おまがり,まさや
+かきざわ,てつひろ
+かけひ,えりこ
+かさはら,まどか
+かじ,おさむ
+かじた,たかお
+かじた,たかお
+かじやま,みのる
+かとう,よしのぶ
+かなだ,けい
+かねこ,のぶかつ
+かねこ,りょうた
+いたの,けんすけ
+ながつま,しゅうへい
+かのう,せいじ
+かまえ,なおき
+かわい,てつお
+かわまた,ひろき
+かんの,まいこ
+きうち,いずみ
+きし,ようこ
+きたがわ,とものぶ
+きのした,なりとし
+きょうがく,まこと
+くぼ,とものり
+くぼた,たくや
+くぼた,しんぺい
+くりはら,りえ
+くりやま,けいこ
+いしがき,としふさ
+くろい,いつろう
+こうさき,こういち
+こうだ,あつし
+こばやし,のぶあき
+こばやし,てつや
+こばやし,ゆうすけ
+こばやし,こうじ
+いのうえ,のぶあき
+さいほ,なるひろ
+さかがわ,ようへい
+かわむら,ゆたか
+ささおか,ようこ
+ささき,のぼる
+さとう,のりかず
+さとう,まなぶ
+さなだ,おさむ
+さるやま,けんいち
+しおつ,えいすけ
+しおのや,しのぶ
+しおやま,のぼる
+しぎはら,ひろゆき
+ししど,くにお
+しのざき,かずひと
+しばた,みのる
+しみず,
+しょうの,しんいち
+しらき,ひろゆき
+すぎおか,みつかず
+すぎはら,きよしげ
+すずき,ひさてる
+すずき,しげゆき
+すみやま,せいじ
+せった,まさき
+いしわた,だいじゅ
+せんごく,みのる
+たかおか,ゆみ
+たかざわ,たかしげ
+たかはし,あやこ
+たかむら,たかゆき
+たきと,ひでき
+たなか,かず
+たなか,あきこ
+いとう,じゅんじ
+たなべ,けんじ
+たにぐち,まなぶ
+ちゃわんや,よしはる
+てらさか,ひろき
+ところ,じゅんいち
+なかい,たかし
+なかお,しんじ
+ながおか,みほ
+なかがわ,もとあき
+なかじま,すひち
+ながせ,たつや
+なかの,せいた
+なかの,じ
+ながの,ゆうこ
+いけだ,あきこ
+なかむら,まりこ
+なかやま,かつとし
+にお,じゅんいち
+にしお,のりこ
+にしかい,としみつ
+にしざか,よしこ
+にしだ,だいすけ
+にしだ,たかし
+いいじま,まさき
+にしはら,かずゆき
+にしむら,かずや
+ねろめ,ひろし
+のじま,さねひろ
+のなか,だいすけ
+はしば,のりかず
+はちや,たかひろ
+はっとり,こ
+いいだ,ひろゆき
+はぶ,まこと
+はやかわ,てつろう
+はやし,なおこ
+はやしま,ひでし
+はら,たくみ
+ひがしだ,まさる
+せきぐち,きょういち
+ひらい,かおり
+ひろすえ,ひろゆき
+ひろはた,たくや
+ふくしま,みつお
+ふじお,てんぺい
+ふじた,ゆういちろう
+ふじまき,ゆきひこ
+ふじわら,とおる
+ふるいち,ゆうすけ
+ほさか,たけし
+ほしの,こうじ
+ほり,ゆきこ
+ほりもと,ゆうじ
+ほんま,ゆきのぶ
+まえかわ,たけはる
+まえだ,たかひと
+まえだ,みきお
+まえだ,たつや
+まさい,くみ
+まつい,ひでのぶ
+まつざわ,ちから
+まつだ,たかゆき
+まつとも,まさなお
+まつなが,けんじ
+まつもと,ようすけ
+みずぐち,ともたか
+みやもと,まゆみ
+みやもと,やすじ
+むらかみ,かずひで
+むらかみ,まさひろ
+むらなか,さとし
+もちずき,たくや
+もとくら,ともこ
+もり,くにかず
+もりや,ほまれ
+やすい,たいげん
+やすだ,みきこ
+やすだ,きよひと
+やた,かずひろ
+やたき,のぶお
+やち,ふみひこ
+やの,ひろし
+やまいずみ,よしあき
+やまおか,まさき
+やまぐち,やすひろ
+やまぐち,よしのり
+やまざき,あきお
+やまざき,なな
+やました,まいこ
+やまもと,けん
+よこぜき,たいち
+よしだ,なおと
+よしの,やすお
+よしみ,たかし
+よだ,たかひろ
+よだ,ひろあき
+ろじ,ふみあき
+わだ,まみ
+わたなべ,ゆきお
+わたなべ,ひでき
+わたなべ,かずお
+わたべ,たかし
+かのう,たかとし
+にった,おさむ
+あおき,しゅう
+あおき,はなこ
+あおやま,まさあき
+あおやま,ぬい
+あきば,けいいち
+あさだ,まりこ
+あだち,ともみ
+あだち,ゆうこ
+あとべ,はると
+あべ,かつひこ
+あべ,のぶお
+あべ,まゆみ
+あまの,まき
+あまの,じゅんいちろ
+あらかわ,りょうすけ
+ありた,ようへい
+ありとも,ひろし
+あんざい,ひであき
+いとう,ようじ
+あんどう,りえこ
+いがらし,みおこ
+いけだ,いずみ
+たかはし,あつお
+いしばし,ただし
+いしむら,ゆみこ
+いしもと,まりこ
+いちい,けいこ
+いちかわ,ひろと
+いちかわ,まきこ
+いちのせ,きよし
+いとう,あきひろ
+いとう,まさる
+いとう,りさ
+いなおか,まさふみ
+いなば,ひろたけ
+いぬずか,まゆみ
+いのうえ,ひでおみ
+いのかわ,しゅんすけ
+いまい,たけし
+いましゅく,りょう
+いわい,ともひこ
+いわしま,しゅういち
+うえぞの,めぐみ
+うえだ,たかひろ
+うえはら,たかゆき
+うえはら,もとこ
+かきた,けん
+うさみ,ひじり
+うちだ,ひろき
+うちだ,あやこ
+うちぼり,みさと
+うめがい,かずえ
+うめつ,あきひこ
+うめの,たけし
+うらかわ,ゆき
+うらべ,しげひさ
+えぐち,ただし
+えずみ,いくよ
+えのもと,たろう
+いまにし,ひろゆき
+えのもと,ふみこ
+えんど,よしき
+おいかわ,まさき
+おいかわ,ゆきふみ
+おおい,ようじ
+おおいし,まさはる
+おおた,ふみかず
+おおつか,しんすけ
+おおにし,かつあき
+おおにし,みちえ
+おかだ,やすお
+おかだ,まさる
+おかの,ゆき
+おかべ,よしひろ
+おかべ,ひであき
+おかむら,りょう
+おかもと,みき
+おかもと,みゆき
+おがわ,たえこ
+おがわ,とおる
+おくだ,けん
+おくだ,てつや
+おざき,まみこ
+おの,なおこ
+おおやま,たかし
+かいずか,としふみ
+かがみ,えりか
+かきた,かおる
+かく,こうじ
+かさい,ゆきのり
+かじい,あかね
+かじた,なおや
+かたえ,ゆうじん
+かたやま,みつこ
+かつ,とおる
+かとう,たく
+かとう,だいすけ
+かみ,あつこ
+かねこ,くにひと
+かまだ,かずひろ
+かみ,よしてる
+かみひさ,ゆうじ
+かみもと,かおり
+かみや,かずお
+かみやま,まき
+かわかみ,ますみ
+かわさき,ひとし
+かわせ,ひろかず
+かわはた,たけちか
+かわはら,じゅんこ
+かわむら,かずひろ
+かわもと,けいすけ
+かわもと,ひろし
+かわもと,みちお
+かんだ,たけし
+きくち,えり
+きたがわ,まさぶみ
+きたなが,さかえ
+きたの,しんご
+きたむら,たつや
+きたもと,つとむ
+きのえ,ひろし
+きぶせ,たかえ
+きむら,じゅんいち
+きむら,ともき
+きもと,ひでゆき
+きもと,ゆり
+ぎょうぶ,ひろこ
+くに,みほ
+くにまさ,みえこ
+くまさか,たいせつ
+くらしげ,あきお
+くりはら,たけし
+こいけ,めぐみ
+こいけだ,たつろう
+こいずみ,ひろし
+こいぬま,みちこ
+こつか,かずあき
+こが,しげき
+こしもと,ひろみつ
+こだま,たいちろう
+こだま,まさかず
+ごとう,ありよし
+こにし,ともこ
+こばやし,よしじ
+こばやし,まさき
+こばやし,やすたか
+こばやし,ひでひと
+こまき,たつや
+こまば,かずのり
+こみや,かつひこ
+こやま,まさのり
+こやま,やすのり
+さいき,ともひさ
+さいごう,みわこ
+さいとう,けんじ
+さいとう,てつお
+さいとう,いさむ
+いがらし,しょうご
+さえぐさ,なみ
+さかい,あきら
+さかがみ,いちろう
+さかね,だいき
+さかもと,とものり
+さかもと,まこと
+さくらい,ひろみ
+さくらだ,りょうじ
+さこん,まさひろ
+ささき,ななえ
+ささはら,わかこ
+さとう,げん
+さとう,じゅんいち
+さとう,けんご
+さとう,なおと
+さの,ひであき
+さわ,けんご
+しぶや,ただし
+しぶや,ひでお
+しまだ,まなえ
+しまだ,ひでたけ
+しまだ,やよい
+しみず,ゆきお
+しみず,だいすけ
+しみず,ひでき
+しみず,あきの
+しみず,なおゆき
+いのうえ,けいすけ
+しも,さとし
+しょうだ,しげのり
+じんの,まこと
+じんの,りゅうじ
+しんまち,たけし
+すぎい,まさなお
+すぎおか,たかひこ
+すぎもと,みちのり
+すずき,かずひら
+すずき,だいすけ
+すずき,かずひろ
+すずき,ひろしげ
+すずき,ゆういちろう
+せお,のりこ
+せき,そう
+いしはま,けんと
+そのだ,こうたろう
+たい,よしあき
+たかいわ,きよし
+たかぎ,ゆうじ
+たかはし,まきこ
+たかはし,のぶゆき
+たかはし,まきこ
+たかはし,たけし
+たかはし,あきひこ
+たかむく,けんし
+たぐち,ひろこ
+たけうち,よしこ
+たけかわ,まさし
+たけわ,しんじ
+ただまつ,ひでき
+たたら,こうじ
+たなか,たかし
+たにもと,ゆうじ
+たねむら,あきふみ
+たはら,さとし
+たむら,ひろし
+だん,たかゆき
+いいだ,むねのり
+ちば,えいすけ
+ちょうとく,ひでゆき
+つかはら,ひろゆき
+つつみ,まこと
+つもり,まりこ
+てらした,ゆういちろう
+どい,ゆたか
+どい,よしえ
+どい,よういち
+としま,こうへい
+ないとう,こうじ
+なかい,まさひろ
+なかい,しゅうへい
+なかお,きほこ
+なかがわ,ちあき
+ながさき,かおり
+なかじま,たかふみ
+なかじま,のぞむ
+なかしま,さなえ
+なかだ,きよこ
+なかはら,みなこ
+なかむら,じゅんぞう
+なかむら,しゅうたろう
+なかむら,ゆり
+なかむら,そういちろう
+なかむら,みつひろ
+なかむら,かつひこ
+なかむら,ひでや
+ほしの,としはる
+なかもと,あきこ
+いけだ,まさたか
+なかもり,とおる
+ながよし,たかまさ
+なではら,ひろし
+ななもり,つとむ
+ならさか,ひろし
+なんば,ゆき
+にし,つねあき
+にしかわ,ひであき
+にしだ,けんし
+にしむら,ゆき
+のぐち,さとし
+のだ,けんいち
+のなみ,すぐる
+ののいちや,ますお
+のむら,ともひこ
+のもと,ゆういち
+はがや,なおゆき
+はぎわら,やすゆき
+はく,ともひと
+はし,たかし
+はしずめ,ゆうこ
+はしば,まこと
+はせべ,たかまさ
+はた,まさみち
+はたえ,みきと
+はたの,あきよし
+はちの,すすむ
+はっとり,ゆう
+はやし,れいこ
+はやしだ,あきら
+はやふね,よしあき
+はら,たつじ
+はらだ,くみこ
+はらだ,まさこ
+いのぐち,かつふみ
+はらだ,たかゆき
+ひがしやま,ようこ
+ひぐち,ひでき
+ひご,ひろし
+ひだの,ともや
+ひまき,とものり
+くらしげ,かずゆき
+いしはら,れいこ
+ひらた,しげお
+ひろさわ,ゆきこ
+ひろた,けいこ
+ふかさわ,みきこ
+ふかざわ,りえ
+ふかざわ,たかし
+ふくむろ,まさとも
+ふじい,てつや
+いとう,けいこ
+ふじい,みおこ
+ふじなが,けいじ
+ふじなが,ふみこ
+ふじわら,のりひろ
+ふじわら,りえ
+ふじわら,なおゆき
+ふたつぎ,つよし
+ふたつもり,しずか
+ふるはた,のぶあき
+ふるや,まりこ
+へんみ,まさる
+ほし,まいこ
+ほしの,かつあき
+ほり,きみひろ
+ほりえ,しんじ
+ほりおか,あつこ
+ほりかわ,ともひろ
+まえふね,なみこ
+まきの,やすのり
+ますだ,おくと
+まつうら,たけし
+まつした,あきし
+まつもと,ひでたか
+いぐち,たかひろ
+まつやま,まさひろ
+まなべ,ちの
+まるやま,なおゆき
+みうら,みちる
+みき,たかゆき
+みつはし,えいいち
+みつべ,まさと
+みとべ,ひさや
+ちょうとく,たまき
+いけふじ,のぶよし
+みやざき,まさはる
+みやざき,あきら
+みやした,ようこ
+みやた,たかし
+むこうやま,みちひで
+むらい,みほ
+むらかみ,まみ
+むらかみ,みつあき
+むらた,ともゆき
+むらまつ,まさゆき
+もとき,じゅんた
+もとよし,せいいち
+もみやま,えいじ
+もり,たかし
+もり,たけや
+もりうえ,よしたか
+いのうえ,あきのり
+もりうち,しんたろう
+もりた,ゆうき
+やぎさわ,かずみ
+やしま,こうじ
+やすだ,ふみひこ
+やの,みき
+やの,ただたか
+やまぐち,じゅん
+やまさき,ふみひこ
+やまざき,のぶひこ
+やました,けいじ
+やました,あつし
+やまだ,たつお
+やまな,かな
+やまみち,けいすけ
+いなか,げんた
+やまもと,こうじ
+やまもと,たくや
+やまもと,ひでお
+やまもと,むねたか
+ゆば,ゆたか
+よこたに,まこと
+よこやま,よしお
+よしだ,かずひろ
+よしだ,としかず
+いわさき,としかず
+よしだ,りょう
+よだ,えみ
+わかまつ,みちえ
+わさ,りょうこ
+わだ,かおる
+わたなべ,けいぞう
+いわくら,えいいち
+わたなべ,ひでゆき
+わたなべ,かずみね
+わたなべ,しょうたろう
+わたなべ,ゆき
+わたなべ,しげる
+わたなべ,ひろゆき
+わたなべ,きよかず
+わたなべ,としえ
+おおい,のぶひろ
+いいだ,ゆきこ
+むかい,たかし
+ふみはら,かおり
+かわごえ,まさはる
+くろかわ,ひろみ
+こうだ,さとる
+ふじた,ゆうこ
+こばやし,たけし
+はまむら,かよ
+いわせ,やすひろ
+たけだ,まさる
+おがわ,ひろあき
+みずた,さとる
+いいだ,あつし
+あいはら,やすこ
+あおう,としき
+あおき,しんこう
+あおば,ひろよし
+あきもと,すすむ
+あさい,ゆうこ
+いしやま,しゅんすけ
+あさお,えみこ
+あさだ,としき
+あさだ,けんたろう
+あさの,ふじお
+あさの,ともひこ
+あざみ,としゆき
+あすま,しゅうへい
+あそう,ゆか
+あだち,きょういち
+あとみ,のりひろ
+あなみ,やすひさ
+あべ,まさおみ
+あべ,まこと
+あべ,まこと
+あまの,まさとし
+あやべ,たろう
+たけきた,まなぶ
+あらい,まき
+いつの,みきお
+ありかわ,よしのぶ
+ありた,こういち
+あんじゅ,つよし
+あんどう,まさき
+あんどう,りゅうた
+いちのせ,こずえ
+いいぬま,ひろゆき
+いうえ,よしあき
+いがらし,あきこ
+いけうち,おりか
+いけがみ,みのる
+いけだ,たけし
+いりた,やすあき
+いけだ,しゅういち
+いけだ,しょういち
+いけだ,じろう
+いしい,じゅんいち
+いしい,ともこ
+いしい,なおみ
+いしおか,しんいち
+いまい,たけし
+いしかわ,りょうへい
+いしかわ,とものぶ
+いしぐろ,ゆきひろ
+いしだ,たつゆき
+いせき,たけし
+いちき,まさと
+いちのせ,ともひろ
+いちのみや,ふみたけ
+いとう,しんいち
+いとう,のりこ
+いなだ,よしたか
+いなば,せいいちろう
+いはら,きよたか
+いのうえ,おさむ
+いのうえ,のりこ
+いのうえ,ともゆき
+いまいずみ,あつし
+いま,さとこ
+いまだ,みお
+いまず,つよし
+いまむら,みつとし
+いりたに,たくじ
+いわき,たつや
+いわさき,まり
+いわさき,まな
+いわすぎ,みか
+いわはし,いちろう
+いわぶち,なほ
+いわほり,あきひこ
+うえだ,のぶえ
+うえまつ,たかし
+うすい,ともいち
+うすい,まさひろ
+うちだ,かおり
+うつみ,まきこ
+うめだ,ひでのぶ
+うらの,やすひろ
+えがわ,たけし
+えざき,あつこ
+えとう,けんじ
+えのもと,はるひら
+えのもと,あきら
+えま,あきこ
+えんど,ひさのり
+えんど,よしまさ
+おいたに,ゆき
+おう,よしひろ
+おおい,かおる
+おおえ,あきひろ
+おき,あや
+おおくぼ,ふみのり
+おおさわ,いさお
+おおさわ,ひさし
+いわきり,わたる
+おおすみ,もとひこ
+おおた,みつひろ
+おおた,たかし
+おおつか,あきのり
+おおつか,こういち
+おおつか,ともひろ
+おおつき,じゅん
+おなか,だいすけ
+おおにし,ようこ
+おおぼ,まさこ
+おま,きよし
+おむら,しのぶ
+おむら,くみ
+いしい,なおこ
+おおもり,よしひろ
+おおもり,ひろかず
+おおもり,のぶひさ
+おおわだ,たかふみ
+おかい,れい
+おかざき,ともみち
+おかざき,かずひと
+いけだ,あきお
+おかの,えいいち
+おかべ,うらら
+おかもと,えつこ
+おがわ,ゆうこ
+おがわ,あきら
+おがわ,りょういち
+おがわ,きよの
+おおがわら,くにはる
+おくはら,さとし
+おくやま,まこ
+おぐら,やすはる
+きたむら,まりこ
+おざわ,しげみつ
+おち,もとひろ
+おの,たかし
+おおの,ちか
+おのでら,けんし
+おばた,かつよし
+おおやま,ちずる
+おんた,めぐみ
+いわた,たけし
+かいぶき,ゆみ
+かきもと,まちこ
+かざぐち,まさのり
+かさざき,よしひろ
+かじ,さおり
+かじむら,はるな
+かしわい,のりこ
+かしわばら,なおや
+かたくら,よしゆき
+かたやま,まいこ
+かつの,たかのり
+かど,ちえこ
+かとう,のぶゆき
+いその,みどり
+かとう,たかし
+かとう,しほ
+かとう,あきよし
+かとり,けんじ
+かなさか,もとひろ
+かなざわ,みちこ
+かなやま,かなこ
+かねこ,ゆきお
+かねこ,ともこ
+かねだ,もとき
+がみ,ひろし
+かめおか,まなみ
+からさわ,あきてる
+からしま,きよふみ
+かるいし,いずみ
+かわい,なおゆき
+かわい,たかおみ
+かわかみ,まさみ
+かわかみ,けんた
+かわず,あつし
+かわなか,えいすけ
+かわの,たかし
+かわばた,なおや
+かわべ,しほ
+かわみ,しんじ
+かんばし,みちこ
+かんばら,あつし
+きしい,やすえ
+きしだ,あきひろ
+きたがわ,まさき
+きたしろ,かずよし
+きたはら,よしかず
+きたむら,よういち
+きど,ちえこ
+きのした,わかこ
+えだ,えい
+きむら,なつこ
+きむら,しげる
+きむら,あつし
+きよなが,のりみつ
+きよみや,たかお
+きりや,まさき
+いとう,ともや
+くしだ,きょうこ
+くじらおか,だいき
+くにもと,たけとし
+くぬぎ,とおる
+くぼ,あつし
+くぼさわ,まさき
+くぼた,たかひろ
+くめの,のぶお
+いしぐろ,たろう
+くら,ともあき
+くらさわ,ふみはる
+くらた,りょうこ
+くろかわ,たかひさ
+くろす,まみこ
+くろやなぎ,さんしろう
+いなとみ,だいすけ
+こいけ,まゆこ
+こいけ,わたる
+こいしかわ,ひでゆき
+こいずみ,てるみ
+こいずみ,のりまさ
+こいで,まどか
+こずま,まいこ
+こんの,あつこ
+こやま,だいき
+こり,たかひで
+かつかわ,せいいちろう
+こがの,あきふみ
+こしい,ともひろ
+こしまる,だいとく
+こすぎ,まさし
+こせき,まなぶ
+こたに,やいち
+こだま,せんじ
+こにし,たみこ
+こにし,ただし
+こば,ともき
+こばたけ,けいいち
+こばやし,あきこ
+こばやし,やすゆき
+こばやし,ようじ
+こばやし,まさや
+こばやし,よしお
+なかむら,ようへい
+こばやし,ひろこ
+こぼり,くにひこ
+こまつ,つよし
+こやま,つぎお
+こんの,たかこ
+さいとう,ともえ
+さいとう,あつこ
+さいとう,ひろゆき
+さいとう,ひろゆき
+いとう,ふきこ
+さかい,ちひろ
+さかい,きよし
+さかい,みねお
+さかきばら,としき
+さかぐち,いちろう
+いわさき,れいこ
+さかもと,のりお
+さかもと,ようじ
+さかもと,じゅんこ
+ささき,かつとし
+ささき,こさく
+ささき,じゅんこ
+ささき,れな
+いまはし,ひろみ
+さつみ,たかゆき
+さとう,しんいちろう
+さとう,ゆうじ
+さとう,ともくに
+さとう,まりこ
+さとう,こうき
+さとう,ゆみこ
+さの,しの
+いしぐろ,ひでたか
+さわやなぎ,みつひろ
+しおた,けいすけ
+しき,ゆうこ
+しげおか,れい
+しげた,まもる
+ししど,りか
+しなだ,よしこ
+いで,よしふみ
+しばた,ようこ
+しばた,ありひと
+しばた,りょう
+しばた,しゅういち
+しまず,もなみ
+しまだ,よしさだ
+しまず,つねお
+しみず,ひでただ
+しみず,くにえ
+しもはし,ひろのぶ
+しもやま,かおり
+じょう,たかし
+いとう,きょうこ
+すがた,のぶえ
+すがや,あきひろ
+すぎた,たかひろ
+すぎなか,えいじ
+すぎもと,ふみお
+すぎやま,かずな
+すぎやま,ゆうじ
+すぎやま,とおる
+すげの,ごう
+すずき,こうじ
+すずき,まさひろ
+すずき,ひであき
+すずき,こうじ
+すずき,ゆうこ
+いわさき,ともふみ
+すずき,ようこ
+すずき,こうじ
+いちかわ,りか
+せき,まさよし
+せきぐち,けいこ
+せきや,けんじ
+せこ,けんたろう
+せら,ひろゆき
+そが,ゆか
+そが,えいこ
+いとう,あきら
+かみや,かすみ
+そんく,としかず
+たかき,ゆみこ
+たかぎ,よしはる
+たかさき,やすお
+いけだ,ひとし
+たかしま,やすひと
+たかの,けんいち
+たかの,ひでき
+たかの,まきこ
+たかの,なおひろ
+たかの,よしひさ
+たかはし,よしお
+たかはし,こうへい
+たかはし,こういちろう
+たかはし,がく
+たかはし,かな
+たかはし,たかのり
+たかまつ,ひろし
+たがみ,ひとし
+たかみざわ,りゅうき
+たからだ,しんいち
+たきかわ,えみこ
+たきざわ,いわお
+いいの,ゆみ
+たけい,よしひろ
+たけうち,しんいちろう
+たけうち,たかきよ
+たけきた,まき
+たけなか,ふみお
+たけのうち,りょうじ
+たけはな,ふみ
+いとう,とくこ
+たけもと,まさる
+たけもと,かずひこ
+たご,すすむ
+たさか,よしのぶ
+たじま,ひろかず
+たしろ,よしこ
+たしろ,ごう
+たたら,さなえ
+たちばな,あやこ
+いちむら,さとし
+たていし,ゆき
+たての,ひさし
+たての,だいぞ
+たなか,けんいちろ
+たなか,まさひろ
+たなか,なおこ
+たなか,とおる
+たなか,きょうこ
+たなか,やすし
+たなか,ようこ
+がみ,まこと
+たなみ,つねお
+たに,まみ
+たにぐち,ゆみこ
+なかおか,ゆき
+たにざわ,よしのり
+たにだ,のぶゆき
+たにもと,あきみ
+たのおか,みえこ
+たばた,まさき
+たはら,みかこ
+たむら,ゆきひろ
+ちかざわ,のりひと
+ちの,たかのぶ
+ちはら,ひさの
+ちゅう,さやか
+ちゅうま,けいいち
+つかだ,ひでたけ
+つかもと,のぶたか
+つかもと,ゆたか
+つだ,とものり
+つちだ,まさお
+つちや,せれな
+つちや,あき
+つねき,くみこ
+でみせ,たかし
+てらおか,かなこ
+いずみ,あつし
+とう,せいじ
+とじ,まさこ
+としおか,みすず
+とだ,はなえ
+とびない,あきこ
+ともい,みねき
+とやま,あいこ
+とよしま,こういち
+とよだ,たくや
+とよはま,としお
+ながえ,けんじ
+ながえ,しほ
+なかお,ともひで
+なかお,けんたろう
+なかじま,ともこ
+なかじま,よしたか
+なかじま,つよし
+ながしま,まり
+ながせ,こういちろう
+なかぞの,じゅんこ
+なかた,あさこ
+ながた,よしひこ
+ながと,まりこ
+なかにし,げん
+なかの,よしこ
+ながの,ひろき
+ながの,たかし
+ながの,てつや
+ながはら,よしゆき
+なかひがし,めぐみ
+なかむら,きふみ
+いぬずか,ともかず
+なかむら,ふみき
+なかむら,ひとし
+なかむら,みほ
+なかむら,まさかつ
+なかや,ゆたか
+なかや,けい
+ならさき,のぶなり
+なりた,りゅうた
+なりた,よしこ
+にいだ,ともあき
+にしかわ,いわお
+にしむら,ちぎり
+にしむら,たいいち
+にしむら,かつみ
+にしやま,とおる
+にしやま,のりまさ
+にむら,ひろゆき
+にわ,ゆきえ
+ぬまた,なおこ
+ぬまた,たかひろ
+ぬまだ,つよし
+ねぎし,いさお
+のざき,たかなお
+のがみ,ゆか
+のだ,たつや
+のはら,つよし
+のぶはら,ゆうこ
+はが,まさと
+はぎわら,ただかず
+はぎわら,かつら
+はしずめ,たかし
+はしもと,たかゆき
+はしもと,そよか
+はしもと,あきら
+はせがわ,まこと
+はせがわ,まゆみ
+はせがわ,かずたか
+はせべ,ようへい
+はた,まさひろ
+はたけやま,はずき
+はたなか,いくぞう
+はたの,あつよ
+はっとり,あきよし
+はなざき,たつや
+はなぶさ,おさむ
+はなむら,ごう
+ばば,あきこ
+はまさき,よしゆき
+はまだ,つぐき
+はやし,まなぶ
+はやし,たけひろ
+はやし,まこと
+はやし,りょう
+はら,まさひで
+はらしま,おさむ
+はらだ,なおや
+はらだ,りえ
+はるたに,たかひろ
+ひがしの,まき
+ひがしやま,ゆう
+ひぐち,しげみつ
+いしはら,たけよし
+ひじかた,ひろあき
+ひび,たつと
+ひょうえ,ともひろ
+ひらい,ひでのり
+ひらかわ,じゅんや
+ひらく,しげき
+ひらさわ,けんじ
+いのはら,たくひろ
+ひらた,くにつぐ
+ひらぬま,かずお
+ひらの,たろう
+ひらやま,しげる
+ひろうち,れい
+ひろおか,ゆかこ
+ひろかわ,けんたろう
+ふくい,まさき
+ふくだ,たかひろ
+ふくだ,すすむ
+こり,きょうこ
+ふじい,じゅんいち
+ふじい,だいぞ
+いで,ちえこ
+ふじい,ひろかず
+ふじお,たかゆき
+ふじおか,けんいち
+ふじくら,きくこ
+ふじさわ,こうじ
+ふじさわ,けんたろう
+ふじしげ,けいいち
+ふじた,けんいち
+いのうえ,のりお
+ふじと,ゆか
+ふじなが,ながまさ
+ふじわら,ともはる
+ふじわら,としき
+ふせ,かおる
+ふるかわ,まさみつ
+ふるかわ,ゆういち
+いしい,だいすけ
+ふるさわ,ひろき
+ふるた,こういち
+ふるた,よしあき
+ふるた,なおこ
+ふわ,みお
+ほし,まゆみ
+ほそだ,けいすけ
+いしい,ひろみち
+ほりかわ,なおこ
+ほりこし,ひろあき
+ほんだ,のぼる
+まえかわ,るみ
+まえだ,みなこ
+まえだ,たろう
+まえだ,たかし
+まえの,さとし
+まき,なみ
+まきぞの,さやか
+まきた,かつゆき
+まきの,むねき
+まさき,ゆずる
+ますざき,よしこ
+ますだ,ゆうすけ
+ますぶち,かずひろ
+まちだ,みゆき
+まつうら,えりこ
+まつかわ,もとよ
+まつざき,だいすけ
+まつざき,まき
+まつした,こずえ
+まつしま,ひでお
+まつだ,しげゆき
+まつだ,たかし
+まつだ,あゆみ
+まつなが,たかし
+まつなみ,こうじ
+まつばら,のりふみ
+まつばら,さとみ
+まつみや,けんいち
+まつもと,まこと
+まつもと,かずひで
+まつもと,たけふみ
+まつもと,ゆうすけ
+まつもと,ひろこ
+まつやま,ちずこ
+まなべ,りょうすけ
+まるやま,まさき
+まるやま,ひろき
+みうら,やすみつ
+みくに,ふみなり
+みずかみ,ひでき
+みつはし,のりよし
+みなと,ひろゆき
+みなみ,たかゆき
+みふね,よしひろ
+みやがわ,まさし
+みやさか,しのぶ
+みやざわ,じゅん
+むらお,まさこ
+むらかみ,まさみ
+むらた,けんすけ
+むらまつ,のぶゆき
+むらやま,としお
+むらやま,かずあき
+めぐろ,ともひこ
+もちずき,こういち
+もとよし,まこと
+ももず,ゆきこ
+もり,まさき
+もり,やすたか
+もり,みほ
+もり,たまよ
+もりた,けんじ
+もりた,けんいちろ
+もりの,みちお
+もりもと,たかし
+もりもと,ゆきこ
+もりやま,かずゆき
+もりわき,ふみあき
+やぎ,けいすけ
+やぎ,ゆたか
+やくしじ,おさむ
+やこ,つよし
+やざわ,けんいち
+やすま,けんじろう
+やとご,あい
+がん,はなえ
+やなぶ,さとし
+やの,しゅうこう
+やぶた,ひろし
+やまうち,ゆきこ
+やまうち,みつはる
+やまぐち,りょう
+やまぐち,やすまさ
+やまぐち,なおこ
+じだい,ひろあき
+やまぐち,えいた
+やまぐち,せいこ
+やまぐち,こうじ
+やまさき,やすひろ
+やまさき,じゅん
+やまざき,あつや
+やました,かずひろ
+やました,まさと
+やました,たくや
+やまだ,たかし
+やまだ,やすお
+やまだ,たつじ
+やまだ,やすひさ
+やまだ,きょうこ
+やまとや,まりこ
+やまなか,ひふみ
+やまなし,じゅん
+やまにし,なおき
+やまもと,ちか
+やまもと,かずや
+やまもと,りか
+やまもと,まなみ
+やまもと,ようすけ
+やまもと,たつや
+よこた,ともふみ
+よこた,しげゆき
+よこた,かよ
+よこて,せいいちろう
+よしおか,たかし
+よしおか,あつし
+よしおか,ひでと
+よしかわ,たくや
+よしかわ,りょういち
+よしだ,まさゆき
+よしだ,じゅんこ
+よしだ,あかね
+よしの,みのる
+よしみ,まさゆき
+よしむら,くにひこ
+よだ,のりひさ
+よねざわ,あらた
+りゅうと,けい
+わかつき,しんすけ
+わきざか,しんや
+わきた,ゆうすけ
+わきた,とおる
+わきもと,しょうこ
+わだ,たかし
+わだ,あきこ
+わたせ,だい
+わたなべ,やすはる
+わたなべ,そう
+わたなべ,ひろゆき
+わたなべ,なおこ
+わたなべ,よしたか
+きのした,ゆうこ
+あおき,よしひこ
+やなぎはら,きよし
+あまこ,よしお
+こんどう,しおり
+しらかわ,ようこ
+こやま,たかゆき
+こんど,まこと
+もり,としお
+おおの,ひでよし
+まの,あき
+ながの,すみこ
+さとう,えり
+みやざき,あや
+おがわ,あきら
+きむら,ひでとし
+よこお,けんじ
+うちむら,ちなつ
+ごしま,りゅういち
+さえき,みき
+なかじま,ひろみ
+いわみ,みほ
+えげ,れい
+うめぞの,かおり
+さくらい,まみ
+わたなべ,まや
+ながい,しょうご
+おそがみ,あつひこ
+くろかわ,まさよし
+たかすか,よしかず
+おばた,まさひこ
+しらい,ゆたか
+まつうら,まこと
+なかざわ,よしひさ
+まつい,ゆういち
+こせき,こうたろう
+つかだ,のりゆき
+てらくら,ようじ
+にへい,きよし
+かわむら,たかゆき
+ひご,まさゆき
+こばやし,きよのり
+ふるた,たかゆき
+もちずき,ひろゆき
+おかだ,たつし
+さいとう,ゆきこ
+かわはら,ゆき
+すずかけ,たくや
+いとう,あつこ
+いしずか,ひさと
+たべい,やすまさ
+ごとう,あきひろ
+しもさか,とおる
+かわい,かずま
+わたなべ,よしかず
+すずき,いつふみ
+まつやま,ひろし
+はら,りょうへい
+つばき,せいいちろう
+やすい,たかゆき
+こばやし,けんたろう
+おかべ,さゆり
+おがわ,しょうこ
+やまぐち,さとし
+ふじかわ,けんじ
+いながき,ひでとし
+ちぞ,としひこ
+はなだ,じゅんや
+おおこ,もとあき
+おおくら,すみひろ
+まつお,つとむ
+えんど,まりこ
+ほりべ,もとじ
+かつ,てつひろ
+おたか,まさのぶ
+たかはし,としや
+むらやま,ゆうこ
+よしおか,さゆり
+かい,よしえ
+たかはし,わかこ
+ぐんげ,たまよ
+やの,たい
+はやし,あやこ
+みうら,まなみ
+あおやぎ,ひろたか
+たかだ,とくひこ
+ぬまた,けんじ
+かたおか,かおる
+しみず,さちこ
+しみず,ゆうこ
+まつむら,たろう
+おりと,さとし
+こたに,ふみひこ
+おおはし,りょう
+かんせき,けいこ
+きたむら,こうたろう
+さくた,しんいちろう
+よしだ,たかし
+こはら,とおる
+いはら,けいこ
+つじうら,かずひろ
+なかむら,つよし
+あおき,あきこ
+あおやま,だいすけ
+あかいけ,ひろみ
+あかつ,じゅん
+あきはら,しゅんすけ
+あきもと,まり
+あさくら,たかし
+あさの,りょう
+あびる,あいこ
+あべ,のりたか
+あべ,ゆき
+あべ,たくや
+あべかわ,ともこ
+あらい,のりひと
+あらい,まさとし
+あらかわ,ひろき
+あらき,たかあき
+あらき,ひろし
+ありえ,まさふみ
+あんどう,けんたろう
+いいだ,じゅんいち
+いけだ,しゅんすけ
+いけだ,たけし
+いけだ,なおき
+いしい,のぶやす
+いしい,はやと
+いしがき,みやこ
+いしかわ,ゆき
+いしかわ,ゆみこ
+いしざわ,てるき
+いしずみ,しゅうへい
+いしぜき,だいすけ
+いしだ,ゆうじ
+いしだ,れいこ
+いしだ,よしたか
+いしづ,たかし
+いしはら,ふみなお
+いしまる,しゅういち
+いたに,たかし
+いたはら,ひさつぐ
+いちま,なおと
+いとう,ゆうこ
+いとう,ゆういちろう
+いとう,ひろかず
+いとう,あきこ
+いとう,しずこ
+いとう,おき
+いとう,つよし
+いとう,ひろゆき
+いながき,しげき
+いなみ,れお
+いの,みき
+いのうえ,まさき
+いのうえ,たかし
+いまお,じゅんぺい
+いまだ,けんいち
+いわかみ,ゆうすけ
+いわくら,ゆたか
+いわざき,ひろたか
+いわた,こうじ
+いわもと,ひろき
+うえすぎ,じゅんこ
+うえだ,まさや
+うえたか,しょうじ
+うえち,まり
+うえの,けんじ
+ひりゅう,こうじ
+うえむら,まさひろ
+うちだ,あや
+うちだ,きいち
+うちはし,ごう
+うちやま,れみ
+うめはら,なつこ
+うりたに,ますみ
+おいかわ,けんたろう
+おおい,ともゆき
+おおい,かよこ
+おおいし,まさひこ
+おうち,けんしん
+おおえ,だいすけ
+おおおか,まさひろ
+おおかわ,まさや
+おおくぼ,りょう
+おおくま,のりひろ
+おおた,のぶひろ
+おおたに,しずか
+おおつ,ちえ
+おおつ,てつや
+おおつか,じゅん
+おおつか,てるひろ
+おおつか,あきら
+おおつか,けい
+おおつぼ,まさみつ
+おおはた,あきこ
+おおまさ,たつお
+おおや,けいじ
+おおやま,たいすけ
+おか,たろう
+おかじま,みつのぶ
+おかだ,たつや
+おかだ,ちひろ
+おかだ,のりよし
+おかだ,さとし
+おかだ,るみ
+おかはた,たつや
+おかべ,やすまさ
+おかもと,ひさし
+おかもと,よしのり
+おかもと,ひでき
+おがわ,けいこ
+おがわ,だいすけ
+おくだ,こうへい
+おくと,さち
+おくなか,せいし
+おぐら,たろう
+おざき,のぶあき
+おさだ,ひろし
+おざわ,ひろみ
+おじま,まこと
+おじま,まさし
+おばら,ゆりこ
+かいとう,たかし
+かきくら,まさゆき
+かきもと,てつや
+かく,こうじ
+かげやま,ただひさ
+かじなが,ゆたか
+かしま,よしひこ
+かたおか,たかひろ
+かたぎり,なつこ
+かたやま,まひと
+かど,ゆみこ
+かとう,りつこ
+かとう,りょう
+かとう,ふみ
+かとう,れいこ
+かとう,すみれ
+かとう,ひろし
+かとう,てつや
+かとう,さとし
+かとう,わたる
+かとう,こういちろう
+かなもと,あきこ
+かなや,しんや
+かねこ,よしかず
+かねもり,ゆう
+かわ,よしかず
+かわい,こうじ
+かわい,はるこ
+かわかみ,まさおみ
+かわぐち,ちかこ
+かわぐち,しゅんすけ
+かわぐち,としひこ
+かわぐち,ひろき
+かわぐち,すすむ
+かわごいし,たかゆき
+かわしま,ごろう
+かわな,たけし
+かわのべ,ゆきこ
+かんの,やすのぶ
+きくち,のぞみ
+きし,れいこ
+きしもと,たけし
+きしろ,やすし
+きたお,しん
+きたはま,たけのり
+きたむら,よしのり
+きどころ,あつし
+きむら,こういち
+きむら,まこと
+きむら,あいこ
+きりあけ,えいさく
+くきもと,としき
+くぼ,くにゆき
+くぼた,まゆみ
+くまくら,りか
+くまだ,ゆうすけ
+くまもと,ひろあき
+くめ,まさひと
+くらや,こうへい
+くりわき,まきこ
+くわばら,ゆかり
+ごう,てるお
+こいけ,さとる
+こいけ,れおな
+こさか,むつみ
+こうだ,あやこ
+こが,こういち
+こくぼ,ももえ
+こくら,りえ
+こご,りゅうじ
+こさき,りょうすけ
+こじま,ひろこ
+こでら,かずと
+ごとう,だいすけ
+ごとう,けいこ
+ごとう,かずのり
+こはた,ちよみ
+こばやし,とおる
+こばやし,なほこ
+こまつばら,みほ
+こみや,とくこ
+こみやま,まさよし
+こやなぎ,しんや
+こやま,たかこ
+こんど,のぶか
+こんの,のぶほ
+さいとう,ひろひで
+さいとう,しげる
+さいとう,けんいち
+さいとう,けんご
+さいとう,あい
+さかい,りょうすけ
+さかの,ゆきこ
+さかもと,わたる
+さかもと,ちから
+さくらい,まさふみ
+ささき,よしこ
+ささき,たけゆき
+ささき,ゆきお
+ささき,さき
+ささき,やすひろ
+ささの,あかぎ
+さだもと,げんこう
+さとう,ひろき
+さとう,ゆういちろ
+さとう,たかし
+さとう,たかひろ
+さとう,ともこ
+さなだ,まさゆき
+さねしげ,としのぶ
+さの,かずひこ
+しげとみ,さとこ
+しのはら,もりひこ
+しばかわ,けんじろう
+しばの,りょう
+しまだ,たけし
+しまだ,たつろう
+しみず,たかお
+しむら,たかのり
+しむら,たけし
+しもかわ,ともや
+しもふじ,のぶひこ
+しもやま,ひでかず
+しょう,ひろゆき
+しらい,りえ
+しらが,こうじ
+しらかわ,やすこ
+しらす,みゆき
+しわ,けんいち
+しんけ,ないしん
+しんどう,ともかず
+すがはら,ひろかず
+すぎうち,しょうたろう
+すぎうら,ちあき
+すぎさわ,ようこ
+すぎはら,ひろのぶ
+すぎもと,てるゆき
+すぎやま,たつや
+すずき,まさゆき
+すずき,しんいち
+すずき,たいすけ
+すずき,まこと
+すずき,まさや
+すずき,りゅうた
+すずき,のりこ
+すずき,みかこ
+すだ,りんや
+すと,てつや
+すみだ,あきひろ
+せき,あつなり
+せき,かずき
+せんだ,ゆきこ
+そめみや,ちえ
+そや,ひろき
+だいまる,あきら
+たかお,はなえ
+たかぎ,かよ
+たかざわ,だん
+たかせ,けんじ
+たかね,さとし
+たかはし,じゅんこ
+たかはし,たかし
+たかはし,ひろなお
+たかはし,ひろゆき
+たかはし,まなぶ
+たかやま,ゆきお
+たきうち,りえ
+たきかわ,あきら
+たきぐち,けんたろう
+たきざわ,さとし
+たきざわ,こうじろう
+たきざわ,ちひろ
+たきた,あきら
+たぐち,けんたろう
+たけい,くにお
+たけうち,しんご
+たけだ,ゆういちろ
+たけはら,ようこ
+たての,なおたか
+たなか,だいすけ
+たなか,すすむ
+たなか,あきら
+たなか,なお
+たなか,せいじ
+たなか,とおる
+たなか,なおこ
+たなか,えりこ
+たなか,みつえ
+たなべ,しんいちろう
+たに,ちかよ
+たにかわ,よしつぐ
+たになか,ひろたか
+たにもと,ちずる
+たぬま,ふみひこ
+たばた,じゅん
+たばた,こ
+たばた,ようすけ
+たばた,けいたろう
+たむら,こういち
+たるき,ゆき
+たんじ,きよのり
+ちば,かずゆき
+ちば,ひろかず
+つかだ,りえ
+つきもと,あつし
+つじ,ひろし
+つだ,きみひこ
+つちもと,しんご
+つつみ,ともこ
+つつみ,じゅんいち
+つぼた,まさや
+てい,わかみ
+てらかど,みつあき
+みのうら,まなぶ
+てるい,まり
+どい,こうたろう
+とう,まきこ
+とうかいりん,ゆみ
+どうめん,えつこ
+とうかい,かおり
+とくなが,きみたか
+とくやま,たいが
+としま,みわこ
+どうち,ともゆき
+とのい,あきこ
+とのむら,りえこ
+とみた,くにお
+ともの,ひでかず
+とりい,まもる
+ながい,とものり
+なかがわ,いくま
+なかがわ,よしのり
+なかがわ,だいすけ
+なかざと,もとのぶ
+なかしま,ちかこ
+ながた,ゆか
+なかの,かな
+ながの,りょうた
+ながの,りょう
+なかむら,ようこ
+なかむら,さとし
+なかむら,たけし
+なかむら,てつや
+なかもり,とくこ
+なかやま,ともひろ
+なるせ,たかし
+なんご,まさき
+なんば,けん
+なんば,こうじ
+にいみ,こうへい
+にしお,ようじ
+にしおか,しんいち
+にしおか,ともこ
+にしさか,まみ
+にしざき,たくま
+にしざわ,なおき
+にしの,さとし
+ぬまたき,もとき
+ねぎし,りか
+ねやま,たけし
+のだ,ちあき
+のぐち,のりこ
+のぐち,ようすけ
+のぐち,けいじ
+のぐち,しんきち
+のざき,だいすけ
+のだ,ひろこ
+のぼり,よしひろ
+のむら,しゅういち
+のむら,みさこ
+のむら,けんじ
+はぎわら,しょうたろう
+はしぐち,としひろ
+はしもと,たかふみ
+まき,かずと
+はせがわ,たけお
+はせがわ,おさむ
+はだ,あやこ
+はっとり,ゆういち
+はっとり,まゆこ
+ばば,まさき
+ばば,けんじ
+ばば,しんいちろう
+ばば,りかこ
+はまだ,くみこ
+はまだ,だいじ
+はまだ,りさ
+はまだ,ふみひろ
+はまの,まさゆき
+はやし,あきのり
+ひぐち,こうき
+ひさつね,まこと
+ひしぬま,あつし
+びょうどう,ひろこ
+ひらい,まさかず
+ひらおか,みき
+ひらかわ,ともひろ
+ひらさわ,たくじ
+ひらしま,じろう
+ひらた,まみこ
+ひらの,やよい
+ひるま,ゆういち
+ひろせ,ひでき
+ひろせ,かつよし
+ひろた,ひろし
+ふくい,あずさ
+ふくだ,たかし
+ふくば,かなめ
+ふくむら,ゆみこ
+ふくもと,だいすけ
+ふじい,けん
+ふじい,ゆき
+ふじい,みわ
+ふじえだ,ひさかず
+ふじた,ひでかず
+ふじた,ゆきこ
+ふじつ,たけし
+ふじの,たかほ
+ふじもと,さとこ
+ふじわら,たくと
+ふじわら,りな
+ふじわら,くみ
+ふるかわ,りょう
+ほ,まさのり
+ほしの,むねとも
+ほそかわ,てるひこ
+ほりかわ,しゅうじ
+ほんごう,よしあき
+まえだ,あつし
+まおか,つとむ
+ますぶち,つよし
+ますみつ,きょうへい
+まつい,けんたろう
+まつお,ひでのり
+まつおか,きょうすけ
+まつおか,さちこ
+まつだ,りょう
+まつばら,あきこ
+わたなべ,だいすけ
+まつやま,たけし
+まつやま,みつてる
+まつやま,よしき
+まとば,ともひろ
+みうら,まさき
+みつぎ,たけし
+みと,しゅういち
+みのうら,やすひさ
+みや,あきら
+みやけ,ひでまさ
+みやした,あい
+みやした,ゆきお
+みやた,あきひろ
+みやもと,たつや
+みやもと,くにこ
+みやもと,まさひろ
+むくだ,ともあり
+むしか,ゆきこ
+むとう,あきら
+むらかみ,ゆか
+むらかみ,かなこ
+むらかみ,たつひろ
+むらかみ,ひでつぐ
+むらたに,もとひろ
+むらまつ,まさこ
+むらやま,よしあき
+もちずき,としひこ
+もりぐち,みさと
+もりた,まみ
+もりばやし,こうめい
+もろと,ひろたつ
+やえがし,ひでゆき
+やおやま,げんた
+やがみ,よしひろ
+やぎ,けいじ
+やぐら,しんじ
+やすこち,のぼる
+やすだ,ゆうすけ
+やすだ,のりこ
+やまぐち,ゆうすけ
+やまぐち,しょうしん
+やまだ,わいけん
+やまだ,みずほ
+やまだ,あきら
+やまみち,かつゆき
+やまもと,じゅんこ
+やまもと,ひろみ
+ゆき,まみこ
+ゆみば,けいいち
+ゆら,けんいち
+よこすか,はるのぶ
+よこた,あい
+よこやま,あやこ
+よしおか,なおこ
+よしおか,かずひろ
+よしざわ,ゆうこ
+よしだ,みつる
+よしだ,あかり
+よしだ,たかし
+よしの,かずみ
+よしむら,ゆうこ
+りゅう,えいじ
+ろく,あきこ
+さかもと,けいこ
+わたなべ,れいな
+わたなべ,ゆふこ
+わたなべ,ゆう
+わたなべ,たかこ
+わたなべ,やよい
+わらび,ひろのり
+のざわ,ゆうこ
+くぼ,やすこ
+よしもと,こ
+やまもと,たかし
+やまもと,たかし
+ひろさわ,りえ
+みひら,りょうへい
+おおの,ひろゆき
+おだ,かずひこ
+おおばたけ,みほこ
+かどえ,あい
+にしだ,とよひろ
+まつもと,よしあき
+みぎた,まな
+みやもり,みお
+やました,まどか
+やまだ,しんご
+のりとみ,ちえ
+いけだ,ゆうすけ
+もりた,りょうじ
+たけうち,りょう
+みた,よしのり
+いぬい,けん
+とう,のりゆき
+まきの,まり
+なつめ,しんや
+おのでら,くにひろ
+おおた,みきこ
+うるしさこ,りつこ
+さかきばら,しげのり
+あおき,えいすけ
+あおき,なおと
+あおき,ゆうこ
+あかがわ,もとこ
+あかつか,かずひと
+あかほり,けいじろう
+あきやま,かずひろ
+あさい,てるみ
+あさい,しんぺい
+あさおか,けんじ
+あさぬま,あや
+あそ,なおふみ
+あたけ,としき
+あだち,しんご
+あべ,たかみち
+あべ,のぶやす
+あべ,ゆきえ
+あらい,つよし
+ありま,ともこ
+いいずか,だいすけ
+いがらし,ゆたか
+いけだ,こずえ
+いけだ,けんたろう
+いけはた,ひろき
+いざわ,ちはる
+いしい,やすし
+いしかわ,りょうこ
+いしぐろ,あきひろ
+いしだ,こうたろう
+いしだ,たつお
+いしばし,としゆき
+いしはら,たかひろ
+いしもと,まゆこ
+いそはた,あさこ
+いたみ,たかあき
+いちかわ,なるたか
+いっしき,たつや
+いで,なるみ
+いで,こうじ
+いとう,まゆみ
+いとう,じゅんぺい
+いとう,まさお
+いとう,なつこ
+いとう,まい
+いのうえ,まこと
+いのうえ,ようすけ
+いのうえ,なおき
+いのうえ,かつき
+いのくち,のりゆき
+いまい,りほ
+いまきゅうれい,れいこ
+いまぜき,くみこ
+いまむら,ますみ
+いまむら,けんいちろ
+いわい,さとる
+いわい,たかし
+いわさき,ともこ
+いわせ,すすむ
+いわた,こうじ
+いわで,けんたろう
+いわむら,まさひと
+うえだ,ふみお
+うえの,まさふみ
+うえの,しんじ
+うかい,ひろき
+うさみ,まりこ
+うちうみ,りえこ
+うちやま,まさふみ
+うらはら,たいじ
+えぎ,たかひこ
+えじり,ひろし
+えのきど,よりこ
+えもり,いつき
+えんど,はじめ
+おおい,なつこ
+おおいけ,ともかず
+おふら,だいすけ
+おおかわ,よしこ
+おきた,ゆきのり
+おおさわ,まさゆき
+おおた,ともこ
+おおた,あきなお
+おおた,ようへい
+おおたに,たかあき
+おおたに,ゆきひで
+おおつか,もとい
+おおつか,よしのり
+おおつか,だいじろう
+おおつき,さとる
+おど,たくみ
+おとんべ,たつや
+おの,まさひこ
+おの,ひろし
+おおはし,たつや
+おおはた,あきら
+おおみち,みほ
+おおやま,みきひと
+おかざき,たつふみ
+おかじま,みなこ
+おかだ,かずひろ
+おかだ,たくま
+おかもと,たけし
+おかもと,だいすけ
+おがわ,じゅん
+おぎた,としふみ
+おくくぼ,たかし
+おちあい,とものり
+おまた,けん
+かさ,ゆきこ
+かしわ,だいすけ
+かとう,こうへい
+かとう,ただし
+かない,けんいち
+かなやま,だいすけ
+かねこ,ふみや
+かねつき,じゅんや
+かねまる,あずさ
+かべうち,なおと
+かみむら,かおり
+かみや,さちこ
+かみや,こういちろう
+かわい,ゆみこ
+かわい,ひろし
+かわかみ,らい
+かわさき,やすひろ
+かわさき,てつあき
+かわさき,ひろき
+かわしま,たかお
+かわた,けいいち
+かわまた,こうた
+かわもと,けいすけ
+きしもと,あきよし
+きしろ,けいた
+きだ,えいすけ
+きたおか,じゅん
+きたの,まさひこ
+きたはら,そうへい
+きたむら,たろう
+きたもと,みほ
+きむら,たけひろ
+きむら,ふみと
+きもと,けいこ
+きん,よしゆき
+くしやま,あきよ
+くどう,とものり
+くどう,しゅんすけ
+くめうち,けんじ
+くらしげ,こうじ
+くらち,かずひろ
+くらなか,たけし
+くりはら,ようすけ
+くろき,まさき
+くろさか,ようこ
+くわはら,しの
+ゆえ,かつのり
+こいずみ,しんや
+こうじま,よしひこ
+こうだ,かつゆき
+こんの,けんいち
+こが,しょういち
+こが,たくじ
+こくぶん,ちかこ
+こさか,あきこ
+こって,まいこ
+はたなか,たかし
+こばやし,ゆか
+こばやし,ひでき
+こばやし,あんな
+こばやし,のりあき
+こばやし,きみひこ
+こまつ,しんすけ
+こまつばら,ふみ
+こめだに,てつろう
+さいき,あつし
+さいとう,けんいち
+さかい,ひろあき
+さかぐち,たろう
+さくま,ゆきこ
+さこ,まや
+ささい,なおや
+ささお,かずきみ
+ささき,はなこ
+ささき,まさお
+さとう,かつひこ
+さとう,かずゆき
+さとう,ひろひと
+さとう,まさき
+さとう,みき
+さとう,まさこ
+さとう,みき
+さとう,のぶゆき
+さとう,りょうさく
+さの,まさこ
+さの,なぎさ
+さはら,たかふみ
+さるやま,たかゆき
+さわぐち,あや
+しい,えみ
+しおざき,ひであき
+しおだ,えいじ
+しき,まさる
+しだ,よしひろ
+しのはら,ひとし
+しのはら,ひさし
+しぶさわ,ようすけ
+しまだ,りゅうた
+しまだ,みほこ
+しまだ,けんたろう
+しみず,たつお
+しみず,わたる
+しみず,ともこ
+しみず,さとこ
+しみず,じゅんいち
+しみず,じろう
+しも,きぬえ
+しもざき,たつひこ
+しもじま,えいいちろう
+しもつ,たかひろ
+しもの,あきひこ
+しもや,よりこ
+しらす,しんご
+すぎうら,まさのぶ
+すぎうら,としろう
+すずき,ともみ
+すずき,えりこ
+すずき,ゆうすけ
+すずき,よしのり
+すずき,よしき
+すと,さとし
+すなだ,さとし
+すやま,だいすけ
+せお,かおり
+せき,こうへい
+せきね,みつる
+せきば,まき
+せと,けいじ
+せんごく,のりひさ
+せんだ,ゆうこ
+せんば,みずほ
+そめや,けいご
+たかぎ,ひでき
+たかぎ,あい
+たかぎ,のりゆき
+たかせ,よういちろう
+たかだ,ようすけ
+たかはし,やすゆき
+たかはし,よしのり
+たかはし,たかのり
+たかはし,まさと
+たかはし,みか
+たかはし,やすひろ
+たかみざわ,こずえ
+たきざわ,けいぞう
+たぐち,きょうこ
+たけした,けん
+たけだ,かずま
+たけだ,ゆうじ
+たけだ,こうじ
+たけなか,たかひろ
+たけはら,みきこ
+たけやま,みつる
+たじ,みか
+ただ,よしたか
+だて,くみこ
+たなか,ちかふみ
+たなか,のりひこ
+たなか,たくなが
+たなか,たかゆき
+たなか,たかゆき
+たにぐち,たかのり
+たにこし,けんたろう
+たにの,たかあき
+たぶき,たろう
+たぶち,よしひと
+たまおき,まさよし
+たまがわ,ともこ
+たむら,けいこ
+ためのり,ようへい
+たんの,えり
+たんぼ,あきひこ
+ちだ,かつひさ
+ちねん,ゆき
+つがねざわ,のぶゆき
+つかはら,みずほ
+つちや,まゆみ
+つちや,ようすけ
+つちや,やすゆき
+つずき,まみ
+つずらはら,さちこ
+つねよし,てるのぶ
+つぼうち,あきふみ
+つるしま,りえ
+でぐち,たくや
+てずか,みつのぶ
+てらかわ,たかし
+てらぐち,むねのり
+てらしま,けんじ
+てらだ,よしき
+とがし,だいすけ
+とくむら,こういち
+とざわ,ゆうこ
+とびおか,たけし
+とまりの,じゅんこ
+とみい,じゅんこ
+とみざわ,あや
+とみた,たいち
+とみた,ゆうた
+とみなが,ようこ
+とよだ,そうたろう
+とらたに,まさこ
+ないとう,たかお
+ながい,ちえ
+ながい,じゅんこ
+なかいけ,しんご
+なかうえ,だいすけ
+ながお,りょうこ
+なかこじ,さやか
+ながさか,こうじ
+なかじま,ゆきこ
+なかじま,まり
+ながた,かつや
+ながた,あつひさ
+ながた,なおき
+なかつる,ひろあき
+ながの,やすお
+なかむら,さとる
+なかむら,ひろし
+なかむら,くみこ
+なかむら,ひろし
+なかむら,ゆか
+なかむら,まさあき
+なかむら,えいじ
+なつはら,さやか
+なりさだ,しんすけ
+なんぶ,のぶゆき
+にかいどう,ともや
+にし,そういちろう
+にし,なおゆき
+にしお,としや
+にしかわ,けんじ
+にしくら,さとこ
+にしざわ,いさむ
+にしざわ,えりな
+にしだ,しんいち
+にしだ,りょうへいた
+にしやま,ひさのり
+ぬのや,しげお
+ぬまざき,ゆきお
+ぬまた,たけし
+のどみ,りな
+のみ,まさき
+のぐち,かずよし
+のじま,てるあき
+のじり,としゆき
+のだ,みきこ
+のだ,ゆきこ
+のむら,しんへい
+のむら,かずえ
+のむら,かずお
+はこしま,わたる
+はしもと,りょう
+はしもと,けい
+はせがわ,けんたろう
+はたけやま,ゆふこ
+はった,ゆひ
+はっとり,さとみ
+はない,たけはる
+はなだ,けいすけ
+はまぐち,けん
+はまだ,まなみ
+はまだ,けいこ
+はまの,たかゆき
+はやかわ,ゆき
+はやし,てつお
+はやし,ともなが
+はやし,けんたろう
+はら,ちかこ
+はら,やすあき
+はらだ,みえ
+ひえかた,さとこ
+ひがさ,あつし
+ひがみ,せいじ
+ひきの,てつじ
+ひだ,たかし
+ひだか,しん
+ひでしま,みきこ
+さかい,じゅんや
+ひらい,はやと
+ひらいわ,えつこ
+ひらた,ひでき
+ひらばやし,なおゆき
+ひろせ,あやこ
+ふかお,みゆき
+ふくい,ひでひこ
+ふくざき,みれい
+ふくだ,ようへい
+ふくだ,やすひろ
+ふくだ,まさる
+ふくだ,じゅんいち
+ふくはら,ゆきこ
+ふくむろ,ひろふみ
+ふじうら,あや
+ふじおか,こういちろう
+ふじおか,まや
+ふじた,しげる
+ふじもと,ゆかり
+ふじもと,えりこ
+ふじわら,あきひろ
+ふたむれ,いさお
+ふるさわ,いちろう
+ふるた,ひさお
+ふるや,ひでお
+ほこら,まつお
+ほしの,すみお
+ほしの,たもつ
+ほその,ひろみち
+ほり,とし
+ほりうち,えつお
+ほりおか,やすお
+ほりぐち,じゅんいち
+ほんま,いさお
+まえかわ,ともゆき
+まえじま,こうじ
+まえだ,としひろ
+まえはら,としひこ
+まき,しげのり
+まきの,たけお
+ますい,ひろし
+ますだ,きよし
+ますだ,まさみつ
+まつい,かんじ
+くまがい,かつひこ
+かねこ,りょうじ
+こみや,のぼる
+こがいと,みちこ
+かんばやし,てるまさ
+きのした,はるひこ
+きくち,みのる
+こまば,ゆたか
+こくぶ,みつこ
+こばやし,ひろし
+こばやし,てるお
+きつたか,ちゅうけん
+まつお,たかゆき
+かわい,まなぶ
+くりはら,とおる
+かどの,ひろよし
+かみくぼ,けんじ
+かわぐち,たかし
+かまた,まさもと
+かんだ,かずみ
+かんだ,みつお
+こしむら,としゆき
+まつお,きよし
+くさき,じゅんじ
+かもはら,まさふみ
+かさじま,としまさ
+まつき,よしかず
+かみくら,つねお
+くりはら,のぶあき
+なかち,きよし
+かがわ,しんいち
+こばやし,せいじ
+かんの,としお
+まつした,ふみお
+かしわだ,おさむ
+こんの,かずお
+こすぎ,よしみ
+こもり,としろう
+かわの,ゆきお
+きたむら,たけひこ
+かじま,てつや
+かとう,ひでお
+こやの,ゆきお
+かつまた,としかず
+くわだ,けいじ
+こたに,やまと
+かじうち,のぶこ
+こんど,たかし
+こんど,よしかず
+まつなみ,しんや
+かがやま,まさはる
+かねこ,やすひこ
+こやま,やすはる
+きつかわ,こうせい
+かしくら,かんじ
+くろき,よしゆき
+こいずみ,しゅうへい
+くぜ,みきお
+かわかみ,けいこ
+かみ,さちお
+きむら,とおる
+まつの,かずひさ
+きくた,おさむ
+くまだ,まさあき
+くにはら,しゅんいち
+こじま,ゆたか
+くりはら,まさのり
+よねくら,よしたみ
+こばやし,つねお
+こばやし,てつお
+こじょう,さなえ
+きむら,じゅんいち
+こばやし,まさあき
+こんど,のぶかず
+かわい,としかつ
+くまはら,けんじ
+きせ,みちやす
+かしくま,けんぞう
+かこ,じゅんいち
+いしがい,よしあき
+かみぐち,ただし
+くもだ,としお
+こまつ,しょういち
+かねだ,みつお
+きくち,よしひさ
+こたに,よしゆき
+こばやし,やすと
+かわぐち,よしお
+かねこ,ひろあき
+かも,よしあき
+かわむら,えいじ
+くまの,まさゆき
+こばやし,よしえ
+きむら,かずひさ
+きしもと,ひろひさ
+きむら,きしお
+かみぐち,てつや
+きむら,まさはち
+こばやし,しゅんじ
+かどくら,かなこ
+きたむら,ひでよ
+かつき,ひさし
+かんざき,まさのぶ
+かたぎり,いくみ
+こばやし,のぶこ
+こまつざき,こうぞう
+きた,ひろのり
+かつはら,しゅう
+こぐれ,あきえ
+こじま,あつし
+こめだ,ひさし
+こにし,けんいち
+くわはら,やすまさ
+こやま,ひであき
+まつもと,のりゆき
+かじもと,よしあき
+くまざわ,かつみ
+きむら,としお
+こばしがわ,ひとし
+かみや,ゆう
+まつもと,しょうじ
+こはし,えいぞう
+こだま,ぜんいち
+かわかみ,かずみ
+まつもと,はるお
+かいど,みほ
+きむら,としお
+くご,きよみ
+まつもと,よしゆき
+まつやま,りょうすけ
+まるやま,さちこ
+こんの,きよし
+くろき,じゅん
+こみや,りょうこ
+きむら,なおゆき
+きの,みあ
+こまつ,ゆき
+かねちか,りょうすけ
+かなたに,りえ
+こばやし,よしろう
+きたやま,かなこ
+かじ,ひろこ
+かわしま,なおき
+きむら,まきこ
+こばら,たくま
+きたがわ,なおたか
+まるやま,なほこ
+かもん,まさし
+みうら,たかし
+みしま,かつひろ
+みすぎ,ともあき
+みずた,じゅんこ
+みずもと,なるき
+みぞぐち,まさこ
+みずか,ゆたか
+みなみ,たける
+みなみたに,まさと
+みねた,ゆきこ
+みやい,こうた
+みやおか,けんろう
+みやざき,まゆみ
+みやざき,じゅり
+みやはら,たつひこ
+みよし,あきのぶ
+むらかみ,まさひで
+むらき,あつこ
+むらた,けんじ
+むらた,みちや
+むらた,めぐみ
+むらやま,まさこ
+もとの,やすまさ
+もり,としゆき
+もり,なお
+もりた,ひでとも
+もりた,りえ
+もりやま,あつし
+もりやま,かおり
+やざわ,かずこ
+やじま,ともひろ
+やなぎだ,えりこ
+やまがた,けいいち
+やまかわ,しんや
+やまぐち,さとみ
+やまぐち,ゆき
+やまぐち,ただゆき
+やまさき,まさき
+やまざき,けん
+やました,しゅくほ
+やまだ,よしあき
+やまだ,けんいち
+やまだ,しゅん
+やまなか,まさし
+やまね,しんご
+やまもと,やすのり
+やまもと,かずひろ
+やまもと,ひでゆき
+ゆかわ,さとし
+ゆざ,あきこ
+ゆたに,りえ
+ゆたに,だいすけ
+よご,とものり
+よこぼり,まさたけ
+よしおか,ただあき
+よしかわ,ひろみ
+よしだ,ひろたか
+よしだ,きょうこ
+よしもと,もとお
+よねだ,ゆみこ
+わかさや,しずか
+わたなべ,じゅんいちろ
+わたなべ,やすひろ
+みつやま,まさみ
+ひらおか,りさ
+かんの,かつと
+わこ,りえ
+あおき,わたる
+あかお,まさのり
+あかぎ,りょうへい
+あかし,ひろこ
+あかつか,やすゆき
+あかはね,ひろあき
+あかほり,ゆうこ
+あきもと,ちえ
+あきやま,みほ
+あさい,まさかず
+あさの,やすひろ
+あさひ,あさこ
+あさべ,かよ
+あはれん,だいすけ
+あべ,としひこ
+あべ,かおる
+あべ,ひろふみ
+あまの,まさみ
+あめもり,ありさ
+あらい,ひでお
+あらい,えつこ
+あらい,かつひろ
+あらたに,さつき
+ありなか,ともひろ
+いいご,のりあき
+いいだ,まゆみ
+いけだ,よしたか
+いこが,えみこ
+いしい,かおり
+いしおか,たかし
+いしざか,ゆきえ
+いしじま,みお
+いしだ,ゆい
+いしど,ゆきこ
+いしの,たかお
+いしまぶし,あきひと
+いせり,おとひこ
+いそべ,はるか
+いたに,たかあき
+いずの,みつひろ
+いでの,ようへい
+いとう,ようこ
+いとう,みつたか
+いとう,よしあき
+いとう,ゆかり
+いとう,まな
+いとう,たけし
+いとやま,あつし
+いな,あきら
+いなさき,やすのり
+いなば,ようすけ
+いなば,ただし
+いのうえ,たけし
+いのうえ,のぶたか
+いのうえ,まりこ
+いべ,きょうこ
+いまい,ゆきえ
+いまおか,しゅうへい
+いまむら,まさし
+いわた,たけひろ
+いわた,よしひろ
+いわた,おさむ
+いわみ,ゆうこ
+いわもと,けんいちろ
+うえだ,れいこ
+うえの,さら
+うえはら,たかのり
+うかい,ひさなが
+うだがわ,ゆういち
+うちやま,ひろまさ
+うつみ,ひろゆき
+うつみ,まりこ
+うの,まこと
+えがしら,しゅんすけ
+えとう,ひろき
+えとみ,ひでみ
+えんど,めぐみ
+えんど,ひろき
+おかど,たかひさ
+おおくら,ひろこ
+おおさか,たてき
+おおさか,こうたろう
+おおさわ,さち
+おおすみ,さとこ
+おた,ちえこ
+おおたに,まこと
+おおにし,まさひろ
+おおにし,みつる
+おおにし,むさし
+おおにし,まさお
+おおの,なほこ
+おおの,みかこ
+おの,ようこ
+おまつ,ようすけ
+おむら,ともこ
+おおや,ゆきえ
+おか,のりひと
+おかい,けんいち
+おかうち,とものり
+おかだ,ゆうき
+おかだ,まりこ
+おかの,やすふみ
+おかむら,あかり
+おかもと,そう
+おがわ,いずみ
+おがわ,こずえ
+おがわ,きんや
+おがわ,みちこ
+おがわ,たくや
+おがわ,ゆみこ
+おぎの,えりこ
+おく,さやか
+おくかわ,ひろあき
+おくだ,あきお
+おくむら,さとこ
+おざき,たかゆき
+おじま,たかし
+おぜき,けいいち
+おだ,ひろゆき
+おだ,あつこ
+おちあい,なおき
+おとがわ,りょうこ
+おの,みずき
+おおはら,けいこ
+かいじま,けんた
+かがわ,ともみつ
+かきお,たかや
+かけひ,ともみ
+かさい,なおこ
+かさみ,よしふみ
+かじた,けいいち
+かじたに,まさなり
+かしま,やすひろ
+かしま,ゆうこ
+かじもと,あやこ
+かすが,さなこ
+かせ,れいこ
+かたぎり,かずしげ
+かたやま,りょうこ
+かたやま,ゆうじ
+かとう,ひとし
+かとう,くにあき
+かとう,けんいちろ
+かなざわ,ひろかず
+かねみつ,とものり
+かのう,ゆきえ
+かまた,ひろたか
+かみざき,まさとし
+かみ,よういち
+かめたか,たいすけ
+かも,けんや
+かわい,ともかず
+かわい,じゅり
+かわかみ,たかし
+かわかみ,みお
+かわぐち,あゆみ
+かわぐち,かずひで
+かわぐち,さとし
+かわさき,じん
+かわさき,なおき
+かわなみ,あきこ
+かわね,かなこ
+かわばた,あゆみ
+かわむら,もう
+かわもと,ゆう
+かんだ,みどり
+かんだ,なおし
+かんの,まさこ
+きしもと,けんたろう
+きたがわ,たけし
+きたはら,ともはる
+きたむら,しょう
+きたむら,しんご
+きぬや,としみ
+きのした,てつ
+きはら,たつや
+きむら,よしかず
+きむら,まさひろ
+きむら,あきよし
+きむら,じゅん
+きよしま,はるみ
+きよずか,ゆき
+きら,たかし
+きりさこ,てっぺい
+きん,さゆり
+きん,なおこ
+くにえだ,かずあき
+くぼ,ごう
+くまの,たけと
+くらた,あきひろ
+くらはし,たかあき
+くれ,とおる
+くろい,よしたか
+くろき,ゆうこ
+くわの,ひろたか
+ごう,さえ
+ごうだ,たけひろ
+こが,けい
+こくしょう,つよし
+こさか,しゅういちろう
+こじま,りょうすけ
+こぞの,あいわ
+こだま,いくお
+こてら,きみひろ
+こでら,しんたろう
+ごとう,ただのり
+ごとう,ひろこ
+こにし,みさき
+こにし,ようこ
+こにし,ともや
+こばやし,なつこ
+こばやし,こうじ
+こばやし,ちえ
+こばやし,つよし
+こぶせ,ひでゆき
+こまき,ひろなお
+こまざわ,たかまさ
+こまつばら,ともひさ
+こやま,いちろう
+こんど,ひろこ
+さいき,かおる
+さい,かずや
+さいとう,きょうこ
+さいとう,こういち
+さいとう,てるひさ
+さいとう,はじめ
+さいとう,ひろみ
+さいとう,ふみこ
+さいとう,ひとし
+さいとう,まきこ
+さかい,たかゆき
+さかみ,たかし
+さかもと,こうじ
+さかもと,ひでき
+さかもと,まさよし
+さかもと,ななこ
+さかもと,よういちろう
+さくらい,さだよし
+さくらぎ,なほこ
+ささき,まさき
+ささき,ゆみえ
+さとう,ふくたろう
+さとう,しゅうさく
+さとう,たかし
+さとう,あき
+さとう,けんいちろ
+さとう,かずみち
+さとう,ゆみ
+さとう,りょうすけ
+さの,とおる
+さの,りょうすけ
+さわさき,たかし
+さわだ,ひろこ
+さんぺい,さとる
+しおずか,あつし
+しの,かずのり
+しばた,かずたか
+しま,じゅん
+しまの,としあき
+しみず,よしこ
+しみず,まみ
+しもかわ,よしおみ
+しもむら,えいぶ
+しゅくり,まなみ
+しょうじま,たつお
+しょうだ,くみ
+しらいし,のりかず
+しらかた,じゅん
+しらさき,ももこ
+しろた,まさひろ
+じんぐうじ,しげかず
+しんたに,けんた
+しんぼ,のぶゆき
+じんぼ,もとはる
+しんむら,ひでとし
+すがい,つとむ
+すぎもと,みほ
+すぎもり,ひろこ
+すぎやま,たかね
+すぎやま,じゅん
+すぎやま,たくま
+すずき,きくこ
+せがわ,じゅん
+せき,けんじ
+せきね,ひろし
+せきもと,かつあき
+せと,あつし
+せら,かずよし
+そでやま,そらこ
+そのい,てるえ
+たいら,まさし
+たかき,みちる
+たかはし,れい
+たかはし,みねこ
+たかはし,ともお
+たかはま,こうき
+たかみや,ちはる
+たかやなぎ,かずひこ
+たかやま,さとし
+たぐち,わたる
+たけうち,あつし
+たけざき,まゆこ
+たけした,さとみ
+たけもと,ひろとも
+ただ,あつこ
+たちかわ,まこと
+たちばな,なおと
+たつがわ,ともこ
+たなか,やすのり
+たなか,あきよ
+たなか,まさたか
+たなか,こうすけ
+たなか,さちえ
+たなか,しょうへい
+たなべ,のりこ
+たにぐち,たけし
+たにわき,ひろふみ
+たばた,よしひさ
+たはら,けんじ
+たまき,なおこ
+たまむら,まこと
+たるみ,ひろみ
+たんばら,りょうこ
+ちかつ,てつひこ
+ちば,かほり
+ちょう,りょうた
+つかだ,てつや
+つかもと,さちか
+つじもと,みき
+つちだ,けいこ
+つちや,たかあき
+つちや,ちから
+つつみ,さとし
+つぼくら,たくや
+つむら,ともえ
+てしま,あきこ
+てらさき,まさひと
+てらさき,くみ
+てらだ,たけはる
+どい,ともこ
+どい,のぶたか
+とう,ひろこ
+ときた,しんいちろう
+ときと,りょうすけ
+とくだ,えみ
+としずみ,まほ
+とだ,しゅんすけ
+とよだ,ひろあき
+ないとう,りょうた
+なかい,まさとし
+なかお,あきひこ
+ながお,えりこ
+なかがわ,ともみ
+ながさか,みちこ
+なかさか,やすひろ
+ながさき,ゆういちろ
+なかざわ,ゆうへい
+なかざわ,ようこ
+なかしま,ゆうや
+なかじま,えみこ
+なかしま,あきひろ
+なかじま,しゅうたろう
+なかじま,りょうすけ
+なかだ,かよこ
+なかだ,あやこ
+ながつか,いさお
+なかと,しゅうじ
+なかにし,みどり
+なかにし,すすむ
+なかにし,いたる
+ながまつ,まさひろ
+なかむら,しげとし
+なかむら,きょうこ
+なかむら,あやこ
+なかむら,まゆ
+なかむら,けいこ
+なかむら,なおこ
+なかむら,ひろかず
+なかむら,さやこ
+なかもり,てつや
+なかや,ゆうじ
+なかやま,たけし
+なす,こうじ
+なりとみ,しんたろう
+なんぶ,ともや
+にいみ,やすたか
+にしかわ,そのこ
+にしの,ゆか
+にしやま,たかひろ
+ぬかだ,よしこ
+ぬまた,ゆういち
+ぬまた,さとし
+のがみ,さとし
+のぎ,あやこ
+のくお,かおり
+のぐち,たかゆき
+のざき,なつね
+のじ,ゆき
+のま,れいこ
+のむら,まさお
+のむら,ゆういち
+ばこし,しんご
+はしもと,なおこ
+はすぬま,ちえ
+はせ,よういち
+はせがわ,ひろし
+はたがわ,じゅんこ
+はたけやま,ゆうこ
+はたの,ようこ
+はない,りか
+はまさき,まこと
+はまだ,ひろたか
+はまで,たかし
+はやかわ,あき
+はやし,あや
+はやし,さとこ
+はやし,さとし
+はやし,じゅん
+はやし,ようこ
+はやし,すすむ
+はら,ともひさ
+はらしな,のぶき
+はらだ,あつし
+はらだ,みどり
+はるな,しゅうすけ
+ひきた,ひでと
+ひだい,まゆみ
+ひらい,きょうこ
+ひらい,ゆうすけ
+ひらい,えりこ
+ひらいわ,くみこ
+ひらお,ひでかず
+ひらかわ,まき
+ひらた,よしあき
+ひらまつ,たかお
+ひろえ,あつし
+ひろせ,ひでのり
+ふかざわ,ひでゆき
+ふかほり,のりひろ
+ふくしま,まきお
+ふくだ,ひろゆき
+ふくだ,ひろふみ
+ふくだ,さやか
+ふじい,りえこ
+ふじかわ,かずみ
+ふじた,けんじ
+ふじた,まさお
+ふじた,よしろう
+ふじむら,ともゆき
+ふじむら,あきこ
+ふじもと,しょうへい
+ふじもと,りゅうへい
+ふじわら,けいさく
+ふじわら,さとし
+ふたかた,じろう
+ふない,さちこ
+ふるかわ,ひろこ
+ふるかわ,じゅんいち
+ふるまた,ともや
+ほし,ゆき
+ほしうら,ひろし
+ほしろ,いつみ
+ほそだ,しゅんご
+ほり,のぶひで
+ほり,ゆき
+ほりえ,のぶと
+ほりぐち,のぞむ
+ほんな,かおる
+ほんぼ,ひろゆき
+まえかわ,みわ
+まえだ,こすけ
+まえだ,たかし
+まえだ,えつこ
+まきうち,けいじ
+まきの,しょうこ
+まきもと,とものり
+まさとうみ,まいこ
+ますい,ようすけ
+ますだ,まさゆき
+ますだ,みほ
+まつい,みお
+まつうら,かずひさ
+まつおか,あきひろ
+まつおか,ともこ
+まつおか,まゆみ
+まつおか,だいすけ
+まつかげ,ひさお
+まつした,さとし
+まつなが,わたる
+まつばら,のぞみ
+まつばら,あきこ
+まつもと,ひろみつ
+まつもと,ほくと
+まつやま,まいこ
+みうら,りょう
+みうら,あつし
+みうら,あつし
+みうら,きよまさ
+みき,ゆうじ
+みずかわ,ひろゆき
+みずたに,ゆきこ
+みずの,ゆうせい
+みその,ただまさ
+みぞはた,ちえ
+みながわ,まちこ
+みながわ,あや
+みなみ,ひろゆき
+みなみ,たかし
+みなみかた,たかのぶ
+みなみむら,ひでき
+みはら,まさき
+みむら,みきこ
+みやい,のぶあき
+みやざき,あつし
+みやざわ,なおや
+みやざわ,あきら
+みやむら,かおり
+みやむら,あや
+みやもと,ゆうへい
+みやもと,まさや
+みよし,つかさ
+むねむら,ちかふみ
+むらかた,ともゆき
+むらずみ,みつのり
+むらた,くみこ
+むらた,まき
+むらもと,かずのぶ
+むらやま,なお
+もり,なおこ
+もり,かつまさ
+もり,あつひこ
+もり,くみこ
+もり,みき
+もりうち,のりこ
+もりした,ゆういちろ
+もりたに,かずと
+もりもと,げん
+もりやま,こうじ
+もろえ,ひろかず
+やご,みのる
+やすがき,ともふみ
+やすだ,あやこ
+やすもと,あつし
+やつなみ,あきお
+やなぎさわ,けいすけ
+やなぎはら,しんすけ
+やぶなか,たいし
+やまうち,たかゆき
+やまおか,ただし
+やまおか,なおや
+やまおき,ひろゆき
+やまがた,まこと
+やまぐち,しんいち
+やまぐち,ひろこ
+やました,まどか
+やました,ちえ
+やまだ,ちえ
+やまだ,じゅんじ
+やまだ,のぶこ
+やまだ,あや
+やまだ,まきこ
+やまなか,めぐみ
+やまむら,いっせい
+やまむろ,かなこ
+やまもと,こうへい
+やまもと,てるひこ
+やまもと,まさゆき
+やまもと,みつよし
+やまもと,みのる
+やまもと,しのぶ
+やまもと,とおる
+やまもと,あすか
+やまもと,わたる
+ゆあさ,くみこ
+ゆき,なおこ
+ゆりやま,のりひろ
+よこた,あつひさ
+よこはま,としゆき
+よこやま,あゆみ
+よこやま,かずき
+よしおか,きょうこ
+よしおか,まいこ
+よしおか,まりこ
+よしだ,たかとし
+よしだ,なおこ
+よしだ,なおこ
+よしだ,まりえ
+よしだ,ゆうじ
+よしだ,ゆうじ
+よしの,ゆか
+よしひろ,ゆみ
+よしまつ,とおる
+よしむら,だいすけ
+よしむら,かずふみ
+わかまつ,ひろや
+わきた,かずお
+わきた,けんしろう
+わしお,よしあき
+わしざわ,ちあき
+わだ,いさむ
+わだ,としお
+わだ,いさお
+わだ,たけし
+わだ,かつえ
+わたなべ,かずしん
+わたなべ,とくじ
+わたなべ,ひろし
+わたなべ,きよおみ
+わたなべ,よしひろ
+わたなべ,よりみつ
+わたなべ,けいじ
+やまぐち,もとじ
+すずき,じろう
+ささの,すすむ
+かねこ,たけし
+くぼた,れいこ
+こすけがわ,まさなお
+かない,さぶろう
+かとう,こういち
+こだま,たかひこ
+こばやし,としひろ
+こじま,とおる
+かめやま,かずひこ
+くらばやし,のぶお
+かんだ,かずゆき
+こんの,じゅんじ
+かわしま,まさなり
+かわかみ,こうじ
+かなか,かくたろう
+かわむら,ひろうみ
+きむら,しゅんいち
+かすが,ひろし
+こじま,もとよし
+かわの,こういち
+かわな,よしまさ
+こずま,たけし
+かわさき,まさあき
+かたの,まさあき
+かただ,あきお
+きくち,まさおみ
+かみうら,かずひで
+かねだ,てつお
+こんの,やすお
+かわもと,しげみ
+かばや,ひろし
+こぶくろ,けんきち
+くまがい,ゆうじ
+こんの,ひでき
+こやま,しょういち
+きたしろ,ひとし
+こだま,たけし
+かとう,えいいち
+きむら,としはる
+こいで,いさお
+くやま,たけし
+きりはら,もりひろ
+かよ,まさただ
+かねこ,としお
+こはら,いわお
+かとう,ゆきお
+こい,せいいちろう
+かやま,いさお
+こいけ,くにひこ
+こじま,あきと
+こまつ,まさじ
+きたむら,のりよし
+きたわき,ぜんいちろ
+かさじま,ひろふみ
+きむら,てつろう
+かみぐち,さちお
+かとう,ふじお
+かわむら,としひと
+かどた,のぶたか
+おおたけ,しげる
+かとう,ともみ
+きの,のぶひさ
+かみ,まさみ
+きくち,まさゆき
+かきうち,ひろひさ
+こじま,まさみ
+かたおか,しゅんすけ
+くぼた,ひろゆき
+きたざわ,まさあき
+こみね,もとゆき
+くぼ,たかゆき
+きたずめ,かずとし
+こばやし,かつお
+かわぐち,よしひこ
+けがさわ,ひさし
+こうち,みちお
+こやま,とおる
+かわきた,たかひで
+かわみつ,しょうぞう
+かたひら,あつお
+かわぎし,ひろし
+こんど,よしみつ
+きむら,あきひこ
+くぼやま,しんたろう
+くまもと,まさき
+かわた,ふみよ
+くにのぶ,やすお
+かまだ,たかし
+かく,おさむ
+かねこ,おさむ
+こばやし,あきら
+かしお,けんじ
+かないわ,けいじ
+けんもち,ただし
+きくち,おさむ
+かざま,やすあき
+こまつもと,えいこ
+こんど,かつひこ
+きくしま,かつまさ
+こばやし,せいこ
+くまがい,まさとし
+かとう,かずひこ
+まるばやし,たかし
+むとう,かつみ
+みたに,たけし
+みわ,まさし
+しみず,つとむ
+みずの,としお
+まちだ,かずお
+まつい,かずたみ
+みうら,りゅういち
+ひの,りょういち
+むらかみ,まさひろ
+みやの,ひろゆき
+まるい,まさのり
+むらさき,としお
+まさか,ひでのり
+みねた,たけみ
+まつなが,ゆたか
+みながわ,せいじ
+みやけ,なおあき
+まつもと,けんいち
+みさわ,としゆき
+まえだ,こうぞう
+うだがわ,としかつ
+みやはら,こうじ
+むらい,しょうじ
+まつもり,しげき
+まさき,きくお
+みうら,えいじ
+もとみや,きよし
+むらかみ,ひろふみ
+まとば,まさあき
+みうら,としお
+まつかわ,かずひろ
+みずたに,なおひこ
+みやの,まさゆき
+まつだ,ふさちか
+みす,あきら
+まつやま,としえ
+みやもと,ただあつ
+みずの,ふみお
+まるやま,せいじ
+まるこ,みちたか
+もちだ,とおる
+もとはし,まもる
+みずや,こうじ
+みやざき,みちまさ
+みやがわ,みつる
+むらしま,ただお
+ますさこ,せいいち
+もり,いちろう
+もりた,かずお
+みなみ,よしあき
+みやき,まさお
+もりやま,けんじ
+みずた,よしお
+まつい,みつぐ
+まつお,まさよ
+まつした,ゆたか
+こばやし,かつみ
+むかえ,まさじ
+もりい,ぎょじ
+もりた,たいぞう
+むかい,まさお
+まつお,ときわ
+むらやま,よしひこ
+まつもと,としお
+みやさと,みのる
+みやざわ,よしお
+もりむら,たかし
+むらの,ひでお
+ますだ,みのる
+むらた,のぶお
+みやさか,けんじ
+もとばやし,まさみつ
+みずの,ゆりこ
+ももい,よしお
+まつだ,とくお
+すがわら,なおえ
+まつばら,まこと
+まつもと,みのる
+みやはら,あつよし
+むらいし,まもる
+まつむら,まもる
+みよし,てつよし
+もりもと,かずお
+みずたに,たけし
+まつば,あつし
+まつい,かん
+むらかみ,かずお
+もりた,しげはる
+むらた,しげお
+まさき,ひろし
+みやざき,よしき
+まつばら,しんいち
+むらまつ,あつし
+もり,のぶゆき
+もりむら,まさかず
+すわ,よしみ
+こわたり,なおき
+まつざき,よしのぶ
+まっさき,まさひろ
+みたく,けいぞう
+まつかわ,さとし
+もぎ,しこ
+まぶち,きよし
+まつもと,としろう
+もり,りょういち
+まつうら,かずなり
+まえだ,あきお
+ますだ,ひろし
+まえにし,ひろし
+まるやま,なおや
+まつだ,たかお
+まき,としひこ
+もうえ,しんいちろう
+むらい,とよみ
+まつい,くにひこ
+もりた,まさる
+まえだ,たかぶみ
+むらうち,いさむ
+みつやす,あきら
+もり,けんじ
+まつだ,さとし
+まつお,まさふみ
+まるやま,あきお
+まつがえ,しげひろ
+かみくら,こういち
+みどりかわ,ゆうじろう
+ますだ,しげのぶ
+みてら,やすお
+まつなが,あきら
+もりおか,よしみ
+みそお,えつお
+むらやま,かつよし
+もりもと,しげる
+もり,つとむ
+ますだ,ひろたか
+みやもと,かつまさ
+むらた,よしてる
+みなみさわ,かずひろ
+ましま,すみひろ
+もりぐち,よしあき
+まつい,たかし
+まえかわ,ひとし
+もちずき,じゅん
+ますだ,しんきち
+まつもと,じゅんぞう
+もりなが,かずのり
+ますだ,ひろたみ
+みうら,くにお
+まつの,ただお
+まつおか,よしてる
+まちい,こういち
+みずたに,としお
+まつもと,よしのり
+まさき,ひでと
+まつもと,たけし
+みつや,ひでやす
+みずの,じろう
+まえだ,ふみお
+むらまつ,けんじ
+むさしの,あきら
+まえはた,まさひこ
+まつざわ,よしお
+みつい,よしかず
+ももだ,みつかず
+まつお,かつみ
+みわ,しゅうじ
+むらかみ,てつや
+みかみ,はるき
+ぬかざわ,しんじ
+なかむら,しずえ
+にしむら,くにひこ
+にった,けんじ
+ながつゆ,ときやす
+にいの,ひろし
+たぶち,けんじ
+にしの,さぶろう
+ぬかた,たもつ
+にしむら,ひさお
+ながの,たかゆき
+なかがわ,よしあき
+にしやま,ひろし
+なかじま,まさひろ
+にしだ,みつお
+なかむら,ふみお
+のむら,ゆきお
+なかもと,のりあき
+なかがわ,かずたみ
+なるさわ,つねお
+ないとう,たけお
+のべ,よしひで
+にしな,やすのり
+のむら,ただし
+なかむら,しんじろう
+にかいどう,よしやす
+なかだ,たつお
+にしな,きみひと
+なりた,としお
+のぐち,よしひろ
+のや,こうき
+ながい,まさと
+なかむら,きよし
+にいずま,たかみ
+なかがみ,しゅういち
+ながた,きしお
+にしざわ,はつえ
+のせ,じゅうろう
+ながい,ゆきお
+にしざわ,まさお
+なかはた,かずとし
+なかじま,ひろし
+なかだ,まつお
+のなか,まさき
+なかがわ,まさあき
+なかしま,たみお
+なかもと,まさる
+にしおか,ひろし
+にしまえ,しんたろう
+なかむら,まさお
+なかにし,かずお
+のだ,むつや
+なかむら,あきひこ
+なかざわ,りょういち
+にしだ,よしろう
+にしだ,ただゆき
+にい,りょうじ
+やまもと,ひとし
+なかうち,やすお
+なかじま,かずたか
+なかむら,まさみ
+のむら,くにひこ
+にしむら,やすひろ
+のなか,ただひこ
+にしむら,としひで
+にしお,きよし
+ながお,きよし
+にいみ,けんじ
+なかむら,ひでゆき
+ねずか,よしのり
+なかむら,ゆきとし
+なかざと,てつや
+あさの,じゅん
+のがみ,くにひろ
+なかじま,かずひこ
+ないとう,かずあき
+なかむら,よしのり
+なかにし,きよあき
+なかだ,たみお
+ながさわ,たかし
+ながの,かずゆき
+にった,ゆたか
+なんば,みつひろ
+のずえ,くにみつ
+ながみ,ひろし
+ながい,じゅんいち
+なかはら,みずほ
+なかじま,たけよし
+なかじま,かつお
+にしだ,あきひこ
+なおい,しちろう
+なべしま,よしまさ
+なかの,しょういち
+なかむら,はるお
+のだ,みつよし
+なかせ,としあき
+なかじま,みつしげ
+ながさわ,ただし
+にへい,みつよ
+ながい,りょうすけ
+なかしま,たかお
+なかお,せい
+なかがわ,のぶお
+ないとう,こういちろう
+のじま,ゆうすけ
+ながの,ゆきお
+にしだ,かずお
+なかだ,きよし
+なかはら,たかのすけ
+なかじま,むねたか
+ねもと,きよし
+なかむら,けんじ
+ながとも,まさみ
+なかむら,ひとみ
+なかやま,よしお
+なかむら,ほずみ
+なかむら,ふみのり
+のじま,てつろう
+ながふち,やすろ
+なかの,ごいち
+にしやま,しんいち
+なかむら,まさゆき
+ながしま,なおじ
+にわ,ゆたか
+なかの,やすあき
+おにざわ,ゆきお
+おしかた,まさお
+おか,かつひろ
+おくやま,のぼる
+おき,すみお
+おかみや,けんじ
+おぐら,まさき
+おおで,まさのり
+おのだ,まさひこ
+おおにし,まさき
+おくだ,きょういちろう
+おくだ,としお
+おがわ,こうじ
+おの,まさお
+おおすみ,こうじ
+おおつか,たかし
+おおとも,まさあき
+おかざき,ゆうじ
+おおはし,ひろし
+おぎの,ふみお
+おさだ,しずあき
+おおば,ひさし
+おしま,あやこ
+おおかわ,かずや
+おかもと,ひろし
+おがわ,とおる
+おの,きよと
+おかの,とおる
+おざわ,ゆきまさ
+おはく,ひろし
+おしたに,たかし
+おざわ,ひろし
+おおはし,たかのぶ
+おおはた,こうとく
+おのでら,みや
+おの,ふみお
+おおおか,ふじこ
+おおの,よしのり
+おおはし,ゆたか
+おおた,たかし
+おおもり,けんたろう
+おしま,こ
+おかもと,こういち
+ひろせ,ともゆき
+おおみず,やすお
+おおの,みつお
+おちあい,まさひさ
+おかべ,たい
+おおたに,あきひろ
+おくの,しげお
+おおすが,けんいち
+おおのき,かおる
+おおいし,じ
+おかだ,もとつぐ
+おおみや,ゆきひろ
+さたけ,つねお
+おだぎ,はちろう
+おおた,さとる
+おふち,ただよし
+おおかわ,かおる
+おかど,さとる
+おおさわ,ひでき
+おぎさわ,ゆきひろ
+おかべ,あつし
+おとよし,ひでお
+おがわ,たつろう
+おりがさ,やすたけ
+おおば,ゆきこ
+おばた,たかし
+おおの,たかよし
+おおさか,まさや
+おおみね,けんぞう
+おおた,よしひこ
+いのうえ,あきお
+おおこし,しげき
+おざわ,ひでお
+おかべ,けいいち
+おおぼら,えいじろう
+おおた,じょういちろう
+おざき,じゅんいち
+おくだ,やすひろ
+おざわ,てるあき
+おかだ,すすむ
+おおつか,こうじ
+おのでら,こういち
+おしお,ただしげ
+おだしま,ただし
+おざき,しげる
+まえだ,みつお
+おき,まさお
+おのだ,ときえ
+おなぎ,あきら
+おくだ,よしきよ
+おおひら,せつじ
+おのざわ,としひこ
+おぎはら,くにあき
+おおくま,かずお
+おおはら,のぶひろ
+おき,かつすけ
+おがわ,たつや
+おおや,ひでほ
+おおさわ,さぶろう
+おおはら,ひろよし
+おだ,たかこ
+おざわ,みつお
+おがた,りょうすけ
+おかの,あきこ
+おおいし,しま
+おない,ひろゆき
+おおつか,じゅんこ
+おおつか,てつお
+おいで,よしあき
+おきやま,かずこ
+おぐし,あけみ
+おだ,やすし
+おかばやし,ただひろ
+おおたに,じゅんじ
+おおつき,あゆみ
+おかだ,ひろし
+おおすみ,ちはる
+おおいがわ,たかはる
+おかだ,すすむ
+おざわ,かずひこ
+おおたに,てつろう
+おざき,ひろゆき
+おおた,まさこ
+やなぎや,ゆかり
+なかたに,しんいち
+こばやし,ひでし
+みくに,よしひろ
+すずき,じゅんいち
+はだの,ゆきまさ
+みやま,かおり
+たかはし,まさと
+しらおがわ,らいた
+なかむら,あそか
+まつざき,きいちろう
+やました,たかよし
+しもやま,しげる
+ふたむら,のぶゆき
+くわ,たかし
+なかむら,としみつ
+よこやま,ひろあき
+ひるま,ゆきこ
+たちかわ,なおみ
+わかばやし,てるみ
+たかはた,とも
+あべ,えみこ
+せき,りゅうご
+やまざき,ひとし
+やまね,よしひろ
+たざわ,じゅんじ
+かじかわ,あさこ
+さとう,まさひろ
+かわうち,まりえ
+おおやま,のぶこ
+しんみょう,じゅんこ
+たちわだ,なおみ
+おおくぼ,てつや
+とうごう,ひろゆき
+ながくら,たかはる
+いとう,けんそう
+やまざき,せい
+かざま,はるゆき
+かんばやし,ひでお
+ささの,めいこ
+かわしま,みゆき
+しんぐう,のりあき
+こいずみ,たくや
+かねこ,よしみ
+こばやし,すえつぐ
+かもした,しゅういち
+たむら,さちよ
+はせがわ,たかし
+くりはら,ひろふみ
+かなおか,ひろし
+こばやし,ゆきたか
+ひいし,たかゆき
+にへい,いくこ
+まるた,なおこ
+とおやま,なみ
+せきざわ,ちか
+ありま,やよい
+くりはら,ともえ
+すみの,みのる
+よしだ,ひでき
+きのした,ともこ
+おちあい,みゆき
+うまやはら,やすみ
+ほそかわ,ひろこ
+ふかがわ,しんじ
+かわむら,えいぞう
+まつい,けいこ
+よしもと,たかひろ
+うなかみ,ともこ
+かねまつ,さきこ
+かわかみ,まこと
+とよだ,ひでお
+やの,あきひこ
+せき,たかあき
+なかにし,ひとし
+はしもと,あき
+ふかや,くにあき
+みやもと,ひでくに
+たけだ,としふみ
+みやざわ,みきお
+いけだ,かずひこ
+おしま,ひろし
+なかむら,えりこ
+ごとう,ゆういちろう
+うしごめ,ひろし
+くわやま,ひろあき
+つかだ,ちはる
+むらた,ちかお
+さとう,よしたか
+くろだ,かおり
+すぎもと,くにお
+やすだ,こういち
+きうち,さとし
+けどういん,じゅんいち
+たなか,ちか
+なかむら,ひろあき
+くりはら,とよひこ
+たきざわ,かずのり
+うえだ,ひであき
+こべ,ひであき
+のぐち,ふみお
+こんの,ともひこ
+とみた,かなめ
+おおた,ゆきこ
+まき,ひかる
+あまの,けんいちろ
+こみね,あきひろ
+さとう,ともや
+いまで,ゆうじ
+まつなが,たつや
+すずき,たけし
+まつお,かえ
+さいとう,きょういち
+よしざわ,わたる
+うやま,けいこ
+あんどう,まさひこ
+すずき,さとし
+よしだ,かずとし
+かわだ,えみこ
+ふくだ,けい
+もりしま,まさし
+つちだ,とおる
+さかい,みちやす
+つかだ,あつし
+はっとり,ひろし
+たむら,こうじ
+わたなべ,なおき
+こすぎ,たかあき
+ひらた,けいた
+すぎやま,よしゆき
+もりかわ,もとはる
+かどた,あきひろ
+さの,ひろし
+おざき,てつお
+よこまつ,かつひさ
+たなか,ゆみこ
+いしさか,こういちろう
+いしざわ,ゆずき
+こばやし,じゅん
+よしだ,ともあき
+きむら,りえこ
+おおつか,たける
+あだち,たかし
+あかさか,しょうじ
+みやもと,みどり
+いちむら,かおり
+おした,のぶゆき
+ほんだ,おさむ
+かやぬま,こうじ
+のざき,ゆうじ
+かどわき,ふじえ
+おじ,やすひろ
+たぐち,やすつね
+たけいし,あきと
+ひらい,しんじ
+かなざわ,じゅんいち
+ふるかわ,えりか
+もりなか,まさよ
+あらい,としあき
+たなか,よしのり
+しみず,よしゆき
+いちはら,まさる
+きたのはら,ひでひろ
+きたお,ともひと
+もりもと,ひでき
+きたむら,りかこ
+ささざわ,たけし
+まつおか,なおこ
+こうら,たかひろ
+みわ,ひろこ
+よしおか,ひろこ
+ほり,ゆみこ
+さいとう,よしひと
+ながせ,ひではる
+もりしま,ひろか
+おわり,まきこ
+たなか,みき
+てらむら,としまさ
+こばやし,きょうぞう
+さいとう,ひろのり
+きむら,たけし
+はしもと,よしひさ
+なかがわ,てつや
+なかむら,まさおき
+はぎわら,くにひこ
+にしかわ,ともみ
+きたじま,こういち
+たかうら,やすお
+あさだ,ひでよ
+きたずめ,あらた
+ねもと,わかこ
+たなか,まさひこ
+たなか,かずひろ
+あだち,かずひこ
+はら,まさゆき
+あかまつ,けんご
+いまむら,あつし
+むらやま,ようじ
+たけうち,たかゆき
+ずし,やすお
+こばやし,かほ
+やまざき,あつこ
+はまぐち,そういち
+かげやま,ひろゆき
+かなもり,ひでき
+かとり,つよし
+あらい,しょうへい
+みやた,まりこ
+すずき,えみこ
+はるた,ひでや
+なかざわ,たかし
+すが,まさゆき
+まえでら,てるゆき
+あらまき,あつし
+きたの,たつや
+よしの,しげみつ
+みくりや,ようこ
+おくのぎ,けんじ
+さくらい,よしかつ
+こんど,なお
+すずき,のりこ
+くりはら,くみこ
+むこうぐち,まき
+ふじい,あきひろ
+かげ,ゆうこ
+まえだ,のぶや
+ながほり,ゆきこ
+つじ,ももこ
+きむら,しんたろう
+まつお,こういち
+たての,のりよし
+きむら,まこと
+すざき,たつや
+いわさき,みやび
+さとう,ゆり
+にった,だいかん
+たなか,まり
+しまだ,あかね
+たにぐち,のりこ
+ほんだ,すなお
+なかたに,たかし
+みやじま,しゅん
+くきやま,こうじ
+せきね,りょうたろう
+よしはら,さとる
+ひらた,まさかず
+ながさわ,としお
+なかがき,けいこ
+くろかわ,やすゆき
+かけたり,けんじろう
+いとう,かよこ
+まえかわ,じゅんじ
+まつだ,あきお
+くわはら,まこと
+いいずか,わかこ
+まじま,ひでゆき
+むらた,ともこ
+あきいけ,ゆういち
+なみき,てつや
+よしの,みきこ
+すずき,ゆき
+たむら,みどり
+かめだ,しんや
+にし,やすし
+いなおか,けんじ
+いわさき,ゆうじ
+かんだ,なみ
+ただ,えいき
+うつ,ともあき
+しまだ,まさお
+よしだ,ひろゆき
+おくがわ,よしふみ
+すずき,けいこ
+たんぽ,みねこ
+わだ,なおこ
+うるしはら,えいすけ
+いいお,たろう
+にいはら,きょうこ
+おむら,たくや
+いのうえ,ぜんじろう
+もりなが,としひろ
+さの,ひろし
+なかたに,まさやす
+あべ,まさなお
+うちだ,けんじ
+ひろた,ゆうさく
+いわくら,かいじろう
+いしおか,ひであき
+ときた,なつこ
+きのした,なおすけ
+みずの,あいこ
+やすえ,まさみ
+いわもと,さとる
+やまじ,ゆかり
+こさい,ゆうこ
+くぼ,としえ
+ちば,ひかる
+やつたに,あつし
+いがらし,たかずみ
+あらかわ,あかね
+てらさき,もとあき
+せごえ,さとこ
+とくしま,まさこ
+ばんどう,しょうこ
+たきざわ,けんじ
+みずさき,けんたろう
+たきぐち,けい
+ひおき,まさし
+なかい,あつみ
+おいかわ,れいこ
+まつむら,ちぐさ
+えんど,よしお
+たじま,さとこ
+やまざき,えいじ
+せのお,こうじ
+はらだ,としまさ
+ふくい,ともか
+まつうら,けい
+かわむら,ゆういち
+てらもと,たかみち
+はぎわら,たくみ
+なかしま,えみこ
+きのした,みちお
+あらい,ちずる
+むらやま,じゅんこ
+さえぐさ,ともみ
+たなか,みつこ
+まえだ,おさむ
+みやざき,かずみ
+いけべ,あきら
+くわばら,たかのり
+よだ,たかお
+たちばな,やすあき
+やまぐち,よしあき
+いしはら,けいこ
+たきざわ,まさあき
+ひらの,よしぶみ
+かわさき,たかよし
+やまもと,ひさとし
+あらせ,あつし
+やなぎさわ,まさのぶ
+しおや,あきえ
+さとう,こういちろう
+かとう,ひとみ
+おの,よしたか
+きたはま,やすまさ
+ごとう,のりこ
+にのみや,まゆみ
+うすい,とものり
+みずしま,たける
+すどう,まこと
+いけだ,あきこ
+なかひがし,ありしげ
+くりもと,ろわる
+とだ,ひろたか
+はかまた,あつのぶ
+たにぐち,はるみ
+いまぜき,いくこ
+ほりお,まゆみ
+かすが,つよし
+かわせ,なおこ
+さとう,ひろみ
+たかなし,のぶあき
+まつした,たかし
+やぐち,ひでき
+かねこ,かずゆき
+ひだか,みお
+さっさ,たいち
+そが,たくや
+すぎうら,けんたろう
+さとう,あみこ
+たにばやし,さちこ
+にしおか,たかし
+ともなが,なおき
+おおはし,ひでき
+ながしま,せいた
+たにがき,せいこ
+こうだ,こみな
+きよの,さとし
+やまかわ,としお
+なかじま,ひろし
+もてぎ,こうじ
+おおぬま,ゆたか
+さとう,しげお
+ふるいえ,よしこ
+あいもと,もとふみ
+よこお,くにお
+にしかわ,けんじ
+びとう,よしなが
+きたむら,しんや
+やまかわ,さだはる
+とみた,たけし
+つちだ,ひでと
+いしぐろ,りえ
+まつお,とおる
+うえもと,こういちろう
+いいだ,みきこ
+すずき,しげひろ
+たむら,かずよし
+おくだ,のぼる
+ほり,よしみ
+くさつぐ,やすし
+やまだ,まさなお
+あさはら,たかひろ
+とくだ,まんなり
+いでた,よしひろ
+いとう,てるみち
+さとう,きいちろう
+つじさわ,けい
+おの,こうじ
+いわま,のぶあき
+だいごく,じゅんいち
+やまむら,よしかず
+はせがわ,としかず
+いぎ,たかひろ
+まかべ,まさかつ
+おかもと,かつお
+おおはら,ゆきなお
+せきやま,かずお
+きたじま,ひろあき
+とりうみ,まさひろ
+みやざき,たてお
+うい,よしひと
+くらもち,かずひろ
+しおぬま,ひでとし
+らいた,いくお
+しもこうべ,のぶかず
+さわの,てるお
+さかにし,ゆうじ
+ささき,としお
+せいの,けいぞう
+すずき,あきよし
+さかもと,としお
+すずき,しろう
+さわの,かつや
+しが,てつや
+ごとう,とくまさ
+すだ,じゅんじ
+すずき,よしこ
+さかきばら,としお
+さとう,けんじ
+さかぐち,よしのり
+すぎさき,みつくに
+すえき,たかし
+すずき,のぶあき
+しばた,ことじ
+すぎやま,ただお
+さかい,まさゆき
+しみず,ただし
+すぎもと,としお
+さとう,たくじ
+せき,おさむ
+さくらい,はるゆき
+せきぐち,こすけ
+さとう,えいじ
+すずき,ゆうのすけ
+さいとう,ただお
+せきね,とよふみ
+すずき,つとむ
+いいだ,きよたか
+すずき,ひろし
+ささき,みつお
+すえなが,としお
+さかもと,ひであき
+さいとう,まさみ
+すがお,てつじ
+しまず,みのる
+さいとう,ふみお
+しのざき,あきら
+すずき,よしゆき
+すなが,けん
+さとう,おさむ
+すずき,けいたろう
+せきね,さだのり
+ささき,としお
+さわだ,あきら
+さいとう,かずお
+しもぞの,ただひこ
+すえ,たかし
+さどとも,あきら
+せきね,けんすけ
+さとう,さとし
+さんご,よしのぶ
+すどう,くにあき
+そのだ,なおみ
+しま,みのる
+さとう,よねぞう
+さとう,とみお
+しぶや,かずあき
+さとう,かずお
+さとう,てるひこ
+さかた,よねお
+さいとう,おさむ
+すわき,たかし
+そり,たけじ
+さかもと,しゅんいち
+しらいし,まさとし
+すずき,あきお
+しまだ,としお
+すずき,まさひろ
+すずき,よしお
+さとう,はじめ
+すずき,きよし
+さとう,つとむ
+しげまつ,きよし
+さがら,たかとし
+さいとう,ゆきお
+しんぐう,たかお
+すがぬま,てるのぶ
+そが,たけし
+ささき,のぶゆき
+さとう,しげる
+さわだ,てつお
+そま,おさむ
+しばた,たけお
+さとう,みちこ
+さとう,きよし
+しまだ,ひでお
+ささき,のぶお
+さとう,けんじ
+さいとう,しげる
+しもで,ひでき
+ささき,としお
+さとう,よう
+さとう,ひさお
+さわだ,しんいち
+しろさき,よういち
+しばい,すすむ
+さいとう,みちお
+すずき,としお
+そがべ,いさお
+せがわ,ちひろ
+しみず,みのる
+すずき,ようじろう
+しろやま,よしひこ
+しいな,よしお
+さやま,まもる
+さかもと,まこと
+さとう,ひろし
+すずき,ただよし
+すずき,てつろう
+ささせ,かつゆき
+さくらい,まさき
+しまだ,せいじ
+さとう,かつひろ
+しもの,ようすけ
+すずき,よしなり
+すぎもと,まさお
+しみず,たけお
+さの,よしのぶ
+すずき,こうへい
+しまだ,かずひこ
+すずき,はるひさ
+すぎふじ,ひとし
+さかい,しんいち
+さかぐち,えいじ
+すがわら,だいさく
+しのずか,じゅんいち
+しが,みつお
+さかがみ,とよま
+すずき,かずゆき
+すぎの,ひでお
+すぎうら,すすむ
+しみず,かずみ
+すずき,たけしげ
+ささこ,せいぞう
+せき,ゆきよし
+さとう,たつじ
+しま,ひろし
+すずき,きよてる
+さかもと,よしかず
+ささき,ひろし
+しまだ,いそじ
+さいとう,ただひさ
+しおた,とよお
+しおだ,いさむ
+すだ,えいじ
+しいな,けんぞう
+しおのや,てつお
+さいしょう,やすひろ
+そいだ,えいいち
+そま,かんじ
+さとう,ひろし
+さとう,たけみち
+しおばら,きよえ
+ささおか,よしたか
+ささき,みつのぶ
+せと,ふみお
+しゅどう,たかお
+さかもと,ひろし
+さくま,たかし
+しのざわ,つよし
+しおばら,ひろゆき
+さくらい,ゆずる
+さとう,めぐむ
+さくらい,としお
+ささべ,ひろし
+さとう,りゅうぞう
+すぎうら,ゆうぞう
+さかい,まさお
+そま,のぶお
+そうや,せいじ
+そねかつ,あきら
+せきね,たけお
+すずき,のりお
+せきね,としつぐ
+さかきばら,かずとし
+しもかわべ,けん
+さわむら,なるみ
+せき,じゅんいち
+すずき,こずえ
+さかまき,ひであき
+さがわ,としひさ
+すぎやま,たけゆき
+すぎもと,こ
+せお,ゆうじ
+さいとう,たかし
+さかい,みきお
+さくらい,ただひろ
+せきね,まさのり
+さとう,はつみ
+しみず,たかし
+しみず,としお
+さいとう,まさお
+さくらい,まさあき
+すぎやま,やすお
+しずか,ひさなお
+しらかわ,あきら
+さいとう,ゆずる
+さきもり,いわお
+さとう,てつお
+せきぐち,おきとし
+せきね,のりこ
+しばた,こうじろう
+すずき,たかひろ
+さいとう,ひさお
+さとう,のりお
+せきね,おさむ
+さかい,はるひこ
+ささお,しんじ
+すどう,まこと
+もり,しょうじ
+しみず,えいぞう
+さとう,てるお
+すずき,いさお
+しむら,ひろとし
+しばさき,ひろし
+すがまた,かずお
+すずき,ひろし
+しおのや,きよかず
+たかはし,としろう
+つきやま,きくお
+つのだ,よしき
+たかはし,なおと
+とくざわ,もりはる
+たぐち,まさお
+たかぎ,ひでお
+たかの,てるみつ
+たはら,きよかず
+とよさわ,こういち
+とよます,けいいち
+たかはし,まさのぶ
+たけうち,ていじ
+たきいし,りょうじ
+たかいし,しげお
+たかさき,けんじ
+たにがわ,ひろゆき
+たかはし,まさとし
+たなはし,こうじ
+たまき,ひろし
+とば,まさし
+たばた,たかし
+つじ,たかお
+たなか,あつし
+たかはし,まさのり
+とくなが,きみお
+たぐち,まさお
+たきざわ,かつしげ
+とみ,たねまさ
+つじ,けいこ
+うちだ,としお
+たなか,いわお
+つねよし,のりかず
+たかの,むねお
+たかはし,ゆきち
+たかやなぎ,よういち
+たけだ,けいすけ
+たぼ,ゆたか
+たなか,かずお
+たけうち,まさき
+たかやす,とよみ
+つちや,ゆはつ
+とくなが,けんじ
+つちだ,なおかた
+つぼい,えいえつ
+たかはし,まさしげ
+つかもと,さだむ
+たなか,しげる
+ともつね,すすむ
+ちじ,としはる
+さとう,せいじ
+たかた,つねお
+とはた,よしみ
+たかはし,みのる
+たかはま,よしあき
+てらさわ,なおこ
+たかばやし,しょうじ
+てらだ,しゅうじ
+つかだ,せいじ
+たなか,ひでお
+とりまる,たみお
+つちだ,まもる
+たきもと,としひこ
+たきい,ひであき
+たねだ,けんじ
+たむら,よしのり
+たどころ,ひさお
+たかお,ますみ
+たなか,ひかる
+たかはし,はつお
+たかはし,しげゆき
+たかはし,ふじお
+とみた,とおる
+たかはし,あつのり
+たにぐち,みちあき
+たなか,ゆうぞう
+つぼい,ひろみ
+たけうち,ほぶん
+つだ,とよし
+たけだ,まさゆき
+たけい,しげお
+つじかわ,ゆういち
+たけむら,せいじゅ
+たき,まさあき
+たかだ,まさあき
+たきざわ,しげる
+たなか,まさじ
+たにむら,たけよし
+よしざわ,まさはる
+つねかわ,たろう
+たなか,ひろし
+たかだ,かつお
+つる,あきら
+たに,まさひろ
+たぐち,いさお
+たなか,じゅんぞう
+たにぐち,かずひろ
+たなか,のりみつ
+つじ,ゆういち
+たなか,かつみ
+つゆき,ひさお
+たまる,まさみ
+つちや,けいじ
+つるおか,のぶお
+たかはし,てつお
+たかはし,みつこ
+とうふくじ,としお
+たなか,おきつぐ
+たかぎ,きょうこ
+たかはし,よしひさ
+たにぐち,りょうじ
+とよだ,ひとし
+たかぎ,たけし
+たけい,しげる
+つだ,ふみお
+つねひろ,じゅんじ
+たきざわ,としお
+たちばな,ごいち
+たかはし,かつゆき
+たにぐち,こすけ
+たけだ,かずと
+つちや,けんいち
+たかはし,としあき
+たのうえ,ひこさぶろう
+たかばたけ,まさのぶ
+たかはし,またさぶろう
+ふなき,てるやす
+たけだ,かつまさ
+とくなが,たつ
+あさい,ゆうじ
+たかはし,みきこ
+たかはし,のりお
+たがわ,しょういち
+たなか,のぶゆき
+たちかわ,たけし
+たぐち,かずよし
+たかさき,あきら
+たまおき,しずお
+たなか,せいいちろう
+たかの,しん
+たけうち,しげる
+つだ,せんじ
+たかなみ,まさる
+つきなわ,よしなお
+とみもり,すすむ
+たけだ,とおる
+とがし,てつひこ
+つずき,しげとし
+とびた,のぶあき
+ともなが,つねかず
+つつい,しげあき
+たかぎ,じゅんじ
+たにぐち,かずとし
+たかの,としひろ
+たなか,さとし
+とまつり,しろう
+たかぎ,いつお
+たかしま,ふみお
+たはら,よしあき
+たなか,かずこ
+たかだ,よしお
+とりい,みつゆき
+たけべ,のぶゆき
+つかもと,あきお
+たむら,のぶひろ
+とみなが,さかえ
+たかいわ,さとし
+たばた,けんじ
+たかはし,くにお
+てんぽうりん,そういち
+てらうち,さだゆき
+たかはし,きよし
+たかせ,ちから
+たけむら,もとい
+たむかい,ふみお
+たかはし,ゆうじ
+たけつ,かつじ
+たのおか,すすむ
+たかはし,ただし
+とおやま,きよのぶ
+たけうち,あつし
+たかはし,まさお
+うしお,ゆずる
+うすぎ,かずひろ
+うちやま,よういち
+うめだ,かずすけ
+うけもり,まさな
+うちだ,みちや
+うえだ,ひさお
+うちだ,けいじ
+うつき,てつお
+うえだ,みきひこ
+うちだ,ひでき
+うえはら,しゅう
+うえむら,のぶや
+うちだ,さだゆき
+うちむら,けいいち
+うちだ,けんすけ
+うちだ,けいいち
+うえき,あきこ
+うかじ,まさてる
+うちだ,まさあき
+うえむら,ひでお
+うしお,とくじ
+うめむら,としお
+うめしま,りきつぐ
+うこん,かおる
+うちいけ,じゅんいち
+うるしの,たかあき
+うちなし,へいた
+うぐさ,まさゆき
+うの,としひで
+うえき,みのる
+うえもと,けん
+うえむら,ゆきお
+うえはら,ひろし
+うえだ,しんぺい
+わたなべ,ひさゆき
+わたなべ,かつみ
+わたなべ,きんや
+わかむら,やすろ
+わたなべ,ひでじ
+わたなべ,よしたか
+わたなべ,ひろはる
+わたなべ,かつなり
+わたなべ,ひでお
+わたなべ,かつひこ
+わたなべ,やすあき
+わたなべ,ただし
+わきた,こうめい
+わたなべ,ときお
+わたなべ,こんごう
+わたなべ,あきら
+わたなべ,おさむ
+わたなべ,けんじ
+わたなべ,すみただ
+わだ,やすし
+わたなべ,たつひこ
+わだ,たけみつ
+わだ,ほまれ
+わたなべ,まさあき
+わたなべ,あきら
+わたなべ,しげあき
+わかばやし,みねお
+わたなべ,ひさお
+おおた,まこと
+ふじわら,すみあき
+こいけ,みちお
+かたおか,てつや
+ひろしげ,きよし
+しんざわ,ひろし
+みずかみ,まさみつ
+なかじま,けいいち
+ふくしま,しげき
+なか,ひろし
+ひらやま,まさこ
+にわやま,かつじ
+しみず,そうじろう
+ふるさわ,つよし
+さくらい,みずほ
+たけなか,あつのぶ
+すぎうら,かよこ
+かとう,けんじ
+ほしかわ,まさお
+おがわ,いさお
+かしわぎ,こ
+さかい,ひろこ
+もり,はるお
+ほんぼ,のぶゆき
+いいじま,よしあき
+こじま,たかお
+たかはし,のぼる
+はた,しょうすけ
+おがわ,あきのり
+つちや,かつや
+こやま,いさお
+ふるみ,てつお
+くめ,つねお
+くらた,せつお
+うしじま,まさかず
+えばと,かつのり
+さとう,のぶゆき
+むしゃ,なおひこ
+ゆあさ,まもる
+きくち,なおき
+まつばやし,てるよし
+まつい,あきら
+たけむら,ひろし
+てらしま,ようすけ
+くら,ひでくに
+まつい,よしお
+うえだ,いさお
+はやし,しんいち
+かわな,だいじろう
+はやし,かずお
+でもと,まさひろ
+しぶき,たけし
+はま,たつお
+えんど,こうざぶろう
+みやもと,たかひさ
+まつだ,ひろし
+やまもと,ともこ
+むらかみ,しげお
+おかだ,だいきち
+わたなべ,かずゆき
+いわさき,あきよ
+よしだ,すみゆき
+おおもり,まさのり
+みずたに,ひさえ
+すぎうら,かずお
+のなか,みつたか
+わたなべ,いさむ
+さいとう,たけお
+おおかわら,げんたろう
+かどいけ,たけただ
+まつもと,のりかず
+なか,たかお
+かとう,けんぞう
+かわいし,ゆうこ
+ながさわ,つとむ
+すやま,くんろう
+くましろ,ひろし
+たかばやし,ひでお
+こんど,けんぞう
+いなば,さとる
+こばやし,としひろ
+やまぐち,みかこ
+すずき,ゆうじ
+あきやま,ゆたか
+たかだ,あきら
+さわい,まさひこ
+なかた,きよゆき
+いたば,ゆういち
+くにぎた,よういち
+やまだ,ようこ
+やまだ,ゆうこ
+たかはし,よういちろう
+うめむら,のりひこ
+こばやし,のぶあき
+かねみつ,ただお
+きど,まさし
+かねき,ただお
+こむら,まさひろ
+ふじもり,けんいち
+やました,てるたけ
+くりやま,まさひろ
+とざわ,たかし
+いしい,ちかとし
+たかはし,よういち
+たなか,かずみ
+いしざき,てつお
+はらだ,まさひろ
+とくひさ,しげやす
+いしむら,ただひろ
+うえだ,たかし
+おふち,くにひろ
+やつるぎ,みつお
+みなと,まゆみ
+よしだ,まさひろ
+みなみ,やすお
+おか,あきお
+いちかわ,かずお
+おおくぼ,ひでき
+いしだ,ひろゆき
+とみた,いさお
+ひらおか,ひろひさ
+かとう,ひでお
+おむら,むつお
+おさじま,としや
+ふなこし,せつお
+こうだ,ひであき
+あさおか,たつお
+かすが,あけみ
+ももはら,ぶんいち
+うえむら,としひで
+おばた,かずこ
+おのだ,ゆきお
+みやした,かんじ
+ほそや,やすお
+やしろ,ゆきお
+わたなべ,あつし
+きむら,ときち
+かみじょう,ひさえ
+さとう,よしおき
+まつしま,あきら
+かたやま,ようこ
+ひらの,ごへい
+なからい,だいすけ
+よこやま,ひさお
+おおがね,ともひろ
+きむら,まこと
+のざさ,よしのり
+もりの,かずしげ
+えちごや,みちひこ
+ふくしま,ひでお
+いとう,まさゆき
+いけだ,ゆきこ
+とくなが,りえ
+きもと,あいこ
+おしだ,さとこ
+はしもと,のりかず
+のぐち,としのり
+みやべ,かずと
+くわはら,やすえ
+きむら,ひろみ
+おだ,かずゆき
+あいざわ,たみお
+うえの,かつお
+まつばら,のりゆき
+たまい,かずみち
+しらい,よしお
+おおはし,こうじ
+たみや,ふみや
+はらだ,よしこ
+うすい,たかし
+こり,こういちろう
+のだ,しげひこ
+なみき,まさと
+なかお,まさみつ
+かどや,あきら
+おの,としひで
+しぶかわ,しんいち
+いわさわ,まなぶ
+たぶせ,いちろう
+おさわ,たかよし
+なかだい,けんじ
+えがしら,ひろゆき
+ささき,かつお
+ふくち,かずひこ
+よしやす,ごう
+わたなべ,こさと
+うえの,れいこ
+えとう,まさのり
+よしだ,まさお
+たけい,ゆういち
+はやし,ひさし
+またき,しんご
+もりもと,いちろう
+いはら,けんじ
+つかはら,てるお
+かのう,ともこ
+むねゆき,ひでまさ
+おおつぼ,よしたか
+やまもり,かつお
+あんどう,せいき
+やまざき,よしあき
+たきもと,よういち
+たけむら,なおかず
+むらかみ,まこと
+たかた,のりお
+ひろせ,つたひろ
+やくわ,たかし
+しんぐりょう,ようこ
+たち,まさし
+さとう,かずお
+やまもと,まさひろ
+すどう,しょうこ
+ほんま,ひろき
+おおつぼ,としお
+かざま,みつひろ
+あがわ,みほこ
+いのうえ,りゅういち
+あらい,まさち
+うえむら,ゆたか
+にしくら,まさひろ
+みやざき,よしかず
+ふくだ,もりまさ
+つりや,ただお
+たなか,ひろかず
+おがわ,こうじ
+すずき,みのる
+はまぐち,たくじ
+かめだ,かつや
+ももはら,ひでお
+ひらお,たかこ
+たかだ,なおゆき
+いけだ,よしひろ
+すずき,あきら
+たかはし,かずよし
+たなか,じろう
+せら,たいち
+たけむら,としあき
+ほりきり,まもる
+いけだ,みのる
+あらき,せきね
+おおつか,かずいちろう
+くにまつ,せいざぶろう
+うしば,たかし
+はやし,まさと
+いしい,みきお
+かだ,あきら
+やぎ,ただお
+ひらい,こういちろう
+くろせ,ひろし
+おかべ,いさむ
+かねこ,としゆき
+こじま,さとる
+にしより,みのる
+なかじょう,じろう
+はしくら,つとむ
+たかはし,たつお
+うえくさ,のぶあき
+しばた,ひろし
+たかはし,てるお
+いなば,かずと
+じゅんいちろ,あきのり
+はやかわ,ひでお
+いとう,たけし
+きもと,まさつぐ
+いだ,ひろし
+ほうじょう,かつひこ
+ほりい,つねお
+かいせ,あつし
+はしもと,やすあき
+すずき,ひとし
+かねさか,よしお
+やまぐち,ゆうじ
+すずき,まさかず
+すどう,まさひこ
+おおば,みほこ
+むらた,としこ
+あきやま,まさし
+あすま,たけお
+かわじり,ひでお
+まつもと,きょうじ
+しろやま,こ
+ふじい,あつこ
+ごとう,だいすけ
+たにあい,やすまさ
+かつぼり,まき
+ひあて,くみこ
+てらい,あきこ
+はんだ,まさこ
+みしま,ひろみ
+たかしま,かずみ
+まつだ,あきら
+こんど,のりこ
+いたや,けんじ
+まつもと,なおたけ
+いいやま,ひでお
+じっと,かつひろ
+くぼた,さちこ
+いしぐろ,えいじ
+もり,うつみ
+かんの,さちこ
+いとう,せいじ
+よしだ,りゅうじ
+まるやま,くにお
+さとう,なほ
+こうだ,ようじ
+わたに,まもる
+させ,いくお
+そとやま,かつのり
+ほんだ,てるくに
+いぬい,ゆたか
+すずき,よしのり
+こにし,よしのぶ
+すぎい,ゆきひさ
+あらき,のぶお
+ひらおか,やすし
+おおつか,むつお
+かとう,しげお
+しおの,ひろし
+かたやま,ひろのり
+ふちかみ,たけひこ
+ひらき,たもつ
+いわさき,きみお
+えのき,じゅん
+いわた,せいいち
+しゅとう,ただし
+とおやま,まつのり
+こいで,じゅんざぶろ
+たなべ,ゆうじろう
+やまもと,しゅんいち
+かいはつ,せいし
+あらい,かつじ
+うえだ,ゆうぞう
+くらおか,そういちろう
+こばやし,えつひろ
+ためちか,たてお
+よしだ,しずお
+まつもと,しげる
+さかした,かねお
+わだ,としあき
+いとう,やすお
+よしだ,かつじ
+よねだ,としひで
+おむら,まさみ
+たかぎ,しちろう
+うちやま,あきこ
+かしわぎ,けいこ
+にしだ,せつお
+おしか,たけお
+えじま,とものり
+おか,けんいち
+よしだ,やすえ
+いまい,やすしろう
+やまみち,ともこ
+あいもの,かつお
+ひの,もとこ
+たかはし,みさこ
+よこた,えいこ
+いのう,たえこ
+よしだ,ひろこ
+よしおか,あきこ
+うめざわ,うきこ
+てらお,ひろひさ
+かわはら,はるお
+はせがわ,みのる
+きし,てるこ
+はしずめ,みつひろ
+よしだ,めぐみ
+みねふじ,なおこ
+ほんだ,ゆみ
+たかさわ,みゆき
+おおはし,ようこ
+かがわ,ちか
+にしだ,まり
+いたがき,あきこ
+あきやま,のりひろ
+おちり,やすひろ
+のざわ,こうじ
+さいとう,けんじ
+きむら,ちえ
+あべ,なおと
+くすのき,ともこ
+はやし,やすひろ
+おおい,なおみ
+かみおか,はるよし
+あきやま,いさお
+ありた,かつみ
+きたむら,みちゆき
+ますむら,たかのり
+おおさわ,けん
+かわい,みのる
+いたがき,ひでお
+もり,たかお
+あおき,みきお
+ふじしろ,こうじ
+しみず,もとしげ
+むらかみ,みよし
+なかじま,てつお
+もぎ,あきお
+みうら,かずお
+たかまつ,けんじ
+たかだ,しょういち
+こんど,まさこ
+なかじま,ひとし
+ねれい,ひろし
+うしく,おさむ
+きたざわ,こ
+さっさ,のぶひろ
+いっしき,よしひろ
+かわの,のりつぐ
+いしはら,ふみたか
+かめおか,ただお
+きうち,のりかず
+ながい,ひとし
+のぐち,みちお
+おした,たかお
+よしむら,としみち
+あかほり,みつのぶ
+まるなが,よしつぐ
+よしの,こうたろう
+やの,よしひろ
+やまぐち,まさひで
+やまぐち,かつとし
+せんどだ,まさる
+やすだ,あきら
+よこえ,じゅんいち
+やました,せいざぶろう
+よしだ,とみぞう
+やました,すすむ
+やすい,かずお
+やまおか,きょうすけ
+よこせ,ともしげ
+やまぐち,けんじ
+やはぎ,やすはる
+やまおか,ひろまる
+よつや,とおる
+やまもと,じゅんこ
+よしかわ,としろう
+やました,しょうじ
+やまおか,ひろこ
+よねみつ,せいじ
+よしだ,けんいち
+やまざき,てつお
+やまもと,ひかる
+やまぐち,みのる
+やまうち,さかえ
+よしざわ,かつみ
+よしおか,かつひと
+やまもと,のぶお
+やまおか,みちとし
+やまざき,あきら
+よしむら,まさひこ
+やすだ,こうじ
+やました,せいいち
+やだ,しんや
+よしだ,いちろう
+やまもと,つとむ
+やまだ,ごろう
+よねだ,かおる
+よしだ,まさひろ
+やまだ,くすお
+やまぐち,たかふみ
+やまぐち,ふみひろ
+やまもと,たかこ
+よしだ,すすむ
+やました,しょうぞう
+やんべ,あつひろ
+やまぐち,のりよし
+やまもと,じゅんじ
+やまね,こうじろう
+やまさき,けんたろう
+やすおか,ゆきお
+やまだ,えいぞう
+よしざわ,じろう
+やじま,あきら
+やない,てつお
+やまざき,かずお
+やまうち,ふくみち
+やまざき,すすむ
+よしの,たつゆき
+やまかげ,ただのぶ
+やぎ,じつのり
+やすだ,まさお
+やまや,のぶお
+たかぐち,のぼる
+よしだ,ひろし
+よしの,こうじ
+やまむら,じゅんいち
+やぎ,かつのり
+やまだ,こすけ
+ゆかわ,まさとし
+やまもと,じょうじ
+やまたに,ひろつぐ
+やまむろ,よしかね
+よしだ,としひこ
+よこかわ,ともよし
+やまざき,こういち
+やまもと,たけお
+よしの,きよし
+やまね,よねたか
+やすなが,あきひろ
+やなか,けいいち
+やまね,てつお
+やまうち,よしゆき
+やまぐち,ゆうじ
+やまわき,しょうたろう
+やまかわ,じゅんいち
+やまだ,かずみ
+よこやま,しょうたろう
+やまもと,やそみ
+やまぐち,のぼる
+やまぐち,たかよし
+よしだ,たかお
+やまなか,かずみ
+やまもと,ただはる
+よしだ,たかお
+やまだ,さとる
+やまおか,よしとも
+よこやま,まさひさ
+やまさき,のりお
+やまもと,かつひこ
+やまかわ,まさよし
+やうち,ただよし
+よしはら,かつじ
+よこみぞ,しげる
+やまもと,しゅうぞう
+やまもと,てるお
+やまもと,えいいちろう
+よしだ,まさひろ
+よしだ,ふみひろ
+やすい,みのる
+やまぐち,しげる
+やまもと,あきら
+よこた,えいいち
+よしだ,ゆたか
+よこやま,ひでき
+やすい,かずもと
+やまさき,かずひろ
+よしおか,のぶお
+よしだ,しゅんろく
+やまだ,かつひろ
+やまもと,ようじ
+よしだ,せいぞう
+やまざき,せいしろう
+やまね,なおじ
+ゆたに,すすむ
+よねざわ,よしひろ
+よしの,だいすけ
+よしだ,たけお
+よしもり,ひさとよ
+よしわら,たけし
+やまだ,としき
+よしだ,としかず
+よしだ,むつお
+やまもと,もりひこ
+こじま,くにかつ
+おの,しげお
+まえかわ,こうたろう
+こんの,のぶゆき
+まきせ,きよし
+のむら,まさたか
+やすはら,まさひこ
+ながしま,あつよし
+きたはし,まさお
+つる,きよみち
+つくだ,みちお
+てらうち,たけし
+やまだ,さとる
+せんば,すすむ
+さえき,のりお
+おかだ,しょういち
+みやうち,ひさお
+こんど,としお
+ふきあげ,やすお
+いしかわ,ちよたけ
+いわもと,まさお
+くぼ,じゅんいちろ
+たなか,ひろかつ
+わだ,のりお
+いわお,つねのり
+くまがい,たかひろ
+すずき,ひろふみ
+たかむら,ひろし
+にしうら,せいいちろう
+みつじ,まさし
+たききた,あきら
+おうち,けんじ
+こま,あきお
+ますだ,けんじ
+かとう,としろう
+いいずか,かずひこ
+まるやま,のぶあき
+としたに,とおる
+はなぶち,まさひろ
+いまい,まさぞう
+おかひろ,つねお
+きむら,としひこ
+たじま,まさはる
+かんだ,つらゆき
+どい,おさむ
+あらがき,やすのぶ
+きゅうそじん,けんすけ
+たけうち,つねよ
+うぬま,ひでなり
+やまぐち,よしたか
+よもり,もとひさ
+しまざき,くにひこ
+とくや,としお
+やまだ,あきら
+ふかや,しげお
+えぐち,はるお
+さの,ひでのぶ
+とくの,あきら
+おおとも,さだむ
+しらおがわ,ひろし
+ひらの,たいき
+おだ,ゆうじ
+たなか,りょうぞう
+ふじた,あきら
+あらい,あきひで
+ふじた,ゆうじ
+なかがわ,ひろゆき
+なかにし,かずしげ
+はら,あきひろ
+ちば,としこ
+いしわた,としひさ
+やぐち,たけひろ
+てじま,かずお
+たつた,しげる
+くさか,たけし
+ふるた,たけはる
+ごとう,まさのぶ
+おだぎり,ただし
+くまがい,たける
+むらかみ,みずほ
+みむら,まさお
+よこい,くにひこ
+いなげ,ともゆき
+あめみや,みつお
+いのうえ,さだお
+ぬまた,じんいち
+さかもと,ごへい
+ひらまつ,さだお
+なりた,かおる
+つねみ,いちろう
+たかしま,ふさひこ
+みす,かずみ
+さきやま,よしひこ
+ふじわら,ただし
+とみた,まさひろ
+つなわき,みねお
+はせがわ,たけし
+ふくざわ,ゆうぞう
+ごえけ,あきら
+なか,まさひろ
+えばと,けいこ
+こばやし,しんいちろう
+ひらつか,きよし
+さとう,のぶお
+いのうえ,あきら
+はすぬま,まさお
+ふるはた,あさこ
+うえの,あつし
+たけなか,まさひろ
+くにたけ,よしお
+ひらた,ゆうこ
+はせがわ,げん
+ふくはら,あつし
+ふなぐち,とおる
+あまの,のりこ
+おおの,みずのり
+すわ,のりこ
+のがみ,みか
+うめの,やすゆき
+いけの,ゆうこ
+なかじま,はなこ
+いしい,きょうこ
+さいとう,ともこ
+たなか,かずゆき
+たていし,としかず
+すずき,よしひこ
+きのした,ひかる
+おおさわ,よしひろ
+いで,さきこ
+おがわ,しほ
+えのもと,わきこ
+おざわ,みずほ
+はたけやま,ともひろ
+いいだ,みつあき
+しのざき,じゅんいち
+おかだ,りえこ
+たかま,まさし
+やぎ,ひろゆき
+さかい,まさよ
+しみず,こうじ
+ほりかわ,ようこ
+ながお,こうへい
+ひらいし,まり
+さがわ,たもつ
+はらだ,まさみ
+たかはし,りゅういち
+たち,まさよ
+ひえ,きみお
+ただ,みなこ
+よしもと,ひろこ
+もちずき,ちひろ
+たなか,こうじ
+たぐち,まゆみ
+さとう,いくお
+さかした,ゆきえ
+かわしま,まゆみ
+ほりぐち,かおり
+ふくま,すみたか
+かわたに,あきら
+じびき,おさむ
+さいとう,みつる
+しおつ,いさお
+とばた,のりかず
+やまもと,まさひこ
+おふち,ひろみち
+しのはら,のぶお
+やまかわ,かずただ
+たむら,としお
+はたけやま,たかこ
+たなか,ひかる
+かなざわ,ひであき
+たかはし,えりこ
+ふじむら,みなこ
+ながしま,よしゆき
+きのした,ときこ
+こんど,まみ
+あんべ,まなみ
+さいとう,いずみ
+あさだ,みき
+きのした,ふみえ
+かどや,あきこ
+うえだ,とおる
+さいとう,もに
+たかはし,まさひろ
+いしざき,しもん
+おざわ,てるひさ
+はやし,おさむ
+やがわ,みちお
+たかはし,たみお
+とみやま,よしあき
+あだち,ゆうぞう
+あかいわ,しょうすけ
+かがや,ゆきのぶ
+あらい,さおり
+おしきり,たかし
+やまむら,えいじ
+たかやま,としゆき
+よこやま,おさむ
+ばん,つぐお
+いずみ,よしのり
+みずの,ただお
+ぶんや,みのる
+てらおか,しょうじ
+みやした,みのる
+あさま,けいこ
+ささき,てつお
+にしお,よりと
+ふるや,てつお
+いまだ,ひでゆき
+いしはら,いくえ
+はしもと,みきお
+まるやま,ともゆき
+かじ,かずたか
+かねこ,はなこ
+なかだ,のりひと
+ちざわ,なほ
+さわ,あさこ
+とがめ,みわこ
+よしだ,げん
+おおの,ひろこ
+やこ,まさひこ
+いしかわ,あきのり
+ことだ,ひろこ
+さがわ,かずま
+のぐち,かずまさ
+でんぼ,ひろふみ
+はるき,あきひこ
+いね,しょうえい
+おおの,くにお
+かねだ,たつひこ
+のぐち,あきら
+おおば,ひろみつ
+おた,とくいちろう
+しもまき,やすお
+わたひき,ゆうこ
+やまもと,まり
+ふじむら,まりこ
+そうみや,けんじ
+しま,くみ
+ささき,たかゆき
+かがわ,れいこ
+たけうち,くみこ
+さいき,みよこ
+いとう,のりこ
+きむら,ようじ
+たばた,たかひろ
+くめ,とよあき
+たかだ,まりこ
+たむら,みえ
+たかまつ,まきこ
+しろした,しゅうさく
+かとう,ともゆき
+あわい,としのり
+ほさか,のりこ
+たなか,るみ
+みひら,しゅうさく
+さとう,けいこ
+おざわ,ゆきお
+すずき,けんじ
+みやざき,りゅうぞう
+もりたに,ゆかり
+いわぐろ,つとむ
+うえま,しょうこ
+ふかた,ちか
+ひろせ,あきこ
+おかだ,ひろみ
+かとう,ありか
+まき,さゆり
+のだ,ともかず
+くぼ,きょうこ
+にしきおり,つぎお
+やの,じゅんこ
+かわむこう,なおき
+やすむら,みよこ
+とにし,ともこ
+やまもと,ひかる
+しもだ,だいすけ
+おおたに,くにお
+おのさと,はん
+かなざわ,ひろあき
+おかもと,みわこ
+さいとう,みなこ
+かしわばら,のぶこ
+たかはし,まさのぶ
+さいとう,まなぶ
+まつだ,よしあき
+たちざき,わかこ
+こんど,ともこ
+しみず,だいすけ
+ながおか,かおり
+なかがわ,あつし
+たかと,ひろゆき
+きむら,たかし
+なるせ,きよみ
+おぐま,かえ
+たかはし,みなえ
+きくち,せいこ
+さとう,はじめ
+えんど,まりこ
+たむら,とものり
+やまもと,こうじ
+あさい,よしひろ
+もり,おさむ
+たかしろ,めぐみ
+おか,さいか
+かとう,としや
+いぐち,さちこ
+たなか,きょうこ
+よしだ,こうじ
+あきもと,まどか
+にしい,じゅんじ
+わしおか,こうじ
+いぬまる,ひろじ
+ほし,しずか
+よねやま,まさのぶ
+くろべ,ゆういち
+いしい,ひさえ
+ひぐち,じゅんいち
+なかだ,たかはる
+おのでら,なおこ
+とだ,としゆき
+まえだ,ひろこ
+ながい,ゆきこ
+こぬた,ひさよし
+しばさき,かつとし
+うかい,あきか
+すずき,ちはる
+ひらき,のぶこ
+なかむら,ゆうこ
+やまだ,まさみ
+かどくら,まさし
+たかさき,こうじ
+なかた,きよみ
+たにかわ,ほずえ
+にしむら,まさや
+みなみ,あやみ
+おおぬき,みのる
+さとう,ひろし
+たかはし,たかお
+ひだ,おさむ
+さくま,しま
+にえだ,たかし
+よこい,れみ
+よねくら,たけお
+ばんば,りえ
+やまだ,あきひで
+いまむら,るりこ
+いけだ,ちあき
+なかむら,みなこ
+すどう,りえ
+なかそね,かおり
+おおさわ,ちかこ
+さとう,しちろう
+えいどめ,ゆき
+いがらし,みか
+たや,たかこ
+おおひら,よしこ
+さかもと,さとし
+すぎもと,こうじ
+かとう,みなこ
+よしい,ただひろ
+いわや,ようこ
+きのした,きょうこ
+すぎさわ,かずよ
+わだ,みよこ
+みやした,えみこ
+うえの,のぶこ
+おおたき,ゆみこ
+いしばし,きょうこ
+いわした,まさお
+いしかわ,ひでひこ
+きし,たてお
+まるやま,ひさお
+ほんま,たかお
+くすもと,いさお
+いまの,きみひで
+おおにし,せいぞう
+やまだ,しょう
+ふじおか,とらお
+はなだ,やすかず
+しばた,あさお
+みやした,ゆきお
+かさはら,まさお
+おおやけ,はるお
+いまい,くにお
+こせき,まりこ
+おおた,のぼる
+まちい,かずひろ
+きくち,せつお
+ひぐち,かずえ
+みなよし,じゅんじ
+すずき,ひろかず
+なんば,なおき
+おおにし,だいさく
+はやしだ,たかとし
+たなか,ひでひろ
+かねこ,かずのり
+つちや,ともゆき
+いいだ,えつお
+ふるや,かずお
+なかむら,みつぐ
+はるはら,たかし
+ほりえ,よりしげ
+おおた,たけし
+すずき,やすつぐ
+おと,まさとし
+なかがわ,まゆみ
+かわしま,ようへい
+てらもと,ゆうじろう
+きむら,あきら
+よどなわ,ゆかり
+こだいら,ひであき
+かくらい,ようこ
+おぐり,ひろよし
+はた,けんじ
+まつもり,かずお
+よしおか,せいじ
+しげた,みちあき
+かわぐち,ともひろ
+かねこ,まさお
+あさひ,ただあき
+わたなべ,こうじ
+ありやま,つぐお
+つじた,たつお
+よしはし,ひでお
+みしま,せいし
+さとう,かつじ
+かねまる,えつひろ
+かねこ,やすし
+えじま,ひろあき
+みつくち,じゅん
+もり,きみお
+おち,せいいち
+まえかわ,かずお
+たなか,まさのり
+おりがさ,まつのり
+こせき,かおる
+ひらやま,ただし
+こぼり,えつよし
+なかうえ,たつお
+すとう,まさお
+ごとう,きよひこ
+つかもと,ひろみち
+えびはら,よしあき
+もりの,ひでのり
+すずき,まさあき
+よしだ,まこと
+いまい,まさき
+ひの,むねたか
+よしだ,みな
+おにずか,すみただ
+たかぎ,まさひこ
+おむら,かつひと
+うちやま,えつこ
+くろかわ,よしのぶ
+やました,たきお
+にしだ,ひさえ
+かしわぎ,ひろし
+かねこ,ゆきこ
+くまだ,みきお
+こじま,なおずみ
+しらい,てつひこ
+ふるかわ,りえ
+むしう,ただあき
+よしの,としお
+すぎうら,せいいち
+ふじさわ,まり
+さとう,あきひろ
+えざき,たかゆき
+むらかみ,たかお
+にわやま,まつもり
+やすの,みか
+どうだ,ともひこ
+かじい,もなみ
+たなか,ようこ
+まつなり,いさお
+おおばやし,こうきち
+たかはし,たくや
+まつむら,やすまさ
+こもり,まきこ
+のぞえ,かずえ
+おの,きよみ
+かんの,こずえ
+さとう,けいこ
+のなか,わかこ
+かわはら,ゆみ
+なかむら,まゆみ
+やました,としかず
+こういち,ももえ
+いたや,ひでお
+やま,ふみこ
+やまもと,そういちろう
+くらた,やすこ
+かわず,いたる
+みかみ,こういち
+たきがわ,よしかず
+たなか,ひろあき
+みやた,たかてる
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt
new file mode 100644
index 0000000..8a38587
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+アキモト,ヤスオ
+アキバ,シゲル
+アライ,ヒデアキ
+アライ,ケンイチ
+アカガワ,トシオ
+アラキ,セイゴ
+アイカワ,ノリオ
+アキノ,ユキオ
+アキヤマ,ツヨシ
+アサイ,ヒトシ
+アベ,マモル
+アリガ,ツトム
+アキタ,ヨシテル
+アカツカ,カズヒコ
+アライ,マサハル
+アサハラ,カズオ
+アツミ,マサアキ
+アワヤ,ヒトシ
+アサカワ,トシアキ
+アオキ,オサム
+アワズ,アキラ
+アキクサ,ヨウスケ
+アオヤギ,ハツカズ
+アジサワ,シュウイチ
+アイソ,ヤスシ
+アオシマ,チヨカズ
+アトウ,マサヒコ
+アサノ,ヨシヤ
+アリガ,ソウイチ
+アオキ,リョウヘイ
+アイカワ,ユキオ
+アキタ,マサヒロ
+アサノ,ノリアキ
+アサト,ヒデシ
+アラキ,ヨシカズ
+アンドウ,ヤスシ
+アサカワ,ヒロシ
+イイダ,マコト
+イワサワ,マサキ
+イシカワ,マサオ
+イノウエ,ヒロヒト
+イシハラ,ヨシノリ
+ウカジ,サチコ
+ウメタニ,カツヒコ
+オケタニ,ケンジ
+オオスギ,アキヒロ
+オオカワ,ミキヒコ
+カトウ,マサトシ
+カモ,マサアキ
+クマガイ,マサシ
+コンド,アキラ
+スギモト,オサム
+ハマサキ,ヨシノリ
+チダ,シュンジ
+ナカムラ,ケイゾウ
+ナガタ,チエコ
+サワムラ,カチコ
+ナルオ,ヨシノブ
+ナリタ,ユミコ
+ハセガワ,ヒロコ
+フジタ,ケイコ
+フジワラ,タカコ
+ブヨウ,テツオ
+ホリ,コウジ
+ミナミムラ,チアキ
+ミヤジマ,チヨリ
+ヤマダ,マリ
+ヤマグチ,タカシ
+ヤナギハラ,ミドリ
+ヨシノ,シンイチ
+ニイダ,クニヒコ
+オオイヤマ,ユウコ
+カナガワ,イチロウ
+キムラ,リエコ
+ツカザキ,ミホ
+カワダ,ナオコ
+アサカワ,ミサコ
+シモツ,マサアキ
+オカ,タカヒト
+オガワ,コスケ
+タイラ,ショウイチ
+イシノ,キヨナガ
+キミシマ,アキラ
+サトウ,テツヤ
+ヤマダ,オサム
+オオタ,ナオミチ
+マエダ,ヒデトシ
+カザラシ,ミツル
+ゴトウ,カツノリ
+ホシ,マモル
+クロダ,シンヤ
+ツカワキ,トシヤ
+イナガキ,マサヒロ
+イワモト,タモツ
+ツルタ,タカシ
+イシジマ,リョウヘイ
+ヤマナカ,ヒロトシ
+ウエキ,アキコ
+ニシムラ,アツコ
+ワイダ,タダシ
+ヨシダ,ルミ
+シブヤ,ユタカ
+アトウ,マサノリ
+ミヤタ,カオル
+オオタキ,ツギオ
+キヨオカ,マコト
+オオタニ,タカシ
+ニシワキ,ナオミ
+ニシヤマ,タカシ
+ミシマ,タカユキ
+カトウ,ヒロシ
+イマオ,ミズホ
+オザキ,コウジ
+セキヤ,マサユキ
+ツクダ,ノブユキ
+ミヨシ,ノブマサ
+ヨシミ,タカユキ
+ササオカ,タカシ
+オシマ,チハル
+クボタ,チズコ
+シバヤマ,シュウゾウ
+オオクボ,トナミ
+タチノ,ジュン
+ワダ,ミチヨ
+マツシタ,マサモリ
+コムラ,ヤスヒコ
+マキシタ,ケイコ
+アカオ,ヤスヒロ
+ハシモト,ヒトシ
+オオノ,カズオ
+セキモト,ヨシオ
+マエダ,チカラ
+ミツホリ,ナオキ
+ミナミゾノ,マサキ
+セガワ,カオリ
+スズキ,トヨジ
+キタガワ,ヨシタカ
+ヨシヤス,ジロウ
+ヤマモト,マリ
+カトウ,ヒロシ
+カワカミ,ヨウ
+マキノ,ナオキ
+スズキ,マサオ
+フルサワ,サトシ
+ハヤシ,ジ
+イマニシ,トシヒコ
+ミヤモト,ユカ
+マキ,クニアキ
+コイデ,サホ
+ワタナベ,マサコ
+オオハシ,ヒトシ
+アカオ,アキオ
+アサイ,カズコ
+イマイ,タカシ
+キラ,マサヒコ
+ニシムラ,テルキ
+ヨシカワ,トシユキ
+ミナミ,ケンジ
+ツルタ,ノリオ
+ナカムラ,ジュンイチ
+タナカ,ケンジ
+マツウラ,タケシ
+スギタ,ジ
+カワイ,トシオ
+コクボ,サツキ
+ツダ,マコト
+ミヤタケ,トシタカ
+クロサワ,ヨシカズ
+スミヒラ,マサヒコ
+タカキ,マサオ
+イシト,コウキ
+ヤマダ,モトカズ
+ニイツ,ノブアキ
+イワムラ,カンジ
+カワナベ,ヨシヒロ
+ナガイ,ヒロユキ
+ヤマネ,チアキ
+イマイ,タカユキ
+ナカオ,イサオ
+オシキリ,フミハル
+イシカワ,ジュン
+オカジマ,ジュン
+オオニシ,マサハル
+スズキ,テツ
+ヤマナカ,サツミ
+タニグチ,カズヒロ
+カワベ,トキオ
+コンノ,ミキ
+サトウ,ヤスヒロ
+タカヤマ,シンイチ
+モリミチ,イタル
+ホリカワ,カツミ
+フクイ,タマコ
+キタムラ,アキラ
+ナカハラ,ヒロミ
+イチイ,ヒデノリ
+イワサ,カヨコ
+スズキ,シュンジ
+ヨネタニ,カツフミ
+タノ,タケシ
+シバタ,ヒデヨ
+イノウエ,マサノリ
+イシカワ,トシオ
+キシ,マサミ
+アワエ,アツシ
+タケオ,ヨシアキ
+キノシタ,カズヒコ
+ツカダ,フミアキ
+アリドメ,トシユキ
+キッカワ,トシアキ
+オガサワラ,ヒサカズ
+ナガセ,タカヒロ
+ハルヤマ,アツヒコ
+オズ,ヤスオ
+コサカ,トシカズ
+シラサキ,トオル
+タナベ,ツトム
+イケガミ,ツヨシ
+コバヤシ,ジュンイチ
+マツバラ,ナオト
+ナカガワ,モリヒロ
+オガワ,セイジ
+ヨシダ,マサノブ
+イケ,サダノブ
+タニグチ,マサミチ
+マエダ,ヒロシ
+ヒラノ,タカユキ
+シミズ,キミコ
+ヤマダ,アキトシ
+タナカ,ヒロアキ
+コマツザキ,マモル
+カトウ,マサカズ
+オワ,ノリコ
+イワムラ,ヒロタダ
+イリエ,カズユキ
+アカヤマ,マサユキ
+アキモト,ヒロアキ
+カミムラ,アキヒコ
+スミタ,カオル
+ハマサキ,アツシ
+ヤスダ,マモル
+タケムラ,ミキヤ
+ムラカミ,トミツグ
+ナカジマ,ヒサトモ
+モリモト,コウジ
+セキグチ,タカユキ
+ナカジマ,マサヒコ
+キガワ,ヒロヒサ
+タカヒラ,タカシ
+モチダ,アツシ
+カメヤマ,タカシ
+オヤマダ,マサヒサ
+タナカ,テルヒサ
+ホンマ,シンジ
+キノシタ,ヤスヒコ
+シノツカ,ノブシゲ
+アイハラ,ヤスフミ
+ナガマツ,エイジ
+トヨムラ,マサアキ
+ヒラノ,タカシ
+キムラ,ジュン
+イケダ,セイジ
+イシハラ,ユウコ
+ノグチ,マサル
+コケツ,ミツマサ
+オクヤマ,アツヒコ
+ハマグチ,シンジ
+ツジサカ,ヒデアキ
+イチカワ,サトル
+ヨシダ,セイゴ
+ヤマダ,ヨウイチ
+シミズ,ヤスシ
+サカガミ,ノリカズ
+コスギ,ヒサヒコ
+ニシダ,セイジ
+イイダ,カツラ
+ウチダ,ヤスミ
+モトヤマ,チハヤ
+ミヤモト,イクヨ
+コバヤシ,ヤスシ
+カトウ,ヒロユキ
+シライ,サトシ
+ハギワラ,コウジ
+ヤマウチ,ユキヒデ
+ミツハシ,カオリ
+モンジ,ヨウイチ
+タキモト,ノリコ
+オクダ,シュウジ
+ツカモト,シュウジ
+ムコハラ,ヤスイク
+サルヤ,ミチオ
+オカジマ,トシヒコ
+ホシノ,ヒサト
+ホシ,ヒロフミ
+フシミ,コウイチ
+タカハシ,タツヤ
+ニシヤマ,シンジ
+ツルマチ,ショウイチ
+トミタ,ナルト
+ウチダ,トオル
+オオタカ,ユウコ
+サカイ,タカヒサ
+ソガベ,カツミ
+ワダ,ケンジ
+コサカ,マサミ
+アソ,アケミ
+アライ,トシハル
+スギムラ,シゲオ
+アキヨシ,カズオ
+アサカワ,ツトム
+ワダ,サカエ
+イケダ,コウイチ
+オカモト,リョウジ
+アオキ,マサル
+ウエサワ,ツヨシ
+ウヤマ,ヒデアキ
+ナカハマ,ススム
+カワモト,マサユキ
+スエマツ,ジュンジ
+ナガイ,サトシ
+ナカハラ,ユウゾウ
+ナワタ,ナリアキ
+カツザワ,ヒロシ
+ヤマウチ,ミユキ
+アカギシ,ツヨシ
+クサズミ,トシヒコ
+ホカリ,ヒロシ
+カトウ,オサム
+キリウ,ヒロキ
+オガワ,マサト
+タナカ,マサヨシ
+アイムラ,ツトム
+イガラシ,マサト
+カワワキ,タカミチ
+マエサカ,トモミツ
+マツシマ,アツシ
+マツモト,ヒデト
+カタイ,マサヒロ
+コジマ,マサアキ
+ツジモト,トオル
+ナワタ,サトシ
+フジタニ,カズヒコ
+キセ,テツロウ
+サカグチ,ジュンイチ
+スズキ,トシユキ
+ハマサキ,マサヒロ
+ヨシダ,ヒトシ
+ホッタ,シゲヒト
+マスコ,ヒサオ
+タケナカ,コスケ
+イシイ,ハルキ
+タサカ,ヒロシ
+マツダ,マサヒロ
+ハタ,タカシ
+アキヤマ,ユタカ
+タカハシ,ヤスヒト
+ヤマカワ,ショウジ
+ヨコチ,マサヒロ
+ヨネタニ,キイチロウ
+フジノ,ユウスケ
+ハセガワ,カツトシ
+フジタ,マサユキ
+アンラク,マサコ
+ハシモト,ノブユキ
+イナダ,レイコ
+ユゲ,マサヨシ
+イマダ,イズミ
+サカモト,カズヒサ
+トヨナガ,ヤスヒロ
+ハシモト,テツオ
+ハナイ,ヨシノリ
+シミズ,タツオ
+ナカムラ,ヨシハル
+カジムラ,ヨシヒコ
+イシガキ,ケンゾウ
+ハットリ,マサオ
+アマノ,リョウ
+ミカミ,カオル
+フルテラ,マユミ
+マミヤ,ヒデキ
+ツルノ,ムツコ
+アサイ,ヤスキ
+ノムラ,シゲオ
+ヨコヤマ,シンジ
+イケダ,ユタカ
+アンドウ,アキオ
+オカヤス,ヤスコ
+ゴトウ,ヒデアキ
+カワシマ,タカコ
+ハギワラ,エリ
+アタラシ,ユミコ
+タカヤマ,トシヒト
+ニシヤマ,トシユキ
+エチゴ,シンイチ
+ヤマザキ,ヨシヒロ
+ムロヤ,テツオ
+キムラ,ユキオ
+ナカハラ,フミオ
+ウエノ,タカシ
+ヨシダ,ケンタ
+ツカモト,タダシ
+オザキ,トオル
+アシカワ,ヤスシゲ
+ネギシ,トモノリ
+キュウノ,シュウイチ
+サトウ,ヨシヒデ
+イノウエ,カズヒコ
+キクズミ,マサル
+マツモト,ダイサク
+ハヤシ,タカオ
+フクオジ,カンジ
+ナルセ,ケンタロウ
+マツモト,マサキ
+モリ,マサシ
+ミキ,ノブオ
+ナカタニ,ヨシアキ
+ミヤガワ,フミノリ
+アリヨシ,イクオ
+シライ,ヨシユキ
+ミナミ,マサヨシ
+トリゴエ,フジオ
+コスガ,タダシ
+ツジノ,カズヒロ
+オグラ,ヤスヒロ
+オリタ,チカシ
+アミモト,ジュンイチ
+オサカ,トオル
+ハヤシ,ヨシヒロ
+ミナミ,ミノル
+ヨシダ,トシヒコ
+ニシハラ,ヨシオ
+オクガワ,マサトモ
+ツジ,テルユキ
+ナカイ,タカシ
+ニシムラ,ツグオ
+ニタナイ,ケンゴ
+クドウ,ヒロシ
+サイ,タカオ
+ショウ,マナブ
+イノウエ,カオル
+タニグチ,ヒロタネ
+ナカニシ,シンジ
+オオモリ,ヒロユキ
+クマガイ,タカユキ
+イシアイ,トヨカズ
+ハギハラ,カズノリ
+タガタ,ケンジ
+スズキ,ミチオ
+クボ,ゼンサク
+カナウチ,シンヤ
+ニシオ,ヒデキ
+イナダ,ヒデノブ
+タケイチ,シンジ
+アンドウ,マコト
+マツナミ,ショウイチ
+ミナクチ,シュウサク
+カナウチ,ナオキ
+オオイヤマ,ノボル
+マスダ,ショウジ
+ヤギハラ,トシオ
+ミズノ,ケンジ
+ノブクミ,トオル
+ナダ,タカアキ
+タケタニ,フトシ
+イマイズミ,イチロウ
+イナダ,イサオ
+イマニ,タカフミ
+オキ,マサヒロ
+フクシマ,ヨウスケ
+イイオ,ヒロトモ
+イシダ,カツヤ
+ヒラタ,コウジ
+イタガキ,カズヒロ
+ヤマフク,サトシ
+サトウ,ノリオ
+ナカガワ,リョウ
+オサカ,シュウイチ
+オイカワ,ノブアキ
+カシオ,ヨシヒロ
+ホシザキ,シゲキ
+セキジマ,コウジ
+オカマエ,ノリヒロ
+サトウ,タカシ
+コイデ,タカナオ
+タカハシ,セイジ
+オガワ,コウイチ
+テラシマ,タクオ
+ヤマシタ,マサアキ
+ノセ,ヒデユキ
+マツマエ,アユミ
+ヨシタ,ノリアキ
+ムラタ,トオル
+ハラ,ノリヒコ
+ヤマウチ,ケンジ
+カミ,カツユキ
+スガイ,タツユキ
+タカノ,ヨシノブ
+トコロ,ヨシヒロ
+スズキ,ススム
+ササキ,アツユキ
+ツノダ,テツロウ
+ヤマサキ,テツヤ
+ミウラ,カツミ
+オダギリ,アツコ
+ハヤシ,シンチョウ
+トミオカ,ヒトシ
+イグチ,セイイチ
+コンド,タカシ
+クボ,ヒデオ
+クラヌキ,キョウコ
+トミマツ,ナオコ
+クロカワ,マサアキ
+ノザワ,スミオ
+カワサキ,クニアキ
+タケダ,カツヤ
+シノハラ,アキヒロ
+フルヤ,シゲル
+ナカムラ,サトル
+ヤジマ,トオル
+ニシガキ,キヨシ
+ナカガワ,ソウ
+ヒラヤマ,シュンイチ
+ヤマグチ,ムツヒロ
+ヨシムラ,ユウジ
+ツダ,タカユキ
+カツライ,ワタル
+ミナイ,トシカズ
+タキグチ,カズオ
+ワケベ,ヨシヒロ
+ニシカワ,マサヤ
+シラガキ,ヒロアキ
+ババ,マサカズ
+アカリ,リョウジ
+アベ,タクヤ
+カイ,クニヒロ
+オオモリ,ヒデカツ
+スズキ,タカシ
+ナガサワ,ヒトシ
+サワダ,エミコ
+アズマ,ノブユキ
+オノ,ヒデキ
+カワニシ,ノブヒデ
+マナベ,カズヒロ
+アリヤマ,ユウジ
+ニシカワ,キヨシ
+アツミ,シュウジ
+イトウ,ヒロユキ
+ヒロタ,トシヤ
+ホカゾノ,カズト
+ホシノ,ヤスヒロ
+ヤマグチ,マコト
+アガタ,コウジ
+マルオ,ヨシユキ
+コイデ,ヒロアキ
+カミムラ,マサヒデ
+サイトウ,ナオキ
+フクミツ,アツシ
+ヒラヤマ,ヒカル
+サイトウ,テツヤ
+イケオ,ミノル
+フルカワ,ジュンイチ
+イイダ,ヒロアキ
+ミヤザキ,モトヒロ
+ヨシダ,ヤスユキ
+キクタ,エリコ
+チバ,テツオ
+トリヤマ,リツオ
+エザワ,リュウタロウ
+オオバ,ヨシタミ
+ヤマモト,オサム
+ニシカワ,マサノブ
+エンド,マサハル
+フクイ,オサム
+ハマノ,ヨウイチ
+キタハラ,ケンジョウ
+サトウ,ユキヒロ
+マツオ,マサフミ
+トヨタ,ヒデヤ
+ヒラモト,トシヒデ
+ヤマモト,コウタロウ
+ハマダ,マユミ
+イワカミ,ミノル
+クボ,テツオ
+エンド,カズヒロ
+カゲヤマ,マサノリ
+ニイヤ,トモユキ
+コウチ,ユウスケ
+アダチ,シゲユキ
+ハヤシ,シュンジ
+ナカノ,マコト
+イシハマ,マサヒロ
+コクボ,リュウイチ
+カワノ,ハジメ
+ナカジマ,ノリヒコ
+タイラ,ツヨシ
+タケギ,リツオ
+モリシマ,トモコ
+ナカムラ,ヒロアキ
+ノグチ,ヒロキ
+アラキ,ヤステル
+アラ,ヒロシ
+イトウ,ナオコ
+ハヤサカ,フトシ
+コツカ,マサカズ
+タケウチ,ヒロシ
+イワタ,タカシ
+マエダ,ヨシオ
+ホソカワ,マサヒロ
+アライ,ヤスヒロ
+オオクラ,カンジ
+タケコシ,アツシ
+ヤマグチ,ケンジ
+シミズ,カツトシ
+イトウ,ヨシツグ
+イズミ,カネミツ
+ゴトウ,ソウタロウ
+オオツボ,カズミ
+カミコガワ,シンイチ
+タケイ,サトコ
+ミヤハラ,マサシ
+アワジ,アツオ
+ウシロダ,カオル
+モリイズミ,ハジメ
+ナガノ,アツシ
+タナカ,ムネユキ
+フカエ,ケンジ
+フルヤ,ミサオ
+ミズヒキ,ヨシオ
+クボ,ミツヨシ
+タグチ,フミアキ
+ナカオ,ツギト
+ヤマシタ,ユウイチ
+クロキ,ショウゴ
+マツダ,ケンイチ
+オダジマ,ナホミ
+ホリ,ユキオ
+タニグチ,ツネヤス
+アライ,トシノリ
+ゴトウ,テツジ
+トネガワ,ノリユキ
+モリタ,タカコ
+フルカワ,シゲオ
+ユキ,ヨシノリ
+シライシ,タカヒロ
+イケヤ,サチコ
+ワタナベ,タツオキ
+タニグチ,コウイチ
+マスダ,シノブ
+ミズグチ,ジロウ
+ハヤミズ,ユミ
+ホカリ,アキヒコ
+イシイ,ノリヒコ
+シライシ,マサヒコ
+シモカワラ,シゲヒロ
+モリモト,トモコ
+イトウ,ヒロシ
+オオヤ,ケイジ
+ミヨシ,ミノル
+シバタ,ノリヒロ
+タンザン,トモヒコ
+イワサキ,ヒデカズ
+フクイ,サトシ
+モリバヤシ,カズヤ
+ヤマダ,ヒデミ
+フジワラ,サトシ
+ナツメ,ヤスト
+シノハラ,ヒロシ
+オサダ,マサシ
+フジハラ,タケヒト
+フジモト,ヒロミ
+キノ,ヨシオ
+ヤマモト,モトキ
+イシジマ,モリヒロ
+イガ,アキラ
+ナカエ,ダイジ
+ヤノ,ユウジ
+カナミツ,オサム
+スズキ,テルオ
+タカダ,リョウコ
+イシバシ,ヒロユキ
+オオツボ,ミツハル
+スギ,タカシ
+ハヤシグチ,ヒロシ
+テラシタ,カズオ
+シモヤマ,ヨシフミ
+ミヤザキ,ミツル
+モリ,ヤスヒロ
+ヤマモト,ヒトシ
+デアイ,キヨヒロ
+ホリ,トシユキ
+アネザキ,カズオ
+クボタ,タカヒロ
+ゴ,マサトシ
+ヒキダ,ヒロシ
+サカグチ,ノリアキ
+ヨシイ,タカシ
+キタハラ,カツト
+フジイ,ミドリ
+ナメキ,ヤスコ
+ヨシムラ,トシオ
+タムラ,ダイスケ
+ウミノ,ヒロシ
+アンドウ,ヒロシ
+ヨシモト,タケシ
+ネモト,ヨシフミ
+ミヤザキ,マサヒコ
+タカモリ,チエコ
+クマガイ,クニオ
+ゴウダ,コウタロウ
+ハタ,コウイチ
+クズミ,サチコ
+ナツイ,イクオ
+シマダ,ヒデオ
+オオツキ,カズヒロ
+マミヤ,ヒロカズ
+サトウ,ケンジ
+コバリ,ヒデユキ
+ササキ,ヤスユキ
+カネコ,マサキ
+オノ,トオル
+オオヤマ,ヨシエ
+マトバ,マサハル
+イタクラ,ジュンイチ
+オダシマ,カツロウ
+シイキ,ノリコ
+シバタ,カズヒロ
+カツラ,チカコ
+アライ,ヨシノリ
+サイトウ,ツヨシ
+マツモト,マサノリ
+ウエヤマ,ミツナリ
+マノ,シンイチ
+ミサオ,ナオキ
+ソノベ,キミユキ
+スズキ,アキオ
+ヤタニ,キョウコ
+ムタ,マナブ
+マルヤマ,フミアキ
+フダ,タカヨシ
+コバヤシ,ケイイチロウ
+ワタナベ,カオル
+オダ,マコト
+オフチ,マサオ
+タナカ,シゲオ
+サワキ,マサシ
+サイトウ,ヒロシ
+ハギノ,ノボル
+ウシヤマ,タカシ
+オクヒラ,ノブヒロ
+ヨシイケ,サナエ
+コンノ,ユウコ
+ノダ,トシオ
+エンド,トシユキ
+スズキ,ミツオ
+タナカ,ヨシヒロ
+キド,ケイジ
+イトウ,マサノブ
+フジワラ,トシハル
+ハセガワ,アキラ
+マスモト,ケイジ
+カイ,ヒトシ
+タカハタ,トモコ
+ヒデシマ,カズノリ
+タカヤマ,シゲキ
+ミヤキ,ユタカ
+フセ,カズヒコ
+モモイ,ヒロヤス
+ツユキ,ミツグ
+カワハラ,シゲル
+マツイ,アキヒロ
+ハナワ,マサヒロ
+ヒワダ,テツヤ
+マスイ,タカシ
+カトウ,タダツグ
+タケマ,フミオ
+シライシ,ヨシオ
+フルカワ,ショウイチ
+テジマ,アキラ
+アキモト,サトシ
+スギヤマ,ヒロアキ
+ナンブ,ユキヒロ
+ツジノ,ケン
+テラサカ,イッシン
+サカイ,ヒデアキ
+クボ,アツシ
+マルタニ,マサヤ
+タカハシ,ミノル
+マツウラ,シンヤ
+タナカ,センジ
+ユザワ,タカアキ
+タカハシ,カズヤ
+オオバ,シンゴ
+マエカワ,トオル
+ニワ,トオル
+カワムラ,マサキ
+コイケ,カズエ
+クリシタ,トシユキ
+ヒロセ,オサム
+コンノ,タクヤ
+ハセガワ,ヒロヒコ
+イトウ,ヒロシ
+キザキ,アツシ
+エナミ,ノリアキ
+ツカナカ,フミアキ
+サカモト,ヒロミ
+マツバラ,ヒデオ
+テライ,シゲアキ
+オシタ,タカヨシ
+タナカ,ヨシアキ
+ヤマモト,マナブ
+イシグロ,ヨシト
+ハシモト,スミコ
+サトウ,ヤスヒロ
+ヤマモト,トオル
+フルカワ,トシノブ
+ヤマダ,ヒロト
+イクタ,ショウコ
+サトウ,ユウイチ
+ワタナベ,カズヒロ
+カコ,タツジ
+マスダ,ヒロノリ
+カミジ,タカユキ
+イハラ,カズヒロ
+アサミ,カズヒロ
+ナカジマ,タカシ
+コタキ,テツヤ
+カワモト,エイイチ
+カワシマ,カズヒコ
+アズマ,リュウジ
+ナカノ,シュウイチ
+ヒラノ,サトシ
+タカハシ,マサル
+フカヤ,モモキ
+オオバ,タケシ
+サクライ,ヒロアキ
+サカイ,イッセイ
+アオキ,タクオ
+ヨシダ,ヤスシ
+コハシ,マサノリ
+マツウラ,テッペイ
+サトウ,オサム
+ニシキオリ,トモコ
+ミヨシ,ヨシヒサ
+コスギ,ツカサ
+サトウ,タカイチ
+フジイ,ヨシヒロ
+フナダ,カズヒコ
+スギタ,トオル
+ショウダ,カズヒロ
+モリシタ,トシオ
+ヒラ,ヒトシ
+シンタク,ヒロユキ
+ヒガシダ,トシユキ
+クリタ,マサヨシ
+イナダ,ユウサク
+ニシノ,トシヤ
+イケジリ,ノリアキ
+ナカムラ,ナオヒロ
+ナカカド,ヨウイチ
+イノマタ,ヒロシ
+ツルミ,ヒロヨシ
+ヒラモト,シゲキ
+ミヨシ,フミアキ
+アワノ,タカシ
+アキタ,ヨシエ
+ヒガシヤマ,タケシ
+サトウ,ヒロミ
+カワサキ,ケイイチ
+マルヤマ,ハツオ
+スナガ,ヒデキ
+イマイ,タミコ
+フジイ,ユキオ
+マキタ,ミツオ
+イトウ,タツシ
+タカハシ,リュウイチ
+キリマ,シンジ
+オオニシ,トモユキ
+ミノシマ,タケヒト
+サトウ,カズタカ
+ヤマシタ,タカユキ
+ミタムラ,マユミ
+サトウ,シゲル
+トマツ,タマミ
+エビシマ,ヤスユキ
+ワダ,カズヤ
+スズキ,キヨタカ
+スガハラ,ミツル
+タグチ,ヒロム
+トガシ,マサヒコ
+ナガハラ,サトル
+ヤマモト,ケイコ
+タケダ,マサユキ
+サトウ,ミノル
+タカミヤ,ヒデノブ
+アオキ,タカヒロ
+コヤギ,スミタカ
+オノザキ,リョウスケ
+モリタ,ノリコ
+サクラギ,ユミコ
+オカサカ,ヒロノリ
+ヤマグチ,コスケ
+カワシマ,ヨシノリ
+イワノ,カズノリ
+ゴウコ,ヤスハル
+モリタ,ヤスジ
+シゲタカ,ナオキ
+テズカ,エイサク
+オタ,ツヨシ
+ヤマダ,マサハル
+フカダ,ヒサユキ
+ハセベ,モトアキ
+マツノ,アツシ
+ツジカワ,ケンイチロ
+マツモト,カツミ
+セノオ,ハジメ
+ノムラ,サトシ
+アライ,トヨシゲ
+オグリ,スミエ
+ジンノ,マサヒロ
+ヒロズミ,ミノル
+マツイ,ススム
+シバザキ,アツシ
+イノウエ,ヒデオ
+タナカ,ヒデカズ
+サソ,ナオフミ
+シラハマ,アキヒコ
+タナカ,ナオキ
+ナカムラ,ヤスヒロ
+イシガミ,ヨシアキ
+シバタ,テッペイ
+ノグチ,アユミ
+イチバ,コウジ
+カワグチ,ヒデコ
+ヨシミ,ヒデミ
+フジカワ,ヒロユキ
+カトウ,ツヨシ
+タカハシ,イサム
+フジサワ,カズオ
+ミズタニ,トモフミ
+セキグチ,ヨシロウ
+マエカワ,ムツミ
+アライ,リュウジ
+モリ,ケイタロウ
+サトウ,ナオコ
+クワタ,ショウイチ
+オグリ,ヒロシ
+ヒライ,カツヒコ
+ニシムラ,フミトシ
+オオクラ,ヒサノリ
+ソノベ,アキコ
+イイダ,ヤスアキ
+コグチ,エイイチロウ
+モロホシ,ヒデカズ
+ハマダ,ノリカツ
+カナザワ,カズユキ
+マツバ,シゲル
+イワタ,ヒデトシ
+アズチ,マサル
+コンド,イサオ
+タカハシ,ヨシオ
+アマノ,ヒロアキ
+カタダ,オサム
+タメヒロ,モトコ
+マツダ,タカシ
+ナリイシ,ヤスヨシ
+オキタ,モリミチ
+ヤマシタ,ヒロシ
+スズキ,ユウジ
+マンポ,カツミ
+イチイ,ケンジ
+コイデ,トモコ
+タカハシ,ナオコ
+ナカガワ,カズオ
+オハマ,タカシ
+タカハタ,ヒロミ
+コグチ,タカシ
+ミヤガワ,カズヤ
+シバヤマ,ハジメ
+アライ,ヤスヒロ
+ワタナベ,ススム
+ナカムラ,ユタカ
+フルハタ,マサナリ
+タニグチ,ナオスケ
+ホンダ,ススム
+マツモト,アキヒロ
+タカキ,ハルミツ
+キクチ,シンヤ
+イノウエ,コウイチ
+ハラ,マサオ
+ヤマモト,タカヒロ
+ムラカミ,トモヤス
+ババ,マサヒコ
+ハセガワ,トシヒコ
+ササキ,アキフミ
+アツタ,ヒトミ
+タチカワ,ヒロツグ
+ヒラモト,ヒデアキ
+ナカムラ,トシヤ
+ツムラ,タカオ
+タカハシ,ソウイチロウ
+ヨコヤマ,ミノル
+コタケ,ミツオ
+アンラク,タカシ
+ミズノ,シンイチ
+オオヌキ,アキラ
+サカイ,ハジメ
+オタ,ショウゾウ
+ハヤシ,ノリオ
+サイトウ,アキヒロ
+タナカ,ノリコ
+ハルハラ,トウゴ
+オオツカ,マサユキ
+キタガワ,ヒデミ
+ヨコタ,カッペイ
+ヨシムラ,アツコ
+オオヒラ,シンイチ
+チャキ,シゲヒデ
+サカグチ,コウイチ
+スズキ,アキヒロ
+チカザワ,マユミ
+ナカジマ,マサノリ
+ワタナベ,タダオ
+シバ,ジュンコ
+サカイ,チハル
+ヤマミサカ,テツオ
+ヨシガミ,アキラ
+ヒラテ,マサユキ
+ワクシマ,タダシ
+アサマ,チカラ
+アズミ,タダシ
+イナオカ,ヒロカズ
+サナイ,ヒロシ
+ヤマウチ,ヤスヒロ
+イハラ,トシヒコ
+タヤマ,オサム
+ササキ,シンヤ
+フジウチ,トシアキ
+ウシジマ,シンイチ
+ノノムラ,マサタカ
+ニシ,タケヒロ
+イケダ,ヒロミ
+スギタニ,ヒロシ
+オザキ,タケシ
+コケツ,アキヒサ
+サトウ,ヨウスケ
+センバ,アツシ
+アズマ,ヒデト
+ナオイ,イチロウ
+ホシノ,ヨシキ
+カミヤ,ヤスヒロ
+ムラタ,ヒトシ
+イチミヤ,ケイコ
+タルイ,ヤスアキ
+ハギハラ,ミワコ
+タカハシ,タカシ
+オチアイ,ヒトシ
+アキヤマ,ケイスケ
+キムラ,ヨシヒロ
+ハヤシ,ヒデオ
+ヤマグチ,ミツル
+トコロ,ナオタカ
+カスヤ,エツコ
+イリエ,シュウジ
+ムライシ,ミナコ
+シンタニ,リュウジ
+ウエノ,ミホ
+ウチダ,コウジ
+ハセガワ,
+クロダ,ルリコ
+イトウ,カツヒロ
+ホリウチ,マヤ
+オオハタ,ノブアキ
+ホンダ,ヒデユキ
+ナカムラ,ススム
+サエキ,オキモリ
+アベ,テルヒサ
+ウメダ,タカヒロ
+ヌマ,マサユキ
+タブチ,ユタカ
+キムラ,ミツル
+ウダ,タカミ
+アオキ,ノリコ
+ナカムラ,マサト
+フジコシ,サトシ
+スミダ,キヨシ
+クズハラ,ノボル
+ワタナベ,ヒロシ
+アラタ,サトミ
+ロッカク,マユミ
+イノウエ,ミツマサ
+ツジモト,マサミ
+ミウラ,ナナコ
+ネモト,ヨシオ
+アメミヤ,ヨシカズ
+ナカムラ,ヒロユキ
+アイバ,ノブタカ
+ヨネザワ,シンヤ
+フジムラ,シュウ
+リュウト,ヒロミ
+ワタナベ,トモミ
+キタガワ,シンジ
+アタラシ,トモナオ
+キクチ,ジュン
+スズキ,アキラ
+タナカ,ヒロシ
+イケダ,ヒロナリ
+ヨコカワ,ミツヒコ
+クサツグ,タカシ
+ミズノ,ケンジ
+ナガホリ,コウイチ
+スギモト,コウジ
+アンドウ,ツネオ
+タカヤナギ,ヒロフミ
+シバ,マサコ
+カミヤマ,カズヒロ
+オオヒラ,ヒロミ
+ホンマ,ハルユキ
+タバタ,ノブヨシ
+エンド,ケンイチ
+イシガキ,セイジ
+シバ,ユウイチロ
+ヤマダ,マサヒト
+タカノ,カツオ
+ヨシダ,タツヤ
+アマサキ,トシヒコ
+オシカワ,シンジ
+ニシノ,ミホコ
+カトウ,オサム
+ハマオカ,トモコ
+サノ,タカカズ
+スエシゲ,クニテル
+ナカタ,ヒロミ
+コバヤシ,ヒデユキ
+スドウ,ヤスシ
+ツツミ,キヨヒト
+ミタニ,コウジ
+イシダ,ヤスフミ
+イイズカ,ユタカ
+シライ,ユミ
+ヤマダ,イワオ
+ツジカド,カズコ
+マツナガ,コウイチ
+タナカ,カズエ
+ミナミ,ヒロシ
+サカイ,マサユキ
+ウエキ,シオリ
+オダ,マサオ
+マエダ,セイジ
+デキタニ,ジュン
+アマノ,タカヒロ
+ミヤコシ,シゲカズ
+アンザイ,トシミチ
+ウメダ,ユキオ
+タキザワ,アツシ
+ムラニシ,キヨシ
+クリハラ,トシヒコ
+ヤマサキ,マリ
+オオツカ,ミツヒロ
+アミノ,タカシ
+モリ,ヤスノリ
+ニシモリ,シンジ
+タケノ,マサオ
+シンガキ,ヨシカズ
+マツオ,ヨシキ
+フジネ,マサキ
+カナマル,ヒロヨシ
+カナザワ,タツユキ
+シミズ,リュウジ
+ワダ,イツコ
+イシクラ,タケシ
+フクダ,アキヒロ
+ウカイ,ヨシコ
+アリマ,オサム
+オオタ,タカアキ
+モリタニ,タカシ
+アダチ,ヨシヒロ
+クマデ,マサノリ
+アラ,ススム
+ハシモト,トオル
+トヨオカ,マコト
+オオツ,テツロウ
+ミヤキ,ケイイチ
+イシカワ,ジュンイチ
+イガラシ,ナオツグ
+オオニシ,キンヤ
+シライシ,コウイチ
+ヨコメ,ヨシアキ
+フジモト,カズヒロ
+カンノ,モリヤス
+タチバナ,ミチオ
+ヤマダ,チナミ
+アサミ,シゲオ
+ミウラ,ヤスシ
+トクヒロ,ヒロノブ
+モリカワ,マサノブ
+イトウ,ミキヒサ
+サノ,トモミツ
+スズキ,マコト
+シモトノ,マナブ
+マカベ,サトミ
+イトウ,コウジ
+ツクダ,ジュンジ
+ヨシカワ,ミツグ
+タカヤナギ,ヒロキ
+ホンダ,タカヨシ
+ニシノ,ユウジ
+キムラ,ヨシヒロ
+カトウ,コウイチ
+オオハタ,ジュン
+ウツミ,カズヒコ
+アンドウ,カズヒサ
+ハマタニ,ミノル
+キノシタ,タカフミ
+カワセ,トシタカ
+ウエノ,ヨシヒコ
+シカマ,リョウジ
+スズキ,マサユキ
+フジオカ,マサヒロ
+イノウエ,トモヒロ
+キタザキ,ヤスユキ
+アイベ,ヒロシ
+オオカワ,サカエ
+タケイ,ヤスハル
+カラハシ,ヒロシ
+スズキ,マユミ
+アライ,ヒロシ
+イノダ,ノリユキ
+オクムラ,エリ
+マルイ,ジュンコ
+ヒロズミ,アキヒサ
+ワシズ,タクヤ
+ヨシムラ,タカヒサ
+カツマタ,タカシ
+マスカワ,カツラ
+イワオ,シュウジ
+ヤマモト,ヨシヒト
+タナカ,サトル
+タケウチ,ノリユキ
+ノハラ,シュウゾウ
+フナハシ,カズノリ
+ナゴシ,ケンジ
+ウメダ,カズヤ
+アキヤマ,ヒトシ
+ナカダ,マサト
+サイトウ,メグミ
+タハラ,ジュンイチロ
+ニシマツ,ヨシヒロ
+ヒラミツ,マコト
+メカタ,マサル
+タカミ,リュウタロウ
+ソノダ,ヒデユキ
+ミヤザキ,ユウジ
+マルヤマ,ヒデアキ
+ツノカワ,マサシ
+ハラダ,カツミ
+ツジ,ツグヒコ
+イガラシ,トシオ
+ヨシダ,カオリ
+タケガタ,コウキ
+アベ,リョウジ
+アカヌマ,トクヒロ
+カワダ,ヒロアキ
+タゴ,ヒロシ
+カミムラ,マサシ
+マツヤ,ゲン
+イワタ,アキヒコ
+マエカワ,サトシ
+ヤマグチ,レイコ
+シロシタ,トモヒロ
+ヤマシタ,マサト
+ツジカワ,ジュンイチ
+タナカ,ヨシフミ
+ミナミ,トモヒロ
+サトウ,ヨシアキ
+ウオズミ,アキラ
+スギヤマ,ヒロユキ
+チバ,マサユキ
+カナイ,サトシ
+マツヤマ,ツヨシ
+タカノ,アキラ
+クマガイ,コウイチ
+タケコシ,ムツヒサ
+フタバ,トシアキ
+ウメザキ,カズタダ
+オイワケ,ヨウスケ
+ナガツカ,マナブ
+イマガワ,ヒトミ
+ハシモト,アキラ
+オオヒラ,ユウタロウ
+ミヤヒラ,ミチアキ
+ノグチ,ケイゾウ
+スギモト,カズフミ
+カワグチ,カツノリ
+シノセ,ツヨシ
+ナリサワ,ヨシヒト
+ヒロセ,アキヒロ
+ニシザキ,ススム
+モリ,ノブユキ
+フカオ,ヨシコ
+ミヤジマ,ケイゾウ
+マツノ,カズシゲ
+イワイ,シゲノブ
+カイ,ミドリ
+タナカ,クニコ
+チバ,マサミ
+ソノ,ヒロシ
+ヨコヤマ,アキヒサ
+タカシマ,ジュン
+オカモト,コウジ
+ミヤカワ,ダイスケ
+ムラモト,トモアキ
+キムラ,コウイチ
+マツナガ,ユミコ
+フクダ,ツトム
+オオニシ,マサシ
+アイ,ヒデカズ
+マエダ,ヒサカズ
+イノウエ,ヨシミ
+イイダ,タカヒサ
+フジイ,ヒロユキ
+サクライ,タクヤ
+マツイ,ウイリ
+イマダ,シンジ
+ミヤケ,アツシ
+サカイ,ヒロヒサ
+カトウ,オサム
+イワタ,ナオト
+オオノ,マサヤ
+イソベ,タカヨシ
+オヤマダ,ツトム
+トウジマ,タツヒロ
+タケウチ,カズヒコ
+ナカヤマ,マスオ
+シライシ,オサム
+カノマタ,アツシ
+スドウ,タカヒロ
+シラヤマ,アキヒロ
+オオヤ,マサル
+ミナガワ,トモヒロ
+キムラ,タツヤ
+タカギ,ダイゾ
+サトウ,ユキオ
+フジワラ,ミツル
+イモト,ヨウタ
+ウエノ,トモヒロ
+キョウノ,ケンゴ
+キリウ,ヨシタダ
+クボタ,ツネオ
+コセキ,タカシ
+スザキ,マサヒロ
+タカサキ,ヤスヒサ
+ツカモト,シンイチ
+ナイトウ,ケンジ
+ナカゴメ,ヒロカズ
+ナカムラ,ヒデヤス
+ハギワラ,カツミ
+マツモト,カヨコ
+コンノ,ヨシヒサ
+サイグサ,タモツ
+ホンダ,ユキオ
+タナカ,ヒロシ
+マツトミ,カヨコ
+アカサカ,ヒロアキ
+センガン,アキヒデ
+タケオ,ノリカズ
+ムラタ,ヒロユキ
+カワセ,トモヒロ
+ニシザキ,タツユキ
+ヘイトウ,エイイチ
+オオサワ,マサハル
+ウエダ,ヨウイチ
+カナヤマ,ヤスヒコ
+ハラダ,トモユキ
+ナカガワ,アツシ
+ミヤモリ,マコト
+カイ,ケンジ
+キグチ,シュウジ
+サタケ,ケンジ
+オオオカ,トシロウ
+ナカザワ,コウジ
+ヤスオカ,マサヒデ
+クロミツ,ヤスタカ
+カナダ,ヒデキ
+マルカワ,ヒデキ
+ナガサワ,タケユキ
+コバヤシ,シュウ
+エンド,マサノリ
+インナミ,ハルオ
+ヤマモト,キヨタカ
+ナガクラ,サトシ
+ウエノ,マチコ
+ニシザカ,ミカ
+サトウ,テツロウ
+モリヤマ,タツオ
+コハヤセ,シゲオ
+ドイタ,ヒロシ
+ホソカワ,ノブオ
+アオキ,ミツイ
+マスミダ,トモヒコ
+オチ,マサイチ
+スズキ,ケンジ
+スギヤマ,ケンイチ
+フジワラ,セイヤ
+タナベ,ミツユキ
+トダ,アツシ
+ツボイ,ヤスオ
+スギタ,マサノリ
+アダチ,ケイタ
+フジイ,マサキ
+スガモリ,ヒロシ
+ヤスダ,ナオヒコ
+タカハシ,ヒロユキ
+タガミ,マサル
+トミヤマ,ユウジ
+ハネダ,ヤスユキ
+オザキ,タケシ
+オグラ,ヤスユキ
+テラサキ,ノブヤ
+ツチヤ,エツコ
+オカダ,テルオ
+アベ,ノブユキ
+アベ,ミツエ
+モリワキ,コウイチロウ
+ハヤノ,ケンタ
+トミナガ,ジュン
+スズキ,ミキ
+カタギリ,サトシ
+アハラ,ハヤト
+ホシ,ナナコ
+イシカワ,タツヤ
+シモムラ,ヨシヒサ
+ワキモト,ミユキ
+カワテ,タカシ
+アブラカワ,カズオミ
+ヨシタケ,タカシ
+イシダ,マサユキ
+ホンダ,トシロウ
+シタマ,ヨシオ
+ノグチ,タケシ
+ミズイ,アヤオ
+アンドウ,ナオフミ
+ヨネシマ,ナツミ
+アキタ,ジュンコ
+ウエ,アツシ
+スギ,コウイチ
+ナカジマ,マリ
+カサオカ,トシヒコ
+ノダ,テツフミ
+マツザワ,コウイチロウ
+ワタベ,タツオ
+アイザワ,ケイジロウ
+イワサ,シン
+コガ,アキヒコ
+ヒガシタニ,ヒデフミ
+イケダ,トシヤ
+アキナカ,ヤスハル
+フジタ,カズヤ
+ヤマオカ,ヒサタカ
+ワチ,セツヤ
+ウエノ,ケンタロウ
+ウシキ,カズイチ
+ヤマモト,ハルヒコ
+カトウ,マサトシ
+ナガイ,タダヒロ
+フクダ,アヤコ
+ナカタニ,エミ
+ヒラサワ,ナガコ
+ミヤザキ,マサル
+テラシマ,ムネカズ
+アライ,チガ
+タナカ,シンイチ
+カネコ,タカアキ
+サトウ,テツジ
+ナリタ,シュウイチ
+ナガシマ,ジュンイチロ
+サカノ,トシオ
+ミウラ,サトシ
+ヤマグチ,ケイ
+オデラ,ナオトシ
+アベ,アツシ
+コダマ,カズヒロ
+ヤマモト,ヒロユキ
+オシマ,トオル
+イシズ,ツトム
+カンバヤシ,ユキオ
+オオカワ,ヒロユキ
+ヒエダ,タケヒコ
+イノマタ,ヒロミ
+マキタ,トシヤ
+ガナハ,タカユキ
+ハヤカワ,ヒロユキ
+アカヌマ,テツヤ
+ムロカワ,マサノリ
+オノ,ケイスケ
+キムラ,ショウゴ
+ハタザワ,ヤスコ
+フジタ,マサキ
+ウエダ,ダイスケ
+ヤマノウチ,イサオ
+フルタ,ヨシヒロ
+オクヤマ,ケンイチロ
+イトウ,フミオ
+オサナイ,セイイチ
+コタニ,タケシ
+オオツカ,タダアキ
+フクシマ,コスケ
+イイズカ,ケン
+ワタナベ,テルアキ
+モリタ,ケンイチロ
+カトウ,ヒロキ
+ホンダ,トシアキ
+カトウ,アキノリ
+アサヌマ,ヤスヒロ
+アズマ,マサオ
+テラサワ,ミツオ
+アカシ,ツネオ
+カトウ,ナオト
+オノサト,タカシ
+ナカムラ,ヒロツグ
+ノムラ,ヒデミ
+イノウエ,エイイチ
+ハヤシ,シンイチ
+タムラ,ガク
+サカイ,スエノブ
+スギムラ,リョウ
+トミヤマ,ケイ
+カキザワ,トシアキ
+ニシタニ,ショウイチロウ
+アサクラ,シンヤ
+イシザキ,サトシ
+マツモト,シンイチロウ
+ナガオ,トシオ
+キノ,リエ
+アベ,タスク
+ト,コウジ
+ヤマキ,コウイチ
+アライ,ゲン
+ヤマダ,ケイジ
+オクムラ,カズエ
+ハラ,ショウタロウ
+ヤマモト,カツヒサ
+ナカムラ,シンイチロウ
+アライ,カズヤ
+イケド,マサタカ
+イトウ,ケイジ
+イトウ,ユウジ
+ウリュウ,アキラ
+ウチヤマ,タダシ
+エノモト,ヒロミチ
+エズラ,トオル
+オオツカ,ケイスケ
+エニャ,ススム
+アカオ,ケイスケ
+オオニシ,ショウジ
+カガヤ,イナン
+カマタ,タカヒロ
+カワカミ,ノブヒサ
+ササキ,ヤスヨシ
+タカハシ,ナオヒコ
+タダ,コウイチ
+ニシノ,マサヨシ
+アサオ,ナオキ
+ハシモト,ナオキ
+ハットリ,タカコ
+ホシ,タオ
+ホリタ,シンイチ
+マエゾノ,ナルヒデ
+マエジマ,ミノル
+ミヤザキ,ユミコ
+アライ,ヨシミ
+モリ,コスケ
+マエダ,ヒロシ
+オチ,ケン
+アサクラ,ノリオ
+ウサミ,アツシ
+オクヤマ,タカシ
+カリヤ,タカヒコ
+ウエダ,ヒデユキ
+オタベ,ケイゾウ
+キムラ,イサム
+クシダ,ヨシハル
+アマハ,コウジ
+コンド,ヨシキ
+シミズ,ショウイチロウ
+スズキ,シュウコウ
+スン,スミオ
+タドコロ,ヒトシ
+トネサク,イサム
+ナカムラ,ヒロシ
+マスダ,ヒロオ
+ミヤザキ,ミハル
+ヨシナガ,アキヒサ
+ヨコカワ,タクマ
+ツチヤ,マユミ
+タカハシ,マサノリ
+タナベ,マサジ
+イトウ,ケイスケ
+ナガオ,シンイチ
+サトウ,タケシ
+タダ,トモヒロ
+アキモト,シュンスケ
+タムラ,マモル
+タムラ,カズユキ
+オカ,ミチハル
+サクラギ,ケンイチ
+スズキ,ヒロシ
+モリオカ,タダシ
+ヤグチ,ユウシ
+ミヤモト,サトシ
+シラカワ,ヒデキ
+オオツカ,ヒデキ
+ヤマモト,トモヤス
+ナカマチ,ヤスフミ
+ワカハラ,ヤスオ
+アキ,タカシ
+タキタ,カズヒロ
+アラカワ,ケイイチ
+マツオ,コウジ
+チョウ,ユウイチ
+クロダ,シゲル
+ヤマシタ,タロウ
+トモオカ,エミコ
+ナカオ,ワタル
+アソ,テルカズ
+フクダ,ノブタカ
+アオキ,ヒトシ
+クル,ヒサト
+ムラカミ,ヤスヒロ
+クロダ,タクヤ
+ミカミ,アキヒロ
+カミムラ,ヒロユキ
+キタジマ,ナオキ
+マルヤマ,ヨシヒサ
+サタケ,ケンイチ
+モテキ,タケシ
+トミタ,フキ
+ニワ,フミコ
+タカバタケ,シゲノリ
+アズマ,マサル
+フルヤ,サチコ
+ナス,ヨシヒロ
+コリ,マリ
+イケダ,マサヒロ
+ゴトウ,コウジ
+フクダ,ヒロユキ
+スガハラ,ジュンジ
+キムラ,トシヒコ
+タカセ,マリ
+ニシオカ,リョウ
+フルカワ,テツオ
+クドウ,ケンイチ
+タカハシ,ケント
+ヤマモト,ヨシヒロ
+ミヤモト,リョウヘイ
+ノタ,ユキヒロ
+ナカムラ,シノブ
+アキバ,ミヤ
+イワキ,マコト
+カトウ,シホ
+モリモト,マサカズ
+ナカムラ,カズトシ
+ナカヤマ,カズヤ
+オオタニ,シゲヒロ
+スギヤマ,ミノル
+スン,トヨユキ
+ヤマモト,ヒロシ
+ホンド,ユタカ
+ハガ,カクジ
+シオザキ,カズヒコ
+フジノ,ミノル
+オノ,ケンジ
+アンドウ,ヨシオ
+ヤマグチ,トシアキ
+クロダ,タカシ
+ウノ,リョウイチ
+イトウタニ,タケヒコ
+オカ,エツミ
+ミウラ,ノブユキ
+ハシモト,カナ
+エモト,マコト
+コガ,ヒロシ
+キハラ,ヒロシ
+マツダ,フミタダ
+ヤマダ,アキコ
+タカハシ,ヨウイチ
+ヤハタ,ヒデオ
+タザキ,ケイタ
+ヤマモト,リュウイチ
+タカダ,ヒロミ
+ノダ,マサツグ
+サイミョウ,カオル
+コバヤシ,アラタ
+フジキ,ケンジ
+シラサカ,フミオ
+タカハシ,トオル
+ヤツ,アツオ
+ウオタニ,フミヒコ
+タムラ,トシヒコ
+マツオ,サトシ
+ナカザワ,タクヤ
+キダ,ユキコ
+タンゲ,テツロウ
+ヒロセ,ススム
+マツシマ,ミチヤ
+オカノ,サトル
+アオキ,ヨウイチロウ
+ハセガワ,リュウジ
+ニシホリ,チカラ
+イシズカ,タカヤ
+ツボイ,ヒデユキ
+イシダ,マサル
+ハシモト,サトル
+ゴトウ,シンジ
+アキヤマ,ヒロキ
+ミツハシ,シゲル
+ゴシマ,カズオ
+フクダ,ヒロシ
+ヤマシタ,ナオフミ
+ナカザワ,ヒサシ
+ニシカワ,ヒトシ
+イケウチ,カズユキ
+タガミ,タカオ
+カワキタ,ケンジロウ
+ナカムラ,ガク
+コマイ,コスケ
+ホシヤ,アユム
+スミト,マサフミ
+ホシノ,カズオ
+ナカヤ,シンイチ
+ハラ,ミズホ
+ムロヤマ,カズヒコ
+モリ,ヒデキ
+シライシ,マサヒロ
+ヒラノ,コウジ
+ハシモト,ユウコ
+アベ,ジュンジ
+イシカワ,アリカツ
+アズマ,ヨシミ
+オオツカ,ノブオ
+イトウ,ケイ
+オシマ,チカオ
+コザイ,キヨヒロ
+カワカミ,マサトシ
+ナカノ,ムネヒコ
+ウジモト,マサヒコ
+キシダ,ヒトシ
+コイズミ,ノリコ
+ナイトウ,トシヒロ
+ヨシズミ,ヨシキ
+スギモリ,トシヒロ
+アオキ,トモハル
+タカハシ,コウイチ
+イガ,ノリカネ
+カワバタ,ノゾミ
+シバタ,ヒロヒデ
+ダン,マナミ
+タグチ,カズヒロ
+マチダ,トモオ
+アシダ,ユウコ
+アンドウ,テイジ
+ムトウ,カツノリ
+コヤマ,キヨト
+スズキ,ケイイチ
+ノムラ,ジュン
+イトヤ,マサトシ
+チカオカ,ツトム
+ジンブ,ミチヤス
+アダチ,マサシ
+カワイ,ヤスシ
+ミノワ,コウイチ
+アサヒ,トシアキ
+オオタ,ヨシアキ
+タナカ,キヨシ
+キラ,マサシ
+ヤマザキ,ミカ
+ヤマウチ,ミツル
+ホッタ,ヨシノリ
+アラカワ,シゲオ
+オクムラ,ジュン
+カネコ,イタル
+アヤノ,コウキ
+ハヤカワ,トモナリ
+イトウ,マサヒコ
+オクムラ,ヒサノリ
+タンザワ,タツオ
+サキノ,ヨシヒロ
+カワハラ,トオル
+タルイ,ヨシオ
+アリモト,アツシ
+エビコ,トモナリ
+ヒノ,カツヤ
+ヤマダ,ショウヨウ
+オオノ,クミ
+タケシタ,ユリコ
+ハヤシ,キョウコ
+イシダ,ケン
+シオヤ,タケシ
+アンドウ,ノボル
+マツバラ,マサフミ
+ニシダ,マサル
+ナカムラ,マサノリ
+イケダ,ジュン
+ハヤミ,ヒデオ
+スズキ,ショウゾウ
+オガワ,アキラ
+イシカワ,トシアキ
+アサミ,ケンジ
+ハタケヤマ,タカシ
+ホリミゾ,ケイスケ
+マルタニ,チヒロ
+サトウ,アキオ
+サカナカ,カズオ
+ナカムラ,トモヒコ
+イトウ,カオル
+フルナガ,ハルヒコ
+フクシマ,マサト
+ミズガミ,ヨシユキ
+タケウチ,ミチオ
+トリウミ,ミノル
+ネギシ,シゲキ
+コヤマ,アキノリ
+オシマ,ナスオ
+カタオカ,タカシ
+タキグチ,ヒデフミ
+コマツ,カズオ
+ヤギ,タカシ
+タカギ,ヨシオ
+マスイ,テツロウ
+ハヤシ,ヒトシ
+アネタイ,マサユキ
+キハラ,ケンイチ
+サイトウ,シゲオ
+キタワキ,ミチヒコ
+ノグチ,ヒロミチ
+サカグチ,モトイ
+ニシ,ユキミツ
+イケダ,テツオ
+サトウ,タカシ
+イマイ,マサヒト
+ヤマダ,シゲイク
+タナカ,ヤスヒサ
+オオサコ,マコト
+コムロ,カナメ
+サイトウ,ヒデキ
+スズキ,ケンイチ
+フナトガワ,ユカリ
+イシイ,テルアキ
+マツイ,ノボル
+スエヒラ,ヒトシ
+ヒロタニ,ヨシオ
+ヒガシ,キヨシ
+イムラ,アツコ
+アベ,ヤスノリ
+ヨネクラ,ノブトシ
+ワタナベ,ヨシミツ
+スガ,ヒロシ
+サノ,ヒロシ
+シバ,トモジ
+ヤマグチ,シュンジ
+キザワ,ヨシヒロ
+カサマキ,ヨシロウ
+キムラ,ケイスケ
+ツルミ,アキヒサ
+アオキ,ショウコ
+イシダ,モトシ
+モロ,アキオ
+オクムラ,ヒロユキ
+タカギ,コウジ
+イケヤ,ミチオ
+トミヤマ,カズミツ
+ヤギ,タカオ
+トミキ,テツロウ
+トノムラ,ミノル
+ヤツズカ,トシヒロ
+ブマ,ケンショウ
+ナカザワ,フミトモ
+ヤマザキ,ヨウコ
+マツシタ,シノブ
+イダ,シン
+スズキ,ヨシヒロ
+ナカノ,ヤスヒロ
+カワグチ,マサオ
+タカハシ,ツトム
+イシダ,ショウイチロウ
+ウダ,サトル
+フジワラ,リュウジ
+コイデ,トシタケ
+ツカダ,ヘイハチ
+ヒラヤマ,ヒロシ
+ウチトミ,アキラ
+イマハラ,ヒロヨシ
+ウエダ,ヒトシ
+ササカワ,ヨシヒロ
+アイカワ,タカアキ
+ウエキ,タカヨシ
+ナカヤマ,ヨシミ
+オオサワ,ヨシカズ
+タカオカ,トシユキ
+ワダ,ツギオ
+イヌズカ,クニヒサ
+タナカ,コウキチ
+タケダ,キヨタカ
+ヤマダ,ノボル
+ヤナギ,ヒデヒロ
+タケシタ,ヨシタケ
+ニシ,タツヒコ
+オオタケ,ユウイチ
+ニタナイ,シゲオ
+ホンマ,ノブヒコ
+ナカノ,ヨシノリ
+ミヤシタ,ヒデキ
+ウエノ,ジュンジロウ
+ババ,サダム
+ミヤザキ,マサオ
+クニイ,ツトム
+コバヤシ,ケイジ
+マスダ,ヒロシ
+タカハシ,コウジ
+ツカオ,ヒロキ
+カワムラ,タカユキ
+カワバタ,コウゾウ
+アカサカ,ジュンコ
+イイダ,テツヤ
+シラハマ,タダシ
+トガワ,ヒロユキ
+イトウ,ヒデイチ
+オカベ,マサシ
+ワタナベ,ヒロオ
+サカバ,トシヒロ
+ヒロサワ,ヒトシ
+ナカムラ,シゲル
+ヤスイ,サトシ
+ヒラタ,カズヒサ
+キタガワ,シンイチ
+アマノ,テツヤ
+ツジムラ,エツロウ
+カワサキ,コウイチ
+ウエムラ,タケシ
+ムラカミ,シゲナ
+イノウエ,キヨシ
+ハゼ,ケン
+トシヒロ,キミヒロ
+コバヤシ,シゲユキ
+イノ,タダノリ
+アサノ,ユウイチ
+モリ,コウジ
+イナザワ,コウヨウ
+コバヤシ,テルヒロ
+サカキ,ヨシヒコ
+ウチヤマ,セイジ
+マナベ,ヤスキ
+オオヤマ,ケンジ
+シミズ,マサヒコ
+ヨネムラ,ヒロユキ
+バラダ,アキヒコ
+フルゾノ,ヨシカズ
+フジモト,カズアキ
+サノ,マモル
+カワノ,エイコ
+ホシカワ,コウジ
+ササモト,モトツグ
+スドウ,マサト
+サトウ,タカオ
+ハヤシ,ヒロシ
+ババ,ヒデノリ
+ババ,ヒトシ
+オオヤネ,ヒデオ
+ナガサワ,ヤスユキ
+サカモト,マサハル
+アオキ,セイジ
+ムナカタ,マサハル
+イトウ,シンイチ
+カワバタ,ヒロユキ
+スギモト,ミチオ
+バンドウ,ジュン
+ノムラ,アキヒコ
+コンノ,ヨシミチ
+カワイ,カズノリ
+ウエノ,ノブユキ
+ハラダ,ヒロシ
+カノウ,アキラ
+オオハタ,ミキオ
+スドウ,タカシ
+マツダ,ヒトシ
+イケガミ,マコト
+シライ,ケンシン
+サトウ,タカアキ
+サカイ,タケシ
+オキ,トシユキ
+カワムラ,ケンジ
+ヤマダ,ヒロオ
+イトウ,アキヒサ
+イカミ,ハルオ
+アズマオ,ヒデト
+フジムラ,トオル
+キタムラ,ユウジ
+トガミ,トシミ
+コスゲ,マサオ
+セキ,ヒロユキ
+カワシマ,トモユキ
+タカイ,ユウゴ
+アキヤマ,ユキオ
+スズキ,トシフミ
+ナカムラ,シュウイチ
+ニシノ,タカユキ
+ミヤケ,タカヒロ
+ヨネモチ,モトジ
+タカシマ,シゲオ
+サカイ,トシノリ
+オオツキ,アキトシ
+カワサキ,ミキ
+ニシカワ,タキオ
+サクライ,ケンジ
+スギ,ヒデアキ
+ホリコシ,トオル
+モリ,カツヤ
+ハケダ,タカシ
+ニイダ,シンイチ
+キクタニ,サトシ
+タケノシタ,シュウヘイ
+タカハシ,ヒロミ
+タナベ,マサコ
+イケモト,ノリコ
+マツヤマ,ユキコ
+ヨシザワ,ヨシヒサ
+アカイ,ミノル
+ニシオカ,セイイチロウ
+タケモト,ノブオ
+トクダ,ヨシオ
+オオモリ,ヤスヒロ
+カトウ,タツシ
+カワト,フミオ
+マエダ,ソウイチ
+クロキ,マサヨシ
+イイダ,クミコ
+コヤナギ,ハジメ
+マツナガ,アツシ
+イトウ,ヤスアキ
+ヤマモト,タツオ
+ツツイ,トシアキ
+タナカ,ミノル
+フクシマ,シュンイチ
+コジマ,ヨシヒコ
+ニシダ,ミツグ
+ニシヤマ,ジュンコ
+スズキ,ダイスケ
+イイジマ,タカシ
+タマイ,ススム
+コンノ,オサム
+ミマス,トシミツ
+ヨネハラ,セイイチ
+ヨシダ,カズミ
+フクダ,ヒロシ
+サトウ,ヒロアキ
+ヤマモト,ヒロシ
+キタゴ,ノボル
+サンノ,トモトシ
+ヤサカ,トシオ
+ムラタ,シゲミ
+ナカモト,アキシ
+サクライ,カズシゲ
+ハラダ,ヨシモト
+サトウ,アツオ
+サイトウ,ミツオ
+ソネ,ケイコ
+ハスミ,アキヒロ
+ヒラタ,カズヒロ
+ヤナギサワ,ノブオ
+タチバナ,ヨウコ
+イトウ,マサズミ
+ハラ,アキラ
+サイトウ,トシヒロ
+イトウ,コウイチ
+タナカ,カズヤ
+ウチヤマ,シゲヨシ
+カガワ,ケイイチ
+タキザワ,ユウジン
+シナガワ,クニヒコ
+カキハラ,シロウ
+スガヌマ,ジュンイチ
+カメイ,トシヤ
+オクツ,カズトシ
+イシカワ,ショウシュン
+スギウラ,モリオ
+ウメダ,ヒサシ
+ミナグチ,イチロウ
+ホシノ,タケヒコ
+ニシヤマ,セイジ
+タケダ,タツヤ
+サカイ,キイチロウ
+ヤツダ,タケシ
+モリタ,ケイゾウ
+サキマ,ナオヒロ
+アライ,ユタカ
+タケダ,タカコ
+タムラ,ヨシコ
+オカダ,ハルミ
+ヤマネ,チハル
+ナカムラ,ユウイチ
+アオノ,タツオ
+スギヤマ,カネヨシ
+フリハラ,カズオ
+ワタナベ,ノブト
+カツ,ツカサ
+サハラ,ヒロミ
+カクタ,アキヒコ
+エノモト,タカシ
+ワタナベ,マコト
+ヤブキ,マサヒロ
+アマサキ,コウイチ
+ヨコタ,マサヒデ
+ホリノウチ,トシアキ
+キハラ,ツネオ
+タケダ,ツルマツ
+イネナ,マサヒコ
+ナカ,カズヒロ
+イチヤナギ,タダシ
+スズキ,ショウケイ
+ナルシマ,ナオキチ
+シライシ,タカシ
+オノ,トオル
+ヨシオカ,カズヤ
+マツウラ,ヒロカズ
+フジタ,テツジ
+イワミ,トヨハル
+トクシゲ,ケイジ
+タナダ,キミヒコ
+オカノ,カズマサ
+モチズキ,タカユキ
+タカシマ,コウイチ
+トリウミ,カズオ
+タカミ,ヨシタカ
+ハヤセ,トモユキ
+タカハラ,エイジ
+キン,マサユキ
+スギヤマ,ヒデヒロ
+キタジマ,コウジ
+ニッタ,ヨシノブ
+オカ,ユキノブ
+オオハシ,ヒロシ
+ハラダ,キハチロウ
+ワキサカ,ヒロシ
+イワナガ,ケイイチ
+カワシリ,ミツオ
+イナモト,マサカズ
+サワ,ヒロユキ
+タケダ,タケヒコ
+イイダ,ヨシヒト
+カジノ,マモル
+ミワ,ハルカズ
+フクイ,ケイイチ
+スエナガ,トオル
+クニエダ,ユタカ
+キタオカ,カズヒコ
+イド,トオル
+オクダ,リョウスケ
+ホリカワ,カツキ
+スエモト,テツヤ
+ヨコヤマ,トシヒロ
+フジモト,トミオ
+キセ,ショウジ
+ニシムラ,ヒデヒコ
+タカダ,コウジ
+ツカダ,マサカズ
+トヨダ,エイジ
+サノ,トオル
+ニシダ,マサヒコ
+オオモリ,イチロウ
+オザキ,トオル
+イシマル,シゲヤス
+タナカ,コウイチ
+カシワバラ,ノボル
+アサノ,ヤスカズ
+ヒラノ,シンジ
+タニヤマ,テツロウ
+ウメバヤシ,ケンジ
+オムラ,ヒデオ
+サカグチ,キヨカズ
+オカムラ,ショウゴ
+ヤマモト,アキラ
+エチゴ,コレアキ
+サワダ,ヤスヒコ
+ヨコイ,カズユキ
+キタムラ,リカ
+ヤス,カオル
+タカオ,ジュンコ
+カツラオカ,シンゾウ
+ツボイ,マサヒコ
+ツジ,シゲオ
+タカハシ,アキオ
+スギキ,タカキ
+タケウチ,タカヒロ
+カミ,トシカズ
+コバヤカワ,ヤスヒコ
+アオト,ジツジ
+タダ,ヨリコ
+ヒダカ,ノリコ
+ニシムラ,チエコ
+エバラ,ツネオ
+ミズモト,カズヤ
+スズキ,キヨシ
+シイナ,ハルヨシ
+シオタ,ミツヒコ
+ナカハラ,コウイチ
+ゴウダ,キヨシ
+フルタ,マサヒサ
+マスモト,ジュンイチ
+ナカガワ,キイチ
+イド,タカユキ
+ヨリフジ,ノボル
+マツモト,アキラ
+サイトウ,クニアキ
+ナツイ,ヒデキ
+ウオノ,カオリ
+タナゴ,ケイコ
+タマガワ,ノリヒト
+オカ,タカシ
+フクシマ,マサル
+オカダ,ユウコ
+キノシタ,ヒデヒコ
+シミズ,アキラ
+コバヤシ,キヨタカ
+ノダ,マサシ
+カノウ,ツグヒロ
+カジオカ,アキヒト
+オオノ,タカシ
+オオハシ,マサユキ
+コバヤシ,ユウイチ
+コイズミ,イクオ
+タナカ,ヒトシ
+フクダ,トシヤ
+ナカザワ,ノボル
+ホリカワ,サトシ
+ウチヤマ,モリヒロ
+イズタニ,ジュンイチ
+タキイ,トシコ
+タカセ,ノブツグ
+マスザキ,タカシ
+アンドウ,トオル
+カタギリ,シゲイチロウ
+モリヤマ,トシヤ
+サトウ,アキヒロ
+ヒルカワ,サトシ
+ウエダ,マサオ
+ナカ,トシタカ
+ミヤザキ,ヒロシ
+オオクボ,マサタカ
+タチカワ,マコト
+ワタナベ,ミチナオ
+アサカワ,セイジ
+カワハラ,マサヤ
+オサダ,ハジメ
+サカイ,ハルオ
+クリヤマ,サナエ
+サイトウ,コズエ
+スキガラ,ヨシコ
+アケヒ,クミコ
+ハヤシ,キヨミ
+カワタ,ナオミ
+シマガキ,ミサエ
+ホリ,カズヨ
+ノムラ,ヨシコ
+トムラ,シンイチ
+クボ,キヨコ
+ニシモト,ノリヒト
+ヨシダ,コウジ
+サギ,タカヨシ
+カンノ,ケイコ
+ヤブノ,マサキ
+ヤスナガ,ヒロユキ
+ヒガシウエ,ヒロヒト
+コサキ,マサユキ
+ナカ,トシヒロ
+オノ,トオル
+ムラタ,コウゾウ
+ショウジ,ヒデアキ
+カワモト,アキヒロ
+エサキ,マサル
+エイドメ,ヒデカズ
+スズキ,ユタカ
+モトヤマ,ヤスカズ
+ハマダ,アキラ
+コシカワ,トシオ
+ハヤシ,マサハル
+ヤマザキ,ユキヤ
+マツモト,ヨシマサ
+オノ,シンイチ
+ハナワ,タダシ
+ハセガワ,ケイジ
+ミヤタ,マサアキ
+キタザワ,マサカズ
+エンド,ヤスヒコ
+ナガサカ,ヨシアキ
+ヨシモト,ヒロミツ
+クロサワ,ケンサク
+マルヤマ,ヨシハル
+ナカニシ,カズユキ
+ヨシダ,ケイイチ
+フクタ,ヒデヤ
+フジサワ,カツヒコ
+サクマ,ヨシハル
+ハシモト,カツミ
+ワダ,マサオミ
+ニシザキ,ノブオ
+フカガワ,エツコ
+アオヤマ,マサカズ
+キヨタニ,ツトム
+トリハラ,ヒロユキ
+ナガノ,タケシ
+オオガ,ユタカ
+サカノ,タカシ
+ミツハシ,マサヒロ
+アリモト,セイコ
+ヨシマツ,タカアキ
+アオヤギ,アキオ
+ヤマダ,マサヒコ
+ムラタ,ユミコ
+イリエ,シンイチ
+ヤマザキ,マサノリ
+エゾエ,ケイイチ
+サトウ,ツヨシ
+オオタ,キヨシ
+イノウ,モリヒト
+カド,タツヤ
+ササキ,ヨシヒロ
+カケヒ,ヨシヒロ
+ツチヤ,カズヤ
+マサオカ,ショウゾウ
+スズキ,ヤスオ
+トネ,トミヒロ
+オオワダ,ノリアキ
+ウエキ,マサト
+マエダ,カズノリ
+フジオカ,ヤスコ
+ウラベ,ナオコ
+ナカムラ,ユウイチ
+イサカ,マサアキ
+ニシサカ,ノブオ
+イワサ,エイイチ
+タクシマ,ヨシオ
+ツカモト,フミオ
+サクマ,タケヒコ
+ヒョウドウ,ヒロシ
+ナカムラ,コウイチロウ
+ササキ,マサオ
+フクワキ,トシヤ
+オクムラ,マサヨシ
+タカハシ,トヨヒコ
+シロイ,ヤスシ
+コカブ,タダオ
+ノグチ,ヒロキ
+タカツ,ヒロカズ
+ヨネザワ,テツヤ
+サカイダ,ヤスヒロ
+コイズミ,ミツヤ
+マエダ,カツユキ
+マンダ,タダシ
+コグレ,イチロウ
+アキモト,ヨシト
+タケムラ,トモアキ
+スズキ,コウジ
+ヤマウチ,ジュンイチ
+サエキ,ユウジ
+ワカバヤシ,ノブユキ
+アキモト,マサヒコ
+ヨシダ,ヒロアキ
+サトウ,ツネオ
+オシマ,ヤストシ
+ササキ,マサヒデ
+アライ,アキヒデ
+ワタナベ,テツジ
+イケモト,ユキオ
+キクイ,コウイチ
+ヒラタ,ヒロミ
+マキウチ,タクヤ
+コセキ,シロウ
+ニシカワ,ヤスヒロ
+イガラシ,フミオ
+タナカ,タダツネ
+ホンダ,エイイチ
+ハッタ,ヒロミ
+ハラダ,ヒサカズ
+ヨシダ,オサム
+ワタナベ,ヒロシ
+コイズミ,リョウイチ
+コスダ,ナオヒサ
+ミヤケ,マサアキ
+フジヤ,タケシ
+マサキ,アキラ
+サクライ,ヒデキ
+ニシヤマ,ヨシオ
+カワセ,タカノブ
+オカザワ,シンヤ
+アサカ,トシユキ
+オガワ,ノブアキ
+ナガサワ,ハジメ
+キタワキ,マサオ
+シミズ,マサノリ
+コバヤシ,マサハル
+タチバナ,シゲコ
+イマナカ,サトミ
+ウシマル,ケン
+オカムラ,ケンイチ
+ヤマノ,ユウイチ
+キタムラ,ミチカズ
+タカマツ,ヒデキ
+トキカワ,カズヒデ
+イケダ,トシヤ
+イシダ,ノブタカ
+タニハラ,ミツギ
+オガワ,ヒトシ
+タナカ,ショウスケ
+ナカ,ケイコ
+トモザワ,ノブコ
+ハラダ,セツコ
+ハナブサ,アツコ
+トクオカ,アツシ
+ベッショ,マサヒロ
+ナカシマ,カツヒコ
+アサクラ,ヤスヒコ
+ミヤデラ,ヒロシ
+スズキ,ナオキ
+ヨシムラ,ヨシヒサ
+サワ,マサユキ
+ナカヤマ,コウイチ
+ヒラザワ,ヨシヒロ
+フジワラ,マサアキ
+スガワラ,トオル
+タニガワ,マリオ
+ホンダ,ヤスト
+ハナイ,コウイチ
+エグチ,サクメイ
+カサイ,ヨウイチ
+クロサワ,ヒロシ
+タジマ,シン
+サトウ,タツシ
+ヒビノ,ツネオ
+スガヤ,シュウ
+クラタ,コウイチ
+マスダ,ハルキ
+スギハラ,ケイコ
+カネコ,ヨシユキ
+カツ,タカシ
+マル,ヒロヤ
+タナカ,ヒデカズ
+トシオカ,アキラ
+シゲノ,リョウジ
+ヤマモト,サトミ
+ナカガワ,カツミ
+ヤマグチ,ヒロキ
+カワモリ,ヨシヒロ
+ムラヤマ,マサル
+シュウ,ナオヤ
+イケダ,ヒロユキ
+コダマ,タツオ
+カトウ,サトル
+ハクチョウ,イサオ
+カゲン,カオル
+テズカ,コウジ
+タニグチ,マサタケ
+テラダ,ナオキ
+カトウ,タカキ
+ナイトウ,タケオ
+イトウ,タカシ
+コバヤシ,ケンジ
+タナカ,ヒデトシ
+ササキ,ワタル
+ホンダ,ミチト
+ヒエダ,アキオ
+サカイ,カズノリ
+カツミ,タカシ
+タケベ,タカシ
+ノグチ,ツヨシ
+ワダ,エイジ
+ウエヤマ,ケンジ
+ウエノ,タカヒロ
+タンゴ,ヒデオ
+ムラカミ,カツミ
+アラキ,コウゾウ
+アラセ,マスヒロ
+ヤマモト,シロウ
+ワシオ,ヒロユキ
+ワケジマ,ヨシフミ
+コイズミ,ケンスケ
+トクヤマ,トシフミ
+トミナガ,ケンジ
+キシダ,セイジ
+ケン,ミチヒロ
+ヒロセ,ヨシユキ
+ウチヤマ,ケンイチ
+ワカスギ,タダタカ
+イシグロ,カツノリ
+ニシムラ,ヒロカズ
+イノマタ,カオル
+ツツミ,トシヒコ
+イリエ,アツシ
+サイトウ,カズオ
+ウエノ,シンイチ
+ホンダ,オサム
+キタムラ,カヨコ
+ヤマガミ,ナミ
+ナカニシ,マサヒロ
+ウエダ,タカシ
+ヒロタ,ワタル
+ウエダ,トモキ
+イケダ,ヒロシ
+ハナブサ,ヨリノブ
+コダマ,ヒロアキ
+オカモト,ナオキ
+スズキ,ヒロミツ
+スズキ,ヒサエ
+ニイクラ,アキヒロ
+ニシダ,ヒロヒサ
+オサベ,ジュンイチ
+ホソカワ,ケンイチ
+イマオ,ヨウイチ
+フジタ,ヨシノブ
+オオノ,ヨシノリ
+ナカヤマ,ヨシオ
+ハヤシ,ケイジ
+スガハラ,カズノリ
+ハラダ,イチロウ
+アベ,シュンイチ
+アベ,ケイイチ
+アベ,ケンイチ
+アダチ,タダヒロ
+アイバ,ダイスケ
+アカバネ,カズオ
+アンドウ,エイホ
+アンドウ,トモユキ
+アオキ,マサシ
+シイキ,ヒロシ
+アライ,ショウイチ
+アライ,トオル
+アライ,タケシ
+アラカワ,イサオ
+アラキ,タツヤ
+アラキ,タカユキ
+アラキ,キヨハル
+アラキ,カズアキ
+アラマキ,マキオ
+アラメ,タカネ
+アリムラ,タケシ
+アサミ,シュウイチ
+アズマ,ヒロヨシ
+ババ,ヒデカズ
+ババ,モトコ
+チバ,ノブアキ
+チバ,コウイチ
+チノ,トモユキ
+ダイコク,ヨシノブ
+デグチ,ヒロノリ
+デキ,ヨシアキ
+ドイ,ノブヒコ
+エダサワ,ヒデキ
+エグチ,ヨシナリ
+エンド,カズロ
+エンド,マサオ
+エリカワ,ユウコ
+フジイ,ヒロシ
+フジモト,ヒデト
+フジモト,マユミ
+フジノ,ヨシアキ
+フカハラ,アキラ
+フカミ,ナオキ
+フカヤマ,ノブユキ
+フクダ,マサユキ
+フクイ,マサヒコ
+フクモト,ヒロシ
+フクナガ,マサヒコ
+フクシマ,ノブオ
+フクシマ,カズタカ
+フナキ,サカエ
+フナキ,ヤスフミ
+フルヤ,イサオ
+ゴウハラ,ヨシヒサ
+ゴトウ,シンイチロウ
+ハガ,タダシ
+ハギノ,カズロ
+イチムラ,マコト
+ハマ,ナオキ
+ハナダ,マサヨシ
+イバ,キヨサダ
+ハセベ,カツヘイ
+ハセガワ,トシロウ
+ハシモト,ノリアキ
+ハシ,ナオアキ
+ハタノ,ノブヒロ
+ハトリ,シンタロウ
+ハヤシ,アキヒコ
+ハヤシ,コウジ
+ヒダカ,カズコ
+ヒガシ,キヨタカ
+マノ,ヨシカズ
+ヒライ,ヨシタカ
+カミサキ,トシヒコ
+ヒラノ,マサヒコ
+ヒロイ,ヒデオ
+ヒロモリ,ヨシハル
+ヒロサワ,アツシ
+ヒロサワ,オサム
+ヒロセ,シンイチ
+ホンダ,ヨウ
+ホンマ,ヒロヤス
+ホリベ,シゲル
+ホリエ,ヒロシ
+ホリグチ,ユウイチ
+マツモト,トシヒデ
+ホリ,ハジメ
+ホリ,ヒロミ
+ホシカワ,ノリユキ
+ホソカワ,ススム
+ヒョウドウ,マサハル
+イバラキ,ユウイチ
+イチオカ,アツフミ
+イケダ,タカヒト
+イマイ,ヨシタカ
+イマムラ,タカアキ
+イマナカ,トモヤ
+イナダ,ヒロシ
+イナムラ,コウイチ
+イノウエ,サトル
+アライ,トシミ
+イノウエ,エイジ
+イシイ,キヨミ
+イシイ,ヒロシ
+イシカワ,ミキオ
+イシカワ,アキラ
+イシオカ,マコト
+イソダ,
+イトウ,マサヒロ
+イトウ,チズコ
+イトウ,カズヒト
+イトイ,タダシ
+イトウ,シンジ
+イワイ,アキラ
+イズミヤ,マサノリ
+カジタ,サトシ
+カメイ,シンジ
+カナイ,マサヒロ
+カナザシ,ノリコ
+カネコ,タケシ
+カネコ,マコト
+カノウ,イクオ
+カリウ,シゲジ
+ツキジ,タカノリ
+カサマツ,ヒロユキ
+カタギシ,マサシ
+カタヤマ,アキラ
+カタヤマ,テツメイ
+イソダ,タカオ
+カタヤマ,コウジ
+カトウ,サツオ
+カトウ,マコト
+カトウ,ヤスシ
+カトウ,チエ
+カツマタ,タクヤ
+カワベ,ユキノブ
+カワベ,アツシ
+カワベ,ムネヒト
+カワダ,ケンスケ
+カワダ,アキヒコ
+カワモト,アキオ
+カワタニ,セイキ
+キミズカ,ミチロ
+キムラ,カズヤ
+キムラ,リョウタロウ
+キノシタ,ヤスヒロ
+キサカ,ヒデオ
+キシダ,タカコ
+キタガワ,キョウイチ
+キタムラ,ヨシヒロ
+キタ,ヒデト
+キヨノ,マサユキ
+コバヤシ,カツノリ
+コダマ,カズナリ
+ドヒ,ヒラヤス
+コハラ,マサキ
+コイデ,トシヤ
+コイワ,ヒョウジ
+コイズミ,ハルコ
+コマツ,ヤスタカ
+コメダ,ヒロユキ
+コンド,ミキ
+コンド,トオル
+コニシ,ジュンジ
+コサカ,ヒロアキ
+コタキ,ジュン
+コタニ,ヒデキ
+コトブキ,ヒロシ
+タシロ,カズノリ
+クボタ,ユキマサ
+クボ,テツヤ
+クドウ,マサト
+クマガイ,ヤスヒロ
+クロセ,オサム
+クシマ,ヤスコ
+クシミヤ,コウキ
+クツカケ,シンイチ
+クワノ,シュウゾウ
+マツナガ,ヒデキ
+マエダ,ユウジ
+マエハラ,サトシ
+エノキ,トシヤ
+マエカワ,コウジロウ
+マエキ,アヤコ
+マンノ,シンギ
+マノ,エイジ
+マンタニ,ヨウイチ
+マルヤマ,ヤスヒロ
+マセ,カズヒコ
+マスザワ,マサオ
+マツダ,ミツノリ
+マツイ,イツコ
+マツイ,マサト
+マツモト,ヤスアキ
+マツムラ,カズアキ
+マツノ,ノリユキ
+マツザキ,レイコ
+ミキ,シゲル
+ミコダ,テルユキ
+ミムラ,カズタカ
+ミムラ,シゲノブ
+ミナミ,サトシ
+ミナミ,ノブヒロ
+ミナト,ヤスシ
+ミネマツ,ノリコ
+ミネ,マサタカ
+ミシマ,ヒロユキ
+ミワ,マサヒロ
+ミヤグチ,タカヒロ
+ミヨシ,ユウコ
+ミズタ,ジュンコ
+モモノイ,ケイスケ
+ホンダ,タケシ
+モリタ,ヤスシ
+モリタ,アキヒコ
+モリ,アキラ
+モリ,アツシ
+モリ,カズヒロ
+モリ,ミノル
+モリ,タカシ
+ムネムラ,トシミツ
+ムラカミ,ヨウジ
+ムラオカ,コウジ
+ミョウガ,ヒロキ
+ナガミネ,マサシ
+ヤマダ,シンイチ
+ナガオ,トシカズ
+ナガタ,ケンジ
+ナイトウ,コウイチロウ
+ナカガワ,タロウ
+ナカイチ,ヒロノリ
+ササキ,ツカサ
+ナカジマ,ヒロシ
+ナカシマ,ソウタロウ
+ナカコジ,タツヤ
+ナカムラ,マサフミ
+ナカムラ,サトシ
+ナカムラ,トオル
+ナカムラ,ジュン
+ナカムラ,ダイスケ
+ナカムラ,ユウコ
+ナカムラ,ヨウイチ
+ナカムラ,クミコ
+ナカニシ,トシユキ
+ナカノ,テツヤ
+ナカノ,キンヤ
+ナカシオ,コウイチロウ
+ナカタ,カナコ
+ナカヤマ,タカシ
+ナンケ,アツシ
+ナラザキ,タイチロウ
+ナリセ,ユキヒロ
+ナルオカ,イサム
+ネモト,タダシ
+ニムラ,ススム
+ニムラ,マサユキ
+ニシムラ,ツトム
+ニシノ,カズマサ
+ニシシタ,テツノリ
+ニシウチ,シュウイチ
+ニシヤマ,ナオヒト
+ヤジマ,ヨシエ
+ニシザワ,ユタカ
+ニワ,アキラ
+ノブナガ,ミツシ
+ノガミ,マコト
+ノグチ,シンイチ
+ノグチ,ミユキ
+ノマ,トヨミ
+ノマ,コウイチ
+ノムラ,コウジ
+ノムラ,ノリオ
+ノムラ,シュンイチロウ
+ノセ,タダアキ
+ノザワ,ヨウイチ
+ヌキイ,カツミ
+ヌマオ,アキラ
+ヌマタ,カズヒロ
+オチアイ,タカユキ
+オチアイ,ヨシオ
+オダハラ,イクオ
+オダ,ミノル
+オガサワラ,シュウジ
+オドマリ,トウイチロウ
+オカド,フミオ
+オマサ,アキラ
+オナガ,ヒロユキ
+オオノ,ヒデユキ
+オオサキ,アツシ
+オオサワ,ヒデタカ
+オオスミ,カズユキ
+ヤマシタ,マサル
+オオタ,ナンテツ
+オオタ,タカシ
+オオツカ,タツヤ
+マツナガ,ヨシアキ
+オオヤマ,ノリユキ
+オカダ,リエ
+オカダ,タケシ
+オカダ,ヒロフミ
+オカダ,ヨシノリ
+オノデラ,タカオ
+オカモト,ヒロユキ
+オカザキ,タカアキ
+オクダ,トシユキ
+オク,ノブユキ
+オノ,サチコ
+オノ,ケイイチロウ
+オリテ,ケンイチ
+オサダ,ムツミ
+サイトウ,ムツオ
+サイトウ,シンゴ
+サイトウ,シュウジ
+サイトウ,ヨウイチ
+サイトウ,ユタカ
+サイトウ,カズヒロ
+サイトウ,アキヒロ
+サカイ,イチロウ
+イシザキ,ユキノリ
+サカモト,ヒロシ
+サカノウエ,ヒデオ
+サカウエ,カズマサ
+サコダ,ノブオ
+サクライ,シゲノリ
+サクライ,タカシ
+サヌキ,リュウタロウ
+ササキ,アキト
+トミタ,トモナリ
+サトウ,テツオ
+サトウ,ナオキ
+サトウ,ヨシノリ
+サトウ,マサユキ
+サトウ,トシヤ
+サトウ,アツコ
+サワダ,マサト
+セオ,ケンサク
+セザイ,カズヤス
+シバタ,タケヒコ
+シバタ,ヨウ
+シガキ,アキヒコ
+シミズ,ヒロム
+シミズ,ヨシミ
+シミズ,アキラ
+シミズ,アキトシ
+シミズ,ヒデオ
+シモムラ,ヒロアキ
+シノハラ,カズヒロ
+シラツ,マコト
+シロシタ,サトシ
+ショウジ,ユウコ
+ショウミツ,ヨシヒロ
+ソダ,カツスケ
+ソモリ,タツオ
+ソウ,カズヒコ
+ナカ,ユウジ
+スギムラ,ケイシ
+スギノ,マサヒロ
+スギサワ,ノブユキ
+スギタ,サユリ
+スギウチ,シンスケ
+スギヤマ,アキノリ
+スギヤマ,マサノリ
+スギヤマ,カズミ
+スズキ,シンヤ
+スズキ,ユウジ
+スズキ,シン
+スズキ,ヒロアキ
+スズキ,トシアキ
+スズキ,ヒデト
+スズキ,コウイチ
+スズキ,ユウコ
+タチバナ,タカシ
+タイラ,アキラ
+タイラ,ヒデアキ
+タカダ,ヒロユキ
+タカギ,マサカズ
+タカハシ,ノリイツ
+タカハシ,タカユキ
+タカハシ,ハジメ
+マスザワ,ヒトシ
+タカハシ,マサアキ
+タカマ,ヒサト
+タカノ,ミエコ
+タカノ,カズヨシ
+タカサカ,ハジメ
+タカセ,カツジ
+タカタ,クミコ
+タカヤマ,アツシ
+タカヤナギ,アリヒロ
+タケダ,エリ
+タケダ,アキラ
+フジイ,アツコ
+タケノリ,イクシ
+タケシタ,ヒロカズ
+タケウチ,ユウジ
+タケウチ,タカトシ
+タキザワ,マサアキ
+タキザワ,ツヨシ
+タマキ,サトコ
+タムラ,アキヒロ
+タムラ,テツネ
+タムラ,ノブオ
+タナカ,ショウゴ
+ワタナベ,アキヒロ
+タニヤマ,ノボル
+タニ,カズヒコ
+テラキタ,ナガノリ
+テズカ,シンイチ
+トバリ,ススム
+トガシ,ジュンイチ
+ヤマダ,ケンイチ
+トキゾノ,シゲオ
+トミナガ,モトヒサ
+トミナガ,シンジ
+トミタ,シンジ
+トミタ,テツオ
+トモオカ,ヒトシ
+トノサキ,ヨシノリ
+トリザワ,エミ
+コイケ,ヒロコ
+トヨカワ,マサヨシ
+トヨカワ,ヒサヨシ
+ツボイ,タダシ
+ツカダ,トオル
+ツクイ,ヒサシ
+ツルカワ,エイジ
+ツツイ,トシカズ
+ツツイ,ユウジ
+ウチダ,ヒロキ
+ウチダ,ジュンイチ
+ウチマ,シュンイチ
+ウチヤマ,アキヒロ
+ウダ,ヒサヨシ
+ウエダ,カズノリ
+ウエノ,キヨシ
+ウエノ,ノリオ
+ウエノ,タカシ
+ウケガワ,タカユキ
+ウマズメ,ヨシヒロ
+ウメムラ,キミヒロ
+ワダ,ヒロシ
+ワダ,ヤスヒコ
+ワタナベ,リョウ
+イイダ,サトシ
+ワタナベ,タカシ
+ワタリ,ヤスヨシ
+ヤギ,ヨシユキ
+ヤマダ,ヒロユキ
+ヤマガ,ヒデオ
+ヤマグチ,マサノリ
+ヤマグチ,ヒデオ
+ヤマグチ,マサシ
+ヤマモト,テツヤ
+ヤマモト,マサユキ
+ヤマモト,カズユキ
+ヤマモト,ヒデシ
+ヤマモト,マサノリ
+ヤマモト,カズト
+ヤマモト,カオル
+ヤマモト,マサヨシ
+ヤマナカ,エイジ
+ヤマシタ,サトル
+ヤマウチ,カズアキ
+ヤマザキ,ハルヒコ
+ヤマザキ,マサトシ
+ヤマザキ,ケンジ
+ヤノ,ユキオ
+ヤノ,コウイチ
+ヤスダ,タケシ
+ヤスマツ,カツナリ
+ヤスモト,コウジ
+ヤスニワ,タカユキ
+ヨダ,オサム
+ヨダ,イサオ
+ヨシダ,ヨシヒロ
+ヨシイ,タツヤ
+ヨシナガ,ユミコ
+ヨシノ,タツミ
+ヨシタケ,アキヒロ
+タキザワ,タカシ
+ヤマグチ,カズヨシ
+カバシマ,カズヒサ
+サクラ,ユウスケ
+ムラヤマ,ヒロユキ
+ヒキダ,カズミ
+ムライ,クニヒロ
+ホ,アキラ
+エンド,セイジ
+テラムラ,タツオ
+ワタナベ,タカヒコ
+イマイ,シゲヤ
+モリモト,トシカズ
+コヤリ,セイジ
+マツミヤ,ユウイチ
+シバタ,カズオ
+チシロ,ヨシヒロ
+イタミ,ヒデオ
+オザキ,ヒトシ
+フクモト,マサツグ
+オカダ,ヒロシ
+サワダ,ヒロシ
+サクライ,タカシ
+ハヤシ,ヨシノリ
+マツオカ,ヤスノリ
+ミヨシ,ノリヨシ
+ヤマナカ,コウジロウ
+シミズ,ヒトシ
+コハラ,マサノリ
+ニシカワ,ヒロシ
+イマイ,ヤスオ
+フジムラ,ヒロユキ
+コジマ,ヤスユキ
+コバヤシ,ヒロシ
+キクチ,カツヒコ
+サイトウ,ミツル
+ヤマシタ,ヒデアキ
+アベ,シンジ
+テズカ,タカシ
+タナカ,ワタル
+ニワ,ミノル
+カメイ,ミズホ
+ヤノ,ミツオ
+ナカマル,ヤスシ
+オオハタ,マサノリ
+ヤスヤマ,マサヒロ
+カスガ,ミツオ
+イシイ,アキヒコ
+フジモリ,ノリコ
+イワモト,ヒロシ
+ヤマシタ,ルミコ
+キタ,トモミ
+ムラオカ,ユウコ
+イグサ,ヨシズミ
+ナガサワ,ヒロジ
+ヤマグチ,ヤスヒロ
+オダジマ,ユタカ
+オオタ,マミ
+ハギノ,ナオイチロウ
+ヤブキ,トシアキ
+イキ,ヨシトシ
+サイトウ,マサト
+ヤマダ,タカシ
+ナカヤマ,
+ムラマツ,カオル
+タシロ,ショウイチ
+イシハラ,マサユキ
+シバオカ,タツオ
+ナカオ,ヤスノリ
+フジタ,トシキ
+サクタ,マサユキ
+ハタ,ススム
+オオヤマ,タダシ
+タゴ,キョウコ
+マツムラ,カズオ
+イトウ,マサユキ
+キムラ,タケオ
+アオキ,ミツタカ
+コマガタ,ヒデトシ
+ナラムラ,カズコ
+フジモト,マサキ
+ミヤサカ,トシヒコ
+ハヤシ,マサヒロ
+サイトウ,カズヒコ
+オガサワラ,ショウジ
+オオツカ,トシユキ
+カワイ,トモユキ
+シマズ,ヨウイチ
+タカハシ,キシコ
+マエザワ,イズミ
+ハダ,カオル
+マツヒラ,エリ
+スギハラ,ノボル
+ナカジマ,ヨシノブ
+ハタケヤマ,テツヤ
+アオキ,マサヒコ
+シブカワ,キヨヒサ
+イシダ,シゲル
+オカダ,タカシ
+イトウ,アキラ
+カトウ,マサヒロ
+コバヤシ,ナオミツ
+ムラサワ,ミノル
+ミホ,マサノリ
+スガネ,ヨシノブ
+イシカワ,ヨシヒコ
+オカ,ヤスヒロ
+イワミ,ユミコ
+ナカヤマ,ヒロシ
+イトウ,カズキ
+スギヤマ,シンイチ
+カシモト,ヨシコ
+ナカムラ,マサユキ
+アオヤマ,ヒデノリ
+シバタ,ケンイチ
+マツオ,ヨシノリ
+シノムラ,アオイ
+フルカワ,ヨシフミ
+モトキ,シュウイチ
+ワタナベ,チオ
+アンドウ,マサヒロ
+タケヒ,サチコ
+イシイ,アキフミ
+ノチセ,カズヒコ
+ミヤナガ,トシコ
+シンドウ,ヒロミ
+オオタ,ミヨコ
+タニ,ヨシアキ
+コムロ,フミノリ
+イワサ,ヒロミチ
+マツモト,ヒデアキ
+キムラ,ヒサト
+アオキ,アキヒコ
+マツバヤシ,ヒロシ
+ゴトウ,フミユキ
+オガワ,アキラ
+スギタニ,ハルオ
+オクノ,ユキオ
+サクラダ,シンペイ
+ムコヤマ,ノリコ
+イトウ,サトシ
+ヤマモト,タダシ
+ヤマモト,マサトシ
+カネコ,シュウヘイ
+ヤマザキ,ヤスヒロ
+ナカムラ,トモ
+ミワ,オサム
+サムカワ,シロウ
+ナカダ,トシユキ
+ヨシトミ,ケンイチ
+タカシマ,ツネジ
+イシゲ,アキコ
+スエハラ,ヒロユキ
+イノウエ,ヒデミ
+ノジマ,
+サクマ,サチエ
+サノ,ヨシミチ
+ムラオカ,カツジ
+ミウラ,リュウゾウ
+サカモト,ジュン
+ナルオ,セイコ
+ハセガワ,ミツヒロ
+オカダ,テツオ
+ヤヒロ,ノブユキ
+ババ,タクヤ
+アタ,アヤノ
+ナガセ,キヨシ
+カワエ,イズミ
+ミウラ,マキヨ
+フジタ,サトコ
+ツルミ,ヨシオ
+モチズキ,エミコ
+ヨシダ,カズアキ
+オカモト,マサフミ
+ヤスモト,ミツハル
+ネモト,タクジ
+ヒダカ,ウエミツ
+マスダ,クミコ
+トクナガ,フミヒト
+ナカザワ,ススム
+フジナワ,ヨシハル
+ヨビカワ,カズヒロ
+キタダ,タケシ
+ヨシノ,ヤスヒロ
+ババ,ヨシト
+クロカワ,ヒロシ
+カトウ,タカシ
+ワタナベ,トシオ
+ツチダ,アツコ
+スズキ,ミユキ
+ミズノ,アキラ
+タニモト,タクミ
+イケノ,メグミ
+イトウ,ショウコ
+タケダ,トオル
+マエダ,コウヘイ
+クドウ,カツミ
+カゲヤマ,ミネオ
+ヤマカゲ,ヨウジ
+サエグサ,レイコ
+ミズタニ,ナオコ
+クドウ,トシヒコ
+コオリヤマ,ミズホ
+カタヨセ,ヨシエ
+オサダ,ケイコ
+ヤギハシ,シュウイチ
+スミ,タツオ
+タナカ,アツシ
+クドウ,ユキオ
+タケヒ,アキラ
+アメミヤ,ミチヒロ
+ナカムラ,タカシ
+キヨミツ,ケンジ
+イズミダ,ヨシカ
+フナキ,ヒロアキ
+タケシタ,カズヒコ
+ミウラ,キクオ
+イシバシ,ノブコ
+モリアイ,ケイジ
+ムラヤマ,エイジュ
+オサワ,ヤスノリ
+フカダ,ヨシカズ
+ヤマダ,ヒデヒコ
+イトウ,アキラ
+オノデラ,トミオ
+ハヤサカ,マサミチ
+オオツカ,ヒデヒコ
+トオヤマ,ヒロタカ
+カワハラ,ミツル
+エビサワ,マサキ
+ヤマカワ,テツヤ
+ヤマモト,ヤストモ
+スズキ,トオル
+オヤマダ,タカシ
+マツヤマ,リュウイチ
+アベ,ノブヒロ
+アベ,ヤスオ
+アベ,カズマサ
+アベ,ユキオ
+アゲタ,ジュンイチ
+アカハネ,ヒデヒロ
+アケナガ,ジュン
+アキヤマ,シゲオ
+アキザワ,ヒデカズ
+アマダ,ミキオ
+アマノ,マサシ
+アモウ,アキオ
+アンドウ,ヒデアキ
+アンドウ,ナオキ
+アンドウ,トシフミ
+アオノ,ヒロキ
+アオヤマ,イワオ
+アライ,カズヒロ
+アラカワ,ヒデシ
+アリモト,ヒデキ
+アリオ,マコト
+アサイ,アキラ
+アサカワ,ヨシヒト
+クロキ,ユキノリ
+アズマ,シンジ
+バンノ,マサキヨ
+ベツヤク,ケンゴ
+ビトウ,ジン
+チバ,ヒロシ
+チュウ,カツキ
+エダ,ケンイチロ
+エンド,ナオミ
+エサキ,シンイチ
+フジイ,ヒロシ
+フジイ,フミオ
+フジモト,アキラ
+フジタ,キヨナオ
+フジタ,アキヒロ
+フジワラ,サトシ
+フカザワ,トモヒト
+フクダ,ススム
+フクハラ,ヤスヒコ
+フクシマ,カズヨシ
+フクドメ,カズヒサ
+フクヤマ,サトシ
+フナバシ,マサユキ
+フルダテ,アキヒコ
+フルサワ,シンジ
+フルタ,リキヤ
+フルヤ,シンイチ
+フシキ,ユウイチ
+ハマダ,コウイチロウ
+ハナダ,カツノリ
+ハナミ,ヒデオ
+ハラダ,アキラ
+ハルカワ,イズミ
+ハセガワ,ヨウイチ
+オオツ,ムネヒロ
+ハシモト,アツシ
+ハシモト,エミコ
+ハスモト,アツシ
+ハットリ,ツヨシ
+ハヤサカ,タカオ
+ヒダカ,ケサオ
+ヒグチ,ケイコ
+ヒグチ,フサユキ
+ヒジクロ,ナオユキ
+ヒラカワ,ジュンイチ
+ヒラノ,ヒロヨ
+ヒラタ,マサヒロ
+ヒロセ,サチコ
+ヒサダ,タカシ
+ホリ,ノリヤス
+ホウヤ,カズヒコ
+ホンダ,シゲユキ
+ホンマ,タツヤ
+タナカ,ツヨシ
+ホシジマ,タツオ
+ホシカ,タケシ
+ホソダ,チエミ
+イチカワ,ヤスヒロ
+イチムラ,ケイゴ
+イガノ,ミドリ
+イイダ,マサユキ
+イイオカ,ヒロシ
+ナガノ,サトル
+イケザワ,ノブヤス
+イモト,スミレ
+イナズミ,ヤスハル
+クシミヤ,シンイチ
+イノウエ,シンヤ
+イノウエ,アキラ
+イノウエ,トモユキ
+イヌツカ,ナオキ
+イサジ,ヒデト
+イシダ,シュウイチ
+イシダ,イサオ
+イシダ,クニアキ
+イシガキ,エリコ
+イシガミ,ジュンイチ
+カジタニ,オサム
+イシハラ,ヒロユキ
+イシムラ,マサヒコ
+イシヤマ,シュウイチ
+イシザキ,ノブオ
+イソベ,ヨシヒコ
+イソザキ,マサアキ
+イトウ,チクサ
+イトウ,ヒサト
+イワアサ,ケンタロウ
+イワイ,ナオタカ
+イワマ,サトシ
+イワモト,ヨウイチ
+イワナガ,ヒロノリ
+イワシタ,シコ
+イワタ,カズマサ
+イワタ,エイジ
+カドワキ,サトシ
+カゲヤマ,ケンイチ
+ワタナベ,イズミ
+カミヤ,クニアキ
+カミヤ,ケンイチ
+カンバヤシ,キンジ
+カノウ,ヒロシ
+カリヤ,ナリヤス
+カサキ,ジュン
+カシマ,マサオ
+カスヤ,アキラ
+カトウ,タカキ
+カトウ,カズヒロ
+カトウ,ケンジ
+カトウ,ミツグ
+カトウ,ヒデノリ
+カトウ,ヒロユキ
+カワバタ,ダイ
+カワバタ,アツシ
+カワグチ,ヒデミチ
+カワハラ,ヒロミ
+カワハラ,カズフミ
+カワジリ,ミチオ
+カワカミ,テツオ
+カワクボ,カズトシ
+カワマタ,タカノブ
+カワムラ,ヒトシ
+カワノ,ノリアキ
+カワサキ,マサヒト
+カワシマ,トシヒサ
+カワズ,マサノリ
+キバシ,ヒデヒコ
+キマチ,マサキ
+キモト,タケシ
+キムラ,タクヤ
+キンバラ,ヨシミチ
+キノシタ,ヤスシ
+キノシタ,ヒロキ
+キリサワ,イチロウ
+コバヤシ,ジュンイチ
+コバヤシ,ヒロアキ
+コバヤシ,マサオ
+コバヤシ,フジヒコ
+コダマ,コウジ
+コダマ,オサム
+タカムラ,モトヒコ
+コヒナタ,ユウスケ
+コンノ,ヒロシ
+コンノ,タカヒロ
+コヤマ,コウジ
+コズキ,トシオ
+トウドウ,コウジ
+コジマ,シンジ
+コンド,アキラ
+コンド,タカシ
+コンド,マサトシ
+コンノ,カオル
+コタキ,ヒトシ
+コヤイシ,ミカ
+コヤナギ,ノボル
+クボ,ケンタロウ
+クドウ,キミヒト
+クマガイ,ナオユキ
+クマキ,シンジ
+クラチ,タカユキ
+クラタ,コスケ
+クリタ,ミキ
+クリヤマ,シュンジ
+クロダ,コスケ
+クロカギ,マサノブ
+クロサワ,シンジ
+クロサワ,セイキ
+クワノ,ヒロタカ
+マエバシ,トシアキ
+マエザワ,ノブユキ
+マノ,ヨシオ
+マルワカ,ヒデナオ
+ウチヤマ,タツオ
+マスダ,ジュン
+マツイ,シゲキ
+マツイ,サトシ
+マツモト,シンイチ
+マツモト,ヒサト
+マツナガ,マサトシ
+マツシマ,モリヒロ
+マツシタ,タダシ
+マツザキ,タケシ
+イナイシ,ヨシオ
+ミカミ,ケイイチ
+ミナギ,アキミツ
+ミツヤマ,コウイチロウ
+ミウラ,シゲキ
+ミヤケ,アツシ
+ミヤモト,アツコ
+ミヤタ,コウジ
+ミヤウチ,マサキ
+ミヤウチ,イチロウ
+ミヤザワ,アキラ
+ミヤザワ,タカシ
+ミヨダ,タカヒサ
+ミゾブチ,ケンジ
+ミゾタ,タケオ
+チバ,ヒロヒサ
+ミズハシ,マコト
+ミズマチ,セイジ
+ミズタニ,サトシ
+ミズタニ,ツヨシ
+ミズタニ,ヒロユキ
+モチズキ,ミノル
+モリモト,ナナコ
+モリタニ,タカシ
+モリタ,トヨヒコ
+モリタ,タカシ
+モリワキ,シンイチロウ
+オクイ,タケヒコ
+モリ,タケミ
+モリ,タカユキ
+ムコヤマ,ヒロユキ
+ムラテ,シンイチ
+ムトウ,カツキ
+ナガイ,ミツヒロ
+ナガノ,ミツトシ
+ナガオカ,タカヒロ
+ナガセ,カツミ
+ナガタ,ヒロユキ
+ナガタ,モトキ
+ナガワ,シンイチ
+ナカマル,ヨシキ
+ナカムラ,アキラ
+ナカムラ,トモコ
+アベ,ヨウイチロウ
+ナカムラ,トシヤ
+ナカムラ,アキラ
+ナカシマ,ヒサヨシ
+ナカシオ,ヒロユキ
+ナカ,ノリコ
+ナミキ,ノリカズ
+ナンブ,ヒロシゲ
+ヤマグチ,シンジ
+ニイミ,シゲフミ
+ニシダ,ヒロヨシ
+ニシダ,エイジ
+ニシダ,マサアキ
+ニシダ,ススム
+ニシクボ,アキヒロ
+ニシムラ,タカアキ
+ニシムラ,ツヨシ
+ニシオ,マサト
+ニシオ,シンジ
+ニシヤマ,タカシ
+ヤガワ,ケイジ
+ニッタ,ヒロミ
+ノベオカ,アキホ
+ノジリ,ヨシノブ
+ノムラ,テツヤ
+ノナカ,カツシ
+オバナ,ミノル
+オチアイ,トシユキ
+オチミズ,タカシ
+オチ,ミツノリ
+オダオオハラ,シンゴ
+オダ,ヒロカズ
+オガタ,マサキ
+オガワ,マサトシ
+オガワ,エツコ
+オグラ,ナオユキ
+オオヒラ,ノブユキ
+オオヒラ,イチロウ
+オオイシ,アキラ
+オオイシ,マコト
+オキ,カユ
+オオクボ,カズコ
+オオノ,ケイコ
+オオヌマ,シゲノブ
+オオヌマ,ナルシ
+オオタキ,マサヒデ
+オオタ,トオル
+オオタ,ヨシナガ
+オオタ,コウイチ
+オト,マサズミ
+オオツボ,ヒロフミ
+オオヤギ,マサヒロ
+オオヤマ,アツシ
+オイエ,カズヤ
+オジマ,アキラ
+オカベ,イチロウ
+オカダ,トオル
+オカモト,マサキ
+オカネ,タカシ
+オカノ,ヒデオ
+オカノ,マサコ
+オカザキ,ハルヒコ
+ワタナベ,マサトシ
+オクダ,アツヒロ
+オクノ,カツシ
+オナヤ,カズコ
+オノ,キヨシ
+オノ,シンヤ
+オオノ,ユタカ
+オサナイ,キヨアキ
+オザキ,ヒデオ
+サイトウ,ヨシミ
+サイトウ,ジュン
+サジ,ヤスヒデ
+サジ,カズオ
+サカイ,カズヒコ
+サカイ,トモスケ
+サカクラ,タカヒロ
+サカウエ,ヤスユキ
+ササベ,マコト
+ササキ,ヒデカズ
+ナミキ,ヒロシ
+サタケ,カツヒロ
+サタケ,ワキ
+サトウ,シュウイチ
+サトウ,タケシ
+サトウ,ナオキ
+サトウ,ユウゾウ
+サトウ,シゲキ
+サトウ,ヒロシ
+サワダ,ハジメ
+セキグチ,ヒロアキ
+セキモト,トシユキ
+セキネ,キイチ
+セキオカ,マモル
+セキヤ,ヒロアキ
+セキ,ジュンイチロ
+センタ,ノリアキ
+シバタ,サトシ
+シイナ,フミハル
+シイヤ,ヒデキ
+シマバヤシ,マモル
+シマダ,シンイチロウ
+シマダ,ミチトシ
+シマムラ,アキヒト
+シミズ,ヒデトシ
+シミズ,イタル
+シモムラ,カツアキ
+シノダ,コウジ
+シノハラ,モトユキ
+シオザワ,ノブユキ
+シライシ,ユウジ
+シラサキ,ヨウコ
+シラトリ,ヒデジ
+シサイ,マサヒロ
+ショウダ,ケイスケ
+ソウ,ナオキ
+ソノベ,トオル
+スドウ,シュンイチ
+スドウ,サトコ
+スギウラ,ナオキ
+スギヤマ,リョウイチ
+スギヤマ,トモジ
+スミダ,ヒロキ
+スミカワ,ヒトシ
+スズキ,ミネカズ
+スズキ,ヒロシ
+スズキ,アツシ
+スズキ,トシナリ
+スズキ,ヨシユキ
+スズキ,ヤスゾ
+スズキ,ハジメ
+スズキ,カズアキ
+ホソカワ,ユリ
+タブシ,イクタ
+タチザワ,ノリフミ
+タダ,タカアキ
+タダ,ヒロトシ
+タカタ,ユウスケ
+タカガキ,ヒデカズ
+ヤマザキ,ナオキ
+タカハシ,ヨシツグ
+タカハシ,ヒロキ
+タカハシ,マサヤス
+タカノ,タカヒロ
+タカサキ,タカシ
+タカス,カズヨ
+タカトリ,コウジ
+タカヤマ,マサミ
+タカヤマ,シゲル
+タカヤマ,ユウジ
+タカヤ,ヨシカズ
+タケダ,タエコ
+タケダ,ヒロユキ
+マツオカ,ヨシヒロ
+タケイ,ノブヒコ
+タケウチ,トモオキ
+タケウチ,ノリトシ
+タケ,ケイコ
+タキミヤ,トモヒロ
+タマタニ,カズアキ
+タムラ,ヨシヒロ
+タムラ,ケンジ
+タナカ,カズヒサ
+タナカ,トモヤス
+タナカ,アヤコ
+タナカ,ノリヒロ
+タニモト,シンイチ
+タニヤマ,アキヒコ
+タンノ,オサム
+タノ,ヒサオ
+テラザワ,アキラ
+トクシゲ,サトル
+ゴトウ,ナオキ
+トミナガ,ヒロヒサ
+トンショウ,ヒデユキ
+ツボイ,ショウイチ
+ツボタ,ショウジ
+ツジムラ,ナオキ
+マツムラ,アキラ
+ツカダ,ヒデキ
+ツネヨシ,サトミ
+ツルオカ,マサヤ
+ツル,ヨシオ
+ウチダ,ヒデユキ
+ウエダ,タモツ
+ウメサキ,キヨシ
+ウラカワ,ユウジ
+ウラカワ,カズシ
+ワダ,ジュン
+ワカバヤシ,ケンジ
+ワカマツ,ヨシカズ
+ワタナベ,アツコ
+ワタナベ,タカシ
+ワタリ,コウジ
+ヤベ,コウイチ
+ヤハギ,シンジ
+ヤマダ,カズヒロ
+ヤマダ,カズヒロ
+ヤマコシ,マサユキ
+ヤマモト,ソウイチ
+ヤマモト,アツシ
+ヤマモト,ヨウイチ
+ヤマモト,サチ
+ヤマモト,マサミ
+ヤマウチ,トオル
+ヤマノ,ヒロフミ
+ヤマオカ,トモタカ
+ヤマシタ,トシヒデ
+ヤマウチ,タケシ
+ヤマザキ,ヒロマサ
+ヤマザキ,ユカリ
+ヤナギシマ,マスミ
+ヤマモト,ミカコ
+ヤノ,タカヒコ
+ヤザキ,タケシ
+ヨゴ,ヤスハル
+ヨコイ,カツマサ
+ヨコミゾ,トシキ
+ヨコタ,ユウジ
+ヨコタ,ヒサオ
+ヨコタ,ユウコ
+ヨシダ,シンイチロウ
+ヨシダ,マチコ
+ヨシフサ,イクフミ
+ヨシハラ,トモマサ
+ヨシイエ,ハジメ
+ヨシカワ,チエ
+ヨシカワ,ミツヒロ
+ヨシオ,ユウジ
+ユアサ,マサヨシ
+ユキ,アキラ
+アダチ,トシユキ
+オオニシ,カズオ
+オオタ,ミワコ
+アサノ,ミチコ
+ニシムラ,ミツヨシ
+ヤマダ,ヒロノリ
+サイ,クニオ
+ミヤモト,カズオ
+スズキ,カズヒコ
+フクイ,クニヤ
+オクダ,ヒサコ
+サイトウ,タカオ
+フルヤ,カツミ
+モトヤマ,ナオヒロ
+ヨシザキ,ユウイチ
+ナカムラ,アツロウ
+トキワ,シュウイチ
+イナダ,マサツナ
+トキワ,ノリユキ
+ヨシダ,タカユキ
+タカノ,ケイコ
+ウエダ,トモコ
+ツチヤ,ユウコ
+シモカワ,フミヒコ
+マツイ,カツミ
+スガヤ,ヨシオ
+ミノグチ,ヤスコ
+ウエダ,ヒカル
+イノ,トモジ
+マエダ,マコト
+ツボタ,ノリオ
+ヨシミ,イクオ
+イチカワ,シゲヒロ
+ホリ,ヒデヤ
+ハヤシ,ユタカ
+シバタ,イクコ
+コバヤシ,マスヒコ
+オオクボ,タケシ
+イワタ,ノブユキ
+フジタ,マサヒロ
+キタムラ,カズオ
+クロキ,ケイコ
+ヤマモト,タカシ
+ヤマバタ,ユキコ
+サイトウ,シュウイチ
+フジワラ,タダシ
+イトウ,カズト
+イイケ,トオル
+サムカワ,アキノリ
+アズマ,マサキ
+アオキ,アツシ
+フジタ,ツネオ
+ミヨシ,トシカズ
+セキヤマ,ヨシオ
+テラダ,テルヒサ
+エンド,タケシ
+カキモト,ケンジロウ
+フルヤ,イワオ
+マキムラ,タケオ
+コンノ,ヒロシ
+スギサキ,トシユキ
+ヨシダ,シゲオ
+ハギワラ,ヒロシ
+ヤザキ,ユウジ
+ニノミヤ,カズオ
+コサカ,ヒロヤス
+サノ,シンゴ
+サイトウ,ダイスケ
+シモセ,タカヨシ
+タカハシ,カズヒト
+タツオカ,マサキ
+タバタ,ヨシタカ
+ナオイ,マサコ
+ナガタ,マサオ
+ニシオカ,シゲル
+マツカワ,アツシ
+ミズノ,ユウコ
+トクナガ,ケイコ
+ムラカミ,ヒロキ
+ヤスカワ,トシノリ
+ヤマグチ,ユキオ
+ヨコウエ,タダシ
+アズマ,ノボル
+イナダ,ミツユキ
+イシイ,ノボル
+イマニシ,タケオ
+オカノ,カネミツ
+キシ,トシコ
+クボタ,マサノリ
+コミナミ,マユミ
+アイヤマ,ショウジロウ
+サノ,チカラ
+タキガワ,シゲヨシ
+コンノ,ヒロヤス
+センダイ,タカシ
+ニワノ,ヒデスケ
+シ,ナオヨシ
+カトウ,カズナリ
+アカサカ,クニオ
+オンズカ,ヒロシ
+コガ,コウイチ
+ハヤカワ,トモミ
+ハセガワ,マサヨシ
+フルカワ,タケシ
+フジカド,ユウジ
+トノカワ,タケシ
+マツオ,ヨシオ
+キミズカ,マサノリ
+オチ,マコト
+イチコハラ,マサヤス
+イケダ,アキコ
+アラタケ,イクオ
+イケダ,トキオ
+イトウ,ヨウイチ
+イケダ,エツ
+イイダ,マサト
+オオクマ,カズエ
+クサバ,マサキ
+コバヤシ,サヨコ
+ゴトウ,カズヤ
+スズキ,モトノリ
+セキネ,ヒロシ
+タカダ,トシユキ
+コンド,ヨウスケ
+タケヤマ,ケイシロウ
+タカイチ,オサム
+ソダ,ケンジ
+タノ,マコト
+シノザキ,サトシ
+ハラダ,アヤ
+クドウ,カツコ
+ツノダ,ナオコ
+フルカワ,トシアキ
+モリタ,マサユキ
+ヤマモト,トオル
+ヤマシタ,ヨシハル
+ユカワ,ヨシオ
+ヨシダ,エイコ
+ハヤシ,トシタカ
+タンノ,エイイチ
+タカハシ,マコト
+ナリアイ,ヨシノリ
+タカムラ,アキオ
+タンノ,テツオ
+コバヤシ,コウイチ
+ゴトウ,トオル
+ゴウダ,キョウコ
+ナカシマ,ミツオ
+ホシノ,フミタダ
+ワコ,ナオキ
+スズキ,シゲオ
+ヨシマツ,マサクニ
+ナミオカ,シンジ
+ヤマグチ,ヒロカズ
+イシバシ,マコト
+イシダ,センヤ
+ウチヤマ,セイジ
+エンド,シゲル
+ナカノ,マサフミ
+イマイ,カズオ
+オサナイ,アツシ
+サカモト,キヨシ
+シオミ,チカシ
+シマザキ,ナオキ
+テルヤ,トシヤ
+ナカタニ,ナオキ
+ハギワラ,キヨカズ
+ヒガシ,ショウコ
+ホリウチ,ヨシオ
+ミゾロギ,ナオキ
+モリ,タモツ
+イノウエ,タケヒコ
+シダ,ミチヨ
+ヤマモト,ミチコ
+ヤマモト,ヒデアキ
+オオタキ,カズヤ
+フジ,サナエ
+アキモト,マモル
+イイジマ,アキコ
+オグマ,ユミコ
+サトウ,タカオ
+ツチヤ,ヨシヒロ
+サイトウ,カズヨシ
+ハラ,セイイチロウ
+フジマキ,シンヤ
+ムロタ,ミツマサ
+モリ,トオル
+ミゾグチ,トシユキ
+イケハタ,ヒロユキ
+オガワ,ヒロタカ
+ウエノ,マサトシ
+タナカ,カズヒロ
+コバヤシ,マサカズ
+クロス,ヤスジ
+キタガワ,ヒロシ
+シノミ,マサユキ
+ハセ,ユウゾウ
+テルヌマ,ヨウコ
+キクチ,サトシ
+ハシモト,ノリユキ
+オオカワ,シント
+オオニシ,ソウイチ
+アベ,マサヒト
+アダチ,ヒデキ
+アダチ,マサト
+アダチ,トシユキ
+アゴ,カオリ
+アイハラ,アキヒコ
+アイハラ,ヒデオ
+アイザワ,ジュンイチ
+アカマツ,タツオ
+アカマ,トモミ
+アカセ,マサユキ
+アカヤマ,シンゲン
+フクシマ,トモノ
+アキバ,ツトム
+アキノ,ハルキ
+アキシカ,ユウジ
+ナメキ,ナオミ
+アキズキ,シンイチ
+アマダ,ユキオ
+アマノ,トオル
+アミノ,ノブハル
+アンベ,ヤスシ
+アンドウ,ヒロトシ
+アンザイ,タカヨシ
+アンザイ,ヒロシ
+アオキ,サトシ
+アオヤギ,タカオ
+アオヤギ,ヒロユキ
+アオヤギ,ヒサシ
+アラカワ,タイスケ
+アラカワ,マサユキ
+アラキ,トシユキ
+アラヤス,ヒトシ
+アラ,アキオ
+アリタ,キョウコ
+アサダ,クニオ
+アサダ,ヒロアキ
+アサカワ,ノリエ
+アサクラ,トモユキ
+ナカサト,アキラ
+アサノ,ヨシヒロ
+アサリ,カズキ
+アツミ,アキヨシ
+アワカ,カツミ
+ババ,カズヒロ
+バン,ケンゾウ
+バン,ワタル
+バン,コウタロウ
+チョウサ,マサシ
+ダイド,ケイシン
+ダイモン,ナオヒコ
+デムラ,ヨシト
+ドイ,タカシ
+エビヌマ,アケミ
+エグチ,ジュン
+エハラ,カズオ
+エナミ,ナツコ
+エトウ,ヨシナル
+イワサキ,カズオ
+エザキ,ユウジ
+フジエダ,ジュン
+フジエ,コウイチ
+フジガキ,ヨシチカ
+フジイ,トシユキ
+フジイ,アキラ
+フジイ,ジュンイチ
+フジイ,ミユキ
+フジイ,シゲノリ
+フジカワ,シンイチ
+フジモリ,トモノ
+フジモト,ショウゴ
+フジモト,シノ
+フジノ,タカシ
+フジオカ,ヤスシ
+オグラ,アヤコ
+フジタ,マサト
+フジタ,サトル
+フジタ,ユキオ
+フジタ,ショウジ
+フジワラ,ヒロシ
+フカダ,アツシ
+フカオ,ミツヒロ
+フカオ,ミサキ
+フカセ,
+フクチ,ヨシヒロ
+フクダ,ユウコ
+フクダ,フミヒコ
+マツカワ,ヒデオ
+フクダ,ミカ
+フクダ,ユキコ
+フクダ,ケンジ
+フクハラ,ユキオ
+フクイ,ヒロシ
+フクイ,ジュンイチ
+フクオカ,シンゴ
+シガ,ナオト
+フクシマ,アツシ
+フクシマ,チカコ
+フクシマ,ナオキ
+オオノ,ナオキ
+フナツ,トシユキ
+ゴウダ,ヨリコ
+ゴウダ,ヒデアキ
+ゴウ,カイロウ
+コグレ,キンヤ
+ゴトウ,タカシ
+ゴトウ,ユキヨ
+ハガ,リョウイチ
+ハギワラ,キクオ
+ハマダ,アキオ
+マエダ,ケンイチ
+ハマハタ,ノボル
+ハマノ,ノブヒロ
+ハナブサ,リュウイチロウ
+ハナタ,ヨシジ
+ハナミツ,ヨシタカ
+ハンダ,スミト
+ハラダ,アヤコ
+ハラダ,フミオ
+ハラダ,ジュンイチ
+ハラダ,マサノリ
+ハラ,マサユキ
+ハラ,ミユキ
+ハセガワ,マコト
+ハシグチ,イサオ
+ハシモト,マサトシ
+ハシモト,ノリキ
+ハタケヤマ,サトシ
+ハタナカ,キヨシ
+ハツシマ,ケン
+ハットリ,ヨシヒサ
+ハットリ,ツネヒサ
+ハットリ,マサコ
+ハットリ,フミオ
+ハットリ,ユキヒコ
+ハットリ,ヨシノリ
+ハヤカワ,アキラ
+ハヤシダ,マサヤ
+カンダ,ケンジ
+ハヤシ,コウジ
+ハヤシ,ツヨシ
+ハヤシ,ヒロシ
+ハヤシ,カツミ
+トビカワ,ミユキ
+ヒゲタ,ヨウイチ
+ヒグチ,ミツヒロ
+ヒグチ,ユウコ
+ヒジカワ,ヨシノリ
+ヒカイ,マドカ
+ヒナタ,ジュン
+ヒノ,ショウイチ
+ヒノ,タカユキ
+ヒラギ,ヤスシ
+ヨモダ,カズト
+ヒラノ,マサノブ
+ヒラノ,ヒロユキ
+ヒラサワ,カズヒロ
+ヒラタ,マサヒロ
+アサノ,ヒロシ
+ヒラタ,ヒサオ
+ヒラツカ,タケシ
+ヒロカワ,フミアキ
+ヒロナカ,カズヒサ
+ヒロセ,ヒサユキ
+タシロ,キミコ
+ヒロセ,マコト
+ヒシヌマ,ヒロノブ
+イワモト,ジュン
+ヒウラ,ヒトシ
+スギモト,セイイチ
+ホンマ,ヤスユキ
+ホンマ,ツヨシ
+ホンマ,タイラ
+ホンマ,タツロウ
+ホリカワ,ジュンイチ
+ホリオ,カツヨシ
+ホリ,カズオ
+ホリ,アツシ
+ホリ,コウイチ
+ホシノ,シンジ
+ホシノ,アキコ
+ホシノ,フトシ
+ホシ,ヒロコ
+ホソ,カズミ
+ホタテ,ユカ
+イチカワ,ユミコ
+イチカワ,サトシ
+イチキ,タケシ
+イチノセ,アリ
+イダ,ナオキ
+イデイ,マサカズ
+イガラシ,ユウジ
+イグチ,ゴウ
+イイダ,エイザブロウ
+イイダ,フジオ
+イイジマ,ヒロユキ
+イイジマ,カズノリ
+イイムラ,ヨシノブ
+イイノ,ヒデキ
+イイズカ,ヒロシ
+イイズカ,カツヒコ
+ハルタ,トシコ
+イケダ,ナオヒロ
+スズキ,トオル
+イケダ,クニヒロ
+イソベ,コウジ
+イケヤマ,スギオ
+イクタ,トシアキ
+イマイズミ,チズコ
+モリシタ,シゲキ
+イマイ,タダシ
+イマムラ,マナブ
+イマムラ,ノリユキ
+イナミ,ケンヤ
+イノウエ,ヤスヒデ
+イノウエ,ヒロシ
+イノウエ,ヒロシ
+イノウエ,ヒロタカ
+イノウエ,ミツコ
+イヌイ,ユキトシ
+イシダ,マナブ
+イシダ,トシヒロ
+イシダ,ユタカ
+イシグロ,マリ
+イシグロ,ヒロシ
+イシハラ,ジュンイチ
+イシイ,カオル
+イシイ,ケイイチ
+イシイ,コウジ
+ユキマサ,マサトシ
+イシカワ,タカシ
+イシカワ,ヨウコ
+イシクラ,ユタカ
+イシモリ,ヒロアキ
+イシモト,リエ
+イシモト,サチコ
+イシオカ,ユカ
+イシオカ,ノブオ
+イシワタ,ナオヒサ
+カン,ヨウイチロウ
+イシザカ,カヨコ
+イソガイ,タカヒロ
+イタバシ,シンイチ
+イタバシ,シゲキ
+サギヤ,ヒデアキ
+イトウ,テツヤ
+イトウ,アケミ
+イトウ,ノゾム
+イトウ,ナオヨシ
+イトウ,カズシゲ
+イトウ,ナオユキ
+イトウ,タカシ
+サカイ,コウイチ
+イトウ,カズユキ
+イワイ,カオル
+シマムラ,フサチカ
+イワイ,キョウコ
+カワナカ,カズミ
+イワクボ,タカユキ
+イワモト,サヤカ
+イワモト,ヒデアキ
+タケダ,サチコ
+イワムラ,ヒロユキ
+イワナガ,ヒデオ
+イワオ,コウイチ
+イワサキ,タツヒコ
+イワサキ,トラヒコ
+セガワ,マサタカ
+イワシロ,ヨシヒサ
+イズミ,マコト
+カエリヤマ,ナオキ
+カガミ,イクオ
+カガミ,シゲヨシ
+カジタニ,カズヒコ
+ヤマモト,エイイチ
+カキヌマ,ヒロアキ
+カク,ヒロユキ
+カマダ,マコト
+イナガキ,マサエ
+カマモト,タエコ
+カマタニ,ナオフミ
+カマタ,トモコ
+ヤマダ,エイジ
+カメダ,アキコ
+カメヤ,ヒデキ
+カミ,マコト
+カミオ,マナミ
+カミヤ,マサノリ
+カモト,ヨリコ
+カナダ,マサタカ
+カナイ,キョウコ
+カナイ,リエコ
+カナザワ,サダイチ
+カンダ,タカヒロ
+カネイチ,アキオ
+カネコ,ヒロブミ
+カネコ,マスオ
+カネコ,シュウジ
+カネコ,タケヒコ
+カネコ,ヤエ
+カネコ,ヒサシ
+カネマル,アツシ
+カリヤ,ヨシノブ
+カルベ,キョウジ
+カシマ,ヒロユキ
+カシワギ,ヨシユキ
+カシワギ,ヒロシ
+カスヤ,ケイゴ
+カスヤ,ショウコ
+カスヤ,タカシ
+カタノ,ケンイチ
+シラキ,カツオ
+カタオカ,ヨウイチロウ
+カタオカ,アツシ
+カタヤマ,
+カトウ,タテオ
+カトウ,ヒロシ
+カトウ,ヒロコ
+カトウ,ヒロヤ
+カトウ,タケシ
+ゴトウ,ヒロカズ
+カツヤ,ヒロシ
+カワダ,ミチオ
+カワダ,サチコ
+カワグチ,サトシ
+カワハラ,セイイチロウ
+カワハラ,ヒロアキ
+カワハタ,ヒロユキ
+カワイ,ジュンイチ
+カワイ,カヨコ
+カワイ,ミホ
+カワカミ,タケシ
+カワキタ,トモアキ
+カワキタ,ヤスコ
+カワムラ,ユキマサ
+カワムラ,ユキ
+カワムラ,マサユキ
+カワゾエ,ミナ
+フタクチ,タダシ
+キダ,ヤスヒロ
+キダ,ヨシフミ
+キド,アキオ
+キハラ,カツトシ
+キクチ,コウジ
+キクチ,アイコ
+キクタ,イサオ
+キモト,カズマサ
+キムラ,ミノル
+キムラ,ナホミ
+キムラ,シュンイチ
+キムラ,スミヒロ
+マツモト,タクロウ
+キムラ,トシオ
+キムラ,ジュンコ
+オカザキ,タケオ
+キムラ,ユカ
+キムラ,アツシ
+キノシタ,ケイコ
+キシ,キミヒコ
+キス,ジュンコ
+キタカゼ,ノブキ
+キタムラ,アキオ
+キウチ,ナオト
+キウチ,タカゾウ
+キヨタ,ダイスケ
+コバヤシ,マサハル
+コバヤシ,ケンジ
+コバヤシ,ミヨコ
+コバヤシ,ヨシユキ
+コバヤシ,タカシ
+コバヤシ,ヒデアキ
+コバヤシ,ユウイチ
+コバヤシ,ヨシオ
+コバヤシ,ヒロヒデ
+ヒロセ,ハルオ
+コデラ,アキヒロ
+コガイ,ヒサタカ
+コグレ,カズオ
+モリタ,ミチヒコ
+コモト,ヨウスケ
+コンノ,アキヒロ
+コサカ,ヨシユキ
+コイケ,キヨシ
+コイケ,ヨウイチ
+コイシ,アキオ
+コジマ,カズタカ
+コジマ,テツ
+コクホ,カツヤ
+コクマイ,ミエコ
+コマガタ,マコト
+コマキ,カズユキ
+コマツ,ヨウイチ
+コマツ,アツシ
+コミネ,カツノリ
+コミヤマ,ヨシノブ
+コモオカ,フミオ
+コモリ,シゲノリ
+コンド,ヒロシ
+コンド,ミキオ
+コンド,ヨシゾウ
+コンド,タカユキ
+コンドウ,タツト
+コンノ,テツオ
+コスギ,ヨウイチ
+コウダ,トシユキ
+コヤナギ,ノブヒコ
+クボタ,ヒロユキ
+クボタ,ナオキ
+クボ,タカユキ
+クドウ,ゴウ
+クガ,シゲル
+クジマ,エリ
+クマダ,ヒロシ
+クマキ,マキ
+クマクラ,カツト
+クマモト,アキヒコ
+クモカワ,ヒロノリ
+クラシマ,コウイチ
+クリハラ,コウジ
+クリハラ,ユミコ
+クリムラ,シュウジ
+クリス,ヒロシ
+クリヤマ,ユキエ
+クリヤマ,ジュンイチ
+クロダ,アキラ
+クロカワ,ヒロシ
+クロキ,ノブヤ
+クロサキ,ノブアキ
+クロス,ヒロシ
+クシダ,ワタル
+クスダ,ヨシコ
+クワバラ,イチロウ
+ウチダ,ケイイチ
+マエダ,ヤスヒコ
+ニワ,シゲミツ
+マエヒラ,マサト
+マエカワ,ヒデタカ
+マキムラ,ヒロミツ
+マキノ,ユウジ
+マキノ,マリ
+ヨウコタ,ミチヤス
+マルヤマ,タダシ
+マスダ,ミキオ
+マスダ,テルアキ
+マスヒロ,キミ
+マスヤマ,タクジ
+マツバラ,コウジ
+マツバラ,ヤスナリ
+マツダイラ,マサト
+マツダ,シゲオ
+ササモト,サユリ
+マツダ,トシミ
+マツフサ,カツジ
+マツイ,トオル
+マツイ,ジュンイチ
+マツキ,アキヒコ
+カノウ,ヒロユキ
+マツモト,ユウイチ
+マツモト,トシユキ
+マツモト,フジオ
+ハシモト,ショウジ
+マツムラ,キニチ
+マツムラ,ヒロユキ
+マツナミ,ヒロユキ
+マツナミ,ユキオ
+チバ,テツヤ
+マツシバ,コウイチ
+マツシタ,ヒロシ
+マツシタ,エイイチ
+マツウラ,イチロウ
+マツザキ,タダシ
+イマイ,マサユキ
+マユヤマ,アツシ
+メン,マサト
+ミチガミ,ノリオ
+ミハラ,ハルコ
+ミキ,アツシ
+ミモリ,ヒロシ
+ミナミグチ,カナメ
+ミナズキ,ナオユキ
+ミネムラ,ユカリ
+ミシナ,カズヒロ
+ミツイ,タケハル
+ミウラ,ヨウイチ
+ミウラ,ケンイチ
+ムラカミ,マサハル
+ミワ,シゲユキ
+ミヤガワ,マサオ
+ミヤギ,ミチコ
+ミヤハラ,トシオ
+ミヤハシ,キョウコ
+ミヤカワ,マサトシ
+ミヤキ,マサズミ
+ミヤモト,セイジ
+ミヤモト,ヒロシ
+ミヤモト,マサヒロ
+ミヤサカ,ナオキ
+ミヤタケ,シゲミ
+ミヤタ,トシヒロ
+ミヤタ,ユウジ
+ミヤタ,マサミチ
+クロダ,ケイコ
+ミヨシ,ナオコ
+ミズコシ,マキオ
+ミズコシ,トシオ
+ミズノ,タツヤ
+ミズノ,ノブハル
+ミズタニ,シンジ
+モリ,ショウジ
+モリ,ノリコ
+モリカワ,アキコ
+モリキ,ヤスヒロ
+モリシタ,ヨシミ
+モリタ,タダシ
+モリタ,カズヒロ
+モリヤマ,トシオ
+モリゾノ,ツヨシ
+モリ,サトル
+モリ,カツトミ
+モリ,ヤスオ
+モリ,ヒロノリ
+モロズミ,ノボル
+イノハナ,カズオ
+コジマ,シンゴ
+ムカイ,タツミ
+ムカイ,サチオ
+ムライ,チナツ
+ムラカミ,トオル
+ムラカミ,チハル
+ムラマツ,マサカズ
+ニワ,カツヒロ
+ムラタ,サトシ
+ムラタ,イチロウ
+オオノ,タカシ
+ムラヤマ,チハル
+ムトウ,ヒロヤ
+ムトウ,タカシ
+ムトウ,アマネ
+ムツシカ,エイイチ
+ナガイ,ヒロシ
+ナガイ,カツユキ
+ナガモト,ケンイチ
+アライ,タケトシ
+ナガオ,ヤスナリ
+ナガサワ,アツシ
+ナガサワ,カズト
+ナガヤマ,アキヒロ
+ナイトウ,フサノブ
+ナイトウ,カツオ
+ナカバヤシ,カズヒサ
+ナカダテ,コウイチ
+ナカガキ,マサノリ
+ナガエ,タカユキ
+ナカガワ,テルジ
+ナカガワ,トシユキ
+ナカゴメ,ヨシナリ
+ナカヒラ,ユタカ
+ナカイ,エミコ
+ナカジマ,カツトモ
+ナカジマ,ミエコ
+ナカジマ,ナオヤ
+ナカジマ,エリ
+ナカジマ,ツネアキ
+ナカジマ,ケイイチ
+ナカジマ,ナオヒデ
+ナカマタ,ノリヒロ
+ナカミチ,シュンイチロウ
+ナカムラ,マサキ
+ナカムラ,トシアキ
+ナカムラ,マコト
+ナカムラ,テルヒロ
+ナカムラ,シンジ
+ナカムラ,ハジメ
+ナカムラ,ノリアキ
+ナカムラ,ヒロユキ
+ナカムラ,カズヒコ
+ナカムラ,マサユキ
+ナカムラ,ナオキ
+ナカニシ,トシアキ
+オオニシ,マサノリ
+ナカニシ,トシユキ
+ナカニシ,ノブヤス
+ナカノ,キヨタカ
+オカザワ,カヨコ
+ナカノ,ノゾミ
+ナカノ,ヨシフミ
+ナカノ,モエコ
+ナカオカ,テツヤ
+ナカオ,フミコ
+ナカオ,エイジ
+ナカセ,コウシ
+ナカソギ,マサトミ
+ナカタ,シゲコ
+ナカツカ,タカシ
+ナカツカ,マコト
+ナカヤマ,ヒデキ
+ナカヤマ,アツシ
+ナカヤマ,タツヤ
+ナカヤマ,コウヘイ
+ナカヤマ,カツヒコ
+ナカザワ,ミツグ
+ナミキ,クニオ
+ナラシマ,マサアキ
+ナラ,タケヒコ
+クドウ,ヒサシ
+ナツノ,ミチハル
+ナツヤマ,ユウコ
+エトウ,ヒロシ
+ニヘイ,タカシ
+オクノ,サユリ
+マエホリ,ヒロミ
+ニシダ,ヒトシ
+ニシグチ,タツオ
+モリ,ユキコ
+ニシカワ,マサシ
+ニシクラ,シゲル
+ニシモト,マサキ
+ニシオ,トシヒコ
+ニシワキ,ケイコ
+ニシ,マサル
+ニワ,マサキ
+ノブマサ,ミサト
+ノダ,モトヒコ
+ノグチ,タカシ
+ノグチ,ケン
+ノホリ,ヒデユキ
+ノタニ,マサタケ
+ノマ,サトシ
+ノミヤマ,トシロウ
+ノモト,トシアキ
+タンザン,ミチオ
+オオカワ,カズヒコ
+ノノヤマ,マサキ
+ノリカネ,マサル
+ノロ,セイイチ
+ノ,シンイチ
+オバナ,ヒロシ
+オビナタ,アキヒコ
+オチアイ,ヨシノリ
+シマムラ,ヒロシ
+オダネ,ヨシカズ
+オガワ,ナオミ
+オグラ,ヒデトシ
+オグラ,セイジ
+オグラ,シンスケ
+オオグロ,イワオ
+オオバヤシ,ケイゾウ
+オオバヤシ,ヤスユキ
+オオバ,エリコ
+オチ,シンゴ
+オオデ,トシヒコ
+オオホリ,ノリオ
+オホ,コスケ
+オオイシ,モトイチ
+オキ,ヨシユキ
+オオクボ,マサヒロ
+オオクボ,マサクニ
+オオミチ,タケノリ
+オムラ,ツネアキ
+オオニシ,イサオ
+オノ,コウイチロウ
+オライ,ススム
+オサキ,サトシ
+オオサワ,ソウイチロウ
+オオサワ,タダシ
+オオサワ,リュウジ
+オオタニ,ケンジ
+オオタ,ナオキ
+オオトモ,アキオ
+オザキ,コウジ
+オオツカ,タケシ
+オオツカ,トシロウ
+オオツキ,テツヤ
+オオヤ,マサヒロ
+オヒャ,クニヒコ
+オオヤ,スグル
+オカダ,ツグオ
+オカダ,ヨシヒロ
+オカダ,トシヒロ
+オカダ,シンイチ
+オカハラ,ヒロキ
+オカモト,ヨシオ
+クサバ,ヒロシ
+オカムラ,マサカズ
+オカムラ,マサキ
+オカノ,ヒロシ
+トビタ,シュウヘイ
+ホソカワ,コウジ
+ウエダ,トヨカズ
+コセキ,ユミ
+タザワ,シュンジ
+ヤマザキ,ヨシカズ
+エグチ,ヒロユキ
+モチダ,ススム
+アキモト,キエイ
+ニシ,アツキ
+イマイシ,シゲトシ
+タカヤス,ノブヨシ
+ハタ,マサユキ
+フジサワ,アキラ
+ムトウ,ヒサシ
+モタイ,シンイチ
+タダ,タカユキ
+コイズミ,カズヨシ
+ツボクラ,コウゾウ
+ヒラバヤシ,ヒロジ
+ツジカワ,ヒロカズ
+ミツイシ,セイイチ
+ヤマシタ,ケンジ
+マルオカ,ノブタカ
+フカオ,トオル
+ツムラ,カナコ
+マユミ,トシエ
+アラカワ,ミドリ
+オフチ,ジュン
+ササモリ,ユタカ
+サトウ,アキラ
+タカギ,マコト
+タナカ,マサミツ
+ツボゴ,フミヒコ
+トリサワ,ヒロユキ
+ナカグキ,ケイゴ
+ハセガワ,トモユキ
+ハヤシ,コウジ
+ヒラヤマ,シゲル
+フクシマ,トシキ
+マツシマ,カズヒロ
+ヨシイ,ヒデキ
+イシイ,ノリコ
+イマイ,ミユキ
+ナカツジ,ユキエ
+ホイダ,ツネオ
+サワハタ,ミツル
+タハラ,ショウジ
+タカハシ,ミネマサ
+スズキ,ヒデアキ
+ヨコヤマ,ケンジ
+イシカワ,ケンジ
+アサノ,ヨシタカ
+カネコ,シュウジ
+クロセ,ヨウスケ
+サカキバラ,アラタ
+カサマ,ケイコ
+スギヤマ,ヨシマサ
+スダ,テツヤ
+タナカ,アヤ
+ツボイ,エツコ
+ハシモト,チエコ
+フクチ,サトミ
+アライ,トモコ
+タナカ,ケンジ
+ヤシマ,ナオユキ
+カワマタ,タケノリ
+スンダ,アツヤ
+ミズタニ,ミノル
+ヤマコシ,ノリユキ
+アマガヤ,ユメノ
+アラキ,ヒサヨ
+イマイ,トシハル
+イマザキ,タカヒサ
+キムラ,カツヒデ
+スギヤマ,イサオ
+スズキ,ダイスケ
+ツル,ミノル
+ハコザキ,アキラ
+タキザワ,ツヨシ
+イトウ,カズノブ
+マスダ,ヨシノリ
+ツバキ,チアキ
+ミスミ,チカコ
+ヤイタ,マキ
+カワツ,ヒトシ
+ツカダ,タケヒコ
+ナカモト,フミコ
+フナビキ,サナエ
+ヨシザワ,キョウコ
+トウマ,ヨウコ
+セキ,マリ
+ムラタ,ナオキ
+カタヤマ,マサヒロ
+キド,シュウジ
+コバヤシ,コウジ
+シノミヤ,トモカズ
+タナカ,カズユキ
+ハラ,ヨシノリ
+モリタニ,ショウヘイ
+イチノセ,カズユキ
+フジモト,カツユキ
+ウエノ,コウジ
+シシド,トシノリ
+ミウラ,ススム
+ウチダ,ルミコ
+ドイ,コウイチ
+ソスミ,トシユキ
+ヨシダ,マサユキ
+タカハシ,トシオ
+ヤマグチ,ナエコ
+ササ,ユキコ
+ハセガワ,カオリ
+アツタ,ヨシオ
+イチカワ,マサアキ
+ウノ,サトミ
+オガワ,ユキコ
+オダ,ヒロカズ
+タカサキ,マキコ
+タカハシ,ツヨシ
+タダ,タダシ
+タナカ,ヒロシ
+トクナガ,ヒロシ
+トミタ,ジュンコ
+ナイトウ,リエ
+ハラダ,エミコ
+ヒラカワ,トモコ
+フナモト,ヒロタカ
+ドバシ,ユキ
+ミウラ,チコ
+ヨシダ,ヒロアキ
+オオタケ,ジュンジ
+クラタ,ヤスヒロ
+クリタ,サトシ
+ダン,マコト
+モリシマ,シンジ
+ヨシダ,ヨウジ
+ワカバヤシ,ユミコ
+アゲマツ,ヒロミチ
+イシグロ,コスケ
+カトウ,カズヒロ
+サイトウ,シンイチ
+ナイトウ,ミチヨ
+ミヤマエ,トシヤ
+カドワキ,アツシ
+フクモト,ミキオ
+ニシハラ,アキラ
+オカヤマ,カズナリ
+オカヤス,ミエコ
+クロカワ,トオル
+オキタ,ヨシヒサ
+オクミヤ,マサカズ
+オクムラ,ダイ
+オノダ,ナルミ
+オノデラ,ヒトシ
+オノ,ハルユキ
+オノ,ナオフミ
+オノ,ヨシフミ
+マツイ,テルオ
+オソエガワ,ヤスナリ
+オザキ,ノブユキ
+オゼキ,ヒロユキ
+タカノ,イサオ
+リョウカイ,ヨシキ
+サゲサカ,リュウイチ
+サギヤ,キョウイチ
+サイタ,マサヒロ
+サイトウ,アキミツ
+サイトウ,ゴロウ
+サイトウ,ヒロユキ
+サイトウ,ツネオ
+サイトウ,リカ
+サカグチ,ヒデアキ
+サカイ,ヒロミ
+シマダ,ヒロシ
+サカキバラ,イツロウ
+サカモト,ケンジ
+サカモト,マサキ
+サカモト,ムネヒロ
+サカリ,ノブヒロ
+サカタ,サトル
+サクマ,シンジ
+サクライ,タカノブ
+サクライ,タカシ
+サクライ,ヨシヒロ
+サンノウマル,ユキオ
+サノ,ユタカ
+ササベ,タツロウ
+ササキ,シンゴ
+ササキ,トモヒロ
+ササキ,タケシ
+ササキ,ナオト
+ヨシダ,ヒロシ
+サトウ,ヨシヒコ
+サトウ,カズノリ
+サトウ,タカノリ
+サトウ,ハヤト
+サトウ,ヤスヒコ
+サトウ,ヨシユキ
+サトウ,ヨシト
+サトウ,アキオ
+サトウ,マサコ
+サトウ,トモコ
+サトウ,ユウイチ
+サトウ,チアキ
+サトウ,カズヤ
+サトウ,マサミ
+サトウ,サトシ
+サワイデ,ユウイチ
+サワイ,コウイチロウ
+サヤナギ,マリ
+セガワ,ヨシヒロ
+セイミヤ,ヒロシ
+セイヤマ,シゲキ
+セキカワ,アキラ
+セキ,コウジ
+セキ,タケシ
+センダ,ヒロタカ
+センゴク,キョウコ
+セノ,トシアキ
+セシモ,コウジ
+セタカ,ケイ
+スガ,リョウイチ
+ミナミ,ヤスシ
+シバタ,チアキ
+シブヤ,ヒロミチ
+シブヤ,ツヨシ
+シブヤ,マサノリ
+シイノ,ヒロコ
+シカタ,タカヒロ
+シキブ,ヒロシ
+シマダ,マサヒロ
+シマダ,ヒロシ
+シマガミ,トシアキ
+シマモリ,マサヒコ
+シマムラ,ユキノリ
+シマザキ,コウ
+シマザキ,タカアキ
+シミズ,エイゾウ
+シミズ,リエ
+シミズ,ヒロシ
+シモダ,ケイミン
+シモヒラ,コウタロウ
+シノハラ,アキヒロ
+シノハラ,マナブ
+シノザキ,ノブコ
+シノザキ,ヒロキ
+シンポ,カスミ
+シンタニ,ユウジ
+オオキド,ソトヒロ
+シオヌマ,キヨミ
+シオタ,クニアキ
+シオヤ,マサヒロ
+シオザワ,イサオ
+シライ,シゲキ
+シラサキ,ヒロシ
+シラトリ,マサトシ
+シラトリ,タカヒロ
+シロキ,ヒトシ
+シロシタ,シゲキ
+カシマ,ヨシオ
+シュウ,ゴイチ
+イマイ,ヒデハル
+ソエダ,ヒロコ
+ソガ,イズル
+ソワ,カズナリ
+スダ,コウイチ
+スダ,マサル
+スダ,ナオキ
+スエダ,ノリヨシ
+スエモリ,サキコ
+スエオカ,ショウイチ
+スガワラ,シンジ
+スゲノ,ヤスヒロ
+スギモト,ヤスオ
+スギタ,ユウイチロ
+スギヤマ,ミツオ
+スギヤマ,ケイイチロウ
+スギヤマ,エイジ
+スミトモ,ノボル
+スミ,ユキ
+スナガ,ヒデユキ
+スザキ,テツヤ
+スズキ,テルミ
+スズキ,アキラ
+スズキ,ヤスシ
+スズキ,ユキオ
+スズキ,シノブ
+スズキ,シンイチ
+スズキ,トシヤ
+スズキ,ヒロシ
+スズキ,カズアキ
+スズキ,ケイジ
+オオニシ,マサハル
+スズキ,ノブオ
+スズキ,ノリユキ
+スズキ,リョウスケ
+タボ,シン
+タブチ,タツヤ
+タブサ,トシフミ
+タチカワ,ヤスユキ
+ヒラキ,ユウイチ
+タガイ,ヤスシ
+タガワ,ミホ
+タガ,ノブタカ
+タグチ,ミサオ
+タグチ,シン
+タグチ,ミナコ
+タカバタケ,ヨウイチ
+タカギ,ケンタロウ
+タカハラ,トシヤ
+タカハシ,トシユキ
+タカハシ,ヒロシ
+タカハシ,セイイチ
+タカハシ,ヨシヒサ
+タカハシ,ハルサダ
+タカハシ,マサコ
+タカハシ,マサユキ
+タカハシ,ヒデオ
+タカハシ,カズシゲ
+タカハシ,ノリヒコ
+タカハシ,トヨミ
+タカハシ,ミノル
+タカイシ,トモアキ
+コバヤシ,カズヒロ
+タカミ,ミノル
+タカムラ,シロウ
+タカナシ,ヨシノリ
+ハセガワ,ヒロユキ
+タカノ,キョウコ
+タカオカ,タカキ
+タカオカ,ノブユキ
+タカタニ,アキラ
+タカツジ,カツジ
+タカツカ,キヨシ
+タカツ,マサミ
+タカヤマ,シンイチ
+タカヤマ,トオル
+タカヤマ,ヤスシ
+タケダ,コウイチ
+タケダ,ヤスノリ
+タケダ,タカカズ
+タケダ,ナオヒト
+タケモト,ノゾミ
+タケモト,カツシ
+タケウチ,タカコ
+タケウチ,ヒロカズ
+タケウチ,ユウイチ
+タケウチ,トオル
+タキモト,タカヒロ
+タマチ,ヒロシ
+タムラ,トシヒロ
+タナベ,ツカサ
+タナカ,ケイコ
+タナカ,ナギサ
+タナカ,タカユキ
+タナカ,マキ
+タナカ,ヒロフミ
+タナカ,クニヒコ
+タナカ,カオリ
+タンダ,ミキコ
+タニダ,キミホ
+タニガワ,ヨシタカ
+タニムラ,ヨシナリ
+タニ,ヒロブミ
+タシロ,ユキオ
+ヒラサカ,ノブユキ
+タワダ,エイエツ
+タワラ,シンジ
+テラダ,トヨヒサ
+テラサキ,ヒロユキ
+テラシマ,ヒデコ
+コバヤシ,タイゾウ
+テラウチ,ヤスミツ
+ワタナベ,シンイチ
+トキトモ,マサノリ
+トクダ,タカユキ
+サクラギ,ノリヒサ
+トミモト,マサヒコ
+トミタ,ヒデオ
+トモミ,ヒロミツ
+トングウ,マサシ
+トリウミ,ヒロスケ
+トヨダ,カツヒサ
+トヨサト,ヒロシ
+トヨシマ,テツヤ
+ツチダ,ジュン
+ツチモト,マコト
+ツチヤ,メグミ
+ツダ,タツロウ
+ツダ,ユカ
+ツジモト,ユキオ
+ツジ,ノリオ
+ツジ,ヒロシ
+ツカゴシ,トシカズ
+ツカモト,ケイジ
+ツキダテ,ヒロシ
+モリタ,コウゾウ
+ツルタ,シノブ
+ツシマ,トモアキ
+ツシ,トシヒコ
+ツツミ,スミト
+ツヤマ,ヤスキ
+ウチダ,ユキオ
+ウチダ,ヨウコ
+ウチヤマ,タケシ
+ウダ,ユカリ
+ウエダ,サオリ
+ウエダ,ヒロシ
+ツカモト,チエミ
+ウエダ,ヒデオ
+キキョウ,ヨシタカ
+ウエダ,イクエ
+ウエグリ,トオル
+ウエハラ,ヒロユキ
+ウエマツ,カツヤ
+サトウ,カズヒコ
+ウエノ,ヒデタカ
+ウエノ,ヨシコ
+ウエノ,ヒロユキ
+ウエノ,シゲキ
+ウエノ,ヒデキ
+ウエヤマ,ヒロノリ
+ウメダ,カナウ
+ウメカワ,カヨ
+ナガタ,ノリコ
+ウラゴ,トヨヒロ
+ウルシザカ,ユキオ
+タカハシ,ショウイチ
+ウツノミヤ,シンペイ
+ワダ,カズヒロ
+ワダ,ミキエ
+ワダ,シズオ
+ワカバヤシ,ユミコ
+ワカバヤシ,カズヒコ
+ワカマツ,カズキ
+ワカマツ,コウジ
+ワキモト,ナリト
+ワクイ,シュウジ
+イトイ,ヨシヒサ
+ワタベ,カツヤ
+ワタベ,ナオタカ
+ワタナベ,シュンイチ
+ワタナベ,ヒロシ
+ワタナベ,タダシ
+ワタナベ,エイイチ
+ワタナベ,ヒデトシ
+ワタナベ,ヒロユキ
+ワタナベ,ヒロユキ
+ワタヌキ,マサル
+ヤブシタ,ミドリ
+ヤブタ,ミツヨシ
+ヤブウチ,ショウヘイ
+ヤジマ,ヨウコ
+ヤクシジ,フミヒロ
+ヤマダ,ユキコ
+ヤマダ,ヒロエ
+ヤマダ,ヒサ
+ヤマダ,アキノブ
+ヤマダ,アキオ
+ヤマダ,エイスケ
+ヤマガミ,ヒロフミ
+ヤマグチ,ジロウ
+ヤマグチ,コウジ
+ヤマカワ,シン
+ヤマコシ,タカシ
+ヤマモト,アキヒロ
+ヤマモト,ケイ
+ヤマモト,マサミチ
+ヤマモト,ヒロユキ
+ヤマモト,エイジ
+ヤマモト,ヒロフミ
+ヤマモト,マサノリ
+ヤマモト,マサトシ
+カワグチ,アキラ
+ヤマムロ,ヒロミチ
+イワタ,タケシ
+ヤマオカ,カズヒロ
+ヤマサキ,ヒデクニ
+ヤマシタ,ヒロシ
+ヤマシタ,ツトム
+ヤマシタ,トシアキ
+ヤマシタ,アキコ
+ヤマシタ,ヒロユキ
+ヤマシタ,カズヒデ
+ヤマシタ,カツユキ
+ヤマシタ,アキラ
+ヤマザキ,ヒロユキ
+ヤマザキ,カオル
+ヤマザキ,コウジ
+ヤナガワ,マサヒロ
+タカオカ,ヒカル
+ヤナセ,リョウイチ
+ヤノ,トモユキ
+ヤオ,エリコ
+ヤスダ,トシフミ
+ヤスカワ,ヒトミ
+ヨガイ,コウイチ
+ヨコガワ,セイジ
+ヨコサワ,マサユキ
+ヨコタ,ミナコ
+ヨコタ,ヤスシ
+ヨコウチ,ツトム
+ナカヤマ,アツシ
+ヨコヤマ,ハルヒコ
+ヨコヤマ,マサオ
+ヨネハラ,トシユキ
+ヨネムラ,タダシ
+ヨシダ,マサトシ
+ミヤムラ,ツトム
+ヨシダ,キミアキ
+ヨシダ,マサカツ
+ナカ,ヨシヒロ
+ヨシムラ,ヨウイチ
+ヨシムラ,ヒロミ
+ヌマオ,ミネオ
+ヨシザキ,エイジ
+ナカムラ,ケンジ
+ユアサ,リョウタ
+ユゲ,タカヒロ
+ユカワ,ヨシタカ
+マツダ,ヨシツグ
+アベ,ヤスヒロ
+ハセガワ,カツマサ
+ハシモト,ヒトシ
+ヒラツカ,タモツ
+ホシカワ,ミノル
+ホソヤ,ショウジ
+イシハラ,タカシ
+イワキ,タチハル
+カネダ,コウジ
+キムラ,タケシ
+コンノ,マコト
+マツダ,ヨシヒサ
+ミヤシタ,シゲトモ
+サカモト,マリ
+ノムラ,シンイチ
+オオバヤシ,エツコ
+サイトウ,ユキエ
+ササガワ,ユウコ
+サトウ,ヤヨイ
+シガ,マサミツ
+シノハラ,マサシ
+ショウ,メグミ
+タケガワ,ミエコ
+タツミ,ユタカ
+トミエ,ノリヒコ
+ワタナベ,マモル
+ヤマダ,ユウイチ
+ヤマダ,トミヒロ
+ヤマモト,タケシ
+ヤマザキ,マサオ
+コマツザキ,チアキ
+フチダ,マサヒコ
+タナカ,カズユキ
+ハヤシ,サホリ
+ナガタ,セイイチ
+ババ,マコト
+アカマ,タカシ
+カザマ,カズシゲ
+モリ,ヒロアキ
+イケダ,ツヨシ
+ワタナベ,カツト
+ミマ,フミオ
+アンドウ,トモヒロ
+マエゾノ,ミツヒロ
+オタカ,コウイチ
+ハヤシ,マサヒロ
+ウエノ,カズタカ
+ツノダ,ケイイチ
+スドウ,タカトシ
+サカモト,ミツアキ
+タナカ,モリシゲ
+コトウダ,ユキノリ
+カルベ,フミヒロ
+サイトウ,テルヨシ
+ヒラノ,ヒロコ
+サトウ,ヒロマサ
+ナカヤマ,ケンイチ
+ノダ,ユリコ
+マ,ヤスヒロ
+シナガワ,チカラ
+ナガヤス,コウジ
+アオキ,コウジ
+ナカタ,ハヤト
+ミクリヤ,テルユキ
+マルヤマ,ヒデトシ
+エチゼン,ヒサシ
+ナカニシ,ショウイチ
+ハギオ,トモヒコ
+タムラ,マサアキ
+タグチ,ヨシトシ
+オザワ,オサム
+ヤオイタ,トシヒロ
+アサノ,ノリヤス
+クサノ,テルヒロ
+ハマダ,マサジ
+イリヤマ,ハナコ
+ムラタ,ナオヤ
+アサノ,ヨウジ
+タカノ,ケンイチ
+ヤマグチ,アキトシ
+ムラカミ,ノリヒロ
+タナカ,カツジ
+タカオカ,ジュンイチ
+スズキ,ミサホ
+ミネギシ,ナオヤ
+アベ,ノリアキ
+アベ,ミズホ
+アベ,シュンジ
+アベ,ヒデキ
+アガツマ,アキラ
+アイザワ,タカシ
+アカイケ,ジュンコ
+アキモト,ヨシノブ
+アキタヤ,ユキオ
+アキヤマ,トシユキ
+アクツ,シゲキ
+アマノ,タダカツ
+アマノ,アツノリ
+アマノ,フミエ
+アメミヤ,カズミ
+アンドウ,マサヒロ
+アンドウ,テンセイ
+アンザイ,ユウジ
+アオキ,リツコ
+アオキ,タカユキ
+アオキ,サダハル
+アライ,ハルヒト
+アラキ,ヨウイチ
+アラキ,シゲミツ
+アラヤ,ヨシタカ
+アリヨシ,トモノブ
+アサヒナ,ヨウイチ
+アサイ,ナリト
+アサミ,ヒロユキ
+アサツケ,カズユキ
+アソ,クニカズ
+アズマ,マコト
+アズマ,サトコ
+ババ,スミコ
+ババ,トモコ
+カガ,ヨシキ
+ババ,ユウスケ
+バン,ユカ
+ビルカワ,レイコ
+ボウ,フクオ
+ダイゴ,シュンスケ
+ダイゴク,ジュンイチ
+ドバシ,トオル
+エビサワ,ヒロシ
+エハラ,ヒロトシ
+フチガミ,リュウタロウ
+フジバヤシ,ヒロシ
+フジエダ,リョウイチ
+フジイ,セイゴ
+フジイ,シンジ
+フジイ,ヨシノリ
+フジイ,マサヤ
+フジイ,ヒデアキ
+サカモト,シュウヘイ
+キタダ,エイイチ
+フジイ,カオル
+フジイ,シンイチ
+フジイ,タツヤ
+フジカワ,カズヒコ
+フジモリ,キョウコ
+フジモト,ヒロシ
+フジノ,セイジ
+フジサワ,ヒロタカ
+フジタ,トシヤ
+フジタ,ヒロシ
+フジタ,ケイジ
+クスモト,ヒロフミ
+フジワラ,ヒロシ
+フジワラ,ケイ
+フジワラ,マコト
+フジワラ,ヒロム
+フジワラ,トシキ
+フカボリ,ヒデオ
+フカミ,サナエ
+フカミ,ヒサコ
+フクダ,ユウコ
+フクダ,サトミ
+フクダ,ジュン
+フクダ,ユカ
+フクイ,ノリチカ
+フクイ,トモジ
+フクナガ,ケンジ
+フクナガ,マサヤス
+フクオカ,ミノル
+フクオカ,イサオ
+フクシ,ヤスノリ
+フクシマ,トシユキ
+フクトメ,セイジ
+フクヤマ,カツヒト
+フナバシ,トオル
+フルノ,アキラ
+フルヤ,トシユキ
+フルヤ,ヒロユキ
+フルヤマ,ミノル
+フタバ,ユミコ
+アナミ,ヒサノリ
+フタミ,フジオ
+フタムラ,トモコ
+ガド,ヒサシ
+ゴウ,リョウコ
+ゴウダ,シン
+ゴカ,タツヤ
+ゴトウ,トシタカ
+ゴトウ,シノブ
+ハブ,ショウジ
+ハガ,アツシ
+ハギ,ケンジ
+ハマ,タダヒロ
+ハマダ,マサル
+ハマノ,オサム
+ハマノ,タツヤ
+ハマシマ,ユミ
+ハマシマ,サダミツ
+ハナイ,テツオ
+ハラ,タツキ
+オタ,コウイチ
+ハラダ,ナオキ
+ハラコ,タツヒロ
+ハセ,ユタカ
+ハセガワ,ヒロシ
+ハセガワ,ショウジ
+ハシモト,サトシ
+ハシモト,セツオ
+ハシモト,アケミ
+ハシズメ,マサキ
+ハシズメ,ナオキ
+ハタ,シンイチ
+ハタ,ヨシヒコ
+ハタ,タケヒコ
+ハタノ,キョウコ
+ハタノ,ヤスユキ
+ハタノ,ヨシヒロ
+ツダ,ヒロコ
+ハヤカワ,ヨシノリ
+ハヤノ,カナコ
+ハヤシ,サオリ
+ハヤシ,ススム
+ハヤシ,ノブユキ
+ハヤシ,ヒロユキ
+ハヤシ,トシロウ
+ハヤシタニ,アキラ
+ヒガシノ,キミタケ
+ヒグチ,カズヒコ
+ヒグチ,シンイチロウ
+ヒメノ,ヤスシ
+ヒラバヤシ,ユウコ
+ヒライ,ユウイチ
+ヒラカワ,ヒロシ
+ヒラキ,ヒロシ
+ヒラノ,セイリョウ
+アオキ,ミチコ
+ヒラオカ,マサヤ
+ヒラサカ,ヒロユキ
+ヒラヤマ,ヨシノリ
+ヒロハタ,ユウイチロ
+マエカワ,ヤスヒロ
+ヒロセ,マナブ
+ヒロセ,ヒロヨシ
+ヒロタ,マサノブ
+ヒロワタリ,タカヒロ
+ヒロミツ,ヒロシ
+ヒウラ,マモル
+ホボ,タイスケ
+ホクラ,マコト
+ホンダ,イサオ
+ホンダ,ヨウコ
+スズキ,ヒデキ
+ホンゴウ,カズタカ
+ホリグチ,キイチロウ
+ホリイ,キニチ
+ホリカワ,テルオ
+ホシノ,ヤスヒロ
+ホソカワ,ヒデユキ
+ホソミ,ヒロアキ
+ホッタ,カズアキ
+イブカ,ノブミチ
+イブキ,ヒデユキ
+イチカワ,ヒロシ
+イチムラ,キミエ
+イダ,カナメ
+イダ,チハル
+イデ,ヤスヒデ
+イデ,キヨタカ
+イデ,ナオユキ
+イデタ,タカシ
+イガラシ,ケイコ
+イガラシ,ユキヤ
+イゲ,サツキ
+イイダ,ショウゾウ
+イイダ,タカユキ
+イイダ,タマミ
+イイダ,ヨシヒサ
+イイハラ,ヒロシ
+イイジマ,タケシ
+イケダ,カツヤ
+イケダ,マサアキ
+イコマ,ノブマサ
+イマイ,キヨヒト
+イマイ,マコト
+タナカ,キョウコ
+イマムラ,コウイチ
+イマナリ,タツヤ
+イマゼキ,ジュンジ
+イナダ,マユミ
+イナマス,ヒロシ
+イノウエ,ヒロユキ
+イデ,マサヒロ
+イレイ,マサル
+イシハラ,ミツミ
+イシハラ,ミユキ
+イシハラ,ナオキ
+イシハラ,ススム
+イシハラ,ジュンイチ
+イシイ,タカユキ
+イシイ,トモユキ
+イシカワ,ユウジ
+イシカワ,ナオフミ
+イシムラ,ヒロユキ
+イシワタリ,マスミ
+イシザキ,ノリヨシ
+イシズカ,ナオトク
+イソノ,ミツトシ
+イソヤマ,ミツノブ
+イスダ,シゲオ
+イタクラ,マサヒロ
+イトウ,マサヒロ
+イトウ,ヒロフミ
+イトウ,ヨシマサ
+イトウ,ハルオ
+マツイ,タケヒコ
+イトウ,タケヒコ
+イトウ,マサチカ
+イトウ,マサヒコ
+イワカミ,ツトム
+イワサ,トシミ
+イワサキ,ユウジ
+イワサキ,ナオユキ
+イワシタ,ミチタカ
+イズミ,トオル
+イトウ,アツシ
+イズミ,トヘイ
+イズミサワ,セイジ
+ジンノ,ヤスシ
+ミド,リュウジ
+カガ,アケミ
+カガミ,フサオ
+カゲヤマ,ヒサナガ
+カイ,ヒトシ
+カイダ,コウジ
+カイズ,タケヒト
+カジタ,ジ
+カケヒ,アケミ
+カキモト,トモヒロ
+カキヌマ,サチコ
+カキヌマ,シズカ
+カマタ,トシエ
+カマタ,ケンイチ
+カミグチ,ミエコ
+カミムラ,ヨシオ
+カネコ,マサノリ
+カナマル,ジ
+カナザワ,マモル
+カンベ,タカヒロ
+カンダ,コウゾウ
+カネハラ,ケン
+ゴトウ,シゲカズ
+カネコ,タケシ
+カネコ,ヤスナオ
+カネコ,アキラ
+カネコ,ヒデトシ
+カネコ,ヒロフミ
+カネミツ,ヒロミツ
+カネムラ,カズオ
+カネタ,コウイチ
+タナカ,マサヨシ
+ヨネモチ,ナオシ
+カンノ,ヤスマサ
+カサイ,ユカリ
+カシマ,コウジロウ
+タカギ,ヒデキ
+キタムラ,マサミ
+カタオカ,ヤスユキ
+カタオカ,カズヒコ
+カタオカ,シゲユキ
+カタセ,ヤスナリ
+カタヤマ,ミチコ
+カタヤマ,ナオユキ
+カタヤマ,ユウコ
+カタヤマ,キョウコ
+カトウ,ヤスヒロ
+カトウ,ヒロアキ
+カトウ,シンイチ
+カトウ,ツトム
+カトウ,ヒロユキ
+カトウ,トシヒロ
+カトウ,ヨシミ
+カトウ,ユウジ
+カトウ,ツトム
+ソメヤ,ジュンコ
+カワバタ,マコト
+カワグチ,マサイチ
+カワグチ,シンヤ
+タマガワ,コウイチロウ
+カワハラ,ヒサシ
+カワハラ,ジュンジ
+カワヒト,カツヒサ
+カワイ,ノリヒサ
+カワイ,ノリコ
+ハギワラ,シゲキ
+ナルケ,タカシ
+カワサキ,ヨシヒロ
+カワシマ,ユカリ
+カワシマ,ユキコ
+カワタ,ユタカ
+カヤマ,ヒロカズ
+カザマツリ,ヒロコ
+キド,タカフミ
+キガミ,マナブ
+キゴシ,ヒサヤ
+モリサワ,キヨシ
+キクチ,ミツグ
+キクチ,キイチ
+キクチ,ノリオ
+キクラ,カツミ
+キムラ,ツネオ
+キムラ,ヒロキ
+キムラ,アケミ
+キムラ,トモヒサ
+キムラ,カツノリ
+キムラ,ケイイチ
+キムラ,マサキ
+キムラ,マサユキ
+キムラ,ケンイチ
+キムラ,ノリコ
+キムラ,シンキチ
+キノシタ,タイコ
+キノシタ,トシヒコ
+キノシタ,ヤスヒロ
+キシベ,ヒロキ
+キシダ,ヨシノリ
+キシモト,タケシ
+キシモト,タツヤ
+キタ,タカミチ
+キタアキ,ヒロユキ
+キタダ,ヒロユキ
+キタガワ,トシユキ
+キタホリ,ヒロユキ
+キタジマ,タツヤ
+キタムラ,ヒロシ
+コバヤシ,シゲヨシ
+コバヤシ,カズヒロ
+コバヤシ,チフユ
+コバヤシ,ヤスユキ
+シライ,ダイスケ
+コバヤシ,ヒロユキ
+コバヤシ,シンイチ
+コバヤシ,トシヤ
+コバヤシ,トシキ
+コバヤシ,ナオフミ
+コダマ,ヒロユキ
+コギタ,ケイイチ
+コグレ,ヨシカズ
+コハシ,ノリシゲ
+コゴ,タカヒデ
+コンノ,ヨウ
+コンノ,キンヤ
+コンノ,ヤスヒロ
+コンノス,ヒロカズ
+コイデ,コウジ
+コマツバラ,ヒデトシ
+コミヤ,オサム
+コミヤマ,ヨシヒロ
+コモダ,タカシ
+コンド,カズマサ
+コンド,マサト
+コンド,ヒトシ
+コンド,カツヤ
+コンド,カズトシ
+コニシ,アキノリ
+コサ,マサト
+コスギ,ケンイチロ
+コタキ,マサユキ
+コタニ,ケイイチ
+コヤマ,ミキ
+コヤマ,ヒロミ
+コヤマ,カツヒコ
+コザワ,マサノリ
+コズル,ヨシアキ
+クボタ,ヒロシ
+クボタ,ジュンコ
+クボヤ,トモコ
+クドウ,ジュン
+セノオ,ヒトシ
+クマガイ,カズノリ
+クラドミ,キヨフミ
+クラモト,ノリユキ
+クラトミ,ケイスケ
+クリノ,ヤスヒロ
+クリヤ,ユウイチ
+クロダ,ヒロシ
+クロカワ,ミツアキ
+クサカワ,ノブミツ
+クサノ,サトシ
+クワバラ,トシヒロ
+クワノ,ヤスヒロ
+ヨシダ,サトル
+クズノ,ヒロカズ
+マチダ,ヒロシ
+マエダ,ケンイチ
+マエカワ,ミネカズ
+オオタニ,タダシゲ
+マキ,タクヤ
+マキノ,トシオ
+マルオカ,ヤスヒロ
+マルヤマ,ジュンコウ
+マルヤマ,ノリヒロ
+マルヤマ,ミノル
+マサイ,シンゴ
+マサキ,ヒデヨ
+マセ,タカシ
+マスダ,ユタカ
+マトバ,タカトシ
+マトバ,クニヒコ
+マツバラ,タカアキ
+マツイ,ヒサシ
+マツイ,ヤスヒロ
+マツカワ,セイイチ
+マツモリ,ショウゾ
+マツモト,タカシ
+マツモト,マサヨシ
+マツモト,シゲル
+マツモト,ジュンコ
+マツモト,タケシ
+マツモト,トオル
+マツモト,サダオ
+マツオ,カズヨシ
+マツオカ,タケトシ
+マツシマ,タカヒロ
+ナカニワ,トシロウ
+マツヤマ,ジュン
+マツヤマ,ジュンジ
+マツザワ,ヒデヨ
+ミムラ,シュンイチ
+ミニュウ,コウイチ
+ミタ,マナブ
+ミタ,ヒロカズ
+ミタムラ,ジュン
+ミツダ,オサム
+ミツダ,ジュンイチ
+ミツマタ,ヨシノリ
+ミツオカ,アヤコ
+ミウラ,キョウコ
+ミウラ,ミドリ
+ミワタ,ナオキ
+ナガセ,タカシ
+ミヤケ,アキオ
+ミヤケ,ユカリ
+ミヤマ,セイジ
+ミヤモト,テツオ
+ミヤモト,ヒトミ
+ミヤナガ,マサカツ
+ミヤザキ,モトフミ
+ミズバ,ヒロシ
+ミズヌマ,カツミ
+ミズサキ,ミワ
+ミズタ,ノリアキ
+モチズキ,シュウイチ
+モチズキ,アツキ
+モチズキ,チカラ
+モギ,ヒロシ
+モモセ,ツヨシ
+ヒラノ,アキヒデ
+モリ,ユウキ
+モリ,マサユキ
+モリ,マサユキ
+モリ,シゲオ
+モリカワ,シンジ
+ヤギシタ,イサオ
+モリモト,コウイチロウ
+モリモト,コウジ
+マツダ,ケンジ
+モリオカ,アキヒコ
+モリシタ,リエ
+モリタ,クニヒロ
+モリタ,キヨエイ
+カネコ,カズアキ
+モリタ,マサユキ
+モリワキ,ノブユキ
+モロドミ,ヨウイチ
+モトハシ,ヨシヒデ
+モトジマ,テツオ
+モトキ,ケイコ
+モリ,ミワ
+ウスイ,カオル
+ムラカミ,タケオ
+ムラカミ,ダイセイ
+ムラカミ,ヒデシ
+ムラカミ,ヒトシ
+ムラタ,ヨシオ
+ムラタ,キヨヒコ
+ムラヤマ,サトシ
+ムトウ,ヨシヒロ
+ナダグチ,スミト
+ナガハシ,イサオ
+ナガイ,マサヒロ
+ナガムラ,マコト
+ナガオ,マサミ
+ナガシマ,ミチノリ
+ナガシマ,ミヨコ
+ナガタ,ナオリ
+ナガタ,ノボル
+ナガツカ,ノリユキ
+ナガヤマ,サナエ
+ウチダ,タカヒデ
+ウチゾノ,タカシ
+ナカダ,トシヤ
+ナカガワ,ヤスヒロ
+ナカガワ,ユキヒロ
+ナカガワ,チハル
+ナカガワ,ナオユキ
+ナカジマ,コウイチロウ
+ナカジマ,ヒロアキ
+ナカジマ,キョウコ
+ナカミチ,リュウイチ
+ナカモト,ヤストモ
+ナカモト,ヒロシ
+ナカムラ,ヒロシ
+ナカムラ,ユミコ
+ナカムラ,ヒロシ
+アキヤマ,タカジ
+ナカムラ,ヒデト
+ナカムラ,ツトム
+ナカムラ,タカコ
+ナカムラ,ユキコ
+ナカムラ,ヨシヒコ
+ナカムラ,セイジ
+ナカムラ,ユウイチ
+ナカムラ,ヒロミ
+ナカムラ,サトシ
+ナカノ,タカシ
+ナカノ,ケイジ
+ナカシマ,ノリオ
+ナカツボ,マサヒコ
+ナカツカ,テツロウ
+ナカヤマ,マコト
+ナカヤマ,マサヒコ
+ナカザワ,オサム
+ナオツカ,アキコ
+ナラハラ,サトシ
+ナルシマ,マサコ
+ナトリ,ヒロタカ
+ニイジマ,ユカ
+ニイヤ,リカ
+ニシ,トシヒサ
+ニシ,マサヒロ
+ニシブ,アヤコ
+ニシダ,タツヤ
+ニシハラ,タカアキ
+ニシカワ,マサコ
+タナカ,イサオ
+ニシカワ,マサト
+ニシモト,ヒデアキ
+ニシモト,ナオコ
+ニシムラ,タカシ
+ニシムラ,コウゾウ
+ニシノ,ケンジ
+ニシノ,シンヤ
+ニシオカ,マサノブ
+ニシザキ,ケンジ
+ニシザワ,ダイスケ
+ニワ,モリヨシ
+ノブ,ミノル
+ノガイト,ノブユキ
+ノグチ,ヨウコ
+ノジ,ヒロユキ
+ノジマ,ノリオ
+ノムラ,アキコ
+ノムラ,シンイチ
+ノナカ,ユキノリ
+ナカジマ,チフユ
+ノザキ,ミキオ
+ノザキ,ヨシユキ
+ヌワ,タケシ
+オチ,タカシ
+オチアイ,トシユキ
+オダ,アツシ
+オガサワラ,ヨシユキ
+オガサワラ,トミオ
+オガタ,カズハル
+オガワ,ケンイチ
+オギハラ,ヒロキ
+オオハラ,カツミ
+オオバ,ユミコ
+オオバ,エイジ
+マツダ,シゲユキ
+オオエ,ユウジ
+オオガキ,カズヒロ
+ショウジマ,トシヒデ
+オハマ,ヒロユキ
+オオハシ,ケイコ
+オギノ,シゲキ
+オオカワ,コウイチ
+オオカワラ,マナブ
+オキ,マサヒコ
+ネモト,ジュン
+オオクボ,ノブユキ
+オオクラ,トモヒコ
+オマ,トモヒサ
+オオミカ,テツシ
+オオモリ,ヒデミ
+オオモリ,ヒロアキ
+ワタナベ,カズアキ
+オオニシ,ミツル
+オオニシ,マサヒデ
+オノ,サナエ
+オノ,ジュンコ
+オオヌマ,マサオ
+オシマ,タカユキ
+オシマ,マサシ
+オオタ,マサユキ
+オオタ,モトイ
+オオタ,カオル
+オオタカ,トシアキ
+オオタケ,サエコ
+オオタケ,ヒデフミ
+オオタニ,クニオ
+オオツボ,アツユキ
+オオツカ,テツオ
+オオツカ,トシヒコ
+オオツキ,イズミ
+サコダ,シュウイチ
+オオワ,サトシ
+オオヤ,ジュンセイ
+オイカワ,マサキ
+オカベ,マナブ
+コバヤシ,ソウ
+オカダ,ヤスミツ
+オカダ,テツジ
+オカダ,テツヤ
+オカモト,ヒデアキ
+オカモト,ヒデノブ
+メラ,ヒロユキ
+オカノ,カズノリ
+オカザキ,カズユキ
+オキタ,サトコ
+オクダ,エイイチロウ
+オクヌキ,マサカズ
+オンダ,チズコ
+オンダ,ヒラタカ
+ウツミ,マサヒロ
+オオノ,タカシ
+オオノ,ユキヒロ
+カワモト,ヒデユキ
+カド,クニヒロ
+オシマ,シロウ
+オオスミ,アキラ
+オオタ,カズユキ
+オリイ,シュンジ
+オリタ,シュウイチ
+オオサカ,トヨヒデ
+オソノイ,ユキオ
+オザサ,ユキノブ
+オザワ,タツジ
+オザワ,ナオノリ
+オザワ,ヤスヒロ
+シラトリ,ジュン
+オゾネ,アキオ
+サノ,ヒロヒサ
+サイトウ,マサミ
+サイトウ,ナオキ
+サイトウ,ミエコ
+サイトウ,ケイジ
+サイトウ,チカコ
+サカイ,ヒロミ
+サカイ,ケンジ
+サカイ,マコト
+サカキバラ,ミツアキ
+サカモト,レイコ
+サカモト,ヨシオ
+サカモト,トモコ
+サカモト,ジュンペイ
+サカモト,カオル
+サカムラ,ケンジ
+サカネ,コウジ
+サカタ,マサヒコ
+サカタ,マサヒロ
+アクタガワ,マサヒロ
+サクライ,マサト
+サクライ,ルリコ
+マツバラ,リョウコ
+サクライ,サトル
+サナギ,ヨシキ
+サノ,ユキコ
+オオガキ,チヒロ
+ササキ,フミヒロ
+ササキ,トオル
+ササキ,ヒデユキ
+ササキ,イクフミ
+ササキ,ナガマサ
+ササキ,トモコ
+サタケ,タカユキ
+コダマ,マサヒロ
+サトウ,トオル
+サトウ,フジオ
+サトウ,ヒデハル
+サトウ,マモル
+サトウ,マユミ
+サトウ,シロウ
+サトウ,ケンジ
+サトウ,ヒデノリ
+サトウ,ケイイチ
+サトウ,アキヒロ
+サトウ,ヒデキ
+サカイ,ケンジ
+サワダ,コウタロウ
+セガワ,サトル
+セイノ,ショウジ
+セキ,ツトム
+セキド,シンジ
+セキノ,ノリヒロ
+セオ,タカユキ
+セリカワ,オサム
+シバサキ,ヒロノリ
+シガ,カナミ
+シゲル,ヨシコ
+シマダ,アツシ
+シマダ,ミツエ
+シマダ,マコト
+シマダ,カオル
+シマモト,ミツヤス
+シマムラ,タツヤ
+シマノ,タカシ
+シミズ,タカアキ
+シミズ,トシヒロ
+シミズ,タダシ
+シミズ,ツトム
+シミズ,コウジロウ
+シミズ,サトル
+シミズ,ミズキ
+シモダ,ヒロユキ
+シモガキ,ケンヤ
+シモハタ,ヒロユキ
+シモムラ,ノブヒロ
+シモオカ,トシアキ
+シムラ,ショウイチ
+ヤエガシ,アツコ
+シノザキ,アツシ
+ハギワラ,ヒデオ
+シオダ,マサヒト
+シオタ,ヒサヨシ
+シオザワ,ケンイチ
+シライ,タケシ
+シライシ,トモヒサ
+ショウダ,ケンジ
+シュウ,トモコ
+ソメヤ,マサシ
+スダ,クミコ
+スエ,ヒデオ
+スエタ,ヒデオ
+シブイチ,ヒデユキ
+スガノ,ヒロユキ
+スガワラ,ヒサタカ
+スギエ,カツトシ
+スギマサ,ケイタ
+スギモリ,ノブユキ
+スギモト,トオル
+スギサキ,ヨウコ
+スギウラ,ユキオ
+スギウラ,ジュンイチ
+ミズオチ,タカシ
+スギヤマ,マサヤ
+スギヤマ,マナブ
+スギヤマ,ケン
+スギヤマ,タケシ
+スミ,マサモト
+タベイ,ヨシノリ
+スナミ,ヒロコ
+スサワ,オサム
+スズキ,アキコ
+スズキ,エイジ
+スズキ,ヒデユキ
+スズキ,ヒロアキ
+スズキ,カナコ
+スズキ,カナコ
+スズキ,カズヨシ
+スズキ,ケンタ
+スズキ,コウジ
+スズキ,マサノリ
+スズキ,ナリマサ
+タベ,リュウイチロウ
+タチハラ,タカシ
+タゲ,トシキ
+タグチ,ワタル
+ナカタ,ワタル
+タグチ,シン
+タジマ,アキラ
+タジマ,マコト
+タカダ,コウイチ
+タカギワ,ミツヒロ
+タカハシ,カズヨシ
+タカハシ,ヒロヤス
+タカハシ,カズノリ
+タカハシ,ミツトシ
+タカクラ,コウジ
+タカクラ,ヤスマサ
+タカハシ,ヤヒロ
+タカハシ,アキフミ
+タカハシ,オサム
+タカハシ,ユウジ
+タカハシ,ヒロユキ
+タカハシ,ツカサ
+タカハシ,シンイチ
+タカハシ,ユウコ
+タカハシ,マコト
+タカハシ,ヒデキ
+タカクラ,ツトム
+タカミヤ,タマミ
+タカサゴ,クニヒコ
+タカサキ,マサト
+タカセ,マサヒト
+タカツカ,シンイチ
+タカヤナギ,シゲル
+タカヤナギ,ヤエキチ
+タケチ,ヒデアキ
+タケダ,ヒロシ
+タケダ,イツヒト
+タケガミ,カツミ
+タケヒサ,マコト
+タケイ,ノブオ
+タケイ,タダユキ
+タケカワ,タケヒコ
+タケムラ,トシヒデ
+タケナカ,トシヒロ
+イマイ,ヨウイチ
+タケサコ,ヨウイチ
+タケシマ,カツシロウ
+タケウチ,ヒロトシ
+ヒダカ,トオル
+タキモト,ミドリ
+タキザワ,キクミ
+タマイ,マサル
+タムラ,ショウイチ
+タナベ,エイジ
+タナベ,ヨウヘイ
+タナカ,アキト
+タナカ,イサム
+タナカ,ミドリ
+タナカ,ヨシナリ
+タナカ,ヤスジ
+タナカ,タカシ
+タナカ,アリヒト
+タナカ,シンゴ
+タナカ,シュウイチ
+タナカ,ヒロユキ
+タナカ,タカシ
+サノ,ヒロフミ
+タニ,エイイチロウ
+タニムラ,ヨシフミ
+タニヤマ,ダイスケ
+タサカ,ヤスマサ
+カトウ,エイジ
+テラダ,ヨシユキ
+テラマエ,マキ
+テラニシ,ノブユキ
+テラニシ,ヒロミツ
+テラゾノ,カオリ
+トビタ,マサミ
+イズミサワ,ヒデキ
+トダ,サトシ
+トグチ,タケシ
+トマツ,トモアキ
+アキムラ,ノブユキ
+トキタケ,タケシ
+トクマス,アキヒロ
+トクタケ,アキヒコ
+トマキ,カズヤ
+トミイ,マサヒロ
+トミタ,キミオ
+トミヤマ,マサト
+トモダ,クミコ
+トモナガ,マサノリ
+トサカ,ナオト
+トットリ,アキヒコ
+マツオ,ヨシユキ
+トヨダ,ヨシユキ
+ツボイ,アキラ
+カトウ,トシヒロ
+ツチヤ,カズシ
+ツダ,シンゴ
+ツジ,マサヒコ
+ツジ,ヨウイチ
+ツジノ,ヨウスケ
+ツカコシ,アキラ
+ツカモト,シゲヒロ
+ツカザキ,フミヒロ
+ツキアシ,アキラ
+ツキザワ,コウジ
+ツミタ,エイイチ
+エンド,タダヒコ
+ツト,トシヒロ
+ツムラ,ヨシオ
+ツネカワ,ソノスケ
+ツルオカ,ヨシヒコ
+ツルタ,ノリコ
+ツルタ,モトユキ
+ツルタ,タツユキ
+ツツミ,シュンヤ
+ツツミ,カツミ
+ツワコ,ユカ
+ツヤマ,キヨフサ
+ウチダ,ショウコ
+ウチダ,マサヒロ
+ウチダ,セツコ
+ウチヤマ,シンゴ
+ウチヤマ,ヒデオ
+ウド,キヨミ
+ウエダ,ハルキ
+ウエダ,ヨウスケ
+マツムラ,ダイジロウ
+ウエダ,アケミ
+ウエダ,アキオ
+ウエマツ,ヒデオ
+ウエノ,ヒロミ
+ウエノ,ジュンジ
+イシダ,カズヒコ
+ウメダ,コウセイ
+ウメガキ,クニコ
+ウノ,マモル
+ウラハシ,
+シミズ,サトシ
+エガシラ,タダシ
+スエカネ,テルユキ
+ウツ,トオル
+ウツハシ,トシヒロ
+ウツミ,ケイイチ
+ワダ,ツネフミ
+ワダ,タツミ
+キタワキ,セイキ
+ワシズ,ハルナガ
+ワタベ,フミヨ
+ワタナベ,ヒロシ
+ワタナベ,マサヤ
+ワタナベ,サトミ
+ワタナベ,シンイチ
+ワタナベ,タカシ
+ワタナベ,ツトム
+ワタナベ,ヨシアキ
+ワタナベ,ツネオ
+ワタナベ,マサヨ
+ワタナベ,エイジ
+ワタナベ,ヒロコ
+ワタナベ,ヒロユキ
+ワタナベ,カツシ
+ワタナベ,ユウジロウ
+ワタナベ,ヤスオ
+エハラ,アツシ
+ワタナベ,ヒデアキ
+ワタライ,ジロウ
+ヤエガシ,オサム
+ヤハギ,シノブ
+ヤマダ,シュウイチ
+ヤマダ,タケシ
+ヤマダ,ヨウジ
+コンド,トシヤ
+ヤマダ,アツシ
+ヤマダ,オサム
+ヤマダ,ミキ
+ヤマダ,アキヒロ
+エノモト,ヒロシ
+サイトウ,ヒロユキ
+ヤマグチ,キンヤ
+フジタ,マサトシ
+ヤマグチ,サトコ
+ヤマグチ,ヤスヒロ
+エザキ,ヒトシ
+ヤマグチ,サトル
+ヤマモト,サトシ
+ヤマモト,トオル
+ヤマモト,ヤスシ
+ヤマモト,タケシ
+ヤマモト,コウイチ
+ヤマモト,コウキ
+ヤマモト,トシユキ
+ヤマモト,マサル
+ヤマナカ,ヒロシ
+ヤマネ,ミチル
+ヤマノクチ,サトシ
+ヤマサキ,タカシ
+ヤマシタ,マサカズ
+ヤマシタ,ヒロキ
+ヤマシタ,ケイイチロウ
+ヤマシタ,コウキ
+ヤマシタ,シゲミ
+シサイ,マサユキ
+ヤマシタ,トシヒロ
+ヤマウチ,トシユキ
+ヤマウチ,マコト
+ヤマザキ,ヒデオ
+ヤマザキ,タダシ
+ヤマザキ,ムツミ
+ヤナギモト,タケシ
+ヤノ,リョウジ
+ヤノ,ヒロキ
+ヤシロ,ヤスシ
+ヤザワ,マコト
+ヨダ,シュンスケ
+ヨギ,フミユキ
+ヨコイ,コウジ
+ヨコヤマ,ケンショウ
+ヨネザキ,フトシ
+ヨシダ,ジュン
+ヨシダ,リエコ
+ヨシダ,カズヨシ
+ヨシダ,ジュンコ
+エビナ,セイイチ
+ヨシダ,タダシ
+ヨシダ,タツオ
+ヨシイケ,ヤスノリ
+ヨシムラ,ミツユキ
+ヨシムラ,サトル
+ヨシノ,シンイチ
+ヨシオ,ノボル
+ヨシタケ,シゲヨシ
+ユアサ,テツジ
+オオワダ,ショウジ
+エグチ,サトル
+オザワ,カツユキ
+サトウ,ミツアキ
+シンタニ,タケミ
+スギタニ,ヨシヒコ
+タカハシ,イズミ
+タキザワ,ナオキ
+ミヨダ,ケンジ
+ヤマダ,キヨシ
+ヤハギ,サトシ
+キヤ,タダシ
+ミセキ,ノリカズ
+エノモト,ケンタロウ
+サクラダ,マサキ
+ササキ,ノブユキ
+ババ,タケオ
+アボ,カオリ
+アダチ,コウヘイ
+アカサカ,マサヒロ
+アマサキ,ヒデト
+アオキ,カンジ
+アゼガミ,シゲカズ
+エドノ,フミヒロ
+ドイ,カズオ
+フジイ,トモヒト
+フジイ,サユリ
+フジモト,ヒロキ
+フジモト,タケシ
+フクハラ,ノブユキ
+フクオカ,テツヤ
+フクシマ,ケンイチ
+フサヤマ,コウイチ
+ゴトウ,ヨシヒロ
+ハマベ,エイジ
+ハナダ,ケイスケ
+ハシモト,ヨシヒロ
+ヒビ,サカエ
+ヒラツカ,カズユキ
+イカリ,タカユキ
+イクタ,アキヒコ
+イマイ,テツシ
+イシハラ,ヤスヒロ
+イソダ,コウイチ
+イソザキ,ヨシタカ
+ジングウ,ヨシアキ
+ナイ,ミノル
+ジョウニシ,オサミ
+カジハラ,ヨシアキ
+カマタ,タツヤ
+カメイ,アキラ
+カミヤマ,テツヤ
+カトウ,タツジ
+カトウ,トシユキ
+エミ,ヒデアキ
+カワモリ,マモル
+キムラ,ヨシヒロ
+キムラ,カズオ
+キシベ,クニヒコ
+キシカワ,カズヨシ
+キタガワ,シンイチ
+キタナカ,メグミ
+コバヤシ,マサユキ
+コバヤシ,ゲン
+コイケ,トウタ
+コイズミ,カズヤ
+コジマ,タカヒサ
+コニシ,キヨカズ
+コヤマ,タクヤ
+クドウ,カズヤ
+クマサキ,ヨシアキ
+クロダ,ヒロカズ
+クサカ,シンゴ
+エンド,ケンジ
+マエカワ,マサヒロ
+マルタ,ヒデキ
+マツシタ,シンゴ
+ミクニ,トミオ
+エンド,ヨシノリ
+ミネ,ヤスタカ
+ミウラ,シュウイチ
+ミゾグチ,ショウジ
+ホン,ヨシアキ
+ミズシマ,シゲル
+エダ,タカシ
+ナガオ,アツシ
+ナカムラ,トオル
+ナカニシ,ユウジ
+ナカノ,ヨウコ
+ナカオ,カツヤ
+ネモト,マサユキ
+ニシカワ,コウジ
+ニシワキ,ケンイチ
+ノダ,タカコ
+ノグチ,ミトシ
+オチアイ,コウジ
+オオハシ,ヤスヨシ
+オノ,タクジ
+エミ,ヒデオ
+オクムラ,マサヒロ
+オクノ,ヒデミツ
+エンド,ヨシタダ
+オオニシ,アキラ
+オザキ,クニハル
+サエキ,ノリユキ
+サガワ,ノボル
+サクマ,マサホ
+サトウ,シゲアキ
+サトウ,ミツヒロ
+サワ,キヨタカ
+セガワ,コウジ
+セキ,ユキオ
+センダ,ケンジ
+シブヤ,シュウイチ
+シミズ,ヨシハル
+シンデン,アキヨシ
+シオタ,ヒトシ
+シュクタニ,トシオ
+スヤマ,ヒロコ
+スズムラ,イサオ
+タカオカ,ヨシユキ
+タケウチ,カツノリ
+タケウチ,カズシ
+タマイ,マサヒロ
+タン,カズヒロ
+タナカ,ケンゴ
+エトウ,テルアキ
+タニヒラ,カズヒロ
+タニヤマ,キクオ
+タオカ,シゲキ
+タシマ,マサユキ
+タザワ,ミキオ
+トキタ,カツヨシ
+トミタ,シゲキ
+トミタ,ケンジ
+トミタ,アキオ
+ツジベ,ヒロコ
+ツジカワ,ケンイチ
+エンド,ジュンコ
+ミヤザキ,マキコ
+ワダ,ヨシタカ
+ワタナベ,ヒロミ
+ヤマダ,ナオヤ
+ヤマダ,タダシ
+ヤマダ,サヤカ
+ヤマグチ,ノリオ
+ヤマモト,タカコ
+ヤマオカ,カツノリ
+ヤマシタ,ノブオ
+ヤマシタ,カズヒサ
+ヤマゾエ,ヒロマサ
+ヤオ,ヤスハル
+ヤスダ,サトシ
+ヨツタニ,ヨシオ
+ヨシハラ,ヒデオ
+ヨコウラ,マサオ
+ヒラセ,シゲオ
+マツイ,イチタロウ
+コバヤシ,カズヒサ
+スズキ,タケシ
+カトウ,トシクニ
+クニトモ,ノブユキ
+エンド,ゴウ
+イトウ,サトル
+オカザキ,ヒデオ
+ヒロハシ,ヤスオ
+サカキ,ヨウコ
+ミキ,トキコ
+クマキ,マサオ
+タヤマ,テツオ
+オオワキ,キハチ
+ミョウドウ,マサト
+カトウ,ヒロヨシ
+ババ,ミキオ
+カネコ,ハルヒコ
+コグレ,ヒロアキ
+タケダ,ヨシノリ
+イチムラ,マモル
+イトウ,ノボル
+ウエハマ,ミノル
+ナカイ,コウジ
+コバヤシ,マサオ
+シマダ,マナオ
+メグロ,シゲル
+ヤマヤ,ヒロシ
+フジタ,ミツグ
+マトバ,チヒロ
+イトウ,モトカズ
+ナカイ,シズオ
+オカダ,マサヒト
+ノモト,トシキ
+ナガシマ,ヨウジ
+ヨネカワ,タモツ
+ワタナベ,トオル
+ムラマツ,トモチカ
+キタニ,ユウイチロ
+ミカミ,ヒロシ
+アダチ,ミツオ
+イノウエ,マサアキ
+オカダ,タカアキ
+カワシマ,テツオ
+セキ,アキラ
+タカハシ,ヨシジ
+ワタナベ,マサル
+クリハラ,チハル
+ワタナベ,ケイスケ
+フジカタ,ミツオ
+ヨシト,ノリオ
+カワセ,オサム
+タナカ,マコト
+イマイ,ケンジ
+コムロ,ユキトシ
+マエダ,エイゴ
+コイケ,オサム
+ワタナベ,ミチアキ
+コンド,ヒサトシ
+イシイ,ヒサヤ
+ミシマ,タカシ
+コバヤシ,ヨシカズ
+ヤマシタ,ケンジ
+タナカ,リョウゾウ
+ヤマダ,マサトシ
+カミヤ,ミチヤス
+ヤマモト,リキオ
+シオザキ,トオル
+ナカムラ,チカシ
+タケモト,サチオ
+ダケヤマ,ヒロユキ
+アラカワ,ゼンジ
+ヨコタ,マサユキ
+ナカムラ,カズヒコ
+アラカワ,トシオ
+オオミチ,マコト
+マツキ,エイキ
+クシビキ,スケヒデ
+ニッタ,テルヒコ
+ツボウチ,ミキオ
+サイトウ,ヒロユキ
+タケムラ,トシヒロ
+タナベ,カズオ
+マエダ,モトクニ
+スガハラ,テツオ
+カネコ,ショウジ
+ヤマウチ,マサヒコ
+カミザワ,ヒロフミ
+コガ,トクヒロ
+ツルサキ,スナオ
+ヒガシ,フミヒロ
+イシダ,ヤスヒロ
+ナカガワ,ハルオ
+テラシマ,ヒサハル
+キタムラ,シュンジ
+ハットリ,ヒデミ
+ササキ,ヨシヒロ
+ホカ,ケンタロウ
+ノムラ,テルオ
+ハヤノ,カズオ
+アンザイ,シンイチ
+フルノ,キヨヒデ
+ニシワキ,クニ
+ハセガワ,マサオ
+イワタ,タカユキ
+トダ,ヒロアキ
+ナカムラ,マサト
+フルイシ,マスミ
+ナカムラ,フジオ
+ナカガワ,ヒデオ
+ナカマ,タツヤ
+スガワラ,マスコ
+マツモト,ツトム
+ハシモト,ヨウタロウ
+ナカツ,ヤスカズ
+サトウリ,アキラ
+イキタ,ユキノブ
+キクチ,タケシ
+スト,マサミ
+シバタ,ヒサノリ
+ナイトウ,コウジ
+モリ,カズコ
+イトイ,アキラ
+イトウ,ケンジ
+マツザキ,マサノリ
+ウエノ,ミツノリ
+カタオカ,キヨカズ
+バンドウ,タツオ
+サイトウ,ジュンジ
+イワイ,シゲル
+シモヤマ,ミノル
+アカマル,オサム
+ゴトウ,ハジメ
+マツダ,ススム
+ネガミ,トシオ
+ヤマシタ,マサオミ
+ヨネヤマ,リュウヘイ
+イシヤマ,ヒサオ
+アベカワ,レイジ
+イマムラ,シゲル
+イワナガ,ミノル
+ウエダ,クニヒコ
+フジカワ,ユキオ
+タムラ,ヨシヒサ
+カシイ,マサト
+ヨネダ,マサオ
+ヨコツ,アキオ
+アサオ,ユウジ
+タナカ,ケイジ
+タナカ,タダミ
+ヤシキ,ヤスユキ
+カイガイ,タケシ
+ソガベ,ユキオ
+フルカワ,ケンジ
+カワウチ,ユウイチ
+フジイ,ノリユキ
+イケノヤ,タツオ
+オチ,ノリオ
+ナカモト,ナオハル
+ワカバヤシ,ハレオ
+アラキ,フミオ
+ヤベ,ヒデオ
+タカハシ,ヤスヒロ
+シバノ,ミツオ
+タガシラ,トシオ
+スミタ,テツヤ
+サトウ,コウジロウ
+チノ,シゲト
+ヤマダ,ヤスヒロ
+イガラシ,ノリヨシ
+イケガミ,ケンイチ
+フナダ,タカユキ
+イノウエ,タカヨシ
+ニシヤマ,ヒロシ
+イシハラ,トシタカ
+スズキ,タイチ
+コモリヤ,カズオ
+チュウゴ,ヒロシ
+コバヤシ,オサム
+ミヤモト,ツトム
+ナカタ,タカユキ
+イリタニ,タクオ
+オガワ,ユキチ
+オネ,ケンジ
+コマツ,マサアキ
+ミノワ,ヒロシ
+フジカワ,ナオト
+カワグチ,ヤスヒロ
+チバ,トシヒコ
+ナカニシ,サダオ
+サクマ,ヒトシ
+タケマサ,トシユキ
+セキ,ヨウイチ
+サイトウ,フミオ
+フジモト,ヤスオ
+オグリ,タツジ
+イシバシ,キヨシ
+アザミ,シゲル
+オガサワラ,ナオイチ
+サイトウ,ヒロシ
+タナベ,ケンジ
+モリヤマ,シュウヘイ
+キタザワ,ヒデトシ
+カナザワ,カツオ
+ハラダ,マサト
+オクヤマ,サトシ
+シミズ,セイジ
+イノマタ,ユキオ
+フルサワ,セイキ
+タケウチ,シロウ
+オオノ,ツトム
+モロオカ,ケンジ
+シノザキ,フミアキ
+ノグチ,シゲアキ
+シマダ,コウジ
+カワサキ,ユタカ
+オオカワ,マコト
+サメシマ,マサヒロ
+ホソジマ,カズヒコ
+ワタナベ,トミオ
+カワナミ,マサアキ
+クサノ,ケイサク
+ツチタ,トモアキ
+オオハシ,コウジ
+ノダ,ミキオ
+ワタナベ,ヒサオ
+ヨシタケ,ヤスヒロ
+フクシマ,アキラ
+イワヤ,タカオ
+サカモト,モトハル
+クボタ,ショウジ
+イソヤマ,コウイチ
+オオノ,ミツアキ
+アベ,タツオ
+オダワラ,ミチオ
+キウチ,ケンジ
+イシカワ,トシフミ
+ヨシダ,タツオ
+チャバタケ,マサフミ
+サカイ,ヨシオ
+オオタ,ヨウジ
+ナカノ,マサミ
+ハダ,タカシ
+ナカヤマ,ジュンジ
+サカグチ,ケンジ
+ナガシマ,ヤスオ
+サガラ,トシヒロ
+カワノ,タダヨシ
+カネコ,イサオ
+ナカダ,ミツル
+アマノ,タカシ
+ヤザキ,シュウジ
+ヒラギノ,カズオ
+タバタ,イチオ
+クニユキ,ヤスヒロ
+オクウチ,ヒロノリ
+スギモト,ヒデジ
+ナカムラ,リョウジ
+スギサキ,ワタル
+ヤマシタ,タカテル
+ノムラ,カズミ
+シマダ,ミツル
+フクダ,カズノリ
+サトウ,ヒデオ
+オクボリ,ヒロシ
+ヨコカワ,マサミ
+デンダ,キヨシ
+フクナガ,ススム
+タカシマ,ミツギ
+カトウ,テツオ
+イシグロ,アキノリ
+イケベ,クニユキ
+オオツカ,ススム
+シミズ,ヨシノリ
+スズキ,タカオ
+ツヤ,マコト
+ウチダ,マサタカ
+オチ,ケンイチ
+アリガ,タケシ
+ナカシマ,カツジ
+マサキ,マツミ
+ナカシマ,マサオ
+アサハラ,マサヨシ
+ゴトウ,ヒサオ
+ウエマツ,ヒロシ
+サキモリ,ヨシアキ
+ヨシダ,ツトム
+フジタ,ヤスヨシ
+ヤギシタ,トシオ
+ムロフシ,マサヒロ
+カメダ,エイイチ
+イカワ,ヒロタダ
+ヤマザキ,ヒロシ
+ツルハシ,マコト
+ミノシマ,ノリオ
+キシモト,マコト
+タケシタ,マサシ
+ナカタ,シンイチ
+エンド,キヨシ
+モリヤ,ケイメイ
+クボタ,スミオ
+ナオハラ,ヒロシ
+クゲ,ケンジ
+カサノ,マサハル
+イイムラ,タカシ
+オオタ,マサユキ
+タケコ,ヒロフミ
+ムラコシ,トシオ
+ヨシダ,ケンジ
+アサノ,ヨシアキ
+ヨシダ,マサトシ
+ハヤシ,テツロウ
+スズキ,タツヤ
+オダ,リョウイチ
+ヤマウチ,キヨシ
+カワカミ,ツネオ
+ウスダ,コウジ
+サトウ,シンイチ
+クラシマ,シンジ
+マセ,ノボル
+コンノ,ヒロシ
+マツザワ,アキラ
+シマダ,シュウイチ
+ヤマモト,ヨシノリ
+オオクボ,ケンジ
+オグラ,カズノリ
+サクマ,エイジ
+ノグチ,ヒロノリ
+ヒナタ,コウイチ
+フジイ,シュンイチ
+スギモト,マサシ
+ツカハラ,ゴロウ
+ミツナガ,マサアキ
+ナカムラ,マサヨシ
+ヤジマ,タケシ
+カミタ,ススム
+ヒガ,ジュンキ
+ミナガワ,ヨシテル
+トミ,タカオ
+サカキバラ,ヒロシ
+カクタ,アキヒロ
+ツチヤ,ヒデユキ
+ムラタ,ケン
+タナベ,アキラ
+シモダ,ヨシノリ
+ツカモト,クラジ
+ハナハタ,ヒデオ
+カンダ,シンジ
+カワダ,ユキオ
+ヨシイ,ツネオ
+クラヤ,キヘイ
+テラシマ,ヒデユキ
+キタガワ,ヨシオ
+イデ,トシヒロ
+ツル,ヒサオ
+ウツノミヤ,トシカズ
+ナカザワ,マサヒト
+ヒダ,ヨシノブ
+ホソカワ,ヒデジ
+チグサ,セイジ
+ソウヤ,ヒロミ
+ヤマグチ,コウヘイ
+サカテ,フミオ
+アワタ,シゲル
+ワカバヤシ,カズヒコ
+エンジュウジ,マコト
+ノグチ,コウイチ
+カワムラ,マサオ
+モリモト,ミキオ
+ヨネハナ,タダヒロ
+ジダ,アキオ
+ウエダ,ケンジ
+シノハラ,イサム
+タカヤマ,マサカズ
+ヤマムロ,マサノブ
+ワキ,ジュンコ
+アマノ,マツオ
+ホソカワ,トシオ
+トウゴウ,ヒロヒサ
+ナカ,トミオ
+ノダ,タカノリ
+ヤマシタ,チエコ
+ナカジマ,ヒロシ
+ナガオカ,コウジ
+シブヤ,ヨシカズ
+セリザワ,コウゾウ
+フジモリ,セイジ
+フクダ,タツヒロ
+フジタ,タカヒサ
+ヤマジ,ヒデアキ
+コバヤシ,イズミ
+コバヤシ,キヨシ
+シシクラ,ヨシアキ
+コグレ,マサハル
+モリ,ヨウイチ
+ナカムラ,ノリタカ
+イイジマ,ノリユキ
+キタガワ,ヨシテル
+タムラ,タダヨシ
+ナガシマ,ヤスエ
+エノキ,イズミ
+サトウ,ヨシノブ
+マツモト,ヨシオ
+ウエダ,ヒロオ
+ミズタニ,アキラ
+アカシ,タツオ
+ナカモト,オサム
+ナカヤマ,ヒロノブ
+フジイ,ヤスヒロ
+ナカヤマ,ショウイチ
+ヨネミツ,テツオ
+タカセ,トシオ
+ワタナベ,ヒトシ
+フカザワ,トシノブ
+カゲウラ,マサミ
+シンドウ,カツジ
+シミズ,タツミ
+サカシタ,ヨシノ
+ミヤムラ,トオル
+タナカ,マサトシ
+タカイシ,ススム
+イシガキ,ケンジ
+タカダ,ヨシカズ
+タテイシ,カズナカ
+サカタ,ヒデオ
+ヨコハタ,トシヒコ
+クヤ,タモツ
+ヨシダ,マサヒデ
+キタダ,ハルオ
+ヨシダ,シンジロウ
+コバヤシ,カズミ
+ナリタ,ミツヨシ
+イヌイ,マサヨシ
+ヤスカワ,フミオ
+ノグチ,スナオ
+ショウダ,イチゾウ
+ヤマダ,テルヒサ
+ワクダ,ツトム
+アベ,サダヒロ
+タケカワ,タカオ
+サトウ,ヒデキ
+ハナオカ,ヨシオ
+オオノ,ヒデオ
+タナカ,ケンゾウ
+ツノダ,アキオ
+ナマエ,ケンジ
+タカハシ,タダヒサ
+ナカジマ,シゲル
+ナカムラ,キミコ
+ウリウ,ハルタケ
+フジイワ,フミヒコ
+ササキ,タカシ
+キムラ,ユタカ
+タカギ,シュウイチ
+カタヤマ,ヒロト
+イグチ,オサム
+アベ,テルオ
+スズキ,タカヒロ
+ヒラ,カズヒロ
+ナゴシ,ヒデアキ
+アダチ,ケンジ
+ムラヤマ,マモル
+クニカタ,ススム
+マツイ,マコト
+コイデ,ミツオ
+ヒロタ,ヒロヤス
+トミナカ,ヨシオ
+ワキタ,フジオ
+ウメムラ,ショウジ
+フケ,ヨウイチ
+ウエマツ,カツミ
+マツザキ,ヤスヒロ
+ナカノ,ツモル
+コダカ,タケオ
+ヒロタニ,ケンジ
+タカハシ,コウイチ
+サノ,ジュンイチロ
+シミズ,ヨシカズ
+カンザキ,テルヨシ
+オオサク,カズオ
+ワシダ,マサヒデ
+クニモト,ヤスマサ
+シロカワ,マコト
+カワハラ,ケンイチ
+オカ,ツネカズ
+コモリ,ヨシアキ
+ハヤシ,シゲアキ
+カネコ,イクオ
+カドイケ,ナオミチ
+オカムラ,ジュンイチ
+オカムロ,ジュンイチロ
+タブチ,ナオコ
+ヤマモト,アキノリ
+オオサ,タカシ
+イリエ,シンイチロウ
+タカハ,カズヒコ
+タイラ,ハルオ
+ミナミ,ヤスマサ
+イケダ,シゲル
+アオキ,フミオ
+ヤマウチ,ジ
+ヨシハラ,マサフミ
+ササキ,アキヒト
+ミズタニ,トシイチ
+ヒラノ,カツユキ
+ナガタ,アキラ
+カタヤマ,ケイ
+オダ,リョウジ
+エノモト,ユウキ
+タケナカ,サカエ
+マツザキ,ヒロシ
+マツバラ,コウジ
+ヤマシタ,セツコ
+メグロ,ヒロヨシ
+オザキ,ヒデユキ
+オオガミ,コウイチ
+オマエ,シンイチ
+キダ,カンジ
+ウエノ,オサム
+オカダ,カツユキ
+カナサキ,トミオ
+ヤカベ,ヒロユキ
+ナムラ,ユミコ
+イイジマ,モトアキ
+ササキ,ノブユキ
+モチズキ,ヨシノブ
+ブンヤ,トシオ
+オカノ,ヤスオ
+タケウチ,サトシ
+ウエノ,トオル
+フジモト,ヒデト
+カワグチ,ミツハル
+タキモト,マサノリ
+カタオカ,シゲル
+クサカワ,ナオキ
+アサイ,ヒトシ
+モリ,エイイチ
+クボ,ヨシクニ
+アンドウ,イチロウ
+ウラヤマ,オサム
+クリタ,ヨシオ
+イノウエ,タケシ
+カネカワ,ヒデオ
+ウエモト,リョウゾウ
+ナカオ,ケンイチ
+オカモト,ハルオ
+ニシムラ,キヨシ
+ヤダ,カズオミ
+キド,オサム
+オカバヤシ,ミツヒロ
+カワシマ,ジュンゾウ
+ハシキ,タカミチ
+ミヤモト,イチロウ
+ナカオ,タカヒコ
+マツオカ,ユキオ
+ヒビノ,ヒロミ
+ニシカワ,カオル
+カブタ,ケンジ
+ワタナベ,キヨシ
+ヤマノ,コウイチ
+サイトウ,シゲミツ
+スズキ,ユウジ
+クワハラ,サトシ
+モリタ,トシヒロ
+フジイ,スミヨシ
+ナガシマ,ツネユキ
+イナムラ,マサヒロ
+オザワ,ヒトシ
+タキモト,クニオ
+ミヤシタ,ヒサシ
+モウリ,マサユキ
+イノウエ,ミツオ
+ナガノ,モトアキ
+ハラト,ヨシオ
+マミヤ,トシカズ
+ヒガシバタ,ヒデオ
+ニシタニ,サトシ
+タカク,ノブユキ
+ハナダ,ミノル
+アサノ,ミチオ
+ババ,ヒロシ
+イトウ,シンキチ
+イイダ,ケンシ
+コハヤカワ,タケヒコ
+フジワラ,カツミ
+シュクリ,ヤスヒコ
+ユタニ,ケン
+ムネカワ,イクコ
+カンノ,マサヒロ
+ニト,カツミ
+タムラ,ヨシアキ
+ナカシマ,サトシ
+オオタ,チカコ
+イノウエ,ヨシコ
+クママル,ケンジ
+タナカ,シゲル
+マエダ,マサアキ
+アミ,ノブオ
+ミナト,アキラ
+ニシダ,カズオ
+イシハラ,サブロウ
+ナカシマ,トシオ
+イクタ,ヤスヒサ
+オキ,タダオ
+カガワ,シュウイチロウ
+ヒラカワ,トシオ
+ヤマザキ,トシノリ
+クマガイ,コウジロウ
+タシロ,ミツシゲ
+サノ,ヒデマサ
+ミドリカワ,フミヒコ
+ナカムラ,マサノリ
+ヨシミ,ヒロコ
+イナミ,ヒデト
+ワタナベ,キヨシ
+コガ,トモヒデ
+スガワラ,ヤスヒロ
+タケウチ,ヨウイチ
+エダ,ヨシロウ
+アンドウ,ヒロオ
+タルイ,ユタカ
+ゴトウ,ヒロシ
+シモガキ,シゲル
+ナガタ,ユキオ
+ホシカワ,ジュンイチ
+コミナミ,マサオ
+カガ,ヨウ
+ハゼカワ,ノブオ
+チバ,シズカ
+ウラノ,サトシ
+コンノ,トシキ
+コバヤシ,カズヨシ
+モモセ,ユウコ
+ツゲ,ジュンジ
+ヤスコチ,ヤスタカ
+ホソザワ,ショウイチ
+スギヤマ,カツユキ
+アベ,タケユキ
+タナカ,ノブユキ
+セイケ,ヤスヒロ
+ツゲ,マサノブ
+ワカバヤシ,アキオ
+オオクボ,タカオ
+オカベ,フミオ
+イワイ,ヒサオ
+タナカ,テルユキ
+ヤマモト,ミツオ
+タカヤマ,ナオキ
+タジマ,ヒデノリ
+カズシロ,マサハル
+コイデ,タカシ
+カモ,タツノリ
+キタジマ,ヨシユキ
+ハマノ,シゲル
+イイヤマ,トシユキ
+ヤマシタ,ショウイチ
+キタ,シゲユキ
+イシタニ,サトシ
+クジメ,サダオ
+キシカワ,カズオ
+ナガノ,マサヒロ
+ヨムラ,タダノリ
+ナカシマ,トシユキ
+モリ,エイジ
+ヤマジ,ヨシカズ
+オゼキ,マサタカ
+イナダ,ヤスシ
+ハヤセ,タカシ
+ホンポ,ススム
+オオヤ,カンジ
+キタムラ,タカシ
+トシン,サトル
+タケイ,ヤスフミ
+オカヤマ,ノブオ
+イシズカ,コウタロウ
+ハタ,トシアキ
+スガハラ,ユウジ
+イワミ,ヤスオ
+ユモト,ヒデオ
+キタガワ,ユタカ
+イハラ,ユウゾウ
+ノムラ,イチロウ
+ミヤサカ,ケンジ
+ヨシダ,トモヨシ
+フカダ,タカシ
+フジワラ,カズミツ
+キト,トシアキ
+ウエモリ,イサオ
+ヤマカワ,マサミ
+クロダ,ミチロ
+オオツカ,ヒロシ
+ウエダ,ユウジ
+ソノ,ミキオ
+ダイ,トモミチ
+シンゾウ,ヒロカズ
+ウエダ,ユタカ
+ワカミヤ,カズミ
+カムラ,フミツグ
+フルタニ,タカマサ
+カツウラ,カツミ
+クマイ,セイジ
+ババ,ハルツグ
+カネトモ,タツミ
+ムラハシ,トオル
+ドイ,タカシ
+ナミカワ,シゲハル
+タカオカ,ケンジ
+マツモト,リュウイチロウ
+ワタナベ,ヨゾ
+タダ,マサヒロ
+アリマ,ヨシテル
+ナガノ,トシノリ
+ヤノ,テルユキ
+イサカ,ユキヒロ
+イトウ,トクイチ
+ヤマザキ,スミオ
+クノ,カズオ
+シバ,ケンジ
+キムラ,アキラ
+スミダ,カズオ
+モトガイト,ヒロカズ
+ニワ,シゲコ
+タケウチ,ユウジ
+タムラ,カズヨシ
+ボウタ,ケイスケ
+カドヤ,ユウゴ
+ハラダ,ヨシノブ
+ミツイシ,ヒロシ
+イノウエ,ケイスケ
+ムラハシ,マコト
+ニシカワ,シンイチ
+マスダ,コウジ
+オオタ,クニオ
+フクイ,マサオ
+カゲヤマ,ケンジ
+ナガツカ,タダユキ
+クサノ,シゲオ
+コジマ,ヒロユキ
+クラタ,タダシ
+タケウチ,ケンイチロ
+イケダ,アツオ
+タカノ,ユタカ
+クラヤ,シンイチ
+オノ,ツトム
+ナカダ,ジュンゾウ
+トクモト,タカアキ
+オオハシ,トシフミ
+ヤマダ,アキラ
+ハンダ,テツオ
+イシハラ,セイジ
+ヨシハラ,サトシ
+タテイシ,トシヒコ
+イトウ,シフミ
+サトウ,タカオ
+オオクラ,ショウジロウ
+ナカスジ,ヨウイチ
+タイラ,ヒロシ
+キヒラ,ハルヒコ
+ナカジマ,ヒデツネ
+ヤマザキ,トキオ
+トビタ,アキラ
+ナカザワ,ハルオ
+ニシハラ,カズオ
+メグロ,ジュンジ
+マルヤマ,コウゾウ
+キクチ,ヒサノリ
+アオキ,ヨシミ
+キッタカ,タミオ
+ヤスイ,ユキコ
+イチマル,ヨシアキ
+ヤマザキ,トシユキ
+スガハラ,ジュンイチ
+トミナガ,ヨシヒコ
+チギリ,エイジロウ
+オオバ,ユリコ
+マツイ,フクミ
+ヒラヤマ,マサヒロ
+ヤマムラ,ミツノブ
+オオデ,マサミ
+ヨシナガ,チカエ
+コジマ,タケノリ
+トミナガ,チエコ
+サガ,テツヤ
+ハラ,ユウジロウ
+トミヨシ,タカシ
+ヨシダ,ソノエ
+ヒラバヤシ,ヒロカズ
+マツド,ヒデオ
+イマフク,ユウシ
+キヨセ,シンヤ
+ハナブサ,ススム
+チバ,トシノリ
+ヤマザキ,リュウジ
+ナカハラ,ケンジ
+オノ,コウヘイ
+ウエマツ,カヨコ
+アキヤマ,マサアキ
+トタニ,ヨウイチ
+ヨネダ,マサヒロ
+フルクサ,サカエ
+ヒロヤ,ノリヒロ
+ヨシダ,シンサク
+カネコ,シゲル
+ナガタ,マサハル
+イベ,シンジ
+セキネ,マサユキ
+オカダ,マサハル
+カナイ,カンセイ
+サトウ,ヒトシ
+サカキバラ,ヨシオ
+イマイ,ミハル
+ヒメジ,シンゾウ
+オギハラ,マサヨシ
+タケムラ,タカノリ
+トオヤマ,タカシ
+キタハラ,タカヒサ
+オオサカ,カツヒコ
+オオコウチ,カズマサ
+タカオ,ノリコ
+ウド,トシロウ
+ウノ,キンゴ
+フジキ,ヒロミ
+サトウ,トシオ
+イソガイ,マサミ
+カラサキ,ヨシオ
+ヤマダ,タモツ
+ワダ,エツオ
+シバタ,トシオ
+シオザキ,タツオ
+シガ,ミツノブ
+クリタ,ミチオ
+ハシモト,ヨシロウ
+ヨシムラ,タカシ
+ミヤザキ,ヒロノリ
+キタガワ,キハチロウ
+オダケ,チカラ
+スズキ,アキラ
+ヤマイシ,キヨアキ
+オゼキ,ヒロシ
+タカイ,サトミ
+カネコ,ケンジ
+ハラダ,ヒデユキ
+シマダ,ケンサク
+ヤナギ,タケオ
+スズキ,タカヒト
+タカハシ,ヤスオ
+オグリヤマ,トオル
+ワタナベ,ノブユキ
+ヤマムラ,ケンジ
+タカハシ,タダヒデ
+シオジマ,カオル
+ツルオカ,トオル
+イトウ,トシミチ
+マツウラ,セイキ
+ヤマモト,タカオ
+クマミ,ユウゾウ
+ケンヨシ,タカシ
+ヤマカゲ,ヨシアキ
+ゴトウ,ヒロオ
+タケウチ,マサトシ
+ハヤシ,カズユキ
+イシバシ,トシユキ
+イナ,リョウ
+イノウエ,タカユキ
+ニシカワ,ヒデオ
+ハンダ,キヨジ
+タテバヤシ,カズヨシ
+オシマ,クニヒコ
+シバタ,ハルキ
+ミウラ,アツシ
+コカゴ,カズノリ
+イイダ,ユタカ
+タケスエ,カズミ
+イガラシ,テツヤ
+マスヤマ,ヨシオ
+サクヤマ,カズオ
+サクライ,ケン
+タマリ,マサオ
+イマニシ,ミノル
+オガワ,マサヒト
+ハギワラ,キヨシ
+オオクニ,ヒデヒコ
+イケダ,セイイチ
+マエジマ,アキラ
+イワイ,カツミ
+ヤマダ,マサキ
+スダ,マサト
+トキワ,オサム
+ハヤシ,ユウイチ
+タケモト,カズオ
+カンバヤシ,マサオ
+トザワ,ツトム
+タテノ,シンゴ
+カンベ,ケイコ
+オクダ,ヨシト
+タモト,トミオ
+ナガイ,ノブタカ
+オザワ,シンイチ
+サトウ,ヤスナリ
+コンド,アキオ
+ネギシ,タダシ
+タナカ,テツオ
+コムロ,リョウイチ
+ヨシダ,トヨフミ
+イイジマ,ヒロミ
+ニイホリ,カズオ
+コモリヤ,ヨシタカ
+シンドウ,ヒデズミ
+ヤノ,ヨウイチ
+タナカ,マサトシ
+ハギタニ,ロクロウ
+コスギ,ダイキチ
+イベ,ノリオ
+カナザワ,ヒロシ
+タダ,タダヒサ
+ナガタ,リュウスケ
+カマダ,ヒロシ
+タカハシ,ヨシオ
+オイデ,マコト
+タカクラ,ヒロシ
+ヤスマツ,ススム
+マル,ヨシヒサ
+クボタ,ノボル
+タバタ,ケイイチ
+モリタ,ノリオ
+クニトモ,ツネジ
+アサヌマ,ヒロカズ
+ホシナ,ヤスオ
+ノザワ,ハルヒサ
+マツムラ,シンイチ
+ヒラカタ,カズオ
+ヒラマ,ハルオ
+シミズ,タカシ
+ヨコカワ,ワタル
+キクチ,アツシ
+クロサワ,イサム
+タケウチ,テツオ
+ヒラガ,ヨウジ
+サイトウ,ノリオ
+ウチボリ,コウイチ
+イナムラ,ヨシハル
+オサダ,タカシ
+スギヤマ,タカトシ
+イマズ,ヤスタダ
+ウラノ,マサヨシ
+モチズキ,カズオ
+スガワ,シゲル
+イケダ,トシオ
+タナカ,ハルオ
+サイトウ,タツジ
+フジタ,トシミチ
+ミヤネ,ツトム
+カマダ,ミノル
+ネギシ,ヨシノリ
+オクガワ,ユキオ
+ハヤシ,ヒサシ
+ババ,ノブヒコ
+ヤマモト,ツトム
+エンド,ノボル
+ソメヤ,オサム
+アライ,ヨシユキ
+アベ,アキラ
+チバ,タツオ
+タカヤマ,ミノル
+ヤマキ,ユウジ
+タケウチ,シゲフサ
+タケベ,タカオ
+アダチ,ヨシアキ
+タカシマ,アキラ
+ヨコヤマ,ノリナオ
+シライチ,マサル
+クドウ,シゲオ
+スズキ,キヨシ
+タカシマ,タカシ
+ヤマガタ,ミノル
+ヨシダ,タクオ
+ミヤカワ,ケンジ
+ササキ,ムツミ
+イデウラ,カズコ
+タナカ,ヒロシ
+イトウ,アツヒコ
+オオツ,タケシ
+フエキ,トシカズ
+シモフサ,アツシ
+ミヤカワ,マサタカ
+ハシモト,タカシ
+ヤマゾエ,コウジ
+ニイクラ,ノブオ
+ワタナベ,トシノリ
+ムロフシ,カナ
+カンダ,カツマサ
+クドウ,ケイコ
+タカハラ,ワタル
+オカダ,ケイジ
+ドイ,サトル
+タナベ,マモル
+コムロ,ケンイチ
+モリヤマ,フミコ
+アラマキ,ノブオ
+コシベ,カズロ
+サノ,ノブヒロ
+オカダ,ヨシマサ
+フジワラ,キョウコ
+マツオ,カズミ
+タナカ,ミネオ
+キハラ,ナオキ
+ニシハタ,ユウ
+ニシワキ,ヨシタカ
+オカザキ,ヒロカズ
+フジワラ,オサム
+ヤスダ,ユカコ
+オカ,キョウ
+ホソノ,シゲオ
+アカシ,タクマ
+ナカイ,コウイチ
+ヤスダ,キクジ
+テラムラ,フミタカ
+クボタ,ヨシユキ
+コニシ,シゲミ
+ノムラ,アキラ
+イノセ,クニコ
+ワタナベ,ヤスヒコ
+ニシオ,カズヒサ
+モミキ,コスケ
+スナダ,ヒロタカ
+タケウチ,サチコ
+アキセ,ヒロシ
+シオタ,ヨシヒコ
+キド,ヨシアキ
+イシワタリ,トシオ
+シラガミ,タカヒロ
+ウチナガ,ヒデヤ
+タナカ,シンイチロウ
+クロサキ,テツオ
+オトシ,ユウイチ
+サトウ,マサオ
+スズキ,マサユキ
+ヒロタ,サイジ
+ヤノカワ,ジュンイチ
+サカモト,マモル
+コムロ,マサト
+イマタ,ヨウイチ
+ホソヤ,カズタカ
+テラサカ,マサユキ
+ホンマ,カズエ
+カスガ,ヒロシゲ
+マツダイラ,エイジ
+カワカミ,シュウジ
+ネゴロ,シンジ
+フクダ,エイゾウ
+スズキ,ヒロシ
+トマツ,ヨシジ
+イノ,タツロウ
+スズキ,ジュンジ
+アサイ,カズオ
+ハラ,タカノリ
+ホシ,クニカツ
+ナルカワ,カズノリ
+オダ,タカアキ
+オバナ,シゲヤス
+タニザワ,マサヒロ
+フジオカ,タカシ
+ゴトウ,タカジ
+コレナガ,トシアキ
+タカハシ,ダイスケ
+タカラ,ミツハル
+オオクワ,キヨシ
+タナカ,ヒデカズ
+サトウ,ノリオ
+シマヌキ,ケン
+ソネ,ヒロシ
+タナカ,カズオ
+フジムラ,コウジ
+ゴトウ,シンジ
+ハシモト,ヤスタカ
+ヒルマ,アキラ
+ホシバ,ヒデヨ
+カメワリ,ヒロミ
+オクイ,ヒロシ
+ヒサモト,オサム
+スズキ,キヨシ
+ヒラサワ,ヨシタカ
+キタデ,ノリアキ
+フクダ,カズヒサ
+シオザキ,ケイジ
+ムトウ,ユタカ
+ニシオカ,サブロウ
+ツボノ,ヒロヒサ
+ナツウメ,トシマサ
+タニガキ,ヒロアキ
+オオスガ,カズオ
+ウチダ,ヒデオ
+カトウ,エイジ
+ササキ,ヒデオ
+カシマ,ノリオ
+アカサカ,カズオ
+カワカミ,ヨウイチ
+シド,タツヤ
+ヤマウチ,ヨシヒデ
+カノ,ユタカ
+ハラ,イクオ
+マツバラ,ケンジ
+テラカド,カズヒロ
+シオタ,ヨシノリ
+オカダ,ヒトシ
+クロダ,リョウ
+モリモト,フジオ
+セキ,ヒロシ
+スズキ,アキラ
+タケクサ,ヒロシ
+タガシラ,ノブオ
+コバヤシ,オサム
+サエキ,ケイジ
+タツザワ,キミアキ
+サイトウ,ヒトシ
+フルカワ,キヨシ
+タムラ,フミト
+ツリヤ,マチオ
+サカグチ,フミトシ
+フクシマ,ヨウイチ
+オオカワ,ヒロシ
+フジタ,シュンスケ
+カワグチ,カツノリ
+トキオカ,テルオ
+ナカノ,トミオ
+イノウエ,マサユキ
+クニトシ,タクロウ
+サカタ,コウイチ
+モリカワ,ツネオ
+ノグチ,ヒロシ
+クボタ,ムツミ
+ナカオカ,タツオ
+ノフジ,ケイジ
+モガリ,エイジ
+マエザキ,イサオ
+オオツカ,シゲヨシ
+ミズタ,ケンノスケ
+スギヤマ,ヨシヒサ
+カガワ,ヨシタカ
+ニシハラ,ヨシフミ
+テズカ,シンイチ
+シオミ,ミツオ
+オオハラ,タダアキ
+アサクラ,アキヒロ
+シマダ,テツヤ
+シマカワ,ススム
+ハシモト,ヒトシ
+ウズ,シズオ
+タカクワ,マサノブ
+ミチタ,シュンイチ
+ウエダ,ウイリ
+シガ,タカツグ
+イケミ,ミツグ
+モリ,マサアキ
+カシモト,マスミ
+イシハラ,チエコ
+カネコ,チエコ
+タカハシ,トシオ
+モトイ,マサオ
+コタケ,ミチオ
+カサイ,スエコ
+カトウ,ノリコ
+コクボ,ケイコ
+ワカヤマ,シゲヤ
+サナダ,マサヒコ
+サカタ,トミヨシ
+ノムラ,ミツオ
+ハヤカワ,カズミ
+ミヤザキ,シゲオ
+オニツカ,ケンジ
+イデ,オサム
+ナガサコ,タカノリ
+イトウ,ミチタカ
+カネタケ,テルアキ
+クボタ,キヨユキ
+アリマ,ケイコ
+ワカオ,ヒロシ
+イシザカ,タカユキ
+オタ,ゼンハチロウ
+サカモト,ケイゴ
+オオホリ,ユキオ
+シンタニ,トシアキ
+ウチヤマ,タカシ
+ヒラタ,ミナコ
+アリゾノ,サトコ
+イトウ,タカシ
+アオヤギ,マサアキ
+ナカムラ,サダオ
+イイダ,ミチオ
+ナシキ,カオル
+ムラセ,カズオ
+マツオ,ケイゴ
+サトウ,シロウ
+アサヌマ,シンイチロウ
+フタミ,ヤスマサ
+フナト,クニミ
+フジタ,ユミコ
+フルカワ,タケオ
+フナハシ,ヒサヤ
+ブトウ,ヒロユキ
+カノウ,カツヒロ
+オキツ,ヒロタカ
+タカギワ,イサム
+ホシノ,チエコ
+ニシジマ,クニヒロ
+カマタ,チアキ
+ツジモト,トシイチ
+ハナダ,シンジ
+ヒロセ,マサオ
+ニシダ,ヒトシ
+ウエキ,トシカズ
+ヨシノ,キヨオ
+キタムラ,セイイチ
+シミズ,ミチコ
+イシザキ,ヒサシ
+ハヤシ,ミツノブ
+キクチ,ヒデフミ
+オカド,ツグオ
+コムラ,シゲル
+ハシモト,ツトム
+ナカツカ,タケシ
+オオイシ,マスヨシ
+クロダ,マサヨシ
+ナカイ,マサミ
+キタザワ,ノリアキ
+キシダ,シゲル
+カナマル,マコト
+アライ,シズオ
+フタツギ,ハルオ
+キクチ,トシオ
+イイダ,ヤスシ
+ナカエ,アキオ
+ヒラマツ,ミノル
+ニシオカ,ジュンゾウ
+サトウ,ケイキ
+モリ,ハルオ
+ホシノ,イサオ
+ヤマグチ,ノブヒロ
+ウスイ,ヨウイチ
+マツバラ,エイイチ
+アリサカ,マサキ
+ニシオ,エイジ
+キダ,テツオ
+ヤノ,ユウイチ
+カトウ,ケンタ
+ワタナベ,チヒロ
+ハヤシ,ヤスオ
+ワタベ,ヨウイチ
+ワタナベ,マサオ
+ユグチ,ヒロコ
+ヤマモト,ヒサシ
+サイトウ,フミオ
+カイズ,ケンイチ
+ホシノ,ヒデオ
+シノハラ,ノブヒロ
+オオヌマ,マモル
+ミワ,タケシ
+ホリムキ,ヨシマ
+イシタテ,シンイチロウ
+ミフネ,キヨシ
+モミキ,マコト
+ハセガワ,テルオ
+スギヤマ,シュンジ
+ツクダ,タダシ
+アダチ,フミノリ
+デザワ,タダヨシ
+オタ,キヨシ
+サトウ,アキラ
+セキグチ,ミツノリ
+コクブン,ヨシキ
+ホシナ,ユキフミ
+ウラノ,コウイチ
+タケムラ,ヤスヒロ
+トクナガ,ヒトシ
+クリハラ,ヒデト
+オクムラ,ジュンイチ
+サイトウ,シンイチロウ
+マツシタ,ケイゾウ
+タケダ,ミチコ
+ニシキ,モトヨシ
+ウメダ,サカエ
+ホンダ,イクオ
+カモ,カズウミ
+ウシダ,ツヨシ
+サイトウ,ヒロツグ
+ハスダ,マスオ
+ミカワ,ヨウコ
+ウチダ,クニヒコ
+ニシザキ,ショウイチ
+イガラシ,ショウジ
+ワタナベ,アサコ
+シマムラ,コウジ
+カトウ,ノリコ
+カワベ,ショウコ
+サカモト,ヨウジ
+モリシタ,モトヨシ
+スガハラ,リョウ
+トミヤマ,カツヒコ
+フクダ,ツヨシ
+オトザキ,アツヒコ
+フジモリ,タカオ
+コモリ,キヨユキ
+フクナガ,マサアキ
+ミヤハラ,カツノリ
+ジンノ,ミツオ
+キムラ,エイコ
+イナガキ,ユキコ
+モリ,ノリオ
+ワタナベ,カツノリ
+ツジモト,アキオ
+モンゼン,ヒロユキ
+ナムラ,
+ヤマモト,エリコ
+ハシモト,ヒロキ
+アライ,ヤスノリ
+フジイ,ヒロシ
+ワタナベ,テツ
+ハセガワ,トヨカズ
+シゲヤス,エイイチ
+ヤマノイ,タクマ
+コバヤシ,マサル
+ナガイ,ヨシアキ
+サワ,ノブオ
+マツヨシ,ミチオ
+サイトウ,カオル
+カノウ,ヒロアキ
+ウシゴメ,ヤスオ
+イシイ,コウジ
+ウスキ,イズル
+スドウ,ヨシオ
+カジヤマ,タカキミ
+オオバ,ヒデキ
+スワ,フミオ
+イワタ,ヤスト
+トウ,ハジメ
+オイカワ,ヒトシ
+ヒライ,エイコ
+タカシマ,トシオ
+フミノ,ヒロシ
+オカザキ,ノリオ
+シラキ,マサツネ
+タケモト,ユウジ
+マツモト,ノリヒコ
+マツバラ,ヒロシ
+エビハラ,コウジ
+フジノ,ヤスオ
+フカヤ,マサヒロ
+ホシノ,タカシ
+カタヤマ,サチコ
+アラカワ,マサユキ
+タカノ,カズオ
+クロダ,ヤスヒロ
+イトウ,ジュンコ
+コザイ,ミツル
+ウエヤマ,キヨシ
+ハットリ,トシキ
+ニシムラ,トシタカ
+フルカワ,タカオ
+ヤシキ,シゲキ
+ホドヤマ,ヒデオ
+エトウ,トモヒコ
+ヤマモト,マサトシ
+セキグチ,イサム
+タナベ,ヒデトシ
+タケダ,トシユキ
+シンタニ,カタシ
+クボタ,キヨシ
+スギオカ,サトミ
+ヤマザキ,サダノリ
+サイトウ,ヒデキ
+ウエノ,トシタケ
+シマモト,コスケ
+キタノ,マサミ
+イイズカ,リョウコ
+イズミ,キョウジ
+ハラダ,タカユキ
+オチアイ,サトシ
+ヤマウチ,アキヒロ
+エグチ,ヒデツネ
+ハギワラ,タケシ
+タカギ,タケノリ
+オクモト,マナブ
+マツザキ,リョウイチ
+イチムラ,ユリコ
+ミヤサカ,トモコ
+ミヤタ,セイイチ
+ナガオ,ショウキチ
+イワオ,マサシ
+フカザワ,シゲル
+タムラ,マサオ
+キリュウ,タダオ
+マツザキ,ヨシオ
+カトウ,テルミツ
+ミタ,ナオト
+イシイ,イサム
+オカモト,テツオ
+ウエオカ,ノブオ
+キョウノ,マサト
+カネコ,ユウゾウ
+サクライ,キョウコ
+ワカバヤシ,トシヒデ
+ワタナベ,ヨシヒロ
+アサイ,ニスケ
+カドノ,ユウジ
+ヤマザキ,トヨヒロ
+アワノ,トシユキ
+オガワ,タカノリ
+ゼンケ,トシオ
+フクモト,トモヒコ
+オド,カズノリ
+モリモト,タカオ
+トウボウ,カズミ
+カタヤマ,マサシ
+ナガマツ,タカアキ
+ワタベ,ヨシミ
+イシキ,ユウ
+イナガワ,ユウコ
+ナカノ,タカハル
+ニシヤマ,ヤスヨシ
+シモダ,ミヨコ
+シゲタ,タカオ
+マツモト,ヒロシゲ
+カタヤマ,ユウ
+ソノ,カツミ
+イセキ,ユキオ
+イトウ,ヨシカズ
+セキネ,マサオ
+ムラヤマ,フジオ
+マルヤマ,ケイジ
+クロサワ,ヨシフミ
+スミ,トオル
+ノグチ,ユウジ
+サトウミ,ヒデキ
+オオカワ,ツグヒト
+ナカノ,ヒデノリ
+オオイシ,ジ
+ハブ,アキラ
+ウチダ,ノリマサ
+ミキ,フミノブ
+スズキ,ツネユキ
+カサハラ,イズミ
+オオクボ,カズハル
+カタカミ,ノリカズ
+タカハシ,トシヒコ
+イシカワ,カズヤ
+タカトリ,タカオ
+タニグチ,シンジ
+セキ,ユキマサ
+クボタ,マサト
+アベカワ,ムツオ
+フジマキ,タケシ
+カタヤマ,マサユキ
+コヤマ,ケンジ
+ハシモト,アケミ
+スミ,ミチオ
+ニシカワ,ヒロシ
+サワマ,アヤコ
+ハシモト,ユウコ
+ナカタ,ヤスマサ
+ウチヤマ,ヒロシ
+ササキ,マリ
+アサハラ,ミツヒロ
+ニッタ,フミコ
+ダン,ルリコ
+スギタ,テツシ
+ヤマモト,シンイチ
+オフチ,ミキ
+コバヤシ,ミワコ
+ミヨシ,コウキチ
+イシダ,ヒデヒコ
+オニキ,ノボル
+クリハラ,タミオ
+シライ,ツカサ
+サカニシ,ケンイチ
+オダ,ヒサシ
+カマス,ケンゾウ
+ナカガワ,マサヨシ
+カシモト,キョウイチ
+バンドウ,ユズル
+フタミ,マサシ
+ヤマシタ,タカシ
+ハヤシ,ユウジ
+カゲヤマ,ミノル
+アスマ,ノブオ
+シモムラ,ユウイチ
+ヤマグチ,タダシ
+ヤマト,ヒロシ
+サトウ,シゲル
+マツダイラ,カズヤ
+マツムラ,トシミチ
+コンノ,ヨシヤ
+オオハシ,ヤサブロウ
+キクタ,シゲキ
+ヨシオカ,ヒロシ
+サノ,ヨシオ
+タナカ,ユキノリ
+ササキ,ススム
+カワグチ,アツシ
+ヤマシタ,タツオ
+タケムラ,フミオ
+フクチ,カズエ
+マナカ,トミエ
+アラキ,タカノブ
+ヒラノ,ヨシカズ
+ナカムラ,ツトム
+ハシモト,トシカツ
+カトウ,イクコ
+ハマカワ,クニオ
+ハヤシ,ケイコ
+イトウ,ケンイチ
+スズキ,イチロウ
+タケウチ,カズヒコ
+ニシ,コウイチ
+イワホリ,トシマサ
+イマイ,クミコ
+モリノ,タカシ
+ニシハラ,ケイ
+キリヤ,ヒサト
+サトウ,トヨコ
+ホソダ,ヒサコ
+タカハシ,タダシ
+ナカジマ,シゲル
+ヤスハラ,ナルユキ
+クロイワ,タカシ
+カモ,ヒロシ
+アカマツ,クニアキ
+キタムラ,マユミ
+ニシダ,ユキコ
+オカダ,シンイチ
+ササキ,トシユキ
+タカハシ,ヒロシ
+シミズ,イサム
+エンド,シンスケ
+ウダガワ,テルオ
+シミズ,ノリフミ
+アオヤギ,セイゾウ
+ハシモト,カズオ
+タケウチ,ヒデアツ
+アライ,ヤスシ
+イシジマ,イサオ
+コガネ,ヒデオ
+サワシマ,シンイチ
+タカヤナギ,ミノル
+マサダ,ヒロミチ
+シミズ,アキヒデ
+オノデラ,タカオ
+タナカ,ミツル
+ノムラ,ノブオ
+ヨシダ,ヒロシ
+ヨシダ,トシスケ
+サタケ,シンジ
+サイトウ,マモル
+ミヤギ,ヒロシ
+タカシマ,ケイジ
+カバヤ,ヒロフミ
+イシザキ,シンイチ
+カガヤ,ヨウイチ
+コタニ,タクモリ
+コスダ,ヤスアキ
+イジリ,ユタカ
+マルヤマ,タミヤ
+カナイ,ヨシオ
+ヤギ,ミツグ
+フジノ,サトシ
+コデラ,マサト
+スギオ,マサユキ
+スガハラ,コウイチ
+サイトウ,ミツヤス
+オカ,ハルヤス
+イシマル,オサム
+ミヤザキ,コウゾウ
+ハマノ,ミチオ
+コタジマ,ヨシノリ
+タカシマ,アケフミ
+ツカダ,セイイチ
+ナカムラ,カツフミ
+タケダ,マサノリ
+ヤスムロ,ハルヒコ
+ナカムラ,ヒロシ
+フジシマ,シゲマサ
+オカダ,タケシ
+アヤ,ミツマル
+ナカムラ,ミツマル
+タカハシ,タケヒロ
+スガハラ,シゲタダ
+ユアサ,ケンジ
+イシイ,ムネヨシ
+オオクボ,ヒロトシ
+オサワ,マサタケ
+ヤマモト,ミキオ
+イマイズミ,カズヒコ
+オカダ,ヨシヒロ
+ナカムラ,クニオ
+タナカ,キヨシ
+ナカノ,タクオ
+オオモリ,カズヒコ
+ヤマモト,カズオ
+ナガイ,ユキマサ
+コバヤシ,ヨシハル
+ヒキチ,ヒサシ
+ヤマダ,トシオ
+ツカモト,ツトム
+イノウエ,マサト
+イノウエ,アキラ
+スミカワ,カオル
+フクダ,ジュンイチ
+ヤマモト,セツコ
+サイトウ,ユウコ
+カンバ,ヨシミツ
+サライ,マサアキ
+サカキ,ショウジ
+ヤスイ,タカシ
+カミムラ,タカシ
+セベ,ヨシタカ
+ヨシダ,トシカズ
+ナガセ,タダシ
+フクチ,イズミ
+フクダ,ジ
+ノナカ,ノブヒコ
+イマダ,マサヒロ
+ニシカワ,マスコ
+コヤノ,ヒデオ
+ナカザワ,アキオ
+オガワ,タカシ
+ナカヤマ,ハルヒサ
+ヌノカワ,ケイコ
+ソネ,フミオ
+ミゾグチ,ユキオ
+コバヤシ,イワオ
+ヨシマツ,マサオ
+オオハラ,マサオミ
+ヤマダ,シンジ
+ミノグチ,ヨシノリ
+シンメン,タカフミ
+ノセ,マサオ
+イワハシ,リョウイチ
+アカイ,タケシ
+ツタモト,マサハル
+ナカモト,ミノル
+クダナミ,マサユキ
+イチダ,タカシ
+ヤノ,エイジ
+マツキ,キミオ
+ササキ,ヨシシゲ
+フルノ,カオル
+フジタ,アキラ
+イノウエ,ミドリ
+タヤ,ミツヤス
+ミヤザワ,タロウ
+ワタナベ,ヨウコ
+アクネ,トシロウ
+ホシノ,シンイチ
+ヨシダ,カズオ
+ウエムラ,ノボル
+カミヤ,ケンジ
+スズキ,タケシ
+アンドウ,タカハル
+トヨイズミ,トシオ
+クワナ,ノリコ
+ニイミ,カツシ
+ミウラ,オサム
+ノムラ,アキラ
+オカダ,ジュン
+アサヌマ,カズヒロ
+ササオ,ヒデユキ
+イナガキ,マサト
+スガワラ,サトシ
+ショウジ,タケサダ
+タガワ,ミノル
+ソガ,ノブトモ
+ショウワ,キヨミ
+マツカワ,ヒロユキ
+シモムラ,ユウジ
+ワタナベ,ナオユキ
+コバヤシ,シンジ
+イイダ,コウイチ
+フクモト,ケンイチ
+ムラヤマ,ヒロキ
+ホリ,マサアキ
+ヤマノ,ヒデオ
+ニシワキ,ヨウジ
+マツオ,マサナ
+オカモト,マコト
+オオサキ,ケンイチ
+ウメモト,ナオフミ
+オカムラ,アタル
+コイケ,コウセイ
+オオタニ,マサアキ
+カタオカ,マサキ
+オカダ,シチロウ
+フクシマ,ヨシオ
+エダナカ,ヤスノリ
+スズキ,シゲル
+イチカワ,セイイチ
+クロカワ,キヨシ
+サトウ,キヨヒサ
+オオサワ,カズヒコ
+モチズキ,スエヒロ
+ヤマシタ,ケイイチロウ
+イチカワ,タカシ
+フカザワ,カズホ
+クボタ,ノブオ
+ニシムラ,コウジ
+ネギシ,ヒサユキ
+コンド,ケンジ
+フルヤ,ミツギ
+コバヤシ,タツオ
+タムラ,ヒロヒコ
+ミツハシ,ダイハチロウ
+クマザワ,カツミ
+ヤマダ,ヨシオ
+ヒロツ,カズミツ
+カネダ,ユタカ
+アソ,ユキオ
+エビハラ,キイチ
+ヤスイ,クニオ
+スドウ,ヒロコ
+ヤハタ,マサノリ
+サカイ,トモヒロ
+サガ,ヨシオ
+ヤマザキ,エミコ
+ナカムラ,ヨウコ
+イザワ,ヒロチカ
+アライ,ケンイチ
+ウブカタ,サダミ
+ワタヌキ,タダユキ
+ヒシタ,ノボル
+カトウ,ユウコ
+ヤマネ,ヨシト
+ヤマシタ,ヒロシ
+ノムラ,ヨシロウ
+ヤナイ,マサユキ
+ムラカミ,マサミチ
+アオキ,アキラ
+ヤシロ,ススム
+アサマ,マサヒロ
+オクダ,フミオ
+イシバシ,ユウジ
+ミナミデ,ヒデアキ
+イヌズカ,コウヘイ
+トキワ,ヨシハル
+ミウラ,ヤスノブ
+マブチ,トシハル
+オバラ,ヒロユキ
+マツキ,ヒロシ
+エグチ,ケンイチ
+オオミ,タケシ
+ワタナベ,タケシ
+アラカワ,シンジ
+スガノ,アキラ
+ヤスイ,コウヘイ
+ミヤモト,ヒロヤス
+フジギワ,コウイチ
+キタガワ,ミキオ
+タニグチ,ミツル
+コジマ,ヨシアキ
+アマカワ,ユタカ
+オオヌキ,ユタカ
+タナベ,コウジ
+マルハシ,イサオ
+ヤドヤ,ジュンイチ
+オオガク,ヨシヒロ
+サカタ,コウヘイ
+ハラ,ヒデミ
+タカギ,ヒデオ
+アイハラ,アキラ
+オオタ,トオル
+アキヤマ,ヨシヒロ
+シミズ,タカオ
+コバヤシ,オサフミ
+ハタモト,ケンジ
+ウスダ,タカノブ
+タカハシ,カズオ
+ナカガワ,テツオ
+マツバラ,ハルオ
+クヌギ,ユタカ
+オガワ,ヨシオ
+ツジ,カズタカ
+カワイ,ケイイチロウ
+スガワラ,シュウイチ
+ムトウ,カズオ
+オバラ,ヤストシ
+カトウ,タカユキ
+カブラキ,ユキオ
+ワカタベ,ツトム
+オガワ,コウシロウ
+イワサキ,ヒロユキ
+ナリタ,オサム
+アキヤマ,タカシ
+ミツイ,ケイイチ
+エンド,ユタカ
+ヨネタ,アキオ
+アオイ,キヨシ
+オカモト,ヨシヒサ
+オオツカ,シンイチ
+フクモリ,サカエ
+テシマ,カズマサ
+ハマ,ヒデキ
+ヨシダ,ハジメ
+カワベ,ヨシハル
+タナカ,ヤスノリ
+タカハシ,キョウイチ
+タナベ,フミアキ
+アソ,ヒロイチ
+タカダ,ヒロシ
+ミヤノ,トシオ
+ウエズミ,ヒトシ
+イチカワ,ヤスアキ
+アサワ,トモフミ
+イナモト,カズオ
+モリヤ,ヒトシ
+ナカタニ,ケン
+ミヤモト,イチゾウ
+ミクニ,エイイチ
+キタムラ,タダマサ
+ヤタベ,マサヒデ
+ナガカワ,リョウイチ
+ヤナ,カズオ
+サクマ,ミツル
+アライ,トシオ
+シマダ,ナオコ
+テズカ,シュンイチ
+ウエノ,シュンイチ
+サイトウ,ヒロユキ
+オオクワダ,マナブ
+ヨコヤマ,ヨシオミ
+ワタナベ,ヨウイチ
+ニシムラ,アキノリ
+タカマツ,コウイチ
+ニシムラ,タツマ
+イチキ,ヒロシ
+イワシタ,ノブツナ
+オノ,トシオ
+ニシキ,タツオ
+サワ,カズオ
+タカミ,オサム
+ヤスフク,ケンジ
+オオタ,ヒロシ
+オカモト,ヒロマサ
+サカイ,ヤスオ
+フジモト,トキオ
+マツモト,シゲノリ
+オオヤブ,カズヤ
+ニシムラ,シュウイチ
+ホリウチ,ケイイチ
+イシモト,シュウイチ
+マツモト,ナリオ
+タケウチ,シンイチロウ
+モトヤマ,コウシロウ
+ヨシナガ,コウジ
+フルカワ,ミチオ
+タニグチ,ヨシオ
+タケコシ,マサトシ
+ツムラ,コウセイ
+オノ,シゲオ
+オカモト,サトシ
+フルタ,マサヒロ
+ニシノ,ソウイチロウ
+ミズタニ,ヒロユキ
+コヤマ,ヒサシ
+キクチ,ケンイチ
+オオコウチ,マサアキ
+カワタ,タカシ
+クハラ,ヨシユキ
+フルハシ,コウゾウ
+タカヨシ,フミトヨ
+カス,ノブユキ
+アミモト,ススム
+ムネトウ,トシオ
+マツモト,ススム
+タカナシ,マサアキ
+アキタ,トシオ
+タカハシ,ヤスミチ
+ナガイ,タカシ
+ヨシダ,ツカサ
+マツモト,ヤスアキ
+トクダ,ミチオ
+ヒライ,ノゾム
+オクシマ,タカシ
+マシタ,シゲオ
+ヤマダ,キミヒロ
+サクライ,トモオ
+タキザワ,サトシ
+マスコ,ユウジ
+シンカワ,ヒロエ
+オオタニ,タダヒロ
+カワノ,ヨシミツ
+アラカワ,テツオ
+アダチ,タカユキ
+ウチダ,ケンジ
+コハラ,トシヒコ
+オオハシ,カズヒコ
+カメオカ,ヨシオ
+ミムラ,トミオ
+イキ,ヨゾ
+アシズカ,ヒロシ
+ヤマモト,ヒロノリ
+ヨシダ,オサム
+ハラオカ,カツヤス
+ウルワシ,ヒロシ
+オンダ,ケンジ
+インド,マサオ
+タケナカ,マサトシ
+フジサワ,マモル
+オオモリ,マサユキ
+ナカムラ,ヒロシ
+ショウジ,ヨシノリ
+キタジマ,ヨシアキ
+イトウ,アキラ
+ヒラオ,カズタカ
+スミモト,ノブヤ
+ナカタニ,ヒロシ
+アラシマ,ユキオ
+カタヤマ,ユキノブ
+ウエダ,マサヒロ
+フジモト,ヒロフミ
+ヤマハタ,リュウジ
+オオタニ,ツトム
+イイヌマ,ヨシヒロ
+ナガサワ,ヨシロウ
+ヤスダ,シュウジ
+フクシマ,リョウイチ
+サカキバラ,アヤコ
+カトウ,タカシ
+ヨコザワ,フミタカ
+カドノ,カズミ
+ヤマオカ,キヨシ
+カミタニ,ヒロキ
+カトウ,エツロウ
+ノモト,トシカズ
+スギモト,セイイチ
+フジノ,コウジ
+イノウエ,ショウジ
+ハセ,マサカツ
+モリ,エラブ
+カワバタ,ヒデオ
+カワゾエ,ショウイチ
+ハシモト,ダイシン
+ヒロマサ,ヤスヒロ
+キシモト,クニオ
+ヒラツカ,ミノル
+ウエダ,ヨシユキ
+アライ,トシヒコ
+イイダ,マサユキ
+ヒロシマ,ショウゾウ
+イサカ,カツヒロ
+スズキ,ヨシオ
+クラモチ,タカオ
+サイトウ,マサオ
+スズキ,ミツグ
+フカヤ,テツジ
+サカイ,トシロウ
+オオワダ,トシオ
+カメヤ,カツミ
+クサウラ,トシオ
+ワダ,カズオ
+ゴトウ,キョウイチ
+ヒラフク,アキラ
+モロヤ,ヒデトシ
+イケダ,サダユキ
+マスダ,マサハル
+ミズノ,トシタカ
+ハヤシ,キヨトシ
+アオキ,トシヒコ
+コバリ,マサユキ
+ミサワ,サブロウ
+タカギ,テツオ
+エンド,ケンイチ
+スガサワ,セイジ
+オリハラ,トヨミ
+マツナガ,タカフミ
+カサイ,キヨアキ
+セムラ,タカシ
+サクライ,タカアキ
+テラカド,ヨシユキ
+フジタ,ヤスアキ
+カワノベ,カイチ
+アオバ,マサル
+ムラモト,ユキヨシ
+ツボウチ,タカシ
+フルショウ,フジオ
+シバヤマ,フミオ
+ヤマモト,タカヒロ
+ウチダ,ヒロフミ
+マエザワ,トミオ
+コムラ,アキノブ
+ヤマサキ,ヨシジ
+ウシキ,カズミ
+マチヤマ,ショウジ
+フジヌキ,ススム
+ナカムラ,マツミ
+クスモト,テルオ
+スズキ,ヨシオ
+ウエヤマ,トシユキ
+コイケ,ヒロシ
+ハセガワ,ミツアキ
+フルカワ,ヤスヒロ
+ヤマダ,アキオ
+ユハラギ,ミツヨシ
+オシマ,ノリユキ
+ソネ,マサヒロ
+トウマ,サチヒロ
+タカハシ,シズオ
+カケハタ,マサオ
+イシイ,シゲル
+サトウ,ノリユキ
+ムラヤマ,ケンジ
+ホリグチ,マコト
+ナカザト,ヒロシ
+サトウ,マコト
+カネコ,リュウゾウ
+カシマ,トシノブ
+トグチ,ヒロム
+コミヤマ,キミアキラ
+ヤマオカ,ヨシノブ
+タカハシ,ケイイチ
+モリタ,ケイイチ
+ヨコイ,ヨシノブ
+ヒライ,ケイイチ
+シイバシ,マサタケ
+カネコ,マサフミ
+ナカネ,ノブハル
+セキグチ,テツオ
+ミモリ,タカヒコ
+キクチ,マサタカ
+ヤマモト,カツジ
+アラカワ,タカオ
+トモクニ,マサキ
+トミタ,ノリカズ
+タカハシ,シュウヘイ
+トガシ,ノブオ
+カワムラ,トシヒロ
+フクナガ,ケイジ
+マキタ,トクミ
+サノ,ミノル
+サトムラ,ケイジ
+サカノ,ジュンヤ
+ツチハシ,シゲアキ
+ウエノ,ケンゾウ
+ナカガワ,ヒデアキ
+トクナガ,ケンジ
+イトウ,カズオ
+ヒサマツ,トヨトシ
+オオツカ,カメオ
+カワモト,シゲキ
+ノムラ,ヨシイチ
+カノウ,ユタカ
+ウエサカ,ユウジ
+フジワラ,ヒラオ
+オガワ,マサト
+クラタ,トモフミ
+ハナソト,トヨフミ
+ニシカワ,タカヨシ
+エビス,ヒデオ
+ヤスノリ,ヨシハル
+サカイ,タケシ
+マエダ,ヨシアキ
+フクダ,シゲタカ
+ヤマモト,マサズミ
+シオタ,ヤスマサ
+ムラカミ,トモヨ
+イクミ,タカシ
+ナカギ,ユミ
+トクマツ,タカオ
+タニイ,トシユキ
+オオヤマ,ケンジ
+タノ,タカチホ
+オオタ,ヒロノブ
+クマノ,アキオ
+サワグチ,マサクニ
+アサノ,カズオ
+サカグチ,ノリユキ
+ワタナベ,ツトム
+カトウ,カズオ
+マエカワ,タカシ
+マツモト,カズオ
+マツモト,トシオ
+ヤマナカ,エイジ
+コバヤシ,コウジ
+フジタ,タツオ
+ヤギ,マサミ
+イワイ,マサタカ
+フクシマ,ヒデミ
+フルカワ,コウイチ
+オガタ,マサノリ
+スズキ,タダヒコ
+シカマ,タカシ
+キシモト,シュンイチ
+コロギ,カツミ
+フタミ,キヨシ
+ヤシロ,トシオ
+ハリイケ,ヨシハル
+シムラ,アリマサ
+ナガクラ,イチロウ
+ミナミ,コウジ
+トクナガ,キヨシ
+タナカ,フクム
+テラサキ,シロウ
+カトウ,トオル
+ミズノ,ヨシアキ
+タモト,ヒトシ
+ウチダ,ヒロカズ
+タケイチ,ヨシユキ
+ヒビノ,ヒロシ
+コバヤシ,リョウヘイ
+ワタナベ,ヒロタダ
+フカダ,マサヒロ
+イシタニ,カズヒサ
+イデ,ヨシユキ
+ニイサト,マサユキ
+スナハラ,ショウジ
+シミズ,マサオ
+カトウ,ノリユキ
+ナイトウ,ジュンジ
+コイケ,トウスケ
+キタムラ,トヨヒコ
+カガワ,トシユキ
+イケダ,タカシ
+カノウ,タカシ
+オカモト,ソウジ
+コバヤシ,サダヒロ
+イシイ,マサヒロ
+サエキ,マスユキ
+サワダ,タカシ
+ゴトウ,ノブユキ
+オノ,マサヒロ
+フナオカ,マサアキ
+シンヤ,マサカズ
+ホンザワ,ヒカル
+ヤマウチ,シゲジ
+イシノ,ツトム
+イオク,ヒデトシ
+アラキ,ヨウコ
+フジワキ,ミノル
+イチムラ,マサキ
+ハヤシ,ヨシサダ
+モリ,タクジ
+キムラ,シゲル
+ユキフキ,マサヒサ
+ハギモト,イワオ
+ハシモト,ヒデオ
+キタヤマ,ヨシテル
+フジモリ,ケンジ
+オクノ,オサム
+ヤマダ,ミツオ
+タゴ,タカシ
+アサイ,ヨシヒロ
+モリノ,ヒロシ
+ミナイ,ケイコ
+モリサワ,トヨコ
+ナリサワ,フミコ
+モリモト,マサル
+コバヤシ,ヨシノリ
+シマダ,ヒデキ
+スズキ,ミサコ
+フクダ,ケイ
+アライ,アキノブ
+タニヤマ,シュウイチ
+オカモト,マツオ
+ダイモン,ミノル
+ハヤシ,ヨシナオ
+イシダ,フクオ
+ヒロサワ,ヨシミチ
+ヨシオカ,マサズミ
+マツモト,シンイチ
+ナカジマ,サカエ
+キタ,サナエ
+ニシムラ,シゲカズ
+ハットリ,ヒデオ
+ヤマモト,カズオ
+イトウ,アキラ
+キタムラ,マスミ
+タナカ,トミオ
+イオキ,トミヤス
+カマタ,コウジ
+シミズ,ヒロシ
+マスオカ,ヒデオ
+サワダ,ショウコ
+ナカイシ,タケユキ
+ワタナベ,マサヒロ
+ヨシザワ,アキオ
+ササオカ,ノリアキ
+ヤマグチ,トシオ
+イマフク,タダシ
+カミヤ,トミエ
+ワサ,ヒデオ
+キクチ,アキヒコ
+ウカイ,ミキオ
+イワマ,セイイチ
+ツジ,ブンジ
+タケダ,サダツグ
+セトガワ,シゲトシ
+コシムラ,マサシ
+ワタナベ,ジュンイチ
+ウサミ,ミツノブ
+オカダ,トシヒコ
+フジワラ,ショウジ
+カトウ,ヤスユキ
+イシハラ,マサル
+ヒナタ,キョウヘイ
+ウエスギ,シゲヒロ
+シバタ,ノブカズ
+オクダ,マサル
+スナヤマ,ヨシオ
+イマイ,アキヒコ
+ナカムラ,ノブオ
+ナカモリ,コウジ
+フカサワ,ムネヒサ
+ミズタ,シンイチ
+オノ,カズシ
+サイトウ,ヒロシ
+シュドウ,ミノル
+フクイ,タツヒコ
+ノダ,カナエ
+オオノ,ハルキ
+コガミ,ヨシマサ
+ミキ,マサユキ
+イケダ,フミオ
+フジモリ,トシヒコ
+タカダ,カズオ
+イケダ,ノブゾウ
+イトウ,ノブタカ
+ワタナベ,カズヒロ
+サワダ,マサフミ
+マエジマ,マコト
+イナムラ,ススム
+ナカムラ,ヒロシ
+ナカジマ,シノブ
+イワマ,ヨシユキ
+ワカツキ,ヒデキ
+ハセガワ,ヨシロウ
+イノウエ,タカシ
+カサハラ,コウジ
+ニシヤマ,マサヒロ
+スドウ,ジュンイチ
+オカベ,トシヒロ
+フクバ,ケンジ
+マツナガ,ヤスオ
+サカイ,ヒロヒコ
+フジタ,ユキオ
+ナカヤマ,タカヤス
+ヨネダ,ケンゾウ
+クマタ,コウイチ
+コヤマ,ヒロユキ
+ヨネヤマ,タケシ
+フジカワ,ケンジ
+ハリガヤ,ヒロアキ
+ハセガワ,カズヒト
+ヨシダ,タダシ
+クスノキ,ヨシフミ
+タカハシ,サチコ
+ナガタ,シンジ
+ソノクラ,ヒロシ
+マスモト,ヨシオ
+オギハラ,ヒロシ
+ヨシダ,マナブ
+タナカ,マサヒコ
+エダ,セイイチ
+ナカ,タモツ
+イイズカ,ノボル
+テラニシ,マサノブ
+フクイ,セイジ
+デムラ,カズヒコ
+サエキ,シゲハル
+ウチダ,ヒデノリ
+シイナ,ノブオ
+フルヤ,ヨシハル
+ナガクボ,オサム
+テラウチ,ヒデアキ
+オオタカ,マサアキ
+フジヨシ,トオル
+サイトウ,マサオ
+クロサワ,フサエ
+イシカワ,ケンソウ
+ヨシノ,タカシ
+コミヤ,カズヨシ
+ヤマガタ,トシオ
+ツヤ,カオル
+ニシノ,ノリユキ
+ウチダ,ヒサオ
+ワタナベ,カズミチ
+モリタ,ノボル
+コシダ,コウゾウ
+ヒロセ,リョウヘイ
+ヨシムラ,カツトシ
+ミウラ,ヨシカズ
+コイズミ,ヒデノブ
+テラオ,ミツヒロ
+セガワ,ミチオ
+カイズカ,アキラ
+フクマス,スズヨ
+イトウズ,ジ
+セキガミ,ヒロシ
+フジ,イズミ
+ヨシムラ,キヨジ
+フルモト,ヨシユキ
+タキタ,マナブ
+オカダ,ヒロヒサ
+タカハシ,アキラ
+タニフジ,マサアキ
+イマオカ,カズヒロ
+ワタナベ,ケンジ
+ヤマモト,カオル
+ヨダ,ヤスオ
+フカヤマ,ヒロシ
+ヤマグチ,ヒサオ
+サノ,キミ
+タカハシ,ユリ
+マツモト,キヨシ
+ヤノ,ヒサシ
+アキバ,カズヨシ
+ミドリカワ,ヒロミツ
+タカシ,ミヨコ
+フルカワ,ミノル
+ヒキタ,エイジ
+オザキ,ヨシアキ
+アオキ,シゲオミ
+サエグサ,マサヒロ
+フジモト,ヒロシ
+コニシ,ユウジ
+オオニシ,シュンスケ
+ヒグチ,フジキ
+クボタ,ジュンイチ
+ヤマグチ,シロウ
+フルカワ,マサト
+ナリタ,イチロウ
+タナカ,フサイチ
+ハタケヤマ,テツオ
+ミヤモト,ミサオ
+ノザキ,ヤスハル
+ハセガワ,チョウシロウ
+シラカワ,ヨシヒコ
+アイダ,コウヘイ
+ヒロカワ,ヒロシ
+リュウカワ,ツヨム
+ヤマグチ,マスミ
+クリサキ,ヒデオ
+モリモト,ヨシミチ
+クボタ,マサアキ
+クマサコ,モリシゲ
+アダチ,ケンタ
+コンノ,ヒロアキ
+ヤマモト,エツコ
+イワイ,リョウタ
+オオハラ,ヒデオ
+イシハラ,トモノリ
+アオキ,タケシ
+モリ,ヨリコ
+ロッポンギ,マサアキ
+カトウ,コウイチ
+サトウ,ヤスオ
+マエゾノ,エイジロウ
+フジモト,ヒデノブ
+タニムラ,ヒロシ
+ナカニシ,ユタカ
+タカハシ,シンジ
+ナカイ,カズミ
+タカハシ,タケフミ
+シモ,ユウイチロ
+シバタ,イサム
+フルミチ,ヨシオ
+タケダ,アキラ
+フジタ,ヒロシ
+カギヤマ,テツヤ
+ワチ,マサノリ
+フジタ,ヒトシ
+コンド,シゲノリ
+マツモト,タカシ
+フクイ,ヒデユキ
+スガワラ,コウジョウ
+フカヤマ,アキラ
+イマイ,マサタカ
+サトウ,クニヒコ
+カナザワ,カズオ
+フチザキ,オサム
+ツカダ,ショウイチ
+イシザキ,タカユキ
+トクラ,ミキオ
+トノサキ,モトヨシ
+タカキ,ヒデオ
+フジタ,ヒロユキ
+ナガセ,レイコ
+タナカ,ヒロユキ
+タツミ,ヨシアキ
+ヤマモト,ユウイチ
+フクタ,タカナオ
+クワハラ,ヨシユキ
+フジタ,エイゾウ
+イナクマ,トシコ
+ミサオ,コウゾウ
+ナカシタ,マコト
+オクヤマ,ユウジ
+ナガエ,カズヒロ
+ナガイ,ショウゴ
+ヤマザキ,マサル
+シライシ,ショウイチ
+ウエダ,シゲル
+オジマ,ヒロアキ
+ヒロセ,マサノブ
+ヒラノ,マサル
+フルタ,タカオ
+コヌマ,カオル
+タカヤマ,トモハル
+アサシタ,マサフミ
+ヨツハシ,ヒロシ
+ツチヤ,タカミ
+オオニシ,イサオ
+ヤマグチ,ショウジ
+シズノ,イサム
+ハシベ,リョウイチ
+ホリイ,ミヨシ
+ナガオカ,ノリコ
+クリタ,ショウヘイ
+キバ,サナエ
+イダ,マチコ
+フクトミ,カズミ
+コバヤシ,ノボル
+イリ,ケンイチ
+サタ,マスグ
+マルヤマ,ヒロフミ
+アオヤマ,シゲル
+シンドウ,ヤスオ
+アイカワ,キョウジ
+サカノウエ,ケンイチ
+フジマキ,タダアキ
+カワハラ,マコト
+ムラタ,ヒデユキ
+ヨシダ,ユウイチ
+イタクラ,テツヤ
+ジゾバラ,ヨウ
+タナカ,トシオ
+カジワラ,シュウイチ
+タナカ,オサム
+ハスイケ,シュウジ
+トウマ,ユミコ
+カワキタ,アキラ
+マツモト,ヤスヒコ
+ハセガワ,ミツオ
+フジイ,トオル
+ノムラ,ミチタカ
+ヨウコタ,ヒデオ
+カナザワ,コウゾウ
+マスヤマ,シンイチ
+カノウ,ヒロシ
+フナヤマ,エツオ
+ヤマシタ,キチヒコ
+サトウ,マサカズ
+カメモト,ヨシフミ
+イトウ,キヨシ
+オクムラ,シゲオ
+フジイ,テルオ
+キハラ,タカシ
+ノムラ,リサク
+アクタガワ,ツトム
+イシダ,クニオ
+ウメハラ,シゲル
+オオギ,ナオユキ
+コンド,ハルオ
+タケダ,ケイコ
+マツイ,フミエイ
+カミオカ,マサル
+カモシタ,ヒロミ
+ヤナギサワ,タケヒロ
+タケウチ,マモル
+モンマ,ミノル
+イイダ,カナエ
+ハセガワ,トシジ
+ナガホリ,ヒロシ
+モリオカ,タダノリ
+ニシヤマ,アキオ
+ヤマモト,ヤスオ
+イシダ,トシオ
+フルド,マサオ
+カンダ,マサアキ
+イシダ,シゲル
+サイトウ,タカヒロ
+キムラ,ヒトシ
+イワミ,ヤスノブ
+モリ,シュウイチ
+タカヤマ,ショウゾウ
+ハヤシグチ,アキヒコ
+サイトウ,ヤスオ
+シバタキ,クニアキ
+オギハラ,ヨシハル
+カトウ,イサミ
+フクト,ナオヤ
+オダ,ヒデアキ
+サトウ,マサヒロ
+ナカムラ,ユタカ
+ハマダ,タカヒロ
+オガサワラ,テツヤ
+ムラキ,カズヒコ
+オオハシ,アキヒト
+タカノ,タカシ
+ナカザワ,カズトシ
+ミヤジ,アキヒロ
+スエナガ,ヤスオ
+タタキ,アキラ
+ヨシダ,イワオ
+アオキ,ヒデシ
+スギムラ,カオル
+イトウ,マサトシ
+タカハシ,シンイチ
+スズキ,イサム
+カタヤマ,トシヒコ
+サイトウ,マサシ
+タジマ,ヒロシ
+アベ,ヨウイチロウ
+ナカジマ,シゲキ
+ヤマグチ,マコト
+ワキザカ,マサヒコ
+サコ,サダト
+オオツカ,トモヒロ
+ツカモト,ススム
+イノウエ,フミオ
+ナガオ,トオル
+ウラバ,マサオ
+コジマ,ヤスヒロ
+タケダ,ユウジ
+アオノ,ジンイチ
+イズカワ,ノブオ
+クドウ,カズアキ
+ナカムラ,トシユキ
+マツオ,マサフミ
+イナガキ,シンイチ
+ニシモト,ショウイチ
+イノウエ,ヒトシ
+オノデラ,テツヤ
+イシザカ,トシヒコ
+ハギワラ,ケンゾウ
+フルタ,マサル
+ウエジマ,トミオ
+ヌマタ,シュウイチ
+エンド,マサヒロ
+カガヤマ,シンヤ
+ユリモト,ヒトシ
+フチ,タダオ
+フジオキ,ヒロノブ
+サイトウ,マサトシ
+マツモト,ミツアキ
+ヒロセ,ヨシカツ
+ババ,ジュンイチロ
+コバヤシ,ヒロユキ
+スズキ,マサミ
+ナカヤマ,カズオ
+キシ,ヒロシ
+アサノ,マサカズ
+エンド,アキオ
+イシバシ,ダイゴ
+カイダ,ミツオ
+イケジマ,ヒデアキ
+ハラダ,トシオ
+ハマノ,コノム
+カワイ,ミチル
+ワダ,トシマサ
+サトウ,ヒロシ
+タナカ,セイジ
+アクツ,ヨシノリ
+イトウ,キヨミ
+アンドウ,イワジ
+アイザワ,フトシ
+クボタ,キヨシ
+フカウミ,サトシ
+シミズ,ヒトシ
+タカハシ,サトシ
+ナミキ,テツロウ
+ノザワ,ヤスシ
+コイタバシ,キヨヒロ
+タテイシ,ヒロミ
+カワカミ,カズオ
+コバヤシ,カズノリ
+オノズカ,ヒデオ
+タグチ,ミツグ
+タカハシ,マサアキ
+サトウ,ヤスヒロ
+クワハラ,シロウ
+セト,サトシ
+ゴケ,ヒデキ
+ヨシムラ,キヨシ
+タカヤマ,ノブユキ
+ササキ,ユキオ
+カノウ,シゲキ
+タカハシ,シゲハル
+ナガオカ,トモユキ
+スズキ,ヒデキ
+ヤマグチ,アキラ
+モリ,サトル
+スズキ,イツオ
+ウエムラ,マサトシ
+ヤブハラ,ミツヨシ
+シライシ,カズキ
+キクタ,マサノブ
+ナカイ,ミツノリ
+クラモト,ユタカ
+スミヨシ,ヒデオ
+タカギ,ヒロヒサ
+ショウジ,ノリオ
+オサダ,マサユキ
+アサノ,サトシ
+イワサ,キヨシ
+ババ,ユタカ
+ヒロタ,サトル
+フジモト,ミサコ
+サノ,マサル
+モトキ,ヤスユキ
+イトウ,マサノリ
+ウケガワ,フミオ
+ウメバヤシ,イサオ
+イナトミ,カズヨシ
+タカヤナギ,マサアキ
+ハラ,イサオ
+ナカハラ,ブンロウ
+サイタケ,セイジ
+カシヤマ,ヒロシ
+サカイ,トモユキ
+イトウ,ノリカツ
+ナカムラ,ヨシノブ
+オオノギ,タケシ
+イカミ,ユタカ
+タカハシ,シンイチ
+シイナ,トミオ
+タマノイ,ショウイチ
+クボ,ヒデアキ
+キムラ,タカシ
+ホッタ,ヒトシ
+ホカリ,タカユキ
+サトウ,アキオ
+ホシノ,シュウイチ
+カブラギ,トシヒロ
+オサダ,トシフミ
+スエヒロ,タカオ
+ムラカワ,ヨシミ
+イワサキ,ケンジ
+ヤマムラ,シンジ
+モリタ,タツオ
+イケダ,ヨシノリ
+ヤウチ,ヒロシ
+ヤマシタ,カズヒデ
+ワタナベ,ヒロシ
+アナン,エツジ
+ニシノ,タツロウ
+コシミズ,ヤスオ
+タカハシ,カズオ
+エガワ,トシオ
+ヤマザキ,タツヒロ
+イマゼキ,ヨシフユ
+スズキ,ヒデキ
+ニシハラ,ユウイチ
+オカベ,イサム
+サカイ,マサヒロ
+タダ,トシオ
+スエヨシ,ミキオ
+ハヤシ,イタル
+タカハシ,ケンジ
+コアシ,ハジメ
+モリカワ,エイシ
+カトウ,ヤスクニ
+マエバ,マサヒロ
+ヤノ,タツオ
+イトウ,ヨシハル
+ナカイ,ヒロシ
+オダギリ,カズオ
+エンド,テツオ
+タケイ,ヤスユキ
+ナカタニ,ミチノリ
+イワサキ,トモヒロ
+カラカサ,アキヒロ
+アサノ,ケンイチ
+イワブチ,マサル
+ハンダ,トオル
+テラオ,ヨシユキ
+タケイ,ヨシモト
+ハシモト,ヨシミ
+ミヤサカ,ツトム
+テラダ,イチロウ
+サカタ,ヤスユキ
+ナガヤ,カツミ
+ハシモト,ケンジ
+オオクラ,ツトム
+ナカサキ,ミツグ
+キリハラ,トシユキ
+アライ,シュンジ
+イワノ,ヒロユキ
+ハットリ,ヒロノリ
+スズキ,トオル
+ニシハラ,ヒロシ
+ササキ,シズオ
+ハナフサ,ツトム
+ノドノ,タツユキ
+カワバタ,クニオ
+シミズ,ヨシナオ
+ナガシマ,ツグヒコ
+モリ,カズオ
+シミズ,シゲアキ
+ヒサヤス,ケイゾウ
+カタウラ,シゲユキ
+タケムラ,アキミツ
+イマニシ,マサト
+オカダ,アキヒコ
+ナカエ,オサム
+シロノ,ジュンイチ
+ヨコヤマ,ノブオ
+オカザワ,マサヒコ
+カミ,ノリトシ
+クマベ,マサオ
+シミズ,タツロウ
+ヤナギサワ,ショウイチ
+マキノ,ユウジ
+サワ,ワタル
+ウシロダ,クニオ
+マチダ,ツカサ
+コバヤシ,タカオ
+シゲムラ,トシハル
+ヒグチ,タカシ
+イイヌマ,マサユキ
+イズミ,ミノル
+ハヤシ,ヒロトシ
+ヤギ,チハル
+オオカワラ,キヨタケ
+フクオジ,オサム
+ウガジン,マサミ
+タナベ,シン
+ゴシマ,マサヒデ
+アンドウ,ヒロシ
+オダマ,ユキオ
+オカザキ,イワオ
+イシカワ,フミユキ
+ムラヤマ,マサコ
+ハヤサカ,ケイジ
+ナカジマ,タク
+タケモト,ヨシミ
+キタジマ,ジュンコ
+ミカミ,ナミ
+ワラシナ,ジュンヤ
+キムラ,シン
+オザワ,ヨシカズ
+ヤマムラ,ヒトシ
+ヨシダ,シゲキ
+タチバナ,タクロウ
+マツモト,ノリノスケ
+ミシマ,ヒデアキ
+セキ,ヒロシ
+タカハシ,ヤスヒサ
+オオイケ,マサシ
+フジモト,シュウジ
+ヨシムラ,ノブヒコ
+コバヤシ,メイジ
+オオガミ,ヨシユキ
+カイ,ショウタロウ
+カエツ,マサハル
+モロイ,タカヒロ
+ミズノ,イクオ
+オオツカ,アキヒコ
+オオタ,カオル
+セキネ,リュウジ
+ミヤグチ,カズタカ
+ヨネダ,ナホコ
+ホリウチ,マサコ
+エグチ,カツミ
+ウシロマツ,カズミ
+イイダ,ユキヒロ
+ヨシダ,ヨシミ
+ナカセ,アキオ
+スズキ,ユウコ
+オイカワ,エイコ
+カワベ,サツコ
+タニザワ,タカオ
+カネコ,ハルヨ
+フジオカ,ケイコ
+ムラオカ,ツヨシ
+ウヌマ,ケイコ
+ミヤケ,フキコ
+ナカムラ,チアキ
+オオワ,マサハル
+ネモト,イチロウ
+ニシムラ,トモヒサ
+タツミ,イワオ
+サトウ,アキオ
+スノハラ,トシヒコ
+アスマ,キヨカズ
+タカバ,ノブアキ
+ヨシムラ,サトシ
+アベ,ナオト
+キクチ,ケイジ
+ナカムラ,カズマサ
+ハムラ,ツトム
+スズキ,ノブヒト
+カワムラ,トシヤ
+ヒビノ,ヒサエ
+キタダ,マサヒロ
+サトウ,ツネオ
+カトウ,カズオ
+イトウ,ユウジ
+フクトミ,マサル
+ムロズミ,マサヒロ
+ヤマナカ,ジュンイチ
+オカダ,ケンイチ
+トウゴウ,タケシ
+ナリタ,タカシ
+イケザキ,タケシ
+カワバタ,シロウ
+マツオカ,ノブオ
+ナカダ,ヒロシ
+サトウ,シンヤ
+タケザワ,ヨシヒロ
+ヤナガワ,ヒロシ
+ヤマサキ,ノリユキ
+シガキ,ノリアキ
+ユミ,タケシ
+オザキ,ツトム
+ナガシマ,タイスケ
+ヤブウチ,ヒサオ
+ホソヤ,ヒサシ
+ニシザワ,ソウジ
+ハヤミ,ヨシオ
+ハセガワ,ナオミ
+カワサキ,カツヒコ
+トヨイズミ,タカユキ
+オクムラ,マサト
+ヤマダ,ノブヒロ
+ニワ,エイヒコ
+ニシザキ,ヒロシ
+スギモト,シゲル
+オオサワ,トモナオ
+トダ,トシアキ
+ナカノ,ヨシカツ
+ミウラ,ヒサシ
+ヤマザキ,ナオユキ
+サカモト,ヒラク
+ヤマダ,ミチコ
+イノウエ,カヨコ
+ヤスイ,マサヨ
+マツダ,ユミ
+カタオカ,アケミ
+スズキ,ケイコ
+ハヤシ,ケイコ
+ハママツ,ヤスコ
+ハマノ,エリ
+ミズタニ,ミヨコ
+スミタ,モトチカ
+ハヤシ,マキコ
+トクナガ,ユミコ
+カトウ,ノブコ
+マツウラ,ミエコ
+ヒャクナ,ヒデコ
+アンザイ,ヨウコ
+フカマチ,スミオ
+ミサキ,タケシ
+モチズキ,トヨヒコ
+アオヤギ,アキラ
+タカハシ,ユキヒデ
+キセ,アキラ
+ウエモリ,シゲル
+アズマ,ミエコ
+オダクラ,ヒロミチ
+タナカ,ヒサオ
+トイタニ,カツロウ
+ヤマザキ,ケンイチ
+ハシモト,タカシ
+マツミヤ,マサヒコ
+フシミ,チカト
+キョウヤマ,テルオ
+ヨシダ,ケイコ
+ウルシド,アツコ
+セオ,ミエコ
+ミナカワ,ツキコ
+フジノ,カズユキ
+ヒロタ,タカシ
+オオタ,ヨシミ
+オオガ,マサノリ
+ナガハマ,タツオ
+ジンノ,ヤスキ
+イチカワ,ハジメ
+ハヤシ,タダシ
+ハタヤ,トシユキ
+ホリコシ,ノブヒコ
+カニ,アキオ
+ホンダ,モトヒサ
+ツチヤ,トミオ
+タマテ,ミツル
+ユカワ,エイジ
+サカイ,ユウジ
+ミヤジ,ユウイチ
+タムラ,ヒトシ
+カワグチ,ヒデマル
+サノ,マサカズ
+ナカムラ,ユウイチ
+コバヤシ,ユキオ
+イダ,イチロウ
+セキモト,ヨシヒロ
+カワマタ,カズオ
+クボ,ヒロシ
+タカノ,ヤスヒロ
+ワタナベ,ヤヨイ
+イカルギ,ミノル
+サトウ,タダシ
+ヒダカ,ヨシヒコ
+ヨシイ,コウゾウ
+シマムラ,エイロ
+オビ,トシオ
+ナカジマ,トクノブ
+ホシノ,ノボル
+カワモト,ジュンジ
+ニシダ,ヤスヒデ
+シミズ,マサアキ
+タムラ,ジュン
+トヨシマ,ヨシミツ
+エンド,タカオ
+オガワ,ナツアキ
+キタハラ,フミオ
+オグニ,ケンジ
+オブチ,ケイゾウ
+ミヨシ,カズオ
+イケノ,シンイチ
+ウエマツ,カツアキ
+フクザト,リュウイチ
+アオキ,タカシ
+サメジマ,サチオ
+キドマ,ケンジ
+コダイラ,キクオ
+ヒグチ,タツオ
+マエシロ,カズヒロ
+タナカ,セイジ
+ナカガワ,ヨウスケ
+イノウエ,ヤスヒデ
+トリウ,マサアキ
+マルヤマ,ナオキ
+マツウラ,ケンジ
+タメチカ,カオル
+ササキ,キョウコ
+オオタキ,シンスケ
+オガワ,マコト
+マツミ,マスエ
+アリマツ,シゲオ
+コラク,ユウゾウ
+ミヤシタ,ミノル
+オズチ,ミツオ
+サカキバラ,タカコ
+サトウ,アキラ
+ヒロセ,トモコ
+ツチダ,トシアキ
+ハシラ,チヨ
+フロモト,ミノル
+コサカ,アキヒロ
+タケイチ,ヨウイチ
+テラダ,ヨシカズ
+コイデ,ヒデキ
+サイトウ,ショウイチ
+ミヤナガ,ノリヒコ
+ニシムラ,シンヤ
+タナカ,ユウゾウ
+,ユミコ
+ユクヒロ,レイコ
+ヨシワラ,ジュン
+アオキ,ルミコ
+タテイシ,ユリコ
+タケダ,トミコ
+ヤスダ,フジコ
+アオキ,ヒデユキ
+ヨシダ,ナオコ
+アダチ,アキコ
+ノグチ,ヨシノブ
+ワタナベ,シゲユキ
+タケトミ,コウイチ
+クリワキ,マサキ
+キタズメ,モトヒコ
+オサダ,トシオ
+アシガイ,ヨシタカ
+サカシタ,キヨシ
+ツチダ,シュンイチ
+オカダ,ミチオ
+タナカ,ヒデチカ
+オオタゴシ,コウゾウ
+クロサカ,エイジ
+スザキ,アツシ
+カネミツ,ヒロユキ
+マト,カズユキ
+トヨフク,マサオ
+アライ,ヒロカズ
+フジカワ,ノブアキ
+ヨコオ,タカヨシ
+アマノ,ハルオ
+オオノ,タカフミ
+スズキ,アキヨシ
+カトウ,マサユキ
+サイトウ,ミツオ
+オウ,カツミ
+ミヤザキ,イサオ
+キヤ,フミタマ
+フジタ,カズヒコ
+ムカイ,ヨウイチ
+マツモト,カオル
+カワイ,ユキオ
+マツモト,キヨタカ
+タケウチ,リョウジ
+コジマ,ヒデオ
+ハセガワ,タツオ
+コガ,ヤスオ
+ヤマダ,コウイチ
+オオタ,ミノル
+ヤマモト,シンスケ
+サクラモト,フジト
+ヤナギサワ,クニオ
+フクイ,コウジ
+カトウ,カズミ
+イワタ,ヤスユキ
+フジモト,タダフサ
+キノシタ,アキヒコ
+ヤマダ,ジロウ
+クラマエ,コウジ
+クラタ,タカシ
+ヨコイ,フミトシ
+コバヤシ,ヒデヤ
+カトウ,モリヨシ
+マスイ,ヒトシ
+ウラタ,テルアキ
+タカハシ,マサヒロ
+ウシゴメ,マサタカ
+ハライ,シンジ
+ウダガワ,トシロウ
+タカギ,カズユキ
+ミヤザキ,サトミ
+ヤマムラ,マサヒロ
+ヤマギシ,リュウイチ
+コマツ,ヨシタカ
+ハマグチ,ユカ
+モリ,ヒロカズ
+ヤマダ,ヤスノリ
+カガワ,ミチオ
+キクチ,フミキ
+クジ,ヤスシ
+イトウ,ヒサアキ
+カワグチ,ヨシカズ
+アラキ,シンスケ
+オカベ,ヒロミ
+コボリ,シンイチ
+オチ,オサム
+マルオ,ハジメ
+サトウ,シュンスケ
+タナカ,ヒデノリ
+マツヤマ,トシオ
+オオツカ,クニオ
+ヤマモト,ケンジ
+フジオ,ミツエ
+ノムラ,ヒサタカ
+ヒロセ,ノリヨシ
+アンザイ,シゲノリ
+オオツボ,ミチロ
+サイトウ,リュウジ
+イトウ,サトシ
+ワラサワ,キクオ
+アラカワ,ヤスナリ
+ゴミ,ジュン
+エンド,サチオ
+ヨシダ,マサハル
+ウチダ,ヒデオ
+アサイネ,テツヤ
+オシマ,シゲオ
+タナカ,タツオ
+オオコ,マサロウ
+イズツ,ナオル
+ハヤシ,マサユキ
+フジキ,トオル
+シオカイ,カズヒコ
+ナガフチ,キヨツグ
+マツモト,タイイチ
+カトウ,ヒロシ
+ワタナベ,ケイジ
+ハマグチ,リュウイチ
+カネコ,ユタカ
+サトウ,トシオ
+オオイ,マサキ
+ハヤシ,セイジ
+キミツカ,マサオ
+フクダ,マモル
+ナカムラ,タダシ
+ヤバシ,ケンジ
+コバヤシ,タカユキ
+トクダ,トモカズ
+タカハシ,カツヒロ
+イトウ,ミツオ
+ノグチ,ヨウイチロウ
+カワナ,ノリオ
+ナカノ,ツヤコ
+ヤマダ,マサコ
+ヒラマツ,ソウタロウ
+アライ,トシユキ
+ヨシノ,カオリ
+ハマダ,カズオ
+オオタ,トシヒコ
+シバタ,マスアキ
+ワカヤマ,アキヒロ
+ホシ,キヨシ
+ミワ,マサオ
+タナカ,ユウジ
+カナヤ,ノリヒコ
+タケナカ,ジン
+サトウ,トシユキ
+ミズシマ,トヨウイチ
+テラダ,シゲル
+モリヤ,タダユキ
+スギヤマ,モトハル
+ウミ,ハルオ
+キグチ,ヨウイチロウ
+ウルワシ,タケシ
+ヒラマツ,ミチオキ
+イズハ,ハルオ
+イトウ,マコト
+サトウ,マスオ
+シゲノブ,ケンジ
+ヨシモト,カズオ
+シバタ,ツヨシ
+フナコシ,イチゾウ
+スナダ,ヤスジロウ
+,ヤスオ
+キクマ,ナオヒコ
+スト,サトシ
+ニシザワ,ヒデオ
+コバヤシ,ミツコ
+カワゴエ,マサヒコ
+イジマ,フミオ
+ニシオ,ヒロシ
+ニシヤマ,ノブユキ
+サイトウ,ヨシアキ
+カドワキ,ヒロミ
+ヒロセ,タカオ
+タグチ,タカヨシ
+タカダ,トシハル
+ワタナベ,ケンジ
+カトウ,シゲアキ
+ナカハラ,クニオ
+イシクボ,リュウイチ
+ヤマダ,ヨシオ
+ワカマツ,コウジ
+カワシマ,ヒロユキ
+カタモト,ケンジ
+タカヤマ,キミヒコ
+ツチダ,タツシ
+タチバナ,ヒデオ
+コバヤシ,アキラ
+ツダ,トシユキ
+モリカワ,ユキオ
+オクノ,ヨシオ
+イマイ,マモル
+ムラオ,タダシ
+シモムラ,ジロウ
+エンド,トシノブ
+ホシクマ,マサハル
+カワセ,シンサク
+マチダ,ムネシ
+コバヤシ,タツオ
+ハダ,ヒロシ
+ツクダ,マサハル
+ニシカワ,ショウ
+ホンダ,ヒロミ
+ワシオカ,トシヒロ
+ムロイ,ヨウ
+ヤスダ,マサシ
+ヨシダ,ヒロユキ
+ホリ,アツコ
+コウダ,コウエイ
+カマダ,エイジ
+ウエムラ,ヒロミ
+マツバラ,カズヤ
+ミナトグチ,シゲル
+クガテン,ヤスシ
+イワセ,ノブヒロ
+ハヤシ,ミツヒロ
+イクナミ,シンジ
+イトウ,タカシ
+コヤマ,ヒロミチ
+オトマル,ヨシヒト
+ナガイ,モトハル
+イトウ,マコト
+イマイ,タツル
+マスダ,タカヒロ
+カワベ,リョウタ
+サトウ,ケイジ
+サコ,マサハル
+ムカイ,ジュンイチ
+オシマ,クスタカ
+ツチヤ,イズミ
+ハヤシグチ,トシアキ
+サトウ,セイイチ
+ムラサト,ユキヒコ
+ハルヤマ,マサオ
+シゲモリ,シュンイチ
+フナキ,ヒサオ
+ワダ,イクト
+ツボカ,シンスケ
+トダ,ジュンイチロ
+ヤマムラ,タダアキ
+イシグロ,シンイチ
+フナハシ,ユキ
+スズキ,ヨシオ
+ヨシダ,キミヒロ
+ワタナベ,ツギオ
+ナカニシ,タカミツ
+ヤマモト,ジュンジ
+イシカワ,マサユキ
+タケウチ,コウイチ
+オクノ,サトシ
+ダテ,ジュン
+タベ,マサトシ
+ヤギ,リョウイチ
+ヨシダ,カズオ
+フルタ,タカユキ
+カワグチ,リュウタロウ
+ハスコ,ヨシノリ
+ナガミネ,シュンジ
+タケシタ,サトシ
+アカオ,カズユキ
+ワキモト,タカシ
+タサカ,ケンジ
+ナカシマ,ヤスヨシ
+タケナカ,ヒロアキ
+ヤマシタ,ナオヒコ
+クボエ,テルオ
+オグシ,ショウイチ
+アサカ,シゲトシ
+エグチ,ヒロヨシ
+オオサキ,マコト
+オクダ,カズオ
+オクムラ,カズロ
+カナマル,ヨシヒコ
+キノシタ,オサム
+ササキ,キヨヒデ
+タカノ,タツオ
+ハシダ,シゲル
+ホシ,ユウスケ
+ミズノ,カツヒコ
+ミツハシ,タツヤ
+モトハシ,マサシ
+ヤマダ,テツジ
+ナガノ,マサユキ
+イシイ,ユキヒロ
+カメダ,カオル
+キハタ,タケヒデ
+コバヤシ,オサム
+シラフネ,タカヨシ
+ナツハラ,ヒロアキ
+ニシハラ,ヤスヒサ
+ハシバ,タクオ
+ヒシヌマ,ヒロフミ
+ヒビヤ,シンタロウ
+ミヤ,ヒデハル
+ムラカミ,フミオ
+ムラタ,ハジメ
+ワタナベ,ショウイチ
+オオニシ,ヒロアキ
+タケシタ,ヒロシ
+ツバキモト,ヤスシ
+ハマオカ,タケオ
+ミズノ,トヨタカ
+アベ,ヒロミ
+アライシ,マサミ
+サトウ,マサアキ
+サワノ,セイザブロウ
+シモジョウ,タダミ
+タカダ,カズヒデ
+ナガタ,ヤスヒロ
+ニシハタ,マサフミ
+ハヤシ,ソウイチ
+ホソカワ,アキラ
+アオキ,ミキトシ
+ヨシダ,ヒロトシ
+ワタナベ,タカオ
+イワサワ,タカハル
+ノセ,スエオ
+ヒラシタ,ヒロヤス
+ヨシザワ,ヒデオ
+ムトウ,ケイゾウ
+ミワウラ,ヒデアキ
+キクチ,ハジメ
+エゾエ,ヒロミ
+イシカワ,タケシ
+イチカワ,タカシ
+ハラダ,ヨシタカ
+ムラタ,ヨシト
+イトウ,ミキオ
+ホシナ,ケイヤ
+トクダ,ノリオ
+タグリ,カズヨシ
+ササキ,トモユキ
+タマル,ハルオ
+ニシハシ,シゲオ
+ジツカワ,カズヒコ
+スズキ,サイチ
+オオニシ,キミコ
+ナガサキ,ユウコ
+イイダ,ヒデミ
+タカノ,マサヒロ
+ヒサノ,トシツグ
+イノウエ,ヒデキ
+イシクラ,マサユキ
+アキヤマ,コウジ
+イチカワ,センリ
+キガワ,コウイチ
+サイトウ,ヒロユキ
+ヨダ,ミキオ
+アラキ,ユウジ
+スギハラ,ヒデヒサ
+カワグチ,テイジ
+ミヤ,マサヒコ
+イケオ,ヒロユキ
+サクライ,フジオ
+コシノ,ヨウスケ
+キクカワ,カズオ
+ユアサ,タカシ
+スズキ,ユウジ
+マスダ,シンタロウ
+アライ,ヤスオ
+イケダ,トシオ
+キス,アキラ
+ウシヤマ,レイ
+カマタ,エツシ
+ウサミ,キヨシ
+ナカノ,タケシ
+カキカワ,ジュンイチ
+キジマ,ヒロユキ
+ムカイ,マサヨシ
+ナガヤマ,マサコ
+ハットリ,マサオ
+ミシマ,ツヨシ
+ゴトウ,クニトシ
+イトウ,ヒロユキ
+オガタ,カヨコ
+クサバ,ハルユキ
+テラエ,ヒサト
+ホンダ,ノリオ
+アクタガワ,ミノル
+ミヤコシ,ヤスエ
+フクシマ,ケイスケ
+シノズカ,トモコ
+オオタキ,ショウジ
+ナガマツ,セイイチロウ
+アライ,マサル
+マツダ,サチヨ
+フジタ,アツミ
+カミグチ,ヒロアキ
+カトウ,ヒトシ
+ヤマザキ,タケノリ
+ウメタニ,アツコ
+ナルセ,ジュンコ
+クボ,クニオ
+クラタ,ヒロユキ
+コンド,テルオ
+タケウチ,ミキヤ
+イノウエ,ノリオ
+タカダ,ヨシカズ
+アクツ,カツユキ
+トリイ,ヒロミ
+モリオカ,ユミコ
+カクタニ,マナブ
+タケイチ,チエコ
+タイ,ケイコ
+ツチヤ,マサフミ
+マスダ,マサタカ
+カンダ,ヒサオ
+ヤマウラ,ヤスヨシ
+キノシタ,シゲミツ
+ホサカ,クニオ
+マルオカ,ヒデユキ
+カマタ,ヒロシ
+ハタナカ,マサミ
+クロハ,ヨウコ
+トツカ,ヨウコ
+イシイ,フヨ
+モリタ,マチ
+ホンマ,シゲル
+アラカキ,ヨシトモ
+タケ,タケヒコ
+イズハラ,ナオカズ
+ヒサトミ,タロウ
+スズキ,ヨシヒロ
+ニシナカ,ヒサノリ
+ミズノ,コウゾウ
+モリムラ,アキラ
+タカハシ,トシカズ
+シゲトメ,ヨシアキ
+サトウ,ユウジ
+マエカワ,マサミ
+ヨシイ,トシノリ
+ホソヤ,ヒデヒコ
+サカモト,カズオ
+コイズミ,シゲミ
+ニシ,ヤスフミ
+カネコ,アキラ
+スミクラ,ショウヘイ
+ヨコオ,タカオ
+ササキ,カズオ
+ハヤシ,アキラ
+タナカ,キヨシ
+アキヤマ,トミオ
+サイス,ヨシカズ
+ノガミ,セイジ
+トヨシマ,シュウイチロウ
+シン,タカシ
+フキノ,モリヨシ
+イケダ,カズキチ
+オダワラ,リツ
+タカハシ,トシカツ
+ケイマ,ジュン
+シミズ,コウジ
+イマイズミ,トモジ
+モリタ,ユミコ
+モリ,ヤスミ
+マエカワ,ヤスカズ
+ヤナギダ,ススム
+ムラモト,ヒロシ
+スズキ,ヒロシ
+ホソエ,マサヒコ
+イシクラ,セイジ
+ヒロカワ,ユウジ
+カラシマ,タカシ
+マチダ,シンイチ
+モリヤマ,ヒサノリ
+タケムラ,テツゾウ
+ツカモト,アキフミ
+ヤマグチ,ヒロヒト
+ソメヤ,アキオ
+ナカゴメ,ヒデオ
+イワナガ,ケイスケ
+セキヤ,ケンジ
+テライ,カズヒロ
+タナカ,ヒデオ
+セキヤ,ジュンロウ
+サクライ,エミコ
+イソベ,マツタロウ
+マツオカ,タカヒコ
+イチ,マサノリ
+ヤマモト,シロウ
+デグチ,タカトシ
+ヒラマツ,ヨシオ
+ミズノ,イサム
+トミナガ,マサヒロ
+タカシマ,ヒトシ
+ノガミ,ヒロシ
+オオツ,ヒロフミ
+コバヤシ,ケンイチ
+テラダ,トシカズ
+サイトウ,タツヤ
+アサノ,タカヤ
+シモムラ,ノリトシ
+オオイシ,ノリヨシ
+タナカ,ツネオ
+マツモト,キヨシ
+ヒラマツ,シゲル
+タケウチ,ミノル
+シゲハラ,テルマサ
+オカモト,ハジメ
+ムラヤマ,モトコ
+コマツバラ,シズオ
+エバタ,ケンジ
+オオタ,ゴロウ
+テラオ,ヒロユキ
+オオサワ,マサル
+カワシマ,タツミ
+アライ,マサシ
+ハシズメ,アキラ
+ミズシマ,コウジ
+ヒラマツ,エツオ
+オクムラ,ヨシコ
+ミズナカ,コウシ
+ホリウチ,シュウイチ
+タキモト,トシオ
+ヤスバ,コウジ
+キタノ,モトノブ
+ニシダ,ユキオ
+イシカワ,トシミ
+オオバ,ヒサオ
+カシワギ,カズユキ
+サトウ,オサム
+マツダ,アキオ
+コムロ,ナオキ
+ムラタ,ヒデユキ
+ササガワ,カズオ
+サタケ,ハルトシ
+クワノ,ヒサオ
+ゴトウ,カツミ
+フジイ,シンイチ
+ミズコシ,ケンイチ
+フジマキ,カズヤ
+イデタ,ヒトシ
+ナカツカ,タカシ
+ウンノ,タケミ
+スズキ,カズヒロ
+ハマ,ヒロシ
+トミタ,タカオ
+タニツ,ユウゴ
+スズキ,マサミチ
+オクムラ,チヨジ
+フクシマ,カズヒコ
+オオハシ,ヒカル
+ヤマシタ,タカオ
+カワミ,セイイチ
+ハルタ,ケンイチロ
+ミヤモト,ヒロシ
+ツジタ,ユウコ
+イマムラ,マサオ
+サトウ,サブロウ
+ナカジマ,ユキコ
+シイノ,シゲオ
+ゴトウ,ミノル
+カトウ,モトハル
+ナガイ,チエコ
+ウチノ,アツシ
+エイジマ,オサム
+ヤマナカ,コウジ
+ナカムラ,ノブオ
+スズキ,ヤスユキ
+セムラ,リュウイチ
+ナカガワ,カツヒロ
+タヤ,タカシ
+ムラカミ,ヒロノリ
+イシカワ,コウイチ
+セキグチ,ショウイチロウ
+オオノ,ヨシユキ
+オイカワ,トシヤ
+イワイ,クニヤス
+アサヒ,ケンジ
+ゴトウ,カオル
+カネタケ,カナメ
+ウエマツ,トシノリ
+フクシマ,ヒロジ
+フクダ,タカユキ
+スズキ,キョウコ
+オグラ,ユキヒコ
+ヒラデ,ノブカズ
+オシゲ,タイチ
+マツモト,エリコ
+ササキ,エツオ
+ゴンダ,マサル
+マツオカ,セイジ
+ウメザワ,マサツグ
+ニシオ,カズナリ
+コジマ,ユウゾウ
+タニグチ,ヨシツグ
+オオギス,ヒロシ
+サダヒサ,コウイチ
+フジワラ,モリオ
+ハットリ,ナオユキ
+カマタ,トシオ
+トバ,マコト
+ヤマダ,タダヒロ
+ヤマモト,ミキオ
+タケウチ,タケシ
+アラキ,ヒデフミ
+ニシオ,セツコ
+モリウチ,サナエ
+イワタ,ヒデアキ
+ササキ,マサロウ
+マエガワ,ヤスツグ
+フクニシ,カズノブ
+ウエダ,トモヨ
+ヤマギシ,マコト
+オノ,ケンジ
+フジタ,フクキチ
+キタムラ,ヨシミツ
+ヨシハラ,ユリコ
+イワサワ,タクミ
+コマツ,タツヨシ
+タニムラ,ヒロアキ
+コサカ,ヒサタケ
+タシマ,マサユキ
+ニシオカ,カツユキ
+スズキ,トシオ
+ゴトウ,ヤスヒラ
+カワハラ,ジュンイチ
+タジマ,ショウジ
+カンノ,アキオ
+カタシマ,シンヤ
+ハシモト,ミスズ
+ナカダ,ヒロシ
+カサハラ,セイイチ
+テラモト,タカアキ
+ワカマツ,マナミ
+イトウ,トシツグ
+ワダ,ヒデミ
+タンジ,ヒロアキ
+オオツカ,メグミ
+ツジモト,ケイイチ
+セリザワ,ノブハル
+トノサキ,フミエ
+タカギ,ミチコ
+オフチ,カツナリ
+アマノ,ミチオ
+ナカムラ,アキラ
+タバタ,ユウジ
+トヨズミ,マサアキ
+シュクヤ,ヨシロウ
+タカノ,シンイチ
+ムラカミ,ヒトシ
+イシズカ,ノブヨシ
+イイズカ,トシヒコ
+シライ,アキラ
+フクハラ,スエハル
+イナガキ,テツオ
+ヒラシマ,ヒトシ
+ツジバヤシ,アツシ
+マツオ,マサミ
+ヤマモト,マナブ
+モリノ,タカオ
+タジマ,トシオ
+ノザキ,ジュン
+アダチ,ノブタカ
+タカヤ,タカシ
+オノ,マサオ
+マツモト,カツアキ
+ハシモト,カズヒデ
+カノ,ヤスシ
+タケダ,フミコ
+キリハラ,ケイコ
+タナカ,ヤスヒコ
+トリイ,アキノブ
+ナカシマ,マサオ
+セスミ,ジュン
+マエノソノ,カズナリ
+ゴトウ,シンジ
+ホリ,ユキヨシ
+タカイラ,キョウイチ
+タニダ,アキヒロ
+フルドイ,シュウイチロウ
+オオギヤ,マサナオ
+ナカジマ,ノブヨシ
+ホリカワ,カズヒロ
+スズキ,マコト
+アオキ,ノブユキ
+オクハタ,マサヒロ
+クワバラ,ユウスケ
+カンダ,ヒロミツ
+スギモト,リョウ
+ヤマモト,ヒデアキ
+カネコ,マサル
+ナリタ,モトユキ
+ニシオ,タケヒロ
+イカリ,ハルオ
+フルカワ,ケンイチ
+アライ,セイジ
+クズカミ,ヒロシ
+ゴトウ,シュウイチ
+ヤマハラ,マスミ
+ヤマダ,シゲル
+イジ,トシロウ
+クラモチ,ミキオ
+フジワラ,ヒデスギ
+タケダ,サトシ
+タカノセ,エツオ
+トモムラ,シゲフミ
+サトウ,ハジメ
+サカキバラ,マサユキ
+ミヤザキ,ユウジ
+ヨシダ,シュウイチ
+タナカ,ヨシヒコ
+ゴトウ,ミチオ
+ニシダ,ケイイチ
+ナカシマ,ミツヒロ
+キムラ,シゲユキ
+イノウエ,マサトシ
+オシマ,タケシ
+オオヤ,マモル
+ミヤモト,マサノリ
+ヤマシタ,オサム
+タナカ,マスミ
+モリ,アツシ
+ナルミ,オサム
+ゴトウ,ダイジロウ
+ヤマチカ,アキラ
+ササキ,マサヒト
+キシダ,ミチオ
+オオヤマ,ヨウスケ
+シイノ,カツヤ
+イズミサワ,ヨシトモ
+カミムラ,ダイチ
+サカイ,ケンイチ
+ゴトウ,カズオ
+カトウ,キイチロウ
+タカハシ,コウジ
+クノ,タツヒコ
+イワブチ,マサツグ
+ホンブ,マサフミ
+モリタ,ジュン
+セキヤ,コ
+ヌマタ,カズヤ
+ゴトウ,メイサイ
+マナベ,マサル
+イマキタ,ショウジ
+コダカ,ケンジ
+ヨシダ,タケヒサ
+サトウ,タケシ
+クスミ,カズユキ
+ハギワラ,トシカズ
+フルセ,テルヒコ
+ムラタ,ショウコ
+オクムラ,マサヒコ
+タニガミ,タイチ
+ナカムラ,シンジ
+コイズミ,マサヒコ
+スドウ,ヒロシ
+イデ,テツヤ
+シモノ,カズヒロ
+タカギ,ヨシアキ
+サカイ,アツシ
+イノウエ,カズオ
+フルタ,ミチノブ
+アサイ,キヨシ
+フカサワ,クニヒコ
+ゴカイチ,コウジ
+オオツカ,ヤスノリ
+サトウ,サトシ
+イノウエ,シゲル
+タケダ,マサユキ
+マスダ,ヨシヒコ
+ヤマモト,ノボル
+オオハラ,マナブ
+フナツ,カズヒコ
+コヤマ,ジュンゾウ
+ヤマザキ,トシヒロ
+タジリ,ミネハル
+サトウ,ツヨシ
+ナガシマ,ジロウ
+ツダ,タカシ
+ナガオ,トモミ
+オオスギ,ヒロユキ
+イトウ,トモナリ
+タマイ,ユタカ
+ミヤシタ,ヨウイチロウ
+ミシマ,ヨシヒロ
+ホリイ,ナオアキ
+ゴトウ,マコト
+ヤオ,ジュンイチ
+ヒジヤ,タツヤ
+ホリイ,ヒデジ
+タケダ,タカヨシ
+ヤスナガ,カツミ
+ヤマザキ,ヒデヒト
+ヤノ,アキラ
+シワク,ミノル
+カミノ,アキラ
+ナカジマ,タイジロウ
+マスダ,クニヒコ
+オフチ,ジロウ
+フクザキ,レイコ
+イタガキ,シゲキ
+シモ,チエ
+フクイ,ノブアキ
+イビ,ジンイチ
+コムカイ,キヨミ
+フジエ,ノブユキ
+マツキ,カズヒコ
+コバヤシ,カズヨシ
+ゴウチ,カズトシ
+ハセガワ,ケン
+カワゴエ,トモフミ
+ナガサワ,タイセイ
+ヤマシタ,サカエ
+イシザキ,シンイチロウ
+オダ,ミチヒロ
+シンドウ,タカアキ
+シモサコ,ハルヒサ
+ツツミ,キヨシ
+キタオカ,カズヒコ
+キタザワ,コウジ
+ナカオカ,エイジ
+イシバシ,ミユキ
+ハシグチ,ミワコ
+ワタナベ,アキヒロ
+オオバ,カナメ
+ハラ,カズヤ
+シミズ,コミナ
+イザワ,ヨシヒコ
+ヨシヤマ,アキラ
+スギモト,ヒロユキ
+コマツ,コウイチ
+ヘンミ,コウゾウ
+フカダ,ノリフミ
+コバヤシ,ヨシヒサ
+スギモト,ケンジ
+ヨコヤマ,ツトム
+タナカ,ノリヒコ
+ミヤタニ,サトル
+ハセガワ,アツシ
+キタガワ,タカアキ
+フクオカ,ヒロユキ
+オムラ,サトル
+イグチ,マコト
+ハヤシ,マリコ
+ヒライ,カエコ
+オオモリ,レイコ
+オギノ,イチロウ
+タムラ,ミツオ
+タケダ,ヒデアキ
+ミヤナガ,コウイチロウ
+ヒライ,ノリマサ
+ニシムラ,ヒロユキ
+ハブチ,ヒデカズ
+オオクラ,ヨシアキ
+ハッタ,エイジ
+イコマ,ヒロユキ
+アサヒナ,タカシ
+カノウ,シンゴ
+ナカニシ,シュウジ
+ミヤザキ,ヒロム
+イチカド,トヨアキ
+ナガサワ,アキノブ
+ハマグチ,ハルオ
+ヤシロ,ヒロノリ
+ムラオ,マキ
+オオギマチ,アキラ
+シロタ,マサユキ
+テシマ,ミツオ
+カワサキ,ヤスユキ
+ヤマダ,オサム
+ホンダ,マサヒデ
+カネコ,シゲル
+マツシマ,ヒロズミ
+コミヤ,コウジ
+ワダ,ツヨシ
+ヨシダ,タカシ
+モリサキ,ユウジ
+イマヒガシ,ヒデオ
+クラモチ,ワタル
+ユカワ,サトシ
+テラオ,ジロウ
+コンド,マキ
+サイトウ,マサユキ
+ヨシナガ,ヒロシ
+ユアサ,ハルユキ
+センガ,ヨシオ
+ニシグチ,トシアキ
+ウエダ,ナオキ
+ヤマオカ,トシオ
+ヤマモト,カズオ
+フジカワ,トシタケ
+オグラ,タカシ
+カワノ,ヒデオ
+カネズカ,ヒロアキ
+オカモト,ユウスケ
+カワツキ,カズオ
+スエヨシ,タツヤ
+カワベ,シゲユキ
+タカハシ,タカユキ
+モリ,シンスケ
+スギヤマ,テツジ
+マエヤマ,キヨシ
+コメタニ,ユウジ
+フジワラ,キヨシ
+アデガワ,ヒロユキ
+トミザワ,オサム
+ナカタ,マサアキ
+タチバナキ,ハルアキ
+コダマ,ショウゴ
+ハナイ,チホ
+チノネ,カズオ
+シミズ,コウイチ
+タキザワ,マサト
+クドウ,ケンジ
+モリオカ,マサカズ
+カネヒラ,アキオ
+サトウ,ヒロノブ
+ヤバナ,トシオ
+サカズメ,ヒロユキ
+ハシモト,キヨ
+ヨノモト,ヒデキ
+バンショウ,クニオ
+フチエ,カズオ
+スズキ,イクオ
+スズキ,ユキノリ
+コバヤシ,カズヒロ
+カトウ,タカツグ
+クスダ,カズイチ
+ミヤタケ,ヨシヒロ
+サノ,ヒデジ
+マルタ,トシアキ
+マキタ,マリコ
+カシワギ,ハジメ
+タニ,ヨシミ
+アリヤス,エツオ
+カトウ,シュウジ
+タナカ,マサヒト
+ツジタ,ヒロシ
+オオガワラ,タダオ
+ムラサワ,トシヒロ
+セキモト,ヒサシ
+ツジモト,ヒサト
+シオタニ,ヨウイチロウ
+ミワ,トシオ
+ナガサカ,セイジ
+コイデ,アキラ
+オグラ,ツトム
+ツツミ,タカノリ
+フカミ,ジュンイチ
+ヨシダ,タカシ
+モロホシ,ススム
+シオノ,タダヒデ
+ヤマグチ,ノブミチ
+マミヤ,ツカサ
+サイトウ,シゲユキ
+アキヤマ,キヨシ
+アダチ,カズヒロ
+カワノ,トシミツ
+ナカムラ,アキヒロ
+ヤマグチ,トシキ
+サクマ,ヒデミ
+モチズキ,ヨシタカ
+ワタナベ,ヨウジ
+コバヤシ,セイジ
+キシ,ミレイ
+ハヤサカ,ミチヨ
+コフジ,マサノブ
+サイトウ,アキコ
+ノムラ,シュンジ
+マツイ,ユキオ
+ハヤシダ,マサエ
+オガワ,タカシ
+ホンダ,タカシ
+コザワ,ヨシモト
+ササキ,ヒデアキ
+ワダ,キヨシ
+ヤマワキ,タミ
+フジイ,ハルヨ
+タキザワ,ヤスヒコ
+サトウ,コウジ
+ミカミ,サトシ
+ミワ,ノボル
+オチ,ヒロシ
+フジタ,ケイジ
+ナガタ,イチロウ
+クボタ,ヨウコ
+アオガキ,ゲン
+カリヤド,ナオコ
+ミハシ,シンイチ
+ムラマツ,チエコ
+カタヤマ,オサム
+ヤマザキ,トシヒコ
+オオギソ,キヨタカ
+ババ,マサカズ
+ミシマ,マサヒコ
+ヤノ,オサム
+ナカジマ,アキヒコ
+タケシタ,キョウコ
+ナカノ,ミノル
+タカノ,ユキ
+カワダ,カズマサ
+タジマ,コウタロウ
+モチズキ,キヨシ
+キムラ,カツミ
+アキホ,トミモト
+ヤマモト,アキ
+カワセ,ユタカ
+ササ,ヒサオ
+ノセ,カズナリ
+ヒラタ,ナオキ
+コバヤシ,シュウイチ
+アガワ,ユウスケ
+テラモト,ヒロフミ
+オザキ,サカエ
+モリ,キョウコ
+ウツ,ヒトシ
+ワカマツ,トシサダ
+イマイ,フミコ
+クボ,タカヒロ
+タカノ,ジュンジ
+ヒビノ,ヒデオ
+スズキ,ハルキ
+タナカ,タカハル
+サカモリ,カヨコ
+タキザワ,テツ
+ヨシカワ,タエコ
+トヨダ,リュウイチ
+ウラシマ,ユウジ
+コンノ,モトヒロ
+テラカワ,タケナガ
+コバヤシ,アキヒコ
+キムラ,タカコ
+カミオ,レイ
+クレバヤシ,キヨミ
+カネダ,ヒロコ
+カワモト,コウヘイ
+イマムラ,ヨシヒロ
+コハギザワ,ミノル
+シノザキ,シュウイチロウ
+メグロ,サトシ
+クニサダ,マサハル
+モリ,キヨ
+カワギシ,タカユキ
+オオスガ,カエデ
+スダ,ヒロシ
+ナカムラ,キヨカズ
+イシコ,ジュン
+スズキ,ナオヤ
+キクチ,カズヒコ
+オギタ,アキラ
+タカヤマ,タカトラ
+ナカシマ,キヨシ
+ツジモト,ヒロシ
+ハヤマ,クニヒロ
+イタガキ,マサアキ
+ヤマモト,ヒロアキ
+アダチ,ヒロシ
+キタミ,ヒロヒデ
+タマキ,ミチオ
+マエダ,ユウジ
+アダチ,ショウゾウ
+タマダ,グンジ
+モリグチ,ユウジ
+ヨシナガ,ノリコ
+マエダ,タエコ
+ワタナベ,タマキ
+タカハシ,ヨリタカ
+イシコ,テツロウ
+オジマ,カツジ
+シバヤマ,ヨシアキ
+シバ,タケヒコ
+トモノ,ケンイチ
+スミ,マサフミ
+ミツナガ,アキコ
+ウラノ,マサキ
+ヨコズカ,サトシ
+フジカワ,ハルヒロ
+カブラギ,マサユキ
+ヨシダ,ユタカ
+サイトウ,ヨシアキ
+ヤノ,タカヒサ
+ヨコタ,ナオミ
+ナカムラ,アツシ
+ナミサト,マサカズ
+ネギシ,ケイゾウ
+キノ,ノボル
+ナカジマ,アキラ
+ツツミ,シュウイチ
+コウダ,ヤスヒコ
+ホリ,ミユキ
+コンノ,カズヤ
+ワダ,ユミコ
+マツナガ,サダオ
+ニシムラ,トシユキ
+イイ,ヤスヒロ
+ヤスイ,ナオキ
+コバヤシ,シュウイチ
+ヤマサキ,マサヒロ
+スズキ,ヤスユキ
+イワタ,ハルヒコ
+シゲモリ,タカシ
+イマムラ,ノブタカ
+ツカモト,アキヨ
+イトウ,シンスイ
+クボ,ジロウ
+サナエ,カズマサ
+コダマ,アキオ
+イトウ,カツシ
+アクツ,ヨウコ
+アタラシ,ミエコ
+タグリ,ジュンコ
+ノ,タツヤ
+アカマツ,ケンジロウ
+アサノ,ケンジ
+ナカガワ,マサアキ
+カワシマ,アサコ
+サトウ,ヒデオ
+オグラ,セイジ
+イシバシ,ヒロユキ
+マツオカ,タカヨシ
+タキザワ,マサヨシ
+イタクラ,サトシ
+ホンゴウ,ヨシカズ
+ナガヤス,タカユキ
+ウチダ,ヒロシ
+ヤマシタ,ツネオ
+イシグロ,ヒロシ
+モリ,トヨヒコ
+タナカ,コウイチ
+ヒグチ,シゲト
+キト,シンイチ
+タナカ,カズユキ
+スズキ,カズヒロ
+スガイ,ケンジ
+ヨネザワ,ヨシカズ
+アラカワ,リュウジ
+イノダ,ヤスヒサ
+カトウ,マサオ
+カゲヤマ,マサシ
+ミヤワキ,トシヒコ
+ミチヤマ,タダヤス
+モリ,トシアキ
+モリサワ,シンイチロウ
+ニシムラ,カツユキ
+サイトウ,ヤスノリ
+ヤマモト,ヨウスケ
+マツウラ,ヨシアキ
+ハセガワ,ツトム
+ウチダ,ジュンイチ
+ヤスダ,コウイチ
+イシダ,トオル
+モリノ,カツマサ
+キタヤマ,ヨシヒロ
+サカモト,ヨシノリ
+ソウミヤ,ヒロユキ
+キクチ,シンイチ
+シブイ,コウジ
+トミタ,アツシ
+モリ,コウジ
+ヤマグチ,ジュンジ
+キタヤマ,ヨシヒロ
+マンモト,アキラ
+タナカ,ユタカ
+モリ,カズヒロ
+イタクラ,イサム
+イチミヤ,マサシ
+ニシヤマ,カツジ
+ワタナベ,ヒロシ
+ハンガイ,ハルオ
+ナガノ,ケイイチロウ
+シバ,ケンジ
+コジマ,ススム
+タタノ,サトシ
+カワバタ,マサヒコ
+タケダ,タロウ
+オムラ,イクロウ
+サコ,ヒロシ
+イシハラ,ミノル
+イチノセ,ススム
+キシダ,ヨシミ
+ミカミ,ジュン
+ハヤシ,タクジ
+ササキ,アユミ
+ヨネミツ,カズナリ
+セキネ,ヨシナリ
+イマニシ,キヨタダ
+アオキ,タダシ
+スギヤマ,イサオ
+ナカモリ,ヨシフミ
+シマダ,マサヒコ
+マスダ,フサオ
+ツボイ,ヒロシ
+セキヤ,ススム
+キジマ,ノリオ
+ヨシズミ,ヒデタカ
+ヤナギダテ,シンヤ
+シゲマツ,ハルヤス
+イノウエ,ナオキ
+タケウチ,ケイコ
+タナカ,タケシ
+ヒガシ,シュウジ
+タカタ,ナオヒロ
+ナカイ,ツギオ
+ハセガワ,ジュンイチ
+タニ,タカシ
+コバヤシ,ミキトヨ
+タカハシ,アサコ
+アベ,マサト
+コバヤシ,ヨシゾウ
+オノ,イクヤ
+タカハシ,ユキヒロ
+クロダ,アツシ
+ワタナベ,ヒロシ
+アベ,シンジ
+イノウエ,ヨウコ
+エンド,ヨシオ
+ノノシタ,シゲフミ
+カナイ,クミコ
+コタキ,ジ
+タカハシ,ヨウコ
+シゲヤマ,トミオ
+フカダ,アキオ
+シオジ,カツユキ
+モリヤ,フミヒロ
+オオツカ,マサヤ
+アベ,マサタカ
+ヒライ,タカユキ
+ムラマツ,ジュン
+ミズタ,マサミ
+ホリエ,カズユキ
+ヒカサ,マサタカ
+オシタニ,マコト
+コバヤシ,カツミ
+クラハシ,ヒデユキ
+ヒラバル,タケオ
+フジエダ,マコト
+トザワ,カツミ
+ヤナセ,シゲル
+クボタ,ヨシオ
+マミヤ,マサキ
+ユハラギ,マサミ
+チョウナン,ヨシマロ
+ミヨシ,トオル
+ノジマ,ヨシノリ
+モリサキ,マコト
+コヤマ,トシアキ
+カトウ,ヒロキ
+キノシタ,ヤチヨ
+カワムロ,サトシ
+モリ,ケイイチ
+ヒラシタ,サダキ
+カワシマ,リョウ
+フルカワ,アキト
+インデン,マサヒコ
+ヤマダ,ヤスユキ
+ツクダ,ミノル
+イワサキ,マサヒト
+オマエ,オサム
+スズキ,マサユキ
+ハラ,マサヒコ
+サカイ,タツムネ
+モリヤ,カズマサ
+ミヤモト,トシヒロ
+シゲタ,マサヒロ
+イシカワ,ヒデノリ
+タザキ,サダム
+スエヒロ,ムネヤ
+カネダ,コウイチ
+スエヒロ,ジュンイチ
+ササキ,リュウサク
+ヒヤマ,タツハル
+キドグチ,ヨシヒロ
+シマダ,トシユキ
+ミヤケ,ヒトミ
+モリ,ジロウ
+シラカワ,コウジ
+ワカバヤシ,シンイチロウ
+ヤマシタ,カズオ
+アマノ,ジュンジ
+タケイチ,ヒロタカ
+シン,ケイコ
+カサハラ,テツヤ
+タナカ,ケイシ
+オクダ,アキラ
+カトウ,トモコ
+カワサキ,マサコ
+カトウ,カズオ
+イチセ,マサアキ
+キタガワ,ゲンヘイ
+ヤスイ,ヨシノブ
+エダ,トミカズ
+ハヤシ,タツジ
+ナガイ,サトシ
+トノムラ,マサノリ
+タナカ,ノブユキ
+クリバヤシ,ヨシノリ
+キムラ,カツコ
+ハゼキ,ノブユキ
+アンノ,アツシ
+タカヨシ,ヨシサト
+アンザイ,ショウジロウ
+タカハシ,オサム
+ハラノ,ツネオ
+ナカガワ,カツヨシ
+ニシカワ,ユキオ
+シブヤ,カズヒロ
+カトウ,ノブヒロ
+アダチ,トシヒロ
+サクライ,ヤスタカ
+クサノ,トシヒロ
+ミナミゾノ,ミノル
+ツジムラ,アキトシ
+ヤマダ,イサム
+カツシマ,シゲミ
+コヤナカ,ヒロユキ
+タバタ,アキラ
+アダチ,ヨシヒロ
+ヒロノ,セイイチ
+ツザキ,ヒロアキ
+タチバナ,シゲアキ
+ベッショ,カズミ
+マツシタ,チュウゾウ
+タニグチ,ケンシュウ
+ナカトモ,ムツミ
+ニシムラ,ヒロシ
+ミウラ,マコト
+コンド,オサム
+マツイ,マサキ
+マツモト,ヒロカズ
+ホリイ,ヒロシ
+マスモト,ツトム
+ナカジマ,チカシ
+キムラ,ケンイチ
+ミワ,ヒロユキ
+イシバシ,ヤスシ
+エグチ,ノリヒサ
+イナフク,ジュン
+ワタヌキ,ヤスヒロ
+ヒグチ,ヨシヒコ
+イケノ,キクオ
+ウメハラ,マナブ
+ノザワ,タダシ
+イマイ,マサキ
+タカハシ,カツジ
+イイダ,ハルヒサ
+フジカワ,カオル
+ニシエ,タダヒコ
+コスゲ,ヒロシ
+オオタ,ジュンコ
+ノジ,クニヒコ
+コボリ,ミキオ
+スギヤマ,ヨシアキ
+カワタ,テツヒコ
+サメシマ,ミネオ
+コヤマ,キヨタカ
+エンカイ,タカシ
+コモダ,ツトム
+オガワ,コウイチ
+ヤマムラ,カズマサ
+エノモト,レイジ
+タカダ,ヒサタダ
+ナカミゾ,ユミコ
+オカムラ,ヒロシ
+カミバヤシ,セイジ
+フジモリ,ミキオ
+クロダ,シンイチ
+サトウ,ヨリエ
+ヨシムラ,タキオ
+モタイ,タクジ
+ムラタ,トオル
+ミワ,ナオト
+イハラ,エミ
+イマイ,タカシ
+ヒノ,カズオ
+マツモト,タカシ
+セト,ヨウジ
+クマガイ,ヤスヒロ
+ヤマダ,ヨシオ
+ワタナベ,ユウコ
+ヤサカ,ヒロシ
+サトウ,アキヒロ
+ミヤタケ,ヒロノブ
+マツウラ,ヒトシ
+マツシタ,マコト
+ウラベ,イサム
+シガキ,マサヨシ
+テラダ,ヨシヒト
+イワモト,ヨシアキ
+イノウエ,ジロウ
+モチズキ,ユキオ
+ヨシズミ,エイイチ
+ミウラ,ミツル
+ミズノ,タカユキ
+ヨシイ,ジュンイチ
+フルイ,ヨシヒロ
+ハヤシ,シゲアキ
+シライシ,ヒデオ
+スガワラ,タツオ
+ナカイ,ケイイチ
+ノフジ,ヨシハル
+サトウ,ヒロカズ
+クロダ,キイチ
+イケダ,タカシ
+サガ,ケイシ
+ミヤカワ,イクヒサ
+ワラシナ,シゲル
+キタガワ,ノブユキ
+イマイ,フミアキ
+ミサキ,ヒロノブ
+イシダ,タケシ
+リクラ,ヒデアキ
+ショウジ,コウイチロウ
+フクナガ,ヨシカズ
+クロキ,タカオ
+マタキ,ショウザン
+セキネ,マサハル
+ヤマシタ,ミツヒロ
+タナカ,ヨシアキ
+オオハマ,マサヒロ
+オオツボ,ヨシアキ
+タイ,ヒサハル
+ツルヤ,マサノリ
+ヨシダ,ヨウイチ
+マスミツ,タカシ
+カスヤ,シゲオ
+ヨシダ,ミノル
+カワムラ,ヒデキ
+ハヤシ,クニヒコ
+クニモト,マサユキ
+アラカワ,ヒナコ
+ナカムラ,マサノリ
+イシグロ,セイジ
+ハヤミ,カツヒコ
+ミナミゾノ,キンジ
+サカタ,ミノル
+カワモト,フミカズ
+ムラオカ,ヤスノリ
+イトウ,ヨシオ
+ワタナベ,ミチオ
+ノムラ,マサカズ
+サトウ,ハルナ
+ワタナベ,ヒロシ
+コバヤシ,マサカツ
+ヌルキ,ヒデヒコ
+ヨシダ,ヨウイチ
+サイトウ,ヒロシ
+ヒライ,ヨシユキ
+キムラ,タカシ
+オク,ロウ
+ハヤサカ,ヤスコ
+アサノ,ケンジ
+フジサキ,シンヤ
+アキモト,リカ
+シマダ,マサエ
+ミズカミ,マサハル
+ナカガワ,トオル
+サトウ,テツヤ
+コバシリ,ケンジ
+アラキ,ヨシオ
+スズキ,ナオトシ
+ニシデ,セツ
+オチアイ,ヨシヒサ
+ノナカ,タカシ
+ヤスイ,リュウジ
+コハタ,ケンイチ
+ミノシマ,アツオ
+テラシマ,キミヒコ
+ヤクワ,ヨシオ
+スガワラ,ミチオ
+ミツハシ,テツロウ
+ノムラ,ノリコ
+チョウ,アズミ
+サトウ,リョウコ
+シズハラ,レイコ
+ハヤシカワ,ケンジ
+ニワ,ヨシオ
+ミエノ,ケンイチ
+シマダ,ヒデト
+ナカムラ,トシオ
+ヒラノ,リョウイチ
+ヤマトヤ,カズヒコ
+ツノダ,ヤスノリ
+コバヤシ,ノブアキ
+サカクラ,キョウコ
+マツダ,マサアキ
+イマムラ,セイシ
+ヤギハシ,ナオコ
+オギノ,ヒロオ
+タナカ,ヨシマサ
+ヒガ,ヨシカズ
+サコ,ツトム
+タザキ,タモツ
+イイダ,マサハル
+イイダ,リョウスケ
+マツグマ,シゲホ
+ムラタ,ケン
+ヤスモト,マコト
+シミズ,ヒロシ
+ワクイ,ヨシタカ
+タカハシ,ヨシオ
+キタイ,トシヒコ
+アダチ,ショウイチロウ
+ハナブチ,ハジメ
+サトウ,クニヒロ
+アライ,トシヒコ
+タケナカ,サトシ
+カイ,ミホコ
+アカダ,シズオ
+クニスエ,ヒロアキ
+マエカワ,アキラ
+ミナミ,ミツシ
+タキガミ,ヒデユキ
+マツイ,マコト
+シライ,マサミチ
+タケヨシ,セイノスケ
+タカダ,キヨタカ
+タカギ,タカヒコ
+クドウ,キヨタカ
+シマダ,ノブコ
+カトウ,カズオ
+シギョウ,ヒデアキ
+ヒロノ,ソオジャ
+キノシタ,ヨシエ
+シミズ,ショウゾウ
+シムラ,ヒロアキ
+クサカリ,ミホ
+カルベ,トシハル
+マツモト,ナオユキ
+シマムラ,トマサ
+カツカワ,タカオ
+イズ,イサオ
+サクラモト,イツジ
+モリタ,ジロウ
+タナベ,クニイチ
+ハットリ,フミト
+リュウゴ,シュンイチ
+オマツザワ,マサハル
+オトワ,ユキヨシ
+コダマ,セイイチ
+カヤシマ,ユウジ
+コバヤシ,シゲル
+クニエダ,マキオ
+コウ,カズナリ
+ニシヤマ,ヒトミ
+ワダ,ヒロヤ
+ニシモト,タカシ
+サイトウ,カツノリ
+トシマ,ヨウイチ
+オオツカ,ホコク
+オノ,マサル
+スズキ,タカシ
+サクライ,タカシ
+オゼキ,タカシ
+オカダ,マサミツ
+オガワ,ヒロシ
+イケガミ,ヒデトシ
+コマツ,タカノリ
+ヨシイ,ヨシアキ
+ヒラノ,ショウイチ
+タカスカ,ヒロシ
+ハシモト,ヤスユキ
+クワエ,キクオ
+カネマツ,カネヒデ
+マツオ,ケイイチ
+イド,タカヒコ
+イノ,ジュンイチ
+サイトウ,タケシ
+カミヤマ,コウジ
+コシモト,コウイチ
+オオガワラ,ヨシノブ
+タカハシ,マコト
+ナガマツ,シンイチ
+スズキ,ゴロウ
+テラオ,ヨウジ
+ホリケ,カオル
+スズキ,タカシ
+オガワ,コウイチ
+ミヤモト,ノブオ
+オオスミ,ヒロユキ
+イワブチ,ノブヤス
+マツウラ,タツオ
+サワチ,チカオ
+テラダ,セツコ
+イバヤシ,ユタカ
+イワセ,ジュンイチロ
+オガワ,セイジ
+アソ,ヤストモ
+フクモト,サユリ
+イデ,フミタカ
+カワサキ,テツジ
+ハルナ,マサノリ
+タジマ,ユキフミ
+カナヤマ,ヨウジ
+タナカ,ワタル
+マツザキ,マサオ
+イノサカ,コウジ
+オシヤマ,ヨシヒサ
+タケウチ,タカシ
+ササオカ,トシユキ
+コモリ,マサアキ
+タジマ,ヒロアキ
+イケガミ,ケンジ
+ヤマグチ,マサアキ
+カワカミ,シゲキ
+イセキ,エイスケ
+タケダ,ヒデユキ
+タカヤス,マナブ
+カメダ,タケトシ
+フジノ,マコト
+ミサキ,ヤスノリ
+ナカムラ,トシアキ
+オガワ,コウジ
+ナカザワ,ヒデトシ
+セキ,ヤスクニ
+ヨシカワ,タクヤ
+タガワ,タカシ
+ミタニ,トシヒコ
+スエタ,アキヒト
+イヌイ,ケン
+オサダ,サトシ
+フルカワ,カツオ
+スズキ,マコト
+キタムラ,リョウスケ
+コマツ,ヒロタカ
+アサダ,ヨウイチロウ
+カンザキ,ヤスマサ
+ウスイ,ヨシフミ
+フルヤ,トシヒコ
+ヨケムラ,フミヨシ
+ヨコエ,ヨシキ
+アカイワ,トシヒコ
+フクシマ,ヒロヤス
+ヤジマ,ヤスシ
+ハラ,ミユキ
+キシダ,ユウゾウ
+クボ,ミツル
+カタギリ,ヤスノリ
+イチイ,フミヤ
+マツキ,トシアキ
+ワケベ,ケンジ
+マルヤマ,ヒデオ
+ツバキ,シゲル
+サノ,ヒロシ
+ミヤモト,マサトシ
+フクヤマ,マサアキ
+ウエムラ,マサル
+クワカド,リキ
+クニマツ,マサル
+カタオカ,ノリユキ
+トミタ,カズノリ
+ナカムラ,アツヒコ
+クドウ,ヨシテル
+オブチ,テルヒコ
+ヨシカワ,トオル
+カゲヤマ,マコト
+トダ,ケイイチ
+タカハラ,サトシ
+マツシタ,シンジ
+コダイラ,ヒデシ
+シンカイ,モトオ
+テラダ,マサヒト
+カワキタ,ハジメ
+ミウラ,サナエ
+アベ,ヒトシ
+ニシカワ,ユキヒロ
+ホソダ,イワオ
+マスダ,ヨシオ
+カザマ,タケシ
+アラマキ,カズオ
+ワタヌキ,ミツギ
+サカモト,ツヨシ
+アマガミ,シン
+コンノ,イサオ
+オクダ,ヨシノリ
+オハク,ミツオ
+ナカムラ,ヨシフミ
+ナカムラ,ユウイチ
+ウシヤマ,ユキオ
+ヤシキ,アイイチロウ
+キノセ,シュンイチ
+ワカヤマ,コウイチ
+イマイ,マサユキ
+マエダ,キヨシ
+マツシタ,エイジ
+ヒラグチ,ヒロシ
+ワダ,アツコ
+ワタナベ,ソウイチ
+マツイ,シンイチ
+マツモト,ミキオ
+ナカムラ,ジュンイチロ
+タキタ,ヨシト
+マスダ,トモコ
+ミヤウチ,マユミ
+シムラ,サカエ
+マツイ,タキコ
+ハラハタ,トミタロウ
+ヒサタニ,アツシ
+カガミ,マサツグ
+ヨシムラ,ユウジ
+オオツカ,ケイゴ
+タナカ,シンイチ
+ヒラノ,シュウ
+タケスエ,テツヤ
+ニシノ,ヨシユキ
+オオツカ,メグミ
+オダ,シンジ
+シミズ,ユタカ
+ハマモト,タカヨシ
+ミヤマエ,マサナリ
+ナガシマ,エイジ
+ミツメ,コウジ
+カゴタニ,ヨシカズ
+ヨコヤマ,タカフミ
+サカタ,ケンジ
+オイクボ,アキヒデ
+クラモチ,ヒロヤ
+アンザイ,マサユキ
+フクシマ,リエ
+ナカムラ,ヒトミ
+イトイ,ユリコ
+ホシノ,ミチコ
+コイデ,ヒロヒコ
+オザキ,ジュン
+セジモ,マサミチ
+スドウ,マサミツ
+カジワラ,ミドリ
+スズキ,カツヒロ
+ホシノ,ハルコ
+ナカムラ,ヨシアキ
+モリタ,アキカズ
+ヤマザキ,トシヒコ
+オクガワ,マサヒコ
+ナガハマ,ヒロユキ
+ヨシムラ,アキミツ
+マツダ,タカトシ
+ホカゾノ,アツヒサ
+アベ,トシツグ
+ナガイ,コウジ
+トガシ,トシヒト
+ヤザキ,テイゾウ
+ヤマウチ,ヒデキ
+ミサキ,ナオキ
+ヨシダ,シンジ
+ナカモト,シゲル
+シノハラ,ツネカズ
+ナカニシ,アキラ
+ヤジマ,キヨシ
+トヨフク,ユウジ
+タカシマ,カツジ
+フシニシ,キミエ
+ムカイ,テツヤ
+ニシムラ,ヒロユシ
+カワバタ,サトシ
+ムカエダ,サトル
+シセキ,イッシン
+カタオカ,ヨシヒデ
+ナイトウ,ヒロキ
+ミト,ヤスト
+オオニシ,トシロウ
+ヨコヤマ,タカシ
+ナカムラ,タツアキ
+イザワ,ヒサノリ
+タニガワ,トミエ
+スギタ,ユカ
+オシタ,マサユキ
+シマダ,トモコ
+ヤマムラ,コウイチ
+フクオカ,マサシ
+ヤナリ,ヒロアキ
+スズキ,シンジ
+サカイ,サトル
+ヤマダ,ユキヒロ
+ヤマコシ,シゲル
+ノモト,トシユキ
+タケシタ,モトキ
+ミノダ,シゲユキ
+アサイ,シホ
+ムネヤス,ヒデユキ
+カワニシ,マコト
+サカグチ,ヤスヒサ
+ヤマザキ,トシヒコ
+アサオカ,ヒデノブ
+キノシタ,ミキゾウ
+ミマ,キヨミ
+フクモリタ,シゲオ
+カジヤマ,ヨシコ
+ヤマザキ,ジュンイチ
+サトウ,トシヤ
+カワベ,ミツヒコ
+マルヤマ,ノブヨシ
+オガラネ,ノブコ
+ドイ,ユウゾウ
+タナカ,ミツオ
+オギシマ,オサム
+イノウエ,ヒロユキ
+フルヤ,ヒロノリ
+フクイ,ツヨシ
+マスダ,タカヒロ
+ホンダ,ユミコ
+ナカニシ,ナオタカ
+ミヤマエ,ナオヒコ
+オカノ,ヒデオ
+ババ,ヨウイチロウ
+ダケヤマ,サクコ
+ヤマグチ,ヤスオ
+ハヤシ,トシロウ
+トミズカ,ヤスヒロ
+ナカニシ,ハルヒサ
+アベ,ハジメ
+アオヤギ,ヒロコ
+テラワキ,キヨコ
+カタギリ,ノボル
+ナカガワ,マサオ
+コバヤシ,カズヒロ
+ウエダ,ヒロミ
+フジワラ,アキヒロ
+ハヤサカ,タツミ
+キムラ,ヒロシ
+ゴトウ,マサヒロ
+シムラ,ケイゾウ
+セキ,トシカズ
+アイザワ,アキオ
+ノムラ,コスケ
+カンダ,シュウジ
+ウライ,マスミ
+モトヤマ,ヨシハル
+カミムラ,テツオ
+ヒライ,マサユキ
+アライ,トモナリ
+サイトウ,ヨウイチ
+マキハラ,マサシ
+オオワク,オサム
+モチズキ,マサヒロ
+ハンガイ,ヨシヒロ
+イノウエ,カズヒト
+ナガイシ,カツミ
+ニシモト,アキラ
+ツチヤ,ショウイチ
+マツモト,タカシ
+ホン,ショウゴ
+イワイ,タツヤ
+クボ,マサオ
+ハコイ,マサオ
+ワタナベ,ノリオ
+スギタ,トシミツ
+ナカムラ,カズヒロ
+カラサキ,コウイチ
+ノリマツ,ミツヒコ
+クスモト,タカヨシ
+ニシムラ,サトシ
+コスゲ,マサナ
+フクミツ,ヤスミ
+ヤマグチ,サブロウ
+イシグロ,カズミ
+トクダ,ナオヤ
+アリトミ,ジツロウ
+ヒヤマ,シンイチ
+ヒロセ,マサトシ
+ニシダ,トオル
+ハットリ,ヨシミ
+ヒラバヤシ,ケンイチ
+ハラシマ,エイジ
+ハラ,タミオ
+ハマノ,カズユキ
+ハマダ,マサトシ
+ハシモト,カツヒコ
+ハヤシ,ヒサジ
+ヒグチ,マサミ
+ヒラノ,ユタカ
+ホンマ,マサハル
+ハルマシ,ヨシマサ
+ハシモト,ヤスオ
+ヒダ,タカシ
+ヒラスカ,チョウジ
+ハギワラ,コウイチ
+ハマダ,キミエ
+ハシモト,ミチハル
+ホンマ,ミヨシ
+ホカリ,ヤスヒロ
+ハラダ,ミチコ
+ハヤシ,ケンジ
+ホリベ,カズオ
+ハシモト,マサオ
+ハセガワ,タダカズ
+ヒロベ,ミキオ
+ハシモト,カズミ
+ヒラノ,マサユキ
+ハシモト,ケン
+ヒジカタ,ツギエ
+オオヌマ,イサオ
+ハブツ,ヒロユキ
+ヒダカ,カズヒロ
+ハシモト,キンヤ
+ハマノ,ナオキ
+ヒシヌマ,ノブユキ
+ハラ,ヨシミ
+ハナキ,シンイチロウ
+ハラ,ケンジ
+ハガ,タケオ
+ハナダ,マサノリ
+ヒラヤナギ,ノブタカ
+ホリカワ,ミツノリ
+ホリカワ,ケン
+ハシモト,アキコ
+ハタ,トシヒコ
+ヒライ,ジュン
+ハラグチ,ヤスマサ
+ヒラオ,ユウイチ
+ハシズメ,カンタ
+ツジ,マナブ
+サクラザワ,ヒデトシ
+アベ,コウイチ
+アベ,マサヒロ
+アベ,ヒロタ
+アベ,コウジ
+アベ,オサム
+アベ,タカオ
+アカギ,ヤスヒト
+オカモト,シズオ
+エンド,ミチコ
+アカイシ,ツネハル
+ニシナ,マコト
+アキモト,トシオ
+アキズキ,マサトシ
+ヒラバヤシ,シゲマサ
+アメミヤ,アキラ
+アミノ,アキヒロ
+アナミ,マサカズ
+アナザワ,カオル
+アンドウ,ユウゾウ
+アンドウ,ヒロキ
+アオヤマ,マサキ
+アオヤマ,コウジ
+アオヤマ,シンイチ
+アライ,コウイチ
+アライ,マサシ
+アライ,マコト
+アライ,タマオ
+アライ,マサヤス
+アラキ,ミユキ
+スガワラ,トモミ
+アサヒ,シゲル
+アサクラ,タカシ
+アサミ,フミトシ
+アサムラ,カツミ
+ヤマシナ,カズオ
+アサリ,マサコ
+アサズ,トモコ
+アツミ,ヨシユキ
+バン,ヒロヤス
+ベッショ,ケイイチ
+チバ,アコ
+チカキヨ,ナオヒサ
+チムラ,タミエ
+ドバシ,タケオ
+エバシ,ショウヘイ
+エビハラ,ヨシフミ
+エガミ,ユキオ
+エグチ,ユキタカ
+エグチ,サトシ
+エジリ,スグル
+エンド,マユミ
+エンド,タツオ
+エノモト,ヨシツグ
+フチノ,トオル
+フジイ,オサム
+フジイ,テツ
+イシイ,ジュン
+ムラヤマ,トシヒサ
+フジカタ,タツヤ
+フジカワ,カズトモ
+フジマル,ヒサト
+フジモト,クニヒロ
+フジモト,タダヨシ
+フジモト,トシカズ
+フジノ,ヤストモ
+フジオ,トシアキ
+フジサカ,サトシ
+フジサワ,ノリオ
+フジサワ,タカヒロ
+フジタ,マサユキ
+フジタ,マサユキ
+フジワラ,トオル
+フジワラ,マサユキ
+フジワラ,シンショウ
+フカダ,フミヒロ
+フカガワ,アツヒロ
+フカノ,ケイ
+フカワ,セイジ
+フカヤ,トシカズ
+フカザワ,ヒトシ
+フクダ,コウジ
+フクイ,ヒロシ
+フクモト,ヒロタカ
+フクモト,ヒロアキ
+フクモト,マサヒコ
+フクモト,ススム
+フクシマ,ヒロユキ
+フクトミ,リュウサク
+フナキ,シンジ
+フルサワ,タロウ
+アビコ,マサユキ
+フセ,ノリオ
+フセガワ,ヨシナオ
+フシミ,ナオヒサ
+ギマ,カズヨシ
+ゴミ,マコト
+ゴトウ,ノリコ
+ゴトウ,トモアキ
+ゴトウ,ヒサノリ
+グンジ,ミヨ
+ハギワラ,ヨシコ
+ハギワラ,イチロウ
+ハイノ,ヒサヨシ
+ハカマダ,ノリユキ
+ハマダ,ユキ
+ハマダ,ユキオ
+ハマグチ,ケンジ
+ハラ,シンイチ
+ハラ,キヨタカ
+ハラ,クニヒコ
+ハラ,マサナリ
+ハラダ,マスミ
+ハラダ,ミナコ
+ハラダ,ノリコ
+ハラコ,タカヒロ
+ハルナ,タカアキ
+ハセガワ,タクヤ
+オシマ,アキラ
+ハシモト,タカシ
+ハタノ,カズヒロ
+ハタザワ,カズミチ
+ハト,マサシ
+ハツミ,アズサ
+ハットリ,トモユキ
+ハヤカワ,トシヒロ
+ハヤカワ,アツロウ
+ハヤカワ,トシヒコ
+ハヤノ,アツシ
+ハヤセ,シンゴ
+ハヤシ,タカハル
+ハヤシ,カオリ
+ハヤシ,ヨシヒロ
+ハヤシ,ケイジ
+ハヤシ,セイタ
+イモト,マサヨシ
+ハヤツ,ヒロシ
+ヒガキ,ヒデアキ
+ヒガシ,スミコ
+ヒノ,ケンジ
+ヒラバヤシ,ナオト
+ヒラノ,カズヒロ
+ヒラノ,ケイイチ
+ヒラオカ,マユミ
+ハラサキ,タツヤ
+ヒラテ,ヒデオ
+ヒラヤマ,トオル
+ヒロエ,ヨシカズ
+ヒロカワ,シュウイチ
+ヒロセ,ヒデタカ
+ヒロシ,ノブコ
+ヒサムネ,ケイコ
+ホンダ,コウイチ
+ホリカワ,ノリアキ
+ホリコシ,シンイチ
+ホリコシ,ヒロユキ
+ホシ,ユキオ
+ホシコ,マサヒロ
+ヒラサワ,サダユキ
+ホソイ,シンイチ
+ヒョウドウ,タカシ
+ヒョウドウ,ユウスケ
+イベ,シンイチ
+イチカワ,マサヒロ
+イチカワ,マサル
+イチカワ,ユミ
+イチノミヤ,ミツル
+イデ,ミツユキ
+イデ,ユリ
+イガラシ,ヤスユキ
+イガワ,キヨシ
+イグチ,シンヤ
+イイダ,シュウイチ
+イイダ,ヒロシ
+イイジマ,コウイチ
+イイツカ,ノブオ
+イイズカ,カズノリ
+イイズカ,アリサ
+イカラシ,トモキ
+イケダ,ナオキ
+イケダ,マサフミ
+イケダ,ジュン
+イケダ,ヒデト
+イケナガ,ヒロオ
+ミツモト,ヒロタカ
+イケヤマ,ヒロユキ
+イケザ,ヒトシ
+イケザキ,オサム
+イクタ,テルユキ
+イマイ,ヨシノリ
+イマイズミ,ノリヒロ
+イマムラ,ヒロユキ
+イマムラ,エイリ
+イマニシ,トモヒロ
+イナガキ,カオリ
+イナガキ,カツユキ
+イナガワ,タツヤ
+イナホ,マサル
+イナミ,ヒロミチ
+イナツグ,ミサオ
+イナヨシ,タツオ
+イノ,カズト
+イノオカ,シンヤ
+イノウエ,タカユキ
+イノウエ,タケシ
+イノウエ,ヒデカズ
+イノウエ,タカシ
+イノウエ,タカアキ
+イノウエ,ユウイチ
+イノウエ,キクオ
+イリサワ,アキヒコ
+イセ,ユキオ
+イセキ,カツヤ
+イシダ,ヤスノリ
+イシダ,ツヨシ
+オカダ,ハルミ
+イシイ,エイジ
+ヤマダ,ヒロブミ
+スギハラ,ヒロタカ
+イシカワ,カツラ
+イシカワ,マサコ
+イシカワ,マサミ
+イシマル,ノリコ
+イシモト,タツオ
+イシモト,マサヒロ
+イシモト,ケンジ
+イシノ,カクイチロウ
+イシツカ,サトシ
+イシワタ,タクヤ
+イシワタ,ユウジ
+ヒラバヤシ,エイジ
+イシザキ,モトノリ
+イシズカ,トオル
+イソダ,タケシ
+トオカ,トシユキ
+クリハラ,ケイジ
+イトウ,ケンイチ
+イトウ,ヨシアキ
+イトウ,エツキ
+イトウ,ヨウジ
+イトウ,サトシ
+イチヤナギ,シゲヒト
+イトウ,ツネヒロ
+ナガタ,カツミ
+イトウ,タカハル
+カミカワ,タダミツ
+イワイ,ノボル
+イワカワ,テルヒサ
+イワミ,トシヒコ
+イワミ,タカシ
+イワモト,トモコ
+イワナガ,マサヒロ
+イワサキ,ケイコ
+イワサキ,フミカズ
+イワセ,ヒロユキ
+イワシタ,オサム
+イワタ,コウセイ
+イワタ,サトシ
+イワタテ,ヒデキ
+イズミ,ミワ
+ジンノ,タカヤス
+カガワ,ヒデオ
+カイヌマ,ノブオ
+カジタ,タカミチ
+カケガワ,カズタカ
+カキヌマ,ナオキ
+カマダ,タカヒロ
+カマタ,ヒロキ
+カメタニ,クニアキ
+カミ,マサノリ
+カミムラ,マサシ
+カミヤマ,マサユキ
+カナウチ,タカユキ
+タケウチ,ミキ
+カネコ,ヤスノブ
+カネコ,ヤスキ
+カンヌキ,セイイチ
+カノウ,キヨクニ
+カラハシ,ヒロアキ
+カサイ,ミノル
+ノムラ,エミコ
+カサイ,モモコ
+カセ,ジュンイチ
+カシクラ,ヨシロウ
+カシムラ,サトシ
+カシワギ,カヨコ
+カタノ,テルヒサ
+カタオカ,ヤスシ
+カトウ,オサム
+カトウ,ナオキ
+カトウ,ケイ
+カトウ,マサハル
+カトウ,タカアキ
+カトウ,タカシ
+カトウオカ,ユカリ
+カツイ,ジ
+カツマタ,ミノル
+カワバタ,タカオ
+カワチヤ,トシアキ
+カワダ,リセイ
+カワダ,ヒロユキ
+イリサワ,フミオ
+カワイ,ミワ
+カワカミ,ケンジ
+カワカミ,ミノル
+カワミ,アキラ
+カワムラ,ケンジ
+イシイ,ヤスキ
+カワノ,マサヒロ
+カワムラ,キヨヒロ
+カワサキ,ノブユキ
+カワセ,ナオキ
+カワセ,ヒロシ
+カワセ,エイジ
+カワシマ,エイコ
+カワタニ,クニヒコ
+ケイダ,マサアキ
+キダ,シゲコ
+キダチ,シゲオ
+キハラ,トモエ
+キクカワ,ユカリ
+キモト,マサヒデ
+キムラ,ケンイチ
+カマタ,ヒロユキ
+イクミ,マユミ
+キノシタ,シゲカズ
+キノウチ,マキ
+キシ,タクシ
+キシモト,カズヒロ
+キウチ,トヨアキ
+コバ,ヒロユキ
+モリ,ヒデキ
+コバヤカワ,タケシ
+クボタ,ヒトシ
+コバヤシ,テツヤ
+オオカワ,シン
+コバヤシ,テツジ
+コバヤシ,キヨノリ
+コマタ,エイタツ
+コバヤシ,カツミ
+コバヤシ,カツユキ
+コバヤシ,カズヒコ
+コダマ,ヤスシ
+コエジ,ツトム
+コグチ,ケンジ
+コハタ,トシヒコ
+コヒラ,キミオ
+ナカガワ,リエコ
+コヤマ,アキラ
+コイデ,ヨシロウ
+コイデ,ジュン
+コイケ,シゲル
+コイズミ,モトコ
+コジマ,タクヤ
+コケグチ,ヤスマサ
+コクボ,ヨウコ
+コマツ,タカコ
+コマツ,ユミコ
+コミヤ,ヨウジ
+コンド,カズトシ
+コンド,アキラ
+コンド,ミエ
+コンド,タカユキ
+コンド,タツオ
+コニシ,タカコ
+コサカ,マサヒロ
+コセキ,トシヒコ
+コシイシ,タツヤ
+コシオ,マサトシ
+コスゲ,トシアキ
+コウヤ,マサノリ
+コヤマ,カズシ
+コヤマ,オサム
+タケチ,シュウゾウ
+クボ,トシヤ
+クボ,ツトム
+クボ,フミキ
+クガイ,タカユキ
+イカラシ,カズヒロ
+クマザワ,ノブコ
+クニミツ,ヒサヨシ
+クノ,セイシ
+ホシノ,トシヤ
+クラシゲ,コウジ
+クリハラ,ミカ
+ナカガワ,ショウイチ
+ヤナギダ,ユキオ
+クリヤマ,ヒデアキ
+クロカワ,ヒデユキ
+クサカワ,ケイイチ
+クサナギ,オサム
+クサノ,ヒデヒコ
+クセ,サトル
+クシダ,チエ
+クスダ,コウイチロウ
+クスキ,チエコ
+クスミ,ユタカ
+マエダ,タツヤ
+マエダ,アキオ
+マエカワ,ヒロコ
+マエカワ,タカオ
+マガリフチ,ヨシオ
+マキノ,チヒロ
+マキノ,ケンジ
+マナベ,マサヨ
+アガツマ,タツユキ
+マルオ,シゲル
+マルタ,ナオキ
+マルヤマ,ユカ
+マルヤマ,マコト
+マルヤマ,タカヒロ
+マルヤマ,ユウジ
+マスダ,テルミツ
+マスダ,トシヤ
+カンバラ,イズミ
+マツバラ,ヒロシ
+ナカムラ,チトセ
+マツダ,クニノリ
+マツダ,マサユキ
+マツイ,ヒロユキ
+マツイ,ヨシノリ
+マツイ,シュウイチロウ
+マツイ,チヨコ
+マツモト,アツシ
+マツモト,ケンジ
+マツモト,マサカツ
+マツモト,シンヤ
+マツオカ,ミホ
+ナルセ,リュウジ
+マツヤ,ノブヒコ
+メザワ,ヒトシ
+ミギタ,マユミ
+ミカミ,ショウジ
+ミムラ,カズヤ
+ヤナギ,コウイチ
+ミナカタ,マサユキ
+ミネ,マサヤス
+ミネ,ヤスエイ
+ミノワ,キヨエ
+ミサワ,マキコ
+ミサワ,タカヒロ
+ミシマ,ツヨシ
+ミタムラ,トモヒロ
+ミト,ノブオ
+ミツヒラ,マリコ
+ミツイシ,マサフミ
+ミツナリ,タカエ
+ミウラ,ヒロカズ
+ミヤベ,ケンジ
+ミヤジマ,シゲキ
+ミヤモト,シゲル
+ミヤモト,トモミ
+ミヤサカ,ユウイチロ
+ミヤサカ,ケンイチロ
+ミヤシタ,ヒロカ
+ミヤシタ,ジュンコ
+ミヤザキ,ノリシゲ
+ミヤザワ,カツミ
+ミヤザワ,タカユキ
+ミゾハシ,タケヒコ
+サカイ,ヒロシ
+ミズノ,ヒロアキ
+ミズオチ,タカオ
+ミズシマ,ケンジ
+ミズタ,ケンジ
+モチハラ,クニ
+モチズキ,コウイチ
+モモセ,シュウイチ
+モリ,ヒロキ
+モリ,アキヒロ
+モリ,チエ
+モリ,ハズキ
+モリ,ヒデキ
+モリ,マモル
+モリカワ,マサヨ
+モリモト,ヤスヒロ
+モリモト,コウイチ
+モリモト,マナブ
+モリムラ,シンイチ
+モリノ,カズミ
+モリサワ,クニカズ
+シマオカ,オサム
+モリシタ,ユカ
+モリヤマ,ヒロコ
+モロオカ,ミツヒロ
+モロトミ,ナオキ
+モトキ,タダトシ
+モトノ,カツユキ
+モトタカ,ヒデキ
+ムグルマ,タクジ
+ムカイ,ヨシミ
+アンドウ,イワオ
+ハネ,コウキ
+ムラカミ,トシカズ
+ムラマツ,ツトム
+ムラシゲ,カズユキ
+シモムラ,ジュン
+ムラタ,マコト
+ミョウガ,タカユキ
+ナガハラ,ヒロシ
+イトウ,カツミ
+ナガイ,ケイタ
+ナガイ,トオル
+イワト,ヨシキ
+タケシゲ,チホコ
+ナガオ,アキヒロ
+ナガオ,ミチノリ
+ナガオ,イサエ
+フクツカ,ケイコ
+ナガサワ,ヒデキ
+ナガサワ,ヤスヒロ
+ナガセ,ススム
+ナガシマ,アキオ
+ナガタニ,フミヒコ
+ナガワキ,ヒロヤス
+ナガヤマ,マサヒデ
+ナゴヤ,モリオ
+ナイトウ,ノブユキ
+ナイトウ,サダミツ
+ナカダ,タクヤ
+ナカガキ,ヒロアキ
+ナカガワ,テルノブ
+ナカガワ,トシヒロ
+ナカガワ,ヤスヒロ
+ナカガワ,マサシ
+ナカジマ,トオル
+ホリウチ,トヨジ
+ナカハラ,カズヒト
+ナカジマ,カズユキ
+ナカジマ,コウジ
+キクタ,ミカ
+ナカジマ,トシアキ
+ナカマル,トシコ
+ナカムラ,ヨシ
+ナカムラ,マコト
+ナカムラ,チエ
+ナカムラ,ノリコ
+ナカムラ,タカオ
+ナカムラ,タカシ
+ナカムラ,リュウイチ
+ナカムラ,シゲカズ
+ハットリ,マナブ
+ナカムラ,サブロウ
+ナカムラ,トオル
+ナカムラ,タツジ
+ミヤモト,イズル
+ナカニシ,ヒデト
+ナカニシ,スナオ
+ナカノ,ヨシアキ
+ナカノ,チユキ
+ナカノ,ヤスヒデ
+ナカノ,オサム
+ナカノ,ツカサ
+ナカノ,ケイ
+ナカノ,ヨシノブ
+ナカオ,タカヒロ
+ナカオカ,マサカツ
+ナカシマ,シンイチ
+ナカシマ,カズナリ
+シナダ,アキラ
+ナカタ,カズナリ
+ナカヤ,タクジ
+サイカワ,ヒトシ
+ハセガワ,ヒロシ
+ナカザワ,マミ
+ナマツ,マミ
+ナリタ,タクジ
+ナスノ,タカアキ
+ネモト,ミネアキ
+ネオイ,マコト
+ネズ,ナオキ
+ニイムラ,カズマサ
+ニイヤマ,チカゲ
+ニイヤマ,ヒロシ
+ニノミヤ,ヒロシ
+ニノミヤ,カズアキ
+ニシ,タカオ
+ニシダ,マサノリ
+ニシダ,マサシ
+ニシドノ,ヨシノリ
+ニシカワ,アキラ
+ニシキド,アキヒコ
+ニシムラ,アキラ
+ニシナ,ダイイツ
+ニシオ,ジュンジ
+イノウエ,カズトシ
+ニシザワ,タカアキ
+ニシズカ,トシヤ
+ニッタ,ヒトミ
+ノダ,ワカコ
+ノムラ,サトシ
+ノノムラ,ヒロユキ
+ノリハシ,イサオ
+ヒノ,カズユキ
+ノザキ,シン
+ノザワ,マサヒロ
+ヌマノ,ノブコ
+オビセ,ヒロキ
+オボカタ,ケンスケ
+オチ,アキヒロ
+ハセガワ,ミツアキ
+マナベ,ヒロユキ
+オダ,カツミ
+オダ,シンスケ
+オダ,ヒデヒロ
+オダ,ジュンコ
+オダクラ,ギョ
+オガタ,ヒトシ
+オガワ,トシヒコ
+アベ,ヨウスケ
+オグチ,コウキ
+オグマ,マサヨシ
+オグラ,タマキ
+オグラ,ヒデオ
+ムサシ,ミツル
+オグラ,マサヒコ
+オグリ,マコト
+オオバ,ケンジ
+オオハシ,ヨウイチ
+オオイ,ヒロカズ
+オオイエ,ケンジ
+オオクボ,ハルシ
+オオクマ,イサム
+オオクマ,ヒロシ
+オノ,カツミ
+オオヌマ,カヨコ
+タカセ,ヨシヒデ
+オオサワ,ヒデキ
+オオサワ,ヒロシ
+オオサワ,ケンジ
+オオサワ,ソウスケ
+オシマ,マリコ
+オシマ,ヒロオ
+オシマ,ミツヒロ
+オオタ,シンジ
+オオタカ,ヒロユキ
+オオタキ,タケシ
+オオタニ,ヨウジ
+オオツカ,ヒロノブ
+オオツカ,テツオ
+オオワ,マコト
+オオワダ,ヒロノリ
+オオヤマ,ヒトシ
+オゾネ,ノブユキ
+オカ,ヤスシ
+オカ,ヒロアキ
+オカ,カズシゲ
+オカ,タカノリ
+オカダ,タカヨシ
+オカダ,ヒトシ
+オカダ,マサユキ
+オカダ,トヨアキ
+オカドメ,キヨカツ
+オカモト,ヤスシ
+オカモト,コウジ
+オカモト,ヒロシ
+オカムラ,リカ
+オカノ,アキラ
+オカノヤ,ミツル
+オカオ,ヤスジ
+オカザキ,ヒデオ
+オキ,ヒロユキ
+オキモト,マサヒコ
+オクムラ,トモコ
+オクムラ,ユキヒコ
+オクノ,アイ
+オマタ,アキヨシ
+オニキ,ヒロユキ
+オニツカ,マサアキ
+オノデラ,アキラ
+オノザワ,ヒデツグ
+オオニシ,ケン
+オオニシ,クニヨシ
+オオツカ,ナオヒサ
+オサダ,トモノブ
+オサキ,タカシ
+オサナミ,シズヨシ
+オヤマダ,ヤスノリ
+オザワ,コウジロウ
+オザワ,シロウ
+オザワ,ヤスノリ
+サエグサ,ヤスノリ
+サエキ,ヨシヒロ
+ナカジマ,タケシ
+サイタ,チエコ
+オガワ,ヤスハル
+サイトウ,カズヒサ
+サイトウ,タカヒコ
+サイトウ,ヨシノリ
+サカイ,リョウジ
+サカイ,ヒデノリ
+サカイ,ケイジ
+サカイ,タケシ
+サカイ,タク
+サカイ,ショウゴ
+サカイリ,ヒロユキ
+サカキ,キョウコ
+サカマ,マサノリ
+サカマキ,マサトモ
+サカモト,マサトシ
+サカモト,サトル
+サカモト,シュウイチ
+サカタ,タカシ
+サカウエ,タカユキ
+サカズメ,タクミ
+ナカノ,トモヒロ
+サクマ,ヨシヒコ
+サンボンマツ,カズヒロ
+サノ,タケシ
+サノ,トシフミ
+ササガワ,ユタカ
+ササキ,ユリコ
+ササキ,ヤスユキ
+ササキ,カズヨシ
+ササキ,コウジ
+ササザワ,トシユキ
+サトウ,ヤスシ
+サトウ,カツヒト
+サトウ,ヨシタカ
+サトウ,タカユキ
+サトウ,ノブタカ
+サトウ,ユウスケ
+サトウ,ヒデユキ
+サトウ,サトシ
+サトウ,オサム
+サトウ,マユミ
+サトウ,ノブオ
+サトウ,ヒデノリ
+サツマ,ミワコ
+サワグチ,ナオト
+サワイ,ミチヒロ
+サワラギ,ヤスオ
+サワタニ,クニオ
+セイタ,アツシ
+セキ,マサマロ
+セキ,ノブヒロ
+セキ,ノリヤス
+セキハラ,アキラ
+セキネ,ユウスケ
+セキネ,ヒロユキ
+シライシ,マサヒロ
+センガ,ノブオ
+セノ,ノリユキ
+セシモ,シュウイチ
+セト,タツオ
+セトグチ,タツヤ
+テルヤ,ユウイチ
+シイバ,リカ
+シバノ,トモユキ
+シバサキ,イクコ
+シバタ,テツロウ
+シブサワ,マサフミ
+シブサワ,ヨシヒロ
+シチ,ダイエイ
+シチタ,タカユキ
+シゲヒサ,トオル
+シゲサワ,ミユキ
+ムラタ,リュウタロウ
+シマズ,タカツグ
+シマズ,タツシ
+キシダ,タカシ
+シミズ,ミチオ
+シミズ,エイイチ
+シミズ,ヒロシ
+シミズ,ハヤトシ
+シミズ,クンジ
+シミズ,ケイコ
+シミズ,ヒロシゲ
+ミヤコシ,トシヒロ
+シモミチ,マリコ
+ナカバヤシ,カオル
+シモオサ,タケシ
+シモツジ,シンジ
+シナダ,チカシ
+シナガワ,ノブオ
+シンモト,マサヒロ
+シノ,ヨシノリ
+シノダ,リュウタロウ
+シノダ,ハツエ
+シノザキ,ショウジ
+シオタニ,テツヒロ
+シオヤ,ツカサ
+シラベ,イッセイ
+シラガキ,ヨシハル
+シライ,カズヒコ
+シライシ,エツヒロ
+シライシ,ヒロシ
+シラキ,カズヒロ
+シズタ,ケイコ
+ショウジ,ケイタ
+ソノダ,ミドリ
+スドウ,モトユキ
+スエダ,セイコ
+スエツグ,タカシ
+スガタ,ヤススケ
+スガワラ,ヨシアキ
+スギノ,ヨシノブ
+スギサキ,ユウジ
+スギシマ,マサル
+ナガイ,マリコ
+スギヤマ,トシヒロ
+スミ,カツヒロ
+スミタニ,シンイチ
+スサキ,ヒロユキ
+ススキ,コウイチ
+スヤマ,トモノリ
+スズキ,ミチオ
+スズキ,ケンイチ
+スズキ,コウイチ
+タジマ,サトキ
+スズキ,タクヤ
+スズキ,ヤスコ
+スズキ,ユタカ
+スズキ,アキコ
+スズキ,アツシ
+スズキ,ヒデトモ
+スズキ,ヒデトシ
+スズキ,ヒデトシ
+スズキ,ヒロキ
+シュクヤ,ジュンイチ
+タチバナ,カヨ
+タチヤマ,コウイチ
+タドコロ,マサアキ
+タガワ,マサヒト
+タグチ,モトカズ
+タグチ,ナオユキ
+タグチ,ノブヒサ
+タイ,ノリオ
+タジマ,サチエ
+タカダ,サトル
+タカダ,シゲノブ
+タカギ,ススム
+ミヤモト,タカシ
+タカハマ,テツオ
+タカハシ,ヤスアキ
+タカハシ,マサノリ
+タカハシ,ツトム
+タカハシ,マサユキ
+タカハシ,マコト
+タカハシ,ケンリュウ
+タカハシ,トシヒサ
+タカハシ,ヤスシ
+タカハシ,ヒロユキ
+タカハシ,ヤスノリ
+タカハシ,ヒロシ
+タカハシ,モトヤス
+タカハシ,ユキエ
+タカハシ,ヤスコ
+タカハシ,タカシ
+タカハシ,ヨシヒサ
+タカハシ,トシユキ
+タカハシ,サトコ
+タカハシ,ヒデキ
+タカハシ,イチロウ
+タカハシ,ノブアキ
+タカハシ,ミツル
+タカナシ,シン
+タカノ,カツノリ
+タカオカ,テツヤ
+タカセ,シゲキ
+タカシナ,コウセイ
+タカシナ,ダイサク
+タカタ,ヒロアキ
+タカヤマ,ヒロユキ
+タカヤナギ,ジュン
+タケバヤシ,カツミ
+ミカミ,ケイスケ
+タケイ,マコト
+タケキ,マシュウ
+タケモリ,ノブヒコ
+タケムラ,オサム
+タケウチ,ケン
+タケヤ,ショウイチ
+タケヤマ,トシアキ
+タキグチ,トシカズ
+タキシタ,トシユキ
+タキザワ,アキラ
+タマイ,シゲル
+タミヤ,アキコ
+タムラ,ヨウスケ
+タナベ,ヒロユキ
+タナハシ,ヨシユキ
+タナカ,シゲト
+タナカ,ヒデノリ
+タナカ,ヒロユキ
+タナカ,ヒロキ
+タナカ,ユキコ
+タナカ,ヒロコ
+タナカ,ジュンイチ
+タナカ,シン
+タナカ,マサカズ
+タナカ,ジュンコ
+コダマ,ヨシヒコ
+タナカ,アサオ
+タナカ,ノリアキ
+タナカ,サトシ
+タナカ,オサム
+タナムラ,サトシ
+タンバ,カズナリ
+タニグチ,ケイジ
+タニグチ,ジュンコ
+タニイ,ゲン
+タニムラ,トモノリ
+タニワキ,オサム
+タルイ,ショウジ
+タサキ,カズユキ
+タシロ,マサヤ
+タテイシ,ナオヤ
+タウチ,リョウコ
+タウラ,ヒロアキ
+テラダ,ヨシオ
+サトウ,アキラ
+テラニシ,モリユキ
+テラシタ,ヒロシ
+テルキナ,アキヨ
+トベ,エリコ
+トウゴウ,タカハル
+トグチ,エイジ
+トジ,カツノリ
+トミナガ,マサト
+トミナガ,ヤスマサ
+トミオカ,ナオキ
+トミタ,スグル
+トミヤマ,ヒロタカ
+トネガワ,アキラ
+トシナリ,ジュンコ
+トヨダ,コウジ
+トヨダ,カツヤ
+トヨダ,マサヒコ
+オオモリ,ヨウイチロウ
+トズカ,ヒデオ
+ヤマカワ,リュウヘイ
+ツボイ,ジュンコ
+ツチハシ,カツミ
+ツチノ,ミノル
+ツチヤ,ヨシヒロ
+マキ,ヒデノリ
+ツダ,ミツノブ
+ツガワ,ケンジ
+ツジ,サトシ
+ツジ,トヨカズ
+ツジ,ヒロシ
+ツカダ,ヒロユキ
+ツカモト,キヨシ
+ツムラ,タカユキ
+ツナシマ,ユキオ
+オクヤマ,マモル
+ツノダ,サダハル
+ツノガイ,ヤスノリ
+ツシマ,ノボル
+ツツミ,ヒロシ
+ツズキ,カツミ
+ツルオカ,ヒデト
+ウチダ,ヒサシ
+ウチダ,マサル
+ウチダ,マサフミ
+ウチダ,ヤスシ
+ウチノ,アキヒコ
+ウチノクラ,メグミ
+ウチヤマ,ミチハル
+ウチヤマ,タカノリ
+ウチヤマ,ノブヒロ
+ウダ,ケイジ
+ウエダ,シゲル
+ウエダ,ナツコ
+ウエダ,ヨシト
+ウエダ,トシハル
+ウエハラ,シゲル
+ウエハラ,マサオ
+ウエハラ,シンジ
+ウエジマ,ヒロユキ
+ウエキ,エリコ
+ウエムラ,クニヒロ
+ウエノ,タカヒデ
+ウエノ,トクヒロ
+ウエノ,ユウジ
+ウエヤマ,ヨシコ
+ウイ,ケイスケ
+ウメダ,ショウイチ
+ウメダ,アツシ
+ウメダ,チハル
+ウメダ,ケンジ
+ウメハラ,マコト
+ウメカワ,マサノリ
+ウルシダニ,マサユキ
+イノウエ,タケシ
+ウサミ,ユウコ
+ウシマル,タツヒロ
+ウシヤマ,カツユキ
+ウスイ,コウヘイ
+ウスイ,オサム
+ウツミ,ジロウ
+ササガワ,カズアキ
+ソメヤ,ケンジ
+ワダ,マサオ
+ワダ,マサヨシ
+ワダ,ヨシアキ
+タノウエ,ユウイチ
+ワシダ,ヒデアキ
+ワタイ,ミチアキ
+ワタナベ,マサユキ
+ワタナベ,アキオ
+ワタナベ,カズヒサ
+ワタナベ,サトシ
+ワタナベ,ヒデキ
+ワタナベ,トオル
+ワタナベ,ヒロユキ
+ワタナベ,アキラ
+ヤギ,カズオ
+ヤゴ,マサヒコ
+ヤハギ,ナオフミ
+ヤクシ,オサム
+ヤマダ,レイキ
+ヤマダ,タカシ
+ヤマダ,トミヤス
+ヤマダ,トシヒロ
+ヤマダ,トシオ
+ヤマダ,ヨシオ
+ヤマダ,ユカ
+ヤマガタ,タケシ
+ヤマギシ,マサエ
+ハリ,マサユキ
+ヤマグチ,カツシ
+ヤマグチ,トモカズ
+ヤマグチ,トモミ
+アオツカ,ヨシサト
+ヤマグチ,マサノリ
+ヤマジ,ミチオ
+ヤマモト,ヒロノリ
+ヤマモト,ジュンイチ
+ヤマモト,ケンジロウ
+ヤマモト,カズヒロ
+ヤマモト,ヒロフミ
+ヤマモト,タカユキ
+ヤマモト,アキヒデ
+ヤマモト,トシノリ
+ヤマモト,エイジ
+ヤマモト,マナブ
+ヤマモト,トシユキ
+ヤマモト,ナオフミ
+ヤマムラ,トモカズ
+ヤマナカ,ユタカ
+ヤマシナ,シンジ
+ヤマシタ,ユキヒロ
+ヤマシタ,リンジュ
+ヤマシタ,ケンジ
+ヤマシタ,ヒトシ
+ヤマテ,ケイ
+ヤマウチ,アキラ
+ヤマザキ,ユキヒサ
+ヤマザキ,ノボル
+ヤマザキ,ヒトシ
+ヤナギ,カズオ
+ヤナギダ,コウイチロウ
+ヤナギダ,ミホ
+ヤナイ,サトシ
+ヤナカ,タダシ
+ヤスダ,マサミ
+ヤスダ,イワオ
+ヤスダ,セキコ
+ヤスモト,カズヤ
+ヤツカ,ナオキ
+ヤザワ,ミズホ
+ヨダ,テツヤ
+ヨドガワ,ノリオ
+ヨダ,ヒロノリ
+ヨコハタ,ヒロヤ
+ヨコヤマ,イワオ
+ヨコヤマ,シゲル
+ヨモリ,アキヨシ
+ヨネモチ,ヨシツグ
+ヨロズヤ,ナオヒサ
+ヨシダ,タツゾウ
+ヨシダ,タカシ
+ヨシダ,ノリオ
+フジサキ,コウイチ
+ヨシダ,ヒトシ
+ヨシダ,テツオ
+ヨシマツ,チハル
+ヨシモト,ユウスケ
+ヨシムラ,カツヤ
+イシバシ,タダシ
+ヨシノ,タツヤ
+タカノ,ケイゴ
+ユハシ,ショウコ
+エダヒロ,ミドリ
+ハラダ,マサユキ
+ハヤサカ,リュウセイ
+イナガキ,マサキ
+イノウエ,サトシ
+イシハラ,タカシ
+コジマ,ヤスヒサ
+コスギ,シンゴ
+クボタ,ナルミ
+モリ,タカシ
+ナカバヤシ,ナオヒサ
+ネモト,タカシ
+ニノミヤ,ケイ
+オガワ,メグミ
+オオタニ,マサコ
+セキ,クミ
+シブタニ,ツトム
+シント,ヒロユキ
+ソブエ,ヒトシ
+タカハシ,タケシ
+タカセ,マミコ
+トヨダ,ヒロヒデ
+ウエダ,シンタロウ
+ヤマモト,ヤスユキ
+ヤマズミ,ヒロシ
+ヨシダ,コウジ
+アサカイ,ナルトシ
+フクタ,カズミ
+カワサキ,カズオ
+ヒロセ,ヨシカズ
+カサハラ,セツコ
+オザワ,ケイイチ
+カトウ,ケイイチ
+ナカムラ,セイエイ
+タグチ,ヒロム
+アダチ,リョウセイ
+アカシ,ヨシヒサ
+アキヤマ,エミ
+アオキ,ショウジ
+アラキ,トモタケ
+アサヒ,フミノリ
+アサノ,トシヒコ
+アワノ,オサム
+アワノ,ジュンジロウ
+ドウジ,ナオユキ
+ドウゾノ,セイヤ
+フチカミ,カツロウ
+フジイ,ケンジ
+フジイ,コウイチ
+フジイエ,ノブヤ
+コワ,シュンイチ
+フジシロ,マサオ
+フジタ,ヨウコ
+フジタ,ヒロユキ
+フジワラ,コウジ
+フクダ,ナオユキ
+フクダ,タツオ
+フクダ,ケン
+サイトウ,オサミ
+フクヤマ,ジュンイチ
+フルハタ,コウジ
+ゴトウ,ヒロカズ
+ハムロ,オサム
+ハセ,タクヒサ
+ハシモト,マサヒロ
+ハシモト,ジュンイチ
+ハットリ,ジュン
+ハヤシ,カツヒコ
+ハヤシ,トシアキ
+ハヤシ,マサカズ
+ハヤシ,シゲミツ
+ハヤシ,メイ
+ハヤシ,マサツグ
+ヒビ,ヒロユキ
+ヒグマ,タクヤ
+ヒライ,ヒロタカ
+ヒラカワ,ツネトモ
+ヒラノ,カズヒコ
+ヒロナカ,ミノル
+ホリグチ,ノブアキ
+ホサカ,サトシ
+ホソヤ,セイジ
+イチイ,シゲユキ
+イチカワ,モトヒロ
+イグマ,エイイチ
+イイサカ,マユミ
+イカワ,イワオ
+イケダ,アユコ
+イケダ,イクジロウ
+イケガミ,マモル
+イノウエ,シロウ
+イノウエ,ヒサアキ
+コバヤシ,トクジロウ
+イシバシ,ヤスヒサ
+イシダ,ヨシユキ
+イシマル,ミワ
+イシズカ,トシユキ
+イソ,ヒデアキ
+イトウ,ヒデアキ
+イトウ,アキヒコ
+イトウ,マサヒロ
+イトウ,サワコ
+イトウ,テツヤ
+イトウ,ヨシミネ
+イトウ,ケンイチ
+イワタ,サトシ
+カリヤ,セイイチ
+ガサキ,シゲオ
+カガ,カズヒサ
+カゲヤマ,ツヨシ
+カジナミ,タカユキ
+カミヒラタ,ヒロユキ
+カナモリ,タツヤ
+カネコ,テルオ
+カネコ,ヨシオ
+カニワ,アキラ
+カサマ,ノリマサ
+カセ,ヒロユキ
+カシムラ,フミトシ
+カタオカ,ケンジ
+カトウ,ジュンコ
+カトウ,ケイジ
+カトウ,コウタ
+カトウ,アキヒコ
+カトウ,ノブヒデ
+カワチ,ケイコ
+カワグチ,チサト
+カワノ,ミツオ
+カワシマ,テツジ
+キクチ,トモアキ
+キモト,ヨシヒロ
+キムラ,カツヤ
+キノシタ,テツ
+キシハラ,ツグアキ
+キシカワ,ヒデユキ
+キタ,リエ
+キタガワ,ミチハル
+キタノ,リエコ
+キタヤマ,セイコ
+キヨオカ,マサヨ
+キヨセ,ツカサ
+コバリ,タテキ
+コバヤシ,カオル
+コバヤシ,コウタロウ
+コボリ,タマミ
+コイワ,タケシ
+コジマ,フミヨ
+ハシモト,コウイチ
+コミヤマ,タカヒロ
+コンド,トモユキ
+コンド,ノリコ
+コンド,ヨウスケ
+コシカワ,アキフミ
+コテガワ,ケンジ
+コワ,ノブユキ
+クボタ,ショウイチ
+クボタ,ヒロユキ
+クドウ,ハヤト
+クガ,ヨシヒロ
+モリ,ユキヒロ
+クニタケ,ハジメ
+クラカケ,ヒロカズ
+クリ,マサヒト
+クサフカ,シノブ
+クワバラ,トオル
+マチダ,ヒロユキ
+マルヤマ,ユキ
+タケウチ,アキオ
+マツバ,アツシ
+マツバラ,タケロ
+マツダイラ,マキ
+マツモト,ヨリコ
+マツモト,ヨシアキ
+マツナガ,ミホ
+マツオ,マサヤ
+マツオ,ノリユキ
+マツオ,シンヤ
+ミクニ,ヤスシ
+ミナガワ,ワタル
+ミナガワ,シゲル
+ミノテ,トモアキ
+ミタ,ヨシクニ
+ミトメ,タケシ
+ミツヤマ,シュウイチ
+ミヤチ,タカフミ
+ミヤジ,コウジ
+ミヤジマ,ミツオ
+ミヤタ,ケイコ
+ミヤザキ,キヨアキ
+ミヤザキ,マコト
+ミヤザト,ヨシナリ
+ミヤザワ,ヒロキ
+ミゾグチ,モトコ
+ミズイ,マサヨシ
+モンノ,エイジ
+モリ,ミツヒロ
+モリ,ノリスミ
+モリタ,クルミ
+モリタ,トシアキ
+モリヤマ,マリコ
+ムラカミ,リュウイチ
+ムラカミ,コウイチロウ
+ムラカミ,ミノル
+ムラマツ,シンスケ
+ムロゾノ,ヒロアキ
+ナガブチ,ヒロシ
+ナガノ,ミツル
+ナガセ,リュウイチ
+ナガタニ,シホ
+ナゴヤ,ヒロアキ
+ナカガワ,カオリ
+ナカミチ,ショウ
+ナカムラ,ジュンイチロ
+ナカムラ,マサノリ
+ナカノ,ヒロシ
+ナカシマ,ヒロノリ
+ニシダ,ジュン
+ニシハラ,アツト
+ニシムラ,シンヤ
+ニシオカ,カズヒコ
+ノグチ,ノボル
+ノセ,マサズミ
+オバタ,ユウジ
+オチアイ,イクコ
+オチアイ,ヒデヒコ
+オガワ,タカシ
+オガワ,マサト
+オガワ,タミヤ
+オガワ,カツトシ
+オギノ,マユミ
+オグラ,タカアキ
+コンド,ヤスユキ
+オオエ,マサミチ
+オオガキ,ジロウ
+オオニシ,ノリアキ
+オオノ,マサミチ
+オオタ,ヒロシ
+オシロ,カズシゲ
+オオタ,タカシ
+オオタシロ,ヒデキ
+オオツ,マサカズ
+オオツ,メグミ
+オオヤギ,エイジ
+オオヤマ,チハル
+オカモト,ヒロブミ
+オカヤマ,ミツヨリ
+オケタニ,タツコ
+オクヤマ,クミコ
+オノデラ,ヒデトシ
+オザワ,ミノル
+サイトウ,カズヒデ
+サイトウ,テルオ
+サイトウ,タカノブ
+サカグチ,ヒロカズ
+サカナカ,モトム
+サカニワ,ヨリコ
+サカウチ,トシタカ
+サクライ,ツトム
+サクライ,マサユキ
+サノ,タクヤ
+ササキ,マサミ
+ササキ,エリ
+ササキ,リエ
+ササマ,マサカズ
+サトウ,タケヤ
+サトウ,ヒロユキ
+サトウ,タカシ
+サトウ,ミワ
+ニシマタ,テツオ
+サワダ,マサヒサ
+センバ,ユウイチ
+セト,ヨシノリ
+シブヤ,ユキオ
+シイ,ミサコ
+シマダ,コウヘイ
+シマダ,ミエ
+オカモト,マサトシ
+シナガワ,サチエ
+シンカワ,ヒサヤ
+シンキュウ,マサユキ
+シノダ,テルエ
+シノハラ,セイイチ
+アサカワ,カオル
+シオハラ,マサト
+シロタ,カツヒロ
+スギモト,カズヒデ
+スギヤマ,キヨタカ
+スグチ,ノブコ
+モロトミ,ハルコ
+スズキ,マサフミ
+タグチ,アキオ
+タグチ,ユウジ
+タハラ,ヒロユキ
+タカギ,ヨシオ
+タカハシ,カズオ
+タカイ,ケンジ
+タカヤマ,カズコ
+タケ,ナオキ
+タケバヤシ,リュウジ
+タケカワ,ジュンコ
+タケウチ,カホル
+ワタナベ,コウジ
+タケウチ,ヒデキ
+タミヤ,マサカズ
+タムラ,ヒロシ
+タナベ,マサヒロ
+タナカ,ケイコ
+タナカ,ノブコ
+タナカ,ツヨシ
+タニグチ,アツシ
+タニグチ,カズヒロ
+タニムラ,タツオ
+タノウエ,アキヒロ
+タルサワ,アキコ
+タシロ,トシハル
+テラダ,ユキヒコ
+トウガ,ヒデミネ
+トガシ,シゲオ
+トウゴウ,シンヤ
+トクナガ,アヤコ
+トモノ,カズミ
+トヨダ,ヨウジロウ
+ツチヤ,ヒロアキ
+ツカハラ,ノブヒロ
+ウラサキ,ユウジ
+ワダ,トモヤス
+ワダ,レイコ
+ワタナベ,マサトシ
+ワタナベ,フミオ
+ヤギヌマ,ケイコ
+ヤマダ,トシアキ
+ヤマダ,ヒサシ
+ヤマダ,ケイジ
+ヤマモト,マサアキ
+ヤマモト,ヒデト
+ヤマモト,タツヤ
+ヤマモト,ユキヒロ
+ヤマナカ,チヒロ
+ヤマナカ,カオル
+ヤマシタ,マサヒロ
+ヒグチ,ジュンジ
+ヤマザキ,フミノ
+ヤナギ,ヒロシ
+ヤスダ,ノブユキ
+ヤスエ,トシヤ
+ヨコエ,ノブアキ
+ヨコヤマ,リエコ
+ヨネハラ,コウイチ
+ヨネミツ,マコト
+ヨリマツ,トモコ
+ヨシダ,フミヒロ
+ヨシノ,ミツヒロ
+ヨシタキ,オサム
+ユカワ,ジュンヤ
+ユリ,トモオ
+モリ,タカヒサ
+ササキ,カツヒコ
+シラハマ,タケヒロ
+テンパク,ユウイチロ
+ウチダ,ナオヤ
+ヤマウラ,トオル
+マツグマ,フミコ
+アベ,ヒロユキ
+アベ,カツミ
+アベ,カズオ
+アベ,ナオアキ
+アダチ,ナナオ
+アイハラ,ツヨシ
+アジマ,ヤスアキ
+アカサカ,トオル
+アキモト,コウゾウ
+アキヤマ,タカシ
+アキヤマ,タツヤ
+アクネ,ヒロシ
+アマノ,マナブ
+アマノ,チアキ
+アメミヤ,マサツグ
+アンドウ,ミキ
+アンドウ,ミワ
+アンドウ,カズオ
+アンジキ,ユウコ
+アンペイジ,シュンイチ
+アオキ,ヨシコ
+アオキ,シゲハル
+アオキ,ユキコ
+アオキ,ジュン
+アオキ,トシアキ
+ハラシマ,リカ
+アオキ,ツトム
+アオキ,ナオヒサ
+アオヤギ,タカユキ
+アオヤマ,ヨウイチ
+アオヤマ,ケイスケ
+アライ,コウイチ
+アラキ,マコト
+アラキ,カツジ
+アラタ,ミキ
+アラヤ,シンイチ
+コバヤカワ,ヤスヒロ
+アリタ,ナルヒト
+アサバ,ヨシユキ
+アサカ,トモチカ
+アサクラ,タツオ
+アサノ,シュウジ
+アサノ,トモアキ
+アシベ,マサヒコ
+アワミヤ,ヒロユキ
+アザミ,ツトム
+アゼヤナギ,ヒロミ
+アズマ,リエ
+アズマ,タカユキ
+アズマ,ナオユキ
+ババ,ヨシカズ
+ババ,カツユキ
+ババ,ダイスケ
+バナカ,カズヤ
+サタケ,ケイコ
+チバ,モトハル
+チギラ,ノブヒコ
+チハラ,タカフミ
+チカイ,アツシ
+チュウマ,タケシ
+ダイ,マサヒロ
+ダイオ,ヒデキ
+ダテ,ヒロシ
+デグチ,コウジ
+デワ,エミコ
+ドイ,タイゾウ
+エビサワ,ヒロミツ
+ナカムラ,タカコ
+エイモリ,ハルミ
+エンド,ナオキ
+エンド,タカオ
+エノモト,ケイコ
+フジイ,ヒロカズ
+フジイ,ケンイチロ
+フジイ,タツノリ
+フジイ,ミツヨシ
+フジイ,トシアキ
+フジカワ,シノブ
+フジモリ,アキコ
+アオキ,アキラ
+フジモト,ナオヤ
+フジオカ,テツロウ
+フジタ,ヤスヒサ
+フジタ,ムツオ
+フカオ,シンイチ
+フクダ,カツヒコ
+フクダ,ヒロシ
+フクイ,ヒデオ
+フクイ,コウジ
+フクモト,ヒデタカ
+フクシマ,ヒデノブ
+フクシマ,ノブコ
+ヒノ,サチ
+フクザワ,キョウコ
+フクザワ,ミキコ
+フナダ,ユウコ
+フルダテ,ケイコ
+フルヤ,ケイスケ
+フタムラ,ミキヤ
+ナカムラ,モトヒサ
+ゴトウ,シゲキ
+ゴトウ,カズヤ
+ゴトウ,カイチロウ
+ゴトウ,ヨウコ
+ハバ,ヨウコ
+ハチヤマ,マサミ
+ハギワラ,シン
+ハマベ,タカユキ
+ハマダ,ヨシミ
+ハマダ,タカヒデ
+マエオカ,ヒトシ
+ハナミ,ヤスヒデ
+ハナオカ,アキコ
+セザイ,ナオキ
+ハラ,リョウジ
+サトウ,セイゴ
+ハラ,アツシ
+ハラダ,ナツミ
+ハラダ,エイイチ
+ハラダ,カズヒコ
+ハラダ,マサアキ
+ハラダ,ミツノリ
+ハリマ,ナオキ
+ホンマ,ノブアキ
+ハルヤマ,シゲル
+ハセ,ヨウイチ
+ハセガワ,タツオ
+ハセガワ,ヤヨイ
+ハセガワ,ケンタロウ
+ハセガワ,アキヒコ
+ハシグチ,ヒトシ
+ハシモト,カツコ
+ハシモト,カズヤ
+ハシズメ,コウタロウ
+ハシズメ,ミワ
+ハシズメ,シュンスケ
+ハタ,シンイチロウ
+ハタノ,チカラ
+ハタノ,カズトモ
+ハトリ,ナオキ
+ハットリ,タケシ
+ハットリ,ヨウイチ
+ハットリ,アキヒコ
+ハットリ,ユキ
+ハットリ,サトシ
+ハットリ,マサキ
+ハットリ,ワタル
+ハヤカワ,ケイコ
+ハヤカワ,ナオミ
+ハヤミ,スミヒト
+ハヤシ,ヒデアキ
+ハヤシ,ユミコ
+ハヤシ,マサタカ
+ハヤシ,マユミ
+ハヤシ,ヤスヒロ
+ササタニ,アキラ
+ハヤシ,マサノリ
+ハザマ,セイイチ
+ヘンミ,カナコ
+ヒビ,トモミ
+ヒダカ,トウコ
+ヒダカ,ユウコ
+ヒダカ,タロウ
+ヒエダ,ミチカズ
+ヒガキ,ショウジ
+ヒガシ,ヨシヒサ
+ヒイドメ,ヒロミチ
+ヒジクロ,セイイチ
+フクイ,イサオ
+ヒマ,ヨシキ
+ヒオキ,トウメイ
+ヒライ,マリ
+ミキ,マサユキ
+ヒラノ,フキヨ
+ヒラノ,カズヒロ
+ヒラタ,シロウ
+ヒラツカ,フミカズ
+ホダ,ヒロキ
+ヒラヤマ,ナオコ
+ヒロベ,キクミ
+ヒロイ,マサヒロ
+ヒロサワ,マサヒロ
+ヒロサワ,ナオコ
+ヒロスエ,ジュンコ
+ヒロタ,オサム
+ハヤマ,ユウコ
+ヒロワタリ,サユリ
+ヒサモト,ミカコ
+ヒサノ,ヨシアキ
+ヒサユキ,ユカリ
+ヒシダ,ヒロシ
+ヒシタニ,ヤスシ
+ワダ,フミエ
+ヒヤマ,ノブヒコ
+アリクラ,ユタカ
+ホンダ,ミノル
+ホンダ,ケイスケ
+ホンゴウ,マサト
+ホンマ,ユウイチ
+ホンマ,アキノブ
+マツモト,ケンタ
+ホリ,マナブ
+ホリ,アキト
+ホリベ,トシユキ
+ホリエ,アキノリ
+ホリエ,マサヒコ
+ホリエ,タダシ
+ホリウチ,ヨシフミ
+ホシバ,トオル
+ホシカワ,ヒデオ
+カトウ,ナオキ
+ホシナ,コウイチ
+ホリ,ノリユキ
+ホシノ,タカシ
+ホソダ,ノブオ
+ホッタ,サオリ
+ホチド,タカヤ
+イブカ,ヨシテル
+イチカワ,ヒトシ
+イチカワ,マリコ
+イチマス,ツトム
+イチノセ,カツミ
+イデ,マサヒコ
+イガラシ,マサト
+イガタ,エイイチロウ
+イイ,ユリコ
+イイダ,マサヨシ
+イイダ,マサユキ
+イイダ,シンジ
+イイノ,イチロウ
+イイヨリ,ミチハル
+イイズカ,マコト
+イカルギ,カツヤ
+イカワ,ケイスケ
+イケチ,マミ
+イケダ,コウイチロウ
+イケダ,モトハル
+イケダ,タカコ
+イケダ,タカユキ
+イケガミ,トモヒロ
+イケジリ,カズヤ
+イケタキ,クニオミ
+イクモト,シン
+イマイ,タケシ
+イマイ,レイコ
+ホソイ,ケンタロウ
+イマイ,サブロウ
+イマニシ,タケシ
+イナダ,ハジメ
+イナガキ,マナブ
+イナゲ,ケンイチ
+ハザマ,ヒサモト
+イノ,ジュン
+イノマタ,ケイタロウ
+イノウエ,リエ
+ヤスカワ,タカヒト
+ハル,トオル
+イノウエ,テルオ
+イノウエ,ツトム
+イノウエ,フミノリ
+イノウエ,ヒロヒサ
+イオキ,マサミチ
+イリエ,ノブユキ
+イサカ,トオル
+イサカ,ワタル
+オオモリ,ケンイチロ
+イシバシ,マナブ
+イシダ,ケイイチ
+イシダ,ウララ
+イシハラ,ヨシト
+イシハラ,ハルオ
+ヒラト,ヒデオ
+イシイ,ケイジロウ
+イシイ,ミキオ
+イシイ,アツシ
+イシイ,ハルオ
+イシイ,ケイジ
+イシイ,マサコ
+ハネイシ,シンスケ
+イシイ,ヤスシ
+イシカワ,ヨウコ
+イシカワ,ヨウスケ
+イシカワ,ヨシヒコ
+イシカワ,ユカ
+イシカワ,ノリコ
+イシオカ,ヨシユキ
+イシツカ,トシユキ
+イシワタ,アリヒロ
+イシザカ,コウジ
+イシザカ,エイイチ
+イシザキ,コウジ
+イシズキ,ナオト
+イソ,シゲヒト
+イソガイ,ユウコ
+イタバ,ユウジ
+イトウ,イノリ
+イトウ,マサヒロ
+イトウ,マサヒロ
+イトウ,バン
+イトウ,サトシ
+イトウ,アツシ
+ヒダカ,ヒデツグ
+イトウ,マサヒロ
+イトウ,ユキ
+ニシ,シンイチ
+イワダレ,ヨシノリ
+イワハシ,ユウコ
+イワキ,ミズホ
+イワモト,ヨシノリ
+イワサキ,ノブカズ
+ヒラツカ,ヒロシ
+イワサキ,ヒロユキ
+イワサキ,マサユキ
+イワサキ,ヒロユキ
+ジングウ,サトコ
+イワシゲ,マコト
+イワタ,ヒロシ
+ジングウ,ヨシノリ
+ゴ,ヤスカズ
+カガ,カツヤ
+カガブ,シンジロウ
+カギヤマ,ヒデオ
+カイ,ユウゾウ
+カイダ,ノリユキ
+カイダ,ノリマサ
+カマチ,ヒロユキ
+カマダ,マサコ
+カマホリ,トモヒコ
+カマタ,コウイチロウ
+カメダ,マユミ
+カメイ,フミヒコ
+カミノ,タケシ
+カミノ,ヒトシ
+カミトノ,リュウジ
+カミヤ,ノブユキ
+カミヤ,チアキ
+カミヤマ,ケンギ
+カモン,ヒデキ
+カモン,エイタロウ
+カン,トモノリ
+カナイ,ノリコ
+カナイ,スミコ
+カナジ,マサユキ
+カナオカ,タミオ
+カナザワ,カツヒサ
+カンベ,サオリ
+カンダ,ヤスタカ
+カンダ,チエ
+カネキ,エイスケ
+カネキヨ,ヒロト
+カネコ,ヒロユキ
+カネシタ,カズヒロ
+カネヤス,ナオヤ
+カノウ,シンジ
+カノウ,タケシ
+カンズイ,タミユキ
+カサハラ,ナナコ
+カサハラ,ヒデヒサ
+カサイ,エイイチ
+カサマツ,クニトシ
+カサモ,ケンイチロ
+タマタニ,シマ
+カシワギ,ユリミ
+カシワグラ,ヒデユキ
+カタダ,サチコ
+カタオカ,ナオキ
+ホシ,ヒロト
+カタオカ,シュウジ
+カトウ,ヒロキ
+カトウ,ヤスユキ
+カトウ,モリヒロ
+カトウ,シンイチ
+カトウ,リョウタ
+カトウ,ケイコ
+カトウ,テルヒコ
+カトウ,ジュンコ
+カトウ,ミチヤ
+カトノ,キヨシ
+カツムラ,ヒデキ
+カワバタ,イチロウ
+カワゴエ,アキラ
+カワグチ,コウジ
+カワハラ,マスミ
+カシムラ,ユウコ
+カワイ,ナオミ
+カワイ,ヒロユキ
+カワモト,マナブ
+カワムラ,サトル
+カワムラ,シュウジ
+カワナ,ユキヒト
+カワナ,マサカズ
+カワナミ,ヒデヒコ
+カワノ,シンジ
+カワセ,ジュンイチロ
+ハラダ,シュウコウ
+カワシマ,ノブコ
+カザミ,ナオト
+カズサワ,ヤスヒロ
+キバヤシ,ユウイチ
+キダ,タケシ
+キハラ,ヨシヒコ
+キクチ,ヒロシ
+キクチ,イチロウ
+サイトウ,ケンジ
+キクイ,ツヨシ
+キモト,ヨウコ
+キムラ,ノブユキ
+キムラ,ツヨシ
+キムラ,トシツグ
+キムラ,タカヒサ
+キムラ,ハルミ
+キノ,カズマサ
+キリノ,カズヤ
+キサヌキ,マコト
+キシ,マサキ
+キシ,ナオキ
+キシダ,サトシ
+キシカワ,シン
+ヒラテ,シンジ
+キシナミ,ヤスマサ
+キソ,ヨシオ
+キタ,ヒデアキ
+キタガワ,ナオミ
+キタジマ,ヒロユキ
+キタジマ,セイカ
+キタムラ,ノリコ
+キタノ,トシユキ
+キタザキ,タダシ
+キタザワ,タツシ
+キヨハラ,ツトム
+ハシモト,オサム
+ノザキ,フミキヨ
+コバヤシ,フミオ
+コバヤシ,マサユキ
+コバヤシ,ナオキ
+コバヤシ,タカハル
+コバヤシ,ケンジ
+コバヤシ,アツシ
+コバヤシ,エイジ
+コバヤシ,サチコ
+コバヤシ,ショウジ
+コバヤシ,トモヒロ
+コウチ,ユキ
+コダマ,ヤスヒロ
+コガ,アキヒロ
+トウドウ,シュウイチ
+コハラ,ナオスミ
+コヒ,ハルミ
+コンノ,ヒロフミ
+コイケ,トオル
+コイワ,トモユキ
+コイズミ,シュウゴ
+コジカ,ミエコ
+コジマ,ナガオ
+コジマ,リチコ
+コジマ,カズヒコ
+コジマ,サトシ
+コマツバラ,リュウタ
+コミヤ,キヨシ
+コモダ,アキヨシ
+コムロ,トシユキ
+コンド,ナツミ
+コンド,ケンジ
+コンド,ケンイチ
+コサケ,コウイチ
+コセ,タカシ
+コスギ,タケシ
+コズカ,ヤスノリ
+クボ,ハルミ
+クボ,タケヒロ
+クボ,ナオキ
+クボ,シゲオ
+クボ,ヒロシ
+クドウ,マリ
+クドウ,セイイチ
+クドウ,マサキ
+クマカワ,ケンジ
+クマクラ,ケンイチ
+クマシロ,セイイチ
+クマタ,シロウ
+クニモト,ジュンジ
+クラモチ,シュウイチ
+クラシマ,ヒロシ
+クリハラ,カズヒロ
+ヒライ,コウジ
+クリハラ,ヨシユキ
+クリハラ,カツヨ
+クリハラ,ユウジ
+クリハラ,テツオ
+クリハシ,ミツノブ
+クリス,ヨウコ
+クロダ,アツシ
+クロダ,ヒロユキ
+クロキ,タカヒロ
+クロキ,トモコ
+クロキ,エイジ
+クロメ,マコト
+クロサワ,エイジロウ
+クルミヤ,コウキ
+クサヤナギ,マサトシ
+クスノセ,ナオオミ
+クワハラ,シンジ
+マチダ,ヨウコ
+マダラメ,トシタカ
+マエダ,サトシ
+マエダ,サトル
+マエダ,シンイチロウ
+マエガワ,フミヒデ
+マエハラ,ギンジ
+マエキタ,カズコ
+マキノ,タカヒロ
+シブタニ,コウジ
+マナベ,ヨシノリ
+マルヤマ,アキラ
+マルヤマ,ヒロユキ
+マルヤマ,ケイイチ
+マサオカ,タカシ
+マスブチ,ヨシノリ
+マスダ,ユウコ
+マスダ,ヨシハル
+マスダ,タカトシ
+マスダ,タクヤ
+マスダ,ヒロカズ
+マスダ,ヒロキ
+マツバ,ノゾミ
+ハラ,ケンジ
+マツダ,ケンジ
+マツダ,ダイスケ
+マツフジ,アキオ
+マツフジ,カズナリ
+タチクイ,ミキ
+マツイ,シンジ
+マツカワ,タカヒロ
+マツマル,シュウサク
+マツモト,アキオ
+マツモト,カズノリ
+マツモト,アキヒコ
+マツモト,ノリコ
+マツモト,ヒロシ
+マツモト,ツトム
+シオバラ,シンイチ
+マツムラ,シュンイチ
+マツムラ,ヨシノリ
+マツナガ,ユキコ
+マツナガ,マサヒロ
+マツナミ,ヨシコ
+マツオ,トシヤ
+マツオ,トモヒロ
+マツオカ,エイコ
+ハヤシダ,カズヒロ
+マツオカ,セイイチ
+アゼヤナギ,セイジ
+マツオカ,シンゴ
+マツオカ,ヒロアキ
+マツセ,タカユキ
+マツシマ,ケンジ
+マツシタ,コウジ
+マツタニ,シンジ
+マツワカ,サトシ
+マツヤマ,アキラ
+マツザキ,キクオ
+マツナガ,マコト
+ホンナ,キワム
+メカタ,ケンジ
+ミカジリ,キョウコ
+ミカミ,シンスケ
+ミカミ,ヒデオ
+ミキ,マサユキ
+ミミタ,ミチロ
+ミナクチ,フミハル
+ミナミ,サトシ
+ミナミ,トモユキ
+ミナミ,アキラ
+ミナト,ショウジ
+ミネ,ヨシタカ
+ミネ,アツシ
+ミシマ,コウジ
+ミシマ,オサム
+ミソノ,ヒロヒサ
+ミタムラ,マサトシ
+ミタンダ,ケンイチ
+ミツボ,ヨシカズ
+ミツボシ,トシヒロ
+ハスムラ,トシフミ
+ミツハシ,ヒロミツ
+シナダ,ヒロユキ
+ミツマ,カズヒト
+ミヤハラ,ジツヤ
+ミヤハラ,ヒデハル
+ミヤイ,ミエコ
+ミヤジマ,ユカコ
+ミヤモト,カズナリ
+ミヤモト,ヒデノリ
+ミヤシタ,ヒロユキ
+ミヤタ,ヒロユキ
+ミヤタ,カオル
+ミヤウチ,ケンジ
+ミヤウチ,オサム
+ミヤウラ,タケヒサ
+ミヤザキ,タケシ
+ハシグチ,シゲキ
+ミヤザワ,コウジ
+ミヤザワ,アキオ
+ミヤズ,ヤスヒト
+ミゾカミ,ジュンイチ
+ミズノ,テツヒコ
+ミズノ,トシユキ
+ミズタニ,ノブユキ
+モチダ,アキヒロ
+モチズキ,アキオ
+モチズキ,ジロウ
+ミヨシ,タカシ
+モリ,マサキ
+モリ,マサシ
+モリ,ダイイチ
+モリ,マサユキ
+モリ,テツヤ
+モリ,ヒロカズ
+モリ,ツネアキ
+モリ,イズミ
+モリ,ヒロカズ
+モリグチ,ヒロキ
+モリカワ,コウジ
+モリナガ,マサシ
+モリサキ,アケミ
+モリタ,ヨウイチ
+モリタ,エイジ
+モリヤ,ムツオ
+モリヤマ,ヒデオ
+モテギ,ミツヒロ
+モトキ,クニヒロ
+ハギワラ,ノブヨシ
+ムカイダ,シコ
+ムネヒロ,ヒデユキ
+ムネカタ,カズヨシ
+ムラカミ,ツヨシ
+ムラカミ,ヤスヒロ
+ムラカミ,ヤスオ
+ムラコシ,ヒロコ
+ムラマツ,マサト
+ムラヌキ,ケイジ
+ムラタ,ユキモト
+ムラタ,マサキ
+ムラタ,セイジ
+ムラヤマ,ヨシハル
+ヤマシタ,アキヒロ
+ムロタ,ヒロカズ
+ミョウジン,ミチオ
+ナガイ,ノリコ
+ナガヌマ,ユキオ
+ナガオ,エリ
+ナガオカ,ミホ
+ナガサワ,カオル
+ナガシマ,タカシ
+ナガシマ,ヨシカズ
+ナガタ,ヨシヤス
+ナガタ,チエコ
+ハセガワ,ヒロアキ
+イガラシ,カズヒロ
+ナガヤマ,ケンジ
+ナガヨシ,マサカツ
+ナイトウ,マサキ
+ナカバヤシ,マサノリ
+ナカガワ,シンイチ
+ナカゴメ,サトシ
+ナカシマ,トシアキ
+ナカジマ,ヤスマサ
+ナカジマ,ユウコ
+ナカジマ,テルミ
+ナカジマ,クラト
+ナカジマ,ユウジ
+ナカクキ,シンイチロウ
+ナカマル,リカ
+ナカミチ,ミカ
+ナカモト,ユキヒロ
+ナカモト,ヒロカズ
+ナカモト,ヒロユキ
+ワタナベ,ヒロフミ
+ナカムラ,マサナリ
+ナカムラ,シンイチロウ
+ナカムラ,セイジ
+ナカムラ,カズノリ
+ナカムラ,ユウジ
+ナカムラ,テルユキ
+ハギワラ,サトコ
+ナカムラ,マキコ
+ナカムラ,ヒデユキ
+ナカムラ,テツヤ
+ナカムラ,ケンタ
+ナカノ,ヤスシ
+ナカオ,ユウコ
+ナカオ,ヒロユキ
+ナカオカ,トモユキ
+ナカシマ,サトシ
+ニシジマ,タカシ
+ナカヤ,ワタル
+ナカヤマ,ヒロシ
+ナカザト,カツアキ
+ナマタメ,マモル
+ナメラ,モリヒト
+ナナミ,タダトシ
+ナンバ,タカオ
+ナン,ケイスケ
+ナンポ,アキラ
+ナラブ,ヒデキ
+ナリハラ,ヒロミ
+ナリトミ,ナオキ
+ナルシマ,マコト
+ナスカワ,ジュンヤ
+ナトリ,ケンヤ
+ネギシ,エミコ
+ネモト,イズミ
+ニエダ,トオル
+ニイジマ,マコト
+ニイクラ,マサル
+ニイツマ,ケンジ
+ニイザワ,ヨシノリ
+ニシダ,ヒロヒト
+ニシダ,タケシ
+ニシダ,エイジ
+ニシダ,ヒデト
+ヒダカ,ユキマサ
+ニシダ,ヤスオ
+ニシカド,アツシ
+ニシカワ,エイジュ
+ニシカワ,トモアキ
+ニシカワ,マサノブ
+ニシモト,ヒデヤ
+ニシムラ,マサノリ
+ニシナ,キヨシ
+ニシノ,ヒロカズ
+ニシタ,ミキ
+フカミ,カズヨ
+ニシワキ,タケヒコ
+ニシヤマ,カツシ
+ニシヤマ,ヒトシ
+ニシザワ,ヨシヒロ
+ニッタ,ヒロヨシ
+ニワタ,ホズミ
+ニワヤマ,チズ
+ノアミ,クニコ
+ノボリタテ,マナブ
+ノダ,タカユキ
+ノガワ,ヒロヤ
+ノグチ,トモアキ
+ノグチ,タカシ
+ノジリ,ヒロユキ
+ノモト,ユウコ
+ノムラ,ミキコ
+ハヤサカ,カズヒロ
+ノムラ,マサヒロ
+ノト,ソノミ
+ノザキ,トシヤ
+コサカ,ヤスシ
+オバナ,アヤコ
+オチ,マサテル
+オダ,ハルノブ
+オガサワラ,カズテル
+オガタ,ヒロヤス
+クキ,ユタカ
+オカダ,ヒロアキ
+オガワ,ヒロユキ
+オガワ,マサユキ
+オガワ,ヤスノリ
+オギハラ,カズトシ
+オギノ,コウイチ
+オブ,ミカ
+オオハラ,タダヒコ
+ハマモト,ヤスコ
+オオハラ,ユウジ
+オハシ,サトシ
+オオカワ,マサト
+オオクボ,マサアキ
+オオミヤ,セイジ
+オオモリ,テツヤ
+オムラ,リョウイチ
+オオニシ,マサタカ
+オオノ,ヒロヤス
+オオヌキ,カズオ
+オオサキ,サトシ
+オオサキ,ユウコ
+オオサワ,シロウ
+オシマ,タケシ
+オシマ,タカオ
+オシマ,ツトム
+オオタ,ヤスオ
+オオタ,ノブヒロ
+オオタ,ミカ
+オオタ,ヒロシ
+アンドウ,ケンイチ
+オタカ,タカアキ
+オオタキ,フトシ
+オオタニ,カズヒコ
+オオタニ,ノリヒサ
+オオタニ,マサカズ
+ハヤシ,ユキコ
+オオツボ,タケヒサ
+オオツカ,ヨシノリ
+オオツカ,エイキ
+オオツカ,アツシ
+ハヤシ,エミコ
+オオツル,ミチエ
+オフチ,トシコ
+オオワ,タケシ
+オオヤ,ムネオ
+オジオ,フミノブ
+オカ,マサトシ
+オカベ,アユム
+オカダ,マサキ
+オカダ,タカヤ
+オカダ,トオル
+オカダ,ヒロユキ
+オカモト,タカユキ
+オカモト,ユウ
+オカモト,トモユキ
+オカムラ,ヒロクニ
+オカムラ,ケイイチ
+オカザキ,ヒロトシ
+オカザキ,コウタロウ
+オキノ,カオル
+オクダ,ハジメ
+オクダ,マサノリ
+オクガワ,ジュンイチ
+ハギハラ,ケンジ
+オクウチ,ムネシ
+オオミ,アヤコ
+オムラ,ヒトシ
+オンダ,カズヒロ
+オオノ,ユタカ
+オオノ,ヒョウゾウ
+オオノ,ミノル
+オオノ,シュンスケ
+オノデラ,マサヒコ
+オノデラ,ヨシノリ
+オノデラ,トシオ
+オノムラ,ミノル
+オノザワ,シンヤ
+オオヌキ,テツロウ
+オノ,タカアキ
+オオヤマ,ヒトシ
+オリド,ヒデアキ
+オリシキダ,コウイチ
+オオサカ,タダオ
+オヤマ,タイチ
+オザキ,タツヤ
+オザキ,ヨシマサ
+オザワ,ユウスケ
+コザワ,ヒロシ
+オザワ,マサハル
+オザワ,タケシ
+ハタナカ,ミツヒロ
+サエキ,リョウコ
+サイダ,モモコ
+サイグサ,ヒロシ
+ハンダ,タケシ
+サイトウ,ヤストモ
+サイトウ,マサヒサ
+サイトウ,シゲヒト
+サカチ,マサオ
+サカグチ,コウジ
+サカイ,ミノル
+サカイ,コウゾウ
+ヒラノ,アキヒロ
+サカイ,アキラ
+サカイ,ヒロミ
+サカイ,ミキオ
+サカイ,ナオキ
+サカモト,タカシ
+サカモト,ヤスヒロ
+ヒロセ,ヨシアキ
+サカモト,ヨウキチ
+サカタ,トモジ
+キシダ,ヒロアキ
+サコ,アカシ
+サクマ,マサル
+サクラバ,エミ
+サクライ,ハルミ
+サクラヤマ,ヒロシ
+サメシマ,カズヨシ
+サンベ,マコト
+サルワタリ,マサキ
+ハセガワ,マサト
+ササエ,ナオキ
+ササハラ,リョウジ
+ササキ,タカマサ
+ササキ,タカシ
+ササキ,ユタカ
+ササキ,ユキコ
+ハビロ,ユタカ
+ササオ,カズシゲ
+ササオカ,トモコ
+ササタニ,ヨシミ
+サタ,トモミ
+サタケ,トシキ
+サトウ,ジュン
+ホシノ,ケイジ
+サトウ,マサハル
+ハットリ,シンヤ
+サトウ,トオル
+サトウ,シゲキ
+サトウ,ユキタカ
+サトウ,リョウイチ
+サトウ,タツキ
+サトウ,ケイジ
+サトウ,マリオ
+サトウ,トシアキ
+サトウ,ケイイチ
+ヒラノ,ヒロアキ
+サトウ,ヒロユキ
+サトウ,ヤスノリ
+サワダ,ケイイチ
+サワダ,コウヘイ
+サワフジ,タカヒロ
+サワキ,コウヘイ
+サワムラ,ヒロシ
+セガワ,シンタロウ
+セガワ,カズキ
+セキ,リツコ
+セキ,タイチ
+セキグチ,ヒサシ
+セキネ,カズアキ
+セキネ,カツミ
+ヒラノ,エイイチ
+センゴク,ヤスシ
+セオ,ヒロシ
+セラ,タダシ
+セラ,ヒロカツ
+シバハラ,カズノ
+シバタ,カズヒコ
+シバタ,トモヒロ
+ハセガワ,トモミツ
+シバタ,ユタカ
+シバタ,マサタケ
+シバタ,マサユキ
+シバザキ,マサコ
+シブタニ,トモハル
+シブヤ,トモカツ
+シチヒョウ,キミアキ
+シキ,マサル
+シキシマ,タケシ
+シマ,アキコ
+シマ,コスケ
+シマダ,カツヒロ
+シマヌキ,タカシ
+シマオカ,ヤスタカ
+シマシタ,ナオヒロ
+シマズ,ケイイチ
+シミズ,ヒデキ
+シミズ,ケイスケ
+ハセガワ,チエコ
+シミズ,マサオ
+シミズ,ユリコ
+シミズ,カズヒサ
+シモガイ,トシコ
+シモカワベ,アキヒロ
+シモオカ,アキヒロ
+シモサカ,ヒデユキ
+シモヤマ,テツヤ
+シンボリ,ヒロエ
+シノハラ,ナオタカ
+シノハラ,ヒサトシ
+シノザキ,ヒロシ
+シノザキ,ヨシコ
+シノズカ,ケンイチ
+シンヤ,ヒデコ
+シオタ,ジュンキチ
+シオタニ,ケンジ
+シオヤ,トオル
+シラハマ,ミチヒサ
+シライ,ミカ
+シライシ,ミサ
+シライシ,ヤスヒト
+シライシ,ツトム
+シラキ,ケイスケ
+シラサキ,カズユキ
+ショウナゴ,タカシゲ
+オオヤマ,ミカ
+シュトウ,ヒロキ
+シモイズ,ヨリト
+ソエダ,タクミ
+ホリノ,ヒロカツ
+ソトジマ,フトシ
+スダ,メイジロウ
+スダ,コウコ
+スドウ,ヒデヒト
+スガ,ハジメ
+スガヌマ,ヒロカズ
+スガワラ,ケイ
+スギバヤシ,マサトシ
+スギモト,ミカ
+スギモト,ノブコ
+スギムラ,ノリヒコ
+スギノ,サトル
+スギサキ,シンイチ
+スギサワ,タカオ
+スギタ,タカユキ
+ハヤシ,タミ
+スギウラ,トオル
+スギヤマ,トシヤ
+スギヤマ,シンジ
+スゴ,ヤスオ
+スイタ,ヨシヒサ
+スミダ,アツシ
+スミカワ,サトシ
+スナガ,トオル
+スノハラ,マサミ
+スズキ,アキラ
+スズキ,トモユキ
+スズキ,ヨシユキ
+スズキ,マサフミ
+スズキ,ショウゴ
+スズキ,タケヒロ
+スズキ,ヨシノリ
+スズキ,カズフ
+スズキ,アキコ
+スズキ,カツヒコ
+スズキ,シゲル
+ヤマカワ,タツオ
+スズキ,アサコ
+スズキ,アキヒコ
+ハガ,ヒロカズ
+スズキ,イサト
+スズキ,カオリ
+スズノ,カツフミ
+シュトウ,クニヒデ
+タバラ,マコ
+タダ,マサル
+ハリガイ,タカノブ
+タダ,マサユキ
+タガシラ,ミナコ
+タグチ,ミユキ
+タグチ,ノブアキ
+タジマ,シンジ
+タジマ,シンジ
+ホッタ,シュンイチ
+タカダ,トモノリ
+タカギ,トシカズ
+タカギ,ヨウイチ
+タカギ,ユウコ
+タカハシ,エイコ
+ハシグチ,ヒロアキ
+タカハシ,ヒロシ
+タカハシ,ナオミ
+タカハシ,ヒロミチ
+タカハシ,カツトシ
+タカハシ,カズコ
+タカハシ,カズオ
+タカハシ,トモヒロ
+ハセガワ,テルオ
+タカハシ,ケンタロウ
+タカハシ,ヒデノリ
+タカハシ,カツミ
+タカハシ,シンイチ
+タカハシ,ヨシミツ
+タカハシ,カズヒロ
+タカハシ,イチタロウ
+タカハシ,アツノリ
+タカハシ,ケンイチ
+タカハシ,フサヒコ
+オオミ,ケンジ
+タカヒラ,ミノル
+タカイ,ヨシトモ
+タカミヤ,コウジ
+タカナシ,リホ
+タカノ,ミキコ
+タカノ,ヨシヒロ
+タカノ,タマヨ
+タカノ,ヨシヒト
+タカノ,アキヒロ
+ハヤカワ,モトヒロ
+タカシマ,タダシ
+タカス,カツノリ
+タカトウリ,ヒデヒコ
+タカトリ,フサミ
+タカヤ,ノリアキ
+タケ,アキヒロ
+タケダ,セイジ
+タケダ,イズミ
+ホリ,コウゾウ
+タケダ,シンイチ
+タケハラ,ヒカル
+タケイ,シンイチ
+タケモト,アキ
+タケモト,アキスケ
+タケナカ,ケンイチ
+ハヤシ,マサヒコ
+タカギ,マサキ
+タケトミ,マサノリ
+タケウチ,ミホ
+タケウチ,ミツオ
+タケウチ,ノブヨシ
+タケヤス,レイジ
+タケザワ,リョウジ
+タキバ,サトシ
+タクボ,タカノリ
+ハニュウ,ツヨシ
+タマヨリ,ユウコ
+タモツ,ユウタ
+タムラ,ヒロユキ
+タムラ,アケミ
+タムラ,アキラ
+タナベ,ヤスノリ
+タナベ,ヒデヒコ
+タナカ,ヒロユキ
+タナカ,ヨシユキ
+タナカ,コウイチ
+タナカ,アツシ
+タケダ,ヨシコ
+タナカ,タダシ
+ハセガワ,マサル
+タナカ,ヒデユキ
+タナカ,タカヨシ
+タナカ,マナブ
+タナカ,カツキ
+タナカ,マコト
+タナカ,ユウコ
+タナカ,コウイチ
+タナカ,ヨシオ
+タナカ,トオル
+タニ,ヒロコ
+ミタニ,ヘイゴ
+タニグチ,ヒデアキ
+ハットリ,ヒロコ
+タニグチ,ケンイチ
+タニグチ,ユウコ
+タニグチ,カツヒコ
+タニカワ,ケンシ
+タサカ,マコト
+タシマ,ケイスケ
+タテカワ,マサル
+タテノ,コウジ
+テラジマ,ハジメ
+テラマエ,セイイチロウ
+テラサワ,マコト
+テラヤマ,ミヨコ
+テシマ,エツマサ
+トダ,モトユキ
+トトミ,タケヒコ
+トオヤマ,ユキヒコ
+トキワ,チエコ
+フクヤマ,ケンジ
+トクザワ,マサル
+トミナガ,コウジ
+トミタ,ヒデシ
+トミヤマ,カズノリ
+サワムラ,タツミ
+トリゴエ,サダユキ
+トリタニ,ヒデノリ
+トサカ,シュウジ
+ツボイ,マサヒコ
+ヒラバヤシ,トモナリ
+ツチダ,ヒロユキ
+ツチタニ,ヒデキ
+ツチヤ,シゲト
+ツダ,ヒロシ
+ツダ,アツヨシ
+ツジ,ヒロシ
+ツジイ,カズオ
+ツジムラ,ナルト
+ツジムラ,タカシ
+ツジノ,シュウイチ
+ツジサワ,ユミ
+ツカダ,タイゾウ
+ツカハラ,テツオ
+ツカモト,ヤスキ
+ツカモト,ヨシミ
+ツカモト,ケンタロウ
+ツネダ,マサヒロ
+ツノダ,タケシ
+ツノダ,ケンイチロ
+ツルマル,タカシ
+ツサカ,ケン
+ツツイ,タカシゲ
+ツツミ,マサノリ
+ツツミ,マサハル
+ツツミハラ,タカオ
+ウチダ,マコト
+ウチダ,サダユキ
+ハヤシ,タカユキ
+ウチダ,タツヤ
+ウチノ,サトシ
+ウチヤマ,アヤノ
+ウダガワ,シンイチ
+ウエダ,ヒロユキ
+ウエダ,ケンジ
+ウエダ,タケシ
+ネズ,トシアキ
+ウエムラ,サトシ
+ウエムラ,ショウタ
+ウエムラ,ケンイチ
+ウエノ,シンヤ
+ウエノ,トモフミ
+ウエサワ,トシヒロ
+ウエツボ,ヨシタカ
+ウエツキ,ヨシテル
+ウケノ,ユウスケ
+ウマハシ,ヒデフミ
+ウメダ,ヤスタカ
+ウメムラ,カオル
+ウミダ,コウキチ
+ウオズミ,サンペイ
+ウラタ,センタ
+ウシクサ,トシユキ
+ウスナミ,ジュン
+ワダ,ジュンイチ
+ワダ,カオリ
+ワダ,ミキ
+ワダ,ミツノリ
+ワカセ,サトヨシ
+ワキ,タダシ
+ワタナベ,タケシ
+ワタナベ,トモアキ
+ワタナベ,ヨシヒサ
+ワタナベ,テイジ
+ワタナベ,ヨシキ
+ワタナベ,ヨシユキ
+ワタナベ,カズト
+ワタヌキ,ヨシヒサ
+ワタヌキ,ヒデオ
+ワタリ,ヒロミツ
+ハシグチ,ジュンヤ
+ヤブ,コウジ
+ヤギヌマ,ミツアキ
+ヤジマ,ナオキ
+ヤマダ,シゲフミ
+ヤマダ,ヨシタカ
+ヤマダ,ユウスケ
+ヤマダ,ユウコ
+ヤマダ,アキアツ
+ヤマダ,アキラ
+ヤマダ,チエ
+ヤマダ,ヒロコ
+ヤマダ,カズミ
+ヤマダ,マサヨシ
+ヒサノ,リカ
+ヤマダ,サトシ
+ヤマダ,サヤカ
+ヤマフジ,タツヤ
+ヤマギワ,ヤスヒコ
+ヤマグチ,ヤスヒロ
+ヤマグチ,ヨシヒロ
+ヤマグチ,ノリユキ
+ヤマグチ,ユイ
+ヤマグチ,イサオ
+ヤマグチ,テツヤ
+ヤマグチ,タケハル
+ヤマグチ,アキラ
+ヤマグチ,タカヒロ
+ヤマカワ,ユキコ
+ヤマモト,ヒロシ
+ヤマモト,カナコ
+ミズタニ,キミオ
+ヤマモト,ミドリ
+ヤマモト,ミツヒロ
+ヤマモト,ヨノスケ
+ヤマモト,ナオト
+ヤマモト,タカシ
+ヤマモト,カツジ
+ヤマモト,カズ
+ヤマモト,カズアキ
+ヤマモト,ヒナコ
+ヤマモト,シンイチ
+ヤマネ,マコト
+ヤマネ,ヤスヒサ
+ヤマシタ,トシオ
+ヤマシタ,カズヒサ
+ハンダ,イサオ
+ヤマウチ,ヨシヤ
+ヤマウチ,シンイチロウ
+ヤマウラ,タカシ
+ヤマザキ,ヒロト
+ヤマザキ,カズヨシ
+ヤマザキ,ケンイチ
+タムラ,マサトシ
+ヤマザキ,サトシ
+ヤマザキ,タカオ
+ヤマゾエ,タカシ
+ヤナギサワ,ユミコ
+ヤノ,タケシ
+ヤスダ,ヒデキ
+ヤスハラ,ケイコ
+コシモト,モト
+ハギワラ,ミキオ
+ヨコタ,テルヒサ
+ヨコヤマ,タケシ
+ヨモダ,アキラ
+ヨナガ,サトシ
+ヨネダ,ヒロタケ
+ヨネヤマ,サチヨ
+ヨネザワ,エリ
+ヨネザワ,トモヒサ
+ヨシダ,マユミ
+ヨシダ,テルヤス
+ヨシダ,カツヒロ
+ヨシダ,マサト
+ヨシダ,アキヒサ
+ヨシダ,サチコ
+ヨシダ,ケンゴ
+ヨシダ,キヨヒト
+ヨシグチ,ノブコ
+ヨシイ,ユキオ
+ヨシイケ,キヨユキ
+ヨシマツ,ケンタロウ
+ヨシノ,ヒサヨシ
+ヨシノ,シゲオ
+ヨシザワ,オサム
+ヨツタニ,ミツヒロ
+ユキザネ,セイジ
+ユヤマ,ヨシヒサ
+ズシ,ユキオ
+アライ,マサト
+フジキ,ユウイチ
+ヒラノ,シゲル
+カメヤマ,ヒデノブ
+コジマ,カズオ
+ナカオ,メグミ
+イワカワ,ソウタロウ
+ツチヤ,タツヤ
+イジロ,コウジ
+クドウ,トモコ
+ナガシマ,カズヒト
+ハシグチ,カツユキ
+ツチヤ,ケイコ
+イシマツ,ヒロヤス
+ハラダ,ヒロタカ
+ミズノ,フミオ
+ホシノ,ハルオ
+アベ,シゲノリ
+アベ,タカコ
+アベ,ユタカ
+アベ,エイイチ
+アブカワ,ミサ
+アダチ,ケンタロウ
+アイザワ,キリコ
+アジロ,マサユキ
+アカイ,トシアキ
+タモト,ミキオ
+アカイシ,エイチ
+アカシ,マユミ
+アキイケ,ヤスヒロ
+アキタ,ノリチカ
+アキヤマ,ムツミ
+アマガイ,ヒデフミ
+アマガタ,タカシ
+アマノ,ミホ
+アメミヤ,カツミ
+アンドウ,カズヒロ
+アンドウ,タカユキ
+アンドウ,ダイゴ
+アンドウ,シンゴ
+アンザイ,マサヒデ
+アオキ,マサトシ
+アオキ,アキフミ
+アオヤギ,アツト
+アオヤマ,ユウコ
+アライ,マサシ
+アライ,トモナリ
+アラキ,トシミツ
+アラヤ,ヒロアキ
+アリマ,シンイチ
+アリタケ,セイジ
+アサダ,タケオ
+アサヒ,ユウジ
+アサノ,ジュンコ
+アシダ,サトシ
+アシカワ,サトシ
+ババ,ヤスユキ
+ババ,タカハル
+ババ,ケンジ
+チバ,ジュンコ
+ゴトウ,マサヒコ
+チョウ,エイジ
+ダイド,ユウコ
+ドアイ,コウジ
+ドイ,トモヒロ
+ホソイ,タクジ
+ドイ,イサオ
+ドイ,ケンイチ
+エガシラ,ヒデタカ
+エグチ,ヤスヒロ
+エバラ,ツトム
+エンド,シンイチ
+エンド,サトシ
+アマリ,ケンジ
+エノモト,キヨミ
+エノモト,マサミ
+エノモト,アキラ
+エノモト,チカラ
+エザキ,カズヒト
+フジハラ,マサハル
+フジイ,タカシ
+フジイ,サツキ
+ヒルカワ,ケン
+フジイ,マサヒコ
+フジサワ,ハルミ
+フジサワ,ヒロユキ
+ヒゴ,カツユキ
+フジタ,ツヨシ
+フジタ,タカシ
+フジワラ,トオル
+フカミ,ヤスユキ
+フカザワ,タケシ
+ハセガワ,ヨウスケ
+フクダ,ジュンコ
+フクモト,ミツオ
+フクムロ,タカシ
+フクロ,ヤスコ
+フクシ,ヒロミ
+フクシマ,タカミ
+フクシマ,シンイチ
+ハギワラ,トシオ
+フクシマ,アキラ
+フナキ,ナオキ
+フナクボ,フミオ
+ハラダ,ミノル
+フルハタ,モトフミ
+フルカワ,マチコ
+フルモト,タカシ
+フルヤ,トモヤ
+フシミ,ヒロミ
+ゴウダ,ミキオ
+イリエ,シンジ
+イシハラ,アキラ
+イチカワ,マサユキ
+イバ,マミ
+イワサキ,サエコ
+イノウエ,アヤコ
+イイモリ,マサヒロ
+イハラ,セイジ
+イワムラ,ショウタ
+イナガキ,ユキオ
+イシジマ,カズヒロ
+イトウ,シロウ
+ゴンドウ,シュウジ
+ゴトウ,スミレ
+イシカワ,マサヒコ
+イトウ,マサノブ
+イセキ,リコ
+ゴトウ,ヒロユキ
+ハダ,ヒデアキ
+ハギワラ,ミワコ
+ハギワラ,トモコ
+ハイジマ,アイコ
+ハマダ,ヒロシ
+ハマノ,ヒロツグ
+ハマオカ,コスケ
+ハナド,ミノル
+ハナタ,テツヤ
+ハラ,トモヒコ
+ハラ,ユウジ
+ハラ,タケシ
+ハラ,キョウコ
+ハラダ,シン
+ハラダ,タケシ
+ハラダ,アキヒト
+スズキ,タケロ
+ハラガ,タツヤ
+ハラミ,ケンタロウ
+ハラヤマ,ノブヒコ
+ハラゾノ,ノブヒロ
+ハセベ,タクジ
+カネコ,トモアキ
+ツチダ,ヨウイチ
+ハシモト,リエ
+ハシモト,フミヒロ
+ハシモト,カナエ
+ハシモト,サトシ
+ハシモト,タカアキ
+ハシモト,ヒデキ
+ハシモト,ヒデキ
+ハシモト,ヨシヒコ
+ハタ,ケイコ
+ハットリ,ヒデアキ
+ハットリ,マコト
+ハットリ,セイジ
+ハヤカワ,キヨシ
+ハヤカワ,ヒデハル
+ハヤサカ,ヨシカズ
+ハヤサキ,セイゴ
+ハヤシ,トシヒコ
+ハヤシ,タカヨシ
+ハヤシ,タカナリ
+ハヤシ,ヤスキ
+ハヤシ,アキラ
+ハヤシダ,ケンゾウ
+ヒビ,カズノブ
+ヒガシ,ヤスヒロ
+ヒガシ,カズオ
+ヒグチ,コウイチロウ
+ヒジカタ,ケンジ
+ヒジヤ,ヨシオ
+ヒナガ,タケシ
+ヒラカワ,ヒデアキ
+ヒラノ,ヒロコ
+ヒラノ,イタル
+ヒラノ,タダオ
+ヒラオ,タカヒト
+ヒラシマ,ナオキ
+ヒラヤマ,トシロウ
+ヒラヤス,ヒトシ
+ヒリキ,ケンイチロ
+ヒロマサ,ワタル
+ヒロモト,シンジ
+ヒロオカ,マナブ
+ヒロセ,ユミコ
+ヒロセ,マツタロウ
+ウメダ,リョウイチ
+ホンダ,サナエ
+ホンド,タケシ
+ホリモト,ヤスユキ
+ホリノ,カズシゲ
+ホリウチ,タカネ
+ホサカ,アキコ
+ホシノ,マコト
+ホシヤマ,ミギフミ
+ホソカワ,テツヤ
+ホソカワ,ヨシヒロ
+ホソカワ,シゲオ
+ホソヤ,ヒロシ
+イバラキ,ノブオ
+イチハラ,ヒサミツ
+イチハラ,タカシ
+イチハラ,ノブコ
+イチカワ,ケンイチ
+イチノセ,サトシ
+イダ,タケシ
+イデグチ,カズヒト
+イド,マサシ
+イガラシ,カツノブ
+イガラシ,ユキヒコ
+イガラシ,ヒロシ
+イイダ,ヒロオ
+イイダ,カツトシ
+イイジマ,コウジ
+イケダ,リョウ
+イケダ,トモミ
+イケダ,トモミ
+イケダ,ヨウコ
+イマイ,コウキ
+イマイズミ,ケイコ
+イマイズミ,ミワ
+イマムラ,オサム
+イマムラ,ミノル
+イモン,カズユキ
+イナダ,マスミ
+イナガキ,カズヤ
+イナガキ,ミツヤ
+イナムラ,タカシ
+イナムラ,トモノリ
+イノ,セイイチロウ
+イノカワ,アスコ
+イノマタ,カズヒト
+イノウエ,ヒロカズ
+イノウエ,サトシ
+イノウエ,シホ
+イノウエ,ヤスヒロ
+イノウエ,ユウジ
+イノウエ,ユウタ
+イノウエ,コウイチロウ
+イヌイ,シンイチロウ
+イヌシマ,マユミ
+イリエ,マサノリ
+イサカ,シゲル
+イシバ,チヒロ
+イシバシ,ダイスケ
+イシバシ,ヒデキ
+イシダ,ヒロミツ
+イシダ,ヒロシ
+イシダ,カツヒロ
+イシダ,ケイイチ
+イシガミ,コウイチ
+イシグロ,コウジ
+イシハラ,マリコ
+イシイ,マサヒロ
+イシイ,ナオミ
+イシイ,ノボル
+イシイ,セツコ
+イシイ,タダシ
+イシイ,タカハル
+イシカワ,トシオ
+イシマル,ツヨシ
+カワズ,ヨウイチ
+イシズカ,ユキオ
+イタヤ,ノリヒサ
+イイダ,アキヒロ
+イトウ,ヒロミチ
+イトウ,ヒロシ
+イトウ,イクオ
+イトウ,カズヤ
+イトウ,ショウコ
+イトウ,カズヒロ
+イトウ,ジュン
+イトウ,マコト
+イトウ,オサム
+イトウ,ヨシマサ
+イトウ,マサユキ
+イトウ,マサミ
+イトウ,ヒロアキ
+イトウ,タマキ
+イトウ,キヨタカ
+イトウ,マサフミ
+イトウ,ヒロカズ
+イトウ,ユキオ
+イトウ,エイジ
+イトウ,ミホコ
+イワイ,タカユキ
+イワイ,カズシゲ
+イワミ,キヨシ
+イワムラ,ヨシタカ
+イワナガ,ナオコ
+イワオ,カズアキ
+イワサキ,リュウコ
+イワタ,キヨコ
+イワタ,ミツヒロ
+イワタ,シンジ
+イズミ,ノゾム
+ジンバ,ツネノリ
+ノウチ,リエ
+ラク,ヨシノリ
+カガミ,ヒロシ
+カガワ,ケイタ
+カゲヤマ,タマキ
+カイ,ジュン
+カジモト,タクヤ
+カジワラ,セイジ
+クリハラ,エイジ
+カキムラ,ジュン
+カキノキ,タカアキ
+カキウチ,ヒロユキ
+カキザキ,コウジ
+カコ,トシヒコ
+カメシマ,ダイスケ
+カミエス,エイイチ
+カミクラ,ヒロシ
+カミムラ,コウイチロウ
+カミタキ,マサジ
+カミヨシカワ,マサユキ
+カン,タクヤ
+カナイ,トシカズ
+カンバヤシ,イチロウ
+カンダ,ヨシヒト
+カネコ,タカユキ
+カネコ,ヤスユキ
+カネタ,タカシ
+カノウ,マユミ
+カリノ,ヒロシ
+カサミ,カナエ
+カサナミ,タカト
+カセ,マモル
+カスガ,ヒロシ
+カスヤ,マサナリ
+カタオカ,ノリコ
+カトウ,ナオコ
+カトウ,ヒロシ
+カトウ,マサユキ
+カトウ,ノリアキ
+カトウ,タダアキ
+カトウ,ケンジ
+カトウ,ケンジ
+カトウ,タカユキ
+カトウ,アキヒト
+カトウ,ジロウ
+カツマタ,クミ
+カツラ,マサキ
+カワベ,ヨシユキ
+カワダ,タケシ
+カワグチ,ヒデキ
+サイトウ,ヒデタカ
+カワグチ,イクコ
+カワハタ,カオリ
+カワカミ,カズヨシ
+カワカミ,ケンイチ
+ヤジマ,ミツヨ
+カワモト,ツヨシ
+カワムラ,ヒデアキ
+カワムラ,ヒロシ
+カワムラ,ジュンイチ
+カワムラ,マリ
+カワノ,マサヒコ
+カワノ,マサカツ
+カワサキ,シゲユキ
+カワセ,ケンジ
+カワシマ,トシヤ
+カワシマ,ヨシハル
+カワシマ,ヒデキ
+カワシマ,ヤスノブ
+キダ,ミノル
+キクチ,カズヤ
+キクチ,タカヒデ
+ヤマモト,ヤスヒロ
+アキヨシ,ヤスヒロ
+キクチ,マモル
+キクチ,タツヤ
+キクチ,ミツル
+キクチ,アキコ
+キムラ,フミヒコ
+キムラ,マサヒコ
+キムラ,アキヒコ
+キムラ,アツシ
+キムラ,ヒロシ
+キムラ,マサキ
+キムラ,ミノル
+カトウ,ショウジ
+キナセ,ユウジ
+キネ,マサコ
+キノ,アキ
+キノ,カズヒロ
+キノシタ,ケイタ
+キラ,ヨウコ
+キシモト,トオル
+キタバタケ,アキオ
+キタバタケ,タカヒコ
+キタガワ,オサム
+キタガワ,チカコ
+キタムラ,ヒロアキ
+タカハシ,メグミ
+キタヤマ,エイジ
+キヨナリ,ヒロシ
+コバヤシ,キヨシ
+コバヤシ,トシヒロ
+コバヤシ,アキコ
+コバヤシ,タカシ
+コバヤシ,ヒロシ
+コバヤシ,ヒロアキ
+コバヤシ,ナオキ
+イトウ,シンジ
+コンノ,ヨウイチ
+コンノ,タカミツ
+コンノ,ヒロシ
+コンノ,カズアキ
+コイケ,トモフミ
+コジマ,ワタル
+コクショウ,マサル
+コマキ,カズヤ
+マカベ,サブロウ
+コマツ,タケシ
+コマツ,ヒロエ
+コンド,シン
+コンド,タクミ
+コンド,マサユキ
+コシバ,ミキ
+ヨコエ,ヤスノリ
+コテガワ,マサノリ
+コンノ,カズアキ
+コヤマ,レイコ
+コヤマ,モトクニ
+コヤマ,ヒロタカ
+コザス,トシノリ
+クチイシ,カズトシ
+クギミヤ,リュウスケ
+クジライ,アツシ
+クマノミド,ヒロシ
+クマザキ,トモキ
+クレマツ,タカヒデ
+クリキ,マサユキ
+クリヤマ,トシロウ
+クリヤマ,ヒロシ
+クロベ,ナオト
+クロサワ,トモアキ
+クロサワ,ヤスユキ
+クリュウ,ヨシエ
+クサノ,カツユキ
+クワハラ,ジュン
+クズノ,ヨシタカ
+キュウダ,タクヤ
+マブチ,ケンイチ
+マチタ,マサキ
+マエダ,ヨウイチ
+マエイエ,アキフミ
+マエカワ,チアキ
+ママダ,ヒロシ
+マナベ,ヒロタカ
+マナベ,カズオ
+マルイチ,マサユキ
+マルタニ,タカヒデ
+マルヤマ,タカコ
+マサオカ,タカユキ
+マスダ,タツミ
+マスダ,ツヨシ
+マスダ,ヨシブミ
+マスダ,ユキコ
+マスダ,ヒロカズ
+マツバラ,コウゾウ
+マツダ,カツヤ
+マツダ,ヒロユキ
+マツダイラ,トシフミ
+マツエダ,アユミ
+マツイ,ヒデシ
+マツイ,ヒロキ
+マツモト,ノブオ
+マツモト,セイイチ
+マツモト,カズヒロ
+マツモト,キヨカズ
+マツモト,キョウコ
+マツモト,ヨシキ
+マツモト,ナリアキ
+マツモト,アキノリ
+マツモト,ケン
+マツモト,トシカズ
+マツモト,ケン
+マツモト,ダイ
+ナカムラ,ヒロユキ
+マツムラ,クミ
+マツナガ,ケンジロウ
+マツノ,カズト
+マツオ,リュウイチ
+マツオ,タカオ
+マツオカ,タケシ
+マツオカ,カズノリ
+マツオカ,タダアキ
+マツオカ,ヒロシ
+マツオカ,アツシ
+マツシマ,キミオ
+マツタニ,アヤ
+マツヤマ,コウタロウ
+ミチモト,マユミ
+ミエキ,タクロウ
+ミカミ,カズミ
+ミカミ,ヨシタカ
+ミナガワ,ツヨシ
+ミナカワ,ショウコ
+ミシマ,カズミ
+ミシマ,シノブ
+ミシマ,ヒロアキ
+ミタチ,コウジ
+ミツダ,ナオキ
+ミツハシ,ジュン
+ミツイ,ヒロシ
+ミツモト,キヨミ
+ミウラ,キョウジ
+ミウラ,マサヒロ
+ミヤベ,アキラ
+ミヤチ,マサユキ
+ミヤジマ,アキノリ
+バン,マナブ
+ミヤモト,トシアキ
+ヨコエ,コウゾウ
+ミヤサカ,ケイイチ
+ミヤタ,ヒロユキ
+ミヤタ,カズオ
+ミヤウチ,マサヒロ
+ウチヤマ,ミキコ
+サカイ,リョウスケ
+ミヤザワ,トシアキ
+ミゾブチ,エイコ
+ミゾグチ,アキラ
+ミゾグチ,イズミ
+ミズモト,アツヒコ
+ミズノ,マサヨシ
+ミズノ,マサユキ
+ミズノ,ユウジ
+ミズシマ,ユキオ
+ミズタ,ユタカ
+ミズタニ,ヒサト
+モギ,カズノリ
+モギ,モユル
+モギ,ヒロシ
+モモセ,ダイスケ
+モンマ,ユウジ
+モリ,レイコ
+モリ,ケイスケ
+モリ,ケンイチ
+モリ,マサヒロ
+モリ,リカ
+モリ,ツトム
+モリモト,ユキヒロ
+モリノ,ヨウスケ
+ヨシダ,ナオフミ
+モリタ,ヒデノブ
+モリタ,カズヒサ
+モリタ,カツミ
+モリタ,ヨシヤ
+モリタ,シゲオ
+モリワキ,タクオ
+モロ,ヨシロウ
+モタイ,ヒロシ
+モトバヤシ,サトル
+モトハシ,シゲマサ
+モトヤマ,マサノリ
+モトザワ,ユウジ
+ムカワ,イツコ
+ムナカタ,フミコ
+ムラカミ,ヒロアキ
+ムラカミ,ヨシキ
+ムラカミ,ヒロユキ
+ムラカミ,ヤスコ
+ムラカミ,アキヒサ
+ムラカワ,マサコ
+ムラナカ,マユコ
+ムラタ,トモノリ
+ムラタ,ヒロキ
+ムラヤマ,ケンジ
+ムラヤマ,ヒロシ
+ムロハシ,コウジ
+ムトウ,カオル
+ムトウ,アキコ
+ナバ,ヒロユキ
+ナガイ,マサル
+ナガイ,ナオアキ
+ナガノ,カツヤ
+ナガノ,タマミ
+ナガオ,ヤスヒロ
+ヤマモト,カズヒロ
+ナガオケ,サトシ
+ナガオサ,アキヒロ
+ナガシマ,カツヤ
+ナガシマ,クミ
+ナガタ,ミキ
+オオバ,サトシ
+ナガタ,シンジ
+ナガタ,ショウヘイ
+ナガタニ,ツヨシ
+ナイトウ,ヤスノリ
+ナカチ,ヨシハル
+ナカダ,ヨシユキ
+ナカダイ,ユウイチ
+ナカガワ,ナオユキ
+ナカガワ,ヨシユキ
+ナカガワ,アツシ
+ナカガワ,ヒロユキ
+ナカハラ,ジュン
+ナカイ,ケイイチ
+ナカイ,シノ
+ナカジマ,タカシ
+ナカジマ,コウジ
+ナカムラ,シュウゴ
+ナカムラ,マサユキ
+キミヒラ,ミカ
+イトウ,タカヒサ
+ナカムラ,コウジ
+ナカムラ,タツヤ
+ナカムラ,カズユキ
+ナカムラ,ハジメ
+ナカムラ,マサアキ
+ナカムラ,ヒロキ
+ナカムラ,ミキ
+ナカムラ,トモオ
+ナカニシ,イズル
+ナカニシ,タカヒロ
+ナカノ,ユウコ
+ナカノ,ヤスアキ
+ナカノ,テツヤ
+ナカノ,カズノリ
+ナカノ,アツシ
+ナカオ,アキコ
+ナカサク,ショウタツ
+ナカセ,ヒロタカ
+ナカタ,クルミ
+ナカタ,ヒロミ
+ナカタ,ヤスヒロ
+ナカタケ,タクオ
+ナカヤマ,フミオ
+ナミキ,ケイシ
+ナナサワ,ナミジ
+ナンバ,ダイスケ
+ナンモク,エミコ
+ネモト,ナツコ
+ネモト,ミツアキ
+ニイ,ヨシコ
+ニイデ,ヒデツグ
+ニイクラ,ヒデヤ
+ニイズマ,タイチロウ
+ニカミ,アキラ
+ニシバヤシ,マサヒコ
+ニシダ,ヨシヤ
+ニシハラ,シキコ
+ニシハラ,サトシ
+ニシカワ,タカヒロ
+ニシカゼ,カズノリ
+ニシミヤ,サトシ
+ニシムラ,シンイチ
+ニシムラ,キワム
+ニシヤマ,ヒトシ
+ニシヤマ,モトアキ
+ニッタ,カツアキ
+ニワ,キヨシ
+トウゴウ,マナブ
+ニワ,カツヤ
+ノブハラ,コウジ
+オガワ,ユウコ
+ノガミ,オサム
+ノガミ,ジュンイチ
+ノモト,ミカ
+ノムラ,マナブ
+ノムラ,タカヒロ
+ノゾエ,ハジメ
+ヌマタ,テツ
+オダジマ,エリ
+オオガエリ,トオル
+オガタ,ヒデキ
+オガワ,シゲル
+オガワ,タケオ
+オオギ,タケシ
+オギクボ,ヨウジロウ
+オゴ,トモキ
+オグラ,ヒロユキ
+オオバ,トモヒロ
+オオバヤシ,ヨリコ
+オオエ,ヨウイチ
+オオガマ,コウイチ
+オハシ,ナオキ
+オオイシ,ケンジ
+オオカワ,ヤスヒコ
+オオキド,マサオ
+オオクボ,ヒロユキ
+オオクボ,ヒロフミ
+オオクマ,マコト
+オマ,マモル
+オマエ,ムツロウ
+オマエ,タカシ
+オオモリ,トモヒロ
+オオモリ,ミツヨシ
+オオモリ,ナオキ
+オオモリ,ヒロキ
+オオモリ,マサヤス
+オオモト,ミツル
+オオニシ,アイコ
+オオニシ,ケンジ
+オオニシ,マサテル
+オノ,アキラ
+オオヌマ,ヒロキ
+オオサカ,リサ
+オオサワ,タカヒロ
+オオサワ,スミコ
+オシマ,タカシ
+オシロ,シンイチ
+オオタ,アサコ
+オオタ,アツオ
+オオタ,ヒデユキ
+オオタ,マサミ
+オオタ,ムネヤス
+オオタ,シンイチロウ
+オオタニ,ヤスヒロ
+オオツ,ヒロユキ
+オオツカ,タカシ
+オオツキ,アキヒロ
+オイカワ,ミチオ
+オカ,ヨシヒサ
+オカ,ヒデキ
+オカ,フミコ
+オカダ,ミキ
+オカダ,ヤスシ
+オカダ,ユウイチ
+オカダ,サトル
+オカグチ,ノブヒロ
+オカイ,ユタカ
+オカマツ,タカヒロ
+オカモト,ヨシアキ
+オカモト,エイイチ
+オカモト,ヒデオ
+オカモト,マサブミ
+オカモト,マサヒロ
+オカモト,ミチハル
+オカモト,ノリオ
+オカノ,トモヒロ
+オカザキ,ユキト
+オキモト,エツコ
+オクノ,ヨシタミ
+オクヤマ,ヤスオ
+オオミ,シゲル
+オオノ,ナオキ
+オオノ,ヒロフミ
+オオノ,ヒロシ
+オオノセ,ジュンコ
+オノザキ,タカシ
+オリエ,ヨシコ
+オザキ,マサコ
+トクミヤ,テツヤ
+サイチ,カオリ
+サイトウ,シンイチ
+サイトウ,ヒトキ
+サイトウ,ヒデアキ
+サイトウ,ヒロタカ
+サイトウ,ユタカ
+サイトウ,ヤスヒコ
+サイトウ,タイシ
+サイトウ,カオル
+ハカマダ,カヨ
+サカグチ,コウジ
+サカイ,マリコ
+サカキバラ,タカオ
+サカキモト,ヨシエ
+サカモト,エイジ
+サカモト,エリ
+サカモト,ヒデヒロ
+サカモト,イズミ
+サカモト,ケイイチ
+ミタニ,ケンイチ
+サカウチ,クニヒコ
+サキモト,マサヒコ
+サクマ,ミツル
+サクライ,モトノリ
+サノ,リキヤ
+サノ,リュウイチ
+サノ,シュウゾウ
+ササダ,シュンスケ
+ササハラ,ススム
+ササキ,タカヒト
+ササキ,トシヒコ
+ササキ,ヤスフミ
+トダニ,ツヨシ
+ササキ,セイジ
+サタケ,ツネノリ
+サトウ,ヤスヒロ
+サトウ,シンゴ
+サトウ,ヒサハル
+サトウ,ユウイチ
+サトウ,ヨシアキ
+サトウ,タカカズ
+サトウ,リエコ
+サトウ,トオル
+サトウ,ユウイチ
+サトウ,ハルオ
+サトウ,シンイチロウ
+サトウ,ノボル
+サトウ,コウジ
+サトウ,ダイスケ
+サトウ,アキラ
+サトウ,ケイタロウ
+サトウ,トモコ
+サトウ,ジュンジ
+サトウ,トモキ
+サワダ,ケイタロウ
+サワダ,マコ
+サワダ,ミチヨ
+イワタ,マユミ
+サワイ,トシヒコ
+サワイ,ソウイチロウ
+サヤノ,イクヤ
+セキ,タケシ
+セキグチ,マサヨシ
+セキグチ,ミカ
+セキグチ,アキラ
+セキネ,アキヒロ
+セキノ,タカシ
+センナ,トシミツ
+セリザワ,ヒロユキ
+セト,カツヤ
+シバタ,コウイチ
+シバタ,マサヒデ
+シバタ,ケイスケ
+シバタニ,サトシ
+シブタニ,キョウコ
+シガ,サトル
+シゲノブ,カズヨシ
+シマ,ミキコ
+シマダ,レイジロウ
+シマダ,サトコ
+シマムラ,ヨシミツ
+シミズ,タケカズ
+シミズ,サダミチ
+シモバヤシ,キヨシ
+シモガワ,コウジ
+シモヒゴシ,テツヒサ
+シモイデ,タイシ
+シナダ,カツミ
+シネイ,ユカ
+シンガイ,タダシ
+シノダ,コウジ
+シノハラ,タカヒロ
+シノザキ,トモヨシ
+シオヤ,タクヤ
+シラハマ,タロウ
+シライシ,ユウイチ
+シライシ,タカシ
+シタラ,タケシ
+ショウジ,ヒロユキ
+ショウジ,シン
+マスヤマ,マサヒデ
+シュトウ,ユミコ
+ソエダ,ヒデカズ
+ソネ,ヒデキ
+ソネダ,タクオ
+ソノベ,マサヒロ
+ソノベ,マサシ
+ソラノ,ミホ
+スダ,ナオヒロ
+スガイ,ノリユキ
+スガワラ,セイマ
+スギモト,タカヒロ
+スギモト,タカマサ
+スギウラ,ヨシノリ
+スギヤマ,マサヒロ
+スギヤマ,ヒデマサ
+スギヤマ,レイコ
+スジャク,タカヤス
+スカ,トオル
+スケガワ,ヒロユキ
+スミナガ,キミコ
+スミオカ,トモヤ
+スナヤマ,ケンイチ
+スズキ,マサヤ
+スズキ,ヒロシ
+イシイ,ヤスヒコ
+スズキ,シゲル
+スズキ,タカユキ
+スズキ,ヒデヒロ
+ヤマシロ,ヒデキ
+スズキ,ヒロシ
+スズキ,
+スズキ,カツユキ
+スズキ,カズノリ
+スズキ,コウイチ
+タバコ,クミコ
+タバタ,マサキ
+ナカジマ,テルユキ
+タバタ,ヨシツグ
+タチバナ,トシユキ
+タガミ,タイセイ
+ママダ,ケンジ
+タガワ,マコト
+タジマ,モトヒロ
+タカバヤシ,ユキ
+タカダ,トモヨ
+タカダ,タカヒロ
+タカギ,エミ
+タカギ,ダイスケ
+タカハシ,シンヤ
+タカハシ,ユキオ
+タカハシ,ヒロキ
+タカハシ,ヒロコ
+タカハシ,イズル
+タカハシ,マサキ
+タカハシ,ミショウ
+ワタナベ,マキ
+タカハシ,ヤスシ
+タカハシ,ユタカ
+タカハシ,コウヘイ
+タカハシ,マサフミ
+タカイ,ヒデキ
+タカクラ,ケンスケ
+タカクラ,シホ
+タカマチ,カツノリ
+タカマツ,アキヨシ
+マツナガ,ヤスヒロ
+タカモト,ヨシキ
+タカムラ,ノブカツ
+タカオカ,ゴウ
+タカスギ,ハルコ
+タカヤ,ヒデアキ
+タカヤマ,ヒロユキ
+キタハラ,ケンイチ
+タケダ,クニヒデ
+タケダ,マサヒロ
+タケハナ,マサカツ
+タケマツ,マサミ
+タケオカ,ミノル
+イシカワ,モトフミ
+タケシタ,ナオキ
+タケタニ,ノブユキ
+タケウチ,サトシ
+タケウチ,サトシ
+タケヤマ,タケシ
+タケザワ,キヨジ
+タキザワ,ツトム
+タキザワ,チカラ
+タマイ,トモユキ
+タナハシ,ノブユキ
+タナカ,ケンタロウ
+タナカ,コスケ
+タナカ,ヒロユキ
+タナカ,ヒロシ
+タナカ,ケイコ
+タナカ,モトキ
+タナカ,セイジ
+タナカ,カズヒト
+タナカ,ユウコ
+タナカ,エイイチ
+タナカ,エイジ
+タナカ,ツネヒロ
+タナカ,マサヒロ
+タナカ,ノリヒロ
+タナカ,カズナオ
+タナカ,ノボル
+イシダ,ケンヤ
+タナカ,カズオ
+タニグチ,シゲル
+タニグチ,ケンイチ
+タニイ,ユリコ
+タニムラ,ミチヨ
+タニオカ,トモコ
+タンノ,ユキオ
+タヌマ,マモル
+ヨコヤマ,ワタル
+タシロ,アキラ
+タシロ,ケンイチ
+タテ,ヒデト
+タウラ,マコト
+タゾエ,ユウコ
+タズケ,マコト
+テンモ,カヨコ
+テラダ,チエコ
+テラモト,エイジ
+テラオカ,ケイ
+テズカ,ヒロユキ
+トグチ,ジュンコ
+トウマ,コウイチ
+トウマ,ヒロヤス
+トオヤマ,カズユキ
+トキオカ,タカシゲ
+タニヤマ,ヒデアキ
+ミウラ,ソウイチ
+トクラ,カズオ
+トクヤマ,ヒロヤ
+トミイシ,クニヒコ
+トミカワ,ノリコ
+トミナガ,アツシ
+トミタ,フミエ
+トミタ,モトヨシ
+オオモリ,マサユキ
+トモタ,ヒデヒコ
+トモノ,ケイジ
+トリカイ,ナオキ
+トリウミ,ヨシノブ
+トツカ,アヤコ
+トヨダ,ケイイチ
+トヨダ,ミキヒロ
+トヨオカ,タクノブ
+ツチダ,コウジ
+ツダ,コウイチ
+ツジタニ,マサツグ
+ツカモト,ヨシテル
+ツカモト,ヒロアキ
+ツカワキ,マサタカ
+ツルマキ,ヨウコ
+イチバンガセ,ユキコ
+サカイ,ミホコ
+ウチダ,カズヒロ
+カナオカ,コウヘイ
+ウチダ,タツヤ
+ウチウミ,ナオヒコ
+ウチヤマ,フミタカ
+ウチヤマ,ユキ
+ウダ,アツコ
+ウダガワ,タロウ
+オシマ,アツコ
+ウエダ,エイカ
+ウエダ,ヨシミツ
+ウエハラ,ヒデユキ
+ウエムラ,マサキ
+ウエノ,オサム
+ウエノ,ヒロノリ
+ウエスギ,マサミ
+ウエツキ,タイチ
+ウカワ,マサヒデ
+ウマズメ,シンヤ
+ウメハラ,トシオ
+ウメムラ,ヒロフミ
+ウメザワ,ヒロシ
+ウノ,ヒロシ
+ウノ,ヒサヤ
+ウラモト,ケイ
+ウルマ,マサフミ
+ウシバ,ミノル
+ナガタ,リュウタ
+ウシグサ,トシアキ
+ハセガワ,ヨシアキ
+サカマキ,ユリ
+ウワベ,マサユキ
+ワダ,アキコ
+ワカオ,ケイジ
+ワカオ,レイコ
+ワキタ,ヨウコ
+イノマタ,ヒロミ
+ワクイ,マサヤ
+ワシザワ,ケイコ
+ワシズカ,コウジ
+ワタベ,マサトシ
+ワタナベ,ノリユキ
+ワタナベ,カズヒロ
+ワタナベ,シゲル
+ワタナベ,タカオ
+ワタナベ,ツヨシ
+ワタナベ,トモユキ
+ワタナベ,ダイチ
+ワタナベ,ヒデキ
+ワタナベ,ヒロカズ
+ワタナベ,ヒロミ
+トヨタ,ヒトシ
+ワタリ,ケイコ
+トミヤス,トシヒサ
+ヤエガキ,ヨシアキ
+ヤギ,ミヨコ
+ヤギ,ヨシマサ
+ヤギヌマ,ダイスケ
+ヤク,アキト
+ヤマダ,カズヒコ
+ヤマダ,マキ
+ヤマダ,ヨウコ
+ヤマギシ,アツシ
+ヤマグチ,コウイチ
+ヤマグチ,トシユキ
+ヤマグチ,カオル
+ヤマグチ,アキラ
+ヤマコシ,ダイスケ
+ヤマモト,マサヒロ
+ヤマモト,ケンジ
+ヤマモト,タケオ
+ヤマモト,セイイチ
+ヤマモト,シュウジ
+タチバナ,マサトシ
+ヤマモト,ジュン
+ヤマモト,ケンイチ
+ハラタニ,トモコ
+ヤマナカ,タカシ
+ヤマネ,ヨシフミ
+ヤマシタ,アキヒコ
+ヤマシタ,ヒロシ
+ヤマシタ,ナオコ
+ヤマタニ,タカシ
+ヤマウチ,トモコ
+ヤマザキ,アキラ
+ヤナ,ヒロアキ
+ヤナベ,ヒロキ
+ヤナガワ,リョウ
+ヤナギ,トシアキ
+ヤナギダ,リュウイチ
+ヤサカ,カズヒデ
+ヤスダ,マサミツ
+ヤスフク,ユタカ
+ヤスカワ,キヨカズ
+ヨコサワ,タクヤ
+ヨコタ,ヒロシ
+ヨコタ,カズヒロ
+ハラダ,コスケ
+ヨコウチ,マサヒロ
+ヨコウチ,シンスケ
+ヨコヤマ,マコト
+ヨコヤマ,カズノブ
+ヨネダ,ナオキ
+ヨネノ,ナオミ
+カサハラ,サトミ
+ヨシダ,ヒデオ
+ヨシダ,ジュン
+ヨシダ,ヒロシ
+ヨシダ,ナオト
+ヨシダ,ヒロシ
+ヨシドメ,シズカ
+ヨシハラ,タカヒロ
+ヨシイ,サトル
+ヨシイ,マコト
+ヨシカワ,シオリ
+ヨシミ,タイキ
+ヨシノ,フミオ
+ヨシノ,ヤスシ
+ヨシノ,トモコ
+ヨシオカ,ケンイチ
+ヨシオカ,コウイチロウ
+ヨシタケ,タダシ
+ヨシザワ,トシカツ
+ユズハラ,コウジ
+ゼンゲ,カズタカ
+ズシ,ミオ
+ゴミ,ヒロキ
+ゴトウ,ヒロシ
+イケダ,タケハル
+イマ,マサヒロ
+アベ,マナブ
+カトウ,シゲル
+カワバタ,シゲル
+コバヤシ,ユキヒコ
+コンド,クニムネ
+クボ,マサヒコ
+クラモチ,ヨウコ
+マルヤマ,ヨシアキ
+モリカク,ユキオ
+ムラオカ,ヒロユキ
+ナガシマ,ヨウコ
+ナカ,トシヤ
+ナカハラ,タクヤ
+ナカムラ,ツヨシ
+ナカセ,トミ
+ナリタ,ヒサエ
+ニシムラ,エミコ
+ノナカ,ヒデナオ
+オガワ,ヨシオ
+オグラ,トオル
+オオミ,マコト
+オカノ,マサヤ
+シマダ,ジュンジ
+シミズ,カズノシン
+シムラ,ヒデユキ
+タカハシ,ミツマサ
+タカマツ,ケンイチ
+ウエダ,ムツオ
+ウジ,ゴウ
+ウツミ,シュウイチ
+アベ,ヨウイチ
+コンド,タカシ
+タカノウチ,ケンサク
+イノウエ,ムネヒロ
+ナカハラ,ヒトシ
+アダチ,ユタカ
+ナカノ,ヒロキ
+アイバ,ノリアキ
+アイバ,タケシ
+アイバ,サトシ
+アイダ,マサヒロ
+アイハラ,アツシ
+アカイシ,マサオミ
+アカイワ,ヨシヒロ
+アカオギ,トシヒデ
+アキタ,ツヨシ
+アマノ,ナオコ
+アオキ,ヒロコ
+アオキ,ユキコ
+アオヌマ,ヒトシ
+アオヤギ,エイジ
+アラキ,アキラ
+アリマチ,トシノブ
+アリタ,ヒデアキ
+アサダ,テツヤ
+アサエダ,タカヒロ
+アサハラ,ヨシハル
+アサカワ,カズヒコ
+アサモト,ツトム
+アサノ,ユタカ
+アタグチ,ヒロシ
+アヤキ,ハルコ
+ババ,シュンスケ
+ババ,カオル
+ババ,ナナコ
+バン,タケシ
+ダイコク,ミチヨ
+ダテ,シゲヒコ
+サノ,ジュンイチ
+ミツオカ,シゲキ
+デンダ,カズヒコ
+ドイ,エミ
+エンド,トモヒコ
+エンド,ヨウイチロウ
+エザワ,ナリヒデ
+フジエ,タケフミ
+フジイ,カズヒロ
+フジイ,マサアキ
+フジマキ,マサカツ
+フジモト,ミワ
+フジモト,ミキオ
+フジムロ,コウジ
+モロズミ,カンジ
+フジサワ,ケンジ
+フジタ,ヒロユキ
+フカセ,タツヤ
+フクダ,シセイ
+フクドメ,タカシ
+フクイ,ヒサシ
+フクナガ,フミヒサ
+フクシマ,ヒデオ
+フクザワ,マリカ
+フルバヤシ,アキラ
+フルカワ,ヒデキ
+フルカワ,アケミ
+ゴウ,ハナ
+ゴマル,ススム
+ゴトウ,ショウ
+ゴトウ,タツヤ
+ゴトウ,チズカ
+ノモト,カオル
+ハギワラ,リュウタ
+ハイヤマ,キョウコ
+ハマ,カズミチ
+ハマチ,シュウイチ
+ハマダ,ナオヒサ
+ハマタニ,シゲオ
+ハナイ,ヤスヒト
+ハナタ,ヒラク
+ハネジ,ヒロコ
+ハンザワ,マサヒコ
+ハラ,ミホ
+ハラ,シンジ
+ハラダ,カズヒデ
+ハラダ,キヨシ
+ハセガワ,ユタカ
+ハセガワ,ナオコ
+ハセガワ,テツヤ
+ハシグチ,マサヨシ
+ハシモト,ヤスユキ
+ゴトウ,ケイ
+カジワラ,ヨシコ
+ハスミ,ツグノリ
+カタヤナギ,エイイチ
+ハタケヤマ,シンイチ
+ムライ,ミツユキ
+ハタニ,リュウイチ
+ハットリ,ヤスノブ
+ハットリ,タカユキ
+ハヤシ,タカユキ
+オオスミ,マサコ
+ハヤシ,カズナリ
+ハヤシ,ヨシノブ
+ハヤシダ,サキ
+ヒガ,タケオ
+ヒガシ,リュウスケ
+ヒガシダ,シュウイチ
+トヨダ,ユウイチロ
+ヒノ,タケヒコ
+ヒラ,テツヤ
+ヒラモト,ジュンコ
+ヒラオ,マサト
+ヒラオ,マサユキ
+ヒラタ,ナオミ
+ヒラヤマ,タケシ
+ヒロイ,タカシ
+ヒロカワ,ノリカズ
+ヒロカワ,ヨタロウ
+ヒロマス,カズユキ
+ヒロセ,ミツル
+ヒロセ,タカオ
+ヒシヤ,サトシ
+ホウショウ,アキコ
+ホンダ,ミホコ
+ハヤシ,ノゾム
+ホンマ,タケシ
+ホリグチ,テルオ
+ホリイ,ヒロミ
+ホシ,アキヒコ
+ホソイ,カツヤ
+ホソミ,ヤスオ
+ホッタ,マサヒデ
+フクロイ,ケンジ
+フルヤ,アキヒト
+イブカ,ソウイチ
+イチバ,タカシ
+イチハラ,ヒロシ
+イチカワ,ヒロシ
+イチムラ,ジュンイチロ
+イチノセキ,トシヒロ
+イイダ,トシヤ
+イイダ,ジュンコ
+イイジマ,ヨウコ
+シノハラ,ハジメ
+イケダ,リエ
+イケダ,ユキ
+イケダ,ユタカ
+イケダ,ヨウコ
+イケザワ,カズタカ
+イマイ,マユミ
+イマイ,ケイタ
+イマイ,クニヒコ
+イマキ,ミノル
+イマムラ,ケンスケ
+イモト,ショウイチ
+アベ,ヨシヤス
+イナダ,ユキコ
+イノウエ,トモヒロ
+イノウエ,タカシ
+イノウエ,マサヒコ
+イノウエ,カズオ
+イリエ,ヨシヒコ
+ツルオカ,ヒトシ
+オオハシ,ヒサトシ
+イシダ,ユウジ
+イシダ,ケンジ
+イシダ,コウジ
+イシダ,ハジメ
+イシグロ,ヨシキ
+イシハラ,シゲオ
+イシハラ,ジュンコ
+イシイ,ミツヒコ
+イシカワ,マサノリ
+イシカワ,アキラ
+イシワタ,マサノリ
+イトウ,タカシ
+イトウ,アキコ
+イトヤマ,トシオ
+イツキ,カズヒロ
+イワキ,コウタロウ
+イワサキ,タケシ
+イズツ,ユウジ
+ジブ,エミコ
+カドイ,テルヤス
+アダチ,ケンジ
+カイ,タカユキ
+カイセ,ヒロアキ
+カイズカ,ヒロコ
+カジワラ,ヒロシ
+カキ,カツトシ
+カキミ,コウジ
+スギタ,レイキ
+カクタニ,ヤスコ
+カミバヤシ,カツヒコ
+カミガキ,ノリヒデ
+カミヤ,サトシ
+カモダ,コウイチ
+カモト,タモツ
+カンバヤシ,モトヒロ
+カネコ,シンゴ
+カネコ,ミツヤ
+カネコ,クニヒコ
+カネコ,ミツオ
+カニサワ,タツヤ
+カル,タカユキ
+カシワギ,テツヤ
+カスミ,ヨウイチロウ
+カタギリ,ナオユキ
+カトウ,ミツヒロ
+カトウ,アツシ
+カトウ,ユウコ
+カトウ,ノブオ
+カトウ,タツロウ
+タグチ,ジュンコ
+カトウ,ケンジ
+カトウ,コウ
+カトウ,シンイチ
+カツラ,アキラ
+ソゴ,ケン
+カワヒト,マコト
+カワイ,リエコ
+カワカミ,コウジ
+カワミ,シゲル
+カワムラ,シンジ
+カワムラ,テルキ
+カワサキ,ヒロシ
+カワサキ,トモカズ
+カワウチ,マサアキ
+カツキ,アキトモ
+キダ,ヘイジ
+キドコロ,ヒロシ
+モリ,ケンジ
+キクチ,マコト
+キクガワ,ミエ
+キムラ,ミツヒロ
+キムラ,サトル
+キムラ,タケシ
+キムラ,タクミ
+キノシタ,トヨキ
+キノシタ,ヨシアキ
+キノシタ,ヨシハル
+キノシタ,ユカリ
+キシダ,ユキコ
+キシカワ,マサヒコ
+キタ,トシオ
+キタグチ,ケイスケ
+アマノ,ミチヨ
+キタムラ,マナブ
+キタヤマ,チヒロ
+コバヤシ,ナオト
+コバヤシ,モトノリ
+コバヤシ,ヒロユキ
+コバヤシ,ヤステル
+コバヤシ,トモアキ
+コバヤシ,ジュンジ
+アメシタ,ナオキ
+コバヤシ,コウイチ
+コバヤシ,ヒロミ
+コバヤシ,ケンジ
+コバヤシ,キヨタカ
+コバヤシ,マユミ
+コバヤシ,ダイスケ
+コバヤシ,タカヒロ
+オダ,マサヒコ
+コボリ,ヒデミ
+コダイラ,ノブヒロ
+コダマ,セイジ
+カワグチ,アツシ
+コダテ,ミツル
+コガ,ノリユキ
+コガ,アキラ
+コガネマル,マサミ
+コハラ,トモナリ
+コウダ,ケンイチ
+コンノ,マナブ
+コザイ,コウイチ
+コイケ,アキオ
+コイズミ,マサオ
+コジマ,ヤスロ
+コジマ,ケン
+コマツ,タカシ
+コモリ,ヨシタカ
+コンド,トモノリ
+コンド,イサム
+コンタ,ケンイチ
+コタカ,ミツノリ
+コタケ,マサキ
+コヤマ,トウロク
+クボ,ヒロシ
+クボキ,イクコ
+クボタ,ヨウイチ
+クガ,タツジ
+クマガイ,ヤスナリ
+クニモリ,ヨウイチ
+クラモト,ジュン
+クラサワ,アツシ
+クラシナ,カツヒト
+クラタ,サトシ
+クリモト,タケオ
+クリタ,ヨシマサ
+クロダ,トシカズ
+クロダ,ヒデアキ
+クロカワ,シンゴ
+クロキ,ツヨシ
+クロサキ,リョウイチ
+クロサワ,ヒロユキ
+クリュウ,ケンジ
+クワタ,マサヒコ
+クズミ,タカヒロ
+マブチ,タクミ
+マエダ,ヤスヒロ
+マエダ,ケイシ
+マエガワ,アキヒコ
+マエカワ,ヤストシ
+マキオ,セイイチ
+マメハラ,アキヒロ
+マサダ,ヒロユキ
+マスダ,ヨウスケ
+マスダ,ヒロシ
+マスダ,タカシ
+マスダ,トモコ
+マスヤマ,リツコ
+マツダ,ムツミ
+マツダ,ナオミ
+マツエダ,ツヨシ
+マツイ,タカマサ
+マツモト,ケンタロウ
+マツモト,ケイジ
+マツモト,セイイチ
+マツモト,ユウイチ
+マツモト,シュウイチ
+マツモト,ヨウタロウ
+マツナガ,マサユキ
+マツノ,ヤスヒコ
+マツノ,シンイチ
+マツオカ,ミチコ
+マユミ,アキラ
+メカタ,ヒロキ
+メラ,コウジ
+ミタニ,タロウ
+ミタニ,ミチヒト
+ミト,ユミコ
+ミヤガミ,シゲヒサ
+イオキ,マサアキ
+ミヤモト,アキヒロ
+ミヤムラ,トモユキ
+ミヤノ,タカアキ
+ミヤウチ,マサハル
+ミヤザキ,マサカツ
+モチズキ,ユキ
+モモイ,ヒデマサ
+モリ,ユカ
+モリ,クミコ
+モリモト,ヨウイチ
+モリモト,ムツコ
+モリオカ,ケンジ
+モリサワ,トモヒロ
+モリタ,カズヨシ
+モリタ,ヒロノブ
+モリタ,アキヒコ
+モリタ,シンヤ
+モリヤマ,タカシ
+モリヤマ,タツヒコ
+モテギ,トオル
+ムラカミ,マサアキ
+アサノ,ケンゴ
+アユカワ,サトシ
+ムラオ,ダイスケ
+ムラオカ,シゲル
+ムラタ,トモカズ
+ムシアケ,エミコ
+ムタ,ヒサシ
+ナベイ,マサヒロ
+ナガイ,コウイチ
+ナガイ,マサコ
+ナガミネ,サユリ
+ナガサワ,タダシ
+ナガタ,テツオ
+ナガヤマ,テツヤ
+ナグラ,ユミコ
+ナイトウ,ヒロシ
+ナカガワ,リュウジ
+ナカガワ,ユミコ
+ナカガワ,ヤスシ
+ナカガワ,マサヒロ
+ナカハラ,タカコ
+ナカイ,シゲル
+ナカイ,タカヒロ
+ナカジマ,トオル
+ナカジマ,ユミコ
+ナカジマ,カツヤ
+サワダ,ミエコ
+ナカムラ,アキノブ
+バンバ,テツヤ
+ナカムラ,ヒデヒト
+ナカムラ,コウイチ
+ナカムラ,マサノリ
+ナカムラ,カズオ
+ナカムラ,マリ
+ナカムラ,タケシ
+ナカムラ,アキヒロ
+ナカノ,フミコ
+ナカノ,ヒロカズ
+ナカオ,ノブユキ
+ナカシマ,ヤスヒロ
+ナカタ,コウイチ
+ナカタ,アキコ
+ナカヤマ,ナオヤス
+ナカヤマ,ヒロフミ
+ナカヤマ,アキヒロ
+ナカヤマ,ケイコ
+ナカザワ,カツヤ
+ナカザワ,ケイスケ
+ナガオカ,ユタカ
+ナナシャ,ヨシヒロ
+ナリタ,ツヨシ
+ナリタ,マコト
+ナス,タケシ
+ナスタ,ヒロシ
+ニシ,カネノブ
+ニシダ,ノブユキ
+ニシムラ,サチオ
+マサダ,タケヒコ
+ニシムラ,トモコ
+ニシムラ,マサユキ
+ニシオ,ヨシタダ
+ニシヤマ,ミナコ
+ニッタ,カオリ
+ノガミ,ヤスヒロ
+ノナカ,タカヒロ
+ノセ,ヒデオ
+ノタベ,シンゴ
+ノト,ジュンイチ
+ノテ,ヒロキ
+ヌクイ,マサヒロ
+オチ,アキヒコ
+オチアイ,トシユキ
+オダ,ヨシカズ
+オガサワラ,ユウジ
+オガワ,ヨウジ
+オガワ,コウジ
+オガワ,マサヒコ
+オガワ,マサヤ
+オガワ,ナオタケ
+オガワ,トモミ
+オギノ,マコト
+オオバ,マサヒデ
+タキミヤ,ユキオ
+オオハシ,タダユキ
+オオハシ,タクミン
+オオイ,チサト
+オオカワ,エミ
+オオモリ,ジュンカ
+オムラ,マユ
+オナカハラ,タケツグ
+オオニシ,ヨシノリ
+オノ,アキコ
+オオオカ,タカシ
+オシマ,ノブ
+オシマ,ケンイチ
+イケマツ,タカコ
+オオタ,タケシ
+オオタ,タカシ
+オオタ,サチコ
+オオタ,タミコ
+フクダ,ミエ
+オゼキ,ケイイチ
+オイダ,ヒトシ
+オイジ,クニヒロ
+オカダ,シンジ
+スギモト,タカユキ
+オカザキ,ヤスヒロ
+オカザキ,ヤスシ
+オカザワ,ヒトシ
+オクダ,テツヤ
+オクダ,マサキ
+オクムラ,シゲル
+オクムラ,ヒデヒト
+オクノ,コウタロウ
+オクヤマ,アキヒロ
+オノ,ナオミ
+オオヌキ,ヒデノリ
+オオハシ,トシオ
+トオヤ,マサヒロ
+オトグロ,ノブユキ
+サイゴウ,タケヒロ
+サイトウ,ヨシタロウ
+サイトウ,アキヒサ
+サイトウ,フミヒコ
+サイトウ,ヒロキ
+サイトウ,ヒロシ
+サイトウ,ジュン
+サイトウ,カンジ
+サカエダニ,ミカ
+サカイ,ノブヤス
+サカイ,トクジロウ
+サカタ,ツヨシ
+サカタ,カズヒコ
+サクマ,タカヒロ
+サクラバヤシ,アツシ
+サクライ,マツオ
+サクタ,ヨシアキ
+ササキ,マサカズ
+ササキ,アキラ
+ササキ,サチコ
+ササキ,ヨシユキ
+ササメ,ヨウイチ
+サトウ,カズノリ
+サトウ,マサヒコ
+サトウ,ヨシヒロ
+サトウ,ヨシロウ
+サトウ,ハジメ
+サトウ,ヒロミ
+サトウ,ヒロシ
+サトウ,コウジ
+サトウ,ショウジ
+サトウ,ヤエ
+サトウ,クミコ
+サトウ,ヒロヤス
+サトウ,リエ
+サワダ,タカネ
+サワハシ,タツユキ
+サワノ,カズヒロ
+セグチ,シュウヘイ
+セキ,トモコ
+セキグチ,ヨシヒロ
+セキグチ,サトシ
+シバ,カオリ
+シバタ,アヤコ
+シバタ,マサハル
+シブヤ,タカシ
+シマダ,シュウジ
+シミズ,カツユキ
+イシカワ,タカユキ
+シミズ,トモヒロ
+シミズ,カツユキ
+シミズ,ケンジ
+シミズ,ケンタロウ
+フジエダ,コウイチロウ
+シモヤマダ,シンイチ
+シナガワ,トモヒデ
+シンヤ,ミツノリ
+シオミ,シンジ
+シオツ,カツヒコ
+セキグチ,トオル
+ツノダ,タカシ
+シラサカ,アツオ
+シロシタ,ヒロユキ
+シタラ,ヒサシ
+ショウ,ジュンイチ
+スガワラ,ミホ
+スガワラ,サトシ
+スギモト,ショウイチ
+スギタ,トモカズ
+スギタ,マサヨリ
+スギタ,カツヒコ
+スギウラ,サトコ
+スギウラ,トヨヒサ
+スギヤマ,ミズホ
+イケゾエ,マサトシ
+スギヤマ,ヒロアキ
+スカ,トモユキ
+スケガワ,ノブヨシ
+スミノウエ,ヒデキ
+スミヨシ,タネカズ
+スミヨシ,トシミツ
+スナミ,ヒロユキ
+スズキ,ヤチヨ
+スズキ,マモル
+スズキ,アキヒロ
+スズキ,アキラ
+スズキ,ヒロアキ
+スズキ,イッペイ
+スズキ,マサト
+スズキ,ノブアキ
+ショウジ,シズ
+ショウ,ショウタロウ
+タバタ,ソウイチロウ
+タダ,トシオ
+タドコロ,ヒデユキ
+タガミ,コウジ
+タグチ,タカシ
+タグチ,ヒロアキ
+タイ,マサテル
+タイラ,アツシ
+タイサ,ミツヒロ
+タジマ,キヨシ
+タカダ,タダナオ
+タカダ,エツロウ
+タカギ,テツロウ
+タカハシ,アツヤ
+タカハシ,ヒロシ
+タカハシ,トオル
+タカハシ,ナオキ
+タカハシ,サトシ
+タカハシ,ユウジ
+タカハシ,トシオ
+タカハシ,ユウスケ
+タカハシ,ナオキ
+タカハシ,ヨシフミ
+タカイ,シノブ
+タカノ,カンコ
+タカシマ,ナオヤ
+タカヤマ,ヒデツグ
+タケダ,カズヨシ
+タケイチ,ケイスケ
+タケマサ,ケンイチ
+タケムラ,シホ
+タケムラ,シュンスケ
+タケナカ,ナオト
+タケシタ,ショウゾウ
+タケウチ,アツト
+タケウチ,ヒトシ
+タケウチ,エイイチロウ
+タキカワ,アツシ
+タキキタ,タカシ
+タキザワ,ヒデト
+タコ,ヨシキ
+タカノ,モトユキ
+タマガワ,ヒロユキ
+タマキ,オサム
+タムラ,カズタカ
+タナベ,ヒロノブ
+タナベ,フミオ
+タナカ,キョウヘイ
+タナカ,キョウコ
+タナカ,ミホ
+タナカ,ヨシヒサ
+タナカ,ヨウコ
+タナカ,マサヨシ
+タニ,カズナリ
+タニグチ,ノブヒロ
+タニショウ,シンゴ
+タテヤマ,ヨシフミ
+タツミ,マスミ
+タウラ,タカトシ
+タザワ,トモユキ
+タズケ,セイイチ
+テラダ,ケイコ
+トウマ,カズヒロ
+トオヤマ,カズヒロ
+トメオク,アキオ
+トミイエ,ハヤト
+フタツギ,ヒロシ
+トモトシ,ケンジ
+トネガワ,アキコ
+オクムラ,ノリヒコ
+トシシゲ,ヒロシ
+トヨダ,カズナリ
+トヨナカ,マサヤ
+ツバキ,テツヤ
+ツチモト,フミオ
+ツダ,サトシ
+ツダ,カヨ
+ツダ,トシエ
+ツジイ,トモタカ
+ツジムラ,ノリコ
+ツカハラ,トシロウ
+ツノダ,ショウジ
+ツルギ,ハルヒコ
+ツルタ,テルヒコ
+ツシマ,キヌヨ
+ツツイ,ヒロユキ
+ツチダ,カツユキ
+ウチダ,サトル
+ウチダ,タクジ
+ウチクラ,タケシ
+ウチタニ,カツコ
+ウエダ,サキコ
+ウエダ,チエ
+ウエダ,ガク
+ウエダ,アキノリ
+ウエムラ,ヒロコ
+ウエノ,ヒロシ
+ウエツキ,マキ
+イケ,マサル
+ウメダ,ミホ
+ウメムラ,ナツコ
+ウノキ,ノブヒコ
+ウラシタ,トモコ
+ウラタ,トモユキ
+ウシオ,ヨシオ
+ウタガワ,テツヤ
+ワダ,トモコ
+ワダ,アキヒト
+ワダ,ヒロタツ
+ワダ,マサヒロ
+ワガツマ,ショウイチ
+ワカマツ,ユウジ
+ワキタ,ヒロアキ
+ワコ,ヒロカズ
+ワリカタ,ナオユキ
+ワシズ,ショウ
+ワタナベ,シュンジ
+ワタナベ,ヨシユキ
+ワタナベ,トシオ
+ワタナベ,ガク
+ワタナベ,ヒロフミ
+オムラ,ヒロヒデ
+ワタナベ,コウセイ
+ワタナベ,ナオコ
+ワタナベ,リュウイチ
+ワタナベ,テツロウ
+ヤギ,トモミ
+ヤギ,ユウコ
+ヤマダ,タカト
+ヤマダ,ノリトシ
+ヤマダ,ヒデフミ
+ヤマダ,シゲオ
+ヤマダ,タケヒロ
+ヤマフク,ヒデオ
+ヤマグチ,マリコ
+ヤマグチ,ヨウジ
+ヤマグチ,ヨウコ
+ヤマグチ,ヒロカズ
+ヤマジ,トオル
+ヤマカワ,コウジ
+ヤマモト,タカノリ
+ヤマモト,ケンイチ
+ヤマモト,ミツゾウ
+ヤマモト,ユキコ
+ヤマモト,ヒロヤス
+ヤマモト,コウジ
+ヤマモト,マサキ
+ヤマモト,ユウジ
+ヤマモト,ユタカ
+ヤマナ,セイイチロウ
+ヤマサキ,カツミ
+ヤマシタ,ノリトシ
+ヤマシタ,トオル
+ヤマザキ,ヒロシ
+ヤナギ,リョウ
+ヤノ,ケンタロウ
+ヤシロ,タケシ
+ヤスイ,フトシ
+ヤスムロ,タカシ
+ヤスウジ,ヨシユキ
+ヨコエ,ヒデノリ
+ヨコイ,マヤ
+ヨコミゾ,キヨシゲ
+ヨコヤマ,マサヒコ
+ヨネザワ,カズヒコ
+ヨシダ,ケンヤ
+ヨシダ,ノブヒロ
+ヨシダ,カツヤ
+ヨシダ,カズアキ
+ヨシダ,トモミ
+ヨシイ,シゲト
+ヨシムラ,テルカズ
+ヨシヤマ,エイジ
+ヨシザワ,サチコ
+フジシマ,ケンタロウ
+ユアサ,ケイ
+ユキ,セツコ
+ユキ,アキヨ
+ユイ,ダイスケ
+アダチ,ナオタケ
+バン,タカシ
+フルイ,ヨシノリ
+ハセガワ,ハジメ
+ヒラカワ,マナブ
+イトウ,トシヒコ
+イワサキ,リョウジ
+カトウ,ケンジ
+カワハラ,ヨシミツ
+マエハラ,オサム
+マツタニ,シゲオ
+モリイチ,エイジロウ
+ニシウチ,ノブユキ
+フジマキ,タイゾウ
+オオハラ,タカシ
+サナダ,ヒデアキ
+ソネ,ツトム
+トノムラ,ヨシユキ
+シミズ,ケイ
+ミシマ,マリコ
+フジタ,タロウ
+フジタ,ヒデキ
+フジタ,ヨウ
+フジワラ,コウジロウ
+フジュウ,シンイチ
+フカダ,タクヤ
+フクダ,ユタカ
+フクヒサ,ナオタカ
+フクザト,アヤ
+フクザワ,タカシ
+フルサワ,キハル
+ハガワ,タカシ
+ハギ,ヒロタカ
+ハラダ,ミツル
+ハラダ,ノブヒロ
+ハラダ,マキ
+ハラマキ,ナオコ
+ハセガワ,リエ
+ハセガワ,ヒデアキ
+ハシオ,ユカ
+ハスミ,ヒロシ
+ハスミ,ケンイチロ
+ハットリ,ヨリコ
+イシカワ,ブンペイ
+ハヤシ,タカコ
+ヒラノ,タクヤ
+ヒラノ,カズアキ
+ヒラノ,トシアキ
+ヒロベ,ヒデキ
+シノダ,ケンジ
+ヒサダ,タカユキ
+ホ,タケシ
+ホンゴウ,テルヒコ
+ホシ,ミチコ
+ホシノ,マサキ
+ホソカワ,ヒロカズ
+ホソノ,ユミ
+カトウ,ヨシロウ
+イギ,ヨウコ
+イケダ,トシユキ
+イクロ,ノリヒロ
+イマイ,カズヨシ
+イナダ,コウヘイ
+イノグチ,タカユキ
+イシグロ,ツグカズ
+イシカワ,ヒロキ
+イシカワ,ケンジ
+イシザキ,ユカリ
+イシゼキ,ヨシト
+イトウ,テツヤ
+イトウ,マサヨシ
+イトウ,ナオキ
+イトウ,ヨシミ
+イマガワ,ケイ
+イザワ,コウジ
+イズミ,ショウジ
+イズミダテ,ノリトシ
+カブラギ,カオリ
+カミヤマ,トオル
+カナヤマ,コウジ
+カナザワ,ジロウ
+カンバラ,カツヨシ
+カンダ,ユウコ
+カンダ,ミスマル
+カネコ,ナリトモ
+カシムラ,ヒロシ
+カタギリ,シンスケ
+カトウ,ヒロノリ
+カトウ,ノブヒサ
+カワダ,ハルミ
+カワスミ,ヨウコ
+キド,シュンイチ
+キクチ,ノブヒロ
+キモト,タクヤ
+キムラ,ケンタ
+キンド,ミチハル
+キタムラ,ミホ
+キタノ,サダオ
+キタワタセ,ススム
+キッタ,ヤスコ
+キヤマ,セイジ
+キヨタ,ヒロユキ
+コバヤシ,ジュンジ
+コバヤシ,ヨウコ
+コガ,アツヤ
+コハラ,タカユキ
+コジナ,ケン
+コンノ,ケイゴ
+コズカ,マサキ
+コイデ,シンジ
+コマツ,リュウスケ
+コミナト,シュウジ
+コモリ,サトコ
+コンド,ヒロヒコ
+コニシ,ノリコ
+クボヤマ,タダアキ
+クマガイ,リョウジ
+クマタ,タカコ
+クリハラ,タケシ
+クリハラ,ケイコ
+クリタ,サトシ
+クサノ,ヒロフミ
+クシダ,アキヒコ
+マエダ,ユキ
+マキ,ケイスケ
+マキタ,シンジ
+マルヤマ,ツネオ
+マスダ,ダイチ
+マツバラ,チカラ
+マツバラ,ヒデトシ
+マツイ,ケイコ
+マツモト,マサユキ
+マツムラ,シンタロウ
+マツオ,カズヒロ
+ミカミ,ミツオ
+ミキ,タカアキ
+ミノウラ,セイジ
+ミシマ,ケンイチ
+ミツナガ,ヨシユキ
+ミウラ,マサノリ
+ミワ,タカノブ
+ミヤオ,ヤスハル
+ミヤタ,カナウ
+ミズタニ,カズヒコ
+ミズタニ,ヒデノブ
+モチズキ,ミツル
+モチズキ,クミコ
+モチズキ,ノブユキ
+モギ,ヒロシ
+モリ,サトル
+モリ,タダヒコ
+モリ,タダユキ
+モリ,トモヒサ
+モリ,トシキ
+モリヤマ,トシオ
+モロオカ,ユキ
+モトバ,ダイサク
+ムネト,カツマサ
+ムライ,ヨシコ
+ムラオカ,ケン
+ムロイ,ヒデヒロ
+ナガフジ,キミヒト
+ナガイ,アキラ
+ナイトウ,ユキコ
+ナイトウ,タロウ
+ナカガワ,ミノル
+ナカハラ,ミヤコ
+ナカジマ,ユタカ
+ナカジマ,マサヒコ
+ナカムラ,タケシ
+ナカムラ,ヒロシ
+ナカムラ,アヤ
+ナカムラ,アキラ
+ナカムラ,アキラ
+ナカムラ,アツシ
+ナカムラ,ヒサト
+ヤマダ,タカシ
+ナカオ,エイジ
+ナカツカサ,キヨシ
+ナカヤマ,マリ
+ナムラ,ムネユキ
+ナスノ,ナオキ
+ニイゼキ,トシハル
+ニシカワ,コウゾウ
+ニシキオリ,ヨシアキ
+ニシザワ,カツノリ
+ノアキ,ヨウコ
+ノダ,ケンタロウ
+ノダ,ユウコ
+ノグチ,ヒサシ
+ノムラ,ヒデキ
+オチアイ,コスケ
+モリ,マリコ
+オガサワラ,ミツヒサ
+オガサワラ,タツシ
+オガワ,リョウコ
+オガワ,タカヒロ
+オガワ,ヤスヒサ
+オグラ,フミノリ
+オグラ,マサキ
+オオイシ,ヒロヤ
+オオカワ,トシアキ
+オオカワ,ジュンコ
+オカゼ,ナオキ
+オキ,テツヤ
+オムラ,アツシ
+オオスミ,マサヒロ
+オオタ,フミヒコ
+オオタケ,テツジ
+オオタニ,ケン
+オオヤマ,ケンジ
+オゼキ,ヒロシ
+オカモト,ジュン
+オカムラ,コウシン
+オカムラ,マモル
+オクムラ,マナミ
+オンダ,ノリヒコ
+オノデラ,ノリユキ
+オヤベ,タカノリ
+サガ,トシアキ
+サイトウ,ユウコ
+サカイ,サナエ
+イギ,アキノリ
+サカモト,ヒサネ
+サカモト,ヨシヒロ
+サカツギ,カズオ
+サカウエ,ケンジ
+サクマ,マリコ
+サクラ,エイキ
+サナダ,ヨシヒロ
+ササキ,タケオ
+ササキ,ナオヤ
+サトウ,カツユキ
+サトウ,タカヒロ
+サトウ,トシアキ
+サトウ,シュウイチ
+サトウ,ヒデヒサ
+サトウ,カツヒロ
+サトウ,キョウコ
+サトウ,ヤスヒト
+サトウ,カズヒデ
+サトウ,サトミ
+セイケ,マサノリ
+セキ,ヨウイチ
+セキ,テツヤ
+セキ,テツ
+セキグチ,タケシ
+セタ,トシオ
+シンガイ,アキコ
+シバタ,ヨシコ
+シバタ,ユキノリ
+シブキ,ジロウ
+シゲトミ,カズミツ
+シガ,ヒロシ
+シイバ,ミカ
+シマダ,イチロウ
+シマカワ,シゲル
+シミズ,ススム
+シミズ,タカツナ
+シミズ,オサム
+シミズ,タカシ
+シモムラ,タカシ
+シモムラ,アキラ
+シオジリ,ヒロシ
+シオザワ,アヤコ
+シライ,ユウコ
+シラカワ,フミエ
+ソマン,ジン
+ソウヤ,マサト
+ソノダ,マユミ
+スダ,トモハル
+スガノ,ケンイチ
+スガヌマ,サトシ
+スガワ,セイイチ
+スギウラ,キョウスケ
+スギヤマ,トモヒロ
+スズキ,ケン
+スズキ,コウジ
+スズキ,アツシ
+スズキ,シンイチロウ
+ショウジ,テツヤ
+タグチ,カツヤ
+タイラ,タダト
+タジマ,リエ
+タカダ,タカノリ
+オカヤマ,アサコ
+タカギシ,ミカコ
+タカハシ,シンイチロウ
+タカハシ,ヤスシ
+タカハシ,マサヨシ
+タカハシ,トオル
+タカハシ,キョウコ
+タカキ,ヨウイチ
+タカオカ,タクヤ
+タカオカ,ヒロユキ
+イマイズミ,ヨシオ
+タカサワ,タカシ
+タカス,ツヨシ
+タケイ,セツコ
+タケナカ,タケシ
+タケザキ,ヨシコ
+タマイシ,ヒデアキ
+タマキ,シゲル
+タナカ,アキラ
+タニグチ,ナオキ
+タウチ,ヒロナオ
+テラミツ,ダイスケ
+トダ,マヤ
+トミナガ,シンイチロウ
+トミタ,アキヨ
+トングウ,ヒデトシ
+ツネカワ,ヒロフミ
+ツツイ,カツヨシ
+ウチダ,タケシ
+ウチハシ,タクオ
+ウエダ,マサヒコ
+イトウ,ヨウイチ
+ウエダ,ヒロシ
+ウエハラ,ヒデアキ
+フジタ,シホ
+ウメダ,テツヤ
+ウメハラ,ヤヨイ
+ウラベ,ヒサコ
+ワタベ,ヤスシ
+ヤガサキ,スミカ
+ヤギモト,ヒロシ
+ヤジマ,カツミ
+ヤマダ,ミチコ
+ヤマダ,タカシ
+ヤマダ,ミカコ
+ヤマグチ,サトコ
+ヤマグチ,トモコ
+ヤマモト,ヤスヒロ
+ヤマモト,ヤスヒロ
+ヤマモト,ナオキ
+ヤマモト,コウジ
+ヤマネ,カズヒロ
+ヤマサキ,ハルノリ
+ヤマシタ,カズキ
+ヤマザキ,マサユキ
+ヤマサキ,トシヤ
+ヤナガワ,タケシ
+ヤナギダ,ヤスオ
+オノ,ヒデノブ
+ヤナギサワ,ヤスシ
+ヤザキ,ナオキ
+ヤザワ,セイジ
+ヨコヤマ,ヒロコ
+ヨコヤマ,タケシ
+ヨモ,キョウジ
+ヨシダ,ヒデオ
+ヨシダ,ユウジ
+ヨシダ,ハルヒコ
+ヨシハラ,アユミ
+ヨシハラ,マサヒデ
+ヨシモリ,タカシ
+ゼッツ,ヒデヨ
+アベ,ヨシタダ
+アダチ,コウジ
+アイカワ,ヒロフミ
+アカエ,ミチコ
+アンドウ,マキ
+アサミ,ミサ
+イマナカ,ハルヨ
+ベップ,ユウスケ
+ベップ,ヒロアキ
+チカハラ,オサム
+フジイ,ミツトシ
+フジサキ,タカユキ
+フクシマ,アズサ
+クロダ,トシミ
+モリ,マサヒデ
+ワタナベ,タカエ
+クロダ,アサコ
+ミヤウチ,ジュンコ
+イトウ,キクコ
+イイダ,マユミ
+カワノ,マイ
+アイウラ,トシオ
+ノザキ,テルアキ
+ビタニ,アヤミ
+タニアイ,ダイスケ
+アオキ,ジュンイチ
+オキ,キサク
+アオキ,カズユキ
+アオヤギ,ケンタ
+アカニシ,ナオヒロ
+アサオ,マサヒコ
+アサクラ,カエ
+アシザワ,カズキ
+アタク,ヒロシ
+アダチ,ユウコ
+イトウ,ユリ
+シマモト,アトム
+サイトウ,マサル
+シノハラ,カツミ
+オカノ,ヒデコ
+オカモト,ヒロシ
+ヒラカワ,ヨゴロウ
+スガヌマ,トモミチ
+アナザワ,ミノル
+アライ,トシカズ
+アライ,キンヤ
+アラカワ,ユミコ
+アラカネ,アキコ
+アラキ,シゲノリ
+アンドウ,ヒロヒサ
+イウチ,マコト
+イケダ,ヤスヒロ
+イケヤ,マサキ
+イシカワ,ヒロシ
+イシカワ,マサミ
+イシカワ,ヒロシ
+イシカワ,コウイチ
+イシガキ,ヒロシ
+イシグロ,カオル
+イシハラ,マサキ
+イソムラ,クミコ
+イタガキ,キヨミ
+イイダ,シロウ
+イチカワ,ソヨ
+イチカワ,ヨシトシ
+イデ,イタル
+イトウ,ヒロフミ
+イヌイ,マキト
+イノウエ,ノブヒロ
+イマニシ,ムネタカ
+イマハヤシ,シンイチ
+イワサキ,マサツグ
+イワサキ,マユミ
+イワモト,ケイイチ
+ウエノ,エイジ
+ウエノ,カズノリ
+ウチイケ,ヨシアキ
+ウチヤマ,ヨシタカ
+ウメダ,シュウジ
+ウメムラ,サヨ
+ウメモト,チホコ
+ウルシバラ,ヨシヒコ
+エグマ,エリ
+エラ,ナオヤ
+オウサカ,マサタカ
+オオカワ,マサミツ
+オオサワ,マサヒコ
+オシマ,ヨシタカ
+オシマ,マナブ
+オオスガ,タツヒコ
+オオタニ,ヒデキ
+オオツ,マサフミ
+オオツカ,タダヒサ
+オネ,マサユキ
+オオノ,アキラ
+オオハシ,ケンイチ
+オオハシ,ケンゴ
+オオバヤシ,シンジ
+オオヨシ,タカユキ
+オカモト,タダユキ
+オガサワラ,ヨシコ
+オガワ,ヒデノリ
+オクタニ,ゴウ
+オクムラ,ユウコ
+オグラ,ヒロコ
+イイカワ,ケンイチロ
+オグラ,サトシ
+オザワ,タカノリ
+オザワ,ヒデヒコ
+オオノ,ヤスノリ
+カキモト,レイコ
+カキモト,ヒロシ
+カゲヤマ,トモミ
+イシカワ,ヒロシ
+カソリ,ヤスヒト
+カツミ,ナオキ
+カトウ,ナオコ
+カトウ,ノリコ
+カトウ,シゲノリ
+カトウ,ダイスケ
+カトウ,ケイジ
+ケズカ,アキラ
+カドワキ,ミツシロウ
+カネコ,アキヒロ
+カノウ,ノリコ
+カミヤマ,ヒロカズ
+カワシマ,ヒロユキ
+カワセ,サトル
+カワノ,カズキ
+カワモト,マサタカ
+カワモト,シン
+カワセ,ナオキ
+カンダ,ヒデトシ
+キクチ,ヒサユキ
+キクチ,アキコ
+キクチ,ノブオ
+キタアラシ,マイコ
+キタオカ,ミユキ
+キタジマ,アキヒロ
+キタムラ,タケミ
+キタムラ,アツシ
+キテラ,サトシ
+キノシタ,ジュンコ
+キムラ,タカヒロ
+キリウ,タケシ
+クサカベ,マエコ
+クボタ,コスケ
+クマガイ,ケンジロウ
+クマノ,サリ
+クリハラ,マサト
+クルシマ,アキヨシ
+ナカガワ,チカ
+コイデ,ヒデキ
+コンノ,マサシ
+コモト,ユウコ
+コガ,クニハル
+コジマ,タイジ
+コニシ,カヨコ
+コバヤシ,セイウ
+コマツ,ケイイチ
+コミヤ,シンヤ
+コンド,サトシ
+コンド,ツトム
+ゴトウ,ダイスケ
+サイトウ,タツヤ
+サイトウ,コウジ
+サイトウ,ヒデキ
+サカモト,タケオ
+サクマ,トシカズ
+シミズ,ナオキ
+サダチカ,ケイジュ
+サト,サヨコ
+サトウ,ジュン
+サトウ,ヒトミ
+サトウ,ミカ
+サトウ,カツユキ
+サワダ,ジュンジ
+イソワ,マサヒコ
+シモ,タカアキ
+シュウ,マサヤ
+シオカワ,アヤノ
+シオザワ,マサヒコ
+シカウチ,ミツル
+シズリ,タケシ
+シノ,テツジ
+シノザキ,ジュンジロウ
+シノダ,マスミ
+シノダ,ユキコ
+シバザキ,アキヒト
+シバタ,サオリ
+シマムラ,ノボル
+シミズ,ミマコ
+シミズ,ユウジ
+シミズ,サトシ
+シミズ,シンイチロウ
+タキタニ,ユウイチ
+シラノ,タカユキ
+スエヒロ,ケン
+スガイ,ミキオ
+スガヨシ,ケンジ
+スガワラ,シゲフミ
+スギウラ,ノリアキ
+スギシマ,シュンスケ
+スギモト,ヒサシ
+スズカワ,ヨシエ
+スダ,アキヨシ
+スミカワ,カツアキ
+スミノ,コウジ
+セキグチ,シゲミ
+ソエジマ,ヤスナリ
+タオカ,タダシ
+タカキ,キョウコ
+タカシマ,シンイチ
+タカセ,キヨタカ
+タカハシ,カツヤ
+タカハシ,タツヤ
+タカハシ,エイイチ
+タキタニ,ナナ
+タケウチ,ヒロブミ
+タケダ,タダユキ
+タケダ,ケイイチ
+タケダ,イクヒコ
+タケムラ,ナオヒサ
+タゴ,マサコ
+タキザワ,チカコ
+タナカ,ヨウコ
+タナカ,リョウスケ
+タナカ,ケンジ
+イワノ,カズシゲ
+タナカ,ヒロシ
+タニエ,サダヨシ
+タニグチ,カズエ
+タニグチ,ジ
+タニマツ,ヒロシ
+タバタ,ミワコ
+タマキ,タツヤ
+イセモト,
+タミヤ,アキ
+チャモト,フサシ
+チノ,ヨウイチロウ
+ツカモト,ヨウコ
+ツチハシ,ムネヒロ
+テラサワ,タツヤ
+ト,ミチコ
+フクシマ,ナオシ
+トバ,キョウコ
+トミヨシ,ヒトキ
+トムロ,ナツヒコ
+トヨシマ,ジュンイチ
+トリヤマ,ナオユキ
+ナイトウ,ヒロユキ
+イデ,ミチカズ
+ハタ,フサオ
+ナカガキ,ミキ
+ナカガワ,タカコ
+ナカザワ,ヨシコ
+ナカデ,ショウコ
+ナカハラ,アツシ
+タケウチ,カツヒサ
+ナカムラ,サトシ
+ナカムラ,タケシ
+ナス,ヒロシ
+ニイムラ,トシヒロ
+ニシオカ,ヒデアキ
+ニシカワ,アキラ
+ニシザワ,シゲル
+ニシト,ヤスコ
+ニシノ,コウジ
+ニシハラ,ナオキ
+ニシムラ,クニモリ
+ネモト,サチヨ
+ノグチ,エミ
+ノグチ,マサヤ
+ノジリ,ヨシナオ
+ノジリ,タカヒロ
+ノムラ,カズヒコ
+ハッタ,アキコ
+ハシバ,チカコ
+ハシモト,ユカ
+ハシモト,イチロウ
+イノウエ,キヨシ
+ハシモト,タカコ
+ハセガワ,ケンイチ
+ハタ,カズキ
+ハタ,ヨシカツ
+ハタノ,マイコ
+ハヤシ,ヒロユキ
+ハヤシ,クミコ
+ハラダ,トモコ
+ハラダ,ケンイチ
+ババ,ヒロフミ
+ババ,アスカ
+ヒグチ,ノブヒコ
+ヒグチ,キョウコ
+ヒサキ,ゴウジ
+ヒジリ,エリ
+ヒラヤマ,タカユキ
+フクダ,マユミ
+フジイ,ヒロフミ
+スガイ,サトミ
+フジタ,カズヤ
+フジタ,ユキコ
+フジタ,ノブコ
+フジタニ,サトシ
+フジナミ,シゲユキ
+フジノ,タツユキ
+ノノムラ,カツジ
+フセ,タテル
+スギモト,ヨウイチロウ
+ホソカワ,タツオ
+ホリウチ,ナオミ
+ホリカワ,ヒロアキ
+マキノ,イクコ
+マキノ,ノリヒコ
+マシコ,トシヒコ
+マスダ,カズヤ
+マスブチ,タカシ
+マスブチ,アキヒロ
+マツイ,マキコ
+マツザワ,マサト
+トミナガ,タカシ
+マツナガ,ヨシコ
+マツナガ,ユキ
+スズキ,ヤスジ
+マツムラ,ケイイチ
+マツモト,ヒデフミ
+マツモト,トモヒサ
+マツヤマ,ノリコ
+マツヤマ,コウジ
+マツヤマ,テツヤ
+マツヨシ,アキコ
+マノ,セイジ
+マルオカ,トシヤス
+ミカミ,ヨウコ
+ミキ,ヒロキ
+ミゾグチ,マサミ
+ミタ,ミノル
+ミネ,チアキ
+ミネオ,サトル
+サトウ,カツノリ
+イクタ,アヤ
+ミヤザキ,ヒデキ
+タカギワ,シゲル
+ミヨシ,ヨウコ
+ムカイ,ミツタカ
+ムラカミ,マサアキ
+イシダ,ツカサ
+ムラカミ,サトシ
+ムラカミ,カズタカ
+ムラヤマ,コウジ
+ムラヤマ,マコト
+ムロイ,マサタカ
+モタイ,カズマサ
+モトキ,カズヤ
+モトムラ,コウジ
+モリ,カツヒロ
+カセ,アキヨシ
+モリシタ,カズヒロ
+モリタ,ナオキ
+モロトミ,ヒデノブ
+モロハシ,ユキコ
+カワモト,ヒロノリ
+ヤグチ,テルヒコ
+ヤジマ,ナオコ
+ヤスカワ,ヒロシ
+ヤスダ,マサヒト
+ヤツズカ,マリコ
+ヤナギサワ,ユキ
+ヤマグチ,キンヤ
+ヤマサキ,タカヤ
+ヤマザキ,ヒロユキ
+ヤマザキ,ヨシコ
+ヤマザキ,セイジロウ
+ヤマダ,ケンタロウ
+ヤマダ,ナオキ
+ヤマダ,タカノリ
+ヤマナカ,シュウイチ
+クリハラ,マサキ
+ヤマモト,マサコ
+ヤマモト,シンタロウ
+ヤマモト,ヤスシ
+マツオ,マスミ
+ヨギ,チトセ
+ヨコヤマ,ヒデキ
+ヨコヤマ,ヨウコ
+ヨシカワ,ナオヒデ
+ヨシカワ,ヨシコ
+ヨシダ,コウジ
+ワクイ,テツヤ
+ワタナベ,ケンタロウ
+ワタナベ,シホ
+ワタナベ,ヨシヒト
+ワタナベ,マナブ
+ハヤシ,タカシ
+ヤマダ,ノブヤ
+ワカバヤシ,サトシ
+イワムラ,ノリマサ
+ワタナベ,ノボル
+クワシマ,スグル
+オバタ,サトミ
+アナザワ,ヒカル
+ヤギ,コスケ
+アカオ,トモカズ
+シミズ,ナツコ
+サカモト,ヒデノブ
+アオキ,シゲアキ
+アズマ,コウイチ
+イイダ,エナ
+イケウチ,メバエ
+イシカワ,テツオ
+イソガイ,マコト
+イトウ,タダヒロ
+イバ,アズサ
+イワモト,シンジ
+ウエサカ,タケヒロ
+ウエノ,マモル
+ウエヒラ,ケンゴ
+ウチヤマ,ケンジ
+ウメナイ,ススム
+エムラ,タカヒロ
+オキタ,ジュンイチ
+オオクボ,ヒロシ
+オオタニ,アヤ
+オオツ,ヒロコ
+オオツカ,ヨシミ
+オカシロ,シロウ
+オダ,アツシ
+オノ,ヒロミ
+カトウ,ヨシユキ
+カネヒサ,ナオコ
+カミヤ,オサム
+カワイ,タクヨシ
+カワオカ,ヒデキ
+キタノ,ジュンイチ
+キブシ,ツヘ
+キムラ,マサタカ
+キムラ,マサコ
+クサカ,サトミ
+クバ,タカシ
+クボタ,シロウ
+クロイワ,シンジ
+クワバラ,エイジ
+コイケ,スミオ
+コイタバシ,ツカサ
+コウダ,ヒデオ
+コウダ,マサタケ
+コシムラ,アツシ
+コヤナギ,ヒサコ
+ハトリ,ユウコ
+サカウエ,サワ
+アベ,コウイチ
+サトウ,ヤスミツ
+サトウ,マユミ
+サトウ,ヨシオ
+シマダ,リエ
+イマイ,カツアキ
+スガヌマ,チヨ
+セキ,アキヒロ
+セノ,タカヤス
+アベ,マサハル
+タカスガ,マユミ
+タカスギ,ノブコ
+タカハシ,トモミ
+タカハシ,ケンタロウ
+タカハシ,アキヒト
+タカハシ,コウジ
+タカハシ,ヒサミ
+タキモト,ユウタ
+タクボ,ヨシユキ
+タケウチ,トモコ
+タケナカ,ユキヒコ
+タナカ,モトイチ
+タナカ,チズル
+タバタ,カツユキ
+タミヤ,タケシ
+タムラ,レイコ
+チュウマ,ヒロタカ
+ホンゴウ,ユウコ
+ナカオ,ノブアキ
+ナカガワ,コウイチ
+ナカゾノ,ヒデノリ
+ナカノ,ミツヒロ
+ニッタ,ハナ
+ニワ,リョウイチ
+ノジ,ヒロアキ
+ハザノ,タカシ
+ハシモト,トオル
+ハシモト,ユウコ
+ハヤシ,チオリ
+ハヤシ,トウコ
+ハラグチ,タカシ
+ハルグチ,トシオ
+ヒラデ,イサム
+ヒラノ,マサタカ
+ヒラヤマ,ユキ
+フカザワ,ヒロミ
+フクマス,カヨ
+フクモリ,マサル
+フジカワ,シゲル
+ホシノ,ノリコ
+ホソノ,アキヒト
+マツオカ,ヨシナリ
+マツムラ,ナミコ
+ミズカミ,テツロウ
+ミツイ,タイスケ
+ミノカミ,トシユキ
+ミヤモト,タツシ
+ムラカミ,ケイコ
+ヤタ,ナオコ
+ヤナギタ,ミノル
+ヤマグチ,コウジ
+ヤマシタ,ミチオ
+ヤマモト,ユウイチロ
+ヨシタケ,ヒデノリ
+ヨシムラ,エリ
+ヒグチ,タケシ
+ハシモト,アツシ
+ワタナベ,ユキ
+アキバ,タケヒコ
+アキモト,ミツヨ
+アマヤ,マサル
+アンドウ,テツロウ
+アンザワ,ノブヒロ
+アサハタ,カズヒト
+ババ,ミチヒト
+ベッショ,テルヒト
+チカモト,サオリ
+チョウ,ダイスケ
+フジヒラ,ミワコ
+フジイ,ケイコ
+フジタニ,ヨシカツ
+フカダ,マサアキ
+フルダテ,ナオキ
+フルヤマ,ヒロユキ
+ゴウダ,キヨノブ
+コイケ,ヨシユキ
+ハカマダ,コウゾウ
+ハセガワ,タカオ
+ハシモト,コウイチ
+ハッタ,ケンイチ
+ハットリ,タカヒロ
+ハヤカワ,ヒロキ
+ハヤカワ,ナルツグ
+ヒヌマ,タクヤ
+ヒロキ,トモヒデ
+ホリノウチ,ユウジ
+ホソノ,アツコ
+フジオカ,ヒデキ
+フルタ,ナルキ
+フサノ,ケン
+フシミ,オサム
+イタド,ヒトシ
+イダ,マサヒロ
+イハラ,ケイ
+イイダ,タカヒロ
+イナヤマ,ヒロカズ
+イノ,ジュンイチ
+イノウエ,メグミ
+イシダ,ヨシツグ
+イシモト,ヤスヨシ
+イシワ,ミツル
+イシワタリ,ヒロカツ
+イタクラ,ナホコ
+イトウ,タカヒロ
+イトウ,シュウイチ
+イワイ,ナナコ
+イザワ,
+ジブ,スグル
+カバヤマ,マサキ
+カイ,ユウコ
+カキヌマ,ジュン
+カキザキ,マサキ
+カクダ,シュウスケ
+カナガワ,シン
+カンベ,タケオ
+カンダ,ヤスヒト
+カサダ,ミチタカ
+カワイ,トモコ
+ササキ,イクエ
+カワセ,サホ
+キモト,ミキネ
+キタハラ,ノブオ
+キタムラ,ヨシオ
+コバヤシ,ヒロエ
+コブケ,ユウコ
+コイズミ,カナコ
+コミヤマ,マリコ
+コンノカズヒロ,ヤスヒト
+コシカワ,タカユキ
+コンノ,コウイチ
+クボ,マサノブ
+クボカワ,ナツキ
+クドウ,トモカ
+クリハラ,カツイチ
+クロギ,サエコ
+マチダ,ハルミ
+マジマ,ヤスコ
+イシズ,ノリユキ
+マカベ,ヒロヨ
+マルヤマ,ヒデアキ
+マスダ,カヨ
+マツガサキ,アキラ
+マツイ,タケシ
+マツイ,サオリ
+マツモト,ケンジ
+マワタリ,カンジ
+ミチモト,トシヒロ
+ミキ,スミコ
+ミツマ,タカノリ
+ミウラ,ケイゴ
+ミワ,マコト
+ミヤモト,カツヒサ
+ミヤモト,ヤスノブ
+ミヤモト,タケノブ
+ミヤタ,マサシ
+ムラカミ,トオル
+タハラ,ノリコ
+ミズタニ,トモカ
+モリ,ユキ
+モリグチ,マサヒコ
+モリカワ,ヒロシ
+モリモト,カズミ
+モリタ,レイコ
+ムラカミ,タツヒコ
+アデガワ,アイ
+ナガサカ,ヒカル
+ナガタ,ジュリ
+ナガタ,カツノブ
+イザワ,カオリ
+ナカミネ,マモル
+ナカムラ,ヒロノリ
+ナカムラ,タツヤ
+イモト,コウイチロウ
+ナカムラ,タケシ
+ナカオ,ユウジ
+ナカヤマ,ウシン
+ナカザワ,キヨシ
+ナミキ,ハルヨシ
+ニイミ,アキヒロ
+ニイゼキ,カオリ
+ニシデ,ヒデアキ
+ニワ,ヒデキ
+ノベ,ミサ
+オオタ,シゲアキ
+オガワ,マサヨシ
+オグス,ユウスケ
+オオモト,ショウジ
+オシマ,タカノリ
+オオタ,ケンイチ
+オオヤ,ヒミコ
+イシカワ,ヨウ
+オカダ,タケシ
+オク,フミユキ
+オクダ,マサキ
+オシクボ,ケンイチ
+オゼキ,カツヒコ
+ライ,ユウジ
+イトウ,トモヤ
+サイキ,ヒロシ
+サイトウ,タツヤ
+ヨシダ,ミチヤス
+サコ,シゲミツ
+ササジマ,ジュンヤ
+ササキ,ユキコ
+サトウ,ツグヒデ
+イワモト,カズヒコ
+サトウ,チエコ
+サワダ,ヒデヤス
+セキカワ,イズミ
+セキネ,ミツオ
+シバタ,ナオキ
+シゲハラ,シンヤ
+シマオカ,アキヒコ
+シミズ,カズヒロ
+シモ,マサアキ
+シモムラ,タカシ
+シムラ,タカヒサ
+ソメヤ,アキヒコ
+スエヨシ,ケンイチ
+スズキ,ヒデユキ
+スズキ,ナオキ
+タカダ,イチロウ
+タカハシ,
+タカセ,マナブ
+タケダ,アキラ
+タケイ,ヒサヨシ
+タケモト,ハジメ
+タマイ,トシヒコ
+タムラ,タカユキ
+タムラ,サトル
+イシカワ,ヒトシ
+タナカ,コウイチロウ
+タナカ,マサヒロ
+タニグチ,タケノリ
+タニグチ,ヒロタカ
+タニグチ,ケンジ
+タニグチ,ケン
+イシダ,アツシ
+タニシタ,フミノ
+テラニシ,ツヨシ
+トオヤマ,キョウコ
+トミタ,ミワ
+トネガワ,タク
+トヨダ,ノリコ
+トヨタ,シュウジ
+ツチヤ,ヨシコ
+イシカワ,ナオキ
+ツムラ,トシアキ
+ツノカワ,ヨシミ
+ウチダ,ヒトシ
+ウサミ,タケシ
+ワジマ,リコ
+ワタナベ,マキ
+ワタナベ,ヨウイチ
+ワタナベ,ヤヨイ
+ヤギ,ケイイチ
+ヤギ,キョウコ
+ヤクワ,ヒロフミ
+ヤマダ,ヒロキ
+ヤマダ,タカユキ
+ヤマグチ,トシユキ
+ヤマノクチ,マサコ
+ヤマシタ,コウイチ
+ヤマシタ,ナオユキ
+ヤマザキ,ヒデユキ
+ヤマザキ,ユタカ
+ヤナガワ,タツロウ
+ヤスダ,トヨアキ
+ヤスエ,トモユキ
+イソガイ,タダノブ
+ヤタガイ,エリ
+ヨシダ,リョウコ
+タカハシ,マサキ
+オカダ,シュウイチ
+アオキ,マサル
+アキバ,アキコ
+アベ,アキコ
+アマノ,マサオ
+アリモト,シュウジ
+アンドウ,ユキ
+イカワ,タイヘイ
+イシイ,ノリヒロ
+イシカワ,ナオコ
+イシズカ,ユミ
+イシバシ,シュンスケ
+イシモト,リョウスケ
+イデ,サトコ
+イチノセ,サトシ
+イナダ,マナブ
+イヌイ,ヤスヨ
+イノウエ,マミコ
+イヤマ,コウジ
+イワサキ,ミズマサ
+イワマ,カズコ
+イワマツ,オサナオ
+ウエダ,ヒロコ
+ウエノ,ヒロキ
+ウチダ,タカオ
+ウド,ケンジ
+ウメハラ,タカシ
+エグチ,トミサブ
+エノキ,ヨシコ
+エモト,ミツモト
+エモリ,セイヤ
+ナカガワ,ナオアキ
+オオタ,ヒデユキ
+オガタ,ヤスシ
+オガワ,ノブタカ
+オガワ,レイコ
+オクイ,タクジ
+オクムラ,モトコ
+オオタニ,テルアキ
+オツトモ,ユキコ
+オニザワ,シゲキ
+オノ,ノリアキ
+オバナ,セイイチロウ
+オマガリ,マサヤ
+カキザワ,テツヒロ
+カケヒ,エリコ
+カサハラ,マドカ
+カジ,オサム
+カジタ,タカオ
+カジタ,タカオ
+カジヤマ,ミノル
+カトウ,ヨシノブ
+カナダ,ケイ
+カネコ,ノブカツ
+カネコ,リョウタ
+イタノ,ケンスケ
+ナガツマ,シュウヘイ
+カノウ,セイジ
+カマエ,ナオキ
+カワイ,テツオ
+カワマタ,ヒロキ
+カンノ,マイコ
+キウチ,イズミ
+キシ,ヨウコ
+キタガワ,トモノブ
+キノシタ,ナリトシ
+キョウガク,マコト
+クボ,トモノリ
+クボタ,タクヤ
+クボタ,シンペイ
+クリハラ,リエ
+クリヤマ,ケイコ
+イシガキ,トシフサ
+クロイ,イツロウ
+コウサキ,コウイチ
+コウダ,アツシ
+コバヤシ,ノブアキ
+コバヤシ,テツヤ
+コバヤシ,ユウスケ
+コバヤシ,コウジ
+イノウエ,ノブアキ
+サイホ,ナルヒロ
+サカガワ,ヨウヘイ
+カワムラ,ユタカ
+ササオカ,ヨウコ
+ササキ,ノボル
+サトウ,ノリカズ
+サトウ,マナブ
+サナダ,オサム
+サルヤマ,ケンイチ
+シオツ,エイスケ
+シオノヤ,シノブ
+シオヤマ,ノボル
+シギハラ,ヒロユキ
+シシド,クニオ
+シノザキ,カズヒト
+シバタ,ミノル
+シミズ,
+ショウノ,シンイチ
+シラキ,ヒロユキ
+スギオカ,ミツカズ
+スギハラ,キヨシゲ
+スズキ,ヒサテル
+スズキ,シゲユキ
+スミヤマ,セイジ
+セッタ,マサキ
+イシワタ,ダイジュ
+センゴク,ミノル
+タカオカ,ユミ
+タカザワ,タカシゲ
+タカハシ,アヤコ
+タカムラ,タカユキ
+タキト,ヒデキ
+タナカ,カズ
+タナカ,アキコ
+イトウ,ジュンジ
+タナベ,ケンジ
+タニグチ,マナブ
+チャワンヤ,ヨシハル
+テラサカ,ヒロキ
+トコロ,ジュンイチ
+ナカイ,タカシ
+ナカオ,シンジ
+ナガオカ,ミホ
+ナカガワ,モトアキ
+ナカジマ,スヒチ
+ナガセ,タツヤ
+ナカノ,セイタ
+ナカノ,ジ
+ナガノ,ユウコ
+イケダ,アキコ
+ナカムラ,マリコ
+ナカヤマ,カツトシ
+ニオ,ジュンイチ
+ニシオ,ノリコ
+ニシカイ,トシミツ
+ニシザカ,ヨシコ
+ニシダ,ダイスケ
+ニシダ,タカシ
+イイジマ,マサキ
+ニシハラ,カズユキ
+ニシムラ,カズヤ
+ネロメ,ヒロシ
+ノジマ,サネヒロ
+ノナカ,ダイスケ
+ハシバ,ノリカズ
+ハチヤ,タカヒロ
+ハットリ,コ
+イイダ,ヒロユキ
+ハブ,マコト
+ハヤカワ,テツロウ
+ハヤシ,ナオコ
+ハヤシマ,ヒデシ
+ハラ,タクミ
+ヒガシダ,マサル
+セキグチ,キョウイチ
+ヒライ,カオリ
+ヒロスエ,ヒロユキ
+ヒロハタ,タクヤ
+フクシマ,ミツオ
+フジオ,テンペイ
+フジタ,ユウイチロウ
+フジマキ,ユキヒコ
+フジワラ,トオル
+フルイチ,ユウスケ
+ホサカ,タケシ
+ホシノ,コウジ
+ホリ,ユキコ
+ホリモト,ユウジ
+ホンマ,ユキノブ
+マエカワ,タケハル
+マエダ,タカヒト
+マエダ,ミキオ
+マエダ,タツヤ
+マサイ,クミ
+マツイ,ヒデノブ
+マツザワ,チカラ
+マツダ,タカユキ
+マツトモ,マサナオ
+マツナガ,ケンジ
+マツモト,ヨウスケ
+ミズグチ,トモタカ
+ミヤモト,マユミ
+ミヤモト,ヤスジ
+ムラカミ,カズヒデ
+ムラカミ,マサヒロ
+ムラナカ,サトシ
+モチズキ,タクヤ
+モトクラ,トモコ
+モリ,クニカズ
+モリヤ,ホマレ
+ヤスイ,タイゲン
+ヤスダ,ミキコ
+ヤスダ,キヨヒト
+ヤタ,カズヒロ
+ヤタキ,ノブオ
+ヤチ,フミヒコ
+ヤノ,ヒロシ
+ヤマイズミ,ヨシアキ
+ヤマオカ,マサキ
+ヤマグチ,ヤスヒロ
+ヤマグチ,ヨシノリ
+ヤマザキ,アキオ
+ヤマザキ,ナナ
+ヤマシタ,マイコ
+ヤマモト,ケン
+ヨコゼキ,タイチ
+ヨシダ,ナオト
+ヨシノ,ヤスオ
+ヨシミ,タカシ
+ヨダ,タカヒロ
+ヨダ,ヒロアキ
+ロジ,フミアキ
+ワダ,マミ
+ワタナベ,ユキオ
+ワタナベ,ヒデキ
+ワタナベ,カズオ
+ワタベ,タカシ
+カノウ,タカトシ
+ニッタ,オサム
+アオキ,シュウ
+アオキ,ハナコ
+アオヤマ,マサアキ
+アオヤマ,ヌイ
+アキバ,ケイイチ
+アサダ,マリコ
+アダチ,トモミ
+アダチ,ユウコ
+アトベ,ハルト
+アベ,カツヒコ
+アベ,ノブオ
+アベ,マユミ
+アマノ,マキ
+アマノ,ジュンイチロ
+アラカワ,リョウスケ
+アリタ,ヨウヘイ
+アリトモ,ヒロシ
+アンザイ,ヒデアキ
+イトウ,ヨウジ
+アンドウ,リエコ
+イガラシ,ミオコ
+イケダ,イズミ
+タカハシ,アツオ
+イシバシ,タダシ
+イシムラ,ユミコ
+イシモト,マリコ
+イチイ,ケイコ
+イチカワ,ヒロト
+イチカワ,マキコ
+イチノセ,キヨシ
+イトウ,アキヒロ
+イトウ,マサル
+イトウ,リサ
+イナオカ,マサフミ
+イナバ,ヒロタケ
+イヌズカ,マユミ
+イノウエ,ヒデオミ
+イノカワ,シュンスケ
+イマイ,タケシ
+イマシュク,リョウ
+イワイ,トモヒコ
+イワシマ,シュウイチ
+ウエゾノ,メグミ
+ウエダ,タカヒロ
+ウエハラ,タカユキ
+ウエハラ,モトコ
+カキタ,ケン
+ウサミ,ヒジリ
+ウチダ,ヒロキ
+ウチダ,アヤコ
+ウチボリ,ミサト
+ウメガイ,カズエ
+ウメツ,アキヒコ
+ウメノ,タケシ
+ウラカワ,ユキ
+ウラベ,シゲヒサ
+エグチ,タダシ
+エズミ,イクヨ
+エノモト,タロウ
+イマニシ,ヒロユキ
+エノモト,フミコ
+エンド,ヨシキ
+オイカワ,マサキ
+オイカワ,ユキフミ
+オオイ,ヨウジ
+オオイシ,マサハル
+オオタ,フミカズ
+オオツカ,シンスケ
+オオニシ,カツアキ
+オオニシ,ミチエ
+オカダ,ヤスオ
+オカダ,マサル
+オカノ,ユキ
+オカベ,ヨシヒロ
+オカベ,ヒデアキ
+オカムラ,リョウ
+オカモト,ミキ
+オカモト,ミユキ
+オガワ,タエコ
+オガワ,トオル
+オクダ,ケン
+オクダ,テツヤ
+オザキ,マミコ
+オノ,ナオコ
+オオヤマ,タカシ
+カイズカ,トシフミ
+カガミ,エリカ
+カキタ,カオル
+カク,コウジ
+カサイ,ユキノリ
+カジイ,アカネ
+カジタ,ナオヤ
+カタエ,ユウジン
+カタヤマ,ミツコ
+カツ,トオル
+カトウ,タク
+カトウ,ダイスケ
+カミ,アツコ
+カネコ,クニヒト
+カマダ,カズヒロ
+カミ,ヨシテル
+カミヒサ,ユウジ
+カミモト,カオリ
+カミヤ,カズオ
+カミヤマ,マキ
+カワカミ,マスミ
+カワサキ,ヒトシ
+カワセ,ヒロカズ
+カワハタ,タケチカ
+カワハラ,ジュンコ
+カワムラ,カズヒロ
+カワモト,ケイスケ
+カワモト,ヒロシ
+カワモト,ミチオ
+カンダ,タケシ
+キクチ,エリ
+キタガワ,マサブミ
+キタナガ,サカエ
+キタノ,シンゴ
+キタムラ,タツヤ
+キタモト,ツトム
+キノエ,ヒロシ
+キブセ,タカエ
+キムラ,ジュンイチ
+キムラ,トモキ
+キモト,ヒデユキ
+キモト,ユリ
+ギョウブ,ヒロコ
+クニ,ミホ
+クニマサ,ミエコ
+クマサカ,タイセツ
+クラシゲ,アキオ
+クリハラ,タケシ
+コイケ,メグミ
+コイケダ,タツロウ
+コイズミ,ヒロシ
+コイヌマ,ミチコ
+コツカ,カズアキ
+コガ,シゲキ
+コシモト,ヒロミツ
+コダマ,タイチロウ
+コダマ,マサカズ
+ゴトウ,アリヨシ
+コニシ,トモコ
+コバヤシ,ヨシジ
+コバヤシ,マサキ
+コバヤシ,ヤスタカ
+コバヤシ,ヒデヒト
+コマキ,タツヤ
+コマバ,カズノリ
+コミヤ,カツヒコ
+コヤマ,マサノリ
+コヤマ,ヤスノリ
+サイキ,トモヒサ
+サイゴウ,ミワコ
+サイトウ,ケンジ
+サイトウ,テツオ
+サイトウ,イサム
+イガラシ,ショウゴ
+サエグサ,ナミ
+サカイ,アキラ
+サカガミ,イチロウ
+サカネ,ダイキ
+サカモト,トモノリ
+サカモト,マコト
+サクライ,ヒロミ
+サクラダ,リョウジ
+サコン,マサヒロ
+ササキ,ナナエ
+ササハラ,ワカコ
+サトウ,ゲン
+サトウ,ジュンイチ
+サトウ,ケンゴ
+サトウ,ナオト
+サノ,ヒデアキ
+サワ,ケンゴ
+シブヤ,タダシ
+シブヤ,ヒデオ
+シマダ,マナエ
+シマダ,ヒデタケ
+シマダ,ヤヨイ
+シミズ,ユキオ
+シミズ,ダイスケ
+シミズ,ヒデキ
+シミズ,アキノ
+シミズ,ナオユキ
+イノウエ,ケイスケ
+シモ,サトシ
+ショウダ,シゲノリ
+ジンノ,マコト
+ジンノ,リュウジ
+シンマチ,タケシ
+スギイ,マサナオ
+スギオカ,タカヒコ
+スギモト,ミチノリ
+スズキ,カズヒラ
+スズキ,ダイスケ
+スズキ,カズヒロ
+スズキ,ヒロシゲ
+スズキ,ユウイチロウ
+セオ,ノリコ
+セキ,ソウ
+イシハマ,ケント
+ソノダ,コウタロウ
+タイ,ヨシアキ
+タカイワ,キヨシ
+タカギ,ユウジ
+タカハシ,マキコ
+タカハシ,ノブユキ
+タカハシ,マキコ
+タカハシ,タケシ
+タカハシ,アキヒコ
+タカムク,ケンシ
+タグチ,ヒロコ
+タケウチ,ヨシコ
+タケカワ,マサシ
+タケワ,シンジ
+タダマツ,ヒデキ
+タタラ,コウジ
+タナカ,タカシ
+タニモト,ユウジ
+タネムラ,アキフミ
+タハラ,サトシ
+タムラ,ヒロシ
+ダン,タカユキ
+イイダ,ムネノリ
+チバ,エイスケ
+チョウトク,ヒデユキ
+ツカハラ,ヒロユキ
+ツツミ,マコト
+ツモリ,マリコ
+テラシタ,ユウイチロウ
+ドイ,ユタカ
+ドイ,ヨシエ
+ドイ,ヨウイチ
+トシマ,コウヘイ
+ナイトウ,コウジ
+ナカイ,マサヒロ
+ナカイ,シュウヘイ
+ナカオ,キホコ
+ナカガワ,チアキ
+ナガサキ,カオリ
+ナカジマ,タカフミ
+ナカジマ,ノゾム
+ナカシマ,サナエ
+ナカダ,キヨコ
+ナカハラ,ミナコ
+ナカムラ,ジュンゾウ
+ナカムラ,シュウタロウ
+ナカムラ,ユリ
+ナカムラ,ソウイチロウ
+ナカムラ,ミツヒロ
+ナカムラ,カツヒコ
+ナカムラ,ヒデヤ
+ホシノ,トシハル
+ナカモト,アキコ
+イケダ,マサタカ
+ナカモリ,トオル
+ナガヨシ,タカマサ
+ナデハラ,ヒロシ
+ナナモリ,ツトム
+ナラサカ,ヒロシ
+ナンバ,ユキ
+ニシ,ツネアキ
+ニシカワ,ヒデアキ
+ニシダ,ケンシ
+ニシムラ,ユキ
+ノグチ,サトシ
+ノダ,ケンイチ
+ノナミ,スグル
+ノノイチヤ,マスオ
+ノムラ,トモヒコ
+ノモト,ユウイチ
+ハガヤ,ナオユキ
+ハギワラ,ヤスユキ
+ハク,トモヒト
+ハシ,タカシ
+ハシズメ,ユウコ
+ハシバ,マコト
+ハセベ,タカマサ
+ハタ,マサミチ
+ハタエ,ミキト
+ハタノ,アキヨシ
+ハチノ,ススム
+ハットリ,ユウ
+ハヤシ,レイコ
+ハヤシダ,アキラ
+ハヤフネ,ヨシアキ
+ハラ,タツジ
+ハラダ,クミコ
+ハラダ,マサコ
+イノグチ,カツフミ
+ハラダ,タカユキ
+ヒガシヤマ,ヨウコ
+ヒグチ,ヒデキ
+ヒゴ,ヒロシ
+ヒダノ,トモヤ
+ヒマキ,トモノリ
+クラシゲ,カズユキ
+イシハラ,レイコ
+ヒラタ,シゲオ
+ヒロサワ,ユキコ
+ヒロタ,ケイコ
+フカサワ,ミキコ
+フカザワ,リエ
+フカザワ,タカシ
+フクムロ,マサトモ
+フジイ,テツヤ
+イトウ,ケイコ
+フジイ,ミオコ
+フジナガ,ケイジ
+フジナガ,フミコ
+フジワラ,ノリヒロ
+フジワラ,リエ
+フジワラ,ナオユキ
+フタツギ,ツヨシ
+フタツモリ,シズカ
+フルハタ,ノブアキ
+フルヤ,マリコ
+ヘンミ,マサル
+ホシ,マイコ
+ホシノ,カツアキ
+ホリ,キミヒロ
+ホリエ,シンジ
+ホリオカ,アツコ
+ホリカワ,トモヒロ
+マエフネ,ナミコ
+マキノ,ヤスノリ
+マスダ,オクト
+マツウラ,タケシ
+マツシタ,アキシ
+マツモト,ヒデタカ
+イグチ,タカヒロ
+マツヤマ,マサヒロ
+マナベ,チノ
+マルヤマ,ナオユキ
+ミウラ,ミチル
+ミキ,タカユキ
+ミツハシ,エイイチ
+ミツベ,マサト
+ミトベ,ヒサヤ
+チョウトク,タマキ
+イケフジ,ノブヨシ
+ミヤザキ,マサハル
+ミヤザキ,アキラ
+ミヤシタ,ヨウコ
+ミヤタ,タカシ
+ムコウヤマ,ミチヒデ
+ムライ,ミホ
+ムラカミ,マミ
+ムラカミ,ミツアキ
+ムラタ,トモユキ
+ムラマツ,マサユキ
+モトキ,ジュンタ
+モトヨシ,セイイチ
+モミヤマ,エイジ
+モリ,タカシ
+モリ,タケヤ
+モリウエ,ヨシタカ
+イノウエ,アキノリ
+モリウチ,シンタロウ
+モリタ,ユウキ
+ヤギサワ,カズミ
+ヤシマ,コウジ
+ヤスダ,フミヒコ
+ヤノ,ミキ
+ヤノ,タダタカ
+ヤマグチ,ジュン
+ヤマサキ,フミヒコ
+ヤマザキ,ノブヒコ
+ヤマシタ,ケイジ
+ヤマシタ,アツシ
+ヤマダ,タツオ
+ヤマナ,カナ
+ヤマミチ,ケイスケ
+イナカ,ゲンタ
+ヤマモト,コウジ
+ヤマモト,タクヤ
+ヤマモト,ヒデオ
+ヤマモト,ムネタカ
+ユバ,ユタカ
+ヨコタニ,マコト
+ヨコヤマ,ヨシオ
+ヨシダ,カズヒロ
+ヨシダ,トシカズ
+イワサキ,トシカズ
+ヨシダ,リョウ
+ヨダ,エミ
+ワカマツ,ミチエ
+ワサ,リョウコ
+ワダ,カオル
+ワタナベ,ケイゾウ
+イワクラ,エイイチ
+ワタナベ,ヒデユキ
+ワタナベ,カズミネ
+ワタナベ,ショウタロウ
+ワタナベ,ユキ
+ワタナベ,シゲル
+ワタナベ,ヒロユキ
+ワタナベ,キヨカズ
+ワタナベ,トシエ
+オオイ,ノブヒロ
+イイダ,ユキコ
+ムカイ,タカシ
+フミハラ,カオリ
+カワゴエ,マサハル
+クロカワ,ヒロミ
+コウダ,サトル
+フジタ,ユウコ
+コバヤシ,タケシ
+ハマムラ,カヨ
+イワセ,ヤスヒロ
+タケダ,マサル
+オガワ,ヒロアキ
+ミズタ,サトル
+イイダ,アツシ
+アイハラ,ヤスコ
+アオウ,トシキ
+アオキ,シンコウ
+アオバ,ヒロヨシ
+アキモト,ススム
+アサイ,ユウコ
+イシヤマ,シュンスケ
+アサオ,エミコ
+アサダ,トシキ
+アサダ,ケンタロウ
+アサノ,フジオ
+アサノ,トモヒコ
+アザミ,トシユキ
+アスマ,シュウヘイ
+アソウ,ユカ
+アダチ,キョウイチ
+アトミ,ノリヒロ
+アナミ,ヤスヒサ
+アベ,マサオミ
+アベ,マコト
+アベ,マコト
+アマノ,マサトシ
+アヤベ,タロウ
+タケキタ,マナブ
+アライ,マキ
+イツノ,ミキオ
+アリカワ,ヨシノブ
+アリタ,コウイチ
+アンジュ,ツヨシ
+アンドウ,マサキ
+アンドウ,リュウタ
+イチノセ,コズエ
+イイヌマ,ヒロユキ
+イウエ,ヨシアキ
+イガラシ,アキコ
+イケウチ,オリカ
+イケガミ,ミノル
+イケダ,タケシ
+イリタ,ヤスアキ
+イケダ,シュウイチ
+イケダ,ショウイチ
+イケダ,ジロウ
+イシイ,ジュンイチ
+イシイ,トモコ
+イシイ,ナオミ
+イシオカ,シンイチ
+イマイ,タケシ
+イシカワ,リョウヘイ
+イシカワ,トモノブ
+イシグロ,ユキヒロ
+イシダ,タツユキ
+イセキ,タケシ
+イチキ,マサト
+イチノセ,トモヒロ
+イチノミヤ,フミタケ
+イトウ,シンイチ
+イトウ,ノリコ
+イナダ,ヨシタカ
+イナバ,セイイチロウ
+イハラ,キヨタカ
+イノウエ,オサム
+イノウエ,ノリコ
+イノウエ,トモユキ
+イマイズミ,アツシ
+イマ,サトコ
+イマダ,ミオ
+イマズ,ツヨシ
+イマムラ,ミツトシ
+イリタニ,タクジ
+イワキ,タツヤ
+イワサキ,マリ
+イワサキ,マナ
+イワスギ,ミカ
+イワハシ,イチロウ
+イワブチ,ナホ
+イワホリ,アキヒコ
+ウエダ,ノブエ
+ウエマツ,タカシ
+ウスイ,トモイチ
+ウスイ,マサヒロ
+ウチダ,カオリ
+ウツミ,マキコ
+ウメダ,ヒデノブ
+ウラノ,ヤスヒロ
+エガワ,タケシ
+エザキ,アツコ
+エトウ,ケンジ
+エノモト,ハルヒラ
+エノモト,アキラ
+エマ,アキコ
+エンド,ヒサノリ
+エンド,ヨシマサ
+オイタニ,ユキ
+オウ,ヨシヒロ
+オオイ,カオル
+オオエ,アキヒロ
+オキ,アヤ
+オオクボ,フミノリ
+オオサワ,イサオ
+オオサワ,ヒサシ
+イワキリ,ワタル
+オオスミ,モトヒコ
+オオタ,ミツヒロ
+オオタ,タカシ
+オオツカ,アキノリ
+オオツカ,コウイチ
+オオツカ,トモヒロ
+オオツキ,ジュン
+オナカ,ダイスケ
+オオニシ,ヨウコ
+オオボ,マサコ
+オマ,キヨシ
+オムラ,シノブ
+オムラ,クミ
+イシイ,ナオコ
+オオモリ,ヨシヒロ
+オオモリ,ヒロカズ
+オオモリ,ノブヒサ
+オオワダ,タカフミ
+オカイ,レイ
+オカザキ,トモミチ
+オカザキ,カズヒト
+イケダ,アキオ
+オカノ,エイイチ
+オカベ,ウララ
+オカモト,エツコ
+オガワ,ユウコ
+オガワ,アキラ
+オガワ,リョウイチ
+オガワ,キヨノ
+オオガワラ,クニハル
+オクハラ,サトシ
+オクヤマ,マコ
+オグラ,ヤスハル
+キタムラ,マリコ
+オザワ,シゲミツ
+オチ,モトヒロ
+オノ,タカシ
+オオノ,チカ
+オノデラ,ケンシ
+オバタ,カツヨシ
+オオヤマ,チズル
+オンタ,メグミ
+イワタ,タケシ
+カイブキ,ユミ
+カキモト,マチコ
+カザグチ,マサノリ
+カサザキ,ヨシヒロ
+カジ,サオリ
+カジムラ,ハルナ
+カシワイ,ノリコ
+カシワバラ,ナオヤ
+カタクラ,ヨシユキ
+カタヤマ,マイコ
+カツノ,タカノリ
+カド,チエコ
+カトウ,ノブユキ
+イソノ,ミドリ
+カトウ,タカシ
+カトウ,シホ
+カトウ,アキヨシ
+カトリ,ケンジ
+カナサカ,モトヒロ
+カナザワ,ミチコ
+カナヤマ,カナコ
+カネコ,ユキオ
+カネコ,トモコ
+カネダ,モトキ
+ガミ,ヒロシ
+カメオカ,マナミ
+カラサワ,アキテル
+カラシマ,キヨフミ
+カルイシ,イズミ
+カワイ,ナオユキ
+カワイ,タカオミ
+カワカミ,マサミ
+カワカミ,ケンタ
+カワズ,アツシ
+カワナカ,エイスケ
+カワノ,タカシ
+カワバタ,ナオヤ
+カワベ,シホ
+カワミ,シンジ
+カンバシ,ミチコ
+カンバラ,アツシ
+キシイ,ヤスエ
+キシダ,アキヒロ
+キタガワ,マサキ
+キタシロ,カズヨシ
+キタハラ,ヨシカズ
+キタムラ,ヨウイチ
+キド,チエコ
+キノシタ,ワカコ
+エダ,エイ
+キムラ,ナツコ
+キムラ,シゲル
+キムラ,アツシ
+キヨナガ,ノリミツ
+キヨミヤ,タカオ
+キリヤ,マサキ
+イトウ,トモヤ
+クシダ,キョウコ
+クジラオカ,ダイキ
+クニモト,タケトシ
+クヌギ,トオル
+クボ,アツシ
+クボサワ,マサキ
+クボタ,タカヒロ
+クメノ,ノブオ
+イシグロ,タロウ
+クラ,トモアキ
+クラサワ,フミハル
+クラタ,リョウコ
+クロカワ,タカヒサ
+クロス,マミコ
+クロヤナギ,サンシロウ
+イナトミ,ダイスケ
+コイケ,マユコ
+コイケ,ワタル
+コイシカワ,ヒデユキ
+コイズミ,テルミ
+コイズミ,ノリマサ
+コイデ,マドカ
+コズマ,マイコ
+コンノ,アツコ
+コヤマ,ダイキ
+コリ,タカヒデ
+カツカワ,セイイチロウ
+コガノ,アキフミ
+コシイ,トモヒロ
+コシマル,ダイトク
+コスギ,マサシ
+コセキ,マナブ
+コタニ,ヤイチ
+コダマ,センジ
+コニシ,タミコ
+コニシ,タダシ
+コバ,トモキ
+コバタケ,ケイイチ
+コバヤシ,アキコ
+コバヤシ,ヤスユキ
+コバヤシ,ヨウジ
+コバヤシ,マサヤ
+コバヤシ,ヨシオ
+ナカムラ,ヨウヘイ
+コバヤシ,ヒロコ
+コボリ,クニヒコ
+コマツ,ツヨシ
+コヤマ,ツギオ
+コンノ,タカコ
+サイトウ,トモエ
+サイトウ,アツコ
+サイトウ,ヒロユキ
+サイトウ,ヒロユキ
+イトウ,フキコ
+サカイ,チヒロ
+サカイ,キヨシ
+サカイ,ミネオ
+サカキバラ,トシキ
+サカグチ,イチロウ
+イワサキ,レイコ
+サカモト,ノリオ
+サカモト,ヨウジ
+サカモト,ジュンコ
+ササキ,カツトシ
+ササキ,コサク
+ササキ,ジュンコ
+ササキ,レナ
+イマハシ,ヒロミ
+サツミ,タカユキ
+サトウ,シンイチロウ
+サトウ,ユウジ
+サトウ,トモクニ
+サトウ,マリコ
+サトウ,コウキ
+サトウ,ユミコ
+サノ,シノ
+イシグロ,ヒデタカ
+サワヤナギ,ミツヒロ
+シオタ,ケイスケ
+シキ,ユウコ
+シゲオカ,レイ
+シゲタ,マモル
+シシド,リカ
+シナダ,ヨシコ
+イデ,ヨシフミ
+シバタ,ヨウコ
+シバタ,アリヒト
+シバタ,リョウ
+シバタ,シュウイチ
+シマズ,モナミ
+シマダ,ヨシサダ
+シマズ,ツネオ
+シミズ,ヒデタダ
+シミズ,クニエ
+シモハシ,ヒロノブ
+シモヤマ,カオリ
+ジョウ,タカシ
+イトウ,キョウコ
+スガタ,ノブエ
+スガヤ,アキヒロ
+スギタ,タカヒロ
+スギナカ,エイジ
+スギモト,フミオ
+スギヤマ,カズナ
+スギヤマ,ユウジ
+スギヤマ,トオル
+スゲノ,ゴウ
+スズキ,コウジ
+スズキ,マサヒロ
+スズキ,ヒデアキ
+スズキ,コウジ
+スズキ,ユウコ
+イワサキ,トモフミ
+スズキ,ヨウコ
+スズキ,コウジ
+イチカワ,リカ
+セキ,マサヨシ
+セキグチ,ケイコ
+セキヤ,ケンジ
+セコ,ケンタロウ
+セラ,ヒロユキ
+ソガ,ユカ
+ソガ,エイコ
+イトウ,アキラ
+カミヤ,カスミ
+ソンク,トシカズ
+タカキ,ユミコ
+タカギ,ヨシハル
+タカサキ,ヤスオ
+イケダ,ヒトシ
+タカシマ,ヤスヒト
+タカノ,ケンイチ
+タカノ,ヒデキ
+タカノ,マキコ
+タカノ,ナオヒロ
+タカノ,ヨシヒサ
+タカハシ,ヨシオ
+タカハシ,コウヘイ
+タカハシ,コウイチロウ
+タカハシ,ガク
+タカハシ,カナ
+タカハシ,タカノリ
+タカマツ,ヒロシ
+タガミ,ヒトシ
+タカミザワ,リュウキ
+タカラダ,シンイチ
+タキカワ,エミコ
+タキザワ,イワオ
+イイノ,ユミ
+タケイ,ヨシヒロ
+タケウチ,シンイチロウ
+タケウチ,タカキヨ
+タケキタ,マキ
+タケナカ,フミオ
+タケノウチ,リョウジ
+タケハナ,フミ
+イトウ,トクコ
+タケモト,マサル
+タケモト,カズヒコ
+タゴ,ススム
+タサカ,ヨシノブ
+タジマ,ヒロカズ
+タシロ,ヨシコ
+タシロ,ゴウ
+タタラ,サナエ
+タチバナ,アヤコ
+イチムラ,サトシ
+タテイシ,ユキ
+タテノ,ヒサシ
+タテノ,ダイゾ
+タナカ,ケンイチロ
+タナカ,マサヒロ
+タナカ,ナオコ
+タナカ,トオル
+タナカ,キョウコ
+タナカ,ヤスシ
+タナカ,ヨウコ
+ガミ,マコト
+タナミ,ツネオ
+タニ,マミ
+タニグチ,ユミコ
+ナカオカ,ユキ
+タニザワ,ヨシノリ
+タニダ,ノブユキ
+タニモト,アキミ
+タノオカ,ミエコ
+タバタ,マサキ
+タハラ,ミカコ
+タムラ,ユキヒロ
+チカザワ,ノリヒト
+チノ,タカノブ
+チハラ,ヒサノ
+チュウ,サヤカ
+チュウマ,ケイイチ
+ツカダ,ヒデタケ
+ツカモト,ノブタカ
+ツカモト,ユタカ
+ツダ,トモノリ
+ツチダ,マサオ
+ツチヤ,セレナ
+ツチヤ,アキ
+ツネキ,クミコ
+デミセ,タカシ
+テラオカ,カナコ
+イズミ,アツシ
+トウ,セイジ
+トジ,マサコ
+トシオカ,ミスズ
+トダ,ハナエ
+トビナイ,アキコ
+トモイ,ミネキ
+トヤマ,アイコ
+トヨシマ,コウイチ
+トヨダ,タクヤ
+トヨハマ,トシオ
+ナガエ,ケンジ
+ナガエ,シホ
+ナカオ,トモヒデ
+ナカオ,ケンタロウ
+ナカジマ,トモコ
+ナカジマ,ヨシタカ
+ナカジマ,ツヨシ
+ナガシマ,マリ
+ナガセ,コウイチロウ
+ナカゾノ,ジュンコ
+ナカタ,アサコ
+ナガタ,ヨシヒコ
+ナガト,マリコ
+ナカニシ,ゲン
+ナカノ,ヨシコ
+ナガノ,ヒロキ
+ナガノ,タカシ
+ナガノ,テツヤ
+ナガハラ,ヨシユキ
+ナカヒガシ,メグミ
+ナカムラ,キフミ
+イヌズカ,トモカズ
+ナカムラ,フミキ
+ナカムラ,ヒトシ
+ナカムラ,ミホ
+ナカムラ,マサカツ
+ナカヤ,ユタカ
+ナカヤ,ケイ
+ナラサキ,ノブナリ
+ナリタ,リュウタ
+ナリタ,ヨシコ
+ニイダ,トモアキ
+ニシカワ,イワオ
+ニシムラ,チギリ
+ニシムラ,タイイチ
+ニシムラ,カツミ
+ニシヤマ,トオル
+ニシヤマ,ノリマサ
+ニムラ,ヒロユキ
+ニワ,ユキエ
+ヌマタ,ナオコ
+ヌマタ,タカヒロ
+ヌマダ,ツヨシ
+ネギシ,イサオ
+ノザキ,タカナオ
+ノガミ,ユカ
+ノダ,タツヤ
+ノハラ,ツヨシ
+ノブハラ,ユウコ
+ハガ,マサト
+ハギワラ,タダカズ
+ハギワラ,カツラ
+ハシズメ,タカシ
+ハシモト,タカユキ
+ハシモト,ソヨカ
+ハシモト,アキラ
+ハセガワ,マコト
+ハセガワ,マユミ
+ハセガワ,カズタカ
+ハセベ,ヨウヘイ
+ハタ,マサヒロ
+ハタケヤマ,ハズキ
+ハタナカ,イクゾウ
+ハタノ,アツヨ
+ハットリ,アキヨシ
+ハナザキ,タツヤ
+ハナブサ,オサム
+ハナムラ,ゴウ
+ババ,アキコ
+ハマサキ,ヨシユキ
+ハマダ,ツグキ
+ハヤシ,マナブ
+ハヤシ,タケヒロ
+ハヤシ,マコト
+ハヤシ,リョウ
+ハラ,マサヒデ
+ハラシマ,オサム
+ハラダ,ナオヤ
+ハラダ,リエ
+ハルタニ,タカヒロ
+ヒガシノ,マキ
+ヒガシヤマ,ユウ
+ヒグチ,シゲミツ
+イシハラ,タケヨシ
+ヒジカタ,ヒロアキ
+ヒビ,タツト
+ヒョウエ,トモヒロ
+ヒライ,ヒデノリ
+ヒラカワ,ジュンヤ
+ヒラク,シゲキ
+ヒラサワ,ケンジ
+イノハラ,タクヒロ
+ヒラタ,クニツグ
+ヒラヌマ,カズオ
+ヒラノ,タロウ
+ヒラヤマ,シゲル
+ヒロウチ,レイ
+ヒロオカ,ユカコ
+ヒロカワ,ケンタロウ
+フクイ,マサキ
+フクダ,タカヒロ
+フクダ,ススム
+コリ,キョウコ
+フジイ,ジュンイチ
+フジイ,ダイゾ
+イデ,チエコ
+フジイ,ヒロカズ
+フジオ,タカユキ
+フジオカ,ケンイチ
+フジクラ,キクコ
+フジサワ,コウジ
+フジサワ,ケンタロウ
+フジシゲ,ケイイチ
+フジタ,ケンイチ
+イノウエ,ノリオ
+フジト,ユカ
+フジナガ,ナガマサ
+フジワラ,トモハル
+フジワラ,トシキ
+フセ,カオル
+フルカワ,マサミツ
+フルカワ,ユウイチ
+イシイ,ダイスケ
+フルサワ,ヒロキ
+フルタ,コウイチ
+フルタ,ヨシアキ
+フルタ,ナオコ
+フワ,ミオ
+ホシ,マユミ
+ホソダ,ケイスケ
+イシイ,ヒロミチ
+ホリカワ,ナオコ
+ホリコシ,ヒロアキ
+ホンダ,ノボル
+マエカワ,ルミ
+マエダ,ミナコ
+マエダ,タロウ
+マエダ,タカシ
+マエノ,サトシ
+マキ,ナミ
+マキゾノ,サヤカ
+マキタ,カツユキ
+マキノ,ムネキ
+マサキ,ユズル
+マスザキ,ヨシコ
+マスダ,ユウスケ
+マスブチ,カズヒロ
+マチダ,ミユキ
+マツウラ,エリコ
+マツカワ,モトヨ
+マツザキ,ダイスケ
+マツザキ,マキ
+マツシタ,コズエ
+マツシマ,ヒデオ
+マツダ,シゲユキ
+マツダ,タカシ
+マツダ,アユミ
+マツナガ,タカシ
+マツナミ,コウジ
+マツバラ,ノリフミ
+マツバラ,サトミ
+マツミヤ,ケンイチ
+マツモト,マコト
+マツモト,カズヒデ
+マツモト,タケフミ
+マツモト,ユウスケ
+マツモト,ヒロコ
+マツヤマ,チズコ
+マナベ,リョウスケ
+マルヤマ,マサキ
+マルヤマ,ヒロキ
+ミウラ,ヤスミツ
+ミクニ,フミナリ
+ミズカミ,ヒデキ
+ミツハシ,ノリヨシ
+ミナト,ヒロユキ
+ミナミ,タカユキ
+ミフネ,ヨシヒロ
+ミヤガワ,マサシ
+ミヤサカ,シノブ
+ミヤザワ,ジュン
+ムラオ,マサコ
+ムラカミ,マサミ
+ムラタ,ケンスケ
+ムラマツ,ノブユキ
+ムラヤマ,トシオ
+ムラヤマ,カズアキ
+メグロ,トモヒコ
+モチズキ,コウイチ
+モトヨシ,マコト
+モモズ,ユキコ
+モリ,マサキ
+モリ,ヤスタカ
+モリ,ミホ
+モリ,タマヨ
+モリタ,ケンジ
+モリタ,ケンイチロ
+モリノ,ミチオ
+モリモト,タカシ
+モリモト,ユキコ
+モリヤマ,カズユキ
+モリワキ,フミアキ
+ヤギ,ケイスケ
+ヤギ,ユタカ
+ヤクシジ,オサム
+ヤコ,ツヨシ
+ヤザワ,ケンイチ
+ヤスマ,ケンジロウ
+ヤトゴ,アイ
+ガン,ハナエ
+ヤナブ,サトシ
+ヤノ,シュウコウ
+ヤブタ,ヒロシ
+ヤマウチ,ユキコ
+ヤマウチ,ミツハル
+ヤマグチ,リョウ
+ヤマグチ,ヤスマサ
+ヤマグチ,ナオコ
+ジダイ,ヒロアキ
+ヤマグチ,エイタ
+ヤマグチ,セイコ
+ヤマグチ,コウジ
+ヤマサキ,ヤスヒロ
+ヤマサキ,ジュン
+ヤマザキ,アツヤ
+ヤマシタ,カズヒロ
+ヤマシタ,マサト
+ヤマシタ,タクヤ
+ヤマダ,タカシ
+ヤマダ,ヤスオ
+ヤマダ,タツジ
+ヤマダ,ヤスヒサ
+ヤマダ,キョウコ
+ヤマトヤ,マリコ
+ヤマナカ,ヒフミ
+ヤマナシ,ジュン
+ヤマニシ,ナオキ
+ヤマモト,チカ
+ヤマモト,カズヤ
+ヤマモト,リカ
+ヤマモト,マナミ
+ヤマモト,ヨウスケ
+ヤマモト,タツヤ
+ヨコタ,トモフミ
+ヨコタ,シゲユキ
+ヨコタ,カヨ
+ヨコテ,セイイチロウ
+ヨシオカ,タカシ
+ヨシオカ,アツシ
+ヨシオカ,ヒデト
+ヨシカワ,タクヤ
+ヨシカワ,リョウイチ
+ヨシダ,マサユキ
+ヨシダ,ジュンコ
+ヨシダ,アカネ
+ヨシノ,ミノル
+ヨシミ,マサユキ
+ヨシムラ,クニヒコ
+ヨダ,ノリヒサ
+ヨネザワ,アラタ
+リュウト,ケイ
+ワカツキ,シンスケ
+ワキザカ,シンヤ
+ワキタ,ユウスケ
+ワキタ,トオル
+ワキモト,ショウコ
+ワダ,タカシ
+ワダ,アキコ
+ワタセ,ダイ
+ワタナベ,ヤスハル
+ワタナベ,ソウ
+ワタナベ,ヒロユキ
+ワタナベ,ナオコ
+ワタナベ,ヨシタカ
+キノシタ,ユウコ
+アオキ,ヨシヒコ
+ヤナギハラ,キヨシ
+アマコ,ヨシオ
+コンドウ,シオリ
+シラカワ,ヨウコ
+コヤマ,タカユキ
+コンド,マコト
+モリ,トシオ
+オオノ,ヒデヨシ
+マノ,アキ
+ナガノ,スミコ
+サトウ,エリ
+ミヤザキ,アヤ
+オガワ,アキラ
+キムラ,ヒデトシ
+ヨコオ,ケンジ
+ウチムラ,チナツ
+ゴシマ,リュウイチ
+サエキ,ミキ
+ナカジマ,ヒロミ
+イワミ,ミホ
+エゲ,レイ
+ウメゾノ,カオリ
+サクライ,マミ
+ワタナベ,マヤ
+ナガイ,ショウゴ
+オソガミ,アツヒコ
+クロカワ,マサヨシ
+タカスカ,ヨシカズ
+オバタ,マサヒコ
+シライ,ユタカ
+マツウラ,マコト
+ナカザワ,ヨシヒサ
+マツイ,ユウイチ
+コセキ,コウタロウ
+ツカダ,ノリユキ
+テラクラ,ヨウジ
+ニヘイ,キヨシ
+カワムラ,タカユキ
+ヒゴ,マサユキ
+コバヤシ,キヨノリ
+フルタ,タカユキ
+モチズキ,ヒロユキ
+オカダ,タツシ
+サイトウ,ユキコ
+カワハラ,ユキ
+スズカケ,タクヤ
+イトウ,アツコ
+イシズカ,ヒサト
+タベイ,ヤスマサ
+ゴトウ,アキヒロ
+シモサカ,トオル
+カワイ,カズマ
+ワタナベ,ヨシカズ
+スズキ,イツフミ
+マツヤマ,ヒロシ
+ハラ,リョウヘイ
+ツバキ,セイイチロウ
+ヤスイ,タカユキ
+コバヤシ,ケンタロウ
+オカベ,サユリ
+オガワ,ショウコ
+ヤマグチ,サトシ
+フジカワ,ケンジ
+イナガキ,ヒデトシ
+チゾ,トシヒコ
+ハナダ,ジュンヤ
+オオコ,モトアキ
+オオクラ,スミヒロ
+マツオ,ツトム
+エンド,マリコ
+ホリベ,モトジ
+カツ,テツヒロ
+オタカ,マサノブ
+タカハシ,トシヤ
+ムラヤマ,ユウコ
+ヨシオカ,サユリ
+カイ,ヨシエ
+タカハシ,ワカコ
+グンゲ,タマヨ
+ヤノ,タイ
+ハヤシ,アヤコ
+ミウラ,マナミ
+アオヤギ,ヒロタカ
+タカダ,トクヒコ
+ヌマタ,ケンジ
+カタオカ,カオル
+シミズ,サチコ
+シミズ,ユウコ
+マツムラ,タロウ
+オリト,サトシ
+コタニ,フミヒコ
+オオハシ,リョウ
+カンセキ,ケイコ
+キタムラ,コウタロウ
+サクタ,シンイチロウ
+ヨシダ,タカシ
+コハラ,トオル
+イハラ,ケイコ
+ツジウラ,カズヒロ
+ナカムラ,ツヨシ
+アオキ,アキコ
+アオヤマ,ダイスケ
+アカイケ,ヒロミ
+アカツ,ジュン
+アキハラ,シュンスケ
+アキモト,マリ
+アサクラ,タカシ
+アサノ,リョウ
+アビル,アイコ
+アベ,ノリタカ
+アベ,ユキ
+アベ,タクヤ
+アベカワ,トモコ
+アライ,ノリヒト
+アライ,マサトシ
+アラカワ,ヒロキ
+アラキ,タカアキ
+アラキ,ヒロシ
+アリエ,マサフミ
+アンドウ,ケンタロウ
+イイダ,ジュンイチ
+イケダ,シュンスケ
+イケダ,タケシ
+イケダ,ナオキ
+イシイ,ノブヤス
+イシイ,ハヤト
+イシガキ,ミヤコ
+イシカワ,ユキ
+イシカワ,ユミコ
+イシザワ,テルキ
+イシズミ,シュウヘイ
+イシゼキ,ダイスケ
+イシダ,ユウジ
+イシダ,レイコ
+イシダ,ヨシタカ
+イシヅ,タカシ
+イシハラ,フミナオ
+イシマル,シュウイチ
+イタニ,タカシ
+イタハラ,ヒサツグ
+イチマ,ナオト
+イトウ,ユウコ
+イトウ,ユウイチロウ
+イトウ,ヒロカズ
+イトウ,アキコ
+イトウ,シズコ
+イトウ,オキ
+イトウ,ツヨシ
+イトウ,ヒロユキ
+イナガキ,シゲキ
+イナミ,レオ
+イノ,ミキ
+イノウエ,マサキ
+イノウエ,タカシ
+イマオ,ジュンペイ
+イマダ,ケンイチ
+イワカミ,ユウスケ
+イワクラ,ユタカ
+イワザキ,ヒロタカ
+イワタ,コウジ
+イワモト,ヒロキ
+ウエスギ,ジュンコ
+ウエダ,マサヤ
+ウエタカ,ショウジ
+ウエチ,マリ
+ウエノ,ケンジ
+ヒリュウ,コウジ
+ウエムラ,マサヒロ
+ウチダ,アヤ
+ウチダ,キイチ
+ウチハシ,ゴウ
+ウチヤマ,レミ
+ウメハラ,ナツコ
+ウリタニ,マスミ
+オイカワ,ケンタロウ
+オオイ,トモユキ
+オオイ,カヨコ
+オオイシ,マサヒコ
+オウチ,ケンシン
+オオエ,ダイスケ
+オオオカ,マサヒロ
+オオカワ,マサヤ
+オオクボ,リョウ
+オオクマ,ノリヒロ
+オオタ,ノブヒロ
+オオタニ,シズカ
+オオツ,チエ
+オオツ,テツヤ
+オオツカ,ジュン
+オオツカ,テルヒロ
+オオツカ,アキラ
+オオツカ,ケイ
+オオツボ,マサミツ
+オオハタ,アキコ
+オオマサ,タツオ
+オオヤ,ケイジ
+オオヤマ,タイスケ
+オカ,タロウ
+オカジマ,ミツノブ
+オカダ,タツヤ
+オカダ,チヒロ
+オカダ,ノリヨシ
+オカダ,サトシ
+オカダ,ルミ
+オカハタ,タツヤ
+オカベ,ヤスマサ
+オカモト,ヒサシ
+オカモト,ヨシノリ
+オカモト,ヒデキ
+オガワ,ケイコ
+オガワ,ダイスケ
+オクダ,コウヘイ
+オクト,サチ
+オクナカ,セイシ
+オグラ,タロウ
+オザキ,ノブアキ
+オサダ,ヒロシ
+オザワ,ヒロミ
+オジマ,マコト
+オジマ,マサシ
+オバラ,ユリコ
+カイトウ,タカシ
+カキクラ,マサユキ
+カキモト,テツヤ
+カク,コウジ
+カゲヤマ,タダヒサ
+カジナガ,ユタカ
+カシマ,ヨシヒコ
+カタオカ,タカヒロ
+カタギリ,ナツコ
+カタヤマ,マヒト
+カド,ユミコ
+カトウ,リツコ
+カトウ,リョウ
+カトウ,フミ
+カトウ,レイコ
+カトウ,スミレ
+カトウ,ヒロシ
+カトウ,テツヤ
+カトウ,サトシ
+カトウ,ワタル
+カトウ,コウイチロウ
+カナモト,アキコ
+カナヤ,シンヤ
+カネコ,ヨシカズ
+カネモリ,ユウ
+カワ,ヨシカズ
+カワイ,コウジ
+カワイ,ハルコ
+カワカミ,マサオミ
+カワグチ,チカコ
+カワグチ,シュンスケ
+カワグチ,トシヒコ
+カワグチ,ヒロキ
+カワグチ,ススム
+カワゴイシ,タカユキ
+カワシマ,ゴロウ
+カワナ,タケシ
+カワノベ,ユキコ
+カンノ,ヤスノブ
+キクチ,ノゾミ
+キシ,レイコ
+キシモト,タケシ
+キシロ,ヤスシ
+キタオ,シン
+キタハマ,タケノリ
+キタムラ,ヨシノリ
+キドコロ,アツシ
+キムラ,コウイチ
+キムラ,マコト
+キムラ,アイコ
+キリアケ,エイサク
+クキモト,トシキ
+クボ,クニユキ
+クボタ,マユミ
+クマクラ,リカ
+クマダ,ユウスケ
+クマモト,ヒロアキ
+クメ,マサヒト
+クラヤ,コウヘイ
+クリワキ,マキコ
+クワバラ,ユカリ
+ゴウ,テルオ
+コイケ,サトル
+コイケ,レオナ
+コサカ,ムツミ
+コウダ,アヤコ
+コガ,コウイチ
+コクボ,モモエ
+コクラ,リエ
+コゴ,リュウジ
+コサキ,リョウスケ
+コジマ,ヒロコ
+コデラ,カズト
+ゴトウ,ダイスケ
+ゴトウ,ケイコ
+ゴトウ,カズノリ
+コハタ,チヨミ
+コバヤシ,トオル
+コバヤシ,ナホコ
+コマツバラ,ミホ
+コミヤ,トクコ
+コミヤマ,マサヨシ
+コヤナギ,シンヤ
+コヤマ,タカコ
+コンド,ノブカ
+コンノ,ノブホ
+サイトウ,ヒロヒデ
+サイトウ,シゲル
+サイトウ,ケンイチ
+サイトウ,ケンゴ
+サイトウ,アイ
+サカイ,リョウスケ
+サカノ,ユキコ
+サカモト,ワタル
+サカモト,チカラ
+サクライ,マサフミ
+ササキ,ヨシコ
+ササキ,タケユキ
+ササキ,ユキオ
+ササキ,サキ
+ササキ,ヤスヒロ
+ササノ,アカギ
+サダモト,ゲンコウ
+サトウ,ヒロキ
+サトウ,ユウイチロ
+サトウ,タカシ
+サトウ,タカヒロ
+サトウ,トモコ
+サナダ,マサユキ
+サネシゲ,トシノブ
+サノ,カズヒコ
+シゲトミ,サトコ
+シノハラ,モリヒコ
+シバカワ,ケンジロウ
+シバノ,リョウ
+シマダ,タケシ
+シマダ,タツロウ
+シミズ,タカオ
+シムラ,タカノリ
+シムラ,タケシ
+シモカワ,トモヤ
+シモフジ,ノブヒコ
+シモヤマ,ヒデカズ
+ショウ,ヒロユキ
+シライ,リエ
+シラガ,コウジ
+シラカワ,ヤスコ
+シラス,ミユキ
+シワ,ケンイチ
+シンケ,ナイシン
+シンドウ,トモカズ
+スガハラ,ヒロカズ
+スギウチ,ショウタロウ
+スギウラ,チアキ
+スギサワ,ヨウコ
+スギハラ,ヒロノブ
+スギモト,テルユキ
+スギヤマ,タツヤ
+スズキ,マサユキ
+スズキ,シンイチ
+スズキ,タイスケ
+スズキ,マコト
+スズキ,マサヤ
+スズキ,リュウタ
+スズキ,ノリコ
+スズキ,ミカコ
+スダ,リンヤ
+スト,テツヤ
+スミダ,アキヒロ
+セキ,アツナリ
+セキ,カズキ
+センダ,ユキコ
+ソメミヤ,チエ
+ソヤ,ヒロキ
+ダイマル,アキラ
+タカオ,ハナエ
+タカギ,カヨ
+タカザワ,ダン
+タカセ,ケンジ
+タカネ,サトシ
+タカハシ,ジュンコ
+タカハシ,タカシ
+タカハシ,ヒロナオ
+タカハシ,ヒロユキ
+タカハシ,マナブ
+タカヤマ,ユキオ
+タキウチ,リエ
+タキカワ,アキラ
+タキグチ,ケンタロウ
+タキザワ,サトシ
+タキザワ,コウジロウ
+タキザワ,チヒロ
+タキタ,アキラ
+タグチ,ケンタロウ
+タケイ,クニオ
+タケウチ,シンゴ
+タケダ,ユウイチロ
+タケハラ,ヨウコ
+タテノ,ナオタカ
+タナカ,ダイスケ
+タナカ,ススム
+タナカ,アキラ
+タナカ,ナオ
+タナカ,セイジ
+タナカ,トオル
+タナカ,ナオコ
+タナカ,エリコ
+タナカ,ミツエ
+タナベ,シンイチロウ
+タニ,チカヨ
+タニカワ,ヨシツグ
+タニナカ,ヒロタカ
+タニモト,チズル
+タヌマ,フミヒコ
+タバタ,ジュン
+タバタ,コ
+タバタ,ヨウスケ
+タバタ,ケイタロウ
+タムラ,コウイチ
+タルキ,ユキ
+タンジ,キヨノリ
+チバ,カズユキ
+チバ,ヒロカズ
+ツカダ,リエ
+ツキモト,アツシ
+ツジ,ヒロシ
+ツダ,キミヒコ
+ツチモト,シンゴ
+ツツミ,トモコ
+ツツミ,ジュンイチ
+ツボタ,マサヤ
+テイ,ワカミ
+テラカド,ミツアキ
+ミノウラ,マナブ
+テルイ,マリ
+ドイ,コウタロウ
+トウ,マキコ
+トウカイリン,ユミ
+ドウメン,エツコ
+トウカイ,カオリ
+トクナガ,キミタカ
+トクヤマ,タイガ
+トシマ,ミワコ
+ドウチ,トモユキ
+トノイ,アキコ
+トノムラ,リエコ
+トミタ,クニオ
+トモノ,ヒデカズ
+トリイ,マモル
+ナガイ,トモノリ
+ナカガワ,イクマ
+ナカガワ,ヨシノリ
+ナカガワ,ダイスケ
+ナカザト,モトノブ
+ナカシマ,チカコ
+ナガタ,ユカ
+ナカノ,カナ
+ナガノ,リョウタ
+ナガノ,リョウ
+ナカムラ,ヨウコ
+ナカムラ,サトシ
+ナカムラ,タケシ
+ナカムラ,テツヤ
+ナカモリ,トクコ
+ナカヤマ,トモヒロ
+ナルセ,タカシ
+ナンゴ,マサキ
+ナンバ,ケン
+ナンバ,コウジ
+ニイミ,コウヘイ
+ニシオ,ヨウジ
+ニシオカ,シンイチ
+ニシオカ,トモコ
+ニシサカ,マミ
+ニシザキ,タクマ
+ニシザワ,ナオキ
+ニシノ,サトシ
+ヌマタキ,モトキ
+ネギシ,リカ
+ネヤマ,タケシ
+ノダ,チアキ
+ノグチ,ノリコ
+ノグチ,ヨウスケ
+ノグチ,ケイジ
+ノグチ,シンキチ
+ノザキ,ダイスケ
+ノダ,ヒロコ
+ノボリ,ヨシヒロ
+ノムラ,シュウイチ
+ノムラ,ミサコ
+ノムラ,ケンジ
+ハギワラ,ショウタロウ
+ハシグチ,トシヒロ
+ハシモト,タカフミ
+マキ,カズト
+ハセガワ,タケオ
+ハセガワ,オサム
+ハダ,アヤコ
+ハットリ,ユウイチ
+ハットリ,マユコ
+ババ,マサキ
+ババ,ケンジ
+ババ,シンイチロウ
+ババ,リカコ
+ハマダ,クミコ
+ハマダ,ダイジ
+ハマダ,リサ
+ハマダ,フミヒロ
+ハマノ,マサユキ
+ハヤシ,アキノリ
+ヒグチ,コウキ
+ヒサツネ,マコト
+ヒシヌマ,アツシ
+ビョウドウ,ヒロコ
+ヒライ,マサカズ
+ヒラオカ,ミキ
+ヒラカワ,トモヒロ
+ヒラサワ,タクジ
+ヒラシマ,ジロウ
+ヒラタ,マミコ
+ヒラノ,ヤヨイ
+ヒルマ,ユウイチ
+ヒロセ,ヒデキ
+ヒロセ,カツヨシ
+ヒロタ,ヒロシ
+フクイ,アズサ
+フクダ,タカシ
+フクバ,カナメ
+フクムラ,ユミコ
+フクモト,ダイスケ
+フジイ,ケン
+フジイ,ユキ
+フジイ,ミワ
+フジエダ,ヒサカズ
+フジタ,ヒデカズ
+フジタ,ユキコ
+フジツ,タケシ
+フジノ,タカホ
+フジモト,サトコ
+フジワラ,タクト
+フジワラ,リナ
+フジワラ,クミ
+フルカワ,リョウ
+ホ,マサノリ
+ホシノ,ムネトモ
+ホソカワ,テルヒコ
+ホリカワ,シュウジ
+ホンゴウ,ヨシアキ
+マエダ,アツシ
+マオカ,ツトム
+マスブチ,ツヨシ
+マスミツ,キョウヘイ
+マツイ,ケンタロウ
+マツオ,ヒデノリ
+マツオカ,キョウスケ
+マツオカ,サチコ
+マツダ,リョウ
+マツバラ,アキコ
+ワタナベ,ダイスケ
+マツヤマ,タケシ
+マツヤマ,ミツテル
+マツヤマ,ヨシキ
+マトバ,トモヒロ
+ミウラ,マサキ
+ミツギ,タケシ
+ミト,シュウイチ
+ミノウラ,ヤスヒサ
+ミヤ,アキラ
+ミヤケ,ヒデマサ
+ミヤシタ,アイ
+ミヤシタ,ユキオ
+ミヤタ,アキヒロ
+ミヤモト,タツヤ
+ミヤモト,クニコ
+ミヤモト,マサヒロ
+ムクダ,トモアリ
+ムシカ,ユキコ
+ムトウ,アキラ
+ムラカミ,ユカ
+ムラカミ,カナコ
+ムラカミ,タツヒロ
+ムラカミ,ヒデツグ
+ムラタニ,モトヒロ
+ムラマツ,マサコ
+ムラヤマ,ヨシアキ
+モチズキ,トシヒコ
+モリグチ,ミサト
+モリタ,マミ
+モリバヤシ,コウメイ
+モロト,ヒロタツ
+ヤエガシ,ヒデユキ
+ヤオヤマ,ゲンタ
+ヤガミ,ヨシヒロ
+ヤギ,ケイジ
+ヤグラ,シンジ
+ヤスコチ,ノボル
+ヤスダ,ユウスケ
+ヤスダ,ノリコ
+ヤマグチ,ユウスケ
+ヤマグチ,ショウシン
+ヤマダ,ワイケン
+ヤマダ,ミズホ
+ヤマダ,アキラ
+ヤマミチ,カツユキ
+ヤマモト,ジュンコ
+ヤマモト,ヒロミ
+ユキ,マミコ
+ユミバ,ケイイチ
+ユラ,ケンイチ
+ヨコスカ,ハルノブ
+ヨコタ,アイ
+ヨコヤマ,アヤコ
+ヨシオカ,ナオコ
+ヨシオカ,カズヒロ
+ヨシザワ,ユウコ
+ヨシダ,ミツル
+ヨシダ,アカリ
+ヨシダ,タカシ
+ヨシノ,カズミ
+ヨシムラ,ユウコ
+リュウ,エイジ
+ロク,アキコ
+サカモト,ケイコ
+ワタナベ,レイナ
+ワタナベ,ユフコ
+ワタナベ,ユウ
+ワタナベ,タカコ
+ワタナベ,ヤヨイ
+ワラビ,ヒロノリ
+ノザワ,ユウコ
+クボ,ヤスコ
+ヨシモト,コ
+ヤマモト,タカシ
+ヤマモト,タカシ
+ヒロサワ,リエ
+ミヒラ,リョウヘイ
+オオノ,ヒロユキ
+オダ,カズヒコ
+オオバタケ,ミホコ
+カドエ,アイ
+ニシダ,トヨヒロ
+マツモト,ヨシアキ
+ミギタ,マナ
+ミヤモリ,ミオ
+ヤマシタ,マドカ
+ヤマダ,シンゴ
+ノリトミ,チエ
+イケダ,ユウスケ
+モリタ,リョウジ
+タケウチ,リョウ
+ミタ,ヨシノリ
+イヌイ,ケン
+トウ,ノリユキ
+マキノ,マリ
+ナツメ,シンヤ
+オノデラ,クニヒロ
+オオタ,ミキコ
+ウルシサコ,リツコ
+サカキバラ,シゲノリ
+アオキ,エイスケ
+アオキ,ナオト
+アオキ,ユウコ
+アカガワ,モトコ
+アカツカ,カズヒト
+アカホリ,ケイジロウ
+アキヤマ,カズヒロ
+アサイ,テルミ
+アサイ,シンペイ
+アサオカ,ケンジ
+アサヌマ,アヤ
+アソ,ナオフミ
+アタケ,トシキ
+アダチ,シンゴ
+アベ,タカミチ
+アベ,ノブヤス
+アベ,ユキエ
+アライ,ツヨシ
+アリマ,トモコ
+イイズカ,ダイスケ
+イガラシ,ユタカ
+イケダ,コズエ
+イケダ,ケンタロウ
+イケハタ,ヒロキ
+イザワ,チハル
+イシイ,ヤスシ
+イシカワ,リョウコ
+イシグロ,アキヒロ
+イシダ,コウタロウ
+イシダ,タツオ
+イシバシ,トシユキ
+イシハラ,タカヒロ
+イシモト,マユコ
+イソハタ,アサコ
+イタミ,タカアキ
+イチカワ,ナルタカ
+イッシキ,タツヤ
+イデ,ナルミ
+イデ,コウジ
+イトウ,マユミ
+イトウ,ジュンペイ
+イトウ,マサオ
+イトウ,ナツコ
+イトウ,マイ
+イノウエ,マコト
+イノウエ,ヨウスケ
+イノウエ,ナオキ
+イノウエ,カツキ
+イノクチ,ノリユキ
+イマイ,リホ
+イマキュウレイ,レイコ
+イマゼキ,クミコ
+イマムラ,マスミ
+イマムラ,ケンイチロ
+イワイ,サトル
+イワイ,タカシ
+イワサキ,トモコ
+イワセ,ススム
+イワタ,コウジ
+イワデ,ケンタロウ
+イワムラ,マサヒト
+ウエダ,フミオ
+ウエノ,マサフミ
+ウエノ,シンジ
+ウカイ,ヒロキ
+ウサミ,マリコ
+ウチウミ,リエコ
+ウチヤマ,マサフミ
+ウラハラ,タイジ
+エギ,タカヒコ
+エジリ,ヒロシ
+エノキド,ヨリコ
+エモリ,イツキ
+エンド,ハジメ
+オオイ,ナツコ
+オオイケ,トモカズ
+オフラ,ダイスケ
+オオカワ,ヨシコ
+オキタ,ユキノリ
+オオサワ,マサユキ
+オオタ,トモコ
+オオタ,アキナオ
+オオタ,ヨウヘイ
+オオタニ,タカアキ
+オオタニ,ユキヒデ
+オオツカ,モトイ
+オオツカ,ヨシノリ
+オオツカ,ダイジロウ
+オオツキ,サトル
+オド,タクミ
+オトンベ,タツヤ
+オノ,マサヒコ
+オノ,ヒロシ
+オオハシ,タツヤ
+オオハタ,アキラ
+オオミチ,ミホ
+オオヤマ,ミキヒト
+オカザキ,タツフミ
+オカジマ,ミナコ
+オカダ,カズヒロ
+オカダ,タクマ
+オカモト,タケシ
+オカモト,ダイスケ
+オガワ,ジュン
+オギタ,トシフミ
+オククボ,タカシ
+オチアイ,トモノリ
+オマタ,ケン
+カサ,ユキコ
+カシワ,ダイスケ
+カトウ,コウヘイ
+カトウ,タダシ
+カナイ,ケンイチ
+カナヤマ,ダイスケ
+カネコ,フミヤ
+カネツキ,ジュンヤ
+カネマル,アズサ
+カベウチ,ナオト
+カミムラ,カオリ
+カミヤ,サチコ
+カミヤ,コウイチロウ
+カワイ,ユミコ
+カワイ,ヒロシ
+カワカミ,ライ
+カワサキ,ヤスヒロ
+カワサキ,テツアキ
+カワサキ,ヒロキ
+カワシマ,タカオ
+カワタ,ケイイチ
+カワマタ,コウタ
+カワモト,ケイスケ
+キシモト,アキヨシ
+キシロ,ケイタ
+キダ,エイスケ
+キタオカ,ジュン
+キタノ,マサヒコ
+キタハラ,ソウヘイ
+キタムラ,タロウ
+キタモト,ミホ
+キムラ,タケヒロ
+キムラ,フミト
+キモト,ケイコ
+キン,ヨシユキ
+クシヤマ,アキヨ
+クドウ,トモノリ
+クドウ,シュンスケ
+クメウチ,ケンジ
+クラシゲ,コウジ
+クラチ,カズヒロ
+クラナカ,タケシ
+クリハラ,ヨウスケ
+クロキ,マサキ
+クロサカ,ヨウコ
+クワハラ,シノ
+ユエ,カツノリ
+コイズミ,シンヤ
+コウジマ,ヨシヒコ
+コウダ,カツユキ
+コンノ,ケンイチ
+コガ,ショウイチ
+コガ,タクジ
+コクブン,チカコ
+コサカ,アキコ
+コッテ,マイコ
+ハタナカ,タカシ
+コバヤシ,ユカ
+コバヤシ,ヒデキ
+コバヤシ,アンナ
+コバヤシ,ノリアキ
+コバヤシ,キミヒコ
+コマツ,シンスケ
+コマツバラ,フミ
+コメダニ,テツロウ
+サイキ,アツシ
+サイトウ,ケンイチ
+サカイ,ヒロアキ
+サカグチ,タロウ
+サクマ,ユキコ
+サコ,マヤ
+ササイ,ナオヤ
+ササオ,カズキミ
+ササキ,ハナコ
+ササキ,マサオ
+サトウ,カツヒコ
+サトウ,カズユキ
+サトウ,ヒロヒト
+サトウ,マサキ
+サトウ,ミキ
+サトウ,マサコ
+サトウ,ミキ
+サトウ,ノブユキ
+サトウ,リョウサク
+サノ,マサコ
+サノ,ナギサ
+サハラ,タカフミ
+サルヤマ,タカユキ
+サワグチ,アヤ
+シイ,エミ
+シオザキ,ヒデアキ
+シオダ,エイジ
+シキ,マサル
+シダ,ヨシヒロ
+シノハラ,ヒトシ
+シノハラ,ヒサシ
+シブサワ,ヨウスケ
+シマダ,リュウタ
+シマダ,ミホコ
+シマダ,ケンタロウ
+シミズ,タツオ
+シミズ,ワタル
+シミズ,トモコ
+シミズ,サトコ
+シミズ,ジュンイチ
+シミズ,ジロウ
+シモ,キヌエ
+シモザキ,タツヒコ
+シモジマ,エイイチロウ
+シモツ,タカヒロ
+シモノ,アキヒコ
+シモヤ,ヨリコ
+シラス,シンゴ
+スギウラ,マサノブ
+スギウラ,トシロウ
+スズキ,トモミ
+スズキ,エリコ
+スズキ,ユウスケ
+スズキ,ヨシノリ
+スズキ,ヨシキ
+スト,サトシ
+スナダ,サトシ
+スヤマ,ダイスケ
+セオ,カオリ
+セキ,コウヘイ
+セキネ,ミツル
+セキバ,マキ
+セト,ケイジ
+センゴク,ノリヒサ
+センダ,ユウコ
+センバ,ミズホ
+ソメヤ,ケイゴ
+タカギ,ヒデキ
+タカギ,アイ
+タカギ,ノリユキ
+タカセ,ヨウイチロウ
+タカダ,ヨウスケ
+タカハシ,ヤスユキ
+タカハシ,ヨシノリ
+タカハシ,タカノリ
+タカハシ,マサト
+タカハシ,ミカ
+タカハシ,ヤスヒロ
+タカミザワ,コズエ
+タキザワ,ケイゾウ
+タグチ,キョウコ
+タケシタ,ケン
+タケダ,カズマ
+タケダ,ユウジ
+タケダ,コウジ
+タケナカ,タカヒロ
+タケハラ,ミキコ
+タケヤマ,ミツル
+タジ,ミカ
+タダ,ヨシタカ
+ダテ,クミコ
+タナカ,チカフミ
+タナカ,ノリヒコ
+タナカ,タクナガ
+タナカ,タカユキ
+タナカ,タカユキ
+タニグチ,タカノリ
+タニコシ,ケンタロウ
+タニノ,タカアキ
+タブキ,タロウ
+タブチ,ヨシヒト
+タマオキ,マサヨシ
+タマガワ,トモコ
+タムラ,ケイコ
+タメノリ,ヨウヘイ
+タンノ,エリ
+タンボ,アキヒコ
+チダ,カツヒサ
+チネン,ユキ
+ツガネザワ,ノブユキ
+ツカハラ,ミズホ
+ツチヤ,マユミ
+ツチヤ,ヨウスケ
+ツチヤ,ヤスユキ
+ツズキ,マミ
+ツズラハラ,サチコ
+ツネヨシ,テルノブ
+ツボウチ,アキフミ
+ツルシマ,リエ
+デグチ,タクヤ
+テズカ,ミツノブ
+テラカワ,タカシ
+テラグチ,ムネノリ
+テラシマ,ケンジ
+テラダ,ヨシキ
+トガシ,ダイスケ
+トクムラ,コウイチ
+トザワ,ユウコ
+トビオカ,タケシ
+トマリノ,ジュンコ
+トミイ,ジュンコ
+トミザワ,アヤ
+トミタ,タイチ
+トミタ,ユウタ
+トミナガ,ヨウコ
+トヨダ,ソウタロウ
+トラタニ,マサコ
+ナイトウ,タカオ
+ナガイ,チエ
+ナガイ,ジュンコ
+ナカイケ,シンゴ
+ナカウエ,ダイスケ
+ナガオ,リョウコ
+ナカコジ,サヤカ
+ナガサカ,コウジ
+ナカジマ,ユキコ
+ナカジマ,マリ
+ナガタ,カツヤ
+ナガタ,アツヒサ
+ナガタ,ナオキ
+ナカツル,ヒロアキ
+ナガノ,ヤスオ
+ナカムラ,サトル
+ナカムラ,ヒロシ
+ナカムラ,クミコ
+ナカムラ,ヒロシ
+ナカムラ,ユカ
+ナカムラ,マサアキ
+ナカムラ,エイジ
+ナツハラ,サヤカ
+ナリサダ,シンスケ
+ナンブ,ノブユキ
+ニカイドウ,トモヤ
+ニシ,ソウイチロウ
+ニシ,ナオユキ
+ニシオ,トシヤ
+ニシカワ,ケンジ
+ニシクラ,サトコ
+ニシザワ,イサム
+ニシザワ,エリナ
+ニシダ,シンイチ
+ニシダ,リョウヘイタ
+ニシヤマ,ヒサノリ
+ヌノヤ,シゲオ
+ヌマザキ,ユキオ
+ヌマタ,タケシ
+ノドミ,リナ
+ノミ,マサキ
+ノグチ,カズヨシ
+ノジマ,テルアキ
+ノジリ,トシユキ
+ノダ,ミキコ
+ノダ,ユキコ
+ノムラ,シンヘイ
+ノムラ,カズエ
+ノムラ,カズオ
+ハコシマ,ワタル
+ハシモト,リョウ
+ハシモト,ケイ
+ハセガワ,ケンタロウ
+ハタケヤマ,ユフコ
+ハッタ,ユヒ
+ハットリ,サトミ
+ハナイ,タケハル
+ハナダ,ケイスケ
+ハマグチ,ケン
+ハマダ,マナミ
+ハマダ,ケイコ
+ハマノ,タカユキ
+ハヤカワ,ユキ
+ハヤシ,テツオ
+ハヤシ,トモナガ
+ハヤシ,ケンタロウ
+ハラ,チカコ
+ハラ,ヤスアキ
+ハラダ,ミエ
+ヒエカタ,サトコ
+ヒガサ,アツシ
+ヒガミ,セイジ
+ヒキノ,テツジ
+ヒダ,タカシ
+ヒダカ,シン
+ヒデシマ,ミキコ
+サカイ,ジュンヤ
+ヒライ,ハヤト
+ヒライワ,エツコ
+ヒラタ,ヒデキ
+ヒラバヤシ,ナオユキ
+ヒロセ,アヤコ
+フカオ,ミユキ
+フクイ,ヒデヒコ
+フクザキ,ミレイ
+フクダ,ヨウヘイ
+フクダ,ヤスヒロ
+フクダ,マサル
+フクダ,ジュンイチ
+フクハラ,ユキコ
+フクムロ,ヒロフミ
+フジウラ,アヤ
+フジオカ,コウイチロウ
+フジオカ,マヤ
+フジタ,シゲル
+フジモト,ユカリ
+フジモト,エリコ
+フジワラ,アキヒロ
+フタムレ,イサオ
+フルサワ,イチロウ
+フルタ,ヒサオ
+フルヤ,ヒデオ
+ホコラ,マツオ
+ホシノ,スミオ
+ホシノ,タモツ
+ホソノ,ヒロミチ
+ホリ,トシ
+ホリウチ,エツオ
+ホリオカ,ヤスオ
+ホリグチ,ジュンイチ
+ホンマ,イサオ
+マエカワ,トモユキ
+マエジマ,コウジ
+マエダ,トシヒロ
+マエハラ,トシヒコ
+マキ,シゲノリ
+マキノ,タケオ
+マスイ,ヒロシ
+マスダ,キヨシ
+マスダ,マサミツ
+マツイ,カンジ
+クマガイ,カツヒコ
+カネコ,リョウジ
+コミヤ,ノボル
+コガイト,ミチコ
+カンバヤシ,テルマサ
+キノシタ,ハルヒコ
+キクチ,ミノル
+コマバ,ユタカ
+コクブ,ミツコ
+コバヤシ,ヒロシ
+コバヤシ,テルオ
+キツタカ,チュウケン
+マツオ,タカユキ
+カワイ,マナブ
+クリハラ,トオル
+カドノ,ヒロヨシ
+カミクボ,ケンジ
+カワグチ,タカシ
+カマタ,マサモト
+カンダ,カズミ
+カンダ,ミツオ
+コシムラ,トシユキ
+マツオ,キヨシ
+クサキ,ジュンジ
+カモハラ,マサフミ
+カサジマ,トシマサ
+マツキ,ヨシカズ
+カミクラ,ツネオ
+クリハラ,ノブアキ
+ナカチ,キヨシ
+カガワ,シンイチ
+コバヤシ,セイジ
+カンノ,トシオ
+マツシタ,フミオ
+カシワダ,オサム
+コンノ,カズオ
+コスギ,ヨシミ
+コモリ,トシロウ
+カワノ,ユキオ
+キタムラ,タケヒコ
+カジマ,テツヤ
+カトウ,ヒデオ
+コヤノ,ユキオ
+カツマタ,トシカズ
+クワダ,ケイジ
+コタニ,ヤマト
+カジウチ,ノブコ
+コンド,タカシ
+コンド,ヨシカズ
+マツナミ,シンヤ
+カガヤマ,マサハル
+カネコ,ヤスヒコ
+コヤマ,ヤスハル
+キツカワ,コウセイ
+カシクラ,カンジ
+クロキ,ヨシユキ
+コイズミ,シュウヘイ
+クゼ,ミキオ
+カワカミ,ケイコ
+カミ,サチオ
+キムラ,トオル
+マツノ,カズヒサ
+キクタ,オサム
+クマダ,マサアキ
+クニハラ,シュンイチ
+コジマ,ユタカ
+クリハラ,マサノリ
+ヨネクラ,ヨシタミ
+コバヤシ,ツネオ
+コバヤシ,テツオ
+コジョウ,サナエ
+キムラ,ジュンイチ
+コバヤシ,マサアキ
+コンド,ノブカズ
+カワイ,トシカツ
+クマハラ,ケンジ
+キセ,ミチヤス
+カシクマ,ケンゾウ
+カコ,ジュンイチ
+イシガイ,ヨシアキ
+カミグチ,タダシ
+クモダ,トシオ
+コマツ,ショウイチ
+カネダ,ミツオ
+キクチ,ヨシヒサ
+コタニ,ヨシユキ
+コバヤシ,ヤスト
+カワグチ,ヨシオ
+カネコ,ヒロアキ
+カモ,ヨシアキ
+カワムラ,エイジ
+クマノ,マサユキ
+コバヤシ,ヨシエ
+キムラ,カズヒサ
+キシモト,ヒロヒサ
+キムラ,キシオ
+カミグチ,テツヤ
+キムラ,マサハチ
+コバヤシ,シュンジ
+カドクラ,カナコ
+キタムラ,ヒデヨ
+カツキ,ヒサシ
+カンザキ,マサノブ
+カタギリ,イクミ
+コバヤシ,ノブコ
+コマツザキ,コウゾウ
+キタ,ヒロノリ
+カツハラ,シュウ
+コグレ,アキエ
+コジマ,アツシ
+コメダ,ヒサシ
+コニシ,ケンイチ
+クワハラ,ヤスマサ
+コヤマ,ヒデアキ
+マツモト,ノリユキ
+カジモト,ヨシアキ
+クマザワ,カツミ
+キムラ,トシオ
+コバシガワ,ヒトシ
+カミヤ,ユウ
+マツモト,ショウジ
+コハシ,エイゾウ
+コダマ,ゼンイチ
+カワカミ,カズミ
+マツモト,ハルオ
+カイド,ミホ
+キムラ,トシオ
+クゴ,キヨミ
+マツモト,ヨシユキ
+マツヤマ,リョウスケ
+マルヤマ,サチコ
+コンノ,キヨシ
+クロキ,ジュン
+コミヤ,リョウコ
+キムラ,ナオユキ
+キノ,ミア
+コマツ,ユキ
+カネチカ,リョウスケ
+カナタニ,リエ
+コバヤシ,ヨシロウ
+キタヤマ,カナコ
+カジ,ヒロコ
+カワシマ,ナオキ
+キムラ,マキコ
+コバラ,タクマ
+キタガワ,ナオタカ
+マルヤマ,ナホコ
+カモン,マサシ
+ミウラ,タカシ
+ミシマ,カツヒロ
+ミスギ,トモアキ
+ミズタ,ジュンコ
+ミズモト,ナルキ
+ミゾグチ,マサコ
+ミズカ,ユタカ
+ミナミ,タケル
+ミナミタニ,マサト
+ミネタ,ユキコ
+ミヤイ,コウタ
+ミヤオカ,ケンロウ
+ミヤザキ,マユミ
+ミヤザキ,ジュリ
+ミヤハラ,タツヒコ
+ミヨシ,アキノブ
+ムラカミ,マサヒデ
+ムラキ,アツコ
+ムラタ,ケンジ
+ムラタ,ミチヤ
+ムラタ,メグミ
+ムラヤマ,マサコ
+モトノ,ヤスマサ
+モリ,トシユキ
+モリ,ナオ
+モリタ,ヒデトモ
+モリタ,リエ
+モリヤマ,アツシ
+モリヤマ,カオリ
+ヤザワ,カズコ
+ヤジマ,トモヒロ
+ヤナギダ,エリコ
+ヤマガタ,ケイイチ
+ヤマカワ,シンヤ
+ヤマグチ,サトミ
+ヤマグチ,ユキ
+ヤマグチ,タダユキ
+ヤマサキ,マサキ
+ヤマザキ,ケン
+ヤマシタ,シュクホ
+ヤマダ,ヨシアキ
+ヤマダ,ケンイチ
+ヤマダ,シュン
+ヤマナカ,マサシ
+ヤマネ,シンゴ
+ヤマモト,ヤスノリ
+ヤマモト,カズヒロ
+ヤマモト,ヒデユキ
+ユカワ,サトシ
+ユザ,アキコ
+ユタニ,リエ
+ユタニ,ダイスケ
+ヨゴ,トモノリ
+ヨコボリ,マサタケ
+ヨシオカ,タダアキ
+ヨシカワ,ヒロミ
+ヨシダ,ヒロタカ
+ヨシダ,キョウコ
+ヨシモト,モトオ
+ヨネダ,ユミコ
+ワカサヤ,シズカ
+ワタナベ,ジュンイチロ
+ワタナベ,ヤスヒロ
+ミツヤマ,マサミ
+ヒラオカ,リサ
+カンノ,カツト
+ワコ,リエ
+アオキ,ワタル
+アカオ,マサノリ
+アカギ,リョウヘイ
+アカシ,ヒロコ
+アカツカ,ヤスユキ
+アカハネ,ヒロアキ
+アカホリ,ユウコ
+アキモト,チエ
+アキヤマ,ミホ
+アサイ,マサカズ
+アサノ,ヤスヒロ
+アサヒ,アサコ
+アサベ,カヨ
+アハレン,ダイスケ
+アベ,トシヒコ
+アベ,カオル
+アベ,ヒロフミ
+アマノ,マサミ
+アメモリ,アリサ
+アライ,ヒデオ
+アライ,エツコ
+アライ,カツヒロ
+アラタニ,サツキ
+アリナカ,トモヒロ
+イイゴ,ノリアキ
+イイダ,マユミ
+イケダ,ヨシタカ
+イコガ,エミコ
+イシイ,カオリ
+イシオカ,タカシ
+イシザカ,ユキエ
+イシジマ,ミオ
+イシダ,ユイ
+イシド,ユキコ
+イシノ,タカオ
+イシマブシ,アキヒト
+イセリ,オトヒコ
+イソベ,ハルカ
+イタニ,タカアキ
+イズノ,ミツヒロ
+イデノ,ヨウヘイ
+イトウ,ヨウコ
+イトウ,ミツタカ
+イトウ,ヨシアキ
+イトウ,ユカリ
+イトウ,マナ
+イトウ,タケシ
+イトヤマ,アツシ
+イナ,アキラ
+イナサキ,ヤスノリ
+イナバ,ヨウスケ
+イナバ,タダシ
+イノウエ,タケシ
+イノウエ,ノブタカ
+イノウエ,マリコ
+イベ,キョウコ
+イマイ,ユキエ
+イマオカ,シュウヘイ
+イマムラ,マサシ
+イワタ,タケヒロ
+イワタ,ヨシヒロ
+イワタ,オサム
+イワミ,ユウコ
+イワモト,ケンイチロ
+ウエダ,レイコ
+ウエノ,サラ
+ウエハラ,タカノリ
+ウカイ,ヒサナガ
+ウダガワ,ユウイチ
+ウチヤマ,ヒロマサ
+ウツミ,ヒロユキ
+ウツミ,マリコ
+ウノ,マコト
+エガシラ,シュンスケ
+エトウ,ヒロキ
+エトミ,ヒデミ
+エンド,メグミ
+エンド,ヒロキ
+オカド,タカヒサ
+オオクラ,ヒロコ
+オオサカ,タテキ
+オオサカ,コウタロウ
+オオサワ,サチ
+オオスミ,サトコ
+オタ,チエコ
+オオタニ,マコト
+オオニシ,マサヒロ
+オオニシ,ミツル
+オオニシ,ムサシ
+オオニシ,マサオ
+オオノ,ナホコ
+オオノ,ミカコ
+オノ,ヨウコ
+オマツ,ヨウスケ
+オムラ,トモコ
+オオヤ,ユキエ
+オカ,ノリヒト
+オカイ,ケンイチ
+オカウチ,トモノリ
+オカダ,ユウキ
+オカダ,マリコ
+オカノ,ヤスフミ
+オカムラ,アカリ
+オカモト,ソウ
+オガワ,イズミ
+オガワ,コズエ
+オガワ,キンヤ
+オガワ,ミチコ
+オガワ,タクヤ
+オガワ,ユミコ
+オギノ,エリコ
+オク,サヤカ
+オクカワ,ヒロアキ
+オクダ,アキオ
+オクムラ,サトコ
+オザキ,タカユキ
+オジマ,タカシ
+オゼキ,ケイイチ
+オダ,ヒロユキ
+オダ,アツコ
+オチアイ,ナオキ
+オトガワ,リョウコ
+オノ,ミズキ
+オオハラ,ケイコ
+カイジマ,ケンタ
+カガワ,トモミツ
+カキオ,タカヤ
+カケヒ,トモミ
+カサイ,ナオコ
+カサミ,ヨシフミ
+カジタ,ケイイチ
+カジタニ,マサナリ
+カシマ,ヤスヒロ
+カシマ,ユウコ
+カジモト,アヤコ
+カスガ,サナコ
+カセ,レイコ
+カタギリ,カズシゲ
+カタヤマ,リョウコ
+カタヤマ,ユウジ
+カトウ,ヒトシ
+カトウ,クニアキ
+カトウ,ケンイチロ
+カナザワ,ヒロカズ
+カネミツ,トモノリ
+カノウ,ユキエ
+カマタ,ヒロタカ
+カミザキ,マサトシ
+カミ,ヨウイチ
+カメタカ,タイスケ
+カモ,ケンヤ
+カワイ,トモカズ
+カワイ,ジュリ
+カワカミ,タカシ
+カワカミ,ミオ
+カワグチ,アユミ
+カワグチ,カズヒデ
+カワグチ,サトシ
+カワサキ,ジン
+カワサキ,ナオキ
+カワナミ,アキコ
+カワネ,カナコ
+カワバタ,アユミ
+カワムラ,モウ
+カワモト,ユウ
+カンダ,ミドリ
+カンダ,ナオシ
+カンノ,マサコ
+キシモト,ケンタロウ
+キタガワ,タケシ
+キタハラ,トモハル
+キタムラ,ショウ
+キタムラ,シンゴ
+キヌヤ,トシミ
+キノシタ,テツ
+キハラ,タツヤ
+キムラ,ヨシカズ
+キムラ,マサヒロ
+キムラ,アキヨシ
+キムラ,ジュン
+キヨシマ,ハルミ
+キヨズカ,ユキ
+キラ,タカシ
+キリサコ,テッペイ
+キン,サユリ
+キン,ナオコ
+クニエダ,カズアキ
+クボ,ゴウ
+クマノ,タケト
+クラタ,アキヒロ
+クラハシ,タカアキ
+クレ,トオル
+クロイ,ヨシタカ
+クロキ,ユウコ
+クワノ,ヒロタカ
+ゴウ,サエ
+ゴウダ,タケヒロ
+コガ,ケイ
+コクショウ,ツヨシ
+コサカ,シュウイチロウ
+コジマ,リョウスケ
+コゾノ,アイワ
+コダマ,イクオ
+コテラ,キミヒロ
+コデラ,シンタロウ
+ゴトウ,タダノリ
+ゴトウ,ヒロコ
+コニシ,ミサキ
+コニシ,ヨウコ
+コニシ,トモヤ
+コバヤシ,ナツコ
+コバヤシ,コウジ
+コバヤシ,チエ
+コバヤシ,ツヨシ
+コブセ,ヒデユキ
+コマキ,ヒロナオ
+コマザワ,タカマサ
+コマツバラ,トモヒサ
+コヤマ,イチロウ
+コンド,ヒロコ
+サイキ,カオル
+サイ,カズヤ
+サイトウ,キョウコ
+サイトウ,コウイチ
+サイトウ,テルヒサ
+サイトウ,ハジメ
+サイトウ,ヒロミ
+サイトウ,フミコ
+サイトウ,ヒトシ
+サイトウ,マキコ
+サカイ,タカユキ
+サカミ,タカシ
+サカモト,コウジ
+サカモト,ヒデキ
+サカモト,マサヨシ
+サカモト,ナナコ
+サカモト,ヨウイチロウ
+サクライ,サダヨシ
+サクラギ,ナホコ
+ササキ,マサキ
+ササキ,ユミエ
+サトウ,フクタロウ
+サトウ,シュウサク
+サトウ,タカシ
+サトウ,アキ
+サトウ,ケンイチロ
+サトウ,カズミチ
+サトウ,ユミ
+サトウ,リョウスケ
+サノ,トオル
+サノ,リョウスケ
+サワサキ,タカシ
+サワダ,ヒロコ
+サンペイ,サトル
+シオズカ,アツシ
+シノ,カズノリ
+シバタ,カズタカ
+シマ,ジュン
+シマノ,トシアキ
+シミズ,ヨシコ
+シミズ,マミ
+シモカワ,ヨシオミ
+シモムラ,エイブ
+シュクリ,マナミ
+ショウジマ,タツオ
+ショウダ,クミ
+シライシ,ノリカズ
+シラカタ,ジュン
+シラサキ,モモコ
+シロタ,マサヒロ
+ジングウジ,シゲカズ
+シンタニ,ケンタ
+シンボ,ノブユキ
+ジンボ,モトハル
+シンムラ,ヒデトシ
+スガイ,ツトム
+スギモト,ミホ
+スギモリ,ヒロコ
+スギヤマ,タカネ
+スギヤマ,ジュン
+スギヤマ,タクマ
+スズキ,キクコ
+セガワ,ジュン
+セキ,ケンジ
+セキネ,ヒロシ
+セキモト,カツアキ
+セト,アツシ
+セラ,カズヨシ
+ソデヤマ,ソラコ
+ソノイ,テルエ
+タイラ,マサシ
+タカキ,ミチル
+タカハシ,レイ
+タカハシ,ミネコ
+タカハシ,トモオ
+タカハマ,コウキ
+タカミヤ,チハル
+タカヤナギ,カズヒコ
+タカヤマ,サトシ
+タグチ,ワタル
+タケウチ,アツシ
+タケザキ,マユコ
+タケシタ,サトミ
+タケモト,ヒロトモ
+タダ,アツコ
+タチカワ,マコト
+タチバナ,ナオト
+タツガワ,トモコ
+タナカ,ヤスノリ
+タナカ,アキヨ
+タナカ,マサタカ
+タナカ,コウスケ
+タナカ,サチエ
+タナカ,ショウヘイ
+タナベ,ノリコ
+タニグチ,タケシ
+タニワキ,ヒロフミ
+タバタ,ヨシヒサ
+タハラ,ケンジ
+タマキ,ナオコ
+タマムラ,マコト
+タルミ,ヒロミ
+タンバラ,リョウコ
+チカツ,テツヒコ
+チバ,カホリ
+チョウ,リョウタ
+ツカダ,テツヤ
+ツカモト,サチカ
+ツジモト,ミキ
+ツチダ,ケイコ
+ツチヤ,タカアキ
+ツチヤ,チカラ
+ツツミ,サトシ
+ツボクラ,タクヤ
+ツムラ,トモエ
+テシマ,アキコ
+テラサキ,マサヒト
+テラサキ,クミ
+テラダ,タケハル
+ドイ,トモコ
+ドイ,ノブタカ
+トウ,ヒロコ
+トキタ,シンイチロウ
+トキト,リョウスケ
+トクダ,エミ
+トシズミ,マホ
+トダ,シュンスケ
+トヨダ,ヒロアキ
+ナイトウ,リョウタ
+ナカイ,マサトシ
+ナカオ,アキヒコ
+ナガオ,エリコ
+ナカガワ,トモミ
+ナガサカ,ミチコ
+ナカサカ,ヤスヒロ
+ナガサキ,ユウイチロ
+ナカザワ,ユウヘイ
+ナカザワ,ヨウコ
+ナカシマ,ユウヤ
+ナカジマ,エミコ
+ナカシマ,アキヒロ
+ナカジマ,シュウタロウ
+ナカジマ,リョウスケ
+ナカダ,カヨコ
+ナカダ,アヤコ
+ナガツカ,イサオ
+ナカト,シュウジ
+ナカニシ,ミドリ
+ナカニシ,ススム
+ナカニシ,イタル
+ナガマツ,マサヒロ
+ナカムラ,シゲトシ
+ナカムラ,キョウコ
+ナカムラ,アヤコ
+ナカムラ,マユ
+ナカムラ,ケイコ
+ナカムラ,ナオコ
+ナカムラ,ヒロカズ
+ナカムラ,サヤコ
+ナカモリ,テツヤ
+ナカヤ,ユウジ
+ナカヤマ,タケシ
+ナス,コウジ
+ナリトミ,シンタロウ
+ナンブ,トモヤ
+ニイミ,ヤスタカ
+ニシカワ,ソノコ
+ニシノ,ユカ
+ニシヤマ,タカヒロ
+ヌカダ,ヨシコ
+ヌマタ,ユウイチ
+ヌマタ,サトシ
+ノガミ,サトシ
+ノギ,アヤコ
+ノクオ,カオリ
+ノグチ,タカユキ
+ノザキ,ナツネ
+ノジ,ユキ
+ノマ,レイコ
+ノムラ,マサオ
+ノムラ,ユウイチ
+バコシ,シンゴ
+ハシモト,ナオコ
+ハスヌマ,チエ
+ハセ,ヨウイチ
+ハセガワ,ヒロシ
+ハタガワ,ジュンコ
+ハタケヤマ,ユウコ
+ハタノ,ヨウコ
+ハナイ,リカ
+ハマサキ,マコト
+ハマダ,ヒロタカ
+ハマデ,タカシ
+ハヤカワ,アキ
+ハヤシ,アヤ
+ハヤシ,サトコ
+ハヤシ,サトシ
+ハヤシ,ジュン
+ハヤシ,ヨウコ
+ハヤシ,ススム
+ハラ,トモヒサ
+ハラシナ,ノブキ
+ハラダ,アツシ
+ハラダ,ミドリ
+ハルナ,シュウスケ
+ヒキタ,ヒデト
+ヒダイ,マユミ
+ヒライ,キョウコ
+ヒライ,ユウスケ
+ヒライ,エリコ
+ヒライワ,クミコ
+ヒラオ,ヒデカズ
+ヒラカワ,マキ
+ヒラタ,ヨシアキ
+ヒラマツ,タカオ
+ヒロエ,アツシ
+ヒロセ,ヒデノリ
+フカザワ,ヒデユキ
+フカホリ,ノリヒロ
+フクシマ,マキオ
+フクダ,ヒロユキ
+フクダ,ヒロフミ
+フクダ,サヤカ
+フジイ,リエコ
+フジカワ,カズミ
+フジタ,ケンジ
+フジタ,マサオ
+フジタ,ヨシロウ
+フジムラ,トモユキ
+フジムラ,アキコ
+フジモト,ショウヘイ
+フジモト,リュウヘイ
+フジワラ,ケイサク
+フジワラ,サトシ
+フタカタ,ジロウ
+フナイ,サチコ
+フルカワ,ヒロコ
+フルカワ,ジュンイチ
+フルマタ,トモヤ
+ホシ,ユキ
+ホシウラ,ヒロシ
+ホシロ,イツミ
+ホソダ,シュンゴ
+ホリ,ノブヒデ
+ホリ,ユキ
+ホリエ,ノブト
+ホリグチ,ノゾム
+ホンナ,カオル
+ホンボ,ヒロユキ
+マエカワ,ミワ
+マエダ,コスケ
+マエダ,タカシ
+マエダ,エツコ
+マキウチ,ケイジ
+マキノ,ショウコ
+マキモト,トモノリ
+マサトウミ,マイコ
+マスイ,ヨウスケ
+マスダ,マサユキ
+マスダ,ミホ
+マツイ,ミオ
+マツウラ,カズヒサ
+マツオカ,アキヒロ
+マツオカ,トモコ
+マツオカ,マユミ
+マツオカ,ダイスケ
+マツカゲ,ヒサオ
+マツシタ,サトシ
+マツナガ,ワタル
+マツバラ,ノゾミ
+マツバラ,アキコ
+マツモト,ヒロミツ
+マツモト,ホクト
+マツヤマ,マイコ
+ミウラ,リョウ
+ミウラ,アツシ
+ミウラ,アツシ
+ミウラ,キヨマサ
+ミキ,ユウジ
+ミズカワ,ヒロユキ
+ミズタニ,ユキコ
+ミズノ,ユウセイ
+ミソノ,タダマサ
+ミゾハタ,チエ
+ミナガワ,マチコ
+ミナガワ,アヤ
+ミナミ,ヒロユキ
+ミナミ,タカシ
+ミナミカタ,タカノブ
+ミナミムラ,ヒデキ
+ミハラ,マサキ
+ミムラ,ミキコ
+ミヤイ,ノブアキ
+ミヤザキ,アツシ
+ミヤザワ,ナオヤ
+ミヤザワ,アキラ
+ミヤムラ,カオリ
+ミヤムラ,アヤ
+ミヤモト,ユウヘイ
+ミヤモト,マサヤ
+ミヨシ,ツカサ
+ムネムラ,チカフミ
+ムラカタ,トモユキ
+ムラズミ,ミツノリ
+ムラタ,クミコ
+ムラタ,マキ
+ムラモト,カズノブ
+ムラヤマ,ナオ
+モリ,ナオコ
+モリ,カツマサ
+モリ,アツヒコ
+モリ,クミコ
+モリ,ミキ
+モリウチ,ノリコ
+モリシタ,ユウイチロ
+モリタニ,カズト
+モリモト,ゲン
+モリヤマ,コウジ
+モロエ,ヒロカズ
+ヤゴ,ミノル
+ヤスガキ,トモフミ
+ヤスダ,アヤコ
+ヤスモト,アツシ
+ヤツナミ,アキオ
+ヤナギサワ,ケイスケ
+ヤナギハラ,シンスケ
+ヤブナカ,タイシ
+ヤマウチ,タカユキ
+ヤマオカ,タダシ
+ヤマオカ,ナオヤ
+ヤマオキ,ヒロユキ
+ヤマガタ,マコト
+ヤマグチ,シンイチ
+ヤマグチ,ヒロコ
+ヤマシタ,マドカ
+ヤマシタ,チエ
+ヤマダ,チエ
+ヤマダ,ジュンジ
+ヤマダ,ノブコ
+ヤマダ,アヤ
+ヤマダ,マキコ
+ヤマナカ,メグミ
+ヤマムラ,イッセイ
+ヤマムロ,カナコ
+ヤマモト,コウヘイ
+ヤマモト,テルヒコ
+ヤマモト,マサユキ
+ヤマモト,ミツヨシ
+ヤマモト,ミノル
+ヤマモト,シノブ
+ヤマモト,トオル
+ヤマモト,アスカ
+ヤマモト,ワタル
+ユアサ,クミコ
+ユキ,ナオコ
+ユリヤマ,ノリヒロ
+ヨコタ,アツヒサ
+ヨコハマ,トシユキ
+ヨコヤマ,アユミ
+ヨコヤマ,カズキ
+ヨシオカ,キョウコ
+ヨシオカ,マイコ
+ヨシオカ,マリコ
+ヨシダ,タカトシ
+ヨシダ,ナオコ
+ヨシダ,ナオコ
+ヨシダ,マリエ
+ヨシダ,ユウジ
+ヨシダ,ユウジ
+ヨシノ,ユカ
+ヨシヒロ,ユミ
+ヨシマツ,トオル
+ヨシムラ,ダイスケ
+ヨシムラ,カズフミ
+ワカマツ,ヒロヤ
+ワキタ,カズオ
+ワキタ,ケンシロウ
+ワシオ,ヨシアキ
+ワシザワ,チアキ
+ワダ,イサム
+ワダ,トシオ
+ワダ,イサオ
+ワダ,タケシ
+ワダ,カツエ
+ワタナベ,カズシン
+ワタナベ,トクジ
+ワタナベ,ヒロシ
+ワタナベ,キヨオミ
+ワタナベ,ヨシヒロ
+ワタナベ,ヨリミツ
+ワタナベ,ケイジ
+ヤマグチ,モトジ
+スズキ,ジロウ
+ササノ,ススム
+カネコ,タケシ
+クボタ,レイコ
+コスケガワ,マサナオ
+カナイ,サブロウ
+カトウ,コウイチ
+コダマ,タカヒコ
+コバヤシ,トシヒロ
+コジマ,トオル
+カメヤマ,カズヒコ
+クラバヤシ,ノブオ
+カンダ,カズユキ
+コンノ,ジュンジ
+カワシマ,マサナリ
+カワカミ,コウジ
+カナカ,カクタロウ
+カワムラ,ヒロウミ
+キムラ,シュンイチ
+カスガ,ヒロシ
+コジマ,モトヨシ
+カワノ,コウイチ
+カワナ,ヨシマサ
+コズマ,タケシ
+カワサキ,マサアキ
+カタノ,マサアキ
+カタダ,アキオ
+キクチ,マサオミ
+カミウラ,カズヒデ
+カネダ,テツオ
+コンノ,ヤスオ
+カワモト,シゲミ
+カバヤ,ヒロシ
+コブクロ,ケンキチ
+クマガイ,ユウジ
+コンノ,ヒデキ
+コヤマ,ショウイチ
+キタシロ,ヒトシ
+コダマ,タケシ
+カトウ,エイイチ
+キムラ,トシハル
+コイデ,イサオ
+クヤマ,タケシ
+キリハラ,モリヒロ
+カヨ,マサタダ
+カネコ,トシオ
+コハラ,イワオ
+カトウ,ユキオ
+コイ,セイイチロウ
+カヤマ,イサオ
+コイケ,クニヒコ
+コジマ,アキト
+コマツ,マサジ
+キタムラ,ノリヨシ
+キタワキ,ゼンイチロ
+カサジマ,ヒロフミ
+キムラ,テツロウ
+カミグチ,サチオ
+カトウ,フジオ
+カワムラ,トシヒト
+カドタ,ノブタカ
+オオタケ,シゲル
+カトウ,トモミ
+キノ,ノブヒサ
+カミ,マサミ
+キクチ,マサユキ
+カキウチ,ヒロヒサ
+コジマ,マサミ
+カタオカ,シュンスケ
+クボタ,ヒロユキ
+キタザワ,マサアキ
+コミネ,モトユキ
+クボ,タカユキ
+キタズメ,カズトシ
+コバヤシ,カツオ
+カワグチ,ヨシヒコ
+ケガサワ,ヒサシ
+コウチ,ミチオ
+コヤマ,トオル
+カワキタ,タカヒデ
+カワミツ,ショウゾウ
+カタヒラ,アツオ
+カワギシ,ヒロシ
+コンド,ヨシミツ
+キムラ,アキヒコ
+クボヤマ,シンタロウ
+クマモト,マサキ
+カワタ,フミヨ
+クニノブ,ヤスオ
+カマダ,タカシ
+カク,オサム
+カネコ,オサム
+コバヤシ,アキラ
+カシオ,ケンジ
+カナイワ,ケイジ
+ケンモチ,タダシ
+キクチ,オサム
+カザマ,ヤスアキ
+コマツモト,エイコ
+コンド,カツヒコ
+キクシマ,カツマサ
+コバヤシ,セイコ
+クマガイ,マサトシ
+カトウ,カズヒコ
+マルバヤシ,タカシ
+ムトウ,カツミ
+ミタニ,タケシ
+ミワ,マサシ
+シミズ,ツトム
+ミズノ,トシオ
+マチダ,カズオ
+マツイ,カズタミ
+ミウラ,リュウイチ
+ヒノ,リョウイチ
+ムラカミ,マサヒロ
+ミヤノ,ヒロユキ
+マルイ,マサノリ
+ムラサキ,トシオ
+マサカ,ヒデノリ
+ミネタ,タケミ
+マツナガ,ユタカ
+ミナガワ,セイジ
+ミヤケ,ナオアキ
+マツモト,ケンイチ
+ミサワ,トシユキ
+マエダ,コウゾウ
+ウダガワ,トシカツ
+ミヤハラ,コウジ
+ムライ,ショウジ
+マツモリ,シゲキ
+マサキ,キクオ
+ミウラ,エイジ
+モトミヤ,キヨシ
+ムラカミ,ヒロフミ
+マトバ,マサアキ
+ミウラ,トシオ
+マツカワ,カズヒロ
+ミズタニ,ナオヒコ
+ミヤノ,マサユキ
+マツダ,フサチカ
+ミス,アキラ
+マツヤマ,トシエ
+ミヤモト,タダアツ
+ミズノ,フミオ
+マルヤマ,セイジ
+マルコ,ミチタカ
+モチダ,トオル
+モトハシ,マモル
+ミズヤ,コウジ
+ミヤザキ,ミチマサ
+ミヤガワ,ミツル
+ムラシマ,タダオ
+マスサコ,セイイチ
+モリ,イチロウ
+モリタ,カズオ
+ミナミ,ヨシアキ
+ミヤキ,マサオ
+モリヤマ,ケンジ
+ミズタ,ヨシオ
+マツイ,ミツグ
+マツオ,マサヨ
+マツシタ,ユタカ
+コバヤシ,カツミ
+ムカエ,マサジ
+モリイ,ギョジ
+モリタ,タイゾウ
+ムカイ,マサオ
+マツオ,トキワ
+ムラヤマ,ヨシヒコ
+マツモト,トシオ
+ミヤサト,ミノル
+ミヤザワ,ヨシオ
+モリムラ,タカシ
+ムラノ,ヒデオ
+マスダ,ミノル
+ムラタ,ノブオ
+ミヤサカ,ケンジ
+モトバヤシ,マサミツ
+ミズノ,ユリコ
+モモイ,ヨシオ
+マツダ,トクオ
+スガワラ,ナオエ
+マツバラ,マコト
+マツモト,ミノル
+ミヤハラ,アツヨシ
+ムライシ,マモル
+マツムラ,マモル
+ミヨシ,テツヨシ
+モリモト,カズオ
+ミズタニ,タケシ
+マツバ,アツシ
+マツイ,カン
+ムラカミ,カズオ
+モリタ,シゲハル
+ムラタ,シゲオ
+マサキ,ヒロシ
+ミヤザキ,ヨシキ
+マツバラ,シンイチ
+ムラマツ,アツシ
+モリ,ノブユキ
+モリムラ,マサカズ
+スワ,ヨシミ
+コワタリ,ナオキ
+マツザキ,ヨシノブ
+マッサキ,マサヒロ
+ミタク,ケイゾウ
+マツカワ,サトシ
+モギ,シコ
+マブチ,キヨシ
+マツモト,トシロウ
+モリ,リョウイチ
+マツウラ,カズナリ
+マエダ,アキオ
+マスダ,ヒロシ
+マエニシ,ヒロシ
+マルヤマ,ナオヤ
+マツダ,タカオ
+マキ,トシヒコ
+モウエ,シンイチロウ
+ムライ,トヨミ
+マツイ,クニヒコ
+モリタ,マサル
+マエダ,タカブミ
+ムラウチ,イサム
+ミツヤス,アキラ
+モリ,ケンジ
+マツダ,サトシ
+マツオ,マサフミ
+マルヤマ,アキオ
+マツガエ,シゲヒロ
+カミクラ,コウイチ
+ミドリカワ,ユウジロウ
+マスダ,シゲノブ
+ミテラ,ヤスオ
+マツナガ,アキラ
+モリオカ,ヨシミ
+ミソオ,エツオ
+ムラヤマ,カツヨシ
+モリモト,シゲル
+モリ,ツトム
+マスダ,ヒロタカ
+ミヤモト,カツマサ
+ムラタ,ヨシテル
+ミナミサワ,カズヒロ
+マシマ,スミヒロ
+モリグチ,ヨシアキ
+マツイ,タカシ
+マエカワ,ヒトシ
+モチズキ,ジュン
+マスダ,シンキチ
+マツモト,ジュンゾウ
+モリナガ,カズノリ
+マスダ,ヒロタミ
+ミウラ,クニオ
+マツノ,タダオ
+マツオカ,ヨシテル
+マチイ,コウイチ
+ミズタニ,トシオ
+マツモト,ヨシノリ
+マサキ,ヒデト
+マツモト,タケシ
+ミツヤ,ヒデヤス
+ミズノ,ジロウ
+マエダ,フミオ
+ムラマツ,ケンジ
+ムサシノ,アキラ
+マエハタ,マサヒコ
+マツザワ,ヨシオ
+ミツイ,ヨシカズ
+モモダ,ミツカズ
+マツオ,カツミ
+ミワ,シュウジ
+ムラカミ,テツヤ
+ミカミ,ハルキ
+ヌカザワ,シンジ
+ナカムラ,シズエ
+ニシムラ,クニヒコ
+ニッタ,ケンジ
+ナガツユ,トキヤス
+ニイノ,ヒロシ
+タブチ,ケンジ
+ニシノ,サブロウ
+ヌカタ,タモツ
+ニシムラ,ヒサオ
+ナガノ,タカユキ
+ナカガワ,ヨシアキ
+ニシヤマ,ヒロシ
+ナカジマ,マサヒロ
+ニシダ,ミツオ
+ナカムラ,フミオ
+ノムラ,ユキオ
+ナカモト,ノリアキ
+ナカガワ,カズタミ
+ナルサワ,ツネオ
+ナイトウ,タケオ
+ノベ,ヨシヒデ
+ニシナ,ヤスノリ
+ノムラ,タダシ
+ナカムラ,シンジロウ
+ニカイドウ,ヨシヤス
+ナカダ,タツオ
+ニシナ,キミヒト
+ナリタ,トシオ
+ノグチ,ヨシヒロ
+ノヤ,コウキ
+ナガイ,マサト
+ナカムラ,キヨシ
+ニイズマ,タカミ
+ナカガミ,シュウイチ
+ナガタ,キシオ
+ニシザワ,ハツエ
+ノセ,ジュウロウ
+ナガイ,ユキオ
+ニシザワ,マサオ
+ナカハタ,カズトシ
+ナカジマ,ヒロシ
+ナカダ,マツオ
+ノナカ,マサキ
+ナカガワ,マサアキ
+ナカシマ,タミオ
+ナカモト,マサル
+ニシオカ,ヒロシ
+ニシマエ,シンタロウ
+ナカムラ,マサオ
+ナカニシ,カズオ
+ノダ,ムツヤ
+ナカムラ,アキヒコ
+ナカザワ,リョウイチ
+ニシダ,ヨシロウ
+ニシダ,タダユキ
+ニイ,リョウジ
+ヤマモト,ヒトシ
+ナカウチ,ヤスオ
+ナカジマ,カズタカ
+ナカムラ,マサミ
+ノムラ,クニヒコ
+ニシムラ,ヤスヒロ
+ノナカ,タダヒコ
+ニシムラ,トシヒデ
+ニシオ,キヨシ
+ナガオ,キヨシ
+ニイミ,ケンジ
+ナカムラ,ヒデユキ
+ネズカ,ヨシノリ
+ナカムラ,ユキトシ
+ナカザト,テツヤ
+アサノ,ジュン
+ノガミ,クニヒロ
+ナカジマ,カズヒコ
+ナイトウ,カズアキ
+ナカムラ,ヨシノリ
+ナカニシ,キヨアキ
+ナカダ,タミオ
+ナガサワ,タカシ
+ナガノ,カズユキ
+ニッタ,ユタカ
+ナンバ,ミツヒロ
+ノズエ,クニミツ
+ナガミ,ヒロシ
+ナガイ,ジュンイチ
+ナカハラ,ミズホ
+ナカジマ,タケヨシ
+ナカジマ,カツオ
+ニシダ,アキヒコ
+ナオイ,シチロウ
+ナベシマ,ヨシマサ
+ナカノ,ショウイチ
+ナカムラ,ハルオ
+ノダ,ミツヨシ
+ナカセ,トシアキ
+ナカジマ,ミツシゲ
+ナガサワ,タダシ
+ニヘイ,ミツヨ
+ナガイ,リョウスケ
+ナカシマ,タカオ
+ナカオ,セイ
+ナカガワ,ノブオ
+ナイトウ,コウイチロウ
+ノジマ,ユウスケ
+ナガノ,ユキオ
+ニシダ,カズオ
+ナカダ,キヨシ
+ナカハラ,タカノスケ
+ナカジマ,ムネタカ
+ネモト,キヨシ
+ナカムラ,ケンジ
+ナガトモ,マサミ
+ナカムラ,ヒトミ
+ナカヤマ,ヨシオ
+ナカムラ,ホズミ
+ナカムラ,フミノリ
+ノジマ,テツロウ
+ナガフチ,ヤスロ
+ナカノ,ゴイチ
+ニシヤマ,シンイチ
+ナカムラ,マサユキ
+ナガシマ,ナオジ
+ニワ,ユタカ
+ナカノ,ヤスアキ
+オニザワ,ユキオ
+オシカタ,マサオ
+オカ,カツヒロ
+オクヤマ,ノボル
+オキ,スミオ
+オカミヤ,ケンジ
+オグラ,マサキ
+オオデ,マサノリ
+オノダ,マサヒコ
+オオニシ,マサキ
+オクダ,キョウイチロウ
+オクダ,トシオ
+オガワ,コウジ
+オノ,マサオ
+オオスミ,コウジ
+オオツカ,タカシ
+オオトモ,マサアキ
+オカザキ,ユウジ
+オオハシ,ヒロシ
+オギノ,フミオ
+オサダ,シズアキ
+オオバ,ヒサシ
+オシマ,アヤコ
+オオカワ,カズヤ
+オカモト,ヒロシ
+オガワ,トオル
+オノ,キヨト
+オカノ,トオル
+オザワ,ユキマサ
+オハク,ヒロシ
+オシタニ,タカシ
+オザワ,ヒロシ
+オオハシ,タカノブ
+オオハタ,コウトク
+オノデラ,ミヤ
+オノ,フミオ
+オオオカ,フジコ
+オオノ,ヨシノリ
+オオハシ,ユタカ
+オオタ,タカシ
+オオモリ,ケンタロウ
+オシマ,コ
+オカモト,コウイチ
+ヒロセ,トモユキ
+オオミズ,ヤスオ
+オオノ,ミツオ
+オチアイ,マサヒサ
+オカベ,タイ
+オオタニ,アキヒロ
+オクノ,シゲオ
+オオスガ,ケンイチ
+オオノキ,カオル
+オオイシ,ジ
+オカダ,モトツグ
+オオミヤ,ユキヒロ
+サタケ,ツネオ
+オダギ,ハチロウ
+オオタ,サトル
+オフチ,タダヨシ
+オオカワ,カオル
+オカド,サトル
+オオサワ,ヒデキ
+オギサワ,ユキヒロ
+オカベ,アツシ
+オトヨシ,ヒデオ
+オガワ,タツロウ
+オリガサ,ヤスタケ
+オオバ,ユキコ
+オバタ,タカシ
+オオノ,タカヨシ
+オオサカ,マサヤ
+オオミネ,ケンゾウ
+オオタ,ヨシヒコ
+イノウエ,アキオ
+オオコシ,シゲキ
+オザワ,ヒデオ
+オカベ,ケイイチ
+オオボラ,エイジロウ
+オオタ,ジョウイチロウ
+オザキ,ジュンイチ
+オクダ,ヤスヒロ
+オザワ,テルアキ
+オカダ,ススム
+オオツカ,コウジ
+オノデラ,コウイチ
+オシオ,タダシゲ
+オダシマ,タダシ
+オザキ,シゲル
+マエダ,ミツオ
+オキ,マサオ
+オノダ,トキエ
+オナギ,アキラ
+オクダ,ヨシキヨ
+オオヒラ,セツジ
+オノザワ,トシヒコ
+オギハラ,クニアキ
+オオクマ,カズオ
+オオハラ,ノブヒロ
+オキ,カツスケ
+オガワ,タツヤ
+オオヤ,ヒデホ
+オオサワ,サブロウ
+オオハラ,ヒロヨシ
+オダ,タカコ
+オザワ,ミツオ
+オガタ,リョウスケ
+オカノ,アキコ
+オオイシ,シマ
+オナイ,ヒロユキ
+オオツカ,ジュンコ
+オオツカ,テツオ
+オイデ,ヨシアキ
+オキヤマ,カズコ
+オグシ,アケミ
+オダ,ヤスシ
+オカバヤシ,タダヒロ
+オオタニ,ジュンジ
+オオツキ,アユミ
+オカダ,ヒロシ
+オオスミ,チハル
+オオイガワ,タカハル
+オカダ,ススム
+オザワ,カズヒコ
+オオタニ,テツロウ
+オザキ,ヒロユキ
+オオタ,マサコ
+ヤナギヤ,ユカリ
+ナカタニ,シンイチ
+コバヤシ,ヒデシ
+ミクニ,ヨシヒロ
+スズキ,ジュンイチ
+ハダノ,ユキマサ
+ミヤマ,カオリ
+タカハシ,マサト
+シラオガワ,ライタ
+ナカムラ,アソカ
+マツザキ,キイチロウ
+ヤマシタ,タカヨシ
+シモヤマ,シゲル
+フタムラ,ノブユキ
+クワ,タカシ
+ナカムラ,トシミツ
+ヨコヤマ,ヒロアキ
+ヒルマ,ユキコ
+タチカワ,ナオミ
+ワカバヤシ,テルミ
+タカハタ,トモ
+アベ,エミコ
+セキ,リュウゴ
+ヤマザキ,ヒトシ
+ヤマネ,ヨシヒロ
+タザワ,ジュンジ
+カジカワ,アサコ
+サトウ,マサヒロ
+カワウチ,マリエ
+オオヤマ,ノブコ
+シンミョウ,ジュンコ
+タチワダ,ナオミ
+オオクボ,テツヤ
+トウゴウ,ヒロユキ
+ナガクラ,タカハル
+イトウ,ケンソウ
+ヤマザキ,セイ
+カザマ,ハルユキ
+カンバヤシ,ヒデオ
+ササノ,メイコ
+カワシマ,ミユキ
+シングウ,ノリアキ
+コイズミ,タクヤ
+カネコ,ヨシミ
+コバヤシ,スエツグ
+カモシタ,シュウイチ
+タムラ,サチヨ
+ハセガワ,タカシ
+クリハラ,ヒロフミ
+カナオカ,ヒロシ
+コバヤシ,ユキタカ
+ヒイシ,タカユキ
+ニヘイ,イクコ
+マルタ,ナオコ
+トオヤマ,ナミ
+セキザワ,チカ
+アリマ,ヤヨイ
+クリハラ,トモエ
+スミノ,ミノル
+ヨシダ,ヒデキ
+キノシタ,トモコ
+オチアイ,ミユキ
+ウマヤハラ,ヤスミ
+ホソカワ,ヒロコ
+フカガワ,シンジ
+カワムラ,エイゾウ
+マツイ,ケイコ
+ヨシモト,タカヒロ
+ウナカミ,トモコ
+カネマツ,サキコ
+カワカミ,マコト
+トヨダ,ヒデオ
+ヤノ,アキヒコ
+セキ,タカアキ
+ナカニシ,ヒトシ
+ハシモト,アキ
+フカヤ,クニアキ
+ミヤモト,ヒデクニ
+タケダ,トシフミ
+ミヤザワ,ミキオ
+イケダ,カズヒコ
+オシマ,ヒロシ
+ナカムラ,エリコ
+ゴトウ,ユウイチロウ
+ウシゴメ,ヒロシ
+クワヤマ,ヒロアキ
+ツカダ,チハル
+ムラタ,チカオ
+サトウ,ヨシタカ
+クロダ,カオリ
+スギモト,クニオ
+ヤスダ,コウイチ
+キウチ,サトシ
+ケドウイン,ジュンイチ
+タナカ,チカ
+ナカムラ,ヒロアキ
+クリハラ,トヨヒコ
+タキザワ,カズノリ
+ウエダ,ヒデアキ
+コベ,ヒデアキ
+ノグチ,フミオ
+コンノ,トモヒコ
+トミタ,カナメ
+オオタ,ユキコ
+マキ,ヒカル
+アマノ,ケンイチロ
+コミネ,アキヒロ
+サトウ,トモヤ
+イマデ,ユウジ
+マツナガ,タツヤ
+スズキ,タケシ
+マツオ,カエ
+サイトウ,キョウイチ
+ヨシザワ,ワタル
+ウヤマ,ケイコ
+アンドウ,マサヒコ
+スズキ,サトシ
+ヨシダ,カズトシ
+カワダ,エミコ
+フクダ,ケイ
+モリシマ,マサシ
+ツチダ,トオル
+サカイ,ミチヤス
+ツカダ,アツシ
+ハットリ,ヒロシ
+タムラ,コウジ
+ワタナベ,ナオキ
+コスギ,タカアキ
+ヒラタ,ケイタ
+スギヤマ,ヨシユキ
+モリカワ,モトハル
+カドタ,アキヒロ
+サノ,ヒロシ
+オザキ,テツオ
+ヨコマツ,カツヒサ
+タナカ,ユミコ
+イシサカ,コウイチロウ
+イシザワ,ユズキ
+コバヤシ,ジュン
+ヨシダ,トモアキ
+キムラ,リエコ
+オオツカ,タケル
+アダチ,タカシ
+アカサカ,ショウジ
+ミヤモト,ミドリ
+イチムラ,カオリ
+オシタ,ノブユキ
+ホンダ,オサム
+カヤヌマ,コウジ
+ノザキ,ユウジ
+カドワキ,フジエ
+オジ,ヤスヒロ
+タグチ,ヤスツネ
+タケイシ,アキト
+ヒライ,シンジ
+カナザワ,ジュンイチ
+フルカワ,エリカ
+モリナカ,マサヨ
+アライ,トシアキ
+タナカ,ヨシノリ
+シミズ,ヨシユキ
+イチハラ,マサル
+キタノハラ,ヒデヒロ
+キタオ,トモヒト
+モリモト,ヒデキ
+キタムラ,リカコ
+ササザワ,タケシ
+マツオカ,ナオコ
+コウラ,タカヒロ
+ミワ,ヒロコ
+ヨシオカ,ヒロコ
+ホリ,ユミコ
+サイトウ,ヨシヒト
+ナガセ,ヒデハル
+モリシマ,ヒロカ
+オワリ,マキコ
+タナカ,ミキ
+テラムラ,トシマサ
+コバヤシ,キョウゾウ
+サイトウ,ヒロノリ
+キムラ,タケシ
+ハシモト,ヨシヒサ
+ナカガワ,テツヤ
+ナカムラ,マサオキ
+ハギワラ,クニヒコ
+ニシカワ,トモミ
+キタジマ,コウイチ
+タカウラ,ヤスオ
+アサダ,ヒデヨ
+キタズメ,アラタ
+ネモト,ワカコ
+タナカ,マサヒコ
+タナカ,カズヒロ
+アダチ,カズヒコ
+ハラ,マサユキ
+アカマツ,ケンゴ
+イマムラ,アツシ
+ムラヤマ,ヨウジ
+タケウチ,タカユキ
+ズシ,ヤスオ
+コバヤシ,カホ
+ヤマザキ,アツコ
+ハマグチ,ソウイチ
+カゲヤマ,ヒロユキ
+カナモリ,ヒデキ
+カトリ,ツヨシ
+アライ,ショウヘイ
+ミヤタ,マリコ
+スズキ,エミコ
+ハルタ,ヒデヤ
+ナカザワ,タカシ
+スガ,マサユキ
+マエデラ,テルユキ
+アラマキ,アツシ
+キタノ,タツヤ
+ヨシノ,シゲミツ
+ミクリヤ,ヨウコ
+オクノギ,ケンジ
+サクライ,ヨシカツ
+コンド,ナオ
+スズキ,ノリコ
+クリハラ,クミコ
+ムコウグチ,マキ
+フジイ,アキヒロ
+カゲ,ユウコ
+マエダ,ノブヤ
+ナガホリ,ユキコ
+ツジ,モモコ
+キムラ,シンタロウ
+マツオ,コウイチ
+タテノ,ノリヨシ
+キムラ,マコト
+スザキ,タツヤ
+イワサキ,ミヤビ
+サトウ,ユリ
+ニッタ,ダイカン
+タナカ,マリ
+シマダ,アカネ
+タニグチ,ノリコ
+ホンダ,スナオ
+ナカタニ,タカシ
+ミヤジマ,シュン
+クキヤマ,コウジ
+セキネ,リョウタロウ
+ヨシハラ,サトル
+ヒラタ,マサカズ
+ナガサワ,トシオ
+ナカガキ,ケイコ
+クロカワ,ヤスユキ
+カケタリ,ケンジロウ
+イトウ,カヨコ
+マエカワ,ジュンジ
+マツダ,アキオ
+クワハラ,マコト
+イイズカ,ワカコ
+マジマ,ヒデユキ
+ムラタ,トモコ
+アキイケ,ユウイチ
+ナミキ,テツヤ
+ヨシノ,ミキコ
+スズキ,ユキ
+タムラ,ミドリ
+カメダ,シンヤ
+ニシ,ヤスシ
+イナオカ,ケンジ
+イワサキ,ユウジ
+カンダ,ナミ
+タダ,エイキ
+ウツ,トモアキ
+シマダ,マサオ
+ヨシダ,ヒロユキ
+オクガワ,ヨシフミ
+スズキ,ケイコ
+タンポ,ミネコ
+ワダ,ナオコ
+ウルシハラ,エイスケ
+イイオ,タロウ
+ニイハラ,キョウコ
+オムラ,タクヤ
+イノウエ,ゼンジロウ
+モリナガ,トシヒロ
+サノ,ヒロシ
+ナカタニ,マサヤス
+アベ,マサナオ
+ウチダ,ケンジ
+ヒロタ,ユウサク
+イワクラ,カイジロウ
+イシオカ,ヒデアキ
+トキタ,ナツコ
+キノシタ,ナオスケ
+ミズノ,アイコ
+ヤスエ,マサミ
+イワモト,サトル
+ヤマジ,ユカリ
+コサイ,ユウコ
+クボ,トシエ
+チバ,ヒカル
+ヤツタニ,アツシ
+イガラシ,タカズミ
+アラカワ,アカネ
+テラサキ,モトアキ
+セゴエ,サトコ
+トクシマ,マサコ
+バンドウ,ショウコ
+タキザワ,ケンジ
+ミズサキ,ケンタロウ
+タキグチ,ケイ
+ヒオキ,マサシ
+ナカイ,アツミ
+オイカワ,レイコ
+マツムラ,チグサ
+エンド,ヨシオ
+タジマ,サトコ
+ヤマザキ,エイジ
+セノオ,コウジ
+ハラダ,トシマサ
+フクイ,トモカ
+マツウラ,ケイ
+カワムラ,ユウイチ
+テラモト,タカミチ
+ハギワラ,タクミ
+ナカシマ,エミコ
+キノシタ,ミチオ
+アライ,チズル
+ムラヤマ,ジュンコ
+サエグサ,トモミ
+タナカ,ミツコ
+マエダ,オサム
+ミヤザキ,カズミ
+イケベ,アキラ
+クワバラ,タカノリ
+ヨダ,タカオ
+タチバナ,ヤスアキ
+ヤマグチ,ヨシアキ
+イシハラ,ケイコ
+タキザワ,マサアキ
+ヒラノ,ヨシブミ
+カワサキ,タカヨシ
+ヤマモト,ヒサトシ
+アラセ,アツシ
+ヤナギサワ,マサノブ
+シオヤ,アキエ
+サトウ,コウイチロウ
+カトウ,ヒトミ
+オノ,ヨシタカ
+キタハマ,ヤスマサ
+ゴトウ,ノリコ
+ニノミヤ,マユミ
+ウスイ,トモノリ
+ミズシマ,タケル
+スドウ,マコト
+イケダ,アキコ
+ナカヒガシ,アリシゲ
+クリモト,ロワル
+トダ,ヒロタカ
+ハカマタ,アツノブ
+タニグチ,ハルミ
+イマゼキ,イクコ
+ホリオ,マユミ
+カスガ,ツヨシ
+カワセ,ナオコ
+サトウ,ヒロミ
+タカナシ,ノブアキ
+マツシタ,タカシ
+ヤグチ,ヒデキ
+カネコ,カズユキ
+ヒダカ,ミオ
+サッサ,タイチ
+ソガ,タクヤ
+スギウラ,ケンタロウ
+サトウ,アミコ
+タニバヤシ,サチコ
+ニシオカ,タカシ
+トモナガ,ナオキ
+オオハシ,ヒデキ
+ナガシマ,セイタ
+タニガキ,セイコ
+コウダ,コミナ
+キヨノ,サトシ
+ヤマカワ,トシオ
+ナカジマ,ヒロシ
+モテギ,コウジ
+オオヌマ,ユタカ
+サトウ,シゲオ
+フルイエ,ヨシコ
+アイモト,モトフミ
+ヨコオ,クニオ
+ニシカワ,ケンジ
+ビトウ,ヨシナガ
+キタムラ,シンヤ
+ヤマカワ,サダハル
+トミタ,タケシ
+ツチダ,ヒデト
+イシグロ,リエ
+マツオ,トオル
+ウエモト,コウイチロウ
+イイダ,ミキコ
+スズキ,シゲヒロ
+タムラ,カズヨシ
+オクダ,ノボル
+ホリ,ヨシミ
+クサツグ,ヤスシ
+ヤマダ,マサナオ
+アサハラ,タカヒロ
+トクダ,マンナリ
+イデタ,ヨシヒロ
+イトウ,テルミチ
+サトウ,キイチロウ
+ツジサワ,ケイ
+オノ,コウジ
+イワマ,ノブアキ
+ダイゴク,ジュンイチ
+ヤマムラ,ヨシカズ
+ハセガワ,トシカズ
+イギ,タカヒロ
+マカベ,マサカツ
+オカモト,カツオ
+オオハラ,ユキナオ
+セキヤマ,カズオ
+キタジマ,ヒロアキ
+トリウミ,マサヒロ
+ミヤザキ,タテオ
+ウイ,ヨシヒト
+クラモチ,カズヒロ
+シオヌマ,ヒデトシ
+ライタ,イクオ
+シモコウベ,ノブカズ
+サワノ,テルオ
+サカニシ,ユウジ
+ササキ,トシオ
+セイノ,ケイゾウ
+スズキ,アキヨシ
+サカモト,トシオ
+スズキ,シロウ
+サワノ,カツヤ
+シガ,テツヤ
+ゴトウ,トクマサ
+スダ,ジュンジ
+スズキ,ヨシコ
+サカキバラ,トシオ
+サトウ,ケンジ
+サカグチ,ヨシノリ
+スギサキ,ミツクニ
+スエキ,タカシ
+スズキ,ノブアキ
+シバタ,コトジ
+スギヤマ,タダオ
+サカイ,マサユキ
+シミズ,タダシ
+スギモト,トシオ
+サトウ,タクジ
+セキ,オサム
+サクライ,ハルユキ
+セキグチ,コスケ
+サトウ,エイジ
+スズキ,ユウノスケ
+サイトウ,タダオ
+セキネ,トヨフミ
+スズキ,ツトム
+イイダ,キヨタカ
+スズキ,ヒロシ
+ササキ,ミツオ
+スエナガ,トシオ
+サカモト,ヒデアキ
+サイトウ,マサミ
+スガオ,テツジ
+シマズ,ミノル
+サイトウ,フミオ
+シノザキ,アキラ
+スズキ,ヨシユキ
+スナガ,ケン
+サトウ,オサム
+スズキ,ケイタロウ
+セキネ,サダノリ
+ササキ,トシオ
+サワダ,アキラ
+サイトウ,カズオ
+シモゾノ,タダヒコ
+スエ,タカシ
+サドトモ,アキラ
+セキネ,ケンスケ
+サトウ,サトシ
+サンゴ,ヨシノブ
+スドウ,クニアキ
+ソノダ,ナオミ
+シマ,ミノル
+サトウ,ヨネゾウ
+サトウ,トミオ
+シブヤ,カズアキ
+サトウ,カズオ
+サトウ,テルヒコ
+サカタ,ヨネオ
+サイトウ,オサム
+スワキ,タカシ
+ソリ,タケジ
+サカモト,シュンイチ
+シライシ,マサトシ
+スズキ,アキオ
+シマダ,トシオ
+スズキ,マサヒロ
+スズキ,ヨシオ
+サトウ,ハジメ
+スズキ,キヨシ
+サトウ,ツトム
+シゲマツ,キヨシ
+サガラ,タカトシ
+サイトウ,ユキオ
+シングウ,タカオ
+スガヌマ,テルノブ
+ソガ,タケシ
+ササキ,ノブユキ
+サトウ,シゲル
+サワダ,テツオ
+ソマ,オサム
+シバタ,タケオ
+サトウ,ミチコ
+サトウ,キヨシ
+シマダ,ヒデオ
+ササキ,ノブオ
+サトウ,ケンジ
+サイトウ,シゲル
+シモデ,ヒデキ
+ササキ,トシオ
+サトウ,ヨウ
+サトウ,ヒサオ
+サワダ,シンイチ
+シロサキ,ヨウイチ
+シバイ,ススム
+サイトウ,ミチオ
+スズキ,トシオ
+ソガベ,イサオ
+セガワ,チヒロ
+シミズ,ミノル
+スズキ,ヨウジロウ
+シロヤマ,ヨシヒコ
+シイナ,ヨシオ
+サヤマ,マモル
+サカモト,マコト
+サトウ,ヒロシ
+スズキ,タダヨシ
+スズキ,テツロウ
+ササセ,カツユキ
+サクライ,マサキ
+シマダ,セイジ
+サトウ,カツヒロ
+シモノ,ヨウスケ
+スズキ,ヨシナリ
+スギモト,マサオ
+シミズ,タケオ
+サノ,ヨシノブ
+スズキ,コウヘイ
+シマダ,カズヒコ
+スズキ,ハルヒサ
+スギフジ,ヒトシ
+サカイ,シンイチ
+サカグチ,エイジ
+スガワラ,ダイサク
+シノズカ,ジュンイチ
+シガ,ミツオ
+サカガミ,トヨマ
+スズキ,カズユキ
+スギノ,ヒデオ
+スギウラ,ススム
+シミズ,カズミ
+スズキ,タケシゲ
+ササコ,セイゾウ
+セキ,ユキヨシ
+サトウ,タツジ
+シマ,ヒロシ
+スズキ,キヨテル
+サカモト,ヨシカズ
+ササキ,ヒロシ
+シマダ,イソジ
+サイトウ,タダヒサ
+シオタ,トヨオ
+シオダ,イサム
+スダ,エイジ
+シイナ,ケンゾウ
+シオノヤ,テツオ
+サイショウ,ヤスヒロ
+ソイダ,エイイチ
+ソマ,カンジ
+サトウ,ヒロシ
+サトウ,タケミチ
+シオバラ,キヨエ
+ササオカ,ヨシタカ
+ササキ,ミツノブ
+セト,フミオ
+シュドウ,タカオ
+サカモト,ヒロシ
+サクマ,タカシ
+シノザワ,ツヨシ
+シオバラ,ヒロユキ
+サクライ,ユズル
+サトウ,メグム
+サクライ,トシオ
+ササベ,ヒロシ
+サトウ,リュウゾウ
+スギウラ,ユウゾウ
+サカイ,マサオ
+ソマ,ノブオ
+ソウヤ,セイジ
+ソネカツ,アキラ
+セキネ,タケオ
+スズキ,ノリオ
+セキネ,トシツグ
+サカキバラ,カズトシ
+シモカワベ,ケン
+サワムラ,ナルミ
+セキ,ジュンイチ
+スズキ,コズエ
+サカマキ,ヒデアキ
+サガワ,トシヒサ
+スギヤマ,タケユキ
+スギモト,コ
+セオ,ユウジ
+サイトウ,タカシ
+サカイ,ミキオ
+サクライ,タダヒロ
+セキネ,マサノリ
+サトウ,ハツミ
+シミズ,タカシ
+シミズ,トシオ
+サイトウ,マサオ
+サクライ,マサアキ
+スギヤマ,ヤスオ
+シズカ,ヒサナオ
+シラカワ,アキラ
+サイトウ,ユズル
+サキモリ,イワオ
+サトウ,テツオ
+セキグチ,オキトシ
+セキネ,ノリコ
+シバタ,コウジロウ
+スズキ,タカヒロ
+サイトウ,ヒサオ
+サトウ,ノリオ
+セキネ,オサム
+サカイ,ハルヒコ
+ササオ,シンジ
+スドウ,マコト
+モリ,ショウジ
+シミズ,エイゾウ
+サトウ,テルオ
+スズキ,イサオ
+シムラ,ヒロトシ
+シバサキ,ヒロシ
+スガマタ,カズオ
+スズキ,ヒロシ
+シオノヤ,キヨカズ
+タカハシ,トシロウ
+ツキヤマ,キクオ
+ツノダ,ヨシキ
+タカハシ,ナオト
+トクザワ,モリハル
+タグチ,マサオ
+タカギ,ヒデオ
+タカノ,テルミツ
+タハラ,キヨカズ
+トヨサワ,コウイチ
+トヨマス,ケイイチ
+タカハシ,マサノブ
+タケウチ,テイジ
+タキイシ,リョウジ
+タカイシ,シゲオ
+タカサキ,ケンジ
+タニガワ,ヒロユキ
+タカハシ,マサトシ
+タナハシ,コウジ
+タマキ,ヒロシ
+トバ,マサシ
+タバタ,タカシ
+ツジ,タカオ
+タナカ,アツシ
+タカハシ,マサノリ
+トクナガ,キミオ
+タグチ,マサオ
+タキザワ,カツシゲ
+トミ,タネマサ
+ツジ,ケイコ
+ウチダ,トシオ
+タナカ,イワオ
+ツネヨシ,ノリカズ
+タカノ,ムネオ
+タカハシ,ユキチ
+タカヤナギ,ヨウイチ
+タケダ,ケイスケ
+タボ,ユタカ
+タナカ,カズオ
+タケウチ,マサキ
+タカヤス,トヨミ
+ツチヤ,ユハツ
+トクナガ,ケンジ
+ツチダ,ナオカタ
+ツボイ,エイエツ
+タカハシ,マサシゲ
+ツカモト,サダム
+タナカ,シゲル
+トモツネ,ススム
+チジ,トシハル
+サトウ,セイジ
+タカタ,ツネオ
+トハタ,ヨシミ
+タカハシ,ミノル
+タカハマ,ヨシアキ
+テラサワ,ナオコ
+タカバヤシ,ショウジ
+テラダ,シュウジ
+ツカダ,セイジ
+タナカ,ヒデオ
+トリマル,タミオ
+ツチダ,マモル
+タキモト,トシヒコ
+タキイ,ヒデアキ
+タネダ,ケンジ
+タムラ,ヨシノリ
+タドコロ,ヒサオ
+タカオ,マスミ
+タナカ,ヒカル
+タカハシ,ハツオ
+タカハシ,シゲユキ
+タカハシ,フジオ
+トミタ,トオル
+タカハシ,アツノリ
+タニグチ,ミチアキ
+タナカ,ユウゾウ
+ツボイ,ヒロミ
+タケウチ,ホブン
+ツダ,トヨシ
+タケダ,マサユキ
+タケイ,シゲオ
+ツジカワ,ユウイチ
+タケムラ,セイジュ
+タキ,マサアキ
+タカダ,マサアキ
+タキザワ,シゲル
+タナカ,マサジ
+タニムラ,タケヨシ
+ヨシザワ,マサハル
+ツネカワ,タロウ
+タナカ,ヒロシ
+タカダ,カツオ
+ツル,アキラ
+タニ,マサヒロ
+タグチ,イサオ
+タナカ,ジュンゾウ
+タニグチ,カズヒロ
+タナカ,ノリミツ
+ツジ,ユウイチ
+タナカ,カツミ
+ツユキ,ヒサオ
+タマル,マサミ
+ツチヤ,ケイジ
+ツルオカ,ノブオ
+タカハシ,テツオ
+タカハシ,ミツコ
+トウフクジ,トシオ
+タナカ,オキツグ
+タカギ,キョウコ
+タカハシ,ヨシヒサ
+タニグチ,リョウジ
+トヨダ,ヒトシ
+タカギ,タケシ
+タケイ,シゲル
+ツダ,フミオ
+ツネヒロ,ジュンジ
+タキザワ,トシオ
+タチバナ,ゴイチ
+タカハシ,カツユキ
+タニグチ,コスケ
+タケダ,カズト
+ツチヤ,ケンイチ
+タカハシ,トシアキ
+タノウエ,ヒコサブロウ
+タカバタケ,マサノブ
+タカハシ,マタサブロウ
+フナキ,テルヤス
+タケダ,カツマサ
+トクナガ,タツ
+アサイ,ユウジ
+タカハシ,ミキコ
+タカハシ,ノリオ
+タガワ,ショウイチ
+タナカ,ノブユキ
+タチカワ,タケシ
+タグチ,カズヨシ
+タカサキ,アキラ
+タマオキ,シズオ
+タナカ,セイイチロウ
+タカノ,シン
+タケウチ,シゲル
+ツダ,センジ
+タカナミ,マサル
+ツキナワ,ヨシナオ
+トミモリ,ススム
+タケダ,トオル
+トガシ,テツヒコ
+ツズキ,シゲトシ
+トビタ,ノブアキ
+トモナガ,ツネカズ
+ツツイ,シゲアキ
+タカギ,ジュンジ
+タニグチ,カズトシ
+タカノ,トシヒロ
+タナカ,サトシ
+トマツリ,シロウ
+タカギ,イツオ
+タカシマ,フミオ
+タハラ,ヨシアキ
+タナカ,カズコ
+タカダ,ヨシオ
+トリイ,ミツユキ
+タケベ,ノブユキ
+ツカモト,アキオ
+タムラ,ノブヒロ
+トミナガ,サカエ
+タカイワ,サトシ
+タバタ,ケンジ
+タカハシ,クニオ
+テンポウリン,ソウイチ
+テラウチ,サダユキ
+タカハシ,キヨシ
+タカセ,チカラ
+タケムラ,モトイ
+タムカイ,フミオ
+タカハシ,ユウジ
+タケツ,カツジ
+タノオカ,ススム
+タカハシ,タダシ
+トオヤマ,キヨノブ
+タケウチ,アツシ
+タカハシ,マサオ
+ウシオ,ユズル
+ウスギ,カズヒロ
+ウチヤマ,ヨウイチ
+ウメダ,カズスケ
+ウケモリ,マサナ
+ウチダ,ミチヤ
+ウエダ,ヒサオ
+ウチダ,ケイジ
+ウツキ,テツオ
+ウエダ,ミキヒコ
+ウチダ,ヒデキ
+ウエハラ,シュウ
+ウエムラ,ノブヤ
+ウチダ,サダユキ
+ウチムラ,ケイイチ
+ウチダ,ケンスケ
+ウチダ,ケイイチ
+ウエキ,アキコ
+ウカジ,マサテル
+ウチダ,マサアキ
+ウエムラ,ヒデオ
+ウシオ,トクジ
+ウメムラ,トシオ
+ウメシマ,リキツグ
+ウコン,カオル
+ウチイケ,ジュンイチ
+ウルシノ,タカアキ
+ウチナシ,ヘイタ
+ウグサ,マサユキ
+ウノ,トシヒデ
+ウエキ,ミノル
+ウエモト,ケン
+ウエムラ,ユキオ
+ウエハラ,ヒロシ
+ウエダ,シンペイ
+ワタナベ,ヒサユキ
+ワタナベ,カツミ
+ワタナベ,キンヤ
+ワカムラ,ヤスロ
+ワタナベ,ヒデジ
+ワタナベ,ヨシタカ
+ワタナベ,ヒロハル
+ワタナベ,カツナリ
+ワタナベ,ヒデオ
+ワタナベ,カツヒコ
+ワタナベ,ヤスアキ
+ワタナベ,タダシ
+ワキタ,コウメイ
+ワタナベ,トキオ
+ワタナベ,コンゴウ
+ワタナベ,アキラ
+ワタナベ,オサム
+ワタナベ,ケンジ
+ワタナベ,スミタダ
+ワダ,ヤスシ
+ワタナベ,タツヒコ
+ワダ,タケミツ
+ワダ,ホマレ
+ワタナベ,マサアキ
+ワタナベ,アキラ
+ワタナベ,シゲアキ
+ワカバヤシ,ミネオ
+ワタナベ,ヒサオ
+オオタ,マコト
+フジワラ,スミアキ
+コイケ,ミチオ
+カタオカ,テツヤ
+ヒロシゲ,キヨシ
+シンザワ,ヒロシ
+ミズカミ,マサミツ
+ナカジマ,ケイイチ
+フクシマ,シゲキ
+ナカ,ヒロシ
+ヒラヤマ,マサコ
+ニワヤマ,カツジ
+シミズ,ソウジロウ
+フルサワ,ツヨシ
+サクライ,ミズホ
+タケナカ,アツノブ
+スギウラ,カヨコ
+カトウ,ケンジ
+ホシカワ,マサオ
+オガワ,イサオ
+カシワギ,コ
+サカイ,ヒロコ
+モリ,ハルオ
+ホンボ,ノブユキ
+イイジマ,ヨシアキ
+コジマ,タカオ
+タカハシ,ノボル
+ハタ,ショウスケ
+オガワ,アキノリ
+ツチヤ,カツヤ
+コヤマ,イサオ
+フルミ,テツオ
+クメ,ツネオ
+クラタ,セツオ
+ウシジマ,マサカズ
+エバト,カツノリ
+サトウ,ノブユキ
+ムシャ,ナオヒコ
+ユアサ,マモル
+キクチ,ナオキ
+マツバヤシ,テルヨシ
+マツイ,アキラ
+タケムラ,ヒロシ
+テラシマ,ヨウスケ
+クラ,ヒデクニ
+マツイ,ヨシオ
+ウエダ,イサオ
+ハヤシ,シンイチ
+カワナ,ダイジロウ
+ハヤシ,カズオ
+デモト,マサヒロ
+シブキ,タケシ
+ハマ,タツオ
+エンド,コウザブロウ
+ミヤモト,タカヒサ
+マツダ,ヒロシ
+ヤマモト,トモコ
+ムラカミ,シゲオ
+オカダ,ダイキチ
+ワタナベ,カズユキ
+イワサキ,アキヨ
+ヨシダ,スミユキ
+オオモリ,マサノリ
+ミズタニ,ヒサエ
+スギウラ,カズオ
+ノナカ,ミツタカ
+ワタナベ,イサム
+サイトウ,タケオ
+オオカワラ,ゲンタロウ
+カドイケ,タケタダ
+マツモト,ノリカズ
+ナカ,タカオ
+カトウ,ケンゾウ
+カワイシ,ユウコ
+ナガサワ,ツトム
+スヤマ,クンロウ
+クマシロ,ヒロシ
+タカバヤシ,ヒデオ
+コンド,ケンゾウ
+イナバ,サトル
+コバヤシ,トシヒロ
+ヤマグチ,ミカコ
+スズキ,ユウジ
+アキヤマ,ユタカ
+タカダ,アキラ
+サワイ,マサヒコ
+ナカタ,キヨユキ
+イタバ,ユウイチ
+クニギタ,ヨウイチ
+ヤマダ,ヨウコ
+ヤマダ,ユウコ
+タカハシ,ヨウイチロウ
+ウメムラ,ノリヒコ
+コバヤシ,ノブアキ
+カネミツ,タダオ
+キド,マサシ
+カネキ,タダオ
+コムラ,マサヒロ
+フジモリ,ケンイチ
+ヤマシタ,テルタケ
+クリヤマ,マサヒロ
+トザワ,タカシ
+イシイ,チカトシ
+タカハシ,ヨウイチ
+タナカ,カズミ
+イシザキ,テツオ
+ハラダ,マサヒロ
+トクヒサ,シゲヤス
+イシムラ,タダヒロ
+ウエダ,タカシ
+オフチ,クニヒロ
+ヤツルギ,ミツオ
+ミナト,マユミ
+ヨシダ,マサヒロ
+ミナミ,ヤスオ
+オカ,アキオ
+イチカワ,カズオ
+オオクボ,ヒデキ
+イシダ,ヒロユキ
+トミタ,イサオ
+ヒラオカ,ヒロヒサ
+カトウ,ヒデオ
+オムラ,ムツオ
+オサジマ,トシヤ
+フナコシ,セツオ
+コウダ,ヒデアキ
+アサオカ,タツオ
+カスガ,アケミ
+モモハラ,ブンイチ
+ウエムラ,トシヒデ
+オバタ,カズコ
+オノダ,ユキオ
+ミヤシタ,カンジ
+ホソヤ,ヤスオ
+ヤシロ,ユキオ
+ワタナベ,アツシ
+キムラ,トキチ
+カミジョウ,ヒサエ
+サトウ,ヨシオキ
+マツシマ,アキラ
+カタヤマ,ヨウコ
+ヒラノ,ゴヘイ
+ナカライ,ダイスケ
+ヨコヤマ,ヒサオ
+オオガネ,トモヒロ
+キムラ,マコト
+ノザサ,ヨシノリ
+モリノ,カズシゲ
+エチゴヤ,ミチヒコ
+フクシマ,ヒデオ
+イトウ,マサユキ
+イケダ,ユキコ
+トクナガ,リエ
+キモト,アイコ
+オシダ,サトコ
+ハシモト,ノリカズ
+ノグチ,トシノリ
+ミヤベ,カズト
+クワハラ,ヤスエ
+キムラ,ヒロミ
+オダ,カズユキ
+アイザワ,タミオ
+ウエノ,カツオ
+マツバラ,ノリユキ
+タマイ,カズミチ
+シライ,ヨシオ
+オオハシ,コウジ
+タミヤ,フミヤ
+ハラダ,ヨシコ
+ウスイ,タカシ
+コリ,コウイチロウ
+ノダ,シゲヒコ
+ナミキ,マサト
+ナカオ,マサミツ
+カドヤ,アキラ
+オノ,トシヒデ
+シブカワ,シンイチ
+イワサワ,マナブ
+タブセ,イチロウ
+オサワ,タカヨシ
+ナカダイ,ケンジ
+エガシラ,ヒロユキ
+ササキ,カツオ
+フクチ,カズヒコ
+ヨシヤス,ゴウ
+ワタナベ,コサト
+ウエノ,レイコ
+エトウ,マサノリ
+ヨシダ,マサオ
+タケイ,ユウイチ
+ハヤシ,ヒサシ
+マタキ,シンゴ
+モリモト,イチロウ
+イハラ,ケンジ
+ツカハラ,テルオ
+カノウ,トモコ
+ムネユキ,ヒデマサ
+オオツボ,ヨシタカ
+ヤマモリ,カツオ
+アンドウ,セイキ
+ヤマザキ,ヨシアキ
+タキモト,ヨウイチ
+タケムラ,ナオカズ
+ムラカミ,マコト
+タカタ,ノリオ
+ヒロセ,ツタヒロ
+ヤクワ,タカシ
+シングリョウ,ヨウコ
+タチ,マサシ
+サトウ,カズオ
+ヤマモト,マサヒロ
+スドウ,ショウコ
+ホンマ,ヒロキ
+オオツボ,トシオ
+カザマ,ミツヒロ
+アガワ,ミホコ
+イノウエ,リュウイチ
+アライ,マサチ
+ウエムラ,ユタカ
+ニシクラ,マサヒロ
+ミヤザキ,ヨシカズ
+フクダ,モリマサ
+ツリヤ,タダオ
+タナカ,ヒロカズ
+オガワ,コウジ
+スズキ,ミノル
+ハマグチ,タクジ
+カメダ,カツヤ
+モモハラ,ヒデオ
+ヒラオ,タカコ
+タカダ,ナオユキ
+イケダ,ヨシヒロ
+スズキ,アキラ
+タカハシ,カズヨシ
+タナカ,ジロウ
+セラ,タイチ
+タケムラ,トシアキ
+ホリキリ,マモル
+イケダ,ミノル
+アラキ,セキネ
+オオツカ,カズイチロウ
+クニマツ,セイザブロウ
+ウシバ,タカシ
+ハヤシ,マサト
+イシイ,ミキオ
+カダ,アキラ
+ヤギ,タダオ
+ヒライ,コウイチロウ
+クロセ,ヒロシ
+オカベ,イサム
+カネコ,トシユキ
+コジマ,サトル
+ニシヨリ,ミノル
+ナカジョウ,ジロウ
+ハシクラ,ツトム
+タカハシ,タツオ
+ウエクサ,ノブアキ
+シバタ,ヒロシ
+タカハシ,テルオ
+イナバ,カズト
+ジュンイチロ,アキノリ
+ハヤカワ,ヒデオ
+イトウ,タケシ
+キモト,マサツグ
+イダ,ヒロシ
+ホウジョウ,カツヒコ
+ホリイ,ツネオ
+カイセ,アツシ
+ハシモト,ヤスアキ
+スズキ,ヒトシ
+カネサカ,ヨシオ
+ヤマグチ,ユウジ
+スズキ,マサカズ
+スドウ,マサヒコ
+オオバ,ミホコ
+ムラタ,トシコ
+アキヤマ,マサシ
+アスマ,タケオ
+カワジリ,ヒデオ
+マツモト,キョウジ
+シロヤマ,コ
+フジイ,アツコ
+ゴトウ,ダイスケ
+タニアイ,ヤスマサ
+カツボリ,マキ
+ヒアテ,クミコ
+テライ,アキコ
+ハンダ,マサコ
+ミシマ,ヒロミ
+タカシマ,カズミ
+マツダ,アキラ
+コンド,ノリコ
+イタヤ,ケンジ
+マツモト,ナオタケ
+イイヤマ,ヒデオ
+ジット,カツヒロ
+クボタ,サチコ
+イシグロ,エイジ
+モリ,ウツミ
+カンノ,サチコ
+イトウ,セイジ
+ヨシダ,リュウジ
+マルヤマ,クニオ
+サトウ,ナホ
+コウダ,ヨウジ
+ワタニ,マモル
+サセ,イクオ
+ソトヤマ,カツノリ
+ホンダ,テルクニ
+イヌイ,ユタカ
+スズキ,ヨシノリ
+コニシ,ヨシノブ
+スギイ,ユキヒサ
+アラキ,ノブオ
+ヒラオカ,ヤスシ
+オオツカ,ムツオ
+カトウ,シゲオ
+シオノ,ヒロシ
+カタヤマ,ヒロノリ
+フチカミ,タケヒコ
+ヒラキ,タモツ
+イワサキ,キミオ
+エノキ,ジュン
+イワタ,セイイチ
+シュトウ,タダシ
+トオヤマ,マツノリ
+コイデ,ジュンザブロ
+タナベ,ユウジロウ
+ヤマモト,シュンイチ
+カイハツ,セイシ
+アライ,カツジ
+ウエダ,ユウゾウ
+クラオカ,ソウイチロウ
+コバヤシ,エツヒロ
+タメチカ,タテオ
+ヨシダ,シズオ
+マツモト,シゲル
+サカシタ,カネオ
+ワダ,トシアキ
+イトウ,ヤスオ
+ヨシダ,カツジ
+ヨネダ,トシヒデ
+オムラ,マサミ
+タカギ,シチロウ
+ウチヤマ,アキコ
+カシワギ,ケイコ
+ニシダ,セツオ
+オシカ,タケオ
+エジマ,トモノリ
+オカ,ケンイチ
+ヨシダ,ヤスエ
+イマイ,ヤスシロウ
+ヤマミチ,トモコ
+アイモノ,カツオ
+ヒノ,モトコ
+タカハシ,ミサコ
+ヨコタ,エイコ
+イノウ,タエコ
+ヨシダ,ヒロコ
+ヨシオカ,アキコ
+ウメザワ,ウキコ
+テラオ,ヒロヒサ
+カワハラ,ハルオ
+ハセガワ,ミノル
+キシ,テルコ
+ハシズメ,ミツヒロ
+ヨシダ,メグミ
+ミネフジ,ナオコ
+ホンダ,ユミ
+タカサワ,ミユキ
+オオハシ,ヨウコ
+カガワ,チカ
+ニシダ,マリ
+イタガキ,アキコ
+アキヤマ,ノリヒロ
+オチリ,ヤスヒロ
+ノザワ,コウジ
+サイトウ,ケンジ
+キムラ,チエ
+アベ,ナオト
+クスノキ,トモコ
+ハヤシ,ヤスヒロ
+オオイ,ナオミ
+カミオカ,ハルヨシ
+アキヤマ,イサオ
+アリタ,カツミ
+キタムラ,ミチユキ
+マスムラ,タカノリ
+オオサワ,ケン
+カワイ,ミノル
+イタガキ,ヒデオ
+モリ,タカオ
+アオキ,ミキオ
+フジシロ,コウジ
+シミズ,モトシゲ
+ムラカミ,ミヨシ
+ナカジマ,テツオ
+モギ,アキオ
+ミウラ,カズオ
+タカマツ,ケンジ
+タカダ,ショウイチ
+コンド,マサコ
+ナカジマ,ヒトシ
+ネレイ,ヒロシ
+ウシク,オサム
+キタザワ,コ
+サッサ,ノブヒロ
+イッシキ,ヨシヒロ
+カワノ,ノリツグ
+イシハラ,フミタカ
+カメオカ,タダオ
+キウチ,ノリカズ
+ナガイ,ヒトシ
+ノグチ,ミチオ
+オシタ,タカオ
+ヨシムラ,トシミチ
+アカホリ,ミツノブ
+マルナガ,ヨシツグ
+ヨシノ,コウタロウ
+ヤノ,ヨシヒロ
+ヤマグチ,マサヒデ
+ヤマグチ,カツトシ
+センドダ,マサル
+ヤスダ,アキラ
+ヨコエ,ジュンイチ
+ヤマシタ,セイザブロウ
+ヨシダ,トミゾウ
+ヤマシタ,ススム
+ヤスイ,カズオ
+ヤマオカ,キョウスケ
+ヨコセ,トモシゲ
+ヤマグチ,ケンジ
+ヤハギ,ヤスハル
+ヤマオカ,ヒロマル
+ヨツヤ,トオル
+ヤマモト,ジュンコ
+ヨシカワ,トシロウ
+ヤマシタ,ショウジ
+ヤマオカ,ヒロコ
+ヨネミツ,セイジ
+ヨシダ,ケンイチ
+ヤマザキ,テツオ
+ヤマモト,ヒカル
+ヤマグチ,ミノル
+ヤマウチ,サカエ
+ヨシザワ,カツミ
+ヨシオカ,カツヒト
+ヤマモト,ノブオ
+ヤマオカ,ミチトシ
+ヤマザキ,アキラ
+ヨシムラ,マサヒコ
+ヤスダ,コウジ
+ヤマシタ,セイイチ
+ヤダ,シンヤ
+ヨシダ,イチロウ
+ヤマモト,ツトム
+ヤマダ,ゴロウ
+ヨネダ,カオル
+ヨシダ,マサヒロ
+ヤマダ,クスオ
+ヤマグチ,タカフミ
+ヤマグチ,フミヒロ
+ヤマモト,タカコ
+ヨシダ,ススム
+ヤマシタ,ショウゾウ
+ヤンベ,アツヒロ
+ヤマグチ,ノリヨシ
+ヤマモト,ジュンジ
+ヤマネ,コウジロウ
+ヤマサキ,ケンタロウ
+ヤスオカ,ユキオ
+ヤマダ,エイゾウ
+ヨシザワ,ジロウ
+ヤジマ,アキラ
+ヤナイ,テツオ
+ヤマザキ,カズオ
+ヤマウチ,フクミチ
+ヤマザキ,ススム
+ヨシノ,タツユキ
+ヤマカゲ,タダノブ
+ヤギ,ジツノリ
+ヤスダ,マサオ
+ヤマヤ,ノブオ
+タカグチ,ノボル
+ヨシダ,ヒロシ
+ヨシノ,コウジ
+ヤマムラ,ジュンイチ
+ヤギ,カツノリ
+ヤマダ,コスケ
+ユカワ,マサトシ
+ヤマモト,ジョウジ
+ヤマタニ,ヒロツグ
+ヤマムロ,ヨシカネ
+ヨシダ,トシヒコ
+ヨコカワ,トモヨシ
+ヤマザキ,コウイチ
+ヤマモト,タケオ
+ヨシノ,キヨシ
+ヤマネ,ヨネタカ
+ヤスナガ,アキヒロ
+ヤナカ,ケイイチ
+ヤマネ,テツオ
+ヤマウチ,ヨシユキ
+ヤマグチ,ユウジ
+ヤマワキ,ショウタロウ
+ヤマカワ,ジュンイチ
+ヤマダ,カズミ
+ヨコヤマ,ショウタロウ
+ヤマモト,ヤソミ
+ヤマグチ,ノボル
+ヤマグチ,タカヨシ
+ヨシダ,タカオ
+ヤマナカ,カズミ
+ヤマモト,タダハル
+ヨシダ,タカオ
+ヤマダ,サトル
+ヤマオカ,ヨシトモ
+ヨコヤマ,マサヒサ
+ヤマサキ,ノリオ
+ヤマモト,カツヒコ
+ヤマカワ,マサヨシ
+ヤウチ,タダヨシ
+ヨシハラ,カツジ
+ヨコミゾ,シゲル
+ヤマモト,シュウゾウ
+ヤマモト,テルオ
+ヤマモト,エイイチロウ
+ヨシダ,マサヒロ
+ヨシダ,フミヒロ
+ヤスイ,ミノル
+ヤマグチ,シゲル
+ヤマモト,アキラ
+ヨコタ,エイイチ
+ヨシダ,ユタカ
+ヨコヤマ,ヒデキ
+ヤスイ,カズモト
+ヤマサキ,カズヒロ
+ヨシオカ,ノブオ
+ヨシダ,シュンロク
+ヤマダ,カツヒロ
+ヤマモト,ヨウジ
+ヨシダ,セイゾウ
+ヤマザキ,セイシロウ
+ヤマネ,ナオジ
+ユタニ,ススム
+ヨネザワ,ヨシヒロ
+ヨシノ,ダイスケ
+ヨシダ,タケオ
+ヨシモリ,ヒサトヨ
+ヨシワラ,タケシ
+ヤマダ,トシキ
+ヨシダ,トシカズ
+ヨシダ,ムツオ
+ヤマモト,モリヒコ
+コジマ,クニカツ
+オノ,シゲオ
+マエカワ,コウタロウ
+コンノ,ノブユキ
+マキセ,キヨシ
+ノムラ,マサタカ
+ヤスハラ,マサヒコ
+ナガシマ,アツヨシ
+キタハシ,マサオ
+ツル,キヨミチ
+ツクダ,ミチオ
+テラウチ,タケシ
+ヤマダ,サトル
+センバ,ススム
+サエキ,ノリオ
+オカダ,ショウイチ
+ミヤウチ,ヒサオ
+コンド,トシオ
+フキアゲ,ヤスオ
+イシカワ,チヨタケ
+イワモト,マサオ
+クボ,ジュンイチロ
+タナカ,ヒロカツ
+ワダ,ノリオ
+イワオ,ツネノリ
+クマガイ,タカヒロ
+スズキ,ヒロフミ
+タカムラ,ヒロシ
+ニシウラ,セイイチロウ
+ミツジ,マサシ
+タキキタ,アキラ
+オウチ,ケンジ
+コマ,アキオ
+マスダ,ケンジ
+カトウ,トシロウ
+イイズカ,カズヒコ
+マルヤマ,ノブアキ
+トシタニ,トオル
+ハナブチ,マサヒロ
+イマイ,マサゾウ
+オカヒロ,ツネオ
+キムラ,トシヒコ
+タジマ,マサハル
+カンダ,ツラユキ
+ドイ,オサム
+アラガキ,ヤスノブ
+キュウソジン,ケンスケ
+タケウチ,ツネヨ
+ウヌマ,ヒデナリ
+ヤマグチ,ヨシタカ
+ヨモリ,モトヒサ
+シマザキ,クニヒコ
+トクヤ,トシオ
+ヤマダ,アキラ
+フカヤ,シゲオ
+エグチ,ハルオ
+サノ,ヒデノブ
+トクノ,アキラ
+オオトモ,サダム
+シラオガワ,ヒロシ
+ヒラノ,タイキ
+オダ,ユウジ
+タナカ,リョウゾウ
+フジタ,アキラ
+アライ,アキヒデ
+フジタ,ユウジ
+ナカガワ,ヒロユキ
+ナカニシ,カズシゲ
+ハラ,アキヒロ
+チバ,トシコ
+イシワタ,トシヒサ
+ヤグチ,タケヒロ
+テジマ,カズオ
+タツタ,シゲル
+クサカ,タケシ
+フルタ,タケハル
+ゴトウ,マサノブ
+オダギリ,タダシ
+クマガイ,タケル
+ムラカミ,ミズホ
+ミムラ,マサオ
+ヨコイ,クニヒコ
+イナゲ,トモユキ
+アメミヤ,ミツオ
+イノウエ,サダオ
+ヌマタ,ジンイチ
+サカモト,ゴヘイ
+ヒラマツ,サダオ
+ナリタ,カオル
+ツネミ,イチロウ
+タカシマ,フサヒコ
+ミス,カズミ
+サキヤマ,ヨシヒコ
+フジワラ,タダシ
+トミタ,マサヒロ
+ツナワキ,ミネオ
+ハセガワ,タケシ
+フクザワ,ユウゾウ
+ゴエケ,アキラ
+ナカ,マサヒロ
+エバト,ケイコ
+コバヤシ,シンイチロウ
+ヒラツカ,キヨシ
+サトウ,ノブオ
+イノウエ,アキラ
+ハスヌマ,マサオ
+フルハタ,アサコ
+ウエノ,アツシ
+タケナカ,マサヒロ
+クニタケ,ヨシオ
+ヒラタ,ユウコ
+ハセガワ,ゲン
+フクハラ,アツシ
+フナグチ,トオル
+アマノ,ノリコ
+オオノ,ミズノリ
+スワ,ノリコ
+ノガミ,ミカ
+ウメノ,ヤスユキ
+イケノ,ユウコ
+ナカジマ,ハナコ
+イシイ,キョウコ
+サイトウ,トモコ
+タナカ,カズユキ
+タテイシ,トシカズ
+スズキ,ヨシヒコ
+キノシタ,ヒカル
+オオサワ,ヨシヒロ
+イデ,サキコ
+オガワ,シホ
+エノモト,ワキコ
+オザワ,ミズホ
+ハタケヤマ,トモヒロ
+イイダ,ミツアキ
+シノザキ,ジュンイチ
+オカダ,リエコ
+タカマ,マサシ
+ヤギ,ヒロユキ
+サカイ,マサヨ
+シミズ,コウジ
+ホリカワ,ヨウコ
+ナガオ,コウヘイ
+ヒライシ,マリ
+サガワ,タモツ
+ハラダ,マサミ
+タカハシ,リュウイチ
+タチ,マサヨ
+ヒエ,キミオ
+タダ,ミナコ
+ヨシモト,ヒロコ
+モチズキ,チヒロ
+タナカ,コウジ
+タグチ,マユミ
+サトウ,イクオ
+サカシタ,ユキエ
+カワシマ,マユミ
+ホリグチ,カオリ
+フクマ,スミタカ
+カワタニ,アキラ
+ジビキ,オサム
+サイトウ,ミツル
+シオツ,イサオ
+トバタ,ノリカズ
+ヤマモト,マサヒコ
+オフチ,ヒロミチ
+シノハラ,ノブオ
+ヤマカワ,カズタダ
+タムラ,トシオ
+ハタケヤマ,タカコ
+タナカ,ヒカル
+カナザワ,ヒデアキ
+タカハシ,エリコ
+フジムラ,ミナコ
+ナガシマ,ヨシユキ
+キノシタ,トキコ
+コンド,マミ
+アンベ,マナミ
+サイトウ,イズミ
+アサダ,ミキ
+キノシタ,フミエ
+カドヤ,アキコ
+ウエダ,トオル
+サイトウ,モニ
+タカハシ,マサヒロ
+イシザキ,シモン
+オザワ,テルヒサ
+ハヤシ,オサム
+ヤガワ,ミチオ
+タカハシ,タミオ
+トミヤマ,ヨシアキ
+アダチ,ユウゾウ
+アカイワ,ショウスケ
+カガヤ,ユキノブ
+アライ,サオリ
+オシキリ,タカシ
+ヤマムラ,エイジ
+タカヤマ,トシユキ
+ヨコヤマ,オサム
+バン,ツグオ
+イズミ,ヨシノリ
+ミズノ,タダオ
+ブンヤ,ミノル
+テラオカ,ショウジ
+ミヤシタ,ミノル
+アサマ,ケイコ
+ササキ,テツオ
+ニシオ,ヨリト
+フルヤ,テツオ
+イマダ,ヒデユキ
+イシハラ,イクエ
+ハシモト,ミキオ
+マルヤマ,トモユキ
+カジ,カズタカ
+カネコ,ハナコ
+ナカダ,ノリヒト
+チザワ,ナホ
+サワ,アサコ
+トガメ,ミワコ
+ヨシダ,ゲン
+オオノ,ヒロコ
+ヤコ,マサヒコ
+イシカワ,アキノリ
+コトダ,ヒロコ
+サガワ,カズマ
+ノグチ,カズマサ
+デンボ,ヒロフミ
+ハルキ,アキヒコ
+イネ,ショウエイ
+オオノ,クニオ
+カネダ,タツヒコ
+ノグチ,アキラ
+オオバ,ヒロミツ
+オタ,トクイチロウ
+シモマキ,ヤスオ
+ワタヒキ,ユウコ
+ヤマモト,マリ
+フジムラ,マリコ
+ソウミヤ,ケンジ
+シマ,クミ
+ササキ,タカユキ
+カガワ,レイコ
+タケウチ,クミコ
+サイキ,ミヨコ
+イトウ,ノリコ
+キムラ,ヨウジ
+タバタ,タカヒロ
+クメ,トヨアキ
+タカダ,マリコ
+タムラ,ミエ
+タカマツ,マキコ
+シロシタ,シュウサク
+カトウ,トモユキ
+アワイ,トシノリ
+ホサカ,ノリコ
+タナカ,ルミ
+ミヒラ,シュウサク
+サトウ,ケイコ
+オザワ,ユキオ
+スズキ,ケンジ
+ミヤザキ,リュウゾウ
+モリタニ,ユカリ
+イワグロ,ツトム
+ウエマ,ショウコ
+フカタ,チカ
+ヒロセ,アキコ
+オカダ,ヒロミ
+カトウ,アリカ
+マキ,サユリ
+ノダ,トモカズ
+クボ,キョウコ
+ニシキオリ,ツギオ
+ヤノ,ジュンコ
+カワムコウ,ナオキ
+ヤスムラ,ミヨコ
+トニシ,トモコ
+ヤマモト,ヒカル
+シモダ,ダイスケ
+オオタニ,クニオ
+オノサト,ハン
+カナザワ,ヒロアキ
+オカモト,ミワコ
+サイトウ,ミナコ
+カシワバラ,ノブコ
+タカハシ,マサノブ
+サイトウ,マナブ
+マツダ,ヨシアキ
+タチザキ,ワカコ
+コンド,トモコ
+シミズ,ダイスケ
+ナガオカ,カオリ
+ナカガワ,アツシ
+タカト,ヒロユキ
+キムラ,タカシ
+ナルセ,キヨミ
+オグマ,カエ
+タカハシ,ミナエ
+キクチ,セイコ
+サトウ,ハジメ
+エンド,マリコ
+タムラ,トモノリ
+ヤマモト,コウジ
+アサイ,ヨシヒロ
+モリ,オサム
+タカシロ,メグミ
+オカ,サイカ
+カトウ,トシヤ
+イグチ,サチコ
+タナカ,キョウコ
+ヨシダ,コウジ
+アキモト,マドカ
+ニシイ,ジュンジ
+ワシオカ,コウジ
+イヌマル,ヒロジ
+ホシ,シズカ
+ヨネヤマ,マサノブ
+クロベ,ユウイチ
+イシイ,ヒサエ
+ヒグチ,ジュンイチ
+ナカダ,タカハル
+オノデラ,ナオコ
+トダ,トシユキ
+マエダ,ヒロコ
+ナガイ,ユキコ
+コヌタ,ヒサヨシ
+シバサキ,カツトシ
+ウカイ,アキカ
+スズキ,チハル
+ヒラキ,ノブコ
+ナカムラ,ユウコ
+ヤマダ,マサミ
+カドクラ,マサシ
+タカサキ,コウジ
+ナカタ,キヨミ
+タニカワ,ホズエ
+ニシムラ,マサヤ
+ミナミ,アヤミ
+オオヌキ,ミノル
+サトウ,ヒロシ
+タカハシ,タカオ
+ヒダ,オサム
+サクマ,シマ
+ニエダ,タカシ
+ヨコイ,レミ
+ヨネクラ,タケオ
+バンバ,リエ
+ヤマダ,アキヒデ
+イマムラ,ルリコ
+イケダ,チアキ
+ナカムラ,ミナコ
+スドウ,リエ
+ナカソネ,カオリ
+オオサワ,チカコ
+サトウ,シチロウ
+エイドメ,ユキ
+イガラシ,ミカ
+タヤ,タカコ
+オオヒラ,ヨシコ
+サカモト,サトシ
+スギモト,コウジ
+カトウ,ミナコ
+ヨシイ,タダヒロ
+イワヤ,ヨウコ
+キノシタ,キョウコ
+スギサワ,カズヨ
+ワダ,ミヨコ
+ミヤシタ,エミコ
+ウエノ,ノブコ
+オオタキ,ユミコ
+イシバシ,キョウコ
+イワシタ,マサオ
+イシカワ,ヒデヒコ
+キシ,タテオ
+マルヤマ,ヒサオ
+ホンマ,タカオ
+クスモト,イサオ
+イマノ,キミヒデ
+オオニシ,セイゾウ
+ヤマダ,ショウ
+フジオカ,トラオ
+ハナダ,ヤスカズ
+シバタ,アサオ
+ミヤシタ,ユキオ
+カサハラ,マサオ
+オオヤケ,ハルオ
+イマイ,クニオ
+コセキ,マリコ
+オオタ,ノボル
+マチイ,カズヒロ
+キクチ,セツオ
+ヒグチ,カズエ
+ミナヨシ,ジュンジ
+スズキ,ヒロカズ
+ナンバ,ナオキ
+オオニシ,ダイサク
+ハヤシダ,タカトシ
+タナカ,ヒデヒロ
+カネコ,カズノリ
+ツチヤ,トモユキ
+イイダ,エツオ
+フルヤ,カズオ
+ナカムラ,ミツグ
+ハルハラ,タカシ
+ホリエ,ヨリシゲ
+オオタ,タケシ
+スズキ,ヤスツグ
+オト,マサトシ
+ナカガワ,マユミ
+カワシマ,ヨウヘイ
+テラモト,ユウジロウ
+キムラ,アキラ
+ヨドナワ,ユカリ
+コダイラ,ヒデアキ
+カクライ,ヨウコ
+オグリ,ヒロヨシ
+ハタ,ケンジ
+マツモリ,カズオ
+ヨシオカ,セイジ
+シゲタ,ミチアキ
+カワグチ,トモヒロ
+カネコ,マサオ
+アサヒ,タダアキ
+ワタナベ,コウジ
+アリヤマ,ツグオ
+ツジタ,タツオ
+ヨシハシ,ヒデオ
+ミシマ,セイシ
+サトウ,カツジ
+カネマル,エツヒロ
+カネコ,ヤスシ
+エジマ,ヒロアキ
+ミツクチ,ジュン
+モリ,キミオ
+オチ,セイイチ
+マエカワ,カズオ
+タナカ,マサノリ
+オリガサ,マツノリ
+コセキ,カオル
+ヒラヤマ,タダシ
+コボリ,エツヨシ
+ナカウエ,タツオ
+ストウ,マサオ
+ゴトウ,キヨヒコ
+ツカモト,ヒロミチ
+エビハラ,ヨシアキ
+モリノ,ヒデノリ
+スズキ,マサアキ
+ヨシダ,マコト
+イマイ,マサキ
+ヒノ,ムネタカ
+ヨシダ,ミナ
+オニズカ,スミタダ
+タカギ,マサヒコ
+オムラ,カツヒト
+ウチヤマ,エツコ
+クロカワ,ヨシノブ
+ヤマシタ,タキオ
+ニシダ,ヒサエ
+カシワギ,ヒロシ
+カネコ,ユキコ
+クマダ,ミキオ
+コジマ,ナオズミ
+シライ,テツヒコ
+フルカワ,リエ
+ムシウ,タダアキ
+ヨシノ,トシオ
+スギウラ,セイイチ
+フジサワ,マリ
+サトウ,アキヒロ
+エザキ,タカユキ
+ムラカミ,タカオ
+ニワヤマ,マツモリ
+ヤスノ,ミカ
+ドウダ,トモヒコ
+カジイ,モナミ
+タナカ,ヨウコ
+マツナリ,イサオ
+オオバヤシ,コウキチ
+タカハシ,タクヤ
+マツムラ,ヤスマサ
+コモリ,マキコ
+ノゾエ,カズエ
+オノ,キヨミ
+カンノ,コズエ
+サトウ,ケイコ
+ノナカ,ワカコ
+カワハラ,ユミ
+ナカムラ,マユミ
+ヤマシタ,トシカズ
+コウイチ,モモエ
+イタヤ,ヒデオ
+ヤマ,フミコ
+ヤマモト,ソウイチロウ
+クラタ,ヤスコ
+カワズ,イタル
+ミカミ,コウイチ
+タキガワ,ヨシカズ
+タナカ,ヒロアキ
+ミヤタ,タカテル
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt
new file mode 100644
index 0000000..eaca441
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt
@@ -0,0 +1,49795 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+가재범
+가효림
+가길기
+가원학
+가재완
+가동수
+가중종
+가병봉
+갈보금
+갈상종
+갈운권
+갈수열
+갈종용
+갈병원
+갈기섭
+갈달덕
+감동훈
+감갑운
+감강하
+감국희
+감정화
+감성철
+감민철
+감성원
+강경구
+강영생
+강춘식
+강용덕
+강경례
+강병규
+강한수
+강정이
+강경록
+강종수
+강규봉
+강만성
+강경숙
+강석하
+강정화
+강점조
+강경인
+강승현
+강병헌
+강은환
+강경자
+강명태
+강성조
+강미조
+강경자
+강종희
+강용석
+강기하
+강곡지
+강대순
+강대순
+강경근
+강광식
+강회조
+강석수
+강종춘
+강구승
+강재철
+강충구
+강광열
+강구환
+강만영
+강종환
+강길범
+강귀점
+강장우
+강기용
+강정휴
+강귀환
+강점순
+강 방
+강경호
+강근수
+강경수
+강용훈
+강병순
+강근환
+강해선
+강홍석
+강춘규
+강금배
+강명연
+강세태
+강진숙
+강금배
+강종연
+강정승
+강월분
+강금자
+강철수
+강경학
+강석태
+강기순
+강현선
+강상하
+강재진
+강기완
+강정준
+강본환
+강하필
+강기원
+강사희
+강용문
+강원진
+강기임
+강상조
+강동태
+강재헌
+강기형
+강순봉
+강광옥
+강인희
+강기형
+강병용
+강태태
+강봉원
+강길원
+강학현
+강재식
+강갑삼
+강남중
+강정임
+강영원
+강태호
+강남중
+강용진
+강덕달
+강현흠
+강노형
+강점조
+강회분
+강영식
+강달수
+강춘영
+강억철
+강종진
+강대석
+강교학
+강상주
+강이철
+강대영
+강차순
+강영국
+강수희
+강대용
+강숙향
+강상희
+강윤철
+강대용
+강태택
+강규술
+강홍학
+강대익
+강만길
+강일래
+강상석
+강대진
+강남호
+강상호
+강무의
+강대현
+강영란
+강선금
+강창열
+강대형
+강재수
+강순근
+강재환
+강대희
+강해생
+강수현
+강규숙
+강덕수
+강경원
+강향석
+강무덕
+강덕용
+강완태
+강옥원
+강중임
+강덕윤
+강태운
+강장례
+강영학
+강동중
+강용열
+강수운
+강 금
+강동철
+강달덕
+강귀태
+강명학
+강동철
+강광암
+강상모
+강옥만
+강동현
+강태섭
+강재술
+강신조
+강두진
+강상국
+강육열
+강영종
+강록중
+강성복
+강민석
+강선자
+강만수
+강관현
+강재홍
+강병선
+강만흥
+강점기
+강귀산
+강천윤
+강말분
+강재구
+강순조
+강정칠
+강말임
+강재수
+강영용
+강병찬
+강명관
+강명조
+강재이
+강석호
+강명암
+강수곤
+강권규
+강성구
+강무중
+강택철
+강종환
+강대석
+강문돌
+강철호
+강상진
+강환란
+강문술
+강용호
+강형현
+강현섭
+강미숙
+강승화
+강태식
+강성자
+강병규
+강성복
+강일종
+강동희
+강병석
+강창미
+강필기
+강계현
+강병열
+강복길
+강광수
+강영석
+강병환
+강연룡
+강철술
+강진이
+강복춘
+강동철
+강정조
+강상백
+강봉우
+강원수
+강명호
+강권현
+강분도
+강도석
+강해태
+강위섭
+강사현
+강후수
+강윤상
+강희국
+강삼록
+강명석
+강화임
+강철화
+강삼문
+강강수
+강복호
+강선섭
+강삼문
+강한현
+강용갑
+강태동
+강삼조
+강태정
+강창일
+강해원
+강상백
+강복용
+강기열
+강창규
+강상복
+강경제
+강순원
+강순열
+강상봉
+강영의
+강종윤
+강효원
+강상윤
+강수영
+강달철
+강영숙
+강상희
+강병배
+강순규
+강귀상
+강석대
+강인운
+강원수
+강정식
+강석주
+강용복
+강희길
+강종남
+강석주
+강태봉
+강성한
+강상성
+강선동
+강명명
+강기갑
+강희수
+강선조
+강춘출
+강인석
+강정옥
+강성락
+강현록
+강학직
+강월섭
+강성배
+강월진
+강상환
+강진환
+강성일
+강정자
+강달주
+강재교
+강성해
+강기숙
+강용명
+강명헌
+강세규
+강기기
+강정기
+강두자
+강소준
+강재호
+강정기
+강광기
+강수기
+강계현
+강진형
+강인호
+강수진
+강순화
+강종식
+강술민
+강수형
+강재배
+강옥은
+강성기
+강숙희
+강낙우
+강필분
+강종식
+강순경
+강영원
+강복열
+강금악
+강순옥
+강춘환
+강대경
+강상난
+강순이
+강종일
+강경정
+강병헌
+강신균
+강헌수
+강말조
+강은숙
+강신영
+강호만
+강영태
+강용록
+강신영
+강호용
+강수식
+강춘수
+강신임
+강의찬
+강판선
+강승문
+강신찬
+강병웅
+강복래
+강만열
+강신택
+강명구
+강현갑
+강인석
+강쌍득
+강천용
+강재국
+강기조
+강언술
+강의수
+강경호
+강근원
+강연구
+강희석
+강영준
+강병진
+강연이
+강창연
+강상희
+강상열
+강영규
+강재봉
+강호관
+강연진
+강영수
+강판호
+강영현
+강금휴
+강영수
+강경수
+강재식
+강천이
+강영수
+강광태
+강면제
+강윤석
+강영수
+강환례
+강계광
+강말규
+강영수
+강병도
+강용견
+강삼식
+강영원
+강해환
+강선수
+강말진
+강옥구
+강학원
+강만선
+강칠식
+강옥구
+강병희
+강수광
+강황이
+강옥금
+강태종
+강정기
+강상삼
+강외순
+강인찬
+강병택
+강연식
+강용덕
+강병봉
+강석일
+강상연
+강용식
+강경용
+강영화
+강을정
+강용판
+강부희
+강성자
+강상순
+강용희
+강재이
+강애태
+강석미
+강원정
+강석운
+강수기
+강대배
+강원진
+강기호
+강동자
+강홍쇄
+강원태
+강담식
+강종태
+강창식
+강유복
+강경덕
+강정명
+강순수
+강육문
+강석대
+강영순
+강재한
+강윤득
+강성하
+강용금
+강규조
+강윤자
+강욱암
+강범국
+강이조
+강인수
+강용원
+강재용
+강종인
+강인열
+강병규
+강은태
+강배애
+강일분
+강인년
+강분윤
+강정흠
+강일호
+강장식
+강재수
+강기열
+강장수
+강경성
+강동열
+강성기
+강재영
+강수연
+강홍주
+강춘본
+강전철
+강태호
+강성순
+강영길
+강점덕
+강헌웅
+강민찬
+강만영
+강점복
+강갑용
+강해주
+강병현
+강점숙
+강상수
+강재출
+강홍대
+강정길
+강두수
+강문국
+강경석
+강정모
+강종관
+강상복
+강해도
+강정복
+강문호
+강성필
+강기국
+강정석
+강기철
+강재록
+강점현
+강정숙
+강경우
+강재자
+강술우
+강정숙
+강수희
+강성식
+강정운
+강정숙
+강복석
+강판생
+강석배
+강정애
+강우만
+강구규
+강원열
+강정열
+강재호
+강영곤
+강종유
+강종덕
+강완현
+강상호
+강구식
+강종만
+강명세
+강성범
+강영배
+강종열
+강대만
+강재호
+강선현
+강종차
+강대태
+강호정
+강태선
+강종필
+강현대
+강태이
+강지준
+강주석
+강대조
+강교균
+강경화
+강주원
+강순태
+강강완
+강영열
+강주훈
+강기덕
+강금기
+강영순
+강중부
+강순출
+강한수
+강동교
+강진영
+강태식
+강유환
+강영대
+강진호
+강대구
+강말광
+강상수
+강진호
+강옥대
+강근원
+강만출
+강창록
+강정섭
+강양근
+강인정
+강창석
+강개식
+강태환
+강종수
+강창섭
+강정동
+강종규
+강감호
+강창수
+강무연
+강해환
+강용운
+강창원
+강명학
+강영규
+강무담
+강천석
+강동문
+강윤조
+강준철
+강충규
+강용관
+강승원
+강원조
+강쾌수
+강재점
+강상철
+강석계
+강태문
+강춘환
+강규운
+강상조
+강태상
+강종길
+강성이
+강영배
+강태석
+강풍술
+강연만
+강용세
+강태성
+강정한
+강종태
+강정경
+강태수
+강동모
+강달용
+강태란
+강태순
+강광명
+강영돌
+강순석
+강태승
+강석장
+강태규
+강영희
+강태일
+강정영
+강영희
+강규순
+강태자
+강점원
+강문헌
+강해주
+강태진
+강채조
+강수덕
+강만도
+강태진
+강용대
+강길근
+강지숙
+강태형
+강영휘
+강경재
+강흥섭
+강태호
+강순환
+강경기
+강정호
+강팔권
+강규자
+강판태
+강윤조
+강필임
+강근상
+강우선
+강성환
+강학구
+강정식
+강애상
+강광기
+강학규
+강찬환
+강부섭
+강인주
+강헌중
+강해원
+강낙만
+강태수
+강현석
+강상노
+강재자
+강갑수
+강현완
+강숙출
+강금리
+강양숙
+강혜원
+강영종
+강쌍일
+강기숙
+강호경
+강동환
+강경점
+강성종
+강홍근
+강춘택
+강영원
+강경국
+강홍배
+강헌식
+강원교
+강용숙
+강홍섭
+강종임
+강창호
+강곤원
+강효근
+강귀범
+강순찬
+강만옥
+강휘규
+강재호
+강수조
+강태균
+강휘규
+강병종
+강태상
+강희수
+강흥찬
+강미기
+강종신
+강기태
+강희갑
+강재호
+강귀시
+강석식
+강희규
+강해성
+강성근
+강용도
+강희석
+강명근
+강봉한
+강정훈
+강희영
+강쾌우
+강수현
+강성연
+강희점
+강의식
+강경수
+강창열
+경권호
+경영수
+경경교
+경용식
+경두호
+경상태
+경옥욱
+경석남
+경세호
+경용자
+경맹자
+경석열
+고광수
+고홍길
+고기자
+고창석
+고광숙
+고재준
+고영주
+고진수
+고광희
+고상권
+고종옥
+고홍수
+고귀임
+고우규
+고경원
+고재익
+고대종
+고명우
+고막설
+고연인
+고덕용
+고경심
+고주호
+고 식
+고덕이
+고복현
+고타갑
+고재우
+고동순
+고 암
+고현현
+고한수
+고동현
+고복태
+고진곤
+고만호
+고래임
+고갑조
+고무윤
+고성순
+고말남
+고덕화
+고두성
+고태호
+고명식
+고학효
+고동숙
+고곤득
+고민희
+고외호
+고광이
+고상숙
+고병욱
+고재식
+고동해
+고전호
+고병희
+고만일
+고용화
+고동태
+고석권
+고순애
+고점석
+고재조
+고석원
+고홍란
+고순호
+고태봉
+고성웅
+고권순
+고운주
+고영숙
+고수권
+고용기
+고철조
+고복수
+고수빈
+고계룡
+고병운
+고덕수
+고순맹
+고종주
+고판순
+고재복
+고순호
+고좌식
+고성교
+고근철
+고시목
+고정호
+고석희
+고석욱
+고영길
+고갑숙
+고종자
+고해해
+고영원
+고재희
+고영록
+고종용
+고유진
+고영수
+고순택
+고응한
+고윤범
+고태길
+고무덕
+고창석
+고은선
+고성원
+고석호
+고홍숙
+고의만
+고용원
+고진준
+고임순
+고의진
+고삼훈
+고동선
+고원희
+고인석
+고태찬
+고종조
+고민동
+고일환
+고기익
+고소섭
+고형수
+고장국
+고갑혜
+고점남
+고천균
+고재완
+고종순
+고경경
+고연근
+고정석
+고임택
+고태지
+고춘희
+고정석
+고봉기
+고승기
+고현형
+고중석
+고용희
+고기호
+고영수
+고창석
+고상우
+고진순
+고도수
+고철규
+고윤조
+고상철
+고종수
+고충국
+고판환
+고영태
+고옥건
+고태경
+고순련
+고순만
+고영근
+고학문
+고경순
+고상수
+고부보
+고현산
+고봉일
+고경길
+고순희
+고효영
+고동기
+고미출
+고현은
+고효영
+고성만
+고임범
+고태태
+고효영
+고소용
+고우수
+고학숙
+고희석
+고용분
+고재석
+고재우
+공광용
+공금충
+공정령
+공세익
+공만수
+공은서
+공근수
+공임수
+공명수
+공부순
+공해석
+공종암
+공병래
+공병근
+공화도
+공창기
+공석붕
+공재분
+공재원
+공종학
+공석이
+공창수
+공기중
+공홍휘
+공석철
+공인호
+공춘영
+공석덕
+공수남
+공쌍순
+공재도
+공재석
+공순분
+공신현
+공정성
+공윤만
+공시동
+공진용
+공상현
+공판옥
+공억수
+공재운
+공수수
+공현희
+공영대
+공종우
+공종숙
+공영석
+공영선
+공성근
+공익술
+공천도
+공영자
+공경성
+공준수
+공성호
+공임석
+공상연
+공달진
+공병식
+공재갑
+공재순
+공일현
+공순희
+공재숙
+공준용
+공희란
+공언식
+공재익
+공철택
+공수호
+공태열
+공재익
+공광술
+공태환
+공병현
+공종열
+공복현
+공판덕
+공두금
+공종춘
+공풍화
+공계영
+공춘수
+공종춘
+공덕열
+공종기
+공칠학
+곽 포
+곽병우
+곽기식
+곽태수
+곽갑영
+곽만현
+곽병성
+곽정동
+곽경근
+곽광화
+곽창기
+곽미정
+곽경룡
+곽영연
+곽상수
+곽청옥
+곽경순
+곽동석
+곽해문
+곽광규
+곽경용
+곽태연
+곽팔선
+곽진옥
+곽경호
+곽한수
+곽종섭
+곽칠자
+곽광섭
+곽덕희
+곽효조
+곽을술
+곽광섭
+곽태순
+곽은열
+곽두준
+곽광수
+곽만석
+곽종정
+곽윤일
+곽교순
+곽남호
+곽진태
+곽근수
+곽권섭
+곽차식
+곽종찬
+곽동분
+곽기설
+곽 경
+곽기수
+곽말호
+곽기순
+곽종덕
+곽승판
+곽양수
+곽기진
+곽삼영
+곽규환
+곽일주
+곽길한
+곽창기
+곽경재
+곽현열
+곽길환
+곽수판
+곽운배
+곽용현
+곽남옥
+곽종우
+곽교기
+곽태국
+곽노창
+곽성호
+곽준구
+곽 수
+곽도영
+곽희준
+곽용시
+곽경성
+곽도영
+곽소석
+곽윤순
+곽영옥
+곽돈영
+곽계숙
+곽수만
+곽봉규
+곽동득
+곽재만
+곽성호
+곽정득
+곽동만
+곽분규
+곽용열
+곽교환
+곽동민
+곽규숙
+곽명곤
+곽달부
+곽동신
+곽복순
+곽금식
+곽명수
+곽동용
+곽문호
+곽귀화
+곽현걸
+곽동용
+곽광선
+곽일길
+곽광준
+곽동헌
+곽태준
+곽태휘
+곽종석
+곽두식
+곽용춘
+곽용배
+곽동곤
+곽만수
+곽경호
+곽효수
+곽영숙
+곽만수
+곽규석
+곽화돌
+곽영남
+곽만조
+곽연현
+곽관일
+곽영택
+곽만호
+곽영준
+곽재태
+곽순웅
+곽말용
+곽승이
+곽봉근
+곽정형
+곽명섭
+곽장영
+곽 석
+곽준순
+곽명식
+곽만우
+곽창열
+곽성옥
+곽명욱
+곽우식
+곽종갑
+곽종원
+곽명호
+곽재임
+곽병식
+곽해명
+곽무선
+곽일순
+곽재진
+곽명행
+곽무익
+곽난현
+곽옥오
+곽정영
+곽무현
+곽업출
+곽헌기
+곽영진
+곽문순
+곽건성
+곽태우
+곽달학
+곽미석
+곽화영
+곽리열
+곽경원
+곽민창
+곽기우
+곽칠일
+곽정기
+곽범권
+곽수훈
+곽수영
+곽성원
+곽병도
+곽재용
+곽종진
+곽정기
+곽병묵
+곽차옥
+곽애수
+곽기석
+곽병수
+곽권화
+곽증록
+곽태현
+곽병숙
+곽 제
+곽해경
+곽덕문
+곽병열
+곽차남
+곽훈재
+곽경태
+곽병오
+곽선오
+곽계배
+곽차연
+곽병율
+곽인호
+곽환용
+곽해석
+곽병철
+곽성진
+곽병주
+곽원진
+곽병태
+곽재미
+곽희식
+곽준열
+곽병태
+곽유순
+곽홍자
+곽윤선
+곽병헌
+곽호열
+곽임우
+곽윤덕
+곽보순
+곽기현
+곽강영
+곽태자
+곽봉선
+곽명길
+곽종자
+곽상록
+곽봉하
+곽일락
+곽성개
+곽재조
+곽부치
+곽윤수
+곽영석
+곽정우
+곽분규
+곽임호
+곽강호
+곽용덕
+곽분혜
+곽성숙
+곽순희
+곽동선
+곽사영
+곽병봉
+곽 배
+곽 출
+곽상갑
+곽소택
+곽창섭
+곽청복
+곽상건
+곽옥화
+곽순태
+곽선식
+곽상국
+곽판기
+곽욱길
+곽연경
+곽상규
+곽성기
+곽동순
+곽종재
+곽상규
+곽세호
+곽기근
+곽진국
+곽상도
+곽영섭
+곽승봉
+곽용혁
+곽상두
+곽종영
+곽원성
+곽원제
+곽상영
+곽도권
+곽부봉
+곽인열
+곽상오
+곽소재
+곽병자
+곽태식
+곽상조
+곽상기
+곽두하
+곽판호
+곽상철
+곽호식
+곽 근
+곽종태
+곽상춘
+곽영인
+곽영순
+곽종삼
+곽상학
+곽종수
+곽상조
+곽윤석
+곽상현
+곽주철
+곽양래
+곽주구
+곽상현
+곽현례
+곽주영
+곽우태
+곽석이
+곽수희
+곽찬진
+곽기태
+곽석조
+곽성열
+곽판희
+곽덕수
+곽성규
+곽성준
+곽성권
+곽점인
+곽성규
+곽인석
+곽풍근
+곽호대
+곽성섭
+곽정근
+곽수순
+곽태득
+곽성영
+곽종철
+곽경현
+곽명암
+곽성호
+곽두준
+곽윤수
+곽진희
+곽성화
+곽혜주
+곽태현
+곽수식
+곽소선
+곽소학
+곽성주
+곽남주
+곽소순
+곽증행
+곽귀규
+곽재화
+곽수근
+곽종주
+곽 수
+곽점해
+곽수연
+곽성호
+곽종기
+곽석석
+곽수영
+곽재경
+곽신영
+곽재휴
+곽수환
+곽상석
+곽순수
+곽성섭
+곽순영
+곽정근
+곽성제
+곽계현
+곽순이
+곽태정
+곽영현
+곽광수
+곽순호
+곽호선
+곽병천
+곽수빈
+곽술용
+곽경금
+곽홍명
+곽회환
+곽신섭
+곽명열
+곽종기
+곽학훈
+곽신효
+곽신영
+곽경응
+곽경호
+곽양남
+곽태태
+곽노도
+곽동모
+곽양웅
+곽상수
+곽달홍
+곽동곤
+곽열규
+곽영호
+곽종태
+곽광준
+곽영길
+곽재응
+곽윤숙
+곽팔우
+곽영길
+곽수동
+곽조옥
+곽태갑
+곽영만
+곽영천
+곽철호
+곽주동
+곽영상
+곽창동
+곽일교
+곽흥환
+곽영섭
+곽호숙
+곽형순
+곽기열
+곽영옥
+곽미춘
+곽태석
+곽수석
+곽영자
+곽용주
+곽학태
+곽송봉
+곽영조
+곽태수
+곽경동
+곽태우
+곽영철
+곽영근
+곽문삼
+곽병현
+곽영태
+곽원용
+곽태편
+곽진우
+곽영호
+곽재수
+곽봉식
+곽경오
+곽영화
+곽 상
+곽필성
+곽대익
+곽영희
+곽성호
+곽경완
+곽오철
+곽옥선
+곽종국
+곽종현
+곽태현
+곽옥연
+곽병표
+곽홍천
+곽명갑
+곽왕규
+곽필기
+곽원조
+곽상환
+곽외섭
+곽성식
+곽영섭
+곽성식
+곽용수
+곽태득
+곽주동
+곽팔정
+곽용숙
+곽재조
+곽인이
+곽규강
+곽용순
+곽지봉
+곽신범
+곽홍호
+곽우식
+곽홍연
+곽태이
+곽점맹
+곽우열
+곽환철
+곽태호
+곽조수
+곽우영
+곽용도
+곽모규
+곽점순
+곽원규
+곽관오
+곽종해
+곽일로
+곽원규
+곽쌍국
+곽월곤
+곽주식
+곽원영
+곽일일
+곽공일
+곽도덕
+곽원영
+곽현자
+곽팔생
+곽유규
+곽유성
+곽재식
+곽석숙
+곽남출
+곽유태
+곽기순
+곽근권
+곽희권
+곽윤광
+곽용원
+곽강정
+곽기영
+곽윤구
+곽병성
+곽용식
+곽순선
+곽윤규
+곽병복
+곽삼완
+곽옥연
+곽은열
+곽교균
+곽종상
+곽부오
+곽을순
+곽재수
+곽도선
+곽기선
+곽의호
+곽분가
+곽영환
+곽광근
+곽일룡
+곽인갑
+곽갑섭
+곽성철
+곽임수
+곽기주
+곽창화
+곽진오
+곽자용
+곽종희
+곽연남
+곽은원
+곽재경
+곽오근
+곽만조
+곽병도
+곽재근
+곽준록
+곽형자
+곽윤수
+곽재석
+곽호채
+곽성길
+곽희관
+곽재식
+곽회현
+곽계협
+곽춘덕
+곽재열
+곽성기
+곽현수
+곽삼천
+곽재영
+곽산숙
+곽정운
+곽욱자
+곽재영
+곽성태
+곽상식
+곽용하
+곽재영
+곽영수
+곽원순
+곽용식
+곽재욱
+곽명숙
+곽영금
+곽연철
+곽재원
+곽석구
+곽현재
+곽호호
+곽재천
+곽삼수
+곽덕용
+곽창기
+곽재철
+곽광해
+곽삼호
+곽태철
+곽재철
+곽종돌
+곽종진
+곽무출
+곽재호
+곽대연
+곽경양
+곽영수
+곽재환
+곽정원
+곽수종
+곽영도
+곽재훈
+곽차호
+곽작조
+곽용일
+곽점용
+곽재출
+곽외규
+곽정조
+곽정만
+곽기흠
+곽태희
+곽재자
+곽정연
+곽제종
+곽정율
+곽순수
+곽종관
+곽경재
+곽안수
+곽광환
+곽종국
+곽영열
+곽종수
+곽원자
+곽종권
+곽석언
+곽상철
+곽갑옥
+곽종대
+곽일봉
+곽외수
+곽희영
+곽종대
+곽한선
+곽주문
+곽기자
+곽종덕
+곽건영
+곽상기
+곽정석
+곽종만
+곽윤구
+곽근식
+곽주숙
+곽종암
+곽정만
+곽종철
+곽영용
+곽종열
+곽정기
+곽재암
+곽순호
+곽종주
+곽길시
+곽헌대
+곽병종
+곽종학
+곽례호
+곽남학
+곽영진
+곽종형
+곽정희
+곽무주
+곽상일
+곽종훈
+곽진태
+곽정호
+곽준철
+곽주석
+곽광식
+곽종조
+곽태석
+곽주섭
+곽우래
+곽귀덕
+곽경수
+곽지영
+곽종준
+곽태대
+곽장휘
+곽진곤
+곽봉갑
+곽명동
+곽종호
+곽진수
+곽승열
+곽삼순
+곽오순
+곽차상
+곽종득
+곽재진
+곽계환
+곽차용
+곽효수
+곽만자
+곽삼원
+곽창섭
+곽동우
+곽일관
+곽정삼
+곽창수
+곽운율
+곽영용
+곽기언
+곽창식
+곽원석
+곽현실
+곽기수
+곽창왕
+곽영동
+곽창윤
+곽원완
+곽천석
+곽위택
+곽남환
+곽삼이
+곽철수
+곽복섭
+곽승분
+곽태옥
+곽철환
+곽정주
+곽경향
+곽창희
+곽칠용
+곽진조
+곽애선
+곽종옥
+곽태경
+곽태정
+곽원수
+곽윤기
+곽태석
+곽동식
+곽무일
+곽대조
+곽태석
+곽상연
+곽세식
+곽영희
+곽태섭
+곽재만
+곽선경
+곽건출
+곽태식
+곽상식
+곽재식
+곽해권
+곽태식
+곽기수
+곽석택
+곽동훈
+곽태열
+곽영건
+곽판수
+곽춘우
+곽태영
+곽준호
+곽용석
+곽기환
+곽태용
+곽문조
+곽태환
+곽재술
+곽태중
+곽남년
+곽욱호
+곽창열
+곽태환
+곽덕근
+곽청용
+곽명식
+곽태희
+곽미조
+곽갑동
+곽극익
+곽택열
+곽승만
+곽기문
+곽환대
+곽판개
+곽상호
+곽종자
+곽명홍
+곽판수
+곽태광
+곽주용
+곽광헌
+곽평섭
+곽만연
+곽성룡
+곽천배
+곽표경
+곽상모
+곽외성
+곽병동
+곽학출
+곽정출
+곽주태
+곽진우
+곽한곤
+곽영용
+곽범헌
+곽차조
+곽한수
+곽병택
+곽성호
+곽태섭
+곽한영
+곽용숙
+곽준석
+곽현택
+곽해규
+곽현호
+곽병분
+곽성기
+곽해만
+곽기준
+곽승우
+곽한중
+곽해석
+곽동헌
+곽태태
+곽문식
+곽해석
+곽재수
+곽태홍
+곽광달
+곽호순
+곽경희
+곽점순
+곽영록
+곽홍규
+곽종호
+곽동현
+곽순열
+곽화열
+곽태범
+곽억규
+곽우수
+곽후열
+곽판현
+곽준권
+곽억오
+곽휘소
+곽용수
+곽성춘
+곽삼식
+곽흥섭
+곽태준
+곽태삼
+곽경길
+곽희순
+곽경섭
+곽덕우
+곽진집
+곽희웅
+곽문열
+곽병준
+곽혜현
+구경서
+구종조
+구쌍석
+구차부
+구경숙
+구원옥
+구한국
+구설우
+구경숙
+구득숙
+구수희
+구윤대
+구귀화
+구상화
+구말록
+구명태
+구길회
+구성진
+구일상
+구덕우
+구동만
+구경현
+구인이
+구성수
+구동석
+구근봉
+구삼식
+구종헌
+구동수
+구재원
+구병현
+구쌍우
+구동원
+구충순
+구기남
+구석병
+구동철
+구승희
+구일식
+구기식
+구두선
+구명운
+구주호
+구영순
+구명숙
+구복희
+구순옥
+구태래
+구민회
+구규선
+구금욱
+구경학
+구병수
+구달섭
+구영석
+구희식
+구병찬
+구순련
+구두근
+구이수
+구본선
+구순희
+구수병
+구수춘
+구본승
+구윤웅
+구영수
+구주주
+구본현
+구재자
+구광현
+구한술
+구부임
+구재헌
+구정표
+구태설
+구석봉
+구태태
+구재식
+구태익
+구선이
+구홍모
+구현철
+구무윤
+구용길
+구수웅
+구기식
+구철수
+구용태
+구영택
+구외화
+구중호
+구이용
+구태하
+구돈재
+구종수
+구자관
+구창현
+구원선
+구구기
+구자덕
+구정부
+구태호
+구기호
+구자우
+구윤오
+구종목
+구석성
+구자익
+구동동
+구재화
+구봉기
+구점식
+구성자
+구만연
+구상중
+구제남
+구금이
+구연환
+구용치
+구중서
+구학자
+구정달
+구차연
+구춘식
+구진태
+구장순
+구원연
+구춘식
+구기길
+구영균
+구동탁
+구충모
+구복자
+구병한
+구훈희
+구태희
+구무용
+구병고
+구동석
+구평길
+구성식
+구삼두
+구영희
+구현옥
+구효희
+구순용
+구양용
+구화이
+구상규
+구성원
+구영수
+구희경
+구병철
+구재준
+구영록
+구희숙
+구영범
+구봉헌
+구부수
+국윤환
+국상석
+국환남
+국민태
+권 수
+권영국
+권대현
+권정주
+권갑조
+권상란
+권성현
+권태규
+권경관
+권재원
+권기순
+권상수
+권경덕
+권창연
+권점춘
+권봉웅
+권경란
+권석성
+권재빈
+권수석
+권경생
+권규길
+권홍주
+권기윤
+권경숙
+권기원
+권충오
+권흥상
+권경술
+권용희
+권규십
+권종옥
+권경자
+권종환
+권창동
+권성갑
+권경조
+권영석
+권영현
+권억섭
+권경환
+권봉기
+권성순
+권진돌
+권광식
+권희창
+권성상
+권성지
+권광웅
+권범배
+권명동
+권재섭
+권광호
+권승영
+권철곤
+권삼국
+권귀남
+권승오
+권인석
+권선득
+권귀임
+권노환
+권권현
+권석근
+권금악
+권정수
+권 호
+권헌모
+권금연
+권경열
+권수원
+권만효
+권기동
+권윤순
+권금준
+권시기
+권기섭
+권장완
+권만교
+권점호
+권기성
+권영출
+권헌수
+권계도
+권기수
+권명수
+권복휴
+권연민
+권기영
+권철기
+권종춘
+권희호
+권기용
+권덕숙
+권일석
+권기태
+권기종
+권정팔
+권금환
+권갑홍
+권기철
+권영열
+권석애
+권재희
+권기헌
+권해신
+권덕근
+권계빈
+권남수
+권외순
+권증섭
+권상도
+권늠이
+권용식
+권창섭
+권세용
+권달출
+권성수
+권순욱
+권윤익
+권대영
+권찬철
+권성화
+권일정
+권대윤
+권동수
+권진민
+권기희
+권덕용
+권성자
+권재훈
+권춘출
+권도인
+권승헌
+권춘기
+권동범
+권돌이
+권수길
+권판석
+권천섭
+권동권
+권종영
+권종록
+권현웅
+권두리
+권종암
+권병영
+권기경
+권두현
+권헌조
+권상연
+권용기
+권득수
+권경웅
+권도수
+권필영
+권령현
+권순훈
+권창기
+권홍화
+권말수
+권일교
+권광준
+권진생
+권말용
+권대원
+권종호
+권문종
+권말임
+권복곤
+권경규
+권일근
+권명복
+권인수
+권진후
+권호석
+권명삼
+권태철
+권응진
+권순호
+권명용
+권후삼
+권정연
+권영홍
+권무웅
+권임권
+권태옥
+권용진
+권무홍
+권문덕
+권종계
+권태화
+권미란
+권주연
+권정대
+권재수
+권미란
+권석자
+권수구
+권업자
+권미영
+권기영
+권용웅
+권왕영
+권미자
+권종삼
+권달대
+권평순
+권미자
+권태자
+권우선
+권영우
+권병문
+권주교
+권장정
+권태상
+권병철
+권언현
+권동표
+권태군
+권복길
+권신홍
+권두홍
+권시길
+권복길
+권정정
+권병옥
+권태정
+권복만
+권재원
+권영자
+권효남
+권복주
+권종연
+권화식
+권성정
+권봉학
+권선덕
+권경희
+권홍희
+권분향
+권정렬
+권상미
+권성학
+권분향
+권인규
+권봉식
+권기한
+권삼량
+권재환
+권임석
+권필립
+권삼술
+권재봉
+권덕기
+권성배
+권상규
+권기복
+권태이
+권상배
+권상우
+권우환
+권두숙
+권병석
+권석우
+권원제
+권태이
+권영열
+권선복
+권중석
+권현순
+권영성
+권선희
+권상구
+권명원
+권주영
+권선희
+권미철
+권종수
+권대출
+권성근
+권동석
+권종기
+권정용
+권성기
+권병웅
+권세석
+권수희
+권성대
+권용출
+권정철
+권용준
+권성웅
+권주우
+권필성
+권정호
+권성준
+권용철
+권정호
+권원희
+권세용
+권귀희
+권상영
+권상호
+권세용
+권나문
+권재식
+권재숙
+권소관
+권병진
+권명곤
+권광오
+권소돌
+권동문
+권문원
+권세택
+권수만
+권점옥
+권원학
+권동열
+권수만
+권분수
+권규출
+권정희
+권수원
+권경출
+권기표
+권종주
+권수자
+권종구
+권재배
+권의탁
+권수자
+권윤용
+권차호
+권광현
+권수자
+권명조
+권은식
+권정호
+권수자
+권동호
+권인이
+권병모
+권순덕
+권지학
+권미기
+권시국
+권순목
+권성석
+권병호
+권용건
+권순옥
+권사호
+권재달
+권성홍
+권순환
+권금원
+권귀종
+권중근
+권암우
+권갑순
+권보자
+권윤수
+권애자
+권계생
+권대춘
+권영숙
+권연주
+권태수
+권대용
+권한원
+권영계
+권정수
+권욱조
+권상열
+권영관
+권한주
+권중국
+권태경
+권영교
+권용길
+권충형
+권학준
+권영구
+권성학
+권종향
+권인복
+권영구
+권성용
+권주수
+권승호
+권영구
+권병돌
+권병교
+권기선
+권영국
+권려문
+권상태
+권기동
+권영근
+권상복
+권호석
+권상환
+권영대
+권석복
+권종자
+권무자
+권영돈
+권복한
+권기숙
+권상식
+권영록
+권진수
+권인우
+권상곤
+권영목
+권권대
+권필태
+권재길
+권영문
+권노연
+권도수
+권자식
+권영보
+권용남
+권종길
+권세희
+권영복
+권경옥
+권무수
+권찬재
+권영복
+권진식
+권은우
+권수찬
+권영봉
+권인근
+권희경
+권종희
+권영봉
+권창근
+권옥출
+권준호
+권영수
+권승주
+권장석
+권명영
+권영순
+권맹현
+권일경
+권무호
+권영순
+권용임
+권동갑
+권복원
+권영순
+권성만
+권영호
+권철세
+권영아
+권정규
+권계갑
+권성순
+권영일
+권대기
+권병계
+권영수
+권영제
+권선생
+권분섭
+권성자
+권영주
+권덕리
+권광해
+권광순
+권영준
+권태수
+권영분
+권의길
+권영창
+권덕경
+권금효
+권기이
+권영칠
+권성영
+권금경
+권금배
+권영택
+권용환
+권태기
+권용준
+권영필
+권재수
+권정희
+권춘수
+권영하
+권옥주
+권귀룡
+권영화
+권영하
+권현출
+권상익
+권정대
+권영헌
+권춘식
+권기원
+권태열
+권영현
+권병연
+권경배
+권지무
+권영호
+권윤국
+권석호
+권정조
+권영환
+권위길
+권칠화
+권명광
+권오광
+권태수
+권환자
+권종두
+권오광
+권길곤
+권광수
+권종락
+권오근
+권상조
+권중균
+권선건
+권오근
+권수기
+권종식
+권길건
+권오룡
+권영태
+권미수
+권만식
+권오만
+권태정
+권점봉
+권형상
+권오만
+권금학
+권성열
+권권철
+권오명
+권재권
+권곡동
+권기만
+권오상
+권태희
+권두호
+권석식
+권오상
+권만근
+권소제
+권옥문
+권오상
+권종진
+권석섭
+권훈덕
+권오석
+권정원
+권성수
+권정우
+권오석
+권태련
+권록제
+권진철
+권오석
+권은정
+권남학
+권인수
+권오성
+권락우
+권외호
+권재만
+권오성
+권영구
+권노수
+권병도
+권오성
+권은철
+권효영
+권연술
+권오성
+권승구
+권용열
+권기경
+권오수
+권동각
+권상배
+권영현
+권오수
+권성한
+권태덕
+권점분
+권오수
+권동년
+권원덕
+권지용
+권오승
+권동신
+권종문
+권 태
+권오열
+권회연
+권영규
+권정출
+권오욱
+권명욱
+권홍영
+권기열
+권오웅
+권재기
+권맹곤
+권종섭
+권오주
+권도재
+권영식
+권영한
+권오준
+권홍경
+권성출
+권주효
+권오추
+권한용
+권경창
+권석호
+권오칠
+권호하
+권재율
+권상이
+권오현
+권영희
+권병열
+권문호
+권오호
+권태천
+권갑출
+권만환
+권오휘
+권구영
+권명배
+권재희
+권옥성
+권복호
+권덕주
+권재성
+권옥출
+권득려
+권경윤
+권성식
+권외수
+권영욱
+권문임
+권명숙
+권용기
+권판수
+권이경
+권정곤
+권용득
+권성봉
+권온용
+권석정
+권용만
+권지동
+권경헌
+권신희
+권용철
+권용성
+권일옥
+권황운
+권용태
+권명수
+권욱련
+권경례
+권용태
+권종호
+권덕동
+권판형
+권용태
+권동희
+권언창
+권한수
+권원국
+권광용
+권성준
+권영이
+권원조
+권창희
+권실술
+권태학
+권원출
+권정조
+권병채
+권진기
+권월태
+권정길
+권양술
+권진열
+권은정
+권소도
+권복분
+권래경
+권의효
+권완로
+권병중
+권만열
+권익현
+권성현
+권석규
+권병원
+권임선
+권명택
+권현원
+권삼용
+권재건
+권근수
+권상권
+권인창
+권재덕
+권명태
+권이윤
+권영근
+권재화
+권동일
+권장수
+권차희
+권점순
+권효선
+권기수
+권영효
+권점태
+권정희
+권보곤
+권미억
+권정아
+권규복
+권재상
+권삼자
+권정오
+권겸옥
+권상호
+권형수
+권정희
+권항숙
+권필순
+권상의
+권제호
+권이식
+권재이
+권진익
+권종민
+권상조
+권재식
+권영수
+권종안
+권윤기
+권우선
+권용덕
+권종임
+권인희
+권영환
+권만오
+권좌근
+권기열
+권은영
+권윤식
+권주찬
+권석학
+권헌오
+권문수
+권주혁
+권사순
+권장기
+권종희
+권준우
+권종연
+권영혁
+권복용
+권준우
+권영연
+권근수
+권재근
+권준일
+권우근
+권병식
+권옥제
+권준일
+권주찬
+권용병
+권문화
+권준일
+권중호
+권기태
+권규길
+권중규
+권형철
+권기호
+권명민
+권중기
+권용달
+권상도
+권가필
+권중기
+권순화
+권억현
+권수숙
+권중달
+권홍연
+권신춘
+권경식
+권중대
+권삼수
+권재석
+권윤익
+권중대
+권재선
+권재명
+권무성
+권중만
+권순석
+권돈환
+권계연
+권중상
+권종출
+권장권
+권명열
+권중상
+권안진
+권위재
+권현원
+권중석
+권승표
+권덕응
+권병득
+권중열
+권병균
+권성경
+권영자
+권중열
+권경각
+권장출
+권봉웅
+권중철
+권평철
+권호석
+권경익
+권중화
+권영단
+권근준
+권보정
+권지영
+권순종
+권귀욱
+권계길
+권진상
+권우임
+권철철
+권종신
+권차남
+권춘기
+권수열
+권남연
+권차술
+권봉수
+권현열
+권종용
+권차연
+권길이
+권장열
+권미순
+권창기
+권정월
+권석득
+권운록
+권창식
+권흥이
+권성호
+권영욱
+권창화
+권진봉
+권정배
+권세수
+권춘궁
+권승운
+권민옥
+권경우
+권춘식
+권문표
+권준훈
+권차재
+권춘식
+권상열
+권상식
+권성배
+권춘오
+권한기
+권상근
+권영임
+권춘자
+권을범
+권금수
+권해목
+권춘자
+권영호
+권준화
+권복수
+권춘자
+권쌍필
+권종섭
+권영여
+권춘태
+권순구
+권해철
+권길희
+권칠만
+권종조
+권환수
+권근봉
+권태관
+권소성
+권경옥
+권상균
+권태관
+권명훈
+권종철
+권명숙
+권태국
+권태규
+권상천
+권인수
+권태근
+권주호
+권용배
+권만호
+권태달
+권명구
+권영관
+권영출
+권태동
+권창웅
+권병철
+권호숙
+권태생
+권덕재
+권난문
+권희덕
+권태숙
+권상석
+권원암
+권학외
+권태술
+권동훈
+권동명
+권점희
+권태식
+권정희
+권태석
+권윤근
+권태식
+권상기
+권태숙
+권범인
+권태암
+권점성
+권영선
+권성삼
+권태용
+권봉흠
+권시철
+권의득
+권태우
+권병옥
+권경식
+권수엽
+권태원
+권수관
+권정봉
+권재일
+권태일
+권영희
+권문환
+권중석
+권태정
+권태현
+권승훈
+권영원
+권태종
+권영영
+권재환
+권장봉
+권태창
+권현열
+권정명
+권븝도
+권태철
+권성단
+권석욱
+권상분
+권태철
+권정갑
+권록수
+권현이
+권태헌
+권무성
+권중근
+권영섭
+권태홍
+권만일
+권정만
+권영화
+권태휘
+권우구
+권기산
+권찬식
+권태희
+권종동
+권영건
+권천용
+권택종
+권병만
+권준재
+권모도
+권판순
+권용연
+권충수
+권영식
+권해철
+권태용
+권태철
+권재진
+권혁동
+권영양
+권쌍정
+권무섭
+권혁률
+권경춘
+권원삼
+권정기
+권혁우
+권현호
+권장제
+권양원
+권혁일
+권경조
+권용순
+권쌍하
+권혁종
+권진신
+권희선
+권성철
+권혁태
+권형식
+권삼자
+권말숙
+권혁호
+권복래
+권원구
+권일순
+권혁훈
+권종동
+권상희
+권기순
+권현순
+권종현
+권소조
+권석용
+권홍기
+권병천
+권석기
+권교래
+권홍기
+권순섭
+권점길
+권재호
+권화자
+권성순
+권해남
+권구차
+금기숙
+금성수
+금경세
+금금근
+금세환
+금영용
+금경국
+금정주
+금임년
+금근우
+금태희
+금순우
+금재현
+금말출
+금호수
+금노희
+금재호
+금재환
+금병순
+금병순
+기광섭
+기귀봉
+기재양
+기동순
+기광섭
+기성근
+기현희
+기재화
+기광섭
+기영선
+기시선
+기석호
+기권섭
+기정모
+기선제
+기진곤
+기남섭
+기진임
+기용순
+기성홍
+기말임
+기종근
+기태휘
+기상준
+기무섭
+기재재
+기무헌
+기소대
+기범석
+기성범
+기점생
+기언순
+기성현
+기인돌
+기임지
+기정선
+기세국
+기승봉
+기철훈
+기철섭
+기세록
+기대태
+기정석
+기윤경
+기세록
+기창현
+기종도
+기정성
+기세문
+기성중
+기상순
+기욱조
+기세준
+기상천
+기덕산
+기분광
+기신국
+기용수
+기근악
+기주훈
+기우근
+기미우
+기병현
+기종수
+기우달
+기영윤
+기규대
+기동하
+기우봉
+기병석
+기무현
+기 원
+기우분
+기창곤
+기종권
+기태희
+기우순
+기희태
+기월진
+기명곤
+기우종
+기달연
+기노돌
+기영숙
+기우주
+기옥란
+기해조
+기수출
+기우철
+기종욱
+기종례
+기동준
+기우해
+기대원
+기판석
+기삼석
+기인현
+기욱규
+기종우
+기삼진
+기인희
+기주조
+기판국
+기종진
+기일선
+기성용
+기홍용
+기은길
+기점환
+기점용
+기경영
+기진식
+기정섭
+기학석
+기준득
+기성희
+기종석
+기태생
+기재선
+기완미
+기준석
+기유봉
+기병규
+기종현
+기진연
+기승업
+기춘열
+기기주
+기청길
+기선호
+기판호
+기옥식
+기행남
+기진출
+기도종
+기근곤
+기효연
+기내운
+기진출
+기진열
+기희석
+기정천
+기태복
+기송태
+길석환
+길일원
+길승진
+길명조
+김 등
+김갑선
+김의수
+김오열
+김 성
+김남수
+김곡복
+김명완
+김 성
+김영옥
+김동근
+김광규
+김 용
+김술동
+김기춘
+김기용
+김 원
+김순묵
+김남교
+김희훈
+김 윤
+김광기
+김철자
+김오곤
+김 인
+김종길
+김성현
+김태만
+김 청
+김용성
+김재천
+김영환
+김 혁
+김연일
+김미흠
+김화기
+김 현
+김승래
+김억호
+김중형
+김 호
+김기남
+김명곤
+김운동
+김 훈
+김석용
+김일용
+김영철
+김가희
+김해경
+김봉철
+김정자
+김각중
+김재두
+김춘수
+김청휴
+김갑룡
+김성모
+김춘식
+김갑환
+김갑만
+김종옥
+김종식
+김혜갑
+김갑문
+김덕록
+김명직
+김규태
+김갑생
+김윤식
+김병정
+김종남
+김갑수
+김진석
+김순균
+김희환
+김갑수
+김경중
+김영수
+김해철
+김갑순
+김병호
+김인구
+김기삼
+김갑연
+김환동
+김덕모
+김상영
+김갑주
+김경정
+김창흠
+김재운
+김갑준
+김영모
+김필규
+김순학
+김갑진
+김장현
+김태수
+김오범
+김갑진
+김두길
+김연필
+김경순
+김갑현
+김종자
+김태호
+김종식
+김강덕
+김흥원
+김원춘
+김인오
+김강수
+김주자
+김상환
+김현림
+김강식
+김미수
+김판호
+김경수
+김강행
+김광표
+김영현
+김혜니
+김강호
+김무현
+김보희
+김창호
+김강화
+김춘영
+김진연
+김업자
+김개선
+김효조
+김성철
+김보윤
+김건개
+김병봉
+김호술
+김재일
+김건기
+김용수
+김선상
+김성길
+김건덕
+김석인
+김적도
+김재천
+김경구
+김철수
+김용률
+김상수
+김경도
+김준주
+김근영
+김성원
+김경란
+김은운
+김재연
+김대식
+김경례
+김달호
+김세홍
+김 수
+김경만
+김성일
+김덕용
+김석숙
+김경상
+김만태
+김장수
+김명화
+김경석
+김종수
+김수정
+김규현
+김경수
+김종호
+김원련
+김영화
+김경수
+김용수
+김영수
+김종수
+김경수
+김종택
+김성선
+김동용
+김경수
+김작교
+김영규
+김광견
+김경수
+김교조
+김인덕
+김권준
+김경숙
+김영자
+김태원
+김태현
+김경식
+김종호
+김용순
+김재자
+김경암
+김국군
+김윤조
+김판호
+김경애
+김두덕
+김갑황
+김동호
+김경애
+김주필
+김무금
+김상호
+김경오
+김경윤
+김복복
+김헌재
+김경오
+김언선
+김일웅
+김무희
+김경옥
+김태권
+김영관
+김하철
+김경우
+김수출
+김윤자
+김시규
+김경원
+김태팔
+김팔상
+김광현
+김경원
+김윤복
+김정분
+김성오
+김경인
+김재선
+김성덕
+김달균
+김경자
+김화득
+김영우
+김광이
+김경자
+김석재
+김문생
+김원현
+김경자
+김재원
+김칠현
+김현순
+김경자
+김세희
+김병호
+김재용
+김경재
+김재관
+김미홍
+김종호
+김경조
+김종학
+김본영
+김세우
+김경조
+김명수
+김영선
+김임돌
+김경종
+김진인
+김진동
+김상태
+김경태
+김일석
+김국택
+김중환
+김경태
+김철희
+김순희
+김상근
+김경태
+김동범
+김양기
+김수생
+김경태
+김상계
+김상동
+김재곤
+김경팔
+김상진
+김여석
+김종운
+김경호
+김재택
+김재출
+김주수
+김경호
+김창주
+김영준
+김두호
+김경호
+김춘규
+김경순
+김시한
+김경환
+김학택
+김재출
+김태현
+김경환
+김용실
+김광지
+김막순
+김경희
+김일수
+김정영
+김춘숙
+김경희
+김영용
+김태안
+김필애
+김경희
+김준방
+김재환
+김쾌근
+김경희
+김달조
+김현규
+김용원
+김경희
+김무수
+김소자
+김봉욱
+김경희
+김영국
+김상동
+김재자
+김계윤
+김상순
+김정식
+김정암
+김계택
+김종일
+김진극
+김성우
+김계한
+김중자
+김은홍
+김영호
+김계호
+김일용
+김정섭
+김재선
+김공주
+김원식
+김순철
+김기환
+김관두
+김점희
+김용진
+김차수
+김관영
+김호환
+김호하
+김원흠
+김관우
+김중형
+김선석
+김무동
+김관이
+김석기
+김신도
+김진하
+김광곤
+김수엽
+김용웅
+김순숙
+김광규
+김희환
+김기흥
+김구도
+김광덕
+김길근
+김정권
+김재열
+김광동
+김주택
+김무희
+김은구
+김광두
+김정희
+김재권
+김광용
+김광석
+김창승
+김승녀
+김상식
+김광석
+김병철
+김영동
+김주자
+김광수
+김동길
+김도봉
+김재철
+김광수
+김태석
+김양식
+김도경
+김광수
+김성수
+김춘우
+김분조
+김광수
+김정술
+김광화
+김화호
+김광수
+김극운
+김분환
+김두호
+김광수
+김해포
+김진식
+김록득
+김광수
+김병수
+김성경
+김철훈
+김광식
+김금환
+김재식
+김일현
+김광연
+김동철
+김재수
+김강기
+김광연
+김준화
+김덕조
+김성래
+김광열
+김병우
+김경규
+김춘재
+김광열
+김형섭
+김달빈
+김성봉
+김광엽
+김영균
+김성원
+김순련
+김광영
+김갑주
+김행철
+김차길
+김광영
+김규운
+김정호
+김재수
+김광영
+김준식
+김태이
+김용분
+김광우
+김경수
+김기곤
+김주대
+김광웅
+김우임
+김우홍
+김영섭
+김광웅
+김갑자
+김건수
+김희조
+김광웅
+김민칠
+김소수
+김희효
+김광웅
+김경수
+김광근
+김용록
+김광윤
+김양채
+김일석
+김진환
+김광일
+김갑중
+김호수
+김정목
+김광일
+김상우
+김재철
+김기수
+김광조
+김태배
+김인용
+김경순
+김광진
+김태수
+김오완
+김건도
+김광택
+김삼수
+김경직
+김효암
+김광택
+김기화
+김찬현
+김수선
+김광현
+김동용
+김세환
+김재운
+김광호
+김노민
+김용수
+김순년
+김광호
+김경우
+김종향
+김무수
+김광화
+김정호
+김철학
+김강돈
+김광회
+김연운
+김임권
+김성조
+김광효
+김명승
+김일웅
+김말호
+김광희
+김선우
+김순길
+김해삼
+김교락
+김영원
+김석환
+김일주
+김교순
+김대열
+김영섭
+김 열
+김교준
+김근주
+김상도
+김기배
+김교준
+김한규
+김종철
+김중관
+김교태
+김한문
+김영식
+김기석
+김교희
+김차열
+김영호
+김경기
+김구봉
+김선규
+김진식
+김용덕
+김구현
+김이우
+김원근
+김종웅
+김구현
+김광식
+김상철
+김복목
+김국동
+김춘상
+김만근
+김병선
+김국동
+김도수
+김성주
+김기헌
+김군남
+김만수
+김종욱
+김영선
+김군자
+김윤자
+김영복
+김봉설
+김권식
+김순재
+김필자
+김덕향
+김귀관
+김신학
+김기선
+김철은
+김귀남
+김상열
+김희영
+김일연
+김귀덕
+김점모
+김용난
+김길추
+김귀선
+김희자
+김상성
+김규수
+김귀순
+김재현
+김서환
+김승향
+김귀연
+김영용
+김태식
+김상현
+김귀연
+김정순
+김외국
+김일호
+김귀열
+김건환
+김정호
+김창종
+김귀용
+김진호
+김병철
+김주자
+김귀조
+김정남
+김기옥
+김의수
+김규대
+김철수
+김문주
+김용근
+김규배
+김영휴
+김중수
+김삼식
+김규상
+김태섬
+김준열
+김규택
+김규섭
+김영조
+김동규
+김재분
+김규섭
+김상수
+김실원
+김영율
+김규성
+김노섭
+김홍현
+김광철
+김규영
+김용수
+김세궁
+김병수
+김규우
+김영출
+김팔국
+김홍수
+김규욱
+김인영
+김원진
+김원문
+김규철
+김용자
+김기수
+김해연
+김규철
+김신환
+김승용
+김정권
+김규철
+김종무
+김주근
+김태현
+김규철
+김창권
+김해기
+김호식
+김규태
+김상열
+김용우
+김석팔
+김규태
+김국덕
+김이재
+김현식
+김규현
+김영악
+김호수
+김준현
+김규현
+김범근
+김재근
+김성황
+김규현
+김봉식
+김동호
+김상영
+김규환
+김미진
+김수수
+김용선
+김규희
+김명락
+김차선
+김두현
+김근생
+김동도
+김학석
+김광조
+김근식
+김정현
+김애복
+김재호
+김근식
+김상교
+김국득
+김재익
+김근중
+김지태
+김윤국
+김봉운
+김근호
+김상재
+김순문
+김순영
+김근호
+김혜주
+김영열
+김판수
+김금난
+김광우
+김경도
+김경술
+김금보
+김노도
+김정제
+김영성
+김금석
+김환현
+김명욱
+김한웅
+김금선
+김상식
+김금영
+김해환
+김금순
+김차철
+김소옥
+김홍봉
+김금순
+김상제
+김희환
+김영수
+김금순
+김종악
+김명열
+김태형
+김금연
+김용환
+김윤용
+김성보
+김금연
+김용호
+김만천
+김학주
+김금옥
+김애성
+김정정
+김홍우
+김금옥
+김기석
+김만만
+김용열
+김금용
+김타일
+김치봉
+김광일
+김금이
+김경근
+김원진
+김춘수
+김금이
+김춘식
+김재상
+김범국
+김금이
+김수규
+김우팔
+김상균
+김금자
+김분동
+김주이
+김해규
+김금자
+김근현
+김선학
+김해환
+김금하
+김인형
+김효선
+김을황
+김긍호
+김창득
+김진조
+김규돌
+김기고
+김돈배
+김문종
+김인하
+김기균
+김 환
+김태곤
+김재환
+김기균
+김영웅
+김해인
+김삼오
+김기년
+김문자
+김영선
+김광규
+김기년
+김동자
+김영범
+김봉순
+김기년
+김인범
+김강순
+김행철
+김기덕
+김금운
+김정환
+김필기
+김기덕
+김경용
+김홍숙
+김동수
+김기덕
+김경균
+김두옥
+김정섭
+김기도
+김재호
+김원한
+김홍자
+김기미
+김곡만
+김인재
+김암주
+김기범
+김기석
+김태대
+김운수
+김기병
+김만규
+김용문
+김태연
+김기봉
+김순중
+김규기
+김동만
+김기봉
+김광권
+김헌섭
+김장식
+김기분
+김명선
+김병순
+김상훈
+김기삼
+김순경
+김상수
+김영술
+김기석
+김만희
+김장대
+김수정
+김기석
+김상철
+김동열
+김선현
+김기선
+김광대
+김영열
+김의식
+김기성
+김평수
+김금래
+김희하
+김기수
+김해분
+김소남
+김선기
+김기수
+김정준
+김광동
+김동영
+김기수
+김재록
+김종숙
+김차수
+김기수
+김종재
+김양경
+김태기
+김기수
+김자은
+김영철
+김한식
+김기수
+김태수
+김혁오
+김성영
+김기순
+김준숙
+김 식
+김성병
+김기술
+김일규
+김병권
+김용한
+김기술
+김광원
+김태규
+김의오
+김기식
+김태숙
+김순하
+김규구
+김기식
+김상석
+김태우
+김원윤
+김기식
+김정재
+김효일
+김진석
+김기식
+김진술
+김병천
+김용훈
+김기식
+김재재
+김영열
+김경옥
+김기연
+김영건
+김근순
+김암준
+김기연
+김필열
+김봉석
+김진용
+김기열
+김완옥
+김석현
+김무세
+김기영
+김용달
+김병기
+김갑환
+김기옥
+김형현
+김금빈
+김판옥
+김기용
+김기석
+김태철
+김권영
+김기용
+김선원
+김신배
+김재미
+김기용
+김도규
+김윤조
+김종암
+김기원
+김순기
+김홍규
+김강우
+김기원
+김희순
+김태악
+김원선
+김기원
+김공권
+김수동
+김영환
+김기정
+김해미
+김윤익
+김정순
+김기준
+김종학
+김명희
+김쌍화
+김기준
+김재규
+김태희
+김기화
+김기중
+김인호
+김실기
+김문섭
+김기철
+김정생
+김안덕
+김기근
+김기철
+김소수
+김권태
+김태천
+김기철
+김종정
+김재학
+김학수
+김기태
+김용식
+김정진
+김호진
+김기필
+김수석
+김태자
+김병운
+김기현
+김차근
+김원덕
+김근석
+김기현
+김동희
+김순정
+김순수
+김기협
+김노숙
+김정호
+김재분
+김기호
+김달술
+김노훈
+김동보
+김기호
+김점진
+김상희
+김의탁
+김기호
+김윤용
+김태훈
+김영종
+김기호
+김하배
+김영열
+김진현
+김기홍
+김동영
+김순태
+김순희
+김기홍
+김용원
+김병한
+김성수
+김기홍
+김재식
+김상원
+김판형
+김기환
+김철범
+김주봉
+김봉열
+김기환
+김궁율
+김곤석
+김순재
+김기환
+김상경
+김수준
+김태우
+김기희
+김일자
+김상휴
+김재석
+김길동
+김병강
+김흥순
+김미철
+김길동
+김학규
+김창규
+김병록
+김길상
+김경문
+김경용
+김동지
+김길수
+김기천
+김용선
+김낙길
+김길환
+김운술
+김택영
+김윤태
+김나진자
+김정수용
+김원우영
+김정순정
+김나현
+김용동
+김지영
+김승권
+김낙동
+김상태
+김영룡
+김현호
+김낙호
+김수상
+김봉표
+김부현
+김난이
+김점겸
+김준권
+김희술
+김남근
+김혜호
+김천일
+김만이
+김남기
+김승만
+김인대
+김재연
+김남수
+김연희
+김성호
+김해탁
+김남수
+김차호
+김종호
+김정옥
+김남수
+김 옥
+김임이
+김영표
+김남순
+김일달
+김희희
+김현배
+김남용
+김재익
+김태구
+김해우
+김남우
+김헌선
+김경선
+김치석
+김남이
+김정정
+김곡기
+김동원
+김남조
+김채현
+김덕일
+김만근
+김노수
+김동식
+김현자
+김창철
+김다남
+김수웅
+김해주
+김찬계
+김달막
+김철호
+김종곤
+김병일
+김달막
+김홍애
+김기성
+김종원
+김달분
+김치호
+김외선
+김경교
+김달성
+김연환
+김재호
+김문암
+김달수
+김동봉
+김영현
+김영만
+김달식
+김천곤
+김두옥
+김지용
+김달식
+김소근
+김순술
+김영웅
+김달암
+김태군
+김복수
+김정환
+김달유
+김광숙
+김순기
+김옥준
+김달태
+김선량
+김미술
+김소지
+김달호
+김정환
+김병섭
+김길우
+김달화
+김필향
+김영자
+김영덕
+김대경
+김상봉
+김수식
+김성태
+김대규
+김미득
+김윤준
+김영택
+김대기
+김현필
+김진현
+김무남
+김대기
+김상식
+김성혁
+김윤복
+김대석
+김황만
+김장덕
+김성홍
+김대성
+김철헌
+김상원
+김재환
+김대수
+김상기
+김성철
+김승출
+김대식
+김병기
+김재화
+김찬영
+김대식
+김정철
+김득조
+김상근
+김대식
+김민철
+김정주
+김종권
+김대연
+김순술
+김효선
+김무상
+김대용
+김은미
+김규석
+김현환
+김대원
+김재창
+김형임
+김명만
+김대윤
+김기연
+김경석
+김종례
+김대응
+김수출
+김낙환
+김일실
+김대일
+김도철
+김보호
+김임철
+김대일
+김희준
+김을석
+김윤기
+김대종
+김동만
+김재화
+김덕방
+김대진
+김정옥
+김봉회
+김주원
+김대현
+김상권
+김춘오
+김용창
+김대현
+김대호
+김복석
+김성휴
+김대현
+김상택
+김윤희
+김노곤
+김대호
+김과수
+김재수
+김봉성
+김대환
+김기수
+김계한
+김성석
+김대희
+김은환
+김종열
+김병희
+김덕고
+김상빈
+김해곤
+김종만
+김덕곤
+김일수
+김기성
+김장석
+김덕리
+김기원
+김지정
+김승호
+김덕림
+김만문
+김금정
+김강동
+김덕만
+김종배
+김봉식
+김정표
+김덕수
+김상수
+김정희
+김영조
+김덕수
+김태로
+김연철
+김주용
+김덕순
+김상열
+김종기
+김화갑
+김덕순
+김성두
+김수연
+김하묵
+김덕연
+김귀현
+김외한
+김광자
+김덕연
+김성이
+김한규
+김종배
+김덕열
+김임춘
+김재규
+김상현
+김덕용
+김용완
+김해용
+김선웅
+김덕원
+김남만
+김창돌
+김수곤
+김덕조
+김현삼
+김영구
+김준제
+김덕조
+김경규
+김태규
+김인철
+김덕중
+김성로
+김석식
+김무수
+김덕해
+김호철
+김홍창
+김원휘
+김도경
+김태주
+김경선
+김수원
+김도기
+김상종
+김동대
+김기수
+김도암
+김영훈
+김주균
+김혜숙
+김도영
+김봉권
+김태미
+김봉길
+김도원
+김영근
+김노목
+김정말
+김도윤
+김태순
+김세식
+김재희
+김도중
+김칠용
+김성영
+김재곤
+김도한
+김광덕
+김성규
+김명운
+김도훈
+김차옥
+김봉갑
+김강모
+김도희
+김용선
+김해일
+김재오
+김동곤
+김이석
+김용택
+김성석
+김동권
+김태병
+김일도
+김인식
+김동근
+김건덕
+김정복
+김영일
+김동기
+김용대
+김흥기
+김대호
+김동기
+김경두
+김임호
+김승수
+김동기
+김수운
+김명덕
+김명환
+김동길
+김기모
+김복선
+김영수
+김동남
+김윤만
+김정순
+김선순
+김동례
+김명수
+김강숙
+김석득
+김동만
+김태환
+김쌍효
+김삼희
+김동섭
+김상연
+김유원
+김장권
+김동성
+김해경
+김경선
+김선록
+김동성
+김군영
+김맹호
+김갑준
+김동숙
+김월환
+김태교
+김윤수
+김동순
+김상선
+김재채
+김미락
+김동식
+김숙만
+김종출
+김윤기
+김동식
+김학학
+김기기
+김수용
+김동열
+김준순
+김명경
+김병환
+김동열
+김정률
+김광남
+김용규
+김동열
+김재이
+김태섭
+김일환
+김동용
+김욱윤
+김헌우
+김병철
+김동원
+김차길
+김정은
+김사열
+김동주
+김상득
+김충주
+김용찬
+김동주
+김준덕
+김홍은
+김동근
+김동준
+김홍형
+김해현
+김영규
+김동진
+김재관
+김필곤
+김수현
+김동진
+김희삼
+김성후
+김인동
+김동춘
+김정목
+김제용
+김태식
+김동춘
+김윤술
+김명규
+김영달
+김동춘
+김인현
+김중현
+김승래
+김동현
+김용화
+김진수
+김정회
+김동호
+김순경
+김병섭
+김수석
+김동환
+김윤오
+김종상
+김미이
+김동환
+김춘경
+김종술
+김항기
+김동환
+김병구
+김성식
+김일용
+김동환
+김석오
+김낙시
+김경성
+김동환
+김병수
+김인웅
+김창철
+김동효
+김태홍
+김남준
+김연원
+김동효
+김정식
+김구규
+김규임
+김두식
+김창호
+김근순
+김무둔
+김두연
+김희달
+김영준
+김원조
+김두연
+김영숙
+김인곤
+김인일
+김두완
+김차생
+김상동
+김창년
+김두천
+김원호
+김만만
+김태상
+김두출
+김춘정
+김정순
+김순건
+김두호
+김정영
+김용희
+김범백
+김두환
+김재규
+김상임
+김필환
+김두희
+김영철
+김하열
+김종조
+김득규
+김판관
+김정훈
+김상천
+김득석
+김영학
+김홍경
+김대휴
+김득용
+김태구
+김인수
+김해규
+김등길
+김순웅
+김재우
+김말화
+김만균
+김후심
+김선희
+김영현
+김만금
+김종숙
+김정두
+김운호
+김만금
+김병현
+김태술
+김인희
+김만길
+김지준
+김덕만
+김세현
+김만길
+김만문
+김채섭
+김경남
+김만달
+김상한
+김용길
+김영규
+김만덕
+김국수
+김미홍
+김현완
+김만덕
+김수수
+김재오
+김정호
+김만도
+김우달
+김한식
+김태용
+김만득
+김기갑
+김칠식
+김완구
+김만복
+김복용
+김이종
+김석옥
+김만석
+김병섭
+김성원
+김임규
+김만선
+김덕조
+김차순
+김태애
+김만수
+김효봉
+김문광
+김태판
+김만수
+김금주
+김봉수
+김병술
+김만수
+김매달
+김윤성
+김재현
+김만술
+김용호
+김금환
+김순호
+김만열
+김홍열
+김장권
+김인석
+김만용
+김상덕
+김준곤
+김종순
+김만원
+김창호
+김해자
+김원철
+김만원
+김영순
+김지근
+김창철
+김만이
+김상순
+김영평
+김대수
+김만조
+김자열
+김숙호
+김정도
+김만종
+김동성
+김지출
+김종균
+김만태
+김동근
+김석근
+김석재
+김만훈
+김정수
+김상도
+김창규
+김말난
+김복열
+김희호
+김희덕
+김말래
+김승기
+김순수
+김동봉
+김말련
+김정호
+김출원
+김옥진
+김말분
+김태연
+김차금
+김윤권
+김말석
+김기래
+김재영
+김순임
+김말선
+김달철
+김광윤
+김복준
+김말수
+김준선
+김태록
+김달기
+김말술
+김동우
+김태국
+김수이
+김말암
+김영술
+김판영
+김일숙
+김말이
+김순분
+김건곤
+김정왕
+김말임
+김용국
+김동종
+김태호
+김말조
+김철덕
+김명규
+김광자
+김맹환
+김한달
+김영근
+김극이
+김명곤
+김술만
+김일이
+김판대
+김명곤
+김소향
+김기호
+김재률
+김명국
+김상호
+김차희
+김종호
+김명규
+김윤범
+김태남
+김명철
+김명규
+김경호
+김종돌
+김동식
+김명락
+김갑기
+김 선
+김승윤
+김명섭
+김병순
+김승수
+김성흠
+김명수
+김차호
+김무권
+김숙순
+김명수
+김태환
+김미주
+김해국
+김명숙
+김점수
+김화구
+김태기
+김명숙
+김병덕
+김창대
+김안홍
+김명숙
+김태수
+김명식
+김종순
+김명순
+김태조
+김오화
+김용수
+김명순
+김태이
+김현곤
+김임구
+김명순
+김영화
+김정조
+김옥숙
+김명순
+김규화
+김성종
+김귀준
+김명식
+김을은
+김도발
+김운래
+김명애
+김문호
+김태경
+김원순
+김명오
+김일숙
+김윤희
+김환세
+김명옥
+김도호
+김채용
+김두열
+김명자
+김현자
+김상득
+김수완
+김명자
+김문율
+김규순
+김태완
+김명정
+김홍영
+김규호
+김영태
+김명중
+김성소
+김순택
+김전규
+김명진
+김항복
+김순래
+김진금
+김명진
+김춘규
+김정식
+김난영
+김명철
+김종영
+김자순
+김성붕
+김명철
+김태윤
+김일술
+김광례
+김명출
+김춘화
+김소희
+김순기
+김명출
+김만이
+김정양
+김태철
+김명출
+김순진
+김낙숙
+김성곤
+김명하
+김재수
+김동호
+김창석
+김명학
+김남호
+김태열
+김순규
+김명호
+김석일
+김재분
+김관순
+김명화
+김상철
+김일호
+김민영
+김명환
+김정수
+김길동
+김차길
+김명희
+김상화
+김상식
+김동옥
+김명희
+김기희
+김경가
+김순기
+김명희
+김상현
+김기태
+김두구
+김묘월
+김병주
+김재교
+김기정
+김무근
+김장선
+김갑일
+김헌재
+김무금
+김만출
+김성식
+김계순
+김무배
+김달휴
+김남조
+김재곤
+김무배
+김길준
+김재철
+김재득
+김무선
+김광동
+김병진
+김태탁
+김무식
+김병대
+김성구
+김성현
+김무연
+김규호
+김해용
+김계식
+김무열
+김경호
+김범자
+김상탁
+김무열
+김태갑
+김위수
+김진출
+김무철
+김환일
+김현수
+김재규
+김무태
+김복욱
+김 식
+김종영
+김무현
+김무수
+김명수
+김만조
+김무호
+김종수
+김태환
+김홍언
+김무환
+김귀용
+김관천
+김규식
+김무환
+김소동
+김을돌
+김윤이
+김문구
+김영균
+김재수
+김성석
+김문기
+김정관
+김태홍
+김기섭
+김문돌
+김종희
+김기천
+김판희
+김문배
+김순연
+김교수
+김종봉
+김문배
+김성옥
+김용도
+김상수
+김문수
+김몽곤
+김재희
+김창식
+김문수
+김판선
+김병식
+김영곤
+김문수
+김수원
+김태광
+김인희
+김문식
+김동림
+김선기
+김정덕
+김문열
+김성준
+김원조
+김재우
+김문열
+김윤만
+김재준
+김상동
+김문영
+김영식
+김분하
+김의하
+김문용
+김일보
+김정수
+김말주
+김문주
+김성원
+김재만
+김기욱
+김문호
+김명국
+김종동
+김억천
+김미경
+김신용
+김영휴
+김수철
+김미숙
+김영기
+김용준
+김재수
+김미옥
+김천구
+김운진
+김보우
+김미자
+김종근
+김상필
+김달근
+김미정
+김삼길
+김광곤
+김성순
+김미정
+김상준
+김병순
+김용연
+김민애
+김근열
+김영환
+김용용
+김민우
+김덕현
+김강윤
+김가호
+김민자
+김장복
+김인조
+김성영
+김민정
+김재희
+김병자
+김홍호
+김민철
+김순식
+김명교
+김종춘
+김범수
+김영훈
+김해식
+김익순
+김범준
+김병권
+김봉연
+김병섭
+김범출
+김기현
+김장두
+김효구
+김범태
+김양길
+김태순
+김용재
+김병관
+김충훈
+김용기
+김수호
+김병권
+김영택
+김상수
+김진욱
+김병규
+김호감
+김미노
+김낙호
+김병근
+김계기
+김헌문
+김일환
+김병기
+김용술
+김숙조
+김상욱
+김병달
+김차섭
+김상영
+김충영
+김병덕
+김규열
+김상준
+김만우
+김병덕
+김충수
+김점노
+김언식
+김병려
+김송호
+김수봉
+김종희
+김병련
+김종곤
+김승숙
+김종연
+김병림
+김노숙
+김동용
+김성균
+김병만
+김호휴
+김수자
+김문도
+김병삼
+김성원
+김우숙
+김원봉
+김병삼
+김인수
+김창순
+김동국
+김병상
+김본자
+김규완
+김종갑
+김병수
+김치순
+김동영
+김보모
+김병수
+김연석
+김수순
+김영도
+김병수
+김석래
+김종영
+김혜권
+김병식
+김 부
+김도용
+김만도
+김병연
+김해춘
+김종도
+김강섭
+김병열
+김숙순
+김정수
+김승길
+김병완
+김석길
+김윤우
+김용범
+김병용
+김소만
+김동길
+김용기
+김병우
+김용주
+김말엽
+김은수
+김병우
+김병옥
+김원구
+김우수
+김병원
+김창록
+김달호
+김필종
+김병익
+김주호
+김승석
+김봉도
+김병주
+김정문
+김현례
+김상근
+김병준
+김홍원
+김기성
+김택수
+김병준
+김정수
+김풍소
+김명규
+김병진
+김경일
+김형진
+김재환
+김병철
+김유기
+김영학
+김명성
+김병춘
+김달현
+김태순
+김덕자
+김병태
+김은문
+김정우
+김인순
+김병호
+김경식
+김덕필
+김태덕
+김병호
+김효섭
+김왕환
+김수태
+김병환
+김병환
+김상도
+김정숙
+김병훈
+김태금
+김희실
+김국상
+김병훈
+김진선
+김주국
+김구기
+김병희
+김옥호
+김해호
+김정숙
+김보환
+김여조
+김갑휘
+김임곤
+김복란
+김달분
+김수자
+김대금
+김복련
+김재곤
+김종애
+김영영
+김복례
+김종식
+김필도
+김상철
+김복석
+김점석
+김범정
+김기조
+김복수
+김병우
+김영규
+김교민
+김복수
+김상동
+김윤만
+김영택
+김복숙
+김경자
+김미호
+김외환
+김복순
+김성희
+김동환
+김태규
+김복순
+김신조
+김병섭
+김영옥
+김복술
+김상구
+김세갑
+김무돈
+김복시
+김재선
+김영열
+김재익
+김복심
+김봉훈
+김수분
+김도현
+김복연
+김계규
+김윤원
+김용호
+김복연
+김인래
+김진봉
+김상기
+김복용
+김옥봉
+김영례
+김학기
+김복임
+김용용
+김태철
+김을택
+김복조
+김춘숙
+김만록
+김광용
+김복준
+김기두
+김만경
+김재해
+김복현
+김진우
+김기규
+김태준
+김복희
+김기연
+김필권
+김만곤
+김봉갑
+김윤희
+김영율
+김영근
+김봉관
+김광도
+김상욱
+김원열
+김봉권
+김수식
+김귀성
+김상이
+김봉권
+김진권
+김성길
+김춘종
+김봉기
+김태순
+김태규
+김동선
+김봉기
+김중영
+김갑영
+김이석
+김봉길
+김태준
+김종희
+김강희
+김봉늠
+김석철
+김의야
+김광학
+김봉도
+김근택
+김추석
+김신진
+김봉선
+김흥만
+김남숙
+김성분
+김봉선
+김두목
+김정옥
+김금열
+김봉섭
+김창도
+김대만
+김기자
+김봉수
+김 덕
+김종자
+김정현
+김봉수
+김재조
+김주학
+김효찬
+김봉자
+김동욱
+김두순
+김성준
+김봉주
+김순태
+김승용
+김동욱
+김봉진
+김윤내
+김재식
+김경길
+김봉진
+김태환
+김상남
+김동재
+김봉호
+김준식
+김은규
+김효무
+김봉호
+김문헌
+김희우
+김귀희
+김봉호
+김경수
+김학득
+김해호
+김부근
+김분연
+김효생
+김기균
+김부형
+김영삼
+김정동
+김병조
+김분남
+김정자
+김길주
+김대분
+김분선
+김희달
+김삼식
+김태구
+김분악
+김정용
+김수배
+김제덕
+김분열
+김광호
+김영수
+김광수
+김분이
+김동래
+김태자
+김태순
+김분이
+김영계
+김우남
+김양준
+김분조
+김차희
+김관대
+김성선
+김사곤
+김태식
+김진우
+김수식
+김사순
+김상철
+김재준
+김종조
+김사일
+김윤영
+김경기
+김기동
+김사조
+김정수
+김성철
+김만애
+김삼국
+김성근
+김규호
+김기분
+김삼남
+김용우
+김태중
+김병성
+김삼동
+김삼태
+김정식
+김요석
+김삼명
+김창희
+김홍희
+김태순
+김삼방
+김병봉
+김영훈
+김려길
+김삼봉
+김기권
+김영준
+김종식
+김삼상
+김대수
+김명구
+김상희
+김삼수
+김희상
+김종중
+김금래
+김삼수
+김종운
+김정현
+김영수
+김삼용
+김익진
+김명호
+김재원
+김삼용
+김성동
+김순로
+김소호
+김삼조
+김영래
+김복한
+김원환
+김삼진
+김영종
+김종규
+김종해
+김삼출
+김태춘
+김일구
+김상준
+김삼출
+김윤식
+김진금
+김영석
+김삼호
+김철상
+김인봉
+김의호
+김상
+김택
+김철
+김태
+김상곤
+김영구
+김상빈
+김두종
+김상곤
+김진암
+김공현
+김진규
+김상곤
+김준출
+김순자
+김성운
+김상관
+김희수
+김선권
+김수섭
+김상구
+김선석
+김미용
+김해선
+김상구
+김태하
+김규연
+김연수
+김상구
+김극일
+김태운
+김종용
+김상구
+김희훈
+김해원
+김윤출
+김상권
+김병표
+김상천
+김필난
+김상규
+김성경
+김곡찬
+김귀호
+김상규
+김순곤
+김명연
+김천병
+김상규
+김용영
+김종섭
+김종숙
+김상규
+김무희
+김우출
+김경기
+김상균
+김영수
+김의일
+김응희
+김상근
+김춘탁
+김성점
+김원옥
+김상근
+김차봉
+김정범
+김좌순
+김상기
+김희배
+김종덕
+김병정
+김상길
+김욱휴
+김일배
+김세수
+김상덕
+김해선
+김대갑
+김연봉
+김상덕
+김창봉
+김재선
+김재희
+김상덕
+김경태
+김분천
+김갑수
+김상덕
+김순달
+김재호
+김미진
+김상돈
+김용자
+김영식
+김병호
+김상록
+김미섭
+김호호
+김경식
+김상만
+김을우
+김명용
+김열진
+김상만
+김달세
+김자욱
+김윤호
+김상문
+김옥용
+김 창
+김희택
+김상문
+김용용
+김헌택
+김명현
+김상미
+김기영
+김채일
+김성호
+김상배
+김영길
+김명현
+김상순
+김상석
+김추연
+김윤건
+김정열
+김상섭
+김종식
+김순출
+김종국
+김상수
+김언덕
+김삼혜
+김수래
+김상수
+김재이
+김상현
+김강선
+김상수
+김정봉
+김태옥
+김삼래
+김상수
+김진동
+김칠이
+김성한
+김상숙
+김홍석
+김병조
+김월환
+김상술
+김호배
+김삼석
+김손석
+김상시
+김장윤
+김기현
+김재이
+김상식
+김종성
+김은화
+김춘현
+김상연
+김영태
+김진관
+김선준
+김상연
+김용해
+김상곤
+김건원
+김상열
+김덕찬
+김윤우
+김주성
+김상열
+김병훈
+김상근
+김명달
+김상영
+김금동
+김분석
+김중식
+김상오
+김병호
+김순동
+김창용
+김상용
+김정현
+김홍준
+김말교
+김상용
+김찬원
+김기식
+김보하
+김상용
+김준덕
+김윤근
+김일룡
+김상운
+김연호
+김미곤
+김경만
+김상원
+김동계
+김점희
+김도식
+김상윤
+김응문
+김호록
+김인생
+김상율
+김영하
+김화순
+김경록
+김상율
+김용수
+김동근
+김재성
+김상율
+김진태
+김광학
+김해조
+김상응
+김봉기
+김병국
+김노균
+김상일
+김윤학
+김상종
+김광정
+김상일
+김병찬
+김창형
+김석섭
+김상일
+김소대
+김승라
+김상근
+김상재
+김유수
+김건원
+김종환
+김상조
+김춘도
+김식덕
+김동호
+김상종
+김춘섭
+김홍수
+김재완
+김상중
+김상희
+김상후
+김장봉
+김상진
+김노석
+김달남
+김용원
+김상진
+김명석
+김병열
+김은술
+김상천
+김순진
+김태구
+김영자
+김상철
+김송수
+김실한
+김현영
+김상철
+김용길
+김상호
+김금자
+김상철
+김남석
+김영수
+김웅대
+김상태
+김미석
+김호규
+김영옥
+김상태
+김지호
+김준성
+김태식
+김상태
+김중호
+김승복
+김재권
+김상하
+김상섭
+김면호
+김상옥
+김상한
+김호훈
+김봉권
+김동식
+김상헌
+김영자
+김지호
+김관현
+김상혁
+김영환
+김종희
+김명찬
+김상현
+김경준
+김점봉
+김중학
+김상현
+김삼수
+김효춘
+김영복
+김상현
+김성환
+김기문
+김종성
+김상호
+김우규
+김경갑
+김창현
+김상호
+김은현
+김기경
+김경득
+김상호
+김복술
+김재순
+김분효
+김상호
+김내택
+김은성
+김은자
+김상홍
+김영암
+김숙미
+김채희
+김상환
+김일환
+김춘호
+김미현
+김상훈
+김재하
+김달순
+김우호
+김상희
+김광영
+김건기
+김만철
+김상희
+김기옥
+김헌희
+김문숙
+김상희
+김태우
+김학술
+김용석
+김서암
+김대태
+김계석
+김종금
+김석곤
+김순애
+김태조
+김노희
+김석관
+김복양
+김용환
+김해현
+김석규
+김영규
+김태득
+김종영
+김석균
+김경희
+김대황
+김차용
+김석근
+김점경
+김판필
+김정천
+김석근
+김인옥
+김창열
+김태세
+김석근
+김갑만
+김정암
+김해곤
+김석노
+김정두
+김도창
+김숙표
+김석도
+김순재
+김태원
+김해만
+김석동
+김판전
+김용호
+김일수
+김석란
+김종봉
+김병수
+김원평
+김석수
+김봉덕
+김춘열
+김말근
+김석순
+김길복
+김경술
+김조현
+김석암
+김동삼
+김대식
+김경호
+김석연
+김귀봉
+김상출
+김진건
+김석열
+김진현
+김노봉
+김길애
+김석이
+김태연
+김운식
+김태만
+김석재
+김달탁
+김종록
+김상현
+김석조
+김권익
+김문규
+김상범
+김석종
+김헌규
+김미준
+김태만
+김석준
+김동석
+김미일
+김기복
+김석진
+김상석
+김수임
+김용조
+김석천
+김경관
+김영유
+김성석
+김석철
+김재금
+김영용
+김규준
+김석환
+김소장
+김낙순
+김대정
+김선교
+김영수
+김중갑
+김성수
+김선덕
+김영임
+김병섭
+김정수
+김선만
+김성제
+김차오
+김춘수
+김선미
+김창자
+김효미
+김정수
+김선봉
+김용윤
+김복성
+김우영
+김선분
+김성성
+김필태
+김광현
+김선술
+김진자
+김홍각
+김태천
+김선우
+김복용
+김종희
+김복환
+김선욱
+김점용
+김병수
+김상수
+김선욱
+김기운
+김준호
+김해재
+김선이
+김정수
+김상숙
+김기자
+김선이
+김춘우
+김정식
+김순인
+김선이
+김경호
+김선수
+김희섭
+김선이
+김윤원
+김정표
+김윤군
+김선이
+김영애
+김재수
+김삼규
+김선자
+김근주
+김동중
+김경석
+김선자
+김정련
+김동자
+김홍동
+김선중
+김석선
+김영훈
+김연진
+김선태
+김영식
+김규웅
+김재진
+김선태
+김병돌
+김상덕
+김쌍표
+김선태
+김상행
+김영동
+김수조
+김선효
+김수천
+김옥일
+김종포
+김선희
+김종달
+김무기
+김경석
+김선희
+김삼화
+김의한
+김조고
+김선희
+김주임
+김환기
+김혁수
+김설자
+김주동
+김상술
+김재원
+김성계
+김차윤
+김덕빈
+김경희
+김성곤
+김옥길
+김인동
+김소훈
+김성곤
+김사설
+김판만
+김동천
+김성곤
+김윤준
+김태균
+김팔옥
+김성곤
+김진하
+김소효
+김성환
+김성구
+김재일
+김종수
+김우순
+김성구
+김상대
+김인수
+김영대
+김성구
+김만환
+김희기
+김석분
+김성구
+김영문
+김병구
+김진권
+김성구
+김태기
+김순점
+김상조
+김성규
+김순철
+김사규
+김일호
+김성규
+김무배
+김영현
+김재옥
+김성규
+김봉규
+김진우
+김성도
+김성근
+김범숙
+김훈철
+김우환
+김성근
+김호희
+김태자
+김승선
+김성기
+김종현
+김점범
+김용수
+김성기
+김임제
+김성일
+김병태
+김성기
+김옥국
+김태화
+김천희
+김성기
+김영분
+김옥석
+김덕관
+김성기
+김노원
+김영식
+김윤동
+김성기
+김운운
+김영순
+김상종
+김성기
+김병주
+김무호
+김용학
+김성기
+김상우
+김병학
+김정진
+김성남
+김중상
+김준희
+김종완
+김성덕
+김해용
+김영구
+김상진
+김성도
+김원곤
+김인원
+김락식
+김성도
+김봉이
+김유채
+김정조
+김성락
+김상환
+김주칠
+김연옥
+김성렬
+김정철
+김상철
+김억목
+김성례
+김응주
+김수환
+김타숙
+김성률
+김호수
+김경호
+김현락
+김성만
+김창일
+김철표
+김희학
+김성목
+김광만
+김택언
+김진소
+김성문
+김근기
+김을주
+김순돌
+김성배
+김정생
+김소권
+김건기
+김성배
+김관건
+김정희
+김성환
+김성복
+김용희
+김분포
+김기목
+김성복
+김용현
+김광모
+김준택
+김성생
+김명홍
+김주웅
+김종건
+김성선
+김기홍
+김점탁
+김재권
+김성수
+김선숙
+김낙진
+김분문
+김성수
+김동제
+김춘박
+김기웅
+김성수
+김태복
+김완옥
+김광순
+김성수
+김춘익
+김길호
+김성영
+김성순
+김세진
+김소식
+김근진
+김성식
+김용주
+김자식
+김명홍
+김성열
+김영우
+김정광
+김헌일
+김성열
+김무순
+김심임
+김갑수
+김성열
+김천일
+김재대
+김영도
+김성열
+김동식
+김유식
+김영락
+김성영
+김인덕
+김충목
+김성호
+김성용
+김남순
+김종환
+김문규
+김성용
+김외동
+김칠도
+김경노
+김성용
+김중철
+김수현
+김옥복
+김성우
+김장술
+김영정
+김태천
+김성우
+김건길
+김명식
+김관근
+김성우
+김명설
+김삼인
+김종희
+김성우
+김의우
+김수인
+김시술
+김성욱
+김소두
+김근배
+김성수
+김성운
+김근진
+김영달
+김현태
+김성운
+김재종
+김정춘
+김광순
+김성운
+김경호
+김진환
+김만근
+김성윤
+김정석
+김도주
+김병한
+김성일
+김시학
+김수학
+김강기
+김성일
+김장개
+김덕교
+김근동
+김성일
+김병우
+김상언
+김기웅
+김성재
+김광철
+김병치
+김재순
+김성조
+김재환
+김만철
+김연순
+김성주
+김덕태
+김원규
+김재호
+김성준
+김태순
+김정기
+김혜득
+김성진
+김용주
+김금완
+김재도
+김성진
+김춘이
+김현조
+김희례
+김성출
+김종호
+김 용
+김유섭
+김성치
+김병도
+김재진
+김재석
+김성태
+김정호
+김용해
+김성길
+김성태
+김진환
+김명선
+김영철
+김성태
+김효점
+김태종
+김왕소
+김성태
+김태란
+김노희
+김기선
+김성택
+김수철
+김점우
+김성윤
+김성필
+김병영
+김재호
+김병술
+김성한
+김종재
+김월경
+김홍선
+김성호
+김병길
+김명주
+김효덕
+김성호
+김덕명
+김만기
+김성근
+김성호
+김노기
+김재옥
+김명덕
+김성환
+김쾌문
+김영름
+김태하
+김성환
+김을도
+김석봉
+김수용
+김성훈
+김상수
+김판로
+김차이
+김성훈
+김옥태
+김영득
+김석조
+김성훈
+김철봉
+김종준
+김찬명
+김성희
+김상주
+김해수
+김정열
+김성희
+김재애
+김경택
+김영천
+김성희
+김순우
+김옥덕
+김종희
+김세기
+김성태
+김승란
+김봉식
+김세덕
+김종용
+김해환
+김상국
+김세연
+김태식
+김성홍
+김일덕
+김세완
+김수락
+김종자
+김분섭
+김세운
+김동석
+김행술
+김광상
+김세호
+김미진
+김해구
+김용권
+김세훈
+김규원
+김현동
+김진소
+김소경
+김부성
+김재현
+김철선
+김소남
+김영동
+김관웅
+김기웅
+김소덕
+김필복
+김관휴
+김정순
+김소덕
+김태영
+김원기
+김기구
+김소도
+김수현
+김윤남
+김재교
+김소도
+김임덕
+김규원
+김규철
+김소득
+김봉환
+김태환
+김병진
+김소배
+김계조
+김영용
+김숙열
+김소선
+김택애
+김춘수
+김판언
+김소순
+김용영
+김기억
+김정호
+김소연
+김악선
+김현중
+김남술
+김소조
+김성숙
+김상열
+김영희
+김소철
+김병갑
+김용란
+김만휴
+김소철
+김연학
+김성희
+김기석
+김소춘
+김대태
+김경이
+김종목
+김소한
+김우문
+김종준
+김영희
+김소향
+김병철
+김강근
+김정련
+김수갑
+김용일
+김조무
+김갑호
+김수강
+김태우
+김해배
+김희경
+김수경
+김경호
+김봉희
+김중규
+김수관
+김정원
+김혜모
+김병수
+김수길
+김계자
+김홍학
+김영림
+김수길
+김수원
+김수대
+김희임
+김수길
+김억웅
+김영연
+김장우
+김수길
+김미운
+김태우
+김분명
+김수년
+김동호
+김희포
+김길선
+김수동
+김지순
+김성우
+김주출
+김수만
+김종찬
+김수태
+김보두
+김수병
+김수분
+김정도
+김진이
+김수복
+김희석
+김성준
+김홍환
+김수복
+김기백
+김영이
+김봉분
+김수상
+김창남
+김채곤
+김중용
+김수석
+김수학
+김태태
+김상식
+김수선
+김무호
+김한선
+김점옥
+김수식
+김무현
+김명용
+김경만
+김수연
+김영규
+김규수
+김장철
+김수열
+김명금
+김용학
+김말선
+김수열
+김정호
+김효출
+김상완
+김수영
+김석연
+김행근
+김상수
+김수용
+김정석
+김진주
+김춘돌
+김수운
+김태명
+김낙진
+김자수
+김수웅
+김재수
+김진범
+김광웅
+김수원
+김복선
+김재은
+김일석
+김수익
+김모기
+김대열
+김주엽
+김수일
+김인기
+김기재
+김병환
+김수정
+김광흠
+김재금
+김달식
+김수종
+김충열
+김순자
+김경조
+김수준
+김기순
+김병봉
+김성년
+김수창
+김일호
+김태호
+김인우
+김수철
+김열윤
+김옥호
+김시수
+김수철
+김계균
+김순선
+김웅분
+김수태
+김등길
+김나기
+김상영
+김수태
+김춘춘
+김은조
+김명수
+김수택
+김금순
+김정조
+김태선
+김수택
+김우기
+김창기
+김인술
+김수현
+김미식
+김장룡
+김정궁
+김수현
+김광자
+김진현
+김금균
+김수호
+김창우
+김일식
+김원길
+김수호
+김주만
+김성자
+김익자
+김수호
+김상룡
+김방원
+김유한
+김수호
+김완일
+김행덕
+김병현
+김수화
+김지수
+김성원
+김성한
+김수환
+김춘혁
+김동진
+김동옥
+김수환
+김병범
+김성철
+김주석
+김수효
+김영연
+김정덕
+김윤수
+김수효
+김병점
+김영조
+김계오
+김숙이
+김정철
+김장래
+김석수
+김숙자
+김용중
+김월정
+김상노
+김숙자
+김담수
+김우순
+김삼숙
+김숙자
+김규선
+김해화
+김종근
+김숙현
+김장조
+김장태
+김무영
+김숙희
+김진상
+김동열
+김해세
+김순국
+김준권
+김인택
+김종수
+김순금
+김영필
+김영술
+김숙권
+김순기
+김윤근
+김소선
+김승연
+김순남
+김영성
+김문봉
+김성화
+김순남
+김순식
+김순길
+김철원
+김순남
+김명규
+김문조
+김창영
+김순남
+김형자
+김도호
+김권헌
+김순덕
+김상순
+김진웅
+김위철
+김순동
+김명일
+김종휴
+김재상
+김순득
+김영일
+김세열
+김석홍
+김순례
+김병준
+김한근
+김규환
+김순배
+김광원
+김상주
+김점섭
+김순분
+김우경
+김태수
+김종탁
+김순생
+김신삼
+김영영
+김종훈
+김순선
+김교기
+김제화
+김정희
+김순선
+김곤학
+김성구
+김원학
+김순식
+김정환
+김용주
+김말휴
+김순애
+김상창
+김혜도
+김혁용
+김순연
+김종일
+김정수
+김종동
+김순연
+김상윤
+김재호
+김춘진
+김순연
+김영식
+김영삼
+김신원
+김순옥
+김현조
+김경태
+김도열
+김순완
+김병분
+김정주
+김오오
+김순이
+김태영
+김순호
+김영선
+김순이
+김행향
+김성대
+김하동
+김순이
+김순환
+김보구
+김영영
+김순임
+김두생
+김재기
+김희태
+김순임
+김완흠
+김춘환
+김수수
+김순자
+김봉수
+김석관
+김문지
+김순호
+김경무
+김정용
+김범조
+김순화
+김영이
+김수덕
+김낙연
+김순희
+김정말
+김정식
+김옥대
+김순희
+김재식
+김해한
+김광권
+김순희
+김분식
+김원호
+김국식
+김술이
+김의희
+김성암
+김만재
+김술이
+김준직
+김정기
+김귀돌
+김승구
+김동현
+김영인
+김 순
+김승구
+김화해
+김순림
+김동식
+김승목
+김상섭
+김종화
+김영숙
+김승민
+김점돌
+김태용
+김기근
+김승정
+김종호
+김상석
+김춘수
+김승진
+김장철
+김유근
+김종대
+김승호
+김판순
+김명희
+김정금
+김시경
+김준환
+김승호
+김호임
+김시덕
+김준희
+김상판
+김석문
+김시동
+김원환
+김태교
+김범근
+김시래
+김병규
+김극애
+김남모
+김시운
+김영훈
+김용일
+김희식
+김시하
+김윤수
+김용환
+김근점
+김시환
+김만찬
+김주호
+김분덕
+김시환
+김진태
+김우경
+김하래
+김식규
+김성억
+김이주
+김상원
+김신숙
+김필조
+김병숙
+김정달
+김신식
+김남호
+김순석
+김태준
+김신열
+김태원
+김헌원
+김필점
+김신우
+김복도
+김훈석
+김재원
+김신일
+김대태
+김분향
+김현수
+김실경
+김임달
+김정호
+김병식
+김실광
+김달호
+김점섭
+김주욱
+김실광
+김도수
+김노열
+김춘원
+김쌍길
+김정덕
+김영노
+김양선
+김쌍례
+김경복
+김영호
+김태수
+김쌍봉
+김금완
+김용원
+김문운
+김쌍섭
+김인도
+김경호
+김종권
+김쌍암
+김동숙
+김기구
+김순자
+김아수
+김손권
+김종수
+김금이
+김악이
+김순수
+김윤수
+김동태
+김안수
+김순길
+김상수
+김광태
+김암남
+김장생
+김봉오
+김병옥
+김애연
+김익원
+김쾌옥
+김 모
+김양석
+김진운
+김해선
+김영원
+김양순
+김상섭
+김성태
+김희열
+김양순
+김창준
+김작락
+김재술
+김양식
+김교열
+김일덕
+김래출
+김양웅
+김상래
+김선현
+김성곤
+김양웅
+김순석
+김명순
+김경식
+김양원
+김인기
+김명한
+김성표
+김양주
+김관구
+김봉일
+김주운
+김양회
+김민희
+김광용
+김옥환
+김양흠
+김재한
+김대규
+김수덕
+김양희
+김규규
+김무우
+김강만
+김억년
+김철화
+김덕경
+김세문
+김억만
+김윤수
+김현걸
+김태률
+김억배
+김치호
+김병성
+김순생
+김억수
+김봉관
+김영악
+김윤권
+김언숙
+김성윤
+김문홍
+김종본
+김언식
+김수원
+김춘식
+김분경
+김연선
+김봉환
+김복현
+김홍경
+김연선
+김종률
+김홍식
+김대동
+김연수
+김춘곤
+김영환
+김의자
+김연수
+김정규
+김정성
+김쌍오
+김연수
+김삼식
+김용측
+김이일
+김연순
+김금석
+김진도
+김행종
+김연이
+김만식
+김범탁
+김종재
+김연조
+김인철
+김동근
+김말수
+김연조
+김성생
+김인규
+김용자
+김연주
+김석암
+김소동
+김선수
+김연향
+김인종
+김태용
+김영순
+김연희
+김양근
+김점주
+김병주
+김연희
+김형홍
+김재길
+김수길
+김영갑
+김종보
+김찬경
+김태영
+김영계
+김윤분
+김옥규
+김태도
+김영계
+김갑숙
+김구계
+김동연
+김영공
+김상화
+김세우
+김천연
+김영관
+김정경
+김해민
+김용재
+김영광
+김윤길
+김위수
+김경규
+김영교
+김영태
+김기태
+김종각
+김영구
+김채화
+김종원
+김병일
+김영구
+김원원
+김용희
+김철용
+김영구
+김영태
+김영현
+김해식
+김영국
+김준용
+김임수
+김면성
+김영국
+김동성
+김성현
+김재호
+김영귀
+김순진
+김순용
+김정동
+김영규
+김용범
+김동환
+김수진
+김영규
+김석성
+김경경
+김학영
+김영규
+김용식
+김귀덕
+김영헌
+김영규
+김한조
+김구재
+김영억
+김영규
+김병수
+김후도
+김태환
+김영균
+김재규
+김민흠
+김필용
+김영근
+김진윤
+김재심
+김재일
+김영근
+김우환
+김경태
+김현봉
+김영기
+김명옥
+김윤임
+김경용
+김영기
+김광호
+김경환
+김경오
+김영기
+김건주
+김석의
+김형운
+김영기
+김한중
+김동숙
+김양영
+김영길
+김희석
+김성래
+김창현
+김영길
+김명호
+김중용
+김용태
+김영길
+김종수
+김판용
+김용숙
+김영길
+김석순
+김오식
+김영석
+김영대
+김해년
+김용이
+김노철
+김영대
+김지규
+김태희
+김정희
+김영도
+김태석
+김태재
+김상천
+김영도
+김재록
+김소식
+김종호
+김영돈
+김정도
+김종학
+김임섭
+김영득
+김임현
+김인동
+김미순
+김영락
+김정근
+김창향
+김상순
+김영란
+김신경
+김용도
+김월환
+김영란
+김재환
+김윤용
+김삼덕
+김영만
+김록일
+김춘철
+김말광
+김영만
+김일부
+김재태
+김호규
+김영만
+김승갑
+김쌍건
+김종조
+김영만
+김장식
+김귀응
+김점식
+김영모
+김시호
+김차동
+김성선
+김영모
+김성순
+김종자
+김광영
+김영미
+김원기
+김상현
+김재수
+김영미
+김종성
+김의이
+김선현
+김영배
+김영길
+김명문
+김창이
+김영배
+김윤술
+김영근
+김학회
+김영봉
+김종호
+김수백
+김인환
+김영봉
+김상석
+김광국
+김성경
+김영부
+김재호
+김길근
+김태래
+김영빈
+김정인
+김문석
+김수원
+김영삼
+김수석
+김용곤
+김재정
+김영삼
+김규열
+김익환
+김영환
+김영상
+김영직
+김창수
+김성자
+김영석
+김상향
+김재수
+김진세
+김영석
+김수미
+김무철
+김규준
+김영석
+김상영
+김상규
+김봉윤
+김영석
+김형연
+김판섭
+김상일
+김영석
+김을식
+김병선
+김이경
+김영석
+김미복
+김영록
+김대만
+김영성
+김원헌
+김맹이
+김병우
+김영수
+김헌상
+김금순
+김재분
+김영수
+김희숙
+김세길
+김병수
+김영수
+김형애
+김갑기
+김희열
+김영수
+김재교
+김순광
+김용현
+김영수
+김봉희
+김대식
+김효철
+김영수
+김석철
+김무묵
+김철자
+김영수
+김양기
+김정우
+김영균
+김영수
+김점분
+김순윤
+김용태
+김영수
+김갑난
+김주희
+김병열
+김영수
+김경희
+김인호
+김연정
+김영수
+김두도
+김필태
+김인식
+김영수
+김춘헌
+김준순
+김상기
+김영수
+김성호
+김금조
+김주이
+김영수
+김헌권
+김진노
+김계길
+김영숙
+김상근
+김한목
+김상열
+김영숙
+김정연
+김이서
+김계근
+김영숙
+김권철
+김용덕
+김동만
+김영숙
+김재규
+김말분
+김용준
+김영숙
+김대수
+김민식
+김영선
+김영숙
+김희균
+김종경
+김원모
+김영숙
+김철영
+김지문
+김혜배
+김영숙
+김수인
+김영진
+김중갑
+김영숙
+김갑휘
+김차용
+김기선
+김영숙
+김의경
+김한국
+김정행
+김영숙
+김재재
+김달식
+김금분
+김영숙
+김택택
+김근호
+김치교
+김영순
+김원연
+김원실
+김경수
+김영순
+김계덕
+김상철
+김기기
+김영순
+김월열
+김성환
+김동종
+김영순
+김천성
+김홍구
+김연혜
+김영식
+김상길
+김석연
+김희관
+김영식
+김창애
+김대범
+김승임
+김영식
+김현용
+김전득
+김민화
+김영식
+김용주
+김임암
+김병호
+김영식
+김태식
+김용수
+김정이
+김영식
+김형근
+김상흠
+김중호
+김영식
+김상식
+김구숙
+김풍희
+김영식
+김대한
+김시옥
+김임관
+김영식
+김장숙
+김판현
+김재식
+김영식
+김창웅
+김재훈
+김종순
+김영신
+김태수
+김동섭
+김국갑
+김영옥
+김인현
+김성희
+김재복
+김영옥
+김창한
+김봉려
+김홍욱
+김영옥
+김택득
+김오영
+김기조
+김영옥
+김대환
+김병형
+김영식
+김영완
+김막호
+김영만
+김소화
+김영완
+김상채
+김지일
+김정준
+김영우
+김동운
+김분영
+김희모
+김영월
+김영철
+김태만
+김달호
+김영윤
+김정만
+김기성
+김영기
+김영은
+김상섭
+김태복
+김달문
+김영이
+김상배
+김영연
+김승돌
+김영인
+김영호
+김혜재
+김래도
+김영일
+김태태
+김옥규
+김지화
+김영일
+김병모
+김청식
+김경진
+김영자
+김타원
+김사희
+김병호
+김영자
+김숙진
+김소길
+김태태
+김영자
+김정숙
+김태길
+김삼생
+김영자
+김태고
+김소춘
+김민연
+김영자
+김상찬
+김낙규
+김승열
+김영자
+김우준
+김시술
+김해숙
+김영자
+김강효
+김재웅
+김영현
+김영자
+김호태
+김진용
+김민순
+김영조
+김인복
+김광재
+김차교
+김영조
+김종입
+김경수
+김동영
+김영주
+김대식
+김수조
+김용홍
+김영준
+김원우
+김재용
+김상희
+김영준
+김곤천
+김사완
+김석근
+김영준
+김 길
+김성자
+김석룡
+김영준
+김봉수
+김금수
+김필용
+김영진
+김차팔
+김상구
+김천화
+김영진
+김연선
+김정지
+김말주
+김영진
+김유희
+김장일
+김호근
+김영진
+김종조
+김영한
+김태룡
+김영집
+김근자
+김정권
+김달철
+김영집
+김우현
+김정건
+김동수
+김영철
+김동연
+김한선
+김두태
+김영철
+김상행
+김정계
+김영권
+김영철
+김경학
+김복현
+김상권
+김영춘
+김규훈
+김삼우
+김성환
+김영춘
+김성원
+김영출
+김상권
+김영출
+김성근
+김재동
+김근환
+김영출
+김상택
+김영국
+김재재
+김영출
+김현도
+김윤옥
+김호용
+김영출
+김만화
+김종완
+김우도
+김영칠
+김상순
+김영식
+김윤규
+김영태
+김한록
+김영자
+김병일
+김영태
+김상현
+김외모
+김분대
+김영택
+김영식
+김연옥
+김종찬
+김영택
+김월헌
+김말효
+김청천
+김영택
+김수정
+김규우
+김훈덕
+김영택
+김종태
+김호범
+김복용
+김영학
+김익오
+김상수
+김인규
+김영한
+김원관
+김성형
+김월길
+김영현
+김호기
+김금원
+김태수
+김영호
+김영구
+김재연
+김술원
+김영호
+김영환
+김효권
+김경근
+김영호
+김오규
+김점적
+김차환
+김영호
+김순식
+김소태
+김학술
+김영호
+김소우
+김재영
+김순섭
+김영호
+김현석
+김병술
+김종모
+김영호
+김종대
+김정철
+김현환
+김영호
+김충연
+김병현
+김판종
+김영호
+김성로
+김만철
+김영덕
+김영화
+김종우
+김 경
+김헌준
+김영환
+김갑순
+김재애
+김성만
+김영환
+김영조
+김인환
+김기일
+김영환
+김희영
+김광애
+김창정
+김영환
+김민경
+김봉환
+김장승
+김영환
+김정대
+김현숙
+김상배
+김영희
+김상세
+김정희
+김삼득
+김영희
+김종환
+김상부
+김일순
+김영희
+김 자
+김일석
+김석득
+김영희
+김용상
+김경석
+김소근
+김영희
+김규희
+김영장
+김재수
+김영희
+김진태
+김홍태
+김성두
+김오금
+김경철
+김정헌
+김성이
+김오기
+김득덕
+김재조
+김경석
+김오수
+김만희
+김정복
+김두재
+김오중
+김성종
+김성리
+김윤보
+김오중
+김태중
+김칠란
+김수화
+김오태
+김상길
+김재성
+김규기
+김오현
+김영순
+김지태
+김상환
+김옥남
+김충주
+김기준
+김진길
+김옥분
+김인한
+김기수
+김갑열
+김옥선
+김원향
+김대생
+김태원
+김옥선
+김석임
+김명헌
+김관세
+김옥선
+김봉규
+김영용
+김태우
+김옥수
+김한근
+김춘동
+김병태
+김옥순
+김낙명
+김중순
+김영교
+김옥순
+김태주
+김은석
+김일용
+김옥순
+김대학
+김승선
+김규호
+김옥순
+김태수
+김외이
+김한술
+김옥순
+김상헌
+김만영
+김재기
+김옥술
+김찬찬
+김희환
+김송연
+김옥연
+김선수
+김영호
+김광용
+김옥이
+김용목
+김진수
+김순춘
+김옥이
+김동영
+김규성
+김옥순
+김옥자
+김응희
+김재복
+김봉희
+김옥정
+김성락
+김 영
+김호성
+김옥중
+김헌환
+김석길
+김성준
+김옥천
+김상모
+김헌만
+김태수
+김완석
+김화구
+김학술
+김종자
+김완수
+김행태
+김규목
+김성기
+김완순
+김성대
+김순숙
+김경용
+김왕규
+김말숙
+김월열
+김종식
+김왕순
+김학태
+김봉옥
+김동암
+김외만
+김영진
+김재동
+김영조
+김외만
+김일기
+김병재
+김정빈
+김외분
+김인조
+김영연
+김순효
+김외상
+김덕승
+김은수
+김봉용
+김외생
+김영현
+김창화
+김원운
+김외수
+김금수
+김진석
+김수호
+김외순
+김말호
+김말용
+김진성
+김외순
+김소복
+김정식
+김만이
+김외술
+김용성
+김태식
+김주계
+김용갑
+김병선
+김금갑
+김철일
+김용겸
+김중훈
+김태현
+김영환
+김용구
+김계율
+김영연
+김승배
+김용국
+김종래
+김재기
+김덕성
+김용국
+김덕석
+김영수
+김일헌
+김용규
+김태철
+김종수
+김옥태
+김용규
+김판돌
+김규환
+김갑경
+김용규
+김성선
+김은수
+김정명
+김용균
+김정수
+김수일
+김홍규
+김용근
+김임부
+김석분
+김 호
+김용근
+김재득
+김홍식
+김동흠
+김용근
+김남근
+김용석
+김병하
+김용기
+김소호
+김효오
+김판종
+김용길
+김성황
+김두술
+김정배
+김용길
+김광국
+김태이
+김봉용
+김용남
+김현덕
+김선모
+김정근
+김용대
+김영태
+김준곤
+김순식
+김용대
+김태수
+김철열
+김춘덕
+김용덕
+김장순
+김외태
+김억수
+김용도
+김수석
+김동하
+김병천
+김용돌
+김종상
+김순근
+김임환
+김용동
+김병효
+김상규
+김중기
+김용득
+김기업
+김원현
+김해현
+김용만
+김종문
+김창식
+김금규
+김용만
+김종배
+김부호
+김태표
+김용문
+김병명
+김정원
+김만술
+김용배
+김옥희
+김해용
+김해현
+김용배
+김순덕
+김윤복
+김정연
+김용석
+김종환
+김병수
+김영택
+김용석
+김덕윤
+김기기
+김열용
+김용선
+김태옥
+김수교
+김순삼
+김용수
+김재태
+김영동
+김윤수
+김용수
+김응욱
+김옥순
+김종남
+김용수
+김상수
+김차란
+김석계
+김용수
+김종석
+김종현
+김종례
+김용수
+김삼석
+김종천
+김재우
+김용수
+김춘봉
+김영진
+김기정
+김용수
+김소흠
+김수래
+김창자
+김용수
+김승남
+김두동
+김 환
+김용술
+김경이
+김옥명
+김종탁
+김용술
+김명석
+김영구
+김수현
+김용식
+김연용
+김상환
+김재수
+김용식
+김재조
+김우희
+김병륜
+김용암
+김정호
+김서봉
+김동배
+김용암
+김병란
+김상선
+김병율
+김용운
+김정규
+김귀기
+김충숙
+김용운
+김무수
+김주팔
+김맹현
+김용운
+김정춘
+김성순
+김명환
+김용운
+김정흠
+김영우
+김의덕
+김용윤
+김진조
+김수갑
+김영각
+김용이
+김정식
+김진영
+김학규
+김용익
+김재호
+김동준
+김도용
+김용자
+김학용
+김춘하
+김희완
+김용전
+김성완
+김재원
+김태열
+김용주
+김현근
+김성순
+김선자
+김용주
+김석조
+김해용
+김억석
+김용준
+김윤영
+김성재
+김영지
+김용준
+김달교
+김영수
+김정겸
+김용철
+김재광
+김성훈
+김인환
+김용철
+김수식
+김윤철
+김중목
+김용철
+김차조
+김을섭
+김수수
+김용출
+김영섭
+김병조
+김만호
+김용출
+김창준
+김정윤
+김영덕
+김용택
+김한조
+김용수
+김이술
+김용택
+김형학
+김광식
+김재자
+김용판
+김종원
+김종길
+김동호
+김용학
+김성칙
+김무실
+김영성
+김용해
+김순수
+김명탁
+김상맹
+김용현
+김재향
+김영윤
+김석규
+김용호
+김종만
+김동악
+김철섭
+김용화
+김화수
+김해식
+김복언
+김용화
+김마환
+김용춘
+김병분
+김용화
+김무경
+김경동
+김을균
+김용환
+김재경
+김성선
+김갑호
+김용환
+김수완
+김세안
+김두희
+김용환
+김동우
+김희곤
+김성윤
+김용환
+김인식
+김남애
+김원암
+김용회
+김타근
+김영숙
+김항영
+김우견
+김윤복
+김석성
+김인태
+김우곤
+김명용
+김세진
+김순석
+김우금
+김재도
+김상기
+김형노
+김우기
+김다우
+김병용
+김춘이
+김우석
+김학화
+김명부
+김종덕
+김우수
+김재길
+김옥수
+김갑곤
+김우식
+김홍락
+김경자
+김호래
+김우식
+김정록
+김삼조
+김상수
+김우연
+김삼조
+김달순
+김정동
+김우종
+김재운
+김주호
+김병동
+김우중
+김인규
+김병권
+김무환
+김우찬
+김유열
+김현영
+김승식
+김우철
+김주도
+김봉기
+김재천
+김우한
+김복호
+김종완
+김지모
+김우현
+김병희
+김수국
+김주재
+김우현
+김경상
+김상기
+김재곤
+김우환
+김종묘
+김홍운
+김상태
+김우희
+김종호
+김성평
+김의규
+김욱생
+김도분
+김국봉
+김성식
+김욱창
+김진자
+김중만
+김기호
+김운길
+김채순
+김영만
+김춘윤
+김운남
+김천연
+김해근
+김인순
+김운배
+김기래
+김임수
+김동원
+김운세
+김상달
+김재설
+김옥준
+김운식
+김창근
+김문근
+김운숙
+김운식
+김병녀
+김태훈
+김창기
+김운우
+김희명
+김정원
+김선은
+김운우
+김순열
+김영찬
+김용임
+김운조
+김영신
+김영례
+김균일
+김운태
+김광노
+김성욱
+김도수
+김운호
+김근길
+김강호
+김근규
+김원곤
+김소호
+김현균
+김재순
+김원규
+김오영
+김만희
+김상순
+김원기
+김소칠
+김근수
+김수복
+김원길
+김몽종
+김태구
+김종수
+김원도
+김순숙
+김도우
+김노수
+김원돌
+김광수
+김재용
+김태일
+김원상
+김미자
+김상우
+김철일
+김원석
+김복헌
+김승열
+김삼덕
+김원석
+김우환
+김옥선
+김광호
+김원수
+김현술
+김태선
+김용상
+김원식
+김한현
+김소관
+김특수
+김원식
+김찬곤
+김하학
+김술수
+김원억
+김성갑
+김대일
+김정용
+김원용
+김정익
+김수문
+김임원
+김원출
+김창근
+김례균
+김남식
+김원태
+김종희
+김은중
+김영구
+김원포
+김용용
+김상순
+김규길
+김원호
+김춘출
+김옥조
+김성옥
+김원호
+김춘국
+김성한
+김규휴
+김월생
+김창기
+김정현
+김재원
+김월선
+김효열
+김영환
+김점익
+김월순
+김은갑
+김병리
+김경택
+김월순
+김정호
+김성규
+김주호
+김월악
+김순자
+김제걸
+김상연
+김월조
+김종만
+김만범
+김성수
+김월화
+김대돈
+김소명
+김월구
+김월화
+김영석
+김효갑
+김남도
+김위영
+김의수
+김백야
+김순순
+김유곤
+김우래
+김말조
+김재욱
+김유금
+김남연
+김규복
+김현호
+김유식
+김철재
+김칠남
+김태호
+김유식
+김순호
+김상권
+김재복
+김윤건
+김재철
+김윤호
+김표옥
+김윤건
+김정선
+김귀란
+김정옥
+김윤광
+김홍배
+김병화
+김광순
+김윤기
+김홍태
+김종철
+김 석
+김윤덕
+김성용
+김호호
+김달혁
+김윤돌
+김달식
+김경희
+김철규
+김윤동
+김규례
+김판순
+김보근
+김윤미
+김의수
+김경남
+김상분
+김윤배
+김효성
+김승소
+김정화
+김윤복
+김현영
+김원국
+김재영
+김윤석
+김대철
+김상재
+김용태
+김윤선
+김상연
+김경선
+김광숙
+김윤선
+김용철
+김영자
+김 원
+김윤선
+김노이
+김성곤
+김병기
+김윤섬
+김영숙
+김세담
+김태기
+김윤섭
+김미원
+김순우
+김대숙
+김윤수
+김사범
+김서권
+김태석
+김윤수
+김경용
+김미일
+김교열
+김윤식
+김정순
+김종조
+김상웅
+김윤식
+김갑숙
+김하화
+김세문
+김윤식
+김성열
+김수수
+김재상
+김윤식
+김해훈
+김태연
+김영태
+김윤옥
+김복현
+김병국
+김병식
+김윤원
+김수욱
+김민옥
+김석도
+김윤자
+김병용
+김춘희
+김시호
+김윤자
+김일모
+김영동
+김차회
+김윤자
+김영석
+김성열
+김추이
+김윤자
+김금연
+김태철
+김태늠
+김윤점
+김진원
+김병근
+김향현
+김윤종
+김진철
+김병갑
+김현찬
+김윤천
+김진숙
+김동병
+김택호
+김윤태
+김진웅
+김말수
+김용석
+김윤택
+김재열
+김판교
+김춘춘
+김윤택
+김수권
+김찬술
+김영환
+김윤하
+김점윤
+김운섭
+김재수
+김윤하
+김선재
+김헌호
+김일수
+김윤하
+김칠남
+김영문
+김일점
+김윤하
+김대웅
+김욱웅
+김종선
+김윤호
+김경주
+김광택
+김성영
+김윤호
+김미탁
+김미현
+김복동
+김은기
+김봉현
+김홍수
+김해열
+김은동
+김우기
+김삼희
+김훈도
+김은례
+김성재
+김 영
+김석균
+김은수
+김정식
+김갑수
+김상학
+김은숙
+김주수
+김쌍봉
+김기봉
+김은숙
+김영학
+김팽현
+김순애
+김은식
+김재봉
+김강기
+김경만
+김은아
+김복익
+김숙순
+김순정
+김은옥
+김점의
+김상열
+김성근
+김은이
+김상주
+김병희
+김병모
+김은재
+김태현
+김병열
+김진식
+김은정
+김화식
+김영훈
+김정자
+김은주
+김영희
+김동기
+김태숙
+김은진
+김윤용
+김숙식
+김천순
+김은희
+김태연
+김용이
+김금상
+김은희
+김정수
+김종교
+김성선
+김을규
+김재빈
+김교학
+김영채
+김을성
+김영수
+김준호
+김순후
+김을수
+김준연
+김용차
+김부숙
+김을수
+김호우
+김기순
+김삼만
+김을임
+김원석
+김원순
+김옥조
+김을준
+김고만
+김달동
+김동옥
+김응권
+김규열
+김호덕
+김동민
+김응권
+김원임
+김영용
+김종대
+김응도
+김광노
+김명호
+김인도
+김응돌
+김준환
+김운재
+김상기
+김응렬
+김재완
+김진이
+김병원
+김응무
+김영숙
+김병영
+김정희
+김의건
+김병달
+김윤순
+김현헌
+김의근
+김재훈
+김강석
+김필한
+김의근
+김상호
+김치출
+김진우
+김의수
+김재조
+김동환
+김청조
+김의수
+김종호
+김경성
+김춘이
+김의일
+김재숙
+김은복
+김성희
+김의정
+김춘영
+김상상
+김우길
+김의현
+김정생
+김중열
+김영석
+김이근
+김장주
+김환목
+김복이
+김이동
+김기득
+김창규
+김정극
+김이수
+김정관
+김재수
+김일연
+김인국
+김금만
+김문자
+김재흥
+김인규
+김승석
+김순호
+김상정
+김인규
+김덕달
+김차일
+김경우
+김인덕
+김병정
+김준두
+김석호
+김인배
+김기도
+김태용
+김두영
+김인섭
+김채문
+김국기
+김현석
+김인수
+김은자
+김준수
+김태준
+김인수
+김곤보
+김의경
+김춘웅
+김인수
+김정희
+김점주
+김영열
+김인수
+김명칠
+김종용
+김재우
+김인숙
+김철은
+김영선
+김명선
+김인식
+김길교
+김상철
+김순례
+김인재
+김장상
+김상옥
+김상순
+김인주
+김완일
+김선상
+김순호
+김인탁
+김대추
+김상삼
+김헌술
+김인태
+김영식
+김동택
+김 원
+김인태
+김필석
+김광교
+김재암
+김인택
+김동정
+김일택
+김정술
+김인혁
+김이갑
+김찬태
+김혜준
+김인현
+김용윤
+김수수
+김병선
+김인호
+김주웅
+김광헌
+김영열
+김인환
+김만철
+김순호
+김재원
+김인회
+김수암
+김홍호
+김효철
+김일곤
+김정주
+김장식
+김주현
+김일곤
+김갑구
+김해영
+김학열
+김일규
+김소우
+김상규
+김영분
+김일년
+김수귀
+김정분
+김재순
+김일두
+김 칠
+김태영
+김상일
+김일만
+김영기
+김재수
+김근노
+김일봉
+김병복
+김유순
+김곡리
+김일봉
+김귀이
+김상우
+김기근
+김일석
+김영조
+김정수
+김도식
+김일수
+김태화
+김성조
+김삼호
+김일수
+김웅식
+김성웅
+김부한
+김일순
+김천탁
+김명인
+김재성
+김일술
+김득성
+김현주
+김수식
+김일용
+김태철
+김희연
+김현순
+김일용
+김왕호
+김운태
+김우남
+김일웅
+김근길
+김달술
+김귀근
+김일태
+김재길
+김용경
+김준열
+김일태
+김수순
+김홍호
+김정선
+김일해
+김영철
+김영목
+김대노
+김일호
+김영수
+김쌍호
+김낙용
+김일호
+김승남
+김재순
+김경경
+김일홍
+김성숙
+김선철
+김영대
+김일화
+김고균
+김판훈
+김근금
+김일환
+김정열
+김화수
+김준수
+김일환
+김병흔
+김기이
+김종남
+김일희
+김현호
+김지률
+김강기
+김일희
+김태천
+김만영
+김문희
+김임곤
+김상희
+김외식
+김칠용
+김임순
+김 선
+김조현
+김미호
+김임주
+김복성
+김성수
+김경관
+김자근검
+김부진기
+김매유규
+김정수오
+김자희
+김성열
+김경남
+김금호
+김장배
+김세희
+김영호
+김인근
+김장보
+김유재
+김옥도
+김현관
+김장옥
+김경식
+김인년
+김은섭
+김장원
+김철완
+김학식
+김제귀
+김장원
+김복호
+김영열
+김기석
+김장환
+김재향
+김순수
+김유섭
+김장희
+김운범
+김영조
+김지하
+김재곤
+김춘조
+김우환
+김재복
+김재광
+김태열
+김강기
+김영호
+김재구
+김상섭
+김광건
+김상돈
+김재규
+김순태
+김완남
+김해홍
+김재규
+김근덕
+김병희
+김성기
+김재규
+김강주
+김정도
+김현연
+김재규
+김기용
+김춘자
+김석자
+김재균
+김삼구
+김민열
+김병술
+김재근
+김신진
+김재원
+김용길
+김재남
+김수애
+김건덕
+김상남
+김재남
+김두규
+김건화
+김판자
+김재대
+김천원
+김성규
+김태환
+김재덕
+김재우
+김성주
+김도용
+김재덕
+김중규
+김덕달
+김무주
+김재덕
+김인달
+김영호
+김의조
+김재덕
+김순근
+김재흠
+김영순
+김재도
+김원수
+김성원
+김태균
+김재도
+김성규
+김영원
+김창현
+김재동
+김창세
+김필상
+김영영
+김재득
+김우순
+김을균
+김임만
+김재만
+김용학
+김금식
+김한환
+김재만
+김상호
+김상수
+김상환
+김재만
+김선웅
+김영회
+김이조
+김재문
+김병승
+김창열
+김성웅
+김재복
+김희호
+김호철
+김규정
+김재봉
+김동수
+김태태
+김재식
+김재생
+김명근
+김정권
+김규용
+김재석
+김진호
+김병용
+김대성
+김재선
+김석호
+김해조
+김재진
+김재섭
+김명묵
+김문성
+김판진
+김재수
+김영도
+김용곤
+김주조
+김재수
+김재옥
+김상민
+김윤호
+김재수
+김태한
+김문진
+김학권
+김재수
+김호흠
+김병봉
+김대섭
+김재수
+김무규
+김위철
+김해암
+김재순
+김은숙
+김춘이
+김남설
+김재식
+김동수
+김금원
+김영근
+김재양
+김은증
+김소열
+김재수
+김재연
+김정기
+김태용
+김정현
+김재연
+김수석
+김영석
+김영삼
+김재열
+김지석
+김진숙
+김용용
+김재열
+김도범
+김재수
+김 이
+김재열
+김외훈
+김금범
+김경석
+김재영
+김병화
+김홍완
+김충상
+김재영
+김영규
+김무대
+김옥길
+김재영
+김채녀
+김태형
+김수곤
+김재옥
+김윤원
+김성숙
+김경석
+김재옥
+김성철
+김광숙
+김영선
+김재용
+김윤선
+김대근
+김효현
+김재용
+김완열
+김순록
+김용호
+김재용
+김복열
+김기권
+김상섭
+김재용
+김성범
+김이량
+김옥정
+김재우
+김경완
+김호교
+김상열
+김재원
+김영회
+김성조
+김경태
+김재원
+김복정
+김상남
+김순환
+김재일
+김상웅
+김치호
+김재희
+김재임
+김종호
+김돈기
+김병주
+김재전
+김재식
+김용옥
+김삼교
+김재철
+김애출
+김희홍
+김상석
+김재철
+김수태
+김원구
+김헌권
+김재청
+김종하
+김근운
+김명식
+김재학
+김용순
+김점교
+김홍용
+김재한
+김한기
+김동수
+김학도
+김재현
+김민용
+김종진
+김동진
+김재현
+김장길
+김달근
+김임완
+김재현
+김영선
+김경수
+김동득
+김재현
+김형수
+김범준
+김시태
+김재호
+김금관
+김봉환
+김성숙
+김재호
+김실재
+김동선
+김춘열
+김재호
+김일순
+김승현
+김남연
+김재홍
+김효옥
+김봉곤
+김강수
+김재홍
+김태영
+김미호
+김재진
+김재화
+김정우
+김윤두
+김기우
+김재화
+김충연
+김성섭
+김영윤
+김재화
+김종규
+김옥정
+김원선
+김재환
+김종태
+김종호
+김진종
+김재환
+김천호
+김 덕
+김정길
+김재환
+김진년
+김점순
+김일용
+김재환
+김원영
+김경규
+김경출
+김재환
+김재선
+김희우
+김종갑
+김재후
+김서이
+김이이
+김지균
+김재후
+김혜홍
+김 환
+김선완
+김재훅
+김회용
+김수주
+김수호
+김재훈
+김정보
+김경수
+김재숙
+김재훈
+김광도
+김정경
+김종경
+김재희
+김정현
+김국현
+김범희
+김적환
+김병언
+김병술
+김재원
+김전균
+김경선
+김선실
+김병인
+김전기
+김재근
+김영진
+김병이
+김점근
+김영섭
+김분채
+김경석
+김점남
+김기선
+김운철
+김만용
+김점돌
+김명우
+김천환
+김용희
+김점례
+김대재
+김덕분
+김만순
+김점만
+김복태
+김용남
+김외구
+김점봉
+김윤순
+김응환
+김원영
+김점생
+김 표
+김남용
+김삼곤
+김점수
+김 이
+김무익
+김광기
+김점수
+김인식
+김주진
+김업련
+김점숙
+김영현
+김태옥
+김덕수
+김점순
+김차욱
+김승학
+김상섭
+김점순
+김인만
+김만수
+김윤영
+김점술
+김일자
+김금원
+김운주
+김점술
+김점술
+김남만
+김성준
+김점옥
+김동연
+김수환
+김태선
+김점자
+김상환
+김만태
+김동숙
+김점철
+김성조
+김명남
+김경례
+김점출
+김창순
+김만용
+김성택
+김점팔
+김춘록
+김동교
+김용화
+김점호
+김만달
+김홍식
+김영현
+김점환
+김병율
+김인선
+김주보
+김정강
+김희룡
+김용재
+김병민
+김정강
+김채열
+김건기
+김종동
+김정건
+김남배
+김원진
+김태기
+김정건
+김정란
+김인자
+김태환
+김정고
+김중석
+김간규
+김성수
+김정권
+김정곤
+김을남
+김준웅
+김정권
+김석웅
+김기우
+김효황
+김정규
+김교한
+김성석
+김홍영
+김정규
+김술숙
+김근수
+김세우
+김정근
+김봉식
+김종연
+김정휴
+김정근
+김수택
+김정기
+김용윤
+김정근
+김진용
+김영근
+김태출
+김정기
+김병희
+김동도
+김숙주
+김정길
+김우름
+김원훈
+김재도
+김정길
+김용철
+김홍수
+김용호
+김정남
+김해섭
+김응기
+김욱주
+김정대
+김연채
+김인철
+김미택
+김정대
+김종훈
+김상동
+김원순
+김정덕
+김의조
+김순곤
+김준제
+김정도
+김오규
+김정준
+김선철
+김정동
+김성준
+김삼수
+김천환
+김정득
+김한양
+김성곤
+김영생
+김정득
+김윤곤
+김동순
+김창수
+김정득
+김성석
+김병호
+김수훈
+김정락
+김연쇄
+김승영
+김형대
+김정록
+김영숙
+김종상
+김병태
+김정묵
+김은인
+김영고
+김재학
+김정문
+김규현
+김인수
+김권지
+김정미
+김달상
+김재양
+김명수
+김정민
+김기랑
+김정식
+김선근
+김정배
+김중석
+김종수
+김성규
+김정범
+김성조
+김영창
+김희구
+김정범
+김영원
+김사근
+김태국
+김정복
+김종우
+김성길
+김인기
+김정봉
+김재규
+김정순
+김일택
+김정봉
+김웅식
+김재윤
+김성식
+김정부
+김옥수
+김점남
+김정구
+김정부
+김무자
+김영호
+김갑국
+김정부
+김경권
+김명수
+김규우
+김정빈
+김만규
+김상정
+김경순
+김정상
+김재균
+김병열
+김순택
+김정생
+김이환
+김종구
+김기현
+김정석
+김태수
+김원식
+김원봉
+김정선
+김재정
+김인갑
+김진흠
+김정선
+김달선
+김봉엽
+김수섭
+김정선
+김태순
+김황현
+김영주
+김정수
+김범래
+김 이
+김지숙
+김정수
+김삼자
+김중석
+김사수
+김정수
+김석권
+김옥연
+김인숙
+김정수
+김한일
+김정혜
+김영천
+김정수
+김규연
+김정명
+김종암
+김정수
+김병호
+김소남
+김종삼
+김정수
+김탁진
+김경원
+김광욱
+김정숙
+김철희
+김영호
+김석권
+김정숙
+김봉상
+김충보
+김정철
+김정숙
+김종철
+김채재
+김준석
+김정순
+김용모
+김정택
+김운도
+김정순
+김병이
+김운준
+김중호
+김정순
+김성운
+김출수
+김상년
+김정순
+김대철
+김 목
+김용운
+김정순
+김월순
+김영순
+김장민
+김정순
+김종애
+김우출
+김을학
+김정술
+김태향
+김광수
+김윤주
+김정식
+김옥열
+김재기
+김인옥
+김정애
+김연영
+김은일
+김병한
+김정애
+김노진
+김재구
+김태열
+김정양
+김용성
+김숙귀
+김한식
+김정연
+김향엽
+김헌호
+김필구
+김정열
+김종열
+김수연
+김옥선
+김정열
+김성희
+김종태
+김상순
+김정열
+김남식
+김위훈
+김하춘
+김정오
+김상현
+김상순
+김진홍
+김정옥
+김도희
+김만헌
+김금만
+김정옥
+김부기
+김봉균
+김성효
+김정용
+김정열
+김상규
+김양악
+김정우
+김태수
+김태목
+김석수
+김정웅
+김용용
+김기원
+김타호
+김정윤
+김봉술
+김차구
+김창운
+김정은
+김명근
+김경식
+김재리
+김정이
+김대순
+김경연
+김영수
+김정이
+김판근
+김종석
+김경기
+김정일
+김달만
+김용수
+김수호
+김정자
+김인우
+김승도
+김순영
+김정재
+김경원
+김경미
+김우운
+김정차
+김성경
+김혁호
+김 유
+김정차
+김금석
+김재흥
+김판권
+김정출
+김성성
+김풍병
+김순용
+김정치
+김동진
+김재연
+김수현
+김정태
+김삼재
+김봉준
+김석희
+김정태
+김상수
+김동열
+김삼화
+김정태
+김양갑
+김화미
+김진호
+김정학
+김옥암
+김덕덕
+김대익
+김정학
+김정현
+김대환
+김병복
+김정헌
+김정창
+김병돌
+김관화
+김정호
+김운현
+김점덕
+김심연
+김정호
+김영복
+김현목
+김정홍
+김정호
+김정련
+김재태
+김수임
+김정호
+김상태
+김재기
+김상영
+김정호
+김병준
+김정용
+김종일
+김정호
+김중덕
+김호웅
+김현탁
+김정호
+김종배
+김광명
+김관윤
+김정호
+김주호
+김대용
+김영환
+김정호
+김경영
+김석석
+김만원
+김정호
+김태환
+김인돈
+김갑섭
+김정홍
+김만식
+김상정
+김원영
+김정화
+김재웅
+김창선
+김석철
+김정화
+김종준
+김재한
+김점현
+김정환
+김인식
+김영현
+김순국
+김정환
+김홍봉
+김중열
+김정한
+김정환
+김덕호
+김병교
+김진수
+김정환
+김평병
+김말성
+김황호
+김정환
+김석생
+김종수
+김신철
+김정환
+김춘숙
+김길석
+김재기
+김정환
+김명돌
+김희규
+김일숙
+김정환
+김남헌
+김경훈
+김정성
+김정훈
+김은언
+김승승
+김정오
+김정흠
+김원환
+김윤덕
+김일술
+김정희
+김영덕
+김봉이
+김경식
+김정희
+김준용
+김경주
+김남갑
+김정희
+김이호
+김동현
+김도곤
+김정희
+김종원
+김혜국
+김일호
+김정희
+김재용
+김윤수
+김외팔
+김정희
+김순숙
+김태동
+김점석
+김제기
+김경옥
+김승훈
+김말희
+김제원
+김외춘
+김성철
+김재수
+김제천
+김수덕
+김복화
+김춘현
+김제현
+김점식
+김태조
+김화호
+김제흠
+김대준
+김기석
+김희길
+김제흠
+김세출
+김용돌
+김세호
+김조웅
+김형일
+김귀태
+김무경
+김종갑
+김종섭
+김상구
+김명희
+김종결
+김영경
+김기수
+김충목
+김종경
+김상대
+김태석
+김음려
+김종광
+김병용
+김정운
+김쾌봉
+김종구
+김옥일
+김진우
+김대채
+김종구
+김재식
+김순대
+김석이
+김종구
+김계학
+김순권
+김상숙
+김종구
+김종록
+김두조
+김경규
+김종구
+김구식
+김영현
+김묘재
+김종구
+김월조
+김소팔
+김영환
+김종구
+김위덕
+김춘자
+김옥규
+김종규
+김석웅
+김원향
+김영만
+김종규
+김진원
+김점근
+김유수
+김종규
+김원윤
+김점길
+김정원
+김종규
+김태출
+김수환
+김경호
+김종균
+김태재
+김환선
+김정호
+김종근
+김기우
+김을천
+김재열
+김종기
+김영복
+김득수
+김대덕
+김종길
+김종근
+김현상
+김현현
+김종길
+김해열
+김동대
+김석구
+김종길
+김낙성
+김금권
+김갑인
+김종길
+김사식
+김중화
+김명식
+김종달
+김재표
+김오립
+김차식
+김종달
+김진훈
+김강치
+김덕현
+김종대
+김한식
+김인호
+김병훈
+김종대
+김연대
+김상돌
+김경선
+김종덕
+김판호
+김세우
+김용석
+김종래
+김석동
+김상금
+김차현
+김종립
+김재상
+김종화
+김만임
+김종만
+김일기
+김강홍
+김경진
+김종만
+김현태
+김복식
+김정도
+김종만
+김장남
+김종이
+김우홍
+김종배
+김소근
+김의용
+김기수
+김종배
+김상정
+김칠식
+김용숙
+김종백
+김호수
+김재호
+김을계
+김종범
+김부용
+김복락
+김기수
+김종범
+김형주
+김윤이
+김규철
+김종복
+김진숙
+김종우
+김천말
+김종복
+김영석
+김상우
+김월구
+김종복
+김종흠
+김경주
+김인호
+김종복
+김성휴
+김상한
+김희연
+김종복
+김종경
+김두기
+김종혁
+김종봉
+김준주
+김기권
+김상영
+김종석
+김태세
+김정숙
+김도호
+김종석
+김만희
+김연권
+김희태
+김종석
+김재덕
+김봉분
+김문선
+김종선
+김병석
+김기구
+김헌섭
+김종선
+김덕근
+김태대
+김미일
+김종성
+김희원
+김태숙
+김인석
+김종성
+김무재
+김상강
+김원옥
+김종수
+김희진
+김득수
+김명균
+김종수
+김금봉
+김무순
+김병만
+김종수
+김철홍
+김옥진
+김명태
+김종수
+김한규
+김진규
+김차채
+김종순
+김수십
+김재희
+김윤천
+김종식
+김면덕
+김현소
+김환수
+김종식
+김영웅
+김춘임
+김성환
+김종십
+김상철
+김봉복
+김재이
+김종억
+김문운
+김만현
+김차호
+김종연
+김성태
+김희덕
+김영원
+김종연
+김칠식
+김학은
+김덕찬
+김종열
+김홍대
+김문광
+김도천
+김종엽
+김인남
+김필영
+김소조
+김종영
+김문식
+김말수
+김무근
+김종오
+김민근
+김윤판
+김영준
+김종욱
+김화일
+김재선
+김오영
+김종운
+김순표
+김건권
+김종춘
+김종원
+김규순
+김중욱
+김상영
+김종원
+김홍암
+김우길
+김근만
+김종원
+김화생
+김세탁
+김필규
+김종윤
+김대병
+김철정
+김기용
+김종율
+김광영
+김상대
+김갑구
+김종이
+김성기
+김숙순
+김상이
+김종이
+김상효
+김본길
+김현권
+김종일
+김태석
+김득효
+김득희
+김종조
+김호입
+김현덕
+김치만
+김종진
+김순주
+김태정
+김필호
+김종진
+김범문
+김병원
+김용호
+김종철
+김정화
+김정호
+김종철
+김종철
+김덕화
+김순인
+김창덕
+김종철
+김준숙
+김대득
+김점조
+김종태
+김영순
+김종조
+김만석
+김종태
+김순진
+김기갑
+김일순
+김종태
+김영우
+김호경
+김의옥
+김종태
+김주구
+김승식
+김칠근
+김종태
+김채천
+김수수
+김상제
+김종태
+김치남
+김동구
+김동용
+김종태
+김태봉
+김천상
+김송경
+김종하
+김영분
+김규악
+김삼현
+김종학
+김병영
+김용원
+김정영
+김종학
+김유이
+김식태
+김정연
+김종한
+김용자
+김진임
+김환영
+김종해
+김현찬
+김규식
+김영양
+김종현
+김휘완
+김인정
+김길남
+김종현
+김봉훈
+김헌기
+김갑령
+김종호
+김재식
+김재경
+김홍환
+김종호
+김상석
+김도규
+김원결
+김종호
+김의원
+김차수
+김구호
+김종화
+김현중
+김기립
+김일삼
+김종화
+김봉중
+김만웅
+김수학
+김종환
+김세엽
+김재덕
+김해조
+김종환
+김말필
+김동섭
+김용성
+김종훈
+김이영
+김일순
+김상수
+김종흠
+김용근
+김월식
+김창길
+김종희
+김우출
+김모숙
+김용선
+김주갑
+김중용
+김현홍
+김태겸
+김주덕
+김재범
+김진덕
+김의노
+김주복
+김대자
+김종란
+김봉희
+김주봉
+김승환
+김익수
+김수진
+김주상
+김귀철
+김원양
+김계이
+김주상
+김진현
+김삼수
+김영경
+김주석
+김동우
+김종선
+김월선
+김주석
+김석근
+김일환
+김미자
+김주성
+김선용
+김근연
+김구용
+김주순
+김동태
+김재권
+김월규
+김주인
+김시봉
+김호표
+김중재
+김주일
+김종연
+김용수
+김창석
+김주태
+김운희
+김종태
+김일철
+김주택
+김석분
+김인조
+김원진
+김주하
+김석영
+김태식
+김 우
+김주학
+김상호
+김영훈
+김인목
+김주현
+김호희
+김병호
+김삼래
+김주호
+김덕조
+김용수
+김하찬
+김주환
+김정도
+김주생
+김숙수
+김주흠
+김질이
+김명휘
+김일대
+김죽선
+김유일
+김말학
+김학구
+김준곤
+김휘상
+김 덕
+김용동
+김준규
+김창이
+김영로
+김지립
+김준기
+김삼련
+김시식
+김원원
+김준보
+김청현
+김용율
+김남수
+김준식
+김판석
+김재아
+김정일
+김준식
+김훈준
+김상진
+김종정
+김준연
+김순석
+김정정
+김호건
+김준영
+김판호
+김해호
+김경철
+김준우
+김상식
+김윤열
+김해태
+김준웅
+김석규
+김갑덕
+김종영
+김준자
+김종수
+김상도
+김명곤
+김준철
+김현순
+김휘가
+김윤웅
+김준택
+김무호
+김학호
+김태자
+김준택
+김한홍
+김은권
+김상철
+김준호
+김영일
+김중등
+김현선
+김준호
+김용남
+김종순
+김용이
+김준호
+김윤연
+김상만
+김하상
+김준환
+김성원
+김한현
+김병경
+김중건
+김점기
+김성환
+김주희
+김중건
+김경섭
+김재수
+김동조
+김중광
+김금휴
+김성현
+김연득
+김중근
+김동열
+김원수
+김광현
+김중기
+김한화
+김순수
+김상혁
+김중련
+김영순
+김외호
+김유상
+김중련
+김응순
+김준화
+김상식
+김중석
+김동운
+김상윤
+김국환
+김중수
+김상득
+김운억
+김수광
+김중수
+김규실
+김금덕
+김홍성
+김중원
+김상호
+김성우
+김철호
+김중일
+김효배
+김외렬
+김숙태
+김중자
+김동호
+김대호
+김인택
+김중현
+김영기
+김계호
+김경수
+김중혜
+김우열
+김명호
+김기곤
+김중희
+김점석
+김희용
+김분창
+김증숙
+김차득
+김을현
+김갑애
+김증순
+김수채
+김병노
+김도태
+김증준
+김원수
+김영환
+김애제
+김지근
+김용오
+김천석
+김한종
+김지봉
+김순원
+김상호
+김효근
+김지봉
+김선자
+김태호
+김영일
+김지승
+김승식
+김승용
+김현묵
+김지애
+김귀용
+김한영
+김학원
+김지연
+김성희
+김종갑
+김성국
+김지현
+김재수
+김종표
+김병술
+김지혜
+김인동
+김춘암
+김홍현
+김지희
+김태원
+김삼화
+김명희
+김진경
+김동조
+김복심
+김용홍
+김진곤
+김연현
+김용수
+김용권
+김진곤
+김 옥
+김순식
+김기수
+김진곤
+김선자
+김선호
+김만순
+김진구
+김태일
+김철원
+김정일
+김진권
+김문재
+김은근
+김연형
+김진권
+김규권
+김재화
+김정호
+김진규
+김춘식
+김영순
+김혜관
+김진규
+김재장
+김형현
+김병호
+김진규
+김상조
+김진숙
+김미현
+김진기
+김점자
+김남이
+김등출
+김진대
+김두생
+김풍야
+김병점
+김진대
+김홍욱
+김근철
+김두순
+김진동
+김경숙
+김원진
+김동호
+김진동
+김병수
+김은조
+김환태
+김진동
+김우득
+김상순
+김태동
+김진록
+김철림
+김성준
+김천갑
+김진배
+김순목
+김태철
+김성웅
+김진석
+김기헌
+김정태
+김재돌
+김진석
+김택향
+김종일
+김대일
+김진섭
+김쾌일
+김재도
+김정관
+김진섭
+김후환
+김의하
+김상자
+김진수
+김영만
+김상선
+김원차
+김진수
+김용경
+김영제
+김일구
+김진숙
+김영현
+김종호
+김연주
+김진숙
+김말환
+김동춘
+김궁한
+김진술
+김태태
+김원상
+김경배
+김진식
+김우헌
+김성석
+김기우
+김진식
+김재열
+김재수
+김세종
+김진열
+김상식
+김기득
+김일동
+김진영
+김규수
+김정규
+김영암
+김진영
+김이동
+김태식
+김기향
+김진오
+김성식
+김전기
+김원남
+김진용
+김미근
+김윤웅
+김승철
+김진우
+김영종
+김칠현
+김영수
+김진웅
+김태정
+김형복
+김병도
+김진일
+김정춘
+김인훈
+김채건
+김진종
+김인만
+김종수
+김연천
+김진주
+김진희
+김대이
+김창칠
+김진천
+김용희
+김찬웅
+김수주
+김진태
+김대훈
+김정수
+김점열
+김진태
+김병원
+김정순
+김영춘
+김진태
+김근열
+김재선
+김기강
+김진태
+김일견
+김일길
+김정영
+김진택
+김기탁
+김태순
+김원진
+김진학
+김주자
+김인태
+김재륜
+김진학
+김만정
+김해형
+김병무
+김진형
+김언진
+김수원
+김재일
+김진호
+김재돈
+김정호
+김종기
+김진호
+김홍철
+김재식
+김순남
+김진호
+김재환
+김익기
+김정호
+김진호
+김용용
+김구준
+김일규
+김진홍
+김정찬
+김사석
+김성태
+김진환
+김영오
+김수숙
+김태석
+김진효
+김 권
+김일환
+김성길
+김진희
+김소순
+김덕자
+김원선
+김진희
+김기학
+김재일
+김종구
+김진희
+김대운
+김태권
+김봉환
+김진희
+김수원
+김순봉
+김연술
+김질판
+김수돌
+김종권
+김광수
+김차노
+김석임
+김병용
+김종남
+김차봉
+김재건
+김갑연
+김재진
+김차석
+김영훈
+김순식
+김정두
+김차석
+김병호
+김시식
+김기심
+김차암
+김윤술
+김오제
+김청락
+김차암
+김일한
+김상환
+김은훈
+김차연
+김용수
+김상경
+김상율
+김차영
+김도해
+김규수
+김판희
+김차천
+김국조
+김숙규
+김삼관
+김차출
+김정돌
+김재동
+김한숙
+김차홍
+김완정
+김귀문
+김헌순
+김차희
+김춘호
+김낙철
+김수언
+김찬경
+김노섭
+김연기
+김태준
+김찬수
+김장욱
+김기재
+김묘환
+김창구
+김명호
+김정이
+김근태
+김창근
+김분석
+김춘숙
+김정철
+김창근
+김성수
+김경태
+김기극
+김창기
+김타식
+김봉녕
+김민삼
+김창기
+김수석
+김장득
+김윤규
+김창문
+김상배
+김선수
+김병희
+김창배
+김정식
+김창수
+김동순
+김창선
+김숙현
+김경철
+김영오
+김창성
+김상태
+김억기
+김기휴
+김창수
+김수환
+김병남
+김수철
+김창수
+김용호
+김태희
+김규효
+김창수
+김상준
+김승연
+김호암
+김창숙
+김병숙
+김상순
+김신근
+김창식
+김경식
+김건만
+김재수
+김창식
+김성준
+김장자
+김천연
+김창식
+김외아
+김석조
+김석수
+김창애
+김종동
+김남궁
+김원두
+김창억
+김용순
+김승배
+김정계
+김창억
+김병봉
+김우희
+김동현
+김창열
+김정호
+김재근
+김상환
+김창열
+김영욱
+김태만
+김정선
+김창열
+김명덕
+김기출
+김정한
+김창완
+김재재
+김을수
+김상분
+김창운
+김종을
+김영규
+김규호
+김창일
+김부순
+김상화
+김태춘
+김창진
+김백현
+김천규
+김영배
+김창태
+김정숙
+김준희
+김산규
+김창학
+김문문
+김판득
+김태철
+김창해
+김효호
+김휘호
+김옥규
+김창현
+김희택
+김정용
+김해교
+김창현
+김임옥
+김명호
+김철윤
+김창호
+김경준
+김성철
+김현수
+김창호
+김환수
+김병석
+김기규
+김창호
+김택진
+김정근
+김정수
+김창호
+김정학
+김형혁
+김중춘
+김창호
+김태현
+김금순
+김봉순
+김창호
+김상철
+김성덕
+김기인
+김창환
+김창길
+김남기
+김재태
+김채수
+김덕문
+김한복
+김실휴
+김채식
+김원기
+김상태
+김석환
+김천득
+김준숙
+김재연
+김원희
+김천석
+김영언
+김재수
+김행구
+김천수
+김봉희
+김두이
+김영분
+김천학
+김해균
+김영호
+김삼봉
+김천호
+김귀필
+김금복
+김정일
+김철기
+김순해
+김동란
+김종훈
+김철두
+김동수
+김상한
+김영득
+김철랑
+김춘완
+김선덕
+김인복
+김철수
+김인동
+김성빈
+김재교
+김철수
+김판현
+김권수
+김영정
+김철수
+김정중
+김수규
+김정열
+김철수
+김휘현
+김성석
+김경조
+김철수
+김상철
+김경숙
+김해춘
+김철수
+김장금
+김영동
+김태일
+김철정
+김사태
+김정준
+김지훈
+김청석
+김월희
+김상수
+김병길
+김추량
+김기목
+김재용
+김창형
+김추자
+김종록
+김희문
+김진식
+김추환
+김상현
+김기웅
+김경행
+김춘균
+김기연
+김사룡
+김주분
+김춘길
+김분옥
+김태순
+김병수
+김춘녀
+김재막
+김판섭
+김점영
+김춘배
+김판근
+김익석
+김세수
+김춘복
+김정오
+김순현
+김태식
+김춘생
+김중호
+김경철
+김재진
+김춘수
+김일률
+김남철
+김해순
+김춘식
+김숙호
+김혜출
+김영석
+김춘식
+김순섭
+김성득
+김인택
+김춘실
+김호호
+김재우
+김주옥
+김춘자
+김동한
+김봉조
+김상인
+김춘자
+김영동
+김규오
+김곡환
+김춘자
+김규명
+김홍갑
+김상양
+김춘하
+김경교
+김장준
+김봉준
+김춘하
+김동식
+김태선
+김순순
+김춘희
+김종철
+김용연
+김금훈
+김충권
+김치건
+김영자
+김양기
+김충남
+김영일
+김수미
+김주권
+김충부
+김재호
+김용수
+김광권
+김충원
+김승순
+김오상
+김석수
+김충원
+김상교
+김두업
+김윤봉
+김충헌
+김홍옥
+김호식
+김진태
+김충환
+김영길
+김칠수
+김판용
+김충훈
+김충철
+김선학
+김영근
+김충희
+김덕택
+김장기
+김동갑
+김치권
+김윤영
+김 태
+김중출
+김치권
+김다용
+김명일
+김경윤
+김치권
+김종기
+김영순
+김을영
+김치선
+김점연
+김장상
+김옥권
+김치일
+김상하
+김영근
+김동모
+김치훈
+김금배
+김차태
+김사숙
+김치휘
+김주자
+김창식
+김종균
+김칠동
+김지만
+김만석
+김정권
+김칠동
+김정기
+김동황
+김도휴
+김칠선
+김창수
+김명환
+김을춘
+김칠용
+김용수
+김진동
+김주열
+김칠용
+김광우
+김주출
+김석왕
+김칠홍
+김금희
+김석용
+김현영
+김칠희
+김구우
+김음동
+김옥상
+김쾌석
+김인식
+김평조
+김명섭
+김타원
+김일하
+김석호
+김영기
+김태곤
+김노태
+김점순
+김경환
+김태교
+김윤배
+김세덕
+김석현
+김태구
+김상창
+김용숙
+김정현
+김태구
+김윤덕
+김난원
+김희출
+김태권
+김경수
+김홍래
+김태경
+김태규
+김수동
+김상현
+김봉식
+김태근
+김영훈
+김덕걸
+김경상
+김태근
+김판조
+김석현
+김성구
+김태길
+김규철
+김언희
+김귄경
+김태길
+김창현
+김재기
+김진기
+김태도
+김영수
+김호석
+김신자
+김태돌
+김근성
+김용달
+김영준
+김태동
+김한분
+김성구
+김세수
+김태동
+김남기
+김성도
+김영선
+김태만
+김분구
+김영학
+김명상
+김태명
+김진로
+김봉순
+김종동
+김태문
+김재성
+김태철
+김천수
+김태복
+김광욱
+김재표
+김석선
+김태봉
+김동근
+김명진
+김경학
+김태석
+김헌운
+김순범
+김경태
+김태선
+김성남
+김인복
+김수구
+김태섭
+김만호
+김필호
+김학해
+김태섭
+김을명
+김우현
+김용재
+김태성
+김병근
+김성영
+김규열
+김태수
+김진준
+김점훈
+김정하
+김태수
+김수원
+김을수
+김열석
+김태수
+김원식
+김봉출
+김선식
+김태수
+김영수
+김운암
+김화배
+김태수
+김학호
+김재화
+김외혜
+김태수
+김진근
+김은수
+김국개
+김태숙
+김신정
+김영우
+김종구
+김태숙
+김을택
+김준희
+김진연
+김태순
+김병연
+김완선
+김외우
+김태순
+김기환
+김판완
+김영곤
+김태술
+김태선
+김성수
+김노용
+김태식
+김석석
+김복수
+김광호
+김태식
+김용문
+김영준
+김수암
+김태연
+김봉도
+김용윤
+김중열
+김태열
+김영준
+김순모
+김창일
+김태엽
+김국삼
+김진규
+김상옥
+김태영
+김규규
+김재철
+김인철
+김태영
+김송현
+김한진
+김응근
+김태영
+김성성
+김상준
+김갑휴
+김태오
+김무권
+김판임
+김영길
+김태용
+김진화
+김원산
+김무수
+김태용
+김병호
+김정화
+김우희
+김태용
+김용수
+김사기
+김기임
+김태용
+김정오
+김복조
+김명영
+김태욱
+김욱숙
+김수선
+김윤식
+김태운
+김동수
+김규자
+김재선
+김태원
+김덕기
+김석출
+김영홍
+김태원
+김지석
+김용식
+김영길
+김태원
+김희헌
+김경열
+김윤식
+김태원
+김병권
+김용희
+김진현
+김태유
+김성순
+김만학
+김종식
+김태육
+김달연
+김병식
+김성제
+김태율
+김영수
+김상덕
+김호영
+김태은
+김점기
+김상극
+김석봉
+김태의
+김인명
+김영국
+김진욱
+김태이
+김영말
+김두숙
+김기섭
+김태일
+김윤생
+김재대
+김상식
+김태일
+김인학
+김한길
+김정헌
+김태일
+김상준
+김광구
+김인화
+김태일
+김갑석
+김헌환
+김주순
+김태일
+김점영
+김상섭
+김태조
+김태정
+김정봉
+김태현
+김귀수
+김태조
+김갑석
+김주수
+김기태
+김태조
+김종준
+김영조
+김인해
+김태중
+김동일
+김원희
+김세수
+김태중
+김태한
+김원숙
+김만자
+김태지
+김봉록
+김임곤
+김재순
+김태진
+김도우
+김정식
+김태헌
+김태철
+김이관
+김봉수
+김병수
+김태철
+김말환
+김명수
+김재호
+김태철
+김종우
+김차태
+김종식
+김태철
+김대준
+김선호
+김태태
+김태출
+김윤목
+김석호
+김계준
+김태출
+김정실
+김태식
+김소준
+김태헌
+김현열
+김용송
+김상환
+김태현
+김종이
+김한열
+김영우
+김태형
+김윤성
+김규우
+김수현
+김태형
+김해재
+김순만
+김태석
+김태호
+김원원
+김성철
+김웅영
+김태호
+김송규
+김정우
+김상철
+김태호
+김선현
+김민환
+김원준
+김태호
+김상분
+김수덕
+김영임
+김태호
+김은문
+김영우
+김홍범
+김태호
+김정순
+김월주
+김옥업
+김태호
+김종출
+김호만
+김은근
+김태호
+김용정
+김병웅
+김영도
+김태호
+김대환
+김종암
+김상생
+김태호
+김동옥
+김용조
+김임선
+김태화
+김복준
+김난근
+김종암
+김태환
+김정화
+김수숙
+김의철
+김태환
+김지수
+김기봉
+김순호
+김태희
+김종경
+김영주
+김병기
+김태희
+김순수
+김동섭
+김원철
+김태희
+김금이
+김상순
+김삼도
+김판경
+김계식
+김삼배
+김오득
+김판규
+김송돈
+김순리
+김규기
+김판길
+김흥근
+김석두
+김병욱
+김판덕
+김문용
+김진석
+김순근
+김판돌
+김순현
+김희규
+김태성
+김판봉
+김종현
+김인자
+김남실
+김판석
+김옥호
+김효자
+김인성
+김판석
+김영향
+김경희
+김말열
+김판수
+김재석
+김성선
+김현근
+김판수
+김수규
+김종한
+김경수
+김판술
+김소열
+김점우
+김종란
+김판연
+김정환
+김명돌
+김쌍근
+김판열
+김주수
+김순식
+김진철
+김판용
+김재원
+김봉금
+김선조
+김판운
+김장원
+김근갑
+김윤주
+김판조
+김일년
+김태은
+김판중
+김판진
+김순암
+김광규
+김민용
+김판태
+김철생
+김영훈
+김갑집
+김판현
+김정교
+김종용
+김병정
+김판호
+김동호
+김금란
+김쌍주
+김팔곤
+김창동
+김재조
+김태만
+김팔봉
+김태우
+김국규
+김세대
+김표원
+김상대
+김상배
+김창림
+김필구
+김윤일
+김영순
+김익식
+김필연
+김경환
+김상석
+김세만
+김하석
+김춘호
+김인섭
+김무표
+김하조
+김정만
+김승병
+김규국
+김학권
+김광만
+김기인
+김규국
+김학기
+김운영
+김춘근
+김남환
+김학기
+김영기
+김황연
+김주문
+김학도
+김금태
+김옥권
+김순용
+김학봉
+김순덕
+김순현
+김을진
+김학봉
+김홍환
+김업생
+김해자
+김학봉
+김방춘
+김오권
+김기현
+김학석
+김은곤
+김명순
+김말철
+김학수
+김석영
+김홍환
+김병희
+김학우
+김종곤
+김헌희
+김현재
+김학우
+김만조
+김진연
+김성기
+김학윤
+김인석
+김갑근
+김희성
+김학이
+김종희
+김용순
+김봉식
+김학이
+김기수
+김재관
+김규식
+김학주
+김정용
+김철미
+김판희
+김한곤
+김현원
+김석범
+김칠호
+김한권
+김태갑
+김종영
+김판현
+김한규
+김근정
+김명이
+김해배
+김한규
+김정환
+김영용
+김광경
+김한기
+김금관
+김미태
+김형감
+김한도
+김귀준
+김호숙
+김영이
+김한배
+김해순
+김권웅
+김맹자
+김한석
+김덕수
+김영술
+김영학
+김한수
+김인규
+김영호
+김종순
+김한수
+김정철
+김태헌
+김두준
+김한수
+김상화
+김성탁
+김재걸
+김한수
+김영이
+김돈수
+김수성
+김한순
+김문호
+김윤조
+김계덕
+김한순
+김석조
+김재월
+김삼근
+김한식
+김형희
+김홍애
+김난해
+김한용
+김윤학
+김지길
+김수선
+김한조
+김종령
+김승철
+김경용
+김한종
+김정희
+김미희
+김병배
+김한중
+김중래
+김남곤
+김성순
+김한태
+김낙택
+김용화
+김옥규
+김한호
+김원일
+김만란
+김윤보
+김한홍
+김종애
+김윤정
+김대덕
+김한홍
+김운식
+김동암
+김인화
+김한희
+김갑보
+김종희
+김귀일
+김해곤
+김재주
+김영달
+김기출
+김해동
+김육한
+김성희
+김갑기
+김해림
+김상완
+김주석
+김태환
+김해봉
+김의조
+김한모
+김대호
+김해석
+김광준
+김석조
+김동호
+김해석
+김창현
+김민환
+김철복
+김해선
+김숙순
+김영권
+김양창
+김해수
+김원구
+김임환
+김창근
+김해수
+김대성
+김연길
+김화덕
+김해수
+김무기
+김해기
+김덕조
+김해연
+김순덕
+김의순
+김성자
+김해열
+김귀봉
+김인순
+김삼섭
+김해용
+김종고
+김성철
+김운호
+김해은
+김기규
+김호수
+김영훅
+김해은
+김신근
+김전규
+김기준
+김해은
+김세환
+김종동
+김오호
+김해정
+김병동
+김차수
+김귀균
+김해조
+김윤성
+김춘연
+김정호
+김해진
+김수근
+김태희
+김재곤
+김행순
+김성하
+김정수
+김경홍
+김향연
+김기명
+김정환
+김근철
+김향이
+김미환
+김정숙
+김용래
+김헌갑
+김황택
+김기화
+김용남
+김헌식
+김점식
+김혜건
+김순철
+김헌재
+김득연
+김규익
+김진대
+김헌태
+김영철
+김태봉
+김윤연
+김현기
+김명선
+김복인
+김기운
+김현기
+김태원
+김호홍
+김선열
+김현득
+김극경
+김환용
+김옥익
+김현래
+김의우
+김병조
+김달해
+김현묵
+김영준
+김경용
+김광출
+김현복
+김재용
+김덕현
+김희근
+김현석
+김호수
+김동룡
+김환철
+김현수
+김문운
+김동기
+김재순
+김현수
+김병장
+김재희
+김학철
+김현숙
+김순도
+김성영
+김우호
+김현숙
+김성만
+김준호
+김임규
+김현숙
+김갑봉
+김점규
+김종욱
+김현옥
+김상곤
+김재선
+김순문
+김현욱
+김중덕
+김맹술
+김정식
+김현웅
+김영재
+김달인
+김면배
+김현재
+김광규
+김상수
+김광수
+김현창
+김동대
+김정덕
+김하철
+김현철
+김달율
+김선암
+김재환
+김현철
+김홍현
+김덕석
+김운영
+김현철
+김영환
+김자이
+김정학
+김형구
+김영복
+김종숙
+김재조
+김형동
+김봉식
+김경륜
+김윤훈
+김형락
+김종운
+김정권
+김정수
+김형섭
+김상순
+김동호
+김기석
+김형수
+김헌이
+김영영
+김무민
+김형철
+김성우
+김종집
+김필숙
+김형태
+김대덕
+김성학
+김중원
+김형해
+김영곤
+김은규
+김정천
+김형희
+김종구
+김학기
+김명환
+김혜경
+김병자
+김병달
+김사숙
+김혜경
+김기군
+김성치
+김도은
+김혜경
+김강희
+김수백
+김규철
+김혜경
+김달문
+김병환
+김우정
+김혜숙
+김재동
+김영애
+김해우
+김혜영
+김일원
+김옥순
+김오권
+김혜자
+김점훈
+김민식
+김외권
+김호근
+김차선
+김종식
+김유봉
+김호기
+김성영
+김병희
+김병순
+김호룡
+김현철
+김재일
+김주철
+김호봉
+김세락
+김동헌
+김정자
+김호석
+김우옥
+김희이
+김용만
+김호성
+김철수
+김분배
+김영수
+김호야
+김경순
+김전순
+김상석
+김호용
+김용빈
+김복윤
+김유규
+김호용
+김병태
+김수선
+김연준
+김호인
+김상규
+김정진
+김기술
+김호일
+김문임
+김장청
+김태덕
+김호조
+김영택
+김성규
+김남표
+김호준
+김수광
+김영순
+김옥창
+김호철
+김정학
+김낙술
+김진준
+김홍건
+김 춘
+김호기
+김병순
+김홍겸
+김대섭
+김기춘
+김태금
+김홍구
+김기호
+김덕주
+김경호
+김홍국
+김종호
+김흥기
+김구규
+김홍규
+김정균
+김경석
+김술성
+김홍규
+김점학
+김태열
+김재숙
+김홍규
+김학수
+김상우
+김의영
+김홍균
+김수만
+김영득
+김태태
+김홍근
+김정천
+김 우
+김영식
+김홍근
+김계화
+김영덕
+김용순
+김홍달
+김원배
+김옥규
+김자웅
+김홍덕
+김필천
+김소복
+김창열
+김홍범
+김월영
+김홍우
+김종용
+김홍섭
+김종수
+김태재
+김준선
+김홍수
+김봉일
+김상래
+김정옥
+김홍수
+김진남
+김태숙
+김소락
+김홍식
+김광식
+김효천
+김규봉
+김홍식
+김상우
+김장학
+김옥성
+김홍열
+김병섭
+김용광
+김수호
+김홍열
+김일성
+김의목
+김근태
+김홍엽
+김학선
+김갑태
+김철권
+김홍일
+김진숙
+김점조
+김철복
+김홍조
+김유이
+김판환
+김금환
+김홍준
+김도우
+김대현
+김용희
+김화생
+김주빈
+김병수
+김선은
+김화식
+김천중
+김춘환
+김창영
+김화식
+김종옥
+김재희
+김인조
+김환성
+김삼철
+김일말
+김인연
+김환이
+김만식
+김상철
+김경미
+김환이
+김재경
+김재길
+김복순
+김환철
+김문기
+김현갑
+김대규
+김환호
+김태영
+김광봉
+김증경
+김황규
+김경해
+김대술
+김영순
+김효문
+김순광
+김선덕
+김술암
+김효선
+김순현
+김명모
+김병기
+김효선
+김판란
+김오상
+김창조
+김효숙
+김중원
+김조식
+김기중
+김효순
+김건학
+김태효
+김완효
+김효식
+김만동
+김창희
+김성관
+김효원
+김두수
+김성중
+김연조
+김효점
+김삼우
+김주태
+김규용
+김효진
+김부환
+김성율
+김영호
+김훈교
+김상술
+김석이
+김인식
+김흥숙
+김무복
+김제기
+김종구
+김희
+김석
+김암
+김순
+김희길
+김준회
+김언계
+김영수
+김희덕
+김재순
+김수화
+김점인
+김희도
+김병규
+김희열
+김철용
+김희동
+김문욱
+김선분
+김동이
+김희선
+김연윤
+김행호
+김정동
+김희성
+김영경
+김옥갑
+김동규
+김희수
+김양전
+김현희
+김태현
+김희수
+김일규
+김수수
+김재근
+김희수
+김난환
+김덕덕
+김선수
+김희수
+김갑호
+김귀덕
+김규인
+김희숙
+김이경
+김규헌
+김헌원
+김희순
+김숙동
+김광연
+김효수
+김희순
+김종순
+김선덕
+김병철
+김희정
+김용각
+김만호
+김의호
+김희준
+김화희
+김학한
+김성열
+김희준
+김정주
+김문순
+김진훈
+김희준
+김용출
+김운호
+김지훈
+김희진
+김정숙
+김승탁
+김갑상
+김희태
+김웅희
+김석환
+김공경
+나갑연
+나기언
+나경서
+나현교
+나건수
+나정이
+나태연
+나태수
+나광수
+나행영
+나철호
+나선태
+나국택
+나영홍
+나무선
+나삼현
+나규식
+나신만
+나주영
+나경영
+나규택
+나후순
+나영수
+나 원
+나규택
+나영익
+나창운
+나정영
+나규택
+나경옥
+나규수
+나성갑
+나금자
+나만분
+나태현
+나병교
+나금자
+나원이
+나판영
+나규명
+나기남
+나영권
+나재석
+나기채
+나기조
+나덕순
+나정주
+나영진
+나뇌성
+나금막
+나윤호
+나형기
+나대현
+나의수
+나원숙
+나충연
+나덕시
+나성웅
+나영관
+나수정
+나동선
+나영대
+나재립
+나술태
+나동연
+나 환
+나성현
+나병록
+나동춘
+나부언
+나순미
+나정구
+나동춘
+나성우
+나영출
+나호경
+나명철
+나수선
+나수봉
+나학웅
+나명철
+나정태
+나득숙
+나순지
+나무열
+나범술
+나해경
+나경기
+나무열
+나인선
+나해익
+나순식
+나병택
+나승희
+나병배
+나상휴
+나병택
+나차건
+나봉근
+나금홍
+나성수
+나동석
+나진자
+나덕출
+나성택
+나광자
+나영원
+나병태
+나성택
+나남석
+나정수
+나사덕
+나순세
+나영술
+나희식
+나영호
+나순연
+나성흠
+나정오
+나헌식
+나쌍선
+나귀일
+나인우
+나정현
+나양균
+나일모
+나철생
+나기용
+나억기
+나수천
+나헌욱
+나영재
+나영범
+나순근
+나인준
+나봉지
+나영삼
+나수영
+나재수
+나정환
+나영삼
+나홍희
+나임영
+나종명
+나영식
+나달석
+나병선
+나태정
+나영완
+나진수
+나홍숙
+나현수
+나영원
+나외열
+나옥수
+나충수
+나영자
+나영훈
+나학규
+나미진
+나영주
+나근판
+나일숙
+나규우
+나영진
+나상석
+나형용
+나종용
+나영호
+나춘호
+나경현
+나태열
+나영희
+나철남
+나병수
+나사미
+나영희
+나광수
+나종영
+나쌍원
+나용엽
+나수호
+나용자
+나정호
+나우덕
+나순식
+나칠희
+나국식
+나우연
+나성조
+나동석
+나경연
+나원식
+나성준
+나진현
+나종숙
+나월봉
+나운집
+나동도
+나옥애
+나월생
+나용호
+나성기
+나말한
+나익표
+나순술
+나광홍
+나민남
+나재기
+나재웅
+나계희
+나재수
+나재식
+나만석
+나성수
+나경남
+나정금
+나치범
+나범정
+나병우
+나정의
+나명호
+나영로
+나윤남
+나정태
+나재경
+나한준
+나영수
+나정희
+나명석
+나운기
+나명연
+나종곤
+나재진
+나선남
+나종수
+나종문
+나병도
+나점용
+나무조
+나종열
+나정임
+나삼련
+나은영
+나종태
+나성열
+나순환
+나춘도
+나종택
+나동부
+나평옥
+나종신
+나종한
+나재화
+나인율
+나정주
+나주택
+나길용
+나주윤
+나태식
+나지연
+나봉식
+나영환
+나방순
+나진관
+나현달
+나판조
+나진표
+나진관
+나정만
+나영숙
+나건수
+나진길
+나병미
+나갑오
+나용향
+나진도
+나봉운
+나영택
+나정운
+나진도
+나민자
+나갑숙
+나판자
+나진락
+나선현
+나찬철
+나근연
+나진상
+나남자
+나안현
+나천준
+나진오
+나희철
+나옥성
+나원돌
+나진유
+나원희
+나수대
+나승오
+나진한
+나상진
+나한록
+나윤식
+나진해
+나점자
+나경대
+나용강
+나진희
+나중수
+나수식
+나권교
+나채관
+나갈원
+나정오
+나경호
+나채권
+나태동
+나석태
+나종호
+나채성
+나효경
+나정관
+나소영
+나채식
+나영길
+나종조
+나근식
+나채향
+나종태
+나대심
+나태철
+나춘택
+나태옥
+나재용
+나이지
+나태임
+나명향
+나충윤
+나재근
+나해용
+나좌순
+나영현
+나태호
+나해용
+나운무
+나병철
+나재선
+나호연
+나명찬
+나홍자
+나용훈
+나희열
+나환섭
+나윤용
+나용자
+나희정
+나일식
+나승호
+나원동
+남 훈
+남태헌
+남봉호
+남대해
+남개곤
+남성술
+남희희
+남중기
+남궁정
+남판식
+남상숙
+남규배
+남규명
+남원선
+남순미
+남재달
+남규진
+남성웅
+남용호
+남낙포
+남기술
+남영형
+남대관
+남명수
+남기정
+남기호
+남점직
+남원숙
+남기홍
+남성기
+남성규
+남근열
+남덕수
+남재복
+남안애
+남상길
+남문희
+남배호
+남말암
+남일식
+남병두
+남창태
+남선태
+남운보
+남병춘
+남대구
+남경기
+남금영
+남상수
+남석봉
+남철기
+남진곤
+남상술
+남은남
+남광식
+남윤곤
+남상염
+남삼훈
+남봉태
+남윤태
+남상인
+남희관
+남광현
+남영헌
+남상훈
+남영수
+남판현
+남대섭
+남석현
+남건기
+남종창
+남명태
+남성우
+남상광
+남 수
+남상호
+남수용
+남홍봉
+남귀식
+남현곤
+남순우
+남영무
+남영재
+남태준
+남영우
+남판근
+남재교
+남용근
+남영현
+남상선
+남창도
+남정문
+남영현
+남하호
+남명치
+남을근
+남오조
+남상현
+남영국
+남병택
+남옥희
+남종화
+남재현
+남정연
+남용덕
+남영암
+남문택
+남영희
+남원덕
+남종기
+남동자
+남태순
+남원희
+남봉철
+남달항
+남계동
+남윤숙
+남임교
+남종수
+남근기
+남윤조
+남용희
+남원천
+남이수
+남은정
+남민대
+남분환
+남현화
+남을순
+남종영
+남가선
+남상구
+남이식
+남창태
+남찬수
+남범진
+남이식
+남국흠
+남구출
+남순심
+남이직
+남정진
+남광경
+남창오
+남인식
+남삼훈
+남장국
+남태식
+남재만
+남상이
+남종덕
+남광수
+남재봉
+남무우
+남삼만
+남행기
+남재우
+남명열
+남영섭
+남남식
+남재우
+남순헌
+남준곤
+남정수
+남정호
+남호진
+남인자
+남상만
+남정호
+남재정
+남상욱
+남정조
+남창기
+남화열
+남옥봉
+남영옥
+남철우
+남주식
+남종호
+남동암
+남춘화
+남병부
+남칠호
+남흥식
+남칠조
+남태동
+남병우
+남선권
+남태종
+남호석
+남혜성
+남재해
+남판준
+남재현
+남원국
+남영식
+남하우
+남진이
+남상순
+남중화
+남현일
+남도홍
+남수화
+남순수
+남현일
+남의순
+남희규
+남길규
+노갑수
+노군권
+노규세
+노성아
+노경도
+노경석
+노태헌
+노일자
+노광덕
+노대윤
+노용자
+노삼종
+노광웅
+노강언
+노승동
+노경근
+노근열
+노헌호
+노무규
+노병순
+노기근
+노향출
+노삼미
+노중진
+노기록
+노준태
+노외규
+노종환
+노기수
+노희희
+노동섭
+노옥석
+노기창
+노석순
+노성후
+노수수
+노기현
+노준수
+노도석
+노장환
+노대곤
+노병선
+노중욱
+노한정
+노동남
+노창상
+노재생
+노쾌숙
+노동덕
+노창암
+노경분
+노홍택
+노동수
+노태식
+노옥열
+노철규
+노동조
+노겸조
+노우록
+노근자
+노동조
+노중호
+노의한
+노영화
+노명분
+노수식
+노정환
+노정견
+노명암
+노승술
+노영점
+노경탁
+노무수
+노춘식
+노종정
+노정순
+노무종
+노윤돌
+노정진
+노재만
+노방식
+노상갑
+노영열
+노을택
+노병우
+노헌도
+노진태
+노철현
+노복천
+노윤원
+노명호
+노차순
+노봉열
+노주률
+노영문
+노용병
+노분조
+노중규
+노희천
+노동수
+노사호
+노종경
+노일여
+노현수
+노삼수
+노일이
+노우수
+노인순
+노상수
+노중림
+노은수
+노순덕
+노상열
+노진봉
+노상구
+노춘진
+노상태
+노춘호
+노민화
+노진수
+노상필
+노병우
+노영교
+노정군
+노상화
+노태만
+노한대
+노재식
+노석수
+노태태
+노성환
+노병문
+노석식
+노한갑
+노종희
+노한호
+노석식
+노병숙
+노성상
+노두수
+노석열
+노영자
+노뇌창
+노수철
+노석호
+노말기
+노권도
+노경혁
+노성대
+노길현
+노용도
+노달기
+노성덕
+노철국
+노봉한
+노홍환
+노성례
+노동환
+노영성
+노상자
+노성식
+노태숙
+노진완
+노병출
+노성열
+노영기
+노상희
+노병현
+노성환
+노무순
+노병호
+노제기
+노수한
+노상기
+노정선
+노연현
+노순남
+노영석
+노정조
+노두원
+노순조
+노경진
+노용식
+노승숙
+노순학
+노한성
+노영곤
+노상열
+노순해
+노순화
+노창문
+노창현
+노영수
+노진조
+노병동
+노수성
+노영숙
+노수종
+노주애
+노칠연
+노완구
+노종출
+노준수
+노태철
+노완식
+노종기
+노오환
+노정석
+노용규
+노도호
+노성갑
+노일제
+노용문
+노명난
+노경상
+노순식
+노용범
+노태우
+노수교
+노병균
+노용식
+노오숙
+노한분
+노상홍
+노용자
+노시춘
+노경관
+노부형
+노운동
+노차국
+노성화
+노종열
+노월선
+노상옥
+노사식
+노판우
+노윤규
+노무운
+노덕태
+노점복
+노윤금
+노오교
+노명석
+노정금
+노은섭
+노경길
+노상관
+노광자
+노은희
+노명숙
+노명석
+노만수
+노을연
+노현수
+노대용
+노병신
+노인상
+노욱식
+노광화
+노명연
+노인호
+노원호
+노재진
+노영우
+노장수
+노영주
+노명경
+노종휴
+노장오
+노춘봉
+노우옥
+노대웅
+노재연
+노용출
+노병탁
+노상상
+노재윤
+노익부
+노윤휴
+노달현
+노재창
+노만숙
+노정만
+노칠길
+노재환
+노종철
+노태희
+노판진
+노재환
+노규순
+노영희
+노달호
+노정익
+노해만
+노성식
+노춘숙
+노정환
+노영근
+노만곤
+노용술
+노종권
+노용균
+노일옥
+노만도
+노종운
+노상이
+노근덕
+노동기
+노종현
+노천수
+노일순
+노시열
+노준현
+노경용
+노성근
+노한우
+노준현
+노광현
+노봉이
+노정화
+노진식
+노한석
+노근식
+노진렬
+노창락
+노강남
+노원이
+노선순
+노창석
+노현일
+노철권
+노분하
+노창호
+노억학
+노무철
+노필현
+노창화
+노정태
+노병곤
+노용우
+노철규
+노길태
+노호철
+노영만
+노춘길
+노명연
+노경희
+노정순
+노칠규
+노정치
+노정석
+노대욱
+노태길
+노홍관
+노태극
+노무자
+노태술
+노진선
+노재자
+노상이
+노태원
+노태봉
+노세만
+노용철
+노택봉
+노용화
+노춘희
+노덕환
+노판규
+노노철
+노영석
+노순호
+노필주
+노명원
+노기선
+노재원
+노한규
+노영열
+노미권
+노문성
+노현배
+노종순
+노상규
+노한화
+노현정
+노두상
+노삼익
+노호봉
+노혜경
+노질규
+노광섭
+노재용
+노회준
+노정수
+노호중
+노두일
+노효동
+노경소
+노성성
+노차석
+노후득
+노을배
+노재계
+노만연
+노희수
+노영웅
+노성규
+노상만
+노희열
+노태조
+노태태
+노재호
+노희찬
+노윤욱
+노노호
+노상열
+도규탁
+도임용
+도광수
+도호기
+도동승
+도윤성
+도정전
+도주태
+도두탁
+도소홍
+도병건
+도주석
+도문환
+도문연
+도철용
+도팔갑
+도병기
+도율익
+도영수
+도순인
+도상기
+도호생
+도태갑
+도규환
+도상철
+도병환
+도성우
+도병용
+도상호
+도재식
+도찬자
+도적재
+도수영
+도소영
+도헌식
+도학식
+도수영
+도용보
+도재정
+도홍수
+도신우
+도기근
+도해용
+도정근
+도영철
+도분근
+도현창
+도해생
+도영희
+도문이
+도덕우
+도기만
+도옥희
+도공림
+도인분
+도해수
+도원수
+도용순
+도삼철
+도영선
+도임술
+도순순
+도국순
+도차호
+도재동
+도영자
+도광숙
+도상원
+도재동
+도윤건
+도석석
+도승만
+도재욱
+도순찬
+도명구
+도차덕
+도정만
+도창호
+도상기
+도일우
+도정봉
+도판길
+도옥로
+도철희
+도정탁
+도경규
+도재식
+도철세
+도제현
+도덕수
+도쾌선
+도기태
+도종환
+도태근
+도종록
+도인선
+도준탁
+도영모
+도개화
+도병식
+도증조
+도갑관
+도영순
+도태수
+도창록
+도병환
+도병복
+도창성
+도창수
+도태희
+도문진
+도주제
+도팔만
+도효용
+도선수
+도현정
+도하석
+도화교
+도정조
+도만양
+도현석
+도연암
+도군식
+도태춘
+도현영
+도한상
+도만성
+도동주
+도호길
+도인현
+도규춘
+도효희
+도화석
+도대석
+도진석
+도노목
+도회운
+도경동
+도동삼
+도태식
+라규혁
+라기봉
+라숙기
+라재돌
+라병호
+라일용
+라재정
+라교조
+라보원
+라기경
+라병근
+라차현
+라석문
+라종목
+라충기
+라용미
+라세만
+라달주
+라소환
+라완호
+라연당
+라승기
+라태원
+라윤수
+라영노
+라명계
+라종관
+라규영
+라영도
+라희성
+라병익
+라원돌
+라영준
+라미래
+라영임
+라삼영
+라요한
+라희순
+라만연
+라주담
+라우곤
+라일균
+라두태
+라희돌
+라인수
+라세섭
+라태조
+라대식
+라장수
+라해도
+라영민
+라수룡
+라종철
+라희홍
+라순수
+라주건
+라주택
+라봉기
+라도진
+라정성
+라진강
+라연석
+라순순
+라병숙
+라진식
+라상환
+라재숙
+라원길
+라진한
+라규상
+라영식
+라승운
+라치운
+라경기
+라용수
+라정진
+라택연
+라상석
+라영석
+라봉재
+라한길
+라상순
+라창재
+라홍만
+라현문
+라일만
+라정진
+라필주
+류 강
+류은자
+류영원
+류복호
+류갑록
+류영구
+류태식
+류하순
+류광열
+류태영
+류재학
+류경남
+류광지
+류함섭
+류현동
+류학수
+류근숙
+류완훈
+류해우
+류무복
+류도용
+류승선
+류이집
+류상랑
+류동훈
+류문임
+류근기
+류현욱
+류동훈
+류철갑
+류사무
+류세종
+류병칠
+류금애
+류명부
+류문효
+류상렬
+류철동
+류재동
+류형이
+류상우
+류광용
+류종재
+류재철
+류성복
+류은옥
+류중성
+류규남
+류성복
+류문연
+류금기
+류상근
+류성호
+류영대
+류시조
+류철철
+류수빈
+류성영
+류길국
+류문용
+류시재
+류형희
+류규정
+류학득
+류연자
+류소덕
+류경현
+류동수
+류용희
+류세호
+류상태
+류순덕
+류윤형
+류만식
+류강준
+류광배
+류의수
+류을곤
+류병민
+류성실
+류장화
+류서홍
+류기영
+류실학
+류종래
+류종용
+류동호
+류호현
+류종문
+류수선
+류용택
+류혜영
+류종채
+류종탁
+류창수
+류수환
+류태명
+류수곤
+류현호
+류이원
+류태문
+류승태
+류영환
+류봉석
+류태춘
+류정선
+류필삼
+류원호
+류필선
+류정수
+류영창
+류상기
+류해복
+류복기
+류수성
+류상출
+류해양
+류동주
+류기봉
+류판식
+류해춘
+류혜호
+류세연
+류신순
+류호대
+류선우
+류상무
+류정극
+마석일
+마동혁
+마태선
+마상석
+맹경락
+맹주옥
+맹금규
+맹혜균
+모상영
+모암태
+모해수
+모성길
+목성수
+목달근
+목화권
+목재팔
+문강민
+문철현
+문기태
+문길표
+문건택
+문종준
+문동만
+문영오
+문경술
+문헌호
+문해덕
+문보호
+문경애
+문용기
+문대영
+문성대
+문경호
+문명술
+문영환
+문강원
+문경희
+문을대
+문계선
+문연식
+문계남
+문점열
+문재기
+문재섭
+문계선
+문석준
+문판석
+문재오
+문광재
+문상출
+문쌍원
+문형문
+문교익
+문주자
+문재재
+문정섭
+문구의
+문교철
+문용수
+문종수
+문귀열
+문태기
+문석태
+문태경
+문근식
+문군신
+문창식
+문현태
+문근영
+문정희
+문재순
+문말수
+문근영
+문근훈
+문태하
+문영혜
+문기수
+문수숙
+문성경
+문윤목
+문기택
+문대우
+문준희
+문승만
+문기택
+문해택
+문순권
+문진복
+문남식
+문영전
+문상금
+문종열
+문남천
+문상택
+문홍경
+문정식
+문달수
+문상각
+문홍경
+문낙순
+문대희
+문중열
+문병봉
+문성돌
+문동수
+문창순
+문영수
+문수길
+문두열
+문용태
+문인근
+문일경
+문만열
+문상복
+문영정
+문성정
+문말연
+문명환
+문말식
+문미노
+문매자
+문상분
+문중열
+문일옥
+문맹주
+문태호
+문상대
+문석열
+문명용
+문종식
+문희애
+문대원
+문무연
+문정석
+문영화
+문진선
+문미영
+문병애
+문종행
+문말수
+문병근
+문정남
+문학석
+문병숙
+문병인
+문영점
+문도조
+문해근
+문병지
+문상선
+문일기
+문금규
+문복곤
+문명탁
+문원화
+문성혁
+문복순
+문병기
+문갑훈
+문재순
+문복열
+문승태
+문명상
+문희환
+문상도
+문성숙
+문선효
+문갑식
+문상래
+문성진
+문병백
+문창열
+문상모
+문복근
+문기언
+문종순
+문상석
+문문우
+문상재
+문정경
+문상수
+문동훈
+문석경
+문태주
+문상수
+문안성
+문기식
+문철식
+문상운
+문재중
+문종조
+문쌍원
+문상웅
+문복복
+문성숙
+문현래
+문상현
+문춘자
+문기원
+문영포
+문상호
+문태자
+문기선
+문판강
+문상화
+문재오
+문병란
+문태호
+문상흠
+문용룡
+문낙순
+문미선
+문상희
+문병화
+문상자
+문숙자
+문선남
+문소수
+문영성
+문규준
+문선호
+문종홍
+문봉경
+문석한
+문성준
+문동자
+문상덕
+문위호
+문세열
+문문출
+문주탁
+문경경
+문순구
+문장수
+문진원
+문옥빈
+문순례
+문회배
+문용복
+문준문
+문순자
+문상수
+문영억
+문태일
+문순조
+문홍명
+문문순
+문성연
+문순향
+문봉술
+문태기
+문행길
+문신현
+문진석
+문성전
+문광술
+문양웅
+문태일
+문영식
+문판환
+문영복
+문종기
+문분만
+문윤석
+문영상
+문성아
+문성영
+문인준
+문영석
+문풍식
+문월기
+문경호
+문영오
+문은덕
+문태임
+문재업
+문영채
+문병원
+문기근
+문인창
+문영희
+문삼기
+문연수
+문상언
+문오교
+문용순
+문송순
+문태문
+문옥주
+문재호
+문덕귀
+문희인
+문온숙
+문용태
+문옥래
+문종섭
+문용운
+문정은
+문설국
+문영호
+문우선
+문태식
+문인섭
+문증우
+문웅열
+문수숙
+문창출
+문인수
+문원출
+문순수
+문건덕
+문종길
+문은기
+문인국
+문도모
+문명덕
+문은식
+문원식
+문경성
+문태석
+문을생
+문소훈
+문성학
+문석자
+문응학
+문인식
+문신한
+문승유
+문익기
+문규원
+문난덕
+문성기
+문인곤
+문기재
+문성균
+문영옥
+문인기
+문복규
+문상철
+문병희
+문인기
+문쾌천
+문윤희
+문상식
+문인수
+문순호
+문상재
+문민의
+문일주
+문소호
+문영해
+문중니
+문장운
+문영곤
+문정순
+문재용
+문장호
+문찬욱
+문재교
+문안조
+문재철
+문쾌도
+문용준
+문길조
+문재희
+문기갑
+문효주
+문종호
+문전국
+문은용
+문만원
+문복조
+문전국
+문익희
+문재희
+문희열
+문점랑
+문현현
+문영교
+문두태
+문점분
+문대민
+문순환
+문윤옥
+문정국
+문말종
+문외자
+문재수
+문정범
+문영진
+문태규
+문근복
+문정분
+문성수
+문경화
+문종종
+문정선
+문지봉
+문옥권
+문석환
+문정수
+문금숙
+문정호
+문영수
+문정순
+문정식
+문우준
+문의수
+문정술
+문건근
+문문령
+문영구
+문정자
+문오순
+문재석
+문정우
+문정자
+문일국
+문종걸
+문건수
+문정자
+문연근
+문경동
+문기철
+문정자
+문성실
+문순연
+문인석
+문정희
+문원준
+문소현
+문명호
+문종래
+문추봉
+문명열
+문의태
+문주선
+문원홍
+문복훈
+문호수
+문주섭
+문창남
+문대환
+문용영
+문주종
+문만주
+문태열
+문병휴
+문주호
+문임만
+문경오
+문종수
+문차관
+문선홍
+문태교
+문재조
+문창래
+문칠은
+문말수
+문용준
+문창식
+문종용
+문상수
+문병택
+문창열
+문재규
+문덕섭
+문병식
+문창열
+문사연
+문무우
+문진원
+문철운
+문육석
+문진식
+문태국
+문춘옥
+문상학
+문주길
+문노갑
+문판권
+문분달
+문말호
+문해훈
+문판순
+문순연
+문병일
+문영택
+문판오
+문종수
+문원희
+문상학
+문팔봉
+문영녀
+문만석
+문해선
+문필순
+문태주
+문한준
+문성상
+문학조
+문인영
+문재주
+문경권
+문행성
+문달선
+문인정
+문춘일
+문현자
+문삼권
+문용창
+문광범
+문호식
+문만수
+문지조
+문득식
+문홍재
+문정한
+문분희
+문궁준
+문홍재
+문중기
+문해환
+문용태
+문홍주
+문용휘
+문장복
+문윤도
+문화춘
+문윤난
+문달임
+문진군
+문환주
+문근호
+문동상
+문재순
+문효열
+문기애
+문상일
+문등남
+문희교
+문달환
+문정근
+문해석
+문희성
+문오옥
+문병도
+문홍자
+문희순
+문영수
+문희병
+문상호
+문희식
+문무춘
+문경화
+문미호
+문희연
+문성원
+문상열
+문승주
+문희원
+문성철
+문옥균
+문말분
+민공식
+민일철
+민영보
+민신준
+민도기
+민원길
+민운석
+민성훈
+민문희
+민소주
+민종환
+민의원
+민병기
+민윤희
+민홍근
+민도수
+민병목
+민분구
+민종순
+민부정
+민병성
+민길복
+민수술
+민주종
+민병오
+민창수
+민남재
+민석희
+민병오
+민진우
+민대백
+민강환
+민병오
+민창호
+민병윤
+민용욱
+민병우
+민진용
+민정목
+민선순
+민병욱
+민정육
+민태숙
+민재현
+민병창
+민정소
+민영재
+민점오
+민병천
+민계석
+민유이
+민성훈
+민병현
+민주업
+민현석
+민기기
+민복기
+민숙일
+민영구
+민주현
+민봉근
+민 태
+민태정
+민상원
+민석조
+민상회
+민성식
+민인준
+민성기
+민헌희
+민쌍현
+민호수
+민성재
+민 수
+민상현
+민영연
+민영우
+민호년
+민경용
+민기철
+민재기
+민성차
+민만민
+민특향
+민점수
+민주주
+민 교
+민경호
+민종선
+민일연
+민재숙
+민명대
+민진노
+민정규
+민행홍
+민용기
+민진수
+민재환
+민영암
+민삼수
+민찬식
+민병열
+민철수
+민수환
+민창식
+민외득
+민정영
+민석은
+민철진
+민이순
+민정순
+민수만
+민태식
+민혜수
+민원규
+민재규
+민향란
+민상식
+민풍득
+민문관
+민현숙
+민경희
+민재만
+민상숙
+민혜원
+민태재
+민정식
+민득준
+박 교
+박용조
+박인기
+박민석
+박 근
+박선근
+박상옥
+박수권
+박 옥
+박광득
+박용곤
+박우조
+박 용
+박윤덕
+박본곤
+박용권
+박 용
+박태경
+박석학
+박계석
+박 은
+박기재
+박경숙
+박태순
+박 훈
+박호희
+박찬수
+박도열
+박갑도
+박윤식
+박세순
+박석규
+박갑상
+박재옥
+박덕우
+박신갑
+박갑선
+박태복
+박해호
+박원화
+박갑수
+박동동
+박일희
+박동석
+박갑수
+박동식
+박경현
+박장모
+박갑순
+박태복
+박정한
+박성숙
+박갑악
+박병태
+박종우
+박성현
+박갑주
+박임순
+박혁순
+박좌근
+박강본
+박충근
+박태덕
+박대연
+박강조
+박효택
+박일술
+박연우
+박건동
+박경호
+박기호
+박영도
+박경규
+박상소
+박복환
+박태임
+박경기
+박영근
+박석현
+박인길
+박경달
+박인종
+박해봉
+박기수
+박경동
+박윤래
+박찬아
+박장구
+박경동
+박임근
+박정환
+박정용
+박경선
+박순진
+박상인
+박구연
+박경수
+박병철
+박국경
+박주수
+박경수
+박태동
+박덕출
+박영성
+박경수
+박우희
+박진조
+박춘한
+박경수
+박임출
+박상재
+박내연
+박경술
+박종생
+박기섭
+박옥기
+박경열
+박화아
+박형요
+박연배
+박경영
+박청철
+박지석
+박길원
+박경용
+박오길
+박병수
+박태판
+박경우
+박재욱
+박범화
+박민철
+박경원
+박병우
+박명석
+박덕석
+박경재
+박규천
+박봉석
+박병석
+박경조
+박홍문
+박창출
+박금수
+박경준
+박만재
+박쌍현
+박원춘
+박경출
+박광편
+박재석
+박운경
+박경호
+박순정
+박상근
+박만수
+박경호
+박명근
+박신자
+박진수
+박경화
+박윤철
+박근열
+박갑수
+박경희
+박은락
+박홍숙
+박응용
+박계만
+박세순
+박경득
+박학심
+박계순
+박하등
+박경점
+박문원
+박계순
+박주호
+박형천
+박필영
+박계순
+박태식
+박재선
+박판문
+박계양
+박재환
+박사자
+박철조
+박고윤
+박도만
+박영호
+박미철
+박곡지
+박상태
+박중수
+박헌선
+박관욱
+박기덕
+박환태
+박진래
+박광근
+박봉천
+박영기
+박형식
+박광근
+박찬돌
+박휘천
+박영조
+박광기
+박 진
+박추용
+박월차
+박광배
+박태태
+박문암
+박종숙
+박광배
+박양래
+박병태
+박우석
+박광빈
+박종덕
+박명호
+박광수
+박광석
+박현수
+박정도
+박종덕
+박광선
+박기곤
+박동도
+박태용
+박광수
+박병도
+박춘석
+박계수
+박광수
+박상모
+박태수
+박성길
+박광열
+박필덕
+박성곤
+박순락
+박광열
+박순기
+박창섭
+박종렬
+박광용
+박만수
+박석포
+박은정
+박광용
+박기근
+박홍덕
+박창근
+박광욱
+박중연
+박필정
+박환열
+박광진
+박정덕
+박춘출
+박태련
+박광진
+박규춘
+박광모
+박병연
+박광호
+박무헌
+박종순
+박성기
+박광훈
+박칠훈
+박명호
+박천식
+박교찬
+박덕근
+박순수
+박숙식
+박구열
+박을조
+박말석
+박차환
+박국주
+박연술
+박상희
+박상이
+박귀순
+박옥호
+박수진
+박상장
+박귀환
+박태배
+박성곤
+박말종
+박규근
+박홍수
+박창연
+박태두
+박규만
+박갑진
+박승호
+박강준
+박규봉
+박주술
+박인율
+박은수
+박규이
+박상훈
+박세연
+박정주
+박규천
+박영택
+박병순
+박중룡
+박규학
+박옥자
+박성식
+박학우
+박규흠
+박두호
+박충호
+박창환
+박근덕
+박상완
+박노성
+박동현
+박근배
+박영진
+박영호
+박우국
+박근배
+박기덕
+박복상
+박정자
+박근순
+박태배
+박상일
+박명달
+박근식
+박경선
+박기준
+박복희
+박근영
+박성재
+박부환
+박연규
+박근우
+박순숙
+박한호
+박무영
+박근윤
+박소우
+박정규
+박상회
+박근윤
+박보호
+박길연
+박영명
+박근자
+박상수
+박정열
+박현희
+박근해
+박석철
+박달란
+박용식
+박근화
+박사암
+박환종
+박기상
+박근희
+박만석
+박담수
+박인준
+박금석
+박숙홍
+박성병
+박창식
+박금연
+박순자
+박종곤
+박창관
+박금주
+박용완
+박춘식
+박승식
+박기곤
+박민이
+박정훈
+박영순
+박기모
+박주순
+박규영
+박태계
+박기문
+박낙이
+박경자
+박승득
+박기봉
+박성오
+박금호
+박금순
+박기봉
+박영식
+박삼삼
+박은환
+박기성
+박자석
+박철헌
+박건원
+박기성
+박갑덕
+박재종
+박기수
+박기순
+박대동
+박민연
+박외경
+박기옥
+박재봉
+박영화
+박태철
+박기완
+박원선
+박재택
+박순열
+박기원
+박영근
+박태경
+박영석
+박기원
+박영여
+박진희
+박영호
+박기정
+박쾌석
+박재태
+박병석
+박기종
+박화희
+박학영
+박인태
+박기태
+박병태
+박현우
+박영태
+박기태
+박우태
+박수만
+박일순
+박기태
+박대순
+박계익
+박안주
+박기택
+박태갑
+박원범
+박종현
+박기현
+박기기
+박도재
+박천찬
+박기현
+박호선
+박장섭
+박갑만
+박기홍
+박금익
+박영교
+박도규
+박기홍
+박상희
+박연주
+박중인
+박기홍
+박기수
+박규희
+박상흠
+박기홍
+박주일
+박상찬
+박민만
+박기화
+박용평
+박재흠
+박정환
+박기훈
+박병호
+박승권
+박미화
+박길효
+박경덕
+박정완
+박성조
+박낙하
+박차배
+박종순
+박준례
+박남석
+박경권
+박만정
+박순수
+박남숙
+박창규
+박호조
+박학섭
+박남식
+박판동
+박광운
+박정태
+박남정
+박을일
+박순회
+박태진
+박노갑
+박상화
+박영식
+박정자
+박노갑
+박 근
+박미준
+박재주
+박노권
+박기진
+박호훈
+박대식
+박노기
+박성선
+박석용
+박만범
+박노만
+박위옥
+박성경
+박진필
+박노분
+박재옥
+박상자
+박팔배
+박노순
+박성덕
+박달호
+박영덕
+박노신
+박숙현
+박태수
+박태혁
+박노열
+박수혜
+박염석
+박정분
+박노영
+박광동
+박심룡
+박경호
+박노용
+박인규
+박인도
+박영생
+박노윤
+박홍규
+박종호
+박옥배
+박노윤
+박영준
+박영용
+박학근
+박노정
+박원규
+박순순
+박운윤
+박노철
+박재경
+박동표
+박세도
+박노학
+박창수
+박순상
+박의수
+박노현
+박종호
+박정웅
+박준용
+박노화
+박태술
+박임규
+박경규
+박달규
+박정일
+박근섭
+박창준
+박달선
+박 숙
+박권순
+박봉봉
+박달수
+박정성
+박덕호
+박동임
+박달용
+박노홍
+박한자
+박석순
+박달회
+박정환
+박원선
+박달남
+박대성
+박재자
+박해주
+박영봉
+박대성
+박정일
+박왕자
+박진호
+박대성
+박창수
+박갑성
+박형태
+박대성
+박근철
+박창근
+박길선
+박대식
+박상열
+박성조
+박병일
+박대식
+박경호
+박태옥
+박기준
+박대원
+박수실
+박명자
+박명태
+박대철
+박동영
+박학호
+박규기
+박대형
+박훈암
+박오조
+박종복
+박덕근
+박판철
+박삼자
+박태구
+박덕순
+박호봉
+박장기
+박경남
+박덕암
+박동용
+박수선
+박윤춘
+박덕이
+박진덕
+박억성
+박옥식
+박도금
+박계철
+박은환
+박장원
+박도선
+박제우
+박영영
+박현수
+박도환
+박규화
+박운식
+박하숙
+박도환
+박인호
+박영호
+박용문
+박돈헌
+박영일
+박정기
+박대하
+박동근
+박봉기
+박균호
+박욱분
+박동길
+박세택
+박청재
+박필태
+박동명
+박덕순
+박광우
+박종현
+박동명
+박상돌
+박정태
+박영규
+박동성
+박금규
+박병경
+박경연
+박동수
+박종일
+박영자
+박대곤
+박동수
+박혜선
+박상호
+박희식
+박동수
+박병화
+박의이
+박용선
+박동숙
+박광일
+박우환
+박광표
+박동식
+박경철
+박종일
+박명직
+박동식
+박운순
+박성숙
+박상민
+박동열
+박봉복
+박근조
+박명준
+박동열
+박정식
+박신술
+박우철
+박동영
+박병선
+박정옥
+박낙익
+박동용
+박석정
+박기동
+박옥호
+박동욱
+박영식
+박대현
+박충택
+박동운
+박복이
+박종만
+박기조
+박동일
+박재형
+박말수
+박계수
+박동일
+박상연
+박태기
+박점순
+박동자
+박용덕
+박덕구
+박영련
+박동정
+박정근
+박상한
+박희호
+박동준
+박재성
+박경성
+박덕실
+박동준
+박영제
+박남욱
+박용환
+박동준
+박해희
+박재우
+박말배
+박동천
+박철율
+박강근
+박상일
+박동철
+박갑환
+박영득
+박문열
+박동철
+박영봉
+박영수
+박판현
+박동춘
+박인영
+박정규
+박을고
+박동헌
+박택일
+박상우
+박윤영
+박두용
+박성덕
+박정화
+박순숙
+박두익
+박의이
+박갑민
+박태술
+박두헌
+박만전
+박관원
+박준옥
+박두호
+박치식
+박교호
+박창환
+박두환
+박영문
+박영만
+박용환
+박두희
+박점영
+박노순
+박재현
+박득근
+박진수
+박선식
+박순식
+박래하
+박창식
+박기용
+박재효
+박막래
+박길호
+박문식
+박 수
+박만규
+박정석
+박희순
+박정자
+박만규
+박상희
+박정준
+박귀운
+박만석
+박영채
+박말영
+박병갑
+박만수
+박재희
+박화웅
+박현오
+박만수
+박태석
+박현용
+박욱규
+박만수
+박종용
+박동철
+박병대
+박만심
+박태원
+박한동
+박해환
+박만정
+박희용
+박영순
+박태종
+박만조
+박일호
+박소경
+박수곤
+박만출
+박영학
+박병영
+박무주
+박만흠
+박정칙
+박계렬
+박월식
+박말수
+박규희
+박해출
+박대초
+박말순
+박은수
+박용규
+박차조
+박말순
+박보이
+박성현
+박병석
+박말조
+박을열
+박승남
+박규운
+박말출
+박태수
+박점학
+박태향
+박말한
+박소규
+박순근
+박술모
+박명돌
+박국준
+박정길
+박규진
+박명봉
+박장용
+박광선
+박한경
+박명식
+박헌철
+박정주
+박경옥
+박명옥
+박철숙
+박을현
+박임표
+박명용
+박차환
+박해한
+박철택
+박명임
+박민택
+박화열
+박종영
+박명진
+박원재
+박홍희
+박한영
+박명철
+박상수
+박진선
+박덕교
+박명한
+박항기
+박중칠
+박병수
+박명호
+박대록
+박점용
+박보열
+박명호
+박재수
+박경섭
+박수구
+박명회
+박은자
+박태달
+박종란
+박명희
+박병오
+박무순
+박영철
+박묘년
+박쌍곤
+박영돌
+박종수
+박무길
+박언응
+박정석
+박미훈
+박무웅
+박점원
+박태용
+박차수
+박무웅
+박광진
+박규운
+박홍용
+박무호
+박차찬
+박준석
+박상덕
+박무환
+박종기
+박갑용
+박귀극
+박문갑
+박명근
+박형우
+박광식
+박문권
+박판분
+박대원
+박옥현
+박문규
+박병환
+박홍철
+박업선
+박문수
+박수호
+박영식
+박설윤
+박문식
+박해련
+박필여
+박은식
+박문조
+박영수
+박병정
+박보명
+박문조
+박운순
+박성호
+박천악
+박문철
+박희철
+박병영
+박주이
+박문호
+박성악
+박용련
+박태일
+박문희
+박판종
+박석형
+박동철
+박미자
+박성기
+박해순
+박태규
+박미자
+박위도
+박강배
+박한구
+박미자
+박정운
+박영덕
+박창희
+박미정
+박성호
+박상현
+박종영
+박미화
+박오희
+박정현
+박술조
+박민우
+박진식
+박성만
+박차경
+박방자
+박성화
+박덕평
+박제구
+박범태
+박병수
+박쌍대
+박정호
+박병구
+박병재
+박남영
+박태로
+박병근
+박기수
+박정희
+박경희
+박병기
+박명창
+박종순
+박은선
+박병기
+박광보
+박화식
+박미래
+박병기
+박옥자
+박태열
+박대봉
+박병남
+박석경
+박용이
+박영수
+박병립
+박용한
+박진구
+박정기
+박병목
+박점일
+박현민
+박영환
+박병선
+박술식
+박승율
+박병자
+박병순
+박금자
+박경운
+박재철
+박병용
+박한호
+박재영
+박점악
+박병용
+박덕현
+박영식
+박상덕
+박병진
+박창희
+박학수
+박은식
+박병천
+박원식
+박수임
+박용호
+박병헌
+박재순
+박민수
+박제석
+박병호
+박경수
+박순림
+박정종
+박병호
+박윤지
+박승희
+박정술
+박병호
+박태한
+박용현
+박정희
+박보근
+박해자
+박갈란
+박웅세
+박복근
+박춘도
+박윤웅
+박윤술
+박복난
+박명교
+박성석
+박위석
+박복만
+박선암
+박수부
+박이명
+박복연
+박희환
+박원자
+박정정
+박봉근
+박기길
+박진호
+박근균
+박봉기
+박순운
+박홍조
+박동희
+박봉병
+박규희
+박일중
+박무상
+박봉상
+박재생
+박동보
+박순정
+박봉석
+박덕권
+박제덕
+박 길
+박봉출
+박지조
+박경진
+박숙용
+박봉하
+박석희
+박영돌
+박영길
+박봉환
+박준준
+박정찬
+박정호
+박분선
+박종필
+박윤곤
+박삼환
+박분술
+박상두
+박영식
+박도주
+박분이
+박규훈
+박완학
+박봉식
+박삼동
+박규복
+박정식
+박우순
+박삼술
+박원성
+박만원
+박태산
+박삼암
+박오상
+박태호
+박영돌
+박삼조
+박증옥
+박상순
+박순식
+박삼조
+박희득
+박임권
+박재모
+박삼출
+박진재
+박영천
+박광희
+박삼헌
+박용원
+박동철
+박강봉
+박상구
+박성하
+박기복
+박난동
+박상규
+박규호
+박명환
+박효용
+박상규
+박문기
+박갑순
+박복수
+박상규
+박지이
+박경례
+박상식
+박상규
+박재호
+박영호
+박순임
+박상기
+박갑동
+박승남
+박영선
+박상길
+박장환
+박일수
+박순섭
+박상달
+박교주
+박관숙
+박해덕
+박상도
+박길하
+박호숙
+박일란
+박상록
+박기환
+박순식
+박을자
+박상률
+박수수
+박동원
+박광이
+박상만
+박학범
+박을동
+박 재
+박상범
+박경봉
+박태식
+박태교
+박상서
+박종자
+박재자
+박중수
+박상수
+박경호
+박헌진
+박재수
+박상순
+박성자
+박인수
+박현식
+박상술
+박규원
+박인식
+박 현
+박상식
+박병우
+박윤용
+박형옥
+박상식
+박은태
+박수호
+박 화
+박상연
+박인현
+박종구
+박장상
+박상열
+박평호
+박해현
+박순옥
+박상옥
+박병기
+박남진
+박봉년
+박상용
+박덕호
+박말훈
+박원전
+박상용
+박만돌
+박태주
+박명철
+박상욱
+박영철
+박상출
+박영근
+박상윤
+박수순
+박정상
+박태수
+박상태
+박용락
+박영수
+박일환
+박상태
+박은오
+박달수
+박쌍증
+박상현
+박용수
+박정자
+박동규
+박상호
+박진원
+박영조
+박판수
+박상홍
+박의수
+박태재
+박명모
+박상훈
+박범규
+박영교
+박재자
+박상희
+박덕수
+박효숙
+박종진
+박상희
+박수석
+박필호
+박태현
+박석규
+박영호
+박삼원
+박규석
+박석근
+박일수
+박상기
+박준덕
+박석동
+박두환
+박정현
+박규철
+박석식
+박칠하
+박인하
+박병동
+박석철
+박춘규
+박태희
+박동조
+박선영
+박상출
+박상희
+박병남
+박선옥
+박병식
+박덕구
+박남익
+박선진
+박연순
+박영연
+박상영
+박선호
+박상용
+박장록
+박창천
+박성곤
+박일수
+박태조
+박재애
+박성구
+박일원
+박정보
+박영원
+박성규
+박재세
+박영호
+박은원
+박성규
+박정문
+박윤철
+박규성
+박성규
+박상익
+박영영
+박종조
+박성기
+박기화
+박수덕
+박대균
+박성기
+박규준
+박우석
+박정연
+박성남
+박진임
+박소주
+박일록
+박성달
+박미호
+박 금
+박세열
+박성득
+박동욱
+박석택
+박선덕
+박성득
+박관분
+박필수
+박근청
+박성룡
+박 오
+박선순
+박동종
+박성배
+박종태
+박상배
+박재애
+박성배
+박석식
+박용휴
+박점연
+박성배
+박종회
+박만순
+박진동
+박성배
+박명대
+박광암
+박동길
+박성배
+박점태
+박윤용
+박황식
+박성범
+박창식
+박필우
+박정암
+박성봉
+박권철
+박인조
+박태권
+박성분
+박일희
+박재순
+박운상
+박성빈
+박상수
+박종주
+박점철
+박성순
+박명숙
+박홍희
+박미화
+박성순
+박인자
+박영흠
+박정임
+박성식
+박 학
+박사규
+박성훈
+박성실
+박성수
+박민식
+박타구
+박성양
+박옥태
+박필화
+박인술
+박성열
+박송근
+박일연
+박혁호
+박성열
+박옥순
+박상조
+박진실
+박성용
+박성작
+박인수
+박미교
+박성율
+박두열
+박황오
+박수봉
+박성일
+박봉환
+박석덕
+박금우
+박성철
+박흥차
+박갑석
+박종길
+박성한
+박정호
+박필수
+박규도
+박성현
+박기민
+박종봉
+박종열
+박성현
+박일임
+박일경
+박창수
+박성호
+박태석
+박태용
+박재기
+박성호
+박태균
+박혜석
+박무원
+박성환
+박재순
+박태순
+박영기
+박성희
+박호준
+박소용
+박규수
+박세학
+박영부
+박판열
+박만웅
+박세헌
+박태채
+박윤회
+박영규
+박소선
+박행철
+박충삼
+박식현
+박송견
+박영우
+박춘이
+박성현
+박송연
+박봉철
+박몽호
+박영우
+박수갑
+박인실
+박대수
+박강종
+박수걸
+박재수
+박진화
+박두헌
+박수경
+박성진
+박재식
+박규운
+박수규
+박선성
+박창란
+박병도
+박수명
+박상철
+박남성
+박선길
+박수목
+박태덕
+박삼길
+박정홍
+박수민
+박수도
+박헌열
+박성열
+박수복
+박진곤
+박차용
+박무리
+박수열
+박석순
+박병우
+박재선
+박수원
+박수식
+박영수
+박봉숙
+박수찬
+박 수
+박우연
+박학신
+박수천
+박애복
+박윤우
+박복빈
+박수학
+박재팔
+박종곤
+박홍길
+박수한
+박광용
+박종근
+박문인
+박수향
+박재환
+박병택
+박건재
+박수호
+박금자
+박정국
+박만출
+박수희
+박재수
+박영우
+박재열
+박숙현
+박성문
+박낙길
+박사휴
+박숙희
+박재철
+박태열
+박월모
+박순갑
+박성동
+박종석
+박해식
+박순관
+박판이
+박월이
+박강천
+박순금
+박철균
+박태식
+박종식
+박순길
+박주성
+박 웅
+박정웅
+박순남
+박순수
+박석식
+박도영
+박순덕
+박재조
+박하환
+박호원
+박순도
+박무수
+박상숙
+박영동
+박순돌
+박종배
+박석순
+박해길
+박순동
+박현수
+박규하
+박일택
+박순득
+박영인
+박성호
+박승재
+박순복
+박음진
+박용덕
+박차운
+박순석
+박상이
+박태열
+박인수
+박순암
+박진경
+박상수
+박영주
+박순옥
+박운윤
+박용란
+박광목
+박순옥
+박영현
+박용수
+박점우
+박순옥
+박찬자
+박광용
+박종종
+박순옥
+박중식
+박봉성
+박연명
+박순옥
+박소순
+박은훈
+박창갑
+박순옥
+박덕제
+박해태
+박오용
+박순임
+박성용
+박수헌
+박미대
+박순자
+박선호
+박안암
+박기점
+박순자
+박경현
+박종제
+박칠숙
+박순자
+박한순
+박외조
+박충원
+박순자
+박오규
+박진선
+박영순
+박순조
+박승연
+박철강
+박용천
+박순직
+박용목
+박창국
+박정태
+박순찬
+박홍술
+박진복
+박영욱
+박순천
+박 식
+박재식
+박용중
+박순호
+박효배
+박소기
+박일남
+박순희
+박광석
+박규우
+박기상
+박술헌
+박현식
+박권호
+박명분
+박승규
+박필수
+박직영
+박주한
+박승대
+박기태
+박순자
+박순일
+박승립
+박용호
+박성호
+박일한
+박승목
+박병찬
+박도만
+박수금
+박신웅
+박동석
+박동부
+박태현
+박신율
+박석영
+박대도
+박태숙
+박신제
+박순희
+박상균
+박영수
+박신지
+박경현
+박만주
+박종택
+박신하
+박선호
+박점일
+박명순
+박신회
+박상철
+박경암
+박말운
+박쌍술
+박종암
+박희숙
+박정복
+박암부
+박용길
+박종희
+박장조
+박양순
+박두윤
+박청식
+박칠중
+박양회
+박병조
+박만기
+박주호
+박언규
+박상만
+박재성
+박주룡
+박언숙
+박만수
+박홍락
+박금석
+박언업
+박남진
+박금상
+박용수
+박연수
+박운목
+박태성
+박만권
+박연순
+박병성
+박상오
+박점호
+박연심
+박영선
+박태덕
+박팔식
+박연용
+박조말
+박태도
+박상조
+박연차
+박재복
+박승훈
+박진란
+박연황
+박학호
+박명란
+박정기
+박연흠
+박선우
+박희순
+박정작
+박연희
+박은순
+박태명
+박정월
+박영규
+박종희
+박진윤
+박상진
+박영길
+박귀모
+박무욱
+박의진
+박영덕
+박장식
+박삼군
+박영웅
+박영득
+박필인
+박희식
+박정수
+박영란
+박신오
+박재걸
+박성선
+박영록
+박동원
+박기이
+박덕철
+박영봉
+박덕순
+박창도
+박병일
+박영선
+박동수
+박소용
+박학진
+박영선
+박춘열
+박보수
+박애경
+박영선
+박종휘
+박하기
+박진이
+박영섭
+박병연
+박점학
+박타규
+박영수
+박영악
+박영균
+박규호
+박영술
+박규규
+박준식
+박재수
+박영식
+박순수
+박종조
+박형진
+박영식
+박재자
+박만기
+박성선
+박영오
+박재호
+박중화
+박충식
+박영우
+박순범
+박광성
+박병현
+박영욱
+박동환
+박진태
+박영명
+박영이
+박경황
+박태훈
+박영윤
+박영일
+박규록
+박경봉
+박석수
+박영자
+박남호
+박순서
+박성관
+박영재
+박창식
+박문수
+박해석
+박영제
+박오재
+박하재
+박주규
+박영조
+박광원
+박봉태
+박기갑
+박영주
+박정옥
+박문훈
+박이영
+박영준
+박덕임
+박복구
+박삼수
+박영철
+박성환
+박재석
+박정악
+박영철
+박동문
+박시결
+박재원
+박영철
+박탁순
+박석경
+박운돌
+박영철
+박창석
+박말수
+박기태
+박영춘
+박재문
+박쾌환
+박청경
+박영출
+박수택
+박상녀
+박규병
+박영태
+박중용
+박재석
+박영조
+박영필
+박영봉
+박달수
+박원승
+박영하
+박동열
+박영복
+박순수
+박영화
+박진분
+박병자
+박만심
+박영화
+박정경
+박장희
+박중희
+박영화
+박상숙
+박중숙
+박광조
+박영환
+박남오
+박주옥
+박월주
+박영환
+박칠득
+박우복
+박만은
+박영휘
+박귀호
+박종수
+박봉련
+박오득
+박광옥
+박학태
+박종석
+박오순
+박명택
+박영수
+박학은
+박오주
+박춘호
+박승섭
+박춘호
+박옥균
+박정화
+박진승
+박영중
+박옥동
+박헌덕
+박영열
+박길순
+박옥수
+박수영
+박기근
+박재홍
+박옥순
+박연완
+박병덕
+박은래
+박옥순
+박재세
+박응순
+박복섭
+박옥이
+박우영
+박동태
+박영완
+박옥자
+박경규
+박경병
+박성영
+박옥태
+박소홍
+박동현
+박성혁
+박왕렬
+박종선
+박환하
+박우준
+박외수
+박형자
+박우기
+박만석
+박외환
+박상현
+박두국
+박용선
+박용관
+박동호
+박영환
+박종율
+박용구
+박판준
+박현호
+박정묵
+박용권
+박승덕
+박 화
+박재호
+박용근
+박유영
+박병희
+박달배
+박용근
+박명상
+박태택
+박복채
+박용대
+박수길
+박문목
+박광호
+박용도
+박만관
+박점완
+박쌍옥
+박용만
+박말도
+박숙희
+박창만
+박용보
+박영우
+박동구
+박희기
+박용석
+박기준
+박묘진
+박종순
+박용수
+박의희
+박용모
+박용관
+박용수
+박해준
+박상영
+박숙춘
+박용수
+박주한
+박기규
+박왕환
+박용순
+박춘식
+박창열
+박영만
+박용암
+박경기
+박상태
+박낙홍
+박용준
+박연식
+박태룡
+박준수
+박용준
+박상록
+박동열
+박영규
+박용철
+박영식
+박우수
+박재관
+박용철
+박병환
+박암봉
+박상연
+박용학
+박민연
+박영국
+박상연
+박용학
+박기순
+박영국
+박장석
+박용한
+박수남
+박종호
+박만성
+박용헌
+박태오
+박봉중
+박임렬
+박용헌
+박혜술
+박동보
+박원임
+박용현
+박두수
+박춘기
+박광웅
+박용호
+박태생
+박태희
+박상돌
+박용호
+박판암
+박용길
+박수일
+박우목
+박춘현
+박판일
+박하경
+박우미
+박경자
+박동근
+박상수
+박우식
+박장순
+박중식
+박장호
+박운환
+박성권
+박영환
+박경호
+박원구
+박종수
+박용조
+박광석
+박원석
+박종민
+박정석
+박광수
+박원석
+박영조
+박선이
+박명미
+박원여
+박경조
+박영갑
+박수중
+박원이
+박상호
+박진모
+박의근
+박원종
+박강탁
+박지현
+박익술
+박원종
+박기호
+박영기
+박성라
+박원태
+박상철
+박호규
+박용홍
+박원학
+박일희
+박만순
+박정향
+박원회
+박철조
+박문형
+박중채
+박월남
+박영원
+박윤식
+박권학
+박월선
+박종태
+박정식
+박문순
+박월수
+박재식
+박경진
+박영열
+박위순
+박효영
+박운필
+박세동
+박위한
+박일규
+박용배
+박현식
+박유덕
+박 륜
+박인순
+박옥포
+박윤도
+박환기
+박기선
+박성주
+박윤락
+박일희
+박종수
+박현식
+박윤목
+박소순
+박복택
+박상선
+박윤수
+박재기
+박남정
+박태조
+박윤옥
+박진용
+박희진
+박성은
+박윤정
+박현준
+박동용
+박숙길
+박윤정
+박상선
+박금갑
+박영연
+박윤정
+박상노
+박재태
+박달주
+박윤준
+박효진
+박진암
+박진순
+박윤헌
+박원현
+박병문
+박태순
+박윤현
+박대호
+박채연
+박말선
+박윤환
+박노권
+박태균
+박정수
+박은경
+박말길
+박윤이
+박병돈
+박은교
+박영순
+박판철
+박한성
+박은동
+박선환
+박안주
+박순현
+박은수
+박순문
+박필순
+박달한
+박은수
+박태권
+박수길
+박한찬
+박은수
+박헌흔
+박용식
+박충준
+박은주
+박세순
+박태조
+박영국
+박은찬
+박분례
+박순동
+박해현
+박을선
+박정호
+박금순
+박광희
+박응모
+박원곤
+박인만
+박춘열
+박의인
+박옥부
+박부규
+박정일
+박이규
+박영극
+박재순
+박수조
+박이상
+박미남
+박판춘
+박기자
+박이술
+박성식
+박도태
+박공수
+박이형
+박태근
+박충술
+박윤혁
+박이호
+박효수
+박화조
+박수숙
+박이환
+박기철
+박근식
+박세태
+박익규
+박해수
+박상열
+박재채
+박인권
+박명수
+박주보
+박태식
+박인배
+박정수
+박계순
+박준희
+박인숙
+박정근
+박영남
+박천호
+박인순
+박수용
+박철택
+박양돌
+박인술
+박맹수
+박영애
+박상현
+박인식
+박원덕
+박수원
+박성택
+박인자
+박홍오
+박인달
+박호영
+박인철
+박수이
+박갑식
+박장우
+박인표
+박해진
+박도용
+박진원
+박인헌
+박병기
+박순조
+박해호
+박일권
+박연종
+박명순
+박대우
+박일권
+박매병
+박재용
+박창곤
+박일규
+박종치
+박우선
+박상교
+박일규
+박대만
+박인술
+박정규
+박일동
+박인배
+박우원
+박진석
+박일동
+박상배
+박천문
+박갑술
+박일명
+박해조
+박순철
+박주균
+박일병
+박점배
+박대만
+박충성
+박일봉
+박 남
+박정술
+박윤철
+박일석
+박민복
+박종장
+박옥주
+박일선
+박성조
+박상칠
+박성정
+박일용
+박진봉
+박종범
+박태덕
+박일헌
+박정석
+박관종
+박오돌
+박일호
+박진종
+박종희
+박진식
+박일화
+박병만
+박순호
+박해철
+박임극
+박경선
+박타수
+박대운
+박임원
+박부용
+박일범
+박상강
+박자동
+박도석
+박금성
+박지권
+박장길
+박장조
+박성화
+박태덕
+박장명
+박병석
+박상홍
+박준호
+박장출
+박봉선
+박수술
+박충원
+박장회
+박노학
+박경식
+박태현
+박장흠
+박의종
+박만흠
+박명자
+박재갑
+박주도
+박안헌
+박상재
+박재갑
+박욱현
+박판영
+박보흠
+박재경
+박재수
+박명경
+박무경
+박재경
+박금순
+박정완
+박종식
+박재경
+박득식
+박곡수
+박갑근
+박재곤
+박윤용
+박준열
+박성열
+박재관
+박정도
+박소청
+박병주
+박재권
+박영환
+박명규
+박우은
+박재규
+박경인
+박상주
+박재봉
+박재규
+박현조
+박천득
+박종영
+박재규
+박양호
+박동원
+박석규
+박재규
+박경호
+박준권
+박봉자
+박재규
+박일일
+박수연
+박길조
+박재근
+박증윤
+박헌식
+박용진
+박재근
+박규향
+박성현
+박수하
+박재금
+박동석
+박춘환
+박태생
+박재기
+박재수
+박충철
+박영근
+박재기
+박영현
+박성수
+박용갑
+박재기
+박은희
+박성석
+박종길
+박재노
+박영주
+박영호
+박희규
+박재동
+박계조
+박기화
+박태수
+박재두
+박영문
+박문막
+박귀호
+박재란
+박의구
+박옥자
+박선학
+박재리
+박언환
+박혜환
+박순섭
+박재림
+박성도
+박태태
+박승태
+박재만
+박정재
+박재지
+박순기
+박재명
+박소동
+박준건
+박락조
+박재복
+박판순
+박기묵
+박정진
+박재분
+박인재
+박윤희
+박종남
+박재상
+박삼식
+박상훈
+박휘환
+박재선
+박성자
+박노준
+박대기
+박재열
+박희래
+박재암
+박해영
+박재영
+박인조
+박용규
+박홍훈
+박재옥
+박운섭
+박건순
+박진모
+박재옥
+박귀현
+박철복
+박덕록
+박재완
+박동주
+박석희
+박태채
+박재완
+박영영
+박상갑
+박봉이
+박재용
+박강협
+박차건
+박병주
+박재운
+박성석
+박기근
+박미출
+박재원
+박권동
+박상례
+박명근
+박재원
+박태연
+박해상
+박외식
+박재윤
+박헌규
+박규웅
+박무상
+박재일
+박태현
+박홍길
+박호식
+박재일
+박종자
+박태기
+박필철
+박재진
+박항주
+박점식
+박기걸
+박재진
+박수희
+박재봉
+박봉식
+박재철
+박상주
+박인식
+박재복
+박재출
+박양태
+박상휴
+박의현
+박재학
+박원도
+박상일
+박홍현
+박재항
+박영원
+박우학
+박덕영
+박재현
+박기영
+박동중
+박태희
+박재현
+박진권
+박정문
+박용배
+박재현
+박문강
+박윤기
+박병연
+박재호
+박인원
+박병조
+박일현
+박재호
+박종삼
+박의해
+박재태
+박재호
+박우숙
+박규선
+박진대
+박재홍
+박말호
+박상석
+박귀배
+박재홍
+박태수
+박태복
+박진웅
+박재홍
+박두호
+박성호
+박영봉
+박재홍
+박술환
+박태영
+박기득
+박재환
+박철웅
+박재식
+박경로
+박재환
+박중운
+박창휴
+박진장
+박재환
+박용자
+박명원
+박은지
+박재환
+박중근
+박태철
+박우덕
+박재훈
+박우기
+박종환
+박영상
+박점동
+박석선
+박옥홍
+박정현
+박점보
+박창동
+박창완
+박구택
+박점수
+박점이
+박석수
+박억윤
+박점순
+박덕묵
+박창회
+박명현
+박점술
+박종덕
+박진선
+박형화
+박점술
+박화식
+박영명
+박광주
+박점식
+박병환
+박만호
+박차언
+박점용
+박두조
+박윤호
+박계재
+박점이
+박헌환
+박만조
+박헌숙
+박정국
+박준수
+박동규
+박을영
+박정규
+박우기
+박승문
+박경화
+박정기
+박부덕
+박명상
+박상숙
+박정기
+박묘원
+박영경
+박상경
+박정남
+박상현
+박영춘
+박재돌
+박정덕
+박종자
+박금열
+박영호
+박정덕
+박종남
+박재길
+박복수
+박정도
+박경수
+박성옥
+박연순
+박정도
+박동호
+박남기
+박태수
+박정동
+박학목
+박순분
+박인식
+박정득
+박선식
+박영자
+박순학
+박정례
+박삼호
+박태옥
+박주언
+박정배
+박대호
+박성헌
+박범재
+박정봉
+박광구
+박미수
+박문수
+박정부
+박재자
+박영선
+박수애
+박정성
+박희호
+박복문
+박영희
+박정수
+박동석
+박종배
+박병숙
+박정수
+박춘연
+박도규
+박선배
+박정수
+박성출
+박석식
+박월길
+박정수
+박승남
+박소원
+박수수
+박정수
+박기선
+박임익
+박상승
+박정수
+박용덕
+박용찬
+박석복
+박정순
+박관일
+박두조
+박임덕
+박정순
+박대남
+박재철
+박순식
+박정식
+박기일
+박월하
+박수하
+박정식
+박병우
+박금관
+박정곤
+박정실
+박상선
+박종원
+박병대
+박정애
+박국남
+박창길
+박병용
+박정연
+박필현
+박영중
+박재웅
+박정열
+박승순
+박영례
+박종호
+박정오
+박헌웅
+박인도
+박태돌
+박정용
+박영석
+박일용
+박주현
+박정용
+박춘철
+박득조
+박학규
+박정운
+박상출
+박석기
+박원춘
+박정운
+박낙학
+박주웅
+박병석
+박정일
+박겸갑
+박종동
+박양노
+박정임
+박동수
+박관수
+박경현
+박정자
+박상화
+박동수
+박천진
+박정자
+박욱순
+박 춘
+박사현
+박정자
+박기호
+박외석
+박윤조
+박정철
+박점하
+박수동
+박성식
+박정출
+박영학
+박선태
+박순출
+박정하
+박동욱
+박승희
+박혜조
+박정하
+박주기
+박석현
+박광록
+박정학
+박재석
+박영윤
+박주순
+박정한
+박노천
+박시대
+박영수
+박정향
+박 상
+박정현
+박병만
+박정헌
+박정만
+박희용
+박용호
+박정호
+박기근
+박영균
+박세식
+박정화
+박현이
+박한호
+박분진
+박정희
+박기렬
+박도식
+박상창
+박정희
+박향희
+박명호
+박판아
+박정희
+박해중
+박충옥
+박계술
+박제남
+박희환
+박오근
+박왕석
+박조이
+박이조
+박남득
+박임복
+박조이
+박용범
+박경환
+박진석
+박종걸
+박선수
+박보순
+박광봉
+박종국
+박주가
+박인도
+박광진
+박종권
+박태봉
+박난숙
+박상목
+박종규
+박계흥
+박상기
+박대용
+박종규
+박선화
+박세제
+박선열
+박종근
+박동식
+박기희
+박정호
+박종근
+박경철
+박연훈
+박종연
+박종근
+박병영
+박재배
+박정자
+박종기
+박대근
+박황호
+박정점
+박종길
+박남기
+박기숙
+박춘분
+박종달
+박재정
+박진출
+박맹수
+박종대
+박영경
+박종숙
+박계석
+박종득
+박용순
+박봉이
+박헌수
+박종락
+박희권
+박병율
+박경덕
+박종래
+박재노
+박재성
+박병섭
+박종민
+박태윤
+박환권
+박혜구
+박종민
+박원훈
+박옥현
+박상출
+박종복
+박경조
+박성영
+박병호
+박종상
+박영섭
+박용우
+박삼학
+박종석
+박용성
+박성래
+박재관
+박종석
+박 중
+박홍아
+박주근
+박종섭
+박병도
+박제선
+박경근
+박종섭
+박성조
+박삼수
+박재영
+박종수
+박동하
+박주봉
+박상규
+박종수
+박길화
+박정식
+박정순
+박종수
+박현정
+박도관
+박수희
+박종숙
+박진선
+박외포
+박병민
+박종순
+박해권
+박주수
+박동기
+박종순
+박영태
+박수섭
+박대찬
+박종술
+박해열
+박중우
+박용향
+박종식
+박복수
+박남용
+박태배
+박종식
+박건호
+박창우
+박쌍도
+박종식
+박정곤
+박병순
+박윤기
+박종식
+박영경
+박명삼
+박주식
+박종열
+박연술
+박희원
+박종호
+박종열
+박말환
+박덕조
+박태해
+박종영
+박종호
+박정임
+박관균
+박종오
+박순건
+박태철
+박창록
+박종오
+박광현
+박주열
+박희환
+박종옥
+박병철
+박용수
+박소석
+박종우
+박극관
+박민원
+박정수
+박종욱
+박근승
+박봉숙
+박수석
+박종원
+박사권
+박일출
+박판배
+박종원
+박문호
+박용기
+박금식
+박종율
+박삼성
+박봉락
+박미부
+박종인
+박성옥
+박재식
+박정기
+박종주
+박수학
+박종도
+박규복
+박종진
+박점환
+박일옥
+박득례
+박종진
+박판정
+박운용
+박남운
+박종철
+박상호
+박수균
+박상조
+박종한
+박규식
+박병희
+박성석
+박종호
+박명환
+박만수
+박상태
+박종호
+박성규
+박순식
+박계곤
+박종호
+박재용
+박상준
+박승원
+박종호
+박영규
+박복술
+박병채
+박종호
+박종석
+박희인
+박부임
+박종화
+박성현
+박길규
+박용성
+박종화
+박창만
+박병기
+박종준
+박종훈
+박임현
+박주호
+박판곤
+박종훈
+박병윤
+박동준
+박장기
+박종휘
+박경순
+박찬부
+박일수
+박종희
+박보영
+박칠주
+박영조
+박주관
+박덕호
+박상애
+박태애
+박주국
+박종순
+박도환
+박호복
+박주노
+박상석
+박상철
+박성도
+박주도
+박호수
+박기생
+박해영
+박주돌
+박신기
+박기걸
+박재식
+박주말
+박해운
+박창수
+박태일
+박주복
+박선연
+박제포
+박재학
+박주석
+박현숙
+박수택
+박규택
+박주성
+박계리
+박달기
+박만치
+박주수
+박복갑
+박용환
+박소호
+박주양
+박태용
+박정복
+박용길
+박주오
+박판조
+박귀만
+박성래
+박주완
+박호옥
+박희배
+박경로
+박주우
+박상곤
+박환련
+박상수
+박주원
+박승준
+박승선
+박정덕
+박주탁
+박효옥
+박윤섭
+박 근
+박주태
+박성도
+박영선
+박윤환
+박주택
+박영명
+박영규
+박상복
+박주팔
+박면돌
+박정연
+박영인
+박주해
+박병현
+박명수
+박미달
+박주현
+박주오
+박정만
+박성숙
+박주환
+박순화
+박용임
+박용조
+박준규
+박재연
+박병백
+박동한
+박준무
+박재석
+박달석
+박석형
+박준배
+박대식
+박해호
+박홍준
+박준석
+박성규
+박주호
+박수곤
+박준열
+박귀량
+박태언
+박재복
+박준용
+박석근
+박차술
+박두재
+박준태
+박양하
+박중수
+박옥석
+박준호
+박은년
+박학순
+박진주
+박준호
+박도시
+박순차
+박만경
+박중건
+박진식
+박갑훈
+박상식
+박중규
+박석립
+박용수
+박효수
+박중채
+박상우
+박성기
+박재선
+박지섭
+박연균
+박수암
+박병전
+박지수
+박상수
+박종호
+박선덕
+박지술
+박병수
+박중우
+박영옥
+박지옥
+박병유
+박영진
+박용조
+박지용
+박춘호
+박영천
+박근소
+박지용
+박종식
+박대섭
+박소식
+박지주
+박진식
+박영근
+박호영
+박지한
+박재환
+박춘선
+박삼주
+박지혁
+박윤주
+박길성
+박정자
+박지호
+박우길
+박익수
+박태출
+박지환
+박점도
+박정회
+박진숙
+박지훈
+박종철
+박규수
+박갑우
+박진규
+박성자
+박원헌
+박부곤
+박진규
+박수환
+박병식
+박재수
+박진부
+박길현
+박종탁
+박현자
+박진성
+박덕석
+박상식
+박인배
+박진성
+박무태
+박상웅
+박경환
+박진우
+박재종
+박병선
+박영용
+박진우
+박삼성
+박균명
+박동희
+박진철
+박수호
+박수화
+박병수
+박진헌
+박숙진
+박정자
+박찬열
+박진호
+박쌍태
+박연률
+박태호
+박진화
+박재운
+박상주
+박행윤
+박진환
+박성환
+박대남
+박기태
+박차근
+박묘곤
+박경이
+박상수
+박차만
+박정옥
+박숙동
+박정규
+박차봉
+박철승
+박재옥
+박범석
+박차수
+박현식
+박영선
+박주주
+박차임
+박원연
+박영식
+박해곤
+박차헌
+박선순
+박창환
+박용민
+박찬규
+박태관
+박정출
+박이희
+박찬동
+박쌍복
+박용숙
+박덕학
+박찬부
+박장우
+박재호
+박학국
+박찬수
+박종수
+박재동
+박상선
+박찬현
+박정수
+박석호
+박근봉
+박찬호
+박익영
+박창출
+박성관
+박찬호
+박희숙
+박순식
+박태희
+박찬훈
+박기판
+박강단
+박일석
+박창갑
+박진태
+박태식
+박정윤
+박창규
+박월흠
+박성식
+박용성
+박창규
+박종식
+박순고
+박봉만
+박창균
+박석열
+박재환
+박분성
+박창대
+박학영
+박태택
+박한건
+박창수
+박래수
+박경희
+박무환
+박창수
+박상학
+박인호
+박장택
+박창순
+박동수
+박원길
+박정계
+박창식
+박영주
+박순호
+박재재
+박창현
+박정준
+박성은
+박재자
+박창호
+박용욱
+박원환
+박순현
+박창호
+박동수
+박화규
+박성근
+박창호
+박준환
+박점순
+박판만
+박창호
+박상연
+박석순
+박종호
+박창환
+박정숙
+박옥선
+박영기
+박천덕
+박근기
+박기수
+박연훈
+박천섭
+박해철
+박왕하
+박사화
+박천수
+박영철
+박동향
+박중진
+박천후
+박성훈
+박삼윤
+박갑규
+박철규
+박한광
+박영배
+박은철
+박철규
+박범랑
+박상훈
+박효환
+박철수
+박재기
+박정우
+박영복
+박철우
+박주희
+박영훈
+박동수
+박철호
+박중태
+박태곤
+박미자
+박철호
+박규규
+박대훈
+박재진
+박철회
+박재홍
+박경섭
+박광숙
+박청이
+박권수
+박만상
+박복병
+박청회
+박종기
+박시문
+박증순
+박춘
+박병
+박순
+박두
+박춘경
+박점모
+박정란
+박소황
+박춘광
+박익준
+박정생
+박칠용
+박춘길
+박승서
+박덕수
+박영도
+박춘복
+박순영
+박성환
+박상만
+박춘선
+박무옥
+박노우
+박범근
+박춘수
+박덕명
+박대천
+박춘준
+박춘수
+박해훈
+박흥호
+박현미
+박춘식
+박중래
+박호섭
+박기계
+박춘영
+박석숙
+박종천
+박학환
+박춘영
+박진현
+박정선
+박병동
+박춘영
+박태호
+박상원
+박명경
+박춘일
+박상곤
+박상호
+박삼희
+박춘호
+박경도
+박용환
+박태재
+박춘화
+박태수
+박판용
+박기실
+박춘희
+박금운
+박쌍도
+박두철
+박충흠
+박성우
+박미균
+박중식
+박치숙
+박종선
+박순광
+박천수
+박칠문
+박창원
+박평무
+박경흠
+박칠용
+박만수
+박석수
+박한주
+박태경
+박병달
+박충용
+박재익
+박태곤
+박병돌
+박경찬
+박인양
+박태규
+박기순
+박종규
+박동연
+박태규
+박성희
+박 오
+박덕희
+박태규
+박병운
+박임연
+박복만
+박태균
+박광수
+박병근
+박을인
+박태근
+박소희
+박진목
+박재순
+박태근
+박정규
+박용진
+박대화
+박태동
+박용옥
+박진구
+박상자
+박태득
+박정암
+박재윤
+박종식
+박태림
+박충태
+박시호
+박봉분
+박태문
+박수조
+박승주
+박암선
+박태범
+박영미
+박희훈
+박상일
+박태봉
+박용래
+박종근
+박영근
+박태봉
+박명택
+박태철
+박진수
+박태상
+박찬부
+박금식
+박양순
+박태석
+박필수
+박성규
+박남환
+박태선
+박호식
+박해성
+박수호
+박태섭
+박재규
+박쾌선
+박낙출
+박태성
+박양태
+박재빈
+박원식
+박태성
+박상보
+박태식
+박영관
+박태수
+박상국
+박운근
+박영기
+박태수
+박봉택
+박건윤
+박우택
+박태순
+박환택
+박근수
+박상순
+박태식
+박영근
+박은용
+박일진
+박태식
+박종연
+박양재
+박학희
+박태암
+박우오
+박병복
+박소열
+박태연
+박풍이
+박만명
+박숙근
+박태영
+박시복
+박동술
+박경복
+박태영
+박원근
+박광련
+박정영
+박태완
+박성옥
+박규열
+박헌자
+박태용
+박영순
+박정채
+박명태
+박태우
+박광수
+박광경
+박규섭
+박태원
+박용영
+박차수
+박갑조
+박태윤
+박학식
+박대길
+박태택
+박태일
+박무식
+박영만
+박준수
+박태정
+박삼순
+박수현
+박희임
+박태주
+박상호
+박용형
+박성선
+박태주
+박정경
+박길순
+박효환
+박태철
+박영이
+박월호
+박진수
+박태학
+박정술
+박남진
+박혜조
+박태헌
+박정문
+박해국
+박연순
+박태현
+박동수
+박수영
+박을현
+박태형
+박석호
+박병근
+박무선
+박태호
+박기기
+박경섭
+박용수
+박태호
+박익봉
+박종조
+박진기
+박태호
+박임록
+박종춘
+박차현
+박태홍
+박헌태
+박병진
+박재선
+박태화
+박남금
+박영정
+박길훈
+박태환
+박종주
+박주우
+박송철
+박태회
+박정순
+박동권
+박주영
+박태훈
+박재숙
+박영상
+박설길
+박판고
+박정권
+박순숙
+박효근
+박판근
+박명식
+박종대
+박욱동
+박판덕
+박태만
+박영호
+박옥이
+박판도
+박종수
+박수수
+박종식
+박판석
+박연권
+박삼호
+박정익
+박판출
+박성랑
+박기호
+박성식
+박판헌
+박영주
+박보고
+박수석
+박팔수
+박종수
+박구택
+박문주
+박풍언
+박화연
+박수규
+박희준
+박하경
+박무식
+박희란
+박경이
+박학서
+박태용
+박동봉
+박윤우
+박한규
+박묘원
+박철은
+박신석
+박한기
+박철식
+박태식
+박근배
+박한수
+박부근
+박병규
+박정호
+박한조
+박재환
+박선갑
+박장삼
+박항치
+박달순
+박성용
+박채옥
+박해규
+박효옥
+박수기
+박용훈
+박해도
+박춘강
+박석식
+박성호
+박해도
+박태식
+박희기
+박춘노
+박해동
+박봉현
+박광기
+박순기
+박해동
+박신규
+박연연
+박정왕
+박해동
+박정삼
+박정환
+박인석
+박해룡
+박길섭
+박성순
+박귀봉
+박해룡
+박병수
+박성상
+박수구
+박해붕
+박분영
+박상선
+박유연
+박해석
+박자순
+박구자
+박봉수
+박해성
+박규수
+박후연
+박영수
+박해자
+박정구
+박기재
+박영동
+박해조
+박도숙
+박상이
+박상용
+박향연
+박면기
+박삼환
+박동용
+박헌규
+박성회
+박태운
+박정길
+박헌덕
+박순수
+박명삼
+박병한
+박헌원
+박점선
+박근남
+박창천
+박현민
+박갑봉
+박영택
+박상조
+박현섭
+박재선
+박병식
+박양수
+박현섭
+박금선
+박성수
+박기홍
+박현수
+박인순
+박갑환
+박현갑
+박현수
+박회진
+박광련
+박옥도
+박현수
+박인도
+박기열
+박학기
+박현숙
+박태영
+박복우
+박승도
+박현신
+박봉홍
+박영웅
+박승열
+박현업
+박기헌
+박은자
+박영순
+박현우
+박규계
+박홍규
+박종호
+박현주
+박태강
+박중근
+박진수
+박현채
+박일영
+박수규
+박계제
+박현태
+박순성
+박재탁
+박동열
+박현환
+박영기
+박병동
+박동분
+박형래
+박해원
+박차옥
+박기향
+박형서
+박영희
+박영조
+박원홍
+박형재
+박형자
+박병해
+박희영
+박혜자
+박봉순
+박철숙
+박분용
+박호규
+박옥구
+박상문
+박삼순
+박호근
+박영율
+박종섭
+박영구
+박호동
+박갑영
+박규조
+박정태
+박호봉
+박상환
+박종식
+박태암
+박호석
+박한식
+박성갑
+박효남
+박호정
+박창암
+박동종
+박명선
+박호진
+박옥주
+박재수
+박덕철
+박호춘
+박경만
+박장이
+박상원
+박홍근
+박동수
+박찬기
+박달태
+박홍길
+박경영
+박용필
+박화순
+박홍동
+박귀선
+박위철
+박순우
+박홍묵
+박소미
+박영익
+박복규
+박홍빈
+박인준
+박태균
+박삼선
+박환열
+박성환
+박광구
+박성재
+박환이
+박영숙
+박미헌
+박명야
+박황경
+박무우
+박택호
+박용윤
+박회근
+박춘택
+박선금
+박구길
+박효규
+박상술
+박말호
+박대식
+박효종
+박덕례
+박진상
+박병규
+박휘삼
+박진옥
+박옥원
+박상순
+박희동
+박수동
+박순섭
+박영호
+박희복
+박갑난
+박영현
+박일헌
+박희상
+박홍도
+박재현
+박시제
+박희석
+박병성
+박광식
+박종재
+박희성
+박성련
+박정문
+박재세
+박희성
+박광금
+박대돌
+박봉환
+박희송
+박선범
+박량철
+박재국
+박희연
+박민덕
+박두호
+박성동
+박희열
+박동석
+박태재
+박경철
+박희장
+박종란
+박옥권
+박덕치
+박희진
+박수규
+박성걸
+박상상
+박희채
+박갑원
+박종갑
+박기근
+박희철
+박성래
+박성복
+박겸환
+박희철
+박 봉
+박재현
+박종화
+박희태
+박창남
+박길기
+박대용
+방 길
+방일형
+방태제
+방용업
+방경조
+방돈수
+방옥중
+방자섭
+방길정
+방시현
+방건해
+방승화
+방덕준
+방옥이
+방수용
+방태조
+방미정
+방인화
+방인식
+방순호
+방병섭
+방종영
+방병정
+방옥수
+방상곤
+방영식
+방경환
+방오연
+방승규
+방재수
+방상원
+방상운
+방신선
+방선자
+방갑도
+방상구
+방영균
+방임순
+방상우
+방병수
+방영대
+방호창
+방종택
+방재순
+방영익
+방낙묘
+방정연
+방노호
+방옥금
+방영관
+방대술
+방영도
+방원제
+방승재
+방현헌
+방한성
+방윤선
+방상노
+방광출
+방을덕
+방윤조
+방칠선
+방항자
+방점희
+방점순
+방상웅
+방중애
+방병언
+방점연
+방정인
+방성웅
+방주규
+방정순
+방기자
+방우수
+방상선
+방종기
+방기남
+방주열
+방재순
+방주남
+방판구
+방차하
+방도우
+방태훈
+방상수
+방영수
+방경석
+방한정
+방무봉
+방지동
+방부일
+방한정
+방억선
+방응실
+방말완
+배 용
+배성호
+배석오
+배태준
+배갑덕
+배윤호
+배병분
+배병현
+배갑석
+배석조
+배종규
+배종훈
+배경륜
+배종출
+배옥순
+배종규
+배경병
+배상이
+배용학
+배용주
+배경열
+배해철
+배수준
+배강순
+배경호
+배현영
+배정이
+배태한
+배계술
+배종자
+배세수
+배영복
+배관호
+배원만
+배윤주
+배기구
+배광수
+배재택
+배일분
+배성학
+배교문
+배헌수
+배윤근
+배만식
+배국리
+배미배
+배영환
+배수우
+배권식
+배재암
+배태호
+배정호
+배권향
+배성고
+배종헌
+배상덕
+배귀선
+배길영
+배영덕
+배영수
+배규환
+배호식
+배해찬
+배용섭
+배근옥
+배영상
+배영순
+배호근
+배근호
+배하원
+배문섭
+배종호
+배금순
+배세웅
+배영점
+배명희
+배금악
+배한선
+배은개
+배영득
+배기봉
+배태기
+배진범
+배성주
+배기분
+배헌지
+배재수
+배해욱
+배기서
+배기순
+배상규
+배준철
+배기효
+배영태
+배학기
+배분환
+배길환
+배홍상
+배이준
+배승용
+배낙포
+배정현
+배성화
+배병동
+배남조
+배명석
+배근이
+배헌미
+배남희
+배병길
+배광철
+배을근
+배달권
+배사기
+배지재
+배순옥
+배대식
+배영기
+배경식
+배용술
+배대호
+배성숙
+배원순
+배종웅
+배덕문
+배영성
+배영용
+배종열
+배덕문
+배윤태
+배수국
+배재수
+배덕석
+배종배
+배진이
+배중기
+배덕수
+배복흠
+배자갑
+배영용
+배덕재
+배근환
+배종석
+배기자
+배도연
+배상환
+배동석
+배영종
+배도연
+배수규
+배말연
+배분일
+배동수
+배병자
+배태현
+배일곤
+배동언
+배정자
+배흥희
+배순삼
+배동훈
+배기상
+배용철
+배재행
+배만권
+배상철
+배의익
+배재일
+배만식
+배춘이
+배순춘
+배영래
+배만실
+배남용
+배원철
+배태일
+배만영
+배무연
+배수근
+배윤철
+배만현
+배기홍
+배미덕
+배홍자
+배말만
+배혜무
+배정희
+배갑호
+배말만
+배병련
+배순용
+배성태
+배말식
+배석택
+배기규
+배현수
+배무길
+배영윤
+배계숙
+배영우
+배무성
+배칠근
+배세섭
+배기수
+배무흠
+배한순
+배해보
+배윤현
+배문자
+배진희
+배경춘
+배순동
+배문호
+배재덕
+배영수
+배재환
+배문휴
+배성하
+배화숙
+배선기
+배범용
+배동수
+배문관
+배현식
+배병국
+배기혜
+배헌희
+배창남
+배병원
+배병식
+배면열
+배영술
+배병제
+배정희
+배금문
+배옥출
+배병하
+배계규
+배영옥
+배외옥
+배병해
+배은도
+배복웅
+배혜운
+배보근
+배석조
+배경연
+배상근
+배복순
+배성조
+배영창
+배희룡
+배봉금
+배말진
+배중술
+배민학
+배봉석
+배오욱
+배필진
+배문호
+배봉용
+배승흠
+배진섭
+배영한
+배봉조
+배복한
+배충성
+배성오
+배봉현
+배재선
+배진월
+배무애
+배봉호
+배재욱
+배만종
+배천표
+배분란
+배종원
+배해식
+배대관
+배분주
+배영화
+배미덕
+배종자
+배삼식
+배영식
+배동욱
+배임기
+배삼환
+배규식
+배갑지
+배재덕
+배상권
+배행수
+배춘옥
+배순득
+배상규
+배길식
+배남조
+배한철
+배상길
+배중래
+배형우
+배소홍
+배상길
+배재연
+배동식
+배흥결
+배상길
+배병구
+배강래
+배태근
+배상대
+배병연
+배준태
+배학길
+배상모
+배만화
+배진호
+배운구
+배상봉
+배차철
+배성용
+배재호
+배상봉
+배미조
+배수송
+배기식
+배상술
+배성식
+배점성
+배남연
+배상열
+배주암
+배수회
+배명옥
+배상용
+배기일
+배분부
+배재한
+배상일
+배규균
+배상수
+배종수
+배상종
+배 천
+배경득
+배기선
+배상창
+배채우
+배갑석
+배상태
+배상한
+배정태
+배상래
+배현순
+배상현
+배주순
+배선목
+배부길
+배상현
+배상수
+배재경
+배종동
+배상호
+배애자
+배재숙
+배애환
+배상훈
+배판운
+배오학
+배주호
+배상희
+배오조
+배길윤
+배응수
+배석문
+배귀성
+배기식
+배종도
+배석암
+배중철
+배태숙
+배원우
+배석출
+배경완
+배성태
+배은일
+배선용
+배난석
+배철원
+배영준
+배선정
+배동순
+배미호
+배인요
+배선호
+배일식
+배질환
+배청영
+배성록
+배황남
+배창곤
+배성군
+배성범
+배학숙
+배용화
+배수규
+배성우
+배종수
+배갑경
+배운우
+배성욱
+배광석
+배항한
+배미건
+배성조
+배기암
+배덕호
+배만빈
+배성태
+배홍관
+배철자
+배귀조
+배성한
+배복준
+배동애
+배유식
+배성혜
+배용현
+배강숙
+배덕복
+배세열
+배성구
+배경택
+배영국
+배소복
+배승원
+배경배
+배경석
+배소순
+배병영
+배창희
+배준섭
+배수광
+배 종
+배판석
+배병성
+배수규
+배순화
+배외상
+배기갑
+배수자
+배영정
+배태용
+배동도
+배수정
+배한수
+배술준
+배명용
+배수현
+배수호
+배흥정
+배재순
+배수호
+배남문
+배난희
+배광모
+배숙환
+배순수
+배영수
+배명도
+배순덕
+배제암
+배나환
+배성호
+배순석
+배순규
+배현호
+배종학
+배순연
+배말종
+배진외
+배남용
+배순옥
+배해호
+배영식
+배상선
+배순태
+배수출
+배정운
+배영규
+배순흠
+배차영
+배선호
+배근주
+배술홍
+배상갑
+배병근
+배홍술
+배신국
+배을진
+배상희
+배교선
+배신호
+배종환
+배성호
+배양대
+배쌍식
+배광용
+배민호
+배삼란
+배암이
+배달조
+배종선
+배보태
+배영기
+배해기
+배유주
+배상현
+배영기
+배종기
+배병선
+배연순
+배영길
+배재홍
+배명치
+배래현
+배영대
+배교수
+배행식
+배병호
+배영도
+배석상
+배두기
+배귀우
+배영문
+배증석
+배봉연
+배병우
+배영문
+배임주
+배기원
+배태화
+배영백
+배기치
+배용순
+배제수
+배영석
+배수동
+배상현
+배희자
+배영섭
+배성진
+배상주
+배수권
+배영수
+배칠희
+배윤춘
+배영국
+배영식
+배영환
+배광택
+배광식
+배영실
+배윤래
+배병동
+배용숙
+배영옥
+배전교
+배학희
+배태순
+배영원
+배을덕
+배광운
+배제동
+배영율
+배 자
+배재효
+배동남
+배영조
+배선국
+배희옥
+배용식
+배영조
+배종정
+배영기
+배순동
+배영준
+배동만
+배용태
+배창복
+배영태
+배달환
+배정호
+배영희
+배영필
+배상술
+배창자
+배상대
+배영호
+배춘자
+배성룡
+배윤현
+배영호
+배백찬
+배무곤
+배영성
+배영환
+배갑식
+배정구
+배덕태
+배옥순
+배창량
+배정길
+배무수
+배옥자
+배대현
+배선영
+배현수
+배옥종
+배정윤
+배형순
+배해식
+배용기
+배효빈
+배점주
+배진수
+배용득
+배금수
+배오근
+배한성
+배용순
+배명선
+배판금
+배대범
+배용술
+배정오
+배상원
+배순환
+배용식
+배용현
+배계성
+배사호
+배용식
+배대일
+배선갑
+배한만
+배용암
+배도록
+배의순
+배판주
+배용진
+배수희
+배경익
+배동성
+배용택
+배병순
+배지재
+배한금
+배용헌
+배은희
+배교정
+배찬철
+배용호
+배천영
+배실수
+배정수
+배우원
+배덕수
+배성선
+배진수
+배욱기
+배일점
+배한지
+배소태
+배원분
+배소기
+배숙조
+배춘수
+배원석
+배호성
+배창균
+배쌍현
+배원표
+배찬조
+배수준
+배선임
+배원호
+배인우
+배작식
+배종수
+배원환
+배순기
+배홍분
+배학수
+배원희
+배경이
+배창희
+배인후
+배윤섭
+배태건
+배귀석
+배한배
+배윤종
+배말익
+배구남
+배두정
+배윤진
+배정희
+배언웅
+배옥억
+배윤천
+배정수
+배영관
+배기란
+배윤표
+배종호
+배수윤
+배복근
+배윤한
+배태강
+배종례
+배병식
+배을봉
+배호웅
+배정태
+배홍혜
+배을선
+배재대
+배경호
+배찬구
+배음연
+배인수
+배은진
+배용섭
+배응원
+배영선
+배성선
+배태출
+배의표
+배우요
+배유근
+배지문
+배의표
+배현희
+배은섭
+배해봉
+배의표
+배영암
+배춘경
+배상려
+배이화
+배성환
+배헌훈
+배금말
+배인기
+배기운
+배명연
+배명동
+배인호
+배명곤
+배종년
+배기열
+배일경
+배종달
+배송근
+배광수
+배일권
+배문조
+배명규
+배종기
+배일선
+배경래
+배극옥
+배영만
+배일현
+배수희
+배철현
+배종주
+배일현
+배원배
+배명자
+배기관
+배일화
+배재근
+배동암
+배종현
+배일환
+배장림
+배병호
+배순선
+배임도
+배영계
+배헌화
+배춘교
+배임도
+배재순
+배채석
+배근섭
+배임순
+배세식
+배강식
+배영금
+배장수
+배신우
+배양기
+배미옥
+배장호
+배종현
+배경수
+배말직
+배장호
+배홍봉
+배두진
+배규열
+배재관
+배병종
+배종진
+배희배
+배재권
+배노시
+배명원
+배수흠
+배재규
+배득율
+배현구
+배양봉
+배재년
+배판수
+배진선
+배덕임
+배재덕
+배차만
+배용식
+배동수
+배재만
+배태성
+배재조
+배세택
+배재봉
+배수오
+배종호
+배성봉
+배재상
+배수수
+배선량
+배종조
+배재수
+배달우
+배돈필
+배수동
+배재영
+배성포
+배철자
+배영만
+배재윤
+배준재
+배준항
+배영훈
+배재은
+배상남
+배규용
+배광영
+배재익
+배영식
+배세현
+배을훈
+배재흥
+배도열
+배성영
+배정식
+배점복
+배태영
+배승수
+배학용
+배점선
+배동암
+배두춘
+배귀년
+배점표
+배정용
+배노수
+배명만
+배정갑
+배영이
+배기현
+배동자
+배정길
+배소복
+배진식
+배성영
+배정도
+배미형
+배장수
+배영암
+배정수
+배길보
+배정태
+배종배
+배정식
+배말광
+배춘구
+배달원
+배정웅
+배응용
+배원준
+배금원
+배정원
+배갑길
+배진화
+배홍용
+배정제
+배경팔
+배명현
+배래석
+배정태
+배창경
+배경권
+배원기
+배정한
+배대현
+배청배
+배헌오
+배정환
+배수영
+배규근
+배명오
+배정희
+배정현
+배영환
+배장선
+배종만
+배삼규
+배세용
+배태술
+배종식
+배병애
+배경술
+배차국
+배종욱
+배홍수
+배기식
+배종여
+배종철
+배현섭
+배경오
+배종자
+배종화
+배덕식
+배종호
+배임규
+배종희
+배태도
+배상열
+배교봉
+배주한
+배만수
+배원기
+배운원
+배준근
+배오용
+배효재
+배원악
+배준호
+배지식
+배태웅
+배순경
+배중호
+배영환
+배선훈
+배성수
+배진동
+배차수
+배성학
+배경현
+배진영
+배주맹
+배상섭
+배석자
+배차문
+배일석
+배갑호
+배자기
+배창대
+배지해
+배규수
+배선균
+배창수
+배성수
+배말화
+배금규
+배창식
+배정순
+배쌍상
+배오열
+배창욱
+배달용
+배옥암
+배경열
+배창인
+배종오
+배귀수
+배병조
+배창호
+배호식
+배정돌
+배용용
+배창호
+배정희
+배성용
+배을현
+배천범
+배달근
+배종준
+배종대
+배칠진
+배영근
+배재중
+배인호
+배칠환
+배도철
+배의열
+배재현
+배태곤
+배사금
+배숙수
+배태호
+배태만
+배상호
+배준호
+배송남
+배태명
+배종태
+배인윤
+배귀영
+배태석
+배일자
+배재원
+배세권
+배태연
+배효철
+배성환
+배경희
+배태자
+배재심
+배병한
+배종곤
+배태현
+배래호
+배동수
+배을혹
+배태호
+배해자
+배영희
+배우순
+배태호
+배상수
+배광규
+배재희
+배태환
+배진일
+배장환
+배갑선
+배판식
+배덕언
+배문남
+배종열
+배판이
+배정숙
+배병암
+배차원
+배필남
+배성계
+배경기
+배정현
+배필련
+배헌식
+배성익
+배수준
+배필연
+배학근
+배기문
+배미생
+배하영
+배미호
+배태욱
+배정식
+배하영
+배승철
+배상숙
+배순득
+배하현
+배정부
+배대남
+배재희
+배학돌
+배영하
+배백태
+배태희
+배학식
+배공교
+배윤영
+배외순
+배한모
+배학근
+배옥환
+배삼수
+배한모
+배성화
+배영순
+배성권
+배한조
+배수종
+배병희
+배건현
+배해만
+배중순
+배현룡
+배성희
+배해석
+배원휘
+배기성
+배좌호
+배해성
+배성화
+배영열
+배상구
+배해술
+배중곤
+배건희
+배남휴
+배현순
+배운근
+배다권
+배태문
+배형한
+배임치
+배현자
+배덕홍
+배혜숙
+배영휴
+배대석
+배점조
+배호경
+배대원
+배태철
+배정운
+배호권
+배달주
+배창식
+배주원
+배호조
+배점이
+배성주
+배병희
+배호진
+배무형
+배무곤
+배기영
+배홍대
+배석석
+배종근
+배대출
+배홍덕
+배종조
+배노수
+배상국
+배홍열
+배세호
+배정호
+배병연
+배홍탁
+배수광
+배용륜
+배종근
+배효욱
+배수현
+배홍근
+배광남
+배효원
+배영술
+배문수
+배정학
+배효원
+배용규
+배성숙
+배태휘
+배효주
+배정이
+배태상
+배정기
+백 석
+백수희
+백재균
+백영출
+백갑흠
+백해희
+백재희
+백성현
+백경림
+백희길
+백정준
+백광익
+백경순
+백경출
+백민순
+백정산
+백경철
+백성백
+백인임
+백준우
+백광수
+백중선
+백홍균
+백의복
+백광웅
+백회도
+백용식
+백주희
+백광일
+백기식
+백소길
+백규희
+백광전
+백본재
+백의준
+백성식
+백권욱
+백경순
+백상철
+백홍석
+백근호
+백금열
+백정환
+백을호
+백기조
+백운근
+백순덕
+백해환
+백기태
+백덕준
+백무주
+백덕분
+백길선
+백경호
+백재섭
+백경환
+백남룡
+백석성
+백진만
+백순성
+백남석
+백문선
+백외율
+백재열
+백남수
+백대자
+백교태
+백규식
+백남진
+백일세
+백 호
+백성기
+백노수
+백무무
+백호숙
+백금완
+백대학
+백술원
+백상현
+백환암
+백대현
+백주문
+백두출
+백도문
+백대호
+백영용
+백점철
+백용철
+백도봉
+백기명
+백태출
+백명호
+백동술
+백현분
+백정희
+백태조
+백동제
+백주열
+백의택
+백판식
+백동제
+백용운
+백천식
+백연왕
+백두재
+백성근
+백경교
+백용준
+백두현
+백상억
+백성규
+백일심
+백두현
+백홍기
+백판택
+백복덕
+백두현
+백덕수
+백영복
+백신옥
+백두현
+백동문
+백상기
+백영선
+백만기
+백주환
+백 호
+백점용
+백만대
+백정현
+백종영
+백형균
+백말수
+백질현
+백관환
+백정옥
+백매향
+백경숙
+백득현
+백희석
+백명수
+백영락
+백윤락
+백종환
+백명현
+백동서
+백은술
+백일호
+백몽련
+백순식
+백명준
+백범기
+백무갑
+백 현
+백은춘
+백차대
+백무용
+백달석
+백헌수
+백삼임
+백무조
+백기희
+백성훈
+백중희
+백문만
+백상기
+백육은
+백재수
+백문상
+백두순
+백숙덕
+백주영
+백문현
+백근태
+백복정
+백봉원
+백민숙
+백진식
+백창중
+백경현
+백방기
+백 원
+백영희
+백경치
+백보배
+백영식
+백뇌삼
+백한상
+백보현
+백이호
+백영훈
+백무식
+백복기
+백현탁
+백형화
+백청호
+백복순
+백기조
+백영환
+백민만
+백봉문
+백상연
+백광기
+백태업
+백부임
+백호식
+백성남
+백석훈
+백사강
+백지영
+백광태
+백근호
+백삼수
+백정례
+백재우
+백두진
+백상결
+백재웅
+백경치
+백성채
+백상덕
+백동숙
+백종규
+백근연
+백석도
+백성봉
+백재식
+백영희
+백석자
+백원영
+백귀호
+백성덕
+백석준
+백규진
+백재정
+백성국
+백석진
+백태연
+백영찬
+백찬복
+백선현
+백재향
+백장수
+백창철
+백성국
+백영오
+백국용
+백구정
+백성권
+백창규
+백아호
+백석길
+백성기
+백갑덕
+백선호
+백은돌
+백성기
+백태림
+백신호
+백국진
+백소돌
+백경순
+백삼재
+백위규
+백소부
+백정달
+백용호
+백판재
+백소수
+백태학
+백판훈
+백학만
+백소웅
+백성환
+백종조
+백판국
+백소조
+백달경
+백동수
+백용원
+백송학
+백세조
+백봉균
+백준암
+백수정
+백종용
+백봉춘
+백범상
+백수창
+백태기
+백삼노
+백기호
+백숙자
+백용수
+백옥조
+백상호
+백순덕
+백종석
+백사임
+백황옥
+백순선
+백기문
+백창득
+백혁준
+백순옥
+백명원
+백문수
+백정자
+백순태
+백상출
+백성균
+백기건
+백승규
+백동수
+백성석
+백옥성
+백승덕
+백해환
+백용규
+백병하
+백승로
+백동길
+백명천
+백순희
+백승만
+백정영
+백정식
+백규수
+백승열
+백철찬
+백중우
+백소순
+백승욱
+백미수
+백술근
+백용광
+백승태
+백점원
+백정수
+백성길
+백승태
+백영철
+백영구
+백정효
+백승택
+백은극
+백종선
+백덕한
+백영규
+백영영
+백규술
+백영태
+백영규
+백흥의
+백수률
+백영홍
+백영기
+백석수
+백영환
+백기수
+백영배
+백칠순
+백만오
+백재오
+백영수
+백순익
+백도근
+백명주
+백영수
+백상건
+백남배
+백종길
+백영식
+백광출
+백일준
+백 명
+백영주
+백화우
+백홍자
+백용보
+백영준
+백옥수
+백손철
+백진규
+백영철
+백재도
+백대태
+백춘조
+백영춘
+백운국
+백재태
+백운선
+백영호
+백병원
+백기효
+백판동
+백영호
+백상호
+백영권
+백종주
+백영호
+백제동
+백순환
+백영한
+백영호
+백근조
+백종근
+백교자
+백영희
+백상기
+백규궁
+백봉순
+백옥란
+백문자
+백환희
+백동진
+백욱용
+백연수
+백중억
+백재희
+백운로
+백성종
+백윤순
+백성문
+백운우
+백청중
+백성용
+백소진
+백운우
+백정식
+백주조
+백종필
+백운철
+백노이
+백봉월
+백태수
+백운태
+백한연
+백질대
+백성치
+백운학
+백양대
+백규용
+백분숙
+백운호
+백재곤
+백삼식
+백영범
+백웅열
+백태권
+백정수
+백병경
+백원기
+백재태
+백응환
+백종국
+백원치
+백재희
+백승향
+백의술
+백유분
+백환수
+백소현
+백진현
+백윤식
+백상순
+백재종
+백중숙
+백윤철
+백상복
+백영춘
+백재순
+백윤철
+백재식
+백창호
+백광련
+백윤현
+백지락
+백정열
+백수준
+백은식
+백원모
+백태용
+백종수
+백인길
+백영수
+백기연
+백복곤
+백인석
+백영길
+백삼조
+백석덕
+백인찬
+백계술
+백의호
+백순임
+백인현
+백정식
+백선윤
+백성환
+백인흠
+백순연
+백용모
+백재우
+백일기
+백순복
+백봉순
+백은희
+백일현
+백용환
+백태환
+백의용
+백장개
+백기동
+백재운
+백정길
+백재봉
+백판숙
+백제화
+백규수
+백재선
+백태택
+백분성
+백종기
+백재현
+백학윤
+백태윤
+백곤수
+백재호
+백재곤
+백송옥
+백준남
+백재호
+백창정
+백학진
+백금성
+백전태
+백동용
+백성길
+백성자
+백점봉
+백학원
+백재식
+백두경
+백점수
+백희구
+백규선
+백순태
+백점수
+백 춘
+백해균
+백임진
+백정덕
+백정소
+백태균
+백종현
+백정영
+백병용
+백정궁
+백점균
+백정영
+백정준
+백태식
+백재구
+백정용
+백병구
+백석완
+백만구
+백정종
+백필표
+백영근
+백종조
+백정현
+백정태
+백태문
+백웅우
+백정환
+백윤수
+백낙출
+백갑대
+백정희
+백성봉
+백기홍
+백기수
+백종계
+백칠희
+백경식
+백만수
+백종기
+백영대
+백영환
+백규자
+백종철
+백성고
+백경영
+백종술
+백진웅
+백도윤
+백봉식
+백철준
+백창기
+백인학
+백재규
+백제의
+백청운
+백상기
+백옥식
+백인재
+백춘기
+백항훈
+백무석
+백순재
+백태욱
+백순창
+백성이
+백본문
+백태종
+백연록
+백현종
+백숙치
+백태진
+백소광
+백병준
+백구희
+백태현
+백병진
+백근진
+백재연
+백태호
+백수석
+백만필
+백봉헌
+백학기
+백영태
+백수관
+백진팔
+백학수
+백옥란
+백종상
+백만진
+백한권
+백충화
+백은갑
+백영순
+백현우
+백경봉
+백임수
+백종세
+백현학
+백분웅
+백월도
+백 순
+백현학
+백상수
+백인례
+백상익
+백현학
+백영식
+백태식
+백상희
+백형도
+백순임
+백재준
+백구자
+백형일
+백주찬
+백경원
+백복근
+백호현
+백광숙
+백규연
+백영일
+백화숙
+백기숙
+백종영
+백사록
+변갑조
+변창영
+변택선
+변동업
+변경식
+변주기
+변용희
+변창갑
+변금순
+변재분
+변남숙
+변상호
+변동필
+변중석
+변신원
+변정동
+변동해
+변병균
+변원출
+변 한
+변명근
+변덕열
+변영한
+변시동
+변사룡
+변용재
+변보술
+변민림
+변상근
+변양문
+변병덕
+변주옥
+변성수
+변홍순
+변교열
+변주웅
+변성원
+변영준
+변수암
+변광희
+변순여
+변영식
+변병종
+변태종
+변오식
+변문갑
+변준휴
+변창수
+변용식
+변춘목
+변달옥
+변병수
+변용진
+변경유
+변영현
+변경구
+변위식
+변성섭
+변병화
+변준용
+변윤식
+변광조
+변정수
+변석태
+변은식
+변순식
+변학원
+변복웅
+변이규
+변충숙
+변석선
+변성옥
+변장우
+변명윤
+변태희
+변필택
+변재곤
+변정원
+변성식
+변상조
+변종봉
+변상환
+변병룡
+변옥권
+변종식
+변상권
+변성내
+변정남
+변찬기
+변주희
+변정억
+변태소
+변창혁
+변대일
+변은권
+변명영
+변철우
+변태용
+변창수
+변중술
+변철우
+변영향
+변명이
+변종용
+변태수
+변재화
+변권우
+변창구
+변판규
+변명택
+변학현
+변대권
+변호현
+변용걸
+변경훈
+변태국
+변화자
+변소연
+변대우
+변권수
+변환규
+변인수
+변훈근
+변영웅
+빈욱출
+빈관훈
+빈해승
+빈명우
+빈종욱
+빈천암
+빈석석
+빈돈순
+빈춘옥
+빈용열
+빈중복
+빈선생
+사복환
+사정숙
+사은학
+사병오
+상정균
+상기자
+상정해
+상효석
+서갑문
+서문숙
+서세우
+서성세
+서갑수
+서죽오
+서점달
+서일균
+서갑수
+서기환
+서동조
+서광열
+서경규
+서수달
+서옥용
+서남호
+서경규
+서판섭
+서진경
+서신희
+서경규
+서경철
+서상준
+서종호
+서경석
+서은숙
+서덕영
+서재희
+서경수
+서상환
+서찬교
+서준곤
+서경숙
+서경오
+서달순
+서천문
+서경암
+서병래
+서윤인
+서두학
+서경점
+서언섭
+서영기
+서영규
+서경화
+서해암
+서학학
+서석배
+서경희
+서재헌
+서순이
+서동선
+서경희
+서운섭
+서복복
+서상구
+서경희
+서동근
+서종건
+서후원
+서계석
+서덕한
+서수현
+서해웅
+서곡지
+서명국
+서두태
+서정채
+서광식
+서찬재
+서준길
+서윤우
+서광악
+서옥재
+서재만
+서이국
+서광언
+서신운
+서차우
+서두자
+서광택
+서태숙
+서상영
+서상규
+서교욱
+서진점
+서광희
+서양선
+서교희
+서선균
+서승표
+서종명
+서교희
+서영범
+서병영
+서영원
+서구석
+서형순
+서병이
+서봉기
+서근호
+서현문
+서수열
+서완철
+서금이
+서정입
+서병화
+서석동
+서남숙
+서태선
+서계술
+서득석
+서남조
+서남태
+서우숙
+서태덕
+서다임
+서병윤
+서차수
+서규문
+서달선
+서영기
+서규영
+서기준
+서대경
+서정성
+서강숙
+서석석
+서대관
+서길연
+서해기
+서정구
+서대환
+서영숙
+서수표
+서병록
+서덕선
+서원만
+서형탁
+서삼순
+서동덕
+서석근
+서재열
+서명희
+서동수
+서연연
+서신동
+서형호
+서동수
+서윤선
+서기용
+서명근
+서동재
+서광호
+서암완
+서택민
+서동준
+서경길
+서태환
+서해규
+서동훈
+서갑식
+서병숙
+서창조
+서두선
+서순고
+서 섭
+서시순
+서말도
+서원남
+서병열
+서현호
+서말선
+서교복
+서무수
+서규용
+서맹수
+서기선
+서태기
+서원술
+서명곤
+서광곤
+서원식
+서은현
+서명교
+서인원
+서용옥
+서소섭
+서명달
+서춘억
+서경선
+서병곤
+서명수
+서영수
+서옥선
+서영이
+서명암
+서종원
+서선교
+서미학
+서무남
+서점길
+서일훈
+서상호
+서무조
+서 수
+서만열
+서진호
+서무종
+서정근
+서남록
+서태수
+서무호
+서상수
+서대택
+서하정
+서문덕
+서동성
+서충상
+서광봉
+서문수
+서종율
+서무조
+서용술
+서문수
+서용원
+서성기
+서영태
+서미경
+서철운
+서인식
+서정홍
+서미자
+서선태
+서소현
+서병화
+서민석
+서재일
+서상우
+서순철
+서범식
+서경주
+서수식
+서순철
+서병수
+서성곤
+서상보
+서재립
+서병재
+서진옥
+서순봉
+서순석
+서보근
+서창조
+서옥수
+서태자
+서보덕
+서도용
+서정호
+서기자
+서보영
+서태석
+서해천
+서판조
+서보운
+서일순
+서춘이
+서상중
+서보원
+서정섭
+서석철
+서창호
+서보진
+서명덕
+서일덕
+서석조
+서보찬
+서대호
+서치옥
+서무희
+서보혁
+서원희
+서회수
+서의숙
+서보희
+서광재
+서을정
+서일식
+서복경
+서명희
+서창배
+서윤술
+서복순
+서시환
+서경응
+서석식
+서봉교
+서행식
+서재완
+서인우
+서봉덕
+서양준
+서순천
+서재득
+서분순
+서국홍
+서광수
+서판수
+서사현
+서시성
+서위섭
+서권수
+서삼권
+서용봉
+서성기
+서차영
+서상근
+서재식
+서병규
+서용희
+서상노
+서경선
+서만식
+서은이
+서상덕
+서수권
+서원종
+서철기
+서상돌
+서병순
+서준조
+서 우
+서상록
+서구병
+서창수
+서운운
+서상록
+서옥길
+서금선
+서상석
+서상록
+서태웅
+서원호
+서창화
+서상말
+서영철
+서학곤
+서수수
+서상문
+서계조
+서석구
+서웅환
+서상세
+서명진
+서태호
+서병경
+서상식
+서철담
+서진교
+서영욱
+서상열
+서성수
+서은철
+서덕헌
+서상자
+서사열
+서옥동
+서근열
+서상준
+서사기
+서장출
+서성득
+서상태
+서현호
+서광환
+서필수
+서상태
+서성수
+서영상
+서규조
+서상태
+서오열
+서영철
+서근리
+서상현
+서오희
+서봉태
+서정열
+서상현
+서만수
+서은생
+서상태
+서상호
+서석훈
+서장규
+서영조
+서상화
+서재모
+서영종
+서해희
+서상화
+서용조
+서기흠
+서성수
+서상효
+서종수
+서옥구
+서갑문
+서상희
+서찬열
+서갑현
+서병봉
+서석교
+서상규
+서용관
+서세만
+서석규
+서태천
+서용희
+서종도
+서석영
+서육기
+서병은
+서기기
+서석윤
+서경운
+서태양
+서영성
+서석홍
+서순현
+서정철
+서병조
+서석희
+서유원
+서정주
+서윤운
+서선교
+서병연
+서중연
+서재화
+서성교
+서중욱
+서해조
+서명이
+서성만
+서갑수
+서인석
+서판열
+서성암
+서행문
+서상팔
+서승대
+서성윤
+서외숙
+서점철
+서영은
+서성출
+서순재
+서영배
+서종환
+서소권
+서일조
+서종순
+서태심
+서소용
+서도학
+서병한
+서수형
+서수경
+서일대
+서현수
+서보하
+서수연
+서재홍
+서인규
+서해석
+서수웅
+서종주
+서호정
+서병우
+서순교
+서연태
+서태경
+서주희
+서순남
+서영재
+서태숙
+서점대
+서순도
+서경성
+서보우
+서장석
+서순돌
+서병원
+서창만
+서인기
+서순란
+서태연
+서 진
+서상난
+서순석
+서차섭
+서명오
+서재조
+서순이
+서재기
+서재호
+서경용
+서승기
+서규홍
+서상하
+서연영
+서승원
+서명규
+서상식
+서광현
+서영규
+서재자
+서일림
+서길호
+서영달
+서봉향
+서영근
+서귀례
+서영달
+서주열
+서원옥
+서재남
+서영돌
+서희용
+서종향
+서명환
+서영목
+서현기
+서대갑
+서성용
+서영석
+서경현
+서판우
+서병술
+서영수
+서진태
+서정옥
+서석태
+서영웅
+서상규
+서병파
+서경길
+서영원
+서대호
+서병화
+서무용
+서영은
+서명호
+서영애
+서병순
+서영창
+서상숙
+서해곤
+서병권
+서영태
+서정호
+서금섭
+서호동
+서오조
+서재봉
+서중용
+서대환
+서옥출
+서갑동
+서돈부
+서용한
+서완식
+서상수
+서재하
+서판록
+서외수
+서충택
+서상봉
+서막훈
+서용만
+서만광
+서병훈
+서규인
+서용부
+서기순
+서봉표
+서영만
+서용석
+서수배
+서기조
+서무주
+서용조
+서선종
+서준환
+서석홍
+서용판
+서상학
+서용조
+서호호
+서용해
+서창종
+서오연
+서기순
+서용해
+서종견
+서숙수
+서윤응
+서용호
+서정희
+서상홍
+서근훈
+서우철
+서성숙
+서명출
+서태희
+서웅길
+서하천
+서금석
+서종준
+서유산
+서석식
+서보악
+서만형
+서윤석
+서재대
+서쾌호
+서창수
+서윤선
+서호애
+서성기
+서재점
+서윤옥
+서재목
+서춘종
+서재남
+서윤출
+서종준
+서인자
+서종정
+서윤희
+서시건
+서홍수
+서춘호
+서은경
+서영기
+서주태
+서병석
+서이선
+서병칠
+서응길
+서용식
+서이진
+서윤인
+서정교
+서태용
+서익순
+서석하
+서달우
+서수근
+서인덕
+서병조
+서학기
+서무희
+서인순
+서영호
+서건용
+서종조
+서인열
+서기수
+서석임
+서성순
+서일교
+서연적
+서재남
+서재태
+서일부
+서종동
+서경순
+서영차
+서임선
+서성현
+서금우
+서억동
+서임조
+서희권
+서창진
+서상문
+서장택
+서남경
+서분춘
+서민식
+서재교
+서응태
+서현이
+서재우
+서재덕
+서인섬
+서창생
+서기각
+서재덕
+서진기
+서성식
+서승철
+서재열
+서사개
+서차원
+서봉동
+서재영
+서영호
+서해도
+서지선
+서재행
+서정영
+서석현
+서태홍
+서재호
+서정환
+서대원
+서영원
+서재환
+서종하
+서문재
+서태운
+서재환
+서동근
+서상준
+서광오
+서재희
+서만연
+서세길
+서재재
+서점돌
+서명상
+서재석
+서광구
+서점수
+서영찬
+서성식
+서남구
+서점수
+서근성
+서오행
+서재자
+서점술
+서대수
+서태자
+서기자
+서점암
+서권의
+서기택
+서경집
+서점조
+서정규
+서태규
+서수순
+서정경
+서태동
+서명호
+서재수
+서정계
+서효도
+서귀기
+서병환
+서정구
+서윤구
+서석수
+서건경
+서정군
+서종호
+서영도
+서환영
+서정극
+서말숙
+서태규
+서일복
+서정근
+서태선
+서병록
+서장원
+서정도
+서광우
+서정곤
+서종득
+서정록
+서대조
+서말형
+서기량
+서정박
+서철덕
+서순출
+서성시
+서정생
+서남혁
+서주규
+서정석
+서정석
+서재훈
+서규계
+서차자
+서정수
+서소경
+서쌍호
+서도호
+서정수
+서운정
+서성순
+서운순
+서정수
+서재영
+서정규
+서영희
+서정술
+서근순
+서재상
+서정조
+서정식
+서성효
+서우정
+서종탁
+서정열
+서진규
+서을식
+서현남
+서정우
+서상석
+서재배
+서소환
+서정우
+서태순
+서영기
+서윤웅
+서정운
+서광엽
+서재율
+서경일
+서정의
+서진지
+서옥강
+서금자
+서정태
+서승기
+서차인
+서영교
+서정태
+서재봉
+서옥수
+서양기
+서정태
+서종충
+서중호
+서해재
+서정태
+서임철
+서종수
+서영호
+서정한
+서영철
+서태숙
+서석순
+서정화
+서준영
+서기준
+서우환
+서정환
+서귀득
+서정용
+서갑현
+서정희
+서병술
+서학영
+서봉자
+서종이
+서장수
+서노헌
+서윤이
+서주덕
+서옥찬
+서병권
+서말호
+서주필
+서진경
+서종효
+서동기
+서준교
+서혜한
+서만현
+서고광
+서중강
+서덕현
+서창규
+서영연
+서중규
+서명태
+서영곤
+서성식
+서진고
+서극자
+서운숙
+서학규
+서진교
+서건희
+서윤희
+서영순
+서진교
+서용정
+서병진
+서성천
+서진석
+서경술
+서성식
+서대일
+서진수
+서홍보
+서재제
+서말태
+서차갑
+서태웅
+서영희
+서병남
+서차랑
+서재수
+서종기
+서무란
+서차용
+서수원
+서영호
+서광식
+서창교
+서무수
+서병수
+서성용
+서창덕
+서수수
+서재모
+서홍수
+서창덕
+서우화
+서윤환
+서순섭
+서창수
+서태정
+서점순
+서재남
+서창술
+서충재
+서경모
+서판채
+서창현
+서수영
+서동현
+서부탁
+서철교
+서규술
+서용숙
+서형정
+서춘길
+서막진
+서경석
+서상용
+서춘수
+서로영
+서진운
+서쾌출
+서춘자
+서의덕
+서건순
+서원현
+서칠권
+서봉기
+서종이
+서봉웅
+서태교
+서헌진
+서일란
+서종종
+서태구
+서석호
+서순영
+서상춘
+서태만
+서정완
+서말문
+서승철
+서태석
+서수호
+서희순
+서윤근
+서태수
+서삼업
+서연기
+서보호
+서태술
+서경희
+서칠영
+서준욱
+서태암
+서정하
+서수현
+서광자
+서태원
+서성수
+서재자
+서선규
+서팔봉
+서영영
+서대호
+서수호
+서필금
+서수호
+서호용
+서신식
+서필연
+서을원
+서영선
+서성영
+서학원
+서태숙
+서해원
+서상상
+서학조
+서동석
+서종원
+서대용
+서한교
+서무희
+서태출
+서태열
+서한기
+서원자
+서영호
+서경재
+서해원
+서춘천
+서정수
+서기순
+서헌교
+서병구
+서수희
+서선섭
+서호관
+서춘찬
+서순남
+서동일
+서호창
+서창복
+서동관
+서동수
+서호출
+서진기
+서태선
+서칠열
+서홍교
+서태식
+서명구
+서정동
+서홍교
+서해환
+서한삼
+서계희
+서홍숙
+서재호
+서판수
+서인상
+서홍식
+서창식
+서찬우
+서봉주
+서환수
+서학건
+서화명
+서택문
+서훈태
+서정섭
+서순표
+서일숙
+서희철
+서송호
+서분자
+서창옥
+석광진
+석학배
+석성양
+석월우
+석기봉
+석재희
+석관석
+석성난
+석도정
+석장균
+석덕환
+석현원
+석무영
+석덕주
+석수일
+석무수
+석무호
+석정구
+석석순
+석준준
+석봉남
+석열권
+석순지
+석상경
+석분선
+석현하
+석상수
+석병헌
+석상수
+석재출
+석영식
+석해자
+석상운
+석국곤
+석을화
+석병규
+석선부
+석경숙
+석혜균
+석귀애
+석성만
+석광대
+석정용
+석칠남
+석소돌
+석형구
+석쾌규
+석규석
+석승태
+석선창
+석경순
+석정운
+석연이
+석상화
+석영량
+석태학
+석영호
+석병해
+석병숙
+석철훈
+석윤암
+석태열
+석춘수
+석경선
+석의자
+석병식
+석영덕
+석옥호
+석이효
+석순현
+석성태
+석상선
+석점효
+석재길
+석쾌래
+석춘동
+석정출
+석춘세
+석차종
+석남기
+석정출
+석기태
+석근순
+석동미
+석종화
+석광범
+석남기
+석상수
+석종화
+석명진
+석쾌원
+석차준
+석진영
+석종하
+석환상
+석석조
+석질암
+석봉희
+석상조
+석경석
+석차암
+석종란
+석미석
+석기용
+석춘옥
+석동암
+석차석
+석영조
+석효정
+석희제
+석평수
+석문우
+선승호
+선용수
+선일중
+선만판
+선우경
+선복돌
+선순자
+선원회
+선우영길
+선대목광
+선덕기경
+선남배병
+설강수
+설차순
+설희연
+설기택
+설동석
+설병열
+설영석
+설세철
+설명순
+설금석
+설정도
+설순임
+설묘순
+설복돌
+설찬연
+설준태
+설삼수
+설계현
+설해덕
+설성기
+설상규
+설상식
+설인균
+설재병
+설성구
+설용암
+설효선
+설종영
+설소주
+설지윤
+설후흠
+설용택
+설순옥
+설상원
+설재욱
+설병우
+설영구
+설상덕
+설수우
+설금자
+설영준
+설호호
+설무남
+설충운
+설용준
+설귀진
+설재봉
+설병분
+설원식
+설산규
+설지운
+설순자
+설원준
+설월돌
+설규봉
+설윤권
+설윤성
+설윤원
+설순우
+설설석
+설윤형
+설계욱
+설상호
+설승우
+설의준
+설동호
+설석고
+설태수
+설인갑
+설상시
+설수조
+설장학
+설정준
+설명출
+설판훈
+설구술
+설진구
+설교숙
+설교준
+설병석
+설창
+설순
+설종
+설영
+설창수
+설종국
+설일봉
+설헌길
+설천수
+설은임
+설한덕
+설기환
+설춘수
+설윤균
+설선호
+설매화
+설현수
+설영현
+설태종
+설윤택
+성경모
+성중식
+성재우
+성상우
+성경태
+성운희
+성명연
+성옥길
+성계종
+성원고
+성순규
+성희식
+성규용
+성삼희
+성해섭
+성명남
+성금용
+성귀섭
+성말홍
+성종식
+성기덕
+성승덕
+성광원
+성백란
+성기복
+성석선
+성성욱
+성태영
+성기은
+성 순
+성준희
+성재용
+성기학
+성진명
+성금금
+성해문
+성기흔
+성혜기
+성남규
+성용환
+성낙구
+성 환
+성종수
+성동용
+성낙권
+성광분
+성명기
+성창석
+성낙균
+성영현
+성자규
+성영헌
+성낙동
+성인현
+성규출
+성삼태
+성낙동
+성귀식
+성재우
+성현석
+성낙동
+성말석
+성기희
+성정기
+성낙동
+성분대
+성순동
+성선권
+성낙순
+성순수
+성한조
+성인문
+성낙영
+성휘운
+성해환
+성해자
+성낙완
+성병준
+성차수
+성진수
+성낙중
+성부호
+성선금
+성용건
+성낙진
+성선호
+성무완
+성재식
+성낙찬
+성진영
+성소문
+성광일
+성낙팔
+성우균
+성덕신
+성수익
+성낙하
+성창교
+성용복
+성태일
+성낙훈
+성병근
+성춘희
+성재한
+성남경
+성치조
+성태철
+성명길
+성두용
+성준경
+성채수
+성태옥
+성락경
+성우진
+성상식
+성종종
+성락관
+성준동
+성창자
+성신환
+성만정
+성재기
+성원주
+성태중
+성말연
+성선조
+성차수
+성기주
+성명근
+성규석
+성순기
+성순돌
+성백신
+성종희
+성인수
+성일선
+성병남
+성영수
+성기문
+성헌호
+성병우
+성한호
+성한관
+성소준
+성복식
+성정규
+성은천
+성을호
+성분시
+성해자
+성문용
+성영수
+성사영
+성영문
+성세식
+성지곤
+성상모
+성기현
+성종동
+성말환
+성상수
+성기연
+성상도
+성태환
+성상현
+성팔국
+성이용
+성점식
+성석경
+성장구
+성중기
+성점우
+성선이
+성병순
+성말팔
+성행규
+성소환
+성병헌
+성성암
+성지상
+성수경
+성상태
+성태현
+성정봉
+성수광
+성정곤
+성태규
+성판묵
+성순자
+성민선
+성무순
+성원훈
+성양수
+성상균
+성병근
+성해선
+성영경
+성주오
+성정모
+성용오
+성영란
+성광년
+성호민
+성수환
+성오제
+성태수
+성순훈
+성교동
+성외석
+성용희
+성인기
+성교식
+성용경
+성정식
+성주윤
+성영일
+성용칠
+성판득
+성점영
+성사련
+성우경
+성규완
+성복헌
+성정길
+성원경
+성병무
+성규연
+성만섭
+성위선
+성해태
+성정희
+성점열
+성은모
+성태원
+성석조
+성승환
+성은용
+성하호
+성병학
+성임난
+성의종
+성명윤
+성하삼
+성인식
+성일금
+성종호
+성대철
+성의호
+성재갑
+성수윤
+성태흠
+성삼희
+성재근
+성혜권
+성수환
+성재경
+성정순
+성경전
+성기시
+성상태
+성조근
+성상길
+성영성
+성연호
+성주곤
+성순기
+성정호
+성동규
+성준환
+성왕교
+성종민
+성종권
+성중환
+성춘조
+성운호
+성차동
+성증원
+성장태
+성우호
+성영원
+성창경
+성점주
+성만기
+성정자
+성철용
+성순휴
+성상진
+성성권
+성태경
+성재유
+성정수
+성진욱
+성태덕
+성수율
+성병득
+성동만
+성태용
+성소권
+성길국
+성병호
+성풍국
+성정수
+성정희
+성정이
+성한경
+성태길
+성종택
+성정희
+성해용
+성철연
+성종도
+성병순
+성흥식
+성영수
+성무집
+성봉화
+성희준
+성영술
+성병준
+성필혜
+소병문
+소정태
+소종호
+소재수
+소병양
+소종준
+소준세
+소남한
+소수섭
+소상관
+소병우
+소종근
+소영희
+소말자
+소광용
+소홍환
+소진덕
+소병문
+소판균
+소범춘
+소황옥
+소병진
+소덕임
+소광조
+손계련
+손소용
+손동용
+손성현
+손계임
+손영기
+손성수
+손 화
+손계탁
+손학호
+손광기
+손정오
+손공수
+손해록
+손갑현
+손점중
+손귀악
+손성경
+손은태
+손광길
+손규달
+손병우
+손종구
+손상정
+손규영
+손인연
+손용문
+손호성
+손규학
+손우인
+손천두
+손응오
+손금순
+손태식
+손계환
+손윤수
+손금순
+손지준
+손왕국
+손용희
+손금조
+손영숙
+손정자
+손남석
+손기목
+손미태
+손상득
+손수석
+손기용
+손성진
+손영후
+손대훈
+손노탁
+손정열
+손해순
+손명섭
+손달근
+손옥욱
+손일필
+손삼임
+손대봉
+손효영
+손재숙
+손주우
+손동황
+손영구
+손세태
+손갑숙
+손동황
+손상순
+손홍세
+손병룡
+손막내
+손한용
+손성배
+손만상
+손만수
+손헌홍
+손영태
+손종구
+손말순
+손형순
+손영제
+손순호
+손명국
+손봉욱
+손봉주
+손원석
+손명국
+손진기
+손수배
+손소권
+손명순
+손혜량
+손병곤
+손우규
+손명술
+손해호
+손계준
+손병자
+손명자
+손상오
+손광덕
+손진이
+손무종
+손경희
+손찬근
+손흥이
+손문기
+손상환
+손봉우
+손외임
+손민정
+손정수
+손윤희
+손경길
+손병권
+손명주
+손국배
+손태태
+손병기
+손종오
+손상숙
+손병공
+손병길
+손영천
+손민자
+손덕기
+손병문
+손해호
+손재근
+손진원
+손병언
+손윤표
+손창환
+손대암
+손병우
+손상수
+손정용
+손성옥
+손병은
+손말돌
+손윤수
+손상홍
+손병천
+손우호
+손재학
+손완조
+손병호
+손우태
+손중수
+손수호
+손봉권
+손상철
+손기동
+손종현
+손봉래
+손오의
+손태근
+손병성
+손봉화
+손순술
+손덕현
+손정도
+손삼조
+손한식
+손숙동
+손병애
+손삼출
+손담균
+손창애
+손순시
+손상권
+손달호
+손종재
+손칠근
+손상규
+손영태
+손상영
+손숙교
+손상규
+손찬태
+손선태
+손금도
+손상규
+손순섭
+손종호
+손춘천
+손상규
+손진식
+손동수
+손광환
+손상기
+손복권
+손삼병
+손운길
+손상모
+손상호
+손삼오
+손중열
+손상진
+손중태
+손풍억
+손만록
+손상철
+손막자
+손대길
+손시효
+손선경
+손상호
+손교숙
+손재현
+손성향
+손영랑
+손상호
+손재심
+손소범
+손수식
+손종운
+손재숙
+손수근
+손상조
+손석호
+손윤식
+손수난
+손용기
+손창상
+손동덕
+손수모
+손규조
+손중호
+손상열
+손수암
+손수환
+손병진
+손상철
+손수용
+손형교
+손태이
+손진길
+손수원
+손하분
+손한태
+손봉진
+손수익
+손춘옥
+손봉욱
+손경숙
+손수인
+손재환
+손칠순
+손판경
+손순계
+손영분
+손남홍
+손재건
+손순향
+손수배
+손수기
+손일완
+손승준
+손희복
+손이득
+손문원
+손승희
+손순덕
+손재구
+손병식
+손심숙
+손재석
+손태우
+손만희
+손영옥
+손헌영
+손원우
+손순봉
+손영제
+손철정
+손영철
+손길연
+손영진
+손영원
+손장찬
+손병석
+손옥란
+손순조
+손대암
+손명진
+손외순
+손선환
+손병홍
+손재남
+손용수
+손재술
+손정연
+손호용
+손용식
+손대웅
+손오옥
+손 주
+손우식
+손진환
+손광진
+손갑영
+손우주
+손명현
+손성암
+손금배
+손욱수
+손석록
+손인열
+손병정
+손원익
+손동자
+손재규
+손해희
+손윤숙
+손우렬
+손희준
+손선호
+손인상
+손병길
+손기락
+손옥환
+손일식
+손중수
+손금말
+손충원
+손일향
+손명수
+손희순
+손호완
+손일호
+손삼복
+손태철
+손창호
+손장수
+손달석
+손동숙
+손성은
+손장오
+손중란
+손운상
+손점분
+손재원
+손경연
+손영영
+손기모
+손재윤
+손정호
+손진호
+손의도
+손정석
+손용영
+손용진
+손성순
+손정수
+손동출
+손성상
+손상순
+손정숙
+손묘원
+손장훈
+손재수
+손정열
+손정영
+손광석
+손명영
+손정원
+손말식
+손영수
+손운자
+손정유
+손준선
+손재국
+손봉덕
+손정희
+손상춘
+손광세
+손운표
+손종모
+손효동
+손광식
+손마도
+손종식
+손용수
+손한순
+손온현
+손종채
+손안선
+손미식
+손태빈
+손주순
+손희연
+손관익
+손현성
+손중호
+손치영
+손재진
+손판철
+손창웅
+손정막
+손재옥
+손소식
+손채봉
+손준헌
+손헌환
+손기덕
+손청순
+손영모
+손태출
+손근술
+손청호
+손경현
+손준용
+손재태
+손칠봉
+손영만
+손선보
+손건웅
+손태곤
+손현진
+손용학
+손종희
+손태욱
+손세환
+손종준
+손은희
+손태욱
+손삼수
+손준동
+손원묘
+손태원
+손헌주
+손기열
+손진복
+손태원
+손양래
+손춘호
+손수숙
+손태원
+손권봉
+손석석
+손기학
+손태조
+손권욱
+손철환
+손광주
+손태종
+손정희
+손일규
+손지익
+손태환
+손형석
+손순수
+손우훈
+손택근
+손숙홍
+손칠호
+손주자
+손판권
+손점수
+손태도
+손종동
+손판석
+손경중
+손광수
+손태식
+손학기
+손영암
+손준주
+손도녕
+손학식
+손현태
+손기세
+손영욱
+손해경
+손병자
+손경덕
+손갑식
+손해동
+손일수
+손병식
+손도득
+손현권
+손지식
+손규기
+손석환
+손화택
+손도생
+손광연
+손효우
+손훈재
+손은규
+손명석
+손의옥
+손흥열
+손병암
+손차배
+손수술
+손희야
+손이선
+손태근
+손길석
+손희택
+손의환
+손기호
+손응순
+송강부
+송명만
+송만성
+송정학
+송강호
+송경웅
+송홍규
+송태환
+송경석
+송옥우
+송만근
+송낙수
+송관율
+송현규
+송성경
+송시용
+송광재
+송경하
+송석환
+송기고
+송구섭
+송수원
+송헌호
+송채정
+송규섭
+송재정
+송기식
+송석순
+송금옥
+송원식
+송명경
+송길수
+송기원
+송영득
+송병희
+송만연
+송기춘
+송경일
+송진철
+송종기
+송달호
+송윤석
+송해기
+송영효
+송대중
+송영선
+송중욱
+송춘섭
+송대호
+송사현
+송병식
+송문언
+송덕순
+송병용
+송인철
+송순달
+송덕홍
+송경만
+송효덕
+송영조
+송덕환
+송영임
+송생근
+송을호
+송동섭
+송순환
+송일숙
+송기화
+송동영
+송원배
+송성수
+송상조
+송만영
+송인호
+송중호
+송수성
+송만헌
+송춘동
+송정태
+송준순
+송말조
+송수열
+송종열
+송병례
+송무영
+송인순
+송선진
+송영환
+송문옥
+송영기
+송종식
+송순식
+송문한
+송미수
+송외수
+송문수
+송미령
+송용희
+송부기
+송대환
+송민숙
+송병출
+송호순
+송민출
+송번수
+송준근
+송정식
+송광포
+송병휘
+송효규
+송동철
+송두진
+송상교
+송계학
+송길열
+송금우
+송상열
+송만길
+송상철
+송만식
+송석규
+송순보
+송대화
+송경훈
+송석호
+송강환
+송상수
+송흥학
+송선달
+송영덕
+송정연
+송현년
+송선영
+송달준
+송봉봉
+송정호
+송성근
+송만선
+송영상
+송덕길
+송성동
+송명득
+송수수
+송무석
+송수근
+송종덕
+송종모
+송판민
+송수일
+송춘이
+송동환
+송말기
+송수현
+송원순
+송증열
+송순중
+송순자
+송용학
+송병주
+송지조
+송애자
+송기녀
+송점희
+송운복
+송연태
+송대재
+송만선
+송원경
+송영규
+송대열
+송동련
+송기식
+송용덕
+송신희
+송계현
+송차화
+송운한
+송경옥
+송기환
+송수상
+송원복
+송병자
+송희선
+송복호
+송원재
+송건한
+송학근
+송인식
+송인상
+송학조
+송세옥
+송동복
+송인선
+송광홍
+송판철
+송기휴
+송장헌
+송점환
+송봉묵
+송소두
+송재달
+송화수
+송생수
+송공욱
+송재도
+송정준
+송종색
+송광용
+송재석
+송상자
+송병우
+송성진
+송재심
+송태자
+송문주
+송대용
+송재용
+송영오
+송병운
+송영희
+송재욱
+송미기
+송희석
+송이수
+송재은
+송주원
+송식수
+송금훈
+송재준
+송세구
+송선영
+송태근
+송재진
+송진석
+송경용
+송말구
+송재철
+송광호
+송수교
+송봉율
+송재택
+송개순
+송경진
+송성철
+송정로
+송영덕
+송석기
+송해현
+송정민
+송귀철
+송효구
+송경용
+송정성
+송을차
+송용웅
+송영숙
+송정조
+송재중
+송금동
+송춘학
+송종수
+송외자
+송승웅
+송성인
+송준석
+송영제
+송낙환
+송삼일
+송직선
+송덕돌
+송해섭
+송경열
+송진철
+송주수
+송형규
+송태희
+송창섭
+송구민
+송두순
+송제열
+송춘성
+송한현
+송병우
+송정종
+송춘익
+송순열
+송성수
+송임모
+송춘희
+송옥필
+송병신
+송병용
+송태수
+송미옥
+송광현
+송은수
+송학선
+송성용
+송명국
+송광현
+송한철
+송문식
+송병현
+송정희
+송헌영
+송윤근
+송승섭
+송정록
+송호선
+송수교
+송재환
+송차선
+송호성
+송동성
+송형삼
+송태근
+송희성
+송영호
+송윤권
+송순근
+시광준
+시소근
+시기천
+시상호
+시만식
+시학기
+시창정
+시덕희
+시말분
+시도목
+시두암
+시보한
+시명술
+시우호
+시규생
+시소식
+시명환
+시경호
+시승길
+시기로
+시무준
+시규호
+시춘태
+시윤성
+시민기
+시복술
+시화수
+시상태
+시병규
+시한호
+시재찬
+시일용
+시병기
+시해선
+시문락
+시무호
+시병모
+시상술
+시인헌
+시순식
+시병생
+시외자
+시수원
+시석진
+시병수
+시재곤
+시미수
+시관생
+시병영
+시상숙
+시휘경
+시월환
+시병익
+시창희
+시찬우
+시정규
+시병임
+시인홍
+시귀희
+시영섭
+시병택
+시덕만
+시정분
+시재수
+시병환
+시점록
+시상서
+시성현
+시봉호
+시주환
+시종식
+시재규
+시상준
+시정연
+시종용
+시일근
+시석이
+시일석
+시영만
+시정지
+시선식
+시승선
+시병석
+시순환
+시소식
+시신한
+시상욱
+시경성
+시수준
+시성옥
+시석규
+시의자
+시숭구
+시차규
+시영훈
+시상수
+시연준
+시일기
+시팔희
+시재수
+시옥순
+시은표
+시종규
+시영수
+시용식
+시영근
+시용영
+시종환
+시우식
+시창근
+시명만
+시위윤
+시이준
+시명환
+시봉현
+시해철
+시재규
+시분록
+시한분
+시정철
+시종국
+시삼봉
+시국진
+시분수
+시종원
+시윤교
+시응극
+시판숙
+시진권
+시용임
+시창년
+시노식
+시찬준
+시득균
+시운성
+시용주
+시춘자
+시종봉
+시재목
+시현호
+시칠문
+시진철
+시태용
+시희학
+시태수
+시정용
+시순수
+시종옥
+시태술
+시아영
+시봉천
+시준희
+시택규
+시학섭
+시경수
+시을진
+시해선
+시태호
+시을범
+시지호
+시현기
+시명이
+시수수
+시학희
+시호준
+시점근
+시병한
+시준택
+시호진
+시철석
+시소주
+시춘용
+시환준
+시복기
+시권택
+시옥재
+신갑성
+신인철
+신복석
+신연복
+신갑순
+신택철
+신혜재
+신 현
+신강식
+신순완
+신미식
+신용조
+신건우
+신경순
+신종수
+신진환
+신경만
+신종규
+신일운
+신성우
+신경모
+신상우
+신종생
+신정형
+신경식
+신상경
+신강권
+신일석
+신경우
+신순경
+신해수
+신영응
+신경원
+신임화
+신태수
+신병군
+신경조
+신규환
+신길우
+신수옥
+신계주
+신강순
+신경근
+신인자
+신곡점
+신도준
+신우우
+신영국
+신광복
+신승용
+신명석
+신용상
+신광용
+신종호
+신차선
+신하근
+신광인
+신도우
+신오현
+신영식
+신광지
+신헌섭
+신제규
+신화수
+신구생
+신정배
+신주우
+신석기
+신귀남
+신기하
+신순식
+신준기
+신균우
+신성원
+신종채
+신경자
+신균우
+신창식
+신경규
+신권국
+신금달
+신창석
+신영승
+신희수
+신긍우
+신중한
+신정호
+신현균
+신기우
+신주자
+신상호
+신정이
+신기원
+신창호
+신한한
+신 갑
+신기원
+신원택
+신성만
+신소규
+신기출
+신순희
+신도개
+신갈기
+신기출
+신추성
+신광극
+신용광
+신길우
+신달모
+신연섭
+신상헌
+신길운
+신소조
+신춘재
+신원수
+신난우
+신대출
+신병민
+신종채
+신남근
+신대권
+신순재
+신경학
+신남숙
+신정동
+신정상
+신병숙
+신남순
+신이석
+신덕렬
+신영택
+신달휴
+신차관
+신도영
+신순웅
+신덕우
+신광득
+신장길
+신태주
+신도용
+신한준
+신은규
+신용조
+신돈우
+신명택
+신정기
+신해섭
+신돈휴
+신순원
+신도숙
+신수옥
+신동관
+신분환
+신태규
+신병영
+신동구
+신명세
+신춘호
+신태범
+신동국
+신상로
+신수노
+신흥세
+신동진
+신성철
+신정권
+신정승
+신동진
+신은희
+신태원
+신진남
+신동현
+신재식
+신수열
+신태환
+신동현
+신명현
+신상우
+신석종
+신동호
+신상수
+신해출
+신용휘
+신동호
+신수국
+신대규
+신천량
+신동화
+신의수
+신효배
+신재호
+신동훈
+신기만
+신남모
+신재수
+신동훈
+신철만
+신낙동
+신상주
+신만식
+신영성
+신만호
+신정륜
+신말선
+신종철
+신옥원
+신천영
+신명숙
+신석덕
+신노호
+신지화
+신명우
+신수찬
+신진이
+신성근
+신명은
+신인운
+신상구
+신기연
+신명자
+신병식
+신덕주
+신영익
+신몽우
+신윤환
+신종현
+신일술
+신묘순
+신 곤
+신영준
+신춘화
+신무철
+신은호
+신태철
+신영규
+신무홍
+신용건
+신병근
+신부영
+신문호
+신춘주
+신병식
+신성덕
+신미숙
+신의수
+신필우
+신기재
+신범균
+신운정
+신병형
+신경영
+신범현
+신춘옥
+신풍수
+신재석
+신병열
+신세정
+신동석
+신차근
+신병우
+신판봉
+신 하
+신수수
+신병주
+신상악
+신영득
+신인섭
+신병휴
+신성환
+신무석
+신정식
+신봉휴
+신이근
+신원모
+신호식
+신봉휴
+신소기
+신동문
+신기수
+신삼옥
+신말희
+신곡일
+신한천
+신상수
+신화근
+신판종
+신명범
+신상수
+신한우
+신규구
+신재태
+신상재
+신상건
+신대식
+신석국
+신상휴
+신근숙
+신백태
+신해기
+신상휴
+신덕용
+신만도
+신계수
+신석복
+신위수
+신상양
+신중기
+신석조
+신영성
+신점수
+신경조
+신석철
+신명천
+신근규
+신영태
+신선명
+신광숙
+신상주
+신진수
+신선순
+신현한
+신성오
+신삼율
+신성근
+신광임
+신규호
+신순수
+신성우
+신한정
+신우한
+신순이
+신성호
+신기화
+신성수
+신규식
+신성휴
+신정철
+신명자
+신춘호
+신성휴
+신응래
+신종한
+신영환
+신소분
+신정주
+신문득
+신성도
+신소선
+신태환
+신홍수
+신항영
+신수자
+신석남
+신순기
+신구철
+신순득
+신보이
+신맹국
+신명화
+신순분
+신복화
+신종환
+신문춘
+신순수
+신정환
+신성세
+신영규
+신순옥
+신상재
+신정규
+신정환
+신순조
+신면현
+신태성
+신시준
+신순희
+신일집
+신자필
+신상숙
+신승범
+신보선
+신광금
+신재태
+신승우
+신도권
+신순민
+신원옥
+신애희
+신경홍
+신규식
+신종근
+신양옥
+신용문
+신규호
+신권열
+신양우
+신정권
+신철방
+신계원
+신언호
+신달조
+신정선
+신계식
+신연이
+신호호
+신영완
+신원자
+신열휴
+신대백
+신헌호
+신은주
+신열휴
+신영극
+신정정
+신광십
+신영건
+신갑강
+신규윤
+신성국
+신영식
+신기봉
+신영우
+신승연
+신영식
+신수하
+신주도
+신말형
+신영일
+신경화
+신말순
+신건직
+신영조
+신갑술
+신일결
+신장곤
+신영준
+신해재
+신대철
+신혜식
+신영휴
+신판상
+신소복
+신판자
+신옥자
+신근자
+신상호
+신병숙
+신옥자
+신용현
+신대출
+신우식
+신완모
+신창호
+신영화
+신명늠
+신완우
+신규동
+신성경
+신창호
+신외숙
+신경범
+신원출
+신창천
+신용구
+신진식
+신성조
+신신열
+신용근
+신주연
+신길선
+신경호
+신용석
+신종봉
+신종주
+신동수
+신용수
+신노춘
+신병환
+신정대
+신용준
+신옥수
+신창호
+신춘식
+신용호
+신금택
+신주연
+신보건
+신우철
+신수현
+신경선
+신동철
+신웅용
+신재세
+신노우
+신태용
+신원순
+신금일
+신혜근
+신오석
+신원우
+신만열
+신재조
+신영조
+신월구
+신흥명
+신석담
+신선락
+신유야
+신화섭
+신환태
+신귀구
+신육란
+신연동
+신영영
+신동춘
+신윤생
+신환도
+신기완
+신기출
+신윤숙
+신춘열
+신희만
+신태택
+신윤식
+신원호
+신승림
+신금만
+신윤식
+신회라
+신경용
+신경호
+신윤식
+신상희
+신상상
+신두희
+신윤식
+신석식
+신무훈
+신수관
+신윤우
+신병태
+신상열
+신순연
+신윤조
+신준택
+신명남
+신태복
+신을수
+신기성
+신찬란
+신숙명
+신을식
+신성송
+신동환
+신기기
+신을철
+신옥호
+신안영
+신수연
+신응태
+신용출
+신분종
+신신남
+신인기
+신삼승
+신대근
+신태원
+신인숙
+신현대
+신진식
+신소모
+신인식
+신선철
+신상석
+신학돌
+신인우
+신성환
+신판식
+신수도
+신일섭
+신회석
+신태용
+신용윤
+신임이
+신종수
+신헌천
+신진균
+신임휴
+신정진
+신하락
+신근희
+신장경
+신영조
+신명영
+신재희
+신재문
+신효영
+신선복
+신홍기
+신재수
+신종철
+신성룡
+신달원
+신재우
+신규욱
+신공년
+신병식
+신재운
+신일호
+신재태
+신덕설
+신재운
+신동연
+신춘식
+신노홍
+신재의
+신수연
+신맹환
+신은용
+신재학
+신몽이
+신광호
+신종분
+신재호
+신중운
+신춘식
+신희연
+신점득
+신상옥
+신철근
+신인규
+신점용
+신봉우
+신갑웅
+신철순
+신정규
+신행철
+신경숙
+신정학
+신정순
+신상웅
+신봉형
+신경웅
+신정순
+신한원
+신운돌
+신원애
+신정식
+신성재
+신용호
+신정식
+신정철
+신범곤
+신영직
+신은년
+신정휴
+신두옥
+신 호
+신정민
+신정휴
+신한우
+신호희
+신숙종
+신제호
+신기식
+신동목
+신점환
+신종구
+신영득
+신태헌
+신효기
+신종도
+신병도
+신창철
+신성차
+신종식
+신태택
+신정월
+신재귀
+신종인
+신희수
+신수직
+신해재
+신종휴
+신희환
+신종술
+신정식
+신종휴
+신병도
+신수환
+신종권
+신진금
+신성용
+신대현
+신병종
+신진섭
+신무도
+신형석
+신은우
+신진호
+신태연
+신출춘
+신일용
+신차분
+신무옥
+신영호
+신병규
+신차순
+신만부
+신복한
+신기화
+신찬식
+신순표
+신흥길
+신명순
+신창호
+신수식
+신해길
+신기규
+신창훈
+신영병
+신수철
+신수덕
+신철우
+신 현
+신종채
+신병식
+신철이
+신만경
+신원호
+신병수
+신청균
+신정근
+신계칠
+신덕발
+신춘기
+신경남
+신만규
+신순선
+신춘호
+신관돌
+신고준
+신남록
+신충식
+신진호
+신성환
+신환수
+신쾌식
+신소순
+신중도
+신태조
+신태양
+신구길
+신사근
+신중곤
+신태우
+신분상
+신복희
+신영순
+신태운
+신무식
+신석도
+신혁고
+신태진
+신상선
+신재보
+신점덕
+신태휴
+신동호
+신복숙
+신신진
+신판술
+신대오
+신기립
+신정윤
+신필호
+신재한
+신정호
+신태규
+신하규
+신준만
+신태득
+신질주
+신학봉
+신정수
+신조준
+신규영
+신학식
+신병태
+신진석
+신대진
+신한우
+신영성
+신수순
+신형배
+신항식
+신영조
+신영식
+신철규
+신해봉
+신지홍
+신재근
+신성진
+신해식
+신명수
+신건식
+신종천
+신해식
+신석식
+신창성
+신진무
+신현구
+신순희
+신종문
+신구하
+신현구
+신영남
+신제현
+신형달
+신현근
+신용형
+신춘만
+신근오
+신현덕
+신장경
+신차천
+신두태
+신현만
+신상택
+신이술
+신설출
+신현세
+신영용
+신태곤
+신만옥
+신현아
+신보호
+신재조
+신호봉
+신현우
+신선판
+신석호
+신광화
+신현장
+신 수
+신운곤
+신규호
+신현창
+신수철
+신휘재
+신사천
+신현휴
+신삼연
+신월효
+신춘수
+신형휴
+신점학
+신성용
+신준권
+신혜순
+신이이
+신태석
+신기만
+신혜현
+신석식
+신영균
+신영수
+신호우
+신태수
+신상란
+신문기
+신홍순
+신규오
+신원우
+신욱학
+신홍식
+신봉이
+신제기
+신성영
+신홍식
+신기실
+신성환
+신창주
+신홍철
+신보창
+신영석
+신상홍
+신흥식
+신영룡
+신상덕
+신광호
+신흥열
+신정웅
+신헌순
+신신연
+신희성
+신구석
+신경달
+신재명
+심경두
+심효국
+심영호
+심동호
+심경애
+심기학
+심재기
+심용규
+심광수
+심동상
+심무후
+심병동
+심규연
+심임근
+심명환
+심말대
+심근보
+심기식
+심병만
+심차자
+심기택
+심정균
+심차상
+심원희
+심동석
+심경래
+심화수
+심재희
+심동욱
+심완길
+심말이
+심인식
+심명보
+심상수
+심민진
+심임정
+심무자
+심강광
+심현선
+심문재
+심민순
+심광학
+심쌍옥
+심용포
+심복래
+심인조
+심재춘
+심병용
+심부소
+심영수
+심판순
+심규옥
+심부자
+심종순
+심외영
+심영원
+심상섭
+심효근
+심선서
+심언환
+심상열
+심정식
+심갑수
+심윤진
+심상열
+심원오
+심선규
+심종권
+심상희
+심금종
+심원현
+심광부
+심석보
+심성장
+심용조
+심 희
+심설화
+심동섭
+심칠선
+심순호
+심수보
+심진주
+심명주
+심인순
+심영보
+심래진
+심병도
+심판수
+심영봉
+심진태
+심무봉
+심행이
+심영숙
+심권상
+심제하
+심병규
+심재달
+심봉호
+심정목
+심명기
+심재봉
+심상오
+심춘기
+심상윤
+심재용
+심희호
+심명율
+심재한
+심재원
+심종영
+심종동
+심광희
+심재익
+심복재
+심칠근
+심병동
+심재현
+심분운
+심 해
+심재원
+심점철
+심태용
+심근숙
+심이주
+심정섭
+심효화
+심정경
+심월암
+심주섭
+심광현
+심분열
+심윤주
+심중섭
+심귀난
+심제소
+심성현
+심차조
+심태길
+심석순
+심춘봉
+심창섭
+심영준
+심신자
+심순이
+심춘섭
+심종택
+심훈규
+심돈석
+심춘섭
+심동재
+심영완
+심운남
+심태준
+심혁수
+심정국
+심범용
+심해진
+심덕일
+심관수
+심창이
+심현주
+심동중
+심은흠
+심봉준
+안 순
+안용환
+안인란
+안종순
+안갑현
+안득화
+안영숙
+안귀순
+안경숙
+안운석
+안수택
+안순부
+안경숙
+안행동
+안병수
+안영남
+안경옥
+안순조
+안상태
+안영현
+안경조
+안호교
+안병경
+안영조
+안경호
+안원주
+안정희
+안귀태
+안계순
+안원학
+안재화
+안용호
+안광석
+안상도
+안양민
+안태수
+안귀학
+안용봉
+안임경
+안경대
+안규호
+안광훈
+안기수
+안용수
+안도상
+안중석
+안재희
+안대식
+안동문
+안영태
+안범순
+안명식
+안두이
+안영용
+안황호
+안영규
+안말선
+안종열
+안동수
+안성란
+안명준
+안재수
+안선만
+안일순
+안미애
+안학원
+안상팔
+안동주
+안미현
+안춘우
+안영화
+안태석
+안민권
+안용미
+안순임
+안월용
+안봉옥
+안재권
+안점곤
+안남순
+안봉조
+안종원
+안태생
+안용계
+안봉하
+안태칠
+안갑주
+안종영
+안분늠
+안춘일
+안현순
+안명지
+안상국
+안지련
+안정수
+안은갑
+안상옥
+안용국
+안제배
+안상열
+안상용
+안근오
+안재규
+안근근
+안상태
+안일진
+안해훈
+안순담
+안설아
+안정용
+안순현
+안기하
+안성섭
+안호규
+안국미
+안준곤
+안성은
+안태희
+안경용
+안말택
+안성일
+안석지
+안연규
+안충렬
+안성철
+안궁석
+안유현
+안쌍식
+안성호
+안소순
+안준식
+안성권
+안성희
+안진철
+안한식
+안상진
+안세방
+안주정
+안갑홍
+안정한
+안수남
+안병현
+안종화
+안용호
+안수용
+안창웅
+안태재
+안보철
+안수정
+안신휴
+안장영
+안순석
+안수천
+안영관
+안영탁
+안경영
+안순득
+안영부
+안종관
+안성기
+안순자
+안죽중
+안성술
+안태일
+안순희
+안재용
+안달권
+안계필
+안승수
+안병기
+안형열
+안현치
+안신철
+안동순
+안갑동
+안판태
+안영경
+안명덕
+안재욱
+안창수
+안영근
+안재건
+안분자
+안승선
+안영달
+안문영
+안해식
+안수권
+안영무
+안영문
+안연희
+안정탁
+안영수
+안만만
+안정란
+안남수
+안영주
+안 용
+안헌용
+안순태
+안영철
+안윤택
+안문자
+안종권
+안영한
+안종석
+안정두
+안정수
+안영호
+안완룡
+안태덕
+안경갑
+안용수
+안금노
+안종곤
+안순근
+안용태
+안석도
+안선영
+안정화
+안용환
+안동자
+안건호
+안일인
+안윤정
+안정곤
+안주기
+안종일
+안은미
+안호태
+안만식
+안한현
+안일훈
+안 동
+안만수
+안운종
+안재관
+안현영
+안지용
+안일수
+안재원
+안응호
+안건규
+안경원
+안재희
+안자원
+안양자
+안상안
+안정웅
+안성옥
+안분용
+안영도
+안정현
+안영식
+안보란
+안무호
+안정호
+안성길
+안정분
+안영대
+안종갑
+안일수
+안봉화
+안철록
+안종표
+안홍옥
+안도현
+안부숙
+안태식
+안석순
+안영용
+안해준
+안태식
+안완세
+안해성
+안병순
+안평수
+안종환
+안강칠
+안재용
+안피가로
+안영환중
+안정춘오
+안영권정
+안학주
+안순달
+안돈자
+안두수
+안해숙
+안권호
+안교갑
+안삼주
+안현석
+안말세
+안완호
+안병영
+안현숙
+안진수
+안충조
+안종환
+안형대
+안윤우
+안태남
+안영경
+안호섭
+안은만
+안태유
+안근수
+안호준
+안영수
+안연규
+안상익
+안홍문
+안해동
+안광택
+안경근
+안홍수
+안진희
+안현영
+안점수
+안효문
+안영식
+안이국
+안택태
+안효용
+안광수
+안운상
+안우일
+안희도
+안종용
+안정옥
+안재록
+양갑석
+양은석
+양온숙
+양충도
+양갑승
+양기식
+양영도
+양규남
+양경미
+양명숙
+양동기
+양호교
+양경화
+양선태
+양대자
+양복옥
+양구현
+양동덕
+양갑철
+양수채
+양귀선
+양계범
+양학호
+양금자
+양금옥
+양장구
+양진수
+양경환
+양기준
+양정수
+양병철
+양증근
+양기철
+양신진
+양정석
+양금연
+양대길
+양운술
+양이휴
+양영화
+양도일
+양봉원
+양수수
+양영길
+양동명
+양연출
+양진황
+양학진
+양동문
+양경진
+양태만
+양윤식
+양동연
+양해이
+양수수
+양태식
+양만수
+양병호
+양재채
+양성주
+양면수
+양성조
+양봉희
+양삼훈
+양면수
+양소경
+양완교
+양정휴
+양문현
+양경섭
+양말주
+양창봉
+양미경
+양상희
+양창조
+양순곤
+양부석
+양규수
+양성석
+양일열
+양사용
+양봉환
+양수수
+양용식
+양삼순
+양동종
+양윤호
+양용자
+양상근
+양순진
+양홍권
+양재덕
+양상열
+양상연
+양소현
+양용선
+양상환
+양동수
+양익영
+양애태
+양선길
+양영호
+양한영
+양영태
+양성경
+양희성
+양의경
+양병남
+양성관
+양현태
+양달정
+양홍태
+양성옥
+양무우
+양환영
+양응국
+양성옥
+양옥희
+양진수
+양영석
+양성욱
+양호식
+양상권
+양용수
+양성훈
+양승진
+양선영
+양기남
+양소록
+양경인
+양철희
+양성순
+양순심
+양순규
+양영율
+양종헌
+양순연
+양인분
+양준자
+양현규
+양순용
+양상희
+양한년
+양인철
+양승태
+양운이
+양태만
+양연창
+양연옥
+양헌오
+양갑복
+양인호
+양연용
+양동기
+양기식
+양종용
+양영규
+양종식
+양태숙
+양태열
+양영규
+양원희
+양기준
+양용우
+양영만
+양애철
+양춘택
+양분중
+양영석
+양담조
+양우순
+양용리
+양영선
+양기원
+양순섭
+양기주
+양옥조
+양상원
+양춘태
+양태옥
+양용이
+양영식
+양영탁
+양연호
+양용판
+양선준
+양오호
+양말해
+양월임
+양영현
+양세근
+양성식
+양유호
+양하환
+양종묵
+양구상
+양은옥
+양봉삼
+양일우
+양정기
+양을생
+양두형
+양현갑
+양동식
+양장수
+양정자
+양화성
+양규희
+양재철
+양용택
+양철호
+양근점
+양재철
+양종헌
+양판호
+양외규
+양재헌
+양외복
+양영갑
+양정동
+양정석
+양용석
+양철곤
+양학현
+양정호
+양근자
+양준규
+양근대
+양정환
+양정권
+양점철
+양학금
+양증수
+양인현
+양부숙
+양규암
+양진석
+양분지
+양재목
+양교환
+양진태
+양해택
+양시호
+양근규
+양차수
+양영환
+양태숙
+양종원
+양철곤
+양진일
+양판민
+양종기
+양춘립
+양기분
+양현근
+양상해
+양해근
+양수지
+양연현
+양태웅
+양해장
+양홍애
+양태수
+양선득
+양헌도
+양윤숙
+양수자
+양수관
+양현석
+양경준
+양점이
+양장용
+양형학
+양성동
+양준관
+양윤훅
+양호승
+양종호
+양해동
+양덕진
+어문조
+어원중
+어동혁
+어근철
+어현태
+어종목
+어재구
+어위수
+엄간직
+엄기호
+엄경진
+엄원현
+엄계봉
+엄말남
+엄재수
+엄우수
+엄규현
+엄환수
+엄판자
+엄해선
+엄기환
+엄남연
+엄정섭
+엄휘도
+엄막이
+엄상수
+엄봉희
+엄범진
+엄삼주
+엄우식
+엄해원
+엄상수
+엄상기
+엄위헌
+엄규수
+엄병대
+엄상용
+엄자수
+엄운진
+엄성구
+엄상용
+엄판수
+엄수조
+엄장호
+엄상우
+엄석호
+엄상수
+엄규숙
+엄성일
+엄갑길
+엄시근
+엄창선
+엄성흠
+엄사순
+엄수홍
+엄명규
+엄소덕
+엄찬근
+엄병학
+엄광홍
+엄소점
+엄재출
+엄효환
+엄정숙
+엄영섭
+엄석석
+엄명형
+엄승효
+엄외덕
+엄수조
+엄상대
+엄세재
+엄용덕
+엄갑선
+엄순국
+엄재율
+엄익균
+엄정연
+엄준순
+엄자자
+엄익기
+엄병귀
+엄태철
+엄상돌
+엄익덕
+엄만태
+엄진호
+엄우동
+엄정섭
+엄강술
+엄순복
+엄규철
+엄정자
+엄홍수
+엄정대
+엄도늠
+엄종섭
+엄상만
+엄정수
+엄원윤
+엄주섭
+엄중양
+엄영희
+엄일재
+엄중현
+엄영수
+엄계도
+엄윤규
+엄필화
+엄병영
+엄옥영
+엄원선
+엄호진
+엄희택
+엄종호
+엄상건
+엄희순
+엄경조
+엄맹덕
+엄용헌
+여기동
+여영년
+여석환
+여태식
+여기연
+여희칠
+여용구
+여철출
+여남환
+여윤훈
+여순대
+여재광
+여맹동
+여진태
+여동영
+여학숙
+여명환
+여용수
+여보춘
+여만술
+여병기
+여영섭
+여재갑
+여옥수
+여보연
+여태열
+여태태
+여병식
+여복연
+여정휴
+여신헌
+여한근
+여상갑
+여두태
+여동욱
+여판명
+여상균
+여용운
+여종현
+여영묵
+여상근
+여응행
+여일출
+여병식
+여상덕
+여종용
+여태윤
+여희호
+여상목
+여명길
+여정원
+여철준
+여상선
+여성이
+여승곤
+여병식
+여상연
+여경남
+여종수
+여태란
+여상우
+여성수
+여숭인
+여동식
+여상욱
+여선봉
+여오희
+여용용
+여상천
+여수록
+여영순
+여분봉
+여상헌
+여재준
+여재현
+여영태
+여상화
+여부자
+여근만
+여쌍수
+여석동
+여대연
+여광선
+여옥시
+여석윤
+여정한
+여상자
+여용우
+여성연
+여동팔
+여용석
+여두생
+여수용
+여영영
+여종봉
+여경숙
+여수원
+여대재
+여점금
+여종순
+여수철
+여종수
+여창술
+여성숙
+여술용
+여갑순
+여진식
+여소암
+여언숙
+여종현
+여재기
+여태한
+여원동
+여갑연
+여준득
+여상욱
+여원석
+여창근
+여병숙
+여태운
+여유동
+여영수
+여성상
+여명준
+여인협
+여부곤
+여재일
+여태이
+여재희
+여성택
+여길수
+여수건
+여점악
+여병호
+여대재
+여판봉
+여점출
+여병선
+여선우
+여동철
+여정구
+여성록
+여상호
+여상분
+여중갑
+여영현
+여성전
+여태현
+여청길
+여만훈
+여세경
+여명선
+여태순
+여용남
+여종만
+여의창
+여태욱
+여광호
+여헌원
+여융식
+여학동
+여치애
+여보형
+여환봉
+여해동
+여종태
+여대구
+여상일
+여홍민
+여용양
+여윤환
+여현수
+여환수
+여오석
+여재훈
+여경도
+여환식
+여연도
+여기갑
+여길태
+여환옥
+여근우
+여재만
+여왕길
+염곡지
+염인열
+염영자
+염주식
+염기천
+염봉덕
+염기화
+염주우
+염대득
+염남호
+염윤태
+염재배
+염덕술
+염지임
+염갑석
+염병례
+염상우
+염경진
+염소용
+염석희
+염숙이
+염정일
+염호우
+염면철
+염용준
+염태호
+염점학
+염남득
+염인실
+염식석
+염규창
+염경만
+염점례
+염상우
+염홍택
+염기권
+염종덕
+염근선
+염성호
+염종도
+염종환
+염영상
+염수이
+염종갑
+예수해
+예세식
+예임일
+예진배
+예용해
+예명동
+예승조
+예상범
+예종락
+예남률
+예회진
+예성환
+예한식
+예성호
+예수태
+예재숙
+예한태
+예규자
+예영용
+예석연
+오갑선
+오상순
+오점진
+오정만
+오건국
+오석홍
+오경용
+오근재
+오경렬
+오순익
+오갑완
+오명표
+오경출
+오을수
+오철옥
+오소균
+오경환
+오근호
+오길립
+오동우
+오경환
+오경표
+오종기
+오점학
+오경환
+오재복
+오두모
+오종호
+오광석
+오금수
+오치식
+오금정
+오광열
+오판용
+오하규
+오영만
+오광태
+오성열
+오정이
+오용식
+오광환
+오지열
+오부구
+오두학
+오국창
+오춘길
+오경문
+오삼희
+오귀님
+오상홍
+오봉란
+오경만
+오규식
+오천남
+오인섭
+오치희
+오규영
+오규용
+오방덕
+오근호
+오규오
+오제석
+오동돌
+오기학
+오규오
+오성동
+오용조
+오성상
+오규현
+오효래
+오영술
+오영식
+오근수
+오동성
+오문태
+오덕선
+오근식
+오홍경
+오병옥
+오용경
+오금이
+오분말
+오수연
+오겸만
+오기주
+오명찬
+오창호
+오태정
+오기환
+오영만
+오재석
+오덕용
+오기환
+오도원
+오광석
+오경업
+오난주
+오극식
+오기성
+오병자
+오남진
+오홍현
+오경태
+오태찬
+오남진
+오진춘
+오 연
+오종곤
+오달선
+오재익
+오상현
+오남식
+오달환
+오태암
+오연용
+오민웅
+오대근
+오의일
+오수규
+오진수
+오대용
+오남자
+오종권
+오용준
+오덕만
+오호홍
+오재현
+오준립
+오덕호
+오정이
+오용환
+오강영
+오도덕
+오병철
+오성용
+오은수
+오도현
+오명현
+오재난
+오진달
+오동연
+오원록
+오태민
+오승순
+오동열
+오가한
+오삼명
+오상희
+오동춘
+오년환
+오홍중
+오규순
+오동환
+오헌모
+오점석
+오선익
+오득조
+오외향
+오금분
+오태석
+오득환
+오휘호
+오병자
+오학웅
+오명록
+오혜세
+오점호
+오원야
+오명수
+오상순
+오윤현
+오종진
+오명숙
+오형희
+오찬남
+오한석
+오명희
+오태화
+오성호
+오하태
+오명희
+오장정
+오증주
+오영학
+오문갑
+오춘수
+오성희
+오시래
+오문환
+오정진
+오학덕
+오정정
+오병권
+오옥연
+오덕두
+오국도
+오병수
+오재옥
+오동순
+오영영
+오병철
+오유옥
+오태규
+오삼연
+오병훈
+오성채
+오태배
+오상이
+오복남
+오점한
+오옥숙
+오영덕
+오봉춘
+오청배
+오용호
+오현석
+오봉현
+오필지
+오규홍
+오철암
+오부길
+오경식
+오재동
+오영목
+오분석
+오용완
+오종환
+오세백
+오삼용
+오정표
+오규교
+오석균
+오삼용
+오영순
+오구철
+오수현
+오상근
+오만철
+오상옥
+오순수
+오상만
+오동출
+오창세
+오창현
+오상세
+오삼득
+오영영
+오현철
+오상조
+오순권
+오종규
+오선환
+오석만
+오윤창
+오순정
+오대영
+오석순
+오창호
+오희구
+오수계
+오석현
+오영용
+오운국
+오종술
+오선미
+오복임
+오영덕
+오븝숙
+오선숙
+오재학
+오숙태
+오덕석
+오성근
+오순원
+오성석
+오철연
+오성득
+오진구
+오복규
+오길조
+오성열
+오 욱
+오병조
+오규한
+오성찬
+오귀순
+오영열
+오곤조
+오세광
+오정곤
+오일익
+오기호
+오세웅
+오광봉
+오상수
+오수욱
+오세원
+오재영
+오종순
+오봉조
+오세인
+오진진
+오용철
+오옥구
+오세일
+오윤용
+오후술
+오필열
+오수현
+오재자
+오헌석
+오명희
+오수환
+오대도
+오수훈
+오상영
+오순화
+오세자
+오용식
+오재자
+오술현
+오효규
+오영원
+오갑환
+오승열
+오두학
+오정호
+오옥준
+오연석
+오재수
+오금돌
+오귀동
+오연호
+오한업
+오태권
+오정열
+오염각
+오흥순
+오상선
+오기복
+오영식
+오명동
+오익우
+오말기
+오영화
+오수자
+오대준
+오순호
+오영환
+오부갑
+오정철
+오원준
+오오환
+오쌍권
+오관도
+오석상
+오옥선
+오한열
+오규선
+오용식
+오왕수
+오상흠
+오범순
+오인익
+오용술
+오경순
+오정용
+오성호
+오우춘
+오숙경
+오문빈
+오만수
+오운용
+오태상
+오창수
+오갑한
+오원문
+오영섭
+오해배
+오준수
+오원배
+오병정
+오칠균
+오영열
+오원선
+오재재
+오화기
+오수섭
+오원수
+오문모
+오임희
+오삼진
+오월봉
+오운옥
+오종환
+오오학
+오윤규
+오재재
+오장기
+오병홍
+오윤복
+오옥호
+오희희
+오동돌
+오윤해
+오영자
+오중찬
+오을완
+오윤환
+오재환
+오복재
+오윤진
+오은도
+오선근
+오병철
+오삼석
+오은환
+오해년
+오윤식
+오학동
+오의열
+오순환
+오대열
+오종운
+오인현
+오성주
+오상화
+오삼호
+오일성
+오영백
+오영원
+오정걸
+오임석
+오광구
+오근한
+오상호
+오자종
+오규기
+오성광
+오주용
+오재곤
+오장모
+오정규
+오미경
+오재권
+오혜호
+오윤표
+오소태
+오재근
+오영팔
+오정섭
+오태원
+오재동
+오덕웅
+오태열
+오한성
+오재범
+오윤호
+오제분
+오원태
+오재석
+오영기
+오원주
+오병흠
+오재수
+오찬석
+오태이
+오정상
+오재순
+오헌기
+오막정
+오상기
+오재영
+오대향
+오상혁
+오선배
+오재용
+오소진
+오국춘
+오인봉
+오재용
+오승원
+오희조
+오두근
+오재우
+오경문
+오형옥
+오일운
+오재윤
+오영대
+오홍길
+오태도
+오재일
+오창훈
+오택흠
+오선학
+오재천
+오상일
+오병종
+오점보
+오재춘
+오용선
+오만준
+오광만
+오점순
+오복억
+오태태
+오순곤
+오점환
+오장인
+오진인
+오창균
+오정래
+오상연
+오상원
+오병우
+오정애
+오문근
+오현규
+오재섭
+오정열
+오장덕
+오동곤
+오경선
+오정열
+오영욱
+오갑헌
+오상기
+오정현
+오승구
+오정연
+오현준
+오정호
+오윤출
+오민선
+오윤상
+오정환
+오덕철
+오록숙
+오광대
+오정환
+오은욱
+오재재
+오태돌
+오제열
+오재옥
+오영주
+오봉수
+오종수
+오상재
+오정선
+오삼일
+오종탁
+오정영
+오종옥
+오원균
+오종호
+오재화
+오종문
+오원순
+오종화
+오성일
+오영복
+오진호
+오종환
+오선경
+오의연
+오근상
+오주범
+오희호
+오규수
+오길기
+오준표
+오명식
+오태혁
+오태환
+오준현
+오원성
+오해장
+오영규
+오준호
+오병석
+오호배
+오종준
+오준환
+오점호
+오재휴
+오남수
+오준희
+오남현
+오영순
+오홍종
+오중열
+오명철
+오계운
+오홍건
+오창국
+오무호
+오언수
+오길성
+오창환
+오금태
+오상영
+오찬계
+오춘자
+오우생
+오보조
+오영성
+오칠규
+오종영
+오말도
+오봉술
+오칠옥
+오수환
+오영성
+오용필
+오칠환
+오낙진
+오재로
+오동용
+오칠환
+오정봉
+오종순
+오용식
+오타분
+오점규
+오정춘
+오성태
+오태수
+오판연
+오점숙
+오기순
+오태재
+오홍한
+오석의
+오대숙
+오태준
+오명호
+오준숙
+오동섬
+오태진
+오영일
+오일학
+오종식
+오태호
+오욱준
+오동식
+오월수
+오태환
+오찬수
+오태석
+오종식
+오판진
+오영기
+오동달
+오문효
+오학근
+오영림
+오상현
+오용수
+오한권
+오광우
+오달희
+오남심
+오한철
+오영기
+오돈수
+오순암
+오해근
+오방고
+오태열
+오원근
+오해만
+오학이
+오영분
+오의열
+오해찬
+오용동
+오재기
+오동철
+오헌철
+오영택
+오말홍
+오헌교
+오혜정
+오윤순
+오주래
+오영을
+오호이
+오광길
+오한호
+오중교
+오호찬
+오승헌
+오상성
+오기란
+오화자
+오문기
+오교호
+오태철
+오화진
+오점택
+오정환
+오상동
+오효재
+오한갑
+오진인
+오문이
+오흥열
+오옥한
+오현흠
+오용근
+오희숙
+오삼환
+오충천
+오기운
+옥유봉
+옥정팔
+옥재주
+옥종래
+왕태호
+왕동숙
+왕병상
+왕상정
+우도열
+우덕란
+우찬호
+우노조
+우명구
+우근복
+우교대
+우수득
+우봉천
+우의수
+우종철
+우영현
+우상선
+우두철
+우도명
+우점연
+우상선
+우장수
+우한율
+우용기
+우상수
+우증곤
+우성열
+우매주
+우상수
+우대식
+우용남
+우규목
+우상현
+우종태
+우정자
+우덕제
+우석조
+우순일
+우재재
+우창순
+우성균
+우병민
+우진수
+우병호
+우성용
+우창호
+우용대
+우종윤
+우세근
+우재명
+우순화
+우경숙
+우수영
+우선경
+우막수
+우소조
+우수하
+우영교
+우규보
+우종향
+우순례
+우종술
+우일복
+우만옥
+우실용
+우윤수
+우종수
+우규수
+우영문
+우근술
+우재영
+우용영
+우영태
+우종점
+우문헌
+우종차
+우옥기
+우수익
+우갑우
+우필규
+우원환
+우희암
+우정식
+우중호
+우위선
+우명수
+우우애
+우종순
+우인걸
+우귀화
+우순숙
+우언선
+우인걸
+우종열
+우명현
+우수권
+우정순
+우범열
+우진실
+우동환
+우정임
+우문수
+우만태
+우영명
+우종곤
+우태규
+우재모
+우광식
+우종보
+우화철
+우병석
+우병섭
+우종열
+우갑문
+우갑하
+우일환
+우종필
+우홍식
+우순식
+우진곤
+우종학
+우재옥
+우중목
+우오조
+우종환
+우순수
+우만술
+우호수
+우종희
+우재환
+우윤해
+우상문
+우진호
+우옥성
+우영성
+우공남
+우창효
+우만기
+우종윤
+우쌍용
+우치홍
+우동문
+우봉정
+우점학
+우태섭
+우병순
+우종자
+우용보
+우행자
+우홍주
+우소현
+우일호
+우화춘
+우상태
+우순남
+우이술
+우희도
+우홍생
+우주종
+우우혁
+우희조
+우학상
+우덕섭
+우혜숙
+원영옥
+원연규
+원훈규
+원태재
+원용주
+원성득
+원상곤
+원태금
+원종길
+원원래
+원봉래
+원순수
+위성기
+위순규
+위판희
+위형덕
+유갑용
+유화목
+유규분
+유익국
+유갑진
+유해단
+유상근
+유종성
+유경수
+유현심
+유인선
+유용식
+유경열
+유상선
+유한덕
+유천출
+유경재
+유장숙
+유혜열
+유교완
+유경재
+유정수
+유귀미
+유분식
+유경종
+유희일
+유순식
+유의수
+유경팔
+유석선
+유숙수
+유효춘
+유경희
+유춘선
+유혜환
+유판술
+유계열
+유순천
+유영순
+유갑석
+유광열
+유규출
+유두구
+유수호
+유광우
+유춘만
+유태해
+유동동
+유광익
+유달수
+유병생
+유정식
+유광자
+유정석
+유만랑
+유판희
+유귀분
+유동오
+유재근
+유봉필
+유귀연
+유용수
+유경균
+유병대
+유근배
+유의동
+유경주
+유재근
+유근선
+유방호
+유정이
+유재선
+유근식
+유인권
+유희선
+유기성
+유기범
+유성숙
+유상석
+유수원
+유기재
+유환형
+유태근
+유다수
+유길돌
+유중정
+유만배
+유호권
+유남재
+유일정
+유해연
+유봉희
+유달수
+유순수
+유태기
+유동순
+유대근
+유용구
+유기악
+유건철
+유대근
+유청희
+유대환
+유상환
+유대만
+유영시
+유성숙
+유영성
+유대원
+유종표
+유순기
+유영수
+유덕환
+유두정
+유기선
+유재환
+유덕희
+유오배
+유학범
+유호현
+유동일
+유달수
+유청식
+유명웅
+유동재
+유현수
+유해돌
+유광봉
+유동희
+유순훈
+유한봉
+유영칠
+유두식
+유종도
+유문임
+유대희
+유두연
+유삼호
+유호택
+유옥현
+유득환
+유강수
+유일웅
+유무찬
+유만섭
+유남남
+유칠국
+유규환
+유만재
+유용정
+유병기
+유종세
+유말임
+유대해
+유용식
+유홍희
+유명대
+유재호
+유진남
+유문덕
+유명열
+유동우
+유형창
+유윤익
+유명의
+유영열
+유종일
+유헌남
+유무상
+유귀우
+유헌필
+유철열
+유무하
+유오경
+유재전
+유복영
+유문재
+유명도
+유재여
+유실재
+유문재
+유순희
+유의숙
+유점화
+유미영
+유 훈
+유상경
+유병수
+유민자
+유주갑
+유태태
+유순봉
+유배근
+유오술
+유동진
+유타리
+유병관
+유동수
+유영덕
+유재현
+유병권
+유효조
+유상자
+유덕용
+유병규
+유명구
+유봉회
+유복희
+유병길
+유기주
+유성식
+유동식
+유병대
+유대수
+유소용
+유점영
+유병덕
+유점성
+유영윤
+유설숙
+유병두
+유춘영
+유중조
+유상종
+유병래
+유갑철
+유영말
+유진천
+유병록
+유영호
+유현규
+유영호
+유병묵
+유인준
+유채석
+유환수
+유병묵
+유영휴
+유현자
+유근용
+유병문
+유삼래
+유선택
+유임길
+유병배
+유무열
+유연복
+유기제
+유병석
+유임수
+유호교
+유삼진
+유병섭
+유현동
+유종학
+유영호
+유병수
+유춘남
+유정순
+유윤길
+유병순
+유용규
+유기식
+유승란
+유병열
+유정경
+유금팔
+유숙원
+유병영
+유명로
+유영열
+유병옥
+유병옥
+유동문
+유창생
+유용황
+유병완
+유응희
+유영용
+유덕녀
+유병외
+유주갑
+유영순
+유세호
+유병용
+유순순
+유태호
+유원한
+유병원
+유경섭
+유우섭
+유희욱
+유병원
+유원달
+유상상
+유차문
+유병윤
+유홍암
+유수수
+유성득
+유병은
+유광대
+유태여
+유재술
+유병이
+유옥배
+유정기
+유석리
+유병주
+유헌자
+유종환
+유석제
+유병주
+유덕식
+유영순
+유용문
+유병주
+유춘영
+유근석
+유명근
+유병철
+유상수
+유순용
+유순봉
+유병철
+유종락
+유부영
+유정학
+유병출
+유영순
+유정일
+유소남
+유병충
+유효순
+유정수
+유호곤
+유병태
+유칠근
+유대철
+유판진
+유병택
+유명세
+유정석
+유종환
+유병하
+유상수
+유의주
+유구원
+유병현
+유영수
+유효균
+유갑대
+유병호
+유무원
+유현희
+유봉상
+유병호
+유경선
+유종봉
+유순자
+유병훈
+유양숙
+유성환
+유 서
+유봉덕
+유순웅
+유응항
+유미섭
+유봉식
+유동식
+유학창
+유동전
+유삼수
+유명판
+유순숙
+유경국
+유상근
+유옥조
+유두복
+유봉락
+유상근
+유윤수
+유일영
+유태화
+유상근
+유규화
+유성용
+유성규
+유상길
+유창덕
+유성일
+유정주
+유상덕
+유철태
+유용선
+유도식
+유상천
+유종식
+유용환
+유종천
+유상태
+유선중
+유점수
+유인한
+유석재
+유문완
+유한필
+유봉문
+유석재
+유봉식
+유충경
+유지지
+유석호
+유성운
+유수숙
+유병해
+유선자
+유영시
+유조수
+유상자
+유선태
+유종석
+유준교
+유분구
+유성수
+유종근
+유태한
+유기수
+유성자
+유선원
+유진달
+유계희
+유성재
+유외식
+유용근
+유성수
+유세록
+유태원
+유양근
+유영건
+유소선
+유장덕
+유수선
+유인경
+유소순
+유창기
+유동권
+유원수
+유송옥
+유순욱
+유성표
+유갑효
+유수남
+유순환
+유달준
+유소은
+유숙자
+유재권
+유용도
+유종관
+유숙희
+유상옥
+유신호
+유춘각
+유순도
+유순수
+유석상
+유현돌
+유순연
+유태권
+유윤정
+유영래
+유순자
+유증운
+유금무
+유화영
+유순조
+유재결
+유순현
+유덕태
+유승교
+유분영
+유기룡
+유정희
+유승훈
+유달근
+유병술
+유종정
+유암이
+유미흠
+유홍원
+유창수
+유애자
+유대순
+유정주
+유홍이
+유애희
+유삼성
+유성희
+유천권
+유양근
+유명태
+유성수
+유언생
+유억식
+유상남
+유성현
+유정숙
+유영계
+유곡청
+유창하
+유원학
+유영수
+유선성
+유문판
+유은강
+유영순
+유선재
+유오찬
+유명록
+유영재
+유상준
+유해판
+유우진
+유영팔
+유정남
+유무희
+유미란
+유용구
+유태학
+유상구
+유봉정
+유용구
+유주화
+유종학
+유명호
+유용범
+유기정
+유보용
+유중동
+유용선
+유성준
+유하국
+유수수
+유용수
+유도복
+유종환
+유영순
+유용식
+유일태
+유용선
+유정태
+유용재
+유정현
+유남교
+유칠조
+유용조
+유순완
+유재래
+유분권
+유우길
+유종석
+유정진
+유순현
+유운영
+유정록
+유동곤
+유상도
+유원근
+유진호
+유병재
+유한삼
+유원일
+유재윤
+유이봉
+유동빈
+유원출
+유규진
+유종호
+유용목
+유원호
+유순남
+유정태
+유을휘
+유월식
+유덕두
+유필선
+유민정
+유위상
+유의주
+유재만
+유영철
+유윤상
+유춘춘
+유학석
+유영남
+유윤재
+유병래
+유정임
+유연우
+유은선
+유태수
+유광세
+유명언
+유은전
+유원석
+유만호
+유윤식
+유은정
+유창주
+유재호
+유정훈
+유은진
+유점덕
+유용근
+유정호
+유을수
+유태만
+유유곤
+유수병
+유을희
+유상태
+유무옥
+유항이
+유인봉
+유상웅
+유병길
+유재오
+유인재
+유문환
+유금순
+유준성
+유일성
+유영호
+유대택
+유성기
+유일성
+유종숙
+유길중
+유재용
+유일성
+유상훈
+유영규
+유원훈
+유장리
+유환웅
+유정국
+유균술
+유재견
+유석구
+유상수
+유상정
+유재곤
+유태식
+유수수
+유은근
+유재근
+유식갑
+유미만
+유순자
+유재도
+유창호
+유영출
+유상우
+유재등
+유필진
+유남만
+유운현
+유재만
+유재훈
+유용원
+유태달
+유재사
+유재종
+유화희
+유일운
+유재선
+유판균
+유청태
+유정연
+유재선
+유호암
+유수복
+유옥열
+유재성
+유만열
+유월엽
+유순태
+유재수
+유영조
+유수범
+유재태
+유재수
+유창점
+유영수
+유응찬
+유재영
+유정진
+유삼연
+유정만
+유재영
+유종원
+유용정
+유충자
+유재용
+유동수
+유재술
+유정달
+유재웅
+유주배
+유주일
+유우배
+유재철
+유인경
+유명석
+유호자
+유재호
+유영봉
+유덕출
+유연희
+유재호
+유종원
+유창태
+유기조
+유재홍
+유홍식
+유사수
+유재재
+유재회
+유상관
+유상란
+유계수
+유재훈
+유을선
+유상순
+유남숙
+유재훈
+유정식
+유철식
+유정계
+유재훈
+유인준
+유강영
+유정덕
+유점분
+유백도
+유상호
+유창택
+유점태
+유신욱
+유문수
+유대덕
+유정경
+유성도
+유영병
+유홍한
+유정근
+유국성
+유재종
+유윤현
+유정도
+유일영
+유재곤
+유창종
+유정식
+유광원
+유경현
+유기동
+유정식
+유양권
+유한식
+유영용
+유정식
+유태식
+유익종
+유차한
+유정자
+유은원
+유영이
+유경태
+유정재
+유동웅
+유종현
+유경연
+유정화
+유복식
+유보기
+유영대
+유제연
+유대호
+유원호
+유나국
+유제춘
+유임열
+유말완
+유병곤
+유제호
+유우욱
+유태택
+유동호
+유종군
+유영형
+유기종
+유옥근
+유종수
+유병필
+유광현
+유태난
+유종식
+유장봉
+유성조
+유차출
+유종중
+유순덕
+유복갑
+유순춘
+유종현
+유옥열
+유석운
+유태수
+유지호
+유삼영
+유상구
+유치만
+유진근
+유재희
+유영복
+유월식
+유차석
+유병호
+유기이
+유현염
+유차선
+유학순
+유광훈
+유응식
+유창근
+유영이
+유종기
+유수표
+유춘영
+유병순
+유봉노
+유철시
+유춘자
+유종실
+유용조
+유도진
+유칠용
+유삼원
+유인자
+유병섭
+유태선
+유창용
+유인열
+유철일
+유태수
+유동대
+유윤연
+유혜호
+유태종
+유철영
+유윤철
+유성보
+유판오
+유승원
+유덕철
+유금수
+유필이
+유인근
+유현영
+유재윤
+유한상
+유지암
+유인덕
+유희순
+유한식
+유성구
+유진영
+유병학
+유한열
+유개홍
+유종상
+유기돌
+유한종
+유준수
+유동용
+유수실
+유해년
+유철종
+유화환
+유상택
+유해운
+유종순
+유창청
+유양희
+유해정
+유마하
+유차권
+유철복
+유해준
+유치순
+유근규
+유정숙
+유행지
+유영수
+유경병
+유대수
+유헌식
+유봉철
+유일수
+유정수
+유현식
+유효택
+유찬웅
+유지한
+유현호
+유형호
+유기재
+유말동
+유홍근
+유영교
+유기숙
+유용헌
+유홍재
+유수종
+유중이
+유해달
+유화웅
+유천곤
+유영우
+유외근
+유효덕
+유금식
+유덕관
+유용조
+유효선
+유정귀
+유광우
+유영수
+유후근
+유점봉
+유영도
+유진종
+유휘선
+유동욱
+유재식
+유록규
+유흥관
+유영순
+유영자
+유철경
+유흥기
+유분래
+유익순
+유병수
+육무웅
+육성석
+육동현
+육진중
+육종근
+육충복
+육영규
+육무수
+육종대
+육석익
+육성일
+육귀근
+육희숙
+육의준
+육재표
+육규우
+윤 순
+윤기섭
+윤광휴
+윤화열
+윤갑순
+윤강개
+윤종군
+윤종한
+윤경복
+윤용록
+윤용국
+윤팔연
+윤경식
+윤정등
+윤금철
+윤수년
+윤경조
+윤헌호
+윤정재
+윤 수
+윤경호
+윤명기
+윤천환
+윤설태
+윤경희
+윤주옥
+윤차선
+윤춘석
+윤계연
+윤세선
+윤해자
+윤봉상
+윤공원
+윤낙규
+윤명흥
+윤애환
+윤관식
+윤태현
+윤해우
+윤인학
+윤광기
+윤계준
+윤명선
+윤상조
+윤권식
+윤금기
+윤달철
+윤선용
+윤권정
+윤영기
+윤점창
+윤태찬
+윤귀연
+윤용학
+윤장원
+윤계술
+윤규영
+윤우영
+윤춘구
+윤양진
+윤규영
+윤금식
+윤재수
+윤창규
+윤근만
+윤선태
+윤광조
+윤호계
+윤근수
+윤정선
+윤춘연
+윤재환
+윤금선
+윤주택
+윤태식
+윤춘규
+윤금식
+윤종기
+윤영보
+윤연실
+윤기덕
+윤순구
+윤지해
+윤경교
+윤기연
+윤명황
+윤진환
+윤정기
+윤기원
+윤순근
+윤기태
+윤심영
+윤길기
+윤윤일
+윤영리
+윤병호
+윤남기
+윤영주
+윤재이
+윤종길
+윤남식
+윤용길
+윤원일
+윤득량
+윤대영
+윤재미
+윤용문
+윤상호
+윤대현
+윤본연
+윤혁범
+윤실찬
+윤덕기
+윤병창
+윤춘준
+윤수점
+윤덕준
+윤영호
+윤용원
+윤덕호
+윤도균
+윤소원
+윤영종
+윤흥창
+윤도환
+윤영보
+윤수혁
+윤수기
+윤도희
+윤봉승
+윤안철
+윤옥봉
+윤동식
+윤례균
+윤점남
+윤재식
+윤동환
+윤옥중
+윤창호
+윤웅봉
+윤두기
+윤방동
+윤은학
+윤종휘
+윤두연
+윤종철
+윤해규
+윤옥봉
+윤명국
+윤정철
+윤주식
+윤헌기
+윤명기
+윤정희
+윤상수
+윤병희
+윤모임
+윤홍택
+윤상열
+윤무수
+윤문구
+윤일희
+윤미환
+윤도대
+윤문기
+윤수균
+윤을호
+윤임훈
+윤문영
+윤태규
+윤태남
+윤기철
+윤병관
+윤말현
+윤균호
+윤봉봉
+윤병국
+윤달동
+윤만일
+윤호술
+윤병금
+윤남분
+윤삼기
+윤인철
+윤병기
+윤성순
+윤봉석
+윤권식
+윤병기
+윤명학
+윤진윤
+윤성환
+윤병길
+윤인국
+윤재균
+윤종배
+윤병길
+윤성웅
+윤영갑
+윤인선
+윤병노
+윤상조
+윤순원
+윤덕한
+윤병만
+윤수연
+윤낙석
+윤문묵
+윤병섭
+윤명원
+윤석강
+윤병경
+윤병욱
+윤천삼
+윤용희
+윤병기
+윤병입
+윤민화
+윤병국
+윤재철
+윤병조
+윤중선
+윤문기
+윤인규
+윤병천
+윤광희
+윤임택
+윤정홍
+윤병혁
+윤재흠
+윤종순
+윤재철
+윤병화
+윤기권
+윤상용
+윤성의
+윤보수
+윤영호
+윤삼현
+윤수식
+윤복용
+윤종성
+윤삼출
+윤정동
+윤봉춘
+윤영현
+윤준석
+윤영종
+윤분덕
+윤율정
+윤정중
+윤남헌
+윤분악
+윤정국
+윤복자
+윤대호
+윤분조
+윤손경
+윤진용
+윤홍태
+윤삼수
+윤쌍학
+윤매금
+윤욱생
+윤삼순
+윤주길
+윤성효
+윤성열
+윤삼암
+윤봉환
+윤원성
+윤수동
+윤상기
+윤동윤
+윤승호
+윤호원
+윤상노
+윤석옥
+윤태이
+윤무이
+윤상문
+윤영복
+윤정호
+윤순순
+윤상호
+윤연강
+윤황우
+윤남섭
+윤석기
+윤재현
+윤오일
+윤말용
+윤석암
+윤정천
+윤정열
+윤극상
+윤석용
+윤태란
+윤재근
+윤외세
+윤석주
+윤범하
+윤재회
+윤태열
+윤석찬
+윤삼호
+윤기우
+윤종화
+윤석한
+윤상환
+윤이득
+윤영기
+윤수기
+윤복옥
+윤영호
+윤사분
+윤수원
+윤강악
+윤동식
+윤용명
+윤수한
+윤수청
+윤기성
+윤태현
+윤숙자
+윤태진
+윤장석
+윤현용
+윤순이
+윤기택
+윤성창
+윤분홍
+윤순조
+윤영각
+윤재술
+윤택이
+윤순학
+윤오권
+윤규수
+윤기태
+윤순황
+윤재우
+윤홍연
+윤진학
+윤신오
+윤후우
+윤근차
+윤미복
+윤실경
+윤점기
+윤경수
+윤상호
+윤언기
+윤주대
+윤옥주
+윤영길
+윤언주
+윤보란
+윤상길
+윤등흠
+윤영국
+윤병동
+윤용일
+윤옥웅
+윤영숙
+윤갑환
+윤창경
+윤신영
+윤영임
+윤성순
+윤홍희
+윤학례
+윤영자
+윤정환
+윤오남
+윤장호
+윤영채
+윤영웅
+윤덕순
+윤석환
+윤영화
+윤중호
+윤성석
+윤봉임
+윤영희
+윤수익
+윤기곤
+윤정균
+윤영희
+윤영모
+윤연생
+윤숙구
+윤옥순
+윤국수
+윤춘업
+윤승석
+윤용관
+윤 기
+윤재철
+윤덕국
+윤용근
+윤지결
+윤사출
+윤영순
+윤용수
+윤술태
+윤상복
+윤천량
+윤원식
+윤봉웅
+윤진준
+윤용재
+윤원식
+윤수재
+윤재옥
+윤용규
+윤월만
+윤동연
+윤옥창
+윤점환
+윤을수
+윤수원
+윤용자
+윤봉기
+윤의웅
+윤실철
+윤일동
+윤정희
+윤이수
+윤영호
+윤을재
+윤삼순
+윤인섭
+윤해구
+윤만원
+윤용돌
+윤일식
+윤선호
+윤동열
+윤종식
+윤일식
+윤청열
+윤항수
+윤만곤
+윤일영
+윤삼성
+윤종섭
+윤관효
+윤임순
+윤문하
+윤노철
+윤수환
+윤재기
+윤동복
+윤성호
+윤경선
+윤재성
+윤용모
+윤영수
+윤영식
+윤점식
+윤원용
+윤권배
+윤희태
+윤점원
+윤말호
+윤의수
+윤외석
+윤정규
+윤현화
+윤대석
+윤원술
+윤정길
+윤기준
+윤도태
+윤욱동
+윤정옥
+윤신식
+윤영조
+윤태수
+윤정현
+윤덕중
+윤경도
+윤장수
+윤정호
+윤외석
+윤문식
+윤기식
+윤정효
+윤정건
+윤학식
+윤정조
+윤종각
+윤영문
+윤종룡
+윤억학
+윤종갑
+윤기인
+윤종선
+윤태조
+윤종구
+윤기호
+윤순길
+윤순일
+윤종규
+윤학덕
+윤기윤
+윤병성
+윤종극
+윤준원
+윤재용
+윤신수
+윤종대
+윤덕애
+윤병조
+윤창기
+윤종덕
+윤철순
+윤종남
+윤해세
+윤종덕
+윤순기
+윤판택
+윤정선
+윤종록
+윤영구
+윤범민
+윤정양
+윤종립
+윤태화
+윤주호
+윤수자
+윤종립
+윤태호
+윤운래
+윤옥수
+윤종문
+윤소호
+윤학용
+윤의경
+윤종민
+윤원식
+윤정홍
+윤종재
+윤종석
+윤정배
+윤양백
+윤두이
+윤종선
+윤영순
+윤재성
+윤극용
+윤종설
+윤석욱
+윤윤만
+윤손포
+윤종식
+윤경선
+윤동태
+윤원사
+윤종우
+윤주금
+윤기명
+윤득영
+윤종원
+윤세철
+윤성호
+윤종근
+윤종율
+윤기수
+윤병근
+윤태우
+윤종조
+윤계숙
+윤인상
+윤봉이
+윤종철
+윤윤익
+윤환도
+윤수수
+윤종해
+윤오익
+윤종근
+윤욱순
+윤종희
+윤한관
+윤언건
+윤미봉
+윤주건
+윤원석
+윤진하
+윤열환
+윤준겸
+윤상덕
+윤성우
+윤경우
+윤중기
+윤삼규
+윤승도
+윤세순
+윤지균
+윤희임
+윤한용
+윤성호
+윤진균
+윤말구
+윤소자
+윤석준
+윤진율
+윤광호
+윤은현
+윤기보
+윤진철
+윤형재
+윤광우
+윤상금
+윤찬기
+윤용현
+윤덕영
+윤태돌
+윤창락
+윤주한
+윤상현
+윤순호
+윤철중
+윤봉석
+윤대룡
+윤원구
+윤충길
+윤계균
+윤명섭
+윤문두
+윤태금
+윤소덕
+윤병식
+윤승준
+윤태수
+윤병숙
+윤정길
+윤필갑
+윤태식
+윤태복
+윤종이
+윤명진
+윤택기
+윤상식
+윤향희
+윤재미
+윤판균
+윤연희
+윤영금
+윤종철
+윤판기
+윤해철
+윤홍희
+윤춘화
+윤판술
+윤길건
+윤기태
+윤전홍
+윤학범
+윤석덕
+윤창식
+윤성순
+윤학원
+윤용호
+윤기노
+윤병구
+윤학조
+윤환기
+윤상성
+윤정열
+윤한동
+윤태이
+윤인현
+윤성훈
+윤한동
+윤한우
+윤용만
+윤선천
+윤한식
+윤용경
+윤경순
+윤좌홍
+윤함균
+윤노언
+윤원수
+윤대수
+윤현교
+윤성리
+윤 득
+윤전금
+윤현숙
+윤성종
+윤태호
+윤영조
+윤현우
+윤명홍
+윤종덕
+윤경수
+윤호용
+윤진교
+윤봉희
+윤희태
+윤화선
+윤홍철
+윤기도
+윤락식
+윤효기
+윤금일
+윤태란
+윤소동
+윤희달
+윤복암
+윤태진
+윤하주
+윤희대
+윤정익
+윤정만
+윤봉봉
+윤희덕
+윤윤식
+윤홍덕
+윤갑원
+윤희선
+윤종규
+윤홍익
+윤성광
+은덕기
+은헌선
+은상순
+은용진
+은충기
+은광희
+은분수
+은순병
+이 건
+이승기
+이원암
+이헌근
+이 경
+이삼해
+이병호
+이용권
+이 상
+이종택
+이성호
+이점백
+이 수
+이영수
+이종순
+이춘영
+이 숙
+이병교
+이정석
+이계조
+이 엄
+이해재
+이재행
+이대출
+이 인
+이창근
+이석원
+이재섭
+이 정
+이정룡
+이태학
+이상연
+이 준
+이순선
+이종권
+이춘석
+이 증
+이춘일
+이정식
+이순구
+이 진
+이정도
+이소자
+이종범
+이 청
+이상희
+이삼수
+이언돌
+이 학
+이함순
+이종재
+이경길
+이 호
+이재환
+이창훈
+이금수
+이 훈
+이음철
+이구용
+이태호
+이 훈
+이도욱
+이상말
+이경철
+이가매
+이종수
+이규만
+이수옥
+이감우
+이성근
+이영출
+이철원
+이갑노
+이세부
+이영성
+이경문
+이갑득
+이상수
+이상환
+이동호
+이갑석
+이경각
+이선호
+이영보
+이갑선
+이준윤
+이고호
+이재기
+이갑수
+이판용
+이종춘
+이윤기
+이갑순
+이승조
+이영호
+이영수
+이갑용
+이선영
+이정근
+이효섭
+이갑용
+이상호
+이점기
+이근학
+이갑임
+이내식
+이상순
+이길동
+이갑임
+이광균
+이면율
+이술갑
+이갑조
+이태분
+이국술
+이재기
+이갑조
+이기도
+이기순
+이효태
+이갑주
+이무식
+이태섭
+이광희
+이강렬
+이기집
+이수숙
+이영규
+이강명
+이은원
+이상식
+이준율
+이강석
+이윤순
+이경수
+이창희
+이강석
+이성화
+이두동
+이성혁
+이강세
+이태자
+이영선
+이재섭
+이강수
+이복종
+이소규
+이재원
+이강식
+이봉수
+이달대
+이갑한
+이강천
+이상율
+이성석
+이광호
+이강호
+이세순
+이수영
+이윤중
+이강호
+이영길
+이수임
+이종훈
+이강희
+이기병
+이범련
+이정수
+이개동
+이무호
+이금동
+이정석
+이개동
+이상수
+이상식
+이동섭
+이건곤
+이병현
+이권향
+이나철
+이건석
+이규자
+이수수
+이경수
+이건영
+이진균
+이선석
+이윤호
+이건옥
+이현도
+이선철
+이용용
+이건웅
+이용영
+이갑분
+이성순
+이건호
+이영서
+이명환
+이정환
+이건희
+이주학
+이윤배
+이종호
+이겸갑
+이미길
+이광만
+이영준
+이겸갑
+이교식
+이복영
+이옥순
+이경근
+이삼화
+이대문
+이문우
+이경노
+이종호
+이종우
+이원현
+이경동
+이외규
+이노회
+이혜옥
+이경동
+이노복
+이재수
+이명제
+이경란
+이찬정
+이정균
+이병원
+이경렬
+이영열
+이선이
+이정수
+이경만
+이남회
+이재덕
+이을만
+이경만
+이윤준
+이동근
+이근원
+이경목
+이점오
+이언봉
+이명환
+이경문
+이성연
+이종길
+이만윤
+이경봉
+이정진
+이금순
+이춘기
+이경석
+이영석
+이경분
+이종록
+이경석
+이중봉
+이명석
+이기관
+이경석
+이태근
+이한용
+이삼숙
+이경석
+이순종
+이삼봉
+이장우
+이경선
+이희원
+이점임
+이봉환
+이경수
+이성성
+이정섭
+이영우
+이경수
+이우철
+이판수
+이중순
+이경숙
+이동석
+이기찬
+이복출
+이경숙
+이상득
+이용선
+이수기
+이경순
+이경동
+이상호
+이구렬
+이경순
+이오진
+이덕덕
+이판길
+이경순
+이선복
+이수동
+이창덕
+이경식
+이정수
+이경용
+이달동
+이경식
+이신권
+이영문
+이말환
+이경암
+이만기
+이순숙
+이봉규
+이경영
+이광길
+이종석
+이순구
+이경옥
+이 화
+이기석
+이삼순
+이경이
+이수환
+이성호
+이명수
+이경자
+이소도
+이경집
+이석술
+이경출
+이우인
+이분관
+이주태
+이경탁
+이종숙
+이노택
+이경도
+이경호
+이종호
+이동수
+이윤분
+이경호
+이삼철
+이희흠
+이길섭
+이경호
+이성수
+이인수
+이창희
+이경후
+이태정
+이영운
+이만상
+이경훈
+이병홍
+이경석
+이주근
+이경희
+이종록
+이혁종
+이채섭
+이경희
+이복조
+이상수
+이차영
+이경희
+이정재
+이종래
+이유근
+이계로
+이정현
+이순기
+이사영
+이계문
+이경환
+이명문
+이정경
+이계분
+이근식
+이윤입
+이호상
+이계분
+이영오
+이점경
+이업철
+이계자
+이공악
+이순동
+이순근
+이계출
+이현강
+이칠완
+이제교
+이계호
+이영선
+이인열
+이장자
+이계홍
+이필구
+이택근
+이정권
+이계화
+이오기
+이춘조
+이여관
+이계훈
+이의식
+이필순
+이용중
+이고훈
+이만립
+이태천
+이재기
+이공만
+이창정
+이계태
+이영수
+이관기
+이명기
+이상배
+이성기
+이관식
+이윤리
+이동수
+이소길
+이관식
+이상철
+이태봉
+이정출
+이관이
+이점동
+이경웅
+이명입
+이관희
+이규용
+이진도
+이병근
+이광덕
+이원일
+이태만
+이분향
+이광배
+이상수
+이대건
+이동환
+이광석
+이위열
+이남식
+이쌍근
+이광석
+이재주
+이태현
+이수용
+이광수
+이종재
+이석성
+이상이
+이광수
+이상배
+이한식
+이긍조
+이광수
+이순자
+이규경
+이금태
+이광수
+이명봉
+이태국
+이상원
+이광수
+이승국
+이병호
+이억자
+이광수
+이석삼
+이상진
+이수화
+이광식
+이동근
+이만완
+이진환
+이광열
+이소곤
+이도원
+이상규
+이광일
+이차식
+이명동
+이태기
+이광자
+이명철
+이한주
+이희국
+이광재
+이종숙
+이종민
+이수희
+이광재
+이만래
+이해필
+이정덕
+이광조
+이기준
+이종순
+이태남
+이광조
+이기리
+이미종
+이세택
+이광준
+이성학
+이복석
+이춘석
+이광택
+이분환
+이윤택
+이종호
+이광행
+이상식
+이희도
+이술조
+이광호
+이만학
+이연택
+이길철
+이광호
+이종술
+이옥용
+이광호
+이광호
+이기관
+이진부
+이한숙
+이광호
+이인윤
+이재우
+이덕경
+이광호
+이승길
+이옥희
+이윤일
+이광호
+이병호
+이태섭
+이임용
+이광희
+이성서
+이규천
+이진훈
+이교선
+이미희
+이춘규
+이기호
+이교주
+이실욱
+이재규
+이준석
+이교주
+이언갑
+이재기
+이판열
+이교철
+이기복
+이흥용
+이종헌
+이구복
+이선동
+이계철
+이용완
+이구원
+이정수
+이영열
+이승태
+이구철
+이호경
+이의복
+이용희
+이구호
+이동흠
+이영분
+이상식
+이구홍
+이상선
+이재만
+이낙수
+이국균
+이갑일
+이해원
+이대석
+이국조
+이중형
+이병달
+이소천
+이국환
+이진태
+이기권
+이육두
+이국희
+이판숙
+이종석
+이자남
+이권도
+이재봉
+이점성
+이태식
+이권순
+이한현
+이종치
+이미광
+이권술
+이교래
+이일진
+이도형
+이권한
+이학도
+이용순
+이명식
+이권호
+이현상
+이태곤
+이남복
+이귀남
+이대식
+이광식
+이근복
+이귀남
+이동우
+이갑용
+이성희
+이귀덕
+이재숙
+이병순
+이순식
+이귀희
+이을이
+이영옥
+이정갑
+이귄식
+이상명
+이장석
+이정익
+이규경
+이학용
+이경배
+이영덕
+이규남
+이성환
+이말규
+이선봉
+이규년
+이수수
+이갑수
+이순구
+이규담
+이영수
+이인용
+이덕기
+이규도
+이옥출
+이병원
+이순고
+이규돈
+이송기
+이용현
+이동열
+이규례
+이상식
+이홍열
+이병환
+이규명
+이동학
+이종근
+이대석
+이규복
+이두상
+이문식
+이준경
+이규복
+이상호
+이양회
+이해섭
+이규부
+이원용
+이병식
+이종기
+이규상
+이원규
+이승우
+이재봉
+이규상
+이갑헌
+이경수
+이성덕
+이규석
+이상호
+이경호
+이병훈
+이규섭
+이태교
+이월연
+이도태
+이규섭
+이의호
+이동점
+이태선
+이규성
+이조관
+이해선
+이승기
+이규숙
+이상춘
+이운칠
+이임증
+이규안
+이원군
+이태환
+이용호
+이규옥
+이진식
+이경진
+이선우
+이규옥
+이기열
+이심오
+이일길
+이규완
+이부환
+이명일
+이석석
+이규완
+이광조
+이춘선
+이운덕
+이규용
+이석봉
+이수용
+이원곤
+이규용
+이원태
+이헌두
+이상동
+이규원
+이두호
+이상기
+이말태
+이규인
+이정범
+이판억
+이정배
+이규주
+이수환
+이수진
+이종숙
+이규진
+이현태
+이순경
+이경욱
+이규진
+이승표
+이영완
+이상근
+이규찬
+이재수
+이정란
+이영량
+이규찬
+이규익
+이한수
+이연규
+이규태
+이정주
+이근해
+이규홍
+이규태
+이해수
+이원문
+이명자
+이규택
+이장자
+이윤호
+이상협
+이규한
+이구순
+이덕언
+이용해
+이규현
+이종우
+이선조
+이호영
+이규홍
+이윤열
+이용희
+이태훈
+이균암
+이수상
+이수암
+이상호
+이균열
+이혜희
+이희문
+이윤동
+이균호
+이중화
+이봉주
+이혜만
+이근갑
+이경병
+이영영
+이춘생
+이근기
+이동용
+이령수
+이낙재
+이근길
+이수선
+이영우
+이미영
+이근배
+이윤원
+이춘식
+이광길
+이근백
+이상호
+이만규
+이순원
+이근범
+이현환
+이순복
+이갑식
+이근보
+이용순
+이성연
+이철병
+이근봉
+이규동
+이영술
+이래형
+이근서
+이정원
+이한만
+이윤치
+이근석
+이창주
+이 환
+이태순
+이근수
+이윤기
+이성석
+이광화
+이근영
+이재향
+이한석
+이수조
+이근우
+이삼술
+이분생
+이성숙
+이근우
+이태례
+이칠수
+이호이
+이근우
+이용대
+이술상
+이경기
+이근준
+이인윤
+이말근
+이영일
+이근중
+이영숙
+이세종
+이영희
+이근직
+이호식
+이우식
+이용형
+이근태
+이영용
+이동용
+이수권
+이근택
+이종수
+이창일
+이완용
+이근호
+이경이
+이기조
+이태규
+이근화
+이창효
+이용환
+이종분
+이근황
+이성진
+이정호
+이맹봉
+이금례
+이순득
+이한호
+이한조
+이금삼
+이옥득
+이명현
+이옥석
+이금석
+이만정
+이용태
+이선식
+이금석
+이덕분
+이성현
+이동갑
+이금석
+이성수
+이대규
+이태만
+이금선
+이종경
+이성세
+이봉수
+이금선
+이동순
+이신석
+이만호
+이금식
+이송숙
+이상옥
+이인봉
+이금연
+이태재
+이말식
+이남현
+이금연
+이복석
+이옥환
+이경택
+이금옥
+이대병
+이수남
+이성용
+이금옥
+이경식
+이수순
+이규동
+이금자
+이태출
+이재배
+이대창
+이금주
+이인수
+이우봉
+이도윤
+이금치
+이정종
+이정연
+이주조
+이기동
+이완준
+이점철
+이병태
+이기로
+이수진
+이갑순
+이흥수
+이기만
+이효남
+이태환
+이계찬
+이기목
+이한철
+이상상
+이이철
+이기병
+이인강
+이성기
+이달환
+이기복
+이원오
+이덕현
+이종숙
+이기분
+이순범
+이인주
+이상심
+이기빈
+이병석
+이길순
+이재보
+이기상
+이경호
+이정현
+이태영
+이기상
+이태철
+이광봉
+이기학
+이기상
+이일연
+이성준
+이의순
+이기생
+이봉우
+이쾌규
+이차만
+이기세
+이종성
+이원근
+이정이
+이기송
+이순민
+이정열
+이정희
+이기순
+이진한
+이도한
+이장인
+이기순
+이채정
+이주희
+이관화
+이기식
+이상규
+이장식
+이의만
+이기암
+이현수
+이상임
+이종국
+이기연
+이채철
+이태근
+이채순
+이기영
+이영동
+이대열
+이재복
+이기영
+이타용
+이진상
+이광철
+이기완
+이윤학
+이원희
+이준천
+이기용
+이순학
+이성옥
+이정계
+이기우
+이주수
+이동순
+이추복
+이기웅
+이충흠
+이석희
+이상석
+이기원
+이병홍
+이대경
+이영효
+이기원
+이대근
+이암진
+이출두
+이기자
+이춘희
+이경희
+이한호
+이기전
+이정숙
+이택득
+이정희
+이기종
+이종훈
+이기수
+이수숙
+이기주
+이두권
+이두갑
+이상수
+이기주
+이판진
+이풍근
+이경열
+이기진
+이부선
+이성작
+이대봉
+이기창
+이정석
+이병열
+이천식
+이기창
+이갑수
+이기수
+이동희
+이기철
+이상동
+이충만
+이팔훈
+이기철
+이성철
+이원식
+이천연
+이기태
+이점태
+이강호
+이낙우
+이기태
+이도표
+이준태
+이용구
+이기태
+이계악
+이한환
+이호술
+이기호
+이상호
+이행근
+이상원
+이기호
+이명문
+이욱운
+이태환
+이기호
+이두일
+이만남
+이선호
+이기홍
+이명중
+이병준
+이부대
+이기홍
+이정숙
+이종현
+이순자
+이기화
+이춘순
+이성현
+이태연
+이기환
+이춘석
+이봉일
+이점로
+이기훈
+이태규
+이소식
+이종섭
+이길석
+이우봉
+이신열
+이영조
+이길선
+이종호
+이희흠
+이대현
+이길용
+이호숙
+이재환
+이성석
+이길용
+이상엽
+이해기
+이재순
+이길재
+이덕환
+이옥래
+이희종
+이길재
+이정응
+이우욱
+이종중
+이길철
+이민술
+이종섭
+이일영
+이길태
+이태석
+이창화
+이진목
+이길한
+이태식
+이순득
+이효회
+이길호
+이종식
+이계순
+이규녀
+이길호
+이천원
+이중호
+이병준
+이길환
+이선상
+이창석
+이동선
+이길휘
+이종경
+이윤용
+이준헌
+이남기
+이부식
+이종오
+이태학
+이남기
+이대근
+이주표
+이일형
+이남덕
+이상환
+이종헌
+이채구
+이남선
+이광구
+이재영
+이재완
+이남순
+이주식
+이정분
+이해주
+이남술
+이선렬
+이영분
+이명희
+이남철
+이경열
+이영웅
+이판동
+이노근
+이광구
+이경상
+이태돌
+이노석
+이성성
+이채희
+이창배
+이노종
+이주우
+이정만
+이영두
+이다순
+이기록
+이상술
+이환동
+이달관
+이형율
+이판연
+이정호
+이달기
+이옥영
+이수석
+이용욱
+이달기
+이분운
+이명룡
+이등주
+이달기
+이계암
+이운민
+이현암
+이달례
+이순환
+이태식
+이은주
+이달로
+이해임
+이영세
+이상이
+이달봉
+이병록
+이 운
+이성용
+이달삼
+이인수
+이해연
+이현순
+이달수
+이신재
+이상복
+이민덕
+이달영
+이순연
+이동기
+이한훈
+이달영
+이수조
+이형출
+이주국
+이달완
+이영팔
+이만미
+이오헌
+이달웅
+이명진
+이세기
+이순주
+이달창
+이우출
+이봉익
+이영수
+이달초
+이영래
+이재동
+이경환
+이달파
+이영환
+이희운
+이헌진
+이달포
+이일분
+이병영
+이성규
+이달호
+이필창
+이정만
+이우국
+이달호
+이우봉
+이철은
+이재현
+이달호
+이찬호
+이상수
+이명재
+이달호
+이종운
+이철돌
+이한암
+이달화
+이장옥
+이근근
+이수자
+이달화
+이해성
+이재해
+이안암
+이달휴
+이한분
+이정수
+이경흔
+이달희
+이순균
+이대희
+이병수
+이대병
+이동성
+이기진
+이동수
+이대석
+이영량
+이기천
+이천덕
+이대성
+이순우
+이기순
+이억수
+이대성
+이양연
+이원만
+이점완
+이대세
+이병량
+이국필
+이병병
+이대세
+이진복
+이헌기
+이태우
+이대식
+이인복
+이석경
+이호진
+이대식
+이동근
+이해식
+이택순
+이대용
+이기연
+이형규
+이연욱
+이대우
+이호복
+이정립
+이병연
+이대우
+이시섭
+이병용
+이성희
+이대우
+이대현
+이주완
+이학우
+이대원
+이석홍
+이진순
+이봉영
+이대항
+이상구
+이두오
+이원수
+이대훈
+이국식
+이봉노
+이일애
+이대훈
+이언주
+이세자
+이신식
+이대희
+이헌근
+이진출
+이남억
+이덕남
+이복권
+이말연
+이화원
+이덕녕
+이쾌덕
+이순해
+이영자
+이덕래
+이문규
+이순수
+이경윤
+이덕배
+이수영
+이태식
+이말호
+이덕봉
+이선남
+이정찬
+이정수
+이덕봉
+이해갑
+이종희
+이정화
+이덕상
+이주순
+이현도
+이태순
+이덕석
+이태환
+이일덕
+이원현
+이덕순
+이영용
+이덕남
+이주복
+이덕순
+이찬찬
+이덕환
+이종림
+이덕순
+이동자
+이미자
+이봉상
+이덕영
+이진연
+이진동
+이한조
+이덕용
+이덕애
+이원이
+이소우
+이덕윤
+이태수
+이옥애
+이영환
+이덕재
+이해헌
+이점인
+이지준
+이덕형
+이용자
+이노수
+이재향
+이덕호
+이대수
+이정순
+이광범
+이덕환
+이국세
+이주동
+이상열
+이덕희
+이우현
+이차율
+이영석
+이덕희
+이상주
+이진환
+이남덕
+이도기
+이길성
+이광진
+이재웅
+이도석
+이태일
+이순효
+이동환
+이도석
+이순덕
+이세선
+이재하
+이도수
+이대수
+이동영
+이상열
+이도원
+이영림
+이진윤
+이종탁
+이도환
+이도희
+이수환
+이한우
+이돈춘
+이상연
+이순현
+이병호
+이동건
+이용강
+이원재
+이재준
+이동규
+이태덕
+이남순
+이영순
+이동균
+이재종
+이두악
+이석열
+이동균
+이영호
+이달만
+이현득
+이동녕
+이현호
+이수태
+이우현
+이동대
+이양철
+이동환
+이산점
+이동만
+이혜강
+이태용
+이주수
+이동발
+이판상
+이선수
+이인웅
+이동봉
+이재권
+이치학
+이희선
+이동석
+이상호
+이광직
+이옥익
+이동석
+이일호
+이해효
+이윤자
+이동석
+이정구
+이돈학
+이찬우
+이동수
+이은득
+이부옥
+이재광
+이동순
+이채길
+이정덕
+이규환
+이동열
+이상인
+이낙수
+이인훈
+이동옥
+이상환
+이양수
+이영석
+이동우
+이덕희
+이경국
+이차구
+이동운
+이정식
+이오헌
+이성영
+이동원
+이지준
+이정경
+이태철
+이동원
+이동희
+이재십
+이광대
+이동원
+이용희
+이규수
+이영인
+이동주
+이태호
+이성호
+이원윤
+이동찬
+이영규
+이만호
+이경도
+이동천
+이대식
+이임섭
+이득태
+이동철
+이영술
+이만홍
+이상해
+이동철
+이일호
+이경순
+이경기
+이동철
+이진미
+이상관
+이영열
+이동춘
+이장수
+이순옥
+이광옥
+이동춘
+이소현
+이판진
+이성이
+이동태
+이차도
+이삼열
+이웅근
+이동태
+이무옥
+이형록
+이용리
+이동학
+이인환
+이인용
+이남섭
+이동해
+이영자
+이성재
+이정국
+이동헌
+이경태
+이홍현
+이대식
+이동헌
+이재제
+이윤용
+이미광
+이동호
+이임조
+이식색
+이장남
+이동호
+이영해
+이해옥
+이희창
+이동훈
+이진호
+이용출
+이상선
+이동훈
+이봉섭
+이태호
+이태경
+이두열
+이연태
+이말돌
+이화인
+이두원
+이점원
+이창덕
+이수목
+이두원
+이상성
+이재준
+이만식
+이두이
+이학목
+이병수
+이순홍
+이두현
+이정수
+이종일
+이영춘
+이두호
+이정분
+이수순
+이현식
+이두환
+이상부
+이웅완
+이건권
+이두희
+이영원
+이추태
+이성열
+이득우
+이순성
+이영도
+이영용
+이득춘
+이태교
+이수웅
+이종곤
+이란순
+이수식
+이오식
+이윤원
+이래연
+이윤균
+이연성
+이경우
+이량균
+이영감
+이종룡
+이승근
+이리자
+이옥생
+이선경
+이성창
+이만경
+이철근
+이두준
+이상동
+이만규
+이명휴
+이택철
+이태래
+이만기
+이용원
+이삼노
+이춘일
+이만도
+이명호
+이성휴
+이정윤
+이만석
+이수상
+이순학
+이창모
+이만석
+이차숙
+이봉남
+이춘용
+이만수
+이윤주
+이종환
+이종수
+이만수
+이호진
+이영원
+이의헌
+이만순
+이호재
+이정문
+이영구
+이만용
+이석환
+이삼헌
+이익종
+이만용
+이일정
+이소수
+이유암
+이만원
+이수득
+이헌술
+이재성
+이만원
+이두휘
+이선권
+이용주
+이만원
+이철순
+이장만
+이권운
+이만원
+이태훈
+이점정
+이현오
+이만원
+이옥홍
+이차운
+이석태
+이만조
+이한규
+이병문
+이호랑
+이만진
+이승철
+이용란
+이순자
+이만화
+이호술
+이병운
+이동권
+이만효
+이재선
+이소수
+이병덕
+이말문
+이상자
+이문호
+이추욱
+이말분
+이기태
+이금연
+이광지
+이말숙
+이홍호
+이삼화
+이명수
+이말순
+이정웅
+이운일
+이연혜
+이말술
+이상배
+이남진
+이종기
+이말여
+이을용
+이영희
+이성이
+이말임
+이덕영
+이병준
+이영균
+이말준
+이수광
+이점주
+이정권
+이말태
+이강덕
+이종기
+이용자
+이맹수
+이재식
+이진순
+이헌선
+이면기
+이정용
+이신순
+이태국
+이면우
+이봉철
+이만완
+이희식
+이면희
+이진이
+이은수
+이광주
+이명근
+이길주
+이완계
+이만희
+이명기
+이기영
+이병탁
+이연표
+이명기
+이봉양
+이재호
+이말희
+이명남
+이재경
+이성춘
+이성하
+이명대
+이종숙
+이수길
+이종태
+이명석
+이형기
+이진철
+이만근
+이명선
+이종순
+이태섭
+이종환
+이명선
+이수수
+이광조
+이정태
+이명섭
+이종용
+이정우
+이동규
+이명성
+이기욱
+이길석
+이봉근
+이명세
+이의두
+이경생
+이석칠
+이명수
+이대환
+이용호
+이병곤
+이명수
+이동분
+이판철
+이영길
+이명수
+이귀남
+이수미
+이경석
+이명숙
+이성태
+이해숙
+이경락
+이명숙
+이성리
+이영조
+이준이
+이명순
+이무훈
+이효학
+이정태
+이명순
+이경자
+이순동
+이등식
+이명술
+이광웅
+이이조
+이윤돌
+이명술
+이선우
+이철국
+이순자
+이명술
+이상분
+이봉호
+이성붕
+이명애
+이금곤
+이기득
+이명문
+이명연
+이차순
+이용환
+이규성
+이명오
+이문환
+이상출
+이기동
+이명오
+이방숙
+이말영
+이태수
+이명오
+이영기
+이헌목
+이상이
+이명원
+이연희
+이은준
+이수포
+이명재
+이말찬
+이병득
+이춘형
+이명조
+이성영
+이광윤
+이점구
+이명진
+이경찬
+이상우
+이달용
+이명학
+이성숙
+이성기
+이윤윤
+이명호
+이미일
+이오수
+이남균
+이명호
+이상권
+이수희
+이정희
+이명환
+이영식
+이만성
+이규곤
+이명환
+이기배
+이성재
+이성찬
+이명환
+이성섭
+이상용
+이해정
+이명환
+이강태
+이종달
+이수수
+이명희
+이응식
+이상술
+이인문
+이명희
+이윤섭
+이문식
+이휘목
+이명희
+이명식
+이진성
+이영수
+이명희
+이영연
+이강윤
+이재환
+이모설
+이창규
+이한자
+이기달
+이묘금
+이귄영
+이극식
+이무용
+이무근
+이수길
+이철수
+이대삼
+이무생
+이정성
+이영수
+이덕규
+이무선
+이영용
+이영태
+이해숙
+이무성
+이동일
+이성창
+이백화
+이무순
+이용자
+이종석
+이수응
+이무순
+이길업
+이순헌
+이상옥
+이무영
+이인란
+이재자
+이차삼
+이무우
+이영기
+이옥칠
+이일익
+이무웅
+이지호
+이현회
+이재식
+이무일
+이정식
+이재석
+이용우
+이무임
+이성길
+이지용
+이헌현
+이무천
+이헌인
+이희권
+이국은
+이무현
+이영주
+이치동
+이창환
+이무현
+이길기
+이미희
+이정덕
+이무호
+이남복
+이영환
+이준우
+이무호
+이정홍
+이순택
+이숙형
+이무호
+이영자
+이동현
+이부동
+이무환
+이인수
+이해선
+이종용
+이문갑
+이덕수
+이영철
+이우상
+이문식
+이태상
+이규민
+이상환
+이문자
+이명완
+이태현
+이진행
+이문출
+이영희
+이경환
+이무순
+이문태
+이기재
+이종규
+이종석
+이문호
+이창원
+이영철
+이병기
+이문호
+이춘규
+이용호
+이병선
+이미경
+이민동
+이점환
+이용배
+이미경
+이정란
+이만철
+이홍현
+이미경
+이달찬
+이성만
+이상규
+이미선
+이옥훈
+이경호
+이만식
+이미숙
+이호상
+이상용
+이왕우
+이미숙
+이만출
+이상범
+이대희
+이미순
+이수화
+이대규
+이수수
+이미원
+이성현
+이인성
+이영숙
+이미자
+이인석
+이종안
+이수수
+이미재
+이춘분
+이정수
+이문훈
+이미현
+이식자
+이창명
+이광원
+이미현
+이대희
+이봉탁
+이윤군
+이민용
+이종대
+이재광
+이태화
+이민우
+이복구
+이상규
+이재환
+이민재
+이영출
+이동덕
+이정웅
+이민준
+이무용
+이광모
+이덕원
+이민철
+이홍우
+이주길
+이주수
+이민호
+이봉동
+이선식
+이동룡
+이민환
+이기득
+이영선
+이순한
+이방남
+이헌희
+이소자
+이차준
+이방실
+이창철
+이한수
+이상현
+이방우
+이홍준
+이규열
+이종식
+이범
+이임
+이상
+이대
+이범경
+이영한
+이승열
+이계련
+이범세
+이영태
+이도덕
+이정주
+이범세
+이상택
+이상득
+이병출
+이범세
+이영태
+이상권
+이윤순
+이범순
+이태권
+이동렬
+이태숙
+이범식
+이봉호
+이홍환
+이임녕
+이범우
+이춘숙
+이용일
+이정석
+이범이
+이순용
+이봉수
+이희열
+이범택
+이성순
+이수석
+이철용
+이병걸
+이윤근
+이운아
+이동의
+이병국
+이석권
+이영우
+이경영
+이병국
+이인복
+이성용
+이혜성
+이병권
+이소석
+이영이
+이인춘
+이병권
+이종연
+이국대
+이재구
+이병규
+이수부
+이병호
+이대수
+이병규
+이정분
+이이식
+이만평
+이병극
+이정우
+이을규
+이수호
+이병극
+이상철
+이건영
+이월진
+이병길
+이한병
+이정원
+이석덕
+이병득
+이명수
+이효익
+이주주
+이병무
+이정우
+이태태
+이석근
+이병삼
+이판영
+이재환
+이원호
+이병선
+이준희
+이태석
+이광기
+이병소
+이문현
+이춘두
+이달호
+이병수
+이성종
+이난복
+이일희
+이병식
+이창영
+이용일
+이창석
+이병옥
+이정현
+이정년
+이명인
+이병우
+이태욱
+이영익
+이정자
+이병욱
+이용호
+이인순
+이순욱
+이병원
+이미호
+이종만
+이석달
+이병원
+이상춘
+이재주
+이학희
+이병윤
+이삼숙
+이철은
+이충해
+이병인
+이춘현
+이정태
+이래호
+이병재
+이영희
+이종복
+이갑희
+이병정
+이규복
+이칠규
+이명기
+이병주
+이태환
+이용준
+이문임
+이병주
+이화수
+이덕동
+이점보
+이병준
+이만선
+이해정
+이담순
+이병찬
+이금선
+이용규
+이한운
+이병천
+이영곤
+이인점
+이병철
+이병철
+이영훈
+이규기
+이영곤
+이병철
+이재우
+이윤범
+이항우
+이병철
+이영지
+이용향
+이종준
+이병철
+이용기
+이이용
+이학철
+이병태
+이성곤
+이손태
+이대선
+이병택
+이강호
+이만규
+이영호
+이병택
+이경식
+이수국
+이창근
+이병필
+이정춘
+이태근
+이기덕
+이병하
+이정염
+이용자
+이길옥
+이병하
+이수래
+이양현
+이대철
+이병한
+이복선
+이호도
+이중자
+이병해
+이두석
+이순래
+이관하
+이병형
+이덕석
+이재조
+이병대
+이병호
+이영만
+이두호
+이창길
+이병호
+이중운
+이만환
+이상섭
+이병홍
+이분선
+이석환
+이홍기
+이병화
+이보근
+이양봉
+이순도
+이병화
+이선규
+이재원
+이선동
+이병화
+이재연
+이소선
+이성자
+이병희
+이경화
+이태서
+이태학
+이보곤
+이종무
+이기봉
+이정열
+이보현
+이석재
+이성성
+이두호
+이복도
+이천근
+이영호
+이판중
+이복림
+이우술
+이을기
+이윤석
+이복생
+이현길
+이우률
+이명부
+이복술
+이재룡
+이호택
+이광교
+이복실
+이종경
+이대석
+이순보
+이복용
+이태순
+이경식
+이숙희
+이복우
+이 용
+이순호
+이춘무
+이복진
+이용진
+이동근
+이용영
+이복출
+이형수
+이일택
+이영중
+이복현
+이천출
+이석환
+이임완
+이봉곤
+이장섭
+이호래
+이기호
+이봉곤
+이재순
+이룡인
+이경식
+이봉규
+이상순
+이종호
+이환식
+이봉기
+이정철
+이중환
+이이봉
+이봉기
+이은주
+이윤애
+이상출
+이봉길
+이상호
+이대식
+이연용
+이봉녀
+이부광
+이상환
+이광환
+이봉녀
+이득연
+이인임
+이의화
+이봉대
+이호모
+이중석
+이오기
+이봉래
+이기술
+이원도
+이차연
+이봉모
+이외조
+이동용
+이기팔
+이봉선
+이곤기
+이익경
+이창지
+이봉영
+이재성
+이종남
+이정호
+이봉주
+이점명
+이수섭
+이기한
+이봉철
+이용현
+이옥동
+이헌회
+이봉춘
+이중부
+이휘동
+이욱수
+이봉헌
+이월춘
+이용구
+이상복
+이봉환
+이영광
+이술숙
+이상도
+이봉환
+이상세
+이순순
+이상복
+이봉희
+이종옥
+이영순
+이중규
+이부길
+이영태
+이장순
+이교용
+이부돌
+이정출
+이창배
+이달성
+이부세
+이주환
+이외록
+이현환
+이부열
+이환경
+이칠출
+이규이
+이분기
+이석운
+이춘식
+이한웅
+이분난
+이응호
+이정기
+이성순
+이분남
+이미형
+이용한
+이용숙
+이분남
+이필모
+이을계
+이연식
+이분선
+이재일
+이재희
+이태식
+이분연
+이충우
+이규철
+이종연
+이분영
+이석학
+이병규
+이성선
+이분이
+이성선
+이호승
+이명순
+이분이
+이안열
+이일한
+이오용
+이분이
+이재욱
+이재태
+이인향
+이분조
+이귀도
+이도길
+이재국
+이분조
+이병희
+이중혁
+이천춘
+이분학
+이선준
+이주선
+이경경
+이분희
+이갑규
+이흥하
+이인운
+이븝세
+이용길
+이소희
+이병왕
+이사련
+이칠호
+이이용
+이지기
+이사조
+이호정
+이현돌
+이수태
+이삼덕
+이재석
+이정자
+이호식
+이삼랑
+이차감
+이연춘
+이종성
+이삼수
+이 환
+이갑섭
+이순구
+이삼수
+이분근
+이삼수
+이주동
+이삼수
+이정영
+이원봉
+이차현
+이삼영
+이해진
+이정희
+이병문
+이삼용
+이태의
+이기숙
+이인환
+이삼조
+이종오
+이용복
+이종신
+이삼조
+이만규
+이운용
+이봉용
+이삼훈
+이삼경
+이해식
+이칠태
+이상경
+이수진
+이진운
+이천송
+이상경
+이한순
+이을수
+이승환
+이상구
+이종운
+이영임
+이장탁
+이상규
+이정우
+이중무
+이증환
+이상균
+이명식
+이소정
+이찬박
+이상근
+이옥기
+이문희
+이근호
+이상근
+이봉건
+이용배
+이선수
+이상근
+이해호
+이영술
+이수금
+이상기
+이병주
+이무선
+이주직
+이상기
+이준영
+이태훈
+이철판
+이상기
+이남근
+이정기
+이정정
+이상길
+이임용
+이정출
+이안훈
+이상달
+이태철
+이건관
+이정평
+이상대
+이분상
+이차순
+이판용
+이상대
+이동수
+이용근
+이순봉
+이상덕
+이희암
+이근경
+이병덕
+이상도
+이점일
+이우기
+이광자
+이상돈
+이영구
+이태규
+이복차
+이상돈
+이찬준
+이용모
+이정용
+이상득
+이민수
+이동돌
+이주태
+이상란
+이순원
+이도호
+이영옥
+이상록
+이경출
+이광식
+이문도
+이상록
+이수식
+이정종
+이성석
+이상률
+이남희
+이병섭
+이재교
+이상모
+이태우
+이성순
+이원기
+이상문
+이영이
+이오천
+이영조
+이상민
+이창주
+이헌철
+이종웅
+이상배
+이호태
+이성덕
+이상래
+이상복
+이재현
+이종용
+이종희
+이상복
+이 수
+이환출
+이병영
+이상복
+이만용
+이근석
+이수희
+이상봉
+이삼환
+이수수
+이태옥
+이상봉
+이희현
+이정현
+이학준
+이상빈
+이병득
+이학호
+이주봉
+이상선
+이무돌
+이대수
+이종동
+이상섭
+이영규
+이경중
+이현철
+이상수
+이찬성
+이두분
+이순록
+이상수
+이정생
+이영길
+이우용
+이상수
+이덕기
+이순희
+이용석
+이상숙
+이정촌
+이성남
+이경삼
+이상숙
+이사우
+이성근
+이태엽
+이상숙
+이용진
+이철호
+이영복
+이상식
+이용동
+이태영
+이홍태
+이상언
+이준철
+이희환
+이인래
+이상연
+이적원
+이현희
+이동기
+이상열
+이억회
+이삼생
+이해태
+이상열
+이희욱
+이호영
+이동표
+이상열
+이태갑
+이규옥
+이승이
+이상열
+이만생
+이원수
+이성수
+이상열
+이기수
+이을헌
+이휘덕
+이상열
+이헌식
+이정흠
+이일상
+이상영
+이태진
+이도희
+이한환
+이상오
+이왕이
+이주연
+이지회
+이상완
+이상덕
+이무호
+이세현
+이상용
+이규교
+이현성
+이정태
+이상용
+이상달
+이 식
+이외조
+이상용
+이준석
+이의한
+이덕순
+이상우
+이정식
+이명근
+이경옥
+이상우
+이상자
+이정환
+이태범
+이상욱
+이재홍
+이중판
+이태태
+이상운
+이태술
+이란현
+이태영
+이상원
+이정득
+이영철
+이홍동
+이상원
+이화수
+이갑열
+이옥율
+이상윤
+이병호
+이혜현
+이장봉
+이상윤
+이전필
+이상석
+이정동
+이상은
+이인엽
+이팽선
+이영여
+이상일
+이봉용
+이종이
+이경철
+이상일
+이남기
+이용도
+이영순
+이상일
+이규수
+이기신
+이남석
+이상재
+이광식
+이미태
+이종곤
+이상정
+이암수
+이감열
+이을은
+이상조
+이분규
+이달철
+이태범
+이상조
+이영연
+이차택
+이영주
+이상준
+이봉수
+이판운
+이재열
+이상직
+이영철
+이명길
+이민수
+이상직
+이점정
+이용란
+이석천
+이상진
+이대득
+이상상
+이국선
+이상천
+이순길
+이종대
+이중웅
+이상천
+이이식
+이우식
+이영분
+이상천
+이영관
+이영태
+이영선
+이상철
+이창태
+이재생
+이영득
+이상철
+이 구
+이정란
+이윤순
+이상철
+이기영
+이태준
+이성환
+이상철
+이인술
+이광옥
+이세국
+이상철
+이주경
+이경분
+이재진
+이상철
+이칠철
+이석교
+이동우
+이상철
+이삼환
+이도선
+이대수
+이상철
+이주성
+이해규
+이재수
+이상탁
+이진만
+이규겁
+이옥재
+이상태
+이을자
+이수문
+이태길
+이상태
+이원순
+이재자
+이동본
+이상태
+이상섭
+이대길
+이기진
+이상학
+이명완
+이정호
+이인출
+이상한
+이오석
+이정철
+이종훈
+이상해
+이근환
+이근임
+이기식
+이상헌
+이소동
+이인숙
+이중선
+이상현
+이준호
+이효호
+이우상
+이상현
+이상권
+이홍희
+이수군
+이상현
+이진헌
+이종숙
+이경태
+이상현
+이형호
+이병연
+이차점
+이상현
+이성식
+이용양
+이용희
+이상현
+이태명
+이문균
+이기수
+이상호
+이회우
+이재성
+이석주
+이상호
+이하진
+이문도
+이성호
+이상호
+이무길
+이해현
+이칠길
+이상호
+이해종
+이영호
+이영수
+이상호
+이정학
+이명금
+이우희
+이상호
+이순경
+이춘태
+이정완
+이상화
+이오건
+이대조
+이혜흠
+이상화
+이철신
+이봉호
+이영근
+이상화
+이인자
+이경암
+이기석
+이상화
+이종달
+이재준
+이유혁
+이상환
+이효조
+이민년
+이춘조
+이상황
+이성중
+이순식
+이근기
+이상효
+이근열
+이두덕
+이광기
+이상훈
+이삼칠
+이창자
+이영준
+이상훈
+이금덕
+이정호
+이재현
+이생규
+이찬구
+이덕준
+이병조
+이서분
+이병교
+이도호
+이일범
+이서운
+이태수
+이용수
+이상덕
+이석갑
+이창래
+이정암
+이병수
+이석곤
+이용이
+이회석
+이정아
+이석귀
+이우식
+이두대
+이순우
+이석규
+이영용
+이수배
+이성석
+이석록
+이인만
+이도웅
+이정조
+이석록
+이성수
+이영봉
+이성관
+이석만
+이달철
+이홍봉
+이중호
+이석범
+이순재
+이광희
+이분석
+이석병
+이분수
+이진화
+이쌍용
+이석복
+이명호
+이동호
+이홍열
+이석수
+이용용
+이대욱
+이창주
+이석영
+이한우
+이종림
+이춘수
+이석완
+이곡제
+이기모
+이병자
+이석용
+이정란
+이인국
+이양수
+이석원
+이민환
+이주양
+이준조
+이석일
+이수선
+이영열
+이재만
+이석재
+이만목
+이성집
+이병연
+이석재
+이종종
+이수남
+이용한
+이석주
+이병철
+이동원
+이연수
+이석지
+이광규
+이주해
+이병근
+이석진
+이순숙
+이도권
+이한조
+이석찬
+이근성
+이병창
+이병숙
+이석천
+이문홍
+이희규
+이영규
+이석출
+이기옥
+이오연
+이달섭
+이석태
+이은화
+이동화
+이사진
+이석현
+이영모
+이점생
+이덕국
+이석현
+이태일
+이복출
+이경숙
+이석홍
+이채순
+이수옥
+이다곤
+이석환
+이병이
+이한암
+이애선
+이석환
+이덕출
+이길주
+이연철
+이선봉
+이재중
+이대목
+이증용
+이선수
+이종원
+이봉영
+이대삼
+이선영
+이학학
+이효이
+이상분
+이선우
+이태구
+이장철
+이종복
+이선이
+이태연
+이낙점
+이노권
+이선호
+이두중
+이봉범
+이석운
+이성곤
+이상현
+이칠식
+이순수
+이성구
+이상아
+이동주
+이태영
+이성구
+이세모
+이상구
+이일자
+이성구
+이판기
+이화원
+이병용
+이성권
+이자덕
+이수권
+이영혁
+이성권
+이홍순
+이진우
+이진도
+이성규
+이명술
+이안경
+이병목
+이성근
+이석수
+이성덕
+이석주
+이성근
+이미수
+이점갑
+이종호
+이성기
+이현길
+이영정
+이대익
+이성기
+이득열
+이한호
+이정식
+이성도
+이근길
+이면순
+이진근
+이성동
+이성순
+이두남
+이순헌
+이성래
+이건교
+이원도
+이정식
+이성룡
+이성성
+이양수
+이 원
+이성만
+이상우
+이태순
+이규권
+이성말
+이상찬
+이명율
+이경종
+이성민
+이지만
+이재성
+이지호
+이성범
+이행동
+이창철
+이상용
+이성복
+이용삼
+이병희
+이양춘
+이성복
+이헌기
+이광숙
+이무근
+이성세
+이점헌
+이운만
+이상환
+이성수
+이은복
+이대하
+이동옥
+이성순
+이춘금
+이삼성
+이희배
+이성실
+이성길
+이재욱
+이종규
+이성안
+이을성
+이성문
+이기길
+이성애
+이병택
+이병희
+이영욱
+이성엽
+이정환
+이용환
+이종화
+이성옥
+이정순
+이정득
+이영균
+이성우
+이충수
+이봉수
+이준호
+이성우
+이광자
+이상옥
+이동배
+이성운
+이재율
+이순숙
+이연순
+이성원
+이정운
+이영경
+이범율
+이성익
+이제숙
+이상효
+이금열
+이성임
+이태환
+이정향
+이효원
+이성조
+이태룡
+이명진
+이영환
+이성준
+이상곤
+이상관
+이무준
+이성준
+이인율
+이진식
+이안식
+이성준
+이재호
+이상수
+이춘자
+이성찬
+이상호
+이창석
+이두호
+이성철
+이일복
+이인환
+이성화
+이성철
+이병연
+이선공
+이종기
+이성태
+이헌복
+이신표
+이만일
+이성태
+이태욱
+이용조
+이대순
+이성평
+이주하
+이환식
+이내달
+이성하
+이한진
+이호열
+이정륜
+이성현
+이두호
+이달석
+이정길
+이성현
+이병주
+이병금
+이광춘
+이성호
+이조구
+이광용
+이명석
+이성호
+이중자
+이영곤
+이윤종
+이성호
+이상목
+이정우
+이기석
+이성호
+이을선
+이진순
+이심권
+이성호
+이종덕
+이병경
+이재덕
+이성호
+이융일
+이낙출
+이대근
+이성홍
+이석조
+이종규
+이순상
+이성화
+이국조
+이구덕
+이동용
+이성환
+이승해
+이상호
+이순만
+이성환
+이기규
+이호영
+이태오
+이성환
+이상권
+이병조
+이일일
+이성훈
+이범원
+이의정
+이구서
+이성희
+이규중
+이무선
+이성휴
+이성희
+이영년
+이헌태
+이궁이
+이세병
+이옥호
+이의계
+이종분
+이세영
+이석희
+이이이
+이상이
+이세영
+이순복
+이윤곤
+이삼규
+이세용
+이동현
+이경근
+이근수
+이세일
+이용섭
+이장장
+이근철
+이세중
+이일조
+이점만
+이재원
+이세현
+이종식
+이우래
+이남향
+이세현
+이동용
+이일군
+이선식
+이세호
+이충웅
+이경조
+이을근
+이소갑
+이태근
+이홍일
+이동희
+이소돌
+이준근
+이정현
+이재기
+이소석
+이진영
+이병탁
+이태자
+이소수
+이종길
+이영근
+이동원
+이소수
+이숙규
+이영봉
+이무순
+이소수
+이융호
+이삼호
+이위동
+이소수
+이호운
+이도담
+이언호
+이소숙
+이금근
+이갑성
+이상길
+이소순
+이회보
+이세현
+이용제
+이소식
+이선순
+이말연
+이철수
+이소암
+이우근
+이한립
+이용조
+이소원
+이무우
+이달희
+이창덕
+이소조
+이태조
+이남병
+이순식
+이소조
+이태란
+이진운
+이경이
+이손숙
+이선기
+이주용
+이태상
+이손주
+이남길
+이진기
+이동현
+이송건
+이동구
+이호정
+이상진
+이송록
+이호용
+이세열
+이점로
+이송양
+이진수
+이형호
+이대석
+이송열
+이기길
+이병옥
+이영만
+이수경
+이용철
+이재국
+이국석
+이수경
+이태훈
+이구육
+이석원
+이수근
+이성하
+이명돈
+이수식
+이수기
+이범호
+이효숙
+이수국
+이수길
+이승경
+이재대
+이윤봉
+이수덕
+이해식
+이영이
+이순기
+이수도
+이병영
+이재수
+이삼운
+이수만
+이성기
+이병인
+이성술
+이수백
+이남돌
+이기용
+이명대
+이수복
+이종열
+이돈상
+이성선
+이수복
+이수주
+이혁상
+이상환
+이수복
+이동숙
+이영순
+이구자
+이수상
+이갑남
+이상락
+이익용
+이수석
+이상철
+이태자
+이수상
+이수야
+이병연
+이차식
+이근관
+이수언
+이위용
+이차규
+이희경
+이수열
+이종자
+이시표
+이재완
+이수열
+이성분
+이승광
+이본호
+이수옥
+이정홍
+이성수
+이병근
+이수용
+이종식
+이봉성
+이숙용
+이수용
+이원석
+이학불
+이삼태
+이수우
+이창돌
+이일수
+이종임
+이수웅
+이광식
+이석권
+이태립
+이수원
+이창돌
+이춘덕
+이 배
+이수의
+이영조
+이영권
+이학식
+이수인
+이순웅
+이영만
+이천호
+이수점
+이윤호
+이상천
+이용오
+이수종
+이종헌
+이병진
+이출식
+이수준
+이주열
+이영희
+이창석
+이수진
+이문자
+이종호
+이금성
+이수진
+이월관
+이정용
+이태근
+이수찬
+이상용
+이두석
+이하성
+이수창
+이성현
+이공암
+이정황
+이수철
+이순순
+이헌진
+이주호
+이수학
+이군기
+이을돌
+이판택
+이수현
+이경훈
+이실열
+이구문
+이수현
+이은우
+이화문
+이희호
+이수현
+이용호
+이지준
+이종호
+이수현
+이승정
+이성희
+이병현
+이수호
+이상규
+이중현
+이실석
+이수호
+이종택
+이광모
+이정길
+이수호
+이춘옥
+이중주
+이정임
+이수호
+이복규
+이경천
+이태규
+이수홍
+이재식
+이현행
+이효열
+이수환
+이선태
+이상춘
+이종선
+이수황
+이기식
+이석애
+이용분
+이수흥
+이병환
+이남식
+이용화
+이숙경
+이봉섭
+이석휴
+이명원
+이숙기
+이홍원
+이용오
+이국규
+이숙연
+이광식
+이병철
+이호헌
+이숙희
+이태근
+이계구
+이영일
+이순경
+이수조
+이상규
+이명립
+이순구
+이종호
+이점규
+이만성
+이순구
+이효상
+이복도
+이영주
+이순덕
+이광오
+이혜우
+이기환
+이순도
+이동조
+이순숙
+이천원
+이순말
+이노철
+이보선
+이윤헌
+이순분
+이명조
+이순휴
+이증오
+이순분
+이근준
+이세근
+이선기
+이순세
+이봉배
+이중봉
+이대복
+이순신
+이기근
+이현자
+이운철
+이순연
+이구상
+이형여
+이일수
+이순영
+이종조
+이복준
+이영철
+이순욱
+이한이
+이철동
+이재용
+이순원
+이을옥
+이태수
+이규용
+이순이
+이동규
+이기희
+이진경
+이순자
+이근돌
+이보길
+이동춘
+이순자
+이소교
+이동열
+이관덕
+이순자
+이영순
+이재우
+이재석
+이순자
+이종정
+이창원
+이태욱
+이순재
+이화흠
+이열균
+이규한
+이순점
+이태택
+이광순
+이제윤
+이순조
+이성호
+이도동
+이성숙
+이순조
+이점학
+이우각
+이만수
+이순태
+이영자
+이달호
+이희술
+이순현
+이주규
+이효만
+이대십
+이순호
+이택식
+이팔현
+이노영
+이순홍
+이상완
+이술련
+이명환
+이순홍
+이병우
+이용대
+이상열
+이순희
+이태수
+이재복
+이상열
+이순희
+이호열
+이정일
+이만주
+이술봉
+이상수
+이상만
+이환수
+이술희
+이동용
+이태호
+이순실
+이승곤
+이호수
+이근림
+이옥운
+이승달
+이봉현
+이국호
+이길대
+이승동
+이순휴
+이의현
+이은열
+이승렬
+이병목
+이호신
+이현선
+이승모
+이오형
+이석재
+이세호
+이승배
+이진권
+이해희
+이일식
+이승분
+이광진
+이태연
+이득석
+이승언
+이준계
+이갑철
+이춘열
+이승열
+이해순
+이판열
+이경생
+이승옥
+이동규
+이상연
+이학화
+이승우
+이경국
+이삼경
+이주우
+이승욱
+이종도
+이만원
+이은동
+이승조
+이춘욱
+이용교
+이장곤
+이승주
+이봉화
+이칠상
+이만준
+이승천
+이헌근
+이재준
+이종기
+이승천
+이의용
+이영만
+이태범
+이승칠
+이세경
+이해권
+이충제
+이승형
+이정근
+이규락
+이세택
+이승홍
+이영회
+이용호
+이연택
+이승화
+이영한
+이장중
+이동열
+이승화
+이홍혁
+이기수
+이광식
+이승훈
+이성하
+이영규
+이춘갑
+이승훈
+이기현
+이선구
+이증조
+이승훈
+이창신
+이인묵
+이대구
+이승희
+이기범
+이태원
+이병분
+이시동
+이병연
+이원현
+이남애
+이시영
+이순곤
+이수석
+이춘련
+이시우
+이진호
+이용수
+이성기
+이시원
+이동재
+이정구
+이오호
+이시원
+이태호
+이상영
+이병환
+이신구
+이충원
+이명효
+이삼배
+이신복
+이윤수
+이학형
+이갑열
+이신우
+이타익
+이영도
+이영철
+이신이
+이동원
+이상진
+이평철
+이쌍갑
+이태식
+이자영
+이순환
+이쌍석
+이상석
+이정식
+이정운
+이쌍승
+이혜자
+이위회
+이용구
+이쌍연
+이정상
+이영원
+이경경
+이안기
+이정탁
+이근근
+이기섭
+이안생
+이진일
+이용월
+이원동
+이안순
+이성도
+이상석
+이점현
+이암우
+이일순
+이종술
+이주섭
+이양숙
+이영백
+이만환
+이소길
+이양우
+이주희
+이기휴
+이해애
+이양임
+이숙광
+이수홍
+이문한
+이양훈
+이맹은
+이무수
+이판덕
+이억근
+이태일
+이의섭
+이병일
+이업주
+이상영
+이재창
+이해정
+이연동
+이재회
+이말노
+이명식
+이연실
+이은준
+이상환
+이만곤
+이연실
+이영곤
+이방효
+이병근
+이연실
+이내홍
+이종숙
+이부구
+이연이
+이판호
+이용동
+이재주
+이영구
+이금도
+이성곤
+이계경
+이영국
+이순근
+이정환
+이정순
+이영국
+이태철
+이재경
+이명신
+이영근
+이삼결
+이화화
+이태식
+이영기
+이제진
+이선열
+이영해
+이영기
+이종률
+이순원
+이기용
+이영기
+이영조
+이제경
+이병석
+이영기
+이성진
+이달식
+이규일
+이영기
+이원재
+이성봉
+이태규
+이영길
+이상호
+이명진
+이대석
+이영길
+이은주
+이충택
+이정순
+이영길
+이영행
+이옥곤
+이병현
+이영동
+이우환
+이천만
+이준희
+이영락
+이정련
+이승순
+이병표
+이영란
+이덕금
+이종윤
+이중열
+이영로
+이상노
+이을우
+이수하
+이영목
+이창훈
+이해석
+이화진
+이영민
+이태주
+이태배
+이윤철
+이영민
+이갑운
+이제하
+이경호
+이영상
+이승도
+이수연
+이태도
+이영석
+이갑수
+이동환
+이태환
+이영선
+이두식
+이서규
+이주식
+이영섭
+이우술
+이병원
+이분수
+이영세
+이두순
+이균암
+이판교
+이영세
+이홍식
+이현익
+이기노
+이영수
+이점희
+이양환
+이기규
+이영수
+이삼봉
+이창희
+이경혜
+이영수
+이윤석
+이명숙
+이기갑
+이영수
+이희록
+이일규
+이진영
+이영수
+이석규
+이병호
+이노도
+이영수
+이남규
+이팔배
+이성순
+이영숙
+이병암
+이덕화
+이복표
+이영숙
+이정덕
+이판무
+이 일
+이영숙
+이인구
+이명진
+이진식
+이영숙
+이종목
+이한정
+이점수
+이영순
+이태수
+이옥기
+이규석
+이영순
+이판환
+이성한
+이상숙
+이영순
+이오조
+이찬조
+이규희
+이영순
+이용영
+이우분
+이효희
+이영식
+이규모
+이창운
+이외교
+이영식
+이우연
+이문덕
+이만호
+이영연
+이만수
+이계이
+이기수
+이영열
+이노희
+이장기
+이은주
+이영오
+이태우
+이용규
+이병자
+이영옥
+이광순
+이정옥
+이재주
+이영우
+이매탁
+이영수
+이명상
+이영웅
+이판자
+이옥권
+이해곤
+이영원
+이근찬
+이곡학
+이종근
+이영윤
+이오우
+이재상
+이영중
+이영인
+이두우
+이규옥
+이형호
+이영일
+이영용
+이철환
+이경배
+이영일
+이상철
+이재현
+이병현
+이영자
+이경빈
+이근선
+이상악
+이영재
+이정오
+이광술
+이동세
+이영조
+이태용
+이형구
+이순구
+이영조
+이동희
+이치근
+이인운
+이영조
+이점찬
+이상연
+이수연
+이영주
+이경천
+이은희
+이동도
+이영진
+이영수
+이한석
+이영순
+이영철
+이두수
+이정준
+이기석
+이영태
+이소경
+이세현
+이회운
+이영학
+이종수
+이상동
+이석희
+이영호
+이영분
+이지식
+이용철
+이영호
+이태환
+이기복
+이주영
+이영호
+이필경
+이창효
+이상재
+이영호
+이순만
+이기임
+이병태
+이영호
+이장종
+이달헌
+이미철
+이영호
+이현봉
+이한삼
+이선철
+이영호
+이홍경
+이대원
+이종조
+이영호
+이오규
+이경묵
+이상옥
+이영화
+이재숙
+이삼윤
+이홍배
+이영환
+이병자
+이영상
+이현화
+이영환
+이정환
+이한순
+이진암
+이영환
+이명춘
+이여호
+이인화
+이영훈
+이세식
+이기점
+이성립
+이영훈
+이영제
+이형복
+이정효
+이영훈
+이복섭
+이인휘
+이태동
+이영희
+이점준
+이재범
+이원구
+이영희
+이미성
+이상호
+이춘철
+이영희
+이미봉
+이선도
+이중열
+이영희
+이근조
+이이복
+이선순
+이영희
+이영숙
+이정이
+이병경
+이오근
+이인권
+이진주
+이원영
+이옥경
+이삼일
+이수규
+이호순
+이옥기
+이광명
+이태환
+이천수
+이옥난
+이 수
+이규숙
+이재정
+이옥돌
+이윤갑
+이호환
+이석태
+이옥란
+이임우
+이영호
+이봉동
+이옥란
+이상호
+이윤오
+이인래
+이옥련
+이선배
+이재영
+이종수
+이옥분
+이교순
+이영목
+이극이
+이옥선
+이병교
+이기용
+이성배
+이옥선
+이진이
+이호오
+이성호
+이옥순
+이종도
+이공술
+이문학
+이옥연
+이이덕
+이재임
+이재해
+이옥이
+이준현
+이옥덕
+이동환
+이옥자
+이오연
+이달동
+이태대
+이옥주
+이노일
+이만건
+이인도
+이옥주
+이종화
+이명석
+이석재
+이옥희
+이인선
+이삼필
+이경준
+이완국
+이선원
+이용식
+이태식
+이완범
+이덕정
+이태철
+이수호
+이완이
+이기선
+이언록
+이 용
+이완희
+이연규
+이기수
+이기호
+이왕재
+이태배
+이화진
+이희화
+이왕조
+이해희
+이점일
+이은기
+이외남
+이동홍
+이지철
+이사란
+이외순
+이종기
+이상룡
+이균조
+이외준
+이태환
+이소래
+이 진
+이용건
+이말호
+이근혹
+이정환
+이용견
+이상금
+이병락
+이흥수
+이용관
+이대원
+이종병
+이은호
+이용구
+이영동
+이진준
+이종수
+이용구
+이형선
+이해수
+이우환
+이용국
+이인제
+이점영
+이순점
+이용권
+이경대
+이석용
+이학노
+이용규
+이명성
+이차임
+이경호
+이용기
+이동점
+이대숙
+이건문
+이용기
+이계탁
+이봉찬
+이진양
+이용득
+이영국
+이봉정
+이성동
+이용문
+이전암
+이종현
+이천인
+이용문
+이소영
+이효원
+이영덕
+이용백
+이술년
+이구형
+이춘호
+이용복
+이명도
+이영동
+이임숙
+이용석
+이병식
+이금식
+이용순
+이용석
+이인열
+이기수
+이태덕
+이용수
+이제용
+이근욱
+이중태
+이용수
+이만호
+이승원
+이해규
+이용식
+이차춘
+이규수
+이언현
+이용업
+이성화
+이복림
+이명돌
+이용업
+이준복
+이용천
+이윤호
+이용열
+이판분
+이쌍권
+이응구
+이용운
+이재진
+이태복
+이종랑
+이용운
+이유식
+이익성
+이재환
+이용원
+이동달
+이노왕
+이일종
+이용조
+이영석
+이말권
+이태조
+이용주
+이병영
+이삼연
+이종자
+이용주
+이복상
+이정자
+이대홍
+이용철
+이정흠
+이병운
+이만진
+이용철
+이태득
+이창국
+이성수
+이용출
+이순규
+이만선
+이대자
+이용태
+이순용
+이희수
+이석규
+이용택
+이순일
+이상옥
+이성희
+이용택
+이도훈
+이종휴
+이두준
+이용택
+이영균
+이해식
+이영환
+이용팔
+이소석
+이석선
+이재자
+이용팔
+이정출
+이갑식
+이영수
+이용한
+이효도
+이상차
+이성교
+이용혁
+이윤숙
+이영숙
+이동용
+이용현
+이운운
+이재자
+이외도
+이용호
+이명욱
+이윤욱
+이원택
+이용화
+이상호
+이춘호
+이동국
+이용환
+이정훈
+이기호
+이호율
+이용환
+이은철
+이춘웅
+이만돌
+이용희
+이영기
+이태규
+이정원
+이용희
+이상동
+이성대
+이혜수
+이우근
+이명현
+이병용
+이소선
+이우동
+이지칙
+이범승
+이윤만
+이우동
+이철련
+이영창
+이상식
+이우석
+이용섭
+이종진
+이명식
+이우식
+이호기
+이돈태
+이순규
+이우식
+이용분
+이중택
+이경준
+이우식
+이병조
+이명용
+이재열
+이우식
+이응일
+이영주
+이진가
+이우임
+이정용
+이영선
+이귀석
+이우환
+이지홍
+이말태
+이해암
+이욱노
+이분수
+이재희
+이항욱
+이욱환
+이갑도
+이현자
+이수환
+이욱환
+이호학
+이우수
+이남수
+이운석
+이영석
+이충식
+이신수
+이운철
+이남준
+이태상
+이영남
+이운학
+이정점
+이현도
+이병이
+이운호
+이상재
+이기주
+이은순
+이웅열
+이종자
+이을수
+이준용
+이원구
+이만열
+이복용
+이분인
+이원규
+이주화
+이정만
+이판빈
+이원규
+이봉철
+이창수
+이광호
+이원규
+이효관
+이응숙
+이종일
+이원기
+이석년
+이원식
+이봉자
+이원기
+이효봉
+이계남
+이수미
+이원길
+이철조
+이승기
+이광호
+이원대
+이선신
+이문용
+이해호
+이원배
+이태분
+이한규
+이기완
+이원배
+이 옥
+이을현
+이진환
+이원분
+이우배
+이영호
+이기순
+이원소
+이재기
+이선제
+이소순
+이원수
+이용하
+이동옥
+이영식
+이원수
+이대기
+이선열
+이성태
+이원수
+이상수
+이용현
+이종운
+이원식
+이재호
+이준현
+이임수
+이원식
+이수욱
+이태출
+이영돈
+이원영
+이소득
+이현섭
+이병식
+이원우
+이성환
+이봉모
+이용헌
+이원우
+이무완
+이영종
+이천훈
+이원일
+이동진
+이봉선
+이면출
+이원자
+이경길
+이상완
+이한철
+이원재
+이진현
+이교판
+이영완
+이원조
+이미휴
+이창선
+이중선
+이원진
+이주양
+이원출
+이봉채
+이원철
+이도성
+이용웅
+이문양
+이원출
+이승자
+이미덕
+이형교
+이원형
+이정희
+이장복
+이용계
+이원호
+이길기
+이종용
+이수현
+이원화
+이복근
+이인자
+이상경
+이원희
+이수성
+이명근
+이자득
+이월계
+이재식
+이광택
+이남종
+이월선
+이형석
+이정목
+이재룡
+이월성
+이대현
+이철분
+이제규
+이월한
+이금훈
+이제학
+이일대
+이월희
+이석호
+이병연
+이상섭
+이위만
+이문웅
+이병환
+이재금
+이위섭
+이수호
+이운섭
+이재동
+이위숙
+이영재
+이종윤
+이양숙
+이위출
+이화이
+이기수
+이태암
+이위호
+이석자
+이기칠
+이두봉
+이유열
+이갑환
+이재오
+이기윤
+이유원
+이쾌정
+이정규
+이창석
+이유환
+이현수
+이유국
+이건근
+이육택
+이석용
+이순근
+이순애
+이윤규
+이채우
+이삼돌
+이춘달
+이윤근
+이강락
+이창선
+이 호
+이윤기
+이업교
+이경도
+이효연
+이윤기
+이재선
+이세길
+이춘봉
+이윤노
+이영연
+이순수
+이외열
+이윤만
+이상춘
+이태선
+이병식
+이윤수
+이순박
+이태학
+이원원
+이윤수
+이명호
+이지원
+이태향
+이윤식
+이경태
+이동현
+이철준
+이윤옥
+이수동
+이주옥
+이종수
+이윤원
+이성현
+이재영
+이형수
+이윤재
+이종오
+이판용
+이원진
+이윤정
+이탁수
+이윤권
+이병영
+이윤종
+이종덕
+이일걸
+이이주
+이윤종
+이부희
+이기준
+이지식
+이윤진
+이원희
+이성황
+이선옥
+이윤채
+이삼택
+이태열
+이정일
+이윤철
+이판필
+이두수
+이홍연
+이윤철
+이상용
+이영화
+이호우
+이윤철
+이광국
+이수권
+이쾌태
+이윤현
+이민정
+이태학
+이병호
+이윤현
+이명금
+이수주
+이혜현
+이윤훈
+이월대
+이태분
+이구찬
+이윤희
+이헌영
+이홍태
+이용순
+이융기
+이태훈
+이인술
+이현목
+이은경
+이해영
+이남기
+이윤태
+이은광
+이헌희
+이 환
+이창홍
+이은숙
+이강우
+이만현
+이한애
+이은영
+이윤출
+이성선
+이건희
+이은우
+이상해
+이판근
+이정현
+이은조
+이재식
+이남립
+이경식
+이은주
+이선칠
+이성덕
+이도식
+이은주
+이현규
+이두진
+이영자
+이은주
+이현관
+이종대
+이명성
+이은철
+이조례
+이봉희
+이경희
+이은탁
+이상충
+이광순
+이경자
+이을선
+이두환
+이종한
+이영기
+이을주
+이기택
+이이오
+이재강
+이을형
+이영철
+이삼홍
+이후희
+이응도
+이정우
+이기규
+이인훈
+이응복
+이재희
+이차욱
+이승분
+이응준
+이쌍규
+이광운
+이계자
+이의소
+이 석
+이양출
+이고안
+이의수
+이무용
+이영흠
+이헌연
+이의신
+이준재
+이대근
+이정순
+이의용
+이인도
+이상수
+이순호
+이의웅
+이만기
+이병현
+이수은
+이의출
+이윤석
+이금택
+이덕희
+이의환
+이영남
+이재수
+이한조
+이이경
+이해만
+이영춘
+이순윤
+이이근
+이진수
+이상해
+이남돌
+이이남
+이재석
+이경진
+이차자
+이이득
+이외하
+이준암
+이재현
+이이석
+이원관
+이순문
+이문대
+이이용
+이원석
+이용광
+이만진
+이익현
+이칠열
+이태규
+이장행
+이인곤
+이종숙
+이옥현
+이상철
+이인곤
+이양일
+이석현
+이상용
+이인구
+이재희
+이이규
+이상규
+이인규
+이중순
+이화명
+이월순
+이인동
+이쌍윤
+이기교
+이철정
+이인모
+이이배
+이명생
+이수주
+이인석
+이성의
+이영선
+이노준
+이인섭
+이경주
+이의봉
+이홍조
+이인수
+이무수
+이영찬
+이상춘
+이인수
+이석자
+이상환
+이일숙
+이인수
+이호훈
+이광희
+이장욱
+이인숙
+이해균
+이석이
+이재은
+이인숙
+이태덕
+이홍권
+이영민
+이인영
+이규금
+이병호
+이승제
+이인우
+이용민
+이재이
+이태분
+이인자
+이만종
+이운희
+이자연
+이인철
+이군분
+이부재
+이재섭
+이인표
+이성곤
+이대식
+이기용
+이인향
+이문덕
+이환돌
+이숙득
+이인호
+이영태
+이기수
+이몽환
+이인호
+이용정
+이언주
+이영현
+이인호
+이영인
+이종덕
+이준원
+이인환
+이금대
+이말식
+이용집
+이인환
+이상순
+이학녀
+이만석
+이인환
+이인환
+이양숙
+이승웅
+이일권
+이진용
+이종조
+이남곤
+이일균
+이우범
+이해기
+이성학
+이일색
+이명봉
+이수식
+이명옥
+이일수
+이영호
+이충옥
+이태란
+이일수
+이창록
+이병덕
+이상호
+이일순
+이두연
+이찬영
+이순현
+이일순
+이성복
+이감태
+이소수
+이일순
+이소도
+이영숙
+이판호
+이일웅
+이태호
+이주현
+이기열
+이일원
+이노근
+이종현
+이금장
+이일호
+이말진
+이현식
+이정식
+이일호
+이명옥
+이재기
+이봉석
+이일환
+이서현
+이성교
+이언성
+이일환
+이의환
+이상화
+이석규
+이임득
+이순용
+이현악
+이종길
+이임석
+이낙권
+이의석
+이창수
+이임선
+이 수
+이해홍
+이정옥
+이임선
+이보석
+이정희
+이경석
+이임선
+이영순
+이정련
+이점길
+이임숙
+이흥수
+이선현
+이해출
+이임순
+이갑하
+이한호
+이영용
+이임식
+이광자
+이동조
+이복곤
+이임용
+이영덕
+이원규
+이인준
+이임이
+이용태
+이영성
+이진호
+이임이
+이병호
+이주혁
+이홍용
+이임자
+이남연
+이병수
+이해희
+이임학
+이상기
+이도용
+이삼자
+이임호
+이관용
+이수영
+이봉열
+이자연
+이재달
+이영오
+이판규
+이장근
+이규균
+이한국
+이분운
+이장노
+이정수
+이영수
+이순만
+이장덕
+이석수
+이덕덕
+이화수
+이장배
+이일주
+이상식
+이종원
+이장쇄
+이종기
+이성국
+이동호
+이장수
+이상도
+이정조
+이순포
+이장수
+이점중
+이진석
+이선귀
+이장오
+이기재
+이석숙
+이영동
+이장우
+이경강
+이재애
+이윤돌
+이장우
+이갑조
+이인식
+이해기
+이장욱
+이도균
+이창숙
+이응기
+이장주
+이신철
+이해률
+이봉기
+이장춘
+이태홍
+이대국
+이금견
+이장춘
+이영철
+이용주
+이상기
+이장호
+이태한
+이증옥
+이재준
+이장호
+이영숙
+이재현
+이태재
+이장환
+이옥혁
+이종영
+이양술
+이장환
+이기식
+이수회
+이태기
+이장희
+이길덕
+이주려
+이정임
+이재갑
+이오희
+이영열
+이영석
+이재경
+이춘길
+이근영
+이광순
+이재관
+이석옥
+이영달
+이종구
+이재구
+이회립
+이영식
+이숙수
+이재구
+이정화
+이정구
+이정길
+이재국
+이점순
+이명용
+이봉자
+이재권
+이세봉
+이용희
+이일섭
+이재균
+이판광
+이재식
+이종태
+이재근
+이해석
+이영청
+이정석
+이재근
+이윤희
+이계래
+이동연
+이재기
+이도순
+이태만
+이명자
+이재길
+이건표
+이병돌
+이동문
+이재덕
+이계길
+이종용
+이달성
+이재덕
+이종중
+이팔우
+이옥철
+이재덕
+이기만
+이석도
+이종포
+이재도
+이원승
+이점동
+이태섭
+이재동
+이석수
+이성용
+이창학
+이재만
+이성하
+이명돌
+이재모
+이재만
+이상곤
+이동조
+이강권
+이재명
+이면대
+이성하
+이억용
+이재문
+이영만
+이영규
+이재숙
+이재문
+이 태
+이헌묵
+이하석
+이재문
+이성익
+이진남
+이분천
+이재병
+이정화
+이광근
+이기용
+이재복
+이종석
+이만식
+이성권
+이재봉
+이덕열
+이동남
+이규재
+이재봉
+이이헌
+이현흠
+이태팔
+이재봉
+이영춘
+이인택
+이명훈
+이재불
+이진현
+이성준
+이은수
+이재선
+이휘일
+이종선
+이흥회
+이재선
+이병성
+이태판
+이덕중
+이재성
+이경호
+이두조
+이일종
+이재성
+이영담
+이동생
+이원용
+이재성
+이운만
+이태택
+이순숙
+이재순
+이기호
+이정일
+이홍우
+이재식
+이용택
+이종창
+이종오
+이재연
+이학수
+이길쇄
+이한운
+이재열
+이경창
+이환곤
+이직선
+이재영
+이영윤
+이경현
+이승기
+이재완
+이달현
+이순열
+이태이
+이재우
+이학우
+이동환
+이복재
+이재우
+이동봉
+이동현
+이희용
+이재우
+이명조
+이영규
+이영식
+이재우
+이현부
+이용도
+이달진
+이재우
+이분영
+이춘양
+이장태
+이재웅
+이철덕
+이영차
+이구호
+이재원
+이수재
+이상수
+이근규
+이재율
+이진득
+이창준
+이성경
+이재익
+이판석
+이정식
+이무재
+이재인
+이윤택
+이수우
+이종옥
+이재일
+이정대
+이성흠
+이권세
+이재정
+이일석
+이광상
+이주호
+이재준
+이영휴
+이윤기
+이용관
+이재천
+이점십
+이성옥
+이설덕
+이재천
+이영우
+이창수
+이양수
+이재철
+이달래
+이연영
+이분구
+이재호
+이병현
+이종수
+이낙분
+이재호
+이동균
+이동식
+이미헌
+이재호
+이영원
+이춘현
+이종철
+이재호
+이갑주
+이용권
+이인국
+이재호
+이추모
+이구도
+이철룡
+이재환
+이재석
+이중화
+이광영
+이재훈
+이운웅
+이병현
+이희태
+이재희
+이경탁
+이길오
+이영식
+이재희
+이성근
+이태근
+이갑기
+이점니
+이원우
+이용국
+이만천
+이점도
+이윤용
+이인대
+이재도
+이점선
+이곡기
+이석원
+이현현
+이점세
+이수이
+이옥철
+이정경
+이점수
+이병호
+이상암
+이종문
+이점수
+이동열
+이범주
+이만훈
+이점순
+이수근
+이상화
+이공한
+이점순
+이창만
+이태철
+이두운
+이점암
+이충원
+이동조
+이용태
+이점암
+이환열
+이태휴
+이하득
+이점암
+이광덕
+이인성
+이지식
+이점암
+이현숙
+이봉수
+이기근
+이점오
+이영갑
+이병섭
+이희규
+이점조
+이동춘
+이영겸
+이한수
+이점호
+이봉규
+이한선
+이상식
+이정갑
+이용일
+이규식
+이한기
+이정건
+이종욱
+이병기
+이석진
+이정곤
+이병수
+이상환
+이개열
+이정관
+이동규
+이덕상
+이길태
+이정구
+이동태
+이명철
+이귀기
+이정국
+이영욱
+이정기
+이진하
+이정국
+이영호
+이현일
+이삼수
+이정권
+이상록
+이성섭
+이명규
+이정규
+이병국
+이재재
+이명경
+이정규
+이민용
+이홍일
+이경홍
+이정규
+이성영
+이수모
+이두강
+이정균
+이우희
+이명복
+이광자
+이정균
+이용길
+이태조
+이영원
+이정기
+이상순
+이성모
+이진홍
+이정길
+이진순
+이태원
+이정열
+이정남
+이재필
+이선술
+이낙경
+이정달
+이일재
+이승한
+이영규
+이정덕
+이임철
+이병숙
+이용주
+이정덕
+이충기
+이전규
+이오규
+이정도
+이일태
+이한각
+이경술
+이정돌
+이재열
+이영호
+이태선
+이정두
+이석수
+이상선
+이정민
+이정란
+이윤근
+이용훈
+이종제
+이정로
+이종화
+이상천
+이영식
+이정률
+이원리
+이헌석
+이구연
+이정립
+이점환
+이병설
+이태준
+이정미
+이성진
+이수곤
+이서구
+이정민
+이해수
+이홍조
+이덕수
+이정분
+이제홍
+이주태
+이영종
+이정선
+이승기
+이정태
+이시환
+이정세
+이옥효
+이세연
+이창영
+이정세
+이칠기
+이자기
+이순문
+이정수
+이석호
+이영이
+이정태
+이정수
+이성용
+이윤상
+이재만
+이정수
+이우성
+이기형
+이영진
+이정숙
+이관만
+이용태
+이삼선
+이정숙
+이선봉
+이정완
+이태학
+이정숙
+이현호
+이삼호
+이영갑
+이정숙
+이정희
+이성자
+이상윤
+이정숙
+이찬기
+이현원
+이달식
+이정순
+이용태
+이달기
+이종식
+이정순
+이성철
+이태달
+이해분
+이정순
+이정창
+이태곤
+이종남
+이정식
+이학환
+이용숙
+이익성
+이정애
+이병곤
+이 태
+이일조
+이정애
+이임균
+이영자
+이태철
+이정애
+이재희
+이태태
+이현화
+이정연
+이성옥
+이해수
+이태암
+이정열
+이동수
+이순수
+이진웅
+이정오
+이철준
+이해종
+이명진
+이정옥
+이개술
+이진록
+이문근
+이정웅
+이재교
+이행태
+이성웅
+이정웅
+이 희
+이대중
+이종조
+이정웅
+이윤택
+이춘수
+이원준
+이정원
+이정수
+이창순
+이정환
+이정윤
+이진만
+이광길
+이태고
+이정의
+이덕섭
+이기용
+이병헌
+이정일
+이성정
+이영열
+이교진
+이정임
+이소철
+이중찬
+이정중
+이정임
+이정원
+이종순
+이형남
+이정주
+이양상
+이주회
+이문배
+이정주
+이용길
+이일진
+이봉균
+이정주
+이현탁
+이윤행
+이일래
+이정채
+이경난
+이홍철
+이천진
+이정철
+이상영
+이영재
+이성남
+이정출
+이진섭
+이재철
+이홍환
+이정태
+이수배
+이성준
+이학일
+이정택
+이재호
+이성자
+이혜태
+이정하
+이정덕
+이영모
+이성성
+이정행
+이재재
+이판광
+이남규
+이정헌
+이정일
+이영갑
+이재희
+이정현
+이종택
+이상길
+이호운
+이정형
+이희주
+이광섭
+이구기
+이정호
+이상세
+이갑애
+이도근
+이정호
+이영순
+이상수
+이태수
+이정호
+이옥범
+이희강
+이광권
+이정호
+이중관
+이영득
+이정순
+이정호
+이방모
+이현주
+이성삼
+이정호
+이은국
+이종조
+이환진
+이정호
+이영봉
+이정근
+이정선
+이정화
+이대출
+이수철
+이호노
+이정환
+이일노
+이재파
+이상정
+이정환
+이용이
+이성상
+이구수
+이정효
+이숙석
+이상숙
+이규식
+이정훈
+이수광
+이재수
+이귀만
+이정희
+이윤도
+이해수
+이대용
+이정희
+이한희
+이광현
+이교수
+이정희
+이칠순
+이형호
+이윤국
+이정희
+이순정
+이실철
+이병호
+이제심
+이정현
+이환민
+이양환
+이제철
+이기성
+이영수
+이헌문
+이조영
+이인병
+이태효
+이갑수
+이조원
+이훈조
+이정수
+이필숙
+이조이
+이창준
+이근권
+이춘돈
+이종각
+이용희
+이재근
+이희득
+이종갑
+이동근
+이순자
+이재용
+이종갑
+이갑락
+이순기
+이인태
+이종경
+이재규
+이중태
+이상복
+이종구
+이갑식
+이호암
+이오열
+이종구
+이임형
+이종환
+이상선
+이종구
+이경덕
+이진석
+이군진
+이종구
+이동동
+이이표
+이병재
+이종권
+이만택
+이재순
+이영근
+이종귀
+이명악
+이광희
+이만화
+이종규
+이분연
+이진배
+이세자
+이종규
+이선수
+이점철
+이효균
+이종균
+이인교
+이덕지
+이남오
+이종기
+이부연
+이기대
+이광관
+이종길
+이희수
+이 현
+이정덕
+이종대
+이종열
+이동석
+이기술
+이종대
+이용선
+이판원
+이순석
+이종덕
+이윤문
+이세국
+이영수
+이종락
+이대년
+이태희
+이광국
+이종록
+이덕태
+이학순
+이생현
+이종록
+이재년
+이대수
+이병모
+이종만
+이영순
+이인근
+이과황
+이종말
+이상식
+이재복
+이종준
+이종명
+이주수
+이기득
+이창우
+이종명
+이중성
+이진갑
+이채식
+이종목
+이옥선
+이정오
+이선태
+이종문
+이월순
+이말원
+이규래
+이종배
+이갑성
+이태효
+이동상
+이종백
+이철회
+이황환
+이민국
+이종복
+이해춘
+이기영
+이갑용
+이종복
+이한암
+이수균
+이이갑
+이종석
+이도태
+이영성
+이성종
+이종석
+이말륜
+이명수
+이만열
+이종선
+이봉조
+이광균
+이상진
+이종성
+이권임
+이순수
+이복연
+이종수
+이재완
+이회화
+이기구
+이종수
+이 성
+이상연
+이장근
+이종수
+이병철
+이성철
+이태수
+이종수
+이재용
+이응희
+이정홍
+이종수
+이태주
+이일열
+이태섭
+이종술
+이세문
+이기희
+이영진
+이종식
+이주환
+이만동
+이원숙
+이종식
+이명희
+이가웅
+이종조
+이종식
+이용란
+이해이
+이익용
+이종애
+이경도
+이외석
+이종삼
+이종언
+이쌍균
+이광재
+이상자
+이종언
+이주영
+이분야
+이차일
+이종열
+이상석
+이호용
+이태권
+이종열
+이창탁
+이철식
+이태성
+이종오
+이 식
+이삼분
+이대환
+이종오
+이구원
+이재생
+이상인
+이종오
+이말순
+이상기
+이승순
+이종용
+이태교
+이성원
+이영기
+이종우
+이소철
+이수덕
+이윤달
+이종욱
+이한철
+이수규
+이국열
+이종욱
+이태도
+이준식
+이병철
+이종원
+이종순
+이팔영
+이이상
+이종원
+이애원
+이동현
+이재근
+이종윤
+이정훈
+이정태
+이동포
+이종윤
+이양현
+이윤룡
+이갑준
+이종윤
+이윤혁
+이준근
+이 만
+이종율
+이동규
+이정문
+이수재
+이종주
+이호기
+이준곤
+이종희
+이종찬
+이주원
+이판철
+이종화
+이종철
+이옥찬
+이태선
+이정문
+이종춘
+이상덕
+이태노
+이종이
+이종태
+이정미
+이문모
+이판수
+이종태
+이석규
+이병일
+이칠우
+이종태
+이갑술
+이철운
+이성수
+이종태
+이상정
+이재환
+이성열
+이종택
+이일용
+이칠희
+이봉술
+이종택
+이춘규
+이노출
+이희희
+이종판
+이철교
+이수관
+이숙교
+이종하
+이석수
+이봉수
+이수근
+이종하
+이무암
+이 자
+이선단
+이종학
+이갑길
+이연기
+이종태
+이종학
+이점성
+이오철
+이태삼
+이종학
+이수기
+이장영
+이용구
+이종한
+이만기
+이명호
+이재호
+이종한
+이금오
+이중수
+이윤호
+이종해
+이상남
+이기제
+이재영
+이종현
+이계우
+이은운
+이종희
+이종호
+이순일
+이소해
+이동부
+이종호
+이옥만
+이용출
+이세태
+이종호
+이정성
+이동인
+이영권
+이종호
+이중원
+이순대
+이춘천
+이종호
+이광권
+이덕학
+이영용
+이종호
+이혜길
+이병호
+이난웅
+이종호
+이경환
+이덕구
+이삼길
+이종환
+이광경
+이창용
+이연수
+이종환
+이동수
+이현수
+이말수
+이종환
+이휘기
+이춘권
+이홍수
+이종환
+이정노
+이찬계
+이우갑
+이종환
+이유순
+이대영
+이우순
+이종훈
+이영호
+이순광
+이분원
+이종희
+이부덕
+이용옥
+이술옥
+이종희
+이명구
+이성보
+이순수
+이주경
+이래근
+이상수
+이상술
+이주경
+이중배
+이태진
+이태근
+이주근
+이규직
+이상생
+이순순
+이주삼
+이충숙
+이남목
+이한덕
+이주석
+이재식
+이석환
+이주영
+이주석
+이만혜
+이재길
+이일자
+이주선
+이명열
+이갑만
+이말규
+이주섭
+이득출
+이영규
+이금곤
+이주승
+이정희
+이광철
+이상운
+이주연
+이근규
+이승선
+이복도
+이주영
+이영수
+이규균
+이정술
+이주영
+이순돌
+이임우
+이석기
+이주영
+이춘만
+이영기
+이정복
+이주이
+이석문
+이기우
+이정균
+이주태
+이말용
+이기호
+이한교
+이주헌
+이상운
+이성문
+이상용
+이주현
+이상기
+이성원
+이덕식
+이주호
+이병기
+이순윤
+이진봉
+이주호
+이봉호
+이영조
+이재환
+이주호
+이남순
+이중현
+이수일
+이준구
+이말수
+이문식
+이진조
+이준열
+이상길
+이창성
+이옥연
+이준영
+이병모
+이규호
+이성운
+이준영
+이곡희
+이자재
+이희연
+이준영
+이임남
+이점선
+이부환
+이준용
+이점열
+이부홍
+이재용
+이준웅
+이용웅
+이기하
+이필순
+이준재
+이태진
+이진목
+이해태
+이준재
+이장순
+이갑홍
+이재동
+이준조
+이수필
+이근우
+이수포
+이준하
+이천환
+이해오
+이외순
+이준혁
+이기운
+이규환
+이영암
+이준호
+이한훈
+이종태
+이석봉
+이준환
+이명돌
+이탁호
+이재자
+이중각
+이경한
+이정종
+이영정
+이중권
+이기병
+이 원
+이을화
+이중규
+이서열
+이범현
+이태섭
+이중근
+이삼기
+이금지
+이두철
+이중길
+이삼식
+이차연
+이윤하
+이중철
+이창길
+이환수
+이주규
+이중화
+이종효
+이성수
+이재철
+이중환
+이남만
+이경자
+이헌기
+이중환
+이정옥
+이정식
+이성성
+이중희
+이원출
+이대달
+이무호
+이증수
+이경숙
+이병호
+이태원
+이지로
+이춘남
+이진상
+이만규
+이지연
+이원영
+이재시
+이정묵
+이지철
+이원주
+이상희
+이복정
+이지혜자
+이영학점
+이대탁길
+이성근정
+이지호
+이규호
+이무헌
+이국복
+이직로
+이창호
+이현정
+이금대
+이진구
+이종지
+이윤준
+이영만
+이진노
+이용곤
+이사호
+이태련
+이진노
+이술철
+이성광
+이영감
+이진무
+이희석
+이노술
+이한래
+이진세
+이창구
+이분선
+이지복
+이진수
+이광달
+이정윤
+이상돌
+이진수
+이명훈
+이부팔
+이필순
+이진용
+이덕상
+이복홍
+이상숙
+이진우
+이헌순
+이상이
+이금석
+이진우
+이금선
+이일열
+이종옥
+이진원
+이재호
+이진우
+이정연
+이진일
+이인한
+이정옥
+이영원
+이진일
+이충섭
+이종경
+이원근
+이진재
+이찬경
+이병국
+이인섭
+이진정
+이일오
+이달택
+이기희
+이진태
+이택수
+이종순
+이성출
+이진태
+이옥근
+이돈곤
+이겸조
+이진태
+이재순
+이숙식
+이태열
+이진항
+이은암
+이영아
+이경식
+이진호
+이주선
+이점열
+이성일
+이진환
+이정영
+이대자
+이장술
+이진환
+이재수
+이명술
+이정현
+이진희
+이종숙
+이기윤
+이덕국
+이진희
+이동식
+이규기
+이상우
+이진희
+이광헌
+이낙순
+이신식
+이차봉
+이기남
+이정휴
+이수형
+이차봉
+이양성
+이순탁
+이춘승
+이차봉
+이홍만
+이순순
+이춘중
+이차연
+이광수
+이경홍
+이석자
+이차조
+이말숙
+이성제
+이현자
+이차환
+이태순
+이만만
+이선동
+이찬규
+이강춘
+이진숙
+이숙주
+이찬복
+이재도
+이종택
+이월길
+이찬성
+이전갑
+이무규
+이순출
+이찬수
+이동열
+이면자
+이영흥
+이찬수
+이상향
+이삼수
+이호식
+이찬이
+이기호
+이현순
+이본세
+이찬이
+이득병
+이융석
+이광희
+이찬홍
+이문선
+이성석
+이태한
+이찬환
+이연열
+이석술
+이소덕
+이창규
+이상갑
+이기갑
+이상구
+이창근
+이용수
+이월득
+이복규
+이창기
+이현구
+이재수
+이정수
+이창림
+이종련
+이하덕
+이만현
+이창수
+이용덕
+이제수
+이상수
+이창순
+이대훈
+이만현
+이병호
+이창식
+이상형
+이선철
+이상준
+이창열
+이성연
+이판성
+이희조
+이창용
+이항봉
+이삼호
+이상득
+이창우
+이선길
+이홍순
+이홍영
+이창우
+이무우
+이영숙
+이규철
+이창윤
+이정복
+이태경
+이도분
+이창재
+이종기
+이만자
+이순구
+이창제
+이재옥
+이정술
+이성문
+이창주
+이정출
+이언민
+이혜우
+이창주
+이종열
+이준훈
+이재태
+이창직
+이원순
+이용자
+이병우
+이창하
+이정민
+이양세
+이학식
+이창헌
+이인원
+이의만
+이재택
+이창호
+이경호
+이경성
+이민동
+이창호
+이소조
+이봉철
+이재용
+이창호
+이영곤
+이택선
+이선식
+이창호
+이시주
+이외태
+이우래
+이창환
+이정란
+이성영
+이남업
+이창희
+이종호
+이진주
+이억규
+이채식
+이맹우
+이순선
+이규석
+이채훈
+이홍식
+이기록
+이원수
+이채훈
+이용자
+이달옥
+이복득
+이천곤
+이유목
+이성문
+이수열
+이천광
+이성자
+이주은
+이성종
+이천세
+이정덕
+이종득
+이윤호
+이천수
+이동상
+이정님
+이외녀
+이천조
+이준이
+이우견
+이범석
+이철기
+이연상
+이성길
+이성국
+이철상
+이영태
+이쌍주
+이헌익
+이철수
+이현채
+이극태
+이인수
+이철수
+이안성
+이일병
+이해춘
+이철수
+이정택
+이진수
+이재연
+이철순
+이외영
+이종식
+이광기
+이철우
+이진석
+이병석
+이선록
+이철우
+이사분
+이창길
+이동곤
+이철우
+이창식
+이현석
+이경규
+이철우
+이우한
+이재직
+이영오
+이철주
+이석순
+이태묵
+이문진
+이철호
+이병교
+이재환
+이무기
+이철호
+이경경
+이윤조
+이문자
+이철호
+이의재
+이달동
+이제운
+이철호
+이형원
+이경조
+이효옥
+이철환
+이종봉
+이성임
+이칠석
+이철희
+이용국
+이성용
+이준수
+이청기
+이택욱
+이정치
+이윤용
+이청석
+이한지
+이신식
+이복주
+이청석
+이석이
+이정영
+이분근
+이청수
+이광혁
+이순찬
+이영근
+이청수
+이동화
+이정용
+이상오
+이추자
+이도식
+이종훈
+이보주
+이춘길
+이정진
+이이철
+이병제
+이춘길
+이현만
+이현규
+이정준
+이춘길
+이남산
+이진식
+이성오
+이춘길
+이정원
+이영세
+이성석
+이춘남
+이주숙
+이오수
+이치균
+이춘발
+이외니
+이기화
+이호율
+이춘석
+이장근
+이한극
+이세호
+이춘세
+이원정
+이형재
+이종종
+이춘식
+이기구
+이 택
+이경수
+이춘식
+이신우
+이상효
+이욱종
+이춘실
+이준선
+이지록
+이맹경
+이춘언
+이기목
+이순득
+이기숙
+이춘옥
+이분필
+이상영
+이재호
+이춘우
+이두균
+이의우
+이형제
+이춘우
+이옥임
+이윤연
+이종준
+이춘재
+이순수
+이정석
+이영돌
+이춘탁
+이규강
+이창수
+이영관
+이춘택
+이성일
+이명현
+이동수
+이춘택
+이성순
+이월정
+이성삼
+이춘택
+이형조
+이인주
+이천남
+이춘호
+이중대
+이창자
+이재도
+이춘호
+이태길
+이해한
+이사조
+이춘희
+이종기
+이금천
+이광조
+이춘희
+이원재
+이달석
+이복수
+이춘희
+이타인
+이용선
+이금희
+이춘희
+이명열
+이순생
+이구동
+이출곤
+이정태
+이태환
+이종현
+이출이
+이실호
+이판만
+이대순
+이충근
+이문순
+이수군
+이감영
+이충기
+이영영
+이무아
+이병수
+이충길
+이용달
+이형우
+이경성
+이충길
+이현학
+이홍우
+이순구
+이충헌
+이현섭
+이용범
+이광택
+이충형
+이원환
+이막수
+이용필
+이충호
+이헌각
+이정웅
+이희환
+이충환
+이만길
+이병자
+이정웅
+이충환
+이성한
+이수우
+이수순
+이치권
+이옥수
+이영진
+이석연
+이칠만
+이필수
+이해연
+이복식
+이칠수
+이종용
+이병호
+이월용
+이칠암
+이삼희
+이영복
+이일우
+이칠인
+이진숙
+이영재
+이영규
+이쾌우
+이상란
+이달구
+이수철
+이쾌호
+이호재
+이현동
+이문달
+이탁원
+이갑근
+이한용
+이을석
+이태경
+이태억
+이수모
+이경구
+이태경
+이진흠
+이광배
+이장섭
+이태경
+이태택
+이영순
+이호수
+이태곤
+이인수
+이성선
+이창태
+이태곤
+이대언
+이희문
+이진석
+이태규
+이학수
+이행백
+이재용
+이태근
+이정순
+이호갑
+이양봉
+이태근
+이수호
+이칠호
+이창우
+이태근
+이영수
+이용호
+이원조
+이태근
+이정영
+이윤상
+이성렬
+이태근
+이병수
+이성신
+이래곤
+이태근
+이태구
+이달중
+이진원
+이태근
+이인숙
+이한자
+이순일
+이태근
+이상호
+이정동
+이병옥
+이태근
+이현석
+이정덕
+이주우
+이태근
+이두호
+이정갑
+이경순
+이태기
+이봉암
+이판표
+이석흠
+이태달
+이성경
+이대자
+이증규
+이태덕
+이두학
+이제효
+이금희
+이태동
+이성태
+이정태
+이태언
+이태복
+이규호
+이순철
+이상일
+이태봉
+이명고
+이규배
+이봉우
+이태봉
+이삼연
+이갑례
+이홍경
+이태분
+이정연
+이윤태
+이성헌
+이태석
+이철재
+이행구
+이영자
+이태석
+이재악
+이칠환
+이재호
+이태석
+이순남
+이낙학
+이팔경
+이태선
+이태웅
+이영래
+이봉훈
+이태선
+이근재
+이평옥
+이현희
+이태성
+이종천
+이태호
+이은숙
+이태성
+이규건
+이상환
+이수남
+이태성
+이종용
+이계영
+이회창
+이태성
+이차포
+이도호
+이종진
+이태수
+이록길
+이소복
+이정이
+이태수
+이성만
+이현국
+이정희
+이태수
+이정선
+이춘준
+이순웅
+이태수
+이만근
+이병암
+이윤출
+이태수
+이태자
+이재이
+이윤근
+이태순
+이무택
+이말귀
+이재용
+이태술
+이근기
+이영석
+이경득
+이태술
+이정도
+이성섭
+이재태
+이태술
+이경순
+이기자
+이상선
+이태식
+이점도
+이 환
+이종현
+이태식
+이은식
+이원수
+이병극
+이태식
+이성수
+이을봉
+이병주
+이태식
+이수섭
+이충호
+이헌일
+이태식
+이정연
+이인대
+이영호
+이태신
+이규순
+이정일
+이성주
+이태암
+이근철
+이윤주
+이복호
+이태연
+이윤순
+이태식
+이명우
+이태열
+이재석
+이형석
+이재철
+이태옥
+이종준
+이질필
+이해욱
+이태원
+이중택
+이승순
+이용식
+이태원
+이준철
+이영수
+이성용
+이태원
+이태선
+이경철
+이태경
+이태윤
+이창범
+이근래
+이영식
+이태임
+이복규
+이우태
+이복태
+이태조
+이상헌
+이영용
+이만희
+이태조
+이도희
+이충한
+이병환
+이태조
+이일호
+이기애
+이난근
+이태준
+이재자
+이광희
+이보성
+이태철
+이옥이
+이영호
+이병리
+이태현
+이인경
+이이출
+이필환
+이태현
+이월환
+이화훈
+이경용
+이태호
+이종화
+이재희
+이효근
+이태호
+이달일
+이재언
+이영현
+이태호
+이종용
+이현식
+이양흔
+이태환
+이순철
+이병식
+이정택
+이태효
+이태호
+이명수
+이규섭
+이태훈
+이흥출
+이외로
+이헌자
+이태훈
+이의학
+이장남
+이순출
+이태희
+이광군
+이귀희
+이임숙
+이택곤
+이경인
+이재태
+이헌규
+이택춘
+이문호
+이인득
+이병배
+이특성
+이재창
+이정조
+이하자
+이판기
+이기숙
+이석곤
+이정곤
+이판돌
+이 환
+이윤희
+이길구
+이판동
+이우일
+이귀열
+이인석
+이판석
+이근숙
+이상호
+이칠선
+이판순
+이용경
+이준호
+이재준
+이판순
+이수진
+이순성
+이윤순
+이판술
+이준희
+이창석
+이주철
+이판식
+이정완
+이분수
+이봉택
+이판용
+이정길
+이기설
+이만훈
+이팔용
+이순원
+이지성
+이흥술
+이평구
+이문달
+이병순
+이종하
+이풍미
+이성요
+이경형
+이종래
+이필기
+이타식
+이헌환
+이복현
+이필남
+이재남
+이윤경
+이숙중
+이필수
+이선규
+이종왕
+이기희
+이필수
+이재환
+이종록
+이도원
+이필연
+이재종
+이대수
+이종현
+이필환
+이영환
+이쌍백
+이점연
+이하경
+이기화
+이재갑
+이문동
+이하식
+이성래
+이정곤
+이장호
+이학노
+이성완
+이중택
+이종주
+이학석
+이규호
+이진식
+이동탁
+이학제
+이경현
+이춘권
+이시한
+이학조
+이차호
+이봉헌
+이성진
+이한구
+이기고
+이정출
+이병정
+이한균
+이 조
+이명관
+이숙자
+이한근
+이점식
+이대찬
+이순화
+이한덕
+이뇌열
+이순복
+이인목
+이한성
+이병근
+이분석
+이영열
+이한순
+이현도
+이칠진
+이영환
+이한식
+이무명
+이영대
+이수남
+이한용
+이판권
+이성식
+이영동
+이한평
+이광순
+이용구
+이상태
+이한홍
+이성진
+이정남
+이쌍진
+이항용
+이순술
+이춘수
+이진자
+이해석
+이용식
+이태덕
+이영환
+이해시
+이외성
+이홍환
+이피태
+이해영
+이충호
+이정선
+이영석
+이해옥
+이수희
+이영웅
+이의순
+이해우
+이종우
+이용환
+이명순
+이해욱
+이창국
+이천현
+이원우
+이해운
+이용제
+이종만
+이래교
+이해웅
+이길연
+이태주
+이광선
+이해자
+이상석
+이종식
+이무규
+이해정
+이성수
+이상열
+이필석
+이해정
+이정대
+이규도
+이경연
+이해조
+이옥동
+이종서
+이영용
+이해주
+이명순
+이호준
+이치남
+이해준
+이남택
+이차주
+이순덕
+이해철
+이익조
+이혁경
+이병영
+이행수
+이맹열
+이상선
+이정혜
+이행운
+이봉세
+이창곤
+이진조
+이행자
+이차연
+이용인
+이경분
+이행탁
+이소우
+이희숙
+이경태
+이향미
+이근웅
+이명철
+이금돌
+이향석
+이종섭
+이경익
+이용영
+이헌갑
+이상숙
+이성만
+이영덕
+이헌국
+이기태
+이귀국
+이원덕
+이헌기
+이태희
+이순훈
+이영호
+이헌기
+이봉덕
+이이식
+이재호
+이헌달
+이봉근
+이명금
+이경원
+이헌문
+이수섭
+이동현
+이기선
+이헌방
+이선철
+이인희
+이석범
+이헌상
+이일출
+이금현
+이수범
+이헌식
+이장헌
+이재수
+이대선
+이헌영
+이광재
+이경구
+이광용
+이헌오
+이수우
+이영환
+이세주
+이헌용
+이병홍
+이월원
+이재이
+이헌우
+이기학
+이계조
+이두순
+이헌웅
+이윤식
+이수출
+이노일
+이헌익
+이금하
+이동순
+이학기
+이헌적
+이순용
+이장순
+이태일
+이헌주
+이팔수
+이완효
+이손규
+이헌진
+이영숙
+이상기
+이대목
+이헌출
+이영량
+이경하
+이공석
+이헌치
+이종철
+이완식
+이미웅
+이헌탁
+이복규
+이상조
+이해구
+이헌태
+이재식
+이성덕
+이경태
+이헌태
+이기태
+이명광
+이만용
+이헌태
+이돌순
+이순곤
+이일철
+이헌포
+이영현
+이재출
+이복웅
+이헌포
+이차진
+이대홍
+이용도
+이헌호
+이근경
+이명석
+이갑봉
+이헌호
+이진대
+이규웅
+이상환
+이헌호
+이종희
+이정섭
+이종명
+이혁진
+이종영
+이동성
+이태원
+이현구
+이용배
+이현진
+이은용
+이현령
+이동권
+이원호
+이상용
+이현모
+이업출
+이화훈
+이동태
+이현상
+이종식
+이영준
+이경생
+이현상
+이하희
+이태철
+이금길
+이현상
+이윤호
+이동생
+이진열
+이현숙
+이철자
+이수진
+이홍일
+이현식
+이정애
+이재배
+이영련
+이현열
+이상술
+이일택
+이광호
+이현재
+이동휘
+이영연
+이난운
+이현정
+이복오
+이운성
+이상원
+이현조
+이진균
+이기열
+이위식
+이현종
+이태희
+이재도
+이범주
+이현철
+이광술
+이기동
+이효순
+이현철
+이병재
+이재곤
+이정범
+이현태
+이석현
+이점암
+이윤식
+이현희
+이순자
+이병희
+이수석
+이형광
+이용원
+이윤찬
+이이재
+이형노
+이선식
+이명익
+이만욱
+이형대
+이종태
+이술택
+이용문
+이형묵
+이피득
+이맹순
+이병조
+이형식
+이상석
+이치말
+이재선
+이형식
+이월숙
+이의문
+이말호
+이형조
+이덕남
+이명암
+이영우
+이형태
+이규조
+이인현
+이관규
+이형태
+이택주
+이용일
+이재순
+이혜경
+이표항
+이정호
+이심창
+이혜경
+이동섭
+이이규
+이정출
+이혜경
+이상식
+이종석
+이헌주
+이혜림
+이기욱
+이석훈
+이귀남
+이혜숙
+이재열
+이구환
+이효준
+이혜숙
+이창호
+이원진
+이이만
+이혜주
+이광식
+이종술
+이갑조
+이호권
+이명환
+이대조
+이우성
+이호권
+이옥권
+이외복
+이우옥
+이호동
+이한호
+이태선
+이광용
+이호만
+이경만
+이계환
+이승도
+이호상
+이판열
+이복제
+이오세
+이호석
+이순숙
+이위준
+이정준
+이호성
+이철술
+이성웅
+이춘제
+이호신
+이정섭
+이학도
+이규화
+이호영
+이덕하
+이진호
+이태균
+이호원
+이재호
+이주실
+이기호
+이호원
+이정열
+이용립
+이종식
+이호재
+이대영
+이태대
+이성호
+이호정
+이신탁
+이동만
+이정식
+이호중
+이준준
+이홍수
+이재재
+이호춘
+이정엽
+이석수
+이규환
+이호측
+이광운
+이석균
+이병환
+이홍구
+이동선
+이성식
+이형권
+이홍구
+이병조
+이수석
+이말수
+이홍구
+이원환
+이육진
+이광선
+이홍국
+이동이
+이지근
+이판조
+이홍균
+이주철
+이상식
+이춘근
+이홍기
+이병춘
+이준학
+이영성
+이홍란
+이은복
+이종우
+이재종
+이홍석
+이남용
+이을근
+이청돌
+이홍식
+이영호
+이석수
+이홍현
+이홍식
+이판화
+이이래
+이진복
+이홍열
+이지수
+이달균
+이규자
+이홍택
+이추학
+이윤숙
+이기준
+이홍택
+이종언
+이추득
+이종기
+이화경
+이의덕
+이달국
+이정재
+이화경
+이대태
+이순수
+이동학
+이화락
+이태규
+이이홍
+이순섭
+이화석
+이한래
+이순현
+이희희
+이화세
+이상우
+이병관
+이봉만
+이화수
+이갑조
+이필석
+이종형
+이화자
+이재식
+이태연
+이호원
+이화종
+이병관
+이영술
+이충춘
+이환수
+이태복
+이동우
+이민열
+이환이
+이소희
+이정진
+이재곤
+이환종
+이분재
+이귀곤
+이연숙
+이황수
+이봉근
+이상일
+이영준
+이회순
+이민수
+이덕대
+이영조
+이효균
+이상호
+이태운
+이덕운
+이효수
+이영수
+이혜우
+이정규
+이효원
+이윤수
+이화대
+이명택
+이후봉
+이윤종
+이형호
+이태휴
+이흥기
+이봉상
+이재성
+이종헌
+이흥순
+이달선
+이경억
+이만선
+이흥식
+이종화
+이광배
+이영환
+이흥재
+이상호
+이수제
+이병규
+이희응
+이영현
+이석수
+이정기
+이희자
+이충원
+이현종
+이은식
+이희자
+이은철
+이혜수
+이종대
+인명편
+인종기
+인쌍구
+인정용
+인재환
+인재환
+인상진
+인득도
+임 영
+임장재
+임노규
+임성호
+임경배
+임창수
+임동훈
+임재진
+임경석
+임려철
+임영의
+임외호
+임경식
+임종동
+임진조
+임수철
+임경우
+임용석
+임소부
+임석호
+임경화
+임병삼
+임정수
+임남영
+임광민
+임원식
+임용근
+임주분
+임광식
+임영재
+임기석
+임현배
+임광춘
+임차현
+임분호
+임종제
+임구호
+임창동
+임상한
+임성돌
+임귀숙
+임판석
+임일관
+임철한
+임근덕
+임영돌
+임명택
+임수선
+임금영
+임희순
+임노자
+임성식
+임기오
+임영효
+임성원
+임태도
+임기표
+임정만
+임경치
+임현성
+임기혁
+임대도
+임월희
+임선수
+임기호
+임봉원
+임근희
+임차철
+임길용
+임영현
+임강수
+임정식
+임남순
+임구호
+임병갑
+임신수
+임노식
+임형남
+임덕길
+임인림
+임달석
+임진환
+임석실
+임수만
+임달출
+임상규
+임기명
+임태철
+임달호
+임성미
+임무우
+임복운
+임대희
+임경암
+임헌진
+임근래
+임도석
+임영영
+임부순
+임현희
+임동수
+임재생
+임정배
+임종환
+임록향
+임인곤
+임과숙
+임경정
+임록향
+임성봉
+임영락
+임점동
+임명권
+임원섭
+임응원
+임유연
+임명순
+임진우
+임영래
+임규선
+임명애
+임윤상
+임낙기
+임광천
+임명희
+임상수
+임용근
+임진재
+임무산
+임경호
+임왕수
+임의범
+임무수
+임애조
+임영호
+임정기
+임무연
+임수현
+임왕세
+임인상
+임문순
+임정옥
+임태봉
+임현상
+임병곤
+임희기
+임광우
+임헌택
+임병곤
+임창영
+임인진
+임용희
+임병군
+임순기
+임소철
+임희광
+임병길
+임순철
+임성원
+임순부
+임병삼
+임명순
+임상호
+임상홍
+임병수
+임외삼
+임영훈
+임의덕
+임병오
+임병수
+임용환
+임순노
+임병철
+임득암
+임영현
+임현우
+임병철
+임상호
+임봉호
+임석흠
+임병태
+임원열
+임명봉
+임석규
+임복영
+임칠태
+임종석
+임무영
+임봉우
+임용옥
+임상조
+임채열
+임분조
+임치락
+임무재
+임상생
+임상수
+임재황
+임정기
+임창숙
+임상학
+임윤헌
+임외선
+임말백
+임석점
+임창두
+임태선
+임재술
+임선미
+임준형
+임병출
+임윤곤
+임선우
+임삼경
+임기선
+임종수
+임성규
+임감종
+임희렬
+임천수
+임성기
+임용용
+임진순
+임교영
+임성원
+임순조
+임덕석
+임오홍
+임성호
+임광애
+임덕화
+임재록
+임수동
+임춘신
+임재훈
+임태선
+임수식
+임영우
+임태희
+임태석
+임수일
+임정봉
+임병경
+임상환
+임수칙
+임상여
+임종정
+임종수
+임숙영
+임은표
+임미곤
+임두규
+임숙자
+임갑석
+임대규
+임종진
+임숙자
+임춘문
+임재태
+임말보
+임순덕
+임석선
+임무목
+임기석
+임순덕
+임인휴
+임성순
+임판수
+임순임
+임미남
+임상환
+임기철
+임순자
+임환석
+임규학
+임혁동
+임순환
+임근순
+임진섭
+임영란
+임술호
+임원수
+임면길
+임호욱
+임승곤
+임호수
+임말은
+임영교
+임승권
+임남식
+임필형
+임진순
+임승배
+임영표
+임상수
+임영득
+임승순
+임행근
+임종길
+임치조
+임승팔
+임낙기
+임신규
+임신순
+임양우
+임문이
+임세수
+임명석
+임연호
+임수배
+임성배
+임규석
+임영국
+임차희
+임계진
+임인환
+임영모
+임일호
+임동수
+임언철
+임영종
+임갑흠
+임중순
+임성수
+임영태
+임휘옥
+임만경
+임성수
+임영호
+임병용
+임군철
+임재연
+임영호
+임신홍
+임병자
+임구윤
+임영호
+임금련
+임찬순
+임진옥
+임옥연
+임유흥
+임경태
+임순용
+임외수
+임용기
+임호진
+임상경
+임용진
+임운열
+임경범
+임정호
+임용진
+임상화
+임수조
+임기술
+임용택
+임덕열
+임선붕
+임부복
+임용해
+임용순
+임옥섭
+임용덕
+임우성
+임기자
+임정욱
+임규섭
+임원자
+임명수
+임순배
+임종규
+임원희
+임복석
+임성정
+임재규
+임윤호
+임이화
+임종식
+임영균
+임은경
+임운현
+임인걸
+임용용
+임을상
+임일열
+임석선
+임경수
+임인순
+임보식
+임덕례
+임해준
+임인재
+임희근
+임익순
+임쌍길
+임일우
+임춘효
+임창호
+임충자
+임장규
+임영구
+임태숙
+임장갑
+임재건
+임인선
+임정환
+임진훈
+임재권
+임주생
+임복돌
+임재현
+임재근
+임계조
+임태우
+임만성
+임재근
+임영섭
+임차상
+임달복
+임재근
+임창식
+임삼조
+임수진
+임재천
+임근환
+임기재
+임용호
+임재호
+임성오
+임순우
+임재수
+임점식
+임원봉
+임창영
+임순문
+임정갑
+임학이
+임규학
+임영수
+임정갑
+임삼근
+임해천
+임판제
+임정달
+임종란
+임교기
+임상학
+임정대
+임창아
+임종열
+임자권
+임정모
+임이완
+임상학
+임춘룡
+임정배
+임춘현
+임광대
+임영열
+임정숙
+임용주
+임정자
+임영곤
+임정술
+임진신
+임진권
+임면욱
+임정진
+임임선
+임재조
+임은득
+임정철
+임용식
+임점용
+임용석
+임정태
+임수덕
+임수진
+임수이
+임정혜
+임일섭
+임상이
+임치일
+임정호
+임귀석
+임항등
+임교열
+임정환
+임낙범
+임석상
+임점현
+임제우
+임병헌
+임상춘
+임종희
+임조강
+임용환
+임대생
+임성석
+임종국
+임용자
+임완환
+임재선
+임종길
+임보술
+임순환
+임순성
+임종만
+임재식
+임창순
+임정호
+임종만
+임은선
+임정옥
+임종희
+임종정
+임수섭
+임길선
+임춘식
+임종택
+임순도
+임월우
+임봉화
+임종호
+임종욱
+임상구
+임정수
+임종환
+임재수
+임광한
+임보학
+임주섭
+임상태
+임명수
+임상기
+임중수
+임차곤
+임명조
+임동균
+임증권
+임경희
+임상임
+임태협
+임지환
+임용기
+임동길
+임옥택
+임진규
+임재섭
+임원순
+임수행
+임진모
+임정순
+임춘택
+임점관
+임진목
+임상용
+임동태
+임영현
+임진웅
+임명천
+임사오
+임정호
+임진태
+임상휴
+임명기
+임성권
+임차도
+임종남
+임영만
+임경희
+임차술
+임근억
+임상태
+임연갑
+임창근
+임윤철
+임정태
+임영곤
+임채식
+임영윤
+임형현
+임문철
+임채용
+임정철
+임동준
+임도옥
+임채호
+임태용
+임관용
+임동환
+임천택
+임영용
+임종우
+임부필
+임청석
+임진희
+임봉경
+임정일
+임춘근
+임을선
+임태순
+임화종
+임춘배
+임동옥
+임술남
+임성순
+임춘생
+임중용
+임 기
+임승구
+임춘자
+임경효
+임갑열
+임기식
+임치조
+임주석
+임말동
+임영걸
+임태경
+임기분
+임철일
+임옥진
+임태길
+임효호
+임병의
+임모일
+임태길
+임석곤
+임완택
+임병걸
+임태수
+임시운
+임종권
+임순희
+임태순
+임해윤
+임장구
+임규애
+임태순
+임점종
+임선재
+임정채
+임태순
+임광희
+임하화
+임월춘
+임태자
+임종혹
+임춘문
+임병자
+임태조
+임명현
+임태우
+임윤철
+임태진
+임상규
+임규출
+임소열
+임태호
+임병균
+임재출
+임중웅
+임태호
+임종호
+임홍환
+임종애
+임판석
+임경영
+임종완
+임병규
+임판수
+임영경
+임영환
+임무현
+임팔용
+임복이
+임근석
+임소조
+임학기
+임원근
+임민한
+임말호
+임학술
+임효선
+임영열
+임동수
+임한옥
+임수태
+임술광
+임곤구
+임해철
+임해덕
+임윤조
+임재현
+임행택
+임순임
+임용경
+임영구
+임헌영
+임숙순
+임희조
+임경기
+임헌우
+임교숙
+임두주
+임성채
+임헌철
+임태모
+임경개
+임호수
+임호영
+임홍천
+임운조
+임선희
+임화순
+임만영
+임재임
+임 갑
+임환택
+임재환
+임경숙
+임이호
+장 호
+장병숙
+장치열
+장영정
+장경숙
+장춘자
+장희권
+장기연
+장경술
+장병선
+장혜웅
+장순웅
+장계암
+장경택
+장갑종
+장명후
+장관식
+장문건
+장덕한
+장광열
+장광옥
+장정희
+장암근
+장병용
+장국남
+장 현
+장용희
+장영근
+장규문
+장흥민
+장무관
+장지성
+장규식
+장병기
+장봉순
+장영식
+장규현
+장인완
+장경선
+장한진
+장규홍
+장승화
+장해성
+장재대
+장금영
+장도모
+장송도
+장은환
+장기리
+장진희
+장옥헌
+장일호
+장기식
+장민백
+장재덕
+장재원
+장기왕
+장영철
+장주만
+장증춘
+장기주
+장동봉
+장성출
+장영금
+장기화
+장재호
+장은우
+장병달
+장남순
+장희범
+장진수
+장재우
+장남이
+장계오
+장규조
+장기현
+장대성
+장완완
+장종우
+장윤명
+장덕식
+장원호
+장종태
+장추기
+장덕현
+장말우
+장수규
+장춘수
+장동석
+장계봉
+장상오
+장명청
+장동식
+장대개
+장원수
+장광술
+장동호
+장상조
+장재길
+장일조
+장동호
+장근생
+장수오
+장해현
+장두권
+장대근
+장우연
+장경아
+장두석
+장계점
+장계주
+장지종
+장두순
+장한용
+장종영
+장한용
+장두열
+장상분
+장봉철
+장순석
+장두익
+장시우
+장성호
+장시천
+장만수
+장복관
+장수호
+장원수
+장명호
+장학숙
+장일호
+장태석
+장민식
+장병훈
+장영출
+장영조
+장병국
+장정권
+장정원
+장상출
+장병규
+장영재
+장 수
+장재만
+장병대
+장분우
+장교교
+장영종
+장병식
+장정근
+장선한
+장기우
+장병오
+장순진
+장태득
+장늠자
+장병욱
+장상숙
+장근열
+장정수
+장병운
+장수우
+장동자
+장운갑
+장병준
+장용식
+장지민
+장귀오
+장병철
+장승호
+장석우
+장성우
+장병헌
+장창태
+장상석
+장성팔
+장병호
+장정환
+장익식
+장점선
+장병호
+장금정
+장순기
+장무용
+장복진
+장상진
+장창조
+장계민
+장봉이
+장중수
+장상기
+장순철
+장삼복
+장미수
+장혜대
+장선권
+장삼술
+장종정
+장순재
+장병조
+장삼조
+장기옥
+장해석
+장종득
+장삼환
+장진학
+장구웅
+장정수
+장상기
+장성우
+장정용
+장칠길
+장상기
+장원천
+장옥선
+장형희
+장상기
+장분환
+장만조
+장의희
+장상도
+장삼형
+장자덕
+장호춘
+장상명
+장규기
+장동범
+장경호
+장상부
+장재철
+장영섭
+장종계
+장상식
+장동배
+장호우
+장주분
+장상하
+장철선
+장덕호
+장인희
+장석금
+장만길
+장병재
+장병식
+장석윤
+장종식
+장동률
+장진범
+장석조
+장순주
+장성교
+장철자
+장선식
+장영선
+장학덕
+장 란
+장성규
+장말식
+장경선
+장세호
+장성기
+장태술
+장덕동
+장복기
+장성웅
+장원영
+장차상
+장용도
+장성조
+장영만
+장종언
+장영표
+장성환
+장종서
+장우암
+장진선
+장세열
+장영숙
+장성철
+장암식
+장세원
+장창복
+장보성
+장혁석
+장세중
+장덕철
+장형열
+장수식
+장소권
+장두태
+장점현
+장병환
+장소선
+장석동
+장현곤
+장병환
+장소순
+장병용
+장종연
+장병현
+장소측
+장정진
+장성평
+장종운
+장순명
+장명원
+장성환
+장철분
+장순선
+장 현
+장춘진
+장종도
+장순자
+장태복
+장병하
+장본경
+장순태
+장외수
+장상종
+장성곤
+장순표
+장안헌
+장명이
+장분건
+장순희
+장겸용
+장갑진
+장석권
+장승록
+장재이
+장창대
+장석문
+장승옥
+장의화
+장종헌
+장인분
+장승호
+장정미
+장상임
+장순기
+장시혜
+장정복
+장춘식
+장종복
+장안임
+장혁완
+장현야
+장교철
+장연식
+장춘길
+장태균
+장영근
+장연화
+장현현
+장일호
+장미석
+장영갑
+장중호
+장억주
+장동복
+장영권
+장두찬
+장종훈
+장유식
+장영기
+장규덕
+장 수
+장병희
+장영길
+장명련
+장병병
+장승조
+장영도
+장동관
+장중권
+장한규
+장영복
+장낙흥
+장외규
+장찬길
+장영상
+장종용
+장현영
+장경례
+장영수
+장창이
+장오기
+장주조
+장영작
+장도식
+장영천
+장병현
+장영주
+장성식
+장상도
+장홍식
+장영환
+장영성
+장정환
+장태록
+장영희
+장오선
+장병웅
+장병식
+장옥상
+장소자
+장만희
+장도경
+장옥순
+장영희
+장정호
+장윤권
+장옥순
+장순환
+장재진
+장정이
+장외자
+장칠운
+장정란
+장유연
+장용현
+장영호
+장수숙
+장욱성
+장용호
+장수구
+장여주
+장상숙
+장우출
+장원재
+장인종
+장기관
+장운봉
+장영식
+장청수
+장상경
+장운용
+장호건
+장대석
+장노정
+장운용
+장순열
+장선희
+장선석
+장운용
+장금봉
+장상섭
+장오규
+장원식
+장언환
+장태주
+장점덕
+장원열
+장장출
+장선봉
+장소준
+장원재
+장동삼
+장덕순
+장보수
+장월술
+장만상
+장한환
+장승우
+장육문
+장원호
+장한일
+장정호
+장윤돌
+장명문
+장숙도
+장재곤
+장율이
+장찬근
+장청국
+장규길
+장을경
+장헌권
+장연익
+장선우
+장을성
+장규순
+장점수
+장성순
+장을술
+장동문
+장태현
+장영식
+장을식
+장언호
+장판동
+장정용
+장익용
+장상만
+장광식
+장정만
+장인석
+장진조
+장익태
+장희정
+장인식
+장만재
+장태용
+장상란
+장인학
+장현량
+장노대
+장현태
+장작지
+장홍경
+장상태
+장귀식
+장재만
+장두동
+장덕기
+장현돌
+장재만
+장영록
+장병권
+장윤호
+장재성
+장덕용
+장석호
+장삼이
+장재식
+장종희
+장종란
+장판웅
+장재식
+장쌍광
+장희홍
+장성이
+장재식
+장희성
+장우옥
+장순남
+장재학
+장현호
+장용화
+장이회
+장점도
+장남향
+장재숙
+장외조
+장점수
+장정권
+장태태
+장광남
+장정석
+장소화
+장연중
+장성덕
+장정석
+장정구
+장윤구
+장준돌
+장정숙
+장말로
+장수우
+장순천
+장정순
+장성회
+장 광
+장인석
+장정순
+장기흔
+장영혁
+장재길
+장정용
+장세경
+장남록
+장귀길
+장정자
+장상웅
+장정서
+장위경
+장정호
+장영갑
+장헌신
+장동섭
+장정희
+장수용
+장준숙
+장윤유
+장종경
+장인승
+장상호
+장재택
+장종식
+장태주
+장재출
+장수향
+장종환
+장해화
+장만범
+장건대
+장준기
+장국일
+장복호
+장태자
+장준동
+장 자
+장정기
+장경순
+장준상
+장광환
+장미숙
+장종식
+장지현
+장상출
+장기순
+장숙림
+장진호
+장해주
+장정홍
+장영갑
+장차식
+장소임
+장진희
+장팔희
+장창수
+장인옥
+장재식
+장기백
+장창영
+장용우
+장종주
+장성한
+장창조
+장준곤
+장삼호
+장신석
+장창환
+장수니
+장환섭
+장창학
+장천수
+장규수
+장용탁
+장복균
+장철기
+장태식
+장차희
+장무소
+장철식
+장양원
+장규숙
+장종섭
+장충균
+장헌정
+장희기
+장용석
+장치혁
+장명학
+장근중
+장영수
+장태권
+장종태
+장성우
+장병조
+장태권
+장식식
+장채자
+장진식
+장태복
+장일애
+장병애
+장은호
+장태성
+장선근
+장채자
+장순상
+장태희
+장정석
+장정준
+장정조
+장판돌
+장순조
+장용수
+장금치
+장학수
+장숙식
+장용태
+장하환
+장학이
+장태영
+장상룡
+장만희
+장학조
+장재술
+장우이
+장재연
+장해준
+장채덕
+장진권
+장정열
+장현숙
+장광숙
+장해달
+장기도
+장현식
+장진환
+장헌선
+장승영
+장형희
+장현환
+장교희
+장기식
+장호순
+장만욱
+장병호
+장 환
+장홍식
+장봉규
+장태휴
+장기섭
+장홍진
+장재실
+장한규
+장영영
+장회상
+장영범
+장대동
+장대호
+장훈식
+장인남
+장태우
+장두중
+장휘지
+장연보
+장재식
+장점선
+장희규
+장점우
+장명보
+장경조
+장희자
+장오주
+장공원
+장낙정
+장희철
+장재규
+장준암
+장옥수
+장희현
+장수호
+장헌진
+장영현
+전갑덕
+전형병
+전금선
+전순익
+전갑덕
+전원봉
+전길석
+전연권
+전갑식
+전영원
+전인주
+전종철
+전갑준
+전일순
+전광덕
+전종환
+전강수
+전하화
+전희옥
+전대원
+전강일
+전갑영
+전인향
+전홍택
+전강호
+전길철
+전필봉
+전성남
+전경련
+전달주
+전태웅
+전삼경
+전경배
+전덕세
+전길화
+전용순
+전경배
+전난옥
+전태금
+전신영
+전경식
+전세선
+전점철
+전정성
+전경식
+전화술
+전구철
+전성경
+전경애
+전태철
+전종조
+전상룡
+전경태
+전신호
+전용권
+전성철
+전경표
+전재수
+전응호
+전경권
+전경호
+전재학
+전순옥
+전오준
+전경희
+전희봉
+전종광
+전대상
+전계순
+전명식
+전동덕
+전택재
+전계술
+전두기
+전성철
+전주영
+전곡분
+전부동
+전재주
+전현술
+전공석
+전교임
+전소우
+전말분
+전광식
+전기준
+전해수
+전상윤
+전규성
+전영기
+전홍원
+전정윤
+전규철
+전기철
+전칠천
+전규이
+전근식
+전정옥
+전용욱
+전성영
+전기범
+전기호
+전영우
+전규명
+전기석
+전건삼
+전명옥
+전성임
+전기석
+전민술
+전석국
+전도종
+전기준
+전정수
+전규자
+전영덕
+전기찬
+전주한
+전영향
+전병길
+전기출
+전수호
+전한녕
+전재기
+전기현
+전임운
+전 란
+전병화
+전기홍
+전용국
+전점현
+전태기
+전기홍
+전주자
+전재영
+전남환
+전기환
+전영준
+전현열
+전봉경
+전길연
+전재숙
+전동옥
+전준숙
+전달용
+전옥득
+전선탁
+전채자
+전대두
+전명악
+전영영
+전인호
+전대식
+전의규
+전종양
+전정일
+전대식
+전상동
+전해업
+전오식
+전말연
+전헌철
+전재환
+전진기
+전명석
+전달숙
+전순우
+전이돌
+전명수
+전강연
+전진현
+전동자
+전명호
+전병덕
+전석수
+전승진
+전문식
+전영문
+전창강
+전병조
+전문출
+전종이
+전양곤
+전중홍
+전문평
+전천동
+전세금
+전광철
+전문호
+전종택
+전지덕
+전상호
+전미진
+전성열
+전진환
+전홍동
+전병기
+전자동
+전순연
+전정식
+전병길
+전수성
+전원조
+전하임
+전병달
+전원칠
+전언순
+전정수
+전병대
+전충숙
+전판선
+전병석
+전병두
+전두현
+전찬구
+전규준
+전병립
+전은성
+전달복
+전영찬
+전병목
+전철덕
+전병배
+전성우
+전병무
+전성태
+전수재
+전상수
+전병석
+전범청
+전상천
+전용회
+전병섭
+전동용
+전순철
+전상순
+전병수
+전광수
+전용태
+전평영
+전병순
+전무현
+전순름
+전 선
+전병순
+전승필
+전재민
+전대상
+전병식
+전구만
+전창석
+전영필
+전병옥
+전술조
+전미석
+전성홍
+전병옥
+전덕조
+전복식
+전다규
+전병용
+전병규
+전순연
+전한락
+전병용
+전옥덕
+전점오
+전병동
+전병욱
+전순제
+전윤팔
+전영석
+전병원
+전태숙
+전억수
+전성규
+전병원
+전금호
+전우희
+전임훈
+전병입
+전대진
+전형호
+전상양
+전병주
+전연기
+전기향
+전정환
+전병준
+전경성
+전봉수
+전정연
+전병창
+전순옥
+전대복
+전용화
+전병천
+전석무
+전일의
+전하도
+전병철
+전판균
+전부봉
+전홍영
+전병탁
+전영용
+전정만
+전태희
+전병태
+전판웅
+전철수
+전정향
+전병택
+전봉일
+전태순
+전쾌식
+전병택
+전영조
+전연록
+전성복
+전병혁
+전일우
+전광식
+전태규
+전병호
+전헌호
+전태길
+전윤남
+전병화
+전태평
+전희자
+전종이
+전병환
+전종준
+전동자
+전해배
+전병휴
+전광훈
+전상기
+전강연
+전보수
+전동식
+전현순
+전인철
+전봉권
+전점숙
+전용석
+전재학
+전봉수
+전강보
+전현암
+전종식
+전분술
+전순남
+전명득
+전수희
+전사경
+전경희
+전준홍
+전대섭
+전삼덕
+전용호
+전준이
+전진용
+전삼수
+전상복
+전상대
+전원용
+전삼출
+전청호
+전용조
+전명길
+전삼현
+전진원
+전도상
+전태호
+전삼현
+전태조
+전우규
+전현희
+전상단
+전장수
+전명택
+전옥웅
+전상립
+전상경
+전성일
+전월숙
+전상봉
+전병만
+전선복
+전상련
+전상우
+전해성
+전지자
+전종일
+전상운
+전권상
+전태희
+전정건
+전상운
+전수우
+전상영
+전주진
+전상조
+전창중
+전귀자
+전수순
+전상준
+전득갑
+전석철
+전교휴
+전상철
+전상현
+전언선
+전원호
+전상환
+전미호
+전윤욱
+전성수
+전석모
+전수기
+전열관
+전상열
+전석성
+전덕애
+전용이
+전성식
+전석주
+전일권
+전창태
+전은열
+전선현
+전규식
+전태환
+전천현
+전성곤
+전대빈
+전종태
+전동현
+전성배
+전영완
+전정수
+전정용
+전성배
+전경원
+전 수
+전기열
+전성용
+전면정
+전상현
+전흥주
+전성희
+전용섭
+전소직
+전해진
+전소연
+전복이
+전태식
+전수덕
+전소영
+전재옥
+전해기
+전근환
+전수근
+전선자
+전윤명
+전일원
+전수득
+전영환
+전호성
+전수명
+전수식
+전재숙
+전무수
+전희선
+전수용
+전경한
+전문자
+전명복
+전수학
+전세길
+전수빈
+전정립
+전수학
+전덕봉
+전은임
+전정철
+전수현
+전상태
+전인현
+전욱호
+전수환
+전소선
+전중천
+전삼장
+전수환
+전장식
+전병호
+전종성
+전숙자
+전종환
+전양동
+전재곤
+전순단
+전경부
+전문용
+전우태
+전순득
+전국수
+전수장
+전준리
+전순연
+전동수
+전강영
+전쌍숙
+전순자
+전태용
+전병돌
+전정진
+전순채
+전춘구
+전삼한
+전판식
+전쌍근
+전영숙
+전광언
+전수기
+전쌍수
+전해용
+전창원
+전병락
+전연이
+전승식
+전수태
+전영현
+전영균
+전재호
+전일구
+전치상
+전영균
+전찬균
+전경덕
+전주윤
+전영기
+전복길
+전태권
+전기천
+전영덕
+전점양
+전기봉
+전광숙
+전영록
+전수식
+전정근
+전찬원
+전영삼
+전원호
+전지춘
+전원옥
+전영석
+전태래
+전용하
+전철팔
+전영우
+전휘식
+전창곤
+전대극
+전영자
+전영연
+전윤수
+전종정
+전영종
+전수식
+전충선
+전태희
+전영채
+전현호
+전태부
+전광진
+전영탁
+전헌권
+전석숙
+전동문
+전영판
+전삼호
+전형춘
+전정숙
+전영호
+전재운
+전정구
+전영혜
+전영화
+전윤석
+전중석
+전추석
+전영화
+전종철
+전대권
+전경영
+전영환
+전만식
+전동철
+전판훈
+전영희
+전춘석
+전장남
+전경동
+전오출
+전만자
+전소기
+전상금
+전옥봉
+전석배
+전덕자
+전승철
+전옥성
+전종윤
+전주주
+전강주
+전옥순
+전수덕
+전재순
+전상임
+전완석
+전병진
+전석순
+전재희
+전외출
+전용균
+전미선
+전기우
+전용기
+전수옥
+전영성
+전기돌
+전용석
+전규규
+전덕성
+전성동
+전용수
+전명철
+전정석
+전점득
+전용제
+전경수
+전병한
+전영종
+전용채
+전성선
+전주규
+전태숙
+전용호
+전정복
+전병휴
+전명선
+전용효
+전덕희
+전진용
+전무건
+전용희
+전임복
+전창재
+전영원
+전우수
+전종대
+전석환
+전덕영
+전우진
+전영준
+전범영
+전영순
+전욱남
+전유순
+전태순
+전일열
+전원길
+전태호
+전창일
+전두혜
+전원석
+전해환
+전용철
+전대희
+전원종
+전수순
+전상순
+전복수
+전원중
+전수분
+전영보
+전수일
+전윤덕
+전춘태
+전성환
+전보창
+전윤상
+전은호
+전화정
+전병광
+전윤출
+전경선
+전일환
+전준자
+전윤태
+전현수
+전춘자
+전만호
+전은근
+전말문
+전윤환
+전육기
+전을모
+전용남
+전월용
+전증진
+전을상
+전봉출
+전휘열
+전영규
+전을순
+전하열
+전춘권
+전일현
+전의준
+전유택
+전봉주
+전남기
+전장수
+전안호
+전기범
+전규세
+전장식
+전권우
+전진환
+전규환
+전재봉
+전상철
+전동길
+전기숙
+전재성
+전윤봉
+전희선
+전명균
+전재식
+전호구
+전귀균
+전경현
+전재익
+전동식
+전태철
+전지근
+전재춘
+전현수
+전홍수
+전용순
+전재현
+전영식
+전두진
+전교도
+전재현
+전수환
+전덕호
+전흥경
+전재현
+전영호
+전상영
+전병곤
+전재현
+전효환
+전대호
+전원헌
+전재호
+전효진
+전용용
+전용석
+전점생
+전차근
+전윤희
+전영숙
+전점성
+전상우
+전일동
+전준태
+전정규
+전종국
+전성기
+전영준
+전정만
+전호영
+전만오
+전경권
+전정수
+전현수
+전말석
+전영준
+전정우
+전영순
+전원옥
+전달수
+전정자
+전춘대
+전외회
+전진덕
+전정촌
+전윤기
+전기이
+전필호
+전정태
+전일원
+전은명
+전성표
+전정향
+전준발
+전태영
+전성용
+전정현
+전홍재
+전철정
+전삼선
+전제현
+전점원
+전동재
+전상연
+전종근
+전수학
+전혜식
+전도우
+전종두
+전암규
+전헌운
+전건호
+전종득
+전기원
+전태순
+전윤술
+전종석
+전달락
+전한숙
+전종수
+전종수
+전상수
+전호담
+전진국
+전종여
+전판순
+전삼오
+전증운
+전종현
+전갑탁
+전만호
+전장운
+전종호
+전오상
+전정춘
+전장하
+전주도
+전정덕
+전탁근
+전진희
+전주이
+전천전
+전 모
+전승은
+전준도
+전윤호
+전홍주
+전선영
+전준해
+전기기
+전동경
+전영외
+전준희
+전문원
+전금경
+전영수
+전차덕
+전정섭
+전동선
+전종경
+전차출
+전경달
+전차규
+전경택
+전창규
+전정일
+전창옥
+전선곤
+전창근
+전완규
+전봉선
+전정호
+전창수
+전궁식
+전태구
+전정경
+전창수
+전성순
+전병일
+전금현
+전춘국
+전정구
+전홍남
+전영화
+전춘라
+전응용
+전인수
+전영기
+전춘배
+전유용
+전태수
+전봉은
+전춘웅
+전학용
+전정광
+전치완
+전춘웅
+전상철
+전칠환
+전동식
+전춘희
+전중달
+전학만
+전겸견
+전충일
+전희서
+전채길
+전익수
+전칠수
+전보재
+전명준
+전장래
+전태경
+전재숙
+전창수
+전수재
+전태균
+전도준
+전병덕
+전달희
+전태도
+전명수
+전 국
+전대욱
+전태봉
+전욱덕
+전영환
+전대자
+전태순
+전방섭
+전철철
+전수우
+전태순
+전옥자
+전영동
+전태원
+전태식
+전종선
+전규희
+전기범
+전태조
+전정준
+전무영
+전영석
+전태환
+전위훈
+전진희
+전태권
+전판갑
+전경성
+전태환
+전청철
+전판권
+전국련
+전용건
+전선말
+전판근
+전복오
+전신순
+전지수
+전판수
+전선옥
+전영출
+전진식
+전팔십
+전묘림
+전연원
+전시웅
+전필순
+전병도
+전근규
+전영준
+전하수
+전홍길
+전규경
+전일규
+전학열
+전오휘
+전병근
+전춘희
+전한갑
+전정섭
+전종택
+전일희
+전한규
+전호혁
+전춘종
+전상영
+전한용
+전복찬
+전정수
+전명호
+전항조
+전두자
+전남규
+전희수
+전해관
+전대식
+전칠래
+전창우
+전해근
+전원자
+전승석
+전정기
+전해석
+전철순
+전영목
+전병철
+전해종
+전진용
+전순봉
+전무중
+전해주
+전호동
+전윤교
+전형호
+전해철
+전순의
+전홍열
+전현장
+전해철
+전윤출
+전한조
+전연주
+전해포
+전임조
+전재관
+전홍식
+전헌수
+전승애
+전기자
+전주태
+전현국
+전성근
+전중현
+전광조
+전현수
+전상수
+전상화
+전재연
+전형배
+전경영
+전삼원
+전연준
+전형채
+전성수
+전재진
+전성용
+전형채
+전진일
+전태현
+전기경
+전혜선
+전영현
+전병정
+전철열
+전혜숙
+전미호
+전서웅
+전용현
+전호경
+전봉배
+전경열
+전명홍
+전호근
+전학국
+전성주
+전만식
+전호근
+전홍수
+전종이
+전명래
+전호식
+전춘천
+전만숙
+전계선
+전호진
+전병재
+전홍식
+전정규
+전홍섭
+전달갑
+전명향
+전근일
+전홍열
+전규수
+전외규
+전경욱
+전홍일
+전무근
+전상수
+전팔식
+전홍진
+전팔응
+전재해
+전영출
+전홍태
+전승수
+전정분
+전석표
+전화수
+전도상
+전익홍
+전용덕
+전화자
+전석술
+전수권
+전재연
+전효근
+전학희
+전인남
+전조호
+전효근
+전창도
+전송달
+전동연
+전효배
+전경랑
+전소희
+전도수
+전효진
+전복우
+전삼남
+전근순
+전흥수
+전기순
+전금국
+전재기
+전흥주
+전동희
+전영철
+전재목
+전희득
+전이환
+전순수
+전영규
+전희영
+전우종
+전인규
+전태열
+전희철
+전지선
+전환오
+전환범
+전희환
+전봉규
+전재호
+전혜화
+정 걸
+정성숙
+정경옥
+정성태
+정 숙
+정재영
+정호이
+정은찬
+정 용
+정진근
+정용학
+정봉무
+정 훈
+정상남
+정태기
+정말환
+정갑식
+정창수
+정윤이
+정병희
+정갑주
+정영순
+정공학
+정칠영
+정갑진
+정철임
+정삼식
+정태석
+정건영
+정재록
+정귀식
+정정희
+정경란
+정종필
+정갑근
+정종자
+정경문
+정구수
+정정영
+정태용
+정경숙
+정덕희
+정균규
+정택곤
+정경식
+정 춘
+정원수
+정덕열
+정경식
+정미동
+정외선
+정규근
+정경연
+정영효
+정 식
+정중채
+정경열
+정정림
+정기구
+정순철
+정경준
+정대이
+정정수
+정혁선
+정경훈
+정성현
+정용돌
+정소화
+정계남
+정중호
+정필욱
+정석희
+정계원
+정말옥
+정희덕
+정오수
+정계향
+정무이
+정환섭
+정영갑
+정관옥
+정혁호
+정수규
+정광조
+정관의
+정쌍숙
+정재숙
+정경영
+정광남
+정명진
+정주연
+정판식
+정광덕
+정호창
+정호이
+정봉이
+정광명
+정명우
+정헌대
+정태화
+정광식
+정무수
+정석요
+정철환
+정광식
+정문호
+정정포
+정애현
+정광식
+정수득
+정희용
+정옥홍
+정광영
+정재임
+정상진
+정문룡
+정광용
+정현화
+정평필
+정무술
+정광웅
+정상태
+정용돌
+정호삼
+정광진
+정영진
+정인택
+정용석
+정광태
+정룡선
+정삼철
+정기진
+정교인
+정조식
+정창훈
+정준조
+정구관
+정삼기
+정선식
+정문희
+정구상
+정석악
+정복분
+정성수
+정구석
+정광기
+정정명
+정정권
+정구진
+정분철
+정기한
+정정달
+정구현
+정영열
+정정암
+정상이
+정구호
+정영조
+정재국
+정대기
+정국란
+정상출
+정판진
+정진정
+정권름
+정복원
+정인기
+정태익
+정권판
+정명석
+정장환
+정위기
+정권한
+정현기
+정분일
+정영실
+정귀동
+정응현
+정상이
+정명우
+정귀봉
+정만기
+정병연
+정재옥
+정귀섭
+정태례
+정종용
+정재덕
+정귀순
+정신철
+정성열
+정석계
+정규동
+정판채
+정순순
+정복열
+정규삼
+정정열
+정기호
+정태관
+정규수
+정선호
+정정순
+정상옥
+정규인
+정대규
+정세선
+정준배
+정규태
+정언완
+정종진
+정경우
+정규환
+정말내
+정원일
+정무동
+정규환
+정재산
+정재조
+정도수
+정극보
+정용철
+정윤구
+정무자
+정근재
+정영오
+정헌길
+정상세
+정근철
+정규석
+정평홍
+정병진
+정근포
+정성흠
+정주호
+정인자
+정금남
+정용수
+정의출
+정선목
+정금덕
+정희생
+정재호
+정동홍
+정금옥
+정우점
+정기자
+정효연
+정금이
+정삼순
+정석윤
+정순차
+정기둔
+정일구
+정순연
+정철용
+정기봉
+정상식
+정재덕
+정미술
+정기봉
+정종수
+정규호
+정성규
+정기상
+정상심
+정금노
+정금용
+정기석
+정성운
+정재열
+정권학
+정기석
+정진재
+정태수
+정영현
+정기선
+정영석
+정판희
+정유호
+정기수
+정세환
+정재영
+정민의
+정기숙
+정덕원
+정연식
+정순봉
+정기식
+정남택
+정준우
+정원주
+정기열
+정차림
+정숙석
+정삼수
+정기열
+정종환
+정기천
+정종웅
+정기자
+정병일
+정낙택
+정영현
+정기준
+정영윤
+정복옥
+정진수
+정기진
+정달보
+정근호
+정용도
+정기현
+정기조
+정상선
+정석선
+정길원
+정대열
+정영분
+정만환
+정길행
+정명학
+정수경
+정동득
+정길호
+정군회
+정선석
+정현자
+정길흠
+정순기
+정상환
+정영국
+정길흠
+정호인
+정광호
+정재악
+정낙도
+정남근
+정희빈
+정종순
+정남보
+정재남
+정점현
+정인락
+정남석
+정태희
+정준보
+정건기
+정남섭
+정명일
+정상복
+정우구
+정남이
+정경태
+정윤용
+정대숙
+정남조
+정연기
+정설호
+정문근
+정남택
+정명길
+정수휴
+정정순
+정남필
+정원환
+정인희
+정창출
+정년자
+정우암
+정병기
+정범근
+정대곤
+정상봉
+정문태
+정병옥
+정대균
+정병태
+정홍열
+정현금
+정대성
+정재윤
+정오훈
+정희곤
+정대식
+정희용
+정병기
+정려우
+정대영
+정재환
+정태남
+정우돌
+정덕길
+정학원
+정수숙
+정익호
+정덕길
+정정술
+정태덕
+정영호
+정덕만
+정종학
+정재복
+정용호
+정덕원
+정규봉
+정해학
+정규연
+정덕자
+정석관
+정노현
+정길영
+정덕한
+정종곤
+정소희
+정병섭
+정덕화
+정필열
+정정도
+정원오
+정덕환
+정범외
+정금길
+정윤곤
+정도식
+정성일
+정준조
+정준환
+정도식
+정재홍
+정은술
+정일옥
+정도용
+정재학
+정석호
+정규만
+정동근
+정영재
+정정수
+정호권
+정동식
+정영원
+정우제
+정도준
+정동연
+정만하
+정준수
+정원관
+정동일
+정경석
+정기만
+정병옥
+정동현
+정왕일
+정수석
+정식옥
+정두만
+정문목
+정복수
+정상희
+정두환
+정경여
+정홍석
+정운석
+정두환
+정태이
+정주호
+정관갑
+정두환
+정두엄
+정외규
+정성용
+정득상
+정성화
+정권태
+정원수
+정득우
+정창용
+정홍동
+정광룡
+정등용
+정병이
+정인기
+정상덕
+정례수
+정길주
+정성우
+정생출
+정로식
+정종철
+정상원
+정점원
+정막순
+정삼주
+정윤수
+정남돌
+정만근
+정영권
+정병출
+정행돌
+정만덕
+정종무
+정영천
+정명훈
+정만석
+정함수
+정천덕
+정정원
+정만술
+정광순
+정행택
+정증암
+정만우
+정점향
+정웅교
+정풍연
+정만호
+정광준
+정대선
+정수호
+정만호
+정재연
+정경열
+정경길
+정명국
+정태식
+정정봉
+정기암
+정명수
+정정순
+정장길
+정선야
+정명순
+정정철
+정점우
+정창용
+정명술
+정민평
+정재형
+정선동
+정명옥
+정쌍분
+정봉상
+정봉근
+정명용
+정승준
+정영봉
+정춘덕
+정명지
+정성래
+정주순
+정규덕
+정명표
+정종철
+정창태
+정의호
+정명환
+정인영
+정종익
+정문주
+정명희
+정주동
+정상수
+정창목
+정명희
+정고규
+정동수
+정민태
+정명희
+정영연
+정철만
+정재이
+정목이
+정칠돌
+정만림
+정태구
+정묘선
+정희식
+정정용
+정봉식
+정무상
+정승태
+정수곤
+정수근
+정무성
+정을권
+정로수
+정상출
+정문현
+정영담
+정수기
+정성기
+정미숙
+정차호
+정명만
+정판휘
+정미화
+정해구
+정대홍
+정향분
+정민수
+정동의
+정재수
+정순수
+정민웅
+정경원
+정쌍순
+정재식
+정병수
+정갑희
+정동임
+정희구
+정병용
+정재국
+정옥덕
+정용수
+정병은
+정윤식
+정현자
+정석희
+정병을
+정삼열
+정방환
+정원완
+정병일
+정병훈
+정석성
+정점기
+정병재
+정성호
+정점호
+정갑영
+정병재
+정승선
+정종안
+정하선
+정병종
+정상란
+정재일
+정정오
+정병준
+정경기
+정미기
+정규근
+정병철
+정등태
+정종봉
+정장우
+정병칠
+정일기
+정경근
+정문화
+정병택
+정춘판
+정규옥
+정옥생
+정병화
+정우조
+정휘탁
+정근열
+정보경
+정수운
+정분용
+정상원
+정복순
+정철호
+정정환
+정재원
+정복영
+정광순
+정상대
+정용운
+정봉갑
+정태암
+정진술
+정영자
+정봉권
+정노복
+정태식
+정헌경
+정봉욱
+정건문
+정태용
+정철헌
+정봉욱
+정학기
+정시금
+정문용
+정봉운
+정수제
+정치암
+정선호
+정봉환
+정종자
+정영자
+정일락
+정부광
+정봉수
+정수자
+정춘호
+정부영
+정원숙
+정세춘
+정복중
+정분교
+정윤용
+정공순
+정안호
+정분돌
+정영환
+정한섭
+정종득
+정분조
+정달섭
+정요곤
+정윤희
+정산용
+정일진
+정신복
+정장영
+정삼목
+정재옥
+정재한
+정노철
+정삼수
+정두홍
+정규성
+정영희
+정삼수
+정금태
+정종수
+정명일
+정삼영
+정동욱
+정영석
+정창남
+정삼용
+정술표
+정재출
+정병배
+정삼준
+정병석
+정광길
+정세현
+정삼호
+정헌수
+정지기
+정정근
+정상관
+정재원
+정정정
+정남규
+정상기
+정만팔
+정제범
+정희정
+정상수
+정의숙
+정현경
+정삼재
+정상열
+정재룡
+정선영
+정종대
+정상영
+정학선
+정태웅
+정헌범
+정상용
+정순우
+정석용
+정종석
+정상용
+정봉순
+정영태
+정영조
+정상운
+정주악
+정유술
+정미아
+정상원
+정환호
+정명락
+정만배
+정상일
+정판석
+정창석
+정옥경
+정상정
+정정석
+정광순
+정영순
+정상진
+정덕수
+정상수
+정경곤
+정상철
+정영달
+정병식
+정득란
+정상태
+정칠자
+정성애
+정종례
+정상태
+정근철
+정희석
+정정자
+정상학
+정귀성
+정교환
+정관조
+정상현
+정정태
+정점보
+정동호
+정상호
+정용환
+정기도
+정도환
+정상호
+정이견
+정창웅
+정용선
+정상호
+정상미
+정원선
+정인희
+정상훈
+정명홍
+정대기
+정태혁
+정상희
+정종근
+정창식
+정홍호
+정석광
+정성국
+정병수
+정하진
+정석용
+정태곤
+정광권
+정인교
+정석원
+정병용
+정재도
+정혜이
+정석조
+정창봉
+정행상
+정봉근
+정석철
+정연호
+정금옥
+정삼정
+정석현
+정창웅
+정무숙
+정봉래
+정석화
+정 준
+정용근
+정건갑
+정선오
+정영작
+정영선
+정종경
+정선옥
+정구표
+정성락
+정대우
+정선호
+정구동
+정점제
+정웅희
+정선호
+정성일
+정순섭
+정준도
+정선희
+정기효
+정용희
+정칠동
+정성균
+정태옥
+정정수
+정성용
+정성균
+정길웅
+정임성
+정상덕
+정성근
+정정이
+정태우
+정달술
+정성근
+정인춘
+정남태
+정금환
+정성근
+정만용
+정학선
+정금동
+정성기
+정헌기
+정균리
+정용오
+정성도
+정정열
+정춘길
+정춘훈
+정성란
+정성환
+정동성
+정경헌
+정성순
+정수태
+정현리
+정달호
+정성식
+정성기
+정순숙
+정상석
+정성식
+정동용
+정순정
+정평기
+정성식
+정지로
+정점광
+정상열
+정성식
+정창봉
+정영곤
+정종곤
+정성영
+정주홍
+정헌현
+정만성
+정성한
+정경상
+정용순
+정남영
+정성혜
+정봉석
+정기상
+정성학
+정성호
+정순성
+정종근
+정정지
+정성호
+정승득
+정수경
+정복조
+정성홍
+정태환
+정춘래
+정진덕
+정성환
+정상대
+정태덕
+정상현
+정성환
+정영난
+정춘사
+정태진
+정성훈
+정윤엽
+정성선
+정병기
+정성훈
+정명근
+정정기
+정금조
+정세완
+정순순
+정난수
+정영소
+정소조
+정기자
+정희기
+정만섭
+정손돌
+정태근
+정한이
+정언용
+정손태
+정태진
+정종우
+정용재
+정송덕
+정선기
+정태수
+정금수
+정송목
+정수규
+정선용
+정상술
+정수년
+정동환
+정순휴
+정인생
+정수덕
+정봉기
+정정숙
+정삼식
+정수동
+정종현
+정을수
+정정섭
+정수목
+정노진
+정영복
+정태학
+정수복
+정창준
+정철련
+정기우
+정수상
+정선정
+정범광
+정광조
+정수석
+정상옥
+정광암
+정영경
+정수석
+정정용
+정영종
+정학희
+정수억
+정경해
+정정원
+정순진
+정수웅
+정판욱
+정대현
+정숙한
+정수조
+정영진
+정창규
+정병식
+정수종
+정기태
+정근기
+정양재
+정수주
+정봉술
+정태수
+정은건
+정수진
+정태순
+정상술
+정영배
+정수철
+정광현
+정병현
+정기득
+정수학
+정운연
+정영주
+정정국
+정수학
+정명순
+정환술
+정중길
+정수학
+정영경
+정봉조
+정병규
+정수현
+정영달
+정종종
+정종기
+정수현
+정용영
+정동춘
+정세배
+정수홍
+정영원
+정효흠
+정원운
+정수환
+정점효
+정정택
+정완철
+정수환
+정상자
+정원홍
+정기현
+정수환
+정재준
+정태락
+정태석
+정숙도
+정성기
+정규호
+정태양
+정숙자
+정희기
+정경호
+정영범
+정순기
+정종무
+정용보
+정상삼
+정순득
+정종호
+정순근
+정용고
+정순목
+정원식
+정병식
+정점주
+정순범
+정석자
+정경환
+정창수
+정순봉
+정기순
+정숙양
+정정오
+정순석
+정홍기
+정표봉
+정동준
+정순승
+정세완
+정기수
+정용수
+정순업
+정동영
+정인연
+정훈환
+정순영
+정묘순
+정덕식
+정옥호
+정순옥
+정오철
+정작호
+정영남
+정순원
+정영집
+정귀록
+정병재
+정순조
+정성수
+정례혁
+정순일
+정순태
+정근영
+정숙수
+정종수
+정순표
+정영철
+정남자
+정의권
+정순현
+정장이
+정지우
+정종화
+정순화
+정동옥
+정숙건
+정철남
+정순환
+정재순
+정말수
+정판경
+정순희
+정상이
+정병혁
+정석철
+정순희
+정쌍우
+정태흠
+정순숙
+정승고
+정현련
+정득경
+정병상
+정승교
+정현규
+정창현
+정정식
+정승윤
+정해숙
+정홍순
+정계현
+정식현
+정지호
+정동수
+정문용
+정신섭
+정경권
+정대수
+정일희
+정쌍도
+정현재
+정재호
+정종호
+정쌍득
+정영영
+정희용
+정성두
+정안민
+정재이
+정윤재
+정만희
+정안순
+정보만
+정근집
+정주락
+정양대
+정재동
+정종만
+정기록
+정양영
+정윤수
+정창주
+정태희
+정억조
+정세호
+정정해
+정정호
+정업우
+정광숙
+정인규
+정태경
+정여필
+정정문
+정희식
+정상태
+정연동
+정수수
+정성이
+정동숙
+정연오
+정무수
+정차선
+정인한
+정연우
+정용화
+정정현
+정병치
+정연욱
+정봉희
+정진열
+정성상
+정연진
+정병열
+정상옥
+정용우
+정연환
+정기교
+정사일
+정종재
+정영구
+정운규
+정기연
+정홍석
+정영구
+정무한
+정상연
+정갑수
+정영기
+정교영
+정시용
+정형영
+정영길
+정두경
+정순우
+정종도
+정영도
+정춘호
+정기주
+정차향
+정영복
+정석조
+정동병
+정만섭
+정영석
+정용호
+정문조
+정준숙
+정영석
+정석훈
+정강동
+정부포
+정영수
+정상학
+정경수
+정현익
+정영숙
+정춘복
+정영목
+정임용
+정영옥
+정덕상
+정선주
+정점정
+정영자
+정동진
+정왕순
+정두옥
+정영조
+정원환
+정영로
+정명숙
+정영주
+정성봉
+정복환
+정상길
+정영태
+정홍연
+정주수
+정하강
+정영태
+정한상
+정정주
+정명환
+정영현
+정영열
+정성호
+정필기
+정영환
+정영돌
+정수이
+정일수
+정영환
+정숙수
+정명찬
+정병환
+정오상
+정부학
+정용웅
+정용규
+정옥남
+정춘환
+정인수
+정치진
+정옥련
+정대화
+정창주
+정영해
+정옥순
+정재수
+정춘옥
+정문익
+정외수
+정판수
+정월철
+정장열
+정외환
+정근경
+정해춘
+정영인
+정용관
+정복원
+정신수
+정연남
+정용권
+정순찬
+정일석
+정대웅
+정용균
+정대훈
+정남조
+정정조
+정용돌
+정영건
+정진행
+정도을
+정용모
+정월탁
+정일실
+정상자
+정용암
+정무준
+정호우
+정차규
+정용태
+정삼성
+정영섭
+정옥근
+정용현
+정수출
+정정순
+정운성
+정용현
+정중환
+정주원
+정동석
+정용호
+정억화
+정미자
+정상국
+정용호
+정운헌
+정경술
+정병희
+정용화
+정태학
+정정갑
+정억수
+정용화
+정태하
+정금기
+정일태
+정우석
+정태철
+정창암
+정종희
+정우영
+정위복
+정중달
+정재훈
+정우현
+정용성
+정원연
+정동향
+정우현
+정소국
+정경열
+정기성
+정운복
+정봉석
+정철대
+정명배
+정운현
+정홍분
+정현창
+정성수
+정웅희
+정영형
+정은환
+정병봉
+정원권
+정영형
+정홍고
+정부순
+정원분
+정사희
+정의환
+정오오
+정원석
+정재명
+정판섭
+정을운
+정원승
+정홍정
+정달원
+정성우
+정원용
+정두부
+정홍곤
+정정순
+정원조
+정윤순
+정정래
+정용술
+정원진
+정성섭
+정성철
+정영환
+정원택
+정백유
+정연식
+정성태
+정원현
+정병조
+정학자
+정성섭
+정위태
+정진출
+정길희
+정정민
+정유암
+정대옥
+정용복
+정자국
+정유철
+정동구
+정현완
+정종식
+정윤권
+정호환
+정광호
+정봉수
+정윤기
+정재대
+정교택
+정달민
+정윤덕
+정해규
+정태이
+정환섭
+정윤생
+정경수
+정외수
+정순우
+정윤수
+정재봉
+정선흠
+정용희
+정윤식
+정동봉
+정중국
+정재재
+정윤화
+정삼식
+정기식
+정정열
+정은영
+정연곤
+정창섭
+정상준
+정은희
+정차석
+정위석
+정동복
+정을선
+정태수
+정회중
+정영례
+정을순
+정명석
+정정순
+정해실
+정의원
+정정순
+정효진
+정윤석
+정의현
+정주이
+정애문
+정정희
+정이규
+정부덕
+정종규
+정칠환
+정이규
+정용기
+정병철
+정태식
+정이출
+정성택
+정순례
+정영해
+정이호
+정춘태
+정병기
+정영이
+정이환
+정철순
+정헌호
+정철진
+정익호
+정한갑
+정기근
+정달현
+정인규
+정경성
+정춘촌
+정성규
+정인상
+정호도
+정호영
+정정교
+정인상
+정기환
+정봉이
+정태기
+정인식
+정용환
+정차근
+정경열
+정인식
+정성영
+정영수
+정술자
+정인재
+정장조
+정영석
+정영동
+정인진
+정경선
+정주환
+정태재
+정인채
+정종식
+정선동
+정춘석
+정인태
+정상성
+정옥섭
+정상희
+정인태
+정명석
+정강식
+정영임
+정인환
+정일주
+정정이
+정명용
+정인환
+정수래
+정풍곤
+정태출
+정인희
+정옥중
+정정효
+정종일
+정일권
+정말호
+정 덕
+정삼양
+정일영
+정한윤
+정만국
+정영현
+정일우
+정진식
+정형임
+정한근
+정일한
+정용섭
+정봉모
+정윤환
+정일호
+정재옥
+정성철
+정정수
+정일환
+정보문
+정상래
+정수기
+정임길
+정종근
+정재봉
+정태석
+정임섭
+정현용
+정순원
+정영기
+정임평
+정규천
+정태남
+정현환
+정장목
+정순복
+정영수
+정우호
+정장성
+정창권
+정영양
+정임석
+정장수
+정명애
+정복태
+정길상
+정재경
+정충록
+정일순
+정태형
+정재규
+정문욱
+정명렬
+정선동
+정재규
+정장희
+정정권
+정점오
+정재근
+정철권
+정점순
+정순익
+정재근
+정인식
+정용익
+정태술
+정재봉
+정진길
+정규곤
+정상숙
+정재선
+정순대
+정기판
+정란용
+정재선
+정원연
+정경환
+정석동
+정재수
+정소규
+정차균
+정희옥
+정재식
+정팔철
+정윤용
+정강돌
+정재영
+정진원
+정휘수
+정길윤
+정재요
+정우희
+정재진
+정태화
+정재철
+정현태
+정직심
+정병철
+정재현
+정영빈
+정용철
+정정선
+정재호
+정정순
+정혜만
+정신범
+정재호
+정광택
+정영호
+정쌍웅
+정재홍
+정영봉
+정정환
+정삼자
+정재환
+정정수
+정영찬
+정순태
+정점덕
+정종수
+정현상
+정홍모
+정점순
+정노영
+정순호
+정정훈
+정점용
+정점노
+정장정
+정두수
+정점조
+정유환
+정태군
+정상칠
+정정길
+정재영
+정귀용
+정성권
+정정상
+정명문
+정남권
+정상욱
+정정섭
+정병근
+정상계
+정봉태
+정정숙
+정정희
+정영건
+정광동
+정정숙
+정욱경
+정현덕
+정연태
+정정순
+정기우
+정기호
+정연병
+정정식
+정판익
+정해현
+정충배
+정정식
+정영권
+정금수
+정달곤
+정정용
+정명봉
+정용호
+정상식
+정정원
+정리한
+정경동
+정병원
+정정현
+정충호
+정준윤
+정진한
+정정화
+정근식
+정호옥
+정석학
+정정환
+정곡휘
+정재웅
+정태주
+정조문
+정원수
+정주선
+정길수
+정종달
+정경수
+정경준
+정영판
+정종대
+정순오
+정현자
+정명환
+정종덕
+정구자
+정헌야
+정병권
+정종목
+정이현
+정순재
+정복우
+정종민
+정태열
+정의길
+정기수
+정종선
+정병도
+정보식
+정우흠
+정종수
+정태금
+정부환
+정재태
+정종수
+정 석
+정금인
+정석재
+정종술
+정인진
+정영순
+정윤순
+정종익
+정선현
+정석철
+정현자
+정종진
+정인하
+정선용
+정영수
+정종태
+정순경
+정성세
+정용만
+정종태
+정재관
+정종걸
+정현삼
+정종태
+정귀호
+정복순
+정재웅
+정종환
+정종석
+정재덕
+정정오
+정주열
+정범세
+정성이
+정종강
+정주영
+정월이
+정석하
+정수정
+정주헌
+정태식
+정태한
+정봉기
+정주현
+정효실
+정중탁
+정수수
+정주현
+정환원
+정수영
+정영수
+정주호
+정명현
+정영덕
+정주문
+정주호
+정태림
+정 조
+정중용
+정주환
+정석이
+정필금
+정순길
+정주환
+정헌우
+정의건
+정태진
+정준석
+정성옥
+정채관
+정운권
+정준식
+정창진
+정봉식
+정 용
+정중화
+정수보
+정정근
+정병한
+정지순
+정명대
+정일연
+정승석
+정지자
+정종순
+정진길
+정영우
+정지환
+정태용
+정주용
+정무규
+정진곤
+정갑섭
+정석재
+정용규
+정진국
+정정각
+정용자
+정선선
+정진돌
+정상훈
+정종관
+정종수
+정진상
+정일숙
+정학수
+정영흠
+정진석
+정유필
+정무진
+정성규
+정진세
+정명출
+정영일
+정문수
+정진식
+정인식
+정병석
+정천도
+정진영
+정경순
+정분식
+정영환
+정진영
+정재식
+정회환
+정팔완
+정진용
+정영건
+정종연
+정정현
+정진우
+정칠옥
+정지구
+정연동
+정차경
+정승술
+정병배
+정달환
+정차권
+정해교
+정항순
+정이영
+정차돌
+정성우
+정만교
+정세철
+정차식
+정태교
+정경석
+정상찬
+정차식
+정종호
+정나동
+정장인
+정차원
+정호옥
+정금성
+정면태
+정창덕
+정차태
+정귀훈
+정정익
+정창수
+정해만
+정춘구
+정차배
+정창식
+정영련
+정철순
+정재상
+정창진
+정응돌
+정윤희
+정연성
+정창택
+정현열
+정일영
+정범철
+정창호
+정정진
+정창훈
+정윤란
+정창환
+정청현
+정재우
+정정숙
+정채룡
+정성동
+정귀화
+정정기
+정천식
+정종휴
+정봉기
+정이근
+정철규
+정정화
+정돈준
+정면국
+정철수
+정진현
+정종연
+정문주
+정철주
+정노술
+정헌규
+정일인
+정추월
+정기명
+정기순
+정용억
+정춘교
+정호근
+정대화
+정영복
+정치원
+정용현
+정분수
+정민고
+정칠선
+정정란
+정석희
+정봉권
+정쾌선
+정분규
+정영희
+정경수
+정쾌용
+정용길
+정대호
+정재선
+정태갑
+정창건
+정경호
+정경기
+정태곤
+정운집
+정기득
+정영연
+정태근
+정병택
+정추식
+정준태
+정태길
+정만희
+정길강
+정성태
+정태도
+정순이
+정기열
+정정순
+정태봉
+정성식
+정용식
+정재수
+정태석
+정헌석
+정상숙
+정원종
+정태성
+정삼만
+정희환
+정기선
+정태성
+정정동
+정남훈
+정재열
+정태순
+정동호
+정인흔
+정의근
+정태술
+정남권
+정건이
+정남민
+정태식
+정헌자
+정진식
+정성남
+정태식
+정태택
+정순문
+정종경
+정태영
+정상금
+정선재
+정세섭
+정태용
+정호원
+정수찬
+정수식
+정태용
+정재택
+정함수
+정용출
+정태원
+정병호
+정동종
+정남석
+정태윤
+정임옥
+정동표
+정석조
+정태일
+정기환
+정영로
+정순수
+정태호
+정재학
+정기호
+정운권
+정태호
+정용고
+정규식
+정여남
+정태환
+정년호
+정철균
+정상순
+정태환
+정순용
+정오유
+정해호
+정태환
+정정상
+정재효
+정시훈
+정판득
+정명이
+정봉열
+정종도
+정판득
+정돈실
+정경중
+정은석
+정판정
+정재천
+정달곤
+정한배
+정판태
+정청진
+정재주
+정이은
+정판현
+정점희
+정진춘
+정화상
+정평근
+정무환
+정병희
+정병성
+정필묘
+정해훈
+정수호
+정분연
+정필분
+정석갑
+정순호
+정금태
+정필현
+정태단
+정영호
+정판태
+정하연
+정병덕
+정성철
+정위만
+정하윤
+정인우
+정영찬
+정동호
+정하자
+정태화
+정종정
+정재호
+정학균
+정윤윤
+정 이
+정호호
+정학동
+정곤호
+정영방
+정용분
+정학래
+정대식
+정헌식
+정영주
+정한감
+정혜현
+정영태
+정재중
+정한영
+정부선
+정은호
+정월봉
+정한조
+정봉숙
+정경만
+정기식
+정한조
+정열용
+정상문
+정영화
+정한철
+정휘수
+정용택
+정윤수
+정해경
+정성균
+정용규
+정순한
+정해규
+정종현
+정영덕
+정한생
+정해봉
+정태기
+정순호
+정외운
+정해상
+정순춘
+정용석
+정원수
+정해성
+정석봉
+정순남
+정용희
+정해성
+정차득
+정정국
+정춘세
+정해영
+정관숙
+정성수
+정영석
+정해용
+정춘호
+정양갑
+정영철
+정해용
+정병현
+정상술
+정창수
+정해운
+정갑완
+정광흥
+정주연
+정해조
+정애섭
+정현석
+정현희
+정해창
+정월경
+정광현
+정태석
+정해철
+정언윤
+정병조
+정한만
+정해춘
+정정주
+정원진
+정창호
+정헌택
+정점선
+정원준
+정도섭
+정현도
+정선정
+정기곤
+정태암
+정현미
+정웅영
+정영택
+정종덕
+정현아
+정옥목
+정선주
+정계성
+정현오
+정재명
+정상식
+정상균
+정형오
+정충자
+정판종
+정일호
+정혜영
+정학용
+정춘출
+정상이
+정혜원
+정순직
+정재훈
+정원막
+정호경
+정정수
+정한훈
+정충만
+정호근
+정영희
+정정모
+정점호
+정호연
+정덕웅
+정대현
+정동이
+정호현
+정영탁
+정갑철
+정인태
+정홍기
+정종노
+정상순
+정석주
+정홍석
+정병도
+정창태
+정 선
+정화춘
+정종주
+정병수
+정성정
+정환상
+정정태
+정기영
+정상호
+정환택
+정두근
+정석우
+정원윤
+정환택
+정타득
+정인호
+정용선
+정회봉
+정동이
+정성출
+정민환
+정효조
+정태진
+정영웅
+정주이
+정효환
+정영규
+정오남
+정용우
+정훈식
+정용복
+정상분
+정은호
+정흥국
+정영수
+정원동
+정두호
+정흥기
+정송길
+정판완
+정갑봉
+정흥숙
+정동수
+정해래
+정분호
+정흥열
+정온철
+정월원
+정의치
+정희원
+정기구
+정영범
+정상근
+정희택
+정명혁
+정월곤
+정문언
+정희택
+정병수
+정헌목
+정홍용
+제갈병도
+제태웅순
+제대호동
+제이석순
+제갈병술
+제수관효
+제명천길
+제준규남
+제갈태암
+제천희장
+제정수대
+제수억태
+제경숙
+제태용
+제영자
+제준상
+제규식
+제장학
+제소준
+제찬진
+제금범
+제오식
+제기철
+제한호
+제상우
+제창호
+제경화
+제호원
+제순자
+제용환
+제경숙
+제태윤
+제실경
+제 배
+제상현
+제석호
+제영해
+제병상
+제홍섭
+제맹원
+제재식
+제석선
+제성성
+제동원
+제점옥
+제진우
+제귀선
+제정춘
+제정화
+제기조
+제재석
+제동상
+제종호
+제병용
+제인균
+제창수
+제주식
+제기순
+제영상
+제중수
+제준식
+제남란
+제병기
+제승진
+제천봉
+제소순
+제순식
+제인희
+제천봉
+제남학
+제종호
+제상웅
+제평치
+제덕운
+제한명
+제봉순
+제환석
+제진생
+제언순
+제열흠
+조 무
+조만휴
+조일석
+조윤길
+조 분
+조성현
+조종길
+조길점
+조 호
+조종희
+조성재
+조창호
+조 홍
+조경식
+조치열
+조민춘
+조 환
+조재선
+조헌수
+조홍섭
+조강남
+조금주
+조홍욱
+조성수
+조건래
+조도우
+조영영
+조영용
+조경국
+조영덕
+조춘식
+조진재
+조경래
+조학완
+조홍순
+조태경
+조경래
+조선태
+조영홍
+조경시
+조경수
+조주연
+조영호
+조소일
+조경숙
+조정우
+조명영
+조원만
+조경옥
+조명덕
+조은난
+조병석
+조경출
+조경환
+조상옥
+조상식
+조경호
+조재금
+조종근
+조 을
+조경호
+조병훈
+조종출
+조병호
+조계연
+조상연
+조철돌
+조종열
+조계원
+조용주
+조원조
+조기헌
+조광래
+조재태
+조현천
+조재길
+조광래
+조재원
+조문철
+조수호
+조광래
+조차연
+조상은
+조옥호
+조광웅
+조삼지
+조이태
+조한석
+조광흠
+조인경
+조임호
+조응옥
+조국광
+조정철
+조종봉
+조병상
+조귀연
+조정심
+조승석
+조종순
+조귀자
+조상연
+조기석
+조종규
+조규대
+조만도
+조삼훈
+조영규
+조규상
+조두현
+조기출
+조성순
+조규상
+조우태
+조학호
+조정견
+조규상
+조창준
+조주현
+조순표
+조규수
+조희오
+조창근
+조성학
+조규오
+조원수
+조호채
+조희규
+조규오
+조복이
+조연환
+조호희
+조규정
+조용숙
+조 용
+조경미
+조규천
+조현갑
+조천화
+조금조
+조규화
+조안숙
+조일기
+조상순
+조근제
+조창천
+조병식
+조순한
+조금옥
+조성조
+조홍자
+조노봉
+조금자
+조중천
+조승도
+조응휴
+조기동
+조동환
+조석환
+조창진
+조남혁
+조종수
+조용덕
+조재숙
+조내용
+조이락
+조종정
+조판덕
+조달경
+조재해
+조판용
+조종규
+조달권
+조주갑
+조점윤
+조달화
+조달석
+조해호
+조복범
+조금환
+조달석
+조정구
+조도근
+조춘길
+조대화
+조희기
+조대진
+조세현
+조대화
+조근국
+조재경
+조문란
+조대화
+조석리
+조재흠
+조기출
+조덕래
+조영조
+조태수
+조용교
+조덕임
+조복화
+조창식
+조장우
+조덕주
+조준규
+조윤철
+조낙숙
+조덕희
+조도석
+조일국
+조만호
+조도용
+조인호
+조정수
+조한환
+조도제
+조종도
+조상홍
+조충수
+조동열
+조삼권
+조용근
+조선설
+조동점
+조진우
+조정천
+조종운
+조동철
+조정수
+조호철
+조현봉
+조동훈
+조중상
+조병상
+조동대
+조두현
+조복덕
+조영수
+조만우
+조득용
+조규석
+조혜호
+조기필
+조만호
+조재태
+조용곤
+조오석
+조말상
+조회환
+조칠수
+조봉현
+조말학
+조태수
+조두재
+조재석
+조맹조
+조용봉
+조재재
+조호순
+조명숙
+조영환
+조태식
+조제자
+조명현
+조청근
+조청택
+조봉수
+조무섭
+조만덕
+조필곤
+조이현
+조무원
+조종영
+조상호
+조성순
+조문규
+조종희
+조은성
+조암성
+조문석
+조영래
+조세규
+조태규
+조문효
+조병덕
+조진일
+조권희
+조미경
+조성영
+조태만
+조성조
+조미선
+조남정
+조숙선
+조승곤
+조민남
+조중길
+조용자
+조평수
+조민재
+조신기
+조규훈
+조원호
+조민호
+조경겸
+조장태
+조준규
+조백섭
+조선호
+조대출
+조수환
+조백섭
+조무기
+조수복
+조재중
+조범래
+조금용
+조화진
+조수수
+조병건
+조균석
+조재영
+조무곤
+조병구
+조영진
+조기애
+조성순
+조병규
+조신규
+조길석
+조차주
+조병수
+조외정
+조주애
+조말경
+조병순
+조정열
+조정석
+조정희
+조병오
+조쌍현
+조장동
+조영환
+조병우
+조순기
+조원암
+조상구
+조병준
+조정석
+조윤식
+조영덕
+조병현
+조해봉
+조지옥
+조복순
+조복래
+조덕동
+조호순
+조기술
+조복래
+조동희
+조석호
+조태철
+조복용
+조응철
+조재호
+조승영
+조복제
+조종포
+조덕섭
+조성문
+조봉규
+조재수
+조춘재
+조병희
+조봉룡
+조진현
+조계차
+조홍동
+조봉석
+조낙희
+조태길
+조영례
+조봉순
+조재조
+조달자
+조영욱
+조봉호
+조복근
+조상갑
+조상준
+조부환
+조재희
+조진흠
+조동철
+조분이
+조종수
+조성공
+조제용
+조삼돌
+조원택
+조삼길
+조진규
+조삼돌
+조선연
+조영문
+조문영
+조삼용
+조분규
+조상수
+조병남
+조상기
+조규곤
+조용순
+조성화
+조상래
+조말란
+조상섭
+조장해
+조상록
+조이인
+조세호
+조정원
+조상목
+조상성
+조병희
+조태택
+조상연
+조정용
+조태우
+조진연
+조상오
+조영택
+조동훈
+조낙웅
+조상옥
+조대용
+조재조
+조차병
+조상용
+조정춘
+조한봉
+조영식
+조상태
+조용숙
+조청훈
+조정양
+조상학
+조숙숙
+조금철
+조근만
+조상호
+조선대
+조춘흠
+조도숙
+조석락
+조석자
+조종효
+조재덕
+조석래
+조임연
+조소영
+조순진
+조석만
+조계점
+조상용
+조철술
+조석암
+조해원
+조경백
+조윤기
+조석지
+조종옥
+조정용
+조용윤
+조석현
+조재남
+조남철
+조임정
+조선제
+조진중
+조진호
+조재희
+조선제
+조창호
+조헌현
+조병기
+조성곤
+조순수
+조경준
+조양정
+조성국
+조익제
+조영자
+조응순
+조성권
+조정이
+조한선
+조 근
+조성근
+조홍환
+조성이
+조영홍
+조성득
+조미춘
+조영조
+조병권
+조성룡
+조귀길
+조달상
+조칠관
+조성복
+조인부
+조일권
+조광선
+조성순
+조정희
+조순영
+조석환
+조성옥
+조갑기
+조천환
+조신교
+조성우
+조재봉
+조순석
+조재선
+조성진
+조임일
+조교환
+조찬술
+조성천
+조용택
+조운태
+조영로
+조성현
+조재덕
+조소해
+조수열
+조성환
+조환국
+조주숙
+조병한
+조소석
+조광호
+조은식
+조태인
+조소순
+조금선
+조동근
+조영기
+조소술
+조영학
+조재원
+조태원
+조소조
+조성만
+조순진
+조월용
+조손용
+조일구
+조영이
+조정수
+조수덕
+조춘돈
+조헌득
+조재순
+조수동
+조복옥
+조재식
+조언호
+조수암
+조석목
+조근규
+조재정
+조수암
+조강섭
+조추수
+조주환
+조수원
+조증기
+조병만
+조성국
+조수찬
+조윤배
+조인조
+조삼선
+조수태
+조민성
+조작자
+조원덕
+조수환
+조일순
+조용경
+조창원
+조순남
+조삼복
+조주구
+조술열
+조순득
+조경철
+조영숙
+조춘도
+조순암
+조안덕
+조명완
+조용동
+조순암
+조종재
+조재연
+조병철
+조순연
+조경범
+조태붕
+조해덕
+조순재
+조기녀
+조점근
+조성근
+조순재
+조경실
+조점균
+조정영
+조순제
+조건덕
+조정준
+조문희
+조순집
+조덕수
+조칠진
+조장연
+조순현
+조홍식
+조임열
+조인대
+조승무
+조위호
+조인진
+조수종
+조쌍이
+조식배
+조상수
+조호박
+조안재
+조영옥
+조용우
+조동우
+조애주
+조병우
+조순용
+조순균
+조양래
+조대섭
+조진원
+조정상
+조억제
+조병식
+조운희
+조갑옥
+조연이
+조도태
+조달숙
+조제근
+조연자
+조선술
+조 득
+조오호
+조영기
+조재조
+조현주
+조노순
+조영기
+조다철
+조분록
+조소래
+조영기
+조분명
+조명근
+조영희
+조영길
+조노섭
+조해선
+조 석
+조영래
+조영근
+조복식
+조육호
+조영래
+조용수
+조문근
+조운화
+조영래
+조연순
+조학상
+조춘성
+조영만
+조노성
+조상규
+조점관
+조영목
+조용고
+조칠석
+조기희
+조영석
+조정판
+조미탁
+조 희
+조영성
+조성식
+조진석
+조동돌
+조영수
+조점영
+조숙주
+조기덕
+조영수
+조종열
+조태환
+조성석
+조영숙
+조광열
+조귀원
+조수환
+조영옥
+조동옥
+조해덕
+조길연
+조영자
+조상자
+조건학
+조춘환
+조영자
+조명엽
+조호조
+조상흠
+조영재
+조병순
+조위석
+조대순
+조영제
+조진우
+조한수
+조성덕
+조영조
+조영찬
+조삼천
+조태섭
+조영집
+조진효
+조수주
+조윤석
+조영철
+조종성
+조정룡
+조학관
+조영탁
+조욱섭
+조윤홍
+조주수
+조영학
+조연복
+조춘기
+조가덕
+조영호
+조수복
+조삼배
+조병대
+조영호
+조상생
+조인지
+조일정
+조영효
+조옥재
+조대동
+조외림
+조영희
+조금애
+조학래
+조기이
+조예인
+조진양
+조용도
+조순연
+조오태
+조종석
+조장곤
+조봉연
+조옥계
+조정철
+조주연
+조희표
+조옥분
+조정무
+조문선
+조정순
+조옥선
+조진노
+조동효
+조순희
+조옥현
+조하완
+조종수
+조재민
+조외술
+조인호
+조경환
+조수석
+조용건
+조은영
+조재만
+조대출
+조용권
+조순화
+조선균
+조혁세
+조용근
+조준섭
+조규선
+조병천
+조용기
+조신근
+조태조
+조종준
+조용대
+조장천
+조재상
+조판숙
+조용돌
+조종창
+조종호
+조남술
+조용복
+조종우
+조봉영
+조재규
+조용분
+조경철
+조구춘
+조일옥
+조용성
+조석진
+조숙호
+조용용
+조용순
+조성호
+조원임
+조일호
+조용술
+조우선
+조홍정
+조일환
+조용준
+조태열
+조중야
+조용경
+조용출
+조화석
+조문호
+조일이
+조용택
+조상상
+조점용
+조태상
+조용판
+조찬정
+조 상
+조종호
+조용학
+조경호
+조정분
+조태영
+조용한
+조경덕
+조현섭
+조분환
+조용혁
+조정호
+조효태
+조주기
+조용호
+조병이
+조명열
+조충호
+조욱래
+조삼성
+조지진
+조인택
+조운학
+조위일
+조종환
+조수갑
+조원규
+조육훈
+조만찬
+조명자
+조원재
+조상인
+조호호
+조태이
+조원주
+조교호
+조채덕
+조덕달
+조원현
+조중석
+조상배
+조순열
+조원호
+조정현
+조호현
+조수자
+조위조
+조판수
+조창조
+조경수
+조육조
+조영생
+조순곤
+조봉섭
+조윤구
+조근수
+조윤희
+조병부
+조윤기
+조선수
+조춘교
+조차기
+조윤래
+조재권
+조신선
+조철창
+조윤삼
+조학희
+조형수
+조판익
+조윤식
+조기용
+조명출
+조수순
+조윤제
+조만일
+조용종
+조철철
+조윤제
+조동구
+조옥자
+조선돌
+조의판
+조영기
+조수자
+조양포
+조의환
+조길섭
+조정덕
+조현철
+조이기
+조광완
+조두석
+조재숙
+조이기
+조성배
+조종수
+조영수
+조익성
+조용룡
+조점석
+조석현
+조인석
+조도순
+조태만
+조무선
+조인수
+조정수
+조정곤
+조덕식
+조인숙
+조경순
+조갑준
+조이천
+조인순
+조정철
+조춘동
+조태식
+조인식
+조윤석
+조경열
+조인우
+조인제
+조복미
+조명옥
+조한기
+조인필
+조영석
+조승윤
+조성수
+조인현
+조선근
+조창섭
+조부자
+조인현
+조경득
+조복향
+조효숙
+조인희
+조용학
+조승규
+조원술
+조일도
+조호식
+조춘기
+조성근
+조일선
+조종진
+조창현
+조혜웅
+조임식
+조영현
+조갑원
+조진열
+조임학
+조수창
+조동식
+조대연
+조장근
+조월록
+조종현
+조동용
+조장래
+조성림
+조병술
+조재곤
+조장섭
+조순재
+조종조
+조재수
+조장수
+조상희
+조옥환
+조태기
+조장호
+조현태
+조광홍
+조호정
+조재규
+조현종
+조영대
+조학웅
+조재대
+조정길
+조정기
+조희연
+조재덕
+조태주
+조점완
+조종현
+조재도
+조기선
+조종원
+조월열
+조재동
+조원택
+조옥주
+조성영
+조재만
+조기만
+조병조
+조재술
+조재문
+조성수
+조근찬
+조경희
+조재문
+조학이
+조병식
+조창원
+조재순
+조준철
+조승식
+조달태
+조재옥
+조희태
+조미훈
+조정수
+조재용
+조영연
+조수덕
+조병용
+조재정
+조명정
+조성출
+조석현
+조재천
+조창자
+조선화
+조명수
+조재천
+조주수
+조손출
+조미태
+조재철
+조재용
+조현남
+조흥철
+조재철
+조실식
+조 숙
+조남용
+조재철
+조무만
+조재원
+조수이
+조재태
+조해숙
+조재석
+조석수
+조재태
+조영호
+조명호
+조철섭
+조재한
+조상호
+조명희
+조진묵
+조재호
+조상홍
+조경승
+조용식
+조재훈
+조정길
+조재남
+조호대
+조점덕
+조갑권
+조동호
+조정헌
+조점수
+조순규
+조인식
+조병상
+조점술
+조상련
+조태수
+조남운
+조점옥
+조성병
+조태동
+조시동
+조정각
+조년현
+조홍희
+조봉훈
+조정기
+조수현
+조재환
+조태순
+조정래
+조필자
+조판종
+조기수
+조정미
+조인희
+조범붕
+조석자
+조정보
+조향환
+조태호
+조행식
+조정섭
+조종현
+조진구
+조영순
+조정수
+조기분
+조준수
+조명자
+조정수
+조정원
+조일길
+조명욱
+조정숙
+조경세
+조석판
+조상근
+조정식
+조재석
+조종훈
+조영순
+조정현
+조만원
+조재운
+조광희
+조정현
+조규진
+조풍원
+조광배
+조정호
+조철상
+조일근
+조정철
+조정호
+조경균
+조수수
+조종인
+조정호
+조인길
+조은천
+조원숙
+조정효
+조운용
+조호탁
+조진우
+조종석
+조신진
+조점우
+조상호
+조종석
+조인수
+조소상
+조복용
+조종수
+조태기
+조미철
+조병학
+조종수
+조태진
+조정호
+조평준
+조종술
+조근년
+조숙식
+조종선
+조주희
+조명기
+조점래
+조규태
+조준기
+조형상
+조사덕
+조갑분
+조준석
+조규국
+조문순
+조윤원
+조준연
+조진호
+조복관
+조원섭
+조준우
+조승학
+조춘길
+조영태
+조준철
+조차문
+조재배
+조숙갑
+조준희
+조용진
+조춘재
+조헌환
+조중제
+조혁복
+조정관
+조갑태
+조중환
+조상수
+조석식
+조돈대
+조지갑
+조성대
+조영희
+조충석
+조진애
+조영포
+조금우
+조주창
+조진호
+조기만
+조한경
+조정혜
+조차생
+조봉현
+조우화
+조재순
+조차용
+조회래
+조춘근
+조갑근
+조창근
+조진환
+조영준
+조병장
+조창기
+조헌이
+조 우
+조덕용
+조창석
+조명길
+조태수
+조주호
+조창호
+조상한
+조영덕
+조대윤
+조천석
+조준태
+조분기
+조진영
+조철수
+조유우
+조상진
+조진출
+조철진
+조필원
+조민조
+조말수
+조춘길
+조호순
+조명수
+조수환
+조춘만
+조선영
+조현녀
+조주길
+조춘자
+조원철
+조희규
+조석호
+조칠학
+조병쇄
+조재열
+조영길
+조타순
+조정열
+조문우
+조광하
+조태수
+조전동
+조충회
+조동표
+조태일
+조송선
+조경조
+조순규
+조태조
+조중탁
+조낙원
+조상이
+조태환
+조원흠
+조명현
+조종기
+조태희
+조희례
+조호국
+조재주
+조택상
+조창만
+조병완
+조동철
+조택상
+조광현
+조재우
+조경동
+조판년
+조범오
+조옥순
+조상웅
+조판암
+조삼현
+조홍환
+조조탁
+조필임
+조일봉
+조상대
+조추수
+조하강
+조만도
+조종수
+조상고
+조학래
+조충권
+조오규
+조기배
+조학제
+조동순
+조용용
+조덕경
+조한수
+조점일
+조일범
+조천영
+조한영
+조재호
+조근모
+조순대
+조해민
+조익호
+조상출
+조정록
+조해선
+조태상
+조성환
+조영배
+조해수
+조철수
+조인임
+조원훈
+조해숙
+조인섭
+조신숙
+조종재
+조해식
+조기기
+조석용
+조욱군
+조해용
+조윤준
+조분애
+조진식
+조헌재
+조호영
+조희조
+조만동
+조현석
+조숙준
+조응섭
+조병상
+조현석
+조동자
+조현팔
+조민웅
+조현수
+조해용
+조기균
+조광자
+조현영
+조한욱
+조태태
+조태수
+조현용
+조영호
+조용수
+조헌균
+조현재
+조이종
+조규호
+조제갑
+조현정
+조종하
+조창희
+조순구
+조현조
+조금석
+조영호
+조말호
+조현조
+조춘례
+조성성
+조월수
+조현준
+조윤성
+조상헌
+조영배
+조현중
+조달조
+조선란
+조한진
+조현태
+조용연
+조태암
+조육수
+조현택
+조병봉
+조윤호
+조금선
+조현호
+조태윤
+조성환
+조광현
+조현호
+조병효
+조상희
+조구준
+조현혹
+조두수
+조소선
+조오수
+조형섭
+조준량
+조진성
+조광탁
+조형연
+조행순
+조자오
+조재순
+조호규
+조해익
+조영열
+조홍원
+조호조
+조태익
+조경리
+조용종
+조호조
+조용수
+조정식
+조병태
+조호현
+조준기
+조민봉
+조수완
+조홍석
+조재조
+조명조
+조인미
+조홍석
+조성호
+조종익
+조정호
+조홍섭
+조만현
+조관자
+조춘식
+조환규
+조수준
+조병곤
+조수수
+조황석
+조만갑
+조철철
+조한광
+조희갑
+조경승
+조재덕
+조종자
+조희관
+조재규
+조민임
+조복용
+조희동
+조장학
+조도만
+조경분
+조희래
+조순주
+조재재
+조강택
+조희수
+조신석
+조문숙
+조상용
+조희원
+조용생
+조성임
+조동춘
+조희정
+조영이
+조현헌
+조인개
+조희중
+조승도
+조석관
+조성환
+조희출
+조재석
+조수이
+조상로
+조희태
+조지찬
+조문호
+조태춘
+주 강
+주승환
+주무암
+주진희
+주경진
+주연선
+주상호
+주차팔
+주계숙
+주우덕
+주만녀
+주일봉
+주도홍
+주의윤
+주선숙
+주태균
+주동식
+주봉철
+주판길
+주한득
+주만순
+주재광
+주종원
+주해익
+주명자
+주영영
+주일주
+주옥이
+주민국
+주인태
+주광수
+주달향
+주봉순
+주영우
+주병진
+주근주
+주순옥
+주인웅
+주상갑
+주종국
+주순자
+주판세
+주해권
+주상숙
+주옥분
+주악호
+주하호
+주수달
+주윤표
+주학열
+주성환
+주부상
+주정웅
+주용호
+주귀수
+주재홍
+주중석
+주명종
+주승준
+주병태
+주지종
+주봉순
+주청영
+주홍선
+주춘호
+주순순
+주순록
+주남남
+지병철
+지헌현
+지창조
+지갑자
+지병호
+지병구
+지성이
+지수원
+지수득
+지덕효
+지광희
+지노수
+지영주
+지판진
+지영윤
+지을규
+지옥환
+지제자
+지용렬
+지기현
+지재삼
+지상덕
+지삼철
+지의대
+지재용
+지향호
+지윤원
+지태준
+지종호
+지정숙
+지길기
+지천주
+지춘식
+지우조
+지진임
+지영한
+진갑연
+진명하
+진인상
+진소상
+진갑용
+진정원
+진동득
+진우균
+진규홍
+진외문
+진병조
+진헌환
+진기수
+진시갑
+진연수
+진유기
+진기숙
+진지돌
+진효규
+진재택
+진기용
+진석성
+진순정
+진대우
+진덕희
+진봉식
+진용세
+진철암
+진두봉
+진명권
+진성근
+진성실
+진말선
+진소종
+진갑근
+진삼호
+진명자
+진명태
+진정호
+진계기
+진명자
+진권오
+진계례
+진순식
+진문교
+진석학
+진영대
+진상용
+진병학
+진영헌
+진두식
+진경식
+진봉길
+진명모
+진성돌
+진춘덕
+진봉식
+진원배
+진명이
+진본팔
+진삼조
+진정곤
+진홍래
+진무희
+진상기
+진수호
+진소정
+진석수
+진상욱
+진봉길
+진규환
+진재우
+진상운
+진용춘
+진월규
+진동권
+진상진
+진상선
+진석식
+진극호
+진상환
+진재순
+진재중
+진성선
+진석은
+진용식
+진한태
+진용대
+진석호
+진판호
+진문용
+진길수
+진성만
+진문자
+진순환
+진환술
+진성욱
+진규향
+진인옥
+진경근
+진수웅
+진영달
+진종철
+진준애
+진수판
+진원자
+진해웅
+진병길
+진순도
+진옥선
+진달준
+진학판
+진영국
+진무철
+진병숙
+진경욱
+진영수
+진찬호
+진동창
+진현길
+진영웅
+진석수
+진만철
+진병연
+진영자
+진상수
+진성자
+진명홍
+진외조
+진동영
+진성선
+진재규
+진용돌
+진성순
+진재국
+진수미
+진용수
+진복조
+진암식
+진병남
+진용암
+진정선
+진귀규
+진종식
+진용일
+진옥정
+진상용
+진재관
+진용호
+진재근
+진영원
+진덕춘
+진우권
+진정상
+진의연
+진성식
+진우선
+진갑식
+진점종
+진복태
+진원석
+진영호
+진종도
+진종일
+진이수
+진진영
+진기출
+진호근
+진재용
+진병훈
+진희중
+진명천
+진정란
+진노관
+진근동
+진달환
+진정래
+진상식
+진희수
+진강태
+진정상
+진진원
+진병태
+진석선
+진정세
+진재교
+진장배
+진남근
+진정숙
+진달식
+진용혁
+진재호
+진정숙
+진창영
+진월규
+진진식
+진정언
+진장혁
+진관식
+진춘식
+진종근
+진종학
+진태용
+진정희
+진종대
+진말순
+진수석
+진진선
+진차용
+진상윤
+진경구
+진춘관
+진찬임
+진영수
+진헌순
+진상세
+진찬현
+진미원
+진석석
+진종진
+진창돌
+진홍우
+진영로
+진준학
+진창석
+진남미
+진정구
+진남희
+진창윤
+진한환
+진청제
+진이길
+진천도
+진경만
+진상숙
+진소봉
+진천수
+진해희
+진승헌
+진말수
+진천수
+진신주
+진원우
+진차조
+진철상
+진금환
+진성홍
+진정주
+진칠권
+진찬수
+진홍임
+진준일
+진판개
+진종표
+진상식
+진효근
+진판돌
+진상현
+진금진
+진용채
+진판재
+진윤래
+진재덕
+진병섭
+진행자
+진지용
+진해섭
+진병웅
+진헌수
+진달성
+진경철
+진병훈
+진헌택
+진재환
+진명영
+진기림
+진현이
+진영복
+진종덕
+진호규
+진혜영
+진동숙
+진원석
+진용종
+차 숙
+차갈이
+차병영
+차재도
+차갑석
+차동훈
+차규길
+차순녕
+차경순
+차종순
+차복섭
+차정기
+차극태
+차삼진
+차해연
+차정환
+차근석
+차상팔
+차상봉
+차동진
+차기수
+차윤래
+차성훈
+차인웅
+차기호
+차승옥
+차한순
+차철래
+차길상
+차판효
+차규선
+차용자
+차대륜
+차정덕
+차태근
+차일제
+차덕용
+차상훈
+차재택
+차소우
+차도정
+차상곤
+차상홍
+차효연
+차돌용
+차현석
+차동환
+차종임
+차동석
+차경동
+차경화
+차점암
+차동섭
+차주수
+차규홍
+차재택
+차만용
+차점관
+차언규
+차영순
+차명행
+차영우
+차정희
+차재수
+차민도
+차영수
+차칠군
+차병봉
+차봉도
+차태문
+차성희
+차일순
+차봉훈
+차병현
+차성영
+차홍석
+차삼천
+차창환
+차운복
+차정경
+차상연
+차용운
+차종자
+차흥수
+차상영
+차희식
+차세증
+차덕수
+차상환
+차근희
+차신서
+차복호
+차선이
+차순석
+차필배
+차창교
+차선이
+차숙엽
+차효택
+차종국
+차쌍술
+차갑태
+차기돌
+차분연
+차양현
+차재종
+차영용
+차국열
+차영열
+차유호
+차선섭
+차용계
+차영진
+차원영
+차은실
+차갑조
+차영진
+차상희
+차기동
+차태준
+차영환
+차말근
+차방수
+차정길
+차옥선
+차도만
+차태섭
+차성호
+차용덕
+차판열
+차종화
+차기선
+차용섭
+차진차
+차석찬
+차노갑
+차용수
+차나구
+차철표
+차재곤
+차유섭
+차세선
+차동준
+차기무
+차이순
+차재태
+차성문
+차태수
+차인식
+차명영
+차분배
+차순록
+차일용
+차희도
+차성원
+차대화
+차임선
+차선수
+차위용
+차진민
+차임용
+차한주
+차해승
+차범경
+차장환
+차용만
+차동자
+차상권
+차재규
+차우화
+차광식
+차준우
+차정자
+차차호
+차수자
+차팔정
+차종록
+차상훈
+차쌍국
+차규석
+차증용
+차기재
+차봉이
+차서수
+차지훈
+차상준
+차충석
+차영규
+차진섭
+차종순
+차장길
+차형우
+차질용
+차호동
+차석수
+차현분
+차창석
+차옥전
+차만자
+차소하
+차철휴
+차태조
+차건종
+차경출
+차춘순
+차정익
+차미동
+차경수
+차춘호
+차신만
+차철수
+차구강
+차쾌야
+차묘출
+차두출
+차상덕
+차태선
+차은선
+차종조
+차태섭
+차태진
+차무철
+차창자
+차상열
+차판수
+차선근
+차상갑
+차우표
+차필상
+차성순
+차석식
+차길희
+차필용
+차정현
+차종현
+차규득
+차한용
+차삼식
+차종아
+차정조
+차한천
+차철조
+차수훈
+차성용
+차한출
+차창원
+차호화
+차성남
+차해섭
+차상광
+차곤숙
+차병이
+차호섭
+차복순
+차태희
+차노환
+채경준
+채성규
+채무천
+채상현
+채군묵
+채동출
+채상영
+채옥환
+채규학
+채종욱
+채석상
+채광차
+채노석
+채종호
+채남태
+채재석
+채민준
+채만옥
+채정석
+채정원
+채영희
+채덕석
+채명례
+채윤남
+채윤덕
+채석화
+채환자
+채규주
+채일만
+채영환
+채하자
+채태열
+채정영
+채말도
+채현자
+채호기
+채종률
+채철경
+채종진
+채순수
+채종유
+채우기
+채규근
+채칠수
+채진우
+채재임
+채홍성
+채상호
+채차갑
+채석식
+채대목
+채병배
+채한식
+채길교
+채홍봉
+채인래
+천경용
+천순남
+천광규
+천영규
+천경호
+천성술
+천용룡
+천경석
+천배영
+천영건
+천금오
+천태구
+천우영
+천태숙
+천재환
+천언례
+천우태
+천태용
+천영극
+천우환
+천재근
+천이수
+천윤기
+천봉현
+천재식
+천운덕
+천은수
+천천호
+천태종
+천원용
+천영원
+천상순
+천호균
+천용택
+천수이
+천철희
+최 건
+최갑배
+최정지
+최영환
+최 건
+최남춘
+최혜희
+최경훈
+최 상
+최오아
+최기만
+최병식
+최 윤
+최용주
+최진진
+최성인
+최갑동
+최우붕
+최정원
+최용옥
+최갑철
+최세숙
+최삼권
+최미수
+최경동
+최홍석
+최정애
+최석배
+최경섭
+최선출
+최종갑
+최군현
+최경순
+최상혁
+최해길
+최기용
+최경애
+최정복
+최정태
+최종식
+최경옥
+최영경
+최만주
+최성조
+최경일
+최손완
+최덕호
+최원동
+최경자
+최근득
+최병수
+최상조
+최경자
+최재식
+최주이
+최만화
+최경창
+최윤태
+최성술
+최장용
+최경칠
+최태욱
+최금곤
+최태혁
+최경칠
+최희유
+최상호
+최석이
+최경호
+최을출
+최중용
+최상석
+최경환
+최상열
+최금호
+최강학
+최경훈
+최순우
+최경수
+최덕이
+최경희
+최종호
+최한근
+최운석
+최곤이
+최재호
+최인식
+최상우
+최광식
+최필순
+최일수
+최광숙
+최광임
+최삼남
+최봉석
+최달우
+최광철
+최태호
+최동호
+최교선
+최국렬
+최승순
+최재경
+최상호
+최국진
+최인순
+최기래
+최일연
+최국철
+최용출
+최기배
+최의수
+최귀곤
+최달식
+최용연
+최용복
+최귀주
+최종균
+최임건
+최희희
+최규만
+최환호
+최익이
+최영남
+최규병
+최정현
+최병만
+최영근
+최규석
+최상호
+최동영
+최진곤
+최규찬
+최시수
+최창환
+최중동
+최규태
+최진귀
+최재조
+최칠기
+최극용
+최기순
+최성영
+최점정
+최근모
+최영자
+최병현
+최병환
+최금돌
+최준만
+최호운
+최갑홍
+최금선
+최숙식
+최병배
+최현수
+최금이
+최봉정
+최봉봉
+최세곤
+최기만
+최성락
+최돈수
+최재현
+최기문
+최정곤
+최운호
+최이용
+최기성
+최영호
+최기암
+최재석
+최기원
+최치수
+최부식
+최덕선
+최기환
+최해희
+최영현
+최봉동
+최길동
+최동수
+최재환
+최진규
+최길미
+최중열
+최병택
+최갑수
+최길용
+최이임
+최현만
+최중준
+최낙문
+최창열
+최종규
+최권원
+최낙인
+최명현
+최병환
+최성유
+최난선
+최소식
+최노군
+최현일
+최남원
+최해기
+최병득
+최진택
+최남이
+최복균
+최춘철
+최희희
+최남정
+최태희
+최재설
+최점식
+최남조
+최유희
+최상재
+최경선
+최남철
+최정태
+최호용
+최상복
+최남희
+최순수
+최금이
+최일수
+최내삼
+최용희
+최상준
+최춘철
+최대곤
+최영아
+최기근
+최귀환
+최대웅
+최해영
+최일덕
+최무화
+최대종
+최의국
+최근달
+최강춘
+최대환
+최영수
+최소헌
+최병한
+최덕순
+최학식
+최기정
+최록정
+최돈곤
+최상환
+최용기
+최태일
+최돈헌
+최일포
+최한신
+최분만
+최동건
+최운규
+최종훈
+최상호
+최동국
+최건문
+최재숙
+최윤환
+최동기
+최경록
+최승숙
+최귀분
+최동길
+최태식
+최재경
+최자호
+최동목
+최유복
+최영환
+최상성
+최동서
+최우철
+최인이
+최정이
+최동술
+최창환
+최기홍
+최석술
+최동식
+최정순
+최외근
+최원숙
+최동욱
+최길란
+최종자
+최 운
+최동주
+최년문
+최기태
+최상빈
+최동준
+최갑순
+최경호
+최해조
+최동진
+최우곤
+최수수
+최헌기
+최동진
+최기구
+최재흠
+최상래
+최동춘
+최영희
+최용일
+최오정
+최동호
+최상식
+최상진
+최경춘
+최동홍
+최용이
+최동수
+최주갑
+최동화
+최창문
+최옥열
+최점해
+최동훈
+최종환
+최순갑
+최재호
+최두기
+최희판
+최생해
+최성철
+최두열
+최재조
+최영진
+최종웅
+최두원
+최환원
+최태애
+최미심
+최두형
+최진문
+최차이
+최상환
+최려현
+최규택
+최이순
+최묘석
+최마용
+최호동
+최영도
+최 련
+최만권
+최판규
+최수두
+최봉경
+최만도
+최교희
+최명진
+최준흠
+최만돌
+최준원
+최병규
+최해구
+최만재
+최소수
+최종권
+최정조
+최말석
+최동훈
+최상순
+최태문
+최말선
+최병중
+최재환
+최무호
+최말선
+최외호
+최윤용
+최재수
+최말선
+최용기
+최근영
+최석진
+최명구
+최재순
+최윤숙
+최재수
+최명근
+최봉규
+최시상
+최창수
+최명기
+최성금
+최재경
+최기수
+최명길
+최인한
+최윤용
+최삼환
+최명길
+최성대
+최만분
+최말희
+최명덕
+최상기
+최병규
+최종환
+최명란
+최연조
+최용균
+최진근
+최명룡
+최우식
+최태금
+최영완
+최명선
+최행봉
+최란호
+최달래
+최명술
+최숙희
+최수성
+최영남
+최명원
+최인성
+최영동
+최부천
+최명화
+최익문
+최천식
+최의식
+최몽기
+최융희
+최곤화
+최영종
+최무정
+최상중
+최영진
+최두배
+최무현
+최중수
+최갑순
+최일각
+최문복
+최삼철
+최태기
+최기형
+최문석
+최선기
+최효기
+최장철
+최문섭
+최상순
+최종희
+최암호
+최문재
+최수배
+최광숙
+최월연
+최미성
+최해인
+최광수
+최영인
+최미숙
+최종민
+최용임
+최주호
+최민희
+최필철
+최갑복
+최쾌열
+최범용
+최판래
+최순홍
+최만세
+최범주
+최영희
+최종희
+최창호
+최병규
+최철철
+최종임
+최가헌
+최병길
+최명호
+최차주
+최영촌
+최병길
+최춘건
+최상진
+최성임
+최병길
+최영희
+최태봉
+최태광
+최병담
+최세남
+최병환
+최세곤
+최병수
+최오수
+최갑욱
+최정교
+최병수
+최재구
+최영구
+최금경
+최병수
+최공호
+최춘래
+최창우
+최병술
+최만정
+최호연
+최춘상
+최병암
+최구훈
+최갑수
+최재복
+최병열
+최대기
+최무기
+최용길
+최병오
+최계중
+최진우
+최영용
+최병운
+최태영
+최복교
+최보태
+최병주
+최재기
+최범현
+최신택
+최병준
+최화열
+최의희
+최종만
+최병찬
+최규조
+최수묵
+최영열
+최병찬
+최상규
+최대택
+최창우
+최병철
+최해훈
+최보식
+최상오
+최병철
+최현준
+최규성
+최정관
+최병택
+최흥추
+최일란
+최대연
+최병필
+최낙숙
+최승관
+최경용
+최병하
+최중도
+최의범
+최태자
+최병환
+최상수
+최춘천
+최차호
+최보근
+최영섭
+최성수
+최기평
+최복란
+최병윤
+최순옥
+최승현
+최복련
+최을순
+최영현
+최성명
+최복순
+최도조
+최철조
+최수천
+최복연
+최해섭
+최도연
+최임조
+최복영
+최점이
+최종수
+최성근
+최복용
+최광갑
+최용용
+최장진
+최복출
+최순용
+최효길
+최영식
+최복호
+최영휴
+최석운
+최용수
+최봉권
+최석택
+최훈영
+최용희
+최봉선
+최종기
+최다현
+최흥민
+최봉효
+최동호
+최휘수
+최무덕
+최봉희
+최윤경
+최종수
+최정용
+최부식
+최종복
+최재희
+최남달
+최분남
+최태규
+최복희
+최찬태
+최분선
+최영갑
+최재국
+최분현
+최분옥
+최현종
+최남영
+최영헌
+최분이
+최남해
+최태호
+최휘효
+최삼복
+최성덕
+최기술
+최승길
+최삼순
+최정출
+최정원
+최규욱
+최삼용
+최학선
+최정옥
+최정조
+최삼조
+최형정
+최관진
+최명원
+최삼희
+최명설
+최대순
+최석지
+최상곤
+최재오
+최병재
+최병옥
+최상균
+최기곤
+최 식
+최교웅
+최상기
+최문분
+최연수
+최효생
+최상두
+최원구
+최규진
+최병철
+최상림
+최태삼
+최호교
+최판순
+최상림
+최종조
+최문호
+최영식
+최상림
+최강구
+최수운
+최경정
+최상무
+최도환
+최인희
+최외진
+최상백
+최정근
+최말치
+최봉규
+최상석
+최태환
+최상균
+최종조
+최상숙
+최판식
+최한규
+최종권
+최상열
+최장구
+최지환
+최용식
+최상영
+최중호
+최원환
+최보식
+최상이
+최쌍선
+최 태
+최태열
+최상종
+최의기
+최성덕
+최선실
+최상호
+최대용
+최사근
+최점용
+최상호
+최상수
+최이홍
+최성원
+최상호
+최석자
+최길호
+최태식
+최상환
+최경환
+최무운
+최상수
+최상환
+최세조
+최병모
+최득봉
+최상훈
+최용문
+최신섭
+최상덕
+최석관
+최주욱
+최대주
+최병기
+최석광
+최명배
+최한희
+최득열
+최석근
+최성태
+최성석
+최용탁
+최석명
+최상경
+최중조
+최영수
+최석문
+최유자
+최광호
+최상재
+최석배
+최금규
+최정수
+최우섭
+최석오
+최세홍
+최영열
+최수금
+최석재
+최영술
+최석정
+최구진
+최석철
+최한용
+최재헌
+최미수
+최석철
+최상갑
+최준이
+최용식
+최석헌
+최일경
+최중석
+최명진
+최석헌
+최용건
+최상휴
+최의종
+최석호
+최권록
+최을진
+최상자
+최선규
+최월찬
+최성국
+최범균
+최선이
+최금희
+최수연
+최의열
+최선희
+최경주
+최정권
+최범화
+최성경
+최미호
+최병래
+최원근
+최성곤
+최경돌
+최점준
+최재수
+최성관
+최병성
+최영용
+최종헌
+최성구
+최선완
+최정목
+최정열
+최성규
+최성준
+최덕순
+최미한
+최성규
+최용자
+최동열
+최남일
+최성규
+최규식
+최재식
+최재두
+최성규
+최희우
+최영출
+최원기
+최성대
+최영용
+최헌철
+최춘용
+최성대
+최위윤
+최규돈
+최성용
+최성덕
+최대환
+최월용
+최태근
+최성동
+최준근
+최주철
+최정진
+최성룡
+최범림
+최남호
+최진래
+최성문
+최한철
+최종섭
+최준식
+최성민
+최영현
+최헌수
+최규석
+최성봉
+최자남
+최정향
+최성숙
+최성수
+최국철
+최 혁
+최승기
+최성열
+최말용
+최정덕
+최팔화
+최성열
+최태종
+최익호
+최승섭
+최성열
+최쾌준
+최승임
+최재현
+최성용
+최재자
+최정재
+최명준
+최성욱
+최욱화
+최태수
+최대호
+최성운
+최근이
+최재권
+최상홍
+최성원
+최성연
+최보노
+최해열
+최성원
+최정택
+최종봉
+최정훈
+최성재
+최방자
+최태호
+최태제
+최성재
+최종도
+최판식
+최근순
+최성조
+최재진
+최삼일
+최정용
+최성준
+최무석
+최학건
+최갑조
+최성탁
+최달하
+최재효
+최병희
+최성태
+최정종
+최중언
+최이동
+최성태
+최동주
+최재조
+최동인
+최성택
+최석배
+최형구
+최환용
+최성현
+최술규
+최호배
+최순기
+최성호
+최춘홍
+최진경
+최영문
+최성호
+최경문
+최화석
+최은휴
+최성화
+최말출
+최진용
+최호하
+최성화
+최동수
+최성덕
+최차복
+최성환
+최선수
+최성윤
+최재구
+최성훈
+최석용
+최동호
+최무호
+최소도
+최석옥
+최갑호
+최홍용
+최소도
+최종업
+최무기
+최홍용
+최소임
+최병순
+최은숙
+최석이
+최수남
+최한동
+최윤부
+최세호
+최수동
+최인철
+최차호
+최상녀
+최수동
+최세룡
+최원운
+최승재
+최수련
+최동훈
+최관규
+최유조
+최수만
+최길희
+최재현
+최병헌
+최수열
+최삼현
+최화성
+최재경
+최수인
+최금용
+최성수
+최상택
+최수일
+최일규
+최대선
+최철철
+최수장
+최노관
+최승한
+최세덕
+최수종
+최학선
+최호규
+최재학
+최수종
+최범회
+최영근
+최덕식
+최순근
+최해이
+최영원
+최월문
+최순기
+최정호
+최진상
+최구만
+최순기
+최상홍
+최준술
+최춘분
+최순길
+최대숙
+최태춘
+최순환
+최순녀
+최재옥
+최임순
+최순동
+최순덕
+최창회
+최경국
+최순욱
+최순덕
+최무길
+최종규
+최정갑
+최순동
+최월만
+최운익
+최계환
+최순상
+최종호
+최정덕
+최술권
+최순선
+최종식
+최경석
+최한태
+최순신
+최정갑
+최봉희
+최숙모
+최순연
+최윤호
+최해재
+최 오
+최순연
+최정준
+최필옥
+최복용
+최순욱
+최명진
+최기수
+최영완
+최순이
+최성자
+최영영
+최광조
+최순익
+최 곤
+최분규
+최광권
+최순재
+최점관
+최일창
+최채호
+최순재
+최경천
+최성만
+최권암
+최순출
+최노석
+최병술
+최풍옥
+최순택
+최소석
+최병문
+최동학
+최순호
+최원규
+최태일
+최금삼
+최순화
+최종옥
+최원도
+최정문
+최순희
+최돈학
+최영종
+최종현
+최승락
+최정국
+최영호
+최광현
+최승현
+최상운
+최을봉
+최춘균
+최승환
+최남득
+최점섭
+최말환
+최시영
+최해래
+최광휘
+최황주
+최식태
+최병원
+최영규
+최진호
+최애정
+최윤익
+최혜조
+최성화
+최양자
+최대문
+최형열
+최상관
+최언식
+최미식
+최명연
+최대근
+최여교
+최재담
+최승전
+최상수
+최연구
+최계주
+최막찬
+최문수
+최연홍
+최영영
+최기권
+최순희
+최영곤
+최병선
+최대숙
+최월석
+최영관
+최호복
+최용성
+최근규
+최영국
+최오국
+최해원
+최수이
+최영규
+최 래
+최만호
+최인연
+최영규
+최악갑
+최소규
+최윤수
+최영근
+최일조
+최병원
+최성훈
+최영대
+최양재
+최효호
+최종자
+최영덕
+최기환
+최낙철
+최미자
+최영도
+최소판
+최순향
+최말원
+최영동
+최명자
+최대금
+최덕곤
+최영만
+최영희
+최수구
+최태상
+최영만
+최범규
+최도인
+최운문
+최영만
+최판진
+최정수
+최귀상
+최영석
+최종직
+최종규
+최재택
+최영수
+최 영
+최월도
+최영배
+최영수
+최석철
+최재호
+최형석
+최영숙
+최효석
+최연재
+최성원
+최영순
+최정한
+최만용
+최영기
+최영순
+최진현
+최광숙
+최호점
+최영식
+최명설
+최환순
+최월순
+최영엽
+최성암
+최정식
+최철진
+최영오
+최형근
+최정순
+최이기
+최영의
+최익중
+최삼식
+최윤학
+최영자
+최용삼
+최명렬
+최소숙
+최영자
+최태순
+최수덕
+최분수
+최영재
+최권수
+최세옥
+최태규
+최영주
+최수열
+최진동
+최설호
+최영준
+최경만
+최정경
+최학영
+최영직
+최성경
+최순환
+최찬이
+최영진
+최옥철
+최순호
+최정조
+최영찬
+최창환
+최외준
+최상수
+최영채
+최신정
+최종규
+최동이
+최영철
+최홍호
+최춘희
+최영여
+최영태
+최달자
+최정혁
+최대하
+최영태
+최순욱
+최귀수
+최영영
+최영포
+최홍진
+최무수
+최수호
+최영항
+최창용
+최순덕
+최성창
+최영현
+최천대
+최병채
+최소필
+최영호
+최재택
+최승인
+최재동
+최영효
+최청용
+최희갑
+최명수
+최영희
+최춘규
+최종달
+최순정
+최오근
+최상주
+최금수
+최병열
+최오생
+최병철
+최영철
+최강용
+최옥균
+최인선
+최대애
+최기현
+최옥암
+최용수
+최호용
+최재철
+최외택
+최근동
+최정근
+최연원
+최용권
+최기오
+최해준
+최승홍
+최용규
+최재백
+최정구
+최유동
+최용균
+최수학
+최종례
+최한모
+최용근
+최인숙
+최순근
+최희환
+최용근
+최인옥
+최장진
+최영호
+최용덕
+최덕노
+최운태
+최영운
+최용선
+최상자
+최규환
+최경호
+최용성
+최경용
+최상문
+최성남
+최용수
+최헌희
+최운섭
+최규환
+최용수
+최진문
+최정식
+최순길
+최용승
+최영명
+최진호
+최태상
+최용조
+최중기
+최병환
+최재석
+최용주
+최해덕
+최주갑
+최순덕
+최용준
+최삼조
+최재애
+최재록
+최용태
+최응도
+최달건
+최영훈
+최용택
+최기태
+최영호
+최경용
+최용한
+최점길
+최성용
+최영실
+최용환
+최동오
+최효식
+최현호
+최우권
+최창복
+최달술
+최태선
+최우득
+최용희
+최룡경
+최기희
+최우순
+최준모
+최윤출
+최윤태
+최우영
+최만채
+최재길
+최용천
+최우영
+최호명
+최성원
+최유수
+최운곤
+최상석
+최미열
+최병열
+최운섭
+최재임
+최상희
+최경수
+최운용
+최동범
+최원구
+최해태
+최운원
+최분동
+최분영
+최점길
+최운형
+최병술
+최근곤
+최권하
+최원규
+최종수
+최차완
+최상경
+최원길
+최을창
+최재오
+최옥종
+최원달
+최순연
+최길수
+최영우
+최원덕
+최태근
+최동아
+최팔희
+최원보
+최정곤
+최홍호
+최해구
+최원석
+최영자
+최주영
+최중충
+최원익
+최정득
+최관희
+최노율
+최원일
+최옥복
+최말자
+최기선
+최원조
+최술규
+최점호
+최순진
+최원택
+최기현
+최선금
+최종경
+최원택
+최종식
+최삼훈
+최하중
+최원호
+최효조
+최교포
+최주향
+최원홍
+최분환
+최현순
+최수돌
+최원홍
+최선욱
+최화래
+최남걸
+최월순
+최귀홍
+최기필
+최석철
+최위경
+최성효
+최말악
+최중열
+최윤곤
+최정권
+최신열
+최태섭
+최윤곤
+최기성
+최기준
+최명진
+최윤기
+최옥금
+최진진
+최원수
+최윤남
+최광렬
+최병병
+최한상
+최윤도
+최영석
+최문선
+최원철
+최윤복
+최영윤
+최병윤
+최봉술
+최윤영
+최연수
+최원견
+최옥수
+최윤호
+최성환
+최삼삼
+최종주
+최윤호
+최원대
+최두락
+최상원
+최율태
+최영웅
+최병경
+최주선
+최은경
+최한순
+최옥현
+최재칠
+최은영
+최용태
+최희학
+최수희
+최은종
+최상석
+최인익
+최영조
+최응곤
+최위기
+최상화
+최병헌
+최의권
+최종채
+최상수
+최종수
+최의현
+최점견
+최상환
+최기탁
+최이기
+최하래
+최태열
+최석녀
+최익권
+최연춘
+최원선
+최재순
+최익상
+최화섭
+최상진
+최동현
+최익현
+최성남
+최성진
+최태석
+최인권
+최성한
+최소헌
+최종봉
+최인대
+최진복
+최계범
+최소필
+최인동
+최태록
+최양길
+최호련
+최인수
+최동철
+최만원
+최소열
+최인식
+최상우
+최태근
+최태균
+최인옥
+최명식
+최수춘
+최영만
+최인주
+최제제
+최환철
+최태술
+최인철
+최외수
+최순홍
+최분식
+최인환
+최용노
+최경동
+최운랑
+최일금
+최향주
+최원재
+최두주
+최일동
+최영호
+최원수
+최규태
+최일수
+최종경
+최성화
+최병길
+최일출
+최일교
+최경수
+최 식
+최일호
+최홍미
+최창순
+최동용
+최일환
+최동건
+최칠용
+최준용
+최일환
+최영익
+최봉국
+최기선
+최일훈
+최갑기
+최상묘
+최성일
+최자도
+최경웅
+최재택
+최진경
+최장강
+최선선
+최복난
+최화홍
+최장기
+최광덕
+최춘행
+최재순
+최장수
+최연곤
+최창덕
+최원식
+최장술
+최외환
+최태회
+최용모
+최장준
+최규근
+최창인
+최복화
+최재규
+최학주
+최재호
+최원윤
+최재규
+최영은
+최균수
+최준호
+최재덕
+최명주
+최재성
+최무홍
+최재만
+최인열
+최성윤
+최현환
+최재문
+최영화
+최교심
+최경곤
+최재복
+최경한
+최용학
+최영윤
+최재봉
+최양이
+최성진
+최인달
+최재상
+최동현
+최용식
+최기경
+최재석
+최덕현
+최일화
+최상주
+최재수
+최원배
+최양호
+최영도
+최재숙
+최순현
+최봉옥
+최정석
+최재숙
+최상조
+최선표
+최복하
+최재식
+최영순
+최상완
+최광이
+최재오
+최준수
+최정학
+최강대
+최재우
+최수우
+최복기
+최동순
+최재욱
+최만태
+최 기
+최상조
+최재운
+최용성
+최일성
+최석수
+최재윤
+최삼수
+최재원
+최달정
+최재춘
+최구준
+최대련
+최팔문
+최재출
+최교열
+최삼선
+최외오
+최재학
+최주수
+최혜명
+최병치
+최재헌
+최수수
+최무연
+최성연
+최재호
+최쾌관
+최재희
+최태용
+최재호
+최수진
+최임석
+최창선
+최재호
+최길헌
+최도방
+최필희
+최재호
+최봉암
+최일태
+최명호
+최재환
+최연식
+최호환
+최기주
+최전근
+최옥국
+최인창
+최을열
+최점기
+최용섭
+최의현
+최점식
+최점덕
+최석록
+최정천
+최재기
+최점식
+최오도
+최만길
+최영호
+최점용
+최수명
+최기철
+최태석
+최점준
+최성석
+최규조
+최창조
+최정덕
+최종근
+최승조
+최상출
+최정봉
+최두달
+최점호
+최천식
+최정수
+최종석
+최재열
+최설석
+최정수
+최만생
+최진제
+최호길
+최정수
+최재국
+최광학
+최방규
+최정연
+최용우
+최재준
+최기병
+최정오
+최선호
+최용래
+최진근
+최정우
+최남복
+최철홍
+최원용
+최정윤
+최문수
+최근숙
+최정덕
+최정임
+최덕덕
+최언이
+최해우
+최정종
+최재순
+최봉찬
+최삼섭
+최정준
+최정원
+최을흠
+최중민
+최정철
+최상락
+최주이
+최일순
+최정호
+최종기
+최창식
+최영석
+최정환
+최정호
+최관종
+최병이
+최정환
+최공우
+최병수
+최숙숙
+최정효
+최기원
+최경문
+최장애
+최종갑
+최길미
+최갑로
+최연건
+최종경
+최향기
+최태자
+최병랑
+최종교
+최석준
+최경순
+최종현
+최종국
+최영식
+최기이
+최성부
+최종규
+최경호
+최현범
+최임만
+최종기
+최재우
+최타재
+최윤순
+최종기
+최창수
+최은화
+최칠석
+최종기
+최강구
+최동중
+최헌호
+최종기
+최성훈
+최유화
+최분향
+최종길
+최기해
+최종기
+최원진
+최종길
+최재찬
+최차흠
+최선빈
+최종명
+최태하
+최학숙
+최억분
+최종민
+최기종
+최기조
+최상식
+최종선
+최종준
+최용희
+최영련
+최종성
+최순홍
+최희기
+최부배
+최종숙
+최정환
+최태주
+최대규
+최종식
+최영수
+최병돌
+최광곤
+최종열
+최장복
+최복득
+최분국
+최종운
+최난희
+최정백
+최정철
+최종율
+최상옥
+최춘평
+최말조
+최종일
+최경식
+최상학
+최강기
+최종찬
+최해득
+최광석
+최은봉
+최종태
+최광민
+최용철
+최경암
+최종팔
+최만헌
+최지의
+최학권
+최종현
+최종숙
+최동순
+최중원
+최종현
+최만우
+최봉식
+최영호
+최종호
+최상화
+최규춘
+최태희
+최종홍
+최삼호
+최성문
+최복희
+최종홍
+최기준
+최진태
+최기주
+최종환
+최한고
+최인순
+최석일
+최주환
+최전도
+최진섭
+최경진
+최준복
+최옥식
+최상상
+최이선
+최준생
+최수상
+최은숙
+최윤환
+최준식
+최옥수
+최종섭
+최덕환
+최준식
+최충홍
+최재식
+최혁철
+최중강
+최상분
+최길철
+최인춘
+최중곤
+최삼식
+최상규
+최귀석
+최중권
+최세동
+최분봉
+최미도
+최중기
+최정오
+최정탁
+최재호
+최지훈
+최규연
+최종경
+최장환
+최진국
+최상철
+최현식
+최상병
+최진국
+최인태
+최해재
+최경식
+최진규
+최성곤
+최재매
+최덕성
+최진동
+최만준
+최인계
+최삼분
+최진수
+최명경
+최성환
+최정길
+최진우
+최치도
+최인호
+최병자
+최진운
+최종원
+최덕이
+최임호
+최진원
+최승유
+최용선
+최준교
+최진종
+최만용
+최판회
+최경록
+최진철
+최원환
+최진철
+최삼렬
+최질도
+최장규
+최봉형
+최성태
+최질임
+최병옥
+최창수
+최근익
+최차석
+최은금
+최남영
+최상형
+최차암
+최일순
+최호옥
+최수근
+최차재
+최갑우
+최봉자
+최흥경
+최찬수
+최영협
+최원태
+최재선
+최창규
+최대호
+최행순
+최남희
+최창남
+최동길
+최원훈
+최용규
+최창동
+최헌환
+최성연
+최병석
+최창락
+최종례
+최재일
+최종태
+최창복
+최정수
+최병봉
+최용호
+최창수
+최성수
+최시판
+최인우
+최창숙
+최석연
+최성오
+최규순
+최창지
+최만국
+최문식
+최소견
+최천식
+최광국
+최병철
+최학환
+최천호
+최말희
+최춘환
+최준동
+최철규
+최영석
+최성수
+최순돌
+최철기
+최성근
+최인수
+최태동
+최철동
+최달구
+최만란
+최병래
+최철수
+최중석
+최용기
+최태재
+최철현
+최재숙
+최재정
+최수훈
+최철호
+최원연
+최재출
+최애봉
+최철호
+최재영
+최종돌
+최영기
+최청운
+최윤복
+최수수
+최원수
+최춘돌
+최주태
+최용환
+최지희
+최춘순
+최재임
+최헌구
+최정희
+최춘식
+최창자
+최갑만
+최춘순
+최춘희
+최원록
+최필열
+최무자
+최충국
+최상연
+최영동
+최일현
+최충권
+최학영
+최기원
+최권금
+최충일
+최상훈
+최분현
+최선무
+최쾌동
+최영태
+최순재
+최성용
+최타용
+최동규
+최인자
+최선규
+최태곤
+최정영
+최정환
+최종용
+최태곤
+최상식
+최용호
+최태택
+최태권
+최재생
+최정향
+최점호
+최태규
+최원형
+최태수
+최경수
+최태기
+최칠수
+최전봉
+최창호
+최태기
+최광조
+최천호
+최태운
+최태남
+최선용
+최재달
+최용근
+최태남
+최규달
+최재선
+최성종
+최태봉
+최월출
+최종상
+최영목
+최태수
+최윤석
+최기해
+최용영
+최태수
+최홍희
+최병자
+최수천
+최태수
+최희태
+최영주
+최위현
+최태수
+최종복
+최준혜
+최진자
+최태수
+최원덕
+최상권
+최강갑
+최태숙
+최례원
+최세근
+최장재
+최태술
+최상욱
+최신수
+최미아
+최태열
+최무록
+최종호
+최은식
+최태영
+최준길
+최명태
+최일기
+최태영
+최상기
+최동종
+최호욱
+최태자
+최정환
+최경수
+최석규
+최태종
+최소도
+최철교
+최재래
+최태종
+최영웅
+최장상
+최대기
+최태진
+최대복
+최일규
+최성태
+최태호
+최경숙
+최인균
+최용운
+최태화
+최태연
+최순호
+최영대
+최태흥
+최한우
+최태석
+최성술
+최판군
+최태식
+최정호
+최대영
+최판남
+최삼철
+최삼수
+최조종
+최판동
+최광언
+최순석
+최수식
+최판봉
+최우환
+최종식
+최노호
+최판암
+최석도
+최성만
+최병옥
+최판열
+최정호
+최원연
+최용인
+최판용
+최윤재
+최달휴
+최상오
+최판태
+최병순
+최태식
+최수일
+최판호
+최숙율
+최홍곤
+최성숙
+최팔생
+최병숙
+최구기
+최규갑
+최팔수
+최정석
+최복교
+최선명
+최팽주
+최창오
+최정철
+최상열
+최풍웅
+최성막
+최태수
+최상도
+최필동
+최외대
+최길수
+최인윤
+최필분
+최가원
+최세경
+최진인
+최필순
+최희희
+최장조
+최정조
+최필식
+최원원
+최연용
+최교표
+최하영
+최동기
+최승준
+최근곤
+최하자
+최용배
+최진훈
+최양기
+최학도
+최달학
+최양호
+최현환
+최학석
+최갑호
+최 동
+최보기
+최학식
+최춘선
+최병수
+최승석
+최한성
+최세복
+최주희
+최사성
+최한수
+최찬순
+최영란
+최황봉
+최한수
+최병자
+최희완
+최필달
+최한주
+최미규
+최인곤
+최우경
+최한천
+최춘신
+최환권
+최병만
+최한철
+최재숙
+최창진
+최선철
+최한호
+최태문
+최쌍규
+최인길
+최해곤
+최대양
+최수학
+최상자
+최해숙
+최상홍
+최오식
+최현룡
+최해술
+최태규
+최종덕
+최민석
+최해식
+최규순
+최정수
+최후영
+최해주
+최원환
+최호도
+최명호
+최해천
+최춘환
+최미영
+최용주
+최해천
+최종식
+최수호
+최근식
+최해철
+최무식
+최길택
+최사도
+최해환
+최태형
+최만옥
+최정태
+최혁기
+최길호
+최용순
+최도찬
+최현성
+최점연
+최양공
+최인용
+최형곤
+최삼문
+최덕권
+최진혁
+최형관
+최성미
+최상열
+최상숙
+최형로
+최주호
+최한길
+최태우
+최형석
+최인옥
+최경우
+최낙구
+최호겁
+최진수
+최은만
+최경미
+최호득
+최옥석
+최용인
+최성직
+최호선
+최기천
+최대자
+최석호
+최호진
+최영분
+최영희
+최철지
+최홍곤
+최판철
+최병화
+최영규
+최홍석
+최해연
+최원숙
+최태순
+최홍석
+최재규
+최오환
+최영년
+최홍식
+최삼철
+최상호
+최덕태
+최홍식
+최희록
+최미수
+최수정
+최홍식
+최정락
+최효평
+최용동
+최홍익
+최재욱
+최호남
+최근모
+최홍집
+최춘찬
+최선구
+최상조
+최화숙
+최태훈
+최점익
+최문배
+최환동
+최정희
+최애환
+최갑태
+최효곤
+최지기
+최을한
+최막섭
+최효동
+최한호
+최상추
+최규길
+최흥기
+최기선
+최재환
+최의자
+추미숙
+추갑권
+추삼옥
+추기록
+추연현
+추두주
+추재윤
+추상효
+추영호
+추상권
+추윤영
+추현한
+추인수
+추용자
+추재환
+추정숙
+추정옥
+추태진
+추이선
+추상진
+추태호
+추철억
+추금호
+추병택
+탁미옥
+탁정천
+탁철기
+탁영고
+탁재동
+탁갑희
+탁재열
+탁권생
+탁종희
+탁창권
+탁영남
+탁미득
+탁희곤
+탁재남
+탁기재
+탁진권
+편석진
+편덕정
+편원양
+편숙옥
+표선희
+표희수
+표윤환
+표봉기
+표세문
+표상춘
+표인식
+표준조
+표순기
+표월경
+표영인
+표윤석
+표옥현
+표차연
+표경정
+표삼갑
+표원섭
+표기철
+표병섭
+표창영
+표재수
+표재순
+표재암
+표국조
+표점원
+표수곤
+표광선
+표호근
+피동석
+피강환
+피영호
+피윤홍
+하갑식
+하홍주
+하황희
+하영희
+하경만
+하봉연
+하윤수
+하차노
+하경조
+하수희
+하종택
+하영덕
+하경희
+하기주
+하태수
+하경만
+하계선
+하광호
+하종만
+하병우
+하구록
+하증익
+하성조
+하미생
+하기주
+하상연
+하광석
+하영기
+하길수
+하심재
+하재석
+하대수
+하남순
+하상원
+하쾌세
+하기태
+하대호
+하옥열
+하재작
+하정이
+하동찬
+하태동
+하재호
+하원욱
+하만태
+하민석
+하내성
+하영용
+하명동
+하수환
+하재일
+하진진
+하무순
+하병병
+하경돌
+하영상
+하미경
+하수태
+하종세
+하재호
+하미정
+하병성
+하동수
+하상호
+하병관
+하성탁
+하진보
+하윤덕
+하병원
+하상병
+하태욱
+하재철
+하봉갑
+하광식
+하세철
+하정달
+하분조
+하재봉
+하석종
+하말윤
+하삼금
+하만회
+하영오
+하경난
+하상식
+하종수
+하석자
+하용호
+하석근
+하규복
+하헌수
+하해윤
+하석수
+하성수
+하종호
+하희세
+하세진
+하종기
+하화철
+하윤호
+하순남
+하성환
+하양순
+하달호
+하순숙
+하윤권
+하인자
+하상호
+하순헌
+하병금
+하성암
+하우곤
+하술성
+하수웅
+하태교
+하윤구
+하심홍
+하연춘
+하 규
+하창욱
+하연희
+하복근
+하원오
+하건열
+하영태
+하일노
+하석흠
+하미식
+하외수
+하경향
+하경우
+하동출
+하용수
+하영득
+하태갑
+하우성
+하윤이
+하정열
+하승균
+하석봉
+하인수
+하용섭
+하일삼
+하승현
+하인옥
+하정일
+하보동
+하신호
+하임순
+하재남
+하손경
+하주택
+하장연
+하달조
+하병자
+하수문
+하재순
+하노주
+하정규
+하인회
+하재주
+하봉모
+하영선
+하덕상
+하점순
+하수진
+하해길
+하점홍
+하점옥
+하익열
+하용환
+하수수
+하정연
+하정선
+하승선
+하상이
+하정열
+하칠선
+하용주
+하영열
+하정희
+하경택
+하규춘
+하윤진
+하종배
+하성희
+하종환
+하정섭
+하종연
+하상흠
+하순기
+하혁수
+하창부
+하응찬
+하병환
+하정호
+하춘룡
+하영동
+하종석
+하재경
+하타용
+하득하
+하영모
+하재학
+하태갑
+하옥원
+하영연
+하공영
+하태구
+하종석
+하종배
+하재연
+하태환
+하래훈
+하두명
+하윤치
+하학술
+하순기
+하춘문
+하하호
+하학용
+하무진
+하종상
+하대조
+하해명
+하영복
+하분호
+하종현
+하해명
+하한연
+하백수
+하순현
+하화순
+하현희
+하국생
+하창자
+하후조
+하홍근
+하인용
+하상창
+한 길
+한해봉
+한달근
+한미영
+한 옥
+한재열
+한원수
+한남석
+한갑수
+한태룡
+한위옥
+한복식
+한갑순
+한상악
+한명진
+한광수
+한강제
+한규칠
+한석용
+한복연
+한경애
+한호대
+한성아
+한홍학
+한경이
+한판석
+한태술
+한방근
+한경철
+한윤이
+한중덕
+한홍원
+한곤석
+한경삼
+한순한
+한영현
+한과희
+한춘조
+한븝숙
+한형이
+한관현
+한분춘
+한청식
+한덕환
+한구일
+한석재
+한성근
+한향규
+한국식
+한기호
+한판만
+한철출
+한금섭
+한재현
+한병목
+한차미
+한기철
+한재호
+한기선
+한순섭
+한기학
+한병목
+한일조
+한영희
+한길웅
+한찬석
+한진효
+한인호
+한노수
+한성강
+한영순
+한태균
+한담옥
+한점덕
+한일종
+한순덕
+한대근
+한삼홍
+한정득
+한성규
+한대성
+한현옥
+한일구
+한진도
+한대영
+한수세
+한영영
+한은복
+한덕교
+한혜현
+한영수
+한삼도
+한덕윤
+한질정
+한수오
+한태갑
+한도치
+한숙묵
+한정섭
+한태호
+한동권
+한명수
+한성원
+한인현
+한동수
+한창근
+한종문
+한우득
+한동양
+한수석
+한경선
+한성순
+한두교
+한삼석
+한차택
+한덕조
+한두현
+한일원
+한기길
+한경구
+한만위
+한응호
+한인식
+한무만
+한만호
+한오열
+한인효
+한수은
+한맹교
+한규덕
+한충영
+한동동
+한명갑
+한재국
+한재택
+한기기
+한명수
+한태기
+한춘현
+한수수
+한명순
+한용암
+한종섭
+한태덕
+한무교
+한학수
+한중채
+한석문
+한무현
+한난만
+한진창
+한경룡
+한문교
+한준윤
+한병호
+한주규
+한민자
+한춘광
+한해홍
+한종옥
+한병권
+한삼희
+한준섭
+한옥주
+한병원
+한태수
+한현재
+한용상
+한병철
+한하우
+한시교
+한삼명
+한병한
+한쌍호
+한판현
+한순성
+한복란
+한정경
+한몽기
+한종덕
+한복수
+한태근
+한영완
+한영순
+한복수
+한대태
+한경이
+한학석
+한봉석
+한은환
+한동수
+한황수
+한봉선
+한성석
+한태태
+한미일
+한봉수
+한용우
+한영민
+한무이
+한봉희
+한병운
+한용호
+한재호
+한부교
+한판수
+한낙완
+한태갑
+한사일
+한학문
+한영화
+한규선
+한삼순
+한정이
+한광동
+한경환
+한삼율
+한상준
+한석출
+한문호
+한상대
+한원진
+한승호
+한홍열
+한상모
+한덕우
+한상희
+한종기
+한상봉
+한원호
+한진목
+한창환
+한상석
+한주식
+한영학
+한호열
+한상선
+한광화
+한귀모
+한종육
+한상설
+한갑갑
+한성규
+한효춘
+한상수
+한인일
+한삼기
+한용원
+한상수
+한점미
+한유용
+한해우
+한상우
+한남현
+한상조
+한원태
+한상욱
+한태만
+한만수
+한원학
+한상학
+한찬기
+한왕오
+한일우
+한상학
+한태술
+한양수
+한호보
+한상호
+한해영
+한조훈
+한무용
+한생기
+한상호
+한용규
+한상록
+한석록
+한학덕
+한남엽
+한용인
+한석범
+한춘봉
+한성섭
+한명덕
+한석식
+한종영
+한창곤
+한학표
+한석원
+한동소
+한길석
+한용년
+한선주
+한기임
+한언호
+한윤희
+한성교
+한현환
+한석기
+한우화
+한성구
+한택균
+한용기
+한기식
+한성구
+한혜석
+한문조
+한수용
+한성국
+한희덕
+한병철
+한명순
+한세영
+한종호
+한철철
+한봉숙
+한세용
+한병구
+한용곤
+한분학
+한소순
+한영식
+한용갑
+한철자
+한수상
+한춘기
+한웅흠
+한영식
+한수완
+한재근
+한만진
+한연하
+한순원
+한태남
+한한호
+한익보
+한순찬
+한정은
+한승율
+한종호
+한승세
+한규식
+한재연
+한필호
+한승인
+한의조
+한태길
+한규철
+한승호
+한희식
+한상수
+한송선
+한열찬
+한쌍호
+한용영
+한윤해
+한영대
+한승덕
+한상례
+한영묵
+한영모
+한희태
+한무열
+한복조
+한영섭
+한갑현
+한창림
+한원숙
+한영수
+한동돌
+한진창
+한용란
+한영옥
+한경덕
+한분혁
+한외복
+한영철
+한대헌
+한기석
+한상영
+한영태
+한인수
+한경숙
+한영희
+한영현
+한병수
+한순순
+한성현
+한영희
+한정수
+한소오
+한종태
+한용수
+한영호
+한원문
+한응홍
+한우술
+한상옥
+한강향
+한형동
+한우찬
+한필용
+한임수
+한승학
+한원교
+한상출
+한한진
+한용식
+한원수
+한유희
+한형식
+한한술
+한유교
+한상성
+한태구
+한증영
+한육지
+한금상
+한경태
+한종갑
+한윤현
+한정출
+한규섭
+한동규
+한이술
+한주연
+한미규
+한주재
+한인교
+한규학
+한진용
+한재우
+한인숙
+한재휴
+한채완
+한영규
+한일석
+한승화
+한태임
+한인호
+한장학
+한원석
+한정국
+한우태
+한장현
+한충순
+한중중
+한봉규
+한장현
+한병용
+한의수
+한인경
+한재권
+한판규
+한교욱
+한상원
+한재수
+한종남
+한언수
+한희택
+한정교
+한삼태
+한순경
+한억준
+한정순
+한상상
+한종태
+한상하
+한정진
+한우부
+한병자
+한영조
+한정호
+한동만
+한춘용
+한경태
+한종수
+한월경
+한재자
+한원규
+한종수
+한성호
+한쌍환
+한재환
+한종열
+한양준
+한종수
+한말국
+한종채
+한양섭
+한옥호
+한을오
+한준교
+한석석
+한영현
+한재학
+한준수
+한성주
+한상기
+한춘길
+한중식
+한남희
+한영성
+한술호
+한중악
+한기조
+한양실
+한시철
+한지원
+한병경
+한웅길
+한필해
+한진교
+한용문
+한양수
+한인자
+한진애
+한종현
+한수진
+한윤익
+한창근
+한근수
+한명근
+한기한
+한창석
+한형오
+한순만
+한동동
+한창수
+한필용
+한재길
+한동호
+한철수
+한석홍
+한춘모
+한상영
+한칠용
+한석립
+한국우
+한상홍
+한태남
+한달일
+한기성
+한성환
+한태순
+한태하
+한종호
+한영실
+한태출
+한일찬
+한용숙
+한재현
+한판달
+한말주
+한정헌
+한찬근
+한현수
+한태조
+한계의
+한갑석
+한현정
+한환구
+한춘학
+한용측
+한형수
+한쌍술
+한수석
+한쌍덕
+한호열
+한수대
+한용식
+한미경
+한홍석
+한세순
+한월권
+한선수
+한효균
+한달순
+한광식
+한정호
+한효동
+한정호
+한성우
+한종태
+한흥수
+한기문
+한희분
+한수석
+한희경
+한한현
+한근재
+한광현
+함계술
+함진란
+함경호
+함연봉
+함병원
+함종자
+함두술
+함병동
+함수태
+함성근
+함구규
+함순운
+함영조
+함태순
+함영옥
+함원식
+함우암
+함상혜
+함동순
+함정연
+함원환
+함해홍
+함정옥
+함인목
+함정웅
+함상재
+함기근
+함근숙
+함환종
+함상용
+함기원
+함선학
+허 광
+허현수
+허정용
+허종달
+허 동
+허만봉
+허주동
+허승석
+허 석
+허의술
+허성원
+허귀원
+허 순
+허상호
+허상자
+허진현
+허 완
+허병준
+허순재
+허호선
+허 원
+허정대
+허태화
+허중갑
+허 유
+허정영
+허정림
+허덕수
+허 작
+허동제
+허태대
+허주화
+허경출
+허홍열
+허삼환
+허정순
+허광수
+허숙갑
+허정훈
+허재문
+허권찬
+허판수
+허춘수
+허석출
+허규태
+허장수
+허술용
+허옥철
+허기식
+허필열
+허만희
+허선기
+허기철
+허희덕
+허준호
+허영항
+허난연
+허동원
+허재식
+허윤식
+허남일
+허종창
+허병석
+허봉국
+허동량
+허영태
+허달철
+허이준
+허동량
+허선암
+허낙희
+허춘수
+허동량
+허호묘
+허명건
+허성원
+허동록
+허영석
+허찬달
+허복식
+허동성
+허학섭
+허간섭
+허귀모
+허동수
+허철성
+허정덕
+허영준
+허동진
+허장기
+허규자
+허덕용
+허만구
+허현식
+허규락
+허수교
+허만상
+허규철
+허정익
+허종현
+허만선
+허달연
+허외기
+허태태
+허만업
+허명진
+허원구
+허형섭
+허만열
+허상진
+허영엽
+허연경
+허만영
+허장래
+허병권
+허춘구
+허만옥
+허일연
+허상환
+허상수
+허만우
+허재선
+허재홍
+허병훈
+허만정
+허장우
+허경만
+허만근
+허만조
+허수상
+허옥재
+허봉관
+허만철
+허정태
+허정임
+허종열
+허만희
+허영옥
+허성용
+허광국
+허만희
+허경현
+허상노
+허홍웅
+허문규
+허동훈
+허용규
+허창수
+허봉순
+허광기
+허소열
+허충학
+허삼수
+허근대
+허수용
+허창호
+허상기
+허정우
+허석용
+허정원
+허상숙
+허영설
+허광덕
+허갑성
+허상용
+허각수
+허남권
+허순용
+허상철
+허치석
+허광웅
+허정연
+허상출
+허시정
+허석민
+허상욱
+허석구
+허묘교
+허수춘
+허칠철
+허석구
+허무찬
+허말갑
+허영수
+허선출
+허영휘
+허기섭
+허분열
+허성용
+허상권
+허동우
+허재근
+허수양
+허의야
+허도경
+허문석
+허순양
+허동만
+허창해
+허정현
+허순이
+허경헌
+허 귀
+허삼한
+허승조
+허영길
+허태정
+허제오
+허양학
+허만홍
+허기오
+허병환
+허연구
+허상식
+허수환
+허성석
+허영석
+허현희
+허태득
+허경연
+허영원
+허만진
+허팔문
+허병열
+허영택
+허원훈
+허영술
+허무열
+허영호
+허한태
+허정자
+허문춘
+허옥선
+허신영
+허세대
+허상정
+허용권
+허경연
+허경도
+허종재
+허용한
+허순탁
+허석하
+허병안
+허운용
+허경균
+허철곤
+허수선
+허웅섭
+허상철
+허동화
+허과순
+허위구
+허원수
+허규출
+허중래
+허이선
+허병식
+허점자
+허홍득
+허이호
+허일해
+허정덕
+허진율
+허인규
+허홍현
+허근열
+허병강
+허인중
+허병순
+허기국
+허우수
+허인출
+허오식
+허춘환
+허병양
+허임양
+허정선
+허명용
+허태영
+허재명
+허충종
+허재배
+허태휴
+허재원
+허재생
+허돌우
+허성필
+허재필
+허덕오
+허택열
+허점순
+허재훈
+허종연
+허완선
+허이용
+허점돌
+허순노
+허용길
+허순명
+허점암
+허원섭
+허광식
+허종권
+허정식
+허재영
+허무수
+허성조
+허정아
+허성일
+허한규
+허대정
+허정우
+허길철
+허세수
+허우례
+허종래
+허소헌
+허태원
+허진춘
+허주호
+허정도
+허외모
+허 자
+허준
+허문
+허화
+허장
+허진석
+허상우
+허옥길
+허성구
+허진욱
+허기철
+허현옥
+허규조
+허춘우
+허영철
+허재필
+허영남
+허춘재
+허영선
+허충돌
+허무규
+허태상
+허기현
+허명석
+허용순
+허태수
+허갑숙
+허조태
+허판철
+허태수
+허경일
+허오훈
+허을창
+허태진
+허규생
+허윤분
+허한열
+허판성
+허증철
+허용택
+허상이
+허판수
+허성술
+허창순
+허근수
+허필조
+허탁철
+허도경
+허운출
+허현숙
+허위도
+허도동
+허외길
+허홍규
+허태웅
+허정태
+허정연
+허휘웅
+허옥중
+허종출
+허태주
+현금순
+현정석
+현두원
+현상순
+현동열
+현근권
+현규홍
+현원탁
+현문식
+현태영
+현태석
+현기곤
+현석원
+현소선
+현춘대
+현춘영
+현수용
+현문환
+현근곤
+현한제
+현순희
+현재교
+현상원
+현재한
+현용식
+현태모
+현주현
+현규식
+현창환
+현정술
+현헌현
+현충영
+현희훈
+현금수
+현광호
+현태자
+형남진
+형상현
+형순현
+형판숙
+홍 헌
+홍재규
+홍주근
+홍승호
+홍갑순
+홍세수
+홍명홍
+홍병갑
+홍경도
+홍수수
+홍지민
+홍정호
+홍경호
+홍정욱
+홍인원
+홍동덕
+홍계연
+홍병순
+홍우용
+홍기량
+홍광식
+홍태태
+홍인용
+홍현식
+홍기문
+홍선자
+홍영중
+홍용기
+홍대순
+홍보지
+홍귀동
+홍남관
+홍도생
+홍진선
+홍만지
+홍광란
+홍동기
+홍태섭
+홍금호
+홍희출
+홍동석
+홍윤조
+홍원만
+홍석달
+홍두식
+홍치진
+홍태식
+홍원래
+홍두진
+홍춘근
+홍경진
+홍대수
+홍명순
+홍달석
+홍판희
+홍재수
+홍무웅
+홍피이
+홍재봉
+홍환수
+홍미화
+홍청명
+홍영석
+홍상식
+홍병숙
+홍오성
+홍무봉
+홍상수
+홍복실
+홍준순
+홍만기
+홍상정
+홍부기
+홍종립
+홍성철
+홍윤기
+홍분남
+홍충균
+홍남택
+홍민진
+홍삼기
+홍용석
+홍윤준
+홍종출
+홍상기
+홍말주
+홍수홍
+홍종례
+홍상조
+홍팔호
+홍병찬
+홍광우
+홍상희
+홍영순
+홍영순
+홍윤도
+홍석봉
+홍성순
+홍영곤
+홍병규
+홍석윤
+홍태석
+홍병자
+홍현규
+홍석진
+홍귀자
+홍광필
+홍노점
+홍석환
+홍장재
+홍상복
+홍영임
+홍선균
+홍용복
+홍정희
+홍점이
+홍선모
+홍순조
+홍삼원
+홍선철
+홍선표
+홍재환
+홍상권
+홍동택
+홍선희
+홍구근
+홍정갑
+홍순해
+홍성관
+홍봉연
+홍용조
+홍종동
+홍성근
+홍동호
+홍교섭
+홍세철
+홍성기
+홍사율
+홍영숙
+홍해길
+홍성민
+홍병희
+홍상암
+홍강현
+홍성수
+홍덕병
+홍두덕
+홍만호
+홍성열
+홍정곤
+홍재자
+홍미배
+홍성원
+홍봉호
+홍회현
+홍규석
+홍성윤
+홍옥성
+홍성용
+홍옥철
+홍성태
+홍범수
+홍필상
+홍선학
+홍성태
+홍덕용
+홍점진
+홍순규
+홍성태
+홍상시
+홍우웅
+홍용용
+홍성환
+홍영호
+홍정길
+홍정화
+홍성효
+홍기규
+홍석호
+홍은식
+홍세기
+홍시술
+홍명석
+홍윤권
+홍수덕
+홍태식
+홍명만
+홍성상
+홍순교
+홍세호
+홍광선
+홍재도
+홍순호
+홍화연
+홍남서
+홍정봉
+홍승일
+홍용선
+홍재호
+홍종한
+홍영구
+홍연무
+홍태조
+홍웅록
+홍영권
+홍무돌
+홍옥출
+홍호암
+홍영애
+홍임이
+홍영길
+홍인원
+홍영우
+홍태연
+홍수호
+홍규명
+홍오곤
+홍성선
+홍상도
+홍판환
+홍옥표
+홍분동
+홍용환
+홍용훈
+홍용학
+홍순남
+홍영진
+홍규태
+홍우석
+홍성현
+홍봉오
+홍헌주
+홍운희
+홍점우
+홍수근
+홍재래
+홍원전
+홍혜행
+홍 학
+홍재록
+홍원표
+홍기수
+홍명용
+홍 우
+홍의식
+홍승방
+홍정보
+홍종남
+홍재기
+홍만영
+홍우환
+홍동재
+홍재기
+홍송용
+홍영암
+홍택헌
+홍재남
+홍재이
+홍타재
+홍남덕
+홍재모
+홍해자
+홍희측
+홍승달
+홍정수
+홍상천
+홍원희
+홍근택
+홍정엽
+홍순열
+홍진조
+홍병식
+홍정웅
+홍영춘
+홍병호
+홍도성
+홍정표
+홍점근
+홍호기
+홍갑웅
+홍종윤
+홍동희
+홍호길
+홍경자
+홍주난
+홍전석
+홍진환
+홍용빈
+홍지운
+홍석용
+홍태형
+홍현홍
+홍진곤
+홍상구
+홍세선
+홍재형
+홍진년
+홍재준
+홍주열
+홍동화
+홍진문
+홍병철
+홍기순
+홍영선
+홍진석
+홍순윤
+홍정문
+홍기식
+홍진성
+홍대록
+홍문자
+홍순희
+홍진성
+홍춘곤
+홍정규
+홍갑이
+홍진수
+홍철열
+홍해한
+홍진숙
+홍진욱
+홍영식
+홍정택
+홍하경
+홍진철
+홍영규
+홍소만
+홍병영
+홍진평
+홍재원
+홍민화
+홍병교
+홍창기
+홍용한
+홍종환
+홍인식
+홍창기
+홍차수
+홍경수
+홍청호
+홍채희
+홍영한
+홍옥옥
+홍민도
+홍철기
+홍상석
+홍중기
+홍선수
+홍철기
+홍안현
+홍경도
+홍두봉
+홍철재
+홍연의
+홍삼경
+홍광윤
+홍태기
+홍신숙
+홍태석
+홍경덕
+홍태암
+홍종용
+홍재열
+홍만후
+홍태희
+홍복조
+홍한재
+홍외식
+홍한기
+홍개기
+홍운익
+홍영훈
+홍항길
+홍칠용
+홍영일
+홍용목
+홍해성
+홍형수
+홍성화
+홍용희
+홍현진
+홍을민
+홍영만
+홍태석
+홍현철
+홍동규
+홍원구
+홍석하
+홍현필
+홍필평
+홍정석
+홍수천
+홍황기
+홍효동
+홍정술
+홍분열
+황건오
+황선한
+황대호
+황복현
+황경숙
+황기복
+황점재
+황종록
+황경순
+황영욱
+황택환
+황원돌
+황경술
+황암명
+황태실
+황영근
+황경운
+황명우
+황석호
+황덕환
+황경임
+황백성
+황희원
+황일상
+황경한
+황선덕
+황상조
+황용길
+황광연
+황의완
+황해기
+황말희
+황광용
+황태도
+황춘환
+황영도
+황교일
+황종복
+황진환
+황근수
+황교장
+황경영
+황종교
+황형덕
+황국향
+황종조
+황영임
+황점련
+황규미
+황재천
+황기옥
+황수현
+황규완
+황영복
+황영호
+황경용
+황규전
+황추채
+황영순
+황재선
+황금돌
+황일식
+황병식
+황현갑
+황금성
+황기이
+황현희
+황용용
+황기도
+황수자
+황월자
+황금희
+황기석
+황정원
+황병자
+황삼자
+황기호
+황한화
+황학준
+황옥제
+황길현
+황분용
+황삼이
+황광만
+황남이
+황주조
+황상섭
+황신석
+황달금
+황수근
+황기렬
+황현원
+황대선
+황경종
+황연순
+황종원
+황대철
+황근숙
+황옥수
+황동규
+황덕성
+황시계
+황정태
+황원태
+황동석
+황명수
+황정갑
+황연춘
+황동식
+황영훈
+황오기
+황용철
+황두철
+황귀조
+황병섭
+황우대
+황래성
+황병식
+황희수
+황희수
+황룡기
+황달주
+황명만
+황정수
+황말수
+황숙환
+황희헌
+황태암
+황말순
+황길두
+황효득
+황학희
+황명규
+황성호
+황창암
+황영국
+황명순
+황향술
+황영철
+황시일
+황병구
+황규석
+황철수
+황성호
+황병일
+황삼한
+황태선
+황정희
+황보옥수
+황창봉영
+황경석재
+황훈숙병
+황분주
+황무호
+황우규
+황수록
+황상규
+황천고
+황태진
+황수일
+황상임
+황성용
+황명채
+황의준
+황상표
+황선우
+황용도
+황경금
+황선규
+황화수
+황광주
+황정수
+황선근
+황석희
+황성용
+황진철
+황선도
+황용재
+황수만
+황외양
+황선동
+황호숙
+황원금
+황봉수
+황선두
+황명근
+황태석
+황구환
+황선용
+황덕용
+황윤열
+황문석
+황선우
+황진근
+황준철
+황종규
+황선욱
+황순선
+황인흠
+황윤범
+황선욱
+황영옥
+황은철
+황홍자
+황선웅
+황유순
+황연한
+황재오
+황선출
+황소환
+황무기
+황태진
+황선홍
+황세선
+황영향
+황봉순
+황성규
+황정란
+황인실
+황옥욱
+황성근
+황재양
+황말주
+황용종
+황성태
+황노당
+황창술
+황재원
+황소호
+황동태
+황근길
+황복용
+황수근
+황점행
+황차봉
+황정우
+황수찬
+황태택
+황상열
+황윤단
+황숙자
+황영호
+황성재
+황영규
+황순규
+황현용
+황정용
+황용수
+황순조
+황창각
+황창준
+황영갑
+황시철
+황옥숙
+황선교
+황현기
+황영국
+황종모
+황영관
+황옥구
+황영국
+황용륜
+황정환
+황지상
+황영규
+황원룡
+황길희
+황정인
+황영길
+황진근
+황성운
+황상선
+황영문
+황무환
+황윤준
+황옥정
+황영선
+황태당
+황화종
+황재임
+황영숙
+황홍욱
+황정기
+황금숙
+황영순
+황명헌
+황옥순
+황종영
+황영재
+황재원
+황원기
+황지석
+황영팔
+황영식
+황영길
+황용호
+황영호
+황창달
+황성은
+황삼호
+황영환
+황명호
+황흥철
+황교분
+황오진
+황홍차
+황달규
+황일경
+황옥희
+황수석
+황주식
+황운동
+황용대
+황상자
+황칠동
+황성철
+황용장
+황병세
+황의순
+황명배
+황용학
+황소인
+황병돌
+황삼운
+황원이
+황영희
+황금표
+황병석
+황원준
+황광석
+황정학
+황휘호
+황원학
+황영곤
+황정덕
+황계재
+황윤석
+황용오
+황병봉
+황무열
+황을술
+황천수
+황진환
+황영호
+황응복
+황춘희
+황수수
+황동근
+황의영
+황영선
+황재대
+황성록
+황의출
+황석숙
+황병일
+황종천
+황의훈
+황재한
+황우호
+황창현
+황이철
+황태덕
+황상균
+황규식
+황인덕
+황운출
+황정율
+황영순
+황인봉
+황이숙
+황병연
+황재권
+황인출
+황승학
+황삼희
+황대태
+황일구
+황갑웅
+황한적
+황철기
+황일선
+황규식
+황윤영
+황의환
+황일출
+황소선
+황무범
+황영표
+황재복
+황복용
+황영덕
+황종식
+황재수
+황경진
+황일조
+황세용
+황재용
+황주교
+황부숙
+황무철
+황재의
+황동정
+황 식
+황동수
+황재철
+황임남
+황상한
+황달문
+황재학
+황동순
+황헌술
+황학남
+황재호
+황을랑
+황태금
+황웅현
+황정곤
+황기수
+황종선
+황평택
+황정봉
+황재제
+황태순
+황인중
+황정수
+황우우
+황경국
+황황철
+황정수
+황월달
+황문조
+황종희
+황정환
+황효홍
+황배환
+황희만
+황종구
+황완근
+황해만
+황재현
+황종덕
+황삼석
+황연상
+황인련
+황종석
+황수관
+황태수
+황의용
+황종윤
+황영근
+황창경
+황문술
+황종일
+황규아
+황영언
+황 동
+황종철
+황원동
+황금수
+황정문
+황지출
+황제웅
+황현춘
+황재영
+황진호
+황진기
+황세현
+황길진
+황진환
+황영철
+황효배
+황차우
+황창규
+황태균
+황운구
+황경세
+황창수
+황청성
+황기암
+황규숙
+황창익
+황종식
+황이우
+황대출
+황천규
+황용국
+황병춘
+황영숙
+황철갑
+황영수
+황태선
+황증환
+황철도
+황철우
+황성태
+황종숙
+황청순
+황용용
+황민구
+황순수
+황태금
+황창애
+황호기
+황천구
+황태옥
+황태수
+황춘희
+황원조
+황태원
+황장영
+황송식
+황태태
+황필선
+황영열
+황경도
+황용동
+황필성
+황충환
+황영현
+황희헌
+황필수
+황재자
+황성규
+황윤조
+황한규
+황순권
+황관용
+황교희
+황혁주
+황병출
+황현갑
+황달이
+황현구
+황인선
+황낙수
+황정현
+황효영
+황수호
+황말택
+황영규
+황희자
+황태홍
+황상식
+황재수
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt
new file mode 100644
index 0000000..d724386
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt
@@ -0,0 +1,7611 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+Aachen, Hans von
+Aalto, Alvar
+Abakanowicz, Magdalena
+Abaquesne, Masséot
+Abbasi, Riza-i
+Abbey, Edwin Austin
+Abbott, Berenice
+Abbott, Lemuel Francis
+A'Becket, Maria
+Abel de Pujol
+Abercrombie, Gertrude
+Abeyta, Tony
+Abildgaard, Nicolai
+Abrahams, Ivor
+Abrahamson, Mark
+Abramowitz, Albert
+Accardi, Carla
+Acconci, Vito
+Achenbach, Andreas
+Achenbach, Oswald
+Achilles Painter, The
+Acord, James
+Adam, Lambert-Sigisbert
+Adam, Robert
+Adams, Ansel
+Adams, Herbert
+Adams, John Ottis
+Adams, John Wolcott
+Adams, Robert
+Adams, Wayman
+Adderson, Walter
+Adeshina, Agbonbiofe
+Adomeit, George
+Adshead, Mary
+Aelst, Pieter Coecke van
+Aelst, Willem van
+Aertsen, Pieter
+Affecter, The
+Agam, Yaacov
+Agar, Eileen
+Agasse, Jacques-Laurent
+Agger, Knud
+Agostino dei Musi
+Agostino di Duccio
+Agostino di Giovanni
+Agostino Veneziano
+Agrasot y Juan, Joaquín
+Airò, Mario
+Aivazovsky, Ivan
+Ajmone, Giuseppe
+Akagawa, Kinji
+Akeley, Carl Ethan
+Akers, Benjamin Paul
+Albani, Francesco
+Albarelli, Jacopo
+Alberghetti I, Giovanni
+Albers, Anni
+Albers, Josef
+Alberti, Cherubino
+Alberti, Giovanni
+Alberti, Leon Baptista
+Albertinelli, Mariotto
+Albright, Ivan
+Albrizio, Conrad
+Alcain Partearroyo, Alfredo
+Alcolea, Carlos García
+Aldegrever, Heinrich
+Alechinsky, Pierre
+Alen, William Van
+Alexander, Francis
+Alexander, John White
+Alexander, William
+Alfano, Carlo
+Alfaro, Andreu
+Algardi, Alessandro
+Ali ibn Muhhamad
+Ali, Mihr
+Alikatuktuk, Thomasie
+Alinari, Fratelli
+Alinari, Giuseppe
+Alken Sr., Samuel
+Alken, Henry Thomas
+Allan, David
+Allan, William
+Allegrain, Gabriel
+Allen, Anne
+Allen, Anne Huntington
+Allen, Douglas
+Allen, Greta
+Allen, Marion Boyd
+Allen, Mary Cecil
+Allen, Terry
+Allingham, Helen
+Allington, Edward
+Allori, Alessandro
+Allori, Cristofano
+Allston, Washington
+Alma-Tadema, Laura
+Alma-Tadema, Sir Lawrence
+Almeida Júnior, José Ferraz de
+Alpern, Rami
+Als, Peder
+Alsloot, Denys van
+Alt, Jakob
+Alt, Otmar
+Altdorfer, Albrecht
+Altichiero
+Altson, Aby
+Alva de la Canal, Ramón
+Alvarez Bravo, Manuel
+Alvarez, Mabel
+Amadeo, Giovanni Antonio
+Aman-Jean, Edmond-François
+Amantea, Nicholas
+Amaral, Antônio Henrique
+Amaral, Tarsila do
+Amasis Painter, The
+Amaury-Duval, Eugène-Emmanuel
+Amberger, Christoph
+Amenoff, Gregory
+Amiconi, Giacomo
+Amittu, Davidialuk Alaska
+Amman, Jost
+Ammanati, Bartolommeo
+An He
+Ancher, Anna
+Ancher, Michael
+Anchi, Kaigetsudo
+Anderegg, Wesley
+Andersen, Mogens
+Anderson, Carlos
+Anderson, Gordon
+Anderson, J.
+Anderson, Ruth A.
+Anderson, Sophie
+Anderson, Stanley
+Andokides
+Andre, Carl
+Andrea da Firenze
+Andrea del Castagno
+Andrea del Sarto
+Andrea di Bartolo
+Andrea, Zoan
+Andreani, Andre
+Andreotti, Libero
+Andrés de Nájera
+Andreson, Carlos
+Andrews, Benny
+Andrews, Sybil
+Andrieu, Pierre
+Andrus, Barbara
+Angel, Abraham
+Angeli, Giuseppe
+Angeli, Heinrich von
+Angelico, Fra
+Angellis, Peter
+Anglada-Camarasa, Hermenegildo
+Anguiano Valadez, Raúl
+Anguier, François
+Anguier, Michel
+Anguissola, Lucia
+Anguissola, Sofonisba
+Anker, Albert
+Annesley, David
+Anquetin, Louis
+Anraadt, Pieter van
+Anselmi, Michelangelo
+Anselmo da Campione
+Anselmo, Giovanni
+Anshutz, Thomas
+Antelami, Benedetto
+Antico
+Antigna, Alexandre
+Antimenes Painter
+Antolínez, José Claudio
+Antonakos, Stephen
+Antonello da Messina
+Antonello de Saliba
+Antonio da Fabriano
+Antreasian, Garo Zareh
+Antropov, Aleksei
+Antúnez, Nemesio
+Anuszkiewicz, Richard
+Aono, Kristine Yuki
+Aparicio, José
+Aponovich, James
+Appel, Karel
+Appian, Adolphe
+Appiani, Andrea
+Applebroog, Ida
+Apt the Elder, Ulrich
+Aragon, Jose
+Arai, Junichi
+Arakawa, Shusaku
+Araldi, Alessandro
+Arbus, Diane
+Archer, James
+Archipenko, Alexander
+Archuleta, Felipe
+Arcimboldo, Giuseppe
+Arden, Roy
+Ardon, Mordecai
+Arellano, Juan de
+Arentsz., Arent
+Argunov, Ivan Petrovich
+Arikha, Avigdor
+Arisman, Marshall
+Armajani, Siah
+Arman
+Armfield, Maxwell
+Armitage, Edward
+Armitage, Kenneth
+Arms, John Taylor
+Armstead, Henry Hugh
+Armstrong, David Maitland
+Armstrong, Ian
+Armstrong, John
+Armstrong, William
+Arnald, George
+Arneson, Robert
+Arnold, Aden
+Arnoldi, Alberto
+Arnolfo di Cambio
+Arnould, Jean
+Arp, Jean
+Arroyo, Eduardo
+Art and Language
+Artaud, William
+Artschwager, Richard
+Arvilland
+Asam, Egid Quirin
+Asam, Kosmas Damian
+Ash, Sam
+Asher, Michael
+Ashevak, Kenojuak
+Ashevak, Tommy
+Ashoona, Kaka
+Ashoona, Kiawak
+Ashoona, Pitseolak
+Ashton, Julian
+Asins Rodriguez, Elena
+Aspertini, Amico
+Aspetti, Tiziano
+Assael, Steven
+Asselyn, Jan
+Assereto, Gioacchino
+Assler, Federico
+Ast, Balthasar van der
+Asteas
+Astruc, Zacharie
+Atchealak, Davie
+Atget, Eugène
+Atkinson, John Augustus
+Atkinson, W.E.
+Atkison, George A.
+Atl, Dr.
+Attavante Degli Attavanti
+Audubon, John James
+Audubon, John Woodhouse
+Auerbach, Frank
+Auerbach-Levy, William
+Auguin, Louis-Augustin
+Auguste, Robert-Joseph
+Ault, George
+Aumonier, James
+Austin, Darrel
+Autio, Lela
+Autio, Rudy
+Aved, Jacques-André-Joseph
+Avedon, Richard
+Avelli, Francesco Xanto
+Avercamp, Hendrick
+Avery, Milton
+Awalt, Elizabeth
+Aylesford, Heneage Finch, Fifth Earl of
+Aylesford, Heneage Finch, Fourth Earl of
+Ay-O
+Ayrton, Michael
+Azaceta, Luis Cruz
+Baburen, Dirck van
+Bacchiacca, Francesco
+Bacciarelli, Marcello
+Bachar, Joseph
+Bacher, Otto Henry
+Bachrodt, Sarah
+Baciccio, Il
+Backer, Jacob Adriaensz.
+Backhuysen, Ludolf
+Bacon, Francis
+Bacon, Henry
+Bacon, John Henry F.
+Bacon, Peggy
+Bacon, Sir Nathaniel
+Bada Shanren
+Badalocchio, Sisto
+Badger, Joseph
+Baechler, Donald
+Baeder, John
+Baen, Jan de
+Baer, George
+Bagg, Henry Howard
+Baglione, Giovanni
+Bagnoli, Marco
+Baiitsu, Yamamoto
+Bailey, Roger
+Bailey, William
+Baillairgé, François
+Bailly, David
+Baizerman, Saul
+Baker, William Bliss
+Bakst, Leon
+Baldessari, John
+Baldovinetti, Alessio
+Baldridge, Cyrus LeRoy
+Baldung Grien, Hans
+Baldwin, Douglas
+Balen, Hendrick van
+Balestra, Antonio
+Ball, Alice Worthington
+Ball, Thomas
+Balla, Giacomo
+Balling, Ole Peter Hansen
+Ballotta, Pete
+Balmes, José
+Balson, Ralph
+Balthus
+Baltimore Painter, The
+Balzac, Alain
+Balzac, Edme-Pierre
+Bama, James
+Bambaia
+Bandeira, Antônio
+Bandinelli, Baccio
+Bandini, Giovanni
+Banks, Mel
+Bannerman, Frances M. Jones
+Bannister, Edward M.
+Bapst, Evrard
+Baptista, Marciano
+Barabás, Miklós
+Barak, William
+Baranek, Frida
+Baranoff-Rossine, Wladimir
+Barbe
+Barberi, Giuseppe
+Barbet, Jean
+Barbour, Carl
+Barchus, Eliza Rosanna
+Bard, James
+Bard, John
+Barenger, James
+Bargue, Charles
+Barisani, Renato
+Barisano da Trani
+Barker of Bath, Thomas
+Barker, Albert Winslow
+Barker, Clive
+Barker, Margaret
+Barker, Wright
+Barlach, Ernst
+Barlow, Francis
+Barna da Siena
+Barnard, Rev. William Henry
+Barnes, Ernie
+Barnet, Will
+Barney, Matthew
+Barnsley, J.M.
+Barocci, Federico
+Barradas, Rafael
+Barraud, Henry
+Barraud, William
+Barret Jr., George
+Barret Sr., George
+Barrett, Bill
+Barrias, Louis-Ernest
+Barrios, Gracia
+Barron, Hugh
+Barron, Ron
+Barrow, Joseph Charles
+Barry, Anne Meredith
+Barry, James
+Barry, William Gerard
+Barsotti, Hércules
+Barthel, Melchiorre
+Bartholdi, Frédéric-Auguste
+Bartholome
+Bartle, Sara Norwood
+Bartlett, Bo
+Bartlett, Jennifer
+Bartolini, Lorenzo
+Bartolo di Fredi
+Bartolomeo da Brescia
+Bartolomeo di Giovanni
+Bartolomeo Veneto
+Bartolommeo, Fra
+Bartolozzi, Francesco
+Bary, Hendrik
+Barye, Antoine-Louis
+Basaiti, Marco
+Basaldella, Mirko
+Basan, Pierre François
+Baschenis, Evaristo
+Baselitz, Georg
+Bashkirtseff, Maria
+Basire, James
+Baskin, Leonard
+Basquiat, Jean-Michel
+Bassano, Francesco
+Bassano, Jacopo
+Bassano, Leandro
+Bassen, Bartholomeus van
+Bastiani, Lazzaro
+Bastianini, Giovanni
+Bastien-Lepage, Jules
+Bateman 1842-1922, Robert
+Bateman, James
+Bateman, Robert
+Bates, David
+Bates, Harry
+Bates, Maxwell
+Batoni, Pompeo
+Baudouin, Pierre-Antoine
+Baudry, Paul
+Baugin, Lubin
+Baum, Charles
+Bauman, Leila T.
+Baumann, Gustave
+Baumann, Karl
+Baumeister, Willi
+Baumgarten, Lothar
+Baumgartner, Peter
+Bawden, Edward
+Baxter, George
+Baxter, Thomas Tennant
+Bayeu y Subías, Francisco
+Bayeu, Ramon
+Bazicaluva, Ercole
+Bazille, Frédéric
+Baziotes, William
+Bazzaro, Ernesto
+Beach, Thomas
+Beal, Gifford
+Beal, Jack
+Beale, Mary
+Beall-Smith, Lawrence
+Beals, Jesse Tarbox
+Beam, Carl
+Beam, Mark
+Bean, Caroline Van Hook
+Beard, Adelia Belle
+Beard, Richard
+Beard, William Holbrook
+Bearden, Romare
+Beardsley Limner, The
+Beardsley, Aubrey
+Beardy, Jackson
+Beare, George
+Beasley, Bruce
+Beato, Felice A.
+Beatty, J.W.
+Beaumont, Sir George Howland
+Beauneveu, André
+Beaux, Cecilia
+Beccafumi, Domenico
+Becher, Bernhard
+Becher, Hilla
+Bechtel, Merlin
+Bechtle, Robert
+Beck, Leonhard
+Becker, Ferdinand
+Becker, Fred
+Beckett, Clarice
+Beckett, Francis A.
+Beck-Friedman, Tova
+Beckmann, Max
+Beckwith, James Carroll
+Bedford, Francis
+Bedia, José
+Bedwash, Richard
+Beechey, Sir William
+Beem, Olive
+Beerbohm, Sir Max
+Beers, Julie Hart
+Beerstraten, Jan Abrahamsz.
+Beert the Elder, Osias
+Bega, Cornelis
+Begay, Harrison
+Begeyn, Abraham
+Beham, Barthel
+Beham, Hans Sebald
+Behles, Edmund
+Behnes, William
+Behnke, Leigh
+Belbello da Pavia
+Bell, Cecil C.
+Bell, Charles
+Bell, Edward A.
+Bell, George
+Bell, Harriet
+Bell, John Zephaniah
+Bell, Kevin
+Bell, Larry
+Bell, Peter
+Bell, Trevor
+Bell, Vanessa
+Bellangé, Hippolyte
+Bellange, Jacques
+Bellano, Bartolomeo
+Belle, Alexis Simon
+Bellechose, Henri
+Bellegambe, Jean
+Bellette, Jean
+Belli, Valerio
+Bellingham-Smith, Elinor
+Bellini, Gentile
+Bellini, Giovanni
+Bellini, Jacopo
+Bellmer, Hans
+Belloguet, A.
+Bellotto, Bernardo
+Bellows, Albert Fitch
+Bellows, George Wesley
+Bell-Smith, F.M.
+Bellucci, Antonio
+Benaglio, Francesco
+Benazech, Peter Paul
+Benbridge, Henry
+Bendz, Wilhelm
+Bendzsa, Sylvia
+Benedetto da Maiano
+Benedetto da Rovezzano
+Benglis, Lynda
+Benn, Ben
+Bennett, John
+Bennett, Rainey
+Bennett, William James
+Benney, Robert
+Benois, Aleksandr
+Benois, Nadia
+Benoist, Marie-Guillemine
+Benson, Ambrosius
+Benson, Frank Weston
+Benson, Leslie Langille
+Bentham, Douglas Wayne
+Benton, Fletcher
+Benton, Thomas Hart
+Benvenuto di Giovanni
+Benziger, August
+Benzoni, Giovanni Maria
+Béraud, Jean
+Berchem, Claes
+Berchem, Nicolaes
+Berckheyde, Gerrit Adriaensz.
+Berckheyde, Job
+Berdann, Elizabeth
+Berg, Adrian
+Berger, Jacques
+Berghash, Mark
+Berghe, Christoffel van den
+Bergmüller, Johann Georg
+Bergner, Yosl
+Bergognone
+Berkeley, Rev. C.J.R.
+Berkman, Christine
+Berlant, Tony
+Berlin Painter, The
+Berlinghieri, Bonaventura
+Berman, Eugene
+Bermejo, Bartolomé
+Bernard, Emile
+Bernardi, Giovanni
+Bernat, Martin
+Berninghaus, Oscar Edmund
+Bernini, Gianlorenzo
+Bernini, Pietro
+Bernstein, Theresa Ferber
+Béroud, Louis
+Berruguete, Alonso
+Berruguete, Pedro
+Berry, David
+Bershad, Helen
+Bertin, Édouard
+Bertoldo di Giovanni
+Bertrand, Ray
+Bertrand, Vincent
+Bertucci, Giovanni Battista
+Besnard, Albert
+Best Maugard, Adolfo
+Bettelheim, Jolan Gross
+Bettera, Bartolomeo
+Bettes, John
+Betts, Louis
+Beuckelaer, Joachim
+Beug, Lorne
+Beuys, Joseph
+Bevan, Robert
+Bevan, Tony
+Beyer, Jan de
+Beyeren, Abraham Hendrickz. van
+Biagio d'Antonio da Firenze
+Bianchi, Domenico
+Biard, Pierre
+Bibiena, Ferdinando Galli
+Bibiena, Francesco Galli
+Bibiena, Giuseppe Galli
+Bicknell, Frank
+Biddle, George
+Biduino
+Biederman, Charles
+Biegas, Boleslas
+Biennais, Martin-Guillaume
+Bierstadt, Albert
+Bigarelli, Guido
+Biggers, John
+Biggerstaff, Myra
+Bigot, Trophime
+Bigum, Martin
+Bijlert, Jan van
+Bilinska, Anna
+Bilivert, Giovanni
+Bille, Ejler
+Binck, Jacob
+Bingham, George Caleb
+Binnie, Paul
+Birch, Charles Bell
+Birch, Thomas
+Birch, William Russell
+Birley, Sir Oswald Hornby Joseph
+Birnbaum, Dara
+Birolli, Renato
+Bischoff, Elmer
+Bischoff, Franz
+Bishop, Isabel
+Bison, Giuseppe Bernardino
+Bisschop, Cornelis
+Bissier, Julius
+Bissière, Roger
+Bissolo, Pier Francesco
+Bistolfi, Leonardo
+Bitner, Rhona
+Blaas, Eugene de
+Black, Helene
+Black, Olive Parker
+Blackadder, Elizabeth
+Blackburn, Ed
+Blackburn, Joseph
+Blackman, Charles
+Blackwell, Tom
+Blackwood, David
+Bladen, Ronald
+Blagg, Dennis
+Blair-Leighton, Edmund
+Blais, Normand
+Blake, Jim
+Blake, Peter
+Blake, William
+Blakelock, Marian
+Blakelock, Ralph Albert
+Blamey, Norman
+Blampied, Edmund
+Blanchard, Jacques
+Blanchard, María
+Blanche, Jacques-Emile
+Blanchet, Louis-Gabriel
+Bland, Beatrice
+Blarenberghe, Louis Nicolas van
+Blashfield, Edwin Howland
+Blauvelt, Charles F.
+Blechen, Carl
+Bleckner, Ross
+Blery, Eugene
+Bliss, Douglas Percy
+Bloch, Albert
+Bloch, Lucienne
+Bloch, Martin
+Block, Benjamin
+Bloemaert, Abraham
+Bloemen, Jan Frans van
+Blondel, Merry-Joseph
+Bloom, Barbara
+Blow, Sandra
+Blue Eagle, Acee
+Bluemner, Oscar
+Bluhm, Norman
+Bluhm, Oscar
+Blum, Robert Frederick
+Blume, Peter
+Blumenschein, Ernest Leonard
+Blythe, David Gilmour
+Boccaccino, Boccaccio
+Boccioni, Umberto
+Bochner, Mel
+Böcklin, Arnold
+Bockstorffer, Christoffel
+Bodini, Floriano
+Bodmer, Karl
+Boeckhorst, Johann
+Boehm, Sir Joseph Edgar
+Boehme, Karl
+Boel, Pieter
+Boetti, Alighiero e
+Boggs, Frank M.
+Boghossian, Skunder
+Bogle, John
+Bohl, Walter E.
+Bohrod, Aaron
+Boilly, Louis-Léopold
+Boisseau, Alfred
+Boisselier, Félix
+Boissieu, Jean-Jacques de
+Bol, Ferdinand
+Bol, Hans
+Boldini, Giovanni
+Bolduque, Pedro de
+Bolotowsky, Ilya
+Boltanski, Christian
+Boltraffio, Giovanni Antonio
+Bomberg, David
+Bon, Bartolomeo
+Bon, Giovanni
+Bonanno da Pisa
+Bonasone, Giulio di Antonio
+Bonazza, Antonio
+Boncinelli, Evaristo
+Bond, Charles V.
+Bond, Marion
+Bone, Henry
+Bone, Sir Muirhead
+Bone, Stephen
+Bonheur, Auguste
+Bonheur, Rosa
+Bonington, Richard Parkes
+Bonino da Campione
+Bonnard, Pierre
+Bonnat, Léon
+Bonnaud, Pierre
+Bonnefond, Jean-Claude
+Bonnell, William
+Bonner, Jonathan
+Bonnet, Louis-Marin
+Bonsignori, Francesco
+Bontecou, Lee
+Bonvin, François
+Booth, Cameron
+Borcht, Hendrik van der
+Borcht, Pieter Van Der
+Bordone, Paris
+Bordoni, Francesco
+Borduas, Paul-Émile
+Boread Painter, The
+Borein, Edward
+Bores Lopez, Francisco
+Borg, Carl Oscar
+Borges, Pedro Alexandrino
+Borget, Auguste
+Borgianni, Orazio
+Borglum, Solon H.
+Borgoña, Juan de
+Borofsky, Jonathan
+Borovikovskii, Vladimir Lukich
+Borrassá, Luís
+Borregaard, Eduard
+Borro, Luigi
+Borromini, Francesco
+Bosboom, Johannes
+Bosch, Hieronymus
+Boscoli, Andrea
+Boshier, Derek
+Bosio, François-Joseph
+Boss, Homer
+Bosschaert the Elder, Ambrosius
+Bossche, Aert van den
+Bosse, Abraham
+Botero, Fernando
+Both, Andries
+Both, Jan Dirksz
+Botke, Jessie Arms
+Botticelli, Sandro
+Botticini, Francesco
+Bouchardon, Edmé
+Bouché, Louis
+Boucher, François
+Boudewyns, Adriaen Frans
+Boudin, Eugène
+Bough, Samuel
+Boughton, George Henry
+Bouguereau, Adolphe William
+Bouguereau, Elizabeth Gardner
+Boulanger, Gustave
+Boulle, André-Charles
+Boullée, Étienne-Louis
+Boulogne, Valentin de
+Bourdelle, Emile Antoine
+Bourdon, Sébastien
+Bourgeois, Louise
+Bourke-White, Margaret
+Bourne, James
+Boursse, Esaias
+Boussard, Dana
+Boutet de Monvel, Louis-Maurice
+Boutibonne, Charles Edward
+Bouts the Elder, Dieric
+Bouts the Younger, Dieric
+Bouts, Aelbrecht
+Bouvard, Antoine
+Bouvier, Laurent Joseph Daniel
+Bowden, Harry
+Bowden, Paul
+Bowdoin, Harriette
+Bowen, Ashley
+Bowler, Henry Alexander
+Bowling, Frank
+Bowling, Tom
+Bowman, Roger
+Boxall, Sir William
+Boyce, George Price
+Boyd Jr., Arthur
+Boyd Sr., Arthur
+Boyd, Emma Minnie
+Boyer, Bob
+Boyle, Eleanor Vere
+Boyle, Mark
+Boyne, John
+Boys, Thomas Shotter
+Boziot, François-Joseph
+Brabazon, Hercules Brabazon
+Braccesco, Carlo di
+Bracci, Pietro
+Brack, John
+Brackman, Robert
+Bracquemond, Félix
+Bracquemond, Marie
+Bradford, William
+Bradley, John
+Bradley, Martin
+Bradshaw, Dove
+Bradshaw, J.W.
+Brady, Carolyn
+Brady, Mathew
+Braekeleer, Henri De
+Brailes, William de
+Brakhage, Stan
+Bramante, Donato
+Bramantino
+Bramer, Leonaert
+Bramley, Frank
+Brancusi, Constantin
+Brandani, Federico
+Brandard, Robert
+Brandi, Giacinto
+Brandt, Bill
+Brangwyn, Sir Frank William
+Brants, Wally
+Braque, Georges
+Brascassat, Jacques-Raymond
+Brassaï
+Bratby, John
+Braun, Maurice
+Bravo, Cecco
+Bravo, Claudio
+Bravo, Lola Alvarez
+Bray, Alan
+Bray, Jan de
+Brébiette, Pierre
+Brecht, George
+Breck, John Leslie
+Breckenridge, Hugh Henry
+Breda, Carl Fredrik von
+Bredin, Rae Sloan
+Breenbergh, Bartholomeus
+Bregno, Andrea
+Bregno, Antonio
+Brekelenkam, Quirijn van
+Brenet, Nicolas-Guy
+Bresdin, Rodolphe
+Breton, André
+Breton, Jules
+Brett, John
+Breu the Elder, Jörg
+Breu the Younger, Jörg
+Brewster Jr., John
+Brewster, Anna Richards
+Brewtnall, Edward Frederick
+Bricher, Alfred Thompson
+Bridges, Fidelia
+Bridges, John
+Bridgewood, J.C.
+Brigden, F.H.
+Briggs, Henry Perronet
+Bright, Henry
+Bril, Paul
+Brion, Gustave
+Briosco, Benedetto
+Briscoe, Arthur
+Bristol, John Bunyan
+Briullov, Karl
+Broc, Jean
+Brock, Sir Thomas
+Brockhurst, Gerald Leslie
+Brodsky, Alexander
+Broederlam, Melchior
+Broer, Roger
+Broggini, Luigi
+Broghammer, Joseph
+Brogi, Giacomo
+Brompton, Richard
+Bronzino, Agnolo
+Brooke, William Henry
+Brooker, Bertram
+Brooking, Charles
+Brooks, Cora Smalley
+Brooks, Erica
+Brooks, Henry Jamyn
+Brooks, James
+Brooks, Nicholas Alden
+Brosamer, Hans
+Brouet, Auguste
+Brough, Robert
+Brouwer, Adriaen
+Brown, Bob
+Brown, Christopher
+Brown, Deborah
+Brown, Douglas
+Brown, Ford Madox
+Brown, Frederick James
+Brown, George Loring
+Brown, J. Appleton
+Brown, Joan
+Brown, John George
+Brown, John-Lewis
+Brown, Lucy Madox
+Brown, Mae Bennett
+Brown, Mather
+Brown, Mike
+Brown, Roger
+Brown, W.H.
+Brown, William Mason
+Browne, Archibald
+Browne, Belmore
+Browne, Byron
+Browne, Hablot Knight
+Browne, Henriette
+Browne, Margaret Fitzhugh
+Browne, Matilda
+Browne, Syd
+Brownell, Franklin
+Browning, Colleen
+Browning, Robert Barrett
+Brownscombe, Jennie Augusta
+Bruce, Patrick Henry
+Bruce, William Blair
+Bruch, Klaus von
+Bruegel the Elder, Jan
+Bruegel the Elder, Pieter
+Bruegel the Younger, Jan
+Bruegel the Younger, Pieter
+Bruestle, George M.
+Brunelleschi, Filippo
+Brus, Günter
+Brusasorci
+Brush, George deForest
+Bruya, Marilyn
+Bruyn the Elder, Barthel
+Bruyn the Younger, Bartel
+Bryans, Lina
+Bryant, Charles
+Brygos Painter, The
+Brymner, William
+Brzezinski, Emilie Benes
+Bucci Painter, The
+Buchheit, Manfred
+Buchser, Frank
+Buck, John
+Buckley, James
+Buckley, Stephen
+Bucklow, Christopher
+Budington, Jonathan
+Buffet, Bernard
+Bugiardini, Giuliano
+Buhler, Robert
+Buhot, Félix-Hilaire
+Buland, Eugène
+Bulfinch, Charles
+Buller, Cecil Tremayne
+Bunbury, Charles
+Bunbury, Henry William
+Bunce, Kate Elizabeth
+Bunce, Louis
+Bundy, Edgar
+Bundy, Horace
+Bunker, Dennis Miller
+Bunn, Ken
+Bunny, Rupert
+Bunrin, Shiokawa
+Bunrô
+Bunse, Donald
+Burbank, Elbridge Ayer
+Burch, Hendrick van der
+Burchard, Pablo
+Burchartz, Max
+Burchfield, Charles
+Burck, Jacob
+Burden, Chris
+Buren, Daniel
+Burgess, Joseph E.
+Burgess, Lowry
+Burgess, Ruth Payne
+Burgkmair the Elder, Hans
+Burn, Henry
+Burn, Ian
+Burnand, Eugène
+Burne-Jones, Edward
+Burnell, Benjamin
+Burnet, James
+Burnet, John
+Burney, Edward Francis
+Burpee, William Partridge
+Burr, George Elbert
+Burri, Alberto
+Burrill, Edward
+Burroughs, Bryson
+Burroughs, Margaret
+Burrowes, Thomas
+Burton, Frederic William
+Burton, Judith
+Burton, Scott
+Burton, William Shakespeare
+Bush, Charles
+Bush, Jack
+Bushnell, John
+Bussola, Dionigi
+Buster, Kendall
+Buswell, Richard S.
+Butcher, Enid
+Butinone, Bernardino Jacopi
+Butler, Elizabeth
+Butler, James
+Butler, Mary
+Butler, Reg
+Butler, Samuel
+Butler, Theodore
+Butt, Gail
+Butterfield, Deborah
+Buttersworth, James E.
+Buttersworth, Thomas
+Butts, Freeman
+Buvelot, Louis
+Buytewech, Willem
+Byars, James Lee
+Bygrave, William
+Bywaters, Jerry
+Cabanel, Alexandre
+Cabot, Hugh
+Cabrera, Rosario
+Caccini, Giovanni
+Cadmus, Paul
+Cadwell, Mike
+Caffa, Melchiore
+Caffieri, Jean-Jacques
+Cagnacci, Guido
+Cahill, William Vincent
+Cahn, Miriam
+Cai Dizhi
+Cai Liang
+Caillebotte, Gustave
+Cairo, Francesco del
+Cajés, Eugenio
+Calame, Alexandre
+Calandrucci, Giacinto
+Calcagno, Lawrence
+Calcar, Johan Stephen von
+Calder, Alexander
+Calderon, William Frank
+Calixto de Jesus, Benedito
+Call I, Jan van
+Call, H.
+Callahan, Harry
+Callcott, Sir Augustus Wall
+Callery, Mary
+Callet, Antoine François
+Callot, Jacques
+Callow, William
+Calò, Aldo
+Calraet, Abraham van
+Cals, Adolphe-Felix
+Calthrop, Claude
+Calvaert, Denys
+Calvert, Charles
+Calvert, Edward
+Calzolari, Pier Paolo
+Cambiaso, Luca
+Camelio
+Camelote
+Cameron, Eric
+Cameron, James
+Cameron, John
+Cameron, Julia Margaret
+Cameron, Sir David
+Cammillieri, Nicholas S.
+Cammillieri, Nicolas
+Camp, Jeffery
+Campagna, Girolamo
+Campagnola, Domenico
+Campagnola, Giulio
+Campaña, Pedro de
+Campbell, Isabella Frowe
+Campbell, James
+Campbell, Jim
+Campen, Jacob van
+Campendonk, Heinrich
+Camphuysen, Govert Dircksz
+Campi, Giulio
+Campi, Vincenzo
+Campigli, Massimo
+Campin, Robert
+Canaletto
+Candid, Pieter
+Caneja Betegon, Juan
+Cannon, T.C.
+Cano Manilla, Ramón
+Cano, Alonso
+Canogar, Rafael
+Canova, Antonio
+Cantagallina, Remigio
+Cantarini, Simone
+Cantatore, Domenico
+Canuti, Domenico Maria
+Capa, Robert
+Capanna, Puccio
+Caple, Spencer
+Caponigro, Paul
+Caporali, Bartolommeo
+Cappelle, Jan van de
+Cappello, Carmelo
+Capps, Kenneth
+Capriolo, Domenico
+Carabin, Rupert
+Caracciolo, Giovanni Battista
+Caradosso
+Caraffe, Armand-Charles
+Caraglio, Gian Jacopo
+Caravaggio
+Caravaggio, Polidoro da
+Carbone, Giovanni Bernado
+Carducci, Bartolommeo
+Carducci, Vincenzo
+Cariani, Giovanni
+Carles, Arthur B.
+Carleton, Anne
+Carlevaris, Luca
+Carline, George
+Carline, Richard
+Carlisle, George Howard, Ninth Earl of
+Carloni, Carlo
+Carlsen, Emil
+Carlson, John Fabian
+Carlson, Ken
+Carlu, Jean
+Carmichael, Franklin
+Carmontelle, Louis de
+Carnevale, Fra
+Carnicero, Antonio
+Caro, Sir Anthony
+Carolus-Duran
+Caron, Antoine
+Caron, Paul
+Carpaccio, Vittore
+Carpeaux, Jean-Baptiste
+Carpenter Painter, The
+Carpenter, Ed
+Carpenter, Francis Bicknell
+Carpioni, Giulio
+Carr, Emily
+Carr, Samuel S.
+Carrà, Carlo
+Carracci, Agostino
+Carracci, Annibale
+Carracci, Lodovico
+Carreño de Miranda, Juan
+Carreño, Mario
+Carriera, Rosalba
+Carrier-Belleuse, Albert-Ernest
+Carrière, Eugène
+Carrington, Dora
+Carrington, Leonora
+Cars, Laurent
+Carse, J.H.
+Carten, Virginia
+Carter, Hugh
+Carter, Keith
+Carter, Lee
+Cartier-Bresson, Henri
+Cartwright, Isabel Branson
+Carvalho, Flávio de
+Carwitham, Thomas
+Casanova, Giovanni
+Casas, Juan Vila
+Cascella, Andrea
+Casilear, John William
+Cassandre
+Cassara, Frank
+Cassatt, Mary
+Casselli Jr., Henry C.
+Cassidy, Shaun
+Cassinari, Bruno
+Casson, A.J.
+Castagneto, João Batista
+Castagnola, Gabriele
+Castellani, Enrico
+Castellanos, Julio
+Castelli, Alfio
+Castello, Bernardo
+Castello, Valerio
+Castellón, Federico
+Castiglione, Giovanni Benedetto
+Castiglione, Giuseppe
+Castillo y Saavedra, Antonio
+Castillo, José del
+Castle, James
+Castle, Wendell
+Catesby, Mark
+Catlett, Elizabeth
+Catlin, George
+Cats, Jacob
+Cattaneo, Danese
+Cattelan, Maurizio
+Caulfield, Patrick
+Cavael, Rolf
+Cavalcanti, Emiliano Di
+Cavallaro, Cosimo
+Cavallini, Pietro
+Cavallino, Bernardo
+Cavedone, Giacomo
+Cayot, Claude-Augustin
+Cazin, Jean-Charles
+Cazin, Marie
+Cecioni, Adriano
+Cederström, Gustaf
+Cellini, Benvenuto
+Celmins, Vija
+Ceracchi, Giuseppe
+Cerquozzi, Michelangelo
+César
+Cesare da Sesto
+Cesari, Giuseppe
+Cesark, Mark
+Cézanne, Paul
+Chabot, Lucille
+Chadwick, Lynn
+Chadwick, William
+Chagall, Marc
+Chahine, Edgar
+Challener, F.S.
+Chalon, Alfred
+Chalon, Henry Bernard
+Chamberlain, John
+Chamberlain, Samuel
+Chambers, Thomas
+Champaigne, Jean-Baptiste de
+Champaigne, Philippe de
+Chan Hongshou
+Chandler, Joseph Goodhue
+Chandler, Winthrop
+Chandor, Douglas
+Chang Chi-shu
+Chang Dai-chien
+Chang Jin
+Chang Shuhong
+Chang-bae, Hwang
+Chang-sop, Chung
+Chantrey, Sir Francis Legatt
+Chao Shao'ang
+Chaperon, Nicolas
+Chapin, James
+Chapin, Lucy Grosvenor
+Chaplin, Mary Millicent
+Chapman, Conrad Wise
+Chapman, John Gadsby
+Chappel, Alonzo
+Chapu, Henri Michel Antoine
+Chardin, Jean-Baptiste-Siméon
+Charles, James
+Charles, Michael Ray
+Charlesworth, Sarah
+Charlet, Nicolas-Toussaint
+Charlier, Jacques
+Charlton, Alan
+Charton de Treville, Ernesto
+Chase, Adelaide Cole
+Chase, Richard
+Chase, William Merritt
+Chassériau, Théodore
+Chatelain, Jean Baptiste Claude
+Chatham, Russell
+Chatterton, Clarence K.
+Chaudet, Antoine-Denis
+Chauvin, Pierre-Athanase
+Chávez Morado, José
+Chavez, Edward Arcenio
+Cheffetz, Asa
+Chen Banding
+Chen Chi
+Chen Danqing
+Chen Fushan
+Chen Hengque
+Chen Kuan
+Chen Ping
+Chen Qiucao
+Chen Rong
+Chen Tiegeng
+Chen Yanning
+Chen Yanqiao
+Chen Yifei
+Chen Yusheng
+Chen Zhifo
+Chen Ziyi
+Cheng Conglin
+Cheng Shifa
+Cheng Zhang
+Cherchi, Sandro
+Chereshnovsky, Mykhailo
+Chéret, Jules
+Cherico, Francesco Antonio del
+Chevalier, Nicolas
+Chia, Sandro
+Chiari, Giuseppi
+Chicago Painter, The
+Chicago, Judy
+Chifflart, François-Nicolas
+Chihuly, Dale
+Chi'i Pai-shih
+Childe, James Warren
+Chillida, Eduardo
+Chimenti, Jacopo
+Chimera Painter, The
+Chin, Mel
+Chinard, Joseph
+Chinnery, George
+Chipman
+Chirino López, Martín
+Chobunsai Eishi
+Chodowiecki, Daniel Nikolaus
+Choensai Eishin
+Choi Sokhwan
+Choki, Eishosai
+Chokosai Eisho
+Chong-yung, Kim
+Chou, Shen
+Christansen, Hans
+Christenberry, William
+Christensen, C.C.A.
+Christensen, Dan
+Christiansen, Rasmus
+Christie, Robert Duncan
+Christinek, Carl-Ludwig
+Christ-Janer, Albert William
+Christo
+Christophe, Ernest
+Christus, Petrus
+Christy, John
+Chung Sook, Kim
+Church, Frederic Edwin
+Church, Frederick Stuart
+Church, Michael
+Churchill, Winston Spencer
+Churchyard, Thomas
+Cienfuegos Browne, Gonzalo
+Cigoli, Lodovico
+Cimabue
+Ciminaghi, Virginio
+Cincinato, Francesco Romulo
+Cioli, Valerio
+Cipriani, Giovanni Battista
+Cirino, Antonio
+Cisneros, Domingo
+Citron, Minna Wright
+Ciurlionis, Mikalojus
+Civerchio, Vincenzo
+Civitale, Matteo
+Civitico, Bruno
+Claeissens I, Pieter
+Claesz, Pieter
+Clague, Richard
+Clairin, Georges
+Clairmont, Corwin
+Clapp, William Henry
+Clará, José
+Clark, Alson Skinner
+Clark, Claude
+Clark, Floyd
+Clark, Joseph
+Clark, Kate Freeman
+Clark, Larry
+Clark, Paraskeva
+Clark, Thomas
+Clark, Tim
+Clarke Hall, Lady Edna
+Clarke, Geoffrey
+Clarke, John Clem
+Claude Lorrain
+Claudel, Camille
+Claudet, Antoine
+Clausell, Joaquín
+Clausen, C.
+Clausen, Franciska
+Clausen, Sir George
+Clavé, Antonio
+Claxton, Marshall
+Clay, Alyson
+Clayes, Gertrude des
+Cleaver, Alice
+Clemens, J.F.
+Clemente da Urbino
+Clemente, Francesco
+Clerck, Hendrik de
+Clésinger, Jean Baptiste
+Cleve, Joos van
+Cleyn, Franz
+Clime, Winfield Scott
+Climo, Lindee
+Clint, George
+Clodion
+Close, Chuck
+Close, May Lewis
+Cloudman, John Greenleaf
+Clouet the Younger, Jean
+Clouet, François
+Clough, George Lafayette
+Clough, Prunella
+Clovio, Giorgio Giulio
+Coates, Edmund
+Coates, George
+Coburn, Frank
+Cochereau, Léon-Matthieu
+Cochin the Younger, Charles-Nicolas
+Cochran, Malcolm
+Cock, Hieronymous
+Cock, Matthys
+Codazzi, Viviano
+Codde, Pieter
+Codman, Charles
+Coe, Elias V.
+Coe, Ethel Louise
+Coe, Sue
+Coello, Claudio
+Cogniet, Léon
+Cohen, Becky
+Cohen, Bernard
+Cohoon, Hannah Harrison
+Coignet, Jules
+Coker, Peter
+Cola Dell'Amatrice
+Coldstream, Sir William
+Cole, George Vicat
+Cole, J. Foxcroft
+Cole, Thomas
+Cole, Timothy
+Cole, Willie
+Coleman, Charles Caryl
+Coleman, Michael
+Coleopy, Steve
+Colescott, Robert
+Coll, Joseph Clement
+Colla, Ettore
+Collaert, Adriaen
+Collantes, Francisco
+Collazo, Raphael
+Collet, John
+Collier, Edwaert
+Collier, John
+Collings, Samuel
+Collins, Cecil
+Collins, Charles
+Collins, Charles Allston
+Collins, William
+Collinson, James
+Collot, Marie-Anne
+Colman 1780-1845, Samuel
+Colman 1832-1920, Samuel
+Colombe, Michel
+Colquhoun, Alexander
+Colquhoun, Robert
+Colton, William Robert
+Colville, Alex
+Colvin Andrade, Marta
+Coman, Charlotte Buell
+Comfort, Charles F.
+Conant Limner, The
+Conca, Sebastiano
+Conde, Eduardo
+Conder, Charles
+Condo, George
+Cone, Marvin
+Conegliano, Giambattista Cima da
+Congdon, William
+Coninxloo, Gillis van
+Connah, John
+Connard, Philip
+Connell, Stephen
+Connell, Sybil
+Connelly, Brian
+Conrad, Cyril H.
+Conroy, Stephen
+Consagra, Pietro
+Constable, John
+Constable, Lionel Bicknell
+Constant, Benjamin
+Constantin, Dimitrios
+Cook of Plymouth, William
+Cook, Ethel
+Cook, Gladys Emerson
+Cook, Howard
+Cook, Lia
+Cooke, Barrie
+Cooke, Edward William
+Cooke, George
+Cooke, L.M.
+Cooper Jr., Richard
+Cooper, Abraham
+Cooper, Alfred Egerton
+Cooper, Colin Campbell
+Cooper, Emma Lampert
+Cooper, George
+Cooper, Samuel
+Cooper, Thomas Sidney
+Cooper, Washington Bogart
+Cooper, William
+Coornhert, Dirck Volkertszoon
+Cope, George
+Copley, John Singleton
+Coppedge, Fern Isabel
+Coppo di Marcovaldo
+Coques, Gonzales
+Corbet, Matthew Ridley
+Corbett, Edward
+Corbino, Jon
+Corbould, Henry
+Corbould, Richard
+Corbusier, Le
+Cordier, Charles Henri Joseph
+Cordier, Nicolas
+Corenzio, Belisario
+Corinth, Lovis
+Corinthianizing Painter, The
+Coriolano, Bartolomeo
+Cornè, Michele Felice
+Corneille de Lyon
+Corneille, Jean-Baptiste
+Cornelius, Peter von
+Cornell, Joseph
+Cornell, Thomas
+Cornoyer, Paul
+Corot, Jean-Baptiste-Camille
+Corradini, Antonio
+Correggio
+Cortes, Edouard
+Corvi, Domenico
+Cosgrove, Stanley
+Cossa, Francesco del
+Cossiers, Jan
+Cossio, Pancho
+Costa, Artur Timóteo da
+Costa, Lorenzo
+Costa, Olga
+Costanzi, Placido
+Costigan, John E.
+Cosway, Maria
+Cosway, Richard
+Cot, Pierre-Auguste
+Coter, Colijn de
+Cotes, Francis
+Cotman, John Joseph
+Cotman, John Sell
+Cottier, Daniel
+Cottingham, Robert
+Couder, Louis-Charles-Auguste
+Counihan, Noel
+Couper, William
+Courbet, Gustave
+Courter, Franklin C.
+Courtois, Guillaume
+Courtois, Jacques
+Couse, Eanger Irving
+Cousin the Elder, Jean
+Cousinet, Henri-Nicolas
+Cousins, Samuel
+Coustou the Elder, Guillaume
+Coustou, Nicolas
+Couture, Christin
+Couture, Thomas
+Covarrubias, Miguel
+Cowert, Hank
+Cowin, Eileen
+Cowles, Russell
+Cowley, Reta Madeline
+Cowper, Frank
+Cox, David
+Cox, Gardner
+Cox, John Rogers
+Cox, Ken
+Cox, Kenyon
+Cox, Stephen
+Cox, Walter I.
+Coxcie, Michiel van
+Coye, Lee Brown
+Coypel, Antoine
+Coypel, Charles-Antoine
+Coypel, Noël
+Coysevox, Antoine
+Cozens, Alexander
+Cozens, John Robert
+Cozzarelli, Giacomo
+Cozzarelli, Guidoccio
+Cradock, Marmaduke
+Cragg, Tony
+Craig-Martin, Michael
+Cranach the Elder, Lucas
+Cranach the Younger, Lucas
+Cranch, John
+Crane, Anne
+Crane, Bruce
+Crane, Walter
+Cranston, Toller
+Crawford, Len
+Crawford, Ralston
+Crawford, Thomas
+Craxton, John
+Crayer, Gaspar de
+Crema, Giovan Battista
+Crespi, Daniele
+Crespi, Giovanni Battista
+Crespi, Giuseppe Maria
+Creswick, Thomas
+Creti, Donato
+Creuznach, Conrad Faber von
+Criollo, José
+Criss, J. Francis
+Cristall, Joshua
+Cristofol Peralba, Leandre
+Criswell, Warren
+Critcher, Catherine
+Crivelli, Carlo
+Crivelli, Vittorio
+Crocefissi, Simone dei
+Croix I, Jean de la
+Crola, Georg-Heinrich
+Crome, John
+Cromwell, Joane
+Crona, Rudolf
+Crooke, Ray
+Croos, Anthonie Jansz. van der
+Cropsey, Jasper Francis
+Crosato, Giovanni Battista
+Cross, Dorothy
+Cross, Henri-Edmond
+Crotch, Dr. William
+Crowe, Eyre
+Crozier, William
+Cruickshank, William
+Cruikshank, George
+Cruikshank, Isaac
+Crumbo, Woody
+Cruz, Emilio
+Cruz, Juan Pantoja de la
+Csók, István
+Csontváry Kosztka, Tivadar
+Cucchi, Enzo
+Cuevas, José Luis
+Cuitt Jr., George
+Cullen, Maurice Galbraith
+Culverhouse, Johann M.
+Cummings, Michael
+Cumpston, Nevin
+Cundall, Charles
+Cuneo, Rinaldo
+Cunningham, Ben
+Cunningham, Earl
+Cunningham, Imogen
+Curnoe, Greg
+Curradi, Francesco
+Curran, Charles Courtney
+Currier and Ives
+Curry ,Chuck
+Curry II, Austin
+Curry, John Steuart
+Curtis, Edward S.
+Curtis, Philip
+Curtis, R.W.
+Custis, Eleanor Parke
+Cuthbertson, Arch
+Cuyck Van Myerop, Frans
+Cuyp, Aelbert
+Cuyp, Benjamin Gerritsz.
+Cuyp, Jacob Gerritz.
+Dabo, Leon
+Dacosta, Milton
+Dacre, Lady
+Dadd, Richard
+Daddi, Bernardo
+Dael, Jan Frans van
+Dagnan-Bouveret, Pascal-Adolphe-Jean
+Dahl, Johan Christian
+Dahl, Michael
+Daingerfield, Elliott
+Dal Ponte, Giovanni
+dal Sole, Giovanni Gioseffo
+Dalem, Cornelis van
+Dalgaard, Christen
+Dalí, Salvador
+Dall, Nicholas Thomas
+Dalle Masegne, Jacobello
+Dalmata, Giovanni
+Dalmau, Luís
+Dalou, Jules
+Dalsgaard, Sven
+Dalton, Richard
+Daly, Steve
+Daly, Steve
+Damer, Anne Seymour
+Dana, Fra
+Danby, Francis
+Danby, Ken
+Dance II, George
+Dance-Holland, Sir Nathaniel
+Dandini, Cesare
+Dandré-Bardon, Michel-François
+Dandridge, Bartholomew
+d'Angers, Pierre Jean David
+Daniell, Thomas
+Daniell, William
+Danloux, Henri-Pierre
+Danner, Josef
+Danti, Vincenzo
+Danziger, Yitzhak
+Daphnis, Nassos
+Darboven, Hanne
+Darby, Henry F.
+D'Arcangelo, Allan
+Daret, Jacques
+Daret, Jean
+Darius Painter, The
+Darley, Felix Octavius Carr
+Dasburg, Andrew
+Daubigny, Charles-François
+Daucher, Adolf
+Daullé, Jean
+Daumier, Honoré
+Daux, C. Edmond
+Dauzats, Adrien
+Davenport, Ian
+David, Charles
+David, Gerard
+David, Jacques-Louis
+David, Michael
+Davidson, Jo
+Davidson, Robert
+Davie, Alan
+Davies, Arthur Bowen
+Davies, Danny
+Davies, David
+Davies, John
+Davies, Kenneth
+Davies, T.
+Davis, Charles Harold
+Davis, Douglas
+Davis, Emma Earlenbaugh
+Davis, Gene
+Davis, Henry William Banks
+Davis, John Scarlett
+Davis, Joseph H.
+Davis, Richard Thomas
+Davis, Stuart
+Davis, Ulysses
+Davis, William
+Daw, Leila
+Dawe, George
+Dawes, Edwin
+Dawson, David
+Dawson, Janet
+Dawson-Watson, John
+Day, Forshaw
+Day, Francis
+Day, Frank
+Dayes, Edward
+De Backer, Jacques
+de Chirico, Giorgio
+De Forest, Roy
+De Francia, Peter
+De Grey, Sir Roger
+De Haven, Franklin
+de Kooning, Elaine Fried
+de Kooning, Willem
+De Loutherbourg, Philippe Jacques
+de Meyer, Baron Adolf Gayne
+De Monchaux, Cathy
+De Morgan, Evelyn
+de Rivera, José
+de Stael, Nicholas
+de Vries, Auke
+De Wilde, Samuel
+De Wint, Peter
+De Witte, Peter
+Deacon, James
+Deacon, Richard
+Deák-Ébner, Lajos
+Deakin, Edwin
+DeAndrea, John
+Deare, John
+Dearth, Henry Golden
+de'Barbari, Jacopo
+Debassige, Blake
+Debat-Ponsan, Edouard
+Debucourt, Louis-Philibert
+DeCamp, Joseph
+DeCamp, Ralph E.
+Decamps, Alexandre-Gabriel
+DeCarava, Roy
+DeCreeft, José
+deDeigo, Julio
+Defrance, Léonard
+Degas, Edgar
+Degouve de Nuncques, William
+DeGrailly, V.
+Dehaas, Alice Preble Tucker
+Dehn, Adolf
+Dehner, Dorothy
+Dekkers, Ad
+del Casentino, Jacopo
+Del Pezzo, Lucio
+Delacroix, Eugène
+Delamotte, William Alfred
+Delaney, Beauford
+Delaney, Joseph
+Delaroche, Paul
+Delaunay, Jules-Elie
+Delaunay, Robert
+Delaunay, Sonia
+Delaune, Étienne
+Delbos, C. Edmund
+Delen, Dirck van
+Delfino
+della Valle, Filippo
+dell'Abbate, Niccolò
+Delort, Charles Edouard
+Delvaux, Paul
+Delville, Jean
+Delvoye, Wim
+Delyen, Jacques-François
+Demarne, Jean-Louis
+Demarteau, Gilles
+DeMartelly, John S.
+deMartini, Joseph
+Demuth, Charles
+Denes, Agnes
+Denham, John Charles
+Denis, Maurice
+Denison Limner, The
+Denner, Balthasar
+Denning, Stephen Poyntz
+Dennis, Michael
+Dennis, Wayne
+Denny, Robyn
+Denon, Baron Dominique Vivant
+Depero, Fortunato
+Deppe, Ferdinand
+Derain, André
+Derby, William
+Dernovich, Don
+de'Roberti, Ercole
+Derouin, René
+Deruet, Claude
+Des Granges, David
+Desboutin, Marcellin Gilbert
+Desch, Frank H.
+Descourtis, Charles-Melchior
+Deshays, Jean-Baptiste
+Desiderio da Settignano
+Desiderio, Vincent
+Desjardins, Martin
+Despiau, Charles
+Desportes, Alexandre-François
+Dessar, Louis Paul
+DeStaebler, Stephen
+Desubleo, Michele
+Détaille, Édouard
+Detouche, Henry-Julien
+Devambez, André
+Deverell, Walter Howell
+Devéria, Achille
+Devilly, Louis-Théodore
+Devis, Anthony
+Devis, Arthur
+Devoto, John
+Dew, James
+DeWeese, Bob
+DeWeese, Gennie
+DeWeese, Robert
+Dewing, Maria Oakey
+Dewing, Thomas Wilmer
+Dexter, Henry
+Dexter, Walter
+d'Hondecoeter, Melchior
+Di Ruggiero, Carmine
+di Suvero, Mark
+Dial Sr., Thornton
+Diamond, Dr. Hugh Welch
+Diana, Benedetto
+Díaz de la Peña, Narcisse-Virgile
+Dibbets, Jan
+Dickerson, Robert
+Dickinson, Preston
+Dickinson, Sidney E.
+Dicksee, Sir Frank
+Dicksee, Thomas Francis
+Dickson, Jane
+Diebenkorn, Richard
+Diego de Pesquera
+Diepraam, Abraham
+Dietrich, Christian Wilhelm Ernst
+Diggs, Peggy
+Dighton, Richard
+Dighton, Robert
+Dijck, Floris van
+Dillingham, Rick
+Dillis, Johann Georg von
+Dine, Jim
+Dinerstein, James
+Ding Cong
+Ding Yanyong
+Ding Yunpeng
+Dinglinger, Johann Melchior
+Dinsmore, Stephen
+Dionisii
+Dipre, Nicolas
+Discon, Warren
+Dix, Eulabee
+Dix, Otto
+Dixon, Ken
+Dixon, Maria
+Dixon, Maynard
+Dixon, William
+Diziani, Gaspare
+Do, Giovanni
+Dobbs, Everett
+Dobell, William
+Dobson, William
+Dobson, William Charles Thomas
+Dodd, Daniel
+Dodd, Francis
+Dodd, Lamar
+Dodd, Robert
+Dodge, William DeLeftwich
+Doesburg, Theo van
+Dohan, Kaigetsudo
+Dohanos, Stevan
+Doig, Peter
+Doisneau, Robert
+Dolan, Elizabeth
+Dolci, Carlo
+Dolph, John Henry
+Dombrowski, Carl Ritter von
+Domenichino
+Domenico De'Cori
+Domenico di Bartolo
+Domenico di Paris
+Domenico Veneziano
+Dominguez, Oscar
+Dominicis, Gino de
+Donagh, Rita
+Donahue, Vic
+Donald Lipski
+Donaldson, Anthony
+Donát, János
+Donatello
+Donati, Enrico
+Donck, Gerard
+Doner, Michele Oka
+Dong Qichang
+Dongen, Dionys van
+Dongen, Kees van
+Donnelly, Chuck
+Donner, Georg Raphael
+Donoghue, Lynn
+Donoho, Gaines Ruger
+Doolittle, Amos
+Doornik, Frans van
+Dorazio, Piero
+Doré, Gustave
+Dorfmeister, István
+d'Orléans, Evrard
+Dorner, Johann
+Dorrien, Carlos
+Dorris, Roy
+Dorsey, John
+D'Orsi, Achille
+Dosamantes, Francisco
+Dossi, Dosso
+Dou, Gerrit
+Dougherty, Paul
+Doughten, Alice
+Doughty, Thomas
+Doughty, William
+Douglas, Aaron
+Douglas, Edwin
+Douglas, Sir William Fettes
+Douris
+Doutney, Charles
+Dove, Arthur
+Dowling, Robert
+Downard, Ebenezer Newman
+Downing, Tom
+Downman, John
+Doyle, Charles Altamont
+Doyle, Richard
+Draper, Herbert
+Draper, William Franklin
+Drechsler, Johann Baptist
+Drew, Clement
+Drewes, Werner
+Dreyer, Clarice
+Driggs, Elsie
+Drölling, Martin
+Drost, Willem
+Drouais, François-Hubert
+Drouais, Jean-Germain
+Drummond, Arthur
+Drummond, Samuel
+Drysdale, Russell
+Du Maurier, George
+Du Ziling
+Dubois, Jacques
+Dubois-Drahonet, Alexandre-Jean
+Dubreuil, Victor
+Dubufe, Louis-Edouard
+Dubuffet, Jean
+Duccio di Buoninsegna
+Duchamp, Marcel
+Duchamp-Villon, Raymond
+Duck, Jacob
+Ducreux, Joseph
+Ducreux, Rose Adélaïde
+Dudley, Frank V.
+Duez, Ernest
+Dufresne, Charles
+Dufy, Raoul
+Dugdale, Thomas Cantrell
+Dugger, John
+Dughet, Gaspard
+Dujardin, Karel
+Duk-hyun, Cho
+Dulac, Edmund
+Dumesnil the Younger, Pierre Louis
+Dumond, Frank
+Dumonstier, Pierre
+Dumont, Jacques-Edme
+Dumoustier the Elder, Pierre
+Dunand, Jean
+Dunbar, Evelyn
+Dunbar, Harold Crocker
+Dunbier, Augustus
+Duncan, John
+Duncan, Robert
+Duncan, Steve
+Duncanson, Robert Scott
+Dundas, Douglas
+Dunker, Balthazar Anton
+Dunlap, William
+Dunoyer de Segonzac, André
+Dunst, Heinrich
+Dunton, William Herbert
+Duparc, Françoise
+Dupas, Jean
+Duplessis, Joseph-Siffred
+Dupont, Gainsborough
+Duprà, Domenico
+Dupré, Giovanni
+Dupré, Guillaume
+Dupré, Jules
+Dupré, Julien
+Dupuis, Georges
+Duquesnoy, François
+Duranceau, Suzanne
+Durand, Asher B.
+Durand, John
+Duranti, Fortunato
+Duren, Terence
+Dürer, Albrecht
+Durham, Joseph
+Durrie, George Henry
+Dusart, Cornelis
+Duseigneur, Jehan
+Dusenbery, Walter
+Duskiewicz, Rick
+Duskiewicz, Rick
+Duval, Jeanne
+Duval, Marc
+Duveneck, Elizabeth Lyman Boott
+Duveneck, Frank
+Duvet, Jean
+Duyckinck, Gerardus
+Duyfhuysen, Pieter
+Duyster, Willem Cornelisz.
+Dwight, Mabel
+Dwyer, Nancy
+Dyce, William
+Dyer, Charles Gifford
+Dyer, Nancy
+Eagle Painter, The
+Eakins, Susan Macdowell
+Eakins, Thomas
+Eames, Charles
+Eames, Ray
+Eardley, Joan
+Earl, Maud
+Earl, Ralph
+Earl, Ralph Eleaser Whiteside
+Earle, Augustus
+Earlom, Richard
+East, Sir Alfred
+Eastlake, Sir Charles Lock
+Eastman, Emily
+Eastman, Rico
+Eastman, Seth
+Eaton, Charles Warren
+Eaton, William B.
+Eaton, Wyatt
+Ebert, Charles
+Ebert, Mary Roberts
+Eberz, Josef
+Eby, Kerr
+Echevarría, Juan de
+Eckart, Christian
+Eckersberg, Christoffer Wilhelm
+Eddis, Eden Upton
+Eddy, Don
+Edelfelt, Albert
+Edenshaw, Charles
+Edmonds, Francis William
+Edmondson, William
+Edridge, Henry
+Edson, Alan
+Edwards, Billy
+Edwards, Edwin
+Edwards, George Wharton
+Edwards, Melvin
+Eeckhout, Gerbrand van den
+Eertvelt, Andries van
+Egenau Moore, Juan
+Egeri, Karl von
+Egg, Augustus Leopold
+Eggemeyer, Maude Kaufman
+Egger, Vilmos
+Eggleston, William
+Egry, József
+Ehninger, John Whetten
+Ehrenberg, Wilhelm Schubert van
+Eichenberg, Fritz
+Eichholtz, Jacob
+Eickhoff, Gottfred
+Eilshemius, Louis
+Eisen, Charles Dominique
+Eisentrager, James
+Eisui, Ichirakutei
+Eizan, Kikugawa
+Elinga, Pieter Janssens
+Elk, Ger van
+Ellerhusen, Florence Cooney
+Elliott, Charles Loring
+Ellis, Harvey
+Elsheimer, Adam
+Elvgren, Gil
+Emery, Lin
+Emin, Tracey
+Emmet, Lydia Field
+Emslie, Alfred Edward
+Enckell, Magnus
+Engleheart, George
+Enjaku
+Enjorlas, Delphin
+Enkyo, Kabukido
+Enneking, John J.
+Ensor, James
+Epiktetos
+Epimenes
+Epstein, Jacob
+Erhardt, Michel
+Erhart, Gregor
+Erichsen, Vigilius
+Erickson, Nancy
+Ericson, David
+Erlebacher, Martha Mayer
+Ernst, Jimmy
+Ernst, Max
+Ernst, Rudolph
+Erri, Agnolo degli
+Erró
+Erté
+Es, Jacob van
+Escalante, Juan Antonio
+Escher, M.C.
+Esiguo, Maestro
+Espinosa, Juan de
+Espoy, Angel
+Esselens, Jacob
+Estense, Baldassare
+Estes, Richard
+Etidlooie, Kingmeata
+Etrog, Sorel
+Etty, William
+Eun-ho, Kim
+Euphronios
+Eupolis Painter
+Eurich, Richard
+Eustace, A.W.
+Euxitheos
+Evans, De Scott
+Evans, Edwin
+Evans, Frederick Henry
+Evans, Gary
+Evans, Jessie Benton
+Evans, Mary Page
+Evans, Minnie
+Evans, Walker
+Everdingen, Allart van
+Everdingen, Cesar van
+Evergood, Miles
+Evergood, Philip
+Eversen, Adrianus
+Ewbank, John Wilson
+Ewen, Paterson
+Eworth, Hans
+Exekias
+Eyck, Hubert van
+Eyck, Jan van
+Eyre, Ivan
+Eyton, Anthony
+Fabbri, Angenore
+Faber the Younger, John
+Fabergé, Carl
+Fabre, François-Xavier
+Fabritius, Barent
+Fabritius, Carel
+Fabro, Luciano
+Faccini, Pietro
+Faed, John
+Faed, Thomas
+Faes, Peter
+Fafard, Joe
+Fagan, Robert
+Faggi, Alfeo
+Fairbanks, Avard T.
+Fairbanks, Semantha
+Fairbrother, Rob
+Fairweather, Ian
+Falciatore, Filippo
+Falcieri, Biagio
+Falconet, Étienne-Maurice
+Falconet, Pierre-Étienne
+Falero, Luis Ricardo
+Falk, Gathie
+Falter, John Phillip
+Fan Kuan
+Fancelli, Cosimo
+Fancelli, Pietro
+Fang Jizhong
+Fang Zengxian
+Fang Zhaolin
+Fantin-Latour, Henri
+Fanzago, Cosimo
+Farinati, Paolo
+Farington, Joseph
+Faris, Joseph Anderson
+Farkas, István
+Farm, Gerald
+Farmer, John
+Farny, Henry F.
+Farquarson, David
+Farr, Ellen Burpee
+Farrell, Katherine Levine
+Farrer, Charles
+Farrer, Henry
+Farreras, Francisco
+Fattori, Giovanni
+Fauvelet, Jean-Baptiste
+Faxon, Richard
+Faydherbe, Luc
+Faye, Assane
+Fazzini, Pericle
+Fearon, Hilda
+Fechin, Nicolai
+Fedi, Giuseppi
+Feininger, Lyonel
+Feitelson, Lorser
+Feke, Robert
+Felguérez, Manuel
+Fenderich, Charles
+Fendi, Peter
+Feng Kanghou
+Feng Mengbo
+Feng Zikai
+Fenneker, Josef
+Fenton, Roger
+Fenton, Terry
+Fényes, Adolf
+Ferber, Herbert
+Ferenczy, Károly
+Ferguson, Gerald
+Fernández Ledesma, Gabriel
+Fernández, Gregorio
+Fernández, Luis
+Ferneley I, John
+Ferneley II, John
+Ferrant y Vazquez, Angel
+Ferrara, Jackie
+Ferrari, Defendente
+Ferrari, Gaudenzio
+Ferrat, Jean-Joseph-Hippolyte-Romain
+Ferrata, Ercole
+Ferren, John
+Ferrer, Rafael
+Ferretti, Giovanni Domenico
+Ferrière, François
+Ferrill, Martin Edgar
+Fery, John
+Feti, Domenico
+Fetting, Rainer
+Feuchère, Jean-Jacques
+Feuerbach, Anselm
+Feure, Georges de
+Field, Erastus Salisbury
+Field, Robert
+Fielding, Anthony Vandyke Copley
+Fiene, Ernest
+Figueiredo e Mello, Pedro Américo de
+Filarete
+Fildes, Sir Luke
+Filippi, Sebastiano
+Fillier, Scott
+Filonov, Pavel
+Finch, Francis Oliver
+Finck, Hazel
+Fine, Perle
+Fine, Sally S.
+Finelli, Giuliano
+Finlay, Ian Hamilton
+Finson, Ludovicus
+Fiorentino, Antonio
+Fiorentino, 'Pseudo' Pier Francesco
+Fiori, Ernesto de
+Fiorini, Clem & Tony
+Firmin-Girard, Marie-François
+Fischer, Paul
+Fischl, Eric
+Fischli, Peter
+Fish, Janet
+Fisher, Alvan
+Fisher, Anna
+Fisher, Elizabeth Clay
+Fisher, Ellen Bowditch Thayer
+Fisher, Mark
+Fisher, Samuel Melton
+Fisher, Vernon
+Fisk, Lars-Erik
+Fiske, Gertrude
+Fitch, Walter
+Fitton, Hedley
+Fitzgerald, John Anster
+Fitzgerald, Lionel
+Flack, Audrey
+Flagg, James Montgomery
+Flamen, Anselme
+Flameng, Léopold
+Flanagan, Barry
+Flandrin, Hippolyte
+Flannagan, John Bernard
+Flavin, Dan
+Flaxman, John
+Flegel, Georg
+Fleischner, Richard
+Flexor, Samson
+Flicke, Gerlach
+Flinck, Govert
+Flint, William Leroy
+Flipart, Charles
+Floris, Cornelis
+Floris, Frans
+Flory, Arthur L.
+Fogarty, Mary Beth
+Foggini, Giambattista
+Foley, John Henry
+Foliage Master
+Foligno, Bartolomeo di Tommaso da
+Folinsbee, John Fulton
+Folwell, Jody
+Fontana, Annibale
+Fontana, Lavinia
+Fontana, Lucio
+Fontana, Prospero
+Fontebasso, Francesco
+Foote, Mary
+Foote, Will Howe
+Foppa, Vincenzo
+Forabosco, Girolamo
+Forain, Jean-Louis
+Forbes, Donald Emery
+Forbes, Elizabeth Adela Armstrong
+Forbes, John Colin
+Forbes, Stanhope Alexander
+Ford, Edward Onslow
+Ford, Lauren
+Ford, William
+Förg, Günter
+Forrest, Jonathan Alistair
+Forrestall, Tom
+Forsman, Chuck
+Forster, Thomas
+Forsyth, William
+Fortescue-Brickdale, Eleanor
+Fortin, Marc-Aurèle
+Fortini, Giovacchino
+Fortuny y Madrazo, Mariano
+Fortuny y Marsal, Mariano
+Forty, Jean Jacques
+Foschi, Pierfrancesco
+Fossati, Davide Antonio
+Fosso, Samuel
+Foster, Ben
+Foster, Myles Birket
+Foster, William
+Foujita, Tsugoharu
+Foundry Painter, The
+Fouquet, Jean
+Four Bears
+Fournier, Alexis Jean
+Fowle, Isaac
+Fox, E. Phillips
+Foy Suzor-Coté, Marc-Aurèle de
+Fragonard, Jean-Honoré
+Fragonard, Marie Anne Gérard
+Frampton, Edward Reginald
+Frampton, Hollis
+Frampton, Meredith
+Francalancia, Riccardo
+Francavilla, Pietro
+France, Eurilda Loomis
+Frances, Esteban
+Francés, Nicolás
+Franceschini, Marcantonio
+Francesco de Mura
+Francesco di Giorgio Martini
+Francesco di Vannuccio
+Franchina, Nino
+Franchoys the Younger, Lucas
+Francia, Francesco
+Francia, François Louis Thomas
+Franciabigio
+Francis, John F.
+Francis, Mark
+Francis, Sam
+Francken I, Frans
+Francken II, Frans
+Francken II, Hieronymus
+Franco, Giovanni Battista
+Francqueville, Pierre
+Frank, Mary
+Frank, Robert
+Frankel, Godfrey
+Frankenthaler, Helen
+Franzen, August
+Frasconi, Antonio
+Fraser, Alexander
+Fraser, Carol Hoorn
+Fraser, James Earle
+Frater, William
+Fratin, Christophe
+Frazetta, Frank
+Freake Limner, The
+Freckelton, Sondra
+Freddie, Wilhelm
+Frédéric, Léon
+Freeland, Anna Chamberlain
+Freeman, Don
+Freeman, Edith
+Freeman, Jane
+Freiberger, Benny
+Freilicher, Jane
+Frélaut, Jean
+Fremin, René
+French, Daniel Chester
+French, Jared
+Frère, Charles-Théodore
+Fresnaye, Roger de la
+Freud, Lucian
+Freundlich, Otto
+Frey, Viola
+Friebert, Joseph
+Friedeberg, Pedro
+Friedlander, Isac
+Friedlander, Lee
+Friedrich, Caspar David
+Friend, Donald
+Friend, Washington
+Fries, Ernst
+Friese, Richard
+Frieseke, Frederick Carl
+Friesz, Othon
+Frink, Dame Elisabeth
+Fripp, Alfred Downing
+Fripp, George Arthur
+Fripp, Thomas
+Frishmuth, Harriet Whitney
+Frith, William Powell
+Fritsch, Katharina
+Froment, Nicolas
+Fromentin, Eugène
+Froment-Meurice, François-Désiré
+Frost, John
+Frost, Terry
+Frost, William Edward
+Fry, Roger
+Frye, Thomas
+Fu Baoshi
+Fu Ershi
+Fuertes, Louis Agassiz
+Füger, Friedrich Heinrich
+Fujiwara Nobuzane
+Fujiwara Takanobu
+Fuka, Eva
+Fuller, Buckminster
+Fuller, George
+Fuller, Meta Warrick
+Fullwood, John
+Fulton, Hamish
+Fungai, Bernardino
+Furini, Francesco
+Furse, Charles Wellington
+Fusatane
+Fuseli, John Henry
+Fuss, Adam
+Fyt, Jan
+Gabbiani, Anton Domenico
+Gabo, Naum
+Gaddi, Agnolo
+Gaddi, Taddeo
+Gaertner, Eduard
+Gág, Wanda
+Gagen, Robert
+Gagini, Domenico
+Gagnon, Clarence
+Gainsborough, Thomas
+Galán, Julio
+Gale, William
+Gallagher, Sears
+Gallait, Louis
+Galle I, Cornelis
+Gallé, Emile
+Galle, Philip
+Gallego, Fernando
+Gallen-Kallela, Akseli
+Galliani, Omar
+Gallo, Oscar
+Gambara, Lattanzio
+Gamble, John
+Gamelin, Jacques
+Gammell, R.H. Ives
+Gandolfi, Gaetano
+Gandolfi, Ubaldo
+Gandolfino da Roreto
+Gano di Fazio
+Gans, Donna H.
+Gansevoort Limner, The
+Ganso, Emil
+Gao Fenghan
+Gao Jianfu
+Gao Qifeng
+Garber, Daniel
+Garcia, Rupert
+Gardner, Daniel
+Gardner, Todd
+Garelli, Franco
+Gargallo, Pablo
+Gargiulo, Domenico
+Garman, Ed
+Garner, Sarah
+Garnier, Michel
+Garofalo
+Garrard, George
+Garretson, Martin S.
+Garrigus, Keith
+Garstin, Norman
+Gartner, Allan
+Garza, Carmen Lomas
+Gaspard, Leon
+Gassel, Lucas
+Gaudí, Antoni
+Gaudier-Brzeska, Henri
+Gauffier, Louis
+Gaugengigl, Ignaz Marcel
+Gauguin, Paul
+Gauthier, Suzanne
+Gavarni, Paul
+Gavarrone, Domenico
+Gay, Edward
+Gay, Nikolay
+Gaywood, Richard
+Geddes, Andrew
+Gedovius, Germán
+Geer, Grace Woodbridge
+Gehrk, Robert J.
+Gehry, Frank
+Geiger, Anna Bella
+Geikie, Walter
+Geisted, Jørgen
+Gelder, Aert de
+Gelsavage, John Zygmund
+Gemito, Vincenzo
+Genga, Girolamo
+Gennari, Benedetto
+Gensler, Martin
+Gent, G.W.
+Genth, Lillian Mathilde
+Genthe, Arnold
+Gentile da Fabriano
+Gentileschi, Artemisia
+Gentileschi, Orazio
+Gentilini, Franco
+Gentling, Scott
+Geoffroy, Henry-Jules-Jean
+George, Ray
+Gérard, François
+Gérard, Marguerite
+Gerardi, Alberto
+Gerardo
+Gerhaert, Nicolaus
+Gerhard, Hubert
+Gerhold, Mel
+Géricault, Théodore
+Gerini, Niccolò di Pietro
+Gerlovin, Valeriy
+Gerlovina, Rimma
+Germain, François-Thomas
+Germain, Louis
+Gérôme, Jean-Léon
+Gerstl, Richard
+Gertler, Mark
+Gertsch, Franz
+Gervex, Henri
+Gerzso, Gunther
+Getz, Arthur
+Geuer, Juan
+Gheeraerts the Younger, Marcus
+Gherardo di Giovanni
+Gheyn II, Jacques de
+Gheyn, Jacques de
+Ghezzi, Pier Leone
+Ghiberti, Lorenzo
+Ghirlandaio, Benedetto
+Ghirlandaio, Domenico
+Ghirlandaio, Ridolfo
+Ghislandi, Giuseppe
+Giacometti, Alberto
+Giacometti, Giovanni
+Giambologna
+Giambono, Michele
+Giampietrino
+Giannetti, Raffaele
+Giannicola di Paolo
+Giaquinto, Corrado
+Gibbs, Henry
+Gibbs, Percy W.
+Gibson, Ralph
+Giergl, Alajos Györgyi
+Giesbrecht, Garry
+Gifford, Sanford Robinson
+Giger, H.R.
+Gignoux, Règis-François
+Gigola, Giovanni Battista
+Gijsbrechts, Cornelius
+Gil de Castro, José
+Gilbert and George
+Gilbert, Alfred
+Gilbert, Arthur Hill
+Gilbert, John Conrad
+Gilbert, Sir John
+Gilbert, Victor-Gabriel
+Gilder, Robert
+Gile, Selden Connor
+Gilhooly, David
+Gill, Eric
+Gillespie, Gregory
+Gillett, Frank
+Gilliam, Sam
+Gillini, Alberto
+Gillot, Claude
+Gillray, James
+Gilman, Harold
+Gilpin, Rev. William
+Gilpin, Sawrey
+Ginnever, Charles
+Giordano, Luca
+Giorgione
+Giottino
+Giotto di Bondone
+Giovanni da Balduccio
+Giovanni da Campione
+Giovanni da Milano
+Giovanni da Nola
+Giovanni da San Giovanni
+Giovanni del Biondo
+Giovanni di Paolo
+Giovenone, Girolamo
+Gipe, Lawrence
+Girardon, François
+Girodet de Roussy-Trioson, Anne-Louis
+Girolamo da Carpi
+Girolamo dai Libri
+Girolamo di Benvenuto
+Gironella, Alberto
+Giroux, André
+Girtin, Thomas
+Giulio Romano
+Glackens, William
+Glaize, Auguste
+Glaize, Pierre-Paul-Léon
+Glarner, Fritz
+Gleeson, James
+Glehn, Wilfrid de
+Gleizes, Albert
+Glendenning, Alfred
+Gleyre, Charles
+Glick, John
+Glintenkamp, Hendrik
+Glover, John
+Glyde, Henry George
+Gober, Robert
+Goble, Paul
+Godfrey, DeWitt
+Godward, John William
+Goeneutte, Norbert
+Goes, Hugo van der
+Gogas, George
+Goings, Ralph
+Goitia, Francisco
+Goldberg, Rube
+Goldin, Nan
+Goldsworthy, Andy
+Golinkin, Joseph
+Gollings, E. W.
+Goltzius, Hendrick
+Golub, Leon
+Gomez de Mora, Juan
+Gómez, Vicente Salvador
+Gonçalves, Nuno
+Goncharova, Natalia
+Gong Xian
+Gonzaga, Pietro
+Gonzales, Eva
+González Escobar, Juan Francisco
+González Pellicer, Julio
+Gonzalez Ruiz, Daniel
+Gonzalez y Serrano, Bartolome
+González, Joan
+Gonzalez, Juan
+González, Vicente Palmaroli
+Gonzalez-Torres, Felix
+Good, Thomas Sword
+Goodall, Frederick
+Goodfellow, Stephen
+Goodman, Brenda
+Goodman, Sidney
+Goodnough, Robert
+Goodridge, Eliza
+Goodsir, Agnes
+Goodwin, Arthur Clifton
+Goodwin, Gilberta Daniels
+Goodwin, Philip R.
+Goodwin, Richard LaBarre
+Goodwin, Steve
+Gookins, James Farrington
+Gordillo, Luis Rodríguez
+Gordon, Arturo
+Gordon, Douglas
+Gordon, Harry H.
+Gordon, Julia Emily
+Gordon, Lady
+Gordon, Russell T.
+Gordon, Sir Harry Percy
+Gordon, Sir John Watson
+Gore, Charles
+Gore, Spencer
+Gorenko, Richard Williams Samuel
+Gorgoni, G.
+Gorin, Jean
+Gorky, Arshile
+Gormley, Antony
+Gornik, April
+Goro di Gregorio
+Gorsline, Douglas
+Gorson, Aaron Harry
+Goshin
+Goshun, Matsumara
+Gotch, Thomas Cooper
+Gottlieb, Adolph
+Gottlieb, Harry
+Goudie, Scott
+Goudt, Hendrik
+Goujon, Jean
+Gould, William
+Goupil, Jules-Adolphe
+Govaers, Daniel
+Govaerts, Abraham
+Gow, Andrew Carrick
+Gower, George
+Gowing, Sir Lawrence
+Goya, Francisco de
+Goyen, Jan van
+Goyo, Hashiguchi
+Gozzoli, Benozzo
+Graevenitz, Gerhard von
+Graf, Genevieve Goth
+Graf, Urs
+Graff, Anton
+Graham, Dan
+Graham, John
+Graham, Paul
+Graham, Peter
+Graham, Robert
+Gramza, Leroy
+Granacci, Francesco
+Grandi, Gian Girolamo
+Grandi, Giuseppe
+Grandin, Eugene
+Grandmaison, Nicholas de
+Granet, François-Marius
+Granger, Charles Henry
+Grant, Duncan
+Grant, Frederic Milton
+Grant, Gordon
+Grant, Sir Francis
+Gras, Caspar
+Grass, Philippe
+Grasser, Erasmus
+Grausman, Philip
+Gravelot, Hubert François
+Graves, Abbott Fuller
+Graves, Henry Richard
+Graves, Morris
+Graves, Nancy
+Gravesande, Charles Storm van S'
+Gray, Cleve
+Gray, Gustave Le
+Gray, Henry Percy
+Gray, Jack
+Gray, Mary
+Graziose, Phil
+Greacen, Edmund W.
+Greacen, Nan
+Greaves, Walter
+Grebber, Pieter de
+Greco, El
+Greco, Emilio
+Green, Alan
+Green, Anthony
+Green, C.E.L.
+Green, Frank Russell
+Green, Homer
+Green, Renée
+Green, Samuel M.
+Green, Valentine
+Green, Walter
+Greenamyer, George
+Greenblat, Rodney Alan
+Greenham, Peter
+Greenhill, Harold
+Greenleaf, Benjamin
+Greenough, Horatio
+Greenwood, John
+Greeves, Richard V.
+Gregory, Edward John
+Gregory, Sheila
+Greiffenhagen, Maurice William
+Greuze, Jean-Baptiste
+Grey, Alex
+Gribbroek, Robert
+Griffa, Giorgio
+Griffier the Elder, John
+Griffin, Walter
+Griffiths, James
+Griggs, Frederick Landseer Maur
+Griggs, Lee
+Griggs, Samuel W.
+Grigorescu, Nicolae
+Grimaldi, Giovanni Francesco
+Grimm, Samuel Hieronymous
+Grimmer, Abel
+Grimou, Alexis
+Grimshaw, Atkinson
+Grinager, Alex
+Grippe, Peter
+Gris, Juan
+Gritten, Henry
+Grogan, Nathaniel
+Groll, Albert L.
+Grooms, Red
+Gropper, William
+Gros, Antoine-Jean
+Grose, Harriet Estella
+Gross, Anthony
+Gross, Chaim
+Gross, Sidney
+Grossman, Elias M.
+Grossmann, Rudolf
+Grosso, Luigi
+Grosz, George
+Groux, Henry de
+Gruamonte
+Gruber, Francis
+Gruelle, Richard B.
+Gruner, Elioth
+Grünewald, Matthias
+Gruppé, Emile A.
+Gruppe, Virginia
+Gu Linshi
+Gu Yuan
+Gu Yun
+Gualitieri di Giovanni da Pisa
+Guan Shanyue
+Guan Zilan
+Guardi, Francesco
+Guardi, Gian Antonio
+Guariento di Arpo
+Gude, Hans Fredrik
+Gudin, Théodore
+Guérard, Eugene von
+Guercino
+Guerin, Gilles
+Guérin, Pierre-Narcisse
+Guerrero Galván, Jesús
+Guerrero García, José
+Guglielmi, Gregorio
+Guglielmi, O. Louis
+Guglielmo, Fra
+Guglielmo, Mastro
+Guidi, Domenico
+Guidi, Virgilio
+Guido da Siena
+Guignet, Adrien
+Guigou, Paul-Camille
+Guild, Lurelle
+Guillain, Simon
+Guillaumin, Armand
+Guillou, Alfred
+Guinovart Bertran, Josep
+Guirand de Scevola, Lucien-Victor
+Gulácsy, Lajos
+Gunther, Franz Ignaz
+Guo Bi
+Gurschner, Herbert
+Gursky, Andreas
+Guston, Philip
+Guthrie, Sir James
+Gutiérrez, Juan Simón
+Gutmann, Bernhard
+Gutmann, John
+Guttuso, Renato
+Guy, Francis
+Guy, Seymour Joseph
+Guys, Constantin
+Guyton, Tyree
+Gwathmey, Robert
+Gwynne-Jones, Allan
+Gyárfás, Jenó
+Gyles, Henry
+Gyokudo, Uragami
+Gysels, Pieter
+Haagen, Joris Abrahamsz. van der
+Haarlem, Cornelis Cornelisz. van
+Haas, Mauritz F.H. De
+Haberle, John
+Hackaert, Jan
+Hacker, Arthur
+Hackert, Jacob Philippe
+Haddock, A.
+Haden, Sir Francis Seymour
+Haes, Carlos de
+Hahn, Emanuel
+Hahn, Gustav
+Hahn, Herbert C.
+Hahn, William
+Haid, Johann Lorenz
+Haile, Samuel
+Hale, Edward Matthew
+Hale, Ellen Day
+Hale, Josephine
+Hale, Lilian Westcott
+Hale, Philip Leslie
+Hall 1739-1797, John
+Hall 1885, Douglas
+Hall, Ann
+Hall, Bernard
+Hall, Cyrenius
+Hall, Doug
+Hall, George Henry
+Hall, Harry
+Hall, John
+Hall, Pam
+Hallé, Edward Charles
+Hallen, Ambrose
+Halley, Peter
+Halliday, Edward Irvine
+Hals, Dirk
+Hals, Frans
+Halsman, Philippe
+Halswelle, Keeley
+Hamblin, Sturtevant J.
+Hamen y León, Juan van der
+Hamilton, Ann
+Hamilton, Gavin
+Hamilton, Gawen
+Hamilton, Grant
+Hamilton, Hamilton
+Hamilton, Hugh Douglas
+Hamilton, James
+Hamilton, Juan
+Hamilton, Mary Riter
+Hamilton, Mike
+Hamilton, Richard
+Hamilton, William
+Hammershøi, Vilhelm
+Hammond, Jane
+Hammons, David
+Hamon, Jean-Louis
+Han Gan
+Hanfstaengl, Dresden
+Hanias, Johannes
+Hankey, William Lee
+Hanneman, Adriaen
+Hannock, Stephen
+Hansen, Armin Carl
+Hansen, Constantin
+Hansen, Svend Wiig
+Hanson, Duane
+Haozous, Bob
+Harcourt, George
+Hardie, Martin
+Harding, Charles Stewart
+Harding, Chester
+Harding, George Perfect
+Harding, James Duffield
+Harding, Sylvester
+Hardrick, John Wesley
+Hardwick, Alice
+Hardwick, Melbourne
+Hardy, Anna Eliza
+Hardy, Heywood
+Hare, David
+Harford, John Scandrett
+Haring, Keith
+Harlow, George Henry
+Harnett, William Michael
+Harper, Henry Andrew
+Harpignies, Henri-Joseph
+Harrich, Jobst
+Harries, Mags
+Harris, Bob
+Harris, John
+Harris, Lawren S.
+Harris, Robert
+Harris, Sam Hyde
+Harrison, H.B.
+Harrison, T. Alexander
+Harrison, Wallace
+Hart, Frederick
+Hart, James McDougal
+Hart, Letitia Bonnet
+Hart, 'Pop'
+Hart, Solomon Alexander
+Hart, William
+Hartigan, Grace
+Hartley, J. Scott
+Hartley, Marsden
+Hartrath, Lucie
+Hartung, Hans
+Harunobu
+Harushige, Suzuki
+Harvey, Bunny
+Harvey, Herbert Johnson
+Harvey, William
+Harwood, Francis
+Harwood, James Taylor
+Hasegawa Tohaku
+Haseltine, William Stanley
+Hashagen, A.
+Hashimoto, Okiie
+Haskell, Ernest
+Hassam, Childe
+Hassell, John
+Hasui, Kawase
+Hatch, Jim
+Hatcher, Brower
+Hatoum, Mona
+Hatt, Emilie Demant
+Hauer, Stanley
+Haughton, Matthew
+Haupers, Clement
+Hausmann, Raoul
+Havel, Joseph
+Havell, Robert
+Havell, William
+Havens, Leonard M.
+Hawkins, Basil
+Hawkins, Henry
+Hawkins, Louis Welden
+Hawthorne, Charles Webster
+Haxton, Elaine
+Hay, Gilbert
+Hayden, Henri
+Haydon, Benjamin Robert
+Hayes, Edwin
+Hayes, George A.
+Hayez, Francesco
+Hayls, John
+Hayman, Francis
+Haynes, Douglas Hector
+Haynes, F. Jay
+Haynes-Williams, John
+Haynie, Keith
+Hays, William Jacob
+Hayter, John
+Hayter, Sir George
+Hayter, Stanley William
+Haytley, Edward
+Hazelton, Mary Brewster
+He Baitao
+He Kongde
+He Tianjian
+Head, Guy
+Head, Tim
+Heade, Martin Johnson
+Healy, George P.A.
+Heaney, Charles
+Heaphy, Thomas
+Hearne, Thomas
+Heartfield, John
+Heath, Henry
+Heath, William
+HeavyShield, Faye
+Hébert, Adrien
+Hébert, Ernest
+Hébert, Pierre-Eugène-Emile
+Heckel, Erich
+Hecken, Abraham van der
+Heckman, Albert
+Heda, Gerret Willemsz.
+Heda, Willem Claesz.
+Heem, Cornelis de
+Heem, Jan Davidsz. de
+Heem, Jan Jansz. de
+Heemskerck, Maerten van
+Hegedus, Laszlo
+Heil, Daniel van
+Heilbuth, Ferdinand
+Heilmann, Mary
+Heim, François-Joseph
+Heimlich, Herman
+Heintz, Joseph
+Heintzelman, Arthur William
+Heizer, Michael
+Hejduk, John
+Held Jr., John
+Held, Al
+Held, Marion
+Helder, Zama V.
+Heller, Helen West
+Helm, Alison
+Helmbreker, Dirk
+Helmick, Ralph
+Helst, Bartholomeus van der
+Helzer, Richard
+Hemessen, Caterina van
+Hemessen, Jan Sanders van
+Heming, Arthur
+Hemy, Charles Napier
+Henderson, Charles Cooper
+Henderson, John
+Henderson, Joseph
+Henderson, Nigel
+Hendrickson, Daniel
+Henner, Jean-Jacques
+Hennessy, William John
+Hennings, E. Martin
+Henri, Robert
+Henry, Edward Lamson
+Hensel, Salome
+Hepher, David
+Hepworth, Barbara
+Herbert, John Rogers
+Herbin, Auguste
+Herlick, George
+Hernandez Pijuan, Joan
+Heron, Patrick
+Herrán, Saturnino
+Herrera Barnuevo, Sebastian de
+Herrera the Younger, Francisco de
+Herring, John Frederick
+Herter, Albert
+Herthel, Ludwig
+Hertle, James
+Herzog, Herman
+Hesse, Eva
+Hesselius, John
+Hessing, Valjean
+Heward, Prudence
+Hey, Jean
+Heyboer, Anton
+Heyden, Jan van der
+Heyden, Pieter van Der
+Heynsius, Kees
+Heysen, Hans
+Heywood, J.C.
+Hick, Jacqueline
+Hickey, Dale
+Hickey, Thomas
+Hickox, Elizabeth
+Hicks, Edward
+Hicks, George Elgar
+Hicks, Sheila
+Hicks, Thomas
+Hicks, William
+Hidalgo, Juan
+Higgins III, Edward F.
+Higgins, Eugene
+Higgins, Victor
+Highmore, Joseph
+Highstein, Jene
+Hildebrandt, Edward
+Hiler, Hilaire
+Hill, Anthony
+Hill, Carl Fredrik
+Hill, David Octavius
+Hill, John
+Hill, John William
+Hill, Thomas
+Hilliard, Nicholas
+Hillier, Tristram
+Hilling, John
+Hills, Anna Althea
+Hills, Laura Coombs
+Hills, Robert
+Hilton the Younger, William
+Hilton, Roger
+Himid, Lubaina
+Hind, William G.R.
+Hine, Lewis Wickes
+Hinkle, Clarence
+Hiratsuka, Un'ichi
+Hiroaki, Morino
+Hirosada
+Hiroshige II
+Hiroshige, Ando
+Hirsch, Joseph
+Hirschvogel the Elder, Veit
+Hirschvogel, Augustin
+Hirst, Claude Raguet
+Hirst, Damien
+Hirszenberg, Samuel
+Hitchcock, George
+Hitchcock, Harold
+Hitchens, Ivon
+Hnizdovsky, Jacques
+Hoare, Prince
+Hoare, Sir Richard Colt
+Hoare, William
+Hobbema, Meindert
+Höch, Hannah
+Hocking, Robert
+Hockney, David
+Hodges, Jim
+Hodges, William
+Hodgkin, Howard
+Hodgkins, Frances
+Hodler, Ferdinand
+Hoeck, Richard
+Hoecke, Jan van den
+Hoefnagel, Joris
+Hoerman, Carl
+Hofer, Carl
+Hoff, Rayner
+Hoffbauer, Charles
+Hoffman, Irwin
+Hoffman, Malvina
+Hoffmann, Hans
+Hoffmeister, George
+Hofland, Thomas Christopher
+Hofmann, Charles C.
+Hofmann, Hans
+Hofmeister, Andrew
+Hogarth, William
+Hogers, Jacob
+Hogue, Alexandre
+Hoin, Claude
+Hoit, Albert Gallatin
+Hokuei
+Hokusai Katsushika
+Holbein the Elder, Hans
+Holbein the Younger, Hans
+Holbein, Ambrosius
+Holberg, Ruth Langland
+Holcomb, Alice
+Holdstock, Alfred W.
+Holgate, Edwin
+Holiday, Henry
+Holl, Frank
+Holland, James
+Holland, Tish
+Hollar, Wenceslaus
+Hollósy, Simon
+Holm, Julius
+Holman, Francis
+Holmes, Kenneth
+Holmes, Melville
+Holmes, Tim
+Holoun, Hal
+Holroyd, Sir Charles
+Holsman, Elizabeth T.
+Holt, Nancy
+Holzer, Jenny
+Homer, Winslow
+Hon'ami Koetsu
+Hondius the Elder, Hendrik
+Hondius, Abraham
+Hone, Nathaniel
+Hoñgeeýesa
+Hong-Joo, Kim
+Hongren
+Honthorst, Gerrit van
+Hooch, Pieter de
+Hood, Raymond
+Hoogstraten, Samuel van
+Hook, Dr. Richard
+Hook, James Clarke
+Hook, Walter
+Hopfer, Daniel
+Hopfer, Hieronymous
+Hopkins, Frances Anne
+Hopkins, James R.
+Hopkins, Milton W.
+Hopper, Edward
+Hoppner, John
+Hopwood, Henry Silkstone
+Horemans the Elder, Jan Josef
+Hori, Tetsuzan
+Horn, Rebecca
+Horn, Roni
+Hornebout, Gerard
+Hornung, Preben
+Horsley, John Callcott
+Horton, William Samuel
+Hoskins, John
+Hosmer, Harriet Goodhue
+Hou Mougong
+Hou Yimin
+Houasse, Michel-Ange
+Houbraken, Jacobus
+Houdon, Jean-Antoine
+Houel, Jean
+Houghton, Arthur Boyd
+House, Gordon
+House, Seth
+Houser, Allan
+Houshiary, Shirazeh
+Hovenden, Thomas
+Hovey, Otis
+Howard, Bessie Jeannette
+Howard, Dan
+Howard, Edith Lucile
+Howard, Joseph
+Howe, Oscar
+Howitt, Samuel
+Howlett, Robert
+Hoyland, John
+Hron, Vincent
+Hu Yichuan
+Hu Yuan
+Hua Yan
+Huang Binhong
+Huang Lizhen
+Huang Xinbo
+Huang Zhou
+Hubbard, John
+Hubbard, Whitney
+Hubbell, Henry Salem
+Huber, Wolf
+Hudson, Grace Carpenter
+Hudson, Henry J.
+Hudson, Thomas
+Huet, Jean-Baptiste Marie
+Huet, Paul
+Huffman, Laton Alton
+Huge, Jurgan Frederick
+Huggins, William
+Huggins, William John
+Hughes, Arthur
+Hughes, Cornelius Jabez
+Hughes, Edward Robert
+Hughes, Patrick
+Hugo, Jean
+Hugo, Valentine
+Hugo, Victor
+Hugonin, James
+Hugue, Manuel
+Huguet, Jaume
+Huilliot, Pierre Nicolas
+Huizong, Emperor
+Hull, Lynne
+Hull, Marie Atkinson
+Humphrey, Jack
+Humphrey, Ralph
+Humphrey, Tom
+Humphreys, Charles S.
+Hundertwasser
+Hung Liu
+Hunt, Alfred William
+Hunt, Alice
+Hunt, Bryan
+Hunt, Calvin
+Hunt, Esther Anna
+Hunt, Mabelle Alcott
+Hunt, Richard
+Hunt, Tommy
+Hunt, William Henry
+Hunt, William Holman
+Hunt, William Morris
+Hunter, Colin
+Hunter, George Leslie
+Huntington, Anna V. Hyatt
+Huntington, Daniel
+Huntington, Elizabeth Hamilton
+Huntington, Jim
+Huntley, Victoria Hutson
+Huntoon, Mary
+Hurd, Peter
+Hurlstone, Frederick Yeates
+Hurrell, George
+Husain, M.F.
+Hussey, Giles
+Hustwick, C.
+Hutin, Charles-François
+Hutty, Alfred Heber
+Huysmans, Corneille
+Huysmans, Jacob
+Huysmans, Jean-Baptiste
+Huysum, Jan van
+Hyde, Helen
+Hyo-joong, Yun
+Ianelli, Arcângelo
+Ibbetson, Julius Caesar
+Ibels, Henri Gabriel
+Icaza, Ernesto
+Ihara, Michio
+Ihle, John
+Ike-no-Taiga
+Imber, Jonathan
+Immendorff, Joerg
+Immenraet, Philippe-Augustin
+Ince, Joseph Murray
+Inchbold, John William
+Indiana, Robert
+In-du, Ha
+Ingham, Charles Cromwell
+Inglés, Jorge
+Ingres, Jean-Auguste-Dominique
+Inman, Henry
+Innes, James Dickson
+Inness, George
+Innocenzo da Imola
+Inscription Painter, The
+Inurria, Mateo
+Inza, Joaquín
+Irvin, Albert
+Irvine, Wilson
+Irwin, Robert
+Isabey, Eugène
+Isabey, Jean Baptiste
+Isenbrant, Adriaen
+Ishikawa Komei
+Iskowitz, Gershon
+Israels, Isaac
+Israëls, Jozef
+Ito Jakuchu
+Itten, Johannes
+Ittenbach, Franz
+Ivanov, Alexander
+Ivanov, Andrei
+Ivanov, Sergei
+Ivanov, Victor
+Iverny, Jacques
+Ives, Chauncey B.
+Izquierdo, María
+Jack, Mabel Wellington
+Jack, Richard
+Jackson, A.Y.
+Jackson, Billy Morrow
+Jackson, Gilbert
+Jackson, John
+Jackson, Samuel Phillips
+Jackson, William Henry
+Jacob-Desmalter, François-Honoré-Georges
+Jacobello Del Fiore
+Jacobi, Otto
+Jacobsen, Antonio
+Jacobshagen, Keith
+Jacobson, Jake
+Jacobsz, Dirck
+Jacobsz, Lambert
+Jacometto
+Jacopino del Conte
+Jacopo del Sellaio
+Jacopo di Cione
+Jacopo di Domenico Foschi
+Jacopo Nizzola da Trezzo
+Jacopo, Meliore di
+Jacoulet, Paul
+Jacquand, Claudius
+Jacque, Charles Émile
+Jacquemart de Hesdin
+Jacquemart, Jules Ferdinand
+Jacquemin, Jeanne
+Jacquet, Mathieu
+Jacquette, Yvonne
+Jaffee, Jay
+Jalabeat, Charles François
+James, Alexander
+James, Alice Archer
+James, Frederick
+James, Rebecca Salsbury
+James, Will
+Jameson, Anne Brownell
+Jamieson, Bernice Evelyn
+Jamieson, Mitchell
+Jamin, Paul
+Janinet, Jean-François
+Janowitz, Joel
+Jansen, Franz M.
+Janssens, Abraham
+Jansson, Eugene
+Janvier, Alex
+Jarvis, Charles Wesley
+Jarvis, John Wesley
+Jawlensky, Alexei
+Jean de Liège
+Jean de Touyl
+Jeanne-Claude
+Jeaurat, Étienne
+Jefferys, James
+Jeffries, Jim
+Jegher, Christoffel
+Jenkins, Paul
+Jennewein, C. Paul
+Jenney, Neil
+Jennys, William
+Jénot, Paulin
+Jensen, Alfred
+Jensen, Christian Albrecht
+Jenssen, Olav Christopher
+Jerry Kruss
+Jess
+Jessup, Robert
+Jewell, Ron
+Jewett, William
+Ji, Byun Shi
+Jia Youfu
+Jiang Feng
+Jiang Tingxi
+Jihei, Sugimura
+Jiménez Aranda, Luis
+Jiménez, Luis
+Jin Shangyi
+Jin-kyu, Kwon
+Jocelyn, Nathaniel
+Johannot, Antoine
+John, Augustus
+John, Gwen
+John, Philip
+Johns, Jasper
+Johnsgard, Paul
+Johnson Jr., J. Seward
+Johnson, Charles Edward
+Johnson, Cornelius
+Johnson, David
+Johnson, Eastman
+Johnson, Frank Tenney
+Johnson, Isabelle
+Johnson, Joshua
+Johnson, Philip
+Johnson, Rae
+Johnson, Raymond
+Johnson, Sargent Claude
+Johnson, William H.
+Johnson-Calloway, Marie
+Johnston, Frank
+Johnston, John
+Johnston, Ynez
+Joli, Antonio
+Jollain, Nicolas-René
+Jonas, Louis Paul
+Jones, Allen
+Jones, Ben
+Jones, Bradley
+Jones, David
+Jones, Fay
+Jones, Francis Coates
+Jones, George
+Jones, Hugh Bolton
+Jones, Joe
+Jones, Loïs Mailou
+Jones, Luther
+Jones, Mildred
+Jones, Nell Choate
+Jones, Thomas
+Jones, William
+Jongh, Ludolf Leendertsz. de
+Jong-Hak, Kim
+Jonghelinck, Jacques
+Jongkind, Johan Barthold
+Jonson, Raymond
+Jónsson, Ásgrímur
+Joo, Michael
+Joos van Wassenhove
+Jordaens, Jacob
+Jordan, Samuel
+Josephson, Ernst
+Josetsu
+Joslin, Richard
+Joue II, Jacques de la
+Jouett, Matthew Harris
+Jouvenet, Jean
+Joy, George William
+Juan de Flandes
+Juan de Herrera
+Juan de Juni
+Juan de Villanueva
+Juanes, Juan de
+Juárez, Luis
+Juarez, Roberto
+Judd, Donald
+Judson, William Lees
+Juel, Jens
+Jules, Mervin
+Julien, Henri
+Julien, Pierre
+Jumbo, Julia
+Juvarra, Filippo
+Kabakov, Ilya
+Kabotie, Fred
+Kacere, John
+Kadishman, Menashe
+Kahlo, Frida
+Kahn, Albert
+Kahn, Wolf
+Kaiho Yusho
+Kainen, Jacob
+Kaisermann, Franz
+Kalf, Willem
+Kalleo, Josephina
+Kamenev, L.
+Kandinsky, Wassily
+Kane, Paul
+Kang Shiyao
+Kang Youwei
+Kano Eitoku
+Kano Hideyori
+Kano Motonobu
+Kano Sanraku
+Kano Sansetsu
+Kanpô, Yoshikawa
+Kantor, Morris
+Kapoor, Anish
+Karpik, Andrew
+Karsh, Yousuf
+Kartner Meister
+Käsebier, Gertrude
+Kass, Deborah
+Katz, Alex
+Katz, Cima
+Katzen, Lila
+Kauffmann, Angelica
+Kaufmann, Isidor
+Kaula, Lee Lufkin
+Kawakami, Sumio
+Kawano, Kaoru
+Kawara, On
+Kaye, Otis
+Kazuma, Oda
+Kcho
+Keane, John
+Keene, Charles Samuel
+Keesey, W.M.
+Keibun
+Keil, Bernhard
+Keirincx, Alexander
+Keisai Eisen
+Keisai Masayoshi
+Keith, Elizabeth
+Keith, William
+Keller, Henry
+Kelley, Mike
+Kelly, Ellsworth
+Kemeys, Edward
+Kemmelmeyer, Frederick
+Kempton, Elmira
+Kempton, Greta
+Kemp-Welch, Lucy
+Kendall, William Sergeant
+Kendrick, Mel
+Kennedy, Garry Neil
+Kennedy, Mary
+Kennedy, Shannon
+Kennington, Eric
+Kensett, George
+Kensett, John Frederick
+Kent, Corita
+Kent, Rockwell
+Kern, Dennis
+Kern, Leonhard
+Kerr, Charles Henry Malcolm
+Kerr, Illingworth Holey
+Kerr-Lawson, James
+Kersting, Georg Friedrich
+Kertész, André
+Kessel the Younger, Jan van
+Kessel, Jan van
+Kessler, Wynn
+Ketchum, Robert Glenn
+Ketel, Cornelis
+Kettle, Tilly
+Keuninck, Kerstiaen de
+Key, John Ross
+Keyl, Friedrich Wilhelm
+Keyser I, Hendrick de
+Keyser, Thomas de
+Khatchatur
+Khnopff, Fernand
+Khrutsky, Ivan
+Kick, Simon
+Kicking Bear
+Kidd, Joseph Bartholomew
+Kiefer, Anselm
+Kienerk, Giorgio
+Kienholz, Edward
+Kienholz, Nancy Reddin
+Kienzer, Michael
+Kiitsu, Suzuki
+Kim, Guilin
+Kimball, Wayne
+King, Carl
+King, Charles Bird
+King, John Henry Yeend
+King, Philip
+King, Ronald
+King, Samuel
+King, William
+Kingman, Dong
+Kinkade, Thomas
+Kinley, Peter
+Kinnard, W.
+Kinoshita, Tomio
+Kinson, François-Joseph
+Kinstler, Everett Raymond
+Kipp, Lyman
+Kippell, Niclauss
+Kipping, Brian
+Kiprensky, Orest
+Kirberg, Otto Karl
+Kirchner, Ernst Ludwig
+Kirkeby, Per
+Kirkland, Vance
+Kirmse, Marguerite
+Kirsch, Dwight
+Kirsta, Georg
+Kiss, Sámuel
+Kissel, Eleonora
+Kitaj, R.B.
+Kitaoka, Fumio
+Kiti, Mwama
+Kiyomasu, Torii
+Kiyomitsu, Torii
+Kiyonaga
+Kiyonobu
+Kiyonobu II, Torii
+Kiyotsune, Torii
+Klebe, Gene
+Klee, Paul
+Kleemann, Ron
+Klein, Yves
+Kleinholz, Frank
+Kleitsch, Joseph
+Kleophrades Painter, The
+Klimt, Gustav
+Kline, Franz
+Klinger, Max
+Klumpke, Anna Elizabeth
+Klunder, Tim
+Klutsis, Gustav
+Knapton, George
+Knaths, Karl
+Knaub, Ray
+Knauber, Alma Jordan
+Kneale, Bryan
+Kneller, Sir Godfrey
+Knight, Dame Laura
+Knight, Daniel Ridgway
+Knight, John Baverstock
+Knight, John Prescott
+Knight, John William Buxton
+Knight, Joseph
+Knight, Louis Aston
+Knight, Susan
+Knoebel, Imi
+Knott, Henry
+Knowles, Dorothy Elsie
+Knowles, Farquhar McGillivray
+Knowling, Kathleen
+Knox, Susan Ricker
+Knüpfer, Nicolaus
+Kobell, Wilhelm von
+Købke, Christen
+Koch, John
+Koch, Joseph Anton
+Koehler, Robert
+Koekkoek, Barend Cornelius
+Koekkoek, Willem
+Koellin, Peter
+Koerbecke, Johann
+Koerner, Henry
+Koester, Alexander
+Kogler, Peter
+Kogvik, Charlie
+Kokei, Tsuruya
+Kokoschka, Oskar
+Kolbe, Georg
+Koller, Rudolf
+Kollwitz, Käthe
+Konchalovsky, Pyotr
+Koninck, Philips
+Konrad of Soest
+Koo Mei
+Koons, Jeff
+Kooyoo Peter
+Kopman, Benjamin
+Korin, Pavel
+Korling, Torkel
+Korovin, Konstantin
+Koryusai
+Kosaka, Gajin
+Kossoff, Leon
+Kostabi, Mark
+Kosuth, Joseph
+Kotaku, Hosoi
+Kotondo, Torii
+Kounellis, Jannis
+Kouwenbergh, Philip van
+Kowal, Dennis
+Kozina, Sándor
+Krafft, Johann Peter
+Kraft, Adam
+Kramskoy, Ivan Nikolaevich
+Krasner, Lee
+Krehbiel, Albert H.
+Kremer, Nicolaus
+Kretsch, Karl
+Krieghoff, Cornelius
+Krohg, Christian
+Kroll, Leon
+Krøyer, Peder Severin
+Krueger, David
+Kruger, Barbara
+Kruger, Franz
+Krumper, Hans
+Krylov, Nikifor
+Kuang Yaoding
+Kubin, Alfred
+Kubinyi, Kalman
+Kubota, Itchiku
+Kubovy, Jirí
+Kuehne, Max
+Kuemmel, Cornelia
+Kuhn, Bob
+Kühn, Justus Engelhardt
+Kuhn, Walt
+Kuhnert, Friedrich Wilhelm
+Kuindzhi, Arkhip Ivanovich
+Kuitca, Guillermo
+Kuk-kwang, Chun
+Kuliuksin, Nektarii
+Kulmbach, Hans Süss von
+Kunc, Karen
+Kunichika
+Kunihiro, Utagawa
+Kunikazu
+Kunimasa
+Kunimasu
+Kunisada, Utagawa
+Kuniyoshi, Utagawa
+Kuniyoshi, Yasuo
+Kunst, Pieter Cornelisz.
+Kupferman, Lawrence E.
+Kupferman, Moshe
+Kupka, Frantisek
+Kurosaki, Akira
+Kusama, Yayoi
+Kustodiev, Boris
+Kuytenbrouwer, Martinus Adrianus
+Kuznetsov, Nikolai Dmitrievich
+Kuznetsov, Pavel
+Kwan-sik, Byeon
+Kyle, Joseph
+Kyoung Ae Cho
+Kyung-ja, Chun
+La Cave, Peter
+La Croix de Marseille, Charles
+La Farge, John
+La Fosse, Charles de
+La Hyre, Laurent de
+La Thangue, Henry H.
+La Tour, Georges de
+La Tour, Maurice Quentin de
+Labaudt, Lucien
+Labille-Guiard, Adélaïde
+Laboureur, Jean-Émile
+Labruzzi, Carlo
+Lachaise, Gaston
+Lacombe, Georges
+Lacoste, Charles
+Lacour, Pierre
+Lacroix, Paul
+Ladbrooke, Robert
+Ladd, Daniel
+Laemmle, Cheryl
+Laer, Pieter van
+LaFargue, Paulus Constantijn
+Lafrensen, Niclas
+Lagerino, Stefano
+Lagrenee, Jean-Jacques
+Lagrenée, Louis Jean François
+Laguardia, Eloy Giménez
+Lai Shaoqi
+Lai Sung
+Laib, Conrad
+Laidlay, William James
+Laing, Gerald
+Laing, J.S.
+Lairesse, Gerard de
+Lalanne, Maxime
+Lalique, René
+Lam, Wilfredo
+Lamb, A.A.
+Lamb, Andrian
+Lamb, Henry
+Lambdin, James Reid
+Lambert, George
+Lambert, George W.
+Lambert, James
+Lamberti, Piero di Niccolo
+Lami, Eugène
+Lamm, Leonid
+LaMore, Chet
+Lamqua
+Lan Ying
+Lancaster, Rev. Richard Hume
+Lance, George
+Lancret, Nicolas
+Landacre, Paul Hambelton
+Landeck, Armin
+Landelle, Charles
+Landini, Taddeo
+Landis, John
+Landseer, Charles
+Landseer, Sir Edwin Henry
+Lane, Fitz Hugh
+Lane, Samuel
+Lane, Theodore
+Laneuville, Jean-Louis
+Lanfranco, Giovanni
+Lange, Dorothea
+Langendijk, Dirk
+Langetti, Giovan Battista
+Langhans, Karl Ferdinand
+Langlois, Jérôme-Martin
+Laning, Edward
+Lanino, Bernardino
+LaNoue, Terrence
+Lansil, Walter Franklin
+Lanteri, Edouard
+Lanyon, Ellen
+Lanyon, Peter
+Lapointe, Frank
+Laporte, George Henry
+Laporte, John
+Laprade, Pierre
+Larciani, Giovanni
+Lardera, Berto
+Largillière, Nicolas de
+Larionov, Mikhail
+Larkin, William
+Laroon the Younger, Marcellus
+Larson, Philip
+Larsson, Carl
+Larter, Richard
+Lasansky, Mauricio
+Laserstein, Lotte
+Lash, Jon
+Lassaw, Ibram
+Lassnig, Maria
+Last, First name
+Lastman, Pieter
+Laszlo, Philip Alexius de
+Latham, John
+Lathrop, Ida Pulis
+Laurana, Francesco
+Laurence, Samuel
+Laurencin, Marie
+Laurens, Henri
+Laurens, Jean-Paul
+Laurent, Ernest
+Laurent, J.
+Laurent, Jean Antoine
+Laurent, Robert
+Laurie, Robert
+Lautensack, Hans Sebald
+Lauvergne, Barthelemy
+Lavery, Sir John
+Lavier, Bertrand
+LaVigne II, Joseph
+Law, Alfred
+Lawranson, Thomas
+Lawrence, Jacob
+Lawrence, Sir Thomas
+Lawson, Ernest
+Lay, Ernest
+Lazo, Agustín
+Lazzell, Blanche
+Le Barbier, Jean-Jacques-François
+Le Bas, Edward
+Le Blon, Jakob Christof
+Le Brun, Charles
+Le Court, Giusto
+Le Fauconnier, Henri
+Le Gros I, Pierre
+Le Gros II, Pierre
+Le Lorrain, Louis-Joseph
+Le Lorrain, Robert
+Le Mire, Noël
+Le Moyne, François
+Le Nain, Antoine
+Le Nain, Louis
+Le Nain, Mathieu
+Le Prince, Jean-Baptiste
+Le Secq, Henri Jean-Louis
+Le Sidaner, Henri Eugene Augustin
+Le Sueur, Eustache
+Lea, Tom
+Leader, Benjamin Williams
+Leal, Fernando
+Léandre, Charles
+Lear, Edward
+Lebourg, Albert
+Lebrun, Rico
+Leck, Bart van der
+LeClear, Thomas
+Lederer, Johann Georg
+Leduc, Ozias
+Lee, Doris
+Lee, Frederick Richard
+Lee, John
+Leech, John
+Leeke, Ferdinand
+Leen, Nina
+Lee-Smith, Hughie
+Lefebvre, Jules-Joseph
+Lefévre, Robert-Jacques-François
+Lega, Sylvestro
+Légaré, Joseph
+Léger, Fernand
+Legros, Alphonse
+Leheutre, Gustave
+Lehmann, Arthur
+Lehmann, Henri
+Lehmann, Rolf
+Lehmbruck, Wilhelm
+Lehmden, Anton
+Leibl, Wilhelm
+Leigh, William R.
+Leighton, A.C.
+Leighton, Clare
+Leighton, Frederic, Lord
+Leighton, Nicholas Winfield Scott
+Leirner, Jac
+Leitch, William Leighton
+Leleu, Jean-François
+Leluja
+Lely, Sir Peter
+Lemaire, Jean
+Lemberger, Georg
+Lemieux, Annette
+Lemieux, Jean Paul
+Lemmen, Georges
+Lemmens, Théophile-Victor-Emile
+Lemoine, Jacques Antoine Marie
+Lemoine, Marie-Victoire
+Lemoyne II, Jean-Baptiste
+Lemoyne, Jean-Louis
+Lempicka, Tamara de
+Lenbach, Franz von
+Lenders, Emil W.
+Lenepveu, Jules-Eugène
+Leningrad Painter, The
+Lennox, Lord William Pitt
+Lens, Bernard
+Lenson, Michael
+Leochares
+Leonardo da Vinci
+Leoncillo, Leonardi
+Leoni, Leone
+Leoni, Ottavio
+Leoni, Pompeo
+Leonid
+Lepère, Auguste-Louis
+Lepicié, Michael Nicolas-Bernard
+Lépine, Stanislas
+Lerman, Leonid
+Lermond, Charles C.E.
+Lerolle, Henry
+Leslie, Alfred
+Leslie, Charles Robert
+Lessore, John
+Letendre, Rita
+Leth, Harald
+Lethière, Guillaume
+Leu the Elder, Hans
+Leutze, Emanuel Gottlieb
+Levi, Julian
+Levine, Jack
+Levine, Marilyn
+Levine, Sherrie
+Levinthal, David
+Levitan, Isaak Il'ich
+Levitskii, Dmitrii Grigorevich
+Levitt, Helen
+Lévy, Emile
+Levy, Joan
+Lévy-Dhurmer, Lucien
+Lewandowski, Edmund
+Lewis, Edmonia
+Lewis, George Robert
+Lewis, Jennie
+Lewis, John Frederick
+Lewis, Lucy M.
+Lewis, Martin
+Lewis, Maud
+Lewis, Norman
+Lewis, Professor Henry
+Lewis, Wyndham
+Lewitt, Sol
+Lexier, Micah
+Leyden, Lucas van
+Leys, Hendrick
+Leyster, Judith
+L'hermitte, Léon Augustin
+Lheureux, Louis-Ernest
+Lhote, André
+Li Fangying
+Li Hua
+Li Huayi
+Li Huixian
+Li Kan
+Li Keran
+Li Kuchan
+Li Pingfan
+Li Qi
+Li Wenxi
+Li Xiongcai
+Liang Zhihe
+Liao Lu
+Liberale da Verona
+Liberi, Pietro
+Liberman, Alexander
+Lichanotus, Indris
+Lichtenstein, Roy
+Licinio, Bernardino
+Lie, Jonas
+Liebermann, Max
+Liebling, Jerome
+Liefrinck, Cornelius
+Lievens, Jan
+Ligeti, Antal
+Ligozzi, Jacopo
+Liles, Catharine
+Liljefors, Bruno Andreas
+Lillio, Andrea
+Limbach, Russell
+Limbourg, Hermann
+Limbourg, Jean
+Limbourg, Paul
+Limosin, Léonard
+Lin Fengmian
+Lin Gang
+Lin Liang
+Lin Sanzhi
+Lin Yong
+Lin, Maya
+Linares, Don
+Linburg, Sue
+Linder, Ronald F.
+Lindner, Richard
+Lindquist, Mark
+Lindquist, Melvin
+Lingelbach, Johannes
+Linnell, John
+Linton, William
+Liotard, Jean-Étienne
+Lipchitz, Jacques
+Lippi, Filippino
+Lippi, Fra Filippo
+Lippi, Raffaele
+Lipscomb, CD
+Lira, Pedro
+Lismer, Arthur
+Liss, Johann
+Lissitzky, El
+Little, Ken
+Littlefield, William Horace
+Littleton, Harvey K.
+Liu Danzhai
+Liu Guosong
+Liu Jiyou
+Liu Kuiling
+Liu Shiru
+Liu Wenfu
+Liu Wenxi
+Liu Xian
+Liu Zijian
+Liverseege, Henry
+Livingston, Alex
+Lixars, S.C.
+Lizars, William Home
+Lobe, Robert
+Lochner, Stephan
+Lochrie, Elizabeth
+Locke Jr. of Norbury, William
+Locke, Charles Wheeler
+Locker, Edward Hawke
+Lockey, Rowland
+Lockhart, Sharon
+Logan, James
+Loggan, David
+Logsdail, William
+Lomahaftewa, Dan V.
+Lombard, Lambert
+Lombard, Warren P.
+Lombardo, Antonio
+Lombardo, Lodovico
+Lombardo, Pietro
+Lombardo, Tullio
+Long Tingba
+Long, Amelia
+Long, Charles
+Long, Edwin
+Long, McKendree Robbins
+Long, Richard
+Long, Sydney
+Long, Ted
+Longhi, Alessandro
+Longhi, Barbara
+Longhi, Pietro
+Longo, Robert
+Longstaff, John
+Lonsdale, James
+Lonsing, François-Louis
+Loo, Jean Baptiste van
+Loop, Leota Williams
+Lopez Garcia, Antonio
+Lopez Hernandez, Julio
+López y Portaña, Vicente
+Lopez, Bernardo
+Lopez, Carlos
+Lopez, George
+Lopez, George T.
+Lord, Caroline
+Lorenz, Richard
+Lorenzetti, Ambrogio
+Lorenzetti, Pietro
+Lorenzetti, Ugolino
+Lorenzi, Stoldo
+Lorenzo di Credi
+Lorenzo Monaco
+Lorenzo Veneziano
+Loth, Johann Carl
+Lotto, Lorenzo
+Lotz, Károly
+Lou, Liza
+Loudoun, Edith Maud Rawdon-Hastings, Countess of
+Lough, John Graham
+Louis de Clercq
+Louis, Hubert-Noël
+Louis, Morris
+Louis, Victor
+Love, Jim
+Lovell, Shaun
+Lovet-Lorski, Boris
+Low, Bertha Lea
+Lowe, Truman
+Lowinsky, Thomas
+Lowry, Keith
+Lowry, Laurence S.
+Lozowick, Louis
+Lu Fusheng
+Lu Hui
+Lu Shoukun
+Lu Xun
+Lu Yanshao
+Lu Zhi
+Luber, Patrick
+Luca di Tommè
+Lucas Villamil, Eugenio
+Lucas, David
+Lucas, John Seymour
+Lucchesi, Bruno
+Luce, Maximilien
+Lucero, Michael
+Luchian, Stefan
+Lucier, Mary
+Lucioni, Luigi
+Ludins, Ryah
+Luini, Bernardino
+Luks, George
+Lum, Ken
+Luminais, Evariste-Vital
+Lumis, Harriet Randall
+Lumsden, Ernest Stephen
+Luna, James
+Lundeberg, Helen
+Lundeen, George
+Lundstrøm, Vilhelm
+Lungren, Fernand Harvey
+Luo Gongliu
+Luo Zhongli
+Lüpertz, Markus
+Lurçat, Jean
+Lurie, Nan
+Luscomb, William Henry
+Luzzo, Giovanni
+Lyall, Laura Muntz
+Lydos
+Lyman, John Goodwin
+Lysippides Painter, The
+Lysippus
+Ma Yuan
+Maas the Younger, Johannes
+Mabe, Manabu
+Mabuse
+Macartney, Carlile Henry Hayes
+Mac'Avoy
+Maccallum, Andrew
+MacCameron, Robert Lee
+Macció, Rómulo
+Macdonald, Georgina
+MacDonald, J.E.H.
+MacDonald, J.W.G.
+MacDonald, Margaret
+Macdonald-Wright, Stanton
+MacDowell, Patrick
+Machiavelli, Zanobi
+MacIver, Loren
+MacKay
+Macke, August
+Mackennal, Bertram
+Mackenzie, Frederick
+Mackey, Beatrice Howie
+Mackie, Ray
+Mackintosh, Charles Rennie
+MacLaughlan, Donald Shaw
+Maclise, Daniel
+MacMonnies, Frederick W.
+MacMonnies, Mary Fairchild
+MacNair, Frances
+Macnair, Herbert
+MacNee, Colin
+MacNeil, Hermon Atkins
+Macomber, Mary
+MacPherson, Robert
+Macrae, Emma Fordyce
+MacRitchie, Lewis
+Maddelena Master
+Mader, Louis
+Maderno, Stefano
+Madrazo y Agudo, Jose De
+Madrazo y Garreta, Raimundo de
+Madrazo y Küntz, Federico de
+Maes, Nicolaes
+Maestosi, Francesco
+Maestro Pugliese-Abruzzese
+Maffei, Francesco
+Maganza, Alessandro
+Maggiotto, Domenico
+Magnasco, Alessandro
+Magner, Philippe
+Magritte, René
+Mahaffey, Merrill
+Mahdi, Muhammad
+Maher, Alice
+Mahon, Josephine
+Mahoney, Mike
+Mai Xianyang
+Maillol, Aristide
+Mainardi, Sebastiano
+Maine, Camillo
+Maineri, Francesco
+Mainolfi, Luigi
+Mair von Landshut
+Mais, Hilarie
+Maisch, Johann
+Maitani, Lorenzo
+Maitland, Paul
+Major, Ernest Lee
+Makart, Hans
+Makovsky, Konstantin Egorovich
+Makowski, Tadeusz
+Malbone, Edward Greene
+Malchair, John Baptist
+Maldonado, Alexander A.
+Maler zu Schwaz, Hans
+Malevich, Kasimir
+Malfatti, Anita
+Malinconico, Nicola
+Mallet, Jean-Baptiste
+Mallo, Maruja
+Malone, Robert R.
+Malouel, Jean
+Malpass, Michael
+Maltese, Francesco
+Maltwood, Katherine Emma
+Man Ray
+Mander, Karel van
+Mandijn, Jan
+Mandlebaum, Bill
+Manessier, Alfred
+Manet, Édouard
+Manfredi, Bartolomeo
+Mangold, Robert
+Mangold, Sylvia Plimack
+Mangos, Simone
+Manguin, Henri
+Manley, Thomas
+Mann, J.H.S.
+Mann, Sally
+Manship, Paul
+Manson, James Bolivar
+Mansueti, Giovanni
+Mantegazza, Antonio
+Mantegazza, Cristoforo
+Mantegna, Andrea
+MANUAL
+Manuel, Niklaus
+Man-young, Han
+Manzoni, Piero
+Manzù, Giacomo
+Manzuoli, Tommaso
+Mao Lizi (Zhang Zhunli)
+Maoye, Sheng
+Ma-Pe-Wi
+Mapplethorpe, Robert
+Maratta, Carlo
+Marc, Franz
+Marca-Relli, Conrad
+Marchesini, Alessandro
+Marchiori, Giovanni
+Marcillat, Guillaume de
+Marcks, Gerhard
+Marco d'Oggiono
+Marcoussis, Louis
+Marden, Brice
+Marées, Hans von
+Marescotti, Antonio
+Margaritone d'Arezzo
+Margolies, Samuel
+Mariani, Camillo
+Mariani, Carlo Maria
+Marie, Jane Golding
+Marieschi, Michele Giovanni
+Marilhat, Prosper
+Marillier, Clément Pierre
+Marin, Javier
+Marin, John
+Marinali, Orazio
+Marinari, Onorio
+Marinetti, Filippo Tommaso
+Marini, Marino
+Marioni, Dante
+Marioni, Joseph
+Maris, Jacob Henricus
+Maris, Matthijs
+Maris, Willem
+Marisaldi, Eva
+Marisol
+Mark, George Washington
+Mark, Mary Ellen
+Markham, Kyra
+Markow, Jack
+Marks, Henry Stacy
+Marlow, William
+Marmion, Simon
+Marmitta, Francesco
+Marochetti, Carlo
+Maron, Anton von
+Marquet, Albert
+Marquez de Velasco, Esteban
+Marsh, Reginald
+Marshall, Benjamin
+Marsingall, A.
+Marsy II, Gaspard
+Marsyas Painter, The
+Marta, Luigi
+Martens, Conrad
+Martens, Willem
+Martin, Agnes
+Martin, Charles
+Martin, David Stone
+Martin, Dennis
+Martin, Douglas
+Martin, Elias
+Martin, Henri
+Martin, Homer Dodge
+Martin, John
+Martin, Thomas Mower
+Martineau, Robert Braithwaite
+Martinek, Dwight
+Martinelli, Giovanni
+Martinez, Julian
+Martinez, María
+Martinez, Santana
+Martini, Arturo
+Martini, Simone
+Martino di Bartolomeo di Biago
+Martorell, Bernardo
+Maruyama Okyo
+Masaccio
+Masaji Yoshida
+Masanobu, Okumura
+Masayoshi, Kitao
+Mascherini, Marcello
+Masek, Vitezlav Karel
+Maso di Banco
+Masolino da Panicale
+Mason, Elaine
+Mason, George
+Mason, James
+Mason, Maud Mary
+Mason, Raymond
+Mason, Roy
+Masson, André
+Massou, Benoît
+Massys, Quentin
+Master A.C.
+Master A.G.
+Master B. of the Die
+Master Bertram
+Master E.S.
+Master F.V.B.
+Master I.K.
+Master Jacomo
+Master LCz
+Master M.S.
+Master M.Z.
+Master of 1419
+Master of Apollo and Daphne
+Master of Female Half-Lengths
+Master of Flora
+Master of Frankfurt
+Master of Heiligenkreuz
+Master of Hoogstraeten
+Master of Jánosrét
+Master of Mary of Burgundy
+Master of Pratovecchio
+Master of Saint Francis
+Master of Saint Gilles
+Master of Saint Gregory
+Master of Saint Veronica
+Master of San Francesco Bardi
+Master of San Jacopo a Mucciana
+Master of Santo Spirito
+Master of the Acts of Mercy
+Master of the Aix-en-Chapel Altarpiece
+Master of the Annunciation to the Shepherds
+Master of the Augsburg Visitation
+Master of the Avignon School
+Master of the Bardi Saint Francis
+Master of the Baroncelli Portraits
+Master of the Battle of Fornovo
+Master of the Berswordt Altar
+Master of the Candle
+Master of the Castello Nativity
+Master of the Coburg Roundels
+Master of the Codex of Saint George
+Master of the Cypresses
+Master of the David and Saint John Statuettes
+Master of the Dinteville Allegory
+Master of the Dominican Effigies
+Master of the Duke of Bedford
+Master of the Embroidered Foliage
+Master of the Fogg Pietà
+Master of the Franciscan Crucifixes
+Master of the Griselda Legend
+Master of the Holy Family
+Master of the Housebook
+Master of the Joseph Legend
+Master of the Karlsruhe Passion
+Master of the Khanenko Adoration
+Master of the Latour d'Auvergne Triptych
+Master of the Life of Saint John the Baptist
+Master of the Life of the Virgin
+Master of the Magdalen Legend
+Master of the Manna
+Master of the Marble Madonnas
+Master of the Mascoli Altar
+Master of the Middle-Rhine
+Master of the Morrison Triptych
+Master of the Osservanza
+Master of the Pfullendorf Altar
+Master of the Playing Cards
+Master of the Polling Panels
+Master of the Portraits of the Princes
+Master of the Prado's Adoration of the Magi
+Master of the Procession
+Master of the Rebel Angels
+Master of the Retablo of the Reyes Catolicos
+Master of the Rinuccini Chapel
+Master of the Saint Bartholomew Altarpiece
+Master of the Saint Catherine Legend
+Master of the Saint Lucy Legend
+Master of the Saint Ursula Legend
+Master of the Stötteritz Altar
+Master of the Tegernsee Passion
+Master of the Thuison Altarpiece
+Master of the Tibertine Sibyl
+Master of the View of Sainte Gudule
+Master of Virgo inter Virgines
+Master S.
+Masters of the Fontainebleau
+Masters, E.
+Mastroianni, Umberto
+Mastro-Valerio, Alessandro
+Matejko, Jan
+Matham, Jacob
+Mathews, Arthur Frank
+Matisse, Henri
+Matisse, Paul
+Matsubara, Naoko
+Matta, Roberto
+Matta-Clark, Gordon
+Matteis, Paolo de'
+Matteo da Gualdo
+Matteo di Giovanni
+Matteson, Tompkins Harrison
+Matthews, Marmaduke
+Mattiacci, Eliseo
+Mattioli, Carlo
+Mattis-Teutsch, Hans
+Matulka, Jan
+Maufra, Maxime
+Maulbertsch, Franz Anton
+Mauperché, Henri
+Maureau, Alphonse
+Maurer, Alfred Henry
+Mauve, Anton
+Maverick, Peter Rushton
+Max, Peter
+Maxence, Edgar
+Maxwell, Donald
+May, Phil
+Mayall, John Jabez Edwin
+Mayer, Frank Blackwell
+Mayer-Lamartinière, Marie-Françoise-Constance
+Mayhew, Frederick W.
+Mayno, Juan Bautista
+Mayr, Christian
+Mazo, Juan Bautista Martínez del
+Mazzacurati, Marino
+Mazzinghi, Pietro
+Mazzola Bedoli, Girolamo
+Mazzolino, Ludovico
+Mazzoni, Guido
+Mazzucconi, Marco
+Mazzuoli, Giuseppe
+McAvoy, Marilyn
+McBey, James
+McCarthy, Catherine
+McCarthy, Gail
+McCartney, Linda
+McCaslin, Jack
+McCloskey, William J.
+McCollum, Allan
+McCubbin, Frederick
+McDermott, Emma
+McEvoy, Ambrose
+McEwen, John
+McFarlane, Duncan
+McGee, Charles
+McIntosh, Harrison
+McKenzie, Robert Tait
+McKissick, Louise
+McLaughlin, John
+McLean, Richard
+McLean, T.W.
+McMaster, Gerald
+McMillan, Leo
+McMillen, Michael
+McNeil, George
+McNicoll, Helen
+McSheehy, Cornelia
+McTaggart, William
+McVeigh, Blanche
+Mead, Mary
+Mead, Ray
+Meadows, Bernard
+Meatyard, Ralph Eugene
+Meckenem, Israhel van
+Meegan, Tim
+Mehoffer, Józef
+Meidias Painter, The
+Meidner, Ludwig
+Meireles de Lima, Vítor
+Meissner, Leo J.
+Meissonier, Jean-Louis-Ernest
+Meistermann, Georg
+Meit, Conrad
+Melchers, Gari
+Meldrum, Max
+Meleager Painter, The
+Meléndez, Luis Egidio
+Mellan, Claude
+Mellery, Xavier
+Melli, Roberto
+Mellis, Margaret
+Melotti, Fausto
+Melozzo da Forlí
+Melrose, Andrew
+Meltsner, Paul
+Melville, Arthur
+Melzi, Francesco
+Memling, Hans
+Memmi, Lippo
+Menabuoi, Giusto de
+Méndez, Leopoldo
+Mendieta, Ana
+Mendoza, June
+Mene, Pierre-Jules
+Meneses Osorio, Francisco
+Mengin, Charles August
+Mengs, Anton Raphael
+Menière, Paul-Nicolas
+Mennie, Steve
+Menpes, Mortimer
+Menzel, Adolf von
+Menzler-Payton, Bertha
+Mercié, Marius-Jean-Antonin
+Mercier, Philip
+Meredith, John
+Merian, Maria Sibylla
+Mérida, Carlos
+Merivale, Francis
+Merle, Hugues
+Merritt, Anna Lea
+Meryon, Charles
+Merz, Mario
+Merz, Marisa
+Messager, Annette
+Messerschmidt, Franz Xaver
+Messina, Francesco
+Mestrovic, Ivan
+Met de Bles, Henry
+Metcalf, Willard Leroy
+Meteyard, Sidney
+Metson, Graham
+Metsu, Gabriel
+Metzinger, Jean
+Metzner, Barry 
+Meulen, Adam-Franz van der
+Meulen, Steven van der
+Meurer, Charles A.
+Meyer II, Hendrik de
+Meyer, James
+Meyer, Johann Georg
+Meyerowitz, Joel
+Meytens, Martin van
+Mi Fu
+Michaels, James
+Michallon, Achille Etna
+Michalov, Ann
+Michel, Alfonso
+Michel, Georges
+Michelangelo Buonarroti
+Michele da Verona
+Michele Pannonio
+Micheli, Parrasio
+Michelin, Jean
+Michelli, Andrea
+Michelmore, Richard
+Michelozzo di Bartolomeo
+Miel, Jan
+Mielatz, Charles Frederick William
+Mielich, Hans
+Miereveld, Michiel Jansz.
+Mieris the Elder, Frans van
+Mieris, Jan van
+Mieris, Willem van
+Mies van der Rohe, Ludwig
+Mignard, Nicolas
+Mignard, Pierre
+Mignon, Abraham
+Mignot, Louis Rémy
+Mijn, Frans van der
+Milani, Aureliano
+Milani, Umberto
+Millais, John Everett
+Millar, James
+Millares Sall, Manuel
+Miller, Alfred Jacob
+Miller, Dewey
+Miller, Fred E.
+Miller, George M.
+Miller, James
+Miller, Kenneth Hayes
+Miller, Melissa
+Miller, Richard
+Miller, Richard Emil
+Miller, Ross
+Miller, Sally
+Miller, Samuel
+Miller, William Rickarby
+Millet, Francis Davis
+Millet, Francisque
+Millet, Jean-François
+Millier, Arthur H.
+Millington, Professor
+Milne, David
+Minguzzi, Luciano
+Minne, George
+Mino da Fiesole
+Minor, Anne Rogers
+Minozzi, Flaminio Innocenzo
+Minton, John
+Mir, Joaquín
+Mirbel, Lizinka-Aimée-Zoé de
+Miró, Joan
+Mirola, Girolamo
+Miseroni, Ottavio
+Mitchell, Joan
+Mitchnick, Nancy
+Mitsunobu, Hasegawa
+Miyajima, Tatsuo
+Mocetto, Girolamo
+Mochi, Francesco
+Moderno
+Modersohn-Becker, Paula
+Modigliani, Amadeo
+Modotti, Tina
+Moeller, Louis Charles
+Mohalyi, Yolanda
+Moholy-Nagy, László
+Mohrmann, John Henry
+Moillon, Louisa
+Mola, Pier Francesco
+Moldvay, Albert
+Molenaer, Jan Miense
+Molinari, Guido
+Moll, Carl
+Molyn, Pieter de
+Molzahn, Johannes
+Momper II, Joos de
+Mompó, Manuel Hernández
+Monaldi, Paolo
+Monamy, Peter
+Mondrian, Piet
+Monet, Claude
+Monnington, Sir Thomas
+Monnot, Pierre Étienne
+Monnoyer, Jean-Baptiste
+Monro, Dr. Thomas
+Montagna, Bartolomeo
+Montañez, Juan Martinez
+Montardier
+Montenegro, Roberto
+Montgomerie, Stewart
+Monti, Francesco
+Monti, Gaetano
+Monticelli, Adolphe-Joseph-Thomas
+Montorsoli, Giovanni Angelo
+Montoya, Gustavo
+Monvoisin, Raymond
+Moody, Ronald
+Moon-seup, Shim
+Moore 1831-1895, Henry
+Moore, Albert Joseph
+Moore, Charles
+Moore, Henry
+Moore, T.
+Moore-Park, Carton
+Mooy, Jan
+Mopope, Stephen
+Moppett, Carroll
+Mor, Anthonis
+Mora, Francis Luis
+Moraldo, Paolo
+Morales, Luis de
+Moran, Edward
+Moran, Kate
+Moran, Thomas
+Morandi, Giorgio
+Mordecai, Joseph
+More, Jacob
+Moreau, Gustave
+Moreau, Jean-Michel
+Moreau, Louis Gabriel
+Moreau, Luc-Albert
+Moreelse, Paulus
+Morellet, François
+Moret, Henri
+Moretto da Brescia
+Morgan, Barbara
+Morgan, Georgia Weston
+Morgan, Leslie
+Morgan, William Evan Charles
+Mori Yoshitoshi
+Mori, Camilo
+Mori, Mariko
+Morimura, Yasumasa
+Morisot, Berthe
+Moriyama, Daido
+Morlaiter, Giovan Maria
+Morland, George
+Morland, Henry Robert
+Morley, Eugene
+Morley, Malcolm
+Morlotti, Ennio
+Moro, Liliana
+Moroles, Jesús Bautista
+Moroni, Giovanni Battista
+Moronobu, Hishikawa
+Morrice, James Wilson
+Morris, Charles
+Morris, George L.K.
+Morris, glassmaker William
+Morris, Philip Richard
+Morris, Robert
+Morris, Sir Cedric
+Morris, William
+Morris, Wright
+Morrison, George
+Morrisseau, Norval
+Morse, Samuel F.B.
+Mortensen, Richard
+Mortimer, John Hamilton
+Morton, Andrew
+Morton, Christina
+Moses, Ed
+Moses, Grandma
+Moses, Henry
+Mosnier, Jean-Laurent
+Mossa, Gustave Adolphe
+Mostaert, Jan
+Motherwell, Robert
+Motley, Archibald
+Mottet, Jeanie Gallup
+Mottez, Victor
+Moucheron, Isaac de
+Moulin, Hypolyte-Alex-Andre-Julien
+Mount, William Sidney
+Mowbray, H. Siddons
+Moynihan, Rodrigo
+Mu Xi
+Muccini, Marcello
+Mucha, Alphonse
+Mueller, Otto
+Muerarity, R. Bruce
+Mühl, Otto
+Mulier, Pieter
+Müller, Charles
+Müller, Fritz
+Muller, Jan H.
+Müller, William James
+Mullican, Matt
+Mulready, William
+Multscher, Hans
+Munakata, Shiko
+Munari, Cristoforo
+Munch, Edvard
+Munger, Gilbert
+Munkácsy, Mihály
+Munn, Paul Sandby
+Munnings, Sir Alfred James
+Muñoz Martinez, Lucio
+Muñoz, Juan
+Münter, Gabriele
+Muray, Nickolas
+Murch, Walter
+Murillo, Bartolomé Esteban
+Murphy, Catherine
+Murphy, Deborah
+Murphy, John Francis
+Murphy, John J.A.
+Murphy, Minnie Lois
+Murphy, Myles
+Murphy, Nelly Littlehale
+Murray, Albert K.
+Murray, Charles Fairfax
+Murray, Dr. John
+Murray, Elizabeth
+Murray, Robert
+Musgrave, George
+Musikiysky, Grigoriis
+Musscher, Michiel van
+Mussoff, Jody
+Muybridge, Eadweard
+Muziano, Girolamo
+Myers, Jerome
+Mytens the Elder, Daniel
+Nadar, Félix
+Nadelman, Elie
+Nagahide, Yûrakusai
+Nahl, Charles Christian
+Nakian, Reuben
+Naldini, Giovanni Battista
+Namingha, Dan
+Nampeyo
+Nanni di Banco
+Nanni di Bartolo
+Nanteuil, Célestin François
+Nanteuil, Robert
+Naples Painter, The
+Nardo di Cione
+Nardo, Mariotto di
+Narovec, G.
+Nash, David
+Nash, Frederick
+Nash, John
+Nash, Paul
+Nasmyth, Patrick
+Nason, Gertrude
+Nason, Thomas Willoughby
+Nast, Thomas
+Natkin, Robert
+Natoire, Charles Joseph
+Natt, Phoebe Davis
+Nattes, John Claude
+Nattier, Jean-Marc
+Nauman, Bruce
+Navez, François-Joseph
+Nay, Ernst Wilhelm
+Naylor, Marie J.
+Neagle, John
+Neale, John Preston
+Nebot, Balthazar
+Neeffs I, Peeter
+Neel, Alice
+Neel, David
+Neer, Aert van der
+Neer, Eglon Hendrick van der
+Neff, Bill
+Nègre, Charles
+Negri, Mario
+Nehlig, Victor
+Nelson, Eric
+Nerdrum, Odd
+Nerger, Ethel Pearce
+Neri di Bicci
+Neri, Manuel
+Neroccio
+Nesbitt, Lowell
+Nesfield, William Andrews
+Nesterov, Mikhail Vasil'evich
+Netscher, Caspar
+Netzer, Don
+Neufchatel, Nicolas
+Neumann, Gilbert F.
+Neuville, Alphonse-Marie-Adolphe de
+Nevelson, Louise
+Nevinson, Christopher Richard Wynne
+Nevitt, Richard Barrington
+Newdigate, Ann
+Newhall, Harriot
+Newman, Barnett
+Newman, John
+Newman, Richard
+Newns, Bill
+Newton, Ann Mary
+Newton, Gilbert Stuart
+Newton, Lilias Torrance
+Newton, Sir William
+Niccolò d'Angelo
+Niccolo Dell'Arca
+Niccolo di Buonaccorso
+Niccolò di Ser Sozzo Tegliacci
+Niccolò Fiorentino
+Nicholls, Burr
+Nicholls, Rhoda Holmes
+Nichols, Dale
+Nicholson, Ben
+Nicholson, Francis
+Nicholson, Mabel
+Nicholson, Sir William
+Nicholson, Thomas Henry
+Nicholson, Winifred
+Nick, George
+Nickel, Grace
+Niclaus of Haguenau
+Nicodemo da Guardiagrele
+Nicol, Erskine
+Nicola da Urbino
+Nicola di Maestro Antonio d'Ancona
+Nicolaus
+Nicoll, Marion
+Nicolò
+Nicolo da Bologna
+Nicolo de Bonis
+Nicosia, Nic
+Nielsen, Jais
+Nielsen, Kay
+Nilsson, Gladys
+Niobid Painter, The
+Nitsch, Hermann
+Nix, Darwin
+Nixon, Job
+Nixon, John
+Noda, Tetsuya
+Noel, Scott
+Nogari, Giuseppe
+Noguchi, Isamu
+Nolan, Sidney
+Noland, Cady
+Noland, Kenneth
+Nolde, Emil
+Nollekens, Joseph
+Nonell, Isidro
+Nooms, Reinier
+Noordt, Joan van
+Nordfeldt, Bror Julius Olsson
+Nordman, Maria
+North, F.E.
+Northcote, James
+Noseworthy, George
+Nourse, Elizabeth
+Novelli, Pietro Antonio
+Nunez de Villavicencio, Pedro
+Nunez del Valle, Pedro
+Nuñez, Guillermo
+Nutt, Jim
+Nuvaquirq, Mosesie
+Nuvolone, Carlo Francesco
+Nuyen, Wijnand
+Nuzi, Allegretto
+Oakley, Violet
+Óbidos, Josefa de
+O'Brien, John
+O'Brien, Lucius R.
+Ocampo, Isidoro
+Ochsner, Ernest
+Ochtervelt, Jacob
+Ochtman, Dorothy
+Ochtman, Mina Fonda
+O'Connor, James Arthur
+Odjig, Daphne
+Odom, Randy E.
+Oelschig, Augusta
+Offner, Elliot
+Ogata Korin
+O'Gorman, Juan
+O'Higgins, Pablo
+Ohr, George E.
+Ohtake, Tomie
+O'Keeffe, Georgia
+Oldenburg, Claes
+Oldermann
+Oldfield, Otis W.
+Olds, Elizabeth
+Oliveira, Nathan
+Oliver, Isaac
+Oliver, Madge
+Oliver, T. Clark
+Oliver, William
+Olowe of Ise
+Oltos
+Omaha Painter, The
+Onderdonk, Robert
+O'Neill, George Bernard
+Onofrij, Crescenzio
+Onofrio, Judy
+Onosato, Toshinobu
+Oonark, Jessie
+Oost the Elder, Jacob van
+Oostsanen, Jacob Cornelisz van
+Opalka, Roman
+Opazo Bernales, Rodolfo
+Opie, John
+Opie, Julian
+Opitz, Georg Emanuel
+Oppenheim, Dennis
+Oppenheim, Meret
+Oppenheim, Moritz Daniel
+Oppenheimer, J.
+Opstal, Gerard van
+Oram, W.
+Orazio De Ferrari
+Orcagna, Andrea di
+Orchardson, Sir William Quiller
+Orley, Bernaert van
+Orloff, Gregory
+Orozco Romero, Carlos
+Orozco, José Clemente
+Orpen, Sir William
+Orrente, Pedro
+Orsi, Lelio
+Orso
+Ortiz, Angel
+Ortiz, Francisco Pradilla
+Ortman, George
+Ortolano Ferrarese
+Ortuzar Worthington, Carlos
+Os, Pieter Gerardus van
+Osai
+Osbert, Alphonse
+Osborn, Emily Mary
+Osborn, William Evelyn
+Osborne, Malcolm
+Osborne, Michael
+Osborne, Walter Frederick
+Osgood, Charles
+Oshuitoq, Ningeeuga
+Osorio, Pepón
+Ossorio, Alfonso
+Ostade, Adriaen van
+Ostade, Isaack van
+Osthaus, Edmund Henry
+Osuitok, Ipeelee
+O'Sullivan, Timothy
+Oteiza Embil, Jorge de
+Otero, Paul
+Otterson, Joel
+Ottley, William Young
+Ouattara
+Oudry, Jean-Baptiste
+Ouizille, Charles
+Ouless, Walter William
+Oulton, Thérèse
+Oursler, Tony
+Outterbridge, John
+Ovens, Jürgen
+Overbeck, Johann Friedrich
+Owen, William
+Pablo de San Leocadio
+Pacecco de Rosa
+Pacher, Michael
+Pacino di Bonaguida
+Paelinck, Joseph
+Pagani, Gregorio
+Paganin, Giovanni
+Page, Edward A.
+Page, William
+Pai, John
+Paik, Nam June
+Pajou, Augustin
+Palacios, Francisco de
+Paladino, Mimmo
+Palazuelo, Pablo
+Palencia, Benjamín
+Palissy, Bernard
+Palladio, Andrea
+Palma Giovane
+Palma Vecchio
+Palmer, Alfred Herbert
+Palmer, Erastus Dow
+Palmer, Frances Flora Bond
+Palmer, Herbert S.
+Palmer, Samuel
+Palmezzano, Marco
+Pamphaios
+Pan Painter, The
+Pan Tianshou
+Pan Yuliang
+Panamarenko
+Pancetti, José
+Pancho V
+Pang Tao
+Pang Xunqin
+Pannini, Giovanni Paolo
+Panunzi, Benito
+Paolini, Giulio
+Paolo di Giovanni Fei
+Paolo Romano
+Paolo Veneziano
+Paolozzi, Eduardo
+Papageorge, Georgie
+Papéty, Dominique Louis
+Parenzano, Bernardino
+Paris, Matthew
+Parish, David
+Park, David
+Park, Linton
+Parker, Barry
+Parker, Lawton
+Parker, William A.
+Parks, Gordon
+Parler, Peter
+Parmigianino
+Parodi, Filippo
+Parr
+Parr, Mike
+Parris, Edmund Thomas
+Parrish, Maxfield
+Parrott, William
+Pars, William
+Parsons, Alfred
+Parsons, Charles
+Parsons, Paul
+Partridge, Nehemiah
+Partridge, Roi
+Pascali, Pino
+Paschke, Edward
+Pascin, Jules
+Pasinelli, Lorenzo
+Pasmore, Victor
+Pasquier, Pierre
+Passeri, Giuseppe
+Passerotti, Bartolomeo
+Patas, Charles Emmanuel
+Patel, Pierre
+Pater, Jean-Baptiste Joseph
+Patinir, Joachim
+Paton, Sir Joseph Noel
+Patrick, James McIntosh
+Pattein, Cesar
+Patten, George
+Patten, William
+Paudiss, Christopher
+Paul, Joseph
+Paulsen, Brian
+Paxson, Edgar S.
+Paxson, Ethel
+Paxton, William McGregor
+Payette, Jacques
+Payne, Edgar Alwin
+Payne, Elsie
+Payne, Henry Arthur
+Payne, Jon, CML
+Payne, William
+Peake, Robert
+Peale, Anna Claypoole
+Peale, Charles Willson
+Peale, Harriet Cany
+Peale, James
+Peale, Margaretta Angelica
+Peale, Mary
+Peale, Raphaelle
+Peale, Rembrandt
+Peale, Rubens
+Peale, Sarah Miriam
+Peale, Titian
+Pearce, Charles Sprague
+Pearce, Edward
+Pearce, Gary
+Pearlstein, Philip
+Pearson, Bruce
+Pearson, Marguerite Stuber
+Pearson, Mary Martha
+Pechstein, Max
+Pecht, August Friedrich
+Peck, Augustus H.
+Pedro de la Cuadra
+Pedro de Mena
+Peed, Michael
+Peel, Paul
+Peeters I, Bonaventura
+Peeters, Clara
+Pei, I.M.
+Pelham, Peter
+Pellan, Alfred
+Pellegrin, Honoré
+Pellegrini, Domenico
+Pellegrini, Giovanni Antonio
+Pelouse, Léon-Germain
+Pels, Marsha
+Pemberton, Sophie
+Peña, Tonita
+Penck, A.R.
+Pencz, Georg
+Pène du Bois, Guy
+Penn, Irving
+Pennell, Joseph
+Penni, Giovan Francesco
+Pennington, Bud
+Pennington, Harper
+Penone, Giuseppe
+Penrose, Sir Roland
+Pensionante del Saraceni
+Pepion, Ernie
+Pepper, Beverly
+Peracino, Lorenzo
+Percy, Lady Susan Elizabeth
+Pereda, Antonio de
+Perehudoff, William
+Pereira, I. Rice
+Peress, Gilles
+Perez, Augusto
+Perignon I, Alexis Nicolas
+Perino del Vaga
+Perlin, Rae
+Permoser, Balthasar
+Perraud, Philibert
+Perréal, Jean
+Perrin, Philippe
+Perronneau, Jean-Baptiste
+Perry, Clara Greenleaf
+Perry, Lilla Cabot
+Persico, Mario
+Perugini, Charles E.
+Perugino, Pietro
+Pesellino
+Pesne, Antoine
+Petel, Jörg
+Peterdi, Gabor
+Peterson, Jacob
+Peterson, Jane
+Peterson, Larry
+Pether, Abraham
+Pethick, Jerry
+Peto, John Frederick
+Petrascu, Gheorghe
+Pettenkofen, August Xaver Karl
+Petter, Franz Xaver
+Pettie, John
+Pettit, Carol
+Pettrich, Ferdinand
+Peyron, Pierre
+Pfaff, Judy
+Pfeiler, Maximilian
+Pforr, Franz
+Phiale Painter
+Phidias
+Phillip, John
+Phillips, Ammi
+Phillips, Gordon
+Phillips, Laura
+Phillips, Marjorie
+Phillips, Peter
+Phillips, Richard
+Phillips, Tom
+Phillips, Walter J.
+Philpot, Glyn
+Phrynos Painter, The
+Piazetta, Giovanni Batista
+Piazza, Callisto
+Picabia, Francis
+Picart, Bernard
+Picasso, Pablo
+Pickenoy, Nicolaes Eliasz.
+Pickersgill, Frederick Richard
+Pickersgill, Henry Hall
+Pickersgill, Henry William
+Pierino da Vinci
+Piero della Francesca
+Piero di Cosimo
+Pierre, Jean-Baptiste Marie
+Piet, Fernand
+Pietersz the Younger, Pieter
+Pietro da Cortona
+Pietro da Rho
+Pietro degli Ingannati
+Pietro di Giovanni d'Ambrogio
+Piette, Ludovic
+Pigalle, Jean-Baptiste
+Pignoni, Simone
+Pike, John
+Pillement, Jean Baptiste
+Pilo, Carl Gustaf
+Pilon, Germain
+Pils, Isidore
+Pinaigiers, Jean
+Pindell, Howardena
+Pine, Robert Edge
+Pine, Theodore E.
+Pineda, Jose
+Pinkney, Jerry
+Pinney, Eunice
+Pinturicchio
+Pintz, Johann Georg
+Piola, Domenico
+Piper, John
+Piper, Rose
+Pippin, Horace
+Piqtoukun, David Ruben
+Piranesi, Giovanni Battista
+Pisanello
+Pisani, Gianni
+Pisani, Vettor
+Pisano, Andrea
+Pisano, Giovanni
+Pisano, Nicola
+Pisano, Nino
+Pissarro, Camille
+Pissarro, Lucien
+Pistoletto, Michelangelo
+Pitsiulak, Lipa
+Pittman, Lari
+Pittoni, Giovanni Battista
+Piza, Arthur Luiz
+Pizzinato, Armando
+Place, Francis
+Plamondon, Antoine
+Plas, Pieter van der
+Platzer, Johann Georg
+Pleissner, Ogden
+Plepp, Joseph
+Pleydenwurff, Hans
+Pocci, Graf Franz Von
+Pocock, Isaac
+Pocock, Nicholas
+Poel, Egbert van der
+Poelenburgh, Cornelis van
+Poggini, Domenico
+Point, Armand
+Polack, Jan
+Polenov, Vasiliy
+Poliakoff, Serge
+Polidoro Lanzani
+Polk, Charles Peale
+Polke, Sigmar
+Pollaiolo, Antonio
+Pollaiolo, Piero
+Pollard Limner, The
+Pollard, James
+Pollard, Robert
+Pollock, Jackson
+Pollock, John
+Polos, Theodore C.
+Polygnotos
+Pommer, Julius J.
+Pomodoro, Giò
+Ponç, Joan
+Ponce de Leon y Cabello, Alfonso
+Pont, Charles Ernest
+Pontormo
+Poole, Abram
+Poons, Lawrence
+Pootoogook, Kananginak
+Pope Jr., Carl Robert
+Popova, Liubov
+Poppi, Il
+Porcellis, Jan
+Pordenone, Il
+Porta, Giacomo della
+Porta, Giuseppe
+Porta, Guglielmo della
+Portail, Jacques André
+Porter, Brian
+Porter, Charles
+Porter, Fairfield
+Porter, Sir Robert Ker
+Portinari, Candido
+Posada, José Guadalupe
+Post, Frans
+Pot, Hendrick Gerritsz.
+Potre, Le
+Potter, Beatrix
+Potter, Carter
+Potter, Frank Huddlestone
+Potter, Mary
+Potter, Mike
+Potter, Paulus
+Potthast, Edward Henry
+Pougny, Jean
+Pourbus the Elder, Frans
+Pourbus the Younger, Frans
+Pourbus, Pieter
+Pousette-Dart, Richard
+Poussin, Nicolas
+Powell, Joseph
+Powers, Asahel
+Powers, Hiram
+Powers, Marion
+Poyet, Jean
+Poynter, Sir Edward
+Pozzatti, Rudy
+Pozzi, Lucio
+Pozzo, Andrea
+Pradier, James
+Prado, Marina Nuñez del
+Prampolini, Enrico
+Pranghofer, Frank
+Pratt, Bela Lyon
+Pratt, Christopher
+Pratt, Frances
+Pratt, Mary
+Pratt, Matthew
+Praxiteles
+Predator
+Predis, Ambrogio de
+Prendergast, Charles
+Prendergast, Maurice
+Prentice, Levi Wells
+Preston, Jessie Goodwin
+Preston, Margaret
+Prestopino, Gregorio
+Preti, Mattia
+Price, Irene
+Prieur, Barthélémy
+Prikker, Johan Thorn
+Primaticcio, Francesco
+Prince, Richard
+Pringle, J.
+Pringle, John Quinton
+Prinsep, Valentine Cameron
+Prinsep, William
+Printz, Hank
+Prior, Scott
+Prior, William Matthew
+Procaccini Il Giovane, Ercole
+Procaccini, Giulio Cesare
+Procter, Dod
+Proctor, Alexander Phimister
+Properzia de Rossi
+Prout, Samuel
+Provost, Jan
+Prud'hon, Pierre-Paul
+Pruna, Pedro
+Pruszkowski, Witold
+Puccio di Simone
+Pucelle, Jean
+Pudlat, Pudlo
+Puelma, Hernán
+Puelz, Susan
+Puga, Antonio
+Puget, Pierre
+Puligo, Domenico
+Puryear, Martin
+Pusey, John
+Pushman, Hovsep
+Puthuff, Hanson D.
+Putnam, Jane
+Puvis de Chavannes, Pierre
+Puy, Jean
+Pyle, Aaron
+Pyle, Howard
+Pynacker, Adam
+Pynas, Jacob
+Pynas, Jan
+Pyne, William Henry
+Python
+Qi Baishi
+Qian Juntao
+Qian Songyan
+Qian Xuan
+Qianlong, Emperor
+Qipei, Gao
+Qiu Ti
+Qu Ding
+Quadal, Martin Ferdinand
+Quan Shanshi
+Quarenghi, Giacomo
+Quarton, Enguerrand
+Quast, Pieter Jansz
+Quellinus, Erasmus
+Quercia, Jacopo della
+Quesnel, François
+Quidor, John
+Quinn, Marc
+Quinn, Thomas
+Quinnuayuak, Lucy
+Raadal, Erik
+Raboy, Mac
+Rackham, Arthur
+Rae, Fiona
+Raeburn, Sir Henry
+Raetz, Markus
+Raffael, Joseph
+Raffaëlli, Jean-François
+Raffet, Denis Auguste Marie
+Ráfols Casamada, Albert
+Ragalzi, Sergio
+Raggi, Antonio
+Raimondi, Marcantonio
+Rain, Charles
+Rainer, Arnulf
+Raleigh, Charles S.
+Ralph, Benjamin
+Ralston, John
+Rambaldi, Carlo Antonio
+Ramenghi, Giovan Battista
+Ramírez de Arellano, Christóbal
+Ramos Martínez, Alfredo
+Ramos, Mel
+Ramsay, Allan
+Ramsay, Hugh
+Ramunno, Tony
+Randall, A.M.
+Randall-Page, Peter
+Randolph, Lynn M.
+Rangel, Ricardo
+Ranger, Henry Ward
+Rankin, Jerry
+Ranney, William Tylee
+Ranson, Paul
+Raoux, Jean
+Raphael
+Raphael Mafai, Antonietta
+Raphael, Joseph
+Raphael, Mary F.
+Raschen, Henry
+Ratgeb, Jörg
+Rathsack, Sterling
+Rattner, Abraham
+Rau, William Herman
+Rauschenberg, Robert
+Raveel, Roger
+Raven, John Samuel
+Ravilious, Eric
+Ray, Charles
+Read, David Charles
+Read, James B.
+Read, Thomas Buchanan
+Ream, Carducius P.
+Reardon, Tim
+Reaugh, Charles Franklin
+Rebecca, Biagio
+Rebillé, Nicolas
+Recco, Giuseppe
+Red Star, Kevin
+Redfield, Edward Willis
+Redgrave, Richard
+Redmond, Granville
+Redon, Odilon
+Redouté, Pierre Joseph
+Redpath
+Reeb, David
+Reed, David
+Reed, Robert
+Rees, Michael
+Refregier, Anton
+Register, John
+Regnault, Baron Jean Baptiste
+Regnault, Henri
+Regnier, Nicolas
+Rego, Paula
+Regoyos, Darío de
+Reichel, Hans
+Reichlich, Marx
+Reid, Bill
+Reid, George A.
+Reid, Janet
+Reid, John Robertson
+Reid, Robert
+Reiffel, Charles
+Reinagle, Philip
+Reinagle, Ramsay Richard
+Reindel, William George
+Reinders, Jim
+Reinhardt, Ad
+Reisman, Philip
+Rejlander, Oscar Gustave
+Rembrandt van Rijn
+Remington, Frederic
+Ren Xiong
+Ren Xun
+Ren Yi
+Reni, Guido
+Renieri, Niccolo
+Renoir, Pierre-Auguste
+Renouf, Edda
+Repin, Iliya
+Resler, George Earl
+Resmann, Francesco
+Restout, Jean
+Rethel, Alfred
+Rethel, Ponce Jacquiot
+Réti, István
+Revere, Paul
+Révoil, Pierre-Henri
+Reymerswaele, Marinus van
+Reymond, Pierre
+Reynard, Grant
+Reynolds Jr., Samuel William
+Reynolds, Alan
+Reynolds, Sir Joshua
+Reysschoot, Peter John Van
+Rhead, Louis John
+Rheam, Henry Maynell
+Ribalta, Francisco
+Ribalta, Jorge
+Ribera, Jusepe de
+Rible, Dave
+Ribot, Augustin Théodule
+Ricard, Louis-Gustave
+Ricci, Marco
+Ricci, Sebastiano
+Riccio, Il
+Rich, Alfred William
+Richards, Frances
+Richards, John Inigo
+Richards, William Trost
+Richardson I, Jonathan
+Richardson Jr., Thomas Miles
+Richardson, Sam
+Richardson, Steven
+Richardson, William
+Richier, Germaine
+Richmond, Agnes Millen
+Richmond, George
+Richmond, Sir William Blake
+Richter, Gerhard
+Richter, Giovanni
+Rickey, George
+Rico, Dan
+Rider, Arthur Grover
+Ridgway, Peter
+Riechardt, Richard
+Riedell, Don
+Riemenschneider, Tilman
+Riezio, Martino
+Rigaud, Hyacinthe
+Rigaud, John Francis
+Rigby, Elizabeth
+Riggs, Robert
+Righetti, Francesco
+Riis, Jacob
+Riley, Bridget
+Riley, John
+Rimmer, William
+Rindisbacher, Peter
+Rinehart, Frank
+Rinehart, William Henry
+Ring, L.A.
+Ring, Pieter de
+Ringgold, Faith
+Rinzy, John Henry de
+Riopelle, Jean Paul
+Rios, Miguel Angel
+Ripley, Aiden Lassell
+Rippon, Tom
+Rist, Pipilotti
+Ritchie, William B.
+Ritman, Louis
+Ritschel, William
+Rittermann, Philip Scholz
+Ritts, Herb
+Ritzos, Andreas
+Rivalz, Antoine
+Rive, Roberto
+Rivera Hernandez, Manuel
+Rivera, Diego
+Rivers, Larry
+Rivière, Briton
+Rixens, Jean André
+Rizzo, Antonio
+Robbia, Andrea della
+Robbia, Giovanni della
+Robbia, Girolamo della
+Robbia, Luca della
+Robbins, David
+Robbins, Ellen
+Robert, Hubert
+Robert, John
+Robert, Louis-Léopold
+Robert-Fleury, Joseph-Nicolas
+Roberto
+Roberts, David
+Roberts, Goodridge
+Roberts, Tom
+Roberts, William
+Robertson, Archibald
+Robertson, Christina
+Robertson, Sarah
+Robetta, Cristofano
+Robineau, Adelaide
+Robins, William Palmer
+Robinson, Ann
+Robinson, Charles
+Robinson, F. Cayley
+Robinson, J.C.
+Robinson, Leonard
+Robinson, Theodore
+Robinson, William
+Robson, George Fennel
+Robusti, Domenico
+Roccatagliata, Niccolò
+Roche, Pierre
+Roche-Rabell, Arnaldo
+Rochussen, Charles
+Rockenschaub, Gerwald
+Rockwell, Norman
+Rodchenko, Alexander
+Rodin, Auguste
+Rodríguez Lozano, Manuel
+Roebling, John
+Roebling, Washington
+Roelofs, Willem
+Roentgen, Abraham
+Roentgen, David
+Roerich, Nicholas
+Roesen, Severin
+Rogers, John
+Roghman, Roelant
+Rohlfs, Christian
+Rokotov, Fedor
+Roland, Philippe-Laurent
+Roldán, Luisa
+Rollins, Tim
+Romako, Anton
+Román Rojas, Samuel
+Romanelli, Romano
+Romanino, Girolamo
+Romano, Gian Cristoforo
+Rombouts, Gillis
+Rombouts, Salomon
+Rombouts, Théodore
+Romney, George
+Rondel, Frederick
+Roo, Roelof de
+Rooker, Michael Angelo
+Roos, Johan Heinrich
+Roos, Joseph
+Roos, Philipp Peter
+Roper, Richard
+Ropes Jr., George
+Rops, Félicien
+Roqueplan, Camille
+Roques, Joseph
+Rosa, Ercole
+Rosa, Salvator
+Rosai, Ottone
+Rosales, Eduardo
+Rosas, Rubén
+Rosati, James
+Rose, Guy
+Rose, Knut
+Rosenberg, Henry M.
+Rosenberg, Isaac
+Rosenberg, Louis Conrad
+Rosenblum, Richard
+Rosenquist, James
+Rosenthal, Ann Tevy
+Rosenthal, Doris
+Rosenthal, Tony
+Roshu, Fukae
+Roslin, Alexander
+Roslin, Le Chevalier
+Roslin, T'oros
+Ross, Sir William Charles
+Rossbach, Edward
+Rosselli, Cosimo
+Rosselli, Matteo
+Rossellino, Antonio
+Rossellino, Bernardo
+Rossetti, Dante Gabriel
+Rossiter, Thomas Prichard
+Rosso Fiorentino
+Rosso, Medardo
+Rosso, Mino
+Roszak, Theodore
+Rotari, Pietro
+Rotella, Mimmo
+Roth, Ernest David
+Rothenberg, Susan
+Rothenstein, Michael
+Rothenstein, Sir William
+Rothermel, Peter Frederick
+Rothko, Mark
+Rothschild, Gail
+Rothstein, Arthur
+Rottenhammer, Hans
+Rouault, Georges
+Roubiliac, Louis-François
+Rouget, Georges
+Rousseau, Henri
+Rousseau, Théodore
+Roussel, Ker Xavier
+Roussel, Théodore
+Rousselet, Gilles
+Roux, Ange-Joseph Antoine
+Roux, François Geoffroi
+Roux, François Joseph Frédéric
+Roux, Joseph
+Roux, Louis
+Roux, Mathieu Antoine
+Roux-Champion, Joseph Victor
+Rowan, Patrick
+Rowe, Sandra
+Rowlandson, Thomas
+Rowley, Reuben
+Royen, Willem Frederik van
+Rrap, Julie
+Rubens, Peter Paul
+Rubin, Reuven
+Rublev, Andrei
+Rude, François
+Rude, Olaf
+Ruelas, Julio
+Ruff, Thomas
+Rugendas I, Georg Philipp
+Rugendas, Juan Mauricio
+Ruisdael, Jacob van
+Ruiz, Antonio M.
+Rulfo, Juan
+Rummel, Jay
+Rumney, Ralph
+Rungius, Carl Clemens Moritz
+Rupert, Prince
+Ruscha, Ed
+Rusconi, Camillo
+Rusell, Edward J.
+Rush, Olive
+Rush, William
+Rushbury, Henry
+Ruskin, John
+Russell, Andrew
+Russell, Charles M.
+Russell, John
+Russell, Morgan
+Russo, Alexander
+Rustici, Giovanni Francesco
+Rutelli, Mario
+Ruthart, Carl Borromäus Andreas
+Ruysch, Rachel
+Ruysdael, Salomon van
+Ryan, Anne
+Ryckere, Bernhart de
+Rycroft Painter, The
+Ryder, Albert Pinkham
+Rydingsvard, Ursula von
+Rydzewski, William 
+Ryman, Robert
+Saar, Alison
+Saar, Betye
+Saar, Lezley
+Saarinen, Eero
+Sacchetti, Lorenzo
+Sacchi, Andrea
+Sachs, Lambert
+Sadeler I, Jan
+Sadeler II, Aegidius
+Sadler, Walter Dendy
+Saenredam, Jan
+Saenredam, Pieter Jansz.
+Safran, Bernard
+Saftleven the Younger, Herman
+Saftleven, Cornelis
+Sage, Kay
+Sager, Peter Winchell
+Said Abdullah of the Mayac
+Saila, Pauta
+Sailmaker, Isaac
+Saint Cecilia Master
+Saint-Andre, Simon Renard de
+Saint-Aubin, Augustin de
+Saint-Aubin, Charles Germain de
+Saint-Aubin, Gabriel Jacques de
+Saint-Gaudens, Augustus
+Saint-Jean, Simon
+Saint-Mémin, Charles-Balthazar-Julien Févret de
+Saint-Phalle, Niki de
+Saito, Kiyoshi
+Saitowitz, Stanley
+Sakai Hoichi
+Sakai Hoitsu
+Sala, George Augustus Henry
+Salathé, Friedrich
+Salle, David
+Sallee, Charles
+Salmon, Robert
+Salt, John
+Salter, William
+Salvadori, Remo
+Salvi, Nicola
+Salviati, Francesco
+Saly, Jacques-François-Joseph
+Samacchini, Orazio
+Samaras, Lucas
+Sample, Paul Starrett
+Sánchez Coello, Alonso
+Sánchez Cotán, Juan
+Sánchez Perez, Alberto
+Sanchez, Abel
+Sanchez, Pedro
+Sandby, Paul
+Sandby, Thomas
+Sander, August
+Sanders, Ann
+Sandler, Barbara
+Sandrart, Joachim von
+Sandys, Emma
+Sandys, Frederick
+Sangallo, Francesco da
+Sangallo, Giuliano da
+Sang-Hwa, Chung
+Sanmartino, Giuseppe
+Sano di Pietro
+Sanseverino, Lorenzo di Alessandro da
+Sansovino, Andrea
+Sansovino, Jacopo
+Sant, James
+Santacroce, Girolamo
+Santerre, Jean-Baptiste
+Santomaso, Giuseppe
+Santos Torroella, Angeles
+Sanyu
+Sapousek, Frank
+Saraceni, Carlo
+Sargent, Henry
+Sargent, John Singer
+Sarkisian, Paul
+Sarkisian, Sarkis
+Sartain, John
+Sartorius, John Nost
+Sasajima, Kihei
+Sassetta
+Sassoferrato
+Sassu, Aligi
+Saunders, Gary
+Saura Atares, Antonio
+Savage, Edward
+Savery, Roelandt
+Savoldo, Giovanni Girolamo
+Savrasov, Alexey
+Sawyer, Helen
+Saxe, Andres Marsal de
+Scanga, Italo
+Scarlett, Rolph
+Scarpitta, Salvatore
+Scarsellino
+Schad, Christian
+Schadow, Johann Gottfried
+Schaechter, Judith
+Schaefer, Carl
+Schalcken, Godfried
+Schamberg, Morton Livingston
+Schanker, Louis
+Schapiro, Miriam
+Schardt, Bernard P.
+Scharf, Kenny
+Scharff, Edwin
+Schäufelein, Hans Leonhard
+Schedoni, Bartolomeo
+Scheffer, Ary
+Scheiber, Hugó
+Schelfhout, Andreas
+Schenau, Johann Eleazar
+Scherer, Hermann
+Scherschel, Joseph J.
+Schiaffino, Francesco Maria
+Schiavone, Andrea
+Schiele, Egon
+Schindler, Emil Jakob
+Schinkel, Karl Friedrich
+Schlemmer, Oskar
+Schlüter, Andreas
+Schmidt, Julius
+Schmidt, Katherine
+Schmidt-Rottluff, Karl
+Schmutzer, Ferdinand
+Schnabel, Julian
+Schneider, Bernhard
+Schnorr von Carolsfeld, Julius
+Scholder, Fritz
+Scholderer, Otto
+Schonfeld, Johann Heinrich
+Schongauer, Martin
+Schonzeit, Ben
+Schoonhoven, Jan
+Schoonover, Frank E.
+Schooten, Floris van
+Schopin, Henri-Frédéric
+Schrader, Julius
+Schrag, Karl
+Schreyer, Adolf
+Schreyer, Lothar
+Schreyvogel, Charles
+Schro, Dietrich
+Schuchardt Jr., Ferdinand
+Schuffenecker, Claude-Emile
+Schulte, Larry
+Schultheiss, Karl Max
+Schultz, Daniel
+Schultze, Ray
+Schumacher, William
+Schuppen, Jacob van
+Schussele, Christian
+Schuster, Donna Norine
+Schutler, John
+Schuyler Limner, The
+Schwabe, Carlos
+Schwalbe, Ole
+Schwartz, Aubrey
+Schwartz, Lester O.
+Schweickhardt, Heinrich Wilhelm
+Schwieger, C. Robert
+Schwiering, Conrad
+Schwind, Moritz Von
+Schwitters, Kurt
+Scolari, Giuseppe
+Scorel, Jan van
+Scott, Anna Page
+Scott, Bill
+Scott, Bob
+Scott, Frances
+Scott, John
+Scott, Louise
+Scott, Mary
+Scott, Samuel
+Scott, William
+Scott, William Edouard
+Scudder, Janet
+Scully, Sean
+Seago, Edward
+Seavey, Julien R.
+Seba, Albert
+Sébah, J. Pascal
+Sebastián
+Sebastiano del Piombo
+Sebree, Charles
+Sebron, Hyppolyte Victor Valentin
+Se-choong, Kim
+Second Gouda Woodcutter
+Secrest, David
+Seddon, Thomas
+Segal, George
+Segall, Lasar
+Segantini, Giovanni
+Segerstrom, Rick
+Seghers, Daniel
+Seghers, Gérard
+Seghers, Hercules
+Segna di Buonaventure
+Seisenegger, Jacob
+Sekino, Jun'ichirô
+Sekka, Kamisaka
+Seligmann, Kurt
+Sellier, Charles
+Selous, Henry Courtney
+Semmes, Beverly
+Sempere Juan, Eusebio
+Senior, C.F.
+Séon, Alexandre
+Sergel, Johan Tobias
+Seriakov, Iakov Panfilovich
+Serov, Valentin Aleksandrovich
+Serpotta, Giacomo
+Serra, Richard
+Serrano Aguilar, Pablo
+Serrano, Andres
+Serres, Dominic
+Serres, John Thomas
+Serrur, Henri
+Sérusier, Paul
+Sesshu Toyo
+Sesson Shukei
+Setch, Terry
+Seurat, Georges
+Severini, Gino
+Severn, Joseph
+Severo da Ravenna
+Sevilla Portillo, Soledad
+Seyffert, Leopold
+Seyler, Julius
+Seymour, David
+Seymour, James
+Sha Qi
+Shadbolt, Jack
+Shahn, Abby
+Shahn, Ben
+Shamsuddin, Asaf Jahi
+Shannon, Sir James Jebusa
+Shannonhouse, Sandy
+Shapiro, David
+Shapiro, Joel
+Shapiro, Joseph
+Sharaf
+Sharp, Joseph Henry
+Sharpe, Charles Kirkpatrick
+Sharpe, Stephen
+Sharples, Rolinda
+Shaughnessy, Michael
+Shaw, John Byam
+Shaw, Joshua
+Shaw, Richard
+Shaw, Scott
+Shaw, Wilfred Byron
+Shay, Ed
+Shayer Sr., William
+Shchedrin, Sil'vestr Feodosievich
+Shea, Judith
+Shee, Sir Martin Archer
+Sheeler, Charles
+Sheets, Millard
+Sheffield, Isaac
+Shelby, Lila Norma
+Shelley, Samuel
+Shelton, Margaret
+Shen Jiawei
+Shen Yinmo
+Sheouak
+Shepard, Ernest
+Shepherd, Helen Parsons
+Shepherd, Reginald
+Shepler, Dwight
+Sheridan, Mary
+Sherlock, William P.
+Sherman Limner, The
+Sherman, Cindy
+Sherr, Ron
+Shi Dawei
+Shi Lu
+Shie, Susan
+Shields, Alan
+Shields, Francis B.
+Shigemasa
+Shigenaga, Nishimura
+Shigenobu II, Yanagawa
+Shikibu Terutada
+Shima, Tamami
+Shimomura, Roger
+Shinagawa, Takumi
+Shinn, Everett
+Shinohara, Ushio
+Shishkin, Ivan
+Shitao
+Shôkôsai, Hanbei
+Short, Sir Frank
+Shoson, Ohara
+Shrady, Henry Merwin
+Shu Chuanxi
+Shuebrook, Ron
+Shûhô, Yamakawa
+Shulz, Alberta Rehm
+Shuncho
+Shun'ei, Katsukawa
+Shunsen, Katsukawa
+Shunsen, Natori
+Shunso, Katsukawa
+Shunzan, Katsukawa
+Shute, Nell Choate
+Siberechts, Jan
+Sickert, Bernard
+Sickert, Walter Richard
+Siddal, Elizabeth Eleanor
+Siemiradzki, Henryk
+Sierra, Paul
+Sieverding, Katharina
+Signac, Paul
+Signer, Roman
+Signorelli, Luca
+Sikander, Shahzia
+Silo, Adam
+Siloé, Diego de
+Siloe, Gil de
+Silva, Francis A.
+Silva, Guillermo
+Silver, Jonathan
+Silvestre the Younger, Israel
+Silvestro Dell'Acquila
+Silvy, Camille-Léon-Louis
+Simberg, Hugo
+Simon, T. Frantisek
+Simonds, Charles
+Simone dei Crocifissi
+Simonini, Francesco
+Simpson, Buster
+Simpson, John
+Simpson, Lorna
+Sims, Karl
+Sims, L.W. "Rocky"
+Simun, Konstantin
+Singer, Clyde
+Singer, Michael
+Singleton, Henry
+Sintenis, Renée
+Sint-Jans, Geertgen Tot
+Siqueiros, David Alfaro
+Sirani, Elisabetta
+Sironi, Mario
+Siskind, Aaron
+Sisley, Alfred
+Sisyphus Painter, The
+Sittow, Michel
+Sivuraq, Thomas
+Skeaf, D.
+Skelton, Jonathan
+Skerbisch, Hartmut
+Skillet, Stephan D.
+Skinner, Clara
+Skippe, John
+Skoglund, Sandy
+Skynner, Thomas
+Slaughter, Stephen
+Sleter, Francesco
+Slevogt, Max
+Slingelandt, Pieter Cornelisz. van
+Sloan, Helen Farr
+Sloan, Jeanette Pasin
+Sloan, John
+Sloan, Junius R.
+Sloan, Marianna
+Slodtz, Michelangelo
+Slott-Møller, Harald
+Slowinski, Ronald
+Sluijters, Jan
+Slusser, Jean Paul
+Sluter, Claus
+Smallwood, William Frome
+Smart, John
+Smartly, Henry
+Smibert, John
+Smidth, Hans
+Smillie, George Henry
+Smirke, Robert
+Smith III, Lee N.
+Smith, Alexis
+Smith, Alfred
+Smith, Allen
+Smith, Dana
+Smith, David
+Smith, Debbie
+Smith, Edith Agnes
+Smith, Grace Cossington
+Smith, Jack
+Smith, Jaune Quick-To-See
+Smith, Jessie Willcox
+Smith, John Christopher
+Smith, John Raphael
+Smith, John Thomas
+Smith, John 'Warwick'
+Smith, Joseph B.
+Smith, Kiki
+Smith, Leon Polk
+Smith, Lewis
+Smith, Marion C.
+Smith, Oliver Phelps
+Smith, Phebe A.
+Smith, Rick
+Smith, Royall Brewster
+Smith, Sir Matthew
+Smith, Thomas
+Smith, Tony
+Smith, Tucker
+Smith, W. Eugene
+Smith, Walter Granville
+Smithers, Collier
+Smithson, Robert
+Smits, Jacob
+Smythe, Lionel Percy
+Snow, Michael
+Snowden, Gilda
+Snyder, Amanda
+Snyder, Dean
+Snyders, Frans
+Soane, Sir John
+Sodoma, Il
+Soest, Gerard
+Sogliani, Giovanni Antonio
+Sohlberg, Harald
+Solana, José Gutiérrez
+Solari, Cristoforo
+Solario, Andrea
+Solaro, Gentine
+Soldani, Massimiliano
+Soldati, Atanasio
+Soldner, Paul
+Soleri, Paolo
+Solimena, Francesco
+Solis, Virgil
+Solomon, Abraham
+Solomon, Rebecca
+Solomon, Simeon
+Solomon, Solomon Joseph
+Somers, Fred
+Somerscales, Thomas J.
+Sommer, Frederick
+Sommer, Giorgio
+Somogyi, Dániel
+Somov, Konstantin
+Søndergaard, Jens
+Song Wenzhi
+Sonnier, Keith
+Sonntag, William Louis
+Sons, Giovanni
+Soreau, Isaac
+Sørensen, Arne Haugen
+Sorgh, Hendrik Martensz
+Soriano, Juan
+Sorolla y Bastida, Joaquin
+Soseki
+Sosen, Mori
+Soto, Jesús-Rafael
+Souch, John
+Soulages, Pierre
+Southall, Joseph Edward
+Soutine, Chaim
+Soyer, Isaac
+Soyer, Moses
+Soyer, Raphael
+Spadini, Armando
+Spaeth, Marie Haughton
+Spagna, Lo
+Spalletti, Ettore
+Sparagana, John
+Spaulding, Freda
+Spear, Ruskin
+Speckaert, Hans
+Spence, Thomas Ralph
+Spencer, Frederick R.
+Spencer, Gilbert
+Spencer, Joseph
+Spencer, Lady
+Spencer, Lilly Martin
+Spencer, Niles
+Spencer, Stanley
+Spencer, Thomas
+Spengler, Jeronimus
+Sperandio, Savelli
+Spero, Nancy
+Spiegel, Doris
+Spilberg, Johann
+Spilliaert, Léon
+Spin, Jacob
+Spinelli, Parri
+Spinello Aretino
+Spinosa, Domenico
+Spitzweg, Carl
+Spoerri, Daniel
+Spoilum
+Spolverini, Ilario
+Sporring, Ole
+Spranger, Bartholomeus
+Springer, Cornelis
+Spruance, Benton Murdoch
+Spybuck, Ernest
+Squires, Gerald
+Stadler, Joseph Constantin
+Stadtbäumer, Pia
+Stahlecker, Karen
+Stamos, Theodoros
+Stanczak, Julian
+Stanfield, Clarkson Frederick
+Stanhope, John Roddam Spencer
+Stankiewicz, Richard
+Stanlaws, Penrhyn
+Stanley, Abram Ross
+Stanley, Jane C.
+Stanley, John Mix
+Stanzione, Massimo
+Stark, James
+Stark, Otto
+Stati, Cristoforo
+Stautberg, Ann
+Staveren, Jan Adriaensz. van
+Stead, Gary
+Steadman, Ralph
+Stearns, Junius Brutus
+Stearns, William
+Steck, Paul
+Steele, Ben
+Steele, Frederic Dorr
+Steele, Theodore Clement
+Steen, Erling
+Steen, Jan
+Steenwijck, Harmen
+Steenwyck the Younger, Hendrik van
+Steer, Philip Wilson
+Stefano da Verona
+Stefano della Bella
+Stefano di Zevio
+Steffen, Bernard J.
+Steichen, Edward J.
+Steinbach, Haim
+Steinberg, Saul
+Steinbruck, Edouard
+Steiner, John
+Steinlen, Théophile Alexandre
+Steir, Pat
+STELARC
+Stella, Frank
+Stella, Jacques de
+Stella, Joseph
+Stephens, Frederic George
+Stephens, Thomas Edgar
+Stephenson, John Cecil
+Stephenson, Peter
+Sternberg, Harry
+Sterne, Maurice
+Sterner, Albert Edward
+Steth, Raymond
+Stettheimer, Florine
+Stettner, Louis
+Stevens 1817-1875, Alfred
+Stevens 1823-1906, Alfred
+Stevens, Ruth Tunander
+Steward, Joseph
+Stewardson, Thomas
+Stewart, Albert
+Stewart, David
+Stewart, John P.
+Stewart, Julius L.
+Stieglitz, Alfred
+Stieler, Joseph
+Still, Clyfford
+Stillman, Marie Spartali
+Stillman-Myers, Joyce
+Stock, Andries
+Stock, Joseph Whiting
+Stockt, Vrancke van der
+Stockton, Bill
+Stodart, Edward William
+Stokes 1854-1935, Adrian
+Stokes 1902-1972, Adrian
+Stokes, Marianne
+Stoll, Leopold von
+Stolzl, Gunta
+Stomer, Matthias
+Stone, Anne Belle
+Stone, Elinore
+Stone, Marcus
+Stone, Nicholas
+Stone, Richard
+Stoop, Dirck
+Storck, Abraham
+Storck, Jacob
+Storrs, Frances Hudson
+Storrs, John
+Story, George H.
+Story, Julian
+Story, William Wetmore
+Stoss, Veit
+Stothard, Thomas
+Stott, Edward
+Stott, William
+Stouf, Jean-Baptiste
+Stoumen, Lou
+Stout, Renée
+Stouter, D.G.
+Straet, Jan van der
+Strand, Paul
+Strang, William
+Stratton, Mary Chase
+Straub, Philippe Jakob
+Street, Robert
+Streeton, Arthur
+Streuli, Beat
+Strigel, Bernhard
+Stromeyer, David
+Strong, Elizabeth
+Strong-Cuevas
+Strother, David Hunter
+Strozzi, Bernardo
+Strub the Younger, Peter
+Struck, Hermann
+Strudwick, John Melhuish
+Struss, Ethel
+Struth, Thomas
+Strutt, Arthur John
+Stuart, Gilbert
+Stuart, Jane
+Stuart, Michelle
+Stuart, Signe
+Stubbins, Kyle
+Stubbs, George
+Stuber, Nikolaus Gottfried
+Stuck, Franz von
+Stuempfig, Walter
+Sturtevant, Helena
+Su Hanchen
+Subleyras, Pierre
+Sueharu, Fukami
+Sugimoto, Hiroshi
+Suio, Tamura
+Sukenobu
+Sukola, Jason
+Sukwon, Park
+Suleiman, Master
+Sullivan, Louis
+Sullivan, Marty
+Sully, Thomas
+Sully, Thomas Wilcocks
+Sultan Muhammad
+Sultan, Donald
+Sun Zixi
+Sunderland, Thomas
+Sunqua
+Surls, James
+Susini, Antonio
+Susini, Gianfrancesco
+Sustermans, Justus
+Sutcliffe, Frank
+Sutherland, Elizabeth Leveson-Gower, Countess of
+Sutherland, Graham
+Sutton, David
+Suvée, Joseph-Benoît
+Svendsen, Bjarke Regn
+Svennson, Carsten
+Swan, John Macallan
+Swan, Margaret
+Swanevelt, Herman van
+Sweerts, Michiel
+Swendson, Trygve
+Swentzell, Roxanne
+Swing Painter, The
+Swynnerton, Annie Louise
+Syleus Painter, The
+Symonds, William Robert
+Symons, George Gardner
+Syriskos
+Székely, Bertalan
+Szilard, Vic
+Szilasi, Gabor
+Taaffe, Philip
+Tacca, Pietro
+Tack, Augustus Vincent
+Taddeo di Bartolo
+Tafoya, Margaret
+Tailfeathers, Gerald
+Taillasson, Jean-Joseph
+Tait, Agnes
+Takaezu, Toshiko
+Takahashi, Rikio
+Talbot, Tom
+Talbot, William Henry Fox
+Tal-Coat, Pierre
+Talirunili, Joe
+Talpino, Enea
+Tamayo, Rufino
+Tamotzu, Chuzo
+Tanabe, Takao
+Tang Muli
+Tang Yihe
+Tang Yin
+Tang Yingwei
+Tanguy, Yves
+Tanner, Benjamin
+Tanner, Henry Ossawa
+Tanner, J.G.
+Tanning, Dorothea
+Tansey, Mark
+Tanzio da Varallo
+T'ao Ch'eng
+Tao Yuanqing
+Tàpies, Antoni
+Tapies, Modest
+Taraval, Hughes
+Taraval, Louis Gustave
+Tarbell, Edmund Charles
+Tassaert, Jean-Pierre-Antoine
+Tassaert, Philippe Joseph
+Tatafiore, Guido
+Taunay, Nicolas-Antoine
+Tavernari, Vittorio
+Taverner, William
+Tavernier, Jules
+Tawaraya Sotatsu
+Tayler, Albert Chevallier
+Taylor, Anna Heyward
+Taylor, John W.
+Taylor, Prentiss
+Taylor, Richard
+Taylor, Wes
+Taylor-Lindoe, Carroll
+Tchelitchew, Pavel
+Teerline, Levina
+Teichert, Minerva
+Teixeira de Mattos, Joseph
+Tempel, Abraham van den
+Templeton, Robert
+Tenerani, Pietro
+Teng Hiok Chiu
+Tengnagel, Jan
+Teniers the Younger, David
+Tenniel, Sir John
+Tenyu Shokei
+Terborch, Gerard
+Terbrugghen, Hendrick
+Terrell, Elizabeth
+Tesi, Mauro Antonio
+Testa, Pietro
+Teupken Sr., D.A.
+Than, Mór
+Thayer, Abbott Handerson
+Theed, William
+Théodon, Jean Baptiste
+Theophanes the Greek
+Therbusch, Anna Dorothea
+Therien, Robert
+Theus, Jeremiah
+Thiebaud, Wayne
+Thiele II, Johann Friedrich Alexander
+Thielen, Jan Philips van
+Thieme, Anthony
+Thierry, Jean
+Thiessen, Leonard
+Thomas, Alma
+Thomas, James Havard
+Thompson, Benjamin
+Thompson, Bob
+Thompson, Richard Earl
+Thompson, Wilfred
+Thompson, Wordsworth
+Thomson, Alfred Reginald
+Thomson, Rev. John
+Thomson, Tom
+Thon, William
+Thornhill, Sir James
+Thornycroft, Sir Hamo
+Thorvaldsen, Bertel
+Thrash, Dox
+Thulden, Theodoor van
+Tian Shiguang
+Tiarini, Alessandro
+Tibaldi, Pellegrino
+Tibbetts, Gary
+Tice, George
+Tien Chi
+Tiepolo, Giovanni Battista
+Tiepolo, Giovanni Domenico
+Tiffany, Louis Comfort
+Tiisala, Eeva
+Tillemans, Peter
+Tillers, Imants
+Tilson, Joe
+Timchak, Gary
+Timmann, Bill
+Tinelli, Tiberio
+Ting, Walasse
+Tingqua
+Tinguely, Jean
+Tino da Camaino
+Tinqua
+Tintoretto
+Tironi, Francesco
+Tischbein, Johann Heinrich Wilhelm
+Tischbein, Johann-Friedrich-August
+Tissot, James
+Titian
+Title, Christian
+Tobey, Mark
+Tocqué, Louis
+Todd, James
+Todd, Michael
+Toderi, Grazia
+Toeput, Lodewyk
+Togores i Llach, José de
+Toikka, Oiva
+Toledo, Francisco
+Tomea, Fiorenzo
+Tomkins, William
+Tommaso Cazzaniga
+Tomoyuki, Shokyusai
+Tongeren, Herk Van
+Tonnancour, Jacques G. de
+Tooker, George
+Tookoome, Simon
+Toole, John
+Tooley Jr., James
+Toorop, Charley
+Toorop, Jan
+Topchevsky, Morris
+Topolski, Feliks
+Torbert, Stephanie
+Torlakson, James
+Toroni, Niele
+Torrens, Bernardo
+Torres-García, Joaquín
+Torretti, Giuseppe
+Torrey, Hiram Dwight
+Torrigiani, Sebastiano
+Torrigiano, Pietro
+Tosa, Mitsuyoshi
+Tosani, Patrick
+Toscani, Giovanni
+Toshusai Sharaku
+Tosini, Michele
+Toulouse-Lautrec, Henri de
+Tournier, Nicolas
+Tousignant, Claude
+Toutant, Wally
+Town, Harold
+Towne, Francis
+Toyoharu, Utagawa
+Toyokuni
+Toyokuni II, Utagawa
+Toyomasa, Naito
+Traini, Francesco
+Traver, Marion Gray
+Traylor, Bill
+Treat, Henry
+Tregor, Nison
+Treiman, Joyce
+Tresham, Henry
+Trevelyan, Julian
+Trevino, Jesse
+Trevisani, Francesco
+Tribolo, Niccolo
+Trinquesse, Louis Rolland
+Triqueti, Henri de
+Tristán de Escamilla, Luis
+Trockel, Rosemarie
+Trombadori, Francesco
+Troostwijk, Wouter Johannes van
+Tropinin, Vasilii Andreevich
+Trouillebert, Paul Desiré
+Trower, Walter John
+Troy, François de
+Troy, Jean-François de
+Troyon, Constant
+Trumbull, John
+Tryon, Dwight W.
+Tsihnahjinnie, Hulleah
+Tsireh, Awa
+Tsukimaro, Kitagawa
+Tu, Baixiong
+Tuby I, Jean-Baptiste
+Tuchfarber, Frank
+Tucker, Allen
+Tucker, William
+Tuckerman, Jane
+Tudgay, Frederik
+Tudgay, John
+Tudlik
+Tudot, Edmond
+Tully, Sydney Strickland
+Tunnicliffe, Charles Frederick
+Tunnillie, Oviloo
+Tura, Cosmè
+Turchi, Alessandro
+Turnbull, James
+Turnbull, William
+Turner, Charles
+Turner, Daniel
+Turner, Helen M.
+Turner, Joseph Mallord William
+Turner, Robin
+Turner, W.
+Turpin de Crissé, Henry Roland Lancelot
+Turpin de Crissé, Lancelot-Théodore
+Turrell, James
+Turton, M.
+Tuxen, Laurits
+Twachtman, John Henry
+Twitty, James
+Twombly, Cy
+Tworkov, Jack
+Tyler, Brad
+Tyler, James Gale
+Uccello, Paolo
+Uc-chin, Chang
+Uchida, Bart
+Udaltsova, Nadezhda Andreevna
+Udell, Janice
+Uden, Lucas van
+Ufer, Walter
+Ugo Da Carpi
+Ugolino da Siena
+Uhde, Fritz Karl Hermann von
+Uhlmann, Hans
+Ukeles, Mierle Laderman
+Ukita Ikkei
+Ullberg, Kent
+Ullulaq, Judas
+Ulmann, Doris
+Underwood, Thomas Richard
+Underworld Painter, The
+Unkoku Togan
+Unold, Max
+Urushibara, Yoshijiro
+Ushakov, Simon
+Utamaro, Kitagawa
+Utkin, Ilya
+Utrillo, Maurice
+Uwins, Thomas
+Uyttenbroeck, Moses van
+Va, Barry Le
+Vaccaro, Andrea
+Vacher, Charles
+Vadder, Lodewijk de
+Vail, Eugene Lawrence
+Vaillant, Wallerant
+Valadon, Suzanne
+Valckenborch, Lucas van
+Valdambrino, Francesco di
+Valdés Leal, Juan de
+Valenciennes, Pierre-Henri de
+Valenzuela Llanos, Alberto
+Valet, Joan
+Vallejo, Boris
+Vallotton, Félix
+Valls Subira, Xavier
+Valtat, Louis
+Van Aken, Joseph
+Van Alstine, John
+Van Assen, Benedict Anthony
+van Beest, Albertus
+van Bruggen, Coosje
+Van Cleve, Corneille
+van de Velde III, Jan Jansz.
+van der Schardt, Johan Gregor
+Van Derzee, James
+Van Dyck, Sir Anthony
+van Gogh, Vincent
+van Heemskerk I, Egbert
+van Heemskerk III, Egbert
+Van Hoesen, Beth
+van Hove, Hubertus
+Van Laar, Tim
+Van Laer, Alexander Theobald
+van Loo, Louis-Michel
+Van Ness, Beatrice W.
+Van Somer, Paul
+van Spaendonck, Cornelis
+van Stry, Abraham
+Vanderbank, John
+Vanderlyn, John
+Vanloo, Carle
+Vanloo, Charles Amédée Philippe
+Vanni, Francesco
+Vanni, Lippo
+Vanvitelli, Luigi
+Vargas, Alberto
+Varian, Lester E.
+Varley, Cornelius
+Varley, F.H.
+Varley, John
+Varley, William Fleetwood
+Varnelis, Kazys
+Varo, Remedios
+Vasarely, Victor
+Vasari, Giorgio
+Vasco de la Zarza
+Vasnetsov, Viktor Mikhailovich
+Vassalletto, Pietro
+Vassallo, Antonio Maria
+Vautier, Ben
+Vázquez Díaz, Daniel
+Vebell, Edward
+Vecchia, Pietro della
+Vecchietta
+Vedder, Elihu
+Vedova, Emilio
+Veerendael, Nicolaes van
+Vela, Vincenzo
+Velarde, Pablita
+Velasco Belausteguigoitia, Rosario de
+Velasco, José María
+Velázquez, Diego
+Velde II, Jan van de
+Velde the Elder, Willem van de
+Velde the Younger, Willem van de
+Velde, Adriaen van de
+Velde, Esaias van de
+Venne, Adriaen Pietersz. van de
+Venusti, Marcello
+Verbeeck, Cornelis
+Verboeckhoven, Eugène
+Verbruggen, Hendrick Frans
+Verburg, JoAnn
+Vercruysse, Jan
+Verelst, Harman
+Verelst, Maria
+Verelst, Simon
+Verhaecht, Tobias
+Verhoef, Toon
+Verhulst, Rombout
+Verkade, Jan
+Verkolje, Jan
+Vermeer III, Jan
+Vermeer, Jan
+Vermeyen, Jan
+Verner, Elizabeth O'Neill
+Verner, Frederick A.
+Vernet, Carle
+Vernet, Claude-Joseph
+Vernet, Horace
+Veronese, Bonifacio
+Veronese, Paolo
+Verrocchio, Andrea del
+Verschuur, Wouterus
+Verspronck, Jan Cornelisz.
+Verster, Floris
+Vertue, George
+Vespignani, Renzo
+Viani, Alberto
+Vibert, Jehan Georges
+Vicente, Esteban
+Vickrey, Robert
+Victoria Marz, Salvador
+Victors, Jan
+Vien, Joseph Marie
+Viesulas, Romas
+Vigarny, Felipe
+Vigée-Lebrun, Marie Louise Élisabeth
+Vigeland, Gustav
+Vignaud, Jean
+Villa, Claudio
+Villabrille y Ron, Juan Alonso
+Villalba Florez, Darío
+Villers, Marie-Denise
+Villon, Jacques
+Vincent, François-André
+Vincenzo di Catena
+Vinckboons, David
+Vinne, Vincent Laurensz van der
+Vinton, Frederick Porter
+Viola, Bill
+Viola, Gian Battista
+Vischer the Elder, Peter
+Vischer the Younger, Peter
+Visconti, Eliseu
+Vishnyakov, Ivan
+Visscher, Claes Jansz.
+Vitale da Bologna
+Vittoria, Alessandro
+Vitullo, Sesostris
+Vivarini, Alvise
+Vivarini, Antonio
+Vivarini, Bartolomeo
+Vlaminck, Maurice de
+Vlieger, Simon de
+Vliet, Hendrik Cornelisz van der
+Voet, Ferdinand
+Vogel, Joseph
+Voille, Jean-Louis
+Volaire, Pierre-Jacques
+Volk, Douglas
+Voll, F. Usher De
+Vollmer, Adolf Friedrich
+Vollon, Antoine
+Volterra, Daniele da
+von Defregger, Franz
+von Herkomer, Sir Hubert
+Vonck, Jan
+Vondrous, Jan C.
+Vonnoh, Bessie Potter
+Vonnoh, Robert
+Vorsterman the Elder, Lucas
+Vos, Cornelis de
+Vos, Martin de
+Vos, Simon de
+Vosmaer, Daniel
+Voss, Paul
+Vouet, Aubin
+Vouet, Simon
+Voulkos, Peter
+Vrancx, Bastiaen
+Vranken, Dutch
+Vredeman de Vries, Hans
+Vrel, Jacobus
+Vrelant, Willem
+Vries, Abraham de
+Vries, Adriaen de
+Vroom, Cornelis
+Vroom, Hendrick Cornelisz.
+Vrubel, Mikhail
+Vuillard, Édouard
+Vuolvinio
+Wachtel, Elmer
+Wachtel, Marion Kavanaugh
+Waddell, Ted
+Waddell, Theodore J.
+Wadleigh, Pete
+Wadsworth, Edward
+Wages, Bob
+Wagguno
+Wagner, Otto
+Wainwright, John
+Waite, Emily Burling
+Wakelin, Roland
+Waldmüller, Ferdinand Georg
+Waldo, Samuel Lovett
+Waldorp, Antonie
+Wale, Samuel
+Wales, Kitty
+Walker, Anthony
+Walker, Douglas
+Walker, Frederick
+Walker, Kara
+Walker, William A.
+Walkley, Peter
+Walkowitz, Abraham
+Wall, Brian
+Wall, Jeff
+Wall, William Allen
+Wall, William Guy
+Wallace, Ian
+Wallace, J. Laurie
+Wallis, Henry
+Walter, Martha
+Walters, Miles
+Walters, Samuel
+Walton, Edward Arthur
+Walton, Henry
+Walton, John Whitehead
+Waltrous, Harry Wilson
+Wang Chunjie
+Wang Dongling
+Wang Geyi
+Wang Huaiqing
+Wang Hui
+Wang Jiqian (C.C. Wang)
+Wang Mengqi
+Wang Shenglie
+Wang Wen
+Wang Wuxie (Wucius Wong)
+Wang Xuetao
+Wang Yingchun
+Wang Yuangi
+Wang Yun
+Wang Zhen
+Wangersky, Barbara Pratt
+Wappers, Gustave
+Ward, Edward Matthew
+Ward, James
+Ward, John Quincy Adams
+Ward, Leslie
+Wardle, Arthur
+Warhol, Andy
+Warlow, Herbert Gordon
+Warner, Everett
+Warner, Olin Levi
+Warren, Henry
+Warsager, Hyman
+Warshawsky, Abraham G.
+Waser, Anna
+Washington, Elizabeth Fisher
+Washington, Timothy
+Watanabe Kazan
+Watanabe Shiko
+Watanabe, Sadao
+Waterhouse, John William
+Waterloo, Anthonie
+Waterlow, Sir Ernest Albert
+Waters, Herbert Ogden
+Waters, Susan C.
+Watkins, Carleton
+Watson, Homer
+Watt, Alison
+Watteau, Jean-Antoine
+Wattles, Virginia
+Watts, George Frederic
+Waugh, Frederick Judd
+Wauters, Emile
+Way, Thomas Robert
+Wearing, Gillian
+Weaver, Robert
+Weaver, Thomas
+Webb, James
+Webb, Todd
+Weber, Chris
+Weber, Idelle
+Weber, John Pitman
+Weber, Max
+Webster, Meg
+Webster, Thomas
+Weegee
+Weekes, Henry
+Weeks, James
+Weems, Carrie Mae
+Weenix II, Jan
+Weenix, Jan Baptist
+Weerts, Jean-Joseph
+Weggeland, Terry
+Wegman, William
+Weguelin, John Reinhard
+Wei Jingshan
+Wei Jiuding
+Weinberg, Emilie Sievert
+Weiner, Lawrence
+Weir, Julian Alden
+Weir, Robert W.
+Weirotter, Franz Edmund
+Weisbrod, Carl Wilhelm
+Weiss, David
+Weissenbruch, Jan
+Weissenbruch, Johan Hendrik
+Weissman, Barry
+Weisweiler, Adam
+Welch, Denton
+Weller, Paul
+Welliver, Neil
+Wells, Henry Tanworth
+Wells, Joanna Mary
+Wells, Lynton
+Welti, Albert
+Wen Bao
+Wen Lou
+Wen Zhengming
+Wen Zhenming
+Wenck, Ernst
+Wendel, Theodore
+Wendorf, Jim
+Wendt, William
+Wengenroth, Stow
+Wenzel von Olmutz
+Werff, Adriaen van der
+Werner, Bettina
+Wertheim, Gary
+Wertinger, Hans
+Wertmüller, Adolf-Ulrik
+Wessel, Bessie Hoover
+Wessel, Herman H.
+Wesselmann, Tom
+West, Benjamin
+West, Benjamin Franklin
+Westall, Richard
+Westmacott, James Sherwood
+Weston, Edward
+Wet, Jacob de
+Weyden, Rogier van der
+Weyer, Hermann
+Whale, Robert R.
+Wharncliffe, Lady
+Wheatley, Clara
+Wheatley, Francis
+Wheeler, Steve
+Wheelwright, Joseph
+Wheelwright, Roland
+Whetstone, Dan
+Whistler, James McNeill
+White 1773-1794, Charles
+White, Charles Wilbert
+White, Randy Lee
+White, Robert
+Whitehead, Frances
+Whiteley, Brett
+Whiteman, Ernest
+Whiteread, Rachel
+Whitney, Anne
+Whittle, Charles
+Whittredge, Thomas Worthington
+Wicar, Jean-Baptiste Joseph
+Wicks, Mary
+Wieland, Joyce
+Wiener, Phyllis
+Wieringen, Cornelis Claesz. van
+Wiertz, Antoine
+Wiggins, Guy
+Wilber, Jessie
+Wilbert, Robert
+Wilcox, Leslie
+Wilding, Alison
+Wildman, John R.
+Wildt, Adolfo
+Wiles, Irving R.
+Wiley, William
+Wiligelmo
+Wilke, Hannah
+Wilkie, Robert
+Wilkie, Sir David
+Wilkins, Mike
+Willaerts, Abraham
+Willard, Archibald M.
+Willets, Robert
+Williams, Arch
+Williams, Fred
+Williams, Hugh William
+Williams, Keith Shaw
+Williams, Margaret Lindsay
+Williams, Pauline Bliss
+Williams, Rod
+Williams, William
+Williamson, Daniel Alexander
+Willink, Carel
+Willmann, Michael Lukas Leopold
+Willoughby, Robert
+Wills, William Gorman
+Willson, Barbara
+Willson, Mary Ann
+Wilson, Andrew
+Wilson, Benjamin
+Wilson, Charles J.A.
+Wilson, George Washington
+Wilson, John
+Wilson, Richard
+Wilson, William A.
+Wilton, Joseph
+Wimar, Charles
+Windus, William Lindsay
+Winegar, Anna
+Winkler, John W.
+Winogrand, Garry
+Winsor, Jackie
+Winstanley, William
+Winter, Friedrich
+Winter, George
+Winterhalter, Franz Xavier
+Winterhalter, Hermann
+Winters, Terry
+Wintour, John Crawford
+Wirsum, Karl
+Wirt von Wil, Nicolaus
+Wirtz, Robert
+Wit, Jacob de
+Witherington, William Frederick
+Witkiewicz, Stanislaw Ignacy
+Witkin, Isaac
+Witkin, Jerome Paul
+Witte, Emanuel de
+Wittel, Gaspar van
+Witz, Conrad
+Wo Zha
+Woehrman, Ralph
+Woiceske, Ronau William
+Wojtkiewicz, Witold
+Wolf, Henry
+Wolfe, Meyer
+Wolfe, Ruth Mitchell
+Wolffort, Artus
+Wölfli, Adolf
+Wolfram, William
+Wollaston, John
+Wollheim, Gert
+Wood, Christopher
+Wood, Elizabeth Wyn
+Wood, Ella Mirriam
+Wood, Grant
+Wood, John
+Wood, Thomas Waterman
+Woodbury, Charles Herbert
+Woodruff, Hale
+Woods, Jan
+Woodville, Richard Caton
+Woodward, George Montard
+Woodward, John Douglas
+Woodward, Mabel May
+Woodward, Stanley Wingate
+Woodward, Thomas
+Woo-hee, Cha
+Wook-Kyung, Choi
+Wool, Christopher
+Woolsey, Clarence
+Woolsey, Grace
+Wootton, John
+Wores, Theodore
+Worlidge, Thomas
+Wotruba, Fritz
+Wouters, Rik
+Wouwerman, Philips
+Wren, Sir Christopher
+Wrenn, Charles
+Wright of Derby, Joseph
+Wright, Autin
+Wright, Don
+Wright, Frank Lloyd
+Wright, James Henry
+Wright, John Michael
+Wright, Redmond Stephens
+Wrinch, Mary
+Wtewael, Joachim Antonisz.
+Wu Biduan
+Wu Changshi
+Wu Changshuo
+Wu Guanzhong
+Wu Hufan
+Wu Jiayou
+Wu Jingting
+Wu Li
+Wu Zuoren
+Wujcik, Theo
+Wurtzburger, Skip
+Wurzelbauer, Benedikt
+Wutky, Michael
+Wyant, Alexander Helwig
+Wyck, Jan
+Wyck, Thomas
+Wyeth, Andrew
+Wyeth, Henriette
+Wyeth, Jamie
+Wyeth, N.C.
+Wynants, Jan
+Wyon, Edward William
+Wyse, Alex
+Xenophantos
+Xia Gui
+Xiao Haichun
+Xiao Yuncong
+Xu Beihong
+Xu Daoning
+Xu Lei
+Xu Lele
+Xu, Guo
+Xugu
+Ya Ming
+Yan Han
+Yan Hui
+Yan Liben
+Yáñez, Fernando
+Yang Jingsheng
+Yang Kewu
+Yang Keyang
+Yang Lizhou
+Yang Nawei
+Yang Shanshen
+Yang Yong
+Yang Zhiguang
+Ye Minren
+Yeames, William Frederick
+Yeats, Jack B.
+Yeggster 
+Yelland, Raymond
+Yin Rongsheng
+Ykens, François
+Yong-Yop, Hwang
+Yorke, William G.
+Yorke, William Howard
+Yosa Buson
+Yoshida, Hiroshi
+Yoshitaki, Nakai
+Yoshitora, Utagawa
+Yoshitoshi, Tsukioka
+Yoshitsuya I, Ichieisai
+Yoshiyuki, Rakkaken
+Young, Blamire
+Young, Brent Kee
+Young, Mahonri Macintosh
+Young, Stephen Scott
+Young-lim, Choi
+Young-soo, Song
+Youqua
+Youse, Gay
+Yphantis, George
+Yu Ben
+Yu Youren
+Yun Ge
+Yun Shouping
+Yunkers, Adja
+Zabaleta Fuentes, Rafael
+Zaganelli, Francesco
+Zais, Giuseppe
+Zak, Eugène
+Zakanitch, Robert
+Zalce, Alfredo
+Zanguidi, Jacopo
+Zao Wou-ki
+Zaritsky, Yossef
+Zárraga, Angel
+Zehnacker, Russ
+Zeliff, Amzi Emmons
+Zenale, Bernardino
+Zeng Mi
+Zentz, Patrick
+Zerbe, Karl
+Zeshin, Shibata
+Zha Shibiao
+Zhan Jianjun
+Zhang Daqian
+Zhang Dazhuang
+Zhang Hong
+Zhang Hui
+Zhang Wang
+Zhang Yi
+Zhao Chungxiang
+Zhao Shou
+Zhao Yannian
+Zhao Zhiqian
+Zhao Zhiquan
+Zheng Guogu
+Zheng Wu
+Zheng Wuchang
+Zhong Weisheng
+Zhou Changjiang
+Zhou Luyun
+Zhou Shuqiao
+Zhou Sicong
+Zhu Da
+Zhu Qizhan
+Zhu Rui
+Zhu Xinghua
+Ziem, Félix
+Zingg, Adrian
+Ziveri, Alberto
+Zobernig, Heimo
+Zoffany, Johann
+Zoppo, Marco
+Zorach, Marguerite Thompson
+Zorach, William
+Zorio, Gilberto
+Zorn, Anders
+Zox, Larry
+Zuccarelli, Francesco
+Zuccaro, Federico
+Zuccaro, Taddeo
+Zucchi, Antonio
+Zucchi, Jacopo
+Zucker, Joe
+Zugno, Francesco
+Zuloaga, Ignacio
+Zündt, Mathias
+Zúñiga, Francisco
+Zurawski, Norm
+Zurbarán, Francisco de
+Zurbarán, Juan de
+Zürn, Michael
+Zynsky, Toots
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt
new file mode 100644
index 0000000..f89f870
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt
@@ -0,0 +1,1310 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+Лукашев, Игорь Львович
+Cеменов, Владимир Магомедович
+Лукашенко, Александр Григорьевич
+Абалкин, Леонид Иванович
+Лукашенко, Дмитрий Борисович
+Абдулатипов, Рамазан Гаджимурадович
+Лукин, Владимир Петрович
+Абдулбасиров, Магомедтагир Меджидович
+Лукьяненко, Татьяна Константиновна
+Абельцев, Сергей Николаевич
+Лукьянов, Анатолий Иванович
+Абраменков, Дмитрий Николаевич
+Лукьянов, Владимир Николаевич
+Абрамов, Александр Сергеевич
+Лунтовский, Георгий Иванович
+Абрамович, Роман Аркадьевич
+Лухманов, Николай Евгеньевич
+Авалиани, Теймураз Георгиевич
+Лучин, Виктор Осипович
+Авалишвили, Гурами Джемалович
+Лыжин, Юрий Васильевич
+Авдеев, Валерий Валентинович
+Лымарь, Любовь Михайловна
+Лысенко, Анатолий Григорьевич
+Авен, Петр Олегович
+Лысенко, Владимир Николаевич
+Аверчев, Владимир Петрович
+Лысенко, Николай Николаевич
+Лычаков, Андрей Анатольевич
+Агапов, Юрий Васильевич
+Любимцев, Анатолий Васильевич
+Агапова, Елена Александровна
+Ляшко, Юрий Гаврилович
+Агафонов, Валентин Алексеевич
+Мавроди, Сергей Пантелеевич
+Агафонов, Егор Андреевич
+Магомедов, Магомедали Магомедович
+Агеева, Любовь Анатольевна
+Магомедов, Станислав Юнусович
+Адамишин, Анатолий Леонидович
+Мазур, Александр Алексеевич
+Адамов, Евгений Олегович
+Майоров, Леонид Сергеевич
+Макаров, Андрей Михайлович
+Макашов, Альберт Михайлович
+Аксененко, Николай Емельянович
+Максаков, Александр Иванович
+Аксенов, Владимир Викторович
+Максимов, Евгений Васильевич
+Аксентьев-Кикалишвили, Анзори Иосифович
+Максимов, Константин Николаевич
+Аксючиц, Виктор Владимирович
+Малаев, Алексей Никифорович
+Малашенко, Игорь Евгеньевич
+Алекперов, Вагит Юсуфович
+Малкин, Виталий Борисович
+Александров, Алексей Иванович
+Мальков, Игорь Олегович
+Алексеев, Александр Сергеевич.
+Мальцев, Александр Николаевич
+Алексеев, Геннадий Алексеевич
+Мальцев, Борис Алексеевич
+Алексий, Второй патриарх
+Малютина, Татьяна Григорьевна
+Маневич, Михаил Владиславович
+Алкснис, Виктор Имантович
+Манжосов, Николай Иванович
+Алтухов, Владимир Николаевич
+Манилов, Валерий Леонидович
+Алтынбаев, Жакслык Куантаевич
+Алферов, Жорес Иванович
+Манякин, Сергей Иосифович
+Альмяшкин, Василий Петрович
+Маргелов, Михаил Витальевич
+Амбарцумов, Евгений Аршакович
+Маркелов, Леонид Игоревич
+Амелина, Алла Леонидовна
+Марков, Владимир Николаевич
+Аметистов, Эрнест Михайлович
+Маркова, Римма Васильевна
+Ананьев, Евгений Николаевич
+Мартынов, Александр Гаврилович
+Андреев, Алексей Петрович
+Мартынов, Борис Алексеевич
+Марченко, Петр Петрович
+Андреева, Нина Александровна
+Марычев, Вячеслав Антонович
+Аничкин, Иван Степанович
+Масарский, Марк Вениаминович
+Анпилов, Виктор Иванович
+Маслов, Михаил Александрович
+Антонов, Игорь Васильевич
+Маслов, Николай Васильевич
+Маслюков, Юрий Дмитриевич
+Антуфьев, Сергей Владимирович
+Масхадов, Аслан (Халид) Алиевич
+Апарина, Алевтина Викторовна
+Масхадов, Аслан Алиевич
+Аракчаа, Кара-Кыс Донгаковна
+Арбатов, Алексей Георгиевич
+Матвиенко, Валентина Ивановна
+Арбузов, Валерий Петрович
+Маточкин, Юрий Семенович
+Арефьев, Николай Васильевич
+Матяшов, Петр Иванович
+Аринин, Александр Николаевич
+Арсланова, Фануза Шарафиевна
+Машинский, Виктор Леонидович
+Машковцев, Михаил Борисович
+Артюхов, Виталий Григорьевич
+Медведев, Владимир Сергеевич
+Архипов, Сергей Сергеевич
+Медведев, Дмитрий Анатольевич
+Асаев, Раис Бадыгутдинович
+Медведев, Николай Павлович
+Аскерханов, Гамид Рашидович
+Медведев, Павел Алексеевич
+Аслаханов, Асланбек Ахмедович
+Медведев, Рой Александрович
+Ассекритов, Станислав Борисович
+Медведев, Сергей Константинович
+Астафьев, Михаил Георгиевич
+Медиков, Виктор Яковлевич
+Астафьев, Николай Павлович
+Меликьян, Геннадий Георгиевич
+Астраханкина, Татьяна Александровна
+Мельков, Алексей Константинович
+Аулов, Александр Петрович
+Мельников, Алексей Юрьевич
+Аушев, Мухарбек Измаилович
+Мельников, Иван Иванович
+Аушев, Руслан Султанович
+Мень, Михаил Александрович
+Ахмадиев, Фаниль Наилович
+Меремянин, Константин Георгиевич
+Ачалов, Владислав Алексеевич
+Меркулов, Александр Федорович
+Аюшиев, Болот Ванданович
+Меркулов, Геннадий Константинович
+Аяцков, Дмитрий Федорович
+Меркушин, Николай Иванович
+Бабин, Николай Андреевич
+Мизулина, Елена Борисовна
+Бабичев, Владимир Степанович
+Микитаев, Абдулах Касбулатович
+Бабичев, Игорь Викторович
+Бабурин, Сергей Николаевич
+Милосердов, Владимир Иванович
+Бабух, Лариса Владимировна
+Минаков, Виктор Михайлович
+Багаутдинов, Габдулвахид Гильмутдинович
+Минкин, Александр Викторович
+Баглай, Марат Викторович
+Мирзоев, Гасан Борисович
+Баженов, Александр Васильевич
+Миронов, Валерий Иванович
+Базылева, Тамара Васильевна
+Миронов, Виктор Пименович
+Бакатин, Вадим Викторович
+Миронов, Владимир Николаевич
+Балакшин, Павел Николаевич
+Миронов, Геннадий Анатольевич
+Балалаев, Вячеслав Ефимович
+Миронов, Олег Орестович
+Балтин, Эдуард Дмитриевич
+Мисник, Борис Григорьевич
+Барабанов, Владимир Алексеевич
+Митин, Сергей Герасимович
+Баранов, Александр Иванович
+Митина, Дарья Александровна
+Баранов, Валерий Петрович
+Миткова, Татьяна Ростиславовна
+Бариев, Марат Мансурович
+Митрофанов, Алексей Валентинович
+Баркашов, Александр Петрович
+Митрохин, Сергей Сергеевич
+Барсуков, Михаил Иванович
+Митюков, Михаил Алексеевич
+Барышев, Владимир Иванович
+Митяев, Иван Иванович
+Барышников, Николай Павлович
+Михайлов, Александр Николаевич
+Басаев, Шамиль Салманович
+Михайлов, Алексей Юрьевич
+Басин, Ефим Владимирович
+Михайлов, Виктор Григорьевич
+Батагаев, Алексей Николаевич
+Михайлов, Виктор Никитович
+Батурин, Юрий Михайлович
+Михайлов, Вячеслав Александрович
+Бауэр, Владимир Анатольевич
+Михайлов, Вячеслав Федорович
+Башмачников, Владимир Федорович
+Михайлов, Евгений Эдуардович
+Баюнов, Владимир Александрович
+Михайлов, Николай Васильевич
+Безбородов, Николай Максимович
+Михайлов, Сергей Владимирович
+Безверхий, Сергей Федорович
+Михайлова, Эльмира Германовна
+Безлепкина, Людмила Федоровна
+Михалков, Никита Сергеевич
+Бекетов, Владимир Андреевич
+Михалков-Кончаловский, Андрон Сергеевич
+Беклемищева, Ольга Алексеевна
+Михеев, Михаил Александрович
+Мишин, Виктор Максимович
+Моисеев, Борис Александрович
+Моисеева, Вероника Владимировна
+Монастырский, Михаил Львович
+Белозерцев, Сергей Владимирович
+Морозов, Анатолий Тимофеевич
+Белоногов, Анатолий Николаевич
+Морозов, Владимир Васильевич
+Морозов, Олег Викторович
+Беляев, Сергей Георгиевич
+Морщакова, Тамара Георгиевна
+Беляков, Александр Семенович
+Мостовой, Петр Петрович
+Бендукидзе, Каха Автандилович
+Мошняков, Валерий Владимирович
+Бенов, Геннадий Матвеевич
+Мукомель, Владимир Изявич
+Бердникова, Нина Владимировна
+Муладжанов, Шод Саидович
+Муравленко, Сергей Викторович
+Березовский, Борис Абрамович
+Мусалатов, Хасан Аласханович
+Берестовой, Виктор Иванович
+Мусатов, Михаил Иванович
+Беспалов, Юрий Александрович
+Муха, Виталий Петрович
+Бессарабов, Владимир Григорьевич
+Назаров, Александр Викторович
+Назарчук, Александр Григорьевич
+Бигнов, Рамиль Имамагзамович
+Наздратенко, Евгений Иванович
+Бикалова, Надежда Александровна
+Биндюков, Николай Гаврилович
+Найчукова, Светлана Ивановна
+Найшуль, Виталий Аркадьевич
+Бирюков, Анатолий Михайлович
+Наролин, Михаил Тихонович
+Бирюков, Владимир Афанасьевич
+Нарусова, Людмила Борисовна
+Бичелдей, Каадыр-Оол Алексеевич
+Нахманович, Петр Абрамович
+Благоволин, Сергей Евгеньевич
+Неверов, Валерий Иванович
+Невзлин, Леонид Борисович
+Богатов, Владимир Владимирович
+Невзоров, Александр Глебович
+Богачев, Владимир Валентинович
+Неделин, Геннадий Павлович
+Богданов, Владимир Леонидович
+Недошивин, Вячеслав Михайлович
+Богданова, Елена Михайловна
+Неелов, Юрий Васильевич
+Богданчиков, Сергей Михайлович
+Некрасов, Леонид Васильевич
+Богомолов, Олег Алексеевич
+Некрутенко, Виктор Юрьевич
+Божедомова, Галина Клавдиевна
+Немцов, Борис Ефимович
+Бойко, Вадим Анатольевич
+Нестеренко, Татьяна Геннадьевна
+Бойко, Вячеслав Андреевич
+Нестеров, Юрий Михайлович
+Бойко, Максим Владимирович
+Неумывакин, Александр Яковлевич
+Нечаев, Андрей Алексеевич
+Бойцев, Анатолий Александрович
+Нещадин, Андрей Афанасьевич
+Боковиков, Александр Александрович
+Нигкоев, Сергей Георгиевич
+Болдырев, Юрий Юрьевич
+Никитин, Александр Иванович
+Большаков, Алексей Алексеевич
+Никитин, Андрей Владимирович
+Большаков, Евгений Александрович
+Никитин, Валентин Иванович
+Большаков, Сергей Владимирович
+Никитин, Владимир Петрович
+Бондарев, Григорий Семенович
+Никитин, Владимир Степанович
+Никитчук, Иван Игнатьевич
+Боос, Георгий Валентинович
+Никифоренко, Юрий Васильевич
+Борисенко, Николай Иванович
+Никифоров, Сергей Михайлович
+Николаев, Алексей Васильевич
+Борисоглебский, Александр Игоревич
+Николаев, Андрей Иванович
+Боровков, Владимир Семенович
+Николаев, Михаил Ефимович
+Боровой, Константин Натанович
+Николаевский, Владимир Юрьевич
+Бородаев, Валерий Васильевич
+Никологорский, Валерий Григорьевич
+Бородин, Виктор Иванович
+Никонов, Вячеслав Алексеевич
+Никулин, Валерий Афанасьевич
+Борщев, Валерий Васильевич
+Никулин, Юрий Владимирович
+Босхолов, Сергей Семенович
+Ниязов, Сапармурат Атаевич
+Бочаров, Михаил Александрович
+Новиков, Олег Иванович
+Бочин, Леонид Арнольдович
+Новодворская, Валерия Ильинична
+Брагинский, Александр Павлович
+Ножиков, Юрий Абрамович
+Братищев, Игорь Михайлович
+Носов, Валерий Борисович
+Бревнов, Борис Анатольевич
+Оболенский, Александр Митрофанович
+Брусникин, Николай Юрьевич
+Овченков, Вячеслав Иванович
+Брусницын, Юрий Александрович
+Овчинников, Константин Николаевич
+Брынцалов, Владимир Алексеевич
+Озеров, Виктор Алексеевич
+Ойкина, Зоя Николаевна
+Брынцалов, Юрий Григорьевич
+Ойнвид, Григорий Михайлович
+Бугера, Михаил Евгеньевич
+Олейник, Владимир Иванович
+Будажапов, Сергей Пурбуевич
+Олейник, Любовь Васильевна
+Ольшанский, Дмитрий Вадимович
+Букато, Виктор Иванович
+Ооржак, Шериг-оол Дизижикович
+Булавинов, Вадим Евгеньевич
+Орджоникидзе, Иосиф Николаевич
+Булгак, Владимир Борисович
+Орлов, Виктор Петрович
+Орлов, Владимир Андреевич
+Бунич, Павел Григорьевич
+Орлова, Светлана Юрьевна
+Бурбулис, Геннадий Эдуардович
+Осмаев, Амин Ахмедович
+Бурдуков, Павел Тимофеевич
+Основная, деятельность:
+Буренин, Владимир Арсеньевич
+Остальский, Дмитрий Всеволодович
+Останина, Нина Александровна
+Бурков, Сергей Васильевич
+Бурлуцкий, Юрий Иванович
+Павлов, Николай Александpович
+Бутаев, Владимир Иванович
+Павловский, Глеб Олегович
+Бутов, Евгений Леонидович
+Бученков, Евгений Викторович
+Бушмин, Евгений Викторович
+Пальчевский, Андрей Иванович
+Памфилова, Элла Александровна
+Быков, Валерий Алексеевич
+Панарин, Николай Васильевич
+Быков, Роллан Анатольевич
+Панин, Виктор Евгеньевич
+Былевский, Павел Геннадьевич
+Панков, Анатолий Семенович
+Быстрицкая, Элина Авраамовна
+Панкратов-Черный, Александр Васильевич
+Быстров, Сергей Николаевич
+Пансков, Владимир Георгиевич
+Бычков, Андрей Иванович
+Панфилов, Анатолий Алексеевич
+Вавилов, Андрей Петрович
+Панфилов, Анатолий Анатольевич
+Вавилов, Станислав Владимирович
+Панькин, Вячеслав Владимирович
+Вагин, Валерий Андреевич
+Парадиз, Александр Лазаревич
+Вайншток, Семен Михайлович
+Парамонова, Татьяна Владимировна
+Вакуленко, Михаил Юрьевич
+Паринов, Вячеслав Семенович
+Варенников, Валентин Иванович
+Варнавский, Владимир Алексеевич
+Паршаков, Юрий Николаевич
+Вартазарова, Людмила Степановна
+Пастухов, Борис Николаевич
+Васильев, Владимир Абдуалиевич
+Патрушев, Николай Платонович
+Пашуто, Владимир Ростиславович
+Васильев, Сергей Александрович
+Перминов, Анатолий Николаевич
+Вахруков, Сергей Алексеевич
+Петошин, Владимир Анатольевич
+Ведерников, Владимир Павлович
+Петренко, Сергей Васильевич
+Ведерников, Николай Трофимович
+Петрик, Александр Григорьевич
+Венгеров, Анатолий Борисович
+Петров, Андрей Юрьевич
+Венгеровский, Александр Дмитриевич
+Петров, Владимир Анатольевич
+Вепрев, Аркадий Филимонович
+Петров, Владимир Иванович
+Верещагин, Виктор Владимирович
+Петров, Олег Вадимович
+Вернигора, Владимир Сергеевич
+Петров, Юрий Владимирович
+Верховский, Александр Маркович
+Вершинин, Павел Николаевич
+Пехтин, Владимир Алексеевич
+Веселкин, Павел Михайлович
+Пешков, Виктор Петрович
+Пивненко, Валентина Николаевна
+Вечкасов, Юрий Иванович
+Пилипенко, Юрий Владимирович
+Вешняков, Александр Альбертович
+Пилипешин, Николай Анатольевич
+Вигдорчик, Елена Александровна
+Пискун, Николай Леонидович
+Пияшева, Лариса Ивановна
+Викторов, Валерьян Николаевич
+Платов, Владимир Игнатьевич
+Вилинбахов, Георгий Вадимович
+Платонов, Владимир Константинович
+Виноградов, Владимир Викторович
+Платонов, Владимир Михайлович
+Виноградов, Николай Владимирович
+Плетнева, Тамара Васильевна
+Виноградов, Павел Владимирович
+Плиев, Руслан Султанович
+Витрук, Николай Васильевич
+Плотников, Владимир Николаевич
+Вишняков, Виктор Григорьевич
+Побединская, Людмила Васильевна
+Вишняков, Виталий Евгеньевич
+Поводырь, Сергей Александрович
+Владиславлев, Александр Павлович
+Поволяев, Владимир Митрофанович
+Власов, Алексей Феликсович
+Подберезкин, Алексей Иванович
+Власов, Валентин Степанович
+Подгорнов, Николай Михайлович
+Власов, Юрий Васильевич
+Подколзин, Евгений Николаевич
+Подопригора, Владимир Николаевич
+Власова, Анна Петровна
+Подуфалов, Николай Дмитриевич
+Воеводин, Вадим Алексеевич
+Полдников, Юрий Иванович
+Войков, Андрей Иванович
+Полеванов, Владимир Павлович
+Волков, Александр Александрович
+Полежаев, Леонид Константинович
+Полтавченко, Георгий Сергеевич
+Волков, Василий Петрович
+Полторанин, Михаил Никифорович
+Волков, Владимир Николаевич
+Полуянов, Николай Андреевич
+Волков, Геннадий Константинович
+Поляков, Андрей Александрович
+Волков, Николай Михайлович
+Поляков, Николай Иванович
+Волкова, Ольга Николаевна
+Поляков, Юрий Александрович
+Воловик, Александр Михайлович
+Поморов, Александр Адрианович
+Володин, Николай Андреевич
+Понасов, Степан Николаевич
+Волошин, Александр Стальевич
+Пономарев, Александр Михайлович
+Волчек, Галина Борисовна
+Пономарев, Александр Сергеевич
+Вольский, Аркадий Иванович
+Пономарев, Алексей Алексеевич
+Воробьев, Эдуард Аркадьевич
+Пономарев, Алексей Филиппович
+Ворогушин, Виктор Анатольевич
+Пономарев, Геннадий Семенович
+Воронин, Владимир Васильевич
+Пономарев, Лев Александрович
+Воронин, Геннадий Петрович
+Попкович, Роман Семенович
+Воронин, Юрий Михайлович
+Попов, Александр Васильевич
+Воронцов, Алексей Алексеевич
+Попов, Алексей Анатольевич
+Воронцова, Зоя Ивановна
+Попов, Аркадий Алексеевич
+Воротников, Валерий Павлович
+Попов, Виктор Михайлович
+Выучейский, Вячеслав Алексеевич
+Попов, Гавриил Харитонович
+Вяхирев, Рэм Иванович
+Попов, Сергей Алексеевич
+Габидуллин, Ринат Гиндуллович
+Попов, Сергей Борисович
+Габуния, Георгий Валерьевич
+Попова, Татьяна Львовна
+Попцов, Олег Максимович
+Гаджиев, Гадис Абдуллаевич
+Пороховщиков, Александр Шалвович
+Гаер, Евдокия Александровна
+Потанин, Владимир Олегович
+Газеев, Евгений Иванович
+Потапенко, Александр Федорович
+Газизуллин, Фарит Рафикович
+Потапов, Леонид Васильевич
+Гайдар, Егор Тимурович
+Потапов, Сергей Александрович
+Гайдаш, Мария Ивановна
+Похмелкин, Виктор Валерьевич
+Гайсин, Малик Фавзавиевич
+Починок, Александр Петрович
+Галаган, Дмитрий Андреевич
+Премьяк, Петр Григорьевич
+Галазий, Григорий Иванович
+Примаков, Евгений Максимович
+Галазов, Ахсарбек Хаджимурзаевич
+Приходько, Сергей Эдуардович
+Галиев, Ахметгали Мухаметгалиевич
+Прокопенко, Вера Владимировна
+Гамза, Геннадий Ефимович
+Гамидов, Гамид Мустафаевич
+Проханов, Александр Андреевич
+Ганеев, Мулланур Фахразиевич
+Прудников, Виктор Алексеевич
+Гантамиров, Бислан Сайд-Алиевич
+Прусак, Михаил Михайлович
+Гареев, Махмут Ахметович
+Пузановский, Адриан Георгиевич
+Гаюльский, Виктор Иванович
+Пуликовский, Константин Борисович
+Гвоздева, Светлана Николаевна
+Путин, Владимир Владимирович
+Гдлян, Тельман Хоренович
+Пчелкин, Владимир Викторович
+Генералов, Андрей Иванович
+Пызин, Владимир Александрович
+Генералов, Сергей Владимирович
+Пыльнев, Виктор Викторович
+Гениатулин, Равиль Фаритович
+Пятницкий, Юрий Георгиевич
+Герасименко, Николай Федорович
+Рoйтман, Илья Борисович
+Герасимов, Сергей Иванович
+Рабданов, Владимир Рабданович
+Геращенко, Виктор Владимирович
+Радуев, Салман
+Раевская, Наталия Алексеевна
+Гинзбург, Соломон Израилевич
+Райков, Геннадий Иванович
+Гитин, Виктор Владимирович
+Рахимов, Муртаза Губайдуллович
+Глазьев, Сергей Юрьевич
+Рахманин, Владимир Олегович
+Глотов, Сергей Александрович
+Рахмонов, Эмомали Шарипович
+Глубоковский, Михаил Константинович
+Рейман, Леонид Дододжонович
+Глухих, Виктор Константинович
+Решульский, Сергей Николаевич
+Глушенков, Анатолий Егорович
+Римский, Владимир Львович
+Глущенко, Михаил Иванович
+Рогозин, Дмитрий Олегович
+Говорин, Борис Александрович
+Родионов, Игорь Николаевич
+Говорухин, Станислав Сергеевич
+Родионов, Петр Иванович
+Голембиовский, Игорь Несторович
+Родионов, Сергей Сергеевич
+Голов, Анатолий Григорьевич
+Рожков, Виктор Дмитриевич
+Головков, Алексей Леонардович
+Рокецкий, Леонид Юлианович
+Головлев, Владимир Иванович
+Романов, Валентин Степанович
+Гоман, Владимир Владимирович
+Романов, Петр Васильевич
+Гонжаров, Олег Павлович
+Романовский, Михаил Александрович
+Гончар, Николай Николаевич
+Ромашкин, Виктор Васильевич
+Горбачев, Михаил Сергеевич
+Россель, Эдуард Эргартович
+Горбачева, Раиса Максимовна
+Рохлин, Лев Яковлевич
+Гордеев, Алексей Васильевич
+Рощина, Татьяна Николаевна
+Гордеев, Анатолий Николаевич
+Руга, Владимир Эдуардович
+Горлов, Александр Викторович
+Рудкин, Юрий Дмитриевич
+Горшков, Михаил Константинович
+Руднов, Олег Константинович
+Горюнов, Владимир Дмитриевич
+Румянцев, Александр Юрьевич
+Горюнов, Евгений Владимирович
+Румянцев, Олег Германович
+Горячев, Валерий Сергеевич
+Горячев, Марк Леонидович
+Рутковский, Олег Всеволодович
+Горячев, Юрий Фролович
+Руцкой, Александр Владимирович
+Горячева, Светлана Петровна
+Рушайло, Владимир Борисович
+Гостев, Руслан Георгиевич
+Рыбаков, Юлий Андреевич
+Рыбкин, Иван Петрович
+Грачев, Павел Сергеевич
+Рыгалов, Александр Андреевич
+Гребенников, Валерий Васильевич
+Рыжков, Владимир Александрович
+Рыжков, Николай Иванович
+Грешневиков, Анатолий Николаевич
+Рюриков, Дмитрий Борисович
+Григориади, Владимир Стиллианович
+Рябов, Александр Иванович
+Григорьев, Валерий Николаевич
+Рябов, Николай Тимофеевич
+Григорьев, Владимир Федорович
+Гришин, Василий Дмитриевич
+Рябухин, Сергей Николаевич
+Гришкевич, Олег Петрович
+Сабиров, Марат Хамзинович
+Гришуков, Владимир Витальевич
+Савельев, Александр Георгиевич
+Савельев, Константин Сергеевич
+Громов, Борис Всеволодович
+Савельев, Николай Николаевич
+Громов, Владимир Павлович
+Громов, Феликс Николаевич
+Савиных, Виктор Петрович
+Грошев, Владимир Павлович
+Савицкая, Светлана Евгеньевна
+Грущак, Сергей Владимирович
+Савицкий, Виталий Викторович
+Савицкий, Олег Владимирович
+Губенко, Николай Николаевич
+Савченко, Евгений Степанович
+Губкин, Игорь Владимирович
+Савченко, Олег Витальевич
+Гудима, Тамара Михайловна
+Савчук, Вера Семеновна
+Гужвин, Анатолий Петрович
+Сагалаев, Эдуард Михайлович
+Гуров, Александр Иванович
+Садчиков, Георгий Михайлович
+Гусарова, Галина Ивановна
+Саетгалиев, Зифкат Исламович
+Гусев, Владимир Кузьмич
+Сажинов, Павел Александрович
+Гусев, Павел Николаевич
+Сайфуллин, Альзам Тухватуллинович
+Гусинский, Владимир Александрович
+Сайфуллин, Инсаф Шарифуллович
+Гусман, Юлий Соломонович
+Салий, Александр Иванович
+Густов, Вадим Анатольевич
+Салов, Евгений Иванович
+Гуськов, Юрий Александрович
+Салчак, Галина Алексеевна
+Гуцериев, Михаил Сафарбекович
+Салье, Марина Евгеньевна
+Давиденко, Владимир Иванович
+Сальников, Виктор Иванович
+Давиташвили, Евгения Ювашевна (Джуна)
+Сандлер, Маргарита Ревмировна
+Давыдкин, Виктор Алексеевич
+Сапиро, Евгений Саулович
+Давыдов, Александр Семенович
+Сапожников, Николай Иванович
+Давыдов, Андрей Александрович
+Сатаров, Георгий Александрович
+Давыдов, Виктор Федорович
+Сафаров, Раджаб Саттарович
+Давыдов, Всеволод Геннадьевич
+Сафронов, Виталий Александрович
+Давыдов, Олег Дмитриевич
+Сахарков, Юрий Викторович
+Давыдов, Сергей Вячеславович
+Свечников, Петр Григорьевич
+Дальский, Николай Николаевич
+Свинин, Сергей Васильевич
+Даниленко, Сергей Андреевич
+Севастьянов, Виталий Иванович
+Данилов, Юрий Михайлович
+Севенард, Константин Юрьевич
+Данилова, Нина Петровна
+Севенард, Юрий Константинович
+Данченко, Борис Иванович
+Севрюгин, Николай Васильевич
+Селезнев, Геннадий Николаевич
+Дейнекин, Петр Степанович
+Селезнев, Николай Васильевич
+Дементьева, Наталья Леонидовна
+Селиванов, Андрей Владимирович
+Демидов, Иван Иванович
+Селиверстов, Юрий Иванович
+Семаго, Владимир Владимирович
+Денисенко, Бэлла Анатольевна
+Семенов, Виктор Александрович
+Денисов, Анатолий Кузьмич
+Семенов, Михаил Иннокентьевич
+Деревянко, Виктор Васильевич
+Семенов, Сергей Сергеевич
+Дерипаска, Олег Владимирович
+Семенов, Юрий Павлович
+Дерюгин, Юрий Иванович
+Семергей, Леонид Васильевич
+Дерябин, Юрий Степанович
+Сенин, Григорий Николаевич
+Десятников, Василий Алексеевич
+Сергеев, Игорь Дмитриевич
+Сергеенков, Владимир Нилович
+Джанибеков, Владимир Александрович
+Сергиенко, Валерий Иванович
+Джаримов, Аслан Алиевич
+Серов, Валерий Михайлович
+Сеславинский, Михаил Вадимович
+Дзасохов, Александр Сергеевич
+Сивак, Анатолий Васильевич
+Дмитриева, Оксана Генриховна
+Сигарев, Сергей Федорович
+Дмитриева, Татьяна Борисовна
+Сидоров, Анатолий Степанович
+Долголаптев, Анатолий Васильевич
+Сидоров, Евгений Юрьевич
+Сидоров, Михаил Викторович
+Дондуков, Александр Николаевич
+Симонов, Алексей Кириллович
+Доренко, Сергей Леонидович
+Симонов, Валерий Петрович
+Драчевский, Леонид Вадимович
+Симонов, Михаил Петрович
+Дубенецкий, Яков Николаевич
+Сироткин, Владимир Дмитриевич
+Дубинин, Сергей Константинович
+Ситников, Алексей Петрович
+Дубровина, Елена Павловна
+Скворцов, Вячеслав Николаевич
+Дурягин, Иван Николаевич
+Скворцов, Сергей Борисович
+Душенов, Константин Юрьевич
+Скляров, Иван Петрович
+Дьяченко, Владимир Николаевич
+Скоков, Юрий Владимирович
+Дьяченко, Татьяна Борисовна
+Скуратов, Юрий Ильич
+Евстафьев, Аркадий Вячеславович
+Скурихин, Сергей Васильевич
+Скурлатов, Валерий Иванович
+Егоров, Александр Кирьянович
+Славный, Василий Дмитриевич
+Егоров, Владимир Константинович
+Слива, Анатолий Яковлевич
+Егоров, Михаил Константинович
+Слиска, Любовь Константиновна
+Егоров, Николай Дмитриевич
+Сметанкин, Евгений Александрович
+Егоров, Сергей Ефимович
+Смирнов, Анатолий Анатольевич
+Елагин, Владимир Васильевич
+Смирнов, Валерий Марксович
+Елисеев, Александр Игоревич
+Смирнов, Евгений Александрович
+Елчев, Виктор Алексеевич
+Смирнов, Михаил Владимирович
+Ельцин, Борис Николаевич
+Смоленский, Александр Павлович
+Емельянов, Алексей Михайлович
+Смолин, Олег Николаевич
+Емельянов, Михаил Васильевич
+Смоляков, Владимир Николаевич
+Еньков, Сергей Алексеевич
+Собакин, Евгений Юрьевич
+Соболев, Анатолий Николаевич
+Ермаченко, Станислав Васильевич
+Собчак, Анатолий Александрович
+Ермишин, Александр Викторович
+Собянин, Сергей Семенович
+Ефимов, Виталий Борисович
+Сокол, Святослав Михайлович
+Ефремов, Анатолий Антонович
+Соколов, Александр Сергеевич
+Жабоев, Махмуд Надирович
+Соколов, Андрей Владимирович
+Жамсуев, Баир Баясхаланович
+Соколов, Вячеслав Константинович
+Ждакаев, Иван Андреевич
+Сокур, Дмитрий Иванович
+Соловьев, Анатолий Яковлевич
+Жебровский, Станислав Михайлович
+Соловьев, Вадим Павлович
+Жимиров, Вадим Николаевич
+Соловьев, Владимир Владимирович
+Жириновский, Владимир Вольфович
+Соломатин, Анатолий Васильевич
+Жуков, Александр Дмитриевич
+Соломатин, Егор Юрьевич
+Жукова, Нелля Николаевна
+Солонников, Дмитрий Владимирович
+Жуковский, Александр Иванович
+Солтаганов, Вячеслав Федорович
+Журбенко, Владимир Михайлович
+Солуянов, Андрей Владимирович
+Журко, Василий Васильевич
+Сорокина, Елена Станиславовна
+Забейворота, Александр Иванович
+Сосковец, Олег Николаевич
+Завгаев, Доку Гапурович
+Сохов, Владимир Казбулатович
+Заверюха, Александр Харлампиевич
+Спиридонов, Юрий Алексеевич
+Завидия, Андрей Федорович
+Станкевич, Сергей Борисович
+Задорин, Игорь Вениаминович
+Станков, Анатолий Георгиевич
+Задорнов, Михаил Михайлович
+Старков, Владислав Андреевич
+Зайцев, Анатолий Александрович
+Старовойтова, Галина Васильевна
+Залыгин, Сергей Павлович
+Стародубов, Владимир Иванович
+Заричанский, Станислав Константинович
+Стародубцев, Василий Александрович
+Заславская, Татьяна Ивановна
+Старостенко, Владимир Иванович
+Застрожная, Ольга Кирилловна
+Степанков, Валентин Георгиевич
+Затулин, Константин Федорович
+Степанов, Андрей Георгиевич
+Захаров, Алексей Константинович
+Степанов, Виктор Николаевич
+Зацепина, Нина Андреевна
+Степанов, Виктор Федорович
+Зволинский, Вячеслав Петрович
+Степанов, Владимир Алексеевич
+Зеленин, Владимир Михайлович
+Степанов, Евгений Иванович
+Зеленкин, Виктор Васильевич
+Степанов, Сергей Борисович
+Зеленкин, Виталий Афанасьевич
+Степанов, Теймураз Георгиевич
+Зеленов, Евгений Алексеевич
+Степашин, Сергей Вадимович
+Зелент, Иван Зигмундович
+Стерлигов, Александр Николаевич
+Зеренков, Валерий Георгиевич
+Столяров, Николай Сергеевич
+Злобин, Владимир Вениаминович
+Столярова, Насима Калимовна
+Злобина, Лариса Афанасьевна
+Страхов, Алексей Леонидович
+Злотникова, Тамара Владимировна
+Стрекозов, Владимир Георгиевич
+Золотарев, Виктор Борисович
+Золотарев, Владимир Антонович
+Суворов, Александр Сергеевич
+Зоркальцев, Виктор Ильич
+Судаков, Гурий Васильевич
+Зорькин, Валерий Дмитриевич
+Сударенков, Валерий Васильевич
+Зотиков, Алексей Алексеевич
+Сулакшин, Степан Степанович
+Зотин, Владислав Максимович
+Сулейменов, Ибрагим Абдурахманович
+Султанов, Ринат Ишбулдович
+Зубов, Валерий Михайлович
+Сурганов, Вячеслав Сергеевич
+Зырянов, Сергей Владимирович
+Суриков, Александр Александрович
+Зюганов, Геннадий Андреевич
+Сурков, Михаил Семенович
+Зяблицев, Евгений Геннадьевич
+Суров, Петр Сергеевич
+Иваненко, Сергей Викторович
+Сысуев, Олег Николаевич
+Иванков, Владимир Иванович
+Сычев, Анатолий Павлович
+Иванов, Василий Васильевич
+Сычев, Сергей Владимирович
+Танаев, Кирилл Валерьевич
+Иванов, Игорь Владимирович
+Таранцов, Михаил Александрович
+Иванов, Игорь Сергеевич
+Тарасов, Артем Михайлович
+Тарасов, Валерий Михайлович
+Тарачев, Владимир Александрович
+Иванова, Татьяна Борисовна
+Татаркин, Александр Иванович
+Иванченко, Леонид Андреевич
+Тацюн, Мирон Васильевич
+Иванюженков, Борис Викторович
+Темиржанов, Владимир Хасанбиевич
+Игнатенко, Виталий Никитич
+Теребов, Олег Владимирович
+Игнатьев, Игорь Владимирович
+Терентьев, Василий Дмитриевич
+Игнатьев, Кирилл Борисович
+Терехов, Станислав Николаевич
+Игнатьев, Сергей Михайлович
+Тетельмин, Владимир Владимирович
+Игрунов, Вячеслав Владимирович
+Тизяков, Александр Иванович
+Игумнов, Геннадий Вячеславович
+Титкин, Александр Алексеевич
+Илларионов, Андрей Николаевич
+Титов, Герман Степанович
+Ильюшенко, Алексей Николаевич
+Титов, Константин Алексеевич
+Ильясов, Станислав Валентинович
+Тиунов, Олег Иванович
+Илюмжинов, Кирсан Николаевич
+Тихомиров, Валерий Викторович
+Илюхин, Виктор Иванович
+Тихомиров, Владислав Николаевич
+Илюшин, Виктоp Васильевич
+Тихонов, Александр Анатольевич
+Ионов, Анатолий Васильевич
+Тихонов, Александр Николаевич
+Ипполитов, Ксенофонт Христофорович
+Тихонов, Виктор Васильевич
+Исаков, Владимир Борисович
+Тихонов, Владимир Ильич
+Исаков, Николай Алексеевич
+Тихонов, Георгий Иванович
+Тишков, Андрей Николаевич
+Ишмуратов, Минниарис Минигалиевич
+Ткачев, Александр Николаевич
+Ищенко, Евгений Петрович
+Топорков, Владимир Федорович
+Топорков, Михаил Николаевич
+Кагаловский, Константин Григорьевич
+Топоров, Владимир Михайлович
+Каданников, Владимир Васильевич
+Торлопов, Владимир Александрович
+Тосунян, Гарегин Ашотович
+Казаков, Александр Иванович
+Тотиев, Сергей Александрович
+Казаков, Леонид Андреевич
+Тохтабиев, Сергей Аминович
+Казакова, Римма Федоровна
+Травкин, Николай Ильич
+Казаковцев, Владимир Александрович
+Трапезников, Валерий Владимирович
+Казанник, Алексей Иванович
+Третьяков, Виталий Товиевич
+Трошев, Геннадий Николаевич
+Казаров, Олег Владимирович
+Трошкин, Николай Никитич
+Казеннов, Сергей Юрьевич
+Трубников, Вячеслав Иванович
+Трушников, Валерий Георгиевич
+Каламанов, Владимир Авдашевич
+Тулеев, Аман-гельды Молдагазыевич
+Калачев, Константин Эдуардович
+Туманов, Вадим Иванович
+Калашников, Сергей Вячеславович
+Туманов, Владимир Александрович
+Калугин, Олег Данилович
+Туманов, Владислав Николаевич
+Калюжный, Виктор Иванович
+Туманов, Сергей Владимирович
+Калягин, Владимир Александрович
+Туполев, Алексей Андреевич
+Камышинский, Николай Акимович
+Турусин, Анатолий Афанасьевич
+Канаев, Леонид Михайлович
+Тюлькин, Виктор Аркадьевич
+Караганов, Сергей Александрович
+Тягунов, Александр Александрович
+Карапетян, Саак Альбертович
+Тяжлов, Анатолий Степанович
+Карев, Владимир Николаевич
+Убожко, Лев Григорьевич
+Карелин, Александр Александрович
+Уваров, Вячеслав Николаевич
+Карелова, Галина Николаевна
+Удугов, Мовлади
+Каримова, Дания Юсуфовна
+Ульбашев, Мухарби Магомедович
+Карпов, Анатолий Евгеньевич
+Улюкаев, Алексей Валентинович
+Карпов, Станислав Анатольевич
+Умалатова, Сажи Зайндиновна
+Касатонов, Игорь Владимирович
+Уразбаев, Нурлан Уланович
+Касьянов, Михаил Михайлович
+Уринсон, Яков Моисеевич
+Катальников, Владимир Дмитриевич
+Устинов, Владимир Васильевич
+Квашнин, Анатолий Васильевич
+Устюгов, Валерий Николаевич
+Кечкин, Валерий Алексеевич
+Уткин, Владимир Петрович
+Кибирев, Борис Григорьевич
+Уткин, Юрий Васильевич
+Кивелиди, Иван Харлампиевич
+Ушаков, Вячеслав Юрьевич
+Кинелев, Владимир Георгиевич
+Фалалеев, Сергей Николаевич
+Кириенко, Сергей Владиленович
+Фархутдинов, Игорь Павлович
+Кирилл, митрополит
+Федоров, Борис Григорьевич
+Кирпичников, Валерий Александрович
+Федоров, Валерий Валерьевич
+Кирпичников, Михаил Петрович
+Федоров, Евгений Алексеевич
+Кирпичников, Юрий Александрович
+Федоров, Николай Васильевич
+Киселев, Александр Николаевич
+Федоров, Святослав Николаевич
+Киселев, Вячеслав Викторович
+Федосеев, Анатолий Михайлович
+Киселев, Евгений Алексеевич
+Федосеева-Шукшина, Лидия Николаевна
+Киселев, Олег Владимирович
+Федосов, Виктор Иванович
+Кислюк, Михаил Борисович
+Федулова, Алевтина Васильевна
+Киц, Александр Владимирович
+Федутинов, Юрий Юрьевич
+Клебанов, Илья Иосифович
+Филатов, Александр Валентинович
+Климантова, Галина Ивановна
+Филимонов, Вадим Донатович
+Клямкин, Игорь Моисеевич
+Филин, Владимир Иванович
+Кныш, Валентин Филиппович
+Филипенко, Александр Васильевич
+Кобелев, Виктор Васильевич
+Филиппов, Владимир Михайлович
+Кобец, Константин Иванович
+Филиппов, Петр Сергеевич
+Кобзон, Иосиф Давыдович
+Фильшин, Михаил Владимирович
+Кобылкин, Василий Федорович
+Финько, Олег Александрович
+Ковалев, Александр Яковлевич
+Фоминцев, Сергей Анатольевич
+Ковалев, Валентин Алексеевич
+Фортов, Владимир Евгеньевич
+Ковалев, Николай Дмитриевич
+Фрадков, Михаил Ефимович
+Ковалев, Сергей Адамович
+Франк, Сергей Оттович
+Коваленок, Владимир Васильевич
+Хабаров, Владимир Викторович
+Ковальский, Леон Иосифович
+Хабаров, Олег Сергеевич
+Ковлягин, Анатолий Федорович
+Хакамада, Ирина Муцуовна
+Коган, Евгений Владимирович
+Хамаев, Азат Киямович
+Кожокин, Евгений Михайлович
+Харитонов, Александр Петрович
+Козак, Дмитрий Николаевич
+Харитонов, Евгений Михайлович
+Козерадский, Анатолий Александрович
+Харитонов, Николай Михайлович
+Козицын, Николай Иванович
+Хаттаб, (Хабиб Абдул Рахман)
+Козлов, Андрей Андреевич
+Хватков, Николай Павлович
+Козлов, Евгений Александрович
+Хижа, Георгий Степанович
+Козырев, Александр Иванович
+Хлыстун, Виктор Николаевич
+Козырев, Андрей Владимирович
+Ходорковский, Михаил Борисович
+Козырева, Александра Михайловна
+Ходырев, Геннадий Максимович
+Коков, Валерий Мухамедович
+Холод, Леонид Иванович
+Кокошин, Андрей Афанасьевич
+Хохлов, Вячеслав Александрович
+Колесников, Виктор Иванович
+Хохрякова, Ольга Сергеевна
+Колесников, Михаил Петрович
+Хрипель, Геннадий Тимофеевич
+Христенко, Виктор Борисович
+Колюшин, Евгений Иванович
+Хрусталев, Герман Александрович
+Комаров, Александр Сергеевич
+Хубиев, Владимир Исламович
+Комаров, Евгений Борисович
+Хутанов, Леонид Александрович
+Комаровский, Юрий Владимирович
+Комов, Николай Васильевич
+Цветков, Валентин Иванович
+Комчатов, Владимир Федорович
+Циблиев, Василий Васильевич
+Кондратенко, Николай Игнатович
+Цику, Казбек Асланбечевич
+Кондратьев, Георгий Григорьевич
+Кононов, Анатолий Леонидович
+Чайка, Юрий Яковлевич
+Константинов, Илья Владиславович
+Чаптынов, Валерний Иванович
+Конташов, Анатолий Павлович
+Чахкиев, Башир Ахмедович
+Черепков, Виктор Иванович
+Коргунюк, Юрий Григорьевич
+Черкесов, Виктор Васильевич
+Коржаков, Александр Васильевич
+Черненко, Андрей Григорьевич
+Корниенко, Виктор Ульянович
+Черниченко, Юрий Дмитриевич
+Корнилова, Зоя Афанасьевна
+Черногоров, Александр Леонидович
+Корнуков, Анатолий Михайлович
+Черномырдин, Виктор Степанович
+Коровников, Александр Венидиктович
+Черный, (Черной) Михаил Семенович
+Королев, Олег Петрович
+Чернышев, Алексей Андреевич
+Коротков, Леонид Викторович
+Чернышев, Василий Иванович
+Корсаков, Николай Николаевич
+Чеснаков, Алексей Александрович
+Корсун, Юрий Николаевич
+Четин, Иван Васильевич
+Коршунов, Лев Александрович
+Чехоев, Анатолий Георгиевич
+Косиков, Михаил Филиппович
+Чечеватов, Виктор Степанович
+Костерин, Евгений Алексеевич
+Чикин, Валентин Васильевич
+Костин, Георгий Васильевич
+Чилингаров, Артур Николаевич
+Костоев, Исса Магомедович
+Чистоходова, Рита Васильевна
+Костюткин, Владимир Михайлович
+Чуб, Владимир Федорович
+Чубайс, Анатолий Борисович
+Котелкин, Александр Иванович
+Чумиков, Александр Николаевич
+Котенков, Александр Алексеевич
+Чуньков, Юрий Иванович
+Котков, Анатолий Степанович
+Чурилов, Алексей Викторович
+Кох, Альфред Рейнгольдович
+Чуркин, Геннадий Иванович
+Кошева, Виолетта Константиновна
+Шабанов, Александр Александрович
+Кошелюк, Мирослав Евгеньевич
+Шабанов, Иван Михайлович
+Кошкин, Михаил Петрович
+Шабдурасулов, Игорь Владимирович
+Шабунин, Иван Петрович
+Кравец, Александр Алексеевич
+Шагидулин, Анвер Галлямович
+Кравцов, Юрий Анатольевич
+Шаинский, Владимир Яковлевич
+Кравчук, Леонид Макарович
+Шаймиев, Минтимер Шарипович
+Крапивин, Юрий Васильевич
+Шаккум, Мартин Люцианович
+Красников, Дмитрий Федорович
+Шаманов, Владимир Анатольевич
+Краснов, Михаил Александрович
+Шандыбин, Василий Иванович
+Крашенинников, Павел Владимирович
+Шаповальянц, Андрей Георгиевич
+Кременец, Ирина Васильевна
+Шапошников, Евгений Иванович
+Кресс, Виктор Мельхиорович
+Шарапов, Владимир Федорович
+Крестьянинов, Евгений Владимирович
+Шарова, Галина Михайловна
+Кривельская, Нина Викторовна
+Шаталин, Станислав Сергеевич
+Кругликов, Александр Леонидович
+Шаталов, Сергей Дмитриевич
+Круглов, Анатолий Сергеевич
+Шафраник, Юрий Константинович
+Крупнов, Александр Евгеньевич
+Шахов, Владимир Николаевич
+Крючков, Анатолий Викторович
+Шахрай, Сергей Михайлович
+Куваев, Александр Александрович
+Шашурин, Сергей Петрович
+Кувшинов, Александр Иванович
+Швец, Любовь Никитична
+Куделина, Любовь Кондратьевна
+Швидлер, Евгений Маркович
+Кудрин, Алексей Леонидович
+Швыдкой, Михаил Ефимович
+Куевда, Григорий Андреевич
+Шевелуха, Виктор Степанович
+Кузнецов, Александр Владимирович
+Шевченко, Вячеслав Алексеевич
+Кузнецов, Борис Юрьевич
+Шевченко, Юрий Леонидович
+Кузнецов, Владислав Алексеевич
+Шейнис, Виктор Леонидович
+Кузнецов, Вячеслав Юрьевич
+Шелищ, Петр Борисович
+Кузнецов, Леонтий Васильевич
+Шенин, Олег Семенович
+Кузнецов, Михаил Варфоломеевич
+Шенкарев, Олег Александрович
+Кузнецов, Юрий Павлович
+Шестаков, Владимир Афанасьевич
+Кузьмин, Владимир Васильевич
+Шестаков, Дмитрий Юрьевич
+Кулешов, Олег Степанович
+Шипов, Александр Борисович
+Кулик, Геннадий Васильевич
+Шишлов, Александр Владимирович
+Куликов, Александр Дмитриевич
+Шкирко, Анатолий Афанасьевич
+Куликов, Анатолий Сергеевич
+Шмаков, Михаил Викторович
+Кульбака, Нина Ивановна
+Шматов, Юрий Анисимович
+Кульянов, Евгений Георгиевич
+Шмелев, Николай Петрович
+Кулясова, Нина Александровна
+Шойгу, Сергей Кужугетович
+Кумачев, Владимир Николаевич
+Шохин, Александр Николаевич
+Купцов, Валентин Александрович
+Шпигель, Леонид Теодорович
+Курамин, Владимир Петрович
+Штогрин, Сергей Иванович
+Курбатов, Владимир Николаевич
+Штыгашев, Владимир Николаевич
+Кургинян, Сергей Ервандович
+Шуба, Виталий Борисович
+Куркова, Бэлла Алексеевна
+Шубина, Татьяна Ивановна
+Куроедов, Владимир Иванович
+Курочкин, Виктор Васильевич
+Шугуров, Расуль Игдисамович
+Лапин, Александр Александрович
+Шумейко, Владимир Филлипович
+Лаптев, Иван Дмитриевич
+Шурчанов, Валентин Сергеевич
+Лапшин, Михаил Иванович
+Шутеев, Василий Иванович
+Ларионов, Егор Михайлович
+Шушкевич, Станислав Станиславович
+Ларицкий, Владимир Ермолаевич
+Щекочихин, Юрий Петрович
+Лахова, Екатерина Филипповна
+Щербак, Владимир Николаевич
+Лацис, Отто Рудольфович
+Щербаков, Владимир Иванович
+Лебедев, Вячеслав Михайлович
+Эбзеев, Борис Сафарович
+Лебедь, Александp Иванович
+Лебедь, Алексей Иванович
+Юмашев, Валентин Борисович
+Лемешев, Михаил Яковлевич
+Юрков, Анатолий Петрович
+Лемешов, Геннадий Владимирович
+Юрчик, Владислав Григорьевич
+Леонид, Николаевич Чернышев
+Юрьев, Михаил Зиновьевич
+Юшенков, Сергей Николаевич
+Леончев, Владимир Александрович
+Явлинский, Григорий Алексеевич
+Лесин, Михаил Юрьевич
+Якимов, Анатолий Михайлович
+Леушкин, Сергей Геннадьевич
+Якимов, Виктор Васильевич
+Лившиц, Александр Яковлевич
+Яковлев, Вениамин Федорович
+Лимонов, (Савенко) Эдуард Вениаминович
+Яковлев, Владимир Анатольевич
+Линник, Виталий Викторович
+Яковлев, Владимир Николаевич
+Липицкий, Василий Семенович
+Якубович, Леонид Аркадьевич
+Липсиц, Игорь Владимирович
+Якунин, Глеб Павлович
+Лисецкий, Петр Иванович
+Якуш, Михаил Михайлович
+Лисицин, Анатолий Иванович
+Якушкин, Дмитрий Дмитриевич
+Лисичкин, Владимир Александрович
+Яндарбиев, Зелимхан Абдумуслимович
+Лисовский, Сергей Федорович
+Янковский, Аркадий Эдуардович
+Лиханов, Альберт Анатольевич
+Яриханов, Хож-Ахмед
+Лихачев, Василий Николаевич
+Лихачев, Владимир Николаевич
+Ярославцев, Владимир Григорьевич
+Лобанов, Александр Владимирович
+Ярошенко, Анатолий Иванович
+Яруллин, Вафа Сейтбатталович
+Логинов, Евгений Юрьевич
+Ярыгина, Татьяна Владимировна
+Лодкин, Юрий Евгеньевич
+Ясин, Евгений Григорьевич
+Лозинская, Жанна Михайловна
+Ястржембский, Сергей Владимирович
+Лопатин, Владимир Николаевич
+Яхин, Халит Ахметович
+Лоторев, Александр Николаевич
+Яцкевич, Борис Александрович
+Лужков, Юрий Михайлович
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt
new file mode 100644
index 0000000..246f48e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt
@@ -0,0 +1,61254 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ČAČIĆ ALEKSANDAR
+ČAČIĆ JELICA
+ČAČIĆ MARIJA
+ČAČIĆ NIKOLA
+ČAČIJA BRANKO
+ČAĐENOVIĆ ŽARKO
+ČAĐENOVIĆ SABINA
+ČABAI ANDRIJA
+ČABAI LAJOŠ
+ČABAI MARIJA
+ČABAI STEVAN
+ČABAI STEVAN
+ČABARKAPA BRANKO
+ČABARKAPA MILENKO
+ČABARKAPA MIROSLAV
+ČABARKAPA SIMO
+ČABARKAPA STANKO
+ČABARKAPA TAMARA
+ČABARKAPA TOMAŠ
+ČABDARIĆ NIKOLA
+ČABDARIĆ ZORICA
+ČABI NANDOR
+ČABOVIĆ MILAN
+ČABRADI AGNEZIJA
+ČABRADI IVAN
+ČABRADI JELENA
+ČABRADI LJUBICA
+ČABRADI STEVAN
+ČABRDA MARTIN
+ČABRILO BOGDAN
+ČABRILO BRANISLAV
+ČABRILO LAZAR
+ČABRILO LJUBICA
+ČABRILO SPASOJA
+ČADEŠ ZDENKA
+ČADESKI BLAGOJE
+ČADOVSKI VLADIMIR
+ČAGLJEVIĆ TOMA
+ČAGOROVIĆ VLADIMIR
+ČAJA VANKA
+ČAJIĆ BOGOLJUB
+ČAJIĆ BORISLAV
+ČAJIĆ RADOSLAV
+ČAKŠIRAN MILADIN
+ČAKAN EUGEN
+ČAKAN EVGENIJE
+ČAKAN IVAN
+ČAKAN JULIJAN
+ČAKAN MIHAJLO
+ČAKAN STEVAN
+ČAKAN VLADIMIR
+ČAKAN VLADIMIR
+ČAKAN VLADIMIR
+ČAKARA ANA
+ČAKAREVIĆ MOMIR
+ČAKAREVIĆ NEDELJKO
+ČAKI ŠANDOR
+ČAKI AMALIJA
+ČAKI ANDRAŠ
+ČAKI LADISLAV
+ČAKI LAJOŠ
+ČAKI LASLO
+ČAKI MIHALJ
+ČAKI MIHALJ
+ČAKI PIROŠKA
+ČAKIĆ SAVA
+ČAKIĆ ZLATOJE DR
+ČAKMAK DANICA
+ČAKMAK DEJAN
+ČAKMAK LAZAR
+ČAKMAK LJILJANA
+ČAKMAK LJUBICA
+ČAKMAK SOFIJA
+ČAKMAK SVETOZAR
+ČAKMAL VOJISLAV
+ČAKOVAC BORISLAV
+ČAKOVAC MIROSLAV
+ČAKOVAC PANTELIJA
+ČAKOVAC SAVA
+ČAKOVIĆ ZDRAVKO
+ČAKRA MILENA
+ČALA ĐULA
+ČALA IREN
+ČALA IVANKA
+ČALA LENKA
+ČALAKIĆ BRANKO
+ČALAKIĆ LJUBOMIR
+ČALAKIĆ MARKO
+ČALAKIĆ MILAN
+ČALE IVAN
+ČALE JOSIP
+ČALE MILAN
+ČALE SOFIJA
+ČALE VLADIMIR
+ČALENIĆ BORISLAV
+ČALENIĆ BRANISLAVA
+ČALENIĆ DINA
+ČALENIĆ DRAGICA
+ČALENIĆ LAZAR
+ČALENIĆ LJILJANA
+ČALENIĆ LJUBOMIR
+ČALENIĆ LUKA
+ČALENIĆ MILOSAVA
+ČALENIĆ MIRJANA
+ČALENIĆ STEVAN
+ČALIĆ BOŠKO
+ČALIĆ JOVO
+ČALIĆ MARIJA
+ČALIJA DANICA
+ČALIJA JOVAN
+ČALIJA LAZAR
+ČALIJA MILAN
+ČAMĐIĆ JAHIJA
+ČAMANGOS ĐORĐE
+ČAMANGOS KATICA
+ČAMBER LJUBICA
+ČAMBOR ĐURO
+ČAMBOR ANDRIJA
+ČAMBOR JOSIP
+ČAMDŽIĆ NEAD
+ČAMO BARBARA
+ČAMPRAG ĐORĐE LEKAR
+ČAMPRAG DRAGA
+ČAMPRAG DUŠAN
+ČAMPRAG LJUBICA
+ČAMPRAG MILAN
+ČANČAR ĐORĐE
+ČANČAREVIĆ JOVANKA
+ČANČAREVIĆ MIROLJUB
+ČANČAREVIĆ MLADEN
+ČANADŽIĆ ĐORĐE
+ČANADŽIĆ JOVAN
+ČANADŽIĆ SANJA
+ČANADANOVIĆ ANDRIJA
+ČANADANOVIĆ MIRKO
+ČANADANOVIĆ RADMILA
+ČANADI JANOŠ MR
+ČANADI LJILJANA
+ČANAGLIĆ ĐOKA
+ČANAK ŽELJKO
+ČANAK ĐURA
+ČANAK BOSILJKA DR
+ČANAK MIHAJLO
+ČANAK MIRKO
+ČANAK MOMČILO
+ČANAK NEVENKA
+ČANAK NIKOLA
+ČANAK NIKOLA
+ČANAK NIKOLA
+ČANAK OLIVERA
+ČANAK VELJKO
+ČANAK VESELIN
+ČANAK VUKAŠIN
+ČANGALIĆ DUŠAN
+ČANIĆ LJILJANA
+ČANIĆ MILOŠ
+ČANIĆ OSTOJA
+ČANJEVAC ŠARLOTA
+ČANJI ANDRIJA
+ČANJI GABI
+ČANJI GABOR
+ČANJI GIZELA
+ČANJI IRENA
+ČANJI IRENA
+ČANJI JANKO
+ČANJI KARLO
+ČANJI LASLO
+ČANJI LASLO
+ČANJI NADA
+ČANJI SAMUEL
+ČANJI STEVAN
+ČANJI STEVAN
+ČANJI VLADIMIR
+ČANJI ZOLTAN
+ČANJI ZUZANA
+ČANKOVIĆ ĐORĐE
+ČANKOVIĆ BOŠKO
+ČANKOVIĆ BOJA
+ČANKOVIĆ BRANKO
+ČANKOVIĆ DANE
+ČANKOVIĆ DANE
+ČANKOVIĆ DANE
+ČANKOVIĆ DANICA
+ČANKOVIĆ JOVA
+ČANKOVIĆ LJUBINKA
+ČANKOVIĆ MARIJA
+ČANKOVIĆ MARKO
+ČANKOVIĆ MIKA
+ČANKOVIĆ MILAN
+ČANKOVIĆ MILAN
+ČANKOVIĆ MILIVOJ
+ČANKOVIĆ MILORAD
+ČANKOVIĆ MLADEN
+ČANKOVIĆ OLGA
+ČANKOVIĆ PETAR MR
+ČANKOVIĆ PETAR
+ČANKOVIĆ RADOMIR
+ČANKOVIĆ RADOMIR
+ČANKOVIĆ SLAĐANA
+ČANKOVIĆ SLAVKO
+ČANKOVIĆ SLOBODAN
+ČANKOVIĆ ZLATA
+ČANKOVIĆ ZORAN
+ČAP ANTAL
+ČAPANDA JOSIP
+ČAPELJA DRAGAN
+ČAPELJA JAN DR
+ČAPELJA JOVAN
+ČAPELJA PAVLE
+ČAPKO JULIJAN
+ČAPKO MILORAD
+ČAPKO MIROSLAV
+ČAPKO NESTOR
+ČAPO ADAM
+ČAPO ILIJA
+ČAPO JANOŠ
+ČAPO MARIJA
+ČAPO NADA
+ČAPRIĆ MILORAD
+ČARAPIĆ TOMISLAV
+ČASNJI ERŽEBET
+ČASNJI FERENC
+ČASTVEN JULIJANA
+ČAT ANDRIJA
+ČATALINAC MILAN
+ČATALINAC NIKOLA
+ČATALOV STOJAN
+ČATLAJA STANA
+ČATLAK OLIVERA
+ČATUŠ ZLATKO
+ČAUŠEVIĆ KEMAL
+ČAUŠEVIĆ MIDHAT
+ČAUŠEVIĆ TATJANA
+ČAVIĆ ŠTEFICA
+ČAVIĆ ŽIVKA
+ČAVIĆ ĐORĐE
+ČAVIĆ BOŠKO
+ČAVIĆ BRANISLAV
+ČAVIĆ DEJAN
+ČAVIĆ DEJAN
+ČAVIĆ DRAGICA
+ČAVIĆ DRAGO
+ČAVIĆ GORDANA
+ČAVIĆ GORDANA
+ČAVIĆ KRSTAN
+ČAVIĆ LJUBOMIR
+ČAVIĆ LJUBOMIR
+ČAVIĆ LJUBOMIR
+ČAVIĆ MARIJA
+ČAVIĆ MILENA
+ČAVIĆ MIRKO
+ČAVIĆ PETAR
+ČAVIĆ RADOMIR
+ČAVIĆ RADOVAN
+ČAVIĆ SLOBODAN
+ČAVIĆ SLOBODAN
+ČAVIĆ SOKA
+ČAVIĆ TOŠA
+ČAVIĆ VELIZAR
+ČAVIĆ VLADO
+ČAVIĆ ZORKA
+ČAZIM ČELEBIJA
+ČEČEK DRAGICA
+ČEČEK VILIM
+ČEČUK ALEKSANDAR
+ČEČUK BRANISLAV
+ČEČUK MILOŠ
+ČEČUK SLAVICA
+ČEČUK STEVAN
+ČEŠLJAR ĐURA
+ČEŠLJAR ALEKSANDAR
+ČEŠLJAR DARINKA
+ČEŠLJAR JOSIP
+ČEŠLJAR JOVAN
+ČEŠLJAR STEVAN
+ČEŠLJEVIĆ DUŠAN
+ČEŠLJEVIĆ KOSTA
+ČEŠLJEVIĆ MILENKO
+ČEŠLJEVIĆ MIROSLAVA
+ČEŠLJEVIĆ MOMČILO
+ČEŠLJEVIĆ STANKO
+ČEBAC LJUBICA
+ČEBAC PAVLE
+ČEBEDŽIĆ MILAN
+ČEBSKI VLADIMIR
+ČEBZAN PANTA
+ČEDIĆ REDŽO
+ČEGAR BOŽO
+ČEGAR DESANKA
+ČEGAR DRAGAN
+ČEGAR MILOŠ
+ČEGAR MIRKO
+ČEGAR PANE
+ČEGAR SRETKO
+ČEGAR STEVANIJA
+ČEGAR SVETLANA
+ČEGAR TODOR
+ČEH ANTON
+ČEH JOŽEF
+ČEH JOSIP
+ČEH JOVAN
+ČEH MIKLOŠ
+ČEH STANKA
+ČEH ZLATA
+ČEHAK KALMAN DR
+ČEHOV IVAN
+ČEHOV PETAR
+ČEJOVIĆ BISERKA
+ČEJOVIĆ SLOBODAN
+ČEJOVIĆ VELIMIR
+ČEJOVIĆ VLADIMIR
+ČEKANOVIĆ ŽIVANA
+ČEKANOVIĆ VITOMIR
+ČEKE DEŽE
+ČEKE MARIJA
+ČEKE SNEŽANA
+ČEKE STEVAN
+ČEKEREVAC BRANKO
+ČEKERINAC DUŠAN
+ČEKERINAC ZORAN
+ČEKI DARINKA
+ČEKI DAVID
+ČEKIĆ ANA
+ČEKIĆ DARINKA
+ČEKIĆ DIMITRIJE
+ČEKIĆ DRAGAN
+ČEKIĆ ILIJA
+ČEKIĆ JOVAN
+ČEKIĆ MILORAD
+ČEKIĆ MILORAD
+ČEKIĆ MILOVAN
+ČEKIĆ MIRJANA
+ČEKIĆ MOMČILO
+ČEKIĆ SAVA
+ČEKIĆ SAVA
+ČEKIĆ VASA
+ČEKIĆ ZDRAVKO
+ČEKRDŽIN RADISLAV
+ČELAR STEVAN
+ČELEBIĆ ALEKSANDAR
+ČELEBIĆ BOŽO
+ČELEBIĆ ILIJA
+ČELEBIĆ MILORAD
+ČELEBIĆ MOMČILO
+ČELEBIĆ OLGA
+ČELEBIĆ-TUBIĆ VESNA
+ČELEBIĆ ZORKA
+ČELEKETIĆ JOVAN
+ČELEKETIĆ JOVAN
+ČELEKETIĆ MIROSLAV
+ČELEKETIĆ MIROSLAV
+ČELEKETIĆ RADOVAN
+ČELEKETIĆ TAMARA
+ČELENAK KATALIN
+ČELESNIK DRAGUTIN
+ČELIĆ BANE
+ČELIĆ DINKA
+ČELIĆ GLIGORIJE
+ČELIĆ ILIJA
+ČELIĆ KATARINA
+ČELIĆ LJUBINKO
+ČELIĆ LJUBOMIR
+ČELIĆ MILIVOJ
+ČELIĆ PAVLE
+ČELIĆ SRĐAN
+ČELIĆ STANKO DR
+ČELIĆ VERA
+ČELICA JELENA
+ČELIKOVIĆ EMIL
+ČELOFIGA ANTONIJA
+ČELOVIĆ MIRJANA
+ČELOVSKI ANDREJ
+ČELOVSKI DRAGICA
+ČEMAN ĐORĐE
+ČEMAN ĐURA
+ČEMAN ANDRIJA
+ČEMAN DANILO
+ČEMAN GORDANA
+ČEMAN JAN
+ČEMAN JOVAN
+ČEMAN MIŠA
+ČEMAN MIROSLAV
+ČEMAN OLGA
+ČEMAN RUŽENKA
+ČEMAN SAMUEL
+ČEMAN STEVAN
+ČEMAN TEREZA
+ČEMBIĆ MILAN
+ČEMERE ERŽEBET
+ČEMERE LAJOŠ
+ČEMERLIĆ PETAR
+ČENDEŠ BRANKO
+ČENEJAC ŽIVAN
+ČENEJAC GRUJA
+ČENEJAC LJUBICA
+ČENEJAC LJUBICA
+ČENEJAC MILOŠ
+ČENEJAC MILUTIN
+ČENEJAC TOMISLAV
+ČENEJAC VELISLAV
+ČENGERI ATILA
+ČENGIĆ MARIJA
+ČENUŠA GEORGINA
+ČEPČANJI MIRJANA
+ČEPE ANICA
+ČEPI JANOŠ
+ČEPI LASLO
+ČEPI MARIJA
+ČEPI NANDOR
+ČEPIĆ BORISLAV
+ČEPIĆ SLOBODAN
+ČEPIĆ SMILJA
+ČEPIĆ VELIMIR
+ČEPIN VIKTOR
+ČEPLE STEVAN
+ČEPREGI IRENA
+ČEPREGI JULIJA
+ČEPSKI JOVAN
+ČEPSKI STEVAN
+ČER ŠANDOR
+ČER ALEKSANDAR
+ČER FRANJA
+ČER LADISLAV
+ČER MARIJA
+ČEREKOVIĆ ELIZABETA
+ČEREKOVIĆ RISTO
+ČEREKOVIĆ SLAVKO
+ČEREKOVIĆ VASKRSIJE
+ČEREVIĆ IVAN
+ČEREVIĆ VERICA
+ČEREVICKI ALEKSANDAR
+ČEREVICKI DUŠAN
+ČEREVICKI JOVAN
+ČEREVICKI LJUBICA
+ČEREVICKI MITA
+ČEREVICKI NADA
+ČEREVICKI RADA
+ČEREVICKI RUŽICA
+ČEREVICKI STEVAN
+ČEREVICKI SVETISLAV
+ČEREVICKI TEODOR
+ČERGE BELA
+ČERI JOŽEF
+ČERKEZ BOGDANKA
+ČERKEZ DUŠANKA
+ČERKEZ EVICA
+ČERKEZ JOVANKA
+ČERKEZ STEVAN
+ČERKEZOV DUŠANKA
+ČERKIĆ OSMAN
+ČERKIĆ VASILIJE
+ČERNČEC VERA
+ČERNAK EVA
+ČERNEK-APRO ŽUŽANA
+ČERNEKA STEVAN
+ČERNI IŠTVAN
+ČERNIČEK ERŽEBET
+ČERNIČEK IŠTVAN
+ČERNIČEK IŠTVAN
+ČERNIĆ DUŠAN
+ČERNIK ATILA
+ČERNIK JOŽEF
+ČERNIK MARGITA
+ČERNIVEC TATJANA
+ČERNJA MARIJA
+ČERNJA MATILDA
+ČERNJAK LADISLAV
+ČERNJANSKI DRAGOMIR
+ČERNJEVSKI SVETISLAV
+ČERNJUŠ JAKIM
+ČERNOGUBOV BORIS
+ČERNUŠ IBOLJA
+ČERNUŠ TIBOR
+ČEROVIĆ RATKO
+ČERUBDŽIĆ DRAGOMIR
+ČERUBDŽIĆ JOVAN
+ČERUBDŽIĆ MARGITA
+ČERUBDŽIĆ MARGITA
+ČERUPOŽIĆ OLGA
+ČERVARI ERŽEBET
+ČERVENJAK JELISAVETA
+ČERVENJAK JOSIP
+ČERVENJAK LJUBICA
+ČERVENJAK OLGA
+ČERVENJAK PETAR
+ČERVENJAK ZAGORKA
+ČERVENKO ALEKSANDAR
+ČERVENKO ANA
+ČESAK ANDRIJA
+ČETE ARON DIPL ING
+ČETIĆ MILORAD
+ČETLE MARIJA
+ČETNIK BOGDAN
+ČETNIK JOVAN
+ČETNIK ZAGORKA
+ČETNIKOVIĆ PETAR DIPL OEC
+ČETOJEVIĆ MILKA
+ČETOJEVIĆ RADIVOJE
+ČEVARI ĐORĐE
+ČEVARI ANTAL
+ČEVARI MARIJA
+ČEVARI MIHAJLO
+ČEVARI ZOLTAN
+ČIČA JOVAN
+ČIČA NIKOLA
+ČIČAI JOŽEF
+ČIČAK ANKICA
+ČIČAK MIRKO
+ČIČAKIN ANĐELKA
+ČIČAREVIĆ SAVO
+ČIČEK DANIJEL
+ČIČIĆ DRAGOLJUB
+ČIČIĆ MILE
+ČIČIĆ MIROSLAV
+ČIČKOVIĆ SVETKO
+ČIČOVAČKI BORISLAV
+ČIČOVAČKI DIMITRIJE
+ČIČOVAC ĐORĐE
+ČIČOVAC KOSTA
+ČIČOVAC MILICA
+ČIČOVAC RADOSLAV
+ČIČOVAC VLADIMIR
+ČIŽEK PAVLE
+ČIŽEK SLAVOMIR
+ČIŽMEŠIJA IVAN
+ČIBRI JANOŠ
+ČIBRI PIROŠKA
+ČIEF JAN
+ČIEF MARTIN
+ČIEF SAMUEL
+ČIHI FERENC
+ČIHI JANOŠ
+ČIHI JANOŠ
+ČIK ANDRIJA
+ČIK ILIJA
+ČIK JENE
+ČIK ZOLTAN
+ČIKI JOSIP
+ČIKI MARIJA
+ČIKIĆ ĐORĐE
+ČIKIĆ CVETOMIR
+ČIKIĆ DRAGICA
+ČIKIĆ EMIL
+ČIKIĆ EVICA
+ČIKIĆ MILAN
+ČIKIĆ NIKOLA
+ČIKIĆ STEVAN
+ČIKOŠ ŽUŽANA
+ČIKOŠ ĐERĐ
+ČIKOŠ ĐORĐE
+ČIKOŠ ERŽEBET
+ČIKOŠ ERŽEBET
+ČIKOŠ FERENC
+ČIKOŠ JOSIP DR
+ČIKOŠ JULIJANA
+ČIKOŠ LADISLAV
+ČIKOŠ LEHEL
+ČIKOŠ MARIJA
+ČIKOJEVIĆ VINKO
+ČIKOVIĆ SRETKO
+ČIKVAR KARLO
+ČILAG JANOŠ
+ČILAG NANDOR
+ČILAG NANDOR
+ČILEG EVA
+ČILIĆ AVDO
+ČILIĆ IŠTVAN
+ČILIĆ JOSIP
+ČILIĆ JULIANA
+ČILIĆ MALVINA
+ČILIĆ MARKO
+ČILIK ANKA
+ČILIK ILONKA
+ČILINGIRIS PAVLE
+ČINČAK GABOR
+ČINČURAK MIHAJLO
+ČINČURAK PAVLE
+ČINČURAK STEVAN
+ČINČUREK BOŠKO
+ČINDRAK DAUT
+ČINDRAK SANIJA
+ČIP MATO
+ČIPAK-FAZEKAŠ IBOJA
+ČIPE ĐORĐE
+ČIPE ERŽEBET
+ČIPE ERŽIKA
+ČIPE FRANJA
+ČIPE IREN
+ČIPE JANOŠ
+ČIPE JOSIP
+ČIPE JULIJANA
+ČIPE LASLO
+ČIPE LASLO
+ČIPE MARIJA
+ČIPE MARTA
+ČIPE MIHALJ
+ČIPE MIHALJ
+ČIPE STJEPAN
+ČIPIĆ KATICA
+ČIPKAR ANDREJ
+ČIPKAR STEVAN
+ČIPLIĆ LAZAR
+ČIPLIĆ MILAN
+ČIPLIĆ VERA
+ČIPLIĆ VIDA
+ČIRH DEŽE
+ČIRH VASKA
+ČIRIĆ JOŽEF
+ČISAR FERENC DIPL ING
+ČISAR LASLO
+ČITLUČANIN MILICA
+ČIVČIĆ ERŽEBET
+ČIVČIĆ MIHAJLO
+ČIVČIĆ MILE
+ČIVČIĆ MILJA
+ČIVČIĆ RADOMIR
+ČIVČIĆ SAVO
+ČIVOVIĆ MILEVA
+ČIVOVIĆ RADOVAN
+ČIZMADIA GUSTAV
+ČIZMADIA VERONIKA
+ČIZMADIJA ĐULA
+ČIZMADIJA IŠTVAN
+ČIZMADIJA JANOŠ
+ČIZMADIJA KAROLJ
+ČIZMADIJA MIKI
+ČIZMAR ANA
+ČIZMAR ANICA
+ČIZMAR JANKO
+ČIZMAR JOAKIM
+ČIZMAR LAJOŠ
+ČIZMAR MARIJA
+ČIZMAR MIRKO
+ČIZMAR PAVLE
+ČIZMAR STEVAN
+ČIZMAR VLADIMIR
+ČIZMEŠIJA MAGDA
+ČIZMIĆ ANICA
+ČIZMIĆ IVAN
+ČIZMIĆ RADA
+ČIZMIĆ ZORA
+ČIZMOVIĆ VIDAK
+ČMELIK MARTIN
+ČMELIK RASTISLAV
+ČOČAJ SULO
+ČOŠKOV NADA
+ČOAŠ IRENA
+ČOBAN JON
+ČOBAN JOVAN
+ČOBAN JOVAN
+ČOBAN LIDIJA
+ČOBAN MARIJA
+ČOBAN NIKU
+ČOBANOV ŽIVKA
+ČOBANOV BILJANA
+ČOBANOV DRAGICA
+ČOBANOV DRAGOMIR
+ČOBANOV DUŠAN
+ČOBANOV JELENA
+ČOBANOV LJILJANA
+ČOBANOV MELANIJA
+ČOBANOV MILJKA
+ČOBANOV RUŽICA
+ČOBANOV SLOBODAN
+ČOBANOV SVETO
+ČOBANOV VASA
+ČOBANOV VLADISLAV
+ČOBANOV ZORAN
+ČOBANOVIĆ BOŠKO
+ČOBANOVIĆ BRANISLAV
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DUŠAN
+ČOBANOVIĆ-GEZ MARIJA
+ČOBANOVIĆ ILIJA
+ČOBANOVIĆ JELENA
+ČOBANOVIĆ LAZAR
+ČOBANOVIĆ LJILJANA
+ČOBANOVIĆ NIKOLA
+ČOBANOVIĆ RADMILA
+ČOBANOVIĆ SAVA
+ČOBANOVIĆ SAVO
+ČOBANOVIĆ SLOBODAN
+ČOBANOVIĆ VALERIJA
+ČOBANOVIĆ ZORAN
+ČOBANSKI DRAGAN
+ČOBANSKI MILENA
+ČOBANSKI RADOJKA
+ČOBIĆ RELJA
+ČOBIĆ STRAHINJA
+ČOBIĆ TIMOTEJ
+ČOBOT ILONKA
+ČOBRDA JANKO
+ČOBRDA JANKO
+ČOJIĆ STEFANIDA
+ČOKA IVANKA
+ČOKAŠ LUCIJA
+ČOKAN NIKOLA
+ČOKANICA SAVA
+ČOKANICA SOFIJA
+ČOKIĆ MILAN
+ČOKLJAT ZDENKA
+ČOKRLIĆ BARBARA
+ČOKRLIĆ JOSIP
+ČOLAK ALEKSANDAR
+ČOLAK DRAGOLJUB
+ČOLAK DRAGOLJUB
+ČOLAK GORAN
+ČOLAK KRISTINA
+ČOLAK MIHAJLO
+ČOLAK-MIHALIK MARIJA
+ČOLAKOV MILAN
+ČOLAKOV MILE
+ČOLAKOV PAVLE
+ČOLAKOVIĆ ANĐELKA
+ČOLAKOVIĆ MOMA
+ČOLAKOVIĆ NIKOLA
+ČOLAKOVIĆ SVETOZAR
+ČOLAKOVIĆ TEODOR
+ČOLAKOVIĆ VANJA
+ČOLEVIĆ SVETISLAV
+ČOLIĆ ĐURO
+ČOLIĆ ANĐELKA
+ČOLIĆ BORO
+ČOLIĆ DESA
+ČOLIĆ DUŠAN
+ČOLIĆ DUŠKO
+ČOLIĆ ELIZABETA
+ČOLIĆ-GAĆEŠA SLAVICA
+ČOLIĆ IVAN
+ČOLIĆ JOVANKA
+ČOLIĆ JOVAN
+ČOLIĆ JOVAN
+ČOLIĆ LUKA
+ČOLIĆ MARA
+ČOLIĆ MARIJA
+ČOLIĆ MILAN
+ČOLIĆ MILAN
+ČOLIĆ MILAN
+ČOLIĆ MIRJANA
+ČOLIĆ MIRKO
+ČOLIĆ MIROSLAVKA
+ČOLIĆ PETAR
+ČOLIĆ RADA
+ČOLIĆ RADMILA
+ČOLIĆ RISTO
+ČOLIĆ SAVA
+ČOLOVIĆ BOGOLJUB
+ČOLOVIĆ DRAGAN
+ČOLOVIĆ DUŠAN
+ČOLOVIĆ MILE
+ČOLOVIĆ MILIJANA
+ČOLOVIĆ OLGA
+ČOLOVIĆ PETAR
+ČOLOVIĆ RADOSLAV
+ČOLOVIĆ RADOVAN
+ČOLOVIĆ STEVAN
+ČOLOVIĆ VIDOSAV
+ČOLOVIĆ VLADO
+ČOMA ĐULA
+ČOMA ĐULA
+ČOMIĆ ĐURĐINA
+ČOMIĆ DARA
+ČOMIĆ DRAGAN
+ČOMIĆ DUŠANKA
+ČOMIĆ ERŽEBET
+ČOMIĆ ILIJA
+ČOMIĆ JAŠKO
+ČOMIĆ JAŠKO
+ČOMIĆ KRSTA
+ČOMIĆ LIDIJA
+ČOMIĆ LJUBOMIR
+ČOMIĆ MILOŠ
+ČOMIĆ MIROLJUB
+ČOMIĆ MLADEN
+ČOMIĆ SLOBODAN
+ČOMIĆ SMILJANA
+ČOMIĆ TODOR
+ČOMIĆ TODOR
+ČOMOR ILONKA
+ČOMOR MATILDA
+ČONGRADAC DANIJELA
+ČONGRADAC IVANKA
+ČONGRADAC RADOSLAV
+ČONIĆ ANKA
+ČONIĆ MILENKO
+ČONIĆ MILOŠ
+ČONIĆ PETAR
+ČONIĆ TIJANA
+ČONIĆ ZORAN
+ČONKA ĐERĐ
+ČONKA GORDANA
+ČONKA KAROLJ
+ČONKA PETAR
+ČONKAŠ EMIL
+ČONKAŠ GABRIELA
+ČONKAŠ LADISLAV
+ČONKIĆ ŽIVKO
+ČONKIĆ ALEKSA
+ČONKIĆ BILJANA
+ČONKIĆ BOGOLJUB LEKAR
+ČONKIĆ BORISLAV
+ČONKIĆ DRAGAN
+ČONKIĆ JELA
+ČONKIĆ JUDIT
+ČONKIĆ LJILJANA
+ČONKIĆ MARIJA
+ČONKIĆ MILANKA
+ČONKIĆ MILENA
+ČONKIĆ MILOŠ
+ČONKIĆ MILORAD
+ČONKIĆ MILORAD
+ČONKIĆ MILOVAN
+ČONKIĆ MOMČILO DIPL ING
+ČONKIĆ NEBOJŠA
+ČONKIĆ NESTOR
+ČONKIĆ PETAR
+ČONKIĆ RADENKO
+ČONKIĆ RADOSLAV
+ČONKIĆ SAŠA
+ČONKIĆ SLAVKO
+ČONKIĆ SLOBODAN
+ČONKIĆ SNEŽANA
+ČONKIĆ STAMENA
+ČONKIĆ STEVAN
+ČONKIĆ TIHOMIR
+ČONTOŠ JOŽEF
+ČONTOŠ ZORA
+ČOPČIĆ MARTIN
+ČOPIK PETAR
+ČOPIK VASILIJA
+ČOPORDA VUKOSAVA
+ČOR FRANJA
+ČOR JOSIP
+ČORAK JOSIP
+ČORAK STIPE
+ČORALIĆ IVANKA
+ČORBA ĐERĐ
+ČORBA IŠTVAN
+ČORBA JOVAN
+ČORBA JOVAN
+ČORBA MIHALJ
+ČORDA ALEKSANDRA
+ČORDA ALIJA
+ČORDA NADEŽDA
+ČORDA TOMISLAV
+ČORDA VERA
+ČORDAŠ ANDRIJA
+ČORDAŠ ARPAD
+ČORDAŠ DUŠANKA
+ČORDAŠ ERŽEBET
+ČORDAŠ HARGITA
+ČORDAŠ IRENA
+ČORDAŠ LASLO
+ČORDAŠ MIHALJ
+ČORDAŠ SLAVKO
+ČORDAR BRANKO
+ČORDAREV LJILJANA
+ČORDAREV VERA
+ČORDAROV BORISLAVKA
+ČORDAROV IVAN
+ČORDAROV SVETISLAV
+ČORDAROV TEODOR
+ČORDAROV TEODOR
+ČORIĆ MARIJAN
+ČORNENKI BORISLAV
+ČORNENKI DRAGOLJUB
+ČORNENKI JOVAN
+ČORNENKI VLADA
+ČORNI MILUNA
+ČORNIJ MIROSLAV
+ČORTAN ŽIVKO
+ČORTAN BOŠKO
+ČORTAN MILICA
+ČORTAN NADA
+ČORTAN RADIVOJ
+ČORTANOVAČKI SLOBODAN
+ČOVIĆ DARKO
+ČOVIĆ DARKO
+ČOVIĆ DRAGAN
+ČOVIĆ GUSTAV
+ČOVIĆ IVAN
+ČOVIĆ JANKO
+ČOVIĆ JOSIP
+ČOVIĆ KOVILJKA
+ČOVIĆ KRSTO
+ČOVIĆ LADA
+ČOVIĆ MARIJANA
+ČOVIĆ MILAN
+ČOVIĆ MILEVA
+ČOVIĆ MOMIR
+ČOVIĆ OLGA
+ČOVIĆ PETAR
+ČOVIĆ RADOŠ
+ČOVIĆ RADOSLAV
+ČOVIĆ RATKO
+ČOVIĆ SNEŽANA
+ČOVIĆ STANKO
+ČOVIĆ VLADA
+ČOVIĆ VLATKO
+ČOVIĆ ZORICA
+ČOVILO BRANISLAV
+ČOVS JAŠA
+ČOVS PAVLE
+ČOVS PAVLE
+ČOVS VERICA
+ČRETNIK-CVEJANOVIĆ OLGA DIPL ING
+ČRNJEKA ZLATKO
+ČRNOJAČKI DANISLAV
+ČUČ JELENA
+ČUČ MARIJA
+ČUČILOVIĆ BRANKA
+ČUČKOVIĆ ČEDO
+ČUČKOVIĆ ŽELJKO
+ČUČKOVIĆ ĐURO
+ČUČKOVIĆ BOŽIDAR
+ČUČKOVIĆ DRAGAN
+ČUČKOVIĆ RADOJKA
+ČUČKOVIĆ SAVA DIPL ING
+ČUČKOVIĆ SLOBODAN
+ČUČKOVIĆ SPASA
+ČUČKOVIĆ VLADIMIR
+ČUČULIS DIMITRIJE
+ČUBRANOVIĆ RADOMIR
+ČUBRILO ANKA
+ČUBRILO DRAGAN
+ČUBRILO DUŠAN
+ČUBRILO JOVO
+ČUBRILO LAZO
+ČUBRILO MILAN
+ČUBRILO PETAR
+ČUBRILO SOFIJA
+ČUBRILO VLADIMIR
+ČUBRILOVIĆ MILAN
+ČUBROVIĆ STEVAN
+ČUDANOV ČEDA
+ČUDANOV ALEKSANDAR
+ČUDANOV MARIJA
+ČUDANOV MILICA
+ČUDIĆ IVAN
+ČUDIĆ JOVANKA
+ČUDIĆ MILORAD
+ČUDIĆ NIKOLA
+ČUDIĆ PREDRAG
+ČUDIĆ SLOBODAN
+ČUDOMIROVIĆ BOGDAN
+ČUDOMIROVIĆ UROŠ
+ČUGALJ ANKA
+ČUGALJ MIRJANA
+ČUGALJ SVETO
+ČUGELJ ANGELINA
+ČUHA MARIJA
+ČUHA PAVLE
+ČUHA SLAVKO
+ČUHA STEVAN
+ČUHA-VUJKOV RUŽA
+ČUHA ZLATA
+ČUJANOV BORIS
+ČUKA VJEKOSLAV
+ČUKALJIĆ NEVENKA
+ČUKIĆ BORIVOJE
+ČUKIĆ MILKA
+ČUKIĆ MIRSADA
+ČUKIĆ SLOBODAN
+ČUKIĆ ZORAN
+ČUKLJAŠ IVAN
+ČUKLJEK FRANJA
+ČUKLJEK MARGITA
+ČUKLJEVIĆ BUDIMKA
+ČUKOVIĆ SLAVKO
+ČUKURANOVIĆ ŽIKA
+ČUKURANOVIĆ MIJA
+ČULAJEVIĆ JOVAN
+ČULAJEVIĆ STANKO
+ČULIĆ JOVA
+ČULIK HAJNERIK
+ČULINA ŽELJKO
+ČULJAK DRAGA
+ČULJAK IVAN
+ČULJAK KARLO
+ČULJAK MIRKO
+ČULJAK NADA
+ČULJAT DANE
+ČULJAT JAKOV
+ČULJIĆ ŽIVOJIN
+ČULO BOŽA
+ČULO MARKO
+ČULO MATO
+ČUNKO BRANKO
+ČUPAK ALEKSANDAR
+ČUPELJIĆ MILIVOJE
+ČUPIĆ ĐORĐE
+ČUPIĆ BOŽIDAR
+ČUPIĆ BOJAN
+ČUPIĆ BRANISLAV
+ČUPIĆ DRAGAN
+ČUPIĆ DUŠAN
+ČUPIĆ HRISTIFOR
+ČUPIĆ JELENA
+ČUPIĆ KAJKA
+ČUPIĆ KAJKA
+ČUPIĆ KATICA
+ČUPIĆ KATICA
+ČUPIĆ KOSTADINKA
+ČUPIĆ KRISTINA
+ČUPIĆ LJUBOMIR
+ČUPIĆ MILAN
+ČUPIĆ MILICA
+ČUPIĆ MIODRAG
+ČUPIĆ MIODRAG
+ČUPIĆ MIODRAG
+ČUPIĆ MIRJANA
+ČUPIĆ MIROSLAV
+ČUPIĆ OLGA
+ČUPIĆ RADINKA
+ČUPIĆ RADOSLAV
+ČUPIĆ SPOMENKA
+ČUPIĆ STEVAN
+ČUPIĆ STEVAN
+ČUPIĆ STOJAN
+ČUPIĆ UROŠ
+ČUPIĆ ZORAN
+ČURČIĆ DUŠAN
+ČURČIĆ ILIJA
+ČURČIĆ LAZAR
+ČURČIĆ SLOBODANKA
+ČURGANOV EMIL
+ČURIĆ ŽARKO
+ČURIĆ ĐORĐE
+ČURIĆ DRAGOSLAVA
+ČURIĆ DUŠANKA
+ČURIĆ MILENA
+ČURIĆ MILOŠ
+ČURIĆ NATALIJA
+ČURIĆ RADOSLAV DR PROF
+ČURIĆ SLOBODAN
+ČURIĆ VASA
+ČURIĆ VELINKA
+ČURIĆ VIDOSAVA
+ČURIĆ VIDOSAVA
+ČUROVIĆ DANILO
+ČUROVIĆ VUKSAN
+ČURUŠKI GAVRA
+ČURUŠKI MICA
+ČUSTOVIĆ ARIF
+ČUTURA MARKO
+ČUTURIĆ JERONIM
+ČUTURILO ČEDOMIR
+ČUTURILO BOŽA
+ČUTURILO MILIVOJE
+ČUTURILO SLOBODAN DIPL ING
+ČUTURILOV MARIJA
+ČUTURILOV MILOŠ
+ČUTURILOV MILOŠ
+ČUTURILOV SVETOZAR
+ČUTURILOV VELINKA
+ČUTURILOV VUJICA
+ČUVALO LJUBICA
+ČUVARDIĆ ANTUN
+ČVOKIĆ MARKO
+ČVOKIĆ RATKO
+ČVORIĆ DUŠAN
+ČVORIĆ MILOJE
+ČVORKOV LJUBOMIR
+ČVORKOV ZDRAVKO
+ČVORKOV ZLATAN
+ČVORO-ĐUKIĆ DUŠANKA
+ČVORO DOBROSLAV
+ČVOROVIĆ JELENKA
+ČVOROVIĆ LJUBO
+ČVOROVIĆ RATKO
+ČVOROVIĆ VUJICA
+ŠĆEKIĆ BUDIMIR
+ŠĆEKIĆ DRAGOMIR
+ŠĆEKIĆ KOSA
+ŠĆEKIĆ MILANKA
+ŠĆEKIĆ MILIĆ
+ŠĆEKIĆ MILICA
+ŠĆEKIĆ MIOMIR
+ŠĆEKIĆ SLOBODAN
+ŠĆEKIĆ SVETOZAR
+ŠĆEKIĆ VUKO
+ŠĆEPANČEVIĆ ĐORĐE
+ŠĆEPANČEVIĆ NIKOLA
+ŠĆEPANOVIĆ BOGOLJUB
+ŠĆEPANOVIĆ BRANISLAV
+ŠĆEPANOVIĆ DOBROSLAVA
+ŠĆEPANOVIĆ DRAGAN
+ŠĆEPANOVIĆ DRAGAN
+ŠĆEPANOVIĆ DRAGUTIN
+ŠĆEPANOVIĆ DUŠAN
+ŠĆEPANOVIĆ GORAN
+ŠĆEPANOVIĆ GORDANA
+ŠĆEPANOVIĆ LJUBOMIR
+ŠĆEPANOVIĆ MILEVA
+ŠĆEPANOVIĆ MILOVAN
+ŠĆEPANOVIĆ MIODRAG
+ŠĆEPANOVIĆ RAŠKO
+ŠĆEPANOVIĆ RADOVAN
+ŠĆEPANOVIĆ RANKO DIPL ING
+ŠĆEPANOVIĆ SINIŠA
+ŠĆEPANOVIĆ ZORAN
+ŠĆEPANOVIĆ ZORA
+ŠĆEPOVIĆ PETAR
+ŠĆERBAĆEV GLIGORIJE
+ŠĆEVČIK PAVLE
+ŠĆIBAN MARINA
+ŠĆOPIĆ MIODRAG
+ŠĆOPIĆ STANIMIR
+ŠĆOPULOVIĆ PETAR
+ŠĆURIC JOSIP
+ŠAŠIĆ ŽIVKO
+ŠAŠIĆ ĐORĐE
+ŠAŠIĆ DUŠAN
+ŠAŠIĆ MILAN
+ŠAŠIĆ MILAN
+ŠAŠIĆ MILOŠ
+ŠAŠIĆ MIRKO
+ŠAŠIĆ NEVENKA
+ŠAŠIĆ PETAR
+ŠAŠIĆ SAVO
+ŠAŠIĆ STEVAN
+ŠAŠIĆ ZORAN
+ŠAŠIN DANICA
+ŠAŠIN RADOMIR
+ŠAŠINAČKI MARIJA
+ŠAŠINAČKI SONJA
+ŠAŠINAČKI VASILIJE
+ŠAŠLJIN LAZAR
+ŠAŠOVIĆ TRIFKO
+ŠABANI NAZIM
+ŠABANOVIĆ ABDURAHMAN
+ŠABANOVIĆ OBRAD
+ŠABEC DRAGICA
+ŠABIĆ ĐURO
+ŠABIĆ HUSEIN
+ŠABIĆ PAVLE
+ŠABLI MARTON
+ŠABLI MIHAJLO
+ŠABOVIĆ MEHMEDALIJA
+ŠADE JELENA
+ŠAFARIK LJILJANA
+ŠAFRANJ ANDRIJA
+ŠAFRANJ DEŽE
+ŠAFRANJ FRANJA
+ŠAFRANJ LASLO
+ŠAFRANJ LASLO
+ŠAFRANJ PIROŠKA
+ŠAFRANJ STEVAN
+ŠAFRANJ TEODORA
+ŠAGUNOVIĆ DUŠAN
+ŠAGUNOVIĆ MILIVOJ
+ŠAIN ANDRIJA
+ŠAIN MILEVA
+ŠAIN ZAGORKA
+ŠAINOVIĆ DUŠAN
+ŠAINOVIĆ MARINA
+ŠAJATOVIĆ JELICA
+ŠAJATOVIĆ ZDRAVKO
+ŠAJBER DANICA
+ŠAJBER MILENKO
+ŠAJDIK FRANCIŠKA
+ŠAJFAR PAVLE
+ŠAJIN MILORAD
+ŠAJINOVIĆ DRAGOSLAV
+ŠAJINOVIĆ DUŠAN
+ŠAJINOVIĆ GORDANA
+ŠAJINOVIĆ MARINKO
+ŠAJINOVIĆ SIDA
+ŠAJN DUŠAN
+ŠAJNBERGER JOVAN
+ŠAJNBERGER LILI
+ŠAJNOV JOVAN
+ŠAJNOV KATICA
+ŠAJNOV PETAR
+ŠAJNOVIĆ RADINKA
+ŠAJTI ETELKA
+ŠAJTI GIZELA
+ŠAJTI KATICA
+ŠAJTI MARIJA
+ŠAJTOŠ ĐORĐE
+ŠAJTOŠ ĐURA
+ŠAJTOŠ LJUBIŠA
+ŠAJTOŠ NIKOLA
+ŠAJTOŠ SIMA
+ŠAJTOŠ SIMA
+ŠAKIĆ ŽELJKO
+ŠAKIĆ ĐORĐE
+ŠAKIĆ ILIJA
+ŠAKIĆ ILIJA
+ŠAKIĆ ILIJA
+ŠAKIĆ JANJA
+ŠAKIĆ KATA
+ŠAKIĆ MANE
+ŠAKIĆ MILUTIN
+ŠAKIĆ RADE
+ŠAKIĆ ZORKA
+ŠAKOTA DUŠAN
+ŠAKOTA KOJO
+ŠAKOTA MILAN
+ŠAKOTA MILORAD
+ŠAKOTA SIMEON
+ŠAKOTIĆ LJUBOMIR
+ŠAKOTIĆ MIRJANA
+ŠAKU MEHMED
+ŠALABALIJA DRAGOMIR
+ŠALABALIJA VASO
+ŠALAJIĆ STEVAN
+ŠALAMON ŠANDOR
+ŠALAMON ANDRIJA
+ŠALAMON JOSIP
+ŠALAMON JOSIP
+ŠALAMON MIŠA
+ŠALAMON MIHAJLO
+ŠALAMON MIHAJLO
+ŠALANKI JANOŠ
+ŠALANKI JANOŠ
+ŠALBOT ZUZA
+ŠALER VERA
+ŠALGO JELISAVETA
+ŠALIPUROVIĆ MILOVAN
+ŠALIPUROVIĆ SLAVIŠA
+ŠAMATIĆ NEMANJA
+ŠAMEC MILICA
+ŠANDOL ATILA
+ŠANDOL ATILA
+ŠANDOL IŠTVAN
+ŠANDOL KATICA
+ŠANDOL MATIJA
+ŠANDOL MIHAJLO
+ŠANDOR ILONA
+ŠANDOR JOSIP
+ŠANDOR LADISLAV
+ŠANDOR MARIJA
+ŠANDOR TIBOR
+ŠANDORI ŠARIKA
+ŠANJIĆ MILADIN
+ŠANOVIĆ DUŠAN
+ŠANTA ŠANDOR
+ŠANTA AMALIJA
+ŠANTA BELA
+ŠANTA DUŠANKA
+ŠANTA FERENC
+ŠANTA IŠTVAN
+ŠANTA ILONKA
+ŠANTA IMRE
+ŠANTA JOSIP
+ŠANTA LASLO
+ŠANTA MIROSLAV
+ŠANTA PAL
+ŠANTA SIMA
+ŠANTA SLAVKO
+ŠANTA SOFIJA
+ŠANTA STEVAN
+ŠANTA VINKO
+ŠANTA VLADIMIR
+ŠANTAK JOSIP
+ŠANTAK KARLO
+ŠANTALAB SOFIJA
+ŠANTEK ŽELJKO
+ŠANTEK ZDENKA
+ŠAPI PIROŠKA DIPL ING
+ŠAPIĆ NIKOLA
+ŠAPINA MIROSLAV
+ŠAPONJA JOVAN
+ŠAPONJA MARKO
+ŠAPONJAC ŽARKO
+ŠAPONJAC ŽARKO
+ŠAPONJAC ALEKSANDAR
+ŠAPONJAC JELKA PROFESOR
+ŠAPONJAC RADA
+ŠAPONJAC STEVAN
+ŠAPONJSKI RADIVOJ
+ŠAPURIĆ SVETOZAR
+ŠARČANSKI JULKA
+ŠARČANSKI MILICA
+ŠARČANSKI MIROSLAV
+ŠARČEV ANTONIJA
+ŠARČEV JELENA
+ŠARČEV MIROSLAVA
+ŠARČEV NIKOLA
+ŠARČEV VLADIMIR
+ŠARČEVIĆ ŽARKO
+ŠARČEVIĆ ŽELIMIR
+ŠARČEVIĆ ANICA
+ŠARČEVIĆ BRATIMIR
+ŠARČEVIĆ DUŠAN
+ŠARČEVIĆ GROZDANA
+ŠARČEVIĆ ILKA
+ŠARČEVIĆ KATICA
+ŠARČEVIĆ MARGITA DR
+ŠARČEVIĆ MILENA
+ŠARČEVIĆ NEBOJŠA
+ŠARČEVIĆ PETAR
+ŠARČEVIĆ PREDRAG
+ŠARČEVIĆ RAJKO
+ŠARČEVIĆ VIDOJE
+ŠARČEVIĆ VOJISLAV
+ŠARŠANSKI MARINKO
+ŠARŠANSKI MILAN
+ŠARA IMRE
+ŠARA IMRE
+ŠARAC ĐORĐE
+ŠARAC BILJANA
+ŠARAC BOŠKO
+ŠARAC DUŠAN
+ŠARAC DUŠAN
+ŠARAC MILAN
+ŠARAC MILE
+ŠARAC MILICA
+ŠARAC MIODRAG
+ŠARAC RADOJE
+ŠARAC RADOMIR
+ŠARAC RADOVAN
+ŠARAC RUŽICA
+ŠARAC STEVA
+ŠARAC SVETOZAR
+ŠARANDI ŠANDOR
+ŠARANOVIĆ ANITA
+ŠARANOVIĆ DRAGIŠA
+ŠARANOVIĆ MILADIN DR LEKAR
+ŠARANOVIĆ MILOŠ
+ŠARANOVIĆ MIODRAG
+ŠARANOVIĆ ZORAN
+ŠARENAC BOŽIDAR
+ŠARENAC MARKO
+ŠARENAC ROZINA
+ŠARENAC VIDAK
+ŠARENAC VOJISLAV
+ŠARGAČ BRANKO
+ŠARGIĆ MILORAD
+ŠARGIĆ VLADIMIR
+ŠARGIĆ ZLATICA
+ŠARGIN ŽARKO
+ŠARGIN MARIJA
+ŠARI MARIJA
+ŠARI STEVAN
+ŠARIĆ JOSIP
+ŠARIĆ KATARINA
+ŠARIĆ KOSTA
+ŠARIĆ LJUBICA
+ŠARIĆ MARIJA
+ŠARIĆ MATO
+ŠARIĆ NENAD
+ŠARIĆ SLOBODAN
+ŠARIĆ SOFIJA
+ŠARIĆ STEVAN
+ŠARIĆ TOMISLAV MR
+ŠARIĆ ZVEZDANA
+ŠARIK ANA
+ŠARIK ANDRIJA
+ŠARIK JOVAN
+ŠARIK KATICA
+ŠARIK LJUBICA
+ŠARIK MIROSLAV
+ŠARIK STEVAN
+ŠARIK-VIDIĆ NADA
+ŠARIK VLADIMIR
+ŠARKADI VERONIKA
+ŠARKANJ ANTON
+ŠARKANJ FERENC
+ŠARKANJ FRANJA
+ŠARKANJ JANOŠ
+ŠARKANJAC FERENC
+ŠARKEZI-PETRIĆ MARGITA
+ŠARKIĆ SRĐAN
+ŠARKOVIĆ DUŠAN
+ŠARKOVIĆ MIODRAG DR
+ŠARKOVIĆ ZORAN
+ŠARNJAI ANKICA
+ŠARNJAI MIKLOŠ
+ŠARNJAI PAL
+ŠARO JOVAN
+ŠARO NADA
+ŠAROŠI VALERIJA
+ŠAROŠKOVIĆ VUKICA
+ŠAROI-SABO VERA
+ŠAROVIĆ ĐURO
+ŠAROVIĆ MIRKO
+ŠAROVIĆ PETAR
+ŠARU DUŠICA
+ŠARVARI ŠANDOR
+ŠARVARI KAROLJ
+ŠARVARI MARTA
+ŠARVARI ROZALIJA
+ŠARVARI VALERIJA
+ŠASIVAR AHMED
+ŠATARA MILAN
+ŠATORA STOJAN
+ŠATRIĆ ANA
+ŠATRIĆ BRANISLAV
+ŠAULA GORAN
+ŠAULA RADOVAN
+ŠAULIĆ DIMITRIJE
+ŠAVELIN ŠANDOR
+ŠAVELIN JOSIP
+ŠAVELIN JOVAN
+ŠAVELIN JULIJA
+ŠAVERDIJA NIKOLA
+ŠAVIJA DUŠAN
+ŠAVIJA MILE
+ŠAVIJA MILORAD
+ŠAVIJA PETAR
+ŠAVIJA RADE
+ŠAVRLJUGA MILAN
+ŠEČIĆ ALIJA
+ŠEČIĆ JULKA
+ŠEŠA SLAVKO
+ŠEŠELJA BRANIMIR
+ŠEŠELJA MARIJAN
+ŠEŠERINAC ĐORĐE
+ŠEŠEVIĆ ĐORĐE
+ŠEŠEVIĆ DRAGICA
+ŠEŠEVIĆ LEONA
+ŠEŠEVIĆ LJILJANA
+ŠEŠEVIĆ MARA
+ŠEŠEVIĆ MILIVOJ
+ŠEŠEVIĆ STEVAN
+ŠEŠIĆ ŽIVOTA DIPL ING
+ŠEŠIĆ AURELIJA
+ŠEŠIĆ DRAGOLJUB
+ŠEŠIĆ DRAGOLJUB
+ŠEŠIĆ VERA
+ŠEŠIĆ VIDA
+ŠEŠKAR NADA
+ŠEŠLIJA ČEDA
+ŠEŠLIJA BRANKO
+ŠEŠLIJA DRAGAN
+ŠEŠLIJA DUŠAN
+ŠEŠUM BRANKO
+ŠEŠUM DRAGOLJUB
+ŠEŠUM ILIJA
+ŠEŠUM MIHAJLO
+ŠEŠUM MILAN
+ŠEŠUM MILAN
+ŠEŠUM MILENKO
+ŠEŠUM SAVA
+ŠEŠUM SLAVICA
+ŠEŠUM TOMA
+ŠEĆEROV ANĐELIJA
+ŠEĆEROV BILJANA
+ŠEĆEROV BRANISLAV
+ŠEĆEROV DRENKA
+ŠEĆEROV DUŠAN
+ŠEĆEROV EMIL
+ŠEĆEROV IDA
+ŠEĆEROV IVAN
+ŠEĆEROV JOVAN
+ŠEĆEROV KAJA
+ŠEĆEROV MATA
+ŠEĆEROV MILAN
+ŠEĆEROV PAVLE
+ŠEĆEROV PETAR DIPL ING
+ŠEĆEROV PETAR
+ŠEĆEROV PRODAN
+ŠEĆEROV RADOSLAV
+ŠEĆEROV SAVA
+ŠEĆEROV SINIŠA
+ŠEĆEROV SVETLANA
+ŠEĆEROV SVETOZAR
+ŠEĆEROV SVETOZAR
+ŠEĆEROV SVETOZAR
+ŠEĆEROV ZLATOJE
+ŠEĆEROV ZLATOJE
+ŠEBEŠĆEN IMRE
+ŠEBEŠĆEN JOŽEF
+ŠEBEDINI NEVZAD
+ŠEBEK ĐULA
+ŠEBEK ANUŠKA
+ŠEBEK IVAN
+ŠEBEK JOSIP
+ŠEBEKOVIĆ PAVLE
+ŠEBEZ DRAGAN
+ŠEBEZ DUŠAN
+ŠEBEZ LAZO
+ŠEBEZ RADOJKA
+ŠEBEZ SIMO
+ŠEBEZ STEVAN
+ŠEBEZ STEVO
+ŠEBEZ STEVO
+ŠEBI JELICA
+ŠEFČIĆ EMIL
+ŠEFČIĆ MIRKO
+ŠEFER ĐORĐE DIPL ING
+ŠEFER ALEKSANDRA
+ŠEFER JULIJE DR
+ŠEFER KATARINA
+ŠEFER KLARA
+ŠEFER MIODRAG
+ŠEFER PETAR
+ŠEFER RADOJE
+ŠEFER SLAVKO
+ŠEGEC EDUARD
+ŠEGINA NIKOLA
+ŠEGO NIKOLA
+ŠEGOVIĆ DRAGAN
+ŠEGOVIĆ MILOŠ
+ŠEGRT ČEDOMIR
+ŠEGRT ČEDOMIR
+ŠEGRT JOVO
+ŠEGRT JOVO
+ŠEGRT MATO
+ŠEGRT MLADEN
+ŠEGRT NADA
+ŠEGRT PETAR
+ŠEGRT VOJISLAV
+ŠEGULJEV DUŠAN
+ŠEGULJEV DUŠAN
+ŠEGULJEV DUŠAN
+ŠEGULJEV GRUJA
+ŠEGULJEV JOVAN
+ŠEGULJEV MARKO
+ŠEGULJEV MIKA
+ŠEGULJEV MILENKO
+ŠEGULJEV PAJA
+ŠEGULJEV PETAR
+ŠEGULJEV RADOSLAV
+ŠEGULJEV RUŽICA
+ŠEGULJEV SLAVKO
+ŠEGULJEV SNEŽANA
+ŠEGULJEV ZAGORKA
+ŠEGULJEV ZORICA
+ŠEHIĆ LJUBICA
+ŠEHIĆ MIRSA
+ŠEHIĆ SLAVICA
+ŠEHOVIĆ RAMIZ
+ŠEJMEŠI STEVAN
+ŠEJPEŠ ŠARLOTA
+ŠEJPEŠ FEDOR
+ŠEJPEŠ FEDOR
+ŠEJPEŠ GALINA
+ŠEJPEŠ ILONA
+ŠEK JULIJAN
+ŠEKARIĆ MILOSAV
+ŠEKARIĆ NADA
+ŠEKEROVIĆ DRAGAN
+ŠEKULARAC ALEKSANDRA
+ŠEKULARAC BRANISLAV DIPL OEC
+ŠEKULARAC DUŠAN
+ŠEKULARAC PREDRAG
+ŠEKULARAC SAVKA
+ŠEKULARAC SLOBODAN
+ŠEL MARGITA
+ŠELB LASLO
+ŠELEST SLOBODANKA
+ŠELJEM JULIJANA
+ŠELJEM KAROLJ DIPL ING
+ŠELJEM LJILJANA
+ŠELJEM STEVAN
+ŠELJEM ZOLTAN
+ŠELKEN ILONKA
+ŠELMIĆ VUKOMAN DIPL ING
+ŠENČEVIĆ MILOMIR
+ŠENBORN ADALBERT DR PROF
+ŠENDULA ŠANDOR
+ŠENDULA ANTAL
+ŠENDULA GABOR
+ŠENHAUZER TOMISLAV
+ŠENK ALBINA
+ŠENK IVAN DIPL ING
+ŠENK VOJIN
+ŠENTALER EMIL
+ŠEP LENKA
+ŠEPŠEI KRISTINA
+ŠEPA SVETOZAR
+ŠEPAREVIĆ DARKO
+ŠEPAROVIĆ DARKO
+ŠEPAROVIĆ LJILJANA
+ŠEPAROVIĆ MIROSLAV
+ŠEPAROVIĆ ZORA
+ŠEPEC VLADIMIR
+ŠEPECANOVIĆ MILOŠ
+ŠEPELJ LENKA
+ŠEPERAC RANKA
+ŠEPIĆ ZADA
+ŠEPINSKI ĐURA
+ŠEPINSKI ĐURA
+ŠEPINSKI JOAKIM
+ŠEPINSKI SLAVICA
+ŠERBAN SLOBODANKA
+ŠERBEDŽIJA DRAGOLJUB
+ŠERBEDŽIJA MIRKO
+ŠERBEDŽIJA MIRKO
+ŠERBIĆ JELKA
+ŠERBIĆ ZAGORKA
+ŠERBIĆ ZAGORKA
+ŠERBULA BRANKO
+ŠERBULA MILAN
+ŠEREŠ ŠANDOR
+ŠEREŠ ŽUŽANA
+ŠEREŠ ANA
+ŠEREŠ ANTUN
+ŠEREŠ ENDRE
+ŠEREŠ ESTER
+ŠEREŠ FRANCIŠKA
+ŠEREŠ GIZELA
+ŠEREŠ IMRE
+ŠEREŠ JANOŠ
+ŠEREŠ KAROLJ MR
+ŠEREŠ LASLO
+ŠEREŠ STEVAN
+ŠEREGI ZOLTAN
+ŠEREMETKOVSKI ALEKSA
+ŠEREMETKOVSKI BONA
+ŠERER LENKA
+ŠERFEZI ĐURA
+ŠERIĆ MILKA
+ŠERIF NEŠAT
+ŠERIFI RABIJA
+ŠERIFI SAFET
+ŠERKOV LJILJANA
+ŠERKOV RADOSLAV
+ŠEROVIĆ JOVICA
+ŠESEK STANISLAV
+ŠESTAN BORIS
+ŠESTANOV BRANKO
+ŠESTANOV MILENA
+ŠESTIĆ BOGDAN
+ŠETALO ŠANDOR
+ŠETALO FRANJA
+ŠETALO IMRE
+ŠETALO IMRE
+ŠETALO KARLO
+ŠETALO KAROLJ
+ŠETKA KATA
+ŠETKA TOMISLAV
+ŠETRAJČIĆ ILDIKO
+ŠEVČIĆ ĐORĐE
+ŠEVAR EMILIJA
+ŠEVAR JOSIP VETERINAR
+ŠEVAR VLADISLAV
+ŠEVARLIĆ KOSTA
+ŠEVEROV RADOSLAV
+ŠEVIĆ ĐORĐE MR
+ŠEVIĆ ĐORĐE
+ŠEVIĆ ĐORĐE
+ŠEVIĆ ALEKSANDAR
+ŠEVIĆ BORISLAV
+ŠEVIĆ DRAGAN
+ŠEVIĆ DRAGOLJUB
+ŠEVIĆ DRAGOLJUB
+ŠEVIĆ JOVO
+ŠEVIĆ LAZAR
+ŠEVIĆ MILAN
+ŠEVIĆ MILOŠ
+ŠEVIĆ MILORAD
+ŠEVIĆ MIROSLAVA
+ŠEVIĆ NADA
+ŠEVIĆ NADA
+ŠEVIĆ PETAR
+ŠEVIĆ PETAR
+ŠEVIĆ PREDRAG
+ŠEVIĆ RADOVAN
+ŠEVIĆ SAVKA
+ŠEVIĆ SLOBODAN
+ŠEVIĆ SRĐAN
+ŠEVIĆ TRIVO
+ŠEVO ČEDOMIR
+ŠEVO ALEKSANDAR
+ŠEVO BOŠKO
+ŠEVO BOŠKO
+ŠEVO BRANKO
+ŠEVO DUŠAN
+ŠEVO JOVO
+ŠEVO MILAN
+ŠEVO MILAN
+ŠEVO MILAN
+ŠEVO MLADEN
+ŠEVO SLAVICA
+ŠEVO VLADO
+ŠIŠA JOSIP
+ŠIŠA JOSIP
+ŠIŠAKOVIĆ MILENA
+ŠIŠAKOVIĆ MIROSLAV
+ŠIŠARICA LJUPKO
+ŠIŠARICA ZDRAVKO
+ŠIŠEVIĆ ANĐELKA
+ŠIŠIĆ MILAN
+ŠIŠIĆ MLADEN
+ŠIŠIĆ PETKA
+ŠIŠIĆ STJEPAN
+ŠIŠKA MARGITA
+ŠIŠKOV ANTE
+ŠIŠKOVIĆ DRAGOLJUB
+ŠIŠKOVIĆ DRAGOLJUB
+ŠIŠLJAGIĆ ČEDO
+ŠIŠLJAGIĆ DUŠAN
+ŠIŠOVIĆ DRAGOLJUB
+ŠIŠOVIĆ MILAŠIN
+ŠIĐANIN BRANISLAV
+ŠIĐANIN DUŠAN DIPL ING
+ŠIĐANIN MILICA
+ŠIĐANIN MILOJE DIPL ING
+ŠIĐANSKI BUDIMIR
+ŠIĐANSKI MIROSLAV
+ŠIBALIĆ ILIJA
+ŠIBALIĆ LJUBOMIR
+ŠIBUL ZORAN
+ŠIBUL ZORICA
+ŠIBULOV ĐURA
+ŠIC MARIJA
+ŠIC TEREZA
+ŠIFLIŠ JAGODA
+ŠIFLIŠ LAJOŠ
+ŠIFLIŠ SLAVKO
+ŠIGUD ĐORĐE
+ŠIHA IŠTVAN
+ŠIJAČIĆ ALEKSANDAR
+ŠIJAČIĆ ALEKSANDAR
+ŠIJAČIĆ BORISLAV
+ŠIJAČIĆ BOSILJKA
+ŠIJAČIĆ BRANISLAV
+ŠIJAČIĆ DANICA
+ŠIJAČIĆ DANICA
+ŠIJAČIĆ DANILO
+ŠIJAČIĆ DANILO
+ŠIJAČIĆ DUŠAN
+ŠIJAČIĆ DUŠICA
+ŠIJAČIĆ DUŠICA
+ŠIJAČIĆ JELICA
+ŠIJAČIĆ LESA
+ŠIJAČIĆ MILIVOJE
+ŠIJAČIĆ MILORAD
+ŠIJAČIĆ MIROSLAV
+ŠIJAČIĆ RADOSLAV
+ŠIJAČIĆ STANKA
+ŠIJAČIĆ STEVAN
+ŠIJAČIĆ ZORICA
+ŠIJAČKI ŽIVA
+ŠIJAČKI ŽIVKO
+ŠIJAČKI ĐURĐINKA
+ŠIJAČKI BOŽIDAR
+ŠIJAČKI DRAGANA
+ŠIJAČKI GORDANA
+ŠIJAČKI ISA
+ŠIJAČKI JOVAN
+ŠIJAČKI KOSTA
+ŠIJAČKI LAZAR
+ŠIJAČKI MILAN
+ŠIJAČKI MILENKO
+ŠIJAČKI MILOŠ
+ŠIJAČKI MIRJANA
+ŠIJAČKI NESTOR DR
+ŠIJAČKI PETAR
+ŠIJAČKI PREDRAG
+ŠIJAČKI RADOSLAVA
+ŠIJAČKI SIMA
+ŠIJAČKI SLAVKO
+ŠIJAČKI SLOBODAN
+ŠIJAČKI STEVAN
+ŠIJAČKI TOMISLAV
+ŠIJAČKI VITOMIR
+ŠIJAČKI VUJICA
+ŠIJAK ĐORĐE
+ŠIJAK JELICA
+ŠIJAK MILENKO
+ŠIJAK MILOŠ
+ŠIJAK PAVLE
+ŠIJAK PETAR
+ŠIJAK TOMA
+ŠIJAKOV STANISLAVA
+ŠIJAKOV VELJKO
+ŠIJAKOVIĆ DRAGICA
+ŠIJAKOVIĆ MILORAD
+ŠIJAKOVIĆ STEVA
+ŠIJAKOVIĆ ZORAN
+ŠIJAN ALEKSANDRA
+ŠIJAN BOJA
+ŠIJAN BRANKO
+ŠIJAN BRANKO
+ŠIJAN BRANKO
+ŠIJAN DANE
+ŠIJAN ILIJA
+ŠIJAN MILEVA
+ŠIJAN MILOŠ
+ŠIJAN MIRKO
+ŠIJAN NEVENKA
+ŠIJAN NIKOLA
+ŠIJAN RADE
+ŠIJAN SLOBODAN
+ŠIJUK DRAGAN
+ŠIK TIBOR
+ŠIKET IŠTVAN
+ŠIKET IŠTVAN
+ŠIKET IMRE
+ŠIKET JOŽEF
+ŠIKET LASLO
+ŠIKET LASLO
+ŠIKET LASLO
+ŠIKET MAGDA
+ŠIKET STEVAN
+ŠIKIĆ BOGDAN
+ŠIKIĆ RADOSLAV
+ŠIKMAN ZVONKO
+ŠIKOPARIJA ĐORĐE
+ŠIKOPARIJA BORISLAV
+ŠIKOPARIJA DUŠAN
+ŠIKOPARIJA JELENA
+ŠIKOPARIJA MILAN
+ŠIKOPARIJA NEVENA
+ŠIKOPARIJA TIHOMIR
+ŠIKOPARIJA TIHOMIR
+ŠIKOPARIJA VLADIMIR
+ŠILE ŠANDOR
+ŠILE LADISLAV
+ŠILE ZOLTAN
+ŠILER MILORAD
+ŠILER MILORAD
+ŠILI IŠTVAN
+ŠILI KARLO
+ŠILI MIHAJLO
+ŠILI VALERIJA
+ŠILIĆ ĐORĐE
+ŠILIĆ ĐORĐE
+ŠILIĆ ĐORĐE
+ŠILIĆ ANA
+ŠILIĆ BOGDAN
+ŠILIĆ DANICA
+ŠILIĆ DRAGOMIR
+ŠILIĆ DUŠICA
+ŠILIĆ JOVAN
+ŠILIĆ LJUBICA
+ŠILIĆ MILORAD DR
+ŠILIĆ MILOSAVA
+ŠILIĆ MIRJANA
+ŠILIĆ MIRKO
+ŠILIĆ MIRKO
+ŠILIĆ NADA
+ŠILIĆ NIKOLA
+ŠILIĆ OLGICA
+ŠILIĆ OLGICA
+ŠILIĆ PETAR
+ŠILIĆ PETAR
+ŠILIĆ RACKO
+ŠILIĆ SAVA
+ŠILIĆ SPASENKA
+ŠILIĆ STOJAN
+ŠILIĆ TOŠA
+ŠILIĆ TODOR
+ŠILIĆ VASA
+ŠILIĆ VERA
+ŠILIĆ VITOMIR
+ŠILJEG JOZO
+ŠILJEGOVIĆ BOŠKO
+ŠILJEGOVIĆ BOŠKO
+ŠILJEGOVIĆ DRAGOLJUB
+ŠILJEGOVIĆ DUŠAN
+ŠILJEGOVIĆ JOVANKA
+ŠILJEGOVIĆ MILAN
+ŠILJEGOVIĆ NADA
+ŠILJIĆ ĆAMIL
+ŠILJKUT MILAN
+ŠILJKUT MILAN
+ŠILJKUT MIRKO
+ŠIMČIĆ OLGICA
+ŠIMŠIĆ DUŠAN
+ŠIMŠIĆ ILIJA
+ŠIMŠIĆ SAVO
+ŠIMA JOAKIM
+ŠIMA MARGITA
+ŠIMA VERONIKA
+ŠIMAK JAN
+ŠIMALA VIKTOR
+ŠIMAN ALEKSEJ
+ŠIMANDI GABRIJELA
+ŠIMANDI STEVAN
+ŠIMEK VLATKO
+ŠIMIČIĆ PETAR
+ŠIMIČIĆ SVETISLAV
+ŠIMIĆ ANTO
+ŠIMIĆ BOŽANA
+ŠIMIĆ FRANJO
+ŠIMIĆ GIZELA
+ŠIMIĆ HRVOJE
+ŠIMIĆ JULA DIPL ING
+ŠIMIĆ MILAN
+ŠIMIĆ MILAN
+ŠIMIĆ MIROSLAV
+ŠIMIĆ MLADEN
+ŠIMIĆ NINOSLAV
+ŠIMIĆ SLAVKO
+ŠIMIĆ SLAVKO
+ŠIMIĆ STEVAN
+ŠIMIG TIBOR
+ŠIMOKOVIĆ KATARINA
+ŠIMON ŠANDOR
+ŠIMON ĐERĐ
+ŠIMON ARPAD
+ŠIMON ERŽEBET
+ŠIMON MARICA
+ŠIMON MIHALJ
+ŠIMON VILMOŠ DR
+ŠIMONIK VLADA
+ŠIMONJI ŠANDOR
+ŠIMONJI BARBARA
+ŠIMONJI JANOŠ
+ŠIMONJI SOFIJA
+ŠIMONJI ZOLTAN
+ŠIMONJI ZVONKO
+ŠIMONJIK MATIJA
+ŠIMOVIĆ JOŽEF
+ŠIMOVIĆ MIRO
+ŠIMPRAGA DUŠAN
+ŠIMPRAGA JADRANKA
+ŠIMUDVARAC PAVAO
+ŠIMULIJA DRAŽEN
+ŠIMULIJA JOVO
+ŠIMUNĐA LJUBOMIR
+ŠIMUNEC MARIJA
+ŠIMUNIĆ ANKA
+ŠIMUNIĆ IVAN
+ŠIMUNIĆ KARLO
+ŠIMUNIĆ STEVAN
+ŠIMUNOVAČKI KATICA
+ŠIMUNOVAČKI NIKOLA
+ŠIMUNOVAČKI NIKOLA
+ŠIMUNOVAČKI SLAVKO
+ŠIMUNOVIĆ GORDANA
+ŠIMUNOVIĆ GORDANA
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ NENAD
+ŠIMUNOVIĆ NIKOLA DIPL ING
+ŠIMUNOVIĆ STANISLAV
+ŠIMUNOVIĆ STANKO
+ŠIMUNOVIĆ SVETLANA
+ŠIMUNOVIĆ TOMA
+ŠINAGL KAROLJ
+ŠINAGL KAROLJ
+ŠINAGL OTO
+ŠINAGL STEVAN
+ŠINIK DRAGAN
+ŠINIKOV ĐORĐE
+ŠINIKOV MILAN
+ŠINKA MARGITA
+ŠINKA ZLATKO
+ŠINKO GIZELA
+ŠINKO IVANKA
+ŠINKO JANOŠ
+ŠINKO STEVAN
+ŠINKO VLADISLAV
+ŠINKOVIĆ MARIJA
+ŠIPČIĆ LJUBOMIR
+ŠIPČIĆ MARIJA
+ŠIPČIĆ MIDO
+ŠIPČIĆ MIJODRAG
+ŠIPČIĆ NINOSLAV
+ŠIPEK JOSIP NOVINAR
+ŠIPETIĆ ANĐA
+ŠIPETIĆ MOMČILO
+ŠIPIĆ ALEKSANDRA
+ŠIPIN JOVANKA
+ŠIPKA BOŽA
+ŠIPKA BOŽO
+ŠIPKA BRANKO
+ŠIPKA DRAGAN
+ŠIPKA DRAGO
+ŠIPKA GRUJO
+ŠIPKA MARKO
+ŠIPKA MIRKO
+ŠIPKA MIROSLAV
+ŠIPKA MIRO
+ŠIPKA NEĐO
+ŠIPKA ZORAN
+ŠIPKA ZORAN
+ŠIPOŠ ŠANDOR
+ŠIPOŠ ĐORĐE
+ŠIPOŠ ĐORĐE
+ŠIPOŠ ĐURA
+ŠIPOŠ ĐURO
+ŠIPOŠ EDIT
+ŠIPOŠ ERŽEBET
+ŠIPOŠ IGNJAC
+ŠIPOŠ JANOŠ
+ŠIPOŠ JOVANKA
+ŠIPOŠ JOVAN
+ŠIPOŠ JULIJANA
+ŠIPOŠ MIRJANA
+ŠIPOŠ ROZALIJA
+ŠIPOŠ VLADIMIR
+ŠIPOŠEVIĆ RADOJKA
+ŠIPOSKI KRSTE
+ŠIPOVAC CVIJETA
+ŠIPOVAC DANILO
+ŠIPOVAC JANJA
+ŠIPOVAC NEDELJKO
+ŠIPOVAC RADICA
+ŠIPOVAC VASILIJA
+ŠIPRAGA UROŠ
+ŠIPUŠIĆ HELENA
+ŠIRADOVIĆ BRANISLAV
+ŠIRIJOVSKI GOCE
+ŠIRKA JAN
+ŠIRKA SAMUEL
+ŠIROČKA ANTUN
+ŠIROKI ADAM
+ŠIROLA IVAN
+ŠIRONIĆ LJUBO
+ŠISTOV DRAGO
+ŠITE KAROLJ
+ŠITE MARIJA
+ŠITE TIBOR
+ŠITER KARLO
+ŠITER RUŽICA
+ŠITER SLOBODAN
+ŠIVEGI IMRE
+ŠKALJAC STANKO
+ŠKALJAC ZORAN
+ŠKARIČIĆ MIROSLAV
+ŠKARICA DOLORES
+ŠKARICA STJEPAN
+ŠKARIN TODOR
+ŠKATARIĆ ZORAN
+ŠKAVIĆ CVIJO
+ŠKAVIĆ JOVO
+ŠKAVIĆ MILAN
+ŠKAVIĆ NIKOLA
+ŠKEKIĆ MIOMIR
+ŠKILJAJICA VLADIMIR
+ŠKILJEVIĆ MILIDRAG
+ŠKOBALJ NADA
+ŠKOBALJ VOJISLAV
+ŠKODAK PAVLE
+ŠKOLOPIJA LAZAR
+ŠKONDRIĆ DRAGOMIR
+ŠKORIĆ ČEDOMIR
+ŠKORIĆ ŠTRACIMIR
+ŠKORIĆ ĐUJA
+ŠKORIĆ ĐURO
+ŠKORIĆ ANKA
+ŠKORIĆ BOSILJKA
+ŠKORIĆ BRANISLAV
+ŠKORIĆ BRANKO
+ŠKORIĆ DRAGAN DR
+ŠKORIĆ DRAGAN
+ŠKORIĆ DRAGAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠKO
+ŠKORIĆ GRUMIKOV
+ŠKORIĆ JOVAN
+ŠKORIĆ JOVAN
+ŠKORIĆ KSENIJA
+ŠKORIĆ LAZAR
+ŠKORIĆ LJILJANA
+ŠKORIĆ MARA
+ŠKORIĆ MARIJA
+ŠKORIĆ MARIJA
+ŠKORIĆ MIĆO
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILENKO
+ŠKORIĆ MILIVOJ
+ŠKORIĆ MILKA
+ŠKORIĆ MILOŠ
+ŠKORIĆ MIRJANA
+ŠKORIĆ MIRKO
+ŠKORIĆ MIRKO
+ŠKORIĆ MIRKO
+ŠKORIĆ NIKOLA
+ŠKORIĆ NIKOLA
+ŠKORIĆ PAVLE
+ŠKORIĆ PAVLE
+ŠKORIĆ PERO
+ŠKORIĆ SLAVKO
+ŠKORIĆ SLOBODAN
+ŠKORIĆ SMILJA
+ŠKORIĆ SMILJA
+ŠKORIĆ SREĆKO
+ŠKORIĆ STANA
+ŠKORIĆ VLADIMIR
+ŠKORIĆ ZORA
+ŠKORO ŠIME
+ŠKORO MIRJANA
+ŠKORO VASILIJA
+ŠKRAVAN ANDRIJA
+ŠKRBIĆ ŽELJKO
+ŠKRBIĆ ĐURO
+ŠKRBIĆ ANICA
+ŠKRBIĆ BLAŽO
+ŠKRBIĆ BOŽO
+ŠKRBIĆ BOJANA
+ŠKRBIĆ BRANKO
+ŠKRBIĆ DRAGICA
+ŠKRBIĆ DUŠAN
+ŠKRBIĆ JOVAN
+ŠKRBIĆ JOVAN
+ŠKRBIĆ LJUBICA
+ŠKRBIĆ MARA
+ŠKRBIĆ MARICA
+ŠKRBIĆ MILE
+ŠKRBIĆ MILORAD
+ŠKRBIĆ MILORAD
+ŠKRBIĆ NEBOJŠA
+ŠKRBIĆ OSTOJA
+ŠKRBIĆ PETAR
+ŠKRBIĆ RADOSLAV
+ŠKRBIĆ SVETOZAR
+ŠKRBIĆ ZORKA
+ŠKRBINA STJEPAN
+ŠKRGET JOSIP
+ŠKRIJEL DRAGAN
+ŠKRIJEL MILAN
+ŠKRIJELJ AJNIJA
+ŠKRIJELJ SAMIR
+ŠKRIJELJ VEHBO
+ŠKRINJAR KAROLJ
+ŠKRINJAR MARIO
+ŠKRINJAR ZVONIMIR
+ŠKRIVAN ĐURA
+ŠKRIVAN ANTUN
+ŠKRIVAN FRANJA
+ŠKRIVAN KARLO
+ŠKRIVAN LADISLAV
+ŠKRIVAN PETAR
+ŠKRIVAN STEVAN
+ŠKRIVAN STEVAN
+ŠKRIVANJ PIŠTA
+ŠKULETIĆ OLGA
+ŠKULETIĆ ZORAN
+ŠKUNCA IVAN
+ŠKUNCA JELICA
+ŠKUNDRIĆ DUŠAN
+ŠKUNDRIĆ MILICA
+ŠKUNDRIĆ PETAR
+ŠKUNDRIĆ ROZALIJA
+ŠKVAREK VLADA
+ŠLAHTER VENDEL
+ŠLAJER RUDOLF
+ŠLAVIK ILONA
+ŠLEHTA ZDENKO
+ŠLEMENDER ĐORĐE
+ŠLEMENDER ANGELA
+ŠLEMENDER IRENA
+ŠLJAPIĆ GORAN
+ŠLJAPIĆ MIRJANA
+ŠLJAPIĆ OBREN
+ŠLJAPIĆ RUŽICA
+ŠLJAPIĆ STEVAN
+ŠLJAPIĆ TATJANA
+ŠLJAPIĆ TOMISLAV
+ŠLJAPIĆ VELEMIR
+ŠLJIVANČANIN JOVAN
+ŠLJIVANČANIN JOVAN
+ŠLJIVANČANIN MARIJA
+ŠLJIVANČANIN MILUTIN
+ŠLJIVIĆ ĐORĐE
+ŠLJIVIĆ BORKA
+ŠLJIVIĆ JELENA
+ŠLJIVIĆ LJILJANA
+ŠLJIVIĆ MIRJANA
+ŠLJIVIĆ RADOJICA
+ŠLJIVIĆ SPASOJE
+ŠLJIVIĆ VLADISLAV
+ŠLJIVKOVIĆ ĐORĐE
+ŠLJUKA DRAGIŠA
+ŠLJUKA MIJODRAG
+ŠLJUKA MILAN
+ŠLJUKA MILOŠ
+ŠLJUKIĆ ŽIVAN DR
+ŠLJUKIĆ MILIVOJ
+ŠLJUKIĆ ROSANDA
+ŠMANJA MIRKO
+ŠMANJA SLAVKO
+ŠMIDERKAL FRANJA
+ŠMIGELJSKI NIKOLA
+ŠMIGIĆ BORISLAV
+ŠMIGIĆ MILORAD
+ŠMIGIĆ SVETOZAR
+ŠMIT FERDINAND
+ŠMIT GIZELA
+ŠMIT JOSIP
+ŠMIT JOVAN
+ŠMIT-KOTA KATICA
+ŠMIT MARIJA
+ŠMIT MIRJANA
+ŠMIT-PROKIN ĐURĐINA
+ŠMIT REŽE
+ŠMIT STANA
+ŠMIT STANOJKA
+ŠMIT STEVAN
+ŠMIT STEVAN
+ŠMIT VIOLETA
+ŠMIT ZLATKO
+ŠMITRAN ĐORĐE
+ŠMUK IVAN
+ŠNAJDER ŠANDOR
+ŠNAJDER ANICA
+ŠNAJDER ILINKA
+ŠNAJDER JANOŠ
+ŠNAJDER JAROSLAV
+ŠNAJDER STEVAN
+ŠNAJDER VERA
+ŠNAJDEROV JOSIP
+ŠNAJDEROV VESNA
+ŠNAUTIL DRAGUTIN
+ŠNEL PETER
+ŠNJARIĆ IVAN
+ŠOŠ ANTAL
+ŠOŠ ANTAL
+ŠOŠ BALINT
+ŠOŠ DEZIDER
+ŠOŠ GIZELA
+ŠOŠ ILONA
+ŠOŠ JELICA
+ŠOŠ LAJOŠ
+ŠOŠ MARIJA
+ŠOŠ TIBOR
+ŠOŠIĆ MIRKO
+ŠOŠIĆ NATAŠA
+ŠOŠIĆ OLGA
+ŠOŠIĆ RADOSLAV
+ŠOŠIĆ VUK
+ŠOŠKIĆ DRAGOMIR
+ŠOŠKIĆ MIRA
+ŠOĆ BOJANA
+ŠOĆ DUŠAN
+ŠOĆ TOMISLAV
+ŠOBAJIĆ DRAGOSLAV
+ŠOBAKI MARIJA
+ŠOBIĆ MIRA
+ŠOBIĆ RADE
+ŠOBIĆ VERA
+ŠOBIĆ ZORAN
+ŠOBIĆ ZORAN
+ŠOBOT ĐURA
+ŠOBOT BOŠKO
+ŠOBOT BRANKO
+ŠOBOT DRAGAN
+ŠOBOT JOVAN
+ŠOBOT LJUBOMIR
+ŠOBOT MILAN
+ŠOBOT MILICA
+ŠOBOT PETKO
+ŠOBOT SEKULA
+ŠOBOT SLAVICA
+ŠODIĆ DOBRILA
+ŠODIĆ DRAGINJA
+ŠODIĆ GIZELA
+ŠODIĆ MILAN
+ŠODIĆ TODOR
+ŠODOROVIĆ ROSA
+ŠOFHAUZER MIHAJLO
+ŠOFHAUZER ROZALIJA
+ŠOFRAN MARIJA
+ŠOFRANAC MELANIJA
+ŠOGOROV STEVAN
+ŠOJIĆ ŽIVKO
+ŠOJIĆ BRANKO
+ŠOJIĆ DRAGICA
+ŠOJIĆ NEDELJKA
+ŠOJLEVSKA SANJA
+ŠOKIĆ ĐORĐE
+ŠOKIĆ JUDITA
+ŠOKIĆ MILAN
+ŠOKIĆ PETAR
+ŠOKIĆ RADOVAN
+ŠOKIĆ SMILJA
+ŠOKICA ŽIVKO
+ŠOKICA BRANISLAV
+ŠOKICA DIMITRIJE
+ŠOKICA DRAGIŠA
+ŠOKICA JOVAN
+ŠOKICA JUDITA
+ŠOKICA LJUBICA
+ŠOKICA MILOŠ
+ŠOKICA ZORA
+ŠOKLOVAČKI ŽIVKO
+ŠOKLOVAČKI DRAGOLJUB
+ŠOKLOVAČKI NADA
+ŠOKLOVAČKI RATOMIR
+ŠOL BELA
+ŠOLAJA ĐORĐE
+ŠOLAJA DIMITRIJE
+ŠOLAJA GOJKO
+ŠOLAJA MILAN
+ŠOLAJA MIROSLAV
+ŠOLAJA NADA
+ŠOLAJA NADA
+ŠOLAJA RADOSLAV
+ŠOLAJA SLAVKO
+ŠOLAJA SLAVKO
+ŠOLAJA SLOBODAN
+ŠOLAJA VIŠNJA
+ŠOLAK JOKA
+ŠOLAK MARINKO
+ŠOLAK MILE
+ŠOLAK RADE
+ŠOLEVIĆ MILIVOJE
+ŠOLTES ŠANDOR
+ŠOLTES IBOLJA
+ŠOLTES JOŽEF
+ŠOMKEREKI ILONKA
+ŠOMKEREKI JOSIP
+ŠOMKEREKI JULIJANA
+ŠOMKEREKI LADISLAV
+ŠOMKEREKI STEVAN
+ŠOMKEREKI STEVAN
+ŠOMOĐI ŽOFIJA
+ŠOMOĐI ĐORĐE
+ŠOMOĐI EVA
+ŠOMOĐI FRANJA
+ŠOMOĐI IŠTVAN
+ŠOMOĐI JELENA
+ŠOMOĐI JOVAN
+ŠOMOĐI LASLO
+ŠOMOĐI MIHAJLO
+ŠOMOĐI PAL
+ŠOMOĐI PAL
+ŠOMOĐI PAL
+ŠOMOĐI ROZA
+ŠOMOĐI ZOLTAN
+ŠOMOĐI ZORA
+ŠOP MAGDALENA
+ŠOP MILAN
+ŠOPALO ĐURĐINA
+ŠOPALO ĐURĐINA
+ŠOPALO MIODRAG DIPL OEC
+ŠOPALO MIODRAG
+ŠORĐAN ROMAN
+ŠORAK MIRJANA
+ŠORALOV MILOŠ
+ŠORALOV MIROSLAV
+ŠORMAZ DUŠAN
+ŠORMAZ MILAN
+ŠORMAZ NIKOLA
+ŠORMAZ VLADIMIR
+ŠORONJA SAVA
+ŠORONJA VERA
+ŠOSBERGER BORIŠKA
+ŠOSBERGER JOSIP DIPL OEC
+ŠOSBERGER PAVLE
+ŠOSTAKOV RASTISLAV DIPL ING
+ŠOTI-ČALENIĆ MARIJA
+ŠOTI FEĐA
+ŠOTI IVANA
+ŠOTI JOSIP
+ŠOTI JOSIP
+ŠOTI MARIJA
+ŠOTI MARIJA
+ŠOTRA MOMČILO
+ŠOUC MILAN
+ŠOUC MIROSLAV
+ŠOUC ZLATA
+ŠOVŠ JANKO
+ŠOVŠ JOAKIM
+ŠOVANJ JOAKIM
+ŠOVENJ ALEKSANDAR
+ŠOVENJ KARLO
+ŠOVENJ VERA
+ŠOVLJAKOV JOVAN
+ŠOVLJAKOV MILOŠ
+ŠOVLJAKOV MILOŠ
+ŠOVLJANSKI ĐORĐE DIPL ING
+ŠOVLJANSKI ĐORĐE
+ŠOVLJANSKI ANKICA
+ŠOVLJANSKI BOSILJKA
+ŠOVLJANSKI BRANKO
+ŠOVLJANSKI DANICA
+ŠOVLJANSKI DANILO
+ŠOVLJANSKI DANKA
+ŠOVLJANSKI DIMITRIJE
+ŠOVLJANSKI DRAGIŠA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGOMIR
+ŠOVLJANSKI DRAGOMIR
+ŠOVLJANSKI DRAGOSLAV
+ŠOVLJANSKI DRENKA
+ŠOVLJANSKI EMIL
+ŠOVLJANSKI JULKA
+ŠOVLJANSKI LAZAR
+ŠOVLJANSKI LJUBICA
+ŠOVLJANSKI LJUBOMIR
+ŠOVLJANSKI MARGITA
+ŠOVLJANSKI MILAN
+ŠOVLJANSKI MILOŠ
+ŠOVLJANSKI MILORAD
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIROSLAV DR
+ŠOVLJANSKI NADA
+ŠOVLJANSKI PAVLE
+ŠOVLJANSKI RADIVOJ
+ŠOVLJANSKI RADOSLAV
+ŠOVLJANSKI SAVA
+ŠOVLJANSKI STOJAN
+ŠPADIJER TATIJANA
+ŠPAGOVIĆ DRAGOSLAV
+ŠPAK VLADIMIR
+ŠPANČIĆ RADMILA
+ŠPANG LASLO
+ŠPANG ZOLTAN
+ŠPANIĆ BOŠKO
+ŠPANIĆ FRANJA
+ŠPANIĆ LADISLAV
+ŠPANIĆ NADA
+ŠPANIĆ OTO
+ŠPANJEVIĆ SUZANA
+ŠPANJEVIĆ VUKOTA
+ŠPANOVIĆ ĐORĐE
+ŠPANOVIĆ ALEKSA
+ŠPANOVIĆ MILOŠ
+ŠPANOVIĆ NIKOLA
+ŠPARAVALO MARIJA
+ŠPARAVALO NATAŠA
+ŠPARAVALO SAVA
+ŠPARAVALO ZDRAVKO
+ŠPAROVIĆ ILIJA
+ŠPEGAR LAZAR
+ŠPEHAR MARIJA
+ŠPES ETEL
+ŠPES VILIM
+ŠPES VILIM
+ŠPICA MIODRAG
+ŠPIKA MILAN
+ŠPINDLER MARIJA
+ŠPINDLER-TRBOJEVIĆ MIRJANA
+ŠPIRIĆ BORIVOJE
+ŠPIRIĆ GORDANA
+ŠPIRIĆ GOSPAVA
+ŠPIRIĆ ILE
+ŠPIRIĆ JOVO
+ŠPIRIĆ LUKA
+ŠPIRIĆ LUKA
+ŠPIRIĆ MILE
+ŠPIRIĆ NEĐO
+ŠPIRIĆ OBRAD
+ŠPIRIĆ STOJAN
+ŠPIRIĆ TODE
+ŠPIRIĆ UROŠ
+ŠPIRIĆ ZORAN
+ŠPIRKA MATILD
+ŠPIRTA ALEKSANDAR
+ŠPIRTA ALEKSANDAR
+ŠPIS DANILO
+ŠPIS DANILO
+ŠPIS LAJOŠ
+ŠPIS MIRJANA
+ŠPIS NANDOR
+ŠPONJA KOVILJKO
+ŠPROH DRENKA
+ŠPROH JANKO
+ŠPROH MAGDA
+ŠPROH SLAVKO
+ŠPROH STANKO
+ŠPROH STEVAN
+ŠRAHOL HILDA
+ŠRAHOL KARLO
+ŠRAHOL LJUDEVIT
+ŠRAJ VLADIMIR
+ŠRAK JOVICA
+ŠRAK LADISLAV
+ŠRAK LASLO
+ŠRAK OTO
+ŠRAK OTO
+ŠRAM HUGO
+ŠRANC RIHARD
+ŠRANC RIHARD
+ŠRANKA ANA
+ŠRANKA DESANKA
+ŠREDER JANOŠ
+ŠREDER JANOŠ
+ŠREK ANDRIJA DIPL ING
+ŠREK STEVAN DIPL ING
+ŠTABI ŠTEFICA
+ŠTAJN LIVIJA
+ŠTAJNER KREŠIMIR
+ŠTAJNER MIRJANA
+ŠTAJNER MIROSLAV
+ŠTAJNER ZVONIMIR
+ŠTAJNFELD MIHAJLO
+ŠTAJNIC MIROSLAV
+ŠTAJNIC TIBOR
+ŠTANDI KATICA
+ŠTANDI ZOLTAN
+ŠTANFELJ ALOJZ
+ŠTANFELJ MIROSLAV
+ŠTANGL ĐORĐE
+ŠTANJO-TOT GIZELA
+ŠTARK EGON DIPL ING
+ŠTARK MIRKO
+ŠTASNI JOSIP
+ŠTASNI KATICA
+ŠTATKIĆ MIROSLAV
+ŠTAUHER JOSIP
+ŠTEBL JELENA
+ŠTEFAN ĐORĐE
+ŠTEFAN EUĐEN
+ŠTEFAN JULIJANA
+ŠTEFAN MATIJA
+ŠTEFAN OSKAR
+ŠTEFAN RUDOLF
+ŠTEFAN TRAJAN
+ŠTEFANAC STEVAN
+ŠTEFANICKI MIŠO
+ŠTEFANIDES KARLO DR
+ŠTEFANIDES KARLO
+ŠTEFANKO VIKTORIJA
+ŠTEFANOVIĆ DRAGAN
+ŠTEFANOVIĆ DRAGUTIN
+ŠTEFANOVIĆ TOMISLAV
+ŠTEFKO ĐORĐE
+ŠTEFKO ĐORĐE
+ŠTEFOVIĆ VLADIMIR
+ŠTEFULIK JOŽEF
+ŠTEGER ROŽI
+ŠTEGER VALENTINA
+ŠTEHER RADMILA
+ŠTELCER JOSIP
+ŠTELI ANTUN
+ŠTERLE JOSIP
+ŠTERLE STEVAN
+ŠTERLEMAN KRISTIJAN
+ŠTERLEMAN PERA
+ŠTETIĆ KRISTINA
+ŠTETIĆ TIHOMIR
+ŠTETIĆ VESNA
+ŠTETIĆ VIDA
+ŠTETIN HELENA
+ŠTETIN MILAN
+ŠTETIN MILE
+ŠTETIN SVETISLAV
+ŠTEVANČEV LJUBOMIR
+ŠTICA VITOMIR
+ŠTIGLER IVAN
+ŠTIGLER MILAN
+ŠTIGLIĆ DRAGAN
+ŠTIGLIĆ SVETOZAR
+ŠTIKAVAC KOSOVKA
+ŠTIKOVAC SPASOJE
+ŠTIMAC OTO
+ŠTIMAC RUDOLF
+ŠTOKOVAC JOVAN
+ŠTOKOVAC TOMISLAV
+ŠTOLBA ZVONIMIR
+ŠTOS KATICA
+ŠTRAJH IŠTVAN
+ŠTRAJH JOSIP
+ŠTRAJH OTTO
+ŠTRANGAR NADA
+ŠTRANGAROV BORIVOJ
+ŠTRANGAROV DIMITRIJE
+ŠTRANGAROV JELENA
+ŠTRANGAROV JELENA
+ŠTRANGAROV MILICA
+ŠTRANGAROV SLOBODAN
+ŠTRAPAJEVIĆ JULIJANA
+ŠTRASER MIHAJLO DR LEKAR
+ŠTRASER NADA
+ŠTRAUB ERŽEBET
+ŠTRAUB IŠTVAN
+ŠTRAUB STEVAN
+ŠTRBA DANILO
+ŠTRBA MILAN
+ŠTRBAČKI BORISLAV
+ŠTRBAC ŽELJKO
+ŠTRBAC ĐORĐE
+ŠTRBAC ĐURO
+ŠTRBAC ANĐELKA
+ŠTRBAC BOŠKO
+ŠTRBAC BORISLAV
+ŠTRBAC BRANKA
+ŠTRBAC DARINKA
+ŠTRBAC DESANKA
+ŠTRBAC DRAGAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC JOVAN
+ŠTRBAC LJUBICA
+ŠTRBAC LJUBOMIR
+ŠTRBAC MARIJA
+ŠTRBAC MIĆO
+ŠTRBAC MIĆO
+ŠTRBAC MILANKO
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILENA
+ŠTRBAC MILICA
+ŠTRBAC MILIVOJ
+ŠTRBAC MILOŠ
+ŠTRBAC MIRJANA
+ŠTRBAC MIRKO
+ŠTRBAC MOMČILO
+ŠTRBAC NEMANJA
+ŠTRBAC NIKOLA
+ŠTRBAC RADOJKA
+ŠTRBAC RADOVAN
+ŠTRBAC SAVKA
+ŠTRBAC SLAVICA
+ŠTRBAC SLAVKO
+ŠTRBAC STANA
+ŠTRBAC STEVAN
+ŠTRBAC TOMISLAV
+ŠTRBAC UROŠ
+ŠTRBAC VLADO
+ŠTRBAC VUKICA
+ŠTRBAC ZORICA
+ŠTRBENK IVANKA
+ŠTRBENK NIKOLA
+ŠTRBOJA ŽIVKO
+ŠTRBOJA ĐORĐE
+ŠTRBOJA ĐORĐE
+ŠTRBOJA RADA
+ŠTRBOJA RADIVOJ
+ŠTRBOJA STEVAN
+ŠTRBOJE DIMITRIJE
+ŠTRICKI JOSIP
+ŠTRK JOSIP
+ŠTRK MARIJA
+ŠTRKIĆ MIROSLAV
+ŠTRKIĆ MOMIR
+ŠTROK ŽELJKO
+ŠTRTAK SLAVKO
+ŠTRTAK SLOBODAN
+ŠTULA MILE
+ŠTULIĆ BOŽIDAR
+ŠTULIĆ GORAN
+ŠTULIĆ JOVO
+ŠTULIĆ MARKO
+ŠTULIĆ RADOVAN
+ŠTUMPF HELMUT
+ŠTUMPF OSVALD
+ŠUŠČEVIĆ JOVO
+ŠUŠČEVIĆ ZDRAVKO
+ŠUŠA ČEDOMIR
+ŠUŠA DUŠAN
+ŠUŠA JOVAN
+ŠUŠA KEMAL
+ŠUŠA STOJANKA
+ŠUŠAK ĐOKA
+ŠUŠAK ĐORĐE
+ŠUŠAK GOSPAVA
+ŠUŠAK MARIJA
+ŠUŠAK NEVENA
+ŠUŠAK STAMENKO DR
+ŠUŠAK TOMISLAV
+ŠUŠAKOV PAJA
+ŠUŠEVSKI MILAN
+ŠUŠIĆ RISTO
+ŠUŠIĆ TOMISLAV
+ŠUŠKAVČEVIĆ ILIJA
+ŠUŠKAVČEVIĆ MIODRAG
+ŠUŠKOVIĆ BORIS
+ŠUŠLJIK JOVAN
+ŠUŠNJAR ŽARKO
+ŠUŠNJAR BORISLAV
+ŠUŠNJAR BORISLAV
+ŠUŠNJAR MIHAJLO
+ŠUŠNJAR MILAN
+ŠUŠNJAR MILAN
+ŠUŠNJAR PETAR
+ŠUŠNJAR PETAR
+ŠUŠNJAR PETAR
+ŠUŠNJAR SLAVKO
+ŠUŠNJAR SOFIJA
+ŠUŠNJAR STANKO
+ŠUŠNJEVIĆ DUŠAN
+ŠUŠNJEVIĆ MOMČILO
+ŠUŠNJEVIĆ RADOSLAV
+ŠUŠNJIĆ STANKA
+ŠUŠTRAN MLADEN
+ŠUŠTUM JOVAN
+ŠUĆAK MILAN
+ŠUĆOV ĆIRA
+ŠUĆOV DANICA
+ŠUĆOV DANILO
+ŠUĆOV MILOŠ
+ŠUĆOV VUKOSAVA
+ŠUBARA MLADEN
+ŠUBARIĆ LUKA
+ŠUBARIĆ VLASTIMIR
+ŠUBARIĆ ZORAN
+ŠUBERT ILONKA
+ŠUBIĆ JOVANKA
+ŠUBONJ SILVIUS
+ŠUDAR JOŽEF
+ŠUDAR JOSIP
+ŠUDICKI JOŽEF
+ŠUGIĆ MILAN
+ŠUGIĆ NADA
+ŠUGIĆ PETAR
+ŠUGIN ŽIVKO
+ŠUGIN BERISAV
+ŠUGIN DIMITRIJE
+ŠUGIN LEKSA
+ŠUGIN LJILJANA
+ŠUGIN LJILJANA
+ŠUGIN MILKA
+ŠUGIN MIODRAG
+ŠUGIN MIODRAG
+ŠUGIN RADA
+ŠUGIN RANKA
+ŠUHAJDA ĐURA
+ŠUHAJDA IMRE
+ŠUHAJDA LAJOŠ
+ŠUJDOVIĆ ZORAN
+ŠUJIĆ DRAGOMIR
+ŠUJIĆ REDŽO
+ŠUJICA MILAN
+ŠUKA ALEKSA
+ŠUKALOVIĆ ĐORĐE
+ŠUKARA BOGDAN
+ŠUKARA DMITAR
+ŠUKARA DUŠAN
+ŠUKIĆ DRAGICA
+ŠUKIĆ MIROLJUB
+ŠUKIĆ ZORICA
+ŠUKLA SLAVKO
+ŠUKOVIĆ MILAN
+ŠUKOVIĆ ZORKA
+ŠUKUNDA MARIJA
+ŠUKUNDA MILAN
+ŠUKURMA STEVO
+ŠULAJA MIROSLAV
+ŠULC ANDRAŠ
+ŠULC DELIMIR DR PROF
+ŠULC IMRE DIPL ING
+ŠULC IMRE
+ŠULC JOŽEF
+ŠULC JOŽEF
+ŠULC KOSANA
+ŠULC VERA
+ŠULENTIĆ MILE
+ŠULHOF JOŽEF KNJIŽEVNIK
+ŠULJAN ANA
+ŠULJAN JANKO
+ŠULJAN JAN
+ŠULJAN JAN
+ŠULJAN JAROSLAV
+ŠULJAN PAL
+ŠULJMANAC-ŠEĆEROV MIRJANA
+ŠULJMANAC BRANIMIR
+ŠULJMANAC JOVAN
+ŠULJMANAC UROŠ
+ŠULOVIĆ PETAR
+ŠUMAHER ILONA
+ŠUMAHER JANOŠ
+ŠUMAJSKI BLAŽENKA
+ŠUMAN VITOMIR
+ŠUMANOVAC PAVLE DIPL ING
+ŠUMANOVIĆ BRANISLAV
+ŠUMANOVIĆ LJILJANA
+ŠUMAR BOŽO
+ŠUMAR MILAN
+ŠUMAR SIMA
+ŠUMAREVIĆ DRAGORAD
+ŠUMAROV NIKOLA
+ŠUMARUNA CVETA
+ŠUMARUNIĆ PAVLE
+ŠUMEC ERNA
+ŠUMEC JANOŠ
+ŠUMIĆ MLADEN
+ŠUMONJA MILAN
+ŠUNDOVA FLORA
+ŠUNIĆ JOVO
+ŠUNJIĆ PETAR
+ŠUNJKA MARKO
+ŠUNJKA MILICA
+ŠUNJKA RATKO
+ŠUNKA JOVAN
+ŠUNKIĆ LAZAR
+ŠUNTIĆ MATEJ
+ŠUPE ŠIME
+ŠUPICA DUŠAN
+ŠUPICA LAZAR
+ŠUPICA LAZA
+ŠUPICA LJUBICA
+ŠUPICA MARA
+ŠUPICA MILAN
+ŠUPICA MILOŠ
+ŠUPICA PETAR
+ŠUPICA SLAVKO
+ŠUPICA VASA
+ŠUPUT ŽARKO DIPL ING
+ŠUPUT ĐURO
+ŠUPUT DUŠAN
+ŠUPUT SLOBODAN
+ŠUPUT SVETOZAR
+ŠURANJI TEREZIJA
+ŠURBANOVIĆ BRANKO
+ŠURJAN JANOŠ
+ŠURJAN JOVAN
+ŠURJANČEV IVAN
+ŠURJANOVIĆ MILAN
+ŠURJANOVIĆ MILENA
+ŠURKALOVIĆ MILENA
+ŠURKOVIĆ DORAN
+ŠURKOVIĆ IRFAN DIPL ING
+ŠURLAN ČEDOMIR
+ŠURLAN ĐORĐO
+ŠURLAN DRAGOMIR
+ŠURLAN DRAGOSLAV
+ŠURLAN GOJKO
+ŠURLAN JOVAN
+ŠURLAN MARINKO
+ŠURLAN MARKO
+ŠURLAN MILOŠ
+ŠURLAN MIRKO
+ŠURLAN MOMIR
+ŠURLAN NEDELJKO
+ŠURLAN RUŠKO
+ŠURLAN VOJISLAV
+ŠURLAN VUKOSAVA
+ŠUSTER NEGOSLAV
+ŠUSTRIJAN OLGA
+ŠUTANOVIĆ NADA
+ŠUTILOVIĆ MILORAD
+ŠUTILOVIĆ NEVENKA
+ŠUTULOVIĆ DANKA
+ŠUTULOVIĆ VESNA
+ŠUTVIĆ BRANKA
+ŠUVAK MIODRAG
+ŠUVAKOV DARINKA
+ŠUVAKOV DEJAN
+ŠUVAKOV JOVAN
+ŠUVAKOV MILENA
+ŠUVAKOV MILORAD
+ŠUVAKOV STEVAN
+ŠUVAKOV TIHOMIR DR
+ŠUVAKOV VESELINKA
+ŠUVAKOVIĆ ĐURĐICA
+ŠUVAKOVIĆ BOGOSLAV
+ŠUVAKOVIĆ DAMJAN DR LEKAR
+ŠUVAKOVIĆ JULIJANA
+ŠUVAKOVIĆ ZORAN
+ŠVAB ESTER
+ŠVAB HENRIJETA
+ŠVAGER MARTIN
+ŠVAJBERIĆ VIRGINIJA
+ŠVAJCER GIZELA
+ŠVAJCER IVICA
+ŠVAJCER-RAKIĆ IRENA
+ŠVAJCER ROZALIJA
+ŠVANDILIK JOŽEF
+ŠVARC ILONA
+ŠVARC TIBOR
+ŠVARC VLADIMIR
+ŠVEDIĆ AĆIM
+ŠVEDIĆ DUŠAN
+ŠVEDIĆ ELIZABETA
+ŠVEDIĆ ERŽIKA
+ŠVEDIĆ GRUJA
+ŠVEDIĆ JOVAN
+ŠVEDIĆ MILICA
+ŠVEDIĆ MILORAD
+ŠVEDIĆ MILUTIN
+ŠVEDIĆ NIKOLA
+ŠVEDIĆ PETAR
+ŠVELJA BOGDAN
+ŠVELJA PETAR
+ŠVEM ĐURA
+ŠVENDA GORAN
+ŠVER KARLO
+ŠVERER RUDOLF
+ŠVERKO ANĐELIJA
+ŠVIND NENAD
+ŠVOB JOSIP
+ŠVOB LAJOŠ
+ŠVONJA ŽELJKO
+ŠVONJA ĐURĐINKA
+ŠVONJA BILJANA
+ŠVONJA BOŠKO
+ŠVONJA BOŠKO
+ŠVONJA BOŽIDAR
+ŠVONJA BORIVOJ
+ŠVONJA BRANKO
+ŠVONJA DRAGOLJUB
+ŠVONJA DUŠAN
+ŠVONJA DUŠKO
+ŠVONJA MILAN
+ŠVONJA MIRA
+ŠVONJA RATKO
+ŠVONJA RATKO
+ŠVONJA SVETOZAR
+ŠVONJA VELJKO
+ŠVRAKA FRANJO
+ŠVRAKA STEVAN DIPL ING
+ŠVRAKA STEVAN
+ĆAĆIĆ DANICA
+ĆAĆIĆ DUŠAN
+ĆAĆIĆ MARKO
+ĆAĆIĆ NINOSLAV
+ĆAHUN KARLO DIPL ING
+ĆAJA VANKA
+ĆAKIĆ GIZA
+ĆALASAN JOVAN
+ĆALASAN STOJAN
+ĆALETA IVICA
+ĆALIĆ ILIJA
+ĆALIĆ JOVAN
+ĆALIĆ JOVAN
+ĆALIĆ LUKA
+ĆALIĆ MILOŠ
+ĆALIĆ MOMČILO
+ĆALIĆ SLOBODAN
+ĆALIĆ ZORAN
+ĆALOV MILORAD
+ĆALOVIĆ LAKIĆ
+ĆALOVIĆ RADOMIR
+ĆALUŠIĆ JAKOV
+ĆATIĆ RADENKO
+ĆATIĆ SMILJANA
+ĆATOVIĆ DRAGAN
+ĆATOVIĆ GOSPAVA
+ĆATOVIĆ MAHIT
+ĆATOVIĆ SIMAN
+ĆAVAR MARKO
+ĆAZIĆ ĐORĐE
+ĆAZIĆ MILE
+ĆAZIĆ MILE
+ĆAZIĆ PETAR
+ĆEBIĆ BORIVOJ
+ĆEBIĆ MILAN
+ĆEBIĆ SLAVICA
+ĆEBOVIĆ NENAD
+ĆEHA BRANE
+ĆEJIĆ DUŠAN
+ĆEJIĆ DUŠAN
+ĆELAP MLADEN
+ĆELAP SVETOZAR
+ĆELIĆ LJUBA
+ĆELIĆ SLAVKO
+ĆELIĆ VIKTORIJA
+ĆENANOVIĆ MIRJANA
+ĆERAN BOŠKO
+ĆERAN DUŠAN
+ĆERAN JELKA
+ĆERAN MILENKO
+ĆERAN STOJAN
+ĆERAN VELJKO
+ĆERAN ZORANKA
+ĆERANIĆ BRANISLAV
+ĆERANIĆ MILAN
+ĆERANIĆ MILICA
+ĆERANIĆ RADINKA
+ĆERANIĆ SNEŽANA
+ĆERANIĆ ZORAN
+ĆERIMAGIĆ ETHEM
+ĆERMOV-KAVEČAN BOJANA
+ĆESAROV ŽARKO
+ĆESAROV BRANISLAV
+ĆESAROV RUŽICA
+ĆESAROV SIMA
+ĆESAROV STEVAN
+ĆESAROV SVETOZAR
+ĆESAROVIĆ BOSILJKA
+ĆESAROVIĆ RADIVOJ
+ĆETKOVIĆ ŽARKO
+ĆETKOVIĆ BOŽIDAR
+ĆETKOVIĆ DUŠANKA
+ĆETKOVIĆ MILENKO
+ĆETKOVIĆ NENAD
+ĆETKOVIĆ PREDRAG
+ĆETOJEVIĆ ĐORĐE
+ĆETOJEVIĆ BOSA
+ĆETOJEVIĆ DRAGOLJUB
+ĆETOJEVIĆ JOVO
+ĆETOJEVIĆ MILOŠ
+ĆETOJEVIĆ MILOVAN
+ĆETOJEVIĆ MIROSLAV
+ĆETOJEVIĆ NEDELJKO
+ĆETOJEVIĆ RADOVAN
+ĆEVAP BOŽA
+ĆIŠIN DUŠANKA
+ĆINKUL SAVA
+ĆINKUL VALTA
+ĆIPE ERŽEBET
+ĆIPROVAC SAVA
+ĆIPROVAC TOŠA
+ĆIPROVAC ZDRAVKO
+ĆIRAK MILORAD
+ĆIRAKOVIĆ ŽIVORAD
+ĆIRAKOVIĆ MARKO
+ĆIRAKOVIĆ MILORAD
+ĆIRAKOVIĆ SAJA
+ĆIREVSKI BUDIMIR
+ĆIRIĆ ĆIRA
+ĆIRIĆ ŽIVKA
+ĆIRIĆ ŽIVKA
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐURĐINKA
+ĆIRIĆ ANICA
+ĆIRIĆ ANITA
+ĆIRIĆ BOŠKO
+ĆIRIĆ BOŽIDAR DR
+ĆIRIĆ BOŽIDAR
+ĆIRIĆ BOŽO
+ĆIRIĆ BORISLAV
+ĆIRIĆ BORISLAV
+ĆIRIĆ BORISLAV
+ĆIRIĆ BRANKA
+ĆIRIĆ BRANKO
+ĆIRIĆ DANICA
+ĆIRIĆ DANILO
+ĆIRIĆ DESANKA
+ĆIRIĆ DIVKO
+ĆIRIĆ DOBRILA
+ĆIRIĆ DRAGAN
+ĆIRIĆ DRAGICA
+ĆIRIĆ DRAGINJA
+ĆIRIĆ DRAGOLJUB
+ĆIRIĆ DUŠAN DIPL ING
+ĆIRIĆ DUŠANKA
+ĆIRIĆ DUŠAN
+ĆIRIĆ DUŠAN
+ĆIRIĆ DUŠICA
+ĆIRIĆ GAVRILO
+ĆIRIĆ GORDANA
+ĆIRIĆ IVANKA
+ĆIRIĆ IVAN
+ĆIRIĆ JELISAVETA
+ĆIRIĆ JORDAN
+ĆIRIĆ JOVANKA
+ĆIRIĆ JOVAN
+ĆIRIĆ JOVAN
+ĆIRIĆ JOVAN
+ĆIRIĆ KAMENKO
+ĆIRIĆ KATICA
+ĆIRIĆ LAZAR
+ĆIRIĆ LENKA
+ĆIRIĆ LJUBICA
+ĆIRIĆ LJUBICA
+ĆIRIĆ LJUBOMIR
+ĆIRIĆ MARKO
+ĆIRIĆ MILAN DIPL ING
+ĆIRIĆ MILAN
+ĆIRIĆ MILENKO
+ĆIRIĆ MILENKO
+ĆIRIĆ MILETA
+ĆIRIĆ MILICA
+ĆIRIĆ MILKA
+ĆIRIĆ MILOŠ
+ĆIRIĆ MILOŠ
+ĆIRIĆ MILORAD
+ĆIRIĆ MILORAD
+ĆIRIĆ MIODRAG
+ĆIRIĆ MIRA
+ĆIRIĆ MLADEN
+ĆIRIĆ NIKOLA
+ĆIRIĆ PAJA
+ĆIRIĆ PETAR
+ĆIRIĆ PETAR
+ĆIRIĆ-PETROVIĆ KATARINA
+ĆIRIĆ PREDRAG
+ĆIRIĆ RADE
+ĆIRIĆ RADMILA
+ĆIRIĆ RADMILO
+ĆIRIĆ RADOMIR
+ĆIRIĆ RADOVAN
+ĆIRIĆ ROBERT
+ĆIRIĆ SAVA
+ĆIRIĆ SLAVICA
+ĆIRIĆ SLAVKO
+ĆIRIĆ SLAVKO
+ĆIRIĆ SLOBODAN
+ĆIRIĆ SMILJA
+ĆIRIĆ SOFIJA
+ĆIRIĆ SREDOJE
+ĆIRIĆ STANISLAV
+ĆIRIĆ STEVAN
+ĆIRIĆ STEVAN
+ĆIRIĆ STEVAN
+ĆIRIĆ SVETISLAV
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ TOMISLAV
+ĆIRIĆ TOMISLAV
+ĆIRIĆ-TON JELICA
+ĆIRIĆ VASA
+ĆIRIĆ VERA
+ĆIRIĆ VLADIMIR
+ĆIRIĆ VLADIMIR
+ĆIRIĆ VLADISLAV
+ĆIRIĆ VUČKO
+ĆIRIĆ ZORAN
+ĆIRIĆ ZORA
+ĆIRIĆ ZORA
+ĆIRIĆ ZORKA
+ĆIRILOV MILAN
+ĆIRILOVIĆ ANICA
+ĆIRILOVIĆ BRANISLAV
+ĆIRILOVIĆ MILIVOJ
+ĆIRILOVIĆ MLADEN
+ĆIRILOVIĆ OLGA
+ĆIRILOVIĆ PETAR
+ĆIRILOVIĆ VERA
+ĆIRIN DRAGOSLAV
+ĆIRIN-NOVTA VERA
+ĆIRIN SLOBODAN
+ĆIRITOVIĆ DUŠANKA
+ĆIRJAKOVIĆ GORDANA
+ĆIRJAKOVIĆ SLAVOLJUB
+ĆIRJAKOVIĆ SLOBODAN
+ĆIRKOVIĆ ĐORĐE
+ĆIRKOVIĆ CVETANKA
+ĆIRKOVIĆ IVAN
+ĆIRKOVIĆ IVAN
+ĆIRKOVIĆ JANKO
+ĆIRKOVIĆ KATICA
+ĆIRKOVIĆ MARKO
+ĆIRKOVIĆ MARTA
+ĆIRKOVIĆ MILENKO
+ĆIRKOVIĆ MIROSLAV
+ĆIRKOVIĆ NENAD
+ĆIRKOVIĆ RADMILA
+ĆIROVIĆ ŽARKO
+ĆIROVIĆ DEJAN
+ĆIROVIĆ GRUJICA
+ĆIROVIĆ MILUTIN
+ĆIROVIĆ NIKOLA
+ĆIROVIĆ VELIMIR
+ĆIROVIĆ VELIMIR
+ĆIRPANOV MIODRAG
+ĆIRUŠIĆ RAJKO
+ĆITIĆ DUŠAN
+ĆITIĆ MILOVAN
+ĆOĆKALO SIMA
+ĆOJANOVIĆ BOŽIDAR
+ĆOJANOVIĆ BORO
+ĆOJANOVIĆ MILKA
+ĆOJDER GOJKO
+ĆOMA KATARINA
+ĆOPIĆ ANDRIJA
+ĆOPIĆ EVICA
+ĆOPIĆ MIĆA
+ĆOPIĆ MILE
+ĆOPIĆ MILOŠ
+ĆOPIĆ VERA
+ĆORIĆ-ĐOKIĆ NADA
+ĆORIĆ ĐORĐE
+ĆORIĆ ĐURO
+ĆORIĆ ĐURO
+ĆORIĆ ANDRIJA
+ĆORIĆ BISERKA
+ĆORIĆ BLAGOJE
+ĆORIĆ BORA
+ĆORIĆ JOVAN
+ĆORIĆ KATARINA
+ĆORIĆ LJILJANA
+ĆORIĆ MARIJA
+ĆORIĆ MIĆO
+ĆORIĆ MIKAILO
+ĆORIĆ RAJKO
+ĆORKOVIĆ IVAN
+ĆORKOVIĆ MARKO
+ĆOROVIĆ DANILO
+ĆOROVIĆ JOVAN
+ĆOROVIĆ MIRČETA
+ĆOROVIĆ MIRO
+ĆOROVIĆ RENATA
+ĆOROVIĆ SLOBODAN
+ĆOSIĆ ŠTEFICA
+ĆOSIĆ ŽARKO
+ĆOSIĆ ŽIVANA
+ĆOSIĆ ŽIVKA
+ĆOSIĆ ALEKSANDAR
+ĆOSIĆ ALEKSANDAR
+ĆOSIĆ BOGDAN SUDIJA
+ĆOSIĆ BRANKO
+ĆOSIĆ BRANKO
+ĆOSIĆ DANICA
+ĆOSIĆ DRAGANA
+ĆOSIĆ DRAGAN
+ĆOSIĆ DRAGICA
+ĆOSIĆ DRAGICA
+ĆOSIĆ DUŠAN
+ĆOSIĆ DUŠAN
+ĆOSIĆ DUŠKO
+ĆOSIĆ FADIL
+ĆOSIĆ ILIJA
+ĆOSIĆ JELKA
+ĆOSIĆ JOVAN
+ĆOSIĆ JOVAN
+ĆOSIĆ JOVAN
+ĆOSIĆ JOZO
+ĆOSIĆ LJILJANA
+ĆOSIĆ MARIJA
+ĆOSIĆ MARIJA
+ĆOSIĆ MILAN
+ĆOSIĆ MILENA
+ĆOSIĆ MILICA
+ĆOSIĆ MIRJANA
+ĆOSIĆ MUHAMED
+ĆOSIĆ OLGA
+ĆOSIĆ PANTELIJA
+ĆOSIĆ SAVKA
+ĆOSIĆ SMILJA
+ĆOSIĆ SNEŽANA
+ĆOSIĆ STANKA
+ĆOSIĆ STOJAN
+ĆOSIĆ TODOR DIPL ING
+ĆOSIĆ VERA
+ĆOSIĆ VEROSLAV
+ĆOSIĆ VLADIMIR
+ĆOSIĆ ZORAN
+ĆOSIĆ ZORKA
+ĆOSIN DUŠAN
+ĆOSIN ZORAN
+ĆOSO GAVRILO
+ĆOSOVIĆ JELENA
+ĆOSOVIĆ MILETA
+ĆOSOVIĆ TOMISLAV
+ĆOVIĆ LAZAR
+ĆOVIN MILAN
+ĆUĆA ADAM
+ĆUĆILOVIĆ CVIJA
+ĆUĆILOVIĆ MOMČILO
+ĆUĆILOVIĆ RUŽICA
+ĆUĆUZ MARKO
+ĆUĆUZ SAŠA
+ĆUĆUZ STANKO
+ĆUBA RATKO DIPL ING
+ĆUBIĆ DUŠAN
+ĆUIĆ ILIJA
+ĆUIĆ MARA
+ĆUIĆ MILKA
+ĆUJIĆ LJUBICA
+ĆUJIĆ STEVAN
+ĆUK ĐURO
+ĆUK DRAGO
+ĆUK DUŠAN
+ĆUK DUŠAN
+ĆUK GOJKO
+ĆUK LELA
+ĆUK LUKA
+ĆUK MARA
+ĆUK MILAN DIPL ING
+ĆUK MILE
+ĆUK MILICA
+ĆUK MILKAN
+ĆUK MILORAD
+ĆUK MIROSLAV
+ĆUK NIKOLA
+ĆUK RADIVOJ
+ĆUK RATKO
+ĆUK SLOBODAN
+ĆUK TOMISLAV
+ĆUK ZORKA
+ĆUKOVIĆ MILUN
+ĆUKOVIĆ MIRA
+ĆUKOVIĆ RADOMIR DIPL ING
+ĆUKOVIĆ RADOVAN
+ĆUKOVIĆ TIHOMIRKA
+ĆUKOVIĆ ZORAN
+ĆULIĆ ĐORĐE
+ĆULIĆ JASMINKA
+ĆULIBRK BOGDAN
+ĆULIBRK DRAGAN
+ĆULIBRK DRAGAN
+ĆULIBRK DRAGOSLAV
+ĆULIBRK DUŠANKA
+ĆULIBRK DUŠAN
+ĆULIBRK GOSPAVA
+ĆULIBRK JELICA
+ĆULIBRK JELKA
+ĆULIBRK MILAN
+ĆULIBRK MILE
+ĆULIBRK MILE
+ĆULIBRK MIODRAG
+ĆULIBRK MIRKO
+ĆULIBRK MLADEN
+ĆULIBRK MOMČILO
+ĆULIBRK RADIVOJE
+ĆULIBRK RADOJKA
+ĆULIBRK RATKO
+ĆULIBRK RISTO
+ĆULIBRK SLOBODAN
+ĆULIBRK SOKA
+ĆULIBRK STEVAN
+ĆULIBRK TRIVO
+ĆULUM BRANKO
+ĆULUM GOJKO
+ĆULUM ILIJA
+ĆULUM JELICA
+ĆULUM JOVAN
+ĆULUM LAZAR
+ĆULUM MARA
+ĆULUM MARA
+ĆULUM MIHAJLO
+ĆULUM MILAN
+ĆULUM MILETA
+ĆULUM MILOŠ
+ĆULUM MIODRAG
+ĆULUM MIRKO
+ĆULUM MIRKO
+ĆULUM NADA
+ĆULUM NADA
+ĆULUM NIKOLA
+ĆULUM PERO
+ĆULUM RADE
+ĆULUM RADE
+ĆULUM SAVA
+ĆULUM SLAVKO
+ĆULUM STANKA
+ĆULUM STANKA
+ĆULUM STEVO
+ĆULUM STEVO
+ĆULUM UROŠ
+ĆULUM VASA
+ĆULUMAN STEVAN
+ĆULUMOVIĆ STJEPAN
+ĆUMUROVIĆ SLAVICA
+ĆUPIĆ DUŠAN
+ĆUPINA BRANKO
+ĆUPINA MILADIN
+ĆUPINA NOVICA
+ĆUPINA TOMISLAV DR
+ĆUPURDIJA JELENA
+ĆUPURDIJA MILAN
+ĆUPURDIJA MILOVAN
+ĆUPURDIJA SAŠA
+ĆUPURDIJA STEVAN
+ĆURČIĆ ČEDOMIR
+ĆURČIĆ ŽIVAN
+ĆURČIĆ ŽIVAN
+ĆURČIĆ ŽIVKO
+ĆURČIĆ ĐORĐE
+ĆURČIĆ ALEKSANDAR
+ĆURČIĆ ANDRIJA
+ĆURČIĆ BOŠKO
+ĆURČIĆ BOGDAN
+ĆURČIĆ BORIVOJ
+ĆURČIĆ BRANISLAV
+ĆURČIĆ BRANKO
+ĆURČIĆ BRANKO
+ĆURČIĆ BRANKO
+ĆURČIĆ DANILO
+ĆURČIĆ DESPINA
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGOMIR
+ĆURČIĆ DRAGOSLAV
+ĆURČIĆ DUŠANKA
+ĆURČIĆ DUŠAN
+ĆURČIĆ DUŠAN
+ĆURČIĆ DUŠAN
+ĆURČIĆ GEORGIJE
+ĆURČIĆ GOJKO
+ĆURČIĆ GORDANA
+ĆURČIĆ IBOJA
+ĆURČIĆ ILIJA
+ĆURČIĆ ILIJA
+ĆURČIĆ JASMINA
+ĆURČIĆ JELENA
+ĆURČIĆ JOVAN NOVINAR
+ĆURČIĆ JOVA
+ĆURČIĆ KAMENKO
+ĆURČIĆ-KASALICA BOSA
+ĆURČIĆ KATICA
+ĆURČIĆ LAZAR
+ĆURČIĆ LAZAR
+ĆURČIĆ LJILJANA
+ĆURČIĆ LJILJANA
+ĆURČIĆ LJUBIŠA
+ĆURČIĆ LJUBOMIR
+ĆURČIĆ MARA
+ĆURČIĆ MARA
+ĆURČIĆ MARIJA
+ĆURČIĆ MARIJA
+ĆURČIĆ MARIJA
+ĆURČIĆ MIHAJLO
+ĆURČIĆ MIJO
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILENA
+ĆURČIĆ MILEVA
+ĆURČIĆ MILE
+ĆURČIĆ MILE
+ĆURČIĆ MILIĆ
+ĆURČIĆ MILICA
+ĆURČIĆ MILIVOJ
+ĆURČIĆ MILORAD
+ĆURČIĆ MILORAD
+ĆURČIĆ MIODRAG
+ĆURČIĆ MIODRAG
+ĆURČIĆ MIRJANA
+ĆURČIĆ MIRJANA
+ĆURČIĆ MIRKO
+ĆURČIĆ MIROSLAV
+ĆURČIĆ MIROSLAV
+ĆURČIĆ MLADEN
+ĆURČIĆ MOMČILO
+ĆURČIĆ NADA
+ĆURČIĆ NENAD
+ĆURČIĆ NIKOLA
+ĆURČIĆ OLGA
+ĆURČIĆ OLGA
+ĆURČIĆ PAVLE
+ĆURČIĆ PETAR
+ĆURČIĆ RADE
+ĆURČIĆ RADIVOJ
+ĆURČIĆ RADMILA
+ĆURČIĆ RADMILA
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RAJKO
+ĆURČIĆ RAJKO
+ĆURČIĆ RATKA
+ĆURČIĆ RATOMIR
+ĆURČIĆ SAVA
+ĆURČIĆ SLAVICA
+ĆURČIĆ SLAVKO
+ĆURČIĆ SLOBODAN
+ĆURČIĆ SLOBODAN
+ĆURČIĆ SLOBODAN
+ĆURČIĆ STEVAN
+ĆURČIĆ STEVO
+ĆURČIĆ UROŠ
+ĆURČIĆ VASILIJE
+ĆURČIĆ VERA
+ĆURČIĆ VESELINKA
+ĆURČIĆ VUKAŠIN
+ĆURČIĆ ZDRAVKO
+ĆURČIĆ ZLATA
+ĆURČIĆ ZORAN
+ĆURČIĆ ZORAN
+ĆURČIJA SIMA
+ĆURČIN ŽIVKO
+ĆURČIN ŽIVKO
+ĆURČIN ĐORĐE
+ĆURČIN ĐURA
+ĆURČIN ALEKSANDAR
+ĆURČIN BOŽIDAR
+ĆURČIN BRANKO
+ĆURČIN DRAGOMIR
+ĆURČIN DRAGOSLAV
+ĆURČIN DRENKA
+ĆURČIN DUŠAN
+ĆURČIN DUŠAN
+ĆURČIN EMILIJA
+ĆURČIN JELENA
+ĆURČIN JELISAVETA
+ĆURČIN LJUBICA
+ĆURČIN MAKSA
+ĆURČIN MILAN
+ĆURČIN MILENA
+ĆURČIN MILORAD
+ĆURČIN MILORAD
+ĆURČIN OBRAD
+ĆURČIN PETAR
+ĆURČIN RADIVOJ
+ĆURČIN RADOSLAV
+ĆURČIN RUŽA
+ĆURČIN SARA
+ĆURČIN SVETOZAR
+ĆURČIN TODOR
+ĆURČIN VASA
+ĆURČIN VELEMIR
+ĆURČIN VELIMIR
+ĆURČIN VERICA
+ĆURČIN VUKICA
+ĆURČIN ZORA
+ĆURĆIJIĆ RATOMIR
+ĆURDIĆ JOVAN
+ĆURDIĆ VASILIJE
+ĆURDIĆ ZORAN
+ĆURGUZ ILIJA
+ĆURGUZ MILORAD
+ĆURGUZ NADA
+ĆURGUZ VERICA
+ĆURIČIĆ TATJANA
+ĆURIĆ ĐORĐE
+ĆURIĆ JOVAN
+ĆURIĆ MILAN
+ĆURIĆ MILOŠ
+ĆURIĆ MILORAD
+ĆURIĆ MILUTIN
+ĆURIĆ PELAGIJA
+ĆURIĆ SAVO
+ĆURIĆ SIMO
+ĆURIĆ SINIŠA
+ĆURIĆ SUZANA
+ĆURIĆ VLADISLAV
+ĆURKOVIĆ ŠPIRO
+ĆURKOVIĆ-ĐORĐEVIĆ MIOMIRA
+ĆURKOVIĆ KATICA
+ĆURLIBRK BOSILJKA
+ĆURUVIJA BRANKO
+ĆURUVIJA NIKOLA
+ĆURUVIJA NIKOLA
+ĆURUVIJA VLADO
+ĆUTILO STEVO
+ĆUZOVIĆ BRANE
+ĆUZOVIĆ DRAGOLJUB
+ĆUZOVIĆ DRAGOLJUB
+ĆUZOVIĆ GORAN
+ĆUZOVIĆ MIRKO
+ŽABALJAC VOJISLAV
+ŽABIĆ GORAN
+ŽABIĆ LJUBOMIR
+ŽABULJAC PAVLE
+ŽAFRAN MARTIN
+ŽAGAR DRAGAN
+ŽAGAR ERNEST
+ŽAGAR IVAN
+ŽAGAR JOVAN
+ŽAGAR LJILJA
+ŽAGAR MARIJA
+ŽAGAR MATIJA
+ŽAGAR PAVAO
+ŽAGAR RADOSLAVA
+ŽAJA TOMISLAV
+ŽAJAČKO ŽELJKO
+ŽAK DRAGUTIN
+ŽAKIĆ LJUBICA
+ŽAKIĆ MARIJA
+ŽAKIĆ MIODRAG
+ŽAKIĆ MLADEN
+ŽAKIĆ VERA
+ŽAKIĆ VLADIMIR
+ŽAKIĆ VOJISLAV
+ŽAKULA ARANKA
+ŽAKULA BORISLAV
+ŽAKULA MILAN
+ŽAKULA MILAN
+ŽAKULA MIODRAG
+ŽAKULA MIRA
+ŽAKULA RADIVOJ DR PROF
+ŽAKULA ZORA
+ŽAMBOKI MARIJA
+ŽAMBOKI VERONA
+ŽARČANIN BRANKO
+ŽARČANIN PREDRAG
+ŽARIN RADOJICA
+ŽARIN SINIŠA
+ŽARIN-TABAK NATALIJA
+ŽARIN VESELIN
+ŽARKO LADISLAV
+ŽARKO MIHAJLO
+ŽARKOV DUŠAN
+ŽARKOV KOSTA
+ŽARKOV LJILJANA
+ŽARKOV VESELKA
+ŽARKOV ZLATOJE
+ŽARKOVAČKI ILIJA
+ŽARKOVAČKI MIRKO
+ŽARKOVIĆ ŽARKO
+ŽARKOVIĆ DANILO
+ŽARKOVIĆ DANILO
+ŽARKOVIĆ DRAGOJE DR PROF
+ŽARKOVIĆ GOJKO
+ŽARKOVIĆ GOJKO
+ŽARKOVIĆ JOVAN
+ŽARKOVIĆ JOVAN
+ŽARKOVIĆ MILENA
+ŽARKOVIĆ MIODRAG
+ŽARKOVIĆ MIODRAG
+ŽARKOVIĆ MIRKO
+ŽARKOVIĆ NEBOJŠA
+ŽARKOVIĆ NENAD
+ŽARKOVIĆ NENAD
+ŽARKOVIĆ NOVICA
+ŽARKOVIĆ RISTO
+ŽARKOVIĆ RISTO
+ŽARKOVIĆ SLAVKO
+ŽARKOVIĆ VLAJKO
+ŽARKOVIĆ ZDRAVKO
+ŽARKOVIĆ ZDRAVKO
+ŽARKOVIĆ ZORA
+ŽDERIĆ JELICA
+ŽDERIĆ MARIJA
+ŽDERIĆ MILAN
+ŽDERIĆ MILENKO
+ŽDERO DRAGINJA
+ŽDERO DUŠICA
+ŽDERO GOJKO
+ŽDERO MARINKO
+ŽDERO PETAR
+ŽDERO PETAR
+ŽDERO RADOMIR
+ŽDRALE RADOVAN
+ŽDRALIĆ VASO
+ŽDRNJA MILAN
+ŽDRNJA MILAN
+ŽDRNJA MIRKO
+ŽDRNJA NEĐO
+ŽDRNJA NEĐO
+ŽDRNJA SIMO
+ŽEŽELJ BRANKO
+ŽEŽELJ MILAN
+ŽEŽELJ MILAN
+ŽEŽELJ SAVA
+ŽEŽELJ SVETISLAV
+ŽEBELJAN MILENA
+ŽEBELJAN MILENKO
+ŽEBELJAN MILORAD
+ŽEBELJAN MITA
+ŽEBELJAN NEDELJKO
+ŽEBERAN ANĐELKA
+ŽEGARAC ĐORĐE
+ŽEGARAC DANICA
+ŽEGARAC DUŠAN
+ŽEGARAC LAZAR
+ŽEGARAC MILAN
+ŽEGARAC MILENKO
+ŽEGARAC MIRJANA
+ŽEGARAC STEVAN
+ŽEGARAC VOJISLAV
+ŽEKIĆ ŽIVKO
+ŽEKIĆ BOŠKO
+ŽEKIĆ RADISLAV
+ŽEKIĆ RUŽA
+ŽEKIĆ ZORAN
+ŽELEM STEVAN
+ŽELER ĐURĐEVKA
+ŽELEZEN JOSIP
+ŽELI ANDRAŠ
+ŽELI IŠTVAN
+ŽELI KATARINA
+ŽELI SILVESTER
+ŽEMBERI ŠANDOR
+ŽEMBERI JOSIP
+ŽEMBERI ROBERT
+ŽEMBERI ROBERT
+ŽENER KARLO
+ŽENILO BOŽIDAR
+ŽERAJIĆ GAVRILO
+ŽERAVICA DAMJAN
+ŽERAVICA MILADIN
+ŽERAVICA NADA
+ŽERAVICA STANOJE
+ŽERAVLJEV ILIJA
+ŽERIĆ IRMA
+ŽESTIĆ ŠTEFANIJA
+ŽIŽA NADA
+ŽIŽAKIĆ SAVA
+ŽIŽAKOV DRAGOLJUB
+ŽIŽAKOV KATICA
+ŽIŽAKOV MILOŠ
+ŽIŽAKOV PAVLE
+ŽIŽAKOV VELINKA
+ŽIŽAKOV VITOMIR
+ŽIŽAKOV VLADA
+ŽIŽAKOV VLADIMIR
+ŽIŽIĆ ČEDOMIR
+ŽIŽIĆ ANĐELIJA
+ŽIŽIĆ BRANISLAV
+ŽIŽIĆ DRAGAN
+ŽIŽIĆ MILORAD
+ŽIŽIĆ VESELIN
+ŽIŽOVIĆ SLOBODANKA
+ŽIBREG ALEKSANDAR
+ŽIBREG IVANA
+ŽIDEK JOSIP
+ŽIDIŠIĆ ZORAN
+ŽIGA JELENA
+ŽIGA KARLO
+ŽIGA MIRKO
+ŽIGA MUSTAFA
+ŽIGALAC VERONA
+ŽIGIĆ BOGDAN
+ŽIGIĆ BRANKO
+ŽIGIĆ DANICA
+ŽIGIĆ DIMITRIJE
+ŽIGIĆ DUŠAN
+ŽIGIĆ JULIJA
+ŽIGIĆ LJUBIŠA
+ŽIGIĆ MILAN
+ŽIGIĆ MILAN
+ŽIGIĆ MILAN
+ŽIGIĆ MILEVA
+ŽIGIĆ MILKA
+ŽIGIĆ MIRKO
+ŽIGIĆ NEDELJKO
+ŽIGIĆ NIKOLA
+ŽIGIĆ PETAR
+ŽIGIĆ PETAR
+ŽIGIĆ PETAR
+ŽIGIĆ RADE
+ŽIGIĆ RADOSLAV
+ŽIGIĆ SAVKA
+ŽIGIĆ VOJIN
+ŽIGMOND BELA
+ŽIGMOND BRANKA
+ŽIGRAI ĐORĐE
+ŽIGRAI IŠTVAN MR
+ŽIGRAI JOVAN
+ŽIGRI JOSIP
+ŽIGRI LJUBICA
+ŽIGRI MIRKO
+ŽIGURSKI PAVLE
+ŽIHA MARIJA
+ŽIHLAVSKI JULKA
+ŽIJIĆ VUKOSAVA
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ALEKSANDAR
+ŽIKIĆ DIMITRIJE
+ŽIKIĆ DOBRILA
+ŽIKIĆ DRAGAN
+ŽIKIĆ DUŠAN
+ŽIKIĆ JOVANKA
+ŽIKIĆ JOVAN
+ŽIKIĆ JOVAN
+ŽIKIĆ KATICA
+ŽIKIĆ LJUBICA
+ŽIKIĆ MARICA
+ŽIKIĆ MARIJA
+ŽIKIĆ MIHAJLO
+ŽIKIĆ MILAN
+ŽIKIĆ MILORAD DR
+ŽIKIĆ NEVENA
+ŽIKIĆ NIKOLA
+ŽIKIĆ NIKOLA
+ŽIKIĆ OLGA
+ŽIKIĆ OLIVERA
+ŽIKIĆ RADIVOJ
+ŽIKIĆ RADOMIR
+ŽIKIĆ SLOBODAN
+ŽIKIĆ SOFIJA
+ŽIKIĆ TAMARA
+ŽIKIĆ TIHOMIR DIPL ING
+ŽIKIĆ TODOR
+ŽIKIĆ VASA
+ŽIKIĆ-VASIĆ TAMARA
+ŽIKIĆ VELIMIR
+ŽIKIĆ VERA
+ŽIKIĆ VERICA
+ŽIKIĆ VITOMIR
+ŽIKIĆ VLADIMIR
+ŽIKOVIĆ NENAD
+ŽILEVSKI KRSTO
+ŽILIĆ MILENKO
+ŽILIĆ MIROSLAV
+ŽILIĆ STOJAN
+ŽILNIK ĐURA
+ŽILNIK ĐURA
+ŽILNIK PAVLE DIPL ING
+ŽILNIK-PETROVIĆ ŽELIMIR
+ŽINIĆ MARINA
+ŽIRAVAC STEVAN
+ŽIRKA PAVEL
+ŽIROŠ MIRON
+ŽIROVNIK ANTON
+ŽIVČIĆ SVETLANA
+ŽIVALJEVIĆ DRAGOMIR
+ŽIVALJEVIĆ GORAN
+ŽIVALJEVIĆ OLGA
+ŽIVALJEVIĆ STANA
+ŽIVANČEV ILIJA
+ŽIVANČEV JOVAN
+ŽIVANČEV KASA DIPL ING
+ŽIVANČEV MIKA
+ŽIVANČEV MILAN
+ŽIVANČEV MILAN
+ŽIVANČEV PAJA
+ŽIVANČEV RADA
+ŽIVANČEV RANKO
+ŽIVANČEV STEVAN
+ŽIVANČEV STRAHINJA
+ŽIVANČEVIĆ LAZAR
+ŽIVANČEVIĆ MILJKO
+ŽIVANČEVIĆ MILORAD DR
+ŽIVANČEVIĆ SLOBODAN
+ŽIVANČEVIĆ VELIMIR
+ŽIVANAC DEJAN
+ŽIVANAC DEJAN
+ŽIVANAC LAZAR
+ŽIVANAC ZORICA
+ŽIVANIĆ ĐOKA
+ŽIVANIĆ MIHAJLO
+ŽIVANIĆ MILAN
+ŽIVANIĆ MILORAD
+ŽIVANIĆ MITAR
+ŽIVANIĆ PREDRAG
+ŽIVANIĆ VLADIMIR
+ŽIVANIĆ ZORAN
+ŽIVANKIĆ EVICA
+ŽIVANKOV IGNJAT
+ŽIVANOV ŽARKO
+ŽIVANOV ŽIVAN
+ŽIVANOV ŽIVKO
+ŽIVANOV ANĐELIJA
+ŽIVANOV BOGOLJUB
+ŽIVANOV BRANKO
+ŽIVANOV DANICA
+ŽIVANOV DIMITRIJE
+ŽIVANOV DOBRILA
+ŽIVANOV DOBRIVOJ
+ŽIVANOV DRAGOJLA
+ŽIVANOV DRAGOSLAV
+ŽIVANOV DRAGOSLAV
+ŽIVANOV DUŠAN
+ŽIVANOV GOROSLAVA
+ŽIVANOV JUSTINA
+ŽIVANOV LAZAR
+ŽIVANOV LAZAR
+ŽIVANOV LEPOSAVA
+ŽIVANOV LJUBICA
+ŽIVANOV MAGDA
+ŽIVANOV MAKSIN
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MILAN
+ŽIVANOV MILETA
+ŽIVANOV MILIVOJ
+ŽIVANOV MILOŠ
+ŽIVANOV MILOŠ
+ŽIVANOV MILORAD
+ŽIVANOV MIODRAG
+ŽIVANOV MIOMIR
+ŽIVANOV MITA
+ŽIVANOV MLADEN
+ŽIVANOV MLADEN
+ŽIVANOV MLADEN
+ŽIVANOV MOMIR
+ŽIVANOV NATAŠA
+ŽIVANOV NIKOLA
+ŽIVANOV PAVICA
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV RADIŠA
+ŽIVANOV RAJKO
+ŽIVANOV SAVA
+ŽIVANOV SLAVKO
+ŽIVANOV SRĐAN
+ŽIVANOV SRBISLAV
+ŽIVANOV STANISLAV
+ŽIVANOV SVETOZAR
+ŽIVANOV TODOR
+ŽIVANOV TOMISLAV
+ŽIVANOV TUGOMIR
+ŽIVANOV VELIMIR
+ŽIVANOV VLADIMIR
+ŽIVANOV VLADIMIR
+ŽIVANOV VOJISLAV
+ŽIVANOV ZLATINKA
+ŽIVANOVIĆ ŽARKO
+ŽIVANOVIĆ ŽIKA
+ŽIVANOVIĆ ŽIVAN
+ŽIVANOVIĆ ŽIVOJIN DIPL PRAVNIK
+ŽIVANOVIĆ ŽIVOJIN
+ŽIVANOVIĆ ĐORĐE
+ŽIVANOVIĆ ALEKSANDAR
+ŽIVANOVIĆ ALEKSANDAR
+ŽIVANOVIĆ ALEKSIJA
+ŽIVANOVIĆ ANKICA
+ŽIVANOVIĆ BOŠKO
+ŽIVANOVIĆ BOŠKO
+ŽIVANOVIĆ BOGDAN
+ŽIVANOVIĆ BORKA
+ŽIVANOVIĆ BUDIMKA
+ŽIVANOVIĆ DRAGIŠA
+ŽIVANOVIĆ DRAGOLJUB
+ŽIVANOVIĆ DRAGOSLAV
+ŽIVANOVIĆ JADRANKA
+ŽIVANOVIĆ JELENA
+ŽIVANOVIĆ JOVAN
+ŽIVANOVIĆ JOVAN
+ŽIVANOVIĆ LAZAR
+ŽIVANOVIĆ-LEŠ DUŠICA
+ŽIVANOVIĆ LJILJANA
+ŽIVANOVIĆ MARICA
+ŽIVANOVIĆ MARIJA
+ŽIVANOVIĆ MILAN
+ŽIVANOVIĆ MILISAV
+ŽIVANOVIĆ MILIVOJ
+ŽIVANOVIĆ MILOŠ
+ŽIVANOVIĆ MILORAD
+ŽIVANOVIĆ MILOVAN
+ŽIVANOVIĆ MIODRAG DR
+ŽIVANOVIĆ MIODRAG
+ŽIVANOVIĆ MIRJANA
+ŽIVANOVIĆ MOMČILO
+ŽIVANOVIĆ NOVICA
+ŽIVANOVIĆ OBRAD
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ RADA
+ŽIVANOVIĆ RADMILA
+ŽIVANOVIĆ SLAVKA
+ŽIVANOVIĆ SLAVKO
+ŽIVANOVIĆ STEVAN
+ŽIVANOVIĆ TOMISLAV
+ŽIVANOVIĆ VIDOJE
+ŽIVANOVIĆ VLADIMIR
+ŽIVANOVIĆ VLADISLAV
+ŽIVANOVIĆ VOJISLAV
+ŽIVANOVIĆ ZORAN
+ŽIVANOVIĆ ZORAN
+ŽIVANOVIĆ ZORKA
+ŽIVIĆ ĐORĐE
+ŽIVIĆ ĐORĐE
+ŽIVIĆ BOŽIDAR
+ŽIVIĆ GAVRA
+ŽIVIĆ JEFTA
+ŽIVIĆ JELICA
+ŽIVIĆ JOVAN
+ŽIVIĆ LAZAR
+ŽIVIĆ LJUBICA
+ŽIVIĆ RADOJICA
+ŽIVIĆ SAVA
+ŽIVIĆ SAVA
+ŽIVIĆ SMILJA
+ŽIVIĆ SPASOJE
+ŽIVIĆ VELIBOR
+ŽIVIĆ VINKA DR
+ŽIVIĆ ZORKA
+ŽIVIN NADA
+ŽIVKANOVIĆ JOVAN
+ŽIVKIĆ STEVAN
+ŽIVKOV ĐORĐE
+ŽIVKOV ANĐELKA
+ŽIVKOV ANĐELKA
+ŽIVKOV BORISLAVA
+ŽIVKOV BRANISLAV
+ŽIVKOV DRAGINJA
+ŽIVKOV DRAGOLJUB
+ŽIVKOV DUŠKO
+ŽIVKOV ESTER
+ŽIVKOV GRADIMIR
+ŽIVKOV IVAN
+ŽIVKOV KOSTA
+ŽIVKOV MARKO
+ŽIVKOV MELANIJA
+ŽIVKOV NENAD
+ŽIVKOV PAVLE
+ŽIVKOV RADOJKA
+ŽIVKOV SAVA
+ŽIVKOV SAVA
+ŽIVKOV SLAVKO
+ŽIVKOV SLAVKO
+ŽIVKOV VASA
+ŽIVKOVIĆ ČASLAV
+ŽIVKOVIĆ ŽAKLINA
+ŽIVKOVIĆ ŽIVKA
+ŽIVKOVIĆ ŽIVOJIN
+ŽIVKOVIĆ ĐOKA
+ŽIVKOVIĆ ĐORĐE
+ŽIVKOVIĆ ĐORĐE
+ŽIVKOVIĆ AJKA
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALOJZIJA
+ŽIVKOVIĆ ANĐELKA
+ŽIVKOVIĆ BLAŠKO
+ŽIVKOVIĆ BOGDAN
+ŽIVKOVIĆ BOGDAN
+ŽIVKOVIĆ BOGOLJUB
+ŽIVKOVIĆ BOGOMIR
+ŽIVKOVIĆ BOGOMIR
+ŽIVKOVIĆ BORISLAV
+ŽIVKOVIĆ BORISLAV
+ŽIVKOVIĆ BORO
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANKA DR
+ŽIVKOVIĆ BRANKO
+ŽIVKOVIĆ DANILO
+ŽIVKOVIĆ DEJAN
+ŽIVKOVIĆ DIMITRIJE
+ŽIVKOVIĆ DIMITRIJE
+ŽIVKOVIĆ DOBROSAV
+ŽIVKOVIĆ DRAGANA
+ŽIVKOVIĆ DRAGANA
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGIŠA DR
+ŽIVKOVIĆ DRAGIŠA
+ŽIVKOVIĆ DRAGIĆ
+ŽIVKOVIĆ DRAGOLJUB
+ŽIVKOVIĆ DUŠANKA
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠICA
+ŽIVKOVIĆ GABRIJELA
+ŽIVKOVIĆ GABRIJELA
+ŽIVKOVIĆ GORAN
+ŽIVKOVIĆ GORDANA
+ŽIVKOVIĆ ILIJA
+ŽIVKOVIĆ ILIJA
+ŽIVKOVIĆ ILONKA
+ŽIVKOVIĆ IVANKA
+ŽIVKOVIĆ IVICA
+ŽIVKOVIĆ JASMINA
+ŽIVKOVIĆ JELICA
+ŽIVKOVIĆ JELICA
+ŽIVKOVIĆ JOVAN
+ŽIVKOVIĆ JOVAN
+ŽIVKOVIĆ JOVICA
+ŽIVKOVIĆ JULKA
+ŽIVKOVIĆ JULKA
+ŽIVKOVIĆ JULKICA
+ŽIVKOVIĆ KOSTA
+ŽIVKOVIĆ KREŠO
+ŽIVKOVIĆ LAZAR
+ŽIVKOVIĆ LAZAR
+ŽIVKOVIĆ LEPOSAVA
+ŽIVKOVIĆ LJILJANA
+ŽIVKOVIĆ LJUBICA
+ŽIVKOVIĆ LJUBINKA
+ŽIVKOVIĆ LJUBOMIR
+ŽIVKOVIĆ LJUBOMIR
+ŽIVKOVIĆ MARIJA
+ŽIVKOVIĆ MIHAJLO
+ŽIVKOVIĆ MILANKA
+ŽIVKOVIĆ MILAN
+ŽIVKOVIĆ MILICA
+ŽIVKOVIĆ MILIVOJ
+ŽIVKOVIĆ MILKA
+ŽIVKOVIĆ MILKA
+ŽIVKOVIĆ MILOŠ
+ŽIVKOVIĆ MILOŠ
+ŽIVKOVIĆ MILOMIR
+ŽIVKOVIĆ MILORAD
+ŽIVKOVIĆ MILORAD
+ŽIVKOVIĆ MILUTIN
+ŽIVKOVIĆ MIODRAG
+ŽIVKOVIĆ MIRČETA
+ŽIVKOVIĆ MIRJANA
+ŽIVKOVIĆ MIRKO
+ŽIVKOVIĆ MIROSLAV
+ŽIVKOVIĆ MIROSLAV
+ŽIVKOVIĆ MOMČILO
+ŽIVKOVIĆ NEBOJŠA
+ŽIVKOVIĆ NEBOJŠA
+ŽIVKOVIĆ NEDELJKO
+ŽIVKOVIĆ NIKOLA
+ŽIVKOVIĆ OBRAD
+ŽIVKOVIĆ PAVLE
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ RADENKO
+ŽIVKOVIĆ RADE
+ŽIVKOVIĆ RADIVOJ
+ŽIVKOVIĆ RADMILA
+ŽIVKOVIĆ RADMILO
+ŽIVKOVIĆ RADOMIR
+ŽIVKOVIĆ RADOSLAVA
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ ROSA
+ŽIVKOVIĆ RUŽICA
+ŽIVKOVIĆ SAŠA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SINIŠA
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLOBODAN DR
+ŽIVKOVIĆ SLOBODAN
+ŽIVKOVIĆ SMILJKA
+ŽIVKOVIĆ SNEŽANA
+ŽIVKOVIĆ SRETEN
+ŽIVKOVIĆ STAMENKO
+ŽIVKOVIĆ STEPAN
+ŽIVKOVIĆ STEVAN
+ŽIVKOVIĆ STOJANKA
+ŽIVKOVIĆ STOJAN
+ŽIVKOVIĆ STOJAN
+ŽIVKOVIĆ SVETISLAV
+ŽIVKOVIĆ SVETLANA
+ŽIVKOVIĆ SVETOZAR
+ŽIVKOVIĆ TANASIJE
+ŽIVKOVIĆ TINKA
+ŽIVKOVIĆ TOŠA
+ŽIVKOVIĆ TOMISLAV
+ŽIVKOVIĆ TOMISLAV
+ŽIVKOVIĆ VEKOSLAV
+ŽIVKOVIĆ VERA
+ŽIVKOVIĆ VERA
+ŽIVKOVIĆ VIDOJKO
+ŽIVKOVIĆ VLADAN
+ŽIVKOVIĆ VLADIMIR
+ŽIVKOVIĆ VLASTIMIR
+ŽIVKOVIĆ VOJIN
+ŽIVKOVIĆ VOJISLAV
+ŽIVKOVIĆ ZDENKA
+ŽIVKOVIĆ ZDENKO
+ŽIVKOVIĆ ZDRAVKO
+ŽIVKOVIĆ ZLATOMIR
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVLJEVIĆ VIDOSAVA
+ŽIVKUCIN MIROSLAVA
+ŽIVKUCIN SLOBODAN
+ŽIVNI ANA
+ŽIVNI FRANJA
+ŽIVOJINOV BORIVOJ
+ŽIVOJINOV LJUBICA
+ŽIVOJINOV MILOVAN
+ŽIVOJINOV RADIVOJ
+ŽIVOJINOVIĆ ROZALIJA
+ŽIVOJINOVIĆ VLADIMIR
+ŽIVOJNOV BRANISLAV
+ŽIVOJNOV MIROSLAV
+ŽIVOJNOVIĆ ŽIVOJIN
+ŽIVOJNOVIĆ SANJA
+ŽIVOJNOVIĆ SRĐAN DR LEKAR
+ŽIVOJNOVIĆ ZORKA
+ŽIVOTIĆ ANGELINA
+ŽIVOTIĆ DUŠAN
+ŽIVOTIĆ STANISLAV
+ŽIVOTIĆ STEVAN
+ŽIVOTIĆ VELIMIR
+ŽIVOTIN MARICA
+ŽIVOTIN MITAR
+ŽMUKIĆ BRANKO
+ŽMUKIĆ GORDANA
+ŽMUKIĆ NIKOLA
+ŽNIDARŠIĆ IGNAC
+ŽNIDAREC IVAN
+ŽNIDAREC IVAN
+ŽOLCER FERENC
+ŽOLCER VILMOŠ
+ŽOLJOM KLARA
+ŽOLJOM MIRJANA
+ŽORŽ ALEKSANDAR
+ŽORIĆ FILIP
+ŽUŽA MIRKO
+ŽUBORI MILENA
+ŽUGIĆ DRAGOLJUB
+ŽUGIĆ KRSTO
+ŽUGIĆ MARIJA
+ŽUGIĆ MILIJA
+ŽUGIĆ MILISAV
+ŽUGIĆ MILORAD
+ŽUGIĆ MIRKO
+ŽUGIĆ RADOJKA
+ŽUGIĆ RATKO
+ŽUGIĆ-RIJAVEC SILVIJA
+ŽUGIĆ STANIŠA
+ŽUGIĆ STANKO
+ŽUJIĆ MOMIR
+ŽUJIĆ SLAVKO
+ŽUJO MARJAN
+ŽUMBERKOVIĆ ĐORĐE MR
+ŽUNAC JULKA
+ŽUNAC TOMISLAV
+ŽUNGUL SMILJA
+ŽUNIĆ BOŠKO
+ŽUNIĆ DARKO
+ŽUNIĆ JOVIŠA
+ŽUNIĆ MILAN
+ŽUNIĆ MILENKO
+ŽUNIĆ MILIJAN
+ŽUNIĆ MOMČILO
+ŽUNIĆ NENAD
+ŽUNIĆ-POPOV SNEŽANA
+ŽUNIĆ RADA
+ŽUNIĆ SIMA
+ŽUNIĆ SONJA
+ŽUNIĆ VELIMIR
+ŽUNJIĆ DRAGOMIR
+ŽUNTER ANTUN DIPL ING
+ŽUNTER BOŽANA
+ŽUPAN EDUARD
+ŽUPAN MIRKO
+ŽUPANČIĆ MARGARETA
+ŽUPANEC ALBERT DR
+ŽUPANEC KSENIJA
+ŽUPANEC MIRA
+ŽUPANEC MIRA
+ŽUPARIĆ VIKTOR
+ŽUPIĆ ANTE
+ŽUPIĆ DANE
+ŽUPIĆ DRAGICA
+ŽUPIĆ MIJO
+ŽUPUNSKI ŽARKO
+ŽUPUNSKI ŽIVORAD
+ŽUPUNSKI GOJKO
+ŽUPUNSKI GROZDANA
+ŽUPUNSKI GRUJICA
+ŽUPUNSKI HELENA
+ŽUPUNSKI IVAN
+ŽUPUNSKI MARINKO
+ŽUPUNSKI STEVAN
+ŽUPUNSKI VESELINKA
+ŽURŽEVIĆ CVETKO
+ŽURŽINOVIĆ KOSTA
+ŽURŽOVAN LIA
+ŽURŽOVAN NELU
+ŽURŽOVAN TRANDAFIR
+ŽURŽUL BOŠKO
+ŽURŽUL STANOJE
+ŽURIĆ MIHAILO
+ŽURIĆ VASO
+ŽURKA AURORA
+ŽUTIĆ MILKA
+ŽUTIĆ PETAR
+ŽUTIĆ STEVO
+ĐAČANIN RADOVAN
+ĐAČIĆ VLADIMIR
+ĐAIĆ MIROSLAV
+ĐAJIĆ ŽARKO
+ĐAJIĆ ŽELJKO
+ĐAJIĆ ALEKSANDRA
+ĐAJIĆ BOGDAN
+ĐAJIĆ JELENKO
+ĐAJIĆ-JOVANOVIĆ RAJKA
+ĐAJIĆ MILORAD
+ĐAJIĆ NADA
+ĐAJIĆ NEVENA
+ĐAJIĆ NIKOLA
+ĐAJIĆ VELJKO
+ĐAJIĆ VLADISLAVA
+ĐAKONOV MILKA
+ĐAKONOV STEVAN
+ĐAKONOVIĆ MILOVAN
+ĐAKONOVIĆ SLAVICA
+ĐAKONOVIĆ STEVAN
+ĐAKOV LJILJANA
+ĐAKOV MIHAJLO
+ĐAKOV MILAN
+ĐAKOVIĆ ŽIVKA
+ĐAKOVIĆ ĐORĐE DR
+ĐAKOVIĆ ĐORĐE
+ĐAKOVIĆ ĐORĐE
+ĐAKOVIĆ ĐURA
+ĐAKOVIĆ ĐURO
+ĐAKOVIĆ ĐURO
+ĐAKOVIĆ ANKA
+ĐAKOVIĆ DARA
+ĐAKOVIĆ DRAGAN
+ĐAKOVIĆ DRAGAN
+ĐAKOVIĆ DRAGOLJUB DR
+ĐAKOVIĆ DRAGOLJUB
+ĐAKOVIĆ DUŠAN
+ĐAKOVIĆ ILE
+ĐAKOVIĆ ILIJA
+ĐAKOVIĆ JOKA
+ĐAKOVIĆ JOVANKA
+ĐAKOVIĆ JOVAN
+ĐAKOVIĆ JOVICA
+ĐAKOVIĆ JOVO
+ĐAKOVIĆ LJUBOMIR DR ING
+ĐAKOVIĆ LJUBOMIR
+ĐAKOVIĆ MARIJA
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILKA
+ĐAKOVIĆ MIRJANA
+ĐAKOVIĆ MIRJANA
+ĐAKOVIĆ NEĐO
+ĐAKOVIĆ NEDELJKO
+ĐAKOVIĆ NIKOLA
+ĐAKOVIĆ OSTOJA
+ĐAKOVIĆ PERSIDA
+ĐAKOVIĆ PETAR
+ĐAKOVIĆ PREDRAG
+ĐAKOVIĆ PREDRAG
+ĐAKOVIĆ RADOMIR
+ĐAKOVIĆ RADOSAV
+ĐAKOVIĆ RANKO
+ĐAKOVIĆ SAVA
+ĐAKOVIĆ SLAVICA
+ĐAKOVIĆ SLAVOLJUB
+ĐAKOVIĆ SLOBODAN
+ĐAKOVIĆ STEVAN
+ĐAKOVIĆ STEVAN
+ĐAKOVIĆ STOJAN
+ĐAKOVIĆ TATJANA
+ĐAKOVIĆ VASO
+ĐAKOVIĆ VLADIMIR
+ĐAKOVIĆ VOJO
+ĐAKOVIĆ VUKOSAVA
+ĐAKOVIĆ ZORAN
+ĐALAI LAJOŠ
+ĐALINAC GORDANA
+ĐALINAC RADIVOJ
+ĐALO MIRKO
+ĐALOVIĆ RADOSLAV
+ĐALUŠ STEVAN
+ĐAN JOVAN
+ĐANIŠ LAZAR
+ĐANIŠ OLIVERA
+ĐANIĆ MATO
+ĐANKOVIĆ MILOŠ
+ĐANTAR ANĐELIJA
+ĐANTAR JOŽEF
+ĐAPA ALEKSANDAR
+ĐAPA DUŠAN
+ĐAPA MARKO
+ĐAPA PETAR
+ĐAPIĆ DAVID
+ĐAPIĆ KRSTA
+ĐAPIĆ MILESA
+ĐAPIĆ MILESA
+ĐAPIĆ-MILIĆ TATJANA LEKAR
+ĐAPIĆ PAVLE
+ĐARMATI FRANJA
+ĐARMATI GIZELA
+ĐARMATI ILONA
+ĐARMATI JULIO
+ĐARMATI LASLO
+ĐARMATI MIHAJLO
+ĐARMATI SNEŽANA
+ĐATKOV RADA
+ĐEBNAR OBRAD
+ĐEKER ROZALIJA
+ĐEKIĆ ŽIVOJIN
+ĐEKIĆ KATICA
+ĐEKIĆ MILAN
+ĐEKIĆ MILENA
+ĐEKIĆ MILOMIR
+ĐEKIĆ NADA
+ĐEKIĆ NEDELJKO
+ĐEKIĆ PAVLE
+ĐEKIĆ RADE
+ĐEKIĆ RADMILA
+ĐEKIĆ STANA
+ĐEKIĆ STOJANKA
+ĐELIĆ UROŠ
+ĐEMBER IŠTVAN
+ĐEMROVSKI TOMAŠ
+ĐEMROVSKI VLATKO
+ĐEMROVSKI ZDENKO
+ĐENADIĆ DRAGIŠA
+ĐENADIJA PETAR
+ĐENDIĆ JOVAN DIPL ING
+ĐENDIĆ LAZAR
+ĐENEŠ PETAR
+ĐENGE ANDRAŠ
+ĐENGE ANDRIJA
+ĐENGE PETER
+ĐENIĆ JELENA
+ĐENIĆ SLOBODAN
+ĐENIĆ SLOBODAN
+ĐENIĆ ZORICA
+ĐENISIĆ STANIMIR
+ĐERĐ ĐURA
+ĐERĐ ANTUN
+ĐERĐ IGOR
+ĐERĐ JOSIP
+ĐERĐ KATARINA
+ĐERĐ LJUBICA
+ĐERĐ PETAR
+ĐERĐ VILMOŠ
+ĐERE KORNEL
+ĐERE ZOLTAN
+ĐERFI ALEKSANDAR
+ĐERI ŠANDOR
+ĐERI ENDRE
+ĐERI ERŽEBET
+ĐERI GEZA
+ĐERI KAROLJ
+ĐERI LADISLAV
+ĐERI LASLO
+ĐERI SABOLČ
+ĐERI SALOME
+ĐERIĆ ŽIVAN
+ĐERIĆ ĐORĐE
+ĐERIĆ ĐURA
+ĐERIĆ BRANKO
+ĐERIĆ DANICA
+ĐERIĆ DESANKA
+ĐERIĆ DIMITRIJE
+ĐERIĆ DOBRINKO
+ĐERIĆ DRAGAN
+ĐERIĆ FELIKS
+ĐERIĆ JAROSLAV
+ĐERIĆ JOVAN
+ĐERIĆ JOVAN
+ĐERIĆ JULKA
+ĐERIĆ MICA
+ĐERIĆ MIHAJLO
+ĐERIĆ MILAN
+ĐERIĆ MILENKO
+ĐERIĆ MILE
+ĐERIĆ MILIVOJE
+ĐERIĆ MILOŠ
+ĐERIĆ MIODRAG
+ĐERIĆ MIRJANA
+ĐERIĆ NADA
+ĐERIĆ OLGA
+ĐERIĆ OLIVERA
+ĐERIĆ PETAR
+ĐERIĆ RADE
+ĐERIĆ RADIVOJ
+ĐERIĆ RADOMIR
+ĐERIĆ RADOSLAV
+ĐERIĆ RADOVAN
+ĐERIĆ SLAVKO
+ĐERIĆ STANISLAV
+ĐERIĆ VELJKO
+ĐERIĆ VOJIN
+ĐERKI VERA
+ĐERKOVIĆ MIRČETA
+ĐERKOVIĆ RADOJKA
+ĐERKOVIĆ VLADETA
+ĐERMAN ŽIVKO
+ĐERMAN NEDELJKO
+ĐERMANOV IVAN
+ĐERMANOV LJUBOMIR
+ĐERMANOV MILAN
+ĐERMANOV MILENA
+ĐERMANOV NADEŽDA
+ĐERMANOV OLGA
+ĐERMANOV PETAR
+ĐERMANOV TODOR
+ĐERMANOV VLADA
+ĐERMANOVIĆ JELICA
+ĐERMANOVIĆ MARIJA
+ĐERMANOVIĆ MILODANKA
+ĐERMANOVIĆ SLAVKO
+ĐERMANOVIĆ STANKO
+ĐERMATI IRENA
+ĐETKA JANO
+ĐETKA MIHAL
+ĐETKA MIHAL
+ĐETKA MIRKO
+ĐETVAI ANDRAŠ DIPL ING
+ĐETVAI ANDRAŠ
+ĐETVAI ANICA
+ĐETVAI FERENC
+ĐETVAI IMRE
+ĐETVAI LAJOŠ
+ĐEVEKI JOVAN
+ĐIDIĆ MARIJA
+ĐIDIĆ MARINKO
+ĐIKIĆ STOJAN
+ĐIKIĆ VIKTORIJA
+ĐILAS BORO
+ĐILAS DRAGAN
+ĐILAS DUŠAN
+ĐILAS GROZDANA
+ĐILAS MARINKO
+ĐILAS MILORAD
+ĐILAS MILORAD
+ĐILAS MILORAD
+ĐILAS NIKOLA
+ĐILAS STEVAN
+ĐILVESI ŠANDOR
+ĐILVESI KARLO
+ĐIN ĐURA
+ĐIN JULIJANA
+ĐINĐIĆ MILOJKO
+ĐINIĆ IVICA
+ĐINIĆ NIKOLA
+ĐINIĆ SLAVKA
+ĐINIĆ SOFIJA
+ĐINIĆ VLADETA
+ĐINIĆ ZORAN
+ĐINJA ANDREJ
+ĐINOVIĆ CVETKO
+ĐINOVIĆ IVKO
+ĐINOVIĆ KOLE
+ĐIPALO ĐURO
+ĐIPALO GOJKO
+ĐIPALO MILAN
+ĐIPALO MIRKO
+ĐIPALO MIROSLAV
+ĐIPALO RADE
+ĐIPANOV IDA
+ĐIPANOV NIKOLA
+ĐIPANOV RELJA
+ĐIPANOV SVETOZAR
+ĐIRIŠI IŠTVAN
+ĐIRLIĆ STEVAN
+ĐISALOV BRANISLAV
+ĐISALOV JELENA
+ĐISALOV JELENA
+ĐISALOV LAZAR
+ĐISALOV LJUBINKA
+ĐISALOV MILAN
+ĐISALOV MILAN
+ĐISALOV MILIVOJ
+ĐISALOV MILIVOJ
+ĐISALOV MIODRAG
+ĐISALOV MIODRAG
+ĐISALOV NADA
+ĐISALOV SONJA
+ĐISALOVIĆ KATICA
+ĐITKOV JOVAN
+ĐITKOV SOFIJA
+ĐJAK ŽIVKO
+ĐOĐIĆ MILORAD
+ĐOGO MILOVAN
+ĐOGO MIRJANA
+ĐOGO RUŽICA
+ĐOGO ZORAN
+ĐOGOVIĆ MILORAD
+ĐOGOVIĆ RADIVOJKA
+ĐOKIĆ ALEKSANDAR
+ĐOKIĆ BOŠKO
+ĐOKIĆ BORIVOJE
+ĐOKIĆ BRATISLAV
+ĐOKIĆ CVETKO
+ĐOKIĆ DARINKA
+ĐOKIĆ DRAGAN
+ĐOKIĆ DRAGIŠA
+ĐOKIĆ DRAGOLJUB
+ĐOKIĆ DRAGO
+ĐOKIĆ GORAN
+ĐOKIĆ IVAN
+ĐOKIĆ JELISAVA
+ĐOKIĆ JORDAN
+ĐOKIĆ LJUBINKO
+ĐOKIĆ LJUBO
+ĐOKIĆ LUKA
+ĐOKIĆ MARINKO
+ĐOKIĆ MATILDA
+ĐOKIĆ MIHAJLO
+ĐOKIĆ MILAN
+ĐOKIĆ MILAN
+ĐOKIĆ MILISAV
+ĐOKIĆ MILIVOJE
+ĐOKIĆ MILOVAN
+ĐOKIĆ MILUTIN
+ĐOKIĆ PANTELIJA
+ĐOKIĆ PETAR
+ĐOKIĆ RADISAV
+ĐOKIĆ RADOVAN
+ĐOKIĆ RATKO
+ĐOKIĆ RUŽA
+ĐOKIĆ SLOBODANKA
+ĐOKIĆ SLOBODAN
+ĐOKIĆ SOFIJA
+ĐOKIĆ STANIŠA
+ĐOKIĆ SVETISLAV
+ĐOKIĆ VERA
+ĐOKIĆ VLADISLAV
+ĐOKIĆ VOJISLAV
+ĐOKIĆ VUJADIN
+ĐOKIĆ VUKADIN
+ĐOKIĆ ZORAN
+ĐOKOVIĆ DRAGOMIR
+ĐOKOVIĆ MARKO
+ĐOKOVIĆ MILAN
+ĐOKOVIĆ MILOVAN
+ĐOKOVIĆ PETAR
+ĐOKOVIĆ RADOMIR
+ĐOKOVIĆ RADOVAN
+ĐOKOVIĆ STOJAN
+ĐOKVUČIĆ NADA
+ĐOLAI IMRE
+ĐOLAI MATILDA
+ĐOLJEVIĆ ĐOKA
+ĐOLOVIĆ ČEDOMIR
+ĐOMPARIĆ DUŠAN
+ĐOMPARIĆ ILIJA
+ĐOMPARIĆ MELANIJA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ VLADISLAVA
+ĐONOVIĆ ĐORĐIJE
+ĐONOVIĆ KAROLINA
+ĐONOVIĆ ZARIJA
+ĐORĐEVIĆ ČEDOMIR
+ĐORĐEVIĆ ŽIVKO
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVORAD
+ĐORĐEVIĆ ŽIVORAD
+ĐORĐEVIĆ ŽIVOTA
+ĐORĐEVIĆ ĐOKA
+ĐORĐEVIĆ ĐORĐE
+ĐORĐEVIĆ ĐORĐE
+ĐORĐEVIĆ ĐURA
+ĐORĐEVIĆ ACA
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDRA
+ĐORĐEVIĆ BOGDAN
+ĐORĐEVIĆ BORA
+ĐORĐEVIĆ BORISAV
+ĐORĐEVIĆ BORIVOJE
+ĐORĐEVIĆ BRANIMIR
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANKO
+ĐORĐEVIĆ BUDIMIR
+ĐORĐEVIĆ BUDIMIR
+ĐORĐEVIĆ DARKO
+ĐORĐEVIĆ DESANKA
+ĐORĐEVIĆ DESPOT
+ĐORĐEVIĆ DIMITRIJE
+ĐORĐEVIĆ DOBRIVOJE
+ĐORĐEVIĆ DRAŽA
+ĐORĐEVIĆ DRAGANA
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGOLJUB DR
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOSLAV
+ĐORĐEVIĆ DRAGUTIN
+ĐORĐEVIĆ DUŠANKA
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ ERNEST
+ĐORĐEVIĆ EVICA
+ĐORĐEVIĆ FATIMA
+ĐORĐEVIĆ GIZELA
+ĐORĐEVIĆ GORA
+ĐORĐEVIĆ GORDANA
+ĐORĐEVIĆ GRADIMIR
+ĐORĐEVIĆ GRADIMIR
+ĐORĐEVIĆ HRANISLAV
+ĐORĐEVIĆ ILINKA
+ĐORĐEVIĆ ILONA
+ĐORĐEVIĆ IVANA
+ĐORĐEVIĆ IVAN
+ĐORĐEVIĆ JAGODA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVICA
+ĐORĐEVIĆ JULKICA
+ĐORĐEVIĆ JULKICA
+ĐORĐEVIĆ KATARINA
+ĐORĐEVIĆ KONSTANDINA
+ĐORĐEVIĆ KOSTA
+ĐORĐEVIĆ LAZAR
+ĐORĐEVIĆ LAZAR
+ĐORĐEVIĆ LJILJANA
+ĐORĐEVIĆ LJUBA DIPL ING
+ĐORĐEVIĆ LJUBIŠA
+ĐORĐEVIĆ LJUBIŠA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBINKA
+ĐORĐEVIĆ LJUBISAV
+ĐORĐEVIĆ LJUBOMIR
+ĐORĐEVIĆ LJUBOMIR
+ĐORĐEVIĆ MARIJA
+ĐORĐEVIĆ MARIJA
+ĐORĐEVIĆ MILANKA
+ĐORĐEVIĆ MILANKA
+ĐORĐEVIĆ MILAN
+ĐORĐEVIĆ MILAN
+ĐORĐEVIĆ MILENA
+ĐORĐEVIĆ MILENKO
+ĐORĐEVIĆ MILENKO
+ĐORĐEVIĆ MILIJA
+ĐORĐEVIĆ MILOŠ DR
+ĐORĐEVIĆ MILOŠ
+ĐORĐEVIĆ MILORAD
+ĐORĐEVIĆ MILORAD
+ĐORĐEVIĆ MILOSAV
+ĐORĐEVIĆ MILOVAN
+ĐORĐEVIĆ MILOVAN
+ĐORĐEVIĆ MILUTIN
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIRJANA
+ĐORĐEVIĆ MIRJANA
+ĐORĐEVIĆ MIRKO
+ĐORĐEVIĆ MIRKO
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MLADEN
+ĐORĐEVIĆ NADA
+ĐORĐEVIĆ NADA
+ĐORĐEVIĆ NEDELJKO DR
+ĐORĐEVIĆ NEVENKA
+ĐORĐEVIĆ NIKOLA
+ĐORĐEVIĆ PAJA
+ĐORĐEVIĆ PANTA
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PETAR
+ĐORĐEVIĆ RADOMIR
+ĐORĐEVIĆ RADOMIR
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RAJKA
+ĐORĐEVIĆ RANĐEL
+ĐORĐEVIĆ SAŠA
+ĐORĐEVIĆ SAVA
+ĐORĐEVIĆ SINIŠA
+ĐORĐEVIĆ SLAĐANA
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SNEŽANA
+ĐORĐEVIĆ SOFIJA
+ĐORĐEVIĆ SOFIJA
+ĐORĐEVIĆ SRĐAN
+ĐORĐEVIĆ SRĐAN
+ĐORĐEVIĆ SRETEN
+ĐORĐEVIĆ STANA
+ĐORĐEVIĆ STANISLAV
+ĐORĐEVIĆ STANKA
+ĐORĐEVIĆ STEVANA
+ĐORĐEVIĆ STEVAN
+ĐORĐEVIĆ STEVAN
+ĐORĐEVIĆ SVETISLAV
+ĐORĐEVIĆ SVETISLAV
+ĐORĐEVIĆ SVETOZAR
+ĐORĐEVIĆ TIOSAV
+ĐORĐEVIĆ TOMISLAV
+ĐORĐEVIĆ TOMISLAV
+ĐORĐEVIĆ VELISAV
+ĐORĐEVIĆ VELIZAR
+ĐORĐEVIĆ VERA
+ĐORĐEVIĆ VERA
+ĐORĐEVIĆ VIDOSAVA
+ĐORĐEVIĆ VLADIMIR
+ĐORĐEVIĆ VLAJKO
+ĐORĐEVIĆ VLASTIMIR
+ĐORĐEVIĆ VLASTIMIR
+ĐORĐEVIĆ VOJIN
+ĐORĐEVIĆ VUČKO
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐIĆ BRANKO
+ĐORĐIĆ MARKO
+ĐORĐIĆ MILAN
+ĐORĐIJEVSKI DRAGAN
+ĐORĐIJEVSKI DUŠAN
+ĐORĐIJEVSKI ZORAN
+ĐORĐIN FEMKA
+ĐORĐIN RADE
+ĐORĐIN SAVA
+ĐORĐIOSKI KIRO
+ĐOREVSKI GORAN
+ĐORGIEVA JELICA
+ĐORIĆ ANTONIJE
+ĐORIĆ GORDANA
+ĐORIĆ LJUBISAV
+ĐORIĆ MILIVOJE
+ĐORIĆ MIODRAG
+ĐORIĆ VERICA
+ĐOROJEVIĆ VUKOTA
+ĐOTEVA TRAJANKA
+ĐOTUNOVIĆ ANĐELIJA
+ĐOZIĆ ŠUKRIJA
+ĐUĐAR MELANIJA
+ĐUĐAR VLADA
+ĐUĐAR VLADIMIR
+ĐUĐAR ZVONIMIR
+ĐUĐIĆ DRAGAN
+ĐUDUROVIĆ DUŠAN
+ĐUGA PAVEL
+ĐUKANOV BORIVOJ
+ĐUKANOV EMILIJAN
+ĐUKANOV MILAN
+ĐUKANOV NADA
+ĐUKANOV SLOBODAN
+ĐUKANOVIĆ ALEKSANDAR
+ĐUKANOVIĆ BRANKO
+ĐUKANOVIĆ IVO
+ĐUKANOVIĆ LJUBICA
+ĐUKANOVIĆ MARA
+ĐUKANOVIĆ MILAN
+ĐUKANOVIĆ MIROLJUB
+ĐUKANOVIĆ NADA
+ĐUKANOVIĆ NADA
+ĐUKANOVIĆ PUNIŠA
+ĐUKANOVIĆ SRETEN
+ĐUKANOVIĆ STAKA
+ĐUKANOVIĆ VLADIMIR
+ĐUKANOVIĆ ZORA
+ĐUKIČIN JOVANKA
+ĐUKIČIN MARIJA
+ĐUKIČIN SREDOJE
+ĐUKIČIN SREDOJE
+ĐUKIĆ-ŠABIĆ GORDANA
+ĐUKIĆ ŽARKA
+ĐUKIĆ ŽARKO
+ĐUKIĆ ŽELJKO
+ĐUKIĆ ŽIVOTA
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐUR0
+ĐUKIĆ ĐURA
+ĐUKIĆ ĐURO
+ĐUKIĆ AGNICA
+ĐUKIĆ ALEKSANDAR DIPL ING
+ĐUKIĆ ANA
+ĐUKIĆ ANA
+ĐUKIĆ ANDRIJA
+ĐUKIĆ ANICA
+ĐUKIĆ BILJANA
+ĐUKIĆ BORISLAV
+ĐUKIĆ BRANISLAV
+ĐUKIĆ BRANISLAV
+ĐUKIĆ BRANKO
+ĐUKIĆ DANICA DR
+ĐUKIĆ DANILO
+ĐUKIĆ DIJANA
+ĐUKIĆ DIMITRIJE
+ĐUKIĆ DOBRILA
+ĐUKIĆ DOBRIVOJ
+ĐUKIĆ DRAGAN
+ĐUKIĆ DRAGAN
+ĐUKIĆ DRAGOJLO
+ĐUKIĆ DRAGOMIR
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ GENA
+ĐUKIĆ GENO
+ĐUKIĆ GIZELA
+ĐUKIĆ GORDANA
+ĐUKIĆ ILIJA
+ĐUKIĆ ILIJA
+ĐUKIĆ IVAN DIPL ING
+ĐUKIĆ IVANKA
+ĐUKIĆ JAŠA
+ĐUKIĆ JELENA
+ĐUKIĆ JOVAN
+ĐUKIĆ JOVICA
+ĐUKIĆ JULKA
+ĐUKIĆ LEO
+ĐUKIĆ LJILJANA
+ĐUKIĆ LJUBICA
+ĐUKIĆ LJUBOMIR
+ĐUKIĆ LJUBOMIR
+ĐUKIĆ MAKSIM
+ĐUKIĆ MARA
+ĐUKIĆ MARIJA
+ĐUKIĆ MARINA
+ĐUKIĆ MIJODRAG
+ĐUKIĆ MILANKA
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILENKO
+ĐUKIĆ MILEVA
+ĐUKIĆ MILE
+ĐUKIĆ MILE
+ĐUKIĆ MILICA
+ĐUKIĆ MILICA
+ĐUKIĆ MILJKO
+ĐUKIĆ MILKA
+ĐUKIĆ MILOŠ
+ĐUKIĆ MILOŠ
+ĐUKIĆ MILORAD
+ĐUKIĆ MILOVAN
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ NEĐO
+ĐUKIĆ NEDELJKO
+ĐUKIĆ NIKOLA
+ĐUKIĆ NIKOLA
+ĐUKIĆ NOVAK
+ĐUKIĆ NOVAK
+ĐUKIĆ NOVAK
+ĐUKIĆ OSTOJA
+ĐUKIĆ PANE
+ĐUKIĆ PAVLE
+ĐUKIĆ PERIŠA
+ĐUKIĆ PETAR
+ĐUKIĆ PETAR
+ĐUKIĆ RADE
+ĐUKIĆ RADIVOJ
+ĐUKIĆ RADOJICA
+ĐUKIĆ RADOVAN
+ĐUKIĆ RAJKO
+ĐUKIĆ ROSA
+ĐUKIĆ RUŽICA LOKAL
+ĐUKIĆ SAVA
+ĐUKIĆ SAVKA
+ĐUKIĆ SAVO DR
+ĐUKIĆ SLAVICA
+ĐUKIĆ SLAVKO
+ĐUKIĆ SLAVOLJUB
+ĐUKIĆ SLOBODAN
+ĐUKIĆ SRĐAN
+ĐUKIĆ SRBOLJUB
+ĐUKIĆ STANA
+ĐUKIĆ STANKO
+ĐUKIĆ STANKO
+ĐUKIĆ STEVAN
+ĐUKIĆ STOJANKA
+ĐUKIĆ STOJAN
+ĐUKIĆ SVETLANA
+ĐUKIĆ SVETLANA
+ĐUKIĆ TOMISLAV
+ĐUKIĆ TOMISLAV
+ĐUKIĆ VALERIJA
+ĐUKIĆ VELEMIR
+ĐUKIĆ VERICA
+ĐUKIĆ VERONIKA
+ĐUKIĆ VIDAK
+ĐUKIĆ VIDA
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLAJKO
+ĐUKIĆ VOJIN
+ĐUKIĆ VOJISLAV
+ĐUKIĆ VUKAN
+ĐUKIĆ ZORAN
+ĐUKIN DUŠAN
+ĐUKIN STEVAN
+ĐUKNIĆ SRETEN
+ĐULA KARLO
+ĐULINAC JELICA
+ĐULINAC VESELIN
+ĐULIZIBARIĆ-OREŠKOVIĆ DANICA
+ĐULVEZAN KOSA
+ĐULVEZAN MILOŠ
+ĐULVEZAN ROZALIJA
+ĐUMIĆ BOGDAN
+ĐUMIĆ DUŠAN
+ĐUMIĆ GOSPAVA
+ĐUMIĆ ILIJA
+ĐUMIĆ MARIJA
+ĐUMIĆ MILENKO
+ĐUMIĆ SLAVKO
+ĐUMIĆ STANKO
+ĐUMIĆ UROŠ
+ĐUNDIĆ MARINKO
+ĐURČEK MILENKO
+ĐURČEVIĆ KSENIJA
+ĐURČIANSKI MIROSLAV
+ĐURČIANSKI PAVLE
+ĐURČIK JOSIP
+ĐURČJANSKI MIROSLAV
+ĐURČOK MILINA
+ĐURĐEV ŽARKO
+ĐURĐEV ĐORĐE
+ĐURĐEV ALEKSANDAR
+ĐURĐEV ALEKSANDAR
+ĐURĐEV BOŽIDAR
+ĐURĐEV BRANISLAV
+ĐURĐEV DIMITRIJE
+ĐURĐEV DOBRILA
+ĐURĐEV DRAGOLJUB
+ĐURĐEV DUŠAN
+ĐURĐEV DUŠAN
+ĐURĐEV KAĆA
+ĐURĐEV KATA
+ĐURĐEV LJUBIŠA
+ĐURĐEV MARIJA
+ĐURĐEV MARIJA
+ĐURĐEV MILETA
+ĐURĐEV MLADEN
+ĐURĐEV NADEŽDA
+ĐURĐEV NEVENKA
+ĐURĐEV NOVAK
+ĐURĐEV OBRAD
+ĐURĐEV PAVA
+ĐURĐEV PRVOSLAV
+ĐURĐEV SAVICA
+ĐURĐEV SLAVKO
+ĐURĐEV STEVAN
+ĐURĐEV TODOR
+ĐURĐEV VASA
+ĐURĐEV VERA
+ĐURĐEV ZORKA
+ĐURĐEVAC DRAGOLJUB
+ĐURĐEVIĆ ŽELJKO
+ĐURĐEVIĆ ŽIVAN
+ĐURĐEVIĆ ŽIVKO
+ĐURĐEVIĆ ŽIVKO
+ĐURĐEVIĆ ĐORĐE
+ĐURĐEVIĆ ĐURĐICA DIPL ING
+ĐURĐEVIĆ ANĐELKO
+ĐURĐEVIĆ BOGDAN
+ĐURĐEVIĆ BRANKO
+ĐURĐEVIĆ BRANKO
+ĐURĐEVIĆ BUDIMIR
+ĐURĐEVIĆ DRAGUTIN
+ĐURĐEVIĆ DUŠAN
+ĐURĐEVIĆ DUŠAN
+ĐURĐEVIĆ DUŠICA
+ĐURĐEVIĆ GORDANA
+ĐURĐEVIĆ JAKOV
+ĐURĐEVIĆ JELENA
+ĐURĐEVIĆ JELENA
+ĐURĐEVIĆ JELICA
+ĐURĐEVIĆ JOVANKA
+ĐURĐEVIĆ JOVAN
+ĐURĐEVIĆ JULKA
+ĐURĐEVIĆ LAZAR
+ĐURĐEVIĆ LAZO
+ĐURĐEVIĆ LJUBOMIR
+ĐURĐEVIĆ MANOJLO
+ĐURĐEVIĆ MARIJA
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILENKO
+ĐURĐEVIĆ MILICA
+ĐURĐEVIĆ MILIVOJ
+ĐURĐEVIĆ MILORAD
+ĐURĐEVIĆ MILORAD
+ĐURĐEVIĆ MIRJANA
+ĐURĐEVIĆ MIRJANA
+ĐURĐEVIĆ MOMČILO
+ĐURĐEVIĆ NEDELJKO
+ĐURĐEVIĆ NIKOLA
+ĐURĐEVIĆ RADINKA
+ĐURĐEVIĆ RANKO
+ĐURĐEVIĆ SAVA
+ĐURĐEVIĆ SAVA
+ĐURĐEVIĆ SLOBODAN
+ĐURĐEVIĆ SRĐAN DR
+ĐURĐEVIĆ STANKO
+ĐURĐEVIĆ STANOJKA
+ĐURĐEVIĆ STEVAN
+ĐURĐEVIĆ SVETOZAR
+ĐURĐEVIĆ TODOR
+ĐURĐEVIĆ TOMISLAV
+ĐURĐEVIĆ TOMISLAV
+ĐURĐEVIĆ VESELIN
+ĐURĐEVIĆ VID
+ĐURĐEVIĆ VLADA
+ĐURĐEVIĆ VLADA
+ĐURĐEVIĆ VLADIMIR
+ĐURĐEVIĆ VLADIMIR
+ĐURĐEVIĆ VLADISLAV
+ĐURĐEVIĆ ZORAN
+ĐURĐEVIĆ ZORAN
+ĐURĐEVSKI BOŠKO
+ĐURĐIĆ BOŽIDAR
+ĐURĐIĆ MILOŠ
+ĐURĐIĆ MOMČILO
+ĐURĐIĆ SAVO
+ĐURĐIĆ STANA
+ĐURĐIN STEVAN
+ĐURĐULOV DEJAN
+ĐURĐULOV EVICA
+ĐURA FRANJA
+ĐURA JELISAVETA
+ĐURA JULIJANA MR
+ĐURAČIĆ DRAGAN
+ĐURAŠ MIODRAG
+ĐURAŠEVIĆ ĐORĐE
+ĐURAŠEVIĆ ĐURO
+ĐURAŠEVIĆ GOJKO
+ĐURAŠEVIĆ IVO
+ĐURAŠEVIĆ MARIJANA
+ĐURAŠEVIĆ MILE
+ĐURAŠEVIĆ RADOMIR
+ĐURAŠEVIĆ TIBOR
+ĐURAŠEVIĆ ZORAN
+ĐURAŠINOV VELIMIR
+ĐURAŠINOVIĆ ILIJA
+ĐURAŠKOVIĆ ŽIVOJIN
+ĐURAŠKOVIĆ BOŽO
+ĐURAŠKOVIĆ DRAGAN
+ĐURAŠKOVIĆ DRAGO
+ĐURAŠKOVIĆ GORDANA
+ĐURAŠKOVIĆ JOVAN
+ĐURAŠKOVIĆ JOVAN
+ĐURAŠKOVIĆ JOVICA
+ĐURAŠKOVIĆ RAJKO
+ĐURAŠKOVIĆ STANOJE
+ĐURAGIĆ ĐORĐE
+ĐURAGIĆ DILE
+ĐURAGIĆ DRAGAN
+ĐURAGIĆ GIGA
+ĐURAGIĆ JOVAN
+ĐURAGIĆ JULKA
+ĐURAGIĆ LAZAR
+ĐURAGIĆ MIROSLAV
+ĐURAGIĆ SAVA
+ĐURAGIĆ STEVAN
+ĐURAGIN JOVAN
+ĐURAGIN STANKA
+ĐURAK JOŽEF
+ĐURAK JOSIF
+ĐURAKOVAC FATMIRA
+ĐURAN BOJANA
+ĐURAN ILIJA
+ĐURAN JELENA
+ĐURAN JOVO
+ĐURAN MILAN
+ĐURAN MILAN
+ĐURAN RAJKO
+ĐURAN RAJKO
+ĐURAN SLAVKO
+ĐURAN SNEŽANA
+ĐURAN ZDRAVKO
+ĐURANOVIĆ DUŠAN
+ĐURANOVIĆ ILONA
+ĐURANOVIĆ MIHAILO
+ĐURANOVIĆ MILAN
+ĐURANOVIĆ MIODRAG
+ĐURANOVIĆ MIRKO
+ĐURANOVIĆ NADA
+ĐURANOVIĆ SLAĐANA
+ĐURASINOVIĆ MILE
+ĐURDKOV EVA
+ĐUREKOVIĆ KARLO
+ĐUREKOVIĆ LJUBICA
+ĐUREKOVIĆ ZVONIMIR
+ĐURENDIĆ ĐORĐE
+ĐURENDIĆ DUŠAN
+ĐURETIĆ NIKOLA
+ĐURIČIĆ DRAGINJA
+ĐURIČIĆ DRAGO
+ĐURIČIĆ DRAGUTIN
+ĐURIČIĆ DUŠAN
+ĐURIČIĆ JOVAN
+ĐURIČIĆ MILJOJKO
+ĐURIČIĆ MILOŠ
+ĐURIČIĆ NEŠKO
+ĐURIČIĆ NIKOLA
+ĐURIČIĆ PAVLE
+ĐURIČIĆ RUŽA
+ĐURIČIĆ SLAVKO
+ĐURIČIĆ SLAVKO
+ĐURIČIĆ STANKO
+ĐURIČIĆ TANKOSAVA
+ĐURIČIĆ ZLATICA
+ĐURIČIĆ ZORAN
+ĐURIČIN ĐORĐE
+ĐURIČIN ALEKSANDAR
+ĐURIČIN DRAGAN
+ĐURIČIN DRAGUTIN
+ĐURIČIN KATARINA
+ĐURIČIN KATICA
+ĐURIČIN MARKO
+ĐURIČIN MILAN
+ĐURIČIN MILORAD
+ĐURIČIN MIODRAG
+ĐURIČIN PETAR
+ĐURIČIN RADOSLAVA
+ĐURIČIN RUŽICA
+ĐURIČIN SINIŠA
+ĐURIČIN SOFIJA
+ĐURIČIN STANIJA
+ĐURIČIN STEVAN
+ĐURIČIN SVETLANA
+ĐURIČIN TOMISLAV
+ĐURIČIN VASILIJE
+ĐURIČIN ZORKA
+ĐURIČKOVIĆ MILORAD
+ĐURIČKOVIĆ PAVLE
+ĐURIČKOVIĆ ZLATANA
+ĐURIŠ KLARA
+ĐURIŠ MIROSLAV
+ĐURIŠ PALJO
+ĐURIŠEVIĆ MILENA
+ĐURIŠIĆ DUŠAN
+ĐURIŠIĆ JELENA
+ĐURIŠIĆ LAZAR
+ĐURIŠIĆ MATO
+ĐURIŠIĆ MILAN
+ĐURIŠIĆ MILAN
+ĐURIŠIĆ MILIJA
+ĐURIŠIĆ MILISAV
+ĐURIŠIĆ NIKOLA
+ĐURIŠIĆ RADMILA
+ĐURIŠIĆ RADOMIR
+ĐURIŠIĆ SLAVKO
+ĐURIŠIĆ SVETLANA
+ĐURIŠIĆ VERA
+ĐURIŠIĆ VIDA
+ĐURIŠIĆ ZLATANA
+ĐURIŠIĆ ZLATA
+ĐURIĆ ŽARKO
+ĐURIĆ ŽELJKO
+ĐURIĆ ŽIVORAD
+ĐURIĆ ĐERĐ
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐURA
+ĐURIĆ ĐURICA
+ĐURIĆ ALEKSANDAR
+ĐURIĆ ANĐELKA
+ĐURIĆ ANGELINA
+ĐURIĆ ANKA
+ĐURIĆ ARSENIJE
+ĐURIĆ BLAGOMIR
+ĐURIĆ BOŽIDAR
+ĐURIĆ BOŽIDAR
+ĐURIĆ BOGOLJUB
+ĐURIĆ BOGOLJUB
+ĐURIĆ BOJAN
+ĐURIĆ BORIVOJ
+ĐURIĆ BORKA
+ĐURIĆ BORKA
+ĐURIĆ BRANISLAV DR LEKAR
+ĐURIĆ BRANISLAVA
+ĐURIĆ BRANKA
+ĐURIĆ BRANKA
+ĐURIĆ BRANKO
+ĐURIĆ BRATISLAV
+ĐURIĆ BUDIMIR
+ĐURIĆ DEJAN
+ĐURIĆ DEJAN
+ĐURIĆ DESPOT
+ĐURIĆ DOBRE
+ĐURIĆ DOBRILA
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGICA
+ĐURIĆ DRAGICA
+ĐURIĆ DRAGUTIN DR
+ĐURIĆ DUŠAN
+ĐURIĆ DUŠAN
+ĐURIĆ EVA
+ĐURIĆ FRANJA
+ĐURIĆ GOJKO
+ĐURIĆ GOJKO
+ĐURIĆ GORDANA
+ĐURIĆ HRANISLAV
+ĐURIĆ HRANISLAV
+ĐURIĆ ILIJA
+ĐURIĆ ILIJA
+ĐURIĆ JASMINKA
+ĐURIĆ JELICA
+ĐURIĆ JOVAN
+ĐURIĆ JOVAN
+ĐURIĆ JOVAN
+ĐURIĆ JOVO
+ĐURIĆ KRISTINA
+ĐURIĆ LJILJANA
+ĐURIĆ LJUBIŠA
+ĐURIĆ LJUBIŠA
+ĐURIĆ LJUBICA
+ĐURIĆ LJUBICA
+ĐURIĆ LJUBODRAG
+ĐURIĆ LJUBOMIR
+ĐURIĆ MARA
+ĐURIĆ MARIJA
+ĐURIĆ MIĆA
+ĐURIĆ MILANKO
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILENKO
+ĐURIĆ MILICA
+ĐURIĆ MILIVOJE
+ĐURIĆ MILOŠ
+ĐURIĆ MILORAD
+ĐURIĆ MILORAD
+ĐURIĆ MILOVAN
+ĐURIĆ MILUN
+ĐURIĆ MIODRAG
+ĐURIĆ MIODRAG
+ĐURIĆ MIRJANA
+ĐURIĆ MIRKO
+ĐURIĆ MIROLJUB
+ĐURIĆ MIROSLAVA
+ĐURIĆ MIROSLAV
+ĐURIĆ MITAR
+ĐURIĆ MOMČILO
+ĐURIĆ NEDELJKO
+ĐURIĆ NEMANJA
+ĐURIĆ NENAD
+ĐURIĆ NEVENKA
+ĐURIĆ PETRA
+ĐURIĆ PREDRAG
+ĐURIĆ PREDRAG
+ĐURIĆ RADIVOJE
+ĐURIĆ RADMILA
+ĐURIĆ RADOICA
+ĐURIĆ RADOJKA
+ĐURIĆ RADOSLAV
+ĐURIĆ RATKO
+ĐURIĆ SANJA
+ĐURIĆ SAVKA
+ĐURIĆ SAVO
+ĐURIĆ SEKULA
+ĐURIĆ SLAVICA
+ĐURIĆ SLAVKA
+ĐURIĆ SLAVKO
+ĐURIĆ SLAVKO
+ĐURIĆ SRBOLJUB
+ĐURIĆ STANIMIR
+ĐURIĆ STANIMIR
+ĐURIĆ STEVAN
+ĐURIĆ STOJANKA
+ĐURIĆ STOJANKA
+ĐURIĆ TEODOR
+ĐURIĆ TEREZA
+ĐURIĆ TODOR
+ĐURIĆ TODOR
+ĐURIĆ TUGOMIR
+ĐURIĆ VASA
+ĐURIĆ VELJKO
+ĐURIĆ VERA
+ĐURIĆ VERA
+ĐURIĆ VIDA
+ĐURIĆ VIDOJE
+ĐURIĆ VLADA
+ĐURIĆ VLADIMIR
+ĐURIĆ VLADIMIR
+ĐURIĆ VLADIMIR
+ĐURIĆ VOJIN
+ĐURIĆ VOJISLAV
+ĐURIĆ VUKAŠIN
+ĐURIĆ ZDENKA
+ĐURIĆ ZDRAVKO
+ĐURIĆ ZORAN
+ĐURICA MILOŠ
+ĐURICA NEVENKA
+ĐURICA RADE
+ĐURICA RANKO
+ĐURICA RANKO
+ĐURICA RATKO
+ĐURICA SLOBODAN DIPL OEC
+ĐURIK DUŠAN
+ĐURIK JULKA
+ĐURIK MILAN
+ĐURIK OTILIJA
+ĐURIKIN ILIJA
+ĐURIKIN VERA
+ĐURIN ILIJA
+ĐURIN JOSIP
+ĐURIN NOVA
+ĐURIN NOVA
+ĐURIN SAVA DIPL ING
+ĐURIN SVETLANA
+ĐURIN TEODOR
+ĐURKIĆ DRAGICA
+ĐURKIN MILENKO
+ĐURKIN RADIŠKO
+ĐURKIN VLADIMIR
+ĐURKOVIĆ ČASLAV
+ĐURKOVIĆ ĐENA
+ĐURKOVIĆ ALEKSANDAR DIPL ING
+ĐURKOVIĆ ANTON
+ĐURKOVIĆ MAGDALENA
+ĐURKOVIĆ PERICA
+ĐURKOVIĆ RADE
+ĐURKOVIĆ RUŽICA
+ĐURKOVIĆ STEVAN
+ĐURKOVIĆ SVETOMIR
+ĐURKOVIĆ VLAJKO
+ĐURKOVSKI PAVEL
+ĐURNIĆ RADMILA
+ĐURNIĆ VOJISLAV
+ĐUROVIĆ ŽIVKA
+ĐUROVIĆ ALEKSANDAR
+ĐUROVIĆ BOŠKO
+ĐUROVIĆ BOJA
+ĐUROVIĆ BORISLAV
+ĐUROVIĆ BOSILJKA
+ĐUROVIĆ DANILO
+ĐUROVIĆ DARINKA
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGOLJUB
+ĐUROVIĆ GOJKO
+ĐUROVIĆ JASMINKA
+ĐUROVIĆ JOVAN
+ĐUROVIĆ LJUBICA
+ĐUROVIĆ MILENKO
+ĐUROVIĆ MILICA
+ĐUROVIĆ MILISAV
+ĐUROVIĆ MILKA
+ĐUROVIĆ NADEŽDA
+ĐUROVIĆ NIKOLA
+ĐUROVIĆ OLGICA
+ĐUROVIĆ RADENKO
+ĐUROVIĆ RADE
+ĐUROVIĆ RADOMIR
+ĐUROVIĆ RADOMIR
+ĐUROVIĆ RADOSLAV
+ĐUROVIĆ RADOVAN
+ĐUROVIĆ SOFIJA
+ĐUROVIĆ SVETLANA
+ĐUROVIĆ SVETOMIR
+ĐUROVIĆ VASO
+ĐUROVIĆ VESNA
+ĐUROVIĆ VUKAŠIN
+ĐUROVIĆ VUKADIN
+ĐUROVIĆ ZORKA
+ĐUROVKA MARIJA
+ĐUROVKA ONDREJ
+ĐUROVKA VLADISLAV
+ĐUROVSKI JOVICA
+ĐUSIĆ MIODRAG
+ĐUZA STEVO
+AČ ŠANDOR
+AČ FERENC
+AČ FRANJA DR PRIMARIJUS
+AČ GABOR
+AČ JOŽEF AKADEMSKI SLIKAR
+AČ JOŽEF BIOLOG
+AČ JOVAN
+AČ KATICA
+AČ LAJOŠ
+AČ-NIKOLIĆ ERŽEBET
+AČ OTO
+AČ PAVLE
+AČ TIBOR
+AČAI IŠTVAN
+AČAI ZOLTAN
+AČANASKI VESNA
+AČANSKI ŽIVKO
+AČANSKI ALBINA
+AČANSKI ALEKSANDAR
+AČANSKI BRANISLAV
+AČANSKI DOBRIVOJ
+AČANSKI DRAGICA
+AČANSKI DRAGOMIR
+AČANSKI JELISOV
+AČANSKI KOSANA
+AČANSKI LAZAR
+AČANSKI LAZAR
+AČANSKI NIKOLA
+AČANSKI RADA
+AČANSKI STANA
+AČANSKI STANISLAV
+AČANSKI TEODOR DIPL ING
+AČANSKI TODOR
+AČANSKI VIDOSAVA
+AČANSKI ZDRAVKO
+AČANSKI ZORICA
+AŠĆERIĆ STEVAN
+AŠĆERIĆ STEVAN
+AŠĆERIĆ ZORA
+AŠANIN RADIVOJE
+AŠANIN ZORAN
+AŠIKU VITALIS DR LEKAR
+AŠKOVIĆ SLAVKO DIPL ING
+AŠKOVIĆ TOMISLAV
+AŠKOVIĆ VOJISLAVA
+AŠONJA NEDELJKO
+AŠONJA OLGA
+AŠTALKOVSKI ALEKSANDAR
+AŠTALKOVSKI KRISTINA
+AĆANSKI ĐORĐE
+AĆANSKI LAZAR
+AĆIĆ ILIJA
+AĆIĆ MIRKO
+AĆIĆ STEVAN
+AĆIMOV ALEKSANDAR
+AĆIMOV BOŠKO
+AĆIMOV DRAGICA
+AĆIMOV LELA
+AĆIMOV MARKO
+AĆIMOV MILAN
+AĆIMOV MIRJANA PROFESOR
+AĆIMOV NEDELJKO
+AĆIMOV RADIVOJ
+AĆIMOV RADOSLAVA
+AĆIMOVIĆ ŽIVKO
+AĆIMOVIĆ ŽIVOJIN
+AĆIMOVIĆ ĐORĐE
+AĆIMOVIĆ ĐORĐE
+AĆIMOVIĆ ĐURĐINKA
+AĆIMOVIĆ BOŠKO
+AĆIMOVIĆ BOGDANKA
+AĆIMOVIĆ BORKA
+AĆIMOVIĆ BRANKO
+AĆIMOVIĆ BRANKO
+AĆIMOVIĆ DRAGAN
+AĆIMOVIĆ DRAGOLJUB
+AĆIMOVIĆ DRAGOSLAV
+AĆIMOVIĆ DUŠANKA
+AĆIMOVIĆ DUŠAN
+AĆIMOVIĆ DUŠAN
+AĆIMOVIĆ GOJKO
+AĆIMOVIĆ ILIJA
+AĆIMOVIĆ JOVA
+AĆIMOVIĆ MILAN
+AĆIMOVIĆ MILA
+AĆIMOVIĆ MILIVOJE DR
+AĆIMOVIĆ MILIVOJ
+AĆIMOVIĆ MILOJICA
+AĆIMOVIĆ MIODRAG
+AĆIMOVIĆ OBRAD
+AĆIMOVIĆ RADMILA
+AĆIMOVIĆ RADOVAN
+AĆIMOVIĆ RATKO
+AĆIMOVIĆ SAVA
+AĆIMOVIĆ SAVA
+AĆIMOVIĆ SLAVKO
+AĆIMOVIĆ SLOBODAN
+AĆIMOVIĆ TADIJA
+AĆIMOVIĆ VASA
+AĆIMOVIĆ VASILIJE
+AĆIMPVIĆ ALEKSANDAR
+AĐANSKI BRANISLAV
+AĐANSKI IVANA
+AĐANSKI MILIVOJ
+AĐANSKI NADA
+AĐANSKI STEVAN
+AĐIĆ DRAGO
+AĐIĆ OTO
+AĐIN ADAM
+ABADŽIĆ MARKO
+ABADŽIĆ RADMILA
+ABADŽIĆ SAVO
+ABADŽIĆ STANKO
+ABAZA VESNA
+ABAZI ILJAZ
+ABAZI RAMADAN
+ABAZOVSKI SULTAN
+ABDIJEVIĆ ŠUKRIJA
+ABDIJEVIĆ ISMET
+ABRAHAM EVA
+ABRAHAM IRENA
+ABRAHAM PAVEL
+ABRAMOVIĆ DUŠANKA
+ABRAMOVIĆ LIVIJA
+ABRAMOVIĆ MILORAD
+ABRAMOVIĆ MIRJANA
+ABRAMOVIĆ NADA
+ABRAMOVIĆ STANA
+ABRAMOVIĆ VALERIJA
+ABRLIĆ NADA
+ABT LASLO
+ABU-ABED MUHAMED
+ACIGAN JOVANKA
+ACIN-PETROVIĆ IVANKA
+ACKETA DRAGAN
+ACKETA MIRJANA
+ACKETA TIHOMIR
+ACKOVIĆ MARA
+ADŽAIP MILORAD
+ADŽAIP MIRJANA
+ADŽEMOVIĆ ALEKSANDAR
+ADŽEMOVIĆ GRUJO
+ADŽIĆ ŽARKO
+ADŽIĆ BOŠKO
+ADŽIĆ BRANKO
+ADŽIĆ DESANKA
+ADŽIĆ DRAGOLJUB
+ADŽIĆ DUŠICA
+ADŽIĆ GORAN
+ADŽIĆ ILIJA
+ADŽIĆ JOVANKA
+ADŽIĆ JOVAN
+ADŽIĆ LJUBODRAG
+ADŽIĆ MILAN
+ADŽIĆ MILEN
+ADŽIĆ MILISAV
+ADŽIĆ MILIVOJE
+ADŽIĆ MILORAD
+ADŽIĆ NEDELJKO
+ADŽIĆ PERO
+ADŽIĆ RADISAV
+ADŽIĆ RADONJA
+ADŽIĆ RANKO
+ADŽIĆ RATKO
+ADŽIĆ SLOBODAN
+ADŽIĆ VLADO
+ADŽIĆ ZORAN
+ADŽIBABA MILICA
+ADŽIBABA NIKOLA
+ADAM ŠARLOTA
+ADAM ĐURA
+ADAM DENEŠ
+ADAM IRMA
+ADAM JOŽEF
+ADAM JOSIP
+ADAM KRUNICA DR
+ADAM LADISLAV
+ADAM LADISLAV
+ADAM LASLO
+ADAM OLGICA
+ADAM TIBOR NOVINAR
+ADAMOV ĐORĐE
+ADAMOV BOŽIDAR
+ADAMOV DRAGAN
+ADAMOV DUŠAN
+ADAMOV IVAN
+ADAMOV JOVAN
+ADAMOV JULIANA
+ADAMOV JULKA
+ADAMOV JULKA
+ADAMOV KATARINA
+ADAMOV LJUBA
+ADAMOV MARIJA
+ADAMOV MIROSLAVA
+ADAMOV RADOVAN
+ADAMOV TICA
+ADAMOV VITOMIR
+ADAMOVIĆ ĐURA
+ADAMOVIĆ BOŠKO
+ADAMOVIĆ DRAGA
+ADAMOVIĆ DRAGOLJUB
+ADAMOVIĆ DRAGOLJUB
+ADAMOVIĆ DRAGUTIN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ GOJKO
+ADAMOVIĆ GOJKO
+ADAMOVIĆ GORAN
+ADAMOVIĆ ILONA
+ADAMOVIĆ IVAN
+ADAMOVIĆ JELA
+ADAMOVIĆ JELENA
+ADAMOVIĆ JOVANKA
+ADAMOVIĆ JOVAN
+ADAMOVIĆ KATA
+ADAMOVIĆ LAZAR
+ADAMOVIĆ LAZAR
+ADAMOVIĆ LJILJANA
+ADAMOVIĆ LJUBOMIR
+ADAMOVIĆ MARA
+ADAMOVIĆ MARA
+ADAMOVIĆ MARA
+ADAMOVIĆ MARINKO
+ADAMOVIĆ MILENA
+ADAMOVIĆ MILICA
+ADAMOVIĆ MILKAN
+ADAMOVIĆ MIRKO
+ADAMOVIĆ MIRKO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ RADMILA
+ADAMOVIĆ RADOSAV
+ADAMOVIĆ SLAVKO
+ADAMOVIĆ SONJA
+ADAMOVIĆ STOJANKA
+ADAMOVIĆ SVETOZAR
+ADAMOVIĆ TOMISLAV
+ADAMOVIĆ TOMISLAV
+ADAMOVIĆ VLADIMIR
+ADEMI GORDANA
+ADEMI IMER
+ADEMOV KEMAL
+ADEMOVIĆ JUSUF
+ADEMOVIĆ OSMAN
+ADLEŠIĆ LJUBICA
+ADNAĐEVIĆ SVETOZAR
+ADOR JOVAN
+AGARSKI JAN DR
+AGATIĆ MATE
+AGATIĆ MIRKO
+AGATIĆ VELIMIR
+AGBABA BRANKA
+AGBABA DANE
+AGBABA DANICA
+AGBABA DANILO
+AGBABA DUŠAN
+AGBABA JOVAN
+AGBABA NEDELJKA
+AGBABA NEDELJKO
+AGBABA NIKOLA DR
+AGBABA NIKOLA
+AGBABA VIDA
+AGIĆ MARKO
+AGIĆ NADA
+AGIĆ NIKOLAJ
+AGIĆ NIKOLA
+AGIĆ SLOBODAN DIPL OEC
+AGIĆ SRBISLAV
+AGIĆ VLADIMIR
+AGO MARKO
+AGO ZORICA
+AGOČ DUŠAN
+AGOŠTON BELA
+AGOŠTON FERENC
+AGOŠTON KAROLJ
+AGOŠTON LASLO
+AGOŠTON MIHALJ
+AGOŠTON VERA
+AGRAMOVIĆ DESANKA
+AGRAMOVIĆ RADE
+AGUŠEVIĆ SLOBODANKA
+AGUCIĆ OLGICA
+AHMED ELEZ
+AHMETOV ŠUKRI
+AHMETOVIĆ KARLO
+AHMETOVIĆ SOFIJA
+AHMETOVIĆ ZLATKO
+AIRALDI BOŽIDAR
+AJ BRANISLAV
+AJ VESNA
+AJANOVIĆ SALKO
+AJCEV DUŠAN
+AJDŽANOVIĆ ANASTASIJA DR LEKAR
+AJDARIĆ RADOSLAV
+AJDER ŽELJKO
+AJDER BOŠKO
+AJDER DANICA
+AJDIĆ ĐORĐE
+AJDINI SABRIJA
+AJDINOVIĆ NIKOLA
+AJDUK JOSIM
+AJDUK MARKO
+AJDUK MILICA
+AJDUK TOŠA
+AJDUKOVIĆ GOJKO
+AJDUKOVIĆ LJILJANA
+AJDUKOVIĆ MILAN
+AJDUKOVIĆ SOFIJA
+AJGENMAHT MARINA
+AJKUNIĆ ADIL
+AJKUNIĆ NEZIR
+AJRANOVIĆ JUSUF
+AJTIĆ SVETISLAV
+AJTLBEZ MIJAT
+AJTLBEZ MIJAT
+AJVAZOVIĆ AĆIF
+AJVAZOVIĆ ASLAN
+AJVAZOVIĆ ESMA
+AJVAZOVIĆ FAID
+AJVILER STEVAN
+AJZENBERGER BELA
+AKŠAMOVIĆ PLAVŠA
+AKIK DRAGICA
+AKIK DUŠAN
+AKIN DRAGA
+AKIN SOFIJA
+AKONČIĆ ZORAN
+AKRAP FILIP PROF
+AKRAPOVIĆ MIROSLAV
+AKSENTIJEVIĆ JOVAN
+AKSENTIJEVIĆ NIKOLA SUDIJA
+AKSENTIJEVIĆ STOJADIN
+AKSIN BRANISLAV
+AKSIN MILOVAN
+AKSIN VLADIMIR DR ING
+ALAĐI ŠANDOR
+ALABAŠOVSKI GRUJA
+ALABAŠOVSKI IBRAHIM
+ALABURIĆ PAVLE
+ALABURIĆ TEODOR DIPL ING
+ALADŽIĆ ĐORĐO
+ALADIĆ ALEKSANDAR
+ALADIĆ ALEKSANDAR
+ALADIĆ BRANISLAVA
+ALADIĆ IDA
+ALADIĆ STEVAN
+ALAGIĆ DUŠAN
+ALAGIĆ MUJO
+ALAGIĆ NADA
+ALAGIĆ RADOSLAV
+ALAGIĆ VERA
+ALAICA RADOJKA
+ALAJICA BRANKO
+ALAJICA JOVO
+ALAN VERA
+ALANOV RUŽICA
+ALARGIĆ JELENA
+ALARGIĆ MILICA
+ALARGIĆ PETAR
+ALARGIĆ RADE
+ALARGIĆ RANKA
+ALARGIĆ TIMA
+ALASOV DRAGOSLAV
+ALASOV LAZAR DIPL ING
+ALAVANJA MIRJANA
+ALBIJANIĆ BORO
+ALBIJANIĆ DRAGUTIN
+ALBOT ILIJA
+ALBREHT JANOŠ
+ALBREHT MARIJA
+ALBREHT MARIJA
+ALBULJ DIVNA
+ALBULJ GORDANA
+ALBULJ VESELIN
+ALBULJ VOJISLAVKA
+ALEKSANDER ANA
+ALEKSANDER RUDOLF
+ALEKSANDRIĆ MILESA DR
+ALEKSANDROV SLAVČA
+ALEKSANDROVIĆ DRAGAN
+ALEKSANDROVIĆ DUŠAN
+ALEKSI STEVAN
+ALEKSIĆ ČASLAV
+ALEKSIĆ ČEDOMIR
+ALEKSIĆ ŽIVOMIR
+ALEKSIĆ ĐORĐE
+ALEKSIĆ ĐURA
+ALEKSIĆ ACA
+ALEKSIĆ ADAM
+ALEKSIĆ ARSA
+ALEKSIĆ BISERKA
+ALEKSIĆ BOŽIDAR
+ALEKSIĆ BOŽIDAR
+ALEKSIĆ BOGDAN
+ALEKSIĆ BRANISLAV
+ALEKSIĆ BRANKO
+ALEKSIĆ BRANKO
+ALEKSIĆ BRANKO
+ALEKSIĆ BUDIMIR
+ALEKSIĆ DANICA
+ALEKSIĆ DARINKA
+ALEKSIĆ DRAGAN
+ALEKSIĆ DRAGA
+ALEKSIĆ DRAGOLJUB
+ALEKSIĆ DRAGOMIR
+ALEKSIĆ DRAGOSLAV DR
+ALEKSIĆ DUŠAN
+ALEKSIĆ DUŠAN
+ALEKSIĆ EVICA
+ALEKSIĆ GOJKO
+ALEKSIĆ GORAN
+ALEKSIĆ GORDANA
+ALEKSIĆ-GRISER NIKOLA
+ALEKSIĆ ILINKA
+ALEKSIĆ IVAN
+ALEKSIĆ JELENA
+ALEKSIĆ JELICA
+ALEKSIĆ JELICA
+ALEKSIĆ JOSIP
+ALEKSIĆ JOVAN
+ALEKSIĆ JOVO
+ALEKSIĆ KATA
+ALEKSIĆ KATICA
+ALEKSIĆ KATICA
+ALEKSIĆ KOSA
+ALEKSIĆ KOSTA
+ALEKSIĆ KOSTA
+ALEKSIĆ LEPOSAVA
+ALEKSIĆ LEPOSAVA
+ALEKSIĆ LJILJANA
+ALEKSIĆ LJILJANA
+ALEKSIĆ LJUBIŠA
+ALEKSIĆ LJUTOMIR
+ALEKSIĆ MARIN
+ALEKSIĆ MILANKA
+ALEKSIĆ MILAN
+ALEKSIĆ MILAN
+ALEKSIĆ MILAN
+ALEKSIĆ MILENA
+ALEKSIĆ MILINKA
+ALEKSIĆ MILIVOJ
+ALEKSIĆ MILIVOJ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOJE
+ALEKSIĆ MILORAD
+ALEKSIĆ MILOVAN
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIRJANA
+ALEKSIĆ MIRKO
+ALEKSIĆ MIROSLAV
+ALEKSIĆ MOMČILO
+ALEKSIĆ MOMČILO
+ALEKSIĆ MOMIR
+ALEKSIĆ NADA
+ALEKSIĆ NATALIJA
+ALEKSIĆ NEBOJŠA
+ALEKSIĆ NIKOLA
+ALEKSIĆ NIKOLA
+ALEKSIĆ PAULINA
+ALEKSIĆ PAVLE
+ALEKSIĆ PETAR
+ALEKSIĆ PETAR
+ALEKSIĆ PETAR
+ALEKSIĆ PREDRAG
+ALEKSIĆ RADE
+ALEKSIĆ RADMILA
+ALEKSIĆ RADOMIR
+ALEKSIĆ RAJKO
+ALEKSIĆ RATKO
+ALEKSIĆ RATKO
+ALEKSIĆ RISTO
+ALEKSIĆ SAVO
+ALEKSIĆ SLAVNA
+ALEKSIĆ SMILJA
+ALEKSIĆ STEVAN
+ALEKSIĆ STEVAN
+ALEKSIĆ VASA
+ALEKSIĆ VERA
+ALEKSIĆ VERA
+ALEKSIĆ VESNA
+ALEKSIĆ VITOMIR
+ALEKSIĆ VLASTIMIR
+ALEKSIĆ VOJISLAV
+ALEKSIĆ ZDRAVENKA
+ALEKSIĆ ZDRAVKO
+ALEKSIĆ ZLATIBOR
+ALEKSIĆ ZORAN
+ALEKSIJEVIĆ BOGDAN
+ALEKSIJEVIĆ BORA
+ALEKSIJEVIĆ ISIDOR
+ALEKSIJEVIĆ JOVAN
+ALEKSIJEVIĆ MARIJA
+ALEKSOV GEORGI
+ALEKSOV MILUTIN
+ALEKSOV SIMEON
+ALEKSOV ZORAN
+ALEKSOVSKI MILE
+ALEKSOVSKI SRBOLJUB
+ALEMPIĆ SAVO
+ALEMPIJEVIĆ ZORAN
+ALEMPIJEVIĆ ZORAN
+ALENDER ŠEFIK
+ALI JULISTAN
+ALIŠIĆ BESIM
+ALIŠIĆ NIJAZ
+ALIŠIĆ REDŽEP
+ALIŠIĆ VASVIJA
+ALIĐUKIĆ ILIJA
+ALIBAŠIĆ HAMID
+ALIJA ABDIRAHMAN
+ALIJA IZET
+ALIJEVIĆ NEZIR
+ALIJEVIĆ SADRIJA
+ALILOVIĆ VINKO
+ALIMPIĆ ŽIVKO
+ALIMPIĆ ALEKSANDAR
+ALIMPIĆ BARBARA
+ALIMPIĆ BOGOMIR
+ALIMPIĆ BORIVOJE
+ALIMPIĆ DRAGAN
+ALIMPIĆ DRAGICA
+ALIMPIĆ JELA
+ALIMPIĆ JOVAN
+ALIMPIĆ LJUBICA
+ALIMPIĆ MOMČILO
+ALIMPIĆ SLAVKA
+ALIMPIĆ SLAVKO
+ALIMPIĆ STEVAN
+ALIMPIĆ TIHOMIR
+ALIMPIĆ TOMISLAV
+ALIMPIĆ VOJISLAV
+ALIMPIJEVIĆ ĐORĐE
+ALIMPIJEVIĆ DIMITRIJE
+ALIMPIJEVIĆ JOVAN
+ALIMPIJEVIĆ JOVAN
+ALIMPIJEVIĆ VESELINKA
+ALIOV HUSEIN
+ALIOV OMER
+ALJI AJRADIN
+ALJI MAKSUT
+ALJIĆ KATARINA
+ALJIĆ RAMO
+ALJIJUPI ČERIM
+ALKIĆ STEVAN
+ALKIĆ VLADIMIR
+ALMAŠI ETEL
+ALMAŠI MARIŠKA
+ALMAŠI MATIJA
+ALMAŠI SAMUEL
+ALMAŽAN SLAVKO NOVINAR
+ALORIĆ DRAGOMIRKA
+ALORIĆ ILIJA
+ALTEROV ANA
+ALTKORN MALVINA
+ALVADŽIN DRAGUTIN
+ALVIROVIĆ DRAGORAD
+ALVIROVIĆ MIODRAG
+AMAMOVIĆ DUŠAN
+AMAMOVIĆ MILEVA
+AMBARDŽIJEV HRISTO
+AMBO ILIJA
+AMBROZIĆ RASTKO
+AMBRUŠ ATILA
+AMBRUŠIĆ MAGDA
+AMBRUSOV JOVAN
+AMETOV OSMAN
+AMETOVIĆ ĐORĐE
+AMETOVIĆ ĐORĐO
+AMETOVIĆ ĐURO
+AMETOVIĆ BUDIMIR
+AMETOVIĆ JELENA
+AMETOVIĆ JOVAN
+AMETOVIĆ KATICA
+AMETOVIĆ LAZAR
+AMETOVIĆ LAZAR
+AMETOVIĆ MARKO
+AMETOVIĆ MILADIN
+AMETOVIĆ MILORAD
+AMETOVIĆ MIRKO
+AMETOVIĆ MOMČILO
+AMETOVIĆ RAJKO
+AMETOVIĆ RATKO
+AMETOVIĆ RUSMIRA
+AMETOVIĆ SOFIJA
+AMETOVIĆ VOJIN
+AMIŽIĆ DANICA
+AMIŽIĆ MIROSLAV
+AMIŽIĆ TEODORA
+ANČIĆ ALEKSANDRA
+ANČIĆ MILAN
+ANČIĆ NEVENKA DR
+ANĐELIĆ ANĐELKO
+ANĐELIĆ ANDRIJA
+ANĐELIĆ ANICA
+ANĐELIĆ BILJANA
+ANĐELIĆ BLAGIŠA
+ANĐELIĆ BOŽIDAR DR
+ANĐELIĆ BORIVOJE
+ANĐELIĆ BORIVOJE
+ANĐELIĆ BRANISLAV
+ANĐELIĆ DARINKA
+ANĐELIĆ DRAGICA
+ANĐELIĆ DRAGOMIR
+ANĐELIĆ DUŠANKA
+ANĐELIĆ GORAN
+ANĐELIĆ ILIJA
+ANĐELIĆ ILIJA
+ANĐELIĆ MILENKO
+ANĐELIĆ MILIVOJE
+ANĐELIĆ MILORAD
+ANĐELIĆ MILORAD
+ANĐELIĆ MIRJANA
+ANĐELIĆ MIRJANA
+ANĐELIĆ MITAR
+ANĐELIĆ NIKOLA
+ANĐELIĆ RADMILA
+ANĐELIĆ RADOJICA
+ANĐELIĆ RADOSLAV
+ANĐELIĆ SAVA
+ANĐELIĆ SLOBODAN DR LEKAR
+ANĐELIĆ SLOBODAN
+ANĐELIĆ SLOBODAN
+ANĐELIĆ STEVAN
+ANĐELIĆ VASA
+ANĐELIĆ VASO
+ANĐELIĆ VELJKO
+ANĐELIĆ VESELIN
+ANĐELIĆ VESNA
+ANĐELIĆ VLADA
+ANĐELIĆ VOJISLAV
+ANĐELKOVIĆ ANĐELKO
+ANĐELKOVIĆ BOŽIDAR
+ANĐELKOVIĆ DRAGOMIR
+ANĐELKOVIĆ-DUDIĆ ZLATA
+ANĐELKOVIĆ JELICA
+ANĐELKOVIĆ JOVAN
+ANĐELKOVIĆ LIDIJA
+ANĐELKOVIĆ LJUBIŠA
+ANĐELKOVIĆ MILAN
+ANĐELKOVIĆ MILOŠ
+ANĐELKOVIĆ MILORAD
+ANĐELKOVIĆ MIROSLAV
+ANĐELKOVIĆ MIROSLAV
+ANĐELKOVIĆ NATAŠA
+ANĐELKOVIĆ PETAR
+ANĐELKOVIĆ PREDRAG
+ANĐELKOVIĆ RADOMIR
+ANĐELKOVIĆ ROBERT
+ANĐELKOVIĆ SIMA
+ANĐELKOVIĆ SLOBODAN
+ANĐELKOVIĆ STANIMIR
+ANĐELKOVIĆ STANKO
+ANĐELKOVIĆ STEVAN
+ANĐELKOVIĆ STOJAN
+ANĐELKOVIĆ SVETISLAV
+ANĐELKOVIĆ SVETISLAV
+ANĐELKOVIĆ SVETOMIR
+ANĐELKOVIĆ VALERIJA
+ANĐELKOVIĆ VERA
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VUKADIN
+ANĐELKOVIĆ ZORAN
+ANĐELKOVIĆ ZORAN
+ANĐELKOVIĆ ZORA
+ANĐELOVIĆ LJUBIŠA
+ANĐELOVIĆ VERICA
+ANĐELOVSKI ĐORĐE
+ANĐIĆ STEVAN
+ANĐUŠIĆ ŽARKO
+ANĐUŠIĆ JELISAVKA
+ANĐUŠIĆ MILORAD
+ANĐUŠIĆ SLOBODAN
+ANASTASIJEVIĆ DUŠAN
+ANASTASIJEVIĆ JULKICA
+ANASTASIJEVIĆ ZORICA
+ANASTASIJEVIĆ ZORICA
+ANASTASOV MARKO
+ANASTASOV NIKOLA
+ANASTASOVSKI ALEKSANDAR
+ANAU GABRIELA
+ANAU STEVAN
+ANDABAK MARKO
+ANDABAKA ANTE
+ANDABAKA SLAVICA
+ANDER IMRE
+ANDERLON STEVICA
+ANDESELIĆ ŠTEFICA
+ANDEVSKI RADE
+ANDIĆ SVETOZAR
+ANDIĆ VLADIMIR
+ANDONIADIS MILICA
+ANDONOV DIMITRIJE
+ANDONOV NENAD
+ANDONOV ZORICA
+ANDONOVIĆ DIMITRIJE
+ANDRAŠIK PAVEL
+ANDREATA SLAVKO
+ANDREIĆ RADOVAN
+ANDREJEV HELENA
+ANDREJEV MIHAJLO
+ANDREJEVIĆ BOGOSAV
+ANDREJEVIĆ BORIVOJE
+ANDREJEVIĆ GRADIMIR
+ANDREJEVIĆ IVAN
+ANDREJEVIĆ MARKO
+ANDREJEVIĆ MILAN
+ANDREJEVIĆ MIROSLAV
+ANDREJEVIĆ SLOBODAN
+ANDREJEVIĆ TEODOR
+ANDREJEVIĆ VUKAŠIN DIPL ING
+ANDREJIĆ ŽARKO
+ANDREJIĆ BORISLAV
+ANDREJIĆ DRAGAN
+ANDREJIĆ RADOSLAV
+ANDREJIĆ SLAVOLJUB
+ANDREJIĆ SRETEN
+ANDREJIĆ VERA
+ANDREJIĆ ZORAN
+ANDREJIĆ ZORICA
+ANDRES ANĐELKO
+ANDRIČEK ANA
+ANDRIČEK LAJOŠ
+ANDRIČEK MAGDALENA
+ANDRIČEK PAVAO
+ANDRIČEK PAVLE
+ANDRIĆ ŽELJKA
+ANDRIĆ ŽIKA
+ANDRIĆ ŽIVAN
+ANDRIĆ ĐORĐE
+ANDRIĆ ĐURĐINA
+ANDRIĆ ALEKSANDAR
+ANDRIĆ BOGOLJUB
+ANDRIĆ BOJAN
+ANDRIĆ BOSILJKA
+ANDRIĆ BRANIMIR
+ANDRIĆ BRANISLAV
+ANDRIĆ DARINKA
+ANDRIĆ DOSTA
+ANDRIĆ DRAGAN
+ANDRIĆ DRAGOLJUB
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ FRIDA
+ANDRIĆ ILIJA
+ANDRIĆ JELENA
+ANDRIĆ JELISAVETA
+ANDRIĆ JOVICA
+ANDRIĆ-KOVAČEVIĆ OLIVERA
+ANDRIĆ LAZAR
+ANDRIĆ LAZA
+ANDRIĆ LJILJANA
+ANDRIĆ LJILJANA
+ANDRIĆ LUDMILA
+ANDRIĆ MILE
+ANDRIĆ MILOŠ
+ANDRIĆ MILOŠ
+ANDRIĆ NEBOJŠA
+ANDRIĆ NESTOR
+ANDRIĆ NIKOLA
+ANDRIĆ PERICA
+ANDRIĆ PETAR
+ANDRIĆ RADISAV
+ANDRIĆ RADISLAV
+ANDRIĆ SAVA
+ANDRIĆ SIMA
+ANDRIĆ SLAVKA
+ANDRIĆ SLAVKA
+ANDRIĆ SLAVOLJUB
+ANDRIĆ SLOBODAN
+ANDRIĆ STEVAN
+ANDRIĆ STEVAN
+ANDRIĆ TODOR
+ANDRIĆ TOMISLAV
+ANDRIĆ VERICA
+ANDRIĆ VLADA
+ANDRIĆ VLADIMIRA
+ANDRIĆ VUKOMAN
+ANDRIĆ ZORA
+ANDRIGA ALEKSANDAR
+ANDRIJAŠEV KOSANA
+ANDRIJAŠEV RUŽICA
+ANDRIJAŠEVIĆ ŽELJKO
+ANDRIJAŠEVIĆ ANKA
+ANDRIJAŠEVIĆ BRANKO
+ANDRIJAŠEVIĆ JELENA
+ANDRIJAŠEVIĆ RADOVAN
+ANDRIJEVIĆ ŽIVA
+ANDRIJEVIĆ JOVAN
+ANDRIN ANĐELKA
+ANDRIN ISIDOR
+ANDRIN KATICA
+ANDRIN MILADINKA
+ANDRIN NADA
+ANDROCKI PAL DIPL ING
+ANDULAJEVIĆ STEVO
+ANGEBRANT ILONKA
+ANGELESKI VANGEL
+ANGELOV DUŠAN
+ANGELOV SREĆKO
+ANGELOVSKI DUŠAN
+ANGELOVSKI ILIJA
+ANGELOVSKI JANDRE
+ANGELOVSKI MITRE
+ANGELOVSKI TOMO
+ANIČIĆ ŽIVOTA
+ANIČIĆ BRANISLAV
+ANIČIĆ DRAGAN
+ANIČIĆ DUŠAN DIPL OEC
+ANIČIĆ FILIP
+ANIČIĆ ILIJA
+ANIČIĆ KOVINKA
+ANIČIĆ MILENA DIPL ECC
+ANIČIĆ MIRKO
+ANIČIĆ MIRO
+ANIČIĆ MIRO
+ANIČIĆ NENAD
+ANIČIĆ OSTOJA
+ANIČIĆ PREDRAG
+ANIČIĆ STAKA
+ANIČIĆ STOJANKA
+ANIČIĆ TODOR
+ANIČIĆ ZDRAVKO
+ANIČIN ŽARKO
+ANIČIN BRANISLAV
+ANIŠIĆ JASMINKA
+ANIĆ DUŠAN
+ANIĆ SLOBODAN
+ANIĆ ZORA
+ANIKA GAVRILO
+ANIKA JULIJE PROFESOR
+ANITIĆ IŠTVAN
+ANKIĆ MARJAN
+ANKIĆ PERICA
+ANOJČIĆ ŽELJKO
+ANOJČIĆ LAZAR
+ANOJČIĆ MILAN
+ANOJČIĆ RADIVOJ
+ANOJČIĆ RADIVOJ
+ANOJČIĆ SPASOJE
+ANOJČIĆ-STOJKOVIĆ JASMINKA
+ANTAL ALEKSANDAR
+ANTAL VERONA
+ANTANASIĆ STANKO
+ANTANASIJEVIĆ BORA
+ANTELJEVIĆ ALEKSANDAR
+ANTIĆ ĐOKA
+ANTIĆ ĐORĐE
+ANTIĆ ĐORĐE
+ANTIĆ ALEKSANDAR
+ANTIĆ ANGELINA
+ANTIĆ BOŠKO
+ANTIĆ BOŽIDAR DR STOMATOLOG
+ANTIĆ BOŽIDAR
+ANTIĆ BRANKO
+ANTIĆ BRATISLAV
+ANTIĆ DIMITRIJE
+ANTIĆ DRAGAN
+ANTIĆ DRAGAN
+ANTIĆ DRAGIŠA
+ANTIĆ DUŠANKA
+ANTIĆ DUŠANKA
+ANTIĆ JULKA
+ANTIĆ KOSTA
+ANTIĆ LJUBIŠA
+ANTIĆ LUKA
+ANTIĆ MARICA
+ANTIĆ MARIJA
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILIVOJ
+ANTIĆ MILUTIN
+ANTIĆ MIODRAG
+ANTIĆ MIRKO
+ANTIĆ MIRKO
+ANTIĆ NENAD
+ANTIĆ NEVENA
+ANTIĆ OLGA
+ANTIĆ PAVLE
+ANTIĆ PAVLE
+ANTIĆ PAVLE
+ANTIĆ PETAR
+ANTIĆ RADOJKO
+ANTIĆ RADOMIR
+ANTIĆ RADOVAN
+ANTIĆ SLAĐANA
+ANTIĆ SLAVICA
+ANTIĆ SLOBODAN
+ANTIĆ SMILJA
+ANTIĆ SMILJA
+ANTIĆ SOFIJA
+ANTIĆ STANČA
+ANTIĆ STANISLAV
+ANTIĆ STANOJE
+ANTIĆ STOJAN
+ANTIĆ SVETISLAV
+ANTIĆ SVETLANA
+ANTIĆ SVETOVID
+ANTIĆ VERICA
+ANTIĆ VUKAŠIN
+ANTIĆ ZAGORKA
+ANTIĆ ZLATAN
+ANTIN IVANKA
+ANTIN VELEMIR
+ANTOLOVIĆ IVAN
+ANTONIĆ ŽIVKO DIPL ING
+ANTONIĆ ŽIVKO
+ANTONIĆ ĐORĐE
+ANTONIĆ BORIVOJ
+ANTONIĆ BRANKO
+ANTONIĆ DOBRIVOJ
+ANTONIĆ DRAGAN
+ANTONIĆ DRAGAN
+ANTONIĆ GORDANA
+ANTONIĆ JADRANKA
+ANTONIĆ JASMINKA
+ANTONIĆ JELENA
+ANTONIĆ LJUBICA
+ANTONIĆ MARIJA
+ANTONIĆ MILAN
+ANTONIĆ MILAN
+ANTONIĆ MILAN
+ANTONIĆ MILIVOJ
+ANTONIĆ NEBOJŠA DIPL ING
+ANTONIĆ RADISAV
+ANTONIĆ RANKO
+ANTONIĆ RATKO
+ANTONIĆ SIMA
+ANTONIĆ SLAVICA
+ANTONIĆ SLOBODAN
+ANTONIĆ SLOBODAN
+ANTONIĆ STEVAN
+ANTONIĆ ZORKA
+ANTONIJEVIĆ ALEKSANDAR
+ANTONIJEVIĆ BILJANA
+ANTONIJEVIĆ BOŽUR
+ANTONIJEVIĆ BRANKO
+ANTONIJEVIĆ DAMNJAN
+ANTONIJEVIĆ DUŠAN DR
+ANTONIJEVIĆ DUŠAN
+ANTONIJEVIĆ LJILJA
+ANTONIJEVIĆ PETAR
+ANTONIJEVIĆ STEVA
+ANTONINI MARIJA
+ANTONOVIĆ MILIVOJ
+ANTOVIĆ LJUBICA
+ANTUN MILOŠ
+ANTUNOVIĆ ANDRIJA
+ANTUNOVIĆ BOGDAN
+ANTUNOVIĆ GIZELA
+ANTUNOVIĆ LAZAR
+ANTUNOVIĆ MLADEN
+ANTUNOVIĆ MOMČILO
+ANTUNOVIĆ NEDA
+ANTUNOVIĆ TOMISLAV
+ANUČIN NENAD
+ANUKIĆ KOSTA
+APARAC SVETOZAR
+APATOVIĆ JOVAN
+APATOVIĆ LAZAR
+APATOVIĆ NIKOLA
+APATOVIĆ SAVA
+APERLIĆ VOJIN
+APIĆ ĐORĐE
+APIĆ ANKICA
+APIĆ BRANKO DR VETERINE
+APIĆ BRANKO
+APIĆ DUŠAN
+APIĆ JULKA
+APIĆ KATARINA
+APIĆ MILAN
+APIĆ MILAN
+APIĆ MILICA
+APIĆ MILOŠ
+APIĆ MILORAD
+APIĆ MIRJANA
+APIĆ MIROSLAV
+APIĆ OLIVERA
+APIĆ PAJA
+APIĆ PAJA
+APIĆ RADIŠKO
+APIĆ RADIVOJE
+APIĆ RATOMIR DIPL ING
+APIĆ SRETA
+APIĆ STEVAN
+APIĆ STOJAN
+APIĆ SVETOZAR
+APIĆ SVETOZAR
+APIĆ VERA
+APIĆ ZDRAVKO
+APIĆ ZORKA
+APOSTOLOV LJUBOMIR
+APOSTOLOVIĆ BOŽIDAR
+APOSTOLOVIĆ MILORAD
+APRO FRANJA
+APRO JANOŠ
+APRO JOŽEF
+APRO LASLO
+APRO LJUBOMIR
+APRO RIHARD
+APRO-SAMARDŽIJA VERA DR
+APRO STEVAN
+APRO ZOLTAN
+APT BOGOLJUB
+APT MARKO
+ARŠINOV ĐORĐE
+ARŠINOV MILORAD
+ARĐELAM-ŠRAK EDIT
+ARĐELAN IŠTVAN
+ARAČIĆ SLOBODAN
+ARAĐANIN TIMOTIJE
+ARAĐANSKI KATICA
+ARAĐANSKI NADA
+ARAĐANSKI-RAJKOV MAJA
+ARACKI ERŽIKA
+ARACKIĆ ĐORĐE
+ARACKIĆ MILICA
+ARACKIĆ ZLATOJE DIPL PRAVNIK
+ARADSKI ALEKSANDAR DIPL ING
+ARADSKI IVANKA
+ARADSKI MILORAD
+ARADSKI MITA
+ARADSKI RADIVOJ
+ARADSKI SOFIJA
+ARADSKI SRETENKA
+ARADSKI STOJANKA
+ARADSKI ZLATA
+ARALICA RAJKO
+ARAMBAŠIĆ ĐORĐE
+ARAMBAŠIĆ DRAGAN
+ARANČIĆ ALEKSANDAR
+ARANČIĆ KARLO
+ARANĐELOVIĆ ALEKSANDAR
+ARANĐELOVIĆ BOŽIDAR
+ARANĐELOVIĆ DIMITRIJE
+ARANĐELOVIĆ NJEGOVAN
+ARANĐELOVIĆ SAVA
+ARANĐELOVIĆ SRETEN
+ARANĐUS ANTON
+ARANICKI DINKA
+ARANICKI GLIGORIJE
+ARANICKI MILANA
+ARANICKI MILICA
+ARANICKI MILOŠ DR PROF
+ARANICKI ZAGORKA
+ARANICKI ZORICA
+ARANITOVIĆ LAZAR
+ARANJOŠ PAL
+ARAPČIĆ PAŠAGA
+ARAPINAC MILICA
+ARAPOVIĆ DRAGO
+ARAPOVIĆ DRAGUTIN
+ARAR PETAR
+ARAS BRANKO
+ARAS JUGOSLAV
+ARAS LJUBO
+ARBES NENAD
+ARBUNIĆ PERA
+ARBUTINA ĐURĐINKA
+ARBUTINA BRANISLAV
+ARBUTINA MARIJA
+ARBUTINA NATALIJA
+ARBUTINA VELIMIR
+ARBUTINA VLADIMIR
+ARDŽON NATALIJA
+ARDALIĆ JOVANKA
+ARDALIĆ LEPOSAVA
+ARDALIĆ SLAVKO
+ARDELJAN JON
+ARDELJAN MARIJA
+ARDELJAN PETAR
+ARDOCKI IŠTVAN
+AREŽINA ĐORĐE
+AREŽINA BOŠKO
+ARIFI IBRAHIM
+ARIFOVIĆ SRBICA
+ARIZATOVIĆ JASMINA
+ARKULA BLAŽE
+ARKULA SLAVICA
+ARKULA SLAVICA
+ARLOV DRAGAN
+ARMACKI BRANISLAV
+ARMACKI RADOVAN
+ARMACKI SOFIJA
+ARMACKI STEVAN
+ARMBRUSTER LASLO
+ARMBRUSTER MARIJA
+ARNAUT ĐORĐE
+ARNAUT DRAGINJA
+ARNAUT MILICA
+ARNAUT VASA
+ARNOUS TEREZA
+ARNOVLJEVIĆ KATARINA
+AROK-DIVJAK GORDANA
+ARPAŠI ĐORĐE
+ARPAŠI LASLO
+ARSENIĆ ŽIVKO
+ARSENIĆ BRATISLAVA
+ARSENIĆ DIMITRIJE
+ARSENIĆ DRAŠKO
+ARSENIĆ JOVANKA
+ARSENIĆ MOMIR
+ARSENIĆ OLGICA
+ARSENIĆ VELJKO
+ARSENIJEVIĆ BORISLAV
+ARSENIJEVIĆ JOVAN
+ARSENIJEVIĆ MILAN
+ARSENIJEVIĆ MILORAD
+ARSENIJEVIĆ MILOVAN
+ARSENIJEVIĆ MILUNKA
+ARSENIJEVIĆ MOMČILO DR
+ARSENIJEVIĆ MOMČILO
+ARSENIJEVIĆ MOMIR
+ARSENIJEVIĆ SLAVKA
+ARSENIJEVIĆ SMILJA
+ARSENIJEVIĆ VOJISLAV
+ARSENIJEVIĆ VOJISLAV
+ARSENIN ĐURĐINKA
+ARSENIN ALEKSANDAR
+ARSENIN ALEKSANDAR
+ARSENIN BOGOLJUB
+ARSENIN GAJA
+ARSENIN JOVAN
+ARSENIN JOVAN
+ARSENIN KOSTA
+ARSENIN KRISTINA
+ARSENIN MARIJA
+ARSENIN MITA
+ARSENIN MLADEN
+ARSENIN MLADEN
+ARSENIN SVETOZAR
+ARSENIN VITOMIR
+ARSENIN VLADIMIR
+ARSENJEV ALEKSEJ
+ARSENOV ALEKSA
+ARSENOV ARIŠKO
+ARSENOV BRANISLAV
+ARSENOV BRANISLAV
+ARSENOV BRANISLAV
+ARSENOV DRAGICA
+ARSENOV KATICA
+ARSENOV MILAN
+ARSENOV MIROSLAV
+ARSENOV PERA
+ARSENOV PETAR
+ARSENOV PETAR
+ARSENOV RADIVOJ
+ARSENOV SAŠA
+ARSENOV VASILIJE
+ARSENOVIĆ ŽIVKO
+ARSENOVIĆ MARICA
+ARSENOVIĆ NADA DR
+ARSENOVIĆ RADISAV
+ARSENOVIĆ RADOMIR
+ARSENOVIĆ SAVO
+ARSENOVIĆ SRĐAN
+ARSENOVIĆ STOJADIN
+ARSENOVIĆ TRIVO
+ARSENOVIĆ VESNA
+ARSENOVIĆ VLADA
+ARSENOVIĆ ZORAN
+ARSIĆ ČEDOMIR
+ARSIĆ ŽARKO
+ARSIĆ ŽIVKO
+ARSIĆ ALEKSANDAR
+ARSIĆ DOBRIVOJE
+ARSIĆ DUŠKO
+ARSIĆ ERŽEBET
+ARSIĆ LAZAR
+ARSIĆ LIDIJA
+ARSIĆ LJUBIŠA
+ARSIĆ MARIJA
+ARSIĆ MIHAILO
+ARSIĆ MIHOLJKA
+ARSIĆ MILOŠ
+ARSIĆ MILOSLAV DR
+ARSIĆ MILUTIN
+ARSIĆ MIODRAG
+ARSIĆ MIOMIR
+ARSIĆ MIRJANA
+ARSIĆ MIRJANA
+ARSIĆ MOMČILO
+ARSIĆ OBRAD
+ARSIĆ PERICA
+ARSIĆ PETAR
+ARSIĆ RADOMIR
+ARSIĆ RADOSAV
+ARSIĆ SAVETA
+ARSIĆ SLAVKA
+ARSIĆ SLAVOJKA
+ARSIĆ SLAVOLJUB
+ARSIĆ STANKO
+ARSIĆ TOMISLAV
+ARSIĆ TOMISLAV
+ARSIĆ TOMISLAV
+ARSIĆ TRAJAN
+ARSIĆ ZORAN
+ARSIĆ ZORAN
+ARSIĆ ZORAN
+ARSIKIN MILANKO
+ARSIKIN PAVLE
+ARSLANAGIĆ NAĐA
+ARSOVIĆ ALEKSANDAR
+ARSOVIĆ DOBROSAV
+ARSOVIĆ JOVAN
+ARSOVIĆ MATEJA
+ARSOVIĆ MILAN
+ARSOVIĆ MILICA
+ART ĐURA
+ART ZVONIMIR
+ARTUKOV DUŠAN
+ARTUKOV OLGA
+ARULA MIĆO
+ARVAI ALEKSANDAR
+ARVAI ARPAD
+ARVAI DANICA
+ARVAI PAVAO
+ARVAI TEREZA
+ARVAJI PAVAO
+ARVANITIDIS STERJOS
+ASANI ASAN
+ASANI HURIŠA
+ASANI NAILJA
+ASANI NAZIFA
+ASANOV ZORA
+ASANOVIĆ MILEVA
+ASANOVIĆ STANKA
+ASANOVIĆ ZUHRA
+ASANOVSKI ROZALIJA
+ASIĆ MILAN
+ASODI JANOŠ
+ASODI JOŽEF
+ASODI MIRKO
+ASOTIĆ MUAMER
+ASTAHOV-JEREMIĆ MARIJA
+ASTALOŠ IŠTVAN
+ASURDŽIĆ KRISTINA
+ASURDŽIĆ LUKA
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MOLOŠ
+ASURDŽIĆ NIKOLA
+ASURDŽIĆ NIKOLA
+ASURDŽIĆ SOFIJA
+ASURDŽIĆ STEVAN
+ASURDŽIĆ TEODOR
+ASURDŽIĆ TEODOR
+ATANACKOV ĐORĐE
+ATANACKOV BORA
+ATANACKOV BORIVOJ
+ATANACKOV DRAGAN
+ATANACKOV ILONA
+ATANACKOV MARIJA
+ATANACKOV MIRJANA
+ATANACKOV MIRKO
+ATANACKOV NOVA
+ATANACKOV OLGA
+ATANACKOV PAVLE
+ATANACKOV SAŠA
+ATANACKOV STEVAN
+ATANACKOV STEVAN
+ATANACKOVIĆ ŽIVAN
+ATANACKOVIĆ ĐORĐE
+ATANACKOVIĆ ALEKSANDAR
+ATANACKOVIĆ ANA
+ATANACKOVIĆ BOGOBOJ
+ATANACKOVIĆ BORISLAV
+ATANACKOVIĆ BORISLAV
+ATANACKOVIĆ BRANKA DIPL PRAVNIK
+ATANACKOVIĆ DRAGIŠA DR
+ATANACKOVIĆ DUŠAN DR LEKAR
+ATANACKOVIĆ GRADIMIR
+ATANACKOVIĆ IVAN
+ATANACKOVIĆ KATARINA
+ATANACKOVIĆ LAZA
+ATANACKOVIĆ LUKA
+ATANACKOVIĆ MILENKO
+ATANACKOVIĆ MILENKO
+ATANACKOVIĆ MIRKO
+ATANACKOVIĆ MLADEN
+ATANACKOVIĆ RATKO
+ATANACKOVIĆ SAVA
+ATANACKOVIĆ SLAĐANA
+ATANACKOVIĆ STEVAN
+ATANACKOVIĆ SVETOMIR
+ATANACKOVIĆ TEODOR DR
+ATANACKOVIĆ TOŠA
+ATANACKOVIĆ VASILJKA
+ATANACKOVIĆ VLADIMIR DIPL ING
+ATANACKOVIĆ ZORAN
+ATANASIADIS HRISTOFOROS
+ATANASIJADIS ANESTI
+ATANASKOVIĆ GORDANA
+ATANASKOVIĆ MIRJANA
+ATANASKOVIĆ MIROLJUB
+ATANASOSKI STEVO
+ATANASOV MARKO
+ATANASOVSKI RISTO
+ATARAC DRAGOŠ
+ATELJEVIĆ DUŠAN
+ATELJEVIĆ MILOVAN
+ATIĆ DANICA
+ATLAGIĆ BRANKO
+ATLAGIĆ JOVAN
+ATLAGIĆ MILAN
+ATLAGIĆ MILICA
+ATLAGIĆ ZDRAVKO
+ATLAGIĆ ZDRAVKO
+ATLAS ĐORĐE DR
+ATLAS IVAN
+ATLAS MIRKO
+ATLIĆ LAZAR
+ATLIĆ MILAN
+AUŽINA MILICA
+AUŽINA MIRA
+AUŽINA MIROSLAVA
+AUER MARA
+AUGUSTIN IVICA
+AUGUSTINOV ANTON
+AUGUSTINOV IVAN
+AULIK ILONA
+AURELIJAN ĐAN
+AVAKUMOVIĆ LJUBINKA
+AVAKUMOVIĆ NIKOLA
+AVDALOVIĆ GORDANA
+AVDALOVIĆ MILADIN
+AVDALOVIĆ VIDOSAVA
+AVDALOVIĆ VLADIMIR
+AVDI RAMADAN
+AVDIĆ ALEKSANDAR
+AVDIĆ FUAD
+AVDIĆ GORDANA
+AVDIĆ HUSNIJA
+AVDIĆ MALIĆ
+AVDIĆ MULIJA
+AVEMARIA PETAR
+AVRAMOV BOŠKO
+AVRAMOV BRANISLAV
+AVRAMOV DIMITRIJE
+AVRAMOV DOBRILA
+AVRAMOV GAVRA
+AVRAMOV IVAN
+AVRAMOV JOVANKA
+AVRAMOV JOVAN
+AVRAMOV LJILJANA
+AVRAMOV MILADIN
+AVRAMOV MILEVA
+AVRAMOV MILKA
+AVRAMOV MIRJANA
+AVRAMOV MITA
+AVRAMOV PAJA
+AVRAMOV PERA
+AVRAMOV PETAR
+AVRAMOV RADIVOJ
+AVRAMOV STEVAN
+AVRAMOV SVETOLIK
+AVRAMOV SVETOLIK
+AVRAMOV ZORAN
+AVRAMOV ZORAN
+AVRAMOVIĆ ŽIVKO
+AVRAMOVIĆ BORIVOJE
+AVRAMOVIĆ DARINKA
+AVRAMOVIĆ DIMITRIJE
+AVRAMOVIĆ DIMITRIJE
+AVRAMOVIĆ DRAGO
+AVRAMOVIĆ FRANCIŠKA
+AVRAMOVIĆ GOJKO
+AVRAMOVIĆ ILINKA
+AVRAMOVIĆ JOVAN DR LEKAR
+AVRAMOVIĆ LJUBIŠA
+AVRAMOVIĆ LJUBINKO
+AVRAMOVIĆ LJUBOMIR
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILIVOJ
+AVRAMOVIĆ MIRJANA
+AVRAMOVIĆ MITA
+AVRAMOVIĆ MOMIR
+AVRAMOVIĆ NIKOLA
+AVRAMOVIĆ RADIVOJ
+AVRAMOVIĆ RADOSLAV
+AVRAMOVIĆ RATKO
+AVRAMOVIĆ RATKO
+AVRAMOVIĆ SINIŠA
+AVRAMOVIĆ STANKA
+AVRAMOVIĆ STEVAN
+AVRAMOVIĆ TEODOR
+AVRAMOVIĆ TOMA
+AVRAMOVIĆ VELJKO
+AVRAMOVIĆ VERA
+AVRAMOVIĆ VERA
+AVRAMOVIĆ VERA
+AVRAMOVSKI BORIS
+AZLEN BORISLAV
+BAČA ŠANDOR
+BAČA LADISLAV
+BAČANOVIĆ NENAD
+BAČIĆ ČEDOMIR PROFESOR
+BAČIĆ ŽIVKO
+BAČIĆ ĐORĐE
+BAČIĆ ANTE
+BAČIĆ BRANKA
+BAČIĆ DRAGOSLAV
+BAČIĆ JOVAN
+BAČIĆ KARA
+BAČIĆ MARIJA
+BAČIĆ MILAN DR VETERINE
+BAČIĆ MILICA
+BAČIĆ MIRKO
+BAČIĆ NIKOLA
+BAČIĆ SMILJANA
+BAČKALIĆ ĐORĐE
+BAČKALIĆ ALEKSANDAR
+BAČKALIĆ DOBRA
+BAČKALIĆ DOBRICA
+BAČKALIĆ JOVAN
+BAČKALIĆ LAZAR
+BAČKALIĆ LJUBICA
+BAČKALIĆ LJUBOMIR
+BAČKALIĆ MILAN
+BAČKALIĆ MILA
+BAČKALIĆ NOVAK
+BAČKO MILANA
+BAČKO PETAR
+BAČLIĆ ĐORĐE
+BAČLIĆ BRANISLAV
+BAČLIĆ LAZAR
+BAČLIĆ LJUBICA
+BAČLIJA JOSIP
+BAČLIJA MARKO
+BAČLIJA RUŽICA
+BAČLIJA SLAVICA
+BAČULOV STEVAN
+BAČVANIN ŽIVOJIN
+BAČVANSKI BOŠKO
+BAČVANSKI STEVAN DR ING
+BAŠ JULIA
+BAŠA DUŠAN
+BAŠA JOVAN
+BAŠEVIĆ ČEDOMIR
+BAŠEVIĆ NEVENKA
+BAŠIČEVIĆ VOJIN DR
+BAŠIČEVIĆ VOJIN
+BAŠIĆ ŽARKO
+BAŠIĆ ĐURO
+BAŠIĆ ALEKSANDAR
+BAŠIĆ BILJANA
+BAŠIĆ BOŽO
+BAŠIĆ DRAGUTIN
+BAŠIĆ DRAGUTIN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ FRANJO
+BAŠIĆ GAVRA
+BAŠIĆ GRUJICA
+BAŠIĆ IDRIZ
+BAŠIĆ ILIJA
+BAŠIĆ JANKO
+BAŠIĆ JELA
+BAŠIĆ JELENA
+BAŠIĆ JOVAN
+BAŠIĆ JOVAN
+BAŠIĆ JURE
+BAŠIĆ LAZAR
+BAŠIĆ LJUBICA
+BAŠIĆ LJUBICA
+BAŠIĆ LUKA
+BAŠIĆ MARIJA
+BAŠIĆ MILAN
+BAŠIĆ MILAN
+BAŠIĆ MILA
+BAŠIĆ MILICA
+BAŠIĆ MILUTIN DIPL ING
+BAŠIĆ MITA
+BAŠIĆ NEDELJKA
+BAŠIĆ NESTOR
+BAŠIĆ NIKOLA
+BAŠIĆ PAVLE
+BAŠIĆ PETAR
+BAŠIĆ RADOSLAV
+BAŠIĆ SAVA
+BAŠIĆ SAVA
+BAŠIĆ SIMKA
+BAŠIĆ SLOBODANKA
+BAŠIĆ SLOBODANKA
+BAŠIĆ SLOBODAN
+BAŠIĆ SLOBODAN
+BAŠIĆ SONJA
+BAŠIĆ SPASOJE
+BAŠIĆ STEVAN
+BAŠIĆ TOMISLAV
+BAŠIĆ VERA
+BAŠIĆEVIĆ DESA
+BAŠICA MILAN
+BAŠICA RANKO
+BAŠICA RISTO
+BAŠKALO MARKO
+BAŠNEC IVAN
+BAŠTIĆ BOŽIDAR
+BAŠTIĆ MILKA
+BAŠTIĆ PETAR
+BAŠTOVANOV DANICA
+BAŠTOVANOV STEVAN
+BAŠTOVANOVIĆ IVAN
+BAŠTOVANOVIĆ MILAN
+BAĆAN DRAGOMIR
+BAĆANOV DRAGICA
+BAĆANOV STANKO
+BAĆANOV STEVAN
+BAĆANOVIĆ DANICA
+BAĆANOVIĆ JUCA
+BAĆANOVIĆ MILAN
+BAĆANOVIĆ MILOŠ
+BAĆANOVIĆ NEMANJA
+BAĆANOVIĆ SINIŠA
+BAĆANOVIĆ STOJAN
+BAĆIĆ LJILJANA
+BAĆIĆ LJUBOMIR
+BAĆINA MLADEN
+BAĆINAC RADOSLAV
+BAŽANČIK BELA
+BAŽANTIK MARA
+BAŽDAR BRUNO
+BAŽDAR MILORAD
+BAŽENOV ANGELINA
+BAĐI ŠANDOR
+BAĐI-RIBAR RENATA
+BAĐIN SMILJKA
+BABA ILONKA
+BABA JANOŠ
+BABA JON
+BABAJIĆ ALEKSANDAR
+BABARIKIN MARKO
+BABEC ZORAN
+BABI IVAN
+BABIĆ ŽARKO
+BABIĆ ŽELJKA
+BABIĆ ŽIVAN
+BABIĆ ŽIVAN
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐURĐICA
+BABIĆ ĐURA
+BABIĆ ĐURA
+BABIĆ ĐURO
+BABIĆ ACA
+BABIĆ AIDA
+BABIĆ ALEKSANDAR
+BABIĆ ALEKSANDAR
+BABIĆ ALEKSANDRA
+BABIĆ ALEKSA
+BABIĆ ALKA
+BABIĆ ANA
+BABIĆ ANA
+BABIĆ ANA
+BABIĆ BILJANA
+BABIĆ BOŽICA
+BABIĆ BOŽIDARKA
+BABIĆ BOGDAN
+BABIĆ BOJA
+BABIĆ BORIŠA
+BABIĆ BORISLAVA
+BABIĆ BORIVOJE
+BABIĆ BRANKO
+BABIĆ CVIJO
+BABIĆ DANE
+BABIĆ DARINKA
+BABIĆ DAVID
+BABIĆ DRAŠKO
+BABIĆ DRAGANA
+BABIĆ DRAGAN
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGO
+BABIĆ DUŠANKA
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠICA
+BABIĆ GOJKO
+BABIĆ GOJKO
+BABIĆ GORAN
+BABIĆ GORDANA
+BABIĆ GORICA
+BABIĆ GOSPAVA
+BABIĆ HELENA
+BABIĆ ILIJA
+BABIĆ ILIJA
+BABIĆ ILIJA
+BABIĆ ILINKA
+BABIĆ IVAN
+BABIĆ IVAN
+BABIĆ IVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ KATICA
+BABIĆ KAZIMIR
+BABIĆ-KOPLJAN ROŽA
+BABIĆ KOSA
+BABIĆ KOSTADIN
+BABIĆ KOSTA
+BABIĆ KRSTA
+BABIĆ LAZO
+BABIĆ LAZO
+BABIĆ LEONID
+BABIĆ LJILJANA
+BABIĆ LJILJANA
+BABIĆ LJILJANA
+BABIĆ LJUBIŠA
+BABIĆ LJUBICA
+BABIĆ LJUBOMIR
+BABIĆ LJUBOMIR
+BABIĆ LUKA
+BABIĆ MAJA
+BABIĆ MARIJANA
+BABIĆ MARIJA
+BABIĆ MARINKO
+BABIĆ MARKO
+BABIĆ MATO
+BABIĆ MIJO
+BABIĆ MILADIN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILETA
+BABIĆ MILEVA
+BABIĆ MILEVA
+BABIĆ MILIĆ
+BABIĆ MILIVOJE DIPL ING
+BABIĆ MILIVOJ
+BABIĆ MILIVOJ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILORAD
+BABIĆ MILORAD
+BABIĆ MILORAD
+BABIĆ MILOSAV
+BABIĆ MIRA
+BABIĆ MIRA
+BABIĆ MIRJANA
+BABIĆ MIROSLAV
+BABIĆ MIROSLAV
+BABIĆ MIROSLAV
+BABIĆ MOMČILO
+BABIĆ MOMIR
+BABIĆ-MRKŠIĆ JULKA
+BABIĆ MURIZ
+BABIĆ NADA
+BABIĆ NADA
+BABIĆ NADA
+BABIĆ NATAŠA
+BABIĆ NEDELJKO
+BABIĆ NENAD
+BABIĆ NIKOLA
+BABIĆ NIKOLA
+BABIĆ NIKOLA
+BABIĆ OLGICA
+BABIĆ OSTOJA
+BABIĆ OSTOJA
+BABIĆ PERSA
+BABIĆ PERSIDA
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PREDRAG
+BABIĆ RADENKO
+BABIĆ RADE
+BABIĆ RADE
+BABIĆ RADINKA
+BABIĆ RADISAV
+BABIĆ RADIVOJE
+BABIĆ RADOJE
+BABIĆ RADOJKA
+BABIĆ RADOJKA
+BABIĆ RADOMIR
+BABIĆ RADOSLAV
+BABIĆ RADOVAN
+BABIĆ RADOVAN
+BABIĆ RAJKO
+BABIĆ RAJKO
+BABIĆ RANKO
+BABIĆ SAŠA
+BABIĆ SAVO
+BABIĆ SLADE
+BABIĆ SLAVICA
+BABIĆ SLOBODAN
+BABIĆ SLOBODAN
+BABIĆ SMILJKA
+BABIĆ SMILJKA
+BABIĆ SNEŽANA
+BABIĆ SOFIJA
+BABIĆ STAKA
+BABIĆ STANKO
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVO
+BABIĆ SVETLANA
+BABIĆ SVETLANA
+BABIĆ TOMO
+BABIĆ VASA
+BABIĆ VASA
+BABIĆ VERA
+BABIĆ VERICA
+BABIĆ VESNA
+BABIĆ VIDOSAVA
+BABIĆ VUJO
+BABIĆ VUKMAN
+BABIĆ ZAGORKA
+BABIĆ ZDRAVKO
+BABIĆ ZORAN
+BABIĆ ZORAN
+BABIĆ ZORKA
+BABIJANOVIĆ JULKA
+BABILON VLADIMIR
+BABILON VLADIMIR
+BABIN ĐORĐE
+BABIN BOGDAN
+BABIN BRANISLAV
+BABIN DIMITRIJE
+BABIN DUŠAN
+BABIN JOVAN
+BABIN KATARINA
+BABIN KRISTINA
+BABIN LAZAR
+BABIN LJUBOMIR
+BABIN MARIJA
+BABIN MARIN
+BABIN MIHAJLO
+BABIN MILAN
+BABIN MILENA
+BABIN MILENKO DR ING
+BABIN MILENKO
+BABIN MIODRAG
+BABIN MIRJANA
+BABIN MIRJANA
+BABIN NADA
+BABIN NIKOLA
+BABIN PETAR
+BABIN RADOJKA
+BABIN SAVA
+BABIN ZORAN
+BABJAK SLOBODAN
+BABKA JAN
+BABORAC DRAGAN
+BABOVIĆ ČEDOMIR
+BABOVIĆ BRANISLAV
+BABOVIĆ JASMINA
+BABOVIĆ JELENA
+BABOVIĆ JOVAN
+BABOVIĆ LJUBOMIR
+BABOVIĆ MIHAILO
+BABOVIĆ MILISAV
+BABOVIĆ MOMČILO
+BABOVIĆ SINIŠA DR
+BABOVIĆ TOMISLAV
+BABOVIĆ ZORA
+BACKOVIĆ DOBROSLAV
+BACKOVIĆ DRAGAN
+BACKOVIĆ MARIJA
+BACKOVIĆ MILICA
+BACKOVIĆ MILIVOJE
+BACKOVIĆ MILORAD
+BACKOVIĆ MILOVAN
+BACKOVIĆ RADIVOJE
+BADA IŠTVAN
+BADALIĆ MAJDA
+BADANJAC JELENA
+BADNJAR MILAN
+BADNJAR MILIVOJE
+BADNJAR VLADO
+BADNJAREVIĆ ALEKSANDAR DIPL PRAVNIK
+BADNJAREVIĆ BOŽIDAR
+BADNJAREVIĆ MILANA
+BADNJAREVIĆ MIODRAG
+BADNJAREVIĆ RADOŠ
+BADNJAREVIĆ STANA
+BADOVINAC DRAGUTIN
+BADOVINAC NIKOLA
+BADRKIĆ NIKOLA
+BADRLJICA DUŠICA
+BADRLJICA GAVRA
+BADRLJICA LAZAR
+BADRLJICA MLADEN
+BADRLJICA OLGA
+BADRLJICA PETAR
+BADRLJICA RADOJKA
+BAFUS LASLO
+BAGI ĐULA
+BAGI-BENKOVIĆ PAL
+BAGI FERENC
+BAGI IŠTVAN
+BAGI JANOŠ
+BAGIĆ MIRJANA
+BAGINJ LAZAR
+BAGINJ LEPOSAVA
+BAGLAVA MILAN
+BAGONJA JAN
+BAGONJA MARIJA
+BAGONJA NADA
+BAH ERNA
+BAHMAN MARKO
+BAHTIJAREVIĆ JELA
+BAHUN NIKOLA
+BAHUN PETAR
+BAIĆ MIRKO
+BAIĆ STANA
+BAJČETA MOMČILO
+BAJČETA RADOSLAV
+BAJČETIĆ BOGDAN DR
+BAJČETIĆ LJUBICA
+BAJČETIĆ MARIJA
+BAJČETIĆ MARKO
+BAJČETIĆ MILENKO
+BAJČETIĆ MIRKO
+BAJČETIĆ PAVLE
+BAJČETIĆ PETAR
+BAJČEV JOVAN
+BAJČEV MIRJANA
+BAJŠANSKI DRAGOSLAV
+BAJŠANSKI JOVAN
+BAJŠANSKI LJILJANA
+BAJŠANSKI MILADIN
+BAJŠANSKI MILENKO
+BAJŠANSKI RADOVAN
+BAJŠANSKI SAVA
+BAJŠANSKI SAVA
+BAJŠANSKI SMILJA
+BAJŠANSKI ZORAN
+BAJŠEV DRAGOMIR
+BAJŠEV ILIJA
+BAJŠEV MILICA
+BAJŠEV STEVAN
+BAJŠEV SVETISLAV
+BAJŠIĆ ŽARKO
+BAJŠIĆ DRAGAN
+BAJŠIĆ MILAN
+BAJA ĐORĐE
+BAJA STEVAN
+BAJAC BORISLAV
+BAJAC EMILIJA DR
+BAJAC ISAK
+BAJAC LJUBICA
+BAJAC MILAN
+BAJAC MILOŠ
+BAJAC MILUTIN
+BAJAC SVETLANA
+BAJAC VERA
+BAJAGIĆ KATICA
+BAJAGIĆ MILENA
+BAJAGIĆ MIODRAG
+BAJAGIĆ MOMČILO
+BAJAGIĆ MOMČILO
+BAJAGIĆ PETAR
+BAJAGIĆ RADA
+BAJAGIĆ RADE
+BAJAGIĆ SAVO
+BAJAGIĆ SVETOZAR
+BAJAGIĆ TAMARA
+BAJAKIĆ MARA
+BAJALO JOVANKA
+BAJALOVIĆ SOFIJA
+BAJALOVIĆ SVETISLAV
+BAJAT MILORAD
+BAJAT MIRKO
+BAJAT MIRKO
+BAJAT NEDELJKO
+BAJAT NIKOLA
+BAJAT RADOVAN
+BAJAT TRIFUN
+BAJAT VELIMIR
+BAJAZET JEVGENIJA
+BAJAZET TODOR
+BAJAZET VERA DIPL ING
+BAJAZETOV DRAGAN
+BAJAZETOV DRAGAN
+BAJAZETOV RADIVOJ
+BAJAZIT MILAN
+BAJBARAK IVAN
+BAJGO ZOLTAN
+BAJI ARANKA
+BAJI-HRIBAR JULIJA
+BAJI STEVAN
+BAJIĆ ČEDOMIR
+BAJIĆ ŽARKO
+BAJIĆ ŽIKA
+BAJIĆ ŽIVKO
+BAJIĆ ŽIVOJIN
+BAJIĆ ĐORĐE DR
+BAJIĆ ĐURA
+BAJIĆ ĐURO
+BAJIĆ ALEKSANDAR
+BAJIĆ BOŠKO
+BAJIĆ BOŽICA
+BAJIĆ BOGDAN
+BAJIĆ BOGOLJUB
+BAJIĆ BOJKA
+BAJIĆ BORA
+BAJIĆ BORIVOJE
+BAJIĆ BOSILJKA
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANKO
+BAJIĆ DANICA
+BAJIĆ DIMITRIJE
+BAJIĆ DRAGICA
+BAJIĆ DRAGOSLAV
+BAJIĆ DRAGUTIN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠKO
+BAJIĆ GOJKO
+BAJIĆ GORDANA
+BAJIĆ ILIJA
+BAJIĆ ILINKA
+BAJIĆ ILONA
+BAJIĆ JAGOŠ
+BAJIĆ JANKO
+BAJIĆ JANKO
+BAJIĆ JELICA
+BAJIĆ JOVAN
+BAJIĆ JOVAN
+BAJIĆ JOVAN
+BAJIĆ JOVICA
+BAJIĆ KRSTA
+BAJIĆ LAZAR
+BAJIĆ LUKA
+BAJIĆ MARA
+BAJIĆ MARA
+BAJIĆ MARICA
+BAJIĆ MARIJA
+BAJIĆ MARIJA
+BAJIĆ MELANIJA
+BAJIĆ MIĆO
+BAJIĆ MIHAJLO DR
+BAJIĆ MILAN DR PROF
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILENKO
+BAJIĆ MILE
+BAJIĆ MILICA
+BAJIĆ MILKA
+BAJIĆ MILOVAN
+BAJIĆ MIODRAG
+BAJIĆ MIRKO
+BAJIĆ MIRKO
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MITAR
+BAJIĆ MITAR
+BAJIĆ MITA
+BAJIĆ MLADEN
+BAJIĆ MLADEN
+BAJIĆ MLADEN
+BAJIĆ MOMČILO
+BAJIĆ NADA
+BAJIĆ NADA
+BAJIĆ NATAŠA
+BAJIĆ NEĐO
+BAJIĆ NEVENA
+BAJIĆ NIKOLA
+BAJIĆ NIKOLA
+BAJIĆ PERA
+BAJIĆ PERO
+BAJIĆ PERSIDA
+BAJIĆ PETAR
+BAJIĆ PETAR
+BAJIĆ RADE
+BAJIĆ RADE
+BAJIĆ RADE
+BAJIĆ RADIVOJ
+BAJIĆ RADMILA
+BAJIĆ RADOSLAV
+BAJIĆ SAVA
+BAJIĆ SAVO
+BAJIĆ SIMO
+BAJIĆ SINIŠA
+BAJIĆ SLAVKO
+BAJIĆ SLAVKO
+BAJIĆ SNEŽANA
+BAJIĆ SNEŽANA
+BAJIĆ SOFIJA
+BAJIĆ SOFIJA
+BAJIĆ SOFIJA
+BAJIĆ SONJA
+BAJIĆ SPASOJE
+BAJIĆ STANISLAV
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ SVETLANA
+BAJIĆ TODOR
+BAJIĆ TOMISLAV
+BAJIĆ-TURINSKI MIRJANA
+BAJIĆ VASA
+BAJIĆ VASA
+BAJIĆ VERONA
+BAJIĆ VESELIN
+BAJIĆ VIDA
+BAJIĆ VLADIMIR
+BAJIĆ VLADIMIR
+BAJIĆ VLADIMIR
+BAJIĆ ZORANKA
+BAJIĆ ZORAN
+BAJIĆ ZORAN
+BAJIĆ ZORAN
+BAJIĆ ZORICA
+BAJILO DRAGOMIR
+BAJILO DRAGOMIR
+BAJILO DUŠAN
+BAJILO PERO
+BAJILO VIDOSAVA
+BAJILOV LJILJANA
+BAJIN BORISLAV
+BAJIN BRANISLAV
+BAJIN GAVRILO
+BAJIN IVAN
+BAJIN KAĆA
+BAJIN LJUBICA
+BAJIN MILANKA
+BAJIN NADA
+BAJIN RADOJKA
+BAJIN RAJKO
+BAJIN RUŽICA
+BAJIN SAVA
+BAJIN SAVETA
+BAJIN STOJANKA
+BAJKIN ANĐELKO
+BAJKIN STOJAN
+BAJKIN SVETOZAR
+BAJKIN VESELIN
+BAJKIN VITOMIR
+BAJOR MARIJA
+BAJOVIĆ BRANKO
+BAJOVIĆ MARA
+BAJOVIĆ MITAR
+BAJOVIĆ VERA
+BAJRAMI ŠEFKI
+BAJRAMI ŠEFKI
+BAJRAMI AGRON
+BAJRAMI BATIJA
+BAJRAMI GANI
+BAJRAMI SKENDER
+BAJRAMOVIĆ ŠERIF
+BAJRAMOVIĆ HIVZIJA
+BAJRIĆ RADMILA
+BAJS FRANC
+BAJUNOVIĆ MLADEN
+BAJUS JOŽEF
+BAKŠA ĐORĐE
+BAKŠA IMRE
+BAKŠA JOŽEF
+BAKŠA LAJOŠ
+BAKŠA LAJOŠ
+BAKŠA LASLO
+BAKŠA MAGDA
+BAKŠA MIHAJLO
+BAKŠA ZOLTAN
+BAKŠA ZOLTAN
+BAKA ANTAL
+BAKA IŠTVAN
+BAKA IŠTVAN
+BAKA IŠTVAN
+BAKA IBOLJA
+BAKA MILICA
+BAKAI IREN
+BAKAJ IVAN
+BAKAJ MILJKO
+BAKAJIĆ MILAN
+BAKAJIN DOBRILA
+BAKAJIN LJUBOMIR
+BAKAJIN NEVENKA
+BAKAJIN TODOR
+BAKALIĆ ĐULINKA SUDIJA
+BAKALIĆ MIHAJLO
+BAKALIĆ VOJISLAV
+BAKALOVIĆ NEMANJA
+BAKEV ĐORĐE
+BAKI IRENA
+BAKI OTO
+BAKI VERA
+BAKIŠ ČEDOMIR DIPL ING
+BAKIĆ BORIVOJE
+BAKIĆ DIMITRIJE
+BAKIĆ DUŠAN DIPL ING
+BAKIĆ IVAN
+BAKIĆ JOVAN
+BAKIĆ KOSTA
+BAKIĆ MIJOMIR
+BAKIĆ MILOŠ
+BAKIĆ MILOŠ
+BAKIĆ MILUTIN
+BAKIĆ MIRA
+BAKIĆ MIROSLAV
+BAKIĆ MIROSLAV
+BAKIĆ NADA
+BAKIĆ SINIŠA
+BAKIĆ SONJA
+BAKLAIĆ JOVANKA
+BAKMAZ LAZO
+BAKMAZ LJUBAN
+BAKMAZ ZORAN
+BAKO MIŠA
+BAKOČEVIĆ MIRJANA
+BAKOŠ ĐERĐI
+BAKOŠ GABOR
+BAKOŠ LAJOŠ
+BAKOŠ LASLO
+BAKOŠ MARIJA
+BAKOŠ PAL
+BAKOŠ PETAR
+BAKOŠ TEREZIJA
+BAKOVIĆ RADE
+BAKTAI STEVAN
+BAKUNIĆ IVAN
+BAKUNIĆ VIDOSAVA
+BAKVIĆ MILAN
+BAL KARLO
+BAL ZVONIMIR
+BALČAKOVIĆ VASO
+BALŠIĆ RANKA
+BALA ETELKA
+BALA IŠTVAN
+BALA JANOŠ
+BALA JULIJANA
+BALA JULIJA
+BALA KARLO
+BALA KARLO
+BALA KAROLJ
+BALA LADISLAV
+BALA MIHALJ
+BALA TEREZ
+BALAŠA JOŽEF
+BALAĆ ANA
+BALAĆ DUŠANKA
+BALAĆ JOVAN
+BALAĆ LJUBO
+BALAĆ MIROSLAV
+BALAĆ MIROSLAV
+BALAĆ SLAVKO
+BALAĆ SRBISLAV
+BALAĆ STEVAN
+BALAĆ VUJO
+BALAĆ ZORA
+BALAŽ ŠANDOR
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ADALBERT
+BALAŽ ANA
+BALAŽ ETELKA
+BALAŽ GEZA
+BALAŽ GEZA
+BALAŽ IRENA
+BALAŽ IVANKA
+BALAŽ JANIKA
+BALAŽ JELISAVETA
+BALAŽ JOSIP
+BALAŽ JOVAN
+BALAŽ KATARINA
+BALAŽ LASLO
+BALAŽ PAL
+BALAŽ PAL
+BALAŽ-PIRI ĐERĐ
+BALAŽ ZITA
+BALAŽEV STIPAN
+BALAŽEVIĆ SLOBODANKA
+BALABAN BOŠKO
+BALABAN BRANKO
+BALABAN MILOVAN
+BALABAN MILUTIN
+BALABAN NEĐO
+BALABAN PETAR
+BALABAN SAVO
+BALABAN SPOMENKA
+BALABAN VID
+BALABAN VUKAŠIN
+BALABANOV ANA
+BALABANOVIĆ BOŠKO
+BALABANOVIĆ MILORAD
+BALABANOVIĆ NIKOLA
+BALABANOVIĆ PETAR
+BALABANOVIĆ VOJISLAV
+BALAJ MIHAJLO
+BALALIĆ DŽEVAD DIPL ING
+BALALIĆ DŽEVAD
+BALANESKO ALEKSANDAR
+BALAT IRENA
+BALATON ĐERĐ
+BALATON ĐERĐ
+BALATON ĐERĐ
+BALATON BELA
+BALATON IMRE
+BALATON MAGDOLNA
+BALATON PETAR
+BALCA VLADIMIR
+BALCA VLADIMIR
+BALDIĆ SLOBODAN
+BALENOVIĆ ANDRIJA
+BALER JOSIP
+BALEVIĆ MILIVOJ
+BALGO FRANCIŠKA
+BALI ALEKSANDRA
+BALI GABOR
+BALI LASLO
+BALIĆ ESAD
+BALIŽ ILDA
+BALIŽ MIHALJ
+BALIŽ ZOLTAN
+BALIND PAL
+BALIND SILVIA
+BALINOVIĆ MILEVA
+BALINOVIĆ SINIŠA
+BALINT ŠANDOR MR
+BALINT ŽIGMUND
+BALINT ĐORĐE
+BALINT ĐURA
+BALINT ANDREJ
+BALINT DEŽE
+BALINT IŠTVAN
+BALINT ILONA
+BALINT IMRE
+BALINT IMRE
+BALINT JOŽEF
+BALINT JOŽEF
+BALINT JOSIP
+BALINT JOSIP
+BALINT JOSIP
+BALINT JULIJANA
+BALINT KAROLJ
+BALINT MAĆAŠ
+BALINT MARGARETA
+BALINT MARIA
+BALINT MARIJA
+BALINT MARIJA
+BALINT MIHAILO
+BALINT MIROSLAV
+BALINT-MITROVIĆ OLGA
+BALINT RADOSLAV
+BALINT ROBERT
+BALINT SLAVOMIR
+BALJ BRANKO
+BALJ MILORAD
+BALJ SAVO
+BALJA IDRIZ
+BALJAK ČEDOMIR
+BALJOŠEVIĆ ALEKSANDAR
+BALJOŠEVIĆ BOGDANKA
+BALJOŠEVIĆ JOVAN
+BALJOŠEVIĆ MIRO
+BALJOZOVIĆ OLIVERA
+BALJOZOVIĆ TOMISLAV DR
+BALKOVOJ VLADIMIR
+BALNOŽAN NEVENKA
+BALNOŽAN SIMA
+BALO GAŠPAR
+BALO PETAR
+BALOŠ NUCA
+BALOŠ TODOR
+BALOŠ TODOR
+BALOBAN MILAN
+BALOBAN MILAN
+BALOG ŠANDOR
+BALOG ŽIVKA
+BALOG ŽUŽANA
+BALOG ĐORĐE
+BALOG ĐORĐE
+BALOG ĐORĐE
+BALOG ĐURA
+BALOG ĐURA
+BALOG ALEKSANDAR
+BALOG ANA
+BALOG ANA
+BALOG ANA
+BALOG ANDRAŠ
+BALOG ANDRIJA
+BALOG BELA
+BALOG BRANKO
+BALOG DEŽE
+BALOG DEŽE
+BALOG DRAGAN
+BALOG DUŠANKA
+BALOG FERENC
+BALOG FRANJA
+BALOG FRANJA
+BALOG FRANJA
+BALOG IŠTVAN
+BALOG IBOJKA
+BALOG IMRE
+BALOG IMRE
+BALOG JOŽEF
+BALOG JOCA
+BALOG JOVAN
+BALOG JULIJANA
+BALOG JULIJANA
+BALOG KALMAN
+BALOG KAROLJ
+BALOG KAROLJ
+BALOG KATARINA
+BALOG LADISLAV
+BALOG LADISLAV
+BALOG LASLO
+BALOG MAGDA
+BALOG MARA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARTA
+BALOG MILENA
+BALOG MIRKO
+BALOG NIKOLA
+BALOG NIKOLA
+BALOG PIŠTA
+BALOG PIROŠKA
+BALOG SIMA
+BALOG SMILJA
+BALOG SPOMENKA
+BALOG STEVAN
+BALOG STEVAN
+BALOG STEVAN
+BALOG TIBOR
+BALOG VELIMIR
+BALOG ZORAN
+BALOK IŠTVAN
+BALOVIĆ MILIĆ
+BALTA ANA
+BALTIĆ DANICA
+BALTIĆ RADMILA
+BALTIĆ VLADIMIR DR
+BALTOVIĆ DRAGAN
+BALTOVIĆ PETAR
+BALUNOVIĆ IVAN
+BAMBULOVIĆ MILKA
+BAN STEVAN
+BANČEVIĆ PETAR
+BANČEVIĆ RADE
+BANČI BALINT
+BANČI KAROLJ
+BANČIĆ ŽIVKO
+BANČIĆ ALEKSANDAR
+BANČIĆ JOVAN
+BANČIĆ JULKA
+BANČIĆ LAZA
+BANČIĆ MARIJA
+BANČIĆ SOFIJA
+BANČIĆ STEVICA
+BANČIĆ TODOR
+BANĐUR MIRKO
+BANAĆANIN LJILJANA
+BANAĆANIN OLGA
+BANAI TIBOR
+BANAI VERA
+BANAJ JOSIP
+BANDA ŽIVKO
+BANDIĆ BLAGOJE
+BANDIĆ JELICA
+BANDIĆ LJUBOMIR
+BANDIĆ LJUBO
+BANDIĆ RADE
+BANDIĆ SAVKA
+BANDIĆ TOMISLAV
+BANDIĆ VERICA
+BANDIĆ VUJADIN
+BANDIN ŽIVORAD
+BANDIN IVAN
+BANDIN KATICA
+BANDIN MIODRAG
+BANDIN MLADEN
+BANDOBRANSKI OLGA
+BANDOLO DRAGICA
+BANDUKA DRAGUTIN
+BANFI MARIJA
+BANGO LJUDEVIT
+BANIĆ ANĐA
+BANIĆ BOŽIDAR
+BANIĆ BRANKO DR
+BANIĆ EMILIJA
+BANIĆ EVICA
+BANIĆ KATICA
+BANIĆ MILOŠ
+BANIĆ MILOVAN
+BANIĆ PANE
+BANIĆ PETAR
+BANIĆ RADE
+BANIĆ RADOMIR
+BANIĆ RASTKO
+BANIĆ RUŽICA
+BANIĆ SLAVKO
+BANIĆ SVETOZAR
+BANIĆ ZORKA
+BANIĆEVIĆ JELENA
+BANIĆEVIĆ VESELIN
+BANIA-ŽIVADINOVIĆ MIRJANA
+BANJAŠ ĐURA
+BANJAC ČEDOMIR
+BANJAC ČEDO
+BANJAC ČEDO
+BANJAC ŠPIRO DIPL ING
+BANJAC ŽIVAN
+BANJAC ĐORĐE
+BANJAC ĐORĐE
+BANJAC ĐORĐE
+BANJAC BOSILJKA
+BANJAC DANILO
+BANJAC DMITAR
+BANJAC DRAGAN DIPL ING
+BANJAC DRAGAN
+BANJAC DRAGICA
+BANJAC DRAGICA
+BANJAC DUŠAN
+BANJAC DUŠKO
+BANJAC DUŠKO
+BANJAC EMIL
+BANJAC GAVRA
+BANJAC GOJKO
+BANJAC JELENA
+BANJAC JOVAN
+BANJAC JOVAN
+BANJAC KATICA
+BANJAC MILAN
+BANJAC MILAN
+BANJAC MILE
+BANJAC MILORAD
+BANJAC MIRKO
+BANJAC NEDELJKO
+BANJAC NIKOLA
+BANJAC OLGA
+BANJAC PERO
+BANJAC PETAR
+BANJAC RADA
+BANJAC RADONJA
+BANJAC SAVA
+BANJAC SAVA
+BANJAC SAVETA
+BANJAC SAVO
+BANJAC SLAVKO
+BANJAC SLAVNA
+BANJAC SLOBODAN
+BANJAC STEVAN
+BANJAC TEODOR
+BANJAC VESNA
+BANJAC VINKO
+BANJAC VITOMIR
+BANJAC VOJISLAV
+BANJAI JAGA
+BANJAI JANOŠ
+BANJAI JOVAN
+BANJAI LAJOŠ
+BANJAI MAĆAŠ
+BANJAI MARIJA
+BANJAI ROMAN
+BANJAI RUŽA
+BANJANAC BRANKO
+BANJANAC BRATISLAV
+BANJANAC MILAN
+BANJANAC RADE
+BANJANAC SLAVICA
+BANJANIN DANICA
+BANJANIN DARA
+BANJANIN JELENA
+BANJANIN JELISAVETA
+BANJANIN JOVAN
+BANJANIN NEDELJKO
+BANJANIN NEDELJKO
+BANJANIN NIKOLA
+BANJANIN NIKOLA
+BANJANIN RADMILA
+BANJANIN SOFIJA
+BANJANIN VELIMIR
+BANJARI LAJOŠ
+BANJEGLAV BOŽA
+BANJEGLAV DRAGAN
+BANJEGLAV DUŠAN
+BANJEGLAV NIKOLA
+BANJEGLAV RADIVOJ
+BANJEVIĆ SLOBODANKA
+BANKA LAJOŠ
+BANKOVAČKI ĐURA
+BANKOVAČKI JOVAN
+BANKOVAČKI MARIJA
+BANKOVAČKI NADA
+BANKOVAČKI PETAR
+BANKOVAČKI SAVA
+BANKOVAČKI SVETOZAR
+BANKOVIĆ MILUN
+BANOVČANIN DRAGICA
+BANOVČANIN MILAN
+BANOVČANIN MOMČILO
+BANOVAČKI ĐORĐE
+BANOVAČKI JOVAN
+BANOVAČKI MARIJA
+BANOVAČKI RUŽICA
+BANOVIĆ ŽARKO
+BANOVIĆ ŽIVORAD
+BANOVIĆ DUŠAN
+BANOVIĆ JOVANKA
+BANOVIĆ LEPOSAVA
+BANOVIĆ-LOC NADA
+BANOVIĆ MILAN
+BANOVIĆ MILAN
+BANOVIĆ MILJKO
+BANOVIĆ NIKOLA
+BANOVIĆ SLAVA
+BANOVIĆ SLOBODAN
+BANSKI ERIKA
+BANSKI MARIJA
+BARČIKIN ĐORĐE
+BARŠI ENDRE
+BARŠI LASLO
+BARAČANIN DANICA
+BARAČANIN LAZAR
+BARAČANIN PAJA
+BARAČANIN SAVKA
+BARAČI STEVAN
+BARAČKOV ČEDOMIR
+BARAČKOV ĐORĐE
+BARAČKOV GORINKA
+BARAČKOV MILAN
+BARAČKOV SREDOJE
+BARAČKOV VESELIN
+BARAŠEVIĆ MIROSLAVA
+BARAŠEVIĆ TOMISLAV
+BARAŠIN GORAN
+BARAŠIN LJUBOMIR
+BARAŠIN NEVENKA
+BARAŠIN SAVA
+BARAĆ ŽARKO
+BARAĆ DRAGICA
+BARAĆ DUŠANKA
+BARAĆ GODIMIR
+BARAĆ GOJKO
+BARAĆ JOSIP
+BARAĆ KOVILJKA
+BARAĆ MILAN
+BARAĆ MILOŠ
+BARAĆ MILOŠ
+BARAĆ MILOSAVA
+BARAĆ MOMČILO
+BARAĆ RADONJA
+BARAĆ SARAFINA
+BARAĆ STANIMIRKA
+BARAĆ VESELIN
+BARAĆ VIDAK
+BARAĆ VUČINA
+BARAC MALIŠA
+BARAC MARKO
+BARAC NOVO
+BARAC TOMISLAV
+BARAJEVAC JOVA
+BARAKO SAVA
+BARALIĆ MIROSLAV
+BARAN JAKIM
+BARAN MIHAJLO
+BARAN MIRON DIPL ING
+BARANIN VASILIJE
+BARANJAI JENE
+BARANJI FERENC
+BARANJI FERENC
+BARANJI LASLO
+BARANJI PAVLE
+BARANJI STEVAN
+BARANOVSKI VLADA
+BARAS TOMA DR
+BARAT ALEKSANDAR
+BARAT DRAGICA
+BARAT DRAGINJA
+BARAT FERENC
+BARAT IMRE
+BARAT OLGA
+BARAT OSKAR
+BARATOV BOŠKO
+BARBARIĆ ANTE
+BARBARIĆ PAVLE
+BARBATESKOVIĆ LJUBIŠA
+BARBERIĆ DRAGAN
+BARBERIĆ MIRKO
+BARBIR ANTE
+BARBIR LJUBA
+BARBU VASA
+BARBUL MARIJA
+BARBUL MILAN
+BARBUL MILAN
+BARBUL SAVA
+BARBUL STOJAN
+BARBUL VLADISLAVA
+BARBULOV DIMITRIJE
+BARBULOV DOBRIVOJ
+BARBULOV MILIVOJ
+BARBULOV NIKOLA
+BARBULOVIĆ DRAGAN
+BARBUZAN JASNA
+BARBUZAN RUŽICA
+BARCAL ĐERĐ
+BARCAL ANA
+BARCAL JOŽEF
+BARCAL LASLO DIPL ING
+BARCEL KATICA
+BARDAK ALEKSANDAR
+BARDAK ANKICA
+BARDAK LUKA
+BARDIĆ ŽELJKO
+BARDIĆ MIRKO
+BARDOŠ JOŽEF
+BARDOŠ MELANIJA
+BARDUN KARLO
+BAREŠIĆ IVAN
+BAREŠIĆ MATO
+BARETIĆ DRAGOLJUB
+BARIČEVIĆ STIPE
+BARIČIĆ BISERKA
+BARIŠIĆ ANĐELKO
+BARIŠIĆ BLAGOJE
+BARIŠIĆ BOŠKO
+BARIŠIĆ ILIJA
+BARIŠIĆ ILIJA
+BARIŠIĆ JANJA
+BARIŠIĆ LJUBICA
+BARIŠIĆ MARKO
+BARIŠIĆ MILAN
+BARIŠIĆ MILAN
+BARIŠIĆ PETAR
+BARIŠIĆ STJEPAN
+BARIŠIĆ VERONIKA
+BARIŠIĆ ZORKA
+BARIĆ LJUBICA
+BARIĆ PAULINA
+BARIĆ SLAVICA
+BARJAKTAR SPASENIJA
+BARJAKTAR STEVA
+BARJAKTAREVIĆ ŽIVKO
+BARJAKTAREVIĆ DRAGAN
+BARJAKTAREVIĆ MARA
+BARJAKTAREVIĆ MARA
+BARJAKTAREVIĆ MILAN
+BARJAKTAREVIĆ MILKA
+BARJAKTAREVIĆ MILOJE
+BARJAKTAREVIĆ VALERIJA
+BARJAKTAREVIĆ ZLATKO
+BARJAKTAROV MILICA
+BARJAKTAROVIĆ ĐOKO
+BARJAKTAROVIĆ ANKA
+BARJAKTAROVIĆ MILOŠ
+BARJAKTAROVIĆ SNEŽANA
+BARJAKTAROVIĆ VUČINA
+BARJAKTAROVIĆ VUČINA
+BARJAKTAROVIĆ ZORKA
+BARJAMOVIĆ ALIL
+BARJAMOVIĆ ARSENIJE
+BARJAMOVIĆ SLOBODAN
+BARNA GAŠPAR
+BARNA IVAN
+BARNA JANOŠ
+BARNA JOSIP
+BARNA MIHALJ
+BARO FRANJO
+BARO JELENA
+BARO JOŽEF
+BARO JOŽEF
+BARO JOSIP
+BAROŠ BOŽO
+BAROŠ BORISLAV DR
+BAROŠ BORISLAV
+BAROŠ LAZO
+BAROŠ NEBOJŠA
+BAROŠ NIKOLA
+BAROŠ NIKOLA
+BAROŠEVIĆ JOVO
+BAROVIĆ VELIMIR
+BAROVIĆ VOJISLAV
+BARTA ĐERĐ
+BARTA ĐORĐE
+BARTA ARPAD
+BARTA DEŽE
+BARTA EMA
+BARTA ILDIKO
+BARTA IRMA
+BARTA MAGDALENA
+BARTEK ANDRIJA
+BARTEK KATARINA
+BARTEK RUDOLF DIPL ING
+BARTEK STEVAN
+BARTOŠ DANILO
+BARTOŠ DRAGICA
+BARTOŠ IMRE
+BARTOŠ LADISLAV
+BARTOŠ LASLO
+BARTOŠ SVETLANA
+BARTOŠ ZVONIMIR
+BARTOJ MIRJANA
+BARTOK MARGIT
+BARTOLOVIĆ ANTUN
+BARTOLOVIĆ JOSIP
+BARTOLOVIĆ MARIN
+BARTULOVIĆ PAVLE
+BARUŠIĆ MARTIN
+BARUDŽIJA MARKO
+BARUDANOV DUŠANKA
+BASARA ĐURO
+BASARA ANKA
+BASARA DIVNA
+BASARA DRAGICA
+BASARA JOVAN
+BASARA MARTA
+BASARA MILIVOJ
+BASARA MIRA
+BASARA PAJO
+BASARABA DUŠICA
+BASARIĆ BOGDAN
+BASARIĆ DANE
+BASARIĆ DRAGINJA
+BASARIĆ DUŠAN
+BASARIĆ JELENA
+BASARIĆ JOVAN
+BASARIĆ LJUBOMIR
+BASARIĆ MILAN
+BASARIĆ MILAN
+BASARIĆ MILKA
+BASARIĆ MIRJANA
+BASARIĆ NIKOLA
+BASARIĆ STEVAN
+BASARIĆ VERA
+BASIĆ KOVILJKA
+BASIĆ SRĐAN
+BASIOLI SREĆKO
+BASKIJIN ZORA
+BASRAK BRANKO
+BASRAK MILAN
+BASTA DANE
+BASTA DANIELA
+BASTA DRAGUTIN
+BASTA DUŠAN
+BASTA IVANA
+BASTA KATICA
+BASTA LJUBICA
+BASTA MARIJA
+BASTA MARIJA
+BASTA MARIJA
+BASTA MILAN
+BASTA MILOŠ
+BASTA MIROSLAV
+BASTA NIKOLA
+BASTA STEVA
+BASTA VLADO
+BASTAH BRANKO
+BASTAJA BRANKO
+BASTAJA MILAN
+BATA DEZIDER
+BATA ILONA
+BATA KAROLJ
+BATA LASLO
+BATA LASLO
+BATA MARGITA
+BATAJIĆ BOGOLJUB
+BATAK EMIL
+BATAK MIRKO
+BATAKOVIĆ KOSARA
+BATAKOVIĆ MILAN
+BATAKOVIĆ VITOMIR
+BATALOV RADICA
+BATANČEV JOVAN
+BATANČEV SLAVNA
+BATANJSKI MILAN
+BATANJSKI MILAN
+BATANOVIĆ ANKA
+BATAR ČEDOMIR
+BATAR ČEDOMIR
+BATAR MILOŠ
+BATAR MOMIR
+BATAR SLOBODAN
+BATAR VELIMIR
+BATAR VOJIN
+BATARILO ŽELJKO
+BATAS BOŽANA
+BATAZ VLADO
+BATERNEK IVAN
+BATIĆ ĐURAĐ
+BATIĆ BOŽIDAR
+BATIĆ BRANKA
+BATIĆ IVANA
+BATIĆ MIHAJLO
+BATINIĆ ĐURO
+BATINIĆ DRAGAN
+BATINIĆ GORDANA
+BATINIĆ SAVA
+BATINIĆ SPASOJE
+BATISTIĆ IVAN
+BATKIĆ JUSUF
+BATKIĆ STANISLAVA
+BATKOVIĆ MARA
+BATORI JANOŠ
+BATORI JOŽEF
+BATORI MARIJA
+BATORI MARIJA
+BATORI MIHALJ
+BATORI MIHALJ
+BATORI MIHALJ
+BATOS ALEKSANDAR
+BATOS BOŠKO
+BATOS BOŠKO
+BATOS MILAN
+BATOS NADA
+BATOS RADIVOJ
+BATOS ZORICA
+BATRNEK ZDENKA
+BATURAN OBRAD
+BATURAN RADOVAN
+BAUER EVA
+BAUER JULIJANA
+BAUER KSENIJA
+BAUER OTO
+BAUK DRAGAN
+BAUKOV VLADIMIR
+BAURANOV LAZAR
+BAVARČIĆ MILORAD
+BAVARČIĆ VESELIN
+BAZANČIK VALERIJA
+BAZOKIN ŽIVICA
+BEČ JANJA
+BEČEI LAJOŠ
+BEČEJAC ALEKSANDAR
+BEČEJAC BOŠKO
+BEČEJAC BRANISLAV
+BEČEJAC JOVAN
+BEČEJAC KAMENKO
+BEČEJAC MILAN
+BEČEJAC RADENKO
+BEČEJAC RADOJKA
+BEČEJAC SAVA
+BEČELIĆ ĐORĐE
+BEČELIĆ BISERKA
+BEČELIĆ BOSILJKA
+BEČELIĆ DOBRINKO
+BEČELIĆ DRAGICA
+BEČELIĆ GINA
+BEČELIĆ JOVAN
+BEČELIĆ LAZAR
+BEČELIĆ MARIJA
+BEČELIĆ MARIJA
+BEČELIĆ MILAN
+BEČELIĆ MILENA
+BEČELIĆ MILICA
+BEČELIĆ MILOŠ
+BEČELIĆ PETAR
+BEČELIĆ RADIVOJ
+BEČELIĆ RADOVAN
+BEČELIĆ STEVAN
+BEČELIĆ STEVAN
+BEČELIĆ VASA
+BEČELIĆ VESELIN
+BEČELIĆ VESELIN
+BEČIĆ MUHIBA
+BEČIĆ VEROLJUB
+BEČKEI JANOŠ
+BEČKEI PETAR
+BEČKEJI KARLO
+BEČVARDI ALEKSANDAR
+BEČVARDI JOSIP
+BEŠANIĆ BOŽANA
+BEŠANIĆ ZDRAVKO
+BEŠENJI KARLO
+BEŠENJI KARLO
+BEŠENSKI NIKOLA
+BEŠEVIĆ ALEKSA
+BEŠEVIĆ JOVAN
+BEŠEVIĆ MIRJANA
+BEŠEVIĆ NIKOLA DIPL OEC
+BEŠIĆ MARIJA
+BEŠIĆ MARIJA
+BEŠIĆ MEHMED
+BEŠIĆ MIHAJLO
+BEŠIĆ SLOBODAN
+BEŠIĆ SVETISLAV
+BEŠKER ANDRIJA
+BEŠKER BOŽO
+BEŠKER SREĆKA
+BEŠLIĆ JOVAN
+BEŠLIĆ TEREZIJA
+BEŠLIJA GOSPAVA
+BEŠLIN ŽIVKO DIPL OEC
+BEŠLIN BRANKO
+BEŠLIN IVAN
+BEŠLIN IVICA
+BEŠLIN JELISAVETA
+BEŠLIN MIODRAG
+BEŠLIN STOJAN
+BEŠLIN VLADISLAVA
+BEĆAGUL SAVA
+BEĆIN ALEKSANDAR
+BEĆIN OLGA
+BEĆIROVSKI ADEM
+BEŽAN VIKTOR
+BEŽANOV ALEKSANDAR
+BEŽANOV BRANISLAV
+BEŽANOV DRAGOLJUB
+BEŽANOV MIROLJUB
+BEŽANOVIĆ ĐORĐE
+BEADER JOVAN
+BEARA ŽIVKO
+BEARA ĐORĐE
+BEARA JOVAN
+BEARA MARKO
+BEARA PETAR
+BEARA PETAR
+BEATOVIĆ NEBOJŠA
+BEBEK MATO
+BEBELJA-MATUŠ ANKA
+BEBIĆ ANA
+BEBIĆ LJILJANA
+BEBIĆ NEVENKA
+BEBIĆ NEVENKA
+BEBIĆ PETAR
+BEBIĆ STOJANKA
+BECE BELA
+BECE TIBOR
+BECIĆ STEVAN
+BEDŽETI MARIJA
+BEDAK BILJANA
+BEDE ŠANDOR
+BEDE PETAR DR
+BEDE PETAR
+BEDEKOVIĆ ANTON
+BEDNARIK ANDRIJA
+BEDNARIK DARINKA
+BEDNARIK JANOŠ
+BEDNARIK JOSIP
+BEDNARIK MIHALJ
+BEDOV BISERKA
+BEDOV JOVAN
+BEDOV LJUBICA
+BEDOV MARIJA
+BEDOV MIROSLAV
+BEDOV NADA
+BEDOV PREDRAG
+BEDOV RADA
+BEDOV SRĐAN
+BEDOV SUNČICA
+BEDOV SVETISLAV
+BEDRIK ALEKSANDAR
+BEG ANDRIJA
+BEG-VALOVIČIĆ ANĐELKO
+BEG-VOLOVIČIĆ IVAN
+BEGANI ŠERIF
+BEGANOVIĆ MEHMED
+BEGANOVIĆ SANID
+BEGEČKI RAJKO
+BEGEČKI SAVA
+BEGENIŠIĆ DRAGORAD
+BEGENIŠIĆ VUKAŠIN
+BEGIĆ MILOŠ
+BEGIĆ MIRKO
+BEGLERBEGOVIĆ DŽEVAD
+BEGOJEV ANKA
+BEGOJEV BOGDAN
+BEGOJEV LAZAR
+BEGOJEV LAZA
+BEGOJEV PETAR
+BEGOJEV RADOJKA
+BEGOJEV TOŠA
+BEGOJEVIĆ RADIVOJ
+BEGOVIĆ EVICA
+BEGOVIĆ JASMINA
+BEGOVIĆ JOVAN
+BEGOVIĆ LADISLAV
+BEGOVIĆ-LIVAJA ILIJA
+BEGOVIĆ LJUBAN
+BEGOVIĆ MILIJA
+BEGOVIĆ MILORAD
+BEGOVIĆ MIRKO
+BEGOVIĆ ROĆKO
+BEGOVIĆ SAVO
+BEGOVIĆ TODOR
+BEGOVIĆ ZORO
+BEHER EVA
+BEHERANO JOSIP
+BEHTER ALEKSANDAR
+BEJAROVIĆ MARKO
+BEJAROVIĆ NENAD
+BEJATOVIĆ ĐORĐE
+BEJATOVIĆ MILORAD
+BEJATOVIĆ MIRKO
+BEJTOVIĆ ALIJA
+BEK ANTONIJA
+BEK DRAGANA
+BEK JOVAN
+BEK LADISLAV
+BEK LJILJANA
+BEK RUŽA
+BEK STEVAN
+BEKČIĆ MILORAD
+BEKAREK ILINKA
+BEKE LASLO
+BEKE MARIJAN
+BEKER FREDERIK
+BEKER IŠTVAN
+BEKER IDA
+BEKER JOŽEF
+BEKER JOSIP
+BEKER STEVAN
+BEKIĆ BORIS
+BEKIĆ BRANKA
+BEKIĆ JURE
+BEKIĆ MILORAD
+BEKIĆ TOMISLAV
+BEKIĆ VERA
+BEKRIĆ DRAGAN
+BEKRIĆ MIRA
+BEKRIĆ TOMISLAV
+BEKTAŠ DANICA
+BEKTAŠ SLAVKO
+BEKUT DRAGAN
+BEKUT PETAR
+BEKVALAC ŽIVAN
+BEKVALAC BRANISLAV
+BEKVALAC BRANISLAV
+BEKVALAC BRANKA
+BEKVALAC BRANKO
+BEKVALAC BRANKO
+BEKVALAC DRAGOLJUB
+BEKVALAC EMILIJA
+BEKVALAC ISA
+BEKVALAC LAZAR
+BEKVALAC LJUBICA
+BEKVALAC LJUBICA
+BEKVALAC LJUBINKO
+BEKVALAC MARA
+BEKVALAC MIJA
+BEKVALAC MILANKO
+BEKVALAC MILAN
+BEKVALAC MILISAV
+BEKVALAC MIRJANA
+BEKVALAC RADIVOJ
+BEKVALAC RADMILA
+BEKVALAC SERAFINA
+BEKVALAC STEVAN
+BELČEVIĆ GRADIMIR
+BELČEVIĆ RATKO
+BELAK ŠANDOR
+BELAK ANA
+BELAK MARGITA
+BELAK MIJO
+BELAK VLADA
+BELAN JOŽEF
+BELANČIĆ ELIZABETA
+BELANOVIĆ ĐORĐE
+BELANOVIĆ ALEKSANDRA
+BELANOVIĆ KATICA
+BELANOVIĆ MILIVOJ
+BELANOVIĆ TIBOR
+BELECKI JELENA
+BELEGIŠANIN DRAGOMIR DR
+BELESLIJIN MILORAD
+BELESLIJIN SLOBODAN
+BELESLIN DOBRILA
+BELESLIN MIROSLAV
+BELESLIN SVETOZAR DR
+BELETIĆ JELENA
+BELI ANDRIJA
+BELI EMIL
+BELI ROZALIJA
+BELI STEVAN
+BELI VOJISLAV
+BELIČKA ANA
+BELIČKA BRANISLAV
+BELIČKA MIROSLAV
+BELIĆ ŽIVKA
+BELIĆ ĐORĐE
+BELIĆ ĐORĐE
+BELIĆ ĐURICA
+BELIĆ BOŠKO
+BELIĆ BOŽIDAR
+BELIĆ BOŽIDAR
+BELIĆ BORISLAV
+BELIĆ BORISLAV
+BELIĆ BORIS
+BELIĆ BORIVOJE
+BELIĆ BORIVOJE
+BELIĆ BRANISLAV
+BELIĆ-BRKIĆ VLADISLAVA
+BELIĆ DANICA
+BELIĆ DANIJELA
+BELIĆ DRAGAN
+BELIĆ DRAGICA
+BELIĆ DRAGUTIN
+BELIĆ DUŠAN DR
+BELIĆ DUŠAN DR
+BELIĆ DUŠAN
+BELIĆ DUŠAN
+BELIĆ DUŠAN
+BELIĆ DUŠKO
+BELIĆ DUŠKO
+BELIĆ FLORIKA
+BELIĆ ILIJA
+BELIĆ JOSIM
+BELIĆ JOVANKA
+BELIĆ JOVICA
+BELIĆ JULIJANA
+BELIĆ JULKA
+BELIĆ LAZAR
+BELIĆ LJUBICA
+BELIĆ MARICA
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILENA
+BELIĆ MILIVOJ
+BELIĆ MILOŠ
+BELIĆ MILORAD
+BELIĆ MIRJANA
+BELIĆ MIROSLAV
+BELIĆ NENAD
+BELIĆ NESTOR
+BELIĆ NIKOLA
+BELIĆ PETAR
+BELIĆ PETAR
+BELIĆ RADINKA
+BELIĆ RADOJKA
+BELIĆ RADOSLAV
+BELIĆ RADOVAN
+BELIĆ SAVA
+BELIĆ SENA
+BELIĆ SIMA
+BELIĆ SLAVKO DIPL ING
+BELIĆ SLAVKO
+BELIĆ SLOBODANKA
+BELIĆ SOFIJA
+BELIĆ SRĐAN
+BELIĆ STANKO
+BELIĆ STEVAN
+BELIĆ STOJANKA
+BELIĆ STOJAN
+BELIĆ SVETISLAV
+BELIĆ SVETISLAV
+BELIĆ SVETLANA
+BELIĆ TODOR
+BELIĆ VERA
+BELIĆ VESNA
+BELIĆ VLADISLAV
+BELIĆ VLADISLAV
+BELIĆ VOJISLAV
+BELIĆ VUKA
+BELIĆ ZORA
+BELIMARKOVIĆ SLAVOLJUB
+BELINIĆ ĐURA
+BELINSKI ALEKSANDAR
+BELINSKI SPASENIJA
+BELJAKOV MILICA
+BELJANSKI ŽIVKA
+BELJANSKI ŽIVKA
+BELJANSKI ĐORĐE
+BELJANSKI ĐORĐE
+BELJANSKI ĐORĐE
+BELJANSKI ANĐELIJA
+BELJANSKI ANKICA
+BELJANSKI-BAJIĆ KAĆUŠA
+BELJANSKI BORA
+BELJANSKI BORA
+BELJANSKI BORIVOJ
+BELJANSKI DRAGANA
+BELJANSKI DRAGICA
+BELJANSKI EMILIJA
+BELJANSKI GAVRA
+BELJANSKI GORDANA
+BELJANSKI JELISAVETA
+BELJANSKI JOVAN
+BELJANSKI JOVAN
+BELJANSKI JULIJANA
+BELJANSKI LAZAR
+BELJANSKI LAZAR
+BELJANSKI LAZAR
+BELJANSKI LEPOJKA
+BELJANSKI LJUBOMIR
+BELJANSKI MILAN
+BELJANSKI MILENKO
+BELJANSKI MILORAD
+BELJANSKI MILORAD
+BELJANSKI MILUTIN
+BELJANSKI MIRJANA
+BELJANSKI PAVLE
+BELJANSKI RADA
+BELJANSKI RADMILA
+BELJANSKI RADOVAN
+BELJANSKI RANKO
+BELJANSKI RUŽICA
+BELJANSKI SLOBODAN
+BELJANSKI STEVAN
+BELJANSKI TEODOR
+BELJANSKI TOŠA
+BELJANSKI VASILIJE
+BELJANSKI VERA
+BELJANSKI VLADIMIR
+BELJANSKI VLADISLAV
+BELJANSKI VOJISLAV
+BELJANSKI ZAGORKA
+BELJANSKI ZDENKA
+BELJIN ŽIVA
+BELJIN ĐORĐE
+BELJIN BRANISLAVA
+BELJIN DIMITRIJE
+BELJIN MARIJA MAGDALENA
+BELJIN NEDELJKO
+BELJIN RADIVOJ
+BELJIN RADOSLAV
+BELJIN RUŽA
+BELJIN SAVA
+BELJIN SOFIJA
+BELJIN VLADIMIR
+BELJINAC ZORAN
+BELOŠEV NEVENKA
+BELOBRADIĆ MILAN
+BELOBRADIĆ SAVA
+BELOBRK BRANISLAV
+BELOBRK DRAGOSLAV
+BELOBRK LIVIJE
+BELOCIĆ MILENKO
+BELOCIĆ RADMILA
+BELOICA RADOSLAV
+BELOICA VIDAN
+BELOPAVLOVIĆ DRAGA DR
+BELOPAVLOVIĆ MILOJKO
+BELOPAVLOVIĆ ZORAN DR
+BELOPAVLOVIĆ ZORAN DR
+BELOSAVIĆ JELICA
+BELOTI IVANKO
+BELOVARI IVAN
+BELOVIĆ BILJANA
+BELOVIĆ RADA
+BELOVIĆ STEVAN
+BELUŠEVIĆ BOŽIDAR
+BELUŠEVIĆ NOVICA
+BELUŽIĆ DARINKA
+BELUŽIĆ STJEPAN
+BEM IVAN
+BEM JOVAN
+BEM KARLO
+BEM MIROSLAV
+BEMILER MAGDALENA
+BENČIK ĐULA
+BENČIK ILONKA
+BENA MILOSAVA
+BENAŠIĆ VINKO
+BENAK PAL
+BENARIK LASLO
+BENARIK MAGDALENA
+BENC BRANISLAVA
+BENC DRAGAN
+BENCE MARIJA
+BENCE MIHALJ
+BENCE MIKEŠ
+BENCETIĆ ANDRIJA
+BENCETIĆ LJUDEVIT
+BENCUN VELINKA
+BENDEK MILAN
+BENEŠ LJUDMILA
+BENEŽAN LJUBICA
+BENEDEKOVIĆ IVAN
+BENGIN-ĐURKIĆ NEZA
+BENGIN BOŽIDAR
+BENGIN DOBRINKA
+BENGIN DUŠAN
+BENGIN KOVICA
+BENGIN MILAN
+BENIČAK KARLO
+BENIČAK MAGDALENA
+BENIŠEK DRAGUTIN
+BENIĆ EVA
+BENIĆ GRUJICA
+BENIĆ PETAR
+BENIĆ SEKULA
+BENIĆ ZDENKO
+BENIN ŽIVOJIN
+BENJA KATARINA
+BENJAK DRAGOSLAVA
+BENJAK EVICA
+BENKA MARIJA
+BENKA MIHAILO
+BENKE ELZA
+BENKOVIĆ JOCA
+BENKOVIĆ JOCA
+BENO TIBOR
+BENOVIĆ JOSIP
+BENOVIĆ STANA
+BEOČANIN JOVAN
+BEOČANIN MIODRAG
+BEOČANIN PAVLE
+BEODRANSKI DRAGOMIR
+BEODRANSKI STOJAN
+BEOKOVIĆ DAMIR
+BER ALEKSIJE
+BER FRANJO
+BERČEK ĐERĐ
+BERČEK BOŽIDAR
+BERČEK FRANJA
+BERČEK LADISLAV
+BERČEK MARIJA
+BERČEK MIHAILO
+BERČEK OSKAR
+BERČEK SANISLO
+BERĆAN MIRJANA
+BERĆAN PETAR
+BERĆAN SLAVKO
+BERA ĐORĐO
+BERA DRAGAN
+BERAK NEBOJŠA
+BERANOVIĆ ALEKSANDAR
+BERAR ŽIVANA
+BERAR BORIVOJ
+BERAR BRANISLAV
+BERAR BRANISLAV
+BERAR DUŠANKA
+BERAR MILAN
+BERAR MILAN
+BERAR MILAN
+BERAR RADIVOJ
+BERAR SLOBODAN
+BERAR SLOBODAN
+BERAR TIMA
+BERAR VLADIMIR
+BERAROV ĐURICA
+BERBAKOV LJUBICA
+BERBAKOV MARA
+BERBAKOV MILOŠ
+BERBAKOV PETAR
+BERBAKOV STEVAN
+BERBATOVIĆ ŽARKO
+BERBATOVIĆ MIRJANA
+BERBER LJILJANA
+BERBER STEVAN
+BERBERIĆ JELISAVETA
+BERBERIĆ JOVAN
+BERBERIĆ LAZAR
+BERBERIĆ MILUTIN
+BEREŠ ĐORĐE
+BEREŠ DANILO
+BEREŠ ILONA
+BEREŠ JOSIP
+BEREŠ JULIŠKA
+BEREŠ KAROLJ
+BEREŠ KORNEL
+BEREŠ TIBOR
+BEREŠ-TOT KORNEL
+BEREHANIĆ JULKA
+BERENJI EUGEN
+BERENJI JANOŠ
+BERENJI JELENA
+BERENJI MIKLOŠ
+BERENJI MIKLOŠ
+BERENJI ROZALIJA
+BERENJI STEVAN
+BERENJI TIBOR
+BERENTA JOSIP
+BERENTE ILONA
+BERETIĆ ANTUN
+BERETIĆ LADISLAV
+BERETIĆ MARGITA
+BERETKA ŠANDOR
+BERETKA GORDANA
+BERETKA JULIJANA
+BERETKA KARLO
+BERETKA MIHALJ
+BERGEL ĐURA
+BERGEL ANTUN
+BERGER FRANJA DR STOMATOLOG
+BERGER MIROSLAV
+BERIŠA AZIS
+BERIŠA BOJKA
+BERIŠA DEMO
+BERIŠA FAIK
+BERIŠA MIRVETA
+BERIŠA RAGIB
+BERIĆ ŽIVKO
+BERIĆ ANĐELKO
+BERIĆ ANTA
+BERIĆ ANTA
+BERIĆ BERISLAV DR PROF
+BERIĆ BILJANA
+BERIĆ BOŽIDAR
+BERIĆ BOGDAN
+BERIĆ DRAGINJA
+BERIĆ DUŠANKA
+BERIĆ DUŠAN
+BERIĆ GOJKO
+BERIĆ GOJKO
+BERIĆ GOJKO
+BERIĆ ILIJA
+BERIĆ JORDANA
+BERIĆ JOVO
+BERIĆ KOSTA
+BERIĆ MARA
+BERIĆ-MASKAREL KARMENSITA DR
+BERIĆ MILAN
+BERIĆ MILAN
+BERIĆ MILAN
+BERIĆ MILICA MR
+BERIĆ MILIVOJ
+BERIĆ MILORAD
+BERIĆ MILORAD
+BERIĆ MILOVAN
+BERIĆ NADA
+BERIĆ NIKOLA
+BERIĆ PERSIDA
+BERIĆ PETAR
+BERIĆ RADIVOJ
+BERIĆ RAJKO
+BERIĆ RAJKO
+BERIĆ SAVA
+BERIĆ TODE
+BERIĆ VERA
+BERIĆ VERICA
+BERIĆ VESNA DR
+BERIĆ ZORICA
+BERISAVLJEVIĆ RAJKO
+BERISAVLJEVIĆ ZORICA
+BERKEŠ IŠTVAN
+BERKI JOŽEF
+BERKIĆ RUŽICA
+BERKOVIĆ BERISLAV
+BERKOVIĆ DŽAFER
+BERKOVIĆ MIROSLAV
+BERKOVIĆ SLAVOLJUB
+BERLANČIĆ DANIJEL
+BERLOVAN GEORGINA
+BERNACKI ADOLF
+BERNARD ĐORĐE
+BERNHARD ŽARKO
+BERNHARD BOŽIDAR
+BERNHARD BOJANA
+BERNHARD FILIP
+BERNHARD ILIJA
+BERNHARD LJUBAN
+BERNHARD MARIJA
+BERNHARD MILAN
+BERNHARD MILICA DR
+BERNHARD MILORAD
+BERNHARD RADOSLAV
+BERNHARD RAJKO
+BERNHARD SIMO
+BERNHARD TRIVO
+BEROŠ LJUBICA
+BERTA JANOŠ
+BERTA MILICA
+BERTA PAL
+BERTA PETAR
+BERTIĆ TATJANA
+BERTIĆ ZVONKO
+BERTOK JANOŠ
+BERTOK JULIJANA
+BERTOK LAJOŠ
+BERTRON LENKE
+BERUS VJEKOSLAV
+BERZA ALEKSANDAR
+BESEDEŠ JOŽEF
+BESERMENJI ĐORĐE
+BESERMENJI BRANKO
+BESERMENJI DIONIZIJE
+BESERMENJI EUFEMIJA
+BESERMENJI IRENA
+BESERMENJI IVAN
+BESERMENJI KIRIL
+BESERMENJI KSENIJA
+BESERMENJI LEONA
+BESERMENJI MELANIJA
+BESERMENJI OLGA
+BESERMENJI VLADIMIR
+BESERMENJI VLADIMIR
+BESKOROVAJNI VLADIMIR
+BESLAĆ DRAGANA
+BESLAĆ MILUTIN
+BESLAĆ RADMILA
+BESNILOV BOŠKO
+BESNILOV OLIVERA
+BESU SILA
+BESU TODOR
+BESU TRANDAFIR
+BETI STANKO ADVOKAT
+BEUC ŽIVAN
+BEUC MIRA
+BEUC OLGA
+BEZDAN ANA
+BEZDAN FRANJA
+BEZDAN ILDIKO
+BEZDAN IRENA
+BEZDAN JOSIP
+BEZENŠEK NATALIJA
+BEZI KATICA
+BEZJAK MILANKA
+BEZJAK ZDENKO
+BEZULJ ĐORĐE
+BEZULJ LJILJANA PROFESOR
+BIČAK IGNAC
+BIČAK JUSTINA
+BIČAN ANKA
+BIČAN IVICA
+BIČKEI TEREZIJA
+BIĆANIĆ DANICA
+BIĆANIĆ KRISTINA
+BIĆANIĆ MARIJA
+BIĆANIĆ PETAR
+BIĆANIĆ PETRA
+BIBER STEVAN
+BIBERDŽIĆ RADOMIR
+BIBIĆ ALEKSANDAR
+BIBIĆ PAVLE
+BIBIĆ SOFIJA
+BIBIĆ STJEPAN
+BIBIN JUGOSLAV
+BIBIN MILINKO
+BICIKIN MILAN
+BICK DRAGUTIN
+BICO RUŽICA
+BICOK ETELKA
+BICOK MARGITA
+BICOK MARGITA
+BIELČIK LIDIJA
+BIGA BORISLAV
+BIGA MILAN
+BIGA NADA
+BIGA SMILJA
+BIGOVIĆ-ŠIROKI ZORICA
+BIGOVIĆ ANA
+BIGOVIĆ VOJIN
+BIGOVIĆ VOJISLAV
+BIHORAC MIRJANA
+BIJANIĆ MILENKO
+BIJANKO PETAR
+BIJEDIĆ MILORAD
+BIJELIĆ ALEKSA
+BIJELIĆ BRANISLAV
+BIJELIĆ DARA
+BIJELIĆ IVICA
+BIJELIĆ JOVAN
+BIJELIĆ JOVICA
+BIJELIĆ MATO
+BIJELIĆ MILAN
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ NOVAK
+BIJELIĆ PERO
+BIJELIĆ RISTO
+BIJELIĆ STOJAN
+BIJELIĆ STOJAN
+BIJELJAC NEDELJKO DIPL ING
+BIJELOVIĆ NOVKA
+BIJUKLIĆ DRAGOSLAV
+BIJUKLIĆ DRAGOSLAV
+BIJUKLIĆ MARINKO
+BIKAR DRAGANA
+BIKAR FEDORA
+BIKAREVIĆ DRAGAN
+BIKIĆ ŽIVAN
+BIKIĆ ĐORĐE
+BIKIĆ DANICA
+BIKIĆ DUŠAN
+BIKIĆ KONSTANTIN
+BIKIĆ LJILJANA
+BIKIĆ MILOVAN
+BIKIĆ MIODRAG
+BIKIĆ NIKOLA
+BIKIĆ PERA
+BIKICKI ĐORĐE
+BIKICKI ALEKSANDAR
+BIKICKI BRANISLAV
+BIKICKI JELICA
+BIKICKI JELICA
+BIKICKI JOVAN
+BIKICKI JOVAN
+BIKICKI KATARINA
+BIKICKI MILOŠ
+BIKICKI MIROSLAV
+BIKICKI RADOJKA
+BIKICKI SINIŠA
+BIKICKI SINIŠA
+BIKICKI VASILIJE
+BIKIT MAGDOLNA
+BIKIT NORBERT
+BIKOVIĆ LJUBICA
+BIKOVIĆ VLADIMIR
+BILČAR HILDA
+BILČAR VERA
+BILA MIRKO
+BILAK MILAN
+BILAK NADA
+BILALOVIĆ SABAHUDIN
+BILANDŽIJA DANICA
+BILANIĆ NADA
+BILANOVIĆ DUŠAN
+BILANOVIĆ GORDANA
+BILANOVIĆ PERO
+BILAS SMILJA
+BILBIJA BOGDAN
+BILBIJA DEJAN
+BILBIJA DRAGAN
+BILBIJA JASNA
+BILBIJA MILAN
+BILBIJA SMILJA
+BILEK MILICA
+BILER ĐORĐE
+BILI JULIJA
+BILIČIĆ STJEPAN
+BILIĆ ANTE
+BILIĆ BRANKICA
+BILIĆ GORDANA
+BILIĆ IVAN DIPL ING
+BILIĆ IVAN
+BILIĆ JAKOV
+BILIĆ JELENA
+BILIĆ MILAN
+BILIĆ MILAN
+BILIĆ MILENKO
+BILIĆ MILORAD
+BILIĆ MIRO
+BILIĆ PREDRAG
+BILIĆ SRĐAN
+BILIĆ STJEPAN
+BILIĆ STRAIN
+BILICKI LASLO
+BILINOVIĆ BORIS
+BILINOVIĆ SAŠA
+BILJANIĆ RADOJKA
+BILJNJA VLADIMIR
+BILOKAPIĆ IVAN
+BILOKAPIĆ JURE
+BILOKAPIĆ STEVAN
+BILUŠIĆ SLAVICA
+BIN ALEKSANDAR
+BIN MUHAMET
+BINAKAJ BAJRAM
+BINDAS ĐURA
+BINDAS DRAGICA
+BINDAS MIHAJLO
+BINDER ARANKA
+BINGOLD DRAGUTIN
+BINGOLD KARLO
+BINGOLD RUDOLF
+BINGULAC ŽIVKO
+BINGULAC BOJANA
+BINGULAC MIRJANA
+BIONDIĆ JELENA
+BIORAC DESIMIR
+BIORAC RANKO
+BIRĆA SRETKO
+BIRCLIN RUŽICA
+BIRDIĆ BELA
+BIREŠ LENKA
+BIREŠ ROZALIJA
+BIRGEMAJER MARIJA
+BIRHMAN ANA
+BIRINJI DENEŠ
+BIRINJI EUGEN
+BIRMANAC DUŠAN
+BIRO ANTON
+BIRO GIZELA
+BIRO GIZELA
+BIRO IŠTVAN
+BIRO ILONA
+BIRO IMRE
+BIRO IMRE
+BIRO KATALIN
+BIRO LAJOŠ
+BIRO MIKLOŠ
+BIRO MILOŠ
+BIROŠEVIĆ MILICA
+BIROVLJEV BRANIMIR
+BIROVLJEV BRANISLAV
+BIROVLJEV MILAN
+BIROVLJEV MILORAD
+BIROVLJEV MILOSAV
+BIROVLJEV MIROSLAV
+BIROVLJEV TODOR DR
+BIROVLJEVIĆ DRAGAN
+BIROVLJEVIĆ LJUBICA
+BIRTA VLADIMIR
+BIRVALSKI DUŠAN
+BISERČIĆ ANDRIJA
+BISERČIĆ DRAGO
+BISERČIĆ MILKANA
+BISIĆ JOVAN
+BISTRICAN OLGA
+BISTROVIĆ ANTON
+BITIĆ DŽEMAIL
+BITO STEVAN
+BIUK MARIJA
+BIVOLAREVIĆ VUKAŠIN
+BIZJAK RENATO
+BIZUMIĆ GEORGIJE
+BIZUMIĆ JELKA
+BIZUMIĆ LAZAR
+BIZUMIĆ MILAN
+BJEDIĆ DESANKA
+BJEDOV ĐUKA
+BJEDOV DRAGO
+BJEDOV NIKOLA
+BJEGOVIĆ DANILKA
+BJEGOVIĆ GOJKO
+BJEKIĆ LUKA
+BJEKIĆ OSTOJA
+BJEKOVIĆ MIRJANA
+BJEKOVIĆ RADE
+BJELAC ĐURA
+BJELAC DRAGAN
+BJELAC DRAGAN
+BJELAC ETELKA
+BJELAJAC DRAGAN
+BJELAJAC MILJA
+BJELAJAC SVETOZAR
+BJELAKOVIĆ RADIVOJE
+BJELANOVIĆ MILOSAV
+BJELANOVIĆ MIRKO
+BJELANOVIĆ RAJKO
+BJELANOVIĆ STANIMIR
+BJELANOVIĆ TANJA
+BJELETIĆ BOGDAN
+BJELETIĆ LJUBICA
+BJELETIĆ LUKA
+BJELI-HADŽIĆ JELICA
+BJELIĆ ĐURA
+BJELIĆ BORISLAV
+BJELIĆ BRANKO
+BJELIĆ DANILKA
+BJELIĆ DMITAR
+BJELIĆ GORDANA
+BJELIĆ JOVAN
+BJELIĆ KATICA
+BJELIĆ KRSTAN
+BJELIĆ LJUBOMIR
+BJELIĆ MILAN
+BJELIĆ MIRKO
+BJELIĆ NEDELJKO
+BJELIĆ OLGA
+BJELIĆ PETAR
+BJELIĆ PETAR
+BJELIĆ SLAVKO
+BJELIĆ SLOBODAN
+BJELIĆ STEVO
+BJELIĆ SVETLANA
+BJELIĆ VERA
+BJELIĆ VLADIMIR
+BJELICA ČEDO
+BJELICA ĐORĐIJA
+BJELICA ALEKSA
+BJELICA BOGDAN
+BJELICA BRANISLAV
+BJELICA DANILO
+BJELICA DOBRIVOJE
+BJELICA DRAGUTIN
+BJELICA GOJKO
+BJELICA GOJKO
+BJELICA JADRANKA
+BJELICA JADRANKA
+BJELICA LUKA
+BJELICA MILAN
+BJELICA MILICA
+BJELICA MIODRAG
+BJELICA NADA
+BJELICA-POPOVIĆ LJUBICA
+BJELICA RAJKO
+BJELICA RAKO
+BJELICA RATKO
+BJELICA SAVKA
+BJELICA SLAVKO
+BJELICA SPASOJE
+BJELICA TIGRAN
+BJELICA VELJKO
+BJELICA VELJKO
+BJELICA VOJO
+BJELICA VUKOSAVA
+BJELICA ZORAN
+BJELINIĆ DARINKA
+BJELINIĆ JOVO
+BJELIVUK GORAN
+BJELIVUK VLADIMIR
+BJELJAC ANA
+BJELJAC BORA
+BJELJAC BRANKO
+BJELJAC MILAN
+BJELJAC MILORAD
+BJELOŠ DANICA
+BJELOŠ MIROSLAV
+BJELOŠ MIROSLAV
+BJELOŠEVIĆ SLAVKO
+BJELOBABA ALEKSANDAR
+BJELOBABA DARA
+BJELOBRK BOŠKO
+BJELOBRK BOŠKO
+BJELOBRK GORAN
+BJELOBRK LAZAR
+BJELOBRK LAZAR
+BJELOBRK MANE
+BJELOBRK MARKO
+BJELOBRK MILAN
+BJELOBRK MILOŠ
+BJELOBRK PETAR
+BJELOBRK-VARGA JASNA
+BJELOGRLIĆ ĐORĐE
+BJELOGRLIĆ BLAGOJE
+BJELOGRLIĆ DEJANA
+BJELOGRLIĆ DRAGAN
+BJELOGRLIĆ LJUBICA
+BJELOGRLIĆ LJUBO
+BJELOGRLIĆ MITAR
+BJELOGRLIĆ MOMČILO
+BJELOTOMIĆ JOVO
+BJELOVIĆ RATKO
+BJELOVUK MIRJANA
+BJELOVUK SLAVICA
+BJELOVUK SLAVKO
+BLAŠKO TIBOR
+BLAŠKOVIĆ FRANJO
+BLAŠKOVIĆ LASLO
+BLAŠKOVIĆ PAVLE
+BLAŽAN FRANJO
+BLAŽAN IVO
+BLAŽAN MARKO
+BLAŽAN SLAVKO
+BLAŽEK GUSTAV
+BLAŽEK JELENA
+BLAŽEK MARIJA
+BLAŽEK MIHALJ
+BLAŽEVA OLGA
+BLAŽEVIĆ ANDRIJA
+BLAŽEVIĆ DRAGANA
+BLAŽEVIĆ DRAGO
+BLAŽEVIĆ DUŠANKA
+BLAŽEVIĆ DUŠICA
+BLAŽEVIĆ DUBRAVKA
+BLAŽEVIĆ FRANJO
+BLAŽEVIĆ MIODRAG
+BLAŽEVIĆ RADE DR LEKAR
+BLAŽEVIĆ STJEPAN
+BLAŽEVIĆ SUZANA
+BLAŽEVIĆ VERA
+BLAŽEVIĆ ZORAN
+BLAŽIĆ ĐORĐE
+BLAŽIĆ BOŠKO
+BLAŽIĆ BRANISLAVA
+BLAŽIĆ DRAGAN
+BLAŽIĆ DRAGAN
+BLAŽIĆ DRAGOLJUB
+BLAŽIĆ HRISTINA
+BLAŽIĆ IVAN
+BLAŽIĆ JELENA
+BLAŽIĆ KSENIJA
+BLAŽIĆ MARIJA
+BLAŽIĆ METODIJE
+BLAŽIĆ MIHAJLO
+BLAŽIĆ SAVA
+BLAŽIĆ SAVKO
+BLAŽIĆ SVETOZAR
+BLAŽIĆ VIDA
+BLAŽIK ANTAL
+BLAŽIN DRAGINJA
+BLAGOJEV ŽIVKO
+BLAGOJEV ŽIVKO
+BLAGOJEV ĐORĐE
+BLAGOJEV IVAN
+BLAGOJEV MILIVOJ
+BLAGOJEV MILORAD
+BLAGOJEV MITA
+BLAGOJEV RADA
+BLAGOJEV RADOSLAV
+BLAGOJEV STEVAN
+BLAGOJEV VELIMIR
+BLAGOJEVIĆ ČEDO
+BLAGOJEVIĆ ŽARKO
+BLAGOJEVIĆ ĐORĐE
+BLAGOJEVIĆ ĐORĐE
+BLAGOJEVIĆ ANA
+BLAGOJEVIĆ BEĆKO
+BLAGOJEVIĆ BORA
+BLAGOJEVIĆ BORISLAV
+BLAGOJEVIĆ BORIVOJE
+BLAGOJEVIĆ BORIVOJ
+BLAGOJEVIĆ BORKO
+BLAGOJEVIĆ BRANISLAV
+BLAGOJEVIĆ DANICA
+BLAGOJEVIĆ DRAGOMIR
+BLAGOJEVIĆ DUŠAN DIPL ING
+BLAGOJEVIĆ DUŠAN
+BLAGOJEVIĆ JAGICA
+BLAGOJEVIĆ JANKO
+BLAGOJEVIĆ KRSTAN
+BLAGOJEVIĆ LJUBOMIR
+BLAGOJEVIĆ MARINKO
+BLAGOJEVIĆ MIKA
+BLAGOJEVIĆ MIKA
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILENA
+BLAGOJEVIĆ MILICA
+BLAGOJEVIĆ MILIVOJE
+BLAGOJEVIĆ MILOŠ
+BLAGOJEVIĆ MIROSLAV
+BLAGOJEVIĆ MLAĐA
+BLAGOJEVIĆ MOMIR
+BLAGOJEVIĆ NADA
+BLAGOJEVIĆ PREDRAG
+BLAGOJEVIĆ RADE
+BLAGOJEVIĆ RADOMIR
+BLAGOJEVIĆ SERAFINA
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SNEŽANA
+BLAGOJEVIĆ SNJEŽANA
+BLAGOJEVIĆ STANKO
+BLAGOJEVIĆ STEVO
+BLAGOJEVIĆ SVETKO
+BLAGOJEVIĆ VLADISLAV
+BLAGOVIĆ MARIJA
+BLAHO JOŽEF
+BLANARIK ŠANDOR
+BLANARIK ĐURA
+BLANARIK ALEKSANDAR
+BLANARIK ETELKA
+BLANARIK ILONA
+BLANARIK JOŽEF
+BLANARIK LADISLAV
+BLANARIK OLGA
+BLANARIK STEVAN
+BLANARIK TIBOR
+BLANARIK VALERIJA
+BLANUŠA BRANKO
+BLANUŠA ILIJA
+BLANUŠA RADE
+BLANUŠA VERA
+BLANUŠA ZORAN
+BLATEŠIĆ MIOLJKA
+BLATEŠIĆ RAJKO
+BLATNICKI VESNA
+BLEČIĆ JELENA
+BLEČIĆ LJUBICA
+BLEČIĆ MILADIN
+BLEČIĆ MIODRAG
+BLEČIĆ RADOSAV MR
+BLEČIĆ SAŠA
+BLEHL JOVANKA
+BLITVA ĐORĐE
+BLITVA BRANKO
+BLIZANAC DOBRIVOJ
+BLIZANAC DRAGOLJUB
+BLIZANAC DUŠAN
+BLIZANAC JELKICA
+BLIZANAC LEPOSAVA
+BLIZANAC MILORAD
+BLIZANAC MIROSLAV
+BLIZANAC NENAD
+BLIZANAC SAVA
+BLIZANAC VUJICA
+BLOŽIĆ DIMITRIJE
+BLUMENŠAJN KARLO
+BOČAN IVAN
+BOČKOR NIKOLA
+BOŠČANIN BOŠKO
+BOŠKIĆ BORKA
+BOŠKIĆ MIRJANA
+BOŠKIĆ NATAŠA
+BOŠKIĆ ZORA
+BOŠKOV ŽARKO DIPL ING
+BOŠKOV ŽIVOJIN
+BOŠKOV-JAGODIĆ ZORICA
+BOŠKOV LJUBINKA
+BOŠKOV LUKA
+BOŠKOV MILIVOJE
+BOŠKOV MILOŠ
+BOŠKOV MIRJANA
+BOŠKOV SAVKA
+BOŠKOV SOFIJA
+BOŠKOV SRETEN
+BOŠKOV STEVAN
+BOŠKOV STOJAN
+BOŠKOV VESNA
+BOŠKOV VUJADIN
+BOŠKOVIĆ ŽELJKO
+BOŠKOVIĆ ŽIVKO
+BOŠKOVIĆ ALEKSANDAR
+BOŠKOVIĆ ALEKSA
+BOŠKOVIĆ ALEKSA
+BOŠKOVIĆ ANĐA
+BOŠKOVIĆ BILJANA
+BOŠKOVIĆ BLAGOJE
+BOŠKOVIĆ BOŠKO
+BOŠKOVIĆ BOGDANKA
+BOŠKOVIĆ BOGDAN
+BOŠKOVIĆ BORIS
+BOŠKOVIĆ BUDIMIR
+BOŠKOVIĆ CVETKO
+BOŠKOVIĆ DANILO
+BOŠKOVIĆ DESANKA
+BOŠKOVIĆ DRAGAN
+BOŠKOVIĆ DRAGICA
+BOŠKOVIĆ DRAGOJLO
+BOŠKOVIĆ DRAGOLJUB
+BOŠKOVIĆ DRAGOMIR
+BOŠKOVIĆ DRAGOMIR
+BOŠKOVIĆ DUŠAN
+BOŠKOVIĆ DUŠAN
+BOŠKOVIĆ DUŠKO
+BOŠKOVIĆ GORAN
+BOŠKOVIĆ GORAN
+BOŠKOVIĆ HEDVIGA
+BOŠKOVIĆ JOVAN
+BOŠKOVIĆ KRSTO
+BOŠKOVIĆ LJILJANA
+BOŠKOVIĆ LJUBIŠA
+BOŠKOVIĆ LJUBINKA
+BOŠKOVIĆ LJUBOMIR
+BOŠKOVIĆ LJUBOMIR
+BOŠKOVIĆ MILEVA
+BOŠKOVIĆ MILIVOJE
+BOŠKOVIĆ MILIVOJE
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILOVAN
+BOŠKOVIĆ MIODRAG
+BOŠKOVIĆ MIRKO
+BOŠKOVIĆ MOMČILO
+BOŠKOVIĆ MOMČILO
+BOŠKOVIĆ NADA
+BOŠKOVIĆ NADA
+BOŠKOVIĆ NEDELJKO
+BOŠKOVIĆ NIKOLA
+BOŠKOVIĆ NIKOLA
+BOŠKOVIĆ NOVKA
+BOŠKOVIĆ-PEROVIĆ IVANA
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ RADOMIR
+BOŠKOVIĆ RATOMIR
+BOŠKOVIĆ ROSA
+BOŠKOVIĆ SAVA
+BOŠKOVIĆ SLOBODANKA
+BOŠKOVIĆ SLOBODAN
+BOŠKOVIĆ SLOBODAN
+BOŠKOVIĆ STEVAN ADVOKAT
+BOŠKOVIĆ STEVAN
+BOŠKOVIĆ STEVAN
+BOŠKOVIĆ TOMISLAV
+BOŠKOVIĆ TOMISLAV
+BOŠKOVIĆ VELJKO
+BOŠKOVIĆ VLADA
+BOŠKOVIĆ VLADIMIR
+BOŠKOVIĆ VOJISLAV
+BOŠKOVSKI DOJČIN
+BOŠKOVSKI RADA
+BOŠNJAČIĆ RAJKO
+BOŠNJAK ĐORĐE
+BOŠNJAK ĐURA
+BOŠNJAK ĐURO
+BOŠNJAK ANA
+BOŠNJAK BOŽIDAR
+BOŠNJAK DARKO
+BOŠNJAK DEJAN
+BOŠNJAK DESANKA
+BOŠNJAK FERENC
+BOŠNJAK IŠTVAN
+BOŠNJAK JELENA
+BOŠNJAK JELICA
+BOŠNJAK JELICA
+BOŠNJAK JULKA
+BOŠNJAK KATARINA
+BOŠNJAK KOSTA
+BOŠNJAK LJUBOMIR
+BOŠNJAK LJUBOMIR
+BOŠNJAK MAGDALENA
+BOŠNJAK MARIJA
+BOŠNJAK MILAN
+BOŠNJAK MILENA
+BOŠNJAK MILORAD
+BOŠNJAK MIRKO
+BOŠNJAK NEĐO
+BOŠNJAK NIKOLA
+BOŠNJAK PAVLE
+BOŠNJAK PETAR
+BOŠNJAK RADMILA
+BOŠNJAK RADOJKA
+BOŠNJAK RADOVAN
+BOŠNJAK SLAVKA
+BOŠNJAK SLAVKO
+BOŠNJAK TOMISLAV
+BOŠNJAK VELIMIR
+BOŠNJAK VIDOSAVA
+BOŠNJAK VINKA
+BOŠNJAK VOJISLAV
+BOŠNJAK ZORAN
+BOŠNJAKOVIĆ ALEKSANDAR DIPL ING
+BOŠNJAKOVIĆ ALEKSANDAR DIPL PRAVNIK
+BOŠNJAKOVIĆ ANTONIJA
+BOŠNJAKOVIĆ BILJANA
+BOŠNJAKOVIĆ BORISLAV
+BOŠNJAKOVIĆ BORISLAV
+BOŠNJAKOVIĆ BRANKA
+BOŠNJAKOVIĆ CVIJETIN
+BOŠNJAKOVIĆ DOBRINKA
+BOŠNJAKOVIĆ KORNELIJE
+BOŠNJAKOVIĆ LJUBOMIR
+BOŠNJAKOVIĆ MARICA DIPL OEC
+BOŠNJAKOVIĆ MILUTIN
+BOŠNJAKOVIĆ MIROSLAV
+BOŠNJAKOVIĆ MITAR
+BOŠNJAKOVIĆ PAVAO
+BOŠNJAKOVIĆ RADOSLAV
+BOŠNJAKOVIĆ RATKO
+BOŠNJAKOVIĆ SINIŠA
+BOŠNJAKOVIĆ SLAVKA
+BOĆAN MARIJA
+BOĆEREG ZUZANA
+BOŽA PAL
+BOŽANIĆ ŽIKA
+BOŽANIĆ ĐORĐE
+BOŽANIĆ ANĐELKA
+BOŽANIĆ DUŠAN
+BOŽANIĆ GOJKO
+BOŽANIĆ JELENA
+BOŽANIĆ KOSA
+BOŽANIĆ MILICA
+BOŽANIĆ MILORAD
+BOŽANIĆ NEVENKA
+BOŽANOVIĆ RAJKA
+BOŽANOVIĆ ZORAN
+BOŽER LAJOŠ
+BOŽER LJUDEVIT
+BOŽER ZORA
+BOŽIČIĆ MILAN
+BOŽIČIĆ MILENKO
+BOŽIČIĆ PETAR
+BOŽIČKOVIĆ JOVAN
+BOŽIČKOVIĆ NEDELJKO DR
+BOŽIČKOVIĆ NERA
+BOŽIČKOVIĆ VOJISLAV
+BOŽIČKOVIĆ ZORKA
+BOŽIĆ ČEDOMIR
+BOŽIĆ ŽARKO
+BOŽIĆ ŽIVANA
+BOŽIĆ ŽIVKO
+BOŽIĆ ĐORĐE
+BOŽIĆ ĐURĐINA
+BOŽIĆ ĐURA
+BOŽIĆ ALEKSANDAR
+BOŽIĆ ALEKSANDAR
+BOŽIĆ ANĐELKA
+BOŽIĆ BOŠKO
+BOŽIĆ BOŽANA
+BOŽIĆ BORIVOJ
+BOŽIĆ BORKO
+BOŽIĆ BRANISLAV
+BOŽIĆ BRANISLAV
+BOŽIĆ DARINKA
+BOŽIĆ DEJO
+BOŽIĆ DESANKA
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGOLJUB
+BOŽIĆ DRAGOMIR
+BOŽIĆ DRAGOMIR
+BOŽIĆ DRAGOMIR
+BOŽIĆ DUŠAN
+BOŽIĆ GAVRO
+BOŽIĆ GOJKO
+BOŽIĆ GORDANA
+BOŽIĆ GORDANA
+BOŽIĆ GRADIMIR
+BOŽIĆ ILIJA
+BOŽIĆ IVAN
+BOŽIĆ JOVANKA
+BOŽIĆ JOVAN
+BOŽIĆ JOVAN
+BOŽIĆ JOVICA
+BOŽIĆ JULKA
+BOŽIĆ KSENIJA
+BOŽIĆ LAZAR
+BOŽIĆ LAZAR
+BOŽIĆ LJILJANA
+BOŽIĆ MARA
+BOŽIĆ MARINKO
+BOŽIĆ MARKO
+BOŽIĆ MARKO
+BOŽIĆ MARKO
+BOŽIĆ MATIJA
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILEVA
+BOŽIĆ MILE
+BOŽIĆ MILISAV
+BOŽIĆ MILJKO
+BOŽIĆ MILORAD
+BOŽIĆ MIODRAG
+BOŽIĆ MIRJANA
+BOŽIĆ MIRKO
+BOŽIĆ MIRKO
+BOŽIĆ MOMČILO
+BOŽIĆ MOMČILO
+BOŽIĆ NEĐO
+BOŽIĆ NENAD
+BOŽIĆ NENAD
+BOŽIĆ NIKOLA
+BOŽIĆ OLGA
+BOŽIĆ OZREN
+BOŽIĆ PAVLE DIPL ING
+BOŽIĆ PERA
+BOŽIĆ PETAR
+BOŽIĆ RADIVOJ
+BOŽIĆ RADMILA
+BOŽIĆ-RADOMIROVIĆ JOKA
+BOŽIĆ RADOVAN
+BOŽIĆ RAJKO
+BOŽIĆ RANKO
+BOŽIĆ SANJA
+BOŽIĆ SAVA
+BOŽIĆ SAVA
+BOŽIĆ SAVO
+BOŽIĆ SLOBODAN
+BOŽIĆ SLOBODAN
+BOŽIĆ SRETEN
+BOŽIĆ STANIMIR
+BOŽIĆ STEVAN
+BOŽIĆ STEVO
+BOŽIĆ STOJANKA
+BOŽIĆ TAMARA
+BOŽIĆ TATJANA
+BOŽIĆ TEODOR
+BOŽIĆ TOMISLAV
+BOŽIĆ VERICA
+BOŽIĆ-VILIĆ JELENA
+BOŽIĆ VLADANKA
+BOŽIĆ VLADA
+BOŽIĆ VLADA
+BOŽIĆ VLADA
+BOŽIĆ VLADISLAV
+BOŽIĆ VUKOSAVA
+BOŽIĆ ZLATA
+BOŽIĆ ZLATICA
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORKA
+BOŽIDAR ALEKSANDAR
+BOŽIDAR BORISLAV
+BOŽIDAR BORISLAV
+BOŽIDAR-KRIŽAK IRENA
+BOŽIDAR LJUBOMIR
+BOŽIDAREVIĆ ĐURA
+BOŽIDAREVIĆ DESANKA
+BOŽIDAREVIĆ PERSIDA
+BOŽIDAREVIĆ VELJKO
+BOŽIN ŽARKO
+BOŽIN ĐORĐE
+BOŽIN DANICA
+BOŽIN DARINKA
+BOŽIN DESANKA
+BOŽIN IGNJAT DIPL ING
+BOŽIN ISIDOR
+BOŽIN JELICA
+BOŽIN JULIJANA
+BOŽIN KRISTINA
+BOŽIN KSENIJA
+BOŽIN LAZAR
+BOŽIN LJUBICA
+BOŽIN LJUBICA
+BOŽIN MILOŠ
+BOŽIN MILOŠ
+BOŽIN MIROSLAV
+BOŽIN NIKOLA
+BOŽIN PAVLE
+BOŽIN PETAR
+BOŽIN RADIVOJ
+BOŽIN RADOVAN
+BOŽIN SINIŠA
+BOŽIN SLAVICA
+BOŽIN SLOBODAN
+BOŽIN STEVAN
+BOŽIN STEVAN
+BOŽIN STEVAN
+BOŽINIĆ RUŽICA
+BOŽINOVSKI ANGEL
+BOŽINOVSKI RISTE
+BOŽINOVSKI TRAJAN
+BOŽJAK FRANJO
+BOŽJAK MIKA
+BOŽJAKOVIĆ LJUBINKA
+BOŽO ELEONORA
+BOŽOKI ERNE
+BOŽOKI ILONA
+BOŽOVIĆ BOŽIDAR
+BOŽOVIĆ BORIVOJ
+BOŽOVIĆ BRATISLAV
+BOŽOVIĆ GORČIN
+BOŽOVIĆ GORDANA
+BOŽOVIĆ LJUBICA
+BOŽOVIĆ MILADIN DIPL ING
+BOŽOVIĆ MILADIN
+BOŽOVIĆ MILORAD
+BOŽOVIĆ MILOVAN
+BOŽOVIĆ MIRJANA
+BOŽOVIĆ MIROLJUB
+BOŽOVIĆ RAŠKO
+BOŽOVIĆ SLAVKO
+BOŽOVIĆ SNEŽANA
+BOŽOVIĆ STANKA
+BOŽOVIĆ VELIMIR
+BOŽOVIĆ VERA
+BOŽOVIĆ VLADIMIR
+BOŽULIĆ ANĐELKO
+BOŽULIĆ IVAN
+BOŽULIĆ IVICA
+BOŽULIĆ SINIŠA
+BOŽUNOVIĆ DUŠAN
+BOĐA ĐURA
+BOĐA ANDRIJA
+BOĐA ANDRIJA
+BOĐA ANDRIJA
+BOĐA IVAN
+BOĐA IVAN
+BOĐA JOVAN
+BOĐA SAŠA
+BOĐA STEVAN
+BOĐANAC JELENA
+BOĐANAC MIROSLAV
+BOĐANAC ZDRAVKO
+BOĐANSKI ALEKSANDAR
+BOAROV DIMITRIJE
+BOAROV JOVAN
+BOAROV KATARINA
+BOAROV MILANKA
+BOB JUSTINA
+BOBAK IŠTVAN
+BOBAK KATICA
+BOBAN ĐERĐ
+BOBAN MARIJA
+BOBAN MERIMA
+BOBAN NEDELJKO
+BOBAN STIPE
+BOBAN SUZANA
+BOBAN-VARNUS ERŽEBET
+BOBANJ IMRE
+BOBAR BOŠKO
+BOBAREVIĆ RUŽICA
+BOBERIĆ OLGA
+BOBERIĆ ZORKA
+BOBIĆ ĐORĐE
+BOBIĆ ĐORĐE
+BOBIĆ BOGDAN
+BOBIĆ BRANISLAV
+BOBIĆ IVAN
+BOBIĆ JOSIP
+BOBIĆ KAJA
+BOBIĆ LJUBOMIR
+BOBIĆ MILANKA
+BOBIĆ MILICA
+BOBIĆ MLADEN
+BOBIĆ NENAD
+BOBIĆ RUŽICA
+BOBIĆ TANJA
+BOBINAC JOSIP
+BOBINAC LUCIJA
+BOBINEC JOSIP
+BOBLJAGOVIĆ BOGOSLAV
+BOBOŠ STANKO
+BOC STEVAN
+BOCA DANE
+BOCA DUŠAN
+BOCA MILE
+BOCA MILOŠ
+BOCONADI MARTON
+BODŽONI GIZELA
+BODŽONI STEVAN
+BODA JOVAN
+BODAKOŠ JOSIP
+BODAKOŠ STJEPAN
+BODEGRAJAC SOFIJA
+BODI ERŽEBET
+BODI JASMINA
+BODI LAJOŠ
+BODI LASLO
+BODI MIHAJLO
+BODIŠ JOŽEF
+BODIŠ MILICA
+BODIROŽA PETAR
+BODIROŽA RADIVOJ
+BODIROGA JOVAN
+BODIROGA MARIJA
+BODIROGA NIKO
+BODIROGA PREDRAG
+BODLOVIĆ NIKOLA
+BODNAR ŠANDOR
+BODNAR RISTA
+BODNAR STEVAN
+BODNAR VERICA
+BODO IŠTVAN
+BODO KAROLJ
+BODO MARIJA
+BODO MARIJA
+BODO MATIJA
+BODO STEVAN
+BODOČI JOŽEF
+BODOLO ŠANDOR
+BODOLO IŠTVAN
+BODONJI KARLO
+BODOR ANTON
+BODOR ANTUN
+BODOR BOSILJKA
+BODOR FRANJA
+BODOR FRANJA
+BODOR IŠTVAN
+BODOR JANOŠ
+BODOR JOSIP
+BODOR PETAR
+BODOR SINIŠA
+BODRE IŠTVAN
+BODRIČ-HERĆAN ARANKA
+BODRIČ MIHAJLO
+BODRIČ STEVAN
+BODRIČ VESNA
+BODRIĆ JELISAVETA
+BODROŽA BRANKO
+BODROŽA OLGA
+BODROŽIĆ ILIJA
+BODROŽIĆ ILIJA
+BODROŽIĆ JOVAN
+BODROŽIĆ MILAN
+BODROŽIĆ STEVAN
+BODULIĆ ŠTEFANIJA
+BODULIĆ JELENA
+BODULIĆ PETAR
+BODULIĆ SLOBODAN
+BODULIĆ SLOBODAN
+BODVAI JANKO
+BOGAROŠI SLOBODAN
+BOGAROŠKI ANDRIJA
+BOGATINOSKI TOMISLAV
+BOGAVAC ALEKSANDAR DR
+BOGAVAC BRANISLAV
+BOGAVAC DRAGICA
+BOGAVAC JADRANKA
+BOGAVAC MIRJANA
+BOGDAN ANDRAŠ
+BOGDAN BILJANA
+BOGDAN DUŠAN
+BOGDAN IŠTVAN
+BOGDAN IMRE
+BOGDAN IVAN
+BOGDAN JOSIP
+BOGDAN JOSIP
+BOGDAN MANE
+BOGDAN-MIJIN DUŠANKA
+BOGDAN MILKA
+BOGDAN NIKOLA
+BOGDAN STEVAN
+BOGDAN STEVA
+BOGDAN VERICA
+BOGDAN ZORAN
+BOGDANFI ŠANDOR NOVINAR
+BOGDANFI MARINKO
+BOGDANOV-ANTONIĆ BILJANA
+BOGDANOV BISERKA
+BOGDANOV BRANISLAV DR PROF
+BOGDANOV BRANKA DR LEKAR
+BOGDANOV DANILO
+BOGDANOV DIMITRIJE
+BOGDANOV DRAGAN
+BOGDANOV DUŠAN
+BOGDANOV-HIL DOBRILA
+BOGDANOV IRMA
+BOGDANOV IVAN
+BOGDANOV LAZAR
+BOGDANOV MARICA
+BOGDANOV MILAN
+BOGDANOV MILENA
+BOGDANOV MILOŠ
+BOGDANOV MILORAD
+BOGDANOV NADA
+BOGDANOV OLGA
+BOGDANOV PETAR
+BOGDANOV SLAVKO
+BOGDANOV SLAVNA
+BOGDANOV SMILJA
+BOGDANOV STANKO
+BOGDANOV STEVAN
+BOGDANOV STEVAN
+BOGDANOV ZORAN
+BOGDANOVIĆ ŽIVAN MR
+BOGDANOVIĆ ĐORĐE
+BOGDANOVIĆ ĐORĐE
+BOGDANOVIĆ ĐURA
+BOGDANOVIĆ ALEKSANDAR
+BOGDANOVIĆ ANKA
+BOGDANOVIĆ BLAGOJA
+BOGDANOVIĆ BOŠKO
+BOGDANOVIĆ BOŽIDAR
+BOGDANOVIĆ BOGDAN
+BOGDANOVIĆ BORA
+BOGDANOVIĆ BORIVOJ
+BOGDANOVIĆ BRANISLAVA
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANKO
+BOGDANOVIĆ DARINKA
+BOGDANOVIĆ DESANKA
+BOGDANOVIĆ DIMITRIJE
+BOGDANOVIĆ DOBRIVOJ
+BOGDANOVIĆ DRAGAN
+BOGDANOVIĆ DRAGAN
+BOGDANOVIĆ DRAGOLJUB
+BOGDANOVIĆ DRAGOLJUB
+BOGDANOVIĆ DUŠKO
+BOGDANOVIĆ ETELKA
+BOGDANOVIĆ GEDEON
+BOGDANOVIĆ GOJKO
+BOGDANOVIĆ GORDANA
+BOGDANOVIĆ ILIJA
+BOGDANOVIĆ ILONA
+BOGDANOVIĆ IVAN
+BOGDANOVIĆ JOVAN
+BOGDANOVIĆ JOVICA
+BOGDANOVIĆ KSENIJA
+BOGDANOVIĆ LAZAR
+BOGDANOVIĆ LAZAR
+BOGDANOVIĆ LJILJANA
+BOGDANOVIĆ LJUBISAV
+BOGDANOVIĆ LJUBOMIR
+BOGDANOVIĆ LJUBOMIR
+BOGDANOVIĆ MARINA
+BOGDANOVIĆ MIĆO
+BOGDANOVIĆ MIHAJLO
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILKA
+BOGDANOVIĆ MILOŠ
+BOGDANOVIĆ MILOSAV
+BOGDANOVIĆ MIODRAG
+BOGDANOVIĆ MIRJANA
+BOGDANOVIĆ MITAR
+BOGDANOVIĆ MLADEN
+BOGDANOVIĆ NADA
+BOGDANOVIĆ NADA
+BOGDANOVIĆ NEDELJKO
+BOGDANOVIĆ NIKOLA
+BOGDANOVIĆ NIKOLA
+BOGDANOVIĆ NOVAK
+BOGDANOVIĆ PAJA
+BOGDANOVIĆ PAVLE
+BOGDANOVIĆ PAVLE
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PRVOSLAV
+BOGDANOVIĆ RADISAV
+BOGDANOVIĆ RADIVOJE
+BOGDANOVIĆ RADOSLAV
+BOGDANOVIĆ RADOVAN
+BOGDANOVIĆ RANKO
+BOGDANOVIĆ RATOMIR
+BOGDANOVIĆ RUŽICA
+BOGDANOVIĆ SLAVKO MR PRAVNIK
+BOGDANOVIĆ SLOBODANKA PROFESOR
+BOGDANOVIĆ SLOBODAN
+BOGDANOVIĆ SLOBODAN
+BOGDANOVIĆ SOFIJA
+BOGDANOVIĆ SONJA
+BOGDANOVIĆ STEVAN
+BOGDANOVIĆ STEVAN
+BOGDANOVIĆ STEVO
+BOGDANOVIĆ SVETISLAV
+BOGDANOVIĆ TIHOMIR
+BOGDANOVIĆ TIHOMIR
+BOGDANOVIĆ VAJA
+BOGDANOVIĆ VASA
+BOGDANOVIĆ VERA
+BOGDANOVIĆ VITOMIR
+BOGDANOVIĆ VLADIMIR
+BOGDANOVIĆ VLAJKO
+BOGDANOVIĆ ZDRAVKO
+BOGDANOVIĆ ZORAN
+BOGDANOVSKI DIMITRIJE
+BOGDANOVSKI SLOBODAN
+BOGETIĆ DRAGOLJUB
+BOGETIĆ SANJA
+BOGIČEVIĆ ŽIVKO
+BOGIČEVIĆ ANĐELKA
+BOGIČEVIĆ DANICA
+BOGIČEVIĆ DUŠAN
+BOGIČEVIĆ GEORGIJE
+BOGIČEVIĆ KOSTADINKA
+BOGIČEVIĆ KRSTA
+BOGIČEVIĆ LJUBIŠA
+BOGIČEVIĆ LJUBICA
+BOGIČEVIĆ MARIJA
+BOGIČEVIĆ MILICA
+BOGIČEVIĆ NIKOLA
+BOGIČEVIĆ NIKOLA
+BOGIČEVIĆ TIHOMIR
+BOGIČEVIĆ ZORKA
+BOGIŠIĆ ANDRIJA
+BOGIŠIĆ FRANJA
+BOGIŠIĆ JOSIP
+BOGIĆ ALEKSANDAR
+BOGIĆ ANĐELKA
+BOGIĆ BRANISLAV
+BOGIĆ DIMITRIJE
+BOGIĆ DRAGAN
+BOGIĆ DUŠANKA
+BOGIĆ ILDIKO
+BOGIĆ JELENA
+BOGIĆ JELISAVETA
+BOGIĆ JOVAN
+BOGIĆ LJUBICA
+BOGIĆ MARIJA
+BOGIĆ MILAN
+BOGIĆ MIRJANA
+BOGIĆ SOFIJA
+BOGIĆ SREĆKO
+BOGIĆ STEVAN
+BOGIĆEVIĆ ŽELJKA
+BOGIĆEVIĆ ANĐELKA
+BOGIĆEVIĆ BRANISLAV
+BOGIĆEVIĆ DIMITRIJE
+BOGIĆEVIĆ JELISAVETA
+BOGIĆEVIĆ JELKA
+BOGIĆEVIĆ JOLETA
+BOGIĆEVIĆ KONSTANTIN
+BOGIĆEVIĆ MILAN
+BOGNAR ŠANDOR
+BOGNAR ALEKSANDAR DIPL ING
+BOGNAR ANTAL
+BOGNAR ELIZABETA
+BOGNAR ELIZABETA
+BOGNAR GIZELA
+BOGNAR JOŽEF
+BOGNAR KALMAN
+BOGNAR LAJOŠ
+BOGNAR MARIA
+BOGNAR MARIJA
+BOGNAR MIRKO
+BOGNAR ROZIKA
+BOGNAR SILARD
+BOGNAR STEVAN DR
+BOGOJEV ŽIVKO
+BOGOJEVAC ERŽEBET
+BOGOJEVAC JOVAN
+BOGOJEVIĆ ANGELINA
+BOGOJEVIĆ BILJANA
+BOGOJEVIĆ BOŽO
+BOGOJEVIĆ BRANISLAV
+BOGOJEVIĆ BRANKO
+BOGOJEVIĆ DRAGO
+BOGOJEVIĆ JOVANKA
+BOGOJEVIĆ LAZO
+BOGOJEVIĆ LJUBISAV
+BOGOJEVIĆ MILAN
+BOGOJEVIĆ MILORAD
+BOGOJEVIĆ MITAR
+BOGOJEVIĆ MOMČILO
+BOGOJEVIĆ RADMILA
+BOGOJEVIĆ RADOJKA
+BOGOJEVIĆ RADOMIR
+BOGOJEVIĆ RADOMIR
+BOGOJEVIĆ RAJKO
+BOGOJEVIĆ STANIJA
+BOGOJEVIĆ TODOR
+BOGOJEVIĆ VELIMIR
+BOGOJEVIĆ VLADA
+BOGOJEVIĆ VLADICA
+BOGOJEVIĆ VLAJKO
+BOGOSAV MILAN
+BOGOSAVAC MIROSLAV
+BOGOSAVAC MIROSLAV
+BOGOSAVAC ZDRAVKO
+BOGOSAVLJEV JOVANKA
+BOGOSAVLJEVIĆ ŽARKO
+BOGOSAVLJEVIĆ BRANISLAV
+BOGOSAVLJEVIĆ DOBRILA
+BOGOSAVLJEVIĆ DOBRIVOJE
+BOGOSAVLJEVIĆ DRAGICA
+BOGOSAVLJEVIĆ DRAGOMIR
+BOGOSAVLJEVIĆ MILADIN
+BOGOSAVLJEVIĆ MIODRAG DR ING
+BOGOSAVLJEVIĆ RADE
+BOGOSAVLJEVIĆ STANIMIR
+BOGOSAVLJEVIĆ ZLATA
+BOGOVAC DOBROSLAVA
+BOGOVAC DRAGOLJUB
+BOGOVAC MILAN DR
+BOGOVAC NIKOLA
+BOGOVAC SLOBODAN
+BOGOVIĆ IBOJA
+BOGOVIĆ MIJO
+BOGOVIĆ NIKOLA
+BOGOVIĆ STEVAN
+BOGOVIĆ TOMISLAV
+BOGOVIĆ VESNA
+BOGOVIĆ VESNA
+BOGOVIĆ ZLATKO
+BOGUNOVIĆ ĐORĐE
+BOGUNOVIĆ BOGDAN
+BOGUNOVIĆ BRANKO
+BOGUNOVIĆ DRAGAN
+BOGUNOVIĆ MILAN
+BOGUNOVIĆ TOMISLAV
+BOGUNOVIĆ VLADE
+BOGUNOVIĆ ZORAN
+BOGUT LJUBO
+BOGUT NADA
+BOHAČEK VALTER
+BOHINC BOŽANA
+BOHOCKI JANOŠ
+BOHOCKI JULIJANA
+BOHOCKI PETAR
+BOHOCKI ROBERT
+BOHOTA SILVESTER
+BOHUŠ JOVAN
+BOJČETA GORAN
+BOJČEVSKI NAUM
+BOJČIĆ MILAN
+BOJA ANDRAŠ
+BOJA ERIKA
+BOJAC DAFINA
+BOJAC RADIVOJ
+BOJADIĆ MIRKO
+BOJAGIĆ MARKO
+BOJANIĆ ALEKSANDAR
+BOJANIĆ ANA
+BOJANIĆ BOGOSAV
+BOJANIĆ BORIKA
+BOJANIĆ BOSILJKA
+BOJANIĆ BRANE
+BOJANIĆ BUDIMIR
+BOJANIĆ DARINKA
+BOJANIĆ DESANKA
+BOJANIĆ DRAGICA
+BOJANIĆ DRAGOLJUB
+BOJANIĆ DUŠAN
+BOJANIĆ DUŠAN
+BOJANIĆ ILIJA
+BOJANIĆ JELICA
+BOJANIĆ LJUBO
+BOJANIĆ MILAN
+BOJANIĆ MILIVOJ
+BOJANIĆ MILIVOJ
+BOJANIĆ MILOŠ
+BOJANIĆ MILUN
+BOJANIĆ MIODRAG
+BOJANIĆ RANKO
+BOJANIĆ SLOBODAN
+BOJANIĆ SVETLANA
+BOJANIĆ VELIMIR
+BOJANIĆ ZORAN
+BOJANIĆ ZORA
+BOJANOVIĆ ČEDO
+BOJANOVIĆ DUŠKO
+BOJANOVIĆ LAZAR
+BOJANOVIĆ MARJAN
+BOJANOVIĆ MILORAD
+BOJANOVIĆ RISTAN
+BOJANOVIĆ VUJADIN
+BOJANOVIĆ VUJADIN
+BOJAT JANKO
+BOJAT MILORAD
+BOJAT RADOMIR
+BOJAT VESELIN DR
+BOJBIĆ RAJKO
+BOJIČIĆ RADIVOJ
+BOJIĆ ANĐELIJA
+BOJIĆ BLAGOTA
+BOJIĆ BOGDAN
+BOJIĆ BOGOLJUB
+BOJIĆ BOGOMIR
+BOJIĆ BORISLAV
+BOJIĆ BRANISLAVA
+BOJIĆ BRANISLAV
+BOJIĆ BRANISLAV
+BOJIĆ BRANISLAV
+BOJIĆ DANICA
+BOJIĆ DEJAN
+BOJIĆ DRAGAN
+BOJIĆ DRAGAN
+BOJIĆ DRAGICA
+BOJIĆ DRAGINJA
+BOJIĆ DUŠANKA
+BOJIĆ DUŠAN
+BOJIĆ DUŠAN
+BOJIĆ GORDANA DR
+BOJIĆ GORDANA
+BOJIĆ GORDANA
+BOJIĆ KATICA
+BOJIĆ-KOLARSKI GORDANA
+BOJIĆ LAZAR
+BOJIĆ MARKO
+BOJIĆ MIŠKO
+BOJIĆ MILA
+BOJIĆ MILENKO
+BOJIĆ MILIDAR
+BOJIĆ MILOVAN
+BOJIĆ MIODRAG
+BOJIĆ MIRKO
+BOJIĆ MIROSLAV
+BOJIĆ RADOSLAVA
+BOJIĆ RAJKO
+BOJIĆ RAJKO
+BOJIĆ SENKA
+BOJIĆ SNEŽANA
+BOJIĆ SNEŽANA
+BOJIĆ SONJICA
+BOJIĆ SRETEN
+BOJIĆ STEVAN
+BOJIĆ TOMISLAV
+BOJIĆ UGLJEŠA
+BOJIĆ VERA
+BOJINOVIĆ JELENA
+BOJKIĆ ALEKSANDAR
+BOJKIĆ MILICA
+BOJKO ALEKSANDAR
+BOJKO JOVANKA
+BOJKO MARIJA
+BOJKO NEVENKA
+BOJKOV FEODOR
+BOJKOV ROMAN
+BOJKOVIĆ DANICA
+BOJKOVIĆ KRISTINA
+BOJKOVIĆ LENA
+BOJKOVIĆ MILICA
+BOJKOVIĆ SLOBODAN
+BOJOVIĆ ŽIVORAD
+BOJOVIĆ BOŠKO
+BOJOVIĆ BOGDAN
+BOJOVIĆ BRANKO
+BOJOVIĆ BRANKO
+BOJOVIĆ DRAGOJE
+BOJOVIĆ DRAGOSLAV
+BOJOVIĆ DRAGUTIN
+BOJOVIĆ DRAGUTIN
+BOJOVIĆ IKONIJA
+BOJOVIĆ JAKOV
+BOJOVIĆ LJUBICA
+BOJOVIĆ LJUBO
+BOJOVIĆ MILAN
+BOJOVIĆ MILAN
+BOJOVIĆ MILICA
+BOJOVIĆ MILICA
+BOJOVIĆ MILOJE
+BOJOVIĆ MIROSLAV
+BOJOVIĆ NADA
+BOJOVIĆ NOVICA
+BOJOVIĆ PETAR
+BOJOVIĆ SRETKO
+BOJOVIĆ TOMISLAV
+BOJOVIĆ VELIŠA
+BOJOVIĆ VELJKO
+BOJOVIĆ VLADAN
+BOJOVIĆ VOJIN
+BOJOVIĆ ZORAN
+BOKŠAN ANKA
+BOKŠAN EMILIJAN
+BOKŠAN STOJAN
+BOKŠIĆ ĐOKA
+BOKŠIĆ JELENA
+BOKŠIĆ LAZAR
+BOKŠIĆ MIRJANA
+BOKŠIĆ MIRJANA
+BOKŠIĆ RADA
+BOKŠIĆ RADOJKA
+BOKŠIĆ RADOSLAV
+BOKŠIĆ RUŽENKA
+BOKŠIĆ SOKA
+BOKA ŽIVKA
+BOKA SILVIO
+BOKA STJEPAN
+BOKAN ANĐA
+BOKAN ANICA
+BOKAN DRAGO
+BOKAN MILAN
+BOKAN MILAN
+BOKAN MILENA
+BOKAN MIRKO
+BOKAN NIKOLA
+BOKAN RADE
+BOKAN RADOMIR
+BOKAN SLOBODAN
+BOKAN TOMISLAV
+BOKAN VELJKO
+BOKANIĆ BRANISLAV
+BOKANIĆ VLADIMIR
+BOKIĆ DANILO
+BOKIĆ DUŠAN
+BOKIĆ MILAN
+BOKIĆ RADOJICA
+BOKIĆ VID
+BOKOR ĐORĐE DIPL ING
+BOKOR ĐORĐE
+BOKOR GAVRA
+BOKOR LASLO DIPL ING
+BOKOR LASLO
+BOKOR MARIJA
+BOKOROV TANASIJE DIPL ING
+BOKUN DUBRAVKA
+BOKUN NOVAK
+BOKUN PETAR
+BOKUN SPASIJA
+BOKUN STEVA
+BOKUN VLADIMIR
+BOLANOVIĆ RAJKA
+BOLDIŽAR JOŽEF
+BOLDIŽAR LASLO
+BOLDIN RUDOLF
+BOLDOCKI JOŽEF
+BOLDOCKI VLADIMIR
+BOLDOG LAJOŠ
+BOLERAC ANA
+BOLESNIKOV BRANISLAV
+BOLESNIKOV DARINKA
+BOLESNIKOV MILORAD
+BOLESNIKOV ZORAN
+BOLF BRANKO
+BOLF NEVENKA
+BOLFIK JOSIP
+BOLIĆ ZLATKO
+BOLINOVSKA SOFIJA
+BOLINOVSKI MIROSLAV
+BOLJANOVIĆ ĐORĐE
+BOLJANOVIĆ ALEKSANDAR
+BOLJANOVIĆ MILIVOJE
+BOLJANOVIĆ NIKOLA
+BOLJANOVIĆ RADOVAN
+BOLJANOVIĆ ZORICA
+BOLJEVIĆ SVETOZAR
+BOLMANAC BRANKO
+BOLMANAC EVGENIJE
+BOLO ŽOLT
+BOLOK ANDRAŠ
+BOLOK JOŽEF
+BOLOK KARLO
+BOLOK KAROLJ
+BOLOK PAL
+BOLORIN RADIVOJ
+BOLTA ŽELJKO
+BOLTA ĐURA
+BOLTA BRANKO
+BOLTA DRAGICA
+BOMEŠTAR RADA
+BONA STEVAN
+BONDŽIĆ DEJAN
+BONDARENKO ALEKSANDAR DR
+BONDOKIĆ BORIVOJE
+BONDOKIĆ LJUBICA
+BONERT DUŠAN DR
+BONERT DUŠAN
+BONIĆ DRAGAN
+BONIĆ MARJAN
+BONIĆ MILICA
+BONIĆ VLADIMIR
+BONUS LJUBICA
+BOR ENDRE
+BORČANIN LJUBICA
+BORČANIN SOFIJA
+BORČANSKI TINKA
+BORČIĆ BUDE
+BORČIĆ DRAGANA
+BORČIĆ JOVAN
+BORŠI TIVADAR DIPL OEC
+BORŠOŠ ATILA
+BORŠOŠ BARBARA
+BORŠOŠ IŠTVAN
+BORŠOŠ IŠTVAN
+BORŠOŠ IMRE
+BORŠTNAR HENRIK
+BORŠTNER NADA
+BORĐIN LAZAR
+BORĐOŠKI ĐORĐE DIPL ING
+BORĐOŠKI BOŠKO
+BORĐOŠKI MILICA
+BORĐOŠKI TAMARA
+BORĐOŠKI VOJIN
+BORAŠ IRENA
+BORAS BORISLAV
+BORAS MARIJA
+BORAS MILICA
+BORBAŠ KAROLJ
+BORBAŠ VIOLETA
+BORBAŠ ZOLTAN
+BORBELJ ALEKSANDAR
+BORBELJ JANOŠ
+BORBELJ JOSIP
+BORBELJ LJUBICA
+BORBELJ MARIJA
+BORBELJ NEVENKA
+BORDAŠ ĐEZE
+BORDAŠ AKOŠ
+BORDAŠ BELA
+BORDAŠ FERENC
+BORDAŠ FRANJA
+BORDAŠ HILDA
+BORENOVIĆ ANTONIJE
+BORENOVIĆ MILE
+BORENOVIĆ VERA
+BORI IMRE DR
+BORI MARIJA
+BORIČIĆ LAZAR
+BORIČIĆ NOVAK
+BORIČIĆ RADIVOJE
+BORIČIĆ RADULE
+BORIŠEV BORISLAV
+BORIŠEV LJILJANA
+BORIŠEV MILENKO
+BORIŠEV NIKOLA
+BORIŠEV RUŽICA
+BORIŠEV SAVA
+BORIŠEV TEODOR
+BORIŠEV VASA
+BORIŠIĆ MARIJA
+BORIŠIĆ VLADIMIR
+BORIĆ ČEDOMIR
+BORIĆ ALEKSANDAR
+BORIĆ DUŠAN
+BORIĆ KAMENKO
+BORIĆ KATICA
+BORIĆ MILAN
+BORIĆ MILKA
+BORIĆ NIKOLA
+BORIĆ PETAR
+BORIĆ STEVAN
+BORIĆ ZORAN
+BORIĆ ZORAN
+BORIS JOSIP
+BORIVOJEVIĆ VITOMIR
+BORJANIN SLAVKO
+BORJANOVIĆ GORDANA
+BORJANOVIĆ ILIJA
+BORJANOVIĆ NIKOLA
+BORKO STANISLAV
+BORKOVAČKI ZORAN
+BORKOVAC KATARINA
+BORKOVIĆ DRAGOSLAVA
+BORKOVIĆ MILAN
+BORLJA STEVAN
+BOROŠ ŠANDOR
+BOROŠ ŠANDOR
+BOROŠ ĐERĐ
+BOROŠ-ĐEVI ŽELJKO
+BOROŠ ĐORĐE
+BOROŠ ALEKSANDAR
+BOROŠ ANDRIJA
+BOROŠ ANTUN
+BOROŠ ERNE
+BOROŠ EVA
+BOROŠ IŠTVAN
+BOROŠ JOŽEF
+BOROŠ JOLAN
+BOROŠ JULIJA
+BOROŠ LADISLAV
+BOROŠ LAJOŠ
+BOROŠ MARGITA
+BOROŠ MIHAJLO
+BOROŠ MIHAJLO
+BOROŠ MIKLOŠ
+BOROŠ VERA
+BOROŠIĆ ELIZABETA
+BOROCKI ALEKSANDAR
+BOROCKI DANICA
+BOROCKI LJUBINKA
+BOROJA LJUBAN
+BOROJA RUŽICA
+BOROJEV ARSEN DR LEKAR
+BOROJEV EMILIJAN DR
+BOROJEV JAGODA
+BOROJEV LJUBOMIR
+BOROJEV RADMILA
+BOROJEVIĆ ANA
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BRANKO
+BOROJEVIĆ DRAGAN
+BOROJEVIĆ DRAGOLJUB
+BOROJEVIĆ DUŠAN
+BOROJEVIĆ KRSTA
+BOROJEVIĆ LJILJANA
+BOROJEVIĆ MILAN
+BOROJEVIĆ PAVLE
+BOROJEVIĆ PETRA
+BOROJEVIĆ SLAVKO PROF
+BOROMISA DRAGICA
+BOROMISA JELENA
+BORONJAC DRAGAN
+BORONJAC MILICA
+BORONJAC OLGA
+BORONJAC VERA
+BOROTA ALEKSANDAR
+BOROTA JOVANKA
+BOROTA MILAN
+BOROTA MILORAD
+BOROTA MIRA
+BOROTA RADOSLAV DR LEKAR
+BOROVČANIN LJUBOMIR
+BOROVČANIN MILISAV
+BOROVČANIN NEDELJKO
+BOROVČANIN RADOMIR
+BOROVČANIN SLOBODAN
+BOROVAC ARSO
+BOROVAC BRANISLAV
+BOROVAC KATICA
+BOROVAC MILORAD
+BOROVIČANIN MILORAD
+BOROVIĆ ATILA
+BOROVIĆ JOSIP
+BOROVIĆ JOVAN
+BOROVIĆ KOSTA
+BOROVIĆ MENA
+BOROVIĆ PETAR
+BOROVIĆ RUDOLF
+BOROVIĆ VLADE
+BOROVIĆANIN MIROSLAV
+BOROVICA BOJKA
+BOROVICA IVAN
+BOROVICA IVAN
+BOROVICA JELENA
+BOROVICA MIODRAG
+BOROVNICA BRANKO
+BOROVNICA MARKO
+BOROVNICA MILAN
+BOROVNICA MILEVA
+BOROZAN MILORAD
+BORUŠ IŠTVAN
+BORUŠ IRENA
+BORZAŠKI BRATISLAVA
+BORZAŠKI RADOMIR
+BORZAŠKI STEVAN
+BOSAK IRENA
+BOSAKOV DRAGAN
+BOSANČIĆ BOŠKO
+BOSANČIĆ BOGDAN
+BOSANČIĆ BOGDAN
+BOSANČIĆ JELICA
+BOSANČIĆ MANOJLO
+BOSANČIĆ MILEVA
+BOSANČIĆ MIODRAG
+BOSANČIĆ RADOVAN
+BOSANČIĆ RAJKO
+BOSANČIĆ TRIVA
+BOSANČIĆ VASO
+BOSANČIĆ VLADO
+BOSANČIĆ VUJO
+BOSANAC JOVAN
+BOSANAC LJUBICA
+BOSANAC MARIJA
+BOSANAC NIKOLA
+BOSANAC VERA
+BOSIĆ BOŽANA
+BOSIĆ BRANKO
+BOSIĆ DUŠAN DR
+BOSIĆ JOVAN
+BOSIĆ MIODRAG
+BOSIĆ RADOVAN
+BOSIĆ SLAVKA
+BOSILJKIĆ LAZAR
+BOSILJKIĆ LUKA
+BOSIN SLOBODAN
+BOSIOK DORU
+BOSNAI-BABA LUCIJA
+BOSNAI JANOŠ
+BOSNIĆ ČEDOMIR
+BOSNIĆ ĐURĐINKA
+BOSNIĆ ALEKSANDAR
+BOSNIĆ BOŽIDAR
+BOSNIĆ BOSILJKA
+BOSNIĆ DAVID
+BOSNIĆ DAVID
+BOSNIĆ JOVAN
+BOSNIĆ MARA
+BOSNIĆ MIRKO
+BOSNIĆ MLADEN
+BOSNIĆ NADA
+BOSNIĆ NURIJA
+BOSNIĆ RADOSA
+BOSNIĆ RAJKO
+BOSNIĆ VERA
+BOSNIĆ VLADA
+BOSNIĆ VLADA
+BOSNIĆ ZORAN
+BOTA BRANISLAV
+BOTIČ OLIVERA
+BOTIĆ ALEKSANDAR
+BOTIĆ BOGDAN
+BOTIĆ DANICA
+BOTIĆ DARKO
+BOTIĆ DARKO
+BOTIĆ GAVRA
+BOTIĆ MILAN
+BOTIĆ MILAN
+BOTIĆ MILE
+BOTIĆ MILORAD ADVOKAT
+BOTIĆ MIROSLAVA
+BOTIĆ OLIVERA
+BOTIĆ PROKA
+BOTIĆ RADOSLAVA
+BOTIĆ VERICA
+BOTIĆ VLADIMIR
+BOTIĆ ZORANKA
+BOTKA ANTAL
+BOTKA DAVID
+BOTKA ERŽEBET
+BOTKA VERONA
+BOTKA ZOLTAN
+BOTLIK GEZA
+BOTLIK MARIJA
+BOTOŠKI DRAGOVAN
+BOTOŠKI SAVA
+BOTORIĆ RADOJICA
+BOTZA IŠTVAN
+BOZEJAC ANTAL DIPL PRAVNIK
+BOZEJAC DUŠAN
+BOZEJAC GORDANA
+BOZEJAC MILENKO
+BOZEJAC SMILJKA
+BOZEJAC SVETISLAV
+BOZEJAC VERA
+BOZOKIN STEVICA
+BRČIĆ IGNJAC
+BRČIĆ MIROSLAV
+BRČIĆ NEĐO
+BRČIĆ RADOVAN
+BRČIN ĐORĐE
+BRČIN MILINKA
+BRČIN NIKOLA
+BRČIN RATOMIR
+BRČIN SLAVICA
+BRČIN SVETOZAR
+BRČINOVIĆ PAVLE
+BRČKALOVIĆ LJUBOMIR
+BRAČEVIĆ IVAN
+BRAČEVIĆ MIRJANA
+BRAŠANAC BORISLAV
+BRAŠANAC GAVRILO DIPL ING
+BRAŠANAC ILIJA
+BRAŠANAC MIRJANA
+BRAŠANAC MIROSLAV
+BRAŠKO JOŽEF
+BRAŠNJO GUSTAV
+BRAŠNJO IŠTVAN
+BRAŠNJO IŠTVAN
+BRACANOVIĆ DAMJAN
+BRACANOVIĆ MILUTIN
+BRACIĆ MILAN
+BRADAČ ELIZABETA
+BRADAČ IMRE
+BRADAŠ ŽIVA DIPL ING
+BRADARIĆ NEDELJKO
+BRADIĆ ĐORĐE
+BRADIĆ ĐORĐE
+BRADIĆ BOŽIDAR
+BRADIĆ BOGOLJUB
+BRADIĆ BOGOLJUB
+BRADIĆ BRANKO
+BRADIĆ EVGENIJA
+BRADIĆ GAVRILO
+BRADIĆ JUSTINA
+BRADIĆ MILAN DIPL ING
+BRADIĆ MILAN
+BRADIĆ MILICA
+BRADIĆ MILIVOJE
+BRADIĆ MILJKO
+BRADIĆ SLOBODAN
+BRADIĆ SRETA
+BRADIĆ-TENJI ZORICA
+BRADIĆ TEODORA
+BRADIĆ TOMISLAVA
+BRADIĆ VIDOJE
+BRADIĆ ZORICA
+BRADOŠ SLOBODAN
+BRAHTL MARICA
+BRAJDIĆ IVAN
+BRAJER FRANJA
+BRAJEVIĆ PREDRAG
+BRAJIĆ MILICA
+BRAJIĆ RADOVAN
+BRAJIĆ SLOBODAN
+BRAJKOV MARKO
+BRAJKOVIĆ IVO
+BRAJKOVIĆ MIRJANA
+BRAJOVIĆ MILIVOJE
+BRAJOVIĆ MILOŠ
+BRAJOVIĆ SLAVKA
+BRAJOVIĆ SPASOJE
+BRAJOVIĆ STANKA
+BRAJOVIĆ VELJKO
+BRAKOČEVIĆ JOVAN
+BRAKUS DUŠANKA
+BRAKUS LJILJANA
+BRAKUS MARIJA
+BRAKUS MILAN
+BRAKUS MOMČILO
+BRALOVIĆ RATKO
+BRANČIĆ BORIS DIPL ING
+BRANČIĆ JASNA
+BRANČIĆ MILENA
+BRANČIĆ MILUŠKO
+BRANA PETAR
+BRANILOVIĆ STJEPAN
+BRANKOV ĐORĐE
+BRANKOV ĐORĐE
+BRANKOV ALEKSANDRA
+BRANKOV-BOKA ROZALIJA
+BRANKOV BORIVOJ
+BRANKOV BRANISLAV
+BRANKOV DOBRICA
+BRANKOV DRAGANA
+BRANKOV DRAGAN
+BRANKOV DUŠAN
+BRANKOV EMIL
+BRANKOV ILIJA
+BRANKOV JELICA
+BRANKOV JOVANKA
+BRANKOV KOSTA
+BRANKOV KOSTA
+BRANKOV LJUBICA
+BRANKOV LJUBICA
+BRANKOV LJUBINKO
+BRANKOV MILICA
+BRANKOV MILORAD
+BRANKOV MIRKO
+BRANKOV MITA
+BRANKOV MITA
+BRANKOV MLADEN
+BRANKOV MOMIR
+BRANKOV NADA
+BRANKOV OLIVERA
+BRANKOV RADIVOJ
+BRANKOV RADOVAN
+BRANKOV RADOVAN
+BRANKOV SVETISLAV
+BRANKOV VELJKO
+BRANKOV VLADIMIR
+BRANKOV ZLATINKA
+BRANKOVAN ĐORĐE
+BRANKOVAN VLASTIMIR
+BRANKOVIĆ BOGOLJUB
+BRANKOVIĆ BOJA
+BRANKOVIĆ BRANKO
+BRANKOVIĆ BRANKO
+BRANKOVIĆ DRAGAN
+BRANKOVIĆ DUŠANKA
+BRANKOVIĆ DUŠAN
+BRANKOVIĆ DUŠAN
+BRANKOVIĆ ILIJA
+BRANKOVIĆ-KOVAČEVIĆ RADMILA
+BRANKOVIĆ LJILJANA
+BRANKOVIĆ LJUBICA
+BRANKOVIĆ MILAN
+BRANKOVIĆ MILENA
+BRANKOVIĆ MILORAD
+BRANKOVIĆ MIRKO
+BRANKOVIĆ MLADEN
+BRANKOVIĆ SAVKA
+BRANKOVIĆ SLAVKO
+BRANKOVIĆ SLAVOLJUB
+BRANKOVIĆ SLAVOLJUB
+BRANKOVIĆ SVETLANA
+BRANKOVIĆ TUGOMIR
+BRANKOVIĆ ZINA
+BRANKOVIĆ ZORAN
+BRANOVAČKI ĐORĐE
+BRANOVAČKI ANGELINA
+BRANOVAČKI GAVRILO
+BRANOVAČKI IVANA
+BRANOVAČKI LJUBICA
+BRANOVAČKI OLGA
+BRANOVAČKI SVETISLAV
+BRANOVIĆ BISERKA
+BRANOVIĆ RUŽA
+BRAOVIĆ SANDRA
+BRAOVIĆ VLADIMIR
+BRAT DUŠAN
+BRATIĆ AŠIR
+BRATIĆ DRAGO
+BRATIĆ DUŠAN
+BRATIĆ GORAN
+BRATIĆ LJUBICA
+BRATIĆ LJUBOMIR
+BRATIĆ MUHO
+BRATIĆ NEDELJKO
+BRATIĆ RADOVAN
+BRATIĆ VOJISLAV
+BRATONOŽIĆ MARGITA
+BRBORIĆ LAZAR
+BRBORIĆ SRBISLAV
+BRCANOV ĐURĐINKA
+BRCANOV OLGA
+BRCANOV SIMA
+BRCANOV TIHOMIR
+BRCANSKI NIKOLA
+BRDAR DANE
+BRDAR DRAGO
+BRDAR ILIJA
+BRDAR IVANKA
+BRDAR MILAN
+BRDAR PERO
+BRDAR SLAVIŠA
+BRDAREVIĆ DUŠKO
+BRDARIĆ DRAGOMIR
+BRDARIĆ KOSTA
+BRDARIĆ MILAN
+BRDARIĆ PETAR
+BREŠĆANSKI MARIJA
+BREŠKOVIĆ STANISLAVA
+BREŠKOVSKI DRAGICA
+BREŽAN ILONA
+BREŽAN LEONORA
+BREŽAN MARIJA
+BREBER LJUBICA
+BREBERINA MILAN
+BREBERINA STEVAN
+BREGUN ĐORĐE
+BREGUN ALEKSANDRA
+BREGUN NIKOLA
+BREGUN RADOSLAV DIPL ING
+BREKALO JOSIP
+BREKIĆ ILIJA
+BREKIĆ NIKOLA
+BREKIĆ STEVAN
+BRENECKI ZDRAVKO
+BRENESEL DRAGAN
+BRENESEL GABRIEL
+BRENESEL MIRJANA
+BRENESEL NIKOLA
+BRESTOVAČKI IVAN
+BRESTOVAČKI JASMINA
+BRESTOVAČKI MILKA
+BRESTOVAČKI STEVA
+BRET VERA
+BRETŠNAJDER ANA
+BREZNIK ERNE
+BREZNJAK JANOŠ
+BREZNJAK MARIJA
+BREZOVČEK JOVANKA
+BREZOVAC DRAGICA
+BREZOVAC DUŠAN
+BREZOVAC IVAN
+BREZOVAC IVAN
+BREZOVAC JURAJ
+BREZOVAC KATARINA
+BREZOVAC LJUBINKA
+BREZOVAC MILENA
+BREZOVAC MILOŠ
+BREZOVAC PETAR
+BREZOVAC SAVA
+BREZOVIĆ MIRJANA
+BRIŠEVAC JURE
+BRIKER SMILJANA
+BRINJAK DRAGO
+BRITVEC MARKO
+BRIZA ŽELMIRA
+BRIZA JAN
+BRIZA LUKRECIJA
+BRK SIMO
+BRKANIĆ MARKO
+BRKANIĆ MILENKO
+BRKANIĆ TATJANA
+BRKANLIĆ ŽELJKO
+BRKANLIĆ DUŠAN
+BRKIĆ ĐORĐE
+BRKIĆ ĐORĐE
+BRKIĆ ĐURO
+BRKIĆ ABAZ
+BRKIĆ ALEKSANDAR
+BRKIĆ ALEKSANDAR
+BRKIĆ ANKA
+BRKIĆ ANKICA
+BRKIĆ-BELIĆ DANICA
+BRKIĆ BOGDAN
+BRKIĆ BRANKO
+BRKIĆ DRAGAN
+BRKIĆ DRAGA
+BRKIĆ DRAGO
+BRKIĆ DUŠANKA
+BRKIĆ GOJKO
+BRKIĆ ILIJA
+BRKIĆ IVAN
+BRKIĆ IVICA
+BRKIĆ JELISAVETA
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ LJUBOMIR
+BRKIĆ LUKA
+BRKIĆ MAGDALENA
+BRKIĆ MANDA
+BRKIĆ MARIJA
+BRKIĆ MARIJA
+BRKIĆ MILADIN
+BRKIĆ MILAN
+BRKIĆ MILAN
+BRKIĆ MILAN
+BRKIĆ MIRJANA
+BRKIĆ MITAR
+BRKIĆ NADA
+BRKIĆ NEBOJŠA
+BRKIĆ NIKOLA
+BRKIĆ NIKOLA
+BRKIĆ PETAR
+BRKIĆ PETAR
+BRKIĆ PETRA
+BRKIĆ RADOJKA
+BRKIĆ RADOSLAV
+BRKIĆ RADOSLAV
+BRKIĆ RADOSLAV
+BRKIĆ RATKO
+BRKIĆ RUŽA
+BRKIĆ SILVIJA
+BRKIĆ SLAVKO
+BRKIĆ SNEŽANA
+BRKIĆ SNEŽANA
+BRKIĆ TOMO DIPL ING
+BRKIĆ UROŠ
+BRKIĆ VEZILIJA
+BRKIĆ VLADIMIR
+BRKIĆ VLADIMIR
+BRKIĆ VLADIMIR
+BRKIĆ VOJISLAV
+BRKIĆ ZDRAVKO
+BRKIĆ ZORAN
+BRKLJAČ BRANIMIR
+BRKLJAČ BRANISLAV
+BRKLJAČ DRAGOLJUB
+BRKLJAČ ILIJA
+BRKLJAČ KATARINA
+BRKLJAČ MILANKO
+BRKLJAČ MILAN
+BRKLJAČ NIKOLA
+BRKLJAČ NIKOLA
+BRKLJAČ RUŽICA
+BRKLJAČ SLOBODAN
+BRKLJAČ STEVAN
+BRKLJAČA BRATOLJUB
+BRKLJAČIĆ BOŽENA
+BRKLJAČIĆ VLADIMIR
+BRKO NIKOLA
+BRKOVIĆ ĐORĐE
+BRKOVIĆ ANTUN
+BRKOVIĆ BOSILJKA
+BRKOVIĆ DRAGO
+BRKOVIĆ DUŠAN
+BRKOVIĆ EMILIJA
+BRKOVIĆ JOVANKA
+BRKOVIĆ LJUBOMIR
+BRKOVIĆ MAGDA
+BRKOVIĆ MILAN
+BRKOVIĆ MILICA
+BRKOVIĆ NADA
+BRKOVIĆ NIKOLA
+BRKOVIĆ RADOVAN
+BRKOVIĆ VIODSAVA
+BRKOVIĆ VJEKOSLAV
+BRKOVIĆ ZLATKO
+BRLIĆ DRAGUTIN
+BRLIĆ IVAN
+BRMBOTA JOVAN
+BRMBOTA JOVAN
+BRNJAKOVIĆ MARIJA
+BRNOVIĆ SVETOZAR
+BROŠTEAN VIOREL
+BROĆETA BOGDAN
+BROĆETA MIĆA
+BROĆETA MILORAD
+BROĆETA NEDELJKO
+BROĆETA OBRAD
+BRODRANSKI SVETLANA
+BROJČIN DUŠAN
+BROJČIN SAVA
+BRONZA DRAGAN
+BRONZA RAJKO
+BROZOVIĆ IVAN
+BRSANOVIĆ KRSTA
+BRSTINA VASILIJE
+BRTAN JOSIP
+BRTKA JAN
+BRUŠNJAI JOSIP
+BRUŠNJAK PERO
+BRUJIĆ DUŠAN
+BRUJIĆ JOVAN
+BRUJIĆ MANOJLO
+BRUJIĆ MILAN
+BRUJIĆ MILICA
+BRUJIĆ SLAVKO
+BRUJIĆ VLADIMIR
+BRUK ANDRIJA DR
+BRUKNER BOGDAN
+BRUKNER BOGDAN
+BRUNČEVIĆ HIVZO
+BRUNČEVIĆ REDŽEP
+BRUNDZA CECILIJA
+BRUNDZA VLADIMIR MR
+BRUNER JOSIP
+BRUNET ELEMER
+BRUNET FRANJA
+BRUNET IŠTVAN
+BRUNET ZOLTAN
+BRUNET ZOLTAN
+BRUSIN DUŠKO
+BRUSIN KAJICA
+BRUSIN MILOJKO
+BRUSIN MILOVAN
+BRUSIN RADICA
+BRUSIN SLAVKO
+BRUSNJAI KARLO
+BRUSNJAI LASLO
+BRUSNJAI MARGARITA
+BRZAK ŽIVKA
+BRZAK ŽIVORAD
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐUKA
+BRZAK ALEKSANDAR
+BRZAK ALEKSANDAR
+BRZAK ANĐELKA
+BRZAK BOGDANKA
+BRZAK BORISLAV
+BRZAK BOSA
+BRZAK BRANISLAV
+BRZAK DRAGAN
+BRZAK DRAGAN
+BRZAK DRAGICA
+BRZAK DRAGOMIR
+BRZAK DUŠKO
+BRZAK GOJKO
+BRZAK ILIJA
+BRZAK JADRANKA
+BRZAK JELENA
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK KOSTA
+BRZAK LAZAR
+BRZAK LEPOSAVA
+BRZAK MARIJA
+BRZAK MILA
+BRZAK MILENKO
+BRZAK MILENKO
+BRZAK MILENKO
+BRZAK MILOVAN
+BRZAK MILOVAN
+BRZAK MIRA
+BRZAK MIRA
+BRZAK MIROSLAV
+BRZAK MITAR
+BRZAK PETAR
+BRZAK PREDRAG
+BRZAK RADOSLAV
+BRZAK SAVA
+BRZAK SAVETA
+BRZAK SIMEON
+BRZAK SLAVKO
+BRZAK SLOBODANKA
+BRZAK STEVAN
+BRZAK STEVAN
+BRZAK STEVAN
+BRZAK STOJANKA
+BRZAK SVETLANA
+BRZAK SVETOZAR
+BRZAK TOŠA
+BRZAK TOŠA
+BRZAK TOŠICA
+BRZAK TODOR
+BRZAK VASA
+BRZAK VASA
+BRZAK VASA
+BRZAK VELJKO
+BRZAK VIDA
+BRZAK VIDOSAVA
+BRZAK VIDOSLAV
+BRZAK VLADISLAV
+BRZAK ZORAN
+BRZAKOVIĆ IGOR
+BRZAKOVIĆ NENAD DR
+BRZAKOVIĆ VITOMIR DR LEKAR
+BRZANOVIĆ DRAGAN
+BRZIĆ ŽIVAN
+BRZIĆ ĐORĐE
+BRZIĆ BRANKO
+BRZIĆ FRANJA
+BRZIĆ IVAN
+BRZIĆ JOVAN
+BRZIĆ LAZAR
+BRZIĆ LAZAR
+BRZIĆ MIRJANA
+BRZIĆ PETAR
+BRZIĆ PETAR
+BRZIĆ RADOSLAV
+BRZIĆ STEVAN
+BRZIĆ SVETOZAR
+BRZIĆ TODOR
+BRZIĆ ZLATA
+BRZICA BRANKA
+BRZICA FERDO
+BRZICA IVANKA
+BRZICA MARINKO
+BRZOVAN BEHIJA
+BU IŠTVAN
+BUČA DUŠAN
+BUČA DUŠICA
+BUČA IRINA
+BUČA VASA
+BUČANSKI JOŽEF
+BUČIĆ BORISLAV
+BUČKO AHNETA
+BUČKO JANKO
+BUČKO MARIJA
+BUČO DANIJELA
+BUČU-MARTONOŠI GIZELA
+BUŠ ANA
+BUŠ MAGDALENA
+BUŠ SILVESTER
+BUŠIĆ SREĆKO
+BUŠLJETA BRANKA
+BUŠTREVIĆ MIRJANA
+BUŠTREVIĆ SLOBODANKA
+BUŠTROVIĆ OLGA
+BUĆAN DUŠAN
+BUĆAN DUŠAN
+BUĆAN MILEVA
+BUĆAN SLAVKA
+BUĆANSKI MAĆAŠ
+BUĆIN RADE
+BUĆO ZAGORKA
+BUŽANČIĆ MIRA
+BUŽANIN MILE
+BUĐI ĐULA
+BUĐILAN PETAR
+BUAČA DRAGAN
+BUAČA OLGICA
+BUAČA STEVAN
+BUBALO DRAGAN
+BUBALO DRAGINJA
+BUBALO GORAN
+BUBALO ILIJA
+BUBALO JOVAN
+BUBALO JOVO
+BUBALO MIROSLAV
+BUBALO PETAR
+BUBALO RATOMIR
+BUBALO SIMO
+BUBALO TEODORA
+BUBANJ BRANISLAV
+BUBANJ DANE
+BUBANJ IVANKA
+BUBANJ MILICA
+BUBANJ MILOŠ
+BUBANJ RADE
+BUBANJ RADOJKA
+BUBANJ SRBOLJUB
+BUBANJ VIDOSAVA
+BUBANJA ALEKSANDAR
+BUBANJA BATRIĆ
+BUBANJA DARINKA
+BUBANJA KATICA
+BUBANJA MAŠAN
+BUBANJA RADISAV
+BUBANJA TADIJA
+BUBANJA VOJISLAV
+BUBANJA ZORKA
+BUBIĆ MILAN
+BUBNIĆ VERONA
+BUBNJEVIĆ ĐORĐE
+BUBNJEVIĆ BORE
+BUBNJEVIĆ DARA
+BUBNJEVIĆ DRAGO
+BUBNJEVIĆ GOJKO
+BUBNJEVIĆ JANJA
+BUBNJEVIĆ LJUBOMIR
+BUBNJEVIĆ MARICA
+BUBNJEVIĆ MARINKO
+BUBNJEVIĆ MIRKO
+BUBNJEVIĆ NENAD
+BUBNJEVIĆ OSTOJA
+BUBNJEVIĆ RADA
+BUBNJEVIĆ RADOMIR
+BUBNJEVIĆ RELJA
+BUBNJEVIĆ SRBOLJUB
+BUBNJEVIĆ SRETEN
+BUBNJEVIĆ STOJANKA
+BUBNJEVIĆ VASKRSIJE
+BUBNJEVIĆ VLADIMIR
+BUBNJIĆ ŽELJKO
+BUBONJA BORIS
+BUBONJA DOSTANA
+BUBONJA DUŠAN
+BUBONJA RADOVAN
+BUBREŠKO GORDANA
+BUBULJ MILIĆ
+BUBULJ NADA
+BUBULJ STOJANKA
+BUBULJ STOJA
+BUCALO MILADIN
+BUCALO MIRA
+BUCALO MITAR
+BUCALOVIĆ DUŠAN
+BUCIĆ ANTE
+BUCIĆ MILIVOJ
+BUCULJEVIĆ ALEKSANDAR
+BUCULJEVIĆ ZLATOMIR DR
+BUDŽAKOSKI TOMA
+BUDŽAROV SAVA
+BUDA ADA
+BUDA EVA
+BUDA HAJNALKA
+BUDA JOŽEF
+BUDA TEREZA
+BUDAĆ ZORAN
+BUDAI GORICA
+BUDAI ILONKA
+BUDAI JOŽEF
+BUDAI JOLAN
+BUDAI JOVAN
+BUDAI LAJOŠ
+BUDAI LAJOŠ
+BUDAI ZORA
+BUDAK DRAGAN
+BUDAK IVICA
+BUDAK MILAN
+BUDAK VERA
+BUDAKOV ALEKSANDRA
+BUDAKOV BRANISLAV
+BUDAKOV DRAGAN
+BUDAKOV GORICA
+BUDAKOV IVAN
+BUDAKOV LJILJANA
+BUDAKOV MILAN
+BUDAKOV MILUTIN
+BUDAKOV OLIVERA
+BUDAKOV SLOBODAN
+BUDANOV ANTAL
+BUDANOV DANICA
+BUDANOVIĆ SAVETA
+BUDANOVIĆ STANA
+BUDERKA MARIJA
+BUDIŠA BOŽA
+BUDIŠA BORA
+BUDIŠA MIRKO
+BUDIŠA TIHOMIR
+BUDIŠIĆ DRAGAN
+BUDIŠIN ĐORĐE
+BUDIŠIN IVAN
+BUDIŠIN MILOŠ
+BUDIŠIN MILOŠ
+BUDIŠIN NIKOLA DR
+BUDIŠIN-SAKAČ SONJA DR
+BUDIŠIN VLADIMIR
+BUDIĆ ŽELJKO
+BUDIĆ DANILO
+BUDIĆ DRAGOSLAV
+BUDIĆ DUŠANKA
+BUDIĆ MILAN
+BUDIĆ ZORKA
+BUDIMČIĆ JOVAN
+BUDIMČIĆ LJILJANA
+BUDIMČIĆ MILIVOJ
+BUDIMA BAJRUŠ
+BUDIMAC BUDIMIR
+BUDIMAC ZORAN
+BUDIMIR MARIJA
+BUDIMIR MILAN
+BUDIMIR MILOJKO
+BUDIMIROVIĆ DRAGICA
+BUDIMIROVIĆ NEGOVAN
+BUDIMIROVIĆ UROŠ
+BUDIMKIĆ-KRSTIĆ DRAGANA
+BUDIMLIJA ALEKSANDAR
+BUDIMLIJA DRAGICA
+BUDIMLIJA ILIJA
+BUDIMLIJA MILAN
+BUDIMLIJA MILAN
+BUDIMLIJA RADE
+BUDIMSKI ĐURA
+BUDIMSKI SLAVUJ
+BUDINČEVIĆ GABOR
+BUDINČEVIĆ JULIJANA
+BUDINČEVIĆ MIRKO
+BUDINČEVIĆ NIKOLA
+BUDINSKI KIRIL
+BUDINSKI LJUBA
+BUDINSKI MARIJA
+BUDINSKI VLADIMIR
+BUDISAVLJEVIĆ BRANKO
+BUDISAVLJEVIĆ DUŠAN
+BUDISAVLJEVIĆ KAROLINA
+BUDISAVLJEVIĆ MARIJA
+BUDISAVLJEVIĆ NATALIJA
+BUDISAVLJEVIĆ NEVENKA
+BUDISAVLJEVIĆ RUŽICA
+BUDISAVLJEVIĆ VERICA
+BUDJILAN PETAR
+BUDOŠAN ŽIVKO
+BUDOŠAN ĐORĐE
+BUDOŠAN ALEKSANDAR
+BUDOŠAN-KOVAČ JELENA
+BUDOŠAN MILOŠ
+BUDOŠAN NADA
+BUDOŠAN SAVA
+BUDOŠAN SAVA
+BUDOŠAN STEVAN
+BUDOŠAN TOŠICA
+BUDOŠAN VASA
+BUDOŠAN VASA
+BUDOŠAN VUKOSAVA
+BUDOVALČEV ARSA
+BUDOVALČEV OLGA
+BUDOVALČEV PETAR
+BUDOVALČEV PETAR
+BUDURIN RADOJE
+BUGADŽIJA LAJOŠ
+BUGADŽIJA STEVAN
+BUGARČIĆ PETAR
+BUGARČIĆ RADMILO
+BUGARČIĆ SMILJKA
+BUGARIN-ČONKIĆ RADOJKA
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN BOŠKO
+BUGARIN BORISLAV
+BUGARIN DANICA
+BUGARIN ILIJA
+BUGARIN IVANA
+BUGARIN JEVROSIMA
+BUGARIN LJILJANA
+BUGARIN LJUBOMIR
+BUGARIN MARIJA
+BUGARIN MILOŠ
+BUGARIN MILORAD
+BUGARIN RADISLAV
+BUGARIN RADOSLAV
+BUGARIN SINIŠA
+BUGARIN SPASOJE
+BUGARIN STEVAN
+BUGARIN VELIBOR
+BUGARIN VESNA
+BUGARIN ZORAN
+BUGARIN ZORICA
+BUGARINOVIĆ MARGARETA
+BUGARIU JULIJAN
+BUGARSKI ŽARKO
+BUGARSKI ŽIKA
+BUGARSKI ŽIVAN DIPL ING
+BUGARSKI ĐORĐE
+BUGARSKI ĐORĐE
+BUGARSKI ĐURICA
+BUGARSKI BOJANA
+BUGARSKI BRANKO
+BUGARSKI DIMITRIJE
+BUGARSKI DIMITRIJE
+BUGARSKI DRAGAN
+BUGARSKI DRAGICA
+BUGARSKI DRAGOLJUB DR
+BUGARSKI DRAGOLJUB
+BUGARSKI DRAGOSLAV
+BUGARSKI DRAGOSLAV
+BUGARSKI DRAGOSLAV
+BUGARSKI DUŠAN DR
+BUGARSKI DUŠAN
+BUGARSKI DUŠICA
+BUGARSKI DUŠICA
+BUGARSKI DUŠKO
+BUGARSKI EVICA
+BUGARSKI JOVAN
+BUGARSKI JULKA
+BUGARSKI KATA
+BUGARSKI KRSTA
+BUGARSKI KSENIJA
+BUGARSKI LAZAR
+BUGARSKI LAZAR
+BUGARSKI MILAN
+BUGARSKI MILAN
+BUGARSKI MILENA
+BUGARSKI MILENKO
+BUGARSKI MILETA
+BUGARSKI MILICA
+BUGARSKI MILORAD
+BUGARSKI MIRA
+BUGARSKI MIRJANA
+BUGARSKI MIRJANA
+BUGARSKI MIROSLAVA
+BUGARSKI MIROSLAV
+BUGARSKI NADA
+BUGARSKI NEDELJKO
+BUGARSKI NIKOLA
+BUGARSKI OLIVERA
+BUGARSKI PAJA
+BUGARSKI PAVLE
+BUGARSKI RADOSLAV
+BUGARSKI RASTKO
+BUGARSKI RATOMIR
+BUGARSKI SAVA
+BUGARSKI SAVA
+BUGARSKI SLOBODAN
+BUGARSKI SLOBODAN
+BUGARSKI SLOBODAN
+BUGARSKI SOFIJA
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI SVETLANA
+BUGARSKI TATJANA
+BUGARSKI VOJISLAVA
+BUGARSKI VOJISLAV
+BUGARSKI VOJISLAV
+BUGARSKI ZORA
+BUGELJ IVAN
+BUHA BRANKA
+BUHA RADIVOJE
+BUHA VUKAŠIN
+BUHMILER AGNEŠ
+BUHMILER ATILA
+BUHMILER EVA
+BUHMILER JOSIP
+BUHMILER JOSIP
+BUHMILER KARLO
+BUIŠA MILINKO
+BUILA ANA
+BUILA IRINEJ
+BUILA LJUBICA
+BUILA MAKSIMILIJAN
+BUILA MIROSLAV
+BUILA SLAVICA
+BUILA SLAVOMIR
+BUJAK EMIL
+BUJAK MATILDA
+BUJAK SAVA
+BUJANDRIĆ ANĐELKA
+BUJANDRIĆ JOVAN
+BUJANDRIĆ LJUBICA
+BUJANDRIĆ MARIJA
+BUJANDRIĆ MILIVOJ
+BUJANDRIĆ MITAR
+BUJANDRIĆ NIKOLA
+BUJANDRIĆ PAVLE
+BUJANDRIĆ PETAR
+BUJANDRIĆ SVETOZAR
+BUJANDRIĆ VLADIMIR
+BUJAS MILENKO
+BUJAS VENČESLAV
+BUJDOŠA STEVAN
+BUJDOŠIK BOHOMIL
+BUJDOŠIK KLARA
+BUJDOŠIK MIROSLAV
+BUJDOŠO IŠTVAN
+BUJIŠIĆ ŽIVKO
+BUJIĆ BORIVOJE
+BUJLA ETELKA
+BUJLA JASMINA
+BUJNOVIĆ ĐORĐE
+BUJNOVIĆ MILINKO
+BUKALOV ZORA
+BUKARA DUŠANKA
+BUKARICA DANICA
+BUKARICA JOVAN
+BUKATKA ANDREJ
+BUKATKA RADOSLAV
+BUKATKO VLADIMIR
+BUKATKOV IVAN
+BUKIĆ JAKOV
+BUKILIĆ DRAGA
+BUKILIĆ DRAGICA
+BUKIN NIKOLA DIPL ING
+BUKINAC ĐORĐE
+BUKINAC BILJANA
+BUKINAC BOGUMILA
+BUKINAC DINA
+BUKINAC GLIGORIJE
+BUKINAC IVAN
+BUKINAC JULKA
+BUKINAC LAZAR
+BUKINAC MILADIN
+BUKINAC MILAN
+BUKINAC MILICA
+BUKINAC MILOSAVA
+BUKINAC MIRKO
+BUKINAC MIROSLAV
+BUKINAC RUŽICA
+BUKINAC SLAVKO
+BUKINAC STANKA
+BUKINAC STEVAN
+BUKINAC UROŠ
+BUKOVČANIN ACA
+BUKOVAČKI MIODRAG
+BUKOVAČKI PERA
+BUKOVAČKI SVETOZAR
+BUKOVAC ANKICA
+BUKOVAC ATILA
+BUKOVAC STEVAN
+BUKOVAC VLADO
+BUKOVALA DESANKA
+BUKOVIČANIN RELJA
+BUKOVIĆ ANDRAŠ
+BUKOVICA DIMITRIJE
+BUKOVICA RANKO
+BUKTA NADA
+BUKTA ZVONKO
+BUKUMIROVIĆ MILOMIR
+BUKUMIROVIĆ MILORAD DIPL ING
+BUKURECKI BRANISLAV
+BUKURECKI SINIŠA
+BUKURIĆ TATJANA
+BUKUROV ŽARKO
+BUKUROV ŽIVAN
+BUKUROV ŽIVAN
+BUKUROV BOŠKO
+BUKUROV BRANISLAV DR PROF
+BUKUROV KSENIJA
+BUKVA VELIMIR
+BUKVIĆ ŽELJKA
+BUKVIĆ ALEKSANDAR
+BUKVIĆ BRANKO
+BUKVIĆ BUDE
+BUKVIĆ DANE
+BUKVIĆ DANILO
+BUKVIĆ DANILO
+BUKVIĆ DRAGAN
+BUKVIĆ DUŠAN
+BUKVIĆ ILIJA
+BUKVIĆ ILINKA
+BUKVIĆ JANKO
+BUKVIĆ JELISAVETA
+BUKVIĆ JOVAN
+BUKVIĆ KOVILJKA
+BUKVIĆ LJUBOMIR
+BUKVIĆ MARIJA
+BUKVIĆ MARINKO
+BUKVIĆ MILENKO
+BUKVIĆ MILKA
+BUKVIĆ MILOŠ
+BUKVIĆ MILOŠ
+BUKVIĆ MILOŠ
+BUKVIĆ MILORAD
+BUKVIĆ MIROSLAV
+BUKVIĆ MLADEN
+BUKVIĆ NOVICA
+BUKVIĆ RADOVAN
+BUKVIĆ SLAVICA
+BUKVIĆ SOFIJA
+BUKVIĆ STEVAN
+BUKVIĆ SVETOZAR
+BUKVIĆ TOMISLAV
+BUKVIĆ VELIMIR
+BUKVIĆ VLADO
+BULAIĆ RELJA
+BULAJIĆ ĐURO
+BULAJIĆ DANICA
+BULAJIĆ MIODRAG
+BULAJIĆ NATALIJA
+BULAJIĆ NEDELJKO
+BULAJIĆ VLADIMIR
+BULAKIĆ VUKAŠIN
+BULATOVIĆ ALEKSANDAR
+BULATOVIĆ BRANISLAV
+BULATOVIĆ DIMITRIJE
+BULATOVIĆ DRAGAN
+BULATOVIĆ DRAGAN
+BULATOVIĆ DUŠANKA
+BULATOVIĆ DUŠAN
+BULATOVIĆ GRADIMIR
+BULATOVIĆ ILIJA
+BULATOVIĆ MILADIN
+BULATOVIĆ MILIJANA
+BULATOVIĆ MILINKO
+BULATOVIĆ MILUTIN
+BULATOVIĆ MOMIR
+BULATOVIĆ NIKOLA
+BULATOVIĆ NIKOLA
+BULATOVIĆ NOVAK
+BULATOVIĆ PAVLE
+BULATOVIĆ PERO
+BULATOVIĆ PREDRAG
+BULATOVIĆ RADMILO
+BULATOVIĆ RADONJA
+BULATOVIĆ SAVA
+BULATOVIĆ SLAĐANA
+BULATOVIĆ SPASA
+BULATOVIĆ SVETOZAR
+BULATOVIĆ VOJIN
+BULATOVIĆ VOJISLAV
+BULATOVIĆ ZLATIJA
+BULATOVIĆ ZORAN
+BULETINAC MILOVAN
+BULEVSKA VERA
+BULIĆ ŠUĆO
+BULIĆ ADILA
+BULIĆ ANTE
+BULIĆ ARIF
+BULIĆ BORIS
+BULIĆ DRAGAN
+BULIĆ DRAGOLJUB
+BULIĆ DUŠAN
+BULIĆ MARA
+BULIĆ MARIJA
+BULIĆ MARINA
+BULIĆ OZREN
+BULIĆ PERSA
+BULIĆ PETAR
+BULIĆ PREDRAG
+BULIĆ SMILJA
+BULIĆ STEVAN
+BULIĆ TOMISLAV
+BULIK-ILEANA DORINA
+BULJ ĐURA
+BULJ BOSILJKA
+BULJ MILAN
+BULJČIK EUGEN
+BULJČIK JOAKIM
+BULJČIK MIHAJLO
+BULJČIK NIKOLA
+BULJČIK PAULINA
+BULJAK RATKO
+BULJAN DRAGUTIN DIPL ING
+BULJAN PETAR
+BULJAN SLAVICA
+BULJIĆ ILIJA
+BULJIĆ JELENA
+BULJIĆ JOVAN
+BULJIĆ LJUBICA
+BULJIĆ MILAN
+BULJIĆ MILE
+BULJIĆ NOVAK
+BULJIĆ PAVO
+BULJIĆ RADOVAN
+BULJIĆ SEKULA
+BULJIĆ SNEŽANA
+BULJIĆ STEVA
+BULJIĆ VASO
+BULJIN BRANKO
+BULJIN SLAVKO
+BULJIN TOMISLAV
+BULJOVČIĆ STIPAN
+BULJUGIĆ RADOJE
+BULOVAN BRANISLAV
+BULOVIĆ IRINEJ
+BULUM PETAR
+BULUT ANĐELKO
+BULUT NOVICA
+BUMB ANTON
+BUMBAROSKI RADA
+BUMBIĆ MILADIN DR
+BUMBIĆ RADMILA
+BUMBIĆ RAJKO
+BUMBIĆ VELJKO
+BUMBIĆ VELJKO
+BUNČIĆ ĐORĐE
+BUNČIĆ ALEKSANDAR
+BUNČIĆ ALEKSANDAR
+BUNČIĆ DRAGAN
+BUNČIĆ MARIJANA
+BUNČIĆ MILAN
+BUNAJ MUHAMED
+BUNDALESKI MILOŠ
+BUNDALO BRANKO
+BUNDALO NEBOJŠA
+BUNDALO NIKOLA
+BUNDALO SLAVKO
+BUNDALO SLOBODAN
+BUNDALO SLOBODAN
+BUNDIĆ ANTUN
+BUNETA ALEKSANDAR
+BUNETA MILAN
+BUNETA SNEŽANA
+BUNETA VUKOSAVA
+BUNIĆ DRAGAN
+BUNIĆ MILAN
+BUNJAC VASO
+BUNJAC VOJISLAV
+BUNJEVČEV ĐORĐE
+BUNJEVČEV ALEKSANDAR
+BUNJEVČEV SRĐAN
+BUNJEVAČKI ŽIVOJIN
+BUNJEVAČKI BRANKO
+BUNJEVAČKI DRAGINJA
+BUNJEVAČKI JOVANKA
+BUNJEVAČKI LJUBICA
+BUNJEVAČKI MILENA
+BUNJEVAČKI VOJISLAV
+BUNJIK ŠANDOR
+BUNJIK DRAGICA
+BUNJIK IVAN
+BUNJIK JOSIP
+BUNJIK KAROLJ
+BUNJIK ZOLTAN
+BUNJIK ZOLTAN
+BUNOVIĆ DRAGUTIN
+BUNOVIĆ LAZAR
+BUNT MIJO
+BURČER TOMISLAV
+BURŠIĆ TINKA
+BURAI ALEKSANDAR
+BURAI ANDRAŠ
+BURAI KAROLJ
+BURAI KATICA
+BURAI PETAR
+BURAJI JOSIP
+BURANJ BELA DR LEKAR
+BURANJ ENDRE
+BURANJ MARTA
+BURANJ NANDOR
+BURANJ SIDONIJA
+BURANJI MARIJA
+BURANJI NANDOR
+BURAZOR DRAGOJA
+BURAZOR ZDRAVKO
+BURBAH GERHARD
+BURBAN FILIP
+BURDA MELINDA
+BURDA STANISLAV
+BUREVIĆ MILIĆ
+BURGIĆ DRAGOJE
+BURGIĆ JOVAN
+BURGIĆ PETAR
+BURGIJAŠEV VESELIN
+BURIĆ ĐOKO DIPL ING
+BURIĆ DIMITRIJE
+BURIĆ DUŠAN DR
+BURIĆ DUŠANKA
+BURIĆ FRANJA
+BURIĆ GORDANA
+BURIĆ KATICA
+BURIĆ KOSTA
+BURIĆ LEONORA
+BURIĆ MILIVOJE
+BURIĆ NADA
+BURJAN ĐORĐE
+BURJANOVSKI STOJAN
+BURKA ELEONORA DR
+BURKA EMILIJA
+BURKA ERŽEBET
+BURKA JOVAN
+BURKA MIROSLAV
+BURKA PAVLE
+BURKA PETAR
+BURKA SOFIJA
+BURKA STEVAN
+BURKA STEVAN
+BURKERT EDVIN
+BURKIN ŽIVAN
+BURKIN ĐOKA
+BURLAK NATALIJA
+BURMAJA NIKOLA
+BURMUDŽIJA BRANKO
+BURMUDŽIJA MILAN
+BURMUDŽIJA NIKOLA
+BURNAĆ FELIKS
+BURNAĆ JELISAVETA
+BURNAĆ STEVAN
+BURNAĆ VLADIMIR
+BURNOV IVANA
+BURNOV IVAN
+BURNOV VESELINKA
+BUROVAC NADA
+BURSAĆ DARINKA
+BURSAĆ DRAGOSLAVA DIPL PRAVNIK
+BURSAĆ JOVAN
+BURSAĆ LJUBOMIR
+BURSAĆ MILANKA
+BURSAĆ MILAN
+BURSAĆ MILICA
+BURSAĆ MILORAD
+BURSAĆ MIRKO
+BURSAĆ NIKOLA
+BURSAĆ PERA
+BURSAĆ PERSA
+BURSAĆ SLOBODAN
+BURSAĆ SLOBODAN
+BURSAĆ VJEKOSLAVA
+BURSAĆ VLADO DIPL PRAVNIK
+BURSIĆ STEVAN
+BURSIĆ VLADIMIR
+BURUŠ ALEKSANDRA
+BURUŠ BOŠKO
+BURUMDŽIJA RADE
+BURZAN MIRJANA
+BURZELIĆ MILKA
+BURZELIĆ ZLATA
+BUSARČEVIĆ SLAVICA
+BUSARČEVIĆ STEVAN
+BUSIJA LJUBINKA
+BUSIJA MILAN
+BUSOV ALEKSIJE DIPL ING
+BUSOV IGOR
+BUSULADŽIĆ MUSTAFA
+BUTA LAZAR
+BUTA VOJISLAV DR
+BUTAŠ FERENC
+BUTER KSENIJA
+BUTERER IŠTVAN
+BUTERER JULIJA
+BUTERIN DEŠA
+BUTOR ALEKSANDAR
+BUTOR ENDRE
+BUTOR MIHAJLO
+BUTORAC JOSIP
+BUTORAC MARIJA
+BUTORAC ZORAN
+BUTULIJA BRANISLAV
+BUTUROVIĆ RATKO
+BUTUROVIĆ SVETOZAR
+BUZA IRENA
+BUZA KORNELIU
+BUZA MIHALJ
+BUZAŠ ŠANDOR
+BUZAŠ JOSIP
+BUZAŠ JOSIP
+BUZAŠ LAJOŠ
+BUZAŠ PAVAO
+BUZAŠ PAVLE
+BUZAŠI JOSIP
+BUZAŠI MIHAJLO
+BUZADŽIĆ LJILJANA
+BUZADŽIĆ MIRJANA
+BUZADŽIJA NENAD
+BUZADŽIJA NOVAK
+BUZALJKO JUSUF DIPL ING
+BUZANČIĆ JOSIP
+BUZANČIĆ NADEŽDA
+BUZANSKI MIŠA
+BUZAREVIĆ BRANKO
+BUZAREVIĆ RADOJKA
+BUZAREVIĆ RUŽA
+BUZAROV ŽIVAN
+BUZAROV JOVAN
+BUZAROV ZORA
+BUZARSKI ĐORĐE
+BUZGO JANOŠ
+BUZOGANJ MARIJA
+CACKO MARIJA
+CAJIĆ MILOŠ
+CAJNER JELENA
+CAJNER LJUBICA
+CAJNER STEVAN
+CAJNER STEVA
+CAKIĆ DUŠANKA
+CAKIĆ GORDANA
+CAKIĆ JELENKO
+CAKIĆ MIROSLAV
+CAKIĆ PETAR
+CAKIĆ STEVAN
+CANDIR FRANJA
+CANIĆ LJILJANA
+CANIĆ VELIMIR
+CAP ĐURA
+CAP BOŠKO
+CAP JOAKIM
+CAP JOVAN
+CAP NENAD
+CAP NENAD
+CAP RADOJKA
+CAP TAMARA
+CAPAR-JANKOVIĆ VALERIJA
+CAPAR JANOŠ
+CAPAR JOVAN
+CAPAR MARIJA
+CAPAR MARIJA
+CAPIK JOSIP
+CAPIK LJUDEVIT
+CAR MARIJA
+CARAN BOŠKO
+CARAN GEORGE
+CARAN PERSA
+CARAN PETAR
+CARANOVIĆ STANOJE
+CAREVIĆ ŽIVAN
+CAREVIĆ ŽIVKA
+CAREVIĆ ĐORĐE
+CAREVIĆ DUŠAN
+CAREVIĆ ESTER
+CAREVIĆ KATICA
+CAREVIĆ MIHAJLO
+CAREVIĆ MILENA
+CAREVIĆ MILE
+CAREVIĆ NADA
+CAREVIĆ PETAR
+CAREVIĆ SAVA
+CAREVIĆ SLAVKO
+CAREVIĆ SLAVKO
+CAREVIĆ STEVAN
+CAREVIĆ SVETOZAR
+CARIČIĆ SLAVKO
+CARIĆ ANDRIJA
+CARIĆ BRANKO
+CARIĆ GOJKO
+CARIĆ LAZAR
+CARIĆ MARIJA
+CARIĆ MIRJANA
+CARIĆ SLAVKO DR PROF
+CARIĆ SLOBODAN DR
+CARIĆEVIĆ MILENKO
+CARO GORAN
+CATIĆ LAZAR
+CAVNIĆ MARTA
+CAVNIĆ SVETLANA
+CAZIN DRAGAN
+CE PAVLE
+CECEL MARIJA
+CEGLEDI ĐURO
+CEHOLA FERENC
+CEKIĆ BORISLAV
+CEKIĆ BORIVOJE
+CEKIĆ BORKO
+CEKIĆ JULKA
+CEKIĆ PETAR
+CEKIĆ RADMILA
+CEKUŠ EVA
+CELIĆ BRANKO
+CELIN MILAN
+CELIN MILAN
+CENAJ TAHIR
+CENDER ANGELINA
+CENIĆ MILOVAN
+CEP STEVAN
+CEPF STEVAN
+CERGOL VIDOSAVA
+CERIĆ DANICA
+CERIĆ MEHMED
+CERNA RUDOLF
+CEROVAC ZORKA
+CEROVIĆ BATRIĆ
+CEROVIĆ BOGDAN
+CEROVIĆ BOJANA
+CEROVIĆ DARINKA
+CEROVIĆ IKONIJA
+CEROVIĆ LJUBIVOJE
+CEROVIĆ MIŠO
+CEROVIĆ NENAD
+CEROVIĆ NOVAK
+CEROVIĆ PETAR
+CEROVIĆ SLOBODAN
+CEROVIĆ SRETEN
+CEROVIĆ TOMISLAV
+CEROVIĆ UROŠ
+CEROVSKI DANIJEL
+CESNAK JANKO
+CESNAK PAVLE
+CESNAK ZLATKO
+CETENJI JOVAN
+CETINA JOVAN
+CETINA LJILJANA
+CEVC FRANJA
+CEVC SONJA
+CIBRIĆ TODOR
+CIBULA ĐURA
+CIBULA BELA
+CIBULA JANKO
+CIBULA JOVAN
+CIBULA JOVAN
+CIBULA MARJENKA
+CIBULA MIŠA
+CIBULA PERA
+CICERI FERENC
+CICERI KAROLJ
+CICERI LASLO
+CICERI MATILDA
+CICERI PERA
+CICERI VINKO
+CICKA ŠĆEFAN
+CICKA JAN
+CICMIL BOŽIDAR
+CICMIL BRANKO
+CICMIL KRSTO
+CICMIL MARIJA
+CICMIL MARKO
+CICMIL MILAN
+CICMIL STOJAN
+CICMIL TATJANA
+CICMIL ZORAN
+CICMILOVIĆ DRAGAN
+CICMILOVIĆ ZORKA
+CICO DUŠAN
+CICVARIN LJUBOMIR
+CIFRIĆ GALIB
+CIGAN ANTUN
+CIGAN IVAN
+CIGANJ JOSIP
+CIGANOVIĆ BRANKO
+CIGANOVIĆ DANE
+CIGANOVIĆ DUŠAN
+CIGANOVIĆ MILORAD
+CIGANOVIĆ OSTOJA
+CIGANOVIĆ RAJKO
+CIGANOVIĆ STEVO
+CIGIĆ IVAN
+CIGLER SNEŽANA
+CIGLJECKI FRANJA
+CIGLJECKI VERA
+CIKORA ŽUŽANA
+CIKOTA ŽELJKO
+CIKOTA OLGA
+CIKOTA SLAVKO
+CIKUŠA JOVAN
+CIKUŠA ZORAN
+CIMBAL ALEKSANDAR
+CIMBAL ALEKSANDAR
+CIMBAL TIBOR
+CIMBAL VERICA
+CIMBALJEVIĆ ZLATANA
+CIMERMAN LADISLAV
+CIMERMAN SMILJA
+CINCOVIĆ ŽIVKA
+CINDER VIDA
+CINDRIĆ ĐORĐE
+CINDRIĆ ERŽEBET
+CINDRIĆ PETAR DR
+CINGARA ALEKSANDAR
+CINGELI MILENA
+CINGI KARLO
+CINKLER JELISAVETA DIPL ING
+CINKLER JULIJE
+CINKLER KALMAN DIPL ING
+CINKLER KALMAN DIPL ING
+CINKLER KALMAN
+CINKLER MAGDOLNA
+CINKOCKI ĐORĐE
+CINKOCKI VOJISLAV
+CIPRUŠ ALEKSANDRA
+CIRBUS MARIJA
+CIRGER DUŠANKA
+CIROK ŠANDOR
+CITKOVIĆ IVKA
+CITKOVIĆ SLOBODAN
+CIVRIĆ MILKA
+CMILJANOVIĆ DRAGIŠA
+COCEK ŠTEFANIJA
+COCEK IMRE
+COCEK JOSIP
+COCEK STEVAN
+COCIN MIRA
+COCO VAHDETA
+COLIĆ BOŽIDAR
+COLIĆ BOGOSAV
+COLIĆ FRANJA
+COLIĆ JOSIP
+COLIĆ KATICA
+COLIĆ LADISLAV
+COLIĆ SVETLANA
+CONIĆ DRAGINJA
+CONIĆ JANKO MR ING
+CONIĆ MIODRAG
+COPKOV ŽELJKO
+CREPIĆ LADISLAV
+CREPULIĆ VIDOSAVA
+CREPULJA TODOR
+CREVAR BOGDAN
+CREVAR MILUTIN DIPL ING
+CREVAR SIMA
+CREVAR SLAVKO
+CRKVENJAKOV DANICA
+CRKVENJAKOV DUŠANKA
+CRKVENJAKOV SULTANIJA
+CRNČEVIĆ DARINKA
+CRNČEVIĆ MIRKO
+CRNČEVIĆ MIRKO
+CRNČEVIĆ NEDELJKA
+CRNČEVIĆ SLAVKO
+CRNČEVIĆ VERA
+CRNČEVIĆ VLADO
+CRNADAK VLATKO
+CRNI VERICA
+CRNI ZORICA
+CRNIĆ BRANKA
+CRNIĆ DRAGAN
+CRNIĆ GORAN
+CRNIĆ MARKO
+CRNIĆ MILAN
+CRNIĆ MILUTIN
+CRNIĆ NIKOLA
+CRNIĆ OSTOJA
+CRNIĆ RADOMIR
+CRNIĆ SOFIJA
+CRNIĆ UGLJEŠA
+CRNIĆ VASA
+CRNIĆ VERA
+CRNJAC MILENA
+CRNJAK ŽIVANKA
+CRNJAKOV DIMITRIJE
+CRNJANIN BRANISLAVA
+CRNJANIN ZAGORKA
+CRNJANSKI-ČENGERI KRISTINA
+CRNJANSKI ŽARKO
+CRNJANSKI ĐOKA
+CRNJANSKI BUDIMKA
+CRNJANSKI IVAN
+CRNJANSKI JELENA
+CRNJANSKI KATICA
+CRNJANSKI KUZMAN
+CRNJANSKI LAZAR
+CRNJANSKI RADIVOJ
+CRNJANSKI SANJA
+CRNJANSKI STEVAN
+CRNJANSKI VLADIMIR
+CRNJANSKI ZORAN
+CRNJANSKI ZORAN
+CRNKOVIĆ NIKOLA
+CRNKOVIĆ-SAVIĆ LJILJANA
+CRNKOVIĆ ZLATA
+CRNOBARAC DUŠAN
+CRNOBARAC JOVAN
+CRNOBRNJA MILAN
+CRNOBRNJA MIRJANA
+CRNOBRNJA PETAR
+CRNOGLAVAC MIHAJLO
+CRNOGLAVAC RADOSLAV
+CRNOGORČEVIĆ JELICA
+CRNOGORAC ĐOKO
+CRNOGORAC BORIŠA
+CRNOGORAC BOSILJKA
+CRNOGORAC DRAGAN
+CRNOGORAC DRAGOLJUB
+CRNOGORAC DUŠAN
+CRNOGORAC MILAN
+CRNOGORAC MILKA
+CRNOGORAC MILOSAV
+CRNOGORAC MIROSLAV
+CRNOGORAC PAVLE
+CRNOGORAC SLOBODAN
+CRNOGORAC SVETLANA
+CRNOGORAC VELIMIR DR
+CRNOGORAC ZDRAVKO
+CRNOGORAC ZORICA
+CRNOJA ANTE
+CRNOJA SLAVICA
+CRNOJAČKI BOGDAN
+CRNOJAČKI DANICA DR
+CRNOJAČKI DANILO
+CRNOJAČKI DRAGAN
+CRNOJAČKI DRAGOMIR
+CRNOJAČKI GORDANA
+CRNOJAČKI JOVAN
+CRNOJAČKI KATICA
+CRNOJAČKI MILENA DR
+CRNOJAČKI MILOŠ
+CRNOJAČKI MLADEN
+CRNOJAČKI OBRAD
+CRNOJAČKI OBRAD
+CRNOJAČKI RADMILA
+CRNOJAČKI SOFIJA
+CRNOJAČKI VLADIMIR
+CRNOJAČKI ZORICA
+CRNOKRAK JOVAN
+CRNOKRAK MILOŠ
+CRNOKRAK STEVAN
+CRNOMARKOVIĆ BOGDAN
+CRNOMARKOVIĆ DUŠAN
+CRNOMARKOVIĆ DUŠAN
+CRNOMARKOVIĆ GOJKO
+CRNOMARKOVIĆ LUKA
+CRNOMARKOVIĆ NIKOLA
+CRNOMARKOVIĆ PETAR
+CRNOMARKOVIĆ RANKO
+CRNOMARKOVIĆ STOJAN
+CRNOMARKOVIĆ VERICA
+CRNOMUT MIHAJLO
+CRVENI ŽARKO
+CRVENI ANA
+CRVENI BISERKA
+CRVENI DRAGAN
+CRVENI MARKO
+CRVENI MILAN
+CRVENI MILENKO
+CRVENI MIOMIR
+CRVENI SIMA
+CRVENI STEVAN
+CRVENI STEVAN
+CRVENKO JANKO
+CRVENKO MILAN
+CRVENKO RADOMIR
+CRVENKOV BORISLAV
+CRVENKOV MILOSAVA
+CRVENKOV PETAR
+CRVENKOVIĆ ĐORĐE
+CRVENKOVIĆ ĐURĐICA
+CRVENKOVIĆ PETAR
+CRVENKOVIĆ RADENKO
+CRVENKOVIĆ SINIŠA DR
+CRVENKOVIĆ VITOMIR
+CUCAK MIRJANA
+CUCAK RAHIM
+CUCIĆ ALEKSANDAR
+CUCIĆ BORISLAV
+CUCIĆ GINA
+CUCIĆ JELKA
+CUCIĆ LJILJANA
+CUCIĆ STANA
+CUCIĆ STANOJLO
+CUCIĆ VERA
+CUCIĆ VESNA
+CUCIĆ VLADIMIR
+CUCOVIĆ RAFET
+CUGLI JOVAN
+CUKIĆ RADA
+CUKIĆ RADOJICA
+CUKIĆ SVETOZAR
+CUNJAK MILUTIN
+CUPAĆ SVETOMIR DIPL PRAVNIK
+CUPARIĆ TOMA
+CURAKOVIĆ MILIVOJE
+CVEJANOV JELENA
+CVEJANOV NEBOJŠA
+CVEJANOV PREDRAG
+CVEJANOV VELIBOR
+CVEJANOVIĆ KSENIJA
+CVEJANOVIĆ LAZAR
+CVEJANOVIĆ NADA
+CVEJANOVIĆ NIKOLA
+CVEJANOVIĆ SPOMENKA
+CVEJANOVIĆ VIDOSAVA
+CVEJANOVIĆ VOJISLAV
+CVEJANOVIĆ ZORICA
+CVEJIĆ ČEDOMIR
+CVEJIĆ ŽARKO
+CVEJIĆ ŽIVOJIN
+CVEJIĆ ĐORĐE DR
+CVEJIĆ ĐURĐINKA
+CVEJIĆ ALEKSANDAR DR
+CVEJIĆ ALEKSANDAR
+CVEJIĆ ALEKSANDAR
+CVEJIĆ BOŽIDAR
+CVEJIĆ BORIVOJ
+CVEJIĆ DRAGAN
+CVEJIĆ DRAGOSLAV
+CVEJIĆ DRAGUTIN
+CVEJIĆ IGNJAT
+CVEJIĆ IVAN
+CVEJIĆ JELENA
+CVEJIĆ KATICA
+CVEJIĆ LAZAR
+CVEJIĆ MILAN
+CVEJIĆ MILAN
+CVEJIĆ MILISAV
+CVEJIĆ MILOŠ
+CVEJIĆ MIODRAG
+CVEJIĆ MIRJANA
+CVEJIĆ NADEŽDA
+CVEJIĆ NEDELJKA
+CVEJIĆ NIKOLA DIPL ING
+CVEJIĆ NIKOLA
+CVEJIĆ OLGA
+CVEJIĆ PAVLE
+CVEJIĆ RADOSLAV
+CVEJIĆ RADOVAN
+CVEJIĆ RUŽICA
+CVEJIĆ SLAVOLJUB
+CVEJIĆ STEVAN
+CVEJIĆ STEVAN
+CVEJIĆ VLADAN
+CVEJIĆ ZAGORKA
+CVEJIN BOŽA
+CVEJIN BOJANA
+CVEJIN DUŠAN DIPL ING
+CVEJIN MARIJA
+CVEJIN MILAN
+CVEJIN MILOŠ
+CVEJIN MIRJANA
+CVEJIN NOVAK
+CVEJIN SLOBODAN
+CVEJIN TRIVA
+CVEKIĆ MILETA
+CVEKIĆ VOJIN
+CVEKIĆ ZLATICA
+CVERDELJ JANKO
+CVERDELJ RUŽA
+CVERNJAK JENE
+CVETANOVIĆ ANITA
+CVETANOVIĆ DRAGOSLAV
+CVETANOVIĆ JELENA
+CVETANOVIĆ JERMINA DR LEKAR
+CVETANOVIĆ MAGDOLNA
+CVETANOVIĆ RADICA
+CVETANOVIĆ STOJADIN
+CVETANOVIĆ STOJANKA
+CVETANOVIĆ VELJA
+CVETANOVIĆ ZORAN
+CVETANOVIĆ ZORAN
+CVETANOVIĆ ZORAN
+CVETANOVSKI MANOJLO
+CVETANOVSKI MILE
+CVETIČANIN LJUBICA
+CVETIČANIN MILKA
+CVETIČANIN VESNA
+CVETIČANIN ZORAN
+CVETIĆ BOŠKO
+CVETIĆ DRAGOMIR
+CVETIĆ LAZAR
+CVETIĆ LAZO
+CVETIĆ LJUBICA
+CVETIĆ MARIJA
+CVETIĆ PETAR
+CVETIĆ SLAVKO
+CVETIĆ STANKO
+CVETIĆANIN BOŠKO
+CVETIĆANIN BRANKO
+CVETIĆANIN DANE
+CVETIĆANIN DANICA
+CVETIĆANIN DRAGOMIR
+CVETIĆANIN ILIJA
+CVETIĆANIN IRENA
+CVETIĆANIN MILOŠ
+CVETIĆANIN MILORAD
+CVETIĆANIN MIROSLAV
+CVETIĆANIN SNEŽANA
+CVETIĆANIN ZORAN
+CVETINIĆ MARKO
+CVETINIĆ MATIJA
+CVETINJANIN TOMISLAV
+CVETINOV SAVA
+CVETINOVIĆ ANKA
+CVETINOVIĆ BRANA
+CVETINOVIĆ BRANKO
+CVETINOVIĆ DIMITRIJE
+CVETINOVIĆ ILIJA
+CVETINOVIĆ IVANKO
+CVETINOVIĆ MILAN
+CVETINOVIĆ SIMO
+CVETINOVIĆ VERA
+CVETINOVIĆ ZORA
+CVETKOV JOVAN
+CVETKOV MILAN DIPL ING
+CVETKOV RADOJE
+CVETKOVIĆ ČEDOMIR
+CVETKOVIĆ ŽIVOJIN
+CVETKOVIĆ ĐORĐE
+CVETKOVIĆ ĐORĐE
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ANKA
+CVETKOVIĆ BOJANA
+CVETKOVIĆ BORA
+CVETKOVIĆ BORISLAV
+CVETKOVIĆ BORISLAV
+CVETKOVIĆ BRANISLAV
+CVETKOVIĆ BRANKO
+CVETKOVIĆ BRANKO
+CVETKOVIĆ BUDIMIR
+CVETKOVIĆ DARINKA
+CVETKOVIĆ DESIMIR
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGIŠA
+CVETKOVIĆ DRAGOLJUB
+CVETKOVIĆ DRAGOMIR MR
+CVETKOVIĆ DRAGOMIR
+CVETKOVIĆ DUŠAN
+CVETKOVIĆ DUŠAN
+CVETKOVIĆ-GLADIĆ SMILJA
+CVETKOVIĆ GROZDA
+CVETKOVIĆ ILIJA
+CVETKOVIĆ IVANKA
+CVETKOVIĆ JELENA
+CVETKOVIĆ JELENA
+CVETKOVIĆ JELKA
+CVETKOVIĆ JOVAN
+CVETKOVIĆ JOVAN
+CVETKOVIĆ JOVAN
+CVETKOVIĆ LIVIA
+CVETKOVIĆ LJILJANA
+CVETKOVIĆ LJILJANA
+CVETKOVIĆ MELANIJA
+CVETKOVIĆ MILAN
+CVETKOVIĆ MILAN
+CVETKOVIĆ MILICA
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIRA
+CVETKOVIĆ MIRJANA
+CVETKOVIĆ MIROSLAV DR
+CVETKOVIĆ MIROSLAV
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ PETAR
+CVETKOVIĆ RADMILA
+CVETKOVIĆ RADOJKO
+CVETKOVIĆ RADOSLAV
+CVETKOVIĆ RADOSLAV
+CVETKOVIĆ RADOVAN
+CVETKOVIĆ RADULA
+CVETKOVIĆ RATOMIR
+CVETKOVIĆ RISTO
+CVETKOVIĆ RUŽICA
+CVETKOVIĆ SLAVOLJUB
+CVETKOVIĆ SOKA
+CVETKOVIĆ SRBOBRAN
+CVETKOVIĆ STANKO
+CVETKOVIĆ STANOJE
+CVETKOVIĆ STANOJE
+CVETKOVIĆ SVETOZAR
+CVETKOVIĆ TATJANA
+CVETKOVIĆ TONI
+CVETKOVIĆ VELIMIR
+CVETKOVIĆ VLADIMIR
+CVETKOVIĆ ZORA
+CVETKOVSKI BORIS
+CVETKOVSKI DRAGOLJUB
+CVETKOVSKI NIKOLA
+CVETKOVSKI VOJO
+CVETOJEVIĆ LJILJANA
+CVETOJEVIĆ LJILJANA
+CVETOJEVIĆ MILISAV
+CVETOJEVIĆ SLAVKO
+CVIJAN MARIJA
+CVIJAN MARKO
+CVIJANOVIĆ ANĐA
+CVIJANOVIĆ ANA
+CVIJANOVIĆ ANTO
+CVIJANOVIĆ BOŠKO
+CVIJANOVIĆ BORO
+CVIJANOVIĆ DOBRICA
+CVIJANOVIĆ DRAGAN
+CVIJANOVIĆ DRAGUTIN
+CVIJANOVIĆ DUŠANKA
+CVIJANOVIĆ ILIJA
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILEVA
+CVIJANOVIĆ MIROSLAV
+CVIJANOVIĆ MOMIR
+CVIJANOVIĆ PETAR
+CVIJANOVIĆ RADE
+CVIJANOVIĆ RANKO
+CVIJANOVIĆ SAVA
+CVIJANOVIĆ SLAVKO
+CVIJANOVIĆ SNEŽANA
+CVIJANOVIĆ VOJISLAV
+CVIJANOVIĆ ZLATA
+CVIJETAN MIRKO
+CVIJETIČANIN JOVO
+CVIJETIĆ IGOR
+CVIJETIĆ JOVO
+CVIJETIĆ MILE
+CVIJETIĆ NADA
+CVIJETINOVIĆ RUŽA
+CVIJETINOVIĆ RUŽICA
+CVIJETINOVIĆ SINIŠA
+CVIJIĆ ŽELJKO
+CVIJIĆ DRAGAN
+CVIJIĆ GORAN
+CVIJIĆ JELISAVA
+CVIJIĆ JOVANKA
+CVIJIĆ MILENKO
+CVIJIĆ MIODRAG
+CVIJIĆ MLAĐA
+CVIJIĆ NIKOLA
+CVIJIĆ PANTE
+CVIJIĆ RUŽICA
+CVIJIĆ STEVAN
+CVIJIN BRANKO
+CVIJOVIĆ MILENKO
+CVIJOVIĆ MILIVOJE
+CVIJOVIĆ NEĐELJKA
+CVIJOVIĆ RADOSAV
+CVIJOVIĆ VOJIN
+CVIKIĆ MIHAILO
+CVING JOSIP
+CVITANOVIĆ SNEŽANA
+CVITKO PETAR
+CVITKOVAC MARKO
+CVJETAN OLGA
+CVJETIĆ ILIJA
+CVJETIĆANIN ŽIVKO
+CVJETIĆANIN GOJKO
+CVJETIĆANIN STEVO
+CVJETKOVIĆ MIODRAG
+CVJETKOVIĆ NEBOJŠA
+CVJETOJEVIĆ ČEDOMIR
+CVOROVIĆ RADOŠ
+CVRKALJ ĐURO
+DŽABASAN DRAGOJE
+DŽABIĆ MILKA
+DŽADŽIĆ VUKOSAVA
+DŽAFEROVSKI REĐEP
+DŽAFIĆ HAMDIJA
+DŽAFO MATIJA
+DŽAJA MARICA
+DŽAKIĆ ČEDO
+DŽAKIĆ BOŽANA
+DŽAKIĆ LAZA
+DŽAKOVIĆ DRAGAN
+DŽAKULA ERŽEBET
+DŽAKULA ERŽEBET
+DŽAKULA IVAN
+DŽAKULA MARICA
+DŽAKULA NEDELJKO
+DŽAKULA PETAR
+DŽAKULA RADE
+DŽAKULA VIDOSAV
+DŽAKULIN DUŠANKA
+DŽAKULIN PETAR
+DŽAKULIN STEVAN
+DŽALIĆ STOJAN
+DŽAMBARSKI JOVAN
+DŽAMBAS DUŠAN DR LEKAR
+DŽAMBAS MILE
+DŽAMBASOVIĆ MILENKO
+DŽAMBIĆ BRANKO
+DŽAMBIĆ MILOVAN
+DŽAMBIĆ RADOVAN
+DŽAMBIĆ SLAVKO
+DŽAMBIĆ SRETA
+DŽANIĆ SAVA
+DŽANIĆ STAZA
+DŽARIĆ DOBRINKA
+DŽARIĆ RADOMIR
+DŽELETOVIĆ MILADIN
+DŽELETOVIĆ MILAN
+DŽELETOVIĆ MLADEN
+DŽELETOVIĆ RADOJKA
+DŽELETOVIĆ SLOBODAN
+DŽELETOVIĆ TOMO
+DŽELILOVIĆ JANA
+DŽEPINA JOVAN
+DŽEVELEKIDIS MARINA
+DŽEVELEKIDIS PANTA
+DŽEVER NEDELJKO
+DŽEVERDANOVIĆ ANITA
+DŽEVERDANOVIĆ LAZAR
+DŽEVERDANOVIĆ NASTO
+DŽEVERDANOVIĆ VELIZAR
+DŽIDA KATICA
+DŽIDA KATICA
+DŽIDA MILADIN
+DŽIDA MILOMIR
+DŽIGURAŠ MILENKO
+DŽIGURSKI BORIVOJ
+DŽIGURSKI BRANIMIR
+DŽIGURSKI BRANKO
+DŽIGURSKI DANILO
+DŽIGURSKI DUŠKO
+DŽIGURSKI LJILJANA
+DŽIGURSKI LJILJANA
+DŽIGURSKI MARIJA
+DŽIGURSKI MARIJA
+DŽIGURSKI MILAN
+DŽIGURSKI MILENKO
+DŽIGURSKI PETAR
+DŽIGURSKI PREDRAG
+DŽIKIĆ MILAN
+DŽILITOV ALEKSANDAR
+DŽILITOV KATICA
+DŽILITOV STEVAN
+DŽILITOV STEVA
+DŽILITOV VELINKA
+DŽILVIDŽIJEV MITKO
+DŽIN MIRKO
+DŽINIĆ MIROSLAV DR
+DŽINIĆ MIROSLAV
+DŽINOVIĆ VESELIN
+DŽIRIĆ RUŽICA
+DŽODŽO RISTO
+DŽODAN DRAGA
+DŽODAN MIRJANA
+DŽODAN NIKOLA
+DŽODAN VERA
+DŽOGANOVIĆ MILORAD
+DŽOGOVIĆ ŽIVAN
+DŽOGOVIĆ MILUN
+DŽOLEV ASEN DR STOMATOLOG
+DŽOLEV ASEN
+DŽOLEV ASEN
+DŽOLEV MITKO
+DŽOLEV PANDE
+DŽOLIĆ GORDANA
+DŽOLIĆ TOMISLAV
+DŽOMBA ŽIVKO
+DŽOMBETA KOSTA
+DŽOMBETA MILOŠ
+DŽOMBETA NIKOLA
+DŽOMBETA SVETOZAR
+DŽOMBETA VLADO
+DŽOMBIĆ DUŠAN
+DŽOMBIĆ MILJA
+DŽOMBIĆ SOKA
+DŽONLEZ PIROŠKA
+DŽOPALIĆ DRAGAN
+DŽUDŽAR ĐURA
+DŽUDŽAR JOAKIM
+DŽUDŽAR SLAVKO
+DŽUDOVIĆ SMILJKA
+DŽUDOVIĆ VASO
+DŽUKLEVSKI SAŠA
+DŽUKLJEV DRAGAN
+DŽUKLJEV STOJAN
+DŽUNIĆ ŽIVORAD
+DŽUNIĆ MILIVOJE
+DŽUNIĆ MIRJANA
+DŽUNIĆ RADOMIR
+DŽUNJA AMALIJA
+DŽUNJA EVGENIJE
+DŽUNJA GORDANA
+DŽUNJA IRENA
+DŽUNJA IVAN
+DŽUNJA JAKIM
+DŽUNJA JANKO
+DŽUNJA JELENA
+DŽUNJA LJUBOMIR
+DŽUNJA MIRON
+DŽUNJA VLADIMIR
+DŽUNJA ZVONIMIR
+DŽUVER VESELINKA
+DŽUVER VOJISLAV
+DŽUVEROVIĆ IVANKA
+DAČEVIĆ MILAN
+DAČEVIĆ MOMIR
+DAČIĆ DUŠAN
+DAČIĆ KRISTINA
+DAČIĆ LJUBOMIR
+DAČIĆ MIŠA
+DAČIĆ MILAN PROFESOR
+DAČIĆ MILAN
+DAČIĆ MILICA
+DAČIĆ NADEŽDA
+DAČIĆ RADMILA
+DAČIĆ VELINKA
+DAČIĆ VLASTIMIR
+DAŠIĆ-GULD LJILJANA
+DAŠIĆ MARIJA
+DAŠIĆ MILENKO
+DAŠIĆ RADULE
+DAŠIĆ VLADO
+DAŽĐU NISTOR
+DABANOVIĆ DANICA
+DABANOVIĆ VASILIJE
+DABERER ANTONIJA
+DABETIĆ RADISAV
+DABETIĆ RADOMIR
+DABIĆ ČEDOMIR DIPL OEC
+DABIĆ ĐORĐE
+DABIĆ ALEKSANDAR
+DABIĆ BORKO
+DABIĆ GOSPAVA
+DABIĆ JOVAN
+DABIĆ JOVAN
+DABIĆ MARIJA
+DABIĆ MARKO
+DABIĆ MILAN
+DABIĆ MILOŠ
+DABIĆ MILORAD
+DABIĆ MILUTIN
+DABIĆ MIODRAG
+DABIĆ NEDELJKO
+DABIĆ NENAD
+DABIĆ NENAD
+DABIĆ NENAD
+DABIĆ RADOMIR
+DABIĆ SLAVKO
+DABIĆ STEVAN
+DABIĆ SVETA
+DABIĆ VOJISLAV
+DABIN ĐORĐE
+DABOVIĆ BOGDAN
+DABOVIĆ BRANKO
+DACIN ŽELJKO
+DADAI ĐULA
+DADAI BARBARA
+DADAI LADISLAV
+DADAI LADISLAV
+DADAI LASLO
+DADAI STEVAN
+DADIĆ BRANISLAV
+DADIĆ LJUBICA
+DAIĆ LUKA
+DAIĆ MILAN
+DAJČ MIHAJLO
+DAJČ NADA
+DAJČ RUBEN
+DAJČ ZORICA
+DAJIĆ BRANKO
+DAJIĆ DRAGICA
+DAJIĆ DUŠAN
+DAJIĆ LJILJANA
+DAJIĆ VELIMIR
+DAJKO VLADIMIR
+DAJKO VLADIMIR
+DAJOVIĆ ZORA
+DAKIĆ ĐORĐE
+DAKIĆ ANTE
+DAKIĆ BOJANA
+DAKIĆ BORIS
+DAKIĆ BORKA
+DAKIĆ BRANKA
+DAKIĆ DANE
+DAKIĆ DANILO
+DAKIĆ DRAGO
+DAKIĆ DRAGO
+DAKIĆ DUŠANKA
+DAKIĆ GOJKO
+DAKIĆ ILIJA
+DAKIĆ JELENA
+DAKIĆ KSENIJA
+DAKIĆ MILAN
+DAKIĆ MILOJE
+DAKIĆ MILOMIR
+DAKIĆ MITAR
+DAKIĆ NEBOJŠA
+DAKIĆ NEDELJKO
+DAKIĆ NEDELJKO
+DAKIĆ NIKOLA
+DAKIĆ NIKOLA
+DAKIĆ PAVLE
+DAKIĆ PETAR
+DAKIĆ RAJKO
+DAKIĆ RANKO
+DAKIĆ RATKO
+DAKIĆ RELJA
+DAKIĆ SLAVICA
+DAKIĆ SLAVKO
+DAKIĆ SLOBODAN
+DAKIĆ SRETEN
+DAKIĆ SVETOZAR
+DAKIĆ VLADIMIR DR
+DAKIĆ VLADIMIR DR
+DAKIĆ VLADIMIR
+DAKIĆ VLADIMIR
+DAKIĆ VLADO
+DAKIĆ ZORAN
+DAKOVIĆ ĐOKO
+DAKOVIĆ BRANKO
+DAKOVIĆ VESELIN
+DAKOVIĆ ZORAN
+DAKSER JOVAN
+DAKSER STEVAN
+DALČEKOVIĆ ILIJA
+DALIPOV BUDIMIR
+DALIPOVIĆ ABDUL
+DALJAC LJUBICA
+DALJEV LJILJANA
+DALJEV MILAN
+DALMACIJA JADRANKA
+DALMACIJA MIRKO
+DALOŠ MARIJA
+DAMŠIĆ JOSIF
+DAMJAN JELISAVETA
+DAMJAN JON
+DAMJANAC RADMILA
+DAMJANAC RADOVAN
+DAMJANAC STOJANKA
+DAMJANIĆ ZORICA
+DAMJANOSKA SLAVKA
+DAMJANOV ŽIKA
+DAMJANOV ĐORĐE
+DAMJANOV BILJANA
+DAMJANOV BRANKA
+DAMJANOV CVETKO
+DAMJANOV DIMITRIJE
+DAMJANOV DRAGOMIR
+DAMJANOV IDA
+DAMJANOV JORDANKA
+DAMJANOV JOVAN
+DAMJANOV KATICA
+DAMJANOV LAZA
+DAMJANOV MILENKO
+DAMJANOV MILENKO
+DAMJANOV PAVLE
+DAMJANOV SOFIJA
+DAMJANOV STANKO
+DAMJANOV STEVAN
+DAMJANOVIĆ ĐORĐE
+DAMJANOVIĆ ALEKSANDAR
+DAMJANOVIĆ ARSENIJE
+DAMJANOVIĆ BOŠKO
+DAMJANOVIĆ BORISLAV
+DAMJANOVIĆ DARINKA
+DAMJANOVIĆ DRAGICA
+DAMJANOVIĆ DRAGOSLAV
+DAMJANOVIĆ DRAGO
+DAMJANOVIĆ DRAGUTIN
+DAMJANOVIĆ DUŠAN
+DAMJANOVIĆ DUŠAN
+DAMJANOVIĆ DUŠICA
+DAMJANOVIĆ DUŠKO
+DAMJANOVIĆ EMIL
+DAMJANOVIĆ GORDANA
+DAMJANOVIĆ JOVAN
+DAMJANOVIĆ JOVAN
+DAMJANOVIĆ JOVO
+DAMJANOVIĆ LJILJANA
+DAMJANOVIĆ LJUBIŠA
+DAMJANOVIĆ LJUBICA
+DAMJANOVIĆ MARIJA
+DAMJANOVIĆ MILAN
+DAMJANOVIĆ MILAN
+DAMJANOVIĆ-MILENKOVIĆ JELENA
+DAMJANOVIĆ MIODRAG
+DAMJANOVIĆ NOVO
+DAMJANOVIĆ OBRAD
+DAMJANOVIĆ PETAR
+DAMJANOVIĆ RADE
+DAMJANOVIĆ RADOVAN
+DAMJANOVIĆ RANKO
+DAMJANOVIĆ RATKO
+DAMJANOVIĆ SIMO
+DAMJANOVIĆ SINIŠA
+DAMJANOVIĆ SLAVKO
+DAMJANOVIĆ SLOBODANKA
+DAMJANOVIĆ SNEŽANA
+DAMJANOVIĆ STANISLAV
+DAMJANOVIĆ STEVAN
+DAMJANOVIĆ STEVAN
+DAMJANOVIĆ STEVO
+DAMJANOVIĆ TEREZA
+DAMJANOVIĆ TODOR
+DAMJANOVIĆ TOMISLAV
+DAMJANOVIĆ VASILIJE DR
+DAMJANOVIĆ VASILIJE
+DAMJANOVIĆ VASILIJE
+DAMJANOVIĆ VOJISLAV
+DAMJANOVIĆ ZORAN
+DAMJANOVSKI ŽIVKO
+DAMJANOVSKI ALEKSANDAR
+DAMJANOVSKI ALEKSANDAR
+DAMJANOVSKI MILAN
+DAMJANOVSKI RUŽICA
+DAMJANOVSKI VLADIMIR
+DAMLJANOVIĆ ŽIVOTA
+DAMNJANOVIĆ ALEKSANDAR
+DAMNJANOVIĆ KRISTINA
+DAMNJANOVIĆ LAZAR
+DAMNJANOVIĆ LJILJANA
+DAMNJANOVIĆ SLAVOLJUB
+DAMNJANOVIĆ ZORAN
+DAMNJANOVIĆ ZORAN
+DAN MIRA
+DANČ TIBOR
+DANČETOVIĆ ZORICA
+DANČO ČABA
+DANČO JENE
+DANAILOV ACA
+DANAILOV TEVA
+DANGUBIĆ ŽARKO
+DANGUBIĆ RADIVOJE DIPL ING
+DANGUBIĆ RATKO
+DANGUZOV DUŠAN
+DANI GAŠPAR
+DANI LASLO
+DANIČIĆ BORO
+DANIČIĆ BRANISLAV
+DANIČIĆ DRAGOLJUB
+DANIČIĆ DRAGO
+DANIČIĆ IRENA
+DANIČIĆ SAVICA
+DANIČIĆ ZDRAVKO
+DANIŠ EVA
+DANIŠ IŠTVAN
+DANIŠ MARIJA
+DANIĆ PETAR DIPL ING
+DANIĆ VESNA
+DANIĆ ZORICA
+DANIEL ANDRIJA
+DANIEL ARANKA
+DANIEL HILDA
+DANIEL JOSIP
+DANIEL PETAR
+DANIEL PIROŠKA
+DANIEL RUŽA
+DANIKOV MIROLJUB
+DANIKOV VALERIJA
+DANILOV ANICA
+DANILOV BOSILJKA
+DANILOV DUŠAN
+DANILOV MILAN
+DANILOV RADOMIR
+DANILOV SMILJANA
+DANILOV STOJAN
+DANILOV VASA
+DANILOVAC DIMITRIJE
+DANILOVAC PETAR
+DANILOVAC RUŽA
+DANILOVAC VITOMIR
+DANILOVIĆ ŽIVAN
+DANILOVIĆ ŽIVORAD
+DANILOVIĆ ALEKSANDAR
+DANILOVIĆ BRANKO
+DANILOVIĆ JOVAN
+DANILOVIĆ KATARINA
+DANILOVIĆ LJILJANA
+DANILOVIĆ MARKO
+DANILOVIĆ MILAN
+DANILOVIĆ MIRKO DR
+DANILOVIĆ NIKOLA
+DANILOVIĆ NIKOLA
+DANILOVIĆ PERSA
+DANILOVIĆ RADA
+DANILOVIĆ RADMILA
+DANILOVIĆ STANISLAVA
+DANILOVIĆ STEVAN
+DANILOVIĆ TIHOMIR
+DANILOVIĆ-VESELINOV VERA
+DANILOVIĆ ZDRAVKO
+DANJI FERENC
+DANJI GEZA
+DANJI KAROLJ
+DANJI LASLO
+DANJI MAĆAŠ
+DANKA MARKO
+DANKA ZLATA
+DANKO JANKO
+DANKO JAROSLAV
+DANKOVIĆ BOGOLJUB
+DANKOVIĆ SLAVIŠA
+DANKOVIĆ SLAVKA
+DANKUC DRAGAN
+DANKUC MILICA
+DANKUC VOJISLAV
+DANKUC VOJISLAV
+DANOJEVIĆ STEVAN
+DAPČEVIĆ DUŠAN
+DAPČEVIĆ JOVAN
+DAPČEVIĆ LJUBICA
+DAPČEVIĆ PAVLE
+DAPČEVIĆ RAJKO
+DAPČEVIĆ RUŽICA
+DAPČEVIĆ VERICA
+DARAŠ ŽELJKO
+DARAŽ JULIJANA
+DARAŽ STEVAN
+DARABANJ JOŽEF
+DARABOŠ JULKA
+DARABOŠ LADISLAV
+DARABOŠ MARIJA
+DARABOŠ PETAR
+DARABUC NEDELJKO
+DARADIĆ STEVAN
+DARMANOVIĆ MILAN
+DARMANOVIĆ STANKO
+DARMANOVIĆ TOMISLAV
+DAROJEVIĆ LAZAR
+DARVIŠ ZORICA
+DASOVIĆ STOJANKA
+DASOVIĆ ZLATA
+DAUTOVA-RUŠEVLJAN VELINKA DR
+DAUTOVIĆ ĐORĐE
+DAUTOVIĆ BOGDAN
+DAUTOVIĆ DŽEMAL
+DAUTOVIĆ DRAGAN
+DAUTOVIĆ MILAN
+DAUTOVIĆ MILAN
+DAVIĆ BRANISLAV
+DAVID ANDRAŠ
+DAVID ILONA
+DAVIDOV ĐURĐINA
+DAVIDOV BOGDAN
+DAVIDOV BUDIMKA
+DAVIDOV JELICA
+DAVIDOV JOVAN
+DAVIDOV LJUBOMIR
+DAVIDOV MILAN
+DAVIDOV MILAN
+DAVIDOV MILIĆ
+DAVIDOV MILIVOJ
+DAVIDOV MILKA
+DAVIDOV NEGOVAN
+DAVIDOV RADOSLAV
+DAVIDOV RADOVAN
+DAVIDOV SLAVKO
+DAVIDOV STOJAN
+DAVIDOV TIHOMIR
+DAVIDOVAC ĐORĐE
+DAVIDOVAC BOŠKO
+DAVIDOVAC DANILO
+DAVIDOVAC DUŠANKA
+DAVIDOVAC ELVIRA
+DAVIDOVAC GAVRA
+DAVIDOVAC GOJKO
+DAVIDOVAC LJUBICA
+DAVIDOVAC MIROSLAV
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADMILA
+DAVIDOVAC STEVAN
+DAVIDOVAC TODOR
+DAVIDOVAC VERICA
+DAVIDOVAC VESELINKA
+DAVIDOVAC ZDRAVKO
+DAVIDOVIĆ ČASLAV
+DAVIDOVIĆ DAVOR
+DAVIDOVIĆ DRAGAN
+DAVIDOVIĆ DRAGICA
+DAVIDOVIĆ DUŠANKA
+DAVIDOVIĆ DUŠKO
+DAVIDOVIĆ GORAN
+DAVIDOVIĆ JOVAN
+DAVIDOVIĆ JOVO
+DAVIDOVIĆ LJILJANA
+DAVIDOVIĆ MARIJA
+DAVIDOVIĆ MARIJA
+DAVIDOVIĆ MARJAN
+DAVIDOVIĆ MIHAILO
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILA
+DAVIDOVIĆ MILOŠ
+DAVIDOVIĆ MILOŠ
+DAVIDOVIĆ MILOVAN
+DAVIDOVIĆ MILUTIN
+DAVIDOVIĆ MIRKO
+DAVIDOVIĆ MIROSLAV
+DAVIDOVIĆ MIROSLAV
+DAVIDOVIĆ MLADEN
+DAVIDOVIĆ NEBOJŠA
+DAVIDOVIĆ NENAD
+DAVIDOVIĆ OLGA
+DAVIDOVIĆ PERA
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ RADE DR
+DAVIDOVIĆ RADE
+DAVIDOVIĆ RADOJE
+DAVIDOVIĆ RADOMIR
+DAVIDOVIĆ SAVA
+DAVIDOVIĆ SLAVKO
+DAVIDOVIĆ SRETA
+DAVIDOVIĆ STANKO
+DAVIDOVIĆ STEVAN
+DAVIDOVIĆ UROŠ
+DAVIDOVIĆ VASA
+DAVIDOVIĆ VITOMIR
+DAVIDOVIĆ VLADIMIR
+DAVIDOVIĆ VOJISLAV
+DAVIDOVIĆ ZORA
+DAVIDOVSKI MARA
+DAVINIĆ STOJAN
+DAVOGIĆ TEODOR
+DAVOSIR IVAN
+DAVOSIR MAKSIM
+DAVOSIR TEODOR
+DAVOSIR VLADIMIR
+DE-VRIES IVANKA
+DEŠI ZOLTAN
+DEŠIĆ MARA
+DEŠO ŽIVANKA
+DEŽE JOVAN
+DEŽE KARLO
+DEŽE ZDENKA
+DEŽELIĆ JOVANKA
+DEĐANSKI ĐORĐE
+DEĐANSKI DUŠAN
+DEĐANSKI PETAR
+DEAK ŽARKO
+DEAK ANDRAŠ
+DEAK ANDRIJANA
+DEAK ANDRIJA
+DEAK ARANKA
+DEAK FERENC
+DEAK ILEŠ
+DEAK LAURA
+DEAK MATILDA
+DEAN NEVENKA
+DEAROSKI FEHIM
+DEAROVIĆ SALIM
+DEBELJAČKI ŽIVOJIN
+DEBELJAČKI ĐORĐE
+DEBELJAČKI ALEKSANDAR
+DEBELJAČKI ALEKSANDAR
+DEBELJAČKI BOSILJKA
+DEBELJAČKI DRAGOMIR
+DEBELJAČKI IVAN
+DEBELJAČKI IVAN
+DEBELJAČKI KATICA
+DEBELJAČKI LJUBICA
+DEBELJAČKI MIRJANA
+DEBELJAČKI MIROSLAV
+DEBELJAČKI NADA
+DEBELJAČKI SRĐA
+DEBELJAČKI SVETOZAR
+DEBELJAČKI VERA
+DEBELJAČKI VUKOSAVA
+DEBELJEVIĆ VELIMIR
+DEC ANICA
+DEDAJ DAVID
+DEDAJ LEKO
+DEDEI ILONA
+DEDEIĆ ELIZABETA
+DEDIĆ BRANISLAV
+DEDIĆ DOBROSAV
+DEDIĆ DRAGAN
+DEDIĆ DRAGOSLAV
+DEDIĆ ELIZABETA
+DEDIĆ GAVRILO
+DEDIĆ JOVO
+DEDIĆ KOVINKA
+DEDIĆ MARA
+DEDIĆ MARIJA
+DEDIĆ MILIVOJ DR PROF
+DEDIĆ MILO
+DEDIĆ MIODRAG
+DEDIĆ NEMANJA
+DEDIĆ RADICA
+DEDIĆ SLAVKA
+DEDIĆ STEVAN
+DEDIĆ-TASIĆ MIRA
+DEDIN DEJAN
+DEDIN DIMITRIJE
+DEDIN DIMITRIJE
+DEDIN VASILIJE
+DEDINSKI TIBOR
+DEDOVIĆ MIŠO
+DEFRANGEPAN FRANSOA
+DEGA AVRAM
+DEJANAC MILORAD
+DEJANOSKI MILAN
+DEJANOV BERISLAV
+DEJANOV DANILO
+DEJANOV JELENA
+DEJANOV MITA
+DEJANOV SIMA
+DEJANOVIĆ ŽARKO
+DEJANOVIĆ ŽARKO
+DEJANOVIĆ ŽIVAN
+DEJANOVIĆ ŽIVOJIN
+DEJANOVIĆ ĐORĐE
+DEJANOVIĆ ĐURĐINKA
+DEJANOVIĆ ĐURICA
+DEJANOVIĆ ALEKSANDAR
+DEJANOVIĆ ALEKSANDRA
+DEJANOVIĆ ANĐELIJA
+DEJANOVIĆ ANKICA
+DEJANOVIĆ BORISLAVA
+DEJANOVIĆ DANILO
+DEJANOVIĆ DIMITRIJE
+DEJANOVIĆ DOBRIVOJE
+DEJANOVIĆ DOBRIVOJE
+DEJANOVIĆ DRAGAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ IVAN
+DEJANOVIĆ JELENA
+DEJANOVIĆ JELICA
+DEJANOVIĆ JORDAN
+DEJANOVIĆ JOVAN
+DEJANOVIĆ KATICA
+DEJANOVIĆ LAZAR
+DEJANOVIĆ LAZAR
+DEJANOVIĆ MILANA
+DEJANOVIĆ MILAN
+DEJANOVIĆ MILAN
+DEJANOVIĆ MILICA
+DEJANOVIĆ MILOŠ
+DEJANOVIĆ MILOŠ
+DEJANOVIĆ MILORAD
+DEJANOVIĆ MILORAD
+DEJANOVIĆ MIRJANA
+DEJANOVIĆ MIROSLAV
+DEJANOVIĆ PETAR
+DEJANOVIĆ PETAR
+DEJANOVIĆ PETAR
+DEJANOVIĆ RADA
+DEJANOVIĆ STEVAN
+DEJANOVIĆ STEVAN
+DEJANOVIĆ VOJISLAV
+DEJANOVSKI MLADEN
+DEJANOVSKI TOMISLAV
+DEJANOVSKI VESELIN
+DEKANIĆ BRANKO
+DEKANIĆ GLIGORIJE
+DEKANIĆ MILOŠ
+DEKANIĆ MILOŠ
+DEKANIĆ VOJISLAV
+DEKANIĆ VOJISLAV
+DEKANJ ANTAL
+DEKANSKI DINA
+DEKANSKI PAVLE
+DEKIĆ DANE
+DELAČ FRANCIŠKA
+DELETIĆ GORDANA
+DELIĆ ĐORĐE
+DELIĆ BILJANA
+DELIĆ BOŽIDAR
+DELIĆ BOGDAN
+DELIĆ DARINKA
+DELIĆ DESIMIR
+DELIĆ DRAGICA
+DELIĆ DRAGICA
+DELIĆ DRAGUTIN
+DELIĆ-IBUKIĆ ESAD
+DELIĆ ILIJA
+DELIĆ JANJA
+DELIĆ JOVAN
+DELIĆ MARA
+DELIĆ MIĆO DR
+DELIĆ MIHAJLO
+DELIĆ MILANA
+DELIĆ MILAN
+DELIĆ MILICA
+DELIĆ MILKA
+DELIĆ MILOŠ
+DELIĆ MILOMIR
+DELIĆ MILOSAVA
+DELIĆ MUSTAFA
+DELIĆ PAŠKO
+DELIĆ PETAR
+DELIĆ RADMILA
+DELIĆ RADOJKA DR
+DELIĆ RADOMIR
+DELIĆ RADOSAV
+DELIĆ-SLAVKOVIĆ VERA
+DELIĆ SRETEN
+DELIĆ STOJAN
+DELIĆ SVETOZAR
+DELIĆ TOMISLAV
+DELIĆ VASA
+DELIĆ VESELKO
+DELIĆ VESNA
+DELIĆ VLADO
+DELIĆ VLADO
+DELIĐORĐEVIĆ STEVANKA
+DELIBAŠIĆ DEJAN DIPL ING
+DELIBAŠIĆ LJUBIŠA
+DELIBAŠIĆ LJUBICA
+DELIBAŠIĆ MARICA
+DELIBAŠIĆ MILIVOJE
+DELIBAŠIĆ MILIVOJE
+DELIBAŠIĆ MILORAD
+DELIBAŠIĆ MIODRAG
+DELIBAŠIĆ SAVO
+DELIBAŠIĆ SOFIJA
+DELIBAŠIĆ TOMISLAV
+DELIBLAĆANIN JOVAN
+DELKOVIĆ JOVICA
+DELOIK DRAGUTIN
+DELONGA STANKO
+DELOV ORDANČO
+DEMČEŠEN VASILIJE
+DEMŠAR GORDANA
+DEMŠAR-VEGER MARIJA
+DEMAK MIROSLAV
+DEMAN JANKO
+DEMAN RASTISLAV
+DEMBIC SMILJANA
+DEME EMA
+DEME FRANCIŠKA
+DEME IRENA
+DEME KLARA
+DEMEŠI ARPAD
+DEMELIS LJUBICA
+DEMENDI BELA
+DEMENDI DOROTEA
+DEMER BELA
+DEMER FRANC
+DEMETER FERENC
+DEMETER FRANJA
+DEMETER STEVAN
+DEMIĆ ŽIVORAD
+DEMJEN BORISLAV
+DEMKO-RIHTER JOSIP
+DEMOVSKI SEVDIJA
+DEMUT ROZALIJA
+DENČIK VLADISLAV
+DENDA DRAGAN
+DENDA MILIVOJ
+DENDIĆ SRETIMIR
+DENEŠI VILIM
+DENGORICIJA STJEPAN
+DENIĆ ČEDOMIR
+DENIĆ ŽIVOTA
+DENIĆ LJUBIŠA
+DENIĆ MOMČILO DIPL ING
+DENIĆ RADICA
+DENIĆ SINIŠA
+DENIĆ ZUZANA
+DENKOVIĆ LJUBOMIR
+DENKOVSKI JANE
+DEPČENJSKI STEFAN
+DER FRANJA
+DER JOŽEF
+DER LAJOŠ
+DER STEVAN
+DERAJIĆ STOJA
+DERBAKOV MARKO
+DERBOGOSIJAN BRANKO
+DERDIĆ RUDOLF
+DEREH SIMEON
+DERETA MILAN
+DERETA PETAR
+DERETA SVETOZAR
+DERETIĆ SVETOZAR
+DERIKRAVA MICA
+DERMENĐIJEVSKI DIMITAR
+DERONJIĆ TODOR
+DERUŠEK MILJENKO
+DERVIŠEVIĆ JUSUF
+DERVIŠEVIĆ NEDŽIB
+DERVIŠEVIĆ SLAVKO
+DERVIŠI MISIN
+DERVIŠI RAMADAN
+DERVIŠI RUŠIT
+DERVIĆ ŠEFKA
+DESNICA ĐORĐE
+DESNICA ĐURO MR
+DESNICA BOGDAN
+DESNICA BRANKO
+DESNICA JANKO
+DESNICA LUKA
+DESNICA NIKOLA
+DESNICA RADOMIR DIPL ING
+DESNICA RADOMIR
+DESNICA RELJA
+DESNICA SMILJKA
+DESNICA STANA
+DESPENIĆ ALEKSANDAR
+DESPI JOVA
+DESPI VELJKO
+DESPIĆ LAZAR
+DESPIĆ MARKO
+DESPIĆ MIRJANA
+DESPIĆ SRETEN
+DESPIĆ ZORAN
+DESPOT DUŠAN
+DESPOT MILAN
+DESPOT MILICA
+DESPOT MIRJANA
+DESPOT NADA
+DESPOT NENAD
+DESPOT SLOBODAN
+DESPOTOV ALEKSANDAR
+DESPOTOV DOBRILA
+DESPOTOV EVDOKIJA
+DESPOTOV ILIJA
+DESPOTOV JOCA
+DESPOTOV LJUBINKA
+DESPOTOV MILAN
+DESPOTOV MILOVAN
+DESPOTOV RADMILA
+DESPOTOV RUŽICA
+DESPOTOV VILMA
+DESPOTOV VITOMIRKA
+DESPOTOV VOJISLAV
+DESPOTOV ZORAN
+DESPOTOVIĆ BILJANA
+DESPOTOVIĆ DRAGUTIN
+DESPOTOVIĆ LJILJANA
+DESPOTOVIĆ PANTELIJA
+DESPOTOVIĆ RADISLAV
+DESPOTOVIĆ RADISLAV
+DESPOTOVIĆ RADIVOJE
+DESPOTOVIĆ RADIVOJE
+DESPOTOVIĆ RADMILA
+DESPOTOVIĆ RATKO
+DESPOTOVIĆ SIMKA
+DESPOTOVIĆ STANKO
+DESPOTOVIĆ VASO
+DESPOTOVIĆ VOJISLAV
+DESPOTOVSKI DUŠAN
+DETARI MARIJA
+DETELIN ĐURA
+DETELIN JOSIP
+DETELIN NADA
+DEURA DUŠAN DIPL PRAVNIK
+DEURA RAJKO
+DEURA VERA
+DEURIĆ RADMILA
+DEVAI ŠANDOR
+DEVAI IMRE
+DEVAI LAJOŠ
+DEVAI SANJA
+DEVAI ZORICA
+DEVAJA NADA
+DEVAJA OMER DR
+DEVALD ETELKA
+DEVALD IVAN
+DEVALD JOHAN
+DEVEČERI KRISTINA
+DEVEČERSKI AVRAM
+DEVEČERSKI DANICA
+DEVEČERSKI VASILIJE DR
+DEVEDAN ĐORĐE
+DEVEDAN BOGDAN
+DEVEDAN DRAGOJE
+DEVEDAN MARA
+DEVEDAN MILOVAN
+DEVEDAN MIRKO
+DEVETAK ZORA
+DEVIĆ-ČOBANKSI MILJENKA
+DEVIĆ ŽIVAN
+DEVIĆ ĐOKA
+DEVIĆ ĐORĐE
+DEVIĆ ALEKSANDAR
+DEVIĆ ANKICA
+DEVIĆ BILJANA
+DEVIĆ BRANISLAVA
+DEVIĆ BRANKA
+DEVIĆ CVIJETA
+DEVIĆ DANICA
+DEVIĆ DANILKA
+DEVIĆ DOBROSAV
+DEVIĆ DRAGOLJUB
+DEVIĆ DRAGOMIR
+DEVIĆ DRAGO
+DEVIĆ DUŠAN
+DEVIĆ EVICA
+DEVIĆ GORAN
+DEVIĆ GROZDA
+DEVIĆ IGNJAT
+DEVIĆ ILIJA
+DEVIĆ JOVAN DIPL ING
+DEVIĆ JOVANKA DR
+DEVIĆ JOVAN
+DEVIĆ KATICA
+DEVIĆ MILAN
+DEVIĆ MILAN
+DEVIĆ MILENKO
+DEVIĆ MILETA
+DEVIĆ MILOŠ
+DEVIĆ MIODRAG
+DEVIĆ MIRA
+DEVIĆ MLADEN
+DEVIĆ NEBOJŠA
+DEVIĆ NENAD
+DEVIĆ NOVKA
+DEVIĆ PETAR
+DEVIĆ RADOSLAV
+DEVIĆ SIMA
+DEVIĆ SLAVKO
+DEVIĆ SLOBODAN
+DEVIĆ TATJANA
+DEVIĆ TOMA
+DEVIĆ VELINKA
+DEVIĆ VLADA
+DEVIĆ VOJISLAV DIPL ING
+DEVIĆ ZAGORKA
+DEVRNJA BRANISLAV
+DEVRNJA DRAGICA
+DEVRNJA LJUBICA
+DEVRNJA-MIHAJLOVIĆ LJILJANA
+DEVRNJA MIODRAG
+DEVRNJA SPASOJE
+DEVUŠIĆ MILAN
+DICKOV ĐORĐE
+DICKOV ALEKSANDRA
+DICKOV DRAGAN
+DICKOV DRAGAN
+DICKOV DUŠKO
+DICKOV IVAN
+DICKOV KOSTA
+DICKOV MIRJANA
+DICKOV NIKOLA
+DICKOV STEVAN
+DICKOV VESELIN
+DICKOV VESELIN
+DICKOV ZORKA
+DICMAN ZDENKA
+DIDANOVIĆ ČEDOMIR
+DIDANOVIĆ BUDIMIR
+DIJAKOVIĆ PAVA
+DIJAMATOVIĆ DRAGICA
+DIKIĆ BRANISLAV
+DIKIĆ BRANKO
+DIKIĆ DUŠAN
+DIKIĆ GORAN
+DIKIĆ JOVANKA
+DIKIĆ JOVAN
+DIKIĆ MILAN
+DIKIĆ RATKO
+DIKIĆ SAVA DIPL ING
+DIKIĆ STEVAN
+DIKIĆ VELINKA
+DIKIĆ ZAGORKA
+DIKLIĆ ALEKSANDAR
+DIKLIĆ ALEKSANDAR
+DIKLIĆ BRANISLAV
+DIKLIĆ DRAGAN
+DIKLIĆ DRAGAN
+DIKLIĆ DUŠAN
+DIKLIĆ DUŠAN
+DIKLIĆ JASMINA
+DIKLIĆ JOVAN
+DIKLIĆ JUDIT
+DIKLIĆ MARTA
+DIKLIĆ MILAN
+DIKLIĆ MILETA
+DIKLIĆ MIROSLAV
+DIKLIĆ PETAR
+DIKLIĆ STANKO
+DIKOVIĆ NIKOLA
+DILBEROVIĆ ANTO
+DIMČOVSKI TRAJČE
+DIMŠIĆ ANKA
+DIMA BOSA
+DIMAŠEVIĆ ALEKSANDAR
+DIMAŠEVIĆ PETAR
+DIMANIĆ ANKA
+DIMANIĆ BRANISLAV
+DIMESKI ILIJA
+DIMESKI METODIJE
+DIMIĆ ŽARKO
+DIMIĆ ĐORĐE
+DIMIĆ AKSENTIJE
+DIMIĆ AKSENTIJE
+DIMIĆ ANĐELKA
+DIMIĆ BOGDAN
+DIMIĆ BRANKO
+DIMIĆ DANICA
+DIMIĆ DIMITRIJE
+DIMIĆ DRAGOLJUB DR
+DIMIĆ DRAGOMIR
+DIMIĆ DRAGO
+DIMIĆ DUŠAN DR
+DIMIĆ DUŠAN
+DIMIĆ DUŠAN
+DIMIĆ EMILIJA
+DIMIĆ ERŽEBET
+DIMIĆ IGNJAT
+DIMIĆ IVAN
+DIMIĆ JANKO
+DIMIĆ KOSTA
+DIMIĆ LAZAR
+DIMIĆ LAZAR
+DIMIĆ LJUBOMIR
+DIMIĆ MILAN
+DIMIĆ MILAN
+DIMIĆ MILEVA
+DIMIĆ MILICA
+DIMIĆ MILOŠ
+DIMIĆ MILOJE DIPL ING
+DIMIĆ MITA
+DIMIĆ NADA
+DIMIĆ NADA
+DIMIĆ NEBOJŠA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ OLGA
+DIMIĆ OZREN
+DIMIĆ PETAR
+DIMIĆ STANKO
+DIMIĆ STEVAN
+DIMIĆ STEVAN
+DIMIĆ STEVAN
+DIMIĆ STEVA
+DIMIĆ VASA
+DIMIĆ VERICA
+DIMIĆ VITOMIR
+DIMIĆ VITOMIR
+DIMIĆ VLADIMIR
+DIMITRAŠKOVIĆ VLADIMIR
+DIMITRIĆ ŽIVORAD
+DIMITRIĆ BOGOLJUB
+DIMITRIĆ BRANKO
+DIMITRIĆ DRAGAN
+DIMITRIĆ MILENKO
+DIMITRIĆ MILEVA
+DIMITRIĆ NOVAK
+DIMITRIĆ PERO
+DIMITRIĆ RATKO
+DIMITRIĆ VLADAN
+DIMITRIĆ ZORAN
+DIMITRIADIS PAVLOS
+DIMITRIJEVIĆ ČEDOMIR
+DIMITRIJEVIĆ ČEDOMIR
+DIMITRIJEVIĆ ĐORĐE
+DIMITRIJEVIĆ ĐORĐE
+DIMITRIJEVIĆ ĐURĐA
+DIMITRIJEVIĆ ALEKSANDAR
+DIMITRIJEVIĆ ARSA
+DIMITRIJEVIĆ ARSEN
+DIMITRIJEVIĆ-BESERMENJI KATICA
+DIMITRIJEVIĆ BORIVOJE
+DIMITRIJEVIĆ BRANISLAVA
+DIMITRIJEVIĆ BRANISLAV
+DIMITRIJEVIĆ BRANISLAV
+DIMITRIJEVIĆ BRANKA
+DIMITRIJEVIĆ BRZOMIR
+DIMITRIJEVIĆ DANICA
+DIMITRIJEVIĆ DANICA
+DIMITRIJEVIĆ DESANKA
+DIMITRIJEVIĆ DIMITRIJE
+DIMITRIJEVIĆ DOBRICA
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DUŠAN DR
+DIMITRIJEVIĆ DUŠANKA
+DIMITRIJEVIĆ DUŠAN
+DIMITRIJEVIĆ ERŽEBET
+DIMITRIJEVIĆ ETELA
+DIMITRIJEVIĆ EVICA
+DIMITRIJEVIĆ JELENA
+DIMITRIJEVIĆ JELENA
+DIMITRIJEVIĆ JELICA
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ LAZAR
+DIMITRIJEVIĆ LJUBICA DR
+DIMITRIJEVIĆ LJUBICA
+DIMITRIJEVIĆ LJUBICA
+DIMITRIJEVIĆ LJUBINKO
+DIMITRIJEVIĆ MARGITA
+DIMITRIJEVIĆ MARICA
+DIMITRIJEVIĆ MILAN MR
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILA
+DIMITRIJEVIĆ MILIVOJ
+DIMITRIJEVIĆ MILKA
+DIMITRIJEVIĆ MILOJE
+DIMITRIJEVIĆ MILOVAN
+DIMITRIJEVIĆ MILUTIN
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIRČE
+DIMITRIJEVIĆ MIROSLAVKA
+DIMITRIJEVIĆ MIROSLAV
+DIMITRIJEVIĆ MLADEN
+DIMITRIJEVIĆ NADA
+DIMITRIJEVIĆ NADA
+DIMITRIJEVIĆ NENAD
+DIMITRIJEVIĆ NEVENKA
+DIMITRIJEVIĆ PAJA
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PREDRAG
+DIMITRIJEVIĆ PREDRAG
+DIMITRIJEVIĆ RADISAV
+DIMITRIJEVIĆ RADIVOJE
+DIMITRIJEVIĆ RADIVOJ
+DIMITRIJEVIĆ RATKO
+DIMITRIJEVIĆ SAŠA
+DIMITRIJEVIĆ SAVA
+DIMITRIJEVIĆ SLAVKO
+DIMITRIJEVIĆ SLAVOLJUB
+DIMITRIJEVIĆ SRĐA
+DIMITRIJEVIĆ STANKO
+DIMITRIJEVIĆ STANOJE
+DIMITRIJEVIĆ STEVAN
+DIMITRIJEVIĆ STOJADIN
+DIMITRIJEVIĆ STOJADIN
+DIMITRIJEVIĆ SVETOMIR
+DIMITRIJEVIĆ TIHOMIR
+DIMITRIJEVIĆ TOMISLAV
+DIMITRIJEVIĆ VERA
+DIMITRIJEVIĆ VITOMIR
+DIMITRIJEVIĆ VUJICA
+DIMITRIJEVIĆ VUKOSAVA
+DIMITRIJEVIĆ ZLATIBOR
+DIMITRIJEVIĆ ZORAN
+DIMITRIJEVIĆ ZORAN
+DIMITRIJEVIĆ ZORICA
+DIMITRIJEVIĆ ZORICA
+DIMITRIJEVSKI MIHAJLO
+DIMITROV ŽIVOJIN
+DIMITROV ĐOKA
+DIMITROV ĐORĐE
+DIMITROV BOŠKO
+DIMITROV BORO
+DIMITROV BRANISLAV
+DIMITROV BRANKO
+DIMITROV DIMITRIJE
+DIMITROV DUŠAN
+DIMITROV DUŠAN
+DIMITROV EFTIM
+DIMITROV JOCA
+DIMITROV PETAR
+DIMITROV RADISLAV
+DIMITROV SLAVKO
+DIMITROV SOSA
+DIMITROV STEVAN
+DIMITROV SVETISLAV
+DIMITROV UROŠ
+DIMITROV VELIČKO
+DIMITROV ZLATA
+DIMITROVSKI ILONA
+DIMITROVSKI LJUBOMIR
+DIMITROVSKI LJUBOMIR
+DIMITROVSKI PAVLE
+DIMKOVIĆ BORISLAV
+DIMKOVSKI GORAN
+DIMKOVSKI LJUBIŠA
+DIMOSKI NIKOLA
+DIMOV DIMITAR
+DIMOV TODOR
+DIMOVA KATICA
+DIMOVIĆ SOFIJA
+DIMOVSKI ĐERO
+DIMOVSKI ANDRIJA
+DIMOVSKI LJUBICA
+DIMOVSKI MARINA
+DIMOVSKI MILICA
+DIMOVSKI TRAJČE
+DINČIĆ KATICA
+DINČIĆ MILORAD
+DINČIĆ SLOBODAN
+DINČIĆ SRETENKA
+DINČIK MARIJA
+DINIĆ ČEDOMIR
+DINIĆ BOŽIDAR
+DINIĆ BOSA
+DINIĆ JOŠKA
+DINIĆ-KNEŽEVIĆ DUŠANKA
+DINIĆ MILORAD
+DINIĆ RADOMIR
+DINIĆ VALERIJA
+DINIĆ VLADETA
+DINIĆ ZVONIMIR
+DINJAŠKI ŽARKO
+DINJAŠKI IRINA
+DINJAŠKI KSENIJA
+DINJAŠKI LEPA
+DINJAŠKI NESTOR
+DINJAŠKI STANIMIR
+DINJAŠKI STANKA
+DINJAŠKI STEVAN
+DINJAŠKI TRIVA
+DINJAŠKI ZDRAVKO
+DINJEŠ JOSIP
+DINULOVIĆ RADOSLAV
+DIOŠI JOSIP
+DIRNER ARANKA
+DISIĆ LJUBIŠA
+DISIĆ VLADIMIR
+DITRIH ANA
+DITRIH ROBERT
+DITRIH VLADIMIR
+DIVIĆ MILENKO
+DIVIJAČKI DRAGAN
+DIVIJAČKI DRAGAN
+DIVILD ĐORĐE
+DIVILD ANDRIJA
+DIVILD JELISAVETA
+DIVILD RADOSLAV
+DIVJAK DUŠAN
+DIVJAK DUŠAN
+DIVJAK DUŠAN
+DIVJAK MARINKO
+DIVJAK MILAN
+DIVJAK MILAN
+DIVJAK MILAN
+DIVJAK SAVA
+DIVJAKOVIĆ ĐORĐE
+DIVJAKOVIĆ BRANKO
+DIVJAKOVIĆ GAVRA
+DIVJAKOVIĆ JELICA
+DIVJAKOVIĆ LJUBICA
+DIVJAKOVIĆ MARIJA
+DIVJAKOVIĆ-RADIČEVA DORINA
+DIVJAKOVIĆ STEVAN
+DIVJAKOVIĆ TODOR
+DIVJAKOVIĆ VLADA
+DIVLJAK ALEKSANDAR
+DIVLJAK ANGELINA
+DIVLJAK BOŠKO
+DIVLJAK DESIMIR
+DIVLJAK DOBRIVOJ
+DIVLJAK DRAGO
+DIVLJAK MIROSLAV
+DIVLJAK MIROSLAV
+DIVLJAK RATKO
+DIVLJAK ZDRAVKO
+DIVLJAKOVIĆ DRAGUTIN
+DIVLJAKOVIĆ IVANKA
+DIVLJAN NENAD
+DIVNIĆ ŽIVAN
+DIVNIĆ ĐORĐE
+DIVNIĆ JELKA
+DIVNIĆ MIRJANA
+DIVNIĆ PAJA
+DIVNIĆ SLOBODAN
+DIVNIĆ SONJA
+DIVNIĆ SVETOZAR
+DIVOVIĆ RADOVAN
+DIZDAR ANĐA
+DIZDAR ANKICA
+DIZDAR IVICA
+DIZDAR JOSIP
+DIZDAR JURE
+DIZDAR JURO
+DIZDAR MARIJA
+DIZDAR MARKO
+DIZDAR PAVO
+DIZDAR SARAFINA
+DIZDAR VLADO
+DIZDAREVIĆ RADOLJUB
+DLUHI JOSIP
+DMITRAŠINOVIĆ RADE
+DMITRIJEV LIDIJA
+DMITROVIĆ DANICA
+DMITROVIĆ LJILJANA
+DMITROVIĆ MILOŠ
+DMITROVIĆ MIRJANA
+DMITROVIĆ RADENKO LEKAR
+DMITROVIĆ STEVAN
+DMITROVIĆ STEVAN
+DOŠEMOVIĆ PREDRAG
+DOŠEN ŽIVADIN
+DOŠEN BILJANA
+DOŠEN BRANKO
+DOŠEN DESANKA
+DOŠEN DRAGAN
+DOŠEN DUŠAN
+DOŠEN DUŠAN
+DOŠEN DUŠAN
+DOŠEN DUBRAVKA
+DOŠEN HRISTINA DR
+DOŠEN ILIJA
+DOŠEN IVAN
+DOŠEN IVAN
+DOŠEN JELENA
+DOŠEN MILAN
+DOŠEN MILAN
+DOŠEN MILE
+DOŠEN MILOŠ
+DOŠEN RADOSLAV
+DOŠEN RADOSLAV
+DOŠEN RATKO
+DOŠEN SVETLANA
+DOŠEN VOJIN
+DOŠENOVIĆ ČEDOMIR
+DOŠENOVIĆ MILIVOJE
+DOŠENOVIĆ MIROSLAVA
+DOŠENOVIĆ VASILJKA
+DOŠENOVIĆ VOJIN
+DOŠIĆ GIZELA
+DOŠLIĆ MILICA
+DOŠLIĆ NENAD
+DOŠLIĆ RADOSLAV
+DOŠLOV KRSTO
+DOŠLOV SLAVICA
+DOŽIĆ LJILJANA
+DOŽIĆ MARICA
+DOŽIĆ STEVAN
+DOŽIĆ STEVAN
+DOŽIĆ SVETISLAV
+DOŽIĆ VASILJKA
+DOBAN MARČEL
+DOBANOVAČKI ČEDOMIR
+DOBANOVAČKI ALEKSANDAR
+DOBANOVAČKI BORISLAV
+DOBANOVAČKI BRANISLAV
+DOBANOVAČKI DOBRINKA
+DOBANOVAČKI DUŠANKA
+DOBANOVAČKI DUŠANKA
+DOBANOVAČKI DUŠAN
+DOBANOVAČKI IRENA
+DOBANOVAČKI JELKA
+DOBANOVAČKI JULKA
+DOBANOVAČKI JULKICA
+DOBANOVAČKI MAKSIM
+DOBANOVAČKI MILAN
+DOBANOVAČKI MILAN
+DOBANOVAČKI MIRJANA
+DOBANOVAČKI MIRKO
+DOBANOVAČKI PETAR
+DOBANOVAČKI RADOMIR
+DOBANOVAČKI SAVA
+DOBANOVAČKI SAVA
+DOBANOVAČKI-SAVIĆ TINKA
+DOBANOVAČKI STEVAN
+DOBANOVAČKI TINKA
+DOBANOVAČKI ZORICA
+DOBANOVIĆ SOFIJA
+DOBEŠ JOVAN
+DOBI JULIJANA
+DOBIĆ BRANISLAV
+DOBIĆ PETAR
+DOBO ILEŠ
+DOBO JOŽEF
+DOBO JOŽEF
+DOBOŠ JOŽEF
+DOBOŠI ŠANDOR
+DOBOŠI ĐERĐ
+DOBOŠI ERŽEBET
+DOBOŠI JANOŠ
+DOBOŠI LASLO
+DOBOŠI MAGDALENA
+DOBOŠI MARGITA
+DOBOŠI PAL
+DOBOKAI MIHAJLO
+DOBOVIČEK FRANC
+DOBRA IVAN
+DOBRAŠ MILKA
+DOBRAN SLAVKO
+DOBRANIĆ RADOVAN
+DOBRANIĆ VIDOSAVA
+DOBRE BOŽA
+DOBRENOV DUŠAN DIPL ING
+DOBRENOV GRETA
+DOBRENOV JELISAVETA
+DOBRENOV JELISAVETA
+DOBRENOV NIKOLA
+DOBRENOV SANDRA
+DOBRENOV VOJIN
+DOBRETIĆ MARICA
+DOBRIČKI DUŠAN
+DOBRIČKI MARIJA
+DOBRIĆ ŽIVKO
+DOBRIĆ ĐORĐE
+DOBRIĆ BOŠKO
+DOBRIĆ BRANISLAV
+DOBRIĆ ERŽEBET
+DOBRIĆ GOJKO
+DOBRIĆ JOVAN
+DOBRIĆ KOSTA
+DOBRIĆ LJUBICA
+DOBRIĆ MILADIN
+DOBRIĆ MILAN
+DOBRIĆ MILAN
+DOBRIĆ NEGOSAVA
+DOBRIĆ RADISLAV
+DOBRIĆ RADIVOJ
+DOBRIĆ SLOBODAN
+DOBRIĆ STEVAN
+DOBRIĆ UGLJEŠA
+DOBRIĆ VERONIKA
+DOBRIĆ VESNA
+DOBRIĆ ZDRAVKO
+DOBRIJEVIĆ DUŠAN
+DOBRIJEVIĆ PETAR
+DOBRIJEVIĆ SLOBODANKA
+DOBRILOVIĆ RAJKO
+DOBRILOVIĆ RAJKO
+DOBRILOVIĆ SIMA
+DOBRIN DEŽE
+DOBRIN NIKOLA
+DOBRIN OLGA
+DOBRINIĆ DARINKA
+DOBRIVOJEVIĆ DUŠAN
+DOBRIVOJEVIĆ SVETLANA
+DOBRNJAC STOJANKA
+DOBRODEL FRANJO
+DOBRODOLSKI JELENA
+DOBRODOLSKI JULKA
+DOBRODOLSKI VUKICA
+DOBROKES MILENA
+DOBROMIROV ALEKSANDAR
+DOBROMIROV ALEKSANDAR
+DOBROMIROV DUŠAN
+DOBROMIROV EUFIMIJA
+DOBROMIROV NADA
+DOBROMIROV PETAR
+DOBROMIROV VITOMIR
+DOBROMIROV VLADIMIR
+DOBROMIROV VOJISLAV
+DOBROMIROVIĆ PAVLE
+DOBROSAVLJEV LAZAR
+DOBROSAVLJEV LAZAR
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILOVAN
+DOBROSAVLJEV MIRA
+DOBROSAVLJEV PETAR
+DOBROSAVLJEV RADA
+DOBROSAVLJEV RANKO
+DOBROSAVLJEV SAVA
+DOBROSAVLJEV SVETOZAR
+DOBROSAVLJEVIĆ DRENKA
+DOBROSAVLJEVIĆ SLAVKO
+DOBROSAVLJEVIĆ VASA NOVINAR
+DOBROSAVLJEVIĆ VASILIJE
+DOBROSAVLJEVIĆ VASILIJE
+DOBROTA BISERKA
+DOBROTA DAMIR
+DOBROVIĆ ALEKSANDRA
+DOBROVIĆ DAMJANKA
+DOBROVIĆ LJUBOMIR
+DODEROVIĆ MILOSAV
+DODEROVIĆ RADIVOJ
+DODIĆ IVAN
+DODIĆ JELENA
+DODIĆ MILIVOJ
+DODIĆ MIODRAG
+DODIĆ MIODRAG
+DODIĆ SAVA
+DODIĆ SLOBODAN
+DODIĆ STANOJE
+DODIĆ STOJAN
+DODIĆ VERA
+DODIK BARTOL
+DODIK STEVAN
+DODLEK VLADIMIR
+DODOŠ LAZAR
+DOGANDŽIĆ DOBRIVOJE
+DOJČINOVIĆ ĐUJA
+DOJČINOVIĆ ĐURĐICA
+DOJČINOVIĆ BLAGOJE
+DOJČINOVIĆ BOŽIDAR
+DOJČINOVIĆ DUŠAN
+DOJČINOVIĆ JOSIF
+DOJČINOVIĆ MIHAJLO
+DOJČINOVIĆ MIROSLAV DR
+DOJČINOVIĆ RADOSLAV
+DOJČINOVIĆ VLADA
+DOJČINOVSKI VANČA
+DOJDER IVO
+DOJDER JAKOV
+DOJIĆ LAZAR
+DOJKIĆ BOŽIDAR
+DOJKIĆ JULKICA
+DOJKIĆ KSENIJA
+DOJKIĆ MARIJA
+DOJKIĆ MILORAD
+DOJKIĆ MILORAD
+DOJKIĆ MLADEN
+DOJKIĆ MLADEN
+DOJKIĆ PAJA
+DOJKIĆ PETAR DR
+DOJKIĆ PETAR
+DOJKIĆ RAJKO
+DOJKIĆ RAJKO
+DOJKIĆ SLAVKO
+DOJKIĆ VJEKOSLAV
+DOKLEAN ADAM
+DOKMANOVIĆ BORIVOJ
+DOKMANOVIĆ DEJAN
+DOKMANOVIĆ MARIJA
+DOKMANOVIĆ MILICA
+DOKMANOVIĆ NADA
+DOKMANOVIĆ RADIVOJ
+DOKNIĆ VELJKO
+DOKOŠIĆ MARIJA
+DOLAŠ MILOVAN
+DOLENEC FLORIJAN
+DOLGA MILENA
+DOLINAJ ĐURO
+DOLINAJ JAROSLAVA
+DOLINAR LJUBICA
+DOLINGA MARIORA
+DOLINGA NIKOLAJE
+DOLOŠ FRANJA
+DOLOVČAK KATICA
+DOLOVAC ANKICA
+DOLOVAC BISERKA
+DOLOVAC DRAGICA
+DOLOVAC JOVAN
+DOLOVAC LAZAR
+DOLOVAC LAZAR
+DOLOVAC MARIJA
+DOLOVAC MILICA
+DOLOVAC MILOŠ
+DOLOVAC RADIVOJ
+DOLOVAC RADOSLAV
+DOLOVAC RADOSLAV
+DOLOVAC SLAVKO
+DOLOVAC SLAVKO
+DOLOVAC SLOBODAN
+DOLOVAC VELIMIR
+DOLOVAC ZORKA
+DOMASTOVIĆ DANICA
+DOMAZET NIKOLA
+DOMAZET ZORICA
+DOMAZETOV VELIMIR
+DOMAZETOVIĆ ČEDOMIR
+DOMAZETOVIĆ MIRJANA
+DOMAZETOVIĆ MIRJANA
+DOMBI LASLO
+DOMBI RADOJKA
+DOMBI SMILJKA
+DOMINIĆ ANA
+DOMINIĆ NIKOLA
+DOMONJI MARTIN
+DOMONKOŠ EVA
+DOMONKOŠ VILMOŠ
+DOMONKOS IŠTVAN
+DOMOVIĆ MILAN
+DONČEV TODE
+DONČIĆ NADA
+DONAT DRAGUTIN
+DONAT SAVETA
+DONDUR ŽIVKO
+DONDUR DANICA
+DONDUR DARINKA
+DONDUR MILICA
+DONDUR SLAVKO
+DONDUR STANKO
+DONDUR ZDRAVKO
+DONEV TODOR
+DONEVSKI JELENA
+DONEVSKI KRISTINA
+DONIĆ ŽIVOJIN
+DONKOR DŽEMS
+DONSKOV SERGIJE
+DONSKOVA ZOJA DR LEKAR
+DOPUĐ BOŽIDAR
+DOPUĐ BRANKO
+DOPUĐ DUBRAVKA
+DOPUĐ GORAN
+DOPUĐ MARIJA
+DOPUĐ MILAN DR
+DOPUĐ MIROSLAVA
+DOPUĐA ŽIVKO
+DOPUĐA DARA
+DOPUĐA DRAGOMIR
+DOPUĐA SAVA
+DOPUĐA VLADIMIR
+DORČIĆ ALOJZA
+DORČIĆ-BIKIĆ OLGICA
+DORČIĆ BOŽO
+DORČIĆ KLEMENT
+DORČIĆ MARJAN
+DORIĆ ŽARKO
+DORIĆ BILJANA
+DORIĆ BILJANA
+DORIĆ BORISLAV
+DORIĆ FRANJA
+DORIĆ ILIJA
+DORIĆ IRMA
+DORIĆ JOSIP
+DORIĆ PETAR
+DORIĆ STEVAN
+DORIĆ VESELIN
+DORKO SOFIJA
+DORMAN LASLO
+DORO GEZA DR
+DOROŠEV ĐORĐE
+DOROŠKI ĐORĐE
+DOROŠKI BRANKO
+DOROŠKI DESANKA
+DOROŠKI JOVAN DR
+DOROŠKI LJILJANA
+DOROŠKI MARIJA
+DOROŠKI MILAN
+DOROŠKI MILA
+DOROŠKI MIRJANA
+DOROŠKI NIKOLA
+DOROŠKI SIMA
+DOROŠKI VIDOSAVA
+DOROŠKI VUJADIN
+DOROCKI MAHAL
+DOROGHAZI IRINA
+DOROGI ŠANDOR
+DORONJSKI DUŠAN
+DORONJSKI KATARINA
+DOROSLOVAČKI ĐURA
+DOROSLOVAČKI ALEKSANDAR
+DOROSLOVAČKI ANICA
+DOROSLOVAČKI DANICA
+DOROSLOVAČKI GRUJA
+DOROSLOVAČKI JELENA
+DOROSLOVAČKI KSENIJA
+DOROSLOVAČKI MARGITA
+DOROSLOVAČKI MARINA
+DOROSLOVAČKI MARJANA
+DOROSLOVAČKI MIROSLAV
+DOROSLOVAČKI NIKOLA
+DOROSLOVAČKI RADE
+DOROSLOVAČKI SAVETA
+DOROSLOVAČKI STEVANKA
+DOROSLOVAČKI VUJA
+DOROSLOVAČKI VUKA
+DOROSLOVAC BRANISLAVA
+DOROSLOVAC LAZAR
+DOROSLOVAC MARIJA
+DOROSLOVAC MILANA
+DOROSLOVAC MIROSLAV
+DOROSLOVAC PETAR
+DOROSLOVAC ZORAN
+DOROTIĆ ĐORĐE
+DOROTIĆ ĐORĐE
+DOROTIĆ GIZELA
+DOROTIĆ GORDAN
+DOROTIĆ-GUTEŠA LEONA
+DOROTIĆ ILA MR PROF
+DOROTIĆ MARIJA
+DOROTIĆ STEVAN
+DOROTKA DRAGAN
+DOROTKA MILOŠ
+DOSTAN ANA
+DOSTAN ARPAD
+DOSTAN DARINKA
+DOSTAN IŠTVAN
+DOSTAN JOŽEF
+DOSTAN LADISLAV
+DOSTAN PETAR
+DOSTAN STEVAN
+DOSTAN TIBOR
+DOSTANIĆ DRAGICA
+DOSTANIĆ RADMILO
+DOSTANIĆ VOISLAV
+DOSTANJ JOSIP
+DOSTANJ ROZALIJA
+DOSTIĆ SLAVKO
+DOSTIĆ SOFIJA
+DOTLIĆ ŽIVKO
+DOTLIĆ BOŠKO
+DOTLIĆ BORISLAV
+DOTLIĆ DOBRILA
+DOTLIĆ DUŠAN
+DOTLIĆ LAZAR
+DOTLIĆ LAZAR
+DOTLIĆ LUKA
+DOTLIĆ SAVA
+DOTLIĆ SOFIJA
+DOTLIĆ VASA
+DOTOV DRAGO
+DOVAT PAVLE DR
+DOVAT VLADIMIR
+DOVATOV ADAM
+DOVEDEN BORISLAV
+DOVGAN JOSIP
+DOVIJAROV MILOŠ
+DOVIJAROV RADIVOJ
+DOVIJARSKI BRANKA
+DOVIJARSKI MILENA
+DOVIJARSKI STANIMIR
+DOVNIKOVIĆ LAZAR
+DOZET ĐORĐE
+DOZET BOŽO
+DOZET DRAGICA
+DOZET ILIJA
+DOZET JASNA
+DOZET JULKICA
+DOZET LJUBICA
+DOZET LJUBOMIR
+DOZET MIHAJLO
+DOZET MILAN
+DOZET MILOVAN
+DOZET NIKOLA
+DOZET RADE
+DOZET RADMILA
+DOZET RADOSLAVKA
+DOZET SAVKA
+DOZET STANKO
+DRČA ANA
+DRČA BRANKO
+DRČA DRAGICA
+DRČA JANKO
+DRČA MILAN
+DRČA RATKO
+DRČA SLAVKO
+DRČA STEVAN
+DRČA-URGEN MARIJA
+DRČA VLATKO
+DRČELIĆ DOBRISAV
+DRČELIĆ MIRJANA
+DRŽAJIĆ DIMITRIJE PROFESOR
+DRŽIĆ ILIJA
+DRAČA ŽIVKO
+DRAČA ĐORĐE
+DRAČA ACA
+DRAČA DUBRAVKA
+DRAČA MILE
+DRAČA PETAR DR
+DRAČA PETAR
+DRAČA SPASENKA
+DRAČA TOMO DR
+DRAČIN KOSTA
+DRAŠIĆ NATALIJA
+DRAŠKO JELKA
+DRAŠKO MILOVAN
+DRAŠKO SLOBODAN
+DRAŠKOVIĆ BRANKO DIPL OEC
+DRAŠKOVIĆ DRAGA
+DRAŠKOVIĆ DUŠAN
+DRAŠKOVIĆ LJUBOMIR
+DRAŠKOVIĆ MIHAJLO
+DRAŠKOVIĆ MILOMIR
+DRAŠKOVIĆ MILORAD
+DRAŠKOVIĆ NENAD
+DRAŠKOVIĆ SAVO
+DRAŠKOVIĆ SLOBODANKA
+DRAŠKOVIĆ SLOBODAN
+DRAŠKOVIĆ SRETEN
+DRAŽETA MILENKO
+DRAŽETA STEVAN
+DRAŽETIN DUŠAN
+DRAŽETIN MLADEN
+DRAŽIĆ ŽARKO
+DRAŽIĆ ĐORĐE
+DRAŽIĆ ĐORĐE
+DRAŽIĆ ALEKSANDAR
+DRAŽIĆ BOGDAN
+DRAŽIĆ BUDO
+DRAŽIĆ DOBRIVOJ
+DRAŽIĆ DRAGOLJUB
+DRAŽIĆ DUŠAN
+DRAŽIĆ DUŠAN
+DRAŽIĆ EMIL
+DRAŽIĆ GORDANA
+DRAŽIĆ ILIJA
+DRAŽIĆ ILIJA
+DRAŽIĆ IRENA
+DRAŽIĆ JAŠA
+DRAŽIĆ JELICA
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ KATICA
+DRAŽIĆ KOSTA
+DRAŽIĆ LAZAR
+DRAŽIĆ LJUBICA
+DRAŽIĆ MARIJA
+DRAŽIĆ MILAN
+DRAŽIĆ MILAN
+DRAŽIĆ MILENKO
+DRAŽIĆ MILENKO
+DRAŽIĆ MILINKO DIPL ING
+DRAŽIĆ MILORAD
+DRAŽIĆ MILORAD
+DRAŽIĆ MILORAD
+DRAŽIĆ MIRA
+DRAŽIĆ MITA
+DRAŽIĆ NATALIJA
+DRAŽIĆ NATALIJA
+DRAŽIĆ NESTOR
+DRAŽIĆ NEVENKA
+DRAŽIĆ NIKOLA
+DRAŽIĆ NIKOLA
+DRAŽIĆ OSTOJA
+DRAŽIĆ PETAR
+DRAŽIĆ RADOVAN
+DRAŽIĆ RELJA
+DRAŽIĆ SLAVKO
+DRAŽIĆ SOFIJA
+DRAŽIĆ STANKO
+DRAŽIĆ STEVAN
+DRAŽIĆ STEVAN
+DRAŽIĆ SUZANA
+DRAŽIĆ TOMISLAV
+DRAŽIĆ VELINKA
+DRAŽIĆ VERA
+DRAŽIĆ VERA
+DRAŽIĆ VERA
+DRAŽIĆ ZLATKO
+DRAŽILOVIĆ STANIŠA
+DRAŽIN BORISLAV
+DRAGAŠ ĐORĐE
+DRAGAŠ ĐURO
+DRAGAŠ BORISLAV
+DRAGAŠ BRANKO
+DRAGAŠ DRAGOMIR
+DRAGAŠ IVAN
+DRAGAŠ KATICA
+DRAGAŠ-KOVAČ LJUBICA
+DRAGAŠ LEPOSAVA
+DRAGAŠ LJUBICA
+DRAGAŠ LJUBICA
+DRAGAŠ MANOJLO
+DRAGAŠ MILAN
+DRAGAŠ MILENKO
+DRAGAŠ MIRA
+DRAGAŠ MIRJANA
+DRAGAŠ MOMČILO
+DRAGAŠ RADIVOJ
+DRAGAŠ RADOMIR
+DRAGAŠ SPOMENKA
+DRAGAŠ SVETLANA
+DRAGAŠ ZORAN
+DRAGAŠEV VLADIMIR
+DRAGAN MILENA
+DRAGANIĆ DRAGA
+DRAGANIĆ JANKO
+DRAGANIĆ MIHAJLO
+DRAGANIĆ MILICA DR
+DRAGANIĆ MILKA
+DRAGANIĆ MIRKO
+DRAGANIĆ MIROSLAV
+DRAGANIĆ NADEŽDA
+DRAGANIĆ RANKO
+DRAGANIĆ VIDA
+DRAGANIĆ ZEKO
+DRAGANOV MILOŠ
+DRAGANOV OLGA
+DRAGANOV SLOBODAN
+DRAGANOV STOJANKA
+DRAGANOVIĆ SLAVKO
+DRAGELJEVIĆ DUŠAN
+DRAGELJEVIĆ JOVAN
+DRAGIČEVIĆ ADAM
+DRAGIČEVIĆ ALEKSANDAR
+DRAGIČEVIĆ BORISLAV
+DRAGIČEVIĆ GOJKO
+DRAGIČEVIĆ ILINKA
+DRAGIČEVIĆ IVKA
+DRAGIČEVIĆ KREŠIMIR
+DRAGIČEVIĆ LAZAR
+DRAGIČEVIĆ LJUBICA
+DRAGIČEVIĆ LJUBOMIR
+DRAGIČEVIĆ MILJA
+DRAGIČEVIĆ MILOŠ
+DRAGIČEVIĆ MIRKO
+DRAGIČEVIĆ RADENKO
+DRAGIČEVIĆ SPASA
+DRAGIČEVIĆ SRETEN
+DRAGIČEVIĆ VOJIN
+DRAGIČEVIĆ VOJISLAV
+DRAGIČEVIĆ ZORAN
+DRAGIŠA ŽARKO
+DRAGIŠIĆ BOGDAN
+DRAGIŠIĆ BORISLAVKA
+DRAGIŠIĆ JOVANKA
+DRAGIŠIĆ NIKOLA
+DRAGIŠIĆ PETAR
+DRAGIŠIĆ RADE
+DRAGIĆ ČEDOMIR
+DRAGIĆ ŽELJKO
+DRAGIĆ ĐORĐE
+DRAGIĆ ANA
+DRAGIĆ BRANKO
+DRAGIĆ DUŠAN
+DRAGIĆ DUŠAN
+DRAGIĆ ELVIRA
+DRAGIĆ ILIJA
+DRAGIĆ ILIJA
+DRAGIĆ ILIJA
+DRAGIĆ JELENA
+DRAGIĆ LJUBIŠA
+DRAGIĆ LJUBIŠA
+DRAGIĆ MARIJANA
+DRAGIĆ MILENKO
+DRAGIĆ MILIVOJE
+DRAGIĆ MILKA
+DRAGIĆ MILORAD
+DRAGIĆ NADA
+DRAGIĆ NEDELJKO
+DRAGIĆ NEVENKA
+DRAGIĆ NIKOLA
+DRAGIĆ OBRAD
+DRAGIĆ PAULA
+DRAGIĆ PAVLE
+DRAGIĆ PERA
+DRAGIĆ PETAR
+DRAGIĆ PETAR
+DRAGIĆ RANKO
+DRAGIĆ SAVA
+DRAGIĆ SLAVKO
+DRAGIĆ SPASOJE
+DRAGIĆ STEVAN
+DRAGIĆ STEVAN
+DRAGIĆ TOMISLAV
+DRAGIĆ VERA
+DRAGIĆ VESNA
+DRAGIĆEVIĆ BOGICA
+DRAGIĆEVIĆ BORISLAV
+DRAGIĆEVIĆ BRANISLAV
+DRAGIĆEVIĆ RAJICA
+DRAGIN ŽARKO
+DRAGIN BOGDAN
+DRAGIN BORIVOJ
+DRAGIN DANILO
+DRAGIN DESANKA
+DRAGIN DUŠKO
+DRAGIN GORDANA
+DRAGIN JOVAN DIPL ING
+DRAGIN JOVO DIPL ING
+DRAGIN LAZAR
+DRAGIN MARKO
+DRAGIN MIODRAG
+DRAGIN MIODRAG
+DRAGIN NIKOLA
+DRAGIN PETRIJA
+DRAGIN RADIVOJ
+DRAGIN RISTO
+DRAGIN SAŠA
+DRAGIN SOKICA
+DRAGIN STEVAN
+DRAGIN SVETISLAV
+DRAGIN VASA
+DRAGIN VOJISLAV
+DRAGIN ZORAN
+DRAGINČIĆ DUŠAN
+DRAGINČIĆ SLAVKO
+DRAGOŠEV DRAGAN
+DRAGOJEVIĆ ŽELJKO
+DRAGOJEVIĆ ANĐELKO
+DRAGOJEVIĆ BOŠKO
+DRAGOJEVIĆ BRANISLAV
+DRAGOJEVIĆ DARINKA
+DRAGOJEVIĆ DRAGUTIN
+DRAGOJEVIĆ GOJKO
+DRAGOJEVIĆ HRISTINA
+DRAGOJEVIĆ LJUBOMIR
+DRAGOJEVIĆ MILENA
+DRAGOJEVIĆ MILENKO
+DRAGOJEVIĆ MILENKO
+DRAGOJEVIĆ MILICA
+DRAGOJEVIĆ MILORAD
+DRAGOJEVIĆ NIKOLA
+DRAGOJEVIĆ RADIŠA
+DRAGOJEVIĆ STEVAN
+DRAGOJEVIĆ ZLATANA
+DRAGOJLOV ANKICA
+DRAGOJLOV BOŠKO
+DRAGOJLOV DUŠAN
+DRAGOJLOV DUBRAVKA
+DRAGOJLOV GAVRA
+DRAGOJLOV LAZAR
+DRAGOJLOV MARGITA
+DRAGOJLOV MILOŠ
+DRAGOJLOV MILOŠ
+DRAGOJLOV MIROSLAV
+DRAGOJLOV VOJISLAV
+DRAGOJLOVIĆ DUŠKO
+DRAGOJLOVIĆ LAZAR
+DRAGOJLOVIĆ MARA
+DRAGOJLOVIĆ MILAN
+DRAGOJLOVIĆ MILAN
+DRAGOJLOVIĆ ZORICA
+DRAGOLJEVIĆ GOJKO
+DRAGOLJEVIĆ MARINKO
+DRAGOLJEVIĆ MITAR
+DRAGOLJEVIĆ RANKO
+DRAGOLJEVIĆ SEKULA
+DRAGOLJEVIĆ STOJAN
+DRAGOLJEVIĆ VLADE
+DRAGOMIROVIĆ ĐOKA
+DRAGOMIROVIĆ DIMITRIJE
+DRAGOMIROVIĆ DRAGICA
+DRAGOMIROVIĆ IVAN
+DRAGOMIROVIĆ LJUBICA
+DRAGOMIROVIĆ SAVA
+DRAGOMIROVIĆ TODOR
+DRAGOSAVAC ANGELINA
+DRAGOSAVAC ILIJA
+DRAGOSAVAC KATICA
+DRAGOSAVAC MELANIJA
+DRAGOSAVAC MILANKO
+DRAGOSAVAC MILORAD
+DRAGOSAVAC NIKOLA
+DRAGOSAVAC ZUZANA
+DRAGOSAVLJEVIĆ ĐURA
+DRAGOSAVLJEVIĆ LJILJANA
+DRAGOSAVLJEVIĆ MARIJA
+DRAGOSAVLJEVIĆ MIRJANA
+DRAGOSAVLJEVIĆ MLADEN
+DRAGOSAVLJEVIĆ STEVA DIPL ING
+DRAGOSAVLJEVIĆ STOJŠA
+DRAGOSAVLJEVIĆ VOJA
+DRAGOSLAVIĆ VIDAK
+DRAGOVAC SLAVKO
+DRAGOVIĆ ČEDO
+DRAGOVIĆ BUDIMIR
+DRAGOVIĆ DRAGAN
+DRAGOVIĆ GOJKO
+DRAGOVIĆ GORDANA
+DRAGOVIĆ JASMINKA
+DRAGOVIĆ JOVANKA
+DRAGOVIĆ MILAN
+DRAGOVIĆ MILIĆ
+DRAGOVIĆ MILICA
+DRAGOVIĆ MIRA
+DRAGOVIĆ RANKO
+DRAGOVIĆ SNIJEŽANA
+DRAGOVIĆ STAMENKA
+DRAGOVIĆ SVETIMIR
+DRAGOVIĆ SVETOMIR
+DRAGOVIĆ VERA
+DRAGOVIĆ VIDAK
+DRAGOVIĆ VLADA
+DRAGOVIĆ ZORAN
+DRAGUMILO MILOMIR
+DRAGUMILO MILUTIN
+DRAGUNOVIĆ BORISLAV
+DRAGUNOVIĆ PERO
+DRAGUTINOVIĆ ŽIVKA
+DRAGUTINOVIĆ MILAN
+DRAGUTINOVIĆ PREDRAG
+DRAGUTINOVIĆ ZORAN
+DRAH JELISAVETA
+DRAH JELISAVETA
+DRAHOTUSKI BORISLAV
+DRAHOTUSKI PETAR
+DRAKIĆ DRAGIŠA
+DRAKIĆ SLOBODAN DR
+DRAKUL VASO
+DRAKULA DUŠAN
+DRAKULA RADMILA
+DRAKULIĆ ALEKSANDAR
+DRAKULIĆ BRANISLAV
+DRAKULIĆ DRAGOMIR DR STOMATOLOG
+DRAKULIĆ DRAGOMIR
+DRAKULIĆ ERŽEBET
+DRAKULIĆ JELENA
+DRAKULIĆ JOVAN
+DRAKULIĆ KOSTA
+DRAKULIĆ LAZAR
+DRAKULIĆ LJUBICA
+DRAKULIĆ MARA
+DRAKULIĆ MARA
+DRAKULIĆ MILAN
+DRAKULIĆ MILAN
+DRAKULIĆ MILAN
+DRAKULIĆ MILIVOJ
+DRAKULIĆ MIROSLAV
+DRAKULIĆ PREDRAG
+DRAKULIĆ SMILJA
+DRAKULIĆ SOFIJA
+DRAKULIĆ STEVAN
+DRAKULIĆ STOJANKA
+DRAKULIĆ SVETISLAV
+DRAKULIĆ SVETOZAR
+DRAKULIĆ SVETOZAR
+DRAKULIĆ TODOR
+DRAKULIĆ ZORAN
+DRAPŠIN ČAVA
+DRAPŠIN ĐORĐE
+DRAPŠIN DANICA
+DRAPŠIN LEPOSAVA
+DRAPŠIN MILAN
+DRAPŠIN MILENKO
+DRAPŠIN PETAR
+DRAPŠIN PREDRAG
+DRAPŠIN SAVA
+DRAPŠIN ZAGORKA
+DRAPŠIN ZORAN
+DRAPIĆ BOGDAN
+DRAPIĆ SENITA
+DRAPIĆ SLOBODAN
+DRAPIĆ VELIMIR
+DRAPOŠ STEVAN
+DREŠKAI ŠANDOR
+DRECUN VELJKO
+DREHER LAJOŠ
+DREHER NIKOLA
+DREHER OTO
+DREHER VILIM DIPL ING
+DREKOVIĆ ĐURO
+DREKOVIĆ KATICA
+DREKOVIĆ ZORAN
+DREMPETIĆ DARKO
+DREMPETIĆ PETAR
+DREMPETIĆ ZDENKO
+DRENJAKOVIĆ JELICA
+DRENKOVIĆ LASLO
+DRENOVČANIN LJUBOMIR
+DRENOVAC RANKO
+DRENOVEC CVETO
+DRETAR MIRKO
+DREZGA JAKOV
+DREZGA TODOR
+DREZGIĆ DARA
+DREZGIĆ ILIJA
+DREZGIĆ MARIJA
+DREZGIĆ MILAN
+DREZGIĆ RADIVOJ
+DREZGIĆ SVETLANA
+DREZGIĆ VLADIMIR
+DRIGULOV SPASOJE
+DRINČEVIĆ ŽIVOTA
+DRINČEVIĆ DESANKA DR
+DRINČIĆ MELANIJA
+DRINČIĆ MILOJKO
+DRINČIĆ RADMILA
+DRINIĆ ALEKSANDAR
+DRINIĆ BORISLAV
+DRINIĆ JAGODA
+DRINIĆ MILAN
+DRINIĆ MILENKO
+DRINIĆ MILETA
+DRINIĆ MILOVAN
+DRINIĆ MIRKO
+DRINIĆ NEDELJKO
+DRINIĆ PERO
+DRINIĆ RADMILA
+DRINIĆ SAVO
+DRINIĆ SLAVICA
+DRINIĆ STEVO
+DRINIĆ TOMO
+DRINIĆ ZDRAVKO
+DRINJOVSKI ALEKSANDAR
+DRINJOVSKI VOJISLAV
+DRK BARBARA
+DRKUŠIĆ ILIJA
+DRLJAČA ĐORĐE
+DRLJAČA ĐORĐE
+DRLJAČA BRANKA
+DRLJAČA DRAGAN
+DRLJAČA DUŠAN
+DRLJAČA MARKO
+DRLJAČA MIĆA
+DRLJAČA MILANKO
+DRLJAČA MILORAD
+DRLJAČA MIRKO
+DRLJAČA NEĐO
+DRLJAČA NENAD
+DRLJAČA RADOVAN
+DRLJAČA RADOVAN
+DRLJAČA STOJA
+DRLJAČA ZDRAVKA
+DRLJAČIĆ KATA
+DRLJEVIĆ ĐURO
+DRLJEVIĆ ANICA
+DRLJEVIĆ JOVANKA
+DRLJEVIĆ MILETA
+DRLJEVIĆ MILJA
+DRLJEVIĆ MIRJANA
+DRLJIĆ MILADIN
+DRLJIĆ PREDRAG
+DRMANAC MIROSLAV
+DRMANAC STANKO
+DRMANOVIĆ MILEVA
+DRNDAREVIĆ BORA
+DRNDAREVIĆ BORA
+DRNDAREVIĆ KATICA
+DRNDARSKI MILAN
+DRNDARSKI VELIMIR
+DROBAC ŽARKO
+DROBAC ŽARKO
+DROBAC ĐORĐE
+DROBAC ANA
+DROBAC BRANISLAV
+DROBAC LJILJANA
+DROBAC MILAN
+DROBAC MILAN
+DROBAC MILORAD
+DROBAC MIROSLAV
+DROBAC NENAD
+DROBAC NIKOLA
+DROBAC PREDRAG
+DROBAC RADOJKA
+DROBAC RADOJKA
+DROBAC SLAVKO
+DROBAC VLADO
+DROBAC VUKAŠIN NOVINAR
+DROBAC ZDRAVKO
+DROBINA JULIJANA
+DROBINA LJUBICA
+DROBINA MIHALJ
+DROBINJAK RUŽA
+DROBNJAK EVICA
+DROBNJAK LJILJANA
+DROBNJAK MILIVOJE
+DROBNJAK MIODRAG
+DROBNJAK MOMČILO
+DROBNJAK RADIŠA
+DROBNJAK RADOJICA
+DROBNJAK RADOJICA
+DROBNJAKOVIĆ DUŠAN
+DROBNJAKOVIĆ GVOZDEN
+DROBNJAKOVIĆ RISTIVOJE
+DROBNJIK JOSIP
+DROBNJIK JUDIT
+DRONJAK ŽIVANA
+DRONJAK ŽIVKO
+DRONJAK ĐORĐE
+DRONJAK DARINKA
+DRONJAK MILAN
+DRONJAK MIRJANA
+DRONJAK OLGA
+DRONJAK RASTKO
+DRONJAK SAVINKA
+DRONJAK STEVAN
+DROPKA ARPAD
+DROPKA JELENA
+DROPKA NATAŠA
+DROPKA STEVAN
+DROPO MILKA
+DROPO VASA
+DROPO ZORAN
+DROZDIK ILONA
+DROZDIK MARIJA
+DRUŽETIĆ ŽIKA
+DRUGOVIĆ RUŽICA
+DRUGOVIĆ RUŽICA
+DRVENDŽIJA RADOVAN
+DRVENDŽIJA SLAVKO
+DRVENJAK VERICA
+DUČEVIĆ VASILIJE
+DUČIĆ MILAN
+DUČIĆ SLOBODAN
+DUŠANIĆ DRAGAN
+DUŠANIĆ LAZAR
+DUŠANIĆ LJUBICA
+DUŠANIĆ NADA
+DUŠANIĆ NENAD
+DUŠANOVIĆ STANOJE
+DUŠANOVIĆ ZVEZDANA
+DUŠEK ZLATKO DIPL OEC
+DUŠIĆ BRANKO
+DUŠIĆ ZORAN
+DUĆAK ANDRIJA
+DUĆAK ARANKA
+DUĆAK BARBARA
+DUĆAK MIHAJLO
+DUĆAK TOMA
+DUĐAK DRAGUTIN
+DUĐIK FRANJA
+DUBAIĆ BOŽIDAR
+DUBAIĆ MILAN
+DUBAIĆ MIRKO
+DUBAJIĆ ŽARKO
+DUBAJIĆ ĐURA
+DUBAJIĆ ALEKSANDAR
+DUBAJIĆ BILJANA
+DUBAJIĆ DRAGAN
+DUBAJIĆ MILICA
+DUBAJIĆ MILOŠ
+DUBAJIĆ MIRKO
+DUBAJIĆ VIDA
+DUBLJEVIĆ SLOBODAN
+DUBLJEVIĆ STOJAN
+DUBLJEVIĆ VOJISLAV
+DUBLJEVIĆ ZLATA
+DUBNJAKOVIĆ MARTA
+DUBOVSKA MILOTA
+DUBOVSKI JANKO
+DUBOVSKI KATICA
+DUBRAVAC DUŠAN
+DUBROJA DANICA
+DUBROJA SLOBODAN
+DUCANOVIĆ BOŠKO
+DUCIĆ MILAN
+DUDA PAVLE
+DUDAŠ ĐURA
+DUDAŠ ĐURA
+DUDAŠ ĐURA
+DUDAŠ ANA
+DUDAŠ ANTAL
+DUDAŠ ARPAD
+DUDAŠ ARPAD
+DUDAŠ BORIS
+DUDAŠ HELENA
+DUDAŠ JANOŠ
+DUDAŠ JULIJAN
+DUDAŠ LAZAR
+DUDAŠ MARINKO
+DUDAŠ MIHALJ
+DUDAŠ PIROŠKA
+DUDAŠ ROMAN
+DUDAŠ SLAVOMIR
+DUDAK JAROSLAV
+DUDAK MARIJA
+DUDAK STEVAN
+DUDAN MILIVOJ
+DUDAR NIKOLA
+DUDARIN ŽARKO
+DUDARIN DRAGAN
+DUDARIN SAVA
+DUDARIN STEVAN
+DUDARIN STEVAN
+DUDARIN VESELIN
+DUDARIN ZORAN
+DUDARIN ZORAN
+DUDIĆ ANICA
+DUDIĆ KOSTA
+DUDIĆ KOSTA
+DUDIĆ MATE
+DUDIĆ MILA
+DUDIĆ MILE
+DUDIĆ MILOŠ
+DUDIĆ MILOŠ
+DUDIĆ NADA
+DUDIĆ SVETOZAR
+DUDIĆ VASA
+DUDIĆ VASA
+DUDIĆ VERICA
+DUDIĆ ZORAN
+DUDOJEVIĆ NEDŽAD
+DUDOK DANIEL DR
+DUDOK JANKO
+DUDOK PAVEL
+DUDUKOVIĆ ALEKSANDAR
+DUDUKOVIĆ SLOBODAN
+DUDUKOVIĆ STEVAN
+DUDVARSKI BOŽIDAR
+DUDVARSKI DRAGOLJUB
+DUDVARSKI IVAN
+DUDVARSKI PAJA
+DUDVARSKI VELINKA
+DUGAJLIĆ ANĐELKA
+DUGAJLIĆ ARJANA
+DUGAJLIĆ MILOŠ
+DUGAJLIĆ RADOVAN
+DUGALIĆ DRAGAN
+DUGANDŽIJA BRANKO
+DUGANDŽIJA DRAGOMIR
+DUGANDŽIJA DUŠAN
+DUGANDŽIJA NEDELJKO
+DUGIN STOJAN
+DUGOŠIJA ŽIVKO
+DUGOŠIJA-MAKSIMOVIĆ NADA
+DUGONJIĆ MILE
+DUGONJIĆ MILUTIN
+DUGONJIĆ NIKOLA
+DUGONJIĆ SVETOMIR
+DUH KATARINA
+DUHAČEK VLADO
+DUIĆ JOSIP
+DUJAKOVIĆ MILENA
+DUJAKOVIĆ MILICA
+DUJAKOVIĆ NOVA
+DUJAKOVIĆ VELJKO
+DUJEVSKI VANGEL DR
+DUJIĆ ĐORĐE
+DUJIĆ IVAN
+DUJIĆ IVICA
+DUJIĆ LJUBICA
+DUJIĆ SLOBODAN
+DUJIĆ SLOBODAN
+DUJIĆ SLOBODAN
+DUJIĆ SMILJA
+DUJIĆ STOJANKA
+DUJIN ŽIVA
+DUJIN ŽIVKO
+DUJIN DANICA
+DUJIN LUKA
+DUJIN SIMEON
+DUJIN SVETISLAV
+DUJIN TEODOR
+DUJIN VITOMIR
+DUJKIĆ VLADISLAV
+DUJKOVIĆ BRANKO
+DUJKOVIĆ PETAR
+DUJKOVIĆ TEODOR
+DUJKOVIĆ VLADIMIR
+DUJLOVIĆ BORA
+DUJMIĆ ANTE
+DUJMOVIĆ ELIZABETA
+DUJMOVIĆ EVA
+DUJMOVIĆ FERENC
+DUJMOVIĆ JOSIP
+DUJOVIĆ ILIJA
+DUJOVIĆ RADMILA
+DUJOVIĆ RADMILA
+DUKA MIROSLAV
+DUKAI ANDRAŠ
+DUKAN NATAŠA
+DUKARIĆ VIDA
+DUKES FOSKA
+DUKIĆ ĐURO
+DUKIĆ BORA
+DUKIĆ DANILO
+DUKIĆ DRAGAN
+DUKIĆ DRAGICA
+DUKIĆ DUŠAN
+DUKIĆ IVANKA
+DUKIĆ JELENA
+DUKIĆ JOVAN
+DUKIĆ JOVAN
+DUKIĆ KOSA
+DUKIĆ LJUBICA
+DUKIĆ MILAN
+DUKIĆ MILAN
+DUKIĆ MILAN
+DUKIĆ MILICA
+DUKIĆ MILICA
+DUKIĆ MIRJANA
+DUKIĆ PREDRAG
+DUKIĆ RADE
+DUKIĆ RADE
+DUKIĆ RAJKO
+DUKIĆ SLAVICA
+DUKIĆ SOFIJA
+DUKIĆ STEVO DIPL ING
+DUKIĆ VUKAŠIN DR
+DUKIĆ ZORAN
+DUKOVA LILI
+DUKOVSKI SVETISLAV
+DULEJAN ŽIVADINKA
+DULEJAN SLAVKO
+DULIĆ ŠANDOR
+DULIĆ ANKA
+DULIĆ IVAN
+DULIĆ JOSIP
+DULIĆ JOSIP
+DULIĆ LJUDEVIT
+DULIĆ MAGDA
+DULIĆ MIHAJLO
+DULIĆ MIROSLAV
+DULIĆ NIKOLA
+DULOVIĆ ANĐELKO
+DULOVIĆ BOGDAN
+DULOVIĆ BRANKO
+DULOVIĆ DUŠAN
+DULOVIĆ MILOVAN
+DULOVIĆ MILUN
+DULOVIĆ RADOVAN
+DULOVIĆ RANKO
+DULOVIĆ RATKA
+DULOVIĆ ZORAN
+DUMA MILORAD
+DUMANČIĆ SLAVICA
+DUMANČIĆ ZDRAVKO
+DUMANOVIĆ MLADEN
+DUMEDAŠ SPASOJE
+DUMEDAŠ VASILIJE
+DUMENČIĆ IVAN
+DUMIĆ SLAVICA
+DUMIĆ STEVAN DIPL ING
+DUMITROV ALEKSANDAR
+DUMITROV DIMITRIJE
+DUMITROV LUKA
+DUMITROV MARIJA
+DUMITROV MIODRAG
+DUMITROV NEDELJKO
+DUMITROV SLAVKO
+DUMITROV VERICA
+DUMITROV VOJIN
+DUMNIĆ ŠARIKA
+DUMNIĆ MILAN
+DUMONIĆ BRANKO
+DUMONIĆ PETAR
+DUNĐER RADE
+DUNĐER RADE
+DUNĐERIN ĐORĐE
+DUNĐEROV KOSANA
+DUNĐEROV NADA
+DUNĐEROV PIROŠKA
+DUNĐEROVIĆ RADOVAN
+DUNĐERSKI ŽIVAN
+DUNĐERSKI ĐORĐE
+DUNĐERSKI ĐORĐE
+DUNĐERSKI ALEKSANDAR
+DUNĐERSKI ANA
+DUNĐERSKI CVETANA
+DUNĐERSKI DRAGAN
+DUNĐERSKI IVANKA
+DUNĐERSKI IVAN
+DUNĐERSKI JOVAN
+DUNĐERSKI MARIJA
+DUNĐERSKI MILAN
+DUNĐERSKI MIRJANA
+DUNĐERSKI NOVAK
+DUNĐERSKI SIMA
+DUNĐERSKI SOFIJA
+DUNĐERSKI STANISLAV
+DUNĐERSKI TIHOMIR
+DUNĐERSKI TRIVA
+DUNĐERSKI ZDRAVKO
+DUNDIĆ HARALAMPIJE
+DUNDIĆ JELENA
+DUNDIĆ SLAVKO
+DUNDOVIĆ STJEPAN
+DUNIĆ DRAGIĆ
+DUNJIĆ STOJAN
+DUNOVIĆ MILKA
+DUNOVIĆ NATAŠA
+DUPAK IMRE
+DUPAK MARIJA
+DUPALO SLAVKA
+DUPOR GORDANA
+DUPOR MILOŠ
+DUPOR MIRKO
+DUPOR ZORICA
+DURAČKOVIĆ BAHRIJA
+DURAČKOVIĆ SENIJA
+DURAKOVIĆ ĐURO
+DURAKOVIĆ DRAGAN
+DURAKOVIĆ GOJKO
+DURAKOVIĆ GOJKO
+DURAN BRANKO
+DURANOVIĆ VLADIMIR
+DURGUTOVIĆ RIFAD
+DURKALIĆ VIKTOR
+DURKOVIĆ MILORAD
+DURKOVIĆ VLAJKO
+DURKULIĆ ALEKSANDAR
+DURKULIĆ SPASOJE
+DURLEVIĆ MILICA
+DURMAN DRAGOLJUB
+DURMAN GOJKO
+DURMAN NADA
+DURMAN RASTISLAV
+DUROŠKA ŠANDOR
+DUROŠKA IVANKA
+DUROŠKA JELENA
+DUROŠKA MIHAJLO
+DUROŠKI JULIJANA
+DURUŠKA PAL
+DURUTOVIĆ DRAGAN
+DURUTOVIĆ RADOVAN
+DURUTOVIĆ SENKA
+DUSIĆ GOSPAVA
+DUSPARA MILENA
+DUSPER ŠIMO
+DUTINA ANDRIJA
+DUTINA BRANISLAV
+DUTINA BRATOLJUB
+DUTINA DRAGAN
+DUTINA IRENA
+DUTINA MIOMIR
+DUTINA SLOBODAN
+DUTINA VLADIMIR
+DUVNJAK DIVNA
+DUVNJAK DIVNA
+DUVNJAK IVICA
+DUVNJAK KOSTA
+DUVNJAK LAZAR
+DUVNJAK LAZAR
+DUVNJAK MARA
+DUVNJAK MILENKO
+DUVNJAK MILORAD
+DUVNJAK NENAD
+DUVNJAK RADOJKA
+DUVNJAK STANA
+DVORAČKO ŠANDOR
+DVORNIĆ MIRJANA
+EŠKI ERŽEBET
+EŠKIČEVIĆ VASA
+EĆIM RADOVAN
+EĆIMOVIĆ GOJKO
+EĆIMOVIĆ NIKOLA
+EĆIMOVIĆ VESELIN
+EĐEDI JOŽEF
+EĐEDI JULIJANA
+EBENHE-JOVANOVIĆ JASNA DR
+EBENHE NIKOLA
+EBERHARD-MARKOVIĆ MIRJANA
+EBERHART PETAR
+EBERST-SEDLAČEK GABRIELA
+ECET JOVAN
+ECET JOVAN
+ECET KATALIN
+ECET PAL
+EDELENJI MARIJA
+EDELINSKI EUGEN
+EDELINSKI JOAKIM
+EDELINSKI LJUBICA
+EDELINSKI VERA
+EDELINSKI VERA
+EFTEMIJU NIKOLA
+EGELJA MILICA
+EGELJA NEBOJŠA
+EGERIĆ MIROSLAV DR
+EGIĆ ČEDMILA
+EGIĆ ĐOKA
+EGIĆ BRACO
+EGIĆ BRANISLAV
+EGIĆ CVETANKA
+EGIĆ DRAGAN
+EGIĆ MANE
+EGIĆ MARIJAN
+EGIĆ MICA
+EGIĆ MILAN
+EGIĆ MILAN
+EGIĆ OLGA
+EJIĆ MILAN
+EKEŠ ALEKSANDAR
+EKHARDT LJUBICA
+EKLIĆ MARJAN
+EKMEŠČIĆ MILISAV
+EKMEDŽIĆ ANKA
+EKMEDŽIĆ NIKOLA
+EKRES ĐORĐE
+EKRES ANDRIJA
+EKRES JANOŠ
+EKRES JULIJANA
+EKRES MILKA
+EKRES NANDOR
+EKRES OTO
+EKRES-RAKIĆ VERICA
+EKRES ROZALIJA
+EKRES VALERIJA
+ELEK EVA
+ELERO ZVEZDANA
+ELESIN BRANISLAV
+ELESIN BRANKA
+ELESIN DRAGA
+ELESIN DRAGOLJUB
+ELESIN DUŠANKA
+ELESIN GRADIMIR
+ELESIN MIROSLAV
+ELESIN SAVA
+ELESIN SINIŠA
+ELESIN VLADIMIR
+ELEZ ĐOKA
+ELEZ GORAN
+ELEZOVIĆ NIKOLA
+ELEZOVIĆ PETAR
+ELHART LAZAR
+ELHART LAZAR
+ELIAS IRENA
+ELIJAŠ JAN
+ELIZEK ŽUŽANA
+ELIZEK IVAN
+ELOR IŠTVAN
+ELOR JANOŠ
+ELOR LJUBICA
+ELOR PAVLE
+ELOR ZORICA
+ELTER JANOŠ
+ELTER ZOLTAN
+EMER JAKOV
+EMER MARKO
+EMINI BAJRAM
+EMINI GANI
+EMINI ROZALIJA
+ENAHOLO NADA
+ENGELMAN KATICA
+ENGERT MIHAJLO
+ENGLER LAJOŠ
+EPIFANIĆ CVETANA
+EPIFANIĆ DUŠKO
+ERČI-VARGA MARIŠKA
+ERČIĆ BOJANA
+ERČIĆ MILORAD
+ERČIĆ RADOVAN
+ERŠTE ŽELJKO
+ERAK BORO
+ERAK DUŠAN
+ERAK ILIJA
+ERAK LAZAR
+ERAK MARKO
+ERAKOVIĆ BOGDAN
+ERAKOVIĆ DANILO
+ERAKOVIĆ DRAGICA
+ERAKOVIĆ KRISTIVOJ
+ERAKOVIĆ LJUBIŠA
+ERAKOVIĆ LJUBOJE
+ERAKOVIĆ MILORAD
+ERAKOVIĆ MITAR
+ERAKOVIĆ RADE
+ERAKOVIĆ RAJKO
+ERAKOVIĆ SRETEN
+ERBEŠ ERŽEBET
+ERBEŽNIK SONJA
+ERBES BRANKA
+ERBES MARGITA
+ERBEZ BLAŽO
+ERBEZ ERŽEBET
+ERCEG ŠPIRO
+ERCEG ŽARKO
+ERCEG ŽIVKO
+ERCEG DARA
+ERCEG LJILJANA
+ERCEG MIKA
+ERCEG RADOVAN
+ERCEG RAJKO
+ERCEG RAJKO
+ERCEG SLOBODAN
+ERCEG STANA
+ERCEG ZDENKO
+ERCEG ZDRAVKO
+ERCEGAN GORAN
+ERCEGAN MITA
+ERCEGOVČEVIĆ ŽIVODAR
+ERCEGOVČEVIĆ DOSTA
+ERCEGOVAC ANĐELKO
+ERCEGOVAC BRATISLAV
+ERCEGOVAC MIODRAG
+ERCEGOVAC MITAR
+ERCEGOVAC NADA
+ERCEGOVAC SAVA
+ERCEGOVAC SLOBODAN
+ERCEGOVAC STEVAN
+ERCEGOVAC TOMISLAV
+ERCEGOVIĆ DANICA
+ERDEŠ DANIEL
+ERDEŠ EMIL
+ERDEŠ ESTER
+ERDEŠ ETELKA
+ERDEŠ ILONA
+ERDEŠ IVAN
+ERDEŠ JULIJANA
+ERDEŠ KLARA
+ERDEŠ LASLO
+ERDEŠ PAL
+ERDEŠ PETAR
+ERDEŠI LASLO
+ERDEŠI VALERIJA
+ERDEG ARANKA
+ERDEG ILONA
+ERDEG JANOŠ
+ERDEG JUSTINA
+ERDEG TOMISLAV
+ERDEI ŠANDOR
+ERDEI JOSIP
+ERDEI JOVAN
+ERDEI MIHAJLO
+ERDEI PETAR
+ERDEI ZOLTAN
+ERDELJ BRANKO
+ERDELJ EMIL
+ERDELJ GORAN
+ERDELJ LUDMILA
+ERDELJ MILUTIN
+ERDELJAN ŽIVKO
+ERDELJAN ALEKSANDAR
+ERDELJAN ALKSANDAR
+ERDELJAN BISERKA
+ERDELJAN BOŠKO
+ERDELJAN-BOGDANOV SLAVICA
+ERDELJAN DANILO
+ERDELJAN DOBRIVOJ
+ERDELJAN DUŠANKA
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN JELENA
+ERDELJAN KATICA
+ERDELJAN LJUBICA
+ERDELJAN LJUBOMIR
+ERDELJAN MILADIN
+ERDELJAN MILAN DIPL ING
+ERDELJAN MILAN
+ERDELJAN MILENKO
+ERDELJAN MILIVOJ
+ERDELJAN MILORAD
+ERDELJAN MILORAD
+ERDELJAN MILOVAN
+ERDELJAN MIRJANA
+ERDELJAN NADEŽDA
+ERDELJAN NIKOLA
+ERDELJAN PREDRAG
+ERDELJAN RADIVOJ
+ERDELJAN SLAVKA
+ERDELJAN SLAVKA
+ERDELJAN SLOBODAN DIPL ING
+ERDELJAN SREDOJE
+ERDELJAN STEVAN
+ERDELJAN SVETISLAV
+ERDELJAN TIHOMIR
+ERDELJAN VERICA
+ERDELJAN VUKICA
+ERDELJAN ZLATKO
+ERDELJAN ZORA
+ERDELJANIN ANĐELKO
+ERDELJI ĐERĐ
+ERDELJI ANTAL
+ERDELJI BELA
+ERDELJI BISERKA
+ERDELJI BORBALA
+ERDELJI DEŽE
+ERDELJI DRAGICA
+ERDELJI FRANJA
+ERDELJI GAŠPAR
+ERDELJI IŠTVAN
+ERDELJI JENE
+ERDELJI JOŽEF
+ERDELJI KAROLJ
+ERDELJI LAJOŠ
+ERDELJI LASLO DIPL ING
+ERDELJI MATILDA
+ERDELJI SOFRONA
+ERDELJI STEVAN
+ERDELJI TIBOR
+ERDEVIK MARA
+ERDEVIK MARIJA
+ERDEVIK SLOBODAN
+ERDEVIK VOJISLAV
+ERDEVIK VUKICA
+ERDEVIK ZDRAVKO
+EREŠ ŠANDOR
+EREŠ LASLO
+EREĐIN VUKAŠIN
+EREG LAJOŠ
+EREMIĆ JELICA
+EREMIĆ JOVAN
+EREMIĆ NINOSLAV
+EREMIĆ RADOVAN
+EREMIĆ SAVA
+EREMIĆ SLAVICA
+EREMIĆ STANISLAVA
+EREMIĆ TIHOMIR DR LEKAR
+EREMIĆ VESELINKA
+EREMIJA MILAN
+EREMIJA STANKO
+EREMIN NIKOLA
+ERENTA LJUBICA
+ERG OLGA
+ERGELAŠEV DUBRAVKA
+ERGELAŠEV IVAN
+ERGELAŠEV JOVAN
+ERGELAŠEV MILAN
+ERGELAŠEV MILOŠ
+ERGELAŠEV MOMČILO
+ERGELAŠEV NESTOR
+ERGELAŠEV SMILJKA
+ERGELAŠEV TIHOMIR
+ERGELAŠEV ZORKA
+ERHARTIČ ANA
+ERHARTIČ RUDOLF
+ERI ILONA
+ERI JANOŠ
+ERI JOVAN
+ERIĆ ĐULINKA
+ERIĆ BOŽIN
+ERIĆ LJILJANA
+ERIĆ MARKO
+ERIĆ MILOMIR
+ERIĆ NEBOJŠA
+ERIĆ PERO
+ERIĆ SNEŽANA
+ERIĆ SVETOMIR
+ERIĆ ZORICA
+ERKIĆ ĐORĐE
+ERKIĆ PETAR
+ERLAUER IVAN
+ERLAUER JOSIP
+ERLER VERONA
+ERNEST FRANJA
+EROR JOVAN
+EROR PETAR
+EROR STEVAN
+ERSKI PETAR
+ERSKI-PETKOVIĆ SONJA
+ERTL FERENC
+ERTL HEDVIGA
+ERTL LASLO
+ERTL VLASTA
+ES KLARA
+ESE ŠANDOR
+ESKIĆ SVETOZAR
+ESTER JOSIP
+ESTER MARIJA DR
+ESTER MARTA
+ETŠBERGER JAKOB
+ETER OTO
+ETEROVIĆ VERA
+ETINSKI ŽIVAN
+ETINSKI ŽIVOJIN
+ETINSKI ĐORĐE
+ETINSKI DRAGIĆ
+ETINSKI DRAGIĆ
+ETINSKI JOVAN
+ETINSKI LJUBIŠA
+ETINSKI MIHAJLO
+ETINSKI MILOŠ
+ETINSKI MILORAD
+ETINSKI MILORAD
+ETINSKI MILOVAN
+ETINSKI NADA
+ETINSKI PETAR
+ETINSKI RADOVAN
+ETINSKI SLOBODANKA
+ETINSKI VELJKO
+ETINSKI VERA
+ETINSKI VERICA
+ETORE ĐINA
+EVĐIĆ STANKA
+EVETOVIĆ BLAŠKO
+EVETOVIĆ JOSIP
+EVETOVIĆ JOVAN
+EVETOVIĆ JOVAN
+EVIĆ ALEKSANDAR
+EVIĆ DRAGICA
+EVIĆ JELISAVETA
+EVIĆ JOVAN
+EVIĆ LAZAR
+EVIĆ LAZAR
+EVIĆ PETAR
+EVIĆ SAVA
+FA MELANIJA
+FA MILKA
+FAČAR STEVAN
+FAČKO JOŽEF
+FAČKO SIMA
+FABIAN BORBALA
+FABIAN IŠTVAN
+FABIAN JANOŠ
+FABIJAN ŠANDOR
+FABIJAN ANA
+FABIJAN ILONA
+FABIJAN IMRE
+FABIJAN IVAN
+FABIJAN JANOŠ
+FABIJAN LASLO
+FABIJAN NIKOLA
+FABIJAN STEVAN
+FABIJAN STEVAN
+FABIJANČIĆ IVAN
+FABIJANČIĆ STJEPAN
+FABIJANIĆ MARIJA
+FABIJANOVIĆ ANA
+FABRI MIKLOŠ
+FABRI NANDOR
+FABRI STJEPAN
+FABRI ZVONKO
+FABRIK KATALIN
+FACIS PANTA
+FAIN ANA
+FAIN LAJOŠ
+FAIN STEVAN
+FAJ GABOR
+FAJDETIĆ LJUBICA
+FAJDIGA ALEKSANDAR
+FAJFER PETAR
+FAJGELJ IVAN
+FAJHNER HENRIK
+FAJHTNER JOSIP
+FAJHTNER RUŽA
+FAJIN IŠTVAN
+FAJKA DANICA
+FAJKA NADA
+FAJKA PAVLE
+FAJNIK MARIJA
+FAJT-GRANER ROŽA
+FAJT JELICA
+FAJTNER VERONIKA
+FAKIN FRANJA
+FAKIN IVAN
+FAKIN ZVONIMIR
+FALB ĐORĐE
+FALB BOSILJKA
+FALB JOSIP
+FALB KAROLJ
+FALB KAROLJ
+FALB MARINA
+FALB MATIJA
+FALB OTO
+FALB ZOLTAN
+FAMILIĆ ĐORĐE
+FAMILIĆ IVAN
+FANČEVIĆ ALEKSANDAR
+FANČEVIĆ JOSIP
+FANČEVIĆ KATALIN
+FANČEVIĆ LJUDEVIT
+FANČEVIĆ TEREZIJA
+FANKA DUŠAN
+FANKA MARA
+FARAGO ŠANDOR
+FARAGO ŠANDOR
+FARAGO ARANKA
+FARAGO ARPAD
+FARAGO FRANJA
+FARAGO JOŽEF
+FARAGO JOSIP
+FARAGO KARLO
+FARAGO LASLO
+FARAGO MARIJA
+FARK AMALIJA
+FARK BEATA
+FARKAŠ ALEKSANDAR
+FARKAŠ ALEKSANDAR
+FARKAŠ BOŽENA
+FARKAŠ DRAGUTIN
+FARKAŠ ELEMER
+FARKAŠ ELIZABETA
+FARKAŠ ELZA
+FARKAŠ ESTER
+FARKAŠ ESTER
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FRANJA
+FARKAŠ GABOR
+FARKAŠ IŠTVAN
+FARKAŠ IŠTVAN
+FARKAŠ ILONA
+FARKAŠ ILONKA
+FARKAŠ IMRE
+FARKAŠ JAN
+FARKAŠ JAROSLAV
+FARKAŠ JELISAVETA
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOSIP
+FARKAŠ JOSIP
+FARKAŠ JOVAN
+FARKAŠ JOVGEN
+FARKAŠ JUDITA
+FARKAŠ KARLO
+FARKAŠ KATALIN
+FARKAŠ KLARA
+FARKAŠ LADISLAV
+FARKAŠ LAJOŠ
+FARKAŠ LASLO
+FARKAŠ MARIJA
+FARKAŠ MATILDA
+FARKAŠ MIHALJ
+FARKAŠ NADA
+FARKAŠ PAL
+FARKAŠ PAVLE
+FARKAŠ ROZALIJA
+FARKAŠ STEVAN
+FARKAŠ-TOT VIKTORIJA
+FARKAŠ VERA
+FARKAŠ VERICA
+FARKIĆ MILAN
+FARKOV JOVANKA
+FAT JOSIP
+FAT LASLO
+FAT MIHAL
+FATIĆ MARA
+FATUROVIĆ RAJKO
+FAUKOVIĆ NADA
+FAZEKAŠ ANTAL
+FAZEKAŠ JANOŠ
+FAZEKAŠ KATALIN
+FAZEKAŠ TIBOR
+FAZLIĆ JELICA
+FAZLIĆ JOVANKA
+FAZLINOVIĆ ELBISA
+FAZLINOVIĆ JASMINKA
+FEŠIŠ IMRE
+FEŠIŠ JOŽEF
+FEŠIŠ JOŽEF
+FECE IVAN
+FECE MARIJA
+FEDERER JOVAN
+FEDERER MIRKO
+FEDI JOŽEF
+FEHER ŠANDOR
+FEHER ŠANDOR
+FEHER ĐERĐ
+FEHER ĐULA
+FEHER ĐULA
+FEHER ANDRAŠ
+FEHER ARISTID
+FEHER ERNE
+FEHER ERNE
+FEHER FERENC
+FEHER JANOŠ
+FEHER JANOŠ
+FEHER JANOŠ
+FEHER JOŽEF
+FEHER JOŽEF
+FEHER JOVAN
+FEHER JOVAN
+FEHER JULIJA
+FEHER KALMAN
+FEHER LAJOŠ
+FEHER LASLO
+FEHER LASLO
+FEHER MARGITA
+FEHER MARIJA
+FEHER MIHAJLO
+FEHER NANDOR
+FEHER STEVAN
+FEHER STEVAN
+FEHER TEREZA
+FEHER VERA
+FEHERVARI JELISAVETA
+FEHIR ALEKSANDAR
+FEHIR PETAR
+FEHIROV AVRAM
+FEHIROV KOSANA
+FEHIROV MIRJANA
+FEJĐI VLADIMIR
+FEJDETIĆ TOMISLAV
+FEJEŠ ŠANDOR
+FEJEŠ ĐORĐE
+FEJEŠ ARANKA
+FEJEŠ GENA
+FEJEŠ IŠTVAN
+FEJEŠ IŠTVAN
+FEJEŠ JANOŠ
+FEJEŠ JANOŠ
+FEJEŠ LJILJANA
+FEJEŠ ZOLTAN
+FEJEŠ ZOLTAN
+FEJFAR JULIJANA
+FEJSA GEORGIJE
+FEJSA JANKO MR PH
+FEJSA MARGITA
+FEJSA-POPOVIĆ LEONA
+FEJSTHAMEL PAL
+FEJZULAHI FEJZULAH
+FEKETE ŠANDOR
+FEKETE ŠANDOR
+FEKETE ŽUŽANA
+FEKETE ADOLF
+FEKETE FERENC
+FEKETE FERENC
+FEKETE JAGODA
+FEKETE KARLO
+FEKETE KATICA
+FEKETE LASLO
+FEKETE MARIJA
+FEKETE MARIJA
+FEKETE MARIJA
+FEKETE MIHAJLO
+FEKETE MIHALJ
+FEKETE PETAR
+FEKETE STEVAN
+FEKETE VESNA
+FEKIĆ VLADIMIR
+FELBAB RADA
+FELBAB SAVA
+FELBAB STANIMIR
+FELBABOV DIMITRIJE
+FELBABOV JOVAN
+FELBABOV VLADISLAVA
+FELBAP JULKA
+FELBAP NIKOLA
+FELBAPOV DIMITRIJE
+FELBAPOV MILANKA
+FELBAPOV MILORAD
+FELBAPOV NEMANJA
+FELBAPOV RADMILA
+FELBAPOV RADOSLAV
+FELBAPOV STEVAN
+FELDŠER ANA
+FELDŠER KARLO
+FELDEŠDI ANDRIJA
+FELDEŠI FRANJA
+FELDEŠI IBOLJA DR
+FELDEŠI MARIJA
+FELDEŽDI JULIJANA
+FELDEŽDI LASLO
+FELDEŽDI PETAR
+FELDEŽDI STEVAN
+FELDEAK DANICA
+FELDEAK JOŽEF
+FELDI ŠANDOR
+FELDI ERŽEBET
+FELDI JAROSLAV
+FELDVARI JOSIP
+FELDVARI JOVAN
+FELDVARI JUSTINA
+FELDVARI KALMAN
+FELDVARI OLGICA
+FELDVARI STEVAN
+FELDVEBEL ROZALIJA
+FELE DRAŽEN LEKAR
+FELEĆ IZET
+FELEGI ANA
+FELEGI LADISLAV
+FELJA MIRJANA
+FELNER DUŠANKA
+FELNER TIBOR
+FEMIĆ ALEKSIJE
+FEMIĆ BLAGOJE
+FEMIĆ GRUJICA
+FEMIĆ MILIJA
+FEMIĆ MILOVAN
+FEMIĆ PETKO
+FEMIĆ RADMILA
+FEMIĆ STANKA
+FEMIĆ VELJKO
+FEMIĆ ZORA
+FENC RUŽICA
+FENDLER JOVAN
+FENDRIK ANDRIJA
+FENDRIK FRANJO
+FENDRIK KARLO
+FENJAC IVAN
+FENJAC JOVAN
+FENJAC SINIŠA
+FENJAC SLOBODANKA
+FENJEŠ ANA
+FENJEŠ FRANJA
+FENJVEŠI MARIŠKA
+FERČIK ANDRIJA
+FERARINOV PAVLE
+FERARIO SILVIO
+FERATI AFIZ
+FERATI BERO
+FERATI EHAT
+FERATI RAGIP
+FERATI SEJFIDIN
+FERATI SKENDER
+FERENČAK IVICA
+FERENČEK LJUBICA
+FERENČEK OLIVER DIPL ING
+FERENČEK VILKO
+FERENČEV MILORAD
+FERENČEV ZORA
+FERENČEVIĆ ĐORĐE
+FERENČEVIĆ-SALAJ JELENA
+FERENAC ANDRIJA
+FERENAC ANDRIJA
+FERENAC IVAN
+FERENAC RADMILA
+FERENC ANTAL
+FERENC JOŽEF
+FERENC JOŽEF
+FERENCI ĐERĐ
+FERENCI DEZIDER
+FERENCI EUGEN
+FERENCI FRANJA
+FERENCI JULIJANA
+FERENCI STEVAN
+FERENCI VERA
+FERIK JURAJ
+FERIK JURAJ
+FERIZOVIĆ AHMET
+FERKO ANDREJ DR LEKAR
+FERKO MILOŠ
+FERKO PAVEL
+FERKO PAVLE
+FERLAN RADMILA
+FETAHI BAJRAM
+FETAHOVIĆ ISMET
+FETAI ZIBER
+FIČOK ALOJZIJE
+FIŠAKOV KONSTADIN
+FIŠANG LJILJANA
+FIŠER ĐORĐE DR LEKAR
+FIŠER ĐORĐE
+FIŠER ALEKSANDAR DR
+FIŠER ALEKSANDAR
+FIŠER ANTON
+FIŠER BLANKA
+FIŠER DRAGUTIN
+FIŠER GAVRA
+FIŠER IRENA
+FIŠER IRENA
+FIŠER JENE
+FIŠER JOSIP
+FIŠER KAROLJ
+FIŠER LASLO
+FIŠER LEO DR
+FIŠER NATALIJA
+FIŠER PIROŠKA
+FIŠER STEVAN
+FIŠER ZVONIMIR
+FIŠL FEDOR
+FIŠL JULIJA DIPL ING
+FIŠTEŠ IMRE
+FIŠTEŠ MARIJA
+FIŠTEŠ MIHALJ
+FIŠTEŠ PIROŠKA
+FIALA IVANKA
+FIALA IVAN
+FIBIŠAN ĐURAĐ
+FIBIŠAN SLAVOLJUB
+FICE ERŽEBET
+FICINGER VALERIJA
+FIDUŠEK KATICA
+FIFA DRAGICA
+FIFA NEBI
+FIGURA ŠANDOR
+FIJATOVIĆ OLGA
+FIJUKOVIĆ SADETA
+FIJULJANIN ZULFO
+FILEKI MIROSLAV
+FILEKOVIĆ SEID
+FILEP ĐERĐ
+FILEP ĐORĐE
+FILEP ĐORĐE
+FILEP ANTAL
+FILEP BELA
+FILEP IDA
+FILEP JENE
+FILEP JOŽEF
+FILEP KALMAN
+FILEP KALMAN
+FILEP LADISLAV
+FILEP MIRJANA
+FILEP ZOLTAN
+FILEPI MIROSLAV
+FILIMONOVIĆ ŽIVORAD
+FILIMONOVIĆ ĐORĐE
+FILIP JOVAN DR PRAVNIK
+FILIP RADOSAV
+FILIPČEV ZDRAVKO
+FILIPAŠ DRAGAN
+FILIPAŠEV NADA
+FILIPEC ZITA
+FILIPENDIN MARKO
+FILIPOV ILIJA
+FILIPOV MILOŠ
+FILIPOV MIODRAG
+FILIPOV MOMIR
+FILIPOV NIKOLA
+FILIPOV PREDRAG
+FILIPOV RADOVAN
+FILIPOV SLAĐANA
+FILIPOV TIHOMIR
+FILIPOV TIJANA
+FILIPOVIĆ ČEDO
+FILIPOVIĆ ALEKSANDAR
+FILIPOVIĆ ANTON
+FILIPOVIĆ BOŠKO
+FILIPOVIĆ BOGOMIR
+FILIPOVIĆ BORA
+FILIPOVIĆ BRANKO
+FILIPOVIĆ-DAMJANOV NADA
+FILIPOVIĆ DESANKA
+FILIPOVIĆ DIJANA
+FILIPOVIĆ DOBRICA
+FILIPOVIĆ DOBRILA
+FILIPOVIĆ DRAGAN
+FILIPOVIĆ DRAGAN
+FILIPOVIĆ DUŠANKA
+FILIPOVIĆ DUŠANKA
+FILIPOVIĆ GORDANA
+FILIPOVIĆ IVAN
+FILIPOVIĆ IVAN
+FILIPOVIĆ JELISAVETA
+FILIPOVIĆ JOVAN
+FILIPOVIĆ JOVAN
+FILIPOVIĆ LEPOSAVA
+FILIPOVIĆ LJILJANA
+FILIPOVIĆ LJUBICA
+FILIPOVIĆ LJUBINKA
+FILIPOVIĆ LJUBINKO
+FILIPOVIĆ MILADIN
+FILIPOVIĆ MILADIN
+FILIPOVIĆ MILAN DIPL ING
+FILIPOVIĆ MILANKA
+FILIPOVIĆ MILANKA
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILENA
+FILIPOVIĆ MILENKO
+FILIPOVIĆ MILIVOJE
+FILIPOVIĆ MILKA
+FILIPOVIĆ MILOJKO
+FILIPOVIĆ MILOVAN
+FILIPOVIĆ MIODRAG
+FILIPOVIĆ MIODRAG
+FILIPOVIĆ MIRJANA
+FILIPOVIĆ MIRKO
+FILIPOVIĆ MIROSLAV
+FILIPOVIĆ NATAŠA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLINA
+FILIPOVIĆ PAULA
+FILIPOVIĆ PERO
+FILIPOVIĆ RADIVOJ
+FILIPOVIĆ RADOJKA
+FILIPOVIĆ RADOJKO
+FILIPOVIĆ RADOSLAV
+FILIPOVIĆ RADOVAN
+FILIPOVIĆ RANKA
+FILIPOVIĆ RUŽANA
+FILIPOVIĆ RUDOLF
+FILIPOVIĆ SAVA DIPL ING
+FILIPOVIĆ SAVA
+FILIPOVIĆ SIBIN
+FILIPOVIĆ SLAVKO
+FILIPOVIĆ SNEŽANA
+FILIPOVIĆ SPASOJE
+FILIPOVIĆ SRĐAN
+FILIPOVIĆ SREĆKO
+FILIPOVIĆ STEVAN DR STOMATOLOG
+FILIPOVIĆ STOJAN
+FILIPOVIĆ STOJAN
+FILIPOVIĆ TOMISLAV
+FILIPOVIĆ VESNA
+FILIPOVIĆ VIDOSAV
+FILIPOVIĆ VLADIMIR
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORICA
+FILIPOVSKA-OBRADOVIĆ VERA
+FILIPOVSKI BOŽO
+FILIPOVSKI TODOS
+FILKO DRAGICA
+FILKO JOSIP
+FILKO JOVAN
+FILKO MARIJA
+FILKO MIHALJ
+FILKO MIHALJ
+FILKO PAVEL
+FILKO TIHOMIR
+FINČUR ALEKSANDAR
+FINČUR JOŽEF
+FINČUR JULIJANA
+FINČUR LADISLAV
+FINDŽANOVIĆ GOJKO
+FINDŽANOVIĆ MIKO
+FINDŽANOVIĆ MIRKO
+FINDŽANOVIĆ OBRAD
+FINK-DIMITRIJEVIĆ DOROTEA
+FINK VIKTOR NOVINAR
+FINKA GORČAN
+FIR BEATA
+FIRANJ JOŽEF
+FIRANJI ĐERĐ
+FIRANJI ĐORĐE
+FIRANJI ĐORĐE
+FIRANJI ERŽEBET
+FIRANJI JOVAN
+FIRANJI VIKTOR
+FIRIĆ MARIJA
+FIRULOVIĆ KOSTANTIN
+FISTRIĆ ĐORĐE
+FISTRIĆ MIRJANA
+FIVEŠI GABOR
+FIVEŠI TIBOR
+FLAC IVANKA
+FLAC PETAR
+FLAJS JELISAVETA
+FLEGER STEVAN
+FLEGO IVAN
+FLEGO MARTA
+FLEKAČ VLADO
+FLITNER OSKAR
+FLOKA ĐENIKA
+FLORA VASA
+FLORIĆ DIMITRIJE
+FLORIĆ LJUBICA
+FLORIĆ ZORAN
+FLORIĆ ZORAN
+FLORIN VINKA
+FODOR ŽOFIJA
+FODOR ANA
+FODOR ANDRIJA
+FODOR ERŽEBET
+FODOR FERENC
+FODOR FRANJA
+FODOR FRANJA
+FODOR JOLAN
+FODOR JOVAN
+FODOR JOVAN
+FODOR KALMAN
+FODOR KATA
+FODOR LAJOŠ
+FODOR LASLO
+FODOR LASLO
+FODOR LASLO
+FODOR LASLO
+FODOR LIDIJA
+FODOR MARTA
+FODOR OSKAR DIPL OEC
+FODOR TIBOR
+FODOR TIBOR
+FODOR TIBOR
+FODOR ZDRAVKO
+FODORA JANKO
+FOGARAŠI ĐERĐ DR
+FOGARAŠI ĐERĐ
+FOGARAŠI ANDRIJA
+FOGARAŠI ANIKO
+FOGARAŠI ILONA
+FOGARAŠI STEVAN
+FOGL MAGDALENA
+FOJKAR JANKO
+FOLIĆ RADOMIR DR
+FOLTIN MARGITA
+FOLTIN MILICA
+FONTANJ LOTAR
+FORAI ZOLTAN
+FORAI ZORICA
+FORGAČ JELISAVETA
+FORGIĆ IVAN
+FORGO IŠTVAN
+FORGO LASLO
+FORIŠKOV JOVANKA
+FORIŠKOV LAZAR
+FORIŠKOVIĆ ALEKSANDAR
+FORKAPA SAVO
+FORKAPIĆ ALEKSANDAR
+FORKAPIĆ IVANKA
+FORKAPIĆ LAZAR
+FORKAPIĆ MARIJA
+FORKAPIĆ NIKOLA
+FORKAPIĆ SAVA
+FORKAPIĆ SLAVICA
+FORKAPIĆ VELINKA
+FORO IVAN
+FORO JULIJANA
+FOTIĆ ĐORĐE
+FOZEKOŠ ANKICA
+FRČEK ĐURA
+FRČEK MARIJA
+FRŽOP MIŠE
+FRŽOVIĆ ĐORĐE
+FRŽOVIĆ GAVRILO
+FRŽOVIĆ MIHAJLO
+FRŽOVIĆ MILENA
+FRACILE NICE
+FRAJST RUDOLF
+FRAJTOVIĆ MOMČILO
+FRAJZ PETAR
+FRANČIĆ ROK
+FRANC MAGDALENA DIPL ING
+FRANCELJ FRANC
+FRANCER IVAN
+FRANCER IVAN
+FRANCIŠKOVIĆ ATILA
+FRANCIŠKOVIĆ IVAN
+FRANCIŠKOVIĆ MATE
+FRANCIA ANDRIJA
+FRANCIA IŠTVAN
+FRANCIA PETAR
+FRANCIJA JOŽEF
+FRANCIJA-KUKIČKA MARGARETA
+FRANCISTI ĐORĐE
+FRANCISTI JAROSLAV
+FRANCISTI PAVLE
+FRANCISTI VLADIMIR
+FRANCUSKI ALEKSA
+FRANCUSKI BRANISLAV
+FRANCUSKI DARINKA
+FRANCUSKI DESANKA
+FRANCUSKI DRAGAN
+FRANCUSKI DUŠAN
+FRANCUSKI IVAN DR
+FRANCUSKI JOVANKA
+FRANCUSKI MARKO
+FRANCUSKI MILAN
+FRANCUSKI MIROSLAV
+FRANCUSKI PETAR
+FRANCUSKI RADOVAN
+FRANCUSKI SLOBODANKA
+FRANCUSKI STRAHINJA
+FRANCUSKI ZORAN
+FRANCUSKI ZORAN
+FRANCUSKI ZORKA
+FRANCUSKI ZORKA
+FRANCUZ DARINKA
+FRANCUZ JELENA
+FRANCUZ VELIMIR
+FRANCUZ VUK
+FRANETA JOVO
+FRANIĆ IVAN
+FRANIĆ MILKA
+FRANJIČEVIĆ NIKOLA
+FRANJIĆ MARICA
+FRANJO ŽUŽANA
+FRANK ĐERĐ
+FRANK FERENC
+FRANK ILEŠ
+FRANK JANOŠ
+FRANK TIBOR
+FRANKA MIHAJLO
+FRANKOVIĆ JOVAN
+FRANOVIĆ ALEKSANDRA
+FRANOVIĆ VLADIMIR
+FRANZER IVAN
+FRATOJ JOCA
+FRATRIĆ SIGMUND
+FRATUCAN ĐORĐE
+FRATUCAN ĐORĐE
+FRATUCAN FILIP
+FRATUCAN IVAN
+FRATUCAN NEVENA
+FRATUCAN PETAR
+FRATUCANOV IVANKA
+FREI ELIZABETA
+FREMER ANTUN
+FREML ŠANDOR
+FRENKEL ANA
+FRENKEL EVA
+FRENKL DRAGICA
+FRIČ BOŽIDAR
+FRIČ KATICA
+FRIŠ DRAGAN
+FRIŠ MILAN
+FRIŠČIĆ DRAGUTIN
+FRIC RUDOLF
+FRIDRIH ANA
+FRIDRIH JELENA
+FRIDRIH MAGDA
+FRIDRIH ZORICA
+FRINDIK FRANJA
+FRINDIK MIHALJ
+FRINDRIK BELA
+FRKA ARTUR
+FRKA NIKOLA
+FRLJ MUHAREM
+FROL MARIJAN
+FROL NADA
+FROL VILIM
+FRUŽA ALEKSANDAR
+FUČIK KARLO
+FUDERER JULIJE
+FUDERER MAGDALENA
+FUJKA ĐORĐE
+FUJTO VLADIMIR
+FULAJTER ĐORĐE
+FUNĆIK PAVLE
+FUNDURULJA MILENKO
+FUNK ŠTEFANIJA
+FUNK LAJOŠ
+FUNTEK IVAN
+FURJANOVIĆ VLADISLAV
+FURLAN ERŽEBET
+FURLAN MARKO
+FURMAN FRANJA
+FURMAN JOVAN
+FURMAN MARIJA
+FURMAN TIMOFEJ
+FURMAN TINKA
+FURO IMRE
+FUSKO ANGELA
+FUSKO IŠTVAN
+FUSKO MARIJA
+FUSKO MIHALJ
+FUTO ANTAL
+FUTO JOŽEF
+FUTO JOŽEF
+FUTO MIRKO
+FUTOŠKI MILAN
+FUTOŠKI MITA
+GAČANOVIĆ DRAGAN
+GAČEVIĆ MIROSLAV
+GAČEVIĆ RADENKO
+GAČEVIĆ TEREZA
+GAČIĆ BRANKO
+GAČIĆ DANICA
+GAČIĆ DANILO
+GAČIĆ MILAN
+GAČIĆ STEVAN
+GAČIĆ STEVAN
+GAČIĆ VLADAN
+GAŠEVIĆ MILORAD
+GAŠEVIĆ MILOVAN
+GAŠEVIĆ MOMČILO
+GAŠEVIĆ RADMILA
+GAŠEVIĆ SAVKA
+GAŠEVIĆ ZDRAVKO
+GAŠI ĐEMAILJ
+GAŠI HAMDI
+GAŠI JULIJANA
+GAŠI LJUAN
+GAŠI ZORAN
+GAŠIĆ BOGDAN
+GAŠIĆ DUŠAN
+GAŠIĆ KOVILJKA
+GAŠIĆ KOVILJKA
+GAŠIĆ KRSTA
+GAŠIĆ MIROLJUB
+GAŠIĆ NIKOLA
+GAŠIĆ SILVANA
+GAŠIĆ TODOR DIPL ING
+GAŠIĆ VALERIJA
+GAŠIĆ ZDRAVKO
+GAŠIĆ ZORA
+GAŠPAR BOGDAN
+GAŠPAR JANOŠ
+GAŠPAR LAJOŠ
+GAŠPAR LIDIJA
+GAŠPAR MILENKO
+GAŠPAREVIĆ ERIKA
+GAŠPAREVIĆ LJILJANA
+GAŠPARIĆ NADA
+GAŠPARIN LJILJANA
+GAŠPAROVIĆ JOSIP
+GAĆA BRANISLAV
+GAĆA MIODRAG
+GAĆA VLADIMIR
+GAĆAŠ DRAGICA
+GAĆAŠ SINIŠA
+GAĆAŠ STEVAN
+GAĆEŠA ĐURO
+GAĆEŠA BRANKA
+GAĆEŠA DRAGAN
+GAĆEŠA DRAGAN
+GAĆEŠA ILIJA
+GAĆEŠA MANOJLO
+GAĆEŠA MILOŠ
+GAĆEŠA MILORAD
+GAĆEŠA MILOVAN DR
+GAĆEŠA NIKOLA
+GAĆEŠA SLAVKO
+GAĆEŠA VELJKO
+GAĆEŠA VLADIMIR
+GAĆINA ŽARKO
+GAĆINA LJILJANA
+GAĆINOVIĆ BOŽO
+GAĆINOVIĆ BRANKO
+GAĆINOVIĆ MILIVOJE
+GAĆINOVIĆ MILORAD
+GAĆINOVIĆ RAJKO
+GAŽI JELISAVETA
+GAŽIK TEREZIJA
+GAŽO KATICA
+GAŽO-MATOŠKOVIĆ OLGICA
+GAŽO MIHAJLO
+GAŽO MIKLOŠ
+GAĐANSKI ZORAN
+GABLER VIKTORIJA
+GABOR ARPAD
+GABOR BELA
+GABOR ERŽEBET
+GABOR IRENA
+GABOR JOŽEF
+GABOR KAROLJ
+GABOR NANDOR
+GABOROV BRANISLAV
+GABOROV BRANISLAV
+GABOROV GAVRILO
+GABOROV MILAN
+GABOROV MITA
+GABOROV PAVLE
+GABOROV PETAR
+GABRE ROKO
+GABRIĆ EVICA
+GABRIĆ KSENIJA
+GABRIĆ MIHAJLO
+GABRIĆ NESTOR
+GABRIĆ PETAR
+GABRIĆ SLAVKO
+GABRIEL MIKLOŠ
+GABRIJELČIĆ ZDRAVKO
+GABROVIĆ ANDRAŠ
+GABROVIĆ ANDRIJA
+GACIN MIROSLAV
+GADŽA KRIŽAN
+GADŽA RUŽA
+GADŽIĆ MILAN
+GADŽIĆ VINKO
+GADŽUR IVAN
+GADŽURIĆ ZLATKO
+GADANEC KATARINA
+GADNJAI JOVA
+GADNJANSKI VLADIMIR
+GAGIĆ ALEKSANDAR
+GAGIĆ AVRAM
+GAGIĆ BOŠKO
+GAGIĆ BORIVOJE
+GAGIĆ DRAGICA
+GAGIĆ DUŠAN
+GAGIĆ-GRUBEŠA MILEVA
+GAGIĆ JOVANKA
+GAGIĆ JOVAN
+GAGIĆ NIKOLA
+GAGIĆ NIKOLA
+GAGIĆ RADOSLAV
+GAGIĆ RADOVAN
+GAGIĆ SLOBODAN
+GAGIĆ VIDOSAVA
+GAGOVIĆ MILORAD
+GAGOVIĆ NOVAK
+GAGOVIĆ OLGA
+GAGOVIĆ RADOSAV
+GAGRČIN LAZAR
+GAGRČIN MLADEN
+GAGRICA JOVAN
+GAGULA MUJO
+GAIĆ VELJKO
+GAICKI NIKOLA
+GAICKI SANJA
+GAICKI TANASIJE
+GAICKI VERICA
+GAINOV RADOVAN
+GAJŠIN SLAVICA
+GAJŠIN SMILJA
+GAJŠIN STANISLAV
+GAJANIĆ STJEPAN
+GAJDA ŠANDOR
+GAJDOŠ ĐULA
+GAJDOŠ IŠTVAN
+GAJDOŠ IBOLJA
+GAJDOŠ LASLO
+GAJDOŠ LJUBOMIR
+GAJDOŠ MIHAJLO
+GAJDOŠ NIKOLA
+GAJDOŠ PETAR
+GAJDOŠEVIĆ ĐORĐE
+GAJDOBRANSKI ĐORĐE DR
+GAJDOBRANSKI DANICA
+GAJDOBRANSKI DRAGICA
+GAJDOBRANSKI LJUBICA
+GAJDOBRANSKI MARIJA
+GAJDOBRANSKI MILIVOJ
+GAJDOBRANSKI PETAR
+GAJDOBRANSKI TODOR
+GAJER ĐURA
+GAJER JOCA
+GAJER LEONA
+GAJER MANOJLO
+GAJER NADA
+GAJGER JOŽEF
+GAJIŠIN DARA
+GAJIŠIN LAZAR
+GAJIŠIN MILICA
+GAJIŠIN PETAR
+GAJIŠIN STEVAN
+GAJIŠIN STEVAN
+GAJIŠIN TOMISLAV
+GAJIĆ ŽARKO
+GAJIĆ ŽARKO
+GAJIĆ ŽIVKA
+GAJIĆ ŽIVKO
+GAJIĆ ŽIVOTA
+GAJIĆ ĐORĐE
+GAJIĆ ĐURO
+GAJIĆ ALEKSANDAR
+GAJIĆ ANA
+GAJIĆ BOŽICA
+GAJIĆ BOŽIDAR
+GAJIĆ BOGDAN
+GAJIĆ BOGOLJUB
+GAJIĆ BORISLAV
+GAJIĆ BRANKO
+GAJIĆ BRANKO
+GAJIĆ CVIJAN
+GAJIĆ CVIJAN
+GAJIĆ DANICA
+GAJIĆ DEJAN
+GAJIĆ DEJAN
+GAJIĆ DEJAN
+GAJIĆ DIMITRIJE
+GAJIĆ DRAGAN
+GAJIĆ DRAGAN
+GAJIĆ DRAGICA
+GAJIĆ DRAGOLJUB
+GAJIĆ DRAGO
+GAJIĆ DUŠAN DIPL ING
+GAJIĆ DUŠKO DIPL PRAVNIK
+GAJIĆ GOJKO
+GAJIĆ GORAN
+GAJIĆ GORDANA
+GAJIĆ IBOLJA
+GAJIĆ JELENA
+GAJIĆ KATARINA
+GAJIĆ KRISTINA
+GAJIĆ KRUNA
+GAJIĆ LAZAR
+GAJIĆ LAZO
+GAJIĆ MAKSA
+GAJIĆ MARIJA DR
+GAJIĆ MARIJA
+GAJIĆ MARINKO DR
+GAJIĆ MIĆO
+GAJIĆ MIKA
+GAJIĆ MILANA
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILINKO
+GAJIĆ MILIVOJ
+GAJIĆ MILOŠ
+GAJIĆ MILOJKA
+GAJIĆ MILOSAV
+GAJIĆ MILOVAN
+GAJIĆ MIODRAG
+GAJIĆ MIODRAG
+GAJIĆ MIRJANA
+GAJIĆ MIRKO DR
+GAJIĆ MIRKO
+GAJIĆ MIROSLAV
+GAJIĆ MITRA
+GAJIĆ MLADENKO
+GAJIĆ MLADEN
+GAJIĆ MOMČILO
+GAJIĆ NEDELJKO
+GAJIĆ NIKOLA DIPL ING
+GAJIĆ NIKOLA
+GAJIĆ NIKOLA
+GAJIĆ NOVAK
+GAJIĆ OLIVERA
+GAJIĆ PELKA
+GAJIĆ PERSA
+GAJIĆ RADENKO
+GAJIĆ RADMILA
+GAJIĆ RADOMIR
+GAJIĆ RAJKA
+GAJIĆ RATKO
+GAJIĆ RATKO
+GAJIĆ ROZALIJA
+GAJIĆ RUŽICA
+GAJIĆ SAVA
+GAJIĆ SLAKA
+GAJIĆ SLAVICA
+GAJIĆ SLAVKO
+GAJIĆ SLAVKO
+GAJIĆ SREĆKO
+GAJIĆ SRETO
+GAJIĆ STANIMIR
+GAJIĆ STANOJLO
+GAJIĆ STOJAN
+GAJIĆ STRAHINJA
+GAJIĆ SVETOZAR
+GAJIĆ TANASKO
+GAJIĆ VELIMIR
+GAJIĆ VESNA
+GAJIĆ VIDA
+GAJIĆ VIDOSAVA
+GAJIĆ VLADISLAV
+GAJIĆ ZORAN
+GAJICA BRANKO
+GAJICKI BRANKO
+GAJICKI DUŠAN
+GAJICKI JELENA
+GAJICKI LAZAR
+GAJICKI MARIJA
+GAJICKI MILA
+GAJICKI MILICA
+GAJICKI SAVA
+GAJIN ŽIVKO
+GAJIN ĐORĐE
+GAJIN ALEKSANDAR
+GAJIN ANKA
+GAJIN BRANKO
+GAJIN DRAGICA
+GAJIN JOVAN
+GAJIN LAZAR
+GAJIN MIHAJLO
+GAJIN MILAN
+GAJIN MILENKO
+GAJIN MILOVAN
+GAJIN MIRJANA
+GAJIN NADA
+GAJIN NEVENKA
+GAJIN PETAR
+GAJIN SLAVKA DR
+GAJIN SVETLANA
+GAJIN VLADIMIR
+GAJINA DRAGOMIR
+GAJINOV ŽIVAN
+GAJINOV ŽIVKO
+GAJINOV ŽIVKO
+GAJINOV ĐOKICA
+GAJINOV ALEKSANDAR
+GAJINOV ANĐELKA
+GAJINOV BRANKO
+GAJINOV DIMITRIJE
+GAJINOV DRAGOMIR
+GAJINOV IVANKA
+GAJINOV JELENA
+GAJINOV JOVAN
+GAJINOV JULKA
+GAJINOV KOSTA
+GAJINOV KOSTA
+GAJINOV LAZAR
+GAJINOV LAZAR
+GAJINOV LAZAR
+GAJINOV LJILJANA
+GAJINOV LJUBICA
+GAJINOV LJUBICA
+GAJINOV MARIJA
+GAJINOV MARKO
+GAJINOV MARKO
+GAJINOV MILAN
+GAJINOV MILORAD
+GAJINOV MILORAD
+GAJINOV MILORAD
+GAJINOV NIKOLA
+GAJINOV PERA
+GAJINOV PERSIDA
+GAJINOV RADA
+GAJINOV RADIVOJ
+GAJINOV RADIVOJ
+GAJINOV SAVA
+GAJINOV STEVAN
+GAJINOV STEVAN
+GAJINOV TODOR
+GAJINOV VELIMIR
+GAJINOVIĆ ĐORĐE
+GAJINOVIĆ ĐORĐE
+GAJINOVIĆ DANICA
+GAJINOVIĆ DRAGANA
+GAJINOVIĆ DUŠAN
+GAJINOVIĆ IKONIJA
+GAJINOVIĆ JOVAN
+GAJINOVIĆ JOVAN
+GAJINOVIĆ KATICA
+GAJINOVIĆ LJUBICA
+GAJINOVIĆ MILAN
+GAJO IŠTVAN
+GAJODI JOŽEF
+GAJODI MARIJA
+GAJOVIĆ JULIJANA
+GAJOVIĆ MOMČILO
+GAJOVIĆ RADOJE
+GAJTA ANICA
+GAJTA AURELIJA
+GAK ALEKSANDRA
+GAK MILAN
+GAK NEVENKA
+GAK RADE
+GAK SLAVKO
+GAK SNEŽANA
+GAK ZORKA
+GAKIĆ BOŠKO
+GAKOVIĆ ANTONIJA
+GAKOVIĆ JELENA
+GAKOVIĆ MARIJA
+GAKOVIĆ MIRKO
+GAKOVIĆ MIRKO
+GAKOVIĆ RANKO
+GAKOVIĆ ZORA
+GAL ŠANDOR
+GAL ĐULA
+GAL ĐULA
+GAL ANKA
+GAL FERENC
+GAL FERENC
+GAL FERENC
+GAL GABOR
+GAL GIZELA
+GAL JANOŠ
+GAL JOŽEF
+GAL JOŽEF
+GAL JOVAN
+GAL KALMAN
+GAL LAJOŠ
+GAL LAJOŠ
+GAL MARGIT
+GAL MARIA
+GAL MIŠA
+GAL MIKLOŠ
+GAL PAVLE
+GAL PETAR
+GAL PETAR
+GAL STEVAN
+GALAC JOSIP
+GALAC PAVLE
+GALAMB ATILA
+GALAMBOŠ ANA
+GALAMBOŠ ANTON
+GALAMBOŠ ERŽEBET
+GALAMBOŠ IMRE
+GALAMBOŠ JOSIP
+GALAMBOŠ LASLO
+GALAMBOŠ LASLO
+GALBAČ JOŽEF
+GALEČIĆ BRANISLAV
+GALEČIĆ DRAGAN
+GALEČIĆ MIROSLAV
+GALEČIĆ ZORAN
+GALEČIĆ ZORAN
+GALEŠEV ŽIVOJIN
+GALEŠEV DUBRAVKA
+GALEŠEV SLOBODAN
+GALETIĆ ALEKSANDAR
+GALETIĆ MARIJA
+GALETIĆ MILAN
+GALETIĆ VASA
+GALETIĆ VLADIMIR
+GALETIĆ ZORA
+GALETIN MILICA
+GALETIN NIKOLA
+GALETIN PAJICA
+GALETIN SIMA
+GALETIN SLAVKO
+GALETIN-SMIT RADOJKA
+GALETIN STEVAN
+GALETIN ZLATKO
+GALFI JOSIP
+GALFI MILENA
+GALGO IŠTVAN
+GALIČIĆ BRANKO
+GALIČIĆ MILICA
+GALIĆ DUŠANKA
+GALIĆ IVANKA
+GALIĆ JOVAN
+GALIĆ JOVAN
+GALIĆ JOVAN
+GALIĆ KATICA
+GALIĆ KATICA
+GALIĆ LADISLAV
+GALIĆ LJUBICA
+GALIĆ MARIJAN
+GALIĆ MILADIN
+GALIĆ MILENKO
+GALIĆ MILKA
+GALIĆ MILOŠ
+GALIĆ MILOVAN
+GALIĆ MIRKO
+GALIĆ MITAR
+GALIĆ MOMČILO
+GALIĆ NEDELJKO
+GALIĆ NIKOLA
+GALIĆ OLGA
+GALIĆ PETAR
+GALIĆ ROŽIKA
+GALIĆ SANJA
+GALIĆ SLAVKA
+GALIĆ STEVO
+GALIĆ TEREZA
+GALIĆ VOJISLAV
+GALIĆ ZDRAVKO
+GALICKI ĐURA
+GALIK ETELKA
+GALIPOVIĆ JOVICA
+GALKO JULIA
+GALO ĐURA
+GALONJA DESANKA
+GALONJA DRAGOLJUB
+GALONJA MIODRAG
+GALONJA MIRKO
+GALONJA RADE
+GALOVIĆ ĐORĐE
+GALOVIĆ ĐURA
+GALOVIĆ ALEKSANDRA
+GALOVIĆ ANĐELKA
+GALOVIĆ BRANKO
+GALOVIĆ DRAGICA DR
+GALOVIĆ IVICA
+GALOVIĆ JELICA
+GALOVIĆ LJUBICA
+GALOVIĆ MILAN
+GALOVIĆ MILAN
+GALOVIĆ MILENKO
+GALOVIĆ RADOMIR
+GALOVIĆ STEVO
+GALOVIĆ ZORKA
+GALUS LASLO
+GAMBER SLOBODAN
+GANDŽI SAVKA
+GANGLI ANA
+GANIĆ ALOJZIJE
+GANIĆ ALOJZIJE
+GANIĆ MIŠO
+GANIĆ STANISLAVA
+GANIĆ ZDENKO
+GANIĆ ZORICA
+GANJI SAMUEL
+GANTAR ALEKSANDRA
+GANTAR FILIP
+GANTAR MIROSLAV DR
+GARČEV DANICA
+GARČEV MILUTIN
+GARČEVIĆ PERO
+GARČEVIĆ PERO
+GARAŠEVIĆ MILKA
+GARABA ANDRIJA
+GARABANDIĆ ĐORĐE
+GARABANDIĆ MARIJA
+GARABANDIĆ MILENKO
+GARABANDIĆ NIKOLA
+GARABANTIN IVAN
+GARABANTIN MILOVAN
+GARABANTIN STEVAN
+GARAI BELA
+GARAI KORNELIJA
+GARAJ BRANIMIR
+GARAJ JELENA
+GARAJ OLGA
+GARALEJIĆ VERICA
+GARAPIĆ BRANKO DIPL ING
+GARDAŠEVIĆ MILOŠ
+GARDAŠEVIĆ-STRIČEVIĆ JOVANKA
+GARDAŠEVIĆ VESELIN
+GARDIĆ ALIJA
+GARDINOVAČKI ĐORĐE
+GARDINOVAČKI BORISLAV
+GARDINOVAČKI BRANIMIR
+GARDINOVAČKI CVETA
+GARDINOVAČKI MIORKA
+GARDINOVAČKI NEDELJKO
+GARDINOVAČKI STEVAN
+GARDINOVAČKI SVETOZAR
+GARELOVIĆ MIROSLAV
+GAREVSKI DIMITRIJA
+GARIĆ ŽARKO
+GARIĆ LAZAR
+GARIĆ LUKA
+GARIĆ MIROSLAV
+GARIĆ NADA
+GARIĆ STEVAN
+GAROVIĆ MILUTIN
+GAROVIĆ MILUTIN
+GAROVNIKOV ĐORĐE
+GAROVNIKOV BORKA
+GARTNER PETAR
+GARUNOVIĆ DANICA
+GARUNOVIĆ VASA
+GATALO GORAN
+GATALO RATKO
+GATARIĆ ŽELJKO
+GATARIĆ ŽELJKO
+GATARIĆ BOŠKO
+GATARIĆ DRAŽE
+GATARIĆ MANOJLO
+GATARIĆ SAVKA
+GATARIĆ STANA
+GATARIĆ SVETOZAR
+GATARIĆ ZLATIBOR
+GATER JOSIP
+GAUDENJI GABRIJELA
+GAUDENJI MATILD
+GAUDENJI TIVADAR
+GAVA ALEKSEJ
+GAVANSKI BRANISLAV ADVOKAT
+GAVANSKI BRANISLAVA
+GAVANSKI BRANISLAVA
+GAVANSKI DARA
+GAVANSKI DRAGAN
+GAVANSKI DUŠAN
+GAVANSKI GAVRILO
+GAVANSKI IVAN
+GAVANSKI JELENA
+GAVANSKI JUDITA
+GAVANSKI KONSTANTIN DR
+GAVANSKI KOSTA DPL ING
+GAVANSKI KOSTA
+GAVANSKI LAZAR
+GAVANSKI LUKA
+GAVANSKI MARGITA
+GAVANSKI MILICA
+GAVANSKI MILICA
+GAVANSKI NADA
+GAVANSKI NOVAK
+GAVANSKI PAVLE
+GAVANSKI PETRA
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI SVETOZAR
+GAVANSKI ZORAN
+GAVANSKI ZORAN
+GAVARIĆ ALEKSANDAR
+GAVARIĆ GAVRILO
+GAVARIĆ JEREMIJE
+GAVARIĆ LJUBICA
+GAVARIĆ MILENKO
+GAVLIK GERGELJ
+GAVODI ESTER
+GAVRAN GOJKO
+GAVRAN LJUBOMIR
+GAVRANČIĆ ĐURĐICA
+GAVRANČIĆ JOVAN
+GAVRANČIĆ KATICA
+GAVRANČIĆ MARGITA
+GAVRANČIĆ MARIJA
+GAVRANČIĆ NIKOLA
+GAVRANČIĆ VLADIMIR
+GAVRANIĆ GOJKO
+GAVRANIĆ ILIJA
+GAVRANIĆ ZVEZDANA
+GAVRANOV BOSA
+GAVRANOV SLOBODAN
+GAVRANOVIĆ TOMISLAV
+GAVRANOVIĆ ZDRAVKO
+GAVRIĆ ČEDOMIR
+GAVRIĆ ŽIVKA
+GAVRIĆ ĐORĐE
+GAVRIĆ BRANISLAV
+GAVRIĆ DIMITRIJE
+GAVRIĆ-GAZDIĆ NIKOLA
+GAVRIĆ IVAN
+GAVRIĆ IVAN
+GAVRIĆ JOVAN
+GAVRIĆ JOVO
+GAVRIĆ MARIJA
+GAVRIĆ MIHAJLO
+GAVRIĆ MILAN
+GAVRIĆ MILAN
+GAVRIĆ MILENA
+GAVRIĆ MILENKO
+GAVRIĆ MILENKO
+GAVRIĆ MILOŠ
+GAVRIĆ MIRKO
+GAVRIĆ MIROSLAV
+GAVRIĆ PETAR
+GAVRIĆ RADOMIR
+GAVRIĆ RADOSLAV
+GAVRIĆ SENKA
+GAVRIĆ SLAVKA
+GAVRIĆ SPASOJE
+GAVRIĆ SVETOZAR
+GAVRIĆ VELINKA
+GAVRIĆ VLADIMIR
+GAVRIĆ ZORAN
+GAVRIĆ ZORA
+GAVRILOV ŽIVKA
+GAVRILOV ANKICA
+GAVRILOV BOGDAN
+GAVRILOV GORDANA
+GAVRILOV HERMINA
+GAVRILOV JULKA
+GAVRILOV LJUBICA
+GAVRILOV MARTA
+GAVRILOV MILIVOJ
+GAVRILOV MILIVOJ
+GAVRILOV MILORAD
+GAVRILOV RADIVOJ
+GAVRILOV SLAVKO
+GAVRILOV SMILJA
+GAVRILOV TODOR
+GAVRILOV UROŠ
+GAVRILOVIĆ ŽIKICA
+GAVRILOVIĆ ŽIVKA
+GAVRILOVIĆ ŽIVOJIN DR
+GAVRILOVIĆ ALEKSANDAR
+GAVRILOVIĆ ALEKSANDAR
+GAVRILOVIĆ ALEKSA
+GAVRILOVIĆ BOGDANKA
+GAVRILOVIĆ BORIVOJ
+GAVRILOVIĆ BRANKA
+GAVRILOVIĆ BRANKO
+GAVRILOVIĆ DOBRILA
+GAVRILOVIĆ DOBRIVOJE
+GAVRILOVIĆ DUŠICA
+GAVRILOVIĆ EMIL
+GAVRILOVIĆ GROZDAN
+GAVRILOVIĆ JELISAVKA
+GAVRILOVIĆ JOVAN
+GAVRILOVIĆ JOVAN
+GAVRILOVIĆ KATICA
+GAVRILOVIĆ KLAUDIJA
+GAVRILOVIĆ LAZAR
+GAVRILOVIĆ LJUBOMIR
+GAVRILOVIĆ MARA
+GAVRILOVIĆ MARIJA
+GAVRILOVIĆ MARIJA
+GAVRILOVIĆ MILENA
+GAVRILOVIĆ MILENKO
+GAVRILOVIĆ MILENKO
+GAVRILOVIĆ MILICA
+GAVRILOVIĆ MILOŠ
+GAVRILOVIĆ MILOŠ
+GAVRILOVIĆ MILOJE
+GAVRILOVIĆ MILOSAVA
+GAVRILOVIĆ MILOVAN
+GAVRILOVIĆ MIRA
+GAVRILOVIĆ MIRJANA
+GAVRILOVIĆ MIRJANA
+GAVRILOVIĆ MIRKO
+GAVRILOVIĆ MIROSLAV
+GAVRILOVIĆ MIROSLAV
+GAVRILOVIĆ MITAR
+GAVRILOVIĆ MLADEN
+GAVRILOVIĆ NEBOJŠA
+GAVRILOVIĆ NIKOLA DR PROF
+GAVRILOVIĆ NIKOLA
+GAVRILOVIĆ PAVLE
+GAVRILOVIĆ RADOSLAV
+GAVRILOVIĆ RAJKA
+GAVRILOVIĆ SAVA DR
+GAVRILOVIĆ SAVO
+GAVRILOVIĆ SLAVICA
+GAVRILOVIĆ SLAVKO DR
+GAVRILOVIĆ SLAVKO
+GAVRILOVIĆ SLAVKO
+GAVRILOVIĆ SLAVOLJUB
+GAVRILOVIĆ SLOBODAN
+GAVRILOVIĆ SOFIJA
+GAVRILOVIĆ STANA
+GAVRILOVIĆ STEVA
+GAVRILOVIĆ STOJAN
+GAVRILOVIĆ TOŠA
+GAVRILOVIĆ TODOR
+GAVRILOVIĆ VERA DR
+GAVRILOVIĆ VERICA
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VUKICA
+GAVRILOVIĆ ZLATA
+GAVRILOVSKI PAVLINA
+GAVROVIĆ GORAN
+GAVROVIĆ GORDANA
+GAVROVIĆ LJUBIVOJE
+GAVROVIĆ SVETLANA LOKAL
+GAZAFI LASLO
+GAZDIĆ BORIVOJ
+GAZEPOV ILIJA
+GAZIĆ IVAN
+GAZIBARIĆ IZETA
+GAZIBARIĆ JELENA
+GAZIBARIĆ JOVANKA
+GAZIBARIĆ SIMA
+GAZIJA JOVAN
+GAZIVODA GOJKO
+GEČEVSKI SRETKO
+GEBAUER ERVIN DR
+GEBELS ANA
+GECI ĐURA
+GEDELOVSKI DUŠAN
+GEDELOVSKI SOFIJA
+GEGEŠ JULIJANA
+GEGEŠ NANDOR
+GEGEŠ SLAVICA
+GEGENBAUER DRAGUTIN
+GEGENBAUER ILONKA
+GEGENBAUER ZORA
+GEGIĆ ALEKSANDAR
+GEGIĆ NEMANJA
+GELEI JENE
+GELER ŠANDOR
+GELER ĐULA
+GELER ADAM
+GELER ALEKSANDAR
+GELER BELA
+GELER JELISAVETA
+GELER JOVAN
+GELER LASLO
+GELER LASLO
+GELER MARIJA
+GELER MARTA
+GELER OLGA
+GELER-PETKOVIĆ GIZELA
+GELER TIBOR
+GELJIĆ MATO
+GEMOVIĆ ALEKSANDAR
+GENC FERENC
+GENC LAJOŠ
+GENCEL JULIJANA
+GENCEL MARIJANA
+GENCEL VALERIJA
+GENCI JOSIP
+GENEVAJN ĐURA
+GENEVAJN JOVAN
+GENEVAJN KARLO
+GENEVAJN LAJOŠ
+GENEVAJN LAJOŠ
+GENOVA MAJDA DIPL ING
+GENOVA MILICA DIPL ING
+GEORGIEV LEPOSAVA
+GEORGIEVSKI PERO
+GEORGIEVSKI VASIL
+GEORGIJEVIĆ ŽIVKO
+GEORGIJEVIĆ ALEKSANDAR
+GEORGIJEVIĆ IVANA
+GEORGIJEVIĆ JOVAN
+GEORGIJEVIĆ JOVAN
+GEORGIJEVIĆ LAZAR
+GEORGIJEVIĆ LAZA
+GEORGIJEVIĆ LJUBIŠA
+GEORGIJEVIĆ MILAN
+GEORGIJEVIĆ MILOSAV
+GEORGIJEVIĆ MILOVAN
+GEORGIJEVIĆ NESTOR
+GEORGIJEVIĆ RADOVAN
+GEORGIJEVIĆ VOJISLAV
+GERA IBOLJA
+GERAK EMILIJA
+GERASIMOVSKI ZLATE
+GERATOVIĆ ZORAN
+GERDIJAN ČEDOMIR
+GERE LAJOŠ
+GERE ZOLTAN
+GERECI JURAJ
+GEREG ŽUŽANA
+GEREG ANDRAŠ
+GEREG BLANKA
+GEREG EUGEN
+GEREG TIBOR
+GERGEČ SMILJA
+GERGELJ ŠIMON
+GERI TEREZA
+GERIĆ ŽARKO
+GERIĆ ĐORĐE
+GERIĆ ALEKSANDAR
+GERIĆ ANTON
+GERIĆ CVETA
+GERIĆ GINA
+GERIĆ GORDANA
+GERIĆ IVAN
+GERIĆ IVAN
+GERIĆ KOSTA
+GERIĆ KOVICA
+GERIĆ LJUBOMIR
+GERIĆ MARIJA
+GERIĆ MILAN
+GERIĆ MILOŠ
+GERIĆ MILOŠ
+GERIĆ MIRKO
+GERIĆ NEDELJKO
+GERIĆ NESTOR
+GERIĆ OBRAD
+GERIĆ PETAR
+GERIĆ RADINKA
+GERIĆ STEVAN
+GERIH ANDRIJA
+GERL FERDO
+GERL MARIJA
+GERLA DRAGANA
+GERLA LADISLAV
+GERLA TEODOR
+GERMANOVIĆ MILAN
+GERMANOVIĆ STANOJE
+GERNAČ ĐORĐE
+GERNAČ FRANJA
+GERNAČ LADISLAV
+GERO ĐERĐ
+GERO DUŠANKA
+GERO JANOŠ
+GERO JOŽEF
+GERO KARLO
+GERO LAJOŠ
+GERO MARGITA
+GEROLD JAKOB
+GEROLD LASLO
+GEROV ANGEL DIPL ING
+GERTNER ANA
+GERTNER FRANJA
+GERTNER JOŽEF
+GERTNER REŽE
+GETEL HELMUT
+GEZ JANOŠ
+GEZ JELICA
+GEZ KATICA
+GEZ TIBOR
+GEZ VERONIKA
+GHANDOUR-ŠAL JULIJANA
+GIADROŠIĆ MARIJA
+GIBANICA GEORGINA
+GIGA SRETEN
+GIGIĆ MIOMIR
+GIGIĆ MIRJANA
+GIGIĆ ZORAN
+GIKIĆ BOŽIDAR
+GIKIĆ DIMITRIJE
+GIKIĆ RADIVOJE
+GIKOVSKI MINO
+GILEZAN KORIOLAN
+GILG IRENA
+GILIĆ DRAGAN
+GILIĆ DRAGAN
+GIMBOŠ DOBRIVOJE
+GINCULJ SERGIJE DIPL ING
+GION ALEKSANDAR
+GION ANA DR
+GION IŠTVAN
+GION KALMAN
+GION NANDOR
+GIRIĆ MATIJA
+GIRIC BELA
+GIRIC ELENA
+GIRIC IMRE
+GIRIC JOŽEF
+GIRIC LASLO
+GIRIC-MOKUŠ KLARA
+GIRIZD LASLO NOVINAR
+GIRNT ROZALIJA
+GIS HEDVIGA
+GJAFO MATIJA
+GJER VLADIMIR
+GLADIŠ STEVAN
+GLADIĆ MILAN
+GLADIĆ RAJKO
+GLADIĆ SVETOZAR
+GLADOVIĆ DUŠAN
+GLADOVIĆ TATJANA
+GLAJH GEORG
+GLAMOČANIN NEVENKA
+GLAMOČANIN NEVENKA
+GLAMOČANIN PERO
+GLAMOČANIN VLADIMIR
+GLAMOČIĆ DANE
+GLAMOČIĆ SNEŽANA
+GLAMOČLIJA RUŽICA
+GLANC ANTUN
+GLASOVAC MARTA
+GLAVČIĆ MILORAD
+GLAVAŠ ŽARKO
+GLAVAŠ JOVO
+GLAVAŠ MILAN
+GLAVAŠ-TRBIĆ BOŠKO
+GLAVAŠEVIĆ ANĐELKO
+GLAVAŠEVIĆ ANĐELKO
+GLAVAŠKI ŽIVOJIN
+GLAVAŠKI ALEKSANDAR
+GLAVAŠKI ALEKSANDRA
+GLAVAŠKI ANĐELKA
+GLAVAŠKI BOGDAN DIPL ING
+GLAVAŠKI BRANISLAV
+GLAVAŠKI BRANKO DIPL PRAVNIK
+GLAVAŠKI DRAGAN
+GLAVAŠKI DUŠAN
+GLAVAŠKI GLIŠA
+GLAVAŠKI MILUTIN
+GLAVAŠKI NEMANJA
+GLAVAŠKI SIMA
+GLAVAŠKI SINIŠA
+GLAVAŠKI SMILJKA
+GLAVAN JOVAN
+GLAVANIĆ BOSILJKA
+GLAVANIĆ JULKA
+GLAVANIĆ MIRKO
+GLAVARDANOV ALEKSANDAR
+GLAVARDANOV IVAN DIPL ING
+GLAVARDANOV MARIJA
+GLAVARDANOV SOKO
+GLAVATOVIĆ DRAGAN
+GLAVATOVIĆ DUŠAN
+GLAVIČIĆ MARIJANA
+GLAVIĆ BOŠKO
+GLAVIĆ GAVRO
+GLAVIĆ JELKA
+GLAVIĆ RADISLAV
+GLAVINIĆ JOVO
+GLAVINIĆ MILORAD
+GLAVOČEVIĆ ILIJA
+GLEĐA MILENKO
+GLEDIĆ MILICA
+GLIŠIĆ ĐORĐO
+GLIŠIĆ BORISLAV
+GLIŠIĆ BRANKO
+GLIŠIĆ GRADIMIR
+GLIŠIĆ ILIJA
+GLIŠIĆ IVAN
+GLIŠIĆ JELICA
+GLIŠIĆ JOVAN
+GLIŠIĆ-KESEG VALERIJA
+GLIŠIĆ LJUBIŠA
+GLIŠIĆ MILEVA
+GLIŠIĆ NENAD
+GLIŠIĆ PREDRAG
+GLIŠIĆ RADOMIR
+GLIŠIĆ SIMO
+GLIŠIĆ SRETA
+GLIŠIĆ VESNA
+GLIŠIĆ ZORAN
+GLIŠIN ĐORĐE
+GLIŠIN BRANKA
+GLIŠIN NENAD
+GLIŠOVIĆ MARIJA
+GLIBIĆ MILAN
+GLIBOTA VLADO
+GLIGIĆ ŽELJKA
+GLIGIĆ MIRA
+GLIGIĆ NEDELJKO
+GLIGIĆ TOMISLAV
+GLIGOREVIĆ DUŠKO
+GLIGOREVIĆ TOMO
+GLIGORIĆ ŽELJKO
+GLIGORIĆ ŽIVOJIN
+GLIGORIĆ ŽIVORAD
+GLIGORIĆ ANĐELKA
+GLIGORIĆ CVETANKA
+GLIGORIĆ DRAGAN
+GLIGORIĆ DRAGAN
+GLIGORIĆ DRAGIŠA
+GLIGORIĆ DRAGICA
+GLIGORIĆ DRAGINJA
+GLIGORIĆ DRAGOMIR
+GLIGORIĆ JELENA
+GLIGORIĆ KATICA
+GLIGORIĆ LJUBOMIR
+GLIGORIĆ MILAN
+GLIGORIĆ MILAN
+GLIGORIĆ MILORAD
+GLIGORIĆ MLADEN
+GLIGORIĆ NIKOLA
+GLIGORIĆ RADIŠA
+GLIGORIĆ STANOJE
+GLIGORIĆ STEVAN
+GLIGORIĆ STEVAN
+GLIGORIJEVIĆ ALEKSANDAR
+GLIGORIJEVIĆ DRAGANA
+GLIGORIJEVIĆ DRAGICA
+GLIGORIJEVIĆ KRSTA
+GLIGORIJEVIĆ MIHAJLO
+GLIGORIJEVIĆ MIODRAG
+GLIGORIJEVIĆ PETRA
+GLIGORIJEVIĆ RUŽICA
+GLIGORIN ĐURĐINKA
+GLIGORIN BOJANA
+GLIGORIN MIROSLAV
+GLIGORIN SLAVICA
+GLIGORIN STEVAN
+GLIGORIN TOMISLAV
+GLIGORIN ZORAN
+GLIGORIN ZORKA
+GLIGOROV DESIMIR
+GLIGOROV JOVAN
+GLIGOROV LEKA
+GLIGOROV LJUBOMIR
+GLIGOROVIĆ SLAVKO
+GLIGOROVSKI TRAJKO
+GLINTIĆ MILE
+GLINTIĆ MIODRAG
+GLINTIĆ NIKOLA
+GLINTIĆ RADOSLAV
+GLINTIĆ SAVKA
+GLINTIĆ VESELKA
+GLOŽANSKI MARIJA
+GLOŽANSKI PETAR
+GLOŽANSKI VOJISLAV
+GLOGONJAC VITOMIR
+GLOGOVČAN MILOŠ DIPL ING
+GLOGOVAC JEVREM
+GLOGOVAC KORNELIJA
+GLOGOVAC MIRKO
+GLOGOVAC MOMČILO
+GLUŠAC BOŽIDAR
+GLUŠAC DUŠAN
+GLUŠAC MIHAJLO
+GLUŠAC MILAN
+GLUŠAC MILOŠ
+GLUŠAC MILORAD
+GLUŠAC PETAR
+GLUŠIĆ BRANKO
+GLUŠICA LJUBOMIR
+GLUŠICA MILAN
+GLUŠICA MILAN
+GLUŠICA MILE
+GLUŠICA NENAD
+GLUŠICA PETAR
+GLUŠICA SLAĐANA
+GLUŠICA SLAVKA
+GLUŠICA ZDRAVKO
+GLUHAIĆ ANĐELKO
+GLUHAJIĆ BOŽO
+GLUHAK KARLO
+GLUHOVIĆ MILOŠ
+GLUHOVIĆ MILOMIR
+GLUHOVIĆ VELJKO
+GLUMAC DANE
+GLUMAC DANILO
+GLUMAC DANILO
+GLUMAC DRAGAN
+GLUMAC DUŠAN
+GLUMAC GAVRA
+GLUMAC JELENA
+GLUMAC LAZO
+GLUMAC LJUBO
+GLUMAC MAGDALENA
+GLUMAC MILAN
+GLUMAC MILE
+GLUMAC MIODRAG DR
+GLUMAC MIROSLAV
+GLUMAC SLOBODAN DR
+GLUMIČIĆ MANDA
+GLUVAIĆ ĐORĐE
+GLUVAJIĆ DRAGAN
+GLUVAJIĆ JOVAN
+GLUVAKOV MILADINKA
+GLUVAKOV PAVLE
+GLUVAKOVIĆ VLADIMIR
+GLUVNJA STEVAN
+GMIZIĆ BRANISLAV
+GMIZIĆ NEGOVAN
+GMIZIĆ VLADA
+GNIP JOAKIM
+GNIP VELIMIR DIPL ING
+GNIP VERA
+GNIP VLADIMIR
+GNJATIĆ STOJANKA
+GNJEČ SVEN
+GOČANIN RADE
+GOČIĆ ANĐA
+GOŠIĆ JEVREM
+GOŠIĆ LJILJA
+GOŠIĆ PAVLE
+GOŠIĆ PAVLE
+GOŠIĆ PAVLE
+GOŠIĆ TOMISLAV
+GOŠIĆ TOMISLAV
+GOŠNJIĆ DOBRIVOJ
+GOĐEVAC BOSILJKA
+GOBEC KATICA
+GOBEC MILAN
+GOBELJIĆ MILOVAN
+GOBELJIĆ STRAHINJA
+GOBELJIĆ SVETISLAV
+GOBELJIĆ VUKADIN
+GOBELJIĆ VUK
+GOBOR ANA
+GOBOR LADISLAV
+GOBOR ZOLTAN
+GOBOR ZOLTAN
+GOCIĆ BOGOSAV
+GOCIĆ JEVROSIMA
+GOCIĆ VIDOJKO
+GODA OLIVIJA
+GODAR KATARINA
+GODIĆ MARIJA
+GODIĆ ZVONKO
+GODIĆ ZVONKO
+GODINA DARKO
+GODINA MILKO
+GODINSKI VLADIMIR
+GODOŠEV KRSTA
+GODOR ŠANDOR
+GODOR JANOŠ
+GODOR JOSIP
+GODUNC DUŠAN
+GOGIĆ DOBRILO
+GOGIĆ DRAGOLJUB
+GOGIĆ MARA
+GOGIĆ PAVLE
+GOGIĆ SLAVKO
+GOGIĆ VELINKA
+GOGOLAK MARGITA
+GOGOLJEV MIHAJLO
+GOGOLJEV ULJANA
+GOGOLJEV VASILIJE
+GOGOV MILAN
+GOJAN FERENC
+GOJIĆ DRAGAN
+GOJIĆ GOJKO
+GOJIĆ MILENA
+GOJIĆ MILE
+GOJKOV ŽIVKO
+GOJKOV JULIJANA
+GOJKOV MILENA
+GOJKOV RADOMIR
+GOJKOV VASILIJE
+GOJKOVIĆ DONKA
+GOJKOVIĆ DRAGAN
+GOJKOVIĆ DRAGORAD
+GOJKOVIĆ DUŠAN
+GOJKOVIĆ GEORGIJE DIPL ING
+GOJKOVIĆ ILIJA
+GOJKOVIĆ JELA
+GOJKOVIĆ LJUBIŠA
+GOJKOVIĆ MILISAV
+GOJKOVIĆ MITA
+GOJKOVIĆ NADEŽDA
+GOJKOVIĆ NEVENKA
+GOJKOVIĆ PAVLE
+GOJKOVIĆ RADMILO
+GOJKOVIĆ RADOLJUB
+GOJKOVIĆ SAVO
+GOJKOVIĆ TOMISLAV
+GOJNIĆ DAVOR
+GOJOVIĆ VUKOSAV
+GOKLER ILONA
+GOLDMAN ANKICA
+GOLDMAN-TOMAŠEVIĆ EVA
+GOLEŠ RUŽA
+GOLENIĆ SLAVKO
+GOLENJA BRANKO
+GOLENJA IRENA
+GOLENJA MIROSLAVA
+GOLENJA MIROSLAVA
+GOLEVA NADA
+GOLIŠEVIĆ MIRJANA
+GOLIĆ ŽIVAN
+GOLIĆ ĐORĐE
+GOLIĆ ALEKSANDAR
+GOLIĆ ANICA
+GOLIĆ DOBRIVOJE
+GOLIĆ FAID
+GOLIĆ LJUBOMIR
+GOLIĆ MARKO
+GOLIĆ SLAVKA
+GOLIĆ STANKA
+GOLIĆ TOMISLAV
+GOLIĆ VOJIN
+GOLIĆ VOJKO
+GOLIJAN ANA
+GOLIJANIN DUŠANKA
+GOLIJANIN ERŽEBET
+GOLIK OLGA
+GOLIK SLOBODAN
+GOLJEVAČKI DRAGICA
+GOLO ALEKSANDAR
+GOLO DRAGOSLAV
+GOLOČORBIN SLAVUJ
+GOLOČORDIN DRAGO
+GOLOŠIN-DIMITRIJEVIĆ LJILJANA
+GOLOŠIN STEVICA
+GOLOBOČANIN MILOSAV
+GOLOMEJIĆ MILORAD
+GOLONIĆ ZAGORKA
+GOLOUH IVAN
+GOLOVIĆ JOVAN
+GOLUŠIN BRANISLAV
+GOLUŠIN DRAGAN
+GOLUŠIN LJUBICA
+GOLUŠIN LJUBOMIR
+GOLUŠIN-MIĆIĆ MILENKO
+GOLUŠIN MIODRAG
+GOLUŠIN NADA
+GOLUŠIN NIKOLA
+GOLUBIČIĆ VERA
+GOLUBIĆ MILIVOJE
+GOLUBJATNIKOVA NINA
+GOLUBOV NAKA
+GOLUBOVIĆ ČEDOMIR
+GOLUBOVIĆ ĐORĐE
+GOLUBOVIĆ ALEKSANDAR
+GOLUBOVIĆ ARSEN
+GOLUBOVIĆ BOŠKO
+GOLUBOVIĆ BOGDAN
+GOLUBOVIĆ BORIVOJ
+GOLUBOVIĆ BRANKO
+GOLUBOVIĆ DIMITRIJE
+GOLUBOVIĆ DOBRILA
+GOLUBOVIĆ DRAGANA
+GOLUBOVIĆ DRAGAN
+GOLUBOVIĆ DRAGA
+GOLUBOVIĆ GOLUB
+GOLUBOVIĆ GOLUB
+GOLUBOVIĆ ILIJA
+GOLUBOVIĆ IVAN
+GOLUBOVIĆ JEREMIJE
+GOLUBOVIĆ JOVAN
+GOLUBOVIĆ KSENIJA
+GOLUBOVIĆ LJILJANA
+GOLUBOVIĆ LJUBINKA
+GOLUBOVIĆ LUKA
+GOLUBOVIĆ MANOJLO
+GOLUBOVIĆ MANOJLO
+GOLUBOVIĆ MARIJA
+GOLUBOVIĆ MIHAJLO
+GOLUBOVIĆ MILAN
+GOLUBOVIĆ MILENKO
+GOLUBOVIĆ MILENKO
+GOLUBOVIĆ MILUN
+GOLUBOVIĆ MILUTIN
+GOLUBOVIĆ MIODRAG
+GOLUBOVIĆ MIRJANA
+GOLUBOVIĆ MIROSLAV
+GOLUBOVIĆ MLAĐEN
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ NADA
+GOLUBOVIĆ NIKOLA
+GOLUBOVIĆ OLGICA
+GOLUBOVIĆ PERIŠA
+GOLUBOVIĆ SEKULA
+GOLUBOVIĆ STANA
+GOLUBOVIĆ STANA
+GOLUBOVIĆ TEODORA
+GOLUBOVIĆ TIHOMIR
+GOLUBOVIĆ TOMO
+GOLUBOVIĆ VALERIJA
+GOLUBOVIĆ VELIZAR
+GOLUBOVIĆ VUKAŠIN
+GOLUBOVIĆ VUKAŠIN
+GOLUBOVIĆ ZORAN
+GOLUBOVIĆ ZVONIMIR
+GOLUBSKI MILICA
+GOLUBSKI RUŽA
+GOMBAŠ TAMAŠ
+GOMBAR ŠANDOR
+GOMBAR ELIZABETA
+GOMBAR FERENC
+GOMBAR IŠTVAN
+GOMBAR JANOŠ
+GOMBAR JANOŠ
+GOMBAR KATALIN
+GOMBAR MIHALJ
+GOMBAR ROZALIJA
+GOMBOŠ IŠTVAN
+GOMBOŠ IVICA
+GOMBOŠ KARLO
+GOMBOVIĆ BRANKO
+GOMIRAC ŽIVKO
+GOMIRAC BRANKO
+GOMIRAC STOJAN
+GONČIN SRETKO
+GONĐA ŽIVAN
+GONĐA MILENA
+GONĐA PETAR
+GONDA LADISLAV
+GONDAR RUŽA
+GONJA BRANIMIR
+GONJA MILOSLAV
+GONJA PETAR
+GORŠE ANDRIJA
+GORANOVIĆ DRAGO
+GORANOVIĆ MIRKO
+GORBANOV IVAN
+GORDANIĆ STOJAN
+GORDIĆ DARINKA
+GORDIĆ GOJKO
+GORDIĆ LAVINIJA
+GORDIĆ MILORAD
+GORDIĆ MILOVAN
+GORDIĆ RISTO
+GORDIĆ SLAVKO
+GORDIĆ STEVAN
+GORDIĆ VITOMIR
+GORDOŠ ŽUŽANA
+GOREČAN KARLO
+GOREC DRAGUTIN
+GOREC NADA
+GORENJAK RUDOLF
+GORIČANEC MIJO
+GORJANAC BRANKO
+GORJANAC MARIN
+GORNJAK KATICA
+GORTVA JOSIP
+GOSARIĆ FRANJA
+GOSPIĆ NEDELJKO
+GOSPOĐINAČKI RADOVAN
+GOSPODINOVIĆ IVAN
+GOSTIĆ ZDRAVKO
+GOSTIMIROVIĆ MARIN
+GOSTIMIROVIĆ PETAR
+GOSTOJIĆ ĐURĐINKA
+GOSTOJIĆ DUŠAN
+GOSTOJIĆ JOVAN
+GOSTOJIĆ LAZAR
+GOSTOJIĆ MILANA
+GOSTOJIĆ MILOŠ
+GOSTOJIĆ MIROSLAV
+GOSTOJIĆ MITAR
+GOSTOJIĆ SLAVKA
+GOSTOJIĆ SLOBODANKA
+GOSTOJIĆ TEODOR
+GOSTOVIĆ ĐORĐE
+GOSTOVIĆ BOGDAN
+GOSTOVIĆ IKA
+GOSTOVIĆ LJUBOMIR
+GOSTOVIĆ MOMIR
+GOTŠTAJN FERENC
+GOVEDARICA ČEDO
+GOVEDARICA ŽELIMIR
+GOVEDARICA DEJAN
+GOVEDARICA DRAGICA
+GOVEDARICA MILENKO
+GOVEDARICA MILOVAN
+GOVEDARICA MITAR
+GOVEDARICA MITAR
+GOVEDARICA PAVLE
+GOVEDARICA SIMO
+GOVEDARICA SLAVKO
+GOVEDARICA TATAJANA
+GOVEDARICA VELIMIR
+GOVEDARICA VLADIMIR
+GOVEDAROVIĆ JULIJA
+GOVEDAROVIĆ NIKOLA
+GOVEDAROVIĆ PETAR
+GOVORČIN ŽIVKA
+GOVORČIN BOGDAN
+GOVORČIN DARINKA
+GOVORČIN DELINKA
+GOVORČIN DIMITRIJE
+GOVORČIN DIMITRIJE
+GOVORČIN DUŠAN
+GOVORČIN GAVRA
+GOVORČIN LAZAR
+GOVORČIN MLADEN
+GOVORČIN SAVA
+GOVORČIN SLAVICA
+GOVORČIN SLOBODAN
+GOVORČIN STEVAN
+GOVORČIN STOJAN
+GOVORČIN VERA
+GOVORČIN VLADA
+GOVORČIN VLADIMIR
+GOVORČINOV MIROSLAV
+GRČANAC BRANKO
+GRČE MILAN
+GRČIĆ MILENKO
+GRČIĆ MILIVOJ
+GRČIĆ SLOBODAN DIPL ING
+GRČIĆ SVETISLAV
+GRČIĆ-TUBIĆ JOVANKA
+GRČIĆ VERICA
+GRČIĆ ZORKA
+GRČKI MILE
+GRČKI MIRJANA
+GRŠIĆ ĐORĐE
+GRŠIĆ ĐORĐE
+GRŠIĆ MILICA
+GRŠIĆ NIKOLA
+GRŠIĆ RUŽICA
+GRŠIĆ SOFIJA
+GRĐIĆ DRAGUTIN
+GRAČANIN IVAN
+GRAČANIN VALERIJA
+GRAČEK STEVAN
+GRAČIK SLAVKA
+GRAČIK STEVAN
+GRAČKO ŠANDOR
+GRAČKO OLGA
+GRAČKO OLGA
+GRAČKO ROZALIJA
+GRAŠA JOSIP
+GRAŠAR ANA
+GRAŠIĆ VALENTIN
+GRAŠIĆ ZDENKO
+GRAŠNER SOFIJA
+GRAĐIN MILOŠ
+GRAB FERENC
+GRABAR JOSIPA
+GRABAR JOSIP
+GRABAR MIRKO
+GRABEŽ ILE
+GRABEŽ JOJA
+GRABIĆ STEVAN
+GRABIĆ UROŠ
+GRABOCI RAMADAN
+GRABOVAC ACO
+GRABOVAC CVETA
+GRABOVAC DIMITRIJE
+GRABOVAC JOVAN
+GRABOVAC NEVENKA
+GRABOVAC RANKO
+GRABOVAC SIMEUN
+GRABUNDŽIJA JULIJANA
+GRADAŠČEVIĆ OSMAN
+GRADIĆ ŽIVKO
+GRADIĆ BOŽICA
+GRADIĆ DANKA
+GRADIĆ SPASOJE
+GRADINČEVIĆ ARSENIJE
+GRADINA SMILJKA
+GRADINAC ALEKSANDAR
+GRADINAC SREDOJE
+GRADINAC SREDOJE
+GRADINAC SREDOJE
+GRADINAROV DIMITRIJE
+GRADOJEVIĆ KATICA
+GRADOJEVIĆ LJUBICA
+GRAHEK NADA
+GRAHOVAC ĐORĐE
+GRAHOVAC ĐORĐE
+GRAHOVAC BRANISLAV
+GRAHOVAC CVIJO
+GRAHOVAC DANIJELA
+GRAHOVAC DRAGANA
+GRAHOVAC DRAGICA
+GRAHOVAC DUŠANKA
+GRAHOVAC DUŠAN
+GRAHOVAC DUŠAN
+GRAHOVAC DUŠAN
+GRAHOVAC GOJKO
+GRAHOVAC JANKO
+GRAHOVAC JOVAN
+GRAHOVAC JOVAN
+GRAHOVAC MIODRAG
+GRAHOVAC MIRKO
+GRAHOVAC MIROSLAV
+GRAHOVAC NADA
+GRAHOVAC NIKOLA
+GRAHOVAC OBRAD
+GRAHOVAC RADE
+GRAHOVAC RANKA
+GRAHOVAC SLAVICA
+GRAHOVAC SLAVKO
+GRAHOVAC SLAVKO
+GRAHOVAC SMILJA
+GRAHOVAC SPASO
+GRAHOVAC VASO
+GRAHOVAC VELIMIR
+GRAHOVAC ZDENKO
+GRAJLING EMIL
+GRANDIĆ MIJODRAG
+GRANDIĆ MILICA
+GRANDIĆ RADOVAN DR PROF
+GRANDIĆ STOJAN
+GRANIĆ MARIJA
+GRANIĆ MARIJA
+GRANIĆ NIKOLA
+GRANULA GOJKO
+GRAONJA ĐURO
+GRAOR MIROSLAV
+GRAOR SLAVKO
+GRAORAC ISIDOR
+GRAOVAC ĐORĐE
+GRAOVAC AORIKA
+GRAOVAC BLAŽ
+GRAOVAC BOGDAN
+GRAOVAC BOGDAN
+GRAOVAC BORISLAV
+GRAOVAC DUŠAN
+GRAOVAC MILOŠ
+GRAOVAC MILORAD
+GRAOVAC OLIVERA
+GRAOVAC-PADROV LJUBINKA
+GRAOVAC SLOBODANKA
+GRAPČAK JOSIP
+GRAVARA DRAGICA
+GRAVARA NIKOLA
+GRAVARA RADE
+GRBA KOSTA
+GRBA MILAN
+GRBA NEVENKA
+GRBA VUKOJICA
+GRBATINIĆ MILAN
+GRBATINIĆ MILOŠ
+GRBAV JON
+GRBAVAC NEVENKA
+GRBAVAC NIKOLA
+GRBIĆ ŽIVAN
+GRBIĆ ŽIVKO
+GRBIĆ ĐORĐE MR
+GRBIĆ ĐURAĐ
+GRBIĆ ĐURO
+GRBIĆ ANĐELIJA
+GRBIĆ ANKA
+GRBIĆ ANKICA
+GRBIĆ BOŠKO
+GRBIĆ BOGDANKA
+GRBIĆ BORIVOJE
+GRBIĆ BRANKO
+GRBIĆ DŽEVAD
+GRBIĆ DARINKA
+GRBIĆ DESA
+GRBIĆ DRAGAN
+GRBIĆ DRAGAN
+GRBIĆ DRAGAN
+GRBIĆ DRAGO
+GRBIĆ DRENKA
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠICA
+GRBIĆ GOJKO
+GRBIĆ GORAN
+GRBIĆ JOVANKA
+GRBIĆ JOVANKA
+GRBIĆ JOVAN
+GRBIĆ JOVAN
+GRBIĆ JOVICA
+GRBIĆ JOVO
+GRBIĆ LAZAR
+GRBIĆ LJUBAN
+GRBIĆ LJUBIŠA
+GRBIĆ MARIJA
+GRBIĆ MILAN
+GRBIĆ MILAN
+GRBIĆ MILAN
+GRBIĆ MILENA
+GRBIĆ MILENA
+GRBIĆ MILENKO
+GRBIĆ MILENKO
+GRBIĆ MILE
+GRBIĆ MILIĆ
+GRBIĆ MILICA
+GRBIĆ MILKA
+GRBIĆ MILOŠ
+GRBIĆ MILOŠ
+GRBIĆ MILORAD
+GRBIĆ MILOVAN
+GRBIĆ MILOVAN
+GRBIĆ MILUTIN
+GRBIĆ MIRA
+GRBIĆ MIRA
+GRBIĆ MLADEN
+GRBIĆ NIKOLA
+GRBIĆ OSTOJA
+GRBIĆ PETAR
+GRBIĆ PETAR
+GRBIĆ PETAR
+GRBIĆ RADE
+GRBIĆ ROSA
+GRBIĆ SLOBODAN
+GRBIĆ STEVAN
+GRBIĆ STEVAN
+GRBIĆ STEVO
+GRBIĆ SVETKO
+GRBIĆ VASA DR
+GRBIĆ VERA
+GRBIĆ VID
+GRBIĆ VOJIN
+GRBIĆ VOJISLAV
+GRBIĆ VUKOSAVA
+GRBIN MARIJA
+GRBIN RADOSLAV
+GRBOVAC MIHALJ
+GRBOVIĆ ALIL
+GRBOVIĆ DRAGAN
+GRBOVIĆ GAVRILO
+GRBOVIĆ JOVAN
+GRBOVIĆ JOVAN
+GRBOVIĆ MILAN
+GRBOVIĆ MILAN
+GRBOVIĆ MIRČETA
+GRBOVIĆ MOMČILO
+GRBOVIĆ MURAT
+GRBOVIĆ MURAT
+GRBOVIĆ RADISAV
+GRBOVIĆ RUŽICA
+GRBOVIĆ SLAVKO
+GRBOVIĆ SMILJA
+GRCE ANICA
+GRCIĆ JOVAN
+GRCIĆ MILICA
+GRCIĆ NIKOLA
+GRCIĆ VESELIN
+GRCOVIĆ VERICA
+GRDIĆ IVICA
+GRDIĆ LUJKA
+GRDIĆ MARA
+GRDINIĆ MIRKO
+GRDINIĆ SLOBODAN
+GREČ ROZALIJA
+GREČEL KARLO
+GREČNIK JANKO
+GREČNIK MARIJA
+GREČNIK PAVLE
+GREBELDINGER LJUBICA
+GREBELDINGER PETAR
+GREBNJEV ROZALIJA
+GREBO NEDELJKO
+GREBOVIĆ RANKO
+GREGEC MARIJA
+GREGEC VILI
+GREGEC VILI
+GREGER HEDVIGA
+GREGOR JOSIP
+GREGORIĆ BRANKO
+GREGORIĆ DUŠAN
+GREGORIĆ MILANKA
+GREGORIN PETAR
+GREGOROVIĆ ANTONIJE
+GREGOROVIĆ IVAN
+GREGOROVIĆ VLADIMIR DIPL ING
+GREGUŠ ANTAL
+GREGUŠ JANOŠ
+GREGUŠ LASLO
+GREGUŠ PETAR
+GREGURIĆ IVAN
+GREISINGER DARINA
+GREIZER PETAR
+GREK SADIK
+GREKS PAVEL
+GREKU ADEM
+GREKU GANI
+GREKU HASAN
+GREKU MUHAMER
+GREKU NEZIR
+GREKU RAMIZ
+GREKU SABIT
+GREKULOVIĆ JOVAN
+GREKULOVIĆ STANČE
+GRGANOVIĆ ĐURA
+GRGAR ĐURICA
+GRGAR BRANKA
+GRGAR LAZAR
+GRGAR TOŠA
+GRGIČEVIĆ JULIŠKA
+GRGIĆ BOŠKO
+GRGIĆ BOJANA
+GRGIĆ DRAGOJE
+GRGIĆ MIJO
+GRGIĆ MILAN
+GRGIĆ SAVETA
+GRGIĆ SIMO
+GRGIĆ VERA
+GRGIĆ VERICA
+GRGIĆ ZVONIMIR
+GRGINČEVIĆ MIHAELA PROFESOR
+GRGINČEVIĆ VLADIMIR
+GRGUR DUŠAN
+GRGUR RADOSLAV
+GRGUR VLADA
+GRGUREVIĆ MIROSLAV
+GRGUREVIĆ RAJKO
+GRGURIĆ ANTUN
+GRGURIĆ JOSIP
+GRGURIĆ RUŽICA
+GRGUROV SLOBODAN
+GRGUROVIĆ MILORAD
+GRIFATONG KARLO
+GRIFATONG OTO
+GRIGORIJEV ALEKSANDAR
+GRIGORIJEVIĆ NIKOLA
+GRIGORIJEVIĆ PETAR
+GRIJAK DANICA
+GRIJAK KOSOVKA
+GRIJAK MILAN
+GRIJAKOVIĆ MILICA
+GRIJAKOVIĆ MILOŠ
+GRILEC STANKO
+GRILEC STANKO
+GRINHUT LADISLAV
+GRISA PETAR
+GRISHABER FRANJA
+GRIZELJ KARLO
+GRIZER PETAR
+GRIZER STEVAN
+GRKAVAC MILAN
+GRKAVAC MIROSLAV
+GRKINIĆ KOSARA
+GRKINIĆ MILAN
+GRKOVIĆ ŽIVAN
+GRKOVIĆ ĐORĐE
+GRKOVIĆ ĐURO
+GRKOVIĆ ANKA
+GRKOVIĆ BOŽIDAR
+GRKOVIĆ BOGOLJUB
+GRKOVIĆ BORISLAV
+GRKOVIĆ BRANKO
+GRKOVIĆ DANE
+GRKOVIĆ DUŠAN
+GRKOVIĆ DUŠAN
+GRKOVIĆ GAVRILO
+GRKOVIĆ JELENA
+GRKOVIĆ JOVAN DIPL ING
+GRKOVIĆ JOVAN
+GRKOVIĆ LJILJANA
+GRKOVIĆ MILICA DR
+GRKOVIĆ MIRJANA
+GRKOVIĆ STOJANKA
+GRKOVIĆ VERA
+GRKOVIĆ VOJIMIR
+GRKOVIĆ VOJIN
+GRKOVSKI PANTA
+GRLIĆ ĐORĐE
+GRLIĆ LJUBINKO
+GRLIĆ MILENKO
+GRLICA ŽELJKO
+GRLICA BOSILJKA
+GRLICA MILEVA
+GRLICA MILOVAN
+GRLICA STANKO
+GRLICA VOJIN
+GRLJEVIĆ MIRJANA
+GRMAŠ ĐURO
+GRMAŠ BRANKO
+GRMOŠ PREDRAG
+GRMUŠA ŽIVKO
+GRMUŠA ĐURO
+GRMUŠA MILAN
+GRMUŠA MILAN
+GRMUŠA RADE
+GRMUŠA SLAVKO
+GRMUŠA SMILJKA
+GRMUŠA STOJAN
+GRMUŠA VELKO
+GRNJA ĐURA
+GRNJA ANDRIJA
+GRNJA ANKA
+GRNJA-ASANI LJUMNIJA
+GRNJA DUŠAN
+GRNJA JANKO
+GRNJA JAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JURAJ
+GRNJA LASLO
+GRNJA LJUDEVIT
+GRNJA MARIJA
+GRNJA OSKAR
+GRNJA SOFIJA
+GRNJA STEVAN
+GRNJA STEVAN
+GRNJA STEVAN
+GRNJA VLADIMIR
+GROŠEK ZVONIMIR
+GROŠKO MARIJA
+GROM CIRIL
+GROMILIĆ MILORAD
+GROS ĐORĐE
+GROS IVAN
+GROS LADISLAV
+GROZDANIĆ ĐORĐE
+GROZDANIĆ ENINKA
+GROZDANIĆ JOSIP
+GROZDANIĆ MILAN
+GROZDANIĆ MILAN
+GROZDANOV SLAVKO
+GROZDANOVSKI DAMJAN
+GROZDANOVSKI MILE
+GROZDANOVSKI PETAR
+GROZDIĆ BOŠKO
+GROZDIĆ BOGDAN
+GROZDIĆ DESANKA
+GROZDIĆ DOBRIVOJ
+GROZDIĆ DUŠAN
+GROZDIĆ JASMINA
+GROZDIĆ JOVAN
+GROZDIĆ JOVAN
+GROZDIĆ JOVAN
+GROZDIĆ KUZMAN
+GROZDIĆ LAZAR
+GROZDIĆ LJUBIŠA
+GROZDIĆ LJUBOMIR
+GROZDIĆ MILAN
+GROZDIĆ PETAR
+GROZDIĆ STEVAN
+GROZDIĆ VESNA
+GROZDIĆ ZDRAVKO
+GROZDIĆ ZORAN
+GROZDIĆ ZORICA
+GROZGUT TIBOR
+GRUBA DORU
+GRUBA TIBERIJE
+GRUBAČ GORDANA
+GRUBAČ MAKSA
+GRUBAČ MOMČILO
+GRUBAČ STANKA
+GRUBAČ TANASIJE
+GRUBAČIĆ GOJKO
+GRUBANOV DOBRIVOJ
+GRUBANOV DUŠANKA
+GRUBANOV NOVAK
+GRUBANOV ZAHARIJE
+GRUBEŠA NIKOLA
+GRUBEŠIĆ DRAGAN
+GRUBEŠIĆ DUŠAN
+GRUBEŠIĆ MELANIJA
+GRUBER EDUARD
+GRUBER EMIL
+GRUBER EVALD
+GRUBER FRANJA
+GRUBER RUDOLF
+GRUBETIĆ OLGA
+GRUBIŠA ANĐELO
+GRUBIŠIĆ MIRJANA
+GRUBIŠIĆ MIRKO
+GRUBIŠIĆ NIKOLA
+GRUBIĆ ŽARKO
+GRUBIĆ ŽARKO
+GRUBIĆ ANKA
+GRUBIĆ MILAN
+GRUBIĆ NIKOLA
+GRUBIN MILAN
+GRUBIN MIROSLAV
+GRUBJEŠIĆ BRANKO
+GRUBJEŠIĆ MILENKO
+GRUBJEŠIĆ MIRKO
+GRUBJEŠIĆ STEVO
+GRUBOR ADAM
+GRUBOR BRANKO
+GRUBOR EMA
+GRUBOR JEFTO
+GRUBOR-JOJIĆ SLAVICA
+GRUBOR JOVO
+GRUBOR LAZAR
+GRUBOR LAZO
+GRUBOR LJUBOMIR
+GRUBOR MILJANA
+GRUBOR MILOŠ
+GRUBOR NEĐO
+GRUBOR NEDELJKO
+GRUBOR NEVENA
+GRUBOR NIKOLA
+GRUBOR NIKOLA
+GRUBOR OLGA
+GRUBOR RADE
+GRUBOR SLOBODAN
+GRUBOR SRETO
+GRUBOR VUJO
+GRUBOR ZDRAVKO
+GRUBOROVIĆ MILE
+GRUBOVIĆ ILIJA
+GRUESKU-ĆIRIŠAN DELIJA
+GRUIČIĆ DRAGOLJUB
+GRUIK VERONIKA
+GRUJČIĆ NIKOLA
+GRUJANAC MILAN
+GRUJEV OGNJAN DIPL ING
+GRUJIČ SLOBODAN
+GRUJIČIĆ BILJANA
+GRUJIČIĆ JOVA
+GRUJIČIĆ MARINKO
+GRUJIČIĆ MIA
+GRUJIČIĆ MILICA
+GRUJIČIĆ MILOJE
+GRUJIČIĆ NENAD
+GRUJIČIĆ PETAR
+GRUJIČIĆ PREDRAG
+GRUJIČIĆ RADOMIR
+GRUJIČIN STANOJE
+GRUJIČKOV JOVAN
+GRUJIČKOV MILKA
+GRUJIĆ ŽIVKA
+GRUJIĆ ŽIVORAD
+GRUJIĆ ĐENA
+GRUJIĆ ĐENISIJE
+GRUJIĆ ĐORĐE
+GRUJIĆ ĐURĐICA
+GRUJIĆ ĐURA
+GRUJIĆ ĐURA
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ANĐELKO
+GRUJIĆ ANDRIJA
+GRUJIĆ ANICA
+GRUJIĆ BOŽIDAR
+GRUJIĆ BOŽIDAR
+GRUJIĆ BORISLAV
+GRUJIĆ BORIVOJ
+GRUJIĆ BOSILJKA
+GRUJIĆ BRANISLAV
+GRUJIĆ BRANISLAV
+GRUJIĆ BRANKO
+GRUJIĆ CVIJETIN
+GRUJIĆ CVIJO
+GRUJIĆ DANICA
+GRUJIĆ DIMITRIJE
+GRUJIĆ DRAGICA
+GRUJIĆ DUŠAN
+GRUJIĆ DUŠAN
+GRUJIĆ DUŠAN
+GRUJIĆ FRANCIŠKA
+GRUJIĆ GAVRA
+GRUJIĆ GAVRILO
+GRUJIĆ GORAN
+GRUJIĆ GORICA
+GRUJIĆ GRUJA
+GRUJIĆ ILINKA
+GRUJIĆ IVAN DIPL ING
+GRUJIĆ IVANKA
+GRUJIĆ JANJA
+GRUJIĆ JELICA
+GRUJIĆ JELISAVETA
+GRUJIĆ JELKA DR
+GRUJIĆ JOVANKA
+GRUJIĆ JOVANKA
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVICA
+GRUJIĆ JULKA
+GRUJIĆ KOSTA DR
+GRUJIĆ KOSTA DR
+GRUJIĆ LAZAR
+GRUJIĆ LENKA
+GRUJIĆ LJILJANA
+GRUJIĆ LJUBICA
+GRUJIĆ LJUBOMIR
+GRUJIĆ LJUBO
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARINA
+GRUJIĆ MIHAJLO
+GRUJIĆ MILAN
+GRUJIĆ MILAN
+GRUJIĆ MILAN
+GRUJIĆ MILENA
+GRUJIĆ MILENKO
+GRUJIĆ MILE
+GRUJIĆ MILICA
+GRUJIĆ MILOŠ
+GRUJIĆ MILOŠ
+GRUJIĆ MILORAD
+GRUJIĆ MILORAD
+GRUJIĆ MIRJANA
+GRUJIĆ MIROSLAV DIPL ING
+GRUJIĆ MIROSLAV
+GRUJIĆ MITAR
+GRUJIĆ NADA DR LEKAR
+GRUJIĆ NADA
+GRUJIĆ NADA
+GRUJIĆ NEDELJKO
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NOVAK
+GRUJIĆ PAVLE
+GRUJIĆ PETAR
+GRUJIĆ RADENKO
+GRUJIĆ RADE
+GRUJIĆ RADIŠA
+GRUJIĆ RADINKA
+GRUJIĆ RADIVOJ
+GRUJIĆ RADIVOJ
+GRUJIĆ RADMILA
+GRUJIĆ RADOJICA
+GRUJIĆ RADOVAN
+GRUJIĆ RUŽICA
+GRUJIĆ SANJA
+GRUJIĆ SAVA
+GRUJIĆ SAVA
+GRUJIĆ SINIŠA
+GRUJIĆ SLAVIŠA
+GRUJIĆ SLAVICA
+GRUJIĆ SLAVKA
+GRUJIĆ SLAVKO
+GRUJIĆ SLOBODAN DIPL ING
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SMILJANA
+GRUJIĆ SMILJA
+GRUJIĆ SMILJA
+GRUJIĆ SRĐAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STOJAN DR
+GRUJIĆ SVETOZAR
+GRUJIĆ SVETOZAR
+GRUJIĆ TATJANA
+GRUJIĆ VELIMIR
+GRUJIĆ VERICA
+GRUJIĆ VESELIN
+GRUJIĆ VESNA
+GRUJIĆ VOJISLAV
+GRUJIĆ ZDRAVKO
+GRUJIĆ ZLATICA
+GRUJIĆ ZLATICA
+GRUJIN DANICA
+GRUJIN DUŠAN
+GRUJIN LJUBICA
+GRUJIN MILAN
+GRUJIN MILOŠ
+GRUJIN NADA
+GRUJIN OLGA
+GRUJIN PETAR
+GRUJIN RADOSLAV
+GRUJIN SAŠA
+GRUJIN SMILJA
+GRUJIN SPASOJE
+GRUJIN TEREZA
+GRUJIN ZORAN
+GRUJINOVIĆ DRAGUTIN
+GRUJINOVIĆ ZORKA
+GRUJOVIĆ BRANISLAV
+GRUJOVIĆ MIHAJLO
+GRUJOVSKI LAZAR
+GRULOVIĆ RADOJKA
+GRULOVIĆ ZDENKO
+GRULOVIĆ ZDRAVKA
+GRULOVIĆ ZDRAVKO
+GRUNČIĆ JOVAN
+GRUNIK VLADIMIR DR
+GUŠA NIKOLA
+GUŠA PREDRAG
+GUŠAVAC ZORAN
+GUŠIĆ BOGDAN
+GUŠIĆ BORIS
+GUŠIĆ MANOJLO
+GUŠIĆ MANOJLO
+GUŠIĆ MILENKA
+GUŠIĆ RADENKO
+GUŠIĆ RADENKO
+GUŠIĆ UGLJEŠA
+GUŠIĆ VASILJKA
+GUŽALIĆ MARIJA
+GUŽALIĆ STJEPAN
+GUŽALIĆ VLADIMIR
+GUŽALIĆ ZVONIMIR
+GUŽELA LASLO
+GUŽVANJ IVICA
+GUŽVICA ĐORĐE
+GUŽVICA ĐORĐE
+GUŽVICA BRANISLAV
+GUŽVICA MILAN
+GUŽVICA MILAN
+GUŽVICA MIRKO
+GUŽVICA NIKOLA
+GUŽVICA STEVO
+GUŽVICA ZORAN
+GUBAŠ ANĐELIJA
+GUBAŠ MIROSLAV
+GUBAŠ VLADIMIR
+GUBAŠ ZAGORKA
+GUBANDA BARBARA
+GUBANDA LADISLAV
+GUBERINA DUŠAN
+GUBERINA SLOBODAN
+GUBERINIĆ LJUBICA
+GUBERNOV JULIJANA
+GUBIĆ MIRKO
+GUBICA JOVAN
+GUBIK ŠANDOR
+GUBIK ŠANDOR
+GUBIK KARLO
+GUBIK KATARINA
+GUBIK STEVAN
+GUC STEVAN
+GUCIJAN STEVA
+GUCU MIRJANA
+GUCULJ JELENA
+GUCULJ MARGITA
+GUCULJ VERA
+GUCUNJA JOVAN
+GUCUNJA MILAN
+GUCUNJA MILORAD
+GUCUNJA MILORAD
+GUCUNSKI ŽIVKA
+GUCUNSKI ĐORĐE
+GUCUNSKI BOŽIDAR
+GUCUNSKI BORISLAV
+GUCUNSKI BRANISLAV
+GUCUNSKI IVANKA
+GUCUNSKI IVANKA
+GUCUNSKI JELENA
+GUCUNSKI JOVAN
+GUCUNSKI MARIJA
+GUCUNSKI NADA
+GUCUNSKI PERSIDA
+GUCUNSKI RADE
+GUCUNSKI SIMA
+GUDALJ MARTA
+GUDALOVIĆ MOMIR
+GUDALOVIĆ RADMILA
+GUDELJ ĐORĐE
+GUDELJ BRANISLAV DIPL ING
+GUDELJ JOVAN
+GUDELJ MARIJA
+GUDELJ MILAN
+GUDELJ MILENA
+GUDELJ MOMČILO
+GUDELJ NEDELJKA
+GUDELJ SAVA DR
+GUDOVIĆ DRAGOMIR
+GUDOVIĆ PAVLE
+GUDOVIĆ RADMILA
+GUDOVIĆ STEVAN
+GUDURIĆ ALEKSANDAR
+GUDURIĆ ANĐELKA DR
+GUDURIĆ BRANIMIR DR
+GUDURIĆ DEJAN
+GUDURIĆ JOVAN
+GUDURIĆ SVETISLAV
+GUDURIĆ VASA
+GUDURIĆ ZORAN
+GUELMINO ŠANDOR
+GUELMINO FRIĐEŠ
+GUGA VERA
+GUGA VERA
+GUGIĆ SINIŠA
+GUGLETA SRBISLAV
+GUKODI MLADEN
+GULAČI JOSIP
+GULAĆI LJUBINKA
+GULAN BOŠKO
+GULAN BRANISLAV
+GULAN VIDOSAVA
+GULD VALERIJA
+GULEVIĆ TATJANA
+GULEVIĆ VLADIMIR DR LEKAR
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI MIHAJLO
+GULEVSKI SAŠA
+GULIČ IMRE
+GULIĆ STANKO
+GULIĆ VESNA
+GULIN MARICA
+GULIN ZLATKO
+GULJAŠ MARIJA
+GULJAŠ TEREZIJA
+GULJAŠ VESNA
+GULJPA MILAN
+GULJPA SAVA
+GUNEK MARIJA
+GUNEK MATE
+GUNEK TOMA
+GUNIĆ MILENA
+GUNJEVIĆ MILE
+GUNJEVIĆ NEVENKA
+GURAN TAMAŠ
+GURJANOV ŽARKO
+GURJANOV BLAGOJE
+GURJANOV JELICA
+GURJANOV VASA
+GUROVIĆ BOŽIDAR
+GUSIĆ MILEVA
+GUSMAN ĐORĐE DR LEKAR
+GUSMAN DRAGICA
+GUSMAN GERHARD
+GUSMAN HILDA
+GUSMAN IMRE
+GUT JANKO
+GUT JOVAN
+GUT NATALIJA
+GUTAI JOLAN
+GUTAI MIHALJ
+GUTAJI ILEŠ
+GUTALJ MILORAD
+GUTEŠA ĐURO
+GUTEŠA MIRKO
+GUTEŠA NIKOLA
+GUTEŠA VOJISLAV
+GUTI ŽOLT
+GUTIĆ ŠPIRO
+GUTIĆ GORAN
+GUTMAN ALEKSANDAR
+GUTMAN DARINKO
+GUTOVIĆ ANĐELKO
+GUTOVIĆ DANIELA
+GUTOVIĆ MILENKO
+GUTOVIĆ RADE
+GUTOVIĆ RISTO
+GUTOVIĆ SINIŠA
+GUTOVIĆ SNEŽANA
+GUTOVIĆ ZORAN
+GUTVAJN ADAM
+GUTVAJN ADAM
+GUTVAJN ELIZABETA
+GUTVAJN EVA
+GUZIJAN JOVO
+GUZIJAN MILAN
+GUZIJAN NIKOLA
+GUZINA ČEDOMIR
+GUZINA LJUBISAV
+GUZINA MIHAJLO
+GUZINA MILORAD
+GUZINA MILORAD
+GUZINA MILOSAV DR
+GUZINA VLADIMIR
+GUZINA VOJISLAV
+GUZINA VUKAŠIN
+GVERIĆ BORIVOJ
+GVERIĆ SNEŽANA
+GVERO LAZO
+GVERO MIRA
+GVOŽĐAN BORISLAVA
+GVOŽĐAN MIHAJLO
+GVOŽĐAN RADOVAN
+GVOIĆ BRANKO
+GVOIĆ MILAN
+GVOIĆ VALERIJA
+GVOJIĆ BORISLAV
+GVOJIĆ MILAN
+GVOJIĆ STANKO
+GVOJIĆ STEVAN
+GVOKA NADA
+GVOZDEN BOSILJKA
+GVOZDEN BRANKO
+GVOZDEN SRETO
+GVOZDEN VLADIMIR
+GVOZDENAC ŽIVKO
+GVOZDENAC BORA
+GVOZDENAC BORA
+GVOZDENAC BORKA
+GVOZDENAC DRAGOLJUB
+GVOZDENAC DUŠAN
+GVOZDENAC RAJKO
+GVOZDENAC SNEŽANA
+GVOZDENOV JOVAN
+GVOZDENOV MILAN
+GVOZDENOVIĆ ŽIVORAD
+GVOZDENOVIĆ ĐORĐE
+GVOZDENOVIĆ ĐURO
+GVOZDENOVIĆ BOŽO
+GVOZDENOVIĆ BRANKO
+GVOZDENOVIĆ BRANKO
+GVOZDENOVIĆ DEJAN
+GVOZDENOVIĆ DRAGINJA
+GVOZDENOVIĆ DUŠAN DR
+GVOZDENOVIĆ DUŠAN
+GVOZDENOVIĆ EMILIJA
+GVOZDENOVIĆ LJILJANA
+GVOZDENOVIĆ LJUBO
+GVOZDENOVIĆ MIĆO
+GVOZDENOVIĆ MILIVOJE
+GVOZDENOVIĆ MILOŠ
+GVOZDENOVIĆ MIRKO
+GVOZDENOVIĆ MIROSLAV
+GVOZDENOVIĆ MIROSLAV
+GVOZDENOVIĆ NIKOLA
+GVOZDENOVIĆ PETAR
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ STEVO
+GVOZDENOVIĆ-TODOROVIĆ ZAGORKA
+GVOZDENOVIĆ-TODOROVIĆ ZAGORKA
+GVOZDENOVIĆ VIDA
+GVOZDENOVIĆ VITOMIR
+GVOZDENOVIĆ VLADA
+GVOZDENOVIĆ VLADA
+GVOZDENOVIĆ ZORICA
+GVOZDIĆ ĐORĐE
+GVOZDIĆ MILAN
+HAŠOVIĆ ANDRIJA
+HAŠOVIĆ IMRE
+HAĐINAC BRANISLAV
+HABAŠ ZORAN
+HABAJEC LJUBICA
+HABEK ŽELJKO
+HABENŠUS MILENKO
+HABENŠUS MILENKO
+HABIJAN FRANJA
+HABIJAN VESNA
+HABIJANEC TIHOMIR
+HABOR JAN
+HABRAM ARANKA
+HABRAM KAROLJ
+HABUDA JOSIP
+HABUDA VALENTIN
+HACOPULOS ĐORĐE
+HACOPULOS NADA
+HADŽI ALEKSANDAR
+HADŽI KOSTA ADVOKAT
+HADŽI-MANOV LJUPČO
+HADŽI-PAVLOVIĆ OLGA
+HADŽI RAMADAN
+HADŽIĆ BOSILJKA
+HADŽIĆ GORANKA
+HADŽIĆ IBRAHIM
+HADŽIĆ ISMET
+HADŽIĆ LAZAR
+HADŽIĆ LAZAR
+HADŽIĆ MILAN DR
+HADŽIĆ MILEVA
+HADŽIĆ MONIKA
+HADŽIĆ MUHAREM
+HADŽIĆ NADA
+HADŽIĆ OLGA DR
+HADŽIĆ PAVLE
+HADŽIĆ RADIVOJ
+HADŽIĆ SLAVUJ
+HADŽIĆ VLADIMIR
+HADŽIAHMETOVIĆ RASIM
+HADŽIARSIĆ DOBRIVOJE
+HADŽIBABIĆ DRAGAN
+HADŽIBABIĆ RADOMIR
+HADŽIBABIĆ RADOMIR
+HADŽIBABIĆ ZORICA
+HADŽIHASANOVIĆ RADMILA
+HADŽIVUKOVIĆ STEVAN DR PROF
+HADŽOVIĆ JELISAVETA
+HADŽOVIĆ RATKO
+HADADI SMILJA
+HADIK ADRIEN
+HADIK JOŽEF
+HADNAĐ GIZELA
+HADNAĐ TEREZA
+HADNAĐ VERA
+HADNAĐ VERONIKA
+HADNAĐEV ARSEN
+HADNAĐEV DUŠAN DR
+HADNAĐEV DUŠAN
+HADNAĐEV ISIDOR
+HADNAĐEV MIODRAG
+HADNAĐEV MIRKO
+HADNAĐEV STANISLAV
+HADNAĐEV STEVAN
+HADNAĐEV STOJAN
+HAIN BRANISLAV
+HAIN ZORICA
+HAJČUNK JOŽEF
+HAJČUNK MIRKO
+HAJAŠ JELISAVETA
+HAJDAREVIĆ ORHAN
+HAJDARPAŠIĆ ESAD
+HAJDER ĐORĐE
+HAJDER DRAGAN
+HAJDER LUKA
+HAJDER MARICA
+HAJDER MARKO
+HAJDER MILOŠ
+HAJDER RADE
+HAJDER RAJKO
+HAJDER STOJANKA
+HAJDER VESNA
+HAJDER ZORAN
+HAJDIĆ ANĐELKO
+HAJDIN BOGDAN
+HAJDIN SLAVKO
+HAJDU ANA
+HAJDU ANDRIJA
+HAJDU ANTAL
+HAJDU FERENC
+HAJDU-GRAJLAH EMA
+HAJDU ILONKA
+HAJDU IRENA
+HAJDU JOŽEF
+HAJDU JOLIKA
+HAJDU JOSIP
+HAJDU KATICA
+HAJDU KLARA
+HAJDU LAJOŠ
+HAJDU LASLO
+HAJDU LJUDEVIT
+HAJDU MARIJA
+HAJDU OTO
+HAJDU PAVLE
+HAJDU STEVAN
+HAJDUK ĐORĐE
+HAJDUK IRINA
+HAJDUK JANKO
+HAJDUKOVIĆ ARSEN
+HAJDUKOVIĆ BOŠKO
+HAJDUKOVIĆ BOGDAN
+HAJDUKOVIĆ DESANKA
+HAJDUKOVIĆ DUŠAN
+HAJDUKOVIĆ JOVANKA
+HAJDUKOVIĆ LJILJANA
+HAJDUKOVIĆ MILANKA
+HAJDUKOVIĆ MILAN
+HAJDUKOVIĆ NADEŽDA
+HAJDUKOVIĆ OTO
+HAJDUKOVIĆ RADOSLAV DIPL ING
+HAJDUKOVIĆ SMILJA
+HAJNAL ANTAL
+HAJNAL GABRIJELA
+HAJNAL IVAN
+HAJNAL LASLO
+HAJNAL LJUBICA
+HAJNAL MARIJA
+HAJNAL NIKOLA
+HAJNC ĐORĐE
+HAJNC JOSIP
+HAJNC JOVAN
+HAJNC ZLATA
+HAJTFOGEL VLADA
+HAJTFOGEL VLADISLAV
+HAJTL IVAN
+HAJVAZ RAJKO
+HAJZLER ĐORĐE
+HAJZLER DUŠAN
+HAJZLER JOVAN
+HAKAČ MATIJA
+HAKER IVAN
+HAKER TEREZA
+HALAŠ ZUZANA
+HALAŠI ĐORĐE
+HALAŠI ETELKA
+HALAŠI-KIŠ FRANKA
+HALAŠI RUŽA DR ING
+HALAI IMRE
+HALAI MARIJA
+HALAI PETAR
+HALAI SABOLČ
+HALAPI DRAGICA
+HALAPI IRENA
+HALAPI IVAN
+HALAS ŠANDOR
+HALAS FRANJA
+HALAS MARIJA
+HALAVANJA ŽELJKO
+HALAVANJA LJUBAN
+HALAVANJA MILAN
+HALAVANJA RADE
+HALAVANJA STEVA
+HALER STEVAN
+HALILOVIĆ MUHAREM
+HALIM SEFER
+HALUPKA JOŽEF DR
+HAM ALEKSANDAR
+HAMU MIHALJ
+HAMZIĆ MILENA
+HAN SOFIJA
+HANCKO JOŽEF DR
+HANCKO JOŽEF DR
+HANDA KATICA
+HANG MATEJ
+HANG VLATKO
+HANGA ANTUN
+HANGA ANTUN
+HANGA MARIJA
+HANGOVSKI ANDRIJA
+HANSKO JOSIP
+HANSKO STEVAN
+HANUŠIĆ SEAD
+HARAČIĆ DŽEMAL
+HARAČIĆ LJUBICA
+HARAK PAVLE
+HARAMBAŠIĆ BOŽANA
+HARAMIJA MARIJA
+HARANGOZO ŠANDOR
+HARANGOZO ŠANDOR
+HARANGOZO ŠARIKA
+HARANGOZO BALINT
+HARANGOZO BOŠKO
+HARANGOZO ERŽEBET
+HARANGOZO ERŽEBET
+HARANGOZO IŠTVAN
+HARANGOZO IMRE
+HARANGOZO-JEGRIŠKI MARIJA
+HARANGOZO KAROLJ
+HARANGOZO-TORI ŽUŽANA
+HARANGOZO-TORI ĐURA
+HARANGOZO-TORI BOŽIDAR
+HARANGOZO-TORI IRINA
+HARANGOZO-TORI IVAN
+HARANGOZO-TORI JOAKIM
+HARANGOZO-TORI JOVAN
+HARANGOZO-TORI JOVAN
+HARANGOZO-TORI LJUBICA
+HARANGOZO-TORI NESTOR
+HARANGOZO-TORI NIKOLA
+HARANGOZO-TORI SILVESTER
+HARANGOZO-TORI STOJANKA
+HARANGOZO-TORI VESNA
+HARANGOZO-TORI VLADIMIR
+HARANGOZO-TORI VLADIMIR
+HARFMAN MARA
+HARHAI ŽELJKO
+HARHAI BOŽANA
+HARHAI JANKO
+HARHAJI HELENA
+HARHAJI JANKO
+HARHAJI JOAKIM
+HARHAJI JOAKIM
+HARHAJI LJUBOMIR
+HARHAJI LJUBOMIR
+HARHAJI MIRON
+HARHAJI NIKOLA
+HARHAJI VLADIMIR
+HARHAJI VLADIMIR
+HARIŠ JELISAVETA
+HARIŠ JELISAVETA
+HARIŠ LJUBIVOJE
+HARIŠ PIROŠKA
+HARIJAN ŠTEFICA
+HARKAI STEVAN
+HARMAT KONRAD
+HARPANJ MIHAL
+HART MARGITA
+HARTIG IRENA
+HARTIG TIBOR
+HARTMAN KATARINA
+HARTMAN VESNA
+HAS ALEKSANDAR
+HAS KARLO
+HAS MARTA
+HAS MILICA
+HASANAGIĆ ESNAF
+HASANAGIĆ MILAN
+HASENAUER JOSIP
+HASIĆ DŽEMAL
+HATALA MATE
+HATALA ZOLTAN
+HAUG ANICA
+HAUK ROBERT
+HAUPTMAN SLAVKO
+HAURDIĆ RABIJA
+HAUSER HILDA
+HAUZER OSKAR
+HAUZLOHNER IRENA
+HAVJAR VELIZAR
+HAVLEK FRANJA
+HAVLEK JOSIP
+HAVRAN ZLATKO
+HAVZI ŠERIF
+HAVZI LIMAN
+HEĐEŠ JANOŠ
+HEĐELAI STEVAN
+HEĐI ALEKSANDAR
+HEĐI MILICA
+HEDEŠ JANOŠ
+HEGEDIŠ ĐERĐ
+HEGEDIŠ BELA
+HEGEDIŠ BERTA
+HEGEDIŠ GEZA
+HEGEDIŠ IŠTVAN
+HEGEDIŠ JOŽEF
+HEGEDIŠ JOHANA
+HEGEDIŠ JOZEFINA
+HEGEDIŠ TEREZIJA
+HEGEDIŠ ZOLTAN
+HEGEDUŠ KAROLINA
+HEIM MAGDA
+HEKIĆ SLAVICA
+HELER GABRIJEL
+HELER INGRID
+HEM JANOŠ
+HEMI ANICA
+HEMI VLADISLAV
+HEMON BORIS
+HEMON MARIJA
+HEMON SLAVICA
+HEMON TEREZIJA
+HEMON VLADIMIR
+HEMON VLADIMIR
+HEMRIH KLARA
+HEMUN MIHAJLO
+HEN ŽELJKO
+HEN IVICA
+HEN MARIJA
+HENGL DAMJAN
+HENGL JOVAN
+HENGL RIHARD
+HENIŠ VILMA
+HENKEL FILIP
+HEP MAKSIM
+HERČIK ROBERT
+HERAK IVAN
+HERAK STANISLAV
+HERAKOVIĆ ALEKSANDAR
+HERAKOVIĆ BRANISLAV
+HERAKOVIĆ SLOBODAN
+HERBEZ MILENKO
+HERBST ANTUN
+HERBUT ĐORĐE
+HERBUT GABOR
+HERBUT JOŽEF
+HERBUT KAROLJ
+HERBUT KIRIL
+HERBUT MIHAJLO
+HERBUT SILVESTER
+HERCEG ĐORĐE
+HERCEG DRAGOSLAV
+HERCEG KARLO
+HERCENBERGER ĐULA
+HERCENBERGER ALEKSANDAR
+HERCENBERGER ALEKSANDAR
+HERCENBERGER GIZELA
+HERCENBERGER IREN
+HERCOG ĐORĐE
+HERDI JOSIP
+HERDI LJILJANA
+HERDI-STOJANOVIĆ ANGELINA
+HERENČIĆ LEOPOLD
+HERENDIJA ĐORĐE
+HERENDIJA MARKO
+HERETA SLOBODAN
+HERGET KATICA
+HERIĆ MIHOVIL
+HERING AMALIJA
+HERING IVAN
+HERMAN ČILA
+HERMAN ANĐA
+HERMAN IVAN
+HERMAN KARLO
+HERMAN VILIM
+HEROR LAZAR
+HERPKA DUBRAVKA
+HERPKA IVAN DR ING
+HERTL JOŽEF
+HERTL NADA
+HES ŠANDOR
+HES LASLO
+HESKO VIKTORIJA
+HEVER MARGITA
+HEVER PAVLE
+HEVERA MIHAJLO
+HEVERA ZUZANA
+HEVIZI ILONA
+HEVIZI PETAR
+HIĆIL ALEKSANDAR
+HIĆIL JOSIP
+HIĆIL KATARINA
+HIŽA JOVAN
+HIŽA MIŠA
+HIBŠ MARIJA
+HIBŠ RIHARD SUDIJA
+HIBŠ TANKRED
+HIEL KSENIJA
+HIL JOSIP
+HIL VERA
+HILIER-KOLAROV VALERIJA DR
+HILIER LAJOŠ DIPL ING
+HINIĆ ĐORĐE
+HINIĆ BRANKO
+HINIĆ MANE
+HINIĆ MILICA
+HINIĆ PREDRAG
+HIPIK ŠTEFANA
+HIPIK JOVAN
+HIPIK KARLO
+HIRŠ STJEPAN
+HIRŠENBERGER MARTA
+HIRŠENBERGER STEVAN DIPL ING
+HIRŠMAN ANTUN
+HIRJOVATI LJUBICA
+HIRJOVATIJ MIRON
+HIRMAN FRANJA
+HIRMAN ZOLTAN
+HITENBERGER ĐORĐE
+HITI FRANC
+HITL ELIZABETA
+HITL STEVAN
+HLAĐIK ZVONKO
+HLADNI IVAN
+HLADNI SLAVKO
+HLAPEC STJEPAN
+HLAVSA SLAVICA
+HLEBEC NORBERT
+HLOŽAN JOVAN
+HMILJ ILIJA
+HNATKO MIŠKO
+HOČKO AJET
+HOŠEK ČABA
+HOŠEK FRANJA
+HOBRAT MARTA
+HODŽA RAMADAN
+HODŽIĆ HALID
+HODŽIĆ OMER
+HODŽIĆ STAZA
+HODA MEJREM
+HODAK MILE
+HODAK SILVESTAR
+HODAK SOFIJA
+HODAK VERA
+HODAK VLADISLAV
+HODAR JOSIP
+HODI ERNE
+HODI ERNE
+HODI FERENC
+HODI VILMA
+HODIK BARBARA
+HODINKA MIHAILO
+HODNIK ALOJZ
+HODOBA DANIJELA
+HODOLIČ JANKO
+HODOLIĆ JAROSLAV
+HOFMAN ALEKSANDAR
+HOFMAN ARTUR
+HOFMAN BRUNO
+HOFMAN FRANJA
+HOFMAN LADISLAV
+HOFMAN MARIJA
+HOFMAN VESNA
+HOHNJEC DARKO
+HOHNJEC PETAR
+HOHNJEC VLADIMIR
+HOLCER LADISLAV
+HOLERBAH KATICA
+HOLI ANDRIJA MR PH
+HOLI KATARINA
+HOLIČEK LASLO
+HOLIČEK MARGIT
+HOLIČEK STEVAN
+HOLIGA KARLO
+HOLIGA SNEŽANA
+HOLIGA STEVAN
+HOLIK JANKO
+HOLIK JOAKIM
+HOLO LEONTINA
+HOLO VILMOŠ DIPL ING
+HOLOD STEVAN
+HOLODKOV VLADIMIR
+HOLOT RUŽA
+HOLOVKA ANKA
+HOLOVKA BRANKA
+HOLOVKA NATALIJA
+HOLPERT ERNEST
+HOLPERT LUJO
+HOMA ANA
+HOMA BOSILJKA
+HOMA EUGEN
+HOMA JANKO
+HOMA JOVGEN
+HOMA MIROSLAV
+HOMA NIKOLA
+HOMA PETAR DIPL ING
+HOMA VLADIMIR
+HOMA VLADIMIR
+HOMA VUKICA
+HOMOLJA JOŽEF
+HOR BOŽICA
+HOR ILIJA
+HOR PAVLE
+HORAK MIHAJLO
+HORAK NANDOR
+HORGAS IŠTVAN
+HORGAS MATILDA
+HORGOŠI ĐULA
+HORGOŠI KATARINA
+HORIĆ JELISAVETA
+HORIĆ KOSIM
+HORN VALENTIN
+HORNJAK ŽIVA
+HORNJAK ĐURO
+HORNJAK DIMITRIJE
+HORNJAK DIMITRIJE
+HORNJAK IVAN
+HORNJAK JANOŠ
+HORNJAK JAN
+HORNJAK MAGDALENA
+HORNJAK MIŠA
+HORNJAK MIRKO
+HORNJAK OLGA
+HORNJAK PETAR
+HORNJAK-PUŠKAŠOVA MARIJA
+HORNJAK SOFRONA
+HORNJAK STEVAN
+HORNJAK VLADA
+HORNJAK VLADA
+HORNJAK VLADIMIR
+HORNJIK ŠANDOR
+HORNJIK ĐERĐ
+HORNJIK ĐERĐ
+HORNJIK ZOLTAN
+HORNOK ZOLTAN
+HORNUNG-ŠOMAN ŠTEFANIJA
+HOROŠILOV SOFIJA
+HOROŠKO ALEKSANDAR
+HOROŠKO STEFAN DR
+HOROVIC DRAGINJA
+HOROVIC VLADIMIR
+HORTI DRAGANA
+HORTI GEZA
+HORTI JOSIP
+HORTI VLADISLAV
+HORVACKI MARKO
+HORVACKI SNEŽANA
+HORVAT ŠANDOR
+HORVAT ŠANDOR
+HORVAT ŽOLT
+HORVAT ĐULA
+HORVAT ĐURA
+HORVAT AGI
+HORVAT ALEKSANDAR
+HORVAT ALEKSANDAR
+HORVAT ANDRAŠ
+HORVAT ANDRIJA
+HORVAT ANKA
+HORVAT ANTAL
+HORVAT ARPAD
+HORVAT BELA
+HORVAT BISERKA
+HORVAT DEŽE
+HORVAT DIMITRIJE
+HORVAT EDIT
+HORVAT ELIZABETA
+HORVAT ERŽEBET
+HORVAT ERIKA
+HORVAT ESTER
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FRANJA
+HORVAT FRANJA
+HORVAT FRANJO
+HORVAT GABOR
+HORVAT GIZELA
+HORVAT GROZDANA
+HORVAT IŠTVAN
+HORVAT IGOR
+HORVAT IGOR
+HORVAT ILONKA
+HORVAT IMRE
+HORVAT IMRE
+HORVAT IMRE
+HORVAT IRENA
+HORVAT IRENKA
+HORVAT IVANKA
+HORVAT IVAN
+HORVAT JANOŠ DIPL ING
+HORVAT JANOŠ
+HORVAT JELENA
+HORVAT JOŽEF
+HORVAT JOŽEF
+HORVAT JOŽEF
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOVAN
+HORVAT KALMAN
+HORVAT KARLO
+HORVAT KARLO
+HORVAT KARLO
+HORVAT KAROLJ
+HORVAT KATALIN
+HORVAT KATARINA
+HORVAT KATICA
+HORVAT KATICA
+HORVAT LAJOŠ
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LUDVIG
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MATO
+HORVAT MIHALJ
+HORVAT-MILITIČI KAROLJ DR
+HORVAT MILKA
+HORVAT MILKA
+HORVAT MILOSLAV
+HORVAT MIRKO
+HORVAT PAJA
+HORVAT PAVLE
+HORVAT PETAR
+HORVAT RADMILA
+HORVAT ROŽA
+HORVAT ROZALIJA
+HORVAT RUŽA
+HORVAT RUDOLF
+HORVAT SAMUEL
+HORVAT SILVESTER
+HORVAT SLAVKO
+HORVAT SMILJA
+HORVAT STEVAN
+HORVAT TAMAŠ
+HORVAT TEREZA
+HORVAT TEREZA
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT VALERIJA
+HORVAT VERICA
+HORVAT VERONIKA
+HORVAT VERONIKA
+HORVAT VLADIMIR
+HORVAT ZOLTAN
+HORVAT ZOLTAN
+HORVATIĆ MARIJAN
+HORVATIĆ OLGA
+HORVATIĆ SLAVKO
+HORVATIĆ ZVONIMIR
+HORVATOV RASTKO
+HORVATOVIĆ ĐORĐE
+HORVATOVIĆ KATICA
+HORVATOVIĆ MIRJANA
+HORVATOVIĆ PAVLE DR
+HORVATSKI DUŠAN
+HORVATSKI LJUBICA
+HORVATSKI LJUBICA
+HORVATSKI MILENKO
+HORVATSKI MIROSLAV
+HORVATSKI RADIVOJ
+HORVATSKI RUŽICA
+HOSTIĆ BISERKA
+HOSTNIK KATICA
+HOSTONSKI STANA
+HOT ADEM
+HOUF ELVIRA
+HOVAN MARTIN
+HOVAN MIROSLAV
+HOVANEC VIKTORIJA
+HRĆAN JOVAN
+HRĆAN JOVAN
+HRABAR IVO
+HRABOVSKI ANTON
+HRABOVSKI ANTON
+HRABOVSKI BOJANA DR
+HRABOVSKI EDGAR DIPL OEC
+HRABOVSKI IMRE
+HRABOVSKI LADISLAV
+HRABRIĆ EUGEN
+HRADEČNI BELA
+HRADEČNI FRANJA
+HRADEČNI JOSIP
+HRANIČAK MIRKO
+HRANISAVLJEVIĆ PAVLE
+HRAPOVIĆ OSMAN
+HRDLIČKA DESANKA
+HREŠČAK VLADIMIR
+HRENAR LAURA
+HRGIĆ LJUBOMIR
+HRGIĆ MILAN
+HRGIĆ VLASTIMIR
+HRIČANEK MIROSLAV
+HRIČANEK NEDELJKA
+HRIBLJAN ANTON
+HRIBOVŠEK FRANC
+HRICKANIĆ LUKA
+HRIEŠIK MARIJA
+HRIJEŠIK JAN
+HRIJEŠIK JURAJ
+HRISTIĆ BLAGOJE
+HRISTIĆ DIMITRIJE
+HRISTIĆ LEPOSAVA
+HRISTIĆ LJUBICA
+HRISTIDIS APOSTOL
+HRISTIDIS NIKOLA
+HRISTIDIS NIKOLA
+HRISTOV BRANKO
+HRISTOV MILOSIJA
+HRISTOV VESNA
+HRISTOV ZAGORKA
+HRISTOVA EMILIJA
+HRISTOVSKI TOMA
+HRISTU TIHOMIR
+HRKALOVIĆ BOŠKO
+HRNČAR SAMUEL
+HRNČIĆ MARGITA
+HRNČIĆ MIHAD
+HRNČIĆ VAHID
+HRNČIAR ANA
+HRNČIAR JANKO
+HRNČIAROVA TEREZIA
+HRNČJAR ANDREJ
+HRNČJAR VLADIMIR
+HRNJAČKI ŽARKO
+HRNJAČKI ĐORĐE
+HRNJAČKI JELICA
+HRNJAČKI JOVAN
+HRNJAČKI LAZICA
+HRNJAČKI MILKA
+HRNJAČKI MLADEN
+HRNJAK DANE
+HRNJAK DRAGAN
+HRNJAK DUŠAN
+HRNJAK LJILJANA
+HRNJAK MARIJA
+HRNJAK RAJKO
+HRNJAK VELJKO
+HRNJAKOVIĆ BRANISLAV
+HRNJAKOVIĆ IVANA
+HRNJAKOVIĆ JOVAN
+HRNJAKOVIĆ MIRKO
+HRNJEZ OBRAD
+HROMIŠ AMALIJA
+HROMIŠ ANA
+HROMIŠ BARBARA
+HROMIŠ BORISLAV
+HROMIŠ JOAKIM
+HROMIŠ JOAKIM
+HROMIŠ KATICA
+HROMIŠ MARIJA
+HROMIŠ MELANIJA
+HROMIŠ MIHAJLO DIPL ING
+HROMIŠ MIROSLAV
+HROMIŠ MIROSLAV
+HROMIŠ NADA
+HROMIŠ NIKOLA
+HROMIŠ PETAR
+HROMIŠ SIMA
+HROMIŠ VLADIMIR
+HROMIŠ ZDENKA
+HRONJEC VIĆAZOSLAV
+HRSTO SLAVKO
+HRUBENJA ĐURA
+HRUBENJA FEBRONA
+HRUBENJA JANKO
+HRUBENJA JOAKIM
+HRUBENJA JOAKIM
+HRUBENJA JOAKIM
+HRUBENJA KARLO
+HRUBENJA MIHAJLO
+HRUBENJA MIROSLAV
+HRUBENJA PETAR
+HRUBENJA ZVONIMIR
+HRUBIK ANDREJ
+HRUBIK JOVAN
+HRUBIK KARLO
+HRUBIK MIRKO
+HRUBIK OSKAR DR LEKAR
+HRUBIK ROZALIJA
+HRUSTANOVIĆ TURSUN
+HRUSTIĆ EMIN
+HRUSTIĆ ENVER
+HRUSTIĆ ZIJAH
+HRUSTIĆ ZILHA
+HUČIĆ STJEPAN
+HUČKA JOVAN
+HUŽVAR ŠANDOR
+HUĐEC JOVANKA
+HUĐEC KARLO
+HUBAI GABOR
+HUBANIĆ MILENA
+HUBER BOJANA
+HUBER DRAGAN
+HUBER ELZA
+HUBER JOVAN DIPL ING
+HUBER MAGDALENA
+HUBER MARIJA
+HUBER MATILDA
+HUBER PETAR
+HUBER TIBOR
+HUBERT EVA
+HUBERT RADMILA
+HUBERT VERA
+HUBIJAR ENES
+HUBIJAR NADA
+HUDAK IRINEJ
+HUDAK NATALIJA
+HUDOMEL IVAN
+HUJDUR BRANKA
+HUMSKI ROSA
+HUNJADI ALEKSANDAR
+HUNJADI ILONKA
+HUNJADI OLGA
+HUPERT LAJOŠ
+HUPIK MIRJANA
+HUS IMRE
+HUSAG ARPAD
+HUSAGIĆ ESAD
+HUSAGIĆ SULEJMAN
+HUSAGIĆ ZINETA
+HUSAK RADOVAN
+HUSAR EVA
+HUSAR IŠTVAN
+HUSAR JANKO
+HUSAR LASLO
+HUSAR TODOR
+HUSEIN MEHMED
+HUSEINBEGOVIĆ NAMIK
+HUSEINOVIĆ ANICA
+HUSEINOVIĆ ATILA
+HUSEINOVIĆ ATILA
+HUSEINOVIĆ ESMERALDA
+HUSEINOVIĆ ISMET
+HUSENBEGOVIĆ ROZALIJA
+HUSIĆ ĐURĐINKA
+HUSIĆ LADISLAV
+HUSKA ILONA
+HUSKA-ROKA MAGDA DR
+HUSKO MIJO
+HUSOVIĆ HUSO
+HUTALAROVIĆ JELENA
+HUTALAROVIĆ KOSTA
+HUZJAN TIHOMIR
+HVALA MIRA
+HVETKOVIĆ JELISAVETA
+IČAGIĆ NIKOLA
+IČEVIĆ MOMČILO
+IČIN ŽIVKO
+IČIN MILENKO
+IČIN RADISLAV
+IČIN SRETEN
+IŠIĆ ELIZABETA
+IŠPAN ŠANDOR
+IŠPAN MARGITA
+IŠPANOVIĆ JOŽEF
+IŠTOK JOSIP
+IŠTOK JOSIP
+IŠTOK MIRJANA
+IŠTOK STEVAN
+IŠTOKOVIĆ STEVO
+IŠTVANOV STANISLAVA
+IĆITOVIĆ MILAN
+IĆURUP ŽIVOJIN
+IĆURUP MILORAD
+IĆURUP RADOSLAV DIPL ING
+IŽAK FERENC
+IŽAK KARLO
+IŽAK ROZALIJA
+IĐIDOV OLGA
+IĐIDOV VELINKA
+IĐOŠKI HORST
+IĐOŠKI NIKOLA
+IĐUŠKI STEVAN
+IBRAHIM DEMIR
+IBRAHIMAGIĆ NADA
+IBRAHIMI IBRAHIM
+IBRAHIMOVIĆ DERVIŠA
+IBRAHIMOVIĆ EMIL
+IBRAHIMOVIĆ HAMDIJA
+IBRAHIMOVIĆ MILAN
+IBRAHIMOVIĆ SLAVKO
+IBRAHIMOVIĆ VERA
+IBRAHIMPAŠIĆ ANA
+IBRAJTER IVAN
+IBRAJTER LJUBOMIR
+IBRAJTER MLADEN
+IBRIŠEVIĆ ĐULAGA
+IBRIŠEVIĆ MIRSAD
+IBRIŠEVIĆ SUAD
+IBROČIĆ DIMITRIJE DIPL ING
+IBROČIĆ MARIJA
+IBROČIĆ RATOMIR
+IBROČIĆ SLOBODAN
+IBROČIĆ VERA
+IBROLI BAN
+ICOSKI LAZAR
+IDEI NANDOR
+IDEJI JOVAN
+IDEJI VALERIJA
+IDRIZOVIĆ AHMET DR
+IDVOREAN TODOR
+IDVOREAN VIKENTIJE
+IFJU ANGELIKA
+IFJU GABOR
+IFKO ILDIKO DIPL ING
+IGIĆ ŽIVADIN
+IGIĆ ĐULVASIJA
+IGIĆ ANKA
+IGIĆ DRAGAN
+IGIĆ JOVANKA
+IGIĆ MILKA
+IGIĆ MILORAD
+IGIĆ MIROSLAVA
+IGIĆ MIROSLAV
+IGIĆ NIKOLA
+IGIĆ PAVLE
+IGIĆ RAJKO
+IGIĆ SAŠA
+IGIĆ STEVAN
+IGIĆ STEVAN
+IGIĆ SVETOZAR
+IGIĆ TOMISLAV
+IGIĆ VUKA
+IGNAC PERA
+IGNJAC VIDA
+IGNJATIĆ ANKA
+IGNJATIĆ BORIVOJ
+IGNJATIĆ DUŠANKA
+IGNJATIĆ GOJKO
+IGNJATIĆ NEVENKA
+IGNJATIĆ RADOVAN
+IGNJATIĆ VID
+IGNJATIJEVIĆ ALEKSANDAR
+IGNJATIJEVIĆ BRANISLAV
+IGNJATIJEVIĆ DOBRILA
+IGNJATIJEVIĆ DRAGOMIR
+IGNJATIJEVIĆ DUŠAN
+IGNJATIJEVIĆ DUŠAN
+IGNJATIJEVIĆ JOVAN
+IGNJATIJEVIĆ LJILJANA
+IGNJATIJEVIĆ LJILJANA
+IGNJATIJEVIĆ LJUBOMIR
+IGNJATIJEVIĆ MARA
+IGNJATIJEVIĆ MILAN
+IGNJATIJEVIĆ MILENA
+IGNJATIJEVIĆ MIROSLAV
+IGNJATIJEVIĆ MITA
+IGNJATIJEVIĆ NOVAK
+IGNJATIJEVIĆ RADAŠIN
+IGNJATIJEVIĆ RADOVAN
+IGNJATIJEVIĆ SVETISLAV
+IGNJATIJEVIĆ SVETOZAR
+IGNJATIJEVIĆ TOMISLAV
+IGNJATIJEVIĆ TOMISLAV
+IGNJATIJEVIĆ VOJISLAV
+IGNJATIJEVIĆ ZORAN
+IGNJATOV-RADOVANOVIĆ MILENA PROF
+IGNJATOVIĆ ŽIVKO
+IGNJATOVIĆ ŽIVORAD
+IGNJATOVIĆ ANGELA
+IGNJATOVIĆ ANKA
+IGNJATOVIĆ DANILO
+IGNJATOVIĆ GORDANA
+IGNJATOVIĆ KOSARA
+IGNJATOVIĆ LJUBIŠA
+IGNJATOVIĆ MARICA
+IGNJATOVIĆ MILAN
+IGNJATOVIĆ MILE
+IGNJATOVIĆ MILKA
+IGNJATOVIĆ MILOŠ DR PRAVNIK
+IGNJATOVIĆ MILOŠ
+IGNJATOVIĆ MILORAD
+IGNJATOVIĆ MILUTIN
+IGNJATOVIĆ MIRJANA
+IGNJATOVIĆ SAVA
+IGNJATOVIĆ SLOBODAN
+IGNJATOVIĆ VERA
+IGNJATOVIĆ VERA
+IGNJATOVIĆ VIDAK
+IGNJATOVIĆ VLADIMIR
+IGNJATOVIĆ VOJISLAV
+IGNJATOVIĆ VUČKO
+IGNJATOVSKI EFREM
+IGNJIĆ BRANKO
+IGNJIĆ JOVAN
+IGNJIĆ STOJAN
+IGNJIĆ ZIZA
+IGNJIĆ ZORAN
+IGNJOVIĆ MARIJA
+IGRAČKI ĐORĐE
+IGRAČKI ETELA
+IGRAČKI JULIN
+IGRAČKI KARLO
+IGRAČKI LASLO
+IGRIĆ NADA
+IGRIĆ STOJANKA
+IGRUTINOVIĆ SLOBODAN
+IHAS ILONA
+IJAČIĆ BRANKO
+IJAČIĆ MAKSIM
+IJEVLJEV FEODOR
+IKANOVIĆ DUŠAN
+IKANOVIĆ IVAN
+IKANOVIĆ JELENA
+IKANOVIĆ NIKOLA
+IKELJIĆ IRFAN
+IKIĆ DEJAN
+IKIĆ JOVAN
+IKIĆ MLADEN
+IKIĆ MLADEN
+IKIĆ SMILJANA
+IKODINOVIĆ DUŠAN
+IKONIĆ ĐURA
+IKONOV DEJAN
+IKOTIN JANOŠ
+IKOTIN JOVANKA
+IKOTIN MATIJA
+IKOTIN PAL
+IKOTIN PETAR
+IKOVAC BOŠKO
+IKOVAC STEVAN
+IKOVIĆ DRAGUTIN
+IKOVIĆ MILOŠ
+IKOVIĆ MILOSAV
+IKOVIĆ VELINKA
+IKRAŠEV JELICA
+IKRAŠEV JOVAN
+IL ALEKSANDAR
+IL JELICA
+ILČIK MARIJA
+ILEŠ FRANCIŠKA
+ILEŠ IMRE
+ILEŠ IRENA
+ILEŠ MIHAILO
+ILEŠ MILAN
+ILEŠ MIROSLAV
+ILIČIĆ ANTUN
+ILIČIĆ IVAN
+ILIČIĆ LJUBICA
+ILIČIĆ MIHAJLO
+ILIČIĆ PETAR
+ILIČIĆ-POPIĆ OLJA
+ILIĆ ČEDOMIR
+ILIĆ ČEDO
+ILIĆ ŠIMUN
+ILIĆ ŽELJKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVORAD
+ILIĆ ŽIVORAD
+ILIĆ ĐORĐE
+ILIĆ ĐORĐE
+ILIĆ ĐORĐE
+ILIĆ ALEKSA DR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ANICA
+ILIĆ ANKICA
+ILIĆ ARSA
+ILIĆ ARSA
+ILIĆ BILJANA
+ILIĆ BLAGOJE
+ILIĆ BOŠKO
+ILIĆ BOŠKO
+ILIĆ BOŽIDAR
+ILIĆ BOBAN
+ILIĆ BOGDAN
+ILIĆ BOGOLJUB
+ILIĆ BORISLAVKA
+ILIĆ BORISLAV
+ILIĆ BORISLAV
+ILIĆ BORIVOJE
+ILIĆ BORKA
+ILIĆ BOSILJKA
+ILIĆ BRANISLAV
+ILIĆ BRANISLAV
+ILIĆ BRANISLAV
+ILIĆ BRANKO
+ILIĆ BRANKO
+ILIĆ BRANKO
+ILIĆ BRATISLAV
+ILIĆ BRATISLAV
+ILIĆ CECILIJA
+ILIĆ CVETA
+ILIĆ CVIJAN
+ILIĆ DANE
+ILIĆ DARINKA
+ILIĆ DEJAN
+ILIĆ DOBRIVOJE
+ILIĆ DOBROSAV
+ILIĆ DRAGAN
+ILIĆ DRAGAN
+ILIĆ DRAGAN
+ILIĆ DRAGICA
+ILIĆ DRAGOLJUB
+ILIĆ DRAGO
+ILIĆ DRAGUTIN
+ILIĆ DUŠANKA
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠICA
+ILIĆ DUŠICA
+ILIĆ EDIT
+ILIĆ ERŽIKA
+ILIĆ GORAN
+ILIĆ GORAN
+ILIĆ-GREGOR MIRA
+ILIĆ ILIJA
+ILIĆ ILIJA
+ILIĆ ILIJA
+ILIĆ IRENA
+ILIĆ IVAN DR
+ILIĆ IVAN
+ILIĆ IVAN
+ILIĆ JELENA
+ILIĆ JELENA
+ILIĆ JELENKO
+ILIĆ JELISAVETA
+ILIĆ JELKA
+ILIĆ JOSIF
+ILIĆ JOVANKA
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVICA
+ILIĆ KOVILJKA
+ILIĆ KRSTAN
+ILIĆ LAZAR
+ILIĆ LAZAR
+ILIĆ LAZAR
+ILIĆ LJUBIŠA
+ILIĆ LJUBIŠA
+ILIĆ LJUBICA
+ILIĆ LJUBICA
+ILIĆ LJUBICA
+ILIĆ LJUBINKO
+ILIĆ LJUBO
+ILIĆ MARA
+ILIĆ MARA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARINKO
+ILIĆ MARKO
+ILIĆ MIHAJLO
+ILIĆ MIHAJLO
+ILIĆ MILADIN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILA
+ILIĆ MILENA
+ILIĆ MILENA
+ILIĆ MILEN
+ILIĆ MILEVA
+ILIĆ MILE
+ILIĆ MILIĆ
+ILIĆ MILICA
+ILIĆ MILICA
+ILIĆ MILICA
+ILIĆ MILISAV
+ILIĆ MILIVOJE
+ILIĆ MILIVOJ
+ILIĆ MILIVOJ
+ILIĆ MILIVOJ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILORAD
+ILIĆ-MILUŠIĆ OLGA
+ILIĆ MILUŠKA
+ILIĆ MILUTIN
+ILIĆ MIODRAG DR
+ILIĆ MIODRAG
+ILIĆ MIODRAG
+ILIĆ MIODRAG
+ILIĆ MIRJANA
+ILIĆ MIRKO
+ILIĆ MIROSLAVA
+ILIĆ MIROSLAV
+ILIĆ MIROSLAV
+ILIĆ MITAR
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ NADA
+ILIĆ NEĐO
+ILIĆ NEBOJŠA
+ILIĆ NEBOJŠA
+ILIĆ NENAD
+ILIĆ NEVENKA
+ILIĆ NIKOLA
+ILIĆ NIKOLA
+ILIĆ OBRAD
+ILIĆ OBREN
+ILIĆ OLGA
+ILIĆ OLGA
+ILIĆ OLIVERA
+ILIĆ OSTOJA
+ILIĆ PAVLE DIPL ING
+ILIĆ PAVLE
+ILIĆ PERO
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ-PETROVIĆ SPOMENKA
+ILIĆ PREVISLAV
+ILIĆ RADE
+ILIĆ RADIVOJ
+ILIĆ RADOJKA
+ILIĆ RADOMIR
+ILIĆ RADOSLAV
+ILIĆ RADOSLAV
+ILIĆ RADOSLAV
+ILIĆ RADOVAN
+ILIĆ RADOVAN
+ILIĆ RADO
+ILIĆ RANKO
+ILIĆ RATKO
+ILIĆ RATKO
+ILIĆ RUŽA
+ILIĆ RUŽICA
+ILIĆ SAVA DR
+ILIĆ SAVA
+ILIĆ-SAVIĆ VOJISLAVA
+ILIĆ SIMO
+ILIĆ SINIŠA
+ILIĆ SLAVICA
+ILIĆ SLAVKO
+ILIĆ SLAVKO
+ILIĆ SLAVOLJUB
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SRĐAN
+ILIĆ SRĐAN
+ILIĆ SRĐAN
+ILIĆ SRETEN
+ILIĆ STANA
+ILIĆ STANIŠA
+ILIĆ STANIMIR
+ILIĆ STANIMIR
+ILIĆ STANKA
+ILIĆ STEVO
+ILIĆ STOJANČE
+ILIĆ STOJAN
+ILIĆ STOJAN
+ILIĆ SVETISLAV DR LEKAR
+ILIĆ SVETLANA
+ILIĆ SVETOZAR
+ILIĆ TATJANA
+ILIĆ TODE
+ILIĆ TODE
+ILIĆ TOMISLAV
+ILIĆ VASA
+ILIĆ VERA
+ILIĆ VIDOSAV
+ILIĆ VINKA
+ILIĆ VINKO
+ILIĆ VLADAN
+ILIĆ VLADAN
+ILIĆ VLADIMIR DR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLATKA
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ ZDRAVKO
+ILIĆ ZLATKO
+ILIĆ ZLATKO
+ILIĆ ZORAN
+ILIĆ ZORICA
+ILIBAŠIĆ DARINKA
+ILIBAŠIĆ NIKOLA
+ILIBAŠIĆ OSTOJA
+ILIBAŠIĆ STEVAN
+ILIBAŠIĆ STEVO
+ILIBAŠIĆ ZLATA
+ILIEVSKI ALEKSANDAR
+ILIJĆ SMILJA
+ILIJĆ SVETOLIK
+ILIJAŠEV SOFIJA
+ILIJAŠEVIĆ ALEKSANDAR
+ILIJAŠEVIĆ DARA
+ILIJAŠEVIĆ LJUBIŠA
+ILIJAŠEVIĆ SVETISLAV
+ILIJAZI ABDISAMI
+ILIJAZI DAUT
+ILIJAZI HAFIZA
+ILIJAZI JALČIN
+ILIJAZI ZAJNEL
+ILIJAZOVIĆ VEDŽRIJA
+ILIJEV IVAN
+ILIJEV IVAN
+ILIJEV LJUBEN
+ILIJEVIĆ DUŠAN DIPL ING
+ILIJEVIĆ NIKOLA
+ILIJEVIĆ RADE
+ILIJEVSKI ĆIRO
+ILIJEVSKI ĐORĐE
+ILIJEVSKI DANILO
+ILIJIN ŽARKO
+ILIJIN ŽIVAN
+ILIJIN DUŠAN
+ILIJIN JELENA
+ILIJIN JOVAN
+ILIJIN JOVAN
+ILIJIN MILAN
+ILIJIN MILIVOJ
+ILIJIN MILIVOJ
+ILIJIN MILOŠ
+ILIJIN MIRJANA
+ILIJIN STEVAN
+ILIJIN SVETOZAR
+ILIJIN TANASIJE
+ILIJIN UROŠ
+ILIJIN ZORKA
+ILIN ŽARKO
+ILIN ALEKSANDAR
+ILIN ANKICA
+ILIN BORISLAV
+ILIN BORKA
+ILIN DRAGINJA
+ILIN DRAGINJA
+ILIN DUŠAN
+ILIN DUŠAN
+ILIN IVAN
+ILIN LJUBINKO
+ILIN LJUBOMIR
+ILIN MILAN
+ILIN MILENKO
+ILIN MLADEN
+ILIN NEDELJKO
+ILIN NIKOLA
+ILIN RADE
+ILIN SNEŽANA
+ILIN SOFIJA
+ILIN TIMA
+ILIN ZORA
+ILINČIĆ MOMIR
+ILINČIĆ NEBOJŠA
+ILJAZI DŽAMILJ
+ILKIĆ JELA
+ILKIĆ MARICA
+ILKIĆ MILAN
+ILKIĆ MIRA
+ILKIĆ NADA
+ILKIĆ NEBOJŠA
+ILKIĆ NENAD
+ILKIĆ RADMILA
+ILKIĆ STEVICA
+ILKIĆ ZLATOJA
+ILKIN RADIVOJ
+ILOVAČA MARKO
+ILOVSKI ALEKSANDAR
+ILOVSKI ZLATA
+IMŠIROVIĆ KOLOMAN
+IMŠIROVIĆ MIROSLAV
+IMŠIROVIĆ SMAJIL
+IMAMOVIĆ JASMINA
+IMBRA ŽIVOJIN
+IMBRIŠIĆ BEHIJA
+IMBRIŠIĆ IVAN
+IMBRONJEV RAJKO
+IMBRONJEV RAJKO
+IMBRONJEV RAJKO
+IMBRONJEV SPASOJA
+IMBRONOVIĆ ĐORĐE
+IMBRONOVIĆ DUŠAN
+IMBRONOVIĆ JULKA
+IMREŠI IVAN
+INĐIĆ DRAGICA
+INĐIĆ DUŠAN
+INĐIĆ JELENA
+INĐIĆ JELICA
+INĐIĆ TEREZ
+INĐIĆ VOJIN
+INĐIN ŽIVKO
+INĐIN ĐURA
+INĐIN DUŠAN
+INĐIN VLADIMIR
+INIĆ BRANKO
+INIĆ DRAGAN
+INIĆ DUŠAN
+INIĆ JELENA
+INIĆ KRSTA
+INIĆ LJUBICA
+INIĆ MILAN DR
+INIĆ TINDA
+INIĆ VASO
+INJAC BOGDAN
+INJAC DRAGICA
+INJAC JOVAN
+INJAC LJUBICA
+INJAC MIRKO
+INJAC NIKOLA
+INJAC RADA
+INJAC RADE
+INJAC RADOMIR
+INJAC SLOBODAN
+INJAC VLADIMIR
+INOVAN DOBRIVOJE
+IPAČ KATALINA
+IPAČ KATICA
+IPIĆ ZORA
+IRŠAI IVAN
+IRŠAJI JOVAN
+IRŠAJI STEVA
+IRIĆ BOŽO
+IRIĆ GAŠPAR
+IRMEŠ MARIA
+IRMENJI JOŽEF
+IRMENJI JOSIP
+IRMENJI MARGIT
+ISAILOVIĆ LJUBIŠA
+ISAILOVIĆ MILANKA
+ISAILOVIĆ MIRKO
+ISAILOVIĆ VELISAV
+ISAJEV MARIJA
+ISAJEVIĆ LAZAR
+ISAJEVIĆ MILOŠ
+ISAJEVIĆ ZDRAVKO
+ISAJLOV JONEL
+ISAJLOV JONEL
+ISAJLOV JONEL
+ISAJLOVIĆ ALEKSANDAR
+ISAJLOVIĆ ALEKSANDAR
+ISAJLOVIĆ BRANKO
+ISAJLOVIĆ DUŠAN
+ISAJLOVIĆ FEDOR
+ISAK ILIJA
+ISAK STANKO
+ISAKOV ŽARKO
+ISAKOV ŽIVOJIN
+ISAKOV ACKO
+ISAKOV BORISLAV
+ISAKOV CVETKO
+ISAKOV DIMITRIJE
+ISAKOV DRAGANA
+ISAKOV DRAGOLJUB
+ISAKOV DUŠICA
+ISAKOV ESTER
+ISAKOV IVAN
+ISAKOV JELICA
+ISAKOV JOVANKA
+ISAKOV KATICA
+ISAKOV LEPOSAVA
+ISAKOV LJUBICA
+ISAKOV LJUBICA
+ISAKOV MILAN
+ISAKOV MILAN
+ISAKOV MILENKO
+ISAKOV MILIVOJ
+ISAKOV MILORAD
+ISAKOV MILUTIN
+ISAKOV MIODRAG
+ISAKOV MIROSLAV
+ISAKOV NENAD
+ISAKOV PETAR
+ISAKOV RADE
+ISAKOV RADICA
+ISAKOV RADINKA
+ISAKOV RADIVOJ
+ISAKOV RADMILA
+ISAKOV RADOMIR
+ISAKOV RADOVAN
+ISAKOV RUŽICA
+ISAKOV SAVA
+ISAKOV SLAVKO
+ISAKOV SMILJKA
+ISAKOV SREDOJE
+ISAKOV STEVAN
+ISAKOV STEVAN
+ISAKOV TODOR
+ISAKOV TOMISLAV
+ISAKOV VOJISLAV
+ISAKOV ZORICA
+ISAKOVIĆ ĐURA DIPL ING
+ISAKOVIĆ ANA
+ISAKOVIĆ MARKO
+ISAKOVIĆ STEVAN
+ISAKOVIĆ ZORAN
+ISAKOVSKI JAKOV
+ISAKOVSKI SLOBODAN DR
+ISANOVIĆ ANA
+ISIJANOV SLOBODANKA
+ISIJANOV VLADIMIR
+ISKALOV MARIJANA
+ISKIĆ MILADIN
+ISKRIN BRANKO
+ISKRIN JELENA
+ISLAMBAŠIĆ LJILJANA
+ISLAMI ABIB
+ISLAMOVIĆ MAHMUD
+ISLAMOVIĆ NADA
+ISMAILI ŠAĆIR
+ITALO EVICA
+ITALO MARKO
+ITEBEJAC ZORA
+IVAČKOVIĆ BRANISLAV
+IVAČKOVIĆ MANOJLO
+IVAČKOVIĆ NADA
+IVAŠČENKO ALEKSANDAR
+IVAŠČENKO ALEKSANDAR
+IVAŠČENKO KATICA
+IVAŠKU-MILOVANOVIĆ FELIČIA
+IVAK JAN
+IVAN ŠANDOR
+IVAN ĐURA
+IVAN ATILA
+IVAN CECILIJA
+IVAN GABOR
+IVAN JOŽEF
+IVAN JOVAN
+IVAN KATALIN
+IVAN MIHAJLO
+IVAN SILVESTER
+IVAN VERONA
+IVANČEV IRINA
+IVANČEV VLADIMIR
+IVANČEVIĆ ŽARKO DR
+IVANČEVIĆ BOŠKO
+IVANČEVIĆ BRANKA
+IVANČEVIĆ DARKO
+IVANČEVIĆ DIMITRIJE
+IVANČEVIĆ DRAGOSLAVA
+IVANČEVIĆ DUŠAN
+IVANČEVIĆ GAVRA
+IVANČEVIĆ JOVAN
+IVANČEVIĆ JOVAN
+IVANČEVIĆ MARICA
+IVANČEVIĆ MILAN
+IVANČEVIĆ MILAN
+IVANČEVIĆ MILENKO
+IVANČEVIĆ MILIVOJE PROFESOR
+IVANČEVIĆ OLIVERA
+IVANČEVIĆ PETAR
+IVANČEVIĆ PETAR
+IVANČEVIĆ RADIVOJ DIPL ING
+IVANČEVIĆ RADMILA
+IVANČEVIĆ SINIŠA
+IVANČEVIĆ STANKO
+IVANČEVIĆ SVETOZAR
+IVANČEVIĆ VLADA
+IVANČEVIĆ VLADIMIR DR
+IVANČIĆ ANTE
+IVANČIĆ BRANKO
+IVANČIĆ DRAGAN
+IVANČIĆ JOSIP
+IVANČIĆ JULIJANA
+IVANČIĆ MARIJA
+IVANČIĆ MILAN
+IVANČIĆ OLGA
+IVANČIĆ STANIMIR
+IVANČIĆ STANISLAV
+IVANČIĆ STEVAN
+IVANČIĆ STEVAN
+IVANČIĆ VLADIMIR
+IVANČIN NIKOLA
+IVANČIN OLJEG
+IVANČUK PAVAO
+IVANDIĆ IVICA
+IVANDIĆ RADMILA
+IVANEŽA ANDRIJA
+IVANEK ĐURA
+IVANEK DUŠKO
+IVANEK VIKTORIJA
+IVANI HILJA
+IVANIŠ KOVILJKA
+IVANIŠ SLAVKO
+IVANIŠ SLAVKO
+IVANIŠEVIĆ ĐURO
+IVANIŠEVIĆ DUŠAN
+IVANIŠEVIĆ EVICA
+IVANIŠEVIĆ ILIJA
+IVANIŠEVIĆ JELICA
+IVANIŠEVIĆ MIHAILO
+IVANIŠEVIĆ MILAN
+IVANIŠEVIĆ MIROSLAV
+IVANIŠEVIĆ MIROSLAV
+IVANIŠEVIĆ MITAR
+IVANIŠEVIĆ NADA
+IVANIŠEVIĆ NADA
+IVANIŠEVIĆ NEĐA
+IVANIŠEVIĆ NEMANJA
+IVANIŠEVIĆ OLGA
+IVANIŠEVIĆ PETAR
+IVANIŠEVIĆ RAJKO
+IVANIŠEVIĆ SVETOZAR
+IVANIŠEVIĆ TINA
+IVANIŠEVIĆ VUKICA
+IVANIĆ ČEDOMIR
+IVANIĆ ĐORĐE
+IVANIĆ ALBERT
+IVANIĆ ANA
+IVANIĆ BRANKO
+IVANIĆ DRAGANA
+IVANIĆ DRAGAN
+IVANIĆ DRAGICA
+IVANIĆ DUŠAN
+IVANIĆ DUŠAN
+IVANIĆ GROZDANA
+IVANIĆ IVANA
+IVANIĆ IVAN
+IVANIĆ IVAN
+IVANIĆ IVAN
+IVANIĆ JOVO
+IVANIĆ MARINA
+IVANIĆ MILAN
+IVANIĆ MILAN
+IVANIĆ MILAN
+IVANIĆ NEVENKA
+IVANIĆ PERSIDA
+IVANIĆ PETAR
+IVANIĆ SNEŽANA
+IVANIĆ STEVAN
+IVANIĆ ZLATOJE
+IVANJI SINIŠA
+IVANJI VERONIKA
+IVANKOVIĆ ČEDOMIR
+IVANKOVIĆ ĐORĐE
+IVANKOVIĆ BOŽANA
+IVANKOVIĆ BOŽO
+IVANKOVIĆ JANKO
+IVANKOVIĆ MARINKO
+IVANKOVIĆ MILENKO
+IVANKOVIĆ MILE
+IVANKOVIĆ MILKA
+IVANKOVIĆ MILKA
+IVANKOVIĆ NENAD
+IVANKOVIĆ NOVO
+IVANKOVIĆ RADE
+IVANKOVIĆ RADE
+IVANKOVIĆ SAVO
+IVANKOVIĆ SLAVKO
+IVANKOVIĆ TIHOMIR
+IVANKOVIĆ ZDRAVKO
+IVANOV ŽIVAN
+IVANOV ĐOKA
+IVANOV ĐORĐE
+IVANOV ĐURĐEVKA
+IVANOV ĐURĐINKA
+IVANOV BORIS
+IVANOV DIMITAR
+IVANOV DRAGICA
+IVANOV DRAGOSLAVA
+IVANOV EMILIJA
+IVANOV EVICA
+IVANOV GAVRA
+IVANOV JULKA
+IVANOV KATICA
+IVANOV LJUBOMIR
+IVANOV MARICA
+IVANOV MARIJA
+IVANOV MIŠA
+IVANOV MILENKO
+IVANOV MILE
+IVANOV MILORAD
+IVANOV MITA
+IVANOV NIKOLA
+IVANOV OLIVERA
+IVANOV PETAR
+IVANOV SERGIJE
+IVANOV SLAVKO
+IVANOV VERA
+IVANOV ZDRAVKO
+IVANOV ZORA
+IVANOV ZORICA
+IVANOVIĆ ČEDOMIR
+IVANOVIĆ ŽIKA
+IVANOVIĆ ŽIVORAD
+IVANOVIĆ ĐORĐE
+IVANOVIĆ ALEKSA
+IVANOVIĆ ANGELINA
+IVANOVIĆ BOŽA
+IVANOVIĆ BOGDAN
+IVANOVIĆ BRANISLAVA
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ CVEJA
+IVANOVIĆ DESANKA
+IVANOVIĆ DESA
+IVANOVIĆ DIMITRIJE
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGOLJUB
+IVANOVIĆ DRAGOLJUB
+IVANOVIĆ DUŠANKA
+IVANOVIĆ DUŠAN
+IVANOVIĆ FRANJA
+IVANOVIĆ ILIJA
+IVANOVIĆ ILIJA
+IVANOVIĆ IVAN DR
+IVANOVIĆ JANOŠ
+IVANOVIĆ JELENA
+IVANOVIĆ JORDAN
+IVANOVIĆ JOVAN
+IVANOVIĆ KOVINKA
+IVANOVIĆ KRSTOMIR
+IVANOVIĆ KSENIJA
+IVANOVIĆ LJUBICA
+IVANOVIĆ LJUBISAV
+IVANOVIĆ LJUBOMIR
+IVANOVIĆ LJUDEVIT
+IVANOVIĆ MARIJA
+IVANOVIĆ MARINKO
+IVANOVIĆ MARKO
+IVANOVIĆ MILAN SUDIJA
+IVANOVIĆ MILENKO
+IVANOVIĆ MILENKO
+IVANOVIĆ MILETA
+IVANOVIĆ MILEVA
+IVANOVIĆ MILICA
+IVANOVIĆ MILIJA
+IVANOVIĆ MILKA
+IVANOVIĆ MILKO
+IVANOVIĆ MILORAD
+IVANOVIĆ MILUN
+IVANOVIĆ MILUTIN
+IVANOVIĆ MIODRAG
+IVANOVIĆ MIRA
+IVANOVIĆ MIRJANA
+IVANOVIĆ MIRKO
+IVANOVIĆ MIROSLAV
+IVANOVIĆ MIROSLAV
+IVANOVIĆ MLADEN
+IVANOVIĆ NEBOJŠA
+IVANOVIĆ NEGOVAN
+IVANOVIĆ NIKOLA
+IVANOVIĆ OBRAD
+IVANOVIĆ PETAR
+IVANOVIĆ PETRA
+IVANOVIĆ RAŠKO
+IVANOVIĆ RADMILA
+IVANOVIĆ RADOMIR
+IVANOVIĆ RADOSLAV
+IVANOVIĆ RADOVAN
+IVANOVIĆ SELIMIR
+IVANOVIĆ SIMO
+IVANOVIĆ SLOBODANKA
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ STAMEN
+IVANOVIĆ STANISLAVA
+IVANOVIĆ STANKA
+IVANOVIĆ STEVAN
+IVANOVIĆ STEVAN
+IVANOVIĆ STOJAN
+IVANOVIĆ VASILIJE
+IVANOVIĆ VELIBOR
+IVANOVIĆ VITOMIR
+IVANOVIĆ VLADA
+IVANOVIĆ VLADA
+IVANOVIĆ VOJISLAV
+IVANOVIĆ VOJISLAV
+IVANOVIĆ VUKOSAVA
+IVANOVIĆ ZORAN DIPL ING
+IVANOVIĆ ZORA
+IVANOVSKI ĐORĐE
+IVANOVSKI BLAGOJE
+IVANOVSKI ILIJA
+IVANOVSKI STANA
+IVATOVIĆ BRANKO
+IVEGEŠ ANA
+IVEGEŠ IŠTVAN DIPL ING
+IVEGEŠ LASLO
+IVEK VLADIMIR
+IVETIĆ BRANISLAVA
+IVETIĆ BRANISLAVA
+IVETIĆ DIMITRIJE
+IVETIĆ DRAGAN
+IVETIĆ LAZA
+IVETIĆ LJILJANA
+IVETIĆ MILOJKO
+IVETIĆ RADE DR
+IVETIĆ RADE DR
+IVETIĆ RADOVAN
+IVETIĆ VASA
+IVETIĆ VESNA
+IVEZIĆ ALEKSANDAR
+IVEZIĆ DRAGO
+IVEZIĆ GOJKO
+IVEZIĆ MARKO DR
+IVEZIĆ MILE
+IVEZIĆ ZORAN
+IVEZIĆ ZVONKO
+IVIČIĆ MIRA
+IVIČIĆ NADA
+IVIČIĆ-TOMIĆ BILJANA
+IVIĆ BLAGOMIR
+IVIĆ DESANKA
+IVIĆ JULIJA
+IVIĆ MELITA
+IVIĆ MIRKO MR PH
+IVIĆ PETAR DIPL OEC
+IVIĆ RADE
+IVIĆ STOJAN
+IVIĆ VASILIJE
+IVIĆ VASO
+IVIĆ VOJIMIR
+IVIĆ ZLATKO
+IVKOV ČEDOMIR
+IVKOV ŽIVKA
+IVKOV ĐORĐE
+IVKOV BOŠKO
+IVKOV BORIVOJ
+IVKOV DANILO
+IVKOV DOBRIVOJ
+IVKOV DUŠAN
+IVKOV ISA
+IVKOV IVAN
+IVKOV JELENA
+IVKOV JELENA
+IVKOV KATICA
+IVKOV KATICA
+IVKOV KATICA
+IVKOV MILENKO
+IVKOV MILICA
+IVKOV MILOVAN
+IVKOV OLGICA
+IVKOV PETAR
+IVKOV RADOSLAV
+IVKOV RADOVAN
+IVKOV SAVA
+IVKOV SEKULA
+IVKOV SLAVKO
+IVKOV SLOBODAN
+IVKOV SLOBODAN
+IVKOV STANA
+IVKOV STANISLAVA
+IVKOV STEVAN
+IVKOV STEVAN
+IVKOV STEVAN
+IVKOV UROŠ
+IVKOV VOJISLAV
+IVKOVIĆ ĐURO
+IVKOVIĆ ANTUN
+IVKOVIĆ ARSA
+IVKOVIĆ BOŽA
+IVKOVIĆ BOGDAN
+IVKOVIĆ BORISLAV
+IVKOVIĆ BORISLAV
+IVKOVIĆ DEJAN
+IVKOVIĆ DIVNA
+IVKOVIĆ DRAGAN DIPL ING
+IVKOVIĆ DUŠAN
+IVKOVIĆ DUŠAN
+IVKOVIĆ DUŠAN
+IVKOVIĆ ESTERA
+IVKOVIĆ GUSTAV DR
+IVKOVIĆ-IVANDEKIĆ DANICA
+IVKOVIĆ JELENA
+IVKOVIĆ JOVAN
+IVKOVIĆ KOVILJKA
+IVKOVIĆ-LAZAR TATJANA DR
+IVKOVIĆ LUKA
+IVKOVIĆ MIHAJLO
+IVKOVIĆ MILANKA
+IVKOVIĆ MILAN
+IVKOVIĆ MILENTIJE
+IVKOVIĆ MILEVA
+IVKOVIĆ MILE
+IVKOVIĆ MILICA
+IVKOVIĆ MILOLJUB DIPL ING
+IVKOVIĆ MILORAD
+IVKOVIĆ MILUTIN
+IVKOVIĆ MIRJANA
+IVKOVIĆ MLADEN
+IVKOVIĆ NATAŠA
+IVKOVIĆ NATAŠA
+IVKOVIĆ NEBOJŠA
+IVKOVIĆ NIKOLA
+IVKOVIĆ NIKOLA
+IVKOVIĆ PETAR
+IVKOVIĆ PREDRAG
+IVKOVIĆ RADISAV
+IVKOVIĆ RANKO
+IVKOVIĆ STEVAN
+IVKOVIĆ STOJAN
+IVKOVIĆ VERA
+IVKOVIĆ VERA
+IVKOVIĆ VERICA
+IVKOVIĆ VLADIMIR
+IVKOVIĆ VLAJKO
+IVKOVIĆ ZAGORKA
+IVKOVIĆ ZDRAVKO
+IVKOVIĆ ZORICA
+IVOŠ ALEKSANDAR
+IVOŠ RODOLJUB
+IVOŠ VOJISLAV
+IVOŠEV ALEKSANDAR
+IVOŠEV DUŠAN
+IVOŠEV ILIJA
+IVOŠEV KATARINA
+IVOŠEV KOSTA
+IVOŠEV MARKO
+IVOŠEV SLAVKO
+IVOŠEV VOJISLAV
+IVOŠEVIĆ ĐURO
+IVOŠEVIĆ ALEKSANDRA
+IVOŠEVIĆ DANICA
+IVOŠEVIĆ GOJKO
+IVOŠEVIĆ MILAN
+IVOŠEVIĆ MILENKO
+IVOŠEVIĆ SAVA
+IVOŠEVIĆ SLOBODAN
+IVOŠEVIĆ ZORAN
+IVOVIĆ LJUBIŠA
+IVOVIĆ PETAR
+IZBRADIĆ STEVAN
+IZGARJAN MILIVOJ
+JAŠČENKOV STANA
+JAŠAR HASAN
+JAŠARAGIĆ IVANKA
+JAŠARAGIĆ ZIJO
+JAŠAREVIĆ HUSEIN
+JAŠAREVIĆ MUHAREM
+JAŠAREVIĆ RAMO
+JAŠAREVIĆ VOJISLAV
+JAŠARI DŽAFER
+JAŠAROV ŠAIP
+JAŠIĆ DESANKA
+JAŠIĆ SINIŠA
+JAŠINSKI RUŽA
+JAŠO ANA
+JAŠO JOŽEF DR
+JAŠO MILOSAV
+JAŠO MIROSLAVA
+JAŠOVIĆ GOJKO
+JAĆEVIĆ MIODRAG
+JAĆIMOVIĆ ALEKSANDAR LEKAR
+JAĆIMOVIĆ BOJIN
+JAĆIMOVIĆ JOVA
+JAĆIMOVIĆ MILENKO
+JAĆIMOVIĆ MILOJKO
+JAĆIMOVIĆ MIRJANA
+JAĆIMOVIĆ PETAR
+JAĆIMOVIĆ STEVO
+JAĆIMOVIĆ VOJISLAV
+JAĆIMOVSKI MOJSE
+JABLANOV ĐUKA
+JABLANOV DRAGICA
+JABLANOV IGNJATIJE
+JABLANOV JELENA
+JABLANOV LJUBOMIR
+JABLANOV MILORAD DIPL ING
+JABLANOV ZORA
+JABLANOV ZORA
+JABLANOVIĆ DESANKA
+JABLANOVIĆ RATKO
+JACANOVIĆ ŽIVKA
+JACANOVIĆ GABRIJELA
+JACANOVIĆ VLADIMIR
+JACIŠIN ANKA
+JACIĆ DARINKA
+JACIĆ DRAGAN
+JAGER ANA
+JAGER MARIN
+JAGER MIHAJLO
+JAGER PAVAO
+JAGETIĆ ALEKSANDAR
+JAGETIĆ MILOŠ
+JAGETIĆ STEVAN
+JAGETIĆ VELIMIR
+JAGETIĆ VOJISLAV
+JAGIĆ SLAVICA
+JAGLICA BRANKO
+JAGLICA SLOBODAN
+JAGNJIĆ DRAGAN
+JAGODIĆ ANĐELKO
+JAGODIĆ DUŠAN
+JAGODIĆ MILICA
+JAGODIĆ MIROSLAV
+JAGODIĆ PETAR
+JAGODIĆ RANKO
+JAGODIĆ VELJKO
+JAGODIĆ VLADO
+JAGUŠT-AKKAD LADA
+JAHJA REŠAD
+JAHURA VUKAŠIN
+JAJČANIN BOŽO
+JAJČEVIĆ ANGELA
+JAJAGIN RADOVAN
+JAJAGIN SPASOJE
+JAJAGIN ZORICA
+JAJIĆ ĐORĐE DR
+JAJIĆ ĐORĐE
+JAJIĆ DRAGAN
+JAJIĆ ILIJA
+JAJIĆ IVANKA
+JAJIĆ LAZAR
+JAJIĆ LENKA
+JAJIĆ MILENA
+JAJIĆ MILICA
+JAJIĆ NIKOLA
+JAJIĆ SAVA
+JAJIĆ STEVAN
+JAJIĆ SVETLANA
+JAJIN LADISLAV
+JAJIN MIRJANA
+JAJIN ZLATKO
+JAKŠA PIROŠKA
+JAKŠEVAC DRAGO
+JAKŠIĆ ŽARKO
+JAKŠIĆ ĐORĐE
+JAKŠIĆ ĐORĐE
+JAKŠIĆ ĐURA
+JAKŠIĆ ANA
+JAKŠIĆ BOGDAN
+JAKŠIĆ BOGDAN
+JAKŠIĆ BOJAN
+JAKŠIĆ BRANKO
+JAKŠIĆ DANE
+JAKŠIĆ DANE
+JAKŠIĆ DANE
+JAKŠIĆ DEJAN
+JAKŠIĆ DMITAR
+JAKŠIĆ DRAGAN
+JAKŠIĆ DUŠANKA
+JAKŠIĆ DUŠANKA
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠKO
+JAKŠIĆ EMIL
+JAKŠIĆ ILIJA
+JAKŠIĆ ILIJA
+JAKŠIĆ IVICA
+JAKŠIĆ IVICA
+JAKŠIĆ JADRANKA
+JAKŠIĆ JASMINKA
+JAKŠIĆ JELENA
+JAKŠIĆ JOVANKA
+JAKŠIĆ JOVAN
+JAKŠIĆ JOVAN
+JAKŠIĆ KATICA
+JAKŠIĆ LJILJA
+JAKŠIĆ LJUBISAV
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ MARKO
+JAKŠIĆ MARKO
+JAKŠIĆ MARKO
+JAKŠIĆ MIJAT
+JAKŠIĆ MILAN
+JAKŠIĆ MILAN
+JAKŠIĆ MILENKO
+JAKŠIĆ MILEVA
+JAKŠIĆ MILOŠ
+JAKŠIĆ MILORAD
+JAKŠIĆ MILORAD
+JAKŠIĆ MIODRAG
+JAKŠIĆ MIRKO
+JAKŠIĆ NEBOJŠA
+JAKŠIĆ NEDELJKO
+JAKŠIĆ NENAD
+JAKŠIĆ PAVLE
+JAKŠIĆ PAVLE
+JAKŠIĆ PETAR
+JAKŠIĆ PETAR
+JAKŠIĆ-PROVČI BRANKA
+JAKŠIĆ RADENKO
+JAKŠIĆ RADE
+JAKŠIĆ RADE
+JAKŠIĆ RADIŠA
+JAKŠIĆ RADOJKO
+JAKŠIĆ RADOVAN
+JAKŠIĆ RADUN
+JAKŠIĆ RISTO
+JAKŠIĆ ROSA
+JAKŠIĆ RUŽICA
+JAKŠIĆ RUŽICA
+JAKŠIĆ SAVA
+JAKŠIĆ SLOBODAN
+JAKŠIĆ SMILJA
+JAKŠIĆ STEVAN
+JAKŠIĆ SVETKO
+JAKŠIĆ SVETLANA DIPL PH
+JAKŠIĆ TOMISLAV
+JAKŠIĆ VASILIJE
+JAKŠIĆ VELIMIR
+JAKŠIĆ VERA
+JAKŠIĆ VLADA
+JAKŠIĆ VLADIMIR
+JAKŠIĆ VOJISLAV
+JAKAB DEŽE
+JAKAB JOŽEF
+JAKAB PAVEL
+JAKEŠEVIĆ DRAGAN
+JAKEŠEVIĆ NIKO
+JAKIŠA IŠTVAN
+JAKIĆ ĐORĐE
+JAKIĆ DANICA
+JAKIĆ DARA
+JAKIĆ DESANKA
+JAKIĆ MILANKA
+JAKIĆ MIODRAG
+JAKIĆ NIKOLA
+JAKIĆ STEVAN
+JAKIĆ VIDA
+JAKICA ČEDO
+JAKICA ILIJA
+JAKIMOV SLAVKO DR LEKAR
+JAKIMOVA-GAZEPOVA JULKA DR
+JAKIMOVSKI BLAGOJ
+JAKIMOVSKI BOGOSLAV
+JAKIMOVSKI BORKO
+JAKIMOVSKI DANE
+JAKLIĆ IVAN
+JAKOB JOŠKA
+JAKOB JOŽEF
+JAKOB LAJOŠ
+JAKOBAC ĐURĐICA
+JAKOBI BORIS
+JAKOBI TATJANA
+JAKOBI VILMOŠ
+JAKOBOVIĆ FRANJO
+JAKOBS IŠTVAN
+JAKONIĆ DRAGOSLAV DR
+JAKONIĆ JASMINA
+JAKONIĆ MILAN DIPL OEC
+JAKONIĆ RADMILA
+JAKOPČEVIĆ BRANKA
+JAKOPOVIĆ BRANISLAVA
+JAKOPOVIĆ MIROSLAV
+JAKOPOVIĆ VLADIMIR
+JAKOTIN ŽIVKO
+JAKOTIN KOSTA
+JAKOTIN PLEMENKA
+JAKOV SALAMUN
+JAKOVAC IVAN
+JAKOVIĆ RADE
+JAKOVLJEV ŽARKO
+JAKOVLJEV ĐURA
+JAKOVLJEV ĐURICA
+JAKOVLJEV ALEKSEJ
+JAKOVLJEV DANICA
+JAKOVLJEV DRAGAN
+JAKOVLJEV DUŠAN
+JAKOVLJEV IVAN
+JAKOVLJEV JEFREM
+JAKOVLJEV KATA
+JAKOVLJEV KOSTA
+JAKOVLJEV KRISTIFOR
+JAKOVLJEV MARINA
+JAKOVLJEV MILOŠ
+JAKOVLJEV MILOŠ
+JAKOVLJEV MIROSLAV
+JAKOVLJEV RADOVAN
+JAKOVLJEV SLOBODAN
+JAKOVLJEV SVETOZAR
+JAKOVLJEV VLADA
+JAKOVLJEV ZLATOJE
+JAKOVLJEVIĆ ŽIVAN
+JAKOVLJEVIĆ ŽIVORAD
+JAKOVLJEVIĆ ĐORĐE
+JAKOVLJEVIĆ ĐORĐO
+JAKOVLJEVIĆ ĐURĐINKA
+JAKOVLJEVIĆ ALEKSANDAR
+JAKOVLJEVIĆ ANA
+JAKOVLJEVIĆ BOŽANA
+JAKOVLJEVIĆ BOGDAN
+JAKOVLJEVIĆ BORIŠA
+JAKOVLJEVIĆ BRANKA
+JAKOVLJEVIĆ DAMJAN
+JAKOVLJEVIĆ DAMJAN
+JAKOVLJEVIĆ DIVNA
+JAKOVLJEVIĆ DRAGAN
+JAKOVLJEVIĆ DRAGOSLAV
+JAKOVLJEVIĆ EMILIJA
+JAKOVLJEVIĆ GOJKO
+JAKOVLJEVIĆ GROZDANA
+JAKOVLJEVIĆ IGNJAT
+JAKOVLJEVIĆ JANJA
+JAKOVLJEVIĆ JOSO
+JAKOVLJEVIĆ JOVAN
+JAKOVLJEVIĆ JOVAN
+JAKOVLJEVIĆ JOVO
+JAKOVLJEVIĆ JOVO
+JAKOVLJEVIĆ LAZAR
+JAKOVLJEVIĆ LJILJANA
+JAKOVLJEVIĆ LJUBINKO
+JAKOVLJEVIĆ LUKA
+JAKOVLJEVIĆ MARKO
+JAKOVLJEVIĆ MILANA
+JAKOVLJEVIĆ MILAN
+JAKOVLJEVIĆ MILAN
+JAKOVLJEVIĆ MILENA
+JAKOVLJEVIĆ MILIĆ
+JAKOVLJEVIĆ MILICA
+JAKOVLJEVIĆ MILICA
+JAKOVLJEVIĆ MILIVOJ MR PH
+JAKOVLJEVIĆ MILJANA
+JAKOVLJEVIĆ MILOŠ
+JAKOVLJEVIĆ MILOVAN
+JAKOVLJEVIĆ MILUTIN
+JAKOVLJEVIĆ MIRJANA
+JAKOVLJEVIĆ MIRKO
+JAKOVLJEVIĆ MIROSLAV
+JAKOVLJEVIĆ MITA
+JAKOVLJEVIĆ NIKOLA
+JAKOVLJEVIĆ OBRAD
+JAKOVLJEVIĆ PAJA
+JAKOVLJEVIĆ RADIŠA
+JAKOVLJEVIĆ RADIVOJ
+JAKOVLJEVIĆ RADOJKO
+JAKOVLJEVIĆ SAVA
+JAKOVLJEVIĆ SIMO
+JAKOVLJEVIĆ SLOBODAN
+JAKOVLJEVIĆ SONJA
+JAKOVLJEVIĆ STEVAN
+JAKOVLJEVIĆ TATJANA
+JAKOVLJEVIĆ VASA
+JAKOVLJEVIĆ VASA
+JAKOVLJEVIĆ VASILIJE
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ ZDRAVKO
+JAKOVOVIĆ DUŠAN
+JAKUŠ MIRJANA
+JAKUBEC ĐURA
+JAKUBEC LADISLAV
+JAMA NADA
+JAMBOR ANDREA
+JAMBOR DANIELA
+JAMBOR IMRE
+JAMBOR MIHALJ
+JAMBRUŠIĆ FRANJO
+JAMINA MILOVAN
+JAMINA RATKO
+JAMRIK ĐORĐE
+JAMRIK JELENA
+JAMRIK LJUBICA
+JAMRIK OTO
+JANČA DEJAN DR
+JANČA KOSTA DR
+JANČA LJUBICA
+JANČIĆ BILJANA
+JANČIĆ BOŽANA
+JANČIĆ BOGDAN
+JANČIĆ DIMITRIJE
+JANČIĆ DRAGINJA
+JANČIĆ DRAGOSLAVA
+JANČIĆ DRAGOSLAV
+JANČIĆ DUŠAN
+JANČIĆ DUŠAN
+JANČIĆ GORDANA
+JANČIĆ GORICA
+JANČIĆ JEROSIM
+JANČIĆ LJUBICA
+JANČIĆ MILOŠ
+JANČIĆ MIROSLAV
+JANČIĆ MLADEN
+JANČIĆ NIKOLA
+JANČIĆ PERA
+JANČIĆ PETAR
+JANČIĆ RADOVAN
+JANČIĆ SAVA
+JANČIĆ SVETISLAV
+JANČIĆ SVETISLAV
+JANČIĆ TIHOMIR
+JANČIĆ TINKA
+JANČIĆ VELIBOR
+JANČIĆ VINKA
+JANČIĆ VLADIMIR
+JANČIĆ VLASTA
+JANČURIĆ ALEKSANDAR
+JANČURIĆ DARINKA
+JANČURIĆ DUŠAN
+JANČURIĆ JOVAN
+JANČURIĆ LAZAR
+JANČURIĆ LENKA
+JANČURIĆ MIRJANA
+JANČURIĆ SAVA
+JANŽEKOVIĆ MILEVKA
+JANŽEKOVIĆ OLGA
+JANŽELJ ANTON
+JANAČEK ĐORĐE
+JANAČEK KATICA
+JANAČKOVIĆ STOIL
+JANAĆ JANOŠ
+JANAĆ KAROLJ
+JANCIĆ BLAGOJE
+JANCIĆ PREDRAG
+JANDRIĆ ĐURICA
+JANDRIĆ BOGDAN
+JANDRIĆ JANDRIJA
+JANDRIĆ MARINKO
+JANDRIĆ MARKO
+JANDRIĆ MARKO
+JANDRIĆ MIĆO
+JANDRIĆ MILENA
+JANDRIĆ MILINA
+JANDRIĆ MILKA
+JANDRIĆ MILORAD
+JANDRIĆ MILORAD
+JANDRIĆ MIROSLAV
+JANDRIĆ MIROSLAV
+JANDRIĆ MITAR
+JANDRIĆ MOMČILO
+JANDRIĆ NEDELJKO
+JANDRIĆ RADOVAN
+JANDRIĆ RATKO
+JANDRIĆ RISTO
+JANDRIĆ SIMO
+JANDRIĆ SLOBODAN
+JANDRIĆ SRETEN
+JANDRIĆ STANKO
+JANDRIĆ STANKO
+JANDRIĆ STANKO
+JANDRIĆ UGLJEŠA
+JANDRIĆ VIDA
+JANDRIĆ VINKA
+JANDRIĆ ZORAN
+JANDRIĆ ZORAN
+JANEŠ NEVEN
+JANEGA SNEŽANA
+JANEV BLAGOJE DIPL ING
+JANEVSKI ALEKSANDAR
+JANIČIĆ BLAŽO
+JANIČIĆ BOŽA
+JANIČIĆ JELENA
+JANIČIĆ MILEVA
+JANIČIĆ MIRKO
+JANIČIĆ RADOJICA
+JANIČIĆ STEVO
+JANIĆ ČASLAV DIPL ING
+JANIĆ ŽIVORAD
+JANIĆ ALEKSANDAR
+JANIĆ ANĐELKO
+JANIĆ DUŠAN
+JANIĆ DUŠKO
+JANIĆ-HILT GORDANA
+JANIĆ IRENA
+JANIĆ IVAN DR
+JANIĆ MILISAV
+JANIĆ NADA
+JANIĆ RADOJKA
+JANIĆ SLOBODAN
+JANIĆ VLADIMIR
+JANIĆIJEVIĆ MILENKO
+JANIĆIJEVIĆ MILOŠ
+JANIĆIJEVIĆ MIRKO
+JANIĆIJEVIĆ MOMČILO
+JANIĆIJEVIĆ NADEŽDA
+JANIĆIJEVIĆ OZRENKA
+JANIĆIJEVIĆ RATKO
+JANIĆIJEVIĆ SOFIJA
+JANIĆIJEVIĆ VITOMIR
+JANIĆIN ANGELINA
+JANIĆIN ILIJA
+JANICKI STANIMIR
+JANIK FERENC
+JANJANIN BRANKO
+JANJANIN SIMO
+JANJATOVIĆ DEJAN
+JANJATOVIĆ GORICA
+JANJATOVIĆ MANE
+JANJATOVIĆ MILAN
+JANJATOVIĆ MIRKO
+JANJATOVIĆ NEDELJKO
+JANJATOVIĆ NIKOLA
+JANJATOVIĆ SLAVICA
+JANJATOVIĆ SLAVICA
+JANJATOVIĆ VERA
+JANJETOV RADA
+JANJETOVIĆ BRANKO
+JANJETOVIĆ NEBOJŠA
+JANJETOVIĆ SLAVICA
+JANJETOVIĆ SLOBODAN
+JANJEVIĆ DRAGOSLAV
+JANJEVIĆ KSENIJA
+JANJEVIĆ ZORAN
+JANJEVIĆ ZORAN
+JANJIČIĆ SIMO
+JANJIŠ JELICA
+JANJIĆ ČEDOMIR
+JANJIĆ ŽELJKO
+JANJIĆ ŽIVKA
+JANJIĆ ŽIVKO
+JANJIĆ ĐORĐE DR
+JANJIĆ BOŠKO
+JANJIĆ DANICA
+JANJIĆ DRAGOMIR DIPL OEC
+JANJIĆ ILIJA
+JANJIĆ JELA
+JANJIĆ JEVREM
+JANJIĆ JEVTO
+JANJIĆ JOVAN
+JANJIĆ JOVO
+JANJIĆ JOVO
+JANJIĆ JOVO
+JANJIĆ KSENIJA
+JANJIĆ LJUBOMIR
+JANJIĆ LUKA
+JANJIĆ MARIJA
+JANJIĆ MARKO
+JANJIĆ MILICA
+JANJIĆ MILIVOJ
+JANJIĆ MILKA
+JANJIĆ MILOMIR
+JANJIĆ MLADEN
+JANJIĆ NATAŠA
+JANJIĆ NEBOJŠA
+JANJIĆ RADOVAN
+JANJIĆ SAVO
+JANJIĆ STEVAN
+JANJIĆ VITOMIR
+JANJIĆ VOJISLAV MR
+JANJIĆ VOJKO
+JANJIĆ VUKOTA
+JANJIN BOGOLJUB
+JANJIN DAMJAN
+JANJIN LAZAR
+JANJIN MILIVOJ
+JANJIN RADIVOJ
+JANJIN SNEŽANA
+JANJOŠ ZORAN
+JANJOŠEVIĆ BRANISLAV
+JANJOŠEVIĆ MILICA
+JANJOŠEVIĆ STEVANKA
+JANJUŠEVIĆ BOSILJKA
+JANJUŠEVIĆ GOJKO
+JANJUŠEVIĆ JOKICA
+JANJUŠEVIĆ MIRA
+JANJUŠEVIĆ NEDELJKO
+JANJUŠEVIĆ NEDELJKO
+JANJUŠEVIĆ STOJAN
+JANKA ŠANDOR
+JANKA IVAN
+JANKANJ VLADO
+JANKIĆ KRISTINA
+JANKO JANOŠ
+JANKOV BORISLAV
+JANKOV BORISLAV
+JANKOV BORISLAV
+JANKOV BRANISLAV
+JANKOV DRAGICA
+JANKOV DUŠAN
+JANKOV IVAN
+JANKOV JELICA
+JANKOV JOVAN
+JANKOV JOVICA
+JANKOV MILAN
+JANKOV MILIJANA
+JANKOV MIOMIR
+JANKOV MITA
+JANKOV MITKO
+JANKOV NADA
+JANKOV NEDELJKO
+JANKOV NIKOLA
+JANKOV NIKOLA
+JANKOV NOVKA
+JANKOV PREDRAG
+JANKOV RADIVOJ
+JANKOV RADOSLAVA
+JANKOV RANĐEL
+JANKOV SLOBODAN
+JANKOV SLOBODAN
+JANKOV SMILJKA
+JANKOV SPASOJA
+JANKOV SREDOJE
+JANKOV TIHOMIR
+JANKOV VERA
+JANKOV ZAGORKA DR
+JANKOVIĆ ČASLAV
+JANKOVIĆ ČEDO
+JANKOVIĆ ČEDO
+JANKOVIĆ ŽARKO DIPL ING
+JANKOVIĆ ŽARKO
+JANKOVIĆ ŽIVKO
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ĐORĐE
+JANKOVIĆ ĐORĐE
+JANKOVIĆ ĐURĐICA
+JANKOVIĆ ĐURA
+JANKOVIĆ ALEKSANDAR
+JANKOVIĆ ALEKSANDAR
+JANKOVIĆ ANA
+JANKOVIĆ ANICA
+JANKOVIĆ ANKA
+JANKOVIĆ BOŠKO
+JANKOVIĆ BOŠKO
+JANKOVIĆ BOŽIDAR
+JANKOVIĆ BOŽIDAR
+JANKOVIĆ BOŽO
+JANKOVIĆ BOGOLJUB
+JANKOVIĆ BORIVOJ DR LEKAR
+JANKOVIĆ BRANKO
+JANKOVIĆ BRATISLAV
+JANKOVIĆ DARA
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DOBRIVOJE
+JANKOVIĆ DOBRIVOJ
+JANKOVIĆ DRAGANA
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGINJA
+JANKOVIĆ DRAGOMIR
+JANKOVIĆ DRAGOSLAV
+JANKOVIĆ DUŠANKA
+JANKOVIĆ DUŠAN
+JANKOVIĆ DUŠAN
+JANKOVIĆ DUŠICA
+JANKOVIĆ GORDANA
+JANKOVIĆ GORDANA
+JANKOVIĆ HRISTIVOJE
+JANKOVIĆ IGNJAT
+JANKOVIĆ JELICA
+JANKOVIĆ JORDAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JULIJANA
+JANKOVIĆ KALMAN DIPL ING
+JANKOVIĆ KALMAN
+JANKOVIĆ KATICA
+JANKOVIĆ KOVILJKA
+JANKOVIĆ KRSTA
+JANKOVIĆ-KUZMANČEV OLIVERA
+JANKOVIĆ LASLO
+JANKOVIĆ LASLO
+JANKOVIĆ LAZAR
+JANKOVIĆ LAZAR
+JANKOVIĆ LJILJANA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBOMIR
+JANKOVIĆ MARA
+JANKOVIĆ MARIJAN
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARINA
+JANKOVIĆ MARKO
+JANKOVIĆ MELANIJA
+JANKOVIĆ MIĆA
+JANKOVIĆ MIĆA
+JANKOVIĆ MILAN
+JANKOVIĆ MILENA
+JANKOVIĆ MILENKO
+JANKOVIĆ MILENKO
+JANKOVIĆ MILICA
+JANKOVIĆ MILICA
+JANKOVIĆ MILIJANA
+JANKOVIĆ MILINKO
+JANKOVIĆ MILISAV
+JANKOVIĆ MILIVOJE
+JANKOVIĆ MILOJE
+JANKOVIĆ MILOJICA
+JANKOVIĆ MILOMIR
+JANKOVIĆ MILORAD
+JANKOVIĆ MILORAD
+JANKOVIĆ MILORAD
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MIRJANA
+JANKOVIĆ MIROLJUB
+JANKOVIĆ MITAR
+JANKOVIĆ MLADEN
+JANKOVIĆ-MRKIĆ ZORA DIPL ING
+JANKOVIĆ NADA
+JANKOVIĆ NADA
+JANKOVIĆ NASTA
+JANKOVIĆ NENAD
+JANKOVIĆ NIKOLA
+JANKOVIĆ OBRAD
+JANKOVIĆ PAVLE
+JANKOVIĆ PAVLE
+JANKOVIĆ PAVLE
+JANKOVIĆ PETAR
+JANKOVIĆ PETAR
+JANKOVIĆ PETAR
+JANKOVIĆ PRVOSLAV
+JANKOVIĆ PRVOSLAV
+JANKOVIĆ RADIVOJE
+JANKOVIĆ RADOMIR
+JANKOVIĆ RADOSLAV
+JANKOVIĆ RADOSLAV
+JANKOVIĆ RADOVAN
+JANKOVIĆ RAJKO
+JANKOVIĆ RAJKO
+JANKOVIĆ RANKO
+JANKOVIĆ RATKO
+JANKOVIĆ ROSA
+JANKOVIĆ RUŽA
+JANKOVIĆ SLAVICA
+JANKOVIĆ SLAVKO
+JANKOVIĆ SLAVKO
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SOFIJA
+JANKOVIĆ SPASA
+JANKOVIĆ SPASOJE
+JANKOVIĆ SPOMENKA
+JANKOVIĆ SRBOLJUB
+JANKOVIĆ STANKO
+JANKOVIĆ STEVAN
+JANKOVIĆ STEVAN
+JANKOVIĆ STEVAN
+JANKOVIĆ STOJANKA
+JANKOVIĆ SVETISLAV
+JANKOVIĆ SVETOZAR
+JANKOVIĆ TIBOR
+JANKOVIĆ TODOR
+JANKOVIĆ TODOR
+JANKOVIĆ TODOR
+JANKOVIĆ VESNA
+JANKOVIĆ VITOMIR
+JANKOVIĆ VITOMIR
+JANKOVIĆ VLADIMIR
+JANKOVIĆ VUKIĆ
+JANKOVIĆ VUKICA
+JANKOVIĆ VUKOMAN
+JANKOVIĆ ZLATOJE
+JANKOVIĆ ZOLTAN
+JANKOVIĆ ZORAN
+JANKOVIĆ ZORAN
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORKA
+JANKULOV DANICA
+JANKULOV-DEMJEN MAJA
+JANKULOV DRAGIŠA MR PH
+JANKULOV STEVAN
+JANKULOVSKI MARIJA
+JANKULOVSKI PETAR
+JANO JULIJA
+JANOŠEV BISERKA
+JANOŠEV DRAGICA
+JANOŠEV LJILJANA
+JANOŠEV MILAN
+JANOŠEV MILENA
+JANOŠEV MILENKO
+JANOŠEVIĆ RADIVOJ
+JANOŠI FRANCIŠKA
+JANOŠI ILONA
+JANOŠI KARLO
+JANOŠI LASLO
+JANOŠI MARGITA
+JANOŠI MIHALJ
+JANOŠI MIHALJ
+JANOŠI TEREZA
+JANOŠI ZOLTAN
+JANOVAC ŽIVOJIN
+JANOVIĆ LJILJA
+JANUŠKO IŠTVAN
+JANUS MILKA
+JANUS VOISLAV
+JANUZOVIĆ DUŠANKA
+JANUZOVIĆ JOLAN
+JANUZOVIĆ MILOVAN
+JANUZOVIĆ MIRALJUB
+JANUZOVIĆ NOVICA DR
+JANUZOVIĆ SLOBODAN
+JANUZOVIĆ SVETLANA
+JAPUNDŽA LAZA
+JAPUNDŽIĆ ĐORĐE
+JAPUNDŽIĆ GORDANA
+JAPUNDŽIĆ MIRKO
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ SAVA
+JARAK IVAN
+JARAMAZ DIJANA
+JARAMAZ MILOVAN
+JARAMAZ NIKOLA
+JARC ANGEL
+JARI PROKA
+JARIĆ ČEDOMIR
+JARIĆ ALEKSANDAR
+JARIĆ AVDO
+JARIĆ BOJAN
+JARIĆ BRANKO
+JARIĆ DANIELA
+JARIĆ DESANKA
+JARIĆ DRAGANA
+JARIĆ DRAGAN
+JARIĆ DUŠAN DR
+JARIĆ KRISTINA
+JARIĆ KRISTINA
+JARIĆ LJILJANA
+JARIĆ LJILJANA
+JARIĆ MARIJA
+JARIĆ MARIJA
+JARIĆ MILAN
+JARIĆ MILAN
+JARIĆ MILOJKO
+JARIĆ MIRA
+JARIĆ SLOBODAN
+JARIĆ ZORAN
+JARMINAC BRANKO
+JAROŠENKO KATARINA
+JAROŠEVSKI ANTON
+JAROŠEVSKI IVICA
+JAROŠEVSKI PAVEL
+JASENOVSKI ANA
+JASIĆ DIVNA
+JASIĆ JANKO
+JASIĆ MANDA
+JASIĆ MIRKO
+JASIĆ VERICA
+JASIKA RUŽA
+JASIKA STOJANKA
+JASIKIĆ MILORAD
+JASMINOVIĆ JAMIN
+JASNIĆ MILAN DR LEKAR
+JASNIĆ MILAN
+JASNIĆ MILOMIRKA
+JASNIĆ SINIŠA
+JASNIGER ALEKSANDAR
+JATIĆ ANĐELIJA
+JATIĆ DRAGAN
+JATIĆ GRADIMIR
+JATIĆ STEVAN
+JAUKOVIĆ DRAGIŠA
+JAUKOVIĆ PEJKA
+JAUS VALTER
+JAVNI PETAR
+JAVORAN IVAN
+JAVORINA ĐURA
+JAVORINA LJILJANA
+JAVORINA MILE
+JAVORINA SIMO
+JAVORNIK BOSILJKA
+JAVORNIK PAVEL
+JAZIĆ DANILO
+JAZIĆ IVANKA
+JAZIĆ LAZA
+JAZIĆ LJUBOMIR
+JAZIĆ MARINKO
+JAZIĆ MIROSLAV
+JAZIĆ-SAVIN TATJANA
+JAZIĆ SVETLANA
+JAZVIĆ ANKA
+JEČINAC MILAN
+JEČINAC MILORAD
+JEČINAC VERA
+JEČMENICA ALEKSANDAR
+JEČMENICA ALEKSANDAR
+JEČMENICA JELENA
+JEČMENICA MILOŠ
+JEČMENICA VLADIMIR
+JEŠIĆ ŽIVKA
+JEŠIĆ ANĐELKO
+JEŠIĆ DANIJELA
+JEŠIĆ JULKA
+JEŠIĆ MILAN
+JEŠIĆ MIODRAG
+JEŠIĆ MIROSLAVA
+JEŠIĆ STEVAN
+JEŠIĆ ZORAN
+JEŽ DRAGAN
+JEŽ GOSPOJINKA
+JEŽ MILORAD
+JEŽ SLOBODAN
+JEŽ TRIVO
+JEŽEK MILIVOJ
+JECKOV NADA
+JEDERAN JOSIP
+JEDERAN JOSIP
+JEFIĆ GORAN
+JEFTENIĆ ŠPIRO
+JEFTENIĆ VLADO
+JEFTIĆ ŽARKO
+JEFTIĆ BILJANA
+JEFTIĆ BOŽIDAR
+JEFTIĆ BORISLAV DIPL ING
+JEFTIĆ BRANKO
+JEFTIĆ DAMJAN
+JEFTIĆ DRAGAN
+JEFTIĆ JADRANKA
+JEFTIĆ JEFTA
+JEFTIĆ JELENA
+JEFTIĆ JOVAN
+JEFTIĆ KATARINA
+JEFTIĆ LJUBOMIR
+JEFTIĆ MILAN
+JEFTIĆ MILAN
+JEFTIĆ MILENKO
+JEFTIĆ MILORAD
+JEFTIĆ MITA
+JEFTIĆ SRETENKA
+JEFTIĆ TIHOMIR
+JEFTIĆ TOMISLAV
+JEFTIĆ VELINKA
+JEFTIĆ VLADIMIR
+JEFTIĆ VLASTA
+JEFTIĆ ZDRAVKO
+JEFTOVIĆ FRANJA
+JEGARAC OLGA
+JEGDIĆ DAMJAN
+JEGDIĆ GORDANA
+JEGDIĆ SVETISLAV
+JEGDIĆ VASA
+JEGDIĆ VASO
+JEGEŠ MILA
+JEKELIĆ BRANISLAV
+JEKELIĆ BRANKO
+JEKELIĆ EMILIJA
+JEKELIĆ LASLO
+JEKELIĆ MILAN
+JEKELIĆ MILIĆ
+JEKELIĆ RADOSLAV DIPL ING
+JEKELIĆ SLAVKO
+JEKELIĆ ZORICA
+JEKNIĆ RADOJICA
+JELČIĆ JOZEFINA
+JELČIĆ KRISTIJAN
+JELČIĆ LJUBIŠA
+JELČIĆ MILOVAN
+JELČIĆ MILOVAN
+JELČIĆ PAVLE
+JELČIĆ ZORA
+JELAČA ĐURO
+JELAČA ĐURO
+JELAČA BRANKO
+JELAČA DESA
+JELAČA KOSTA
+JELAČA MIHAJLO
+JELAČA MILENKO
+JELAČA RUŽA
+JELAČA SIMO DR ING
+JELAČA SLOBODAN
+JELAČA STANKO
+JELAČA STOJAN
+JELAČIĆ BOŽIDAR
+JELAČIĆ BRANKO
+JELAČIĆ DANILO
+JELAČIĆ DUŠAN
+JELAČIĆ JULIŠKA
+JELAČIĆ LJUBOMIR
+JELAČIĆ MIHAJLO
+JELAČIĆ MILENKO
+JELAČIĆ MIROSLAV
+JELAČIĆ RATOMIR
+JELAČIĆ SLOBODAN
+JELAČIĆ ZORKA
+JELAVIĆ ŽELJKO
+JELAVIĆ DRAGO
+JELEČ ILIJA
+JELEČANIN ĐORĐE
+JELEČANIN MARIJA
+JELEČIĆ JOVAN
+JELENČIĆ FRANJA
+JELENIĆ ŽIVAN
+JELENIĆ MILAN
+JELENIĆ PANTA
+JELENIĆ PAVLE
+JELENIĆ RADA
+JELENIĆ SLOBODAN
+JELENIĆ VASILIJE
+JELENKOVIĆ ALEKSANDAR
+JELENKOVIĆ GROZDA
+JELENKOVIĆ VLADISLAV
+JELESIĆ ANGELA PROFESOR
+JELIČIĆ ŽIVKO
+JELIČIĆ ĐURO
+JELIČIĆ BEATA
+JELIČIĆ BRANKO
+JELIČIĆ DUŠAN
+JELIČIĆ JELENA
+JELIČIĆ JOVO
+JELIČIĆ LJUBICA
+JELIČIĆ MARIJA
+JELIČIĆ MILAN
+JELIČIĆ MILE
+JELIČIĆ MIRKO
+JELIČIĆ PETAR
+JELIČIĆ PETAR
+JELIČIĆ ROSA
+JELIČIĆ VID
+JELIĆ ŽIVKO
+JELIĆ ŽIVKO
+JELIĆ ĐORĐE
+JELIĆ ĐORĐE
+JELIĆ AĆIM
+JELIĆ ANĐA
+JELIĆ ANTE
+JELIĆ BUDIMIR
+JELIĆ DRAGAN
+JELIĆ DRAGUTIN
+JELIĆ DUŠAN
+JELIĆ EMILIJA
+JELIĆ ESTERA
+JELIĆ GORDANA
+JELIĆ IVANKA
+JELIĆ IVICA
+JELIĆ JAGODINKA
+JELIĆ JANJA
+JELIĆ JELENA
+JELIĆ JOVAN
+JELIĆ LAZAR
+JELIĆ LAZAR
+JELIĆ LJUBICA
+JELIĆ LJUBINKA
+JELIĆ LUKA
+JELIĆ MARICA
+JELIĆ MARINA
+JELIĆ-MATIĆ MARIJA
+JELIĆ MILAN
+JELIĆ MILAN
+JELIĆ MILENA
+JELIĆ MILENKO
+JELIĆ MILKA
+JELIĆ MIODRAG
+JELIĆ MIODRAG
+JELIĆ MIRJANA
+JELIĆ MITA
+JELIĆ MOMIR
+JELIĆ NADA
+JELIĆ NEDELJKO
+JELIĆ PAVLE
+JELIĆ PREDRAG
+JELIĆ PREDRAG
+JELIĆ RADENKO
+JELIĆ ROSA
+JELIĆ SAVA
+JELIĆ SIMA
+JELIĆ SLAVICA
+JELIĆ STANIMIR
+JELIĆ STEVAN
+JELIĆ STEVA
+JELIĆ STEVA
+JELIĆ STIPE
+JELIĆ SVETISLAV DIPL ING
+JELIĆ SVETOZAR
+JELIĆ TOMA
+JELIĆ TOMISLAV
+JELIĆ VASA
+JELIĆ VASO
+JELIĆ VIKTORIJA
+JELICKI SIMEUN
+JELIN JOVAN
+JELIN RADMILA
+JELINČIĆ DUJO
+JELINEK STEVAN
+JELISAVAC GORDAN
+JELISAVAC MILOŠ
+JELISAVAC MOMIR
+JELKIĆ JOVAN
+JELKIĆ LAZAR
+JELKIĆ OLIVERA
+JELKIĆ VLADIMIR
+JELOVAC ŽARKO
+JELOVAC ŽARKO
+JELOVAC ĐORĐE
+JELOVAC ĐORĐE
+JELOVAC ĐURO
+JELOVAC BISERKA
+JELOVAC BRANISLAV
+JELOVAC BRANKA
+JELOVAC BRANKA
+JELOVAC BRANKO
+JELOVAC DRAGAN
+JELOVAC DRAGAN
+JELOVAC DUŠAN
+JELOVAC IZABELA
+JELOVAC JOVAN
+JELOVAC MILAN
+JELOVAC MILICA
+JELOVAC MIROSLAV
+JELOVAC MIROSLAV
+JELOVAC NADA
+JELOVAC NIKOLA
+JELOVAC RADOJKA
+JELOVAC RADOJKA
+JELOVAC RADOMIR DR LEKAR
+JELOVAC RUŽICA
+JELOVAC SLOBODAN
+JELOVAC STEVAN
+JELOVAC STOJAN
+JELOVAC TUGOMIR
+JELOVAC VELIMIR
+JELOVAC VLADA
+JELOVAC VUJICA
+JELOVIĆ MILANKA
+JELUŠIĆ GORDANA
+JELUŠIĆ LENKA
+JELUŠIĆ MATIJE
+JEMČ BRANISLAV
+JEMRIĆ JELA
+JENECKOV RADMILA
+JENECKOV SAŠA
+JENEI ANDRAŠ
+JENEI EUGEN
+JENEI LAJOŠ
+JENEI MIODRAG
+JENEI RUŽA
+JENEI STEVAN
+JENEI TIBOR
+JENEV BLAGOJ
+JEPURSKI NENAD
+JERČIĆ FRANJO
+JERANČE DANICA
+JERANT ANDRIJA
+JERANT PATIĆ VERA DR
+JERANT PETAR
+JERAUŠEK FRANJO
+JERAUŠEK IVICA
+JERBIĆ DRAGICA
+JEREBINŠEK ANA
+JEREBINŠEK SLAVKO
+JERELE FRANCIŠKA
+JEREMENKO ALEKSANDRA
+JEREMIĆ ĐOKA
+JEREMIĆ ĐORĐE
+JEREMIĆ ALEKSANDAR
+JEREMIĆ-BLAGOJEVIĆ VERICA
+JEREMIĆ BLAGOJE
+JEREMIĆ DIMITRIJE DR LEKAR
+JEREMIĆ DRAGOSLAV
+JEREMIĆ DUŠANKA
+JEREMIĆ JASNA
+JEREMIĆ JELENA
+JEREMIĆ JOVAN
+JEREMIĆ JOVAN
+JEREMIĆ LAZAR
+JEREMIĆ LJILJANA
+JEREMIĆ MELANIJA
+JEREMIĆ MILEVA
+JEREMIĆ MIRA
+JEREMIĆ MIROSLAV
+JEREMIĆ NADEŽDA
+JEREMIĆ NENAD
+JEREMIĆ OLIVERA
+JEREMIĆ PAVLE
+JEREMIĆ PAVLE
+JEREMIĆ RADE
+JEREMIĆ STANA
+JEREMIĆ STANKO
+JEREMIĆ STANOJE
+JEREMIĆ STEVAN
+JEREMIĆ STEVAN
+JEREMIĆ VASILIJE
+JEREMIĆ VERA
+JEREMIĆ VOJISLAV
+JEREMIĆ ZORA
+JEREMIJIĆ VITOMIR
+JERENIĆ MLADEN
+JERGIĆ MILICA
+JERGIĆ MIODRAG
+JERGIĆ MIRKO
+JERGIĆ PETAR
+JERGIĆ SLAVICA
+JERGIĆ SPASOJE
+JERIĆ DUŠAN
+JERIĆ KOVINKA
+JERIĆ LJUBIŠA
+JERIĆ MILICA
+JERIĆ PETAR
+JERINIĆ BRANKO
+JERINIĆ-KURIN EDIT
+JERINIĆ MIODRAG
+JERINIĆ VOJISLAV
+JERINKIĆ DRAGAN
+JERINKIĆ IVAN
+JERINKIĆ PAVLE
+JERKAN ANTE
+JERKIĆ SVETOZAR
+JERKOV ŽARKO
+JERKOV ANDRIJA
+JERKOV BRANIMIR
+JERKOV JOVAN
+JERKOV JOVICA
+JERKOV JOVICA
+JERKOV MIRJANA
+JERKOV MIRJANA
+JERKOV PAVLE
+JERKOV SMILJA
+JERKOV SNEŽANA
+JERKOV VELJKO
+JERKOV VOJISLAV
+JERKOVIĆ ĐORĐE
+JERKOVIĆ ALEKSANDAR
+JERKOVIĆ DMITAR
+JERKOVIĆ FRANJO
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ KATICA
+JERKOVIĆ KATICA
+JERKOVIĆ LENKA
+JERKOVIĆ MILAN
+JERKOVIĆ MILOŠ
+JERKOVIĆ NADEŽDA
+JERKOVIĆ NIKOLA
+JERKOVIĆ PREDRAG
+JERKOVIĆ RAJKO
+JERKOVIĆ SIMO
+JERKOVIĆ SINIŠA
+JERKOVIĆ SOFIJA
+JERKOVIĆ STEVAN
+JERKOVIĆ STOJAN
+JERKOVIĆ SVETKO
+JERKOVIĆ TADIJA
+JERKOVIĆ VALERIJA
+JERKOVIĆ VASA
+JERKOVIĆ VLADIMIR MR
+JERKOVIĆ VLADIMIR
+JERKOVIĆ VLADO
+JERKOVIĆ VUKOSAVA
+JERKOVIĆ ZORAN
+JEROSIMOVIĆ BRANIMIR
+JEROTIJEVIĆ DARINKA
+JESIĆ MILENA
+JESTRONIĆ TOMISLAV
+JESTROVIĆ IRENA
+JEVĐENIĆ RUŽICA
+JEVĐENIĆ VLADA
+JEVĐOVIĆ MELANIJA DR
+JEVĐOVIĆ MELANIJA
+JEVIĆ ČEDO
+JEVIĆ BRANKO
+JEVIĆ MILAN
+JEVIĆ MILIVOJ
+JEVIĆ MIODRAG
+JEVIĆ MOMČILO
+JEVIĆ NADA
+JEVIĆ NIKOLA
+JEVIĆ TODOR
+JEVREMOV ŽIVA
+JEVREMOV ĐORĐE
+JEVREMOV MILAN
+JEVREMOV MIRJANA
+JEVREMOVIĆ DOBRILA
+JEVREMOVIĆ LJUBINKA
+JEVREMOVIĆ MILIVOJ
+JEVREMOVIĆ MILORAD
+JEVREMOVIĆ MIODRAG
+JEVREMOVIĆ RADIŠA
+JEVREMOVIĆ SINIŠA
+JEVREMOVIĆ SOFIJA
+JEVREMOVIĆ STEVAN
+JEVREMOVIĆ VLADAN
+JEVRIĆ ŽIVAN
+JEVRIĆ ĐORĐE
+JEVRIĆ ĐORĐE
+JEVRIĆ BOŽIDAR
+JEVRIĆ BOGOLJUB
+JEVRIĆ BRANKO
+JEVRIĆ BRATISLAV
+JEVRIĆ DANICA
+JEVRIĆ DESIMIR
+JEVRIĆ DRAGUTIN
+JEVRIĆ EVICA
+JEVRIĆ GIGA
+JEVRIĆ GORAN
+JEVRIĆ JELA
+JEVRIĆ JOVAN
+JEVRIĆ KRISTINA
+JEVRIĆ LJUBICA
+JEVRIĆ MARIJA
+JEVRIĆ MILAN
+JEVRIĆ MILENKO
+JEVRIĆ MILE
+JEVRIĆ MILOŠ
+JEVRIĆ MIROSLAV
+JEVRIĆ RADIŠA
+JEVRIĆ RADIVOJE
+JEVRIĆ RADIVOJ
+JEVRIĆ RADIVOJ
+JEVRIĆ RADOSLAV
+JEVRIĆ RANISAV
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLOBODAN
+JEVRIĆ SRBOLJUB
+JEVRIĆ STAMENKO
+JEVRIĆ STEVAN DR ING
+JEVRIĆ STEVAN
+JEVRIĆ ZLATOMIR
+JEVTOVIĆ ALEKSANDAR
+JEVTOVIĆ ALEKSANDRA
+JEVTOVIĆ JORDAN
+JEVTOVIĆ MILAN
+JEVTOVIĆ MIRKO
+JEVTOVIĆ RADIVOJE
+JEVTOVIĆ STANISLAVA
+JEVTOVIĆ VOJKAN
+JEVTOVIĆ VUKOTA
+JEVTOVIĆ VULE
+JEZDIĆ DOBRILA
+JEZDIĆ DRAGAN
+JEZDIĆ JOVAN
+JEZDIĆ LJUBOMIR
+JEZDIĆ MOMČILO
+JEZDIĆ SAVA
+JEZDIĆ SPIRA
+JEZDIĆ STEVKA
+JEZDIĆ STOJAN DIPL ING
+JEZDIMIROVIĆ ACA
+JEZDIMIROVIĆ DRAGAN
+JEZDIMIROVIĆ DRAGICA
+JEZDIMIROVIĆ LAZAR
+JEZDIMIROVIĆ MIRJANA
+JEZDIMIROVIĆ STOJANKA
+JEZDIMIROVIĆ ZORICA
+JEZERKIĆ OLGICA
+JIROTA-GAZIBARIĆ DANIELA
+JOČIĆ MOMČILO
+JOČIĆ STANOJLO
+JOČIN ŽIKA
+JOČKOVIĆ JOVAN
+JOŠANOV ALEKSANDRA
+JOŠANOV LAZAR
+JOŠANOV LJUBICA
+JOŠANOV MLADEN
+JOŠEVSKI ĐORĐIJA
+JOŠIĆ ĐURA
+JOŠIĆ BLAŽO
+JOŠIĆ DRAGOSLAV
+JOŠIĆ MILAN
+JOŠIĆ MILIVOJ
+JOŠIĆ MILORAD
+JOŠIĆ PETAR
+JOŽA KATALIN
+JOŽIĆ ĐURA
+JOANOVIĆ CVETKO DIPL ING
+JOANOVIĆ ERŽEBET
+JOANOVIĆ RAMONA
+JOCIĆ ŽIVOJIN DIPL ING
+JOCIĆ ŽIVORAD DR
+JOCIĆ ĐORĐE
+JOCIĆ ALEKSANDAR
+JOCIĆ ANĐELKA
+JOCIĆ ANGELINA
+JOCIĆ ANKICA
+JOCIĆ BORISLAV
+JOCIĆ BRANISLAV DR
+JOCIĆ BRANKA
+JOCIĆ DRAGICA
+JOCIĆ DRAGUTIN
+JOCIĆ FILIP
+JOCIĆ HRISTINA
+JOCIĆ ILIJA
+JOCIĆ ISIDOR
+JOCIĆ JELISAVETA
+JOCIĆ JOVANKA
+JOCIĆ LJILJANA
+JOCIĆ MARIJA
+JOCIĆ MARKO
+JOCIĆ MARKO
+JOCIĆ MARTA
+JOCIĆ MILADINKA
+JOCIĆ MILAN
+JOCIĆ MILAN
+JOCIĆ MILOŠ
+JOCIĆ MILOŠ
+JOCIĆ MIRKO
+JOCIĆ MLADEN
+JOCIĆ NENAD
+JOCIĆ PETAR
+JOCIĆ PETAR
+JOCIĆ PETAR
+JOCIĆ RADIVOJ
+JOCIĆ RADMILA
+JOCIĆ RADOSLAV
+JOCIĆ RODOLJUB
+JOCIĆ SAVA
+JOCIĆ SLOBODAN
+JOCIĆ SMILJA
+JOCIĆ STEVAN DIPL ING
+JOCIĆ STEVAN
+JOCIĆ STEVAN
+JOCIĆ VALERIJA
+JOCIĆ VERA
+JOCIĆ ZORAN
+JOCIN BRANKO
+JOCIN PERSIDA
+JOCIN ZLATOJE
+JOCKOV DANICA
+JOCKOV MANOJLO
+JOCKOV MILANKA
+JOCKOV MILOSAV
+JOCKOV MIROSLAVA
+JOCKOV NIKOLA
+JOCKOV NIKOLA
+JOCKOV RADOVAN
+JOCKOVIĆ ĐORĐE DR
+JOCKOVIĆ JOVANKA
+JOCKOVIĆ OBRAD
+JOCOVIĆ ŽIVOMIR
+JOCOVIĆ MIODRAG
+JOCOVIĆ RADENKO
+JOCOVIĆ ZORICA
+JOCULOV BRANKA
+JOCULOV MIHALJ
+JODAL ROŽA
+JOHIMSTAL AGATA
+JOJIĆ ĐORĐE
+JOJIĆ ALEKSANDAR
+JOJIĆ BOŽIDAR
+JOJIĆ DOINA
+JOJIĆ DRAGI
+JOJIĆ DRAGOSLAV DR
+JOJIĆ DUŠAN
+JOJIĆ GEORGIJE
+JOJIĆ IVANKA
+JOJIĆ IVANKA
+JOJIĆ JELA
+JOJIĆ JELENA
+JOJIĆ LJUBICA
+JOJIĆ MIĆKO
+JOJIĆ MILEVA
+JOJIĆ MILOŠ
+JOJIĆ MIODRAG
+JOJIĆ MIRKO
+JOJIĆ MIRKO
+JOJIĆ MIROLJUB
+JOJIĆ MIROSLAV
+JOJIĆ OLGA
+JOJIĆ SAVA
+JOJIĆ SIMO
+JOJIĆ STANA
+JOJIĆ STEVAN
+JOJIĆ SVETOZAR
+JOJIĆ SVETO
+JOJIN BARBARA
+JOJIN DOBROSAV
+JOJIN SINIŠA
+JOJKIĆ ĐORĐE
+JOJKIĆ ĐORĐE
+JOJKIĆ ĐORĐE
+JOJKIĆ ALEKSANDAR
+JOJKIĆ BORISLAVA
+JOJKIĆ BRANISLAV
+JOJKIĆ DANICA
+JOJKIĆ DINA
+JOJKIĆ DUŠAN
+JOJKIĆ DUŠKO
+JOJKIĆ JOVICA
+JOJKIĆ KATICA
+JOJKIĆ KATICA
+JOJKIĆ LJUBOMIR
+JOJKIĆ MARICA
+JOJKIĆ MARIJA
+JOJKIĆ MARIJA
+JOJKIĆ MILADIN
+JOJKIĆ MILENA
+JOJKIĆ MILENKO
+JOJKIĆ MILICA
+JOJKIĆ MILICA
+JOJKIĆ MIODRAG
+JOJKIĆ MIRJANA DR
+JOJKIĆ MIROSLAV
+JOJKIĆ NADA
+JOJKIĆ OLGA
+JOJKIĆ PAJA
+JOJKIĆ-POLETTO ZORA
+JOJKIĆ RADIVOJ
+JOJKIĆ RADIVOJ
+JOJKIĆ RADOJKA
+JOJKIĆ RADOSLAV
+JOJKIĆ SLAVKO
+JOJKIĆ SMILJKA
+JOJKIĆ SNEŽANA
+JOJKIĆ SOFIJA
+JOJKIĆ SOKO
+JOJKIĆ STANKO
+JOJKIĆ UROŠ
+JOJKIĆ VOJISLAV
+JOJKIĆ ZDRAVKO
+JOKA KATARINA
+JOKA VASO
+JOKANIĆ ILIJA
+JOKANOVIĆ BLAGOJE
+JOKANOVIĆ BOSILJKA
+JOKANOVIĆ BRANKO
+JOKANOVIĆ BRANKO
+JOKANOVIĆ DESIMIR
+JOKANOVIĆ MILORAD
+JOKANOVIĆ RADA
+JOKANOVIĆ RADOMIR
+JOKANOVIĆ SINIŠA
+JOKANOVIĆ TODOR
+JOKANOVIĆ TOMISLAV
+JOKANOVIĆ VLADIMIR DR
+JOKIŠIĆ BRANKO
+JOKIŠIĆ SPASOJE
+JOKIĆ ŽARKO
+JOKIĆ ŽARKO
+JOKIĆ ŽIVAN
+JOKIĆ ĐORĐE
+JOKIĆ ĐURAĐ
+JOKIĆ BOŽIDAR
+JOKIĆ BORISLAV
+JOKIĆ BRANISLAV
+JOKIĆ BUDIMIR
+JOKIĆ CVIJETIN
+JOKIĆ DANE
+JOKIĆ DOBRILA
+JOKIĆ DRAGAN
+JOKIĆ DRAGAN
+JOKIĆ DRAGAN
+JOKIĆ DRAGICA
+JOKIĆ DRAGINJA
+JOKIĆ DUŠANKA
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ IGNJAT
+JOKIĆ JELENA
+JOKIĆ JOKA
+JOKIĆ KRSTAN
+JOKIĆ KSENIJA
+JOKIĆ LAKIĆ
+JOKIĆ LAZO
+JOKIĆ LJILJANA
+JOKIĆ LJUBICA
+JOKIĆ LJUBO
+JOKIĆ LUKA
+JOKIĆ MARA
+JOKIĆ MARIJA
+JOKIĆ MARKO
+JOKIĆ MIHAJLO
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILENKO
+JOKIĆ MILEVA
+JOKIĆ MILIJA
+JOKIĆ MILISAV
+JOKIĆ MILORAD
+JOKIĆ MILOVAN
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIROSLAV
+JOKIĆ NADA
+JOKIĆ NADA
+JOKIĆ NADICA
+JOKIĆ NENAD
+JOKIĆ NIKOLA
+JOKIĆ NIKOLA
+JOKIĆ PETAR
+JOKIĆ RADIVOJE
+JOKIĆ RADOICA
+JOKIĆ RISTA
+JOKIĆ SAŠA
+JOKIĆ SIMA
+JOKIĆ SINIŠA
+JOKIĆ SLAVKO
+JOKIĆ SLAVKO
+JOKIĆ SLAVKO
+JOKIĆ SNEŽANA
+JOKIĆ STEVAN DIPL ING
+JOKIĆ STEVAN
+JOKIĆ SVETISLAV
+JOKIĆ SVETOZAR
+JOKIĆ SVETOZAR
+JOKIĆ TOMISLAV
+JOKIĆ VELJKO
+JOKIĆ VERA
+JOKIĆ VLADO
+JOKIĆ VOJISLAV
+JOKIĆ VOJISLAV
+JOKIĆ VUJADIN
+JOKIĆ VUKADIN
+JOKIĆ VUKO
+JOKIĆ ZLATA
+JOKIĆ ZORKA
+JOKMANOVIĆ SAVETA
+JOKOVIĆ ŽIVKO
+JOKOVIĆ ĐURĐINA
+JOKOVIĆ DOBRIVOJE
+JOKOVIĆ-MIKIĆ MIRJANA
+JOKOVIĆ MILKA
+JOKOVIĆ RADOSAV
+JOKOVIĆ VOJISLAV
+JOKSIĆ DRAGIŠA
+JOKSIĆ GOJKO
+JOKSIMOVĆ NEBOJŠA
+JOKSIMOVIĆ ŽARKO
+JOKSIMOVIĆ DARKO
+JOKSIMOVIĆ DUŠKO
+JOKSIMOVIĆ GOLUBANKA
+JOKSIMOVIĆ JOVAN DIPL ING
+JOKSIMOVIĆ LJUBICA
+JOKSIMOVIĆ LJUBISAV DR
+JOKSIMOVIĆ LJUBISAV
+JOKSIMOVIĆ MOMČILO
+JOKSIMOVIĆ NADA
+JOKSIMOVIĆ PAVLE
+JOKSIMOVIĆ PETAR
+JOKSIMOVIĆ RADOMIR
+JOKSIMOVIĆ SINIŠA
+JOKSIMOVIĆ STEVAN
+JOKSIMOVIĆ VLADIMIR
+JOKSIMOVIĆ ZLATOMIR
+JOKSIMOVIĆ ZORAN
+JOKSOVIĆ DRAGIŠA
+JOKSOVIĆ SNEŽANA
+JOLDIĆ MARA
+JOLDIĆ MIODRAG
+JOLIĆ ŽIVAN
+JOLIĆ ŽIVOJIN
+JOLIĆ ANGELINA
+JOLIĆ DANILO
+JOLIĆ JADRANKA
+JOLIĆ JOVAN
+JOLIĆ KONSTANTIN
+JOLIĆ KOSTA
+JOLIĆ MIRJANA
+JOLIĆ NEBOJŠA
+JOLIĆ PETAR
+JOLIĆ SLOBODAN
+JOLIĆ UROŠ
+JOLIĆ VASA
+JOLOVIĆ MILOVAN
+JONČIĆ MARA
+JONAŠ DUŠAN
+JONAŠ LASLO
+JONAŠ NIKOLA
+JONIĆ BOŠKO
+JONIĆ DRAGAN
+JONJEV MILIVOJ
+JONJEV SLAVOLJUB
+JONJIĆ SAVO
+JONOVIĆ DUŠAN
+JONOVIĆ PETAR
+JONTOVIĆ ALEKSA
+JONTOVIĆ-BIKIĆ MIRJANA
+JONTOVIĆ RUDOLF
+JONUZOVIĆ VLADIMIR
+JORDAČ ANA
+JORDAN ERŽEBET
+JORDANOV KIRIL
+JORDANOVSKI STANOJKO
+JORGANOVIĆ SIMO
+JORGIĆ ŽIVANA
+JORGIĆ DRAGOMIR
+JORGOVANOVIĆ JELISAVETA
+JOROVIĆ BRANKO
+JOROVIĆ RANKO
+JOSEVSKI SIMEON
+JOSIĆ ALEKSANDAR
+JOSIĆ FILIP
+JOSIĆ ILIJA
+JOSIĆ IVAN
+JOSIĆ KOSANA
+JOSIĆ LJUBINKO
+JOSIĆ LJUBINKO
+JOSIĆ LJUBOMIR
+JOSIĆ MILENKO
+JOSIĆ MIRJANA
+JOSIĆ OBRAD
+JOSIĆ OLGA
+JOSIĆ RADINKA
+JOSIĆ SRĐA
+JOSIĆ STEVAN
+JOSIĆ STEVAN
+JOSIFIDIS KOSTA
+JOSIFOVIĆ DIMITRIJE
+JOSIFOVIĆ DRAGIĆ
+JOSIFOVIĆ LJUBICA
+JOSIFOVIĆ OLGA
+JOSIMČEV ZVONIMIR
+JOSIMOV BORISLAV
+JOSIMOV DRAGOSLAV
+JOSIMOV DUŠAN
+JOSIMOV GLIGORIJE
+JOSIMOV JELENA
+JOSIMOV STEVAN
+JOSIMOV VASILIJE
+JOSIMOV VOJO
+JOSIMOVIĆ ŽIVA
+JOSIMOVIĆ BORIVOJ
+JOSIMOVIĆ BORIVOJ
+JOSIMOVIĆ JULIJANA
+JOSIMOVIĆ MARKO
+JOSIMOVIĆ MILICA
+JOSIMOVIĆ NENAD
+JOSIMOVIĆ SINIŠA
+JOSIMOVIĆ STEVAN
+JOSIMOVIĆ STEVAN
+JOSIMOVIĆ STEVKA
+JOSIMOVIĆ TATJANA
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ ZDENKA
+JOSIMOVSKI ALEKSANDAR
+JOSIN DRAGAN
+JOSIN MARIJA
+JOSIN MILE
+JOSIN RADICA
+JOSIN RADOVAN
+JOSIN SLOBODAN
+JOSIPOVIĆ BORISLAV
+JOSIPOVIĆ BORO
+JOSIPOVIĆ DANICA
+JOSIPOVIĆ IVICA
+JOSIPOVIĆ PETAR
+JOSIPOVIĆ SLOBODAN
+JOSIPOVIĆ VLADIMIR
+JOTANOVIĆ DARINKA
+JOTANOVIĆ KORNELIJA
+JOTANOVIĆ LJUBOMIR
+JOTANOVIĆ MILIVOJ
+JOTANOVIĆ NEDELJKO
+JOTANOVIĆ RAJKO
+JOTANOVIĆ STANKO
+JOTANOVIĆ TOMISLAV
+JOTIĆ MIROSLAV
+JOVČIĆ DUŠKO
+JOVČIĆ SLAVKO
+JOVČIĆ VLADAN
+JOVAČEVIĆ DMITAR
+JOVAŠEVIĆ SLOBODAN
+JOVANČEVIĆ BOSILJKA
+JOVANČEVIĆ GOJKO
+JOVANČEVIĆ ILIJA
+JOVANČEVIĆ JELICA
+JOVANČEVIĆ JOVAN
+JOVANČEVIĆ JOVAN
+JOVANČEVIĆ KOVILJKA
+JOVANČEVIĆ STEVAN
+JOVANČEVIĆ-ZEKIĆ NIKOLA
+JOVANČEVIĆ-ZEKIĆ NIKOLA
+JOVANČIĆ DRAGICA
+JOVANČIĆ MELANIJA
+JOVANČIĆ MIODRAG
+JOVANČIĆ MIROSLAV
+JOVANCAI MARIJA
+JOVANDIĆ MANDA
+JOVANDIĆ MILOŠ
+JOVANDIN MILAN
+JOVANIĆ ĐORĐE
+JOVANIĆ ĐURO
+JOVANIĆ BOŠKO
+JOVANIĆ BOŠKO
+JOVANIĆ DOBRICA
+JOVANIĆ DUŠAN DIPL ING
+JOVANIĆ MARIJA
+JOVANIĆ MIRKO
+JOVANIĆ MLADEN
+JOVANIĆ MOMIR
+JOVANIĆ OLIVERA
+JOVANIĆ OLIVERA
+JOVANKIN ALEKSANDAR
+JOVANKOVIĆ RADOSLAV
+JOVANOV ŽARKO
+JOVANOV ŽIVA
+JOVANOV BILJANA
+JOVANOV BOŠKO
+JOVANOV BOJANA
+JOVANOV BORISLAV
+JOVANOV BORISLAV
+JOVANOV BRANISLAV
+JOVANOV DRAGAN
+JOVANOV DRAGICA
+JOVANOV DRAGINJA
+JOVANOV DRAGOLJUB
+JOVANOV DRAGOMIR
+JOVANOV DUŠAN
+JOVANOV DUŠAN
+JOVANOV DUŠICA
+JOVANOV IGNJAT
+JOVANOV ISA
+JOVANOV IVAN
+JOVANOV JAŠA
+JOVANOV JASNA
+JOVANOV JELENA
+JOVANOV JOVAN
+JOVANOV JOVAN
+JOVANOV JOVICA
+JOVANOV LAZAR
+JOVANOV LAZAR
+JOVANOV MELANIJA
+JOVANOV MILAN
+JOVANOV MILAN
+JOVANOV MILAN
+JOVANOV MILIVOJ
+JOVANOV MILOŠ
+JOVANOV MIRJANA
+JOVANOV MLADEN
+JOVANOV MOMČILO
+JOVANOV PETAR
+JOVANOV RADIVOJ
+JOVANOV SAVA
+JOVANOV SPOMENKA
+JOVANOV STEVANKA
+JOVANOV STEVAN
+JOVANOV SVETISLAV
+JOVANOV SVETISLAV
+JOVANOV SVETOZAR
+JOVANOV TODOR
+JOVANOV TOMA
+JOVANOV VIDA
+JOVANOV VLADIMIR
+JOVANOVIĆ ČEDA
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDO
+JOVANOVIĆ ŽIVADIN
+JOVANOVIĆ ŽIVKA
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVORAD
+JOVANOVIĆ ŽIVORAD
+JOVANOVIĆ ŽIVOTA
+JOVANOVIĆ ĐENĐI
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐURĐINA
+JOVANOVIĆ ĐURĐINKA
+JOVANOVIĆ ĐURA
+JOVANOVIĆ ĐURO
+JOVANOVIĆ ALEKSANDAR DR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDRA
+JOVANOVIĆ ALEKSA
+JOVANOVIĆ ANĐA
+JOVANOVIĆ ANĐA
+JOVANOVIĆ ANĐELIJA DR
+JOVANOVIĆ ANĐELKA
+JOVANOVIĆ ANĐELKO
+JOVANOVIĆ ANDRIJA DIPL ING
+JOVANOVIĆ ANDRIJA DIPL OEC
+JOVANOVIĆ ANDRIJA
+JOVANOVIĆ ANDRIJA
+JOVANOVIĆ ANGELINA
+JOVANOVIĆ ANICA
+JOVANOVIĆ ANKICA
+JOVANOVIĆ ARANĐEL
+JOVANOVIĆ ARSA DR
+JOVANOVIĆ ARSA
+JOVANOVIĆ ARSENIJE
+JOVANOVIĆ-ARSIĆ VIOLETA
+JOVANOVIĆ-BANKOVAČKI JOVANKA
+JOVANOVIĆ BLAGOJE
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŽIDAR PROFESOR
+JOVANOVIĆ BOŽIDAR
+JOVANOVIĆ BOŽO
+JOVANOVIĆ BOGDANKA
+JOVANOVIĆ BOGDANKA
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOJANA
+JOVANOVIĆ BORISLAV
+JOVANOVIĆ BORISLAV
+JOVANOVIĆ BORIVOJ DIPL ING
+JOVANOVIĆ BORIVOJ
+JOVANOVIĆ BOSILJKA
+JOVANOVIĆ BRANIBOR
+JOVANOVIĆ BRANIMIR
+JOVANOVIĆ BRANISLAVA
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANKA
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRATISLAV DR
+JOVANOVIĆ BUDIMIR
+JOVANOVIĆ CVETA
+JOVANOVIĆ CVETKO
+JOVANOVIĆ DALIBOR DIPL PRAVNIK
+JOVANOVIĆ DALIBOR
+JOVANOVIĆ DANILO
+JOVANOVIĆ DARINKA
+JOVANOVIĆ DEJAN
+JOVANOVIĆ DEJAN
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DOBRILA
+JOVANOVIĆ DOBRIVOJE
+JOVANOVIĆ DOBROSAV
+JOVANOVIĆ DOBROSAV
+JOVANOVIĆ DRAGANA
+JOVANOVIĆ DRAGANA
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGIŠA
+JOVANOVIĆ DRAGIĆ
+JOVANOVIĆ DRAGIĆ
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGIVOJE
+JOVANOVIĆ DRAGOLJUB OEC
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOSLAV DIPL ING
+JOVANOVIĆ DRAGOSLAV DIPL ING
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGO
+JOVANOVIĆ DRAGUTIN
+JOVANOVIĆ DUŠAN DR PROF
+JOVANOVIĆ DUŠAN DR
+JOVANOVIĆ DUŠAN DR
+JOVANOVIĆ DUŠANKA
+JOVANOVIĆ DUŠANKA
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠKO
+JOVANOVIĆ DUŠKO
+JOVANOVIĆ DUDA
+JOVANOVIĆ ELENA
+JOVANOVIĆ EMICA
+JOVANOVIĆ ESMA
+JOVANOVIĆ EVICA
+JOVANOVIĆ FELICIJA
+JOVANOVIĆ FILIP
+JOVANOVIĆ GEORG
+JOVANOVIĆ GOJKO
+JOVANOVIĆ GOJKO
+JOVANOVIĆ GORAN
+JOVANOVIĆ GORAN
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GROZDA
+JOVANOVIĆ GRUJA
+JOVANOVIĆ GRUJICA
+JOVANOVIĆ HRISTINA
+JOVANOVIĆ ILE
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ IRINA
+JOVANOVIĆ IVAN DR
+JOVANOVIĆ IVANKA DR PROF
+JOVANOVIĆ IVANKA
+JOVANOVIĆ IVAN
+JOVANOVIĆ IVAN
+JOVANOVIĆ JAŠA
+JOVANOVIĆ JADRANKA
+JOVANOVIĆ JASMINKA
+JOVANOVIĆ JELA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELICA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELKA
+JOVANOVIĆ JEVTA
+JOVANOVIĆ JOCA
+JOVANOVIĆ JOVANKA
+JOVANOVIĆ JOVANKA
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JULIJANA
+JOVANOVIĆ JULKA
+JOVANOVIĆ KATARINA
+JOVANOVIĆ KATICA
+JOVANOVIĆ KOSANA
+JOVANOVIĆ KOSTA
+JOVANOVIĆ KOSTA
+JOVANOVIĆ-KOSTIĆ DRAGOSLAVA
+JOVANOVIĆ KOVINKA
+JOVANOVIĆ KSENIJA
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LJILJANA
+JOVANOVIĆ LJUBAN
+JOVANOVIĆ LJUBIŠA
+JOVANOVIĆ LJUBIŠA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBINKA
+JOVANOVIĆ LJUBINKA
+JOVANOVIĆ LJUBIVOJE DR
+JOVANOVIĆ LJUBOMIR MR
+JOVANOVIĆ LJUBOMIR
+JOVANOVIĆ LJUBO
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ MALIŠA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARICA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARKO
+JOVANOVIĆ MARKO
+JOVANOVIĆ MIĆO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIJAT
+JOVANOVIĆ MIJA
+JOVANOVIĆ MILAŠIN
+JOVANOVIĆ MILADIN
+JOVANOVIĆ MILAN ADVOKAT
+JOVANOVIĆ MILAN DIPL ING
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENKO DR
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENTIJE
+JOVANOVIĆ MILEVA
+JOVANOVIĆ MILE
+JOVANOVIĆ MILE
+JOVANOVIĆ MILIĆ
+JOVANOVIĆ MILIĆ
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILIJANA
+JOVANOVIĆ MILISAV
+JOVANOVIĆ MILIVOJE
+JOVANOVIĆ MILIVOJ
+JOVANOVIĆ MILIVOJ
+JOVANOVIĆ MILJANA
+JOVANOVIĆ MILKAN
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILONJA
+JOVANOVIĆ MILORAD DIPL ING
+JOVANOVIĆ MILORAD DR LEKAR
+JOVANOVIĆ MILORAD
+JOVANOVIĆ MILORAD
+JOVANOVIĆ MILOVAN
+JOVANOVIĆ MILOVAN
+JOVANOVIĆ MILUTIN
+JOVANOVIĆ MILUTIN
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIROLJUB
+JOVANOVIĆ MIROSLAVA
+JOVANOVIĆ MIROSLAVA
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MITAR
+JOVANOVIĆ MLAĐA
+JOVANOVIĆ MLADENKA
+JOVANOVIĆ MLADEN
+JOVANOVIĆ MLADEN
+JOVANOVIĆ MOMČILO
+JOVANOVIĆ MOMČILO
+JOVANOVIĆ MOMIR
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NEBOJŠA
+JOVANOVIĆ NEDA
+JOVANOVIĆ NEDELJKA
+JOVANOVIĆ NEMANJA
+JOVANOVIĆ NEMANJA
+JOVANOVIĆ NENAD ADVOKAT
+JOVANOVIĆ NENAD
+JOVANOVIĆ NENAD
+JOVANOVIĆ NENAD
+JOVANOVIĆ NEVENA
+JOVANOVIĆ NEVENKA
+JOVANOVIĆ NEVENKA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NOVAK
+JOVANOVIĆ NOVICA
+JOVANOVIĆ OBRAD
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGICA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PERA
+JOVANOVIĆ PERICA
+JOVANOVIĆ PERICA
+JOVANOVIĆ PERO
+JOVANOVIĆ PERO
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PREDRAG DR
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ RADE
+JOVANOVIĆ RADIŠA
+JOVANOVIĆ RADINKA
+JOVANOVIĆ RADIVOJ
+JOVANOVIĆ RADIVOJ
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADOMIR DR
+JOVANOVIĆ RADOMIR
+JOVANOVIĆ RADONJA
+JOVANOVIĆ RADOSLAVA
+JOVANOVIĆ RADOSLAV
+JOVANOVIĆ RADOSLAV
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RAJKO
+JOVANOVIĆ RANĐEL
+JOVANOVIĆ RANKO
+JOVANOVIĆ RATKA
+JOVANOVIĆ RUŽA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ SAŠA
+JOVANOVIĆ SAVA
+JOVANOVIĆ SAVETA
+JOVANOVIĆ SAVO
+JOVANOVIĆ SAVO
+JOVANOVIĆ SELIMIR
+JOVANOVIĆ SERAFIM
+JOVANOVIĆ SIMA
+JOVANOVIĆ SIMA
+JOVANOVIĆ SIMO
+JOVANOVIĆ SINIŠA
+JOVANOVIĆ SLAVICA
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLOBODAN DR
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SMILJA
+JOVANOVIĆ SMILJA
+JOVANOVIĆ SMILJKA
+JOVANOVIĆ SMILJKA
+JOVANOVIĆ SOFIJA
+JOVANOVIĆ SPIRA
+JOVANOVIĆ SPOMENKA
+JOVANOVIĆ SRĐAN
+JOVANOVIĆ SRBISLAV
+JOVANOVIĆ SRETEN
+JOVANOVIĆ STANIŠA
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANKO
+JOVANOVIĆ STANOJE
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STOJŠA
+JOVANOVIĆ-STOJAN GERTRUDA DR
+JOVANOVIĆ STOJANKA
+JOVANOVIĆ STOJANKA
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ SUZANA
+JOVANOVIĆ SVETLANA
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ TATJANA
+JOVANOVIĆ TEODORA
+JOVANOVIĆ TIHOMIR
+JOVANOVIĆ TIHOMIR
+JOVANOVIĆ TODOR
+JOVANOVIĆ TOMA
+JOVANOVIĆ TOMISLAV
+JOVANOVIĆ TOMISLAV
+JOVANOVIĆ TRAJKO
+JOVANOVIĆ TUGOMIR
+JOVANOVIĆ UROŠ
+JOVANOVIĆ VASA
+JOVANOVIĆ VASA
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILJ
+JOVANOVIĆ VELIČKO
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELINKA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERICA
+JOVANOVIĆ VERICA
+JOVANOVIĆ VEROLJUB
+JOVANOVIĆ VESELIN
+JOVANOVIĆ VESNA
+JOVANOVIĆ VESNA
+JOVANOVIĆ VESNA
+JOVANOVIĆ VIDA
+JOVANOVIĆ VIDOSLAV
+JOVANOVIĆ VILMA
+JOVANOVIĆ VLADA
+JOVANOVIĆ VLADA
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADISLAVA
+JOVANOVIĆ VLAJKO
+JOVANOVIĆ VLASTIMIR
+JOVANOVIĆ VOJISLAV DR PROF
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VUČETA
+JOVANOVIĆ ZAGORKA
+JOVANOVIĆ ZDENKA
+JOVANOVIĆ ZDRAVKO
+JOVANOVIĆ ZDRAVKO
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORA
+JOVANOVIĆ ZORA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORKA
+JOVANOVIĆ ZVONIMIR
+JOVANOVSKA CVETA
+JOVANOVSKA TASKA
+JOVANOVSKI DIMITAR
+JOVANOVSKI DUŠAN
+JOVANOVSKI MILE
+JOVANOVSKI MILE
+JOVANOVSKI MILICA
+JOVANOVSKI NIKOLA
+JOVANOVSKI PETAR
+JOVANOVSKI SIMEONA
+JOVANOVSKI STOJADIN
+JOVER MIHALJ
+JOVETIĆ ANDRIJA
+JOVETIĆ BRANKO
+JOVETIĆ BRANKO
+JOVETIĆ MILICA
+JOVETIĆ STANKO
+JOVETIĆ VESELIN
+JOVIČEVIĆ VLADIMIR DR
+JOVIČIĆ ČEDOMIR
+JOVIČIĆ ŽARKO
+JOVIČIĆ ŽARKO
+JOVIČIĆ ŽELJKO
+JOVIČIĆ ŽIVAN
+JOVIČIĆ ĐORĐE
+JOVIČIĆ ĐORĐE
+JOVIČIĆ ĐURA
+JOVIČIĆ ANKICA
+JOVIČIĆ BOŠKO
+JOVIČIĆ BOGDAN
+JOVIČIĆ BORA
+JOVIČIĆ BRANE
+JOVIČIĆ BRANISLAVA
+JOVIČIĆ BRANKA
+JOVIČIĆ DEJAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGOLJUB
+JOVIČIĆ DUŠAN
+JOVIČIĆ DUŠAN
+JOVIČIĆ DUŠKO
+JOVIČIĆ GEORGIJE
+JOVIČIĆ HELENA
+JOVIČIĆ ILIJA
+JOVIČIĆ ILIJA
+JOVIČIĆ JELISAVETA
+JOVIČIĆ JOVAN
+JOVIČIĆ JOVICA
+JOVIČIĆ KATICA
+JOVIČIĆ LAZAR
+JOVIČIĆ LEPOSAVA
+JOVIČIĆ LJILJANA
+JOVIČIĆ LJILJANA
+JOVIČIĆ LJUBICA
+JOVIČIĆ LJUBICA
+JOVIČIĆ LJUBINKA
+JOVIČIĆ LJUBOMIR
+JOVIČIĆ MAKSIM
+JOVIČIĆ MARA
+JOVIČIĆ MARIJA
+JOVIČIĆ MARIJA
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MILADIN
+JOVIČIĆ MILAN
+JOVIČIĆ MILAN
+JOVIČIĆ MILENKO
+JOVIČIĆ MILENKO
+JOVIČIĆ MILICA
+JOVIČIĆ MILICA
+JOVIČIĆ MILOŠ
+JOVIČIĆ MILOŠ
+JOVIČIĆ MILOMIR
+JOVIČIĆ MILORAD
+JOVIČIĆ MILOVAN
+JOVIČIĆ MIROSLAV
+JOVIČIĆ MLADEN
+JOVIČIĆ OBRAD
+JOVIČIĆ OLGA
+JOVIČIĆ PAJA
+JOVIČIĆ PETAR
+JOVIČIĆ RADA
+JOVIČIĆ RADE
+JOVIČIĆ RADISLAV
+JOVIČIĆ RADIVOJE
+JOVIČIĆ RADOMIR
+JOVIČIĆ RADOVAN
+JOVIČIĆ RATKO
+JOVIČIĆ SAVETA
+JOVIČIĆ SIMO
+JOVIČIĆ SLAVKO
+JOVIČIĆ SLOBODANKA
+JOVIČIĆ SLOBODAN
+JOVIČIĆ SRETEN
+JOVIČIĆ STANKO
+JOVIČIĆ SVETISLAV
+JOVIČIĆ SVETOZAR
+JOVIČIĆ SVETOZAR
+JOVIČIĆ TANASIJE
+JOVIČIĆ TATJANA
+JOVIČIĆ TODOR
+JOVIČIĆ UROŠ
+JOVIČIĆ VASA
+JOVIČIĆ VERICA
+JOVIČIĆ VOJIN
+JOVIČIĆ VOJISLAV
+JOVIČIĆ ZDRAVKO
+JOVIČIĆ ZORAN
+JOVIČIN ALEKSANDAR
+JOVIČIN ANICA
+JOVIČIN KATICA
+JOVIČIN LJUBICA
+JOVIČIN LJUBICA
+JOVIČIN MILOVAN
+JOVIČIN SLAVKO
+JOVIČIN SOFIJA
+JOVIČIN TOŠA
+JOVIŠEVIĆ MILAN
+JOVIŠEVIĆ MIRJANA
+JOVIŠEVIĆ ZDRAVKO
+JOVIŠIĆ ŽARKO
+JOVIŠIĆ ĐURO
+JOVIŠIĆ BORO
+JOVIŠIĆ DUŠAN
+JOVIŠIĆ JOVAN
+JOVIŠIĆ MITAR
+JOVIŠIĆ NIKOLA
+JOVIŠIĆ PAVLE
+JOVIŠIĆ PREDRAG
+JOVIŠIĆ SIMO
+JOVIĆ ČEDOMIR
+JOVIĆ ŽARKO
+JOVIĆ ŽARKO
+JOVIĆ ŽIVOJIN
+JOVIĆ ŽIVORAD
+JOVIĆ ŽIVORAD
+JOVIĆ ĐORĐE
+JOVIĆ ALEKSANDAR
+JOVIĆ ALEKSANDAR
+JOVIĆ ANICA
+JOVIĆ BOŠKO
+JOVIĆ BOBAN
+JOVIĆ BORA
+JOVIĆ BRANKO
+JOVIĆ BRANKO
+JOVIĆ CVETA
+JOVIĆ DAVID
+JOVIĆ DIMITRIJE
+JOVIĆ DRAGANA
+JOVIĆ DRAGOLJUB
+JOVIĆ DRAGOLJUB
+JOVIĆ DUŠAN
+JOVIĆ DUŠAN
+JOVIĆ ERIKA
+JOVIĆ GOJKO
+JOVIĆ GORDANA
+JOVIĆ IVANA
+JOVIĆ IVAN
+JOVIĆ JADRANKA DR
+JOVIĆ JASNA
+JOVIĆ JOCO
+JOVIĆ JOVANKA
+JOVIĆ JOVAN
+JOVIĆ JOVAN
+JOVIĆ JOVO
+JOVIĆ KOSTA
+JOVIĆ KSENIJA
+JOVIĆ LJUBIŠA
+JOVIĆ MARICA
+JOVIĆ MARIJAN
+JOVIĆ MARKO
+JOVIĆ MELITA
+JOVIĆ MILADIN
+JOVIĆ MILANKA
+JOVIĆ MILANKA
+JOVIĆ MILAN
+JOVIĆ MILAN
+JOVIĆ MILAN
+JOVIĆ MILENKO
+JOVIĆ MILIVOJE
+JOVIĆ MILOJICA
+JOVIĆ MILUTIN
+JOVIĆ MILUTIN
+JOVIĆ MIRA
+JOVIĆ MIRJANA
+JOVIĆ MIRJANA
+JOVIĆ MIROSLAVA
+JOVIĆ MIROSLAV
+JOVIĆ MITAR
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ PAJICA
+JOVIĆ PERSIDA
+JOVIĆ PETAR
+JOVIĆ PETAR
+JOVIĆ RADE
+JOVIĆ RADIVOJE
+JOVIĆ RADIVOJE
+JOVIĆ RADOVAN
+JOVIĆ RAJKO
+JOVIĆ SAVO
+JOVIĆ SLAVKO
+JOVIĆ SLOBODAN
+JOVIĆ SPASENIJA
+JOVIĆ STANA
+JOVIĆ STANIŠA
+JOVIĆ STANKO
+JOVIĆ STANKO
+JOVIĆ STANKO
+JOVIĆ STEVAN
+JOVIĆ SVETISLAV
+JOVIĆ VASA
+JOVIĆ VELIMIR
+JOVIĆ VELIZAR
+JOVIĆ VELJKO
+JOVIĆ VERA
+JOVIĆ VERA
+JOVIĆ VERA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADIMIR
+JOVIĆ VLADISLAV
+JOVIĆ VOJISLAV
+JOVIĆ VUKOSAVA
+JOVIĆ ZDRAVKO
+JOVIĆ ZVONIMIR
+JOVIĆEVIĆ BOŽIDAR
+JOVIĆEVIĆ MILA
+JOVIĆEVIĆ MILUTIN
+JOVIĆEVIĆ NENAD
+JOVIĆEVIĆ STANKO DIPL ING
+JOVIĆEVIĆ VIDOSAVA
+JOVIĆEVIĆ ZORAN
+JOVIN ŽIVA
+JOVIN ANĐELKA
+JOVIN BORIVOJ
+JOVIN BRANKO
+JOVIN DRAGAN
+JOVIN DRAGOMIR
+JOVIN DUŠAN
+JOVIN DUŠAN
+JOVIN IVAN
+JOVIN JELENA
+JOVIN LJUBICA
+JOVIN MILAN
+JOVIN MILIVOJ DR
+JOVIN MILOŠ
+JOVIN MIRJANA
+JOVIN RADOSLAV
+JOVIN RADOVAN
+JOVIN SIMA
+JOVIN SLAVKO DR
+JOVIN SVETLANA
+JOVIN VESNA
+JOVIN ZLATOJE
+JOVIN ZUSKA
+JOVINOV BOGDAN
+JOVKOVIĆ MIODRAG
+JOVKOVIĆ RATOMIR
+JOVOVIĆ ŽELJKO
+JOVOVIĆ ANKA
+JOVOVIĆ BOŽIDAR
+JOVOVIĆ BRANISLAV
+JOVOVIĆ JOVAN
+JOVOVIĆ JOVAN
+JOVOVIĆ LJILJANA
+JOVOVIĆ MILORAD
+JOVOVIĆ MILOVAN
+JOVOVIĆ NIKOLA
+JOVOVIĆ NIKOLA
+JOVOVIĆ RADE
+JOVOVIĆ RADOMIR
+JOVOVIĆ RAJKO
+JOVOVIĆ STANA
+JOVOVIĆ STOJAN
+JOZANOV DANICA
+JOZANOV MILAN
+JOZANOV SLOBODAN
+JOZANOV ZORAN
+JOZEFČAK IVAN
+JOZIĆ JOZA
+JOZIĆ KATARINA
+JOZIĆ MIODRAG
+JOZIĆ MIRKO
+JOZIĆ PEJO
+JUŠIĆ NATALIJA
+JUŠKOVIĆ BRANISLAV
+JUANIN ŽIVOJIN DIPL ING
+JUANIN JOVAN
+JUGIN MILENA
+JUGOVIĆ ĐURAĐ
+JUGOVIĆ LEPOSAVA
+JUGOVIĆ MILE
+JUGOVIĆ MILOŠ
+JUGOVIĆ VESELIN
+JUGOVIĆ ZDRAVKO
+JUHAS ĐERĐ
+JUHAS ANDRAŠ
+JUHAS ANDRAŠ
+JUHAS ANTAL
+JUHAS DEZE
+JUHAS ERNE
+JUHAS EVA
+JUHAS FERENC
+JUHAS FERENC
+JUHAS GEZA DR PROFESOR
+JUHAS GIZELA
+JUHAS IVANKA
+JUHAS JANOŠ
+JUHAS JANOŠ
+JUHAS JELISAVETA
+JUHAS KATARINA
+JUHAS-KOSTIĆ ĐERĐI
+JUHAS LADISLAV
+JUHAS MARIJA
+JUHAS MIHALJ
+JUHAS MIHALJ
+JUHAS MIJO
+JUHAS MIRON
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS TIBOR DIPL ING
+JUHAS TIBOR
+JUHAS VALERIJA
+JUHAS VIKTORIJA
+JUHAS VLADISLAV
+JUKIĆ BANE
+JUKIĆ FRANJA
+JUKIĆ FRANJO
+JUKIĆ IVICA
+JUKIĆ JOSIP
+JUKIĆ LUKA
+JUKIĆ MARKO
+JUKIĆ NADA
+JUKIĆ VLADISLAV
+JUKOVIĆ RASIM
+JULINAC DRAGINJA
+JUNG ĐERĐ
+JUNG FRANCIŠKA
+JUNG IBOLJKA
+JUNG ILDIKO
+JUNG IVICA
+JUNG JOSIP
+JUNG JOVAN
+JUNG KAROLJ MR
+JUNG MARIJA
+JUNG ROBERT
+JUNG ROBERT
+JUNG VERICA
+JUNUZOVIĆ ISMET
+JUPEK ZDENKA
+JURČEVIĆ MARKO
+JURČIĆ ŽELJKO
+JURČIĆ DESANKA
+JURŠIĆ CVETA
+JURAGA MARKO
+JURAGA MILORAD
+JURAKIĆ GORAN
+JURAKIĆ ILIJA
+JURAKIĆ IVAN
+JURAKIĆ JELA
+JURAKIĆ JOZO
+JURAKIĆ PEJO
+JURAKIĆ STIPO
+JURANJI MARIJA
+JURAS ANICA
+JURAS ANTE
+JURASOVIĆ JOVAN
+JURCA ŽELJKO
+JURCA ĐORĐE
+JURCA IVAN
+JURCA LARISA
+JUREŠEV PETAR
+JUREŠIĆ JOZO
+JUREŠIĆ VERA
+JURIŠEVIĆ ANKA
+JURIŠEVIĆ MARA
+JURIŠEVIĆ MIRKO
+JURIŠIĆ ĐORĐE
+JURIŠIĆ ĐURA
+JURIŠIĆ ALOJZ
+JURIŠIĆ ANDRIJA
+JURIŠIĆ BOGOLJUB
+JURIŠIĆ DRAGAN
+JURIŠIĆ FRANJA
+JURIŠIĆ GOSPAVA
+JURIŠIĆ IGNJAT
+JURIŠIĆ ILINKA
+JURIŠIĆ IVAN
+JURIŠIĆ JELENA
+JURIŠIĆ JOVAN
+JURIŠIĆ KATARINA
+JURIŠIĆ LJUBICA
+JURIŠIĆ MARIJA
+JURIŠIĆ MILENKO
+JURIŠIĆ MILORAD
+JURIŠIĆ MILORAD
+JURIŠIĆ NEDELJKA
+JURIŠIĆ NENAD
+JURIŠIĆ NIKOLA
+JURIŠIĆ OLGA
+JURIŠIĆ OSTOJA
+JURIŠIĆ PETAR
+JURIŠIĆ PETAR
+JURIŠIĆ RADENKO
+JURIŠIĆ STEVAN
+JURIŠIĆ STEVAN
+JURIŠIĆ VLATKO
+JURIŠIĆ ZORKA
+JURIŠIN ŽARKO
+JURIŠIN ŽIVA
+JURIŠIN BRANISLAV
+JURIŠIN DRAGOLJUB
+JURIŠIN LJILJANA
+JURIŠIN MILINA
+JURIŠIN MILOŠ
+JURIŠIN NATALIJA
+JURIŠIN RASTKO DIPL ING
+JURIŠIN SLAVKO
+JURIŠIN VLADIMIR
+JURIĆ ŽIVADINKA
+JURIĆ ANA
+JURIĆ AVGUST
+JURIĆ BOSILJKO
+JURIĆ CVIJO
+JURIĆ FILIP
+JURIĆ ILIJA
+JURIĆ IVAN
+JURIĆ JELKA
+JURIĆ MARIJA
+JURIĆ MARIJA
+JURIĆ MARKO
+JURIĆ MARKO
+JURIĆ MILOŠ
+JURIĆ PAULINA
+JURIĆ PETAR
+JURIĆ SOFIJA
+JURIBAŠIĆ MARIJA
+JURIBAŠIĆ TOMISLAV
+JURIC IVAN
+JURIC JOSIP
+JURIC STJEPAN
+JURICA ANA
+JURICA DALIBOR
+JURICA JAN
+JURIK ŠANDOR
+JURIK DUŠAN
+JURIK JOSIP
+JURIK JOSIP
+JURIK JOVAN
+JURIK MARIJA
+JURIK MIHAL
+JURIK MILKA
+JURIK PAVLE
+JURIK STEVAN
+JURISTOVSKI GEORG DIPL ING
+JURJANOVIĆ DUŠANKA
+JURJEVIĆ JASMINA
+JURKIĆ ANTUN
+JURKIĆ AUGUSTIN
+JURKIĆ MARKO
+JURKOVIĆ ANA
+JURKOVIĆ BILJANA
+JURKOVIĆ BOŽICA
+JURKOVIĆ DRAGAN
+JURKOVIĆ DUŠAN
+JURKOVIĆ KRISTINA
+JURKOVIĆ PETAR
+JURKOVIĆ PETAR
+JURKOVIĆ ZLATKO
+JURKOVIĆ ZVONKO
+JURKOVSKI STEVAN
+JURLINA ANTUN
+JURLINA MARKO DR
+JURLINA PAVLE
+JURUKOVSKI GOSPAVA
+JURUKOVSKI LEVKO
+JURUKOVSKI MILOVANKA
+JUSTIN CIRIL
+JUSTIN DANICA
+JUSUFI BERZAT
+JUSUFOVIĆ AMIR
+JUVAN FANIKA
+KĆIKU ĐAVID
+KĆIKU RAHIM
+KAČAK ILONA
+KAČAPOR SEFEDIN
+KAČAR ČEDOMIR
+KAČAR ĐURO
+KAČAR BRANISLAV
+KAČAR DUŠANKA
+KAČAR SLAVKO
+KAČAR SLOBODAN
+KAČAR SLOBODAN
+KAČAR TADIJA
+KAČAREVIĆ MILAN
+KAČAVENDA BRANISLAVA
+KAČAVENDA LAZO
+KAČAVENDA MILAN
+KAČAVENDA MILORAD
+KAČAVENDA MILORAD
+KAČAVENDA SLOBODAN
+KAČAVENDA TATJANA
+KAČAVENDA TATJANA
+KAČAVENDA VERA
+KAČMARČIK ŠTEFAN
+KAČMARČIK JELENA
+KAŠA TIBOR
+KAŠAI JELISAVETA
+KAŠANIN MILETA
+KAŠANIN MIRA
+KAŠANIN MIRJANA
+KAŠANIN MIROSLAV
+KAŠIĆ ALEKSANDAR
+KAŠIĆ JOVAN DR
+KAŠIĆ MARIJA
+KAŠIĆ MILIVOJ
+KAŠIĆ MLADEN
+KAŠIĆ REVEKA
+KAŠIĆ VERA
+KAŠIĆ VIKTORIJA
+KAŠIĆ VOJISLAV
+KAŠIK IVAN
+KAŠIKOVIĆ ĐORĐO
+KAŠIKOVIĆ BOŠKO
+KAŠIKOVIĆ GOJKO
+KAŠIKOVIĆ PREDRAG
+KAŠIKOVIĆ SLAVKA
+KAŠIKOVIĆ VLADO
+KAŠLIK IMRE
+KAŠLIK MATIJA
+KAŠOVSKI JANKO
+KAŠOVSKI NIKOLA
+KAĆANSKI ŽARKO
+KAĆANSKI ŽARKO
+KAĆANSKI ŽIVKO
+KAĆANSKI ĐORĐE
+KAĆANSKI BOJANA
+KAĆANSKI BRANISLAV
+KAĆANSKI BRANKO
+KAĆANSKI DUŠANKA
+KAĆANSKI DUŠAN
+KAĆANSKI JELISAVETA
+KAĆANSKI KONSTANTIN
+KAĆANSKI LJUBICA
+KAĆANSKI MILIVOJ
+KAĆANSKI MILIVOJ
+KAĆANSKI MILKA
+KAĆANSKI MILORAD
+KAĆANSKI MILUTIN
+KAĆANSKI MIROSLAVA
+KAĆANSKI MLADEN
+KAĆANSKI PAVLE DR LEKAR
+KAĆANSKI PLATON DR
+KAĆANSKI RADOVAN
+KAĆANSKI SIMA
+KAĆANSKI SLAVKO
+KAĆANSKI SMILJA
+KAĆANSKI SOFIJA
+KAĆANSKI SVETISLAV
+KAĆANSKI TODOR
+KAĆANSKI VELINKA
+KAĆANSKI VERA
+KAĆANSKI VLADIMIR VETERINAR
+KAĆANSKI VLADISLAVA
+KAĆIAK MIHAJLO
+KAĆURIN ŽIVAN
+KAĆURIN KRISTINA
+KAĆURIN MILANA
+KAĆURIN MILAN
+KAĆURIN RADOSLAV
+KAŽIĆ VLADIMIR
+KABA SULEJMAN
+KABIĆ ANA
+KABIĆ BOGDAN
+KABIĆ DANILO
+KABIĆ DRAGICA
+KABIĆ DRAGUTIN
+KABIĆ SLOBODAN
+KABIĆ TIMOŠENKO
+KABILJO DRAGICA
+KABILJO JOSIP
+KABILJO SILVIO
+KABOK ERIKA
+KABOK JOŽEF
+KACAROŠ KOSTAS
+KADAŠ LAJOŠ DIPL ING
+KADAR JULIJANA
+KADIĆ ILIJA
+KADIĆ MARIJAN
+KADIĆ NIKOLA
+KADIĆ RADMILA
+KADIĆ SAVA
+KADIJA VOJISLAV
+KADIVNIK MIODRAG
+KADLEČIK KATICA
+KADRIJA FEVZIJA
+KADRIJA HABILJ
+KADRIJA HASAF
+KADRIJA HURMET
+KADVANJ JANOŠ
+KADVANJ JOVAN
+KADVANJ LADISLAV
+KADVANJ LAJOŠ
+KAHRIMAN PETAR
+KAHRIMAN SNEŽANA
+KAHRIMAN SNEŽANA
+KAHRIMAN SNEŽANA
+KAIĆ IVAN
+KAIĆ KATALIN DR
+KAIĆ PETAR
+KAINOVIĆ GORDANA
+KAITOVIĆ JELA
+KAJČIĆ LJILJANA
+KAJČIĆ MILOVAN
+KAJČIĆ VELIMIR
+KAJEVIĆ ŽARKO
+KAJFEŠ ZVONKO
+KAJGANIĆ ILIJA
+KAJGANIĆ LJUBAN
+KAJGANIĆ MILORAD
+KAJGANIĆ VERONIKA
+KAJIŠ ŽELJKO
+KAJIŠ MILE
+KAJIĆ ŽELJKO
+KAJIĆ NADA
+KAJKARA BOGDAN
+KAJKARA MILENKO
+KAJKARA RADOSLAV
+KAJON ALEKSANDAR
+KAJON ANA
+KAJON LJILJANA
+KAJON MIROSLAV
+KAJON MIROSLAV
+KAJTES ĐURO
+KAJTEZ DRAGAN
+KAJTEZ MIRKO
+KAJTEZ NEDELJKO
+KAJTEZ ROZALIJA
+KAJTEZ TRIVUN
+KAJTEZ VALENTINA
+KAJZER KARLO
+KAKAŠ DAMIR
+KAKAŠ ILIJA
+KAKAŠ JOŽEF
+KAKAŠ JOSIP
+KAKAŠ MARIJA
+KAKONJI ANA
+KAKUČKA IŠTVAN
+KAKUČKA JELISAVETA
+KAKUČKA STEVAN
+KALČOV MIHALJ
+KALA GEZA
+KALAČAJI SVETISLAV
+KALAČEVIĆ VLADIMIR
+KALABA BOJAN
+KALABA BRANKO
+KALABA DRAGICA
+KALABA LJUPKO
+KALABA LUKA
+KALABA MARKO
+KALABA MLADEN
+KALABA NIKOLA
+KALABA STEVAN
+KALABIĆ DANE
+KALABIĆ STEVO
+KALABRIĆ BRANKO
+KALABRIĆ MIHOVIL
+KALAFATIĆ MILIVOJ
+KALAFATIĆ NEBOJŠA
+KALAI KAROLJ
+KALAJDŽIĆ DARKO
+KALAJDŽIĆ LUKA
+KALAJDŽIĆ MIHAILO
+KALAJDŽIĆ MILAN
+KALAMANDA DRAGAN
+KALAMANDA SLOBODAN
+KALANJ ĐUKA
+KALANJ DRAGIŠA
+KALANJ FEMKA
+KALANJ STEVAN
+KALANJA DUŠANKA
+KALANJA MIROSLAV
+KALANJEV ZORA
+KALANJOŠ ĐURA
+KALANJOŠ ANA
+KALANJOŠ BORISLAV
+KALANJOŠ JANOŠ
+KALANJOŠ MIRJANA
+KALANJOŠ PETAR
+KALANJOŠ PETAR
+KALANJOŠ RUŽA
+KALANJOŠ RUŽA
+KALANJUŠ ĐURA
+KALANJUŠ FRANJA
+KALAPAŠ EVICA
+KALAPAŠEV DINA
+KALAPAŠEV SINIŠA
+KALAPATI ŠARA
+KALAPATI FERENC
+KALAPATI IVAN
+KALAPATI RUDOLF
+KALAPIŠ RUDI
+KALAPIŠ ZOLTAN
+KALAUZ MARINKO
+KALAUZOV MAŠA
+KALC MILENKA
+KALC MILKO
+KALC SLAVOJKA
+KALEA JELENA
+KALEJSKI ZLATOMIR
+KALEM BRANKO
+KALEM IVANKA
+KALEM MIRJANA
+KALEM NEDELJKO
+KALEM SRETEN
+KALEM SRETEN
+KALEMBER BOŠKO
+KALEMBER MIŠA
+KALEMBER MILENA
+KALEMBER MILIVOJ
+KALEMBER MIRJANA
+KALEMBER SOFIJA
+KALEMBER STOJADIN
+KALEMI ŠERIF
+KALENDER KRISTINA
+KALENIĆ ALEKSANDAR DIPL ING
+KALENIĆ ALEKSANDAR
+KALENIĆ VOJISLAV
+KALENJUK MITAR
+KALENTIĆ BOSA
+KALENTIĆ RADOVAN
+KALEZIĆ JELENA
+KALEZIĆ JOVANKA
+KALEZIĆ OLGA
+KALEZIĆ TOMISLAV
+KALIČANIN MOMČILO
+KALIĆ DRAGANA
+KALIĆ JOSIP
+KALIĆ JOVANKA
+KALIĆ MILENA
+KALIĆ MUSTAFA
+KALIĆ OLGA
+KALIĆ RADOVAN
+KALIĆ SOFIJA
+KALIK GROZDA
+KALIN EDUARD
+KALIN MARIJAN
+KALINIĆ DANICA
+KALINIĆ JOVO
+KALINIĆ KRSTO
+KALINIĆ MILADIN
+KALINIĆ MILICA
+KALINIĆ NADA
+KALINSKI DARKO
+KALIVODA RUDOLF
+KALJEVIĆ ALEKSANDAR
+KALJEVIĆ KRSTO
+KALJEVIĆ STEVAN
+KALKAN MILAN
+KALMAN KLARA
+KALMAN MIHAJLO
+KALMAN MIKLOŠ
+KALMAN RADICA
+KALMAR ĐORĐE
+KALMAR ĐURA
+KALMAR ANA
+KALMAR FERENC
+KALMAR FRANJA
+KALMAR GRGUR
+KALMAR IŠTVAN
+KALMAR LAJOŠ
+KALMAR MIRKO
+KALMAR-VEREŠ GIZELA
+KALMAR VLADIMIR
+KALMAREVIĆ ALEKSANDAR
+KALNOK SLOBODAN
+KALOČAI ŠANDOR
+KALOČAI IŠTVAN
+KALOČAI LENKE
+KALOČAI PETAR
+KALOČAJI ĐORĐE
+KALOČANJ FERENC
+KALOCI IVAN
+KALOCI LADISLAV
+KALOCI TIBOR
+KALOCI VESELINKA
+KALOPER JOVANKA
+KALOPER PERICA
+KALOZI ARANKA
+KALTNEKER EMILIJA
+KALTNEKER EMILIJA
+KALUŠEV GLIŠA
+KALUŠKA SLAVKO
+KALUŽIĆ KATICA
+KALUŽIĆ NADA
+KALUĐEROVIĆ MARKO
+KALUĐEROVIĆ MILIVOJE
+KALUĐEROVIĆ MILOŠ
+KALUĐEROVIĆ MIRIJANA
+KALUĐEROVIĆ MLADEN
+KALUĐEROVIĆ MOMČILO
+KALUĐEROVIĆ OLIVERA
+KALUĐEROVIĆ UROŠ
+KALUĐERSKI ĐOKA
+KALUĐERSKI ĐOKA
+KALUĐERSKI AGNEZA
+KALUĐERSKI BORIS
+KALUĐERSKI GAVRA
+KALUĐERSKI MILORAD
+KALUĐERSKI MIROSLAV
+KALUĐERSKI SINIŠA
+KALUĐERSKI STOJAN DR
+KALUGER NIKOLA
+KALUGER ZORAN
+KAMČESKA DRAGICA
+KAMČESKI DIMČE
+KAMČESKI STEVAN
+KAMČEVIĆ ANA
+KAMČEVSKI SAVA
+KAMARIT ZORAN
+KAMASI FERENC
+KAMASI FERENC
+KAMASI IMRE
+KAMASI JANOŠ
+KAMBERI DUŠAN
+KAMBERI MUSA
+KAMBEROVIĆ BATO
+KAMBEROVIĆ SINIŠA
+KAMENAROVIĆ GLIGORIJE
+KAMENAROVIĆ MILAN
+KAMENAROVIĆ NIKOLA
+KAMENJICKI JULIJAN
+KAMENKO MILAN
+KAMENKO RADE
+KAMENKO RADE
+KAMENKO VERA
+KAMENKOVIĆ ALEKSANDRA
+KAMENKOVIĆ DOBRILA
+KAMENKOVIĆ JOSIP
+KAMENKOVIĆ JOVANKA
+KAMENKOVIĆ OLGA
+KAMENOV EMIL DR
+KAMPEL IVAN
+KAMPIĆ PAVLE
+KAMRA IVAN
+KANČAR ERŽEBET
+KANAČKI ŽARKO
+KANAČKI LJILJANA
+KANAČKI MAGDALENA
+KANAČKI STEVAN
+KANAČKI ZLATA
+KANAZIR ŽIVKA
+KANAZIR ALEKSANDAR
+KANAZIR-BELIĆ MILICA
+KANAZIR BORISLAV
+KANAZIR BORISLAV
+KANAZIR BRANISLAV
+KANAZIR CVETA
+KANAZIR DRAGICA
+KANAZIR DRAGICA
+KANAZIR DUŠAN
+KANAZIR IVANKA
+KANAZIR JOVANKA
+KANAZIR JOVAN
+KANAZIR KOSTA
+KANAZIR KOSTA
+KANAZIR KOSTA
+KANAZIR MARIJA
+KANAZIR MILAN
+KANAZIR MILICA
+KANAZIR MILOVAN
+KANAZIR RADIVOJ
+KANAZIR SLAVKO
+KANAZIR VASA
+KANAZIR VERICA DR
+KANAZIR VUKICA
+KANAZIR ZAHARIJE
+KANBAN MILICA
+KANDIĆ NADA
+KANDIĆ RADMILA
+KANDIĆ SMILJANA
+KANDIĆ VIDOJE
+KANDRAČ ĐORĐE
+KANDRAČ LEONA
+KANGRGA ANKA
+KANGRGA KOSTA
+KANGRGA RUŽA
+KANIŽAI EVA
+KANJA JAN
+KANJERIĆ MATE
+KANJO IŠTVAN
+KANJO STJEPAN
+KANJO ZOLTAN
+KANJUH JAKIM
+KANJUH JOAKIM
+KANJUH MARICA
+KANJUH MIRA
+KANJUH VLADIMIR
+KANJUH ZVONKO
+KANJUKA IVAN
+KANJUKA VLADIMIR
+KANKARAŠ RADOSAV
+KANKARAŠ VESELIN
+KANLIĆ MILAN
+KANLIĆ ZARIJA
+KANOVIĆ PAVLE DIPL ING
+KANTAR ĐURO
+KANTAR DMITAR
+KANTAR KAJA
+KANTAR MILAN
+KANTAR MILOŠ
+KANTAR MIROSLAV
+KANTAR NIKOLA
+KANTAR OSTOJA
+KANTAR VLADO
+KANTARDŽIĆ ĐORĐE
+KANTARDŽIĆ GORDANA
+KANTARDŽIĆ JELENA
+KANTARDŽIĆ KATICA
+KANTARDŽIĆ KOSTA
+KANTARDŽIĆ LAZAR
+KANTARDŽIĆ LAZA
+KANTARDŽIĆ MILICA
+KANTARDŽIĆ MILOVAN
+KANTARDŽIĆ MILOVAN
+KANTARDŽIĆ MIROSLAV
+KANTARDŽIĆ MLADEN
+KANTARDŽIĆ NADA
+KANTARDŽIĆ OLGA
+KANTARDŽIĆ PETAR
+KANTARDŽIĆ STEVAN
+KANTARDŽIĆ VASA
+KANTINKOSKI HANU
+KANTOR LAJOŠ
+KANTOR OSKAR
+KANURIĆ ALEKSANDAR
+KANURIĆ MILICA
+KANURIĆ ZORKA
+KANURSKI JOVAN
+KANURSKI VIDOSAVA
+KAPAMADŽIJA ALEKSANDRA
+KAPAMADŽIJA BORISLAV DR
+KAPAMADŽIJA DUŠANKA
+KAPAMADŽIJA RADMILA
+KAPAMADŽIN JOVAN
+KAPELAN NIKOLA
+KAPES ALEKSANDAR
+KAPES ZDRAVKA
+KAPETANIĆ TOMISLAV
+KAPETANOV MIRJANA
+KAPETANOV SVETISLAV
+KAPETANOV VUKICA
+KAPETANOVIĆ JOVAN
+KAPETANOVIĆ MIDHAT
+KAPETANOVIĆ MOMČILO
+KAPETANOVIĆ OLGA
+KAPETANOVIĆ RATKO
+KAPETANOVIĆ VERICA
+KAPIČIĆ DUŠAN
+KAPIČIĆ SAVO
+KAPIČIĆ STEVAN
+KAPICL DRAGUTIN
+KAPITANJ LASLO
+KAPLAR ŽIVAN
+KAPLAR MARIJA
+KAPLAREVIĆ MIODRAG
+KAPLARSKI KONSTANTIN
+KAPLARSKI MLADEN
+KAPLARSKI SVETLANA
+KAPLIJEV PETAR
+KAPMAJER ALEKSANDAR
+KAPOČ ANTAL
+KAPOČ JUDIT
+KAPOR AGNEŠ
+KAPOR ALEKSANDAR
+KAPOR DESANKA
+KAPOR GOJKO
+KAPOR KATARINA
+KAPOR NADA
+KAPOR NOVICA
+KAPOR STANA
+KAPOSTA TEREZA
+KAPRIŠ MIRJANA
+KAPUĆ ILONA
+KARĆAŠ MILKA
+KARAČ MIRKO
+KARAČONJI IŠTVAN
+KARAĆ DRAGAN
+KARAĆ DUŠAN
+KARAĆ DUŠAN
+KARAĆ ILIJA
+KARAĆ JELICA
+KARAĆ LJUBOMIR
+KARAĆ MARIJA
+KARAĆ MILENKO
+KARAĆ RADENKO
+KARAĆ RAJKO
+KARAĆ SLOBODAN
+KARAĐENOV IVAN
+KARAĐENOV IVAN
+KARAĐENOV MIRJANA
+KARAĐINOVIĆ ŠPIRO
+KARAĐINOVIĆ NENAD
+KARAĐINOVIĆ PETAR
+KARAĐINOVIĆ VELIMIR
+KARAĐINOVIĆ ZORA
+KARABA IRENA DR LEKAR
+KARABA JOVAN
+KARABA OLGA
+KARABAŠ MILIVOJ
+KARABAŠ SLOBODAN
+KARABASIL DRAGAN
+KARABASIL VIDOMIR
+KARABEGOVIĆ DANILO
+KARADŽIĆ ŠUJO
+KARADŽIĆ ŽARKO
+KARADŽIĆ ĐORĐE
+KARADŽIĆ ARSENIJE
+KARADŽIĆ AVRAM
+KARADŽIĆ BOŽO
+KARADŽIĆ BRATISLAV
+KARADŽIĆ JOVAN
+KARADŽIĆ JOVAN
+KARADŽIĆ KSENIJA
+KARADŽIĆ MARIJA
+KARADŽIĆ MILORAD
+KARADŽIĆ MIODRAG
+KARADŽIĆ MIROSLAV
+KARADŽIĆ NENAD
+KARADŽIĆ RELJA
+KARADŽIĆ RUŽA
+KARADŽIĆ SLAVICA
+KARADŽIĆ TVRTKO
+KARADŽIĆ VERA
+KARADŽIĆ VUK
+KARADŽIĆ ZORAN
+KARADŽIĆ ZORAN
+KARADAREVIĆ MILAN
+KARADAREVIĆ MILOŠ
+KARADEGLIĆ KOSA
+KARAGA NIKOLA
+KARAGIĆ-LIPINSKI ILONA
+KARAICA ZORAN
+KARAJKOV ALOJZIJE
+KARAJKOV VLADIMIR
+KARAJKOV VLADIMIR
+KARAJLOVIĆ ĐURO
+KARAJOVIĆ MILUTIN
+KARAKAŠ MIRJANA
+KARAKAŠEVIĆ DESANKA
+KARAKAŠEVIĆ DRAGICA
+KARAKAŠEVIĆ EVICA
+KARAKAŠEVIĆ STEVAN
+KARAKAŠEVIĆ ZORA
+KARAMARKOVIĆ MILA
+KARAMATIĆ ANTE
+KARAN ŽELJKO
+KARAN DRAGAN
+KARAN-KERN BARBARA
+KARAN MILAN
+KARAN MILENKO
+KARAN MILINKO
+KARAN SAVO
+KARAN SRĐO
+KARANJAC DRAGOSLAV
+KARANJAC LJUBICA
+KARANJAC VEROLJUB
+KARANOV ŽIVAN
+KARANOV BUDIMKA
+KARANOV DRAGOLJUB
+KARANOV KUZMAN
+KARANOV MILAN
+KARANOV MILOVAN
+KARANOV MIROSLAV
+KARANOV SOFIJA
+KARANOVIĆ ĐORĐE
+KARANOVIĆ BOŽO
+KARANOVIĆ DRAGAN
+KARANOVIĆ DUŠAN
+KARANOVIĆ DUŠAN
+KARANOVIĆ EMILIJA
+KARANOVIĆ GRETA
+KARANOVIĆ ILIJA
+KARANOVIĆ ILIJA
+KARANOVIĆ ILIJA
+KARANOVIĆ IVICA
+KARANOVIĆ JOVAN
+KARANOVIĆ KATICA
+KARANOVIĆ LJILJANA
+KARANOVIĆ LJUBA
+KARANOVIĆ MILAN
+KARANOVIĆ MILAN
+KARANOVIĆ MILOMIR
+KARANOVIĆ MILUTIN
+KARANOVIĆ MIRJANA
+KARANOVIĆ MIRKO
+KARANOVIĆ NIKOLA
+KARANOVIĆ PERO
+KARANOVIĆ RATKO
+KARANOVIĆ SLAVKO
+KARANOVIĆ SLOBODAN
+KARANOVIĆ STEVAN
+KARANOVIĆ STEVO
+KARANOVIĆ SVETOZAR
+KARANOVIĆ TRIVO
+KARANOVIĆ VESO
+KARANOVIĆ VLADIMIR
+KARAPANŽA MARIJA
+KARAPANDŽA LJILJANA
+KARAPANDŽA VITOMIR
+KARAPANDŽIĆ ĐURA
+KARAPANDŽIĆ GORDANA
+KARAPANDŽIĆ MIRJANA
+KARAPANDŽIN BARBARA
+KARAPANDŽIN ZORKA
+KARAS KAZIMIR
+KARAS MAGDA
+KARAS PETAR
+KARAS PETAR
+KARASALIHOVIĆ SMAIL
+KARASEK KAROLJ
+KARASIJ BORIS
+KARASIJ JASMINA
+KARASIJ VERONIKA
+KARATI EUGEN
+KARATUR JADRANKA
+KARAVLA KATARINA
+KARAVLA ZLATKO
+KARAVLA ZORICA
+KARBAN RUDOLF
+KARDAŠ OBRAD
+KARDAŠ OLGA
+KARDAŠEVIĆ BRANISLAV
+KARDAŠEVIĆ FIJA
+KARDAŠEVIĆ HUSNIJA
+KARDOŠ ALEKSANDAR
+KARDOŠ ERIKA
+KARDOŠ ILONA
+KARDOŠ LAJOŠ
+KARDOŠ PAL
+KARDOŠ VERONIKA
+KARDOV JOSIP
+KARDUM ĐORĐE
+KARGAČIN JELISAVETA
+KARIŠIĆ IVANKA
+KARIŠIK DANE
+KARIŠIK JOVANKA
+KARIŠIK MILUTIN
+KARIĆ BOSILJKA
+KARIĆ JOVANKA
+KARIĆ RADOSLAV
+KARIĆ SAVA
+KARIĆ SAVA
+KARIĆ SVETISLAV
+KARIKO JOSIP
+KARIKO MARIJA
+KARIKO TEREZA
+KARINA DRAGICA
+KARIUS MARIJA
+KARIUS VERA
+KARLAŠ MILORAD
+KARLAVARIS DRAGAN
+KARLAVARIS IVAN
+KARLAVARIS NADA
+KARLAVARIS RADIVOJ
+KARLAVARIS-ZEKOVIĆ MIRELA
+KARLIĆ JEFTA
+KARLIĆ LAZAR
+KARLIĆ MILIVOJ
+KARLO VAJDA
+KARLOVČEC MIRKO
+KARLOVIĆ ĐERĐ
+KARLOVIĆ MARICA
+KAROLIĆ LJUBICA
+KAROLIĆ MIRKO
+KAROLIĆ MIROSLAV
+KAROLJI JANOŠ
+KAROLJI LASLO
+KAROVIĆ GLIŠA
+KARPATI LASLO
+KARPONJA JULIJANA
+KARPONJA SINIŠA
+KARTAG NANDOR
+KARTAI LAJOŠ
+KARTALOVIĆ MILAN
+KARTJE JOVAN
+KARVAK EMA
+KARVAK GEZA
+KASA ĐERĐ
+KASA ANDRIJA
+KASA ANTAL
+KASA FRANJA
+KASA IDA
+KASA IMRE
+KASA JELENA
+KASA MIHALJ
+KASA RUŽA
+KASA RUŽA
+KASA ZORKA
+KASAŠ ALEKSANDAR MR
+KASAŠ ALEKSANDAR
+KASAŠ IMRE
+KASAŠ IMRE
+KASAŠ IMRE
+KASAŠ JANOŠ
+KASAŠ JOŽEF
+KASAŠ JOSIP
+KASAŠ KAROLJ
+KASAŠ KAROLJ
+KASAŠ KAROLJ
+KASAŠ OLGA
+KASAGIĆ BORISLAV
+KASALICA ŽARKO
+KASALICA ŽIVKO
+KASALICA MILAN
+KASALICA STEVANIJA
+KASAP ERVIN
+KASAPOV STEVAN
+KASAPOVIĆ MARA
+KASAPOVIĆ MEHO
+KASAPOVIĆ TIHOMIR
+KASAPSKI ŽARKO
+KASAPSKI JELKA
+KASAR SELIM
+KASIĆ DANICA
+KASNER MIJOLJKA
+KASPER ALEKSANDAR
+KASPER FERENC
+KASPER FRANJA
+KASPER LADISLAV
+KASPER STEVAN
+KASTELI ĐURĐINKA
+KASTELI MARKO
+KASTORI RUDOLF
+KASTRATI FADIL
+KASTRATOVIĆ ALEKSANDAR
+KASTRATOVIĆ BOGDAN
+KASTRATOVIĆ MIHAILO
+KASTRATOVIĆ VLADIMIR
+KASTRATOVIĆ ZORAN
+KASTRATOVIĆ ZORAN
+KATAŠIĆ PETAR
+KATALENIĆ DUŠAN
+KATALINČEV ŽIVAN
+KATANA ANGELINA
+KATANA NIKOLA
+KATANIĆ ANĐELKA
+KATANIĆ JECA
+KATANIĆ KSENIJA
+KATANIĆ LJUBICA
+KATANIĆ MARA
+KATANIĆ RADIVOJ
+KATANIĆ RADOMIR
+KATANIĆ SAVA DR
+KATANSKI MILOŠ
+KATANSKI PAVLE
+KATARINČIĆ CELESTIN
+KATARIVAS ELA
+KATARIVAS-NIKOLIĆ GIZELA
+KATATIĆ ILONA
+KATAVA RUDOLF
+KATAVIĆ DANILKA
+KATAVIĆ MARIJA
+KATAVIĆ RADMILA
+KATIĆ ADA
+KATIĆ ALEKSANDAR DIPL ING
+KATIĆ BOSILJKA
+KATIĆ DARA
+KATIĆ DOBRILA
+KATIĆ GOJKO
+KATIĆ ILIJA
+KATIĆ ILIJA
+KATIĆ IVAN
+KATIĆ JOVAN
+KATIĆ JOVO
+KATIĆ KOSTA
+KATIĆ KRSTA
+KATIĆ KSENIJA
+KATIĆ LJILJANA
+KATIĆ LJUBINKO
+KATIĆ LUKA
+KATIĆ MARGARETA
+KATIĆ MARIJA
+KATIĆ MILAN
+KATIĆ MILAN
+KATIĆ MILORAD
+KATIĆ MILORAD
+KATIĆ MITA
+KATIĆ NIKOLA
+KATIĆ NOVAK
+KATIĆ OTILIJA
+KATIĆ PAVLE DR
+KATIĆ RADIVOJ
+KATIĆ RATKO
+KATIĆ SAVO
+KATIĆ SLOBODAN
+KATIĆ SLOBODAN
+KATIĆ SNEŽANA
+KATIĆ SRETEN
+KATIĆ STANKO
+KATIĆ SVETISLAV
+KATIĆ SVETLANA
+KATIĆ VESELA
+KATIĆ VESNA
+KATIĆ VLADIMIR
+KATIĆ ZLATOMIR
+KATINČIĆ ŽELIMIR DIPL ING
+KATNIĆ SAVETA
+KATONA IMRE
+KATONA JOŽEF
+KATONA LAJOŠ DIPL ING
+KATONA LASLO
+KATONA VINCE
+KAURIĆ NIKOLA
+KAURIN JURE
+KAURIN KRSTO
+KAURIN LAZAR
+KAURIN MOMČILO
+KAURIN NEDELJKO
+KAURIN VASO
+KAURINOVIĆ BOŽIDAR
+KAURINOVIĆ SIMO DIPL ING
+KAUTEN JOHAN
+KAVČIĆ STEVAN
+KAVAJA LUKA
+KAVAJA NIKO
+KAVALIĆ BORISLAV
+KAVEČAN IVAN DR
+KAVEČAN NIKOLA
+KAVGIĆ MIODRAG
+KAVGIĆ NIKOLA
+KAVGIĆ PETAR
+KAVGIĆ PETAR
+KAVGIĆ STEVAN
+KAVRAJA STEVAN
+KAVRAJA SVETOZAR
+KAVRAN ŽELJKO
+KAZAFEROVIĆ REŠAD
+KAZANCEV JOSIPA
+KAZI ERNE
+KAZI JOŽEF
+KAZIJA SMILJKA
+KAZIMIĆ STEVAN
+KAZIMIROVIĆ ANA
+KAZIMIROVIĆ LJUBISAV
+KAZIMIROVIĆ MIRJANA
+KAZIMIROVIĆ NESTOR
+KEČA BOJANA
+KEČA DUŠANKA
+KEČA ILIJA
+KEČA MIKAN
+KEČA MILAN
+KEČA MILAN
+KEČA MILAN
+KEČA MILENKO
+KEČA MILEVA
+KEČA PERO
+KEČA RANKO
+KEČA SLOBODAN
+KEČA VOJIN
+KEČIĆ ŽIVAN
+KEČIĆ MILAN AKADEMSKI SLIKAR
+KEČKEŠ ĐERĐ
+KEČKEŠ FERENC
+KEČKEŠ JOSIP
+KEČKEMETI IŠTVAN
+KEČKI RUŽICA
+KEŠANSKI IVKA
+KEŠANSKI KATICA
+KEŠANSKI RADENKO
+KEŠANSKI RADIVOJ
+KEŠANSKI RUŽICA
+KEŠANSKI SIMO
+KEŠANSKI STANISLAV
+KEŠELJ ČEDOMIR
+KEŠELJ EVA
+KEŠELJ GOJKO
+KEŠELJ JOVAN
+KEŠELJ RADMILA
+KEŠELJ SLOBODAN
+KEŠELJ UGLJEŠA
+KEŠELJ VUKAŠIN
+KEŠKIĆ ZVONIMIR
+KEŠMARKI-KRESTA JELENA
+KEŽIĆ BILJANA
+KEŽIĆ DUŠAN
+KEŽIĆ KATICA
+KEŽIĆ MARJAN
+KEŽIĆ MILAN
+KEŽIĆ NEVENKA
+KEŽIĆ VLADO
+KEBIN ŽARKO
+KECELI MIHALJ
+KECIĆ DANILO DR
+KECIĆ MIROSLAV
+KECIĆ SLOBODAN
+KECMAN ČEDA
+KECMAN ŽARKO
+KECMAN ĐURO
+KECMAN ĐURO
+KECMAN BORISLAV
+KECMAN BRANKO
+KECMAN DRAGICA
+KECMAN DUŠAN
+KECMAN ILIJA
+KECMAN JOVAN
+KECMAN JOVAN
+KECMAN JULKA
+KECMAN LJUBA
+KECMAN MARA
+KECMAN MARKO
+KECMAN MILADIN
+KECMAN MILAN
+KECMAN MILAN
+KECMAN MILKA
+KECMAN MILUTIN
+KECMAN MIRJANA
+KECMAN MIROSLAVA
+KECMAN MLADEN
+KECMAN STEVAN
+KECMAN SVETKO
+KECO ČEDOMIR
+KECO GOJKO
+KECO JELENA
+KECO LJUBOMIR
+KECO MARIJA
+KECO MARIJA
+KECO MIRJANA
+KECO MITAR
+KECO MOMIR
+KECO RADOJE
+KECO RATKO
+KECO SLOBODAN
+KECO SLOBODAN
+KEDŽA MILORAD
+KEDIĆ DUŠAN
+KEDIĆ STANKO
+KEDVEŠ EVA
+KEFER JANOŠ
+KEFER JOSIP
+KEGLOVIĆ VINKO
+KEK ERŽEBET
+KEK EVA
+KEKELJEVIĆ MIODRAG
+KEKENJ GIZELA
+KEKEZ DRAGINJA
+KEKIĆ ĐORĐE
+KEKIĆ ĐURA
+KEKIĆ AGICA
+KEKIĆ DANICA
+KEKIĆ DRAGAN
+KEKIĆ DUŠAN
+KEKIĆ GORDANA
+KEKIĆ KOSOVKA
+KEKIĆ MILAN
+KEKIĆ MILICA
+KEKIĆ MIRKO
+KEKIĆ NATALIJA
+KEKIĆ PETAR
+KEKIĆ SLAVICA
+KEKIĆ TEODOR
+KEKIN MARIJA
+KEKOVIĆ DRAGOLJUB
+KEKOVIĆ MELANIJA
+KEKOVIĆ MIODRAG
+KELBLI MIHAJLO
+KELE JOŽEF
+KELE JOŽEF
+KELEČ MILORAD
+KELEČ MIRKO
+KELEČEVIĆ DANICA
+KELEČEVIĆ NIKICA
+KELEČIĆ IVAN
+KELEČIĆ JOSIP
+KELEMEN ALEKSANDAR DIPL ING
+KELEMEN ALEKSANDAR
+KELEMEN ANA
+KELEMEN GABOR
+KELEMEN IMRE
+KELEMEN JOŽEF
+KELEMEN JOŽEF
+KELEMEN LAJOŠ
+KELEMEN MAĆAŠ
+KELEMEN MARIJA
+KELEMEN TIBOR
+KELER JANOŠ
+KELER JANOŠ
+KELER PETAR
+KELER RADMILA
+KELER STEVAN
+KELEUVA DRAGO
+KELEUVA MIHAJLO
+KELIĆ STEVANKA
+KELIJAŠEVIĆ ŽIVKO
+KELNER MARIJA
+KELOVIĆ MILOMIR
+KEMEC ANDRIJA
+KEMEC MIJO DIPL ING
+KEMENCI BELA
+KEMENJ MIRA
+KEMENJ TEREZIJA DIPL ING
+KEMIVEŠ GEORG
+KENĐEL STEVICA
+KENCEL SMILJA
+KENEŠKI DRAGAN
+KENIG HENDRIH
+KENIG JEKA
+KENIG JELENA
+KENJALO STOJAN
+KEPČIJA ILIJA
+KEPČIJA MILE
+KEPČIJA TODOR
+KEPE-DRAGOSAVLJEVIĆ LIVIJA
+KEPE JULIJANA
+KEPIĆ ŽIVAN
+KERČEV KARLO
+KERČU MIRJANA
+KERČU STANISLAV
+KERŠNER ALEKSANDAR
+KERAC ŽARKO
+KERAC ŽARKO
+KERAC ĐURA
+KERAC BRANISLAV
+KERAC DANICA
+KERAC DUŠAN
+KERAC ERŽEBET
+KERAC GAVRA
+KERAC JOVAN
+KERAC JOVAN
+KERAC LAZAR
+KERAC LAZAR
+KERAC LEPOSAVA
+KERAC MILIVOJ
+KERAC MILOŠ
+KERAC MITA
+KERAC PAVLE
+KERAC PAVLE
+KERAC PERA
+KERAC SIMA
+KERAC SONJA
+KERAC SPASA
+KERAC STANA
+KERAC STANISLAVA
+KERAC STEVAN
+KERAC STEVAN
+KERAC TODOR
+KERAC ZLATKO
+KERANOVIĆ MILAN
+KERANOVIĆ STANA
+KERAVČIN MITA
+KERAVČIN SVETOZAR
+KERAVICA DAVID
+KERAVICA JOVAN
+KERAVICA LJUBOMIR
+KERAVICA MILIVOJ
+KERAVICA MILOŠ
+KERAVICA MILOŠ
+KERAVICA MIODRAG
+KERAVICA MIODRAG
+KERAVICA PETAR
+KERAVICA STEVAN
+KERAVICA SVETISLAV
+KEREČKI BRANKO
+KEREČKI DRAGOMIR
+KEREŠEVIĆ ALEKSANDRA
+KEREŠEVIĆ ILONA
+KEREŠEVIĆ STOJANKA
+KEREŠI JULIJANA
+KEREŠI VINCE
+KEREŽI FERENC
+KEREC IVAN
+KEREDŽIN MILAN
+KEREDŽIN MIRJANA
+KEREDŽIN SOFIJA
+KEREKEŠ IŠTVAN DIPL ING
+KEREKEŠ-MALONKA ETELKA
+KERENEC LJILJANA
+KERENJI ALEKSANDAR
+KERESTEŠ JENE
+KERESTEŠ LJUBICA
+KERESTEŠ MARGITA
+KEREZOVIĆ MIHAJLO
+KEREZOVIĆ NEĐO
+KERI DENEŠ
+KERI FRANJO
+KERI JOVAN
+KERIĆ SAVA
+KERKEZ DRAGO
+KERKEZ DUŠANKA
+KERKEZ DUŠAN
+KERKEZ DUŠAN
+KERKEZ GOJKO
+KERKEZ ILIJA
+KERKEZ LAZAR
+KERKEZ MILAN
+KERKEZ MILENKO
+KERKEZ MILICA
+KERKEZ MIRJANA
+KERKEZ MIROSLAV
+KERKEZ MLADEN
+KERKEZ NIKOLA
+KERKEZ PAULINA
+KERKEZ PETAR
+KERKEZ SLOBODAN
+KERKEZ SRETEN
+KERKEZ STEVAN
+KERKEZ STEVAN
+KERKEZ VLADA
+KERKEZ VOJIN
+KERLETA NEĐO
+KERMEC ILONKA
+KERMECI TIBOR
+KERMENDI PETAR
+KERN DANIEL
+KERPEL SOFIJA
+KERSNIK JOŽE
+KERSNIK MIŠA
+KERSTING KATARINA
+KERTES ERŽEBET
+KERTES JANOŠ
+KERTES JANOŠ
+KERTES VILMOŠ
+KERVINA ANTON
+KERVINA ARIJANA
+KESEG LAJOŠ
+KESEG LAJOŠ
+KESEGI GEZA
+KESEGI KAROLJ
+KESEGI VOJISLAV
+KESER DRAGIŠA
+KESEROVIĆ KATARINA
+KESIĆ ŽIVKO
+KESIĆ ĐURA
+KESIĆ BOŠKO
+KESIĆ BORISLAV
+KESIĆ GORAN
+KESIĆ JOVAN
+KESIĆ MARINKO
+KESIĆ MILE
+KESIĆ MILICA
+KESIĆ MILKA
+KESIĆ NEVENKA
+KESIĆ SLOBODAN
+KESIĆ STANOJE DIPL PRAVNIK
+KESLER ANDRIJA DR LEKAR
+KESLER ROBERT
+KETELEŠ ROŽIKA
+KETIG TOMISLAV
+KETIG TOMISLAV
+KEVIĆ MILA
+KEVIĆ OLGA
+KEVIĆ RADE
+KEVILJ BRANKO
+KEVREŠAN EMIL
+KEZEŠI DUŠKO
+KEZIĆ DUŠANKA
+KEZIĆ MIRKO
+KEZIJA MILORAD
+KEZMIĆ BILJANA
+KEZUNOVIĆ MILOVAN
+KEZUNOVIĆ PETKO
+KEZUNOVIĆ RAJKO
+KIČI ERNE
+KIČIN EVA
+KIČINA LAZAR
+KIČINJ ELIZABETA
+KIŠ-ČEPEGI GABOR
+KIŠ-ČEPEGI GABOR
+KIŠ-ČEPEGI RUDOLF
+KIŠ-ČEPEGI TEREZA
+KIŠ ŠANDOR
+KIŠ ŠANDOR
+KIŠ ĐERĐ
+KIŠ ĐERĐ
+KIŠ ALEKSANDAR
+KIŠ ANA
+KIŠ ANDRIJA
+KIŠ BELA
+KIŠ BELA
+KIŠ BOLDIŽAR
+KIŠ BRANKO
+KIŠ DUŠANKA
+KIŠ DUŠICA
+KIŠ ERNEST
+KIŠ ERNE
+KIŠ ESTER
+KIŠ EVA
+KIŠ FERENC
+KIŠ FERENC
+KIŠ FERENC
+KIŠ FRANJO
+KIŠ GEZA
+KIŠ GEZA
+KIŠ GIZELA
+KIŠ HELENA
+KIŠ HENRIJETA
+KIŠ IŠTVAN
+KIŠ IŠTVAN
+KIŠ IŠTVAN
+KIŠ ILONA
+KIŠ ILONKA
+KIŠ IRENA
+KIŠ ISIDOR
+KIŠ IVAN
+KIŠ IVAN
+KIŠ JANKO
+KIŠ JANOŠ
+KIŠ JOŽEF
+KIŠ JOCA
+KIŠ JOSIP
+KIŠ JOSIP
+KIŠ-JOVAK FRANJA
+KIŠ JOZEFINA
+KIŠ JULIJAN
+KIŠ KALMAN
+KIŠ KATALIN
+KIŠ KATICA
+KIŠ KATICA
+KIŠ LACIKA
+KIŠ LASLO
+KIŠ LASLO
+KIŠ MARGITA
+KIŠ MARIJA
+KIŠ MARIJA
+KIŠ MIHALJ
+KIŠ MIJA
+KIŠ MILAN
+KIŠ MILICA
+KIŠ MIRKO
+KIŠ NANDOR
+KIŠ NIKOLA
+KIŠ NIKOLA
+KIŠ OTO
+KIŠ OTO
+KIŠ PAVLE
+KIŠ PERA
+KIŠ PETAR
+KIŠ PETAR
+KIŠ PETAR
+KIŠ ROZALIJA
+KIŠ SLAVICA
+KIŠ SLAVICA
+KIŠ SLOBODAN
+KIŠ STANISLAV
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STJEPAN
+KIŠ TIBOR DR
+KIŠ TIBOR
+KIŠ TIBOR
+KIŠ TODOR
+KIŠ VESNA
+KIŠ VIKTORIJA
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VUKOSAVA
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠDOBRANSKI MILIVOJ
+KIŠEGECI JAN DR
+KIŠGECI-DUDAŠ KLARA
+KIŠGECI EMIL
+KIŠGECI IVAN
+KIŠGECI PAVLE
+KIŠGECI STANISLAV
+KIŠGECI STANISLAV
+KIŠGECI STEVAN
+KIŠGECI VLADIMIR
+KIŠJUHAS JAKOV
+KIŠMIŠKA PAL
+KIŠPRDILOV DEJAN
+KIŠPRDILOV ZORAN
+KIĆANOVIĆ BORO
+KIĆANOVIĆ DARINKA
+KIĆANOVIĆ JOKA
+KIĆANOVIĆ MIROSLAV
+KIĆANOVIĆ MITAR
+KIĆANOVIĆ PETAR
+KIĆANOVIĆ RADMILA
+KIĆANOVIĆ RAJKO
+KIĆANOVIĆ ZORAN
+KIŽDOBRANSKI ŽARKO
+KIŽDOBRANSKI LJUBICA
+KIŽDOBRANSKI MILAN
+KIŽDOBRANSKI MILAN
+KIŽDOBRANSKI MILIVOJ
+KIŽDOBRANSKI SAVA
+KIŽEVSKI DIMKO
+KIŽEVSKI MIRA
+KIŽEVSKI VOJISLAV
+KICOŠEV BRANKO
+KICOŠEV LJILJANA
+KICOŠEV MITA
+KICOŠEV SAŠA
+KICOŠEV STOJAN
+KICOŠEVIĆ TRIVA
+KICOŠEVIĆ VLAJKO
+KIJAČKI BRANISLAV
+KIJANOVIĆ MANOJLE
+KIJANOVIĆ STANKO
+KIKANOVIĆ DIMITRIJE
+KIKANOVIĆ DOBRILA
+KIKANOVIĆ MILENIJA
+KIKIĆ-ŠOVLJANSKI LJILJANA
+KIKIĆ MIRKO
+KIKIĆ SMILJA DR
+KIKINĐANIN MIROSLAVA
+KIKINDAI VERA
+KIKOŠ GORDAN
+KIKOŠ JOVAN
+KIKOŠ LAZAR
+KIKOŠ SRBISLAV
+KIKOVIĆ SLAVICA
+KILIĆ NIKOLA
+KILIBARDA MILORAD
+KILIBARDA MITAR
+KILIBARDA PAVLE
+KILIBARDA VLADIMIR
+KILIBARDA VOJISLAV
+KIMPANOV BRANISLAV
+KIMPANOV NATALIJA
+KIMPANOV SLOBODAN
+KIMPANOV SLOBODAN
+KIMPANOV SOFIJA
+KINČEŠ MIHALJ
+KINĐIN SVETOZAR
+KINĐIN VASA
+KINDERNAJ ILIJA
+KINDERNAJ MILAN
+KINDERNAJ OTO
+KINDERNOJ PAVLE
+KINIK JAN
+KINIK PAVLE
+KINJERAN SVETISLAV
+KINKA RITA
+KIPEROVIĆ JOVO
+KIPIĆ ĐULA
+KIPIĆ ANDRIJA
+KIPIĆ ANKA
+KIPIĆ EDITA
+KIPIĆ ERŽEBET
+KIPIĆ ERNE
+KIPIĆ FERENC
+KIPIĆ FRANJA
+KIPIĆ IŠTVAN
+KIPIĆ JOSIP
+KIPIĆ LASLO
+KIPIĆ NANDOR
+KIRČAN EMIL
+KIRŠ JOŽEF
+KIRŠ MILORAD
+KIRŠEK JURAJ
+KIRĆAN SAVA
+KIRĆANSKI BRANKO
+KIRĆANSKI DUŠKO
+KIRĆANSKI IVAN
+KIRĆANSKI MILICA
+KIRĆANSKI OBRAD
+KIRĆANSKI RADIVOJ
+KIRĆANSKI RADOSLAVA
+KIRDA VLADIMIR
+KIRIĆ FRANJO
+KIRIĆ MENKA
+KIRIĆ SLOBODAN
+KIRIĆ STANISLAV
+KIRIDŽIĆ DRAGIŠA
+KIRIDŽIĆ MILOŠ
+KIRIDŽIĆ OBRAD
+KIRILOV ALEKSANDAR
+KIRILOVIĆ ALEKSANDAR
+KIRILOVIĆ DOBRINKA
+KIRILOVIĆ JELENA
+KIRILOVIĆ KRISTA
+KIRILOVIĆ KRISTINA
+KIRILOVIĆ OLGA
+KIRIN ŽELJKO
+KIRIN IVICA
+KIRIN SNEŽANA
+KIRJAKOVIĆ JOVAN
+KIRJAKOVIĆ NIKOLA
+KIRKOV DIMITAR
+KIRKOV VERICA
+KIRN VLADIMIR
+KIROVAKOV VALERIJA
+KIRTIĆ DUŠAN
+KISAČANIN DESANKA
+KISAČANIN DUŠAN
+KISAČANIN MIODRAG DIPL ING
+KISAČANIN MIROSLAV
+KISAČANIN PAVLE
+KISAČANIN SVETOZAR
+KISELIČKI ŽIVKO SUDIJA
+KISELIČKI DANICA
+KISELIČKI FEDOR DR
+KISELIČKI LAZAR DIPL ING
+KISELICA ŽARKO
+KISELICA NADA
+KISELICA PETAR
+KISELICA PETAR
+KISIĆ DUŠAN
+KISIĆ JOVAN
+KISIĆ MIRKO
+KISIĆ SRĐAN
+KISIĆ SVETOZAR
+KISIN ANĐA
+KISIN MILICA
+KISIN MILKA
+KISIN TOMO
+KISLIC IRENA
+KISLOVSKI VLADIMIR
+KISO MILORAD
+KISTER VINKO
+KIT VASILJ
+KITANOVIĆ ŽIVKO
+KITANOVIĆ BRANISLAVA
+KITANOVIĆ KATICA
+KITANOVIĆ LENKA
+KITANOVIĆ MIRJANA
+KITANOVIĆ NEDELJKO
+KITANOVIĆ TOMA
+KITANOVSKI DIMČE
+KITIĆ RADOJKA
+KITIĆ SAVO
+KITIĆ STOJKO
+KITIĆ VELIMIR
+KIURSKI STEVAN DIPL OEC
+KIVOVIĆ ANTONIJA
+KIZA BRANKICA
+KIZIĆ DUŠAN
+KIZIĆ LIDIJA
+KIZIĆ MARKO
+KIZIĆ MIHAILO
+KIZIĆ SAVKA
+KIZIĆ SLOBODAN
+KIZIĆ SLOBODAN
+KIZIĆ SNEŽANA
+KIZIĆ TIHOSLAV
+KIZUR ANDRAŠ
+KIZUR IŠTVAN
+KIZUR JANOŠ
+KIZUR LASLO
+KIZUR PAVEL
+KIZUR VERA
+KLAČAR MILKO
+KLAČAR MILOŠ
+KLAŠNJA ŽARKO
+KLAŠNJA BRANKO
+KLAŠNJA JOVAN
+KLAŠNJA MARIJA
+KLAŠNJA MIKA
+KLAŠNJA MILENA
+KLAŠNJA MILE
+KLAŠNJA MILICA
+KLAŠNJA MIROSLAV
+KLAŠNJA VLADISLAV DR LEKAR
+KLAĆ DRAGAN
+KLAĆIK JOŽEF
+KLAĆIK MARIJA
+KLADUŠIĆ MENSURA
+KLAIĆ ANTO
+KLAIĆ PAVO
+KLAJ PETAR
+KLAJIĆ ĐURA
+KLAJIĆ DANILO
+KLAJIĆ LJUBICA
+KLAJIĆ MAGDALENA
+KLAJIĆ OLGA
+KLAJIĆ ROZALIJA
+KLAJIĆ VALERIJA
+KLAJIĆ VIDA
+KLAJN ALBERT
+KLAJN ANA
+KLAJN DRAGUTIN
+KLAJN IVANKA
+KLAJN IVAN
+KLAJN LAJČO DR
+KLAJN MIROSLAV
+KLAJN VERA
+KLAJNER ESTER
+KLAJNER IŠTVAN
+KLAMAR KARLO
+KLAMIK IMRE
+KLAPAREVIĆ GORAN
+KLAPAREVIĆ SAVA
+KLAPAREVIĆ VASILIJE
+KLARIĆ DUŠANKA
+KLARIĆ GORAN
+KLARIĆ LJUBICA
+KLARIĆ MILIĆ
+KLARIĆ MILORAD
+KLARIĆ OLGA
+KLARIĆ SEKA
+KLASAN ANA
+KLASER ALBERT
+KLASIĆ LADISLAV
+KLASIĆ SAŠA
+KLAUS ERŽEBET
+KLAUS ERŽEBET
+KLAUS LASLO
+KLEBEČKO ŠANDOR
+KLEBEČKO ŠANDOR
+KLEM ADAM DR
+KLEM JOŽEF
+KLEM TEREZA
+KLEMENOVIĆ UROŠ
+KLENOCKI MARIJA
+KLENOVŠEK FRANJA
+KLENOVŠEK TEREZIJA
+KLENOVŠEK ZVONIMIR
+KLEPIĆ ĐURAĐ
+KLEPIĆ NIKOLA
+KLET GEZA
+KLEUT MILAN
+KLEUT RUŽA DR LEKAR
+KLEVERNIĆ BORISLAV
+KLIČEK IRENA
+KLIČKOVIĆ DANICA
+KLIČKOVIĆ KOSTA
+KLIČKOVIĆ VERA
+KLIŠANIĆ JOSIP
+KLIŠANIĆ STANISLAV
+KLICOV ILIJA
+KLIKOVAC MIHAJLO
+KLIKOVAC VELIMIR
+KLIMEŠ DRAGANA
+KLIMEŠ ZORA
+KLINAC UROŠ
+KLINAR IVAN
+KLINCOV NADA
+KLINDŽIĆ STJEPAN
+KLINGER KATICA
+KLINKO JAN
+KLINOCKI ĐERĐ
+KLINOVSKI BRANKO
+KLINOVSKI DRAGAN
+KLINOVSKI DRAGAN
+KLINOVSKI DUŠAN
+KLIPA ŽIVAN
+KLIPA ĐORĐE
+KLIPA JELICA
+KLIPA-KRABES GRETA
+KLIPA LAZAR
+KLIPA MIKA
+KLIR ILONA
+KLIR ROZALIJA
+KLISARA ŽIVKO
+KLISARA ĐORĐE
+KLISARIĆ MIRKO
+KLISIĆ NADA
+KLISKA ANĐELIJA
+KLISKA VOJO
+KLISURA MILOŠ
+KLISURA MOMIR
+KLISURA STAKA
+KLISURIĆ ĐURO
+KLIVINJI JOŽEF
+KLJAIĆ LEPOSAVA
+KLJAIĆ MACA
+KLJAIĆ SIMO
+KLJAIN DRAGINJA
+KLJAIN LAZAR
+KLJAJIĆ ĐORĐE PROFESOR
+KLJAJIĆ ĐORĐE
+KLJAJIĆ ĐORĐE
+KLJAJIĆ BORIVOJE
+KLJAJIĆ BORKA
+KLJAJIĆ BRANKO
+KLJAJIĆ BRANKO
+KLJAJIĆ DANILO
+KLJAJIĆ DRAGAN
+KLJAJIĆ DRAGAN
+KLJAJIĆ DUŠANKA
+KLJAJIĆ ILIJA
+KLJAJIĆ ILIJA
+KLJAJIĆ IVAN
+KLJAJIĆ JELENA
+KLJAJIĆ KOVILJKA
+KLJAJIĆ LUKA
+KLJAJIĆ MARA
+KLJAJIĆ MILAN
+KLJAJIĆ MILEVA
+KLJAJIĆ MIODRAG
+KLJAJIĆ NADA
+KLJAJIĆ OLIVERA
+KLJAJIĆ PETAR
+KLJAJIĆ-RADAKOVIĆ MILICA
+KLJAJIĆ SENKA
+KLJAJIĆ VATA
+KLJAJIĆ VLADO
+KLJAJIĆ VUKICA
+KLJAJIĆ ZDRAVKO
+KLJAKIĆ VUKAŠIN
+KLJEČANIN MIRJANA
+KLJUČOVSKI MAHALJINA
+KLJUČOVSKI NIKOLA
+KLJUTIĆ JASMINA
+KLJUTIĆ OSTOJA
+KLOBUŠICKI VLADISLAV
+KLOPFER ĐORĐE
+KLOPKA KLARA DR
+KLOPKA PIROŠKA
+KMEČ MARTIN
+KMEČKO STEVAN
+KMEĆ JAN DR
+KMEZIĆ IVANKA
+KMEZIĆ MILE
+KMEZIĆ VLADA
+KMICIKEVIĆ ZORAN
+KMICIKOVIĆ MILOJKA
+KNEŠAUREK MARIJA
+KNEŽEV ŽARKO DIPL ING
+KNEŽEV ĐORĐE
+KNEŽEV ĐORĐE
+KNEŽEV ĐURA
+KNEŽEV JELICA
+KNEŽEV LJILJANA
+KNEŽEVIĆ ŽARKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽIVKA
+KNEŽEVIĆ ŽIVKO
+KNEŽEVIĆ ŽIVOJIN
+KNEŽEVIĆ ŽIVOJIN
+KNEŽEVIĆ ĐINE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐURA
+KNEŽEVIĆ ĐURA
+KNEŽEVIĆ ĐURO
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDRA
+KNEŽEVIĆ ALEKSA
+KNEŽEVIĆ ANĐELKO
+KNEŽEVIĆ ANICA
+KNEŽEVIĆ ANICA
+KNEŽEVIĆ ARKADIJA
+KNEŽEVIĆ BOŠKO
+KNEŽEVIĆ BOŽO
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BORISLAV
+KNEŽEVIĆ BORIS
+KNEŽEVIĆ BORKA
+KNEŽEVIĆ BOSILJKA
+KNEŽEVIĆ BRANIMIR
+KNEŽEVIĆ BRANKO
+KNEŽEVIĆ BRANKO
+KNEŽEVIĆ CVIJO
+KNEŽEVIĆ DOBRIVOJE
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGIŠA
+KNEŽEVIĆ DRAGICA
+KNEŽEVIĆ DRAGICA
+KNEŽEVIĆ DRAGOLJUB
+KNEŽEVIĆ DRAGOLJUB
+KNEŽEVIĆ DUŠANKA
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ GLIŠA
+KNEŽEVIĆ GORDANA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ IVANKA
+KNEŽEVIĆ IVAN
+KNEŽEVIĆ IVAN
+KNEŽEVIĆ JELA
+KNEŽEVIĆ JELENA
+KNEŽEVIĆ JELENA
+KNEŽEVIĆ JELISAVKA
+KNEŽEVIĆ JOSIP
+KNEŽEVIĆ JOVANKA
+KNEŽEVIĆ JOVANKA
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVO
+KNEŽEVIĆ JUGOSLAV
+KNEŽEVIĆ KRSTAN
+KNEŽEVIĆ LATINKA
+KNEŽEVIĆ LAZAR
+KNEŽEVIĆ LAZAR
+KNEŽEVIĆ LJILJANA
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ MANE
+KNEŽEVIĆ MARICA
+KNEŽEVIĆ MARICA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARKO
+KNEŽEVIĆ MIĆA
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MILADIN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILICA
+KNEŽEVIĆ MILIJANA
+KNEŽEVIĆ MILIVOJ
+KNEŽEVIĆ MILKA
+KNEŽEVIĆ MILOŠ
+KNEŽEVIĆ MILOMIR
+KNEŽEVIĆ MILONJA
+KNEŽEVIĆ MILONJA
+KNEŽEVIĆ MILORAD
+KNEŽEVIĆ MILUTIN
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIRJANA
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIROSLAV
+KNEŽEVIĆ MIROSLAV
+KNEŽEVIĆ MLADEN
+KNEŽEVIĆ MOMČILO
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ NADA
+KNEŽEVIĆ NADEŽDA
+KNEŽEVIĆ NENAD
+KNEŽEVIĆ NEVENA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ PANTA
+KNEŽEVIĆ PAVLE
+KNEŽEVIĆ PERA
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETKO
+KNEŽEVIĆ RADA
+KNEŽEVIĆ RADE
+KNEŽEVIĆ RADIVOJE
+KNEŽEVIĆ RADIVOJE
+KNEŽEVIĆ RADMILA
+KNEŽEVIĆ RADOMIR
+KNEŽEVIĆ RADOSLAV
+KNEŽEVIĆ RAJKO
+KNEŽEVIĆ RANKO
+KNEŽEVIĆ RISTO
+KNEŽEVIĆ ROZA
+KNEŽEVIĆ SAVO
+KNEŽEVIĆ SINIŠA
+KNEŽEVIĆ SLAVKO
+KNEŽEVIĆ SLAVKO
+KNEŽEVIĆ SLAVOLJUB
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SPASENIJA
+KNEŽEVIĆ SRBISLAVA
+KNEŽEVIĆ STANA
+KNEŽEVIĆ STANIŠA
+KNEŽEVIĆ STANIMIR
+KNEŽEVIĆ STANKO
+KNEŽEVIĆ STEVAN
+KNEŽEVIĆ STEVO
+KNEŽEVIĆ STEVO
+KNEŽEVIĆ STIPE
+KNEŽEVIĆ STOJAN
+KNEŽEVIĆ SVETKO
+KNEŽEVIĆ SVETO
+KNEŽEVIĆ TEODOR
+KNEŽEVIĆ TOMISLAV
+KNEŽEVIĆ UROŠ
+KNEŽEVIĆ VASILIJA
+KNEŽEVIĆ VERA
+KNEŽEVIĆ VERA
+KNEŽEVIĆ VLADIMIR
+KNEŽEVIĆ VLADIMIR
+KNEŽEVIĆ VLASTIMIR
+KNEŽEVIĆ VLASTIMIR
+KNEŽEVIĆ VOJIN
+KNEŽEVIĆ VUKOSAV
+KNEŽEVIĆ ZDRAVKO
+KNEŽEVIĆ ZLATAN
+KNEŽEVIĆ ZORAN
+KNEŽEVIĆ ZORAN
+KNEŽEVIĆ ZORA
+KNEŽIĆ OLGA
+KNEŽIĆ RADOMIR
+KNEBL FRANJA
+KNEBL NIKOLA
+KNEGIĆ MIROSLAV
+KNER DEZIDER
+KNESELAC BRANISLAVA
+KNEZ ZLATKO
+KNEZI IVAN
+KNEZI JOŽEF
+KNEZI SLOBODAN
+KNJEŠKO ŽUŽANA
+KNJEŠKO ALBERT
+KOČAR LASLO
+KOČAR STEFANIJA
+KOČAR TIHOMIR
+KOČETOV TATJANA
+KOČI ETELKA
+KOČI IŠTVAN
+KOČI VLADIMIR
+KOČIŠ ĐURA
+KOČIŠ ANDRIJA
+KOČIŠ ANDRIJA
+KOČIŠ ERNEST
+KOČIŠ GERGELJ DIPL ING
+KOČIŠ HELENA
+KOČIŠ IŠTVAN
+KOČIŠ JAKOV
+KOČIŠ JANKO
+KOČIŠ JANOŠ
+KOČIŠ KARLO
+KOČIŠ MARIJA
+KOČIŠ MIHAJLO
+KOČIŠ NIKOLA PROFESOR
+KOČIŠ RADE
+KOČIŠ VLADIMIR
+KOČIŠ VLADIMIR
+KOČIĆ DRAGO
+KOČIĆ MANE
+KOČIĆ MILORAD
+KOČIĆ STANISLAV
+KOČOBA RADISLAV
+KOČOSKI PETAR
+KOČOVIĆ ALEKSANDAR
+KOČOVIĆ MILETA
+KOŠĆAK SAVKA
+KOŠA TIBOR DIPL ING
+KOŠANIN MILOMIR
+KOŠANJI FERENC
+KOŠARIĆ DIMITRIJE
+KOŠIĆ LJUBICA
+KOŠIĆ MITA
+KOŠIĆ STEVAN
+KOŠIĆ STEVO
+KOŠIĆ VASILIJE
+KOŠICKI LEA
+KOŠICKI MARIJA
+KOŠNIČAR MILAN
+KOŠNIČAR SOFIJA
+KOŠOCKI MARIJA
+KOŠUTIĆ ĐURO
+KOŠUTIĆ ĐURO
+KOŠUTIĆ BOŽIDAR
+KOŠUTIĆ BRANKO
+KOŠUTIĆ DIMITRIJE
+KOŠUTIĆ DUŠAN
+KOŠUTIĆ JOVAN
+KOŠUTIĆ KOSTA
+KOŠUTIĆ MANE
+KOŠUTIĆ MILOŠ
+KOŠUTIĆ NIKOLA
+KOĆALO RADOJICA
+KOŽUL GOJKO
+KOŽUL GOJKO
+KOŽUL RAJKO
+KOŽUVARA GAVRA
+KOBAŠ JOSIP
+KOBAŠ KATICA
+KOBAŠ VUKAŠIN
+KOBAL ĐURA
+KOBAL BOŽIDAR
+KOBAL IRIS
+KOBAL IVAN
+KOBILARIĆ ĐURĐICA
+KOBILAROV ANGELINA
+KOBILAROV LJUBOMIR
+KOBILAROV MILANKA
+KOBILAROV MILOŠ
+KOBILAROV MIROSLAV
+KOBILAROV NEGOVAN
+KOBILAROV NESTOR
+KOBILAROV SIMA
+KOBILAROV TOŠA
+KOBILAROV VASA
+KOBILJSKI ĐORĐE
+KOBILJSKI DOBRILA
+KOBILJSKI DRAGOMIR
+KOBILJSKI DUŠAN
+KOBILJSKI LAZAR
+KOBILJSKI MILOŠ
+KOBILJSKI MIRJANA
+KOBILJSKI MLADEN
+KOBILJSKI NIKOLA
+KOBILJSKI STEVAN
+KOBILJSKI VIDA
+KOBILSKI MARIJA
+KOBREHEL LAJOŠ
+KOCAP MARIJA
+KOCAP MIRA
+KOCAP VLADIMIR
+KOCI FERENC
+KOCI REŽE
+KOCIĆ ŽIKICA
+KOCIĆ ALEKSANDAR
+KOCIĆ ANICA
+KOCIĆ DUŠANKA
+KOCIĆ JASNA
+KOCIĆ LJILJANA
+KOCIĆ MILIJANA
+KOCIĆ RADMILA
+KOCIĆ SINIŠA
+KOCIĆ SLAĐANA
+KOCIĆ SLAVKO
+KOCIĆ TOMISLAV
+KOCIĆ VASILIJE
+KOCIĆ VELINKA
+KOCIĆ ZVEZDAN
+KOCIJANČIĆ MIRA
+KOCKAR BORISLAV
+KOCKAR BORISLAV
+KOCKAR LJUBOMIR
+KOCKAR VLADIMIR
+KOCKAREVIĆ BRANISLAV
+KOCKAREVIĆ JOVAN
+KOCKAREVIĆ MILICA
+KOCO ŠANDOR
+KOCO ERŽEBET
+KOCOLJEVAC STANISLAV
+KODŽO SAŠA
+KODŽO ZORAN
+KODIĆ DIMITRIJE
+KODRANOV RADOVAN
+KODRANOV SREDOJE
+KODRIN LJUDMILA
+KOGOJ EDUARD
+KOGOJ EMA
+KOH JOŽEF
+KOH SAVETA
+KOHANEC ŠANDOR
+KOHANEC FRANJA
+KOHANEC GAŠPAR
+KOHANEC JOVAN
+KOHANEC MARIJA
+KOHANEC PAL
+KOHUT ĐURA
+KOHUT STOJA
+KOJČIĆ ANĐELKO
+KOJČIĆ DRAGICA
+KOJČIĆ IVANA
+KOJČIĆ PREDRAG
+KOJČIĆ SREDOJE DR
+KOJČIN DŽEMILJA
+KOJČIN MILEVA
+KOJADINOVIĆ ŽIVKO
+KOJADINOVIĆ BOŠKO
+KOJADINOVIĆ BORO
+KOJADINOVIĆ GORDANA
+KOJADINOVIĆ KATA
+KOJADINOVIĆ MIRA
+KOJADINOVIĆ RADE
+KOJADINOVIĆ STOJAN
+KOJADINOVIĆ VLADIMIR
+KOJDIĆ MIRJANA
+KOJDIĆ MLADEN
+KOJDIĆ PETAR
+KOJIČIĆ NOVKA
+KOJIČIĆ TOMISLAV
+KOJIČIN MILAN
+KOJIĆ ČEDOMIR
+KOJIĆ ŽIVAN
+KOJIĆ ĐURAĐ
+KOJIĆ ALEKSANDAR
+KOJIĆ ALEKSANDAR
+KOJIĆ ALEKSANDAR
+KOJIĆ ARSEN
+KOJIĆ BOŠKO
+KOJIĆ-BOŽANIĆ SOFIJA
+KOJIĆ BORIVOJ
+KOJIĆ BRANISLAV
+KOJIĆ DANICA
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGINJA
+KOJIĆ DUŠAN
+KOJIĆ ERŽEBET
+KOJIĆ GORAN
+KOJIĆ GORAN
+KOJIĆ GORAN
+KOJIĆ HRISTIFOR
+KOJIĆ IVAN
+KOJIĆ IVAN
+KOJIĆ IVAN
+KOJIĆ JOVANKA
+KOJIĆ JOVANKA
+KOJIĆ JOVO
+KOJIĆ LEPOSAVA
+KOJIĆ LJUBICA
+KOJIĆ LJUBODRAG
+KOJIĆ LUKA
+KOJIĆ MIHAILO
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILENA
+KOJIĆ MILENA
+KOJIĆ MILENKO
+KOJIĆ MILENKO
+KOJIĆ MILENKO
+KOJIĆ MILOVINA
+KOJIĆ MIODRAG
+KOJIĆ MIRJANA
+KOJIĆ MOMČILO
+KOJIĆ NEĐO
+KOJIĆ NEBOJŠA
+KOJIĆ NEBOJŠA
+KOJIĆ NEDELJKO
+KOJIĆ OLGICA
+KOJIĆ PETAR
+KOJIĆ RADIVOJ
+KOJIĆ RUŽICA
+KOJIĆ RUŽICA
+KOJIĆ SAVO
+KOJIĆ SIMEON
+KOJIĆ SINIŠA
+KOJIĆ SPASENIJA
+KOJIĆ STEVAN
+KOJIĆ STEVAN
+KOJIĆ STEVAN
+KOJIĆ SVETISLAV
+KOJIĆ UGLJEŠA
+KOJIĆ VASA
+KOJIĆ VELIMIR
+KOJIĆ VINKA
+KOJIĆ VLADISLAV
+KOJOVIĆ ŽARKO
+KOJOVIĆ MILINKO
+KOKAI ŠANDOR
+KOKAI ŠANDOR
+KOKAI ŠANDOR
+KOKAI ALISA
+KOKAI ELENA
+KOKAI FERENC
+KOKAI FERENC
+KOKAI FERENC
+KOKAI LADISLAV
+KOKAI LASLO
+KOKAI MAGDOLNA
+KOKAI MIHAJLO
+KOKAI TIBOR
+KOKAN IVAN
+KOKANOV MILETA
+KOKANOVIĆ DUŠAN
+KOKANOVIĆ KOVILJKA
+KOKAR VERICA
+KOKAR VILMA
+KOKELJ TUGOMIR
+KOKEZA ŽARKO
+KOKEZA DUŠAN
+KOKEZA MILENA
+KOKIĆ JOVAN
+KOKIĆ MIROSLAV
+KOKINOVIĆ SLAVKO
+KOKIR LJUBO
+KOKORUŠ OSTOJA
+KOKOT RADE
+KOKOT SMILJA
+KOKOT SRETA
+KOKOT SVETLANA
+KOKOT VICO
+KOKOTOVIĆ ŽIVKO
+KOKOTOVIĆ BOŽIDAR
+KOKOTOVIĆ GOJKO
+KOKOTOVIĆ ILIJA
+KOKOTOVIĆ IVICA
+KOKOTOVIĆ JELISAVETA
+KOKOTOVIĆ KATICA
+KOKOTOVIĆ PETAR
+KOKOTOVIĆ SNEŽANA
+KOKOTOVIĆ VESELIN
+KOKOVIĆ DRAGAN
+KOKOVIĆ GORAN
+KOLĐERAJ ĐON
+KOLAČARIĆ VELIBOR
+KOLAŠINAC LJUBOMIR
+KOLAK DUŠAN
+KOLAK JELENA
+KOLAK MILAN
+KOLAKOVIĆ ALMAZ
+KOLAKOVIĆ JURE
+KOLAKOVIĆ MILE
+KOLAKOVIĆ ZDRAVKO
+KOLAKUŠIĆ IVICA
+KOLAKVIĆ LJILJANA
+KOLANO ANTON
+KOLANO DRAGOSLAV
+KOLANO IVAN
+KOLANO JULKA
+KOLAR ANA
+KOLAR ANA
+KOLAR ANDRIJA
+KOLAR ANTAL
+KOLAR DARKO
+KOLAR IBOLJKA
+KOLAR IVAN
+KOLAR JOSIP
+KOLAR JOSIP
+KOLAR JULIJANA
+KOLAR LAJOŠ
+KOLAR LASLO
+KOLAR LOZINKA
+KOLAR MATIJA
+KOLAR MILICA
+KOLAR MIRKO
+KOLAR PAVLE
+KOLAR PETAR
+KOLARŠ ŠTEFAN
+KOLAREVIĆ LJUBICA
+KOLARIĆ ALEKSANDRA
+KOLARIĆ BRANKO
+KOLARIĆ BRIGITA
+KOLARIĆ DOBRILA
+KOLARIĆ DRAGICA
+KOLARIĆ DRAGOLJUB
+KOLARIĆ DUŠAN
+KOLARIĆ FILIP
+KOLARIĆ IDA
+KOLARIĆ KOSTA
+KOLARIĆ MARIJA
+KOLARIĆ MARIJA
+KOLARIĆ MILAN
+KOLARIĆ MILAN
+KOLARIĆ MILIVOJ
+KOLARIĆ MLADEN
+KOLARIĆ NADA
+KOLARIĆ NEMANJA
+KOLARIĆ NIKOLA
+KOLARIĆ RADOVAN
+KOLARIĆ SLAVKO
+KOLARIĆ SLOBODAN
+KOLARIĆ SLOBODAN
+KOLARIĆ SNEŽANA
+KOLARIĆ STEVAN
+KOLARIĆ TOMISLAV
+KOLARIĆ VOJA
+KOLARIĆ ZORAN
+KOLARIĆ ZVONKO
+KOLAROV ŽIVA
+KOLAROV ĐORĐE
+KOLAROV ALEKSANDAR
+KOLAROV DIMITRIJE
+KOLAROV DRAGOSLAV
+KOLAROV DRAGOSLAV
+KOLAROV GOJKO
+KOLAROV JOVAN
+KOLAROV JOVAN
+KOLAROV JULKA
+KOLAROV KATE
+KOLAROV LJILJANA
+KOLAROV MARICA
+KOLAROV MILANKA
+KOLAROV MILIVOJ
+KOLAROV MILOŠ
+KOLAROV MOMIR
+KOLAROV NADA DR LEKAR
+KOLAROV NEBOJŠA
+KOLAROV PAVLE
+KOLAROV PETAR
+KOLAROV RADOJKO
+KOLAROV-RADOVANOVIĆ MARINA
+KOLAROV SAVA
+KOLAROV TODOR
+KOLAROV TOMISLAV
+KOLAROV VOJISLAV
+KOLAROVIĆ ŽIVKO
+KOLAROVIĆ JELENA
+KOLAROVIĆ KATICA
+KOLAROVIĆ KOVINKA
+KOLAROVIĆ LUKA DR
+KOLAROVIĆ MIHAJLO
+KOLAROVIĆ MILICA
+KOLAROVIĆ NENAD
+KOLARSKI ĐORĐE
+KOLARSKI ALEKSANDAR
+KOLARSKI ANICA
+KOLARSKI ARPAD
+KOLARSKI BOSILJKA
+KOLARSKI BRANISLAV
+KOLARSKI DANICA
+KOLARSKI DUŠANKA DIPL OEC
+KOLARSKI JOVAN
+KOLARSKI JOVAN
+KOLARSKI KATICA
+KOLARSKI LASLO
+KOLARSKI LAZAR
+KOLARSKI MILADIN
+KOLARSKI MILAN
+KOLARSKI MILENKO VETERINAR
+KOLARSKI MILENKO
+KOLARSKI MILICA
+KOLARSKI MITAR
+KOLARSKI MLADEN
+KOLARSKI MLADEN
+KOLARSKI NADA
+KOLARSKI NIKOLA
+KOLARSKI RADMILA
+KOLARSKI RADOSLAV
+KOLARSKI RADOVAN
+KOLARSKI RADOVAN
+KOLARSKI SLAVICA
+KOLARSKI STEVAN
+KOLARSKI STEVAN
+KOLARSKI TODOR
+KOLARSKI VERA
+KOLARSKI ZDRAVKO
+KOLBAS DANIJEL
+KOLBAS JANKO
+KOLBAS JOAKIM
+KOLBAS MELANIJA
+KOLBAS MILEVA
+KOLBAS VLADA
+KOLDŽIĆ BRANKA
+KOLDŽIĆ BRANKO
+KOLDŽIN MIRKO
+KOLDŽIN VESELIN
+KOLDAN MILENKO
+KOLEŠKA EDUARD
+KOLEDAR ANDRIJA
+KOLEDIN ĐORĐE
+KOLEDIN FOTIJE
+KOLEDIN MILOŠ
+KOLEDIN MIRJANA
+KOLEDIN PETAR
+KOLEDIN RADOSLAV
+KOLEDIN RADOVAN
+KOLEDIN RADOVAN
+KOLEDIN STEVAN
+KOLEDIN VELIMIR
+KOLEDIN VERA
+KOLER ANTAL
+KOLER LAJOŠ
+KOLESAR ĐURA
+KOLESAR ANICA
+KOLESAR FEDOR
+KOLESAR FERENC
+KOLESAR GAVRA
+KOLESAR JANOŠ
+KOLESAR JOVAN
+KOLESAR JOVAN
+KOLESAR JULIJAN
+KOLESAR JULIJAN
+KOLESAR KATICA
+KOLESAR KSENIJA
+KOLESAR MIHAJLO
+KOLESAR PETAR DR
+KOLESAR PETAR
+KOLESAR SIMEON
+KOLESAR VERA
+KOLESAR VLADIMIR
+KOLESAR ZORICA
+KOLESARIĆ VINKO
+KOLEV TODORKA
+KOLIĆ AIŠA
+KOLIN JOŽEF NOVINAR
+KOLJADŽINSKI JOVAN
+KOLJADŽINSKI STEFANIJA
+KOLJAJA BLAGOJE
+KOLJAJA DRAGAN
+KOLJAJA GORAN
+KOLJANIN PETAR
+KOLMAN JOŽEF
+KOLOČAI JOSIP
+KOLOŠNJAI MIRON
+KOLOŠNJAJI JANKO
+KOLOŠNJAJI VLADIMIR
+KOLOPIĆ PETAR
+KOLOPIĆ RUŽICA
+KOLOVIĆ STEVAN
+KOLTIN BRANKO
+KOLUNDŽIĆ ŽIVKA
+KOLUNDŽIĆ ĐURA
+KOLUNDŽIĆ ANKA
+KOLUNDŽIĆ PERICA
+KOLUNDŽIĆ SLAVKO
+KOLUNDŽIĆ SLAVKO
+KOLUNDŽIJA ANĐELKA
+KOLUNDŽIJA BORISLAV
+KOLUNDŽIJA DAVORKA
+KOLUNDŽIJA DRAGAN
+KOLUNDŽIJA LAZAR
+KOLUNDŽIJA LJUBOMIR
+KOLUNDŽIJA MIRKO
+KOLUNDŽIJA NADA
+KOLUNDŽIJA NIKOLA
+KOLUNDŽIJA ZORKA
+KOLUTAC MATIJA
+KOMŠIĆ JOVAN
+KOMŠO NIKOLA
+KOMAD ANA
+KOMAD GOJKO
+KOMAD RATOMIR
+KOMAD TOMISLAV
+KOMADANOVIĆ MOMČILO
+KOMADANOVIĆ MOMIR
+KOMADARIĆ MILOŠ
+KOMADINA MANE
+KOMADINA VELISLAV
+KOMADINA VUJADIN
+KOMADINIĆ MILORAD
+KOMADINOVIĆ DUŠAN
+KOMADINOVIĆ MIRA
+KOMADINOVIĆ RADOSLAV
+KOMAN BOSILJKA
+KOMANOV MARIJA
+KOMAR GOJKO DIPL ING
+KOMAR RADIVOJE
+KOMAR SLAVKA
+KOMAR SLOBODAN
+KOMAR ZORKA
+KOMARČEVIĆ ALEKSANDAR
+KOMARČEVIĆ IŠTVAN
+KOMARČEVIĆ MILENA
+KOMARČEVIĆ MILINKO DR
+KOMARČEVIĆ MIROSLAV
+KOMARČEVIĆ VLADIMIR
+KOMARICA MARKO
+KOMARICA NOVKO
+KOMARICA RADMILA
+KOMAROMI ĐORĐE
+KOMAROMI ANĐELKA
+KOMAROMI BORBALA
+KOMAROMI BORJANKA
+KOMAROMI BORJANKA
+KOMAROMI IRMA
+KOMAROMI KLARA
+KOMAROMI MAGDOLNA
+KOMAROMI MAGDOLNA
+KOMAROMI MARIJA
+KOMAROMI PETAR
+KOMAROMI ZOLTAN
+KOMAROV ALEKSANDAR DIPL ING
+KOMAROV ALEKSANDAR
+KOMAROV BRANKA
+KOMAROV DRAGICA
+KOMAROV DRAGOMIR
+KOMATINA DRAGAN
+KOMATINOVIĆ MIHAJLO
+KOMATOVIĆ MILAN
+KOMATOVIĆ VELIMIR
+KOMAZEC DRAGOMIR
+KOMAZEC PETAR
+KOMBERI AVDUŠ
+KOMBILJ VERA
+KOMENDA ANDRIJA
+KOMINKO LJUBICA
+KOMLENIĆ ĐORĐE
+KOMLENOV ŽIVAN
+KOMLENOV ĐORĐE
+KOMLENOV JOVAN
+KOMLENOVIĆ MARIJA
+KOMLENOVIĆ MILAN
+KOMLENOVIĆ MILE
+KOMLENOVIĆ VELJKO
+KOMLENSKI ŽIVAN
+KOMLENSKI-DELIĆ VUKOSAVA DR
+KOMLENSKI ZORAN
+KOMLJENOVIĆ ALEKSANDRA
+KOMLJENOVIĆ BOŠKO
+KOMLJENOVIĆ MILAN
+KOMLJENOVIĆ MOMIR
+KOMLJENOVIĆ STEVAN
+KOMLJENOVIĆ VLADO
+KOMLUŠAN BOŽA
+KOMLUŠKI IVANA MR
+KOMNENIĆ IVANKA
+KOMNENOV ŠARLOTA
+KOMNENOV MILORAD
+KOMNENOV NIKOLA
+KOMNENOV SANDRA
+KOMNENOV STANISLAV
+KOMNENOV VESELINA
+KOMNENOV VLADIMIR DR
+KOMNENOVIĆ ŽIVAN
+KOMNENOVIĆ BRANKO
+KOMNENOVIĆ DEJAN
+KOMNENOVIĆ JELENA
+KOMNENOVIĆ LJUBOJE
+KOMNENOVIĆ MILAN
+KOMNENOVIĆ RADOSLAV
+KOMNENOVIĆ STANKO
+KOMNENOVIĆ STOJAN
+KOMNENOVIĆ VERICA
+KOMOSAR BRANKO
+KOMOSAR RAJKO
+KOMOZEC ĐORĐE
+KOMOZEC LAZAR
+KON SLOBODANKA
+KON STEVAN
+KON TOMAŽ
+KONČAR ANDRIJA
+KONČAR BOSILJKA
+KONČAR JOVO
+KONČAR LADISLAV
+KONČAR MIRA
+KONČAR MITAR
+KONČAR NIKOLA
+KONČAR NIKOLA
+KONČAR RANKO
+KONČAR SLAVKO
+KONČAR ZORA
+KONČAR ZORA
+KONČAREVIĆ DANICA
+KONČAREVIĆ ILIJA
+KONČEK ROZALIJA
+KONAKOV NEDELJKO
+KONC ŠANDOR
+KONC IŠTVAN
+KONC ILONA
+KONC LJILJANA
+KONC ZORANKA
+KONDAN MARGARETA
+KONDIĆ ANA
+KONDIĆ ANKA
+KONDIĆ BRANKO
+KONDIĆ DRAGAN
+KONDIĆ DRAGICA
+KONDIĆ DRAGOLJUB
+KONDIĆ DUŠANKA
+KONDIĆ JOVAN
+KONDIĆ LJUBICA
+KONDIĆ MILENKO
+KONDIĆ MIRA
+KONDIĆ NEBOJŠA
+KONDIĆ NEMANJA
+KONDIĆ NIKOLA
+KONDIĆ NIKOLA
+KONDIĆ RADMILA
+KONDIĆ RADOJKA
+KONDIĆ RAJKO
+KONDIĆ SANDRA
+KONDIĆ TRIVO
+KONDIĆ ZDRAVKO
+KONDIĆ ZORKA
+KONDOJANI ĐORĐE
+KONDRAK STOJAN
+KONDRATJEV ŠTEFANIJA
+KONEČNI MARIJA
+KONECKI ZLATKO
+KONECKI ZLATKO
+KONEN ROBERT
+KONEN ROBERT
+KONESKA LJILJANA
+KONGO VERA
+KONJATIĆ ŠIMO
+KONJEVIĆ ŽIVA DIPL PRAVNIK
+KONJEVIĆ ANA
+KONJEVIĆ DANILO
+KONJEVIĆ DOBRIVOJ
+KONJEVIĆ DRAGOMIR
+KONJEVIĆ GROZDANA
+KONJEVIĆ IVANKA
+KONJEVIĆ MILEVA
+KONJEVIĆ MILIVOJ
+KONJEVIĆ MLAĐEN
+KONJEVIĆ MLADEN
+KONJEVIĆ NENAD
+KONJEVIĆ PREDRAG
+KONJEVIĆ PREDRAG
+KONJEVIĆ PREDRAG
+KONJEVIĆ STANISLAV
+KONJEVIĆ STANISLAV
+KONJIĆ STOJANKA
+KONJIK NADA
+KONJIK VIDOJE
+KONJOVIĆ BRANISLAV
+KONJOVIĆ JOVAN
+KONJOVIĆ MAKSIM
+KONJOVIĆ MILAN
+KONJOVIĆ MIRJANA
+KONJOVIĆ NIKOLA
+KONJOVIĆ RADOSLAVA
+KONJOVIĆ SMILJA
+KONJOVIĆ SOFIJA
+KONJOVIĆ TINKA
+KONJOVIĆ VERA
+KONKOL MIHAJLO
+KONKOLJ MARIJA
+KONOPEK STANIMIR
+KONRAD FRANJA
+KONRAD MIRČA
+KONRAD PAVLE
+KONSTANTIN BUHA
+KONSTANTINIDIS DIMITRIJE
+KONSTANTINIDIS GEORGIOS
+KONSTANTINIDIS TEODOR
+KONSTANTINIDU SOFIJA
+KONSTANTINOVIĆ ANĐELIJA
+KONSTANTINOVIĆ BLAGOJE
+KONSTANTINOVIĆ HERMINA
+KONSTANTINOVIĆ JELICA
+KONSTANTINOVIĆ JORDAN
+KONSTANTINOVIĆ JOVAN
+KONSTANTINOVIĆ LJILJANA
+KONSTANTINOVIĆ LUKA
+KONSTANTINOVIĆ MIRJANA
+KONSTANTINOVIĆ NIKOLA
+KONSTANTINOVIĆ PETAR
+KONSTANTINOVIĆ VERA
+KONSTANTINOVIĆ ZVONIMIR
+KONTIĆ DOBRIVOJ
+KONTIĆ JOVANKA
+KONTIĆ MILAN
+KONTIĆ SLAVICA
+KONTRIĆ JOVAN
+KOPČANSKI ŽELJKO
+KOPČANSKI IRINA
+KOPČANSKI NIKOLA
+KOPČANSKI PETAR
+KOPČANSKI RADMILA
+KOPČANSKI STEVAN
+KOPČANSKI VLADA
+KOPČOK ANA
+KOPČOK KATICA
+KOPČOK MIŠA
+KOPČOK SANDRA
+KOPANJA DANILO
+KOPANJA DRAGOMIR
+KOPANJA DUŠAN
+KOPANJA DUŠAN
+KOPANJA GOJKO
+KOPANJA GOJKO
+KOPANJA ILIJA
+KOPANJA LJUPKO
+KOPANJA MIĆO
+KOPANJA MIODRAG
+KOPANJA MITAR
+KOPANJA RANISLAV
+KOPANJA ROSA
+KOPANJA VID
+KOPAS JANOŠ
+KOPEREC ALEKSANDAR
+KOPEREC ANDRIJA
+KOPEREC JANOŠ
+KOPEREC JOVAN
+KOPEREC STEVAN
+KOPEREC STEVAN
+KOPESTENSKI KATICA
+KOPESTINSKIJ REGINA
+KOPIĆ ILONA
+KOPICL RUDOLF
+KOPILOVIĆ JOSIP
+KOPILOVIĆ MARGA
+KOPILOVIĆ-MIJATOV DRAGICA
+KOPILOVIĆ PAVLE
+KOPITOVIĆ ŠPIRO
+KOPITOVIĆ PETAR
+KOPLANJI MARIJA
+KOPLANJI MIROSLAVA
+KOPLIĆ ĐORĐE
+KOPLIĆ DANICA
+KOPLIĆ DUŠAN
+KOPLIĆ MILE
+KOPRENOVIĆ RADOJKA
+KOPRIVŠEK ZVONIMIR
+KOPRIVICA ANGELINA
+KOPRIVICA BOŽIDAR
+KOPRIVICA BOŽIDAR
+KOPRIVICA BORISLAV
+KOPRIVICA GORDANA
+KOPRIVICA LJILJANA
+KOPRIVICA MILENKO
+KOPRIVICA MILUTIN
+KOPRIVICA MIODRAG
+KOPRIVICA NOVAK
+KOPRIVICA OBREN
+KOPRIVICA PETAR
+KOPRIVICA SVETOZAR
+KOPRIVICA ZORAN
+KOPUNOVIĆ LJUBICA
+KORČOK JAN
+KORČOK MARIJA
+KORČOK VLADIMIR
+KORAĆ ŽELJKO
+KORAĆ ANĐELIJA
+KORAĆ DUŠAN
+KORAĆ GOJKO
+KORAĆ IGOR
+KORAĆ JULIJANA
+KORAĆ KATICA
+KORAĆ LJUBISAV
+KORAĆ MANE
+KORAĆ MIHAJLO
+KORAĆ MILAN
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILOVAN DR PROF
+KORAĆ MILOVAN
+KORAĆ MILOVAN
+KORAĆ MIODRAG
+KORAĆ PETAR
+KORAĆ PETRA
+KORAĆ RADE
+KORAĆ RADOJKA
+KORAĆ RADOJKA
+KORAĆ RADOSAV
+KORAĆ SLOBODAN
+KORAĆ SNEŽANA
+KORAĆ TATJANA
+KORAĆ VLADO
+KORAJICA ĐURA
+KORAJLIJA ŽARKO
+KORAJLIJA ŽARKO
+KORAJLIJA ŽARKO
+KORAJLIJA DIMITRIJE
+KORAJLIJA MILAN
+KORAKU LUČIJAN
+KORAKU LUCIJAN
+KORBATFINSKI ELVIRA
+KORBATFINSKI VIKTOR DR
+KORBATVINSKI DRAGAN
+KORBATVINSKI-LALOŠEVIĆ ZLATA
+KORBIĆ MLADEN
+KORDA MILOŠ
+KORDA NANDOR
+KORDIĆ ĐURA
+KORDIĆ BOJAN
+KORDIĆ DUŠANKA
+KORDIĆ GOJKO
+KORDIĆ MILAN
+KORENIĆ GABRIEL
+KORENIĆ TEODOR
+KORENJI ĐORĐE
+KORENJI ALEKSANDAR
+KORENJI LASLO
+KORENT LUDVIG
+KORHAMER FERENC
+KORHEC PAVLE
+KORIŠ JULIJANA
+KORIĆANAC IVAN
+KORIĆANAC LJUBINKA
+KORIŽ ARPAD
+KORICA ĐORĐE
+KORICA ĐURO
+KORICA DUŠAN
+KORICA JANKO
+KORICA MILORAD
+KORICA NEDELJKO
+KORICA NIKOLA
+KORICA PETAR
+KORICA SNEŽANA
+KORICA SOFIJA
+KORICA STEVAN
+KORISTOVIĆ MIKSARD
+KORLAT PERICA
+KORLAT PETAR
+KORMANJOŠ ŠANDOR
+KORMANJOŠ ANDRIJA
+KORMANJOŠ BORKA
+KORMANJOŠ FERENC
+KORMANJOŠ KAROLJ
+KORMANJOŠ MIHALJ
+KORMOŠ JANOŠ
+KORMOŠ MARGITA
+KORMOŠ MARGITA
+KORMOŠ MARIJA
+KORMOŠ TEREZA
+KOROŠ RASTISLAV
+KOROŠ VLADA
+KOROŠAN ŠANDOR
+KOROŠEC LEO
+KOROBKO TARAS
+KORODI FRANJA
+KOROKNAI FERENC
+KOROKNAI JANOŠ
+KOROKNAI ZOLTAN
+KOROLIJA DUŠAN DR LEKAR
+KOROLIJA DUŠAN
+KOROLIJA STEVAN DR
+KOROLIJA VERA
+KOROM ERŽEBET
+KOROM TIBOR
+KOROMAN MILORAD
+KOROV ĐORĐE
+KOROVLJEV IVAN
+KOROVLJEV JOVANKA
+KOROVLJEV MARIJA
+KOROVLJEV MILENKO
+KOROVLJEV MILOŠ
+KOROVLJEV RADMILA
+KOROVLJEV VUKICA
+KORPA BELA
+KORPAŠ AMALIJA
+KORPAŠ DANICA
+KORPAŠ DIMITRIJE
+KORPAŠ JANKO
+KORPAŠ MIROSLAV
+KORPAŠ MIROSLAV
+KORPAŠ PERA
+KORPAK DRAGINJA
+KORPAK NADA
+KORPONAI IŠTVAN
+KORPONAI MARIJA
+KORUGA BORA
+KORUGA JULKA
+KORUGA RADOMIR
+KORUNIĆ LIZA
+KOS IDA
+KOS MARIJA
+KOS SLAVKO
+KOS SLAVKO
+KOS STANKO
+KOSAĆ DARINKA
+KOSANIĆ BRANISLAV
+KOSANIĆ IVANKA
+KOSANIĆ SAVA
+KOSANOV ALEKSANDAR
+KOSANOV KATICA
+KOSANOV VLADIMIR
+KOSANOVIĆ ANĐELKA
+KOSANOVIĆ BOGDAN MR
+KOSANOVIĆ BRANKO
+KOSANOVIĆ BRANKO
+KOSANOVIĆ DANE
+KOSANOVIĆ DRAGAN
+KOSANOVIĆ DUŠANKA
+KOSANOVIĆ DUŠAN
+KOSANOVIĆ JELICA
+KOSANOVIĆ JOVAN
+KOSANOVIĆ KOSANA
+KOSANOVIĆ LAZO
+KOSANOVIĆ LJUBICA
+KOSANOVIĆ LJUBOMIR DR
+KOSANOVIĆ-MANDIĆ NENA
+KOSANOVIĆ MANE
+KOSANOVIĆ MARKO
+KOSANOVIĆ MIĆO
+KOSANOVIĆ MILAN
+KOSANOVIĆ MILE
+KOSANOVIĆ MILORAD
+KOSANOVIĆ MIRKO
+KOSANOVIĆ MITAR
+KOSANOVIĆ MLADEN
+KOSANOVIĆ NADA
+KOSANOVIĆ OLGA
+KOSANOVIĆ PETAR
+KOSANOVIĆ RADOVAN
+KOSANOVIĆ SLAVKO
+KOSANOVIĆ STOJAN
+KOSANOVIĆ VELIMIR
+KOSANOVIĆ ZORICA
+KOSARENKO PETAR
+KOSEDNAR STJEPAN
+KOSIĆ ŽARKO
+KOSIĆ ŽARKO
+KOSIĆ ŽIVOJIN
+KOSIĆ BILJANA
+KOSIĆ BOJAN
+KOSIĆ BORKO
+KOSIĆ BRANISLAV
+KOSIĆ GORAN
+KOSIĆ GORDANA
+KOSIĆ IVAN
+KOSIĆ JELICA
+KOSIĆ JOVICA
+KOSIĆ LUKA
+KOSIĆ MARIJA
+KOSIĆ MILOVAN
+KOSIĆ MIRKO DIPL ING
+KOSIĆ NEDELJKO
+KOSIĆ RUŽA
+KOSIĆ SVETOZAR
+KOSIĆ TOMA
+KOSIĆ ZORICA
+KOSINA MILICA
+KOSIROVIĆ MARIJA
+KOSIROVIĆ MILAN
+KOSIROVIĆ PANTELIJA
+KOSJER DUŠAN
+KOSJERINA MILENKO
+KOSKA ATMANA
+KOSKA HATIDŽE
+KOSKA JASMIDIN
+KOSKA LJERKA
+KOSKA MILENA
+KOSKA NADEŽDA
+KOSKA SAFET
+KOSKA SALI
+KOSMAJAC ĐORĐE
+KOSMAJAC ANICA
+KOSO BOSILJKA
+KOSO FRANJO
+KOSO MIHALJ
+KOSO OLIVERA
+KOSO PAL
+KOSORUŠ ĐURA
+KOSORUŠ ETELKA
+KOSORUŠ PETER
+KOSOVAC ČEDA
+KOSOVAC ŽIVKO
+KOSOVAC ALEKSANDAR DR
+KOSOVAC BOJAN
+KOSOVAC BOJAN
+KOSOVAC DARKO
+KOSOVAC DRAGAN
+KOSOVAC DUŠAN
+KOSOVAC GEORGIJE
+KOSOVAC GOJKO
+KOSOVAC JULIJANA
+KOSOVAC MILAN
+KOSOVAC MILAN
+KOSOVAC MIRKO
+KOSOVAC NIKOLA
+KOSOVAC RADIVOJ
+KOSOVAC ZDRAVKO
+KOSOVIĆ ANDRIJA
+KOSOVIĆ ANKICA
+KOSOVIĆ MILORAD
+KOSOVIĆ OLGA PROFESOR
+KOSOVIĆ RADISLAV
+KOSOVIĆ RATKO
+KOSOVIĆ SVETISLAV
+KOSOVRASTI ADŽI
+KOSTADINOSKI BLAGOJE
+KOSTADINOV RISTA
+KOSTADINOVIĆ BRANISLAV
+KOSTADINOVIĆ DRAGOLJUB
+KOSTADINOVIĆ LJILJANA
+KOSTADINOVIĆ TIHOMIR
+KOSTADINOVIĆ VERA
+KOSTADINOVIĆ VERICA
+KOSTADINOVIĆ VUKAN
+KOSTADINOVSKI DIMČE
+KOSTELNIK NESTOR
+KOSTELNIK SILVESTER
+KOSTEVSKI IVAN
+KOSTIĆ-ŠOBOT MILKA
+KOSTIĆ ŽARKO
+KOSTIĆ ŽELJKO
+KOSTIĆ ŽIVOJIN
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐURĐICA
+KOSTIĆ ACA
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDRA
+KOSTIĆ ANA
+KOSTIĆ ANGELINA
+KOSTIĆ ANKICA
+KOSTIĆ BOŽIDAR
+KOSTIĆ BOŽIDAR
+KOSTIĆ BOGOLJUB
+KOSTIĆ BRANIMIR
+KOSTIĆ BRANISLAV
+KOSTIĆ BRANISLAV
+KOSTIĆ BRANKO
+KOSTIĆ DANILO
+KOSTIĆ DEJAN
+KOSTIĆ DESANKA
+KOSTIĆ DRAGAN
+KOSTIĆ DRAGA
+KOSTIĆ DRAGA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGOLJUB
+KOSTIĆ DUŠAN
+KOSTIĆ DUŠAN
+KOSTIĆ DUŠAN
+KOSTIĆ ELEONORA
+KOSTIĆ GEORGINA
+KOSTIĆ GLIŠA
+KOSTIĆ GOLUB
+KOSTIĆ GORDANA
+KOSTIĆ GRADIMIR
+KOSTIĆ IVAN
+KOSTIĆ IVAN
+KOSTIĆ JELENA
+KOSTIĆ JELICA
+KOSTIĆ JELICA
+KOSTIĆ JORDANKA
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ KRSMAN
+KOSTIĆ KRSTA
+KOSTIĆ LJILJANA
+KOSTIĆ LJILJANA
+KOSTIĆ LJUBIŠA
+KOSTIĆ LJUBICA
+KOSTIĆ LJUBICA
+KOSTIĆ LJUBICA
+KOSTIĆ MAKSIM
+KOSTIĆ MARIJA
+KOSTIĆ MARKO
+KOSTIĆ METODIJE
+KOSTIĆ MIHAJLO
+KOSTIĆ MILAN
+KOSTIĆ MILAN
+KOSTIĆ MILENA DR
+KOSTIĆ MILENA
+KOSTIĆ MILEVA
+KOSTIĆ MILICA
+KOSTIĆ MILORAD
+KOSTIĆ MILOVAN
+KOSTIĆ MILUŠA
+KOSTIĆ MIRJANA
+KOSTIĆ MIRKO
+KOSTIĆ MOJSE
+KOSTIĆ NADA
+KOSTIĆ NADA
+KOSTIĆ NIKOLA
+KOSTIĆ NIKOLA
+KOSTIĆ OLIVERA
+KOSTIĆ PAVLE
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ RADOJICA
+KOSTIĆ RADOJKO
+KOSTIĆ RADOMIR
+KOSTIĆ RADOSAV
+KOSTIĆ RATKO
+KOSTIĆ RUŽICA
+KOSTIĆ SAVA
+KOSTIĆ SAVA
+KOSTIĆ SLAVICA
+KOSTIĆ SLAVKA
+KOSTIĆ SLOBODAN
+KOSTIĆ SLOBODAN
+KOSTIĆ SLOBODAN
+KOSTIĆ SNEŽANA
+KOSTIĆ SPASENKO
+KOSTIĆ SRETEN
+KOSTIĆ STANA
+KOSTIĆ STANIMIR
+KOSTIĆ STANKO
+KOSTIĆ STAZA
+KOSTIĆ STEVAN
+KOSTIĆ STOJADIN
+KOSTIĆ STRAHINJA DR PROF
+KOSTIĆ SVETISLAV DR
+KOSTIĆ SVETISLAV
+KOSTIĆ SVETOZAR
+KOSTIĆ TIBERIJE
+KOSTIĆ TOMISLAV
+KOSTIĆ TOMISLAV
+KOSTIĆ TOMISLAV
+KOSTIĆ VASO
+KOSTIĆ VELIMIR
+KOSTIĆ VERA
+KOSTIĆ VLADISLAVA
+KOSTIĆ VLADISLAV
+KOSTIĆ VLASTIMIR
+KOSTIĆ VOJISLAV
+KOSTIĆ VUKAŠIN
+KOSTIĆ ZDRAVKO
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORICA
+KOSTOVIĆ JELICA
+KOSTOVIĆ RATKO
+KOSTOVIĆ SNEŽANA
+KOSTOVSKI KATICA
+KOSTOVSKI MIROSLAV
+KOSTOVSKI TRAJČE
+KOSTREŠ MOMČILO
+KOSTREŠEVIĆ GORAN
+KOSTREŠEVIĆ MILADIN
+KOSTREŠEVIĆ NEDELJKO
+KOSTREŠEVIĆ STANKA
+KOSTRIČENKO VASILIJE
+KOSTUDIJA MIROSLAV
+KOT ILONA
+KOT JOSIP
+KOT LADISLAV
+KOT LASLO
+KOT MARTA
+KOT MIRA
+KOT MIRKO
+KOTA ERŽEBET
+KOTA LAJOŠ
+KOTA MIHAJLO
+KOTARČEVIĆ ELVIRA
+KOTARČEVIĆ NIKOLA
+KOTARAC KATICA
+KOTARAC KOSTA
+KOTARAC SVETISLAV
+KOTARANIN LJILJANA
+KOTARANIN PETAR
+KOTARLIĆ DARKO
+KOTARLIĆ DRAGANA
+KOTARLIĆ SAVA
+KOTHAI IŠTVAN
+KOTHAI JOŽEF
+KOTHAI STEVAN
+KOTHAJ STEVAN
+KOTIĆ VOJISLAV
+KOTLAJA MILANKO
+KOTLAJA MILKO
+KOTLARIĆ MARKO DR
+KOTLARIĆ STANIMIR
+KOTRBA FRANJA
+KOTRE MAGDOLNA
+KOTUŠ ERŽEBET
+KOTUŠ MILICA
+KOTUŠ MIROSLAV
+KOTUŠ STEVAN
+KOTUĆ MARIJETA
+KOTUR ANĐELKA
+KOTUR DRAGAN
+KOTUR JELA
+KOTUR RADE
+KOTUROV NADA
+KOTUROVIĆ KATICA
+KOUNIS LJILJANA
+KOVČE AMALIJA
+KOVČEV SPASENKA
+KOVČIN MILICA
+KOVČIN MILOVAN
+KOVČIN MIROSLAV DIPL ING
+KOVČIN NEGA
+KOVČIN STANIMIR DR
+KOVAČ ČEDO
+KOVAČ ŠANDOR
+KOVAČ ŠANDOR
+KOVAČ ĐORĐE
+KOVAČ ĐORĐE
+KOVAČ ĐULA
+KOVAČ ĐURĐA
+KOVAČ-AČ KAROLJ
+KOVAČ ALEKSANDAR
+KOVAČ ALEKSANDAR
+KOVAČ ANA
+KOVAČ ANA
+KOVAČ ANDRAŠ
+KOVAČ ANTAL
+KOVAČ ANTON
+KOVAČ ARPAD
+KOVAČ ATILA
+KOVAČ BELA
+KOVAČ BELA
+KOVAČ-BIRKAŠ MIHALJ
+KOVAČ BORIS
+KOVAČ DEŽE
+KOVAČ DESANKA
+KOVAČ DRAGICA MR
+KOVAČ DUŠAN
+KOVAČ ETELKA
+KOVAČ ETELKA
+KOVAČ FERENC
+KOVAČ FERENC
+KOVAČ FRANJA
+KOVAČ FRANJA
+KOVAČ GABOR
+KOVAČ GIZELA
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ ILONA
+KOVAČ IMRE
+KOVAČ IMRE
+KOVAČ IMRE
+KOVAČ IRENA
+KOVAČ IRENA
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ JAKOB
+KOVAČ JANKO
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JAN
+KOVAČ JAN
+KOVAČ JELICA
+KOVAČ JELISAVETA
+KOVAČ JOŽEF
+KOVAČ JOŽEF
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOVAN
+KOVAČ JOVAN
+KOVAČ JOVAN
+KOVAČ JULIANA
+KOVAČ JULIJANA
+KOVAČ KARLO
+KOVAČ KARLO
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KATALIN
+KOVAČ KATARINA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KOVILJKA
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LAJOŠ
+KOVAČ LAJOŠ
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LJUBAN
+KOVAČ LJUDEVIT
+KOVAČ MAJA
+KOVAČ MARGITA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARTIN
+KOVAČ MATIJA
+KOVAČ MIHAJLO
+KOVAČ MIHAJLO
+KOVAČ MIHALJ
+KOVAČ MIHALJ
+KOVAČ MIKLOŠ
+KOVAČ MIKLOŠ
+KOVAČ MILADIN
+KOVAČ MILAN
+KOVAČ MILENA
+KOVAČ MILOŠ
+KOVAČ MILORAD
+KOVAČ MIRJANA
+KOVAČ MIRJANA
+KOVAČ MIRJANA
+KOVAČ MIRKO
+KOVAČ MIRON DIPL ING
+KOVAČ MIROSLAV
+KOVAČ NATALIJA
+KOVAČ NIKOLA
+KOVAČ NIKOLA
+KOVAČ OLGICA
+KOVAČ OLGICA
+KOVAČ OTO
+KOVAČ PAVEL
+KOVAČ PETAR
+KOVAČ RISTO DIPL ING
+KOVAČ ROŽI
+KOVAČ ROŽI
+KOVAČ ROZALIJA
+KOVAČ ROZALIJA
+KOVAČ RUŽICA
+KOVAČ SILVESTER
+KOVAČ SMILJA
+KOVAČ STANOJKA
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STJEPAN DIPL ING
+KOVAČ SVETOZAR
+KOVAČ TEODOR DR PROF
+KOVAČ TEODOR DR
+KOVAČ TIBOR
+KOVAČ TIBOR
+KOVAČ-TIHMAJER STEVAN
+KOVAČ TOMISLAV
+KOVAČ TRPIMIR
+KOVAČ VALERIJA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERICA
+KOVAČ VERONA
+KOVAČ VERONA
+KOVAČ VIDA
+KOVAČ VLADIMIR
+KOVAČ VLADIMIR
+KOVAČ ZORA
+KOVAČ ZVONIMIR
+KOVAČEK BOŽIDAR DR
+KOVAČEK DANICA
+KOVAČEK JELENA
+KOVAČEV ĐORĐE
+KOVAČEV ALEKSANDAR
+KOVAČEV BRANKA
+KOVAČEV BRANKO
+KOVAČEV BRANKO
+KOVAČEV DANČE
+KOVAČEV DANILKA
+KOVAČEV DIMITRIJE
+KOVAČEV DRAGIŠA
+KOVAČEV DRAGOSLAV
+KOVAČEV DRAGUTIN
+KOVAČEV DRAGUTIN
+KOVAČEV DUŠANKA
+KOVAČEV GORAN
+KOVAČEV GORDANA
+KOVAČEV GORDANA
+KOVAČEV ILIJA
+KOVAČEV IVICA
+KOVAČEV JELA
+KOVAČEV JELENA
+KOVAČEV JOVAN
+KOVAČEV JULIJANA
+KOVAČEV JULKA
+KOVAČEV LAZAR
+KOVAČEV MARIJA
+KOVAČEV MILAN
+KOVAČEV MILAN
+KOVAČEV MILENA
+KOVAČEV MILICA
+KOVAČEV MILOŠ
+KOVAČEV MILORAD DR LEKAR
+KOVAČEV MILUTIN
+KOVAČEV MIRJANA
+KOVAČEV MLADEN
+KOVAČEV NEDELJKO
+KOVAČEV NEMANJA
+KOVAČEV PETAR
+KOVAČEV STEVAN
+KOVAČEV STEVAN
+KOVAČEV STEVAN
+KOVAČEV SVETISLAV
+KOVAČEV SVETOZAR
+KOVAČEV TEODOR DR
+KOVAČEV TEODOR DR
+KOVAČEV VERA
+KOVAČEV VERA
+KOVAČEV VESNA
+KOVAČEVIĆ ČEDA
+KOVAČEVIĆ ŽELIMIR
+KOVAČEVIĆ ŽELJKO
+KOVAČEVIĆ ŽIVAN
+KOVAČEVIĆ ŽIVAN
+KOVAČEVIĆ ĐORĐE DIPL ING
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐURĐINA
+KOVAČEVIĆ ĐURA
+KOVAČEVIĆ AGNEŠ
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ANĐELIJA
+KOVAČEVIĆ ANDRIJA
+KOVAČEVIĆ ANETA
+KOVAČEVIĆ ANKICA
+KOVAČEVIĆ ARSA
+KOVAČEVIĆ BLAGOJE
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŽIDAR
+KOVAČEVIĆ BOGDAN
+KOVAČEVIĆ BOGDAN
+KOVAČEVIĆ BORISLAVA
+KOVAČEVIĆ BORISLAV
+KOVAČEVIĆ BORISLAV
+KOVAČEVIĆ BORIVOJE
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORKA
+KOVAČEVIĆ BRANIMIR
+KOVAČEVIĆ BRANISLAVA DIPL ING
+KOVAČEVIĆ BRANISLAVA
+KOVAČEVIĆ BRANISLAVA
+KOVAČEVIĆ BRANISLAV
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BUDIMIR
+KOVAČEVIĆ BUDIMIR
+KOVAČEVIĆ DAMJAN
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANILO
+KOVAČEVIĆ DANKA
+KOVAČEVIĆ DAVORKA
+KOVAČEVIĆ DESANKA
+KOVAČEVIĆ DIMITRIJE DIPL OEC
+KOVAČEVIĆ DRAGAN DR
+KOVAČEVIĆ DRAGANA
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGICA
+KOVAČEVIĆ DRAGICA
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGO
+KOVAČEVIĆ DRAGO
+KOVAČEVIĆ DRAGUTIN
+KOVAČEVIĆ DRAGUTIN
+KOVAČEVIĆ DRENA
+KOVAČEVIĆ DUŠANKA
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠICA
+KOVAČEVIĆ DUŠICA
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ FRANJA
+KOVAČEVIĆ GAVRILO
+KOVAČEVIĆ GLIGORIJE
+KOVAČEVIĆ GOJKO
+KOVAČEVIĆ IŠTVAN
+KOVAČEVIĆ IGNJAT
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ISA
+KOVAČEVIĆ IVAN
+KOVAČEVIĆ JAGOŠ
+KOVAČEVIĆ JELENA
+KOVAČEVIĆ JELICA
+KOVAČEVIĆ JELICA
+KOVAČEVIĆ JELISAVETA
+KOVAČEVIĆ JORDAN
+KOVAČEVIĆ JOVANKA
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVICA
+KOVAČEVIĆ JOVO
+KOVAČEVIĆ KATARINA
+KOVAČEVIĆ KATA
+KOVAČEVIĆ KATICA DR
+KOVAČEVIĆ KATICA
+KOVAČEVIĆ KATICA
+KOVAČEVIĆ KLARA
+KOVAČEVIĆ KOČA
+KOVAČEVIĆ KOJA
+KOVAČEVIĆ KOSTA
+KOVAČEVIĆ KOSTA
+KOVAČEVIĆ KOVILJKA
+KOVAČEVIĆ KRSTA
+KOVAČEVIĆ KRSTO
+KOVAČEVIĆ KSENIJA
+KOVAČEVIĆ KSENIJA
+KOVAČEVIĆ LAZO
+KOVAČEVIĆ LJILJANA
+KOVAČEVIĆ LJILJA
+KOVAČEVIĆ LJUBICA
+KOVAČEVIĆ LJUBO
+KOVAČEVIĆ MARA
+KOVAČEVIĆ MARA
+KOVAČEVIĆ MARIJA
+KOVAČEVIĆ MARIJA
+KOVAČEVIĆ MARKO
+KOVAČEVIĆ MARKO
+KOVAČEVIĆ MIHAJLO
+KOVAČEVIĆ MIHAJLO
+KOVAČEVIĆ MILADINKA
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILENA
+KOVAČEVIĆ MILENA
+KOVAČEVIĆ MILE
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILIMIR
+KOVAČEVIĆ MILIVOJ DR
+KOVAČEVIĆ MILJAN
+KOVAČEVIĆ MILKA
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILORAD
+KOVAČEVIĆ MILORAD
+KOVAČEVIĆ MILOVAN
+KOVAČEVIĆ MILOVAN
+KOVAČEVIĆ MIODRAG
+KOVAČEVIĆ MIODRAG
+KOVAČEVIĆ MIRA
+KOVAČEVIĆ MIRA
+KOVAČEVIĆ MIRJANA
+KOVAČEVIĆ MIRJANA
+KOVAČEVIĆ MIRKO
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MITAR
+KOVAČEVIĆ MITA
+KOVAČEVIĆ-MLADENOVIĆ OLGA
+KOVAČEVIĆ MLADEN
+KOVAČEVIĆ NADA
+KOVAČEVIĆ NADEŽDA
+KOVAČEVIĆ NATALIJA
+KOVAČEVIĆ NEBOJŠA
+KOVAČEVIĆ NEDELJKA
+KOVAČEVIĆ NEDELJKO
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ OLGICA
+KOVAČEVIĆ OZREN
+KOVAČEVIĆ PAVLE
+KOVAČEVIĆ PAVLE
+KOVAČEVIĆ PETAR
+KOVAČEVIĆ RADENKO
+KOVAČEVIĆ RADE
+KOVAČEVIĆ RADIVOJE
+KOVAČEVIĆ RADIVOJ
+KOVAČEVIĆ RADIVOJ
+KOVAČEVIĆ RADMILA
+KOVAČEVIĆ RADOJKA
+KOVAČEVIĆ RADOJKO
+KOVAČEVIĆ RADOMAN
+KOVAČEVIĆ RADOSLAV
+KOVAČEVIĆ RADOVAN
+KOVAČEVIĆ RAJKO
+KOVAČEVIĆ RAJKO
+KOVAČEVIĆ RANKO
+KOVAČEVIĆ RELJA
+KOVAČEVIĆ RUŽICA
+KOVAČEVIĆ RUŽICA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVKA
+KOVAČEVIĆ SAVO
+KOVAČEVIĆ SEKULA
+KOVAČEVIĆ SIMEON
+KOVAČEVIĆ SLAĐANA
+KOVAČEVIĆ SLAVICA
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SPASENIJA
+KOVAČEVIĆ SRBIJANKA
+KOVAČEVIĆ SRETA
+KOVAČEVIĆ SRETEN
+KOVAČEVIĆ STANA
+KOVAČEVIĆ STANKA
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETOLIK
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ TEREZA
+KOVAČEVIĆ TODOR
+KOVAČEVIĆ TOMISLAV
+KOVAČEVIĆ VASA
+KOVAČEVIĆ VELIMIR
+KOVAČEVIĆ VELIMIR
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VINKO
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADISLAV
+KOVAČEVIĆ VOJIN
+KOVAČEVIĆ VOJIN
+KOVAČEVIĆ VOJISLAV DIPL ING
+KOVAČEVIĆ VUJO
+KOVAČEVIĆ VUKAŠIN
+KOVAČEVIĆ VUKAŠIN
+KOVAČEVIĆ ZDENKO
+KOVAČEVIĆ ZDRAVKO
+KOVAČEVIĆ ZORAN DR
+KOVAČEVIĆ ZORAN
+KOVAČEVIĆ ZORAN
+KOVAČEVIĆ ZORICA
+KOVAČEVIĆ ZORICA
+KOVAČEVIĆ ZVONIMIRKA
+KOVAČIĆ ŽIVKO
+KOVAČIĆ ANICA
+KOVAČIĆ BOŽANA
+KOVAČIĆ BORIVOJ
+KOVAČIĆ DRAGANA
+KOVAČIĆ DUŠANKA
+KOVAČIĆ DUŠAN
+KOVAČIĆ JOVAN
+KOVAČIĆ JOVAN
+KOVAČIĆ JOVAN
+KOVAČIĆ LJEPOSAVA
+KOVAČIĆ LUKA
+KOVAČIĆ MILAN
+KOVAČIĆ MILENKO
+KOVAČIĆ MIROSLAV
+KOVAČIĆ MIROSLAV
+KOVAČIĆ NEDELJKO
+KOVAČIĆ NIKOLA
+KOVAČIĆ PETAR
+KOVAČIĆ RADOSLAV
+KOVAČIĆ SLOBODAN
+KOVAČIĆ STANISLAV
+KOVAČIĆ TANASIJE
+KOVAČIĆ TOŠA
+KOVAČIĆ TOMISLAV
+KOVAČIĆ VESNA
+KOVAČIK MARGITA
+KOVAČIK MARIJA
+KOVALČIK VLADISLAV
+KOVALOVSKI TEODOR
+KOVANOVIĆ PETAR
+KOVAR JANJA
+KOVARČIK ANDRIJA
+KOVARČIK MARIJA
+KOVARIK VALERIJA
+KOVEINDL JOSIP
+KOVELJ TOMISLAV
+KOVIĆ DRAGICA
+KOVIĆ NADA
+KOVIĆ SLOBODAN
+KOVIJANIĆ VLADIMIR
+KOVINČIĆ BOJAN
+KOVINČIĆ MILAN
+KOVINČIĆ NADA
+KOVINČIĆ NATAŠA
+KOVINČIĆ SLOBODAN DIPL ING
+KOVINČIĆ STOJAN
+KOVJANIĆ ALEKSANDAR
+KOVJANIĆ JOVAN
+KOVJANIĆ MILORAD
+KOVJANIĆ NADA
+KOVJANIĆ NENAD
+KOVJANIĆ PERA
+KOVJANIĆ SAVA
+KOVLJAN ĐORĐE
+KOVLJAN SAVO
+KOVRLIJA JOVAN
+KOZAK MARIJA
+KOZAKIV IVAN
+KOZAR RADE
+KOZARČIĆ JOVANKA
+KOZARČIĆ JOVAN
+KOZARČIĆ JOVAN
+KOZARČIĆ MARKO
+KOZARČIĆ MILAN
+KOZARAC MIĆO
+KOZAREV ŽARKO
+KOZAREV ŽIVKO
+KOZAREV ALEKSANDRA
+KOZAREV BOGOLJUB
+KOZAREV DARINKA
+KOZAREV DIMITRIJE
+KOZAREV DIMITRIJE
+KOZAREV DRAGICA
+KOZAREV GOSPAVA
+KOZAREV LAZAR
+KOZAREV LJUBICA
+KOZAREV MARIJA
+KOZAREV MILAN
+KOZAREV MILKA
+KOZAREV MLADEN
+KOZAREV NEDELJKO
+KOZAREV PAVLE
+KOZAREV PETAR
+KOZAREV SAVA
+KOZAREV SAVA
+KOZAREV TODOR
+KOZAREVIĆ RADINKA
+KOZAREVIĆ ZORAN
+KOZAROV ĐORĐE
+KOZAROV ANICA
+KOZAROV GAVRA
+KOZAROV IVAN
+KOZAROV JOVANKA
+KOZAROV KATICA
+KOZAROV MILOŠ
+KOZAROV NATALIJA
+KOZAROV PAVLE
+KOZAROV PAVLE
+KOZAROV SRBISLAV
+KOZAROV TOMISLAV
+KOZARSKI ŽIVAN
+KOZARSKI ŽIVKO
+KOZARSKI LIDIJA
+KOZARSKI MARIJA
+KOZARSKI MIROSLAV
+KOZARSKI-RAJIĆ VERICA
+KOZARSKI SLOBODAN
+KOZARSKI SOFIJA
+KOZARSKI STEVAN
+KOZARSKI TEODORA
+KOZARSKI VASILIJE
+KOZARSKI VERA
+KOZARSKI VOJISLAV
+KOZARSKI VOJISLAV
+KOZBAŠIĆ STEVAN
+KOZIĆ BOGDAN
+KOZIĆ PETAR
+KOZIĆ RATKO
+KOZIĆ ROŽA
+KOZIĆ SAVA
+KOZIĆ STANKO
+KOZIĆ VELJKO
+KOZINA IVAN
+KOZINA MARICA
+KOZLIK KATARINA
+KOZLIK LAJOŠ
+KOZLINA DESANKA
+KOZLINA DUŠKO
+KOZLINA JEKA
+KOZLINA MILE
+KOZLINA ZLATICA
+KOZLOVAČKI ŽIVKO
+KOZLOVAČKI GORDANA
+KOZLOVAČKI LJUBA
+KOZLOVAČKI SAVA
+KOZLOVAČKI SOFIJA
+KOZLOVAČKI VESELIN
+KOZLOVIĆ BORIS
+KOZLOVIĆ SAVA
+KOZMA ŠANDOR
+KOZMA ETEL
+KOZMA FERENC
+KOZMA JOŽEF
+KOZMA JOSIP
+KOZMIDIS-PETROVIĆ ANA
+KOZOMARA ĐORĐE
+KOZOMARA JOVO
+KOZOMARA LJUBICA
+KOZOMARA MARIJA
+KOZOMARA ZORAN
+KOZOMARIĆ MARIJA
+KOZOMORA BOŽIDAR
+KOZOMORA BRANKO
+KOZOMORA ILIJA
+KOZOMORA JOKA
+KOZOMORA JOVO
+KOZOMORA LAZO
+KOZOMORA MILAN
+KOZOMORA MILE
+KOZOMORA MILOJKO
+KOZOMORA MIROSLAV
+KOZOMORA PETAR
+KOZOMORA RADOMIR
+KOZOMORA SRĐAN
+KOZOMORA TATJANA
+KOZOMORA VASILIJE
+KOZOMORIĆ BRANISLAVA DR LEKAR
+KOZUNOVIĆ MIROSLAV
+KRČADINAC KOSTA
+KRČADINAC NIKOLA
+KRČEDINAC MIODRAG
+KRČEDINAC TIMA
+KRČELIĆ ANDRIJA
+KRČMAR ŽELJKO
+KRČMAR CVIJO
+KRČMAR DRAGOMIR
+KRČMAR DUŠKO
+KRČMAR JOVAN
+KRČMAR LEPOSAVA
+KRČMAR LJUBICA
+KRČMAR LJUBICA
+KRČMAR MILAN
+KRČMAR MILAN
+KRČMAR MIRKO
+KRČMAR PANE
+KRČMAR VASO
+KRČMAR VINKO
+KRČMAR ZORAN
+KRČMAR ZORAN
+KRČMARIK DANILO
+KRČMARIK PREDRAG
+KRČO BOŽIDAR
+KRČO MILENKO
+KRČO RASIM
+KRČO RASIM
+KRŠEV BORIS
+KRŠEV IVAN
+KRŠEV JULIJANA
+KRŠEV JULKICA
+KRŠIĆ DARA
+KRŠIĆ IGNJAT
+KRŠIĆ JELA
+KRŠIĆ TOMO
+KRŠIN JOVO
+KRŠOVIĆ JELENA
+KRŠTENIĆ DESANKA
+KRŽA MILENKO
+KRŽIĆ SIMO
+KRĐIĆ SPOMENKA
+KRAČENSKI BORISLAV
+KRAČEVSKI APOSTOL
+KRAČUN IVAN
+KRAČUN TRAJAN
+KRAČUN TRAJAN
+KRAČUNOV PETAR
+KRAČUNOV STEVAN
+KRAČUNOVIĆ ŽIVORAD
+KRAČUNOVIĆ VELJKO
+KRAĆAK BOŠKO
+KRAGIČEK KLARA
+KRAGIĆ BILJANA
+KRAGIĆ BORA
+KRAGIĆ LJILJANA
+KRAGIĆ ZORAN
+KRAGOVIĆ MARINKO
+KRAGOVIĆ VLADIMIR
+KRAGUJEV DUŠAN
+KRAGUJEVIĆ MILORAD DR LEKAR
+KRAGUJEVIĆ RAJKO
+KRAGUJEVIĆ STANISLAV DR LEKAR
+KRAGULJ ALEKSANDAR
+KRAGULJ DUŠANKA
+KRAGULJ JELA
+KRAGULJ LAZO
+KRAGULJ SAVKA
+KRAGULJEVIĆ ZORICA
+KRAJČEVIĆ MIODRAG
+KRAJČI VLADIMIR
+KRAJČINOVIĆ JOVAN DR LEKAR
+KRAJŠIĆ MIRKO
+KRAJAČEVIĆ BORISLAV
+KRAJAČEVIĆ HILDA
+KRAJAČEVIĆ MIRJANA
+KRAJAČEVIĆ TOMISLAV
+KRAJAČEVIĆ ZORAN
+KRAJCAR VLADIMIR
+KRAJCER EUGEN
+KRAJCER IRENA
+KRAJCER IVAN
+KRAJCER PETAR
+KRAJIŠNIK ŽIVORAD
+KRAJIŠNIK KRISTINA
+KRAJIĆ AGICA
+KRAJINA ALEKSANDAR
+KRAJINA FILIP
+KRAJINOVIĆ BRANKO
+KRAJINOVIĆ LAZAR
+KRAJINOVIĆ MILAN
+KRAJINOVIĆ PAVLE
+KRAJINOVIĆ SINIŠA
+KRAJNIK ŽARKO
+KRAJNIK LAZAR
+KRAJNIKER NANDOR
+KRAJNOV BOGDAN
+KRAJNOV BOGOLJUB
+KRAJNOV GORAN
+KRAJNOVIĆ ĐORĐE
+KRAJNOVIĆ ĐORĐE
+KRAJNOVIĆ ĐURO
+KRAJNOVIĆ BOŠKO
+KRAJNOVIĆ BOGDAN
+KRAJNOVIĆ JADRANKA
+KRAJNOVIĆ MILIĆ
+KRAJNOVIĆ MILICA
+KRAJNOVIĆ NIKOLA
+KRAJNOVIĆ PETAR
+KRAJNOVIĆ RADE
+KRAJNOVIĆ SLAVICA
+KRAJNOVIĆ VERA
+KRAJOVAN MIRJANA
+KRAJOVAN MIROSLAV
+KRAK MIŠA
+KRAKANOVIĆ DUŠAN
+KRAKANOVIĆ VOJISLAV
+KRALIK MIROSLAV
+KRALIK OLINKA
+KRALIK PAVLE
+KRALIK STEVAN
+KRALJ VALENTIN
+KRALJ ZVONIMIR
+KRALJEVAČKI BARBARA
+KRALJEVAČKI ILIJA
+KRALJEVAČKI JOSIP
+KRALJEVIĆ BOSILJKA
+KRALJEVIĆ DUŠAN
+KRALJEVIĆ MARICA
+KRALJEVIĆ MILKA
+KRALJEVIĆ SAVO
+KRALJEVIĆ VLADIMIR DR
+KRALJIĆ JELENA
+KRALJIĆ VLADA
+KRANJČEVIĆ GORDANA
+KRANJČEVIĆ JOSIP
+KRAS JELENA
+KRASAVAC ŽIVORAD
+KRASAVAC MILKA
+KRASAVAC MILORAD
+KRASAVAC MILORAD
+KRASAVAC RUŽICA
+KRASIĆ BRANISLAV
+KRASIĆ DUŠAN
+KRASIĆ GOLUB
+KRASIĆ MILOJE
+KRASIĆ NIKOLA
+KRASIĆ STEVAN
+KRASKO JANKO
+KRASNIĆ IRINA
+KRASNIĆ VERA
+KRASNIK VLATKO
+KRASNIK ZVONKO
+KRASOJEVIĆ KONSTANTIN
+KRASOJEVIĆ ZORAN
+KRASULA TOMA
+KRASULJA DUŠAN
+KRASULJA STEVAN
+KRAUS ANA
+KRAUS OTO
+KRAVČENKO PETAR
+KRAVARUŠIĆ DRAGAN
+KRAVARUŠIĆ ILIJA
+KRAVARUŠIĆ TRIVUN
+KRAVARUŠIĆ VITOMIR
+KRAVIĆ DUŠAN
+KRAVIĆ MILAN
+KRAVIĆ PETAR
+KRAVLJANAC ALEKSANDRA
+KRAVLJANAC IVANKA
+KRBANJEVIĆ ALEKSANDAR
+KRBANJEVIĆ MILAN
+KRBANJEVIĆ SAŠA
+KRBAVAC JELA
+KRCIĆ BRATIMIR
+KRCUNOVIĆ BLAGOJE
+KRDŽALIĆ DRAGAN
+KRDŽALIĆ STEVAN
+KRDŽIĆ VIDOJE
+KREŠO EMIR
+KRECUL LIDIJA
+KRECULJ MARIJA
+KREG EDUARD
+KREG VLADIMIR
+KREJIĆ BORISLAV
+KREJIĆ JOVAN
+KREJIĆ MARINKO
+KREJIĆ STANISLAV
+KREJIĆ STANISLAV
+KREJIĆ STOJA
+KREKIĆ BARIŠA DR
+KREKIĆ ENVER
+KREKIĆ FRANJA
+KREKIĆ MILENA
+KREKO LJUBICA
+KREMENOVIĆ BORISLAV
+KREMENOVIĆ KLARA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ MILANKA
+KREMENOVIĆ MILENA
+KREMENOVIĆ MILENKO
+KREMENOVIĆ MILOŠ
+KREMENOVIĆ MIRKO
+KREMENOVIĆ NEDELJKO
+KREMENOVIĆ PETAR
+KREMENOVIĆ RADOSLAV
+KREMENOVIĆ SINIŠA
+KREMENOVIĆ SNEŽANA
+KREMENOVIĆ STANKO
+KREMENOVIĆ STEVO
+KREMENOVIĆ VOJIN
+KREMER ELIZABETA
+KREMER FRANJA
+KREMER JOVAN
+KREMER KATICA
+KREMER MATIJA
+KREMER PAJA
+KREMIĆ DRAGAN
+KREMIĆ LJUBOMIR
+KREMPASKI-ANDRIĆ HILDA
+KREMPASKI ELIZABETA
+KRESANKO LASLO
+KRESANKO MARGITA
+KRESANKO MARIJA
+KRESIĆ JANJA
+KRESIĆ MILENA
+KRESIĆ MITAR
+KRESIĆ SLAVKO
+KRESO ŠAĆIR
+KRESOJA DUŠKO
+KRESOJA MARINKO
+KRESOJEVIĆ DAMJAN
+KRESOJEVIĆ JOVANKA
+KRESOJEVIĆ JOVAN
+KRESOJEVIĆ SRBOSLAV
+KRESOJEVIĆ VESNA
+KRESOJEVIĆ ZDRAVKO
+KRESOVIĆ SLAVKO
+KRESOVIĆ SLOBODAN
+KRESOVIĆ VASO
+KRESTA ARPAD
+KRESTA ATILA
+KRESTIĆ DAFINA
+KRESTIĆ NADA
+KRESTIĆ STEVAN
+KRESTIĆ VLADIMIR
+KREVEŠIĆ KARLO
+KREVEŠIĆ KATA
+KRGA GAVRA
+KRGA MANE
+KRGA MARA
+KRGA MILAN
+KRGA MILOŠ
+KRGA VASA
+KRGIN MLADEN
+KRGIN NADA
+KRGIN NEDELJKO
+KRGOVIĆ DUŠANKA
+KRGOVIĆ DUŠANKA
+KRGOVIĆ JOVO
+KRGOVIĆ MALIŠA
+KRGOVIĆ MARIJA
+KRGOVIĆ MIĆO
+KRGOVIĆ MILAN
+KRGOVIĆ MILORAD DR LEKAR
+KRGOVIĆ MOMČILO
+KRGOVIĆ RATKO
+KRGOVIĆ SMILJA
+KRGOVIĆ SNEŽANA
+KRGOVIĆ SVETOZAR
+KRGOVIĆ VLADA
+KRGOVIĆ VUKOMAN DIPL ING
+KRGOVIĆ ZORICA
+KRIŠ PETAR
+KRIŠAN BOSILJKA
+KRIŠAN DRAGOJLO
+KRIŠAN MATIJA
+KRIŠAN MILOŠ
+KRIŠAN VUKICA
+KRIŠAN ZDRAVKO
+KRIŠANOV JOVAN
+KRIŠANOVIĆ DRAGOMIR
+KRIŠTO JULIJANA
+KRIŽ JANKO
+KRIŽ PAVEL
+KRIŽAK ANA
+KRIŽAN ŠANDOR
+KRIŽAN ĐURA
+KRIŽAN ANICA
+KRIŽAN EDUARD
+KRIŽAN JANOŠ
+KRIŽAN JULA
+KRIŽAN LASLO
+KRIŽAN MARIJA
+KRIŽAN MATIJA
+KRIŽAN MIKLOŠ
+KRIŽAN ROŽA
+KRIŽANIĆ JOVAN
+KRIŽANIĆ JOVAN
+KRIŽANIĆ MILENKO
+KRIŽANIĆ SLAĐANA
+KRIŽANIĆ VLADIMIR
+KRIŽANOVIĆ ŽUŽANA
+KRIŽNAR BOJAN
+KRIŽNAR MARA
+KRIŽNAR MIRKO DR DIPL ING
+KRIŽNAR TOMA DIPL ING
+KRIMŠAMHALOV ZAIDA
+KRINKOVSKI ALEKSANDAR
+KRINKOVSKI ALEKSANDAR
+KRINKOVSKI VERONIKA
+KRISTIĆ MARIJA
+KRISTIĆ NADA
+KRISTIAN JOŽEF
+KRISTOVIĆ MIROSLAVA
+KRISTOVIĆ RUDOLF
+KRIVAK ANA
+KRIVAK MIROSLAV
+KRIVIĆ DRAGANA
+KRIVIĆ LJILJANA
+KRIVIĆ NIKOLA
+KRIVOŠIJA ŽIVKO
+KRIVOŠIJA FRANJO
+KRIVOŠIJA MILE
+KRIVOKAPIĆ AMALIJA
+KRIVOKAPIĆ DANICA
+KRIVOKAPIĆ MARTIN
+KRIVOKAPIĆ NEDELJKO
+KRIVOKAPIĆ NEVENKA DIPL ECC
+KRIVOKAPIĆ RADOSLAV
+KRIVOKAPIĆ SLOBODAN
+KRIVOKAPIĆ SLOBODAN
+KRIVOKAPIĆ STEVAN
+KRIVOKAPIĆ VLADIMIR
+KRIVOKUĆA ĐORĐE
+KRIVOKUĆA DEJAN DIPL ING
+KRIVOKUĆA DIMITRIJE
+KRIVOKUĆA DRAGICA
+KRIVOKUĆA DRAGOMIR
+KRIVOKUĆA DRAGOMIR
+KRIVOKUĆA DUŠAN
+KRIVOKUĆA JELISAVETA
+KRIVOKUĆA JOVAN
+KRIVOKUĆA JULIJANA
+KRIVOKUĆA MILAN
+KRIVOKUĆA MILICA
+KRIVOKUĆA MILKA
+KRIVOKUĆA MIODRAG
+KRIVOKUĆA PETAR
+KRIVOKUĆA RADOSLAV
+KRIVOKUĆA RADOVAN
+KRIZBAI ZOLTAN
+KRKELIĆ SLOBODAN
+KRKELJEŠ BORIS
+KRKELJIĆ MOMČILO
+KRKELJIĆ SVETISLAV
+KRKIĆ MILOVAN
+KRKLEC JOSIP
+KRKLEC VERA
+KRKLEC VLADIMIR
+KRKLJEŠ ĐURO
+KRKLJEŠ BORA
+KRKLJEŠ MILE DR
+KRKLJIĆ ĐURO
+KRKLJIĆ DRAGAN
+KRKLJIĆ MILAN
+KRKLJIĆ MILOVAN
+KRKLJIĆ NIKOLA
+KRKLJIĆ OSTOJA
+KRKLJUŠ BOŠKO
+KRKLJUŠ BRANKO
+KRKLJUŠ DRAGANA
+KRKLJUŠ DUŠANKA
+KRKLJUŠ DUŠAN
+KRKLJUŠ JELENA
+KRKLJUŠ JELICA
+KRKLJUŠ KRISTINA
+KRKLJUŠ LJUBINKA
+KRKLJUŠ LJUBOMIRKA DR
+KRKLJUŠ MILAN
+KRKLJUŠ MILAN
+KRKLJUŠ MILICA
+KRKLJUŠ MILORAD
+KRKLJUŠ MIROSLAV
+KRKLJUŠ MOMČILO
+KRKLJUŠ PETAR
+KRKLJUŠ PETAR
+KRKLJUŠ RADE
+KRKLJUŠ SLAVKO
+KRKLJUŠ SLOBODAN
+KRKLJUŠ STEVAN
+KRKLJUŠ VERICA
+KRKOBABIĆ ILIJA
+KRKOBABIĆ VERICA
+KRKOVIĆ-JUPEK DUŠANKA
+KRMAR DUŠAN
+KRMAR JASNA
+KRMAR MARKO
+KRMAR ZORA
+KRMPOT GOJKO
+KRMPOT LAZAR
+KRMPOTIĆ ANĐELKA
+KRMPOTIĆ VOJISLAV DIPL PRAVNIK
+KRMPOTIĆ VUKICA
+KRNČEVIĆ ANĐELKA
+KRNAJAC ŽIVAN
+KRNAJAC IVAN
+KRNAJAC MOMČILO
+KRNAJAC NEVENKA
+KRNAJAC PETAR
+KRNAJAC RADOVAN
+KRNAJAC ZLATICA
+KRNAJSKI MILORAD
+KRNDIJA BOGOLJUB
+KRNDIJA BRANKO
+KRNDIJA MARKO
+KRNDIJA MILOVAN
+KRNDIJA NENAD
+KRNDIJA PETAR
+KRNDIJA STANA
+KRNDIJA STEVO
+KRNDIJA VOJIN
+KRNETA BOGDAN
+KRNETA JELKA
+KRNETA MILORAD
+KRNETA MILOSAVA
+KRNETA NIKOLA
+KRNETA RADE
+KRNETA SLOBODAN
+KRNETA STEVAN
+KRNETIĆ GOJKO
+KRNETIĆ JOVAN
+KRNIĆ ANA
+KRNIĆ PERA
+KRNIĆ RADOJKA
+KRNIĆ STEVAN
+KRNIĆ STIPO
+KRNIJA MARINKO
+KRNJAIĆ DRAGO
+KRNJAIĆ GORAN
+KRNJAIĆ JELISAVETA
+KRNJAJIĆ DUŠANKA
+KRNJAJIĆ ILIJA
+KRNJAJIĆ IVICA
+KRNJAJIĆ JOVAN
+KRNJAJIĆ MILOŠ
+KRNJAJIĆ MIROSLAV
+KRNJAJIĆ RADOMIR
+KRNJEŠEVAC SAVA
+KRNJETA LEPOSAVA
+KRNJETA NOVAK
+KRNJETIN ŽIVKO
+KRNJETIN BRANKO
+KRNJETIN DRAGAN
+KRNJETIN JOVAN
+KRNJETIN KATICA
+KRNJETIN MAJA
+KRNJETIN MIKA
+KRNJETIN SAVA
+KRNJIĆ IVAN
+KRNJULAC DUŠAN
+KRNOJELAC DANILO
+KROŠLAK STEVAN
+KROMBHOLC EMIL
+KROMHOLC KARLO
+KROMPIĆ LJILJANA PROFESOR
+KROMPIĆ LJUBICA
+KROMPIĆ MILAN
+KROMPIĆ STANKO
+KRONAVETER ALFRED
+KRONIĆ LAZAR
+KRONIĆ MILENKO
+KRONJA IVAN
+KRONJA IVAN
+KRONJA MILANKA
+KROPŠ HILDA
+KROPAČEK IVAN
+KROPF ANĐELKA
+KROPF FRANJA
+KRPAN ŽELJKO
+KRPAN IVAN
+KRPAN LJILJANA
+KRPAN MIRKO
+KRPAN STEVAN
+KRSMANOVIĆ BOŽIDARKA
+KRSMANOVIĆ BOGDANKA
+KRSMANOVIĆ BRANKO
+KRSMANOVIĆ CVIJAN
+KRSMANOVIĆ JOVAN
+KRSMANOVIĆ KRSMAN DIPL ING
+KRSMANOVIĆ LAZAR
+KRSMANOVIĆ LJILJANA
+KRSMANOVIĆ MILOŠ
+KRSMANOVIĆ MOMČILO
+KRSMANOVIĆ OBREN
+KRSMANOVIĆ SAŠA
+KRSMANOVIĆ SLAVOJKA
+KRSMANOVIĆ SRETEN
+KRSMANOVIĆ VASA
+KRSNIK JON
+KRSNIK MARIJA
+KRSTAJIĆ MILOJICA
+KRSTAJIĆ PERKO
+KRSTANOVIĆ CVIJO
+KRSTANOVIĆ DRAGOMIR
+KRSTANOVIĆ FRANJA
+KRSTANOVIĆ IVANKA
+KRSTANOVIĆ KOSTA
+KRSTANOVIĆ MOMČILO
+KRSTANOVIĆ PETAR
+KRSTEKANIĆ ČEDOMIR
+KRSTEKANIĆ ANA
+KRSTEKANIĆ KRISTINA
+KRSTEKANIĆ RATOMIR
+KRSTEVSKI DRAGOSLAV
+KRSTEVSKI STANISLAV
+KRSTIĆ-ŠTIMAC SPASENIJA DR
+KRSTIĆ ŽARKO
+KRSTIĆ ŽIVAN
+KRSTIĆ ŽIVKO
+KRSTIĆ ŽIVKO
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ-ĐURČJANSKI RUŽENKA
+KRSTIĆ ALEKSANDAR DR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ANDRIJA
+KRSTIĆ ANICA
+KRSTIĆ BOŠKO
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOGDAN
+KRSTIĆ BORIVOJ
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANKA
+KRSTIĆ BRANKA
+KRSTIĆ BRANKO
+KRSTIĆ DANICA
+KRSTIĆ DESANKA
+KRSTIĆ DIMITRIJE
+KRSTIĆ DOBRILA
+KRSTIĆ DOBRILA
+KRSTIĆ DOBRINKA
+KRSTIĆ DOBROSLAV
+KRSTIĆ DRAGAN
+KRSTIĆ DRAGINJA
+KRSTIĆ DRAGOLJUB
+KRSTIĆ DRAGOSLAV
+KRSTIĆ DRAGUTIN
+KRSTIĆ DUŠAN DIPL ING
+KRSTIĆ DUŠAN
+KRSTIĆ DUŠKO
+KRSTIĆ ETELKA
+KRSTIĆ EVICA
+KRSTIĆ GAVRA
+KRSTIĆ-GUNEK MARIJA
+KRSTIĆ ILIJA
+KRSTIĆ IVAN DR
+KRSTIĆ JELENA
+KRSTIĆ JELENA
+KRSTIĆ JORDAN
+KRSTIĆ JOVAN
+KRSTIĆ JOVAN
+KRSTIĆ JOVAN
+KRSTIĆ KAMENKO
+KRSTIĆ KAMENKO
+KRSTIĆ KATICA
+KRSTIĆ KATICA
+KRSTIĆ KATICA
+KRSTIĆ KORNELIJA
+KRSTIĆ LAZAR
+KRSTIĆ LAZAR
+KRSTIĆ LJILJANA
+KRSTIĆ LJILJANA
+KRSTIĆ LJUBIŠA
+KRSTIĆ LJUBIŠA
+KRSTIĆ LJUBICA
+KRSTIĆ LJUBINKA
+KRSTIĆ LJUBISAV
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ MARIJA
+KRSTIĆ MARIJA
+KRSTIĆ MARIJA
+KRSTIĆ MARKO
+KRSTIĆ MILADIN
+KRSTIĆ MILAN
+KRSTIĆ MILAN
+KRSTIĆ MILAN
+KRSTIĆ MILENKO
+KRSTIĆ MILENKO
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILOŠ
+KRSTIĆ MILOŠ
+KRSTIĆ MILOJKO
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILOVAN
+KRSTIĆ MILOVAN
+KRSTIĆ MILOVAN
+KRSTIĆ MINČE DIPL ING
+KRSTIĆ MIODRAG
+KRSTIĆ MIODRAG
+KRSTIĆ MIODRAG
+KRSTIĆ MIRKO
+KRSTIĆ MIRKO
+KRSTIĆ MIROLJUB
+KRSTIĆ MIROLJUB
+KRSTIĆ MIROSLAVA
+KRSTIĆ MIROSLAVA
+KRSTIĆ MIROSLAV
+KRSTIĆ MITAR
+KRSTIĆ NADA
+KRSTIĆ NEBOJŠA
+KRSTIĆ NENAD
+KRSTIĆ NENAD
+KRSTIĆ NIKOLA
+KRSTIĆ NIKOLA
+KRSTIĆ NIKOLA
+KRSTIĆ NOVAK
+KRSTIĆ NOVAK
+KRSTIĆ PETAR DIPL ING
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETRUN
+KRSTIĆ RADISAV
+KRSTIĆ RADIVOJ
+KRSTIĆ RADIVOJ
+KRSTIĆ RADOJE
+KRSTIĆ RADOMIR
+KRSTIĆ RADOMIR
+KRSTIĆ RADOSAV
+KRSTIĆ RADOSLAV
+KRSTIĆ RADOVAN
+KRSTIĆ RATKO
+KRSTIĆ RATKO
+KRSTIĆ SAVA
+KRSTIĆ SAVETA
+KRSTIĆ SINIŠA
+KRSTIĆ SLAVICA
+KRSTIĆ SLOBODAN
+KRSTIĆ SRĐAN
+KRSTIĆ SRETEN
+KRSTIĆ STANKO
+KRSTIĆ STANOJE
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STOJANKA
+KRSTIĆ SVETISLAV
+KRSTIĆ SVETISLAV
+KRSTIĆ SVETLANA
+KRSTIĆ SVETLANA
+KRSTIĆ SVETOZAR
+KRSTIĆ TINKA
+KRSTIĆ UGLJEŠA DR
+KRSTIĆ VASA DR LEKAR
+KRSTIĆ VASA
+KRSTIĆ VASILIJE DIPL ING
+KRSTIĆ VASILIJE
+KRSTIĆ VELIMIR
+KRSTIĆ VELJKO
+KRSTIĆ VERA
+KRSTIĆ VERA
+KRSTIĆ VESELIN
+KRSTIĆ VLADA
+KRSTIĆ VOJIN
+KRSTIĆ-VRŽINA BOSANKA
+KRSTIĆ VUKICA
+KRSTIĆ ZORAN
+KRSTIĆ ZORAN
+KRSTIN ŽIVKA
+KRSTIN BRANKO
+KRSTIN IVAN
+KRSTIN JELKA
+KRSTIN KOSTA
+KRSTIN LAZAR
+KRSTIN MLADEN
+KRSTIN NATAŠA
+KRSTIN PETAR
+KRSTIN SLAVKO
+KRSTIN STEVAN
+KRSTIN SVETOZAR
+KRSTIN VERA
+KRSTIN VLADAN
+KRSTIN ZORAN
+KRSTINIĆ DRAGAN
+KRSTONOŠIĆ ŽIVAN
+KRSTONOŠIĆ BOSILJKA
+KRSTONOŠIĆ JELENA
+KRSTONOŠIĆ JOVAN
+KRSTONOŠIĆ LJUBICA
+KRSTONOŠIĆ MILANKA
+KRSTONOŠIĆ MILENKO
+KRSTONOŠIĆ MILENKO
+KRSTONOŠIĆ MIROSLAV
+KRSTONOŠIĆ NADA
+KRSTONOŠIĆ NESTOR
+KRSTONOŠIĆ PETAR
+KRSTONOŠIĆ PETAR
+KRSTONOŠIĆ STEVAN
+KRSTONOŠIĆ VERA
+KRSTONOŠIĆ VIDA
+KRSTONOŠIĆ ZLATA DR
+KRSTONOŠIĆ ZORA
+KRSTOVSKI RADOJKA
+KRTENIĆ BRANKO
+KRTENIĆ DOBRILA
+KRTENIĆ PAVLE
+KRTINIĆ BORA
+KRTINIĆ DANE
+KRTINIĆ DANE
+KRTINIĆ MIRJANA
+KRTINIĆ MIRKO
+KRTINIĆ MIROSLAV
+KRTINIĆ NADA
+KRTINIĆ SAVA
+KRTINIĆ SMILJANA
+KRTINIĆ VLADIMIR
+KRUČIČAN MILAN
+KRUŠKA ĐORĐE
+KRUŠKA STEVAN
+KRUŽEVIĆ DEJAN
+KRUŽEVIĆ NENAD
+KRUŽEVIĆ VLADIMIR
+KRUŽEVIĆ ZDRAVKO
+KRUŽEVIĆ ZORAN
+KRUŽIĆ ANA
+KRULJ BRANISLAVA
+KRULJ MILAN
+KRUNIĆ ŽIVAN
+KRUNIĆ ŽIVORAD
+KRUNIĆ ĐORĐE
+KRUNIĆ ĐORĐE
+KRUNIĆ ĐORĐE
+KRUNIĆ-BELIĆ MILANA
+KRUNIĆ BRANKO
+KRUNIĆ BRANKO
+KRUNIĆ BRANKO
+KRUNIĆ DARA
+KRUNIĆ DRAGOLJUB
+KRUNIĆ DRAGOMIR
+KRUNIĆ GRADIMIR
+KRUNIĆ ILIJA
+KRUNIĆ ILONKA
+KRUNIĆ JELENA
+KRUNIĆ LJUBIŠA
+KRUNIĆ LJUBICA
+KRUNIĆ LJUBOMIR
+KRUNIĆ MIĆO
+KRUNIĆ MIKA
+KRUNIĆ MILANKA
+KRUNIĆ MILAN
+KRUNIĆ MILOŠ
+KRUNIĆ NOVAK
+KRUNIĆ PAVLE
+KRUNIĆ PERIŠA
+KRUNIĆ PLEMENKA
+KRUNIĆ RADOJKA
+KRUNIĆ SLOBODAN
+KRUNIĆ SOFIJA
+KRUNIĆ TOŠICA
+KRUNIĆ UROŠ
+KRUNIĆ VELIČKO
+KRUNIĆ VERICA
+KRUNIĆ ZDRAVKO
+KRUPEŽEVIĆ DARINKA
+KRUPEŽEVIĆ PRVOSLAV
+KRUPLJANIN STANA
+KRUPLJANIN VESELA
+KRUTA BOŽANA
+KRUTA DRAGAN
+KRVAVAC BISERKA
+KRVAVICA DRAŽEN
+KRVAVICA TOMISLAV
+KRVOPIĆ OLGA
+KRZMANOVIĆ MARGARETA
+KRZNARIĆ MILE
+KRZNARIĆ VALENTINA
+KUČ SLOBODAN
+KUČERA ALEKSANDAR
+KUČERA STEVAN
+KUČIĆ NIKOLA
+KUČMAŠ IRENA
+KUČMAŠ NATAŠA
+KUČMAŠ NIKOLA
+KUČNER LADISLAV
+KUŠAKOVIĆ SMILJA
+KUŠLIĆ MILAN
+KUŠLJAN SLAVKO
+KUŠLJIĆ BORISLAV
+KUŠLJIĆ BORISLAV
+KUŠLJIĆ BORIS
+KUĆ STANKA
+KUŽATKO ANICA
+KUŽATKO EMIL
+KUŽATKO MARTA
+KUŽATKO VLADIMIR
+KUŽELKA SIMA
+KUŽETIN BOŽA
+KUŽETIN JELISAVETA
+KUŽETIN MARA
+KUŽETIN MILAN
+KUŽETIN NOVAK
+KUŽEVSKI MILIVOJE
+KUŽIĆ DRAGUTIN
+KUŽIĆ MLADEN
+KUŽIĆ MLADEN
+KUŽIĆ PETAR
+KUBANJI ANA
+KUBANOVI ZLATKO
+KUBAT MILAN DIPL ING
+KUBAT UROŠ
+KUBATOVIĆ ANA
+KUBATOVIĆ ILIJA
+KUBEČKA MILAN
+KUBET MILAN
+KUBIČELA PETAR
+KUBIČKO FERENC
+KUBICA STJEPAN
+KUBICA VERA
+KUBIK FRANCIŠKA
+KUBINJEC JOSIP
+KUBURIĆ MIĆO
+KUBURIĆ NOVKA
+KUBURIĆ SVETOZAR
+KUCULOVIĆ DANICA
+KUCULOVIĆ VOJISLAV
+KUCURAC DIMITRIJE
+KUCURAC MARA
+KUCURAC NADEŽDA
+KUCURAC STEVAN
+KUCURSKI ĐURICA
+KUCURSKI DRAGOMIR
+KUCURSKI RADISLAV
+KUDIĆ MILOSAVA
+KUDIĆ STEVA
+KUDRA DANIJELA
+KUDRA OLGA
+KUDRA-ZIKOVIĆ LJUBICA
+KUDRIĆ DESIMIR
+KUGA JOVAN
+KUGIĆ ILIJA
+KUGIĆ RADMILA
+KUGIĆ SAVKA
+KUGLI IMRE
+KUGLI JOSIP
+KUGLI MIHAJLO
+KUGLI MIHALJ
+KUGLI PAVAO
+KUGLI ROŽIKA
+KUGLI STEVAN
+KUHAJDA ŠANDOR
+KUHAJDA KSENIJA MR
+KUHAJDA VLADIMIR MR
+KUHAJDA ZLATA
+KUHAR JELENA
+KUHAR JOVAN
+KUHAR SLAVICA
+KUJAČIĆ DRAGAN
+KUJOVIĆ NEDA
+KUJOVIĆ SOFIJA
+KUJUNDŽIĆ LUJZA
+KUJUNDŽIĆ MIODRAG
+KUJUNDŽIĆ TOMANIJA
+KUJUNDŽIĆ VERA
+KUKAVICA JORDAN
+KUKAVICA MIRKO
+KUKAVICA RUŽICA
+KUKAVSKI PAVLE
+KUKIĆ ŽARKO
+KUKIĆ BRANKA
+KUKIĆ DRAGAN
+KUKIĆ GOJKO
+KUKIĆ GORDANA
+KUKIĆ JELICA
+KUKIĆ JELKA
+KUKIĆ MILAN
+KUKIĆ MILOJKA
+KUKIĆ MIRJANA
+KUKIĆ MIRKO
+KUKIĆ NEBOJŠA
+KUKIĆ NIKOLA
+KUKIĆ PETAR
+KUKIĆ SLOBODAN
+KUKIĆ STEVAN
+KUKIĆ SVETOZAR
+KUKIĆ VERA
+KUKIĆ VLADIMIR
+KUKIĆ ZORAN
+KUKIĆ ZORAN
+KUKIĆ ZVONIMIR
+KUKIN ŽIVAN
+KUKIN ALEKSANDAR
+KUKIN DEJAN
+KUKIN SMILJKA
+KUKLA IVAN
+KUKOČ VINKO
+KUKOBAT RADOVAN
+KUKOLJ DANE
+KUKOLJ DRAGAN
+KUKOLJ DUŠKO
+KUKOLJ MILKA
+KUKOLJ MIRJANA
+KUKOLJ RADMILA
+KUKOLJ RAJKO
+KUKOVSKI JOVAN
+KUKRIKA BOŠKO
+KUKUČKA JAN
+KUKUČKA MIHAJLO
+KUKULJ DOBRILA
+KUKUROV JOSIF
+KUKURUZOVIĆ JELENA
+KUKURUZOVIĆ VLADIMIR
+KULČAR IŠTVAN
+KULAČANIN ANICA
+KULAČANIN BRANISLAV
+KULAČANIN MILENKO
+KULAČANIN NADA
+KULAČIĆ ZVONIMIR
+KULAČIN ĐURO
+KULAČIN BUDIMKA
+KULAČIN DUŠAN
+KULAČIN SLAVKO
+KULAČKI MITAR
+KULAŠ MARKO
+KULAŠ SLOBODAN
+KULAŠEVIĆ ZLATA
+KULAŠINOVIĆ ANĐELKA
+KULAŠINOVIĆ DANICA
+KULAŠINOVIĆ DUŠICA
+KULAŠINOVIĆ MILAN
+KULAŠINOVIĆ MILIVOJ
+KULAUZOV ARKADIJE
+KULAUZOV JOVANKA
+KULAUZOV MILENKO DR
+KULEŠEVIĆ OLIVERA
+KULEŠEVIĆ PETAR
+KULEŠKO DRAGOSLAVA
+KULENOVIĆ AHMED
+KULENOVIĆ ZORAN
+KULEVSKI KATICA
+KULEVSKI ROŽA
+KULEVSKI ROŽA
+KULIŠIĆ NEDA
+KULIŠIĆ OLGA
+KULIŠIĆ SLAVOLJUB
+KULIĆ DARINKA
+KULIĆ JOVAN
+KULIĆ JOVO
+KULIĆ LAZAR
+KULIĆ NEBOJŠA
+KULIĆ RADIVOJ
+KULIĆ VLADIMIR
+KULIDŽAN DRAGUTIN
+KULIDŽAN NEMANJA
+KULIDŽAN VASO DR
+KULJAČA ILIJA
+KULJAČA PETAR
+KULJAK MARIJA
+KULJANČIĆ DUŠAN
+KULJANČIĆ JULKA
+KULJANČIĆ MILENA
+KULJANČIĆ NIKOLA
+KULJANČIĆ SAVO
+KULJANČIĆ VERA
+KULJANIN JAKOV
+KULJANKIĆ MURADIF
+KULJANSKI OLGA
+KULJANSKI SLAVKO
+KULJIŠ SLOBODAN
+KULJIĆ BISERKA
+KULJIĆ DRAGOSLAV
+KULJIĆ LAZAR
+KULJIĆ LJUBOMIR
+KULJIĆ MIRJANA
+KULJIĆ NEDELJKO
+KULJIĆ NIKOLA
+KULJIĆ PETAR
+KULJIĆ SAVO
+KULJIĆ-SMUĐA MAGDALENA
+KULJIĆ ZDRAVKO
+KULKA GRETA
+KULPINČEVIĆ ĐORĐE
+KULPINČEVIĆ JOVO
+KULPINSKI DUŠAN
+KULPINSKI MIRJANA
+KULPINSKI STEVAN
+KULPINSKI VUJADIN
+KUMANOV ŽIVAN
+KUMANOV BOŽIDAR
+KUMANOVIĆ MIODRAG
+KUMAZEC LAZA
+KUMOVIĆ BRANKA
+KUMOVIĆ MILICA
+KUMOVIĆ SAVO
+KUN ĐURA
+KUN ALEKSANDAR
+KUN BELA
+KUN DANICA
+KUN EDITA
+KUN ERNE
+KUN LASLO
+KUN STEVAN
+KUNČAKOVA MARIJA
+KUNARAC ANIELA
+KUNDAČINA JOVO
+KUNDAČINA RADOVAN
+KUNDAČINA SAVO
+KUNIĆ ĐORĐE
+KUNIĆ GORDANA
+KUNIĆ VESELINKA
+KUNOSIĆ NEDŽAD
+KUNOSIĆ OSMAN
+KUNOVAC LJUBO
+KUNST IREN
+KUNSTMAN ANASTASIJA
+KUPEK ŽELJKA
+KUPEK ZORICA
+KUPIROVIĆ SOFIJA
+KUPREŠAK DANILO
+KUPREŠAK VIDA
+KUPREŠANIN BILJANA
+KUPREŠANIN ILIJA
+KUPREŠANIN MILE DIPL ING
+KUPREŠKI JOCA
+KUPREŠKI VERA
+KUPUSAREVIĆ BRANISLAV
+KUPUSINAC BRANISLAV
+KUPUSINAC VELJKO
+KURČUBIĆ DRAGIĆ
+KURČUBIĆ MELANIJA
+KURŠUMOVIĆ AVDULAH
+KURAJIĆ JOVAN
+KURAN IVAN
+KURANJI JAN
+KURANJI JAN
+KURBALIJA ĐORĐE
+KURBALIJA DANICA
+KURBALIJA JOVAN
+KURBALIJA LAZAR
+KURBALIJA MIRJANA
+KURBATFINSKI FEĐA DIPL ING
+KURBATFINSKI IVAN
+KURBATFINSKI SLAVKO
+KURBATFINSKI VLADIMIR
+KURBATVINSKI DINA
+KURBATVINSKI IVAN
+KURBATVINSKI STEVAN
+KURBATVINSKI ZORA
+KURCINAK EMIL
+KURCINAK IMRE
+KURCINAK JOSIP
+KURCINAK LAJOŠ
+KURCINAK PAVLE
+KURCINAK STEVAN
+KURCINAK VESNA
+KURDI AMALIJA
+KURDOVSKI MITAR
+KURDULIĆ MILOŠ
+KUREŠEVIĆ RACKO
+KUREŠEVIĆ SAVO
+KUREKAŠ MITAR
+KUREPA VASA
+KURIŠ ŠTEFAN
+KURIDŽA BOGDAN
+KURIDŽA DUŠAN
+KURIJ TOMISLAV
+KURIJA VELJKO
+KURIKŠA ANTONINA
+KURILA JANOŠ
+KURILIĆ JOVO
+KURILIĆ MILAN
+KURILIĆ MILOŠ
+KURILIĆ MIROSLAV
+KURIN ĐORĐE
+KURIN JOSIP
+KURJAČKI ŽIVKO
+KURJAČKI ĐORĐE
+KURJAČKI ĐURĐINA
+KURJAČKI ANKICA
+KURJAČKI DANICA
+KURJAČKI JOVAN
+KURJAČKI MIHAJLO
+KURJAČKI MILAN
+KURJAČKI MILEVA
+KURJAČKI MILEVA
+KURJAČKI MILICA
+KURJAČKI MILIVOJ
+KURJAČKI MIODRAG
+KURJAČKI MIRJANA
+KURJAČKI MIRJANA
+KURJAČKI SREDOJE
+KURJAČKI STANKO
+KURJAČKI STEVAN
+KURJAČKI SVETOZAR
+KURJAČKI ZORA
+KURJAKOV ĐORĐE
+KURJAKOV DANILO
+KURJAKOV DRAGAN
+KURJAKOV MILAN
+KURJAKOV MILIVOJ
+KURJAKOV ROKSANDA
+KURJAKOV VIKTORIJA
+KURS ĐORĐE
+KURTA AZIS
+KURTEŠ JASNA
+KURTEŠ LAZAR
+KURTEŠ MARA
+KURTEŠ SVETKO
+KURTEŠI FUAT
+KURTEŠI NUSRET
+KURTEŠI ZENUN
+KURTI MUSTAFA
+KURTI NEZIR
+KURTIŠEVIĆ NASUF
+KURTIĆ ALEKSANDAR
+KURTIĆ BRANISLAVA
+KURTIĆ MILOVAN
+KURTINOVIĆ PREDRAG
+KURTOVIĆ ANA
+KURTOVIĆ IVAN
+KURTUŠIĆ IVANKA
+KURUČEV MARIJA
+KURUČEV MIRJANA
+KURUČEV SLOBODAN
+KURUČKI KAMENKO
+KURUČKI VLADIMIR
+KURUČKI ZLATIMIR
+KURUŠIĆ BORO
+KURUC ĐULA
+KURUC ĐULA
+KURUC IGNAC
+KURUC IRENA
+KURUC JANOŠ
+KURUC JOVO
+KURUC LAJOŠ
+KURUC LASLO
+KURUC NANDOR
+KURUC TIBOR
+KURUC VINKA
+KURUCA BOŽA
+KURUCA JOVAN
+KURUCIĆ DRAGAN
+KURUCIĆ LJUBICA
+KURUCIĆ SINIŠA
+KURUCIĆ VITOMIR
+KURUCIN ŽIVANA
+KURUNCI ANDRIJA
+KURUNCI JOŽEF
+KURUNCI JOŽEF
+KURUNCI MARIJA
+KURUZOVIĆ TATJANA
+KUSIĆ SRETKO
+KUSLI FERENC
+KUSLI GEZA
+KUSMUK DARINKA
+KUSTIĆ SOFIJA
+KUSTUDIJA DANICA
+KUSTUDIJA MIROSLAV
+KUSTUDIJA SLOBODAN
+KUSTURIĆ NIKOLA
+KUSTURIĆ SELIMIR
+KUSTURICA HASAN
+KUSTURICA NAZIF
+KUSTURIN ANTUN
+KUSTURIN MIRJANA
+KUSUROVIĆ ANKICA
+KUTIJEVAC LJUBICA
+KUTLAČA MARKO
+KUTLEŠIĆ LJUBIŠA
+KUTLEŠIĆ LJUBIŠA
+KUTRI KARLO
+KUTRI KAROLJ
+KUTRI STEVAN
+KUTRIČKI ZORAN
+KUTUZOV MILORAD
+KUTUZOV MIROSLAV
+KUVALJ STEVAN
+KUVALJA DRAGAN
+KUVALJA DRAGOLJUB
+KUVALJA KATICA
+KUVALJA OSTOJA
+KUVEKALOVIĆ RADOSLAV
+KUVEKALOVIĆ STRAIN
+KUVELJIĆ ŽARKO
+KUVELJIĆ LJILJANA
+KUVELJIĆ RADIVOJE
+KUVELJIĆ RADOMAN
+KUVIZIĆ ŽIVOJIN
+KUVIZIĆ ŽIVOJIN
+KUZEVSKI DRAGAN
+KUZMAN ANKA
+KUZMAN BOGDAN
+KUZMAN BOGDAN
+KUZMAN BORISLAV
+KUZMAN DIMITRIJE
+KUZMAN DRAGAN
+KUZMAN MILAN
+KUZMAN MILOVAN
+KUZMAN MIRKO
+KUZMAN NADA
+KUZMAN NADA
+KUZMAN NADA
+KUZMAN NADEŽDA
+KUZMAN PETAR
+KUZMAN RISTO
+KUZMAN SLAVICA
+KUZMANČEV ALEKSANDAR
+KUZMANČEV DIMITRIJE
+KUZMANČEV DUŠAN
+KUZMANČEV OLIVERA DR
+KUZMANČEV TIMOŠENKO
+KUZMANOV BORISLAV
+KUZMANOV MARIJA
+KUZMANOV OBRAD
+KUZMANOV OBRAD
+KUZMANOV RADOŠ DIPL ING
+KUZMANOV RADOSLAV
+KUZMANOV SAVA
+KUZMANOV SLAVKO
+KUZMANOV SVETISLAV
+KUZMANOV TANASIJE
+KUZMANOV ZORAN
+KUZMANOVIĆ ČEDOMIR
+KUZMANOVIĆ ŽIVOJIN
+KUZMANOVIĆ ĐORĐE
+KUZMANOVIĆ ĐURA
+KUZMANOVIĆ ALEKSANDAR
+KUZMANOVIĆ ANGELINA
+KUZMANOVIĆ BOŠKO
+KUZMANOVIĆ BOGDAN
+KUZMANOVIĆ BOGDAN
+KUZMANOVIĆ BORISLAV
+KUZMANOVIĆ BRANISLAVA
+KUZMANOVIĆ BRANISLAV
+KUZMANOVIĆ DANICA
+KUZMANOVIĆ DARINKA
+KUZMANOVIĆ DEJAN
+KUZMANOVIĆ DRAGINJA
+KUZMANOVIĆ DRAGOMIR
+KUZMANOVIĆ DRAGUTIN
+KUZMANOVIĆ DRAGUTIN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠKO
+KUZMANOVIĆ GORAN
+KUZMANOVIĆ JELENA
+KUZMANOVIĆ JOVAN
+KUZMANOVIĆ JOVAN
+KUZMANOVIĆ KATA
+KUZMANOVIĆ LAZAR
+KUZMANOVIĆ LAZAR
+KUZMANOVIĆ LAZO
+KUZMANOVIĆ LENKA
+KUZMANOVIĆ LJILJANA
+KUZMANOVIĆ LJUBIŠA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBOMIR
+KUZMANOVIĆ MILAN
+KUZMANOVIĆ MILAN
+KUZMANOVIĆ MILENA
+KUZMANOVIĆ MILENKO
+KUZMANOVIĆ MILE
+KUZMANOVIĆ MILJOJKO DIPL ING
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MIODRAG
+KUZMANOVIĆ MIRJANA
+KUZMANOVIĆ MLADEN
+KUZMANOVIĆ NADA
+KUZMANOVIĆ NADEŽDA
+KUZMANOVIĆ NENAD
+KUZMANOVIĆ NEVENA
+KUZMANOVIĆ NIKOLA
+KUZMANOVIĆ NIKOLA
+KUZMANOVIĆ PAJA
+KUZMANOVIĆ PETAR
+KUZMANOVIĆ PETAR
+KUZMANOVIĆ PREDRAG
+KUZMANOVIĆ RADIVOJ
+KUZMANOVIĆ RADIVOJ
+KUZMANOVIĆ RADOJKO
+KUZMANOVIĆ RADOSAV
+KUZMANOVIĆ RADOSLAV
+KUZMANOVIĆ RAJKO
+KUZMANOVIĆ SLAVKO
+KUZMANOVIĆ SLAVKO
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SPOMENKA
+KUZMANOVIĆ STOJAN
+KUZMANOVIĆ STOJAN
+KUZMANOVIĆ TODOR
+KUZMANOVIĆ TODOR
+KUZMANOVIĆ VASILIJE
+KUZMANOVIĆ VASILIJE
+KUZMANOVIĆ VERA
+KUZMANOVIĆ VERA
+KUZMANOVIĆ VLASTIMIR
+KUZMANOVIĆ VOJISLAV
+KUZMANOVIĆ ZDRAVKO
+KUZMANOVIĆ ZORAN
+KUZMANOVIĆ ZORA
+KUZMANOVSKI BLAGOJA
+KUZMANOVSKI CVETA
+KUZMANOVSKI DUŠAN
+KUZMANOVSKI MILE
+KUZMANOVSKI PERE
+KUZMANOVSKI RADOJKA
+KUZMANOVSKI TASE
+KUZMANOVSKI TRAJČE
+KUZMIĆ MILKA
+KUZMIĆ ZVONKO
+KUZMINAC BORISLAV
+KUZMINAC GORDANA
+KUZMINAC PETAR
+KUZMINAC PREDRAG
+KUZMINAC RADOSLAV
+KVAŠČEV JOVAN
+KVAŠČEV MIRA
+KVAŠČEV RADIVOJ
+KVAIĆ ĐORĐE
+KVAIĆ DUŠAN
+KVAIĆ JELENA
+KVAIĆ MILEVA
+KVRGIĆ BOŠKO
+KVRGIĆ MILAN
+KVRGIĆ PETAR
+KVRGIĆ RADOVAN
+KVRGIĆ SAVO
+KVRGIĆ TOMISLAV
+LAČANSKI DESANKA
+LAČOK KARLO
+LAČOK KAROLJ
+LAŠKOV IGOR DIPL ING
+LAĆAK ĐURA
+LAĆAK MIHALJ
+LAĆANSKI VOJISLAV
+LAĆARAC ŽARKO
+LAĆARAC BILJANA
+LAĆARAC BORISLAV
+LAĆARAC DOBRIVOJE
+LAĆARAC JOVAN
+LAĆARAC MAKSIM
+LAĆARAC NIKOLA
+LAĆARAC NIKOLA
+LAĆARAC NIKOLA
+LAĆARAC TEODOR
+LAĆARAC VERA
+LAĆARAK ŽARKO
+LAĆARAK LAZAR
+LAĆARAK LAZA
+LAĆARAK MILOŠ
+LAĆARAK MLADEN
+LAĆARAK OGNJANKA
+LAŽEGIĆ NEVENKA
+LAŽETIĆ ALEKSANDAR
+LAŽETIĆ MARIJA DR
+LAĐEVAC DUŠAN
+LAĐEVIĆ DRAGAN
+LAĐEVIĆ GOJKO
+LAĐEVIĆ JOVAN
+LAĐINOVIĆ ŽIKA
+LAĐINOVIĆ ZLATKO
+LABAŠ IVAN
+LABADI JOŽEF
+LABAN JULKA
+LABAN MIRKO
+LABAT ANA
+LABAT ANKA
+LABAT JAN
+LABAT KVETOSLAVA
+LABAT RUŽENA
+LABAT STEVAN
+LABAT VERA
+LABAT VLADIMIR
+LABAT VLADISLAV
+LABAVIĆ IVAN
+LABOVIĆ BOŽIDAR
+LABOVIĆ MANOJLO
+LABROVIĆ MIRKO
+LABUDOVIĆ BORIS
+LABUDOVIĆ HELENA
+LABUDOVIĆ ROZALIJA
+LABUDOVIĆ VLADIMIR
+LABUS ĐURO
+LABUS BOŽIDAR
+LABUS BRANKO
+LABUS ILIJA
+LABUS JOVAN
+LABUS LJUBOMIR
+LABUS MAKEDONKA
+LABUS MILAN
+LABUS MILAN
+LABUS MILAN
+LABUS MILAN
+LABUS MILE
+LABUS NIKOLA
+LABUS SLAVKO
+LACIK JANOŠ
+LACIK SLAVICA
+LACKO MIHAJLO
+LACKOVIĆ DRAGIŠA
+LACKOVIĆ JOSIP
+LACKOVIĆ RADE
+LACKOVIĆ RADOVAN
+LACKOVIĆ SOFIJA
+LACKOVIĆ STANIMIR
+LACKOVIĆ ZLATKO
+LACKOVIĆ ZORAN
+LACMANOVIĆ MIODRAG
+LACMANOVIĆ SLAVOJKA
+LADAR MILOŠ
+LADAR STEVAN
+LADI IŠTVAN
+LADI LAJOŠ
+LADI MARIJA
+LADIŠIĆ ANTON
+LADIŠIĆ GUSTAV
+LADIŠIĆ JELISAVETA
+LADIŠIĆ JOSIP
+LADIŠIĆ MIRKO
+LADIŠIĆ NIKOLA
+LADIŠIĆ STEVAN
+LADIK ŠANDOR
+LADIK FERENC
+LADIK KATALIN
+LADIK KATALIN
+LADIK MARGITA
+LADIK MIRJANA
+LADIKA BLAŽ
+LADOCKI ANDRIJA
+LADOLEŽ ERŽEBET
+LADOLEŽ MILADIN
+LAGUMDŽIJA HAMID
+LAGUMDŽIJA MILENA
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN SVETOZAR
+LAGUNDŽIN ZORAN
+LAHARNAR LUCIJA
+LAHOŠ ĐORĐE
+LAHOŠ ANDRIJA
+LAHOŠ IŠTVAN
+LAINOVIĆ ALEKSA
+LAINOVIĆ BORISLAV
+LAINOVIĆ RANKO
+LAJŠIĆ STEVAN
+LAJŠIĆ ZORKA
+LAJH MARIJA
+LAJHTNER ANTAL
+LAJHTNER FRANJA
+LAJHTNER NIKOLA DIPL ING
+LAJIĆ ŠTEFKA
+LAJIĆ BRANKO
+LAJIĆ DRAGAN
+LAJIĆ DRAGOLJUB
+LAJIĆ LJILJANA
+LAJIĆ MIRKO
+LAJIĆ RAJKO
+LAJIĆ STANA
+LAJIĆ ZDRAVKO
+LAJKO ŠANDOR
+LAJKO JOSIP
+LAJKO LAJOŠ DIPL ING
+LAJKO MARIJA
+LAJKO STEVAN
+LAJKO VERA
+LAJOŠ LASLO
+LAJTER ELZA
+LAJTER GIZELA
+LAJTER IVAN
+LAJTIH SIGFRID
+LAKATOŠ AMALIJA
+LAKATOŠ ANA
+LAKATOŠ ANDRAŠ
+LAKATOŠ DRAGICA
+LAKATOŠ GIZA
+LAKATOŠ IMRE
+LAKATOŠ IMRE
+LAKATOŠ IMRE
+LAKATOŠ JASMINKA
+LAKATOŠ JELENA
+LAKATOŠ LAJOŠ
+LAKATOŠ MIHAJLO
+LAKATOŠ MILICA
+LAKATOŠ NADA
+LAKATOŠ PAVLE
+LAKATOŠ STEVAN
+LAKATOŠ TIBOR
+LAKATOŠ VERA
+LAKATOŠ VILMOŠ
+LAKATOŠ ZOLTAN
+LAKATOŠ ZOLTAN
+LAKATUŠ BRANISLAV
+LAKETA BOŽO
+LAKETIĆ LJUBOMIR
+LAKETIĆ MILAN
+LAKETIĆ MILIVOJ
+LAKIČEVIĆ NADA
+LAKIČEVIĆ-STOJAČIĆ SNEŽANA
+LAKIĆ ANĐA
+LAKIĆ ANĐELKA
+LAKIĆ BOGOSAV
+LAKIĆ BRANKO DR LEKAR
+LAKIĆ BRANKO
+LAKIĆ BRANKO
+LAKIĆ DANILO
+LAKIĆ ILIJA
+LAKIĆ JOLAN
+LAKIĆ MARKO
+LAKIĆ MIRA
+LAKIĆ MIRJANA
+LAKIĆ MLADEN
+LAKIĆ MOMIR
+LAKIĆ NIKOLA
+LAKIĆ RADIVOJE
+LAKIĆ RADIVOJ
+LAKIĆ RADIVOJ
+LAKIĆ RADMILA
+LAKIĆ RAJKO
+LAKIĆ SAVA DR
+LAKIĆ SLOBODAN
+LAKIĆ SMILJA
+LAKIĆ SPASOJE
+LAKIĆ SRĐAN
+LAKIĆ SRĐAN
+LAKIĆ SRĐAN
+LAKIĆ STEVAN
+LAKIĆ SVETISLAV
+LAKIĆ TOMISLAV
+LAKIĆ VELIMIR
+LAKIĆ VESNA
+LAKIĆ VUČETA
+LAKIĆ ZORICA
+LAKIĆEVIĆ MILIJA
+LAKIĆEVIĆ SVETLANA
+LAKIĆEVIĆ VASO
+LAKIĆEVIĆ VESNA
+LAKIĆEVIĆ VUKSAN DR
+LAKLIJA STEVAN
+LAKO MARIJA
+LAKOBRIJA DRAGAN
+LAKOBRIJA DUŠAN
+LAKOBRIJA ILIJA
+LAKOBRIJA JELENA
+LAKOBRIJA MILAN
+LAKOBRIJA MILAN
+LAKOBRIJA MILOŠ
+LAKOBRIJA MILOŠ
+LAKOBRIJA NIKOLA
+LAKOVIĆ BUDIMIR
+LAKOVIĆ DUŠKO
+LAKOVIĆ MILIĆ
+LAKOVIĆ MILORAD
+LAKOVIĆ PETAR
+LAKOVIĆ ROZALIJA
+LAKOVIĆ VASILJKA
+LALATOVIĆ DESANKA
+LALATOVIĆ DRAGUTIN
+LALATOVIĆ SLOBODANKA
+LALATOVIĆ VASILIJE
+LALIČIĆ VELIMIR
+LALIĆ ŽIVA
+LALIĆ ĐORĐE
+LALIĆ ANKICA
+LALIĆ ARKADIJE
+LALIĆ BOGDAN
+LALIĆ GLIGORIJE
+LALIĆ GOJKO
+LALIĆ GORDANA
+LALIĆ IKONIJA
+LALIĆ JAGODA
+LALIĆ JULIJANA
+LALIĆ JULKA
+LALIĆ LJUBOMIR
+LALIĆ MARIJA
+LALIĆ MILADINKA
+LALIĆ MILAN
+LALIĆ MILICA
+LALIĆ MIRKO
+LALIĆ NENAD
+LALIĆ NIKOLA
+LALIĆ RADOMIR DR
+LALIĆ SREDOJE
+LALIĆ TAMARA
+LALIĆ TODOR
+LALIĆ UGLJEŠA
+LALIĆ VASILIJE
+LALIN ALEKSANDAR
+LALIN MILAN
+LALOŠEVIĆ ALEKSANDAR
+LALOŠEVIĆ ALEKSANDAR
+LALOŠEVIĆ DIMITRIJE
+LALOŠEVIĆ DUŠAN
+LALOŠEVIĆ DUŠKO
+LALOŠEVIĆ FEMKA
+LALOŠEVIĆ JELISAVETA
+LALOŠEVIĆ JOVAN
+LALOŠEVIĆ KATICA
+LALOŠEVIĆ LAZAR
+LALOŠEVIĆ MARA
+LALOŠEVIĆ MIKA
+LALOŠEVIĆ STEVAN
+LALOŠEVIĆ STEVA
+LALOŠEVIĆ VASA
+LALOŠEVIĆ VLADIMIR
+LALOŠEVIĆ VLADIMIR
+LALOVIĆ JANKO
+LALOVIĆ MARKO
+LALOVIĆ MIRJANA
+LALOVIĆ NADA
+LALOVIĆ RADIVOJE
+LALOVIĆ SUZANA
+LALOVIĆ VERA
+LAMBETA PEKO
+LAMBIĆ BRANISLAV
+LAMBIĆ JOVO
+LAMBIĆ OLIVERA
+LAMPRET KRISTIJAN
+LANČUŠKI EMILKA
+LANC FRANJA
+LANC MARIJA
+LANCOŠ ANA
+LANCOŠ NENAD
+LANCOŠ SVETOZAR
+LANCOŠ TOMISLAV
+LANDEKA ANTONIJE
+LANG ATILA
+LANG DRAGICA
+LANG JOSIP
+LANG MIRJANA
+LANG VALERIJA
+LANJI ANDRAŠ
+LANJI STEVAN
+LANKOVSKI PECO
+LANKOVSKI TOMČE
+LAPČEVIĆ DRAGICA
+LAPČEVIĆ MILICA
+LAPČEVIĆ MILUTIN
+LAPČEVIĆ PAJA
+LAPČEVIĆ VUKOSAVA
+LAPČIĆ MILAN
+LAPADAT HORTENZIJA
+LAPADAT SORIN
+LAPADAT VASILIJE
+LAPAJNE MILAN
+LAPO JOVAN
+LAPU ANDRAŠ
+LARKIN STEVAN
+LASIĆ TOMISLAV
+LASIĆ ZVONKO
+LASIĆ ZVONKO
+LASICA BUDIMIR
+LASICA DRAGUTIN
+LASICA ILIJA
+LASICA MILAN
+LASICA MILAN
+LASICA MILENKO
+LASICA MIROSLAV
+LASICA UROŠ
+LASICA VELJKO
+LASICA ZDRAVKO
+LASICA ZLATA
+LASICA ZORA
+LASKOV DOBRE
+LASKOVIĆ BRANKA
+LASKOVIĆ DANILO
+LASKOVIĆ DRAGAN
+LASLO ETELKA
+LASLO FERENC
+LASLO FRANJA
+LASLO FRANJA
+LASLO ILONA
+LASLO JOŽEF
+LASLO JOSIP
+LASLO JOVAN
+LASLO LASLO
+LASLO MIKLOŠ
+LASLO MILENA
+LASLO TIBOR
+LASLO VERA
+LASLOVSKI TEREZA
+LASTIĆ ALEKSANDAR
+LATAK NANDOR
+LATAL MARJAN
+LATAL SLAVICA
+LATAL STEVAN
+LATAL VERA
+LATAL ZAGORKA
+LATAS ŽIVKA
+LATAS LAZAR
+LATAS MARKO
+LATAS MILADIN
+LATAS MILAN
+LATAS PETAR
+LATAS SAVA DR STOMATOLOG
+LATAS ZORA
+LATIŠKO UROŠ
+LATIĆ ISAK
+LATIĆ RADIVOJ
+LATINČIĆ BORISLAV
+LATINČIĆ DANICA
+LATINČIĆ GRUJA
+LATINČIĆ NIKOLA
+LATINČIĆ RUŽA
+LATINKIĆ STEVAN
+LATINKIĆ VINKA
+LATINKOVIĆ RADOMIR
+LATINOVIĆ ŽARKO
+LATINOVIĆ ĐUJA
+LATINOVIĆ BOŽO
+LATINOVIĆ DRAGAN
+LATINOVIĆ DRAGAN
+LATINOVIĆ ERIKA
+LATINOVIĆ ILIJA
+LATINOVIĆ JOVAN
+LATINOVIĆ JOVAN
+LATINOVIĆ LAZA
+LATINOVIĆ LJUBA
+LATINOVIĆ MACA
+LATINOVIĆ MARINKO
+LATINOVIĆ MILENKO
+LATINOVIĆ MILORAD
+LATINOVIĆ MIRKO
+LATINOVIĆ NEĐO
+LATINOVIĆ NEDELJKO
+LATINOVIĆ NIKOLA
+LATINOVIĆ NIKOLA
+LATINOVIĆ PETAR
+LATINOVIĆ RADOMIR
+LATINOVIĆ RAJKO
+LATINOVIĆ SAVO
+LATINOVIĆ SLOBODANKA
+LATINOVIĆ SLOBODAN
+LATINOVIĆ SLOBODAN
+LATINOVIĆ SMILJA
+LATINOVIĆ SVETOZAR
+LATINOVIĆ ZORKA
+LATKOVIĆ ŽELJKO
+LATKOVIĆ JOVAN
+LATKOVIĆ JOVO
+LATKOVIĆ MILE
+LATKOVIĆ VUJO
+LATKOVSKI RISTO
+LATO JASNA
+LATOVLJEV ZAGORKA
+LAUŠ DIMITRIJE
+LAUŠ VLADIMIR
+LAUŠEV DRAGANA
+LAUŠEV JOCA
+LAUŠEV LJUBINKA
+LAUŠEV MIRJANA
+LAUŠEV TOŠA
+LAUŠEV VELIMIR
+LAUŠEV VOJISLAV
+LAUŠEVIĆ ŽIVAN
+LAUŠEVIĆ ŽIVKA
+LAUŠEVIĆ ŽIVKA
+LAUŠEVIĆ BRANISLAV
+LAUŠEVIĆ DRAGOJE
+LAUŠEVIĆ DRAGUTIN
+LAUŠEVIĆ PAVLE
+LAUŠEVIĆ RADOJICA
+LAUŠEVIĆ VESELIN
+LAUŠEVIĆ ZITA
+LAUŠIN BRANISLAV
+LAUBERT VLADISLAVA
+LAUS ANA
+LAUS KATARINA
+LAUTAREVIĆ DRAGAN
+LAUTERER ĐENĐI
+LAUTERER LASLO
+LAVAČ JOŽEF
+LAVAČ LASLO
+LAVIČKA KARLO
+LAVRNIĆ KSENIJA
+LAVRNIĆ KSENIJA
+LAVRNIĆ MILOŠ
+LAVRNIĆ RADIVOJ
+LAVRNJA LAZAR
+LAVRNJA MILKAN
+LAZA JON
+LAZA TEODORA
+LAZANSKI ANA
+LAZANSKI BRANISLAV
+LAZANSKI GORDANA
+LAZANSKI GORDANA
+LAZAR ĐULA
+LAZAR ELENA
+LAZAR JULIA
+LAZAR JULIJA
+LAZAR KATALIN
+LAZAR LADISLAV
+LAZAR PAVLE
+LAZAR SIMA
+LAZAR STJEPAN
+LAZAR VLADIMIR
+LAZAREV ĐOKA
+LAZAREV ANA
+LAZAREV ANDRIJA
+LAZAREV JOVAN
+LAZAREV VERA
+LAZAREVIĆ ČEDA
+LAZAREVIĆ ŽIVKA
+LAZAREVIĆ ŽIVOTA
+LAZAREVIĆ ĐORĐE
+LAZAREVIĆ BOŠKO
+LAZAREVIĆ BORISLAV
+LAZAREVIĆ BRANKO
+LAZAREVIĆ BRANKO
+LAZAREVIĆ DANILO
+LAZAREVIĆ DARINKA
+LAZAREVIĆ DIMITRIJE
+LAZAREVIĆ DOBROSAV
+LAZAREVIĆ DRAGIŠA
+LAZAREVIĆ DRAGOMIR
+LAZAREVIĆ JADVIGA
+LAZAREVIĆ JELENA
+LAZAREVIĆ JELENA
+LAZAREVIĆ LAZAR
+LAZAREVIĆ LJUBOMIR
+LAZAREVIĆ LJUBO
+LAZAREVIĆ MANDA
+LAZAREVIĆ MILADINKA
+LAZAREVIĆ MILAN
+LAZAREVIĆ MILAN
+LAZAREVIĆ MILIVOJE
+LAZAREVIĆ MILORAD
+LAZAREVIĆ MILORAD
+LAZAREVIĆ MILUN
+LAZAREVIĆ MILUTIN
+LAZAREVIĆ NIKOLA
+LAZAREVIĆ SAVA
+LAZAREVIĆ SMILJA
+LAZAREVIĆ STANIŠA
+LAZAREVIĆ STANOJE
+LAZAREVIĆ STEVAN
+LAZAREVIĆ STEVAN
+LAZAREVIĆ SVETISLAV
+LAZAREVIĆ VELIMIR
+LAZAREVIĆ VESNA
+LAZAREVIĆ VIDAN
+LAZAREVIĆ VLADIMIR
+LAZAREVIĆ VOJISLAV
+LAZAREVIĆ ZORAN DR LEKAR
+LAZAREVIĆ ZORAN
+LAZAREVSKI ĐORĐE
+LAZAREVSKI DRAGOLJUB
+LAZAREVSKI SLAVKO
+LAZAROV VESELIN
+LAZAROV ZORAN
+LAZAROVSKI DRAGAN
+LAZENDIĆ LAZAR
+LAZENDIĆ NIKOLA
+LAZIČIĆ BRANKO
+LAZIČIĆ STANIJA
+LAZIĆ ŽARKO
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVKO
+LAZIĆ ŽIVOJIN
+LAZIĆ ŽIVORAD
+LAZIĆ ĐORĐE DIPL ING
+LAZIĆ ANĐELKA
+LAZIĆ ANDRIJA
+LAZIĆ BOŠKO
+LAZIĆ BOŽIDAR
+LAZIĆ BRANISLAVA
+LAZIĆ BRANISLAVA
+LAZIĆ BRANISLAV
+LAZIĆ BRANISLAV
+LAZIĆ BRANISLAV
+LAZIĆ BRANKA DR
+LAZIĆ BUDIMIR
+LAZIĆ DAMJANKA
+LAZIĆ DEJAN DIPL ING
+LAZIĆ DEJAN
+LAZIĆ DRAGANA
+LAZIĆ DRAGAN
+LAZIĆ DRAGA
+LAZIĆ DRAGICA
+LAZIĆ DRAGOLJUB
+LAZIĆ DRAGOMIR
+LAZIĆ DRAGO
+LAZIĆ DRAGUTIN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ EMIL DR LEKAR
+LAZIĆ GOJKO
+LAZIĆ GOROLJUB
+LAZIĆ GROZDANA
+LAZIĆ IVANA
+LAZIĆ JELISAVETA
+LAZIĆ JOCA
+LAZIĆ JOVANKA
+LAZIĆ JOVAN
+LAZIĆ JULKA
+LAZIĆ KATICA
+LAZIĆ KATICA
+LAZIĆ KATICA
+LAZIĆ KOSTADIN
+LAZIĆ KOSTA
+LAZIĆ LAZAR
+LAZIĆ LAZAR
+LAZIĆ LJUBAN
+LAZIĆ LJUBINKA
+LAZIĆ LJUBISAVA
+LAZIĆ LJUBOMIR
+LAZIĆ MARIJA
+LAZIĆ MARIJA
+LAZIĆ MARINKO
+LAZIĆ MARTA
+LAZIĆ MILADIN
+LAZIĆ MILADIN
+LAZIĆ MILADIN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILENA
+LAZIĆ MILENA
+LAZIĆ MILENKO
+LAZIĆ MILENKO
+LAZIĆ MILEVKA
+LAZIĆ MILICA
+LAZIĆ MILICA
+LAZIĆ MILICA
+LAZIĆ MILINKO
+LAZIĆ MILISAV PROFESOR
+LAZIĆ MILISAV
+LAZIĆ MILIVOJ
+LAZIĆ MILOŠ
+LAZIĆ MILORAD
+LAZIĆ MIODRAG
+LAZIĆ MIRA
+LAZIĆ MIRJANA
+LAZIĆ MIRKO
+LAZIĆ MIROLJUB
+LAZIĆ MIROSLAV
+LAZIĆ MLADEN
+LAZIĆ NADA
+LAZIĆ NADA
+LAZIĆ NADA
+LAZIĆ NADEŽDA
+LAZIĆ NAJDAN
+LAZIĆ NEVENA
+LAZIĆ NIKOLA DIPL ING
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ OBREN
+LAZIĆ PAJA
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PIROŠKA
+LAZIĆ PIROŠKA
+LAZIĆ RADA
+LAZIĆ RADE
+LAZIĆ RADIŠA
+LAZIĆ RADIVOJ
+LAZIĆ RADMILA
+LAZIĆ RADOJKA
+LAZIĆ RADOJKO
+LAZIĆ RADOVAN
+LAZIĆ RAJKO
+LAZIĆ RODOLJUB
+LAZIĆ RUŽA
+LAZIĆ SANJA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SIMA DR
+LAZIĆ SLAVKO
+LAZIĆ SLOBODAN
+LAZIĆ SLOBODAN
+LAZIĆ SMILJA
+LAZIĆ SRBISLAV
+LAZIĆ STANIMIR
+LAZIĆ STANKO
+LAZIĆ STEVANKA
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STOJADIN
+LAZIĆ STOJAN
+LAZIĆ SVETOZAR
+LAZIĆ TEODOR
+LAZIĆ TRAJKO
+LAZIĆ VALERIJA
+LAZIĆ VASILIJE
+LAZIĆ VELINKA
+LAZIĆ VESELIN
+LAZIĆ VESNA
+LAZIĆ VLADIMIR
+LAZIĆ ZORAN
+LAZIĆ ZORICA
+LAZIĆ ZORICA
+LAZICANI ALJUŠ
+LAZIN BOGDAN
+LAZIN BRANKO
+LAZIN GOJKO
+LAZIN MIROSLAVA
+LAZIN NATALIJA
+LAZIN SAVA
+LAZIN SAVA
+LAZIN SINIŠA
+LAZIN SINIŠA
+LAZIN SLOBODAN
+LAZIN VOJIN
+LAZIN ZORICA
+LAZINICA RADOJKA
+LAZOR MIRON
+LAZOR NIKOLA
+LAZOV TRAJAN
+LAZOVA TRAJKA
+LAZOVIĆ ČEDO
+LAZOVIĆ BOŠKO
+LAZOVIĆ BOŽIDAR
+LAZOVIĆ DEJAN DIPL ING
+LAZOVIĆ DRAGAN
+LAZOVIĆ LAZAR
+LAZOVIĆ LJILJANA
+LAZOVIĆ MILENTIJE
+LAZOVIĆ MILETA
+LAZOVIĆ MILICA
+LAZOVIĆ MILOJICA
+LAZOVIĆ NENAD
+LAZOVIĆ RADOSAV
+LAZOVIĆ SAVICA
+LAZOVIĆ SLOBODAN
+LAZOVIĆ STANKO
+LAZOVIĆ STEVAN PROFESOR
+LAZOVIĆ SVETISLAV
+LAZOVIĆ VUJADIN
+LAZOVIĆ ZORAN
+LAZOVIĆ ZORAN
+LAZOVSKI SLAVČO
+LAZUKIĆ ČEDO
+LAZUKIĆ ANĐA
+LAZUKIĆ JOVO
+LAZUKIĆ KAĆA
+LAZUKIĆ MILAN
+LAZUKIĆ SLOBODAN
+LEČ ENDRE DR
+LEČ ERIH
+LEČAR JOSIP
+LEČAR KARLO
+LEČIĆ ČEDOMIR
+LEČIĆ DOBRILA
+LEČIĆ DOBROSAV
+LEČIĆ GOJKO
+LEČIĆ MILEVA
+LEČIĆ MILOVAN
+LEČIĆ NADA
+LEČIĆ NADA
+LEČIĆ SIMO
+LEČIĆ SPASOJE
+LEČIĆ VIDOSAVA
+LEČIĆ VLADIMIR
+LEŠČEŠEN EDVARD
+LEŠČEŠEN JELENA
+LEŠIĆ ĐURA
+LEŠIĆ STOJAN
+LEŠKIĆ ĐORĐE
+LEŠKIĆ VOJISLAV
+LEŠKOV JOVAN
+LEŠKOV MILAN
+LEŠKOV MIODRAG
+LEŠKOV OLGICA
+LEŠKOVIĆ ZLATKO
+LEŠNIK ZAGORKA
+LEŠTAR STEVAN
+LEŠTAR ZORICA
+LEŽAJIĆ VUKADIN
+LEŽAKOV ĐURĐICA
+LEŽAKOV MILAN
+LEŽIMIRAC ALEKSANDAR
+LEŽIMIRAC BRANKICA
+LEŽIMIRAC DOBRINKA
+LEŽIMIRAC SLOBODAN
+LEŽIMIRAC SLOBODAN
+LEŽIMIRAC SVETLANA
+LEŽIMIRAC VLADIMIR
+LEĐANA JELENA
+LEĐANAC ĐURĐINKA
+LEĐANAC BRANISLAVA
+LEĐANAC DRAGOMIR
+LEĐANAC EMILIJA
+LEĐANAC GAVRA
+LEĐANAC GORICA
+LEĐANAC JOVAN
+LEĐANAC MILAN
+LEĐANAC SEKULA
+LEĐANAC SEKULA
+LEĐANAC SLAVKO
+LEĐANAC STEVAN
+LEĐANAC STEVAN
+LEĐANAC VITOMIR
+LEĐANSKI BRANKA
+LEĐENAC DRAGAN
+LEĐENAC NADA
+LEĐENAC SLAVKO
+LEĐENAC STANIMIR
+LEĐENAC STRAHINJA
+LEBAR ZLATICA
+LEBER ZLATKO
+LEBL ARPAD DR PROFESOR
+LEBOVIĆ MARINKO
+LEBURIĆ VASILIJE
+LECKI ĐULA
+LECKI KRIŠTOF
+LECKOVIĆ EMIL
+LEDENKO ANTE MR
+LEDER EMINA
+LEDER OLGA
+LEGEN STOJAN
+LEGETIĆ BRANKA
+LEHOCKI ŠANDOR
+LEHOCKI FERENC
+LEHOTSKI KARLO
+LEHR DAVOR
+LEITNER NIKOLA
+LEKI ĐURA
+LEKI MARIJA
+LEKI STJEPAN
+LEKI TEREZIJA
+LEKIĆ ŽIVADIN
+LEKIĆ ĐORĐIJE
+LEKIĆ BOGDAN
+LEKIĆ BRANKA
+LEKIĆ BRANKO
+LEKIĆ DEJAN
+LEKIĆ DRAGOLJUB
+LEKIĆ DUŠAN
+LEKIĆ JORDAN
+LEKIĆ LJUBOMIR
+LEKIĆ LJUBOMIR
+LEKIĆ MILADIN
+LEKIĆ MILANKA
+LEKIĆ NEĐO
+LEKIĆ NIKOLA
+LEKIĆ SIMEVUN
+LEKIĆ STANKA
+LEKIĆ STEVAN
+LEKIĆ TATJANA
+LEKIĆ TEODOR
+LEKIĆ VESELKO
+LEKIĆ ZAGORKA
+LEKIĆ ZDRAVKO
+LEKIN LJUBICA
+LEKIN MILAN
+LEKIN MILAN
+LEKIN MILAN
+LEKIN ZDRAVKO
+LEKO ĐERĐ
+LEKO ALEKSANDAR
+LEKO BORISLAV
+LEKO MLADEN
+LEKOVIĆ DOBRILO
+LEKOVIĆ DRAGIŠA
+LEKOVIĆ MILOŠ
+LEKOVIĆ MIRKO
+LEKOVIĆ NOVAK
+LEKOVIĆ SLOBODANKA
+LEKOVIĆ TOMISLAV
+LEKOVIĆ VERICA
+LELEA TODOR
+LELEOVIĆ BORO
+LELIĆ ŽELJKO
+LELIĆ MAHMUT
+LELIĆ MARIJA
+LELIĆ MIRSAM
+LELIĆ ZUMRETA
+LELIK JANOŠ
+LELIK JENE
+LELOVIĆ RADE
+LEMAIĆ ŽELJKO
+LEMAIĆ SOFIJA
+LEMAJIĆ BRANKO
+LEMAJIĆ CECILIJA
+LEMAJIĆ KATICA
+LEMAJIĆ MARIJA
+LEMAJIĆ MILAN
+LEMAJIĆ MILAN
+LEMAJIĆ MIROSLAV
+LEMAJIĆ RADOJICA
+LEMAJIĆ SLOBODAN
+LEMAJIĆ VLADIMIR
+LEMHE JELISAVETA
+LEMIĆ BOSA
+LEMIĆ DRAGINJA
+LEMIĆ LAZAR
+LEMIĆ MILENKO
+LEMIĆ NEBOJŠA
+LEMIĆ VLADIMIR
+LEN PIROŠKA
+LENČA ANDRIJA
+LENČA KATA
+LENĐEL ĐURO
+LENĐEL JOVAN
+LENĐEL JOVAN
+LENĐEL KAROLJ
+LENĐEL MIHAJLO
+LENARD ARPAD
+LENARD PETAR
+LENART KATICA
+LENARTIĆ ĐORĐE
+LENATOV DUŠAN
+LENDIĆ JOSIP
+LENDVAJI ANDRIJA
+LENDVAJI JOŽEF
+LENDVAJI LJILJANA
+LENER ANDRAŠ
+LENER DEŽE
+LENERT ANTAL
+LENERT PETAR DR DOCENT
+LENERT STEVAN
+LENHARD JANOŠ
+LENKEŠ JOVAN
+LENKEŠ LASLO
+LEOVAC MILIVOJE
+LEOVAC VUKADIN
+LEPČEVIĆ MILETA
+LEPŠANOVIĆ LAZAR DR LEKAR
+LEPŠIĆ DRAGICA
+LEPAR ŠANDOR
+LEPAR JELICA
+LEPAR LADISLAV
+LEPEŠ LADISLAV
+LEPEŠ TIBOR DR PROF
+LEPHAFT PAL
+LEPIR ANĐELKA
+LEPIR BOSILJKA
+LEPIR MILORAD
+LEPIR VELIMIR
+LEPOŠA RUDOLF
+LEPOJEV BRANKO
+LEPOJEV SAVA
+LEPOJEV VASILIJE
+LEPOJEVIĆ ŽIVORAD
+LEPOJEVIĆ STANKO
+LEPORIS JAN
+LEPOTIĆ ŽIVAN
+LEPOTIĆ MILENKO
+LEPOTIĆ NIKOLA
+LEPOVIĆ MIKA
+LEPUŠA ZDENKO
+LER IVAN
+LERIĆ ERŽEBET
+LERIK ANDRAŠ
+LERIK IŠTVAN
+LERIK MIKLOŠ
+LERINC ANIKO
+LERINC DRAGOSLAV
+LERINC JANOŠ
+LERINC KARLO
+LERINC KATALIN
+LERINC LASLO
+LERINC LASLO
+LERINC LEO
+LERINC LEO
+LERO BOŽIDAR
+LERO VLADIMIR
+LESKOVAC ĐORĐE
+LESKOVAC DRAGAN
+LESKOVAC LJUBICA
+LESKOVAC MILAN
+LESKOVAC MILAN
+LESKOVAC MILETA
+LESKOVAC MLADEN PROFESOR
+LESKOVAC RADOMIR
+LESKOVAC STANKA
+LESKOVAC VLADIMIR DR
+LESKOVAC VOJISLAV
+LETAJEV ALEKSANDAR
+LETAJEV ALEKSANDAR
+LETAJEV MIHAJLO
+LETAJEV VLADIMIR
+LETIĆ ČEDO
+LETIĆ ŽARKO
+LETIĆ ŽIVA
+LETIĆ ŽIVKO DIPL ING
+LETIĆ ĐOKO
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ANICA
+LETIĆ ANICA
+LETIĆ ARIŠKO
+LETIĆ BOGDAN
+LETIĆ BORIVOJ
+LETIĆ BRANISLAV
+LETIĆ BRANISLAV
+LETIĆ BRANKA
+LETIĆ BRANKO
+LETIĆ DARINKA
+LETIĆ DRAGAN
+LETIĆ DRAGIŠA
+LETIĆ DRAGICA
+LETIĆ DUŠAN
+LETIĆ DUŠAN
+LETIĆ GAVRA
+LETIĆ GOJKO
+LETIĆ GORDANA DR
+LETIĆ IVAN
+LETIĆ JOVANKA
+LETIĆ JOVAN
+LETIĆ KOSTA
+LETIĆ LAZAR
+LETIĆ LAZAR
+LETIĆ LAZAR
+LETIĆ LJUBIŠA
+LETIĆ LJUBICA
+LETIĆ MARICA
+LETIĆ MARIJA
+LETIĆ MARIJA
+LETIĆ MARINKO
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILICA
+LETIĆ MILICA
+LETIĆ MILICA
+LETIĆ MILORAD
+LETIĆ MILORAD
+LETIĆ MILORAD
+LETIĆ MILOVAN
+LETIĆ MIODRAG
+LETIĆ MIROSLAV
+LETIĆ MIROSLAV
+LETIĆ NENAD
+LETIĆ NEVENA
+LETIĆ OLGA
+LETIĆ OLGA
+LETIĆ OLGICA
+LETIĆ PERA
+LETIĆ RADA
+LETIĆ RADE
+LETIĆ RADMILA
+LETIĆ SAVA
+LETIĆ SAVA
+LETIĆ SIMKA
+LETIĆ SLOBODAN
+LETIĆ STEVAN
+LETIĆ STEVAN
+LETIĆ STEVAN
+LETIĆ STOJAN LEKAR
+LETIĆ SVETISLAV
+LETIĆ SVETOZAR
+LETIĆ TODOR
+LETIĆ VERA
+LETIĆ VESNA
+LETIĆ VIDA
+LETIĆ VLADIMIR
+LETIĆ VLADISLAVA
+LETIĆ ZDRAVKO
+LETIĆ ZORAN
+LETIĆ ZORAN
+LETIĆ ZORAN
+LETIĆ ZORKA
+LETICA IVANA
+LETICA MILAN
+LETICA TOMISLAV
+LETO RUŽICA
+LETONAI JANOŠ
+LETONAI LASLO
+LEVA ILINKA
+LEVAI GABOR
+LEVAI KATALIN
+LEVAI NANDOR
+LEVAI STEVAN
+LEVAJAC VERA
+LEVAKOV MARA
+LEVAKOV SLOBODAN
+LEVAKOV VOJISLAV
+LEVARSKI MIHAJLO
+LEVATIĆ MATIJA
+LEVATIĆ MILKA
+LEVATIĆ MILKICA
+LEVENSKI TADEJ
+LEVI GORAN
+LEVI LEON
+LEVI VIKTOR
+LEVIĆ LJUBINKO
+LEVNAJIĆ DRAGAN
+LEVNAJIĆ MILKA
+LEVNAJIĆ MOMČILO
+LEZEČEV SINIŠA
+LIČANIN DRAGAN
+LIČANIN MARIJA
+LIČANIN SLAVKO
+LIČEN HOTIMIR
+LIČEN JOSIP DIPL ING
+LIČEN LJUDMILA
+LIČINA ĐORĐE
+LIČINA BRANKICA
+LIČINA DANILO
+LIČINA DMITAR
+LIČINA DRAGO
+LIČINA DUŠAN
+LIČINA LUKA
+LIČINA MARIJA
+LIČINA MILANKA
+LIČINA MILAN
+LIČINA MILE
+LIČINA PREDRAG
+LIČINA RADE
+LIČINA VELIBOR
+LIČINA ZORAN
+LIČINAR DRAGAN
+LIČINAR NEDELJKO
+LIČINAR SLAVKO
+LIČINAR STANKO
+LIČINIĆ DUŠAN
+LIČINIĆ NADA
+LIŠČIĆ VELINKA
+LIŠIĆ ĐURĐINKA
+LIŠIĆ MARICA
+LIŠKOVIĆ MIROSLAV
+LIŠKOVIĆ MIROSLAV
+LIBER STEVAN
+LIBRIĆ IVAN
+LIBRIĆ IVAN
+LIBRIĆ MARIJAN
+LIDLOF PIROŠKA
+LIDLOF RUDOLF
+LIDLOF ZOLTAN
+LIHTENTAL ANTAL
+LIHTENTAL ELIZABETA
+LIHVARČEK ANDRIJA
+LIKAVEC JAROMIR
+LIKAVEC KARLO DIPL ING
+LIKIĆ BORISLAV
+LIKIĆ BUDISLAV
+LIKODRIĆ MILOVAN
+LILČEV DARINKA
+LILI VERA
+LILIĆ ĐORĐE
+LILIĆ ALEKSANDAR DIPL ING
+LILIĆ MARIJANA
+LILIĆ MILENA
+LILIĆ MIODRAG
+LILIĆ SRBISLAV
+LILIĆ TATJANA
+LILIĆ VELIMIR
+LIMANI ŠAĆIR
+LIMANI MEMIŠ
+LIMANI NAZIF
+LIMANOVIĆ NAZIF
+LIMANOVSKI IBRAHIM
+LIMANOVSKI MUSAFET
+LIMBOCKI PETAR
+LIMBURGER JOŽEF
+LINDEMAN JELENA
+LINDEMAN RUDOLF
+LINDNER MARGIT
+LINIĆ DRAGAN
+LINJAK DRAGOMIR
+LINKO KOLOMAN
+LIPAI KORNEL
+LIPANOVIĆ GOJKO
+LIPNIČKI ZORICA
+LIPOTIĆ PETAR
+LIPOVAC DUŠAN
+LIPOVAC MATIJA
+LISIČIN NADA
+LISIČIN TOMISLAV
+LISIĆ MARICA
+LISICA MIHAJLO
+LISICA MIHAJLO
+LISICA MILOŠ ADVOKAT
+LISOV KATICA
+LISOV MILIMIR
+LISOV MIRKO
+LISOVAC ZORAN
+LISUL ALEKSANDAR
+LISUL MILKA
+LISULOV OLGA
+LISULOV RATOMIR
+LISULOV ZORAN
+LITAVSKI VLADIMIR
+LITNER JOVAN
+LITRIČIĆ GAVRA
+LITRIČIN BOGDAN
+LITRIČIN GENA
+LITRIČIN-VEBER BOGDANKA
+LITRIČIN VELIMIR
+LITVJAK PAVLE
+LITVJAK VLADIMIR
+LIVADA MILAN
+LIVADA MILOŠ
+LIVAJA JOZO
+LIVAJA JURE
+LIZATOVIĆ BRANKO
+LJAČEVIĆ BOŽIDAR
+LJAJIĆ TAIP
+LJALJIĆ ĐORĐE
+LJATIFI KADRI
+LJAVROŠKA PAVEL
+LJAVROŠKA PAVEL
+LJEŠEVIĆ LJILJANA DR
+LJEŠEVIĆ MARIJA
+LJEŠNJAK MIROLJUB
+LJEŠNJAK MOMČILO
+LJELJAK MEHO
+LJEPOJEVIĆ STEVAN
+LJIKAR EVGENIJE
+LJIKAR MIHAJLO DIPL ING
+LJIKAR VERONA
+LJIKAR VLADIMIR LEKAR
+LJILJAK LJILJANA
+LJILJAK MILAN
+LJILJAK MILAN
+LJILJAK MILENKO
+LJILJAK MILORAD
+LJILJAK MIODRAG
+LJILJAK MIRKO
+LJILJAK MIROSLAV
+LJILJAK NADA
+LJILJAK NADEŽDA
+LJILJAK PAJO
+LJILJAK SAVA
+LJILJAK SLAVKO
+LJILJAK VLADIMIR
+LJILJAK VLADO
+LJUŠTINA ŽIVAN
+LJUŠTINA ĐORĐE
+LJUŠTINA JELENA
+LJUŠTINA LJUBICA
+LJUŠTINA MILAN
+LJUŠTINA MILAN
+LJUŠTINA MILOVAN
+LJUŠTINA NIKOLA
+LJUŠTINA OLGA
+LJUŠTINA SOFIJA
+LJUŠTINA VOJKA
+LJUŠTINOV NADA
+LJUBAŠČIK ANTON
+LJUBANIĆ MARA
+LJUBANOVIĆ MILENKO
+LJUBANOVIĆ RADISLAV
+LJUBENKOVIĆ MILOVAN
+LJUBENKOVIĆ PETAR
+LJUBENKOVIĆ PETAR
+LJUBIČIĆ ŽARKO
+LJUBIČIĆ ŽARKO
+LJUBIČIĆ ŽIVKA
+LJUBIČIĆ ĐURĐINKA
+LJUBIČIĆ BLAŽO
+LJUBIČIĆ BORISLAV
+LJUBIČIĆ DANKO
+LJUBIČIĆ DARA
+LJUBIČIĆ DRAGUTIN
+LJUBIČIĆ JOVICA
+LJUBIČIĆ LAZAR
+LJUBIČIĆ LUKA
+LJUBIČIĆ MARIJAN
+LJUBIČIĆ MARINA
+LJUBIČIĆ MIHAJLO
+LJUBIČIĆ MILOŠ LOKAL
+LJUBIČIĆ MILOŠ
+LJUBIČIĆ MIROSLAVA
+LJUBIČIĆ MIROSLAV
+LJUBIČIĆ NADA
+LJUBIČIĆ NADA
+LJUBIČIĆ NEVENKA
+LJUBIČIĆ NIKOLA
+LJUBIČIĆ PETAR
+LJUBIČIĆ PETAR
+LJUBIČIĆ RADOSLAV
+LJUBIČIĆ RADOSLAV
+LJUBIČIĆ RATKO
+LJUBIČIĆ RELJA
+LJUBIČIĆ RUDOLF
+LJUBIČIĆ SLOBODAN
+LJUBIČIĆ STANKO
+LJUBIČIĆ STEVAN
+LJUBIČIĆ SUZANA
+LJUBIČIĆ TALINKA
+LJUBIČIĆ VLADIMIR
+LJUBIČIĆ ZORA
+LJUBIŠEVIĆ MILOŠ
+LJUBIŠIĆ BRANISLAV
+LJUBIŠIĆ MILANKO
+LJUBIŠIĆ PETAR
+LJUBIŠIĆ SUZANA
+LJUBIĆ ANĐELKA
+LJUBIĆ ANDRIJA
+LJUBIĆ IVAN
+LJUBIĆ JELENA
+LJUBIĆ MIRJANA
+LJUBIĆ NATALIJA
+LJUBIĆ PERO
+LJUBIĆ RAJKO
+LJUBIBRATIĆ EDO
+LJUBIBRATIĆ LEO
+LJUBINAC MILANKA
+LJUBINKOVIĆ ALEKSANDRA
+LJUBINKOVIĆ BOGOLJUB
+LJUBINKOVIĆ LENKA
+LJUBINKOVIĆ MARIJA
+LJUBINKOVIĆ MILANKO
+LJUBINKOVIĆ MILAN
+LJUBINKOVIĆ MILORAD
+LJUBINKOVIĆ PAVLE
+LJUBINKOVIĆ SAVA
+LJUBINKOVIĆ STEVAN
+LJUBINKOVIĆ VELIMIR
+LJUBISAVLJEVIĆ DANICA
+LJUBISAVLJEVIĆ MIŠA
+LJUBISAVLJEVIĆ MILAN
+LJUBISAVLJEVIĆ MILICA
+LJUBOJA DRENKA
+LJUBOJA MLADEN
+LJUBOJA SILVIJA
+LJUBOJEV BILJANA
+LJUBOJEV IVAN
+LJUBOJEV JELENA
+LJUBOJEV LAZAR
+LJUBOJEV MAJA
+LJUBOJEV PETAR MR
+LJUBOJEV RAJKO
+LJUBOJEVIĆ ČEDOMIR
+LJUBOJEVIĆ ANĐELIJA
+LJUBOJEVIĆ BORISLAV
+LJUBOJEVIĆ BRANKO
+LJUBOJEVIĆ DESIMIR
+LJUBOJEVIĆ DRAGICA
+LJUBOJEVIĆ ILIJA
+LJUBOJEVIĆ JOVAN
+LJUBOJEVIĆ JULKA
+LJUBOJEVIĆ KATICA
+LJUBOJEVIĆ KOSTA
+LJUBOJEVIĆ MARKO
+LJUBOJEVIĆ MARKO
+LJUBOJEVIĆ MIHAJLO
+LJUBOJEVIĆ MILENA
+LJUBOJEVIĆ MILICA
+LJUBOJEVIĆ MIRKO
+LJUBOJEVIĆ OSTOJA
+LJUBOJEVIĆ PETAR
+LJUBOJEVIĆ RUŽA
+LJUBOJEVIĆ RUŽICA
+LJUBOJEVIĆ SLAVKO
+LJUBOJEVIĆ SLOBODAN
+LJUBOJEVIĆ STEVAN
+LJUBOJEVIĆ TODOR
+LJUBOJEVIĆ VELJKO
+LJUBOJEVIĆ VLADIMIR
+LJUBOJEVIĆ VLADIMIR
+LJUBOJEVIĆ VOJISLAV
+LJUBOTIN JELENA
+LJUBOTIN RADOSLAV
+LJUBOTINA-BRKIĆ RAJNA
+LJUBOVIĆ MARINKO
+LJUBUŠČIK PETAR
+LJUKOVČANIN MIRJANA
+LJUKOVČANIN ZORICA
+LJUMOŽEVSKI JELENA
+LJUMOŽEVSKI MARIJA
+LJUMOVIĆ DANICA
+LJUTIĆ STANIKA
+LJUTVI RADIVOJ
+LOČKI JELISAVETA
+LOŠIĆ MILORAD
+LOŠIĆ MILORAD
+LOŠIĆ MITRA
+LOŠONC HENRIJETE
+LOBODA ANTUN
+LOBODA STEVAN
+LOC ANDRAŠ
+LOC JOŽEF
+LOCI IŠTVAN
+LODI GABOR
+LODI JELISAVETA
+LODI LASLO
+LOGUNOV ALEKSEJ DIPL ING
+LOJANIČIĆ RADIVOJE
+LOJANICA BOŠKO
+LOJNA IVAN
+LOJOVIĆ BOŽICA
+LOJOVIĆ OSTOJA
+LOJOVIĆ RANKO
+LOJPUR MILOVAN
+LOKAS DARKO
+LOKIĆ DANICA
+LOKIĆ JELENA
+LOKIĆ LJUBICA
+LOKIĆ MILOVAN
+LOKIĆ VERA
+LOLIĆ BOŠKO
+LOLIĆ DOBRINKA
+LOLIĆ MARIJA
+LOLIĆ MILAN
+LOLIĆ NEDELJKO
+LOLIĆ SLAVKA
+LOLIĆ TODOR
+LOLIN DEJAN
+LOLIN ZORICA
+LOMEN ELENA
+LOMIĆ MOMIR
+LOMIĆ RADOVAN
+LOMIĆ SLOBODAN
+LOMJANSKI ADAM
+LOMJANSKI STEVAN
+LOMOVIĆ BRATISLAV MR OEC I IURE
+LOMOVIĆ MIHAINA
+LOMOVIĆ MIHAINA
+LOMPAR DRAGAN
+LOMPAR MITAR
+LOMPAR PETAR
+LOMPAR SAVA
+LONČAR ČEDOMIR
+LONČAR ĐURO
+LONČAR BOŠKO
+LONČAR BOŽIDAR
+LONČAR BOJANA
+LONČAR BORIS
+LONČAR BRANISLAV
+LONČAR DRAGAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR GOJKO
+LONČAR GORDANA
+LONČAR ILIJA
+LONČAR JELICA
+LONČAR JOVAN
+LONČAR KOSTA
+LONČAR KSENIJA
+LONČAR LJUBICA
+LONČAR LJUBICA
+LONČAR LJUBICA
+LONČAR MARKO
+LONČAR MIHAJLO
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILENKO
+LONČAR MILE
+LONČAR MILE
+LONČAR MILORAD
+LONČAR MIRKO
+LONČAR MIRKO
+LONČAR NEDELJKO
+LONČAR NEVENKA
+LONČAR NIKOLA
+LONČAR NIKOLA
+LONČAR PANTELIJA
+LONČAR PREDRAG
+LONČAR RADE
+LONČAR RADOMIR
+LONČAR RADOMIR
+LONČAR SIMO
+LONČAR SLAVKO
+LONČAR SLOBODAN
+LONČAR-SREMČEV VERICA
+LONČAR STEVO
+LONČAR TATJANA
+LONČAR VELIMIR
+LONČAR VERA
+LONČAR VLADA
+LONČAR VLADIMIRKA DR
+LONČAR VUKAŠIN
+LONČAR ZDRAVKO
+LONČAR ZORAN
+LONČAREVIĆ ŽIVOTA
+LONČAREVIĆ IGNJAT
+LONČAREVIĆ MILAN
+LONČAREVIĆ PUNIŠA
+LONČAREVIĆ RADOVAN
+LONČAREVIĆ VITOMIR
+LONČARIĆ RADMILA
+LONČARSKI DRAGANA
+LONČARSKI DRAGIŠA
+LONČARSKI PREDRAG
+LONČARSKI SAVA
+LONČARSKI SREDOJE
+LONČINA MILJA
+LONČINA PREDRAG
+LONCIĆ BERISLAVA
+LONCIĆ RAJKO
+LOPATIN NIKOLA
+LOPIČIĆ ŠPIRO
+LOPIČIĆ BRANKO
+LOPIČIĆ BRANKO
+LOPIČIĆ JELICA
+LOPIČIĆ JOVAN
+LOPIČIĆ MIODRAG
+LOPIČIĆ OLGA
+LOPIČIĆ VESELIN
+LOPUŠANSKI DUŠICA
+LOPUŠINA ALEKSANDAR
+LOPUŠINA JELICA
+LORBEK JOSIP
+LOREK JOVAN
+LORENCIN MILAN
+LOTINA DRAGAN
+LOTINA MIROSLAV
+LOTINA SMILJA
+LOVČEVIĆ DARINKA
+LOVČEVIĆ DRAGOSLAV
+LOVČEVIĆ MILIĆ
+LOVČEVIĆ TOMISLAV
+LOVČEVIĆ VOJISLAV
+LOVAŠ ROZALIJA
+LOVADINOV SVETOZAR
+LOVAS IVAN
+LOVIĆ KUZMAN
+LOVRE ČEDO
+LOVRE DRAGAN
+LOVRE LJILJANA
+LOVRE MILOŠ
+LOVRE SAVO
+LOVRE SLAVKO
+LOVRE STEVAN
+LOVREKOVIĆ TOMISLAV
+LOVREKOVIĆ ZLATKO
+LOVREN SLAVKO
+LOVRENČIĆ KATICA
+LOVRENOVIĆ MIROSLAVA
+LOVRENSKI DUŠAN
+LOVRENSKI DUŠAN
+LOVRIĆ ŽELJKO
+LOVRIĆ ŽELJKO
+LOVRIĆ ĐURA
+LOVRIĆ DIVNA
+LOVRIĆ MARKO
+LOVRIĆ NIKOLA
+LOVRIĆ PETAR
+LOVRIĆ RAJKO
+LOVRIĆ RATKO
+LOVRIĆ SLAVKO
+LOVRIĆ SLAVKO
+LOVRIĆ STEVAN
+LOVRIĆ STEVAN
+LOVRIĆ TATJANA
+LOVRIĆ TRIVUN
+LOVRIN DARA
+LOVRIN DRAGAN
+LOZANČIĆ NIKO
+LOZANIĆ IVAN DIPL ING
+LOZANIĆ-PAVLOVIĆ ĐURĐINKA
+LOZANOV EMIL
+LOZANOV SAVA
+LOZIĆ JOSIP
+LOZIĆ KRSTA
+LOZIĆ KSENIJA
+LOZIĆ MIODRAG DIPL ING
+LOZIĆ TOMISLAV
+LOZJANIN NIKOLA
+LOZJANIN NIKOLA
+LOZJANIN NIKOLA
+LOZOVOJ LJUBICA
+LUČAK ZLATICA
+LUČAR MILADIN
+LUČAR MILAN
+LUČAR VERA
+LUČI ANICA
+LUČI IVAN
+LUČIĆ ČEDOMIR
+LUČIĆ ŽIVKO
+LUČIĆ ĐOKO
+LUČIĆ ĐORĐE
+LUČIĆ ĐURĐINA
+LUČIĆ ALEKSANDAR DR
+LUČIĆ ALEKSANDRA
+LUČIĆ BRANKO
+LUČIĆ DRAGAN
+LUČIĆ DRAGICA
+LUČIĆ DRAGINJA
+LUČIĆ DRAGUTIN
+LUČIĆ GEORGIJE
+LUČIĆ JELENA
+LUČIĆ JELICA
+LUČIĆ JOVAN MR
+LUČIĆ JOVAN
+LUČIĆ JOVAN
+LUČIĆ JOVICA
+LUČIĆ LAZO
+LUČIĆ LJUBAN
+LUČIĆ LJUBOMIR
+LUČIĆ LJUBO
+LUČIĆ MIHAJLO
+LUČIĆ MILAN
+LUČIĆ MILENKO
+LUČIĆ MILENKO
+LUČIĆ MILICA
+LUČIĆ MILIVOJE
+LUČIĆ MILOŠ
+LUČIĆ MILOJICA
+LUČIĆ MILOJKA
+LUČIĆ MILOMIR
+LUČIĆ MILOSAVA
+LUČIĆ MILUTIN
+LUČIĆ MIODRAG
+LUČIĆ MIRJANA
+LUČIĆ MIROSLAVA
+LUČIĆ MOMČILO
+LUČIĆ MOMIR
+LUČIĆ NADA
+LUČIĆ OBRAD
+LUČIĆ PANTA
+LUČIĆ PAVA
+LUČIĆ PETAR
+LUČIĆ PETKO
+LUČIĆ PETKO
+LUČIĆ RAJKO
+LUČIĆ RISTO
+LUČIĆ SLAVKO
+LUČIĆ SLAVNA
+LUČIĆ SOFIJA
+LUČIĆ SPASOJE
+LUČIĆ STEFANIJA
+LUČIĆ STEVAN
+LUČIĆ VASO
+LUČIĆ VLADO
+LUČIĆ VOJIN
+LUČIĆ ZDRAVKO
+LUŠINOVSKI DIMITRIJE
+LUŽAIĆ ĐORĐE
+LUŽAIĆ ĐORĐE
+LUŽAIĆ ANKA
+LUŽAIĆ BOŽICA
+LUŽAIĆ DUŠKO
+LUŽAIĆ JADRANKA
+LUŽAIĆ JULKA
+LUŽAIĆ MIRA
+LUŽAIĆ VLADIMIR
+LUŽAIĆ VLADIMIR
+LUŽAJIĆ ANKA
+LUŽAJIĆ JADRANKA
+LUŽAJIĆ MILENA
+LUŽAJIĆ NADA
+LUŽAJIĆ STANKO
+LUŽAJIĆ STANKO
+LUŽAJIĆ STOJAN
+LUŽANIN SVETOZAR
+LUBAŠČIK ANTAL
+LUBAŠČIK LASLO
+LUBARDA LJUBICA
+LUBARDA STEVAN
+LUBEN RANKO
+LUBEN SAVA
+LUBURIĆ ČEDOMIR
+LUBURIĆ DANILO
+LUBURIĆ MILORAD
+LUBURIĆ MILORAD
+LUBURIĆ MILOVAN
+LUBURIĆ MIODRAG
+LUBURIĆ MIRKO
+LUBURIĆ NADA
+LUBURIĆ RADOMIR
+LUBURIĆ RAJKO
+LUBURIĆ STANA
+LUBURIĆ STEVAN
+LUC JANOŠ
+LUC JULIJA
+LUCIĆ ŽIVOJIN
+LUCIĆ ALEKSANDRA
+LUCIĆ PETAR
+LUCIĆ RADIVOJ
+LUCKARŽ VLADIMIR
+LUDAJIĆ DUŠAN DIPL ING
+LUDAJIĆ VERA
+LUDOŠKI ANĐELKO
+LUDOŠKI KATICA
+LUDOŠKI LAZAR
+LUDOŠKI LAZAR
+LUDOŠKI LJUBICA
+LUDOŠKI LJUBOMIR
+LUDOŠKI MILENKO
+LUDOŠKI VELIMIR
+LUDROVAN STEVA
+LUGONJA LAZO
+LUGONJA PETAR
+LUGONJA RADIVOJ
+LUGONJA SAVA
+LUGONJA SLOBODAN
+LUGONJA VELJKO
+LUGONJA VIDOJE
+LUGUMERSKI DANICA
+LUINOVIĆ MILAN
+LUJANOV DRAGOSLAV
+LUJINOVIĆ MILAN
+LUJNOVIĆ BRANKA
+LUKAČ ŠANDOR
+LUKAČ ANDRAŠ
+LUKAČ ANKICA
+LUKAČ ARANKA
+LUKAČ BOŠKO
+LUKAČ BOŠKO
+LUKAČ BOŽIDAR
+LUKAČ BRANISLAV
+LUKAČ DANILO
+LUKAČ DRAGAN
+LUKAČ DRAGOSLAV DR
+LUKAČ FERENC
+LUKAČ FRANCIŠKA
+LUKAČ FRANJA
+LUKAČ GROZDA
+LUKAČ IGNJAT
+LUKAČ IVAN
+LUKAČ LAZAR
+LUKAČ MIHAJLO
+LUKAČ MIHAJLO
+LUKAČ MIHAJLO
+LUKAČ MILEVA
+LUKAČ NADEŽDA
+LUKAČ PETAR
+LUKAČ PETAR
+LUKAČ RADE
+LUKAČ SAVA
+LUKAČ SLOBODANKA
+LUKAČ SLOBODAN
+LUKAČ STEVAN
+LUKAČ SVETKO
+LUKAČ VELIMIR
+LUKAČEVIĆ LJUBIŠA
+LUKAČI JELISAVETA
+LUKAČI JULIJANA
+LUKAJIĆ LAZAR MR
+LUKAN ĐORĐE
+LUKAN VINCENC
+LUKANIĆ FRIĐEŠ
+LUKANIĆ STEVAN
+LUKATELI IVANKA
+LUKAVAC SMILJKA
+LUKAVAC ZORAN
+LUKEŠEVIĆ DRAGAN
+LUKENIĆ LJILJANA
+LUKETA RADMILA
+LUKIČIĆ BOGDAN DIPL ING
+LUKIČIĆ KATICA
+LUKIČIĆ RADA
+LUKIČIĆ SLOBODAN
+LUKIČIĆ SLOBODAN
+LUKIĆ ŽIVORAD
+LUKIĆ ŽIVORAD
+LUKIĆ ŽIVOTA
+LUKIĆ ĐURA
+LUKIĆ ĐURO
+LUKIĆ ALEKSANDAR
+LUKIĆ ALEKSANDAR
+LUKIĆ ALEKSANDAR
+LUKIĆ ANGELINA
+LUKIĆ BERTA
+LUKIĆ BOŠKO
+LUKIĆ BOŽIDAR
+LUKIĆ BOGOLJUB
+LUKIĆ BORIVOJE
+LUKIĆ BORO
+LUKIĆ BOSILJKA
+LUKIĆ CVETA
+LUKIĆ CVJETKO
+LUKIĆ DANE
+LUKIĆ DANE
+LUKIĆ DARINKA
+LUKIĆ DIMITRIJE
+LUKIĆ DOBRILA
+LUKIĆ DOBROSAV
+LUKIĆ DRAGAN
+LUKIĆ DRAGA
+LUKIĆ DRAGOJE
+LUKIĆ DRAGOSLAVA
+LUKIĆ DUŠANKA
+LUKIĆ DUŠAN
+LUKIĆ DUŠAN
+LUKIĆ-FUDERER JOLANKA
+LUKIĆ GROZDA
+LUKIĆ GRUJICA DIPL ING
+LUKIĆ ILIJA
+LUKIĆ ILIJA
+LUKIĆ ILIJA
+LUKIĆ IVAN
+LUKIĆ IVAN
+LUKIĆ IVAN
+LUKIĆ JADRANKA
+LUKIĆ JASMINA
+LUKIĆ JELENA
+LUKIĆ JELENA
+LUKIĆ JELENA
+LUKIĆ JELICA
+LUKIĆ JOVANKA
+LUKIĆ JOVAN
+LUKIĆ JOVAN
+LUKIĆ JOVAN
+LUKIĆ JOVO
+LUKIĆ JOVO
+LUKIĆ JULKA
+LUKIĆ KATARINA
+LUKIĆ KOSTA
+LUKIĆ KOSTA
+LUKIĆ LAZAR
+LUKIĆ LJILJANA
+LUKIĆ LJUBA
+LUKIĆ LJUBIŠA DR LEKAR
+LUKIĆ LJUBICA
+LUKIĆ LJUBOMIR
+LUKIĆ MARA
+LUKIĆ MARIJA
+LUKIĆ MARKO
+LUKIĆ MARKO
+LUKIĆ MARKO
+LUKIĆ MIĆA
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILE
+LUKIĆ MILIJA
+LUKIĆ MILKA
+LUKIĆ MILOŠ
+LUKIĆ MILORAD
+LUKIĆ MILORAD
+LUKIĆ MIODRAG
+LUKIĆ MIRJANA
+LUKIĆ MIRJANA
+LUKIĆ MIROSLAV
+LUKIĆ MIROSLAV
+LUKIĆ MOMČILO
+LUKIĆ NEVENA
+LUKIĆ NIKOLA
+LUKIĆ NIKOLA
+LUKIĆ NIKOLA
+LUKIĆ NOVKA
+LUKIĆ OBRAD
+LUKIĆ OLGA
+LUKIĆ OLGICA
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ RADOSAV
+LUKIĆ RADOSLAV
+LUKIĆ RADOVAN
+LUKIĆ RADOVAN
+LUKIĆ RAJKO
+LUKIĆ RISTO
+LUKIĆ RUŽA
+LUKIĆ RUŽA
+LUKIĆ SAVKA
+LUKIĆ SLOBODANKA
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SOFIJA
+LUKIĆ SOFIJA
+LUKIĆ STANA
+LUKIĆ STANIŠA
+LUKIĆ STANISLAV
+LUKIĆ STEVAN
+LUKIĆ STEVAN
+LUKIĆ-STEVIĆ LJILJANA
+LUKIĆ STEVO
+LUKIĆ STOJANKA
+LUKIĆ STOJAN
+LUKIĆ SVETLANA
+LUKIĆ TAMARA
+LUKIĆ TOMISLAV
+LUKIĆ TOMISLAV
+LUKIĆ VELIBOR DR
+LUKIĆ VELIBOR DR
+LUKIĆ VELIMIR
+LUKIĆ VELJKO
+LUKIĆ VERA
+LUKIĆ VERICA
+LUKIĆ VERONA
+LUKIĆ VERONIKA
+LUKIĆ VESELIN
+LUKIĆ VIDOSAVA
+LUKIĆ VLADIMIR DIPL ING
+LUKIĆ VLADIMIR
+LUKIĆ VOJIN
+LUKIĆ VUKOSAV
+LUKIĆ VUK
+LUKIĆ ZORAN
+LUKIĆ ZORAN
+LUKIĆ ZORAN
+LUKIĆ ZORKA
+LUKO ŠANDOR
+LUKO ANDRAŠ
+LUKOVAC ANICA
+LUKOVAC DRAGAN
+LUKOVAC MILAN
+LUKOVAC MILOVAN
+LUKOVIĆ DUŠAN
+LUKOVIĆ IVAN
+LUKOVIĆ JOVAN
+LUKOVIĆ MILAN
+LUKOVIĆ MILORAD
+LUKOVIĆ MILORAD
+LUKOVIĆ MILUTIN
+LUKOVIĆ SLAVKO
+LUKOVIĆ SLOBODANKA
+LUKOVIĆ VLADIMIR
+LULIĆ ANA
+LULIĆ ANTUN
+LULIĆ FRANJA
+LULIĆ IVAN MR
+LULIĆ IVAN
+LULIĆ MAJA
+LULIĆ MARKO
+LUNG DRAGAN
+LUNG STEVAN
+LUNGINOVIĆ MARIJA
+LUNGULOV MILIVOJ
+LUPŠIĆ JULIJANA
+LUPŠIĆ KORNEL
+LUPŠIĆ KORNEL
+LUPŠOR STELA
+LUPINSKI NINOSLAV
+LUPINSKI VLADIMIR
+LUPUC JELICA
+LUPUROV LAZA
+LUPUROVIN NEVENKA
+LUTKIĆ ŽIVKA
+LUTKIĆ ĐORĐE
+LUTKIĆ ALEKSANDRA
+LUTKIĆ LAZAR
+LUTKIĆ MILORAD
+LUTKIĆ STANKO
+LUTKIĆ STEVAN
+LUTKIĆ ZAGORKA
+LUTROV NADA
+LUVRADOV BLAGOJE
+MAČEK JOVAN
+MAČKIĆ BRANKO
+MAČKIĆ DRAGICA
+MAČKIĆ JANKO
+MAČKIĆ JANKO
+MAČKIĆ MILENA
+MAČKIĆ MILENKO
+MAČKIĆ MILEVKA
+MAČKIĆ MILIVOJ
+MAČKIĆ MILJKA
+MAČKIĆ MILOŠ
+MAČKIĆ NEDELJKO
+MAČKIĆ NENAD
+MAČKIĆ PETRA
+MAČKIĆ STEVO
+MAČKIĆ VASO
+MAČKIĆ VLADIMIR
+MAČKOVIĆ MILANA
+MAČKOVIĆ MILAN
+MAČKOVIĆ TOMA
+MAČUKAT GRGO
+MAČVANIN BOJANA DR LEKAR
+MAŠA ERŽEBET
+MAŠA MIHAJLO
+MAŠA VLADIMIR
+MAŠANOVIĆ ĐORĐE DIPL ING
+MAŠANOVIĆ ĐORĐIJE
+MAŠANOVIĆ BLAŽO
+MAŠANOVIĆ BOSILJKA
+MAŠANOVIĆ BRANISLAV
+MAŠANOVIĆ DRAGO
+MAŠANOVIĆ NIKOLA
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ ZORAN
+MAŠIĆ ŽARKO
+MAŠIĆ ŽIVAN
+MAŠIĆ BORIS
+MAŠIĆ DRAGAN
+MAŠIĆ DRAGIĆ
+MAŠIĆ IŠTVAN
+MAŠIĆ IMRE
+MAŠIĆ IVAN
+MAŠIĆ JOVAN
+MAŠIĆ KAROLJ
+MAŠIĆ MANDA
+MAŠIĆ MILAN DR
+MAŠIĆ MILINKO
+MAŠIĆ MILIVOJ
+MAŠIĆ MILJANA
+MAŠIĆ MILOJE
+MAŠIĆ MIRA
+MAŠIĆ MIRKO
+MAŠIĆ MIROSLAV
+MAŠIĆ NADA
+MAŠIĆ PETAR
+MAŠIĆ REŠAD
+MAŠIĆ SENKA
+MAŠIĆ SENKA
+MAŠIĆ SIMEON
+MAŠIĆ STEVAN
+MAŠIĆ TOMISLAV
+MAŠIĆ VERA
+MAŠIĆ VIKTOR
+MAŠIĆ VUČETA
+MAŠIREVIĆ GORDANA
+MAŠIREVIĆ STEVAN
+MAŠKOVIĆ NOVICA
+MAŠKOVIĆ ZORAN
+MAŠTRAPOVIĆ DRAGOLJUB
+MAŠULOVIĆ JASMINA
+MAŠULOVIĆ JOVANKA
+MAĆAŠ STEVAN
+MAĆAŠ VASA
+MAĆAŠEV ALEKSANDAR
+MAĆAŠEV BRANISLAV
+MAĆAŠEV DANILO
+MAĆAŠEVIĆ VLADIMIR
+MAĆEŠIĆ JOSIP
+MAĆEŠIĆ MIHAILO
+MAĆKO JOŽEF
+MAĆKO VILMOŠ
+MAŽIĆ ĐORĐE
+MAŽIĆ DRAGIŠA
+MAŽIĆ MIRA
+MAŽIĆ PETAR
+MAŽIĆ RUŽA
+MAŽIBRADA VASO
+MAŽIBRADA-VUGRIN MARTA DIPL ING
+MAĐAR BOŽIDAR
+MAĐAR ERŽEBET
+MAĐAR JOVAN
+MAĐAR JOVAN
+MAĐAR LADISLAV
+MAĐAR STEVAN
+MAĐAREVIĆ ALEKSANDAR
+MAĐAREVIĆ IVAN
+MAĐAREVIĆ KOSTA
+MAĐAREVIĆ MILE
+MAĐAREVIĆ MILOŠ
+MAĐAREVIĆ SPASOJE
+MAĐAREVIĆ ZORICA
+MAĐARI ANDOR
+MAĐISTOROV VLADIMIR
+MACAK PAVLE
+MACAK VLADIMIR
+MACANOVIĆ DUŠAN
+MACANOVIĆ JELENA
+MACANOVIĆ JEVROSIMA
+MACANOVIĆ JOVAN
+MACANOVIĆ MILOŠ
+MACANOVIĆ RATKO
+MACEDONIĆ BOGDAN DR
+MACEDONIĆ GORDANA
+MACEDONIĆ STANIMIR
+MACEDONIĆ VLADIMIR
+MACKO ĐURA
+MACKO ANA
+MACNER DAVOR
+MACURA ČEDO
+MACURA ĐORĐE
+MACURA DOBRINKA
+MACURA DRAGO
+MACURA LIDIJA
+MACURA MILOŠ
+MACURA MILORAD
+MACURA MIROSLAV
+MACURA PETAR
+MACURA TEODOR
+MACUT MILOŠ
+MADŽAR BORISLAV
+MADŽAR MILORAD
+MADŽAR MIRKO
+MADŽARAC ČEDOMIR
+MADŽARAC DUŠAN DIPL ING
+MADŽAREV DUŠAN
+MADŽAREV MILANKA
+MADŽAREVIĆ ŽIVORAD
+MADŽAREVIĆ ĐORĐE
+MADŽAREVIĆ BISERKA
+MADŽAREVIĆ MARKO
+MADŽAREVIĆ SAVA
+MADŽGALJ MILENKO
+MADŽGALJ SLOBODAN
+MADŽOVSKI SANDE
+MADAČI MARIJA
+MADACKI ANTAL
+MADACKI JAN
+MADACKI JOSIP
+MADACKI KARLO
+MADARAS ANDRAŠ
+MADARAS ARPAD
+MADARAS MAĆAŠ
+MADARAS MARIJA
+MADARAS ROZALIJA
+MADI ĐURICA
+MADI JOŽEF
+MADIĆ BOŽIDAR DIPL ING
+MADIĆ MARIJAN
+MADIĆ MILISAV
+MADONIĆ STJEPAN
+MADOV ILIJA
+MAGARAŠEVIĆ ANAMARIJA
+MAGARAŠEVIĆ BORIVOJ
+MAGARAŠEVIĆ KATARINA
+MAGARAŠEVIĆ MIRKO
+MAGARAŠEVIĆ NADA
+MAGDA KLARA
+MAGDALENIĆ VERJOV
+MAGDIĆ TOMISLAV
+MAGDU JON DIPL ING
+MAGDU LIA
+MAGDU RODIKA LEKAR
+MAGIĆ NIKOLA
+MAGLAJLIĆ SABRIJA
+MAGLIĆ JOVAN
+MAGLINSKI BORISLAV DIPL PRAVNIK
+MAGLOV ALEKSANDAR
+MAGLOV DRAGOLJUB
+MAGLOV DUŠAN
+MAGLOVSKI DUŠKO
+MAGLOVSKI JOSIP
+MAGLOVSKI MARGITA
+MAGLOVSKI MILICA
+MAGLOVSKI MIROSLAV
+MAGLOVSKI STEVAN
+MAGLOVSKI STEVAN
+MAGOČ FRANJA
+MAGOČ JULIJAN
+MAGOČ MIRONJ
+MAGOŠ ŠANDOR
+MAGOŠ JELISAVETA
+MAGOŠ JULIJANA
+MAGOŠ MARIJA
+MAGURA TOMA
+MAHĐIK ELENA
+MAHAČI JANOŠ
+MAHMUTI MAHMUT
+MAHMUTI ZUZANA
+MAHOVAC MILORAD
+MAICHER ĐORĐE
+MAJŠAI FERENC
+MAJŠAI KLARA
+MAJDANČEVIĆ MITAR
+MAJDANAC DRAGINJA
+MAJDANDŽIĆ JOZO
+MAJDANDŽIĆ PERICA
+MAJDANDŽIĆ PETAR
+MAJDEVAC ŽIVKO DR
+MAJDEVAC RADOVAN
+MAJER ŠANDOR
+MAJER EDUARD
+MAJER JANOŠ
+MAJER JOVAN
+MAJER KATICA
+MAJER MARIJA
+MAJER NIKOLA
+MAJER PETAR
+MAJER STEVAN
+MAJERSKI ŠTEFAN
+MAJETIĆ ANTON
+MAJETIĆ MARIJA
+MAJETIĆ NIKOLA
+MAJIĆ STEVAN
+MAJIĆ VESNA
+MAJIĆ ZORAN
+MAJIĆ ZORAN
+MAJIN EFIMIJA
+MAJIN MIODRAG
+MAJINSKI ZORA
+MAJKIĆ ALEKSANDRA
+MAJKIĆ BOGDAN
+MAJKIĆ BOGDAN
+MAJKIĆ DRAGAN
+MAJKIĆ ILIJA
+MAJKIĆ IVANKA
+MAJKIĆ JOCA
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MIROSLAV
+MAJKIĆ NIKOLA
+MAJKIĆ OBRAD
+MAJKIĆ RADE
+MAJKIĆ RADOJKA
+MAJKIĆ STOJANKA
+MAJKIĆ VELJKO
+MAJKIĆ VLADO
+MAJKIĆ ZDRAVKO
+MAJKIĆ ZORAN
+MAJKSNER ĐORĐE
+MAJOR ĐURA
+MAJOR ANA
+MAJOR FERENC DR ING
+MAJOR JOŽEF
+MAJOR JOŽEF
+MAJOR KAROLJ
+MAJOR KAROLJ
+MAJOR MARGITA
+MAJOR MARIJA
+MAJOR MARIJA
+MAJOR NANDOR
+MAJOR STEVAN
+MAJORČIK FRANJA
+MAJOROŠ BELA DR
+MAJOROŠ DEŽE
+MAJOROŠ JOVAN
+MAJOROŠ LAJOŠ
+MAJOROŠ STEVAN
+MAJOROŠ TEREZIJA
+MAJOROŠI-DEURA MARIJA
+MAJOROŠI IMRE
+MAJSKI JELICA
+MAJSKI JOVAN
+MAJSKI MILAN
+MAJSKI NIKOLA
+MAJSKI SLAVKO
+MAJSKI VESNA
+MAJSTORAC DRAGAN
+MAJSTORAC LJUBOMIR
+MAJSTORAC PETAR
+MAJSTORAC SAVO
+MAJSTOROV LJUBIŠA
+MAJSTOROV VLADIMIR
+MAJSTOROVIĆ ĐURAĐ
+MAJSTOROVIĆ ANĐA
+MAJSTOROVIĆ ANKA
+MAJSTOROVIĆ BOGDAN
+MAJSTOROVIĆ BORIVOJ
+MAJSTOROVIĆ BORIVOJ
+MAJSTOROVIĆ DARKO
+MAJSTOROVIĆ DRAGAN
+MAJSTOROVIĆ DRAGOMIR
+MAJSTOROVIĆ DUŠAN
+MAJSTOROVIĆ DUŠKO
+MAJSTOROVIĆ GORDANA
+MAJSTOROVIĆ KATICA
+MAJSTOROVIĆ-KOSTIĆ VESNA
+MAJSTOROVIĆ LJILJANA
+MAJSTOROVIĆ MILAN
+MAJSTOROVIĆ MILAN
+MAJSTOROVIĆ MILICA
+MAJSTOROVIĆ NEĐO
+MAJSTOROVIĆ NEBOJŠA
+MAJSTOROVIĆ NEVENKA
+MAJSTOROVIĆ NIKOLA
+MAJSTOROVIĆ PETAR
+MAJSTOROVIĆ RADOSLAV
+MAJSTOROVIĆ SAVKA
+MAJSTOROVIĆ SIMA
+MAJSTOROVIĆ SLOBODAN
+MAJSTOROVIĆ SVETLANA
+MAJSTOROVIĆ TEODOR
+MAJSTOROVIĆ UROŠ
+MAJSTOROVIĆ VASA
+MAJSTOROVIĆ VITOMIR
+MAJSTOROVIĆ VUKAŠIN
+MAJSTOROVIĆ VUKOSAVA
+MAJTAN ĐORĐE DIPL ING
+MAJTAN KARLO
+MAJTAN MIHAJLO
+MAJTAN PAVLE
+MAK ANDRIJA
+MAK JOSIPA
+MAK OSKAR
+MAKŠA ANA
+MAKŠA JOVAN
+MAKŠA KARLO
+MAKŠA PETAR
+MAKAJI JAKOV
+MAKAJI JANKO
+MAKAN JAN
+MAKANJIĆ BOJAN
+MAKANJIĆ MILISAV
+MAKARIĆ NADA
+MAKARIĆ STEVAN
+MAKARIĆ VIDA
+MAKARIĆ ZORAN
+MAKARIN ŽARKO
+MAKARIN ZVONIMIR DIPL ING
+MAKIŠ RUŽA
+MAKIŠ VLATKO
+MAKITAN JOVAN
+MAKIVIĆ MIHAJLO
+MAKIVIĆ MILOŠ
+MAKIVIĆ SAVA
+MAKIVIĆ STANISLAV
+MAKJI ZDENKA
+MAKLENOVIĆ RADA
+MAKLJENOVIĆ SRBOLJUB
+MAKLJENOVIĆ ZORAN
+MAKO ŠANDOR
+MAKO FRANJA
+MAKO JULIJANA
+MAKO MILENA
+MAKOH ANTON
+MAKRA ANA
+MAKRA IVAN
+MAKRA JOSIP
+MAKRA KATARINA
+MAKRIN MARGITA DR
+MAKRIN RUŽICA
+MAKSIĆ ŽIVANA
+MAKSIĆ ĐORĐE
+MAKSIĆ BILJANA
+MAKSIĆ BOŠKO
+MAKSIĆ BOŽIDAR
+MAKSIĆ DANICA
+MAKSIĆ DEJAN
+MAKSIĆ DMITAR
+MAKSIĆ DOBRIVOJE
+MAKSIĆ DRAGAN
+MAKSIĆ DRAGAN
+MAKSIĆ DRAGOMIR
+MAKSIĆ DUŠAN
+MAKSIĆ EDIT
+MAKSIĆ GAVRA
+MAKSIĆ JELICA
+MAKSIĆ JELICA
+MAKSIĆ JOVANKA
+MAKSIĆ JOVAN
+MAKSIĆ JOVAN
+MAKSIĆ LUKA
+MAKSIĆ MARIJANA
+MAKSIĆ MILANA
+MAKSIĆ MILICA
+MAKSIĆ MILICA
+MAKSIĆ MILORAD
+MAKSIĆ MILORAD
+MAKSIĆ NIKOLA
+MAKSIĆ RADOSLAV
+MAKSIĆ RATKO
+MAKSIĆ SAVA
+MAKSIĆ SLAVKO
+MAKSIĆ VOJIN
+MAKSIĆ ZORKA
+MAKSIMČEV ANĐELKO
+MAKSIMČEV STEVAN
+MAKSIMOV BRANISLAV
+MAKSIMOV LJUBOMIR
+MAKSIMOV SLOBODAN
+MAKSIMOV VERA
+MAKSIMOVIĆ ČEDOMIR
+MAKSIMOVIĆ ŽIVORAD
+MAKSIMOVIĆ ĐURICA
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ANA
+MAKSIMOVIĆ ANKICA
+MAKSIMOVIĆ BOŠKO
+MAKSIMOVIĆ BORIVOJE
+MAKSIMOVIĆ BORIVOJ
+MAKSIMOVIĆ BRANISLAV
+MAKSIMOVIĆ BRANKA
+MAKSIMOVIĆ CVIJETIN
+MAKSIMOVIĆ DANICA
+MAKSIMOVIĆ DARKO
+MAKSIMOVIĆ DIMITRIJE
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGIĆ
+MAKSIMOVIĆ DRAGOSLAV
+MAKSIMOVIĆ DUŠAN MR OEC
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ IVANKA
+MAKSIMOVIĆ IVAN
+MAKSIMOVIĆ JAKOV
+MAKSIMOVIĆ JELISAVETA
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ KATARINA
+MAKSIMOVIĆ KATICA
+MAKSIMOVIĆ LAZAR
+MAKSIMOVIĆ LAZA
+MAKSIMOVIĆ LENKA
+MAKSIMOVIĆ LJUBIŠA
+MAKSIMOVIĆ LJUBIŠA
+MAKSIMOVIĆ LJUBICA
+MAKSIMOVIĆ LJUBICA
+MAKSIMOVIĆ LUKA
+MAKSIMOVIĆ MARKO
+MAKSIMOVIĆ MILAN DIPL ING
+MAKSIMOVIĆ MILANA
+MAKSIMOVIĆ MILAN
+MAKSIMOVIĆ MILENKO
+MAKSIMOVIĆ MILENKO
+MAKSIMOVIĆ MILINA
+MAKSIMOVIĆ MILORAD
+MAKSIMOVIĆ MILUTIN
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIROSLAV
+MAKSIMOVIĆ MLADEN
+MAKSIMOVIĆ NADA
+MAKSIMOVIĆ NATALIJA
+MAKSIMOVIĆ NIKOLA
+MAKSIMOVIĆ NIKOLA
+MAKSIMOVIĆ PETAR
+MAKSIMOVIĆ PREDRAG
+MAKSIMOVIĆ RADMILA
+MAKSIMOVIĆ RADOVANKA
+MAKSIMOVIĆ RADO
+MAKSIMOVIĆ RANĐEL
+MAKSIMOVIĆ RISTO
+MAKSIMOVIĆ SAVA
+MAKSIMOVIĆ SAVO
+MAKSIMOVIĆ SLAVOLJUB
+MAKSIMOVIĆ SREĆKO
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVICA
+MAKSIMOVIĆ SVETOMIR
+MAKSIMOVIĆ TIHOMIR
+MAKSIMOVIĆ TINKA
+MAKSIMOVIĆ TOMISLAV
+MAKSIMOVIĆ TOMISLAV
+MAKSIMOVIĆ VELIČKO
+MAKSIMOVIĆ VELIMIR
+MAKSIMOVIĆ VLADIMIR
+MAKSIMOVIĆ ZLATA
+MAKSIMOVIĆ ZORAN
+MAKSIMOVSKI ĐORĐE
+MAKSIMOVSKI VOJO
+MAKSIN SLAVKA
+MAKUH MIHAILO
+MAKUH MIHAJLO
+MAKUH VLADIMIR
+MALČIĆ ANDRIJA DIPL ING
+MALČIĆ ANDRIJA
+MALČIĆ JOŽEF
+MALČIĆ JULKA
+MALČIĆ NIKOLA
+MALAŠEVIĆ MILUTIN
+MALACKO JULIJAN
+MALACKO LJUBICA
+MALAENIĆ DRAGAN
+MALAVRAZIĆ JOVAN
+MALBAŠA BORISLAVA
+MALBAŠA DRAGOLJUB
+MALBAŠA DUŠANKA
+MALBAŠA JELKA
+MALBAŠA MILAN
+MALBAŠA MILE
+MALBAŠA VELJKO
+MALBAŠA ZDRAVKO
+MALBAŠIĆ BOŠKO
+MALBAŠIĆ DRAGAN
+MALBAŠIĆ JANKO
+MALBAŠIĆ MIĆO
+MALBAŠIĆ RUŽA
+MALBAŠKI DUŠAN
+MALBAŠKI-JANKOV ANĐA
+MALBAŠKI MARIJA
+MALBAŠKI MILINKA
+MALEŠ ANĐELKA
+MALEŠ BORA
+MALEŠ DMITAR
+MALEŠ JELENA
+MALEŠ JOVANKA
+MALEŠ KOSTA
+MALEŠ LJILJANA
+MALEŠ MARINKO
+MALEŠ NOVAK
+MALEŠ RADOMIR
+MALEŠ RUŽICA
+MALEŠ STANA
+MALEŠ SVETLANA
+MALEŠ VASO
+MALEŠ VOJISLAV
+MALEŠ ZORA
+MALEŠEV ŽIVKO
+MALEŠEV ŽIVOJIN
+MALEŠEV ĐORĐE
+MALEŠEV BOŠKO
+MALEŠEV BORISLAV
+MALEŠEV BRANKO
+MALEŠEV DAMJAN
+MALEŠEV DAMJAN
+MALEŠEV DIMITRIJE
+MALEŠEV DRAGANA
+MALEŠEV DRAGOLJUB
+MALEŠEV DRAGOLJUB
+MALEŠEV DUŠAN
+MALEŠEV JELICA
+MALEŠEV JOVAN
+MALEŠEV KOSANA
+MALEŠEV LAZAR
+MALEŠEV LJUBICA
+MALEŠEV LJUBINKO
+MALEŠEV LJUBOMIR
+MALEŠEV LUKA
+MALEŠEV MARIJA
+MALEŠEV MILENKO
+MALEŠEV MILEVA
+MALEŠEV MILJA
+MALEŠEV MILOŠ
+MALEŠEV MIODRAG
+MALEŠEV MIODRAG
+MALEŠEV MIROSLAV
+MALEŠEV MIROSLAV
+MALEŠEV PETAR
+MALEŠEV PETAR
+MALEŠEV PREDRAG
+MALEŠEV PREDRAG
+MALEŠEV PRIZRENKA
+MALEŠEV SLAVKO
+MALEŠEV TAMARA
+MALEŠEV VERA
+MALEŠEV VITOMIR
+MALEŠEVIĆ ŽIVAN
+MALEŠEVIĆ ŽIVKA
+MALEŠEVIĆ ĐUKA
+MALEŠEVIĆ ALEKSANDRA
+MALEŠEVIĆ DIMITRIJE
+MALEŠEVIĆ DRAGANA
+MALEŠEVIĆ DRAGAN
+MALEŠEVIĆ DUŠKO
+MALEŠEVIĆ GOJKO
+MALEŠEVIĆ IVAN
+MALEŠEVIĆ JOVAN
+MALEŠEVIĆ JOVAN
+MALEŠEVIĆ LAZAR
+MALEŠEVIĆ LJUBICA
+MALEŠEVIĆ MARIJA
+MALEŠEVIĆ MARKO
+MALEŠEVIĆ MILE
+MALEŠEVIĆ MILICA
+MALEŠEVIĆ MILOŠ
+MALEŠEVIĆ MIRKO
+MALEŠEVIĆ MIROSLAV
+MALEŠEVIĆ MLADEN
+MALEŠEVIĆ NADA
+MALEŠEVIĆ NEDELJKO
+MALEŠEVIĆ NIKICA
+MALEŠEVIĆ PETAR
+MALEŠEVIĆ PETAR
+MALEŠEVIĆ SAVKO LOKAL
+MALEŠEVIĆ SLOBODANKA DR
+MALEŠEVIĆ VASKRSIJE
+MALEŠEVIĆ VLADIMIR
+MALEŠEVIĆ VOJISLAVA
+MALECKI BLAŽ
+MALENČIĆ ĐORĐE
+MALENČIĆ GAVRILO
+MALENČIĆ MARIJA
+MALENČIĆ NIKOLA
+MALENČIĆ RODOLJUB
+MALENČIĆ RUŽICA
+MALENIĆ LAZAR
+MALENIĆ RUŽA
+MALENIĆ SIMA
+MALENIĆ TOMISLAV
+MALENICA ĐURO
+MALENICA ANTUN
+MALENICA DRAGO
+MALENICA IVAN
+MALENICA MARKO
+MALENKOVIĆ ĐORĐE
+MALENKOVIĆ MILOŠ DR
+MALENKOVIĆ VLADIMIR
+MALENOVIĆ MIROSLAV
+MALER KRIŠTOF
+MALERT VENDEL
+MALETAŠKI EVICA
+MALETIĆ-ŠREK MARIJA
+MALETIĆ-ŠREK MARIJA
+MALETIĆ ŽARKO
+MALETIĆ ŽIVANKA
+MALETIĆ ŽIVKO
+MALETIĆ ĐORĐE DIPL ING
+MALETIĆ ĐORĐE
+MALETIĆ ĐORĐE
+MALETIĆ BOSILJKA
+MALETIĆ DRAGOSLAV
+MALETIĆ DRAGO
+MALETIĆ JELICA
+MALETIĆ JOVANKA
+MALETIĆ JOVAN
+MALETIĆ LAURA
+MALETIĆ LAZAR
+MALETIĆ LAZAR
+MALETIĆ LUKA
+MALETIĆ MARICA
+MALETIĆ MILENKO
+MALETIĆ MILOMIR
+MALETIĆ MIODRAG
+MALETIĆ MIOMIR
+MALETIĆ NADA
+MALETIĆ NEDELJKO
+MALETIĆ NIKOLA
+MALETIĆ PAJA
+MALETIĆ RADIVOJ
+MALETIĆ RADOSLAV
+MALETIĆ RADOSLAV
+MALETIĆ SAVA
+MALETIĆ SAVO
+MALETIĆ SLAVICA
+MALETIĆ SLOBODANKA
+MALETIĆ SLOBODAN
+MALETIĆ SRBOLJUB
+MALETIĆ STEVAN
+MALETIĆ STEVAN
+MALETIĆ STEVAN
+MALETIĆ SVETOZAR
+MALETIĆ SVETOZAR
+MALETIĆ TAMARA
+MALETIĆ VEKOSLAV
+MALETIĆ VJERA
+MALETIĆ VJERA
+MALETIĆ ZLATKO
+MALETIN ČARNA DIPL ING
+MALETIN ŽIVKO
+MALETIN ĐORĐE
+MALETIN ĐORĐE
+MALETIN ĐURA
+MALETIN ĐURICA
+MALETIN ALEKSANDAR
+MALETIN BOŠKO
+MALETIN BOŽANA
+MALETIN DANICA
+MALETIN DARINKA
+MALETIN DRAGIŠA
+MALETIN DUŠAN
+MALETIN DUŠAN
+MALETIN GORAN
+MALETIN JANA
+MALETIN JELENA
+MALETIN JOVAN
+MALETIN JOVAN
+MALETIN JOVAN
+MALETIN LJUBOMIR
+MALETIN MARIJA
+MALETIN MARIJA
+MALETIN MILANKA
+MALETIN MILAN
+MALETIN MILAN
+MALETIN MILOŠ
+MALETIN MILOVAN
+MALETIN MIRKO
+MALETIN PAJA
+MALETIN PAVLE
+MALETIN RADA
+MALETIN RADIVOJE
+MALETIN RUŽICA
+MALETIN SLAVICA
+MALETIN SLAVKO
+MALETIN SPOMENKA
+MALETIN STEVAN
+MALETIN STEVAN
+MALETIN SVETOZAR
+MALETIN SVETOZAR
+MALETIN TIMA
+MALETIN TODOR
+MALETIN TODOR
+MALETIN VASA
+MALETIN VITOMIR
+MALETIN VOJISLAV
+MALETIN ZORA
+MALETIN ZORA
+MALEVIĆ VLADIMIR
+MALI ŽIVAN
+MALI ŽIVKO
+MALI DAMJAN
+MALI DRAGA
+MALI ELEONORA
+MALI GORAN
+MALI JOVAN
+MALI KRISTIFOR
+MALI LJUBICA
+MALI LJUBOMIR
+MALI MILOŠ
+MALI MIODRAG
+MALI SAVA
+MALI STANIMIR
+MALI VOJISLAV
+MALIČEVIĆ ĐORĐE
+MALIČEVIĆ RADIVOJE
+MALIČIĆ MILOŠ
+MALIČIĆ VOJISLAV
+MALIĆ ŽARKO
+MALIĆ BILJANA
+MALIĆ BOŽANA
+MALIĆ CVIJETIN
+MALIĆ MILAN
+MALIĆ MILENKO
+MALIĆ MITAR
+MALIĆ MLADEN
+MALIĆ NOVAK
+MALIĆ PREDRAG
+MALIĆ RADIVOJ
+MALIĆ RATKO
+MALIĆ SLAVKO
+MALIĆ SOFIJA
+MALIĆ STOJAN
+MALIĆ STOJA
+MALIĆ UROŠ
+MALIĆ VUKICA
+MALIDŽA ŽELJKO
+MALIDŽAN BLAŽO
+MALIKOVIĆ DUŠAN
+MALIN ĐURA
+MALIN ILIJA
+MALIN MILICA
+MALIN OLGA
+MALIN STANISLAV
+MALIN TATJANA
+MALINAR JELENA
+MALINIĆ SPASOJE
+MALINOVIĆ ANĐA
+MALINOVIĆ ANKICA
+MALINOVIĆ ANKICA
+MALINOVIĆ BOŽO
+MALINOVIĆ BOGDAN
+MALINOVIĆ BOGDAN
+MALINOVIĆ DANICA
+MALINOVIĆ DRAGAN
+MALINOVIĆ DRAGINJA
+MALINOVIĆ DRAGOLJUB
+MALINOVIĆ JOVO
+MALINOVIĆ MARINKO
+MALINOVIĆ NEDELJKO
+MALINOVIĆ NEDELJKO
+MALINOVIĆ SAVO
+MALINOVIĆ SINIŠA
+MALINOVIĆ SLAVICA
+MALINOVIĆ STEVAN
+MALINOVIĆ VELJKO
+MALIVUK BOŽANA
+MALIVUK DUŠAN
+MALIVUK MILAN
+MALIVUK NIKOLA
+MALIVUK PAVLE
+MALIVUK SVETISLAV
+MALJA MORINA
+MALJIK STEVA
+MALJKOVIĆ ĐURO
+MALJKOVIĆ BRANKO
+MALJKOVIĆ BRANKO
+MALJKOVIĆ-DŽUKLEVSKI ANA
+MALJKOVIĆ MARKO
+MALJKOVIĆ MILAN
+MALJKOVIĆ MILAN
+MALJKOVIĆ NEVENKA
+MALJKOVIĆ NIKOLA
+MALJKOVIĆ RANKA
+MALJKOVIĆ VERA
+MALKIĆ GORDAN
+MALKIĆ LJUBIŠA
+MALKIĆ STANA
+MALMER ANDRIJA
+MALMER ANDRIJA
+MALNAR DRAGUTIN
+MALNAR JOSIP
+MALOČIĆ MILAN
+MALOČIĆ MILORAD
+MALOBABIĆ LJUBAN
+MALOBABIĆ MARKO
+MALOBABIĆ MIROSLAV
+MALOBABIĆ NOVICA
+MALOBABIĆ RADE
+MALOGAJSKI BORISLAV
+MALOGAJSKI STEVAN
+MALOTIĆ SAVO
+MALOVAŠIĆ MARIJA
+MALOVIĆ BOGDAN
+MALOVIĆ RADMILA
+MALOVIĆ STANIŠA
+MALOVRAZIĆ GOJKO
+MALOVRAZIĆ GOJKO
+MALUCKOV BOGDAN
+MALUCKOV DANICA
+MALUCKOV JOVAN
+MALUCKOV MARIJA
+MALUCKOV MIODRAG DIPL ING
+MALUCKOV RADOVAN DR LEKAR
+MALUCKOV SLOBODAN
+MALUCKOV STEVAN
+MALUCKOV ZORKA
+MAMIĆ IVAN
+MAMIĆ JOZO
+MAMUŽIĆ IVAN DIPL ING
+MAMUŽIĆ IVAN
+MAMUŽIĆ IVAN
+MAMULA DUŠAN
+MAMULA MLADENKA
+MAMULA PAVLE
+MAMULA RUŽA
+MAMUTOVIĆ MILAN
+MAMUTOVIĆ MILAN
+MAMUTOVIĆ RADIVOJ
+MAMUZIĆ BOGDANKA
+MANČEV NIKOLA
+MANČEVSKI KATA
+MANČEVSKI STEVAN
+MANČIĆ ARANKA
+MANČIĆ DRAGAN DR
+MANČIĆ KATA
+MANČIĆ NIKOLA
+MANČIĆ SAŠA
+MANČIĆ SLOBODAN
+MANČIĆ SVETOZAR
+MANČU ĐORĐE
+MANČU DRAGINJA
+MANČU DUŠAN
+MANČU MILAN
+MANČU MILAN
+MANČU MILOŠ
+MANČU MILOŠ
+MANČU NENAD
+MANČU STEVAN
+MANČU SVETOZAR
+MANČU VIKTOR
+MANASIJEVIĆ GERASIM
+MANASTIRAC DAMJAN
+MANASTIRAC LJUBIŠA
+MANC STEVAN
+MANCEDER ĐURA
+MANDŽUKIĆ MIODRAG
+MANDŽUKOVIĆ VELIMIR
+MANDARIN NATAŠA
+MANDEK FILIP
+MANDELC LJUBICA
+MANDIĆ ČAVA
+MANDIĆ ŽIVKO
+MANDIĆ ĐORĐE
+MANDIĆ ĐORĐE
+MANDIĆ ĐURA
+MANDIĆ ĐURICA
+MANDIĆ ALEKSANDAR DIPL ING
+MANDIĆ ALEKSANDAR
+MANDIĆ BOŠKO
+MANDIĆ BOGDAN
+MANDIĆ BORISLAVA
+MANDIĆ BORISLAV
+MANDIĆ BRANISLAV
+MANDIĆ CVIJETA
+MANDIĆ DANICA
+MANDIĆ DARA
+MANDIĆ DELFINA
+MANDIĆ DENEŠ
+MANDIĆ DOBRILA
+MANDIĆ DRAGANA
+MANDIĆ DRAGAN
+MANDIĆ DRAGOSLAV
+MANDIĆ DRAGO
+MANDIĆ DRAGO
+MANDIĆ DRAGUTIN
+MANDIĆ DUŠANKA
+MANDIĆ DUŠANKA
+MANDIĆ DUŠANKA
+MANDIĆ DUŠAN
+MANDIĆ FRANJA
+MANDIĆ IGNJAT
+MANDIĆ IVANKA
+MANDIĆ IVKA
+MANDIĆ JOVANKA
+MANDIĆ-JOVANOVIĆ VINKA
+MANDIĆ JOVO
+MANDIĆ JOVO
+MANDIĆ KATICA
+MANDIĆ KOSTA
+MANDIĆ KSENIJA
+MANDIĆ LJILJANA
+MANDIĆ LJUBICA
+MANDIĆ LJUBOMIR
+MANDIĆ MANE
+MANDIĆ MANE
+MANDIĆ MARA
+MANDIĆ MARGITA
+MANDIĆ MARIJA
+MANDIĆ MARIJA
+MANDIĆ MARIJA
+MANDIĆ MIKA
+MANDIĆ MILADIJA
+MANDIĆ MILAN DIPL ING
+MANDIĆ MILAN
+MANDIĆ MILENA
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILOJE
+MANDIĆ MILOJKO DR LEKAR
+MANDIĆ MILORAD
+MANDIĆ MILORAD
+MANDIĆ MIODRAG
+MANDIĆ MIROSLAV
+MANDIĆ NADA
+MANDIĆ NADA
+MANDIĆ NEĐO
+MANDIĆ NEĐO
+MANDIĆ NEDELJKO DIPL PRAVNIK
+MANDIĆ NIKOLA
+MANDIĆ NIKOLA
+MANDIĆ NOVKA
+MANDIĆ PANE
+MANDIĆ PERA
+MANDIĆ PETAR
+MANDIĆ RADENKO
+MANDIĆ RADIVOJE
+MANDIĆ RADMILA
+MANDIĆ RADMILA
+MANDIĆ RADOJKA
+MANDIĆ RADOMIR
+MANDIĆ RADOVAN
+MANDIĆ RADOVAN
+MANDIĆ RAJA
+MANDIĆ SINIŠA
+MANDIĆ SLAVKA
+MANDIĆ SLAVKO
+MANDIĆ SLOBODAN
+MANDIĆ SLOBODAN
+MANDIĆ SNEŽANA
+MANDIĆ SRETEN
+MANDIĆ SRETEN
+MANDIĆ SRETO
+MANDIĆ STEVAN
+MANDIĆ SVETKO
+MANDIĆ SVETLANA
+MANDIĆ TEREZIJA
+MANDIĆ TIBOR
+MANDIĆ TOMISLAV
+MANDIĆ TOMISLAV
+MANDIĆ UROŠ DIPL OEC
+MANDIĆ VASILIJE
+MANDIĆ VELIZAR
+MANDIĆ VERA
+MANDIĆ VIOLETA
+MANDIĆ ZLATICA
+MANDIĆ ZORAN
+MANDIĆ ZORAN
+MANDIĆ ZORICA
+MANDIĆ ZORKA
+MANDIĆ ZORKA
+MANDIĆ ZORKA
+MANDIĆ ZVONIMIR
+MANDRAPA ĐURO
+MANDRINO SANKA
+MANESKI BLAGOJA
+MANEVSKI BRANISLAV
+MANEVSKI DUŠAN
+MANEVSKI RADOSLAV
+MANEVSKI TRAJKO DR
+MANEVSKI VERA
+MANG BRANKO
+MANGER JOSIP
+MANHAJM JOŽEF
+MANIĆ ANKICA
+MANIĆ BLANKA
+MANIĆ BOŽIDAR
+MANIĆ BRANISLAV
+MANIĆ BRANKO
+MANIĆ BRANKO
+MANIĆ DANILO
+MANIĆ DRAGIŠA
+MANIĆ MILOJE
+MANIĆ MILOJE
+MANIĆ MILORAD
+MANIĆ SEVER DIPL PH
+MANIĆ SVETOMIR
+MANIN ĐORĐE
+MANJA SREDOJE
+MANJA ZDRAVKO
+MANJAK DRAGO
+MANJENČIĆ SLOBODAN
+MANJULOV LUKA
+MANOJLOV IRENA
+MANOJLOV IVAN
+MANOJLOV JOVANKA
+MANOJLOVIĆ ČEDOMIR
+MANOJLOVIĆ ČEDO
+MANOJLOVIĆ ŽARKO
+MANOJLOVIĆ ŽIVKO
+MANOJLOVIĆ ĐORĐE
+MANOJLOVIĆ ALEKSANDAR
+MANOJLOVIĆ ALEKSANDAR
+MANOJLOVIĆ ALEKSA
+MANOJLOVIĆ ANGELINA
+MANOJLOVIĆ BILJANA
+MANOJLOVIĆ BOSILJKA
+MANOJLOVIĆ BRANISLAV
+MANOJLOVIĆ DARINKA
+MANOJLOVIĆ DESANKA
+MANOJLOVIĆ DOBRILA
+MANOJLOVIĆ DRAGANA
+MANOJLOVIĆ DRAGICA
+MANOJLOVIĆ DUŠAN
+MANOJLOVIĆ DUŠAN
+MANOJLOVIĆ GRUJICA
+MANOJLOVIĆ ILIJA
+MANOJLOVIĆ JELENA
+MANOJLOVIĆ JOVAN
+MANOJLOVIĆ KATARINA
+MANOJLOVIĆ KOVILJKO
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LJUBICA
+MANOJLOVIĆ LJUBICA
+MANOJLOVIĆ LJUBOMIR
+MANOJLOVIĆ MAJA
+MANOJLOVIĆ MANOJLO
+MANOJLOVIĆ MANOJLO
+MANOJLOVIĆ MARIJA
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILENKO
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILORAD
+MANOJLOVIĆ MILORAD
+MANOJLOVIĆ MIODRAG
+MANOJLOVIĆ MIODRAG
+MANOJLOVIĆ MIRJANA
+MANOJLOVIĆ MIRKO DIPL ING
+MANOJLOVIĆ MIRKO
+MANOJLOVIĆ MIROSLAV
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ NENAD
+MANOJLOVIĆ NIKOLA
+MANOJLOVIĆ PETAR
+MANOJLOVIĆ PETAR
+MANOJLOVIĆ RADIVOJ
+MANOJLOVIĆ RATKO
+MANOJLOVIĆ SAVA
+MANOJLOVIĆ SAVO
+MANOJLOVIĆ SLAVICA
+MANOJLOVIĆ SLOBODAN
+MANOJLOVIĆ STANIŠA DR PROF
+MANOJLOVIĆ STANKO
+MANOJLOVIĆ STEVAN
+MANOJLOVIĆ STEVAN
+MANOJLOVIĆ SVETOZAR
+MANOJLOVIĆ TOŠA
+MANOJLOVIĆ VANDA
+MANOJLOVIĆ VELISLAV
+MANOJLOVIĆ VERA
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORICA
+MANOJLOVIĆ ZVONKO
+MANUKOV OLGA
+MANUKOV TODOR
+MAODUŠ ANA
+MAODUŠ DANICA
+MAODUŠ JOVO
+MAODUŠ MIODRAG
+MAODUŠ NIKOLA
+MAODUŠ PREDRAG
+MAR EDVARD
+MARČAK MIHAJLO
+MARČEK MILAN
+MARČETA ĐURA
+MARČETA BRANKO
+MARČETA DRAGICA
+MARČETA DRAGICA
+MARČETA LAZAR
+MARČETA MILAN
+MARČETA RAJKO
+MARČETA SLOBODAN
+MARČETA STEVA
+MARČETA VELIMIR
+MARČETA ZORA
+MARČETIĆ CVETA
+MARČETIĆ DRAGO
+MARČETIĆ MARKO
+MARČETIĆ MILAN
+MARČETIĆ MILAN
+MARČETIĆ MILAN
+MARČETIĆ NIKOLA
+MARČETIĆ OBRENIJA
+MARČETIĆ OLBINA
+MARČETIĆ PERICA
+MARČETIĆ PETAR
+MARČETIĆ PETAR
+MARČETIN RADE
+MARČIĆ ŽIVAN
+MARČIĆ ĐORĐE
+MARČIĆ ALEKSANDAR
+MARČIĆ BOŽANA
+MARČIĆ JELENA
+MARČIĆ MARIJA
+MARČIĆ MILENKO
+MARČIĆ STEVAN
+MARČIĆ STEVAN
+MARČIĆ STEVAN
+MARČIĆEV MARIJA
+MARČIĆEV MERIMA
+MARČINKO MILAN
+MARČOK ANICA
+MARČOK IŠTVAN
+MARČOK ISIDORA
+MARČOK LIDIJA
+MARČOK MIHAJLO
+MARČOK MIHAJLO
+MARČOK VERA
+MARČOK ZUZANA
+MARČUK SAŠA
+MARČUK STEVAN
+MARŽIĆ ANICA
+MARĐELOŠKI STANUŠA
+MARAŠ JOVAN
+MARAŠ MIROJE
+MARAŠ SLOBODAN
+MARAŠ VOJIN
+MARACI MIHALJ
+MARAKOVIĆ NEVENA
+MARAMICA JELENA
+MARAMICA MIROSLAV
+MARAN DRAGIŠA
+MARAN MILORAD
+MARAS FILIP
+MARAS JOSIP
+MARAUC ZVONIMIR
+MARAVIĆ ĐURO
+MARAVIĆ ĐURO
+MARAVIĆ ĐURO
+MARAVIĆ BRANISLAV
+MARAVIĆ DMITAR
+MARAVIĆ DRAGICA
+MARAVIĆ LAZO
+MARAVIĆ MARKO
+MARAVIĆ MIHAJLO
+MARAVIĆ MILAN
+MARAVIĆ MILENA
+MARAVIĆ MILOŠ
+MARAVIĆ NIKOLA
+MARAVIĆ SAVA
+MARAVIĆ SLAVICA
+MARAVIĆ VLADA
+MARCEKIĆ DOBRINKA
+MARCIKIĆ ŽIVANA
+MARCIKIĆ BOGDAN
+MARCIKIĆ DRAGICA
+MARCIKIĆ EMIL
+MARCIKIĆ GIGA DR
+MARCIKIĆ KONSTANTIN
+MARCIKIĆ LJILJANA
+MARCIKIĆ LJUBINKA
+MARCIKIĆ MARICA
+MARCIKIĆ MILENA
+MARCIKIĆ SOFIJA
+MARCIKIĆ STEVAN
+MARCIKIĆ STEVAN
+MARCIKIĆ VERA
+MARDEŠIĆ ŠIME
+MAREŠ BOŽO
+MAREŠ TRIFUN
+MAREŠČUK PETAR
+MARELJ ŽIVAN
+MARELJ MIROSLAV
+MARELJ SELENA
+MARELJ VELISLAV
+MARELJ ZLATA
+MARELJEV JELENA
+MARETIĆ MARKO DIPL OEC
+MARETIĆ STEVO
+MARETIĆ VLADA
+MARETIĆ VLADA
+MARETIĆ VLADA
+MAREVIĆ ANTE
+MARFI SMILJKA
+MARGANOVIĆ DRAGICA
+MARGANOVIĆ DUŠAN DR
+MARGANOVIĆ GEORGINA
+MARGANZ VIKTOR
+MARGETA ANICA
+MARGETA MARIJA
+MARGETIĆ ŽIŽA
+MARGETIĆ ELVIRA
+MARGIT JULIJANA
+MARGIT VERA
+MARGUŠIĆ ANDRIJA
+MARHOŠEVIĆ MUJO
+MARIČEVIĆ KATICA
+MARIČEVIĆ RISTA
+MARIČIĆ ANDRIJA
+MARIČIĆ BRANKO
+MARIČIĆ BRATOLJUB
+MARIČIĆ GOJKO
+MARIČIĆ ILIJA
+MARIČIĆ IVICA
+MARIČIĆ MARA
+MARIČIĆ MILAN
+MARIČIĆ MILORAD
+MARIČIĆ MIRA
+MARIČIĆ NEDELJKO
+MARIČIĆ NIKOLA
+MARIČIĆ NIKOLA
+MARIČIĆ PAVLE
+MARIČIĆ STEVAN
+MARIČIĆ STEVAN
+MARIČIĆ VOJISLAV
+MARIČIN NENAD
+MARIŠAN VLADIMIR
+MARIĆ ŽARKO
+MARIĆ ŽARKO
+MARIĆ ŽIKA
+MARIĆ ŽIVANA
+MARIĆ ŽIVKO
+MARIĆ ĐORĐE
+MARIĆ ĐURO
+MARIĆ ADAM DR
+MARIĆ ALEKSANDAR
+MARIĆ ANĐELKO
+MARIĆ ANĐELKO
+MARIĆ ANKA
+MARIĆ ANKA
+MARIĆ ANKICA
+MARIĆ BOŠKO
+MARIĆ BOŠKO
+MARIĆ BOŽICA
+MARIĆ BOŽIDAR
+MARIĆ BOGOLJUB
+MARIĆ BOJADIMIR
+MARIĆ BORIVOJ
+MARIĆ BOSILJKA
+MARIĆ BRANISLAV DIPL ING
+MARIĆ BRANKO
+MARIĆ BRANKO
+MARIĆ BRANO
+MARIĆ CVIJO
+MARIĆ DANICA
+MARIĆ DARINKA
+MARIĆ DAVID
+MARIĆ DRAGANA
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGICA
+MARIĆ DRAGOLJUB
+MARIĆ DUŠANKA
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠICA
+MARIĆ ERŽEBET
+MARIĆ GOJKO
+MARIĆ GOJKO
+MARIĆ GRUJICA DR
+MARIĆ ILE
+MARIĆ ILIJA
+MARIĆ ILIJA
+MARIĆ ILINKA
+MARIĆ IVO
+MARIĆ JADRANKA
+MARIĆ JELICA
+MARIĆ JOCA
+MARIĆ JOLANKA
+MARIĆ JOVANKA
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVO
+MARIĆ JOVO
+MARIĆ JULIJANA
+MARIĆ KADIVKA
+MARIĆ KATICA
+MARIĆ KATICA
+MARIĆ KOSTA
+MARIĆ LAZAR
+MARIĆ LJEPOSAVA
+MARIĆ LJUBA
+MARIĆ LJUBICA
+MARIĆ LJUBOMIR
+MARIĆ LJUBOMIR
+MARIĆ LJUBOMIR
+MARIĆ LJUPKO
+MARIĆ LUKA
+MARIĆ MARA
+MARIĆ MARIJA
+MARIĆ MARIJA
+MARIĆ MARIJA
+MARIĆ MARKO
+MARIĆ MARKO
+MARIĆ MIĆA DIPL ING
+MARIĆ MIHAJLO
+MARIĆ MILAN DIPL ING
+MARIĆ MILAN DR
+MARIĆ MILANA
+MARIĆ MILANKA
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILE DIPL OEC
+MARIĆ MILENA
+MARIĆ MILENA
+MARIĆ MILENKO
+MARIĆ MILENKO
+MARIĆ MILENKO
+MARIĆ MILISAV
+MARIĆ MILOŠ
+MARIĆ MILOŠ
+MARIĆ MILORAD
+MARIĆ MILORAD
+MARIĆ MILOSAV
+MARIĆ MILUN
+MARIĆ MILUTIN
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIROLJUB
+MARIĆ MITAR
+MARIĆ MITAR
+MARIĆ-MITROVIĆ MARIJA
+MARIĆ MOMČILO
+MARIĆ NEBOJŠA
+MARIĆ NEDELJKO
+MARIĆ NEVENKA
+MARIĆ NIKOLA
+MARIĆ NIKOLA
+MARIĆ NOVAK
+MARIĆ NOVAK
+MARIĆ OSTOJA
+MARIĆ PAVLE
+MARIĆ PETAR
+MARIĆ PETAR
+MARIĆ PRVOSLAV
+MARIĆ RADIVOJ
+MARIĆ RADMILA
+MARIĆ RADMILA
+MARIĆ RADMILA
+MARIĆ RADOMIR DR
+MARIĆ RADOSAV
+MARIĆ RADOSLAVA
+MARIĆ RADOVANKA
+MARIĆ RADOVAN
+MARIĆ RADOVAN
+MARIĆ RAJKO
+MARIĆ SAVA
+MARIĆ SINIŠA
+MARIĆ SLAVICA
+MARIĆ SLAVKO
+MARIĆ SLAVKO
+MARIĆ SLOBODAN
+MARIĆ SLOBODAN
+MARIĆ SRETEN DR PROF
+MARIĆ STANISLAV
+MARIĆ STANISLAV
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVKA
+MARIĆ STEVO
+MARIĆ STOJANKA
+MARIĆ SVETISLAV PROFESOR
+MARIĆ SVETISLAV
+MARIĆ TAMARA DIPL ING
+MARIĆ UROŠ
+MARIĆ VASKA
+MARIĆ VASO
+MARIĆ VERA
+MARIĆ VID
+MARIĆ VLADISLAV
+MARIĆ VOJISLAV DR PROF
+MARIĆ VUKADIN
+MARIĆ ZORANKA
+MARIĆ ZORAN
+MARIĆ ZORAN
+MARIĆEVIĆ ZORAN
+MARIAŠ JOŽEF
+MARIAŠ MARIJA
+MARIJAŠ JOVAN
+MARIJAŠ MARIJA
+MARIJAŠ MARIJA
+MARIJAŠ MARIJA
+MARIJAŠ MIHALJ
+MARIJAŠ STEVAN
+MARIJAŠ ZDENKA
+MARIJAN ŽELJKO
+MARIJAN BRANISLAVA
+MARIJANAC STOJA
+MARIJANOVIĆ RADOJKA
+MARIJANOVIĆ SVETOZAR
+MARIJANSKI ĐORĐE
+MARIJANSKI ĐORĐE
+MARIJANSKI ALEKSANDAR
+MARIJANSKI MILOŠ
+MARIJANSKI STEVAN
+MARIJANSKI VESNA
+MARIN MILAN
+MARIN MILIVOJ
+MARIN MLADEN
+MARIN NATALIJA
+MARIN NIKOLA
+MARIN RADOMIR
+MARIN VASO
+MARIN VERICA
+MARIN ZORAN
+MARINČEV BRANISLAV
+MARINČEV STEVAN
+MARINČIĆ DRAGICA
+MARINČIĆ MARKO
+MARINČIĆ MILAN
+MARINČIĆ MILAN
+MARINČIĆ OLGA
+MARINŠEK VJEKOSLAV
+MARINA ŠTEFAN
+MARINA LUĆIJAN
+MARINAC ZORAN
+MARINIĆ BRANKO
+MARINIĆ IVO
+MARINIĆ STIPAN
+MARINKOV ČEDA
+MARINKOV ŽARKO
+MARINKOV ĐORĐE
+MARINKOV ĐORĐE
+MARINKOV ĐURA DIPL ING
+MARINKOV ANKICA
+MARINKOV ARSEN
+MARINKOV BOŽA
+MARINKOV DEJAN
+MARINKOV DRAGINJA
+MARINKOV DUŠAN
+MARINKOV FEMKA
+MARINKOV GAVRA
+MARINKOV JOVANKA
+MARINKOV JOVAN
+MARINKOV JOVAN
+MARINKOV JULIJANA
+MARINKOV JULIJANA
+MARINKOV MELANIJA
+MARINKOV MILENKO
+MARINKOV MILIVOJ DIPL ING
+MARINKOV MILJA
+MARINKOV MILORAD
+MARINKOV MILOSAVA
+MARINKOV MIODRAG
+MARINKOV MIRJANA
+MARINKOV MOMČILO
+MARINKOV MOMČILO
+MARINKOV NIKOLA
+MARINKOV OMER
+MARINKOV PAJA
+MARINKOV PREDRAG
+MARINKOV RUŽICA
+MARINKOV SAVA
+MARINKOV SINIŠA
+MARINKOV SLAVKO
+MARINKOV SLAVKO
+MARINKOV STEVAN
+MARINKOV STEVAN
+MARINKOV STRAHINJA DR PROF
+MARINKOV VESELIN
+MARINKOV VESNA
+MARINKOV VLADA
+MARINKOV VLAJKO
+MARINKOV ZORAN
+MARINKOVIĆ ČEDOMIR
+MARINKOVIĆ ŽIVA
+MARINKOVIĆ ŽIVKA
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVOJIN
+MARINKOVIĆ ŽIVORAD
+MARINKOVIĆ BOGOLJUB
+MARINKOVIĆ BOJA
+MARINKOVIĆ BORISLAV
+MARINKOVIĆ BORIVOJE DR
+MARINKOVIĆ BRANKO
+MARINKOVIĆ BRATIMIR
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGICA
+MARINKOVIĆ DRAGICA
+MARINKOVIĆ JELICA
+MARINKOVIĆ JOVAN
+MARINKOVIĆ KATALIN
+MARINKOVIĆ LEPOSAVA
+MARINKOVIĆ MIĆO
+MARINKOVIĆ MILAN
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILEN
+MARINKOVIĆ MILICA
+MARINKOVIĆ MILIVOJE
+MARINKOVIĆ MILOJKO
+MARINKOVIĆ MILORAD
+MARINKOVIĆ MILOVAN
+MARINKOVIĆ MILUTIN
+MARINKOVIĆ MIRKO
+MARINKOVIĆ MIROSLAV
+MARINKOVIĆ MITAR
+MARINKOVIĆ MITAR
+MARINKOVIĆ NENAD
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ RADA
+MARINKOVIĆ RADIVOJ
+MARINKOVIĆ RADOJICA
+MARINKOVIĆ RADOJKA
+MARINKOVIĆ RADOMIR
+MARINKOVIĆ RADOSLAV DR
+MARINKOVIĆ RADOVAN
+MARINKOVIĆ RISTANA
+MARINKOVIĆ RUŽICA
+MARINKOVIĆ SAVA
+MARINKOVIĆ SLAVKO
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SOFIJA
+MARINKOVIĆ STANKO
+MARINKOVIĆ STANOJKA
+MARINKOVIĆ STEVAN
+MARINKOVIĆ STOJANKA
+MARINKOVIĆ STOJAN
+MARINKOVIĆ SVETISLAV
+MARINKOVIĆ VLADICA
+MARINKOVIĆ VLADO
+MARINKOVIĆ VOJIN
+MARINKOVIĆ VOJISLAVKA
+MARINKOVIĆ VUKAŠIN
+MARINKOVIĆ ZORAN
+MARINOV MARINKO
+MARINOVIĆ ĐORĐE
+MARINOVIĆ ALEKSANDAR
+MARINOVIĆ ALEKSANDAR
+MARINOVIĆ DOBRIVOJE
+MARINOVIĆ DUŠAN
+MARINOVIĆ KATICA
+MARINOVIĆ MARIJA
+MARINOVIĆ MILAN
+MARINOVIĆ PEJO
+MARINOVIĆ-SRDANOV DANICA
+MARINOVIĆ TOMISLAV
+MARINOVIĆ VINKA
+MARINOVIĆ ZLATICA
+MARINOVIĆ ZORICA
+MARINOVIĆ ZORICA
+MARINOVSKI ĐORĐE
+MARINOVSKI KATICA
+MARJAŠ ANKA
+MARJAŠ JANKO
+MARJAŠ MIŠA
+MARJAŠ MIHAJLO
+MARJAŠ MILKA
+MARJAŠ STANKO
+MARJAŠ VLADIMIR
+MARJAN DUŠAN
+MARJAN MILIJANA
+MARJAN MIRKO
+MARJANOV DUŠAN
+MARJANOV ERŽEBET
+MARJANOV JOVANKA
+MARJANOV LJUBOMIR
+MARJANOV MARA
+MARJANOV MIHAJLO DR
+MARJANOV MILENKO
+MARJANOV OLGA
+MARJANOV RADOVAN
+MARJANOV SONJA
+MARJANOV TIMOTIJE
+MARJANOV VUJICA
+MARJANOVIĆ ČEDOMIR
+MARJANOVIĆ ŽARKO
+MARJANOVIĆ ŽELJKO
+MARJANOVIĆ ŽIVOTA
+MARJANOVIĆ ŽIVOTA
+MARJANOVIĆ ĐORĐE
+MARJANOVIĆ ĐURO
+MARJANOVIĆ ALEKSANDAR
+MARJANOVIĆ BILJANA
+MARJANOVIĆ BOŽIDAR
+MARJANOVIĆ BOŽIDAR
+MARJANOVIĆ BOJANA
+MARJANOVIĆ BORIVOJE
+MARJANOVIĆ BOSILJKA
+MARJANOVIĆ BRANIMIR
+MARJANOVIĆ DANA
+MARJANOVIĆ DANILKO
+MARJANOVIĆ DIMITRIJE
+MARJANOVIĆ DRAGAN
+MARJANOVIĆ DRAGIŠA
+MARJANOVIĆ DRAGIŠA
+MARJANOVIĆ DRAGOMIR
+MARJANOVIĆ DUŠANKO
+MARJANOVIĆ DUŠAN
+MARJANOVIĆ DUŠAN
+MARJANOVIĆ DUŠKO
+MARJANOVIĆ GABRIJEL
+MARJANOVIĆ GOJKO
+MARJANOVIĆ JOVANKA
+MARJANOVIĆ JOVAN
+MARJANOVIĆ JOVA
+MARJANOVIĆ LJUBIVOJE
+MARJANOVIĆ LJUBOMIR
+MARJANOVIĆ LUKA
+MARJANOVIĆ MARIJA
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILENKO DR ING
+MARJANOVIĆ MILICA DR
+MARJANOVIĆ MILOŠ
+MARJANOVIĆ MILOMIR
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILUTIN
+MARJANOVIĆ MIROSLAV
+MARJANOVIĆ MIROSLAV
+MARJANOVIĆ MITAR
+MARJANOVIĆ NADA
+MARJANOVIĆ NATALIJA
+MARJANOVIĆ NEDELJKO
+MARJANOVIĆ NEDELJKO
+MARJANOVIĆ NIKOLA MR
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ PRVOSLAV
+MARJANOVIĆ RADMILA
+MARJANOVIĆ RUŽICA
+MARJANOVIĆ SLAVOLJUB DR
+MARJANOVIĆ STEVKA
+MARJANOVIĆ SVETLANA
+MARJANOVIĆ TATJANA
+MARJANOVIĆ TRIVUN
+MARJANOVIĆ VELIMIR
+MARJANOVIĆ VERA
+MARJANOVIĆ VID
+MARJANOVIĆ VLADO
+MARJANOVIĆ VOJIN
+MARJANOVIĆ ZORAN
+MARJANOVIĆ ZORA
+MARJANSKI FEDOR
+MARKANOV LJUBICA
+MARKANOV ZORICA
+MARKGRAF ANICA
+MARKGRAF SOFIJA
+MARKI NEVENKA
+MARKI NIKOLA
+MARKI SLAVKA
+MARKIŠ SOFIJA
+MARKIĆEVIĆ DUŠANKA
+MARKIĆEVIĆ MILAN
+MARKO JAN PROFESOR
+MARKO NADA DR
+MARKOSKI STOJAN
+MARKOV ŽARKO
+MARKOV ŽIVA
+MARKOV ĐURA
+MARKOV ANĐELKA
+MARKOV CVETANA
+MARKOV DOBRILA
+MARKOV DRAGAN
+MARKOV DRAGAN
+MARKOV DUŠAN
+MARKOV EMIL
+MARKOV FOTIJE
+MARKOV ILIJA
+MARKOV IVICA
+MARKOV-JELENIĆ MIRJANA
+MARKOV LJUBOMIR
+MARKOV LJUBOMIR
+MARKOV LJUBOMIR
+MARKOV MARIJA
+MARKOV MILAN
+MARKOV MILAN
+MARKOV MILENKO
+MARKOV MILICA
+MARKOV MILICA
+MARKOV MIRA
+MARKOV NADA
+MARKOV NADA
+MARKOV NIKOLA
+MARKOV PETAR
+MARKOV PETAR
+MARKOV RADISLAV
+MARKOV RADOSAV
+MARKOV RADOVAN
+MARKOV RADOVAN
+MARKOV SAVA
+MARKOV SINIŠA
+MARKOV SPASOJE DR
+MARKOV STOJAN
+MARKOV TOMISLAV
+MARKOV VERA
+MARKOV VIDOSAVA
+MARKOV ZORAN MR
+MARKOV ZORA
+MARKOV ZORKA
+MARKOVIĆ ČEDOMIR
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽELIBOR
+MARKOVIĆ ŽELJKA
+MARKOVIĆ ŽELJKO
+MARKOVIĆ ŽIVAN
+MARKOVIĆ ŽIVKO
+MARKOVIĆ ŽIVOJIN DR
+MARKOVIĆ ŽIVOJIN
+MARKOVIĆ ŽIVOJIN
+MARKOVIĆ ŽIVOSLAV
+MARKOVIĆ ŽIVOTA
+MARKOVIĆ ĐENA
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ADAM
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ANTONIJE
+MARKOVIĆ BOŠKO
+MARKOVIĆ BORISLAV
+MARKOVIĆ BORISLAV
+MARKOVIĆ BORIS
+MARKOVIĆ BORIVOJ
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANKO
+MARKOVIĆ BRANKO
+MARKOVIĆ BUDIMIR
+MARKOVIĆ BUDIMIR
+MARKOVIĆ CVETKO
+MARKOVIĆ CVETKO
+MARKOVIĆ DANICA
+MARKOVIĆ DANICA
+MARKOVIĆ DANICA
+MARKOVIĆ DEJAN
+MARKOVIĆ DESANKA
+MARKOVIĆ DIMITRIJE
+MARKOVIĆ DIMITRIJE
+MARKOVIĆ DOBROSAV
+MARKOVIĆ DOBROSAV
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGIŠA
+MARKOVIĆ DRAGOJA
+MARKOVIĆ DRAGOJA
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOMIR
+MARKOVIĆ DRAGOSLAV
+MARKOVIĆ DRAGOSLAV
+MARKOVIĆ DRAGUTIN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUBRAVKO
+MARKOVIĆ ERŽEBET
+MARKOVIĆ EVICA
+MARKOVIĆ GORAN
+MARKOVIĆ GORDANA
+MARKOVIĆ IGNJAT
+MARKOVIĆ ILIJA
+MARKOVIĆ ILIJA
+MARKOVIĆ IRENA
+MARKOVIĆ IVAN
+MARKOVIĆ IVKO
+MARKOVIĆ JADRANKA
+MARKOVIĆ JADRANKA
+MARKOVIĆ JAROSLAV
+MARKOVIĆ JELENA
+MARKOVIĆ JELICA
+MARKOVIĆ JELICA
+MARKOVIĆ JELISAVKA
+MARKOVIĆ JOVAN DIPL ING
+MARKOVIĆ JOVANKA
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVO
+MARKOVIĆ JOVO
+MARKOVIĆ JULIJA
+MARKOVIĆ JULKA
+MARKOVIĆ KARLO
+MARKOVIĆ KAROLINA
+MARKOVIĆ KAROLINA
+MARKOVIĆ KATA
+MARKOVIĆ KATICA
+MARKOVIĆ KOSANA
+MARKOVIĆ KOSTA
+MARKOVIĆ KRASIMIR
+MARKOVIĆ KSENIJA
+MARKOVIĆ LEPOSAVA LEKAR
+MARKOVIĆ LJUBIŠA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBINKO
+MARKOVIĆ LJUBOMIR
+MARKOVIĆ LJUBOMIR
+MARKOVIĆ LUKA
+MARKOVIĆ-MAJTENJI ANDRIJA
+MARKOVIĆ-MAJTENJI MIHALJ
+MARKOVIĆ MARA
+MARKOVIĆ MARIJA
+MARKOVIĆ MARIJA
+MARKOVIĆ MARINA
+MARKOVIĆ MARKO
+MARKOVIĆ MARKO
+MARKOVIĆ MIHAILO
+MARKOVIĆ MIHAJLO
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILA
+MARKOVIĆ MILEVA
+MARKOVIĆ MILEVA
+MARKOVIĆ MILKO
+MARKOVIĆ MILKO
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOLJUB
+MARKOVIĆ MILOMIR
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILO
+MARKOVIĆ MILUTIN
+MARKOVIĆ MILUTIN
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIRKO
+MARKOVIĆ MIRKO
+MARKOVIĆ MIROSLAVA
+MARKOVIĆ MIROSLAVA
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MLADEN
+MARKOVIĆ MLADEN
+MARKOVIĆ MOMČILO
+MARKOVIĆ MOMČILO
+MARKOVIĆ MOMIR
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NATAŠA
+MARKOVIĆ NATALIJA
+MARKOVIĆ NEDELJKO
+MARKOVIĆ NEGOSLAV
+MARKOVIĆ NEMANJA
+MARKOVIĆ NENAD
+MARKOVIĆ NENAD
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ OBRAD
+MARKOVIĆ OBRAD
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ PAVLE
+MARKOVIĆ PEJČA
+MARKOVIĆ PETAR DIPL ING
+MARKOVIĆ PETAR VETERINAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETRONIJE
+MARKOVIĆ PREDRAG
+MARKOVIĆ PRVOSLAV DR
+MARKOVIĆ RAŠA
+MARKOVIĆ RADENKO
+MARKOVIĆ RADE
+MARKOVIĆ RADINKA
+MARKOVIĆ RADIVOJ
+MARKOVIĆ RADIVOJ
+MARKOVIĆ RADMILA
+MARKOVIĆ RADMILA
+MARKOVIĆ RADOJKA
+MARKOVIĆ RADOSAV DIPL ING
+MARKOVIĆ RADOSAV
+MARKOVIĆ RADOSLAV
+MARKOVIĆ RADOVANKA
+MARKOVIĆ RADOVAN
+MARKOVIĆ RADOVAN
+MARKOVIĆ RADOVAN
+MARKOVIĆ RANKO
+MARKOVIĆ RATKO
+MARKOVIĆ RODOLJUB
+MARKOVIĆ ROZALIJA
+MARKOVIĆ RUŽICA
+MARKOVIĆ RUŽICA
+MARKOVIĆ SAŠA
+MARKOVIĆ SAVA
+MARKOVIĆ SAVA
+MARKOVIĆ SAVA
+MARKOVIĆ SINIŠA
+MARKOVIĆ SINIŠA
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SMILJA
+MARKOVIĆ SRĐAN
+MARKOVIĆ STANA
+MARKOVIĆ STANIŠA
+MARKOVIĆ STANIMIR
+MARKOVIĆ STANISLAV
+MARKOVIĆ STEFANIJA
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJA
+MARKOVIĆ SVETISLAV
+MARKOVIĆ SVETLANA
+MARKOVIĆ SVETOZAR
+MARKOVIĆ SVETOZAR
+MARKOVIĆ TANASIJE
+MARKOVIĆ TATJANA
+MARKOVIĆ TODOR
+MARKOVIĆ TOMISLAV
+MARKOVIĆ UGLJEŠA
+MARKOVIĆ VASA
+MARKOVIĆ VASILIJE DR
+MARKOVIĆ VELIMIR
+MARKOVIĆ VELJKO
+MARKOVIĆ VELJKO
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VIĆA
+MARKOVIĆ VIDOJE
+MARKOVIĆ VIDOSAVA
+MARKOVIĆ VID
+MARKOVIĆ VINKO
+MARKOVIĆ VITKO
+MARKOVIĆ VITOMIR
+MARKOVIĆ VLADAN
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADOJE
+MARKOVIĆ VOJIN
+MARKOVIĆ VOJIN
+MARKOVIĆ VOJISLAV
+MARKOVIĆ ZAGORKA
+MARKOVIĆ ZAGORKA
+MARKOVIĆ ZLATA
+MARKOVIĆ ZLATIJA
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORA
+MARKOVIĆ ZORA
+MARKOVIĆ ZORICA
+MARKOVIĆAN JON
+MARKOVINOVIĆ PETAR
+MARKOVINOVIĆ PETAR
+MARKOVLJEV DRAGAN
+MARKOVSKI CVETANA
+MARKOVSKI JOVAN
+MARKSER IVAN
+MARKSER JOVAN
+MARKUŠ ANKICA
+MARKUŠ BORISLAV
+MARKUŠ EMIL
+MARKUŠ ETELKA
+MARKUŠ JOSIP
+MARKUŠ PREDRAG
+MARKUŠ ZORAN
+MARKUŠEV DRAGICA
+MARKUŠEV JELENA
+MARLOG MIROSLAV
+MAROŠ DUŠAN
+MAROŠ MILOVAN
+MAROŠ STEVAN
+MAROŠ VELJKO
+MAROŠAN TIHOMIR
+MAROŠEV KRISTA
+MAROŠEVIĆ IVAN
+MAROŠEVIĆ MARKO
+MAROŠEVIĆ MATA
+MAROŠEVIĆ NATALIJA
+MAROŠEVIĆ VLADIMIR
+MAROĐI IVAN
+MAROĐI JOLAN
+MAROĐI JOLAN
+MAROCI MARGITA
+MAROJEVIĆ ALEKSANDAR
+MAROJEVIĆ IVANKA
+MAROJEVIĆ JOSIP
+MAROJEVIĆ RADMILO
+MAROJEVIĆ SLAVOLJUB
+MAROLD JOSIP
+MAROLI ISAK
+MARON DENEŠ
+MARON KARLO
+MAROSLAVAC MIROSLAV
+MAROT IVAN
+MAROTI MIKLOŠ
+MAROVIĆ ĐURA
+MAROVIĆ BORIS DR
+MAROVIĆ DARINKA
+MAROVIĆ MILICA
+MAROVIĆ MIRKO
+MAROVIĆ RADOMIR
+MAROVIĆ ZDENKA
+MAROVSKI NIKOLA
+MARSENIĆ DRAGANA
+MARSENIĆ LEKA
+MARSENIĆ SLAVOJKA
+MARTIĆ ŽIVOJIN
+MARTIĆ ĐURA
+MARTIĆ BRANKA
+MARTIĆ DRAGAN
+MARTIĆ KOSTA
+MARTIĆ LAZAR
+MARTIĆ LJUBOMIR
+MARTIĆ MARA
+MARTIĆ MILAN
+MARTIĆ MILENKO
+MARTIĆ MILICA
+MARTIĆ OLGA
+MARTIĆ PERO
+MARTIĆ RADMILA
+MARTIĆ RADOMIR
+MARTIĆ SLAVKO
+MARTIĆ STEVAN
+MARTIĆ VLADIMIR
+MARTIĆ VOJNA
+MARTICKI MLADEN
+MARTIN ALOJZIJE
+MARTIN ANTAL
+MARTIN ENDRE
+MARTIN ERŽEBET
+MARTIN IMRE
+MARTIN IVAN
+MARTIN JOSIF
+MARTIN JOVAN
+MARTIN LJUBINKA
+MARTIN MATILDA
+MARTIN MIROSLAVA
+MARTIN ZVONIMIR
+MARTINČEVIĆ MIHAJLO
+MARTINČIĆ DAVOR
+MARTINČIĆ DAVOR
+MARTINAŠEVIĆ HERMINA
+MARTINAŠEVIĆ OTO
+MARTINAK JOVAN
+MARTINEC ANTON
+MARTINEK ANTAL
+MARTINEK FERENC
+MARTINKO ANDRIJA
+MARTINOV ĐORĐE
+MARTINOV ANKA
+MARTINOV LAZAR
+MARTINOV MIKA
+MARTINOV MILAN DR
+MARTINOV MILICA
+MARTINOV MILOŠ
+MARTINOV MILOŠ
+MARTINOV MILOŠ
+MARTINOV SANDRA
+MARTINOV SAVA
+MARTINOV SLAVKO
+MARTINOV SLAVKO
+MARTINOVIĆ ĐORĐE
+MARTINOVIĆ ANĐELKA
+MARTINOVIĆ ANA
+MARTINOVIĆ ANITA
+MARTINOVIĆ BRANKA
+MARTINOVIĆ DESANKA
+MARTINOVIĆ DUŠAN
+MARTINOVIĆ ELIZABETA
+MARTINOVIĆ FILIP
+MARTINOVIĆ FINKA
+MARTINOVIĆ IVO
+MARTINOVIĆ JELENA
+MARTINOVIĆ JOVAN VETERINAR
+MARTINOVIĆ MARIJANA
+MARTINOVIĆ MARIJA
+MARTINOVIĆ MILE
+MARTINOVIĆ MILICA
+MARTINOVIĆ MILKA
+MARTINOVIĆ MILKA
+MARTINOVIĆ NADA
+MARTINOVIĆ NENAD
+MARTINOVIĆ OLGA
+MARTINOVIĆ PERSIDA
+MARTINOVIĆ RISTA
+MARTINOVIĆ SLAVKO
+MARTINOVIĆ STANIŠA
+MARTINOVIĆ STANKA
+MARTINOVIĆ STEVAN
+MARTINOVIĆ SVETOZAR
+MARTINOVIĆ UROŠ
+MARTINOVIĆ VELIMIR
+MARTINOVIĆ VELJKO
+MARTINOVIĆ ZARIJE
+MARTINOVSKI ROMAN
+MARTON ŠANDOR
+MARTON ŽUŽANA
+MARTON ANDRAŠ
+MARTON FERENC
+MARTON IŠTVAN
+MARTON ILEŠ
+MARTON JOŽEF
+MARTON JOŽEF
+MARTON JOLAN
+MARTON LAJOŠ
+MARTON MAĆAŠ
+MARTON MARIJA
+MARTON ROZA
+MARUŠČUK MIROSLAV
+MARUŠEVIĆ IVAN
+MARUŠIĆ DANICA
+MARUŠIĆ FRANJA
+MARUŠIĆ GORAN
+MARUŠIĆ JULIJANA
+MARUŠIĆ LJUBO
+MARUŠIĆ MIORICA
+MARUŠIĆ NEBOJŠA
+MARUŠIĆ OLGA
+MARUŠIĆ STOJAN
+MARUŠIĆ VLADIMIR
+MARUNIĆ BOSILJKA
+MARUNKIĆ MILINA
+MARUNOVIĆ BLAGOTA
+MASLAĆ ANTE
+MASLAĆ MILENKO
+MASLAĆ RAJKO
+MASLAĆ VINKO
+MASLOVARIĆ BOŽIDAR DR
+MASNEC ANKA
+MASNIKOSA FEMKA
+MASNIKOSA FEMKA
+MASNOV ROZALIJA
+MASTIKOSA DRAGICA
+MASTIKOSA NIKO
+MASTILOVIĆ DUŠAN
+MASTILOVIĆ LJUBICA
+MASTILOVIĆ MIRA
+MASTILOVIĆ MIRKO
+MASTILOVIĆ MOMČILO
+MASTILOVIĆ PLEMA
+MASTILOVIĆ RANKO
+MATAJČIĆ FRANJO
+MATAJČIĆ IVAN
+MATAK MARIJA
+MATAK MARJAN
+MATAK VESNA
+MATAKOVIĆ KATICA
+MATANOV JASMINA
+MATANOVIĆ DEZIDER
+MATANOVIĆ IRENA
+MATANOVIĆ JADRANKA
+MATANOVIĆ JELISAVETA
+MATANOVIĆ MILORAD
+MATANOVIĆ MILORAD
+MATANOVIĆ MIODRAG
+MATANOVIĆ PETAR
+MATANOVIĆ PETAR
+MATANOVIĆ SLAVICA
+MATANOVIĆ VLADA
+MATARUGA LJILJANA
+MATARUGA MILKA
+MATARUGA PAVLE
+MATARUGA ZAGORKA
+MATARUGIN ALEKSANDAR
+MATASIĆ MARIJA
+MATAVULJ MILICA
+MATE ETELKA
+MATE GIZELA
+MATE VENDEL DR
+MATEČIK MIKLOŠ
+MATEJAŠEV ALEKSANDAR
+MATEJAŠEV SVETOZAR
+MATEJAŠEV SVETOZAR
+MATEJEVIĆ JELENA
+MATEJEVIĆ STANKO
+MATEJEVIĆ VELIMIR
+MATEJEVIĆ VLADIMIR
+MATEJEVIĆ ZILDA
+MATEJIĆ ĐURA
+MATEJIĆ ALEKSANDAR
+MATEJIĆ NADEŽDA
+MATEJIĆ RATKO
+MATEJIĆ RUŽICA
+MATEJIĆ SLAVOLJUB DR LEKAR
+MATEJIN ĐORĐE
+MATEJIN DRAGAN
+MATEJIN DRAGIĆ
+MATEJIN DUŠAN
+MATEJIN MILIVOJ
+MATEJIN VESELIN
+MATEKALO MILKA
+MATEKOVIĆ SMILJA
+MATEOVIĆ PUBA DR
+MATEVSKI LUIĐI
+MATIČEK LJUDEVIT
+MATIŠA IRENA
+MATIŠIĆ LJUBOMIR
+MATIĆ ŽARKO
+MATIĆ ŽIVKA
+MATIĆ ŽIVKO
+MATIĆ ŽIVKO
+MATIĆ ŽIVOJIN
+MATIĆ ŽIVORAD
+MATIĆ ĐORĐE
+MATIĆ ĐORĐE
+MATIĆ ĐORĐE
+MATIĆ ĐURĐICA
+MATIĆ ĐURA DR
+MATIĆ ACKO
+MATIĆ ACKO
+MATIĆ ALEKSANDAR
+MATIĆ ALEKSANDAR
+MATIĆ ALEKSANDAR
+MATIĆ ANKA
+MATIĆ ANKICA
+MATIĆ ARANKA
+MATIĆ ARANKA
+MATIĆ-BAUS ŽIVKO
+MATIĆ-BEKVALAC VESNA
+MATIĆ BOŽIDAR DR
+MATIĆ BOJANA
+MATIĆ BRANISLAV
+MATIĆ DAMJAN DIPL ING
+MATIĆ DESANKA
+MATIĆ DOBRICA
+MATIĆ DOBRILO
+MATIĆ DRAGAN
+MATIĆ DRAGAN
+MATIĆ DRAGAN
+MATIĆ DRAGIŠA
+MATIĆ DRAGICA
+MATIĆ DRAGINJA
+MATIĆ DRAGUTIN
+MATIĆ DUŠANKA
+MATIĆ DUŠANKA
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ ELIZABETA
+MATIĆ EVA
+MATIĆ FINKA
+MATIĆ GORDANA
+MATIĆ ILIJA
+MATIĆ JELENA
+MATIĆ JELISAVETA
+MATIĆ JELISAVETA
+MATIĆ JELISAVKA
+MATIĆ JOVAN
+MATIĆ KATICA
+MATIĆ-KEKIĆ SNEŽANA
+MATIĆ KRISTINA
+MATIĆ LAZAR
+MATIĆ LAZAR
+MATIĆ LJILJANA
+MATIĆ LJILJANA
+MATIĆ LJILJANA
+MATIĆ LJUBICA
+MATIĆ LJUBICA
+MATIĆ LJUBO
+MATIĆ LUKA
+MATIĆ MAGDALENA
+MATIĆ MARICA
+MATIĆ MARIJA
+MATIĆ MARKO
+MATIĆ MARKO
+MATIĆ MILAN
+MATIĆ MILAN
+MATIĆ MILAN
+MATIĆ MILENKO
+MATIĆ MILENKO
+MATIĆ MILISAV
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILORAD
+MATIĆ MILORAD
+MATIĆ MILORAD
+MATIĆ MILOVAN
+MATIĆ MIRJANA
+MATIĆ MIRJANA
+MATIĆ MIRKO
+MATIĆ NADA
+MATIĆ NADEŽDA
+MATIĆ NATAŠA
+MATIĆ NATALIJA
+MATIĆ NEGOVAN
+MATIĆ NIKOLA
+MATIĆ NOVICA
+MATIĆ PAVA
+MATIĆ PAVLE
+MATIĆ PAVLE
+MATIĆ PETAR
+MATIĆ PETAR
+MATIĆ PLANINKA
+MATIĆ PREDRAG
+MATIĆ PREDRAG
+MATIĆ RADE
+MATIĆ RADMILA
+MATIĆ RADOJE
+MATIĆ RADOMIR
+MATIĆ RADOMIR
+MATIĆ RADOMIR
+MATIĆ RADOSLAV
+MATIĆ RADOVAN
+MATIĆ RADOVAN
+MATIĆ RAJKO
+MATIĆ SAVA
+MATIĆ SIMA
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLOBODAN
+MATIĆ STANKO
+MATIĆ STANKO
+MATIĆ STAZA
+MATIĆ STIPO
+MATIĆ STOJAN
+MATIĆ SVETLANA
+MATIĆ SVETOZAR
+MATIĆ SVETOZAR
+MATIĆ TOMA
+MATIĆ TOMISLAV
+MATIĆ VALERIJA
+MATIĆ VESELIN
+MATIĆ VIDA
+MATIĆ VITOMIR DIPL ING
+MATIĆ VLADA
+MATIĆ VLADIMIR
+MATIĆ VLADIMIR
+MATIĆ VLADISLAV
+MATIĆ VLASTIMIR MR
+MATIĆ VUJICA
+MATIĆ VUKICA
+MATIĆ ZAGORKA
+MATIĆ ZDRAVKA
+MATIĆ ZORA
+MATICKI MILANA DR
+MATICKI MILOŠ
+MATIJAŠ ILIJA
+MATIJAŠEV ALEKSANDAR
+MATIJAŠEV RADIVOJ
+MATIJAŠEVIĆ ALEKSANDAR
+MATIJAŠEVIĆ JELKA
+MATIJAŠEVIĆ KATICA
+MATIJAŠEVIĆ MARKO
+MATIJAŠEVIĆ MIHAILO
+MATIJAŠEVIĆ STANISLAVKA
+MATIJEVIĆ ANTICA
+MATIJEVIĆ ANTUN
+MATIJEVIĆ BOJAN
+MATIJEVIĆ BRANKO
+MATIJEVIĆ DRAGICA
+MATIJEVIĆ FRANČIŠKA
+MATIJEVIĆ ILIJA
+MATIJEVIĆ JOSIP
+MATIJEVIĆ KATALIN
+MATIJEVIĆ LAJOŠ
+MATIJEVIĆ MARIJA
+MATIJEVIĆ MILE
+MATIJEVIĆ MILOJKO
+MATIJEVIĆ PERO
+MATIJEVIĆ PETAR
+MATIJEVIĆ PETAR
+MATIJEVIĆ PETAR
+MATIJEVIĆ RADE
+MATIJEVIĆ SLAVKO
+MATIJEVIĆ VUKOSAVA
+MATIJEVIĆ ZORAN
+MATIJEVIĆ ZORA
+MATIJEVIĆ ZORA
+MATIN DOROTEA
+MATIN JOSIP
+MATIN LAJOŠ
+MATIN MATIJA
+MATIS ŠANDOR DIPL PRAVNIK
+MATIS ŠANDOR
+MATJAČIĆ VINKO
+MATKO EVA
+MATKOVIĆ ŽARKO
+MATKOVIĆ ŽARKO
+MATKOVIĆ BOŽIDAR
+MATKOVIĆ DRAGOLJUB
+MATKOVIĆ DRAGOLJUB
+MATKOVIĆ JOVAN
+MATKOVIĆ LADISLAV
+MATKOVIĆ MILENKO
+MATKOVIĆ MIROSLAVA
+MATKOVIĆ MIROSLAV
+MATKOVIĆ MIROSLAV
+MATKOVIĆ MOMIR
+MATKOVIĆ RADOVAN
+MATKOVIĆ ROZALIJA
+MATKOVIĆ RUŽICA
+MATKOVIĆ STAMENKO
+MATKOVIĆ VLASTIMIR
+MATKOVIĆ ZDENKA DR
+MATOŠEVIĆ IVAN
+MATOŠIĆ STANISLAV
+MATOŠKOVIĆ AGATA
+MATOŠKOVIĆ TEREZA
+MATOVIĆ ANĐELKO
+MATOVIĆ ANA
+MATOVIĆ BOŽANA
+MATOVIĆ BORIVOJE
+MATOVIĆ BORO
+MATOVIĆ BRANISLAV
+MATOVIĆ DANICA
+MATOVIĆ DARO
+MATOVIĆ DESA
+MATOVIĆ DRAGANA
+MATOVIĆ DRAGIŠA
+MATOVIĆ LJUBINKA
+MATOVIĆ MILAN DIPL ING
+MATOVIĆ MILAN
+MATOVIĆ MILENKO
+MATOVIĆ MILE
+MATOVIĆ-MILIĆ BATRIĆ
+MATOVIĆ MILIĆ
+MATOVIĆ MILOJKO
+MATOVIĆ NATAŠA
+MATOVIĆ PAVLE
+MATOVIĆ PETAR
+MATOVIĆ RADIVOJE
+MATOVIĆ RADOSAV
+MATOVIĆ RADOSLAV
+MATOVIĆ VITOMIR
+MATOVINA FRANJA
+MATOVINA GORAN
+MATOVINA MARKO
+MATRAK DRAGAN
+MATUŠ JAN
+MATUŠKA MARTON
+MATULJIN IGNJAC
+MATUSKI SONJA
+MATVIKOV EUGENIJE
+MAUKOVIĆ VOJISLAV
+MAUL GORDANA
+MAURIĆ FERENC
+MAURIĆ GEZA
+MAURIĆ NENAD
+MAVIĆ SRĐAN
+MAVRAK IMRE
+MAVRENSKI BOGDAN
+MAVRENSKI BORKO
+MAVRENSKI IVICA
+MAVROVIĆ BRANISLAV
+MAZALICA BRANISLAV
+MAZALICA DUŠAN
+MAZALICA GOJKO
+MAZALICA LJUBO
+MAZALICA MARIJA
+MAZALICA RAJKO
+MAZALICA SNEŽANA
+MAZALICA UROŠ
+MAZALICA VASO
+MAZALICA VELJKO
+MAZANČIK ANDRIJA
+MAZANĆIK PAJA
+MAZANJI KARLO
+MAZIĆ ŽIVKO
+MAZIĆ BRANKO
+MAZIĆ DRAGAN
+MAZIĆ LJUBOMIR
+MAZIĆ MIHAJLO
+MAZIĆ MIROSLAV
+MAZIĆ PLETIKOSA
+MAZINJANIN DUŠAN
+MAZLAMI DŽABIR
+MAZUR VUKICA
+MC-CONNELL MARTA
+MEČKAROVSKI DRAGAN
+MEČKIĆ DOBRILA
+MEČKIĆ SLAVKO
+MEŠANOVIĆ HAZIM
+MEŠTER IRENA
+MEŠTEROVIĆ LJILJANA
+MEŠTROVIĆ BOŽIDAR
+MEĆAVA BRANKO
+MEĆAVA DRAGAN
+MEĆAVA MILAN
+MEĐANIN DUŠAN
+MEĐEŠI LJUBOMIR
+MEĐEŠI VLADIMIR
+MEĐED MARICA
+MEĐEDOVIĆ ĐORĐIJE
+MEĐEDOVIĆ BRANKO
+MEĐEDOVIĆ DANILO
+MEĐEDOVIĆ DRAGOLJUB
+MEĐEDOVIĆ DRAGO
+MEĐEDOVIĆ DUBRAVKA
+MEĐEDOVIĆ MIRJANA
+MEĐEDOVIĆ NEMANJA
+MEĐEDOVIĆ RADOVAN
+MEĐERI VERONIKA
+MEĐIMOREC EDUARD
+MEĐIMOREC LJUBOMIR
+MEĐIMOREC STJEPAN
+MEĐIMOREC VIKTOR
+MEAMDŽIJA MIRA
+MEANDŽIĆ SLAVKO
+MECANOV STOJANKA
+MEDAKOV ŽIVKO
+MEDAKOV MARIJA
+MEDAKOV MILAN
+MEDAKOV MILAN
+MEDAKOV MILJANA
+MEDAKOV RADIVOJ
+MEDAKOV VLADIMIR
+MEDAKOVIĆ BOGDAN
+MEDAKOVIĆ DAMIR
+MEDAKOVIĆ DARINKA
+MEDAKOVIĆ DUŠAN
+MEDAKOVIĆ DUŠAN
+MEDAKOVIĆ ILDIKO
+MEDAKOVIĆ ILIJA
+MEDAKOVIĆ JOVAN
+MEDAKOVIĆ LJUBICA
+MEDAKOVIĆ LJUBICA
+MEDAKOVIĆ PETAR
+MEDAKOVIĆ SVETLANA
+MEDAKOVIĆ SVETLANA
+MEDAKOVIĆ VLADISLAV
+MEDAN DRAGINJA
+MEDAN MANOJLO
+MEDAN MILENKO
+MEDAN MILENKO
+MEDAN MILENKO
+MEDAN MILORAD
+MEDAN MIROSLAV
+MEDAN RADENKO
+MEDAN SLAVICA
+MEDAN SPASOJE
+MEDAN VELIMIR
+MEDAN VLADISLAV
+MEDANOVSKI BORIS
+MEDAR VUČKO
+MEDAREVIĆ DRAGAN
+MEDAREVIĆ DRAGAN
+MEDAREVIĆ STANA
+MEDENICA ĐURĐICA
+MEDENICA ĐURO
+MEDENICA BOSILJKA
+MEDENICA MILISAV
+MEDENICA RADOMIR
+MEDENICA SNEŽANA
+MEDENICA SNEŽANA
+MEDENICA VOJISLAV
+MEDENICA VOJISLAV
+MEDER ĐORĐE
+MEDER JELENA
+MEDIĆ ĐURA
+MEDIĆ ĐURA
+MEDIĆ BOŠKO
+MEDIĆ BOGDAN
+MEDIĆ BOGDAN
+MEDIĆ BORIVOJ
+MEDIĆ BRANKA
+MEDIĆ DANE
+MEDIĆ DANE
+MEDIĆ DANICA
+MEDIĆ DRAGICA
+MEDIĆ DRAGOLJUB
+MEDIĆ DRAGOSLAVA
+MEDIĆ DUŠAN
+MEDIĆ DUŠAN
+MEDIĆ GOJKO
+MEDIĆ ILIJA
+MEDIĆ ILIJA
+MEDIĆ ILIJA
+MEDIĆ LAZAR
+MEDIĆ MIĆO
+MEDIĆ MILAN
+MEDIĆ MILAN
+MEDIĆ MILE
+MEDIĆ MILICA
+MEDIĆ MILKA
+MEDIĆ MILOŠ
+MEDIĆ MILORAD
+MEDIĆ MILORAD
+MEDIĆ MIODRAG
+MEDIĆ MIRA
+MEDIĆ MIRJANA
+MEDIĆ MIRKO
+MEDIĆ MIROSLAVA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ PETAR
+MEDIĆ RADE
+MEDIĆ RADOVAN
+MEDIĆ RADOVAN
+MEDIĆ SAVO
+MEDIĆ SIMO
+MEDIĆ SLAVKO
+MEDIĆ SLOBODANKA
+MEDIĆ SMILJA
+MEDIĆ STEVAN
+MEDIĆ SVETOZAR
+MEDIĆ TATJANA
+MEDIĆ ZDRAVKO
+MEDIĆ ZDRAVKO
+MEDIĆ ZORAN
+MEDIĆ ZORA
+MEDOŠ UROŠ
+MEDOJEVIĆ MILAN
+MEDOJEVIĆ MILETA
+MEDOJEVIĆ NIKOLA
+MEDOVARSKI FRANJA
+MEDOVARSKI MIŠA
+MEDOVARSKI PIROŠKA
+MEDOVARSKI PIROŠKA
+MEDOVARSKI STEVAN
+MEDOVIĆ PREDRAG DR
+MEDUNJANIN FEBRONA
+MEDUNJANIN ISIDOR
+MEDURIĆ DANILO
+MEDURIĆ DRAGOMIR
+MEDURIĆ GORAN
+MEDURIĆ IRENA
+MEDURIĆ JELENA
+MEDURIĆ KOSTA
+MEDURIĆ MILIVOJ
+MEDURIĆ PETAR
+MEDURIĆ SMILJA
+MEDURIĆ ZLATA
+MEDVEDOVIĆ DRAGA
+MEGLAJ BOSILJKA
+MEHAKOVIĆ DANICA
+MEHANDŽISKI VENKO
+MEHMETI HISEN
+MEHMETI RAFET
+MEHMETOJ HASAN
+MEJIĆ NEVENKA
+MEKENJIŠAC VESELIN
+MEKENJIŠAC ZORAN
+MEKIĆ SOFIJA
+MEKINDA MARIJAN DR
+MEKINDA MIRJANA
+MEKINIĆ ANTE
+MEKINIĆ MIRJANA
+MEKINIĆ TONKA
+MELAR ANDRAŠ
+MELAR JELENA
+MELAR LJUDEVIT
+MELEG JANKO
+MELEG JOVAN
+MELEG JOVAN
+MELEG MIŠA
+MELEG VLADIMIR
+MELERT VENDEL
+MELINK DUŠANKA
+MELINK JOHAN
+MELJA JULIJANA
+MELJKUTI FERENC
+MELJKUTI JOŽEF
+MELJKUTI KARLO
+MELJKUTI ORBAN
+MELJNIK ILIJA
+MELJNIKOV DESANKA
+MELKUS BOŽA
+MELKUS BORIVOJ
+MELKUS KATICA
+MELKUS MIRJANA
+MELKUS VOJISLAV
+MELO ALEKSANDAR
+MELOVIĆ DEJAN
+MELOVIĆ MILOVAN
+MELVAN ERŽEBET
+MELVAN PETAR
+MELVAN ZORAN
+MELVINGER ALOJZIJA
+MEMAROVIĆ RADOVAN
+MEMEDOVIĆ BORISLAV
+MEMEDOVIĆ BOSILJKA
+MEMEDOVSKI UZEIR
+MEMIŠEVIĆ IBRAHIM
+MEMIŠEVIĆ ISMAIL
+MEMIŠEVIĆ MARJAN
+MEMIŠEVIĆ MEHMED
+MEMIŠEVIĆ RAŠIDA
+MEMIŠI TEFIK
+MEMIDŽAN REDŽO
+MENĐAN ŠANDOR
+MENĐAN MARIJA
+MENĐAN PAVEL
+MENĐAN RASTISLAV
+MENDEBABA BORISLAV
+MENDEBABA PANTA
+MENDEL ELIZABETA
+MENDRAGIĆ ĐORĐE
+MENDREI HELENA
+MENEŠI BELA
+MENEŠI IRENA
+MENEŠI LASLO
+MENGL IREN
+MENGL LAJOŠ
+MENIČANIN JELA
+MENIČANIN STEVAN
+MENIĆANIN PETAR
+MENJAK IVAN
+MENZILDŽIĆ GABRIJELA
+MERČ JANOŠ
+MERČA STEVAN
+MERŠ MILAN
+MERŽA KAROLJ
+MERĐELOŠKI MILICA
+MERC EVA
+MERDIĆ MIROSLAV
+MERDOVIĆ MILKA
+MEREI KATALIN
+MEREI MARGITA
+MERGANC KATICA
+MERGEŠ JANOŠ
+MERGEL MARIJA
+MERIČAR RADOJICA
+MERKOVIĆ ALEKSANDAR
+MERKOVIĆ ALOJZ
+MERKOVIĆ ANKICA
+MERKOVIĆ JUDIT
+MERKOVIĆ LJUDEVIT
+MERKOVIĆ NIKOLA
+MERKOVIĆ PETAR
+MERKOVIĆ SILVIA
+MERKOVIĆ SVETISLAVA
+MERKOVIĆ VERA
+MERKULOV LJILJANA
+MERKVA EMA
+MERKVA JOŽEF
+MERNJAK FRANJO
+MESAK NIKOLA
+MESARIĆ GABRIJELA
+MESAROŠ ŠANDOR DR
+MESAROŠ ĐURA
+MESAROŠ ANDRAŠ
+MESAROŠ ARPAD
+MESAROŠ ATILA
+MESAROŠ BALAŽ
+MESAROŠ FERENC
+MESAROŠ FRANJA
+MESAROŠ GEZA
+MESAROŠ GEZA
+MESAROŠ GORAN
+MESAROŠ IŠTVAN
+MESAROŠ IŠTVAN
+MESAROŠ ILONA
+MESAROŠ ILONA
+MESAROŠ IMRE
+MESAROŠ JELENA
+MESAROŠ JELICA
+MESAROŠ JOSIF
+MESAROŠ JOSO
+MESAROŠ KARLO
+MESAROŠ KATICA
+MESAROŠ LAJOŠ
+MESAROŠ LASLO
+MESAROŠ LEON
+MESAROŠ MIHALJ
+MESAROŠ MIKLOŠ
+MESAROŠ PAVLE
+MESAROŠ PIROŠKA
+MESAROŠ STEVAN
+MESAROŠ TIBOR
+MESAROŠ TIBOR
+MESAROŠ ZOLTAN
+MESAROŠ ZORA DIPL ING
+MESAROŠ ZORICA
+MESAROVIĆ DUŠAN
+MESAROVIĆ JOVAN
+MESAROVIĆ MARGITA
+MESAROVIĆ MILAN
+MESAROVIĆ SVETOLIK
+MESEŠAN GEZA
+MESELDŽIJA ŽIVKO
+MESELDŽIJA NADEŽDA
+MESELDŽIJA OSTOJA
+MESELDŽIJA RAJKO
+MESELDŽIJA SLAVICA
+MESELDŽIJA STANIMIR
+METELJSKI SERGIJE
+METODIJEVIĆ MILOSAV
+MEZE JULIJANA
+MEZEŠ IMRE
+MEZEI ŠANDOR
+MEZEI JOŽEF
+MEZEI LADISLAV
+MEZEI LASLO
+MEZEI SNEŽANA
+MEZEI STEVAN DR
+MEZEI STEVAN
+MIČA JOSIP
+MIČA JOVAN
+MIČIĆ-ĐERMANOV VIDA
+MIČIĆ BOŠKO
+MIČIĆ BOŠKO
+MIČIĆ MIRJANA
+MIČIĆ-MITROVIĆ MILICA
+MIČIĆ NEDELJKO
+MIČIĆ SNEŽANA
+MIČIĆ SOFIJA
+MIČIĆ ZORA
+MIČURIN JOSIP
+MIŠČEVIĆ BRANKO
+MIŠČEVIĆ BRANKO
+MIŠČEVIĆ DUŠAN
+MIŠČEVIĆ DUŠAN
+MIŠČEVIĆ ILIJA
+MIŠČEVIĆ IVANKA
+MIŠČEVIĆ MARIJA
+MIŠČEVIĆ MICA
+MIŠČEVIĆ MILADIN
+MIŠČEVIĆ MILAN
+MIŠČEVIĆ NIKOLA
+MIŠČEVIĆ OLGA
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ VLADIMIR
+MIŠČEVIĆ ZLATKO
+MIŠAN LAZAR
+MIŠANOVIĆ DRAGOLJUB
+MIŠANOVIĆ SIMO
+MIŠELIĆ JEFTA
+MIŠIĆ ČEDOMIR
+MIŠIĆ ĐURA
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ANĐELIJA
+MIŠIĆ ANĐELKA
+MIŠIĆ ANA
+MIŠIĆ BOGDAN
+MIŠIĆ BUDIMIR
+MIŠIĆ DRAGICA
+MIŠIĆ DRAGICA
+MIŠIĆ ETJEN
+MIŠIĆ GORAN
+MIŠIĆ IVAN
+MIŠIĆ IVAN
+MIŠIĆ JAGODA
+MIŠIĆ JAKOV
+MIŠIĆ JASMINA
+MIŠIĆ JOSIP
+MIŠIĆ JOVAN
+MIŠIĆ LAZAR
+MIŠIĆ LAZAR
+MIŠIĆ LINKA
+MIŠIĆ LJILJANA
+MIŠIĆ LJUBO
+MIŠIĆ MARIJA
+MIŠIĆ MARKO
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILOSAVKA
+MIŠIĆ MILOVAN
+MIŠIĆ MIODRAG
+MIŠIĆ MIOMIR
+MIŠIĆ MIRJANA
+MIŠIĆ MIROSLAV
+MIŠIĆ MIROSLAV
+MIŠIĆ NADA
+MIŠIĆ NENAD
+MIŠIĆ NESTOR
+MIŠIĆ NIKOLA
+MIŠIĆ PETAR
+MIŠIĆ PREDRAG
+MIŠIĆ RADE
+MIŠIĆ RADIVOJE
+MIŠIĆ RADIVOJE
+MIŠIĆ RADOJKA
+MIŠIĆ RANKO
+MIŠIĆ SAVA
+MIŠIĆ SLAVKO
+MIŠIĆ SLOBODAN
+MIŠIĆ SLOBODAN
+MIŠIĆ SLOBODAN
+MIŠIĆ SOFIJA
+MIŠIĆ STIPO
+MIŠIĆ STJEPAN
+MIŠIĆ SVETOZAR
+MIŠIĆ SVETOZAR
+MIŠIĆ TODOR DR
+MIŠIĆ TUGOMIR
+MIŠIĆ VASA
+MIŠIĆ VIDOSAVA
+MIŠIĆ VLADICA
+MIŠIĆ VOJIN
+MIŠIĆ ZDRAVKO
+MIŠIĆ ZORAN
+MIŠIĆ ZORA
+MIŠIĆ ZORICA
+MIŠIĆ ZVONIMIR
+MIŠINSKI JELENA
+MIŠKAR JOVAN
+MIŠKELJIN BOŠKO
+MIŠKIĆ ŠIMUN
+MIŠKIĆ DUŠAN
+MIŠKIĆ IVAN
+MIŠKIĆ MILAN
+MIŠKIĆ RAJKO
+MIŠKIĆ RANKO
+MIŠKIĆ SVETISLAVKA
+MIŠKIĆ VITOMIR
+MIŠKIĆEVIĆ BORIVOJ
+MIŠKLJIN KATICA
+MIŠKOV ĐURĐINKA
+MIŠKOV ALEKSANDAR
+MIŠKOV ANGELINA
+MIŠKOV ANKA
+MIŠKOV ANKICA
+MIŠKOV AVRAM
+MIŠKOV BILJANA
+MIŠKOV BOJKA
+MIŠKOV BRANIMIR
+MIŠKOV BRANKO
+MIŠKOV IVICA
+MIŠKOV JOVAN
+MIŠKOV KATARINA
+MIŠKOV KATARINA
+MIŠKOV LJUBICA
+MIŠKOV LJUBICA
+MIŠKOV MAKSA
+MIŠKOV MARICA
+MIŠKOV MILOŠ
+MIŠKOV MILOVAN
+MIŠKOV MIROSLAV
+MIŠKOV NADA
+MIŠKOV NEVENKA
+MIŠKOV NIKOLA
+MIŠKOV NOVA
+MIŠKOV RADIVOJ
+MIŠKOV SAVA DIPL ING
+MIŠKOV SAVA
+MIŠKOV STANKA
+MIŠKOV STEVAN
+MIŠKOV VESNA
+MIŠKOV VESNA
+MIŠKOV ZAGORKA
+MIŠKOV ZLATA
+MIŠKOVIĆ ŽIVKO
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ALEKSANDRA
+MIŠKOVIĆ ANA
+MIŠKOVIĆ ANA
+MIŠKOVIĆ ARSA
+MIŠKOVIĆ BLAŽO
+MIŠKOVIĆ BOŽIDAR
+MIŠKOVIĆ BOJANA
+MIŠKOVIĆ BOJAN
+MIŠKOVIĆ BORIVOJ
+MIŠKOVIĆ BRANISLAV
+MIŠKOVIĆ BRANKO
+MIŠKOVIĆ CVETKO
+MIŠKOVIĆ DANČIKA
+MIŠKOVIĆ DARINKA
+MIŠKOVIĆ DELINKA
+MIŠKOVIĆ DRAGAN
+MIŠKOVIĆ DRAGORAD
+MIŠKOVIĆ DUBRAVKA
+MIŠKOVIĆ ILIJA
+MIŠKOVIĆ ILIJA
+MIŠKOVIĆ ILONKA
+MIŠKOVIĆ JOCA
+MIŠKOVIĆ JOVAN
+MIŠKOVIĆ LAZAR
+MIŠKOVIĆ LJUBICA
+MIŠKOVIĆ LJUBICA
+MIŠKOVIĆ MARKO
+MIŠKOVIĆ MIHAJLO
+MIŠKOVIĆ MILKA
+MIŠKOVIĆ MILOŠ
+MIŠKOVIĆ MILOJE
+MIŠKOVIĆ MILORAD
+MIŠKOVIĆ MIODRAG
+MIŠKOVIĆ MIRJANA
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIROSLAVA
+MIŠKOVIĆ NENAD
+MIŠKOVIĆ NIĆIFOR
+MIŠKOVIĆ OBRAD
+MIŠKOVIĆ OLGICA
+MIŠKOVIĆ PETAR
+MIŠKOVIĆ RADE
+MIŠKOVIĆ RADIVOJ MR
+MIŠKOVIĆ RADOSLAV
+MIŠKOVIĆ RANKO
+MIŠKOVIĆ SAŠA
+MIŠKOVIĆ SAVKA
+MIŠKOVIĆ STANKA
+MIŠKOVIĆ STEVAN
+MIŠKOVIĆ STEVAN
+MIŠKOVIĆ TANJA
+MIŠKOVIĆ VIDOSAVA
+MIŠKOVIĆ VIJENCESLAV
+MIŠKOVIĆ VUKICA
+MIŠKOVIĆ VUKICA
+MIŠKOVIĆ ZRNKA
+MIŠKOVIC LJUDEVIT
+MIŠKOVIC ZUZANA
+MIŠKULIN DRAGIŠA
+MIŠKULIN NADA
+MIŠKULIN NIKOLA
+MIŠLJENOVIĆ MIODRAG
+MIŠLOV LJUBICA
+MIŠOVIĆ MIRKO
+MIŠOVSKI RISTO
+MIŠULIĆ PETAR
+MIŠULIĆ VIDAK
+MIŠULIĆ VOJISLAV
+MIŠURA IVAN
+MIĆAŠEVIĆ BOŠKO
+MIĆAŠEVIĆ SAVA
+MIĆANOVIĆ DRAGAN
+MIĆANOVIĆ DRAGIŠA
+MIĆANOVIĆ MARJAN
+MIĆEVIĆ DUŠAN
+MIĆEVIĆ SOFIJA
+MIĆIĆ ĐORĐE
+MIĆIĆ ĐURĐINA
+MIĆIĆ BOJANA
+MIĆIĆ BRANISLAV
+MIĆIĆ BRANKA
+MIĆIĆ BRANKO DIPL ING
+MIĆIĆ BRANO
+MIĆIĆ CVIJETIN
+MIĆIĆ DRAGOLJUB
+MIĆIĆ DUŠAN DIPL PRAVNIK
+MIĆIĆ DUŠAN
+MIĆIĆ DUŠAN
+MIĆIĆ ILIJA
+MIĆIĆ JOVANKA
+MIĆIĆ KONSTANTINA
+MIĆIĆ KRSTA
+MIĆIĆ LJUBOMIR
+MIĆIĆ LJUBOMIR
+MIĆIĆ MARIJA
+MIĆIĆ MIHAJLO
+MIĆIĆ MILANA
+MIĆIĆ MILENA
+MIĆIĆ MILENKO DIPL ING
+MIĆIĆ MILICA
+MIĆIĆ MILICA
+MIĆIĆ MILKA
+MIĆIĆ MILORAD
+MIĆIĆ MIROSLAV
+MIĆIĆ OLIVERA
+MIĆIĆ OZREN
+MIĆIĆ RADMILA
+MIĆIĆ RADOJICA
+MIĆIĆ RADOVAN
+MIĆIĆ RODOLJUB
+MIĆIĆ SLAVICA
+MIĆIĆ SLAVKO
+MIĆIĆ SMILJA
+MIĆIĆ STOJAN
+MIĆIĆ SUZANA
+MIĆIĆ VELIMIR
+MIĆIĆ VLADIMIR
+MIĆIN ŽARKO
+MIĆIN ĐORĐE
+MIĆIN DUŠKO
+MIĆIN LAZA
+MIĆIN MILICA
+MIĆIN RADOVAN
+MIĆIN UROŠ
+MIĆKOVIĆ MILINKO
+MIĆOVIĆ ČEDOMIR
+MIĆOVIĆ BORISLAV
+MIĆOVIĆ BOSILJKA
+MIĆOVIĆ JANKO
+MIĆOVIĆ KOSTADIN DR
+MIĆOVIĆ MILAN
+MIĆOVIĆ MIRJANA
+MIĆOVIĆ NEBOJŠA DIPL ING
+MIĆOVIĆ PREDRAG DIPL ING
+MIĆOVIĆ STOJANKA
+MIĆOVIĆ VELIMIR
+MIĆUNOVIĆ DRAGUTIN
+MIĆUNOVIĆ MARICA
+MIĆUNOVIĆ STANKA
+MIĆUNOVIĆ VLADO
+MIĆUNOVIĆ VOJISLAVKA
+MIAVEC MAĆAŠ
+MICAI MARIJA
+MICIĆ DRAGAN
+MICIĆ DRAGOLJUB
+MICIĆ DRAGOLJUB
+MICIĆ DUŠAN
+MICIĆ KRSTA DR
+MICIĆ MIRKO
+MICKOV BLAGOJ
+MICKOV ELENA
+MIDI NENAD
+MIDIĆ ĐORĐE
+MIDIĆ BORIVOJ
+MIDIĆ-DUNĐERSKI MILENA
+MIDIĆ JELENA
+MIDIĆ JOVAN
+MIDIĆ LJUBIŠA
+MIDIĆ MILENKO
+MIDIĆ MILORAD
+MIDIĆ SLOBODAN
+MIDIĆ STEVAN
+MIDIĆ SVETOZAR
+MIDIĆ SVETOZAR
+MIDIĆ ZORKA
+MIGLINCI BARBARA
+MIGLINCI ETELKA
+MIGLINCI JELENA
+MIGLINCI LASLO
+MIHAILOVIĆ ČEDOMIR
+MIHAILOVIĆ ĐOKO
+MIHAILOVIĆ DRAGUTIN
+MIHAILOVIĆ GORAN
+MIHAILOVIĆ JOVAN
+MIHAILOVIĆ KOSTADIN
+MIHAILOVIĆ LJUBICA
+MIHAILOVIĆ MILAN
+MIHAILOVIĆ MILOŠ
+MIHAILOVIĆ MIODRAG
+MIHAILOVIĆ MIROSLAV
+MIHAILOVIĆ MIROSLAV
+MIHAILOVIĆ SLAVOLJUB
+MIHAILOVIĆ SVETLANA
+MIHAILOVIĆ SVETOZAR
+MIHAILOVIĆ VELIBOR
+MIHAILOVIĆ VERA DR
+MIHAILOVIĆ VOJISLAV
+MIHAILOVIĆ ZORAN
+MIHAJLJEVIĆ RATOMIR
+MIHAJLO LJAVO
+MIHAJLOV ŽIVA
+MIHAJLOV ĐORĐE
+MIHAJLOV ALEKSANDAR DR
+MIHAJLOV BOGDAN
+MIHAJLOV BRANISLAV
+MIHAJLOV DRAGANA
+MIHAJLOV DRAGAN
+MIHAJLOV DUŠAN
+MIHAJLOV IVAN
+MIHAJLOV JOVANKA
+MIHAJLOV LAZAR
+MIHAJLOV LJILJANA
+MIHAJLOV MARIJA
+MIHAJLOV MILAN
+MIHAJLOV MILOŠ
+MIHAJLOV MILORAD
+MIHAJLOV MILOVAN
+MIHAJLOV MILOVAN
+MIHAJLOV MIROSLAVA
+MIHAJLOV NIKOLA
+MIHAJLOV OLGA
+MIHAJLOV RADOJKA
+MIHAJLOV RADOSLAV
+MIHAJLOV SPASOJE
+MIHAJLOV VERA
+MIHAJLOV VESELIN
+MIHAJLOV VIDOSAV
+MIHAJLOV ZORAN
+MIHAJLOVIĆ ČEDOMIR
+MIHAJLOVIĆ ČEDO
+MIHAJLOVIĆ ŽARKO
+MIHAJLOVIĆ ŽARKO
+MIHAJLOVIĆ ŽELJKO
+MIHAJLOVIĆ ŽIVKO
+MIHAJLOVIĆ ŽIVOJIN
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐURA
+MIHAJLOVIĆ ANĐELKO
+MIHAJLOVIĆ ANICA
+MIHAJLOVIĆ ANKA
+MIHAJLOVIĆ BOŠKO
+MIHAJLOVIĆ BOGOLJUB DR
+MIHAJLOVIĆ BOGOLJUB
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANKA
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ DANKA
+MIHAJLOVIĆ DARINKA
+MIHAJLOVIĆ DEJAN
+MIHAJLOVIĆ DEJAN
+MIHAJLOVIĆ DELIJA
+MIHAJLOVIĆ DIMITRIJE
+MIHAJLOVIĆ DRAGIŠA
+MIHAJLOVIĆ DRAGOLJUB DR LEKAR
+MIHAJLOVIĆ DRAGOLJUB
+MIHAJLOVIĆ DRAGOLJUB
+MIHAJLOVIĆ DRENKA
+MIHAJLOVIĆ DUŠANKA
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠKO
+MIHAJLOVIĆ ERNEST
+MIHAJLOVIĆ FRANJA
+MIHAJLOVIĆ GOJKO
+MIHAJLOVIĆ GORDANA
+MIHAJLOVIĆ GORDANA
+MIHAJLOVIĆ ILE
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ IVANKA
+MIHAJLOVIĆ JASMINA DR
+MIHAJLOVIĆ JELA
+MIHAJLOVIĆ JELENKO
+MIHAJLOVIĆ JELICA
+MIHAJLOVIĆ JELICA
+MIHAJLOVIĆ JOKA
+MIHAJLOVIĆ JOVAN DIPL ING
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JULIJANA
+MIHAJLOVIĆ KATICA
+MIHAJLOVIĆ KOSTA
+MIHAJLOVIĆ KRISTINA
+MIHAJLOVIĆ KSENIJA
+MIHAJLOVIĆ LAZO
+MIHAJLOVIĆ LENKA
+MIHAJLOVIĆ LENKA
+MIHAJLOVIĆ LEPOSAVA
+MIHAJLOVIĆ LJUBIŠA
+MIHAJLOVIĆ LJUBO
+MIHAJLOVIĆ MARGITA
+MIHAJLOVIĆ MARIJA
+MIHAJLOVIĆ MARIJA
+MIHAJLOVIĆ MIĆA
+MIHAJLOVIĆ MIHAJLO
+MIHAJLOVIĆ MILADIN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILA
+MIHAJLOVIĆ MILENKO
+MIHAJLOVIĆ MILENKO
+MIHAJLOVIĆ MILETA
+MIHAJLOVIĆ MILE
+MIHAJLOVIĆ MILICA
+MIHAJLOVIĆ MILORAD DIPL ING
+MIHAJLOVIĆ MILORAD
+MIHAJLOVIĆ MILORAD
+MIHAJLOVIĆ MILOVAN
+MIHAJLOVIĆ MILUN
+MIHAJLOVIĆ MIRA
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIROLJUB DIPL ING
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MOMČILO
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADIRA
+MIHAJLOVIĆ NEBOJŠA
+MIHAJLOVIĆ NEDELJKO
+MIHAJLOVIĆ NEDELJKO
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NOVAK
+MIHAJLOVIĆ OLIVERA
+MIHAJLOVIĆ OSTOJA
+MIHAJLOVIĆ PETAR
+MIHAJLOVIĆ PRVOSLAV
+MIHAJLOVIĆ RADE
+MIHAJLOVIĆ RADIVOJ
+MIHAJLOVIĆ RADMILA
+MIHAJLOVIĆ RADMILA
+MIHAJLOVIĆ RADOMIR
+MIHAJLOVIĆ RADOSLAV
+MIHAJLOVIĆ RADOSLAV
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ ROZALIJA
+MIHAJLOVIĆ RUŽICA
+MIHAJLOVIĆ RUŽICA
+MIHAJLOVIĆ SANJA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVO
+MIHAJLOVIĆ SINIŠA
+MIHAJLOVIĆ SLAVICA
+MIHAJLOVIĆ SLAVKO
+MIHAJLOVIĆ SLAVOLJUPKA
+MIHAJLOVIĆ SLOBODAN
+MIHAJLOVIĆ SLOBODAN
+MIHAJLOVIĆ SMILJANA
+MIHAJLOVIĆ SOFIJA
+MIHAJLOVIĆ SRĐA
+MIHAJLOVIĆ SRBISLAV DR LEKAR
+MIHAJLOVIĆ SRETEN
+MIHAJLOVIĆ SRETKO
+MIHAJLOVIĆ STANIŠA DIPL ING
+MIHAJLOVIĆ STANISLAVA
+MIHAJLOVIĆ STANKO
+MIHAJLOVIĆ STEVAN
+MIHAJLOVIĆ STEVAN
+MIHAJLOVIĆ STEVA
+MIHAJLOVIĆ STEVICA
+MIHAJLOVIĆ STOJAN
+MIHAJLOVIĆ STOJAN
+MIHAJLOVIĆ-SUBIĆ JOVANKA
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ TUGOMIR
+MIHAJLOVIĆ UROŠ
+MIHAJLOVIĆ VASA
+MIHAJLOVIĆ VERA
+MIHAJLOVIĆ VITOMIR
+MIHAJLOVIĆ VLADIMIR
+MIHAJLOVIĆ VLADIMIR
+MIHAJLOVIĆ VOJISLAV
+MIHAJLOVIĆ ZORANA
+MIHAJLOVIĆ ZORICA
+MIHAJLOVSKI LJUBINKA
+MIHAJLOVSKI MIROSLAV
+MIHAJLOVSKI VLADIMIR
+MIHALAČKI MIHAILO
+MIHALAČKI SLOBODAN
+MIHALEC ANGELINA
+MIHALEC MARIJA
+MIHALEK IVAN
+MIHALEK MARIJA
+MIHALENKO STEVAN
+MIHALIĆ PETAR
+MIHALIK-TIR ZUZANA
+MIHALJ ESTER
+MIHALJ MARIJA DR
+MIHALJ MIHAJLO DR
+MIHALJ MIROSLAV DR
+MIHALJ VLADIMIR
+MIHALJČEVIĆ ALOJZIJE
+MIHALJČIĆ DRAGAN
+MIHALJČIĆ GOJKO
+MIHALJČIĆ ILE
+MIHALJČIĆ JOVAN
+MIHALJČIĆ JOVAN
+MIHALJČIĆ LUKA
+MIHALJČIĆ MITAR
+MIHALJČIĆ SPASOJE
+MIHALJEV ŽELJKO
+MIHALJEV IVAN DR
+MIHALJEV STOJAN
+MIHALJEVIĆ ANTON
+MIHALJEVIĆ EMIL
+MIHALJEVIĆ IVAN
+MIHALJEVIĆ MILAN
+MIHALJEVIĆ RUŽICA
+MIHALJEVIĆ ZDRAVKO
+MIHALJFI MARIKA
+MIHALJI MARIJA
+MIHALJIČIĆ BRANKO
+MIHALJIČIĆ DMITAR
+MIHALJIČIĆ JOVANKA
+MIHALJIČIĆ SIMO
+MIHALJIČIĆ TODE
+MIHALJICA ANĐA
+MIHALJICA BOŽO
+MIHALJICA CVETKO
+MIHALJICA MIRA
+MIHALJKA BRANISLAV
+MIHALJOVSKI DANILO
+MIHALOVIĆ BRANKO
+MIHALOVIĆ GROZDANA
+MIHELJ FRANJO
+MIHEVC IVANKA
+MIHIĆ ČEDOMIR
+MIHIĆ BOŽIDAR
+MIHIĆ MILAN
+MIHIĆ MILAN
+MIHIĆ MILENA
+MIHIĆ RISTO
+MIHIĆ RISTO
+MIHIĆ SAVA DIPL ING
+MIHIĆ VERA
+MIHIĆ VLADIMIR
+MIHIĆ VOJISLAVKA
+MIHIĆ ZORAN
+MIHLIC PETAR
+MIHNJAK JOAKIM
+MIHNJAK KATICA
+MIHNJAK LADISLAV
+MIHNJAK MELANIJA
+MIHNJAK NADA
+MIHNJAK PETAR
+MIHOCI FRANJA
+MIHOCI ZVONIMIR
+MIHOJEVIĆ ĐORĐE
+MIHOJEVIĆ MILENA
+MIHOJEVIĆ NIKOLA
+MIHOJEVIĆ SNEŽANA
+MIHOLČIĆ STEVICA
+MIHOLJEVIĆ EMA
+MIHOLJEVIĆ MILOTKA
+MIJAČ SLAVKO
+MIJAČEVIĆ MILAN
+MIJADŽEVIĆ JOVO
+MIJAILOVIĆ ĐORĐE
+MIJAILOVIĆ MILIVOJE
+MIJAILOVIĆ PANTELIJA
+MIJAILOVIĆ RANISAV
+MIJAILOVIĆ RANKO
+MIJAILOVIĆ STANOJE
+MIJAJLOVIĆ AJNA
+MIJAJLOVIĆ VUKOSAVA
+MIJALČIĆ MILAN
+MIJALČIĆ SAVA
+MIJALČIĆ ZORA
+MIJALICA SVETOSLAV
+MIJANOVIĆ ĐORĐE
+MIJANOVIĆ ĐORĐE
+MIJANOVIĆ MILICA
+MIJANOVIĆ MILOŠ
+MIJANOVIĆ MILORAD
+MIJANOVIĆ MILORAD
+MIJANOVIĆ PAVLE
+MIJANOVIĆ RADOMIR
+MIJAT IVAN
+MIJAT MILANKA
+MIJAT ROKO
+MIJAT TOMISLAV
+MIJATOV ŽIVKA
+MIJATOV ALEKSANDAR
+MIJATOV ANĐELKA
+MIJATOV BRANISLAV
+MIJATOV DRAGIĆ
+MIJATOV DRAGICA
+MIJATOV IVAN
+MIJATOV IVAN
+MIJATOV JOSA
+MIJATOV KATICA
+MIJATOV LAZAR
+MIJATOV LJUBINKA
+MIJATOV LJUBOMIR
+MIJATOV MILADIN
+MIJATOV MILAN
+MIJATOV MILAN
+MIJATOV MILAN
+MIJATOV MILA
+MIJATOV MILENKO
+MIJATOV MILOŠ
+MIJATOV MILORAD
+MIJATOV MIODRAG
+MIJATOV MIRJANA
+MIJATOV RADIVOJ
+MIJATOV RADOVAN
+MIJATOV SAVA
+MIJATOV SAVKA
+MIJATOV SLAVKO
+MIJATOV SMILJKA
+MIJATOV STEVAN
+MIJATOV VIDOSAVA
+MIJATOV VOJIN
+MIJATOV ZLATINKA
+MIJATOVIĆ ŽIVAN
+MIJATOVIĆ ĐORĐE
+MIJATOVIĆ ĐUJA
+MIJATOVIĆ ĐURICA
+MIJATOVIĆ ĐURO
+MIJATOVIĆ ALEKSANDRA
+MIJATOVIĆ ANTONIJE
+MIJATOVIĆ BISERKA
+MIJATOVIĆ BOŠKO
+MIJATOVIĆ BOŽIDAR
+MIJATOVIĆ BOŽO
+MIJATOVIĆ BOGOMIR
+MIJATOVIĆ BRANKO
+MIJATOVIĆ DRAGAN
+MIJATOVIĆ DRAGAN
+MIJATOVIĆ DRAGIĆ
+MIJATOVIĆ DRAGI
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ GOJKO
+MIJATOVIĆ ILIJA
+MIJATOVIĆ ILIJA
+MIJATOVIĆ JOVAN
+MIJATOVIĆ JOVAN
+MIJATOVIĆ KATICA
+MIJATOVIĆ KOSTA
+MIJATOVIĆ LAZAR
+MIJATOVIĆ LAZAR
+MIJATOVIĆ LELA
+MIJATOVIĆ LJILJANA
+MIJATOVIĆ LJUBENKO
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ MARTA
+MIJATOVIĆ MATO
+MIJATOVIĆ MIŠA
+MIJATOVIĆ MILAN
+MIJATOVIĆ MILEVA
+MIJATOVIĆ MILIVOJE
+MIJATOVIĆ MILKO
+MIJATOVIĆ MILOŠ
+MIJATOVIĆ MILORAD
+MIJATOVIĆ MILOVAN
+MIJATOVIĆ MIODRAG
+MIJATOVIĆ MIRA
+MIJATOVIĆ MIRJANA
+MIJATOVIĆ MIRJANA
+MIJATOVIĆ NATAŠA
+MIJATOVIĆ NEVENA
+MIJATOVIĆ NIKOLA
+MIJATOVIĆ NOVO
+MIJATOVIĆ OBRAD
+MIJATOVIĆ PERA
+MIJATOVIĆ PETAR
+MIJATOVIĆ-PUŠIĆ BRANISLAVA DR
+MIJATOVIĆ RADIČ
+MIJATOVIĆ RADOSLAV
+MIJATOVIĆ SIMO
+MIJATOVIĆ SNEŽANA
+MIJATOVIĆ STANA
+MIJATOVIĆ TOŠA
+MIJATOVIĆ TOMISLAV
+MIJATOVIĆ VERA
+MIJATOVIĆ VERA
+MIJATOVIĆ VID
+MIJATOVIĆ VLADAN
+MIJATOVIĆ VOJIN ADVOKAT
+MIJATOVIĆ ZDRAVKO DIPL ING
+MIJATOVIĆ ZORAN
+MIJATOVIĆ ZORA
+MIJATOVIĆ ZORICA
+MIJATOVIĆ ZVONIMIR
+MIJAVEC ĐORĐE
+MIJAVEC JOVAN
+MIJAVEC LUDVIG
+MIJAVEC MIHAJLO
+MIJAVEC PAJA
+MIJAVEC ZORA
+MIJIĆ ŽELJKO
+MIJIĆ ŽELJKO
+MIJIĆ ĐORĐE
+MIJIĆ ALEKSANDAR
+MIJIĆ ANTE
+MIJIĆ BRANKO
+MIJIĆ DESANKA
+MIJIĆ DRAGAN
+MIJIĆ DUŠAN
+MIJIĆ ILIJA
+MIJIĆ JANJA
+MIJIĆ MIHAJLO
+MIJIĆ MILAN
+MIJIĆ MILOŠ
+MIJIĆ MIODRAG
+MIJIĆ NIKOLA
+MIJIĆ PERA
+MIJIĆ PETAR
+MIJIĆ PETAR
+MIJIĆ RADOVAN
+MIJIĆ RADOVAN
+MIJIĆ SAVA
+MIJIĆ SVETISLAV
+MIJIĆ TINKA
+MIJIĆ VELJKO
+MIJIĆ VESNA
+MIJIĆ VLADIMIR
+MIJIN BORISLAV
+MIJIN BRANISLAV
+MIJIN JOVA
+MIJIN LAZAR
+MIJIN LAZAR
+MIJIN MILAN
+MIJIN MILEVA
+MIJIN MILICA
+MIJIN MILOŠ
+MIJIN PETAR
+MIJIN PETAR
+MIJIN RADA
+MIJIN SAVA
+MIJIN SIMA
+MIJIN STEVAN
+MIJIN SVETOZAR
+MIJOKOV DRAGAN
+MIJOLIĆ SLOBODAN
+MIJOLJEVIĆ MILENKO
+MIJOVIĆ ŽARKO
+MIJOVIĆ DRAGICA
+MIJOVIĆ GAVRILO
+MIJOVIĆ RADOJKA
+MIJOVIĆ VERA
+MIJUČIĆ STEVAN
+MIJUČIĆ VERA
+MIJUČIN MILKA
+MIJUŠKOVIĆ DRAGICA
+MIJUŠKOVIĆ JOVAN
+MIJUŠKOVIĆ MILIVOJE
+MIJUŠKOVIĆ OBREN
+MIJUŠKOVIĆ RADE
+MIJUŠKOVIĆ RADMILA
+MIJUŠKOVIĆ TINKA
+MIKŠA MILAN
+MIKŠIĆ ČEDOMIR
+MIKŠIĆ OTON
+MIKŠIĆ SLOBODAN
+MIKAŠINOVIĆ BILJANA
+MIKAŠINOVIĆ SAVA
+MIKAĆ MILAN
+MIKAC EVKA
+MIKALAČKI ĐORĐE
+MIKALAČKI ALEKSANDAR
+MIKALAČKI DRAGICA
+MIKALAČKI IVANKA
+MIKALAČKI IVANKA
+MIKALAČKI JASMINA
+MIKALAČKI MILUTIN
+MIKALAČKI MIRJANA
+MIKALAČKI PAVLE
+MIKALAČKI UROŠ
+MIKALAČKI ZORAN
+MIKALAČKI ZORAN
+MIKAN BOSILJKA
+MIKAN IVAN
+MIKANOVIĆ DANICA
+MIKANOVIĆ DRAGAN
+MIKANOVIĆ IRENA
+MIKANOVIĆ RANKO
+MIKAVICA STANIMIR
+MIKE ESTER
+MIKEŠ ANDRIJA
+MIKEŠ ENDRE
+MIKEŠ ETEL
+MIKEŠ MELANIJA
+MIKEŠ MIHALJ
+MIKETIĆ MIRJANA
+MIKIĆ ŽARKO
+MIKIĆ ŽARKO
+MIKIĆ ĐURA DR
+MIKIĆ DESIMIR
+MIKIĆ IVAN
+MIKIĆ JOSIP DIPL ING
+MIKIĆ LAZAR
+MIKIĆ MAKSIM
+MIKIĆ MILAN
+MIKIĆ MILENA
+MIKIĆ MILISAV
+MIKIĆ MILKA
+MIKIĆ MILKA
+MIKIĆ MILOVAN
+MIKIĆ MIROSLAV
+MIKIĆ OLGA
+MIKIĆ RADIVOJE
+MIKIĆ RADOJKA
+MIKIĆ RADOSLAVKA
+MIKIĆ RUŽA
+MIKIĆ SLOBODAN
+MIKIĆ SRBOLJUB
+MIKIĆ STOJA
+MIKIĆ TODOR
+MIKIĆ VLADAN
+MIKIĆ ZORKA
+MIKIN NADA
+MIKITIŠIN NADA
+MIKLEV STOJANKA
+MIKLIĆ ĐORĐE
+MIKLIĆ ANA
+MIKLIĆ TEREZA
+MIKLOŠ ANDRAŠ
+MIKLOŠ ANDRIJA
+MIKLOŠ ANTAL
+MIKLOŠ DIMITRIJE
+MIKLOŠ JANKO
+MIKLOŠ JELISAVETA
+MIKLOŠ JULIJAN
+MIKLOŠ NANDOR DR LEKAR
+MIKLOŠ STEVAN
+MIKLOŠ VLADIMIR
+MIKLOVIC JAN
+MIKLOVIC MILOSLAV
+MIKOLA ĐURA
+MIKOLACI LEPOSAVA
+MIKOLECKI SLAVICA
+MIKOLIĆ ALEKSANDAR
+MIKOV JOVANKA
+MIKOV METODI DR LEKAR
+MIKOV MOMIR
+MIKOVIĆ ĐORĐE
+MIKOVIĆ ĐORĐE
+MIKOVIĆ ĐURA
+MIKOVIĆ ALEKSANDAR
+MIKOVIĆ ALEKSANDAR
+MIKOVIĆ DANILO
+MIKOVIĆ DARINKA
+MIKOVIĆ DEJAN
+MIKOVIĆ DESANKA
+MIKOVIĆ JELENA
+MIKOVIĆ LAZAR
+MIKOVIĆ LJILJANA
+MIKOVIĆ MILENA
+MIKOVIĆ MIODRAG
+MIKOVIĆ MLADEN
+MIKOVIĆ MOMČILO DR PRAVNIK
+MIKOVIĆ NADA
+MIKOVIĆ NINOSLAV
+MIKOVIĆ PAVA
+MIKOVIĆ RUŽICA
+MIKOVIĆ SLAVKO
+MIKOVIĆ SNEŽANA
+MIKOVIĆ SREDOJE
+MIKOVILOVIĆ IVAN
+MIKSAT JOŽEF
+MIKUŠ ANĐELKA
+MIKUŠ MILKA
+MIKUŠ MIRJANA
+MIKULESKO DUŠAN
+MIKULESKO SAVO DIPL ING
+MIKULIĆ ŠIME
+MIKULIĆ BILJANA
+MIKULIĆ BLAŽ
+MIKULIĆ EDIT
+MIKULIĆ IVAN
+MIKULIĆ IVAN
+MIKULIĆ IVA
+MIKULIĆ JELISAVETA
+MIKULIĆ LOVRE
+MIKULIĆ MARA
+MIKULIĆ MILE
+MIKULIĆ MILIĆ
+MIKULINAC MATIJA
+MIKULINAC RENETA
+MIKULINAC SLAVICA
+MILČIĆ DRAGAN
+MILČIĆ JOVAN
+MILAČIĆ ŽELJKO
+MILAČIĆ BORIVOJE
+MILAČIĆ BRANISLAV
+MILAČIĆ BRANKO
+MILAČIĆ DUŠAN
+MILAČIĆ IVAN
+MILAČIĆ LJUBOMIR
+MILAČIĆ MAŠAN
+MILAČIĆ MILENKO
+MILAČIĆ SRBOSLAV
+MILAČIĆ SVETOZAR
+MILAČIĆ ZORICA
+MILAŠ DRAGAN
+MILAŠ DUŠANKA
+MILAŠEVIĆ ZORKA
+MILAŠINOVIĆ JOVAN
+MILAŠINOVIĆ LJUBOMIR
+MILAŠINOVIĆ MIĆUN
+MILAŠINOVIĆ MILORAD
+MILAŠINOVIĆ MIRJANA
+MILAŠINOVIĆ MIRKO
+MILAŠINOVIĆ MIRKO
+MILAŠINOVIĆ RADE
+MILAŠINOVIĆ-STANOJEVIĆ LJILJANA
+MILAŠINOVIĆ VUKOMAN
+MILAŠINOVIĆ ZLATOJA
+MILADIĆ ČEDA
+MILADIĆ DOBROMIR
+MILADIĆ PETAR
+MILADINOSKI LEVKO
+MILADINOV ŽARKO
+MILADINOV ŽIVKO
+MILADINOV BOŽIDAR
+MILADINOV DANICA
+MILADINOV DANICA
+MILADINOV DUŠANKA
+MILADINOV DUŠAN
+MILADINOV JOCA
+MILADINOV JOVAN
+MILADINOV JOVAN
+MILADINOV JOVAN
+MILADINOV JOVICA
+MILADINOV LJUBICA
+MILADINOV MARIJA
+MILADINOV MILAN
+MILADINOV MILAN
+MILADINOV MILENA
+MILADINOV MILENKO
+MILADINOV MILOVAN DIPL ING
+MILADINOV MILOVAN
+MILADINOV NADA
+MILADINOV NOVAK
+MILADINOV RADIVOJ
+MILADINOV RADOVAN
+MILADINOV SLAVICA
+MILADINOV SRBINKO
+MILADINOV SVETOZAR
+MILADINOV SVETOZAR
+MILADINOV TIHOMIR
+MILADINOV VESNA
+MILADINOV VJERA
+MILADINOVIĆ ŽIVADIN DIPL ING
+MILADINOVIĆ ŽIVOJIN
+MILADINOVIĆ ĐORĐE
+MILADINOVIĆ ALEKSANDAR
+MILADINOVIĆ ALEKSANDAR
+MILADINOVIĆ BOŽIDAR
+MILADINOVIĆ BRANIMIR
+MILADINOVIĆ BRANKO
+MILADINOVIĆ DAMIR
+MILADINOVIĆ DIVNA
+MILADINOVIĆ DRAGAN
+MILADINOVIĆ DRAGAN
+MILADINOVIĆ DRAGIŠA
+MILADINOVIĆ DRAGOMIR
+MILADINOVIĆ DRAGOSLAV
+MILADINOVIĆ DUŠAN
+MILADINOVIĆ JOVAN
+MILADINOVIĆ JOVAN
+MILADINOVIĆ LJUBICA
+MILADINOVIĆ LJUBINKA
+MILADINOVIĆ MARKO
+MILADINOVIĆ MIHAJLO
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILE
+MILADINOVIĆ MILOVAN
+MILADINOVIĆ MIROSLAV
+MILADINOVIĆ NOVICA
+MILADINOVIĆ PREDRAG
+MILADINOVIĆ RADMILO
+MILADINOVIĆ RADOSLAV
+MILADINOVIĆ SLAVKO
+MILADINOVIĆ SLOBODANKA
+MILADINOVIĆ SLOBODAN
+MILADINOVIĆ SLOBODAN
+MILADINOVIĆ SVETOMIR
+MILADINOVIĆ TODE
+MILADINOVIĆ VERA
+MILAK ĐORĐE
+MILAK DARINKA
+MILAK DUŠAN
+MILAK JELENA
+MILAK JOVAN
+MILAK JOVAN
+MILAK KATICA
+MILAK LAZAR
+MILAK MILAN
+MILAK MILAN
+MILAK MILENKO
+MILAK MILOŠ
+MILAK RADOSLAV
+MILAK SAVA
+MILAKOV JELENA DR PROF
+MILAKOV LJUBICA DR
+MILAKOV MIRJANA
+MILAKOVIĆ ĐORĐE
+MILAKOVIĆ ĐURAĐ
+MILAKOVIĆ ĐURO
+MILAKOVIĆ BOSILJKA
+MILAKOVIĆ DANICA
+MILAKOVIĆ DRAGICA
+MILAKOVIĆ DUŠAN
+MILAKOVIĆ GORAN
+MILAKOVIĆ MILAN
+MILAKOVIĆ MILKA
+MILAKOVIĆ MLADEN
+MILAKOVIĆ RADMILA
+MILAKOVIĆ RATOMIR
+MILAKOVIĆ TEODOR
+MILAKOVIĆ VOJISLAV
+MILAKOVIĆ VOJO
+MILAKOVIĆ VUKICA
+MILAKOVIĆ ZORAN
+MILANKO SLAVKO
+MILANKOV ŽIVA
+MILANKOV ŽIVA
+MILANKOV ĐORĐE
+MILANKOV BRANISLAV
+MILANKOV CVETA
+MILANKOV DUŠAN
+MILANKOV IVAN
+MILANKOV JELENA
+MILANKOV JULIJANA
+MILANKOV LAZAR
+MILANKOV MARKO
+MILANKOV MILENKO
+MILANKOV MILIVOJ
+MILANKOV MILKO
+MILANKOV SLAVIMIR
+MILANKOV SOFIJA
+MILANKOV STANIMIR
+MILANKOV STEVAN
+MILANKOVIĆ ĐORĐE
+MILANKOVIĆ ĐORĐE
+MILANKOVIĆ ANA
+MILANKOVIĆ-COKOVIĆ MIRJANA
+MILANKOVIĆ DRAGOLJUB
+MILANKOVIĆ GORAN
+MILANKOVIĆ GORAN
+MILANKOVIĆ ILINKA
+MILANKOVIĆ LAZAR
+MILANKOVIĆ MILANKO
+MILANKOVIĆ MILAN
+MILANKOVIĆ MILEVA
+MILANKOVIĆ RADOSLAV
+MILANKOVIĆ SLOBODAN
+MILANKOVIĆ ZORA
+MILANOV ANICA
+MILANOV ANKA
+MILANOV BOGDAN
+MILANOV BORISLAVA
+MILANOV DOBRIVOJ
+MILANOV JELICA
+MILANOV LJUBIŠA
+MILANOV MILAN
+MILANOV MIODRAG
+MILANOV MIRJANA
+MILANOV MLADEN
+MILANOV PERSIDA
+MILANOV RADIVOJ
+MILANOV SAVKA
+MILANOV SVETOZAR
+MILANOV VUKOSAVA
+MILANOVIĆ ŽELJKO
+MILANOVIĆ ŽIVORAD
+MILANOVIĆ ŽIVOTIJE
+MILANOVIĆ ALEKSANDAR
+MILANOVIĆ BOŠKO
+MILANOVIĆ BOŽIDAR
+MILANOVIĆ BOGDAN
+MILANOVIĆ BRANKO DR
+MILANOVIĆ BRANKO
+MILANOVIĆ CVIJETIN
+MILANOVIĆ DAMJANKA
+MILANOVIĆ DESANKA
+MILANOVIĆ DONKA
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGICA
+MILANOVIĆ DRAGO
+MILANOVIĆ DUŠAN
+MILANOVIĆ GORAN
+MILANOVIĆ GORAN
+MILANOVIĆ ILIJA
+MILANOVIĆ ILIJA
+MILANOVIĆ JASMINA
+MILANOVIĆ KATICA
+MILANOVIĆ LJILJANA
+MILANOVIĆ LJUBIŠA
+MILANOVIĆ LJUBICA
+MILANOVIĆ MARTA
+MILANOVIĆ MIHO
+MILANOVIĆ MILANA
+MILANOVIĆ MILENKO
+MILANOVIĆ MILENKO
+MILANOVIĆ MILIJA
+MILANOVIĆ MILISAV
+MILANOVIĆ MILISAV
+MILANOVIĆ MILOJE
+MILANOVIĆ MILORAD
+MILANOVIĆ MILORAD
+MILANOVIĆ MIODRAG
+MILANOVIĆ MLADEN
+MILANOVIĆ NADA
+MILANOVIĆ-PETRAŠEVIĆ DRAGICA
+MILANOVIĆ RADOSLAV
+MILANOVIĆ RADOVAN
+MILANOVIĆ SAŠA
+MILANOVIĆ SLAVOLJUB
+MILANOVIĆ SLOBODAN
+MILANOVIĆ SVETOMIR
+MILANOVIĆ VIKTORIJA
+MILANOVIĆ VITKO
+MILANOVIĆ VLADIMIR
+MILANOVIĆ VLADIMIR
+MILANOVIĆ VUJO
+MILANOVIĆ ZORAN
+MILANOVIĆ ZORAN
+MILANOVIĆ ZORA
+MILANOVIĆ ZORKA
+MILARIĆ IVAN
+MILATOVIĆ DANILO
+MILATOVIĆ JOVANKA
+MILATOVIĆ VLADIMIR
+MILEŠEV MILICA
+MILEŠEVIĆ OBRAD
+MILEC DOROTEA
+MILEC ILONKA
+MILEI DRAGUTIN
+MILEI JANOŠ
+MILEI TOMISLAV
+MILEKŠIĆ BOGDAN
+MILEKIĆ DUŠAN
+MILEKIĆ MILOMIR
+MILEKIĆ NIKOLA
+MILEKIĆ STEVAN
+MILEKIĆ UROŠ
+MILENKOVIĆ ŽARKO
+MILENKOVIĆ ŽIVOJIN
+MILENKOVIĆ ĐORĐE
+MILENKOVIĆ ĐURĐINA
+MILENKOVIĆ ALEKSANDAR
+MILENKOVIĆ-ANTIĆ LAZAR
+MILENKOVIĆ-BJELAJAC MILANKA
+MILENKOVIĆ BOŽIDAR
+MILENKOVIĆ BOGOMIR
+MILENKOVIĆ BORIVOJE
+MILENKOVIĆ BRANISLAV
+MILENKOVIĆ BRANISLAV
+MILENKOVIĆ BRANKO
+MILENKOVIĆ BRATISLAV
+MILENKOVIĆ BRATISLAV
+MILENKOVIĆ DARINKA
+MILENKOVIĆ DOBRILA
+MILENKOVIĆ DOBRILA
+MILENKOVIĆ DOBRIVOJE
+MILENKOVIĆ DRAGAN DR
+MILENKOVIĆ DRAGOŠ
+MILENKOVIĆ DRAGOLJUB DR
+MILENKOVIĆ DRAGOSLAV
+MILENKOVIĆ DRAGOSLAV
+MILENKOVIĆ DUŠAN
+MILENKOVIĆ DUŠAN
+MILENKOVIĆ ERŽIKA
+MILENKOVIĆ GROZDANA
+MILENKOVIĆ ILONKA
+MILENKOVIĆ IRENA
+MILENKOVIĆ JELICA
+MILENKOVIĆ JEVTO
+MILENKOVIĆ JUGOSLAV
+MILENKOVIĆ JUSTINA
+MILENKOVIĆ KOVILJKA
+MILENKOVIĆ KRSTANA
+MILENKOVIĆ LJILJANA
+MILENKOVIĆ LJILJANA
+MILENKOVIĆ MILIJAN
+MILENKOVIĆ MILISAV
+MILENKOVIĆ MILORAD
+MILENKOVIĆ MILORAD
+MILENKOVIĆ MILOSAV
+MILENKOVIĆ MILUTIN
+MILENKOVIĆ MIODRAG
+MILENKOVIĆ MIROSLAV
+MILENKOVIĆ MIROSLAV
+MILENKOVIĆ MOMČILO
+MILENKOVIĆ NEBOJŠA
+MILENKOVIĆ NENAD
+MILENKOVIĆ NIĆIFOR
+MILENKOVIĆ PAUN
+MILENKOVIĆ PREDRAG
+MILENKOVIĆ RADISAV
+MILENKOVIĆ RADOMIR
+MILENKOVIĆ RADOSLAV
+MILENKOVIĆ RADOVAN
+MILENKOVIĆ SAVA
+MILENKOVIĆ SLAVOLJUB
+MILENKOVIĆ SNEŽANA
+MILENKOVIĆ SRETEN
+MILENKOVIĆ STOJANKA
+MILENKOVIĆ SVETISLAV
+MILENKOVIĆ SVETOMIR
+MILENKOVIĆ TIHOMIR
+MILENKOVIĆ VESELINKA
+MILENKOVIĆ VITOMIR
+MILENKOVIĆ VLADAN
+MILENKOVIĆ ZORICA
+MILENKOVIĆ ZORKA
+MILENKOVSKI BLAGOJE
+MILENKOVSKI MILICA
+MILENOVIĆ ŽIVA
+MILENOVIĆ-BEKIĆ MIRJANA
+MILENOVIĆ BRANKO
+MILENOVIĆ MILORAD
+MILENOVIĆ OLGA
+MILENOVIĆ PREDRAG
+MILENTIJEVIĆ ŽIVORAD
+MILENTIJEVIĆ ZDRAVKO
+MILER BARBARA
+MILER ERŽEBET
+MILER FRANJA
+MILER IMRE DR LEKAR
+MILER IVANKA
+MILER JELENA
+MILER JELICA
+MILER KARLO
+MILER MARIJA
+MILER MIHAJLO
+MILER OTOKAR
+MILER ZLATKO
+MILESKI ATANASIJE
+MILETA NIKOLA
+MILETAŠKI BORIVOJ
+MILETAŠKI MILE
+MILETIĆ ŽIVKO
+MILETIĆ ŽIVOTA
+MILETIĆ ĐORĐE
+MILETIĆ ALEKSANDRA
+MILETIĆ ANA
+MILETIĆ BOŽA
+MILETIĆ BORIŠA
+MILETIĆ BRANISLAV
+MILETIĆ DOBROSAV
+MILETIĆ DRAGICA
+MILETIĆ DUŠAN
+MILETIĆ DUŠAN
+MILETIĆ DUŠAN
+MILETIĆ GOJKO
+MILETIĆ GVOZDEN
+MILETIĆ ILIJA
+MILETIĆ IVICA
+MILETIĆ LJUBICA
+MILETIĆ LJUBISAV
+MILETIĆ MILICA
+MILETIĆ MILIVOJ
+MILETIĆ MILOJE
+MILETIĆ MITA
+MILETIĆ NADA
+MILETIĆ NIKOLA
+MILETIĆ OLGA
+MILETIĆ PETAR
+MILETIĆ RADE
+MILETIĆ RADOŠ
+MILETIĆ RADOJKA
+MILETIĆ RADOSLAV
+MILETIĆ RANKO
+MILETIĆ SEVERINA
+MILETIĆ SLAVKO DR LEKAR
+MILETIĆ SLAVKO
+MILETIĆ SLAVOLJUB
+MILETIĆ SLOBODAN
+MILETIĆ SLOBODAN
+MILETIĆ SONJA
+MILETIĆ STEVAN
+MILETIĆ VELE
+MILETIĆ VELIBOR
+MILETIĆ VELIBOR
+MILETIĆ VELIMIR
+MILETIĆ VIDOSAVA
+MILETIĆ ZDRAVKO
+MILETICKI RADA
+MILETICKI ZORKA
+MILETIN DANA
+MILETIN MIRJANA
+MILETIN NIKOLA
+MILETIN RADIVOJ
+MILETIN SVETOZAR DIPL OEC
+MILETOVIĆ SLAVKO
+MILEUSNIĆ DRAGAN
+MILEUSNIĆ MARKO
+MILEUSNIĆ NADA
+MILEUSNIĆ NADA
+MILEUSNIĆ PETAR
+MILEV PETAR
+MILEVSKI ĐORĐE
+MILHANS STANISLAV
+MILIČEVIĆ ĐURA
+MILIČEVIĆ ARANKA
+MILIČEVIĆ BRANKO
+MILIČEVIĆ DRAGINJA
+MILIČEVIĆ DUŠAN
+MILIČEVIĆ JOVAN
+MILIČEVIĆ KATICA
+MILIČEVIĆ MILAN
+MILIČEVIĆ MILENKO
+MILIČEVIĆ MILICA
+MILIČEVIĆ MILIVOJ
+MILIČEVIĆ MILKAN
+MILIČEVIĆ MLADEN
+MILIČEVIĆ NENAD
+MILIČEVIĆ NOVICA
+MILIČEVIĆ PAVA
+MILIČEVIĆ PERO
+MILIČEVIĆ STANIMIR
+MILIČEVIĆ STEVAN
+MILIČEVIĆ TOMISLAV
+MILIČIĆ ŽARKO
+MILIČIĆ ALEKSANDAR
+MILIČIĆ ANA
+MILIČIĆ ANDRIJA
+MILIČIĆ ANKA
+MILIČIĆ BORISLAV
+MILIČIĆ BRANKO
+MILIČIĆ DRAGICA
+MILIČIĆ DRAGOMIR
+MILIČIĆ DUŠAN
+MILIČIĆ JELICA
+MILIČIĆ JOVANKA
+MILIČIĆ JOVAN
+MILIČIĆ KATICA
+MILIČIĆ LJUBINKA
+MILIČIĆ MARINKO
+MILIČIĆ MIHAJLO
+MILIČIĆ MILOŠ
+MILIČIĆ MIRJANA
+MILIČIĆ RADOVAN
+MILIČIĆ RAJKO
+MILIČIĆ STEVAN
+MILIČIĆ TILKA
+MILIČIĆ VASA
+MILIŠIĆ ĐORĐE
+MILIŠIĆ DUŠANKA
+MILIŠIĆ NEBOJŠA
+MILIĆ ČEDOMIR
+MILIĆ ČEDOMIR
+MILIĆ ŽIKA
+MILIĆ ŽIVKO
+MILIĆ ŽIVOMIR
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐURICA
+MILIĆ ADILA
+MILIĆ ALEKSANDAR
+MILIĆ ALEKSANDRA
+MILIĆ ANĐELIJA
+MILIĆ BOŽIDAR DR
+MILIĆ BOŽIDAR
+MILIĆ BOŽO
+MILIĆ BOGDAN
+MILIĆ BOJANA
+MILIĆ BORIVOJE
+MILIĆ BORIVOJ
+MILIĆ BRANISLAV
+MILIĆ BRANISLAV
+MILIĆ BRANISLAV
+MILIĆ BRANKA
+MILIĆ BRANKO
+MILIĆ BRANKO
+MILIĆ BRATISLAV
+MILIĆ DANICA
+MILIĆ DANILKA
+MILIĆ DANILKA
+MILIĆ DANILO
+MILIĆ DARA
+MILIĆ DRAGAN
+MILIĆ DRAGAN
+MILIĆ DRAGAN
+MILIĆ DRAGICA
+MILIĆ DRAGICA
+MILIĆ DRAGOMIR
+MILIĆ DRAGOMIR
+MILIĆ DRAGOSLAV
+MILIĆ DUŠANKA
+MILIĆ DUŠANKA
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ ELIZABETA
+MILIĆ EMILIJA
+MILIĆ EMILIJA
+MILIĆ EVA
+MILIĆ EVA
+MILIĆ EVICA
+MILIĆ FERENC
+MILIĆ GAVRA
+MILIĆ ILIJA
+MILIĆ-JAGODINSKI MILAN
+MILIĆ JANKO
+MILIĆ JELENA
+MILIĆ JELICA
+MILIĆ JELKA
+MILIĆ JOVAN
+MILIĆ JOVAN
+MILIĆ JOVAN
+MILIĆ JOVA
+MILIĆ JOVO
+MILIĆ JOVO
+MILIĆ JULKA
+MILIĆ KATICA
+MILIĆ KRSTO
+MILIĆ KSENIJA
+MILIĆ LAZAR
+MILIĆ LJILJANA
+MILIĆ LJUBIŠA
+MILIĆ LJUBICA
+MILIĆ LJUBOMIR DIPL ING
+MILIĆ LJUBOMIR
+MILIĆ LJUBOMIR
+MILIĆ LJUBOMIR
+MILIĆ MARA
+MILIĆ MARIJA
+MILIĆ MARIJA
+MILIĆ MARIJA
+MILIĆ MILANKA
+MILIĆ MILAN
+MILIĆ MILENKO
+MILIĆ MILICA
+MILIĆ MILICA
+MILIĆ MILOŠ
+MILIĆ MILOŠ
+MILIĆ MILORAD
+MILIĆ MILOSAV
+MILIĆ MILUTIN
+MILIĆ MIODRAG
+MILIĆ MIRJANA DIPL OEC
+MILIĆ MIRJANA
+MILIĆ MIROSLAV
+MILIĆ MITA
+MILIĆ MLADEN
+MILIĆ NADA
+MILIĆ NEDELJKO
+MILIĆ NIKOLA
+MILIĆ NIKOLA
+MILIĆ NOVAK
+MILIĆ NOVAK
+MILIĆ PANTA
+MILIĆ PAVLE
+MILIĆ PERA
+MILIĆ PETAR
+MILIĆ PETAR
+MILIĆ PROKA
+MILIĆ RADA
+MILIĆ RADE
+MILIĆ RADIVOJE
+MILIĆ RADMILA
+MILIĆ RADOJKA
+MILIĆ RADOMIR
+MILIĆ RANKO
+MILIĆ RUŽA
+MILIĆ SANDRA
+MILIĆ SAVA
+MILIĆ SLAVICA
+MILIĆ SLAVICA
+MILIĆ SLAVKA
+MILIĆ SLAVKO
+MILIĆ SLAVUJ
+MILIĆ SOFIJA
+MILIĆ STEVAN
+MILIĆ STEVAN
+MILIĆ STEVAN
+MILIĆ SVETLANA
+MILIĆ SVETOZAR
+MILIĆ SVETOZAR
+MILIĆ TEODORA
+MILIĆ TODOR
+MILIĆ TODOR
+MILIĆ TOMISLAV
+MILIĆ TOMISLAV
+MILIĆ UROŠ
+MILIĆ VASA
+MILIĆ VELINKA
+MILIĆ VERA
+MILIĆ VERA
+MILIĆ VERICA
+MILIĆ VLADICA
+MILIĆ VLADO
+MILIĆ VUKICA
+MILIĆ ZDRAVKO
+MILIĆ ZORAN
+MILIĆ ZORAN
+MILIĆ ZORAN
+MILIĆ ZORA
+MILIĆEV BORISLAV
+MILIĆEV BRANKO
+MILIĆEV SLAVKO
+MILIĆEV VASILIJE
+MILIĆEV VIKENTIJE
+MILIĆEVIĆ ŽIVORAD
+MILIĆEVIĆ ĐORĐE
+MILIĆEVIĆ ĐORĐE
+MILIĆEVIĆ ĐURAĐ
+MILIĆEVIĆ BOŽIDAR
+MILIĆEVIĆ BORIŠA
+MILIĆEVIĆ BRANKO
+MILIĆEVIĆ DRAGAN
+MILIĆEVIĆ DUŠAN
+MILIĆEVIĆ DUŠAN
+MILIĆEVIĆ GOJKO
+MILIĆEVIĆ GORDANA
+MILIĆEVIĆ KATARINA
+MILIĆEVIĆ KATICA
+MILIĆEVIĆ KSENIJA DR STOMATOLOG
+MILIĆEVIĆ LJUBOMIR
+MILIĆEVIĆ MARKO
+MILIĆEVIĆ MIHAILO
+MILIĆEVIĆ MILICA
+MILIĆEVIĆ MILORAD
+MILIĆEVIĆ MILOVAN
+MILIĆEVIĆ MIODRAG
+MILIĆEVIĆ MIODRAG
+MILIĆEVIĆ MOMČILO
+MILIĆEVIĆ MOMČILO
+MILIĆEVIĆ NATAŠA
+MILIĆEVIĆ NIKOLA
+MILIĆEVIĆ PAVLE
+MILIĆEVIĆ PETAR
+MILIĆEVIĆ RADMILA
+MILIĆEVIĆ RAJKO
+MILIĆEVIĆ SLAĐANA
+MILIĆEVIĆ SLAVICA
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SPASO
+MILIĆEVIĆ STANA
+MILIĆEVIĆ STEVAN
+MILIĆEVIĆ STEVAN
+MILIĆEVIĆ SVETISLAV
+MILIĆEVIĆ VELIŠA
+MILIĆEVIĆ VEROLJUB
+MILIĆEVIĆ VITOMIR
+MILIĆEVIĆ VLADIMIR
+MILIĆEVIĆ VUKOMIR
+MILIC KAROLJ
+MILIDRAG KRSTO
+MILIDRAGOVIĆ BORISLAV
+MILIDRAGOVIĆ LAZAR
+MILIDRAGOVIĆ MILIVOJE
+MILIDRAGOVIĆ MILORAD DIPL ING
+MILIDRAGOVIĆ MLADEN
+MILIDRAGOVIĆ NEDELJKO
+MILIDRAGOVIĆ SLOBODAN
+MILIJAŠ-PAVKOVIĆ MARIJA
+MILIJAŠEVIĆ ŽIVORAD
+MILIJAŠEVIĆ BOŠKO
+MILIJAŠEVIĆ MILAN
+MILIJANOVIĆ ĐORĐE
+MILIJANOVIĆ MILAN
+MILIJEVIĆ ĐURAĐ
+MILIKIĆ DRAGOJE
+MILIKIĆ SIMA
+MILIN ŽIVAN
+MILIN BRANISLAV
+MILIN DUŠAN
+MILIN DUŠAN
+MILIN IVAN
+MILIN JOVAN
+MILIN MILENKO
+MILIN MILICA
+MILIN MOMIR
+MILIN RADIVOJ DR
+MILIN RADIVOJ
+MILIN SNEŽANA
+MILIN STEVAN
+MILIN SVETISLAV
+MILIN VOJISLAV NOVINAR
+MILIN ZDRAVKO DIPL ING
+MILIN ZORICA
+MILINČIĆ ČASLAV
+MILINČIĆ STOJAN
+MILINIĆ RADENKO
+MILINIĆ RAJKO
+MILINKOV ŽIVAN
+MILINKOV ŽIVOJIN
+MILINKOV ANĐELKA
+MILINKOV BOŽA
+MILINKOV BRANISLAV
+MILINKOV BRANISLAV
+MILINKOV BRANKO
+MILINKOV DANILO
+MILINKOV DUŠAN
+MILINKOV IVAN
+MILINKOV JULKA
+MILINKOV LAZAR
+MILINKOV LJUBICA
+MILINKOV MILAN
+MILINKOV MILICA
+MILINKOV NENAD
+MILINKOV NENAD
+MILINKOV NIKOLA
+MILINKOV SLOBODAN
+MILINKOV VERA
+MILINKOV VESELIN
+MILINKOV VLAJKO
+MILINKOV ZORAN
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐURO
+MILINKOVIĆ BILJANA
+MILINKOVIĆ BOJO
+MILINKOVIĆ BUDIMIR
+MILINKOVIĆ DRAGAN
+MILINKOVIĆ DRAGOSLAV
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ ETELKA
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ JOVAN
+MILINKOVIĆ JOVICA
+MILINKOVIĆ LJILJANA
+MILINKOVIĆ MARA
+MILINKOVIĆ MILAN
+MILINKOVIĆ MILENA
+MILINKOVIĆ MILIĆ
+MILINKOVIĆ MILORAD
+MILINKOVIĆ NADEŽDA
+MILINKOVIĆ NOVAK
+MILINKOVIĆ PANTA
+MILINKOVIĆ PETAR
+MILINKOVIĆ SLAVKO
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SMILJKA
+MILINKOVIĆ SRETO
+MILINKOVIĆ VIDA
+MILINKOVIĆ VLADISLAV
+MILINKOVIĆ VOJA
+MILINOV GAVRA
+MILINOV JELENKO
+MILINOV MILORAD
+MILINOV MIRJANA
+MILINOV MIROSLAV
+MILINOV NEVENA
+MILINOV NIKOLA
+MILINOV RADIVOJ
+MILINOV SLAVKO
+MILINOV STEVAN
+MILINOV SVETISLAV
+MILINOVIĆ ŽARKO
+MILINOVIĆ BOŽIDAR
+MILINOVIĆ BOGOLJUB
+MILINOVIĆ DRAGAN
+MILINOVIĆ DRAGAN
+MILINOVIĆ KSENIJA
+MILINOVIĆ LAZO
+MILINOVIĆ LJUBOMIR
+MILINOVIĆ LJUBOMIR
+MILINOVIĆ MIHAJLO
+MILINOVIĆ MIROSLAV
+MILINOVIĆ NIKOLA
+MILINOVIĆ PETAR
+MILINOVIĆ PETAR
+MILINOVIĆ RADOMIR
+MILINOVIĆ SAVA
+MILINOVIĆ SLOBODAN
+MILINOVIĆ STEVAN
+MILINOVIĆ STEVA
+MILINOVIĆ TIMA
+MILINOVIĆ VJEKOSLAV
+MILINSKI ALEKSANDAR
+MILINSKI ARPAD
+MILINSKI ERŽEBET
+MILINSKI GABOR
+MILINSKI GORDANA
+MILINSKI JELENA
+MILINSKI JELENA
+MILINSKI LADISLAV
+MILINSKI MIHAILO
+MILINSKI NIKOLA
+MILINSKI TEODOR
+MILINSKI VIKTOR
+MILINSKI VIKTOR
+MILINSKI ZOLTAN
+MILISAVAC ŽIVAN
+MILISAVLJEVIĆ DRAGOMIR
+MILISAVLJEVIĆ DRAGOSLAV DR PROF
+MILISAVLJEVIĆ JOVAN
+MILISAVLJEVIĆ JULIJANA
+MILISAVLJEVIĆ MILADIN
+MILISAVLJEVIĆ MILAN
+MILISAVLJEVIĆ MILORAD
+MILISAVLJEVIĆ MIRČETA
+MILISAVLJEVIĆ STANIMIR
+MILISAVLJEVIĆ STANIMIR
+MILISAVLJEVIĆ VLADIMIR
+MILIVOJČEV BORISLAV
+MILIVOJČEV STEVAN
+MILIVOJČEVIĆ ALEKSANDAR
+MILIVOJŠA LAZAR
+MILIVOJŠIN JOVAN
+MILIVOJŠIN PAJA
+MILIVOJEV ANICA
+MILIVOJEV BORIVOJ
+MILIVOJEV GRADOJE
+MILIVOJEV JOVANKA
+MILIVOJEV KONSTANTIN
+MILIVOJEV LUKA
+MILIVOJEV MIHAJLO
+MILIVOJEV MILANA
+MILIVOJEV MILAN
+MILIVOJEV MILAN
+MILIVOJEV MILOŠ
+MILIVOJEV MLADEN
+MILIVOJEV NADA
+MILIVOJEV PAVLE
+MILIVOJEV SOFIJA
+MILIVOJEV SOFIJA
+MILIVOJEV SOFIJA
+MILIVOJEVIĆ ČEDOMIR
+MILIVOJEVIĆ ŽIVKA
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ BILJANA
+MILIVOJEVIĆ BOŠKO
+MILIVOJEVIĆ BRANKO
+MILIVOJEVIĆ BUDIMIR
+MILIVOJEVIĆ BUDISLAV
+MILIVOJEVIĆ DRAGAN
+MILIVOJEVIĆ DRAGAN
+MILIVOJEVIĆ DUŠAN
+MILIVOJEVIĆ DUŠAN
+MILIVOJEVIĆ ILIJA
+MILIVOJEVIĆ JAGODA
+MILIVOJEVIĆ JELENA
+MILIVOJEVIĆ JOVAN
+MILIVOJEVIĆ JOVAN
+MILIVOJEVIĆ MARINA
+MILIVOJEVIĆ MILAN
+MILIVOJEVIĆ MILENA
+MILIVOJEVIĆ MILOMIR
+MILIVOJEVIĆ MILORAD
+MILIVOJEVIĆ MILOVAN
+MILIVOJEVIĆ MIRJANA
+MILIVOJEVIĆ MIRKO
+MILIVOJEVIĆ MIROSLAV
+MILIVOJEVIĆ MOMČILO
+MILIVOJEVIĆ RADOJE
+MILIVOJEVIĆ RADOSLAV
+MILIVOJEVIĆ SAVO
+MILIVOJEVIĆ SLAVKO
+MILIVOJEVIĆ SLAVNA
+MILIVOJEVIĆ STOJANKA
+MILIVOJEVIĆ VLADIMIR
+MILIVOJEVIĆ VLASTIMIR
+MILIVOJEVIĆ VOJA
+MILIVOJEVIĆ VOJISLAV
+MILIVOJEVIĆ VUČO
+MILIVOJEVIĆ ZDRAVKO
+MILIVOJEVIĆ ZORA
+MILJAKOVIĆ MILAN
+MILJANIĆ ŽIVKA
+MILJANIĆ DRAGAN
+MILJANIĆ DUŠAN
+MILJANIĆ JOVAN
+MILJANIĆ MARKO
+MILJANIĆ NOVAK
+MILJANIĆ OBRAD
+MILJANIĆ RADIVOJE
+MILJANIĆ RADOSLAV
+MILJANIĆ SLOBODAN
+MILJANIĆ SLOBODAN
+MILJANIĆ STANKO
+MILJANIĆ VUKOTA
+MILJANOVIĆ ŽELJKO
+MILJANOVIĆ ADAM
+MILJANOVIĆ BRANKO
+MILJANOVIĆ DUŠAN
+MILJANOVIĆ DUŠICA
+MILJANOVIĆ MILKA
+MILJANOVIĆ PREDRAG
+MILJANOVIĆ STANKO
+MILJANOVIĆ VILMA
+MILJANSKI BOŠKO
+MILJANSKI LAZAR
+MILJANSKI ZORICA
+MILJANSKI ZORICA
+MILJATOVIĆ ĐORĐE
+MILJATOVIĆ MARICA
+MILJATOVIĆ MILAN
+MILJATOVIĆ MILUTIN
+MILJATOVIĆ VERA
+MILJEŠIĆ NENAD
+MILJENOVIĆ SLOBODAN
+MILJEVIĆ ŽIVKO
+MILJEVIĆ ADAM
+MILJEVIĆ ANKA
+MILJEVIĆ BOGDAN DIPL ING
+MILJEVIĆ DRAGOLJUB
+MILJEVIĆ DUŠAN
+MILJEVIĆ GAVRILO
+MILJEVIĆ JANJA
+MILJEVIĆ JOVAN
+MILJEVIĆ JOVO
+MILJEVIĆ LAZAR
+MILJEVIĆ LJUBICA
+MILJEVIĆ LJUBINKO
+MILJEVIĆ MARINKO
+MILJEVIĆ MILORAD
+MILJEVIĆ NATAŠA
+MILJEVIĆ NEDELJKO
+MILJEVIĆ OBRAD
+MILJEVIĆ RADOJKA
+MILJEVIĆ STEVAN
+MILJEVIĆ VERICA
+MILJEVIĆ VERICA
+MILJEVIĆ VINKO
+MILJIĆ SLAVKO
+MILJKOV ĐURICA
+MILJKOVAC BOGOSAV
+MILJKOVAC DRAGOMIR
+MILJKOVAC PETAR
+MILJKOVAC RADOVAN
+MILJKOVAC TATJANA
+MILJKOVIĆ ČEDOMIR
+MILJKOVIĆ ŽIVAN
+MILJKOVIĆ BOŠKO
+MILJKOVIĆ BORISLAV
+MILJKOVIĆ BOSILJKA
+MILJKOVIĆ DOBRILO
+MILJKOVIĆ DRAGAN
+MILJKOVIĆ DRAGIŠA
+MILJKOVIĆ DRAGUTIN
+MILJKOVIĆ DUŠAN
+MILJKOVIĆ DUŠAN
+MILJKOVIĆ LENKE
+MILJKOVIĆ LJILJANA
+MILJKOVIĆ LJUBIŠA
+MILJKOVIĆ LJUBICA
+MILJKOVIĆ LJUPČE
+MILJKOVIĆ MARA
+MILJKOVIĆ MIĆA
+MILJKOVIĆ MILICA
+MILJKOVIĆ MILICA
+MILJKOVIĆ MILOŠ
+MILJKOVIĆ MIODRAG
+MILJKOVIĆ MIRA
+MILJKOVIĆ MIRJANA
+MILJKOVIĆ MIRJANA
+MILJKOVIĆ MITA
+MILJKOVIĆ MLADEN
+MILJKOVIĆ MOJSA
+MILJKOVIĆ NIKOLA DR ING
+MILJKOVIĆ NIKOLA
+MILJKOVIĆ NIKOLA
+MILJKOVIĆ RADOSAV
+MILJKOVIĆ RADOSLAV
+MILJKOVIĆ RAHILJA
+MILJKOVIĆ ROSA
+MILJKOVIĆ ROSA
+MILJKOVIĆ SLOBODAN
+MILJKOVIĆ STAMENKO DR LEKAR
+MILJKOVIĆ STOJADIN
+MILJKOVIĆ STOJAN
+MILJKOVIĆ TOMISLAV
+MILJKOVIĆ VELIBOR
+MILJOJKOVIĆ DESIMIR
+MILJOJKOVIĆ DOBRINKA
+MILJOJKOVIĆ EMILIJA
+MILJOJKOVIĆ LJUBIŠA
+MILJOJKOVIĆ LJUBIŠA
+MILJUŠ ĐURO
+MILJUŠ ALEKSANDAR
+MILJUŠ BRANKO
+MILJUŠ BRANKO
+MILJUŠ DRAGO
+MILJUŠ DUŠANKA
+MILJUŠ DUŠAN
+MILJUŠ EVA
+MILJUŠ JOVAN DR
+MILJUŠ JOVAN
+MILJUŠ JOVAN
+MILJUŠ KATARINA
+MILJUŠ LJILJANA
+MILJUŠ LJUBICA
+MILJUŠ MARIJA
+MILJUŠ MARIJA
+MILJUŠ MILAN
+MILJUŠ MILE
+MILJUŠ MILORAD
+MILJUŠ MIODRAG
+MILJUŠ NIKOLA
+MILJUŠ PETAR
+MILKOV ĐURĐINKA
+MILKOV ĐURĐINKA
+MILKOV ACA
+MILKOV DRAGAN DR
+MILKOV DRAGINJA
+MILKOV GORDANA
+MILKOV GORDANA
+MILKOV JASMINA
+MILKOV JELENA
+MILKOV LAZAR
+MILKOV LAZAR
+MILKOV SLAVICA
+MILKOV STANOJE
+MILKOV STEVAN
+MILKOVIĆ DRAGICA
+MILKOVIĆ DUŠAN
+MILKOVIĆ DUŠAN
+MILKOVIĆ VELJKO
+MILNOVIĆ ALEKSANDAR
+MILNOVIĆ KAMENKO
+MILNOVIĆ LAZAR
+MILNOVIĆ MIHAJLO
+MILNOVIĆ STOJAN
+MILNOVIĆ VASILIJE
+MILNOVIĆ ZORA
+MILO GIZELA
+MILOŠ IVAN
+MILOŠČIN STAŠA
+MILOŠČIN STEVAN
+MILOŠČIN VLADIMIR
+MILOŠEV ŽARKO DR
+MILOŠEV ŽIKA
+MILOŠEV ŽIVKA
+MILOŠEV ŽIVOJIN
+MILOŠEV ALEKSANDAR
+MILOŠEV ANĐELIJA
+MILOŠEV BOŠKO DIPL ING
+MILOŠEV BRANISLAVA
+MILOŠEV BRANISLAV
+MILOŠEV BRANISLAV
+MILOŠEV DOBRIVOJ
+MILOŠEV DUŠAN
+MILOŠEV DUŠKO
+MILOŠEV JOVANKA
+MILOŠEV JOVAN
+MILOŠEV LJUBOMIR
+MILOŠEV MARIJA
+MILOŠEV MIĆO
+MILOŠEV MIHAJLO
+MILOŠEV MILAN
+MILOŠEV MILENKO
+MILOŠEV MILIVOJ
+MILOŠEV MILJANA
+MILOŠEV MILOŠ
+MILOŠEV MILOŠ
+MILOŠEV MILOŠ
+MILOŠEV MILORAD
+MILOŠEV MILORAD
+MILOŠEV MIODRAG
+MILOŠEV MIRA
+MILOŠEV MIRJANA
+MILOŠEV MIRKO
+MILOŠEV MIROSLAVA
+MILOŠEV MIROSLAV
+MILOŠEV MITA
+MILOŠEV MOMČILO
+MILOŠEV NEBOJŠA
+MILOŠEV NOVKA
+MILOŠEV PETAR
+MILOŠEV RADA
+MILOŠEV SAVA
+MILOŠEV SLAVKA
+MILOŠEV SOFIJA
+MILOŠEV STANA
+MILOŠEV STOJANKA
+MILOŠEV VASA DIPL ING
+MILOŠEV VASA
+MILOŠEV VELIMIR
+MILOŠEV ZLATOMIR
+MILOŠEVIĆ ŽIVOJIN
+MILOŠEVIĆ ŽIVORAD
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDRA
+MILOŠEVIĆ ALEKSANDRA
+MILOŠEVIĆ ANASTAZIJA
+MILOŠEVIĆ ANKA
+MILOŠEVIĆ BILJANA
+MILOŠEVIĆ BISERKA
+MILOŠEVIĆ BOŠKO
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽO
+MILOŠEVIĆ BOGDAN
+MILOŠEVIĆ BOJANA
+MILOŠEVIĆ BRANISLAVA
+MILOŠEVIĆ BRANISLAVA
+MILOŠEVIĆ BRANISLAV
+MILOŠEVIĆ BRANISLAV
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ CVETAN
+MILOŠEVIĆ CVETAN
+MILOŠEVIĆ DANICA
+MILOŠEVIĆ DARINKA
+MILOŠEVIĆ DEJAN
+MILOŠEVIĆ DOBRINKA
+MILOŠEVIĆ DOBROSAV
+MILOŠEVIĆ DRAGANA
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGICA
+MILOŠEVIĆ DRAGICA
+MILOŠEVIĆ DRAGOLJUB
+MILOŠEVIĆ DRAGOMIR DIPL ING
+MILOŠEVIĆ DRAGUTIN
+MILOŠEVIĆ DUŠAN DR
+MILOŠEVIĆ DUŠAN
+MILOŠEVIĆ DUŠAN
+MILOŠEVIĆ EVA
+MILOŠEVIĆ EVICA
+MILOŠEVIĆ GROZDA
+MILOŠEVIĆ IGNJAT
+MILOŠEVIĆ IVANKA
+MILOŠEVIĆ JAKOV
+MILOŠEVIĆ JANKO
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JERINA
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVICA
+MILOŠEVIĆ JULKA
+MILOŠEVIĆ KLAUDIJE
+MILOŠEVIĆ KRISTINA
+MILOŠEVIĆ LATINKA
+MILOŠEVIĆ LAZAR
+MILOŠEVIĆ LAZAR
+MILOŠEVIĆ LJILJANA
+MILOŠEVIĆ LJILJANA
+MILOŠEVIĆ LJUBIŠA
+MILOŠEVIĆ LJUBOMIR
+MILOŠEVIĆ LOZANA
+MILOŠEVIĆ MARA
+MILOŠEVIĆ MARICA
+MILOŠEVIĆ MARIJA
+MILOŠEVIĆ MARIJA
+MILOŠEVIĆ MARKO
+MILOŠEVIĆ MARTA
+MILOŠEVIĆ MIHAILO
+MILOŠEVIĆ MIHALJINA
+MILOŠEVIĆ MILADIN
+MILOŠEVIĆ MILANKA
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILICA
+MILOŠEVIĆ MILIVOJE
+MILOŠEVIĆ MILIVOJE
+MILOŠEVIĆ MILOŠ
+MILOŠEVIĆ MILOŠ
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILOSAV
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIRA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRKO
+MILOŠEVIĆ MIROSLAV
+MILOŠEVIĆ MITAR
+MILOŠEVIĆ MOMČILO
+MILOŠEVIĆ NADA
+MILOŠEVIĆ NEVENA
+MILOŠEVIĆ NIKOLA
+MILOŠEVIĆ NIKOLA
+MILOŠEVIĆ NOVICA
+MILOŠEVIĆ OBRAD
+MILOŠEVIĆ OLGA
+MILOŠEVIĆ OLIVERA
+MILOŠEVIĆ PAVLE
+MILOŠEVIĆ PAVLE
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PREDRAG
+MILOŠEVIĆ RADE DR
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADOVAN
+MILOŠEVIĆ RAJKO
+MILOŠEVIĆ RAJKO
+MILOŠEVIĆ RATKO
+MILOŠEVIĆ RISTO
+MILOŠEVIĆ RUŽA
+MILOŠEVIĆ RUŽICA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SELENKA
+MILOŠEVIĆ SLAVA
+MILOŠEVIĆ SLAVKO
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SNEŽANA
+MILOŠEVIĆ SNEŽANA
+MILOŠEVIĆ SPASOJE
+MILOŠEVIĆ SPASOJE
+MILOŠEVIĆ SRBOBRAN
+MILOŠEVIĆ STANIMIR
+MILOŠEVIĆ STANKO
+MILOŠEVIĆ STANKO
+MILOŠEVIĆ STEVICA
+MILOŠEVIĆ STOJA
+MILOŠEVIĆ SVETISLAV
+MILOŠEVIĆ SVETOLJUB
+MILOŠEVIĆ SVETOZAR
+MILOŠEVIĆ SVETOZAR
+MILOŠEVIĆ TADIJA
+MILOŠEVIĆ TOMISLAV
+MILOŠEVIĆ UROŠ
+MILOŠEVIĆ VASA
+MILOŠEVIĆ VASILIJE
+MILOŠEVIĆ VELJKO
+MILOŠEVIĆ VERA
+MILOŠEVIĆ VESELIN
+MILOŠEVIĆ VIDOJE
+MILOŠEVIĆ VLADA DIPL OEC
+MILOŠEVIĆ VLADIMIR
+MILOŠEVIĆ VOJISLAV
+MILOŠEVIĆ VOJISLAV
+MILOŠEVIĆ VOJKAN
+MILOŠEVIĆ VUKAŠIN DR LEKAR
+MILOŠEVIĆ VUKAŠIN
+MILOŠEVIĆ ZAHARIJE
+MILOŠEVIĆ ZDRAVKO
+MILOŠEVIĆ ZLATIMIR
+MILOŠEVIĆ ZORAN DIPL ING
+MILOŠEVIĆ ZORAN
+MILOJEVIĆ ĐORĐE
+MILOJEVIĆ ANA
+MILOJEVIĆ BRANISLAV
+MILOJEVIĆ BRANISLAV
+MILOJEVIĆ CVIJETA
+MILOJEVIĆ DIMITRIJE
+MILOJEVIĆ DRAGAN
+MILOJEVIĆ DRAGAN
+MILOJEVIĆ DUŠANKA
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ GOJKO
+MILOJEVIĆ GORDANA
+MILOJEVIĆ GROZDANA
+MILOJEVIĆ JANKO
+MILOJEVIĆ JELENA
+MILOJEVIĆ JULIJANA
+MILOJEVIĆ MIHAJLO
+MILOJEVIĆ-MILANOV SVETLANA
+MILOJEVIĆ MILIVOJE
+MILOJEVIĆ MILOJE DR PROF
+MILOJEVIĆ MILORAD
+MILOJEVIĆ MIROSLAV
+MILOJEVIĆ MOMIR DR
+MILOJEVIĆ OLGICA
+MILOJEVIĆ PAVLE
+MILOJEVIĆ PREDRAG
+MILOJEVIĆ RADOVAN
+MILOJEVIĆ RANKO
+MILOJEVIĆ SLOBODAN
+MILOJEVIĆ VASA
+MILOJEVIĆ VLADA
+MILOJEVIĆ VLADIMIR
+MILOJEVIĆ VOJIN
+MILOJEVIĆ VOJISLAV
+MILOJEVIĆ ZORAN
+MILOJEVIĆ ZORAN
+MILOJEVIĆ ZVONKO
+MILOJICA MILJA
+MILOJKOVIĆ ŽIVAN
+MILOJKOVIĆ ACA
+MILOJKOVIĆ BOŽANA
+MILOJKOVIĆ BOŽIDAR
+MILOJKOVIĆ DUŠAN
+MILOJKOVIĆ DUŠAN
+MILOJKOVIĆ JOVANKA
+MILOJKOVIĆ KATARINA
+MILOJKOVIĆ KRISTA
+MILOJKOVIĆ LJUBOMIR
+MILOJKOVIĆ MILIVOJ
+MILOJKOVIĆ MILOVAN
+MILOJKOVIĆ MIROLJUB
+MILOJKOVIĆ NADEŽDA
+MILOM IMRE
+MILOM IMRE
+MILORADIĆ BRANKO
+MILORADIĆ NIKOLA
+MILORADOV BORISLAVA
+MILORADOV MILOŠ
+MILORADOV MILORAD
+MILORADOV RADOSLAVKA
+MILORADOV VIOLETA
+MILORADOVIĆ BRANISLAV
+MILORADOVIĆ DEJAN
+MILORADOVIĆ DRAGAN
+MILORADOVIĆ MILOŠ
+MILORADOVIĆ MLADEN
+MILORADOVIĆ ZLATOJE
+MILOSAVAC MIĆA
+MILOSAVIĆ BORISLAV
+MILOSAVIĆ BRANKO
+MILOSAVIĆ KRSTAN
+MILOSAVIĆ MLADEN
+MILOSAVIĆ MOMČILO
+MILOSAVIĆ PETAR
+MILOSAVIĆ RADIVOJ
+MILOSAVIĆ STOJA
+MILOSAVLJEV ŽIVAN
+MILOSAVLJEV ŽIVKA
+MILOSAVLJEV ALEKSANDAR
+MILOSAVLJEV BOŽIDAR
+MILOSAVLJEV DOBREN
+MILOSAVLJEV DRAGINJA
+MILOSAVLJEV LJILJANA
+MILOSAVLJEV MELANIJA
+MILOSAVLJEV MILENKO
+MILOSAVLJEV MILICA
+MILOSAVLJEV NOVKA
+MILOSAVLJEV VLADA
+MILOSAVLJEV VOJA
+MILOSAVLJEVIĆ ŽARKO
+MILOSAVLJEVIĆ ŽIVADIN
+MILOSAVLJEVIĆ ŽIVKO
+MILOSAVLJEVIĆ ŽIVKO
+MILOSAVLJEVIĆ ADAM DIPL PRAVNIK
+MILOSAVLJEVIĆ BOŽIDAR
+MILOSAVLJEVIĆ BORA
+MILOSAVLJEVIĆ BORIVOJE
+MILOSAVLJEVIĆ BRANISLAV
+MILOSAVLJEVIĆ BRANKO
+MILOSAVLJEVIĆ BRATISLAV
+MILOSAVLJEVIĆ DEJAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGICA
+MILOSAVLJEVIĆ DRAGICA
+MILOSAVLJEVIĆ DRAGUTIN
+MILOSAVLJEVIĆ DUŠANKA
+MILOSAVLJEVIĆ ILIJA
+MILOSAVLJEVIĆ JELISAVETA
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ KATICA
+MILOSAVLJEVIĆ LAZAR
+MILOSAVLJEVIĆ MARIJA
+MILOSAVLJEVIĆ MIHAJLO
+MILOSAVLJEVIĆ MILAN
+MILOSAVLJEVIĆ MILAN
+MILOSAVLJEVIĆ MILE
+MILOSAVLJEVIĆ MILICA
+MILOSAVLJEVIĆ MILKA
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILOVAN
+MILOSAVLJEVIĆ MIODRAG DR
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIROSLAV
+MILOSAVLJEVIĆ NIKOLA DR
+MILOSAVLJEVIĆ NOVICA
+MILOSAVLJEVIĆ OLGA
+MILOSAVLJEVIĆ PETAR
+MILOSAVLJEVIĆ RADIVOJE
+MILOSAVLJEVIĆ RADIVOJ
+MILOSAVLJEVIĆ RADOMIR
+MILOSAVLJEVIĆ SAVO
+MILOSAVLJEVIĆ SLAVKO
+MILOSAVLJEVIĆ SLOBODAN
+MILOSAVLJEVIĆ SLOBODAN
+MILOSAVLJEVIĆ SRETA
+MILOSAVLJEVIĆ STANISLAV
+MILOSAVLJEVIĆ STANKO
+MILOSAVLJEVIĆ STEVO
+MILOSAVLJEVIĆ SVETOZAR
+MILOSAVLJEVIĆ VERA
+MILOSAVLJEVIĆ VERA
+MILOSAVLJEVIĆ VLADIMIR
+MILOSAVLJEVIĆ VLADISLAV
+MILOSAVLJEVIĆ ZORAN
+MILOSOVIĆ JOVAN
+MILOSOVIĆ MILOŠ
+MILOSOVIĆ MIRKO
+MILOVČEVIĆ MILOŠ
+MILOVAC DUŠAN
+MILOVAC GLIŠA
+MILOVAC GORAN
+MILOVAC ILE
+MILOVAC ILIJA
+MILOVAC JELA
+MILOVAC MILAN
+MILOVAC MILAN
+MILOVAC MILAN
+MILOVAC PETAR
+MILOVAC RUŽICA
+MILOVAC SIMO
+MILOVAC STANKO
+MILOVAC STEVAN
+MILOVAC STOJAN
+MILOVAN KONSTANCA
+MILOVANČEV ALEKSANDAR
+MILOVANČEV ISIDOR
+MILOVANČEV NIKOLA
+MILOVANČEV SLOBODAN DIPL ING
+MILOVANČEV SVETOZAR DR
+MILOVANKIĆ ĐORĐE
+MILOVANKIĆ MIROSLAV
+MILOVANOV ĐORĐE
+MILOVANOV ALEKSANDAR DIPL ING
+MILOVANOV ANICA
+MILOVANOV BOŽIDAR
+MILOVANOV DIMITRIJE DIPL ING
+MILOVANOV DRAGAN
+MILOVANOV GOJKO
+MILOVANOV GOJKO
+MILOVANOV GORAN
+MILOVANOV GORDANA DR LEKAR
+MILOVANOV IVAN
+MILOVANOV JULKA
+MILOVANOV MILAN
+MILOVANOV MILE
+MILOVANOV MILINKA
+MILOVANOV MILINKA
+MILOVANOV MIRJANA
+MILOVANOV SIMA
+MILOVANOV STOJANKA
+MILOVANOV TODOR
+MILOVANOV VASILIJE
+MILOVANOV ZORAN
+MILOVANOVIĆ ŽIKA
+MILOVANOVIĆ ŽIVKO
+MILOVANOVIĆ ANĐELKA
+MILOVANOVIĆ ANICA
+MILOVANOVIĆ ANICA
+MILOVANOVIĆ BOGOSAV
+MILOVANOVIĆ BRANISLAVA
+MILOVANOVIĆ BRANISLAV
+MILOVANOVIĆ BRANISLAV
+MILOVANOVIĆ DANICA
+MILOVANOVIĆ DOBRISAV
+MILOVANOVIĆ DOBRIVOJE
+MILOVANOVIĆ DRAGINJA
+MILOVANOVIĆ DRAGOLJUB
+MILOVANOVIĆ DRAGOLJUB
+MILOVANOVIĆ DRAGOMIR
+MILOVANOVIĆ DRAGOSLAV
+MILOVANOVIĆ DRAGOSLAV
+MILOVANOVIĆ DUŠAN DR LEKAR
+MILOVANOVIĆ DUŠAN
+MILOVANOVIĆ GORAN
+MILOVANOVIĆ GORDANA
+MILOVANOVIĆ ILIJA
+MILOVANOVIĆ IVANKA
+MILOVANOVIĆ IVICA
+MILOVANOVIĆ JOVAN
+MILOVANOVIĆ KATALIN
+MILOVANOVIĆ KATICA
+MILOVANOVIĆ KOSARA
+MILOVANOVIĆ KRSTOMIR
+MILOVANOVIĆ LJILJANA
+MILOVANOVIĆ LJILJANA
+MILOVANOVIĆ LJUBICA
+MILOVANOVIĆ LUKA
+MILOVANOVIĆ MILADIN
+MILOVANOVIĆ MILAN
+MILOVANOVIĆ MILENA
+MILOVANOVIĆ MILENKO
+MILOVANOVIĆ MILEVA
+MILOVANOVIĆ MILISAV
+MILOVANOVIĆ MILIVOJE
+MILOVANOVIĆ MILORAD
+MILOVANOVIĆ MILOVAN
+MILOVANOVIĆ MILOVAN
+MILOVANOVIĆ MIRJANA
+MILOVANOVIĆ MIRJANA
+MILOVANOVIĆ MOMIR DIPL ING
+MILOVANOVIĆ NADA MR
+MILOVANOVIĆ NIKOLA
+MILOVANOVIĆ OBREN
+MILOVANOVIĆ OLGA
+MILOVANOVIĆ RADAŠIN
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADE
+MILOVANOVIĆ RADISAV
+MILOVANOVIĆ RADISLAV
+MILOVANOVIĆ RADOSLAV
+MILOVANOVIĆ RISTA
+MILOVANOVIĆ SAVA
+MILOVANOVIĆ SLAVKA
+MILOVANOVIĆ SLAVKO
+MILOVANOVIĆ SLOBODAN
+MILOVANOVIĆ SONJA
+MILOVANOVIĆ SRBISLAV
+MILOVANOVIĆ STANICA
+MILOVANOVIĆ STEVAN DIPL ING
+MILOVANOVIĆ STEVAN
+MILOVANOVIĆ STEVAN
+MILOVANOVIĆ SVETOZAR
+MILOVANOVIĆ SVETOZAR
+MILOVANOVIĆ TERKA
+MILOVANOVIĆ VESELINKA
+MILOVANOVIĆ VESNA
+MILOVANOVIĆ VIDAN
+MILOVANOVIĆ VLADIMIR
+MILOVANOVIĆ VLADIMIR
+MILOVANOVIĆ VLADISLAV
+MILOVANOVIĆ VOJA
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VUKOSAVA
+MILOVANOVIĆ ZORAN
+MILOVANOVIĆ ZORAN
+MILOVANOVIĆ ZORKA
+MILOVIĆ ČEDO
+MILOVIĆ ĐORĐE
+MILOVIĆ BOŠKO
+MILOVIĆ BOGDAN
+MILOVIĆ BORIŠA
+MILOVIĆ BORO
+MILOVIĆ BORO
+MILOVIĆ BRANKO
+MILOVIĆ DESIMIR
+MILOVIĆ DUŠAN
+MILOVIĆ GOJKO
+MILOVIĆ GOJKO
+MILOVIĆ ILIJA
+MILOVIĆ JELENA
+MILOVIĆ KRSTO
+MILOVIĆ LJUBOMIR
+MILOVIĆ MAJA
+MILOVIĆ MARIJAN
+MILOVIĆ MILAN
+MILOVIĆ MILENKO
+MILOVIĆ MILORAD
+MILOVIĆ MILORAD
+MILOVIĆ MIOMIR
+MILOVIĆ MOMČILO
+MILOVIĆ ORLE
+MILOVIĆ PETAR
+MILOVIĆ RADE
+MILOVIĆ RADOVAN
+MILOVIĆ SLOBODAN
+MILOVIĆ STANKO
+MILOVIĆ TOMISLAV
+MILOVIĆ VUKAŠIN
+MILUŠIĆ EVICA
+MILUŠIĆ PETAR DIPL ING
+MILUNOV JOVAN
+MILUNOV JULKA
+MILUNOVIĆ BRANKO
+MILUNOVIĆ DRAGOMIR
+MILUNOVIĆ MILOŠ
+MILUNOVIĆ MILOMIR
+MILUNOVIĆ MILORAD
+MILUNOVIĆ MILUN
+MILUNOVIĆ RADOMIR
+MILUNOVIĆ SPASENKO
+MILUNOVIĆ ZORICA
+MILUROVIĆ SLOBODAN
+MILUTIN ŽIVKO
+MILUTIN JASNA
+MILUTIN MIRA
+MILUTIN NEDELJKO
+MILUTIN RATKO
+MILUTIN VOJISLAV
+MILUTINOV ĐOKA
+MILUTINOV ACA
+MILUTINOV DRAGOSLAV
+MILUTINOV JELISAVETA
+MILUTINOV JOVAN
+MILUTINOV KONSTANTIN
+MILUTINOV LAZAR
+MILUTINOV MILISAV
+MILUTINOV MITA
+MILUTINOV-NEDELJKOVIĆ RADOVAN
+MILUTINOV RADA
+MILUTINOV RADOSLAV
+MILUTINOV SAVA
+MILUTINOV SAVETA
+MILUTINOV TODOR
+MILUTINOV VELIBOR
+MILUTINOVIĆ ŠTEFICA
+MILUTINOVIĆ ŽIKA
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐURĐICA
+MILUTINOVIĆ ANĐELKO
+MILUTINOVIĆ BOŠKO
+MILUTINOVIĆ BOJAN
+MILUTINOVIĆ BRANKA
+MILUTINOVIĆ BUDIMIR
+MILUTINOVIĆ DANIJELA
+MILUTINOVIĆ DRAGAN
+MILUTINOVIĆ DRAGICA
+MILUTINOVIĆ DRAGICA
+MILUTINOVIĆ DRAGUTIN
+MILUTINOVIĆ DUŠANKA
+MILUTINOVIĆ DUŠAN
+MILUTINOVIĆ GAVRILO
+MILUTINOVIĆ IGNJAT
+MILUTINOVIĆ JOVAN
+MILUTINOVIĆ JOVAN
+MILUTINOVIĆ JULKICA
+MILUTINOVIĆ LIDIJA
+MILUTINOVIĆ LIDIJA
+MILUTINOVIĆ LJUBINKA
+MILUTINOVIĆ LJUBO
+MILUTINOVIĆ MANDA
+MILUTINOVIĆ MARTA
+MILUTINOVIĆ MELANIJA
+MILUTINOVIĆ MILADIN
+MILUTINOVIĆ MILAN
+MILUTINOVIĆ MILAN
+MILUTINOVIĆ MILENKO
+MILUTINOVIĆ MILINKO
+MILUTINOVIĆ MILIVOJE
+MILUTINOVIĆ MILIVOJE
+MILUTINOVIĆ MILOŠ
+MILUTINOVIĆ MILOJKO
+MILUTINOVIĆ MILORAD
+MILUTINOVIĆ MILORAD
+MILUTINOVIĆ MILOVAN
+MILUTINOVIĆ MILUTIN
+MILUTINOVIĆ MIOMIR
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIROSLAVA DR
+MILUTINOVIĆ MIROSLAV
+MILUTINOVIĆ MOMIR
+MILUTINOVIĆ OLGA
+MILUTINOVIĆ PETAR
+MILUTINOVIĆ PETAR
+MILUTINOVIĆ RADE
+MILUTINOVIĆ RADIŠA
+MILUTINOVIĆ RADOJKA
+MILUTINOVIĆ RADOSAV
+MILUTINOVIĆ SAŠA
+MILUTINOVIĆ SLAVKO
+MILUTINOVIĆ SLOBODANKA
+MILUTINOVIĆ SRETEN
+MILUTINOVIĆ STANA
+MILUTINOVIĆ STEVAN
+MILUTINOVIĆ STOJANKA
+MILUTINOVIĆ STOJAN
+MILUTINOVIĆ SVETOZAR
+MILUTINOVIĆ VELIMIR
+MILUTINOVIĆ VERA
+MILUTINOVIĆ VERA
+MILUTINOVIĆ VERICA DR
+MILUTINOVIĆ-VUKSAN OLGA
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MIMICA MLADEN
+MIMICA NENAD
+MIMICA NENAD
+MIMICA NENAD
+MINČIĆ MIROLJUB
+MINČIĆ MIROSLAV
+MINČIĆ SLOBODANKA
+MINDA-RAĐENOVIĆ ELENA
+MINDA TIBOR
+MINDIĆ MIRJANA
+MINDIĆ SVETISLAV
+MINEA ROMAN
+MINIĆ MILOSAV
+MINIĆ NADA
+MINIĆ SLAVKO
+MINIĆ TOMISLAV
+MINIĆ ZORKA
+MINIK ŠANDOR
+MINIK JOSIP
+MINJA MAJA
+MINJA MILUTIN
+MIOČ ŽELJKO
+MIOČ IVAN
+MIOČ ZDENKO
+MIOČINOVIĆ MARKO
+MIOČINOVIĆ MILAN
+MIODANIĆ DANKO
+MIODRAG ANA
+MIODRAG MIRKO
+MIODRAG PERO
+MIODRAG ZDRAVKA
+MIODRAG ZORICA
+MIODRAGOVIĆ ALAKSANDAR
+MIODRAGOVIĆ BORISLAV
+MIODRAGOVIĆ DRAGOLJUB
+MIODRAGOVIĆ DRAGOLJUB
+MIODRAGOVIĆ DRAGOMIR
+MIODRAGOVIĆ DUŠKO
+MIODRAGOVIĆ MILENKO DIPL ING
+MIODRAGOVIĆ MILENKO
+MIODRAGOVIĆ RADOSLAV
+MIODRAGOVIĆ STEVAN
+MIODRAGOVIĆ TOŠA
+MIODRAGOVIĆ VERA
+MIODRAGOVIĆ-VUKANIĆ ALEKSANDRA
+MIODRAGOVIĆ ZORICA
+MIOK VLASTIMIR
+MIOKOVIĆ BRANKO
+MIOKOVIĆ DANICA
+MIOKOVIĆ RADOSLAV
+MIOLSKI BORISLAV
+MIOLSKI DUŠKO
+MIOLSKI STANKO
+MIOLSKI STEVAN
+MIRČETIĆ JOVAN
+MIRČETIĆ LAZAR
+MIRČETIĆ MILICA
+MIRČETIĆ MILUTIN
+MIRČETIĆ RADOSLAV
+MIRČETIĆ SLAVKO
+MIRČETIĆ ZORAN
+MIRČETIĆ ZORAN
+MIRČEVSKI MIHAILO
+MIRČIĆ KOVILJKA
+MIRČIĆ MILORAD
+MIRČIĆ NIKOLA
+MIRČIĆ RADOVAN
+MIRČIĆ STOJANKA
+MIRČIĆ STOJAN
+MIRAŽIĆ ANTUN
+MIRAŽIĆ BRANISLAV
+MIRAŽIĆ BRANKO
+MIRAŽIĆ JELA
+MIRAŽIĆ MARA
+MIRAŽIĆ VESELINKA
+MIRALEM AHMED
+MIRANOVIĆ KSENIJA DR LEKAR
+MIRANOVIĆ MAJA
+MIRANOVIĆ MIRKO
+MIREŠEVIĆ DUŠAN
+MIREŠEVIĆ RADOJKA
+MIRIĆ ĐURA
+MIRIĆ AGATA
+MIRIĆ BOŽIDAR
+MIRIĆ DANE
+MIRIĆ DRAGOMIR
+MIRIĆ DRAGUTIN
+MIRIĆ DUŠANKA
+MIRIĆ DUŠAN
+MIRIĆ DUŠAN
+MIRIĆ DUŠKO
+MIRIĆ JOSIF
+MIRIĆ JOVAN
+MIRIĆ JOVO
+MIRIĆ KATA
+MIRIĆ KATICA
+MIRIĆ KOVILJKA
+MIRIĆ MARIJA
+MIRIĆ MILAN
+MIRIĆ MILAN
+MIRIĆ MILAN
+MIRIĆ MILENA
+MIRIĆ MILKA
+MIRIĆ NIKOLA
+MIRIĆ PAVLE
+MIRIĆ RAJKO
+MIRIĆ RUŽICA
+MIRIĆ SAŠA
+MIRIĆ SAVKA
+MIRIĆ SMILJA
+MIRIĆ STEVAN
+MIRIĆ STOJANKA
+MIRIĆ VASILIJE
+MIRILOV ALEKSANDAR
+MIRILOV MILADIN DR
+MIRILOV ZORKA
+MIRILOVIĆ DRAGAN
+MIRILOVIĆ GORDANA
+MIRILOVIĆ LAZAR
+MIRILOVIĆ MLADEN
+MIRILOVIĆ SNEŽANA
+MIRIMANOV DARA
+MIRIMANOV VLADIMIR
+MIRJAČIĆ BOSA
+MIRJANIĆ DANICA
+MIRJANIĆ MORAVKA
+MIRJANIĆ VASA
+MIRJANIĆ VERICA
+MIRJANIN NERA
+MIRKAC STANISLAV
+MIRKAJLOVIĆ MILOVAN
+MIRKAJLOVIĆ MILOVAN
+MIRKIĆ BLAGOJE
+MIRKONJ SREDOJE
+MIRKONJEV BRANISLAV
+MIRKONJEV SNEŽANA
+MIRKOV ŽELJKO
+MIRKOV ŽIVAN
+MIRKOV ĐORĐE
+MIRKOV ĐURĐIJA
+MIRKOV ĐURĐIJA
+MIRKOV ĐURICA
+MIRKOV BOSILJKA
+MIRKOV DUŠICA
+MIRKOV EVICA
+MIRKOV MARICA
+MIRKOV PAVLE
+MIRKOV RUŽICA
+MIRKOV SEKULA DIPL OEC
+MIRKOV SLOBODAN
+MIRKOV SNEŽANA
+MIRKOV STANISLAV
+MIRKOV STEVAN
+MIRKOV STEVAN
+MIRKOV VELJKO
+MIRKOV VLADA
+MIRKOV ZORAN
+MIRKOV ZORICA
+MIRKOV ZORKA
+MIRKOVIĆ ČEDOMIR
+MIRKOVIĆ ŽIVAN
+MIRKOVIĆ ŽIVKA
+MIRKOVIĆ ŽIVOJIN
+MIRKOVIĆ ĐORĐE
+MIRKOVIĆ ĐORĐE
+MIRKOVIĆ AVRAM
+MIRKOVIĆ BORA
+MIRKOVIĆ BRANISLAV
+MIRKOVIĆ BRANKA
+MIRKOVIĆ BRANKA
+MIRKOVIĆ BRANKO
+MIRKOVIĆ BRANKO
+MIRKOVIĆ DANICA
+MIRKOVIĆ DEJAN
+MIRKOVIĆ DRAGANA
+MIRKOVIĆ DRAGICA
+MIRKOVIĆ DRAGICA
+MIRKOVIĆ DRAGOLJUB
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠKO
+MIRKOVIĆ DUBRAVKA
+MIRKOVIĆ EDITA
+MIRKOVIĆ ELA
+MIRKOVIĆ EMILIJA
+MIRKOVIĆ GAVRILO
+MIRKOVIĆ IVAN
+MIRKOVIĆ JOVANKA
+MIRKOVIĆ JOVAN
+MIRKOVIĆ JOVAN
+MIRKOVIĆ JOVAN
+MIRKOVIĆ KATICA
+MIRKOVIĆ LAZAR
+MIRKOVIĆ LJILJANA
+MIRKOVIĆ LJILJANA
+MIRKOVIĆ MARA
+MIRKOVIĆ MARA
+MIRKOVIĆ MILAN DR
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILICA
+MIRKOVIĆ MILISAV
+MIRKOVIĆ MILIVOJ DIPL ING
+MIRKOVIĆ MILIVOJE
+MIRKOVIĆ MILKA
+MIRKOVIĆ MILOŠ
+MIRKOVIĆ MILOSAV
+MIRKOVIĆ MILOVAN
+MIRKOVIĆ MILUTIN
+MIRKOVIĆ MIODRAG
+MIRKOVIĆ MIRJANA
+MIRKOVIĆ MIRKO
+MIRKOVIĆ MIROSLAV
+MIRKOVIĆ NENAD
+MIRKOVIĆ NOVAK
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PREDRAG
+MIRKOVIĆ RADMILA
+MIRKOVIĆ RATKO
+MIRKOVIĆ SANJA
+MIRKOVIĆ SAVA
+MIRKOVIĆ SLOBODAN DR LEKAR
+MIRKOVIĆ SLOBODAN
+MIRKOVIĆ STEVAN
+MIRKOVIĆ SVETISLAV
+MIRKOVIĆ TRIFUN
+MIRKOVIĆ VLADIMIR
+MIRKOVIĆ ZORAN DR
+MIRKOVIĆ ZORAN
+MIRKOVIĆ ZORAN
+MIRKOVIĆ ZORKA
+MIRKOVIĆ ZORKA
+MIRNIĆ JOSIP DR
+MIRNIĆ SILVIJA
+MIRNIĆ VUKAŠIN
+MIROŠEVIĆ NINO
+MIRONICKI RUŽICA
+MIRONICKI ZVONIMIR
+MIROSAVIĆ MILENKO
+MIROSAVIĆ MILENKO
+MIROSAVLJEV ILINKA
+MIROSAVLJEV JOCA
+MIROSAVLJEV MARIJA
+MIROSAVLJEV MILENKO
+MIROSAVLJEV MLADEN
+MIROSAVLJEVIĆ ALEKSANDAR
+MIROSAVLJEVIĆ BOŠKO
+MIROSAVLJEVIĆ BORISLAV
+MIROSAVLJEVIĆ BORIVOJ
+MIROSAVLJEVIĆ BRANKA
+MIROSAVLJEVIĆ DOBRILA
+MIROSAVLJEVIĆ JOVAN
+MIROSAVLJEVIĆ LEPOSAVA
+MIROSAVLJEVIĆ LJUBICA
+MIROSAVLJEVIĆ LJUBODRAG
+MIROSAVLJEVIĆ MAGDA
+MIROSAVLJEVIĆ MILENKO
+MIROSAVLJEVIĆ NIKOLA
+MIROSAVLJEVIĆ NIKOLA
+MIROSAVLJEVIĆ STEVAN
+MIROSAVLJEVIĆ STRAHINJA
+MIROSAVLJEVIĆ SVETISLAV
+MIROSAVLJEVIĆ TOMISLAV
+MIROSAVLJEVIĆ TOMISLAV
+MIROSAVLJEVIĆ VERA
+MIROSAVLJEVIĆ VERA
+MIROSAVLJEVIĆ VOJISLAV
+MIROSAVLJEVIĆ ZORAN
+MIROSAVLJEVIĆ ZORKA
+MIROSLAVLJEVIĆ DUŠANKA
+MIROVIĆ ALEKSANDAR
+MIROVIĆ DIMITRIJE
+MIROVIĆ IGOR
+MIROVIĆ MARIJA
+MIROVIĆ MILO
+MIROVIĆ NENAD
+MISAILOVIĆ SVETOZAR
+MISAJLOVIĆ MARGITA
+MISALJEVIĆ NEMANJA
+MISIMI KAMBER
+MISINI MIRIMAN
+MISIRKIĆ MILOŠ
+MISIRKIĆ VLADA
+MISIRLIS GEORGIOS
+MISKIN DRAGAN
+MISKIN MILOŠ
+MISKIN NIKO
+MISKIN ZDRAVKO
+MISLIMI ALIVEBI
+MITAR TOMA
+MITAR VERA
+MITEVSKI IVAN
+MITIĆ ČEDOMIR
+MITIĆ ALEKSANDAR
+MITIĆ BORIVOJ
+MITIĆ BRANISLAVA
+MITIĆ BRANISLAV
+MITIĆ BUDIMIR
+MITIĆ DANICA
+MITIĆ DRAGOLJUB
+MITIĆ DRAGOLJUB
+MITIĆ DRAGUTIN
+MITIĆ DUŠAN
+MITIĆ GORDANA
+MITIĆ IGOR
+MITIĆ JOSIF
+MITIĆ JOVAN
+MITIĆ JOVAN
+MITIĆ MARIJA
+MITIĆ MILAN
+MITIĆ MILIVOJ
+MITIĆ MIODRAG DR LEKAR
+MITIĆ MIODRAG
+MITIĆ MIRKO
+MITIĆ MITAR DIPL ING
+MITIĆ NIKOLA
+MITIĆ PAVLE
+MITIĆ RADIVOJE
+MITIĆ RUŽICA
+MITIĆ SLAVKO
+MITIĆ SREBRA
+MITIĆ SUZANA
+MITIĆ TOMISLAV
+MITIĆ VELIMIR
+MITIĆ VERA
+MITIĆ VIDOSAVA
+MITIĆ VITOMIR
+MITKOVIĆ DRAGAN
+MITOŠEVIĆ BOGDAN
+MITOŠEVIĆ MILE
+MITOŠEVIĆ NADA
+MITOŠEVIĆ SAVA
+MITOVIĆ ALEKSANDAR
+MITOVIĆ DOBRISLAV
+MITOVIĆ MIROSLAV
+MITRAŠINOVIĆ LJILJANA
+MITRAŠINOVIĆ ZORA
+MITRAKOVIĆ ĐURAĐ
+MITRAKOVIĆ MIROSLAV
+MITRAKOVIĆ NENAD
+MITRAKOVIĆ UGLJEŠA
+MITREKANIĆ MILORAD
+MITRESKI MOMČILO
+MITREVSKA EVDOKIJA
+MITREVSKI LAMBE
+MITREVSKI MOMČILO
+MITREVSKI RADA
+MITRIČEVIĆ ŽIKA
+MITRIČEVIĆ ANĐELKA
+MITRIČEVIĆ ANA
+MITRIČEVIĆ SMILJA
+MITRIĆ ĐURO
+MITRIĆ BOGIĆ
+MITRIĆ MILAN
+MITRIĆ MILAN
+MITRIĆ MILOŠ
+MITRIĆ NEĐO
+MITRIĆ NEĐO
+MITRIĆ NOVAK
+MITRIĆ RADMILA
+MITRIĆ VALENTINA
+MITROVČAN JULKICA
+MITROVČAN KOSTA
+MITROVČAN LAZAR
+MITROVČAN LJUBINKO
+MITROVČAN LJUBINKO
+MITROVČAN MITA
+MITROVČAN RADINKA
+MITROVČAN STEVAN
+MITROVČAN STJEPAN
+MITROVČAN ZAGORKA
+MITROVIĆ ČEDOMIR
+MITROVIĆ ŽARKO
+MITROVIĆ ŽIVORAD
+MITROVIĆ ĐOKO
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ANGELINA
+MITROVIĆ ANKA
+MITROVIĆ BILJANA
+MITROVIĆ BOŠKO
+MITROVIĆ BORISLAV
+MITROVIĆ BRANKO
+MITROVIĆ BRANKO
+MITROVIĆ DANICA
+MITROVIĆ DARINKA
+MITROVIĆ DESANKA
+MITROVIĆ DRAGAN
+MITROVIĆ DRAGAN
+MITROVIĆ DRAGICA
+MITROVIĆ DRAGI
+MITROVIĆ DRAGOJLO
+MITROVIĆ DRAGOLJUB
+MITROVIĆ DUŠANKA
+MITROVIĆ DUŠAN
+MITROVIĆ DUŠAN
+MITROVIĆ DUŠKO
+MITROVIĆ DUBRAVKA
+MITROVIĆ GOJKO
+MITROVIĆ GOSPAVA
+MITROVIĆ GOSPA
+MITROVIĆ IKA
+MITROVIĆ IVAN
+MITROVIĆ JELENA
+MITROVIĆ JELENA
+MITROVIĆ JELICA
+MITROVIĆ JOVAN
+MITROVIĆ JOVAN
+MITROVIĆ JOVAN
+MITROVIĆ LAZAR
+MITROVIĆ LAZAR
+MITROVIĆ LJILJANA
+MITROVIĆ LJUBISAV
+MITROVIĆ LJUBOMIR
+MITROVIĆ LJUBOMIR
+MITROVIĆ MARKO
+MITROVIĆ MIHAJLO
+MITROVIĆ MIHAJLO
+MITROVIĆ MILANKA
+MITROVIĆ MILAN
+MITROVIĆ MILAN
+MITROVIĆ MILENA
+MITROVIĆ MILENKO
+MITROVIĆ MILICA
+MITROVIĆ MILKA
+MITROVIĆ MILOŠ
+MITROVIĆ MILOŠ
+MITROVIĆ MILORAD
+MITROVIĆ MILOVAN
+MITROVIĆ MIODRAG
+MITROVIĆ MIODRAG
+MITROVIĆ MIODRAG
+MITROVIĆ MIRKO
+MITROVIĆ MIRKO
+MITROVIĆ MIROSLAV
+MITROVIĆ MIROSLAV
+MITROVIĆ MITAR DIPL ING
+MITROVIĆ MLADEN
+MITROVIĆ MLADEN
+MITROVIĆ MLADEN
+MITROVIĆ MOMČILO
+MITROVIĆ MOMIR
+MITROVIĆ NADEŽDA
+MITROVIĆ NENAD
+MITROVIĆ NIKOLA
+MITROVIĆ OLGA
+MITROVIĆ PETAR
+MITROVIĆ RADISLAV
+MITROVIĆ RADIVOJE
+MITROVIĆ RADIVOJ
+MITROVIĆ RADMILA
+MITROVIĆ RADMILA
+MITROVIĆ RADOJICA
+MITROVIĆ RADOVAN
+MITROVIĆ RADOVAN
+MITROVIĆ RADO
+MITROVIĆ RATKO
+MITROVIĆ SLAVKO
+MITROVIĆ SLAVKO
+MITROVIĆ SLOBODAN
+MITROVIĆ SLOBODAN
+MITROVIĆ SLOBODAN
+MITROVIĆ SOFIJA
+MITROVIĆ SRETA
+MITROVIĆ STAKA
+MITROVIĆ STANIŠA
+MITROVIĆ STANKO
+MITROVIĆ STEVAN
+MITROVIĆ STEVAN
+MITROVIĆ SUZANA
+MITROVIĆ SUZANA
+MITROVIĆ TIHOMIR DIPL ING
+MITROVIĆ TIHOMIR
+MITROVIĆ TODE
+MITROVIĆ VALERIJA
+MITROVIĆ VASA
+MITROVIĆ VELIMIR
+MITROVIĆ VERA
+MITROVIĆ VERA
+MITROVIĆ VERICA
+MITROVIĆ VERONIKA
+MITROVIĆ VESELIN
+MITROVIĆ VLADIMIR
+MITROVIĆ VUČETA
+MITROVIĆ-VUJNIĆ SMILJANA
+MITROVIĆ VUJOŠ
+MITROVIĆ ZLATKO
+MITRUŠIĆ BORISLAV
+MITRUŠIĆ BRANISLAV
+MITRUŠIĆ JELISAVETA
+MIUČIN NATALIJA
+MIUČIN ROZINA
+MIUČIN SLAVKO
+MIUČIN SVETOZAR
+MIUČIN VERICA
+MIZ MARIJA
+MIZ ROMAN
+MIZDRAK BRANKO
+MJEDA SIMON
+MLAĐEN ĐURO
+MLAĐEN DMITAR
+MLAĐENOVIĆ BRANKA
+MLAĐENOVIĆ ELENA
+MLAĐENOVIĆ RADE
+MLADENOVIĆ ŽIVORAD
+MLADENOVIĆ ĐORĐE
+MLADENOVIĆ ĐORĐE
+MLADENOVIĆ ALEKSANDAR
+MLADENOVIĆ ALEKSANDAR
+MLADENOVIĆ ANĐELKA
+MLADENOVIĆ ANKICA
+MLADENOVIĆ BOŠKO
+MLADENOVIĆ BOGDAN
+MLADENOVIĆ BOSILJKA
+MLADENOVIĆ DANILO
+MLADENOVIĆ DRAGAN
+MLADENOVIĆ DRAGAN
+MLADENOVIĆ DRAGOLJUB
+MLADENOVIĆ DRAGOMIR
+MLADENOVIĆ DUŠAN
+MLADENOVIĆ DUŠAN
+MLADENOVIĆ GRADIMIR
+MLADENOVIĆ JELENA
+MLADENOVIĆ JELENA
+MLADENOVIĆ JELICA
+MLADENOVIĆ JELICA
+MLADENOVIĆ JUSTINA
+MLADENOVIĆ MARA
+MLADENOVIĆ MARINA
+MLADENOVIĆ MIHAJLO
+MLADENOVIĆ MILAN DIPL ING
+MLADENOVIĆ MILAN
+MLADENOVIĆ MILAN
+MLADENOVIĆ MILORAD
+MLADENOVIĆ MILORAD
+MLADENOVIĆ MILOVAN
+MLADENOVIĆ MILOVAN
+MLADENOVIĆ MLADEN
+MLADENOVIĆ NADEŽDA
+MLADENOVIĆ NEBOJŠA
+MLADENOVIĆ-NIKOLIĆ GORDANA
+MLADENOVIĆ OLGA
+MLADENOVIĆ PETAR
+MLADENOVIĆ RADIVOJ
+MLADENOVIĆ RAJKO
+MLADENOVIĆ RANKO
+MLADENOVIĆ RUŽICA
+MLADENOVIĆ SAVA
+MLADENOVIĆ SLOBODAN
+MLADENOVIĆ SLOBODAN
+MLADENOVIĆ SRBISLAVKA
+MLADENOVIĆ TIHOMIR
+MLADENOVIĆ TOMISLAV
+MLADENOVIĆ TOMISLAV
+MLADENOVIĆ UROŠ
+MLADENOVIĆ VEKOSLAV
+MLADENOVIĆ VERICA
+MLADENOVIĆ VOJISLAV
+MLADENOVIĆ ZAGORKA
+MLADENOVIĆ ZORANA
+MLADENOVSKI LOZANA
+MLADIN IMRE
+MLADIN MARGITA
+MLAZEV VASIL
+MLINAR MUHAREM
+MLINAR MUSTAFA
+MLINKO AMBROZIJE
+MLINKO DUŠAN
+MLINKO PETAR
+MLINKO ZVONIMIR
+MOČ JELENA
+MOČ JOVANKA
+MOŠO JOŽEF
+MOŠORINAC ŽIVKO
+MOŠORINAC NENAD
+MOŠORINSKI ZAGORKA
+MOŠORINSKI ZORA
+MOĆAN JELENA DIPL ING
+MOŽE EMIL
+MOCIĆ MOMIR
+MOCIK ĐULA
+MOCIK IRENKA
+MOCKO JAN
+MOCKO-MILADINOVIĆ VIERA
+MOCKO MIROSLAV
+MOCKO STEVAN
+MOCNAI IRENA
+MOCNI JOVAN
+MOCNI MARIJA
+MOCNI STEVAN
+MODELSKI BRANISLAVA
+MODIĆ MILENKO
+MODIĆ MILENKO
+MODIĆ MILIVOJE
+MODIĆ RANKO
+MODIĆ SLOBODAN
+MODIĆ TOMISLAV
+MODIĆ TOMISLAV
+MODOŠANOV MARTA
+MODOŠANOV NIKOLA
+MODRAH VLADIMIR
+MODRI ŠANDOR
+MODRI DRAGAN
+MODRI EVA
+MODRIĆ ILIJA
+MODRIĆ STANKO
+MODRINIĆ MILICA
+MODRONJA FEHIM
+MOFARDIN SPASENKA
+MOGA BRANKO
+MOGA JOVAN
+MOGA MILAN DR LEKAR
+MOGA MLADEN
+MOGA PAJA
+MOGA STEVAN
+MOGA VERA
+MOGIĆ ALEKSANDAR
+MOGIĆ BORISLAV
+MOGIĆ GORANA
+MOGIN ALEKSANDAR
+MOGIN ALEKSANDAR
+MOGIN ALEKSANDAR
+MOGIN BORISLAV
+MOGIN IRINA
+MOGIN JELENA
+MOGIN JULIJANA
+MOGIN KSENIJA
+MOGIN LAZAR
+MOGIN LJUBIŠA
+MOGIN MARA
+MOGIN MILANA
+MOGIN MILAN
+MOGIN PAVLE
+MOGIN PAVLE
+MOGIN PAVLE
+MOGIN PETAR
+MOGIN RADOMIR
+MOGIN RADOMIR
+MOGIN VITOMIR
+MOHAČI ALEKSANDAR
+MOHAČI LASLO
+MOHAN DEANA
+MOHAN JON
+MOHAN PETAR
+MOHAN SMILJANA
+MOHORA EMILIJAN
+MOHORIĆ DANICA
+MOHORKO ILIJA
+MOHORKO ILIJA
+MOHORKO MARGITA
+MOHORKO RAJKO
+MOJIĆ DUŠAN
+MOJIĆ DUŠAN
+MOJIĆ IVANKA
+MOJIĆ MILIVOJE
+MOJIĆ MILORAD
+MOJIĆ MITAR
+MOJIĆ NIKOLA
+MOJIĆ NIKOLA
+MOJIĆ SLAVKO
+MOJIĆEVIĆ DESIMIR
+MOJIN SOFIJA
+MOJSE KATICA
+MOJSE NANDOR
+MOJSEJEV ALEKSANDAR
+MOJSEJEV KONSTANTIN DIPL PH
+MOJSIJEVIĆ NIKOLA
+MOJSIJEVIĆ SAVA
+MOJSILOV DIMITRIJE
+MOJSILOV DRAGAN
+MOJSILOV MILISAV
+MOJSILOVIĆ MILOMIR
+MOJSILOVIĆ PETAR
+MOJSILOVIĆ SLAVICA
+MOJSILOVIĆ VERA
+MOJSILOVIĆ VIDOJE
+MOJSIN DRAGOMIR
+MOJSOVIĆ ALEKSANDAR
+MOJZEŠ ALFRED
+MOJZEŠ MARIJA
+MOKUŠ ŠANDOR
+MOKUŠ IMRE
+MOKUŠ JOVAN
+MOKUŠ KALMAN
+MOKUŠ LASLO
+MOKUŠ LASLO
+MOKUŠ LASLO
+MOKUŠ MIKLOŠ
+MOKUŠ TIBOR
+MOKUŠ ZOLTAN
+MOLAC MILORAD
+MOLC KATICA
+MOLDOVAN LJUBINKA
+MOLDOVAN MARIJA
+MOLDOVANOV BOŠKO
+MOLDOVANOVIĆ ĐORĐE
+MOLDVAI ERVIN
+MOLDVAI IZABELA
+MOLDVAI LASLO
+MOLDVAI OTO
+MOLDVAJ FRANJA
+MOLDVAJ HILDA
+MOLDVAJ-OLAH EMILIJA
+MOLDVAJ ROZALIA
+MOLDVAJ STEVAN
+MOLDVAJ VIKTOR
+MOLDVAJI PREDRAG
+MOLEROV RADOVAN
+MOLJAC ĐORĐE
+MOLJAC BRANKA
+MOLJAC GAVRA
+MOLJAC GAVRA
+MOLJAC JOVAN
+MOLJAC JOVAN
+MOLJAC KATICA
+MOLJAC MILICA
+MOLJAC MIODRAG
+MOLJAC NADA
+MOLJAC PAJA
+MOLJAC STEVAN
+MOLJAC STEVAN
+MOLJAC VERA
+MOLJSKI MIROSLAV
+MOLKUC PETAR DIPL ING
+MOLKUC VIRĐINEL
+MOLNAR ŠANDOR
+MOLNAR-ŠTEFULIK ILONA
+MOLNAR ĐORĐE
+MOLNAR ALEKSANDAR
+MOLNAR ANDRAŠ
+MOLNAR ANDRAŠ
+MOLNAR ANTON
+MOLNAR ARPAD
+MOLNAR BRANISLAVA
+MOLNAR DEŽE
+MOLNAR EMILIJA
+MOLNAR EMILIJA
+MOLNAR EVICA
+MOLNAR FEODOR
+MOLNAR FERENC DIPL ING
+MOLNAR IŠTVAN
+MOLNAR IŠTVAN
+MOLNAR IMRE DR
+MOLNAR IMRE
+MOLNAR IMRE
+MOLNAR IRENA
+MOLNAR IVAN DIPL ING
+MOLNAR IVAN
+MOLNAR IVAN
+MOLNAR JAKOV
+MOLNAR JANOŠ
+MOLNAR JAN
+MOLNAR JELENA
+MOLNAR JELICA
+MOLNAR JELISAVETA
+MOLNAR JELISAVETA
+MOLNAR JELISAVETA
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOLANKA
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOVAN
+MOLNAR KARLO
+MOLNAR KATALIN
+MOLNAR LASLO
+MOLNAR LAZAR
+MOLNAR MAĆAŠ
+MOLNAR MARIJA DR
+MOLNAR MARTA DR
+MOLNAR MATILDA
+MOLNAR MIHAJLO
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MILAN
+MOLNAR MIRON
+MOLNAR NIKOLA
+MOLNAR SPOMENKA
+MOLNAR SVETOSLAV
+MOLNAR TEREZA
+MOLNAR VERA
+MOLNAR VILMOŠ DIPL ING
+MOLNAR VJERA
+MOLNAR VLADIMIR
+MOLNAR ZVONKO
+MOMČILOV DOBRIJA
+MOMČILOV GAVRILO
+MOMČILOV GAVRILO
+MOMČILOV STEVAN
+MOMČILOVIĆ ČEDOMIR
+MOMČILOVIĆ BOGOMIR
+MOMČILOVIĆ BRANKO DR
+MOMČILOVIĆ DANE
+MOMČILOVIĆ DRAGAN
+MOMČILOVIĆ DUŠANKA
+MOMČILOVIĆ ILIJA
+MOMČILOVIĆ MIHAJLO
+MOMČILOVIĆ MILAN
+MOMČILOVIĆ MILAN
+MOMČILOVIĆ MILE
+MOMČILOVIĆ MIRA
+MOMČILOVIĆ MIRA
+MOMČILOVIĆ MOMČILO
+MOMČILOVIĆ PETAR
+MOMČILOVIĆ RUŽICA
+MOMČILOVIĆ SMILJA
+MOMČILOVIĆ TOMISLAV
+MOMČILOVIĆ VASA
+MOMČILOVIĆ VIDAN
+MOMČILOVIĆ VOJISLAV
+MOMČILOVIĆ VUKICA
+MOMANI AKRAM
+MOMIĆ OBRAD
+MOMIROV ILIJA
+MOMIROV LJILJANA
+MOMIROV MILENKO
+MOMIROV MILETA
+MOMIROV MIROSLAV
+MOMIROV NADA
+MOMIROV PAJA
+MOMIROV SAVA
+MOMIROV SVETLANA
+MOMIROV SVETOZAR
+MOMIROV TOŠA
+MOMIROV ZORICA
+MOMIROVIĆ BRANKO
+MOMIROVIĆ JELICA
+MOMIROVIĆ JOVICA
+MOMIROVIĆ LAZA
+MOMIROVIĆ PETAR
+MOMIROVIĆ SREĆKO
+MOMIROVIĆ STEVAN
+MOMIROVSKI-MILOŠEVIĆ CVETANA
+MONAR JANKO
+MONAREV ALEKSANDAR
+MONAREV JOSIPA
+MONAREV-SOKOLIĆ NADA
+MONAROV ELIZABETA
+MONAROV JOZEFINA
+MONDOVIĆ ĐULA
+MONDOVIĆ ALEKSANDAR
+MONDOVIĆ FRANJA
+MONDOVIĆ KATICA
+MONDOVIĆ LADISLAV
+MONGEJAR RADOSAVA
+MONI ISLAM
+MONOKI ĐULA
+MONOKI IŠTVAN
+MOR ĐERĐ
+MOR FRANJA
+MOR GABOR
+MOR GABOR
+MOR LASLO
+MOR ZDENKO
+MORA ANA
+MORA ANDRAŠ
+MORA KORNELIJA
+MORAČA ĐURAĐ
+MORAČA MIODRAG
+MORAČA NIKOLA
+MORAČA RADMILA
+MORAČA VASO
+MORAČA VASO
+MORAČANIN MILORAD
+MORAIĆ ĐORĐE
+MORAREVIĆ LJUBICA
+MORAREVIĆ VOJKAN
+MORAVAC VOJISLAV
+MORAVEK JANKO
+MORE MARIJA
+MORE SILVESTER
+MORGENTALER JOVAN
+MORIĆ HAMO
+MORIC DRAGUTIN
+MORIC GABOR
+MORIC JANOŠ
+MORIC JELENA
+MORIC JULIJA
+MORIC KARLO
+MORIC LAJOŠ
+MORIC LASLO
+MORIC LASLO
+MORIC LIDIJA
+MORIC MILANA
+MORIC PAULA
+MORIC SILARD
+MORIC SLAVICA
+MORIC ZOLTAN
+MOROŠEV RADOSLAV
+MOROKVAŠIĆ BOGDANKA
+MOROKVAŠIĆ MILISAV
+MOROKVAŠIĆ NENAD
+MOROKVAŠIĆ NIKOLA
+MOROMILOV LJUBINKA
+MOROTVANSKI VIDOSAVA
+MOROVIĆ MATILDA
+MOROVIĆ MILENA
+MOROVIĆ NESTOR
+MOROVIC LASLO
+MORVAI ŠANDOR
+MORVAI ĐERĐ
+MORVAI FERENC
+MORVAI JANOŠ
+MORVAI KARLO
+MORVAI LADISLAV
+MORVAI PETAR
+MOSIĆ MIODRAG
+MOSKALJ LJUBOMIR
+MOSKALJ NIKOLA
+MOSKALJ NIKOLA
+MOSKALJ RADMILA
+MOSKVALJ SAVKA
+MOSLOVAC KATARINA
+MOSNAK ANDRIJA
+MOSNAK PAVEL
+MOSTARAC JELENA
+MOSTARSKI SLAVICA
+MOSTIĆ RADMILA
+MOSUROVIĆ MILIJANA
+MOTOK ĐORĐE
+MOTOK BRANKO
+MOTOROŽESKU AURORA
+MOVRIN IVAN
+MOZETIĆ MLADEN
+MRČARICA ZORAN
+MRŠA MILENKA
+MRŠIĆ ĐORĐE
+MRŠIĆ BOGDAN
+MRŠIĆ DUŠAN
+MRŠIĆ MARKO
+MRŠIĆ MILE
+MRŠO ANTO
+MRŠULJA NIKOLA
+MRŠULJA RADOMIR
+MRĐA BOŠKO
+MRĐA BOGDAN
+MRĐA MANE
+MRĐA MILKAN
+MRĐA MIROSLAV
+MRĐA STEVAN
+MRĐA ZORAN
+MRĐAN DUŠAN
+MRĐAN MIHAJLO
+MRĐAN RUŽICA
+MRĐAN SAVA
+MRĐAN SAVA
+MRĐAN STEVAN
+MRĐAN STEVAN
+MRĐANIN VLADISLAV
+MRĐANOV ŽARKO
+MRĐANOV ANICA
+MRĐANOV KSENIJA
+MRĐANOV LAZA
+MRĐANOV MARINKO
+MRĐANOV MELANIJA
+MRĐANOV MIROSLAV
+MRĐANOV MOMČILO
+MRĐANOV NEMANJA
+MRĐANOV NOVICA
+MRĐANOV PROKA
+MRĐANOV SMILJA
+MRĐANOV VUKOSAVA
+MRĐANOV ZDRAVKO
+MRĐEN ILIJA
+MRĐEN JELENA
+MRĐEN LAZAR
+MRĐEN MIRKO
+MRĐEN VELJKO
+MRĐENOV KATICA
+MRĐENOVIĆ BRANISLAV
+MRĐENOVIĆ BRANKO
+MRĐENOVIĆ LJUBOMIR
+MRĐENOVIĆ NEBOJŠA
+MRĐENOVIĆ PETAR
+MRĐENOVIĆ VASO
+MRAČAJAC CVIJO
+MRAČAJAC DEJAN
+MRAĆEVIĆ RADIVOJ
+MRAKOVIĆ BOŽIDAR
+MRAKOVIĆ LJUBAN
+MRAKOVIĆ SLOBODANKA
+MRAOVIĆ-BAHUN MILIJANA
+MRAOVIĆ DRAGAN
+MRAOVIĆ DUŠAN
+MRAOVIĆ KATICA
+MRAOVIĆ MARKO
+MRAOVIĆ OLGA DR PRAVNIK
+MRAOVIĆ SLOBODAN
+MRAOVIĆ STOJAN
+MRATINKOVIĆ BORIS DR LEKAR
+MRATINKOVIĆ DUŠAN DR
+MRATINKOVIĆ LJUBICA
+MRAVIK ŽIVKA
+MRAVIK ĐURA
+MRAVIK PAVLE
+MRAZ ANDRIJA
+MRAZEK BERNARDO
+MRAZOVIĆ JOSIP
+MRAZOVIĆ MILANA
+MRAZOVIĆ MILAN
+MRAZOVIĆ NEVENKA
+MRDAK ĐORĐE
+MRDAK MIRAŠ
+MRDAKOVIĆ BORISAV
+MRDAKOVIĆ MILUTIN
+MRDAKOVIĆ VERICA
+MRDAKOVIĆ VUKOSAV
+MRDALJ PETAR
+MRDIĆ KAROLINA
+MRDIĆ MARKO
+MRDIĆ SANJA
+MRGANIĆ JOZO
+MRGANIĆ SREĆKO
+MRGIĆ MIRJANA
+MRKŠIĆ ĐORĐE
+MRKŠIĆ ALEKSANDAR
+MRKŠIĆ BOJANA
+MRKŠIĆ DRAGAN
+MRKŠIĆ DRAGAN
+MRKŠIĆ JELENA
+MRKŠIĆ JOCA
+MRKŠIĆ JOCA
+MRKŠIĆ KOSTA
+MRKŠIĆ MILOŠ
+MRKŠIĆ NENAD
+MRKŠIĆ SLAVICA
+MRKŠIĆ ZAGORKA
+MRKŠIĆ ZLATA
+MRKAIĆ GORAN
+MRKAIĆ SIMA
+MRKAIĆ TOMISLAV
+MRKALJ BOŽIDAR
+MRKELA MIRA
+MRKELA VOJIN
+MRKIĆ BRANISLAV
+MRKIĆ MILKA MR PH
+MRKIĆ NIKOLA
+MRKIĆ SMILJA
+MRKOJEVIĆ KOSTA
+MRKOJEVIĆ MARIJA
+MRKONJEV DRAGAN
+MRKONJIĆ ŽIVOJIN
+MRKOVAČKI JELENA
+MRKOVAČKI MILOŠ
+MRKOVAČKI MILOVAN
+MRKOVIĆ MLADEN
+MRKUŠIĆ MILICA
+MRKUŠIĆ MILICA
+MRKUŠIĆ RADIVOJ
+MRKUŠIĆ STEVAN
+MRMOŠ MILAN
+MRNUŠTIK STEVAN
+MRVIĆ NEDELJKO
+MRVIĆ SAVA
+MRVIĆ STEVAN
+MRVIĆ VUKOMIR
+MRVICA RUŽICA
+MRVOŠ JOVAN
+MRVOŠ MIHAILO
+MRVOŠ MILANKA
+MUČALICA DRAGOLJUB
+MUČALO SLAVICA
+MUČALOV SLOBODAN
+MUČALOVIĆ DUŠKO
+MUČENSKI LJUBOMIR
+MUČENSKI NIKOLA
+MUČENSKI VLADIMIR
+MUČI ĐERĐ DIPL ING
+MUČI ANDRAŠ
+MUČI FRANJA
+MUČI ILONA
+MUČI ILONKA
+MUČI JOŽEF
+MUČI JOŽEF
+MUČIBABIĆ MIRJANA
+MUČIBABIĆ NATALIJA
+MUČIBABIĆ RADOVAN
+MUČIBABIĆ RADOVAN
+MUČIBABIĆ SAVO
+MUČIBABIĆ VERA
+MUČU JOVAN
+MUČU NIKOLA
+MUŠAN MARIJA
+MUŠIĆ FRANJA
+MUŠICKI ĆIRA
+MUŠICKI ŽIVAN
+MUŠICKI ŽIVAN
+MUŠICKI ŽIVAN
+MUŠICKI ĐORĐE
+MUŠICKI ĐORĐE
+MUŠICKI BOGDAN
+MUŠICKI BOJANA
+MUŠICKI BRANISLAV
+MUŠICKI BRANKA
+MUŠICKI DOROTEJA
+MUŠICKI DRAGAN
+MUŠICKI DRAGOSLAV
+MUŠICKI DUŠAN
+MUŠICKI DUŠAN
+MUŠICKI DUŠAN
+MUŠICKI EVICA
+MUŠICKI JOVAN
+MUŠICKI LAZAR
+MUŠICKI MARIJA
+MUŠICKI MILANA
+MUŠICKI MILENKO
+MUŠICKI MILICA
+MUŠICKI MILICA
+MUŠICKI MILORAD
+MUŠICKI NATAŠA
+MUŠICKI NOVAK
+MUŠICKI PROKA
+MUŠICKI SLAVKO
+MUŠICKI SLAVKO
+MUŠICKI SOFIJA
+MUŠICKI STEVAN
+MUŠICKI VELJKO
+MUŠIKIĆ BOŽIDAR
+MUŠIKIĆ LJUBICA
+MUŠIKIĆ RADOMIR
+MUŠIKIĆ RATKO
+MUŠKINJA BARICA
+MUŠKINJA MIRKO
+MUŽEK VIDA
+MUŽIJEVIĆ RISTO
+MUŽIK BILJANA
+MUŽIK MATA
+MUŽIKA-TOT ZOLTAN
+MUŽLAI ŠANDOR
+MUC ZLATOMIR
+MUCI JANOŠ
+MUDRENIĆ MARIJA
+MUDRENIĆ RADISLAV
+MUDRI EUGEN
+MUDRI JOAKIM
+MUDRI LJUBICA
+MUDRI MIROSLAV
+MUDRI PETAR
+MUDRI PETAR
+MUDRI VERA DR VETERINE
+MUDRI VLADA
+MUDRI VLADIMIR
+MUDRI VLADIMIR
+MUDRIĆ ĐURA
+MUDRIĆ DRAGOLJUB
+MUDRIĆ LJUBOMIR DIPL ING
+MUDRIĆ PETAR
+MUDRIĆ SLAVKA
+MUDRINIĆ BOŠKO
+MUDRINIĆ BOŠKO
+MUDRINIĆ BRANKO
+MUDRINIĆ GOJKO
+MUDRINIĆ MAJA
+MUDRINIĆ MIHAJLO
+MUDRINIĆ MILAN
+MUDRINIĆ MILEVA
+MUDRINIĆ MLADEN
+MUDRINIĆ PETAR DR
+MUDRINIĆ SLAVKO
+MUDRINIĆ SPASENKA
+MUDRINIĆ STEVO
+MUDRINIĆ STOJAN
+MUDRINIĆ VLADIMIR
+MUDRINIĆ VOJIN
+MUDRINSKI ĐORĐE
+MUDRINSKI ALEKSANDAR
+MUDRINSKI ALEKSANDAR
+MUDRINSKI BORISLAV
+MUDRINSKI BOSILJKA
+MUDRINSKI IVANKA
+MUDRINSKI LAZAR
+MUDRINSKI MILAN
+MUDRINSKI MILETA
+MUDRINSKI MILOŠ
+MUDRINSKI MIROSLAV
+MUDRINSKI OLGA
+MUDRINSKI PETAR
+MUDRINSKI SAVA
+MUDRINSKI SOFIJA
+MUDRINSKI STEVAN
+MUDRINSKI VOJISLAV
+MUGOŠA MILO
+MUHA ZUZANA
+MUHAREMI FUAD
+MUHAREMSKI-BEĆIROVIĆ REMZIJA
+MUHARI LAJOŠ
+MUHI BELA
+MUJANOVIĆ SAFET
+MUJANOVIĆ SLOBODAN
+MUJANOVIĆ SVETLANA
+MUJEZINOVIĆ ALMAS
+MUJEZINOVIĆ IRENA
+MUJEZINOVIĆ ZLATAN
+MUJIĆ MILAN
+MUJKANOVIĆ SALIH
+MUJKIĆ ŠEFIK
+MUJKIĆ HAJRUDIN
+MUJKIĆ ILDUZA
+MUJKIĆ IZUDIN
+MUJKIĆ JAKUB
+MUJKIĆ MEHMED
+MUK-SAMARDŽIĆ EMA
+MULAI MATIJA
+MULAJ ESTIKA
+MULAJ KATICA
+MULIĆ KATARINA
+MULIĆ MIODRAG
+MULIĆ MIROSLAV
+MULIĆ PETAR
+MULIĆ RADMILO
+MULIĆ SVETISLAV
+MULIĆ VELJKO
+MULIĆ ZORAN
+MUMDŽIĆ HAZIR
+MUMIN ALEKSANDAR
+MUMIN NIKOLA
+MUMINAGIĆ ALIDA
+MUMINOVIĆ ALIM
+MUMINOVIĆ HAMED
+MUMOVIĆ ANDRIJA
+MUMOVIĆ JOVA
+MUMOVIĆ SAVA
+MUNĆAN ĐORĐE
+MUNĆAN ĐORĐE
+MUNĆAN ĐORĐE
+MUNĆAN ALEKSANDAR
+MUNĆAN ANGELINA
+MUNĆAN BOŠKO
+MUNĆAN BOŠKO
+MUNĆAN DRAGAN
+MUNĆAN DRAGOLJUB
+MUNĆAN DUŠAN
+MUNĆAN JOVAN DR
+MUNĆAN JOVAN
+MUNĆAN LAZAR
+MUNĆAN LAZA
+MUNĆAN MILENKO
+MUNĆAN RADOVAN
+MUNĆAN SLAVKO
+MUNĆAN SOFIJA
+MUNĆAN TODOR
+MUNĆAN VASA
+MUNĆAN VESELIN
+MUNĆAN VLADIMIR
+MUNĆAN ZORA
+MUNDŽIĆ ŽIVOJIN
+MUNDŽIĆ BOGDAN
+MUNDŽIĆ MIRJANA
+MUNDŽIĆ PETAR
+MUNDING ETELKA
+MUNIŠIĆ JOVAN
+MUNIŽABA ĐORĐE DIPL ING
+MUNIŽABA BRANISLAV
+MUNIŽABA JOVAN
+MUNIŽABA KATICA
+MUNIŽABA LAZAR
+MUNIŽABA MILENKO
+MUNIŽABA VEDRANA
+MUNITLAK DRAGAN
+MUNJAS BOŽIDAR
+MUNJAS DMITAR
+MUNJAS MILAN
+MUNJAS SIMKA
+MUNJAS STANA
+MUNJIN ŽIVKO
+MUNJIN ALEKSANDAR
+MUNJIN-BANIĆ OLGA DIPL PRAVNIK
+MUNJIN KAJICA
+MUNJIN LAZAR
+MUNJIN PETAR
+MUNJIN SMILJA
+MUNJIZA ŽELJKO
+MUNJIZA JOVANKA
+MUNK ĐORĐE
+MUNKA DUŠANKA
+MUNKAČI MIHAJLO
+MUNTEAN ILIJA
+MUNTEAN TODOR
+MUNZAR VERA
+MURATI MILJAZIM
+MURATI STANA
+MURATOVIĆ IBRAHIM
+MURATOVIĆ JOVO
+MURATOVIĆ MIKA
+MURATOVIĆ RADENKO
+MURATOVIĆ SABRIJA
+MURGAŠKI BRANKA
+MURGAŠKI DANICA
+MURGAŠKI DOBREN
+MURGAŠKI DUŠAN
+MURGAŠKI JOVAN
+MURGAŠKI LJUBINKA
+MURGAŠKI MATIJA
+MURGAŠKI MIHAJLO
+MURGAŠKI MILICA
+MURGAŠKI MILOŠ
+MURGAŠKI MILORAD
+MURGAŠKI MIROSLAV
+MURGAŠKI NENAD
+MURGAŠKI NOVAK
+MURGAŠKI PETAR
+MURGAŠKI SAVA
+MURGAŠKI SEVER
+MURGAŠKI SLOBODAN DR
+MURGAŠKI SVETOZAR
+MURGAŠKI VUKOSAVA
+MURGUL LJUBOMIR
+MURGULOVIĆ MOMIR
+MURIĆ SLAVKO
+MURIĆ STEVAN
+MURIĆ VELJKO
+MURINJI JOSIP
+MURINJI KATICA
+MURINJI MILEVA
+MURINJI STOJANKA
+MURPHU MIRJANA
+MURSELI MIRČE
+MURSELI NEZIR
+MURSELOVIĆ NAZIF
+MURSELOVIĆ RAIF
+MUSA IVANKA
+MUSA JELICA
+MUSAFIJA BLANKA
+MUSIĆ ŠABANIJA
+MUSIĆ ŠEMSA
+MUSIĆ KATICA
+MUSIĆ MIRKO
+MUSIĆ RADOJKA
+MUSIĆ ZORAN
+MUSIN KALMAN
+MUSOVSKI ISA
+MUSTAFIĆ BRANKA
+MUSTAFIĆ HARIZ
+MUSTAFIĆ MILICA
+MUSTAFIĆ SEDAT
+MUSTAFOSKI BEDRIJA
+MUSTEDANAGIĆ ESAD
+MUSULIN GORKI
+MUSULIN MILORAD
+MUSULIN SLAVKO
+MUTABDŽIJA MILOVAN
+MUTAVČIEV IVAN
+MUTAVDŽIĆ-GION MARIJA
+MUTAVDŽIĆ MILAN
+MUTAVDŽIĆ MILAN
+MUTAVDŽIĆ MILOŠ
+MUTAVDŽIĆ RATKO
+MUTAVDŽIĆ TOMISLAV
+MUTAVDŽIĆ VELJKO
+MUTAVDŽIĆ ZLATA
+MUTAVDŽIJA MIRJANA
+MUTIĆ ŽIVKO
+MUTIĆ BRANKO
+MUTIĆ DUŠAN
+MUTIĆ DUŠAN
+MUTIĆ DUŠAN
+MUTIĆ DUŠICA
+MUTIĆ KAMENKO
+MUTIĆ LJILJANA
+MUTIĆ RADOSLAV
+MUTIĆ SMILJA
+MUTIBARIĆ ALEKSANDAR DR
+MUTIBARIĆ ALEKSANDAR
+MUTIBARIĆ DRAGOLJUB
+MUTIBARIĆ IRENA
+MUTIBARIĆ LIBUŠA
+MUTIBARIĆ MILAN
+MUTIBARIĆ MILE
+MUTIBARIĆ NATAŠA
+MUTIBARIĆ STEVAN
+MUTIBARIĆ TODOR
+MUTIN ĐORĐE
+MUTIN EMIL
+MUTIN ZDRAVKO
+MUZALEVSKI ALEKSANDAR
+MUZEKA MARIJANA
+MUZER FRANJA
+MUZER MIROSLAV
+MUZER RADOSLAV
+MUZIKRAVIĆ BLAŽO
+MUZIKRAVIĆ LJUBOMIR DR
+NAČ ANDRIJA
+NAČA JANOŠ
+NAČA JOSIP
+NAČA OTILIJA
+NAŠIGAĆIN MILENKO
+NAĆUK ALEKSANDAR
+NAĆUK IRINA
+NAĐ ČONGOR
+NAĐ ČONGOR
+NAĐ ŠANDOR
+NAĐ ŠANDOR
+NAĐ ĐERĐ
+NAĐ-ABONJI GABOR
+NAĐ ALEKSANDAR
+NAĐ ANA
+NAĐ ANGELA
+NAĐ BARBARA
+NAĐ BELA
+NAĐ BRANKA
+NAĐ DEŽE
+NAĐ-DOROTIĆ MARIJA
+NAĐ DRAGISLAV
+NAĐ DUŠANKA
+NAĐ ERŽEBET
+NAĐ ETEL
+NAĐ EUFEMIJA
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ-FORKAŠ KATICA
+NAĐ FRANJA
+NAĐ FRANJA
+NAĐ FRANJA
+NAĐ GEORGINA
+NAĐ GIZELA
+NAĐ-HEVEŠI LASLO
+NAĐ IŠTVAN
+NAĐ IŠTVAN
+NAĐ ILONA
+NAĐ IMRE
+NAĐ IRINA
+NAĐ IVAN
+NAĐ JANOŠ
+NAĐ JANOŠ
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOVANKA
+NAĐ JOVAN
+NAĐ KARLO
+NAĐ KAROLJ
+NAĐ KAROLJ
+NAĐ KATARINA
+NAĐ LADISLAV
+NAĐ LAJOŠ
+NAĐ LAJOŠ
+NAĐ LASLO DIPL ING
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LEONA
+NAĐ LEONA
+NAĐ LJUBICA
+NAĐ MARGARETA
+NAĐ MARIJA
+NAĐ MARIJA
+NAĐ MARTON
+NAĐ-MELJKUTI EDIT
+NAĐ MIHAJLO
+NAĐ MIHALJ
+NAĐ MIRA
+NAĐ MIRA
+NAĐ MIRA
+NAĐ MIRJANA
+NAĐ NANDOR
+NAĐ NANDOR
+NAĐ NEVENKA
+NAĐ NIKOLA
+NAĐ NOVICA
+NAĐ OTO
+NAĐ OTO
+NAĐ PAVLE
+NAĐ PAVLE
+NAĐ PETAR
+NAĐ PETAR
+NAĐ PETAR
+NAĐ PETER
+NAĐ PIROŠKA
+NAĐ PIROŠKA
+NAĐ-POPOV CECILIJA
+NAĐ ROZA
+NAĐ SLAVKO
+NAĐ STEVAN
+NAĐ STEVAN
+NAĐ SVJATOSLAV
+NAĐ-TANASKOVIĆ JULIJA
+NAĐ TIBOR
+NAĐ VASILIJE
+NAĐ VERONA
+NAĐ VIKTORIJA
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ ZLATIMIR
+NAĐ ZOLTAN
+NAĐALIN BRANKO
+NAĐALIN ISA
+NAĐBABI FERENC
+NAĐBABI FERENC
+NAĐBABI IGOR
+NAĐBABI IVKA
+NAĐBABI JANIKA
+NAĐERĐ ILONKA
+NAĐGELERT JANOŠ
+NAĐHEĐEŠI FRANJA
+NAĐHEĐEŠI JOVAN
+NAĐHEĐEŠI LADISLAV
+NAĐIDAI KAROLJ
+NAĐMELJKUTI KLARA
+NAĐMIĆO VESELINA
+NAĐORĐ SAŠA
+NAĐPAL IRENKA
+NAĐVINSKI KSENIJA
+NAĐVINSKI PETAR
+NACEV GRUJO
+NADAŠKI LAZAR
+NADAŠKI MILIVOJ
+NADAŠKI MIROSLAV
+NADAŠKIĆ KATICA
+NADAŽDI RUŽICA
+NADAREVIĆ BORIS
+NADBANDIĆ SVETISLAV DIPL ING
+NADBANTIĆ NADA
+NADIH FRIDRIH
+NADIH MIRKO
+NADLAČKI ALEKSANDAR
+NADLAČKI MILOJE
+NADLAČKI RADIVOJ
+NADLAČKI RADOVAN
+NADLAČKI STEVKA
+NADLUKAČ MARIJA
+NADRLJANSKI ĐORĐE
+NADRLJANSKI DANILKA
+NADRLJANSKI LJILJANA
+NADRLJANSKI LJUBIŠA
+NADRLJANSKI MILIVOJ
+NADRLJANSKI SLOBODAN
+NADRLJANSKI STEVAN
+NAERAC SLOBODAN
+NAGLIĆ SLAVKO
+NAGRADIĆ JELENA
+NAGRADIĆ LJUBICA
+NAHLOVSKI JOŽEF
+NAJBAUER IVAN
+NAJDANOV GEORGI
+NAJDANOV IVAN
+NAJDEK VINKO
+NAJDOVSKI TOMISLAV
+NAJDOVSKI TOMISLAV
+NAJIĆ ANKICA
+NAJIĆ MILENKO
+NAJIĆ ZORICA
+NAJVIRT GOTFRID
+NAJVIRT JOVAN
+NAKARADA DARINKA
+NAKARADIĆ LJUBO
+NAKIĆ DRAGAN
+NAKIĆ IVAN
+NAKIĆ JANJA
+NAKIĆ LJUBINKA
+NAKIĆ RADOVAN
+NAKIĆ STEVAN
+NAKOMČIĆ ZORKA
+NAKOV JORDAN
+NALIĆ DRAGICA
+NALIĆ ENISA
+NAMESNIK OLGA
+NAMLIĐI FERIDA
+NANAŠI ŽOLT
+NANAŠI AGATA
+NANAŠI JULIJANA
+NANIĆ ĐOKA
+NANOVSKI VLADIMIR
+NANOVSKIJ ALEKSANDAR
+NAODOVIĆ PAVLE
+NARAI FERENC
+NARANČIĆ ILONKA
+NARANČIĆ MILE
+NARANČIĆ MILE
+NARANČIĆ MILORAD
+NARANČIĆ NADA
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ SAVA
+NARANČIĆ STEVAN
+NARANČIĆ STEVAN
+NARANČIĆ SUZANA
+NARANČIĆ VLADIMIR
+NARANDŽIĆ DARKO
+NARANDŽIĆ EVA
+NARANDŽIĆ MILAN
+NARANDŽIĆ MIRJANA
+NARANDŽIĆ VERA
+NARIĆ NEDELJKO
+NAS ĐERĐ
+NAS FERENC
+NAS FRANJA
+NAS KARLO
+NASKOVIĆ BLAŽA
+NASKOVIĆ ZORKA
+NASOV MILIVOJ
+NASTASIĆ DRAGAN
+NASTASIĆ IVAN
+NASTASIĆ JELENA
+NASTASIĆ LJILJANA
+NASTASIĆ PAVLE
+NASTASIĆ RADOSLAV
+NASTASIĆ STEVAN DR LEKAR
+NASTASIĆ TATJANA
+NASTASIĆ TEODOR
+NASTASIJEVIĆ MIROSLAV
+NASTASOVIĆ MLADEN
+NASTASOVIĆ TONČA
+NASTEVIĆ TODOR
+NASTIĆ IRENA
+NASTIĆ LEPOSAVA
+NASTIĆ MIHAILO
+NASTIĆ MILENA
+NASTIĆ MILICA
+NASTIĆ MIRJANA
+NASTIĆ NIKOLETA
+NASTIĆ OLGA
+NASTIĆ RADE
+NASTIĆ RADISAV
+NASTIĆ RADOMIR
+NASTIĆ RATOMIR
+NASTIĆ SVETOZAR
+NASTIĆ VLADA
+NASTIĆ ZORAN DR LEKAR
+NASTOV KIRO
+NASTOVSKI DRAGO
+NATOŠEVIĆ DEJAN
+NAUMOV ĐORĐE
+NAUMOV BRANKA
+NAUMOV DRAGOLJUB
+NAUMOV KATARINA
+NAUMOV KATARINA
+NAUMOV MILENA
+NAUMOV MILIVOJ
+NAUMOV STEVAN
+NAUMOVIĆ JELICA
+NAUMOVIĆ MILIVOJ DR
+NAUMOVIĆ NIKOLA
+NAUMOVIĆ SLOBODAN
+NAUMOVSKI MIRKO
+NAUMOVSKI NIKOLA
+NAUMOVSKI SONJA
+NAUMOVSKI STOJAN
+NAUMOVSKI TANAS
+NAUNKOVIĆ BOGDANKA
+NAUNKOVIĆ SINIŠA
+NAVALA NIKOLA
+NAVALUŠIĆ JULIJANA
+NAVALUŠIĆ VOJIN
+NAVRATIL ĐURA
+NAVRATIL JOSIP
+NAVRATIL JOSIP
+NAVRATIL SLOBODAN
+NAVRATIL ZDENKO
+NAVRATIL ZORAN
+NAZDRAVECKI ANDRAŠ
+NEČOVSKI DIMITRIJE
+NEŠEVIĆ ANĐELKA
+NEŠEVIĆ ANĐELKO
+NEŠIĆ ACA
+NEŠIĆ ALEKSANDAR
+NEŠIĆ ALEKSANDAR
+NEŠIĆ BOŽIDAR
+NEŠIĆ BRANISLAV DR
+NEŠIĆ BRANISLAV
+NEŠIĆ DIMITRIJE
+NEŠIĆ DUŠAN
+NEŠIĆ JEFTA
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ KOSANA
+NEŠIĆ LENKA
+NEŠIĆ LEONID
+NEŠIĆ LJILJANA
+NEŠIĆ MARJAN
+NEŠIĆ MILAN
+NEŠIĆ MILAN
+NEŠIĆ MILAN
+NEŠIĆ MILENKO
+NEŠIĆ MILICA
+NEŠIĆ MILIVOJ
+NEŠIĆ MILKA
+NEŠIĆ MILORAD
+NEŠIĆ MIRA
+NEŠIĆ MIRKO
+NEŠIĆ MIROSLAVA
+NEŠIĆ MLADEN
+NEŠIĆ MLADEN
+NEŠIĆ NEDELJKO
+NEŠIĆ PETAR
+NEŠIĆ RADISAV
+NEŠIĆ SAVETA
+NEŠIĆ SIMEON
+NEŠIĆ SLAVKO
+NEŠIĆ SLAVOJKA
+NEŠIĆ TODOR
+NEŠIĆ VLADIMIR
+NEŠIN ŽARKO
+NEŠIN JOVANA
+NEŠIN JOVAN
+NEŠIN MARKO
+NEŠIN STEVAN
+NEŠKOV DRAGOSLAV DR
+NEŠKOV STANISLAV
+NEŠKOV VOJISLAV
+NEŠKOVIĆ ĐURĐA
+NEŠKOVIĆ ALEKSANDAR
+NEŠKOVIĆ DRAGAN
+NEŠKOVIĆ IRENA
+NEŠKOVIĆ JELENA
+NEŠKOVIĆ LJUBIŠA
+NEŠKOVIĆ MIHAILO
+NEŠKOVIĆ MILAN
+NEŠKOVIĆ MILIJAN
+NEŠKOVIĆ MILISAV
+NEŠKOVIĆ MILIVOJE
+NEŠKOVIĆ MILKA
+NEŠKOVIĆ MILOVAN
+NEŠKOVIĆ MITA
+NEŠKOVIĆ NEŠKO
+NEŠKOVIĆ PERICA
+NEŠKOVIĆ PETAR
+NEŠKOVIĆ RADISAV
+NEŠKOVIĆ RADOMIR
+NEŠKOVIĆ RADONJA
+NEŠKOVIĆ REJMOND
+NEŠKOVIĆ RUŽICA
+NEŠKOVIĆ STEVAN
+NEŠKOVIĆ-ZDRAVIĆ VERICA
+NEŠOVIĆ DESANKA
+NEŠOVIĆ DRAGAN DIPL ING
+NEŠOVIĆ DRAGANA
+NEŠOVIĆ DRAGAN
+NEŠOVIĆ IVANKA
+NEŠOVIĆ MILOVAN
+NEŠOVIĆ PREDRAG
+NEŠOVIĆ RADOMIR
+NEŠOVIĆ RUŽICA
+NEŠOVIĆ TRIVKA
+NEŠTICKI JOSIP
+NEŠTICKI JOSIP
+NEŠTICKI MILICA
+NEŠTICKI STEVAN
+NEĆAK ĐORĐE
+NEĆAK ALEKSANDAR
+NEĆAK BRANKO
+NEĆAK-KORAĆ ANĐELKA
+NEĆAK STEVAN
+NEĆAK VERA
+NEĆAK ZDRAVKO
+NEĆAKOV MARIJA
+NEĆAKOV MILAN
+NEĆAKOV MILKA
+NEĆAKOV SIMA
+NEĆAKOV SLOBODAN
+NEŽIĆ DAMIR
+NEATNICA DUŠAN
+NEATNICA RADIVOJ DIPL ING
+NEBESNI BORIS
+NEBOJŠA SOFIJA
+NEBRIGIĆ JOVICA
+NEBRIGIĆ RATKO
+NECEV DRAGOLJUB
+NECIĆ DRAGOLJUB
+NECIĆ TOŠA
+NECIN ŽIVICA
+NECIN STEVA
+NECIN VOJA
+NECIN ZLATOMIR
+NECKOV DRAGINJA
+NECKOV GORAN
+NECKOV KATICA
+NECKOV LAZAR
+NECKOV LOZINKA
+NECKOV MARIJA
+NECKOV MIRJANA
+NECKOV MOMČILO
+NECKOV NIKOLA
+NEDELJKOV ŽIVKO
+NEDELJKOV ŽIVKO
+NEDELJKOV ĐORĐE
+NEDELJKOV ĐORĐE
+NEDELJKOV ĐORĐE
+NEDELJKOV ANĐELKA
+NEDELJKOV ANKA
+NEDELJKOV DESANKA
+NEDELJKOV DRAGAN
+NEDELJKOV DRAGINJA
+NEDELJKOV DUŠAN
+NEDELJKOV ILIJA
+NEDELJKOV IRENA
+NEDELJKOV IVAN
+NEDELJKOV JELENA
+NEDELJKOV JOVAN
+NEDELJKOV JOVAN
+NEDELJKOV JULIJANA
+NEDELJKOV KATICA
+NEDELJKOV KRSTA
+NEDELJKOV LAZAR DIPL ING
+NEDELJKOV LINA
+NEDELJKOV LJILJANA
+NEDELJKOV LJUBICA
+NEDELJKOV LJUBICA
+NEDELJKOV MARIJA
+NEDELJKOV MARIJA
+NEDELJKOV MARKO
+NEDELJKOV MILAN
+NEDELJKOV MILAN
+NEDELJKOV MILIVOJ
+NEDELJKOV MILOŠ
+NEDELJKOV MIRJANA
+NEDELJKOV MIRKO
+NEDELJKOV MIROSLAVA
+NEDELJKOV MITA
+NEDELJKOV OLGA
+NEDELJKOV OLGA
+NEDELJKOV RADE
+NEDELJKOV RADIVOJ
+NEDELJKOV RADOJKA
+NEDELJKOV RADOMIR
+NEDELJKOV SINIŠA
+NEDELJKOV STEVAN
+NEDELJKOV TEODORA
+NEDELJKOV TOMISLAV
+NEDELJKOV VINKA
+NEDELJKOV VOJISLAV
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVOJIN
+NEDELJKOVIĆ ĐORĐE
+NEDELJKOVIĆ ĐORĐE
+NEDELJKOVIĆ ALEKSANDAR
+NEDELJKOVIĆ ALEKSANDAR
+NEDELJKOVIĆ ANDRIJA
+NEDELJKOVIĆ BOGOMIR
+NEDELJKOVIĆ BORISLAV DIPL ING
+NEDELJKOVIĆ BORKA
+NEDELJKOVIĆ BOSILJKA
+NEDELJKOVIĆ DARINKA
+NEDELJKOVIĆ DOBRILA
+NEDELJKOVIĆ DOBRINKA
+NEDELJKOVIĆ DRAGAN
+NEDELJKOVIĆ JADRANKA
+NEDELJKOVIĆ JELENA
+NEDELJKOVIĆ JORDAN
+NEDELJKOVIĆ JOVAN
+NEDELJKOVIĆ JOVAN
+NEDELJKOVIĆ JUGOSLAV
+NEDELJKOVIĆ JULKICA
+NEDELJKOVIĆ JUSTA
+NEDELJKOVIĆ LEPOSAVA
+NEDELJKOVIĆ LJUBOMIR
+NEDELJKOVIĆ MARKO
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILENKO
+NEDELJKOVIĆ MILIJA
+NEDELJKOVIĆ MILISAV
+NEDELJKOVIĆ MILOJKA
+NEDELJKOVIĆ MILOJKA
+NEDELJKOVIĆ MILUTIN
+NEDELJKOVIĆ MIRJANA
+NEDELJKOVIĆ MIROSLAV
+NEDELJKOVIĆ MIROSLAV
+NEDELJKOVIĆ NEBOJŠA
+NEDELJKOVIĆ NIKOLA
+NEDELJKOVIĆ PAVA
+NEDELJKOVIĆ RADOJICA
+NEDELJKOVIĆ RADOMIR
+NEDELJKOVIĆ RADOVAN
+NEDELJKOVIĆ SIMA
+NEDELJKOVIĆ SIMA
+NEDELJKOVIĆ SLAVKO
+NEDELJKOVIĆ SLOBODANKA
+NEDELJKOVIĆ SLOBODANKA
+NEDELJKOVIĆ SLOBODAN
+NEDELJKOVIĆ SOFIJA
+NEDELJKOVIĆ SRETA
+NEDELJKOVIĆ STANIMIR
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ SVETISLAV
+NEDELJKOVIĆ SVETISLAV
+NEDELJKOVIĆ SVETOZAR
+NEDELJKOVIĆ VERA
+NEDELJKOVIĆ VERICA
+NEDELJKOVIĆ VLADISLAV DR
+NEDELJKOVIĆ VOJISLAV
+NEDELJKOVIĆ VUČKO
+NEDELJKOVIĆ ZAGORKA
+NEDELJKOVIĆ ZLATA
+NEDIĆ ŠPIRO
+NEDIĆ BILJANA
+NEDIĆ BORISLAV
+NEDIĆ BORJANKA
+NEDIĆ DARINKA
+NEDIĆ DESANKA PROFESOR
+NEDIĆ DRAGOSLAV
+NEDIĆ JELENA
+NEDIĆ JELISAVETA
+NEDIĆ JOVAN DIPL ING
+NEDIĆ JOVAN
+NEDIĆ KATICA
+NEDIĆ KATICA
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LJUBICA
+NEDIĆ MELANIJA
+NEDIĆ MILAN
+NEDIĆ MILAN
+NEDIĆ MILAN
+NEDIĆ MILENKO
+NEDIĆ MILOŠ
+NEDIĆ MILOJE
+NEDIĆ MILOVAN
+NEDIĆ MIROSLAV
+NEDIĆ MLADEN
+NEDIĆ NENAD
+NEDIĆ NIKOLA
+NEDIĆ PETAR
+NEDIĆ RADOŠ
+NEDIĆ RADOMIR
+NEDIĆ RADOSLAV
+NEDIĆ RADOSLAV
+NEDIĆ SAVA
+NEDIĆ SMILJA
+NEDIĆ SNEŽANA
+NEDIĆ-SREMAC NADA
+NEDIĆ STEVAN
+NEDIĆ VERA
+NEDIĆ VIDA
+NEDIĆ VLADIMIR
+NEDIĆ ZLATOJE
+NEDIĆ ZORAN
+NEDIMOVIĆ BOŽO
+NEDIMOVIĆ DRAGAN
+NEDIMOVIĆ GORDANA
+NEDINIĆ SRETEN
+NEDINIĆ ZORAN
+NEDOMAČKI MILAN
+NEDOMAČKI STEVAN
+NEDOVIĆ ANKICA
+NEDOVIĆ MIRO
+NEDOVIĆ MIRO
+NEDOVIĆ VLADO
+NEDUČIĆ SVETOZAR
+NEDUČIN ALEKSANDAR
+NEDUČIN DRAGICA
+NEDUČIN LAZAR DIPL ING
+NEDUČIN MILENA
+NEDVIDEK BORIS DR
+NEGLIĆ ĐORĐE
+NEGLIĆ KATICA
+NEGOVANOVIĆ ŽIVKO
+NEGOVANOVIĆ BRANKO
+NEGOVANOVIĆ LAZAR
+NEGRU BISERKA
+NEGUŠEVIĆ PAJA
+NEJGEBAUER ALEKSANDAR DR PROF
+NEMČANIN ĐURĐICA
+NEMČANIN MARIJA
+NEMČANIN MIRJANA
+NEMČEV BORIVOJ
+NEMČEV DUŠKO
+NEMČEV JELENA
+NEMČEV NIKOLA
+NEMČEV SRBINKO
+NEMČEVIĆ MARKO
+NEMČEVIĆ PETAR
+NEMA VALERIJA
+NEMEČEK ROŽA
+NEMEŠ JELA
+NEMEŠ SLOBODANKA
+NEMEC ANTUN
+NEMEC ANTUN
+NEMEC EMANUEL
+NEMEC LJUDMILA
+NEMET ŠANDOR
+NEMET ANDRIJA
+NEMET ANTAL
+NEMET ANTAL
+NEMET ANTAL
+NEMET ARPAD
+NEMET BORISLAVKA
+NEMET DEŽE
+NEMET DEJAN
+NEMET ERNEST
+NEMET GERGELJ
+NEMET GEZA DR
+NEMET GEZA
+NEMET IŠTVAN
+NEMET IŠTVAN
+NEMET IŠTVAN
+NEMET ILONA
+NEMET ILONA
+NEMET ILONKA
+NEMET JULIJANA
+NEMET KARLO
+NEMET KARLO
+NEMET KATICA
+NEMET LAJOŠ
+NEMET LASLO
+NEMET LASLO
+NEMET LJILJANA
+NEMET MARIJANA
+NEMET MARIJA
+NEMET MARIJA
+NEMET MIHALJ
+NEMET MILKA
+NEMET MIRJANA
+NEMET-MUČI MARIJA
+NEMET OLIVERA
+NEMET OTO
+NEMET PETAR
+NEMET ROZALIJA
+NEMET RUDOLF
+NEMET STEVAN
+NEMET STOJANKA
+NEMET TIBOR
+NEMET VIOLETA
+NEMET ZOLTAN
+NEMET ZOLTAN
+NEMETH IRENA
+NENAD SIMO
+NENADIĆ MILAN
+NENADIĆ MILENKO
+NENADIĆ MILORAD
+NENADIĆ RATKO
+NENADOV ŽIVKO
+NENADOV AMALIJA
+NENADOV ANKA
+NENADOV BRANISLAV
+NENADOV DRAGOMIR
+NENADOV JEVROSIMA
+NENADOV KAMENKO
+NENADOV KOSTA DIPL ING
+NENADOV MILENKO
+NENADOV MILENKO
+NENADOV OLGA
+NENADOV PETAR
+NENADOV RAJKO
+NENADOV STEVAN
+NENADOV VOJISLAV
+NENADOVIĆ BORISLAV
+NENADOVIĆ DANICA
+NENADOVIĆ DRAGICA
+NENADOVIĆ DUŠAN
+NENADOVIĆ JULKICA
+NENADOVIĆ MIHAJLO
+NENADOVIĆ MILENKO DR
+NENADOVIĆ MITAR
+NENADOVIĆ PANTA
+NENADOVIĆ PETAR
+NENADOVIĆ SLAVNA
+NENADOVIĆ SLOBODAN
+NENADOVIĆ VASILIJE
+NENEZIĆ ĐORĐE
+NENEZIĆ DARKO
+NENEZIĆ MIROSLAV
+NENEZIĆ RADENKO
+NENEZIĆ RADISAV
+NENIĆ ĐORĐE
+NENIĆ BRANIMIR
+NENIĆ SAVA
+NENIĆ VERA
+NENIĆ VERICA
+NENIN ŽIVKO
+NENIN DEJAN
+NENIN DRAGINJA
+NENIN DRAGOMIR
+NENIN JASENKA
+NENIN LENKA
+NENIN MARA
+NENIN MILAN
+NENIN MILICA
+NENIN MILICA
+NENIN MILORAD
+NENIN MIRKO
+NENIN RAJKO
+NENIN SAVA
+NENIN SLAVKO
+NENIN TOMISLAV
+NENIN VASA
+NEOFITOVIĆ DEJAN
+NEPIL ANTUN
+NEPOKOJČICKI ALEKSANDAR
+NERA ORLEANA
+NERAC MLADINKO
+NERAC PERO
+NERAC SLOBODAN
+NERANČIĆ NIKOLA
+NERANDŽIĆ BOŠKO
+NERANDŽIĆ BRANISLAV
+NERANDŽIĆ JASMINA
+NERANDŽIĆ MAKSIM
+NERANDŽIĆ NEVENKA
+NERANDŽIĆ STOJANKA
+NERER ĐURA
+NERER ALEKSANDAR
+NERTICA STEVAN
+NESKALIĆ EVGENIJE
+NESKALIĆ LEONARDO
+NESTOROV ŽELJKO
+NESTOROV ALEKSANDAR
+NESTOROV DRAGOLJUB
+NESTOROV LAZAR
+NESTOROV MILAN DIPL ING
+NESTOROV MIRKO
+NESTOROV SLOBODAN
+NESTOROVIĆ ŽIVOTA
+NESTOROVIĆ BILJANA
+NESTOROVIĆ BLAGOJE
+NESTOROVIĆ BOJANA
+NESTOROVIĆ BORIS
+NESTOROVIĆ DRAGAN
+NESTOROVIĆ DRAGOLJUB
+NESTOROVIĆ DRAGUTIN
+NESTOROVIĆ DUŠANKA
+NESTOROVIĆ GAVRA
+NESTOROVIĆ ISA
+NESTOROVIĆ LJILJANA
+NESTOROVIĆ MILE
+NESTOROVIĆ NADA
+NESTOROVIĆ NADEŽDA
+NESTOROVIĆ RADMILA
+NESTOROVIĆ RADOVAN
+NESTOROVIĆ SAVA
+NESTOROVIĆ SLAVICA
+NESTOROVIĆ SLOBODAN
+NESTOROVIĆ VLADIMIR
+NESTOROVIĆ VLADIMIR
+NEVAJDIĆ VELIMIR
+NEVIDOVČIĆ LJUBICA
+NEVIDOVČIĆ MILKA
+NEVIDOVČIĆ SAVA
+NEVOLIĆ ANICA
+NEZIRI ARIF
+NEZIROV ALJILJ
+NEZIROV VELIČKO
+NIČIĆ NADA
+NIČIĆ PREDRAG
+NIŠAVIĆ KRISTINA
+NIŠAVIĆ MILUTIN
+NIŠAVIĆ PAVLE
+NIŠAVIĆ RADOSLAV
+NIŠEVIĆ ĐORĐE
+NIŠEVIĆ ĐURA
+NIŠEVIĆ JOVICA
+NIŠEVIĆ KATICA
+NIŠEVIĆ OLGA
+NIŠEVIĆ SAVA
+NIŠIĆ DRAGAN
+NIŠIĆ MLAĐEN
+NIŠKANOVIĆ BOŠKO
+NIŠKANOVIĆ LJUPKO
+NIŠKANOVIĆ MIRKO
+NIĆETIĆ LJUBOMIR
+NIĆETIĆ MIRA
+NIĆIFOROVIĆ JOVAN
+NIĆIFOROVIĆ PERA
+NIĆIFOROVIĆ PETAR
+NIĆIFOROVIĆ TEODOR
+NIĆIN ĐORĐE
+NIĆIN ALEKSANDAR
+NIĆIN BRANISLAV
+NIĆIN DONKA
+NIĆIN DUŠKO
+NIĆIN MIROSLAV
+NIĆIN NEVENKA
+NIĆIN NIĆIFOR DIPL ING
+NIĆIN SNEŽANA
+NIĆIN SOFIJA
+NIĆIN SVETOZAR
+NIĆIN VASILIJE
+NIĆIN VERICA
+NIĆIN ZORA
+NICIĆ DARKO
+NIDERLENDER ĐORĐE
+NIDERLENIĆ ZORANA
+NIJEMČEVIĆ NIKOLA
+NIKČEVIĆ BOŠKO
+NIKČEVIĆ JOVAN
+NIKČEVIĆ LJUBOMIR
+NIKČEVIĆ MOMO
+NIKČEVIĆ RATKO
+NIKČEVIĆ STANA
+NIKŠIĆ ŽIVKO
+NIKŠIĆ ĐURA
+NIKŠIĆ CVETOZAR
+NIKŠIĆ DARKO
+NIKŠIĆ DRAGINJA
+NIKŠIĆ DRAGOLJUB
+NIKŠIĆ DUŠANKA
+NIKŠIĆ FRANJA
+NIKŠIĆ ISA
+NIKŠIĆ JULIJA
+NIKŠIĆ MILAN
+NIKŠIĆ MIRKO
+NIKŠIĆ MLADEN
+NIKŠIĆ STEVAN
+NIKŠIĆ VESNA
+NIKAČEV RADOVAN
+NIKAČEV RADOVAN
+NIKAČEVIĆ MIHOVIL
+NIKAČEVIĆ RADOMAN
+NIKAŠINOVIĆ LJILJANA
+NIKAŠINOVIĆ LJUBICA
+NIKETIĆ GORDANA
+NIKETIĆ GOSPAVA
+NIKETIĆ JEFTA
+NIKETIĆ KATICA
+NIKETIĆ NEBOJŠA DR
+NIKETIĆ PETAR
+NIKETIĆ SAŠA
+NIKETIĆ SIMA
+NIKETIĆ SLOBODAN
+NIKETIĆ VLADIMIR
+NIKEZIĆ MILA
+NIKEZIĆ PETAR
+NIKEZIĆ ROKSANDA
+NIKIĆ BRANISLAVA
+NIKIĆ BRANISLAV
+NIKIĆ BUDIMIR
+NIKIĆ DAJANA
+NIKIĆ DRAGAN
+NIKIĆ JOVANKA
+NIKIĆ JOVO
+NIKIĆ JOVO
+NIKIĆ KATICA
+NIKIĆ LAZAR
+NIKIĆ MARINKO
+NIKIĆ MILAN
+NIKIĆ MILE
+NIKIĆ MILUTIN
+NIKIĆ MIODRAG
+NIKIĆ MIRJANA
+NIKIĆ NADA
+NIKIĆ NATAŠA
+NIKIĆ NEVENKA
+NIKIĆ RADMILA
+NIKIĆ RADOMIR
+NIKIĆ RADOMIR
+NIKIĆ RADOMIR
+NIKIĆ SANJA
+NIKIĆ SAVA
+NIKIĆ VLADIMIR
+NIKIĆ ZDRAVKO
+NIKIĆ ZLATA
+NIKIĆ ZORA
+NIKIĆ ZORKA
+NIKIN BORISLAV
+NIKIN RADOMIR
+NIKIN VERA
+NIKITIŠIN NADA
+NIKITOVIĆ ČEDOMIR
+NIKITOVIĆ ALEKSANDAR
+NIKITOVIĆ ANGELINA
+NIKITOVIĆ BOŽO
+NIKITOVIĆ DUŠAN
+NIKITOVIĆ DUŠAN
+NIKITOVIĆ MIHAJLO
+NIKITOVIĆ MILIJANKA
+NIKITOVIĆ RADA
+NIKITOVIĆ RADOJICA
+NIKITOVIĆ SLOBODAN
+NIKOČEV ZORICA
+NIKODIJEVIĆ DUŠAN
+NIKODIJEVIĆ ENESA
+NIKODIJEVIĆ RADOJKO
+NIKODIJEVIĆ RATOMIR
+NIKODINOVSKI STOJAN DIPL ING
+NIKOLČIĆ BLAŽO
+NIKOLČIĆ DRAGAN
+NIKOLČIĆ SVETLANA
+NIKOLČIN MILOŠ
+NIKOLČIN MIRJANA
+NIKOLAŠEV BORIVOJ
+NIKOLAŠEV JOVA
+NIKOLAŠEV LJUBOMIR
+NIKOLAŠEV MATILDA
+NIKOLAŠEV NADA
+NIKOLAJEV JELENA
+NIKOLAJEV LAZAR
+NIKOLAJEV MILICA
+NIKOLAJEVIĆ DIMITRIJE
+NIKOLAJEVIĆ DUŠAN
+NIKOLAJEVIĆ IRENA
+NIKOLAJEVIĆ MILIVOJ AKADEMSKI SLIKAR
+NIKOLAJEVIĆ NIKOLA
+NIKOLAJEVIĆ RADIVOJ
+NIKOLAJEVIĆ VOJISLAV
+NIKOLAJEVSKI ALEKSANDAR
+NIKOLETIĆ BORA
+NIKOLETIĆ DRAGAN
+NIKOLETIĆ DUŠANKA
+NIKOLETIĆ DUŠAN
+NIKOLETIĆ DUŠAN
+NIKOLETIĆ JOVANKA
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ MILAN
+NIKOLETIĆ MILOŠ
+NIKOLETIĆ MILOVAN
+NIKOLETIĆ SIMO
+NIKOLETIĆ STEVAN
+NIKOLETIĆ SVETOZAR
+NIKOLETIĆ VID
+NIKOLETIĆ ZORAN
+NIKOLIČIN BRANKO
+NIKOLIČIN DANILO
+NIKOLIČIN ZORAN
+NIKOLIŠ DRAGUTIN
+NIKOLIŠ EVICA
+NIKOLIŠ MILAN
+NIKOLIĆ-ČANJI BARBARA
+NIKOLIĆ-ŠIKOPARIJA NEVENKA
+NIKOLIĆ ĆIRILO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVA
+NIKOLIĆ ŽIVKA
+NIKOLIĆ ŽIVKA
+NIKOLIĆ ŽIVKO
+NIKOLIĆ ŽIVKO
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVOTA
+NIKOLIĆ ŽIVOTA
+NIKOLIĆ ĐORĐE PROFESOR
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐURĐINKA
+NIKOLIĆ ĐURĐINKA
+NIKOLIĆ ĐURA
+NIKOLIĆ ĐURA
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ-ALEKSOVSKI SLAVICA
+NIKOLIĆ ANA
+NIKOLIĆ ANDRIJA
+NIKOLIĆ ANKA
+NIKOLIĆ ANKICA
+NIKOLIĆ-BAJŠEV STANKA
+NIKOLIĆ BILJANA
+NIKOLIĆ BISERKA
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽO
+NIKOLIĆ BOGDAN
+NIKOLIĆ BOJKA
+NIKOLIĆ BORA
+NIKOLIĆ BORA
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORIVOJE
+NIKOLIĆ BORIVOJ
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANKO
+NIKOLIĆ BRANKO
+NIKOLIĆ BRANKO
+NIKOLIĆ BUDIMIR
+NIKOLIĆ CVETANKA
+NIKOLIĆ CVIJETA
+NIKOLIĆ-DŽAVER IVAN DIPL ING
+NIKOLIĆ DAMJAN
+NIKOLIĆ DAMJAN
+NIKOLIĆ DANA
+NIKOLIĆ DANICA
+NIKOLIĆ DANICA
+NIKOLIĆ DANICA
+NIKOLIĆ DANIEL
+NIKOLIĆ DANIJEL
+NIKOLIĆ DANILO
+NIKOLIĆ DANILO
+NIKOLIĆ DANKO
+NIKOLIĆ DARINKA
+NIKOLIĆ DAVORIN
+NIKOLIĆ DEJAN
+NIKOLIĆ DESANKA
+NIKOLIĆ DIMITRIJE
+NIKOLIĆ DOBRIVOJE
+NIKOLIĆ DRAŠKO
+NIKOLIĆ DRAGANA
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOSLAV
+NIKOLIĆ DRAGO
+NIKOLIĆ DRAGUTIN
+NIKOLIĆ DUŠAN DIPL ING
+NIKOLIĆ DUŠANKA
+NIKOLIĆ DUŠANKA
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠKO
+NIKOLIĆ EMILIJA
+NIKOLIĆ EMIL
+NIKOLIĆ GORDANA
+NIKOLIĆ GORDANA
+NIKOLIĆ GORDANA
+NIKOLIĆ HILDA
+NIKOLIĆ HRISTINA
+NIKOLIĆ ILIJA
+NIKOLIĆ ISIDOR
+NIKOLIĆ IVANKA
+NIKOLIĆ IVAN
+NIKOLIĆ IVO
+NIKOLIĆ JAVORKA
+NIKOLIĆ JEFTA
+NIKOLIĆ JEFTIMIR
+NIKOLIĆ JEFTIMIR
+NIKOLIĆ JELENA
+NIKOLIĆ JELENA
+NIKOLIĆ JELKA
+NIKOLIĆ JELKA
+NIKOLIĆ JOCA
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVICA
+NIKOLIĆ JULIJANA
+NIKOLIĆ JULKA
+NIKOLIĆ KATARINA
+NIKOLIĆ KATICA
+NIKOLIĆ KATICA
+NIKOLIĆ KATICA
+NIKOLIĆ KOSTADIN
+NIKOLIĆ KOSTA
+NIKOLIĆ KRSTA DR
+NIKOLIĆ KRSTA
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LUJZA
+NIKOLIĆ LUKA
+NIKOLIĆ MANOJLO
+NIKOLIĆ MARA
+NIKOLIĆ MARA
+NIKOLIĆ MARA
+NIKOLIĆ MARGITA
+NIKOLIĆ MARGITA
+NIKOLIĆ MARICA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARKO
+NIKOLIĆ MARKO
+NIKOLIĆ MARKO
+NIKOLIĆ MELANIJA STOMATOLOG
+NIKOLIĆ MELANIJA
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MILAŠIN
+NIKOLIĆ MILANA
+NIKOLIĆ MILANA
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILENA
+NIKOLIĆ MILENKO
+NIKOLIĆ MILEVA
+NIKOLIĆ MILEVA
+NIKOLIĆ MILE
+NIKOLIĆ MILE
+NIKOLIĆ MILE
+NIKOLIĆ MILICA
+NIKOLIĆ MILICA
+NIKOLIĆ MILICA
+NIKOLIĆ MILIVOJE
+NIKOLIĆ MILKA
+NIKOLIĆ MILKA
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOJKO
+NIKOLIĆ MILOMIR
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILOSAVA
+NIKOLIĆ MILOSAVA
+NIKOLIĆ MILOVAN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MIODRAG DIPL ING
+NIKOLIĆ MIODRAG DR
+NIKOLIĆ MIODRAG DR
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRKO
+NIKOLIĆ MIRKO
+NIKOLIĆ MIROSLAV DIPL ING
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MITA
+NIKOLIĆ MITA
+NIKOLIĆ MITA
+NIKOLIĆ MLADENKA
+NIKOLIĆ MLADEN
+NIKOLIĆ MOMČILO
+NIKOLIĆ-MUŠICKI DARA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADEŽDA
+NIKOLIĆ NEBOJŠA
+NIKOLIĆ NEDELJKA
+NIKOLIĆ NEDELJKO
+NIKOLIĆ NEDELJKO
+NIKOLIĆ NENAD DR
+NIKOLIĆ NENAD
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NOVICA
+NIKOLIĆ NOVICA
+NIKOLIĆ NOVICA
+NIKOLIĆ OLGA
+NIKOLIĆ OSMAN
+NIKOLIĆ PAUN
+NIKOLIĆ PAVLE
+NIKOLIĆ PERA
+NIKOLIĆ PERO
+NIKOLIĆ PERSIDA
+NIKOLIĆ PETAR DIPL OEC
+NIKOLIĆ PETAR
+NIKOLIĆ PETAR
+NIKOLIĆ PETAR
+NIKOLIĆ PETRA
+NIKOLIĆ PETRA
+NIKOLIĆ PETRONIJE
+NIKOLIĆ PREDRAG
+NIKOLIĆ PRVOSLAV
+NIKOLIĆ RADENKO
+NIKOLIĆ RADISAV
+NIKOLIĆ RADIVOJE
+NIKOLIĆ RADOJICA
+NIKOLIĆ RADOJKA
+NIKOLIĆ RADOJKA
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOSLAVA
+NIKOLIĆ RADOSLAV
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RAJKO
+NIKOLIĆ RAJKO
+NIKOLIĆ RANKA
+NIKOLIĆ RATKO MR
+NIKOLIĆ RATOMIR
+NIKOLIĆ RATOMIR
+NIKOLIĆ RUŽA
+NIKOLIĆ RUŽICA
+NIKOLIĆ RUŽICA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVETA
+NIKOLIĆ SAVKA
+NIKOLIĆ SAVO
+NIKOLIĆ SEĆERKA
+NIKOLIĆ SIMA
+NIKOLIĆ SIMEON
+NIKOLIĆ SIMEUN
+NIKOLIĆ SINIŠA
+NIKOLIĆ SINIŠA
+NIKOLIĆ SINIŠA
+NIKOLIĆ SLAĐANA
+NIKOLIĆ SLAVIŠA
+NIKOLIĆ SLAVICA
+NIKOLIĆ SLAVKO
+NIKOLIĆ SLAVNA
+NIKOLIĆ SLOBODANKA
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SMILJANA
+NIKOLIĆ SNEŽANA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SPASENKA
+NIKOLIĆ SPASOJE
+NIKOLIĆ SPASOJE
+NIKOLIĆ SPASOJE
+NIKOLIĆ SRETA
+NIKOLIĆ SRETENKA
+NIKOLIĆ STANIMIR
+NIKOLIĆ STANIMIR
+NIKOLIĆ STANISLAV
+NIKOLIĆ STANKO
+NIKOLIĆ STEFANIJA
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVICA
+NIKOLIĆ STOJADIN
+NIKOLIĆ STOJAN
+NIKOLIĆ SUZANA
+NIKOLIĆ SVETISLAV
+NIKOLIĆ SVETISLAV
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ TAMARA
+NIKOLIĆ TATJANA
+NIKOLIĆ TEODOR
+NIKOLIĆ TEODOR
+NIKOLIĆ TIHOMIR
+NIKOLIĆ TIHOMIR
+NIKOLIĆ TODOR
+NIKOLIĆ TOMISLAV MR
+NIKOLIĆ TOMISLAV
+NIKOLIĆ TOMISLAV
+NIKOLIĆ TRENČA
+NIKOLIĆ VASILIJE
+NIKOLIĆ VEKOSLAV
+NIKOLIĆ VELIMIR
+NIKOLIĆ VELIMIR
+NIKOLIĆ VELJKO DR ING
+NIKOLIĆ VELJKO
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERICA
+NIKOLIĆ VESNA
+NIKOLIĆ VIDOSAVA
+NIKOLIĆ VITOMIR
+NIKOLIĆ VITOMIR
+NIKOLIĆ VITOMIR
+NIKOLIĆ VLADA
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADISLAV DR
+NIKOLIĆ VOJISLAV DR DOCENT
+NIKOLIĆ VOJISLAV DR LEKAR
+NIKOLIĆ VOJISLAV
+NIKOLIĆ VUKAŠIN
+NIKOLIĆ VUKAŠIN
+NIKOLIĆ ZAGORKA
+NIKOLIĆ ZDRAVKO
+NIKOLIĆ ZDRAVKO
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORA
+NIKOLIĆ ZORA
+NIKOLIĆ ZORA
+NIKOLIĆ ZORKA
+NIKOLIN ALEKSANDRA
+NIKOLIN ANA
+NIKOLIN BRANKO
+NIKOLIN DRAGOSLAVA DR
+NIKOLIN DUŠICA
+NIKOLIN ERŽEBET
+NIKOLIN IVICA
+NIKOLIN LAZAR DR LEKAR
+NIKOLIN LJUBIŠA
+NIKOLIN MARGITA
+NIKOLIN MILAN
+NIKOLIN MILICA
+NIKOLIN MILIVOJ
+NIKOLIN MILIVOJ
+NIKOLIN MIROSLAV
+NIKOLIN RADOVAN
+NIKOLIN RADOVAN
+NIKOLIN RUŽICA
+NIKOLIN SAVA
+NIKOLIN SINIŠA
+NIKOLIN SINIŠA
+NIKOLIN STIPAN
+NIKOLIN VESNA
+NIKOLIN VITOMIR
+NIKOLOSKI NIKOLA
+NIKOLOSKI SLAVICA
+NIKOLOV ĐORĐE
+NIKOLOV BOŠKO
+NIKOLOV JOCA
+NIKOLOV JOCA
+NIKOLOV LJUBICA
+NIKOLOV NINA
+NIKOLOV RAŠA
+NIKOLOV SINIŠA
+NIKOLOV STOJAN
+NIKOLOV TODOR
+NIKOLOVSKI ILIJA
+NIKOLOVSKI MILAN
+NIKOTIĆ VELIMIR
+NILIĆ NIKOLA
+NILOVIĆ MIROSLAV
+NIMRIHTER DRAGUTIN
+NIMRIHTER MILAN
+NIMRIHTER MIROSLAV
+NIMRIHTER VLADA
+NINČIĆ BISERKA
+NINČIĆ DAMJAN
+NINČIĆ MILENKO
+NINČIĆ PERO
+NINIĆ ALEKSA
+NINIĆ BRANISLAV
+NINIĆ MARKO
+NINIĆ MIRKO
+NINIĆ RADOJE
+NINIĆ RADOMIR
+NINKOV ŽIVKO
+NINKOV ĐORĐE
+NINKOV ĐORĐE
+NINKOV ĐORĐE
+NINKOV BOŽICA
+NINKOV BORISLAV
+NINKOV BORISLAV
+NINKOV BRANISLAV
+NINKOV DOBRIVOJ
+NINKOV DRAGOMIR
+NINKOV DUŠAN
+NINKOV DUŠAN
+NINKOV DUŠAN
+NINKOV EMILIJA
+NINKOV ERŽEBET
+NINKOV JELICA
+NINKOV JOVAN
+NINKOV JULIJAN MR
+NINKOV-KOMLENOV DANICA DR
+NINKOV LAZAR
+NINKOV LAZAR
+NINKOV-LEĐENAC JOVANKA DR
+NINKOV LJUBOMIR
+NINKOV LJUBOMIR
+NINKOV MARIJA
+NINKOV MARIJA
+NINKOV MILANA
+NINKOV MILAN
+NINKOV MILICA
+NINKOV MILOŠ
+NINKOV MILOŠ
+NINKOV MILOŠ
+NINKOV MILOVAN
+NINKOV MILOVAN
+NINKOV MILUTIN
+NINKOV MIRJANA
+NINKOV MIRKO
+NINKOV MIROSLAV
+NINKOV MIROSLAV
+NINKOV NADA
+NINKOV NEBOJŠA
+NINKOV NEBOJŠA
+NINKOV NIKOLA
+NINKOV OLGICA
+NINKOV RADICA
+NINKOV SAVETA DIPL ING
+NINKOV SAVETA
+NINKOV SLAVKO
+NINKOV SMILJA
+NINKOV SOFIJA
+NINKOV SPOMENKA
+NINKOV STEVAN
+NINKOV STEVAN
+NINKOV STEVAN
+NINKOV VELIMIR
+NINKOV VELJKO
+NINKOV VERICA
+NINKOV VLADIMIR
+NINKOV VOJISLAV
+NINKOVIĆ ŠPIRO
+NINKOVIĆ ŠPIRO
+NINKOVIĆ ĐURAĐ
+NINKOVIĆ ĐURA
+NINKOVIĆ ANKICA
+NINKOVIĆ BRANKO
+NINKOVIĆ DANICA
+NINKOVIĆ DRAGA
+NINKOVIĆ DUŠAN
+NINKOVIĆ ERIKA
+NINKOVIĆ GAVRA
+NINKOVIĆ JANKO
+NINKOVIĆ JOJA
+NINKOVIĆ JOVANKA
+NINKOVIĆ MARICA
+NINKOVIĆ MARKO
+NINKOVIĆ MIĆO
+NINKOVIĆ MIHAILO
+NINKOVIĆ MILAN
+NINKOVIĆ MILOŠ
+NINKOVIĆ MIRJANA
+NINKOVIĆ MIRJANA
+NINKOVIĆ NIKOLA
+NINKOVIĆ NIKOLA
+NINKOVIĆ PERA
+NINKOVIĆ PERO
+NINKOVIĆ PETAR
+NINKOVIĆ RADOMIR
+NINKOVIĆ RADOVAN
+NINKOVIĆ RAJKO
+NINKOVIĆ SRĐAN
+NINKOVIĆ STOJAN
+NINKOVIĆ SVETISLAV
+NINKOVIĆ VERA
+NISIM DESA
+NISTER EVA
+NISTOR DRAGAN
+NISTORAN ĐORĐE
+NISTORAN MILAN
+NJAGOJEV MILADIN
+NJAGRIN SLAVICA
+NJAGUL-DOKIĆ SRBISLAVA
+NJAGUL DUŠAN
+NJARADI EVGENIJE
+NJARADI JANKO
+NJARADI JOVGEN
+NJARADI MARIJA
+NJARADI SOFIJA
+NJARI ŠANDOR
+NJARI DEŽE
+NJEŽIĆ OBRAD
+NJEŽIĆ ZVONKO
+NJEGOMIR ĐURO
+NJEGOMIR LJUBINKA DR LEKAR
+NJEGOMIR MILAN
+NJEGOMIR NIKOLA
+NJEGOMIR NOVAK
+NJEGOVAN ŽARKO
+NJEGOVAN JOVANKA
+NJEGOVAN MARA
+NJEGOVAN MARIJA
+NJEGOVAN MIRKO
+NJEGOVAN MIRKO
+NJEGOVAN STOJANKA
+NJEGOVANOVIĆ ELENA
+NJEGRIĆ MARIJA
+NJEGRIĆ RADMILA
+NJEMČOK JOŽEF
+NJEMOGA JURAJ
+NJENJIĆ VLADO
+NJERGEŠ JANOŠ
+NJERGEŠ MARIJA
+NJIRE STEVAN
+NJIRJAK ĐORĐE
+NJIRJAK LEONA
+NJITRI KAROLJ
+NJUNJIĆ MILEVA
+NOČEVSKA VELIKA
+NOČEVSKI BILJANA
+NOČEVSKI RADE
+NOŽICA CVIJETA
+NOŽICA MILIVOJE
+NOŽINIĆ DARA
+NOŽINIĆ LJUBICA
+NOŽINIĆ MILAN
+NOŽINIĆ NIKOLA
+NOLA TIMNJA
+NOLIN ĐURĐINKA
+NONIN ANĐELKA
+NONIN DUŠAN
+NONIN MILORAD
+NONIN NIKOLA
+NONIN SONJA
+NONIN VITOMIR
+NONKOVIĆ MILAN
+NONKOVIĆ MILORAD
+NOSAK ĐORĐE
+NOSAK MIKLOŠ
+NOSALJ MIŠA
+NOSEK EVICA
+NOSEK FRANJA
+NOSEK KARLO
+NOSEK KSENIJA
+NOSEK ZORAN
+NOSONJIN LENKA
+NOSONJIN MILAN
+NOSONJIN SAVA
+NOSOVIĆ ĐORĐE
+NOSOVIĆ DANICA
+NOSOVIĆ JANKO
+NOSOVIĆ JOVAN
+NOSOVIĆ JOVAN
+NOSOVIĆ ZORAN
+NOTA JANKO
+NOTAROŠ DARINKA
+NOTAROŠ DEJAN
+NOTAROŠ MILAN
+NOTHOF EVA
+NOTHOF ZOLTAN
+NOVČIĆ BUDIMIR
+NOVČIĆ DAMNJAN
+NOVČIĆ DUŠAN
+NOVČIĆ STANA
+NOVČIĆ STANA
+NOVČIĆ TATJANA
+NOVČIĆ VLADIMIR
+NOVAČIĆ ĐURA
+NOVAČIĆ ĐURO
+NOVAČIĆ PERSIDA
+NOVAK ĐORĐE
+NOVAK ANDRIJA
+NOVAK ANTAL
+NOVAK BOŠKO
+NOVAK DRAGICA
+NOVAK DUŠANKA
+NOVAK FRANJA
+NOVAK IŠTVAN
+NOVAK IRENA
+NOVAK IVAN
+NOVAK JANA
+NOVAK JANOŠ
+NOVAK JOSIP
+NOVAK JOSIP
+NOVAK JOVAN
+NOVAK LADISLAV MR
+NOVAK LASLO
+NOVAK LAZAR
+NOVAK LJUBOMIR
+NOVAK MARGITA
+NOVAK MARIJA
+NOVAK MATILDA
+NOVAK MIHALJ
+NOVAK NANDOR
+NOVAK NIKOLA
+NOVAK SLAVKA
+NOVAK STEVAN
+NOVAK STEVAN
+NOVAK STJEPAN
+NOVAK TIBOR
+NOVAK-VAJDA LJILJANA
+NOVAK VASILIJA
+NOVAK VERA
+NOVAK VERONA
+NOVAK VIKTOR
+NOVAKOV ČEDOMIR
+NOVAKOV ANĐELKO
+NOVAKOV BORISLAV
+NOVAKOV DRAGOLJUB MR
+NOVAKOV DUŠAN
+NOVAKOV GORDANA
+NOVAKOV GOSPAVA DR
+NOVAKOV JELICA
+NOVAKOV LAZAR
+NOVAKOV LJUBINKA
+NOVAKOV LJUBOMIR
+NOVAKOV MARINA
+NOVAKOV MILAN
+NOVAKOV MILICA
+NOVAKOV MILIVOJ
+NOVAKOV MILORAD
+NOVAKOV MIROSLAV
+NOVAKOV NADA
+NOVAKOV PREDRAG
+NOVAKOV PREDRAG
+NOVAKOV RADOVAN DIPL ING
+NOVAKOV SAVA
+NOVAKOV SAVA
+NOVAKOV SRBISLAV
+NOVAKOV SRETEN
+NOVAKOV SRETEN
+NOVAKOV STEVAN DR
+NOVAKOV STEVAN
+NOVAKOV VALERIJA
+NOVAKOV VESELIN
+NOVAKOV ZDRAVKO
+NOVAKOVIĆ ŽIVAN
+NOVAKOVIĆ ŽIVAN
+NOVAKOVIĆ ŽIVKO
+NOVAKOVIĆ ŽIVOJIN
+NOVAKOVIĆ ĐORĐE
+NOVAKOVIĆ ĐUJA
+NOVAKOVIĆ ĐURO
+NOVAKOVIĆ ALEKSANDAR
+NOVAKOVIĆ ANĐELKA
+NOVAKOVIĆ ANA
+NOVAKOVIĆ ANKA
+NOVAKOVIĆ BOŠKO DR PROF
+NOVAKOVIĆ BOGDAN
+NOVAKOVIĆ BRANISLAVA
+NOVAKOVIĆ BRANISLAV
+NOVAKOVIĆ BRANKO
+NOVAKOVIĆ BRANKO
+NOVAKOVIĆ CVETKO DR
+NOVAKOVIĆ CVIJETA
+NOVAKOVIĆ DANA
+NOVAKOVIĆ DANICA
+NOVAKOVIĆ DIMITRIJE
+NOVAKOVIĆ DRAGAN
+NOVAKOVIĆ DRAGAN
+NOVAKOVIĆ DRAGA
+NOVAKOVIĆ DRAGOLJUB
+NOVAKOVIĆ DRAGOLJUB
+NOVAKOVIĆ DRAGOSLAV
+NOVAKOVIĆ DUŠANKA
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ FRANJO
+NOVAKOVIĆ GORDANA
+NOVAKOVIĆ GORICA
+NOVAKOVIĆ GROZDA
+NOVAKOVIĆ INĐIJA
+NOVAKOVIĆ JELENA
+NOVAKOVIĆ JELENA
+NOVAKOVIĆ JOVANKA
+NOVAKOVIĆ JOVAN
+NOVAKOVIĆ JOVAN
+NOVAKOVIĆ KOSA
+NOVAKOVIĆ LAZAR
+NOVAKOVIĆ LEPOSAVA
+NOVAKOVIĆ LJILJANA
+NOVAKOVIĆ LJUBOMIR
+NOVAKOVIĆ LJUBOMIR
+NOVAKOVIĆ MARICA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MELANIJA
+NOVAKOVIĆ MIŠO
+NOVAKOVIĆ-MIDI DIVNA DIPL TURIZM
+NOVAKOVIĆ MIJODRAG
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILOŠ
+NOVAKOVIĆ MILOŠ
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILOVAN
+NOVAKOVIĆ MILOVAN
+NOVAKOVIĆ MIODRAG DR
+NOVAKOVIĆ MIODRAG
+NOVAKOVIĆ MLADEN
+NOVAKOVIĆ MOMČILO
+NOVAKOVIĆ NADA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ OLIVER
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ-PLAVŠIĆ JELENA
+NOVAKOVIĆ RADMILO
+NOVAKOVIĆ RADOJKA
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOVAN
+NOVAKOVIĆ RAJKO
+NOVAKOVIĆ RANKO
+NOVAKOVIĆ ROSANKA
+NOVAKOVIĆ RUŽICA
+NOVAKOVIĆ SAVA
+NOVAKOVIĆ SAVA
+NOVAKOVIĆ SLAVKO
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SOFIJA
+NOVAKOVIĆ SPASOJA
+NOVAKOVIĆ SPOMENKA
+NOVAKOVIĆ STANISLAV
+NOVAKOVIĆ STEVAN DIPL ING
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVO
+NOVAKOVIĆ STOJAN
+NOVAKOVIĆ SVETOMIR
+NOVAKOVIĆ VELIMIR
+NOVAKOVIĆ VELINKA
+NOVAKOVIĆ VERICA
+NOVAKOVIĆ VESNA
+NOVAKOVIĆ VIDOJE
+NOVAKOVIĆ VITKO
+NOVAKOVIĆ VLADIMIR DIPL ING
+NOVAKOVIĆ VLADIMIR
+NOVAKOVIĆ VLADIMIR
+NOVAKOVIĆ VLADISLAV
+NOVAKOVIĆ ZLATOMIR
+NOVAKOVIĆ ZORA
+NOVAKOVIĆ ZORICA
+NOVAKOVIĆ ZORICA
+NOVIČIĆ MILOŠ
+NOVIĆ ČEDO
+NOVIĆ-ČULJAK LJUBICA
+NOVIĆ DANICA
+NOVIĆ DUŠAN
+NOVIĆ JOVAN
+NOVIĆ MILAN
+NOVIĆ MILAN
+NOVIĆ MIROSLAV
+NOVIĆ MIROSLAV
+NOVIĆ MITAR
+NOVIĆ NIKOLA
+NOVIĆ PANTELIJA
+NOVIĆ PERSIDA
+NOVIĆ TATJANA
+NOVIĆ TOMA
+NOVIĆ VLAJKO
+NOVICKI ALEKSA
+NOVIKOV VERA
+NOVINC IVAN
+NOVITOVIĆ MARKO
+NOVKOV ŽIVOJIN
+NOVKOV DOBRILA
+NOVKOV GAVRA
+NOVKOV JOVAN
+NOVKOV MILAN
+NOVKOV NADA
+NOVKOV STEVAN
+NOVKOV STEVAN
+NOVKOV ZAGORKA
+NOVKOVIĆ ĐORĐE
+NOVKOVIĆ ANKA
+NOVKOVIĆ BILJANA
+NOVKOVIĆ DRAGICA
+NOVKOVIĆ DRAGINJA
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ ELFRIDA
+NOVKOVIĆ ELIZABETA
+NOVKOVIĆ JOVAN
+NOVKOVIĆ MIHAJLO
+NOVKOVIĆ MILAN
+NOVKOVIĆ MILINKO
+NOVKOVIĆ MILOŠ
+NOVKOVIĆ MIRJANA
+NOVKOVIĆ MOMČILO
+NOVKOVIĆ MOMČILO
+NOVKOVIĆ NADA
+NOVKOVIĆ NEBOJŠA DR
+NOVKOVIĆ NIKOLA
+NOVKOVIĆ ROSA
+NOVKOVIĆ SMILJKA
+NOVKOVIĆ STANKO
+NOVKOVIĆ VLADA
+NOVKOVIĆ VUKAŠIN
+NOVOSEL GORDANA
+NOVOSEL MARIJA
+NOVOSEL NADA
+NOVOSEL RAJKO
+NOVOSELAC KATICA
+NOVOSELAC STEVAN
+NOVOSELAC ZVONIMIR
+NOVOSELJAČKI MILIVOJ
+NOVOSELOVSKI ANGEL
+NOVOT LADISLAV
+NOVOT PAVLE
+NOVOVIĆ ŽIVOJIN
+NOVOVIĆ BATRIĆ
+NOVOVIĆ BILJANA
+NOVOVIĆ DRAGAN
+NOVOVIĆ GORDANA
+NOVOVIĆ MINA
+NOVOVIĆ NADA
+NOVOVIĆ VLADO
+NOVOVIĆ ZDENKA
+NOVTA NIKOLA DR
+NOVTA VLADIMIR
+NOVTA VLADIMIR
+NUŽDIĆ MILAN
+NUŽDIĆ OBRAD
+NUBER ANA
+NUDIĆ ĐORĐE
+NUDIĆ SVETOZAR
+NUHI FEVZI
+NUHI HAJDAN
+NUHI ZEKIJA
+NUKA HASAN
+NUKIĆ ALJO
+NUKIĆ DŽEVAD
+NUKIĆ KANITA
+NUKIĆ OMER
+OČENAŠ LJUDMILA
+OČKAJI IŠTVAN
+OČKO VILHELM
+OČOVAJ BOŽENKA
+OČOVAJ ZUZANA
+OŠAP JELENA
+OŠAP JOVAN
+OŠKERT ANKA
+OŠTRIĆ MILE DIPL ING
+OŠTRIKA ŽARKO
+OŠTRIKA ŽARKO
+OŠTRIKA DARINKA
+OŽEGOVIĆ ŽARKO DIPL ING
+OŽEGOVIĆ BOŠKO
+OŽEGOVIĆ BRANKO DIPL ING
+OŽEGOVIĆ DANE
+OŽEGOVIĆ DRAGA
+OŽEGOVIĆ LAZAR
+OŽEGOVIĆ MIRKO
+OŽEGOVIĆ MOMČILO
+OŽEGOVIĆ NEVENKA
+OŽEGOVIĆ SLAVKO
+OŽEGOVIĆ SLOBODAN
+OŽEKOVIĆ GOJKO
+OŽVAT JASMINA
+OŽVAT JASMINA
+OŽVAT JULIJANA
+OŽVAT ONDREJ
+OĐIĆ ALEKSANDAR
+OBŠUST JANKO
+OBADOV ALEKSANDRA
+OBADOV MILE
+OBADOV NATALIJA
+OBADOV SLAVKO
+OBADOVIĆ DUŠANKA
+OBADOVIĆ MILOJE
+OBADOVIĆ MILOJE
+OBADOVIĆ MILOJE
+OBADOVIĆ MILORAD
+OBADOVIĆ SLOBODANKA
+OBERMAJER FRANJA
+OBERMAN BRANISLAV
+OBERT FRANC
+OBJEDOVIĆ STOJAN
+OBLEŠČUK ANKA
+OBLEŠČUK ANKA
+OBLEŠČUK DRAGIŠA
+OBLEŠČUK GREGOR
+OBLEŠČUK MARIJA
+OBOČKI VLADIMIR
+OBRADOV GORDANA
+OBRADOV GORDANA
+OBRADOV LJUBIŠA
+OBRADOV LJUBIŠA
+OBRADOV MILAN
+OBRADOV MILORAD
+OBRADOV NADA
+OBRADOV NOVAK
+OBRADOV RADIVOJ
+OBRADOV RADMILA
+OBRADOV STOJANKA
+OBRADOVIĆ ČEDOMIR
+OBRADOVIĆ ŽIVKO
+OBRADOVIĆ ŽIVKO
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐURĐINA
+OBRADOVIĆ ĐURO
+OBRADOVIĆ ĐURO
+OBRADOVIĆ ALEKSANDAR
+OBRADOVIĆ ANKA
+OBRADOVIĆ BOGDANKA
+OBRADOVIĆ BOGDAN
+OBRADOVIĆ BOGDAN
+OBRADOVIĆ BORISLAV
+OBRADOVIĆ BORKA
+OBRADOVIĆ BRANISLAV
+OBRADOVIĆ BRANISLAV
+OBRADOVIĆ BRANKO
+OBRADOVIĆ BUDIMIR
+OBRADOVIĆ BUDO
+OBRADOVIĆ DANE
+OBRADOVIĆ DANIJELA
+OBRADOVIĆ DANILO DR
+OBRADOVIĆ DMITAR
+OBRADOVIĆ DOBRILA
+OBRADOVIĆ DRAGAN
+OBRADOVIĆ DRAGICA
+OBRADOVIĆ DRAGOLJUB
+OBRADOVIĆ DUŠANKA
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ EMILIJA
+OBRADOVIĆ GLIŠA
+OBRADOVIĆ GORDANA
+OBRADOVIĆ GVOZDEN
+OBRADOVIĆ ILIJA
+OBRADOVIĆ JASMINA
+OBRADOVIĆ JOVAN
+OBRADOVIĆ JOVAN
+OBRADOVIĆ JOVO
+OBRADOVIĆ KONSTANTIN
+OBRADOVIĆ LAZAR
+OBRADOVIĆ LAZAR
+OBRADOVIĆ LIDIJA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJUBIŠA
+OBRADOVIĆ LJUBODRAG
+OBRADOVIĆ LUKA
+OBRADOVIĆ MARKO
+OBRADOVIĆ MILADIN
+OBRADOVIĆ MILAN
+OBRADOVIĆ MILA
+OBRADOVIĆ MILENA
+OBRADOVIĆ MILENKO
+OBRADOVIĆ MILE
+OBRADOVIĆ MILE
+OBRADOVIĆ MILICA
+OBRADOVIĆ MILIJANA
+OBRADOVIĆ MILKA
+OBRADOVIĆ MILOŠ
+OBRADOVIĆ MILOJKO
+OBRADOVIĆ MILORAD
+OBRADOVIĆ MILORAD
+OBRADOVIĆ MILOVAN DIPL ING
+OBRADOVIĆ MILUN
+OBRADOVIĆ MILUTIN
+OBRADOVIĆ MIODRAG
+OBRADOVIĆ MIRAŠ
+OBRADOVIĆ MIRJANA DIPL ING
+OBRADOVIĆ MIRKO
+OBRADOVIĆ MIROSLAV
+OBRADOVIĆ MLADEN
+OBRADOVIĆ NADA
+OBRADOVIĆ NEBOJŠA
+OBRADOVIĆ NEDELJKA
+OBRADOVIĆ NEDELJKO
+OBRADOVIĆ NEMANJA
+OBRADOVIĆ NENAD DR LEKAR
+OBRADOVIĆ NIKOLA
+OBRADOVIĆ PETAR
+OBRADOVIĆ PETAR
+OBRADOVIĆ RADE
+OBRADOVIĆ RADIVOJE
+OBRADOVIĆ RADIVOJ
+OBRADOVIĆ RADMILA
+OBRADOVIĆ RATKO
+OBRADOVIĆ ROSA
+OBRADOVIĆ SAVA
+OBRADOVIĆ-SIKIMIĆ MIRJANA
+OBRADOVIĆ SLAVICA
+OBRADOVIĆ SLAVKO
+OBRADOVIĆ SLAVKO
+OBRADOVIĆ SLOBODAN
+OBRADOVIĆ SMILJKA
+OBRADOVIĆ SMILJKA
+OBRADOVIĆ STANIMIR
+OBRADOVIĆ STANKO
+OBRADOVIĆ STEVAN DR
+OBRADOVIĆ STEVAN
+OBRADOVIĆ STEVAN
+OBRADOVIĆ STEVO
+OBRADOVIĆ STEVO
+OBRADOVIĆ STJEPAN
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ TODOR
+OBRADOVIĆ VERA
+OBRADOVIĆ VERA
+OBRADOVIĆ VOJISLAV
+OBRADOVIĆ ZLATICA
+OBREHT PETAR
+OBRENIĆ BORIVOJE
+OBRENIĆ DRAGO
+OBRENIĆ JELISAVETA
+OBRENIĆ MANOJLE
+OBRENIĆ MILADIN
+OBRENIĆ MILEVA
+OBRENIĆ MILOMIR
+OBRENIĆ PREDRAG
+OBRENIĆ RADOMAN
+OBRENIĆ SNEŽANA
+OBRENOV ŽIVAN
+OBRENOV ŽIVAN
+OBRENOV JELENA
+OBRENOV JEVREM
+OBRENOV JOLANDA
+OBRENOV KRUNA
+OBRENOV PETAR
+OBRENOV RADIVOJ
+OBRENOV SANJA
+OBRENOV SAVA
+OBRENOV SLOBODANKA
+OBRENOV STANKA
+OBRENOV STEVAN
+OBRENOV VASA
+OBRENOV VLADIMIR
+OBRENOV ZORICA
+OBRENOV ZORICA
+OBRENOVIĆ BOŽIDAR
+OBRENOVIĆ BRANKO
+OBRENOVIĆ DARINKA
+OBRENOVIĆ DESIMIR
+OBRENOVIĆ KATARINA
+OBRENOVIĆ MILAN DR
+OBRENOVIĆ MIODRAG DIPL ING
+OBRENOVIĆ MIROSLAV
+OBRENOVIĆ NIKOLA
+OBRENOVIĆ RADOSLAV
+OBRENOVIĆ TATJANA
+OBRENOVIĆ VASO
+OBRENOVIĆ VLAJKO
+OBRIĆ GOJKO
+OBRIĆ RADOJICA
+OBRKNEŽEV ĐORĐE
+OBRKNEŽEV MILENKO
+OBRKNEŽEV RADMILA
+OBRKNEŽEV RADOJKA
+OBRKNEŽEV STEVAN
+OBROVAČKI DUŠICA
+OBROVAČKI GORDANA
+OBROVAČKI MIROSLAV
+OBROVAČKI RADE
+OBROVAČKI SVETOZAR
+OBROVAC MIJAT
+OBROVSKI ĐORĐE
+OBROVSKI DRAGUTIN
+OBROVSKI IVAN
+OBROVSKI JOVAN
+OBROVSKI KATICA
+OBROVSKI MIHAJLO
+OBROVSKI VASA
+OBUĆINA RATOMIR
+OBUĆINA SLAVKO
+OBUĆINA SLAVOLJUB
+OCOKOLJIĆ LJUBINKO
+ODŽIĆ NOVKA
+ODŽIĆ RATOMIR
+ODŽIĆ ZORKA
+ODŽOVSKI ILIJA
+ODADŽIĆ DUŠAN
+ODADŽIĆ GORDANA
+ODADŽIĆ JELISAVETA
+ODADŽIĆ NADA
+ODADŽIĆ RADIVOJ
+ODADŽIĆ STEVAN
+ODALOVIĆ BRANKO
+ODAVIĆ-JOSIĆ JELICA DIPL ING
+ODAVIĆ MILKA
+ODAVIĆ SLAVKO
+ODOR JOSIP
+ODOVIĆ JOVO
+ODRI BALINT
+ODRI KARLO
+OFENBEHER GIZELA
+OFENBEHER VALERIJA
+OFENBEHER VERICA
+OGAR JELENA
+OGAR VLADE
+OGNENOVSKA BOJANA
+OGNENOVSKA CVETANKA
+OGNJANAC DRAGICA
+OGNJANOV MILETA
+OGNJANOVAC BORISLAV
+OGNJANOVIĆ ĐORĐE
+OGNJANOVIĆ ACA
+OGNJANOVIĆ BRANISLAVA
+OGNJANOVIĆ DANILO
+OGNJANOVIĆ DEJAN DR LEKAR
+OGNJANOVIĆ DMITAR
+OGNJANOVIĆ MARIJA DR LEKAR
+OGNJANOVIĆ MIHAJLO
+OGNJANOVIĆ MILOVAN
+OGNJANOVIĆ OGNJENA
+OGNJANOVIĆ RADOJKA DR LEKAR
+OGNJANOVIĆ RANKO
+OGNJANOVIĆ SPASOJE
+OGNJANOVIĆ SVETLANA
+OGNJENOVIĆ BOŽIDAR
+OGNJENOVIĆ DARA
+OGNJENOVIĆ DRAGUTIN
+OGNJENOVIĆ MILENKO
+OGNJENOVIĆ NIKOLA
+OGNJENOVIĆ NIKOLA
+OGNJENOVIĆ NOVKA
+OGNJENOVIĆ PETAR
+OGNJENOVIĆ RADOVANKA
+OGNJENOVIĆ STANISLAV
+OGNJENOVIĆ STEVAN
+OGNJENOVIĆ STEVO
+OGNJENOVIĆ TOMISLAV
+OGORELICA BILJANA
+OGORELICA BOGDAN
+OGORELICA BRANKO
+OGORELICA MARIJA
+OGRIZEK DRAGICA
+OGRIZEK DRAGUTIN
+OGRIZEK KRISTINA
+OGRIZEK ROBERT
+OGRIZOVIĆ ALEKSANDAR
+OGRIZOVIĆ BORA
+OGRIZOVIĆ DESANKA
+OGRIZOVIĆ DESANKA
+OGRIZOVIĆ DRAGICA
+OGRIZOVIĆ DUŠAN
+OGRIZOVIĆ LJUBICA
+OGRIZOVIĆ LJUBICA
+OGRIZOVIĆ MILAN
+OGRIZOVIĆ MILE
+OGRIZOVIĆ MILIVOJ
+OGRIZOVIĆ NEDELJKO
+OGRIZOVIĆ NEDELJKO
+OGRIZOVIĆ RADOJKA
+OGRIZOVIĆ SRETA
+OGRIZOVIĆ VELJKO
+OGRIZOVIĆ VLADIMIR
+OGRIZOVIĆ ZORAN
+OJDANIĆ SAVA
+OJKIĆ SLAVKO
+OKAŠANOVIĆ SRETEN
+OKANJ STEVAN
+OKANJI LAJOŠ
+OKANJI OSKAR
+OKANJI RANKA
+OKANJI TIBOR
+OKANOVIĆ NOVICA
+OKEZAN JOVAN
+OKILJ SLAVKO
+OKILJEVIĆ SOFIJA
+OKLJEŠA NENAD
+OKLJEŠA NENAD
+OKLOBDŽIJA MARKO
+OKRAJNOV STEVAN
+OKRUŽNIK DRAGAN
+OKSENFELD JOVAN
+OKUKA LJILJANA
+OKULIĆ BOGDAN
+OKULIĆ ZORAN
+OLŠOVI NIKOLA
+OLAH ŠANDOR
+OLAH ŠANDOR
+OLAH ŠANDOR
+OLAH ĐORĐE
+OLAH ANDRIJA
+OLAH ERNA
+OLAH FERENC
+OLAH FERENC
+OLAH IŠTVAN
+OLAH IŠTVAN
+OLAH JELENA
+OLAH JELISAVETA
+OLAH JOVAN
+OLAH JULIJANA
+OLAH LASLO
+OLAH MIRKO
+OLAH NANDOR
+OLAH NANDOR
+OLAH PAVLE
+OLAH PAVLE
+OLAH ROZALIJA
+OLAH VINCE
+OLAJOŠ BELA
+OLAJOŠ GORDANA
+OLAJOŠ JANOŠ
+OLAJOŠ MIHALJ
+OLAJOŠ MIHALJ
+OLAJOŠ OTO
+OLAR PAU
+OLBINA SLAVKO
+OLEAR MIHAJLO
+OLEAR MIHAJLO
+OLEAR SANJA
+OLEAR SVETISLAV
+OLEAR VLADA
+OLEJAR JOAKIM
+OLIČKOV BRANISLAV
+OLIČKOV MILORAD
+OLIĆ STEVAN
+OLIVERIĆ NEBOJŠA
+OLJŠEVSKA NATAŠA
+OLJAČA ILIJA
+OLJAČA MARICA
+OLJAČA MILENKO
+OLJAČA MILOVAN
+OLJAČA NIKOLA
+OLJAČA RADA
+OLJAČA SLAVOLJUB
+OLJAČA STANISLAV
+OLJAČA STEVAN
+OLMAN MARIJA
+OLUŠKI DOBRILA
+OLUŠKI DUŠAN
+OLUŠKI DUŠAN
+OLUŠKI LAZAR
+OLUŠKI MILUTIN
+OLUŠKI MIROSLAV
+OLUŠKI MIROSLAV
+OLUŠKI OLIVERA
+OLUŠKI STOJAN
+OLUŠKI TODOR
+OLUŠKI TOMISLAV
+OLUŠKI VASA
+OLUŠKI VELIMIR DR
+OLUŠKI VERICA
+OLUJIĆ IVANA
+OLUJIĆ IVAN
+OLUJIĆ JELENA
+OLUJIĆ MILICA
+OLUJIĆ MIRKO
+OMČIKUS BOŠKO
+OMČIKUS JELENA
+OMČIKUS MAGDA
+OMČIKUS NIKOLA
+OMČIKUS RAJKO
+OMALJEV IVAN
+OMALJEV IVAN
+OMALJEV JULKA
+OMALJEV LEPOSAVA
+OMALJEV LEPOSAVA
+OMALJEV MILENA
+OMALJEV MILORAD
+OMALJEV VOJISLAV
+OMAZIĆ SOFIJA
+OMERAGIĆ KEMAL
+OMERI HAJRUDIN
+OMERI HALIM
+OMERI HASO
+OMERI NEDŽAD
+OMERI NURUDIN
+OMERZU ANTON
+OMERZU ELIZABETA
+OMIĆ IDRIZ
+OMORAC KATARINA
+OMORAC LATINKA
+ONČEVSKI JOVAN
+ONČU PETAR
+ONDRIK DUŠANKA
+ONEŠČUK MIHAJLO
+ONEŠĆUK NENAD
+ONHAUZ MARIJA
+ONODI IŠTVAN
+OPAČAK ANTUN
+OPAČAK IVAN
+OPAČIĆ ANĐA
+OPAČIĆ ANGELINA
+OPAČIĆ BOSILJKA
+OPAČIĆ BRANKO
+OPAČIĆ DUŠAN
+OPAČIĆ KOSTA
+OPAČIĆ MILAN
+OPAČIĆ MILAN
+OPAČIĆ MILORAD
+OPAČIĆ MIODRAG
+OPAČIĆ MIRKO
+OPAČIĆ MIRKO
+OPAČIĆ NENAD
+OPAČIĆ PAVLE
+OPAČIĆ SIMO
+OPAČIĆ SLAVKO
+OPAČIĆ STEVAN
+OPAČIĆ TODOR
+OPALIĆ DARINKA
+OPALIĆ MARKO
+OPALIĆ NIKOLA
+OPALIĆ NIKOLA
+OPALIĆ NIKOLA
+OPALIĆ SOFIJA
+OPANČAREV DUŠAN
+OPANČAREV IVAN
+OPANČAREV MILKA
+OPARNICA LJUBO
+OPARNICA LUKA
+OPARNICA MAKSIM
+OPARNICA MAKSIM
+OPARNICA MAKSIM
+OPARNICA MARINKO
+OPARNICA MILENKO
+OPARNICA MIRA
+OPARNICA SOFIJA
+OPARNICA VID
+OPELC LADISLAV
+OPOJLEVIĆ LAZAR
+OPRANOVIĆ BOŽIDAR
+OPRANOVIĆ MICA
+OPREŠNIK ANKICA
+OPRIJAN ANĐELKO DIPL ING
+OPRIJAN DRAGAN
+OPRIJAN MILKA
+OPRUC MILORAD
+OPSENICA MILAN
+OPSENICA SOKA
+ORČIĆ ŠIME
+ORČIĆ ŠIME
+ORČIĆ BOŽIDAR
+ORČIĆ DRAGO
+ORČIĆ IVAN
+ORČIĆ STJEPAN
+ORŠIĆ ĐORĐE
+ORŠIĆ JOCA
+ORŠIĆ MILICA
+ORŠOŠ ĐORĐE
+ORŠOŠ BRANKO
+ORŠOŠ DRAGAN
+ORŠOŠ FERENC
+ORŠOŠ JOSIP
+ORŠOŠ NIKOLA
+ORŠOŠ ROZALIJA
+ORŠOŠ SAVA
+ORŠOŠ TEREZA
+ORŠOŠ ZORAN
+ORŠOLIĆ STJEPAN
+ORANICA MAKSIM
+ORAVEC BRANISLAV
+ORAVEC BRANKO
+ORAVEC MARKO
+ORAVEC PAVLE
+ORBAN ALEKSANDAR
+ORBAN EMILIJA
+ORBAN GAVRA
+ORBAN VESNA
+ORDANOSKI JELENA
+ORDINAČEV ĐORĐE
+ORDINAČEV MLADEN
+ORDINAČEV TODOR
+ORDINAČEV TODOR
+ORDINAČEV TODOR
+OREŠČANIN BOGDAN
+OREŠČANIN BRANKO
+OREŠČANIN MILAN
+OREŠČANIN MILOVAN
+OREŠČANIN NATALIJA DR
+OREŠČANIN NATALIJA
+OREŠČANIN NIKOLA
+OREŠČANIN RADOVAN
+OREŠČANIN VLADIMIR
+OREŠČANIN VLADIMIR
+OREŠĆANIN DUŠAN
+OREŠKOVIĆ DONA
+OREŠKOVIĆ JELENA
+OREŠKOVIĆ MILE
+OREŠKOVIĆ SLAVKO
+OREŠKOVIĆ ZVONIMIR
+OREB BORIS
+OREHOVAC RUŽA
+ORELJ ĐURO
+ORELJ BRANISLAV
+ORELJ DARINKA
+ORELJ JOVAN
+ORELJ LJUBO
+ORELJ MATILDA
+ORELJ MILEVA
+ORELJ NATALIJA
+ORELJ RADE
+ORENDI JULIJANA
+ORENDI LASLO
+ORENDI OTO
+ORLANDIĆ KORNELIJA
+ORLANDIĆ ZOLTAN
+ORLIĆ BRANISLAV
+ORLIĆ LJUBICA
+ORLIĆ LJUBICA
+ORLIĆ MARICA
+ORLIĆ MARIJA
+ORLIĆ MILAN
+ORLIĆ MILORAD
+ORLIĆ NADA
+ORLIĆ NADEŽDA
+ORLIĆ NEDELJKO
+ORLIK ANA
+ORLIK MARIJA
+ORLOVAC ERŽEBET
+ORLOVIĆ ANTE
+ORLOVIĆ DARINKA
+ORLOVIĆ DUŠAN
+ORLOVIĆ JOVO
+ORLOVIĆ LJUBICA
+ORLOVIĆ MANE
+ORLOVIĆ MIHAJLO
+ORLOVIĆ MILAN
+ORLOVIĆ MILAN
+ORLOVIĆ MILORAD DR
+ORLOVIĆ MILORAD
+ORLOVIĆ SAŠA
+ORLOVIĆ SRBOLJUB
+ORLOVIĆ STEVICA
+ORLOVIĆ STOJAN
+ORLOVIĆ SVETLANA
+ORMAI TIBOR
+ORNJAKOV PRIZRENKA
+ORO ČEDOMIR
+OROS ŽARKO
+OROS ĐURA
+OROS ĐURA
+OROS ALBERT
+OROS EUGEN
+OROS JOAKIM
+OROS MARIJA
+OROS NIKOLA
+OROS VASA
+OROS ZDENKA
+OROVČANEC KIRA DR
+OROVEC JOSIP
+OROVIĆ MILOVAN
+ORSAG ANTAL
+ORSIĆ RADMILA
+ORTAK KAĆA
+ORVOŠ LAJOŠ
+ORZA MIRCA
+ORZA ROSANA
+OSEĆANSKI MLADEN
+OSETROV NIKOLA
+OSLOVČAN BOSILJKA
+OSMANAJ IMER
+OSMANI ASAN
+OSMANI MEHMED
+OSMANI NEŠAT
+OSMANI ROMANKA
+OSMANI SELIM
+OSMANKAČ SELIM
+OSMANOVIĆ KLAUDIJA
+OSMANOVIĆ LJUBINKA
+OSMONOJ SADRIJA
+OSNOVIĆ OSKAR
+OSOSLIJA RADENKO
+OSREDKAR JOSIP
+OSTER ILONA
+OSTOIĆ ĐORĐE
+OSTOIĆ ZORAN
+OSTOJIĆ ŽIVKO
+OSTOJIĆ ĐORĐE
+OSTOJIĆ BOŠKO
+OSTOJIĆ BOŽIDAR
+OSTOJIĆ BOŽIDAR
+OSTOJIĆ BOGDAN
+OSTOJIĆ BRANA
+OSTOJIĆ BRANIMIR
+OSTOJIĆ BRANISLAV DR
+OSTOJIĆ BRANKO
+OSTOJIĆ DAFINA
+OSTOJIĆ DOBRIVOJ
+OSTOJIĆ DRAGAN
+OSTOJIĆ DRAGICA
+OSTOJIĆ DRAGICA
+OSTOJIĆ DRAGOLJUB
+OSTOJIĆ DUŠAN
+OSTOJIĆ DUŠAN
+OSTOJIĆ DUŠAN
+OSTOJIĆ GOJKO
+OSTOJIĆ GORINKA
+OSTOJIĆ IVAN
+OSTOJIĆ JOVANKA
+OSTOJIĆ KATICA
+OSTOJIĆ LAZAR
+OSTOJIĆ LJUBA
+OSTOJIĆ LJUBINKO
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ MIĆA
+OSTOJIĆ MILADIN
+OSTOJIĆ MILAN
+OSTOJIĆ MILENKO
+OSTOJIĆ MILENKO
+OSTOJIĆ MILEVA
+OSTOJIĆ MILICA
+OSTOJIĆ MILKA
+OSTOJIĆ MILOŠ
+OSTOJIĆ MILORAD
+OSTOJIĆ MILORAD
+OSTOJIĆ MIRJANA
+OSTOJIĆ NADA
+OSTOJIĆ NATAŠA
+OSTOJIĆ NENAD
+OSTOJIĆ OBRAD
+OSTOJIĆ OBRAD
+OSTOJIĆ OLGA
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PREDRAG
+OSTOJIĆ RADIVOJE
+OSTOJIĆ RADOJICA
+OSTOJIĆ RADOVAN
+OSTOJIĆ RATKO
+OSTOJIĆ RISTO
+OSTOJIĆ SLAVICA
+OSTOJIĆ SLAVKO
+OSTOJIĆ SLOBODAN
+OSTOJIĆ SMILJKA
+OSTOJIĆ STANA
+OSTOJIĆ STANKA
+OSTOJIĆ SVETOZAR
+OSTOJIĆ TOMISLAV
+OSTOJIĆ VASA
+OSTOJIĆ VASILIJE
+OSTOJIĆ VESELIN
+OSTOJIĆ VESELIN
+OSTOJIĆ VLADIMIR
+OSTOJIĆ VOJISLAV
+OSTOJIĆ ZAGORKA
+OSTOJIĆ ZORAN
+OSTOJIĆ ZORA
+OSTOJIN ŽARKO
+OSTOJIN JULKA
+OSTOJIN LAZAR
+OSTOJIN MARIJA
+OSTOJIN MILOŠ
+OSTOJIN PERA
+OSTOJIN PERO
+OSTOJIN PETAR
+OSTOJIN PETAR
+OSTOJIN RADOVAN
+OSTOJIN SVETISLAV
+OSTOJIN TOŠA
+OSTROGONAC IVAN NOVINAR
+OSTROGONAC IVAN
+OSTROGONAC TIBOR
+OSVALD BARBARA
+OSVALD IVAN
+OSVALD VERA
+OTAŠEVIĆ ŽIVKO
+OTAŠEVIĆ JOVAN
+OTAŠEVIĆ SLOBODANKA
+OTAŠEVIĆ VLASTA
+OTIĆ ŽIVKO
+OTIĆ BORIVOJ
+OTIĆ BORIVOJ
+OTIĆ DARINKA
+OTIĆ DUBRAVKA
+OTIĆ JOVANKA
+OTIĆ KATICA
+OTIĆ MILAN
+OTIĆ MILIVOJ
+OTIĆ NIKOLA
+OTIĆ NOVAK
+OTIĆ RADOSLAVA
+OTIĆ RADOSLAVA
+OTIĆ RADOSLAV
+OTIĆ SAVA
+OTIĆ SVETOZAR
+OTIĆ VELIZAR
+OTIĆ VLADISLAV
+OTIĆ VUKICA
+OTLOKAN JOVAN
+OTMAČIĆ DRAGO
+OTOŠ ANDRAŠ
+OTORANOV SLAVKO
+OTOVIĆ VLADIMIR
+OTRUPČAK JOSIP
+OTRUPČAK MILOŠ
+OTRUPČAK SAMUILO
+OVCIN MILORAD
+OVUKA ĐURO
+OVUKA ĐURO
+OVUKA MILAN
+OVUKA NIKOLA
+OZER ĐURA
+OZER ĐURA
+OZER ĐURA
+OZMEC VERA
+PŠENIČNIK ZVONIMIR
+PAČARIĆ ŽIVAN
+PAČARIĆ MARIJA
+PAČARIĆ MIRKO
+PAČARIĆ NIKOLA
+PAČARIĆ RADIVOJ
+PAČARIĆ RADOMIR
+PAČARIĆ ZORAN
+PAŠĆAN ŠTEFANIJA
+PAŠĆAN ĐORĐE
+PAŠĆAN ĐORĐE
+PAŠĆAN ANKA
+PAŠĆAN DANICA
+PAŠĆAN DRAGAN
+PAŠĆAN DUŠANKA
+PAŠĆAN DUŠAN
+PAŠĆAN GAVRA
+PAŠĆAN JOVAN
+PAŠĆAN JOVAN
+PAŠĆAN MILORAD
+PAŠĆAN NADEŽDA
+PAŠĆAN NEDELJKO
+PAŠĆAN NIKOLA
+PAŠĆAN OLGA
+PAŠĆAN PERA
+PAŠĆAN PETAR
+PAŠĆAN RADIVOJ
+PAŠĆAN RADOSLAVA
+PAŠĆAN RADOSLAV
+PAŠĆAN SAVA
+PAŠĆAN SINIŠA
+PAŠĆAN SMILJA
+PAŠĆAN STEVAN
+PAŠĆAN TODOR
+PAŠĆAN VASA
+PAŠĆAN ZAGORKA
+PAŠĆANOVIĆ GRADIMIR
+PAŠĆANOVIĆ LAZAR
+PAŠĆANOVIĆ LJUBICA
+PAŠĆIK KLARA
+PAŠĆIK LASLO
+PAŠAGIĆ RAJKO
+PAŠAJLIĆ ANĐELKO
+PAŠAJLIĆ BILJANA
+PAŠAJLIĆ MIODRAG
+PAŠAJLIĆ RADOSLAV
+PAŠAJLIĆ RADOSLAV
+PAŠAJLIĆ VLADO
+PAŠALIĆ PAVLE
+PAŠANSKI MILAN
+PAŠANSKI VUKICA
+PAŠIĆ BOŽANA
+PAŠIĆ BOŽO
+PAŠIĆ DRAGICA
+PAŠIĆ DUŠKO
+PAŠIĆ JOVAN
+PAŠIĆ KATICA
+PAŠIĆ MILAN
+PAŠIĆ MILENA
+PAŠIĆ PETAR
+PAŠIĆ ROSA
+PAŠIĆ SAŠA
+PAŠIĆ SINIŠA
+PAŠIĆ STOJA
+PAŠIĆ VOJISLAV
+PAŠIĆ ZORA
+PAŠIN GROZDANA
+PAŠKA ŠANDOR
+PAŠKINOV VASKO
+PAŠTERAC ALEKSANDAR
+PAŠTI ŠANDOR
+PAŠTI MATIJA
+PAŠUJKOVIĆ JOVAN
+PAĆI BORIS
+PAĆI IŠTVAN
+PAĆI MARIO
+PAĆUK NIKOLA
+PAĆUK SLAVKO
+PAŽĐERSKI-MANOJLOVIĆ JELENA
+PAŽIN ŽELJKO
+PAŽIN ANĐELKO
+PAŽIN DANICA
+PAŽIN LJUBOMIR
+PAĐAN LJUBOMIR
+PAĐAN MILICA
+PAĐEN DUŠAN
+PAĐEN LEPA
+PAĐEN MARIJA
+PAĐEN STEVA
+PAĐEN ZDRAVKO
+PAC IVANKA
+PACEK LASLO
+PACIK IŠTVAN
+PADEŽANIN LJUBO
+PADEŽANIN VLADETA
+PADEJSKI MILENA
+PADEJSKI MILOVAN
+PADEJSKI SAVA
+PADEJSKI VELIMIR
+PADI ALEKSANDAR
+PADI ALEKSANDAR
+PADI LAJOŠ
+PADROV GORAN
+PADROV NIKOLA
+PADROV RADIVOJ
+PADROV VESNA
+PAGAČ BILJANA
+PAGAČ NIKOLA
+PAGAČEVIĆ ANĐELKO
+PAGAČEVIĆ DRAGOMIR
+PAGAČEVIĆ STEVAN
+PAGAČEVIĆ STEVAN
+PAGAČEVIĆ VASA
+PAGANETO TINA
+PAGONIS JULKA
+PAGONIS VLADIMIROS
+PAIĆ ĐURAĐ
+PAIĆ DRAGAN
+PAIĆ FRANE
+PAIĆ IVAN
+PAIĆ MARIJA
+PAJČIĆ ALEKSA
+PAJČIĆ ANA
+PAJČIN ILIJA
+PAJČIN MILOJKO
+PAJČIN NEDELJKA
+PAJČIN VOJISLAV
+PAJANTIĆ DRAGAN
+PAJAZITOVIĆ MIRJANA
+PAJDAKOVIĆ DUBRAVKA
+PAJDIĆ JULIJA
+PAJDIĆ MARIJAN
+PAJEVIĆ ĐORĐE
+PAJEVIĆ DRAGOLJUB
+PAJEVIĆ GORAN
+PAJEVIĆ KOSTA
+PAJEVIĆ MILAN
+PAJIĆ BLAGOJE
+PAJIĆ BLAGOJE
+PAJIĆ BOŽIDAR
+PAJIĆ BOŽO
+PAJIĆ BOGIĆ
+PAJIĆ BORISLAV
+PAJIĆ BRANISLAV
+PAJIĆ BRANKO
+PAJIĆ BUDISLAV
+PAJIĆ DOBRIVOJ
+PAJIĆ DRAGOSLAV
+PAJIĆ DUŠAN DR
+PAJIĆ DUŠAN
+PAJIĆ DUŠAN
+PAJIĆ EMINA
+PAJIĆ GORDANA
+PAJIĆ GORICA
+PAJIĆ GRUJA
+PAJIĆ KOVILJKA
+PAJIĆ LJUBINKA
+PAJIĆ LJUBOMIR DIPL ING
+PAJIĆ MARIJA
+PAJIĆ MILICA
+PAJIĆ MILIVOJE
+PAJIĆ MILOŠ
+PAJIĆ MILOŠ
+PAJIĆ MILOJE
+PAJIĆ MILORAD
+PAJIĆ MILOSAV
+PAJIĆ MILUN
+PAJIĆ MIRKO
+PAJIĆ MIRKO
+PAJIĆ MLADEN
+PAJIĆ NADA
+PAJIĆ NADA
+PAJIĆ NIKOLA
+PAJIĆ NOVAK
+PAJIĆ PERO
+PAJIĆ PETAR
+PAJIĆ RADOJICA
+PAJIĆ RADOMIR
+PAJIĆ RADOSLAVA
+PAJIĆ RAJKO
+PAJIĆ SINIŠA
+PAJIĆ SMILJA
+PAJIĆ SREDOJE
+PAJIĆ STEVAN
+PAJIĆ SVETOZAR
+PAJIĆ TIHOMIR
+PAJIĆ VASA
+PAJIĆ VELIMIR
+PAJIĆ VESELIN
+PAJIĆ VIDOSAVA
+PAJIĆ VLADISLAV
+PAJIĆ VUKICA
+PAJIK DANICA
+PAJIN JOVAN
+PAJIN MILIVOJ
+PAJKERT ALEKSANDAR
+PAJKERT FRANJA
+PAJKERT MIROSLAVA
+PAJKERT RANKA
+PAJKIĆ DRAGAN
+PAJKIĆ RADOSLAV
+PAJKOVIĆ DRAGANA
+PAJKOVIĆ VLASTIMIR
+PAJOR MATIJA
+PAJOVIĆ ŠPIRO
+PAJOVIĆ ĐORĐE
+PAJOVIĆ DRAGOMIR
+PAJOVIĆ DUŠAN
+PAJOVIĆ JELENA
+PAJOVIĆ PREDRAG
+PAJOVIĆ RAJKO
+PAJOVIĆ SLOBODAN
+PAJOVIĆ ZORKA
+PAJTAŠEV DOBRIVOJ
+PAJTAK RADMILA
+PAJTIĆ PAVLE
+PAJVANČIĆ FRANJA
+PAJVANČIĆ KATA
+PAJVANČIĆ MARIJANA
+PAJVOD BOSILJKA
+PAKAŠKI ĐURA
+PAKAŠKI MIKA
+PAKAŠKI MILOVAN
+PAKAŠKI RADOSLAV
+PAKAŠKI SIMA
+PAKAŠKI VASA
+PAKAŠKI VITALIJ DIPL ING
+PAKAI JOŽEF
+PAKAI LASLO
+PAKLAR VIDA
+PAKLEDINAC VINKO
+PAKUŠEVSKI KATARINA
+PAKUŠEVSKI MIHAJLO
+PAKUŠEVSKI MITAR
+PAKUŠEVSKI RUŽICA
+PAKUŠEVSKIJ STEFAN
+PAL ILONA
+PAL ROZALIJA
+PALČEK JOSIP
+PALAČKOVIĆ MILAN
+PALAČKOVIĆ UROŠ
+PALAŠTI ĐORĐE
+PALAŠTI DESANKA
+PALAŠTI IŠTVAN
+PALAŠTI IŠTVAN
+PALAŠTI JOSIP
+PALAŠTI ROZALIJA
+PALADA JOZO
+PALALIĆ ĐURA
+PALALIĆ DRAGAN
+PALALIĆ DUŠAN
+PALALIĆ GOJKO
+PALALIĆ GOJKO
+PALALIĆ ILIJA
+PALALIĆ JOVAN
+PALALIĆ MIRKO
+PALALIĆ NEVENA
+PALALIĆ NIKO
+PALALIĆ PAVLE
+PALALIĆ RADE
+PALALIĆ SNEŽANA
+PALALIĆ SRETO
+PALALIĆ STOJAN
+PALALIĆ TODE
+PALALIĆ VID
+PALALIĆ VOJIN
+PALALIĆ ZDRAVKO
+PALAMARČUK ALEKSANDAR
+PALAN JOSIP
+PALANČANIN ELENA
+PALANČANIN JOVAN
+PALANČANIN RUŽA
+PALANČANIN VASA
+PALANČANIN VASA
+PALANAČKI ĐORĐE
+PALANAČKI RUŽICA
+PALANAČKI SAVA
+PALATINUŠ ANDRAŠ
+PALATINUŠ IŠTVAN
+PALATINUŠ JOŽEF
+PALEŽEVIĆ BORISLAV
+PALEVIĆ SLAVICA
+PALFI ALEKSANDAR
+PALFI BORKA
+PALFI IŠTVAN
+PALFI IŠTVAN
+PALFI JULIJANA
+PALFI KATICA
+PALIČKO ĐURĐINKA
+PALIČKO ANDRAŠ
+PALIČKO ILEŠ
+PALIČKO IRENA
+PALIČKO JELENA
+PALIŠAŠKI OLGA
+PALIĆ BORISLAV DIPL ING
+PALIĆ DRAGAN
+PALIĆ DUŠAN
+PALIĆ LJUBICA
+PALIĆ MARTA
+PALIĆ MILENKO
+PALIĆ NIKOLA
+PALIĆ OLGA
+PALIĆ STEVAN
+PALIĆ STEVAN
+PALIĆ VLASTIMIR
+PALINKAŠ ĐORĐE
+PALINKAŠ ĐURA
+PALINKAŠ BLANKA
+PALINKAŠ BORIVOJE DIPL ING
+PALINKAŠ FRANJA
+PALINKAŠ GEZA
+PALINKAŠ JOŽEF
+PALINKAŠ MARIJA
+PALINKAŠ MIHALJ
+PALINKAŠ MIRKO
+PALINKAŠ STEVAN
+PALINKAŠ VERA DR
+PALJIĆ LJUBOMIR
+PALJURAS APOSTOLOS
+PALOŠ IVAN
+PALOŠI OLGA
+PALOC ŠANDOR
+PALOC LASLO
+PALOC TIBOR
+PALOTAŠ ANDRIJA
+PALOV MIHAILO DR
+PALUROVIĆ STEPAN
+PAMUČINA JOVAN
+PANČIĆ GAVRILO
+PANČIĆ GRADIMIR
+PANČIĆ JULIJANA
+PANČIĆ JULIJANA
+PANČIĆ SLOBODAN
+PANČIĆ ZORAN
+PANČOVAN AVRAM
+PANČULIDZEV ALEKSIJE
+PANAJOTIDIS LEONIDAS
+PANAOTOVIĆ BOGDAN
+PANAOTOVIĆ DUŠANKA
+PANAOTOVIĆ JOVICA
+PANAOTOVIĆ MIRJANA
+PANCER BRANKO
+PANCER BRANKO
+PANDŽA BOŽICA
+PANDŽA ZVEZDANA
+PANDŽIĆ NADA
+PANDŽIĆ SLOBODANKA
+PANDŽIĆ SVETOZAR
+PANDŽIĆ TOMISLAV
+PANDŽIĆ VOJISLAV DIPL ING
+PANDI OSKAR
+PANDUREVIĆ MILANKO
+PANDUROV ŽIVKA
+PANDUROV ACA
+PANDUROV DRAGOLJUB
+PANDUROV DUŠANKA
+PANDUROV MILICA
+PANDUROV MILIVOJ
+PANDUROV MIROSLAV
+PANDUROV PETAR
+PANDUROV SAVA
+PANDUROV ZORAN
+PANDUROV ZORAN
+PANDUROVIĆ ŽIVKA
+PANDUROVIĆ IVAN
+PANDUROVIĆ JOVAN
+PANDUROVIĆ JULKA
+PANDUROVIĆ PAVLE
+PANDUROVIĆ RADMILA
+PANDUROVIĆ SRETEN
+PANDUROVIĆ SVETOZAR
+PANDUROVIĆ TOMISLAV
+PANDUROVIĆ VLADISLAVA
+PANDUROVIĆ VOJIN
+PANDURSKI MIROSLAV
+PANGERC MARA
+PANGERC VELIBOR
+PANIĆ ŽARKO
+PANIĆ ŽIVAN
+PANIĆ ŽIVOJIN
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐURA
+PANIĆ ALEKSANDAR
+PANIĆ ANA
+PANIĆ ANA
+PANIĆ ANTUN
+PANIĆ BRANISLAV
+PANIĆ BRANISLAV
+PANIĆ BRANISLAV
+PANIĆ BRANKO
+PANIĆ DAMJAN
+PANIĆ DANILKA
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGOLJUB
+PANIĆ DRAGOSLAV
+PANIĆ DRAGOSLAV
+PANIĆ DRENA
+PANIĆ DUŠAN
+PANIĆ DUŠAN
+PANIĆ GORDANA
+PANIĆ ILIJA
+PANIĆ ILONA
+PANIĆ JAŠA
+PANIĆ JELENA
+PANIĆ JELENA
+PANIĆ JOVANKA DR
+PANIĆ JOVANKA
+PANIĆ JOVANKA
+PANIĆ JULKA
+PANIĆ KAICA
+PANIĆ KATA
+PANIĆ KONSTANTIN
+PANIĆ LJUBICA
+PANIĆ MARKO
+PANIĆ MIĆO
+PANIĆ MICA
+PANIĆ MIKA
+PANIĆ MILANA
+PANIĆ MILAN
+PANIĆ MILENA
+PANIĆ MILENKO
+PANIĆ MILE
+PANIĆ MILICA
+PANIĆ MILIJA
+PANIĆ MILIVOJ
+PANIĆ MILIVOJ
+PANIĆ MILIVOJ
+PANIĆ MILOŠ
+PANIĆ MILOŠ
+PANIĆ MILOŠ
+PANIĆ MILORAD
+PANIĆ MILORAD
+PANIĆ MILOVAN
+PANIĆ MIRJANA
+PANIĆ MIRKO
+PANIĆ MIRKO
+PANIĆ MIROSLAV
+PANIĆ NADA
+PANIĆ NADA
+PANIĆ NADA
+PANIĆ NEMANJA
+PANIĆ NENAD
+PANIĆ OBRADIN
+PANIĆ OGNJEN
+PANIĆ OLGA
+PANIĆ PETAR
+PANIĆ PETAR
+PANIĆ PREDRAG
+PANIĆ RADIVOJE
+PANIĆ RADOMIR
+PANIĆ RADOSLAV
+PANIĆ RANKO
+PANIĆ RISTO
+PANIĆ SAŠA
+PANIĆ SANJA
+PANIĆ SLAĐANA
+PANIĆ SMILJANKA
+PANIĆ SNEŽANA
+PANIĆ SRĐAN
+PANIĆ SRBOLJUB
+PANIĆ STANA
+PANIĆ STANKA
+PANIĆ STEVAN
+PANIĆ STEVAN
+PANIĆ STEVAN
+PANIĆ SVETOZAR
+PANIĆ TOMISLAV
+PANIĆ UGLJEŠA
+PANIĆ VASILJKA
+PANIĆ VLADIMIR
+PANIĆ VOJISLAV
+PANIĆ ZDRAVKO
+PANIĆ ZLATKO
+PANIĆ ZORAN
+PANIĆ ZORA
+PANIAN ANICA
+PANIN BORIVOJE
+PANIN BRANA
+PANIN MILICA
+PANIN MILOŠ
+PANIN MITA
+PANIN MLADEN
+PANIN ZORAN
+PANINČIĆ SOFIJA
+PANJKOVIĆ BILJANA
+PANJKOVIĆ BRANKA
+PANJKOVIĆ DRAGAN
+PANJKOVIĆ ILIJA MR
+PANJKOVIĆ JELENA
+PANJKOVIĆ MELANIJA
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILICA
+PANJKOVIĆ NADA
+PANJKOVIĆ NIKOLA
+PANJKOVIĆ PETAR
+PANJKOVIĆ VLADIMIR
+PANKOV BRANISLAV
+PANKOV BRANISLAV
+PANKOV BRANKO
+PANKOV JELENA
+PANKOV JELICA
+PANKOV KATICA
+PANKOV MARKO
+PANKOV MILENKO
+PANKOV MILOVAN
+PANKOV PREDRAG
+PANKOV RADOSLAV
+PANKOV SAVA
+PANKOV SLAVKO
+PANKOV SVETOZAR
+PANKOV VESNA
+PANKOVIĆ LAZAR
+PANOV DESANKA
+PANOV NENAD
+PANOVIĆ ANĐELKO
+PANOVIĆ MIODRAG
+PANTELEMONOV NEDELJKO
+PANTELEMONOV NOVKA
+PANTELIĆ ČEDOMIR
+PANTELIĆ ŽARKO
+PANTELIĆ ĐORĐE
+PANTELIĆ ĐORĐE
+PANTELIĆ ANĐELKO
+PANTELIĆ ANA
+PANTELIĆ BORIVOJE
+PANTELIĆ BORIVOJ
+PANTELIĆ CVETIN
+PANTELIĆ DAFINA
+PANTELIĆ DANICA
+PANTELIĆ DRAGAN
+PANTELIĆ DRAGOLJUB
+PANTELIĆ DRAGOLJUB
+PANTELIĆ ILIJA DIPL ING
+PANTELIĆ ILIJA
+PANTELIĆ JULIJANA
+PANTELIĆ KAMENKO
+PANTELIĆ LAZAR
+PANTELIĆ LJUBIŠA
+PANTELIĆ LJUBICA
+PANTELIĆ MIHAJLO
+PANTELIĆ MILADIN
+PANTELIĆ MILAN
+PANTELIĆ MILOŠ
+PANTELIĆ MILORAD
+PANTELIĆ MILOVAN
+PANTELIĆ MIODRAG
+PANTELIĆ MIROSLAV
+PANTELIĆ MOMČILO
+PANTELIĆ MOMIR
+PANTELIĆ NENAD
+PANTELIĆ NEVENKA
+PANTELIĆ NIKOLA
+PANTELIĆ PAJO
+PANTELIĆ PAVLE
+PANTELIĆ PETAR DIPL ING
+PANTELIĆ PETAR
+PANTELIĆ-PETROVIĆ MARIJA
+PANTELIĆ SLAVICA
+PANTELIĆ SOFIJA
+PANTELIĆ VASA
+PANTELIĆ VERA
+PANTELIĆ VLADIMIR
+PANTELIĆ VLADISLAV
+PANTELIĆ VUJICA
+PANTELIĆ-VUKANOVIĆ VUKOSAVA
+PANTELIĆ VUKICA
+PANTELIĆ VUKICA
+PANTELIĆ ZORAN
+PANTELIN GEORGIJE
+PANTELINAC NIKOLA
+PANTELINAC PAVLE
+PANTELINAC SLOBODAN
+PANTIĆ ŽARKO
+PANTIĆ ŽIVAN
+PANTIĆ ŽIVKA
+PANTIĆ ŽIVOJIN
+PANTIĆ ŽIVORAD
+PANTIĆ ĐORĐE
+PANTIĆ ĐURĐINKA
+PANTIĆ ALEKSANDAR
+PANTIĆ BATA
+PANTIĆ BOGDAN
+PANTIĆ BORIVOJE
+PANTIĆ BOSILJKA
+PANTIĆ DOBRIVOJ
+PANTIĆ DOBROSAV
+PANTIĆ DUŠAN
+PANTIĆ GIZELA
+PANTIĆ GVOZDEN
+PANTIĆ JELICA
+PANTIĆ LJUBICA
+PANTIĆ MARINA
+PANTIĆ MIHAILO
+PANTIĆ MILAN
+PANTIĆ MILENKO
+PANTIĆ MILIVOJE
+PANTIĆ MILIVOJ
+PANTIĆ MILORAD
+PANTIĆ MILORAD
+PANTIĆ MIODRAG DR LEKAR
+PANTIĆ RADENKO
+PANTIĆ RADOMIR
+PANTIĆ RADOMIR
+PANTIĆ RADOSLAV
+PANTIĆ ROZA
+PANTIĆ SELIMIR
+PANTIĆ SELIMIR
+PANTIĆ SVETOZAR
+PANTIĆ TOMISLAV
+PANTIĆ UROŠ
+PANTIĆ VESNA
+PANTIĆ VOJISLAV DR
+PANTIĆ ZAGORKA
+PANTIĆ ZDRAVKO
+PANTOŠ ĐURO
+PANTOŠ KOVILJKA
+PANTOŠ PETAR
+PANTOŠ PETAR
+PANTOVIĆ ŠĆEPAN
+PANTOVIĆ ŽELJKO
+PANTOVIĆ ACA
+PANTOVIĆ BILJANA
+PANTOVIĆ BRANKO
+PANTOVIĆ DRAGINJA
+PANTOVIĆ LJUBO
+PANTOVIĆ MILISAV
+PANTOVIĆ MILOVAN
+PANTOVIĆ MLADEN
+PANTOVIĆ SAVA
+PANTOVIĆ SVETOLIK
+PANTOVIĆ VLADIMIR
+PANZALOVIĆ RADOVAN
+PAOLONI ĐUZEPINA
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ĐERĐ
+PAP ĐURO
+PAP ANA
+PAP DEJAN
+PAP DRAGICA
+PAP EDIT
+PAP EDIT
+PAP ENDRE DR
+PAP ENDRE
+PAP ERŽEBET
+PAP ETELKA
+PAP FERENC
+PAP FRANJA
+PAP FRANJA
+PAP GABOR
+PAP IŠTVAN DR
+PAP IŠTVAN
+PAP ILEŠ
+PAP IMRE
+PAP IMRE
+PAP IRENA
+PAP IRENA
+PAP JANJA
+PAP JANKO
+PAP JELENA
+PAP JELISAVETA
+PAP JOŽEF DR
+PAP JOSIP
+PAP JOSIP
+PAP JOVAN
+PAP JULIJANA
+PAP JULIJAN
+PAP JULIJA
+PAP KATARINA
+PAP LASLO
+PAP MARGITA
+PAP MIHAJLO
+PAP MIHAJLO
+PAP MIKLOŠ
+PAP MIRON
+PAP OLGA
+PAP PAVLE
+PAP ROZALIJA
+PAP SILVESTER
+PAP TEREZIJA
+PAP TIBOR
+PAP VALERIJA
+PAP VERA
+PAP VINCE
+PAP VLADISLAV
+PAP ZDENKA
+PAP ZOLTAN
+PAPŠOT-KOZIK PEPI
+PAPĐURDES JOVGEN
+PAPADOPOLO DRAGOSLAV
+PAPADOPOLO VJEKOSLAV
+PAPADOPULOS JANIS
+PAPADOPULOS KOSTAS
+PAPAGEORGIT KOSTA
+PAPAK DRAGAN
+PAPATANASIU NICA
+PAPEŠ JOSIP
+PAPEŠ KOSA
+PAPEŽ ILINKA
+PAPHARHAJI ĐURA
+PAPHARHAJI TEREZIJA
+PAPHARHAJI VLADIMIR
+PAPIŠTA FRANJA
+PAPIŠTA FRANJA
+PAPIŠTA ILDIKA
+PAPIŠTA JOVAN
+PAPIŠTA MARIJA
+PAPIŠTA MARKO
+PAPIŠTA MIHAJLO
+PAPIĆ ČEDOMIR
+PAPIĆ ŽIVKO
+PAPIĆ ALEKSANDAR
+PAPIĆ ALEKSANDAR
+PAPIĆ ANA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ BOŠKO
+PAPIĆ BOŽA
+PAPIĆ BOŽIDAR
+PAPIĆ BRANISLAV
+PAPIĆ BRANKO
+PAPIĆ BRANKO
+PAPIĆ DESANKA
+PAPIĆ DOBRIVOJE
+PAPIĆ DUŠAN
+PAPIĆ DUŠAN
+PAPIĆ GOJKO
+PAPIĆ IVAN
+PAPIĆ JELISAVETA
+PAPIĆ LAZAR
+PAPIĆ LEPOSAVA
+PAPIĆ LJUBICA
+PAPIĆ LOZINKA
+PAPIĆ LUKA
+PAPIĆ MARIJA
+PAPIĆ MIHAJLO
+PAPIĆ MILADIN
+PAPIĆ MILADIN
+PAPIĆ MILICA
+PAPIĆ MILIVOJ
+PAPIĆ MILKA
+PAPIĆ MILOŠ
+PAPIĆ MIROSLAV
+PAPIĆ MIROSLAV
+PAPIĆ NIKOLA
+PAPIĆ PAVLE
+PAPIĆ RADENKO
+PAPIĆ SAVA
+PAPIĆ SMILJA
+PAPIĆ SRĐAN DR
+PAPIĆ SRĐANKA
+PAPIĆ STEVAN
+PAPIĆ STEVAN
+PAPIĆ STEVAN
+PAPIĆ SVETISLAV DIPL ING
+PAPIĆ TEODOR
+PAPIĆ TODOR
+PAPIĆ VERA
+PAPIĆ ZORICA
+PAPIĆ ZORICA
+PAPIK VIKTOR
+PAPILION BORIŠKA
+PAPLACKO VELIMIR
+PAPOVIĆ ČEDOMIR
+PAPOVIĆ BLAŽO
+PAPOVIĆ BLAGOJE
+PAPOVIĆ KRSTO
+PAPOVIĆ MILE
+PAPOVIĆ MIODRAG
+PAPOVIĆ MLADEN
+PAPOVIĆ VESELIN
+PAPOVIĆ VUKOSAV
+PAPRIĆ ŽIVAN
+PAPRIĆ ĐORĐE
+PAPRIĆ MARKO
+PAPRIĆ RAJKO
+PAPUGA ĐURA
+PAPUGA DIMITRIJE
+PAPUGA EUFEMIJA
+PAPUGA IRINA
+PAPUGA JAROSLAV
+PAPUGA KIRIL
+PAPUGA LJUBOMIR
+PAPUGA MIHAJLO
+PAPUGA TATJANA
+PAPUGA VERA
+PAPUGA VLADIMIR
+PAPULIN ĐERĐIKA
+PAPULIN BORISLAV
+PAPULIN DOBRINA
+PAPULIN RADOJKA
+PARČIĆ NAĐA DR
+PARABUĆSKI MILENKO
+PARABUĆSKI-SIMIĆ RUŽICA
+PARABUĆSKI SVETISLAV NOVINAR
+PARABUCKI LAZAR
+PARABUCKI LJILJANA
+PARAG STEVAN
+PARANDILOVIĆ ROSA
+PARAPID MIRJANA
+PARAVIL NIKOLA
+PARAVINA JARMILA
+PARAVINA MILOŠ
+PARDOVICKI FERENC
+PARDOVICKI FRANJA
+PARDOVICKI MARIJA
+PAREŽANIN RADIVOJ
+PAREŽANIN SLOBODAN
+PAREŽANIN VLADISLAV
+PARHANOV VIKTORIJA
+PARIČEVIĆ EVA
+PARIĆ STIPE
+PARIPOV JELA
+PARIPOV MILAN
+PARIPOV MILENKO
+PARIPOVIĆ ČEDOMIR
+PARIPOVIĆ DRAGAN
+PARIPOVIĆ DUŠAN
+PARIPOVIĆ JOVAN
+PARIPOVIĆ JOVO
+PARIPOVIĆ MIHAJLO
+PARIPOVIĆ MILENKO
+PARIPOVIĆ MILE
+PARIPOVIĆ MILKA
+PARIPOVIĆ PAJA
+PARIPOVIĆ SLOBODAN
+PARIPOVIĆ SVETOZAR
+PARIPOVIĆ VLADIMIR
+PARIPOVIĆ VLADISLAVKA
+PARIPOVIĆ ZORAN
+PARKANJI SAMUEL
+PARLAĆ LJUBOMIR
+PARLAĆ MARINKO
+PARLAĆ MIODRAG
+PARLIĆ ANA
+PARLIĆ JEVTA
+PARLIĆ NIKOLA
+PARMAĆ NEDELJKO
+PARNICKI IVAN
+PARNICKI JOVAN
+PAROŠKAJ ĐURA
+PAROŠKAJ DANILO
+PAROŠKI ĐORĐE
+PAROŠKI ĐORĐE
+PAROŠKI ALEKSANDAR
+PAROŠKI ALEKSANDAR
+PAROŠKI ANA
+PAROŠKI ANKICA
+PAROŠKI BORIVOJ
+PAROŠKI BRANISLAV
+PAROŠKI DAMJAN
+PAROŠKI DIMITRIJE
+PAROŠKI DOBRILA
+PAROŠKI DRAGAN
+PAROŠKI DUŠAN
+PAROŠKI GLIŠA
+PAROŠKI GORDAN
+PAROŠKI IVAN
+PAROŠKI JELENA
+PAROŠKI JELICA
+PAROŠKI JOVAN
+PAROŠKI MARIJA
+PAROŠKI MILAN
+PAROŠKI MILAN
+PAROŠKI MILAN
+PAROŠKI MILICA
+PAROŠKI MILOŠ
+PAROŠKI MILORAD
+PAROŠKI MILOVAN
+PAROŠKI MIRA
+PAROŠKI MIRJANA
+PAROŠKI MIRKO
+PAROŠKI NESTOR
+PAROŠKI OBREN
+PAROŠKI OLGA
+PAROŠKI PETAR
+PAROŠKI PUNIŠA
+PAROŠKI RADMILA
+PAROŠKI RAJKO
+PAROŠKI ROŽA
+PAROŠKI SAVA
+PAROŠKI SLAVICA
+PAROŠKI SOFIJA
+PAROŠKI STEVAN
+PAROŠKI VEROLJUB
+PAROŠKI VLADIMIR
+PAROŠKI ZAGORKA
+PAROCI JOSIP
+PAROCI JULIJANA
+PAROCI KARLO
+PAROCI LJILJANA
+PAROCI TIBOR
+PAROCI TIBOR
+PAROCI TIBOR
+PAROJČIĆ LJUBICA
+PAROJČIĆ SLOBODAN
+PAROKAI MIRKO
+PAROVIĆ SLAVKO
+PARUŽIĆ PANTA
+PARUCKI MIHAJLO
+PASARIĆ RUŽA
+PASKAŠ MILAN
+PASKAŠ MILKA
+PASKAŠ NATAŠA
+PASKALI GORAN
+PASKALJEVIĆ ALEKSANDAR
+PASKU DIMITRIJE
+PASKULOV MIROLJUB
+PAST ROBERT
+PASTERKO STEVAN
+PASTONJICKI ELEMIR
+PASTOR GEZA
+PASTOR JANOŠ
+PASTOR JANOŠ
+PASTOR JOSIP
+PASTOR JOSIP
+PASTOR JOZEF
+PASTOR LASLO
+PASTOR MARIJA
+PASTOR MIHAJLO
+PASTOR MILAN
+PASTOR PETAR
+PASTOR STJEPAN
+PASTORNAČKI ĐURĐINKA
+PASTORNAČKI LAZAR
+PASTORNAČKI LJUBIŠA
+PASTORNAČKI MARIJA
+PASTORNAČKI RADOSLAV
+PASTORNJICKI GORDANA
+PATAFTA JULIJA
+PATAFTA STEVAN
+PATAJ ARANKA DR
+PATAK PAVLE
+PATAKI ANA
+PATAKI EVA
+PATAKI GORAN
+PATARIĆ STIPAN
+PATARICA ELEMER
+PATIĆ DRAGOMIR
+PATIĆ RADOSAV
+PATIĆ RATKO
+PATIĆ VLADIMIR
+PATLEJH NADEŽDA
+PATRIK LAJOŠ
+PATRIK STEVAN
+PATRNOGIĆ BRANISLAV DIPL ING
+PATRNOGIĆ DUŠAN DR
+PATRNOGIĆ DUŠICA
+PATRNOGIĆ LIDIJA
+PAUŠIĆ IVAN
+PAUŠIĆ MARKO
+PAUKOVIĆ MIRJANA
+PAUL KATICA
+PAUL LAJOŠ
+PAUL LAJOŠ
+PAUL OSKAR
+PAULIĆ MILE
+PAULIK ALEKSANDAR
+PAULIK PERO
+PAULIK PETAR
+PAULOVIĆ DRAGUTIN
+PAUNESKU VASA
+PAUNIĆ ŽIVKO DIPL ING
+PAUNIĆ ĐURA
+PAUNIĆ ALIMPIJE
+PAUNIĆ BRANKO
+PAUNIĆ DIMITRIJE
+PAUNIĆ DRAGOMIR
+PAUNIĆ ILIJA
+PAUNIĆ LAZAR
+PAUNIĆ MILANA
+PAUNIĆ MILEVA
+PAUNIĆ MILE
+PAUNIĆ STANIMIR
+PAUNIĆ TOMA
+PAUNIĆ VUKAŠIN
+PAUNKOVIĆ JOVANA
+PAUNKOVIĆ LJILJANA
+PAUNKOVIĆ VELIMIR
+PAUNKOVIĆ VLADIMIR
+PAUNKU AURELIJA
+PAUNOVIĆ ČASLAV
+PAUNOVIĆ ANTO
+PAUNOVIĆ BOGDAN
+PAUNOVIĆ BOGDAN
+PAUNOVIĆ BRANKA
+PAUNOVIĆ BRANKO
+PAUNOVIĆ DIMITRIJE
+PAUNOVIĆ DRAGOLJUB
+PAUNOVIĆ DRAGUTIN
+PAUNOVIĆ GOSPAVA
+PAUNOVIĆ JELENA
+PAUNOVIĆ JOVAN
+PAUNOVIĆ JOVICA
+PAUNOVIĆ KATICA
+PAUNOVIĆ KOVILJKA
+PAUNOVIĆ KOVILJKA
+PAUNOVIĆ LJILJANA
+PAUNOVIĆ LJUBIVOJE
+PAUNOVIĆ MARINA
+PAUNOVIĆ MELINDA
+PAUNOVIĆ MILICA
+PAUNOVIĆ MILOMIR
+PAUNOVIĆ MILORAD
+PAUNOVIĆ MILORAD
+PAUNOVIĆ MILORAD
+PAUNOVIĆ NIKOLA
+PAUNOVIĆ PAUN
+PAUNOVIĆ PETAR
+PAUNOVIĆ RADOŠ
+PAUNOVIĆ RADOSLAV
+PAUNOVIĆ RADOSLAV
+PAUNOVIĆ RATOMIR
+PAUNOVIĆ SLAVA
+PAUNOVIĆ SLOBODANKA
+PAUNOVIĆ SRBICA
+PAUNOVIĆ STOJANKA
+PAUNOVIĆ TOMISLAV
+PAUNOVIĆ VUKOSAVA
+PAUNOVIĆ ZORAN
+PAUNOVIĆ ZVONKO
+PAUT MILAN
+PAUZENBERGER IRENA
+PAUZENBERGER JOVAN
+PAVAI FRANJA
+PAVELKA DANIELA
+PAVELKA VLADIMIR
+PAVIČ DANICA
+PAVIČEVIĆ MILAN
+PAVIČEVIĆ NADA
+PAVIČIĆ DRAGICA
+PAVIČIĆ IVAN
+PAVIČIĆ MIRKO
+PAVIŠIĆ ĐURA
+PAVIĆ ĐURO
+PAVIĆ ANKA
+PAVIĆ ARON
+PAVIĆ BILJANA
+PAVIĆ DUŠAN
+PAVIĆ GAŠO
+PAVIĆ GOJKO
+PAVIĆ JOŽEF
+PAVIĆ LJUBIŠA
+PAVIĆ LJUBICA
+PAVIĆ LJUBOMIR
+PAVIĆ MARIJA
+PAVIĆ MILAN
+PAVIĆ MILAN
+PAVIĆ MILICA
+PAVIĆ SLAVKO
+PAVIĆ STEVAN
+PAVIĆ-SULOCKI ESTER
+PAVIĆ TEREZIJA
+PAVIĆ VENKO
+PAVIĆ VERKA
+PAVIĆEVIĆ ALEKSANDAR
+PAVIĆEVIĆ ALEKSANDAR
+PAVIĆEVIĆ ANANIJE
+PAVIĆEVIĆ BRANISLAV
+PAVIĆEVIĆ DESA
+PAVIĆEVIĆ DRAGAN
+PAVIĆEVIĆ DUŠAN
+PAVIĆEVIĆ DUŠAN
+PAVIĆEVIĆ JELENA
+PAVIĆEVIĆ LJILJANA
+PAVIĆEVIĆ MILANKO
+PAVIĆEVIĆ MILOŠ
+PAVIĆEVIĆ MILOMIR
+PAVIĆEVIĆ MILUTIN
+PAVIĆEVIĆ MIODRAG
+PAVIĆEVIĆ MIODRAG
+PAVIĆEVIĆ MIRA
+PAVIĆEVIĆ MIRKO
+PAVIĆEVIĆ SLAVKO
+PAVIĆEVIĆ SLOBODAN
+PAVIN LJUBICA
+PAVKOV ŽIVKO
+PAVKOV ŽIVOJIN
+PAVKOV ĐURĐEVKA
+PAVKOV ĐURĐINA
+PAVKOV ALEKSANDAR
+PAVKOV ANKA
+PAVKOV BOŽIDAR
+PAVKOV BOSILJKA
+PAVKOV BRANKO
+PAVKOV DRAGAN
+PAVKOV DRAGAN
+PAVKOV DUŠAN
+PAVKOV DUŠAN
+PAVKOV GOJKO
+PAVKOV GORDANA
+PAVKOV IVANKA
+PAVKOV JOVAN
+PAVKOV JOVAN
+PAVKOV JOVAN
+PAVKOV KATICA
+PAVKOV LAZAR
+PAVKOV MILAN
+PAVKOV MILAN
+PAVKOV MILAN
+PAVKOV MILIVOJ DIPL ING
+PAVKOV MILOŠ
+PAVKOV MILOJE
+PAVKOV MILORAD
+PAVKOV MILORAD
+PAVKOV MILUTIN
+PAVKOV MITAR
+PAVKOV NADA
+PAVKOV NADA
+PAVKOV PAVLE
+PAVKOV PETAR
+PAVKOV RADIVOJ
+PAVKOV RADOVAN
+PAVKOV RATOMIR
+PAVKOV SAVA
+PAVKOV SAVA
+PAVKOV SINIŠA
+PAVKOV SLAVKO
+PAVKOV STEVAN
+PAVKOV STEVAN
+PAVKOV STEVAN
+PAVKOV UROŠ
+PAVKOV VITOMIR
+PAVKOV ZORAN
+PAVKOV ZORKA
+PAVKOVIĆ BOŽIDAR
+PAVKOVIĆ BORISLAV
+PAVKOVIĆ DRAGANA
+PAVKOVIĆ DRAGICA
+PAVKOVIĆ JOVANKA
+PAVKOVIĆ KATICA
+PAVKOVIĆ NIKOLA
+PAVKOVIĆ PETAR
+PAVKOVIĆ RADOJE
+PAVLEKIĆ STEVAN
+PAVLESKI MENKA
+PAVLEVSKI DESA
+PAVLEVSKI TRAJAN
+PAVLIČ MIRKO
+PAVLIČIĆ KREŠIMIR
+PAVLIČIĆ LJUBIŠA DR
+PAVLIĆ ĐORĐE
+PAVLIĆ BORISLAV
+PAVLIĆ BRANKO DIPL ING
+PAVLIĆ PETAR DIPL ING
+PAVLIĆ VLADA
+PAVLIĆEV ĐORĐE
+PAVLICA BRANISLAV
+PAVLICA JOVAN
+PAVLICA LAZAR
+PAVLICA MARICA
+PAVLICA MICA
+PAVLICA MILAN
+PAVLICA MILENA
+PAVLICA MILEVA
+PAVLICA NADA
+PAVLICA NIKOLA
+PAVLICA NIKOLA
+PAVLICA SAVO
+PAVLICA SOFIJA
+PAVLICA TODOR
+PAVLICA VLADIMIR
+PAVLIK ANTAL
+PAVLIK JOSIP
+PAVLIK KATARINA
+PAVLIK MIŠA
+PAVLIK VINKO
+PAVLOV ŽARKO
+PAVLOV ŽIVAN
+PAVLOV ŽIVKA
+PAVLOV ĐOKA
+PAVLOV ALEKSANDAR
+PAVLOV ALEKSANDAR
+PAVLOV ALEKSANDAR
+PAVLOV BOGDANKA
+PAVLOV BORISLAV
+PAVLOV DANICA
+PAVLOV DANILO
+PAVLOV DRAGINJA
+PAVLOV DRAGOMIR
+PAVLOV DUŠANKA
+PAVLOV DUŠANKA
+PAVLOV DUŠAN
+PAVLOV DUŠAN
+PAVLOV JOVAN
+PAVLOV KATICA
+PAVLOV-KOSTIĆ ANA DR
+PAVLOV KOVILJKA
+PAVLOV KRISTINA
+PAVLOV KUZMAN
+PAVLOV LAZAR
+PAVLOV LAZAR
+PAVLOV LJUBICA
+PAVLOV LJUBICA
+PAVLOV MARIJA
+PAVLOV MILAN
+PAVLOV MILETA
+PAVLOV MILIVOJ
+PAVLOV MILORAD
+PAVLOV MILORAD
+PAVLOV MILOVAN
+PAVLOV MILOVAN
+PAVLOV MILUTIN
+PAVLOV MIRA
+PAVLOV-MIRKOVIĆ MIROSLAVA DR
+PAVLOV MIROSLAV
+PAVLOV MIROSLAV
+PAVLOV MITKO
+PAVLOV NADA
+PAVLOV NADA
+PAVLOV NATALIJA
+PAVLOV NEVENKA
+PAVLOV OLGA
+PAVLOV PAJA
+PAVLOV PAVEL
+PAVLOV PAVEL
+PAVLOV PAVLE
+PAVLOV PETAR
+PAVLOV PETAR
+PAVLOV RADA
+PAVLOV RADIVOJ
+PAVLOV RADMILA
+PAVLOV RADOSLAVA
+PAVLOV RADOSLAV
+PAVLOV SAVA
+PAVLOV SAVA
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STOJAN
+PAVLOV SVETOZAR
+PAVLOV VASILIJE
+PAVLOV VERA
+PAVLOV VERA
+PAVLOV VERICA
+PAVLOV VIDOSAVA
+PAVLOV VLADIMIR
+PAVLOV VLASTIMIR
+PAVLOVIĆ ČEDOMIR
+PAVLOVIĆ ŽARKO
+PAVLOVIĆ-ŽENER OLGA
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐO
+PAVLOVIĆ ĐORĐO
+PAVLOVIĆ ALEKSANDAR DR
+PAVLOVIĆ ALEKSANDAR
+PAVLOVIĆ ALEKSIJE
+PAVLOVIĆ ANA
+PAVLOVIĆ ANA
+PAVLOVIĆ ANDRIJA
+PAVLOVIĆ ANICA
+PAVLOVIĆ ANKICA
+PAVLOVIĆ BLAGOJE
+PAVLOVIĆ BLAGO
+PAVLOVIĆ BOŽIDAR
+PAVLOVIĆ BOŽO
+PAVLOVIĆ BOGDAN
+PAVLOVIĆ BOGOLJUB
+PAVLOVIĆ BORA
+PAVLOVIĆ BORISAV
+PAVLOVIĆ BORISLAV
+PAVLOVIĆ BORISLAV
+PAVLOVIĆ BRANKO
+PAVLOVIĆ BRANKO
+PAVLOVIĆ CVETAN
+PAVLOVIĆ DEJAN
+PAVLOVIĆ DIMITRIJE
+PAVLOVIĆ DOBRIVOJ
+PAVLOVIĆ DOBROSLAV
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGOLJUB
+PAVLOVIĆ DRAGOLJUB
+PAVLOVIĆ DRAGOSLAVA
+PAVLOVIĆ DRAGOSLAV
+PAVLOVIĆ DRAGUTIN
+PAVLOVIĆ DUŠANKA
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠKO
+PAVLOVIĆ EMIL
+PAVLOVIĆ ERŽEBET
+PAVLOVIĆ ERŽEBET
+PAVLOVIĆ GOJKO
+PAVLOVIĆ GORINKA
+PAVLOVIĆ ILIJA
+PAVLOVIĆ ILIJA
+PAVLOVIĆ ILONA
+PAVLOVIĆ ILONA
+PAVLOVIĆ IRINA
+PAVLOVIĆ IVAN DIPL ING
+PAVLOVIĆ IVAN
+PAVLOVIĆ JAGO
+PAVLOVIĆ JANKO
+PAVLOVIĆ JANKO
+PAVLOVIĆ JANOŠ
+PAVLOVIĆ JELA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELICA
+PAVLOVIĆ JOAKIM
+PAVLOVIĆ JOVAN
+PAVLOVIĆ JOVAN
+PAVLOVIĆ JOVICA
+PAVLOVIĆ KATARINA
+PAVLOVIĆ KATICA
+PAVLOVIĆ KONSTANTIN
+PAVLOVIĆ KOVINKA
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LJUBIŠA
+PAVLOVIĆ MAGDA
+PAVLOVIĆ MARA DIPL ING
+PAVLOVIĆ MARA
+PAVLOVIĆ MARICA
+PAVLOVIĆ MARKO DIPL ING
+PAVLOVIĆ MARKO
+PAVLOVIĆ MICA
+PAVLOVIĆ MILADIN
+PAVLOVIĆ MILAN
+PAVLOVIĆ MILAN
+PAVLOVIĆ MILENA
+PAVLOVIĆ MILENKO
+PAVLOVIĆ MILENKO
+PAVLOVIĆ MILE
+PAVLOVIĆ MILE
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILISAV
+PAVLOVIĆ MILJANA
+PAVLOVIĆ MILKA
+PAVLOVIĆ MILKA
+PAVLOVIĆ MILOJE
+PAVLOVIĆ MILOJE
+PAVLOVIĆ MILOMIR
+PAVLOVIĆ MILORAD DR
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILOSAVA
+PAVLOVIĆ MILOSAV
+PAVLOVIĆ MILOVAN
+PAVLOVIĆ MILOVAN
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIRA
+PAVLOVIĆ MIRJANA DR
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRKO DIPL OEC
+PAVLOVIĆ MIRKO
+PAVLOVIĆ MIRKO
+PAVLOVIĆ MIROSLAVA
+PAVLOVIĆ MIROSLAV
+PAVLOVIĆ MOMČILO
+PAVLOVIĆ NADA DR
+PAVLOVIĆ NADA
+PAVLOVIĆ NADA
+PAVLOVIĆ NEDELJKA
+PAVLOVIĆ NEDELJKO
+PAVLOVIĆ NEMANJA
+PAVLOVIĆ NEMANJA
+PAVLOVIĆ NIKOLA
+PAVLOVIĆ NIKOLA
+PAVLOVIĆ NIKOLICA
+PAVLOVIĆ NINA
+PAVLOVIĆ NOVAK
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ PAVLE
+PAVLOVIĆ PAVLE
+PAVLOVIĆ PEĐA
+PAVLOVIĆ PERO
+PAVLOVIĆ PETAR
+PAVLOVIĆ PETAR
+PAVLOVIĆ PETAR
+PAVLOVIĆ PLEMENKA
+PAVLOVIĆ-POPOVIĆ ZORA DR LEKAR
+PAVLOVIĆ PREDRAG
+PAVLOVIĆ PREDRAG
+PAVLOVIĆ PRVOSLAV
+PAVLOVIĆ RADENKO
+PAVLOVIĆ RADIVOJ
+PAVLOVIĆ RADMILA
+PAVLOVIĆ RADMILO DIPL ING
+PAVLOVIĆ RADMILO
+PAVLOVIĆ RADOJE
+PAVLOVIĆ RADOJKA
+PAVLOVIĆ RADOMIR DIPL OEC
+PAVLOVIĆ RADOMIR
+PAVLOVIĆ RADOSLAVA
+PAVLOVIĆ RADOVAN DR VETERINE
+PAVLOVIĆ RADOVAN
+PAVLOVIĆ RAJKO
+PAVLOVIĆ RANKO
+PAVLOVIĆ RATKO
+PAVLOVIĆ SAVA
+PAVLOVIĆ SAVO
+PAVLOVIĆ SIMA
+PAVLOVIĆ SIMEON
+PAVLOVIĆ SIMEON
+PAVLOVIĆ SINIŠA
+PAVLOVIĆ SLAVICA
+PAVLOVIĆ SLAVKO DIPL ING
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLOBODAN DR
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SMILJA
+PAVLOVIĆ STANA
+PAVLOVIĆ STANIKA
+PAVLOVIĆ STANISLAV
+PAVLOVIĆ STEVANKA
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STJEPAN
+PAVLOVIĆ STOJAN
+PAVLOVIĆ STOJAN
+PAVLOVIĆ SVETISLAV
+PAVLOVIĆ SVETOZAR
+PAVLOVIĆ TOŠA
+PAVLOVIĆ TOMA
+PAVLOVIĆ TOMISLAV DR
+PAVLOVIĆ VELIZAR
+PAVLOVIĆ VERA
+PAVLOVIĆ VERA
+PAVLOVIĆ VERA
+PAVLOVIĆ VIDA
+PAVLOVIĆ VIDOSAVA
+PAVLOVIĆ VIDOSAVA
+PAVLOVIĆ VIDOSLAV
+PAVLOVIĆ VITOMIR
+PAVLOVIĆ VITOMIR
+PAVLOVIĆ VLADIMIR
+PAVLOVIĆ VOJISLAV
+PAVLOVIĆ ZAGORKA
+PAVLOVIĆ ZDRAVKO
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORA
+PAVLOVIĆ ZORICA
+PAVLOVIĆ ZVONIMIR
+PAVLOVSKI ALEKSANDAR
+PAVLOVSKI MARIJA
+PAVLOVSKI SERGEJ
+PAVOŠEVIĆ ANKA
+PAVOŠEVIĆ RODOLJUB
+PAZARSKI STEVAN
+PAZMANJ JULIJANA
+PEČARIĆ KATICA
+PEČI GEZA
+PEČI IŠTVAN
+PEČI MARIJA
+PEČKAI-KOVAČ ANA
+PEČKAI MARGITA
+PEČVARAC STANOJE
+PEŠENJANSKI IVAN
+PEŠENJANSKI IVAN
+PEŠENJANSKI KARLO
+PEŠEVIĆ BOGDAN
+PEŠEVSKI ĐOKA
+PEŠEVSKI TOME
+PEŠEVSKI VLADO
+PEŠIĆ ŽIVAN
+PEŠIĆ ALEKSANDAR
+PEŠIĆ ANĐELKO
+PEŠIĆ BUDIMIR
+PEŠIĆ DESIMIR
+PEŠIĆ DIMITRIJE
+PEŠIĆ DIMITRIJE
+PEŠIĆ DRAGAN
+PEŠIĆ DRAGICA
+PEŠIĆ DRAGOLJUB
+PEŠIĆ DRAGOLJUB
+PEŠIĆ GOJKO
+PEŠIĆ GRADIMIR
+PEŠIĆ ILIJA
+PEŠIĆ JORDAN
+PEŠIĆ JOVAN
+PEŠIĆ LJUBICA
+PEŠIĆ MILADIN
+PEŠIĆ MILAN
+PEŠIĆ MILINKO
+PEŠIĆ MILUTIN
+PEŠIĆ MILUTIN
+PEŠIĆ MIROSLAV
+PEŠIĆ PETAR
+PEŠIĆ RADMILA
+PEŠIĆ RAJKO
+PEŠIĆ RUŽA
+PEŠIĆ SAVA
+PEŠIĆ STANOJE
+PEŠIĆ STEVAN DR
+PEŠIĆ VLADIMIR
+PEŠIĆ VUKAŠIN
+PEŠIKAN TIHOMIR
+PEŠIKAN VUK
+PEŠKA ANA
+PEŠKAN DRAGAN
+PEŠKAN VERA
+PEŠKANOV MILORAD
+PEŠKANOV PERSIDA
+PEŠKANOV STEVAN
+PEŠKANOV TODOR
+PEŠOVIĆ MILIVOJE
+PEŠOVIĆ STOJAN
+PEŠTALIĆ SLOBODANKA
+PEŠTERAC ČEDOMIR
+PEŠTERAC MILOMIR
+PEŠTERAC MILUTIN
+PEŠTI JOŽEF
+PEŠUT ALEKSANDRA
+PEŠUT BOŠKO
+PEŠUT BRANKO
+PEŠUT DUŠAN
+PEŠUT DUŠAN
+PEŠUT ILIJA
+PEŠUT MARIJA
+PEŠUT MILAN
+PEŠUT MILICA
+PEŠUT SLAVKA
+PEŠUT SMILJA
+PEŠUT VLADIMIR
+PEĆANAC BOSILJKA
+PEĆANAC DIMITRIJE
+PEĆANAC JOVAN
+PEĆANAC NIKOLA
+PEĆANAC VESNA
+PEĆANIN DUŠAN
+PEĆANIN LJUBIŠA DIPL ING
+PEĆANIN MIROSLAVA
+PEĆANIN OMILJEN
+PEĆANIN-VERMEZOVIĆ OLJA
+PEĆKO DANILO
+PEĆKO VERA
+PEĆO LAZAR
+PEĆO LUKA
+PEĆO SVETOZAR
+PEC JULIJE
+PECARSKI LEKSA
+PECE ĐORĐE
+PECE ĐORĐE
+PECE ALEKSANDAR
+PECE ANTON
+PECE ILEŠ
+PECE ZOLTAN
+PECELJ BOŽO
+PECELJ STEVAN
+PECIĆ ACA
+PECIĆ KATARINA
+PECIĆ MIODRAG
+PECIĆ STEVAN
+PECNJIK ANA
+PECO MIRSAD
+PECOVIĆ RADOMIR
+PEDOVIĆ RATOMIR
+PEIĆ-TUKULJAC VJEKOSLAV
+PEJČIĆ BOŽIDAR
+PEJČIĆ BRATISLAV
+PEJČIĆ DOBRIVOJE
+PEJČIĆ DOBRIVOJ
+PEJČIĆ DOBROSAV
+PEJČIĆ DRAGOMIR
+PEJČIĆ DUŠANKA
+PEJČIĆ DUBRAVKA
+PEJČIĆ GRADIMIR
+PEJČIĆ ILIJA
+PEJČIĆ ILIJA
+PEJČIĆ JASMINA
+PEJČIĆ JOVAN
+PEJČIĆ JOVAN
+PEJČIĆ LJUBICA
+PEJČIĆ LJUBOMIR
+PEJČIĆ MILENKO
+PEJČIĆ MILE
+PEJČIĆ MIODRAG
+PEJČIĆ MIROSLAV
+PEJČIĆ MITAR
+PEJČIĆ MOMČILO
+PEJČIĆ NOVAK
+PEJČIĆ PETAR
+PEJČIĆ RADOSLAVA
+PEJČIĆ RUŽA
+PEJČIĆ SAVA
+PEJČIĆ SAVA
+PEJČIĆ SVETISLAV
+PEJČIĆ VOJISLAV
+PEJČIĆ VOJISLAV
+PEJČIĆ ZORAN
+PEJAK ĐORĐE
+PEJAK ĐURA
+PEJAK BRANKO
+PEJAK DRAGOSLAVA
+PEJAK JELENA
+PEJAK JOVAN
+PEJAK JOVICA
+PEJAK LAZAR
+PEJAK LJUBICA
+PEJAK MILAN
+PEJAK MILINKA
+PEJAK MIODRAG
+PEJAK MIRJANA
+PEJAK MOJA
+PEJAK NEVENKA
+PEJAK RADOVAN
+PEJAK RAJKO
+PEJAK SAVA
+PEJAK SLAVKO
+PEJAK TRIVA
+PEJAK VERICA
+PEJAK VLADIMIR
+PEJAKIĆ MARKO
+PEJAKOVIĆ ŽARKO
+PEJAKOVIĆ ĐORĐE
+PEJAKOVIĆ DUŠAN
+PEJAKOVIĆ ILIJA
+PEJAKOVIĆ MILENKO
+PEJAKOVIĆ NANDOR
+PEJAKOVIĆ NENAD
+PEJAKOVIĆ PERICA
+PEJAKOVIĆ PETAR
+PEJAKOVIĆ PREDRAG
+PEJANOVIĆ ĐORĐE
+PEJANOVIĆ ANĐELKO
+PEJANOVIĆ BRANKO
+PEJANOVIĆ DIMITRIJE
+PEJANOVIĆ MILKA
+PEJANOVIĆ RADOVAN DR
+PEJANOVIĆ ZORAN
+PEJIČIĆ MILAN
+PEJIĆ ŽIVAN
+PEJIĆ ALEKSANDAR
+PEJIĆ ALEKSANDAR
+PEJIĆ ANICA
+PEJIĆ ANTON
+PEJIĆ BOGDANKA
+PEJIĆ BORIVOJ
+PEJIĆ BRANISLAV
+PEJIĆ BRANISLAV
+PEJIĆ DRAGAN
+PEJIĆ DRAGAN
+PEJIĆ DRAGIŠA
+PEJIĆ DRAGICA
+PEJIĆ DRAGO
+PEJIĆ DRAGO
+PEJIĆ DUŠAN
+PEJIĆ DUŠAN
+PEJIĆ DUŠAN
+PEJIĆ GAVRA
+PEJIĆ IVAN
+PEJIĆ IVAN
+PEJIĆ JANJA
+PEJIĆ JOVAN
+PEJIĆ LJUBOMIR
+PEJIĆ MARA
+PEJIĆ MIHAJLO
+PEJIĆ MILAN
+PEJIĆ MILAN
+PEJIĆ MILAN
+PEJIĆ MILENKO
+PEJIĆ MILICA
+PEJIĆ MILOŠ
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILOSAV
+PEJIĆ NEDELJKO
+PEJIĆ NIKOLA
+PEJIĆ NIKO
+PEJIĆ NOVAK
+PEJIĆ ORJEN
+PEJIĆ PREDRAG
+PEJIĆ RADOJKA
+PEJIĆ RADOSAV
+PEJIĆ RAJKO
+PEJIĆ RUŽICA
+PEJIĆ SLOBODANKA
+PEJIĆ SLOBODAN
+PEJIĆ SLOBODAN
+PEJIĆ SOFIJA
+PEJIĆ STANKO
+PEJIĆ STEVAN
+PEJIĆ STIPAN
+PEJIĆ VERICA
+PEJIĆ VLADO
+PEJIN ĐORĐE
+PEJIN ĐURĐINA
+PEJIN ANĐELKA
+PEJIN BRANIMIR
+PEJIN BRANIMIR
+PEJIN BRANIMIR
+PEJIN DEJAN
+PEJIN DIMITRIJE
+PEJIN DUŠAN DR
+PEJIN GOJKO
+PEJIN JELENA
+PEJIN JOVAN
+PEJIN LAZAR DIPL OEC
+PEJIN MARIJA
+PEJIN MARITA
+PEJIN MILIVOJ
+PEJIN MILOŠ
+PEJIN MILORAD
+PEJIN MIROSLAV
+PEJIN MLADEN
+PEJIN NENAD
+PEJIN NIKOLA
+PEJIN NIKOLA
+PEJIN NIKOLA
+PEJIN NOVAK
+PEJIN PAVLE
+PEJIN PERSIDA
+PEJIN PLAVŠA
+PEJIN RADA
+PEJIN RADA
+PEJIN RADOSLAV
+PEJIN STEVAN
+PEJIN STEVAN
+PEJIN VASA
+PEJIN VERICA
+PEJIN VUKOSAVA
+PEJINOV BRANISLAV
+PEJINOV LJUBICA
+PEJINOV VELJKO
+PEJINOVIĆ DRAGAN
+PEJKOVIĆ ALEKSANDAR
+PEJKOVIĆ DANILKA
+PEJKOVIĆ IBOLJKA
+PEJKOVIĆ IVAN
+PEJKOVIĆ JASNA
+PEJNOVIĆ BOSILJKA
+PEJNOVIĆ LJUBINKA
+PEJNOVIĆ MILAN
+PEJNOVIĆ MIROSLAV
+PEJNOVIĆ NIKOLA
+PEJNOVIĆ STEVAN
+PEJOVIĆ ĐOKA
+PEJOVIĆ ĐUKAN
+PEJOVIĆ ALEKSANDAR
+PEJOVIĆ ALEKSANDAR
+PEJOVIĆ BOŽIDAR
+PEJOVIĆ BORISLAV
+PEJOVIĆ BORIVOJE
+PEJOVIĆ BORKA
+PEJOVIĆ BOSILJKA
+PEJOVIĆ BRANKA
+PEJOVIĆ DANICA
+PEJOVIĆ DANILO
+PEJOVIĆ DAVID
+PEJOVIĆ DEJAN
+PEJOVIĆ DOBRILA
+PEJOVIĆ DRAGICA
+PEJOVIĆ LJUBO
+PEJOVIĆ MARKO
+PEJOVIĆ MILAN
+PEJOVIĆ MILENA
+PEJOVIĆ MILENA
+PEJOVIĆ MILIJA
+PEJOVIĆ MILOJKA
+PEJOVIĆ MIODRAG
+PEJOVIĆ MIRJANA
+PEJOVIĆ MOMIR
+PEJOVIĆ NADA
+PEJOVIĆ OLGA
+PEJOVIĆ PAVLE
+PEJOVIĆ PETAR
+PEJOVIĆ SAVA
+PEJOVIĆ SLAVKA
+PEJOVIĆ SLOBODANKA
+PEJOVIĆ SLOBODAN
+PEJOVIĆ TOMISLAV
+PEJOVSKI DRAGAN
+PEJOVSKI KOLE
+PEJOVSKI TOMISLAV
+PEKAR DARKO
+PEKAR JANOŠ
+PEKAR MILKA
+PEKAR ROZALIJA
+PEKAROVIĆ DRAGICA
+PEKAS ANTE
+PEKEČ MITA
+PEKEZ BRANKO
+PEKEZ JOVAN
+PEKEZ JOVAN
+PEKEZ MARICA
+PEKEZ MILORAD
+PEKEZ STANA
+PEKEZ ZORA
+PEKIĆ BRANISLAV DR
+PEKIĆ GORAN
+PEKIĆ KRSTO
+PEKIĆ MIHAJLO
+PEKIĆ MILAN
+PEKIĆ MILAN
+PEKIĆ MILOŠ
+PEKIĆ MIRKO
+PEKIĆ STEVAN
+PEKOVIĆ ŽELJKO
+PEKOVIĆ ILIJA
+PEKOVIĆ MAGDALENA
+PEKOVIĆ MILIVOJE
+PEKOVIĆ MITRUŠA
+PEKOVIĆ-PARLAĆ SMILJA DR
+PEKOVIĆ PAVA
+PEKOVIĆ VERA
+PEKOVIĆ VIDA
+PEKOVIĆ VUKAŠIN
+PEKURAR KORNEL
+PEKURAR ROMAN
+PELAGIĆ NADA
+PELAGIĆ SRĐAN
+PELE FERENC
+PELE MARIJA
+PELE ZOLTAN
+PELEGRIN STJEPAN
+PELEGRIN VLADO
+PELEVIĆ BRANKO
+PELHE FRANJA DR
+PELJHA ĐURA
+PELJHA SANJA
+PELJHA ZVONKO
+PELOZA DUŠAN
+PELOZA NADA
+PELVA JOSIP
+PELVA JOVAN
+PELVA ZOLTAN
+PELVAI-ZORIĆ EDIT
+PEMAC BRANISLAV
+PEMAC LAZAR
+PENA MARINKO
+PENA MILAN
+PENA MIODRAG
+PENA RADIVOJ
+PENA SLOBODAN
+PENAC STAKICA
+PENAVIN VELIMIR
+PENC DOBRILA
+PENC IRENA
+PENCA SLAVKO
+PENDŽIĆ BRANISLAV
+PENDŽIĆ JEROSIMA
+PENEZIĆ DUŠAN
+PENEZIĆ NENAD
+PENEZIĆ RADOSLAV
+PENEZIĆ ZORICA
+PENIĆ ČEDOMIR
+PENIĆ ĐURĐICA
+PENIĆ BORISLAV
+PENIĆ BRANKO
+PENIĆ MIHAJLO
+PENIĆ MILEVA
+PENIĆ MILICA
+PENIĆ PAVLE
+PENIĆ SLAVKO
+PENIĆ STEVAN
+PENIĆ VLADIMIR
+PENJAŠKOVIĆ ZVONIMIR
+PENJIN ŽIVA
+PENJIN SLAVKO
+PENOV EMIL
+PENOV LJUBIŠA
+PENOV MARKO
+PENZEŠ ĐORĐE
+PENZEŠ FERENC
+PENZEŠ FERENC
+PENZEŠ MIHALJ
+PENZEŠ MIHALJ
+PENZEŠ TIBOR
+PEPIĆ LAZO
+PEPIĆ MILAN
+PEPIĆ MILE
+PEPIĆ MIRJANA
+PEPIĆ MIRKO
+PEPLINAC TOMA
+PERČI AGNEZA
+PERČIĆ DRAGAN
+PERŠ KSENIJA
+PERŠAJ MIRJANA
+PERŠIĆ DANICA
+PERŠIĆ VALERIJA
+PERĐEĐAJ BAŠKIM
+PERĐUN ZVONKO
+PERAĆ BRANKO
+PERAĆ LJUPKO
+PERAZIĆ SAVA
+PERAZIĆ VLADIMIR
+PERC BRANKA
+PERC ELA
+PERC VLADIMIR
+PERCE LUKA
+PERDAN STANISLAV
+PEREŠ HERMINA
+PEREŽA NIKOLA
+PEREGI GEZA
+PEREGI OSKAR
+PEREHINAC IVAN
+PERENČEVIĆ VASO
+PEREPATIĆ PIROŠ
+PEREPATIĆ STEVAN
+PEREULA BOGDAN
+PERGAL MIROSLAV DR ING
+PERGE ESTER
+PERGE MARA
+PERGE VIKTORIJA
+PERIČEVIĆ BRANKO
+PERIČEVIĆ RAJKO
+PERIČIN ŽIVAN
+PERIČIN MILANKA
+PERIČIN MILENKO
+PERIČIN RATKO
+PERIČIN VLADA
+PERIŠA JAKOV
+PERIŠA MIROSLAV
+PERIŠIĆ ČEDOMIR
+PERIŠIĆ ŽIVODARKA
+PERIŠIĆ ĐORĐE
+PERIŠIĆ ĐORĐE
+PERIŠIĆ ALEKSANDAR
+PERIŠIĆ ANICA
+PERIŠIĆ BLAŽO
+PERIŠIĆ BLAGOJE
+PERIŠIĆ BOBAN
+PERIŠIĆ BORISLAV
+PERIŠIĆ BRANKO
+PERIŠIĆ DANICA
+PERIŠIĆ DRAGOMIR
+PERIŠIĆ DUŠANKA
+PERIŠIĆ IRENA
+PERIŠIĆ KATICA
+PERIŠIĆ KATICA
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZA
+PERIŠIĆ LJUBOMIR
+PERIŠIĆ MANCIKA
+PERIŠIĆ MARA
+PERIŠIĆ MIHAJLO
+PERIŠIĆ MILAN
+PERIŠIĆ MILENKO
+PERIŠIĆ MILINKO
+PERIŠIĆ MILJA
+PERIŠIĆ MILOVAN
+PERIŠIĆ MILOVAN
+PERIŠIĆ MILUTIN
+PERIŠIĆ MIODRAG
+PERIŠIĆ MIRA
+PERIŠIĆ NIKOLA
+PERIŠIĆ RADE
+PERIŠIĆ RADOSLAVA
+PERIŠIĆ RADOSLAV
+PERIŠIĆ RANKO
+PERIŠIĆ STANKO
+PERIŠIĆ STEVO
+PERIŠIĆ STOJAN
+PERIŠIĆ SVETOZAR
+PERIŠIĆ TODOR
+PERIŠIĆ UGLJEŠA
+PERIŠIĆ VASO
+PERIŠIĆ VASO
+PERIĆ ŽARKO
+PERIĆ ŽIVKA
+PERIĆ ŽIVOJIN
+PERIĆ ĐORĐE
+PERIĆ ĐURICA
+PERIĆ ALEKSANDAR
+PERIĆ ANA
+PERIĆ BISERKA
+PERIĆ BOŽIDAR
+PERIĆ BOŽIDAR
+PERIĆ BORIS
+PERIĆ BRANISLAV
+PERIĆ BRANISLAV
+PERIĆ BRANKO
+PERIĆ CVIJETIN
+PERIĆ DOBRILA
+PERIĆ DRAGANA
+PERIĆ DUŠANKA
+PERIĆ DUŠAN
+PERIĆ DUŠAN
+PERIĆ GOJKO DIPL ING
+PERIĆ GORAN
+PERIĆ IVAN
+PERIĆ JANKO
+PERIĆ JELKA
+PERIĆ JOVANKA
+PERIĆ JOVAN
+PERIĆ KSENIJA
+PERIĆ LAZA
+PERIĆ LJUBIŠA
+PERIĆ LJUBICA
+PERIĆ LJUBINKA
+PERIĆ LJUBINKO
+PERIĆ LJUBOMIR
+PERIĆ MARA
+PERIĆ MARIJA
+PERIĆ MARIJA
+PERIĆ MARIJA
+PERIĆ MARINKO
+PERIĆ MARKO
+PERIĆ MIHA
+PERIĆ MILADIN
+PERIĆ MILAN
+PERIĆ MILENKO
+PERIĆ MILICA
+PERIĆ MILKICA
+PERIĆ MILOŠ
+PERIĆ MILOŠ
+PERIĆ MILORAD
+PERIĆ MIODRAG
+PERIĆ MITAR
+PERIĆ NATAŠA
+PERIĆ-NEŠIĆ COKA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ PAVLE
+PERIĆ PETAR
+PERIĆ RAŠA
+PERIĆ RADE
+PERIĆ RADIVOJ
+PERIĆ RADO
+PERIĆ RAJKO
+PERIĆ RODOLJUB
+PERIĆ RUŽICA
+PERIĆ SAVA
+PERIĆ SAVA
+PERIĆ SLAVICA
+PERIĆ SLAVKO
+PERIĆ SLOBODAN
+PERIĆ SLOBODAN
+PERIĆ SMILJA
+PERIĆ STANKA
+PERIĆ SVETOZAR
+PERIĆ TOMISLAV
+PERIĆ VASA
+PERIĆ VINKA
+PERIĆ VLATKO
+PERIĆ ZDENKA
+PERIĆ ZORAN
+PERIĆ ZORAN
+PERIĆ ZORA
+PERICA ANTE
+PERICA RADOSLAV
+PERIN BRANISLAV
+PERIN DRAGIŠA
+PERIN MILINKO
+PERIN MILORAD
+PERIN RADIŠA
+PERIN SEKULA
+PERIN ZORA
+PERINAC RADOVAN
+PERINAC RADOVAN
+PERINOVIĆ BRANKO
+PERINOVIĆ NADA
+PERINOVIĆ SLAVICA
+PERINOVIĆ SLAVKO
+PERINOVIĆ STANKO
+PERIZ STEVO
+PERKOV RADINKA
+PERKOVAC MARIJA
+PERKOVIĆ BRANIMIR
+PERKOVIĆ BRANISLAV
+PERKOVIĆ DANICA
+PERKOVIĆ DRAGAN
+PERKOVIĆ GVOZDEN
+PERKOVIĆ JELKA
+PERKOVIĆ RADIVOJ
+PERKOVIĆ RADOMAN MR
+PERKOVIĆ SLAVKO
+PERKOVIĆ TADIJA
+PERKOVIĆ TOMO
+PERKOVSKI ĐORĐE
+PERKOVSKI ANĐELKO
+PERKUČIN ĐORĐE
+PERKUČIN ĐULINKA
+PERKUČIN DUŠAN
+PERKUČIN GORDANA
+PERKUČIN KATICA
+PERKUČIN NIKOLA
+PERKUČIN RADIVOJ DR
+PERLAKI LAJOŠ
+PERLIĆ DRAGAN
+PERLINAC SIMEUN
+PERNJAK NATALIJA
+PERNJAK NIKOLA DIPL ING
+PERNJAKOVIĆ DRAGOSLAV
+PEROŠEVIĆ NOVICA
+PEROŠEVIĆ STANKA
+PEROSAVLJEVIĆ LJUBIŠA
+PEROVANOVIĆ ALEKSANDAR
+PEROVANOVIĆ DUŠAN
+PEROVANOVIĆ JAGODA
+PEROVIĆ ŽANKA
+PEROVIĆ ANĐELKA
+PEROVIĆ BOJANA
+PEROVIĆ BRANKO
+PEROVIĆ BRATIMIR
+PEROVIĆ DRAGO
+PEROVIĆ GABRIELA
+PEROVIĆ IVANKA
+PEROVIĆ JELA
+PEROVIĆ JOVAN
+PEROVIĆ KATARINA
+PEROVIĆ MARKO
+PEROVIĆ MILENKO DR
+PEROVIĆ MILORAD
+PEROVIĆ MLAĐEN
+PEROVIĆ NADEŽDA
+PEROVIĆ NIKOLA
+PEROVIĆ RADAŠIN
+PEROVIĆ RADISAV
+PEROVIĆ RADISLAV
+PEROVIĆ RADIVOJE
+PEROVIĆ RADIVOJ
+PEROVIĆ RADOVAN DIPL ING
+PEROVIĆ SVETOMIR
+PEROVIĆ VESELIN
+PEROVIĆ VLAJKO
+PERTIĆ ZAKARIAŠ
+PERTOT JELENA
+PERUNIČIĆ DOBRILA
+PERUNIČIĆ MILORAD
+PERUNIČIĆ RADAN
+PERUNOVIĆ LJILJANA
+PERUNOVIĆ PANTO
+PERUNOVIĆ STANOJE
+PERVAZ ŽIVKA
+PERVAZ DRAGINJA DR PROF
+PESIRAC DRAGOLJUB
+PESIRAC KATARINA
+PESIRAC PETAR
+PESIRAC STEVAN
+PESLAĆ JOVAN
+PESTALIĆ JOSIP
+PESTELEK LJUBIŠA
+PESTELEK LJUBIŠA
+PETAKOV ŽIVKO
+PETAKOV JULKA
+PETAKOV MILENKO
+PETAKOV RADOSLAV
+PETAKOV RANKA
+PETAKOV SAVA
+PETAKOVIĆ DOBRILA
+PETAKOVIĆ DUŠAN
+PETAKOVIĆ ILIJA
+PETAKOVIĆ JOVAN
+PETAKOVIĆ MILICA
+PETAKOVIĆ NEMANJA
+PETAKOVIĆ RADIVOJ
+PETAKOVIĆ RAJKO
+PETAKOVIĆ SAVA
+PETE ĐURA
+PETE ĐURA
+PETE DUŠANKA
+PETE FERENC
+PETE FERENC
+PETE FRANJA
+PETE IŠTVAN
+PETE IŠTVAN
+PETE IŠTVAN
+PETE KAROLJ
+PETE PETAR
+PETE STEPAN
+PETE STEVAN
+PETEJ RATKO
+PETEK DAMIR
+PETELIN ELIZABETA
+PETENJI JOSIP DR
+PETENJI STEVAN
+PETER FRANCIŠKA
+PETER JOŽEF
+PETER JOLAN
+PETER JOVAN
+PETER MIHALJ
+PETER VILMOŠ
+PETERKA ĐORĐE
+PETERKA JELENA
+PETERKA JOSIP
+PETERKA MARIJA
+PETERKA STEVAN
+PETERKA VLADISLAV
+PETERLIĆ MILAN
+PETERNEL LIDIJA
+PETIĆ MILAN
+PETIĆ ZORKA
+PETIJEVIĆ JOVAN MR
+PETIJEVIĆ JOVAN
+PETIN NIKOLA PROFESOR
+PETKANIĆ MILORAD
+PETKOV ŽARE
+PETKOV ĐORĐE
+PETKOV ĐURA
+PETKOV BORISLAV
+PETKOV IVAN
+PETKOV MILAN
+PETKOV NADEŽDA
+PETKOV SAVA
+PETKOV STEVAN
+PETKOV STEVA
+PETKOVIĆ ČEDA
+PETKOVIĆ ŽARKO
+PETKOVIĆ ŽELJKO
+PETKOVIĆ ŽIVORAD
+PETKOVIĆ ŽIVORAD
+PETKOVIĆ ĐORĐE DR
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐULA
+PETKOVIĆ ĐURAĐ
+PETKOVIĆ ALEKSANDAR
+PETKOVIĆ ANA
+PETKOVIĆ ANTUN
+PETKOVIĆ BOJANA
+PETKOVIĆ BORISLAV
+PETKOVIĆ BORKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ CVETKO
+PETKOVIĆ DARINKA
+PETKOVIĆ DRAGAN
+PETKOVIĆ DRAGAN
+PETKOVIĆ DRAGIŠA
+PETKOVIĆ DRAGICA
+PETKOVIĆ DRAGOLJUB
+PETKOVIĆ DUŠAN
+PETKOVIĆ DUŠAN
+PETKOVIĆ DUŠAN
+PETKOVIĆ GORDANA
+PETKOVIĆ GVOZDEN
+PETKOVIĆ IŠTVAN
+PETKOVIĆ ILIJA
+PETKOVIĆ ILIJA
+PETKOVIĆ ILJA
+PETKOVIĆ IRENA
+PETKOVIĆ JAGODA
+PETKOVIĆ JOSIP
+PETKOVIĆ JOVAN
+PETKOVIĆ JOVO
+PETKOVIĆ KALMAN
+PETKOVIĆ KATARINA
+PETKOVIĆ KOSTADIN
+PETKOVIĆ KRSTA
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZO
+PETKOVIĆ LJUBINKO
+PETKOVIĆ LJUBOMIR
+PETKOVIĆ MARKO
+PETKOVIĆ MIHAJLO
+PETKOVIĆ MILANA
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILICA
+PETKOVIĆ MILKA
+PETKOVIĆ MILORAD
+PETKOVIĆ MILORAD
+PETKOVIĆ MILOVANKA
+PETKOVIĆ MILUTIN
+PETKOVIĆ MILUTIN
+PETKOVIĆ MILUTIN
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIORIKA
+PETKOVIĆ MIRA
+PETKOVIĆ MIRJANA DIPL ING
+PETKOVIĆ MIRJANA
+PETKOVIĆ MIRKO
+PETKOVIĆ MIRKO
+PETKOVIĆ MIRKO
+PETKOVIĆ MLADEN
+PETKOVIĆ MLADEN
+PETKOVIĆ MLADEN
+PETKOVIĆ NADA
+PETKOVIĆ NIKO
+PETKOVIĆ OBRAD
+PETKOVIĆ OLIVERA
+PETKOVIĆ PAVLE
+PETKOVIĆ PAVLE
+PETKOVIĆ PAVLE
+PETKOVIĆ PETAR
+PETKOVIĆ PETAR
+PETKOVIĆ PETAR
+PETKOVIĆ PETRA
+PETKOVIĆ PUNIŠA
+PETKOVIĆ RADE
+PETKOVIĆ RADIVOJ
+PETKOVIĆ RADOVAN
+PETKOVIĆ RADOVAN
+PETKOVIĆ RATKA
+PETKOVIĆ SLAVKO
+PETKOVIĆ SLOBODAN
+PETKOVIĆ SLOBODAN
+PETKOVIĆ SRĐAN
+PETKOVIĆ STANA
+PETKOVIĆ STANOJE
+PETKOVIĆ STEVAN
+PETKOVIĆ STEVAN
+PETKOVIĆ SVETISLAV
+PETKOVIĆ TOMISLAV
+PETKOVIĆ TOMISLAV
+PETKOVIĆ VASILIJE
+PETKOVIĆ VERA
+PETKOVIĆ VERICA
+PETKOVIĆ VESELIN
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADISLAV
+PETKOVIĆ VOJISLAV
+PETKOVIĆ VUKAŠIN
+PETKOVIĆ VUKOSAVA
+PETKOVIĆ ZLATKO
+PETKOVIĆ ZLATOMIR
+PETKOVIĆ ZORAN
+PETKOVSKA SLAVICA
+PETKOVSKI ACA
+PETKOVSKI GORAN
+PETKOVSKI MILKA
+PETKOVSKI STANKO
+PETLEK JOVAN
+PETLJANSKI BRANKO
+PETLJANSKI DRAGOSLAV
+PETLJANSKI IRENA
+PETO JOŽEF
+PETOŠEVIĆ MILE
+PETOŠEVIĆ SLAVKO
+PETOŠEVIĆ STEVAN
+PETOŠEVIĆ SVETISLAV
+PETOHLEB PAVICA
+PETOJEVIĆ ĐORĐE
+PETOVIĆ ĐURO
+PETOVIĆ GOJKO
+PETOVIĆ MILENA
+PETOVIĆ SLAVKO
+PETRAŠINOVIĆ DRAGAN
+PETRAŠKOVIĆ DRAGAN
+PETRAŠKOVIĆ EMILIJA
+PETRAKOVIĆ-GRAOVAC KOSANA
+PETRANOVIĆ JOSIP
+PETRANOVIĆ MAGDA
+PETRANOVIĆ ZVONKO
+PETREŠ FRANJO
+PETREŠ RADE
+PETRENJ STEVAN
+PETREVSKA ZORANKA
+PETREVSKI BORIS
+PETREVSKI ILONA
+PETREVSKI KIRO
+PETRI MILENA
+PETRI MIROSLAVA
+PETRIČEVIĆ IVAN
+PETRIČIĆ BRANKO
+PETRIČIĆ DANE
+PETRIČIĆ JOVO
+PETRIČIĆ MILAN
+PETRIČIĆ MILAN
+PETRIČIĆ STEVAN
+PETRIČIĆ TATJANA
+PETRIĆ ĐORĐE
+PETRIĆ ALEKSANDAR
+PETRIĆ ANASTAZIJA
+PETRIĆ BOŠKO
+PETRIĆ BRANISLAVA
+PETRIĆ BRANKO DR
+PETRIĆ DANILO
+PETRIĆ DESANKA DIPL ING
+PETRIĆ DESIMIR
+PETRIĆ DIMITRIJE DIPL ING
+PETRIĆ DIMITRIJE
+PETRIĆ DIMITRIJE
+PETRIĆ DUŠANKA
+PETRIĆ DUŠAN
+PETRIĆ ILIJA
+PETRIĆ JOVAN
+PETRIĆ LAZAR MR
+PETRIĆ LJILJANA
+PETRIĆ LJUBICA
+PETRIĆ MILAN
+PETRIĆ MILAN
+PETRIĆ MILENKO
+PETRIĆ MILETA
+PETRIĆ MILIVOJ
+PETRIĆ MILORAD
+PETRIĆ NADA
+PETRIĆ OLGA
+PETRIĆ PETAR
+PETRIĆ PETAR
+PETRIĆ RADISAV
+PETRIĆ RADISAV
+PETRIĆ RADOVAN
+PETRIĆ SLAVICA
+PETRIĆ SLOBODANKA
+PETRIĆ SLOBODAN
+PETRIĆ SOFIJA
+PETRIĆ SOFIJA
+PETRIĆ VASILIJE
+PETRIĆ VULETA
+PETRIK ŠANDOR
+PETRIK ALEKSANDAR DIPL ING
+PETRIK ELIZABETA
+PETRIK IŠTVAN
+PETRIK VINCE
+PETRIK ZOLTAN
+PETRIKA LJUBIŠA
+PETRIKA MIODRAG
+PETRIKONJA KSENIJA
+PETRIKONJA LAZAR
+PETRIN DUŠAN
+PETRIN KATICA
+PETRIN MAJA
+PETRIN MILANKA
+PETRIN MILANKA
+PETRIN RADMILA
+PETRIN VLADIMIR
+PETRIN VLADIMIR
+PETRINIĆ MIRKO
+PETRINOVIĆ MILINA
+PETRINOVIĆ STEVA
+PETRO ANTE
+PETRO KATALIN
+PETRO NIKO
+PETRO SANJA
+PETRONIĆ ŽIVOTA
+PETRONIĆ ALEKSANDAR
+PETRONIĆ KATARINA
+PETRONIJEVIĆ DRAGOMIR
+PETRONIJEVIĆ GORAN
+PETRONIJEVIĆ PREDRAG
+PETRONIJEVIĆ SRETA
+PETRONIJEVIĆ VLASTIMIR
+PETRONJE MIODRAG
+PETRONJE MIODRAG
+PETROV ŽIVANA
+PETROV ŽIVAN
+PETROV ANATOLIJ
+PETROV ANA
+PETROV BORIS
+PETROV DANICA
+PETROV DUŠANKA
+PETROV DUŠAN
+PETROV EVICA
+PETROV FRANKA
+PETROV IŠTVAN
+PETROV IVAN
+PETROV JASMINA
+PETROV JELENA
+PETROV JOŽEF
+PETROV LAZAR
+PETROV LJUBOMIR
+PETROV LJUBOMIR
+PETROV MARIJA
+PETROV MARIJA
+PETROV MARINKO
+PETROV MILAN
+PETROV MILENKO
+PETROV MILICA
+PETROV MILORAD
+PETROV MILOSAVA
+PETROV MILOVAN
+PETROV MIODRAG
+PETROV MIODRAG
+PETROV MIROSLAV
+PETROV MOMČILO
+PETROV NADA
+PETROV NATALIJA
+PETROV NEBOJŠA DR
+PETROV OLGA
+PETROV RADMILA
+PETROV SAŠA
+PETROV SAVA
+PETROV SAVA
+PETROV SAVA
+PETROV SERGIJE
+PETROV SLAVKA
+PETROV SLAVKO
+PETROV SLOBODAN
+PETROV SRBIVOJ
+PETROV STEVAN
+PETROV SVETOZAR
+PETROV TOMISLAV
+PETROV VASO
+PETROV VELIZAR
+PETROV VLADIMIR
+PETROV VOJISLAV
+PETROV VOJISLAV
+PETROV ZLATOMIR
+PETROVČAN-ŠPANOVIĆ EUFEMIJA
+PETROVAČKI DUŠAN
+PETROVAČKI JOVAN
+PETROVAČKI LJILJANA
+PETROVAČKI VERA
+PETROVIĆ ČEDA
+PETROVIĆ ŠTEFAN
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽELJKO
+PETROVIĆ ŽELJKO
+PETROVIĆ ŽIKA
+PETROVIĆ ŽIVAN
+PETROVIĆ ŽIVKA
+PETROVIĆ ŽIVKA
+PETROVIĆ ŽIVKO
+PETROVIĆ ŽIVKO
+PETROVIĆ ŽIVOJIN
+PETROVIĆ ŽIVORAD
+PETROVIĆ ŽIVOTA
+PETROVIĆ ĐOKICA
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐURA
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDRA
+PETROVIĆ ALEKSANDRA
+PETROVIĆ ALINKA
+PETROVIĆ ANĐELKA
+PETROVIĆ ANA
+PETROVIĆ ANGELINA
+PETROVIĆ ANICA
+PETROVIĆ ANKA
+PETROVIĆ ANKA
+PETROVIĆ-BALIŽ LJILJANA
+PETROVIĆ BILJANA
+PETROVIĆ BOŠKO
+PETROVIĆ BOŽIDAR
+PETROVIĆ BOGDAN
+PETROVIĆ BOGDAN
+PETROVIĆ BOJANA
+PETROVIĆ BOSILJKA
+PETROVIĆ BOSILJKA
+PETROVIĆ BRANIMIR
+PETROVIĆ BRANISLAVA
+PETROVIĆ BRANISLAVA
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANKA
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ CVIKO
+PETROVIĆ DAMIR
+PETROVIĆ DAMIR
+PETROVIĆ DANICA
+PETROVIĆ DANICA
+PETROVIĆ DANICA
+PETROVIĆ DARA
+PETROVIĆ DARINKA
+PETROVIĆ DARINKA
+PETROVIĆ DEJAN
+PETROVIĆ DESANKA
+PETROVIĆ DESIMIR
+PETROVIĆ DIMITRIJE
+PETROVIĆ DOBRICA
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGIŠA DIPL PRAVNIK
+PETROVIĆ DRAGIŠA
+PETROVIĆ DRAGIĆ
+PETROVIĆ DRAGINJA
+PETROVIĆ DRAGOLJUB DR
+PETROVIĆ DRAGOLJUB
+PETROVIĆ DRAGOLJUB
+PETROVIĆ DRAGOMIR
+PETROVIĆ DRAGOSLAV
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠICA
+PETROVIĆ DUŠKO
+PETROVIĆ EVA
+PETROVIĆ EVGENIJE
+PETROVIĆ EVICA
+PETROVIĆ FABIJAN
+PETROVIĆ GAVRILO
+PETROVIĆ GORDANA
+PETROVIĆ GORDANA
+PETROVIĆ GRADIMIR
+PETROVIĆ GRADIMIR
+PETROVIĆ HRISTINA
+PETROVIĆ ILIJA
+PETROVIĆ ILIJA
+PETROVIĆ ILIJA
+PETROVIĆ ILONA
+PETROVIĆ ISAK
+PETROVIĆ IVANKA
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ JANKO
+PETROVIĆ JASMINKA
+PETROVIĆ JELENA
+PETROVIĆ JELICA
+PETROVIĆ JELISAVETA
+PETROVIĆ JEVREM
+PETROVIĆ JOŽEF
+PETROVIĆ JOVANKA
+PETROVIĆ JOVANKA
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KOSTA DR
+PETROVIĆ KRSTO
+PETROVIĆ LAZAR
+PETROVIĆ LAZAR
+PETROVIĆ LENKA
+PETROVIĆ LIDA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJUBIŠA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBINKA
+PETROVIĆ LJUBISAV
+PETROVIĆ LJUBOMIR
+PETROVIĆ LJUBOMIR
+PETROVIĆ MARA
+PETROVIĆ MARICA
+PETROVIĆ MARIJA
+PETROVIĆ MARIJA
+PETROVIĆ MARIKA
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MIAJLO
+PETROVIĆ MICA
+PETROVIĆ MIHAILO
+PETROVIĆ MIHAILO
+PETROVIĆ MIHAJLO DR VETERINE
+PETROVIĆ MIJOMIR
+PETROVIĆ MILADIN
+PETROVIĆ MILANKA
+PETROVIĆ MILANKO
+PETROVIĆ MILANKO
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILENA
+PETROVIĆ MILENKO
+PETROVIĆ MILENKO
+PETROVIĆ MILENKO
+PETROVIĆ MILEN
+PETROVIĆ MILEVA
+PETROVIĆ MILE
+PETROVIĆ MILIĆ
+PETROVIĆ MILICA
+PETROVIĆ MILICA
+PETROVIĆ MILICA
+PETROVIĆ MILIVOJ
+PETROVIĆ MILOŠ DR
+PETROVIĆ MILOŠ DR
+PETROVIĆ MILOŠ
+PETROVIĆ MILOJE
+PETROVIĆ MILOJKO
+PETROVIĆ MILOLJUB
+PETROVIĆ MILORAD
+PETROVIĆ MILORAD
+PETROVIĆ MILOVAN
+PETROVIĆ MILOVAN
+PETROVIĆ MILOVAN
+PETROVIĆ MILUN
+PETROVIĆ MILUN
+PETROVIĆ MILUTIN
+PETROVIĆ MILUTIN
+PETROVIĆ MILUTIN
+PETROVIĆ MIODRAG
+PETROVIĆ MIODRAG
+PETROVIĆ MIODRAG
+PETROVIĆ MIOLJUB
+PETROVIĆ MIOMIR
+PETROVIĆ MIRČEA
+PETROVIĆ MIRJANA
+PETROVIĆ MIRJANA
+PETROVIĆ MIRKO
+PETROVIĆ MIROSLAV DR LEKAR
+PETROVIĆ MIROSLAVA
+PETROVIĆ MIROSLAVKA
+PETROVIĆ MIROSLAV
+PETROVIĆ MIROSLAV
+PETROVIĆ MLAĐEN
+PETROVIĆ MLADEN
+PETROVIĆ MLADEN
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ NADA
+PETROVIĆ NADA
+PETROVIĆ NADA
+PETROVIĆ NADIRA
+PETROVIĆ NATALIJA
+PETROVIĆ NENAD
+PETROVIĆ NEVENA
+PETROVIĆ NEVENKA DR
+PETROVIĆ NIKOLA
+PETROVIĆ NIKOLA
+PETROVIĆ NOVAK
+PETROVIĆ NOVICA
+PETROVIĆ OBRAD
+PETROVIĆ OLGA
+PETROVIĆ OLGICA
+PETROVIĆ OLIVERA
+PETROVIĆ PAJA
+PETROVIĆ PANTELIJA
+PETROVIĆ PERSIDA
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETRIJA
+PETROVIĆ PLAMENKA
+PETROVIĆ-POPADIĆ MILAN
+PETROVIĆ PREDRAG
+PETROVIĆ PRVOSLAV
+PETROVIĆ RADA
+PETROVIĆ RADE
+PETROVIĆ RADIŠA DIPL ING
+PETROVIĆ RADIŠA
+PETROVIĆ RADIŠA
+PETROVIĆ RADIVOJE
+PETROVIĆ RADIVOJ
+PETROVIĆ RADIVOJ
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADOJKA
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOSAV
+PETROVIĆ RADOSLAV
+PETROVIĆ RADOSLAV
+PETROVIĆ RAJKO
+PETROVIĆ RAJKO
+PETROVIĆ RANKO
+PETROVIĆ RANKO
+PETROVIĆ RATKO
+PETROVIĆ RATKO
+PETROVIĆ RATOMIR
+PETROVIĆ RISTO
+PETROVIĆ RODOLJUB
+PETROVIĆ ROSA
+PETROVIĆ RUŽA
+PETROVIĆ RUŽICA
+PETROVIĆ RUZMARINKA
+PETROVIĆ SAVAN
+PETROVIĆ SAVA
+PETROVIĆ SAVA
+PETROVIĆ SAVA
+PETROVIĆ SIMA
+PETROVIĆ SIMEUN
+PETROVIĆ SIMO
+PETROVIĆ SINIŠA
+PETROVIĆ SLAVICA
+PETROVIĆ SLAVKA
+PETROVIĆ SLAVKA
+PETROVIĆ SLAVKO
+PETROVIĆ SLAVKO
+PETROVIĆ SLOBODAN DIPL ING
+PETROVIĆ SLOBODAN DIPL ING
+PETROVIĆ SLOBODAN DR
+PETROVIĆ SLOBODANKA
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SMILJA
+PETROVIĆ SNEŽANA
+PETROVIĆ SOFIJA
+PETROVIĆ SPASE
+PETROVIĆ SPASOJE
+PETROVIĆ SPOMENKA
+PETROVIĆ SRĐAN
+PETROVIĆ STAMENKO
+PETROVIĆ STANIŠA
+PETROVIĆ STANISLAV
+PETROVIĆ STEVAN DIPL ING
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STOJADIN
+PETROVIĆ STOJAN
+PETROVIĆ STOJAN
+PETROVIĆ STOJKA
+PETROVIĆ SUZANA DR
+PETROVIĆ SUZANA
+PETROVIĆ SVETISLAV
+PETROVIĆ SVETKO
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ TATJANA
+PETROVIĆ TIBOR
+PETROVIĆ TINKA
+PETROVIĆ TODORKA
+PETROVIĆ TOMISLAV
+PETROVIĆ UROŠ
+PETROVIĆ UROŠ
+PETROVIĆ VASA
+PETROVIĆ VASILIJE
+PETROVIĆ VELIBOR
+PETROVIĆ VELIBOR
+PETROVIĆ VELIBOR
+PETROVIĆ VELIMIR
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERICA
+PETROVIĆ VESELA
+PETROVIĆ VESELIN
+PETROVIĆ VESNA
+PETROVIĆ VIŠNJA
+PETROVIĆ VIDA
+PETROVIĆ VLADA
+PETROVIĆ VLADE
+PETROVIĆ VLADIMIR
+PETROVIĆ VLADIMIR
+PETROVIĆ VLADISLAVA
+PETROVIĆ VLASTIMIR
+PETROVIĆ VOJIN
+PETROVIĆ VOJIN
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJKA
+PETROVIĆ VUKAŠIN
+PETROVIĆ VUKICA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZDENKO
+PETROVIĆ ZDENKO
+PETROVIĆ ZLATAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORA
+PETROVIĆ ZORA
+PETROVIĆ ZORICA
+PETROVIĆ ZORICA
+PETROVIĆ ZORICA
+PETROVIĆ ZORKA
+PETROVSKI BORIS
+PETROVSKI DIMITRIJE
+PETROVSKI EVA
+PETROVSKI FIDANČO
+PETROVSKI HELENA
+PETROVSKI MILADIN
+PETROVSKI MILAN
+PETROVSKI MILODARKA
+PETROVSKI PETAR
+PETROVSKI SLAVKA
+PETRUŠEVIĆ MOMČILO
+PETRUŠEVSKI MOMČILO
+PETRUŠEVSKI NADA
+PETRUŠIĆ-PARIPOVIĆ OLGA
+PETRUŠIĆ VASILJ
+PETRULJESKOV DRAGAN
+PETRULJESKOV DRAGAN
+PEULIĆ LJUBOMIR
+PEULIĆ MIRJANA
+PEULJA VOJIN
+PEURAČA DRAGAN
+PEURAČA MILE
+PEVAČ STJEPAN
+PEVIĆ ERŽEBET
+PEZDEVŠEK JANEZ
+PEZDEVŠEK KARL
+PEZEROVIĆ VELIMIR
+PFAJFER ALEKSANDAR
+PFAJFER ATILA
+PFAJFER PETAR
+PFAJFERT ALEKSANDAR
+PFAU JOVANKA
+PFUNŠTAJN JOSIP
+PIŠKORIĆ IVAN
+PIŠPEK MARTA
+PIŠTALOVIĆ MIHAJLO
+PIŠTALOVIĆ MIRKO
+PIĆURIĆ ŽIVKO
+PIĆURIĆ MIKO
+PIŽURICA MATO
+PIGL ANA
+PIGL IMRE
+PIHAJLIĆ BLAŽ
+PIHLER JOSIP
+PIHLER STANKO DR
+PIHLER TODOR
+PIJANIĆ DANIJEL
+PIJETLOVIĆ BRANO
+PIJETLOVIĆ JOVAN
+PIJUKOVIĆ ELZA
+PIJUKOVIĆ ILIJA
+PIKSIADES ONDREJ
+PIKSIJADES ANA
+PIKSIJADES PAVEL
+PIKSIJADES PAVLE
+PIKULA ĐORĐE
+PIKULA BRANKO
+PIL ANDRIJA
+PIL MIHAJLO
+PIL STEVAN
+PIL TEREZA
+PILAR MARICA
+PILC NANDOR
+PILC REŽE
+PILC ZOLTAN
+PILER KARLO
+PILIŠ ANA
+PILIŠ ANDRAŠ
+PILIŠ JOSIP
+PILIŠER ĐORĐE
+PILIĆ ŽARKO
+PILIĆ ANTON
+PILIĆ BORIVOJ
+PILIĆ BORO
+PILIĆ GAVRA
+PILIĆ JOVAN
+PILIĆ-KALENIĆ MILINKA
+PILIĆ LJILJA
+PILIĆ MILOŠ
+PILIĆ MILUTIN
+PILIĆ RANKO
+PILIĆ SLAVKO
+PILIĆ SRBOLJUB
+PILIĆ STANKO
+PILIĆ STEVAN
+PILIĆ VOJISLAV
+PILIPOV EVA
+PILIPOVIĆ ČEDA
+PILIPOVIĆ ŽIVKO
+PILIPOVIĆ ĐORĐE
+PILIPOVIĆ ĐURA
+PILIPOVIĆ ANĐA
+PILIPOVIĆ BOŠKO
+PILIPOVIĆ BOŽIDAR
+PILIPOVIĆ BRANKO
+PILIPOVIĆ CVIJETA
+PILIPOVIĆ CVIJETA
+PILIPOVIĆ DANE
+PILIPOVIĆ DANICA
+PILIPOVIĆ DANICA
+PILIPOVIĆ DRAGAN
+PILIPOVIĆ DRAGO
+PILIPOVIĆ GORAN
+PILIPOVIĆ JOLAN
+PILIPOVIĆ JOVAN
+PILIPOVIĆ LAZAR
+PILIPOVIĆ LJILJANA
+PILIPOVIĆ LJUBICA
+PILIPOVIĆ LJUBO
+PILIPOVIĆ MARIJA
+PILIPOVIĆ MIHAJLO
+PILIPOVIĆ MIHAJLO
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILENKO
+PILIPOVIĆ MILEVA
+PILIPOVIĆ MILOŠ
+PILIPOVIĆ MIRKO
+PILIPOVIĆ NIKOLA
+PILIPOVIĆ PETAR DIPL ING
+PILIPOVIĆ RADE
+PILIPOVIĆ RADE
+PILIPOVIĆ RADIVOJE
+PILIPOVIĆ RADOMIR
+PILIPOVIĆ SLAVKO
+PILIPOVIĆ SPOMENKO
+PILIPOVIĆ STANA
+PILIPOVIĆ STEVAN
+PILIPOVIĆ STEVAN
+PILIPOVIĆ STEVO
+PILIPOVIĆ VOJIN
+PILIPOVIĆ ZORICA
+PILIPOVIĆ ZVONKO
+PILJIĆ MARIJAN
+PILKO IRENA
+PILKO PAVLE
+PILOVIĆ DESIMIR
+PILOVIĆ DUŠANKA
+PILOVIĆ MILAN
+PINĆIR JAN
+PINĆIR VLADIMIR
+PINĆIR ZDENKO
+PINĆJER ONDREJ
+PINĆJER SAMUEL
+PINĆJER SAMUILO
+PINJUŠIĆ ILIJA
+PINJUH MIRJANA
+PINJUH PETAR
+PINTAČ FRANJO
+PINTAČ LADISLAV
+PINTAČ NIKOLA DIPL OEC
+PINTAČ VESNA
+PINTAĆ ĐORĐE
+PINTAĆ MARIJA
+PINTARIĆ JASNA
+PINTARIĆ JOVAN
+PINTER ADRIENE
+PINTER ALEKSANDAR
+PINTER ANDRAŠ
+PINTER BELA
+PINTER BELA
+PINTER FRANJA
+PINTER IMRE
+PINTER JANOŠ
+PINTER KAROLJ
+PINTER KATALIN
+PINTER LENKA
+PINTER LIVIJA
+PINTER MARIJA
+PINTER MIHALJ
+PINTER MIHALJ
+PINTER STEVAN
+PINTER TIBOR
+PINTER VERA
+PINTER VJEKOSLAV
+PIPER VELIBOR
+PIPERAC NADA
+PIPERKOV ANKA
+PIPERSKI ŽIVA
+PIPERSKI ANA
+PIPERSKI DRAGOMIR
+PIPERSKI KOSTA
+PIRC DANICA
+PIRI JANOŠ
+PIRI JOŽEF
+PIRI JOSIP
+PIRI JOSIP
+PIRIĆ IBRAHIM
+PIRIĆ OSMAN
+PIRIĆ ZORA
+PIRIVATRIĆ DUŠANKA
+PIRMAJER JOSIP
+PIROŠKI DRAGICA
+PIROŠKI JULIJANA
+PIROŠKI MIODRAG
+PIROŠKI VASA
+PIRTIĆ KSENIJA
+PIRTIĆ RADINKA
+PIRTIĆ SAVETA
+PIS EDITA
+PISAČIĆ VLADIMIR
+PISAR ŠANDOR
+PISAR DUŠAN
+PISAR JOŽEF
+PISAR LASLO
+PISAREV ĐORĐE
+PISAREV EMILIJA
+PISAREV KATICA
+PISAREV MILAN
+PISAREVIĆ ĐORĐE
+PISAREVIĆ MIRKO
+PISAREVIĆ MIRKO
+PISAREVIĆ MITAR
+PISAREVIĆ SPASENIJA
+PISARIĆ ĐURA
+PISARIĆ ĐURO
+PISARIĆ BLAŽO
+PISARIĆ BRANKO
+PISARIĆ DRAGAN
+PISARIĆ DRAGO
+PISARIĆ NEĐO
+PISARIĆ OSTOJA
+PISARIĆ OSTOJA
+PISARIĆ PAVLE
+PISARIĆ VLADO
+PISAROV ĐORĐE
+PISAROV KATICA
+PISAROV VASA
+PITA MAHMUT
+PITA MAHMUT
+PITOMAČIĆ STOJANKA
+PITOMAČIĆ VLADA
+PITUK NADA
+PIUKOVIĆ IVAN
+PIUKOVIĆ MAGDA
+PIVAČ BOSILJKA
+PIVAC DRAGOLJUB
+PIVAC MILORAD
+PIVAC MILOVAN
+PIVAC ZVONIMIR
+PIVARSKI BRANKA
+PIVARSKI DUŠAN
+PIVARSKI MIODRAG
+PIVARSKI RATOMIR
+PIVARSKI SLAVICA
+PIVARSKI STEVAN
+PIVARSKI VESELIN MR PH
+PIVNIČKI BOGDANKA
+PIVNIČKI BRANISLAV
+PIVNIČKI BRANISLAV
+PIVNIČKI BRANKA
+PIVNIČKI DRAGAN
+PIVNIČKI GORDANA
+PIVNIČKI IVANKA
+PIVNIČKI KATARINA
+PIVNIČKI MARIJA
+PIVNIČKI MILAN
+PIVNIČKI MILETA
+PIVNIČKI RADENKO
+PIVNIČKI RAJKO
+PIVNIČKI STOJKA
+PIVNIČKI SVETOZAR
+PJANIĆ MIHAJLO
+PJANIĆ RISTA
+PJEŠČIĆ BOGOLJUB
+PJEŠČIĆ LEPOSAVA
+PJEŠČIĆ MARIJA
+PJEŠČIĆ MILEVA
+PJEŠČIĆ NOVAK
+PJEŠIVAC ZDRAVKO
+PJETLOVIĆ DRAGICA
+PJEVAČ NIKOLA
+PJEVAC BRANKO
+PJEVAC DUŠAN
+PJEVAC STEVAN
+PJEVAC VLADIMIR
+PJEVAC ZORA
+PJEVALICA UROŠ
+PJEVIĆ ĐURAĐ
+PJEVIĆ BOŽO
+PJEVIĆ MIRKO DR
+PJEVIĆ MIROSLAVA DR
+PLAČKIĆ ŽARKO
+PLAČKIĆ BOŽIDAR
+PLAČKIĆ BRANKO
+PLAČKIĆ MELANIJA
+PLAČKIĆ SLAVKO
+PLAČKIĆ TOMISLAV
+PLAČKO STJEPAN
+PLAČKOV ŽIVKA
+PLAČKOV ĐORĐE
+PLAČKOV BORIVOJ
+PLAČKOV BRANISLAV
+PLAČKOV BRANISLAV
+PLAČKOV BRANISLAV
+PLAČKOV BRANKA
+PLAČKOV DUŠAN
+PLAČKOV ILONKA
+PLAČKOV MILAN
+PLAČKOV MIROLJUB
+PLAČKOV PAJA
+PLAČKOV PERA
+PLAČKOV PETAR
+PLAČKOV RUDOLF
+PLAČKOV SAVA
+PLAČKOV SAVETA
+PLAČKOV SIMA
+PLAČKOV STANIMIR
+PLAČKOV STEVAN
+PLAČKOV STEVA
+PLAČKOV STOJAN
+PLAČKOV SVETOZAR
+PLAČKOV VUKOSAVA
+PLAČKOVIĆ MILAN
+PLAČKOVIĆ PAJA
+PLAC EDO
+PLAKALOVIĆ MILADIN
+PLANČAK AMALIJA
+PLANČAK EUFEMIJA
+PLANČAK EUGEN
+PLANČAK JOVAN
+PLANČAK MIHAJLO
+PLANČAK MIROSLAV DR PROF
+PLANIĆ RADOVAN
+PLANIĆ ZDENKA
+PLANINČIĆ MINA
+PLANINČIĆ VESELIN
+PLANJANIN RADOMIR
+PLANOJEVIĆ MILUTIN DR
+PLANOVIĆ VESNA
+PLATIŠA MILAN
+PLATIŠA MIODRAG
+PLAVŠIĆ ANĐA
+PLAVŠIĆ ANICA
+PLAVŠIĆ ANICA
+PLAVŠIĆ ANKA
+PLAVŠIĆ BOŠKO
+PLAVŠIĆ BOŽA
+PLAVŠIĆ BOŽA
+PLAVŠIĆ BOŽIDAR
+PLAVŠIĆ BOGOMIR
+PLAVŠIĆ BORISLAV
+PLAVŠIĆ BRANISLAV
+PLAVŠIĆ BRANKO
+PLAVŠIĆ BRANKO
+PLAVŠIĆ BRANKO
+PLAVŠIĆ CVIJO
+PLAVŠIĆ DRAGAN
+PLAVŠIĆ DUŠAN
+PLAVŠIĆ DUŠICA
+PLAVŠIĆ GORDANA
+PLAVŠIĆ JELISAVETA
+PLAVŠIĆ JOVANKA
+PLAVŠIĆ JOVAN
+PLAVŠIĆ JOVAN
+PLAVŠIĆ JOVICA
+PLAVŠIĆ KATARINA
+PLAVŠIĆ KRSTA
+PLAVŠIĆ LAZAR
+PLAVŠIĆ LJILJANA
+PLAVŠIĆ LJUBICA
+PLAVŠIĆ LJUBICA
+PLAVŠIĆ LJUBINKA
+PLAVŠIĆ LJUBOMIR
+PLAVŠIĆ LUKA
+PLAVŠIĆ MARIJA
+PLAVŠIĆ MARINKO
+PLAVŠIĆ MARINKO
+PLAVŠIĆ MILENKO
+PLAVŠIĆ MILENKO
+PLAVŠIĆ MILICA
+PLAVŠIĆ MILICA
+PLAVŠIĆ MILINKA
+PLAVŠIĆ MILOŠ
+PLAVŠIĆ MILOMIR
+PLAVŠIĆ MIODRAG
+PLAVŠIĆ MIRKO
+PLAVŠIĆ MIRKO
+PLAVŠIĆ MIROSLAV DR LEKAR
+PLAVŠIĆ MITAR
+PLAVŠIĆ MITA
+PLAVŠIĆ MOMČILO
+PLAVŠIĆ MOMIR
+PLAVŠIĆ NERA
+PLAVŠIĆ NIKOLA
+PLAVŠIĆ NOVKA
+PLAVŠIĆ PAVA
+PLAVŠIĆ PETAR
+PLAVŠIĆ PETAR
+PLAVŠIĆ RADE
+PLAVŠIĆ RADMILA
+PLAVŠIĆ RADOVAN
+PLAVŠIĆ RADOVAN
+PLAVŠIĆ RANKO
+PLAVŠIĆ RANKO
+PLAVŠIĆ SIMA
+PLAVŠIĆ SLOBODAN
+PLAVŠIĆ SLOBODAN
+PLAVŠIĆ STEVAN
+PLAVŠIĆ STEVAN
+PLAVŠIĆ STEVO
+PLAVŠIĆ TODE
+PLAVŠIĆ TODOR
+PLAVŠIĆ VINKO
+PLAVŠIĆ VITOMIR
+PLAVŠIĆ VLADA
+PLAVŠIĆ VOJIN
+PLAVŠIĆ VOJIN
+PLAVŠIĆ VUKOSAVA
+PLAVŠIĆ ZORKA
+PLAVŠIN DUŠAN
+PLAVŠIN MILICA
+PLAVŠIN STEVAN
+PLAVAC ŽELJKO
+PLAVAC DUŠAN
+PLAVAC JANKO
+PLAVC AHMET
+PLAVC BAJRUŠ
+PLAVLJANIN ŽIVKO
+PLAZAČIĆ VIDOJE
+PLAZINA PUNIŠA
+PLEŠA JOSIP
+PLEŠE GORAN
+PLEŠKO ANICA
+PLEŠTIĆ DIMITRIJE
+PLEŠTIĆ MIRJANA
+PLEĆAŠ DANILO
+PLEĆAŠ ILIJA
+PLEĆAŠ KATICA
+PLEĆAŠ MILEVA
+PLEĆAŠ RADE
+PLEĆAŠ ROZALIJA
+PLEMIĆ ĐURO
+PLEMIĆ DANE
+PLEMIĆ MILAN
+PLESKONJA MILOJICA
+PLESKONJIĆ AMALIJA
+PLESKOVIĆ ANTUN
+PLESKOVIĆ NIKOLA
+PLESKOVIĆ ZDRAVKO
+PLETEL KSENIJA
+PLETEL MILAN
+PLETIKAPIĆ DRAGAN
+PLETIKOSIĆ LJERKA
+PLETIKOSIĆ PETAR
+PLETL OTILIJA
+PLISNIĆ MILICA
+PLISNIĆ MILORAD
+PLIVAR JOVAN
+PLJUCO BRANKO
+PLOH DRAGO
+PLOH FRANJA
+PLOJ MARIJA
+PLOS MIODRAG
+PLUŽAREV LAZAR
+PLUŽAREV OLIVERA DR
+PLUŽAROV MILENKO
+PLUKAVEC IVAN
+PLZAK DRAGOSLAV
+POČANIĆ TRIPO
+POČEK BRANISLAV
+POČEK BRANKO
+POČEK LJILJANA
+POČEK MILOVAN
+POČEK VLADA
+POČEK VLADISLAV
+POČEK VLADISLAV
+POČETAK MILENKO
+POČETAK MILICA
+POČUČA DMITAR
+POČUČA DUŠAN
+POČUČA JOVANKA
+POČUČA PETAR
+POČUČA RADMILA
+POŠČIĆ ERIKA
+POŠA ĐURA
+POŠA ANDRAŠ
+POŠA DRAGICA
+POŠA IŠTVAN
+POŠA KARLO
+POŠA PETAR
+POŠA ROZALIJA
+POŠA SNEŽANA
+POŠARAC DUŠKO
+POŠARAC ZORAN
+POŠTA NIKOLA
+POŠTIĆ ĐORĐE DR
+POŠTIĆ DRAGAN
+POŠTIĆ MILAN
+POŠTIĆ SLOBODANKA
+POŠTIĆ SOFIJA
+POŠTIĆ SRĐAN DIPL ING
+POŠTOŠ VERA
+POŽAR MILICA
+POŽAREV ĐORĐE
+POŽAREV ĐORĐE
+POŽAREV ALEKSANDAR
+POŽAREV ANĐELKA
+POŽAREV DORA
+POŽAREV JELENA
+POŽAREV RADE
+POŽAREV RATOMIRKA
+POŽAREV RATOMIR
+POŽAREV STEVAN
+POŽAREV VESELIN
+POŽEGA MILE
+POŽEGA SOFIJA
+POŽEGA STEVAN
+POŽGAJ ANTUN
+POŽGAJ TOMISLAV
+POBOR JELENA
+POBOR SRETO
+POBRAN STEVAN
+POBRAN VLADIMIR
+POBRIĆ ISAK
+POBUĆANOVIĆ-KULJANKIĆ ŠUHRETA
+POBUĐANOVIĆ ILINKA
+POBUĐANOVIĆ MUHAREM
+POBUĐANOVIĆ SVETLANA
+POCAJT VIKTOR
+POCMAN ANTUN
+POCMAN VILIM
+POCRNIĆ MILE
+POCRNIĆ NIKOLA
+PODGORNIK MILAN
+PODGORNIK RAJNA
+PODLIPEC MARIJA
+PODMAJORSKI MARA
+PODOBNIK JASNA
+PODOLA JUSTINA
+PODRAŠČANIN JOVAN
+PODRAŠČANIN NADA
+PODRAŠČANIN VOJA
+PODRAVAC BRANKO
+POGANČEV GORAN
+POGANČEV GORAN
+POGANJ JULIJANA
+POGUBEROVIĆ JOVAN
+POJBIĆ DUŠAN
+POJE JOSIP
+POJIĆ BRANKO
+POKA JOSIP
+POKAS JOSIP
+POKRAJAC ANGELINA
+POKRAJAC JOVAN
+POKRAJAC JOVAN
+POKRAJAC MILAN
+POKRAJAC MILORAD
+POKRAJAC RADE
+POKRAJAC SLAVKO
+POKRIĆ VOJISLAV
+POKUŠEVSKI DOBRINKA
+POKUPEC MILAN
+POLAK JELENA
+POLAK JOŽEF
+POLAK STEVAN
+POLAKOVIĆ ERŽEBET
+POLAKOVIĆ JANOŠ
+POLANEC FRANJO
+POLE NIKOLA
+POLE NIKOLA
+POLEDICA DUŠANKA
+POLENDER SOFIJA
+POLERMAN BELA
+POLERMAN MILICA
+POLETANOVIĆ MARINKO
+POLETO DOMENIK
+POLETO IVAN
+POLGAR IŠTVAN
+POLIĆ ĐURA
+POLIĆ BOŠKO
+POLIĆ DANICA
+POLIĆ DRAGAN
+POLIĆ LJUBICA
+POLIĆ MARIJAN
+POLIĆ SLOBODAN
+POLIMAC ANĐELIJA
+POLIN ĐURA
+POLIN LASLO
+POLINSKI ARANKA
+POLJAČKI ALEKSANDAR
+POLJAČKI MILICA
+POLJAČKI MILICA
+POLJAČKI SVETOZAR
+POLJAK ĐERĐ
+POLJAK EVA
+POLJAK FRANJO
+POLJAK LASLO
+POLJAK MIŠA
+POLJAK MIHALJ
+POLJAK MILKA
+POLJAK MIODRAG
+POLJAK MIODRAG
+POLJAK NIKOLA
+POLJAK NIKOLA
+POLJAK PETAR
+POLJAK RANKO
+POLJAKOVIĆ STJEPAN
+POLJANSKI JOVICA
+POLJANSKI LJUBICA
+POLJANSKI STOJAN
+POLJIČAK ANTE
+POLJIČAK LJUBAN
+POLJIĆ REFIK
+POLJOVKA JAN
+POLJVAŠ JOŽEF
+POLOJAC LUKA
+POLOVIĆ KOSTA
+POLOVIĆ STEVO
+POLOVINA ĐORĐE
+POLOVINA DANIJEL
+POLOVINA ISA
+POLOVINA MILAN
+POLOVINA MILICA
+POLOVINA MILORAD
+POLOVINA NADA
+POLOVINA NIKOLA
+POLOVINA PLEMENKA
+POLOVINA RADIVOJE
+POLOVINA SLOBODAN
+POLOVINA STEVO
+POLOVINA TODOR
+POLOVINA VLADIMIR
+POLOVINA VLADO
+POLOVINSKI SAVA
+POLTURA ŽUŽANA
+POLTURA GABOR
+POLTURA IRENA
+POLTURA MIRKO
+POLUŽANSKI IVANKA
+POLUMIRAC MILICA
+POLUTA LINA
+POLVEREŽAN-OBŠUST ĆEĆILIJA
+POLZOVIĆ ALEKSANDAR
+POLZOVIĆ JOVAN
+POLZOVIĆ MIOMIR
+POLZOVIĆ MIROSLAV
+POLZOVIĆ RADOSLAV
+POMORIŠKI BRANISLAV
+PONGO ŽUŽANA
+PONGO JANOŠ
+PONGO LASLO
+PONGO STEVAN
+PONJARAC SAVO
+PONJAVIĆ GORDANA
+PONJAVIĆ RADISAV
+PONJAVIĆ SINIŠA
+PONJEVIĆ MOMČILO
+PONJEVIĆ PETAR
+PONJEVIĆ SPASAN
+PONJEVIĆ ZVEZDAN
+PONJIČAN HORISLAV
+PONJIČAN JAN
+PONJIČAN JOSIP
+PONJIGER ĐURA
+PONJIGER IVAN
+PONOĆKO ČEDOMIR
+PONORAC LAZAR
+POP-JOVANOV VERA
+POP ZDENKO
+POPĐURĐEV MILAN
+POPA SPASENIJA
+POPADIĆ ŽIVAN
+POPADIĆ ŽIVA
+POPADIĆ ŽIVKO
+POPADIĆ ĐOKO
+POPADIĆ ĐUKA
+POPADIĆ BRANKA
+POPADIĆ GOJKO
+POPADIĆ ISIDOR
+POPADIĆ-JANUZOVIĆ RADMILA
+POPADIĆ LJILJANA
+POPADIĆ LJUBICA
+POPADIĆ LJUBO
+POPADIĆ MILAN
+POPADIĆ MILENKO
+POPADIĆ MILENKO
+POPADIĆ MILENKO
+POPADIĆ MIODRAG
+POPADIĆ NEDELJKO
+POPADIĆ NEGOVAN
+POPADIĆ NIKOLA
+POPADIĆ NOVAK
+POPADIĆ PETKO
+POPADIĆ PREDRAG
+POPADIĆ RADMILA
+POPADIĆ RADMILA
+POPADIĆ RATOMIR
+POPADIĆ SILVIJA
+POPADIĆ SLAVKO
+POPADIĆ SLAVOLJUB
+POPADIĆ STANA
+POPADIĆ STOJICA
+POPADIĆ SVETLANA
+POPADIĆ TIHOMIR
+POPADIĆ VERA
+POPADIĆ VOJISLAV ADVOKAT
+POPADIĆ VOJISLAV
+POPARA ALEKSANDAR
+POPARA ILIJA
+POPARA LJUBIŠA
+POPARA TADIJA
+POPARA ZORAN
+POPARIĆ ŽIVOJIN
+POPARIĆ ISIDOR
+POPARIĆ MARICA
+POPARIĆ NENAD
+POPDANKOV JUDITA
+POPEJKOV BORISLAV
+POPEJKOV LJILJANA
+POPEJKOV MARA
+POPENGOV VASA
+POPESKU RUŽA
+POPGLIGORIN PAVLE
+POPIĆ ŽELJKO
+POPIĆ ALEKSANDAR
+POPIĆ ANĐELKO
+POPIĆ BRANKO
+POPIĆ BUDIMIR
+POPIĆ DRAGAN
+POPIĆ DUŠAN
+POPIĆ DUŠAN
+POPIĆ DUŠAN
+POPIĆ EDITA
+POPIĆ GORDANA
+POPIĆ JELISAVETA
+POPIĆ KATICA
+POPIĆ LJILJANA
+POPIĆ LUKA
+POPIĆ MILAN
+POPIĆ MILAN
+POPIĆ MILAN
+POPIĆ MILICA
+POPIĆ MILIVOJ
+POPIĆ MIRA
+POPIĆ MIRA
+POPIĆ MIRJANA
+POPIĆ NADA
+POPIĆ-PALJIĆ FEODORA
+POPIĆ RADIVOJ
+POPIĆ SAVA
+POPIĆ SAVO
+POPIĆ SNEŽANA
+POPIĆ SOFIJA
+POPIĆ SOFIJA
+POPIĆ SVETOZAR
+POPIĆ TOMA
+POPIĆ VUKICA
+POPIĆ ZORA
+POPIN IVAN
+POPIN RADIVOJ
+POPIN VITOMIR
+POPIN VLADIMIR
+POPIVODA BOŽIDAR
+POPIVODA MILOVAN
+POPIVODA MILUTIN
+POPIVODA NEDELJKO
+POPIVODA PETAR
+POPIVODA RADISLAV
+POPMIHAJLOV DIMITRIJE
+POPMIHAJLOV DUŠAN
+POPNOVAKOV DRAGOMIR
+POPNOVAKOV MILAN
+POPNOVAKOV MILICA
+POPOV ČEDOMIR
+POPOV ŽARKO
+POPOV ŽARKO
+POPOV-ŽIKELIĆ ZORA
+POPOV ŽIVKA
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ĐOKA
+POPOV ĐOKA
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐURĐINA
+POPOV ĐURA
+POPOV ĐURA
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ANĐA
+POPOV ANDON
+POPOV ANKICA
+POPOV-BAŠA VERA
+POPOV BORIVOJ DIPL ING
+POPOV BRANISLAVA
+POPOV BRANISLAV
+POPOV BRANISLAV
+POPOV BRANISLAV
+POPOV BRANKO
+POPOV BRANKO
+POPOV DANICA
+POPOV DANICA
+POPOV DANILO
+POPOV DANILO
+POPOV DARINKA
+POPOV DIMITRIJE
+POPOV DIMITRIJE
+POPOV DRAGANA
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGA
+POPOV DRAGIŠA
+POPOV DRAGICA
+POPOV-DRAGIN OLGA
+POPOV DRAGOLJUB
+POPOV DRAGOLJUB
+POPOV DRAGOLJUB
+POPOV DRAGOMIR
+POPOV DRAGOMIR
+POPOV DRAGOMIR
+POPOV DRAGOSLAVA
+POPOV DUŠAN DR
+POPOV DUŠAN
+POPOV DUŠAN
+POPOV DUŠAN
+POPOV DUŠKA
+POPOV GAVRA
+POPOV GORAN
+POPOV GORDANA DR
+POPOV GORDANA
+POPOV GORDANA
+POPOV ILONKA
+POPOV ISA
+POPOV IVANKA
+POPOV IVAN
+POPOV IVKA
+POPOV JELA
+POPOV JELA
+POPOV JELISAVETA
+POPOV JEZDIMIR
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JUGOSLAV
+POPOV JUG
+POPOV JULKA
+POPOV KATICA
+POPOV KATICA
+POPOV KOSA
+POPOV KOVINKA
+POPOV LAZAR
+POPOV LAZAR
+POPOV LAZAR
+POPOV LAZAR
+POPOV LENKA
+POPOV LJILJANA
+POPOV LJILJANA
+POPOV LJUBIŠA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBINKA
+POPOV LJUBOMIR
+POPOV MARA
+POPOV MARICA
+POPOV MARIJA
+POPOV MARIJA
+POPOV MARINKO
+POPOV MARKO
+POPOV MARKO
+POPOV MARKO
+POPOV MILADIN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILENA
+POPOV MILENA
+POPOV MILENKO
+POPOV MILICA
+POPOV MILICA
+POPOV MILICA
+POPOV MILICA
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILKA
+POPOV MILOŠ
+POPOV MILOŠ
+POPOV MILOJE
+POPOV MILORAD
+POPOV MILOVAN
+POPOV MILOVAN
+POPOV MILUTIN
+POPOV MIRJANA
+POPOV MIRJANA
+POPOV MIRJAN
+POPOV MIROSLAV
+POPOV MITA
+POPOV MOMČILO
+POPOV NEDELJKO
+POPOV NENATKA
+POPOV NIKOLA
+POPOV NINA
+POPOV NINOSLAV DIPL ING
+POPOV NOVAK
+POPOV OBRAD
+POPOV-OBROVAČKI SOFIJA
+POPOV OLGA
+POPOV PAJA
+POPOV PAVLE
+POPOV PAVLE
+POPOV PAVLE
+POPOV PERA
+POPOV PETAR
+POPOV PETAR
+POPOV PLATON
+POPOV PREDRAG
+POPOV RADIVOJE
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADMILA
+POPOV RADOJKA
+POPOV RADOVAN DIPL ING
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RATOMIR
+POPOV RELJA
+POPOV RODOLJUB
+POPOV SAVA
+POPOV SAVA
+POPOV SAVA
+POPOV SAVA
+POPOV SAVETA
+POPOV SEKULA
+POPOV SINIŠA
+POPOV SLAVICA
+POPOV SLAVKO
+POPOV SLAVKO
+POPOV SLAVKO
+POPOV SLOBODAN
+POPOV SLOBODAN
+POPOV SNEŽANA
+POPOV SOFIJA
+POPOV SPASOJE
+POPOV SREDOJE
+POPOV STANA
+POPOV STEVAN DIPL ING
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVA
+POPOV STEVICA
+POPOV STOJANKA
+POPOV SVETLANA
+POPOV SVETOZAR
+POPOV SVETOZAR
+POPOV TATOMIR
+POPOV TODOR
+POPOV TRIVA
+POPOV UROŠ
+POPOV VASILIJE
+POPOV VASILIJE
+POPOV VASILIJE
+POPOV VERA
+POPOV VERA
+POPOV VERA
+POPOV VERICA
+POPOV VESELIN
+POPOV VLADIMIR
+POPOV VLADIMIR
+POPOV VOJIN
+POPOV VOJISLAV
+POPOV VUKOSAVA
+POPOV ZLATA
+POPOV ZLATICA
+POPOV ZORKA
+POPOVIĆ ČASLAV DIPL PRAVNIK
+POPOVIĆ ČEDOMIR DIPL ING
+POPOVIĆ ČEDOMIR
+POPOVIĆ ČEDOMIR
+POPOVIĆ ČEDOMIR
+POPOVIĆ-ČEJOVIĆ PAVLE
+POPOVIĆ ŠĆEPAN
+POPOVIĆ ŽARKO
+POPOVIĆ ŽARKO
+POPOVIĆ ŽARKO
+POPOVIĆ ŽELJKO
+POPOVIĆ ŽIVAN
+POPOVIĆ ŽIVAN
+POPOVIĆ ŽIVKO
+POPOVIĆ ŽIVORAD
+POPOVIĆ ŽUŽANA
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐIJE
+POPOVIĆ ĐURĐINA
+POPOVIĆ ĐURĐINA
+POPOVIĆ ĐURA
+POPOVIĆ ĐURICA
+POPOVIĆ ĐURO
+POPOVIĆ ĐURO
+POPOVIĆ AKSENTIJE
+POPOVIĆ ALEKSANDAR DR PRAVNIK
+POPOVIĆ ALEKSANDAR DR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ANĐELKA
+POPOVIĆ ANĐELKA
+POPOVIĆ ANĐEL
+POPOVIĆ ANA
+POPOVIĆ ANA
+POPOVIĆ ANGELINA
+POPOVIĆ ANGELINA
+POPOVIĆ ANGELINA
+POPOVIĆ ANICA
+POPOVIĆ BLAGOJE
+POPOVIĆ BOŽA
+POPOVIĆ BOŽIDAR
+POPOVIĆ BOGDAN
+POPOVIĆ BOGDAN
+POPOVIĆ BOGOLJUB
+POPOVIĆ BOJAN
+POPOVIĆ BORISLAVA
+POPOVIĆ BORISLAV
+POPOVIĆ BORJAN
+POPOVIĆ BORKA
+POPOVIĆ BOSILJKA
+POPOVIĆ BRANISLAV DR
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANIVOJ
+POPOVIĆ BRANIVOJ
+POPOVIĆ BRANKA
+POPOVIĆ BRANKO
+POPOVIĆ BRANKO
+POPOVIĆ BRANKO
+POPOVIĆ CVEJA
+POPOVIĆ DANČIKA
+POPOVIĆ DANE
+POPOVIĆ DANE
+POPOVIĆ DANICA
+POPOVIĆ DANICA
+POPOVIĆ DANILO
+POPOVIĆ DANKICA
+POPOVIĆ DARINKA
+POPOVIĆ DEJAN
+POPOVIĆ DESANKA
+POPOVIĆ DESA
+POPOVIĆ DIMITRIJE
+POPOVIĆ DIMITRIJE
+POPOVIĆ DIMITRIJE
+POPOVIĆ DOBRINKA
+POPOVIĆ DOBRINKA
+POPOVIĆ DOBRINKO
+POPOVIĆ DOBRIVOJ
+POPOVIĆ DRAGANA
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGIŠA DR
+POPOVIĆ DRAGIŠA
+POPOVIĆ DRAGINJA
+POPOVIĆ DRAGO DIPL ING
+POPOVIĆ DRAGOJLO
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOMIR
+POPOVIĆ DRAGOMIR
+POPOVIĆ DRAGO
+POPOVIĆ DRAGO
+POPOVIĆ DRAGO
+POPOVIĆ DRAGUTIN
+POPOVIĆ DUŠAN DR
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠICA
+POPOVIĆ DUŠKO DR
+POPOVIĆ EMIL
+POPOVIĆ FEODORA
+POPOVIĆ FEODOR
+POPOVIĆ GOJKO
+POPOVIĆ GORAN
+POPOVIĆ GORDANA
+POPOVIĆ ILE
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ IRINA
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ JADRANKA
+POPOVIĆ JANKO
+POPOVIĆ JASNA
+POPOVIĆ JEFTA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELISAVETA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVO
+POPOVIĆ KATARINA
+POPOVIĆ KATICA
+POPOVIĆ KATICA
+POPOVIĆ KATICA
+POPOVIĆ KONSTANTIN
+POPOVIĆ KOSTA DR
+POPOVIĆ KOSTADIN
+POPOVIĆ KOSTA
+POPOVIĆ KOSTA
+POPOVIĆ KRISTINA
+POPOVIĆ KRSTA
+POPOVIĆ KRSTO
+POPOVIĆ KSENIJA
+POPOVIĆ LAZAR DR LEKAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LELA
+POPOVIĆ LEPOSAVA
+POPOVIĆ LJILJANA DR
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBISAV
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ MAKSIM
+POPOVIĆ MARA
+POPOVIĆ MARA
+POPOVIĆ MARIJA DR
+POPOVIĆ MARIJANA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARINKO
+POPOVIĆ MARKO DR LEKAR
+POPOVIĆ MARKO MR ING
+POPOVIĆ MARKO
+POPOVIĆ MARKO
+POPOVIĆ MARTA
+POPOVIĆ MELANIJA
+POPOVIĆ MIHAILO
+POPOVIĆ MIHAJLO DR
+POPOVIĆ MIHAJLO
+POPOVIĆ MILANA
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILA
+POPOVIĆ MILENA
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILETA DIPL ING
+POPOVIĆ MILE
+POPOVIĆ MILICA
+POPOVIĆ MILICA
+POPOVIĆ MILIJAN DR
+POPOVIĆ MILINKO
+POPOVIĆ MILIVOJE
+POPOVIĆ MILKA
+POPOVIĆ MILOŠ DIPL ING
+POPOVIĆ MILOŠ
+POPOVIĆ MILOŠ
+POPOVIĆ MILOŠ
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILOSAVA
+POPOVIĆ MILOSAV
+POPOVIĆ MILOVAN
+POPOVIĆ MILUTIN
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIRA
+POPOVIĆ MIRA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIROLJUB
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MITAR
+POPOVIĆ MITAR
+POPOVIĆ MLADEN
+POPOVIĆ MLADINKO
+POPOVIĆ MOMČILO
+POPOVIĆ MOMČILO
+POPOVIĆ MOMČILO
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADEŽDA
+POPOVIĆ NADEŽDA
+POPOVIĆ NADEŽDA
+POPOVIĆ NATALIJA
+POPOVIĆ NEĐO
+POPOVIĆ NEBOJŠA
+POPOVIĆ NEDELJKO
+POPOVIĆ NEDELJKO
+POPOVIĆ NENAD
+POPOVIĆ NENAD
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NOVAK
+POPOVIĆ NOVAK
+POPOVIĆ OBRAD
+POPOVIĆ OBRAD
+POPOVIĆ OLGA
+POPOVIĆ OLGA
+POPOVIĆ OLGA
+POPOVIĆ PAJA
+POPOVIĆ PAVLE DIPL PRAVNIK
+POPOVIĆ PAVLE
+POPOVIĆ PAVLE
+POPOVIĆ PAVLE
+POPOVIĆ PERA
+POPOVIĆ PERICA
+POPOVIĆ PERO
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ RADA
+POPOVIĆ RADENKO
+POPOVIĆ RADE
+POPOVIĆ RADE
+POPOVIĆ RADE
+POPOVIĆ RADINKA
+POPOVIĆ RADIVOJE
+POPOVIĆ RADIVOJ
+POPOVIĆ RADIVOJ
+POPOVIĆ RADMILA
+POPOVIĆ RADMILA
+POPOVIĆ RADOICA
+POPOVIĆ RADOICA
+POPOVIĆ RADOJICA
+POPOVIĆ RADOJKA
+POPOVIĆ RADOJKA
+POPOVIĆ RADOMIR
+POPOVIĆ RADOSAV
+POPOVIĆ RADOSAV
+POPOVIĆ RADOSLAV
+POPOVIĆ RADOVANKA
+POPOVIĆ RADOVANKA
+POPOVIĆ RADOVAN
+POPOVIĆ RADUL
+POPOVIĆ RAJKO
+POPOVIĆ RANKO
+POPOVIĆ RATKO
+POPOVIĆ RAVIJOJLA
+POPOVIĆ RELJA DR
+POPOVIĆ RODOLJUB
+POPOVIĆ SANJA
+POPOVIĆ SAVA DIPL ING
+POPOVIĆ SAVA DIPL ING
+POPOVIĆ SAVA
+POPOVIĆ SAVA
+POPOVIĆ SAVA
+POPOVIĆ SAVO
+POPOVIĆ SEKULA
+POPOVIĆ SINIŠA DR LEKAR
+POPOVIĆ SLAVICA
+POPOVIĆ SLAVKO DIPL OEC
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVOLJUB
+POPOVIĆ SLAVOLJUB
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SMILJANA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SONJA
+POPOVIĆ SPASOJE
+POPOVIĆ STANIMIR
+POPOVIĆ STANIMIR
+POPOVIĆ STANKO
+POPOVIĆ STANKO
+POPOVIĆ STANKO
+POPOVIĆ STEVAN DR
+POPOVIĆ STEVAN
+POPOVIĆ STEVAN
+POPOVIĆ STEVAN
+POPOVIĆ STEVKA
+POPOVIĆ STEVO
+POPOVIĆ STOJAN
+POPOVIĆ SVETISLAV
+POPOVIĆ SVETLANA
+POPOVIĆ SVETOZAR
+POPOVIĆ TEODOR
+POPOVIĆ TEREZA
+POPOVIĆ TODOR
+POPOVIĆ TOMISLAV
+POPOVIĆ TOMO
+POPOVIĆ UGLJEŠA
+POPOVIĆ VASILIJE
+POPOVIĆ VASILIJE
+POPOVIĆ VELIMIR
+POPOVIĆ VELIZAR
+POPOVIĆ VELJKO
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERICA
+POPOVIĆ VESELIN
+POPOVIĆ VIDOJE
+POPOVIĆ VIDOSAVA
+POPOVIĆ VIKTORIJA
+POPOVIĆ VLADAN
+POPOVIĆ VLADIMIR DR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADISLAV
+POPOVIĆ VLADO
+POPOVIĆ VOJIN
+POPOVIĆ VOJIN
+POPOVIĆ VOJISLAV
+POPOVIĆ VUČINA
+POPOVIĆ VUČKO
+POPOVIĆ VUJADIN
+POPOVIĆ VUKADIN
+POPOVIĆ VUKADIN
+POPOVIĆ VUKOSAVA
+POPOVIĆ ZDENKO
+POPOVIĆ ZDRAVKA
+POPOVIĆ ZLATOJA
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORKA
+POPOVIĆ ZUZANA
+POPOVIĆ ZVONIMIR
+POPOVICKI ŽARKO
+POPOVICKI BORISLAV
+POPOVICKI JOVANKA
+POPOVICKI LJUBOMIR
+POPOVICKI MILENKO
+POPOVICKI MILENKO
+POPOVICKI MILICA
+POPOVICKI MILOŠ
+POPOVICKI PETAR
+POPOVICKI RADOMIR
+POPOVICKI RADOMIR
+POPOVICKI SALOMA
+POPOVICKI SVETISLAV
+POPOVICKI TATJANA
+POPOVICKI TEODOR
+POPOVICKI VLADISLAV
+POPOVICKI ZORAN
+POPOVSKI RADOJKA
+POPOVSKI VENKO
+POPRŽAN MILAN
+POPRŽAN NIKOLA
+POPRŽAN VALENTINA
+POPRŽEN BORIVOJ
+POPSAVIN DUŠAN
+POPSAVIN VELIMIR
+POPTEŠIN ĐORĐE
+POPTEŠIN LAZAR DIPL PRAVNIK
+POPTEŠIN MILADINKA
+POPTEŠIN STEVAN
+PORČA LJILJANA
+PORČA RAMIZ
+POROŠIN DRAGINJA
+POROŠIN GEORGIJE DR LEKAR
+POROBIĆ MILAN
+POROBIĆ MIROSLAV
+POROBIĆ MIROSLAV
+POROBIĆ NIJAZ
+POROBIĆ NIKOLA
+POROBIĆ SLOBODAN
+POROPAT BOŠKO
+POROPATIĆ ZORA
+POSAVAC VJEKOSLAV
+POSLAN IVAN
+POSTOLOVIĆ STANIMIR
+POT FRANJA
+POT JOSIP
+POT MIRKO DIPL ING
+POTAI LADISLAV
+POTH LJUDEVIT
+POTIĆ MARIJELA
+POTIĆ RADIVOJE
+POTIĆ RADOMIR
+POTKONJAK JOVAN
+POTKONJAK MARA
+POTKONJAK NIKOLA
+POTKONJAK PETAR
+POTKONJAK SOFIJA
+POTKONJAK STANKO
+POTKONJAK STEVO
+POTKONJAK VLADO
+POTKOZARAC JULIJANA
+POTNER TEREZIJA
+POTOKOVIĆ ABDULAH
+POTOKOVIĆ SMAJO
+POTPARIĆ JELICA
+POTRAN MIŠA
+POTREBIĆ ĐURO
+POTREBIĆ DOBRILA
+POTREBIĆ DRAGICA
+POTREBIĆ MILE
+POTREBIĆ MILE
+POTREBIĆ MILICA
+POTREBIĆ NIKOLA
+POTREBIĆ RADE
+POTREBIĆ SLAVKO
+POTREBIĆ SOFIJA
+POTURIĆ STEVA
+POUČKI RADISLAV
+POVA MIROSLAVA
+POVAŽAN ANDRIJA
+POVAŽAN MARIJA
+POVAZAI IŠTVAN
+POVAZAI TIBOR
+POVIĆ MILAN
+POVRŽAN SIMO
+POZDAN ĐURO
+POZDER VERONA
+POZDEREC FRANC
+POZNANOVIĆ DEJAN
+POZNANOVIĆ JELENA
+POZNANOVIĆ LJUBOMIR
+POZNANOVIĆ MILAN
+POZNANOVIĆ MILAN
+POZNANOVIĆ MILENKO
+POZNANOVIĆ OBRAD
+POZNANOVIĆ RADIVOJE
+POZNIĆ ĐURO
+POZNIĆ JOVO
+POZNIĆ MIRA
+POZNIĆ NIKOLA
+POZOJEVIĆ KLARA
+POZOJEVIĆ STEVAN
+PRČIĆ JELISAVETA
+PRČIĆ STJEPAN
+PRČIĆ TIHOMIR
+PRČIĆ VLADIMIR
+PRŠA MIROSLAV MR
+PRŠA VERA
+PRĆIĆ IVAN
+PRŽAR NADA
+PRŽEVALJSKI NIKOLA
+PRŽNICA MILANA
+PRŽNICA ZLATKO
+PRAŠČEVIĆ ANTONIJA
+PRAŠČEVIĆ ZORICA
+PRAŠTALO MILUTIN
+PRAŠTALO PETAR
+PRAŽIĆ BILJANA
+PRAŽIĆ BRANKO
+PRACNER JOSIP
+PRACNER RUŽICA
+PRALICA LJUBOMIR
+PRALICA NEDELJKO
+PRALICA STEVAN
+PRALICA STEVAN
+PRAMENKO MIROSLAV
+PRAMENKO NEDELJKO
+PRAMENKO RISTO
+PRAMENKO SRETO
+PRANIĆ KATICA
+PRANIĆ MIRKO
+PRANIĆ PETAR
+PRANIĆ TOFIL
+PRANJIĆ ZLATKO
+PRANJKIĆ MARKO
+PRANKIĆ MILE
+PRAVDA BORBALA
+PRAVDA LADISLAV
+PRAVDA LAJOŠ
+PRAVICA EVICA
+PRAVICA LJUBOMIR
+PRDIĆ NEDELJKO
+PREČANICA BOŽO
+PREŠERN JULIJANA
+PREŠOVA MIRJANA
+PREBEG DRAGAN
+PREBIRČEVIĆ NEVENA
+PREBIRAČEVIĆ KRISTINA
+PREBIRAČEVIĆ LAZO
+PREDA AUREL
+PREDIĆ MIHAJLO
+PREDIĆ RADOMIR
+PREDOJEVIĆ ŽELJKO
+PREDOJEVIĆ ANKA
+PREDOJEVIĆ BOŽO
+PREDOJEVIĆ BOŽO
+PREDOJEVIĆ BORISLAV
+PREDOJEVIĆ DANICA
+PREDOJEVIĆ DRAGICA
+PREDOJEVIĆ LJUBOMIR
+PREDOJEVIĆ LUKA
+PREDOJEVIĆ MILAN
+PREDOJEVIĆ MILE
+PREDOJEVIĆ MILICA
+PREDOJEVIĆ MILORAD
+PREDOJEVIĆ MILOVAN
+PREDOJEVIĆ MIRKO
+PREDOJEVIĆ NENAD
+PREDOJEVIĆ PAVLE
+PREDOJEVIĆ PREDRAG
+PREDOJEVIĆ RADOSLAVA
+PREDOJEVIĆ SIMA
+PREDOJEVIĆ SIMO
+PREDOJEVIĆ STOJAN
+PREDOJEVIĆ TRIVO
+PREDOJEVIĆ ZORA
+PREDOLAC DRAGOMIR
+PREDOVIĆ DUŠAN
+PREDRAŠKI DRAGOLJUB
+PREDRAGOVIĆ BORA
+PREDRAGOVIĆ DESIMIR
+PREDRAGOVIĆ MARIJA
+PREDRAGOVIĆ NOVAK
+PREDRAGOVIĆ VESELKO
+PREDRAGOVIĆ VESNA
+PREDRAGOVIĆ ZVEZDAN DIPL ING
+PREGUN ĐURA
+PREGUN NIKOLA
+PREGUN PETAR
+PREGUN STEVAN
+PREGUN ZORA
+PREKAJAC ŽIVOJIN
+PREKAJAC SLAVKO
+PREKAJSKI BRANKO
+PREKAJSKI MIRJAN
+PREKIĆ ANĐELKA
+PREKODRAVAC NEVENKA
+PREKOGAČIĆ ĐORĐE
+PREKOGAČIĆ DANICA
+PREKOGAČIĆ ILIJA
+PREKOGAČIĆ VERA
+PREKOP JOŽEF
+PREKOP RADOJKA
+PREKPALJAJ BIBA
+PREKPALJAJ KOLJA
+PREKPALJAJ MARTIN
+PREKPALJAJ PJETER
+PREL MARIJA
+PRELEVIĆ BORISLAV
+PRELEVIĆ MARKO
+PRELEVIĆ MILAN
+PRELEVIĆ MILOŠ
+PRELEVIĆ RADOMIR
+PRELEVIĆ SENKA
+PRELEVIĆ VASILIJE
+PRELIĆ MILOJKA
+PRELIĆ VASA
+PRELIĆ ZAGORKA
+PREMIĆ PETAR
+PREMIĆ VASA
+PREMOVIĆ DANICA
+PREMOVIĆ RADOMIR
+PREMOVIĆ TOMISLAV
+PREMUŠ FRANJA
+PREMUŽIĆ DAMIR
+PREMUŽIĆ MATO
+PREMUŽIĆ VLADIMIR
+PRENDOVIĆ PALJUŠ
+PRENTOVIĆ DRAGAN
+PRENTOVIĆ DRAGAN
+PRENTOVIĆ MILAN
+PRENTOVIĆ PAVLE
+PRENTOVIĆ PETAR
+PRENTOVIĆ RISTO
+PRENTOVIĆ VASO
+PRERAD DOBRILA
+PRERADOV DINKA
+PRERADOV DRAGICA
+PRERADOV DUBRAVKA
+PRERADOV GAVRA
+PRERADOV LAZAR
+PRERADOV LEPOSAVA
+PRERADOV MARIJA
+PRERADOV MIRJANA
+PRERADOV MIRJANA
+PRERADOV NEDELJKO
+PRERADOV PETAR
+PRERADOV SAVA
+PRERADOV VELIZAR
+PRERADOV VLADIMIR
+PRERADOVIĆ ANA
+PRERADOVIĆ BOJA
+PRERADOVIĆ MILENKO
+PRERADOVIĆ MLADEN
+PRERADOVIĆ NEDELJKO
+PRERADOVIĆ NEDELJKO
+PRESEČKOVIĆ VESNA
+PRETMERSKI JOVAN
+PRETMERSKI STEVAN
+PREVEDEN LEO
+PRGOMELJA NIKOLA
+PRIŠIĆ KATICA
+PRIŠIĆ LAZAR
+PRIŠIĆ LIDIJA
+PRIŠIĆ MILOŠ
+PRIŠIĆ MITA
+PRIŠIĆ NATALIJA
+PRIŠIĆ STEVAN
+PRIBAKOVIĆ KSENIJA
+PRIBAKOVIĆ MILANA
+PRIBAKOVIĆ NIKOLA
+PRIBANOVIĆ TOMISLAV
+PRIBIČEVIĆ ARSENIJE
+PRIBIČEVIĆ SAVKA
+PRIBIČEVIĆ SVETOZAR DR ING
+PRIBIŠ STEVAN
+PRIBIŠEV MIRJANA
+PRIBIŠIĆ LJUBO
+PRIBIŠIĆ MIROSLAV
+PRIBIŠIĆ RISTINJA
+PRIBIŠIĆ SAVO
+PRIBIĆ ARSENIJE
+PRIBIĆ DANILO
+PRIBIĆ DIMITRIJE
+PRIBIĆ MARIJA
+PRIBIĆ MILOJE
+PRIBIĆ SAVA
+PRIBIĆEVIĆ JOVO
+PRIBIĆEVIĆ OLGA
+PRIBIĆEVIĆ TATJANA
+PRIBILOVIĆ BRANKICA
+PRICA ŽIVKO
+PRICA ALEKSANDAR
+PRICA BORIVOJ
+PRICA BOSILJKA
+PRICA DANILO
+PRICA DUŠAN
+PRICA ISO
+PRICA JOVANKA
+PRICA MARKO
+PRICA MILE
+PRICA MLADEN
+PRICA PETAR
+PRICA SOFIJA
+PRIJEVIĆ ĐORĐE
+PRIJEVIĆ MILAN
+PRIJIĆ MILAN
+PRIJIĆ MIRSAD
+PRIJOVIĆ BOGDAN
+PRIJOVIĆ DRAGAN
+PRIJOVIĆ STANIŠA
+PRIKEL PETAR
+PRIKIDANOVIČ LASLO
+PRIKIDANOVIĆ ANA
+PRILJEVA BORISLAV
+PRIMORAC NIKOLA
+PRIMOVIĆ BLAGOJE
+PRIMOVIĆ DEJAN
+PRIMOVIĆ DOBRICA
+PRIMOVIĆ GORDANA
+PRIMOVIĆ KOVINKA
+PRIMOVIĆ MILAN
+PRIMOVIĆ STOJAN
+PRINCIP JOZO
+PRISELAC BORIS
+PRISELAC BRANKO
+PRISELAC ZDRAVKO
+PRISLAN ZVONIMIR
+PRISTAI LADISLAV
+PRIVRODSKI BORIS DR
+PRIVRODSKI KONSTANTIN
+PRKUŠIĆ ANICA
+PRKUŠIĆ SLAVKO
+PRLEVIĆ STOJAN
+PRLINAC VELJKO
+PRLJEVIĆ NADA
+PROČIKEVIĆ ANKA
+PROŠIĆ BOGDAN
+PROŠIĆ JOVAN
+PROŠIĆ NEĐO
+PROŠIĆ NEĐO
+PROŠIĆ NEBOJŠA
+PROŠIĆ NIKOLA
+PROŠIĆ PETAR
+PROŠIĆ SMILJA
+PROBOJČEVIĆ ANTUN
+PROBOJČEVIĆ ERNEST
+PROBOJČEVIĆ MARIJA
+PROBOJČIĆ BRANISLAVA
+PRODANA KRSTAN
+PRODANIĆ BORISLAV
+PRODANIĆ MILAN
+PRODANOV ANĐELKA
+PRODANOV BLAGOJA
+PRODANOV BORA
+PRODANOV DANILO
+PRODANOV DRAGOLJUB
+PRODANOV DRAGOLJUB
+PRODANOV DRAGOSLAV
+PRODANOV DUŠAN
+PRODANOV GORICA
+PRODANOV ILIJA
+PRODANOV JOVAN
+PRODANOV JUSTINA
+PRODANOV MILAN
+PRODANOV MILENA
+PRODANOV MILENKO
+PRODANOV MIODRAG
+PRODANOV MLADEN
+PRODANOV NEDELJKO
+PRODANOV RADOSLAV
+PRODANOV SAVA
+PRODANOV SLAVKA DR
+PRODANOV ZUZANA
+PRODANOVIĆ ŠPIRO
+PRODANOVIĆ ŽARKO
+PRODANOVIĆ ŽELJKO
+PRODANOVIĆ ŽIVAN
+PRODANOVIĆ ŽIVKA
+PRODANOVIĆ ŽIVKO
+PRODANOVIĆ ĐOKA
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐURO
+PRODANOVIĆ ALEKSANDAR
+PRODANOVIĆ ANĐELKO
+PRODANOVIĆ BILJANA
+PRODANOVIĆ BORISLAV
+PRODANOVIĆ BOSILJKA
+PRODANOVIĆ BRANIMIR
+PRODANOVIĆ DAMJAN
+PRODANOVIĆ DANICA
+PRODANOVIĆ DANICA
+PRODANOVIĆ DANILKA
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DUŠANKA
+PRODANOVIĆ DUŠAN
+PRODANOVIĆ DUŠAN
+PRODANOVIĆ DUŠICA
+PRODANOVIĆ GAVRA
+PRODANOVIĆ JOVANKA
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ KOSTA
+PRODANOVIĆ KOSTA
+PRODANOVIĆ LAZAR DIPL ING
+PRODANOVIĆ LJUBICA
+PRODANOVIĆ LJUBINKA
+PRODANOVIĆ LJUBOJA
+PRODANOVIĆ LJUBOMIR
+PRODANOVIĆ MARTA
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILICA
+PRODANOVIĆ MILJKO
+PRODANOVIĆ MILORAD
+PRODANOVIĆ MILOVAN
+PRODANOVIĆ MIODRAG
+PRODANOVIĆ MIODRAG
+PRODANOVIĆ MIRA
+PRODANOVIĆ MIRJANA
+PRODANOVIĆ MIROSLAV
+PRODANOVIĆ MLADEN
+PRODANOVIĆ NIKOLA
+PRODANOVIĆ-PANJKOVIĆ ĐURĐINKA
+PRODANOVIĆ PAVA
+PRODANOVIĆ PAVLE
+PRODANOVIĆ PETAR
+PRODANOVIĆ PETAR
+PRODANOVIĆ PETAR
+PRODANOVIĆ RADISAV
+PRODANOVIĆ RADOSLAV
+PRODANOVIĆ RATKO
+PRODANOVIĆ RODOLJUB
+PRODANOVIĆ SAVA
+PRODANOVIĆ SINIŠA
+PRODANOVIĆ SINIŠA
+PRODANOVIĆ SLAVKO
+PRODANOVIĆ SLOBODAN
+PRODANOVIĆ SLOBODAN
+PRODANOVIĆ STANA
+PRODANOVIĆ TANASIJE
+PRODANOVIĆ VASA
+PRODANOVIĆ VASA
+PRODANOVIĆ VELINKA
+PRODANOVIĆ VELJKO
+PRODANOVIĆ VERA DR
+PRODANOVIĆ VIDOSAVA
+PRODANOVIĆ VLADIMIR
+PRODANOVIĆ ZAGORKA
+PRODANOVIĆ ZAGORKA
+PRODANOVIĆ ZORAN
+PRODIĆ DANICA
+PRODIĆ VIDA
+PRODIĆ VITOMIR
+PRODIĆ VITOMIR
+PROFONTAROVIĆ ROZALIJA
+PROHASKA MILENKO
+PROHASKA NIKOLA
+PROHASKA STEVAN
+PROHASKA VERA
+PROJKOVSKI DESPA
+PROKEŠ BELA
+PROKEŠ LADISLAV
+PROKIĆ ĐORĐE
+PROKIĆ GORAN
+PROKIĆ MILAN
+PROKIĆ MIRA
+PROKIĆ RUŽICA
+PROKIĆ STEVAN
+PROKIĆ STEVAN
+PROKIĆ ZORAN
+PROKIĆ ZORAN
+PROKIN ANĐELKA
+PROKIN BRANISLAV
+PROKIN KSENIJA
+PROKIN LAZAR
+PROKIN MARKO
+PROKIN MIRA
+PROKIN RADIVOJ
+PROKIN RUŽICA
+PROKIN STEVAN
+PROKIN STEVAN
+PROKIN ZLATINKA
+PROKIN ZORA
+PROKOPEC DUŠAN
+PROKOPEC HELENA
+PROKOPEC JELISAVETA
+PROKOPEC STEVAN
+PROKOPIĆ ČEDO
+PROKOPIĆ MIHAJILO
+PROKOPIĆ STOJAN
+PROLE CVIJO
+PROLE JAGODA
+PROLE MELANIJA
+PROLE MILENKO
+PROLE MILIJANA
+PROLE MILOŠ
+PROLE MIRKO
+PROLE MIROSLAV
+PROLE MITAR
+PROLE MITAR
+PROLE MLADEN
+PROLE RADOVAN
+PROLE RISTA
+PROLE STANISLAV
+PROLE STANKO
+PROLE UGLJEŠA
+PROLE VELJKO
+PROLE VERONA
+PROLIĆ DRAGICA
+PROLIĆ MILORAD
+PROLIĆ PERO
+PROLIĆ VID
+PROSENICA MARKO
+PROSENICA VIDOSAVA
+PROSENIK DUBRAVKO
+PROSENIK ZVONIMIR
+PROSTRAN ČEDOMIR
+PROSTRAN PETAR
+PROTIĆ ŽARKO
+PROTIĆ ĐOKA
+PROTIĆ ĐORĐE
+PROTIĆ BOSILJKA
+PROTIĆ BRANISLAV
+PROTIĆ DRAGAN
+PROTIĆ DUŠAN
+PROTIĆ ILIJA DIPL ING
+PROTIĆ JOSIM
+PROTIĆ MARIJA
+PROTIĆ MILENA DR STOMATOLOG
+PROTIĆ MILKA
+PROTIĆ-MILOŠEVIĆ SIMKA PROF
+PROTIĆ MILOŠ
+PROTIĆ MILORAD
+PROTIĆ MIRJANA
+PROTIĆ MITAR
+PROTIĆ NADA
+PROTIĆ OBRAD
+PROTIĆ PREDRAG
+PROTIĆ PUNIŠA
+PROTIĆ RADOMIR
+PROTIĆ SAMUILO
+PROTIĆ SMILJA
+PROTIĆ VIDA
+PROTIĆ VITOMIR
+PROVČI AGAFIJA
+PROVČI EVGENIJE DIPL ING
+PROVČI JOVGEN
+PROVČI VERA
+PRPA ANĐA
+PRPA GOSPA
+PRPA LAZAR
+PRPA MARGITA
+PRPA MILOVAN
+PRPA VELJKO
+PRPA ZAGORKA
+PRPIĆ ALEKSANDAR
+PRPIĆ ALEKSANDAR
+PRPIĆ ALEKSANDAR
+PRPIĆ MARIJANA
+PRPIĆ NIKOLA
+PRPIĆ RADOVAN
+PRSKALO BLAGO
+PRSTOJEVIĆ GORAN
+PRSTOJEVIĆ VOJISLAV
+PRTINA BRANKO
+PRUŽAREV TATJANA
+PRUDAN-ĐURIŠIĆ RADOJKA DR
+PRUGIĆ LJUBOMIR
+PRUGIĆ VOJISLAV
+PRUGINIĆ LJUBICA
+PRUNIĆ JOVAN
+PRUSINA DRAGO
+PRUSINA ILIJA
+PRUSINA MARGITA
+PRUSINA MILAN
+PRUSINA VLATKO
+PRVANOV BRANISLAV
+PRVANOV DARINKA
+PRVANOV DIVNA
+PRVANOV MILOŠ
+PRVANOV VLADIMIR
+PRVANOVIĆ MILEVA
+PSODAROV BRANKO
+PSODOROV MAJA
+PSODOROV SPASOJE
+PSODOROV TAMARA
+PTIČAR ĐURA
+PTIČAR MILAN
+PUŠAC BRANKO
+PUŠAC JELENKO
+PUŠAC MILENA
+PUŠAC MILENA
+PUŠARA ĐORĐE
+PUŠARA BOŽIDAR
+PUŠARA DUŠAN
+PUŠARA JELENA
+PUŠARA MILIVOJ
+PUŠARA MIRKO
+PUŠARA MIROSLAV
+PUŠARA RADMILA
+PUŠELJIĆ JELENA
+PUŠENJAK MARIJA
+PUŠIĆ DRAGOLJUB
+PUŠIĆ DUŠAN
+PUŠIĆ EMIL
+PUŠIĆ GORAN
+PUŠIĆ JOVAN
+PUŠIĆ LJUBINKO
+PUŠIĆ MILENA
+PUŠIĆ MILICA
+PUŠIĆ MILIVOJ
+PUŠIĆ MILOŠ
+PUŠIĆ NIKOLA
+PUŠIĆ OBRAD
+PUŠIĆ PAVLE
+PUŠIĆ SAVA
+PUŠIĆ SAVA
+PUŠIĆ SOFIJA
+PUŠIĆ STEVAN
+PUŠIĆ VERICA
+PUŠIĆ VERICA
+PUŠIĆ ZAGORKA
+PUŠIBRK CVETKO
+PUŠIBRK VASA
+PUŠIN MIRJANA
+PUŠIN MIROSLAV
+PUŠIN MIROSLAV
+PUŠIN VLADA
+PUŠKAŠ ĐURA
+PUŠKAŠ ĐURA
+PUŠKAŠ CILA
+PUŠKAŠ JOŽEF
+PUŠKAŠ JOAKIM
+PUŠKAŠ JULIJAN
+PUŠKAŠ MIHAJLO
+PUŠKAŠ MILENA
+PUŠKAŠ MIROSLAV
+PUŠKAŠ OLENA
+PUŠKAŠ ONUFRIJE
+PUŠKAŠ PETAR
+PUŠKAŠ ROZALIJA
+PUŠKAŠ STEVAN
+PUŠKAŠ VERA
+PUŠKAŠ VLADIMIR
+PUŠKAŠ VLADIMIR
+PUŠKAR JOVICA
+PUŠKAR STEVA
+PUŠKAR VOJISLAV
+PUŠKAREVIĆ JOVANKA
+PUŠKAREVIĆ SVETISLAV
+PUŠKARIĆ ANA
+PUŠKARIĆ IVAN
+PUŠKARIĆ JURE
+PUŠKARIĆ MARIJA
+PUŠKAROV DANILKA
+PUŠKAROV DANILKA
+PUŠKAROV MILAN
+PUŠKAROV ZORA
+PUŠKOVIĆ ANĐELKO
+PUŠTRIĆ MILAN
+PUŠTRIĆ SPASOJE
+PUŽ-EVIĆ OLGA
+PUŽIĆ VERA
+PUĐA LEPOSAVA
+PUAČ SVETISLAV
+PUAČ SVETOZAR
+PUAČA VELJKO DR
+PUCAR ĐURO
+PUCAR DUŠAN
+PUCAR MILICA
+PUCAR STEVO
+PUCAR VASILIJE
+PUCAR VASO
+PUCAR ZDRAVKO
+PUCAREVIĆ ŽIVKO
+PUCAREVIĆ BOSILJKA
+PUCAREVIĆ GOJKO
+PUCAREVIĆ HILDA
+PUCAREVIĆ JELA
+PUCAREVIĆ NOVAK
+PUCAREVIĆ SOFIJA
+PUCOVSKI ĐURO
+PUDAR DANILO
+PUDAR GOJKO
+PUDAR RAJKO
+PUDAR RANKO
+PUDAR RANKO
+PUDAR RANKO
+PUDAR RATKO
+PUDAR SLOBODAN
+PUDAR STEVAN
+PUDAR ZDRAVKO
+PUDIĆ ILIJA
+PUDIĆ JOZA
+PUDRLJA BRANKO
+PUGAR ANĐELKA
+PUHAČA STEVO
+PUHALAK BERTA
+PUHALAK LASLO DR LEKAR
+PUHALAK STEVAN
+PUHAN OSKAR
+PUHANIĆ TEREZA
+PUHAR DUŠAN
+PUHAR FRANC
+PUIĆ ĐORĐE
+PUIĆ RADOSLAV
+PUJA FLORIN
+PUJIĆ MILIVOJ
+PUJIĆ MILOŠ
+PUJIĆ NADEŽDA
+PUJIĆ PERSIDA DIPL ING
+PUJIĆ SAVA
+PUJIĆ STEVAN
+PUJIN LAZA
+PUJIN RADE
+PUJIN RADIVOJE
+PUJIN STEVAN
+PUJIN VLASTA DR
+PULAI LAJOŠ
+PULETIĆ ZDRAVKO
+PULIĆ ANTONIJA
+PULIĆ OLGA
+PULIĆ RADOJKA
+PULISAK FRANJA
+PULISAK ILONKA
+PULISAK JOVAN
+PULISAK MIHAJLO
+PULISAK NADEŽDA
+PULISAK NIKOLA
+PULJIZEVIĆ ANTUN DIPL ING
+PUNDOV ANDREJ
+PUNGUL JOVICA
+PUNGUL MIRA
+PUPAVAC ĐORĐE
+PUPAVAC BRANKO
+PUPAVAC BRANKO
+PUPAVAC FRANJA
+PUPAVAC MILAN
+PUPAVAC PETAR
+PUPAVAC STAKA
+PUPAVAC STEVAN
+PUPAVAC STOJAN
+PUPAVAC TODOR
+PUPAVAC VESNA
+PUPIĆ RADMILA
+PUPIN ŽIVAN
+PUPOVAC DMITAR
+PUPOVAC DUŠAN
+PUPOVAC LUKA
+PUPOVAC MILOŠ
+PUPOVAC MILOŠ
+PUPOVAC SVETLANA
+PUPOVAC TODOR
+PUPOVIĆ LJUBOMIR
+PURAĆ ŽIVKO
+PURAĆ BRANKO
+PURAĆ ERŽEBET
+PURAĆ JOVAN
+PURAĆ LAZAR
+PURAĆ MAGDA
+PURAĆ MILADIN
+PURAĆ MILADIN
+PURAĆ MILENKO
+PURAĆ MIROSLAV
+PURAĆ NADA
+PURAĆ OLGA
+PURIŠIĆ ČEDO
+PURIŠIĆ SVETLANA
+PURIĆ BLANKA
+PURIĆ BOŽO
+PURIĆ DIJANA
+PURIĆ DRAGAN
+PURIĆ DRAGICA
+PURIĆ MILAN
+PURIĆ SLOBODAN
+PURIĆ ZORA
+PURKOV VESELIN
+PURKOVIĆ LJILJANA
+PURTIĆ NIKOLA
+PUSTAI IMRE
+PUSTAI JENE
+PUSTAJIĆ BRANKA
+PUSTAJIĆ RADA
+PUSTAJIĆ VUKICA
+PUSTI JOSIP
+PUTARIĆ JOVAN
+PUTIĆ ŽIVANA
+PUTIĆ KATICA
+PUTIĆ LIVIJA
+PUTIĆ SLOBODAN
+PUTIĆ SVETISLAV
+PUTIĆ ZORAN
+PUTNIK ALEKSANDAR
+PUTNIK ALEKSANDAR
+PUTNIK BORISLAV
+PUTNIK BRANKO
+PUTNIK DANILKA
+PUTNIK DIMITRIJE
+PUTNIK GERTRUDA
+PUTNIK GORAN
+PUTNIK IVAN
+PUTNIK JELENA
+PUTNIK KATICA
+PUTNIK KSENIJA
+PUTNIK LJUBICA
+PUTNIK MILAN
+PUTNIK MILAN
+PUTNIK MILENA
+PUTNIK MILORAD
+PUTNIK NEVENKA
+PUTNIK PAJO
+PUTNIK PETAR
+PUTNIK PETAR
+PUTNIK RADE
+PUTNIK RADOMIR
+PUTNIK RADOVAN
+PUTNIK SLOBODAN DIPL ING
+PUTNIK SNEŽANA
+PUTNIK STEFANIJA
+PUTNIK STEVAN
+PUTNIK STEVAN
+PUTNIK-URAČ RENATA
+PUTNIK VLADIMIR DR
+PUTNIK VLADIMIR
+PUTNIK ZORAN
+PUTNIKOVIĆ IVAN
+PUTNIKOVIĆ MILENA
+PUTNIKOVIĆ PIROŠKA
+PUVAČA LJILJANA
+PUVALIĆ KATICA
+PUZIĆ BILJANA
+PUZIĆ BOŠKO
+PUZIĆ BOSA
+PUZIĆ DRAGOMIR
+PUZIĆ SAVA
+PUZIĆ VELJKO
+PUZIGAĆA KRISTINA
+RAČIĆ ARANĐEL
+RAČIĆ LEPOSAVA
+RAČIĆ MILOŠ
+RAČIĆ MIROSLAV
+RAČIĆ NADA
+RAČIĆ RANKO
+RAČIĆ SAŠA
+RAČIĆ-SAVIN ZORICA
+RAČIĆ STOJAN
+RAČIĆ TOMISLAV
+RAČIĆ VERA
+RAČIĆ ZDRAVKO
+RAŠČANIN BRANISLAV
+RAŠČANIN BRANISLAV
+RAŠČIĆ NEHRU
+RAŠA DOJNA
+RAŠAJSKI DUŠAN
+RAŠAJSKI VEROSLAV
+RAŠETA DANE
+RAŠETA MIODRAG
+RAŠETA MIRJANA
+RAŠETA NIKOLA
+RAŠETA PETAR
+RAŠETA STEVA
+RAŠETA TOMA
+RAŠETA ZDRAVKO
+RAŠEVIĆ ŽARKO
+RAŠEVIĆ ŽELJKO
+RAŠEVIĆ MIODRAG
+RAŠIĆ BOŽIDAR DR
+RAŠIĆ DIMITRIJE
+RAŠIĆ DUŠICA
+RAŠIĆ IBOJKA
+RAŠIĆ IGNJAT
+RAŠIĆ ILIJA
+RAŠIĆ-KOPČOK NADA
+RAŠIĆ LAZAR
+RAŠIĆ MANDA
+RAŠIĆ MARIJA
+RAŠIĆ NADEŽDA
+RAŠIĆ NIKOLA
+RAŠIĆ PAUN
+RAŠIĆ PETAR MR ING
+RAŠIĆ SMILJA
+RAŠIĆ STOJAN
+RAŠIĆ UROŠ
+RAŠIĆ VESNA
+RAŠIDI DOROTEJA
+RAŠIDI SLOBODANKA
+RAŠIJOVAN RADMILA
+RAŠITI BAJRAM
+RAŠITI HAVA
+RAŠITI IMER
+RAŠKOV BRANKO
+RAŠKOV BRANKO
+RAŠKOV DANICA
+RAŠKOV MARIJA
+RAŠKOV SMILJKA
+RAŠKOVIĆ ĐORĐE
+RAŠKOVIĆ ĐORĐE
+RAŠKOVIĆ DARINKA
+RAŠKOVIĆ DRAGAN
+RAŠKOVIĆ DRAGOLJUB
+RAŠKOVIĆ DRAGOSLAVA
+RAŠKOVIĆ GORDANA
+RAŠKOVIĆ MILAN
+RAŠKOVIĆ MILICA
+RAŠKOVIĆ MIODRAG
+RAŠKOVIĆ MIRJANA
+RAŠKOVIĆ MIRJANA
+RAŠKOVIĆ MLADEN
+RAŠKOVIĆ RADOSAV
+RAŠKOVIĆ SLOBODAN
+RAŠKOVIĆ SREĆKO
+RAŠKOVIĆ STEVAN
+RAŠKOVIĆ VERA
+RAŠKOVIĆ VLADIMIR
+RAŠOVIĆ RADOVAN
+RAŠOVIĆ VOJISLAV
+RAŽNATOVIĆ RADIVOJ
+RAĐELIĆ GORDANA
+RAĐELIĆ MILAN
+RAĐENOVIĆ ŽELJKO
+RAĐENOVIĆ ŽELJKO
+RAĐENOVIĆ BOŽO
+RAĐENOVIĆ BORIS
+RAĐENOVIĆ BOSA
+RAĐENOVIĆ BRANKO
+RAĐENOVIĆ DRAGA
+RAĐENOVIĆ DUŠAN
+RAĐENOVIĆ DUŠAN
+RAĐENOVIĆ KARLO
+RAĐENOVIĆ MANE
+RAĐENOVIĆ MILANKO
+RAĐENOVIĆ MILEVA
+RAĐENOVIĆ MILKA
+RAĐENOVIĆ MILKA
+RAĐENOVIĆ NEBOJŠA
+RAĐENOVIĆ NIKOLA
+RAĐENOVIĆ SOFIJA
+RAĐENOVIĆ UROŠ
+RAĐENOVIĆ VELJKO
+RAĐENOVIĆ ZORICA
+RAĐEVIĆ SAVO
+RABADŽIJEVSKI PAULA
+RABATIĆ MILOŠ
+RABI JOŽEF
+RABIJAC SRBA
+RABRENOVIĆ MARIJA
+RABRENOVIĆ RADISAV
+RABRENOVIĆ ZLATINKA
+RAC ŠANDOR
+RAC ALBERT
+RAC ANA
+RAC BRUNO
+RAC EDMUND
+RAC FERENC
+RAC FERENC
+RAC FRANJA
+RAC GABRIJEL
+RAC JANOŠ
+RAC JELISAVETA
+RAC JOVAN
+RAC LJILJANA
+RAC LJUBOMIR
+RAC MARIJA
+RAC MARIJA
+RAC MELANIJA
+RAC PAL
+RAC RUDOLF
+RAC-SABO LAJOŠ
+RAC STEVAN
+RAC TEODOR
+RAC VLADIMIR
+RAC ZLATA
+RACA ĐURO
+RACA DRAGAN
+RACA DRAGAN
+RACA DRAGAN
+RACA DUŠAN
+RACA GORDANA DR
+RACA MIRKO
+RACA PETAR
+RACA RUŽICA
+RACIĆ ČEDOMIR
+RACIĆ BRANKO
+RACIĆ DUŠAN
+RACIĆ MILAN
+RACIĆ MILENKO
+RACIĆ MILICA
+RACIĆ MILICA
+RACIĆ MILORAD
+RACIĆ MIRJANA
+RACIĆ NEDELJKO
+RACIĆ RADENKO
+RACIĆ SLOBODAN
+RACIĆ SLOBODAN
+RACIĆ VELJKO
+RACIĆ ZDRAVKO
+RACIĆ ZDRAVKO
+RACIĆ ZORAN
+RACKOV DARINKA
+RACKOV DRAGOSLAV
+RACKOV KATICA
+RACKOV LAZAR
+RACKOV MILICA
+RACKOV MILIVOJ
+RACKOV MILOŠ
+RACKOV MIROSLAV
+RACKOV MIROSLAV
+RACKOV NATAŠA
+RACKOV OLGA
+RACKOV RADOJKA
+RACKOV RADOMIR
+RACKOV RADOSLAV
+RACKOV SAVA
+RACKOV SLOBODAN
+RACKOV SRĐAN
+RACKOV SRĐAN
+RACKOV SRĐAN
+RACKOV ZLATICA
+RACKOVIĆ ĐORĐE
+RACKOVIĆ DRAGOMIR
+RACKOVIĆ DUŠAN
+RACKOVIĆ LAZAR
+RACKOVIĆ MILAN
+RACKOVIĆ MILOŠ
+RACKOVIĆ MIRJANA
+RACLER ĐERĐ
+RACLER MARGIT
+RACO MIĆO
+RACO RATKO
+RAD PREDRAG
+RADAŠIN ELVIRA
+RADAŠIN VLADIMIR
+RADAŠIN ZVEZDAN
+RADAK ĐORĐE
+RADAK ĐURICA
+RADAK DUŠAN
+RADAK DUŠAN
+RADAK GAVRA
+RADAK JELISAVETA
+RADAK JOVANKA
+RADAK JOVAN
+RADAK KOVINKA
+RADAK LAZAR
+RADAK LAZAR
+RADAK LJUBICA
+RADAK LJUBICA
+RADAK LUKA
+RADAK MILADINKA
+RADAK MIROSLAV
+RADAK OLGA
+RADAK RADMILA
+RADAK SLAVKO
+RADAK ZORA
+RADAKOVIĆ ŽIVAN
+RADAKOVIĆ ĐORĐE
+RADAKOVIĆ ĐORĐE
+RADAKOVIĆ ĐURAĐ
+RADAKOVIĆ ALEKSANDAR
+RADAKOVIĆ ANA DR
+RADAKOVIĆ BRANKO
+RADAKOVIĆ BRANKO
+RADAKOVIĆ BRANKO
+RADAKOVIĆ DAMJAN
+RADAKOVIĆ DARKA
+RADAKOVIĆ DIMITRIJE
+RADAKOVIĆ DUŠAN
+RADAKOVIĆ DUŠAN
+RADAKOVIĆ ILIJA
+RADAKOVIĆ ILIJA
+RADAKOVIĆ JELENA
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ LAZO
+RADAKOVIĆ LJILJANA
+RADAKOVIĆ MANDA
+RADAKOVIĆ MANE
+RADAKOVIĆ MILANKO
+RADAKOVIĆ MILAN
+RADAKOVIĆ MILENA
+RADAKOVIĆ MILE
+RADAKOVIĆ MILE
+RADAKOVIĆ MILOJKA
+RADAKOVIĆ MILORAD
+RADAKOVIĆ MIROSLAV
+RADAKOVIĆ NENAD
+RADAKOVIĆ PETAR
+RADAKOVIĆ RADE
+RADAKOVIĆ RADE
+RADAKOVIĆ RAJKO
+RADAKOVIĆ RUŽICA
+RADAKOVIĆ SAVA
+RADAKOVIĆ SMILJKA
+RADAKOVIĆ TEODORA
+RADAKOVIĆ VLADIMIR
+RADAKOVIĆ VLADISLAV
+RADAN VELIMIR
+RADANOV BILJANA
+RADANOV DRAGOMIR
+RADANOV DUŠAN
+RADANOV GOSPAVA
+RADANOV LJUBOMIR ADVOKAT
+RADANOV LJUBOMIR
+RADANOV MIROSLAVA
+RADANOV NIKOLA
+RADANOV OLIVERA
+RADANOV RADINKA
+RADANOV RADIVOJ
+RADANOV RADOSLAV
+RADANOV VERICA
+RADANOVIĆ ŽELJKO
+RADANOVIĆ ĐORĐE
+RADANOVIĆ ĐORĐE
+RADANOVIĆ ĐUKA
+RADANOVIĆ ALEKSANDAR
+RADANOVIĆ ANĐELKO
+RADANOVIĆ BOŽIDAR
+RADANOVIĆ DIMITRIJE
+RADANOVIĆ DRAGAN
+RADANOVIĆ DRAGICA
+RADANOVIĆ DRAGOMIR
+RADANOVIĆ DRAGOMIR
+RADANOVIĆ DRAGUTIN
+RADANOVIĆ GOJKO
+RADANOVIĆ ILIJA
+RADANOVIĆ JOVANKA
+RADANOVIĆ JOVAN
+RADANOVIĆ JOVAN
+RADANOVIĆ JOVAN
+RADANOVIĆ KATA
+RADANOVIĆ KOVILJKA
+RADANOVIĆ LJUBO
+RADANOVIĆ MARIJA
+RADANOVIĆ MILANKO
+RADANOVIĆ MILAN
+RADANOVIĆ MILAN
+RADANOVIĆ MILAN
+RADANOVIĆ MILENKO
+RADANOVIĆ MILOŠ
+RADANOVIĆ MIODRAG
+RADANOVIĆ MIODRAG
+RADANOVIĆ NEVENKA
+RADANOVIĆ NIKOLA
+RADANOVIĆ NIKOLA
+RADANOVIĆ OBRAD
+RADANOVIĆ PETAR
+RADANOVIĆ PETAR
+RADANOVIĆ RADIVOJ
+RADANOVIĆ RADOVANKA
+RADANOVIĆ RADOVAN
+RADANOVIĆ RAJKO
+RADANOVIĆ SAŠA
+RADANOVIĆ SAVA
+RADANOVIĆ SOFIJA
+RADANOVIĆ SOFIJA
+RADANOVIĆ SRETEN
+RADANOVIĆ TRIŠA
+RADANOVIĆ VITOMIR
+RADAT MARKO
+RADATOVIĆ MARIJA
+RADEK ANDRAŠ
+RADEK MARIJA
+RADEKA ŠTEFKA
+RADEKA DUŠKO
+RADEKA JOVAN
+RADEKA MILE
+RADEKA MILKA
+RADEKA NIKOLA
+RADEKA RADOVAN
+RADEKIN LJUBICA
+RADELIĆ MILAN
+RADENČIĆ JOSIP
+RADENKOVIĆ ČEDOMIR
+RADENKOVIĆ ŽIVOJIN
+RADENKOVIĆ BLAŽA
+RADENKOVIĆ DRAGAN
+RADENKOVIĆ LEPOSAVA
+RADENKOVIĆ LJUBIŠA
+RADENKOVIĆ MILIVOJE
+RADENKOVIĆ MILOVAN
+RADENKOVIĆ MILOVAN
+RADENKOVIĆ MIODRAG
+RADENKOVIĆ NADA
+RADENKOVIĆ RADOMIR
+RADENKOVIĆ RADOSLAVA
+RADENKOVIĆ RATOMIR
+RADENKOVIĆ ROZALIJA
+RADENKOVIĆ SLOBODAN
+RADENKOVIĆ TOMISLAV
+RADENKOVIĆ VITOMIR
+RADENKOVIĆ VJERA
+RADENOVIĆ OBREN
+RADETA SLAVKO
+RADETA SVETOZAR
+RADETIĆ BOŠKO
+RADETIĆ BRANKO
+RADETIĆ GORAN
+RADETIĆ RADOMIR
+RADETIĆ VOJISLAV
+RADEVIĆ ĐORĐE
+RADEVIĆ GORAN
+RADEVIĆ IVAN
+RADEVIĆ MILEVA
+RADEVIĆ MILOŠ
+RADEVIĆ VOJIMIR
+RADIČEV JELICA
+RADIČEV MARIJA DR
+RADIČEVIĆ RADMILA
+RADIČEVIĆ SAVA
+RADIČEVIĆ ZORAN
+RADIČIĆ SMILJANA
+RADIŠIĆ ŽIVKO
+RADIŠIĆ ĐORĐE
+RADIŠIĆ ANĐELKA
+RADIŠIĆ BILJANA
+RADIŠIĆ BORISLAV
+RADIŠIĆ BORISLAV
+RADIŠIĆ BRANISLAV
+RADIŠIĆ BRANKA
+RADIŠIĆ BRANKO
+RADIŠIĆ DRAGIŠA
+RADIŠIĆ DRAGUTIN
+RADIŠIĆ DUŠAN
+RADIŠIĆ DUŠICA
+RADIŠIĆ ILIJA
+RADIŠIĆ JEFTA
+RADIŠIĆ JELENA
+RADIŠIĆ JOVAN
+RADIŠIĆ JOVO
+RADIŠIĆ KATICA
+RADIŠIĆ LAZAR
+RADIŠIĆ LAZAR
+RADIŠIĆ LAZAR
+RADIŠIĆ LJILJANA
+RADIŠIĆ LJUBICA
+RADIŠIĆ MARKO
+RADIŠIĆ MILAN
+RADIŠIĆ MILENA
+RADIŠIĆ MILENKO
+RADIŠIĆ MILICA
+RADIŠIĆ MILIJANA
+RADIŠIĆ MILUTIN
+RADIŠIĆ MIROSLAVA
+RADIŠIĆ MLADEN
+RADIŠIĆ NENA
+RADIŠIĆ NIKOLA
+RADIŠIĆ OBRADIN
+RADIŠIĆ OLIVERA
+RADIŠIĆ PERICA
+RADIŠIĆ PERO
+RADIŠIĆ PERSA
+RADIŠIĆ PETAR
+RADIŠIĆ RADIVOJ
+RADIŠIĆ RADMILA
+RADIŠIĆ RADOJKA
+RADIŠIĆ SAVETA
+RADIŠIĆ SLOBODAN
+RADIŠIĆ STANOJE
+RADIŠIĆ STEVAN
+RADIŠIĆ STEVAN
+RADIŠIĆ SVETOZAR
+RADIŠIĆ TODOR
+RADIŠIĆ VLADIMIR
+RADIŠIĆ VLADIMIR
+RADIŠIĆ ZORAN
+RADIĆ ČEDA
+RADIĆ ŽELJKO
+RADIĆ ŽIVAN
+RADIĆ ĐORĐE
+RADIĆ ĐORĐE
+RADIĆ ANĐA
+RADIĆ ANĐELKO
+RADIĆ ANDRIJA DR
+RADIĆ ANGELINA
+RADIĆ ANKICA
+RADIĆ ANTE
+RADIĆ BOŠKO
+RADIĆ BRANKA
+RADIĆ DOBRIVOJE
+RADIĆ DRAGOLJUB
+RADIĆ DUŠAN
+RADIĆ DUŠAN
+RADIĆ FRANJA
+RADIĆ FRANJO
+RADIĆ GOJKO
+RADIĆ HRANISLAV
+RADIĆ ILIJA
+RADIĆ ILIJA
+RADIĆ IVANKA
+RADIĆ JOSIP
+RADIĆ JOVAN
+RADIĆ LAZAR
+RADIĆ LJUBICA
+RADIĆ LJUBOMIR
+RADIĆ MARIJA
+RADIĆ MIJA
+RADIĆ MILANKO
+RADIĆ MILAN
+RADIĆ MILAN
+RADIĆ MILE
+RADIĆ MILIVOJ
+RADIĆ MILIVOJ
+RADIĆ MILKA
+RADIĆ MILUTIN DIPL ING
+RADIĆ MIRJANA
+RADIĆ MIRKO
+RADIĆ MLADEN
+RADIĆ NEDELJKO
+RADIĆ NENAD
+RADIĆ PAVLE
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ-POPOVIĆ GORDANA
+RADIĆ PREDRAG
+RADIĆ RADA
+RADIĆ RADE
+RADIĆ ROBERT
+RADIĆ SAVA
+RADIĆ SLAVIŠA
+RADIĆ SLAVKO
+RADIĆ SOFIJA
+RADIĆ STANKO
+RADIĆ STEVAN
+RADIĆ STEVAN
+RADIĆ STOJAN
+RADIĆ TIHOMIR
+RADIĆ TRIVA
+RADIĆ VELINKA
+RADIĆ VLADIMIR
+RADIĆ ZDRAVKO
+RADIĆ ZORAN
+RADIĆ ZORA
+RADIĆ ZORICA
+RADIBRATOVIĆ MILICA
+RADIBRATOVIĆ MOMČILO
+RADIJELJAC JELENA
+RADIJELJAC MOMČILO
+RADIN ŽIVAN
+RADIN ALEKSANDAR
+RADIN ANTONIJA
+RADIN BRANISLAV
+RADIN BRANISLAV
+RADIN BRANKO
+RADIN DRAGOJLA
+RADIN HRISTINA
+RADIN IVANKA
+RADIN JOVANKA
+RADIN LAZAR
+RADIN LJUBOMIR DR LEKAR
+RADIN LJUBOMIR
+RADIN MAKSIMILIJAN
+RADIN MARA
+RADIN MILADINKA
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILENA
+RADIN MILKA
+RADIN MIRA
+RADIN MIROSLAV
+RADIN MLADEN
+RADIN NADA
+RADIN NIKOLA DIPL ING
+RADIN PETAR DR
+RADIN RADA
+RADIN RADOSLAV
+RADIN SLAVINKA
+RADIN SLAVKO
+RADIN STEVAN
+RADIN STEVAN
+RADIN SVETISLAV
+RADIN TOMISLAV
+RADIN VESELIN
+RADIN VLADIMIR
+RADIN ZLATOJE
+RADIN ZORANKA
+RADIN ZORA
+RADINOVIĆ ĐORĐE
+RADINOVIĆ BUDIMIR
+RADINOVIĆ DIMITRIJE
+RADINOVIĆ DUŠKO
+RADINOVIĆ ILIJA
+RADINOVIĆ LAZO
+RADINOVIĆ MANOJLO
+RADINOVIĆ MARIJA
+RADINOVIĆ MILICA
+RADINOVIĆ MILIVOJ
+RADINOVIĆ MILORAD
+RADINOVIĆ MIRA
+RADINOVIĆ MLADEN
+RADINOVIĆ MOMČILO DIPL PRAVNIK
+RADINOVIĆ MOMČILO
+RADINOVIĆ NIKOLA
+RADINOVIĆ RADOSLAV
+RADINOVIĆ SILVANA
+RADINOVIĆ STEVAN
+RADINOVIĆ VUKAŠIN
+RADISAVLJEVIĆ ŽIVORAD
+RADISAVLJEVIĆ BOGDAN
+RADISAVLJEVIĆ BORIVOJE
+RADISAVLJEVIĆ IVAN
+RADISAVLJEVIĆ MILOSAV
+RADISAVLJEVIĆ SLAVICA
+RADISAVLJEVIĆ STANIŠA
+RADISAVLJEVIĆ ZORICA DR
+RADIVOJŠA MILOŠ
+RADIVOJŠA SMILJA
+RADIVOJAC DOBRILA
+RADIVOJAC DRAGA
+RADIVOJAC DRAGOLJUB
+RADIVOJAC JOVAN
+RADIVOJAC NATALIJA
+RADIVOJEV RADINKA
+RADIVOJEVIĆ ANĐELKO
+RADIVOJEVIĆ BOGOLJUB
+RADIVOJEVIĆ BRANISLAV
+RADIVOJEVIĆ BRANKO
+RADIVOJEVIĆ BRATIMIR
+RADIVOJEVIĆ DRAGAN MR
+RADIVOJEVIĆ DRAGIŠA
+RADIVOJEVIĆ DRAGOMIR
+RADIVOJEVIĆ DRAGOSLAV
+RADIVOJEVIĆ DUŠAN DIPL OEC
+RADIVOJEVIĆ DUŠANKA
+RADIVOJEVIĆ IDA
+RADIVOJEVIĆ JANKO
+RADIVOJEVIĆ JELA
+RADIVOJEVIĆ JOVANKA
+RADIVOJEVIĆ JOVAN
+RADIVOJEVIĆ LJUBICA
+RADIVOJEVIĆ LJUBODRAG
+RADIVOJEVIĆ LJUBOMIR
+RADIVOJEVIĆ LJUBOMIR
+RADIVOJEVIĆ LUKA
+RADIVOJEVIĆ LUKA
+RADIVOJEVIĆ MILAN
+RADIVOJEVIĆ MILA
+RADIVOJEVIĆ MILE
+RADIVOJEVIĆ MILIVOJE
+RADIVOJEVIĆ MILOMIR
+RADIVOJEVIĆ MIRJANA
+RADIVOJEVIĆ MLADEN
+RADIVOJEVIĆ MOMČILO
+RADIVOJEVIĆ NEĐO
+RADIVOJEVIĆ NEMANJA
+RADIVOJEVIĆ NIKOLA
+RADIVOJEVIĆ PAVLE
+RADIVOJEVIĆ RADIŠA
+RADIVOJEVIĆ RADIVOJE
+RADIVOJEVIĆ RADOŠ
+RADIVOJEVIĆ RATKO
+RADIVOJEVIĆ SINIŠA
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ STEVAN
+RADIVOJEVIĆ STOJADIN
+RADIVOJEVIĆ TOMISLAV
+RADIVOJEVIĆ TUGOMIR
+RADIVOJEVIĆ VERA
+RADIVOJEVIĆ VIDA
+RADIVOJEVIĆ VIDA
+RADIVOJEVIĆ VUKICA
+RADIVOJEVIĆ ZORAN
+RADIVOJEVIĆ ZORAN
+RADIVOJKOV ĐORĐE
+RADIVOJKOV JELICA
+RADIVOJKOV MIRJANA
+RADIVOJKOV RAJKO
+RADIVOJKOV SAVA
+RADIVOJKOV STEVAN
+RADLOVAČKI DOBRINKA
+RADLOVAČKI SINIŠA
+RADLOVIĆ MILKA
+RADMAN ŠIMUN
+RADMAN ŠPIRO
+RADMAN IVAN
+RADMAN LEPOSAVA
+RADMAN MILAN
+RADMAN MILE
+RADMAN MILICA
+RADMAN MILOVAN
+RADMAN MIROSLAV
+RADMANIĆ EVICA
+RADMANOVAC MILOVAN
+RADMANOVIĆ DRAGICA
+RADMANOVIĆ DUŠANKA
+RADMANOVIĆ MILUTIN
+RADMILO ĐURO
+RADMILO MARIJA
+RADMILO MIRKO
+RADMILOVIĆ DUŠANKA
+RADMILOVIĆ MILAN
+RADMILOVIĆ MILOŠ
+RADMILOVIĆ MIROSLAV
+RADMILOVIĆ NEDELJKO
+RADMILOVIĆ RADE PROFESOR
+RADMILOVIĆ SLAVOLJUB
+RADMILOVIĆ STEVO
+RADNIĆ DOBRINKA
+RADNOV ALEKSA
+RADNOV LENKA
+RADNOV RADIVOJ
+RADNOV RAJKO
+RADNOV ZORKA
+RADNOVIĆ DRAGAN
+RADNOVIĆ OLGICA
+RADNOVIĆ RADOVAN
+RADNOVIĆ UROŠ
+RADNOVIĆ UROŠ
+RADOČAJ DUŠANKA
+RADOČAJ ILIJA
+RADOČAJ MARA
+RADOČAJ MILKA
+RADOČAJ NEDELJKA
+RADOČAJ SAVKA
+RADOŠ BORISLAV
+RADOŠ DANICA
+RADOŠ DRENKA
+RADOŠ MARTA
+RADOŠ MILAN
+RADOŠ RUŽA
+RADOŠ VOJISLAV
+RADOŠ ZORA
+RADOŠEVIĆ-ŠTIMAC LJUBICA
+RADOŠEVIĆ ĐORĐE
+RADOŠEVIĆ ANĐELKA
+RADOŠEVIĆ ANICA
+RADOŠEVIĆ ANICA
+RADOŠEVIĆ BOŽIDAR
+RADOŠEVIĆ BOŽO
+RADOŠEVIĆ BRANISLAV
+RADOŠEVIĆ BRANKO
+RADOŠEVIĆ DESANKA
+RADOŠEVIĆ DUŠICA
+RADOŠEVIĆ JELISAVETA
+RADOŠEVIĆ JOVANKA
+RADOŠEVIĆ JOVAN
+RADOŠEVIĆ JOVAN
+RADOŠEVIĆ LJILJANA
+RADOŠEVIĆ LJUBICA
+RADOŠEVIĆ MILENA
+RADOŠEVIĆ MILENA
+RADOŠEVIĆ MILIVOJ
+RADOŠEVIĆ MILOŠ
+RADOŠEVIĆ MILUTIN
+RADOŠEVIĆ MIODRAG
+RADOŠEVIĆ MIRJANA
+RADOŠEVIĆ MIROSLAVA
+RADOŠEVIĆ MITAR
+RADOŠEVIĆ NIKOLA
+RADOŠEVIĆ OLIVERA
+RADOŠEVIĆ RADE
+RADOŠEVIĆ RADIVOJ
+RADOŠEVIĆ RADMILA
+RADOŠEVIĆ RADOVAN
+RADOŠEVIĆ RADOVAN
+RADOŠEVIĆ RODOLJUB
+RADOŠEVIĆ STANICA
+RADOŠEVIĆ TEREZA
+RADOŠEVIĆ VLADIMIR
+RADOŠEVIĆ ZDRAVKO
+RADOC FRANJA
+RADOC-SIMIĆ SOFIJA
+RADOIČIĆ MILOŠ
+RADOIČKI BRANISLAV
+RADOJČEVIĆ MILOŠ
+RADOJČIĆ BOŽA DIPL ING
+RADOJČIĆ BOŽIDAR
+RADOJČIĆ BOŽIDAR
+RADOJČIĆ DANICA
+RADOJČIĆ DARINKA
+RADOJČIĆ DRAGANA
+RADOJČIĆ DRAGOMIR
+RADOJČIĆ DRAGO
+RADOJČIĆ DUŠKO
+RADOJČIĆ GOJKO
+RADOJČIĆ IRENA
+RADOJČIĆ IVAN
+RADOJČIĆ IVAN
+RADOJČIĆ IVAN
+RADOJČIĆ LJIJANA
+RADOJČIĆ LJILJANA
+RADOJČIĆ MILADIN
+RADOJČIĆ MILAN
+RADOJČIĆ MILENKO
+RADOJČIĆ MILICA
+RADOJČIĆ MILORAD
+RADOJČIĆ MILUTIN
+RADOJČIĆ MIODRAG
+RADOJČIĆ MITAR
+RADOJČIĆ NADICA
+RADOJČIĆ NENAD
+RADOJČIĆ-OBERKNEŽEV MIRJANA
+RADOJČIĆ PAVLE
+RADOJČIĆ SAVA
+RADOJČIĆ SRETEN
+RADOJČIĆ STEVAN
+RADOJČIĆ VITOMIR
+RADOJČIĆ VLADAN
+RADOJČIĆ VOJISLAV
+RADOJČIN ĐORĐE
+RADOJČIN ANICA
+RADOJČIN DOBRILA
+RADOJČIN DUŠICA
+RADOJČIN EVICA
+RADOJČIN JULKA
+RADOJČIN MARA
+RADOJČIN MARTA
+RADOJČIN MILAN
+RADOJČIN MILKA
+RADOJČIN MILOŠ
+RADOJČIN MILOVAN
+RADOJČIN MIRJANA
+RADOJČIN RADMILA
+RADOJČIN RADOJKA
+RADOJČIN RADOVAN
+RADOJČIN SLOBODAN
+RADOJČIN SREDOJE
+RADOJČIN TODOR
+RADOJČIN VELIMIR
+RADOJČIN VERA
+RADOJČIN VERA
+RADOJA BORISLAV
+RADOJA KOVILJKA
+RADOJEV IVAN
+RADOJEV SLAVKO
+RADOJEVIĆ ĐOKA
+RADOJEVIĆ ANĐELKA
+RADOJEVIĆ BOSILJKA
+RADOJEVIĆ DEJAN
+RADOJEVIĆ DRAGOSLAV
+RADOJEVIĆ JELENA
+RADOJEVIĆ JELICA
+RADOJEVIĆ KATA
+RADOJEVIĆ KOSTA
+RADOJEVIĆ MILAN
+RADOJEVIĆ MILENKO
+RADOJEVIĆ MILE
+RADOJEVIĆ MILUTIN
+RADOJEVIĆ MIRJANA
+RADOJEVIĆ MIROSANDA
+RADOJEVIĆ MOMČILO
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ PETRA
+RADOJEVIĆ RADISAV
+RADOJEVIĆ RADOSLAVKA DR
+RADOJEVIĆ SAVA
+RADOJEVIĆ SLAVKO
+RADOJEVIĆ SRBOLJUB
+RADOJEVIĆ STEVAN
+RADOJEVIĆ STEVAN
+RADOJEVIĆ TATJANA
+RADOJEVIĆ VERA
+RADOJEVIĆ ZORAN
+RADOJIČIĆ ĐOKA
+RADOJIČIĆ ĐORĐO
+RADOJIČIĆ DANILO
+RADOJIČIĆ DRAGAN
+RADOJIČIĆ JELENA
+RADOJIČIĆ JORDAN
+RADOJIČIĆ LJUBOMIR
+RADOJIČIĆ MILICA
+RADOJIČIĆ MILOSAV
+RADOJIČIĆ OBREN
+RADOJIČIĆ RADE
+RADOJIČIĆ RADIŠA
+RADOJIČIĆ VLADAN
+RADOJIČIĆ VOJIN
+RADOJKO JELENA
+RADOJKOVIĆ ĐURĐINKA
+RADOJKOVIĆ LJUBICA
+RADOJKOVIĆ PREDRAG
+RADOJKOVIĆ PRVOSLAV
+RADOJKOVIĆ PRVOSLAV
+RADOJKOVIĆ RAJKO
+RADOJKOVIĆ TIHOMIR
+RADOJKOVIĆ TOMISLAV
+RADOJKOVIĆ TRAJKO
+RADOJKOVIĆ VLADIMIR
+RADOMAN JELENA
+RADOMAN LJUBICA
+RADOMAN MARTA
+RADOMAN MIROSLAV
+RADOMAN ZORAN
+RADOMIR STOJAN
+RADOMIROVIĆ MILORAD
+RADOMIROVIĆ VINKO
+RADOMIROVIĆ VUKSAN
+RADOMIROVIĆ ZLATA
+RADONČIĆ JUSUF
+RADONČIĆ RAMIZ
+RADONIĆ ŽELJKO
+RADONIĆ ŽIVAN
+RADONIĆ ŽIVKO
+RADONIĆ ALEKSANDAR
+RADONIĆ ANĐELKA
+RADONIĆ BLAGOJE
+RADONIĆ BRANISLAV
+RADONIĆ BRANKO DIPL ING
+RADONIĆ BRANKO
+RADONIĆ DANICA
+RADONIĆ DUŠAN
+RADONIĆ EVGENIJE
+RADONIĆ FERENC
+RADONIĆ HANA
+RADONIĆ JOVAN
+RADONIĆ LJUBOMIR
+RADONIĆ MAKSIM
+RADONIĆ MILIVOJE
+RADONIĆ MILOVAN
+RADONIĆ MLADEN
+RADONIĆ NADA
+RADONIĆ NADA
+RADONIĆ NEDELJKO
+RADONIĆ NENAD
+RADONIĆ NIKOLA
+RADONIĆ NIKOLA
+RADONIĆ NOVICA
+RADONIĆ PETAR
+RADONIĆ RADA
+RADONIĆ RADE
+RADONIĆ RADIVOJ
+RADONIĆ RADIVOJ
+RADONIĆ RADMILA
+RADONIĆ RAJKO
+RADONIĆ SOFIJA
+RADONIĆ VLADA
+RADONIĆ VLADIMIR
+RADONJA ANTE
+RADONJANIN MARTA
+RADONJANIN PETAR
+RADONJANIN VLASTIMIR
+RADONJIĆ BRANISLAV
+RADONJIĆ DRAGAN
+RADONJIĆ IVAN
+RADONJIĆ KATARINA
+RADONJIĆ LUKA
+RADONJIĆ MANDA
+RADONJIĆ MILADIN
+RADONJIĆ MILOVAN
+RADONJIĆ MIRJANA
+RADONJIĆ MITAR
+RADONJIĆ OLGA
+RADONJIĆ SENKA
+RADONJIĆ SLAVOMIR
+RADONJIĆ SLOBODAN
+RADONJIĆ SNEŽANA
+RADONJIĆ STANA
+RADONJIĆ VERICA
+RADOSAV ERŽEBET
+RADOSAV KRISTINA
+RADOSAV RADIVOJ
+RADOSAVČEV DUŠAN
+RADOSAVČEV MILA
+RADOSAVAC DIMITRIJE DR
+RADOSAVAC DUŠICA
+RADOSAVAC NEDELJKO
+RADOSAVAC VELIZAR
+RADOSAVAC VLADO
+RADOSAVLJEV ŽIVAN
+RADOSAVLJEV BOŽIDAR
+RADOSAVLJEV DRAGOLJUB
+RADOSAVLJEV DRAGUTIN
+RADOSAVLJEV GOJKO
+RADOSAVLJEV IVAN
+RADOSAVLJEV JEVREM
+RADOSAVLJEV KAĆA
+RADOSAVLJEV MILORAD
+RADOSAVLJEV NIKOLA
+RADOSAVLJEV PAVLE
+RADOSAVLJEV SLAVKA
+RADOSAVLJEV STEVAN
+RADOSAVLJEV ZORA
+RADOSAVLJEV ZORICA
+RADOSAVLJEVIĆ ŽIVAN
+RADOSAVLJEVIĆ ĐORĐE
+RADOSAVLJEVIĆ ĐORĐE
+RADOSAVLJEVIĆ ALEKSANDAR
+RADOSAVLJEVIĆ ANA
+RADOSAVLJEVIĆ ANA
+RADOSAVLJEVIĆ BOŽIDAR
+RADOSAVLJEVIĆ BOGDAN
+RADOSAVLJEVIĆ BOGOVID
+RADOSAVLJEVIĆ BORA
+RADOSAVLJEVIĆ BORA
+RADOSAVLJEVIĆ BUDIMIR
+RADOSAVLJEVIĆ DANIEL
+RADOSAVLJEVIĆ DIANA
+RADOSAVLJEVIĆ DOBRIVOJE
+RADOSAVLJEVIĆ DRAGAN
+RADOSAVLJEVIĆ DRAGIŠA
+RADOSAVLJEVIĆ DRAGOLJUB
+RADOSAVLJEVIĆ DRAGUTIN
+RADOSAVLJEVIĆ DUŠAN DIPL ING
+RADOSAVLJEVIĆ DUŠAN
+RADOSAVLJEVIĆ DUŠAN
+RADOSAVLJEVIĆ ILIJA
+RADOSAVLJEVIĆ JASMINA
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JULIJA
+RADOSAVLJEVIĆ LEPOSAVA
+RADOSAVLJEVIĆ LJILJANA
+RADOSAVLJEVIĆ LJILJA
+RADOSAVLJEVIĆ LJUBIŠA
+RADOSAVLJEVIĆ LJUBOMIR
+RADOSAVLJEVIĆ LJUBOMIR
+RADOSAVLJEVIĆ MARKO
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILENKO
+RADOSAVLJEVIĆ MILENKO
+RADOSAVLJEVIĆ MILEVA
+RADOSAVLJEVIĆ MILKA
+RADOSAVLJEVIĆ MILOVAN
+RADOSAVLJEVIĆ MIODRAG
+RADOSAVLJEVIĆ MIRJANA
+RADOSAVLJEVIĆ MIRJANA
+RADOSAVLJEVIĆ MLADEN
+RADOSAVLJEVIĆ NJEGOSAVA
+RADOSAVLJEVIĆ PAVLE
+RADOSAVLJEVIĆ PETAR
+RADOSAVLJEVIĆ RADIŠA
+RADOSAVLJEVIĆ RADIŠA
+RADOSAVLJEVIĆ RADIVOJ
+RADOSAVLJEVIĆ RAMIZA
+RADOSAVLJEVIĆ RODOLJUB DIPL ING
+RADOSAVLJEVIĆ SAVA
+RADOSAVLJEVIĆ SINIŠA
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STOJAN
+RADOSAVLJEVIĆ SVETISLAV
+RADOSAVLJEVIĆ SVETISLAV
+RADOSAVLJEVIĆ SVETLANA
+RADOSAVLJEVIĆ SVETOZAR
+RADOSAVLJEVIĆ VIDOSAVA
+RADOSAVLJEVIĆ VLADETA
+RADOSAVLJEVIĆ ZAGA
+RADOSAVLJEVIĆ ZAGORKA
+RADOSAVLJEVIĆ ZORICA
+RADOVAC IVA
+RADOVAC NIKOLA
+RADOVAC PETAR
+RADOVAC SAVA
+RADOVAN ANTE
+RADOVAN VIDOSAVA
+RADOVANČEV BRANISLAV
+RADOVANČEV LJUBICA
+RADOVANČEV VLADIMIR
+RADOVANČEV VLADIMIR
+RADOVANAC ĐURA
+RADOVANAC NEĐO
+RADOVANOV ŽIVAN
+RADOVANOV ALEKSANDAR
+RADOVANOV ANĐELKA
+RADOVANOV ANKA
+RADOVANOV BOŽIDAR
+RADOVANOV BOGDANKA
+RADOVANOV BRANKO
+RADOVANOV DANICA
+RADOVANOV DUŠAN
+RADOVANOV DUŠAN
+RADOVANOV DUŠAN
+RADOVANOV EVICA
+RADOVANOV GORDANA
+RADOVANOV ILIJA
+RADOVANOV KUZMAN
+RADOVANOV LJUBICA
+RADOVANOV MARIJA
+RADOVANOV MELANIJA
+RADOVANOV MILAN
+RADOVANOV MILAN
+RADOVANOV MILENKO
+RADOVANOV MILENKO
+RADOVANOV MILENKO
+RADOVANOV MILICA
+RADOVANOV MILICA
+RADOVANOV MILICA
+RADOVANOV MILKA
+RADOVANOV MIRJANA
+RADOVANOV NADA
+RADOVANOV NEVENKA
+RADOVANOV PETAR
+RADOVANOV PETAR
+RADOVANOV PETAR
+RADOVANOV RADOMIR
+RADOVANOV RADOVAN
+RADOVANOV RUŽICA
+RADOVANOV SLOBODANKA
+RADOVANOV SLOBODAN
+RADOVANOV SLOBODAN
+RADOVANOV SMILJANA
+RADOVANOV STEVAN
+RADOVANOV STEVAN
+RADOVANOV STEVA
+RADOVANOV SVETOZAR
+RADOVANOV TATJANA
+RADOVANOV TINKA
+RADOVANOV VOJISLAV
+RADOVANOVIĆ ŽIVADIN
+RADOVANOVIĆ ĐORĐIJE
+RADOVANOVIĆ BORA
+RADOVANOVIĆ BORKA
+RADOVANOVIĆ BRANKO
+RADOVANOVIĆ DANILO
+RADOVANOVIĆ DARINKA
+RADOVANOVIĆ DOBRIVOJE
+RADOVANOVIĆ DRAGAN
+RADOVANOVIĆ DRAGIŠA
+RADOVANOVIĆ DRAGIŠA
+RADOVANOVIĆ DRAGOLJUB
+RADOVANOVIĆ DUŠANKA
+RADOVANOVIĆ DUŠAN
+RADOVANOVIĆ DUŠKO DIPL ING
+RADOVANOVIĆ ILONKA
+RADOVANOVIĆ JELICA
+RADOVANOVIĆ JOKA
+RADOVANOVIĆ JOVANKA
+RADOVANOVIĆ LAZAR
+RADOVANOVIĆ LAZO
+RADOVANOVIĆ LJUBICA
+RADOVANOVIĆ LJUBOMIR
+RADOVANOVIĆ MARA
+RADOVANOVIĆ MARIJA DR
+RADOVANOVIĆ MARIJA
+RADOVANOVIĆ MIĆO
+RADOVANOVIĆ MILADIN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILA
+RADOVANOVIĆ MILICA
+RADOVANOVIĆ MILOŠ
+RADOVANOVIĆ MILOŠ
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILUTIN
+RADOVANOVIĆ MIRA
+RADOVANOVIĆ MIROSLAV DR PROF
+RADOVANOVIĆ MIROSLAV
+RADOVANOVIĆ MLAĐEN
+RADOVANOVIĆ MOMIR
+RADOVANOVIĆ NADA
+RADOVANOVIĆ NEDELJKO
+RADOVANOVIĆ NIKOLA
+RADOVANOVIĆ NINOSLAV DR
+RADOVANOVIĆ PREDRAG
+RADOVANOVIĆ RADENKO
+RADOVANOVIĆ RADIVOJ
+RADOVANOVIĆ RADOJICA
+RADOVANOVIĆ RADOMIR DR LEKAR
+RADOVANOVIĆ RADOSLAV
+RADOVANOVIĆ RADOSLAV
+RADOVANOVIĆ RADOVAN
+RADOVANOVIĆ RAJA
+RADOVANOVIĆ RAJKO
+RADOVANOVIĆ SLADOLJUB
+RADOVANOVIĆ SLAVKO
+RADOVANOVIĆ SLAVKO
+RADOVANOVIĆ SLOBODAN
+RADOVANOVIĆ SNEŽANA
+RADOVANOVIĆ SRETEN
+RADOVANOVIĆ STANOJE
+RADOVANOVIĆ STEVAN
+RADOVANOVIĆ STEVAN
+RADOVANOVIĆ SVETISLAV
+RADOVANOVIĆ TOMISLAV
+RADOVANOVIĆ VELISAV
+RADOVANOVIĆ VIDOSAVA
+RADOVANOVIĆ VINKA
+RADOVANOVIĆ VLADIMIR
+RADOVANOVIĆ VOJISLAV
+RADOVANOVIĆ VOJISLAV
+RADOVANOVIĆ ZORKA
+RADOVANOVIĆ ZVEZDANA
+RADOVIĆ ČEDOMIR
+RADOVIĆ ŽARKO
+RADOVIĆ ŽIVAN
+RADOVIĆ ĐORĐE
+RADOVIĆ ALEKSANDAR
+RADOVIĆ ALEKSANDAR
+RADOVIĆ ANĐELIJA
+RADOVIĆ BLAGA
+RADOVIĆ BLAGOJE
+RADOVIĆ BOŠKO
+RADOVIĆ BOGOLJUB
+RADOVIĆ BORISLAV
+RADOVIĆ BRANISLAV DIPL ING
+RADOVIĆ BRANKO
+RADOVIĆ DAMJAN
+RADOVIĆ DARKO
+RADOVIĆ DEJAN
+RADOVIĆ DIMITRIJE
+RADOVIĆ DOBRILA
+RADOVIĆ DRAGAN
+RADOVIĆ DRAGIŠA
+RADOVIĆ DRAGICA
+RADOVIĆ DRAGOLJUB
+RADOVIĆ DRAGUTIN
+RADOVIĆ DUŠAN
+RADOVIĆ GOJKO DIPL ING
+RADOVIĆ IRMA
+RADOVIĆ IVA
+RADOVIĆ JEVTO
+RADOVIĆ JOVAN
+RADOVIĆ LJUBOMIR
+RADOVIĆ MAGDALENA
+RADOVIĆ MAGDA
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILENA
+RADOVIĆ MILEVA
+RADOVIĆ MILE
+RADOVIĆ MILOŠ
+RADOVIĆ MILOJE
+RADOVIĆ MILOMIR
+RADOVIĆ MILUTIN
+RADOVIĆ MIODRAG
+RADOVIĆ MIODRAG
+RADOVIĆ MIRČETA
+RADOVIĆ MOMČILO
+RADOVIĆ MOMČILO
+RADOVIĆ NEDELJKO
+RADOVIĆ NOVAK
+RADOVIĆ OLGA
+RADOVIĆ PAVLE
+RADOVIĆ PETAR
+RADOVIĆ PETKO
+RADOVIĆ RADOJKA
+RADOVIĆ RADOMIR
+RADOVIĆ RADOVAN
+RADOVIĆ RADOVAN
+RADOVIĆ RADOVAN
+RADOVIĆ RAJKO
+RADOVIĆ RATOMIR DIPL ING
+RADOVIĆ ROZIKA
+RADOVIĆ SAVO
+RADOVIĆ SIMA
+RADOVIĆ SLAVICA
+RADOVIĆ SLAVICA
+RADOVIĆ SLAVKA
+RADOVIĆ SLAVKO
+RADOVIĆ SRETEN
+RADOVIĆ STANKO
+RADOVIĆ STEVAN
+RADOVIĆ STRAHINJA
+RADOVIĆ TEREZIJA
+RADOVIĆ-UVERIĆ MILA DR
+RADOVIĆ VELIMIR
+RADOVIĆ VELJA
+RADOVIĆ VELJKO
+RADOVIĆ VELJKO
+RADOVIĆ VERA
+RADOVIĆ VERA
+RADOVIĆ VIDAK
+RADOVIĆ VIDOSAV
+RADOVIĆ VLADIMIR
+RADOVIĆ VLADIMIR
+RADOVIĆ VLAJKO
+RADOVIĆ VOJISLAV
+RADOVIĆ VUKSAN
+RADOVIĆ ZDRAVKO
+RADOVIĆ ZORAN
+RADOVNIKOVIĆ MARIJA
+RADU BRANKO
+RADUJKO ĐURA
+RADUJKO ALEKSANDAR
+RADUJKO BRANKO
+RADUJKO DESA
+RADUJKO DUŠAN
+RADUJKO DUŠAN
+RADUJKO GORAN
+RADUJKO JASMINA
+RADUJKO LJILJANA
+RADUJKO MARKO
+RADUJKO MILAN
+RADUJKO MIRA
+RADUJKO MIRKO
+RADUJKO NEDELJKO
+RADUJKO STEVO
+RADUJKOV ALEKSANDAR
+RADUJKOV DANICA DIPL ING
+RADUJKOV DANILO
+RADUJKOV DANILO
+RADUJKOV DEJAN
+RADUJKOV DRAGOLJUB
+RADUJKOV LJUBICA
+RADUJKOV LJUBICA
+RADUJKOV MILAN
+RADUJKOV MILIVOJ
+RADUJKOV MITAR
+RADUJKOV NIKOLA
+RADUJKOV PETAR
+RADUJKOV RUŽICA
+RADUJKOV STEVAN
+RADUJKOV VLADIMIR
+RADUJKOVIĆ ILIJA
+RADUJKOVIĆ JELKA
+RADUJKOVIĆ KOSTA
+RADUKA LAJOŠ
+RADUKIĆ RADOSAV
+RADUKIN ALEKSA
+RADUKIN BRANKA
+RADUKIN DANICA
+RADUKIN GAVRA
+RADUKIN LJUBOMIR
+RADUKIN MILAN
+RADUKIN MILENKO
+RADUKIN MIRKO
+RADUKIN RADOSLAV
+RADUKIN STOJKA
+RADULAŠKI BOŠKO
+RADULAŠKI STEVAN
+RADULEV JOVAN
+RADULJ JELENA
+RADULOV CVETISLAV
+RADULOV CVETISLAV
+RADULOV JOVAN
+RADULOV JULKA
+RADULOVIĆ ŽIVKO
+RADULOVIĆ ĐOKO
+RADULOVIĆ ĐORĐE
+RADULOVIĆ ĐORĐE
+RADULOVIĆ ĐURO
+RADULOVIĆ ALEKSANDAR
+RADULOVIĆ ALEKSANDAR
+RADULOVIĆ ANĐELKA
+RADULOVIĆ ANĐELKO
+RADULOVIĆ ANĐELKO
+RADULOVIĆ ANA
+RADULOVIĆ-BELIĆ ZORKA
+RADULOVIĆ BOGDANKA
+RADULOVIĆ BORIVOJ
+RADULOVIĆ BOSA
+RADULOVIĆ BOSILJKA
+RADULOVIĆ BRANKA
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRATISLAV
+RADULOVIĆ DANIJELA
+RADULOVIĆ DRAGAN
+RADULOVIĆ DRAGICA
+RADULOVIĆ DRAGICA
+RADULOVIĆ DRAGOLJUB
+RADULOVIĆ DRAGUTIN
+RADULOVIĆ DUŠAN
+RADULOVIĆ GORAN
+RADULOVIĆ ILIJA
+RADULOVIĆ JORDAN
+RADULOVIĆ JOVAN
+RADULOVIĆ JOVAN
+RADULOVIĆ KRUNISLAV
+RADULOVIĆ KSENIJA
+RADULOVIĆ LAZAR
+RADULOVIĆ LJUBIŠA DIPL ING
+RADULOVIĆ MAGDA
+RADULOVIĆ MARIJANA
+RADULOVIĆ MARIJA
+RADULOVIĆ MARIJA
+RADULOVIĆ MIHAILO
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILENA
+RADULOVIĆ MILE
+RADULOVIĆ MILOJE
+RADULOVIĆ MILORAD DR
+RADULOVIĆ MILOVAN
+RADULOVIĆ MILUTIN
+RADULOVIĆ MIRJANA
+RADULOVIĆ MIRKO
+RADULOVIĆ MIROSLAVA
+RADULOVIĆ NADA
+RADULOVIĆ NEDELJKA
+RADULOVIĆ NIKOLA DIPL ING
+RADULOVIĆ NIKOLA
+RADULOVIĆ NIKOLA
+RADULOVIĆ NIKOLA
+RADULOVIĆ NINOSLAVA DR
+RADULOVIĆ PETAR
+RADULOVIĆ PETAR
+RADULOVIĆ RADE
+RADULOVIĆ RADIVOJ
+RADULOVIĆ RADOJE DR
+RADULOVIĆ RADOJKA
+RADULOVIĆ RADOMIR
+RADULOVIĆ RAJKO
+RADULOVIĆ ROZALIJA
+RADULOVIĆ RUŽA
+RADULOVIĆ RUDOLF
+RADULOVIĆ SAVA
+RADULOVIĆ SAVA
+RADULOVIĆ SAVA
+RADULOVIĆ SELIMIR
+RADULOVIĆ SLAVICA
+RADULOVIĆ SLOBODAN
+RADULOVIĆ SREĆKO
+RADULOVIĆ SRETO
+RADULOVIĆ STANA
+RADULOVIĆ STANKO
+RADULOVIĆ STEVAN DR
+RADULOVIĆ STEVAN
+RADULOVIĆ STEVAN
+RADULOVIĆ SVETKO
+RADULOVIĆ SVETOZAR
+RADULOVIĆ SVETOZAR
+RADULOVIĆ TOMAŠ
+RADULOVIĆ VELIMIR
+RADULOVIĆ ZLATINKA DR
+RADULOVIĆ ZORAN
+RADULOVIĆ ZORAN
+RADULOVIĆ ZVONIMIR
+RADUMILO ALEKSANDAR
+RADUMILO GORDANA
+RADUMILO MIĆO
+RADUMILO MILORAD
+RADUMILO MIRKO
+RADUN ŽELJKO
+RADUN ŽELJKO
+RADUN DRAGAN
+RADUN GORAN
+RADUN ILIJA
+RADUN JOVAN
+RADUN LJUBICA
+RADUN MARKO
+RADUN MILOŠ
+RADUN SLOBODAN
+RADUN SMILJA
+RADUN VLADO
+RADUNJIĆ MILOMIR
+RADUNKOVIĆ MIROSLAV
+RADUNKOVIĆ RADOMIR
+RADUNKOVIĆ RANKO
+RADUNOVIĆ ĐORĐE
+RADUNOVIĆ JELICA
+RADUNOVIĆ JELICA
+RADUNOVIĆ JEVREM
+RADUNOVIĆ RADUN
+RADUNOVIĆ ROSANDA
+RADUSIN MILE
+RADUSIN TOMA
+RADUSIN VERICA
+RADUSIN VLADIMIR
+RADUSINOVIĆ BISER DIPL ING
+RADUSINOVIĆ BORA
+RADUSINOVIĆ DANILO
+RADUSINOVIĆ MILAN
+RADUSINOVIĆ NEDELJKO
+RADUSINOVIĆ VOJISLAV
+RADVANJ SAŠA
+RADVANJI JOVAN
+RADVANSKI STEVAN
+RAFA ANDRAŠ
+RAFAI GABOR
+RAFAI IŠTVAN
+RAFAI JULIJANA
+RAFAI STEVAN
+RAFAI TIBOR
+RAFAJLOVIĆ ZUZANA
+RAFAL ĐURĐINKA
+RAFAL LAJOŠ
+RAFAL MARIJA
+RAGAČ IVAN
+RAGAI JOVGEN
+RAGAJI ĐURA
+RAGAJI IRINA
+RAGAJI NIKOLA
+RAGAJI NIKOLA
+RAGAJI VLADA
+RAGAJI VLADA
+RAGAJI VLADIMIR
+RAGO ADAM
+RAGUŽ DRAŽEN
+RAHELIĆ SVETOMIR DR
+RAHMAN MIHAJLO
+RAIČ ALEKSANDAR
+RAIČ NIKOLA
+RAIČEVIĆ ŽIVKO
+RAIČEVIĆ ŽIVOJIN
+RAIČEVIĆ ŽIVOJIN
+RAIČEVIĆ BORKA
+RAIČEVIĆ DRAGIĆ
+RAIČEVIĆ MILAN
+RAIČEVIĆ MILICA
+RAIČEVIĆ NIKOLA
+RAIČEVIĆ VESNA
+RAIČEVIĆ ZORAN
+RAIČIĆ ŽIVOJIN
+RAIČIĆ ŽIVOJIN
+RAIĆ DRAGAN
+RAIĆ NIKOLA
+RAILIĆ RANKO
+RAILIĆ VUKOSAVA
+RAIMOVSKI DESANKA
+RAINAC MARIKA
+RAINAC MITAR
+RAJČAN IŠTVAN
+RAJČETIĆ DRAGOMIR
+RAJČETIĆ EMIL
+RAJČETIĆ GOJKO
+RAJČETIĆ IVANKA
+RAJČETIĆ LAZAR
+RAJČETIĆ LJUBICA
+RAJČETIĆ MILIVOJ
+RAJČETIĆ MIROSLAV
+RAJČETIĆ RUŽICA
+RAJČETIĆ SINIŠA
+RAJČETIĆ STOJAN
+RAJČETIĆ VERA
+RAJČETIĆ VLADISLAV
+RAJČETIĆ VLADISLAV
+RAJČEVIĆ VLADETA
+RAJČIĆ GRGA
+RAJČIĆ PAVLE
+RAJČIĆ STEVAN
+RAJŠIĆ ANĐA
+RAJŠIĆ DANICA
+RAJŠIĆ DUŠAN
+RAJŠIĆ ILIJA
+RAJŠIĆ JELA
+RAJŠIĆ NADA
+RAJŠIĆ RADE
+RAJŠIĆ STANA
+RAJŠIĆ STANKO
+RAJŠLI ILONA
+RAJŠLI LASLO
+RAJAČIĆ-ČAPAKOVIĆ JELICA
+RAJAČIĆ ĐURO
+RAJAČIĆ ĐURO
+RAJAČIĆ ALEKSANDAR
+RAJAČIĆ BORISLAV
+RAJAČIĆ BORISLAV
+RAJAČIĆ BRANISLAVA
+RAJAČIĆ DMITAR
+RAJAČIĆ DUŠAN
+RAJAČIĆ GORDANA
+RAJAČIĆ ILIJA
+RAJAČIĆ JOVAN
+RAJAČIĆ MILAN
+RAJAČIĆ MILAN
+RAJAČIĆ MILAN
+RAJAČIĆ PETAR
+RAJAČIĆ TIHOMIR
+RAJAČIĆ VLADIMIR
+RAJAČIĆ VLADO
+RAJAČIĆ ZORICA
+RAJAČIĆ ZORKA
+RAJAK BRANKO
+RAJAK MILENA
+RAJAK NEGOVAN
+RAJAKOVAC MIODRAG
+RAJAKOVAC ZORAN
+RAJBER JOŽEF
+RAJDA PETAR
+RAJDA PETER
+RAJDA SANDI
+RAJEVIĆ KOSTA
+RAJEVIĆ VALERIJA
+RAJH DEŽE
+RAJH OLGA
+RAJH VLADIMIR
+RAJIČ MILAN
+RAJIČIĆ KATALIN
+RAJIČIĆ MIODRAG
+RAJIČIĆ MIODRAG
+RAJIĆ ANKICA
+RAJIĆ BORISAV
+RAJIĆ DARINKA
+RAJIĆ DESANKA
+RAJIĆ DOBRIVOJ
+RAJIĆ DRAGAN
+RAJIĆ DRAGA
+RAJIĆ DRAGICA
+RAJIĆ DRAGUTIN
+RAJIĆ GORDANA
+RAJIĆ IGNJAT
+RAJIĆ ISA
+RAJIĆ JOVAN
+RAJIĆ JOVAN
+RAJIĆ KATARINA
+RAJIĆ KOVINKA
+RAJIĆ KRISTINA
+RAJIĆ LJUBICA
+RAJIĆ LUKA
+RAJIĆ MILAN
+RAJIĆ MILENA
+RAJIĆ MILKA
+RAJIĆ MILORAD
+RAJIĆ MIOMIR
+RAJIĆ NADA
+RAJIĆ NADA
+RAJIĆ NIKOLA
+RAJIĆ PERKA
+RAJIĆ PETAR
+RAJIĆ RADE
+RAJIĆ RADISLAV
+RAJIĆ RADMILA
+RAJIĆ RUŽA
+RAJIĆ SLAVKA
+RAJIĆ SNEŽANA
+RAJIĆ SPASOJE DR
+RAJIĆ STEVAN
+RAJIĆ STEVAN
+RAJIĆ STEVAN
+RAJIĆ VELIMIR
+RAJIĆ VELIMIR
+RAJIĆ VELINKA
+RAJIĆ VOJISLAV
+RAJIĆ VOJISLAV
+RAJIĆ ZORAN
+RAJILIĆ JOVANKA
+RAJINAC-BUKUROV DRAGANA
+RAJINAC NENAD
+RAJINAC SVETOZAR
+RAJINOVIĆ MIRKO
+RAJKIĆ NIKOLA
+RAJKOV BOGDAN DR
+RAJKOV BORIVOJ
+RAJKOV DESANKA
+RAJKOV DRAGIĆ
+RAJKOV DUŠAN
+RAJKOV ISIDOR
+RAJKOV IVAN
+RAJKOV IVAN
+RAJKOV LJUBOMIR
+RAJKOV MARKO
+RAJKOV MILAN
+RAJKOV MILENKO
+RAJKOV MILORAD
+RAJKOV MLADEN DIPL ING
+RAJKOV MOMIR
+RAJKOV MOMIR
+RAJKOV NIKOLA
+RAJKOV PETAR
+RAJKOV RAJKO
+RAJKOV RATIMIR
+RAJKOV SAVA
+RAJKOV STEVAN
+RAJKOV VESNA
+RAJKOV VLADIMIR
+RAJKOV VUKAŠIN
+RAJKOVIĆ ČEDOMIR
+RAJKOVIĆ ŽIVAN DR
+RAJKOVIĆ ANKICA
+RAJKOVIĆ BLAGUTIN
+RAJKOVIĆ BOGOLJUB
+RAJKOVIĆ BORIVOJE
+RAJKOVIĆ BRANKO
+RAJKOVIĆ DAMNJAN
+RAJKOVIĆ DRAGANA
+RAJKOVIĆ DRAGAN
+RAJKOVIĆ DRAGIŠA
+RAJKOVIĆ DRAGOLJUB
+RAJKOVIĆ DUŠAN
+RAJKOVIĆ IVO
+RAJKOVIĆ LJUBOMIR
+RAJKOVIĆ MILAN
+RAJKOVIĆ MILEVA
+RAJKOVIĆ MILIĆ
+RAJKOVIĆ MILJKO
+RAJKOVIĆ MIRKO
+RAJKOVIĆ MIROLJUB
+RAJKOVIĆ NIKOLA
+RAJKOVIĆ PETAR
+RAJKOVIĆ RAJKO
+RAJKOVIĆ RATKO
+RAJKOVIĆ SLAVKO
+RAJKOVIĆ SLOBODAN
+RAJKOVIĆ SRBOLJUB
+RAJKOVIĆ SRETEN
+RAJKOVIĆ STEVAN
+RAJKOVIĆ STOJA
+RAJKOVIĆ SVETISLAV
+RAJKOVIĆ TATJANA
+RAJKOVIĆ TOMISLAV
+RAJKOVIĆ VELIMIR
+RAJKOVIĆ VIDOSAV
+RAJKOVIĆ VLASTIMIR
+RAJLIĆ MILKA
+RAJLIĆ NEVENKA
+RAJMOVSKA JELZA
+RAJNIĆ DRAGAN
+RAJNIĆ NOVAK
+RAJNINGER JOŽEF
+RAJNOVIĆ ALOJZ
+RAJNOVIĆ BLAŽ
+RAJNOVIĆ JELENA
+RAJNOVIĆ JOVAN
+RAJNOVIĆ JULIJANA
+RAJNOVIĆ NADA
+RAJNOVIĆ SNEŽANA
+RAJNPREHT VERA
+RAJTA IŠTVAN
+RAJTA MARIJA
+RAJTA NIKOLA
+RAJTENBAH ELEMIR
+RAJTER DRAGICA
+RAJTER ZOLTAN
+RAK ANICA
+RAK MARIJA
+RAK NIKOLA
+RAK VELIBOR
+RAKŠANJI LADISLAV
+RAKAS ĐORĐE
+RAKAS RADOJKA
+RAKAZOV MIODRAG
+RAKETIĆ TOMISLAV
+RAKIĆ ŽARKO
+RAKIĆ ŽIVKA
+RAKIĆ ŽIVKO
+RAKIĆ ĐORĐE
+RAKIĆ ĐORĐE
+RAKIĆ ĐORĐE
+RAKIĆ ĐURA
+RAKIĆ ALEKSANDAR
+RAKIĆ ANĐELIJA
+RAKIĆ ANĐELKA
+RAKIĆ ANASTASIJA
+RAKIĆ ANA
+RAKIĆ BLAGOJE
+RAKIĆ BOŽO
+RAKIĆ BOGDANKA
+RAKIĆ BORO
+RAKIĆ BRANIMIR
+RAKIĆ BRANISLAV
+RAKIĆ BRANKA
+RAKIĆ BRANKO
+RAKIĆ DARINKA
+RAKIĆ DOMINKA
+RAKIĆ DRAGANA
+RAKIĆ DRAGAN
+RAKIĆ DRAGIŠA
+RAKIĆ DRAGOMIR
+RAKIĆ DUŠANKA
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ GAVRA
+RAKIĆ GLIGORIJE
+RAKIĆ GORDANA
+RAKIĆ GRUJA
+RAKIĆ IVAN
+RAKIĆ JOVANKA
+RAKIĆ JOVAN
+RAKIĆ JOVAN
+RAKIĆ JOVAN
+RAKIĆ JOVICA
+RAKIĆ KATICA
+RAKIĆ KLEMENT
+RAKIĆ LAZAR
+RAKIĆ LJILJANA
+RAKIĆ LJILJANA
+RAKIĆ LJILJANA
+RAKIĆ LJUBIŠA DR LEKAR
+RAKIĆ LJUBIŠA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBOMIR
+RAKIĆ LJUBO
+RAKIĆ MATIJA
+RAKIĆ MILANKA
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILENKO
+RAKIĆ MILENKO
+RAKIĆ MILENKO
+RAKIĆ MILICA
+RAKIĆ MILINA
+RAKIĆ MILIVOJE
+RAKIĆ MILIVOJ
+RAKIĆ MILIVOJ
+RAKIĆ MILIVOJ
+RAKIĆ MILKA
+RAKIĆ MILOŠ
+RAKIĆ MILOVAN
+RAKIĆ MILUTIN
+RAKIĆ MIODRAG
+RAKIĆ MIRA
+RAKIĆ MIRA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIROSLAVA
+RAKIĆ NATALIJA
+RAKIĆ NEBOJŠA
+RAKIĆ NEDELJKO
+RAKIĆ NENAD
+RAKIĆ NENAD
+RAKIĆ NIKOLA
+RAKIĆ NIKOLA
+RAKIĆ NOVAK
+RAKIĆ OBRAD
+RAKIĆ PAJA
+RAKIĆ PANE
+RAKIĆ PAVLE
+RAKIĆ PETAR
+RAKIĆ PETAR
+RAKIĆ PREDRAG
+RAKIĆ RADMILA
+RAKIĆ RADMILA
+RAKIĆ RADOJKA
+RAKIĆ RADOJKA
+RAKIĆ RADOSLAV DIPL ING
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RAJKO
+RAKIĆ RAJKO
+RAKIĆ RUŽICA
+RAKIĆ SAVA
+RAKIĆ SLAVKA
+RAKIĆ SLAVKO
+RAKIĆ SLOBODAN
+RAKIĆ SLOBODAN
+RAKIĆ SLOBODAN
+RAKIĆ SMILJANA
+RAKIĆ SOFIJA
+RAKIĆ STAMENKA
+RAKIĆ STEVANKA
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVICA
+RAKIĆ STOJANKA
+RAKIĆ STOJAN
+RAKIĆ SVETOMIR
+RAKIĆ SVETOZAR
+RAKIĆ TIMA
+RAKIĆ TODOR
+RAKIĆ TOMISLAV
+RAKIĆ VASILIJE
+RAKIĆ VELEMIR
+RAKIĆ VERA
+RAKIĆ VERA
+RAKIĆ VIDOSAVA
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ ZAGA
+RAKIĆ ZLATA
+RAKIĆ ZORAN
+RAKIĆ ZORKA
+RAKIĆEVIĆ STAMENA
+RAKIĆEVIĆ TIHOMIR
+RAKIĆEVIĆ ZORAN
+RAKIN ĐORĐE
+RAKIN ANTUN
+RAKIN BORISLAV
+RAKIN GOJKO
+RAKIN JELICA
+RAKIN JULIJANA
+RAKIN-MARTINOVIĆ RADMILA
+RAKIN RADOVAN
+RAKITA ANKICA
+RAKITA BOŽO
+RAKITA CVIJAN
+RAKITA CVIJO
+RAKITA JOVO
+RAKITA LJILJANA
+RAKITA MILAN
+RAKITA MLADINKO
+RAKITA PETAR
+RAKITA SIMKA
+RAKOČEVIĆ ĐORĐE
+RAKOČEVIĆ BORO
+RAKOČEVIĆ GRUJICA
+RAKOČEVIĆ MARIJAN
+RAKOČEVIĆ MARKO
+RAKOČEVIĆ MILAN
+RAKOČEVIĆ MILIJA
+RAKOČEVIĆ MIROSLAV
+RAKOČEVIĆ RADE
+RAKOČEVIĆ RADMILA
+RAKOŠ JANOŠ
+RAKOŠ KATICA
+RAKOŠ ZVONIMIR
+RAKOŠI NADA
+RAKOŠI VLADISLAV
+RAKONJAC BOGOLJUB
+RAKONJAC PUNIŠA
+RAKOVIĆ ALEKSANDAR
+RAKOVIĆ DRAGICA
+RAKOVIĆ DUŠAN
+RAKOVIĆ JUGOSLAV
+RAKOVIĆ LJUBINKA
+RAKOVIĆ MILAN
+RAKOVIĆ MILOVAN
+RAKOVIĆ NIKOLA
+RAKOVIĆ OSTOJA
+RAKOVIĆ RADOMIR
+RAKOVIĆ RATKO
+RAKOVIĆ SLAVKO
+RAKOVIĆ STANISLAV
+RAKOVIĆ TOMISLAV
+RAKOVIĆ VITOMIRKA
+RAKOVIĆ VLADO
+RAKUŠIĆ VLADIMIR
+RALETIĆ ŽIVKA
+RALETIĆ ĐORĐE
+RALETIĆ ĐURA
+RALETIĆ ANĐELKA
+RALETIĆ ANA
+RALETIĆ BOGDAN
+RALETIĆ DOBRICA
+RALETIĆ DRAGAN
+RALETIĆ DUŠAN
+RALETIĆ ILIJA
+RALETIĆ JELICA
+RALETIĆ LAZAR
+RALETIĆ LAZAR
+RALETIĆ LAZAR
+RALETIĆ LEPOSAVA
+RALETIĆ MAJA
+RALETIĆ MILAN
+RALETIĆ MILOŠ
+RALETIĆ MILOŠ
+RALETIĆ MILORAD
+RALETIĆ MIRKO
+RALETIĆ MIROSLAV
+RALETIĆ MLADEN
+RALETIĆ PETAR
+RALETIĆ-SAVIĆ JELENA
+RALETIĆ-SAVIĆ JELENA
+RALETIĆ VELJKO
+RALETIĆ VERA
+RALETIĆ ZORAN
+RALETIĆ ZORICA
+RALEVIĆ NEBOJŠA
+RALIĆ ŽIVOJIN
+RALIĆ BRANKO
+RALIĆ DRAGICA
+RALIĆ DUŠAN
+RALIĆ MARIJA
+RALIĆ MARIJA
+RALIĆ MILE
+RALIĆ MOMIRKA
+RALIĆ STEVAN
+RALIĆ STEVA
+RALJIĆ ANĐELKO
+RALJIĆ DRAGINJA
+RALJIĆ DUŠAN
+RALJIĆ NEDELJKO
+RAMAČ ANICA
+RAMAČ IVAN
+RAMAČ JULIJAN
+RAMAČ LEONA
+RAMAČ LJUBOMIR
+RAMAČ LJUBOMIR
+RAMAČ LJUBOMIR
+RAMAČ MARIJA
+RAMAČ MIHAJLO
+RAMAČ MIHAJLO
+RAMAČ MIROSLAV
+RAMAČ NADA
+RAMAČ NATALIJA
+RAMAČ PETAR
+RAMAČ SIMEON
+RAMAČ VLADIMIR
+RAMAČ ZDENKA
+RAMAĆ MILEVA
+RAMADANI ROZA
+RAMADANOV MUMUDIJA
+RAMADANOVIĆ ĐEMALJ
+RAMADANOVIĆ JAKOV
+RAMADANOVSKI NADA
+RAMADANOVSKI NEDELJKO
+RAMADANSKI DRAGIĆ
+RAMADANSKI JELENA
+RAMADANSKI MILINKA
+RAMAZANOV VIKTOR
+RAMIĆ ĐUKA
+RAMIĆ JOVANKA
+RAMIĆ LAZAR
+RAMIĆ LUKA
+RAMIĆ LUKA
+RAMIĆ MILOŠ DIPL OEC
+RAMIĆ NIKOLA
+RAMIĆ RADOJKA
+RAMIĆ STOJAN
+RAMIĆ VELIDA
+RAMLJAK VLADIMIR
+RAMLJAK ZLATKO
+RANČIĆ ŠIME
+RANČIĆ DUŠANKA
+RANČIĆ HRANISLAV
+RANČIĆ JORDAN
+RANČIĆ MILOŠ
+RANČIĆ RANKO
+RANĐELOVIĆ ĐORĐE
+RANĐELOVIĆ HRANISLAV
+RANĐELOVIĆ ILIJA
+RANĐELOVIĆ LJILJANA
+RANĐELOVIĆ LJUBIŠA
+RANĐELOVIĆ LJUBODRAG
+RANĐELOVIĆ MIRJANA
+RANĐELOVIĆ MIROSLAV
+RANĐELOVIĆ MIROSLAV
+RANĐELOVIĆ MLADEN
+RANĐELOVIĆ OBRAD
+RANĐELOVIĆ RUŽICA
+RANĐELOVIĆ SLAVOLJUB
+RANĐELOVIĆ STEVAN
+RANĐELOVIĆ TOMISLAV
+RANĐELOVIĆ VLASTIMIR
+RANĐELOVIĆ ZORAN
+RANDELJ ĐORĐE
+RANDELJ ĐURĐINKA
+RANDELJ LAZAR
+RANDELJ OLIVERA
+RANDELJ PETAR
+RANDELJ STEVAN
+RANDELJ SVETOZAR
+RANGELOV DIMITAR
+RANGELOV STEVAN
+RANGELOV STEVAN
+RANIĆ VLADISLAV
+RANIN JOVAN
+RANIN LAZAR
+RANISAV RADIVOJ
+RANISAVLJEV ŽIVKO
+RANISAVLJEV ĐORĐE
+RANISAVLJEV ĐORĐE
+RANISAVLJEV GORDANA
+RANISAVLJEV MILICA
+RANISAVLJEV MILOŠ
+RANISAVLJEV PAJA
+RANISAVLJEV RADA
+RANISAVLJEV RADMILA
+RANISAVLJEV RADMILA
+RANISAVLJEV RADOSLAV
+RANISAVLJEV SLAVOLJUB
+RANISAVLJEV STEVAN
+RANISAVLJEV TIJANA
+RANISAVLJEVIĆ ŽARKO
+RANISAVLJEVIĆ ŽELJKO
+RANISAVLJEVIĆ BOGUMILA
+RANISAVLJEVIĆ DOBRIVOJ
+RANISAVLJEVIĆ DUŠAN
+RANISAVLJEVIĆ JELENA
+RANISAVLJEVIĆ NEBOJŠA
+RANISAVLJEVIĆ RADIVOJ
+RANISAVLJEVIĆ SINIŠA
+RANISAVLJEVIĆ SLAVKA
+RANISAVLJEVIĆ VIOLETA
+RANISAVLJEVIĆ ZORAN
+RANISLAV-LARTY NADA DR
+RANITOVIĆ BOŠKO
+RANITOVIĆ BOGOLJUB
+RANITOVIĆ DIVNA
+RANITOVIĆ DRAGOSLAV
+RANITOVIĆ JELICA
+RANITOVIĆ SLAVICA
+RANITOVIĆ VELISLAV
+RANKIĆ STEVO
+RANKIĆ TOMISLAV
+RANKOV ANKICA
+RANKOV DRAGAN DR
+RANKOV DRAGOLJUB
+RANKOV GROZDA
+RANKOV IRENA
+RANKOV IVANKA
+RANKOV JOVAN
+RANKOV KOSTA
+RANKOV LJILJANA
+RANKOV LJUBICA
+RANKOV MARIJA
+RANKOV MILAN
+RANKOV MILIVOJ
+RANKOV MIROSLAV
+RANKOV NEDELJKO
+RANKOV NEDELJKO
+RANKOV OLGICA
+RANKOV PETAR
+RANKOV RADISLAV
+RANKOV RADMILA
+RANKOV RADOJKA
+RANKOV STEVAN
+RANKOV STEVAN
+RANKOV TANASIJE
+RANKOV ZORA
+RANKOVIĆ ŽIVKO
+RANKOVIĆ ANĐELKA DR
+RANKOVIĆ ANDRIJA
+RANKOVIĆ ANKA
+RANKOVIĆ BOŠKO
+RANKOVIĆ BOJAN
+RANKOVIĆ BORIVOJ
+RANKOVIĆ BRANISLAV
+RANKOVIĆ BRANKA
+RANKOVIĆ DARINKA
+RANKOVIĆ DESANKA
+RANKOVIĆ DRAGO
+RANKOVIĆ DUŠAN
+RANKOVIĆ DUŠICA
+RANKOVIĆ DUBRAVKA
+RANKOVIĆ IRENA
+RANKOVIĆ IVAN
+RANKOVIĆ JOVAN
+RANKOVIĆ LJUBICA
+RANKOVIĆ MELANIJA
+RANKOVIĆ MILICA
+RANKOVIĆ MIROSLAV
+RANKOVIĆ NIKOLA DIPL ING
+RANKOVIĆ PREDRAG
+RANKOVIĆ RADIVOJ
+RANKOVIĆ RATOMIR
+RANKOVIĆ ROZALIJA
+RANKOVIĆ SLOBODAN
+RANKOVIĆ STEVAN
+RANKOVIĆ SVETOZAR
+RANKOVIĆ SVETOZAR
+RANKOVIĆ TOMISLAV
+RANKOVIĆ VUKOSAVA
+RANKOVIĆ ZORAN
+RANOGAJEC IVAN
+RAONIĆ ĐORĐE
+RAONIĆ IKONIJA
+RAONIĆ JANKO
+RAONIĆ RADENKO
+RAONIĆ SPASOJE
+RAONIĆ VUKOLA
+RAPČO KATALIN
+RAPAIĆ DEJAN
+RAPAIĆ MIODRAG DR
+RAPAIĆ RADENKA
+RAPAIĆ STEVAN
+RAPAJIĆ ANAMARIJA
+RAPAJIĆ BORIVOJE
+RAPAJIĆ DUŠKO
+RAPAJIĆ MILAN ADVOKAT
+RAPAJIĆ MILAN
+RAPAJIĆ MILAN
+RAPAJIĆ RADOJA
+RAPAJIĆ STEVAN
+RAPAJIĆ TAMARA
+RAPIĆ BORE
+RAPIĆ DRAGOMIR
+RAPIĆ DUŠANKA
+RAPIĆ JOVAN
+RAPIĆ JOVAN
+RAPIĆ MILAN
+RAPIĆ NADA
+RAPIĆ NENAD
+RAPIĆ RADE
+RAPIĆ RUŠKO
+RAPO STJEPAN
+RAPOTI IŠTVAN
+RASPOPOVIĆ BOŠKO
+RASPOPOVIĆ MILOŠ
+RASPOPOVIĆ SLOBODAN
+RASPOPOVIĆ SVETISLAV
+RASPOPOVIĆ VLADISLAV
+RASTAVAC PETAR
+RASTIK ĐORĐE
+RASTOVAC ĐURO
+RASTOVIĆ ILIJA
+RASTOVIĆ JELENA
+RASTOVIĆ MILAN
+RASTOVIĆ MILICA
+RASTOVIĆ-PLIVELIĆ DESANKA
+RASTOVIĆ RADOJKA
+RASTOVIĆ SLOBODAN
+RASTOVIĆ STEVAN
+RASTOVIĆ VERA
+RAT FERENC
+RAT FRANJA
+RAT JAKOB
+RAT JOSIP
+RATAJAC DRAGOLJUB DR
+RATGEBER JULIJA
+RATGEBER LASLO
+RATIĆ ĐURĐINA
+RATIĆ BORA
+RATIĆ DUŠAN
+RATKELIĆ MILAN
+RATKOV ŽIVKO
+RATKOV ĐORĐE
+RATKOV ACA
+RATKOV BORIVOJ
+RATKOV CECILIJA
+RATKOV DRAGAN
+RATKOV DRAGINJA
+RATKOV DRAGINJA
+RATKOV DUŠANKA
+RATKOV DUŠAN
+RATKOV JELENA
+RATKOV JULIJANA
+RATKOV KATARINA
+RATKOV LEPOSAVA
+RATKOV MIĆO
+RATKOV MILENKO
+RATKOV MILENKO
+RATKOV MILICA
+RATKOV NENAD
+RATKOV NENAD
+RATKOV PAVLE
+RATKOV PREDRAG
+RATKOV RADE
+RATKOV RADIVOJ
+RATKOV RADOMIR
+RATKOV RUŽICA
+RATKOV SAVKA
+RATKOV SMILJANA
+RATKOV STANISLAVA
+RATKOV STANISLAV
+RATKOV VERA
+RATKOV VIDOSAVA
+RATKOV VLADIMIR
+RATKOV VLADIMIR
+RATKOV VOJISLAV
+RATKOV VUJICA
+RAUŠ KLAUDIJA
+RAUŠ RIHARD
+RAUŠENBERGER MARTIN
+RAUŠKI ĐORĐE
+RAUŠKI ANGELINA
+RAUŠKI DANILO
+RAUŠKI LJILJANA
+RAUŠKI MILANA
+RAUŠKI MILOŠ
+RAUSAVLJEVIĆ ĐORĐE
+RAUSAVLJEVIĆ DUŠANKA
+RAUZA PALKO
+RAVAJIĆ ĐURO
+RAVASI LJUBICA
+RAVIĆ NIKOLA
+RAVIĆ SLOBODANKA
+RAVLIĆ-BANJAC SNEŽANA
+RAVLIĆ PEJO
+RAVLIĆ VIDA
+RAVLIJA DRAGAN
+RAZDEVŠEK STOJANKA
+RAZIĆ DŽEMAL
+RAZMOVSKI NIKOLA
+RAZUMENIĆ-KOTROŠAN MILENA
+REČEI ILONKA
+REČKO ILEŠ
+REŠĆANSKI BOŠKO
+REŠĆANSKI BOGDAN
+REŠĆANSKI VERA
+REŠETAR ANTE
+REŠETAR STANA
+REŠETAROVIĆ JOVAN
+REŠITI ĐORĐE
+REŠNJAK ANDRIJA
+REŠNJAK LASLO
+REŠNJAK STEVAN
+REŠNJAK ZORICA
+REŽNJAK LASLO
+REŽUK JOSIP
+REĐEP DRAŠKO
+REĐEPI DŽELJAN
+REĐEPI MILAIM
+REĐEPOVIĆ ALIJA
+REBA BLAGOJE
+REBA IGOR
+REBA IGOR
+REBIĆ BOGDAN DIPL ING
+REBIĆ DRAGAN
+REBIĆ NEDELJKO
+REBIĆ NEDELJKO
+REBIĆ SIMEON
+REBIĆ SIMO
+REBIĆ SLOBODAN DR
+REBIĆ VLADIMIR
+REBRINA KATARINA
+REDŽA IBRAHIM
+REDŽEK JOVAN
+REDŽEP JUSNIJA
+REDŽEPOV ŠEVKIN
+REDŽEPOV KAMBER
+REDE RUDOLF
+REDIG VILIM
+REDLI ĐORĐE
+REDLI MARIJA
+REDLI VERA
+REGAJZ STEVAN
+REGEC ETELKA
+REGELJAC LJUBICA
+REGELJAC MARA
+REGER JOVAN
+REGL VLADIMIR
+REGODIĆ SVETOZAR
+REGOJEVIĆ MLAĐENKO
+REHAK IMRE
+REHAK LASLO
+REHAK OLGA
+REHNER MARIJA
+REHNER STAMENKA
+REINHOLC ĐEZE
+REINHOLC ĐEZE
+REINHOLZ ĐEZE
+REKA ARIF
+REKA-IVANOVIĆ DUŠICA
+REKEĆE ŠANDOR
+REKECKI ELEONORA
+REKECKI JOŽEF
+REKIĆ HUSEIN
+RELIĆ ĐORĐE
+RELIĆ ĐORĐE
+RELIĆ DARKO
+RELIĆ DIMITRIJE
+RELIĆ GOJKO
+RELIĆ JOVAN
+RELIĆ JOVICA
+RELIĆ KONSTANTIN
+RELIĆ LJUBAN
+RELIĆ MILAN
+RELIĆ MILENKO
+RELIĆ MILIVOJ
+RELIĆ MIRA
+RELIĆ PAVLE
+RELIĆ PETAR
+RELIĆ RADINKA
+RELIĆ SAVA
+RELIĆ SLAVOLJUB
+RELIĆ SOFIJA
+RELIĆ SOFIJA
+RELIĆ SPOMENKA DIPL PRAVNIK
+RELIĆ SRETA
+RELJANOVIĆ MARIJA
+RELJIĆ ĐURICA
+RELJIĆ ĐURO
+RELJIĆ BOŽIDAR
+RELJIĆ DAMJANKA
+RELJIĆ DANILO
+RELJIĆ JOVAN
+RELJIĆ LJUBOMIR
+RELJIĆ MARA
+RELJIĆ MILORAD
+RELJIĆ ROMAN
+RELJIĆ SLAVKO
+RELJIĆ SMILJA
+RELJIĆ SNEŽANA
+RELJIĆ STEVAN
+RELJIĆ STEVA
+RELJIĆ ZLATKO
+RELJIĆ ZORKA
+RELJIN DUŠANKA
+RELJIN DUŠAN
+RELJIN DUŠAN
+RELJIN IGNJAT DR
+RELJIN ILONA
+RELJIN IVAN
+RELJIN LAZAR
+RELJIN LEPOSAVA
+RELJIN MARICA
+RELJIN MILAN
+RELJIN MILAN
+RELJIN MILICA
+RELJIN MILIVOJ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILORAD
+RELJIN NADA
+RELJIN PROKOPIJE
+RELJIN RADOVAN
+RELJIN SAVA
+RELJIN SIMA
+RELJIN SLOBODAN
+RELJIN STEVAN
+RELOTA RUDOLF
+REMECKI DRAGUTIN
+REMECKI PETAR
+REMELI ANTON
+REMELI LASLO
+REMENAR DRAGUTIN
+REMER BRANISLAV
+REMLINGER ROBERT
+RENČAR ŠANDOR
+RENČAR TIVADAR
+RENČEVIĆ MILAN
+RENDULIĆ MARKO
+RENDULIĆ STOJAN
+REPŠTOK JOŽEF
+REPAŠI JOSIP
+REPAŠI STEVAN
+REPAC ŽUŽANA
+REPAC ĐORĐE
+REPAC ANA
+REPAC ISA
+REPAC JOVAN
+REPAC KOVILJKA
+REPAC MIROSLAV
+REPAC PERKICA
+REPAC PETAR
+REPAC SLAVKO
+REPAC STANIŠA
+REPAC VASILIJA
+REPIĆ ŽIVAN
+REPIĆ DANICA
+REPIĆ EMIL
+REPIĆ GIZELA
+REPIĆ IVAN
+REPIĆ MARKO
+REPIĆ MILENA
+REPIĆ MILKA
+REPIĆ VERICA
+REPIĆ ZORAN
+RESAN ANA
+RESANOVIĆ ANKA
+RESANOVIĆ DRAGAN
+RESANOVIĆ LJUBO
+RESANOVIĆ NADA
+RESANOVIĆ PERO
+RESMAN ZDRAVKO
+RESULOVSKI STOJAN
+REU LAVINEL
+REVES ANDRIJA
+REVID KATARINA
+REZANCOV KATICA
+REZEC ANTON
+REZNIČEK KARLO
+RIŽANJI IRENA
+RIĐIČKI ĐOKA
+RIĐIČKI ĐORĐE
+RIĐIČKI MILANKA
+RIĐIČKI MILAN
+RIĐIČKI SPOMENKA
+RIĐIK-GRUJIĆ ČEDOMIR
+RIĐIK-GRUJIĆ JADRANKA
+RIĐIK-GRUJIĆ VELIMIR
+RIBAR ŠANDOR
+RIBAR BELA DR
+RIBAR IMRE
+RIBAR KATICA
+RIBAREVIĆ VERA
+RIBAROV MIROSLAV
+RIBAROV SLAVICA
+RIBIČ RUŽA
+RIBIĆ ČEDO
+RIBIĆ BRANKO
+RIBIĆ FRANC
+RIBIĆ JOVAN
+RIBIĆ MIHAJLO
+RIBIĆ MILAN
+RIBIĆ PAVO
+RIBIĆ PETAR
+RIBIĆ STANKO
+RIBIĆ ZORICA
+RIBOVIĆ AMALIJA
+RIC MIHALJ DIPL OEC
+RIC RUDOLF
+RIC VESELIN
+RICA ANICA
+RICE MARGITA
+RIGO ĐULA
+RIGO LASLO
+RIHAK NANDOR
+RIHTAREC KATARINA
+RIJAVEC IVAN
+RIKER ZVONIMIR
+RIKIĆ ŽELJKO
+RIKIĆ DRAGICA
+RIKIĆ MILADIN
+RIKIĆ MILENKO
+RIL PAL
+RILAK MILOMIR
+RILKE ROBERT
+RIMŠNAJDER ROBERT
+RIMAC JOSIP
+RIMAN EGON DR
+RIMAR LEONA
+RIMAR VLADIMIR
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ĐOKA
+RIMSKI BISERKA
+RIMSKI BISERKA
+RIMSKI BRANISLAV
+RIMSKI BRANKA
+RIMSKI BRANKO
+RIMSKI JASMINA
+RIMSKI JELENA
+RIMSKI MILAN
+RIMSKI MILICA
+RIMSKI NATALIJA
+RIMSKI NOVAK
+RIMSKI SAVA
+RIMSKI SAVA
+RIMSKI SMILJA
+RIMSKI SMILJA
+RIMSKI STEVAN
+RIS ŠANDOR
+RIS ALEKSANDAR
+RIS DRAGINJA
+RIS DUŠKO
+RIS GEZA
+RIS NEDELJKO
+RIS STEVAN
+RIS TANJA
+RIS ZDRAVKO
+RISOVIĆ DUŠAN
+RISOVIĆ NEDELJKO
+RISOVIĆ NEDELJKO
+RISTA ŽELJKA
+RISTANOVIĆ CVETIN
+RISTANOVIĆ RADE
+RISTANOVIĆ RADOSLAV
+RISTANOVIĆ VERICA
+RISTANOVIĆ VOJIMIR
+RISTANOVIĆ ZDRAVKO
+RISTANOVIĆ ZORAN
+RISTANOVIĆ ZORAN
+RISTIĆ ĐORĐE DR LEKAR
+RISTIĆ ĐORĐE
+RISTIĆ ĐORĐE
+RISTIĆ ĐORĐE
+RISTIĆ ĐUJA
+RISTIĆ ĐURĐA
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSA
+RISTIĆ ANDRIJA
+RISTIĆ BOŽIDAR
+RISTIĆ BOŽIDAR
+RISTIĆ BORA
+RISTIĆ BORISLAV
+RISTIĆ BRANISLAV
+RISTIĆ BRANKO
+RISTIĆ CVJETANKA
+RISTIĆ DANILO
+RISTIĆ DARINKA
+RISTIĆ DIMITRIJE
+RISTIĆ DIMITRIJE
+RISTIĆ DIMITRIJE
+RISTIĆ DOBRIVOJE
+RISTIĆ DRAGAN
+RISTIĆ DRAGAN
+RISTIĆ DRAGIŠA
+RISTIĆ DRAGICA
+RISTIĆ DRAGOJLA
+RISTIĆ DRAGOLJUB
+RISTIĆ DRAGOLJUB
+RISTIĆ DUŠAN DR
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ GAVRILO
+RISTIĆ ISIDOR
+RISTIĆ JASMINA
+RISTIĆ JELENA
+RISTIĆ JELENA
+RISTIĆ JEREMIJA
+RISTIĆ JOVAN DR
+RISTIĆ JOVAN DR
+RISTIĆ JOVAN
+RISTIĆ KSENIJA
+RISTIĆ LABUD DR LEKAR
+RISTIĆ LAZAR
+RISTIĆ LJILJANA
+RISTIĆ LJILJANA
+RISTIĆ LJUBICA
+RISTIĆ LJUBICA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJENKA
+RISTIĆ MARKO
+RISTIĆ MIHAJLO
+RISTIĆ MILANKA
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILETA
+RISTIĆ MILIVOJE
+RISTIĆ MILKA
+RISTIĆ MILOŠ
+RISTIĆ MILOŠ
+RISTIĆ MILORAD
+RISTIĆ MILORAD
+RISTIĆ MILUN
+RISTIĆ MILUTIN
+RISTIĆ MIODRAG
+RISTIĆ MIODRAG
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MLADEN
+RISTIĆ NADA
+RISTIĆ NATALIJA
+RISTIĆ NEGOVAN
+RISTIĆ NESTOR
+RISTIĆ NIKOLA
+RISTIĆ NIKOLA
+RISTIĆ NOVICA
+RISTIĆ OLGA
+RISTIĆ PAVLE
+RISTIĆ PERA
+RISTIĆ PETAR
+RISTIĆ-POPOVIĆ MILICA
+RISTIĆ RADISAV
+RISTIĆ RAISA
+RISTIĆ RODOLJUB DR
+RISTIĆ SAVA
+RISTIĆ SAVA
+RISTIĆ SAVO
+RISTIĆ SLAĐAN
+RISTIĆ SLAVICA
+RISTIĆ SLAVICA
+RISTIĆ SLAVKO
+RISTIĆ SPOMENKA
+RISTIĆ STANIŠA
+RISTIĆ STANOJE DR
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVICA
+RISTIĆ SVETISLAV
+RISTIĆ TEMELJKO
+RISTIĆ TOMISLAV
+RISTIĆ VERICA
+RISTIĆ VITOMIR
+RISTIĆ VLADIMIR
+RISTIĆ VLADIMIR
+RISTIĆ VLADIMIR
+RISTIĆ VOJIN
+RISTIĆ VOJISLAV
+RISTIĆ ZAGORKA
+RISTIĆ ZDRAVKO
+RISTIĆ ZORAN
+RISTIĆ ZORAN
+RISTIN JOVAN
+RISTIN MIODRAG
+RISTIN MIODRAG
+RISTIVOJEVIĆ ANĐELKA
+RISTIVOJEVIĆ ANICA
+RISTIVOJEVIĆ DESIMIR
+RISTIVOJEVIĆ IGNJAT
+RISTIVOJEVIĆ RADOMIR
+RISTIVOJEVIĆ RATOMIR
+RISTIVOJEVIĆ STOJANKA
+RISTIVOJEVIĆ ZDRAVKO
+RISTOVIĆ JOVANKA
+RISTOVIĆ NEBOJŠA
+RISTOVIĆ RADIVOJE
+RISTOVIĆ RATKO
+RISTOVSKI ALEKSANDAR
+RISTOVSKI KOSTA
+RISTOVSKI LJILJANA
+RISTOVSKI LJILJANA
+RISTOVSKI LJUBO
+RISTOVSKI SIMEON
+RITER ANKICA
+RITER ANTON
+RITER FRANJA
+RITER JOŽEF
+RITER LUDVIG
+RITER NADA
+RITOC GEZA
+RITTER ŠANDOR
+RIVIĆ IVO
+RIZNIĆ BRANISLAVA
+RIZNIĆ VELJKO
+RIZNIĆ VELJKO
+RIZOVSKI DRAGO
+RIZVAN ŠUKRI
+RIZVANOVIĆ SADIK
+RMUŠ ZORICA
+RNIĆ MIHAILO
+RNJAK DANICA
+RNJAK STANKO
+ROŠIN KSENIJA
+ROŠIN ZORKO
+ROŠU KOSTA
+ROŠULJ ŽIVAN
+ROŠULJ ŽIVA
+ROŠULJ ANĐELKA
+ROŠULJ EMIL
+ROŠULJ LAZAR
+ROŠULJ MILANA
+ROŠULJ MILORAD
+ROŠULJ RADOVAN
+ROŠULJ SVETOZAR
+ROŠULJ ZORAN
+ROŠULJA VASA
+ROŠULOV STADOJE
+ROŽA BELA
+ROŽA FERENC
+ROŽA JANOŠ
+ROŽA JOVAN
+ROŽA MIRKO
+ROŽANKOVIĆ IVAN
+ROĐAK FRANJA
+ROĐENKOV ŽIVOJIN
+ROĐENKOV ĐURA
+ROĐENKOV MILOŠ
+ROBOTIĆ ANA
+ROBOTIĆ TEREZA
+ROD DANICA
+RODIĆ ČEDOMIR
+RODIĆ ČEDOMIR
+RODIĆ ŠPIRO
+RODIĆ ĐORĐE
+RODIĆ ALEKSANDAR
+RODIĆ ANDRIJA
+RODIĆ BOŽO
+RODIĆ BOŽO
+RODIĆ BOGDAN
+RODIĆ BORISLAV
+RODIĆ BORISLAV
+RODIĆ BRANISLAV
+RODIĆ DANICA
+RODIĆ DRAGAN
+RODIĆ DRAGOMIR
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ GOJKO
+RODIĆ GOJKO
+RODIĆ GOJKO
+RODIĆ JELISAVETA
+RODIĆ JOVO
+RODIĆ LEPA
+RODIĆ LJILJANA
+RODIĆ MANOJLO
+RODIĆ MIĆA
+RODIĆ MIĆO
+RODIĆ MILAN
+RODIĆ MILENA
+RODIĆ MILICA
+RODIĆ MILICA
+RODIĆ MILKA
+RODIĆ MILOŠ
+RODIĆ MILORAD
+RODIĆ MIRKO
+RODIĆ MIROSLAV
+RODIĆ NATALIJA
+RODIĆ NEĐO
+RODIĆ NEDELJKO
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ OLGA
+RODIĆ PETAR DIPL ING
+RODIĆ PETAR
+RODIĆ PETRA
+RODIĆ RADE
+RODIĆ RANKO
+RODIĆ SLAVKO
+RODIĆ SMILJA
+RODIĆ SRETEN
+RODIĆ STANKO
+RODIĆ STEVAN
+RODIĆ SUZANA
+RODIĆ SUZANA
+RODIĆ SVETKO
+RODIĆ-TOMLJANOVIĆ MIRJANA
+RODIĆ VERICA
+RODIĆ ZORAN
+ROGAČ SVETLANA
+ROGAČ SVETOZAR
+ROGAČEVIĆ OBRAD
+ROGALJSKI JELENA
+ROGALO ANTON
+ROGAN SVETOZAR
+ROGANOVIĆ KATARINA
+ROGANOVIĆ LUKA
+ROGANOVIĆ MILANKA
+ROGANOVIĆ NADA
+ROGANOVIĆ NOVAK
+ROGANOVIĆ SLOBODAN
+ROGANOVIĆ STEVO
+ROGANOVIĆ TANJA
+ROGANOVIĆ VELIZAR
+ROGAVAC MILAN
+ROGIĆ ALEKSA
+ROGIĆ MILORAD
+ROGIĆ SAVA
+ROGIĆ VELJKO
+ROGIĆ VESELIN
+ROGIĆ VESNA
+ROGIĆ ZORAN
+ROGLIĆ IVAN
+ROGLIĆ LJUBOMIR
+ROGLIĆ MILAN
+ROGLIĆ VESNA
+ROGLIĆ VESNA
+ROGOŽARSKI STEVANKA
+ROGULIĆ JELENA
+ROGULJA ĐORĐE
+ROGULJA ILIJA
+ROGULJA JOVAN
+ROGULJA NIKOLA
+ROGULJA PAVLE DR
+ROGULJIĆ MILORAD
+ROGULJIĆ NEDELJKO
+ROGULJIĆ PREDRAG
+ROGULJIĆ ZDRAVKO
+ROJKA ANDREJ
+ROJKA ANDREJ
+ROJNIK LJUBOMIR
+ROKA ŽUŽANA
+ROKA JANOŠ
+ROKA VALERIJA
+ROKAI PETAR
+ROKIĆ DUŠAN
+ROKIĆ MILENKO
+ROKLICER FRANJA
+ROKLICER JOSIP
+ROKNIĆ JULKICA
+ROKNIĆ MILENKO
+ROKNIĆ MOMČILO
+ROKSANDIĆ ADAM
+ROKSANDIĆ MILAN
+ROKSANDIĆ SIMA
+ROKSANDIĆ VLADIMIR
+ROKSANDIĆ VLADO
+ROKSIĆ SLOBODAN
+ROKVIĆ BOGDAN
+ROKVIĆ BRANISLAV
+ROKVIĆ DUŠAN
+ROKVIĆ GOJKO
+ROKVIĆ LAZAR
+ROKVIĆ MARKO
+ROKVIĆ MILAN
+ROKVIĆ MILICA
+ROKVIĆ MILORAD
+ROKVIĆ NIKOLA DIPL POLITIKOLOG
+ROKVIĆ OMILJKO
+ROKVIĆ RADIVOJ
+ROKVIĆ RADOJKA
+ROKVIĆ RANKO
+ROKVIĆ SINIŠA
+ROKVIĆ VESELKO
+ROKVIĆ ZDRAVKO
+ROLAND TOMISLAV
+ROLOVIĆ DUŠANKA
+ROLOVIĆ OLGA
+ROM BRANKA
+ROMČEV MIROSLAV
+ROMAN JELENA
+ROMAN LJUBICA
+ROMAN MINEA
+ROMAN MIRON
+ROMAN ROMKO
+ROMANDIĆ ANKICA
+ROMANDIĆ JELENA
+ROMANDIĆ STANIMIR
+ROMANELI GINO
+ROMANIĆ DUŠAN
+ROMANIĆ ERŽEBET
+ROMANIĆ JOC0
+ROMANIĆ MARIJA
+ROMANKIV MIHAJLO
+ROMANOV JOSIP
+ROMANOV SNEŽANA
+ROMANOVIĆ ĐORĐE DIPL PRAVNIK
+ROMANOVIĆ ĐORĐE
+ROMANOVIĆ ALEKSANDAR
+ROMANOVIĆ ILINKA
+ROMANOVIĆ MILAN
+ROMANOVIĆ NADA
+ROMAS JOSIP
+ROMIĆ ETA
+ROMIĆ JANKO
+ROMIĆ LJUBOMIR
+ROMIĆ LJUBOMIR
+ROMIĆ MLADEN
+ROMIĆ NENAD
+ROMIĆ PAVLE
+ROMIĆ PREDRAG
+ROMODA IŠTVAN
+ROMODA KARLO
+ROMODA MARIJA
+RONČELI KATICA
+RONČEVIĆ BOGDAN
+RONČEVIĆ DRAGAN
+RONČEVIĆ IKONIJA
+RONČEVIĆ KOSTA
+RONČEVIĆ MILE
+RONČEVIĆ NADA
+RONČEVIĆ OBRAD
+RONČEVIĆ PETAR
+RONČEVIĆ PETAR
+RONČEVIĆ PETAR
+RONČEVIĆ RADIVOJE
+RONČEVIĆ SAVETA
+RONČEVIĆ SAVO
+RONČEVIĆ STANA
+RONČEVIĆ STANIMIR
+RONČEVIĆ STANIMIR
+RONČEVIĆ STEVAN
+RONČEVIĆ STEVAN
+RONČEVIĆ VERA
+RONAI MIRKO DIPL ING
+RONTO FRANCIŠKA
+RONTO ILONKA
+RONTO JAKOB
+RONTOVIĆ RADOSLAV
+ROR DESA
+RORBAHER MAGDOLNA
+ROSIĆ ĐURO
+ROSIĆ BOGDAN
+ROSIĆ DRAGANA
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DUŠAN
+ROSIĆ GROZDANA
+ROSIĆ ILIJA
+ROSIĆ LJILJANA
+ROSIĆ MILENA
+ROSIĆ MILICA
+ROSIĆ MILORAD
+ROSIĆ MIODRAG
+ROSIĆ NIKOLA
+ROSIĆ OSTOJA
+ROSIĆ VLADIMIR
+ROSIĆ ZORAN
+ROSLAVLJEV VOJISLAV
+ROSO IVAN
+ROSO MARTA
+ROT DEZIDER
+ROT FRANJA
+ROTARIU TIBERIJE
+ROTBART VLADISLAV
+ROTIM IVAN
+ROVČANIN EUĐENIJA
+ROVČANIN UZEIR
+ROVČANIN VESELIN
+ROVIĆ BRANISLAV
+ROVIĆ DIMITRIJE
+ROVO MIHALJ
+ROZENTAL DRAGICA
+ROZENTAL KARLO
+ROZENTAL MARTON
+ROZIĆ ANTE
+ROZMARING IŠTVAN
+ROZMIROV DRAGAN
+ROZMIROV MILENKO
+RUŠITI ALIJA
+RUŠKO ERŽEBET
+RUŠKUC ĐORĐE
+RUŠKUC ATANASIJE
+RUŠKUC MARGARITA
+RUŠKUC MARTA
+RUŠKUC PAVLE
+RUŠKUC STEVAN
+RUŠKUC SVETISLAV
+RUŠKUC VESELIN
+RUŠKUC VLADIMIR
+RUŽANOVIĆ DRAGOLJUB
+RUŽANOVIĆ MARIJA
+RUŽIČIĆ ĐORĐE
+RUŽIČIĆ BOŠKO
+RUŽIČIĆ MILAN
+RUŽIČIN DANICA
+RUŽIČIN RADIVOJ
+RUŽIČKA ĐURA
+RUŽIČKA RUŽA
+RUŽIĆ ŽARKO
+RUŽIĆ ALEKSANDAR
+RUŽIĆ DRAŽANA
+RUŽIĆ DUŠAN
+RUŽIĆ DUŠAN
+RUŽIĆ DUŠAN
+RUŽIĆ EMA
+RUŽIĆ GORDANA
+RUŽIĆ IVICA
+RUŽIĆ JOVAN
+RUŽIĆ JOVO
+RUŽIĆ JULKA
+RUŽIĆ KRSTO
+RUŽIĆ MARIJA
+RUŽIĆ MARIJA
+RUŽIĆ MILAN
+RUŽIĆ MILAN
+RUŽIĆ MILIVOJ
+RUŽIĆ MIRA
+RUŽIĆ MIRJANA
+RUŽIĆ MIRJANA
+RUŽIĆ MIRKO
+RUŽIĆ NIKOLA
+RUŽIĆ NIKOLA
+RUŽIĆ PAVA
+RUŽIĆ PETAR
+RUŽIĆ RADMILA
+RUŽIĆ RADOMIR
+RUŽIĆ SLOBODAN
+RUŽIĆ SMILJANA
+RUŽIĆ STANKO
+RUŽIĆ-STARI VESNA
+RUŽIĆ STJEPAN
+RUŽIĆ SVETOLIK
+RUŽIĆ VELJKO
+RUŽIĆ VLADIMIR DIPL ING
+RUŽIĆ ZORAN
+RUŽIĆ ZORAN
+RUŽIN ČEDOMIR
+RUŽIN MILORAD
+RUŽNICKI IVAN
+RUĐA NEMANJA
+RUĐA ZORAN
+RUĐA ZORAN
+RUBEŽIĆ MILOVAN
+RUBEŽIĆ SLOBODAN
+RUBIN MILAN
+RUBUŠ AGNEZA
+RUBUŠ JOŽEF
+RUDAN MARKO
+RUDAN RADIVOJE
+RUDEŽ ILIJA
+RUDEŽ MIĆO
+RUDEŽ PERA
+RUDEK JAROSLAV
+RUDEK NIKOLA
+RUDEK NIKOLA
+RUDIĆ DARKO
+RUDIĆ DIMITRIJE
+RUDIĆ DRAGAN
+RUDIĆ DUŠAN
+RUDIĆ IMRE
+RUDIĆ IVAN
+RUDIĆ IVAN
+RUDIĆ JOSIP
+RUDIĆ LAZAR
+RUDIĆ MARKO
+RUDIĆ MARKO
+RUDIĆ MILKA
+RUDIĆ NEDELJKO
+RUDIĆ NIKOLA
+RUDIĆ PERA
+RUDIĆ STEVAN
+RUDIĆ STEVICA
+RUDIĆ-VRANIĆ NEDELJKA
+RUDOLF KLAJN
+RUDOLF OLGA
+RUDOLF SPASOJE
+RUDOLF ZORAN
+RUDOVIĆ DANILO
+RUDOVIĆ ILIJA
+RUDOVIĆ JUGOSLAV
+RUDOVIĆ MIRJANA
+RUDOVIĆ ZORAN
+RUFČESKI SLOBODAN
+RUJEVIĆ JADRANKA
+RUJEVIĆ MILEVA
+RUKAVINA-ŠLIBAR HERMINA
+RUKAVINA ALEKSANDAR
+RUKAVINA BARICA
+RUKAVINA DESPINA
+RUKAVINA DOBRILA
+RUKAVINA DUŠAN
+RUKAVINA JURE
+RUKAVINA KREŠIMIR
+RUKAVINA LJUBICA
+RUKAVINA MARIJA
+RUKAVINA MILKA
+RUKAVINA RUDOLF
+RUKAVINA RUDOLF
+RUKAVINA STEVAN
+RUKAVINA ZVONIMIR
+RUMAN MIHAJLO
+RUNIĆ MARIJA
+RUNIĆ MILAN DIPL ING
+RUNJAJIĆ ILIJA
+RUNJANIN ĐORĐE
+RUNJANIN VLADISLAV
+RUNJANIN VOJO
+RUNJIĆ AMALIJA
+RUNJIĆ DRAGAN
+RUNJIĆ DRAGICA
+RUNJIĆ GAVRILO
+RUNJIĆ GORAN
+RUNJO JOVAN
+RUNTIĆ BOŠKO
+RUPČIĆ VLADIMIR
+RUPA ATILA
+RUPAR BRANISLAV
+RUPAR ERŽEBET
+RUPIĆ ŽIVKO
+RUPNJAK BRANISLAV
+RUS ĐURĐINKA
+RUS DRAGAN
+RUS IVANKA
+RUS JOSIP
+RUS MARGITA
+RUS MARIJA
+RUS MILOSAVA
+RUS RADA
+RUS SLAVICA
+RUS SMILJA
+RUS SVETLANA
+RUS VERA
+RUS VUKOSAVA
+RUSIĆ ANDRIJA
+RUSKAJI SLAVOMIR
+RUSKI DIMITRIJE
+RUSKI LAZAR
+RUSKOVSKI ĐORĐE
+RUSKOVSKI DRAGICA
+RUSKOVSKI MAGDALENA
+RUSMIR RADMILA
+RUSMIROVIĆ BILJANA
+RUSMIROVIĆ BILJANA
+RUSOV ŽARKO
+RUSOV ŽIVKA
+RUSOV BRANKA
+RUSOV BRANKO
+RUSOV DRENKA
+RUSOV KATICA
+RUSOV KOSTA
+RUSOV KRISTINA
+RUSOV MARIJA
+RUSOV MILAN
+RUSOV MILORAD
+RUSOV NADA
+RUSOV PAVLE
+RUSOV SLOBODAN
+RUSOV VLADIMIR
+RUSOVAN ŽIVICA
+RUSOVAN DRAGOLJUB
+RUSOVAN MILAN
+RUSOVAN MILAN
+RUSTEMAGIĆ ERVIN
+RUSTEMI ŠABAN
+RUTEŠIĆ JOVICA
+RUTIĆ MILORAD
+RUTONIĆ JULKICA
+RUTONIĆ-KOLENDA VIDOSAVA
+RUTONIĆ LAZAR
+RUTONIĆ LAZAR
+RUTONJSKI DUŠAN
+RUTONJSKI JELICA
+RUTONJSKI JOVANKA
+RUTONJSKI NADA
+RUTONJSKI SLOBODAN
+RUTONJSKI VASA
+RUTONSKI ĐORĐE
+RUTOVIĆ BOŠKO
+SAČEK MIROSLAV
+SAČER ROKI
+SAČIĆ MARIJA
+SABADI LASLO
+SABADI MIRJANA
+SABADKA ŠANDOR
+SABADKA ILONKA
+SABADKA VALERIJA
+SABADOŠ ŠANDOR
+SABADOŠ ĐURA
+SABADOŠ IVAN
+SABADOŠ JANKO
+SABADOŠ JANKO
+SABADOŠ JANKO
+SABADOŠ JOAKIM
+SABADOŠ LJUBOMIR
+SABADOŠ MIŠA
+SABADOŠ MIHAJLO
+SABADOŠ MIHAJLO
+SABADOŠ MIROSLAV
+SABADOŠ PAVLINA
+SABADOŠ RUŽICA
+SABADOŠ SLAVNA
+SABADOŠ SLAVOMIR
+SABADOŠ SRBISLAV
+SABADOŠ STEVAN
+SABADOŠ VLADIMIR
+SABADOŠ VLADIMIR
+SABADOŠ ZDENKA
+SABADUŠ JOVAN DIPL ING
+SABADUŠ STEVAN
+SABATKA STEVAN
+SABATUŠ BORISLAV
+SABATUŠ DRAGOLJUB
+SABATUŠ TOMISLAV
+SABLIĆ BRANKO
+SABLJAK DRAGAN
+SABLJAK FRANJO
+SABLJAK MARIJAN
+SABLJAKOVIĆ ESAD
+SABLJAR ĐORĐE
+SABLJAR MANOJLO
+SABLJAR MILAN
+SABLJAR TEODOR
+SABLJAREVIĆ VERICA
+SABLJIĆ DANILO DIPL PRAVNIK
+SABLJIĆ DARA
+SABLJIĆ GORDANA
+SABLJOV IŠTVAN
+SABLJOV MILICA
+SABO ŠANDOR
+SABO ŠANJIKA
+SABO ĐEZE
+SABO ĐORĐE
+SABO ĐORĐE
+SABO ALEKSANDAR
+SABO ALEKSANDAR
+SABO ANA DR
+SABO ANA
+SABO ANA
+SABO ANDRAŠ
+SABO ANDRAŠ
+SABO ANICA
+SABO ANICA
+SABO BERTALAN
+SABO DRAGAN
+SABO ELIZABETA
+SABO EMIL
+SABO ERŽEBET
+SABO ERŽEBET
+SABO ERNE
+SABO ERNE
+SABO ESTER
+SABO FERENC
+SABO FERENC
+SABO FRANJA
+SABO FRANJA
+SABO FRANJO
+SABO GAŠPAR
+SABO GABOR
+SABO GERGELJ
+SABO GIZELA
+SABO GORDANA
+SABO HILDA
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IBOLJKA
+SABO IDA
+SABO ILONA
+SABO IMRE
+SABO IMRE
+SABO IVAN
+SABO JANIKA
+SABO JANOŠ
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JULIA
+SABO JULIJANA
+SABO KAROLINA
+SABO KATICA
+SABO KATICA
+SABO LADISLAV
+SABO LADISLAV
+SABO LADISLAV
+SABO LJUBOMIR
+SABO MARIJA
+SABO MARTA
+SABO MIHAJLO
+SABO MILICA
+SABO NIKOLA
+SABO OLIVERA
+SABO PAVLE
+SABO PETAR
+SABO PETAR
+SABO PETAR
+SABO PIŠTA
+SABO ROZALIJA
+SABO SNIJEŽANA
+SABO STEVAN
+SABO TEREZIJA
+SABO TIBOR
+SABO VALERIJA
+SABO ZOLTAN
+SABO ZOLTAN
+SABOŠOTI FABIJAN
+SABOL JAROSLAV
+SABOL JELENA
+SABOLČKI ANDRIJA
+SABOLČKI ANDRIJA
+SABOLČKI ANDRIJA
+SABOLČKI ZOLTAN
+SABOLOVIĆ BORIS
+SABOV BORIVOJE
+SABOVLJEVIĆ RADOVAN
+SADŽAK LJUBICA
+SADŽAKOV DRAGOMIR
+SADŽAKOV DUŠANKA
+SADŽAKOV MIROSLAV
+SADŽAKOV OLGA
+SADŽAKOV PETAR
+SADŽAKOV RADOVAN
+SADŽAKOV RADOVAN
+SADŽAKOV VIDOSAVA
+SADŽAKOV ZORAN
+SADIĆ RADIVOJ
+SADIKU SADIK
+SAITOV ŠAHIM
+SAJFERT ĐULA
+SAJFERT JOHAN
+SAJFERT LJUBIŠA
+SAJFERT LJUBIŠA
+SAJFERT MARGIT
+SAJFERT MARIJA
+SAJIĆ MILIVOJE
+SAJKO BRANKA
+SAJKO IŠTVAN
+SAJKO MARGITA
+SAJKO RUŽICA
+SAJKO ZOLTAN
+SAJLER FERENC
+SAJTOVIĆ DRAGINJA
+SAKAČ BORISLAV LEKAR
+SAKAČ FERENC
+SAKAČ IŠTVAN
+SAKAČ JANKO
+SAKAČ JANKO
+SAKAČ JOVAN
+SAKAČ JULIJANA
+SAKAČ JULIJAN
+SAKAČ LJUDEVIT
+SAKAČ MAGDA
+SAKAČ MARIJA
+SAKAČ MIHAILO
+SAKAČ SIMA
+SAKAČ SVETLANA
+SAKAČ VASILIJE
+SAKAČ VLADIMIR ADVOKAT
+SAKAČ VLADIMIR
+SAKAČ VLADIMIR
+SAKAL ADELA
+SAKAL AUGUSTINA
+SAKAL GABOR
+SAKAL JOŽEF
+SAKAL MARIJA
+SAKAL MARIJA
+SAKALAŠ OTO
+SAKAN DALIBOR
+SAKOVIĆ ALIJA
+SAKOVIĆ STOJAN
+SAKULSKI MILAN
+SALAČ ĐURO
+SALAG EVGENIJE
+SALAG JANKO
+SALAG LJUBA
+SALAI ERŽEBET
+SALAI ESTER
+SALAI-GOMBAR RUŽA
+SALAI IŠTVAN NOVINAR
+SALAI JELISAVETA
+SALAI LADISLAV
+SALAI LASLO
+SALAJ FRANJO
+SALAJ JANKO
+SALAJ JOŽEF
+SALAJ MIRJANA
+SALAJ RUDOLF
+SALAK JANKO
+SALAK VLADIMIR
+SALAK VLADIMIR
+SALAMUN ANA
+SALAMUN BOSILJKA
+SALAMUN ILIJA
+SALAMUN JANKO
+SALAMUN JOAKIM
+SALAMUN JOAKIM
+SALAMUN NATALIJA
+SALAMUN SILVESTER
+SALAMUN VLADIMIR
+SALAPURA MILE
+SALAPURA NEDELJKO
+SALAPURA PETAR
+SALATIĆ MILOVAN
+SALATIĆ PETAR MR OEC
+SALATIĆ VELIMIR
+SALDUM VIDA
+SALETA ANTUN
+SALIĆ MILAN
+SALIBEGOVIĆ MUSTAFA
+SALIHOVIĆ ISMET
+SALIJA SEFER
+SALIJEVIĆ ŠEĆERIJA
+SALKAI ILONA
+SALKAI LASLO
+SALMA ŠANDOR
+SALMA GEZA
+SALMA JOŽEF PROF DR
+SALMA JOSIP
+SALMA PETAR
+SALMA TIBOR
+SALMA TIBOR
+SALOCKI STEVAN
+SALONSKI BOŽIDAR
+SALONSKI JELENA
+SALONSKI MILORAD
+SALONSKI MIRJANA
+SALONSKI MIROSLAV
+SALONSKI RUŽA
+SALONTAI JULIJANA
+SALOPEK BRANKO
+SALOV JOVAN
+SAMAC IVANKA
+SAMAC MIRKO
+SAMARĐIĆ BRANISLAVA
+SAMARDŽIĆ ŽARKO
+SAMARDŽIĆ ADAM
+SAMARDŽIĆ BOŠKO
+SAMARDŽIĆ BOŠKO
+SAMARDŽIĆ BORA
+SAMARDŽIĆ BORA
+SAMARDŽIĆ BRANISLAV
+SAMARDŽIĆ BRANKO
+SAMARDŽIĆ DANILO
+SAMARDŽIĆ DANILO
+SAMARDŽIĆ DESA
+SAMARDŽIĆ DRAGAN
+SAMARDŽIĆ DUŠAN
+SAMARDŽIĆ GOJKO
+SAMARDŽIĆ ILIJA
+SAMARDŽIĆ IVAN
+SAMARDŽIĆ KRSTA
+SAMARDŽIĆ LJUBO
+SAMARDŽIĆ MILAN
+SAMARDŽIĆ MILIJA
+SAMARDŽIĆ MILOŠ
+SAMARDŽIĆ MILOŠ
+SAMARDŽIĆ MILOJKO
+SAMARDŽIĆ MILORAD
+SAMARDŽIĆ MILOSAV
+SAMARDŽIĆ MIODRAG
+SAMARDŽIĆ MIRA
+SAMARDŽIĆ NEĐA
+SAMARDŽIĆ NOVICA
+SAMARDŽIĆ OLGA
+SAMARDŽIĆ OSTOJA
+SAMARDŽIĆ RADOJKA
+SAMARDŽIĆ RADOSLAV
+SAMARDŽIĆ RADOVAN
+SAMARDŽIĆ RAJKO
+SAMARDŽIĆ RATKO
+SAMARDŽIĆ ROZINA
+SAMARDŽIĆ SAVKA
+SAMARDŽIĆ SAVO
+SAMARDŽIĆ SPOMENKA
+SAMARDŽIĆ SRETEN
+SAMARDŽIĆ SRETEN
+SAMARDŽIĆ-STANIŠIĆ MILANKA
+SAMARDŽIĆ SVETLANA
+SAMARDŽIĆ VASILIJA
+SAMARDŽIĆ VASO
+SAMARDŽIĆ VELIMIR
+SAMARDŽIĆ VLADO
+SAMARDŽIĆ VUKAŠIN
+SAMARDŽIĆ ZDRAVKO
+SAMARDŽIĆ ZORAN
+SAMARDŽIĆ ZUZANA
+SAMARDŽIJA ĐURĐINKA
+SAMARDŽIJA ĐURAĐ
+SAMARDŽIJA ĐURA
+SAMARDŽIJA BOŠKO
+SAMARDŽIJA DESA
+SAMARDŽIJA DUŠAN
+SAMARDŽIJA GORICA
+SAMARDŽIJA JELENA
+SAMARDŽIJA LJUBICA
+SAMARDŽIJA LJUBICA
+SAMARDŽIJA MARIJA
+SAMARDŽIJA MARIJA
+SAMARDŽIJA MILANKA
+SAMARDŽIJA MILAN
+SAMARDŽIJA MILAN
+SAMARDŽIJA MILE
+SAMARDŽIJA MIRKO
+SAMARDŽIJA MIROSLAV
+SAMARDŽIJA NEBOJŠA
+SAMARDŽIJA NOVICA
+SAMARDŽIJA PETAR
+SAMARDŽIJA RADE
+SAMARDŽIJA RADE
+SAMARDŽIJA RANKO
+SAMARDŽIJA STOJAN
+SAMARDŽIJEVIĆ MIROSLAV
+SAMBRAILO BRUNO
+SAMEC BOŽENKA
+SAMII ABBAS
+SAMOČETA ALEKSANDRA
+SAMOČETA MILE
+SAMOČETA NEVENKA
+SAMOČETA RADOMIR
+SAMOJLIK NIKOLA
+SAMOKOVLIJA MARKO
+SAMOLOV VELJKO
+SAMOLOVČEV IVANKA
+SAMSONOV NIKOLA DIPL ING
+SANČANIN MILIVOJ
+SANADER ŽIVKO
+SANADER ŽIVKO
+SANADER JELENA
+SANADER RADOVAN
+SANADER SLOBODAN
+SANADER VERA
+SANDIĆ BRANIMIR
+SANDIĆ IVAN
+SANDIĆ SVETLANA
+SANDIKI APOSTOL
+SANDIKI KOSTA
+SANDIKI KOSTA
+SANKOVIĆ BORKO
+SANKOVIĆ LJUBINKA
+SANKOVIĆ MILORAD
+SANKOVIĆ MIRA
+SANKOVIĆ PETAR
+SANKOVIĆ SABINA
+SANKOVIĆ SVETOZAR
+SANTAI ILONA
+SANTO FRANJA
+SANTO KAROLJ
+SANTO LADISLAV DIPL ING
+SANTO ZOLTAN
+SANTO ZOLTAN
+SANTOVAC DRAGAN
+SANTOVAC LJUBINKA
+SANTOVAC MILOŠ
+SANTOVAC PETAR
+SANTOVAC STEVAN
+SANTRAČ ĐURĐINKA
+SANTRAČ DRAGOLJUB
+SANTRAČ GORDANA
+SANTRAČ MILAN
+SANTRAČ MILORAD
+SANTRAČ MOMČILO
+SANTRAČ NIKOLA
+SANTRAČ RATKO
+SANTRAČ SAVO
+SANTRAČ SLAVKO
+SAPUNDŽIĆ-MATIĆ MIRJANA
+SAPUNDŽIĆ MILAN
+SAPUNDŽIĆ MIRA
+SAPUNDŽIĆ TATJANA
+SAPUNDŽIJA ERŽEBET
+SAPUNDŽIJA MARIJA
+SARČEV NADICA
+SARČEV RADIVOJ
+SARAČEVIĆ SRBOLJUB
+SARAFIJANOVIĆ NIKOLA
+SARAJLIJA DRAGOMIR
+SARAMANDIĆ MOMIR
+SARAMANDIĆ NEDELJKO
+SARANDA VASILJKA
+SARAPKA KATICA
+SARATLIĆ MILAN
+SARATLIĆ SRBOLJUB
+SARAVOLAC LAZAR VETERINAR
+SARAVOLAC MAGDALENA
+SARAVOLAC MIRJANA
+SARAVOLAC MIRJANA
+SARAVOLAC SINIŠA DR
+SARAVOLAC SLAVKO
+SARAVOLAC SVETLANA
+SARIĆ ĐURA
+SARIĆ DANILO
+SARIĆ IVAN
+SARIĆ LEPOSAVA
+SARIĆ MARINKO
+SARIĆ MILOŠ
+SARIĆ MILOJE DR
+SARIĆ RADOŠ
+SARIĆ RATKO
+SARIĆ TIBOR
+SARIĆ VOJIN
+SARIKAS SNEŽANA
+SARIKAS VASILIJE
+SARKA ARPAD
+SARKA MIHALJ
+SARKOTIĆ FRANJA
+SARMEŠ MARIJA DIPL PRAVNIK
+SAROV LAZAR
+SARVAŠ ŠANDOR
+SARVAŠ JANOŠ
+SARVAK ALEKSA
+SARVAN DRAGOLJUB
+SARVAN VJERA
+SAS JENE
+SASIK BORISLAV
+SATARIĆ BRANISLAV
+SATARIĆ MILJKO DR
+SATKANOVIĆ HABIB
+SAUER JELICA
+SAUER MARGITA
+SAUER PAVLE
+SAUER ROSA
+SAUER SMILJANA
+SAUSMAN LASLO
+SAUZER FRANJO
+SAVČIĆ DRAGAN
+SAVČIĆ MILANA
+SAVČIĆ MILIVOJE
+SAVČIĆ MILIVOJ
+SAVČIĆ MIROSLAV
+SAVČIĆ SLOBODAN
+SAVA FRANJA
+SAVANOVIĆ BRANKO
+SAVANOVIĆ DRAGOLJUB
+SAVANOVIĆ DUŠAN
+SAVANOVIĆ JOVAN
+SAVANOVIĆ JOVO
+SAVANOVIĆ LJUBOMIR
+SAVANOVIĆ MARICA
+SAVANOVIĆ MARINKO
+SAVANOVIĆ MILAN
+SAVANOVIĆ MILOŠ
+SAVANOVIĆ MIRKO
+SAVANOVIĆ NENAD
+SAVANOVIĆ SNEŽANA
+SAVANOVIĆ STOJAN
+SAVANOVIĆ ZDRAVKA
+SAVATIĆ DRAGOMIR
+SAVATIĆ VLADIMIR
+SAVATOVIĆ BOSILJKA
+SAVATOVIĆ DRAGAN
+SAVATOVIĆ DUŠAN
+SAVATOVIĆ RADOVAN
+SAVELJIĆ ČEDOMIR
+SAVELJIĆ DUŠAN
+SAVELJIĆ MARIJA
+SAVELJIĆ SVETLANA
+SAVELJIĆ VELJKO
+SAVESKI MILČO
+SAVESKI ZORAN
+SAVIČEVIĆ GOJKO
+SAVIČIĆ GOJKO
+SAVIČIĆ STOJAN
+SAVIČIN LJUBICA
+SAVIĆ ČEDOMIR
+SAVIĆ ČEDO
+SAVIĆ ĆETKO
+SAVIĆ ŽIVKA
+SAVIĆ ŽIVKA
+SAVIĆ ĐOKA
+SAVIĆ ĐORĐE DIPL ING
+SAVIĆ ĐORĐE
+SAVIĆ ĐURĐIJA
+SAVIĆ ALEKSANDRA
+SAVIĆ ALEKSA
+SAVIĆ ANĐELKA
+SAVIĆ ANĐELKA
+SAVIĆ ANA
+SAVIĆ ANDRIJA
+SAVIĆ ANDRIJA
+SAVIĆ ANGELINA
+SAVIĆ BLAGOJE
+SAVIĆ BLAGOJE
+SAVIĆ BOŽIDAR
+SAVIĆ BOŽIMIR DR
+SAVIĆ BOGDAN
+SAVIĆ BORISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANKO
+SAVIĆ CVETANKA
+SAVIĆ CVETKO
+SAVIĆ DAMJAN DR LEKAR
+SAVIĆ DANICA
+SAVIĆ DARA
+SAVIĆ DEJAN
+SAVIĆ DESANKA
+SAVIĆ DESIMIR
+SAVIĆ DOBRILA
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGIŠA
+SAVIĆ DRAGOSLAV
+SAVIĆ DRAGO
+SAVIĆ DRAGUTIN
+SAVIĆ DRAGUTIN
+SAVIĆ DUŠANKA
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ GEORGIJE
+SAVIĆ GLIGORIJE
+SAVIĆ GOJKO
+SAVIĆ GORAN
+SAVIĆ GOSTIMIR
+SAVIĆ GROZDANA
+SAVIĆ ILIJA
+SAVIĆ ILIJA
+SAVIĆ IVAN
+SAVIĆ JADRANKA
+SAVIĆ JELA
+SAVIĆ JELENA
+SAVIĆ JELENA
+SAVIĆ JELICA
+SAVIĆ JEVTO
+SAVIĆ JOVANKA
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ KATICA
+SAVIĆ KATICA
+SAVIĆ KOSTA
+SAVIĆ KSENIJA
+SAVIĆ LAZAR
+SAVIĆ LAZAR
+SAVIĆ LENKA DR
+SAVIĆ LJILJANA
+SAVIĆ LJILJANA
+SAVIĆ LJUBIŠA
+SAVIĆ LJUBICA
+SAVIĆ LJUBOMIR
+SAVIĆ LJUBOSLAV
+SAVIĆ LUKA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARINA
+SAVIĆ MARINA
+SAVIĆ MARKO
+SAVIĆ MEDŽO
+SAVIĆ MIHAJLO
+SAVIĆ MILADIN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILENA
+SAVIĆ MILENKO
+SAVIĆ MILENKO
+SAVIĆ MILENKO
+SAVIĆ MILIJANA
+SAVIĆ MILISAV
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJ
+SAVIĆ MILIVOJ
+SAVIĆ MILKO
+SAVIĆ MILOŠ DIPL ING
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILORAD
+SAVIĆ MILORAD
+SAVIĆ MILORAD
+SAVIĆ MILOSAVA
+SAVIĆ MILOSAV
+SAVIĆ MILOVAN
+SAVIĆ MILUTIN
+SAVIĆ MIODRAG
+SAVIĆ MIODRAG
+SAVIĆ MIRJANA
+SAVIĆ MIRKO
+SAVIĆ MIRKO
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MLADEN
+SAVIĆ MOMČILO
+SAVIĆ NADA
+SAVIĆ NADEŽDA
+SAVIĆ NATAŠA
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NENAD
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NINOSLAV
+SAVIĆ NOVO
+SAVIĆ OLGA
+SAVIĆ OLIVERA
+SAVIĆ OLIVERA
+SAVIĆ PANTELIJA
+SAVIĆ PAVLE
+SAVIĆ PERA
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PLANINKA
+SAVIĆ PREDRAG
+SAVIĆ PROKOPIJE
+SAVIĆ RADIŠA
+SAVIĆ RADIVOJE DIPL ING
+SAVIĆ RADMILA
+SAVIĆ RADMILA
+SAVIĆ RADMILA
+SAVIĆ RADOJICA
+SAVIĆ RADOMIR
+SAVIĆ RADOMIR
+SAVIĆ RADOVAN
+SAVIĆ RADOVAN
+SAVIĆ RAKIĆ
+SAVIĆ RATKO
+SAVIĆ RATKO
+SAVIĆ RELJA DR
+SAVIĆ RENATA
+SAVIĆ ROKSANDA
+SAVIĆ RUŽICA
+SAVIĆ SAŠA
+SAVIĆ SAVA ADVOKAT
+SAVIĆ SAVA
+SAVIĆ SAVA
+SAVIĆ SAVA
+SAVIĆ SIMEUN DIPL ING
+SAVIĆ SINIŠA
+SAVIĆ SLAVKO
+SAVIĆ SLAVOLJUB
+SAVIĆ SLAVOLJUB
+SAVIĆ SLOBODAN
+SAVIĆ SLOBODAN
+SAVIĆ SMILJA
+SAVIĆ SPASOJE
+SAVIĆ SPASOJE
+SAVIĆ SRĐAN
+SAVIĆ SRBISLAV
+SAVIĆ SRETA
+SAVIĆ STEVAN
+SAVIĆ STOJANKA
+SAVIĆ STOJAN
+SAVIĆ STOJAN
+SAVIĆ STOJAN
+SAVIĆ SVENKA
+SAVIĆ SVETOZAR
+SAVIĆ SVETOZAR
+SAVIĆ TATOMIR
+SAVIĆ TEODOR
+SAVIĆ TINKA
+SAVIĆ TODOR
+SAVIĆ TODOR
+SAVIĆ TODOR
+SAVIĆ TOMISLAV
+SAVIĆ UROŠ
+SAVIĆ VELJKO
+SAVIĆ VERICA
+SAVIĆ VERICA
+SAVIĆ VESNA
+SAVIĆ VIDOSAV
+SAVIĆ VITOMIR
+SAVIĆ VLADIMIR
+SAVIĆ VLADIMIR
+SAVIĆ VOJA
+SAVIĆ VUKAN
+SAVIĆ VUKOTA
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORA
+SAVIN ŽIVKA
+SAVIN ŽIVKO
+SAVIN ĐORĐE
+SAVIN ĐURĐINKA
+SAVIN BERISLAV
+SAVIN BILJANA DR
+SAVIN BORA
+SAVIN DANICA
+SAVIN DRAGOLJUB
+SAVIN DRAGOMIR
+SAVIN DRENKA
+SAVIN DUŠAN
+SAVIN DUŠAN
+SAVIN JOVAN
+SAVIN JOVAN
+SAVIN JULKA
+SAVIN LASLO
+SAVIN LAZAR
+SAVIN LJUBINKA
+SAVIN MAGDA
+SAVIN MILEVA
+SAVIN MILICA
+SAVIN MILKA
+SAVIN MILORAD
+SAVIN MILORAD
+SAVIN MILOVAN
+SAVIN MIODRAG DIPL OEC
+SAVIN MIRJANA
+SAVIN MIRJANA
+SAVIN NIKOLA
+SAVIN PAVLE
+SAVIN PREDRAG
+SAVIN RADIVOJ
+SAVIN SAVA
+SAVIN SNEŽANA
+SAVIN SPIRIDON
+SAVIN STANA
+SAVIN TODOR
+SAVIN TODOR
+SAVIN VERICA
+SAVIN VUKOSAVA
+SAVIN ZORA
+SAVKELJIN STEVAN
+SAVKIĆ DUŠAN
+SAVKOV DRAGOLJUB
+SAVKOV ILIJA
+SAVKOV MILAN
+SAVKOV TODOR
+SAVKOV VERA
+SAVKOV VOJISLAV
+SAVKOV ZORAN
+SAVKOVIĆ ŽIVORAD
+SAVKOVIĆ JANJA
+SAVKOVIĆ MILUTIN
+SAVKOVIĆ MIRKO
+SAVKOVIĆ NEMANJA
+SAVKOVIĆ SAVA
+SAVKOVIĆ SAVO
+SAVKOVIĆ STAŠA
+SAVKOVIĆ TATJANA
+SAVKOVIĆ VUKA
+SAVKOVIĆ ZDRAVKO
+SAVOVIĆ DESANKA
+SAVOVIĆ FATIMA
+SAVOVIĆ LJUBO
+SAVOVIĆ LUKA
+SAVOVIĆ NENAD
+SAVOVIĆ RADE
+SAVU-MIHAJLOVIĆ SOFIJA
+SAVU TIBI
+SAVULJIĆ RADOMIR
+SAZDANIĆ ĐOKA
+SAZDANIĆ PAVLE
+SAZDANIĆ STEVAN
+SEČANSKI ĐORĐE
+SEČEN MILIVOJ
+SEČEN SVETOZAR DR
+SEČENJI IBOLJA
+SEČI IŠTVAN
+SEČIVANOVIĆ LEPŠA
+SEČIVANOVIĆ LEPŠA
+SEČIVANOVIĆ PAVLE
+SEČUJSKI ANDRIJA DIPL ING
+SEČUJSKI DANILO
+SEČUJSKI MLADEN
+SEČUJSKI RADIVOJ
+SEBASTIAN ERNE
+SEBASTIAN JOHANA
+SEBASTIJAN ZLATKO
+SEBELEDI PAVLE
+SEBENJI FERENC
+SEBENJI FRANJA
+SEBIŠANOVIĆ ĐORĐE
+SEBIŠANOVIĆ PAVLE
+SEDEJ JANEZ
+SEDER ALEKSANDAR
+SEDER IVICA
+SEDER SLAVKO
+SEDER VLADIMIR
+SEDERLAND ĐORĐE
+SEDLAČEK SARA
+SEDLAK ANDRAŠ
+SEDLAN ILIJA
+SEDLAN MANOJLO
+SEDLAN MIRKO DIPL ING
+SEDLAN RADOSLAV
+SEDLAN SAVA
+SEDLAR ILIJA
+SEDLAR MANE
+SEDLAR MILICA
+SEDLAR MILICA
+SEDLAR NADA
+SEDMAK DRAGAN
+SEDMAK VLADO
+SEFČIK ŽUŽANA
+SEFER MARIJA
+SEFER SAKIB
+SEFER SENAD
+SEFEROVIĆ SUAD
+SEG ŽUŽANA
+SEG IMRE
+SEGEDI BRANKA
+SEGEDI DIMITRIJE
+SEGEDI EVGENIJE
+SEGEDI IVICA
+SEGEDI JOSIP
+SEGEDI JOVAN
+SEGEDI JULIJAN
+SEGEDI KAROLJ
+SEGEDI-KOVAČEV BRANKA DR
+SEGEDI KSENIJA
+SEGEDI LEONA
+SEGEDI MARIJA
+SEGEDI MELITA
+SEGEDI MILENA
+SEGEDI SLAVICA
+SEGEDI STEVAN
+SEGEDI VLADIMIR
+SEGEDINAC DUŠKO
+SEGEDINAC NATALIJA
+SEGEDINAC ZDRAVKO
+SEGEDINSKI ARKADIJE
+SEGEDINSKI BOJKO
+SEGEDINSKI JULIJANA
+SEGEDINSKI NESTOR
+SEGEDINSKI SAVA
+SEGEDINSKI TOMA
+SEGEDINSKI VITOMIR
+SEGI LASLO
+SEGIĆ BORISLAV
+SEGIĆ RANKO
+SEIZOVIĆ DUŠANKA
+SEKAČ PETAR
+SEKE ARPAD
+SEKE EVA
+SEKE ILIJA
+SEKE JOSIP
+SEKE KATARINA
+SEKE STEVAN
+SEKE STEVAN
+SEKELJ JANI
+SEKELJ JOSIP
+SEKELJ MARIJA
+SEKELJ RUŽICA
+SEKEREŠ ŠANDOR
+SEKEREŠ ĐULA
+SEKEREŠ DENEŠ
+SEKEREŠ ETEL
+SEKEREŠ FERENC DR LEKAR
+SEKEREŠ FERENC
+SEKEREŠ IŠTVAN
+SEKEREŠ IŠTVAN
+SEKEREŠ IRENA
+SEKEREŠ JOŽEF
+SEKEREŠ JULIJANA
+SEKEREŠ JULIJA
+SEKEREŠ KAROLJ
+SEKEREŠ KATICA
+SEKEREŠ LAJOŠ DIPL ING
+SEKEREŠ NANDOR
+SEKEREŠ STEVAN
+SEKEREŠ TIBOR
+SEKEREŠ VERA
+SEKEREZOVIĆ MILAN
+SEKERIĆ STEVAN
+SEKERUŠ JELISAVETA
+SEKERUŠ LJUBICA
+SEKERUŠ MILKICA
+SEKERUŠ MIRJANA
+SEKERUŠ PAVLE
+SEKERUŠ PETAR
+SEKERUŠ STANISLAV
+SEKERUŠ VLADIMIR
+SEKICKI ALEKSANDAR
+SEKICKI EMILIJA
+SEKICKI ISIDOR
+SEKICKI LAZAR
+SEKICKI MARICA
+SEKICKI MILORAD
+SEKICKI PETAR
+SEKICKI VELJA
+SEKIZ ŽIVKO
+SEKIZ ILIJA
+SEKIZ JOVAN
+SEKIZ MELANIJA
+SEKIZ PETAR
+SEKIZ PETAR
+SEKIZ RADIVOJ
+SEKIZ SONJA
+SEKOŠAN LJUBICA
+SEKOŠAN MARINA
+SEKOL MILKA
+SEKOSKI JOMČE
+SEKOVSKI RADE
+SEKRENJ JOŽEF
+SEKULIĆ ČEDICA
+SEKULIĆ ČEDOMIR
+SEKULIĆ ŽARKO
+SEKULIĆ ŽIVKO
+SEKULIĆ ŽIVKO
+SEKULIĆ ŽIVOJIN DIPL ING
+SEKULIĆ ĐORĐE
+SEKULIĆ ĐORĐE
+SEKULIĆ ĐURĐICA
+SEKULIĆ ĐURAĐ
+SEKULIĆ ALEKSANDAR
+SEKULIĆ ALEKSANDAR
+SEKULIĆ ANĐELKA
+SEKULIĆ ARSENIJE
+SEKULIĆ BOŽIDAR DIPL ING
+SEKULIĆ BRANISLAV
+SEKULIĆ BRANISLAV
+SEKULIĆ BRANISLAV
+SEKULIĆ DANE
+SEKULIĆ DARINKA
+SEKULIĆ DARINKA
+SEKULIĆ DESANKA
+SEKULIĆ DESANKA
+SEKULIĆ DOSTA
+SEKULIĆ DRAGAN
+SEKULIĆ DRAGICA
+SEKULIĆ DRAGOLJUB
+SEKULIĆ DRAGOMIR
+SEKULIĆ DRAGOMIR
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ ILIJA
+SEKULIĆ ILIJA
+SEKULIĆ IVAN
+SEKULIĆ IVAN
+SEKULIĆ KATICA
+SEKULIĆ LAZAR
+SEKULIĆ LJILJANA
+SEKULIĆ LJILJANA
+SEKULIĆ LJUBIŠA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBOMIR
+SEKULIĆ MARIJA
+SEKULIĆ MARIJA
+SEKULIĆ MARIJA
+SEKULIĆ MIĆO
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILENA
+SEKULIĆ MILENA
+SEKULIĆ MILIVOJE
+SEKULIĆ MILJA
+SEKULIĆ MILORAD
+SEKULIĆ MILORAD
+SEKULIĆ MILOVAN
+SEKULIĆ MILOVAN
+SEKULIĆ MILOVAN
+SEKULIĆ MIODRAG
+SEKULIĆ MIODRAG
+SEKULIĆ MIRA
+SEKULIĆ MIRJANA
+SEKULIĆ MIRJANA
+SEKULIĆ MIRKO
+SEKULIĆ NEGICA
+SEKULIĆ NEMANJA
+SEKULIĆ OLGA
+SEKULIĆ OLIVERA
+SEKULIĆ PAVLE
+SEKULIĆ PAVLE
+SEKULIĆ PETAR DR
+SEKULIĆ PETAR
+SEKULIĆ PETKO
+SEKULIĆ RADE
+SEKULIĆ RADIVOJ MR
+SEKULIĆ RADMILA
+SEKULIĆ RADOSAV
+SEKULIĆ RUŽICA
+SEKULIĆ SIMO
+SEKULIĆ SLAVKO
+SEKULIĆ SMILJA
+SEKULIĆ SPASA
+SEKULIĆ SPASO
+SEKULIĆ STANISLAV
+SEKULIĆ STANOJE
+SEKULIĆ STEVAN
+SEKULIĆ STEVAN
+SEKULIĆ STOJAN DIPL ING
+SEKULIĆ STOJAN
+SEKULIĆ SVETOZAR
+SEKULIĆ SVETOZAR
+SEKULIĆ TIHOMIR
+SEKULIĆ TOMISLAV
+SEKULIĆ TOMISLAV
+SEKULIĆ USTIJANKA
+SEKULIĆ VALENTINA
+SEKULIĆ VENO
+SEKULIĆ VIDOJE
+SEKULIĆ VINKO
+SEKULIĆ VLADIMIR
+SEKULIĆ VLADIMIR
+SEKULIĆ VLADO
+SEKULIĆ VOJISLAV
+SEKULIĆ ZORAN
+SEKULIĆ ZORAN
+SEKULIĆ ZORA
+SEKULIĆ ZORICA
+SEKULOVIĆ MIHAILO
+SEKULOVIĆ MILANKA
+SEKULOVIĆ MILENKO
+SEKULOVIĆ RADIVOJE
+SEKULOVIĆ SLAVKO
+SEL ANA
+SEL JOŽEF
+SEL LADISLAV
+SELAK JOVAN
+SELAK JOVO
+SELAK MIRJANA
+SELAK STEVAN
+SELAKOVIĆ ĐORĐE DR LEKAR
+SELAKOVIĆ DRAGICA DR LEKAR
+SELAKOVIĆ LJUBISAV
+SELAKOVIĆ MILAN
+SELAKOVIĆ MIODRAG
+SELAKOVIĆ MIROSLAV
+SELAKOVIĆ MLADEN
+SELAKOVIĆ RADOSLAV
+SELAKOVIĆ SREĆKO
+SELAKOVIĆ VOJA
+SELEŠ KAROLJ
+SELEŠ KAROLJ
+SELEŠ MIHAJLO
+SELEŠI ELZA
+SELEŠI ETELKA
+SELEŠI LADISLAV
+SELEŠI LASLO
+SELEŠI MAGDALENA
+SELEŠI MARIJA
+SELEŠI PAL
+SELEŠI STEVAN
+SELEŠI VINCE
+SELEŠI ZOLTAN
+SELENA JELENA
+SELENA NIKOLA
+SELENIĆ ANKICA
+SELI ETELKA
+SELI IŠTVAN DR
+SELI MIKLOŠ
+SELIĆ DRAGUTIN
+SELIĆ MIĆO
+SELIĆ MILOŠ
+SELIĆ MILORAD
+SELIH DANILO
+SELIH DRAGO
+SELIK JOSIP
+SELIK LADISLAV
+SELIMOVIĆ MUSTAFA
+SELINGER GABRIJELA
+SELJAKOV NADA
+SELMAN HAKIJA
+SELSKI ANA
+SELSKI MARIJA
+SELVER ALINAĐI
+SEMAN JOAKIM
+SEMEDER DIMITRIJE
+SEMEDER SUZANA
+SEMEDER SUZANA
+SEMEK ČABA
+SEMEK ČILA
+SEMENSKI KORNELIJA
+SEMEREDI JOŽEF
+SEMEREDI VERA
+SEMIZ KATICA
+SEMIZOVIĆ SADIK
+SEMNIC RUDOLF DR
+SEN MARTIN
+SENČUK SLAVICA
+SENČUK STEVO
+SENĆANSKI JULIJA
+SENĆANSKI KATICA
+SENĆANSKI NADA
+SENĆANSKI PETAR
+SENĆANSKI ZORA
+SENAŠI LADISLAV
+SENCI LADISLAV
+SENDERAK ĐURA
+SENDERAK EUGEN
+SENDERAK LIDIJA
+SENDERAK MELANIJA
+SENDERAK MIRKO
+SENDERAK NIKOLA
+SENDERAK PETAR
+SENDERAK SILVESTER
+SENEŠI JELENA
+SENIĆ ANICA
+SENIĆ IVANKA
+SENIĆ LAZAR
+SENIĆ MILORAD
+SENIĆ RISTO
+SENIĆ VLADIMIR
+SENJEŠ ŠANDOR
+SENJI AGOŠTON DR LEKAR
+SENJI ILONA
+SENJI IRENA
+SENTE LJUBICA
+SENTE PETAR
+SENTIN ČEDOMIR
+SENTIVANAC ĐORĐE
+SENTIVANAC MARKO
+SENTIVANAC MILAN
+SENTIVANAC MILOŠ
+SENTIVANAC MOMIR
+SENTIVANAC SAVA
+SENTIVANAC SVETLANA
+SENTIVANAC TODOR
+SENTIVANAC VESNA
+SENTMARTONI FERENC
+SEP ANTAL
+SEP DEŽE DR LEKAR
+SEP FERENC
+SEP-VARGA EMILIJA
+SERAFIMOV KIRIL
+SERATLIĆ ČEDOMIR
+SERATLIĆ DARKA
+SERATLIĆ GOLUB
+SERATLIĆ MIRAŠ
+SERATLIĆ MIRJANA
+SERATLIĆ VELIMIR DR
+SERATLIĆ ZORAN
+SERDA ŠANDOR
+SERDAR DANICA
+SERDAR ILIJA
+SERDAR MARA
+SERDAR MLADEN
+SERDAR NEDELJKO
+SERDAR PETAR
+SERDAR PETAR
+SERDAREVIĆ ĆAZIM
+SERDAREVIĆ GIZELA
+SEREŠI FERENC
+SEREŠI IŠTVAN
+SEREŠI LASLO
+SEREŠI ROZALIJA
+SEREŠI STEVAN
+SEREŠI TIBOR
+SERENČE LADISLAV
+SERENČEŠ JOŽEF NOVINAR
+SERNEC STEVAN
+SERTIĆ DRAGAN
+SERTIĆ MARIJA
+SERTIĆ MATIJA
+SERTIĆ MILAN
+SERTIĆ VLADA
+SETENČIĆ MILORAD
+SEVER ŠIME
+SEVERINI JAN
+SEVIĆ ĐORĐE
+SEVIĆ RADENKO
+SEVKIĆ BRANKO
+SEVKIĆ MAGDALENA
+SIČ ANDRIJA
+SIČ DRAGAN
+SIČ FERENC
+SIČ IMRE
+SIČ JOŽEF
+SIČ JOSIP
+SIČ JOSIP
+SIČ JULIJANA
+SIČ KALMAN
+SIČ KALMAN
+SIČ MARGITA
+SIČ MARIJA
+SIČ MARIJA
+SIČ MIHALJ
+SIČ MIROSLAVA
+SIČ PETAR DR LEKAR
+SIČ PIROŠKA
+SIČ STEVAN
+SIČ STEVAN
+SIČ STEVAN
+SIČ TEREZA
+SIČ VLADISLAV
+SIČ ZLATKO
+SIĆ MIROSLAV
+SIĆ SLAĐANA
+SIĆ STANISLAV
+SIĆ STANKO
+SIĐI MIRKO
+SIBER IŠTVAN
+SIBER IŠTVAN
+SIBINAC VUKICA
+SIBINKIĆ PETAR
+SIBINKIĆ RATKO
+SIBINKIĆ RATKO
+SIBINKIĆ VASA
+SIBINOV NIKOLA
+SIBINOVIĆ RADOMIR
+SIBINSKI VIDA
+SIDŽIMOSKI DIMITRIJE
+SIDOR ĆIRIL DR
+SIGETI-BIČKEI AGOTA
+SIGETI JAŠA
+SIGETI JANOŠ
+SIGETI STEVAN
+SIKA FRANJA
+SIKA IRENA
+SIKIMIĆ ANĐELKA
+SIKIMIĆ NOVAK
+SIKIMIĆ SRĐAN
+SIKIMIĆ SRĐAN
+SIKIRICA MIRJANA
+SIKORA KAROLJ
+SIKORA LADISLAV
+SIKORA PETAR
+SILAŠKI ILIJA
+SILAŠKI RADOVAN
+SILAŠKI SLAVKO
+SILAŠKI SNEŽANA
+SILAŠKI VERA
+SILAŠKI VLADISLAVA
+SILAĐEV RUŽICA
+SILAĐI ŠANDOR
+SILAĐI ANDRAŠ
+SILAĐI FRANJA
+SILAĐI GIZELA
+SILAĐI IŠTVAN
+SILAĐI IMRE
+SILAĐI JELISAVETA
+SILAĐI KAROLJ
+SILAĐI LADISLAV
+SILAĐI LASLO VAJAR
+SILAĐI LASLO
+SILAĐI LASLO
+SILAĐI LASLO
+SILAĐI LJUDEVIT
+SILAĐI LJUDEVIT
+SILAĐI MARIJA
+SILAĐI MIKLOŠ
+SILAĐI ROZALIJA
+SILAĐI TEREZA
+SILAĐI VIKTORIJA
+SILAK ANDRAŠ
+SILAK GIZELA
+SILAK IŠTVAN
+SILAK ZOLTAN
+SILBAŠKI DOŠKO
+SILBAŠKI LJUBICA
+SILBAŠKI MARJAN
+SILBAŠKI ZORAN
+SILBERHOLC STEVAN
+SILER ĐULA
+SILER DUŠICA
+SILER GUSTAV
+SILER KARL
+SILJANOVSKI DARKO
+SILJANOVSKI JOŽE
+SILNI SLAVNA
+SILVAŠI ŠANDOR
+SILVAŠI JANOŠ
+SILVAŠI KAROLJ
+SILVESTROVIĆ MILICA
+SILVESTROVIĆ TANASIJE
+SIMČIN MIHAJLO
+SIMANIĆ ILIJA
+SIMANIĆ JEZDIMIR
+SIMANIĆ PETKO
+SIMANIĆ RAJKA
+SIMANIĆ SAVA
+SIMENDIĆ BOŽA
+SIMENDIĆ GORAN
+SIMENDIĆ SVETOZAR
+SIMENDIĆ VLADIMIR
+SIMENTIĆ JOVAN
+SIMENTIĆ VOJISLAV
+SIMEONOV PAVLE
+SIMEONOV RADIVOJ
+SIMEONOV ZDRAVČO
+SIMEONOVIĆ ĐORĐE
+SIMEONOVIĆ MILIVOJ
+SIMEONOVIĆ RADOSLAV
+SIMEONOVIĆ SLOBODANKA
+SIMETIĆ MOMČILO
+SIMETIĆ OSTOJA
+SIMEUNOVIĆ BORISLAV
+SIMEUNOVIĆ DRAGAN
+SIMEUNOVIĆ DRAGAN
+SIMEUNOVIĆ DRAGOLJUB
+SIMEUNOVIĆ DUŠAN
+SIMEUNOVIĆ JANKO
+SIMEUNOVIĆ LEPOSAVA
+SIMEUNOVIĆ MILAN
+SIMEUNOVIĆ MILOMIR
+SIMEUNOVIĆ NEVENKA
+SIMEUNOVIĆ RADOSAV
+SIMEUNOVIĆ SAVA
+SIMEUNOVIĆ SIMO
+SIMEUNOVIĆ SIMO
+SIMEUNOVIĆ SRETEN
+SIMEUNOVIĆ VLADA
+SIMIČIĆ DRAGANA
+SIMIŠIĆ RADOJICA
+SIMIĆ ČEDA
+SIMIĆ ŽIVOJIN
+SIMIĆ ŽIVOJIN
+SIMIĆ ĐURĐEVKA
+SIMIĆ ĐURA
+SIMIĆ ĐURO
+SIMIĆ ACA
+SIMIĆ ADAM
+SIMIĆ ALEKSANDAR
+SIMIĆ ALEKSANDAR
+SIMIĆ ANĐELKA
+SIMIĆ BOŠKO
+SIMIĆ BOJANA
+SIMIĆ BORA
+SIMIĆ BORISLAV
+SIMIĆ BORISLAV
+SIMIĆ BORKA
+SIMIĆ BOSILJKA
+SIMIĆ BRANISLAV
+SIMIĆ BRANISLAV
+SIMIĆ BRANISLAV
+SIMIĆ BRANKO
+SIMIĆ BUDIMIR
+SIMIĆ-CHALABI DRAGANA
+SIMIĆ CVETIN
+SIMIĆ DEJAN
+SIMIĆ DOBRIVOJE
+SIMIĆ DOBRIVOJE
+SIMIĆ DOJČIN
+SIMIĆ DRAGAN
+SIMIĆ DRAGICA
+SIMIĆ DRAGOLJUB
+SIMIĆ DRAGOLJUB
+SIMIĆ DRAGUTIN
+SIMIĆ DUŠANKA
+SIMIĆ DUŠAN
+SIMIĆ DUŠAN
+SIMIĆ DUŠICA
+SIMIĆ GOJKO
+SIMIĆ GORDANA
+SIMIĆ GRADIMIR
+SIMIĆ HERMINA DR
+SIMIĆ ILIJA
+SIMIĆ ILONKA
+SIMIĆ IVAN
+SIMIĆ JELENA
+SIMIĆ JOVAN
+SIMIĆ JOVAN
+SIMIĆ JOVICA
+SIMIĆ JOVO
+SIMIĆ JOVO
+SIMIĆ JUDIT
+SIMIĆ KRISTINA
+SIMIĆ LJILJANA
+SIMIĆ MARIJA
+SIMIĆ MARIJA
+SIMIĆ MARIJA
+SIMIĆ MICA
+SIMIĆ MIHAILO
+SIMIĆ MILAN
+SIMIĆ MILAN
+SIMIĆ MILAN
+SIMIĆ MILENA
+SIMIĆ MILICA
+SIMIĆ MILIJA
+SIMIĆ MILIVOJ
+SIMIĆ MILOŠ
+SIMIĆ MILOŠ
+SIMIĆ MILOŠ
+SIMIĆ MILORAD
+SIMIĆ MILORAD
+SIMIĆ MILOVAN
+SIMIĆ MILUTIN
+SIMIĆ MILUTIN
+SIMIĆ MILUTIN
+SIMIĆ MIRKO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ NADA
+SIMIĆ NADA
+SIMIĆ NARANČA
+SIMIĆ NEĐO
+SIMIĆ NEDELJKO
+SIMIĆ NEMANJA
+SIMIĆ NEVENKA
+SIMIĆ NIKOLA
+SIMIĆ NIKOLA
+SIMIĆ NOVAK
+SIMIĆ NOVAK
+SIMIĆ NOVAK
+SIMIĆ OLGA
+SIMIĆ OSTOJA
+SIMIĆ PANTELIJA
+SIMIĆ PAVLE
+SIMIĆ PETAR
+SIMIĆ RADA
+SIMIĆ RADENKO
+SIMIĆ RADENKO
+SIMIĆ RADISAV
+SIMIĆ RADIVOJE
+SIMIĆ RADIVOJE
+SIMIĆ RADIVOJ
+SIMIĆ RADOJE
+SIMIĆ RADOVAN
+SIMIĆ RAJKO
+SIMIĆ RUŽICA
+SIMIĆ RUŽICA
+SIMIĆ SAVA
+SIMIĆ SIMA
+SIMIĆ SINIŠA
+SIMIĆ SLADA
+SIMIĆ SLAVKO
+SIMIĆ SLOBODAN
+SIMIĆ SRĐAN
+SIMIĆ SRETEN
+SIMIĆ STEVAN
+SIMIĆ STEVAN
+SIMIĆ STEVAN
+SIMIĆ STOJANKA
+SIMIĆ SVETISLAV
+SIMIĆ SVETISLAV
+SIMIĆ TIHOMIR
+SIMIĆ TIHOMIR
+SIMIĆ TODE
+SIMIĆ TOMISLAV
+SIMIĆ TOMISLAV
+SIMIĆ VAJKA
+SIMIĆ VASA
+SIMIĆ VERONKA
+SIMIĆ VESELKO
+SIMIĆ VINKA
+SIMIĆ VLADE
+SIMIĆ VLADIMIR
+SIMIĆ VLADO
+SIMIĆ VOJISLAV
+SIMIĆ ZLATIMIR
+SIMIĆ ZORAN
+SIMIĆ ZORAN
+SIMIĆ ZORAN
+SIMIĆ ZORA
+SIMIĆ ZORA
+SIMIĆ ZORICA
+SIMIĆ ZORKA
+SIMIĆEVIĆ RADOMAN
+SIMIJONOVIĆ SLOBODAN
+SIMIKIĆ JOVAN
+SIMILENJI DUŠICA
+SIMIN ŽIVKA
+SIMIN ŽIVOJIN
+SIMIN ANĐELKA
+SIMIN ARANKA
+SIMIN CVETKO
+SIMIN DANICA
+SIMIN DANILO
+SIMIN DINA
+SIMIN DRAGAN
+SIMIN HILDA
+SIMIN IVANKA
+SIMIN IVAN
+SIMIN JAŠA
+SIMIN JELENA
+SIMIN KOSTA
+SIMIN LAZAR
+SIMIN LEPOSAVA
+SIMIN LJUBICA
+SIMIN MAGDA
+SIMIN MILENA
+SIMIN MILICA
+SIMIN MILICA
+SIMIN MILIVOJ
+SIMIN MILIVOJ
+SIMIN MILUTIN
+SIMIN MIROSLAV
+SIMIN NADA
+SIMIN NADA
+SIMIN NEBOJŠA
+SIMIN PAVLE
+SIMIN PETAR
+SIMIN RADICA
+SIMIN RADIVOJE
+SIMIN RADOJICA
+SIMIN RADOVAN
+SIMIN SINIŠA
+SIMIN SOFIJA
+SIMIN STEVAN
+SIMONOVIĆ DRAGOSLAVA
+SIMONOVIĆ HRISTINA
+SIMONOVIĆ IRENA DR
+SIMONOVIĆ MILE
+SIMONOVIĆ MILORAD
+SIMONOVIĆ MILORAD
+SIMONOVIĆ NADA
+SIMONOVIĆ NIKOLA
+SIMONOVIĆ PETAR
+SIMONOVIĆ SLOBODAN
+SIMONOVIĆ TOMISLAV
+SIMONOVIĆ VOJISLAV
+SIMONOVSKI FINKA
+SIMONOVSKI MITA
+SIMOTIN RADOVAN
+SIMOVIĆ ŽELJKO
+SIMOVIĆ ŽIVOTA
+SIMOVIĆ ANKA
+SIMOVIĆ BRANISLAV DR
+SIMOVIĆ DRAGOLJUB
+SIMOVIĆ DRAGOLJUB
+SIMOVIĆ DRAGO
+SIMOVIĆ JOVA
+SIMOVIĆ LJUBIŠA
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILOŠ
+SIMOVIĆ MILOŠ
+SIMOVIĆ MIRKO
+SIMOVIĆ MITAR
+SIMOVIĆ PETAR
+SIMOVIĆ RADIVOJE
+SIMOVIĆ RADOMIR
+SIMOVIĆ SLOBODAN PROFESOR
+SIMOVIĆ SLOBODAN
+SIMOVIĆ TODOR
+SIMOVIĆ VIDAK
+SIMOVIĆ VLADIMIR
+SIMOVLJEVIĆ JOCA
+SIMUNIĆ ŽELIMIR
+SIMUNIĆ ANDRIJA
+SIMUNIĆ MAGDA
+SIMUNIĆ STANIMIR
+SIMUNOVIĆ MARIJA
+SIMUNOVIĆ MILUN
+SIMURDIĆ MILAN
+SIMURDIĆ PETAR
+SIMURDIĆ VITOMIR
+SINČIĆ ZVONIMIR
+SINĐELIĆ LJUBISAV
+SINĐELIĆ MILOŠ
+SINĐIĆ MILENKO
+SINADINOVIĆ VOJO
+SINANI ABDULA
+SINANI MILICA
+SINANOVIĆ SAFET
+SINGER DRAGICA
+SINGER RUŽICA
+SIRAČKI KAROLINA
+SIRACKI JOVAN
+SIRACKI VLADIMIR
+SIRAK LASLO DR
+SIRIŠKI ŽARKO
+SIRIŠKI ĐURĐINA
+SIRIŠKI BRANISLAV
+SIRIŠKI IVAN
+SIRIŠKI JASMINKA
+SIRIŠKI JELENA
+SIRIŠKI JOVAN
+SIRIŠKI MIROSLAVA
+SIRIŠKI SLAVKO SUDIJA
+SIRIŠKI SLAVKO
+SIROČIĆ IVAN
+SIROŽENKO SNEŽANA
+SIROŽENKO VERA
+SIROTIN SLAVICA
+SIROVICA JANOŠ
+SIRUČEK VILIM DIPL ING
+SITAŠ ILONA
+SITAŠ LAJOŠ
+SITAREVIĆ AMIR
+SITARIĆ PAJA
+SIVČ AMALIJA
+SIVČ ANĐELKA
+SIVČ DANILO
+SIVČ HELENA
+SIVČ IRINA
+SIVČ JANKO
+SIVČ LJUBOMIR
+SIVČ LJUBOMIR
+SIVČ NESTOR
+SIVČ VLADIMIR
+SIVČEV ĐOKA
+SIVČEV BOŽIDAR
+SIVČEV JOVAN DR
+SIVČEV JULKA
+SIVČEV LJUBICA
+SIVČEV MILAN
+SIVČEV ZORAN
+SIVAČKI ĐURA
+SIVAČKI JOVAN
+SIVAČKI MILAN
+SIVAČKI MIRJANA
+SIVAČKI MIROSLAV
+SIVAČKI SAVA
+SIVAČKI SLOBODANKA
+SIVAČKI VERA
+SIVAČKI VERA
+SIVAC JOVANKA
+SIVAK IBOLJA
+SIVAK JUDITA
+SIVAK LJUBINKA
+SIVAK ROZINA
+SIVIĆ GOJKO
+SIVIĆ RADE
+SIZOV MARGITA
+SJENIČIĆ NEDELJKO
+SJEPANOVIĆ SRĐAN
+SKAKAVAC NIKOLA
+SKAKAVAC NOVA
+SKAKAVAC NOVA
+SKAKAVAC SOFIJA
+SKAKAVAC VELIMIR
+SKAKAVAC VUJICA
+SKAKAVAC ZDRAVKO
+SKAKIĆ BOŠKO
+SKAKIĆ MILAN
+SKAKIĆ NIKOLA
+SKAKUN ŽIVKO
+SKALA ANTAL
+SKALA MILENA
+SKALA VLADIMIR
+SKALICKI ZAGORKA
+SKANDARSKI ANKA
+SKANDARSKI MILAN
+SKANDARSKI MILOŠ
+SKANDARSKI MIRKO
+SKANDARSKI MLADEN
+SKANDARSKI MOMČILO
+SKANDARSKI RADOVAN
+SKARAMUCA MIJO
+SKARAMUCA ZDRAVKO
+SKELEDŽIĆ ALEKSANDAR
+SKELEDŽIĆ ALEKSANDAR
+SKELEDŽIĆ BRANISLAV
+SKELEDŽIĆ BRANISLAV
+SKELEDŽIĆ DRAGICA
+SKELEDŽIĆ KATICA
+SKELEDŽIĆ LJUBINKO
+SKELEDŽIĆ MARIJA
+SKELEDŽIĆ MILAN
+SKELEDŽIĆ MIROSLAVA
+SKELEDŽIĆ RADOSLAV
+SKELEDŽIĆ RADOSLAV
+SKELEDŽIJA KATA
+SKELEDŽIJA RADOJICA
+SKELEDŽIJA SPASIMIR
+SKENDŽIĆ ŽARKO
+SKENDŽIĆ BOGDAN
+SKENDŽIĆ BRANKA
+SKENDŽIĆ DANE
+SKENDŽIĆ DANILO
+SKENDŽIĆ DRAGOMIR
+SKENDŽIĆ DUŠAN
+SKENDŽIĆ ILIJA
+SKENDŽIĆ JASMINKA
+SKENDŽIĆ JOVANKA
+SKENDŽIĆ MARGARETA
+SKENDŽIĆ MILAN
+SKENDŽIĆ MILENKO
+SKENDŽIĆ MILICA
+SKENDŽIĆ RADE
+SKENDŽIĆ SARA
+SKENDŽIĆ SOFIJA
+SKENDŽIĆ STEVAN
+SKENDEROVIĆ ANDRIJA
+SKENDEROVIĆ BERISLAV
+SKENDEROVIĆ GABOR
+SKENDEROVIĆ MARIJA
+SKENDEROVIĆ SINIŠA
+SKERLETOVIĆ MILOŠ
+SKERLETOVIĆ ZORAN
+SKERT BOŽIDAR
+SKIČAK LASLO
+SKIVJANI ŠANDOR
+SKIVJANI MIHALJ
+SKLABINAC VLADIMIR
+SKLABINSKI SAMO
+SKLENA JOHAN DIPL ING
+SKLENA OLIVERA
+SKLENA VIKTORIJA
+SKLENAR PETAR
+SKLJAR ĐURO
+SKOČAJIĆ VUKAŠIN
+SKOČOVSKI MARIJA
+SKOBE IVAN
+SKOK MIRJANA
+SKOKANDIĆ PETAR
+SKOKIĆ NENAD
+SKOKIĆ VESNA
+SKOKNIĆ DUŠAN
+SKOKNIĆ STEVAN
+SKOKO MILOŠ
+SKOMINA VERICA
+SKOPAL BELA
+SKOPAL JOVAN
+SKORIĆ JASMINKA
+SKORIĆ LJUBO
+SKORIĆ TONKA
+SKORIĆ VUJO
+SKORUPAN ĐURA
+SKORUPAN DANICA
+SKORUPAN KATA
+SKORUPAN RADENKO
+SKORUPAN SLAVKO
+SKOTOVIĆ FERENC
+SKRAMOĆIN SREĆKO
+SKROBIĆ DRAGAN
+SKROBIĆ PETAR
+SKROBONJA ALEKSANDAR
+SKROBONJA KATICA
+SKROBONJA NIKOLA
+SKROBONJA VLADIMIR
+SKUBAN HELENA
+SKUBAN JANKO
+SKUBAN JEFREM
+SKUBAN JULIJAN
+SKUBAN LEONA
+SKUBAN LJUBOMIR
+SKUBAN MIHAJLO
+SKUBAN NATALIJA
+SKUBAN NIKOLA
+SKUBAN ZORKA
+SKULAR RADOJKA
+SKULIĆ MIRJANA
+SKULIĆ SIMKA
+SKULIĆ VLADIMIR
+SKUMPIJA JOŽEF
+SKURUPATIS MIRJANA
+SLAĆANIN IVAN
+SLADAKOVIĆ NIKOLA
+SLADEK ANDRIJA
+SLADIĆ CVETA
+SLADIĆ SLOBODAN
+SLADIĆ STEVAN
+SLADIĆ ZORICA
+SLADOJA MILOVAN
+SLADOJE ILIJA
+SLADOJE RADOMIR
+SLADOJEV MILAN
+SLADOJEV PREDRAG
+SLADOJEVIĆ ŽIVKO
+SLADOJEVIĆ MIRKO
+SLADOJEVIĆ RADIVOJ
+SLAMA ĐORĐE
+SLAMA MARIJA
+SLAMAR FERENC
+SLANC JELENA
+SLANKAMENAC ŽIVKO
+SLANKAMENAC ŽIVKO
+SLANKAMENAC ĐORĐE
+SLANKAMENAC ALEKSANDAR
+SLANKAMENAC ANKICA
+SLANKAMENAC BRANISLAV
+SLANKAMENAC DUŠANKA
+SLANKAMENAC IDA
+SLANKAMENAC JELENA
+SLANKAMENAC JOVAN
+SLANKAMENAC MARIJA
+SLANKAMENAC MARIJA
+SLANKAMENAC MILAN
+SLANKAMENAC MILAN
+SLANKAMENAC MILAN
+SLANKAMENAC MILOŠ
+SLANKAMENAC MILOŠ
+SLANKAMENAC MILOJE
+SLANKAMENAC MIRJANA
+SLANKAMENAC MOMČILO
+SLANKAMENAC NADA
+SLANKAMENAC PETAR DR
+SLANKAMENAC PETAR
+SLANKAMENAC PETAR
+SLANKAMENAC PROKA
+SLANKAMENAC RADOSLAV
+SLANKAMENAC STEVAN
+SLANKAMENAC VESELIN
+SLANKAMENAC ZORAN
+SLATVINSKI GEORGIJE
+SLAVIĆ ĐORĐE
+SLAVIĆ SOFIJA
+SLAVICA STIPE
+SLAVKIĆ DUŠANKA
+SLAVKOVIĆ ALOJZ
+SLAVKOVIĆ MILOŠ
+SLAVKOVIĆ MIRJANA
+SLAVKOVIĆ SIBIN
+SLAVKOVIĆ SNEŽANA
+SLAVKOVIĆ TRIFUN
+SLAVKOVIĆ ZDENKO
+SLAVNIĆ DANILO
+SLAVNIĆ JASMINA
+SLAVNIĆ LJUBICA
+SLAVNIĆ NOVKA
+SLAVNIĆ RADIVOJ
+SLAVNOVIĆ IVAN
+SLAVUJ BOŽO
+SLAVUJ DRAGAN
+SLAVUJEVIĆ DUŠAN
+SLAVUJEVIĆ LJUBOMIR
+SLAVUJEVIĆ MILENA
+SLAVUJEVIĆ RADISAV
+SLAVUJEVIĆ STEVO
+SLAVULJ MILE
+SLEPČEV ŽIVAN
+SLEPČEV DANICA
+SLEPČEV JOVAN
+SLEPČEV NIKOLA
+SLEPČEV ZDENKA
+SLEPČEV ZORICA
+SLEPČEVIĆ KRSTAN
+SLEPČEVIĆ LJUBIŠA
+SLEPČEVIĆ MILAN
+SLEPČEVIĆ OLGA
+SLEPČEVIĆ RUŽA
+SLEPČEVIĆ ZDRAVKA
+SLEPKO IRENA
+SLEPKO JOVAN
+SLEPKO MIHAJLO
+SLEPKO MILICA
+SLESAR DANILO
+SLESAR JELENA
+SLESAR MOMČILO
+SLESAR VASA
+SLIŠKO ANDRIJA
+SLIŠKO MARKO
+SLIŠKOVIĆ ANĐELKA
+SLIJEPČEVIĆ ANA
+SLIJEPČEVIĆ BISERKA
+SLIJEPČEVIĆ DRAGAN
+SLIJEPČEVIĆ DUŠAN
+SLIJEPČEVIĆ DUŠAN
+SLIJEPČEVIĆ GEORGIJE
+SLIJEPČEVIĆ JANKO
+SLIJEPČEVIĆ JANKO
+SLIJEPČEVIĆ JOVAN
+SLIJEPČEVIĆ KOVILJKA
+SLIJEPČEVIĆ LJUBAN
+SLIJEPČEVIĆ MILORAD
+SLIJEPČEVIĆ MILOVAN
+SLIJEPČEVIĆ MIROSLAVA
+SLIJEPČEVIĆ NOVICA
+SLIJEPČEVIĆ RUŽICA
+SLIJEPČEVIĆ SAVO
+SLIJEPČEVIĆ VERA
+SLIJEPČEVIĆ VJEKOSLAVA
+SLIJEPČEVIĆ ZVONKO
+SLIJEPAC MILOŠ
+SLIJEPAC SLOBODAN
+SLIMAK ADAM
+SLIVA ELIZABETA
+SLIVKA ĐURA
+SLIVKA ANA
+SLIVKA BOŽANA
+SLIVKA BOSILJKA
+SLIVKA JAROSLAV
+SLIVKA JOVAN
+SLIVKA MIŠA
+SLIVKA MIŠA
+SLIVKA STEVAN
+SLIVKA ZDENKA
+SLIVKA ZLATA
+SLJUKA BOHUSLAV
+SLJUKA JURAJ
+SLOBODA ANTAL
+SLOBODA IŠTVAN
+SLOBODA JANOŠ
+SLOBODA JOŽEF
+SLOBODA JULKA
+SLOBODA MIHAJLO
+SLOBODA MIHALJ
+SLOBODA PETAR
+SLOBODA SLAVKA
+SLOBODA STEVAN
+SLOKAR IVAN
+SLOKAR MATIJA
+SLOVIĆ DRAGOLJUB DR
+SLUNJSKI FRANJA
+SMAGIN IVAN
+SMAJIĆ MAKSIM
+SMAJIĆ MILOŠ
+SMAJIĆ SLOBODAN
+SMAJIĆ SLOBODAN
+SMEDEREVAC DUŠAN
+SMEDEREVAC JOVAN
+SMEDEREVAC MILICA
+SMEDEREVAC PETAR
+SMEDEREVAC STEVICA
+SMIĆEVIĆ UROŠ
+SMIEŠKO JELISAVETA
+SMILIĆ MARIJA
+SMILJANIĆ ĐORĐE
+SMILJANIĆ ĐORĐE
+SMILJANIĆ ĐORĐE
+SMILJANIĆ BOJANA
+SMILJANIĆ BORKA
+SMILJANIĆ BRANKO
+SMILJANIĆ DOBRIVOJ
+SMILJANIĆ DRAGICA
+SMILJANIĆ ILIJA
+SMILJANIĆ JOVANA
+SMILJANIĆ JOVAN
+SMILJANIĆ JOVO
+SMILJANIĆ LJILJANA
+SMILJANIĆ LJILJANA
+SMILJANIĆ MARIJA
+SMILJANIĆ MILAN
+SMILJANIĆ MILAN
+SMILJANIĆ MILENKO
+SMILJANIĆ MILKA
+SMILJANIĆ MILORAD
+SMILJANIĆ MILUTIN
+SMILJANIĆ MIODRAG
+SMILJANIĆ MLADEN
+SMILJANIĆ NEVENKA
+SMILJANIĆ NEVENKA
+SMILJANIĆ OLIVERA
+SMILJANIĆ PETAR
+SMILJANIĆ PREDRAG
+SMILJANIĆ RADA
+SMILJANIĆ RADE
+SMILJANIĆ SAVA
+SMILJANIĆ SOFIJA
+SMILJANIĆ SOFIJA
+SMILJANIĆ STANA
+SMILJANIĆ STEVO
+SMILJANIĆ TRIVO
+SMILJANIĆ VESELKO
+SMILJANIĆ VIDOSAV
+SMILJANIĆ VINKO
+SMILJANIĆ VLADIMIR
+SMILJANIĆ VLADIMIR
+SMILJANIĆ ZLATKO
+SMILJANIĆ ZORKA
+SMILJANOV MILAN
+SMILJANOV RADOVAN
+SMILJANSKI MILAN
+SMILJIĆ ŽIVKO
+SMILJKOVIĆ RADOMIR
+SMILJKOVIĆ STANIMIR
+SMIRNOV JUDITA
+SMIRNOV JUDIT
+SMIRNOV RASTISLAV
+SMIRNOV VLADIMIR
+SMOK NIKOLA
+SMOLČIĆ RUŽA
+SMOLENICKI MELITA
+SMOLENSKI KARLO
+SMOLENSKI ROZALIJA
+SMOLJANIKOV MIHAJLO DIPL ING
+SMOLOVIĆ DRAGOLJUB
+SMOLOVIĆ MIHAJLO
+SMOLOVIĆ RADMILA
+SMOLOVIĆ RATKO
+SMOLOVIĆ SAVA
+SMREKA DRAGICA
+SMUĐA GRADIMIR
+SMUĐA JOVAN
+SMUĐA MILENKO
+SMUĐA NIKOLA
+SMUĐA SAVA
+SMUK ŽIVANA
+SMUK BORIVOJ
+SMUTEK JOSIP
+SMUTNI IVAN
+SNJIDA ANA
+SNJIDA SAŠA
+SOBČAK FRANJA
+SOBOČAN MIŠA
+SOBOĆAN IVAN
+SOCEK IMRE
+SOCEK JOSIP
+SOCEK MIRJANA
+SOFILJ ALEKSANDRA
+SOFILJ DRAGICA
+SOFILJ JOVANKA
+SOFILJ RANKO
+SOFILJ SLAVICA
+SOFINKIĆ BRANKA
+SOFRADŽIJA MUHAMED
+SOFRANIN BORIVOJ
+SOFRANIN KUZMAN
+SOFRANIN MILIVOJ
+SOFRENIĆ VERICA
+SOFRONIJEVIĆ LJUBICA
+SOFTIĆ MARIJA
+SOGIĆ SAVA
+SOGIĆ VLADISLAV
+SOJEVIĆ MLADEN
+SOJIĆ RADOJKA
+SOKELE BRANISLAV
+SOKIĆ ŽIVKO
+SOKIĆ ĐURĐICA
+SOKIĆ ILIJA
+SOKIĆ LIDIJA
+SOKIĆ ZORKA
+SOKNIĆ TOMISLAV
+SOKOLA ANTUN
+SOKOLA FERENC
+SOKOLA IŠTVAN
+SOKOLA IŠTVAN
+SOKOLA KATARINA
+SOKOLA MARTA
+SOKOLAI JOŽEF
+SOKOLAI LAJOŠ
+SOKOLIĆ ŽELJKO
+SOKOLOV ALEKSANDAR
+SOKOLOV LJUBOMIR
+SOKOLOV MILAN
+SOKOLOV NADKA
+SOKOLOV SLAVKA
+SOKOLOV STEVAN
+SOKOLOV ZINAIDO
+SOKOLOVIĆ ĐORĐE
+SOKOLOVIĆ ANA
+SOKOLOVIĆ DUŠKO
+SOKOLOVIĆ KATARINA
+SOKOLOVIĆ MILE
+SOKOLOVIĆ NATALIJA
+SOKOLOVIĆ RUŽICA
+SOKOLOVIĆ SLOBODAN
+SOKOLOVIĆ SLOBODAN
+SOKOLOVIĆ TOMISLAV
+SOKOLOVIĆ ZORICA
+SOKOVIĆ DIMITRIJE
+SOKOVIĆ DUŠAN
+SOLAR LJUBICA
+SOLAR STJEPAN
+SOLAREVIĆ JOVANKA
+SOLAREVIĆ MILANKA
+SOLARIĆ SOFIJA
+SOLAROV BORISLAV
+SOLAROV BORO
+SOLAROV MILAN
+SOLAROV MILICA
+SOLAROV MILICA
+SOLAROV MILOŠ
+SOLAROV MILOVAN
+SOLAROV NIKOLA
+SOLAROV RADIVOJ
+SOLDAT BOŠKO
+SOLDAT BRANKA
+SOLDAT DRAGO
+SOLDAT MILOŠ
+SOLDAT MITAR
+SOLDAT PETAR
+SOLDAT VESNA
+SOLDATOVIĆ ĐORĐE
+SOLDATOVIĆ ĐORĐE
+SOLDATOVIĆ GORAN
+SOLDATOVIĆ JOVAN
+SOLDATOVIĆ MILA
+SOLDATOVIĆ SAVA NOVINAR
+SOLDATOVIĆ STANOJE
+SOLDATOVIĆ VESNA
+SOLDATOVIĆ VOJO
+SOLDO ALEKSANDAR
+SOLDO IVAN
+SOLDO NOVICA
+SOLDO VLADIMIR
+SOLEŠA MIŠO
+SOLOMUN BRANKO
+SOLOMUN DRAGO
+SOLOMUN ILIJA
+SOLOMUN MILE
+SOLOMUN VESA
+SOLONJA STEVAN
+SOMBORAC ALEKSANDAR
+SOMBORAC JOVAN
+SOMBORAC MARIJA
+SOMBORAC SREĆKO
+SOMBORAC TEREZA
+SOMBORAC TODOR
+SOMBORSKI LAZAR
+SOMBORSKI MILICA
+SOMER IMRE
+SOMER JELENA
+SOMER TIBOR
+SOPKA ANICA
+SOPKA JANKO
+SOPKA LJUBOMIR
+SOPKA LJUBOMIR
+SOPKA MARIJA
+SOPKA MIROSLAV
+SORŠAK MILAN
+SORŠAK VALENTIN
+SORADI ANTUN
+SORADI IVAN
+SORADI STJEPAN
+SORAJIĆ MILAN
+SORAJIĆ MILIVOJ
+SORAK DELIVOJE
+SORG ANGELINA
+SORG JELENA
+SORG NIKOLA
+SORGER MIRA
+SORO MILAN
+SORO MIODRAG
+SORO MIRJANA
+SORO NIKOLA
+SORO SIMO
+SOTER JANOŠ
+SOTIROVIĆ SLAVICA
+SOTONICA RAJKO
+SOVA PETAR
+SOVA RUDI
+SOVIŠ ĐORĐE
+SOVIŠ MIŠA
+SOVIŠ OLGA
+SOVIŠ PAVLE
+SOVILJ ĐORĐE
+SOVILJ ĐURO
+SOVILJ ANĐELKO
+SOVILJ ANKA
+SOVILJ BOŽO
+SOVILJ BOGDAN
+SOVILJ DUŠAN
+SOVILJ ILIJA
+SOVILJ ILIJA
+SOVILJ ILIJA
+SOVILJ IVICA
+SOVILJ JOVAN DR LEKAR
+SOVILJ LJUBICA
+SOVILJ MILAN MR
+SOVILJ MILAN
+SOVILJ PERKA
+SOVILJ PETAR
+SOVILJ PETAR
+SOVILJ VLADO
+SPAHIĆ KEMAL
+SPAIĆ ŽELJKO
+SPAIĆ MILAN
+SPAIĆ MILAN
+SPAJIĆ BOŽA
+SPAJIĆ DIKO
+SPAJIĆ JOVAN
+SPAJIĆ JULIJANA
+SPAJIĆ MILOJE
+SPAJIĆ MIRJANA
+SPAJIĆ SOFIJA
+SPAJIĆ VOJISLAV
+SPAJIĆ ZORAN
+SPAJIĆ ZORAN
+SPALEVIĆ MIOMIR
+SPALEVIĆ VERA
+SPARIOSI ANĐELKA
+SPASENOSKI DIMITRIJE
+SPASENOV MILE
+SPASENOV SPASKO
+SPASENOV STANA
+SPASENOVIĆ ŽIVKO
+SPASENOVIĆ LJUBICA
+SPASENOVSKI ROMAN
+SPASENOVSKI VASA
+SPASIĆ ŽIVOMIR
+SPASIĆ ĐORĐE
+SPASIĆ ALEKSANDAR
+SPASIĆ BOŽIDAR
+SPASIĆ BRANISLAV
+SPASIĆ BRANISLAV
+SPASIĆ DRAGIŠA
+SPASIĆ GORDANA
+SPASIĆ GORDANA
+SPASIĆ JELISAVETA
+SPASIĆ JOVAN
+SPASIĆ JUGOSLAV
+SPASIĆ LJILJANA
+SPASIĆ LJUBICA
+SPASIĆ MILAN
+SPASIĆ MILEVA
+SPASIĆ MILOŠ
+SPASIĆ MILUTIN
+SPASIĆ MIRJANA
+SPASIĆ MIRKO
+SPASIĆ OLIVERA
+SPASIĆ PETAR
+SPASIĆ PREDRAG
+SPASIĆ STANIŠA
+SPASIĆ STANKO
+SPASIĆ STOJAN
+SPASIĆ SVETISLAV
+SPASIĆ TOMISLAV DIPL ING
+SPASIĆ TOMISLAV
+SPASIĆ TRAJANKA
+SPASIĆ VELIČKO
+SPASIĆ VUJICA
+SPASOJEV LJUBICA
+SPASOJEV STOJAN
+SPASOJEVIĆ ŽIVOTA
+SPASOJEVIĆ ĐORĐE
+SPASOJEVIĆ ĐURA
+SPASOJEVIĆ BORIŠA MR
+SPASOJEVIĆ BORISLAV
+SPASOJEVIĆ CVETKO
+SPASOJEVIĆ DESIMIR
+SPASOJEVIĆ DOBRILA
+SPASOJEVIĆ DOBROSAV
+SPASOJEVIĆ DRAGAN
+SPASOJEVIĆ DRAGIŠA
+SPASOJEVIĆ DRAGOLJUB
+SPASOJEVIĆ DRAGOMIR
+SPASOJEVIĆ DUŠAN
+SPASOJEVIĆ ELIZABETA
+SPASOJEVIĆ GOSPAVA
+SPASOJEVIĆ GOSTIMIR
+SPASOJEVIĆ JOVAN
+SPASOJEVIĆ JULKA
+SPASOJEVIĆ KATICA
+SPASOJEVIĆ KRSTA
+SPASOJEVIĆ LAZAR
+SPASOJEVIĆ MIĆO
+SPASOJEVIĆ MIĆO
+SPASOJEVIĆ MIHAJLO
+SPASOJEVIĆ MILORAD
+SPASOJEVIĆ MIODRAG
+SPASOJEVIĆ MIODRAG
+SPASOJEVIĆ MOMČILO
+SPASOJEVIĆ NEBOJŠA
+SPASOJEVIĆ NOVAK
+SPASOJEVIĆ PAVLE
+SPASOJEVIĆ PREDRAG
+SPASOJEVIĆ RACO
+SPASOJEVIĆ RADISAV
+SPASOJEVIĆ RADOJLE
+SPASOJEVIĆ RANKO DIPL ING
+SPASOJEVIĆ RODOLJUB
+SPASOJEVIĆ RUŽICA
+SPASOJEVIĆ SLAVKA
+SPASOJEVIĆ SLAVKO
+SPASOJEVIĆ SLAVO
+SPASOJEVIĆ SLOBODAN
+SPASOJEVIĆ SONJA
+SPASOJEVIĆ STANISLAVA
+SPASOJEVIĆ STEVAN
+SPASOJEVIĆ SUZANA
+SPASOJEVIĆ VITOMIR DR
+SPASOJEVIĆ VLADIMIR
+SPASOJEVIĆ ZORAN
+SPASOLI FERAT
+SPASOVA LJUBICA
+SPERANSKI LJUDMILA MR
+SPERNJAK ĐORĐE
+SPERNJAK BOGDAN
+SPERNJAK LJUBINKA
+SPERNJAK MILENKO DIPL ING
+SPEVAK DANIELA
+SPEVAK JURAJ
+SPEVAK ZOROSLAV
+SPIČANOVIĆ EVICA
+SPIČANOVIĆ MAJA
+SPIČANOVIĆ ZAGORKA
+SPILKUCIĆ BORIVOJE
+SPIRIĆ ALEKSANDAR
+SPIRIDONOV ANASTAS
+SPIRIDONOVIĆ GRADIMIR
+SPIRIDONOVIĆ MILENKO
+SPIRIDONOVIĆ SILVIJA
+SPIROSKI ALEKSANDAR
+SPIROVSKI CANE
+SPOJA ŽELJKO
+SPREMIĆ DRAGAN
+SPREMIĆ PETAR
+SPREMIĆ SRETEN
+SPREMO ĐURO
+SPREMO MIODRAG
+SPREMO MIRKO
+SPREMO MIROSLAV
+SPREMO RADOVAN
+SPREMO SLAVKO
+SPREMO VOJISLAV
+SPUSENIK LAJOŠ
+SRĐANOV ŽARKO
+SRĐANOV ŽIVKO
+SRĐANOV KONSTANTIN
+SRĐANOV MIHAJLO
+SRĐANOV MILIVOJ
+SRĐANOV MILOŠ DIPL ING
+SRĐANOV MILOŠ
+SRĐANOV MIROSLAV
+SRĐANOV NADA
+SRĐANOV NADA
+SRĐANOV SLAVKO
+SRĐANOV SLOBODANKA
+SRĐANOV SLOBODANKA
+SRĐANOV SLOBODAN
+SRĐANOV VERA
+SRĐENOVIĆ MILAN
+SRĐENOVIĆ UROŠ
+SRĐEVIĆ BOJAN
+SRBIN ANKA
+SRBIN BOGDAN
+SRBIN JOVAN DR
+SRBIN KOSTA
+SRBIN MIROSLAV
+SRBINOVSKI BORIS
+SRBINOVSKI DRAGANA
+SRBINOVSKI DRAGANA
+SRBINOVSKI MAŠA
+SRBINOVSKI PANTA
+SRBINOVSKI PETAR
+SRBLJAN LAZAR
+SRBLJANIN DRAGAN
+SRBLJANIN PREDRAG
+SRBOVAN JON
+SRBULOVIĆ BOŽIDAR
+SRBULOVIĆ DRAGOLJUB
+SRBULOVIĆ MIROSLAV
+SRDANOV ŽIVAN
+SRDANOV ŽIVOJIN
+SRDANOV ĐORĐE
+SRDANOV BOŽIDAR
+SRDANOV JELKA
+SRDANOV JOVAN
+SRDANOV LAZAR
+SRDANOV LAZAR
+SRDANOV LJILJANA
+SRDANOV MIŠA
+SRDANOV MILICA
+SRDANOV MILOŠ
+SRDANOV MILOSAVA
+SRDANOV PETAR
+SRDANOV SIMA
+SRDANOV SLAVKA
+SRDANOV SLOBODAN
+SRDANOV SLOBODAN
+SRDANOV TODOR
+SRDANOVIĆ BRANISLAV
+SRDANOVIĆ DEJAN
+SRDANOVIĆ DRAGOJE
+SRDANOVIĆ FILIP
+SRDANOVIĆ LEPOSAVA
+SRDANOVIĆ OZREN DIPL ING
+SRDANOVIĆ ROSANDA
+SRDANOVIĆ SANJA
+SRDIĆ ČEDOMIR
+SRDIĆ ŽIVKO
+SRDIĆ ŽIVKO
+SRDIĆ ŽIVKO
+SRDIĆ ĐORĐE MR
+SRDIĆ ĐURO
+SRDIĆ ANĐA
+SRDIĆ ANA
+SRDIĆ BOŠKO
+SRDIĆ BOGDAN
+SRDIĆ BOSA
+SRDIĆ BRANISLAV
+SRDIĆ DANE
+SRDIĆ DIJANA
+SRDIĆ DUŠAN
+SRDIĆ EMERIKA
+SRDIĆ EMERIKA
+SRDIĆ GORAN
+SRDIĆ IVAN
+SRDIĆ JELENA
+SRDIĆ LJUBICA
+SRDIĆ MILAN
+SRDIĆ MILAN
+SRDIĆ MILICA
+SRDIĆ MIRJANA
+SRDIĆ MIRKO
+SRDIĆ MIRKO
+SRDIĆ NADA
+SRDIĆ NADA
+SRDIĆ NIKOLA
+SRDIĆ NIKOLA
+SRDIĆ NIKOLA
+SRDIĆ PETAR
+SRDIĆ RADE
+SRDIĆ RADE
+SRDIĆ SIMA
+SRDIĆ SLOBODAN
+SRDIĆ SVETOZAR
+SRDIĆ VASO
+SRDIĆ VLADIMIR
+SRDIĆ VOJA
+SRDIĆ ZORA
+SREĆKOV ŽIVKO
+SREĆKOV BLAGICA
+SREĆKOV BRANKO
+SREĆKOV DRAGAN
+SREĆKOV DRAGICA
+SREĆKOV DUŠAN
+SREĆKOV DUŠAN
+SREĆKOV ERŽEBET
+SREĆKOV JOVAN
+SREĆKOV KATICA
+SREĆKOV MILENA
+SREĆKOV MILENA
+SREĆKOV MILIVOJ
+SREĆKOV MIROSLAV
+SREĆKOV RADIVOJ
+SREĆKOV RADOJKA
+SREĆKOV STANKO
+SREĆKOV STEVAN
+SREĆKOV TEODORA
+SREĆKOV VASA
+SREĆKOV ZDRAVKO
+SREĆKOVIĆ ALEKSANDAR DR
+SREĆKOVIĆ DRAGIŠA
+SREĆKOVIĆ MARIJA
+SREĆKOVIĆ MILUTIN
+SREĆKOVIĆ RADIŠA
+SREĆKOVIĆ STOJANA
+SREĆO DANICA
+SREĆO MIĆO
+SREBOTNJAK STANKO
+SREBRO ILIJA DR
+SREDANOVIĆ MILORAD DIPL ING
+SREDANOVIĆ NEDELJKO
+SREDOJEVIĆ DARINKA
+SREDOJEVIĆ DOBRO
+SREDOJEVIĆ JULKICA
+SREDOJEVIĆ LAZAR
+SREDOJEVIĆ MILISAV
+SREDOJEVIĆ MIRKO
+SREDOJEVIĆ NEBOJŠA
+SREDOJEVIĆ VELIMIR
+SREDOJEVIĆ VELIMIR
+SREDOVIĆ RAJKO
+SREJIĆ BORKA
+SREMČEV ĐORĐE
+SREMČEV ALEKSANDAR DR LEKAR
+SREMČEV LAZAR
+SREMČEV MARIJA
+SREMČEV NESTOR
+SREMČEV SLOBODAN
+SREMČEV SOFIJA
+SREMČEVIĆ BORISLAV
+SREMČEVIĆ JOVAN
+SREMČEVIĆ JOVAN
+SREMČEVIĆ KATA
+SREMČEVIĆ KATICA
+SREMČEVIĆ LJUBIŠA
+SREMČEVIĆ RADIVOJ
+SREMČEVIĆ RASTKO
+SREMČEVIĆ SLAVNA
+SREMČEVIĆ STANISLAV
+SREMČEVIĆ VELJKO
+SREMAČKI ĐORĐE
+SREMAČKI DRAGOLJUB
+SREMAČKI DUŠANKA
+SREMAČKI-GAVRILOVIĆ MAJA
+SREMAČKI IVANKA
+SREMAČKI JOVANKA
+SREMAČKI MILOŠ
+SREMAČKI-MIRKOVIĆ MIRJANA
+SREMAČKI PETAR
+SREMAČKI SIMA
+SREMAČKI SOKA
+SREMAČKI SPASOJE
+SREMAČKI STANOJE
+SREMAČKI VLADA
+SREMAČKI ZORICA
+SREMAC ĐORĐE
+SREMAC ALEKSANDAR
+SREMAC DRAGOLJUB
+SREMAC ISAK
+SREMAC JANKO
+SREMAC JOVAN
+SREMAC LJUBICA
+SREMAC LJUBICA
+SREMAC MILENA
+SREMAC MILENKO
+SREMAC MILIVOJ
+SREMAC MIRA
+SREMAC NIKOLA
+SREMAC PAULINA
+SREMAC PAVLE
+SREMAC PERSIDA
+SREMAC RADOJKO
+SREMAC SLOBODAN
+SREMAC SRĐAN
+SREMAC STOJANKA
+SREMAC SVETISLAV
+SREMAC SVETISLAV
+SREMAC TANASIJE
+SREMAC VLADIMIR
+SREMAC VLAJKO
+SREMAC ZORANA
+SREMAC ZORAN
+SRETENOVIĆ ĐURĐINKA
+SRETENOVIĆ BORIVOJ
+SRETENOVIĆ-MANOJLOVIĆ ĐURĐINKA
+SRETENOVIĆ NEVENKA
+SRETENOVIĆ STOJADIN
+SRETIĆ MILENKO
+SRETIĆ MIRJANA
+SRETIĆ RATOMIR
+SRETKOVIĆ VERICA
+SRNDOVIĆ ZORKA
+SRNEC ŽELJKO
+SRNIĆ BOGDAN
+SRNIĆ EVICA
+SRNKA JANKO
+SRNKA JOVAN
+STAŠUK MIHAJLO
+STAHANIĆ ANKA
+STAIN STEVAN
+STAJČIĆ IVAN
+STAJČIĆ PETAR
+STAJŠIĆ ĐURA
+STAJIĆ ĐORĐE
+STAJIĆ ALEKSANDRA
+STAJIĆ BOŽIDAR
+STAJIĆ BORISLAV
+STAJIĆ BORISLAV
+STAJIĆ BORIVOJ
+STAJIĆ BRANIMIR
+STAJIĆ BRANISLAV
+STAJIĆ DRAGOLJUB
+STAJIĆ DUŠAN
+STAJIĆ DUŠICA
+STAJIĆ FEMA
+STAJIĆ GLIGORIJE
+STAJIĆ GLIGORIJE
+STAJIĆ GRIGORIJE DIPL ING
+STAJIĆ JUSTINA
+STAJIĆ LEPOSAVA
+STAJIĆ LJUBOMIR
+STAJIĆ MARA
+STAJIĆ MARIJA
+STAJIĆ MILAN DIPL ING
+STAJIĆ MILAN
+STAJIĆ MILESA
+STAJIĆ MILEVA
+STAJIĆ MILKA
+STAJIĆ MIROSLAV
+STAJIĆ NESTOR
+STAJIĆ PAVLE
+STAJIĆ PETAR
+STAJIĆ-POPOV BORISLAVA DR
+STAJIĆ RADIVOJ
+STAJIĆ RADOSLAV
+STAJIĆ SIKA
+STAJIĆ SRETA
+STAJIĆ STANISLAV
+STAJIĆ STOJADIN
+STAJIĆ TODOR
+STAJIĆ VELIMIR
+STAJIĆ VUKOSAV
+STAJIĆ ZLATA
+STAJKOVIĆ BRATISLAV
+STAJKOVIĆ DRAGOLJUB
+STAKIĆ ŽIVAN
+STAKIĆ ŽIVKA
+STAKIĆ ĐURO
+STAKIĆ ALEKSANDAR
+STAKIĆ BOŠKO
+STAKIĆ BOŽIDAR
+STAKIĆ BORIVOJE
+STAKIĆ BRANISLAV
+STAKIĆ DEJAN
+STAKIĆ DUŠAN DIPL ING
+STAKIĆ JELENA
+STAKIĆ JOVAN SUDIJA
+STAKIĆ MELINDA
+STAKIĆ MILAN
+STAKIĆ MILAN
+STAKIĆ MIRKO
+STAKIĆ MOMIR
+STAKIĆ NEBOJŠA
+STAKIĆ NEDELJKO
+STAKIĆ NIKOLA
+STAKIĆ PAVLE
+STAKIĆ SPOMENKA
+STAKIĆ STOJAN
+STAKIĆ VERA
+STAKIĆ ZAHARIJE
+STAKIĆ ZORAN
+STAKORIĆ ZDRAVKO
+STAMATOVIĆ MILENKO DR
+STAMATOVIĆ MILORAD
+STAMENIĆ DAMNJAN
+STAMENIĆ MARKO
+STAMENIĆ RADOSAV
+STAMENIĆ TOMISLAV
+STAMENKOVIĆ ŽIVOJIN
+STAMENKOVIĆ ŽIVOJIN
+STAMENKOVIĆ ALEKSANDAR
+STAMENKOVIĆ BLAGOJE
+STAMENKOVIĆ DRAGAN
+STAMENKOVIĆ GORDANA
+STAMENKOVIĆ LJUBOMIR DR
+STAMENKOVIĆ LJUBOMIR
+STAMENKOVIĆ MARJAN
+STAMENKOVIĆ MILORAD
+STAMENKOVIĆ MIROSLAVA
+STAMENKOVIĆ NOVICA
+STAMENKOVIĆ PETRONIJE
+STAMENKOVIĆ RADOMIR DIPL ING
+STAMENKOVIĆ SINIŠA
+STAMENKOVIĆ SLAVOLJUB
+STAMENKOVIĆ SLOBODAN
+STAMENKOVIĆ SRETEN DR
+STAMENKOVIĆ SRETEN
+STAMENKOVIĆ STANIMIR
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ VASILIJE
+STAMENKOVIĆ VELIBOR
+STAMENKOVIĆ VERA
+STAMENKOVIĆ VLADIMIR DIPL ING
+STAMENKOVIĆ VLADIMIR
+STAMENKOVIĆ VLASTIMIR
+STAMENKOVIĆ VUKADIN
+STAMENKOVIĆ ZORAN
+STAMENKOVIĆ ZORA
+STAMENOV BRANKO
+STAMENOV NIKOLA
+STAMENOV SLAVKA
+STAMENOVIĆ KRSTIVOJ
+STAMENOVIĆ RAJKO
+STAMEVSKI TONČE
+STAMORAN KATICA
+STAMPFER ROZALIJA
+STANČETIĆ DRAGICA
+STANČETIĆ PAVLE
+STANČIĆ ANĐELKA
+STANČIĆ ANDRIJA DR
+STANČIĆ BLAGOJE MR
+STANČIĆ BOŽANA
+STANČIĆ BOŽIDAR
+STANČIĆ DANICA
+STANČIĆ DRAGOLJUB
+STANČIĆ LAZAR
+STANČIĆ LJUBOMIR
+STANČIĆ MARIJA
+STANČIĆ MARKO
+STANČIĆ MIĆA
+STANČIĆ MIHAJLO
+STANČIĆ MIKA
+STANČIĆ MIODRAG
+STANČIĆ NIKOLA
+STANČIĆ PAVLE
+STANČIĆ TANKOSAVA
+STANČIĆ TIHOMIR
+STANČIĆ ZORAN
+STANČIK MARGITA
+STANČU MARIJA
+STANČUL ŽIVAN
+STANČUL ANKA
+STANČUL LJILJANA
+STANČUL LJUBOMIR
+STANČUL RADISLAV
+STANČUL RADOVAN
+STANČUL SAVA
+STANČULOV DRAGICA
+STANČULOV MILAN
+STANAĆEV ŽIVA
+STANAĆEV MILENA
+STANAĆEV MILIVOJ
+STANAĆEV SREDOJE DR
+STANAR ĐURA
+STANAR ĐURA
+STANAR ĐURA
+STANAR ANKA
+STANAR DESA
+STANAR DUŠANKA
+STANAR DUŠAN
+STANAR-GOGIĆ STEVAN
+STANAR ILIJA
+STANAR MILE
+STANAR RADE
+STANAR RATKO
+STANAREVIĆ ŽELJKO
+STANAREVIĆ BOŽA
+STANAREVIĆ MARKO
+STANAREVIĆ MIHAJLO
+STANAREVIĆ MILAN
+STANAREVIĆ NEDELJKA
+STANAREVIĆ SAVA
+STANBOLIJA MIRKO
+STANEKOVIĆ MILAN
+STANEKOVIĆ STANISLAV
+STANEKOVIĆ VOJA
+STANIČKOV ČEDOMIR
+STANIČKOV BORA
+STANIČKOV JOVAN
+STANIČKOV LJILJANA
+STANIČKOV MARTA
+STANIŠIĆ BOGOLJUB
+STANIŠIĆ BORISLAV
+STANIŠIĆ BUDINKA
+STANIŠIĆ DAMJAN
+STANIŠIĆ DRAGOLJUB
+STANIŠIĆ DRAGOLJUB
+STANIŠIĆ DRAGOMIR
+STANIŠIĆ DUŠAN
+STANIŠIĆ DUŠAN
+STANIŠIĆ GOJKO
+STANIŠIĆ JELENA
+STANIŠIĆ JOVAN
+STANIŠIĆ JOVAN
+STANIŠIĆ KATICA
+STANIŠIĆ LEPOSAVA
+STANIŠIĆ LJILJANA DR
+STANIŠIĆ LJUBICA
+STANIŠIĆ MARKO
+STANIŠIĆ MARKO
+STANIŠIĆ MILAN
+STANIŠIĆ MILAN
+STANIŠIĆ MILIĆ DR LEKAR
+STANIŠIĆ MILIVOJ
+STANIŠIĆ MILOŠ
+STANIŠIĆ MIODRAG
+STANIŠIĆ MIODRAG
+STANIŠIĆ MLADEN
+STANIŠIĆ MOMIR
+STANIŠIĆ NEBOJŠA
+STANIŠIĆ NEDELJKA
+STANIŠIĆ NIKOLA
+STANIŠIĆ NIKOLA
+STANIŠIĆ OLGICA
+STANIŠIĆ PAVLE
+STANIŠIĆ PAVLE
+STANIŠIĆ PETAR
+STANIŠIĆ PROKA
+STANIŠIĆ RADA
+STANIŠIĆ RADOVAN
+STANIŠIĆ RATKO
+STANIŠIĆ RELJA
+STANIŠIĆ SIMO
+STANIŠIĆ SLAVKO DIPL ING
+STANIŠIĆ SLOBODAN
+STANIŠIĆ STANIŠA
+STANIŠIĆ STANISLAV
+STANIŠIĆ STEVO
+STANIŠIĆ STOJANČA
+STANIŠIĆ SVETLANA
+STANIŠIĆ SVETOZAR DR
+STANIŠIĆ SVETOZAR
+STANIŠIĆ TIHOMIR
+STANIŠIĆ TODOR
+STANIŠIĆ TOMAŠ
+STANIŠIĆ VASILJKA
+STANIŠIĆ VELJKO
+STANIŠIĆ VLADA
+STANIŠIĆ ZORAN
+STANIŠIĆ ZORAN
+STANIŠIN BRANKO
+STANIŠIN ISA
+STANIŠIN VOJIN
+STANIŠLJEVIĆ DUŠANKA
+STANIĆ ŽIVADIN
+STANIĆ ŽIVAN
+STANIĆ ĐURA
+STANIĆ ALEKSANDAR
+STANIĆ BOŠKO
+STANIĆ BOGDAN
+STANIĆ BRANKA
+STANIĆ BRANKO
+STANIĆ BRANKO
+STANIĆ DANE
+STANIĆ DANICA
+STANIĆ DANKA
+STANIĆ DRAGAN
+STANIĆ DRAGOSLAV DR
+STANIĆ DRAGO
+STANIĆ DUŠAN
+STANIĆ GOJKO
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ IVAN
+STANIĆ JADRANKA
+STANIĆ JELENA
+STANIĆ JOVAN DIPL ING
+STANIĆ JOVAN DIPL ING
+STANIĆ JULKA
+STANIĆ KRISTIVOJE
+STANIĆ LINKA
+STANIĆ LJUBODRAG
+STANIĆ MANE
+STANIĆ MARKO
+STANIĆ MILAN DIPL PRAVNIK
+STANIĆ MILANKO
+STANIĆ MILANKO
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILE
+STANIĆ MILICA
+STANIĆ MILINKO
+STANIĆ MILISAV
+STANIĆ MILOJE
+STANIĆ MILOSAVA
+STANIĆ MLADEN
+STANIĆ MOMČILO
+STANIĆ OLGA
+STANIĆ OSTOJA
+STANIĆ PETAR
+STANIĆ PETAR
+STANIĆ PETAR
+STANIĆ RADE
+STANIĆ RADE
+STANIĆ RADIŠA
+STANIĆ RADOVAN DIPL ING
+STANIĆ RAJKO
+STANIĆ SAVO
+STANIĆ SIMO
+STANIĆ SINIŠA
+STANIĆ SPASOJE
+STANIĆ SRĐAN
+STANIĆ STAMENA
+STANIĆ STEVAN
+STANIĆ UROŠ
+STANIĆ VELIBOR
+STANIĆ VIKTOR
+STANIĆ VITOMIR
+STANIĆ VITOMIR
+STANIĆ VLADIMIR
+STANIĆ VOJISLAV
+STANIĆ ZORAN
+STANIĆ ZORAN
+STANIŽAN MILORAD
+STANIK OLGA
+STANIKIĆ MILAN
+STANIKIĆ MILEVA
+STANIMIROV ALEKSANDAR
+STANIMIROV ANA
+STANIMIROV BORIVOJ
+STANIMIROV BRANKA
+STANIMIROV DUŠAN
+STANIMIROV GAVRA
+STANIMIROV JELKA
+STANIMIROV KATICA
+STANIMIROV LJILJANA
+STANIMIROV LJILJANA
+STANIMIROV LJUBICA
+STANIMIROV NEDELJKO
+STANIMIROV RADIVOJ
+STANIMIROV RANKA
+STANIMIROV SLAVKO
+STANIMIROV ZORICA
+STANIMIROVIĆ ŽIVOJIN
+STANIMIROVIĆ DESIMIR
+STANIMIROVIĆ DRAGAN
+STANIMIROVIĆ DRAGAN
+STANIMIROVIĆ DRAGOMIR
+STANIMIROVIĆ JADRANKA
+STANIMIROVIĆ JELICA
+STANIMIROVIĆ KRSTO
+STANIMIROVIĆ MOMA DR
+STANIMIROVIĆ PAVLE
+STANIMIROVIĆ RADOJKA
+STANIMIROVIĆ STANIMIR
+STANIMIROVIĆ TATJANA
+STANIMIROVIĆ TRIFUN
+STANIMIROVIĆ VERONIKA
+STANISAVLJEV ĐOKA
+STANISAVLJEV ĐORĐE
+STANISAVLJEV ALEKSANDRA
+STANISAVLJEV ANA
+STANISAVLJEV DOBRIVOJ
+STANISAVLJEV DUŠAN
+STANISAVLJEV LJUBICA
+STANISAVLJEV LJUBOMIR
+STANISAVLJEV MILAN
+STANISAVLJEV MILICA
+STANISAVLJEV MILOJKO
+STANISAVLJEV MIROSLAV
+STANISAVLJEVIĆ ĐORĐE DIPL ING
+STANISAVLJEVIĆ ĐORĐE
+STANISAVLJEVIĆ BILJANA
+STANISAVLJEVIĆ BOŽA
+STANISAVLJEVIĆ CVETA
+STANISAVLJEVIĆ DANE
+STANISAVLJEVIĆ DIMITRIJE
+STANISAVLJEVIĆ DRAGOMIR
+STANISAVLJEVIĆ DUŠANKA
+STANISAVLJEVIĆ ELIZABETA
+STANISAVLJEVIĆ GIZELA
+STANISAVLJEVIĆ GORDANA
+STANISAVLJEVIĆ IGNJATIJE
+STANISAVLJEVIĆ KATICA
+STANISAVLJEVIĆ LEPOSAVA
+STANISAVLJEVIĆ MARIJA
+STANISAVLJEVIĆ MILAN
+STANISAVLJEVIĆ MILAN
+STANISAVLJEVIĆ MILIVOJE
+STANISAVLJEVIĆ MILOŠ
+STANISAVLJEVIĆ MIODRAG
+STANISAVLJEVIĆ MIODRAG
+STANISAVLJEVIĆ MIRKO
+STANISAVLJEVIĆ NADA
+STANISAVLJEVIĆ RADE
+STANISAVLJEVIĆ RUŽICA
+STANISAVLJEVIĆ SAVA DIPL ING
+STANISAVLJEVIĆ STAVRA DIPL ING
+STANISAVLJEVIĆ STEVAN
+STANISAVLJEVIĆ VELIZAR
+STANISAVLJEVIĆ VELJKO
+STANISAVLJEVIĆ ZORICA
+STANIVUK ŽARKO
+STANIVUK DEJAN
+STANIVUK MIRKO
+STANIVUK MLADEN
+STANIVUK NADA
+STANIVUK NEDELJKO
+STANIVUK NIKOLA
+STANIVUK ZDRAVKO
+STANIVUKOVIĆ DRAGUTIN MR
+STANIVUKOVIĆ DRAGUTIN
+STANIVUKOVIĆ LJILJANA
+STANIVUKOVIĆ MARIJA
+STANIVUKOVIĆ MILIVOJ DR VETERINE
+STANIVUKOVIĆ UROŠ
+STANKIĆ DRAGAN
+STANKIĆ LAZAR
+STANKIĆ MILOŠ
+STANKIĆ STEVAN
+STANKIĆ VILOGORKA
+STANKIJEVIĆ DUŠAN
+STANKIN ĐORĐE
+STANKIN BRANKA
+STANKIN JASMINA
+STANKIN MILE
+STANKIN MILIVOJ
+STANKIN MILIVOJ
+STANKIN TODOR
+STANKO IMRE
+STANKO IVAN
+STANKO JOSIP DIPL ING
+STANKO STEVAN
+STANKO STEVAN
+STANKO STEVAN
+STANKO VERICA
+STANKOV ŽARKO
+STANKOV ŽIVKA
+STANKOV ŽIVKO
+STANKOV ŽIVKO
+STANKOV ĐORĐE
+STANKOV BOJANA
+STANKOV DARINKA
+STANKOV DARKO
+STANKOV DUŠAN
+STANKOV DUŠAN
+STANKOV EŽEBET
+STANKOV IVANKA
+STANKOV IVAN
+STANKOV JELENA
+STANKOV KATICA
+STANKOV KOVINA
+STANKOV LJUBICA
+STANKOV MARIJA
+STANKOV MARINKO
+STANKOV MARKO
+STANKOV MILANKO
+STANKOV MILANKO
+STANKOV MILOŠ
+STANKOV MIRJANA
+STANKOV MIROSLAV
+STANKOV NEVENKA
+STANKOV NIKOLA
+STANKOV PAJA DR
+STANKOV PAVLE
+STANKOV PETAR
+STANKOV PETAR
+STANKOV RADOVAN
+STANKOV RASTKO
+STANKOV RUŽICA
+STANKOV SLOBODANKA
+STANKOV SOFIJA
+STANKOV STANKA
+STANKOV STEVAN
+STANKOV STEVAN
+STANKOV STOJAN
+STANKOV SVETISLAV
+STANKOV SVETOZAR
+STANKOV VELJKO
+STANKOV VELJKO
+STANKOV VLADIMIR
+STANKOV VOJISLAV
+STANKOV VOJISLAV
+STANKOV VOJISLAV
+STANKOV ZORANKA
+STANKOV ZORAN
+STANKOVIĆ ŽARKO
+STANKOVIĆ ŽARKO
+STANKOVIĆ ŽIVKO
+STANKOVIĆ ŽIVKO
+STANKOVIĆ ŽIVOJIN
+STANKOVIĆ ŽIVOJIN
+STANKOVIĆ ŽIVORAD
+STANKOVIĆ ĐORĐE
+STANKOVIĆ ĐORĐE
+STANKOVIĆ ĐORE
+STANKOVIĆ ĐURO
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ANĐELKA
+STANKOVIĆ ANĐELKA
+STANKOVIĆ ANA
+STANKOVIĆ ANICA
+STANKOVIĆ ARANKA
+STANKOVIĆ AVRAM
+STANKOVIĆ BILJANA
+STANKOVIĆ BOŽIDAR
+STANKOVIĆ BOŽIDAR
+STANKOVIĆ BOGOLJUB DR
+STANKOVIĆ BOGOLJUB
+STANKOVIĆ BOJANA
+STANKOVIĆ BOJAN
+STANKOVIĆ BORA
+STANKOVIĆ BORA
+STANKOVIĆ BORA
+STANKOVIĆ BORISLAV
+STANKOVIĆ BORISLAV
+STANKOVIĆ BOSILJKA
+STANKOVIĆ BRANKO
+STANKOVIĆ DANICA
+STANKOVIĆ DANILO
+STANKOVIĆ DARINKA
+STANKOVIĆ DIVNA
+STANKOVIĆ DOBRINKA
+STANKOVIĆ DOBRIVOJE
+STANKOVIĆ DOBRIVOJE
+STANKOVIĆ DOBROSLAV
+STANKOVIĆ DRAGAN
+STANKOVIĆ DRAGAN
+STANKOVIĆ DRAGIŠA
+STANKOVIĆ DRAGIŠA
+STANKOVIĆ DRAGICA
+STANKOVIĆ DRAGOLJUB
+STANKOVIĆ DRAGORAD
+STANKOVIĆ DRAGUTIN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠKO
+STANKOVIĆ EVELIN DR
+STANKOVIĆ EVICA
+STANKOVIĆ FREDERIK
+STANKOVIĆ ILIJA
+STANKOVIĆ ILIJA
+STANKOVIĆ IVAN
+STANKOVIĆ IVAN
+STANKOVIĆ JAGODA
+STANKOVIĆ JELENA
+STANKOVIĆ JELICA
+STANKOVIĆ JESENKA DR
+STANKOVIĆ JOVAN DIPL ING
+STANKOVIĆ JOVAN
+STANKOVIĆ JOVICA
+STANKOVIĆ JOVICA
+STANKOVIĆ KATALIN
+STANKOVIĆ KATARINA
+STANKOVIĆ KATICA
+STANKOVIĆ KOSANA
+STANKOVIĆ KOSTADIN
+STANKOVIĆ LAZAR DIPL ING
+STANKOVIĆ LAZAR
+STANKOVIĆ LAZAR
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJUBICA
+STANKOVIĆ LJUBICA
+STANKOVIĆ LJUBISAV
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBO
+STANKOVIĆ MARIJA
+STANKOVIĆ MARIJA
+STANKOVIĆ MARINKO
+STANKOVIĆ MARINKO
+STANKOVIĆ MARJAN
+STANKOVIĆ MARKO
+STANKOVIĆ MELANIJA
+STANKOVIĆ MIHAJLO
+STANKOVIĆ MIHAJLO
+STANKOVIĆ MILANKO
+STANKOVIĆ MILANKO
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILENKO
+STANKOVIĆ MILOŠ
+STANKOVIĆ MILOŠ
+STANKOVIĆ MILORAD
+STANKOVIĆ MILUTIN
+STANKOVIĆ MIODRAG
+STANKOVIĆ MIOMIR
+STANKOVIĆ MIRJANA
+STANKOVIĆ MIRJANA
+STANKOVIĆ MIRKO
+STANKOVIĆ MIRKO
+STANKOVIĆ MIROLJUB
+STANKOVIĆ MIROSLAV
+STANKOVIĆ MIROSLAV
+STANKOVIĆ MITAR
+STANKOVIĆ MLADEN
+STANKOVIĆ MLADEN
+STANKOVIĆ MOMČILO
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NATAŠA
+STANKOVIĆ NATALIJA
+STANKOVIĆ NENAD
+STANKOVIĆ NEVENA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ OLGA
+STANKOVIĆ OLGA
+STANKOVIĆ OLGICA
+STANKOVIĆ OSTOJA
+STANKOVIĆ PAVLE
+STANKOVIĆ PETAR
+STANKOVIĆ PETAR
+STANKOVIĆ RADIVOJ
+STANKOVIĆ RADOMIR
+STANKOVIĆ RADOSLAV
+STANKOVIĆ SAŠA
+STANKOVIĆ SAVKA
+STANKOVIĆ SAVO
+STANKOVIĆ SLAVKO
+STANKOVIĆ SLAVKO
+STANKOVIĆ SLOBODANKA
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SOFIJA
+STANKOVIĆ SRĐAN
+STANKOVIĆ SRBOLJUB DIPL ING
+STANKOVIĆ STAMEN
+STANKOVIĆ STANKO
+STANKOVIĆ STANOJE
+STANKOVIĆ STEVAN
+STANKOVIĆ STEVAN
+STANKOVIĆ STEVO
+STANKOVIĆ SVETISLAV
+STANKOVIĆ SVETISLAV
+STANKOVIĆ SVETOZAR
+STANKOVIĆ SVETOZAR
+STANKOVIĆ TEREZA
+STANKOVIĆ TIOSAV
+STANKOVIĆ TOŠA
+STANKOVIĆ TOMISLAV
+STANKOVIĆ TOMISLAV
+STANKOVIĆ VENERA
+STANKOVIĆ VESELIN
+STANKOVIĆ VESELIN
+STANKOVIĆ VITOMIR
+STANKOVIĆ VLADAN
+STANKOVIĆ VLADA
+STANKOVIĆ VLADIMIR
+STANKOVIĆ VLADIMIR
+STANKOVIĆ VOJISLAV
+STANKOVIĆ-VRANIĆ MILICA
+STANKOVIĆ ZLATIVOJE
+STANKOVIĆ ZORAN
+STANKOVIĆ ZORAN
+STANKOVIĆ ZORA
+STANKOVSKI KOSTA
+STANKOVSKI STEVAN
+STANKOVSKI VELJAN
+STANOJČIĆ ĐORĐE
+STANOJČIĆ ANĐELKO
+STANOJČIĆ ANKICA
+STANOJČIĆ DESIMIR
+STANOJČIĆ DUŠANKA
+STANOJČIĆ OLGA
+STANOJČIĆ SLOBODAN
+STANOJČIĆ SOFIJA
+STANOJČIĆ STEVAN
+STANOJČIĆ VERA
+STANOJČIĆ VOJISLAV
+STANOJEV ŽIVAN
+STANOJEV ALEKSANDRA
+STANOJEV BRANISLAV
+STANOJEV DEJAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV GORAN
+STANOJEV JOCA
+STANOJEV LAZAR
+STANOJEV LJUBICA
+STANOJEV MILAN
+STANOJEV-MOSKALJ OLGA
+STANOJEV NEBOJŠA
+STANOJEV NIKOLA
+STANOJEV-PETRENJ MIRJANA
+STANOJEV SAVA
+STANOJEV STANKA
+STANOJEV STEVAN
+STANOJEV TIHOMIR
+STANOJEV VERICA
+STANOJEV VLADIMIR
+STANOJEV VLADIMIR
+STANOJEVIĆ ČEDOMIR
+STANOJEVIĆ ŽARKO
+STANOJEVIĆ ŽIVANKO
+STANOJEVIĆ ŽIVOJIN
+STANOJEVIĆ ĐURA
+STANOJEVIĆ BOŽIDAR
+STANOJEVIĆ DANICA
+STANOJEVIĆ DRAGAN
+STANOJEVIĆ DRAGOLJUB
+STANOJEVIĆ DUŠAN
+STANOJEVIĆ DUŠAN
+STANOJEVIĆ HRANISLAV
+STANOJEVIĆ ILIJA
+STANOJEVIĆ JOVAN
+STANOJEVIĆ KAĆA
+STANOJEVIĆ KOSTA
+STANOJEVIĆ LJUBINKA
+STANOJEVIĆ-MANDIĆ MILA
+STANOJEVIĆ MARIJA
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILA
+STANOJEVIĆ MILETA
+STANOJEVIĆ MILIVOJ
+STANOJEVIĆ MILORAD
+STANOJEVIĆ MIODRAG
+STANOJEVIĆ MIODRAG
+STANOJEVIĆ MIROSLAV
+STANOJEVIĆ NADA
+STANOJEVIĆ NATAŠA
+STANOJEVIĆ NEBOJŠA
+STANOJEVIĆ NEMANJA
+STANOJEVIĆ NESTOR
+STANOJEVIĆ NIKOLA
+STANOJEVIĆ NIKOLA
+STANOJEVIĆ PAVLE
+STANOJEVIĆ PETAR
+STANOJEVIĆ PREDRAG
+STANOJEVIĆ RADMILA
+STANOJEVIĆ RADOMIR
+STANOJEVIĆ RADOSLAV
+STANOJEVIĆ RADO
+STANOJEVIĆ SLOBODAN
+STANOJEVIĆ SOFIJA
+STANOJEVIĆ SRBOLJUB
+STANOJEVIĆ STEVAN
+STANOJEVIĆ SVETISLAV
+STANOJEVIĆ TATJANA
+STANOJEVIĆ TOMISLAV
+STANOJEVIĆ-VARGA ANA DR
+STANOJEVIĆ VELJKO
+STANOJEVIĆ VLADIMIR
+STANOJEVIĆ VLADIMIR
+STANOJEVIĆ VLADISLAV
+STANOJEVIĆ VUK
+STANOJEVIĆ ZDRAVKO
+STANOJEVIĆ ZLATKO
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJKOVIĆ MILOŠ
+STANOJKOVIĆ RADE
+STANOJKOVIĆ VLADA
+STANOJLOVIĆ MITAR
+STANOJLOVIĆ STEVAN
+STANOJOSKI DANICA
+STANOJOSKI ZLATA
+STANOJSKI BLAGOJE
+STANOVIĆ STEVAN
+STANOVIĆ VESELIN
+STANTE JOSIP
+STANTIĆ BARTUL
+STANTIĆ BERTALAN
+STANTIĆ KATALIN
+STANTIĆ LADISLAV
+STANTIĆ VERONA
+STANUŠIĆ MIJAT
+STANUL PETAR
+STANULOV SVETLANA
+STANULOV TODOR
+STANULOVIĆ DIMITRIJE DR
+STANULOVIĆ MILAN DR
+STAPAR ALEKSANDAR
+STAPARSKI BORISLAV
+STAPARSKI MILAN
+STAPARSKI PETAR
+STAPARSKI STEVAN
+STARČEV ANĐELKA
+STARČEV BRANKA
+STARČEV DESANKA
+STARČEV JELA
+STARČEV KATICA
+STARČEV MILAN DIPL ING
+STARČEV MILENKO
+STARČEV MILOŠ
+STARČEV MIROSLAV
+STARČEV STOJANKA
+STARČEVIĆ ANICA
+STARČEVIĆ ANKA
+STARČEVIĆ BOŠKO
+STARČEVIĆ BOGDAN
+STARČEVIĆ BORISLAV
+STARČEVIĆ BRANISLAV
+STARČEVIĆ BUDIMIR
+STARČEVIĆ DRAGICA
+STARČEVIĆ DUŠANKA
+STARČEVIĆ DUŠAN
+STARČEVIĆ FRANJA
+STARČEVIĆ IVAN
+STARČEVIĆ LJUBINKO DIPL ING
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILICA
+STARČEVIĆ MILICA
+STARČEVIĆ MILKA
+STARČEVIĆ MILOVAN
+STARČEVIĆ MIODRAG
+STARČEVIĆ MIRKO
+STARČEVIĆ MIRKO
+STARČEVIĆ MIRKO
+STARČEVIĆ NIKOLA
+STARČEVIĆ OLGA
+STARČEVIĆ PAVLE
+STARČEVIĆ RUDOLF
+STARČEVIĆ STAMENKA
+STARČEVIĆ STANKO
+STARČEVIĆ STIPO
+STARČEVIĆ STOJAN
+STARČEVIĆ VLASTIMIR
+STARAČEK ŽELJKO
+STARAČEK JOŽEF
+STARAČEK JOVAN
+STAREVIĆ NIKOLA
+STARI DANIEL
+STARI LIVIJA
+STARIĆ IVAN
+STAROVIĆ BORIVOJ DR
+STAROVIĆ BRANKO
+STAROVIĆ MARIJA
+STAROVIĆ MILAN
+STAROVIĆ PREDRAG
+STAROVIĆ RADOMIR
+STAROVIĆ RASTISLAV
+STAROVIĆ ZDRAVKO
+STAROVLAH MLADEN
+STAVENOV ĐORĐE
+STAVJEL MLADEN
+STAVREVSKI BOGDAN
+STAVRIĆ ILONKA
+STAVRIĆ STANOJE
+STAVROV DANICA
+STEĆ MITAR
+STEĆ VASILIJE
+STEFAN IVAN
+STEFAN LJUBOMIRA
+STEFANIDES JULIJE
+STEFANIDES LJUDEVIT
+STEFANIDIS KIRIAKI
+STEFANJUK NIKOLA
+STEFANOV BLAGOJE
+STEFANOV LJUBOMIR
+STEFANOV NADA
+STEFANOVIĆ ŽARKO
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIVKO
+STEFANOVIĆ ŽIVORAD
+STEFANOVIĆ ŽIVOTA
+STEFANOVIĆ ĐORĐE
+STEFANOVIĆ ĐURICA DR LEKAR
+STEFANOVIĆ ALEKSANDAR
+STEFANOVIĆ ALEKSANDAR
+STEFANOVIĆ ANA
+STEFANOVIĆ ANGELINA
+STEFANOVIĆ ANKA
+STEFANOVIĆ BOGDAN
+STEFANOVIĆ BOGOLJUB
+STEFANOVIĆ BORIVOJE
+STEFANOVIĆ BORIVOJ
+STEFANOVIĆ BRANISLAV
+STEFANOVIĆ BRANKA
+STEFANOVIĆ BRANKO
+STEFANOVIĆ DANICA
+STEFANOVIĆ DANICA
+STEFANOVIĆ DANILKA
+STEFANOVIĆ DARINKA
+STEFANOVIĆ DEŽE
+STEFANOVIĆ DEJAN
+STEFANOVIĆ DRAGANA
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGIŠA
+STEFANOVIĆ DRAGIŠA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGOLJUB
+STEFANOVIĆ DRAGOLJUB
+STEFANOVIĆ DRAGUTIN
+STEFANOVIĆ DRAGUTIN
+STEFANOVIĆ DUŠAN
+STEFANOVIĆ DUŠKO
+STEFANOVIĆ ERŽIKA
+STEFANOVIĆ-GERIĆ ZORKA
+STEFANOVIĆ GORAN
+STEFANOVIĆ GORDAN
+STEFANOVIĆ IVAN
+STEFANOVIĆ JELICA
+STEFANOVIĆ JELICA
+STEFANOVIĆ JOSIF
+STEFANOVIĆ JOVANKA
+STEFANOVIĆ JOVAN
+STEFANOVIĆ JOVAN
+STEFANOVIĆ JOZEFINA
+STEFANOVIĆ JULIJANA
+STEFANOVIĆ KARANFILA
+STEFANOVIĆ KATICA
+STEFANOVIĆ LAZAR
+STEFANOVIĆ LENKA
+STEFANOVIĆ LJUBOMIR DR
+STEFANOVIĆ LJUBOMIR
+STEFANOVIĆ LUCIJA
+STEFANOVIĆ MARIJA
+STEFANOVIĆ MARINKO
+STEFANOVIĆ MARKO
+STEFANOVIĆ MARTA
+STEFANOVIĆ MARTA
+STEFANOVIĆ MIHAJLO
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILENA
+STEFANOVIĆ MILEN
+STEFANOVIĆ MILICA
+STEFANOVIĆ MILOŠ
+STEFANOVIĆ MILOŠ
+STEFANOVIĆ MILOJE
+STEFANOVIĆ MILOVAN
+STEFANOVIĆ MILUTIN DIPL PRAVNIK
+STEFANOVIĆ MILUTIN
+STEFANOVIĆ MIOMIR
+STEFANOVIĆ MIRA
+STEFANOVIĆ MIRJANA
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ NADA
+STEFANOVIĆ NEDELJKA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ PANTA
+STEFANOVIĆ PAULA
+STEFANOVIĆ PETAR
+STEFANOVIĆ RADMILA
+STEFANOVIĆ RADMILA
+STEFANOVIĆ RADOSLAV
+STEFANOVIĆ RUŽICA
+STEFANOVIĆ SANJA
+STEFANOVIĆ SLAVICA DR
+STEFANOVIĆ SLAVKA
+STEFANOVIĆ SLAVKO
+STEFANOVIĆ SLAVKO
+STEFANOVIĆ SLOBODAN PROFESOR
+STEFANOVIĆ SLOBODAN
+STEFANOVIĆ SMILJA
+STEFANOVIĆ SMILJKA
+STEFANOVIĆ SNEŽANA
+STEFANOVIĆ STANIŠA
+STEFANOVIĆ STANKO
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STJEPAN
+STEFANOVIĆ STOJANA
+STEFANOVIĆ SUZANA
+STEFANOVIĆ SVETISLAV
+STEFANOVIĆ SVETOZAR
+STEFANOVIĆ SVETOZAR
+STEFANOVIĆ TATJANA
+STEFANOVIĆ-TILIĆ DIVNA
+STEFANOVIĆ TODOR
+STEFANOVIĆ TOMISLAV
+STEFANOVIĆ VASA
+STEFANOVIĆ VASA
+STEFANOVIĆ VASILIJE
+STEFANOVIĆ VERA
+STEFANOVIĆ VERA
+STEFANOVIĆ VERICA
+STEFANOVIĆ VESNA
+STEFANOVIĆ VESNA
+STEFANOVIĆ VITOMIR
+STEFANOVIĆ VLADICA
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLAJKO
+STEFANOVIĆ VOJISLAVA
+STEFANOVIĆ VOJISLAV
+STEFANOVIĆ VOJISLAV
+STEFANOVIĆ ZORAN
+STEFANOVIĆ ZORAN
+STEFANOVSKA ZORKA
+STEFANOVSKI LEVKO
+STEFANOVSKI METODIJE
+STEFANOVSKI MILORAD
+STEFANOVSKI STAMEN
+STEGIĆ DEJAN
+STEGIĆ IVAN
+STEGIĆ NIKOLA
+STEGNJAIĆ OLGA
+STEGNJAJIĆ VLADIMIR
+STEJIĆ ARANKA
+STEJIĆ JELENA
+STEJIĆ KOSTA
+STEJIĆ NEVENKA
+STEJIĆ RUŽA
+STEJIN ĐORĐE
+STEJIN BORISLAV
+STEJIN DUŠAN DIPL ING
+STEJIN JELENA
+STEJIN JOVANKA
+STEJIN LJUBICA
+STEJIN RUŽICA
+STEJIN SAŠA
+STEJIN SRĐAN
+STELA VLADIMIRA
+STELJA NOVAK
+STELJIĆ MILIVOJE
+STELJIĆ MILUN
+STELKIĆ ĐURICA
+STELKIĆ DRAGICA
+STELKIĆ MILIVOJ
+STELKIĆ RADICA
+STELKIĆ RELJA DIPL ING
+STELKIĆ SVETOZAR
+STELKIĆ ZLATOMIR
+STEPANČEV ANICA
+STEPANČEV STEVAN
+STEPANČEV VLADISLAV
+STEPANČEV ZORAN
+STEPANČEV ZORA
+STEPANČEV ZORICA
+STEPANČEVIĆ MILICA
+STEPANČEVIĆ MIODRAG
+STEPANČEVIĆ SOFIJA
+STEPANČEVIĆ SPASOJE
+STEPANIĆ MILISAV
+STEPANIĆ PREDRAG
+STEPANOV ĐORĐE
+STEPANOV ĐORĐE
+STEPANOV ĐORĐE
+STEPANOV ALEKSANDAR
+STEPANOV ALEKSANDRA
+STEPANOV ANĐELKA
+STEPANOV BRANISLAV
+STEPANOV BRANKO
+STEPANOV BRANKO
+STEPANOV DRAGIŠA
+STEPANOV DRAGICA
+STEPANOV DUŠAN
+STEPANOV DUŠAN
+STEPANOV EMIL
+STEPANOV JOLE
+STEPANOV KATICA
+STEPANOV LJILJANA
+STEPANOV LJUBOMIR DR
+STEPANOV LJUBOMIR
+STEPANOV MAKSA
+STEPANOV MARA
+STEPANOV MILANKA
+STEPANOV MILANKA
+STEPANOV MILAN
+STEPANOV MILAN
+STEPANOV MILEVA
+STEPANOV MILIVOJ
+STEPANOV MILIVOJ
+STEPANOV MILIVOJ
+STEPANOV MILOVAN
+STEPANOV NIKOLA
+STEPANOV PAJA
+STEPANOV PAJA
+STEPANOV PETAR DR
+STEPANOV PETAR
+STEPANOV PIROŠKA
+STEPANOV RADIVOJ
+STEPANOV RADOVAN
+STEPANOV SAVA
+STEPANOV SAVA
+STEPANOV SERGIJE
+STEPANOV SLOBODAN
+STEPANOV SVETISLAV
+STEPANOV VASILIJE
+STEPANOV VELIMIR
+STEPANOV VESNA
+STEPANOV VIDA
+STEPANOV VIDOSAVA
+STEPANOV VOJNA
+STEPANOV ZDRAVKO
+STEPANOVIĆ ĐURĐICA
+STEPANOVIĆ BRATISLAV
+STEPANOVIĆ DRAGIŠA
+STEPANOVIĆ DRAGICA
+STEPANOVIĆ MILORAD
+STEPANOVIĆ NEBOJŠA
+STEPANOVIĆ SLOBODAN
+STEPANOVIĆ SNEŽANA
+STEPANOVIĆ STEVAN
+STEPANOVIĆ SVETLANA
+STEPIĆ JOSIP
+STEPIĆ MARIJA
+STERIO ĐORĐE
+STERIO BRANKO DR
+STERPIN ZVONIMIR
+STEVČIĆ SAVATIJE
+STEVANČEV ANKICA
+STEVANČEV MILICA
+STEVANČEV MILORAD
+STEVANČEV OLGA
+STEVANČEVIĆ LJILJANA
+STEVANDIĆ ĐURO
+STEVANDIĆ MILICA
+STEVANDIĆ RADE
+STEVANIĆ BORIVOJE
+STEVANIĆ DRAGOSLAV
+STEVANIĆ IVAN
+STEVANIĆ MIODRAG
+STEVANIĆ SLOBODAN
+STEVANIĆ VUKOMAN
+STEVANOV ŽIVAN
+STEVANOV DRAGANA
+STEVANOV EMILKA
+STEVANOV GAVRA
+STEVANOV JELENA
+STEVANOV LJILJANA
+STEVANOV MADLEN
+STEVANOV MILORAD
+STEVANOV MILOVAN
+STEVANOV MILUTIN
+STEVANOV MLADEN
+STEVANOV MLADEN
+STEVANOV NATALIJA
+STEVANOV STANA
+STEVANOV SVETOZAR
+STEVANOV VESELIN
+STEVANOV VLADIMIR
+STEVANOV ZLATOJE
+STEVANOVIĆ ŽIVADIN
+STEVANOVIĆ ŽIVKA
+STEVANOVIĆ ŽIVORAD
+STEVANOVIĆ ADAM
+STEVANOVIĆ ALEKSANDAR
+STEVANOVIĆ BOŠKO
+STEVANOVIĆ BORA
+STEVANOVIĆ BRANISLAVA
+STEVANOVIĆ DANICA
+STEVANOVIĆ DESIMIR
+STEVANOVIĆ DRAGIŠA
+STEVANOVIĆ DRAGICA
+STEVANOVIĆ DRAGOSLAV
+STEVANOVIĆ DUŠAN DR
+STEVANOVIĆ GORAN
+STEVANOVIĆ GORAN
+STEVANOVIĆ JAROSLAV
+STEVANOVIĆ JOVAN
+STEVANOVIĆ LJUBIŠA
+STEVANOVIĆ MILADINKA
+STEVANOVIĆ MILADIN
+STEVANOVIĆ MILENKO
+STEVANOVIĆ MILE
+STEVANOVIĆ MILIVOJ
+STEVANOVIĆ MILKA
+STEVANOVIĆ MILOLJUB
+STEVANOVIĆ MIOMIR
+STEVANOVIĆ MIRA
+STEVANOVIĆ MLADENKA
+STEVANOVIĆ-NEĆAK SLOBODANKA DIPL ING
+STEVANOVIĆ NIKOSAVA
+STEVANOVIĆ RADOSLAV
+STEVANOVIĆ RAJKO
+STEVANOVIĆ RANKO DR LEKAR
+STEVANOVIĆ RATKO
+STEVANOVIĆ RUŽA
+STEVANOVIĆ SAVA
+STEVANOVIĆ SLOBODAN
+STEVANOVIĆ SNEŽANA
+STEVANOVIĆ STOJADIN
+STEVANOVIĆ SVIJETLANA
+STEVANOVIĆ TOMISLAV
+STEVANOVIĆ TOMISLAV
+STEVANOVIĆ VERA
+STEVANOVIĆ VLADA
+STEVANOVIĆ VLASTIMIR
+STEVANOVIĆ ZLATKO DR
+STEVANOVIĆ ZORAN
+STEVANOVIĆ ZORICA
+STEVANOVSKI GOŠE
+STEVANOVSKI SLOBODAN
+STEVIĆ DOBRIVOJE
+STEVIĆ DUŠAN
+STEVIĆ GORDANA
+STEVIĆ LJUBIŠA
+STEVIĆ NIKOLA
+STEVIĆ PETAR
+STEVIĆ SLOBODAN
+STEVIĆ SNEŽANA
+STEVIĆ SRBA
+STEVIĆ VELIMIR
+STEVIĆ VOJISLAV
+STEVIN BOGDAN
+STEVIN BORISLAV
+STEVIN NADA DIPL ING
+STEVIN RADOJLA
+STEVOVIĆ ANKA
+STEVOVIĆ BOŽIDAR
+STEVOVIĆ BRANISLAV
+STEVOVIĆ IVAN DIPL PRAVNIK
+STEVOVIĆ-LUKIĆ RADMILA
+STEVOVIĆ MILOSAVA
+STEVOVIĆ VOJIN
+STIJAČIĆ BRANKO
+STIJAČIĆ PAVLE
+STIJAČIĆ SVETOZAR
+STIJAKOVIĆ DRAGAN
+STIJEPOVIĆ ALEKSA
+STIJEPOVIĆ MILIJANA
+STIJOVIĆ ILIJA
+STIJOVIĆ JELISAVETA
+STIJOVIĆ MARA
+STIJOVIĆ MILAN
+STIKIĆ BILJANA
+STIKIĆ JOVAN
+STIKIĆ MOMIRKA
+STIKOVIĆ ROSA
+STILINOVIĆ KOVINKA
+STILINOVIĆ ZVONIMIR DIPL ING
+STIPANČIĆ STIPAN
+STIPANOVIĆ BJELICA
+STIPANOVIĆ GOJKO
+STIPETIĆ DRAGAN
+STIPIĆ ANDRIJA
+STIPIĆ ANTE
+STIPIĆ BUDE
+STIPIĆ GIZELA
+STIPIĆ JAŠA
+STIPIĆ NADA
+STIPIĆ OLIVERA
+STIPIĆ SONJA
+STIPIĆ VELJKO
+STISKALO TIHOMIR
+STJELJA DANICA
+STJEPČEVIĆ ANICA
+STJEPANOVIĆ BOŽO
+STJEPANOVIĆ BORIVOJE
+STJEPANOVIĆ CVEJA
+STJEPANOVIĆ JASNA
+STJEPANOVIĆ JELENA
+STJEPANOVIĆ JELISAVETA
+STJEPANOVIĆ JOVICA
+STJEPANOVIĆ STANKA
+STJEPANOVIĆ TOMISLAV
+STJEPIĆ JOSIP
+STJEPIĆ MIJO
+STOŠIĆ DRAGAN
+STOŠIĆ DRAGAN
+STOŠIĆ DRAGAN
+STOŠIĆ DUŠAN
+STOŠIĆ DUŠAN
+STOŠIĆ DUŠAN
+STOŠIĆ JELENA
+STOŠIĆ MILICA
+STOŠIĆ NEDELJKO
+STOŠIĆ RADIVOJ
+STOŠIĆ SLAVIŠA
+STOŠIĆ STOJADIN
+STOŠIĆ STOJAN
+STOŠIĆ TANJA
+STOŠIĆ TOMISLAV
+STOŠIĆ VLADIMIR
+STOŠIĆ VOJISLAV
+STOŠIĆ ZORAN
+STOŽINIĆ DRAGINJA
+STOESKI JEVTIM
+STOGOV ANATOLIJ DIPL ING
+STOILJKOVIĆ ŽIKA
+STOILJKOVIĆ DRAGOSLAV
+STOILJKOVIĆ JELICA
+STOILJKOVIĆ JOVAN
+STOILJKOVIĆ MILORAD
+STOILJKOVIĆ NENAD
+STOILJKOVIĆ STOJAN
+STOILKOVSKI BORIS
+STOISAVLJEVIĆ ĐUJA
+STOISAVLJEVIĆ MIĆO
+STOJČEV MARIJA
+STOJČEVIĆ ILIJA
+STOJČEVIĆ STANOJKO
+STOJČEVSKI BLAGOJA
+STOJČEVSKI TOMISLAV
+STOJČEVSKI TONE
+STOJČIĆ ĐORĐE
+STOJČIĆ ĐURO
+STOJČIĆ DESIMIR
+STOJČIĆ DUŠAN
+STOJČIĆ JELENA
+STOJČIĆ MILAN
+STOJČIĆ MILAN
+STOJČIĆ MILENKO
+STOJČIĆ MIROSLAV
+STOJČIĆ NIKOLA
+STOJČIĆ SREĆKO
+STOJČIĆ SRETKO
+STOJČINOVIĆ MARKO
+STOJČINOVIĆ SIMO
+STOJŠIĆ ŽIVAN
+STOJŠIĆ ĐORĐE
+STOJŠIĆ ĐORĐE
+STOJŠIĆ BOJKA
+STOJŠIĆ DANČIKA
+STOJŠIĆ DRAGI
+STOJŠIĆ DUŠANKA
+STOJŠIĆ JELENA
+STOJŠIĆ JOVAN
+STOJŠIĆ JOVAN
+STOJŠIĆ LAZAR
+STOJŠIĆ MARIJA
+STOJŠIĆ MARIJA
+STOJŠIĆ MARIJA
+STOJŠIĆ MILAN DIPL ING
+STOJŠIĆ MILAN
+STOJŠIĆ MILAN
+STOJŠIĆ MILIVOJ
+STOJŠIĆ MILKA
+STOJŠIĆ MILOŠ
+STOJŠIĆ MIRA
+STOJŠIĆ NADA
+STOJŠIĆ NADA
+STOJŠIĆ NEGOVAN
+STOJŠIĆ NENAD
+STOJŠIĆ NEVENKA
+STOJŠIĆ NEVENKA
+STOJŠIĆ NIKOLA
+STOJŠIĆ OLGA
+STOJŠIĆ PETAR
+STOJŠIĆ PROKOPIJE
+STOJŠIĆ PRVOSLAV
+STOJŠIĆ SAVA
+STOJŠIĆ SAVA
+STOJŠIĆ SAVA
+STOJŠIĆ SLAVICA
+STOJŠIĆ SMILJA
+STOJŠIĆ SOFIJA
+STOJŠIĆ SRBISLAV
+STOJŠIĆ STANOJE
+STOJŠIĆ STEVAN
+STOJŠIĆ TATJANA
+STOJŠIĆ VERA
+STOJŠIĆ VIDOSAVA
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VOJISLAV
+STOJŠIĆ VUJADIN DIPL ING
+STOJŠIĆ ZDRAVKO
+STOJŠIN ŽARKO
+STOJŠIN ĐORĐE
+STOJŠIN ĐURĐA
+STOJŠIN ĐURĐINKA
+STOJŠIN BOGOSLOV
+STOJŠIN DIMITRIJE
+STOJŠIN DOBRIVOJ
+STOJŠIN DRAGAN
+STOJŠIN DUŠAN
+STOJŠIN EMIL
+STOJŠIN ESTER
+STOJŠIN GAVRA
+STOJŠIN GROZDANA
+STOJŠIN JOVAN
+STOJŠIN JOVAN
+STOJŠIN LAZAR
+STOJŠIN MILANKA
+STOJŠIN MILAN
+STOJŠIN MILAN
+STOJŠIN MILICA
+STOJŠIN MILORAD
+STOJŠIN MILOVAN
+STOJŠIN NIKOLA
+STOJŠIN OLGA
+STOJŠIN RADA
+STOJŠIN RADOSLAV
+STOJŠIN SAVA
+STOJŠIN SAVA
+STOJŠIN SINIŠA
+STOJŠIN SVETOZAR
+STOJŠIN TODOR
+STOJŠIN VASA
+STOJŠIN VERA
+STOJŠIN ZLATA
+STOJA LJILJANA
+STOJA MARIJA
+STOJA MILANA
+STOJA SLAĐANA
+STOJA SLOBODAN DR LEKAR
+STOJA VOJISLAV
+STOJAČIĆ DIMITRIJE
+STOJAČIĆ MILAN
+STOJAČIĆ NENAD
+STOJAČIĆ VLADISLAV
+STOJADINOV RADIVOJ
+STOJADINOVIĆ ANICA
+STOJADINOVIĆ BORISLAVA
+STOJADINOVIĆ BORIVOJ
+STOJADINOVIĆ DIMITRIJE
+STOJADINOVIĆ DOBRILA
+STOJADINOVIĆ DRAGANA LEKAR
+STOJADINOVIĆ DRAGINJA
+STOJADINOVIĆ DRAGOSLAV
+STOJADINOVIĆ LAZAR
+STOJADINOVIĆ LJUBIŠA
+STOJADINOVIĆ MILAN
+STOJADINOVIĆ MILAN
+STOJADINOVIĆ MILEVA
+STOJADINOVIĆ MILICA
+STOJADINOVIĆ MILINKO
+STOJADINOVIĆ MILKA
+STOJADINOVIĆ MILOJE
+STOJADINOVIĆ PETAR
+STOJADINOVIĆ PETAR
+STOJADINOVIĆ PUNIŠA
+STOJADINOVIĆ SLAVKO
+STOJADINOVIĆ SLOBODAN
+STOJADINOVIĆ SLOBODAN
+STOJADINOVIĆ SOFIJA
+STOJADINOVIĆ SOFIJA
+STOJADINOVIĆ STEVAN
+STOJADINOVIĆ TATJANA
+STOJADINOVIĆ VLADETA
+STOJAK ZORICA
+STOJAKOV BOŽIDAR
+STOJAKOV MILORAD
+STOJAKOV SRBOSLAV
+STOJAKOV SRBOSLAV
+STOJAKOVIĆ ĐUKAN
+STOJAKOVIĆ ĐURO
+STOJAKOVIĆ BRANISLAVA
+STOJAKOVIĆ DIVNA
+STOJAKOVIĆ DRAGAN
+STOJAKOVIĆ JELKA
+STOJAKOVIĆ KOSTA
+STOJAKOVIĆ LAZAR
+STOJAKOVIĆ MARGITA
+STOJAKOVIĆ MIHAJLO
+STOJAKOVIĆ MILADINKA
+STOJAKOVIĆ MILA
+STOJAKOVIĆ MILE
+STOJAKOVIĆ MILISAV
+STOJAKOVIĆ MILOVAN
+STOJAKOVIĆ NIKOLA
+STOJAKOVIĆ RADMILA
+STOJAKOVIĆ SAVAN
+STOJAKOVIĆ SLAVKO
+STOJAKOVIĆ SMILJA
+STOJAKOVIĆ STANKO
+STOJAKOVIĆ STEVO
+STOJAKOVIĆ SVETOZAR
+STOJAKOVIĆ ZORAN
+STOJAKOVIĆ ZORA
+STOJANČEV GORDANA
+STOJANČEV IVAN
+STOJANČEV RADOMIR
+STOJANČEV SLAVICA
+STOJANČEV VASA
+STOJANČIĆ VLADA
+STOJANAC BRANKO
+STOJANAC MILE
+STOJANAC NIKOLA
+STOJANIĆ ANGELINA
+STOJANOSKI DUŠAN
+STOJANOSKI GAVRIL
+STOJANOV BRANKO
+STOJANOV BRANKO
+STOJANOV IVAN
+STOJANOV MILOVAN
+STOJANOV MIRJANA
+STOJANOV MLADEN DR
+STOJANOV NADA
+STOJANOV NADA
+STOJANOV OLGA
+STOJANOV RADIVOJE
+STOJANOV RADOVAN
+STOJANOV SAVA
+STOJANOV SAVA
+STOJANOV SENKA
+STOJANOV STANKO
+STOJANOV STEVAN
+STOJANOV VERA
+STOJANOV VLADIMIR
+STOJANOV VUKICA
+STOJANOV ZORAN
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVOJIN
+STOJANOVIĆ ŽIVORAD
+STOJANOVIĆ ĐORĐE
+STOJANOVIĆ ĐORĐE
+STOJANOVIĆ ĐURĐICA
+STOJANOVIĆ ĐURA
+STOJANOVIĆ ACA
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALJOŠA
+STOJANOVIĆ ANA
+STOJANOVIĆ-BALINT BOŽANA
+STOJANOVIĆ BLAGOJE
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŽIDAR
+STOJANOVIĆ BOŽIDAR
+STOJANOVIĆ BOBAN
+STOJANOVIĆ BOGOLJUB
+STOJANOVIĆ BORISLAVA
+STOJANOVIĆ BORISLAV
+STOJANOVIĆ BORIVOJE
+STOJANOVIĆ BORIVOJ
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANKA
+STOJANOVIĆ BRANKA
+STOJANOVIĆ BRANKO
+STOJANOVIĆ BRANKO
+STOJANOVIĆ BUDIMIR
+STOJANOVIĆ CVIJETA
+STOJANOVIĆ DANICA
+STOJANOVIĆ DANICA
+STOJANOVIĆ DANILO
+STOJANOVIĆ DANKA
+STOJANOVIĆ DARINKA DR
+STOJANOVIĆ DESIMIR
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRINKA
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGIŠA
+STOJANOVIĆ DRAGIŠA
+STOJANOVIĆ DRAGICA
+STOJANOVIĆ DRAGOLJUB
+STOJANOVIĆ DRAGOLJUB
+STOJANOVIĆ DRAGOMIR
+STOJANOVIĆ DRAGOSLAV
+STOJANOVIĆ DUŠAN
+STOJANOVIĆ DUŠICA
+STOJANOVIĆ GAVRILO
+STOJANOVIĆ GAVRO
+STOJANOVIĆ GORAN
+STOJANOVIĆ GRADIMIR
+STOJANOVIĆ IVKO
+STOJANOVIĆ JAKOV
+STOJANOVIĆ JASMINA
+STOJANOVIĆ-JEFTOVIĆ BOSILJKA
+STOJANOVIĆ JELENA
+STOJANOVIĆ JELENA
+STOJANOVIĆ JELICA
+STOJANOVIĆ JOVAN
+STOJANOVIĆ JOVAN
+STOJANOVIĆ JULKA
+STOJANOVIĆ KATICA
+STOJANOVIĆ KONSTANTIN
+STOJANOVIĆ KOSTA
+STOJANOVIĆ KRSTA
+STOJANOVIĆ LAZAR
+STOJANOVIĆ LAZAR
+STOJANOVIĆ LEONA
+STOJANOVIĆ LJUBIŠA
+STOJANOVIĆ LJUBICA
+STOJANOVIĆ LJUBINKO
+STOJANOVIĆ LJUBOMIR
+STOJANOVIĆ LJUBOMIR
+STOJANOVIĆ MARIJA
+STOJANOVIĆ MARKO
+STOJANOVIĆ MIŠA
+STOJANOVIĆ MILAK
+STOJANOVIĆ MILAN
+STOJANOVIĆ MILAN
+STOJANOVIĆ MILETA
+STOJANOVIĆ MILE
+STOJANOVIĆ MILICA
+STOJANOVIĆ MILICA
+STOJANOVIĆ MILIVOJE
+STOJANOVIĆ MILKA
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MIODRAG
+STOJANOVIĆ MIODRAG
+STOJANOVIĆ MIOMIR
+STOJANOVIĆ MIRA
+STOJANOVIĆ MIRJANA
+STOJANOVIĆ MIRJANA
+STOJANOVIĆ MIROLJUB
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIRO
+STOJANOVIĆ MOMČILO
+STOJANOVIĆ MOMIR
+STOJANOVIĆ NADA
+STOJANOVIĆ NADA
+STOJANOVIĆ NASTAS
+STOJANOVIĆ NEDELJKO
+STOJANOVIĆ NENAD
+STOJANOVIĆ NENAD
+STOJANOVIĆ NIKICA
+STOJANOVIĆ NIKOLA
+STOJANOVIĆ NIKOLA
+STOJANOVIĆ NOVICA
+STOJANOVIĆ NOVICA
+STOJANOVIĆ OBRAD
+STOJANOVIĆ OLGA
+STOJANOVIĆ OSTOJA
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PRVAN
+STOJANOVIĆ RADE
+STOJANOVIĆ RADE
+STOJANOVIĆ RADISAV
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILO
+STOJANOVIĆ RADOICA
+STOJANOVIĆ RADOMIR
+STOJANOVIĆ RADOMIR
+STOJANOVIĆ RADOVAN
+STOJANOVIĆ RUŽICA
+STOJANOVIĆ SAŠA
+STOJANOVIĆ SAVA
+STOJANOVIĆ-SIMIĆ VESNA
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVOJKA
+STOJANOVIĆ SLAVOLJUB
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SRĐAN
+STOJANOVIĆ SRBOLJUB
+STOJANOVIĆ SRETEN
+STOJANOVIĆ SRETEN
+STOJANOVIĆ STANISLAV DR LEKAR
+STOJANOVIĆ STANOJE
+STOJANOVIĆ STANOJE
+STOJANOVIĆ STEVAN DR
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STOJAN
+STOJANOVIĆ STOJAN
+STOJANOVIĆ STOLE
+STOJANOVIĆ SVETISLAV
+STOJANOVIĆ SVETLANA
+STOJANOVIĆ SVETOZAR
+STOJANOVIĆ TIHOMIR DR ING
+STOJANOVIĆ TIHOMIR
+STOJANOVIĆ TOMISLAV MR
+STOJANOVIĆ TOMISLAV
+STOJANOVIĆ VALERIJA
+STOJANOVIĆ VASILIJE
+STOJANOVIĆ VASO
+STOJANOVIĆ VELIMIR
+STOJANOVIĆ VELIMIR
+STOJANOVIĆ VELJKO
+STOJANOVIĆ VERA
+STOJANOVIĆ VERA
+STOJANOVIĆ VESNA
+STOJANOVIĆ VESNA
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLASTIMIR
+STOJANOVIĆ VOJISLAV
+STOJANOVIĆ VUKAŠIN
+STOJANOVIĆ ZDRAVKO
+STOJANOVIĆ ZORAN DR
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORKA
+STOJANOVSKI ŽIVKO
+STOJANOVSKI ANDRIJA
+STOJANOVSKI BILJANA
+STOJANOVSKI BRANIMIR
+STOJANOVSKI DRAGAN DIPL OEC
+STOJANOVSKI JORDAN
+STOJANOVSKI LJUBIŠA
+STOJANOVSKI LJUBICA
+STOJANOVSKI PAVLE
+STOJANOVSKI PAVLE
+STOJANOVSKI SANE
+STOJANOVSKI SLAVICA
+STOJANOVSKI TOMO
+STOJEV STOIČKO
+STOJIČIĆ DESANKA
+STOJIČIĆ GLIGORIJE
+STOJIČIĆ JASMINA
+STOJIČIĆ JASMINA
+STOJIČIĆ MILICA
+STOJIČIĆ ROSA
+STOJIČIĆ SLAVKO
+STOJIČIĆ TODORA
+STOJIŠIĆ ĐURICA DR
+STOJIĆ ĐURĐINKA
+STOJIĆ-APIĆ SLAVKA
+STOJIĆ BOGOLJUB
+STOJIĆ BOGOLJUB
+STOJIĆ BOGOLJUB
+STOJIĆ BRANKA
+STOJIĆ DOBRIVOJ
+STOJIĆ DRAGINJA
+STOJIĆ DRAGOLJUB
+STOJIĆ DUŠAN
+STOJIĆ GAVRA
+STOJIĆ GOJKO
+STOJIĆ GRADIMIR
+STOJIĆ IŠTVAN
+STOJIĆ JULIJANA
+STOJIĆ KATICA
+STOJIĆ LJUBINKA
+STOJIĆ MARA
+STOJIĆ MARINKO
+STOJIĆ MILAN
+STOJIĆ MILENA
+STOJIĆ MILE
+STOJIĆ MILICA
+STOJIĆ MIODRAG DR
+STOJIĆ MIOMIR
+STOJIĆ MIRKO
+STOJIĆ MLADEN DR LEKAR
+STOJIĆ NEDELJKO
+STOJIĆ NIKOLA
+STOJIĆ SINIŠA DR
+STOJIĆ SLAVKA
+STOJIĆ STANISLAV
+STOJIĆ SVETLANA
+STOJIĆ SVETOZAR
+STOJIĆ TODOR
+STOJIĆ VASA
+STOJIĆ VUČKO
+STOJIĆ VUKAŠIN
+STOJIĆ ZORAN
+STOJIĆEVIĆ SLOBODAN
+STOJIC JONEL
+STOJILJKOVIĆ BOŽIDAR
+STOJILJKOVIĆ BOŽIDAR
+STOJILJKOVIĆ BRANIMIR DIPL OEC
+STOJILJKOVIĆ DAMIR
+STOJILJKOVIĆ DARKA
+STOJILJKOVIĆ GORAN DR
+STOJILJKOVIĆ GORDANA
+STOJILJKOVIĆ JELICA
+STOJILJKOVIĆ LJUBIŠA
+STOJILJKOVIĆ TOMISLAV
+STOJILJKOVIĆ TOMISLAV
+STOJILJKOVIĆ VIKTOR
+STOJILKOVIĆ MILETIJE
+STOJILKOVIĆ MILE
+STOJILKOVIĆ STOJAN
+STOJILKOVIĆ VALERIJA
+STOJILOV RADOSLAV
+STOJILOVIĆ MILAN
+STOJILOVIĆ MILAN
+STOJIN ČEDOMIR
+STOJIN MILIVOJ DR PROF
+STOJIN MILIVOJ
+STOJINOV ŽIVKO
+STOJINOV BRANKO
+STOJINOV DUŠAN
+STOJINOV JOVAN
+STOJINOV KATARINA
+STOJINOV KATICA
+STOJINOV LJUBICA
+STOJINOV MILENKO
+STOJINOV ZORICA
+STOJINOVIĆ GORAN
+STOJINOVIĆ MARICA
+STOJISAVLJEVIĆ DUŠAN
+STOJISAVLJEVIĆ JOVANKA
+STOJISAVLJEVIĆ MILAN
+STOJISAVLJEVIĆ MILE
+STOJISAVLJEVIĆ SLOBODAN
+STOJISAVLJEVIĆ SLOBODAN
+STOJISAVLJEVIĆ VELJKO
+STOJKOV ŽARKO
+STOJKOV ŽIVORAD
+STOJKOV ALEKSANDAR
+STOJKOV BOGDAN
+STOJKOV BORIVOJ
+STOJKOV BRANISLAV
+STOJKOV DIMITRIJE
+STOJKOV DRAGINA
+STOJKOV IVAN
+STOJKOV JELICA
+STOJKOV JELKA
+STOJKOV JOVAN
+STOJKOV JULKA
+STOJKOV KATICA
+STOJKOV LJUBICA
+STOJKOV MILAN
+STOJKOV MILAN
+STOJKOV MILAN
+STOJKOV MILENA
+STOJKOV MILEVKA
+STOJKOV MILE
+STOJKOV MIODRAG
+STOJKOV MIOMIR
+STOJKOV MIROSLAV
+STOJKOV MLADEN
+STOJKOV NEGOVAN
+STOJKOV RADIVOJ
+STOJKOV RADIVOJ
+STOJKOV SLOBODAN
+STOJKOV STEVAN
+STOJKOV STOJAN
+STOJKOV STOJAN
+STOJKOV TODOR
+STOJKOV VERICA
+STOJKOV VUKOSAVA
+STOJKOV ZDRAVKO
+STOJKOVIĆ-ŠALBOT BOJANA
+STOJKOVIĆ ŽIVKA
+STOJKOVIĆ ŽIVOTA
+STOJKOVIĆ ĐORĐE
+STOJKOVIĆ ĐORĐE
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ANĐELKA
+STOJKOVIĆ ANANIJE
+STOJKOVIĆ ANTONIJE
+STOJKOVIĆ BLAGOJE
+STOJKOVIĆ BOŽIDAR
+STOJKOVIĆ BOŽIDAR
+STOJKOVIĆ BORISLAV
+STOJKOVIĆ BORKO
+STOJKOVIĆ BRANISLAV
+STOJKOVIĆ DRAGAN
+STOJKOVIĆ DRAGAN
+STOJKOVIĆ DRAGINJA
+STOJKOVIĆ DRAGOLJUB
+STOJKOVIĆ DRAGOLJUB
+STOJKOVIĆ DUŠANKA
+STOJKOVIĆ DUŠANKA
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ GORDANA
+STOJKOVIĆ GORDANA
+STOJKOVIĆ GRADIMIR
+STOJKOVIĆ ILIJA
+STOJKOVIĆ IVAN
+STOJKOVIĆ JELENA
+STOJKOVIĆ JELENA
+STOJKOVIĆ JELENA
+STOJKOVIĆ-JOVANOVIĆ SLAVICA
+STOJKOVIĆ JOVAN
+STOJKOVIĆ JOVAN
+STOJKOVIĆ KATICA
+STOJKOVIĆ KUZMAN
+STOJKOVIĆ LENKA
+STOJKOVIĆ MARIJA
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILENKO
+STOJKOVIĆ MILENKO
+STOJKOVIĆ MILENTIJE
+STOJKOVIĆ MILOŠ
+STOJKOVIĆ MILOVAN
+STOJKOVIĆ MILTEN
+STOJKOVIĆ MILUTIN
+STOJKOVIĆ MIODRAG
+STOJKOVIĆ MIODRAG
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRKO
+STOJKOVIĆ MIROSLAV
+STOJKOVIĆ MLADEN
+STOJKOVIĆ NADA
+STOJKOVIĆ PAVLE
+STOJKOVIĆ PAVLE
+STOJKOVIĆ PETAR
+STOJKOVIĆ PETAR
+STOJKOVIĆ PETAR
+STOJKOVIĆ PREDRAG DR
+STOJKOVIĆ RADENKO
+STOJKOVIĆ RADISAV DIPL ING
+STOJKOVIĆ RADIVOJE
+STOJKOVIĆ RADMILA
+STOJKOVIĆ RADMILA
+STOJKOVIĆ RADOMIR
+STOJKOVIĆ RADOSLAVKA
+STOJKOVIĆ RADOSLAV
+STOJKOVIĆ RADOVAN DIPL ING
+STOJKOVIĆ SANJA
+STOJKOVIĆ SLAVKA
+STOJKOVIĆ SLAVOLJUB
+STOJKOVIĆ SMILJKA
+STOJKOVIĆ STOJADIN
+STOJKOVIĆ TEODOR
+STOJKOVIĆ VELIMIR
+STOJKOVIĆ VELJKO
+STOJKOVIĆ VEROSLAV
+STOJKOVIĆ VLADIMIR
+STOJKOVIĆ VLADIMIR
+STOJKOVIĆ ZAGORKA
+STOJKOVIĆ ZLATIBOR
+STOJKOVIĆ ZORAN
+STOJKOVSKI DRAGAN
+STOJKOVSKI DRAGAN
+STOJLOVIĆ ĐULA
+STOJMENOVIĆ ŽIVKO
+STOJMENOVIĆ IVAN
+STOJMENOVIĆ JOVAN
+STOJMENOVIĆ MARIJA
+STOJMENOVIĆ VLADA
+STOJMENOVIĆ VOJISLAV
+STOJNIĆ BOŠKO
+STOJNIĆ DRAGAN
+STOJNIĆ DRAGICA
+STOJNIĆ DUŠAN
+STOJNIĆ MILICA
+STOJNIĆ MIRKO
+STOJNIĆ PAVLE
+STOJNIĆ RADOMIR
+STOJNIĆ SLOBODAN
+STOJNOV DAMJAN
+STOJOVIĆ RADOMIR
+STOJOVIĆ TOMAŠ
+STOJSAVLJEVIĆ NIKOLA
+STOJSAVLJEVIĆ PETAR
+STOJSAVLJEVIĆ STEVAN
+STOJSAVLJEVIĆ TIHOMIR
+STOKANOVIĆ ĐORĐE
+STOKANOVIĆ MILORAD
+STOKIĆ ĐORĐE
+STOKIĆ DRAGOLJUB
+STOKIĆ DUŠAN
+STOKIĆ JOVICA
+STOKIĆ MILAN
+STOKIĆ TODOR
+STOKIN ALESANDAR
+STOKIN BRANKO
+STOKIN MILIVOJ
+STOKIN SLOBODAN
+STOKIN STOJAN
+STOKUĆA DANE
+STOKUĆA MIHAJLO
+STOKUĆA MILAN
+STOKUĆA MILAN
+STOKUĆA MILAN
+STOKUĆA MIRJANA
+STOKUĆA NIKOLA
+STOKUĆA PETAR
+STOLESKI MITIJA
+STOLIĆ ĐURO
+STOLIĆ BISERKA
+STOLIĆ DUŠAN
+STOLIĆ DUŠAN
+STOLIĆ DUŠAN
+STOLIĆ KATICA
+STOLIĆ LJUBICA
+STOLIĆ MIRJANA
+STOLIĆ MIROSLAV
+STOLIĆ MIROSLAV
+STOLIĆ NENAD
+STOLIĆ PETAR DR
+STOLIĆ SRETA
+STOLIĆ STEVAN
+STOPINŠEK STANISLAV
+STRAŽMEŠTER BOŽIDAR
+STRAŽMEŠTER DUŠAN
+STRAŽMEŠTEROV DIMITRIJE
+STRAŽMEŠTEROV MILICA
+STRAŽMEŠTEROV MIROSLAV DIPL ING
+STRAŽMEŠTEROV SAVA
+STRAŽMEŠTEROV SOFIJA
+STRAŽMEŠTEROV STEVAN
+STRACENSKI MIROSLAV
+STRACENSKI STEVAN
+STRAGA STJEPAN
+STRAHINIĆ KRSTOMIR
+STRAJIN BRANISLAVA
+STRAJIN JELENA
+STRAJIN NADA
+STRAJIN RADOVAN
+STRAJIN STOJAN
+STRAJIN VELIZAR
+STRAJINIĆ BOŽIDAR
+STRAJINIĆ IRENA
+STRAJINIĆ JOVAN
+STRAJINIĆ LAZAR
+STRAJINIĆ MILUTIN
+STRAJNIĆ BRANKO
+STRAJNIĆ DUŠAN
+STRAJNIĆ GRUJA
+STRAJNIĆ MARIJA
+STRAJNIĆ MILANKO
+STRAJNIĆ MILAN
+STRAJNIĆ MLADEN
+STRAJNIĆ PAL
+STRAJNIĆ TOŠA
+STRANIĆ JOVICA
+STRANJAKOVIĆ ŽIVOJIN
+STRANJANAC MILORAD
+STRANJANAC MIROSLAV
+STRBAČKI FRIDOLINA
+STRBAČKI STEVAN
+STRBAD STEVAN
+STRBAT TOMISLAV
+STREHOVSKI ZUZANA
+STRELE RAŠA
+STREZOSKI JOVAN
+STREZOSKI MILESA
+STREZOSKI NIKODINKA
+STREZOSKI VLADIMIR
+STRGAR PETAR
+STRIČEVIĆ DARA
+STRIČEVIĆ DUŠAN
+STRIČEVIĆ JOSIP
+STRIČEVIĆ JULKA
+STRIČEVIĆ KSENIJA
+STRIČEVIĆ LJUBOMIR
+STRIČEVIĆ MLADEN
+STRIČEVIĆ RADIVOJ
+STRIČEVIĆ SAVKA
+STRIČEVIĆ VELIMIR
+STRIČEVIĆ VLADISLAVA
+STRIČKO VLADIMIR
+STRIBER EMIL
+STRIBER FRANJA
+STRIBER FRANJA
+STRIBER MIHAJLO
+STRIBER STEVAN
+STRIBER STEVAN
+STRICKI IVAN
+STRIKA ĐORĐE
+STRIKA BRANKO
+STRIKOVIĆ ĆAMIL
+STRIKOVIĆ BELI
+STRIKOVIĆ JANOŠ
+STRIKOVIĆ MILOSAV
+STRIKOVIĆ RADOSLAV
+STRIKOVIĆ VERA
+STRINEKA KATICA
+STRIZOVIĆ LJILJANA
+STRIZOVIĆ MAKSIM
+STRUGAR ŽARKO
+STRUGAR ŽIVORAD
+STRUGAR GORAN
+STRUGAR JOSIP
+STRUGAR MILUTIN
+STRUGAR PAVLE
+STRUGAR RADMILA
+STRUGAR SONJA
+STRUGAR VOJISLAV
+STRUGAR ZARIJA
+STRUHAR ANA
+STRUHAR JARMILA
+STRUHAR JOSIP
+STRUHAR MAGDA
+STRUHARIK JOSIP
+STRUHARIK JOSIP
+STRUHARIK-JUR RASTISLAV
+STRUHARIK JURAJ DR
+STRUHARIK MARJENA
+STRUHARIK MATO
+STRUHARIK PAVLE
+STRUKAN DOMAGOJ DR
+STRUNJAŠ GORDANA
+STUBLINAC MILOŠ
+STUDEN ŽIVORAD
+STULAR DUŠAN
+STUPAR ČEDA
+STUPAR ŽELJKO
+STUPAR ŽIVKO
+STUPAR ĐORĐE
+STUPAR BOGOLJUB
+STUPAR BORO
+STUPAR BOSILJKA
+STUPAR BRANKO
+STUPAR BRANKO
+STUPAR BRANKO
+STUPAR CVETA
+STUPAR DESANKA
+STUPAR DRAGAN
+STUPAR DRAGO
+STUPAR DUŠANKA
+STUPAR DUŠAN
+STUPAR DUŠAN
+STUPAR DUŠAN
+STUPAR ILIJA
+STUPAR JANJA
+STUPAR JANKO
+STUPAR JOVO
+STUPAR LJUBINKA
+STUPAR MARKO
+STUPAR MARKO
+STUPAR MILJA
+STUPAR MILKA
+STUPAR MILORAD
+STUPAR MILORAD
+STUPAR MIRJANA
+STUPAR MIRKO
+STUPAR NIKOLA
+STUPAR PERO
+STUPAR PETAR
+STUPAR PETAR
+STUPAR RADA
+STUPAR RADE
+STUPAR RAJKO
+STUPAR RAJKO
+STUPAR RAJKO
+STUPAR SLAĐANA
+STUPAR VLADIMIR
+STUPAR ZDRAVKO
+STUPAR ZORAN
+STUPAVSKI ANDREJ
+STUPAVSKI JANKO
+STUPIĆ SLAVENKO
+STUPIN IVAN
+STUPIN ZVONIMIR
+STURAR ZDRAVKO
+STVORIĆ PAVLE
+SUČEVIĆ DANE DIPL PRAVNIK
+SUČEVIĆ DRAGAN
+SUČEVIĆ DUŠAN
+SUČEVIĆ MARIJA
+SUČEVIĆ MARTA
+SUČEVIĆ MIROSLAV
+SUČEVIĆ NIKOLA
+SUČEVIĆ NIKOLA
+SUČEVIĆ RUŽICA
+SUŠA DANILO
+SUŠA MARKO
+SUŠA MILIJANA
+SUŠAC VINKO
+SUŠIĆ GORDANA
+SUŠIĆ HILDA
+SUŠIĆ RADA
+SUŠIĆ VUJANA
+SUĐI JOVAN
+SUĐI MARIJA
+SUĐI STANKO
+SUBAŠIĆ BORISLAV
+SUBAŠIĆ JULKA
+SUBAŠIĆ LAZAR
+SUBAŠIĆ MARKO
+SUBAŠIĆ MILAN
+SUBAŠIĆ NIKOLA
+SUBAŠIĆ PERO
+SUBAŠIĆ PETAR MR
+SUBAŠIĆ RAJKO
+SUBAŠIĆ SIMA
+SUBAŠIĆ STOJAN
+SUBAJKOV RADOJKA
+SUBAKOV KOVILJKA
+SUBAKOV SMILJKA
+SUBAKOV SOFIJA
+SUBANOVIĆ MILAN
+SUBIĆ ŽARKO
+SUBIĆ ĐORĐE
+SUBIĆ ALEKSANDAR
+SUBIĆ ANĐELKA
+SUBIĆ BOŽENA
+SUBIĆ BOŽIDAR
+SUBIĆ BRANISLAV
+SUBIĆ DAMIR
+SUBIĆ DARA
+SUBIĆ DIMITRIJE
+SUBIĆ DUŠAN
+SUBIĆ GORDANA
+SUBIĆ JOVAN
+SUBIĆ KOSTA
+SUBIĆ LAZAR
+SUBIĆ LAZAR
+SUBIĆ LAZAR
+SUBIĆ LJUBICA
+SUBIĆ LJUBOMIR
+SUBIĆ LJUBOMIR
+SUBIĆ LJUBOMIR
+SUBIĆ MARIJA
+SUBIĆ MARKO
+SUBIĆ MARKO
+SUBIĆ MILAN
+SUBIĆ MIROSLAVA
+SUBIĆ MLADEN
+SUBIĆ NADA
+SUBIĆ NEDELJKA
+SUBIĆ NEDELJKO
+SUBIĆ NOVAK
+SUBIĆ OLGA
+SUBIĆ PAJA
+SUBIĆ RADIVOJ
+SUBIĆ RADOSLAV
+SUBIĆ SMILJA
+SUBIĆ SNEŽANA
+SUBIĆ STEVAN
+SUBIĆ ZORAN
+SUBOTIČKI BRANISLAV
+SUBOTIČKI GORICA
+SUBOTIČKI KATICA
+SUBOTIČKI LUKA
+SUBOTIČKI MIRJANA
+SUBOTIČKI MIRKO
+SUBOTIČKI NADA
+SUBOTIČKI NESTOR DIPL ING
+SUBOTIČKI RADOVAN
+SUBOTIČKI SAVA
+SUBOTIČKI SLOBODAN
+SUBOTIČKI SOFIJA
+SUBOTIČKI SVETISLAV
+SUBOTIČKI VASA
+SUBOTIČKI VERA
+SUBOTIČKI VLADIMIR
+SUBOTIČKI ZORAN
+SUBOTIĆ ŽARKO
+SUBOTIĆ ĐORĐE
+SUBOTIĆ ĐURO
+SUBOTIĆ ALEKSANDAR
+SUBOTIĆ BRANISLAV DR
+SUBOTIĆ DRAGUTIN
+SUBOTIĆ DUŠAN
+SUBOTIĆ DUŠAN
+SUBOTIĆ LJILJANA
+SUBOTIĆ LJUBICA
+SUBOTIĆ MACA
+SUBOTIĆ MARKO
+SUBOTIĆ MILIVOJ
+SUBOTIĆ MILOŠ
+SUBOTIĆ MILORAD
+SUBOTIĆ MIODRAG DIPL ING
+SUBOTIĆ NENAD
+SUBOTIĆ RADIVOJ
+SUBOTIĆ RADOŠ
+SUBOTIĆ RAJKO
+SUBOTIĆ RAJKO
+SUBOTIĆ RUŽA
+SUBOTIĆ RUŽA
+SUBOTIĆ SAVA
+SUBOTIĆ SLOBODAN
+SUBOTIĆ STANA
+SUBOTIĆ SVETOZAR
+SUBOTIĆ SVETOZAR
+SUBOTIĆ TOMISLAV
+SUBOTIĆ VERA
+SUBOTIĆ VLADANA
+SUBOTIN ŽIVKO
+SUBOTIN ŽIVKO
+SUBOTIN ĐORĐE
+SUBOTIN ĐORĐE
+SUBOTIN ĐURA
+SUBOTIN BOGDAN
+SUBOTIN BOGDAN
+SUBOTIN DANICA
+SUBOTIN DIMITRIJE
+SUBOTIN DRAGAN
+SUBOTIN DRAGINJA
+SUBOTIN DUŠANKA
+SUBOTIN IRINA
+SUBOTIN IVAN
+SUBOTIN JELENA
+SUBOTIN JELICA
+SUBOTIN LJILJANA
+SUBOTIN LJUBINKA
+SUBOTIN MARKO
+SUBOTIN MARKO
+SUBOTIN MARKO
+SUBOTIN MILAN
+SUBOTIN MILAN
+SUBOTIN MILAN
+SUBOTIN MILORAD
+SUBOTIN NEVENKA
+SUBOTIN PAVLE
+SUBOTIN PETAR
+SUBOTIN PREDRAG
+SUBOTIN RADOSLAV
+SUBOTIN RADOVAN
+SUBOTIN SAŠA
+SUBOTIN SAVA
+SUBOTIN SAVA
+SUBOTIN SAVA
+SUBOTIN SLOBODAN
+SUBOTIN SMILJA
+SUBOTIN STANKA
+SUBOTIN STEVAN
+SUBOTIN STEVAN
+SUBOTIN SVETOZAR
+SUBOTIN SVETOZAR
+SUBOTIN SVETOZAR
+SUBOTIN ZORA
+SUBU ĐORĐE
+SUDŽUKOVIĆ NIKOLA
+SUDŽUM BOŠKO
+SUDŽUM BOGDAN
+SUDŽUM ILIJA
+SUDAK VLADIMIR
+SUDAR DUŠAN
+SUDAR DUŠAN
+SUDAR GAJA
+SUDAR VOJIN
+SUDAREVIĆ BOŠKO
+SUDAROV BRATISLAV
+SUDARSKI DUŠAN
+SUDIMAC DRAGO
+SUDIMAC MILAN
+SUHANEK ADAM
+SUHANSKI STEVAN
+SUHOVSKI JANO
+SUIĆ BRANKO
+SUIĆ NENAD
+SUJER MIHAJLO
+SUJIĆ JELENA
+SUJIĆ MILAN
+SUJIĆ SOFIJA
+SUJIĆ VOJIN
+SUJIĆ ZDENKA
+SUKAČ MIHAJLO
+SUKNJAJA DANILO
+SUKNOVIĆ MIRKO
+SUKNOVIĆ RADIVOJE
+SUKNOVIĆ SLAVKO
+SUKOLA ANTAL
+SUKOLA SUZANA
+SUKUP MARGITA
+SULEJMANOV NAFIJA
+SULIĆ MARICA
+SULIĆ TOMISLAV
+SULJA RAMADAN
+SULJAGIĆ REFIK
+SULOCKI JOŠKA
+SULOMAR AGNEZA
+SULOMAR ERŽEBET
+SULOMAR ILONA
+SULOMAR JANOŠ
+SULOMAR MAGDA
+SUMAN MILE
+SUMAROV JELISAVETA
+SUMINA DANICA
+SUMINJA MIŠA
+SUNAJKO ĐURO
+SUNAJKO DUŠAN
+SUNDAĆ ĐURA
+SUNDAĆ TODOR
+SUNIĆ MIRJANA
+SUNKA LJUBICA
+SUNTOK ANICA
+SUNZER VLADIMIR
+SUPIĆ BORIŠA
+SUPIĆ DARINKA
+SUPIĆ MILAN
+SUPIĆ OLGA
+SURĆA JOSIP
+SURĆA TRAJAN
+SURA MARGITA
+SURDUČAN DIMITRIJE
+SURDUČKI ŽIVKO
+SURDUČKI DRAGAN
+SURDUČKI ILIJA
+SURDUČKI ILIJA
+SURDUČKI ISIDOR
+SURDUČKI MARA
+SURDUČKI MILAN
+SURDUČKI MILOŠ
+SURDUČKI MILOŠ
+SURDUČKI MIRJANA
+SURDUČKI NEBOJŠA
+SURDUČKI PANTELIJA
+SURDUČKI PERSA
+SURDUČKI SINIŠA
+SURDUČKI STANKA
+SURDUČKI STEVAN
+SURLA BOŽO
+SURLA DUŠAN
+SURLA LUKA
+SURLA PETAR
+SURLA PETAR
+SURLA SAVA
+SURLA ZORAN
+SURLIĆ MILENKO
+SUROVI ANTON
+SUROVI JOLANKA
+SUROVI MIHAL
+SUROVI MIROSLAV
+SUROVI STEVAN
+SUROVI VLADIMIR
+SUSEDSKI OSKAR
+SUTARIĆ VERA
+SUTRIN BORIS
+SUTUROVIĆ JAGA
+SUTUROVIĆ MARIJA
+SUTUROVIĆ NESTO
+SUTUROVIĆ ZVONIMIR
+SUVAČAR ILINKA
+SUVAČAR TODOR
+SUVAČAR VERA
+SUVAČAREV BORISLAVA
+SUVAČAREV JOVAN
+SUVAČAREV MARIJA
+SUVAČAREV MILENKO
+SUVAČAREV MOMIR
+SUVAČAREV OBRAD
+SUVAČAREV PAJA
+SUVAČAREV RADENKO
+SUVAJČEVIĆ SVETISLAV
+SUVAJAC ŽELJKO
+SUVAJAC VASILIJE
+SUVAJDŽIĆ ŽIVKO
+SUVAJDŽIĆ ĐORĐE
+SUVAJDŽIĆ ĐORĐE
+SUVAJDŽIĆ DIMITRIJE
+SUVAJDŽIĆ GOJKO
+SUVAJDŽIĆ ILIJA
+SUVAJDŽIĆ ISA
+SUVAJDŽIĆ JOVAN
+SUVAJDŽIĆ LJILJANA
+SUVAJDŽIĆ MARIJA
+SUVAJDŽIĆ MARINKO
+SUVAJDŽIĆ MILKA
+SUVAJDŽIĆ NENAD
+SUVAJDŽIĆ NENAD
+SUVAJDŽIĆ OBRAD
+SUVAJDŽIĆ OLGICA
+SUVAJDŽIĆ PETAR
+SUVAJDŽIĆ RADMILA
+SUVAJDŽIĆ VASA
+SUVAJDŽIĆ VASA
+SUVAJDŽIN JOVAN
+SUVAJDŽIN JOVAN
+SUVAJDŽIN MLADEN
+SUVAJDŽIN NIKOLA
+SUZIĆ MARA
+SUZIĆ MIRKO
+SUZIĆ NIKOLA
+SUZIĆ SOFIJA
+SVALINA KATA
+SVEĆNJAK BRANKO
+SVETIĆ IVAN DR
+SVETIĆ IVAN
+SVETIĆ LJERKA
+SVETLIK ADAM
+SVILAKOS MARIJA
+SVILAR ANĐELKA
+SVILAR BRANISLAV
+SVILAR GOJKO
+SVILAR LJUBOMIR
+SVILAR MIHAJLO
+SVILAR MIHAJLO
+SVILAR NIKOLA
+SVILAR PETAR
+SVILAR RADOMIR
+SVILAR RATKO
+SVILAR SLAVICA
+SVILAR SOFIJA
+SVILAR VERICA
+SVILAR VINKA
+SVILAREVIĆ STEVO
+SVILARKOVIĆ STANIMIR DIPL ING
+SVILAROV MILAN
+SVILOKOS BORISLAV
+SVILOKOS GAVRA
+SVILOKOS KATICA
+SVILOKOS MILAN
+SVILOKOS STEVAN
+SVINJAREVIĆ SLAVKO
+SVIRČEV ŽIVKO
+SVIRČEV JOVAN
+SVIRČEV MILIVOJ
+SVIRČEV MILOŠ
+SVIRČEV RADA
+SVIRČEVIĆ ALEKSANDAR DR DOCENT
+SVIRČEVIĆ ANA
+SVIRČEVIĆ BORISLAV
+SVIRČEVIĆ DRAGAN
+SVIRČEVIĆ DRAGA
+SVIRČEVIĆ DRENKA
+SVIRČEVIĆ JOVAN
+SVIRČEVIĆ JOVAN
+SVIRČEVIĆ LJUBOMIR
+SVIRČEVIĆ MILIVOJ
+SVIRČEVIĆ MILORAD
+SVIRČEVIĆ MIRJANA
+SVIRČEVIĆ PETAR
+SVIRČEVIĆ RADOVAN
+SVIRČEVIĆ SLAVKO
+SVIRČEVIĆ STEVAN
+SVIRČEVIĆ TEODORA
+SVIRČEVIĆ-TRAJKOVIĆ LJUBICA
+SVIRČEVIĆ VASA
+SVIRČEVIĆ VUKAN
+SVIRAC RUŽICA
+SVITIĆ BOŽO
+SVITLICA DRAGAN
+SVITLICA DUŠAN
+SVITLICA GOJKO DIPL OEC
+SVITLICA JELICA
+SVITLICA MILAN
+SVITLICA RUŽICA
+SVITLICA SIMO
+SVITLICA STANKO
+SVITLICA TANASIJE DIPL OEC
+SVITLICA VERA
+SVOBODA STEVAN
+SVORCAN BRANISLAV
+SVORCAN LJUBOMIR
+SVORCAN MILOŠ
+SVORCAN MILORAD
+SVORCAN MILORAD
+SVORCAN RADISLAV
+SVORCAN RADOMIR
+SVORCAN STEVAN
+SVORCAN STOJAN
+SVORCAN ZORICA
+SVRDLAN MLAĐAN
+SVRKOTA ŽIVKO
+SVRKOTA VUKOMAN
+SVRZIĆ GORDANA
+TAČI ISMAILJ
+TAČI TEOFIL
+TAŠ KAROLJ
+TAŠEVSKI MILKA
+TAŠEVSKI SOFIJA
+TAŠI LJUBICA
+TAŠI PETAR
+TAŠI ROZALIJA
+TAŠI STEVAN
+TAŠI ZOLTAN
+TAŠIĆ MILIVOJ
+TAŠIĆ VERA
+TAŠNADI MIHALJ
+TABŠ NADA
+TABŠ NOHADEDIN
+TABAČKI VLADIMIR
+TABAČKI ZORICA
+TABAK DRAGAN
+TABAK IVAN
+TABAK VASA
+TABAK VOJISLAV
+TABAKOV DRAGOMIR
+TABAKOV MILENKO
+TABAKOV MLADEN
+TABAKOVIĆ ĐORĐE DIPL ING
+TABAKOVIĆ DUŠAN
+TABAKOVIĆ ISMET
+TABAKOVIĆ MIRKO
+TABORI ĐORĐE DR LEKAR
+TACOVIĆ VERA
+TADIĆ ŽIVAN
+TADIĆ ĐORĐE
+TADIĆ ĐORĐE
+TADIĆ ALEKSANDAR
+TADIĆ ANA
+TADIĆ ARSENIJE
+TADIĆ BOSILJKA
+TADIĆ DANILO
+TADIĆ DRAGAN
+TADIĆ DRAGA
+TADIĆ DUŠAN
+TADIĆ DUŠAN
+TADIĆ DUŠAN
+TADIĆ EDITA
+TADIĆ GORAN
+TADIĆ ILIJA
+TADIĆ ILIJA
+TADIĆ IVAN
+TADIĆ JOVICA
+TADIĆ KRASIMIR
+TADIĆ LAZAR
+TADIĆ LAZAR
+TADIĆ MARIJA
+TADIĆ MARINKO
+TADIĆ MARINKO
+TADIĆ MIJO
+TADIĆ MILOŠ DIPL ING
+TADIĆ MILOŠ
+TADIĆ MILOJE
+TADIĆ MILOSAV
+TADIĆ MIRKO
+TADIĆ MIRKO
+TADIĆ MIRKO
+TADIĆ NADA
+TADIĆ NEVENKA
+TADIĆ OBREN
+TADIĆ PETAR
+TADIĆ RADOJE
+TADIĆ RATKO
+TADIĆ SAŠA
+TADIĆ SAVA
+TADIĆ SLOBODAN
+TADIĆ SOFIJA
+TADIĆ SPASOJE
+TADIĆ STOJAN
+TADIĆ TANKOSAVA
+TADIĆ UROŠ
+TADIĆ VESELIN
+TADIĆ ZORAN
+TADIĆ ZORA
+TADIĆ ZORKA
+TADIJANOVIĆ SILVESTER
+TADIJIN GLIŠA
+TADIJIN MILICA
+TADIJIN MILOŠ
+TADIJIN MILORAD
+TADIN DUŠANKA
+TADIN DUŠAN
+TADIN IVANKA
+TADIN MILOVAN
+TADIN ZLATOJE
+TAHIROVIĆ EVICA
+TAHIROVIĆ MARIJA
+TAHIROVIĆ MILADINKA
+TAIROVIĆ ALEKSANDAR
+TAJHMAN BELA
+TAJHMAN DESANKA
+TAJHMAN JOSIP
+TAJKOV ANĐELKA
+TAJKOV JOVAN
+TAJKOV MIRJANA
+TAJKOV RADOJKA
+TAJKOVIĆ MILICA
+TAJTI VERONIKA
+TAKAČ ŠANDOR
+TAKAČ ĐERĐI
+TAKAČ ĐORĐE
+TAKAČ ĐULA
+TAKAČ ĐURA
+TAKAČ ĐURA
+TAKAČ ANĐELKA
+TAKAČ ANDRIJA
+TAKAČ ANTAL
+TAKAČ ANTAL
+TAKAČ ANTUN
+TAKAČ ANTUN
+TAKAČ ARPAD
+TAKAČ ERNE
+TAKAČ EVGEN
+TAKAČ FERENC
+TAKAČ FRANJA
+TAKAČ IŠTVAN
+TAKAČ IŠTVAN
+TAKAČ JAKIM
+TAKAČ JANOŠ
+TAKAČ JANOŠ
+TAKAČ JANOŠ
+TAKAČ JOŽEF DIPL ING
+TAKAČ JOŽEF
+TAKAČ JOŽEF
+TAKAČ JOSIP
+TAKAČ KAROLJ
+TAKAČ KATICA
+TAKAČ KATICA
+TAKAČ LADISLAV
+TAKAČ LAJOŠ
+TAKAČ LASLO
+TAKAČ MAGDA
+TAKAČ MATA
+TAKAČ MIHAJLO
+TAKAČ MILAN
+TAKAČ MIRKO
+TAKAČ ROŽA
+TAKAČ SENA
+TAKAČ SOFIJA
+TAKAČ SOFIJA
+TAKAČ STEVAN
+TAKAČ TIBOR
+TAKAČ TIBOR
+TAKAČ VINKO
+TAKAČ VLADIMIR
+TAKAČ VLADIMIR
+TAKAČ ZOLTAN
+TAKAČI ARPAD DIPL OEC
+TAKAČI ARPAD DR
+TAKAČI GABOR
+TAKO ZVONIMIR
+TAKOVAC RADISAV
+TAKOVSKI BLAGOJE
+TAKOVSKI JOVANKA
+TALESKI LJUBICA
+TALESKI RISTA
+TALIĆ DRAGAN
+TALIĆ MITAR
+TALIJAN ROŽA
+TALO ŠANDOR
+TALO ŽIVKA
+TALO ALEKSANDAR
+TALO BRIGITA
+TALO FRANJA
+TALO JELENA
+TALO JELISAVETA
+TALO JOŽEF
+TALO JOSIP
+TALO JOVAN
+TALO TEREZA
+TALOŠI ĐORĐE
+TALOŠI IRENA
+TALOŠI KAROLJ
+TALOVIĆ BEHUDIN
+TALOVIĆ HAJRIJA
+TALOVIĆ SADIK
+TAMAŠ ĐERĐ
+TAMAŠ ĐURA
+TAMAŠ IRINEJ
+TAMAŠ-JOŠANOV ALEKSANDRA
+TAMAŠ LJUBOMIR
+TAMAŠ MARIJA
+TAMAŠ MIHAJLO
+TAMAŠ PAVLE
+TAMAŠ VLADIMIR
+TAMAŠ VLADIMIR
+TAMAŠI AGOŠTON
+TAMAŠI ALADAR
+TAMAŠI TIBOR
+TAMAŠKOVIĆ ZOLTAN
+TAMBURAŠEV VUKAŠIN
+TAMBURKOVSKI DRAGAN
+TAMINDŽIĆ ČEDOMIR
+TAMINDŽIĆ ANĐELKO
+TAMINDŽIĆ KOVINKA
+TAMINDŽIĆ RISTA
+TAMINDŽIJA DANILO
+TAMINDŽIJA MILORAD
+TAMINDŽIJA MIRKO
+TAMINDŽIJA VLADO
+TANČIK ŠANDOR
+TANČIK ALBERT
+TANČIK ALEKSANDAR
+TANČIK EMIL
+TANČIK IBOLJA
+TANČIK ROZA
+TANACKOV NOVAK
+TANACKOVIĆ ACO
+TANACKOVIĆ MIHAJLO
+TANASIĆ JOVAN
+TANASIĆ OLIVERA
+TANASIĆ PREDRAG
+TANASIĆ RUŽA
+TANASIĆ SPASOJE
+TANASIĆ VALERIJA
+TANASIĆ VALERIJA
+TANASIJEVIĆ ŽARKO
+TANASIJEVIĆ-FILIPOV IVANKA
+TANASIJEVIĆ MILAN
+TANASIJEVIĆ SINIŠA
+TANASIJIN LUKA
+TANASIJIN PETAR
+TANASIJIN VERA
+TANASIN DANISLAVA
+TANASIN JOVAN
+TANASIN LJUBICA
+TANASIN NESTOR
+TANASIN STEVAN
+TANASIN STEVAN
+TANASIN STEVAN
+TANASIN STEVAN
+TANASKOVIĆ DRAGAN
+TANASKOVIĆ DRAGOMIR
+TANASKOVIĆ GINA
+TANASKOVIĆ GORDANA
+TANASKOVIĆ GOSPAVA
+TANASKOVIĆ LAZAR
+TANASKOVIĆ MILE
+TANASKOVIĆ NOVAK
+TANASKOVIĆ STANISLAV
+TANASKOVIĆ VITKO
+TANASKOVIĆ VITOMIR
+TANASKOVIĆ VUKAN
+TANDI JULIJANA
+TANEV TRAJKO
+TANGL IVAN
+TANGL OLGA
+TANJEVIĆ DRAGOLJUB
+TANJEVIĆ LJUBOMIR
+TANJGA GORAN
+TANJGA LJUBOMIR
+TANJGA MARIJA
+TANJGA RAJKO
+TANJGA TANE
+TANKA IŠTVAN
+TANKOSIĆ BOGDAN
+TANKOSIĆ BOJANA
+TANKOSIĆ BRANKO
+TANKOSIĆ JOVAN
+TANKOSIĆ KUZMAN
+TANKOSIĆ MARKO
+TANKOSIĆ MIHAJLO
+TANKOSIĆ MILAN
+TANKOSIĆ MILENA
+TANKOSIĆ MILICA
+TANKOSIĆ MILICA
+TANKOSIĆ NIKOLA
+TANKOSIĆ RAZIJA
+TANKOSIĆ STEVAN
+TANKOVIĆ SALKO
+TANOVIĆ GAVRILO MR
+TANOVIĆ JOVO
+TANOVIĆ VLADIMIR
+TANTIĆ SLAVKO
+TANURDŽIĆ ŽIVOJIN
+TANURDŽIĆ ALEKSANDAR
+TANURDŽIĆ DARINKA
+TANURDŽIĆ GOJKO
+TANURDŽIĆ JOVAN
+TANURDŽIĆ MILICA
+TANURDŽIĆ MIRKO
+TANURDŽIĆ SRBOMIR
+TANURDŽIĆ STANISLAVA
+TANURDŽIĆ SVETOZAR
+TANURDŽIĆ ZORA
+TAPAI RUDOLF
+TAPAJ GABRIJEL
+TAPAJ STAMENKA
+TAPALAGA JON
+TAPALAGA TODOR
+TAPAVIČKI ČEDOMIR
+TAPAVIČKI BORIVOJ
+TAPAVIČKI FEODOR
+TAPAVIČKI MLADEN
+TAPAVIČKI RADOVAN
+TAPAVIČKI STEVAN
+TAPAVICA ČEDOMIR
+TAPAVICA ALEKSANDRA
+TAPAVICA ALEKSANDRA
+TAPAVICA BORKA
+TAPAVICA BRANKA
+TAPAVICA DOBRILA
+TAPAVICA JELICA
+TAPAVICA LJUBOMIR
+TAPAVICA MILORAD
+TAPAVICA MITA
+TAPAVICA RADOSLAVA
+TAPAVICA RAJKO
+TAPAVICA SIMA
+TAPAVICA STEVAN
+TAPAVICA TIHOMIR
+TAPAVICA VERICA
+TAPAVICA VERICA
+TARAKČIJA ĐORĐE
+TARAKČIJA-MILOVANOVIĆ RATKA
+TARANDŽA IVAN
+TARANDŽA IVAN
+TARASENKO BRATISLAV DR
+TARBUK MIRKO
+TARBUK NIKOLA
+TAREVSKI ĆAMIL
+TARGUŠ MATIJA
+TARI ILONA
+TARJAN DEŽE
+TARJAN GABOR
+TARJAN IMRE
+TARJAN KARLO
+TARJAN TIBOR
+TARKO JANOŠ
+TARLAĆ PERICA
+TARLE ILIJA
+TARLE IVAN
+TARNOCKI AMALIJA DR
+TARNOCKI PAL
+TASEV BLAŽO
+TASEVSKI ILO
+TASEVSKI JORDAN
+TASIĆ ŽAKLINA
+TASIĆ ŽIVOJIN
+TASIĆ ĐORĐE
+TASIĆ ANĐELIJA
+TASIĆ ANA
+TASIĆ BLAGOJE DIPL PRAVNIK
+TASIĆ BLAGOJE
+TASIĆ BOŽIDAR MR PH
+TASIĆ BORISLAV
+TASIĆ BORIVOJE
+TASIĆ BORIVOJE
+TASIĆ DESANKA
+TASIĆ DOBRIVOJ
+TASIĆ IVAN
+TASIĆ LJUBODRAG DIPL ING
+TASIĆ MILOŠ DR LEKAR
+TASIĆ MILOŠ DR
+TASIĆ MILOŠ DR
+TASIĆ MILOŠ
+TASIĆ MIROSLAV
+TASIĆ MIROSLAV
+TASIĆ NEVENKA
+TASIĆ RADE
+TASIĆ SINIŠA
+TASIĆ SLOBODAN
+TASIĆ TRIFUN
+TASIĆ UROŠ
+TASIĆ VERA
+TASIĆ VLADANKA
+TASIĆ ZORAN
+TASKOVIĆ DUŠAN
+TASKOVIĆ MIROSLAV
+TASKOVIĆ PERA
+TASOVAC DOBRILA
+TASOVAC MILORAD
+TATAI EMILIJA
+TATAI IVAN
+TATAI KAROLJ
+TATAI MARGIT
+TATAI TIBOR
+TATALOVIĆ ŽIVKO
+TATALOVIĆ BRANIMIR
+TATALOVIĆ DRAGAN
+TATALOVIĆ ILIJA
+TATALOVIĆ ILIJA
+TATALOVIĆ LAZO
+TATALOVIĆ MILAN
+TATALOVIĆ MILAN
+TATALOVIĆ PETAR
+TATALOVIĆ PETAR
+TATALOVIĆ PETAR
+TATAR DUŠAN
+TATAR DUŠAN
+TATAREVIĆ BLAŽA
+TATARIN RUŽICA
+TATARSKI DUŠAN
+TATARSKI MILORAD
+TATARSKI NADA
+TATARSKI SVETISLAV
+TATARSKI VLADETA
+TATIĆ ŽARKO
+TATIĆ ĐURĐINKA
+TATIĆ ALEKSANDAR
+TATIĆ ALEKSANDAR
+TATIĆ ANKICA
+TATIĆ BRANKO
+TATIĆ DANA
+TATIĆ DRAGAN
+TATIĆ DRAGOŠ
+TATIĆ DRAGOLJUB
+TATIĆ DRAGOMIR
+TATIĆ DUŠAN
+TATIĆ EMIL DR
+TATIĆ EVICA
+TATIĆ ILIJA
+TATIĆ ILIJA
+TATIĆ ILONKA
+TATIĆ JELENA
+TATIĆ JOVAN DIPL ING
+TATIĆ JOVAN
+TATIĆ LAZAR
+TATIĆ MARA
+TATIĆ MARIJA
+TATIĆ MARIJA
+TATIĆ MILAN
+TATIĆ MILAN
+TATIĆ MILIVOJ
+TATIĆ MILKA
+TATIĆ MILOŠ
+TATIĆ MILORAD
+TATIĆ MILOSAV
+TATIĆ MILUTIN DIPL ING
+TATIĆ NEDELJKO
+TATIĆ PAJA
+TATIĆ PERSIDA
+TATIĆ PETAR
+TATIĆ RADMILA
+TATIĆ RADOSLAV
+TATIĆ SLAVKO
+TATIĆ SLOBODAN
+TATIĆ SRBISLAV
+TATIĆ STEVAN
+TATIĆ TOMISLAV
+TATIĆ ZLATICA
+TATOMIR MARKO
+TATOMIROV JOVAN
+TATOMIROV MARIJA
+TATOMIROV MARIJA
+TATOMIROV RADIVOJ
+TATOMIROV ZORAN
+TATOMIROVIĆ BRANKA
+TAUŠAN MARKO
+TAUŠANOVIĆ ILIJA
+TAUŠANOVIĆ RADE
+TAUBNER KATICA
+TEŠANOV MILAN
+TEŠANOVIĆ ČEDO
+TEŠANOVIĆ ŽELJKO
+TEŠANOVIĆ ĐOKO
+TEŠANOVIĆ CVIJETA
+TEŠANOVIĆ DRAGAN
+TEŠANOVIĆ DRAGAN
+TEŠANOVIĆ DUŠAN
+TEŠANOVIĆ JELA
+TEŠANOVIĆ LAZAR
+TEŠANOVIĆ NENAD
+TEŠANOVIĆ NEVENKA
+TEŠANOVIĆ PETAR
+TEŠANOVIĆ RAŠKO
+TEŠANOVIĆ RAJKO
+TEŠANOVIĆ TOMA
+TEŠANOVIĆ VOJA
+TEŠANOVIĆ ZORAN
+TEŠENJI EDUARD
+TEŠIĆ ĐORĐE
+TEŠIĆ ALEKSANDAR
+TEŠIĆ DARINKA
+TEŠIĆ DRAGAN
+TEŠIĆ DUŠAN
+TEŠIĆ ERŽEBET
+TEŠIĆ GRADIMIR
+TEŠIĆ ILIJA
+TEŠIĆ JULIJANA
+TEŠIĆ LJUBOMIR
+TEŠIĆ LUKA
+TEŠIĆ MARIJA
+TEŠIĆ MILENKO
+TEŠIĆ MILE
+TEŠIĆ MILE
+TEŠIĆ MILICA
+TEŠIĆ MILORAD
+TEŠIĆ MIRKO
+TEŠIĆ PERSA
+TEŠIĆ RADISLAV
+TEŠIĆ SLAVKA
+TEŠIĆ SLAVOLJUB DIPL ING
+TEŠIĆ SOFIJA
+TEŠIĆ STANISLAVA
+TEŠIĆ STEVAN DR
+TEŠIĆ SVETLANA
+TEŠIĆ ZDRAVKO
+TEŠIN JASMINKA
+TEŠIN LJUBINKA
+TEŠIN MILOŠ
+TEŠIN STEVKA
+TEŠIN VESNA
+TEŠOVIĆ DRAGICA
+TEŠOVIĆ LJUBO
+TEŠOVIĆ MILENKO
+TEŠOVIĆ MILOMIR
+TEŠOVIĆ MILORAD
+TEŠOVIĆ VASILIJE
+TEŽLA ANDRIJA
+TEDIĆ ŽIVKO
+TEDIĆ BRANISLAV
+TEDIĆ MILOVAN
+TEDIĆ NEVENKA
+TEGELTIJA BOGDAN
+TEGELTIJA DUŠAN
+TEGELTIJA DUŠAN
+TEGELTIJA ILONKA
+TEGELTIJA MAGDALENA
+TEGELTIJA MILAN
+TEGELTIJA MITRA
+TEGELTIJA STANKO
+TEGELTIJA VLAJKO
+TEGLAŠ ANA
+TEGLAŠ LIDIJA
+TEGLAŠ NADA
+TEGLAŠI IŠTVAN
+TEGLAŠI JOŽEF
+TEJIĆ BRANKO
+TEJIĆ-KOVAČ MARIJA
+TEJIĆ LAZAR
+TEJIĆ MILIJA
+TEKIĆ BORO
+TEKIĆ MILAN
+TEKIĆ MILKA
+TEKIĆ MIODRAG
+TEKIĆ MIRKO
+TEKIĆ SLAVICA
+TEKIĆ SLAVKO
+TEL FERENC
+TEL JANOŠ
+TEL JELISAVETA
+TEL JENE
+TEL PETAR
+TEL VILMOŠ
+TELAROV ANKA
+TELAROV JOVAN
+TELAROV MILOŠ
+TELAROV NADA
+TELAROV PERA
+TELAROV SIMA
+TELAROV SINIŠA
+TELAROV SINIŠA
+TELAROV SMILJANA
+TELAROV VOJIN
+TELAROV ZORA
+TELAROVIĆ BORIS
+TELAROVIĆ DIMITRIJE
+TELAROVIĆ IVANA
+TELAROVIĆ IVAN
+TELAROVIĆ RATOMIR
+TELAROVIĆ SLOBODAN
+TELAROVIĆ STEVAN
+TELAROVIĆ STJEPAN
+TELEKI ŠANDOR
+TELEKI ERIKA
+TELEKI STEVAN
+TELEKI VERA
+TEMERINAC DARA
+TEMERINAC MILEVA
+TEMERINAC MIODRAG
+TEMERINSKI JELICA
+TEMERINSKI JOVAN
+TEMERINSKI NADA
+TEMUNOVIĆ MARIJA
+TENCE ALBIN
+TENJI ĐORĐE
+TENJI JOSIP
+TENJI JOSIP
+TENJI JOSIP
+TENJI KSENIJA
+TENJI MARIJA
+TENJOVIĆ DOBRIVOJE
+TENJOVIĆ MILOŠ
+TENJOVIĆ RADIVOJE
+TEODOROVIĆ ANDREJA
+TEODOROVIĆ DOBRILA
+TEODOROVIĆ DUŠAN
+TEODOROVIĆ JOVAN
+TEODOROVIĆ JOVAN
+TEODOROVIĆ LJUBO
+TEODOROVIĆ MARA
+TEODOROVIĆ MILAN
+TEODOROVIĆ NADA
+TEODOROVIĆ PAJA
+TEODOROVIĆ PERA
+TEODOROVIĆ PERA
+TEODOROVIĆ RATIMIR
+TEODOROVIĆ SAVA
+TEODOROVIĆ SIMA
+TEODOROVIĆ SLOBODAN
+TEODOROVIĆ VITOMIR
+TEODOROVIĆ VLADISLAV DIPL ING
+TEODOROVIĆ VLADISLAVA
+TEODOSIĆ MIRJANA
+TEODOSIJEVIĆ BRANISLAV
+TEODOSIJEVIĆ MILICA
+TEODOSIJEVIĆ ZORAN
+TEOFANOV ĐURĐICA
+TEOFANOV BOŠKO
+TEOFANOV DOBRINKA
+TEOFANOV DUŠAN
+TEOFANOV DUŠKO
+TEOFANOV MARINKO
+TEOFANOV MILAN
+TEOFANOV MILIVOJ
+TEOFANOV MILOŠ
+TEOFANOV MILOŠ
+TEOFANOV OLIVERA
+TEOFANOV ZORA
+TEOFANOVIĆ ŠTEFANIJA
+TEOFANOVIĆ ALEKSANDAR
+TEOFANOVIĆ ALEKSANDAR
+TEOFANOVIĆ ANA
+TEOFANOVIĆ ARANĐEL
+TEOFANOVIĆ BOGDAN
+TEOFANOVIĆ BOGDAN
+TEOFANOVIĆ DANILO
+TEOFANOVIĆ DONKA
+TEOFANOVIĆ DUŠAN
+TEOFANOVIĆ MARKO DR VETERINE
+TEOFANOVIĆ MILEVA
+TEOFANOVIĆ MILICA
+TEOFANOVIĆ TADIJA
+TEOFILOVIĆ ĐURĐICA
+TEOFILOVIĆ ALEKSANDAR
+TEOFILOVIĆ BRANKA
+TEOFILOVIĆ GORAN
+TEOFILOVIĆ MOMČILO
+TEOFILOVIĆ SAVO
+TEOVANOVIĆ NEVENKA
+TEPŠA NEBOJŠA
+TEPŠA SINIŠA
+TEPŠIĆ JOVICA
+TEPŠIĆ MIODRAG
+TEPŠIĆ RADE
+TEPAČEVIĆ ANDREJA
+TEPAVČEVIĆ ŽANKA
+TEPAVČEVIĆ BOŽIDAR
+TEPAVČEVIĆ GOJKO
+TEPAVČEVIĆ MILOVAN
+TEPAVČEVIĆ PETAR DR
+TEPAVČEVIĆ RATKO
+TEPAVČEVIĆ STRAHINJA
+TEPIĆ FRANCIKA
+TEPIĆ GORAN
+TEPIĆ JOVAN
+TEPIĆ MILAN
+TEPIĆ MILOŠ
+TEPIĆ MILOVAN
+TEPIĆ NEDELJKO
+TEPIĆ OBRENKO
+TEPIĆ RADOVAN
+TEPIĆ RAJKO
+TEPIĆ SNEŽANA
+TEPIĆ VIDA
+TEPIĆ ZORAN
+TEREČEK ANĐELKA
+TEREČIĆ LAJOŠ
+TEREČIK PAL
+TERECKI IŠTVAN
+TEREK ĐULA
+TEREK ANDRIJA
+TEREK FERENC
+TEREK IŠTVAN
+TEREK IMRE DIPL ING
+TEREK IRENA
+TEREK JANOŠ
+TEREK KATALIN
+TEREK LASLO
+TEREK LJUDEVIT DR ING
+TEREK OLGA
+TEREK TIBOR
+TEREZIJA BOSILJKA
+TERHEŠ ŠANDOR
+TERJEK ALEKSANDAR
+TERJEK-KOVAČ KARLO
+TERJEK MIHAJLO
+TERJEK VIKTORIJA
+TERKELJ ANA
+TERLJUK IVAN
+TERNOVAC IŠTVAN
+TERZIĆ ŽIVKO
+TERZIĆ ĐORĐE
+TERZIĆ ĐURO
+TERZIĆ BELA
+TERZIĆ BISERKA
+TERZIĆ BOGOLJUB
+TERZIĆ BRANKA
+TERZIĆ DRAGAN
+TERZIĆ DRAGOMIR
+TERZIĆ DUŠAN
+TERZIĆ DUŠAN
+TERZIĆ FRANCA
+TERZIĆ JEVREM
+TERZIĆ JOVAN
+TERZIĆ MILAN
+TERZIĆ MILAN
+TERZIĆ MILENA
+TERZIĆ MILENKO
+TERZIĆ MILICA
+TERZIĆ MIODRAG
+TERZIĆ MIODRAG
+TERZIĆ NIKOLA
+TERZIĆ NJEGOSAVA
+TERZIĆ PAVLE
+TERZIĆ PERKA
+TERZIĆ PETAR DR
+TERZIĆ PETAR
+TERZIĆ PETAR
+TERZIĆ RELJA
+TERZIĆ SAVA
+TERZIĆ SLAVKO
+TERZIĆ SLAVKO
+TERZIĆ SLAVNA
+TERZIĆ SLOBODAN
+TERZIĆ SRBISLAV
+TERZIĆ STANKA
+TERZIĆ TEODOR
+TERZIĆ TEREZA
+TERZIĆ TRIFUN
+TERZIĆ VERA
+TERZIĆ VLADAN
+TERZIĆ VOJISLAV
+TERZIJA MITAR
+TERZIN BRANISLAV
+TERZIN BRANKO
+TERZIN DRAGOSLAV
+TERZIN DUŠAN
+TERZIN JOVANKA
+TERZIN JOVANKA
+TERZIN LJUBICA
+TERZIN MILAN
+TERZIN MILINA
+TERZIN MIRJANA
+TERZIN MIROSLAVA
+TERZIN MIROSLAVA
+TERZIN MITA
+TERZIN NEVENKA
+TERZIN RADIVOJ
+TERZIN RADMILA
+TERZIN RISTA
+TERZIN SLOBODAN
+TERZIN STANKO
+TERZIN TOŠA
+TERZIN VASA
+TERZIN VELIMIR
+TERZIN VELJKO
+TERZIN VERICA
+TERZIN VESELIN
+TERZIN VOJISLAV
+TESLA ŠPIRO
+TESLA BRANKO
+TESLA DRAGAN
+TESLA MIRA
+TESLIĆ ĐORĐE
+TESLIĆ MAKSIM
+TESLIĆ MARKO
+TESLIĆ VLADIMIR
+TESTIN MARIJA
+TIŠANOVIĆ MILIVOJ
+TIŠIĆ MILENA
+TIŠMA ČEDOMIR
+TIŠMA ŽELJKO
+TIŠMA ĐURICA
+TIŠMA ANDREJ
+TIŠMA BRANKO
+TIŠMA DUŠAN
+TIŠMA DUŠAN
+TIŠMA ILIJA
+TIŠMA JOVAN
+TIŠMA LAZAR
+TIŠMA LJILJANA
+TIŠMA MARIJA
+TIŠMA MARTA
+TIŠMA-MILOŠEVSKI NATAŠA
+TIŠMA MILOŠ
+TIŠMA MIRKO
+TIŠMA MOMIR
+TIŠMA NIKOLA
+TIŠMA SINIŠA
+TIŠMA SMILJA
+TIŠMA STEVAN
+TIŠMA SVETOZAR
+TIŠMA VOJINKA
+TIŠMA VOJIN
+TIŠMA ZORAN
+TIBAI IŠTVAN
+TIC ANAMARIJA
+TICA BOŽO
+TICA CVETA
+TICA DMITAR
+TICA DRAGAN
+TICA JOVAN
+TICA MILOŠ
+TICA NEDELJKO
+TIGANJ ANTE
+TIHI JOSIP
+TIHOMIROVIĆ MILAN
+TIHOMIROVIĆ VELJKO
+TIHVINSKI VLADAN
+TIHVINSKI VLADIMIR DIPL ING
+TIJANIĆ MILOŠ
+TIJANIĆ SMILJA
+TIJANIĆ ZORAN
+TIKVEŠA NAILA
+TIKVIĆ BOŠKO
+TIKVIĆ MIROSLAV
+TIKVICKI HRVOJE
+TIKVICKI MARIJANA
+TIL EDVIN DR
+TIMARAC BRANKO
+TIMARAC STOJAN
+TIMAROV ĐORĐE
+TIMAROV STEVAN
+TIMAROV VASA
+TIMAROV VERA
+TIMILIĆ DIMITRIJE
+TIMKO IRINEJ
+TIMKO LJUBOV
+TIMKO MELANIJA
+TIMKO NESTOR
+TIMKO VERA
+TIMKO VLADIMIR
+TIMOTIĆ ĐORĐE
+TIMOTIĆ STANA
+TIMOTIĆ UROŠ
+TIMOTIJEVIĆ ANICA
+TIMOTIJEVIĆ BOŽIDAR
+TIMOTIJEVIĆ DIMITRIJE
+TIMOTIJEVIĆ JEVREM
+TIMOTIJEVIĆ-KOPRIVICA MAJA
+TIMOTIJEVIĆ MIROSLAV
+TIMOTIJEVIĆ OLGA
+TIMOTIJEVIĆ PLEMENKA
+TIMOTIJEVIĆ RADOSLAV
+TINKOVIĆ TOMISLAV
+TINTER HEDVIGA
+TINTOR ĐURA
+TINTOR DUŠAN
+TINTOR MARKO
+TINTOR MILKA
+TINTOR MIODRAG
+TINTOR MIRA
+TINTOR-RADOMIR STOJA
+TINTOR STEVAN
+TINUS BERNADETA
+TINUS MARTA
+TIODOROVIĆ LJILJANA
+TIODOROVIĆ RADOVAN
+TIPŠIN BORISLAV
+TIPURA JOSIP
+TIPURA JOSIP
+TIPURA LADISLAV
+TIPURA LASLO
+TIR IŠTVAN
+TIR MILKA
+TIR PETAR
+TIRI ANTAL
+TIRINDA ĐURA
+TIRINGER ELZA
+TIRKAJLA ANA
+TIRKAJLA SLAVOMIR
+TIRNANIĆ BISERKA
+TISINOVIĆ JELISAVETA
+TISTA ERŽEBET
+TISTA JANOŠ
+TITELAC ĐORĐE
+TITELAC ĐORĐE
+TITELAC JELENA
+TITELAC JOVAN
+TITELAC MILINKA
+TITELAC NADA
+TITELAC STEVAN
+TITELAC ZORICA
+TITOV ALEKSANDAR
+TITOV ANA
+TITOV ANICA
+TITOV EVGENIJE
+TITOV PAVLE
+TITOV TOMISLAV
+TKALČEC JOVAN
+TKALEC PAVAO
+TOŠIĆ ŽARKO
+TOŠIĆ BORISLAVA
+TOŠIĆ BORISLAV
+TOŠIĆ BRATISLAV
+TOŠIĆ BRATISLAV
+TOŠIĆ DANICA
+TOŠIĆ DRAGAN
+TOŠIĆ DRAGAN
+TOŠIĆ DUŠAN
+TOŠIĆ DUŠAN
+TOŠIĆ DUŠAN
+TOŠIĆ ERŽEBET
+TOŠIĆ EVICA
+TOŠIĆ GOJKO
+TOŠIĆ JELA
+TOŠIĆ JOVAN
+TOŠIĆ JOVICA
+TOŠIĆ KRSTAN
+TOŠIĆ KRSTOMIR
+TOŠIĆ LJUBICA
+TOŠIĆ LJUBINKO
+TOŠIĆ MIHAJLO
+TOŠIĆ MILAN
+TOŠIĆ MILAN
+TOŠIĆ MILAN
+TOŠIĆ MILEVA
+TOŠIĆ MILE
+TOŠIĆ MILOŠ
+TOŠIĆ MILORAD
+TOŠIĆ MILUTIN
+TOŠIĆ MIODRAG
+TOŠIĆ MIRKO
+TOŠIĆ MITAR
+TOŠIĆ NEDELJKO
+TOŠIĆ NEVENKA
+TOŠIĆ NIKOLA
+TOŠIĆ NIKO
+TOŠIĆ NOVAK
+TOŠIĆ OBRAD
+TOŠIĆ OSTOJA
+TOŠIĆ PERO
+TOŠIĆ PETAR
+TOŠIĆ RADE
+TOŠIĆ RADOMIR
+TOŠIĆ RADOMIR
+TOŠIĆ RATKO
+TOŠIĆ SAVA
+TOŠIĆ SLAVKA
+TOŠIĆ SOFIJA
+TOŠIĆ STANIMIR
+TOŠIĆ STEVAN
+TOŠIĆ STEVAN
+TOŠIĆ SVETISLAV
+TOŠIĆ SVETLANA
+TOŠIĆ VELIBOR
+TOŠIĆ VERA
+TOŠIĆ VID
+TOŠIĆ VLADO
+TOŠIĆ VLASTIMIR
+TOŠIĆ VOJIN
+TOŠINOVIĆ LUKA
+TOŠKOV HRANISLAV
+TOŠKOV PERA
+TOŠKOVIĆ VUČETA
+TOŠKOVIĆ VUČIĆ
+TOŠKOVIĆ ZDRAVKO
+TOŠOVIĆ MILANKA
+TOŠOVIĆ MILOJE
+TOĐER KOSTA
+TOBDŽIĆ-BRAŠANAC MIROSLAVA
+TOBDŽIĆ KATARINA
+TOBDŽIĆ MILENKO
+TOBDŽIĆ STEVAN
+TOBI MARIJA
+TOBI MIROSLAV
+TOBIAŠ VILMOŠ
+TOBOLKA ANA
+TOBOLKA DANIEL
+TOBOLKA ERIKA
+TOBOLKA IŠTVAN
+TOBOLKA ILONA
+TODIĆ BOGDAN
+TODIĆ BORISLAV
+TODIĆ BORISLAV
+TODIĆ BRANISLAV
+TODIĆ DANIJELA
+TODIĆ GOJKO DIPL ING
+TODIĆ MARIJANA
+TODIĆ MILANKO
+TODIĆ MILAN
+TODIĆ MILE
+TODIĆ MILOŠ DIPL ING
+TODIĆ MILOŠ
+TODIĆ MIROSLAV
+TODIĆ NEĐO
+TODIĆ RADIVOJ
+TODIĆ RAJKO
+TODIĆ RATOMIR
+TODIĆ STANISAVA
+TODIĆ STANKO
+TODIĆ TOMISLAV
+TODIĆ VELIMIR
+TODIĆ VLADO
+TODOŠKOVIĆ BOGDAN
+TODOŠKOVIĆ NADA
+TODOŠKOVIĆ NEMANJA
+TODORČEVIĆ DRAGUTIN
+TODORČEVIĆ OSTOJA
+TODORČEVIĆ PERO
+TODORČEVIĆ SVETLANA
+TODORČEVIĆ VASILIJE
+TODORČEVIĆ VASO
+TODORČEVIĆ VOJIN
+TODORAN TRAJAN
+TODORIĆ ČEDOMIR
+TODORIĆ BRANKO
+TODORIĆ DRAGAN
+TODORIĆ GOJKO
+TODORIĆ ILIJA
+TODORIĆ JELENA
+TODORIĆ JOVANKA
+TODORIĆ JOVAN
+TODORIĆ LJUBA
+TODORIĆ LJUBIVOJE
+TODORIĆ MARIJA
+TODORIĆ MILOŠ
+TODORIĆ MILOŠ
+TODORIĆ NEDELJKO
+TODORIĆ NIKOLA
+TODORIĆ NIKO
+TODORIĆ RADMILA
+TODORIĆ SELIMIR
+TODORIĆ TRIVUNA
+TODOROV ĐURA
+TODOROV ALEKSANDAR
+TODOROV BISERKA
+TODOROV DESANKA
+TODOROV GLIŠA
+TODOROV IVAN
+TODOROV-JAŠAREVIĆ DANICA
+TODOROV MILIVOJ
+TODOROV MILOŠ
+TODOROV NEDELJKO
+TODOROV OBRENKA
+TODOROV RADOVAN
+TODOROV ROBERT
+TODOROV SAVA
+TODOROV SLOBODAN
+TODOROV SPIRO DR
+TODOROV TOMISLAV
+TODOROVIĆ ČEDO
+TODOROVIĆ ŽARKO
+TODOROVIĆ ŽARKO
+TODOROVIĆ ŽIVOJIN
+TODOROVIĆ ŽIVOTA
+TODOROVIĆ ŽIVOTA
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ANĐELKO
+TODOROVIĆ ANA
+TODOROVIĆ ANKA
+TODOROVIĆ ANTUN
+TODOROVIĆ BOŠKO
+TODOROVIĆ BOŠKO
+TODOROVIĆ BOGDAN
+TODOROVIĆ BORISLAV
+TODOROVIĆ BORIVOJE
+TODOROVIĆ BOSA
+TODOROVIĆ BRANISLAV
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ CVETKO
+TODOROVIĆ CVIJETIN
+TODOROVIĆ CVIJO
+TODOROVIĆ DANICA
+TODOROVIĆ DANILO
+TODOROVIĆ DIMITRIJE
+TODOROVIĆ DOBROSAV
+TODOROVIĆ DOBROSAV
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGICA
+TODOROVIĆ DRAGOLJUB
+TODOROVIĆ DRAGOLJUB
+TODOROVIĆ DRAGOSLAV
+TODOROVIĆ DRAGOSLAV
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠKO
+TODOROVIĆ GOJKO
+TODOROVIĆ GOJKO
+TODOROVIĆ GRADIMIR
+TODOROVIĆ ILE
+TODOROVIĆ JASNA
+TODOROVIĆ JELENA
+TODOROVIĆ JELICA
+TODOROVIĆ JELICA
+TODOROVIĆ JOKA
+TODOROVIĆ JOVANKA
+TODOROVIĆ JOVICA
+TODOROVIĆ JULIJANA
+TODOROVIĆ KOVINKA
+TODOROVIĆ LAZAR
+TODOROVIĆ LENKA
+TODOROVIĆ LJUBICA
+TODOROVIĆ LJUBICA
+TODOROVIĆ LJUBINKA
+TODOROVIĆ LJUBOMIR
+TODOROVIĆ MARA
+TODOROVIĆ MARGITA
+TODOROVIĆ MARIJA
+TODOROVIĆ MARKO
+TODOROVIĆ MARKO
+TODOROVIĆ MARKO
+TODOROVIĆ MIŠO
+TODOROVIĆ MIĆA
+TODOROVIĆ MIĆO
+TODOROVIĆ MIHAJLO
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILENKO
+TODOROVIĆ MILE
+TODOROVIĆ MILICA
+TODOROVIĆ MILKA
+TODOROVIĆ MILOŠ
+TODOROVIĆ MILORAD
+TODOROVIĆ MILOVAN
+TODOROVIĆ MIRKO DIPL ING
+TODOROVIĆ MIRKO DR LEKAR
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIROSLAVA
+TODOROVIĆ MIROSLAV
+TODOROVIĆ MLADEN DR
+TODOROVIĆ MLADEN
+TODOROVIĆ MLADOMIR
+TODOROVIĆ MOMČILO
+TODOROVIĆ MOMČILO
+TODOROVIĆ MOMIRKA
+TODOROVIĆ NADA
+TODOROVIĆ NADA
+TODOROVIĆ NIĆIFOR
+TODOROVIĆ NIKOLA
+TODOROVIĆ NIKOLA
+TODOROVIĆ OLGICA
+TODOROVIĆ OSTOJA
+TODOROVIĆ PETAR
+TODOROVIĆ PETAR
+TODOROVIĆ RAŠKO
+TODOROVIĆ RADA
+TODOROVIĆ RADIŠA
+TODOROVIĆ RADIVOJ ADVOKAT
+TODOROVIĆ RADIVOJE
+TODOROVIĆ RADIVOJ
+TODOROVIĆ RADMILA
+TODOROVIĆ RADOJKA
+TODOROVIĆ RADOSLAV
+TODOROVIĆ RAJKO
+TODOROVIĆ RANKO
+TODOROVIĆ RATKO
+TODOROVIĆ ROSA
+TODOROVIĆ SAŠA
+TODOROVIĆ SAVA
+TODOROVIĆ SAVA
+TODOROVIĆ SAVO
+TODOROVIĆ SAVO
+TODOROVIĆ SENKA
+TODOROVIĆ SIMA
+TODOROVIĆ SINIŠA
+TODOROVIĆ SLAVE
+TODOROVIĆ SLOBODAN
+TODOROVIĆ SLOBODAN
+TODOROVIĆ SMILJKA
+TODOROVIĆ SNEŽANA
+TODOROVIĆ SOFIJA
+TODOROVIĆ SREDOJE
+TODOROVIĆ SRETEN
+TODOROVIĆ STANIMIR
+TODOROVIĆ STANISLAV
+TODOROVIĆ STANKO
+TODOROVIĆ STEVAN
+TODOROVIĆ STEVAN
+TODOROVIĆ STEVA
+TODOROVIĆ TODE
+TODOROVIĆ TODE
+TODOROVIĆ TOMISLAV
+TODOROVIĆ TOMISLAV
+TODOROVIĆ VERA
+TODOROVIĆ VERA
+TODOROVIĆ VERA
+TODOROVIĆ VLADETA
+TODOROVIĆ VLADIMIR
+TODOROVIĆ VLADIMIR
+TODOROVIĆ VLADISLAV
+TODOROVIĆ VUKAŠIN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORA
+TODOROVIĆ ZORKA
+TODOROVSKI MANASIJE
+TODOROVSKI MIROSLAV
+TODOROVSKI NADA
+TODOSIJEVIĆ ĐORĐE
+TODOSIJEVIĆ DRAGOLJUB
+TODOSIJEVIĆ MILAN
+TODOSIJEVIĆ ZLATKO DIPL PRAVNIK
+TOFIL SOFIJA
+TOHOLJ JOVO
+TOHOLJEVIĆ BOŠKO
+TOHOLJEVIĆ ZDRAVKO
+TOJAGA MILAN
+TOJAGA MILOŠ
+TOJAGA SVETOZAR
+TOJAGIĆ ĐORĐE
+TOJAGIĆ BOŽIDAR
+TOJAGIĆ DANE
+TOJAGIĆ DANILO
+TOJAGIĆ DUŠAN
+TOJAGIĆ JELA
+TOJAGIĆ LUDMILA
+TOJAGIĆ MIRJANA
+TOJAGIĆ NIKOLA
+TOJAGIĆ NIKOLA
+TOJAGIĆ RADOVAN
+TOJAGIĆ SLOBODAN
+TOJZAN ILONA
+TOKAR JULIJA
+TOKIĆ KOSARA
+TOKIĆ MIHAJLO
+TOKIĆ MILAN
+TOKIĆ SAVA
+TOKIĆ SAVA
+TOKIĆ SAVA
+TOKIN-ĐERIĆ ZAGORKA
+TOKIN ĐORĐE
+TOKIN ALISA
+TOKIN BORA
+TOKIN DANICA
+TOKIN PROKOP DR LEKAR
+TOKIN SLOBODAN
+TOKIN VERA
+TOKIN VLADA
+TOKODI JANOŠ
+TOKODI JOLANKA
+TOKODI MARGITA
+TOKOVIĆ JELICA
+TOL ANDRAŠ
+TOL JOŽEF
+TOLDI EVA
+TOLDI VILMOŠ
+TOLIĆ MILOŠ
+TOLIĆ VESNA
+TOLICKI ZORA
+TOLIMIR UROŠ
+TOLJAGA VUKOSAVA
+TOLJEVIĆ BRANKO
+TOLJEVIĆ DOBRISLAV
+TOLJEVIĆ DRAGICA
+TOLJIĆ RAJKO
+TOLMAČ ZORAN
+TOLMAČEV ŽIVA
+TOLMAČEV MIROSLAV
+TOLNAI OTO
+TOLNAI RUŽA
+TOLT JOŽEF
+TOLT JOSIP
+TOLVAJ AGNEŠ
+TOLVAJ ELEONORA
+TOLVET OSKAR
+TOMČANJI IVAN
+TOMČANJI MIROSLAVA
+TOMČANJI STANISLAVA
+TOMČEVA NEVENKA DR
+TOMČEVSKI CVETAN
+TOMČIĆ ČEDOMIR
+TOMČOV TOMČO
+TOMČOVA ANETA DR
+TOMČOVA ANITA DR
+TOMŠIĆ LADISLAV
+TOMA ŠANDOR
+TOMA ANDRIJA
+TOMA JANOŠ
+TOMA JANOŠ
+TOMA JANOŠ
+TOMA JULIJANA
+TOMA LADISLAV
+TOMA MARIJA
+TOMA MIHAJLO
+TOMA OLGA
+TOMA PAL
+TOMA ROZALIJA
+TOMA STEVAN
+TOMAŠ ĐURA
+TOMAŠ JANKO
+TOMAŠ JOVAN
+TOMAŠ MILORAD
+TOMAŠ MILOVAN
+TOMAŠ STOJANKA
+TOMAŠEV BOŽIDAR
+TOMAŠEV KOVINKA
+TOMAŠEV MATIJA
+TOMAŠEV MATIJA
+TOMAŠEV PETAR
+TOMAŠEV VERA
+TOMAŠEVIĆ BLAGOTA
+TOMAŠEVIĆ BOŽIDAR
+TOMAŠEVIĆ BORISLAV
+TOMAŠEVIĆ DRAGANA
+TOMAŠEVIĆ EVICA
+TOMAŠEVIĆ IVAN
+TOMAŠEVIĆ JELICA
+TOMAŠEVIĆ JOVAN
+TOMAŠEVIĆ KOSTA
+TOMAŠEVIĆ LJUBIŠA
+TOMAŠEVIĆ LJUBICA
+TOMAŠEVIĆ LUKA
+TOMAŠEVIĆ MANOJLE
+TOMAŠEVIĆ MILENKO
+TOMAŠEVIĆ MILIVOJ
+TOMAŠEVIĆ MILKA
+TOMAŠEVIĆ MILORAD
+TOMAŠEVIĆ MIODRAG
+TOMAŠEVIĆ MIODRAG
+TOMAŠEVIĆ NADA
+TOMAŠEVIĆ NADEŽDA
+TOMAŠEVIĆ RADIVOJ
+TOMAŠEVIĆ RADOJKA
+TOMAŠEVIĆ RADOJKA
+TOMAŠEVIĆ SAVO
+TOMAŠEVIĆ SLOBODAN
+TOMAŠEVIĆ SVETOMIR
+TOMAŠEVIĆ VLADIMIR
+TOMAŠEVIĆ VOJISLAV
+TOMAŠIĆ ĐURA
+TOMAŠIĆ BERTA
+TOMAŠIĆ MARTIN
+TOMAŠIĆ MIRJANA
+TOMAŠIĆ TIBOR
+TOMAC IVAN
+TOMAC MIROSLAV
+TOMAC RUŽICA
+TOMAN DIN
+TOMAN FRANJA
+TOMAN JOŽEF
+TOMAN LASLO
+TOMAN MAGDOLNA
+TOMANIĆ DUŠAN
+TOMANIĆ-LACKOVIĆ MILENA
+TOMANIĆ MILENA
+TOMANIĆ ZDENKA
+TOMANOVIĆ BRANISLAV
+TOMANOVIĆ MARIJA
+TOMANOVIĆ MIODRAG
+TOMANOVIĆ RAJKO
+TOMANOVIĆ TOMISLAV
+TOMAS ANDRIJA
+TOMAS JOSIP
+TOMAS RUDOLF
+TOMAS ZDRAVKA
+TOMEC VLADISLAV
+TOMIČIĆ ANTE
+TOMIČIĆ CVIJO
+TOMIČIĆ JOVO
+TOMIČIĆ PETAR
+TOMIČIĆ STOJA
+TOMIČIĆ TOMISLAV
+TOMIČIN MARIJA
+TOMIĆ ČEDOMIR DIPL ING
+TOMIĆ ČEDOMIR
+TOMIĆ ŽELJKO
+TOMIĆ ŽIVKO
+TOMIĆ ŽIVOJIN
+TOMIĆ ĐORĐE
+TOMIĆ ĐURĐICA
+TOMIĆ ĐURĐINKA
+TOMIĆ ĐURICA
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSA
+TOMIĆ ANA
+TOMIĆ ANGELINA
+TOMIĆ ANKA
+TOMIĆ ANKICA
+TOMIĆ ANKICA
+TOMIĆ ARIJADNA
+TOMIĆ BILJANA
+TOMIĆ BOŠKO
+TOMIĆ BOŠKO
+TOMIĆ BOŽIDARKA
+TOMIĆ BOGDANKA
+TOMIĆ BOJKA
+TOMIĆ BORISLAV DR ING
+TOMIĆ BORISLAV
+TOMIĆ BOSILJKA
+TOMIĆ BRANKO
+TOMIĆ DANICA
+TOMIĆ DANILO MR
+TOMIĆ DARINKA
+TOMIĆ DEJAN
+TOMIĆ DEVA
+TOMIĆ DRAGAN
+TOMIĆ DRAGAN
+TOMIĆ DRAGAN
+TOMIĆ DRAGA
+TOMIĆ DRAGA
+TOMIĆ DRAGOLJUB
+TOMIĆ DRAGUTIN
+TOMIĆ DUŠAN
+TOMIĆ DUŠAN
+TOMIĆ DUŠICA
+TOMIĆ EVA
+TOMIĆ EVA
+TOMIĆ GORDANA
+TOMIĆ GRADIMIR
+TOMIĆ ILE
+TOMIĆ ILE
+TOMIĆ ILIJA
+TOMIĆ ILIJA
+TOMIĆ ILIJA
+TOMIĆ IVAN
+TOMIĆ-IVIČIĆ BILJANA
+TOMIĆ JELENA
+TOMIĆ JELICA
+TOMIĆ JOSIF
+TOMIĆ JOSIP
+TOMIĆ JOVANKA
+TOMIĆ JOVAN
+TOMIĆ JOVAN
+TOMIĆ JOVAN
+TOMIĆ JULIANA
+TOMIĆ KATARINA
+TOMIĆ KONSTANTIN
+TOMIĆ KORNELIA
+TOMIĆ KOSA
+TOMIĆ KRSTA
+TOMIĆ LAZAR
+TOMIĆ LAZAR
+TOMIĆ LEPOSAVA
+TOMIĆ LJILJANA
+TOMIĆ LJILJA
+TOMIĆ LJUBA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBINKA
+TOMIĆ LJUBOMIR
+TOMIĆ LJUBOMIR
+TOMIĆ MARGIT
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARKO
+TOMIĆ MIJODRAG
+TOMIĆ MILADIN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILENKO
+TOMIĆ MILENKO
+TOMIĆ MILE
+TOMIĆ MILIVOJ
+TOMIĆ MILKA
+TOMIĆ MILOŠ
+TOMIĆ MILOŠ
+TOMIĆ MILOMIR
+TOMIĆ MILORAD
+TOMIĆ MILORAD
+TOMIĆ MILOSAV
+TOMIĆ MIRJANA
+TOMIĆ MIRJANA
+TOMIĆ MIRJAN
+TOMIĆ MIRKO
+TOMIĆ MIRKO
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MITAR
+TOMIĆ MLADEN
+TOMIĆ MOMČILO
+TOMIĆ MOMČILO
+TOMIĆ NATAŠA
+TOMIĆ NATALIJA
+TOMIĆ NEBOJŠA
+TOMIĆ NEDELJKA
+TOMIĆ-NEDELJKOVIĆ DOBRILA
+TOMIĆ NEDELJKO
+TOMIĆ NENAD
+TOMIĆ NENAD
+TOMIĆ NENAD
+TOMIĆ NIKOLA
+TOMIĆ NIKOLA
+TOMIĆ NOVICA
+TOMIĆ OLGICA MR
+TOMIĆ OLIVERA
+TOMIĆ PAVLE DR
+TOMIĆ PELKA
+TOMIĆ PETAR
+TOMIĆ PETKO
+TOMIĆ RADIVOJE
+TOMIĆ RADOVAN
+TOMIĆ RADOVAN
+TOMIĆ RATOMIR
+TOMIĆ ROZALIJA
+TOMIĆ SAŠA
+TOMIĆ SAVA
+TOMIĆ SAVA
+TOMIĆ SELIMIR
+TOMIĆ-SIMIN MILKA
+TOMIĆ SINIŠA
+TOMIĆ SLAVICA
+TOMIĆ SLAVICA
+TOMIĆ SLAVKO
+TOMIĆ SLAVKO
+TOMIĆ SLAVKO
+TOMIĆ SLAVOLJUB
+TOMIĆ SLOBODANKA
+TOMIĆ SLOBODAN
+TOMIĆ SLOBODAN
+TOMIĆ SNEŽANA
+TOMIĆ SOFIJA
+TOMIĆ STANKO
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STIPA
+TOMIĆ STJEPAN
+TOMIĆ SVETOZAR
+TOMIĆ SVETOZAR
+TOMIĆ TATJANA
+TOMIĆ TODE
+TOMIĆ TODOR
+TOMIĆ VALERIJA
+TOMIĆ VELJKO
+TOMIĆ VELJKO
+TOMIĆ VERA
+TOMIĆ VERICA
+TOMIĆ VESNA
+TOMIĆ VESNA
+TOMIĆ VESNA
+TOMIĆ VID
+TOMIĆ VINKO
+TOMIĆ VLADIMIR
+TOMIĆ VLADIMIR
+TOMIĆ VLASTIMIR
+TOMIĆ VLASTIMIR
+TOMIĆ VOJISLAVA
+TOMIĆ VUKOSAVA
+TOMIĆ ZORAN
+TOMIĆ ZORICA
+TOMIĆ ZORKA
+TOMIĆ ZORKA
+TOMIĆ ZORKA
+TOMIK JOVAN
+TOMIK SOFIJA
+TOMIK STEVAN
+TOMIN ŽIVAN
+TOMIN ALEKSANDAR
+TOMIN BRANISLAV
+TOMIN BRANISLAV
+TOMIN DIMITRIJE
+TOMIN DRAGAN
+TOMIN DRAGAN
+TOMIN DRAGINJA
+TOMIN DUŠAN
+TOMIN GORDANA
+TOMIN LJUBICA
+TOMIN LJUBICA
+TOMIN MARIJA
+TOMIN MILAN
+TOMIN MILUTIN
+TOMIN MILUTIN
+TOMIN MIROSLAV
+TOMIN MITAR
+TOMIN RADOSLAV
+TOMIN STEVAN DIPL PRAVNIK
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN SVETLANA
+TOMIN VASA
+TOMIN VIDOSAVA
+TOMINČIĆ MILOVAN
+TOMINAC VINKO
+TOMKA ALPAR
+TOMKA KARLO
+TOMLJANOVIĆ BOGOSLAV
+TOMLJANOVIĆ LJUBICA
+TOMLJANOVIĆ MARIJA
+TOMLJANOVIĆ MILAN
+TOMO JOSIP
+TOMOV BOGDAN
+TOMOV MIRČE
+TOMOV SAVA
+TOMOV SLOBODAN
+TOMOV TOŠA
+TOMOV TODOR
+TOMOV VELIN
+TOMOV VELIN
+TOMOVIĆ ANĐA
+TOMOVIĆ BOŽIDAR
+TOMOVIĆ BORISLAV
+TOMOVIĆ DRAGINJA
+TOMOVIĆ DUŠAN
+TOMOVIĆ MITAR
+TOMOVIĆ RADOMIR
+TOMOVIĆ RADOSLAV
+TOMOVIĆ STOJANKA
+TOMOVIĆ TOMO
+TOMOVIĆ VASILIJE
+TOMOVIĆ ZORAN
+TOMOVIĆ ZORICA
+TONČEV IVAN
+TONDOLO SMILJA
+TONIĆ ŽIKICA
+TONIĆ RUŽICA
+TONIĆ STOJIMEN
+TONKOVIĆ JOCA
+TONKOVIĆ JOSIP
+TONKOVIĆ MILAN
+TONKOVIĆ MILAN
+TONTE FRIĐEŠ
+TONTIĆ ĐORĐE
+TONTIĆ DUŠAN
+TOPALOV DUŠAN
+TOPALOV GAVRA DIPL ING
+TOPALOV JELICA
+TOPALOV MELANIJA
+TOPALOV MELANIJA
+TOPALOV MIHAJLO
+TOPALOV MILENA
+TOPALOV MILOŠ
+TOPALOV MILORAD
+TOPALOV NADA
+TOPALOV PETAR
+TOPALOV SOFIJA
+TOPALOV SPASOJE
+TOPALOV STANISLAVA
+TOPALOV STEVAN
+TOPALOV STEVAN
+TOPALOV STEVAN
+TOPALOV SVETOZAR
+TOPALOV VASILIJE
+TOPALOV VERA
+TOPALOVIĆ BOŽO
+TOPALOVIĆ DUŠAN
+TOPALOVIĆ DUKATINKA
+TOPALOVIĆ EMILIJA
+TOPALOVIĆ JELENA
+TOPALOVIĆ JULIJE
+TOPALOVIĆ MIHAJLO
+TOPALOVIĆ MILAN
+TOPALOVIĆ MIRKO
+TOPALOVIĆ NEVENKA
+TOPALOVIĆ RADOJICA
+TOPALOVIĆ STANIJA
+TOPALOVIĆ VLAJKO
+TOPALSKI DANILO
+TOPALSKI DUŠANKA
+TOPALSKI-FIŠTEŠ NADA
+TOPALSKI MILENA
+TOPALSKI ZORAN
+TOPAR MARIJA
+TOPIĆ ČEDO
+TOPIĆ ĐURO
+TOPIĆ ANTO
+TOPIĆ CVIJA
+TOPIĆ DANICA
+TOPIĆ DANICA
+TOPIĆ DRAGAN
+TOPIĆ DRAGAN
+TOPIĆ ILIJA
+TOPIĆ JOVAN
+TOPIĆ JOVAN
+TOPIĆ LEON
+TOPIĆ LJUBO
+TOPIĆ MARIJA
+TOPIĆ MILADINKA
+TOPIĆ MILAN
+TOPIĆ MILIVOJE
+TOPIĆ MILIVOJ
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILOVAN
+TOPIĆ MIRKO
+TOPIĆ MITAR
+TOPIĆ NATALIJA
+TOPIĆ NEĐO
+TOPIĆ NIKO
+TOPIĆ PETAR
+TOPIĆ RATKO
+TOPIĆ SRETEN
+TOPIĆ STEVAN
+TOPIĆ TATJANA
+TOPIĆ VOJIN
+TOPIĆ VOJISLAV
+TOPKA ALEKSANDAR
+TOPKA ALEKSANDAR
+TOPLAK IMRE
+TOPLICA ABEDIN
+TOPLICA GANI
+TOPLICA NEĐMEDIN
+TOPLICA RAMADAN
+TOPLICA ZEĆIR
+TOPLICA ZENIJA
+TOPO ANTONIJA
+TOPO LJUBOMIR
+TOPO NENAD
+TOPOLČEVIĆ JOVAN
+TOPOLAC RADIVOJ DR LEKAR
+TOPOLIĆ ĐURA
+TOPOLIĆ DUŠAN
+TOPOLIĆ PEJA
+TOPOLJANIN VLADISLAVA
+TOPOLKOVIĆ VLADIMIR
+TOPOLOVAČKI RADOVAN
+TOPOLOVAČKI VUKOSAVA
+TOPREK SIMO
+TORĐANSKI ALEKSANDAR
+TORBAROV DUŠAN
+TORBICA ALEKSA
+TORBICA BORISLAV
+TORBICA DUŠAN
+TORBICA DUŠAN
+TORBICA ILIJA
+TORBICA JELKA
+TORBICA JULKA
+TORBICA MARIJA
+TORBICA MILOŠ
+TORBICA MIROSLAV
+TORBICA NADA
+TORBICA RADOSLAV
+TORBICA VERICA
+TORDA JANKO
+TORDAI ILONA
+TORDAI MARIJA
+TORDAI SVETLANA
+TORDAJ MIŠKO
+TORDAJI JANKO
+TORER ĐURA
+TORMA GEZA
+TORMA JOSIP
+TORMA JOVAN
+TORMA MARGITA
+TORMA STEVAN
+TORMA VILIM
+TORMAŠI ĐERĐ
+TORMAŠI JANOŠ
+TORMAŠI SMILJKA
+TORMAŠI STEVAN
+TORMOŠI JOŽEF
+TORNJANSKI ŽARKO
+TORNJANSKI BORISLAV
+TORNJANSKI BRANISLAV
+TORNJANSKI JELKA
+TORNJANSKI SVETISLAV
+TOROK ČABA
+TOROMAN BRANISLAV
+TOROMAN NEĐELJKO
+TOROMAN RADISAV
+TOROMAN RADMILA
+TOROMAN RADOJICA
+TOROVIĆ TRIPO
+TORTIĆ ANDRIJA
+TORTIĆ JOSIP
+TORTIĆ MIHAJLO
+TORTIĆ STEVAN
+TORTIĆ VERA
+TOSMAN JOSIP
+TOSUNOVIĆ JELISAVETA
+TOSUNOVIĆ MARIJA
+TOSUNOVIĆ VLADIMIR
+TOT ŠANDOR
+TOT ŠANDOR
+TOT ŠANDOR
+TOT AMALIJA
+TOT ANA
+TOT ANA
+TOT ANDRAŠ
+TOT ANDRIJA
+TOT ANDRIJA
+TOT ANICA
+TOT ANTAL DIPL ING
+TOT ANTONIJA
+TOT ARPAD
+TOT-ARVAI ANTAL
+TOT-ARVAI JANOŠ
+TOT-ARVAI JANOŠ
+TOT-BAGI IMRE
+TOT-BAGI JANOŠ
+TOT-BAGI MARIJA
+TOT BALINT
+TOT BERTA
+TOT-BOJNIK DEZIDER DIPL ING
+TOT BORA
+TOT DEŽE
+TOT DUŠANKA
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FRANJA
+TOT FRANJA
+TOT FRANJA
+TOT GABOR
+TOT GEZA
+TOT-HORTI ŠANDOR
+TOT IŠTVAN
+TOT IŠTVAN
+TOT IŠTVAN
+TOT IBOLJA DR
+TOT ILONA
+TOT ILONA
+TOT ILONA
+TOT IMRE
+TOT IRENA
+TOT IRENA
+TOT IVAN
+TOT JANOŠ
+TOT JANOŠ
+TOT JANOŠ
+TOT JELENA
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOSIP
+TOT JOVANKA
+TOT JOVAN
+TOT JULIJANA
+TOT JULIJANA
+TOT JULIJA
+TOT-KAŠA BLAŽ
+TOT KAROLJ
+TOT KAROLJ
+TOT KATARINA
+TOT KATICA
+TOT KOVILJKA
+TOT LAJOŠ
+TOT LAJOŠ
+TOT LASLO DR
+TOT LASLO
+TOT LASLO
+TOT LASLO
+TOT LIVIJA
+TOT MAGDOLNA
+TOT MARGITA
+TOT MARGITA
+TOT MARIJA
+TOT MARIJA
+TOT MARIJA
+TOT MARIJA
+TOT MIHALJ
+TOT MIHALJ
+TOT MIKLOŠ
+TOT MILANKA
+TOT MILKA
+TOT MIROSLAV
+TOT NEBOJŠA
+TOT OLGA
+TOT PALIKA
+TOT PAL
+TOT PAL
+TOT PAL
+TOT PAVLE
+TOT ROZALIJA
+TOT ROZALIJA
+TOT SILVESTER
+TOT STEVAN
+TOT STEVAN
+TOT STEVAN
+TOT STJEPAN
+TOT TEREZA
+TOT TEREZA
+TOT TIBOR
+TOT TOMISLAV
+TOT VALERIJA
+TOT VLADIMIR
+TOT VLADISLAV
+TOT ZITA
+TOT ZLATA
+TOT ZOLTAN
+TOT ZORA
+TOTARVAI MARIJA
+TOTH SILVESTER
+TOTIĆ SVETOZAR
+TOTOVIĆ JOVANKA
+TOTOVIĆ MILAN
+TOVARLOŽA DUŠANKA
+TOVERNIĆ ZORA
+TOVILOVIĆ SVETLANA
+TOVILOVIĆ ZORAN
+TOVITOVIĆ NIKOLA
+TOVITOVIĆ SLOBODAN
+TOVJANIN BILJANA
+TOVLJANIĆ DUŠAN
+TOVLJANIĆ SAVA
+TRAŽI PAL
+TRABAK KATARINA
+TRAILOVIĆ NADA
+TRAILOVIĆ SELIMIR
+TRAILOVIĆ VOJISLAV
+TRAJČEVIĆ LEPOSAVA
+TRAJČEVSKA ANITA
+TRAJANOVSKI LJUBICA
+TRAJANOVSKI LJUBO
+TRAJANOVSKI MOJSO
+TRAJANOVSKI TRAJAN
+TRAJBAR ADOLF
+TRAJBAR ZVONIMIR
+TRAJER LADISLAV DR
+TRAJER ROBERT
+TRAJKOVIĆ BOŽIDAR
+TRAJKOVIĆ BRANIMIR
+TRAJKOVIĆ BRANISLAV
+TRAJKOVIĆ BRANKO
+TRAJKOVIĆ DIMITRIJE
+TRAJKOVIĆ GLIGORIJE
+TRAJKOVIĆ MILAN
+TRAJKOVIĆ MILORAD
+TRAJKOVIĆ NADA
+TRAJKOVIĆ NAJDAN
+TRAJKOVIĆ RUŽICA
+TRAJKOVIĆ SLOBODAN
+TRAJKOVIĆ STOJADIN
+TRAJKOVSKI DIMITRIJE
+TRAJKOVSKI METODIJE
+TRAJKOVSKI PANTA
+TRAKILOVIĆ VLADA
+TRALJIĆ IVAN
+TRANDAFIR VASILIJE
+TRANKOLOVIĆ CVETA
+TRANKULOV JOŽEF
+TRAUM ARANKA
+TRAVANJ JOVANKA
+TRAVAR ĐURO
+TRAVAR LJUBIŠA
+TRAVAR MILOSAV
+TRAVICA MILAN
+TRAVICA MILE
+TRAVICA NIKOLA
+TRAVICA RADE
+TRBANOS ŽIVA
+TRBIĆ BRANISLAV
+TRBIĆ LJUBIŠA
+TRBIĆ MILADIN
+TRBIĆ MIROSLAV
+TRBIĆ TAMARA
+TRBIĆ VLADIMIR
+TRBOJEVIĆ ĐORĐE
+TRBOJEVIĆ ĐURAĐ
+TRBOJEVIĆ BOGOLJUB
+TRBOJEVIĆ BRANKO
+TRBOJEVIĆ DRAGICA
+TRBOJEVIĆ GAVRA
+TRBOJEVIĆ IDA
+TRBOJEVIĆ ILIJA
+TRBOJEVIĆ JOVAN
+TRBOJEVIĆ LAZA
+TRBOJEVIĆ MARICA
+TRBOJEVIĆ MILE
+TRBOJEVIĆ MILICA
+TRBOJEVIĆ NIKOLA
+TRBOJEVIĆ NIKOLA
+TRBOJEVIĆ STEVAN
+TRBOLJEVAC DRAGOSLAV
+TRBOVIĆ MIHAJLO DIPL PRAVNIK
+TRBOVIĆ MILAN
+TRBOVIĆ MILAN
+TRBOVIĆ VESNA
+TREŠNJIĆ ALEKSANDRA
+TREŠNJIĆ JOVAN
+TREŠNJIĆ STEVAN
+TREĆAKOV STOJAN
+TREBATICKI ALEKSANDAR
+TREBATICKI ALEKSANDAR
+TREBATICKI JUSTINA
+TREBATICKI MARIJA
+TREBIČNIK-VUČIĆ OLGA
+TREBOVAC MILE
+TRENČEVSKI NADEŽDA
+TREPANIĆ MAHMUT
+TRESIGLAVIĆ KATICA
+TRESIGLAVIĆ MILAN
+TRESIGLAVIĆ SLAVKO
+TRESIGLAVIĆ STEVAN
+TRESIGLAVIĆ VASA
+TRESIGLAVIĆ VASA
+TRESKIĆ ZDRAVKO
+TRGALA ĐURA
+TRGO NEVENKA
+TRIČKOVIĆ ANKA
+TRIČKOVIĆ JULKA
+TRIČKOVIĆ MIODRAG
+TRIČKOVIĆ SINIŠA
+TRIČKOVIĆ VERICA
+TRIŠIĆ HRANISLAV
+TRIŠIĆ-ILIĆ SVETLANA
+TRIŠIĆ MLADEN
+TRIFKOVIĆ JOVICA
+TRIFKOVIĆ KUZMAN
+TRIFKOVIĆ LJUBICA
+TRIFKOVIĆ MARKO
+TRIFKOVIĆ MILADIN
+TRIFKOVIĆ MILAN
+TRIFKOVIĆ MILAN
+TRIFKOVIĆ MILISAV
+TRIFKOVIĆ MIROSLAVA
+TRIFKOVIĆ NEDELJKO
+TRIFKOVIĆ SRĐA DR
+TRIFKOVIĆ VLADIMIR
+TRIFKOVIĆ VOJISLAV
+TRIFU DORU
+TRIFUNČEVIĆ MARIJA
+TRIFUNČEVIĆ MILOŠ
+TRIFUNJAGIĆ SPASOJE
+TRIFUNJAGIĆ SVETISLAV
+TRIFUNOV DANILO
+TRIFUNOV JOSIF
+TRIFUNOV MIODRAG
+TRIFUNOV RADMILA
+TRIFUNOVIĆ ŽIKICA
+TRIFUNOVIĆ ŽIVKA
+TRIFUNOVIĆ BOŠKO
+TRIFUNOVIĆ DANKA
+TRIFUNOVIĆ DRAGAN
+TRIFUNOVIĆ DRAGOMIR
+TRIFUNOVIĆ ILINKA
+TRIFUNOVIĆ JELENA
+TRIFUNOVIĆ JOVAN
+TRIFUNOVIĆ JOVAN
+TRIFUNOVIĆ MAKSIM
+TRIFUNOVIĆ MILISAV
+TRIFUNOVIĆ MILORAD DIPL ING
+TRIFUNOVIĆ MIRJANA
+TRIFUNOVIĆ MIRKO
+TRIFUNOVIĆ NADA
+TRIFUNOVIĆ NADEŽDA
+TRIFUNOVIĆ NEGOVANKA
+TRIFUNOVIĆ OLGA
+TRIFUNOVIĆ PAVLE
+TRIFUNOVIĆ PETAR
+TRIFUNOVIĆ PETAR
+TRIFUNOVIĆ RADIVOJ
+TRIFUNOVIĆ RADMILA
+TRIFUNOVIĆ RADOMIR DIPL PRAVNIK
+TRIFUNOVIĆ RUŽICA
+TRIFUNOVIĆ SLAVICA
+TRIFUNOVIĆ SLOBODAN DR
+TRIFUNOVIĆ SLOBODAN
+TRIFUNOVIĆ SOFIJA
+TRIFUNOVIĆ STANA
+TRIFUNOVIĆ SVETISLAV DR
+TRIFUNOVIĆ SVETOMIR
+TRIFUNOVIĆ TRIFUN
+TRIFUNOVIĆ VASA
+TRIFUNOVIĆ VERA
+TRIFUNOVIĆ VLADAN
+TRIFUNOVIĆ VLADIMIR
+TRIFUNOVIĆ VLADIMIR
+TRIFUNOVIĆ VOJISLAV
+TRIFUNOVIĆ VUKOSAVA
+TRIFUNOVIĆ VUKOSAV
+TRIKIĆ DRAGICA
+TRIKIĆ MIRKO
+TRIKIĆ ROSA
+TRIKIĆ SVETOZAR
+TRIKIĆ VLADIMIR
+TRIPKOVIĆ MILAN
+TRIPKOVIĆ SLOBODAN
+TRIPOLSKI MARIJA
+TRIPUNOVIĆ ĐORĐIJA
+TRIPUNOVIĆ BLAŽO
+TRIPUNOVIĆ DRAGOMIR
+TRIS JAKOB
+TRIVANOVIĆ DRAGAN
+TRIVANOVIĆ RADE
+TRIVANOVIĆ STEVAN
+TRIVANOVIĆ VERA
+TRIVIĆ BORIS
+TRIVIĆ BRANISLAV
+TRIVIĆ DOBRIVOJE
+TRIVIĆ DUŠAN
+TRIVIĆ JOVAN
+TRIVIĆ SVETLANA
+TRIVUNČIĆ MIRA
+TRIVUNDŽA MILOŠ
+TRIVUNDŽA NENAD
+TRIVUNIĆ BOGOLJUB
+TRIVUNIĆ MIROSLAV
+TRIVUNIĆ RANKO
+TRIVUNOVIĆ MLADENKO
+TRIVUNOVIĆ SIMO
+TRIVUNOVIĆ TIHOMIR
+TRIZLIĆ SLAVKO
+TRKLJA GOJKO
+TRKLJA MIRKO
+TRKULJA ŽIVORAD
+TRKULJA ANA
+TRKULJA BOŠKO
+TRKULJA BORISLAV
+TRKULJA BRANKO
+TRKULJA DRAGAN
+TRKULJA DRAGAN
+TRKULJA ESTER
+TRKULJA GOJKO
+TRKULJA GROZDA
+TRKULJA JOVAN
+TRKULJA JULKA
+TRKULJA MARINKO
+TRKULJA MILAN
+TRKULJA MILORAD
+TRKULJA MIODRAG
+TRKULJA MIODRAG
+TRKULJA NEDELJKO
+TRKULJA NIKOLA
+TRKULJA NOVAK
+TRKULJA NOVAK
+TRKULJA PETAR
+TRKULJA RANKO
+TRKULJA SLAVKO
+TRKULJA SOFIJA
+TRKULJA SONJA
+TRKULJA STEVAN
+TRKULJA STOJANKA
+TRKULJA VLADISLAVA
+TRMČIĆ RADOSLAV
+TRNČIĆ LAZO
+TRNAVAC MILAN
+TRNIĆ RADMILA
+TRNIĆ VERA
+TRNINIĆ ŽIVAN
+TRNINIĆ ŽIVOJIN
+TRNINIĆ ĐORĐE
+TRNINIĆ ĐURA
+TRNINIĆ BOGDAN
+TRNINIĆ BOJA
+TRNINIĆ BORIVOJ
+TRNINIĆ BOSILJKA
+TRNINIĆ DOBRIVOJ
+TRNINIĆ DRAGAN
+TRNINIĆ DRAGAN
+TRNINIĆ DUŠAN
+TRNINIĆ MARA
+TRNINIĆ MARIJA
+TRNINIĆ MIRKO
+TRNINIĆ MIRKO
+TRNINIĆ MIROSLAV
+TRNINIĆ MOMČILO
+TRNINIĆ OLIVERA
+TRNINIĆ RADIVOJ
+TRNINIĆ RADOJKA
+TRNINIĆ RADOVAN
+TRNINIĆ STEVA
+TRNINIĆ VLADIMIR
+TRNJAKOV DUŠAN
+TRNOVAC NADA
+TROČA KORNEL
+TROŠELJAC MATO
+TROŠKIN SAVETA
+TROŠKIN TAMARA
+TROJANOV EDVARD
+TROJANOV MARIJA
+TROJANOV ROMAN
+TROJKOVIĆ ILONA
+TROMLER LASLO
+TRPČEVIĆ MIROSLAV
+TRPČEVSKI TOMČE
+TRPINAC JELENA
+TRPKA PAVLE
+TRPKA PAVLE
+TRPOVSKI VASILJ
+TRSTENJAK FRANJA
+TRTIĆ SLAVKO
+TRUŠNOVEC IVAN
+TRUBARAC GABRIJELA
+TRUDA ALIJA
+TRUDIĆ IVAN
+TRUJIĆ DUŠICA
+TRUJIĆ MILOŠ VETERINAR
+TRUMBIĆ VEDRAN
+TRUMIĆ SOFIJA
+TRUMIĆ VERA
+TUČEV ŽIVANKA
+TUŠEV ŽIVKO
+TUŠJAK JAN
+TUŠJAK JURAJ
+TUŠJAK MILOŠ
+TUŠNEK OTILIJA
+TUŠNJAK ANA
+TUBIĆ ŽIVAN
+TUBIĆ ALEKSANDAR
+TUBIĆ BRANISLAV
+TUBIĆ DRAGUTIN
+TUBIĆ DUŠAN
+TUBIĆ DUŠAN
+TUBIĆ JUGOSLAV
+TUBIĆ LEPOSAVA
+TUBIĆ MILAN
+TUBIĆ MILENKO
+TUBIĆ MILIVOJ
+TUBIĆ MILOŠ
+TUBIĆ MILOJKO
+TUBIĆ MILORAD
+TUBIĆ NIKOLA
+TUBIĆ NOVAK
+TUBIĆ OLGA
+TUBIĆ PETAR
+TUBIĆ RADA
+TUBIĆ RADMILA
+TUBIĆ RADOVAN
+TUBIĆ SAVA
+TUBIĆ STANKO
+TUBIĆ SVETOZAR DR
+TUBIĆ VERA
+TUBIĆ VLADIMIR
+TUBIĆ ZORAN
+TUBIN KATARINA
+TUBIN STOJAN DIPL ING
+TUBIN STOJA
+TUBIN TOMISLAV
+TUBIN ZORKA
+TUCAKOV ĐORĐE
+TUCAKOV ĐORĐE
+TUCAKOV BOŠKO
+TUCAKOV BOGDANKA
+TUCAKOV BORA
+TUCAKOV BRANKO
+TUCAKOV DARINKA
+TUCAKOV DRAGAN
+TUCAKOV KAMENKO
+TUCAKOV LATINKA
+TUCAKOV MARIJA
+TUCAKOV MARKO
+TUCAKOV MILAN
+TUCAKOV MILAN
+TUCAKOV MILICA
+TUCAKOV NOVAK
+TUCAKOV RADIVOJ
+TUCAKOV RADOJKA
+TUCAKOV RADOSLAV
+TUCAKOV RAJKO
+TUCAKOV SINIŠA
+TUCAKOV TANASIJE
+TUCAKOV VERA
+TUCAKOV VLADIMIR
+TUCAKOV ZORANA
+TUCAKOV ZORA
+TUCAKOVIĆ ĐORĐE
+TUCAKOVIĆ DANICA
+TUCAKOVIĆ DESANKA
+TUCAKOVIĆ JOVAN
+TUCAKOVIĆ MILOŠ
+TUCAKOVIĆ RADOSLAV
+TUCIĆ ĐORĐE
+TUCIĆ BRANISLAV
+TUCIĆ LAZAR
+TUCIĆ MILENKO
+TUCIĆ MIROSLAVA
+TUCIĆ MIROSLAV
+TUCIĆ VUJICA
+TUCOVIĆ ZORA
+TUFEGDŽIĆ MILEN
+TUKAČ MIHAJLO
+TUKANIĆ ENDRE
+TUKANIĆ IRENA
+TUKAR FADIL
+TUKAR MIRJANA
+TUKIĆ PETAR
+TUKIĆ STOJANKA
+TULAĆ JOVICA
+TULENČIĆ KATICA
+TULENČIĆ RADOSLAVA
+TULENČIĆ RADOSLAV
+TULIĆ BORKO
+TULIĆ NEVENKO
+TULUBEC ĐORĐE
+TULUBEC MILKA
+TULUBEC VASILIJE
+TUMARIĆ BRANISLAV
+TUMARIĆ CVETIN
+TUMARIĆ MILORAD
+TUMBAS AGNEZA
+TUMBAS IVAN
+TUMBAS LJUDEVIT
+TUMIN DUŠANKA
+TUNGUZ JELISAVETA
+TUNIĆ RADOJICA
+TUNIĆ RAJKO
+TUNIĆ SPASOJE
+TUNIĆ STEVAN
+TUNTEV MARIJA
+TUPANČEVSKI NIKOLA
+TUPEC ZVONIMIR
+TUPIĆ NEVENKA
+TUR MIHAJLO
+TUR SUZANA
+TURČAN JAN
+TURČAN JAN
+TURČAN JURAJ
+TURČAN VLADIMIR SUDIJA
+TURČIĆ MIROSLAVA
+TURŠIĆ JELENA
+TURŠIJAN VASA
+TURAI BELA
+TURAI MIHAJLO
+TURAI TEREZA
+TURAJLIĆ MILE
+TURAJLIJA BOŽICA
+TURAJLIJA MIROSLAV
+TURAN ĐURA
+TURAN LJUBICA
+TURANSKI ĐORĐE
+TURANSKI FERENC
+TURANSKI GEZA
+TURANSKI JANOŠ
+TURANSKI JOSIP
+TURANSKI LASLO
+TURANSKI MARICA
+TURANSKI MARIJA
+TURANSKI MATIJA
+TURANSKI PETAR
+TURANSKI STEVAN
+TURI ARPAD
+TURI TIBOR
+TURIĆ LUKA
+TURIĆ MARINKO
+TURIKA JOSIM
+TURINSKI DUŠAN
+TURINSKI EDITA
+TURINSKI MILETA
+TURINSKI MIOMIR
+TURK MIRKO
+TURK NADA
+TURKALJ KATA
+TURKOVIĆ HAKIJA
+TURKOVIĆ MIRKO
+TURKOVIĆ MITAR
+TURKOVIĆ PETAR
+TURKOVIĆ RAFIT
+TURKOVIĆ VLADIMIR
+TURKOVIĆ ZINKA
+TURKULOV ŽAKLINA
+TURKULOV DUŠAN
+TURKULOV JOVAN
+TURLAKOV CVETAN
+TURNAJ SLAVOLJUB DIPL ING
+TURO MIHALJ
+TUROMAN MILORAD
+TUROPOLJAC MIĆO
+TURUDIĆ MILAN
+TURUDIĆ MIODRAG
+TURUDIJA MILORAD
+TURUKALO MIODRAG
+TURUKALO RADMILA
+TURUKALO ZORA
+TURZO JELISAVETA
+TURZO KARLO
+TUTIĆ ILIJA
+TUTNILOVIĆ NADA
+TUTNJEVIĆ BOŽENKA
+TUTNJEVIĆ BOGDAN
+TUTNJEVIĆ JOVAN
+TUTNJEVIĆ MIROSLAV
+TUTNJEVIĆ RADOJKA
+TUTOROV DESANČIĆ
+TUTOROV JULKICA
+TUTOROV STANA
+TUTOROV STEVAN
+TUTULUGDŽIJA MARA
+TUVEDŽIĆ DRAGANA
+TUVIĆ SLOBODAN
+TVRTKOVIĆ MARIN DR LEKAR
+UŠĆEBRKA LAZAR
+UŠĆEBRKA MILENKO
+UŠĆEBRKA ZLATO
+UŠĆUMLIĆ MILENKO
+UŠĆUMLIĆ NEŠKO
+UŠĆUMLIĆ VUKICA
+UŠAN JANEZ
+UŠJAK JANKO
+UŠJAK JARMILA
+UŠJAK VLASTA
+UŠLJEBRKA MILORAD
+UŠTIPAK JELA
+UĆUKALO SIMO
+UŽAR DESANKA
+UŽAR KATICA
+UŽIČANIN ĐORĐE
+UBAVČIĆ SAVA
+UBAVIĆ DARINKA
+UBAVIĆ LJUBICA
+UBAVIĆ MOMČILO DR
+UBIPARIP ČEDO
+UBIPARIP ŽIVKO
+UBIPARIP GOJKO
+UBIPARIP ILE
+UBIPARIP JANJA
+UBIPARIP JOVO
+UBIPARIP MARINKO
+UBIPARIP MARKO
+UBIPARIP MILAN
+UBIPARIP MIRKO
+UBIPARIP MOMIR
+UBIPARIP PAVLE
+UBIPARIP SLAVKO
+UBIPARIP TODE
+UBIPARIP VOJKO
+UBIPARIP ZDRAVKO
+UBIPARIP ZORAN
+UBORKA ŠANDOR
+UBORKA MARTON
+UBORKA STEVKA
+UBORNJI ŠANDOR
+UBORNJI ANDRAŠ
+UBOVIĆ EVA
+UBOVIĆ JEFTA
+UBOVIĆ JOVICA
+UBOVIĆ MARKO
+UBOVIĆ MILOŠ
+UBOVIĆ PETRA
+UBOVIĆ RAJKO
+UCAJ VLADIMIR
+UDICKI PAJA
+UDICKI SLAVICA
+UDICKI SREDOJE
+UDOVIČIĆ BOBAN
+UDOVIČIĆ BRANKO
+UDOVIČIĆ IVAN
+UDOVIČIĆ MOMIR
+UDOVIČIĆ RADOSLAV
+UDOVIČIĆ STEVAN
+UDOVIČKI BRANKO LEKAR
+UDOVIČKI JULKA
+UDOVIČKI OLGICA DR
+UDOVIČKI SLOBODAN
+UDOVIČKI SVETOZAR
+UDRIJA PETAR
+UDVARDI KARLO
+UGARČINA BORISLAV
+UGARČINA DRAGAN
+UGARČINA ILIJA
+UGARAK ĐORĐE
+UGARAK BOŽO
+UGARAK DRAGAN
+UGARAK DUŠAN
+UGARAK PETAR
+UGARKOVIĆ DARINKA
+UGARKOVIĆ JELA
+UGARKOVIĆ KATICA
+UGARKOVIĆ STEVAN
+UGLJEŠIĆ BOŠKO
+UGLJEŠIĆ HILDA
+UGRČIĆ VUKICA
+UGREŠIĆ PETAR
+UGREM MARIJA
+UGREM RADOVAN
+UGREN MILORAD
+UGREN PETAR
+UGRENIĆ LASLO
+UGRENIĆ MIHALJ
+UGRENOVIĆ VUČIĆ
+UGRENOVIĆ VUJADIN
+UGRICA DRAGAN
+UGRICA SREĆKO
+UGRIN ILIJA
+UGRIN MILOVAN
+UGRINČIĆ DANILKA
+UGRINČIĆ DOBRILA
+UGRINČIĆ MILIVOJ
+UGRINČIĆ MIRJANA DR
+UGRINČIĆ STEVAN
+UGRINČIĆ VLADA DIPL ING
+UGRINOV ĐURICA
+UGRINOV DOBRILA
+UGRINOV MILICA
+UGRINOV NADA
+UGRNOV VLADIMIR
+UGRNOV ZORICA
+UHER VERA
+UHLARIK ELIZABETA
+UHLARIK LADISLAV
+UHLARIK STEVAN
+UHOR PETAR
+UJ MARTON
+UJČIĆ BLAŽ
+UJČIĆ TOMA
+UJDILOVIĆ MILORAD
+UJFALUŠ VELIMIR
+UJFALUŠI ĐURA
+UJFALUŠI JANKO
+UJFALUŠI JULIJAN
+UJFALUŠI LJUBOMIR
+UJFALUŠI MIROSLAV
+UJFALUŠI NIKOLA
+UJFALUŠI SILVESTER
+UJFALUŠI VLADIMIR
+UJFELJAN MILAN
+UJHAZI BORIŠKA
+UJHAZI IVAN
+UJHAZI JELISAVETA
+UJHAZI LADISLAV
+UJHAZI MIRKO
+UJHELJI JOVANKA
+UJHELJI MIHALJ
+UJLAKOŠ KARLO
+UJVARI GABOR
+UJVARI KATALIN
+UKAČEK VERKA
+UKROPINA ČEDA
+UKROPINA DESANKA
+UKROPINA JELENA
+UKROPINA JOVANKA
+UKROPINA JOVAN
+UKROPINA MILOVAN
+UKROPINA NEBOJŠA
+UKROPINA PANTO
+UKROPINA TOMISLAV
+ULEMEK ĐURO
+ULIĆ ŽELJKA
+ULIĆ ĐORĐE
+ULIĆ ALEKSANDAR
+ULIĆ DOBROSLAV
+ULIĆ MILAN
+ULJAREVIĆ PERO
+UMEK MARGITA
+UMEK MIKLOŠ
+UMIČEVIĆ PERA
+UMIĆEVIĆ ŽELJKO
+UMIĆEVIĆ GORDANA
+UMIĆEVIĆ MIRKO
+UMIĆEVIĆ MLADEN
+UNČANIN BOJAN
+UNČANIN DUŠAN
+UNGAR TIHOMIR
+UNGUROVIĆ JELENA
+UNKOVIĆ ANĐELKO
+UNKOVIĆ MLADEN
+URAČ ŠANDOR
+URAČ ALEKSANDAR
+URAČ DANICA
+URAČ GIZELA
+URAČ IŠTVAN
+URAČ ROZALIJA
+URBAN ĐERĐ
+URBAN ĐORĐE
+URBAN ANA
+URBAN HORVAT
+URBAN IŠTVAN
+URBAN JANOŠ
+URBAN JASNA
+URBAN MIHALJ
+URBAN MIHALJ
+URBAN PAVEL
+URBAN STANISLAV
+URBAN STEVAN
+URBAN VIKTORIJA
+URBAN VLADISLAV
+URBANČIK PIROŠKA
+URBANČIK SILVIA
+URBANOVIĆ STEVAN
+URDAREVIĆ STANIMIR
+UREKE ĐORĐE
+URI ČABA
+URI ALEKSANDAR
+URI EVA
+URI GABOR
+URI KARLO
+URI LASLO
+URI PAJA
+URI STEVAN
+URI STEVAN
+URKIN LJUBICA
+URLIH MARIJA
+UROŠEV ŽIVAN
+UROŠEV BOJKA
+UROŠEV ILIJA
+UROŠEV JERICA
+UROŠEV MILENKO
+UROŠEV MIRJANA
+UROŠEV PAJA
+UROŠEV SOFIJA
+UROŠEV STOJAN
+UROŠEV VELINKA
+UROŠEVIĆ ŽIVAN
+UROŠEVIĆ ALEKSANDAR
+UROŠEVIĆ BOGDAN DIPL ING
+UROŠEVIĆ BORIVOJ
+UROŠEVIĆ BRANKA
+UROŠEVIĆ BRANKO
+UROŠEVIĆ DRAGIŠA
+UROŠEVIĆ DUŠAN
+UROŠEVIĆ IVAN
+UROŠEVIĆ LEONA
+UROŠEVIĆ LJILJANA
+UROŠEVIĆ LJUBICA
+UROŠEVIĆ MARKA
+UROŠEVIĆ MILOŠ
+UROŠEVIĆ MIRJANA
+UROŠEVIĆ NADA
+UROŠEVIĆ RUŽICA
+UROŠEVIĆ SRĐA
+UROŠEVIĆ STANISLAVA
+UROŠEVIĆ VIDOJKO
+UROŠEVIĆ VLADIMIR
+UROŠEVIĆ ZORICA
+URSIĆ VLADIMIR
+URSULESKU FLORIN
+URSULESKU JULIJAN
+USKOKOVIĆ BRANISLAV
+USKOKOVIĆ MILENKO
+USKOKOVIĆ MILOŠ
+USTIĆ ĐURA
+USTIĆ NIKOLA
+USTIĆ SIMA
+USTIĆ VOJKO
+UTAŠI ČABA
+UTJEŠANOVIĆ SIMO
+UTJEŠINOVIĆ DESANKA
+UTJEŠINOVIĆ LJILJANA
+UTJEŠINOVIĆ MILAN
+UTJEŠINOVIĆ VERA
+UTORNIK IVAN
+UTORNIK JOVAN
+UTORNIK KATICA
+UTORNIK LJUBICA
+UTORNIK MILOŠ
+UTORNIK-RADULOVIĆ MARIJA
+UTORNIK STEVAN
+UTORNIK SVETOZAR
+UTRŽAN BRANKO
+UTVIĆ KOSTA
+UTVIĆ PAVLE
+UTVIĆ VASA
+UTVIĆ-VUKAŠINOVIĆ DARA
+UVALIĆ ANGELINA
+UVALIĆ DUŠANKA
+UVALIĆ DUŠAN
+UVALIĆ DUŠKO
+UVALIĆ LAZAR
+UVALIĆ MELANIJA
+UVALIĆ RADOSLAV
+UVALIĆ STANISLAV
+UVALIĆ VASA
+UVERIĆ ĐURA
+UVERIĆ BRANKA
+UVERIĆ MILAN
+UVERIĆ MILOŠ
+UVERIĆ MILORAD
+UVERIĆ MIRJANA
+UVERIĆ NIKOLA
+UZAIR ALIJA
+UZEIRI MUAREM
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐURICA
+UZELAC ĐURO
+UZELAC ALEKSANDRA
+UZELAC ALEKSA
+UZELAC BISERKA
+UZELAC BOŠKO
+UZELAC BOGDAN
+UZELAC BOGDAN
+UZELAC BRANISLAV
+UZELAC BRANISLAV
+UZELAC BRANISLAV
+UZELAC BRANKO
+UZELAC CVETA
+UZELAC DARINKA
+UZELAC DESANKA
+UZELAC DRAGAN
+UZELAC DRAGAN
+UZELAC DRAGAN
+UZELAC DUŠANKA
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC EVA
+UZELAC GALINA
+UZELAC GORDANA
+UZELAC ILIJA
+UZELAC IVAN
+UZELAC JELENA
+UZELAC KOSTA
+UZELAC LAZAR
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MIHAJLO
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILE
+UZELAC MILICA
+UZELAC MILOŠ
+UZELAC MOMČILO
+UZELAC NIKOLA
+UZELAC NIKOLA
+UZELAC OLIVERA
+UZELAC RADMILA
+UZELAC RADOJKA
+UZELAC RENATA
+UZELAC SLAVKO
+UZELAC SLOBODAN
+UZELAC SLOBODAN
+UZELAC SOFIJA
+UZELAC SRĐAN
+UZELAC SRĐAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STOJAN
+UZELAC VERA
+UZELAC VUJO
+UZELAC ZLATKO
+UZELAC ZLATKO
+UZELAC ZLATKO
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZOROCKI IŠTVAN
+UZUNOVIĆ BRANISLAV
+UZUNOVIĆ LADISLAV
+UZUNOVIĆ MILORAD
+UZUNOVIĆ MITO
+UZUNOVIĆ NASUF
+UZUNOVIĆ RAJKO
+UZUROV OBRENIJA
+UZUROV RADMILA
+VAČIĆ ALEKSANDAR
+VAČIĆ ZORAN
+VAČIK JOŽEF
+VAŠ ATILA
+VAŠ JOSIP
+VAŠ PAVLE
+VAŠ VERA
+VAŠČIĆ BOŽIDAR
+VAŠAŠ MIKLOŠ
+VAŠAŠ OLGA
+VAŠADI FERENC
+VAŠADI JULIJANA
+VAŠADI VALERIJA
+VAŠALIĆ ANKA
+VAŠALIĆ MILOŠ
+VAŠALIĆ OBRAD
+VAŠALIĆ UROŠ
+VAŠTAG ĐORĐE
+VAŠTAG ANDRAŠ
+VAŠTAG IŠTVAN
+VAŠTAG IŠTVAN
+VAŠTAG JASMINKA
+VAŠTAG MARGITA
+VAŠTAG MARIJA
+VAŠTAG MIHALJ
+VAŠTAG OLGA
+VAŠTAG RUŽA
+VAŠTAG STOJAN
+VAŽIĆ DANICA
+VAŽIĆ JOVAN
+VAŽIĆ JULIJA
+VAŽIĆ MIRA
+VAŽIĆ SLAVICA
+VAŽIĆ VERICA
+VAŽIĆ VESELIN
+VAŽIĆ VLADIMIR
+VAŽONJI ANTAL
+VAŽONJI ROZALIJA
+VACI ŠIMON
+VACIĆ BLAGOJE
+VACIĆ VIDEN
+VACLAVIK MARIJA
+VADASKI CECILIJA
+VADASKI LJUBOMIR
+VADOC FRANJA
+VADOC IVICA
+VADOC JOSIP
+VAGIĆ ĐURO
+VAGNER ĐURA
+VAGNER ANDRIJA
+VAGNER JOSIP
+VAGNER KARLO
+VAGNER LASLO
+VAGNER MARIJA
+VAGNER OTILIJA
+VAGO IŠTVAN
+VAGO STEVAN
+VAGURIĆ ZDRAVKO
+VAJAGIĆ ANĐELKA
+VAJAGIĆ BOŠKO
+VAJAGIĆ GORDANA
+VAJAGIĆ MILAN
+VAJAGIĆ NIKOLA DR
+VAJAGIĆ NIKOLA
+VAJAGIĆ SAVO
+VAJAGIĆ SIMA
+VAJAGIĆ STOJAN
+VAJAGIĆ ZORICA
+VAJDA ŠANDOR
+VAJDA ŠANDOR
+VAJDA IRMA
+VAJDA LAJOŠ
+VAJDA LAJOŠ
+VAJDA TIBOR
+VAJDA TOMISLAV
+VAJDIĆ ŽIVKO
+VAJDIĆ IVAN
+VAJDIĆ JOVAN DR
+VAJDIĆ JOVAN DR
+VAJDIĆ MILICA
+VAJDIĆ MILICA
+VAJDIĆ NADA
+VAJDIĆ PETAR
+VAJDIĆ TIHOMIR
+VAJDL JOVAN
+VAJDL MIROSLAV
+VAJDLE JOLAN
+VAJLER ANDRIJA
+VAJNŠTAJN PETAR
+VAJNBERGER VLADIMIR
+VAJNBERGER ZLATKO
+VAJNBERGER ZVONIMIR
+VAJNGERTNER RADOJKA DIPL ECC
+VAJNHEPL MARIA
+VAJNHEPL OTMAR DIPL ING
+VAJOVIĆ VASILIJE
+VAJS ŠANDOR
+VAJS BRANKO
+VAJS KARLO
+VAJS KARLO
+VAJS MAGDA
+VAJS VERICA
+VAJSENBERG JOSIP
+VAJUKIĆ PANTELIJA
+VAKANJAC MILICA
+VAL ĐORĐE
+VAL ANDRIJA
+VAL EVA
+VAL ZOLTAN
+VALAH JANKO
+VALAN OSTOJA
+VALAN ZORAN
+VALDMA ARBO
+VALEK EMILIJA
+VALEK FRANJA
+VALENČIK PAVEL
+VALENČIK STEVAN
+VALENĆIK ANDRIJA
+VALENĆIK JAN
+VALENĆIK PAVLE
+VALENĆIK VLADIMIR
+VALENT ŽUŽANA
+VALENT JANKO
+VALENT JANKO
+VALENT LASLO
+VALENTA JASMINKA
+VALENTENJI JOSIP
+VALENTENJI JULIJANA
+VALENTIĆ IVAN
+VALENTIĆ VIKTOR
+VALENTIĆ VIKTOR
+VALENTIK NIKOLA
+VALENTIN IMRE
+VALENTIN JUCIKA
+VALENTIN STEVAN
+VALENTIROV STEVAN
+VALENTIROVIĆ LJUBOMIR
+VALENTOVIĆ JOSIP
+VALENTOVIĆ KARLO
+VALENTOVIĆ KARLO
+VALENTOVIĆ KARLO
+VALENTOVIĆ TIBOR
+VALIĆ GORAN
+VALIĆ SLAVKO
+VALIDŽIJA NIKOLA DIPL ING
+VALIHORA JOZEF
+VALIHORA KATICA
+VALKAI JOŽEF
+VALKO GAVRA
+VALO GORDANA
+VALO JOSIP
+VALO JOSIP
+VALO MIRKO
+VALO STEVAN
+VALOK ĐORĐE
+VALOK ĐURA
+VALOK RATOMIR
+VALTER DRAGINJA
+VALTER LJILJANA
+VALTER NORBERT
+VALTNER PETAR
+VALUŠEK JOVAN
+VALUŠEK KATICA
+VALUŠEK PAVLE
+VALUH BRANISLAV
+VALUH JANKO
+VALUH JANKO
+VALUH KARLO
+VALUH MIHAJLO
+VAMBAH VIKTORIJA
+VAMOŠER MIRJANA
+VAMOŠER PAVLE
+VAMPOVAC JOSIP
+VANĐEL MILAN
+VANDERER PAL
+VANDORI MARIJA
+VANIĆ DRAGUTIN
+VANIĆ KATICA
+VANIĆ LJUBICA
+VANJUR FRANJA
+VANJUR FRANJA
+VANJUR IŠTVAN DIPL ING
+VANJUR JOŽEF
+VANJUR JOSIP
+VANJUR KARLO
+VANJUR KARLO
+VANJUR MARIJA
+VANKO JAROSLAV
+VANOVIĆ SNEŽANA
+VAPA JOVANKA
+VAPA MILAN DR
+VAPA VERA
+VAPA ZORAN
+VAPENSKI IVAN
+VAPENSKI MARIJA
+VARŠANJI IRENA
+VARAĐANIN MILAN
+VARADI TIBOR DR PROF
+VARAGIĆ BOGDAN
+VARAGIĆ LJUBICA
+VARAGIĆ MARIJA
+VARAGIĆ MELANIJA
+VARAGIĆ MILICA
+VARAGIĆ VIĆENTIJE
+VARAJIĆ GORAN
+VARAJIĆ GORAN
+VARAVA EMILIJAN
+VARBAI LADISLAV
+VARCAR DESANKA
+VARDIĆ GAVRILO
+VARENIKA ĐOKA
+VARENIKA BRANISLAV
+VARENIKA RADOJKA
+VAREVAC DRAGAN
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA-ŠOMOĐI JANOŠ
+VARGA ŽARKO
+VARGA ĐERĐ
+VARGA ĐORĐE
+VARGA ĐORĐE
+VARGA ĐULA
+VARGA ĐURA
+VARGA ĐURA
+VARGA ALEKSANDAR
+VARGA ANA
+VARGA ANDRAŠ
+VARGA ANDRIJA
+VARGA ANDRIJA
+VARGA ANTON
+VARGA ARANKA
+VARGA BELA
+VARGA BELA
+VARGA BILJANA
+VARGA-BURAI ERŽEBET
+VARGA DRAGICA
+VARGA DUŠANKA
+VARGA ERŽIKA
+VARGA FERENC
+VARGA FERENC
+VARGA FERENC
+VARGA FRANJA
+VARGA FRANJA
+VARGA FRANJO
+VARGA FRANJO
+VARGA GABOR
+VARGA GIZELA
+VARGA HELENA
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA ILEŠ
+VARGA IMRE
+VARGA-IVAN ANGELINA
+VARGA JAKIM
+VARGA JAN DR
+VARGA JANOŠ
+VARGA JANOŠ
+VARGA JAROSLAV
+VARGA JELENA
+VARGA JELISAVETA
+VARGA JOŽEF
+VARGA JOŽEF
+VARGA JOŽEF
+VARGA JOSIPA
+VARGA JOSIP
+VARGA JOSIP
+VARGA JOVAN
+VARGA JULIJA
+VARGA KARLO
+VARGA KATARINA
+VARGA KATA
+VARGA-KLIŠANIĆ LJUBICA
+VARGA KORNELIJA
+VARGA KORNEL
+VARGA KOSANA
+VARGA LADISLAV
+VARGA LAJOŠ
+VARGA LAJOŠ
+VARGA LASLO
+VARGA LASLO
+VARGA LASLO
+VARGA LASLO
+VARGA LJUPKA
+VARGA MARGITA
+VARGA MARIJA
+VARGA MARIJA
+VARGA MARIJA
+VARGA MIHAJLO
+VARGA MIHAJLO
+VARGA MIHALJ
+VARGA MIRKO
+VARGA MIRON
+VARGA MIROSLAV
+VARGA NIKOLA
+VARGA OLGA
+VARGA PAL
+VARGA PAL
+VARGA PETAR
+VARGA PETAR
+VARGA PETER DIPL ING
+VARGA RASTISLAV
+VARGA ROZALIJA
+VARGA ROZALIJA
+VARGA SLAVICA
+VARGA STEVAN
+VARGA STEVAN
+VARGA STJEPAN
+VARGA TIBOR
+VARGA TIBOR
+VARGA VERA
+VARGA VERA
+VARGA VERONIKA
+VARGA VLADISLAV
+VARGA VLASTA
+VARGA ZOLTAN
+VARGA ZOLTAN
+VARGEC IVAN
+VARHOLIK ADAM
+VARIĆAK BOŽO
+VARIĆAK DARINKA
+VARJU LASLO
+VARJU MARIJA
+VARJU TEREZA
+VARKAŠ IVAN
+VARMAZ ISMET
+VARMEĐA ĐORĐE
+VARMUŽA MAĆAŠ
+VARNICA IVAN
+VARNICA PETAR
+VARNJU ANUŠKA
+VARNJU GIZELA
+VARNJU ILONA
+VARNOS MARTON
+VARNUS JOŽEF
+VAROŠČIĆ SPASENIJA
+VAROŠI GABRIELA
+VAROŠI JOVAN
+VAROŠI SILARD
+VASELEK ŠTEFAN
+VASELEK STEVAN
+VASELEK STEVAN
+VASELEK VASILJ
+VASIĆ ŽELJKO
+VASIĆ ŽIVKA
+VASIĆ ŽIVKO
+VASIĆ ŽIVKO
+VASIĆ ŽIVKO
+VASIĆ ĐOKA
+VASIĆ ĐORĐE
+VASIĆ ĐORĐE
+VASIĆ ALEKSANDAR
+VASIĆ ANICA
+VASIĆ ANKICA
+VASIĆ BOJANA
+VASIĆ BORISLAV
+VASIĆ BORIVOJ
+VASIĆ BRANKO
+VASIĆ CVETKO
+VASIĆ DARINKA
+VASIĆ DOBRIVOJ
+VASIĆ DRAGANA
+VASIĆ DRAGAN
+VASIĆ DRAGICA
+VASIĆ DRAGICA
+VASIĆ DRAGICA
+VASIĆ DRAGOLJUB
+VASIĆ DRAGOMIR
+VASIĆ DRAGOMIR
+VASIĆ DRAGOSLAV
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠICA
+VASIĆ DUŠKO NOVINAR
+VASIĆ DUBRAVKA
+VASIĆ ELENA
+VASIĆ GORAN
+VASIĆ GORDANA
+VASIĆ GORDANA
+VASIĆ GORDICA
+VASIĆ JAKOV
+VASIĆ JANA
+VASIĆ JANKO
+VASIĆ JELICA
+VASIĆ JOVO
+VASIĆ KATICA
+VASIĆ KOSTA
+VASIĆ KRISTINA
+VASIĆ LAZAR
+VASIĆ LJILJANA DR
+VASIĆ LJILJANA
+VASIĆ LJUBOMIR
+VASIĆ LUKA
+VASIĆ MAKSIM
+VASIĆ MARIJANA
+VASIĆ MARKO
+VASIĆ MIĆO
+VASIĆ MIHAILO
+VASIĆ MIHAJLO
+VASIĆ MIKA
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILENKO DR PRIMARIUS
+VASIĆ MILENKO
+VASIĆ MILENKO
+VASIĆ MILICA
+VASIĆ MILINKO
+VASIĆ MILOŠ
+VASIĆ MILOŠ
+VASIĆ MILOVAN
+VASIĆ MILOVAN
+VASIĆ MILUTIN
+VASIĆ MIODRAG
+VASIĆ MIRJANA
+VASIĆ MIRJANA
+VASIĆ MIRJANA
+VASIĆ MIROSLAVA
+VASIĆ NADA
+VASIĆ NADA
+VASIĆ NEDELJKO
+VASIĆ NEDELJKO
+VASIĆ NEDELJKO
+VASIĆ NIKOLA
+VASIĆ NOVAK
+VASIĆ NOVAK
+VASIĆ NOVAK
+VASIĆ OLGA
+VASIĆ OLGICA
+VASIĆ OSTOJA
+VASIĆ OSTOJA
+VASIĆ PAJA
+VASIĆ PERO
+VASIĆ PETAR
+VASIĆ PETAR
+VASIĆ-POPOVIĆ LJILJANA
+VASIĆ PRVOSLAV DIPL ING
+VASIĆ RADICA
+VASIĆ RADIVOJ
+VASIĆ RADOJE
+VASIĆ RADOSLAV
+VASIĆ RADOVAN
+VASIĆ RATKO
+VASIĆ RAVICA
+VASIĆ SAVA
+VASIĆ SAVA
+VASIĆ SAVA
+VASIĆ SEKULA
+VASIĆ SLAVICA
+VASIĆ SLAVKO
+VASIĆ SLAVKO
+VASIĆ SLOBODAN
+VASIĆ SLOBODAN
+VASIĆ SLOBODAN
+VASIĆ SNEŽANA
+VASIĆ SOFIJA
+VASIĆ SRETKO
+VASIĆ STANIŠA
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ SVETLANA
+VASIĆ SVETOZAR
+VASIĆ TIHOMIR
+VASIĆ TINKA
+VASIĆ TOŠA
+VASIĆ TOMISLAV
+VASIĆ VELIMIR
+VASIĆ VELIMIR
+VASIĆ VESELIN
+VASIĆ VIDA
+VASIĆ VLADIMIR DR LEKAR
+VASIĆ VLADIMIR
+VASIĆ VOJISLAV
+VASIĆ ZDRAVKO
+VASIĆ ZORAN
+VASIĆ ZORICA
+VASILČIN SLOBODAN
+VASILESKI BRANKO
+VASILIŠIN ANTON
+VASILIŠIN MILAN
+VASILIĆ BRANISLAV
+VASILIĆ DANICA
+VASILIĆ DRAGA
+VASILIĆ MILAN
+VASILIĆ MILENKO
+VASILIĆ MIRA
+VASILIĆ NIKOLA
+VASILIĆ RAJKO
+VASILIĆ STEVAN
+VASILIĆ TODE
+VASILIĆ VESNA
+VASILIĆ VOJIN DIPL ING
+VASILJČIN ŽIVKO
+VASILJEV ANA
+VASILJEV DEJAN
+VASILJEV DRAGOSLAV
+VASILJEV JELICA
+VASILJEV JOVAN
+VASILJEV JOVAN
+VASILJEV LJUBICA
+VASILJEV MARA
+VASILJEV MILORAD
+VASILJEV MIROLJUB
+VASILJEV MITA
+VASILJEV RADOVAN
+VASILJEV SPASOJE
+VASILJEV STANOJE
+VASILJEV TAMARA
+VASILJEV ZDRAVKO
+VASILJEVIĆ ŠARLOTA
+VASILJEVIĆ ŽIVOTA
+VASILJEVIĆ ĐORĐE
+VASILJEVIĆ ĐURA
+VASILJEVIĆ-AĆANSKI IVANA
+VASILJEVIĆ ANĐELKA
+VASILJEVIĆ ANDREJA
+VASILJEVIĆ CVETKO
+VASILJEVIĆ DANICA
+VASILJEVIĆ DRAGIŠA
+VASILJEVIĆ DUŠICA
+VASILJEVIĆ GLIGOR
+VASILJEVIĆ GOJAN
+VASILJEVIĆ GOJKO
+VASILJEVIĆ GROZDA
+VASILJEVIĆ JAVORKA
+VASILJEVIĆ JULKA
+VASILJEVIĆ LEPA
+VASILJEVIĆ LJUBINKO
+VASILJEVIĆ MARKO
+VASILJEVIĆ MARKO
+VASILJEVIĆ MILENA
+VASILJEVIĆ MILENKO
+VASILJEVIĆ MILISAV
+VASILJEVIĆ MILJKO
+VASILJEVIĆ MILOŠ
+VASILJEVIĆ MILORAD
+VASILJEVIĆ MIODRAG DIPL ING
+VASILJEVIĆ MIRA
+VASILJEVIĆ MIROSLAV
+VASILJEVIĆ MOMČILO DR
+VASILJEVIĆ NADA
+VASILJEVIĆ NEDELJKO
+VASILJEVIĆ NEVENKA
+VASILJEVIĆ NIKOLA
+VASILJEVIĆ NIKOLA
+VASILJEVIĆ OLGA
+VASILJEVIĆ OSTOJA
+VASILJEVIĆ PETAR
+VASILJEVIĆ PETAR
+VASILJEVIĆ RADA
+VASILJEVIĆ RADENKA
+VASILJEVIĆ RADOSAV
+VASILJEVIĆ RADOSLAV
+VASILJEVIĆ RADO
+VASILJEVIĆ RAJA NOVINAR
+VASILJEVIĆ RAJKO
+VASILJEVIĆ SIMO
+VASILJEVIĆ SLAVKO
+VASILJEVIĆ STANIMIR
+VASILJEVIĆ TIHOMIR
+VASILJEVIĆ TOŠA
+VASILJEVIĆ UMKA
+VASILJEVIĆ VERICA
+VASILJEVIĆ VUKICA
+VASILJEVIĆ ZDRAVKO
+VASILJEVIĆ ZLATKO
+VASILJEVIĆ ZLATOJE
+VASILJEVIĆ ZORAN
+VASILJEVSKI VASILIJE
+VASIN ĐORĐE
+VASIN ĐORĐE
+VASIN ANĐELKA
+VASIN ARANKA
+VASIN BORIVOJE
+VASIN BRANISLAV
+VASIN DRAGANA
+VASIN DRAGOMIR
+VASIN JASMINA
+VASIN JELENA
+VASIN JEVROSIMA
+VASIN JULKA
+VASIN LAZAR
+VASIN LJUBINKA
+VASIN MARICA
+VASIN MILENKO
+VASIN MILENKO
+VASIN NEDELJKO
+VASIN OLGICA
+VASIN PAVLE
+VASIN PETAR
+VASIN RADIVOJ
+VASIN STEVAN
+VASIN SVETISLAV
+VASIN SVETOZAR
+VASIN TODOR
+VASIN ZORA
+VASKO VERA
+VASKOVIĆ MILORAD
+VASKRSIĆ SAVETA
+VASOVIĆ ALEKSANDAR
+VASOVIĆ MILENA
+VASOVIĆ MILOVAN
+VASOVIĆ PREDRAG
+VASOVIĆ SLAVIMIRKA
+VATAJI ĐULA
+VATIĆ MARJAN
+VATIĆ MARKO
+VATIĆ MIRAŠ
+VATIĆ NIKOLA
+VATOVIĆ HRANISLAV
+VATOVIĆ JELENA
+VAURIČAK KATALIN
+VAVAN MILORAD
+VAVAN MILORAD
+VAVAN MLADENKO
+VAVAN PAVLE
+VAVAN SLAVKO
+VAVIĆ JOVAN
+VAVRA PREDRAG
+VAVRIN JOSIP
+VAVRIN PETAR
+VDOVIAK BERNARD
+VEČEI JOŽEF
+VEČEI JOSIP
+VEČEI LJILJANA
+VEČEJI JOVAN
+VEČERA MIHAJLO
+VEČERI JULIUS
+VEČI IŠTVAN
+VEČIĆ SVETLANA
+VEŠLIGAJ STEVAN
+VEŠLIGAJ VERA
+VEŠOVIĆ IVANKA
+VEŠOVIĆ LEOPOLD
+VEŠOVIĆ OLGA
+VEŠOVIĆ SMILJANA
+VEŠOVIĆ VLASTIMIR
+VEŠOVIĆ VUKSAN
+VEŠOVIĆ ZORKA MR
+VEĆKALOV ĐORĐE
+VEĆKALOV ALEKSANDAR
+VEĆKALOV SOFIJA DR LEKAR
+VEBEL VALERIJA
+VEBER BOŽANA
+VEBER GABRIELA
+VEBER GABRIELA
+VEBER MILICA
+VEBER OLGA
+VEBER TEREZIJA
+VEG ŠANDOR
+VEG ENIKE
+VEGŠE PAVLE
+VEGEL LASLO
+VEGVARI DEŽE
+VEGVARI JULIANA
+VEGVARI MIKLOŠ
+VEHTER KAROLJ
+VEHTER KAROLJ
+VEHTER ZOLTAN
+VEIN JEKA
+VEIN ZORKA
+VEINOVIĆ NIKOLA
+VEJIN ĐORĐE
+VEJIN BRANISLAVA
+VEJIN BRANISLAV
+VEJIN DUŠANKA
+VEJIN KRISTINA
+VEJNOVIĆ DANE
+VEJNOVIĆ DRAGAN
+VEJNOVIĆ JELENA
+VEJNOVIĆ MIRKO
+VEJNOVIĆ MLADEN DIPL ING
+VEJNOVIĆ NIKOLA
+VEJNOVIĆ OBRAD
+VEJNOVIĆ RAJKO
+VEJNOVIĆ SIMEON
+VEJNOVIĆ TIHOMIR
+VEJNOVIĆ TIHOMIR
+VEJNOVIĆ VAJKO
+VEJNOVIĆ VOJISLAV
+VEJZOVSKI VEJZ
+VEKAŠ ŽUŽANA
+VEKAŠ ATILA
+VEKAŠ EVA
+VEKAŠ EVA
+VEKAŠ JANOŠ
+VEKAŠ JUDITA
+VEKAŠ LASLO
+VEKIĆ ANA
+VEKIĆ DRAGAN
+VEKIĆ ELENA
+VEKIĆ JULIJANA
+VEKIĆ NIKOLA
+VEKIĆ PETAR
+VEKIĆ RADIVOJ
+VEKIĆ RADMILA
+VEKIĆ TEREZA
+VEKIĆ TEREZA
+VEKIĆ ZVONKO
+VEKONJ ŠANDOR
+VEKONJ LADISLAV
+VEKOVIĆ MILORAD
+VELČEK IŠTVAN
+VELČEK JOSIP
+VELČEK VLADIMIR
+VELĐI ANA
+VELĐI JOŽEF
+VELĐI LADISLAV
+VELĐI MARIJA
+VELAGIĆ SANJA
+VELAJA JOVO
+VELBABOVIĆ DESANKA
+VELBABOVIĆ MILORAD
+VELBABOVIĆ RADINKA
+VELEČKOVIĆ BRANKO
+VELEČKOVIĆ EVA
+VELEMIR ANICA
+VELEMIR DRAGOLJUB
+VELEMIR ILIJA
+VELEMIR MILOMIR
+VELEMIR RISTO
+VELEMIR RISTO
+VELEMIR SAVKA
+VELEMIR SLAVKO
+VELEMIR SVETOMIR
+VELEMIR TODOR
+VELEMIR VOJA
+VELEMIR VOJKO
+VELEMIROV SIMA
+VELENDEČIĆ BOŽO
+VELENDEČIĆ MILAN
+VELEZ IŠTVAN
+VELEZ IŠTVAN
+VELHES MIROSLAV
+VELHNER JOSIP DIPL ING
+VELIČKOV ŽIVAN
+VELIČKOV DANICA
+VELIČKOV GROZDA
+VELIČKOV KATICA
+VELIČKOV LJILJA
+VELIČKOV NATAŠA
+VELIČKOV RADIVOJ
+VELIČKOVIĆ ŽIVORAD DIPL PRAVNIK
+VELIČKOVIĆ ŽIVOTA
+VELIČKOVIĆ ĐORĐE
+VELIČKOVIĆ BILJANA
+VELIČKOVIĆ DUŠAN
+VELIČKOVIĆ EMILIJA
+VELIČKOVIĆ IVANKA
+VELIČKOVIĆ JOVAN
+VELIČKOVIĆ JOVAN
+VELIČKOVIĆ KATARINA
+VELIČKOVIĆ KSENIJA
+VELIČKOVIĆ MARIJA
+VELIČKOVIĆ MILANKA
+VELIČKOVIĆ MILAN
+VELIČKOVIĆ MILICA
+VELIČKOVIĆ MILORAD
+VELIČKOVIĆ NENAD
+VELIČKOVIĆ NIKOLA
+VELIČKOVIĆ PERSIDA
+VELIČKOVIĆ PREDRAG
+VELIČKOVIĆ SLAVIŠA
+VELIČKOVIĆ SLAVOLJUB
+VELIČKOVIĆ SONJA
+VELIČKOVIĆ STEVAN
+VELIČKOVIĆ ZORAN
+VELIČKOVSKI ALEKSANDAR
+VELIŠEK GABRIELA
+VELIŠEK GEZA
+VELIŠEK KARLO
+VELIĆ ILIJA
+VELIĆ ZORAN
+VELICKI ĐORĐE
+VELICKI ALEKSANDAR
+VELICKI ALEKSANDAR
+VELICKI JELICA
+VELICKI JOVICA
+VELICKI LJUBOMIR
+VELICKI MILAN
+VELICKI MILAN
+VELICKI MILIVOJ
+VELICKI MIODRAG
+VELICKI NOVAK
+VELICKI SVETOZAR
+VELICKI UROŠ
+VELICKI ZORAN
+VELICKI ZORA
+VELIJA LJILJANA
+VELIJA REĐEP
+VELIKIĆ ALEKSANDAR DIPL ING
+VELIKIĆ ANA
+VELIKIĆ DANICA
+VELIKIĆ LJUBOMIR
+VELIKIĆ SIMA
+VELIKIĆ ZORAN
+VELIMIROV JELENA
+VELIMIROV MILOŠ
+VELIMIROV VLADIMIR
+VELIMIROVIĆ ANGELA
+VELIMIROVIĆ BOŠKO
+VELIMIROVIĆ DIMITRIJE
+VELIMIROVIĆ DRAŠKO
+VELIMIROVIĆ JELISAVETA
+VELIMIROVIĆ JOVAN
+VELIMIROVIĆ LAZAR
+VELIMIROVIĆ NOVAK
+VELIMIROVIĆ SIMEON
+VELIMIROVIĆ SLAVICA
+VELIMIROVIĆ SLAVOLJUB
+VELIMIROVIĆ SMILJANA
+VELIMIROVIĆ SNEŽANA
+VELIMIROVIĆ VOJIN
+VELIOSKI SADEM
+VELIOV DŽEMAJLO
+VELISAVLJEV GORDANA DR
+VELISAVLJEV MILORAD DR
+VELISAVLJEV SREDOJE
+VELISAVLJEVIĆ MILISAV
+VELJA ŽIVA DIP OEC
+VELJA PETAR
+VELJANOVIĆ BRANISLAV
+VELJANOVIĆ MOMČILO
+VELJANOVIĆ TOMISLAVA
+VELJANOVSKI IVAN
+VELJIĆ MILOVAN
+VELJKO ANĐELKO
+VELJKOV DARINKA
+VELJKOV GEORGIJE
+VELJKOV IDA
+VELJKOV MIROSLAV DIPL PRAVNIK
+VELJKOV PAVLE
+VELJKOV-PFAJFER SOFIJA
+VELJKOV STEVAN
+VELJKOV VLADIMIR
+VELJKOVIĆ ŽARKO
+VELJKOVIĆ ALEKSANDAR DIPL ING
+VELJKOVIĆ ALEKSANDAR
+VELJKOVIĆ ANĐELKA
+VELJKOVIĆ BOŽIDAR
+VELJKOVIĆ BOJAN
+VELJKOVIĆ DOBROSAV
+VELJKOVIĆ DRAGAN
+VELJKOVIĆ MILOMIR
+VELJKOVIĆ MIODRAG
+VELJKOVIĆ MIODRAG
+VELJKOVIĆ MIRJANA
+VELJKOVIĆ MIRKO
+VELJKOVIĆ NADA
+VELJKOVIĆ PETAR
+VELJKOVIĆ RADA
+VELJKOVIĆ RADISAV
+VELJKOVIĆ RADOSAV
+VELJKOVIĆ RADOSLAV
+VELJKOVIĆ RUŽICA
+VELJKOVIĆ SRETEN
+VELJKOVIĆ SVETA
+VELJKOVIĆ SVETISLAV
+VELJKOVIĆ TIHOMIR
+VELJKOVIĆ VIDOJE
+VELJKOVIĆ VOJISLAV
+VELJKOVIĆ VUKAŠIN
+VELJOVIĆ DUŠAN
+VELJOVIĆ LEPOSAVA
+VELJOVIĆ MILAN
+VELJOVIĆ MITAR
+VELJOVIĆ MOMČILO
+VELJOVIĆ PAVLE
+VELJOVIĆ RUŽA
+VELJOVIĆ SIMO
+VELJOVIĆ SLAVICA
+VELKOVSKI IRENA
+VELKOVSKI TEOFIL
+VEMENAC OBRAD
+VEMIĆ BORA
+VEMIĆ DRAGINJA
+VEMIĆ ILIJA
+VEMIĆ LAZAR
+VEMIĆ MILAN
+VEMIĆ RADIVOJE DR
+VEMIĆ RADIVOJE
+VENČELOVSKI LJUBICA
+VENČELOVSKI VLADA
+VENČELOVSKI VLADIMIR
+VENČELOVSKI VLASTA
+VENCEL GEZA
+VENCEL GEZA
+VENCL JOSIP
+VENCL ZVONIMIR
+VENDLENER ANDRIJANA
+VENDLENER JELENA
+VENDLENER ZORAN
+VENE GORDANA
+VENGRIN AGNEŠ
+VENGRING FERENC
+VENGRING STEVAN
+VERAC MIODRAG
+VERBA JOŽEF
+VERBANEC IŠTVAN
+VERBANEC IŠTVAN
+VERBASI FRANJA
+VERBASI JOVANKA
+VEREŠ ĐULA
+VEREŠ ANDRIJA
+VEREŠ DRAGUTIN
+VEREŠ HAJNALKA
+VEREŠ IVAN
+VEREŠ JELISAVETA
+VEREŠ JOŽEF
+VEREŠ JOSIP
+VEREŠ JOSIP
+VEREŠ LADISLAV
+VEREŠ MARIJA
+VEREŠBARANJI IŠTVAN
+VEREŠBARANJI MARIJA
+VEREŠEVIĆ TIHOMIR
+VEREŽAN ĐURICA
+VEREŽAN ZORKA
+VEREB ŽUŽANA
+VEREBEŠ BORISLAVA
+VEREBEŠ ERVIN
+VERECKEI DUŠICA
+VERECKEI GEZA
+VERECKEI MARGITA
+VERGAŠ BRANKO
+VERIĆ RATKO
+VERKIĆ TODOR
+VERKIĆ VITOMIR
+VERKIĆ VOJISLAV
+VERLIĆ MILAN
+VERMEŠ LILI
+VERMEZOVIĆ ĐORĐE
+VERNAČKI ANITA
+VERNAČKI BRANISLAV
+VERNAČKI GAVRA
+VERNAČKI GAVRILO
+VERNAČKI MIROSLAV
+VERNER ANA
+VERNER MIHAJLO
+VERNER STEVAN
+VERNOT ANA
+VERNOT DUNJA
+VERNOT JOSIP
+VERNOT VJEKOSLAVA
+VERNOT ZDENKO
+VERNOT ZDENKO
+VERZOTI DRAGICA
+VERZOTI JULIJANA
+VERZOTI PETAR
+VERZOTI STANKA
+VESELIĆ BORIVOJ
+VESELIĆ DRAGOLJUB
+VESELIĆ GOSPAVA
+VESELIĆ RADOJKA
+VESELIĆ SLAVKO
+VESELICA MANE
+VESELICA MILAN
+VESELICA SVETOZAR
+VESELIN PETAR
+VESELINOV ĐORĐE
+VESELINOV BORISLAVA
+VESELINOV BRANISLAV
+VESELINOV LIBUŠA
+VESELINOV MILICA
+VESELINOV RISTA
+VESELINOV STEVAN DR
+VESELINOV STEVAN
+VESELINOV SVETOZAR
+VESELINOV VERA
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐUJA
+VESELINOVIĆ ĐURA
+VESELINOVIĆ ĐURO
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ BORA
+VESELINOVIĆ BRANE
+VESELINOVIĆ BRANISLAV
+VESELINOVIĆ BRANISLAV
+VESELINOVIĆ DARA
+VESELINOVIĆ DARKO
+VESELINOVIĆ DRAGAN
+VESELINOVIĆ DRAGOMIR
+VESELINOVIĆ DRAGORAD
+VESELINOVIĆ DUŠANKA
+VESELINOVIĆ GORDANA
+VESELINOVIĆ ILIJA
+VESELINOVIĆ JELISAVKA
+VESELINOVIĆ JORDAN
+VESELINOVIĆ JOSIPA
+VESELINOVIĆ JOVANKA
+VESELINOVIĆ JULIJANA
+VESELINOVIĆ KATICA
+VESELINOVIĆ LANA
+VESELINOVIĆ LENKICA
+VESELINOVIĆ LJUBOMIR
+VESELINOVIĆ MARIJA
+VESELINOVIĆ MIKA
+VESELINOVIĆ MILANKA
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILENA
+VESELINOVIĆ MILE
+VESELINOVIĆ MILISAV
+VESELINOVIĆ MILORAD
+VESELINOVIĆ MIRKO
+VESELINOVIĆ MITA
+VESELINOVIĆ MLADEN
+VESELINOVIĆ NIKOLA
+VESELINOVIĆ NIKOLA
+VESELINOVIĆ OLGA
+VESELINOVIĆ PAVLE
+VESELINOVIĆ PERSIDA
+VESELINOVIĆ PETAR
+VESELINOVIĆ-POPOVIĆ BRANKA
+VESELINOVIĆ PREDRAG
+VESELINOVIĆ RADMIL
+VESELINOVIĆ RANKO
+VESELINOVIĆ RANKO
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ SAVA
+VESELINOVIĆ SEVER
+VESELINOVIĆ SLOBODAN
+VESELINOVIĆ SPASOJE
+VESELINOVIĆ STEVAN
+VESELINOVIĆ STEVAN
+VESELINOVIĆ SVETISLAV
+VESELINOVIĆ TODOR
+VESELINOVIĆ TODOR
+VESELINOVIĆ UROŠ
+VESELINOVIĆ VASILJKA
+VESELINOVIĆ VELIMIR
+VESELINOVIĆ VELIZAR
+VESELINOVIĆ VELJKO
+VESELINOVIĆ VERA
+VESELINOVIĆ VERA
+VESELINOVIĆ VESELIN
+VESELINOVIĆ VESELIN
+VESELINOVIĆ VINKA
+VESELINOVIĆ VLADISLAV
+VESELINOVIĆ VLASTIMIR
+VESELINOVIĆ VOJISLAV DR LEKAR
+VESELINOVIĆ VOJISLAV
+VESELINOVIĆ VUKICA
+VESELINOVIĆ ZORAN
+VESELINOVIĆ ZORAN
+VESELINOVIĆ ZVEZDAN
+VESIĆ DOBROSAV
+VESIĆ DRAGOSLAV
+VESIĆ KATICA
+VESIĆ KRSTA
+VESIĆ MILAN
+VESIĆ MILAN
+VESIĆ MILICA
+VESIĆ MIODRAG
+VESIĆ MITAR
+VESIĆ MLADEN
+VESIĆ RUŽICA
+VESIĆ-VARGA DRAGICA
+VESIĆ VESELINKA
+VESIN BRANKO
+VESIN MILAN
+VESIN NADA
+VESIN PETAR
+VESKOV ALEKSANDAR
+VESKOV ALEKSANDAR
+VESKOV IVAN
+VESKOV JELENA
+VESKOV MILOŠ
+VESKOVIĆ ANKICA
+VESKOVIĆ DRAŠKO
+VESKOVIĆ KATARINA
+VESKOVIĆ MARICA
+VESKOVIĆ MIROSLAV
+VESKOVIĆ MOMČILO DIPL ING
+VESKOVIĆ PETAR
+VESKOVIĆ SLAVKO
+VESKOVIĆ STANOJE
+VESKOVIĆ ZORA
+VESLAVSKI TINKA
+VESNIĆ MILENA
+VESNIĆ-VASILJEVIĆ ANĐELIJA
+VESOVIĆ ACO
+VESOVIĆ ANDRIJA
+VETRAB FRANJA
+VETRAB KATALIN
+VETRAB MIHALJ
+VETRO PETAR
+VEVERIČEK MARIJA
+VEZETI MIHAEL
+VEZETI PETAR
+VEZILIĆ ĐORĐE
+VEZILIĆ CRNOGORKA
+VEZILIĆ DUŠANKA
+VEZILIĆ DUŠICA
+VEZILIĆ JELICA
+VEZILIĆ RADOSLAV
+VEZMAR BRANKO
+VEZMAR ILIJA
+VEZMAR MARGARITA
+VEZMAR MILAN
+VEZMAR MILOŠ
+VEZMAR MILORAD
+VEZMAR MOMČILO
+VEZMAR NIKOLA
+VEZMAR PETAR
+VEZULIĆ ĐORĐE
+VIČEK ŠANDOR
+VIČEK KAROLJ
+VIČEVIĆ ZVONIMIR
+VIČIK IGNJAT
+VIŠEKRUNA BORIVOJ
+VIŠEKRUNA DANKO
+VIŠEKRUNA DUŠAN
+VIŠEKRUNA DUŠKO
+VIŠEKRUNA JOVAN
+VIŠEKRUNA MILAN
+VIŠEKRUNA SLAVKO
+VIŠEKRUNA VOJIN
+VIŠIĆ MILE
+VIŠKOVIĆ MILICA
+VIŠKOVIĆ MILOŠ
+VIŠKOVIĆ PLANINKA
+VIŠKOVIĆ PREDRAG
+VIŠKOVIĆ VLADIMIR DR
+VIŠNIĆ DANICA
+VIŠNIĆ DUŠAN
+VIŠNIĆ ZORKA
+VIŠNJEVČANIN JOVAN
+VIŠNJEVČANIN LEPA
+VIŠNJEVAC BORO
+VIŠNJEVAC OLIVERA
+VIŠNJEVSKI KATICA
+VIŠNJIČAN DUŠAN
+VIŠNJIČAN GAVRILO
+VIŠNJIČAN JOVANKA
+VIŠNJIČAN MILICA
+VIŠNJIČANIN JOVANKA
+VIŠNJIČAR ŽARKO
+VIŠNJIČAR ĐORĐE
+VIŠNJIČAR ĐORĐE
+VIŠNJIČAR DRAGOSLAV
+VIŠNJIČAR MARIJA
+VIŠNJIČAR MIKA
+VIŠNJIČAR NEDELJKO
+VIŠNJIČKI GORDANA
+VIŠNJIČKI MILOŠ
+VIŠNJIČKI MIROSLAV
+VIŠNJIČKI SRETEN
+VIŠNJIĆ ČEDOMILA
+VIŠNJIĆ BRANKO
+VIŠNJIĆ BRANSILAVA
+VIŠNJIĆ DALIBOR
+VIŠNJIĆ DUŠAN
+VIŠNJIĆ ILIJA
+VIŠNJIĆ JOSIP
+VIŠNJIĆ MARIJA
+VIŠNJIĆ MILAN
+VIŠNJIĆ MILICA
+VIŠNJIĆ OLIVERA
+VIŠNJIĆ OLIVER
+VIŠNJIĆ SPASOJE
+VIŠNJIĆ TIHOMIR
+VIŠNJIĆ VASILIJE
+VIŠNJIĆ VERA
+VIŠNJIĆ VESNA
+VIŠNJOVSKI ĐURA
+VIŠNJOVSKI ARANKA
+VIŠNJOVSKI MARIJA
+VIŠNJOVSKI MARJAN
+VIŠOŠEVIĆ RUŽENA
+VIŠONTAI JOŽEF
+VIŠONTAI JOŽEF
+VIĆEVIĆ RADIŠA
+VIŽAI ŠANDOR
+VIATORIS JANOŠ
+VIATORIS JULIŠKA
+VIATORIS LJUBICA
+VIBOK JOŽEF
+VICEI JOŽEF
+VICEI NIKOLA
+VICIAN KLARA
+VICKO ARPAD
+VICKO FRANJA
+VICKO JOSIP
+VICKOŠ JOŽEF
+VICKOVIĆ BRANKO
+VICKOVIĆ BRANKO
+VICKOVIĆ DRAGICA
+VICKOVIĆ TOMISLAV
+VICKOVIĆ VESNA
+VICO BOGDAN
+VICO RADIVOJE
+VICO RADOMIR
+VID BRANISLAVA
+VIDA JELISAVETA
+VIDA JOŽEF
+VIDA JULIJA
+VIDA SLOBODANKA
+VIDA VILI
+VIDAČ JANJA LOKAL
+VIDAČ LASLO
+VIDAČ SLAVICA
+VIDAJIĆ ŽIVKO
+VIDAJIĆ JASMINA
+VIDAJIĆ JOSIP
+VIDAJIĆ LUČIJANO
+VIDAJIĆ MARIJA
+VIDAJIĆ VELJA
+VIDAJIĆ VLADA
+VIDAKOV ANKICA
+VIDAKOV JOVAN
+VIDAKOV ZORICA
+VIDAKOVIĆ ALEKSANDAR
+VIDAKOVIĆ ALEKSANDRA DR
+VIDAKOVIĆ ANGELINA
+VIDAKOVIĆ BRANIMIR
+VIDAKOVIĆ BRANKO
+VIDAKOVIĆ DUŠANKA
+VIDAKOVIĆ DUŠAN
+VIDAKOVIĆ EMIL
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ JAGODA
+VIDAKOVIĆ JOSIP
+VIDAKOVIĆ JOSIP
+VIDAKOVIĆ KOSA
+VIDAKOVIĆ MIHAJLO
+VIDAKOVIĆ MILAN
+VIDAKOVIĆ MILAN
+VIDAKOVIĆ MILJA
+VIDAKOVIĆ MIRČETA
+VIDAKOVIĆ MIRJANA
+VIDAKOVIĆ MIRKO
+VIDAKOVIĆ NEDELJKO
+VIDAKOVIĆ OLGA
+VIDAKOVIĆ OLGA
+VIDAKOVIĆ RADENKO
+VIDAKOVIĆ RADMILA
+VIDAKOVIĆ SAVA
+VIDAKOVIĆ SLAVKA
+VIDAKOVIĆ SOFIJA
+VIDAKOVIĆ SREĆKO
+VIDAKOVIĆ SREĆKO
+VIDAKOVIĆ STEVAN
+VIDAKOVIĆ STOJAN
+VIDAKOVIĆ SVETOZAR
+VIDAKOVIĆ TEREZA
+VIDAKOVIĆ VOJISLAV
+VIDAKOVIĆ VOJISLAV
+VIDAKOVIĆ VUKAŠIN
+VIDANOVIĆ MIHAJLO
+VIDANOVIĆ-SKOKO JELENA
+VIDARIĆ JOVO
+VIDARIĆ MILORAD
+VIDARIĆ RATKO
+VIDARIĆ STEVAN
+VIDAS TEREZA
+VIDEC JOSIP
+VIDEC JOSIP
+VIDENOVIĆ BRANKO
+VIDENOVIĆ KOSOVKA
+VIDENOVIĆ LJILJANA DR
+VIDENOVIĆ MOMIR
+VIDER MIRKO DIPL ING
+VIDIĆ ŽELJKO
+VIDIĆ ĐORĐE
+VIDIĆ BRANISLAV
+VIDIĆ BRANKA
+VIDIĆ BRANKA
+VIDIĆ BRANKO
+VIDIĆ DRAGANA
+VIDIĆ DUŠANKA
+VIDIĆ EMILIJA
+VIDIĆ JELICA
+VIDIĆ JOCA
+VIDIĆ LJILJANA
+VIDIĆ LJUBOMIR
+VIDIĆ MARIJA
+VIDIĆ MILAN
+VIDIĆ MILAN
+VIDIĆ MILOŠ
+VIDIĆ MIROSLAVA
+VIDIĆ MIROSLAV
+VIDIĆ NADA
+VIDIĆ PERO
+VIDIĆ RADMILA
+VIDIĆ RADMILA
+VIDIĆ RAJKO
+VIDIĆ SOFIJA
+VIDIĆ STANISLAVA
+VIDIĆ STEVAN
+VIDIĆ SVETISLAV
+VIDIĆ VELJKO
+VIDIĆ VERA
+VIDIĆ ZDRAVKO
+VIDICKI BRANKO
+VIDICKI IVAN
+VIDICKI KOSTA
+VIDICKI LJUBOMIR
+VIDICKI MIROSLAV
+VIDINER BOŽIDAR
+VIDMANIĆ GABRIJELA
+VIDOJEVIĆ ŽIVKA
+VIDOJEVIĆ BLAŽO
+VIDOJEVIĆ BOŽA
+VIDOJEVIĆ JOSIF
+VIDOJKOVIĆ RADOMIR
+VIDOSAVLJEVIĆ DOBROSAV
+VIDOSAVLJEVIĆ DUŠAN
+VIDOSAVLJEVIĆ JELICA
+VIDOSAVLJEVIĆ ZVONIMIR
+VIDOVIĆ ŽIVKO
+VIDOVIĆ AMIRA
+VIDOVIĆ ANICA
+VIDOVIĆ BEATRIS
+VIDOVIĆ BILJANA
+VIDOVIĆ BISERKA
+VIDOVIĆ BOŽIDAR
+VIDOVIĆ BORISLAV
+VIDOVIĆ BORISLAV
+VIDOVIĆ BRANISLAV
+VIDOVIĆ DRAGO
+VIDOVIĆ MARJAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILE
+VIDOVIĆ MILICA
+VIDOVIĆ MILOŠ
+VIDOVIĆ MIRKO
+VIDOVIĆ NADA
+VIDOVIĆ PETAR
+VIDOVIĆ RADOMIR
+VIDOVIĆ RAJKO
+VIDOVIĆ RUŽICA
+VIDOVIĆ SAVA
+VIDOVIĆ SLOBODAN
+VIDOVIĆ VID
+VIGI JOSIP
+VIGNJEVIĆ ĐORĐE
+VIGNJEVIĆ ANA
+VIGNJEVIĆ BRANKA
+VIGNJEVIĆ BRANKO
+VIGNJEVIĆ DAKO
+VIGNJEVIĆ DRAGAN
+VIGNJEVIĆ DRAGAN
+VIGNJEVIĆ DUŠANKA
+VIGNJEVIĆ MILENKO
+VIGNJEVIĆ NEVENKA
+VIGNJEVIĆ RADE
+VIGNJEVIĆ STEVANIJA
+VIGNJEVIĆ VESNA
+VIGNJEVIĆ VLADIMIR
+VIGNJEVIĆ ZORAN
+VIJATOV SMILJA
+VIJEŠTICA NJEGOMIR
+VIJUK LJUBAN
+VIJUK SAVA
+VIKOR PETAR
+VIKOR RUŽA
+VILČEK JANJA
+VILČEK NIKOLA
+VILA MILOVAN
+VILAGOŠ ĐERĐI
+VILETI ZORA
+VILIŠ ĐURA
+VILIŠ FRANJA
+VILIĆ MARKO
+VILIĆ RADOMIR
+VILIĆ RADOSLAVA
+VILIĆ ROZALIJA
+VILIĆ VOJISLAV
+VILIGORSKI PAULA
+VILOTIĆ ŽIVKO
+VILOTIĆ MILISAV
+VILOTIJEVIĆ DRAGUTIN
+VILOTIJEVIĆ KIĆUN
+VILOTIJEVIĆ MIROJE
+VILOVAČKI KATICA
+VILOVAČKI SLAVKO
+VILOVAC JOVAN
+VILOVAC JOVAN
+VILOVAC MILAN
+VILOVSKI ĐORĐE
+VILOVSKI BRANISLAV
+VILOVSKI BRANKO
+VILOVSKI SAVA
+VILOVSKI SLAVOMIR
+VILOVSKI SMILJANA
+VILOVSKI VELJKO
+VILOVSKI ZORA
+VILUS DANICA
+VIMER VERA
+VIN IVAN
+VIN JOSIP
+VIN LAJOŠ
+VIN PAVLE
+VIN SVETLANA
+VINŠ DRAGUTIN
+VINAJ ĐORĐE
+VINAJ ĐORĐE
+VINAJ JANKO
+VINAJ LJUBICA
+VINAJ MELANIJA
+VINAJI ĐURA
+VINAJI MITAR
+VINAJI VERICA
+VINARŽ VLADIMIR
+VINCE ANDRIJA
+VINCE ERŽEBET
+VINCE IŠTVAN
+VINCE KARLO
+VINCE LACIKA
+VINCE MARELA
+VINCE MARGITA
+VINCE PAVLE
+VINCETIN ANA
+VINDŽANOVIĆ PETAR
+VINDŽANOVIĆ RADIVOJE
+VINDIŠ DRAGUTIN
+VINDIŠ STEVAN
+VINER BRANISLAV
+VINER IVAN
+VINER JERONIM
+VINER MARIJA
+VINER ZVONIMIR
+VINKA EMANUELA
+VINKIĆ ILIJA
+VINKLER JOŽEF
+VINKLEROVIĆ VERICA
+VINKOVIĆ ANA
+VINKOVIĆ DRAGAN
+VINKOVIĆ LJUDEVIT
+VINOKIĆ BOGDAN
+VINOKIĆ VASILJKA
+VIRAG ALBERT
+VIRAG ANDRIJA
+VIRAG ERIKA
+VIRAG JULIJANA
+VIRAG LJUDEVIT
+VIRAG MARTON
+VIRAG MIHAJLO
+VIRAG ROBERT
+VIRAG ROBERT
+VIRC FERENC
+VIRC JOŽEF
+VIRC JOVAN
+VIRC MARTIN
+VIRC NADA
+VIRC RUŽICA
+VIRC STEVAN
+VIRIĆ IVAN
+VIRIĆ IVAN
+VIRIJEVIĆ ĐORĐE
+VIRIJEVIĆ BOŽIDAR
+VIRIJEVIĆ BUDIMIR
+VIRIJEVIĆ JOVANKA
+VIRIJEVIĆ LJUBINKO
+VIRIJEVIĆ PETAR
+VIRIJEVIĆ VOJIN
+VISLAVSKI ĐURA
+VISLAVSKI BOGDAN
+VISLAVSKI JAKIM
+VISLAVSKI JAKIM
+VISLAVSKI JANOŠ
+VISLAVSKI JANOŠ
+VISLAVSKI LEON
+VISLAVSKI LJUBOMIR
+VISLAVSKI MARIJA
+VISLAVSKI MIHAJLO
+VISLAVSKI MIRON
+VISLAVSKI MIROSLAV
+VISLAVSKI MIROSLAV
+VISLAVSKI NATAŠA
+VISLAVSKI ZLATKO
+VIST HELGAANA
+VITAS STEVAN
+VITAS STEVAN
+VITASOVIĆ DUŠANKA
+VITASOVIĆ DUŠANKA
+VITASOVIĆ DUŠAN
+VITASOVIĆ NEBOJŠA
+VITAZ PETAR
+VITEZ JAN
+VITEZ TUGOMIR
+VITEZ ZVONKO
+VITIĆ ĐORĐE
+VITIĆ ĐORĐE
+VITIĆ BOŠKO DR LEKAR
+VITJUK MIRJANA DIPL ING
+VITJUK PETAR DIPL ING
+VITKAI ILONA
+VITKOVIĆ BRANKO
+VITKOVIĆ DRAGO
+VITKOVIĆ JOVAN
+VITOMIROV ŽIVAN
+VITOMIROVIĆ BORIS
+VITOMIROVIĆ DRAGOMIR
+VITORAC ĐURA
+VITORAC ĐURO
+VITORAC BORISLAV
+VITORAC ILIJA
+VITORAC NADA
+VITORAC RUŽENKA
+VITOROVIĆ MILAN
+VITOROVIĆ MILOŠ
+VITOROVIĆ OLGA
+VITOROVIĆ RANKA
+VITOROVIĆ SOFIJA
+VITUŠKA STEVAN
+VIVOD JELISAVETA
+VIVOD MAGDALENA
+VIZI ŠANDOR
+VIZI JOSIP
+VIZI JOVAN
+VIZI KATICA
+VIZI MARIJA
+VIZI MARIJA
+VIZI RADOJKA
+VIZI SONJA
+VIZI STEVAN
+VJEŠTICA ĐURO
+VJEŠTICA DUŠANKA
+VJEŠTICA JOVO
+VJEŠTICA MILAN
+VJEŠTICA MIRKO
+VJEŠTICA MIROSLAV
+VJEŠTICA NADA
+VJEŠTICA NEBOJŠA
+VJEŠTICA SLAVKO
+VJERG BRANISLAV
+VJETROV LJUBICA
+VLA DUŠAN
+VLA DUŠAN
+VLA JOVAN
+VLA MILOVAN
+VLA PETAR
+VLA RADOSLAV
+VLA SLAVKO
+VLA SRETA
+VLAČO DUŠANKA
+VLAŠČIĆ ALEKSANDAR
+VLAŠIĆ MIODRAG
+VLAŠIĆ VASO
+VLAŠKALIĆ ĐORĐE
+VLAŠKALIĆ ALEKSANDAR
+VLAŠKALIĆ ANDRIJA
+VLAŠKALIĆ BOŽANA
+VLAŠKALIĆ-BOJANOVIĆ RAJKA
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ DONKA
+VLAŠKALIĆ FADILA
+VLAŠKALIĆ ILIJA
+VLAŠKALIĆ LAZAR
+VLAŠKALIĆ LAZAR
+VLAŠKALIĆ MILORAD
+VLAŠKALIĆ NIKOLA
+VLAŠKALIĆ OLGA
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PETAR
+VLAŠKALIĆ PETAR
+VLAŠKALIĆ-POPOVIĆ DUŠANKA
+VLAŠKALIĆ RADOSLAV
+VLAŠKALIĆ SAVA
+VLAŠKALIĆ SLOBODAN
+VLAŠKALIĆ SLOBODAN
+VLAŠKALIĆ STEVAN
+VLAŠKALIĆ STOJAN
+VLAŠKALIĆ VLADIMIR
+VLAŠKALIĆ ZORA
+VLAŠKALIJA JELENA
+VLAŠKALIJA VLADA
+VLAŠKALIN BRANKO
+VLAŠKI BOGDANKA
+VLAŠKI LAZAR
+VLAŠKI PREDRAG
+VLADARSKI OLGA
+VLADARSKI OLGA
+VLADETIĆ MILAN
+VLADETIĆ MIRKO
+VLADIĆ DRAGO
+VLADIĆ MILAN
+VLADIĆ PETAR
+VLADIMIR SELENA
+VLADIMIR ZDRAVKO
+VLADIMIROVIĆ ALEKSANDAR
+VLADIMIROVIĆ MILAN
+VLADIMIROVIĆ VLADIMIR
+VLADISAVLJEV ŽIVAN
+VLADISAVLJEV MILORAD
+VLADISAVLJEV PERA
+VLADISAVLJEV TOMA
+VLADISAVLJEVIĆ ĐORĐE
+VLADISAVLJEVIĆ ĐURA
+VLADISAVLJEVIĆ DESIMIR
+VLADISAVLJEVIĆ DRAGICA
+VLADISAVLJEVIĆ ERŽEBET
+VLADISAVLJEVIĆ JELENA
+VLADISAVLJEVIĆ MILOSAVA
+VLADISAVLJEVIĆ MIROSLAV
+VLADISAVLJEVIĆ OBRAD
+VLADISAVLJEVIĆ-PEŠKANOV MIRJANA
+VLADISAVLJEVIĆ PREDRAG
+VLADISAVLJEVIĆ VOJISLAV
+VLADOVIĆ JOVAN
+VLADOVIĆ JOVAN
+VLADOVIĆ RADOJKA
+VLADUŠA NIKOLA
+VLADUŠIĆ IVAN
+VLADUŠIĆ MILAN
+VLADULOV ŽIVOJIN
+VLADULOVIĆ-POPOV MARIJA DR LEKAR
+VLADULOVIĆ TIHOMIR
+VLAH DANICA
+VLAH IVAN
+VLAH PAVLE
+VLAH RADOVAN
+VLAHEK STANKO
+VLAHINIĆ MILOŠ
+VLAHO KRUNOSLAV
+VLAHOVIĆ ĐORĐE
+VLAHOVIĆ BOJANA
+VLAHOVIĆ BRANISLAV
+VLAHOVIĆ BRANKA
+VLAHOVIĆ BRANKA
+VLAHOVIĆ DANIJELA
+VLAHOVIĆ DRAGOLJUB
+VLAHOVIĆ DRAGO
+VLAHOVIĆ DUŠAN
+VLAHOVIĆ JELICA
+VLAHOVIĆ LJUBICA
+VLAHOVIĆ LJUBINKA
+VLAHOVIĆ MARIJA
+VLAHOVIĆ MILAN DIPL ING
+VLAHOVIĆ MILENKO
+VLAHOVIĆ MILICA
+VLAHOVIĆ MIRKO DR ING
+VLAHOVIĆ MIROSLAVA
+VLAHOVIĆ MOMČILO
+VLAHOVIĆ PAVLE
+VLAHOVIĆ RADOŠ
+VLAHOVIĆ RADOMIR
+VLAHOVIĆ RADONJA
+VLAHOVIĆ SAVA DR
+VLAHOVIĆ SENKA
+VLAHOVIĆ SLOBODAN
+VLAHOVIĆ STEVAN
+VLAHOVIĆ STRAHINJA
+VLAHOVIĆ TEODORA
+VLAHOVIĆ VITOMIRKA
+VLAHOVIĆ VLADA
+VLAHOVIĆ VLADIMIR
+VLAHUŠIĆ MIRKO
+VLAHUŠIĆ OLGICA
+VLAISAVLJEVIĆ ŽIVKO
+VLAISAVLJEVIĆ ĐUJO
+VLAISAVLJEVIĆ ANGELINA
+VLAISAVLJEVIĆ DANILO
+VLAISAVLJEVIĆ DARA
+VLAISAVLJEVIĆ DMITAR
+VLAISAVLJEVIĆ DUŠAN
+VLAISAVLJEVIĆ MAKSIM
+VLAISAVLJEVIĆ MILAN
+VLAISAVLJEVIĆ MILAN
+VLAISAVLJEVIĆ MILIJANA
+VLAISAVLJEVIĆ MILOŠ
+VLAISAVLJEVIĆ MOMČILO
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ RADMILA
+VLAISAVLJEVIĆ SAVO
+VLAISAVLJEVIĆ SLOBODAN
+VLAISAVLJEVIĆ SOFIJA
+VLAISAVLJEVIĆ STOJA
+VLAISAVLJEVIĆ TRIVUNA
+VLAISAVLJEVIĆ VASO
+VLAJANKOV LAZAR
+VLAJANKOV NATALIJA
+VLAJANKOV SLOBODAN
+VLAJANKOV-VULIĆ VERA
+VLAJIĆ DRAGAN
+VLAJIĆ DRAGOSLAVA
+VLAJIĆ DUŠANKA
+VLAJIĆ DUŠICA
+VLAJIĆ JOVAN
+VLAJIĆ MARIJA
+VLAJIĆ MILOŠ
+VLAJIĆ VALERIJA
+VLAJKOV BOSILJKA
+VLAJKOV BRANISLAV
+VLAJKOV BRANKO
+VLAJKOV-IVANOVIĆ SNEŽANA
+VLAJKOV LAZAR
+VLAJKOV LAZA
+VLAJKOV MACA
+VLAJKOV MIODRAG
+VLAJKOV MIRKO
+VLAJKOV MLADEN
+VLAJKOV NIKOLA
+VLAJKOV PAVLE
+VLAJKOV PETAR
+VLAJKOV ZORICA
+VLAJKOVIĆ ANTONIJA
+VLAJKOVIĆ BOGDAN
+VLAJKOVIĆ MILUTIN
+VLAJKOVIĆ MIODRAG
+VLAJKOVIĆ NEMANJA
+VLAJNIĆ ČEDOMIR
+VLAJNIĆ GORAN
+VLAJNIĆ MIRJANA
+VLAJNIĆ ZORA
+VLAJOVANOV SLOBODAN
+VLALUKIN DRAGOSLAV
+VLALUKIN ILONA
+VLALUKIN ILONKA
+VLALUKIN MILORAD DIPL ING
+VLALUKIN MIRJANA
+VLALUKIN NADA
+VLALUKIN SAVA
+VLALUKIN SLAVKO
+VLALUKIN ZORA
+VLAOV-ŽARKOV OLGA
+VLAOV GORDANA
+VLAOV JAVORKA
+VLAOV MILOŠ
+VLAOV MIROSLAV
+VLAOV VELIMIR
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ALEKSANDAR
+VLAOVIĆ ANICA
+VLAOVIĆ BOŠKO
+VLAOVIĆ BRANISLAVA
+VLAOVIĆ DIMITRIJE
+VLAOVIĆ DRAGAN
+VLAOVIĆ DRAGAN
+VLAOVIĆ DRAGOLJUB
+VLAOVIĆ DUŠAN
+VLAOVIĆ DUŠKO
+VLAOVIĆ GAVRA
+VLAOVIĆ HARI
+VLAOVIĆ IGNJAT
+VLAOVIĆ IVANKA
+VLAOVIĆ JELA
+VLAOVIĆ JOVAN
+VLAOVIĆ JOVAN
+VLAOVIĆ KATICA
+VLAOVIĆ LAZAR
+VLAOVIĆ LJUBIŠA
+VLAOVIĆ LJUBICA
+VLAOVIĆ LJUBOMIR
+VLAOVIĆ LJUBOMIR
+VLAOVIĆ LUKA
+VLAOVIĆ MARA
+VLAOVIĆ MARKO
+VLAOVIĆ MILOŠ
+VLAOVIĆ MILOŠ
+VLAOVIĆ MILOSAV
+VLAOVIĆ MIROSLAV
+VLAOVIĆ MLADEN
+VLAOVIĆ NIKOLA
+VLAOVIĆ NIKOLA
+VLAOVIĆ OLIVERA
+VLAOVIĆ PLEMENKA
+VLAOVIĆ RADIVOJ
+VLAOVIĆ RAJKO
+VLAOVIĆ SAVA
+VLAOVIĆ SLAVKO
+VLAOVIĆ STANOJE
+VLAOVIĆ STEVAN
+VLAOVIĆ STEVAN
+VLAOVIĆ SVETOZAR
+VLAOVIĆ TOŠA
+VLAOVIĆ TODOR
+VLAOVIĆ TOMA
+VLAOVIĆ TOMISLAV
+VLAOVIĆ VESNA
+VLAOVIĆ VLASTISLAVA
+VLAOVIĆ ZORAN
+VLASAČEVIĆ STOJKO
+VLASAK RENATA
+VLASOV MIHAJLO
+VLASTELIĆ ROKSANDA
+VLATKOVIĆ ŽELJKO
+VLATKOVIĆ ANGELO
+VLATKOVIĆ DUŠAN
+VLATKOVIĆ KREŠIMIR
+VLATKOVIĆ MARIJA
+VLATKOVIĆ MARIJA
+VLATKOVIĆ MILAN
+VLATKOVIĆ MILICA
+VLATKOVIĆ MIROSLAV
+VLATKOVIĆ MLADEN
+VLATKOVIĆ NIKOLA
+VLATKOVIĆ SAVKA
+VLATKOVIĆ SVETOZAR
+VOŠTIĆ ALEKSANDAR
+VOŠTIĆ MIODRAG
+VODA ZDENKO
+VODALOV DEJAN
+VODALOV MLADEN
+VODENIČAR NIKOLA
+VODOGAZ DRAGAN
+VODOGAZ LEPOSAVA
+VODOPIVEC ŽELJKO
+VODOPIVEC DRAGICA
+VODOPIVEC MIHAEL
+VOGANJAC MILENKO
+VOGLEŠ LIDIJA
+VOIN ALEKSANDAR DR LEKAR
+VOJČEVSKI ALEKSANDAR
+VOJČIĆ JOVAN
+VOJAŠĆUK MARA
+VOJIČIĆ JELENA
+VOJIČIĆ RAJKO
+VOJIČIĆ SAVA
+VOJIČIĆ VLADIMIR
+VOJIMIROVIĆ SLAVKO
+VOJIN MILKA
+VOJINOV ĐORĐE
+VOJINOV MIRA
+VOJINOV RADOSLAV
+VOJINOVIĆ ALEKSANDRA
+VOJINOVIĆ BOGIĆ
+VOJINOVIĆ DRAGAN
+VOJINOVIĆ DRAGOLJUB
+VOJINOVIĆ DRAGOSLAV
+VOJINOVIĆ JELENA
+VOJINOVIĆ JOVAN DR
+VOJINOVIĆ LJILJANA
+VOJINOVIĆ LJUBOMIR
+VOJINOVIĆ MILIVOJE
+VOJINOVIĆ MILORAD
+VOJINOVIĆ MIRJANA DR
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ NEBOJŠA
+VOJINOVIĆ VESELIN
+VOJINOVIĆ VUJICA
+VOJINOVIĆ VUKOSAVA
+VOJINOVIĆ ZORKA
+VOJISAVLJEVIĆ ZLATIJA
+VOJKIĆ BOŠKO
+VOJKIĆ RADISLAV
+VOJNIĆ FRANJA
+VOJNIĆ-HAJDUK GIZA
+VOJNIĆ-HAJDUK LJILJANA
+VOJNIĆ-HAJDUK MIRJANA
+VOJNIĆ JOVAN
+VOJNIĆ-KORTUIŠ STANA
+VOJNIĆ STEVAN
+VOJNOV BRANISLAV
+VOJNOV-ILIĆ ROZALIJA
+VOJNOV STOJAN DR LEKAR
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ĐORĐE
+VOJNOVIĆ ĐORĐE
+VOJNOVIĆ ĐURA
+VOJNOVIĆ ĐURO
+VOJNOVIĆ ACA
+VOJNOVIĆ ANASTAZIJA
+VOJNOVIĆ BRACA
+VOJNOVIĆ BRANKO
+VOJNOVIĆ BRANKO
+VOJNOVIĆ BRANKO
+VOJNOVIĆ DANICA
+VOJNOVIĆ DAVOR
+VOJNOVIĆ DESANKA
+VOJNOVIĆ DESANKA
+VOJNOVIĆ DIMITRIJE
+VOJNOVIĆ DRAGAN
+VOJNOVIĆ DRAGAN
+VOJNOVIĆ DRAGICA
+VOJNOVIĆ DUŠAN DIPL ING
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ GIZELA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ IVANKA
+VOJNOVIĆ IVAN
+VOJNOVIĆ JOVAN
+VOJNOVIĆ JOVAN
+VOJNOVIĆ KATARINA
+VOJNOVIĆ KATICA
+VOJNOVIĆ KLARA
+VOJNOVIĆ LJUBIŠA
+VOJNOVIĆ LJUBINKA
+VOJNOVIĆ MARA
+VOJNOVIĆ MARKO
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILENKO
+VOJNOVIĆ MILENKO
+VOJNOVIĆ MILICA
+VOJNOVIĆ MILINA
+VOJNOVIĆ MILJAN
+VOJNOVIĆ MILKA
+VOJNOVIĆ MILOŠ
+VOJNOVIĆ MILUTIN
+VOJNOVIĆ MIODRAG
+VOJNOVIĆ MIRJANA
+VOJNOVIĆ MIRKO
+VOJNOVIĆ MIROSLAV
+VOJNOVIĆ MLADEN DIPL OEC
+VOJNOVIĆ NADA
+VOJNOVIĆ NADA
+VOJNOVIĆ NADEŽDA
+VOJNOVIĆ NATAŠA
+VOJNOVIĆ NATAŠA
+VOJNOVIĆ NIKOLA DR
+VOJNOVIĆ NIKOLA
+VOJNOVIĆ NIKOLA
+VOJNOVIĆ PETAR
+VOJNOVIĆ PETAR
+VOJNOVIĆ PETAR
+VOJNOVIĆ RADA
+VOJNOVIĆ RADE
+VOJNOVIĆ RADE
+VOJNOVIĆ RADE
+VOJNOVIĆ RADIVOJ
+VOJNOVIĆ-RADUJKOV NADA
+VOJNOVIĆ RAJKO
+VOJNOVIĆ RUŽICA
+VOJNOVIĆ SLAVKO
+VOJNOVIĆ SLAVKO
+VOJNOVIĆ SPASENIJA
+VOJNOVIĆ STAMENKA
+VOJNOVIĆ STANISLAV
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVA
+VOJNOVIĆ STEVO
+VOJNOVIĆ STOJKA
+VOJNOVIĆ STRAHINJA
+VOJNOVIĆ TOMISLAV
+VOJNOVIĆ VESELIN
+VOJNOVIĆ VESELIN
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VOJISLAV
+VOJNOVIĆ VOJISLAV
+VOJNOVIĆ ZDRAVKO
+VOJT LJUBICA
+VOJT MILANA
+VOJTAS STANISLAV
+VOJTEHOVSKI JAROSLAV
+VOJTEHOVSKI OTO
+VOJTEHOVSKI OTO
+VOJTEHOVSKI ZAGORKA
+VOJVODIĆ ĐURA
+VOJVODIĆ ALEKSANDAR
+VOJVODIĆ ANA
+VOJVODIĆ BRANISLAV
+VOJVODIĆ DANICA
+VOJVODIĆ DRAGOLJUB
+VOJVODIĆ DUŠAN
+VOJVODIĆ GRADIMIR
+VOJVODIĆ JOVAN
+VOJVODIĆ MANIŠA
+VOJVODIĆ MILAN
+VOJVODIĆ MILE
+VOJVODIĆ MILOŠ
+VOJVODIĆ MILORAD
+VOJVODIĆ MIRKO
+VOJVODIĆ NADA
+VOJVODIĆ NIKOLA
+VOJVODIĆ RADOVAN
+VOJVODIĆ RATKA
+VOJVODIĆ SLAVKO
+VOJVODIĆ STEVAN
+VOJVODIĆ STEVAN
+VOJVODIĆ-TASIĆ SVETLANA
+VOJVODIĆ VASO
+VOJVODIĆ VOJISLAV
+VOJVODIĆ ZORA
+VOKŠI ĐEVAD
+VOKALIĆ HILDEGARD
+VOKALIĆ TEOBALD
+VOKIĆ DRAGAN
+VOKIĆ DUŠKO
+VOKIĆ JOVAN
+VOKIĆ NADA
+VOLČEVIĆ BORISLAV
+VOLČEVIĆ EVA
+VOLČEVIĆ TODOR
+VOLČEVSKI EVANTIJE
+VOLČEVSKI NIKOLA
+VOLAŠ ISIDOR
+VOLAŠ MILANKO
+VOLAŠ MILAN
+VOLAR ANDRAŠ
+VOLAR KARLO
+VOLAR PETAR
+VOLAR STJEPAN
+VOLAREV LJUBOMIR
+VOLAREV NADA
+VOLAREV STEVAN
+VOLAREVIĆ MARKO
+VOLAREVIĆ ZORAN
+VOLAROV MILAN
+VOLAROV RADOVAN
+VOLENC MARIJA
+VOLF BORIS
+VOLF DRAGUTIN
+VOLF IŠTVAN
+VOLF LJUBICA
+VOLF LJUDEVIT
+VOLF MIRA
+VOLF MIRA
+VOLF VERA
+VOLIČ VLADIMIR
+VOLIĆ ALEKSANDAR
+VOLIĆ BOŽIDAR
+VOLIĆ DRAGOSLAV
+VOLIĆ GRUJA
+VOLIĆ LJILJANA
+VOLIĆ MARINKA
+VOLIĆ PETAR
+VOLIĆ RADOSLAV
+VOLIĆ SLAVKO
+VOLIĆ TIHOMIR
+VOLIĆ VINKA
+VOLKAR EMIL
+VOLKOV RADOSLAV
+VOLOŠKIN BRATISLAV
+VOLOŠKIN DRAGICA
+VONIĆ VLATKO
+VORAČEK ŽELJKO
+VORAČEK LADISLAV
+VORATOVIĆ RADIVOJ
+VORGIĆ ĐORĐE
+VORGIĆ ALEKSANDAR
+VORGIĆ ANĐELKA
+VORGIĆ BORIVOJ
+VORGIĆ DRAGAN
+VORGIĆ EMIL
+VORGIĆ GAVRA
+VORGIĆ JOSIP
+VORGIĆ LAZAR
+VORGIĆ MARA
+VORGIĆ MILADINKA
+VORGIĆ NIKOLA DR
+VORGIĆ SLOBODAN
+VORGIĆ STEVAN
+VORGIĆ STEVAN
+VORGIĆ VUJICA
+VORGIĆ ZDRAVKO
+VORGIĆ ZORA
+VORGINC CVETA
+VORGUČIĆ MILOŠ
+VORGUČIĆ SAŠA
+VORGUČIN IVAN
+VORKAPA NIKOLA
+VORKAPIĆ DUŠAN
+VORKAPIĆ LJUBICA
+VORKAPIĆ MILAN
+VORKAPIĆ NIKOLA
+VORLIČEK JANOŠ
+VORLIČEK JANOŠ
+VORLIČEK MARICA
+VOROBJEV PETAR
+VOROBJEV SAVA
+VOROTOVIĆ STANA
+VORTIĆ BOSILJKA
+VOZAR ANA
+VOZAR DANICA
+VOZAR DRAGAN
+VOZAR MILOŠ
+VOZAR PAVLE DIPL ING
+VOZAREVIĆ ĐORĐE
+VOZAREVIĆ ELIZABETA
+VOZAREVIĆ JELICA
+VOZAREVIĆ MIRKO
+VOZAROVIĆ VIDA
+VRČINAC PETAR
+VRŠKA ĐORĐE
+VRŠKA DANIJEL
+VRŠKA KATARINA
+VRAČAR BRANISLAV
+VRAČAR DARINKA
+VRAČAR JOVAN
+VRAČAR LJUBOMIR
+VRAČAR LJUBO
+VRAČAR MILAN
+VRAČAR MIOLJKA
+VRAČAR NEDELJKO
+VRAČAR SLAVKA
+VRAČAR SLOBODAN
+VRAČAR VERA
+VRAČAR VUK
+VRAČAR ZDENKA
+VRAČARIČIĆ RADE
+VRAČARIĆ ĐORĐE
+VRAČARIĆ ALEKSANDAR
+VRAČARIĆ DIMITRIJE
+VRAČARIĆ JELICA
+VRAČARIĆ LJILJANA
+VRAČARIĆ LJUBIŠA
+VRAČARIĆ LJUBOMIR
+VRAČARIĆ MARIJA
+VRAČARIĆ MILENKO
+VRAČARIĆ MILISAV
+VRAČARIĆ MILOMIR
+VRAČARIĆ VLADIMIR
+VRAČEVIĆ SAVKA
+VRAŠTANOVIĆ LJUBINKA
+VRABLIK JULIJANA
+VRAGOVIĆ JOCA
+VRANA NADA
+VRANAC KSENIJA
+VRANAC SEAD
+VRANAC VAHIDA
+VRANAC ZIJAD
+VRANEŠ ČEDOMIR
+VRANEŠ BOŽIDAR
+VRANEŠ DAVORIN
+VRANEŠ EMILIJA
+VRANEŠ JOVANKA
+VRANEŠ MARIJA
+VRANEŠ MILAN
+VRANEŠ MILKA
+VRANEŠ MILUTIN
+VRANEŠ NADA
+VRANEŠ NIKOLA
+VRANEŠ PETAR
+VRANEŠ SMILJA
+VRANEŠ VERICA
+VRANEŠEVIĆ ADAM
+VRANEŠEVIĆ BRANISLAV DR
+VRANEŠEVIĆ DAMJAN
+VRANEŠEVIĆ KATICA
+VRANEŠEVIĆ MILAN
+VRANEŠEVIĆ MILAN
+VRANEŠEVIĆ MILOŠ
+VRANEŠEVIĆ MIROSLAV
+VRANEŠEVIĆ MLADEN
+VRANEŠEVIĆ NADA DR
+VRANEŠEVIĆ PREDRAG
+VRANEŠEVIĆ RAJKO
+VRANEŠEVIĆ STEVAN
+VRANEŠEVIĆ STOJAN
+VRANIĆ ČEDOMIR
+VRANIĆ BRANKO
+VRANIĆ DOBRINA
+VRANIĆ DRAGINJA
+VRANIĆ DRAGOSLAV
+VRANIĆ ILIJA
+VRANIĆ JADRANKA
+VRANIĆ MARKO
+VRANIĆ MILAN PROFESOR
+VRANIĆ MILORAD
+VRANIĆ MILUTIN
+VRANIĆ MIRČETA
+VRANIĆ MIRKO
+VRANIĆ MITRA
+VRANIĆ NENAD
+VRANIĆ NIKOLA
+VRANIĆ RADIVOJE
+VRANIĆ RADOJKA
+VRANIĆ SLAVKO
+VRANIĆ SLOBODAN
+VRANJEŠ GOJKO
+VRANJEŠ JOVANKA
+VRANJEŠ MILENKO
+VRANJEŠ MILENKO
+VRANJEŠ MILE
+VRANJEŠ MILKA
+VRANJEŠ NENAD
+VRANJEŠ RADOMIR
+VRANJEŠ SOFIJA
+VRANJEŠ SVETISLAV
+VRANJEŠ SVETLANA
+VRANJEŠEVIĆ BRANKO
+VRANJEŠEVIĆ DINKA
+VRANJEŠEVIĆ DRAGAN
+VRANJEŠEVIĆ JOVICA
+VRANJEŠEVIĆ MOMIR
+VRANJEŠEVIĆ RATOMIR
+VRANJEŠEVIĆ VELJKO
+VRANJEVAC DRAGAN
+VRANJEVAC MILIVOJE
+VRANJKOVIĆ MILAN
+VRANJKOVIĆ MILE
+VRANJKOVIĆ SMILJKA
+VRANJKOVIĆ SRETO
+VRANJO FRANJA
+VRANJO ZOLTAN
+VRANKOVIĆ JURAJ
+VRANKOVIĆ LUKA
+VRANKOVIĆ MILAN
+VRAPČEV ŽIVKO
+VRAPČEV DUŠKO
+VRAPČEV MELANIJA
+VRATNJAN BRANIMIR
+VRATONJIĆ SLAVOLJUB
+VRBAŠKI ŽARKO
+VRBAŠKI ŽARKO
+VRBAŠKI ĐORĐE
+VRBAŠKI ĐORĐE
+VRBAŠKI ĐURA
+VRBAŠKI ALEKSANDAR
+VRBAŠKI ANICA
+VRBAŠKI BRANISLAVA
+VRBAŠKI DARINKA
+VRBAŠKI DRAGOMIR
+VRBAŠKI DRAGOSLAV
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠICA
+VRBAŠKI GORDANA
+VRBAŠKI JELENA
+VRBAŠKI JELISAVETA
+VRBAŠKI JOVAN
+VRBAŠKI JULIJANA
+VRBAŠKI KOSTA
+VRBAŠKI LAZAR
+VRBAŠKI LJILJANA
+VRBAŠKI LJUBICA MR
+VRBAŠKI LJUBOMIR
+VRBAŠKI MILAN
+VRBAŠKI MILAN
+VRBAŠKI MILENA
+VRBAŠKI MILENKO
+VRBAŠKI MILICA
+VRBAŠKI MILORAD
+VRBAŠKI MIODRAG
+VRBAŠKI MIROSLAV
+VRBAŠKI MIROSLAV
+VRBAŠKI PAVLE
+VRBAŠKI PETAR DIPL ING
+VRBAŠKI PETAR
+VRBAŠKI PETAR
+VRBAŠKI RADA
+VRBAŠKI RADENKO
+VRBAŠKI SAVA
+VRBAŠKI SLOBODAN
+VRBAŠKI STEVAN DR
+VRBAŠKI SVETLANA
+VRBAŠKI TANJA
+VRBAŠKI TIMA
+VRBAŠKI TODOR
+VRBAŠKI VLADISLAV
+VRBAJAC ĐORĐE
+VRBAJAC CVEĆE
+VRBAJAC JOVAN
+VRBAJAC VALERIJA
+VRBANAC LAJOŠ
+VRBICA DRAGOLJUB
+VRBICA KSENIJA
+VRBICA PETAR
+VRBLJANAC ALEN
+VRCAN VALERIJA
+VRCELJ ŽIVKO
+VRCELJ BOŽIDAR
+VRCELJ LJILJANA
+VRCELJ MIHAJLO
+VRCELJ ZORAN
+VRDOLJAK BRANIMIR
+VRDOLJAK RADOVANKA
+VREŠĆAK IŠTVAN
+VREĆA BRANKO
+VREĆO VELIMIR
+VREBAC ZVONIMIR
+VREBALOV ALEKSANDRA
+VREBALOV STEVAN
+VREBALOV TIHOMIR
+VREVEZOSKI RISTO
+VREVIČIĆ ĐORĐE
+VREVIČIĆ SIMA
+VREVIČIĆ TRIVUN
+VRGOV KOSTA
+VRGOVIĆ DRAGAN
+VRGOVIĆ STEVAN
+VRGOVIĆ VERA
+VRGOVIĆ VLADIMIR
+VRHOVAC BRANISLAV
+VRHOVAC DANE
+VRHOVAC JASMINA
+VRHOVAC NEDELJKO
+VRHOVAC SLAVKO DIPL ING
+VRHOVAC TOMISLAV
+VRKEŠ GORAN
+VRMIĆ MLADEN
+VRNČIĆ ĐORĐE
+VRSAJKOV ILIJA
+VRSAJKOV ISIDOR
+VRSAJKOV JULKA
+VRSAJKOV LJUBICA
+VRSAJKOV MILOŠ
+VRSAJKOV NEVENKA
+VRSELJA VINKO
+VRTIKAPA JOVANKA
+VRTIPRAŠKI PETAR
+VRTIPRAŠKI RADOVAN DR
+VRTIPRAŠKI RADOVAN
+VRTIPRAŠKI VASA
+VRTOVŠNIK MIHAJLO
+VRTULEK SMILJA
+VRTUNIĆ BORISLAV
+VRTUNIĆ MARKO
+VRTUNIĆ NIKOLA
+VRTUNSKI DANICA
+VRTUNSKI HEDVIGA
+VRTUNSKI JULKA
+VRTUNSKI KATARINA
+VRTUNSKI MILAN
+VRTUNSKI MILICA
+VRTUNSKI MIODRAG
+VRTUNSKI MLADEN
+VRTUNSKI SRĐAN
+VRTUNSKI VLADIMIR
+VRUĆINIĆ RADOJICA
+VRUĆINIĆ RAJKO
+VRZIĆ BORISLAV
+VRZIĆ DRAGICA
+VRZIĆ DRAGICA
+VRZIĆ NADEŽDA
+VRZIĆ STEVO
+VUČAJ ALEKSANDAR
+VUČAJ FRAN
+VUČAJ MIOMIRA
+VUČAJ ROBERT
+VUČANOVIĆ PREDRAG
+VUČELIĆ RADOMIR
+VUČELIĆ SLAVKO
+VUČELIĆ VERA
+VUČELIĆ VLAJKO
+VUČEN MILANA
+VUČENIĆ PREDRAG
+VUČENOV ĐURICA
+VUČENOV KATALIN
+VUČENOV MIRJANA
+VUČENOV STEVAN
+VUČENOVIĆ ŽIVAN
+VUČENOVIĆ ŽIVAN
+VUČENOVIĆ BRANKA
+VUČENOVIĆ DESANKA
+VUČENOVIĆ DRAGOLJUB
+VUČENOVIĆ JOVAN
+VUČENOVIĆ LUKA
+VUČENOVIĆ MIRKO
+VUČENOVIĆ PETAR
+VUČENOVIĆ SRETO
+VUČENOVIĆ SVETLANA
+VUČERIĆ PRVOSLAV
+VUČETIĆ ŽIKA
+VUČETIĆ ŽIVKO
+VUČETIĆ ANĐELKA
+VUČETIĆ BOŽIDAR
+VUČETIĆ BOJANA
+VUČETIĆ DARINKA
+VUČETIĆ DESIMIR
+VUČETIĆ DEVA
+VUČETIĆ DIMITRIJE
+VUČETIĆ DRAGAN
+VUČETIĆ DUŠAN
+VUČETIĆ LAZAR
+VUČETIĆ LJILJANA
+VUČETIĆ MIĆA
+VUČETIĆ MILENA
+VUČETIĆ MILENA
+VUČETIĆ MILEN
+VUČETIĆ MILOSAV
+VUČETIĆ NIKOLA
+VUČETIĆ NIKOLA
+VUČETIĆ NINKO
+VUČETIĆ PETAR
+VUČETIĆ PETAR
+VUČETIĆ RADE
+VUČETIĆ RADOJKA
+VUČETIĆ RADOJKO
+VUČETIĆ RAJKO
+VUČETIĆ SANJA
+VUČETIĆ SLOBODAN
+VUČETIĆ SMILJKA
+VUČETIĆ SOFIJA
+VUČETIĆ STANKO
+VUČETIĆ STEVAN
+VUČETIĆ SVETLANA
+VUČETIĆ VANJA
+VUČETIĆ VELJKO DR
+VUČETIĆ VERA
+VUČETIĆ VLADISLAV
+VUČETIĆ ZORAN
+VUČETIĆ ZORAN
+VUČETIN ŽIVAN
+VUČETIN MILORAD
+VUČETIN PETAR
+VUČETIN SOFIJA
+VUČETIN TODOR
+VUČEVAC ŽELIMIR
+VUČEVIĆ ALEKSANDAR
+VUČEVIĆ BOŽANA
+VUČEVIĆ VALERIJA
+VUČIČEVIĆ MILAN
+VUČIČEVIĆ NIKOLA
+VUČIĆ ŽARKO
+VUČIĆ ĐORĐE
+VUČIĆ ĐURĐINKA
+VUČIĆ BOGDAN
+VUČIĆ BRANISLAVA
+VUČIĆ DRAGAN
+VUČIĆ DUŠAN
+VUČIĆ DUŠAN
+VUČIĆ JELENA
+VUČIĆ JOVANKA
+VUČIĆ JOVAN
+VUČIĆ KATICA
+VUČIĆ MARGITA
+VUČIĆ MILAN
+VUČIĆ MILAN
+VUČIĆ MIROSLAV
+VUČIĆ NEVENKA
+VUČIĆ NIKOLA
+VUČIĆ RADMILA
+VUČIĆ SLOBODAN
+VUČIĆ TODOR
+VUČIĆ VESELIN
+VUČIĆEVIĆ ĐORĐE
+VUČIĆEVIĆ BOŽIDAR
+VUČIĆEVIĆ DUŠAN
+VUČIĆEVIĆ GORDANA
+VUČIĆEVIĆ MILAN
+VUČIĆEVIĆ MILAN
+VUČIĆEVIĆ MILENKO
+VUČIĆEVIĆ MILICA
+VUČIĆEVIĆ MIODRAG
+VUČIĆEVIĆ NADEŽDA
+VUČIĆEVIĆ PETAR
+VUČIĆEVIĆ SELIMIR
+VUČIĆEVIĆ VUKOSAV
+VUČINIĆ ANĐELIJA
+VUČINIĆ ANDRIJA
+VUČINIĆ DUŠAN
+VUČINIĆ GAVRILO
+VUČINIĆ JANJA
+VUČINIĆ JASMINKA
+VUČINIĆ LJILJANA DR
+VUČINIĆ LJUBOMIR
+VUČINIĆ MARIJA
+VUČINIĆ MILAN
+VUČINIĆ MILAN
+VUČINIĆ MILISAV
+VUČINIĆ MILUTIN
+VUČINIĆ MIODRAG
+VUČINIĆ MLADEN
+VUČINIĆ MLADEN
+VUČINIĆ PETAR
+VUČINIĆ RADMILA
+VUČINIĆ RADMILA
+VUČINIĆ RADMILA
+VUČINIĆ RAJKO
+VUČINIĆ VESNA
+VUČINIĆ VLADIMIR
+VUČINIĆ VUKMAN
+VUČINIĆ ZLATIBOR
+VUČINOVIĆ RADMILA
+VUČKOV BOJANA
+VUČKOV BRANISLAV
+VUČKOV MARELA
+VUČKOV MILOVAN
+VUČKOVAC DRAGAN
+VUČKOVAC RADE
+VUČKOVAC TOMISLAV
+VUČKOVIĆ ČASLAV
+VUČKOVIĆ ŽARKO
+VUČKOVIĆ ŽIVKO
+VUČKOVIĆ ĐORĐE
+VUČKOVIĆ ĐORĐE
+VUČKOVIĆ ANĐELKO
+VUČKOVIĆ ANA
+VUČKOVIĆ BOGDAN
+VUČKOVIĆ BRANISLAV
+VUČKOVIĆ BRANKO
+VUČKOVIĆ BRANKO
+VUČKOVIĆ DOBRILA
+VUČKOVIĆ DRAGAN
+VUČKOVIĆ DRAGO
+VUČKOVIĆ DUŠANKA
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUBRAVKA
+VUČKOVIĆ EMIN
+VUČKOVIĆ EVICA
+VUČKOVIĆ GEORGIJE
+VUČKOVIĆ JANKO
+VUČKOVIĆ JANKO
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ LJUBICA
+VUČKOVIĆ LUKA DIPL OEC
+VUČKOVIĆ MARA
+VUČKOVIĆ MARIJA
+VUČKOVIĆ MARKO
+VUČKOVIĆ MARKO
+VUČKOVIĆ MIHAJLO
+VUČKOVIĆ MIHAJLO
+VUČKOVIĆ MILAN
+VUČKOVIĆ MILAN
+VUČKOVIĆ MILENA
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOJKA
+VUČKOVIĆ MILORAD
+VUČKOVIĆ MIODRAG
+VUČKOVIĆ MIODRAG
+VUČKOVIĆ MIRKO
+VUČKOVIĆ MIROSLAV
+VUČKOVIĆ MOMČILO
+VUČKOVIĆ NADA DR
+VUČKOVIĆ NADA
+VUČKOVIĆ NEDELJKO
+VUČKOVIĆ NIKOLA VETERINAR
+VUČKOVIĆ NOVICA
+VUČKOVIĆ PAULINA
+VUČKOVIĆ-PEURAČA LJILJANA
+VUČKOVIĆ RADIVOJ
+VUČKOVIĆ RADOVAN
+VUČKOVIĆ SAVETA
+VUČKOVIĆ-SIMIĆ VESNA
+VUČKOVIĆ SINIŠA
+VUČKOVIĆ STEVAN
+VUČKOVIĆ STOJAN DR LEKAR
+VUČKOVIĆ STOJAN DR
+VUČKOVIĆ SVETLANA
+VUČKOVIĆ TAJSIJA
+VUČKOVIĆ TOMO
+VUČKOVIĆ VASA
+VUČKOVIĆ VLADISLAV
+VUČKOVIĆ VOJISLAV
+VUČKOVIĆ VUKICA
+VUČKOVIĆ VUKOSAVA
+VUČUREVIĆ ČEDO
+VUČUREVIĆ ĐORĐE
+VUČUREVIĆ ANĐELIJA
+VUČUREVIĆ BILJANA
+VUČUREVIĆ BLAŽO
+VUČUREVIĆ BOŠKO
+VUČUREVIĆ BRANISLAV
+VUČUREVIĆ DARINKA
+VUČUREVIĆ DRAGOMIR
+VUČUREVIĆ DUŠAN
+VUČUREVIĆ GORDANA
+VUČUREVIĆ JELENA
+VUČUREVIĆ MAŠA
+VUČUREVIĆ MILOŠ
+VUČUREVIĆ MIRKO
+VUČUREVIĆ MLADEN
+VUČUREVIĆ NADA
+VUČUREVIĆ NIKOLA
+VUČUREVIĆ PETAR
+VUČUREVIĆ TEREZIJA
+VUČUREVIĆ UROŠ
+VUČUREVIĆ VESNA
+VUČUREVIĆ VLADISLAVA
+VUČUREVIĆ VLADO
+VUČUREVIĆ VOJISLAV
+VUČUREVIĆ VOJO
+VUČUROVIĆ JASNA
+VUČUROVIĆ JOVAN
+VUČUROVIĆ MIRKO
+VUČUROVIĆ MIROSLAV
+VUČUROVIĆ MLADEN
+VUČUROVIĆ PREDRAG
+VUČUROVIĆ SLOBODAN DR
+VUŠTAR BOGDAN
+VUCELIĆ SLOBODAN DIPL ING
+VUCELJA DRAGAN
+VUCELJA MILOŠ
+VUCELJA-PETRONIJEVIĆ VERA
+VUCELJA TRIVUN
+VUCELJA VOJIN
+VUDRAG SAVO
+VUDRAG ZORAN
+VUDRAG ZORAN
+VUDRAKOVIĆ RATKO
+VUGDELIĆ DOBRIVOJ
+VUGDELIĆ VUK
+VUGLEC EDITA
+VUGRENIČEK ĐURA
+VUGRENIČEK MAGDA
+VUGRIN STEVAN
+VUGRINČIĆ ANKA
+VUGRINČIĆ FRANJO
+VUGRINČIĆ JAROSLAV
+VUGRINEC RUDOLF
+VUIĆ JOSIP
+VUJČIĆ DRAGAN
+VUJČIĆ MILE
+VUJČIĆ PETAR
+VUJČIĆ PETRIJA
+VUJČIN JOVAN
+VUJČIN MILAN
+VUJČIN MITA
+VUJAČIĆ DRAGUTIN
+VUJAČIĆ DUBRAVKA
+VUJAČIĆ MILISAV
+VUJAČIĆ MILORAD
+VUJAČIĆ MILORAD
+VUJAČIĆ NIKOLA
+VUJAČIĆ RADOSAV
+VUJAČIĆ RAJKO
+VUJAŠKOVIĆ SLAVKO
+VUJAŠKOVIĆ VLADIMIR
+VUJAŠKOVIĆ VLADISLAV
+VUJAŠKOVIĆ ZORA
+VUJACKOV ĐORĐE
+VUJACKOV ALEKSANDAR
+VUJACKOV JOVAN
+VUJADINOV DOBRIVOJE DIPL ING
+VUJADINOVIĆ BLAGOJE
+VUJADINOVIĆ BRANISLAVA
+VUJADINOVIĆ LJUBICA
+VUJADINOVIĆ MILAN
+VUJADINOVIĆ MILIVOJE
+VUJADINOVIĆ MILIVOJ
+VUJADINOVIĆ MILIVOJ
+VUJADINOVIĆ RADOŠ
+VUJADINOVIĆ RAJKO
+VUJADINOVIĆ SLAVICA
+VUJADINOVIĆ SVETOZAR
+VUJADINOVIĆ TOMISLAV
+VUJADINOVIĆ VERA
+VUJADINOVIĆ VIŠNJA
+VUJADINOVIĆ VITO
+VUJADINOVIĆ VOJISLAV
+VUJAKLIJA DESA
+VUJAKLIJA STANKO
+VUJAKOVIĆ ĐURAĐ
+VUJAKOVIĆ DRAGUTIN
+VUJAKOVIĆ KRSTAN
+VUJAKOVIĆ SLOBODAN
+VUJAKOVIĆ VASO
+VUJAKOVIĆ VUJO
+VUJANIĆ ŽIVOSAV
+VUJANIĆ ŽIVOSLAV
+VUJANIĆ BORIVOJ
+VUJANIĆ BRANKO
+VUJANIĆ GORDANA
+VUJANIĆ JORDAN
+VUJANIĆ KORNELIJA
+VUJANIĆ MILAN
+VUJANIĆ MILE
+VUJANIĆ MILOVAN
+VUJANIĆ NEDELJKA
+VUJANIĆ PETAR
+VUJANIĆ-VARGA DINKA DR
+VUJANOV ALEKSANDAR
+VUJANOV MILANKA
+VUJANOV NIKOLA
+VUJANOVIĆ ŽARKO
+VUJANOVIĆ ALEKSANDAR
+VUJANOVIĆ BOŠKO
+VUJANOVIĆ BOŽIDAR DR
+VUJANOVIĆ BOŽIDAR
+VUJANOVIĆ BORISLAV
+VUJANOVIĆ BRANKO
+VUJANOVIĆ DESIMIR
+VUJANOVIĆ DIMITRIJE
+VUJANOVIĆ DIMITRIJE
+VUJANOVIĆ DRAGICA
+VUJANOVIĆ JOVANKA
+VUJANOVIĆ JOVO
+VUJANOVIĆ MIJO
+VUJANOVIĆ MILAN
+VUJANOVIĆ MILE
+VUJANOVIĆ MILINKA
+VUJANOVIĆ MILORAD
+VUJANOVIĆ MIRKO
+VUJANOVIĆ MLADEN
+VUJANOVIĆ SIMO
+VUJANOVIĆ SLAVOLJUB
+VUJANOVIĆ STANA
+VUJANOVIĆ STOJAN
+VUJANOVIĆ VITOMIR
+VUJASIN STRAILO
+VUJASINOVIĆ ČEDOMIR
+VUJASINOVIĆ JELICA
+VUJASINOVIĆ LJUBOMIR
+VUJASINOVIĆ MARKO
+VUJASINOVIĆ MILAN
+VUJASINOVIĆ MIROSLAV
+VUJASINOVIĆ RADMILA
+VUJATOVIĆ MILENKO
+VUJATOVIĆ MIRJANA
+VUJATOVIĆ TEODOR
+VUJEVIĆ RUŽA
+VUJIČIĆ ĐORĐE
+VUJIČIĆ BISERKA
+VUJIČIĆ BOŽIDAR
+VUJIČIĆ CVETA
+VUJIČIĆ DANILO DR
+VUJIČIĆ DOBRILA
+VUJIČIĆ DRAGAN
+VUJIČIĆ DUŠAN
+VUJIČIĆ GOJKO
+VUJIČIĆ IGNJAT
+VUJIČIĆ ILIJA
+VUJIČIĆ IVICA DR PROF
+VUJIČIĆ MARKO
+VUJIČIĆ MIHAJLO
+VUJIČIĆ MILENKO
+VUJIČIĆ MILOŠ
+VUJIČIĆ MILOŠ
+VUJIČIĆ PETAR
+VUJIČIĆ PETRA
+VUJIČIĆ RADOSLAV
+VUJIČIĆ RANKO
+VUJIČIĆ RATKO
+VUJIČIĆ RATKO
+VUJIČIĆ SIMO
+VUJIČIĆ SLOBODAN
+VUJIČIĆ SRĐAN
+VUJIČIĆ STANKO
+VUJIČIĆ STEVAN
+VUJIČIĆ STOJAN DIPL ING
+VUJIČIĆ SVETKO
+VUJIČIĆ TOMISLAV
+VUJIČIĆ VASILIJE
+VUJIČIĆ VERA
+VUJIČIĆ VERICA
+VUJIČIĆ VLADIMIR
+VUJIČIĆ VOJIN
+VUJIČIN ŽARKO
+VUJIČIN ĐORĐE
+VUJIČIN ĐURĐICA
+VUJIČIN LJUBICA
+VUJIČIN PETAR
+VUJIĆ ŽARKO
+VUJIĆ ŽIVKO
+VUJIĆ ĐORĐE
+VUJIĆ ĐORĐE
+VUJIĆ ĐURĐIJA
+VUJIĆ ĐURA
+VUJIĆ ĐURA
+VUJIĆ ALEKSANDAR
+VUJIĆ ALEKSANDAR
+VUJIĆ ANĐELIJA
+VUJIĆ ANTE
+VUJIĆ ANTE
+VUJIĆ BORISLAV
+VUJIĆ BRANISLAV
+VUJIĆ BRANISLAV
+VUJIĆ BRANKA
+VUJIĆ DRAGA
+VUJIĆ DRAGA
+VUJIĆ DRAGINJA
+VUJIĆ DRAGOSLAVA
+VUJIĆ DRAGOSLAV
+VUJIĆ DUŠAN
+VUJIĆ IVAN DR
+VUJIĆ IVAN DR
+VUJIĆ IVANKA
+VUJIĆ JAKOB DR LEKAR
+VUJIĆ JOVAN
+VUJIĆ JOVAN
+VUJIĆ JOVO
+VUJIĆ KATARINA
+VUJIĆ-KOSO VESNA
+VUJIĆ LAZAR
+VUJIĆ LJUBAN
+VUJIĆ LJUBICA
+VUJIĆ MARIJA PROFESOR
+VUJIĆ MILAN
+VUJIĆ MILEVA
+VUJIĆ MILEVA
+VUJIĆ MILEVKA
+VUJIĆ MILICA
+VUJIĆ MILOŠ DR
+VUJIĆ MILOŠ
+VUJIĆ MILOŠ
+VUJIĆ MILOŠ
+VUJIĆ MIRA
+VUJIĆ MIROSLAV DIPL ING
+VUJIĆ MOMIR
+VUJIĆ NADA
+VUJIĆ NADA
+VUJIĆ PAVLE DR
+VUJIĆ PREDRAG
+VUJIĆ RADIVOJ
+VUJIĆ RADOSLAV
+VUJIĆ RATKA
+VUJIĆ SAVO
+VUJIĆ SAVO
+VUJIĆ SLAVKA
+VUJIĆ SOFIJA
+VUJIĆ STANKO
+VUJIĆ STANKO
+VUJIĆ STEVAN
+VUJIĆ STEVAN
+VUJIĆ STEVAN
+VUJIĆ VERA
+VUJIĆ VESNA
+VUJIĆ VLADIMIR
+VUJIĆ VLADIMIR
+VUJIĆ VOJISLAVA
+VUJIĆ ZORAN
+VUJIN ĐOKA
+VUJIN ĐURICA
+VUJIN ALEKSANDAR
+VUJIN DANICA
+VUJIN DAVID
+VUJIN JEVREM
+VUJIN JOVANKA
+VUJIN LAZAR
+VUJIN MARA
+VUJIN MELANIJA
+VUJIN MIRJANA
+VUJIN RADIVOJ
+VUJIN RADOVAN
+VUJIN SLAVKO
+VUJIN SLOBODAN
+VUJIN SVETOZAR
+VUJIN VUJADIN
+VUJINOVIĆ ŽIVKA
+VUJINOVIĆ ĐURA
+VUJINOVIĆ ĐURO
+VUJINOVIĆ BORISLAV
+VUJINOVIĆ BRANIMIR
+VUJINOVIĆ GNJATIJA
+VUJINOVIĆ JOVO
+VUJINOVIĆ LJUBOMIR
+VUJINOVIĆ MILOŠ
+VUJINOVIĆ MLADINKO
+VUJINOVIĆ NADA
+VUJINOVIĆ SRETEN
+VUJINOVIĆ STOJAN
+VUJINOVIĆ TEODOSIJE
+VUJINOVIĆ VERA
+VUJINOVIĆ VIDOJE
+VUJKO SAVA
+VUJKOV ČEDOMIR
+VUJKOV ĐORĐE
+VUJKOV ALEKSANDAR
+VUJKOV ANTINIJA
+VUJKOV BOŽIDAR
+VUJKOV BOŽIDAR
+VUJKOV DRAGICA
+VUJKOV DRAGINJA
+VUJKOV DRAGOLJUB
+VUJKOV DUŠAN
+VUJKOV DUŠAN
+VUJKOV-ISAKOV JAGICA
+VUJKOV JELENA
+VUJKOV LAZAR
+VUJKOV LAZAR
+VUJKOV MILAN DIPL ING
+VUJKOV MILANA
+VUJKOV MILANA
+VUJKOV MILAN
+VUJKOV MILAN
+VUJKOV MILENA
+VUJKOV MILICA
+VUJKOV MILICA
+VUJKOV MILIVOJ
+VUJKOV MIRJANA
+VUJKOV MIROSLAV DIPL ING
+VUJKOV MIROSLAV
+VUJKOV NADA
+VUJKOV NENAD
+VUJKOV OLGA
+VUJKOV PAVLE
+VUJKOV PERA
+VUJKOV PETAR DIPL PRAVNIK
+VUJKOV RADIVOJ
+VUJKOV RADOSLAV
+VUJKOV SAVA
+VUJKOV SAVA
+VUJKOV SENKA
+VUJKOV SIMA
+VUJKOV SLAVKO
+VUJKOV SLOBODAN
+VUJKOV SNEŽANA
+VUJKOV SNEŽANA
+VUJKOV STEVAN
+VUJKOV SVETOZAR
+VUJKOV TAMARA
+VUJKOV TOMISLAV
+VUJKOV VASA DR
+VUJKOV VESELIN DR PROF
+VUJKOV VLADIMIR
+VUJKOV ZDRAVKO
+VUJKOV ZDRAVKO
+VUJKOVIĆ ĐURA
+VUJKOVIĆ DRAGAN
+VUJKOVIĆ GORDANA
+VUJKOVIĆ GOSPAVA
+VUJKOVIĆ MIRA
+VUJKOVIĆ NIKOLA
+VUJKOVIĆ RUŽA
+VUJKOVIĆ SLOBODAN
+VUJKOVIĆ STEVAN
+VUJNOVIĆ ANKA
+VUJNOVIĆ BOSILJKA
+VUJNOVIĆ DRAGAN
+VUJNOVIĆ GOJKO
+VUJNOVIĆ GOJKO
+VUJNOVIĆ ILIJA
+VUJNOVIĆ-MIHAJLOVIĆ DESANKA
+VUJNOVIĆ MILAN
+VUJNOVIĆ MILAN
+VUJNOVIĆ VELJKO
+VUJNOVIĆ VERA
+VUJNOVIĆ ZORA
+VUJOŠEVIĆ BORISLAV
+VUJOŠEVIĆ BRANKO DIPL OEC
+VUJOŠEVIĆ DOBRISLAV
+VUJOŠEVIĆ DUŠAN
+VUJOŠEVIĆ KLARA
+VUJOŠEVIĆ LJUBOMIR
+VUJOŠEVIĆ MILAN
+VUJOŠEVIĆ NIKOLA
+VUJOŠEVIĆ RATKO
+VUJOŠEVIĆ ZORA
+VUJOVIĆ ĐORĐE
+VUJOVIĆ ALEKSANDAR
+VUJOVIĆ BLAŽO
+VUJOVIĆ BLAGOJE
+VUJOVIĆ BOŽIDAR
+VUJOVIĆ DANICA
+VUJOVIĆ DARINKA
+VUJOVIĆ DRAGOLJUB
+VUJOVIĆ DUŠAN
+VUJOVIĆ MARTA
+VUJOVIĆ MIHAILO
+VUJOVIĆ MILOMIR
+VUJOVIĆ MILORAD
+VUJOVIĆ MILORAD
+VUJOVIĆ MILORAD
+VUJOVIĆ MILOVAN
+VUJOVIĆ MIODRAG
+VUJOVIĆ MIOMIR
+VUJOVIĆ MIRJANA
+VUJOVIĆ NEĐELJKO
+VUJOVIĆ NEĐO
+VUJOVIĆ NOVICA
+VUJOVIĆ OLGA
+VUJOVIĆ PAVLE
+VUJOVIĆ PAVLE
+VUJOVIĆ PETKO
+VUJOVIĆ RADIVOJE
+VUJOVIĆ RADIVOJ
+VUJOVIĆ RADOJE
+VUJOVIĆ RATKO
+VUJOVIĆ SLOBODAN
+VUJOVIĆ SLOBODAN
+VUJOVIĆ STEVAN
+VUJOVIĆ SVETISLAV
+VUJOVIĆ VASILIJE
+VUJOVIĆ VASILIJE
+VUJOVIĆ VASILIJE
+VUJOVIĆ VELJKO
+VUJOVIĆ VESELIN
+VUJOVIĆ VLADO
+VUJOVIĆ VLAJKO
+VUJOVIĆ VLATKO
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VUKICA
+VUJOVIĆ ZORAN
+VUKČEVIĆ DUŠAN
+VUKČEVIĆ GORDANA
+VUKČEVIĆ JOVAN
+VUKČEVIĆ KRSTO
+VUKČEVIĆ LJUBOMIR
+VUKČEVIĆ LJUBOMIR
+VUKČEVIĆ MILENKO
+VUKČEVIĆ MILENKO
+VUKČEVIĆ PETAR
+VUKČEVIĆ SAVO
+VUKČEVIĆ SOFIJA
+VUKČEVIĆ STEVAN
+VUKČEVIĆ ZORAN
+VUKŠA ČEDO
+VUKŠA ŽELJKO
+VUKŠA BORIVOJE
+VUKŠA LAZAR
+VUKŠA MILENKO
+VUKŠA MILUTIN
+VUKŠA PETAR
+VUKŠA VJERA
+VUKAŠEVIĆ MILO
+VUKAŠEVIĆ SLOBODAN
+VUKAŠIN JOVAN
+VUKAŠINOV BRANIMIR
+VUKAŠINOV CVETKO
+VUKAŠINOV STEVAN
+VUKAŠINOVIĆ ŽARKO
+VUKAŠINOVIĆ ŽIVAN
+VUKAŠINOVIĆ ĐORĐE
+VUKAŠINOVIĆ BOŽIDAR
+VUKAŠINOVIĆ BOJAN
+VUKAŠINOVIĆ DRAGAN
+VUKAŠINOVIĆ DRAGINJA
+VUKAŠINOVIĆ DRAGOLJUB
+VUKAŠINOVIĆ IRENA
+VUKAŠINOVIĆ IRENA
+VUKAŠINOVIĆ LAZAR
+VUKAŠINOVIĆ LAZAR
+VUKAŠINOVIĆ MILAN
+VUKAŠINOVIĆ MILE
+VUKAŠINOVIĆ MILICA
+VUKAŠINOVIĆ MIRA
+VUKAŠINOVIĆ MIRJANA
+VUKAŠINOVIĆ MIROSLAV
+VUKAŠINOVIĆ MOMIR
+VUKAŠINOVIĆ NIKOLA
+VUKAŠINOVIĆ PAVLE
+VUKAŠINOVIĆ RADOJE
+VUKAŠINOVIĆ SPOMENKA
+VUKAŠINOVIĆ STOJAN
+VUKAŠINOVIĆ VERA
+VUKAŠINOVIĆ VERICA
+VUKAŠINOVIĆ VESELIN
+VUKAŠINOVIĆ VIDA
+VUKAŠINOVIĆ ZDRAVKO
+VUKADIN DOBRIVOJE
+VUKADIN TOMISLAV
+VUKADINOV ĐORĐE
+VUKADINOV ĐURA
+VUKADINOV BOJKA
+VUKADINOV BRANISLAV
+VUKADINOV ISIDOR
+VUKADINOV IVANKA
+VUKADINOV IVANKA
+VUKADINOV JOVAN
+VUKADINOV KATICA
+VUKADINOV MILENKO
+VUKADINOV MIODRAG
+VUKADINOV NENAD
+VUKADINOVIĆ ANĐELKO
+VUKADINOVIĆ BILJANA
+VUKADINOVIĆ BOSILJKA
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANKO
+VUKADINOVIĆ GABRIJELA PROFESOR
+VUKADINOVIĆ JELICA
+VUKADINOVIĆ LEPOSAVA
+VUKADINOVIĆ LJUBO
+VUKADINOVIĆ MILENKO
+VUKADINOVIĆ MILIVOJE
+VUKADINOVIĆ MILJOJKO
+VUKADINOVIĆ MILOŠ
+VUKADINOVIĆ MILOJE
+VUKADINOVIĆ MILORAD
+VUKADINOVIĆ NIKOLA
+VUKADINOVIĆ PAVLE DR
+VUKADINOVIĆ PETAR
+VUKADINOVIĆ PETAR
+VUKADINOVIĆ SOFIJA LOKAL
+VUKADINOVIĆ SOFIJA
+VUKADINOVIĆ STANA
+VUKADINOVIĆ STEVAN DR
+VUKADINOVIĆ SVETOZAR
+VUKADINOVIĆ SVETOZAR
+VUKADINOVIĆ TATJANA
+VUKADINOVIĆ VELIZAR
+VUKADINOVIĆ VLADISAV
+VUKADINOVIĆ ZOLIKA
+VUKADINOVIĆ ZOLIKA
+VUKAJLOV BUDIMIR
+VUKAJLOV MIROSLAV
+VUKAJLOVIĆ ŽIVAN PROFESOR
+VUKAJLOVIĆ ĐORĐE
+VUKAJLOVIĆ ANKICA
+VUKAJLOVIĆ DANILO
+VUKAJLOVIĆ DARINKA
+VUKAJLOVIĆ DUŠAN
+VUKAJLOVIĆ ELIZABETA
+VUKAJLOVIĆ LAZAR
+VUKAJLOVIĆ MILENA
+VUKAJLOVIĆ MIRJANA
+VUKAJLOVIĆ SRETO
+VUKAJLOVIĆ STEVAN
+VUKALIĆ MUMIN
+VUKALJEVIĆ ILIJA
+VUKALJEVIĆ SLAVKO
+VUKALOVIĆ SVETLANA
+VUKANIĆ ALEKSANDAR
+VUKANIĆ PETAR
+VUKANIĆ SRETEN
+VUKANIĆ ZORAN
+VUKANIĆ ZORAN
+VUKANOVIĆ ŽIVKA
+VUKANOVIĆ ANICA
+VUKANOVIĆ MARINA
+VUKANOVIĆ MIROSLAV
+VUKANOVIĆ NEBOJŠA
+VUKANOVIĆ RADIVOJ
+VUKANOVIĆ SLAVIMIR
+VUKANOVIĆ SLOBODAN
+VUKANOVIĆ SLOBODAN
+VUKAS ĐORĐE
+VUKAS ĐURO
+VUKAS ANKICA
+VUKAS BRANKO
+VUKAS OMERKA
+VUKASOVIĆ BRANISLAV
+VUKASOVIĆ MARIJA
+VUKASOVIĆ MILAN
+VUKASOVIĆ SLAVICA
+VUKAVIĆ ALEKSANDRA
+VUKELIĆ ANĐELKA
+VUKELIĆ BORISLAV
+VUKELIĆ BRANKO
+VUKELIĆ BRANKO
+VUKELIĆ DARA
+VUKELIĆ DRAGAN
+VUKELIĆ JOVAN
+VUKELIĆ LJUBOMIR
+VUKELIĆ MILAN
+VUKELIĆ MILE
+VUKELIĆ MILICA
+VUKELIĆ MIODRAG
+VUKELIĆ MOMIR
+VUKELIĆ PAVLE
+VUKELIĆ PETAR
+VUKELIĆ PETAR
+VUKELIĆ RADA
+VUKELIĆ RADE
+VUKELIĆ SILVIJE
+VUKELIĆ SIMO
+VUKELIĆ SLAVKO
+VUKELIĆ STEVAN
+VUKELIĆ STEVAN
+VUKELIĆ TOMISLAV
+VUKELIĆ VELJKO
+VUKELIĆ VERICA
+VUKELIĆ VESNA
+VUKELIĆ VUKICA
+VUKELIĆ ZDRAVKO DR
+VUKELIĆ ZORICA
+VUKELIĆ ZVONIMIR
+VUKELJA BRANKA
+VUKIČEVIĆ DRAGOMIR
+VUKIČEVIĆ LJILJANA
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MITAR DIPL PRAVNIK
+VUKIČEVIĆ RANKO
+VUKIČEVIĆ SPASOJE
+VUKIČEVIĆ VESNA
+VUKIĆ-ĆULAFIĆ BRANKA
+VUKIĆ ŽIVKO
+VUKIĆ ANDREJ
+VUKIĆ BOŽIDAR
+VUKIĆ BORISLAV
+VUKIĆ BRANKO
+VUKIĆ BRANKO
+VUKIĆ BUDIMIR
+VUKIĆ DEJAN
+VUKIĆ DIMITRIJE
+VUKIĆ DUŠAN
+VUKIĆ IVANKA
+VUKIĆ JOVAN
+VUKIĆ LJUBICA
+VUKIĆ LJUBOMIR
+VUKIĆ MARIJA
+VUKIĆ MILAN
+VUKIĆ MILICA
+VUKIĆ MIRJANA
+VUKIĆ MIRKO
+VUKIĆ MOMČILO
+VUKIĆ NIKOLA
+VUKIĆ NIKOLA
+VUKIĆ NOVAK
+VUKIĆ PETAR
+VUKIĆ STANKO
+VUKIĆ STEVAN
+VUKIĆ VELIMIR
+VUKIĆ VLADO
+VUKIĆ VUKAŠIN
+VUKIĆEVIĆ ĐORĐE
+VUKIĆEVIĆ ĐORĐE
+VUKIĆEVIĆ ALEKSANDAR
+VUKIĆEVIĆ BRATISLAV
+VUKIĆEVIĆ DRAGICA
+VUKIĆEVIĆ DUŠANKA
+VUKIĆEVIĆ ISIDOR
+VUKIĆEVIĆ ISIDOR
+VUKIĆEVIĆ MIOMIR
+VUKIĆEVIĆ MIROSLAV
+VUKIĆEVIĆ MIROSLAV
+VUKIĆEVIĆ MOMČILO DR
+VUKIĆEVIĆ STANIŠA
+VUKIĆEVIĆ TOMA
+VUKIĆEVIĆ VELJKO
+VUKLIŠ DRAGAN
+VUKLIŠ SLOBODAN
+VUKMANOVIĆ DANILO
+VUKMANOVIĆ LJUBA
+VUKMANOVIĆ MILANA
+VUKMANOVIĆ MILAN
+VUKMANOVIĆ NENAD
+VUKMANOVIĆ PETAR
+VUKMANOVIĆ SIMO
+VUKMANOVIĆ VELIMIR
+VUKMANOVIĆ VERA
+VUKMIROVIĆ ĐORĐE
+VUKMIROVIĆ ĐORĐE
+VUKMIROVIĆ BOŽIDAR
+VUKMIROVIĆ BRANKO
+VUKMIROVIĆ BRANKO
+VUKMIROVIĆ DANE
+VUKMIROVIĆ DRAGAN
+VUKMIROVIĆ GOJKO
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ JANJA
+VUKMIROVIĆ LJUBOMIR
+VUKMIROVIĆ MILAN
+VUKMIROVIĆ MILAN
+VUKMIROVIĆ MILICA
+VUKMIROVIĆ MILOŠ
+VUKMIROVIĆ MILO
+VUKMIROVIĆ NIKOLA
+VUKMIROVIĆ PETAR
+VUKMIROVIĆ RANKO
+VUKMIROVIĆ RANKO
+VUKMIROVIĆ RODOLJUB
+VUKMIROVIĆ SMILJKA
+VUKMIROVIĆ SREĆKO
+VUKMIROVIĆ VELINKA
+VUKMIROVIĆ VUKICA
+VUKMIROVIĆ ZDRAVKA
+VUKNIĆ MARIJAN
+VUKOBRAD DRAGO
+VUKOBRAD LJUBOMIR
+VUKOBRAD MARKO
+VUKOBRAD MILOŠ
+VUKOBRAT DANICA
+VUKOBRAT DRAGAN
+VUKOBRAT JOŠO
+VUKOBRAT LJUBOMIR
+VUKOBRAT MILAN
+VUKOBRAT NIKOLA
+VUKOBRAT PETAR
+VUKOBRAT TATJANA
+VUKOBRAT ZDRAVKO
+VUKOBRATOV RADOVAN DIPL ING
+VUKOBRATOV SLOBODAN
+VUKOBRATOVIĆ BOGDAN
+VUKOBRATOVIĆ DANICA
+VUKOBRATOVIĆ JOVAN
+VUKOBRATOVIĆ MIRJANA
+VUKOBRATOVIĆ NADA
+VUKOBRATOVIĆ SLAVICA
+VUKOJČIĆ DUŠAN
+VUKOJA ANTUN
+VUKOJE DUŠAN
+VUKOJE GAŠO
+VUKOJE ILIJA
+VUKOJE JOVAN
+VUKOJE MILANA
+VUKOJE RADIVOJE
+VUKOJE RADMILA
+VUKOJE RADOVAN
+VUKOJE VANJA
+VUKOJE VOJO
+VUKOJEV BOGDAN
+VUKOJEV DUŠAN
+VUKOJEV DUŠAN
+VUKOJEV SLOBODAN
+VUKOJEVIĆ ĐURO
+VUKOJEVIĆ MARA
+VUKOJEVIĆ MIĆO
+VUKOJEVIĆ MIODRAG
+VUKOJEVIĆ NIKO
+VUKOJEVIĆ VERICA
+VUKOJEVIĆ VIDOSAV
+VUKOJEVIĆ ZORAN
+VUKOJIČIĆ BORISLAV
+VUKOJIČIĆ DRAGAN
+VUKOJIČIĆ MIODRAG
+VUKOJIČIĆ MIODRAG
+VUKOJIČIĆ SLAVOLJUB
+VUKOMAN EMILIJA
+VUKOMAN MILORAD
+VUKOMAN RADA
+VUKOMAN ZORAN
+VUKOMAN ZORKA
+VUKOMANOV JOVAN
+VUKOMANOVIĆ ANDRIJA
+VUKOMANOVIĆ KATICA
+VUKOMANOVIĆ NIKOLA
+VUKOMANOVIĆ RADOMIR
+VUKOMANOVIĆ SLAVKO
+VUKOSAV BORIVOJE
+VUKOSAV BORKO DR
+VUKOSAV DOBRILA
+VUKOSAV JOVO
+VUKOSAV MILOVAN
+VUKOSAV RADE
+VUKOSAV SENKA
+VUKOSAV VLAJKO
+VUKOSAVLJEV BOGDANKA
+VUKOSAVLJEV DANICA
+VUKOSAVLJEV DRAGICA
+VUKOSAVLJEV JELENA
+VUKOSAVLJEV LAZAR
+VUKOSAVLJEV MAKSA
+VUKOSAVLJEV MILAN
+VUKOSAVLJEV PETAR
+VUKOSAVLJEV SAVA
+VUKOSAVLJEV SLAVICA
+VUKOSAVLJEV STEVAN
+VUKOSAVLJEV VOJIN DIPL ING
+VUKOSAVLJEVIĆ ANĐELKA
+VUKOSAVLJEVIĆ BARBARA
+VUKOSAVLJEVIĆ CVIJETIN
+VUKOSAVLJEVIĆ DRAGICA
+VUKOSAVLJEVIĆ IVAN
+VUKOSAVLJEVIĆ LJUBICA
+VUKOSAVLJEVIĆ LUKA
+VUKOSAVLJEVIĆ MARA
+VUKOSAVLJEVIĆ MILENKO
+VUKOSAVLJEVIĆ MILORAD
+VUKOSAVLJEVIĆ MIRA
+VUKOSAVLJEVIĆ MIROSLAV
+VUKOSAVLJEVIĆ PAVLE
+VUKOSAVLJEVIĆ SLOBODAN
+VUKOSAVLJEVIĆ STOJAN
+VUKOSLAVČEVIĆ NIKOLA
+VUKOSLAVČEVIĆ ZARIJE
+VUKOSLAVOVIĆ RADONJA
+VUKOTA MARKO
+VUKOTA MILAN
+VUKOTIĆ BRANKO
+VUKOTIĆ IVA
+VUKOTIĆ KATARINA
+VUKOTIĆ-KOVAČEVIĆ BILJANA
+VUKOTIĆ LUKA
+VUKOTIĆ MARA
+VUKOTIĆ MARIJA
+VUKOTIĆ MILAN
+VUKOTIĆ MILICA
+VUKOTIĆ MIODRAG
+VUKOTIĆ NENAD
+VUKOTIĆ NIKOLA
+VUKOTIĆ OLGA
+VUKOTIĆ PERIŠA
+VUKOTIĆ RADOJE
+VUKOTIĆ RADOVAN
+VUKOTIĆ SOFIJA
+VUKOTIĆ ZORICA
+VUKOV ŽIVKO
+VUKOV ĐORĐE
+VUKOV ĐORĐE
+VUKOV BOŠKO
+VUKOV BOŠKO
+VUKOV BOŽANA
+VUKOV BRANISLAV
+VUKOV BRANISLAV
+VUKOV DRAGAN
+VUKOV DRAGOLJUB
+VUKOV JOVAN
+VUKOV JOVAN
+VUKOV LAZAR
+VUKOV LJUBOMIR
+VUKOV MARIJA
+VUKOV MARKO
+VUKOV NIKOLIJA
+VUKOV OLGA
+VUKOV STEVICA
+VUKOV VUKAŠIN
+VUKOVAC DRAGAN
+VUKOVAC PANTA
+VUKOVIĆ ŠTEFICA
+VUKOVIĆ ŽIVKO
+VUKOVIĆ ŽIVOJIN
+VUKOVIĆ ĐORĐE
+VUKOVIĆ ĐUKA
+VUKOVIĆ ALEKSANDAR
+VUKOVIĆ ALEKSANDRA
+VUKOVIĆ ALEKSIJA
+VUKOVIĆ ANDRIJA
+VUKOVIĆ ANTO
+VUKOVIĆ BILJANA
+VUKOVIĆ BLAŽO
+VUKOVIĆ BLAGOJE
+VUKOVIĆ BOŠKO
+VUKOVIĆ BOŠKO
+VUKOVIĆ BOGIĆ
+VUKOVIĆ BOJANA
+VUKOVIĆ BOJANA
+VUKOVIĆ BORIŠA
+VUKOVIĆ BORIŠA
+VUKOVIĆ BORIVOJ
+VUKOVIĆ BOSILJKA
+VUKOVIĆ BRANISLAV
+VUKOVIĆ BUDIMIR
+VUKOVIĆ CVETKO
+VUKOVIĆ DARINKA
+VUKOVIĆ DOBRIVOJE
+VUKOVIĆ DRAGAN
+VUKOVIĆ DRAGAN
+VUKOVIĆ DRAGOLJUB
+VUKOVIĆ DRAGOSLAV
+VUKOVIĆ DRAGO
+VUKOVIĆ DUŠAN DR LEKAR
+VUKOVIĆ DUŠANKA
+VUKOVIĆ DUŠAN
+VUKOVIĆ DUŠAN
+VUKOVIĆ GEZA NOVINAR
+VUKOVIĆ GOJKO
+VUKOVIĆ GORAN
+VUKOVIĆ GORDANA
+VUKOVIĆ ILIJA
+VUKOVIĆ ILIJA
+VUKOVIĆ IVAN
+VUKOVIĆ IVAN
+VUKOVIĆ IVICA
+VUKOVIĆ JASMINA
+VUKOVIĆ JELICA
+VUKOVIĆ JOSIP
+VUKOVIĆ JOVA
+VUKOVIĆ JULIJANA
+VUKOVIĆ JULIJANA
+VUKOVIĆ LJUBAN
+VUKOVIĆ MARGARETA
+VUKOVIĆ MARJENKA
+VUKOVIĆ MATO
+VUKOVIĆ MILADIN
+VUKOVIĆ MILAN
+VUKOVIĆ MILAN
+VUKOVIĆ MILENA
+VUKOVIĆ MILENA
+VUKOVIĆ MILENKO
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJ
+VUKOVIĆ MILJAN
+VUKOVIĆ MILKA
+VUKOVIĆ MILKA
+VUKOVIĆ MILORAD
+VUKOVIĆ MILUTIN
+VUKOVIĆ MILUTIN
+VUKOVIĆ MIODRAG
+VUKOVIĆ MIODRAG
+VUKOVIĆ MIRJANA
+VUKOVIĆ MIRJANA
+VUKOVIĆ MIRKO
+VUKOVIĆ MIRKO
+VUKOVIĆ MIROJE
+VUKOVIĆ MIROSLAV
+VUKOVIĆ MIROSLAV
+VUKOVIĆ MITAR
+VUKOVIĆ MITAR
+VUKOVIĆ MITA
+VUKOVIĆ MLADEN
+VUKOVIĆ NADA
+VUKOVIĆ NADA
+VUKOVIĆ NEDA
+VUKOVIĆ OBRAD
+VUKOVIĆ OBRAD
+VUKOVIĆ OLGICA
+VUKOVIĆ OLGICA
+VUKOVIĆ PETAR
+VUKOVIĆ PETAR
+VUKOVIĆ PETAR
+VUKOVIĆ RADENKO
+VUKOVIĆ RADE
+VUKOVIĆ RADOSLAV
+VUKOVIĆ RADOVAN
+VUKOVIĆ RATKO
+VUKOVIĆ SAVA
+VUKOVIĆ SENKA
+VUKOVIĆ SIMA
+VUKOVIĆ SLOBODAN
+VUKOVIĆ SLOBODAN
+VUKOVIĆ SREĆKO
+VUKOVIĆ SREDOJE
+VUKOVIĆ STANKA
+VUKOVIĆ STANKA
+VUKOVIĆ STIPA
+VUKOVIĆ SVETISLAV
+VUKOVIĆ SVETLANA
+VUKOVIĆ SVETLANA
+VUKOVIĆ-TAVČIOSKA ALEKSANDRA
+VUKOVIĆ TODOR
+VUKOVIĆ TOMISLAV
+VUKOVIĆ VESNA
+VUKOVIĆ VIDAK
+VUKOVIĆ VINKA
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADISLAV DR
+VUKOVIĆ VLATKO DIPL ING
+VUKOVIĆ VOJISLAV
+VUKOVIĆ VOJKO
+VUKOVIĆ VUČIĆ
+VUKOVIĆ VUKAŠIN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVLJAK BOSILJKA
+VUKOVLJAK EVICA
+VUKOVLJAK MIRKO
+VUKOVLJAK VOJIN
+VUKOVOJAC OLGA
+VUKOVOJAC VOJISLAV
+VUKSAN MILAN
+VUKSAN MILIVOJ
+VUKSAN MIODRAG
+VUKSAN NIKOLA
+VUKSAN RADOSLAV PROFESOR
+VUKSAN RUŽICA
+VUKSAN SVETOZAR
+VUKSAN VUKOSAVA
+VUKSANOV LJUBICA
+VUKSANOV VOJISLAV
+VUKSANOVIĆ ŽIVORAD
+VUKSANOVIĆ ALEKSANDAR
+VUKSANOVIĆ ALEKSANDAR
+VUKSANOVIĆ DARKO
+VUKSANOVIĆ DESANKA
+VUKSANOVIĆ GORAN
+VUKSANOVIĆ GORDANA
+VUKSANOVIĆ JOVAN
+VUKSANOVIĆ MILE
+VUKSANOVIĆ MILISAV
+VUKSANOVIĆ MILORAD
+VUKSANOVIĆ MIODRAG
+VUKSANOVIĆ MIRO
+VUKSANOVIĆ SAVO
+VUKSANOVIĆ STEVANKA
+VUKSIĆ STEVO
+VUKSIĆ VELIMIR
+VUKUŠIĆ ANTE
+VULANOVIĆ RELJA
+VULANOVIĆ VOJISLAV
+VULETA BOJAN
+VULETA PREDRAG
+VULETA RISTO
+VULETIĆ ŽELJKO
+VULETIĆ ĐORĐIJE
+VULETIĆ ANDRIJA
+VULETIĆ BORISLAV
+VULETIĆ BRANISLAVA
+VULETIĆ BRANKO
+VULETIĆ BRANKO
+VULETIĆ DANICA DR
+VULETIĆ DIMITRIJE
+VULETIĆ JELENA
+VULETIĆ JELICA PROFESOR
+VULETIĆ MILADIN
+VULETIĆ MILAN VETERINAR
+VULETIĆ MILE
+VULETIĆ MILIVOJ
+VULETIĆ MLADEN
+VULETIĆ NADEŽDA
+VULETIĆ NEDELJKO
+VULETIĆ NIKOLA
+VULETIĆ OBRAD
+VULETIĆ RADOVAN
+VULETIĆ SRĐAN
+VULETIĆ VASILIJE
+VULETIĆ VIDOSAVA
+VULETIĆ VITOMIR
+VULETIĆ VLADIMIR
+VULETIĆ VLASTIMIR
+VULETIĆ ZORICA
+VULETIN ZORA
+VULEVIĆ ČEDOMIR
+VULEVIĆ ČEDOMIR
+VULEVIĆ ČEDOMIR
+VULEVIĆ SPASOJE
+VULIĆ ŽIKA
+VULIĆ ĐORĐE
+VULIĆ ĐORĐE
+VULIĆ BOŽIDAR
+VULIĆ BORISLAV
+VULIĆ BRANISLAV
+VULIĆ BRANISLAV
+VULIĆ DARINKA
+VULIĆ DESANKA
+VULIĆ DRAGOLJUB
+VULIĆ ILIJA
+VULIĆ JAVORKA
+VULIĆ JELENA
+VULIĆ JELENA
+VULIĆ JOVAN
+VULIĆ JOVAN
+VULIĆ JOVAN
+VULIĆ LUKA
+VULIĆ LUKA
+VULIĆ MILANKA
+VULIĆ MILAN
+VULIĆ MILIVOJE
+VULIĆ MILORAD
+VULIĆ MILORAD
+VULIĆ MIROSLAV
+VULIĆ MLADEN
+VULIĆ MOMČILO
+VULIĆ NIKOLA
+VULIĆ PETKO
+VULIĆ SLAVICA
+VULIĆ SLAVKO
+VULIĆ STEVAN
+VULIĆ ZLATA
+VULIĆ ZLATIJA
+VULIKIĆ LUKA
+VULIKIĆ RUŽICA
+VULIKIĆ VESELIN
+VULIKIĆ VOJISLAV
+VULIN ANGELINA
+VULIN BRANISLAV
+VULIN GOJKO
+VULIN JULKA
+VULIN MLADEN
+VULIN NENAD
+VULIN NENAD
+VULIN PREDRAG
+VULIN RADOMIR
+VULIN STEVAN
+VULIN VUKAŠIN
+VULJAJ VASELJ
+VULJEVIĆ ĐOKA
+VULKANI GORDANA
+VULOVIĆ DRAGICA
+VULOVIĆ DRAGOŠ
+VULOVIĆ DRAGOLJUB
+VULOVIĆ DRAGOMIR
+VULOVIĆ GORAN
+VULOVIĆ PETAR
+VULOVIĆ RAJKO
+VULOVIĆ SAVO
+VULOVIĆ SLAVIŠA
+VULOVIĆ VLADIMIR
+VULOVIĆ VUKICA
+VULSANOVIĆ ILKA
+VUNDERLIH JOSIP
+VUNDUK MIROSLAVA
+VUNIĆ MILJENKO
+VUNIĆ PETAR
+VUNIĆ RADOJKA
+VUNJAK ĐORĐE
+VUNJAK BRANISLAVA
+VUNJAK DUŠAN
+VURDELJA NEMANJA DR PROF
+VURDELJA SOFIJA
+VURDELJA VASA
+VURST JOVANKA
+VURUNA BRANKO
+VURUNA MARIJA
+VURUNIĆ ZDRAVKO
+ZABLEĆANSKI VLADA
+ZABRDAC MILAN
+ZABUNOV VLADIMIR
+ZADOR ANDRIJA DR IURE
+ZADRAVEC JOSIP
+ZADRO NIKOLA
+ZAFIROVIĆ BRANKO
+ZAGA MILAN
+ZAGAJČAN KOSTA
+ZAGORČIĆ ŽARKO
+ZAGORČIĆ ŽIVKO
+ZAGORČIĆ ŽIVKO
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ALEKSANDAR
+ZAGORČIĆ ANGELINA
+ZAGORČIĆ BORISLAV
+ZAGORČIĆ BORISLAV
+ZAGORČIĆ DRAGOLJUB
+ZAGORČIĆ GAVRA
+ZAGORČIĆ GLIGORIJE
+ZAGORČIĆ GORAN
+ZAGORČIĆ ILIJA
+ZAGORČIĆ ILIJA
+ZAGORČIĆ IRENA
+ZAGORČIĆ JASMINA
+ZAGORČIĆ JELENA
+ZAGORČIĆ JOVAN
+ZAGORČIĆ JOVAN
+ZAGORČIĆ KRISTINA
+ZAGORČIĆ LAZAR
+ZAGORČIĆ LAZAR
+ZAGORČIĆ LAZA
+ZAGORČIĆ MARIJA
+ZAGORČIĆ MILAN
+ZAGORČIĆ MILAN
+ZAGORČIĆ MILICA
+ZAGORČIĆ MILIVOJE
+ZAGORČIĆ MILIVOJ
+ZAGORČIĆ MILIVOJ
+ZAGORČIĆ MILOŠ
+ZAGORČIĆ MILOSAV
+ZAGORČIĆ-ORŠOŠ DRAGANA
+ZAGORČIĆ PANTA
+ZAGORČIĆ PETAR
+ZAGORČIĆ PETAR
+ZAGORČIĆ PREDRAG
+ZAGORČIĆ RADIVOJ
+ZAGORČIĆ RADOSLAV
+ZAGORČIĆ SLOBODAN
+ZAGORČIĆ STEVAN
+ZAGORČIĆ SVETISLAV
+ZAGORČIĆ SVETOZAR
+ZAGORČIĆ UROŠ
+ZAGORČIĆ VASA
+ZAGORČIĆ VASA
+ZAGORČIĆ VASA
+ZAGORČIĆ VUKOSAVA
+ZAGORČIĆ ZIJAH
+ZAGORAC BOŽICA
+ZAGORAC DIMITRIJE
+ZAGORAC DUŠAN
+ZAGORAC IVAN
+ZAGORAC MARIJA
+ZAGORAC MILENA
+ZAGORAC MILICA
+ZAGORAC MILICA
+ZAGORAC NEDELJKO
+ZAGORAC NIKOLA
+ZAGORAC NIKOLA
+ZAGORAC OSTOJA
+ZAGORAC PETAR
+ZAGORAC RAJKO
+ZAGORAC RUŽICA
+ZAGORAC SIMO
+ZAGORAC VALKO
+ZAGOREC JOSIP
+ZAGORICA OZREN
+ZAGRAĐA BAJIRAM
+ZAHARIJEVIĆ BOGDAN
+ZAHORAI JOVAN
+ZAHOREC ZUZANA
+ZAHORODNI ANTON
+ZAHORODNI IVAN
+ZAIMOVIĆ MUHAREM
+ZAJZOV JELENA
+ZAKANJ ARPAD
+ZAKANJ LAJOŠ
+ZAKANJ MIRKO
+ZAKANJ-TOBOLKA EVA
+ZAKIĆ ĐORĐE
+ZAKIĆ BOŽIDAR
+ZAKIĆ DIMITRIJE
+ZAKIĆ DOBRIVOJ
+ZAKIĆ DOBRIVOJ
+ZAKIĆ IVAN
+ZAKIĆ MILAN
+ZAKIĆ SAVA
+ZAKLAN ĐURA
+ZAKLAN MILAN
+ZAKLAN NEGICA
+ZAKLAN RANKO
+ZAKLAN SLOBODAN
+ZAKLAN STANIŠA
+ZAKLAN TIHOMIR
+ZAKLAN TOMISLAV
+ZALIS GEORGIJE
+ZALIS JANIS
+ZAMAKLAR ZORAN
+ZAMOLO EDUARD
+ZAMUROVIĆ ALEKSANDAR
+ZAMUROVIĆ BOJANA
+ZAMUROVIĆ KOSTA
+ZAMUROVIĆ MILENA
+ZAMUROVIĆ OLGA DR
+ZAMUROVIĆ STOJAN
+ZANOVJAK PETER
+ZAPUNIDIS LEONIDAS
+ZARECKI ROZALIJA
+ZARIČNI VERICA
+ZARIČNI VERONIKA
+ZARIĆ ĐORĐE
+ZARIĆ ĐORĐE
+ZARIĆ ĐORĐE
+ZARIĆ BOŠKO
+ZARIĆ BOGDAN
+ZARIĆ BORISLAV
+ZARIĆ BRANISLAV
+ZARIĆ BRATISLAV
+ZARIĆ DRAGA
+ZARIĆ DRAGOSLAV
+ZARIĆ DUŠAN
+ZARIĆ IVANKA
+ZARIĆ IVAN
+ZARIĆ JELENA
+ZARIĆ JOVAN
+ZARIĆ JOVO
+ZARIĆ KATICA
+ZARIĆ KATICA
+ZARIĆ LAZAR
+ZARIĆ MARIJA
+ZARIĆ MARIJA
+ZARIĆ MIKA
+ZARIĆ MILADIN
+ZARIĆ MILAN
+ZARIĆ MILAN
+ZARIĆ MILENA
+ZARIĆ MILICA
+ZARIĆ MILICA
+ZARIĆ MIODRAG
+ZARIĆ MLADEN
+ZARIĆ MOMČILO
+ZARIĆ NIKOLA
+ZARIĆ NIKOLA
+ZARIĆ NOVAK
+ZARIĆ PETAR
+ZARIĆ RADMILA
+ZARIĆ RAJO
+ZARIĆ SAVA
+ZARIĆ SLOBODAN
+ZARIĆ SLOBODAN
+ZARIĆ STANIMIR
+ZARIĆ STANISLAV
+ZARIĆ STANKA
+ZARIĆ STEVAN
+ZARIĆ VESNA
+ZARIĆ ZARIJA
+ZARIĆ ZDRAVKO
+ZARIĆ ZORKA
+ZARIN STEVA
+ZARINGER-PINTER NIKOLA
+ZARKOV KOCA
+ZARLI KATARINA
+ZARNOCKI PAVLE
+ZAROL ALEKSANDAR
+ZARUBAC ALEKSANDAR
+ZARUBAC BORKA
+ZARUBAC ROMICA
+ZARUBICA BOŽANA
+ZARUBICA RADUN
+ZARUPSKI ĐORĐE
+ZARUPSKI BRANKO
+ZARUPSKI MILOVAN
+ZATEK MARIJA
+ZATEZALO DUŠAN PROF
+ZATEZALO MIODRAG
+ZATEZALO PETAR
+ZATEZALO PREDRAG
+ZAVARGO ZOLTAN
+ZAVARKO ŠANDOR
+ZAVARKO ŠANDOR
+ZAVARKO ŠANDOR
+ZAVARKO ANTAL
+ZAVARKO ESTERA
+ZAVARKO IŠTVAN
+ZAVARKO JANOŠ
+ZAVARKO KARLO
+ZAVARKO MARIJA
+ZAVARKO VERA
+ZAVAROŠ ANDRIJA
+ZAVIŠA PETAR
+ZAVIŠA RANKO
+ZAVIŠIĆ CVIJETA
+ZAVIŠIĆ MILAN
+ZAVIŠIĆ PREDRAG
+ZAVIŠIĆ VIDA
+ZAVIŠIN MARICA
+ZAVIŠIN MOMIR
+ZAVIŠIN SAVA
+ZAVRTANIK IVAN
+ZAVRTANIK IVAN
+ZAVRTANIK MARJAN
+ZAZULJAK SLAVKO
+ZBAČNIK ZOFIJA
+ZBILJIĆ DRAGOLJUB
+ZBUĆNOVIĆ JOVANKA
+ZBUĆNOVIĆ MILAN
+ZBUĆNOVIĆ MILOŠ
+ZBUĆNOVIĆ MITA
+ZBUĆNOVIĆ PAVLE
+ZBUĆNOVIĆ SAVA
+ZDELAR SLOBODAN
+ZDENJAK JOSIP
+ZDIHAN MARKO
+ZDJELAR DRAGAN
+ZDJELAR MIROSLAV
+ZDJELAR OLGA
+ZDJELAR VIŠNJA
+ZDJELAR ZDRAVKO
+ZDJELARIĆ BRANKO
+ZDJELARIĆ DRAGAN
+ZDRAVESKI DUŠANKA
+ZDRAVEVSKI ILIJA
+ZDRAVKOVIĆ ANĐELIJA
+ZDRAVKOVIĆ BOGOLJUB
+ZDRAVKOVIĆ BORISLAV
+ZDRAVKOVIĆ DEJAN
+ZDRAVKOVIĆ DRAGOLJUB
+ZDRAVKOVIĆ DUŠANKA
+ZDRAVKOVIĆ JELENA
+ZDRAVKOVIĆ JOVAN
+ZDRAVKOVIĆ MIHAJLO
+ZDRAVKOVIĆ MILAN
+ZDRAVKOVIĆ MIODRAG
+ZDRAVKOVIĆ MIODRAG
+ZDRAVKOVIĆ MIROSLAV
+ZDRAVKOVIĆ RADE
+ZDRAVKOVIĆ RADE
+ZDRAVKOVIĆ TIHOMIR
+ZDRAVKOVIĆ TOMISLAV
+ZDRAVKOVIĆ VEROLJUB
+ZDRAVKOVIĆ VIDOJE
+ZDUPSKI BOŽIDAR
+ZEČAK VOJA
+ZEČEVIĆ ĐORĐO
+ZEČEVIĆ ANGELINA
+ZEČEVIĆ CVIJAN
+ZEČEVIĆ DOBRIVOJE DR
+ZEČEVIĆ DRAGAN DR
+ZEČEVIĆ DUŠAN
+ZEČEVIĆ GOLUB
+ZEČEVIĆ GVOZDEN
+ZEČEVIĆ HIMZO
+ZEČEVIĆ KRSTO
+ZEČEVIĆ LJUBICA
+ZEČEVIĆ LJUBINKO
+ZEČEVIĆ MARIJA
+ZEČEVIĆ MILAN
+ZEČEVIĆ MILAN
+ZEČEVIĆ MILISAV
+ZEČEVIĆ MILO
+ZEČEVIĆ MIOMIR
+ZEČEVIĆ MIRJANA
+ZEČEVIĆ NIKOLA
+ZEČEVIĆ NIKOLA
+ZEČEVIĆ NOVAK
+ZEČEVIĆ PREDRAG
+ZEČEVIĆ RAJKO
+ZEČEVIĆ RISTIVOJE
+ZEČEVIĆ SAVO
+ZEČEVIĆ SLAVKO
+ZEČEVIĆ SLOBODAN
+ZEČEVIĆ SMILJA
+ZEČEVIĆ SMILJA
+ZEČEVIĆ SOFIJA
+ZEČEVIĆ VESNA
+ZEČEVIĆ VLADIMIR
+ZEČEVIĆ ZORAN
+ZEČIROVIĆ ILMI
+ZEĆIRI ISMAIL
+ZEĆIRI ZIJA
+ZEC ŽELJKO
+ZEC ĐURO
+ZEC BOŠKO
+ZEC BOŽIDAR
+ZEC DANIJEL
+ZEC DRAGAN
+ZEC DRAGUTIN
+ZEC DUŠAN
+ZEC DUŠAN
+ZEC JOVAN
+ZEC MARIJA
+ZEC MARIJA
+ZEC MARINKO
+ZEC MATA
+ZEC MILAN
+ZEC MILAN
+ZEC MILE DIPL ING
+ZEC MILOŠ
+ZEC MILOŠ
+ZEC MILORAD
+ZEC MILOVAN
+ZEC NIKOLA
+ZEC NIKOLA
+ZEC RADOVAN
+ZEC RAJKO
+ZEC RAJKO
+ZEC STEVANIJA
+ZEC ZORICA
+ZEDI MIHALJ
+ZEGA ALEKSANDAR
+ZEGNAL RUDOLF
+ZEJAK IVAN
+ZEJAK MILETA
+ZEJAK RADOŠ
+ZEKA GZIM
+ZEKA HIRZEN
+ZEKA IRMA
+ZEKAVICA JELENA
+ZEKAVICA MIRJANA
+ZEKAVICA SLAVICA
+ZEKAVICA SRĐAN
+ZEKIĆ MIRA
+ZEKONJA ZDRAVKO
+ZEKOVIĆ BOŠKO
+ZEKOVIĆ DRAGOMIR
+ZEKOVIĆ GORDANA
+ZEKOVIĆ HANKIJA
+ZEKOVIĆ JULIJANA
+ZEKOVIĆ LILA
+ZEKOVIĆ MILADIN
+ZEKOVIĆ MILOŠ
+ZEKOVIĆ PETAR DILP OEC
+ZEKOVIĆ PETAR
+ZEKOVIĆ RADENKO
+ZEKOVIĆ RIZA
+ZEKOVIĆ VASO
+ZEKOVSKI ZORICA
+ZELENBABA RATKO
+ZELENBABA STEVAN
+ZELENHASIĆ EMIR
+ZELENJAK ANDRIJA
+ZELENJAK STJEPAN
+ZELENKA FRANJA
+ZELENKA MARIJA
+ZELENKO EMA
+ZELENOVIĆ BORIŠA
+ZELENOVIĆ DRAGAN
+ZELENOVIĆ JELENA
+ZELENOVIĆ JOVAN
+ZELENOVIĆ LJUBICA
+ZELENOVIĆ LJUBO
+ZELENOVIĆ MARA
+ZELENOVIĆ MILADIN
+ZELENOVIĆ MILAN
+ZELENOVIĆ MILISAV
+ZELENOVIĆ MILISAV
+ZELENOVIĆ VERA
+ZELENOVIĆ VLADIMIR
+ZELENSKI ALEKSANDAR
+ZELENSKI ALEKSANDAR
+ZELENSKI JELENA
+ZELENSKI MILICA
+ZELIĆ ĐORĐE
+ZELIĆ IVAN
+ZELIĆ JANOŠ
+ZELIĆ JOVAN
+ZELIĆ LAZAR
+ZELIĆ LJUBA
+ZELIĆ LJUBICA
+ZELIĆ LJUBOMIR
+ZELIĆ MARTA
+ZELIĆ PAVLE
+ZELIĆ PERSIDA
+ZELIĆ PETAR
+ZELIĆ RUŽICA
+ZELIĆ VLADIMIR
+ZELIĆ ZOLTAN
+ZELJAJIĆ NIKOLA DR
+ZELJIĆ SLOBODAN
+ZELJKO MARICA
+ZELJKOVIĆ ŽELJKO
+ZELJKOVIĆ ŽELJKO
+ZELJKOVIĆ ĐURO
+ZELJKOVIĆ BOSA
+ZELJKOVIĆ BRANKO
+ZELJKOVIĆ BRANKO
+ZELJKOVIĆ DESIMIR
+ZELJKOVIĆ DRAGUTIN
+ZELJKOVIĆ DUŠKO
+ZELJKOVIĆ IVANKA
+ZELJKOVIĆ JOVAN
+ZELJKOVIĆ JOVO
+ZELJKOVIĆ KRISTINA
+ZELJKOVIĆ LJILJANA
+ZELJKOVIĆ MARKO
+ZELJKOVIĆ MILAN
+ZELJKOVIĆ MILAN
+ZELJKOVIĆ MILIĆ
+ZELJKOVIĆ MILJA
+ZELJKOVIĆ MILOŠ
+ZELJKOVIĆ MIRKO
+ZELJKOVIĆ OSTOJA
+ZELJKOVIĆ RADMILA
+ZELJKOVIĆ RANKO
+ZELJKOVIĆ RATKO
+ZELJKOVIĆ SIMA
+ZELJKOVIĆ STEVO
+ZELJKOVIĆ STOJANKA
+ZELJKOVIĆ TODE
+ZELJKOVIĆ TOMA
+ZELJKOVIĆ VERA
+ZELJKOVIĆ VLAJKO
+ZELJKOVIĆ VUKAŠIN
+ZELJKOVIĆ ZORAN
+ZELJKOVIĆ ZORAN
+ZELJKOVIĆ ZORAN
+ZEMBERI FERENC
+ZEMBERI JOSIP
+ZEMBERI ROBERT
+ZEMKO ŠANDOR
+ZEMLJAK IVAN
+ZEMLJANAC MILANKA
+ZENTAI ROBERT DIPL ING
+ZENUN AVDO
+ZENZEROVIĆ PAVLE
+ZERDO BOŽIDAR
+ZERDO MILORAD
+ZERDO RADOSLAV
+ZERDO ZLATA
+ZEREMSKI DANILO
+ZEREMSKI DRAGAN
+ZEREMSKI DUŠAN
+ZEREMSKI KAMENKO
+ZEREMSKI NADA
+ZEREMSKI NOVAK
+ZEREMSKI PETAR
+ZEREMSKI PETAR
+ZEREMSKI PIROŠKA
+ZEREMSKI RADOJKA
+ZEREMSKI RANKO
+ZEREMSKI RATOMIR
+ZEREMSKI RUŽICA
+ZEREMSKI SLAVICA
+ZEREMSKI STEVAN
+ZEREMSKI STEVAN
+ZEREMSKI TEOFAN
+ZEREMSKI TOMISLAV
+ZEREMSKI VERA
+ZEREMSKI VLADIMIR
+ZEREMSKI VUJADIN
+ZEZDIN ALEKSANDAR DR
+ZGOMBA LAZAR
+ZGOMBA VLADIMIR
+ZGONJANIN MILAN
+ZGONJANIN RADE
+ZGONJANIN RUŽA
+ZIDAR MARIJAN
+ZIKOV ANDRIJA
+ZIKOV DRAGOLJUB
+ZIMA ČABA
+ZIMA RUDOLF
+ZIMANJI JOVAN
+ZIMONJA LJUBOMIR
+ZIMONJIĆ VLADIMIR
+ZINAIĆ CVIJETA
+ZINAIĆ UROŠ
+ZIRAMOV ŽARKO
+ZIRAMOV JEVROSIMA
+ZIRAMOV JEVROSIMA
+ZIRAMOV SAVA
+ZIRAMOV STEVAN
+ZIRDUH MARIJAN
+ZIROJE DRAGAN
+ZIROJEVIĆ ANĐA
+ZIROJEVIĆ GOJKO
+ZIROJEVIĆ MILENKO
+ZIROJEVIĆ MLADEN
+ZIROJEVIĆ OBRAD
+ZIROJEVIĆ TOMISLAV
+ZISIJADES MIRJANA
+ZIVLAK BRANKO
+ZIVLAK JELKA
+ZIVLAK JOVAN
+ZIVLAK PERO
+ZIVLAK PERO
+ZIVLAK VLADIMIR
+ZIVLAKOVIĆ DRAGOLJUB
+ZJAČIĆ ĐORĐE
+ZJAČIĆ ĐORĐE
+ZJAČIĆ BRANKO
+ZJAJIĆ KRSTAN
+ZJALIĆ DRAGOMIR ADVOKAT
+ZJALIĆ DRAGOMIR
+ZJALIĆ MARGITA
+ZJEVALO ANKICA
+ZLATANOVIĆ BLAGOJE
+ZLATANOVIĆ CVETKO
+ZLATANOVIĆ RADIVOJ
+ZLATANOVIĆ TIHOMIR
+ZLATANOVIĆ VLADIMIR
+ZLATANOVSKI DIMITRIJE
+ZLATANOVSKI RUSE
+ZLATAR MILENKO
+ZLATAREV DUŠAN
+ZLATAREV DUŠAN
+ZLATAREV VERICA
+ZLATARIĆ MOMČILO
+ZLATARIĆ VOJISLAV
+ZLATAROV MILOVAN
+ZLATEK LAZAR
+ZLATIČANIN TOŠO
+ZLATIĆ MILORAD
+ZLATIĆ RADOSLAV
+ZLATIĆ VESELIN
+ZLATKOVIĆ BOŠKO
+ZLATKOVIĆ BORISLAV
+ZLATKOVIĆ JELICA
+ZLATKOVIĆ-JOVIĆ OLGICA
+ZLATKOVIĆ KATARINA
+ZLATKOVIĆ MELANIJA
+ZLATKOVIĆ RUSOMIR
+ZLATKOVIĆ SLAĐANA
+ZLATKOVIĆ SLAVKO
+ZLATONIĆ SLAVKO
+ZLATOVERHOVNIKOV ĐORĐE
+ZLATOVIĆ JELISAVETA
+ZLATOVIĆ NIKOLA
+ZLIČIĆ ALEKSANDRA
+ZLIČIĆ DARINKA
+ZLIČIĆ DIMITRIJE
+ZLIČIĆ DUŠANKA DIPL ING
+ZLIČIĆ DUŠAN
+ZLIČIĆ IVAN
+ZLIČIĆ KATICA
+ZLIČIĆ LJUBICA
+ZLIČIĆ MILAN
+ZLIČIĆ MILORAD
+ZLIČIĆ RADOVAN
+ZLIČIĆ VASILJKA
+ZLOJUTRO MIĆO
+ZLOJUTRO MIHAJLO
+ZLOJUTRO STEVO
+ZLOJUTRO VASA
+ZLOKOLICA ŽIVKO
+ZLOKOLICA ĐORĐE
+ZLOKOLICA BOŠKO
+ZLOKOLICA JORGOVANKA
+ZLOKOLICA JOVAN
+ZLOKOLICA JOVAN
+ZLOKOLICA LAZAR
+ZLOKOLICA LJUBICA
+ZLOKOLICA MARKO
+ZLOKOLICA MILOŠ
+ZLOKOLICA MIODRAG
+ZLOKOLICA NIKOLA
+ZLOKOLICA NOVAK
+ZLOKOLICA SLAVKO
+ZLOKOLICA SLAVNA
+ZLOKOLICA STEVAN
+ZLOKOLICA STEVAN
+ZLOKOLICA TODOR
+ZLOKOLICA VLADA
+ZLOKOLICA ZLATA
+ZMIJANJAC MILAN
+ZMRZLIKAR MIRJANA
+ZOĆEVIĆ MARIJA
+ZOĆEVIĆ VITOR
+ZOBENICA BILJANA
+ZOBENICA DANICA
+ZOBENICA MIRJANA
+ZOGOVIĆ VUK
+ZOKI STEVAN
+ZOKIĆ RADOVAN
+ZOLNAI TOMAŠ
+ZOLNJAN PAVEL
+ZOLOTIĆ KATARINA
+ZOLOTIĆ VELINKA
+ZOLOTIĆ VUKOSAV
+ZOMBORAC ZVONKO
+ZONA DIVNA
+ZONAI PAL
+ZONIĆ LJUBAN
+ZONIĆ RIZAH
+ZORAD MIHALJ
+ZORAD STEVAN
+ZORAJA ĐURA
+ZORAJA DRAGAN
+ZORAJA IGNJAT
+ZORAJA PETAR
+ZORAJA STEVAN
+ZORANIĆ SLAVICA
+ZORANOVIĆ DUŠANKA
+ZORANOVIĆ ILIJA
+ZORANOVIĆ LAZAR
+ZORANOVIĆ LAZAR
+ZORANOVIĆ MILAN
+ZORANOVIĆ MIODRAG
+ZORANOVIĆ SOFIJA
+ZORANOVIĆ SPASA
+ZORANOVIĆ STEVAN
+ZORANOVIĆ SVETLANA
+ZORIČIĆ DRAGOLJUB
+ZORIĆ ČEDO
+ZORIĆ ĐORĐE
+ZORIĆ ĐORĐE
+ZORIĆ ĐURĐICA
+ZORIĆ ĐURICA
+ZORIĆ ĐURO
+ZORIĆ ĐURO
+ZORIĆ ĐURO
+ZORIĆ ANĐELKA
+ZORIĆ BOŠKO
+ZORIĆ BOŽIDAR
+ZORIĆ BOGDAN
+ZORIĆ BOGOLJUB
+ZORIĆ BORIVOJ
+ZORIĆ BORO
+ZORIĆ BORO
+ZORIĆ BRANKA
+ZORIĆ BRANKO
+ZORIĆ DARINKA
+ZORIĆ DARKO
+ZORIĆ DRAGAN
+ZORIĆ DRAGAN
+ZORIĆ DRAGAN
+ZORIĆ DRAGOLJUB
+ZORIĆ DUŠANKA
+ZORIĆ DUŠAN
+ZORIĆ DUŠAN
+ZORIĆ-GARDINOVAČKI MARIJANA
+ZORIĆ GAVRILO
+ZORIĆ GORDANA
+ZORIĆ JELISAVETA
+ZORIĆ JELISAVETA
+ZORIĆ JOVAN
+ZORIĆ KATA
+ZORIĆ KLARA
+ZORIĆ KOSTADIN
+ZORIĆ KOVILJKA
+ZORIĆ LAZAR
+ZORIĆ LUKA
+ZORIĆ MARIJA
+ZORIĆ MARKO
+ZORIĆ MIKA
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILEVA
+ZORIĆ MILICA
+ZORIĆ MILICA
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MIODRAG
+ZORIĆ MIRKO ING
+ZORIĆ MIRKO
+ZORIĆ MIROSLAV
+ZORIĆ NIKOLA
+ZORIĆ NIKOLA
+ZORIĆ NIKOLA
+ZORIĆ PAVLE
+ZORIĆ PERA
+ZORIĆ PETAR
+ZORIĆ PETKO
+ZORIĆ RADE
+ZORIĆ RADE
+ZORIĆ SAVA
+ZORIĆ SIMA
+ZORIĆ SIMEON
+ZORIĆ SLAVICA
+ZORIĆ SLOBODAN
+ZORIĆ SNEŽANA
+ZORIĆ SOKA
+ZORIĆ SPASOJE
+ZORIĆ STANKO
+ZORIĆ STOJAN
+ZORIĆ SVETKO
+ZORIĆ SVETKO
+ZORIĆ VASILIJE
+ZORIĆ VELIMIR
+ZORIĆ VELJKO DIPL ING
+ZORIĆ VLADISLAV
+ZORIĆ VLADO
+ZORIĆ VOJIN
+ZORIĆ VOJKA
+ZORIĆ ZDRAVKA
+ZORIĆ ZORICA
+ZORIĆ ZVONIMIR
+ZORICA ACO
+ZORICA DUŠAN
+ZORICA MARKO
+ZORIJAN EMIL
+ZORJAN BRANKO
+ZORJAN JANKO
+ZORKIĆ ŽIVKO
+ZORNIJA BRANKO
+ZORNIJA VLADISLAV
+ZORNIK ALDA
+ZORZIĆ MILORAD
+ZOTIN ĐORĐE
+ZOTIN SAVA
+ZOTIN SLAVOLJUB
+ZOTOVIĆ ALEKSANDAR
+ZOTOVIĆ OBRAD
+ZOVIĆ ANA
+ZOVIĆ DUŠAN
+ZOVIĆ MILOVAN
+ZOVIĆ MIROSLAV
+ZOVKO ŠIMUN
+ZOVKO ILIJA
+ZOVKO JOSIP
+ZOVKO MANDA
+ZOVKO MARJAN
+ZOZUK LJUBOMIR
+ZRILIĆ NADA
+ZRILIĆ VERA
+ZRILIĆ VLADIMIR DR LEKAR
+ZRNIĆ ŠPIRO
+ZRNIĆ ĐORĐE
+ZRNIĆ ĐURO
+ZRNIĆ ĐURO
+ZRNIĆ BRANKO
+ZRNIĆ DUŠAN
+ZRNIĆ GOJKO
+ZRNIĆ GOJKO
+ZRNIĆ JOVAN
+ZRNIĆ LAZAR
+ZRNIĆ MAJA
+ZRNIĆ MALINA
+ZRNIĆ MANE DIPL ING
+ZRNIĆ MANE
+ZRNIĆ MARINKO
+ZRNIĆ MILAN
+ZRNIĆ MILAN
+ZRNIĆ MILOŠ
+ZRNIĆ MIRJANA
+ZRNIĆ MIROLJUB
+ZRNIĆ NENAD
+ZRNIĆ NIKOLA
+ZRNIĆ PETAR
+ZRNIĆ SINIŠA
+ZRNIĆ SLOBODAN
+ZRNIĆ SRĐAN
+ZRNIĆ VLADO
+ZRNIĆ ZORAN
+ZRNIĆ ZORAN
+ZUBAC ČEDOMIR
+ZUBAC DIVNA
+ZUBAC MILAN
+ZUBAC PERO
+ZUBAK STEVAN
+ZUBAN PETAR
+ZUBANOV BRANISLAV
+ZUBANOV VLADIMIR
+ZUBER DUŠAN
+ZUBER MARKO
+ZUBEREC JOVAN
+ZUBIĆ ŽARKO
+ZUBIĆ ĐURĐA
+ZUBIĆ BILJANA
+ZUBIĆ BOŽO
+ZUBIĆ BRANISLAVA
+ZUBIĆ DRAGO
+ZUBIĆ JOVO
+ZUBIĆ LAZO
+ZUBIĆ PETAR
+ZUBIĆ RADOSLAV
+ZUBIĆ RATKO
+ZUBIĆ VERA
+ZUBIĆ VERKA
+ZUBOV ADELA
+ZUBOVIĆ ANDRIJA
+ZUBOVIĆ MIRJANA
+ZUBOVIĆ SLOBODAN
+ZUBOVIĆ STEVAN
+ZUCAJIĆ JELENA
+ZUKIĆ GOJKO
+ZUKOVIĆ MILINKO
+ZULIĆ AGNEŠ
+ZUMBULOVIĆ PREDRAG
+ZUPANČIĆ FRANC
+ZUPANČIĆ IVAN
+ZUPANC DARKO
+ZUPANC RAJKO
+ZUPKOV ĐURA
+ZUPKOV MIROSLAV
+ZURKOVIĆ ĐORĐE
+ZURKOVIĆ ALEKSANDAR
+ZURKOVIĆ BOGOLJUB
+ZURKOVIĆ DUŠAN
+ZURKOVIĆ GAVRA
+ZURKOVIĆ MIRJANA
+ZURKOVIĆ NIKOLA
+ZURKOVIĆ RADOSLAV
+ZURKOVIĆ RUŽA
+ZURKOVIĆ VERA
+ZUROVAC JOVO
+ZUROVAC VELJKO
+ZUVIĆ OBRAD
+ZUZAKU REDŽEP
+ZVARA JULIJA
+ZVEKANOVIĆ JOSIP
+ZVEKIĆ DUŠANKA
+ZVEKIĆ JUGOSLAV
+ZVEKIĆ MARIJA
+ZVEKIĆ MILAN
+ZVEKIĆ NADA
+ZVEKIĆ PETAR
+ZVEKIĆ SINIŠA
+ZVEKIĆ VELIMIR
+ZVERŽINA JOSIP
+ZVEZDANOVIĆ BORA
+ZVEZDANOVIĆ TOMA
+ZVEZDIN JOVANKA
+ZVIJER MILORAD
+ZVIZDIĆ MEHMED
+ZVOŠEC KLARA
+ZVONAREVIĆ KATA
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt
new file mode 100644
index 0000000..28a6a81
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt
@@ -0,0 +1,61254 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ЧАЧИЋ АЛЕКСАНДАР
+ЧАЧИЋ ЈЕЛИЦА
+ЧАЧИЋ МАРИЈА
+ЧАЧИЋ НИКОЛА
+ЧАЧИЈА БРАНКО
+ЧАЂЕНОВИЋ ЖАРКО
+ЧАЂЕНОВИЋ САБИНА
+ЧАБАИ АНДРИЈА
+ЧАБАИ ЛАЈОШ
+ЧАБАИ МАРИЈА
+ЧАБАИ СТЕВАН
+ЧАБАИ СТЕВАН
+ЧАБАРКАПА БРАНКО
+ЧАБАРКАПА МИЛЕНКО
+ЧАБАРКАПА МИРОСЛАВ
+ЧАБАРКАПА СИМО
+ЧАБАРКАПА СТАНКО
+ЧАБАРКАПА ТАМАРА
+ЧАБАРКАПА ТОМАШ
+ЧАБДАРИЋ НИКОЛА
+ЧАБДАРИЋ ЗОРИЦА
+ЧАБИ НАНДОР
+ЧАБОВИЋ МИЛАН
+ЧАБРАДИ АГНЕЗИЈА
+ЧАБРАДИ ИВАН
+ЧАБРАДИ ЈЕЛЕНА
+ЧАБРАДИ ЉУБИЦА
+ЧАБРАДИ СТЕВАН
+ЧАБРДА МАРТИН
+ЧАБРИЛО БОГДАН
+ЧАБРИЛО БРАНИСЛАВ
+ЧАБРИЛО ЛАЗАР
+ЧАБРИЛО ЉУБИЦА
+ЧАБРИЛО СПАСОЈА
+ЧАДЕШ ЗДЕНКА
+ЧАДЕСКИ БЛАГОЈЕ
+ЧАДОВСКИ ВЛАДИМИР
+ЧАГЉЕВИЋ ТОМА
+ЧАГОРОВИЋ ВЛАДИМИР
+ЧАЈА ВАНКА
+ЧАЈИЋ БОГОЉУБ
+ЧАЈИЋ БОРИСЛАВ
+ЧАЈИЋ РАДОСЛАВ
+ЧАКШИРАН МИЛАДИН
+ЧАКАН ЕУГЕН
+ЧАКАН ЕВГЕНИЈЕ
+ЧАКАН ИВАН
+ЧАКАН ЈУЛИЈАН
+ЧАКАН МИХАЈЛО
+ЧАКАН СТЕВАН
+ЧАКАН ВЛАДИМИР
+ЧАКАН ВЛАДИМИР
+ЧАКАН ВЛАДИМИР
+ЧАКАРА АНА
+ЧАКАРЕВИЋ МОМИР
+ЧАКАРЕВИЋ НЕДЕЉКО
+ЧАКИ ШАНДОР
+ЧАКИ АМАЛИЈА
+ЧАКИ АНДРАШ
+ЧАКИ ЛАДИСЛАВ
+ЧАКИ ЛАЈОШ
+ЧАКИ ЛАСЛО
+ЧАКИ МИХАЉ
+ЧАКИ МИХАЉ
+ЧАКИ ПИРОШКА
+ЧАКИЋ САВА
+ЧАКИЋ ЗЛАТОЈЕ ДР
+ЧАКМАК ДАНИЦА
+ЧАКМАК ДЕЈАН
+ЧАКМАК ЛАЗАР
+ЧАКМАК ЉИЉАНА
+ЧАКМАК ЉУБИЦА
+ЧАКМАК СОФИЈА
+ЧАКМАК СВЕТОЗАР
+ЧАКМАЛ ВОЈИСЛАВ
+ЧАКОВАЦ БОРИСЛАВ
+ЧАКОВАЦ МИРОСЛАВ
+ЧАКОВАЦ ПАНТЕЛИЈА
+ЧАКОВАЦ САВА
+ЧАКОВИЋ ЗДРАВКО
+ЧАКРА МИЛЕНА
+ЧАЛА ЂУЛА
+ЧАЛА ИРЕН
+ЧАЛА ИВАНКА
+ЧАЛА ЛЕНКА
+ЧАЛАКИЋ БРАНКО
+ЧАЛАКИЋ ЉУБОМИР
+ЧАЛАКИЋ МАРКО
+ЧАЛАКИЋ МИЛАН
+ЧАЛЕ ИВАН
+ЧАЛЕ ЈОСИП
+ЧАЛЕ МИЛАН
+ЧАЛЕ СОФИЈА
+ЧАЛЕ ВЛАДИМИР
+ЧАЛЕНИЋ БОРИСЛАВ
+ЧАЛЕНИЋ БРАНИСЛАВА
+ЧАЛЕНИЋ ДИНА
+ЧАЛЕНИЋ ДРАГИЦА
+ЧАЛЕНИЋ ЛАЗАР
+ЧАЛЕНИЋ ЉИЉАНА
+ЧАЛЕНИЋ ЉУБОМИР
+ЧАЛЕНИЋ ЛУКА
+ЧАЛЕНИЋ МИЛОСАВА
+ЧАЛЕНИЋ МИРЈАНА
+ЧАЛЕНИЋ СТЕВАН
+ЧАЛИЋ БОШКО
+ЧАЛИЋ ЈОВО
+ЧАЛИЋ МАРИЈА
+ЧАЛИЈА ДАНИЦА
+ЧАЛИЈА ЈОВАН
+ЧАЛИЈА ЛАЗАР
+ЧАЛИЈА МИЛАН
+ЧАМЂИЋ ЈАХИЈА
+ЧАМАНГОС ЂОРЂЕ
+ЧАМАНГОС КАТИЦА
+ЧАМБЕР ЉУБИЦА
+ЧАМБОР ЂУРО
+ЧАМБОР АНДРИЈА
+ЧАМБОР ЈОСИП
+ЧАМЏИЋ НЕАД
+ЧАМО БАРБАРА
+ЧАМПРАГ ЂОРЂЕ ЛЕКАР
+ЧАМПРАГ ДРАГА
+ЧАМПРАГ ДУШАН
+ЧАМПРАГ ЉУБИЦА
+ЧАМПРАГ МИЛАН
+ЧАНЧАР ЂОРЂЕ
+ЧАНЧАРЕВИЋ ЈОВАНКА
+ЧАНЧАРЕВИЋ МИРОЉУБ
+ЧАНЧАРЕВИЋ МЛАДЕН
+ЧАНАЏИЋ ЂОРЂЕ
+ЧАНАЏИЋ ЈОВАН
+ЧАНАЏИЋ САЊА
+ЧАНАДАНОВИЋ АНДРИЈА
+ЧАНАДАНОВИЋ МИРКО
+ЧАНАДАНОВИЋ РАДМИЛА
+ЧАНАДИ ЈАНОШ МР
+ЧАНАДИ ЉИЉАНА
+ЧАНАГЛИЋ ЂОКА
+ЧАНАК ЖЕЉКО
+ЧАНАК ЂУРА
+ЧАНАК БОСИЉКА ДР
+ЧАНАК МИХАЈЛО
+ЧАНАК МИРКО
+ЧАНАК МОМЧИЛО
+ЧАНАК НЕВЕНКА
+ЧАНАК НИКОЛА
+ЧАНАК НИКОЛА
+ЧАНАК НИКОЛА
+ЧАНАК ОЛИВЕРА
+ЧАНАК ВЕЉКО
+ЧАНАК ВЕСЕЛИН
+ЧАНАК ВУКАШИН
+ЧАНГАЛИЋ ДУШАН
+ЧАНИЋ ЉИЉАНА
+ЧАНИЋ МИЛОШ
+ЧАНИЋ ОСТОЈА
+ЧАЊЕВАЦ ШАРЛОТА
+ЧАЊИ АНДРИЈА
+ЧАЊИ ГАБИ
+ЧАЊИ ГАБОР
+ЧАЊИ ГИЗЕЛА
+ЧАЊИ ИРЕНА
+ЧАЊИ ИРЕНА
+ЧАЊИ ЈАНКО
+ЧАЊИ КАРЛО
+ЧАЊИ ЛАСЛО
+ЧАЊИ ЛАСЛО
+ЧАЊИ НАДА
+ЧАЊИ САМУЕЛ
+ЧАЊИ СТЕВАН
+ЧАЊИ СТЕВАН
+ЧАЊИ ВЛАДИМИР
+ЧАЊИ ЗОЛТАН
+ЧАЊИ ЗУЗАНА
+ЧАНКОВИЋ ЂОРЂЕ
+ЧАНКОВИЋ БОШКО
+ЧАНКОВИЋ БОЈА
+ЧАНКОВИЋ БРАНКО
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНИЦА
+ЧАНКОВИЋ ЈОВА
+ЧАНКОВИЋ ЉУБИНКА
+ЧАНКОВИЋ МАРИЈА
+ЧАНКОВИЋ МАРКО
+ЧАНКОВИЋ МИКА
+ЧАНКОВИЋ МИЛАН
+ЧАНКОВИЋ МИЛАН
+ЧАНКОВИЋ МИЛИВОЈ
+ЧАНКОВИЋ МИЛОРАД
+ЧАНКОВИЋ МЛАДЕН
+ЧАНКОВИЋ ОЛГА
+ЧАНКОВИЋ ПЕТАР МР
+ЧАНКОВИЋ ПЕТАР
+ЧАНКОВИЋ РАДОМИР
+ЧАНКОВИЋ РАДОМИР
+ЧАНКОВИЋ СЛАЂАНА
+ЧАНКОВИЋ СЛАВКО
+ЧАНКОВИЋ СЛОБОДАН
+ЧАНКОВИЋ ЗЛАТА
+ЧАНКОВИЋ ЗОРАН
+ЧАП АНТАЛ
+ЧАПАНДА ЈОСИП
+ЧАПЕЉА ДРАГАН
+ЧАПЕЉА ЈАН ДР
+ЧАПЕЉА ЈОВАН
+ЧАПЕЉА ПАВЛЕ
+ЧАПКО ЈУЛИЈАН
+ЧАПКО МИЛОРАД
+ЧАПКО МИРОСЛАВ
+ЧАПКО НЕСТОР
+ЧАПО АДАМ
+ЧАПО ИЛИЈА
+ЧАПО ЈАНОШ
+ЧАПО МАРИЈА
+ЧАПО НАДА
+ЧАПРИЋ МИЛОРАД
+ЧАРАПИЋ ТОМИСЛАВ
+ЧАСЊИ ЕРЖЕБЕТ
+ЧАСЊИ ФЕРЕНЦ
+ЧАСТВЕН ЈУЛИЈАНА
+ЧАТ АНДРИЈА
+ЧАТАЛИНАЦ МИЛАН
+ЧАТАЛИНАЦ НИКОЛА
+ЧАТАЛОВ СТОЈАН
+ЧАТЛАЈА СТАНА
+ЧАТЛАК ОЛИВЕРА
+ЧАТУШ ЗЛАТКО
+ЧАУШЕВИЋ КЕМАЛ
+ЧАУШЕВИЋ МИДХАТ
+ЧАУШЕВИЋ ТАТЈАНА
+ЧАВИЋ ШТЕФИЦА
+ЧАВИЋ ЖИВКА
+ЧАВИЋ ЂОРЂЕ
+ЧАВИЋ БОШКО
+ЧАВИЋ БРАНИСЛАВ
+ЧАВИЋ ДЕЈАН
+ЧАВИЋ ДЕЈАН
+ЧАВИЋ ДРАГИЦА
+ЧАВИЋ ДРАГО
+ЧАВИЋ ГОРДАНА
+ЧАВИЋ ГОРДАНА
+ЧАВИЋ КРСТАН
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ МАРИЈА
+ЧАВИЋ МИЛЕНА
+ЧАВИЋ МИРКО
+ЧАВИЋ ПЕТАР
+ЧАВИЋ РАДОМИР
+ЧАВИЋ РАДОВАН
+ЧАВИЋ СЛОБОДАН
+ЧАВИЋ СЛОБОДАН
+ЧАВИЋ СОКА
+ЧАВИЋ ТОША
+ЧАВИЋ ВЕЛИЗАР
+ЧАВИЋ ВЛАДО
+ЧАВИЋ ЗОРКА
+ЧАЗИМ ЧЕЛЕБИЈА
+ЧЕЧЕК ДРАГИЦА
+ЧЕЧЕК ВИЛИМ
+ЧЕЧУК АЛЕКСАНДАР
+ЧЕЧУК БРАНИСЛАВ
+ЧЕЧУК МИЛОШ
+ЧЕЧУК СЛАВИЦА
+ЧЕЧУК СТЕВАН
+ЧЕШЉАР ЂУРА
+ЧЕШЉАР АЛЕКСАНДАР
+ЧЕШЉАР ДАРИНКА
+ЧЕШЉАР ЈОСИП
+ЧЕШЉАР ЈОВАН
+ЧЕШЉАР СТЕВАН
+ЧЕШЉЕВИЋ ДУШАН
+ЧЕШЉЕВИЋ КОСТА
+ЧЕШЉЕВИЋ МИЛЕНКО
+ЧЕШЉЕВИЋ МИРОСЛАВА
+ЧЕШЉЕВИЋ МОМЧИЛО
+ЧЕШЉЕВИЋ СТАНКО
+ЧЕБАЦ ЉУБИЦА
+ЧЕБАЦ ПАВЛЕ
+ЧЕБЕЏИЋ МИЛАН
+ЧЕБСКИ ВЛАДИМИР
+ЧЕБЗАН ПАНТА
+ЧЕДИЋ РЕЏО
+ЧЕГАР БОЖО
+ЧЕГАР ДЕСАНКА
+ЧЕГАР ДРАГАН
+ЧЕГАР МИЛОШ
+ЧЕГАР МИРКО
+ЧЕГАР ПАНЕ
+ЧЕГАР СРЕТКО
+ЧЕГАР СТЕВАНИЈА
+ЧЕГАР СВЕТЛАНА
+ЧЕГАР ТОДОР
+ЧЕХ АНТОН
+ЧЕХ ЈОЖЕФ
+ЧЕХ ЈОСИП
+ЧЕХ ЈОВАН
+ЧЕХ МИКЛОШ
+ЧЕХ СТАНКА
+ЧЕХ ЗЛАТА
+ЧЕХАК КАЛМАН ДР
+ЧЕХОВ ИВАН
+ЧЕХОВ ПЕТАР
+ЧЕЈОВИЋ БИСЕРКА
+ЧЕЈОВИЋ СЛОБОДАН
+ЧЕЈОВИЋ ВЕЛИМИР
+ЧЕЈОВИЋ ВЛАДИМИР
+ЧЕКАНОВИЋ ЖИВАНА
+ЧЕКАНОВИЋ ВИТОМИР
+ЧЕКЕ ДЕЖЕ
+ЧЕКЕ МАРИЈА
+ЧЕКЕ СНЕЖАНА
+ЧЕКЕ СТЕВАН
+ЧЕКЕРЕВАЦ БРАНКО
+ЧЕКЕРИНАЦ ДУШАН
+ЧЕКЕРИНАЦ ЗОРАН
+ЧЕКИ ДАРИНКА
+ЧЕКИ ДАВИД
+ЧЕКИЋ АНА
+ЧЕКИЋ ДАРИНКА
+ЧЕКИЋ ДИМИТРИЈЕ
+ЧЕКИЋ ДРАГАН
+ЧЕКИЋ ИЛИЈА
+ЧЕКИЋ ЈОВАН
+ЧЕКИЋ МИЛОРАД
+ЧЕКИЋ МИЛОРАД
+ЧЕКИЋ МИЛОВАН
+ЧЕКИЋ МИРЈАНА
+ЧЕКИЋ МОМЧИЛО
+ЧЕКИЋ САВА
+ЧЕКИЋ САВА
+ЧЕКИЋ ВАСА
+ЧЕКИЋ ЗДРАВКО
+ЧЕКРЏИН РАДИСЛАВ
+ЧЕЛАР СТЕВАН
+ЧЕЛЕБИЋ АЛЕКСАНДАР
+ЧЕЛЕБИЋ БОЖО
+ЧЕЛЕБИЋ ИЛИЈА
+ЧЕЛЕБИЋ МИЛОРАД
+ЧЕЛЕБИЋ МОМЧИЛО
+ЧЕЛЕБИЋ ОЛГА
+ЧЕЛЕБИЋ-ТУБИЋ ВЕСНА
+ЧЕЛЕБИЋ ЗОРКА
+ЧЕЛЕКЕТИЋ ЈОВАН
+ЧЕЛЕКЕТИЋ ЈОВАН
+ЧЕЛЕКЕТИЋ МИРОСЛАВ
+ЧЕЛЕКЕТИЋ МИРОСЛАВ
+ЧЕЛЕКЕТИЋ РАДОВАН
+ЧЕЛЕКЕТИЋ ТАМАРА
+ЧЕЛЕНАК КАТАЛИН
+ЧЕЛЕСНИК ДРАГУТИН
+ЧЕЛИЋ БАНЕ
+ЧЕЛИЋ ДИНКА
+ЧЕЛИЋ ГЛИГОРИЈЕ
+ЧЕЛИЋ ИЛИЈА
+ЧЕЛИЋ КАТАРИНА
+ЧЕЛИЋ ЉУБИНКО
+ЧЕЛИЋ ЉУБОМИР
+ЧЕЛИЋ МИЛИВОЈ
+ЧЕЛИЋ ПАВЛЕ
+ЧЕЛИЋ СРЂАН
+ЧЕЛИЋ СТАНКО ДР
+ЧЕЛИЋ ВЕРА
+ЧЕЛИЦА ЈЕЛЕНА
+ЧЕЛИКОВИЋ ЕМИЛ
+ЧЕЛОФИГА АНТОНИЈА
+ЧЕЛОВИЋ МИРЈАНА
+ЧЕЛОВСКИ АНДРЕЈ
+ЧЕЛОВСКИ ДРАГИЦА
+ЧЕМАН ЂОРЂЕ
+ЧЕМАН ЂУРА
+ЧЕМАН АНДРИЈА
+ЧЕМАН ДАНИЛО
+ЧЕМАН ГОРДАНА
+ЧЕМАН ЈАН
+ЧЕМАН ЈОВАН
+ЧЕМАН МИША
+ЧЕМАН МИРОСЛАВ
+ЧЕМАН ОЛГА
+ЧЕМАН РУЖЕНКА
+ЧЕМАН САМУЕЛ
+ЧЕМАН СТЕВАН
+ЧЕМАН ТЕРЕЗА
+ЧЕМБИЋ МИЛАН
+ЧЕМЕРЕ ЕРЖЕБЕТ
+ЧЕМЕРЕ ЛАЈОШ
+ЧЕМЕРЛИЋ ПЕТАР
+ЧЕНДЕШ БРАНКО
+ЧЕНЕЈАЦ ЖИВАН
+ЧЕНЕЈАЦ ГРУЈА
+ЧЕНЕЈАЦ ЉУБИЦА
+ЧЕНЕЈАЦ ЉУБИЦА
+ЧЕНЕЈАЦ МИЛОШ
+ЧЕНЕЈАЦ МИЛУТИН
+ЧЕНЕЈАЦ ТОМИСЛАВ
+ЧЕНЕЈАЦ ВЕЛИСЛАВ
+ЧЕНГЕРИ АТИЛА
+ЧЕНГИЋ МАРИЈА
+ЧЕНУША ГЕОРГИНА
+ЧЕПЧАЊИ МИРЈАНА
+ЧЕПЕ АНИЦА
+ЧЕПИ ЈАНОШ
+ЧЕПИ ЛАСЛО
+ЧЕПИ МАРИЈА
+ЧЕПИ НАНДОР
+ЧЕПИЋ БОРИСЛАВ
+ЧЕПИЋ СЛОБОДАН
+ЧЕПИЋ СМИЉА
+ЧЕПИЋ ВЕЛИМИР
+ЧЕПИН ВИКТОР
+ЧЕПЛЕ СТЕВАН
+ЧЕПРЕГИ ИРЕНА
+ЧЕПРЕГИ ЈУЛИЈА
+ЧЕПСКИ ЈОВАН
+ЧЕПСКИ СТЕВАН
+ЧЕР ШАНДОР
+ЧЕР АЛЕКСАНДАР
+ЧЕР ФРАЊА
+ЧЕР ЛАДИСЛАВ
+ЧЕР МАРИЈА
+ЧЕРЕКОВИЋ ЕЛИЗАБЕТА
+ЧЕРЕКОВИЋ РИСТО
+ЧЕРЕКОВИЋ СЛАВКО
+ЧЕРЕКОВИЋ ВАСКРСИЈЕ
+ЧЕРЕВИЋ ИВАН
+ЧЕРЕВИЋ ВЕРИЦА
+ЧЕРЕВИЦКИ АЛЕКСАНДАР
+ЧЕРЕВИЦКИ ДУШАН
+ЧЕРЕВИЦКИ ЈОВАН
+ЧЕРЕВИЦКИ ЉУБИЦА
+ЧЕРЕВИЦКИ МИТА
+ЧЕРЕВИЦКИ НАДА
+ЧЕРЕВИЦКИ РАДА
+ЧЕРЕВИЦКИ РУЖИЦА
+ЧЕРЕВИЦКИ СТЕВАН
+ЧЕРЕВИЦКИ СВЕТИСЛАВ
+ЧЕРЕВИЦКИ ТЕОДОР
+ЧЕРГЕ БЕЛА
+ЧЕРИ ЈОЖЕФ
+ЧЕРКЕЗ БОГДАНКА
+ЧЕРКЕЗ ДУШАНКА
+ЧЕРКЕЗ ЕВИЦА
+ЧЕРКЕЗ ЈОВАНКА
+ЧЕРКЕЗ СТЕВАН
+ЧЕРКЕЗОВ ДУШАНКА
+ЧЕРКИЋ ОСМАН
+ЧЕРКИЋ ВАСИЛИЈЕ
+ЧЕРНЧЕЦ ВЕРА
+ЧЕРНАК ЕВА
+ЧЕРНЕК-АПРО ЖУЖАНА
+ЧЕРНЕКА СТЕВАН
+ЧЕРНИ ИШТВАН
+ЧЕРНИЧЕК ЕРЖЕБЕТ
+ЧЕРНИЧЕК ИШТВАН
+ЧЕРНИЧЕК ИШТВАН
+ЧЕРНИЋ ДУШАН
+ЧЕРНИК АТИЛА
+ЧЕРНИК ЈОЖЕФ
+ЧЕРНИК МАРГИТА
+ЧЕРНИВЕЦ ТАТЈАНА
+ЧЕРЊА МАРИЈА
+ЧЕРЊА МАТИЛДА
+ЧЕРЊАК ЛАДИСЛАВ
+ЧЕРЊАНСКИ ДРАГОМИР
+ЧЕРЊЕВСКИ СВЕТИСЛАВ
+ЧЕРЊУШ ЈАКИМ
+ЧЕРНОГУБОВ БОРИС
+ЧЕРНУШ ИБОЉА
+ЧЕРНУШ ТИБОР
+ЧЕРОВИЋ РАТКО
+ЧЕРУБЏИЋ ДРАГОМИР
+ЧЕРУБЏИЋ ЈОВАН
+ЧЕРУБЏИЋ МАРГИТА
+ЧЕРУБЏИЋ МАРГИТА
+ЧЕРУПОЖИЋ ОЛГА
+ЧЕРВАРИ ЕРЖЕБЕТ
+ЧЕРВЕЊАК ЈЕЛИСАВЕТА
+ЧЕРВЕЊАК ЈОСИП
+ЧЕРВЕЊАК ЉУБИЦА
+ЧЕРВЕЊАК ОЛГА
+ЧЕРВЕЊАК ПЕТАР
+ЧЕРВЕЊАК ЗАГОРКА
+ЧЕРВЕНКО АЛЕКСАНДАР
+ЧЕРВЕНКО АНА
+ЧЕСАК АНДРИЈА
+ЧЕТЕ АРОН ДИПЛ ИНГ
+ЧЕТИЋ МИЛОРАД
+ЧЕТЛЕ МАРИЈА
+ЧЕТНИК БОГДАН
+ЧЕТНИК ЈОВАН
+ЧЕТНИК ЗАГОРКА
+ЧЕТНИКОВИЋ ПЕТАР ДИПЛ ОЕЦ
+ЧЕТОЈЕВИЋ МИЛКА
+ЧЕТОЈЕВИЋ РАДИВОЈЕ
+ЧЕВАРИ ЂОРЂЕ
+ЧЕВАРИ АНТАЛ
+ЧЕВАРИ МАРИЈА
+ЧЕВАРИ МИХАЈЛО
+ЧЕВАРИ ЗОЛТАН
+ЧИЧА ЈОВАН
+ЧИЧА НИКОЛА
+ЧИЧАИ ЈОЖЕФ
+ЧИЧАК АНКИЦА
+ЧИЧАК МИРКО
+ЧИЧАКИН АНЂЕЛКА
+ЧИЧАРЕВИЋ САВО
+ЧИЧЕК ДАНИЈЕЛ
+ЧИЧИЋ ДРАГОЉУБ
+ЧИЧИЋ МИЛЕ
+ЧИЧИЋ МИРОСЛАВ
+ЧИЧКОВИЋ СВЕТКО
+ЧИЧОВАЧКИ БОРИСЛАВ
+ЧИЧОВАЧКИ ДИМИТРИЈЕ
+ЧИЧОВАЦ ЂОРЂЕ
+ЧИЧОВАЦ КОСТА
+ЧИЧОВАЦ МИЛИЦА
+ЧИЧОВАЦ РАДОСЛАВ
+ЧИЧОВАЦ ВЛАДИМИР
+ЧИЖЕК ПАВЛЕ
+ЧИЖЕК СЛАВОМИР
+ЧИЖМЕШИЈА ИВАН
+ЧИБРИ ЈАНОШ
+ЧИБРИ ПИРОШКА
+ЧИЕФ ЈАН
+ЧИЕФ МАРТИН
+ЧИЕФ САМУЕЛ
+ЧИХИ ФЕРЕНЦ
+ЧИХИ ЈАНОШ
+ЧИХИ ЈАНОШ
+ЧИК АНДРИЈА
+ЧИК ИЛИЈА
+ЧИК ЈЕНЕ
+ЧИК ЗОЛТАН
+ЧИКИ ЈОСИП
+ЧИКИ МАРИЈА
+ЧИКИЋ ЂОРЂЕ
+ЧИКИЋ ЦВЕТОМИР
+ЧИКИЋ ДРАГИЦА
+ЧИКИЋ ЕМИЛ
+ЧИКИЋ ЕВИЦА
+ЧИКИЋ МИЛАН
+ЧИКИЋ НИКОЛА
+ЧИКИЋ СТЕВАН
+ЧИКОШ ЖУЖАНА
+ЧИКОШ ЂЕРЂ
+ЧИКОШ ЂОРЂЕ
+ЧИКОШ ЕРЖЕБЕТ
+ЧИКОШ ЕРЖЕБЕТ
+ЧИКОШ ФЕРЕНЦ
+ЧИКОШ ЈОСИП ДР
+ЧИКОШ ЈУЛИЈАНА
+ЧИКОШ ЛАДИСЛАВ
+ЧИКОШ ЛЕХЕЛ
+ЧИКОШ МАРИЈА
+ЧИКОЈЕВИЋ ВИНКО
+ЧИКОВИЋ СРЕТКО
+ЧИКВАР КАРЛО
+ЧИЛАГ ЈАНОШ
+ЧИЛАГ НАНДОР
+ЧИЛАГ НАНДОР
+ЧИЛЕГ ЕВА
+ЧИЛИЋ АВДО
+ЧИЛИЋ ИШТВАН
+ЧИЛИЋ ЈОСИП
+ЧИЛИЋ ЈУЛИАНА
+ЧИЛИЋ МАЛВИНА
+ЧИЛИЋ МАРКО
+ЧИЛИК АНКА
+ЧИЛИК ИЛОНКА
+ЧИЛИНГИРИС ПАВЛЕ
+ЧИНЧАК ГАБОР
+ЧИНЧУРАК МИХАЈЛО
+ЧИНЧУРАК ПАВЛЕ
+ЧИНЧУРАК СТЕВАН
+ЧИНЧУРЕК БОШКО
+ЧИНДРАК ДАУТ
+ЧИНДРАК САНИЈА
+ЧИП МАТО
+ЧИПАК-ФАЗЕКАШ ИБОЈА
+ЧИПЕ ЂОРЂЕ
+ЧИПЕ ЕРЖЕБЕТ
+ЧИПЕ ЕРЖИКА
+ЧИПЕ ФРАЊА
+ЧИПЕ ИРЕН
+ЧИПЕ ЈАНОШ
+ЧИПЕ ЈОСИП
+ЧИПЕ ЈУЛИЈАНА
+ЧИПЕ ЛАСЛО
+ЧИПЕ ЛАСЛО
+ЧИПЕ МАРИЈА
+ЧИПЕ МАРТА
+ЧИПЕ МИХАЉ
+ЧИПЕ МИХАЉ
+ЧИПЕ СТЈЕПАН
+ЧИПИЋ КАТИЦА
+ЧИПКАР АНДРЕЈ
+ЧИПКАР СТЕВАН
+ЧИПЛИЋ ЛАЗАР
+ЧИПЛИЋ МИЛАН
+ЧИПЛИЋ ВЕРА
+ЧИПЛИЋ ВИДА
+ЧИРХ ДЕЖЕ
+ЧИРХ ВАСКА
+ЧИРИЋ ЈОЖЕФ
+ЧИСАР ФЕРЕНЦ ДИПЛ ИНГ
+ЧИСАР ЛАСЛО
+ЧИТЛУЧАНИН МИЛИЦА
+ЧИВЧИЋ ЕРЖЕБЕТ
+ЧИВЧИЋ МИХАЈЛО
+ЧИВЧИЋ МИЛЕ
+ЧИВЧИЋ МИЉА
+ЧИВЧИЋ РАДОМИР
+ЧИВЧИЋ САВО
+ЧИВОВИЋ МИЛЕВА
+ЧИВОВИЋ РАДОВАН
+ЧИЗМАДИА ГУСТАВ
+ЧИЗМАДИА ВЕРОНИКА
+ЧИЗМАДИЈА ЂУЛА
+ЧИЗМАДИЈА ИШТВАН
+ЧИЗМАДИЈА ЈАНОШ
+ЧИЗМАДИЈА КАРОЉ
+ЧИЗМАДИЈА МИКИ
+ЧИЗМАР АНА
+ЧИЗМАР АНИЦА
+ЧИЗМАР ЈАНКО
+ЧИЗМАР ЈОАКИМ
+ЧИЗМАР ЛАЈОШ
+ЧИЗМАР МАРИЈА
+ЧИЗМАР МИРКО
+ЧИЗМАР ПАВЛЕ
+ЧИЗМАР СТЕВАН
+ЧИЗМАР ВЛАДИМИР
+ЧИЗМЕШИЈА МАГДА
+ЧИЗМИЋ АНИЦА
+ЧИЗМИЋ ИВАН
+ЧИЗМИЋ РАДА
+ЧИЗМИЋ ЗОРА
+ЧИЗМОВИЋ ВИДАК
+ЧМЕЛИК МАРТИН
+ЧМЕЛИК РАСТИСЛАВ
+ЧОЧАЈ СУЛО
+ЧОШКОВ НАДА
+ЧОАШ ИРЕНА
+ЧОБАН ЈОН
+ЧОБАН ЈОВАН
+ЧОБАН ЈОВАН
+ЧОБАН ЛИДИЈА
+ЧОБАН МАРИЈА
+ЧОБАН НИКУ
+ЧОБАНОВ ЖИВКА
+ЧОБАНОВ БИЉАНА
+ЧОБАНОВ ДРАГИЦА
+ЧОБАНОВ ДРАГОМИР
+ЧОБАНОВ ДУШАН
+ЧОБАНОВ ЈЕЛЕНА
+ЧОБАНОВ ЉИЉАНА
+ЧОБАНОВ МЕЛАНИЈА
+ЧОБАНОВ МИЉКА
+ЧОБАНОВ РУЖИЦА
+ЧОБАНОВ СЛОБОДАН
+ЧОБАНОВ СВЕТО
+ЧОБАНОВ ВАСА
+ЧОБАНОВ ВЛАДИСЛАВ
+ЧОБАНОВ ЗОРАН
+ЧОБАНОВИЋ БОШКО
+ЧОБАНОВИЋ БРАНИСЛАВ
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДУШАН
+ЧОБАНОВИЋ-ГЕЗ МАРИЈА
+ЧОБАНОВИЋ ИЛИЈА
+ЧОБАНОВИЋ ЈЕЛЕНА
+ЧОБАНОВИЋ ЛАЗАР
+ЧОБАНОВИЋ ЉИЉАНА
+ЧОБАНОВИЋ НИКОЛА
+ЧОБАНОВИЋ РАДМИЛА
+ЧОБАНОВИЋ САВА
+ЧОБАНОВИЋ САВО
+ЧОБАНОВИЋ СЛОБОДАН
+ЧОБАНОВИЋ ВАЛЕРИЈА
+ЧОБАНОВИЋ ЗОРАН
+ЧОБАНСКИ ДРАГАН
+ЧОБАНСКИ МИЛЕНА
+ЧОБАНСКИ РАДОЈКА
+ЧОБИЋ РЕЉА
+ЧОБИЋ СТРАХИЊА
+ЧОБИЋ ТИМОТЕЈ
+ЧОБОТ ИЛОНКА
+ЧОБРДА ЈАНКО
+ЧОБРДА ЈАНКО
+ЧОЈИЋ СТЕФАНИДА
+ЧОКА ИВАНКА
+ЧОКАШ ЛУЦИЈА
+ЧОКАН НИКОЛА
+ЧОКАНИЦА САВА
+ЧОКАНИЦА СОФИЈА
+ЧОКИЋ МИЛАН
+ЧОКЉАТ ЗДЕНКА
+ЧОКРЛИЋ БАРБАРА
+ЧОКРЛИЋ ЈОСИП
+ЧОЛАК АЛЕКСАНДАР
+ЧОЛАК ДРАГОЉУБ
+ЧОЛАК ДРАГОЉУБ
+ЧОЛАК ГОРАН
+ЧОЛАК КРИСТИНА
+ЧОЛАК МИХАЈЛО
+ЧОЛАК-МИХАЛИК МАРИЈА
+ЧОЛАКОВ МИЛАН
+ЧОЛАКОВ МИЛЕ
+ЧОЛАКОВ ПАВЛЕ
+ЧОЛАКОВИЋ АНЂЕЛКА
+ЧОЛАКОВИЋ МОМА
+ЧОЛАКОВИЋ НИКОЛА
+ЧОЛАКОВИЋ СВЕТОЗАР
+ЧОЛАКОВИЋ ТЕОДОР
+ЧОЛАКОВИЋ ВАЊА
+ЧОЛЕВИЋ СВЕТИСЛАВ
+ЧОЛИЋ ЂУРО
+ЧОЛИЋ АНЂЕЛКА
+ЧОЛИЋ БОРО
+ЧОЛИЋ ДЕСА
+ЧОЛИЋ ДУШАН
+ЧОЛИЋ ДУШКО
+ЧОЛИЋ ЕЛИЗАБЕТА
+ЧОЛИЋ-ГАЋЕША СЛАВИЦА
+ЧОЛИЋ ИВАН
+ЧОЛИЋ ЈОВАНКА
+ЧОЛИЋ ЈОВАН
+ЧОЛИЋ ЈОВАН
+ЧОЛИЋ ЛУКА
+ЧОЛИЋ МАРА
+ЧОЛИЋ МАРИЈА
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИРЈАНА
+ЧОЛИЋ МИРКО
+ЧОЛИЋ МИРОСЛАВКА
+ЧОЛИЋ ПЕТАР
+ЧОЛИЋ РАДА
+ЧОЛИЋ РАДМИЛА
+ЧОЛИЋ РИСТО
+ЧОЛИЋ САВА
+ЧОЛОВИЋ БОГОЉУБ
+ЧОЛОВИЋ ДРАГАН
+ЧОЛОВИЋ ДУШАН
+ЧОЛОВИЋ МИЛЕ
+ЧОЛОВИЋ МИЛИЈАНА
+ЧОЛОВИЋ ОЛГА
+ЧОЛОВИЋ ПЕТАР
+ЧОЛОВИЋ РАДОСЛАВ
+ЧОЛОВИЋ РАДОВАН
+ЧОЛОВИЋ СТЕВАН
+ЧОЛОВИЋ ВИДОСАВ
+ЧОЛОВИЋ ВЛАДО
+ЧОМА ЂУЛА
+ЧОМА ЂУЛА
+ЧОМИЋ ЂУРЂИНА
+ЧОМИЋ ДАРА
+ЧОМИЋ ДРАГАН
+ЧОМИЋ ДУШАНКА
+ЧОМИЋ ЕРЖЕБЕТ
+ЧОМИЋ ИЛИЈА
+ЧОМИЋ ЈАШКО
+ЧОМИЋ ЈАШКО
+ЧОМИЋ КРСТА
+ЧОМИЋ ЛИДИЈА
+ЧОМИЋ ЉУБОМИР
+ЧОМИЋ МИЛОШ
+ЧОМИЋ МИРОЉУБ
+ЧОМИЋ МЛАДЕН
+ЧОМИЋ СЛОБОДАН
+ЧОМИЋ СМИЉАНА
+ЧОМИЋ ТОДОР
+ЧОМИЋ ТОДОР
+ЧОМОР ИЛОНКА
+ЧОМОР МАТИЛДА
+ЧОНГРАДАЦ ДАНИЈЕЛА
+ЧОНГРАДАЦ ИВАНКА
+ЧОНГРАДАЦ РАДОСЛАВ
+ЧОНИЋ АНКА
+ЧОНИЋ МИЛЕНКО
+ЧОНИЋ МИЛОШ
+ЧОНИЋ ПЕТАР
+ЧОНИЋ ТИЈАНА
+ЧОНИЋ ЗОРАН
+ЧОНКА ЂЕРЂ
+ЧОНКА ГОРДАНА
+ЧОНКА КАРОЉ
+ЧОНКА ПЕТАР
+ЧОНКАШ ЕМИЛ
+ЧОНКАШ ГАБРИЕЛА
+ЧОНКАШ ЛАДИСЛАВ
+ЧОНКИЋ ЖИВКО
+ЧОНКИЋ АЛЕКСА
+ЧОНКИЋ БИЉАНА
+ЧОНКИЋ БОГОЉУБ ЛЕКАР
+ЧОНКИЋ БОРИСЛАВ
+ЧОНКИЋ ДРАГАН
+ЧОНКИЋ ЈЕЛА
+ЧОНКИЋ ЈУДИТ
+ЧОНКИЋ ЉИЉАНА
+ЧОНКИЋ МАРИЈА
+ЧОНКИЋ МИЛАНКА
+ЧОНКИЋ МИЛЕНА
+ЧОНКИЋ МИЛОШ
+ЧОНКИЋ МИЛОРАД
+ЧОНКИЋ МИЛОРАД
+ЧОНКИЋ МИЛОВАН
+ЧОНКИЋ МОМЧИЛО ДИПЛ ИНГ
+ЧОНКИЋ НЕБОЈША
+ЧОНКИЋ НЕСТОР
+ЧОНКИЋ ПЕТАР
+ЧОНКИЋ РАДЕНКО
+ЧОНКИЋ РАДОСЛАВ
+ЧОНКИЋ САША
+ЧОНКИЋ СЛАВКО
+ЧОНКИЋ СЛОБОДАН
+ЧОНКИЋ СНЕЖАНА
+ЧОНКИЋ СТАМЕНА
+ЧОНКИЋ СТЕВАН
+ЧОНКИЋ ТИХОМИР
+ЧОНТОШ ЈОЖЕФ
+ЧОНТОШ ЗОРА
+ЧОПЧИЋ МАРТИН
+ЧОПИК ПЕТАР
+ЧОПИК ВАСИЛИЈА
+ЧОПОРДА ВУКОСАВА
+ЧОР ФРАЊА
+ЧОР ЈОСИП
+ЧОРАК ЈОСИП
+ЧОРАК СТИПЕ
+ЧОРАЛИЋ ИВАНКА
+ЧОРБА ЂЕРЂ
+ЧОРБА ИШТВАН
+ЧОРБА ЈОВАН
+ЧОРБА ЈОВАН
+ЧОРБА МИХАЉ
+ЧОРДА АЛЕКСАНДРА
+ЧОРДА АЛИЈА
+ЧОРДА НАДЕЖДА
+ЧОРДА ТОМИСЛАВ
+ЧОРДА ВЕРА
+ЧОРДАШ АНДРИЈА
+ЧОРДАШ АРПАД
+ЧОРДАШ ДУШАНКА
+ЧОРДАШ ЕРЖЕБЕТ
+ЧОРДАШ ХАРГИТА
+ЧОРДАШ ИРЕНА
+ЧОРДАШ ЛАСЛО
+ЧОРДАШ МИХАЉ
+ЧОРДАШ СЛАВКО
+ЧОРДАР БРАНКО
+ЧОРДАРЕВ ЉИЉАНА
+ЧОРДАРЕВ ВЕРА
+ЧОРДАРОВ БОРИСЛАВКА
+ЧОРДАРОВ ИВАН
+ЧОРДАРОВ СВЕТИСЛАВ
+ЧОРДАРОВ ТЕОДОР
+ЧОРДАРОВ ТЕОДОР
+ЧОРИЋ МАРИЈАН
+ЧОРНЕНКИ БОРИСЛАВ
+ЧОРНЕНКИ ДРАГОЉУБ
+ЧОРНЕНКИ ЈОВАН
+ЧОРНЕНКИ ВЛАДА
+ЧОРНИ МИЛУНА
+ЧОРНИЈ МИРОСЛАВ
+ЧОРТАН ЖИВКО
+ЧОРТАН БОШКО
+ЧОРТАН МИЛИЦА
+ЧОРТАН НАДА
+ЧОРТАН РАДИВОЈ
+ЧОРТАНОВАЧКИ СЛОБОДАН
+ЧОВИЋ ДАРКО
+ЧОВИЋ ДАРКО
+ЧОВИЋ ДРАГАН
+ЧОВИЋ ГУСТАВ
+ЧОВИЋ ИВАН
+ЧОВИЋ ЈАНКО
+ЧОВИЋ ЈОСИП
+ЧОВИЋ КОВИЉКА
+ЧОВИЋ КРСТО
+ЧОВИЋ ЛАДА
+ЧОВИЋ МАРИЈАНА
+ЧОВИЋ МИЛАН
+ЧОВИЋ МИЛЕВА
+ЧОВИЋ МОМИР
+ЧОВИЋ ОЛГА
+ЧОВИЋ ПЕТАР
+ЧОВИЋ РАДОШ
+ЧОВИЋ РАДОСЛАВ
+ЧОВИЋ РАТКО
+ЧОВИЋ СНЕЖАНА
+ЧОВИЋ СТАНКО
+ЧОВИЋ ВЛАДА
+ЧОВИЋ ВЛАТКО
+ЧОВИЋ ЗОРИЦА
+ЧОВИЛО БРАНИСЛАВ
+ЧОВС ЈАША
+ЧОВС ПАВЛЕ
+ЧОВС ПАВЛЕ
+ЧОВС ВЕРИЦА
+ЧРЕТНИК-ЦВЕЈАНОВИЋ ОЛГА ДИПЛ ИНГ
+ЧРЊЕКА ЗЛАТКО
+ЧРНОЈАЧКИ ДАНИСЛАВ
+ЧУЧ ЈЕЛЕНА
+ЧУЧ МАРИЈА
+ЧУЧИЛОВИЋ БРАНКА
+ЧУЧКОВИЋ ЧЕДО
+ЧУЧКОВИЋ ЖЕЉКО
+ЧУЧКОВИЋ ЂУРО
+ЧУЧКОВИЋ БОЖИДАР
+ЧУЧКОВИЋ ДРАГАН
+ЧУЧКОВИЋ РАДОЈКА
+ЧУЧКОВИЋ САВА ДИПЛ ИНГ
+ЧУЧКОВИЋ СЛОБОДАН
+ЧУЧКОВИЋ СПАСА
+ЧУЧКОВИЋ ВЛАДИМИР
+ЧУЧУЛИС ДИМИТРИЈЕ
+ЧУБРАНОВИЋ РАДОМИР
+ЧУБРИЛО АНКА
+ЧУБРИЛО ДРАГАН
+ЧУБРИЛО ДУШАН
+ЧУБРИЛО ЈОВО
+ЧУБРИЛО ЛАЗО
+ЧУБРИЛО МИЛАН
+ЧУБРИЛО ПЕТАР
+ЧУБРИЛО СОФИЈА
+ЧУБРИЛО ВЛАДИМИР
+ЧУБРИЛОВИЋ МИЛАН
+ЧУБРОВИЋ СТЕВАН
+ЧУДАНОВ ЧЕДА
+ЧУДАНОВ АЛЕКСАНДАР
+ЧУДАНОВ МАРИЈА
+ЧУДАНОВ МИЛИЦА
+ЧУДИЋ ИВАН
+ЧУДИЋ ЈОВАНКА
+ЧУДИЋ МИЛОРАД
+ЧУДИЋ НИКОЛА
+ЧУДИЋ ПРЕДРАГ
+ЧУДИЋ СЛОБОДАН
+ЧУДОМИРОВИЋ БОГДАН
+ЧУДОМИРОВИЋ УРОШ
+ЧУГАЉ АНКА
+ЧУГАЉ МИРЈАНА
+ЧУГАЉ СВЕТО
+ЧУГЕЉ АНГЕЛИНА
+ЧУХА МАРИЈА
+ЧУХА ПАВЛЕ
+ЧУХА СЛАВКО
+ЧУХА СТЕВАН
+ЧУХА-ВУЈКОВ РУЖА
+ЧУХА ЗЛАТА
+ЧУЈАНОВ БОРИС
+ЧУКА ВЈЕКОСЛАВ
+ЧУКАЉИЋ НЕВЕНКА
+ЧУКИЋ БОРИВОЈЕ
+ЧУКИЋ МИЛКА
+ЧУКИЋ МИРСАДА
+ЧУКИЋ СЛОБОДАН
+ЧУКИЋ ЗОРАН
+ЧУКЉАШ ИВАН
+ЧУКЉЕК ФРАЊА
+ЧУКЉЕК МАРГИТА
+ЧУКЉЕВИЋ БУДИМКА
+ЧУКОВИЋ СЛАВКО
+ЧУКУРАНОВИЋ ЖИКА
+ЧУКУРАНОВИЋ МИЈА
+ЧУЛАЈЕВИЋ ЈОВАН
+ЧУЛАЈЕВИЋ СТАНКО
+ЧУЛИЋ ЈОВА
+ЧУЛИК ХАЈНЕРИК
+ЧУЛИНА ЖЕЉКО
+ЧУЉАК ДРАГА
+ЧУЉАК ИВАН
+ЧУЉАК КАРЛО
+ЧУЉАК МИРКО
+ЧУЉАК НАДА
+ЧУЉАТ ДАНЕ
+ЧУЉАТ ЈАКОВ
+ЧУЉИЋ ЖИВОЈИН
+ЧУЛО БОЖА
+ЧУЛО МАРКО
+ЧУЛО МАТО
+ЧУНКО БРАНКО
+ЧУПАК АЛЕКСАНДАР
+ЧУПЕЉИЋ МИЛИВОЈЕ
+ЧУПИЋ ЂОРЂЕ
+ЧУПИЋ БОЖИДАР
+ЧУПИЋ БОЈАН
+ЧУПИЋ БРАНИСЛАВ
+ЧУПИЋ ДРАГАН
+ЧУПИЋ ДУШАН
+ЧУПИЋ ХРИСТИФОР
+ЧУПИЋ ЈЕЛЕНА
+ЧУПИЋ КАЈКА
+ЧУПИЋ КАЈКА
+ЧУПИЋ КАТИЦА
+ЧУПИЋ КАТИЦА
+ЧУПИЋ КОСТАДИНКА
+ЧУПИЋ КРИСТИНА
+ЧУПИЋ ЉУБОМИР
+ЧУПИЋ МИЛАН
+ЧУПИЋ МИЛИЦА
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИРЈАНА
+ЧУПИЋ МИРОСЛАВ
+ЧУПИЋ ОЛГА
+ЧУПИЋ РАДИНКА
+ЧУПИЋ РАДОСЛАВ
+ЧУПИЋ СПОМЕНКА
+ЧУПИЋ СТЕВАН
+ЧУПИЋ СТЕВАН
+ЧУПИЋ СТОЈАН
+ЧУПИЋ УРОШ
+ЧУПИЋ ЗОРАН
+ЧУРЧИЋ ДУШАН
+ЧУРЧИЋ ИЛИЈА
+ЧУРЧИЋ ЛАЗАР
+ЧУРЧИЋ СЛОБОДАНКА
+ЧУРГАНОВ ЕМИЛ
+ЧУРИЋ ЖАРКО
+ЧУРИЋ ЂОРЂЕ
+ЧУРИЋ ДРАГОСЛАВА
+ЧУРИЋ ДУШАНКА
+ЧУРИЋ МИЛЕНА
+ЧУРИЋ МИЛОШ
+ЧУРИЋ НАТАЛИЈА
+ЧУРИЋ РАДОСЛАВ ДР ПРОФ
+ЧУРИЋ СЛОБОДАН
+ЧУРИЋ ВАСА
+ЧУРИЋ ВЕЛИНКА
+ЧУРИЋ ВИДОСАВА
+ЧУРИЋ ВИДОСАВА
+ЧУРОВИЋ ДАНИЛО
+ЧУРОВИЋ ВУКСАН
+ЧУРУШКИ ГАВРА
+ЧУРУШКИ МИЦА
+ЧУСТОВИЋ АРИФ
+ЧУТУРА МАРКО
+ЧУТУРИЋ ЈЕРОНИМ
+ЧУТУРИЛО ЧЕДОМИР
+ЧУТУРИЛО БОЖА
+ЧУТУРИЛО МИЛИВОЈЕ
+ЧУТУРИЛО СЛОБОДАН ДИПЛ ИНГ
+ЧУТУРИЛОВ МАРИЈА
+ЧУТУРИЛОВ МИЛОШ
+ЧУТУРИЛОВ МИЛОШ
+ЧУТУРИЛОВ СВЕТОЗАР
+ЧУТУРИЛОВ ВЕЛИНКА
+ЧУТУРИЛОВ ВУЈИЦА
+ЧУВАЛО ЉУБИЦА
+ЧУВАРДИЋ АНТУН
+ЧВОКИЋ МАРКО
+ЧВОКИЋ РАТКО
+ЧВОРИЋ ДУШАН
+ЧВОРИЋ МИЛОЈЕ
+ЧВОРКОВ ЉУБОМИР
+ЧВОРКОВ ЗДРАВКО
+ЧВОРКОВ ЗЛАТАН
+ЧВОРО-ЂУКИЋ ДУШАНКА
+ЧВОРО ДОБРОСЛАВ
+ЧВОРОВИЋ ЈЕЛЕНКА
+ЧВОРОВИЋ ЉУБО
+ЧВОРОВИЋ РАТКО
+ЧВОРОВИЋ ВУЈИЦА
+ШЋЕКИЋ БУДИМИР
+ШЋЕКИЋ ДРАГОМИР
+ШЋЕКИЋ КОСА
+ШЋЕКИЋ МИЛАНКА
+ШЋЕКИЋ МИЛИЋ
+ШЋЕКИЋ МИЛИЦА
+ШЋЕКИЋ МИОМИР
+ШЋЕКИЋ СЛОБОДАН
+ШЋЕКИЋ СВЕТОЗАР
+ШЋЕКИЋ ВУКО
+ШЋЕПАНЧЕВИЋ ЂОРЂЕ
+ШЋЕПАНЧЕВИЋ НИКОЛА
+ШЋЕПАНОВИЋ БОГОЉУБ
+ШЋЕПАНОВИЋ БРАНИСЛАВ
+ШЋЕПАНОВИЋ ДОБРОСЛАВА
+ШЋЕПАНОВИЋ ДРАГАН
+ШЋЕПАНОВИЋ ДРАГАН
+ШЋЕПАНОВИЋ ДРАГУТИН
+ШЋЕПАНОВИЋ ДУШАН
+ШЋЕПАНОВИЋ ГОРАН
+ШЋЕПАНОВИЋ ГОРДАНА
+ШЋЕПАНОВИЋ ЉУБОМИР
+ШЋЕПАНОВИЋ МИЛЕВА
+ШЋЕПАНОВИЋ МИЛОВАН
+ШЋЕПАНОВИЋ МИОДРАГ
+ШЋЕПАНОВИЋ РАШКО
+ШЋЕПАНОВИЋ РАДОВАН
+ШЋЕПАНОВИЋ РАНКО ДИПЛ ИНГ
+ШЋЕПАНОВИЋ СИНИША
+ШЋЕПАНОВИЋ ЗОРАН
+ШЋЕПАНОВИЋ ЗОРА
+ШЋЕПОВИЋ ПЕТАР
+ШЋЕРБАЋЕВ ГЛИГОРИЈЕ
+ШЋЕВЧИК ПАВЛЕ
+ШЋИБАН МАРИНА
+ШЋОПИЋ МИОДРАГ
+ШЋОПИЋ СТАНИМИР
+ШЋОПУЛОВИЋ ПЕТАР
+ШЋУРИЦ ЈОСИП
+ШАШИЋ ЖИВКО
+ШАШИЋ ЂОРЂЕ
+ШАШИЋ ДУШАН
+ШАШИЋ МИЛАН
+ШАШИЋ МИЛАН
+ШАШИЋ МИЛОШ
+ШАШИЋ МИРКО
+ШАШИЋ НЕВЕНКА
+ШАШИЋ ПЕТАР
+ШАШИЋ САВО
+ШАШИЋ СТЕВАН
+ШАШИЋ ЗОРАН
+ШАШИН ДАНИЦА
+ШАШИН РАДОМИР
+ШАШИНАЧКИ МАРИЈА
+ШАШИНАЧКИ СОЊА
+ШАШИНАЧКИ ВАСИЛИЈЕ
+ШАШЉИН ЛАЗАР
+ШАШОВИЋ ТРИФКО
+ШАБАНИ НАЗИМ
+ШАБАНОВИЋ АБДУРАХМАН
+ШАБАНОВИЋ ОБРАД
+ШАБЕЦ ДРАГИЦА
+ШАБИЋ ЂУРО
+ШАБИЋ ХУСЕИН
+ШАБИЋ ПАВЛЕ
+ШАБЛИ МАРТОН
+ШАБЛИ МИХАЈЛО
+ШАБОВИЋ МЕХМЕДАЛИЈА
+ШАДЕ ЈЕЛЕНА
+ШАФАРИК ЉИЉАНА
+ШАФРАЊ АНДРИЈА
+ШАФРАЊ ДЕЖЕ
+ШАФРАЊ ФРАЊА
+ШАФРАЊ ЛАСЛО
+ШАФРАЊ ЛАСЛО
+ШАФРАЊ ПИРОШКА
+ШАФРАЊ СТЕВАН
+ШАФРАЊ ТЕОДОРА
+ШАГУНОВИЋ ДУШАН
+ШАГУНОВИЋ МИЛИВОЈ
+ШАИН АНДРИЈА
+ШАИН МИЛЕВА
+ШАИН ЗАГОРКА
+ШАИНОВИЋ ДУШАН
+ШАИНОВИЋ МАРИНА
+ШАЈАТОВИЋ ЈЕЛИЦА
+ШАЈАТОВИЋ ЗДРАВКО
+ШАЈБЕР ДАНИЦА
+ШАЈБЕР МИЛЕНКО
+ШАЈДИК ФРАНЦИШКА
+ШАЈФАР ПАВЛЕ
+ШАЈИН МИЛОРАД
+ШАЈИНОВИЋ ДРАГОСЛАВ
+ШАЈИНОВИЋ ДУШАН
+ШАЈИНОВИЋ ГОРДАНА
+ШАЈИНОВИЋ МАРИНКО
+ШАЈИНОВИЋ СИДА
+ШАЈН ДУШАН
+ШАЈНБЕРГЕР ЈОВАН
+ШАЈНБЕРГЕР ЛИЛИ
+ШАЈНОВ ЈОВАН
+ШАЈНОВ КАТИЦА
+ШАЈНОВ ПЕТАР
+ШАЈНОВИЋ РАДИНКА
+ШАЈТИ ЕТЕЛКА
+ШАЈТИ ГИЗЕЛА
+ШАЈТИ КАТИЦА
+ШАЈТИ МАРИЈА
+ШАЈТОШ ЂОРЂЕ
+ШАЈТОШ ЂУРА
+ШАЈТОШ ЉУБИША
+ШАЈТОШ НИКОЛА
+ШАЈТОШ СИМА
+ШАЈТОШ СИМА
+ШАКИЋ ЖЕЉКО
+ШАКИЋ ЂОРЂЕ
+ШАКИЋ ИЛИЈА
+ШАКИЋ ИЛИЈА
+ШАКИЋ ИЛИЈА
+ШАКИЋ ЈАЊА
+ШАКИЋ КАТА
+ШАКИЋ МАНЕ
+ШАКИЋ МИЛУТИН
+ШАКИЋ РАДЕ
+ШАКИЋ ЗОРКА
+ШАКОТА ДУШАН
+ШАКОТА КОЈО
+ШАКОТА МИЛАН
+ШАКОТА МИЛОРАД
+ШАКОТА СИМЕОН
+ШАКОТИЋ ЉУБОМИР
+ШАКОТИЋ МИРЈАНА
+ШАКУ МЕХМЕД
+ШАЛАБАЛИЈА ДРАГОМИР
+ШАЛАБАЛИЈА ВАСО
+ШАЛАЈИЋ СТЕВАН
+ШАЛАМОН ШАНДОР
+ШАЛАМОН АНДРИЈА
+ШАЛАМОН ЈОСИП
+ШАЛАМОН ЈОСИП
+ШАЛАМОН МИША
+ШАЛАМОН МИХАЈЛО
+ШАЛАМОН МИХАЈЛО
+ШАЛАНКИ ЈАНОШ
+ШАЛАНКИ ЈАНОШ
+ШАЛБОТ ЗУЗА
+ШАЛЕР ВЕРА
+ШАЛГО ЈЕЛИСАВЕТА
+ШАЛИПУРОВИЋ МИЛОВАН
+ШАЛИПУРОВИЋ СЛАВИША
+ШАМАТИЋ НЕМАЊА
+ШАМЕЦ МИЛИЦА
+ШАНДОЛ АТИЛА
+ШАНДОЛ АТИЛА
+ШАНДОЛ ИШТВАН
+ШАНДОЛ КАТИЦА
+ШАНДОЛ МАТИЈА
+ШАНДОЛ МИХАЈЛО
+ШАНДОР ИЛОНА
+ШАНДОР ЈОСИП
+ШАНДОР ЛАДИСЛАВ
+ШАНДОР МАРИЈА
+ШАНДОР ТИБОР
+ШАНДОРИ ШАРИКА
+ШАЊИЋ МИЛАДИН
+ШАНОВИЋ ДУШАН
+ШАНТА ШАНДОР
+ШАНТА АМАЛИЈА
+ШАНТА БЕЛА
+ШАНТА ДУШАНКА
+ШАНТА ФЕРЕНЦ
+ШАНТА ИШТВАН
+ШАНТА ИЛОНКА
+ШАНТА ИМРЕ
+ШАНТА ЈОСИП
+ШАНТА ЛАСЛО
+ШАНТА МИРОСЛАВ
+ШАНТА ПАЛ
+ШАНТА СИМА
+ШАНТА СЛАВКО
+ШАНТА СОФИЈА
+ШАНТА СТЕВАН
+ШАНТА ВИНКО
+ШАНТА ВЛАДИМИР
+ШАНТАК ЈОСИП
+ШАНТАК КАРЛО
+ШАНТАЛАБ СОФИЈА
+ШАНТЕК ЖЕЉКО
+ШАНТЕК ЗДЕНКА
+ШАПИ ПИРОШКА ДИПЛ ИНГ
+ШАПИЋ НИКОЛА
+ШАПИНА МИРОСЛАВ
+ШАПОЊА ЈОВАН
+ШАПОЊА МАРКО
+ШАПОЊАЦ ЖАРКО
+ШАПОЊАЦ ЖАРКО
+ШАПОЊАЦ АЛЕКСАНДАР
+ШАПОЊАЦ ЈЕЛКА ПРОФЕСОР
+ШАПОЊАЦ РАДА
+ШАПОЊАЦ СТЕВАН
+ШАПОЊСКИ РАДИВОЈ
+ШАПУРИЋ СВЕТОЗАР
+ШАРЧАНСКИ ЈУЛКА
+ШАРЧАНСКИ МИЛИЦА
+ШАРЧАНСКИ МИРОСЛАВ
+ШАРЧЕВ АНТОНИЈА
+ШАРЧЕВ ЈЕЛЕНА
+ШАРЧЕВ МИРОСЛАВА
+ШАРЧЕВ НИКОЛА
+ШАРЧЕВ ВЛАДИМИР
+ШАРЧЕВИЋ ЖАРКО
+ШАРЧЕВИЋ ЖЕЛИМИР
+ШАРЧЕВИЋ АНИЦА
+ШАРЧЕВИЋ БРАТИМИР
+ШАРЧЕВИЋ ДУШАН
+ШАРЧЕВИЋ ГРОЗДАНА
+ШАРЧЕВИЋ ИЛКА
+ШАРЧЕВИЋ КАТИЦА
+ШАРЧЕВИЋ МАРГИТА ДР
+ШАРЧЕВИЋ МИЛЕНА
+ШАРЧЕВИЋ НЕБОЈША
+ШАРЧЕВИЋ ПЕТАР
+ШАРЧЕВИЋ ПРЕДРАГ
+ШАРЧЕВИЋ РАЈКО
+ШАРЧЕВИЋ ВИДОЈЕ
+ШАРЧЕВИЋ ВОЈИСЛАВ
+ШАРШАНСКИ МАРИНКО
+ШАРШАНСКИ МИЛАН
+ШАРА ИМРЕ
+ШАРА ИМРЕ
+ШАРАЦ ЂОРЂЕ
+ШАРАЦ БИЉАНА
+ШАРАЦ БОШКО
+ШАРАЦ ДУШАН
+ШАРАЦ ДУШАН
+ШАРАЦ МИЛАН
+ШАРАЦ МИЛЕ
+ШАРАЦ МИЛИЦА
+ШАРАЦ МИОДРАГ
+ШАРАЦ РАДОЈЕ
+ШАРАЦ РАДОМИР
+ШАРАЦ РАДОВАН
+ШАРАЦ РУЖИЦА
+ШАРАЦ СТЕВА
+ШАРАЦ СВЕТОЗАР
+ШАРАНДИ ШАНДОР
+ШАРАНОВИЋ АНИТА
+ШАРАНОВИЋ ДРАГИША
+ШАРАНОВИЋ МИЛАДИН ДР ЛЕКАР
+ШАРАНОВИЋ МИЛОШ
+ШАРАНОВИЋ МИОДРАГ
+ШАРАНОВИЋ ЗОРАН
+ШАРЕНАЦ БОЖИДАР
+ШАРЕНАЦ МАРКО
+ШАРЕНАЦ РОЗИНА
+ШАРЕНАЦ ВИДАК
+ШАРЕНАЦ ВОЈИСЛАВ
+ШАРГАЧ БРАНКО
+ШАРГИЋ МИЛОРАД
+ШАРГИЋ ВЛАДИМИР
+ШАРГИЋ ЗЛАТИЦА
+ШАРГИН ЖАРКО
+ШАРГИН МАРИЈА
+ШАРИ МАРИЈА
+ШАРИ СТЕВАН
+ШАРИЋ ЈОСИП
+ШАРИЋ КАТАРИНА
+ШАРИЋ КОСТА
+ШАРИЋ ЉУБИЦА
+ШАРИЋ МАРИЈА
+ШАРИЋ МАТО
+ШАРИЋ НЕНАД
+ШАРИЋ СЛОБОДАН
+ШАРИЋ СОФИЈА
+ШАРИЋ СТЕВАН
+ШАРИЋ ТОМИСЛАВ МР
+ШАРИЋ ЗВЕЗДАНА
+ШАРИК АНА
+ШАРИК АНДРИЈА
+ШАРИК ЈОВАН
+ШАРИК КАТИЦА
+ШАРИК ЉУБИЦА
+ШАРИК МИРОСЛАВ
+ШАРИК СТЕВАН
+ШАРИК-ВИДИЋ НАДА
+ШАРИК ВЛАДИМИР
+ШАРКАДИ ВЕРОНИКА
+ШАРКАЊ АНТОН
+ШАРКАЊ ФЕРЕНЦ
+ШАРКАЊ ФРАЊА
+ШАРКАЊ ЈАНОШ
+ШАРКАЊАЦ ФЕРЕНЦ
+ШАРКЕЗИ-ПЕТРИЋ МАРГИТА
+ШАРКИЋ СРЂАН
+ШАРКОВИЋ ДУШАН
+ШАРКОВИЋ МИОДРАГ ДР
+ШАРКОВИЋ ЗОРАН
+ШАРЊАИ АНКИЦА
+ШАРЊАИ МИКЛОШ
+ШАРЊАИ ПАЛ
+ШАРО ЈОВАН
+ШАРО НАДА
+ШАРОШИ ВАЛЕРИЈА
+ШАРОШКОВИЋ ВУКИЦА
+ШАРОИ-САБО ВЕРА
+ШАРОВИЋ ЂУРО
+ШАРОВИЋ МИРКО
+ШАРОВИЋ ПЕТАР
+ШАРУ ДУШИЦА
+ШАРВАРИ ШАНДОР
+ШАРВАРИ КАРОЉ
+ШАРВАРИ МАРТА
+ШАРВАРИ РОЗАЛИЈА
+ШАРВАРИ ВАЛЕРИЈА
+ШАСИВАР АХМЕД
+ШАТАРА МИЛАН
+ШАТОРА СТОЈАН
+ШАТРИЋ АНА
+ШАТРИЋ БРАНИСЛАВ
+ШАУЛА ГОРАН
+ШАУЛА РАДОВАН
+ШАУЛИЋ ДИМИТРИЈЕ
+ШАВЕЛИН ШАНДОР
+ШАВЕЛИН ЈОСИП
+ШАВЕЛИН ЈОВАН
+ШАВЕЛИН ЈУЛИЈА
+ШАВЕРДИЈА НИКОЛА
+ШАВИЈА ДУШАН
+ШАВИЈА МИЛЕ
+ШАВИЈА МИЛОРАД
+ШАВИЈА ПЕТАР
+ШАВИЈА РАДЕ
+ШАВРЉУГА МИЛАН
+ШЕЧИЋ АЛИЈА
+ШЕЧИЋ ЈУЛКА
+ШЕША СЛАВКО
+ШЕШЕЉА БРАНИМИР
+ШЕШЕЉА МАРИЈАН
+ШЕШЕРИНАЦ ЂОРЂЕ
+ШЕШЕВИЋ ЂОРЂЕ
+ШЕШЕВИЋ ДРАГИЦА
+ШЕШЕВИЋ ЛЕОНА
+ШЕШЕВИЋ ЉИЉАНА
+ШЕШЕВИЋ МАРА
+ШЕШЕВИЋ МИЛИВОЈ
+ШЕШЕВИЋ СТЕВАН
+ШЕШИЋ ЖИВОТА ДИПЛ ИНГ
+ШЕШИЋ АУРЕЛИЈА
+ШЕШИЋ ДРАГОЉУБ
+ШЕШИЋ ДРАГОЉУБ
+ШЕШИЋ ВЕРА
+ШЕШИЋ ВИДА
+ШЕШКАР НАДА
+ШЕШЛИЈА ЧЕДА
+ШЕШЛИЈА БРАНКО
+ШЕШЛИЈА ДРАГАН
+ШЕШЛИЈА ДУШАН
+ШЕШУМ БРАНКО
+ШЕШУМ ДРАГОЉУБ
+ШЕШУМ ИЛИЈА
+ШЕШУМ МИХАЈЛО
+ШЕШУМ МИЛАН
+ШЕШУМ МИЛАН
+ШЕШУМ МИЛЕНКО
+ШЕШУМ САВА
+ШЕШУМ СЛАВИЦА
+ШЕШУМ ТОМА
+ШЕЋЕРОВ АНЂЕЛИЈА
+ШЕЋЕРОВ БИЉАНА
+ШЕЋЕРОВ БРАНИСЛАВ
+ШЕЋЕРОВ ДРЕНКА
+ШЕЋЕРОВ ДУШАН
+ШЕЋЕРОВ ЕМИЛ
+ШЕЋЕРОВ ИДА
+ШЕЋЕРОВ ИВАН
+ШЕЋЕРОВ ЈОВАН
+ШЕЋЕРОВ КАЈА
+ШЕЋЕРОВ МАТА
+ШЕЋЕРОВ МИЛАН
+ШЕЋЕРОВ ПАВЛЕ
+ШЕЋЕРОВ ПЕТАР ДИПЛ ИНГ
+ШЕЋЕРОВ ПЕТАР
+ШЕЋЕРОВ ПРОДАН
+ШЕЋЕРОВ РАДОСЛАВ
+ШЕЋЕРОВ САВА
+ШЕЋЕРОВ СИНИША
+ШЕЋЕРОВ СВЕТЛАНА
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ ЗЛАТОЈЕ
+ШЕЋЕРОВ ЗЛАТОЈЕ
+ШЕБЕШЋЕН ИМРЕ
+ШЕБЕШЋЕН ЈОЖЕФ
+ШЕБЕДИНИ НЕВЗАД
+ШЕБЕК ЂУЛА
+ШЕБЕК АНУШКА
+ШЕБЕК ИВАН
+ШЕБЕК ЈОСИП
+ШЕБЕКОВИЋ ПАВЛЕ
+ШЕБЕЗ ДРАГАН
+ШЕБЕЗ ДУШАН
+ШЕБЕЗ ЛАЗО
+ШЕБЕЗ РАДОЈКА
+ШЕБЕЗ СИМО
+ШЕБЕЗ СТЕВАН
+ШЕБЕЗ СТЕВО
+ШЕБЕЗ СТЕВО
+ШЕБИ ЈЕЛИЦА
+ШЕФЧИЋ ЕМИЛ
+ШЕФЧИЋ МИРКО
+ШЕФЕР ЂОРЂЕ ДИПЛ ИНГ
+ШЕФЕР АЛЕКСАНДРА
+ШЕФЕР ЈУЛИЈЕ ДР
+ШЕФЕР КАТАРИНА
+ШЕФЕР КЛАРА
+ШЕФЕР МИОДРАГ
+ШЕФЕР ПЕТАР
+ШЕФЕР РАДОЈЕ
+ШЕФЕР СЛАВКО
+ШЕГЕЦ ЕДУАРД
+ШЕГИНА НИКОЛА
+ШЕГО НИКОЛА
+ШЕГОВИЋ ДРАГАН
+ШЕГОВИЋ МИЛОШ
+ШЕГРТ ЧЕДОМИР
+ШЕГРТ ЧЕДОМИР
+ШЕГРТ ЈОВО
+ШЕГРТ ЈОВО
+ШЕГРТ МАТО
+ШЕГРТ МЛАДЕН
+ШЕГРТ НАДА
+ШЕГРТ ПЕТАР
+ШЕГРТ ВОЈИСЛАВ
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ГРУЈА
+ШЕГУЉЕВ ЈОВАН
+ШЕГУЉЕВ МАРКО
+ШЕГУЉЕВ МИКА
+ШЕГУЉЕВ МИЛЕНКО
+ШЕГУЉЕВ ПАЈА
+ШЕГУЉЕВ ПЕТАР
+ШЕГУЉЕВ РАДОСЛАВ
+ШЕГУЉЕВ РУЖИЦА
+ШЕГУЉЕВ СЛАВКО
+ШЕГУЉЕВ СНЕЖАНА
+ШЕГУЉЕВ ЗАГОРКА
+ШЕГУЉЕВ ЗОРИЦА
+ШЕХИЋ ЉУБИЦА
+ШЕХИЋ МИРСА
+ШЕХИЋ СЛАВИЦА
+ШЕХОВИЋ РАМИЗ
+ШЕЈМЕШИ СТЕВАН
+ШЕЈПЕШ ШАРЛОТА
+ШЕЈПЕШ ФЕДОР
+ШЕЈПЕШ ФЕДОР
+ШЕЈПЕШ ГАЛИНА
+ШЕЈПЕШ ИЛОНА
+ШЕК ЈУЛИЈАН
+ШЕКАРИЋ МИЛОСАВ
+ШЕКАРИЋ НАДА
+ШЕКЕРОВИЋ ДРАГАН
+ШЕКУЛАРАЦ АЛЕКСАНДРА
+ШЕКУЛАРАЦ БРАНИСЛАВ ДИПЛ ОЕЦ
+ШЕКУЛАРАЦ ДУШАН
+ШЕКУЛАРАЦ ПРЕДРАГ
+ШЕКУЛАРАЦ САВКА
+ШЕКУЛАРАЦ СЛОБОДАН
+ШЕЛ МАРГИТА
+ШЕЛБ ЛАСЛО
+ШЕЛЕСТ СЛОБОДАНКА
+ШЕЉЕМ ЈУЛИЈАНА
+ШЕЉЕМ КАРОЉ ДИПЛ ИНГ
+ШЕЉЕМ ЉИЉАНА
+ШЕЉЕМ СТЕВАН
+ШЕЉЕМ ЗОЛТАН
+ШЕЛКЕН ИЛОНКА
+ШЕЛМИЋ ВУКОМАН ДИПЛ ИНГ
+ШЕНЧЕВИЋ МИЛОМИР
+ШЕНБОРН АДАЛБЕРТ ДР ПРОФ
+ШЕНДУЛА ШАНДОР
+ШЕНДУЛА АНТАЛ
+ШЕНДУЛА ГАБОР
+ШЕНХАУЗЕР ТОМИСЛАВ
+ШЕНК АЛБИНА
+ШЕНК ИВАН ДИПЛ ИНГ
+ШЕНК ВОЈИН
+ШЕНТАЛЕР ЕМИЛ
+ШЕП ЛЕНКА
+ШЕПШЕИ КРИСТИНА
+ШЕПА СВЕТОЗАР
+ШЕПАРЕВИЋ ДАРКО
+ШЕПАРОВИЋ ДАРКО
+ШЕПАРОВИЋ ЉИЉАНА
+ШЕПАРОВИЋ МИРОСЛАВ
+ШЕПАРОВИЋ ЗОРА
+ШЕПЕЦ ВЛАДИМИР
+ШЕПЕЦАНОВИЋ МИЛОШ
+ШЕПЕЉ ЛЕНКА
+ШЕПЕРАЦ РАНКА
+ШЕПИЋ ЗАДА
+ШЕПИНСКИ ЂУРА
+ШЕПИНСКИ ЂУРА
+ШЕПИНСКИ ЈОАКИМ
+ШЕПИНСКИ СЛАВИЦА
+ШЕРБАН СЛОБОДАНКА
+ШЕРБЕЏИЈА ДРАГОЉУБ
+ШЕРБЕЏИЈА МИРКО
+ШЕРБЕЏИЈА МИРКО
+ШЕРБИЋ ЈЕЛКА
+ШЕРБИЋ ЗАГОРКА
+ШЕРБИЋ ЗАГОРКА
+ШЕРБУЛА БРАНКО
+ШЕРБУЛА МИЛАН
+ШЕРЕШ ШАНДОР
+ШЕРЕШ ЖУЖАНА
+ШЕРЕШ АНА
+ШЕРЕШ АНТУН
+ШЕРЕШ ЕНДРЕ
+ШЕРЕШ ЕСТЕР
+ШЕРЕШ ФРАНЦИШКА
+ШЕРЕШ ГИЗЕЛА
+ШЕРЕШ ИМРЕ
+ШЕРЕШ ЈАНОШ
+ШЕРЕШ КАРОЉ МР
+ШЕРЕШ ЛАСЛО
+ШЕРЕШ СТЕВАН
+ШЕРЕГИ ЗОЛТАН
+ШЕРЕМЕТКОВСКИ АЛЕКСА
+ШЕРЕМЕТКОВСКИ БОНА
+ШЕРЕР ЛЕНКА
+ШЕРФЕЗИ ЂУРА
+ШЕРИЋ МИЛКА
+ШЕРИФ НЕШАТ
+ШЕРИФИ РАБИЈА
+ШЕРИФИ САФЕТ
+ШЕРКОВ ЉИЉАНА
+ШЕРКОВ РАДОСЛАВ
+ШЕРОВИЋ ЈОВИЦА
+ШЕСЕК СТАНИСЛАВ
+ШЕСТАН БОРИС
+ШЕСТАНОВ БРАНКО
+ШЕСТАНОВ МИЛЕНА
+ШЕСТИЋ БОГДАН
+ШЕТАЛО ШАНДОР
+ШЕТАЛО ФРАЊА
+ШЕТАЛО ИМРЕ
+ШЕТАЛО ИМРЕ
+ШЕТАЛО КАРЛО
+ШЕТАЛО КАРОЉ
+ШЕТКА КАТА
+ШЕТКА ТОМИСЛАВ
+ШЕТРАЈЧИЋ ИЛДИКО
+ШЕВЧИЋ ЂОРЂЕ
+ШЕВАР ЕМИЛИЈА
+ШЕВАР ЈОСИП ВЕТЕРИНАР
+ШЕВАР ВЛАДИСЛАВ
+ШЕВАРЛИЋ КОСТА
+ШЕВЕРОВ РАДОСЛАВ
+ШЕВИЋ ЂОРЂЕ МР
+ШЕВИЋ ЂОРЂЕ
+ШЕВИЋ ЂОРЂЕ
+ШЕВИЋ АЛЕКСАНДАР
+ШЕВИЋ БОРИСЛАВ
+ШЕВИЋ ДРАГАН
+ШЕВИЋ ДРАГОЉУБ
+ШЕВИЋ ДРАГОЉУБ
+ШЕВИЋ ЈОВО
+ШЕВИЋ ЛАЗАР
+ШЕВИЋ МИЛАН
+ШЕВИЋ МИЛОШ
+ШЕВИЋ МИЛОРАД
+ШЕВИЋ МИРОСЛАВА
+ШЕВИЋ НАДА
+ШЕВИЋ НАДА
+ШЕВИЋ ПЕТАР
+ШЕВИЋ ПЕТАР
+ШЕВИЋ ПРЕДРАГ
+ШЕВИЋ РАДОВАН
+ШЕВИЋ САВКА
+ШЕВИЋ СЛОБОДАН
+ШЕВИЋ СРЂАН
+ШЕВИЋ ТРИВО
+ШЕВО ЧЕДОМИР
+ШЕВО АЛЕКСАНДАР
+ШЕВО БОШКО
+ШЕВО БОШКО
+ШЕВО БРАНКО
+ШЕВО ДУШАН
+ШЕВО ЈОВО
+ШЕВО МИЛАН
+ШЕВО МИЛАН
+ШЕВО МИЛАН
+ШЕВО МЛАДЕН
+ШЕВО СЛАВИЦА
+ШЕВО ВЛАДО
+ШИША ЈОСИП
+ШИША ЈОСИП
+ШИШАКОВИЋ МИЛЕНА
+ШИШАКОВИЋ МИРОСЛАВ
+ШИШАРИЦА ЉУПКО
+ШИШАРИЦА ЗДРАВКО
+ШИШЕВИЋ АНЂЕЛКА
+ШИШИЋ МИЛАН
+ШИШИЋ МЛАДЕН
+ШИШИЋ ПЕТКА
+ШИШИЋ СТЈЕПАН
+ШИШКА МАРГИТА
+ШИШКОВ АНТЕ
+ШИШКОВИЋ ДРАГОЉУБ
+ШИШКОВИЋ ДРАГОЉУБ
+ШИШЉАГИЋ ЧЕДО
+ШИШЉАГИЋ ДУШАН
+ШИШОВИЋ ДРАГОЉУБ
+ШИШОВИЋ МИЛАШИН
+ШИЂАНИН БРАНИСЛАВ
+ШИЂАНИН ДУШАН ДИПЛ ИНГ
+ШИЂАНИН МИЛИЦА
+ШИЂАНИН МИЛОЈЕ ДИПЛ ИНГ
+ШИЂАНСКИ БУДИМИР
+ШИЂАНСКИ МИРОСЛАВ
+ШИБАЛИЋ ИЛИЈА
+ШИБАЛИЋ ЉУБОМИР
+ШИБУЛ ЗОРАН
+ШИБУЛ ЗОРИЦА
+ШИБУЛОВ ЂУРА
+ШИЦ МАРИЈА
+ШИЦ ТЕРЕЗА
+ШИФЛИШ ЈАГОДА
+ШИФЛИШ ЛАЈОШ
+ШИФЛИШ СЛАВКО
+ШИГУД ЂОРЂЕ
+ШИХА ИШТВАН
+ШИЈАЧИЋ АЛЕКСАНДАР
+ШИЈАЧИЋ АЛЕКСАНДАР
+ШИЈАЧИЋ БОРИСЛАВ
+ШИЈАЧИЋ БОСИЉКА
+ШИЈАЧИЋ БРАНИСЛАВ
+ШИЈАЧИЋ ДАНИЦА
+ШИЈАЧИЋ ДАНИЦА
+ШИЈАЧИЋ ДАНИЛО
+ШИЈАЧИЋ ДАНИЛО
+ШИЈАЧИЋ ДУШАН
+ШИЈАЧИЋ ДУШИЦА
+ШИЈАЧИЋ ДУШИЦА
+ШИЈАЧИЋ ЈЕЛИЦА
+ШИЈАЧИЋ ЛЕСА
+ШИЈАЧИЋ МИЛИВОЈЕ
+ШИЈАЧИЋ МИЛОРАД
+ШИЈАЧИЋ МИРОСЛАВ
+ШИЈАЧИЋ РАДОСЛАВ
+ШИЈАЧИЋ СТАНКА
+ШИЈАЧИЋ СТЕВАН
+ШИЈАЧИЋ ЗОРИЦА
+ШИЈАЧКИ ЖИВА
+ШИЈАЧКИ ЖИВКО
+ШИЈАЧКИ ЂУРЂИНКА
+ШИЈАЧКИ БОЖИДАР
+ШИЈАЧКИ ДРАГАНА
+ШИЈАЧКИ ГОРДАНА
+ШИЈАЧКИ ИСА
+ШИЈАЧКИ ЈОВАН
+ШИЈАЧКИ КОСТА
+ШИЈАЧКИ ЛАЗАР
+ШИЈАЧКИ МИЛАН
+ШИЈАЧКИ МИЛЕНКО
+ШИЈАЧКИ МИЛОШ
+ШИЈАЧКИ МИРЈАНА
+ШИЈАЧКИ НЕСТОР ДР
+ШИЈАЧКИ ПЕТАР
+ШИЈАЧКИ ПРЕДРАГ
+ШИЈАЧКИ РАДОСЛАВА
+ШИЈАЧКИ СИМА
+ШИЈАЧКИ СЛАВКО
+ШИЈАЧКИ СЛОБОДАН
+ШИЈАЧКИ СТЕВАН
+ШИЈАЧКИ ТОМИСЛАВ
+ШИЈАЧКИ ВИТОМИР
+ШИЈАЧКИ ВУЈИЦА
+ШИЈАК ЂОРЂЕ
+ШИЈАК ЈЕЛИЦА
+ШИЈАК МИЛЕНКО
+ШИЈАК МИЛОШ
+ШИЈАК ПАВЛЕ
+ШИЈАК ПЕТАР
+ШИЈАК ТОМА
+ШИЈАКОВ СТАНИСЛАВА
+ШИЈАКОВ ВЕЉКО
+ШИЈАКОВИЋ ДРАГИЦА
+ШИЈАКОВИЋ МИЛОРАД
+ШИЈАКОВИЋ СТЕВА
+ШИЈАКОВИЋ ЗОРАН
+ШИЈАН АЛЕКСАНДРА
+ШИЈАН БОЈА
+ШИЈАН БРАНКО
+ШИЈАН БРАНКО
+ШИЈАН БРАНКО
+ШИЈАН ДАНЕ
+ШИЈАН ИЛИЈА
+ШИЈАН МИЛЕВА
+ШИЈАН МИЛОШ
+ШИЈАН МИРКО
+ШИЈАН НЕВЕНКА
+ШИЈАН НИКОЛА
+ШИЈАН РАДЕ
+ШИЈАН СЛОБОДАН
+ШИЈУК ДРАГАН
+ШИК ТИБОР
+ШИКЕТ ИШТВАН
+ШИКЕТ ИШТВАН
+ШИКЕТ ИМРЕ
+ШИКЕТ ЈОЖЕФ
+ШИКЕТ ЛАСЛО
+ШИКЕТ ЛАСЛО
+ШИКЕТ ЛАСЛО
+ШИКЕТ МАГДА
+ШИКЕТ СТЕВАН
+ШИКИЋ БОГДАН
+ШИКИЋ РАДОСЛАВ
+ШИКМАН ЗВОНКО
+ШИКОПАРИЈА ЂОРЂЕ
+ШИКОПАРИЈА БОРИСЛАВ
+ШИКОПАРИЈА ДУШАН
+ШИКОПАРИЈА ЈЕЛЕНА
+ШИКОПАРИЈА МИЛАН
+ШИКОПАРИЈА НЕВЕНА
+ШИКОПАРИЈА ТИХОМИР
+ШИКОПАРИЈА ТИХОМИР
+ШИКОПАРИЈА ВЛАДИМИР
+ШИЛЕ ШАНДОР
+ШИЛЕ ЛАДИСЛАВ
+ШИЛЕ ЗОЛТАН
+ШИЛЕР МИЛОРАД
+ШИЛЕР МИЛОРАД
+ШИЛИ ИШТВАН
+ШИЛИ КАРЛО
+ШИЛИ МИХАЈЛО
+ШИЛИ ВАЛЕРИЈА
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ АНА
+ШИЛИЋ БОГДАН
+ШИЛИЋ ДАНИЦА
+ШИЛИЋ ДРАГОМИР
+ШИЛИЋ ДУШИЦА
+ШИЛИЋ ЈОВАН
+ШИЛИЋ ЉУБИЦА
+ШИЛИЋ МИЛОРАД ДР
+ШИЛИЋ МИЛОСАВА
+ШИЛИЋ МИРЈАНА
+ШИЛИЋ МИРКО
+ШИЛИЋ МИРКО
+ШИЛИЋ НАДА
+ШИЛИЋ НИКОЛА
+ШИЛИЋ ОЛГИЦА
+ШИЛИЋ ОЛГИЦА
+ШИЛИЋ ПЕТАР
+ШИЛИЋ ПЕТАР
+ШИЛИЋ РАЦКО
+ШИЛИЋ САВА
+ШИЛИЋ СПАСЕНКА
+ШИЛИЋ СТОЈАН
+ШИЛИЋ ТОША
+ШИЛИЋ ТОДОР
+ШИЛИЋ ВАСА
+ШИЛИЋ ВЕРА
+ШИЛИЋ ВИТОМИР
+ШИЉЕГ ЈОЗО
+ШИЉЕГОВИЋ БОШКО
+ШИЉЕГОВИЋ БОШКО
+ШИЉЕГОВИЋ ДРАГОЉУБ
+ШИЉЕГОВИЋ ДУШАН
+ШИЉЕГОВИЋ ЈОВАНКА
+ШИЉЕГОВИЋ МИЛАН
+ШИЉЕГОВИЋ НАДА
+ШИЉИЋ ЋАМИЛ
+ШИЉКУТ МИЛАН
+ШИЉКУТ МИЛАН
+ШИЉКУТ МИРКО
+ШИМЧИЋ ОЛГИЦА
+ШИМШИЋ ДУШАН
+ШИМШИЋ ИЛИЈА
+ШИМШИЋ САВО
+ШИМА ЈОАКИМ
+ШИМА МАРГИТА
+ШИМА ВЕРОНИКА
+ШИМАК ЈАН
+ШИМАЛА ВИКТОР
+ШИМАН АЛЕКСЕЈ
+ШИМАНДИ ГАБРИЈЕЛА
+ШИМАНДИ СТЕВАН
+ШИМЕК ВЛАТКО
+ШИМИЧИЋ ПЕТАР
+ШИМИЧИЋ СВЕТИСЛАВ
+ШИМИЋ АНТО
+ШИМИЋ БОЖАНА
+ШИМИЋ ФРАЊО
+ШИМИЋ ГИЗЕЛА
+ШИМИЋ ХРВОЈЕ
+ШИМИЋ ЈУЛА ДИПЛ ИНГ
+ШИМИЋ МИЛАН
+ШИМИЋ МИЛАН
+ШИМИЋ МИРОСЛАВ
+ШИМИЋ МЛАДЕН
+ШИМИЋ НИНОСЛАВ
+ШИМИЋ СЛАВКО
+ШИМИЋ СЛАВКО
+ШИМИЋ СТЕВАН
+ШИМИГ ТИБОР
+ШИМОКОВИЋ КАТАРИНА
+ШИМОН ШАНДОР
+ШИМОН ЂЕРЂ
+ШИМОН АРПАД
+ШИМОН ЕРЖЕБЕТ
+ШИМОН МАРИЦА
+ШИМОН МИХАЉ
+ШИМОН ВИЛМОШ ДР
+ШИМОНИК ВЛАДА
+ШИМОЊИ ШАНДОР
+ШИМОЊИ БАРБАРА
+ШИМОЊИ ЈАНОШ
+ШИМОЊИ СОФИЈА
+ШИМОЊИ ЗОЛТАН
+ШИМОЊИ ЗВОНКО
+ШИМОЊИК МАТИЈА
+ШИМОВИЋ ЈОЖЕФ
+ШИМОВИЋ МИРО
+ШИМПРАГА ДУШАН
+ШИМПРАГА ЈАДРАНКА
+ШИМУДВАРАЦ ПАВАО
+ШИМУЛИЈА ДРАЖЕН
+ШИМУЛИЈА ЈОВО
+ШИМУНЂА ЉУБОМИР
+ШИМУНЕЦ МАРИЈА
+ШИМУНИЋ АНКА
+ШИМУНИЋ ИВАН
+ШИМУНИЋ КАРЛО
+ШИМУНИЋ СТЕВАН
+ШИМУНОВАЧКИ КАТИЦА
+ШИМУНОВАЧКИ НИКОЛА
+ШИМУНОВАЧКИ НИКОЛА
+ШИМУНОВАЧКИ СЛАВКО
+ШИМУНОВИЋ ГОРДАНА
+ШИМУНОВИЋ ГОРДАНА
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ НЕНАД
+ШИМУНОВИЋ НИКОЛА ДИПЛ ИНГ
+ШИМУНОВИЋ СТАНИСЛАВ
+ШИМУНОВИЋ СТАНКО
+ШИМУНОВИЋ СВЕТЛАНА
+ШИМУНОВИЋ ТОМА
+ШИНАГЛ КАРОЉ
+ШИНАГЛ КАРОЉ
+ШИНАГЛ ОТО
+ШИНАГЛ СТЕВАН
+ШИНИК ДРАГАН
+ШИНИКОВ ЂОРЂЕ
+ШИНИКОВ МИЛАН
+ШИНКА МАРГИТА
+ШИНКА ЗЛАТКО
+ШИНКО ГИЗЕЛА
+ШИНКО ИВАНКА
+ШИНКО ЈАНОШ
+ШИНКО СТЕВАН
+ШИНКО ВЛАДИСЛАВ
+ШИНКОВИЋ МАРИЈА
+ШИПЧИЋ ЉУБОМИР
+ШИПЧИЋ МАРИЈА
+ШИПЧИЋ МИДО
+ШИПЧИЋ МИЈОДРАГ
+ШИПЧИЋ НИНОСЛАВ
+ШИПЕК ЈОСИП НОВИНАР
+ШИПЕТИЋ АНЂА
+ШИПЕТИЋ МОМЧИЛО
+ШИПИЋ АЛЕКСАНДРА
+ШИПИН ЈОВАНКА
+ШИПКА БОЖА
+ШИПКА БОЖО
+ШИПКА БРАНКО
+ШИПКА ДРАГАН
+ШИПКА ДРАГО
+ШИПКА ГРУЈО
+ШИПКА МАРКО
+ШИПКА МИРКО
+ШИПКА МИРОСЛАВ
+ШИПКА МИРО
+ШИПКА НЕЂО
+ШИПКА ЗОРАН
+ШИПКА ЗОРАН
+ШИПОШ ШАНДОР
+ШИПОШ ЂОРЂЕ
+ШИПОШ ЂОРЂЕ
+ШИПОШ ЂУРА
+ШИПОШ ЂУРО
+ШИПОШ ЕДИТ
+ШИПОШ ЕРЖЕБЕТ
+ШИПОШ ИГЊАЦ
+ШИПОШ ЈАНОШ
+ШИПОШ ЈОВАНКА
+ШИПОШ ЈОВАН
+ШИПОШ ЈУЛИЈАНА
+ШИПОШ МИРЈАНА
+ШИПОШ РОЗАЛИЈА
+ШИПОШ ВЛАДИМИР
+ШИПОШЕВИЋ РАДОЈКА
+ШИПОСКИ КРСТЕ
+ШИПОВАЦ ЦВИЈЕТА
+ШИПОВАЦ ДАНИЛО
+ШИПОВАЦ ЈАЊА
+ШИПОВАЦ НЕДЕЉКО
+ШИПОВАЦ РАДИЦА
+ШИПОВАЦ ВАСИЛИЈА
+ШИПРАГА УРОШ
+ШИПУШИЋ ХЕЛЕНА
+ШИРАДОВИЋ БРАНИСЛАВ
+ШИРИЈОВСКИ ГОЦЕ
+ШИРКА ЈАН
+ШИРКА САМУЕЛ
+ШИРОЧКА АНТУН
+ШИРОКИ АДАМ
+ШИРОЛА ИВАН
+ШИРОНИЋ ЉУБО
+ШИСТОВ ДРАГО
+ШИТЕ КАРОЉ
+ШИТЕ МАРИЈА
+ШИТЕ ТИБОР
+ШИТЕР КАРЛО
+ШИТЕР РУЖИЦА
+ШИТЕР СЛОБОДАН
+ШИВЕГИ ИМРЕ
+ШКАЉАЦ СТАНКО
+ШКАЉАЦ ЗОРАН
+ШКАРИЧИЋ МИРОСЛАВ
+ШКАРИЦА ДОЛОРЕС
+ШКАРИЦА СТЈЕПАН
+ШКАРИН ТОДОР
+ШКАТАРИЋ ЗОРАН
+ШКАВИЋ ЦВИЈО
+ШКАВИЋ ЈОВО
+ШКАВИЋ МИЛАН
+ШКАВИЋ НИКОЛА
+ШКЕКИЋ МИОМИР
+ШКИЉАЈИЦА ВЛАДИМИР
+ШКИЉЕВИЋ МИЛИДРАГ
+ШКОБАЉ НАДА
+ШКОБАЉ ВОЈИСЛАВ
+ШКОДАК ПАВЛЕ
+ШКОЛОПИЈА ЛАЗАР
+ШКОНДРИЋ ДРАГОМИР
+ШКОРИЋ ЧЕДОМИР
+ШКОРИЋ ШТРАЦИМИР
+ШКОРИЋ ЂУЈА
+ШКОРИЋ ЂУРО
+ШКОРИЋ АНКА
+ШКОРИЋ БОСИЉКА
+ШКОРИЋ БРАНИСЛАВ
+ШКОРИЋ БРАНКО
+ШКОРИЋ ДРАГАН ДР
+ШКОРИЋ ДРАГАН
+ШКОРИЋ ДРАГАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШКО
+ШКОРИЋ ГРУМИКОВ
+ШКОРИЋ ЈОВАН
+ШКОРИЋ ЈОВАН
+ШКОРИЋ КСЕНИЈА
+ШКОРИЋ ЛАЗАР
+ШКОРИЋ ЉИЉАНА
+ШКОРИЋ МАРА
+ШКОРИЋ МАРИЈА
+ШКОРИЋ МАРИЈА
+ШКОРИЋ МИЋО
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛЕНКО
+ШКОРИЋ МИЛИВОЈ
+ШКОРИЋ МИЛКА
+ШКОРИЋ МИЛОШ
+ШКОРИЋ МИРЈАНА
+ШКОРИЋ МИРКО
+ШКОРИЋ МИРКО
+ШКОРИЋ МИРКО
+ШКОРИЋ НИКОЛА
+ШКОРИЋ НИКОЛА
+ШКОРИЋ ПАВЛЕ
+ШКОРИЋ ПАВЛЕ
+ШКОРИЋ ПЕРО
+ШКОРИЋ СЛАВКО
+ШКОРИЋ СЛОБОДАН
+ШКОРИЋ СМИЉА
+ШКОРИЋ СМИЉА
+ШКОРИЋ СРЕЋКО
+ШКОРИЋ СТАНА
+ШКОРИЋ ВЛАДИМИР
+ШКОРИЋ ЗОРА
+ШКОРО ШИМЕ
+ШКОРО МИРЈАНА
+ШКОРО ВАСИЛИЈА
+ШКРАВАН АНДРИЈА
+ШКРБИЋ ЖЕЉКО
+ШКРБИЋ ЂУРО
+ШКРБИЋ АНИЦА
+ШКРБИЋ БЛАЖО
+ШКРБИЋ БОЖО
+ШКРБИЋ БОЈАНА
+ШКРБИЋ БРАНКО
+ШКРБИЋ ДРАГИЦА
+ШКРБИЋ ДУШАН
+ШКРБИЋ ЈОВАН
+ШКРБИЋ ЈОВАН
+ШКРБИЋ ЉУБИЦА
+ШКРБИЋ МАРА
+ШКРБИЋ МАРИЦА
+ШКРБИЋ МИЛЕ
+ШКРБИЋ МИЛОРАД
+ШКРБИЋ МИЛОРАД
+ШКРБИЋ НЕБОЈША
+ШКРБИЋ ОСТОЈА
+ШКРБИЋ ПЕТАР
+ШКРБИЋ РАДОСЛАВ
+ШКРБИЋ СВЕТОЗАР
+ШКРБИЋ ЗОРКА
+ШКРБИНА СТЈЕПАН
+ШКРГЕТ ЈОСИП
+ШКРИЈЕЛ ДРАГАН
+ШКРИЈЕЛ МИЛАН
+ШКРИЈЕЉ АЈНИЈА
+ШКРИЈЕЉ САМИР
+ШКРИЈЕЉ ВЕХБО
+ШКРИЊАР КАРОЉ
+ШКРИЊАР МАРИО
+ШКРИЊАР ЗВОНИМИР
+ШКРИВАН ЂУРА
+ШКРИВАН АНТУН
+ШКРИВАН ФРАЊА
+ШКРИВАН КАРЛО
+ШКРИВАН ЛАДИСЛАВ
+ШКРИВАН ПЕТАР
+ШКРИВАН СТЕВАН
+ШКРИВАН СТЕВАН
+ШКРИВАЊ ПИШТА
+ШКУЛЕТИЋ ОЛГА
+ШКУЛЕТИЋ ЗОРАН
+ШКУНЦА ИВАН
+ШКУНЦА ЈЕЛИЦА
+ШКУНДРИЋ ДУШАН
+ШКУНДРИЋ МИЛИЦА
+ШКУНДРИЋ ПЕТАР
+ШКУНДРИЋ РОЗАЛИЈА
+ШКВАРЕК ВЛАДА
+ШЛАХТЕР ВЕНДЕЛ
+ШЛАЈЕР РУДОЛФ
+ШЛАВИК ИЛОНА
+ШЛЕХТА ЗДЕНКО
+ШЛЕМЕНДЕР ЂОРЂЕ
+ШЛЕМЕНДЕР АНГЕЛА
+ШЛЕМЕНДЕР ИРЕНА
+ШЉАПИЋ ГОРАН
+ШЉАПИЋ МИРЈАНА
+ШЉАПИЋ ОБРЕН
+ШЉАПИЋ РУЖИЦА
+ШЉАПИЋ СТЕВАН
+ШЉАПИЋ ТАТЈАНА
+ШЉАПИЋ ТОМИСЛАВ
+ШЉАПИЋ ВЕЛЕМИР
+ШЉИВАНЧАНИН ЈОВАН
+ШЉИВАНЧАНИН ЈОВАН
+ШЉИВАНЧАНИН МАРИЈА
+ШЉИВАНЧАНИН МИЛУТИН
+ШЉИВИЋ ЂОРЂЕ
+ШЉИВИЋ БОРКА
+ШЉИВИЋ ЈЕЛЕНА
+ШЉИВИЋ ЉИЉАНА
+ШЉИВИЋ МИРЈАНА
+ШЉИВИЋ РАДОЈИЦА
+ШЉИВИЋ СПАСОЈЕ
+ШЉИВИЋ ВЛАДИСЛАВ
+ШЉИВКОВИЋ ЂОРЂЕ
+ШЉУКА ДРАГИША
+ШЉУКА МИЈОДРАГ
+ШЉУКА МИЛАН
+ШЉУКА МИЛОШ
+ШЉУКИЋ ЖИВАН ДР
+ШЉУКИЋ МИЛИВОЈ
+ШЉУКИЋ РОСАНДА
+ШМАЊА МИРКО
+ШМАЊА СЛАВКО
+ШМИДЕРКАЛ ФРАЊА
+ШМИГЕЉСКИ НИКОЛА
+ШМИГИЋ БОРИСЛАВ
+ШМИГИЋ МИЛОРАД
+ШМИГИЋ СВЕТОЗАР
+ШМИТ ФЕРДИНАНД
+ШМИТ ГИЗЕЛА
+ШМИТ ЈОСИП
+ШМИТ ЈОВАН
+ШМИТ-КОТА КАТИЦА
+ШМИТ МАРИЈА
+ШМИТ МИРЈАНА
+ШМИТ-ПРОКИН ЂУРЂИНА
+ШМИТ РЕЖЕ
+ШМИТ СТАНА
+ШМИТ СТАНОЈКА
+ШМИТ СТЕВАН
+ШМИТ СТЕВАН
+ШМИТ ВИОЛЕТА
+ШМИТ ЗЛАТКО
+ШМИТРАН ЂОРЂЕ
+ШМУК ИВАН
+ШНАЈДЕР ШАНДОР
+ШНАЈДЕР АНИЦА
+ШНАЈДЕР ИЛИНКА
+ШНАЈДЕР ЈАНОШ
+ШНАЈДЕР ЈАРОСЛАВ
+ШНАЈДЕР СТЕВАН
+ШНАЈДЕР ВЕРА
+ШНАЈДЕРОВ ЈОСИП
+ШНАЈДЕРОВ ВЕСНА
+ШНАУТИЛ ДРАГУТИН
+ШНЕЛ ПЕТЕР
+ШЊАРИЋ ИВАН
+ШОШ АНТАЛ
+ШОШ АНТАЛ
+ШОШ БАЛИНТ
+ШОШ ДЕЗИДЕР
+ШОШ ГИЗЕЛА
+ШОШ ИЛОНА
+ШОШ ЈЕЛИЦА
+ШОШ ЛАЈОШ
+ШОШ МАРИЈА
+ШОШ ТИБОР
+ШОШИЋ МИРКО
+ШОШИЋ НАТАША
+ШОШИЋ ОЛГА
+ШОШИЋ РАДОСЛАВ
+ШОШИЋ ВУК
+ШОШКИЋ ДРАГОМИР
+ШОШКИЋ МИРА
+ШОЋ БОЈАНА
+ШОЋ ДУШАН
+ШОЋ ТОМИСЛАВ
+ШОБАЈИЋ ДРАГОСЛАВ
+ШОБАКИ МАРИЈА
+ШОБИЋ МИРА
+ШОБИЋ РАДЕ
+ШОБИЋ ВЕРА
+ШОБИЋ ЗОРАН
+ШОБИЋ ЗОРАН
+ШОБОТ ЂУРА
+ШОБОТ БОШКО
+ШОБОТ БРАНКО
+ШОБОТ ДРАГАН
+ШОБОТ ЈОВАН
+ШОБОТ ЉУБОМИР
+ШОБОТ МИЛАН
+ШОБОТ МИЛИЦА
+ШОБОТ ПЕТКО
+ШОБОТ СЕКУЛА
+ШОБОТ СЛАВИЦА
+ШОДИЋ ДОБРИЛА
+ШОДИЋ ДРАГИЊА
+ШОДИЋ ГИЗЕЛА
+ШОДИЋ МИЛАН
+ШОДИЋ ТОДОР
+ШОДОРОВИЋ РОСА
+ШОФХАУЗЕР МИХАЈЛО
+ШОФХАУЗЕР РОЗАЛИЈА
+ШОФРАН МАРИЈА
+ШОФРАНАЦ МЕЛАНИЈА
+ШОГОРОВ СТЕВАН
+ШОЈИЋ ЖИВКО
+ШОЈИЋ БРАНКО
+ШОЈИЋ ДРАГИЦА
+ШОЈИЋ НЕДЕЉКА
+ШОЈЛЕВСКА САЊА
+ШОКИЋ ЂОРЂЕ
+ШОКИЋ ЈУДИТА
+ШОКИЋ МИЛАН
+ШОКИЋ ПЕТАР
+ШОКИЋ РАДОВАН
+ШОКИЋ СМИЉА
+ШОКИЦА ЖИВКО
+ШОКИЦА БРАНИСЛАВ
+ШОКИЦА ДИМИТРИЈЕ
+ШОКИЦА ДРАГИША
+ШОКИЦА ЈОВАН
+ШОКИЦА ЈУДИТА
+ШОКИЦА ЉУБИЦА
+ШОКИЦА МИЛОШ
+ШОКИЦА ЗОРА
+ШОКЛОВАЧКИ ЖИВКО
+ШОКЛОВАЧКИ ДРАГОЉУБ
+ШОКЛОВАЧКИ НАДА
+ШОКЛОВАЧКИ РАТОМИР
+ШОЛ БЕЛА
+ШОЛАЈА ЂОРЂЕ
+ШОЛАЈА ДИМИТРИЈЕ
+ШОЛАЈА ГОЈКО
+ШОЛАЈА МИЛАН
+ШОЛАЈА МИРОСЛАВ
+ШОЛАЈА НАДА
+ШОЛАЈА НАДА
+ШОЛАЈА РАДОСЛАВ
+ШОЛАЈА СЛАВКО
+ШОЛАЈА СЛАВКО
+ШОЛАЈА СЛОБОДАН
+ШОЛАЈА ВИШЊА
+ШОЛАК ЈОКА
+ШОЛАК МАРИНКО
+ШОЛАК МИЛЕ
+ШОЛАК РАДЕ
+ШОЛЕВИЋ МИЛИВОЈЕ
+ШОЛТЕС ШАНДОР
+ШОЛТЕС ИБОЉА
+ШОЛТЕС ЈОЖЕФ
+ШОМКЕРЕКИ ИЛОНКА
+ШОМКЕРЕКИ ЈОСИП
+ШОМКЕРЕКИ ЈУЛИЈАНА
+ШОМКЕРЕКИ ЛАДИСЛАВ
+ШОМКЕРЕКИ СТЕВАН
+ШОМКЕРЕКИ СТЕВАН
+ШОМОЂИ ЖОФИЈА
+ШОМОЂИ ЂОРЂЕ
+ШОМОЂИ ЕВА
+ШОМОЂИ ФРАЊА
+ШОМОЂИ ИШТВАН
+ШОМОЂИ ЈЕЛЕНА
+ШОМОЂИ ЈОВАН
+ШОМОЂИ ЛАСЛО
+ШОМОЂИ МИХАЈЛО
+ШОМОЂИ ПАЛ
+ШОМОЂИ ПАЛ
+ШОМОЂИ ПАЛ
+ШОМОЂИ РОЗА
+ШОМОЂИ ЗОЛТАН
+ШОМОЂИ ЗОРА
+ШОП МАГДАЛЕНА
+ШОП МИЛАН
+ШОПАЛО ЂУРЂИНА
+ШОПАЛО ЂУРЂИНА
+ШОПАЛО МИОДРАГ ДИПЛ ОЕЦ
+ШОПАЛО МИОДРАГ
+ШОРЂАН РОМАН
+ШОРАК МИРЈАНА
+ШОРАЛОВ МИЛОШ
+ШОРАЛОВ МИРОСЛАВ
+ШОРМАЗ ДУШАН
+ШОРМАЗ МИЛАН
+ШОРМАЗ НИКОЛА
+ШОРМАЗ ВЛАДИМИР
+ШОРОЊА САВА
+ШОРОЊА ВЕРА
+ШОСБЕРГЕР БОРИШКА
+ШОСБЕРГЕР ЈОСИП ДИПЛ ОЕЦ
+ШОСБЕРГЕР ПАВЛЕ
+ШОСТАКОВ РАСТИСЛАВ ДИПЛ ИНГ
+ШОТИ-ЧАЛЕНИЋ МАРИЈА
+ШОТИ ФЕЂА
+ШОТИ ИВАНА
+ШОТИ ЈОСИП
+ШОТИ ЈОСИП
+ШОТИ МАРИЈА
+ШОТИ МАРИЈА
+ШОТРА МОМЧИЛО
+ШОУЦ МИЛАН
+ШОУЦ МИРОСЛАВ
+ШОУЦ ЗЛАТА
+ШОВШ ЈАНКО
+ШОВШ ЈОАКИМ
+ШОВАЊ ЈОАКИМ
+ШОВЕЊ АЛЕКСАНДАР
+ШОВЕЊ КАРЛО
+ШОВЕЊ ВЕРА
+ШОВЉАКОВ ЈОВАН
+ШОВЉАКОВ МИЛОШ
+ШОВЉАКОВ МИЛОШ
+ШОВЉАНСКИ ЂОРЂЕ ДИПЛ ИНГ
+ШОВЉАНСКИ ЂОРЂЕ
+ШОВЉАНСКИ АНКИЦА
+ШОВЉАНСКИ БОСИЉКА
+ШОВЉАНСКИ БРАНКО
+ШОВЉАНСКИ ДАНИЦА
+ШОВЉАНСКИ ДАНИЛО
+ШОВЉАНСКИ ДАНКА
+ШОВЉАНСКИ ДИМИТРИЈЕ
+ШОВЉАНСКИ ДРАГИША
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГОМИР
+ШОВЉАНСКИ ДРАГОМИР
+ШОВЉАНСКИ ДРАГОСЛАВ
+ШОВЉАНСКИ ДРЕНКА
+ШОВЉАНСКИ ЕМИЛ
+ШОВЉАНСКИ ЈУЛКА
+ШОВЉАНСКИ ЛАЗАР
+ШОВЉАНСКИ ЉУБИЦА
+ШОВЉАНСКИ ЉУБОМИР
+ШОВЉАНСКИ МАРГИТА
+ШОВЉАНСКИ МИЛАН
+ШОВЉАНСКИ МИЛОШ
+ШОВЉАНСКИ МИЛОРАД
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРОСЛАВ ДР
+ШОВЉАНСКИ НАДА
+ШОВЉАНСКИ ПАВЛЕ
+ШОВЉАНСКИ РАДИВОЈ
+ШОВЉАНСКИ РАДОСЛАВ
+ШОВЉАНСКИ САВА
+ШОВЉАНСКИ СТОЈАН
+ШПАДИЈЕР ТАТИЈАНА
+ШПАГОВИЋ ДРАГОСЛАВ
+ШПАК ВЛАДИМИР
+ШПАНЧИЋ РАДМИЛА
+ШПАНГ ЛАСЛО
+ШПАНГ ЗОЛТАН
+ШПАНИЋ БОШКО
+ШПАНИЋ ФРАЊА
+ШПАНИЋ ЛАДИСЛАВ
+ШПАНИЋ НАДА
+ШПАНИЋ ОТО
+ШПАЊЕВИЋ СУЗАНА
+ШПАЊЕВИЋ ВУКОТА
+ШПАНОВИЋ ЂОРЂЕ
+ШПАНОВИЋ АЛЕКСА
+ШПАНОВИЋ МИЛОШ
+ШПАНОВИЋ НИКОЛА
+ШПАРАВАЛО МАРИЈА
+ШПАРАВАЛО НАТАША
+ШПАРАВАЛО САВА
+ШПАРАВАЛО ЗДРАВКО
+ШПАРОВИЋ ИЛИЈА
+ШПЕГАР ЛАЗАР
+ШПЕХАР МАРИЈА
+ШПЕС ЕТЕЛ
+ШПЕС ВИЛИМ
+ШПЕС ВИЛИМ
+ШПИЦА МИОДРАГ
+ШПИКА МИЛАН
+ШПИНДЛЕР МАРИЈА
+ШПИНДЛЕР-ТРБОЈЕВИЋ МИРЈАНА
+ШПИРИЋ БОРИВОЈЕ
+ШПИРИЋ ГОРДАНА
+ШПИРИЋ ГОСПАВА
+ШПИРИЋ ИЛЕ
+ШПИРИЋ ЈОВО
+ШПИРИЋ ЛУКА
+ШПИРИЋ ЛУКА
+ШПИРИЋ МИЛЕ
+ШПИРИЋ НЕЂО
+ШПИРИЋ ОБРАД
+ШПИРИЋ СТОЈАН
+ШПИРИЋ ТОДЕ
+ШПИРИЋ УРОШ
+ШПИРИЋ ЗОРАН
+ШПИРКА МАТИЛД
+ШПИРТА АЛЕКСАНДАР
+ШПИРТА АЛЕКСАНДАР
+ШПИС ДАНИЛО
+ШПИС ДАНИЛО
+ШПИС ЛАЈОШ
+ШПИС МИРЈАНА
+ШПИС НАНДОР
+ШПОЊА КОВИЉКО
+ШПРОХ ДРЕНКА
+ШПРОХ ЈАНКО
+ШПРОХ МАГДА
+ШПРОХ СЛАВКО
+ШПРОХ СТАНКО
+ШПРОХ СТЕВАН
+ШРАХОЛ ХИЛДА
+ШРАХОЛ КАРЛО
+ШРАХОЛ ЉУДЕВИТ
+ШРАЈ ВЛАДИМИР
+ШРАК ЈОВИЦА
+ШРАК ЛАДИСЛАВ
+ШРАК ЛАСЛО
+ШРАК ОТО
+ШРАК ОТО
+ШРАМ ХУГО
+ШРАНЦ РИХАРД
+ШРАНЦ РИХАРД
+ШРАНКА АНА
+ШРАНКА ДЕСАНКА
+ШРЕДЕР ЈАНОШ
+ШРЕДЕР ЈАНОШ
+ШРЕК АНДРИЈА ДИПЛ ИНГ
+ШРЕК СТЕВАН ДИПЛ ИНГ
+ШТАБИ ШТЕФИЦА
+ШТАЈН ЛИВИЈА
+ШТАЈНЕР КРЕШИМИР
+ШТАЈНЕР МИРЈАНА
+ШТАЈНЕР МИРОСЛАВ
+ШТАЈНЕР ЗВОНИМИР
+ШТАЈНФЕЛД МИХАЈЛО
+ШТАЈНИЦ МИРОСЛАВ
+ШТАЈНИЦ ТИБОР
+ШТАНДИ КАТИЦА
+ШТАНДИ ЗОЛТАН
+ШТАНФЕЉ АЛОЈЗ
+ШТАНФЕЉ МИРОСЛАВ
+ШТАНГЛ ЂОРЂЕ
+ШТАЊО-ТОТ ГИЗЕЛА
+ШТАРК ЕГОН ДИПЛ ИНГ
+ШТАРК МИРКО
+ШТАСНИ ЈОСИП
+ШТАСНИ КАТИЦА
+ШТАТКИЋ МИРОСЛАВ
+ШТАУХЕР ЈОСИП
+ШТЕБЛ ЈЕЛЕНА
+ШТЕФАН ЂОРЂЕ
+ШТЕФАН ЕУЂЕН
+ШТЕФАН ЈУЛИЈАНА
+ШТЕФАН МАТИЈА
+ШТЕФАН ОСКАР
+ШТЕФАН РУДОЛФ
+ШТЕФАН ТРАЈАН
+ШТЕФАНАЦ СТЕВАН
+ШТЕФАНИЦКИ МИШО
+ШТЕФАНИДЕС КАРЛО ДР
+ШТЕФАНИДЕС КАРЛО
+ШТЕФАНКО ВИКТОРИЈА
+ШТЕФАНОВИЋ ДРАГАН
+ШТЕФАНОВИЋ ДРАГУТИН
+ШТЕФАНОВИЋ ТОМИСЛАВ
+ШТЕФКО ЂОРЂЕ
+ШТЕФКО ЂОРЂЕ
+ШТЕФОВИЋ ВЛАДИМИР
+ШТЕФУЛИК ЈОЖЕФ
+ШТЕГЕР РОЖИ
+ШТЕГЕР ВАЛЕНТИНА
+ШТЕХЕР РАДМИЛА
+ШТЕЛЦЕР ЈОСИП
+ШТЕЛИ АНТУН
+ШТЕРЛЕ ЈОСИП
+ШТЕРЛЕ СТЕВАН
+ШТЕРЛЕМАН КРИСТИЈАН
+ШТЕРЛЕМАН ПЕРА
+ШТЕТИЋ КРИСТИНА
+ШТЕТИЋ ТИХОМИР
+ШТЕТИЋ ВЕСНА
+ШТЕТИЋ ВИДА
+ШТЕТИН ХЕЛЕНА
+ШТЕТИН МИЛАН
+ШТЕТИН МИЛЕ
+ШТЕТИН СВЕТИСЛАВ
+ШТЕВАНЧЕВ ЉУБОМИР
+ШТИЦА ВИТОМИР
+ШТИГЛЕР ИВАН
+ШТИГЛЕР МИЛАН
+ШТИГЛИЋ ДРАГАН
+ШТИГЛИЋ СВЕТОЗАР
+ШТИКАВАЦ КОСОВКА
+ШТИКОВАЦ СПАСОЈЕ
+ШТИМАЦ ОТО
+ШТИМАЦ РУДОЛФ
+ШТОКОВАЦ ЈОВАН
+ШТОКОВАЦ ТОМИСЛАВ
+ШТОЛБА ЗВОНИМИР
+ШТОС КАТИЦА
+ШТРАЈХ ИШТВАН
+ШТРАЈХ ЈОСИП
+ШТРАЈХ ОТТО
+ШТРАНГАР НАДА
+ШТРАНГАРОВ БОРИВОЈ
+ШТРАНГАРОВ ДИМИТРИЈЕ
+ШТРАНГАРОВ ЈЕЛЕНА
+ШТРАНГАРОВ ЈЕЛЕНА
+ШТРАНГАРОВ МИЛИЦА
+ШТРАНГАРОВ СЛОБОДАН
+ШТРАПАЈЕВИЋ ЈУЛИЈАНА
+ШТРАСЕР МИХАЈЛО ДР ЛЕКАР
+ШТРАСЕР НАДА
+ШТРАУБ ЕРЖЕБЕТ
+ШТРАУБ ИШТВАН
+ШТРАУБ СТЕВАН
+ШТРБА ДАНИЛО
+ШТРБА МИЛАН
+ШТРБАЧКИ БОРИСЛАВ
+ШТРБАЦ ЖЕЉКО
+ШТРБАЦ ЂОРЂЕ
+ШТРБАЦ ЂУРО
+ШТРБАЦ АНЂЕЛКА
+ШТРБАЦ БОШКО
+ШТРБАЦ БОРИСЛАВ
+ШТРБАЦ БРАНКА
+ШТРБАЦ ДАРИНКА
+ШТРБАЦ ДЕСАНКА
+ШТРБАЦ ДРАГАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ЈОВАН
+ШТРБАЦ ЉУБИЦА
+ШТРБАЦ ЉУБОМИР
+ШТРБАЦ МАРИЈА
+ШТРБАЦ МИЋО
+ШТРБАЦ МИЋО
+ШТРБАЦ МИЛАНКО
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛЕНА
+ШТРБАЦ МИЛИЦА
+ШТРБАЦ МИЛИВОЈ
+ШТРБАЦ МИЛОШ
+ШТРБАЦ МИРЈАНА
+ШТРБАЦ МИРКО
+ШТРБАЦ МОМЧИЛО
+ШТРБАЦ НЕМАЊА
+ШТРБАЦ НИКОЛА
+ШТРБАЦ РАДОЈКА
+ШТРБАЦ РАДОВАН
+ШТРБАЦ САВКА
+ШТРБАЦ СЛАВИЦА
+ШТРБАЦ СЛАВКО
+ШТРБАЦ СТАНА
+ШТРБАЦ СТЕВАН
+ШТРБАЦ ТОМИСЛАВ
+ШТРБАЦ УРОШ
+ШТРБАЦ ВЛАДО
+ШТРБАЦ ВУКИЦА
+ШТРБАЦ ЗОРИЦА
+ШТРБЕНК ИВАНКА
+ШТРБЕНК НИКОЛА
+ШТРБОЈА ЖИВКО
+ШТРБОЈА ЂОРЂЕ
+ШТРБОЈА ЂОРЂЕ
+ШТРБОЈА РАДА
+ШТРБОЈА РАДИВОЈ
+ШТРБОЈА СТЕВАН
+ШТРБОЈЕ ДИМИТРИЈЕ
+ШТРИЦКИ ЈОСИП
+ШТРК ЈОСИП
+ШТРК МАРИЈА
+ШТРКИЋ МИРОСЛАВ
+ШТРКИЋ МОМИР
+ШТРОК ЖЕЉКО
+ШТРТАК СЛАВКО
+ШТРТАК СЛОБОДАН
+ШТУЛА МИЛЕ
+ШТУЛИЋ БОЖИДАР
+ШТУЛИЋ ГОРАН
+ШТУЛИЋ ЈОВО
+ШТУЛИЋ МАРКО
+ШТУЛИЋ РАДОВАН
+ШТУМПФ ХЕЛМУТ
+ШТУМПФ ОСВАЛД
+ШУШЧЕВИЋ ЈОВО
+ШУШЧЕВИЋ ЗДРАВКО
+ШУША ЧЕДОМИР
+ШУША ДУШАН
+ШУША ЈОВАН
+ШУША КЕМАЛ
+ШУША СТОЈАНКА
+ШУШАК ЂОКА
+ШУШАК ЂОРЂЕ
+ШУШАК ГОСПАВА
+ШУШАК МАРИЈА
+ШУШАК НЕВЕНА
+ШУШАК СТАМЕНКО ДР
+ШУШАК ТОМИСЛАВ
+ШУШАКОВ ПАЈА
+ШУШЕВСКИ МИЛАН
+ШУШИЋ РИСТО
+ШУШИЋ ТОМИСЛАВ
+ШУШКАВЧЕВИЋ ИЛИЈА
+ШУШКАВЧЕВИЋ МИОДРАГ
+ШУШКОВИЋ БОРИС
+ШУШЉИК ЈОВАН
+ШУШЊАР ЖАРКО
+ШУШЊАР БОРИСЛАВ
+ШУШЊАР БОРИСЛАВ
+ШУШЊАР МИХАЈЛО
+ШУШЊАР МИЛАН
+ШУШЊАР МИЛАН
+ШУШЊАР ПЕТАР
+ШУШЊАР ПЕТАР
+ШУШЊАР ПЕТАР
+ШУШЊАР СЛАВКО
+ШУШЊАР СОФИЈА
+ШУШЊАР СТАНКО
+ШУШЊЕВИЋ ДУШАН
+ШУШЊЕВИЋ МОМЧИЛО
+ШУШЊЕВИЋ РАДОСЛАВ
+ШУШЊИЋ СТАНКА
+ШУШТРАН МЛАДЕН
+ШУШТУМ ЈОВАН
+ШУЋАК МИЛАН
+ШУЋОВ ЋИРА
+ШУЋОВ ДАНИЦА
+ШУЋОВ ДАНИЛО
+ШУЋОВ МИЛОШ
+ШУЋОВ ВУКОСАВА
+ШУБАРА МЛАДЕН
+ШУБАРИЋ ЛУКА
+ШУБАРИЋ ВЛАСТИМИР
+ШУБАРИЋ ЗОРАН
+ШУБЕРТ ИЛОНКА
+ШУБИЋ ЈОВАНКА
+ШУБОЊ СИЛВИУС
+ШУДАР ЈОЖЕФ
+ШУДАР ЈОСИП
+ШУДИЦКИ ЈОЖЕФ
+ШУГИЋ МИЛАН
+ШУГИЋ НАДА
+ШУГИЋ ПЕТАР
+ШУГИН ЖИВКО
+ШУГИН БЕРИСАВ
+ШУГИН ДИМИТРИЈЕ
+ШУГИН ЛЕКСА
+ШУГИН ЉИЉАНА
+ШУГИН ЉИЉАНА
+ШУГИН МИЛКА
+ШУГИН МИОДРАГ
+ШУГИН МИОДРАГ
+ШУГИН РАДА
+ШУГИН РАНКА
+ШУХАЈДА ЂУРА
+ШУХАЈДА ИМРЕ
+ШУХАЈДА ЛАЈОШ
+ШУЈДОВИЋ ЗОРАН
+ШУЈИЋ ДРАГОМИР
+ШУЈИЋ РЕЏО
+ШУЈИЦА МИЛАН
+ШУКА АЛЕКСА
+ШУКАЛОВИЋ ЂОРЂЕ
+ШУКАРА БОГДАН
+ШУКАРА ДМИТАР
+ШУКАРА ДУШАН
+ШУКИЋ ДРАГИЦА
+ШУКИЋ МИРОЉУБ
+ШУКИЋ ЗОРИЦА
+ШУКЛА СЛАВКО
+ШУКОВИЋ МИЛАН
+ШУКОВИЋ ЗОРКА
+ШУКУНДА МАРИЈА
+ШУКУНДА МИЛАН
+ШУКУРМА СТЕВО
+ШУЛАЈА МИРОСЛАВ
+ШУЛЦ АНДРАШ
+ШУЛЦ ДЕЛИМИР ДР ПРОФ
+ШУЛЦ ИМРЕ ДИПЛ ИНГ
+ШУЛЦ ИМРЕ
+ШУЛЦ ЈОЖЕФ
+ШУЛЦ ЈОЖЕФ
+ШУЛЦ КОСАНА
+ШУЛЦ ВЕРА
+ШУЛЕНТИЋ МИЛЕ
+ШУЛХОФ ЈОЖЕФ КЊИЖЕВНИК
+ШУЉАН АНА
+ШУЉАН ЈАНКО
+ШУЉАН ЈАН
+ШУЉАН ЈАН
+ШУЉАН ЈАРОСЛАВ
+ШУЉАН ПАЛ
+ШУЉМАНАЦ-ШЕЋЕРОВ МИРЈАНА
+ШУЉМАНАЦ БРАНИМИР
+ШУЉМАНАЦ ЈОВАН
+ШУЉМАНАЦ УРОШ
+ШУЛОВИЋ ПЕТАР
+ШУМАХЕР ИЛОНА
+ШУМАХЕР ЈАНОШ
+ШУМАЈСКИ БЛАЖЕНКА
+ШУМАН ВИТОМИР
+ШУМАНОВАЦ ПАВЛЕ ДИПЛ ИНГ
+ШУМАНОВИЋ БРАНИСЛАВ
+ШУМАНОВИЋ ЉИЉАНА
+ШУМАР БОЖО
+ШУМАР МИЛАН
+ШУМАР СИМА
+ШУМАРЕВИЋ ДРАГОРАД
+ШУМАРОВ НИКОЛА
+ШУМАРУНА ЦВЕТА
+ШУМАРУНИЋ ПАВЛЕ
+ШУМЕЦ ЕРНА
+ШУМЕЦ ЈАНОШ
+ШУМИЋ МЛАДЕН
+ШУМОЊА МИЛАН
+ШУНДОВА ФЛОРА
+ШУНИЋ ЈОВО
+ШУЊИЋ ПЕТАР
+ШУЊКА МАРКО
+ШУЊКА МИЛИЦА
+ШУЊКА РАТКО
+ШУНКА ЈОВАН
+ШУНКИЋ ЛАЗАР
+ШУНТИЋ МАТЕЈ
+ШУПЕ ШИМЕ
+ШУПИЦА ДУШАН
+ШУПИЦА ЛАЗАР
+ШУПИЦА ЛАЗА
+ШУПИЦА ЉУБИЦА
+ШУПИЦА МАРА
+ШУПИЦА МИЛАН
+ШУПИЦА МИЛОШ
+ШУПИЦА ПЕТАР
+ШУПИЦА СЛАВКО
+ШУПИЦА ВАСА
+ШУПУТ ЖАРКО ДИПЛ ИНГ
+ШУПУТ ЂУРО
+ШУПУТ ДУШАН
+ШУПУТ СЛОБОДАН
+ШУПУТ СВЕТОЗАР
+ШУРАЊИ ТЕРЕЗИЈА
+ШУРБАНОВИЋ БРАНКО
+ШУРЈАН ЈАНОШ
+ШУРЈАН ЈОВАН
+ШУРЈАНЧЕВ ИВАН
+ШУРЈАНОВИЋ МИЛАН
+ШУРЈАНОВИЋ МИЛЕНА
+ШУРКАЛОВИЋ МИЛЕНА
+ШУРКОВИЋ ДОРАН
+ШУРКОВИЋ ИРФАН ДИПЛ ИНГ
+ШУРЛАН ЧЕДОМИР
+ШУРЛАН ЂОРЂО
+ШУРЛАН ДРАГОМИР
+ШУРЛАН ДРАГОСЛАВ
+ШУРЛАН ГОЈКО
+ШУРЛАН ЈОВАН
+ШУРЛАН МАРИНКО
+ШУРЛАН МАРКО
+ШУРЛАН МИЛОШ
+ШУРЛАН МИРКО
+ШУРЛАН МОМИР
+ШУРЛАН НЕДЕЉКО
+ШУРЛАН РУШКО
+ШУРЛАН ВОЈИСЛАВ
+ШУРЛАН ВУКОСАВА
+ШУСТЕР НЕГОСЛАВ
+ШУСТРИЈАН ОЛГА
+ШУТАНОВИЋ НАДА
+ШУТИЛОВИЋ МИЛОРАД
+ШУТИЛОВИЋ НЕВЕНКА
+ШУТУЛОВИЋ ДАНКА
+ШУТУЛОВИЋ ВЕСНА
+ШУТВИЋ БРАНКА
+ШУВАК МИОДРАГ
+ШУВАКОВ ДАРИНКА
+ШУВАКОВ ДЕЈАН
+ШУВАКОВ ЈОВАН
+ШУВАКОВ МИЛЕНА
+ШУВАКОВ МИЛОРАД
+ШУВАКОВ СТЕВАН
+ШУВАКОВ ТИХОМИР ДР
+ШУВАКОВ ВЕСЕЛИНКА
+ШУВАКОВИЋ ЂУРЂИЦА
+ШУВАКОВИЋ БОГОСЛАВ
+ШУВАКОВИЋ ДАМЈАН ДР ЛЕКАР
+ШУВАКОВИЋ ЈУЛИЈАНА
+ШУВАКОВИЋ ЗОРАН
+ШВАБ ЕСТЕР
+ШВАБ ХЕНРИЈЕТА
+ШВАГЕР МАРТИН
+ШВАЈБЕРИЋ ВИРГИНИЈА
+ШВАЈЦЕР ГИЗЕЛА
+ШВАЈЦЕР ИВИЦА
+ШВАЈЦЕР-РАКИЋ ИРЕНА
+ШВАЈЦЕР РОЗАЛИЈА
+ШВАНДИЛИК ЈОЖЕФ
+ШВАРЦ ИЛОНА
+ШВАРЦ ТИБОР
+ШВАРЦ ВЛАДИМИР
+ШВЕДИЋ АЋИМ
+ШВЕДИЋ ДУШАН
+ШВЕДИЋ ЕЛИЗАБЕТА
+ШВЕДИЋ ЕРЖИКА
+ШВЕДИЋ ГРУЈА
+ШВЕДИЋ ЈОВАН
+ШВЕДИЋ МИЛИЦА
+ШВЕДИЋ МИЛОРАД
+ШВЕДИЋ МИЛУТИН
+ШВЕДИЋ НИКОЛА
+ШВЕДИЋ ПЕТАР
+ШВЕЉА БОГДАН
+ШВЕЉА ПЕТАР
+ШВЕМ ЂУРА
+ШВЕНДА ГОРАН
+ШВЕР КАРЛО
+ШВЕРЕР РУДОЛФ
+ШВЕРКО АНЂЕЛИЈА
+ШВИНД НЕНАД
+ШВОБ ЈОСИП
+ШВОБ ЛАЈОШ
+ШВОЊА ЖЕЉКО
+ШВОЊА ЂУРЂИНКА
+ШВОЊА БИЉАНА
+ШВОЊА БОШКО
+ШВОЊА БОШКО
+ШВОЊА БОЖИДАР
+ШВОЊА БОРИВОЈ
+ШВОЊА БРАНКО
+ШВОЊА ДРАГОЉУБ
+ШВОЊА ДУШАН
+ШВОЊА ДУШКО
+ШВОЊА МИЛАН
+ШВОЊА МИРА
+ШВОЊА РАТКО
+ШВОЊА РАТКО
+ШВОЊА СВЕТОЗАР
+ШВОЊА ВЕЉКО
+ШВРАКА ФРАЊО
+ШВРАКА СТЕВАН ДИПЛ ИНГ
+ШВРАКА СТЕВАН
+ЋАЋИЋ ДАНИЦА
+ЋАЋИЋ ДУШАН
+ЋАЋИЋ МАРКО
+ЋАЋИЋ НИНОСЛАВ
+ЋАХУН КАРЛО ДИПЛ ИНГ
+ЋАЈА ВАНКА
+ЋАКИЋ ГИЗА
+ЋАЛАСАН ЈОВАН
+ЋАЛАСАН СТОЈАН
+ЋАЛЕТА ИВИЦА
+ЋАЛИЋ ИЛИЈА
+ЋАЛИЋ ЈОВАН
+ЋАЛИЋ ЈОВАН
+ЋАЛИЋ ЛУКА
+ЋАЛИЋ МИЛОШ
+ЋАЛИЋ МОМЧИЛО
+ЋАЛИЋ СЛОБОДАН
+ЋАЛИЋ ЗОРАН
+ЋАЛОВ МИЛОРАД
+ЋАЛОВИЋ ЛАКИЋ
+ЋАЛОВИЋ РАДОМИР
+ЋАЛУШИЋ ЈАКОВ
+ЋАТИЋ РАДЕНКО
+ЋАТИЋ СМИЉАНА
+ЋАТОВИЋ ДРАГАН
+ЋАТОВИЋ ГОСПАВА
+ЋАТОВИЋ МАХИТ
+ЋАТОВИЋ СИМАН
+ЋАВАР МАРКО
+ЋАЗИЋ ЂОРЂЕ
+ЋАЗИЋ МИЛЕ
+ЋАЗИЋ МИЛЕ
+ЋАЗИЋ ПЕТАР
+ЋЕБИЋ БОРИВОЈ
+ЋЕБИЋ МИЛАН
+ЋЕБИЋ СЛАВИЦА
+ЋЕБОВИЋ НЕНАД
+ЋЕХА БРАНЕ
+ЋЕЈИЋ ДУШАН
+ЋЕЈИЋ ДУШАН
+ЋЕЛАП МЛАДЕН
+ЋЕЛАП СВЕТОЗАР
+ЋЕЛИЋ ЉУБА
+ЋЕЛИЋ СЛАВКО
+ЋЕЛИЋ ВИКТОРИЈА
+ЋЕНАНОВИЋ МИРЈАНА
+ЋЕРАН БОШКО
+ЋЕРАН ДУШАН
+ЋЕРАН ЈЕЛКА
+ЋЕРАН МИЛЕНКО
+ЋЕРАН СТОЈАН
+ЋЕРАН ВЕЉКО
+ЋЕРАН ЗОРАНКА
+ЋЕРАНИЋ БРАНИСЛАВ
+ЋЕРАНИЋ МИЛАН
+ЋЕРАНИЋ МИЛИЦА
+ЋЕРАНИЋ РАДИНКА
+ЋЕРАНИЋ СНЕЖАНА
+ЋЕРАНИЋ ЗОРАН
+ЋЕРИМАГИЋ ЕТХЕМ
+ЋЕРМОВ-КАВЕЧАН БОЈАНА
+ЋЕСАРОВ ЖАРКО
+ЋЕСАРОВ БРАНИСЛАВ
+ЋЕСАРОВ РУЖИЦА
+ЋЕСАРОВ СИМА
+ЋЕСАРОВ СТЕВАН
+ЋЕСАРОВ СВЕТОЗАР
+ЋЕСАРОВИЋ БОСИЉКА
+ЋЕСАРОВИЋ РАДИВОЈ
+ЋЕТКОВИЋ ЖАРКО
+ЋЕТКОВИЋ БОЖИДАР
+ЋЕТКОВИЋ ДУШАНКА
+ЋЕТКОВИЋ МИЛЕНКО
+ЋЕТКОВИЋ НЕНАД
+ЋЕТКОВИЋ ПРЕДРАГ
+ЋЕТОЈЕВИЋ ЂОРЂЕ
+ЋЕТОЈЕВИЋ БОСА
+ЋЕТОЈЕВИЋ ДРАГОЉУБ
+ЋЕТОЈЕВИЋ ЈОВО
+ЋЕТОЈЕВИЋ МИЛОШ
+ЋЕТОЈЕВИЋ МИЛОВАН
+ЋЕТОЈЕВИЋ МИРОСЛАВ
+ЋЕТОЈЕВИЋ НЕДЕЉКО
+ЋЕТОЈЕВИЋ РАДОВАН
+ЋЕВАП БОЖА
+ЋИШИН ДУШАНКА
+ЋИНКУЛ САВА
+ЋИНКУЛ ВАЛТА
+ЋИПЕ ЕРЖЕБЕТ
+ЋИПРОВАЦ САВА
+ЋИПРОВАЦ ТОША
+ЋИПРОВАЦ ЗДРАВКО
+ЋИРАК МИЛОРАД
+ЋИРАКОВИЋ ЖИВОРАД
+ЋИРАКОВИЋ МАРКО
+ЋИРАКОВИЋ МИЛОРАД
+ЋИРАКОВИЋ САЈА
+ЋИРЕВСКИ БУДИМИР
+ЋИРИЋ ЋИРА
+ЋИРИЋ ЖИВКА
+ЋИРИЋ ЖИВКА
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂУРЂИНКА
+ЋИРИЋ АНИЦА
+ЋИРИЋ АНИТА
+ЋИРИЋ БОШКО
+ЋИРИЋ БОЖИДАР ДР
+ЋИРИЋ БОЖИДАР
+ЋИРИЋ БОЖО
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БРАНКА
+ЋИРИЋ БРАНКО
+ЋИРИЋ ДАНИЦА
+ЋИРИЋ ДАНИЛО
+ЋИРИЋ ДЕСАНКА
+ЋИРИЋ ДИВКО
+ЋИРИЋ ДОБРИЛА
+ЋИРИЋ ДРАГАН
+ЋИРИЋ ДРАГИЦА
+ЋИРИЋ ДРАГИЊА
+ЋИРИЋ ДРАГОЉУБ
+ЋИРИЋ ДУШАН ДИПЛ ИНГ
+ЋИРИЋ ДУШАНКА
+ЋИРИЋ ДУШАН
+ЋИРИЋ ДУШАН
+ЋИРИЋ ДУШИЦА
+ЋИРИЋ ГАВРИЛО
+ЋИРИЋ ГОРДАНА
+ЋИРИЋ ИВАНКА
+ЋИРИЋ ИВАН
+ЋИРИЋ ЈЕЛИСАВЕТА
+ЋИРИЋ ЈОРДАН
+ЋИРИЋ ЈОВАНКА
+ЋИРИЋ ЈОВАН
+ЋИРИЋ ЈОВАН
+ЋИРИЋ ЈОВАН
+ЋИРИЋ КАМЕНКО
+ЋИРИЋ КАТИЦА
+ЋИРИЋ ЛАЗАР
+ЋИРИЋ ЛЕНКА
+ЋИРИЋ ЉУБИЦА
+ЋИРИЋ ЉУБИЦА
+ЋИРИЋ ЉУБОМИР
+ЋИРИЋ МАРКО
+ЋИРИЋ МИЛАН ДИПЛ ИНГ
+ЋИРИЋ МИЛАН
+ЋИРИЋ МИЛЕНКО
+ЋИРИЋ МИЛЕНКО
+ЋИРИЋ МИЛЕТА
+ЋИРИЋ МИЛИЦА
+ЋИРИЋ МИЛКА
+ЋИРИЋ МИЛОШ
+ЋИРИЋ МИЛОШ
+ЋИРИЋ МИЛОРАД
+ЋИРИЋ МИЛОРАД
+ЋИРИЋ МИОДРАГ
+ЋИРИЋ МИРА
+ЋИРИЋ МЛАДЕН
+ЋИРИЋ НИКОЛА
+ЋИРИЋ ПАЈА
+ЋИРИЋ ПЕТАР
+ЋИРИЋ ПЕТАР
+ЋИРИЋ-ПЕТРОВИЋ КАТАРИНА
+ЋИРИЋ ПРЕДРАГ
+ЋИРИЋ РАДЕ
+ЋИРИЋ РАДМИЛА
+ЋИРИЋ РАДМИЛО
+ЋИРИЋ РАДОМИР
+ЋИРИЋ РАДОВАН
+ЋИРИЋ РОБЕРТ
+ЋИРИЋ САВА
+ЋИРИЋ СЛАВИЦА
+ЋИРИЋ СЛАВКО
+ЋИРИЋ СЛАВКО
+ЋИРИЋ СЛОБОДАН
+ЋИРИЋ СМИЉА
+ЋИРИЋ СОФИЈА
+ЋИРИЋ СРЕДОЈЕ
+ЋИРИЋ СТАНИСЛАВ
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СВЕТИСЛАВ
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ ТОМИСЛАВ
+ЋИРИЋ ТОМИСЛАВ
+ЋИРИЋ-ТОН ЈЕЛИЦА
+ЋИРИЋ ВАСА
+ЋИРИЋ ВЕРА
+ЋИРИЋ ВЛАДИМИР
+ЋИРИЋ ВЛАДИМИР
+ЋИРИЋ ВЛАДИСЛАВ
+ЋИРИЋ ВУЧКО
+ЋИРИЋ ЗОРАН
+ЋИРИЋ ЗОРА
+ЋИРИЋ ЗОРА
+ЋИРИЋ ЗОРКА
+ЋИРИЛОВ МИЛАН
+ЋИРИЛОВИЋ АНИЦА
+ЋИРИЛОВИЋ БРАНИСЛАВ
+ЋИРИЛОВИЋ МИЛИВОЈ
+ЋИРИЛОВИЋ МЛАДЕН
+ЋИРИЛОВИЋ ОЛГА
+ЋИРИЛОВИЋ ПЕТАР
+ЋИРИЛОВИЋ ВЕРА
+ЋИРИН ДРАГОСЛАВ
+ЋИРИН-НОВТА ВЕРА
+ЋИРИН СЛОБОДАН
+ЋИРИТОВИЋ ДУШАНКА
+ЋИРЈАКОВИЋ ГОРДАНА
+ЋИРЈАКОВИЋ СЛАВОЉУБ
+ЋИРЈАКОВИЋ СЛОБОДАН
+ЋИРКОВИЋ ЂОРЂЕ
+ЋИРКОВИЋ ЦВЕТАНКА
+ЋИРКОВИЋ ИВАН
+ЋИРКОВИЋ ИВАН
+ЋИРКОВИЋ ЈАНКО
+ЋИРКОВИЋ КАТИЦА
+ЋИРКОВИЋ МАРКО
+ЋИРКОВИЋ МАРТА
+ЋИРКОВИЋ МИЛЕНКО
+ЋИРКОВИЋ МИРОСЛАВ
+ЋИРКОВИЋ НЕНАД
+ЋИРКОВИЋ РАДМИЛА
+ЋИРОВИЋ ЖАРКО
+ЋИРОВИЋ ДЕЈАН
+ЋИРОВИЋ ГРУЈИЦА
+ЋИРОВИЋ МИЛУТИН
+ЋИРОВИЋ НИКОЛА
+ЋИРОВИЋ ВЕЛИМИР
+ЋИРОВИЋ ВЕЛИМИР
+ЋИРПАНОВ МИОДРАГ
+ЋИРУШИЋ РАЈКО
+ЋИТИЋ ДУШАН
+ЋИТИЋ МИЛОВАН
+ЋОЋКАЛО СИМА
+ЋОЈАНОВИЋ БОЖИДАР
+ЋОЈАНОВИЋ БОРО
+ЋОЈАНОВИЋ МИЛКА
+ЋОЈДЕР ГОЈКО
+ЋОМА КАТАРИНА
+ЋОПИЋ АНДРИЈА
+ЋОПИЋ ЕВИЦА
+ЋОПИЋ МИЋА
+ЋОПИЋ МИЛЕ
+ЋОПИЋ МИЛОШ
+ЋОПИЋ ВЕРА
+ЋОРИЋ-ЂОКИЋ НАДА
+ЋОРИЋ ЂОРЂЕ
+ЋОРИЋ ЂУРО
+ЋОРИЋ ЂУРО
+ЋОРИЋ АНДРИЈА
+ЋОРИЋ БИСЕРКА
+ЋОРИЋ БЛАГОЈЕ
+ЋОРИЋ БОРА
+ЋОРИЋ ЈОВАН
+ЋОРИЋ КАТАРИНА
+ЋОРИЋ ЉИЉАНА
+ЋОРИЋ МАРИЈА
+ЋОРИЋ МИЋО
+ЋОРИЋ МИКАИЛО
+ЋОРИЋ РАЈКО
+ЋОРКОВИЋ ИВАН
+ЋОРКОВИЋ МАРКО
+ЋОРОВИЋ ДАНИЛО
+ЋОРОВИЋ ЈОВАН
+ЋОРОВИЋ МИРЧЕТА
+ЋОРОВИЋ МИРО
+ЋОРОВИЋ РЕНАТА
+ЋОРОВИЋ СЛОБОДАН
+ЋОСИЋ ШТЕФИЦА
+ЋОСИЋ ЖАРКО
+ЋОСИЋ ЖИВАНА
+ЋОСИЋ ЖИВКА
+ЋОСИЋ АЛЕКСАНДАР
+ЋОСИЋ АЛЕКСАНДАР
+ЋОСИЋ БОГДАН СУДИЈА
+ЋОСИЋ БРАНКО
+ЋОСИЋ БРАНКО
+ЋОСИЋ ДАНИЦА
+ЋОСИЋ ДРАГАНА
+ЋОСИЋ ДРАГАН
+ЋОСИЋ ДРАГИЦА
+ЋОСИЋ ДРАГИЦА
+ЋОСИЋ ДУШАН
+ЋОСИЋ ДУШАН
+ЋОСИЋ ДУШКО
+ЋОСИЋ ФАДИЛ
+ЋОСИЋ ИЛИЈА
+ЋОСИЋ ЈЕЛКА
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОЗО
+ЋОСИЋ ЉИЉАНА
+ЋОСИЋ МАРИЈА
+ЋОСИЋ МАРИЈА
+ЋОСИЋ МИЛАН
+ЋОСИЋ МИЛЕНА
+ЋОСИЋ МИЛИЦА
+ЋОСИЋ МИРЈАНА
+ЋОСИЋ МУХАМЕД
+ЋОСИЋ ОЛГА
+ЋОСИЋ ПАНТЕЛИЈА
+ЋОСИЋ САВКА
+ЋОСИЋ СМИЉА
+ЋОСИЋ СНЕЖАНА
+ЋОСИЋ СТАНКА
+ЋОСИЋ СТОЈАН
+ЋОСИЋ ТОДОР ДИПЛ ИНГ
+ЋОСИЋ ВЕРА
+ЋОСИЋ ВЕРОСЛАВ
+ЋОСИЋ ВЛАДИМИР
+ЋОСИЋ ЗОРАН
+ЋОСИЋ ЗОРКА
+ЋОСИН ДУШАН
+ЋОСИН ЗОРАН
+ЋОСО ГАВРИЛО
+ЋОСОВИЋ ЈЕЛЕНА
+ЋОСОВИЋ МИЛЕТА
+ЋОСОВИЋ ТОМИСЛАВ
+ЋОВИЋ ЛАЗАР
+ЋОВИН МИЛАН
+ЋУЋА АДАМ
+ЋУЋИЛОВИЋ ЦВИЈА
+ЋУЋИЛОВИЋ МОМЧИЛО
+ЋУЋИЛОВИЋ РУЖИЦА
+ЋУЋУЗ МАРКО
+ЋУЋУЗ САША
+ЋУЋУЗ СТАНКО
+ЋУБА РАТКО ДИПЛ ИНГ
+ЋУБИЋ ДУШАН
+ЋУИЋ ИЛИЈА
+ЋУИЋ МАРА
+ЋУИЋ МИЛКА
+ЋУЈИЋ ЉУБИЦА
+ЋУЈИЋ СТЕВАН
+ЋУК ЂУРО
+ЋУК ДРАГО
+ЋУК ДУШАН
+ЋУК ДУШАН
+ЋУК ГОЈКО
+ЋУК ЛЕЛА
+ЋУК ЛУКА
+ЋУК МАРА
+ЋУК МИЛАН ДИПЛ ИНГ
+ЋУК МИЛЕ
+ЋУК МИЛИЦА
+ЋУК МИЛКАН
+ЋУК МИЛОРАД
+ЋУК МИРОСЛАВ
+ЋУК НИКОЛА
+ЋУК РАДИВОЈ
+ЋУК РАТКО
+ЋУК СЛОБОДАН
+ЋУК ТОМИСЛАВ
+ЋУК ЗОРКА
+ЋУКОВИЋ МИЛУН
+ЋУКОВИЋ МИРА
+ЋУКОВИЋ РАДОМИР ДИПЛ ИНГ
+ЋУКОВИЋ РАДОВАН
+ЋУКОВИЋ ТИХОМИРКА
+ЋУКОВИЋ ЗОРАН
+ЋУЛИЋ ЂОРЂЕ
+ЋУЛИЋ ЈАСМИНКА
+ЋУЛИБРК БОГДАН
+ЋУЛИБРК ДРАГАН
+ЋУЛИБРК ДРАГАН
+ЋУЛИБРК ДРАГОСЛАВ
+ЋУЛИБРК ДУШАНКА
+ЋУЛИБРК ДУШАН
+ЋУЛИБРК ГОСПАВА
+ЋУЛИБРК ЈЕЛИЦА
+ЋУЛИБРК ЈЕЛКА
+ЋУЛИБРК МИЛАН
+ЋУЛИБРК МИЛЕ
+ЋУЛИБРК МИЛЕ
+ЋУЛИБРК МИОДРАГ
+ЋУЛИБРК МИРКО
+ЋУЛИБРК МЛАДЕН
+ЋУЛИБРК МОМЧИЛО
+ЋУЛИБРК РАДИВОЈЕ
+ЋУЛИБРК РАДОЈКА
+ЋУЛИБРК РАТКО
+ЋУЛИБРК РИСТО
+ЋУЛИБРК СЛОБОДАН
+ЋУЛИБРК СОКА
+ЋУЛИБРК СТЕВАН
+ЋУЛИБРК ТРИВО
+ЋУЛУМ БРАНКО
+ЋУЛУМ ГОЈКО
+ЋУЛУМ ИЛИЈА
+ЋУЛУМ ЈЕЛИЦА
+ЋУЛУМ ЈОВАН
+ЋУЛУМ ЛАЗАР
+ЋУЛУМ МАРА
+ЋУЛУМ МАРА
+ЋУЛУМ МИХАЈЛО
+ЋУЛУМ МИЛАН
+ЋУЛУМ МИЛЕТА
+ЋУЛУМ МИЛОШ
+ЋУЛУМ МИОДРАГ
+ЋУЛУМ МИРКО
+ЋУЛУМ МИРКО
+ЋУЛУМ НАДА
+ЋУЛУМ НАДА
+ЋУЛУМ НИКОЛА
+ЋУЛУМ ПЕРО
+ЋУЛУМ РАДЕ
+ЋУЛУМ РАДЕ
+ЋУЛУМ САВА
+ЋУЛУМ СЛАВКО
+ЋУЛУМ СТАНКА
+ЋУЛУМ СТАНКА
+ЋУЛУМ СТЕВО
+ЋУЛУМ СТЕВО
+ЋУЛУМ УРОШ
+ЋУЛУМ ВАСА
+ЋУЛУМАН СТЕВАН
+ЋУЛУМОВИЋ СТЈЕПАН
+ЋУМУРОВИЋ СЛАВИЦА
+ЋУПИЋ ДУШАН
+ЋУПИНА БРАНКО
+ЋУПИНА МИЛАДИН
+ЋУПИНА НОВИЦА
+ЋУПИНА ТОМИСЛАВ ДР
+ЋУПУРДИЈА ЈЕЛЕНА
+ЋУПУРДИЈА МИЛАН
+ЋУПУРДИЈА МИЛОВАН
+ЋУПУРДИЈА САША
+ЋУПУРДИЈА СТЕВАН
+ЋУРЧИЋ ЧЕДОМИР
+ЋУРЧИЋ ЖИВАН
+ЋУРЧИЋ ЖИВАН
+ЋУРЧИЋ ЖИВКО
+ЋУРЧИЋ ЂОРЂЕ
+ЋУРЧИЋ АЛЕКСАНДАР
+ЋУРЧИЋ АНДРИЈА
+ЋУРЧИЋ БОШКО
+ЋУРЧИЋ БОГДАН
+ЋУРЧИЋ БОРИВОЈ
+ЋУРЧИЋ БРАНИСЛАВ
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ ДАНИЛО
+ЋУРЧИЋ ДЕСПИНА
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГОМИР
+ЋУРЧИЋ ДРАГОСЛАВ
+ЋУРЧИЋ ДУШАНКА
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ГЕОРГИЈЕ
+ЋУРЧИЋ ГОЈКО
+ЋУРЧИЋ ГОРДАНА
+ЋУРЧИЋ ИБОЈА
+ЋУРЧИЋ ИЛИЈА
+ЋУРЧИЋ ИЛИЈА
+ЋУРЧИЋ ЈАСМИНА
+ЋУРЧИЋ ЈЕЛЕНА
+ЋУРЧИЋ ЈОВАН НОВИНАР
+ЋУРЧИЋ ЈОВА
+ЋУРЧИЋ КАМЕНКО
+ЋУРЧИЋ-КАСАЛИЦА БОСА
+ЋУРЧИЋ КАТИЦА
+ЋУРЧИЋ ЛАЗАР
+ЋУРЧИЋ ЛАЗАР
+ЋУРЧИЋ ЉИЉАНА
+ЋУРЧИЋ ЉИЉАНА
+ЋУРЧИЋ ЉУБИША
+ЋУРЧИЋ ЉУБОМИР
+ЋУРЧИЋ МАРА
+ЋУРЧИЋ МАРА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МИХАЈЛО
+ЋУРЧИЋ МИЈО
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛЕНА
+ЋУРЧИЋ МИЛЕВА
+ЋУРЧИЋ МИЛЕ
+ЋУРЧИЋ МИЛЕ
+ЋУРЧИЋ МИЛИЋ
+ЋУРЧИЋ МИЛИЦА
+ЋУРЧИЋ МИЛИВОЈ
+ЋУРЧИЋ МИЛОРАД
+ЋУРЧИЋ МИЛОРАД
+ЋУРЧИЋ МИОДРАГ
+ЋУРЧИЋ МИОДРАГ
+ЋУРЧИЋ МИРЈАНА
+ЋУРЧИЋ МИРЈАНА
+ЋУРЧИЋ МИРКО
+ЋУРЧИЋ МИРОСЛАВ
+ЋУРЧИЋ МИРОСЛАВ
+ЋУРЧИЋ МЛАДЕН
+ЋУРЧИЋ МОМЧИЛО
+ЋУРЧИЋ НАДА
+ЋУРЧИЋ НЕНАД
+ЋУРЧИЋ НИКОЛА
+ЋУРЧИЋ ОЛГА
+ЋУРЧИЋ ОЛГА
+ЋУРЧИЋ ПАВЛЕ
+ЋУРЧИЋ ПЕТАР
+ЋУРЧИЋ РАДЕ
+ЋУРЧИЋ РАДИВОЈ
+ЋУРЧИЋ РАДМИЛА
+ЋУРЧИЋ РАДМИЛА
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАЈКО
+ЋУРЧИЋ РАЈКО
+ЋУРЧИЋ РАТКА
+ЋУРЧИЋ РАТОМИР
+ЋУРЧИЋ САВА
+ЋУРЧИЋ СЛАВИЦА
+ЋУРЧИЋ СЛАВКО
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СТЕВАН
+ЋУРЧИЋ СТЕВО
+ЋУРЧИЋ УРОШ
+ЋУРЧИЋ ВАСИЛИЈЕ
+ЋУРЧИЋ ВЕРА
+ЋУРЧИЋ ВЕСЕЛИНКА
+ЋУРЧИЋ ВУКАШИН
+ЋУРЧИЋ ЗДРАВКО
+ЋУРЧИЋ ЗЛАТА
+ЋУРЧИЋ ЗОРАН
+ЋУРЧИЋ ЗОРАН
+ЋУРЧИЈА СИМА
+ЋУРЧИН ЖИВКО
+ЋУРЧИН ЖИВКО
+ЋУРЧИН ЂОРЂЕ
+ЋУРЧИН ЂУРА
+ЋУРЧИН АЛЕКСАНДАР
+ЋУРЧИН БОЖИДАР
+ЋУРЧИН БРАНКО
+ЋУРЧИН ДРАГОМИР
+ЋУРЧИН ДРАГОСЛАВ
+ЋУРЧИН ДРЕНКА
+ЋУРЧИН ДУШАН
+ЋУРЧИН ДУШАН
+ЋУРЧИН ЕМИЛИЈА
+ЋУРЧИН ЈЕЛЕНА
+ЋУРЧИН ЈЕЛИСАВЕТА
+ЋУРЧИН ЉУБИЦА
+ЋУРЧИН МАКСА
+ЋУРЧИН МИЛАН
+ЋУРЧИН МИЛЕНА
+ЋУРЧИН МИЛОРАД
+ЋУРЧИН МИЛОРАД
+ЋУРЧИН ОБРАД
+ЋУРЧИН ПЕТАР
+ЋУРЧИН РАДИВОЈ
+ЋУРЧИН РАДОСЛАВ
+ЋУРЧИН РУЖА
+ЋУРЧИН САРА
+ЋУРЧИН СВЕТОЗАР
+ЋУРЧИН ТОДОР
+ЋУРЧИН ВАСА
+ЋУРЧИН ВЕЛЕМИР
+ЋУРЧИН ВЕЛИМИР
+ЋУРЧИН ВЕРИЦА
+ЋУРЧИН ВУКИЦА
+ЋУРЧИН ЗОРА
+ЋУРЋИЈИЋ РАТОМИР
+ЋУРДИЋ ЈОВАН
+ЋУРДИЋ ВАСИЛИЈЕ
+ЋУРДИЋ ЗОРАН
+ЋУРГУЗ ИЛИЈА
+ЋУРГУЗ МИЛОРАД
+ЋУРГУЗ НАДА
+ЋУРГУЗ ВЕРИЦА
+ЋУРИЧИЋ ТАТЈАНА
+ЋУРИЋ ЂОРЂЕ
+ЋУРИЋ ЈОВАН
+ЋУРИЋ МИЛАН
+ЋУРИЋ МИЛОШ
+ЋУРИЋ МИЛОРАД
+ЋУРИЋ МИЛУТИН
+ЋУРИЋ ПЕЛАГИЈА
+ЋУРИЋ САВО
+ЋУРИЋ СИМО
+ЋУРИЋ СИНИША
+ЋУРИЋ СУЗАНА
+ЋУРИЋ ВЛАДИСЛАВ
+ЋУРКОВИЋ ШПИРО
+ЋУРКОВИЋ-ЂОРЂЕВИЋ МИОМИРА
+ЋУРКОВИЋ КАТИЦА
+ЋУРЛИБРК БОСИЉКА
+ЋУРУВИЈА БРАНКО
+ЋУРУВИЈА НИКОЛА
+ЋУРУВИЈА НИКОЛА
+ЋУРУВИЈА ВЛАДО
+ЋУТИЛО СТЕВО
+ЋУЗОВИЋ БРАНЕ
+ЋУЗОВИЋ ДРАГОЉУБ
+ЋУЗОВИЋ ДРАГОЉУБ
+ЋУЗОВИЋ ГОРАН
+ЋУЗОВИЋ МИРКО
+ЖАБАЉАЦ ВОЈИСЛАВ
+ЖАБИЋ ГОРАН
+ЖАБИЋ ЉУБОМИР
+ЖАБУЉАЦ ПАВЛЕ
+ЖАФРАН МАРТИН
+ЖАГАР ДРАГАН
+ЖАГАР ЕРНЕСТ
+ЖАГАР ИВАН
+ЖАГАР ЈОВАН
+ЖАГАР ЉИЉА
+ЖАГАР МАРИЈА
+ЖАГАР МАТИЈА
+ЖАГАР ПАВАО
+ЖАГАР РАДОСЛАВА
+ЖАЈА ТОМИСЛАВ
+ЖАЈАЧКО ЖЕЉКО
+ЖАК ДРАГУТИН
+ЖАКИЋ ЉУБИЦА
+ЖАКИЋ МАРИЈА
+ЖАКИЋ МИОДРАГ
+ЖАКИЋ МЛАДЕН
+ЖАКИЋ ВЕРА
+ЖАКИЋ ВЛАДИМИР
+ЖАКИЋ ВОЈИСЛАВ
+ЖАКУЛА АРАНКА
+ЖАКУЛА БОРИСЛАВ
+ЖАКУЛА МИЛАН
+ЖАКУЛА МИЛАН
+ЖАКУЛА МИОДРАГ
+ЖАКУЛА МИРА
+ЖАКУЛА РАДИВОЈ ДР ПРОФ
+ЖАКУЛА ЗОРА
+ЖАМБОКИ МАРИЈА
+ЖАМБОКИ ВЕРОНА
+ЖАРЧАНИН БРАНКО
+ЖАРЧАНИН ПРЕДРАГ
+ЖАРИН РАДОЈИЦА
+ЖАРИН СИНИША
+ЖАРИН-ТАБАК НАТАЛИЈА
+ЖАРИН ВЕСЕЛИН
+ЖАРКО ЛАДИСЛАВ
+ЖАРКО МИХАЈЛО
+ЖАРКОВ ДУШАН
+ЖАРКОВ КОСТА
+ЖАРКОВ ЉИЉАНА
+ЖАРКОВ ВЕСЕЛКА
+ЖАРКОВ ЗЛАТОЈЕ
+ЖАРКОВАЧКИ ИЛИЈА
+ЖАРКОВАЧКИ МИРКО
+ЖАРКОВИЋ ЖАРКО
+ЖАРКОВИЋ ДАНИЛО
+ЖАРКОВИЋ ДАНИЛО
+ЖАРКОВИЋ ДРАГОЈЕ ДР ПРОФ
+ЖАРКОВИЋ ГОЈКО
+ЖАРКОВИЋ ГОЈКО
+ЖАРКОВИЋ ЈОВАН
+ЖАРКОВИЋ ЈОВАН
+ЖАРКОВИЋ МИЛЕНА
+ЖАРКОВИЋ МИОДРАГ
+ЖАРКОВИЋ МИОДРАГ
+ЖАРКОВИЋ МИРКО
+ЖАРКОВИЋ НЕБОЈША
+ЖАРКОВИЋ НЕНАД
+ЖАРКОВИЋ НЕНАД
+ЖАРКОВИЋ НОВИЦА
+ЖАРКОВИЋ РИСТО
+ЖАРКОВИЋ РИСТО
+ЖАРКОВИЋ СЛАВКО
+ЖАРКОВИЋ ВЛАЈКО
+ЖАРКОВИЋ ЗДРАВКО
+ЖАРКОВИЋ ЗДРАВКО
+ЖАРКОВИЋ ЗОРА
+ЖДЕРИЋ ЈЕЛИЦА
+ЖДЕРИЋ МАРИЈА
+ЖДЕРИЋ МИЛАН
+ЖДЕРИЋ МИЛЕНКО
+ЖДЕРО ДРАГИЊА
+ЖДЕРО ДУШИЦА
+ЖДЕРО ГОЈКО
+ЖДЕРО МАРИНКО
+ЖДЕРО ПЕТАР
+ЖДЕРО ПЕТАР
+ЖДЕРО РАДОМИР
+ЖДРАЛЕ РАДОВАН
+ЖДРАЛИЋ ВАСО
+ЖДРЊА МИЛАН
+ЖДРЊА МИЛАН
+ЖДРЊА МИРКО
+ЖДРЊА НЕЂО
+ЖДРЊА НЕЂО
+ЖДРЊА СИМО
+ЖЕЖЕЉ БРАНКО
+ЖЕЖЕЉ МИЛАН
+ЖЕЖЕЉ МИЛАН
+ЖЕЖЕЉ САВА
+ЖЕЖЕЉ СВЕТИСЛАВ
+ЖЕБЕЉАН МИЛЕНА
+ЖЕБЕЉАН МИЛЕНКО
+ЖЕБЕЉАН МИЛОРАД
+ЖЕБЕЉАН МИТА
+ЖЕБЕЉАН НЕДЕЉКО
+ЖЕБЕРАН АНЂЕЛКА
+ЖЕГАРАЦ ЂОРЂЕ
+ЖЕГАРАЦ ДАНИЦА
+ЖЕГАРАЦ ДУШАН
+ЖЕГАРАЦ ЛАЗАР
+ЖЕГАРАЦ МИЛАН
+ЖЕГАРАЦ МИЛЕНКО
+ЖЕГАРАЦ МИРЈАНА
+ЖЕГАРАЦ СТЕВАН
+ЖЕГАРАЦ ВОЈИСЛАВ
+ЖЕКИЋ ЖИВКО
+ЖЕКИЋ БОШКО
+ЖЕКИЋ РАДИСЛАВ
+ЖЕКИЋ РУЖА
+ЖЕКИЋ ЗОРАН
+ЖЕЛЕМ СТЕВАН
+ЖЕЛЕР ЂУРЂЕВКА
+ЖЕЛЕЗЕН ЈОСИП
+ЖЕЛИ АНДРАШ
+ЖЕЛИ ИШТВАН
+ЖЕЛИ КАТАРИНА
+ЖЕЛИ СИЛВЕСТЕР
+ЖЕМБЕРИ ШАНДОР
+ЖЕМБЕРИ ЈОСИП
+ЖЕМБЕРИ РОБЕРТ
+ЖЕМБЕРИ РОБЕРТ
+ЖЕНЕР КАРЛО
+ЖЕНИЛО БОЖИДАР
+ЖЕРАЈИЋ ГАВРИЛО
+ЖЕРАВИЦА ДАМЈАН
+ЖЕРАВИЦА МИЛАДИН
+ЖЕРАВИЦА НАДА
+ЖЕРАВИЦА СТАНОЈЕ
+ЖЕРАВЉЕВ ИЛИЈА
+ЖЕРИЋ ИРМА
+ЖЕСТИЋ ШТЕФАНИЈА
+ЖИЖА НАДА
+ЖИЖАКИЋ САВА
+ЖИЖАКОВ ДРАГОЉУБ
+ЖИЖАКОВ КАТИЦА
+ЖИЖАКОВ МИЛОШ
+ЖИЖАКОВ ПАВЛЕ
+ЖИЖАКОВ ВЕЛИНКА
+ЖИЖАКОВ ВИТОМИР
+ЖИЖАКОВ ВЛАДА
+ЖИЖАКОВ ВЛАДИМИР
+ЖИЖИЋ ЧЕДОМИР
+ЖИЖИЋ АНЂЕЛИЈА
+ЖИЖИЋ БРАНИСЛАВ
+ЖИЖИЋ ДРАГАН
+ЖИЖИЋ МИЛОРАД
+ЖИЖИЋ ВЕСЕЛИН
+ЖИЖОВИЋ СЛОБОДАНКА
+ЖИБРЕГ АЛЕКСАНДАР
+ЖИБРЕГ ИВАНА
+ЖИДЕК ЈОСИП
+ЖИДИШИЋ ЗОРАН
+ЖИГА ЈЕЛЕНА
+ЖИГА КАРЛО
+ЖИГА МИРКО
+ЖИГА МУСТАФА
+ЖИГАЛАЦ ВЕРОНА
+ЖИГИЋ БОГДАН
+ЖИГИЋ БРАНКО
+ЖИГИЋ ДАНИЦА
+ЖИГИЋ ДИМИТРИЈЕ
+ЖИГИЋ ДУШАН
+ЖИГИЋ ЈУЛИЈА
+ЖИГИЋ ЉУБИША
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛЕВА
+ЖИГИЋ МИЛКА
+ЖИГИЋ МИРКО
+ЖИГИЋ НЕДЕЉКО
+ЖИГИЋ НИКОЛА
+ЖИГИЋ ПЕТАР
+ЖИГИЋ ПЕТАР
+ЖИГИЋ ПЕТАР
+ЖИГИЋ РАДЕ
+ЖИГИЋ РАДОСЛАВ
+ЖИГИЋ САВКА
+ЖИГИЋ ВОЈИН
+ЖИГМОНД БЕЛА
+ЖИГМОНД БРАНКА
+ЖИГРАИ ЂОРЂЕ
+ЖИГРАИ ИШТВАН МР
+ЖИГРАИ ЈОВАН
+ЖИГРИ ЈОСИП
+ЖИГРИ ЉУБИЦА
+ЖИГРИ МИРКО
+ЖИГУРСКИ ПАВЛЕ
+ЖИХА МАРИЈА
+ЖИХЛАВСКИ ЈУЛКА
+ЖИЈИЋ ВУКОСАВА
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ АЛЕКСАНДАР
+ЖИКИЋ ДИМИТРИЈЕ
+ЖИКИЋ ДОБРИЛА
+ЖИКИЋ ДРАГАН
+ЖИКИЋ ДУШАН
+ЖИКИЋ ЈОВАНКА
+ЖИКИЋ ЈОВАН
+ЖИКИЋ ЈОВАН
+ЖИКИЋ КАТИЦА
+ЖИКИЋ ЉУБИЦА
+ЖИКИЋ МАРИЦА
+ЖИКИЋ МАРИЈА
+ЖИКИЋ МИХАЈЛО
+ЖИКИЋ МИЛАН
+ЖИКИЋ МИЛОРАД ДР
+ЖИКИЋ НЕВЕНА
+ЖИКИЋ НИКОЛА
+ЖИКИЋ НИКОЛА
+ЖИКИЋ ОЛГА
+ЖИКИЋ ОЛИВЕРА
+ЖИКИЋ РАДИВОЈ
+ЖИКИЋ РАДОМИР
+ЖИКИЋ СЛОБОДАН
+ЖИКИЋ СОФИЈА
+ЖИКИЋ ТАМАРА
+ЖИКИЋ ТИХОМИР ДИПЛ ИНГ
+ЖИКИЋ ТОДОР
+ЖИКИЋ ВАСА
+ЖИКИЋ-ВАСИЋ ТАМАРА
+ЖИКИЋ ВЕЛИМИР
+ЖИКИЋ ВЕРА
+ЖИКИЋ ВЕРИЦА
+ЖИКИЋ ВИТОМИР
+ЖИКИЋ ВЛАДИМИР
+ЖИКОВИЋ НЕНАД
+ЖИЛЕВСКИ КРСТО
+ЖИЛИЋ МИЛЕНКО
+ЖИЛИЋ МИРОСЛАВ
+ЖИЛИЋ СТОЈАН
+ЖИЛНИК ЂУРА
+ЖИЛНИК ЂУРА
+ЖИЛНИК ПАВЛЕ ДИПЛ ИНГ
+ЖИЛНИК-ПЕТРОВИЋ ЖЕЛИМИР
+ЖИНИЋ МАРИНА
+ЖИРАВАЦ СТЕВАН
+ЖИРКА ПАВЕЛ
+ЖИРОШ МИРОН
+ЖИРОВНИК АНТОН
+ЖИВЧИЋ СВЕТЛАНА
+ЖИВАЉЕВИЋ ДРАГОМИР
+ЖИВАЉЕВИЋ ГОРАН
+ЖИВАЉЕВИЋ ОЛГА
+ЖИВАЉЕВИЋ СТАНА
+ЖИВАНЧЕВ ИЛИЈА
+ЖИВАНЧЕВ ЈОВАН
+ЖИВАНЧЕВ КАСА ДИПЛ ИНГ
+ЖИВАНЧЕВ МИКА
+ЖИВАНЧЕВ МИЛАН
+ЖИВАНЧЕВ МИЛАН
+ЖИВАНЧЕВ ПАЈА
+ЖИВАНЧЕВ РАДА
+ЖИВАНЧЕВ РАНКО
+ЖИВАНЧЕВ СТЕВАН
+ЖИВАНЧЕВ СТРАХИЊА
+ЖИВАНЧЕВИЋ ЛАЗАР
+ЖИВАНЧЕВИЋ МИЉКО
+ЖИВАНЧЕВИЋ МИЛОРАД ДР
+ЖИВАНЧЕВИЋ СЛОБОДАН
+ЖИВАНЧЕВИЋ ВЕЛИМИР
+ЖИВАНАЦ ДЕЈАН
+ЖИВАНАЦ ДЕЈАН
+ЖИВАНАЦ ЛАЗАР
+ЖИВАНАЦ ЗОРИЦА
+ЖИВАНИЋ ЂОКА
+ЖИВАНИЋ МИХАЈЛО
+ЖИВАНИЋ МИЛАН
+ЖИВАНИЋ МИЛОРАД
+ЖИВАНИЋ МИТАР
+ЖИВАНИЋ ПРЕДРАГ
+ЖИВАНИЋ ВЛАДИМИР
+ЖИВАНИЋ ЗОРАН
+ЖИВАНКИЋ ЕВИЦА
+ЖИВАНКОВ ИГЊАТ
+ЖИВАНОВ ЖАРКО
+ЖИВАНОВ ЖИВАН
+ЖИВАНОВ ЖИВКО
+ЖИВАНОВ АНЂЕЛИЈА
+ЖИВАНОВ БОГОЉУБ
+ЖИВАНОВ БРАНКО
+ЖИВАНОВ ДАНИЦА
+ЖИВАНОВ ДИМИТРИЈЕ
+ЖИВАНОВ ДОБРИЛА
+ЖИВАНОВ ДОБРИВОЈ
+ЖИВАНОВ ДРАГОЈЛА
+ЖИВАНОВ ДРАГОСЛАВ
+ЖИВАНОВ ДРАГОСЛАВ
+ЖИВАНОВ ДУШАН
+ЖИВАНОВ ГОРОСЛАВА
+ЖИВАНОВ ЈУСТИНА
+ЖИВАНОВ ЛАЗАР
+ЖИВАНОВ ЛАЗАР
+ЖИВАНОВ ЛЕПОСАВА
+ЖИВАНОВ ЉУБИЦА
+ЖИВАНОВ МАГДА
+ЖИВАНОВ МАКСИН
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МИЛАН
+ЖИВАНОВ МИЛЕТА
+ЖИВАНОВ МИЛИВОЈ
+ЖИВАНОВ МИЛОШ
+ЖИВАНОВ МИЛОШ
+ЖИВАНОВ МИЛОРАД
+ЖИВАНОВ МИОДРАГ
+ЖИВАНОВ МИОМИР
+ЖИВАНОВ МИТА
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МОМИР
+ЖИВАНОВ НАТАША
+ЖИВАНОВ НИКОЛА
+ЖИВАНОВ ПАВИЦА
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ РАДИША
+ЖИВАНОВ РАЈКО
+ЖИВАНОВ САВА
+ЖИВАНОВ СЛАВКО
+ЖИВАНОВ СРЂАН
+ЖИВАНОВ СРБИСЛАВ
+ЖИВАНОВ СТАНИСЛАВ
+ЖИВАНОВ СВЕТОЗАР
+ЖИВАНОВ ТОДОР
+ЖИВАНОВ ТОМИСЛАВ
+ЖИВАНОВ ТУГОМИР
+ЖИВАНОВ ВЕЛИМИР
+ЖИВАНОВ ВЛАДИМИР
+ЖИВАНОВ ВЛАДИМИР
+ЖИВАНОВ ВОЈИСЛАВ
+ЖИВАНОВ ЗЛАТИНКА
+ЖИВАНОВИЋ ЖАРКО
+ЖИВАНОВИЋ ЖИКА
+ЖИВАНОВИЋ ЖИВАН
+ЖИВАНОВИЋ ЖИВОЈИН ДИПЛ ПРАВНИК
+ЖИВАНОВИЋ ЖИВОЈИН
+ЖИВАНОВИЋ ЂОРЂЕ
+ЖИВАНОВИЋ АЛЕКСАНДАР
+ЖИВАНОВИЋ АЛЕКСАНДАР
+ЖИВАНОВИЋ АЛЕКСИЈА
+ЖИВАНОВИЋ АНКИЦА
+ЖИВАНОВИЋ БОШКО
+ЖИВАНОВИЋ БОШКО
+ЖИВАНОВИЋ БОГДАН
+ЖИВАНОВИЋ БОРКА
+ЖИВАНОВИЋ БУДИМКА
+ЖИВАНОВИЋ ДРАГИША
+ЖИВАНОВИЋ ДРАГОЉУБ
+ЖИВАНОВИЋ ДРАГОСЛАВ
+ЖИВАНОВИЋ ЈАДРАНКА
+ЖИВАНОВИЋ ЈЕЛЕНА
+ЖИВАНОВИЋ ЈОВАН
+ЖИВАНОВИЋ ЈОВАН
+ЖИВАНОВИЋ ЛАЗАР
+ЖИВАНОВИЋ-ЛЕШ ДУШИЦА
+ЖИВАНОВИЋ ЉИЉАНА
+ЖИВАНОВИЋ МАРИЦА
+ЖИВАНОВИЋ МАРИЈА
+ЖИВАНОВИЋ МИЛАН
+ЖИВАНОВИЋ МИЛИСАВ
+ЖИВАНОВИЋ МИЛИВОЈ
+ЖИВАНОВИЋ МИЛОШ
+ЖИВАНОВИЋ МИЛОРАД
+ЖИВАНОВИЋ МИЛОВАН
+ЖИВАНОВИЋ МИОДРАГ ДР
+ЖИВАНОВИЋ МИОДРАГ
+ЖИВАНОВИЋ МИРЈАНА
+ЖИВАНОВИЋ МОМЧИЛО
+ЖИВАНОВИЋ НОВИЦА
+ЖИВАНОВИЋ ОБРАД
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ РАДА
+ЖИВАНОВИЋ РАДМИЛА
+ЖИВАНОВИЋ СЛАВКА
+ЖИВАНОВИЋ СЛАВКО
+ЖИВАНОВИЋ СТЕВАН
+ЖИВАНОВИЋ ТОМИСЛАВ
+ЖИВАНОВИЋ ВИДОЈЕ
+ЖИВАНОВИЋ ВЛАДИМИР
+ЖИВАНОВИЋ ВЛАДИСЛАВ
+ЖИВАНОВИЋ ВОЈИСЛАВ
+ЖИВАНОВИЋ ЗОРАН
+ЖИВАНОВИЋ ЗОРАН
+ЖИВАНОВИЋ ЗОРКА
+ЖИВИЋ ЂОРЂЕ
+ЖИВИЋ ЂОРЂЕ
+ЖИВИЋ БОЖИДАР
+ЖИВИЋ ГАВРА
+ЖИВИЋ ЈЕФТА
+ЖИВИЋ ЈЕЛИЦА
+ЖИВИЋ ЈОВАН
+ЖИВИЋ ЛАЗАР
+ЖИВИЋ ЉУБИЦА
+ЖИВИЋ РАДОЈИЦА
+ЖИВИЋ САВА
+ЖИВИЋ САВА
+ЖИВИЋ СМИЉА
+ЖИВИЋ СПАСОЈЕ
+ЖИВИЋ ВЕЛИБОР
+ЖИВИЋ ВИНКА ДР
+ЖИВИЋ ЗОРКА
+ЖИВИН НАДА
+ЖИВКАНОВИЋ ЈОВАН
+ЖИВКИЋ СТЕВАН
+ЖИВКОВ ЂОРЂЕ
+ЖИВКОВ АНЂЕЛКА
+ЖИВКОВ АНЂЕЛКА
+ЖИВКОВ БОРИСЛАВА
+ЖИВКОВ БРАНИСЛАВ
+ЖИВКОВ ДРАГИЊА
+ЖИВКОВ ДРАГОЉУБ
+ЖИВКОВ ДУШКО
+ЖИВКОВ ЕСТЕР
+ЖИВКОВ ГРАДИМИР
+ЖИВКОВ ИВАН
+ЖИВКОВ КОСТА
+ЖИВКОВ МАРКО
+ЖИВКОВ МЕЛАНИЈА
+ЖИВКОВ НЕНАД
+ЖИВКОВ ПАВЛЕ
+ЖИВКОВ РАДОЈКА
+ЖИВКОВ САВА
+ЖИВКОВ САВА
+ЖИВКОВ СЛАВКО
+ЖИВКОВ СЛАВКО
+ЖИВКОВ ВАСА
+ЖИВКОВИЋ ЧАСЛАВ
+ЖИВКОВИЋ ЖАКЛИНА
+ЖИВКОВИЋ ЖИВКА
+ЖИВКОВИЋ ЖИВОЈИН
+ЖИВКОВИЋ ЂОКА
+ЖИВКОВИЋ ЂОРЂЕ
+ЖИВКОВИЋ ЂОРЂЕ
+ЖИВКОВИЋ АЈКА
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛОЈЗИЈА
+ЖИВКОВИЋ АНЂЕЛКА
+ЖИВКОВИЋ БЛАШКО
+ЖИВКОВИЋ БОГДАН
+ЖИВКОВИЋ БОГДАН
+ЖИВКОВИЋ БОГОЉУБ
+ЖИВКОВИЋ БОГОМИР
+ЖИВКОВИЋ БОГОМИР
+ЖИВКОВИЋ БОРИСЛАВ
+ЖИВКОВИЋ БОРИСЛАВ
+ЖИВКОВИЋ БОРО
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНКА ДР
+ЖИВКОВИЋ БРАНКО
+ЖИВКОВИЋ ДАНИЛО
+ЖИВКОВИЋ ДЕЈАН
+ЖИВКОВИЋ ДИМИТРИЈЕ
+ЖИВКОВИЋ ДИМИТРИЈЕ
+ЖИВКОВИЋ ДОБРОСАВ
+ЖИВКОВИЋ ДРАГАНА
+ЖИВКОВИЋ ДРАГАНА
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГИША ДР
+ЖИВКОВИЋ ДРАГИША
+ЖИВКОВИЋ ДРАГИЋ
+ЖИВКОВИЋ ДРАГОЉУБ
+ЖИВКОВИЋ ДУШАНКА
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШИЦА
+ЖИВКОВИЋ ГАБРИЈЕЛА
+ЖИВКОВИЋ ГАБРИЈЕЛА
+ЖИВКОВИЋ ГОРАН
+ЖИВКОВИЋ ГОРДАНА
+ЖИВКОВИЋ ИЛИЈА
+ЖИВКОВИЋ ИЛИЈА
+ЖИВКОВИЋ ИЛОНКА
+ЖИВКОВИЋ ИВАНКА
+ЖИВКОВИЋ ИВИЦА
+ЖИВКОВИЋ ЈАСМИНА
+ЖИВКОВИЋ ЈЕЛИЦА
+ЖИВКОВИЋ ЈЕЛИЦА
+ЖИВКОВИЋ ЈОВАН
+ЖИВКОВИЋ ЈОВАН
+ЖИВКОВИЋ ЈОВИЦА
+ЖИВКОВИЋ ЈУЛКА
+ЖИВКОВИЋ ЈУЛКА
+ЖИВКОВИЋ ЈУЛКИЦА
+ЖИВКОВИЋ КОСТА
+ЖИВКОВИЋ КРЕШО
+ЖИВКОВИЋ ЛАЗАР
+ЖИВКОВИЋ ЛАЗАР
+ЖИВКОВИЋ ЛЕПОСАВА
+ЖИВКОВИЋ ЉИЉАНА
+ЖИВКОВИЋ ЉУБИЦА
+ЖИВКОВИЋ ЉУБИНКА
+ЖИВКОВИЋ ЉУБОМИР
+ЖИВКОВИЋ ЉУБОМИР
+ЖИВКОВИЋ МАРИЈА
+ЖИВКОВИЋ МИХАЈЛО
+ЖИВКОВИЋ МИЛАНКА
+ЖИВКОВИЋ МИЛАН
+ЖИВКОВИЋ МИЛИЦА
+ЖИВКОВИЋ МИЛИВОЈ
+ЖИВКОВИЋ МИЛКА
+ЖИВКОВИЋ МИЛКА
+ЖИВКОВИЋ МИЛОШ
+ЖИВКОВИЋ МИЛОШ
+ЖИВКОВИЋ МИЛОМИР
+ЖИВКОВИЋ МИЛОРАД
+ЖИВКОВИЋ МИЛОРАД
+ЖИВКОВИЋ МИЛУТИН
+ЖИВКОВИЋ МИОДРАГ
+ЖИВКОВИЋ МИРЧЕТА
+ЖИВКОВИЋ МИРЈАНА
+ЖИВКОВИЋ МИРКО
+ЖИВКОВИЋ МИРОСЛАВ
+ЖИВКОВИЋ МИРОСЛАВ
+ЖИВКОВИЋ МОМЧИЛО
+ЖИВКОВИЋ НЕБОЈША
+ЖИВКОВИЋ НЕБОЈША
+ЖИВКОВИЋ НЕДЕЉКО
+ЖИВКОВИЋ НИКОЛА
+ЖИВКОВИЋ ОБРАД
+ЖИВКОВИЋ ПАВЛЕ
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ РАДЕНКО
+ЖИВКОВИЋ РАДЕ
+ЖИВКОВИЋ РАДИВОЈ
+ЖИВКОВИЋ РАДМИЛА
+ЖИВКОВИЋ РАДМИЛО
+ЖИВКОВИЋ РАДОМИР
+ЖИВКОВИЋ РАДОСЛАВА
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РОСА
+ЖИВКОВИЋ РУЖИЦА
+ЖИВКОВИЋ САША
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ СИНИША
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛОБОДАН ДР
+ЖИВКОВИЋ СЛОБОДАН
+ЖИВКОВИЋ СМИЉКА
+ЖИВКОВИЋ СНЕЖАНА
+ЖИВКОВИЋ СРЕТЕН
+ЖИВКОВИЋ СТАМЕНКО
+ЖИВКОВИЋ СТЕПАН
+ЖИВКОВИЋ СТЕВАН
+ЖИВКОВИЋ СТОЈАНКА
+ЖИВКОВИЋ СТОЈАН
+ЖИВКОВИЋ СТОЈАН
+ЖИВКОВИЋ СВЕТИСЛАВ
+ЖИВКОВИЋ СВЕТЛАНА
+ЖИВКОВИЋ СВЕТОЗАР
+ЖИВКОВИЋ ТАНАСИЈЕ
+ЖИВКОВИЋ ТИНКА
+ЖИВКОВИЋ ТОША
+ЖИВКОВИЋ ТОМИСЛАВ
+ЖИВКОВИЋ ТОМИСЛАВ
+ЖИВКОВИЋ ВЕКОСЛАВ
+ЖИВКОВИЋ ВЕРА
+ЖИВКОВИЋ ВЕРА
+ЖИВКОВИЋ ВИДОЈКО
+ЖИВКОВИЋ ВЛАДАН
+ЖИВКОВИЋ ВЛАДИМИР
+ЖИВКОВИЋ ВЛАСТИМИР
+ЖИВКОВИЋ ВОЈИН
+ЖИВКОВИЋ ВОЈИСЛАВ
+ЖИВКОВИЋ ЗДЕНКА
+ЖИВКОВИЋ ЗДЕНКО
+ЖИВКОВИЋ ЗДРАВКО
+ЖИВКОВИЋ ЗЛАТОМИР
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВЉЕВИЋ ВИДОСАВА
+ЖИВКУЦИН МИРОСЛАВА
+ЖИВКУЦИН СЛОБОДАН
+ЖИВНИ АНА
+ЖИВНИ ФРАЊА
+ЖИВОЈИНОВ БОРИВОЈ
+ЖИВОЈИНОВ ЉУБИЦА
+ЖИВОЈИНОВ МИЛОВАН
+ЖИВОЈИНОВ РАДИВОЈ
+ЖИВОЈИНОВИЋ РОЗАЛИЈА
+ЖИВОЈИНОВИЋ ВЛАДИМИР
+ЖИВОЈНОВ БРАНИСЛАВ
+ЖИВОЈНОВ МИРОСЛАВ
+ЖИВОЈНОВИЋ ЖИВОЈИН
+ЖИВОЈНОВИЋ САЊА
+ЖИВОЈНОВИЋ СРЂАН ДР ЛЕКАР
+ЖИВОЈНОВИЋ ЗОРКА
+ЖИВОТИЋ АНГЕЛИНА
+ЖИВОТИЋ ДУШАН
+ЖИВОТИЋ СТАНИСЛАВ
+ЖИВОТИЋ СТЕВАН
+ЖИВОТИЋ ВЕЛИМИР
+ЖИВОТИН МАРИЦА
+ЖИВОТИН МИТАР
+ЖМУКИЋ БРАНКО
+ЖМУКИЋ ГОРДАНА
+ЖМУКИЋ НИКОЛА
+ЖНИДАРШИЋ ИГНАЦ
+ЖНИДАРЕЦ ИВАН
+ЖНИДАРЕЦ ИВАН
+ЖОЛЦЕР ФЕРЕНЦ
+ЖОЛЦЕР ВИЛМОШ
+ЖОЉОМ КЛАРА
+ЖОЉОМ МИРЈАНА
+ЖОРЖ АЛЕКСАНДАР
+ЖОРИЋ ФИЛИП
+ЖУЖА МИРКО
+ЖУБОРИ МИЛЕНА
+ЖУГИЋ ДРАГОЉУБ
+ЖУГИЋ КРСТО
+ЖУГИЋ МАРИЈА
+ЖУГИЋ МИЛИЈА
+ЖУГИЋ МИЛИСАВ
+ЖУГИЋ МИЛОРАД
+ЖУГИЋ МИРКО
+ЖУГИЋ РАДОЈКА
+ЖУГИЋ РАТКО
+ЖУГИЋ-РИЈАВЕЦ СИЛВИЈА
+ЖУГИЋ СТАНИША
+ЖУГИЋ СТАНКО
+ЖУЈИЋ МОМИР
+ЖУЈИЋ СЛАВКО
+ЖУЈО МАРЈАН
+ЖУМБЕРКОВИЋ ЂОРЂЕ МР
+ЖУНАЦ ЈУЛКА
+ЖУНАЦ ТОМИСЛАВ
+ЖУНГУЛ СМИЉА
+ЖУНИЋ БОШКО
+ЖУНИЋ ДАРКО
+ЖУНИЋ ЈОВИША
+ЖУНИЋ МИЛАН
+ЖУНИЋ МИЛЕНКО
+ЖУНИЋ МИЛИЈАН
+ЖУНИЋ МОМЧИЛО
+ЖУНИЋ НЕНАД
+ЖУНИЋ-ПОПОВ СНЕЖАНА
+ЖУНИЋ РАДА
+ЖУНИЋ СИМА
+ЖУНИЋ СОЊА
+ЖУНИЋ ВЕЛИМИР
+ЖУЊИЋ ДРАГОМИР
+ЖУНТЕР АНТУН ДИПЛ ИНГ
+ЖУНТЕР БОЖАНА
+ЖУПАН ЕДУАРД
+ЖУПАН МИРКО
+ЖУПАНЧИЋ МАРГАРЕТА
+ЖУПАНЕЦ АЛБЕРТ ДР
+ЖУПАНЕЦ КСЕНИЈА
+ЖУПАНЕЦ МИРА
+ЖУПАНЕЦ МИРА
+ЖУПАРИЋ ВИКТОР
+ЖУПИЋ АНТЕ
+ЖУПИЋ ДАНЕ
+ЖУПИЋ ДРАГИЦА
+ЖУПИЋ МИЈО
+ЖУПУНСКИ ЖАРКО
+ЖУПУНСКИ ЖИВОРАД
+ЖУПУНСКИ ГОЈКО
+ЖУПУНСКИ ГРОЗДАНА
+ЖУПУНСКИ ГРУЈИЦА
+ЖУПУНСКИ ХЕЛЕНА
+ЖУПУНСКИ ИВАН
+ЖУПУНСКИ МАРИНКО
+ЖУПУНСКИ СТЕВАН
+ЖУПУНСКИ ВЕСЕЛИНКА
+ЖУРЖЕВИЋ ЦВЕТКО
+ЖУРЖИНОВИЋ КОСТА
+ЖУРЖОВАН ЛИА
+ЖУРЖОВАН НЕЛУ
+ЖУРЖОВАН ТРАНДАФИР
+ЖУРЖУЛ БОШКО
+ЖУРЖУЛ СТАНОЈЕ
+ЖУРИЋ МИХАИЛО
+ЖУРИЋ ВАСО
+ЖУРКА АУРОРА
+ЖУТИЋ МИЛКА
+ЖУТИЋ ПЕТАР
+ЖУТИЋ СТЕВО
+ЂАЧАНИН РАДОВАН
+ЂАЧИЋ ВЛАДИМИР
+ЂАИЋ МИРОСЛАВ
+ЂАЈИЋ ЖАРКО
+ЂАЈИЋ ЖЕЉКО
+ЂАЈИЋ АЛЕКСАНДРА
+ЂАЈИЋ БОГДАН
+ЂАЈИЋ ЈЕЛЕНКО
+ЂАЈИЋ-ЈОВАНОВИЋ РАЈКА
+ЂАЈИЋ МИЛОРАД
+ЂАЈИЋ НАДА
+ЂАЈИЋ НЕВЕНА
+ЂАЈИЋ НИКОЛА
+ЂАЈИЋ ВЕЉКО
+ЂАЈИЋ ВЛАДИСЛАВА
+ЂАКОНОВ МИЛКА
+ЂАКОНОВ СТЕВАН
+ЂАКОНОВИЋ МИЛОВАН
+ЂАКОНОВИЋ СЛАВИЦА
+ЂАКОНОВИЋ СТЕВАН
+ЂАКОВ ЉИЉАНА
+ЂАКОВ МИХАЈЛО
+ЂАКОВ МИЛАН
+ЂАКОВИЋ ЖИВКА
+ЂАКОВИЋ ЂОРЂЕ ДР
+ЂАКОВИЋ ЂОРЂЕ
+ЂАКОВИЋ ЂОРЂЕ
+ЂАКОВИЋ ЂУРА
+ЂАКОВИЋ ЂУРО
+ЂАКОВИЋ ЂУРО
+ЂАКОВИЋ АНКА
+ЂАКОВИЋ ДАРА
+ЂАКОВИЋ ДРАГАН
+ЂАКОВИЋ ДРАГАН
+ЂАКОВИЋ ДРАГОЉУБ ДР
+ЂАКОВИЋ ДРАГОЉУБ
+ЂАКОВИЋ ДУШАН
+ЂАКОВИЋ ИЛЕ
+ЂАКОВИЋ ИЛИЈА
+ЂАКОВИЋ ЈОКА
+ЂАКОВИЋ ЈОВАНКА
+ЂАКОВИЋ ЈОВАН
+ЂАКОВИЋ ЈОВИЦА
+ЂАКОВИЋ ЈОВО
+ЂАКОВИЋ ЉУБОМИР ДР ИНГ
+ЂАКОВИЋ ЉУБОМИР
+ЂАКОВИЋ МАРИЈА
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛКА
+ЂАКОВИЋ МИРЈАНА
+ЂАКОВИЋ МИРЈАНА
+ЂАКОВИЋ НЕЂО
+ЂАКОВИЋ НЕДЕЉКО
+ЂАКОВИЋ НИКОЛА
+ЂАКОВИЋ ОСТОЈА
+ЂАКОВИЋ ПЕРСИДА
+ЂАКОВИЋ ПЕТАР
+ЂАКОВИЋ ПРЕДРАГ
+ЂАКОВИЋ ПРЕДРАГ
+ЂАКОВИЋ РАДОМИР
+ЂАКОВИЋ РАДОСАВ
+ЂАКОВИЋ РАНКО
+ЂАКОВИЋ САВА
+ЂАКОВИЋ СЛАВИЦА
+ЂАКОВИЋ СЛАВОЉУБ
+ЂАКОВИЋ СЛОБОДАН
+ЂАКОВИЋ СТЕВАН
+ЂАКОВИЋ СТЕВАН
+ЂАКОВИЋ СТОЈАН
+ЂАКОВИЋ ТАТЈАНА
+ЂАКОВИЋ ВАСО
+ЂАКОВИЋ ВЛАДИМИР
+ЂАКОВИЋ ВОЈО
+ЂАКОВИЋ ВУКОСАВА
+ЂАКОВИЋ ЗОРАН
+ЂАЛАИ ЛАЈОШ
+ЂАЛИНАЦ ГОРДАНА
+ЂАЛИНАЦ РАДИВОЈ
+ЂАЛО МИРКО
+ЂАЛОВИЋ РАДОСЛАВ
+ЂАЛУШ СТЕВАН
+ЂАН ЈОВАН
+ЂАНИШ ЛАЗАР
+ЂАНИШ ОЛИВЕРА
+ЂАНИЋ МАТО
+ЂАНКОВИЋ МИЛОШ
+ЂАНТАР АНЂЕЛИЈА
+ЂАНТАР ЈОЖЕФ
+ЂАПА АЛЕКСАНДАР
+ЂАПА ДУШАН
+ЂАПА МАРКО
+ЂАПА ПЕТАР
+ЂАПИЋ ДАВИД
+ЂАПИЋ КРСТА
+ЂАПИЋ МИЛЕСА
+ЂАПИЋ МИЛЕСА
+ЂАПИЋ-МИЛИЋ ТАТЈАНА ЛЕКАР
+ЂАПИЋ ПАВЛЕ
+ЂАРМАТИ ФРАЊА
+ЂАРМАТИ ГИЗЕЛА
+ЂАРМАТИ ИЛОНА
+ЂАРМАТИ ЈУЛИО
+ЂАРМАТИ ЛАСЛО
+ЂАРМАТИ МИХАЈЛО
+ЂАРМАТИ СНЕЖАНА
+ЂАТКОВ РАДА
+ЂЕБНАР ОБРАД
+ЂЕКЕР РОЗАЛИЈА
+ЂЕКИЋ ЖИВОЈИН
+ЂЕКИЋ КАТИЦА
+ЂЕКИЋ МИЛАН
+ЂЕКИЋ МИЛЕНА
+ЂЕКИЋ МИЛОМИР
+ЂЕКИЋ НАДА
+ЂЕКИЋ НЕДЕЉКО
+ЂЕКИЋ ПАВЛЕ
+ЂЕКИЋ РАДЕ
+ЂЕКИЋ РАДМИЛА
+ЂЕКИЋ СТАНА
+ЂЕКИЋ СТОЈАНКА
+ЂЕЛИЋ УРОШ
+ЂЕМБЕР ИШТВАН
+ЂЕМРОВСКИ ТОМАШ
+ЂЕМРОВСКИ ВЛАТКО
+ЂЕМРОВСКИ ЗДЕНКО
+ЂЕНАДИЋ ДРАГИША
+ЂЕНАДИЈА ПЕТАР
+ЂЕНДИЋ ЈОВАН ДИПЛ ИНГ
+ЂЕНДИЋ ЛАЗАР
+ЂЕНЕШ ПЕТАР
+ЂЕНГЕ АНДРАШ
+ЂЕНГЕ АНДРИЈА
+ЂЕНГЕ ПЕТЕР
+ЂЕНИЋ ЈЕЛЕНА
+ЂЕНИЋ СЛОБОДАН
+ЂЕНИЋ СЛОБОДАН
+ЂЕНИЋ ЗОРИЦА
+ЂЕНИСИЋ СТАНИМИР
+ЂЕРЂ ЂУРА
+ЂЕРЂ АНТУН
+ЂЕРЂ ИГОР
+ЂЕРЂ ЈОСИП
+ЂЕРЂ КАТАРИНА
+ЂЕРЂ ЉУБИЦА
+ЂЕРЂ ПЕТАР
+ЂЕРЂ ВИЛМОШ
+ЂЕРЕ КОРНЕЛ
+ЂЕРЕ ЗОЛТАН
+ЂЕРФИ АЛЕКСАНДАР
+ЂЕРИ ШАНДОР
+ЂЕРИ ЕНДРЕ
+ЂЕРИ ЕРЖЕБЕТ
+ЂЕРИ ГЕЗА
+ЂЕРИ КАРОЉ
+ЂЕРИ ЛАДИСЛАВ
+ЂЕРИ ЛАСЛО
+ЂЕРИ САБОЛЧ
+ЂЕРИ САЛОМЕ
+ЂЕРИЋ ЖИВАН
+ЂЕРИЋ ЂОРЂЕ
+ЂЕРИЋ ЂУРА
+ЂЕРИЋ БРАНКО
+ЂЕРИЋ ДАНИЦА
+ЂЕРИЋ ДЕСАНКА
+ЂЕРИЋ ДИМИТРИЈЕ
+ЂЕРИЋ ДОБРИНКО
+ЂЕРИЋ ДРАГАН
+ЂЕРИЋ ФЕЛИКС
+ЂЕРИЋ ЈАРОСЛАВ
+ЂЕРИЋ ЈОВАН
+ЂЕРИЋ ЈОВАН
+ЂЕРИЋ ЈУЛКА
+ЂЕРИЋ МИЦА
+ЂЕРИЋ МИХАЈЛО
+ЂЕРИЋ МИЛАН
+ЂЕРИЋ МИЛЕНКО
+ЂЕРИЋ МИЛЕ
+ЂЕРИЋ МИЛИВОЈЕ
+ЂЕРИЋ МИЛОШ
+ЂЕРИЋ МИОДРАГ
+ЂЕРИЋ МИРЈАНА
+ЂЕРИЋ НАДА
+ЂЕРИЋ ОЛГА
+ЂЕРИЋ ОЛИВЕРА
+ЂЕРИЋ ПЕТАР
+ЂЕРИЋ РАДЕ
+ЂЕРИЋ РАДИВОЈ
+ЂЕРИЋ РАДОМИР
+ЂЕРИЋ РАДОСЛАВ
+ЂЕРИЋ РАДОВАН
+ЂЕРИЋ СЛАВКО
+ЂЕРИЋ СТАНИСЛАВ
+ЂЕРИЋ ВЕЉКО
+ЂЕРИЋ ВОЈИН
+ЂЕРКИ ВЕРА
+ЂЕРКОВИЋ МИРЧЕТА
+ЂЕРКОВИЋ РАДОЈКА
+ЂЕРКОВИЋ ВЛАДЕТА
+ЂЕРМАН ЖИВКО
+ЂЕРМАН НЕДЕЉКО
+ЂЕРМАНОВ ИВАН
+ЂЕРМАНОВ ЉУБОМИР
+ЂЕРМАНОВ МИЛАН
+ЂЕРМАНОВ МИЛЕНА
+ЂЕРМАНОВ НАДЕЖДА
+ЂЕРМАНОВ ОЛГА
+ЂЕРМАНОВ ПЕТАР
+ЂЕРМАНОВ ТОДОР
+ЂЕРМАНОВ ВЛАДА
+ЂЕРМАНОВИЋ ЈЕЛИЦА
+ЂЕРМАНОВИЋ МАРИЈА
+ЂЕРМАНОВИЋ МИЛОДАНКА
+ЂЕРМАНОВИЋ СЛАВКО
+ЂЕРМАНОВИЋ СТАНКО
+ЂЕРМАТИ ИРЕНА
+ЂЕТКА ЈАНО
+ЂЕТКА МИХАЛ
+ЂЕТКА МИХАЛ
+ЂЕТКА МИРКО
+ЂЕТВАИ АНДРАШ ДИПЛ ИНГ
+ЂЕТВАИ АНДРАШ
+ЂЕТВАИ АНИЦА
+ЂЕТВАИ ФЕРЕНЦ
+ЂЕТВАИ ИМРЕ
+ЂЕТВАИ ЛАЈОШ
+ЂЕВЕКИ ЈОВАН
+ЂИДИЋ МАРИЈА
+ЂИДИЋ МАРИНКО
+ЂИКИЋ СТОЈАН
+ЂИКИЋ ВИКТОРИЈА
+ЂИЛАС БОРО
+ЂИЛАС ДРАГАН
+ЂИЛАС ДУШАН
+ЂИЛАС ГРОЗДАНА
+ЂИЛАС МАРИНКО
+ЂИЛАС МИЛОРАД
+ЂИЛАС МИЛОРАД
+ЂИЛАС МИЛОРАД
+ЂИЛАС НИКОЛА
+ЂИЛАС СТЕВАН
+ЂИЛВЕСИ ШАНДОР
+ЂИЛВЕСИ КАРЛО
+ЂИН ЂУРА
+ЂИН ЈУЛИЈАНА
+ЂИНЂИЋ МИЛОЈКО
+ЂИНИЋ ИВИЦА
+ЂИНИЋ НИКОЛА
+ЂИНИЋ СЛАВКА
+ЂИНИЋ СОФИЈА
+ЂИНИЋ ВЛАДЕТА
+ЂИНИЋ ЗОРАН
+ЂИЊА АНДРЕЈ
+ЂИНОВИЋ ЦВЕТКО
+ЂИНОВИЋ ИВКО
+ЂИНОВИЋ КОЛЕ
+ЂИПАЛО ЂУРО
+ЂИПАЛО ГОЈКО
+ЂИПАЛО МИЛАН
+ЂИПАЛО МИРКО
+ЂИПАЛО МИРОСЛАВ
+ЂИПАЛО РАДЕ
+ЂИПАНОВ ИДА
+ЂИПАНОВ НИКОЛА
+ЂИПАНОВ РЕЉА
+ЂИПАНОВ СВЕТОЗАР
+ЂИРИШИ ИШТВАН
+ЂИРЛИЋ СТЕВАН
+ЂИСАЛОВ БРАНИСЛАВ
+ЂИСАЛОВ ЈЕЛЕНА
+ЂИСАЛОВ ЈЕЛЕНА
+ЂИСАЛОВ ЛАЗАР
+ЂИСАЛОВ ЉУБИНКА
+ЂИСАЛОВ МИЛАН
+ЂИСАЛОВ МИЛАН
+ЂИСАЛОВ МИЛИВОЈ
+ЂИСАЛОВ МИЛИВОЈ
+ЂИСАЛОВ МИОДРАГ
+ЂИСАЛОВ МИОДРАГ
+ЂИСАЛОВ НАДА
+ЂИСАЛОВ СОЊА
+ЂИСАЛОВИЋ КАТИЦА
+ЂИТКОВ ЈОВАН
+ЂИТКОВ СОФИЈА
+ЂЈАК ЖИВКО
+ЂОЂИЋ МИЛОРАД
+ЂОГО МИЛОВАН
+ЂОГО МИРЈАНА
+ЂОГО РУЖИЦА
+ЂОГО ЗОРАН
+ЂОГОВИЋ МИЛОРАД
+ЂОГОВИЋ РАДИВОЈКА
+ЂОКИЋ АЛЕКСАНДАР
+ЂОКИЋ БОШКО
+ЂОКИЋ БОРИВОЈЕ
+ЂОКИЋ БРАТИСЛАВ
+ЂОКИЋ ЦВЕТКО
+ЂОКИЋ ДАРИНКА
+ЂОКИЋ ДРАГАН
+ЂОКИЋ ДРАГИША
+ЂОКИЋ ДРАГОЉУБ
+ЂОКИЋ ДРАГО
+ЂОКИЋ ГОРАН
+ЂОКИЋ ИВАН
+ЂОКИЋ ЈЕЛИСАВА
+ЂОКИЋ ЈОРДАН
+ЂОКИЋ ЉУБИНКО
+ЂОКИЋ ЉУБО
+ЂОКИЋ ЛУКА
+ЂОКИЋ МАРИНКО
+ЂОКИЋ МАТИЛДА
+ЂОКИЋ МИХАЈЛО
+ЂОКИЋ МИЛАН
+ЂОКИЋ МИЛАН
+ЂОКИЋ МИЛИСАВ
+ЂОКИЋ МИЛИВОЈЕ
+ЂОКИЋ МИЛОВАН
+ЂОКИЋ МИЛУТИН
+ЂОКИЋ ПАНТЕЛИЈА
+ЂОКИЋ ПЕТАР
+ЂОКИЋ РАДИСАВ
+ЂОКИЋ РАДОВАН
+ЂОКИЋ РАТКО
+ЂОКИЋ РУЖА
+ЂОКИЋ СЛОБОДАНКА
+ЂОКИЋ СЛОБОДАН
+ЂОКИЋ СОФИЈА
+ЂОКИЋ СТАНИША
+ЂОКИЋ СВЕТИСЛАВ
+ЂОКИЋ ВЕРА
+ЂОКИЋ ВЛАДИСЛАВ
+ЂОКИЋ ВОЈИСЛАВ
+ЂОКИЋ ВУЈАДИН
+ЂОКИЋ ВУКАДИН
+ЂОКИЋ ЗОРАН
+ЂОКОВИЋ ДРАГОМИР
+ЂОКОВИЋ МАРКО
+ЂОКОВИЋ МИЛАН
+ЂОКОВИЋ МИЛОВАН
+ЂОКОВИЋ ПЕТАР
+ЂОКОВИЋ РАДОМИР
+ЂОКОВИЋ РАДОВАН
+ЂОКОВИЋ СТОЈАН
+ЂОКВУЧИЋ НАДА
+ЂОЛАИ ИМРЕ
+ЂОЛАИ МАТИЛДА
+ЂОЉЕВИЋ ЂОКА
+ЂОЛОВИЋ ЧЕДОМИР
+ЂОМПАРИЋ ДУШАН
+ЂОМПАРИЋ ИЛИЈА
+ЂОМПАРИЋ МЕЛАНИЈА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ ВЛАДИСЛАВА
+ЂОНОВИЋ ЂОРЂИЈЕ
+ЂОНОВИЋ КАРОЛИНА
+ЂОНОВИЋ ЗАРИЈА
+ЂОРЂЕВИЋ ЧЕДОМИР
+ЂОРЂЕВИЋ ЖИВКО
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОРАД
+ЂОРЂЕВИЋ ЖИВОРАД
+ЂОРЂЕВИЋ ЖИВОТА
+ЂОРЂЕВИЋ ЂОКА
+ЂОРЂЕВИЋ ЂОРЂЕ
+ЂОРЂЕВИЋ ЂОРЂЕ
+ЂОРЂЕВИЋ ЂУРА
+ЂОРЂЕВИЋ АЦА
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДРА
+ЂОРЂЕВИЋ БОГДАН
+ЂОРЂЕВИЋ БОРА
+ЂОРЂЕВИЋ БОРИСАВ
+ЂОРЂЕВИЋ БОРИВОЈЕ
+ЂОРЂЕВИЋ БРАНИМИР
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНКО
+ЂОРЂЕВИЋ БУДИМИР
+ЂОРЂЕВИЋ БУДИМИР
+ЂОРЂЕВИЋ ДАРКО
+ЂОРЂЕВИЋ ДЕСАНКА
+ЂОРЂЕВИЋ ДЕСПОТ
+ЂОРЂЕВИЋ ДИМИТРИЈЕ
+ЂОРЂЕВИЋ ДОБРИВОЈЕ
+ЂОРЂЕВИЋ ДРАЖА
+ЂОРЂЕВИЋ ДРАГАНА
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГА
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГОЉУБ ДР
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОСЛАВ
+ЂОРЂЕВИЋ ДРАГУТИН
+ЂОРЂЕВИЋ ДУШАНКА
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ЕРНЕСТ
+ЂОРЂЕВИЋ ЕВИЦА
+ЂОРЂЕВИЋ ФАТИМА
+ЂОРЂЕВИЋ ГИЗЕЛА
+ЂОРЂЕВИЋ ГОРА
+ЂОРЂЕВИЋ ГОРДАНА
+ЂОРЂЕВИЋ ГРАДИМИР
+ЂОРЂЕВИЋ ГРАДИМИР
+ЂОРЂЕВИЋ ХРАНИСЛАВ
+ЂОРЂЕВИЋ ИЛИНКА
+ЂОРЂЕВИЋ ИЛОНА
+ЂОРЂЕВИЋ ИВАНА
+ЂОРЂЕВИЋ ИВАН
+ЂОРЂЕВИЋ ЈАГОДА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВИЦА
+ЂОРЂЕВИЋ ЈУЛКИЦА
+ЂОРЂЕВИЋ ЈУЛКИЦА
+ЂОРЂЕВИЋ КАТАРИНА
+ЂОРЂЕВИЋ КОНСТАНДИНА
+ЂОРЂЕВИЋ КОСТА
+ЂОРЂЕВИЋ ЛАЗАР
+ЂОРЂЕВИЋ ЛАЗАР
+ЂОРЂЕВИЋ ЉИЉАНА
+ЂОРЂЕВИЋ ЉУБА ДИПЛ ИНГ
+ЂОРЂЕВИЋ ЉУБИША
+ЂОРЂЕВИЋ ЉУБИША
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИНКА
+ЂОРЂЕВИЋ ЉУБИСАВ
+ЂОРЂЕВИЋ ЉУБОМИР
+ЂОРЂЕВИЋ ЉУБОМИР
+ЂОРЂЕВИЋ МАРИЈА
+ЂОРЂЕВИЋ МАРИЈА
+ЂОРЂЕВИЋ МИЛАНКА
+ЂОРЂЕВИЋ МИЛАНКА
+ЂОРЂЕВИЋ МИЛАН
+ЂОРЂЕВИЋ МИЛАН
+ЂОРЂЕВИЋ МИЛЕНА
+ЂОРЂЕВИЋ МИЛЕНКО
+ЂОРЂЕВИЋ МИЛЕНКО
+ЂОРЂЕВИЋ МИЛИЈА
+ЂОРЂЕВИЋ МИЛОШ ДР
+ЂОРЂЕВИЋ МИЛОШ
+ЂОРЂЕВИЋ МИЛОРАД
+ЂОРЂЕВИЋ МИЛОРАД
+ЂОРЂЕВИЋ МИЛОСАВ
+ЂОРЂЕВИЋ МИЛОВАН
+ЂОРЂЕВИЋ МИЛОВАН
+ЂОРЂЕВИЋ МИЛУТИН
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИРЈАНА
+ЂОРЂЕВИЋ МИРЈАНА
+ЂОРЂЕВИЋ МИРКО
+ЂОРЂЕВИЋ МИРКО
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МЛАДЕН
+ЂОРЂЕВИЋ НАДА
+ЂОРЂЕВИЋ НАДА
+ЂОРЂЕВИЋ НЕДЕЉКО ДР
+ЂОРЂЕВИЋ НЕВЕНКА
+ЂОРЂЕВИЋ НИКОЛА
+ЂОРЂЕВИЋ ПАЈА
+ЂОРЂЕВИЋ ПАНТА
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПЕТАР
+ЂОРЂЕВИЋ РАДОМИР
+ЂОРЂЕВИЋ РАДОМИР
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАЈКА
+ЂОРЂЕВИЋ РАНЂЕЛ
+ЂОРЂЕВИЋ САША
+ЂОРЂЕВИЋ САВА
+ЂОРЂЕВИЋ СИНИША
+ЂОРЂЕВИЋ СЛАЂАНА
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СНЕЖАНА
+ЂОРЂЕВИЋ СОФИЈА
+ЂОРЂЕВИЋ СОФИЈА
+ЂОРЂЕВИЋ СРЂАН
+ЂОРЂЕВИЋ СРЂАН
+ЂОРЂЕВИЋ СРЕТЕН
+ЂОРЂЕВИЋ СТАНА
+ЂОРЂЕВИЋ СТАНИСЛАВ
+ЂОРЂЕВИЋ СТАНКА
+ЂОРЂЕВИЋ СТЕВАНА
+ЂОРЂЕВИЋ СТЕВАН
+ЂОРЂЕВИЋ СТЕВАН
+ЂОРЂЕВИЋ СВЕТИСЛАВ
+ЂОРЂЕВИЋ СВЕТИСЛАВ
+ЂОРЂЕВИЋ СВЕТОЗАР
+ЂОРЂЕВИЋ ТИОСАВ
+ЂОРЂЕВИЋ ТОМИСЛАВ
+ЂОРЂЕВИЋ ТОМИСЛАВ
+ЂОРЂЕВИЋ ВЕЛИСАВ
+ЂОРЂЕВИЋ ВЕЛИЗАР
+ЂОРЂЕВИЋ ВЕРА
+ЂОРЂЕВИЋ ВЕРА
+ЂОРЂЕВИЋ ВИДОСАВА
+ЂОРЂЕВИЋ ВЛАДИМИР
+ЂОРЂЕВИЋ ВЛАЈКО
+ЂОРЂЕВИЋ ВЛАСТИМИР
+ЂОРЂЕВИЋ ВЛАСТИМИР
+ЂОРЂЕВИЋ ВОЈИН
+ЂОРЂЕВИЋ ВУЧКО
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂИЋ БРАНКО
+ЂОРЂИЋ МАРКО
+ЂОРЂИЋ МИЛАН
+ЂОРЂИЈЕВСКИ ДРАГАН
+ЂОРЂИЈЕВСКИ ДУШАН
+ЂОРЂИЈЕВСКИ ЗОРАН
+ЂОРЂИН ФЕМКА
+ЂОРЂИН РАДЕ
+ЂОРЂИН САВА
+ЂОРЂИОСКИ КИРО
+ЂОРЕВСКИ ГОРАН
+ЂОРГИЕВА ЈЕЛИЦА
+ЂОРИЋ АНТОНИЈЕ
+ЂОРИЋ ГОРДАНА
+ЂОРИЋ ЉУБИСАВ
+ЂОРИЋ МИЛИВОЈЕ
+ЂОРИЋ МИОДРАГ
+ЂОРИЋ ВЕРИЦА
+ЂОРОЈЕВИЋ ВУКОТА
+ЂОТЕВА ТРАЈАНКА
+ЂОТУНОВИЋ АНЂЕЛИЈА
+ЂОЗИЋ ШУКРИЈА
+ЂУЂАР МЕЛАНИЈА
+ЂУЂАР ВЛАДА
+ЂУЂАР ВЛАДИМИР
+ЂУЂАР ЗВОНИМИР
+ЂУЂИЋ ДРАГАН
+ЂУДУРОВИЋ ДУШАН
+ЂУГА ПАВЕЛ
+ЂУКАНОВ БОРИВОЈ
+ЂУКАНОВ ЕМИЛИЈАН
+ЂУКАНОВ МИЛАН
+ЂУКАНОВ НАДА
+ЂУКАНОВ СЛОБОДАН
+ЂУКАНОВИЋ АЛЕКСАНДАР
+ЂУКАНОВИЋ БРАНКО
+ЂУКАНОВИЋ ИВО
+ЂУКАНОВИЋ ЉУБИЦА
+ЂУКАНОВИЋ МАРА
+ЂУКАНОВИЋ МИЛАН
+ЂУКАНОВИЋ МИРОЉУБ
+ЂУКАНОВИЋ НАДА
+ЂУКАНОВИЋ НАДА
+ЂУКАНОВИЋ ПУНИША
+ЂУКАНОВИЋ СРЕТЕН
+ЂУКАНОВИЋ СТАКА
+ЂУКАНОВИЋ ВЛАДИМИР
+ЂУКАНОВИЋ ЗОРА
+ЂУКИЧИН ЈОВАНКА
+ЂУКИЧИН МАРИЈА
+ЂУКИЧИН СРЕДОЈЕ
+ЂУКИЧИН СРЕДОЈЕ
+ЂУКИЋ-ШАБИЋ ГОРДАНА
+ЂУКИЋ ЖАРКА
+ЂУКИЋ ЖАРКО
+ЂУКИЋ ЖЕЉКО
+ЂУКИЋ ЖИВОТА
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂУР0
+ЂУКИЋ ЂУРА
+ЂУКИЋ ЂУРО
+ЂУКИЋ АГНИЦА
+ЂУКИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЂУКИЋ АНА
+ЂУКИЋ АНА
+ЂУКИЋ АНДРИЈА
+ЂУКИЋ АНИЦА
+ЂУКИЋ БИЉАНА
+ЂУКИЋ БОРИСЛАВ
+ЂУКИЋ БРАНИСЛАВ
+ЂУКИЋ БРАНИСЛАВ
+ЂУКИЋ БРАНКО
+ЂУКИЋ ДАНИЦА ДР
+ЂУКИЋ ДАНИЛО
+ЂУКИЋ ДИЈАНА
+ЂУКИЋ ДИМИТРИЈЕ
+ЂУКИЋ ДОБРИЛА
+ЂУКИЋ ДОБРИВОЈ
+ЂУКИЋ ДРАГАН
+ЂУКИЋ ДРАГАН
+ЂУКИЋ ДРАГОЈЛО
+ЂУКИЋ ДРАГОМИР
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ГЕНА
+ЂУКИЋ ГЕНО
+ЂУКИЋ ГИЗЕЛА
+ЂУКИЋ ГОРДАНА
+ЂУКИЋ ИЛИЈА
+ЂУКИЋ ИЛИЈА
+ЂУКИЋ ИВАН ДИПЛ ИНГ
+ЂУКИЋ ИВАНКА
+ЂУКИЋ ЈАША
+ЂУКИЋ ЈЕЛЕНА
+ЂУКИЋ ЈОВАН
+ЂУКИЋ ЈОВИЦА
+ЂУКИЋ ЈУЛКА
+ЂУКИЋ ЛЕО
+ЂУКИЋ ЉИЉАНА
+ЂУКИЋ ЉУБИЦА
+ЂУКИЋ ЉУБОМИР
+ЂУКИЋ ЉУБОМИР
+ЂУКИЋ МАКСИМ
+ЂУКИЋ МАРА
+ЂУКИЋ МАРИЈА
+ЂУКИЋ МАРИНА
+ЂУКИЋ МИЈОДРАГ
+ЂУКИЋ МИЛАНКА
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛЕНКО
+ЂУКИЋ МИЛЕВА
+ЂУКИЋ МИЛЕ
+ЂУКИЋ МИЛЕ
+ЂУКИЋ МИЛИЦА
+ЂУКИЋ МИЛИЦА
+ЂУКИЋ МИЉКО
+ЂУКИЋ МИЛКА
+ЂУКИЋ МИЛОШ
+ЂУКИЋ МИЛОШ
+ЂУКИЋ МИЛОРАД
+ЂУКИЋ МИЛОВАН
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ НЕЂО
+ЂУКИЋ НЕДЕЉКО
+ЂУКИЋ НИКОЛА
+ЂУКИЋ НИКОЛА
+ЂУКИЋ НОВАК
+ЂУКИЋ НОВАК
+ЂУКИЋ НОВАК
+ЂУКИЋ ОСТОЈА
+ЂУКИЋ ПАНЕ
+ЂУКИЋ ПАВЛЕ
+ЂУКИЋ ПЕРИША
+ЂУКИЋ ПЕТАР
+ЂУКИЋ ПЕТАР
+ЂУКИЋ РАДЕ
+ЂУКИЋ РАДИВОЈ
+ЂУКИЋ РАДОЈИЦА
+ЂУКИЋ РАДОВАН
+ЂУКИЋ РАЈКО
+ЂУКИЋ РОСА
+ЂУКИЋ РУЖИЦА ЛОКАЛ
+ЂУКИЋ САВА
+ЂУКИЋ САВКА
+ЂУКИЋ САВО ДР
+ЂУКИЋ СЛАВИЦА
+ЂУКИЋ СЛАВКО
+ЂУКИЋ СЛАВОЉУБ
+ЂУКИЋ СЛОБОДАН
+ЂУКИЋ СРЂАН
+ЂУКИЋ СРБОЉУБ
+ЂУКИЋ СТАНА
+ЂУКИЋ СТАНКО
+ЂУКИЋ СТАНКО
+ЂУКИЋ СТЕВАН
+ЂУКИЋ СТОЈАНКА
+ЂУКИЋ СТОЈАН
+ЂУКИЋ СВЕТЛАНА
+ЂУКИЋ СВЕТЛАНА
+ЂУКИЋ ТОМИСЛАВ
+ЂУКИЋ ТОМИСЛАВ
+ЂУКИЋ ВАЛЕРИЈА
+ЂУКИЋ ВЕЛЕМИР
+ЂУКИЋ ВЕРИЦА
+ЂУКИЋ ВЕРОНИКА
+ЂУКИЋ ВИДАК
+ЂУКИЋ ВИДА
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАЈКО
+ЂУКИЋ ВОЈИН
+ЂУКИЋ ВОЈИСЛАВ
+ЂУКИЋ ВУКАН
+ЂУКИЋ ЗОРАН
+ЂУКИН ДУШАН
+ЂУКИН СТЕВАН
+ЂУКНИЋ СРЕТЕН
+ЂУЛА КАРЛО
+ЂУЛИНАЦ ЈЕЛИЦА
+ЂУЛИНАЦ ВЕСЕЛИН
+ЂУЛИЗИБАРИЋ-ОРЕШКОВИЋ ДАНИЦА
+ЂУЛВЕЗАН КОСА
+ЂУЛВЕЗАН МИЛОШ
+ЂУЛВЕЗАН РОЗАЛИЈА
+ЂУМИЋ БОГДАН
+ЂУМИЋ ДУШАН
+ЂУМИЋ ГОСПАВА
+ЂУМИЋ ИЛИЈА
+ЂУМИЋ МАРИЈА
+ЂУМИЋ МИЛЕНКО
+ЂУМИЋ СЛАВКО
+ЂУМИЋ СТАНКО
+ЂУМИЋ УРОШ
+ЂУНДИЋ МАРИНКО
+ЂУРЧЕК МИЛЕНКО
+ЂУРЧЕВИЋ КСЕНИЈА
+ЂУРЧИАНСКИ МИРОСЛАВ
+ЂУРЧИАНСКИ ПАВЛЕ
+ЂУРЧИК ЈОСИП
+ЂУРЧЈАНСКИ МИРОСЛАВ
+ЂУРЧОК МИЛИНА
+ЂУРЂЕВ ЖАРКО
+ЂУРЂЕВ ЂОРЂЕ
+ЂУРЂЕВ АЛЕКСАНДАР
+ЂУРЂЕВ АЛЕКСАНДАР
+ЂУРЂЕВ БОЖИДАР
+ЂУРЂЕВ БРАНИСЛАВ
+ЂУРЂЕВ ДИМИТРИЈЕ
+ЂУРЂЕВ ДОБРИЛА
+ЂУРЂЕВ ДРАГОЉУБ
+ЂУРЂЕВ ДУШАН
+ЂУРЂЕВ ДУШАН
+ЂУРЂЕВ КАЋА
+ЂУРЂЕВ КАТА
+ЂУРЂЕВ ЉУБИША
+ЂУРЂЕВ МАРИЈА
+ЂУРЂЕВ МАРИЈА
+ЂУРЂЕВ МИЛЕТА
+ЂУРЂЕВ МЛАДЕН
+ЂУРЂЕВ НАДЕЖДА
+ЂУРЂЕВ НЕВЕНКА
+ЂУРЂЕВ НОВАК
+ЂУРЂЕВ ОБРАД
+ЂУРЂЕВ ПАВА
+ЂУРЂЕВ ПРВОСЛАВ
+ЂУРЂЕВ САВИЦА
+ЂУРЂЕВ СЛАВКО
+ЂУРЂЕВ СТЕВАН
+ЂУРЂЕВ ТОДОР
+ЂУРЂЕВ ВАСА
+ЂУРЂЕВ ВЕРА
+ЂУРЂЕВ ЗОРКА
+ЂУРЂЕВАЦ ДРАГОЉУБ
+ЂУРЂЕВИЋ ЖЕЉКО
+ЂУРЂЕВИЋ ЖИВАН
+ЂУРЂЕВИЋ ЖИВКО
+ЂУРЂЕВИЋ ЖИВКО
+ЂУРЂЕВИЋ ЂОРЂЕ
+ЂУРЂЕВИЋ ЂУРЂИЦА ДИПЛ ИНГ
+ЂУРЂЕВИЋ АНЂЕЛКО
+ЂУРЂЕВИЋ БОГДАН
+ЂУРЂЕВИЋ БРАНКО
+ЂУРЂЕВИЋ БРАНКО
+ЂУРЂЕВИЋ БУДИМИР
+ЂУРЂЕВИЋ ДРАГУТИН
+ЂУРЂЕВИЋ ДУШАН
+ЂУРЂЕВИЋ ДУШАН
+ЂУРЂЕВИЋ ДУШИЦА
+ЂУРЂЕВИЋ ГОРДАНА
+ЂУРЂЕВИЋ ЈАКОВ
+ЂУРЂЕВИЋ ЈЕЛЕНА
+ЂУРЂЕВИЋ ЈЕЛЕНА
+ЂУРЂЕВИЋ ЈЕЛИЦА
+ЂУРЂЕВИЋ ЈОВАНКА
+ЂУРЂЕВИЋ ЈОВАН
+ЂУРЂЕВИЋ ЈУЛКА
+ЂУРЂЕВИЋ ЛАЗАР
+ЂУРЂЕВИЋ ЛАЗО
+ЂУРЂЕВИЋ ЉУБОМИР
+ЂУРЂЕВИЋ МАНОЈЛО
+ЂУРЂЕВИЋ МАРИЈА
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛЕНКО
+ЂУРЂЕВИЋ МИЛИЦА
+ЂУРЂЕВИЋ МИЛИВОЈ
+ЂУРЂЕВИЋ МИЛОРАД
+ЂУРЂЕВИЋ МИЛОРАД
+ЂУРЂЕВИЋ МИРЈАНА
+ЂУРЂЕВИЋ МИРЈАНА
+ЂУРЂЕВИЋ МОМЧИЛО
+ЂУРЂЕВИЋ НЕДЕЉКО
+ЂУРЂЕВИЋ НИКОЛА
+ЂУРЂЕВИЋ РАДИНКА
+ЂУРЂЕВИЋ РАНКО
+ЂУРЂЕВИЋ САВА
+ЂУРЂЕВИЋ САВА
+ЂУРЂЕВИЋ СЛОБОДАН
+ЂУРЂЕВИЋ СРЂАН ДР
+ЂУРЂЕВИЋ СТАНКО
+ЂУРЂЕВИЋ СТАНОЈКА
+ЂУРЂЕВИЋ СТЕВАН
+ЂУРЂЕВИЋ СВЕТОЗАР
+ЂУРЂЕВИЋ ТОДОР
+ЂУРЂЕВИЋ ТОМИСЛАВ
+ЂУРЂЕВИЋ ТОМИСЛАВ
+ЂУРЂЕВИЋ ВЕСЕЛИН
+ЂУРЂЕВИЋ ВИД
+ЂУРЂЕВИЋ ВЛАДА
+ЂУРЂЕВИЋ ВЛАДА
+ЂУРЂЕВИЋ ВЛАДИМИР
+ЂУРЂЕВИЋ ВЛАДИМИР
+ЂУРЂЕВИЋ ВЛАДИСЛАВ
+ЂУРЂЕВИЋ ЗОРАН
+ЂУРЂЕВИЋ ЗОРАН
+ЂУРЂЕВСКИ БОШКО
+ЂУРЂИЋ БОЖИДАР
+ЂУРЂИЋ МИЛОШ
+ЂУРЂИЋ МОМЧИЛО
+ЂУРЂИЋ САВО
+ЂУРЂИЋ СТАНА
+ЂУРЂИН СТЕВАН
+ЂУРЂУЛОВ ДЕЈАН
+ЂУРЂУЛОВ ЕВИЦА
+ЂУРА ФРАЊА
+ЂУРА ЈЕЛИСАВЕТА
+ЂУРА ЈУЛИЈАНА МР
+ЂУРАЧИЋ ДРАГАН
+ЂУРАШ МИОДРАГ
+ЂУРАШЕВИЋ ЂОРЂЕ
+ЂУРАШЕВИЋ ЂУРО
+ЂУРАШЕВИЋ ГОЈКО
+ЂУРАШЕВИЋ ИВО
+ЂУРАШЕВИЋ МАРИЈАНА
+ЂУРАШЕВИЋ МИЛЕ
+ЂУРАШЕВИЋ РАДОМИР
+ЂУРАШЕВИЋ ТИБОР
+ЂУРАШЕВИЋ ЗОРАН
+ЂУРАШИНОВ ВЕЛИМИР
+ЂУРАШИНОВИЋ ИЛИЈА
+ЂУРАШКОВИЋ ЖИВОЈИН
+ЂУРАШКОВИЋ БОЖО
+ЂУРАШКОВИЋ ДРАГАН
+ЂУРАШКОВИЋ ДРАГО
+ЂУРАШКОВИЋ ГОРДАНА
+ЂУРАШКОВИЋ ЈОВАН
+ЂУРАШКОВИЋ ЈОВАН
+ЂУРАШКОВИЋ ЈОВИЦА
+ЂУРАШКОВИЋ РАЈКО
+ЂУРАШКОВИЋ СТАНОЈЕ
+ЂУРАГИЋ ЂОРЂЕ
+ЂУРАГИЋ ДИЛЕ
+ЂУРАГИЋ ДРАГАН
+ЂУРАГИЋ ГИГА
+ЂУРАГИЋ ЈОВАН
+ЂУРАГИЋ ЈУЛКА
+ЂУРАГИЋ ЛАЗАР
+ЂУРАГИЋ МИРОСЛАВ
+ЂУРАГИЋ САВА
+ЂУРАГИЋ СТЕВАН
+ЂУРАГИН ЈОВАН
+ЂУРАГИН СТАНКА
+ЂУРАК ЈОЖЕФ
+ЂУРАК ЈОСИФ
+ЂУРАКОВАЦ ФАТМИРА
+ЂУРАН БОЈАНА
+ЂУРАН ИЛИЈА
+ЂУРАН ЈЕЛЕНА
+ЂУРАН ЈОВО
+ЂУРАН МИЛАН
+ЂУРАН МИЛАН
+ЂУРАН РАЈКО
+ЂУРАН РАЈКО
+ЂУРАН СЛАВКО
+ЂУРАН СНЕЖАНА
+ЂУРАН ЗДРАВКО
+ЂУРАНОВИЋ ДУШАН
+ЂУРАНОВИЋ ИЛОНА
+ЂУРАНОВИЋ МИХАИЛО
+ЂУРАНОВИЋ МИЛАН
+ЂУРАНОВИЋ МИОДРАГ
+ЂУРАНОВИЋ МИРКО
+ЂУРАНОВИЋ НАДА
+ЂУРАНОВИЋ СЛАЂАНА
+ЂУРАСИНОВИЋ МИЛЕ
+ЂУРДКОВ ЕВА
+ЂУРЕКОВИЋ КАРЛО
+ЂУРЕКОВИЋ ЉУБИЦА
+ЂУРЕКОВИЋ ЗВОНИМИР
+ЂУРЕНДИЋ ЂОРЂЕ
+ЂУРЕНДИЋ ДУШАН
+ЂУРЕТИЋ НИКОЛА
+ЂУРИЧИЋ ДРАГИЊА
+ЂУРИЧИЋ ДРАГО
+ЂУРИЧИЋ ДРАГУТИН
+ЂУРИЧИЋ ДУШАН
+ЂУРИЧИЋ ЈОВАН
+ЂУРИЧИЋ МИЉОЈКО
+ЂУРИЧИЋ МИЛОШ
+ЂУРИЧИЋ НЕШКО
+ЂУРИЧИЋ НИКОЛА
+ЂУРИЧИЋ ПАВЛЕ
+ЂУРИЧИЋ РУЖА
+ЂУРИЧИЋ СЛАВКО
+ЂУРИЧИЋ СЛАВКО
+ЂУРИЧИЋ СТАНКО
+ЂУРИЧИЋ ТАНКОСАВА
+ЂУРИЧИЋ ЗЛАТИЦА
+ЂУРИЧИЋ ЗОРАН
+ЂУРИЧИН ЂОРЂЕ
+ЂУРИЧИН АЛЕКСАНДАР
+ЂУРИЧИН ДРАГАН
+ЂУРИЧИН ДРАГУТИН
+ЂУРИЧИН КАТАРИНА
+ЂУРИЧИН КАТИЦА
+ЂУРИЧИН МАРКО
+ЂУРИЧИН МИЛАН
+ЂУРИЧИН МИЛОРАД
+ЂУРИЧИН МИОДРАГ
+ЂУРИЧИН ПЕТАР
+ЂУРИЧИН РАДОСЛАВА
+ЂУРИЧИН РУЖИЦА
+ЂУРИЧИН СИНИША
+ЂУРИЧИН СОФИЈА
+ЂУРИЧИН СТАНИЈА
+ЂУРИЧИН СТЕВАН
+ЂУРИЧИН СВЕТЛАНА
+ЂУРИЧИН ТОМИСЛАВ
+ЂУРИЧИН ВАСИЛИЈЕ
+ЂУРИЧИН ЗОРКА
+ЂУРИЧКОВИЋ МИЛОРАД
+ЂУРИЧКОВИЋ ПАВЛЕ
+ЂУРИЧКОВИЋ ЗЛАТАНА
+ЂУРИШ КЛАРА
+ЂУРИШ МИРОСЛАВ
+ЂУРИШ ПАЉО
+ЂУРИШЕВИЋ МИЛЕНА
+ЂУРИШИЋ ДУШАН
+ЂУРИШИЋ ЈЕЛЕНА
+ЂУРИШИЋ ЛАЗАР
+ЂУРИШИЋ МАТО
+ЂУРИШИЋ МИЛАН
+ЂУРИШИЋ МИЛАН
+ЂУРИШИЋ МИЛИЈА
+ЂУРИШИЋ МИЛИСАВ
+ЂУРИШИЋ НИКОЛА
+ЂУРИШИЋ РАДМИЛА
+ЂУРИШИЋ РАДОМИР
+ЂУРИШИЋ СЛАВКО
+ЂУРИШИЋ СВЕТЛАНА
+ЂУРИШИЋ ВЕРА
+ЂУРИШИЋ ВИДА
+ЂУРИШИЋ ЗЛАТАНА
+ЂУРИШИЋ ЗЛАТА
+ЂУРИЋ ЖАРКО
+ЂУРИЋ ЖЕЉКО
+ЂУРИЋ ЖИВОРАД
+ЂУРИЋ ЂЕРЂ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂУРА
+ЂУРИЋ ЂУРИЦА
+ЂУРИЋ АЛЕКСАНДАР
+ЂУРИЋ АНЂЕЛКА
+ЂУРИЋ АНГЕЛИНА
+ЂУРИЋ АНКА
+ЂУРИЋ АРСЕНИЈЕ
+ЂУРИЋ БЛАГОМИР
+ЂУРИЋ БОЖИДАР
+ЂУРИЋ БОЖИДАР
+ЂУРИЋ БОГОЉУБ
+ЂУРИЋ БОГОЉУБ
+ЂУРИЋ БОЈАН
+ЂУРИЋ БОРИВОЈ
+ЂУРИЋ БОРКА
+ЂУРИЋ БОРКА
+ЂУРИЋ БРАНИСЛАВ ДР ЛЕКАР
+ЂУРИЋ БРАНИСЛАВА
+ЂУРИЋ БРАНКА
+ЂУРИЋ БРАНКА
+ЂУРИЋ БРАНКО
+ЂУРИЋ БРАТИСЛАВ
+ЂУРИЋ БУДИМИР
+ЂУРИЋ ДЕЈАН
+ЂУРИЋ ДЕЈАН
+ЂУРИЋ ДЕСПОТ
+ЂУРИЋ ДОБРЕ
+ЂУРИЋ ДОБРИЛА
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГИЦА
+ЂУРИЋ ДРАГИЦА
+ЂУРИЋ ДРАГУТИН ДР
+ЂУРИЋ ДУШАН
+ЂУРИЋ ДУШАН
+ЂУРИЋ ЕВА
+ЂУРИЋ ФРАЊА
+ЂУРИЋ ГОЈКО
+ЂУРИЋ ГОЈКО
+ЂУРИЋ ГОРДАНА
+ЂУРИЋ ХРАНИСЛАВ
+ЂУРИЋ ХРАНИСЛАВ
+ЂУРИЋ ИЛИЈА
+ЂУРИЋ ИЛИЈА
+ЂУРИЋ ЈАСМИНКА
+ЂУРИЋ ЈЕЛИЦА
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВО
+ЂУРИЋ КРИСТИНА
+ЂУРИЋ ЉИЉАНА
+ЂУРИЋ ЉУБИША
+ЂУРИЋ ЉУБИША
+ЂУРИЋ ЉУБИЦА
+ЂУРИЋ ЉУБИЦА
+ЂУРИЋ ЉУБОДРАГ
+ЂУРИЋ ЉУБОМИР
+ЂУРИЋ МАРА
+ЂУРИЋ МАРИЈА
+ЂУРИЋ МИЋА
+ЂУРИЋ МИЛАНКО
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛЕНКО
+ЂУРИЋ МИЛИЦА
+ЂУРИЋ МИЛИВОЈЕ
+ЂУРИЋ МИЛОШ
+ЂУРИЋ МИЛОРАД
+ЂУРИЋ МИЛОРАД
+ЂУРИЋ МИЛОВАН
+ЂУРИЋ МИЛУН
+ЂУРИЋ МИОДРАГ
+ЂУРИЋ МИОДРАГ
+ЂУРИЋ МИРЈАНА
+ЂУРИЋ МИРКО
+ЂУРИЋ МИРОЉУБ
+ЂУРИЋ МИРОСЛАВА
+ЂУРИЋ МИРОСЛАВ
+ЂУРИЋ МИТАР
+ЂУРИЋ МОМЧИЛО
+ЂУРИЋ НЕДЕЉКО
+ЂУРИЋ НЕМАЊА
+ЂУРИЋ НЕНАД
+ЂУРИЋ НЕВЕНКА
+ЂУРИЋ ПЕТРА
+ЂУРИЋ ПРЕДРАГ
+ЂУРИЋ ПРЕДРАГ
+ЂУРИЋ РАДИВОЈЕ
+ЂУРИЋ РАДМИЛА
+ЂУРИЋ РАДОИЦА
+ЂУРИЋ РАДОЈКА
+ЂУРИЋ РАДОСЛАВ
+ЂУРИЋ РАТКО
+ЂУРИЋ САЊА
+ЂУРИЋ САВКА
+ЂУРИЋ САВО
+ЂУРИЋ СЕКУЛА
+ЂУРИЋ СЛАВИЦА
+ЂУРИЋ СЛАВКА
+ЂУРИЋ СЛАВКО
+ЂУРИЋ СЛАВКО
+ЂУРИЋ СРБОЉУБ
+ЂУРИЋ СТАНИМИР
+ЂУРИЋ СТАНИМИР
+ЂУРИЋ СТЕВАН
+ЂУРИЋ СТОЈАНКА
+ЂУРИЋ СТОЈАНКА
+ЂУРИЋ ТЕОДОР
+ЂУРИЋ ТЕРЕЗА
+ЂУРИЋ ТОДОР
+ЂУРИЋ ТОДОР
+ЂУРИЋ ТУГОМИР
+ЂУРИЋ ВАСА
+ЂУРИЋ ВЕЉКО
+ЂУРИЋ ВЕРА
+ЂУРИЋ ВЕРА
+ЂУРИЋ ВИДА
+ЂУРИЋ ВИДОЈЕ
+ЂУРИЋ ВЛАДА
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВОЈИН
+ЂУРИЋ ВОЈИСЛАВ
+ЂУРИЋ ВУКАШИН
+ЂУРИЋ ЗДЕНКА
+ЂУРИЋ ЗДРАВКО
+ЂУРИЋ ЗОРАН
+ЂУРИЦА МИЛОШ
+ЂУРИЦА НЕВЕНКА
+ЂУРИЦА РАДЕ
+ЂУРИЦА РАНКО
+ЂУРИЦА РАНКО
+ЂУРИЦА РАТКО
+ЂУРИЦА СЛОБОДАН ДИПЛ ОЕЦ
+ЂУРИК ДУШАН
+ЂУРИК ЈУЛКА
+ЂУРИК МИЛАН
+ЂУРИК ОТИЛИЈА
+ЂУРИКИН ИЛИЈА
+ЂУРИКИН ВЕРА
+ЂУРИН ИЛИЈА
+ЂУРИН ЈОСИП
+ЂУРИН НОВА
+ЂУРИН НОВА
+ЂУРИН САВА ДИПЛ ИНГ
+ЂУРИН СВЕТЛАНА
+ЂУРИН ТЕОДОР
+ЂУРКИЋ ДРАГИЦА
+ЂУРКИН МИЛЕНКО
+ЂУРКИН РАДИШКО
+ЂУРКИН ВЛАДИМИР
+ЂУРКОВИЋ ЧАСЛАВ
+ЂУРКОВИЋ ЂЕНА
+ЂУРКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЂУРКОВИЋ АНТОН
+ЂУРКОВИЋ МАГДАЛЕНА
+ЂУРКОВИЋ ПЕРИЦА
+ЂУРКОВИЋ РАДЕ
+ЂУРКОВИЋ РУЖИЦА
+ЂУРКОВИЋ СТЕВАН
+ЂУРКОВИЋ СВЕТОМИР
+ЂУРКОВИЋ ВЛАЈКО
+ЂУРКОВСКИ ПАВЕЛ
+ЂУРНИЋ РАДМИЛА
+ЂУРНИЋ ВОЈИСЛАВ
+ЂУРОВИЋ ЖИВКА
+ЂУРОВИЋ АЛЕКСАНДАР
+ЂУРОВИЋ БОШКО
+ЂУРОВИЋ БОЈА
+ЂУРОВИЋ БОРИСЛАВ
+ЂУРОВИЋ БОСИЉКА
+ЂУРОВИЋ ДАНИЛО
+ЂУРОВИЋ ДАРИНКА
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГОЉУБ
+ЂУРОВИЋ ГОЈКО
+ЂУРОВИЋ ЈАСМИНКА
+ЂУРОВИЋ ЈОВАН
+ЂУРОВИЋ ЉУБИЦА
+ЂУРОВИЋ МИЛЕНКО
+ЂУРОВИЋ МИЛИЦА
+ЂУРОВИЋ МИЛИСАВ
+ЂУРОВИЋ МИЛКА
+ЂУРОВИЋ НАДЕЖДА
+ЂУРОВИЋ НИКОЛА
+ЂУРОВИЋ ОЛГИЦА
+ЂУРОВИЋ РАДЕНКО
+ЂУРОВИЋ РАДЕ
+ЂУРОВИЋ РАДОМИР
+ЂУРОВИЋ РАДОМИР
+ЂУРОВИЋ РАДОСЛАВ
+ЂУРОВИЋ РАДОВАН
+ЂУРОВИЋ СОФИЈА
+ЂУРОВИЋ СВЕТЛАНА
+ЂУРОВИЋ СВЕТОМИР
+ЂУРОВИЋ ВАСО
+ЂУРОВИЋ ВЕСНА
+ЂУРОВИЋ ВУКАШИН
+ЂУРОВИЋ ВУКАДИН
+ЂУРОВИЋ ЗОРКА
+ЂУРОВКА МАРИЈА
+ЂУРОВКА ОНДРЕЈ
+ЂУРОВКА ВЛАДИСЛАВ
+ЂУРОВСКИ ЈОВИЦА
+ЂУСИЋ МИОДРАГ
+ЂУЗА СТЕВО
+АЧ ШАНДОР
+АЧ ФЕРЕНЦ
+АЧ ФРАЊА ДР ПРИМАРИЈУС
+АЧ ГАБОР
+АЧ ЈОЖЕФ АКАДЕМСКИ СЛИКАР
+АЧ ЈОЖЕФ БИОЛОГ
+АЧ ЈОВАН
+АЧ КАТИЦА
+АЧ ЛАЈОШ
+АЧ-НИКОЛИЋ ЕРЖЕБЕТ
+АЧ ОТО
+АЧ ПАВЛЕ
+АЧ ТИБОР
+АЧАИ ИШТВАН
+АЧАИ ЗОЛТАН
+АЧАНАСКИ ВЕСНА
+АЧАНСКИ ЖИВКО
+АЧАНСКИ АЛБИНА
+АЧАНСКИ АЛЕКСАНДАР
+АЧАНСКИ БРАНИСЛАВ
+АЧАНСКИ ДОБРИВОЈ
+АЧАНСКИ ДРАГИЦА
+АЧАНСКИ ДРАГОМИР
+АЧАНСКИ ЈЕЛИСОВ
+АЧАНСКИ КОСАНА
+АЧАНСКИ ЛАЗАР
+АЧАНСКИ ЛАЗАР
+АЧАНСКИ НИКОЛА
+АЧАНСКИ РАДА
+АЧАНСКИ СТАНА
+АЧАНСКИ СТАНИСЛАВ
+АЧАНСКИ ТЕОДОР ДИПЛ ИНГ
+АЧАНСКИ ТОДОР
+АЧАНСКИ ВИДОСАВА
+АЧАНСКИ ЗДРАВКО
+АЧАНСКИ ЗОРИЦА
+АШЋЕРИЋ СТЕВАН
+АШЋЕРИЋ СТЕВАН
+АШЋЕРИЋ ЗОРА
+АШАНИН РАДИВОЈЕ
+АШАНИН ЗОРАН
+АШИКУ ВИТАЛИС ДР ЛЕКАР
+АШКОВИЋ СЛАВКО ДИПЛ ИНГ
+АШКОВИЋ ТОМИСЛАВ
+АШКОВИЋ ВОЈИСЛАВА
+АШОЊА НЕДЕЉКО
+АШОЊА ОЛГА
+АШТАЛКОВСКИ АЛЕКСАНДАР
+АШТАЛКОВСКИ КРИСТИНА
+АЋАНСКИ ЂОРЂЕ
+АЋАНСКИ ЛАЗАР
+АЋИЋ ИЛИЈА
+АЋИЋ МИРКО
+АЋИЋ СТЕВАН
+АЋИМОВ АЛЕКСАНДАР
+АЋИМОВ БОШКО
+АЋИМОВ ДРАГИЦА
+АЋИМОВ ЛЕЛА
+АЋИМОВ МАРКО
+АЋИМОВ МИЛАН
+АЋИМОВ МИРЈАНА ПРОФЕСОР
+АЋИМОВ НЕДЕЉКО
+АЋИМОВ РАДИВОЈ
+АЋИМОВ РАДОСЛАВА
+АЋИМОВИЋ ЖИВКО
+АЋИМОВИЋ ЖИВОЈИН
+АЋИМОВИЋ ЂОРЂЕ
+АЋИМОВИЋ ЂОРЂЕ
+АЋИМОВИЋ ЂУРЂИНКА
+АЋИМОВИЋ БОШКО
+АЋИМОВИЋ БОГДАНКА
+АЋИМОВИЋ БОРКА
+АЋИМОВИЋ БРАНКО
+АЋИМОВИЋ БРАНКО
+АЋИМОВИЋ ДРАГАН
+АЋИМОВИЋ ДРАГОЉУБ
+АЋИМОВИЋ ДРАГОСЛАВ
+АЋИМОВИЋ ДУШАНКА
+АЋИМОВИЋ ДУШАН
+АЋИМОВИЋ ДУШАН
+АЋИМОВИЋ ГОЈКО
+АЋИМОВИЋ ИЛИЈА
+АЋИМОВИЋ ЈОВА
+АЋИМОВИЋ МИЛАН
+АЋИМОВИЋ МИЛА
+АЋИМОВИЋ МИЛИВОЈЕ ДР
+АЋИМОВИЋ МИЛИВОЈ
+АЋИМОВИЋ МИЛОЈИЦА
+АЋИМОВИЋ МИОДРАГ
+АЋИМОВИЋ ОБРАД
+АЋИМОВИЋ РАДМИЛА
+АЋИМОВИЋ РАДОВАН
+АЋИМОВИЋ РАТКО
+АЋИМОВИЋ САВА
+АЋИМОВИЋ САВА
+АЋИМОВИЋ СЛАВКО
+АЋИМОВИЋ СЛОБОДАН
+АЋИМОВИЋ ТАДИЈА
+АЋИМОВИЋ ВАСА
+АЋИМОВИЋ ВАСИЛИЈЕ
+АЋИМПВИЋ АЛЕКСАНДАР
+АЂАНСКИ БРАНИСЛАВ
+АЂАНСКИ ИВАНА
+АЂАНСКИ МИЛИВОЈ
+АЂАНСКИ НАДА
+АЂАНСКИ СТЕВАН
+АЂИЋ ДРАГО
+АЂИЋ ОТО
+АЂИН АДАМ
+АБАЏИЋ МАРКО
+АБАЏИЋ РАДМИЛА
+АБАЏИЋ САВО
+АБАЏИЋ СТАНКО
+АБАЗА ВЕСНА
+АБАЗИ ИЉАЗ
+АБАЗИ РАМАДАН
+АБАЗОВСКИ СУЛТАН
+АБДИЈЕВИЋ ШУКРИЈА
+АБДИЈЕВИЋ ИСМЕТ
+АБРАХАМ ЕВА
+АБРАХАМ ИРЕНА
+АБРАХАМ ПАВЕЛ
+АБРАМОВИЋ ДУШАНКА
+АБРАМОВИЋ ЛИВИЈА
+АБРАМОВИЋ МИЛОРАД
+АБРАМОВИЋ МИРЈАНА
+АБРАМОВИЋ НАДА
+АБРАМОВИЋ СТАНА
+АБРАМОВИЋ ВАЛЕРИЈА
+АБРЛИЋ НАДА
+АБТ ЛАСЛО
+АБУ-АБЕД МУХАМЕД
+АЦИГАН ЈОВАНКА
+АЦИН-ПЕТРОВИЋ ИВАНКА
+АЦКЕТА ДРАГАН
+АЦКЕТА МИРЈАНА
+АЦКЕТА ТИХОМИР
+АЦКОВИЋ МАРА
+АЏАИП МИЛОРАД
+АЏАИП МИРЈАНА
+АЏЕМОВИЋ АЛЕКСАНДАР
+АЏЕМОВИЋ ГРУЈО
+АЏИЋ ЖАРКО
+АЏИЋ БОШКО
+АЏИЋ БРАНКО
+АЏИЋ ДЕСАНКА
+АЏИЋ ДРАГОЉУБ
+АЏИЋ ДУШИЦА
+АЏИЋ ГОРАН
+АЏИЋ ИЛИЈА
+АЏИЋ ЈОВАНКА
+АЏИЋ ЈОВАН
+АЏИЋ ЉУБОДРАГ
+АЏИЋ МИЛАН
+АЏИЋ МИЛЕН
+АЏИЋ МИЛИСАВ
+АЏИЋ МИЛИВОЈЕ
+АЏИЋ МИЛОРАД
+АЏИЋ НЕДЕЉКО
+АЏИЋ ПЕРО
+АЏИЋ РАДИСАВ
+АЏИЋ РАДОЊА
+АЏИЋ РАНКО
+АЏИЋ РАТКО
+АЏИЋ СЛОБОДАН
+АЏИЋ ВЛАДО
+АЏИЋ ЗОРАН
+АЏИБАБА МИЛИЦА
+АЏИБАБА НИКОЛА
+АДАМ ШАРЛОТА
+АДАМ ЂУРА
+АДАМ ДЕНЕШ
+АДАМ ИРМА
+АДАМ ЈОЖЕФ
+АДАМ ЈОСИП
+АДАМ КРУНИЦА ДР
+АДАМ ЛАДИСЛАВ
+АДАМ ЛАДИСЛАВ
+АДАМ ЛАСЛО
+АДАМ ОЛГИЦА
+АДАМ ТИБОР НОВИНАР
+АДАМОВ ЂОРЂЕ
+АДАМОВ БОЖИДАР
+АДАМОВ ДРАГАН
+АДАМОВ ДУШАН
+АДАМОВ ИВАН
+АДАМОВ ЈОВАН
+АДАМОВ ЈУЛИАНА
+АДАМОВ ЈУЛКА
+АДАМОВ ЈУЛКА
+АДАМОВ КАТАРИНА
+АДАМОВ ЉУБА
+АДАМОВ МАРИЈА
+АДАМОВ МИРОСЛАВА
+АДАМОВ РАДОВАН
+АДАМОВ ТИЦА
+АДАМОВ ВИТОМИР
+АДАМОВИЋ ЂУРА
+АДАМОВИЋ БОШКО
+АДАМОВИЋ ДРАГА
+АДАМОВИЋ ДРАГОЉУБ
+АДАМОВИЋ ДРАГОЉУБ
+АДАМОВИЋ ДРАГУТИН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ГОЈКО
+АДАМОВИЋ ГОЈКО
+АДАМОВИЋ ГОРАН
+АДАМОВИЋ ИЛОНА
+АДАМОВИЋ ИВАН
+АДАМОВИЋ ЈЕЛА
+АДАМОВИЋ ЈЕЛЕНА
+АДАМОВИЋ ЈОВАНКА
+АДАМОВИЋ ЈОВАН
+АДАМОВИЋ КАТА
+АДАМОВИЋ ЛАЗАР
+АДАМОВИЋ ЛАЗАР
+АДАМОВИЋ ЉИЉАНА
+АДАМОВИЋ ЉУБОМИР
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРИНКО
+АДАМОВИЋ МИЛЕНА
+АДАМОВИЋ МИЛИЦА
+АДАМОВИЋ МИЛКАН
+АДАМОВИЋ МИРКО
+АДАМОВИЋ МИРКО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ РАДМИЛА
+АДАМОВИЋ РАДОСАВ
+АДАМОВИЋ СЛАВКО
+АДАМОВИЋ СОЊА
+АДАМОВИЋ СТОЈАНКА
+АДАМОВИЋ СВЕТОЗАР
+АДАМОВИЋ ТОМИСЛАВ
+АДАМОВИЋ ТОМИСЛАВ
+АДАМОВИЋ ВЛАДИМИР
+АДЕМИ ГОРДАНА
+АДЕМИ ИМЕР
+АДЕМОВ КЕМАЛ
+АДЕМОВИЋ ЈУСУФ
+АДЕМОВИЋ ОСМАН
+АДЛЕШИЋ ЉУБИЦА
+АДНАЂЕВИЋ СВЕТОЗАР
+АДОР ЈОВАН
+АГАРСКИ ЈАН ДР
+АГАТИЋ МАТЕ
+АГАТИЋ МИРКО
+АГАТИЋ ВЕЛИМИР
+АГБАБА БРАНКА
+АГБАБА ДАНЕ
+АГБАБА ДАНИЦА
+АГБАБА ДАНИЛО
+АГБАБА ДУШАН
+АГБАБА ЈОВАН
+АГБАБА НЕДЕЉКА
+АГБАБА НЕДЕЉКО
+АГБАБА НИКОЛА ДР
+АГБАБА НИКОЛА
+АГБАБА ВИДА
+АГИЋ МАРКО
+АГИЋ НАДА
+АГИЋ НИКОЛАЈ
+АГИЋ НИКОЛА
+АГИЋ СЛОБОДАН ДИПЛ ОЕЦ
+АГИЋ СРБИСЛАВ
+АГИЋ ВЛАДИМИР
+АГО МАРКО
+АГО ЗОРИЦА
+АГОЧ ДУШАН
+АГОШТОН БЕЛА
+АГОШТОН ФЕРЕНЦ
+АГОШТОН КАРОЉ
+АГОШТОН ЛАСЛО
+АГОШТОН МИХАЉ
+АГОШТОН ВЕРА
+АГРАМОВИЋ ДЕСАНКА
+АГРАМОВИЋ РАДЕ
+АГУШЕВИЋ СЛОБОДАНКА
+АГУЦИЋ ОЛГИЦА
+АХМЕД ЕЛЕЗ
+АХМЕТОВ ШУКРИ
+АХМЕТОВИЋ КАРЛО
+АХМЕТОВИЋ СОФИЈА
+АХМЕТОВИЋ ЗЛАТКО
+АИРАЛДИ БОЖИДАР
+АЈ БРАНИСЛАВ
+АЈ ВЕСНА
+АЈАНОВИЋ САЛКО
+АЈЦЕВ ДУШАН
+АЈЏАНОВИЋ АНАСТАСИЈА ДР ЛЕКАР
+АЈДАРИЋ РАДОСЛАВ
+АЈДЕР ЖЕЉКО
+АЈДЕР БОШКО
+АЈДЕР ДАНИЦА
+АЈДИЋ ЂОРЂЕ
+АЈДИНИ САБРИЈА
+АЈДИНОВИЋ НИКОЛА
+АЈДУК ЈОСИМ
+АЈДУК МАРКО
+АЈДУК МИЛИЦА
+АЈДУК ТОША
+АЈДУКОВИЋ ГОЈКО
+АЈДУКОВИЋ ЉИЉАНА
+АЈДУКОВИЋ МИЛАН
+АЈДУКОВИЋ СОФИЈА
+АЈГЕНМАХТ МАРИНА
+АЈКУНИЋ АДИЛ
+АЈКУНИЋ НЕЗИР
+АЈРАНОВИЋ ЈУСУФ
+АЈТИЋ СВЕТИСЛАВ
+АЈТЛБЕЗ МИЈАТ
+АЈТЛБЕЗ МИЈАТ
+АЈВАЗОВИЋ АЋИФ
+АЈВАЗОВИЋ АСЛАН
+АЈВАЗОВИЋ ЕСМА
+АЈВАЗОВИЋ ФАИД
+АЈВИЛЕР СТЕВАН
+АЈЗЕНБЕРГЕР БЕЛА
+АКШАМОВИЋ ПЛАВША
+АКИК ДРАГИЦА
+АКИК ДУШАН
+АКИН ДРАГА
+АКИН СОФИЈА
+АКОНЧИЋ ЗОРАН
+АКРАП ФИЛИП ПРОФ
+АКРАПОВИЋ МИРОСЛАВ
+АКСЕНТИЈЕВИЋ ЈОВАН
+АКСЕНТИЈЕВИЋ НИКОЛА СУДИЈА
+АКСЕНТИЈЕВИЋ СТОЈАДИН
+АКСИН БРАНИСЛАВ
+АКСИН МИЛОВАН
+АКСИН ВЛАДИМИР ДР ИНГ
+АЛАЂИ ШАНДОР
+АЛАБАШОВСКИ ГРУЈА
+АЛАБАШОВСКИ ИБРАХИМ
+АЛАБУРИЋ ПАВЛЕ
+АЛАБУРИЋ ТЕОДОР ДИПЛ ИНГ
+АЛАЏИЋ ЂОРЂО
+АЛАДИЋ АЛЕКСАНДАР
+АЛАДИЋ АЛЕКСАНДАР
+АЛАДИЋ БРАНИСЛАВА
+АЛАДИЋ ИДА
+АЛАДИЋ СТЕВАН
+АЛАГИЋ ДУШАН
+АЛАГИЋ МУЈО
+АЛАГИЋ НАДА
+АЛАГИЋ РАДОСЛАВ
+АЛАГИЋ ВЕРА
+АЛАИЦА РАДОЈКА
+АЛАЈИЦА БРАНКО
+АЛАЈИЦА ЈОВО
+АЛАН ВЕРА
+АЛАНОВ РУЖИЦА
+АЛАРГИЋ ЈЕЛЕНА
+АЛАРГИЋ МИЛИЦА
+АЛАРГИЋ ПЕТАР
+АЛАРГИЋ РАДЕ
+АЛАРГИЋ РАНКА
+АЛАРГИЋ ТИМА
+АЛАСОВ ДРАГОСЛАВ
+АЛАСОВ ЛАЗАР ДИПЛ ИНГ
+АЛАВАЊА МИРЈАНА
+АЛБИЈАНИЋ БОРО
+АЛБИЈАНИЋ ДРАГУТИН
+АЛБОТ ИЛИЈА
+АЛБРЕХТ ЈАНОШ
+АЛБРЕХТ МАРИЈА
+АЛБРЕХТ МАРИЈА
+АЛБУЉ ДИВНА
+АЛБУЉ ГОРДАНА
+АЛБУЉ ВЕСЕЛИН
+АЛБУЉ ВОЈИСЛАВКА
+АЛЕКСАНДЕР АНА
+АЛЕКСАНДЕР РУДОЛФ
+АЛЕКСАНДРИЋ МИЛЕСА ДР
+АЛЕКСАНДРОВ СЛАВЧА
+АЛЕКСАНДРОВИЋ ДРАГАН
+АЛЕКСАНДРОВИЋ ДУШАН
+АЛЕКСИ СТЕВАН
+АЛЕКСИЋ ЧАСЛАВ
+АЛЕКСИЋ ЧЕДОМИР
+АЛЕКСИЋ ЖИВОМИР
+АЛЕКСИЋ ЂОРЂЕ
+АЛЕКСИЋ ЂУРА
+АЛЕКСИЋ АЦА
+АЛЕКСИЋ АДАМ
+АЛЕКСИЋ АРСА
+АЛЕКСИЋ БИСЕРКА
+АЛЕКСИЋ БОЖИДАР
+АЛЕКСИЋ БОЖИДАР
+АЛЕКСИЋ БОГДАН
+АЛЕКСИЋ БРАНИСЛАВ
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БУДИМИР
+АЛЕКСИЋ ДАНИЦА
+АЛЕКСИЋ ДАРИНКА
+АЛЕКСИЋ ДРАГАН
+АЛЕКСИЋ ДРАГА
+АЛЕКСИЋ ДРАГОЉУБ
+АЛЕКСИЋ ДРАГОМИР
+АЛЕКСИЋ ДРАГОСЛАВ ДР
+АЛЕКСИЋ ДУШАН
+АЛЕКСИЋ ДУШАН
+АЛЕКСИЋ ЕВИЦА
+АЛЕКСИЋ ГОЈКО
+АЛЕКСИЋ ГОРАН
+АЛЕКСИЋ ГОРДАНА
+АЛЕКСИЋ-ГРИСЕР НИКОЛА
+АЛЕКСИЋ ИЛИНКА
+АЛЕКСИЋ ИВАН
+АЛЕКСИЋ ЈЕЛЕНА
+АЛЕКСИЋ ЈЕЛИЦА
+АЛЕКСИЋ ЈЕЛИЦА
+АЛЕКСИЋ ЈОСИП
+АЛЕКСИЋ ЈОВАН
+АЛЕКСИЋ ЈОВО
+АЛЕКСИЋ КАТА
+АЛЕКСИЋ КАТИЦА
+АЛЕКСИЋ КАТИЦА
+АЛЕКСИЋ КОСА
+АЛЕКСИЋ КОСТА
+АЛЕКСИЋ КОСТА
+АЛЕКСИЋ ЛЕПОСАВА
+АЛЕКСИЋ ЛЕПОСАВА
+АЛЕКСИЋ ЉИЉАНА
+АЛЕКСИЋ ЉИЉАНА
+АЛЕКСИЋ ЉУБИША
+АЛЕКСИЋ ЉУТОМИР
+АЛЕКСИЋ МАРИН
+АЛЕКСИЋ МИЛАНКА
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛЕНА
+АЛЕКСИЋ МИЛИНКА
+АЛЕКСИЋ МИЛИВОЈ
+АЛЕКСИЋ МИЛИВОЈ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОЈЕ
+АЛЕКСИЋ МИЛОРАД
+АЛЕКСИЋ МИЛОВАН
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИРЈАНА
+АЛЕКСИЋ МИРКО
+АЛЕКСИЋ МИРОСЛАВ
+АЛЕКСИЋ МОМЧИЛО
+АЛЕКСИЋ МОМЧИЛО
+АЛЕКСИЋ МОМИР
+АЛЕКСИЋ НАДА
+АЛЕКСИЋ НАТАЛИЈА
+АЛЕКСИЋ НЕБОЈША
+АЛЕКСИЋ НИКОЛА
+АЛЕКСИЋ НИКОЛА
+АЛЕКСИЋ ПАУЛИНА
+АЛЕКСИЋ ПАВЛЕ
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПРЕДРАГ
+АЛЕКСИЋ РАДЕ
+АЛЕКСИЋ РАДМИЛА
+АЛЕКСИЋ РАДОМИР
+АЛЕКСИЋ РАЈКО
+АЛЕКСИЋ РАТКО
+АЛЕКСИЋ РАТКО
+АЛЕКСИЋ РИСТО
+АЛЕКСИЋ САВО
+АЛЕКСИЋ СЛАВНА
+АЛЕКСИЋ СМИЉА
+АЛЕКСИЋ СТЕВАН
+АЛЕКСИЋ СТЕВАН
+АЛЕКСИЋ ВАСА
+АЛЕКСИЋ ВЕРА
+АЛЕКСИЋ ВЕРА
+АЛЕКСИЋ ВЕСНА
+АЛЕКСИЋ ВИТОМИР
+АЛЕКСИЋ ВЛАСТИМИР
+АЛЕКСИЋ ВОЈИСЛАВ
+АЛЕКСИЋ ЗДРАВЕНКА
+АЛЕКСИЋ ЗДРАВКО
+АЛЕКСИЋ ЗЛАТИБОР
+АЛЕКСИЋ ЗОРАН
+АЛЕКСИЈЕВИЋ БОГДАН
+АЛЕКСИЈЕВИЋ БОРА
+АЛЕКСИЈЕВИЋ ИСИДОР
+АЛЕКСИЈЕВИЋ ЈОВАН
+АЛЕКСИЈЕВИЋ МАРИЈА
+АЛЕКСОВ ГЕОРГИ
+АЛЕКСОВ МИЛУТИН
+АЛЕКСОВ СИМЕОН
+АЛЕКСОВ ЗОРАН
+АЛЕКСОВСКИ МИЛЕ
+АЛЕКСОВСКИ СРБОЉУБ
+АЛЕМПИЋ САВО
+АЛЕМПИЈЕВИЋ ЗОРАН
+АЛЕМПИЈЕВИЋ ЗОРАН
+АЛЕНДЕР ШЕФИК
+АЛИ ЈУЛИСТАН
+АЛИШИЋ БЕСИМ
+АЛИШИЋ НИЈАЗ
+АЛИШИЋ РЕЏЕП
+АЛИШИЋ ВАСВИЈА
+АЛИЂУКИЋ ИЛИЈА
+АЛИБАШИЋ ХАМИД
+АЛИЈА АБДИРАХМАН
+АЛИЈА ИЗЕТ
+АЛИЈЕВИЋ НЕЗИР
+АЛИЈЕВИЋ САДРИЈА
+АЛИЛОВИЋ ВИНКО
+АЛИМПИЋ ЖИВКО
+АЛИМПИЋ АЛЕКСАНДАР
+АЛИМПИЋ БАРБАРА
+АЛИМПИЋ БОГОМИР
+АЛИМПИЋ БОРИВОЈЕ
+АЛИМПИЋ ДРАГАН
+АЛИМПИЋ ДРАГИЦА
+АЛИМПИЋ ЈЕЛА
+АЛИМПИЋ ЈОВАН
+АЛИМПИЋ ЉУБИЦА
+АЛИМПИЋ МОМЧИЛО
+АЛИМПИЋ СЛАВКА
+АЛИМПИЋ СЛАВКО
+АЛИМПИЋ СТЕВАН
+АЛИМПИЋ ТИХОМИР
+АЛИМПИЋ ТОМИСЛАВ
+АЛИМПИЋ ВОЈИСЛАВ
+АЛИМПИЈЕВИЋ ЂОРЂЕ
+АЛИМПИЈЕВИЋ ДИМИТРИЈЕ
+АЛИМПИЈЕВИЋ ЈОВАН
+АЛИМПИЈЕВИЋ ЈОВАН
+АЛИМПИЈЕВИЋ ВЕСЕЛИНКА
+АЛИОВ ХУСЕИН
+АЛИОВ ОМЕР
+АЉИ АЈРАДИН
+АЉИ МАКСУТ
+АЉИЋ КАТАРИНА
+АЉИЋ РАМО
+АЉИЈУПИ ЧЕРИМ
+АЛКИЋ СТЕВАН
+АЛКИЋ ВЛАДИМИР
+АЛМАШИ ЕТЕЛ
+АЛМАШИ МАРИШКА
+АЛМАШИ МАТИЈА
+АЛМАШИ САМУЕЛ
+АЛМАЖАН СЛАВКО НОВИНАР
+АЛОРИЋ ДРАГОМИРКА
+АЛОРИЋ ИЛИЈА
+АЛТЕРОВ АНА
+АЛТКОРН МАЛВИНА
+АЛВАЏИН ДРАГУТИН
+АЛВИРОВИЋ ДРАГОРАД
+АЛВИРОВИЋ МИОДРАГ
+АМАМОВИЋ ДУШАН
+АМАМОВИЋ МИЛЕВА
+АМБАРЏИЈЕВ ХРИСТО
+АМБО ИЛИЈА
+АМБРОЗИЋ РАСТКО
+АМБРУШ АТИЛА
+АМБРУШИЋ МАГДА
+АМБРУСОВ ЈОВАН
+АМЕТОВ ОСМАН
+АМЕТОВИЋ ЂОРЂЕ
+АМЕТОВИЋ ЂОРЂО
+АМЕТОВИЋ ЂУРО
+АМЕТОВИЋ БУДИМИР
+АМЕТОВИЋ ЈЕЛЕНА
+АМЕТОВИЋ ЈОВАН
+АМЕТОВИЋ КАТИЦА
+АМЕТОВИЋ ЛАЗАР
+АМЕТОВИЋ ЛАЗАР
+АМЕТОВИЋ МАРКО
+АМЕТОВИЋ МИЛАДИН
+АМЕТОВИЋ МИЛОРАД
+АМЕТОВИЋ МИРКО
+АМЕТОВИЋ МОМЧИЛО
+АМЕТОВИЋ РАЈКО
+АМЕТОВИЋ РАТКО
+АМЕТОВИЋ РУСМИРА
+АМЕТОВИЋ СОФИЈА
+АМЕТОВИЋ ВОЈИН
+АМИЖИЋ ДАНИЦА
+АМИЖИЋ МИРОСЛАВ
+АМИЖИЋ ТЕОДОРА
+АНЧИЋ АЛЕКСАНДРА
+АНЧИЋ МИЛАН
+АНЧИЋ НЕВЕНКА ДР
+АНЂЕЛИЋ АНЂЕЛКО
+АНЂЕЛИЋ АНДРИЈА
+АНЂЕЛИЋ АНИЦА
+АНЂЕЛИЋ БИЉАНА
+АНЂЕЛИЋ БЛАГИША
+АНЂЕЛИЋ БОЖИДАР ДР
+АНЂЕЛИЋ БОРИВОЈЕ
+АНЂЕЛИЋ БОРИВОЈЕ
+АНЂЕЛИЋ БРАНИСЛАВ
+АНЂЕЛИЋ ДАРИНКА
+АНЂЕЛИЋ ДРАГИЦА
+АНЂЕЛИЋ ДРАГОМИР
+АНЂЕЛИЋ ДУШАНКА
+АНЂЕЛИЋ ГОРАН
+АНЂЕЛИЋ ИЛИЈА
+АНЂЕЛИЋ ИЛИЈА
+АНЂЕЛИЋ МИЛЕНКО
+АНЂЕЛИЋ МИЛИВОЈЕ
+АНЂЕЛИЋ МИЛОРАД
+АНЂЕЛИЋ МИЛОРАД
+АНЂЕЛИЋ МИРЈАНА
+АНЂЕЛИЋ МИРЈАНА
+АНЂЕЛИЋ МИТАР
+АНЂЕЛИЋ НИКОЛА
+АНЂЕЛИЋ РАДМИЛА
+АНЂЕЛИЋ РАДОЈИЦА
+АНЂЕЛИЋ РАДОСЛАВ
+АНЂЕЛИЋ САВА
+АНЂЕЛИЋ СЛОБОДАН ДР ЛЕКАР
+АНЂЕЛИЋ СЛОБОДАН
+АНЂЕЛИЋ СЛОБОДАН
+АНЂЕЛИЋ СТЕВАН
+АНЂЕЛИЋ ВАСА
+АНЂЕЛИЋ ВАСО
+АНЂЕЛИЋ ВЕЉКО
+АНЂЕЛИЋ ВЕСЕЛИН
+АНЂЕЛИЋ ВЕСНА
+АНЂЕЛИЋ ВЛАДА
+АНЂЕЛИЋ ВОЈИСЛАВ
+АНЂЕЛКОВИЋ АНЂЕЛКО
+АНЂЕЛКОВИЋ БОЖИДАР
+АНЂЕЛКОВИЋ ДРАГОМИР
+АНЂЕЛКОВИЋ-ДУДИЋ ЗЛАТА
+АНЂЕЛКОВИЋ ЈЕЛИЦА
+АНЂЕЛКОВИЋ ЈОВАН
+АНЂЕЛКОВИЋ ЛИДИЈА
+АНЂЕЛКОВИЋ ЉУБИША
+АНЂЕЛКОВИЋ МИЛАН
+АНЂЕЛКОВИЋ МИЛОШ
+АНЂЕЛКОВИЋ МИЛОРАД
+АНЂЕЛКОВИЋ МИРОСЛАВ
+АНЂЕЛКОВИЋ МИРОСЛАВ
+АНЂЕЛКОВИЋ НАТАША
+АНЂЕЛКОВИЋ ПЕТАР
+АНЂЕЛКОВИЋ ПРЕДРАГ
+АНЂЕЛКОВИЋ РАДОМИР
+АНЂЕЛКОВИЋ РОБЕРТ
+АНЂЕЛКОВИЋ СИМА
+АНЂЕЛКОВИЋ СЛОБОДАН
+АНЂЕЛКОВИЋ СТАНИМИР
+АНЂЕЛКОВИЋ СТАНКО
+АНЂЕЛКОВИЋ СТЕВАН
+АНЂЕЛКОВИЋ СТОЈАН
+АНЂЕЛКОВИЋ СВЕТИСЛАВ
+АНЂЕЛКОВИЋ СВЕТИСЛАВ
+АНЂЕЛКОВИЋ СВЕТОМИР
+АНЂЕЛКОВИЋ ВАЛЕРИЈА
+АНЂЕЛКОВИЋ ВЕРА
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВУКАДИН
+АНЂЕЛКОВИЋ ЗОРАН
+АНЂЕЛКОВИЋ ЗОРАН
+АНЂЕЛКОВИЋ ЗОРА
+АНЂЕЛОВИЋ ЉУБИША
+АНЂЕЛОВИЋ ВЕРИЦА
+АНЂЕЛОВСКИ ЂОРЂЕ
+АНЂИЋ СТЕВАН
+АНЂУШИЋ ЖАРКО
+АНЂУШИЋ ЈЕЛИСАВКА
+АНЂУШИЋ МИЛОРАД
+АНЂУШИЋ СЛОБОДАН
+АНАСТАСИЈЕВИЋ ДУШАН
+АНАСТАСИЈЕВИЋ ЈУЛКИЦА
+АНАСТАСИЈЕВИЋ ЗОРИЦА
+АНАСТАСИЈЕВИЋ ЗОРИЦА
+АНАСТАСОВ МАРКО
+АНАСТАСОВ НИКОЛА
+АНАСТАСОВСКИ АЛЕКСАНДАР
+АНАУ ГАБРИЕЛА
+АНАУ СТЕВАН
+АНДАБАК МАРКО
+АНДАБАКА АНТЕ
+АНДАБАКА СЛАВИЦА
+АНДЕР ИМРЕ
+АНДЕРЛОН СТЕВИЦА
+АНДЕСЕЛИЋ ШТЕФИЦА
+АНДЕВСКИ РАДЕ
+АНДИЋ СВЕТОЗАР
+АНДИЋ ВЛАДИМИР
+АНДОНИАДИС МИЛИЦА
+АНДОНОВ ДИМИТРИЈЕ
+АНДОНОВ НЕНАД
+АНДОНОВ ЗОРИЦА
+АНДОНОВИЋ ДИМИТРИЈЕ
+АНДРАШИК ПАВЕЛ
+АНДРЕАТА СЛАВКО
+АНДРЕИЋ РАДОВАН
+АНДРЕЈЕВ ХЕЛЕНА
+АНДРЕЈЕВ МИХАЈЛО
+АНДРЕЈЕВИЋ БОГОСАВ
+АНДРЕЈЕВИЋ БОРИВОЈЕ
+АНДРЕЈЕВИЋ ГРАДИМИР
+АНДРЕЈЕВИЋ ИВАН
+АНДРЕЈЕВИЋ МАРКО
+АНДРЕЈЕВИЋ МИЛАН
+АНДРЕЈЕВИЋ МИРОСЛАВ
+АНДРЕЈЕВИЋ СЛОБОДАН
+АНДРЕЈЕВИЋ ТЕОДОР
+АНДРЕЈЕВИЋ ВУКАШИН ДИПЛ ИНГ
+АНДРЕЈИЋ ЖАРКО
+АНДРЕЈИЋ БОРИСЛАВ
+АНДРЕЈИЋ ДРАГАН
+АНДРЕЈИЋ РАДОСЛАВ
+АНДРЕЈИЋ СЛАВОЉУБ
+АНДРЕЈИЋ СРЕТЕН
+АНДРЕЈИЋ ВЕРА
+АНДРЕЈИЋ ЗОРАН
+АНДРЕЈИЋ ЗОРИЦА
+АНДРЕС АНЂЕЛКО
+АНДРИЧЕК АНА
+АНДРИЧЕК ЛАЈОШ
+АНДРИЧЕК МАГДАЛЕНА
+АНДРИЧЕК ПАВАО
+АНДРИЧЕК ПАВЛЕ
+АНДРИЋ ЖЕЉКА
+АНДРИЋ ЖИКА
+АНДРИЋ ЖИВАН
+АНДРИЋ ЂОРЂЕ
+АНДРИЋ ЂУРЂИНА
+АНДРИЋ АЛЕКСАНДАР
+АНДРИЋ БОГОЉУБ
+АНДРИЋ БОЈАН
+АНДРИЋ БОСИЉКА
+АНДРИЋ БРАНИМИР
+АНДРИЋ БРАНИСЛАВ
+АНДРИЋ ДАРИНКА
+АНДРИЋ ДОСТА
+АНДРИЋ ДРАГАН
+АНДРИЋ ДРАГОЉУБ
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ФРИДА
+АНДРИЋ ИЛИЈА
+АНДРИЋ ЈЕЛЕНА
+АНДРИЋ ЈЕЛИСАВЕТА
+АНДРИЋ ЈОВИЦА
+АНДРИЋ-КОВАЧЕВИЋ ОЛИВЕРА
+АНДРИЋ ЛАЗАР
+АНДРИЋ ЛАЗА
+АНДРИЋ ЉИЉАНА
+АНДРИЋ ЉИЉАНА
+АНДРИЋ ЛУДМИЛА
+АНДРИЋ МИЛЕ
+АНДРИЋ МИЛОШ
+АНДРИЋ МИЛОШ
+АНДРИЋ НЕБОЈША
+АНДРИЋ НЕСТОР
+АНДРИЋ НИКОЛА
+АНДРИЋ ПЕРИЦА
+АНДРИЋ ПЕТАР
+АНДРИЋ РАДИСАВ
+АНДРИЋ РАДИСЛАВ
+АНДРИЋ САВА
+АНДРИЋ СИМА
+АНДРИЋ СЛАВКА
+АНДРИЋ СЛАВКА
+АНДРИЋ СЛАВОЉУБ
+АНДРИЋ СЛОБОДАН
+АНДРИЋ СТЕВАН
+АНДРИЋ СТЕВАН
+АНДРИЋ ТОДОР
+АНДРИЋ ТОМИСЛАВ
+АНДРИЋ ВЕРИЦА
+АНДРИЋ ВЛАДА
+АНДРИЋ ВЛАДИМИРА
+АНДРИЋ ВУКОМАН
+АНДРИЋ ЗОРА
+АНДРИГА АЛЕКСАНДАР
+АНДРИЈАШЕВ КОСАНА
+АНДРИЈАШЕВ РУЖИЦА
+АНДРИЈАШЕВИЋ ЖЕЉКО
+АНДРИЈАШЕВИЋ АНКА
+АНДРИЈАШЕВИЋ БРАНКО
+АНДРИЈАШЕВИЋ ЈЕЛЕНА
+АНДРИЈАШЕВИЋ РАДОВАН
+АНДРИЈЕВИЋ ЖИВА
+АНДРИЈЕВИЋ ЈОВАН
+АНДРИН АНЂЕЛКА
+АНДРИН ИСИДОР
+АНДРИН КАТИЦА
+АНДРИН МИЛАДИНКА
+АНДРИН НАДА
+АНДРОЦКИ ПАЛ ДИПЛ ИНГ
+АНДУЛАЈЕВИЋ СТЕВО
+АНГЕБРАНТ ИЛОНКА
+АНГЕЛЕСКИ ВАНГЕЛ
+АНГЕЛОВ ДУШАН
+АНГЕЛОВ СРЕЋКО
+АНГЕЛОВСКИ ДУШАН
+АНГЕЛОВСКИ ИЛИЈА
+АНГЕЛОВСКИ ЈАНДРЕ
+АНГЕЛОВСКИ МИТРЕ
+АНГЕЛОВСКИ ТОМО
+АНИЧИЋ ЖИВОТА
+АНИЧИЋ БРАНИСЛАВ
+АНИЧИЋ ДРАГАН
+АНИЧИЋ ДУШАН ДИПЛ ОЕЦ
+АНИЧИЋ ФИЛИП
+АНИЧИЋ ИЛИЈА
+АНИЧИЋ КОВИНКА
+АНИЧИЋ МИЛЕНА ДИПЛ ЕЦЦ
+АНИЧИЋ МИРКО
+АНИЧИЋ МИРО
+АНИЧИЋ МИРО
+АНИЧИЋ НЕНАД
+АНИЧИЋ ОСТОЈА
+АНИЧИЋ ПРЕДРАГ
+АНИЧИЋ СТАКА
+АНИЧИЋ СТОЈАНКА
+АНИЧИЋ ТОДОР
+АНИЧИЋ ЗДРАВКО
+АНИЧИН ЖАРКО
+АНИЧИН БРАНИСЛАВ
+АНИШИЋ ЈАСМИНКА
+АНИЋ ДУШАН
+АНИЋ СЛОБОДАН
+АНИЋ ЗОРА
+АНИКА ГАВРИЛО
+АНИКА ЈУЛИЈЕ ПРОФЕСОР
+АНИТИЋ ИШТВАН
+АНКИЋ МАРЈАН
+АНКИЋ ПЕРИЦА
+АНОЈЧИЋ ЖЕЉКО
+АНОЈЧИЋ ЛАЗАР
+АНОЈЧИЋ МИЛАН
+АНОЈЧИЋ РАДИВОЈ
+АНОЈЧИЋ РАДИВОЈ
+АНОЈЧИЋ СПАСОЈЕ
+АНОЈЧИЋ-СТОЈКОВИЋ ЈАСМИНКА
+АНТАЛ АЛЕКСАНДАР
+АНТАЛ ВЕРОНА
+АНТАНАСИЋ СТАНКО
+АНТАНАСИЈЕВИЋ БОРА
+АНТЕЉЕВИЋ АЛЕКСАНДАР
+АНТИЋ ЂОКА
+АНТИЋ ЂОРЂЕ
+АНТИЋ ЂОРЂЕ
+АНТИЋ АЛЕКСАНДАР
+АНТИЋ АНГЕЛИНА
+АНТИЋ БОШКО
+АНТИЋ БОЖИДАР ДР СТОМАТОЛОГ
+АНТИЋ БОЖИДАР
+АНТИЋ БРАНКО
+АНТИЋ БРАТИСЛАВ
+АНТИЋ ДИМИТРИЈЕ
+АНТИЋ ДРАГАН
+АНТИЋ ДРАГАН
+АНТИЋ ДРАГИША
+АНТИЋ ДУШАНКА
+АНТИЋ ДУШАНКА
+АНТИЋ ЈУЛКА
+АНТИЋ КОСТА
+АНТИЋ ЉУБИША
+АНТИЋ ЛУКА
+АНТИЋ МАРИЦА
+АНТИЋ МАРИЈА
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛИВОЈ
+АНТИЋ МИЛУТИН
+АНТИЋ МИОДРАГ
+АНТИЋ МИРКО
+АНТИЋ МИРКО
+АНТИЋ НЕНАД
+АНТИЋ НЕВЕНА
+АНТИЋ ОЛГА
+АНТИЋ ПАВЛЕ
+АНТИЋ ПАВЛЕ
+АНТИЋ ПАВЛЕ
+АНТИЋ ПЕТАР
+АНТИЋ РАДОЈКО
+АНТИЋ РАДОМИР
+АНТИЋ РАДОВАН
+АНТИЋ СЛАЂАНА
+АНТИЋ СЛАВИЦА
+АНТИЋ СЛОБОДАН
+АНТИЋ СМИЉА
+АНТИЋ СМИЉА
+АНТИЋ СОФИЈА
+АНТИЋ СТАНЧА
+АНТИЋ СТАНИСЛАВ
+АНТИЋ СТАНОЈЕ
+АНТИЋ СТОЈАН
+АНТИЋ СВЕТИСЛАВ
+АНТИЋ СВЕТЛАНА
+АНТИЋ СВЕТОВИД
+АНТИЋ ВЕРИЦА
+АНТИЋ ВУКАШИН
+АНТИЋ ЗАГОРКА
+АНТИЋ ЗЛАТАН
+АНТИН ИВАНКА
+АНТИН ВЕЛЕМИР
+АНТОЛОВИЋ ИВАН
+АНТОНИЋ ЖИВКО ДИПЛ ИНГ
+АНТОНИЋ ЖИВКО
+АНТОНИЋ ЂОРЂЕ
+АНТОНИЋ БОРИВОЈ
+АНТОНИЋ БРАНКО
+АНТОНИЋ ДОБРИВОЈ
+АНТОНИЋ ДРАГАН
+АНТОНИЋ ДРАГАН
+АНТОНИЋ ГОРДАНА
+АНТОНИЋ ЈАДРАНКА
+АНТОНИЋ ЈАСМИНКА
+АНТОНИЋ ЈЕЛЕНА
+АНТОНИЋ ЉУБИЦА
+АНТОНИЋ МАРИЈА
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛИВОЈ
+АНТОНИЋ НЕБОЈША ДИПЛ ИНГ
+АНТОНИЋ РАДИСАВ
+АНТОНИЋ РАНКО
+АНТОНИЋ РАТКО
+АНТОНИЋ СИМА
+АНТОНИЋ СЛАВИЦА
+АНТОНИЋ СЛОБОДАН
+АНТОНИЋ СЛОБОДАН
+АНТОНИЋ СТЕВАН
+АНТОНИЋ ЗОРКА
+АНТОНИЈЕВИЋ АЛЕКСАНДАР
+АНТОНИЈЕВИЋ БИЉАНА
+АНТОНИЈЕВИЋ БОЖУР
+АНТОНИЈЕВИЋ БРАНКО
+АНТОНИЈЕВИЋ ДАМЊАН
+АНТОНИЈЕВИЋ ДУШАН ДР
+АНТОНИЈЕВИЋ ДУШАН
+АНТОНИЈЕВИЋ ЉИЉА
+АНТОНИЈЕВИЋ ПЕТАР
+АНТОНИЈЕВИЋ СТЕВА
+АНТОНИНИ МАРИЈА
+АНТОНОВИЋ МИЛИВОЈ
+АНТОВИЋ ЉУБИЦА
+АНТУН МИЛОШ
+АНТУНОВИЋ АНДРИЈА
+АНТУНОВИЋ БОГДАН
+АНТУНОВИЋ ГИЗЕЛА
+АНТУНОВИЋ ЛАЗАР
+АНТУНОВИЋ МЛАДЕН
+АНТУНОВИЋ МОМЧИЛО
+АНТУНОВИЋ НЕДА
+АНТУНОВИЋ ТОМИСЛАВ
+АНУЧИН НЕНАД
+АНУКИЋ КОСТА
+АПАРАЦ СВЕТОЗАР
+АПАТОВИЋ ЈОВАН
+АПАТОВИЋ ЛАЗАР
+АПАТОВИЋ НИКОЛА
+АПАТОВИЋ САВА
+АПЕРЛИЋ ВОЈИН
+АПИЋ ЂОРЂЕ
+АПИЋ АНКИЦА
+АПИЋ БРАНКО ДР ВЕТЕРИНЕ
+АПИЋ БРАНКО
+АПИЋ ДУШАН
+АПИЋ ЈУЛКА
+АПИЋ КАТАРИНА
+АПИЋ МИЛАН
+АПИЋ МИЛАН
+АПИЋ МИЛИЦА
+АПИЋ МИЛОШ
+АПИЋ МИЛОРАД
+АПИЋ МИРЈАНА
+АПИЋ МИРОСЛАВ
+АПИЋ ОЛИВЕРА
+АПИЋ ПАЈА
+АПИЋ ПАЈА
+АПИЋ РАДИШКО
+АПИЋ РАДИВОЈЕ
+АПИЋ РАТОМИР ДИПЛ ИНГ
+АПИЋ СРЕТА
+АПИЋ СТЕВАН
+АПИЋ СТОЈАН
+АПИЋ СВЕТОЗАР
+АПИЋ СВЕТОЗАР
+АПИЋ ВЕРА
+АПИЋ ЗДРАВКО
+АПИЋ ЗОРКА
+АПОСТОЛОВ ЉУБОМИР
+АПОСТОЛОВИЋ БОЖИДАР
+АПОСТОЛОВИЋ МИЛОРАД
+АПРО ФРАЊА
+АПРО ЈАНОШ
+АПРО ЈОЖЕФ
+АПРО ЛАСЛО
+АПРО ЉУБОМИР
+АПРО РИХАРД
+АПРО-САМАРЏИЈА ВЕРА ДР
+АПРО СТЕВАН
+АПРО ЗОЛТАН
+АПТ БОГОЉУБ
+АПТ МАРКО
+АРШИНОВ ЂОРЂЕ
+АРШИНОВ МИЛОРАД
+АРЂЕЛАМ-ШРАК ЕДИТ
+АРЂЕЛАН ИШТВАН
+АРАЧИЋ СЛОБОДАН
+АРАЂАНИН ТИМОТИЈЕ
+АРАЂАНСКИ КАТИЦА
+АРАЂАНСКИ НАДА
+АРАЂАНСКИ-РАЈКОВ МАЈА
+АРАЦКИ ЕРЖИКА
+АРАЦКИЋ ЂОРЂЕ
+АРАЦКИЋ МИЛИЦА
+АРАЦКИЋ ЗЛАТОЈЕ ДИПЛ ПРАВНИК
+АРАДСКИ АЛЕКСАНДАР ДИПЛ ИНГ
+АРАДСКИ ИВАНКА
+АРАДСКИ МИЛОРАД
+АРАДСКИ МИТА
+АРАДСКИ РАДИВОЈ
+АРАДСКИ СОФИЈА
+АРАДСКИ СРЕТЕНКА
+АРАДСКИ СТОЈАНКА
+АРАДСКИ ЗЛАТА
+АРАЛИЦА РАЈКО
+АРАМБАШИЋ ЂОРЂЕ
+АРАМБАШИЋ ДРАГАН
+АРАНЧИЋ АЛЕКСАНДАР
+АРАНЧИЋ КАРЛО
+АРАНЂЕЛОВИЋ АЛЕКСАНДАР
+АРАНЂЕЛОВИЋ БОЖИДАР
+АРАНЂЕЛОВИЋ ДИМИТРИЈЕ
+АРАНЂЕЛОВИЋ ЊЕГОВАН
+АРАНЂЕЛОВИЋ САВА
+АРАНЂЕЛОВИЋ СРЕТЕН
+АРАНЂУС АНТОН
+АРАНИЦКИ ДИНКА
+АРАНИЦКИ ГЛИГОРИЈЕ
+АРАНИЦКИ МИЛАНА
+АРАНИЦКИ МИЛИЦА
+АРАНИЦКИ МИЛОШ ДР ПРОФ
+АРАНИЦКИ ЗАГОРКА
+АРАНИЦКИ ЗОРИЦА
+АРАНИТОВИЋ ЛАЗАР
+АРАЊОШ ПАЛ
+АРАПЧИЋ ПАШАГА
+АРАПИНАЦ МИЛИЦА
+АРАПОВИЋ ДРАГО
+АРАПОВИЋ ДРАГУТИН
+АРАР ПЕТАР
+АРАС БРАНКО
+АРАС ЈУГОСЛАВ
+АРАС ЉУБО
+АРБЕС НЕНАД
+АРБУНИЋ ПЕРА
+АРБУТИНА ЂУРЂИНКА
+АРБУТИНА БРАНИСЛАВ
+АРБУТИНА МАРИЈА
+АРБУТИНА НАТАЛИЈА
+АРБУТИНА ВЕЛИМИР
+АРБУТИНА ВЛАДИМИР
+АРЏОН НАТАЛИЈА
+АРДАЛИЋ ЈОВАНКА
+АРДАЛИЋ ЛЕПОСАВА
+АРДАЛИЋ СЛАВКО
+АРДЕЉАН ЈОН
+АРДЕЉАН МАРИЈА
+АРДЕЉАН ПЕТАР
+АРДОЦКИ ИШТВАН
+АРЕЖИНА ЂОРЂЕ
+АРЕЖИНА БОШКО
+АРИФИ ИБРАХИМ
+АРИФОВИЋ СРБИЦА
+АРИЗАТОВИЋ ЈАСМИНА
+АРКУЛА БЛАЖЕ
+АРКУЛА СЛАВИЦА
+АРКУЛА СЛАВИЦА
+АРЛОВ ДРАГАН
+АРМАЦКИ БРАНИСЛАВ
+АРМАЦКИ РАДОВАН
+АРМАЦКИ СОФИЈА
+АРМАЦКИ СТЕВАН
+АРМБРУСТЕР ЛАСЛО
+АРМБРУСТЕР МАРИЈА
+АРНАУТ ЂОРЂЕ
+АРНАУТ ДРАГИЊА
+АРНАУТ МИЛИЦА
+АРНАУТ ВАСА
+АРНОУС ТЕРЕЗА
+АРНОВЉЕВИЋ КАТАРИНА
+АРОК-ДИВЈАК ГОРДАНА
+АРПАШИ ЂОРЂЕ
+АРПАШИ ЛАСЛО
+АРСЕНИЋ ЖИВКО
+АРСЕНИЋ БРАТИСЛАВА
+АРСЕНИЋ ДИМИТРИЈЕ
+АРСЕНИЋ ДРАШКО
+АРСЕНИЋ ЈОВАНКА
+АРСЕНИЋ МОМИР
+АРСЕНИЋ ОЛГИЦА
+АРСЕНИЋ ВЕЉКО
+АРСЕНИЈЕВИЋ БОРИСЛАВ
+АРСЕНИЈЕВИЋ ЈОВАН
+АРСЕНИЈЕВИЋ МИЛАН
+АРСЕНИЈЕВИЋ МИЛОРАД
+АРСЕНИЈЕВИЋ МИЛОВАН
+АРСЕНИЈЕВИЋ МИЛУНКА
+АРСЕНИЈЕВИЋ МОМЧИЛО ДР
+АРСЕНИЈЕВИЋ МОМЧИЛО
+АРСЕНИЈЕВИЋ МОМИР
+АРСЕНИЈЕВИЋ СЛАВКА
+АРСЕНИЈЕВИЋ СМИЉА
+АРСЕНИЈЕВИЋ ВОЈИСЛАВ
+АРСЕНИЈЕВИЋ ВОЈИСЛАВ
+АРСЕНИН ЂУРЂИНКА
+АРСЕНИН АЛЕКСАНДАР
+АРСЕНИН АЛЕКСАНДАР
+АРСЕНИН БОГОЉУБ
+АРСЕНИН ГАЈА
+АРСЕНИН ЈОВАН
+АРСЕНИН ЈОВАН
+АРСЕНИН КОСТА
+АРСЕНИН КРИСТИНА
+АРСЕНИН МАРИЈА
+АРСЕНИН МИТА
+АРСЕНИН МЛАДЕН
+АРСЕНИН МЛАДЕН
+АРСЕНИН СВЕТОЗАР
+АРСЕНИН ВИТОМИР
+АРСЕНИН ВЛАДИМИР
+АРСЕЊЕВ АЛЕКСЕЈ
+АРСЕНОВ АЛЕКСА
+АРСЕНОВ АРИШКО
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ ДРАГИЦА
+АРСЕНОВ КАТИЦА
+АРСЕНОВ МИЛАН
+АРСЕНОВ МИРОСЛАВ
+АРСЕНОВ ПЕРА
+АРСЕНОВ ПЕТАР
+АРСЕНОВ ПЕТАР
+АРСЕНОВ РАДИВОЈ
+АРСЕНОВ САША
+АРСЕНОВ ВАСИЛИЈЕ
+АРСЕНОВИЋ ЖИВКО
+АРСЕНОВИЋ МАРИЦА
+АРСЕНОВИЋ НАДА ДР
+АРСЕНОВИЋ РАДИСАВ
+АРСЕНОВИЋ РАДОМИР
+АРСЕНОВИЋ САВО
+АРСЕНОВИЋ СРЂАН
+АРСЕНОВИЋ СТОЈАДИН
+АРСЕНОВИЋ ТРИВО
+АРСЕНОВИЋ ВЕСНА
+АРСЕНОВИЋ ВЛАДА
+АРСЕНОВИЋ ЗОРАН
+АРСИЋ ЧЕДОМИР
+АРСИЋ ЖАРКО
+АРСИЋ ЖИВКО
+АРСИЋ АЛЕКСАНДАР
+АРСИЋ ДОБРИВОЈЕ
+АРСИЋ ДУШКО
+АРСИЋ ЕРЖЕБЕТ
+АРСИЋ ЛАЗАР
+АРСИЋ ЛИДИЈА
+АРСИЋ ЉУБИША
+АРСИЋ МАРИЈА
+АРСИЋ МИХАИЛО
+АРСИЋ МИХОЉКА
+АРСИЋ МИЛОШ
+АРСИЋ МИЛОСЛАВ ДР
+АРСИЋ МИЛУТИН
+АРСИЋ МИОДРАГ
+АРСИЋ МИОМИР
+АРСИЋ МИРЈАНА
+АРСИЋ МИРЈАНА
+АРСИЋ МОМЧИЛО
+АРСИЋ ОБРАД
+АРСИЋ ПЕРИЦА
+АРСИЋ ПЕТАР
+АРСИЋ РАДОМИР
+АРСИЋ РАДОСАВ
+АРСИЋ САВЕТА
+АРСИЋ СЛАВКА
+АРСИЋ СЛАВОЈКА
+АРСИЋ СЛАВОЉУБ
+АРСИЋ СТАНКО
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТРАЈАН
+АРСИЋ ЗОРАН
+АРСИЋ ЗОРАН
+АРСИЋ ЗОРАН
+АРСИКИН МИЛАНКО
+АРСИКИН ПАВЛЕ
+АРСЛАНАГИЋ НАЂА
+АРСОВИЋ АЛЕКСАНДАР
+АРСОВИЋ ДОБРОСАВ
+АРСОВИЋ ЈОВАН
+АРСОВИЋ МАТЕЈА
+АРСОВИЋ МИЛАН
+АРСОВИЋ МИЛИЦА
+АРТ ЂУРА
+АРТ ЗВОНИМИР
+АРТУКОВ ДУШАН
+АРТУКОВ ОЛГА
+АРУЛА МИЋО
+АРВАИ АЛЕКСАНДАР
+АРВАИ АРПАД
+АРВАИ ДАНИЦА
+АРВАИ ПАВАО
+АРВАИ ТЕРЕЗА
+АРВАЈИ ПАВАО
+АРВАНИТИДИС СТЕРЈОС
+АСАНИ АСАН
+АСАНИ ХУРИША
+АСАНИ НАИЉА
+АСАНИ НАЗИФА
+АСАНОВ ЗОРА
+АСАНОВИЋ МИЛЕВА
+АСАНОВИЋ СТАНКА
+АСАНОВИЋ ЗУХРА
+АСАНОВСКИ РОЗАЛИЈА
+АСИЋ МИЛАН
+АСОДИ ЈАНОШ
+АСОДИ ЈОЖЕФ
+АСОДИ МИРКО
+АСОТИЋ МУАМЕР
+АСТАХОВ-ЈЕРЕМИЋ МАРИЈА
+АСТАЛОШ ИШТВАН
+АСУРЏИЋ КРИСТИНА
+АСУРЏИЋ ЛУКА
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МОЛОШ
+АСУРЏИЋ НИКОЛА
+АСУРЏИЋ НИКОЛА
+АСУРЏИЋ СОФИЈА
+АСУРЏИЋ СТЕВАН
+АСУРЏИЋ ТЕОДОР
+АСУРЏИЋ ТЕОДОР
+АТАНАЦКОВ ЂОРЂЕ
+АТАНАЦКОВ БОРА
+АТАНАЦКОВ БОРИВОЈ
+АТАНАЦКОВ ДРАГАН
+АТАНАЦКОВ ИЛОНА
+АТАНАЦКОВ МАРИЈА
+АТАНАЦКОВ МИРЈАНА
+АТАНАЦКОВ МИРКО
+АТАНАЦКОВ НОВА
+АТАНАЦКОВ ОЛГА
+АТАНАЦКОВ ПАВЛЕ
+АТАНАЦКОВ САША
+АТАНАЦКОВ СТЕВАН
+АТАНАЦКОВ СТЕВАН
+АТАНАЦКОВИЋ ЖИВАН
+АТАНАЦКОВИЋ ЂОРЂЕ
+АТАНАЦКОВИЋ АЛЕКСАНДАР
+АТАНАЦКОВИЋ АНА
+АТАНАЦКОВИЋ БОГОБОЈ
+АТАНАЦКОВИЋ БОРИСЛАВ
+АТАНАЦКОВИЋ БОРИСЛАВ
+АТАНАЦКОВИЋ БРАНКА ДИПЛ ПРАВНИК
+АТАНАЦКОВИЋ ДРАГИША ДР
+АТАНАЦКОВИЋ ДУШАН ДР ЛЕКАР
+АТАНАЦКОВИЋ ГРАДИМИР
+АТАНАЦКОВИЋ ИВАН
+АТАНАЦКОВИЋ КАТАРИНА
+АТАНАЦКОВИЋ ЛАЗА
+АТАНАЦКОВИЋ ЛУКА
+АТАНАЦКОВИЋ МИЛЕНКО
+АТАНАЦКОВИЋ МИЛЕНКО
+АТАНАЦКОВИЋ МИРКО
+АТАНАЦКОВИЋ МЛАДЕН
+АТАНАЦКОВИЋ РАТКО
+АТАНАЦКОВИЋ САВА
+АТАНАЦКОВИЋ СЛАЂАНА
+АТАНАЦКОВИЋ СТЕВАН
+АТАНАЦКОВИЋ СВЕТОМИР
+АТАНАЦКОВИЋ ТЕОДОР ДР
+АТАНАЦКОВИЋ ТОША
+АТАНАЦКОВИЋ ВАСИЉКА
+АТАНАЦКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+АТАНАЦКОВИЋ ЗОРАН
+АТАНАСИАДИС ХРИСТОФОРОС
+АТАНАСИЈАДИС АНЕСТИ
+АТАНАСКОВИЋ ГОРДАНА
+АТАНАСКОВИЋ МИРЈАНА
+АТАНАСКОВИЋ МИРОЉУБ
+АТАНАСОСКИ СТЕВО
+АТАНАСОВ МАРКО
+АТАНАСОВСКИ РИСТО
+АТАРАЦ ДРАГОШ
+АТЕЉЕВИЋ ДУШАН
+АТЕЉЕВИЋ МИЛОВАН
+АТИЋ ДАНИЦА
+АТЛАГИЋ БРАНКО
+АТЛАГИЋ ЈОВАН
+АТЛАГИЋ МИЛАН
+АТЛАГИЋ МИЛИЦА
+АТЛАГИЋ ЗДРАВКО
+АТЛАГИЋ ЗДРАВКО
+АТЛАС ЂОРЂЕ ДР
+АТЛАС ИВАН
+АТЛАС МИРКО
+АТЛИЋ ЛАЗАР
+АТЛИЋ МИЛАН
+АУЖИНА МИЛИЦА
+АУЖИНА МИРА
+АУЖИНА МИРОСЛАВА
+АУЕР МАРА
+АУГУСТИН ИВИЦА
+АУГУСТИНОВ АНТОН
+АУГУСТИНОВ ИВАН
+АУЛИК ИЛОНА
+АУРЕЛИЈАН ЂАН
+АВАКУМОВИЋ ЉУБИНКА
+АВАКУМОВИЋ НИКОЛА
+АВДАЛОВИЋ ГОРДАНА
+АВДАЛОВИЋ МИЛАДИН
+АВДАЛОВИЋ ВИДОСАВА
+АВДАЛОВИЋ ВЛАДИМИР
+АВДИ РАМАДАН
+АВДИЋ АЛЕКСАНДАР
+АВДИЋ ФУАД
+АВДИЋ ГОРДАНА
+АВДИЋ ХУСНИЈА
+АВДИЋ МАЛИЋ
+АВДИЋ МУЛИЈА
+АВЕМАРИА ПЕТАР
+АВРАМОВ БОШКО
+АВРАМОВ БРАНИСЛАВ
+АВРАМОВ ДИМИТРИЈЕ
+АВРАМОВ ДОБРИЛА
+АВРАМОВ ГАВРА
+АВРАМОВ ИВАН
+АВРАМОВ ЈОВАНКА
+АВРАМОВ ЈОВАН
+АВРАМОВ ЉИЉАНА
+АВРАМОВ МИЛАДИН
+АВРАМОВ МИЛЕВА
+АВРАМОВ МИЛКА
+АВРАМОВ МИРЈАНА
+АВРАМОВ МИТА
+АВРАМОВ ПАЈА
+АВРАМОВ ПЕРА
+АВРАМОВ ПЕТАР
+АВРАМОВ РАДИВОЈ
+АВРАМОВ СТЕВАН
+АВРАМОВ СВЕТОЛИК
+АВРАМОВ СВЕТОЛИК
+АВРАМОВ ЗОРАН
+АВРАМОВ ЗОРАН
+АВРАМОВИЋ ЖИВКО
+АВРАМОВИЋ БОРИВОЈЕ
+АВРАМОВИЋ ДАРИНКА
+АВРАМОВИЋ ДИМИТРИЈЕ
+АВРАМОВИЋ ДИМИТРИЈЕ
+АВРАМОВИЋ ДРАГО
+АВРАМОВИЋ ФРАНЦИШКА
+АВРАМОВИЋ ГОЈКО
+АВРАМОВИЋ ИЛИНКА
+АВРАМОВИЋ ЈОВАН ДР ЛЕКАР
+АВРАМОВИЋ ЉУБИША
+АВРАМОВИЋ ЉУБИНКО
+АВРАМОВИЋ ЉУБОМИР
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛИВОЈ
+АВРАМОВИЋ МИРЈАНА
+АВРАМОВИЋ МИТА
+АВРАМОВИЋ МОМИР
+АВРАМОВИЋ НИКОЛА
+АВРАМОВИЋ РАДИВОЈ
+АВРАМОВИЋ РАДОСЛАВ
+АВРАМОВИЋ РАТКО
+АВРАМОВИЋ РАТКО
+АВРАМОВИЋ СИНИША
+АВРАМОВИЋ СТАНКА
+АВРАМОВИЋ СТЕВАН
+АВРАМОВИЋ ТЕОДОР
+АВРАМОВИЋ ТОМА
+АВРАМОВИЋ ВЕЉКО
+АВРАМОВИЋ ВЕРА
+АВРАМОВИЋ ВЕРА
+АВРАМОВИЋ ВЕРА
+АВРАМОВСКИ БОРИС
+АЗЛЕН БОРИСЛАВ
+БАЧА ШАНДОР
+БАЧА ЛАДИСЛАВ
+БАЧАНОВИЋ НЕНАД
+БАЧИЋ ЧЕДОМИР ПРОФЕСОР
+БАЧИЋ ЖИВКО
+БАЧИЋ ЂОРЂЕ
+БАЧИЋ АНТЕ
+БАЧИЋ БРАНКА
+БАЧИЋ ДРАГОСЛАВ
+БАЧИЋ ЈОВАН
+БАЧИЋ КАРА
+БАЧИЋ МАРИЈА
+БАЧИЋ МИЛАН ДР ВЕТЕРИНЕ
+БАЧИЋ МИЛИЦА
+БАЧИЋ МИРКО
+БАЧИЋ НИКОЛА
+БАЧИЋ СМИЉАНА
+БАЧКАЛИЋ ЂОРЂЕ
+БАЧКАЛИЋ АЛЕКСАНДАР
+БАЧКАЛИЋ ДОБРА
+БАЧКАЛИЋ ДОБРИЦА
+БАЧКАЛИЋ ЈОВАН
+БАЧКАЛИЋ ЛАЗАР
+БАЧКАЛИЋ ЉУБИЦА
+БАЧКАЛИЋ ЉУБОМИР
+БАЧКАЛИЋ МИЛАН
+БАЧКАЛИЋ МИЛА
+БАЧКАЛИЋ НОВАК
+БАЧКО МИЛАНА
+БАЧКО ПЕТАР
+БАЧЛИЋ ЂОРЂЕ
+БАЧЛИЋ БРАНИСЛАВ
+БАЧЛИЋ ЛАЗАР
+БАЧЛИЋ ЉУБИЦА
+БАЧЛИЈА ЈОСИП
+БАЧЛИЈА МАРКО
+БАЧЛИЈА РУЖИЦА
+БАЧЛИЈА СЛАВИЦА
+БАЧУЛОВ СТЕВАН
+БАЧВАНИН ЖИВОЈИН
+БАЧВАНСКИ БОШКО
+БАЧВАНСКИ СТЕВАН ДР ИНГ
+БАШ ЈУЛИА
+БАША ДУШАН
+БАША ЈОВАН
+БАШЕВИЋ ЧЕДОМИР
+БАШЕВИЋ НЕВЕНКА
+БАШИЧЕВИЋ ВОЈИН ДР
+БАШИЧЕВИЋ ВОЈИН
+БАШИЋ ЖАРКО
+БАШИЋ ЂУРО
+БАШИЋ АЛЕКСАНДАР
+БАШИЋ БИЉАНА
+БАШИЋ БОЖО
+БАШИЋ ДРАГУТИН
+БАШИЋ ДРАГУТИН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ФРАЊО
+БАШИЋ ГАВРА
+БАШИЋ ГРУЈИЦА
+БАШИЋ ИДРИЗ
+БАШИЋ ИЛИЈА
+БАШИЋ ЈАНКО
+БАШИЋ ЈЕЛА
+БАШИЋ ЈЕЛЕНА
+БАШИЋ ЈОВАН
+БАШИЋ ЈОВАН
+БАШИЋ ЈУРЕ
+БАШИЋ ЛАЗАР
+БАШИЋ ЉУБИЦА
+БАШИЋ ЉУБИЦА
+БАШИЋ ЛУКА
+БАШИЋ МАРИЈА
+БАШИЋ МИЛАН
+БАШИЋ МИЛАН
+БАШИЋ МИЛА
+БАШИЋ МИЛИЦА
+БАШИЋ МИЛУТИН ДИПЛ ИНГ
+БАШИЋ МИТА
+БАШИЋ НЕДЕЉКА
+БАШИЋ НЕСТОР
+БАШИЋ НИКОЛА
+БАШИЋ ПАВЛЕ
+БАШИЋ ПЕТАР
+БАШИЋ РАДОСЛАВ
+БАШИЋ САВА
+БАШИЋ САВА
+БАШИЋ СИМКА
+БАШИЋ СЛОБОДАНКА
+БАШИЋ СЛОБОДАНКА
+БАШИЋ СЛОБОДАН
+БАШИЋ СЛОБОДАН
+БАШИЋ СОЊА
+БАШИЋ СПАСОЈЕ
+БАШИЋ СТЕВАН
+БАШИЋ ТОМИСЛАВ
+БАШИЋ ВЕРА
+БАШИЋЕВИЋ ДЕСА
+БАШИЦА МИЛАН
+БАШИЦА РАНКО
+БАШИЦА РИСТО
+БАШКАЛО МАРКО
+БАШНЕЦ ИВАН
+БАШТИЋ БОЖИДАР
+БАШТИЋ МИЛКА
+БАШТИЋ ПЕТАР
+БАШТОВАНОВ ДАНИЦА
+БАШТОВАНОВ СТЕВАН
+БАШТОВАНОВИЋ ИВАН
+БАШТОВАНОВИЋ МИЛАН
+БАЋАН ДРАГОМИР
+БАЋАНОВ ДРАГИЦА
+БАЋАНОВ СТАНКО
+БАЋАНОВ СТЕВАН
+БАЋАНОВИЋ ДАНИЦА
+БАЋАНОВИЋ ЈУЦА
+БАЋАНОВИЋ МИЛАН
+БАЋАНОВИЋ МИЛОШ
+БАЋАНОВИЋ НЕМАЊА
+БАЋАНОВИЋ СИНИША
+БАЋАНОВИЋ СТОЈАН
+БАЋИЋ ЉИЉАНА
+БАЋИЋ ЉУБОМИР
+БАЋИНА МЛАДЕН
+БАЋИНАЦ РАДОСЛАВ
+БАЖАНЧИК БЕЛА
+БАЖАНТИК МАРА
+БАЖДАР БРУНО
+БАЖДАР МИЛОРАД
+БАЖЕНОВ АНГЕЛИНА
+БАЂИ ШАНДОР
+БАЂИ-РИБАР РЕНАТА
+БАЂИН СМИЉКА
+БАБА ИЛОНКА
+БАБА ЈАНОШ
+БАБА ЈОН
+БАБАЈИЋ АЛЕКСАНДАР
+БАБАРИКИН МАРКО
+БАБЕЦ ЗОРАН
+БАБИ ИВАН
+БАБИЋ ЖАРКО
+БАБИЋ ЖЕЉКА
+БАБИЋ ЖИВАН
+БАБИЋ ЖИВАН
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂУРЂИЦА
+БАБИЋ ЂУРА
+БАБИЋ ЂУРА
+БАБИЋ ЂУРО
+БАБИЋ АЦА
+БАБИЋ АИДА
+БАБИЋ АЛЕКСАНДАР
+БАБИЋ АЛЕКСАНДАР
+БАБИЋ АЛЕКСАНДРА
+БАБИЋ АЛЕКСА
+БАБИЋ АЛКА
+БАБИЋ АНА
+БАБИЋ АНА
+БАБИЋ АНА
+БАБИЋ БИЉАНА
+БАБИЋ БОЖИЦА
+БАБИЋ БОЖИДАРКА
+БАБИЋ БОГДАН
+БАБИЋ БОЈА
+БАБИЋ БОРИША
+БАБИЋ БОРИСЛАВА
+БАБИЋ БОРИВОЈЕ
+БАБИЋ БРАНКО
+БАБИЋ ЦВИЈО
+БАБИЋ ДАНЕ
+БАБИЋ ДАРИНКА
+БАБИЋ ДАВИД
+БАБИЋ ДРАШКО
+БАБИЋ ДРАГАНА
+БАБИЋ ДРАГАН
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГО
+БАБИЋ ДУШАНКА
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШИЦА
+БАБИЋ ГОЈКО
+БАБИЋ ГОЈКО
+БАБИЋ ГОРАН
+БАБИЋ ГОРДАНА
+БАБИЋ ГОРИЦА
+БАБИЋ ГОСПАВА
+БАБИЋ ХЕЛЕНА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИНКА
+БАБИЋ ИВАН
+БАБИЋ ИВАН
+БАБИЋ ИВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ КАТИЦА
+БАБИЋ КАЗИМИР
+БАБИЋ-КОПЉАН РОЖА
+БАБИЋ КОСА
+БАБИЋ КОСТАДИН
+БАБИЋ КОСТА
+БАБИЋ КРСТА
+БАБИЋ ЛАЗО
+БАБИЋ ЛАЗО
+БАБИЋ ЛЕОНИД
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉУБИША
+БАБИЋ ЉУБИЦА
+БАБИЋ ЉУБОМИР
+БАБИЋ ЉУБОМИР
+БАБИЋ ЛУКА
+БАБИЋ МАЈА
+БАБИЋ МАРИЈАНА
+БАБИЋ МАРИЈА
+БАБИЋ МАРИНКО
+БАБИЋ МАРКО
+БАБИЋ МАТО
+БАБИЋ МИЈО
+БАБИЋ МИЛАДИН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛЕТА
+БАБИЋ МИЛЕВА
+БАБИЋ МИЛЕВА
+БАБИЋ МИЛИЋ
+БАБИЋ МИЛИВОЈЕ ДИПЛ ИНГ
+БАБИЋ МИЛИВОЈ
+БАБИЋ МИЛИВОЈ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОСАВ
+БАБИЋ МИРА
+БАБИЋ МИРА
+БАБИЋ МИРЈАНА
+БАБИЋ МИРОСЛАВ
+БАБИЋ МИРОСЛАВ
+БАБИЋ МИРОСЛАВ
+БАБИЋ МОМЧИЛО
+БАБИЋ МОМИР
+БАБИЋ-МРКШИЋ ЈУЛКА
+БАБИЋ МУРИЗ
+БАБИЋ НАДА
+БАБИЋ НАДА
+БАБИЋ НАДА
+БАБИЋ НАТАША
+БАБИЋ НЕДЕЉКО
+БАБИЋ НЕНАД
+БАБИЋ НИКОЛА
+БАБИЋ НИКОЛА
+БАБИЋ НИКОЛА
+БАБИЋ ОЛГИЦА
+БАБИЋ ОСТОЈА
+БАБИЋ ОСТОЈА
+БАБИЋ ПЕРСА
+БАБИЋ ПЕРСИДА
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПРЕДРАГ
+БАБИЋ РАДЕНКО
+БАБИЋ РАДЕ
+БАБИЋ РАДЕ
+БАБИЋ РАДИНКА
+БАБИЋ РАДИСАВ
+БАБИЋ РАДИВОЈЕ
+БАБИЋ РАДОЈЕ
+БАБИЋ РАДОЈКА
+БАБИЋ РАДОЈКА
+БАБИЋ РАДОМИР
+БАБИЋ РАДОСЛАВ
+БАБИЋ РАДОВАН
+БАБИЋ РАДОВАН
+БАБИЋ РАЈКО
+БАБИЋ РАЈКО
+БАБИЋ РАНКО
+БАБИЋ САША
+БАБИЋ САВО
+БАБИЋ СЛАДЕ
+БАБИЋ СЛАВИЦА
+БАБИЋ СЛОБОДАН
+БАБИЋ СЛОБОДАН
+БАБИЋ СМИЉКА
+БАБИЋ СМИЉКА
+БАБИЋ СНЕЖАНА
+БАБИЋ СОФИЈА
+БАБИЋ СТАКА
+БАБИЋ СТАНКО
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВО
+БАБИЋ СВЕТЛАНА
+БАБИЋ СВЕТЛАНА
+БАБИЋ ТОМО
+БАБИЋ ВАСА
+БАБИЋ ВАСА
+БАБИЋ ВЕРА
+БАБИЋ ВЕРИЦА
+БАБИЋ ВЕСНА
+БАБИЋ ВИДОСАВА
+БАБИЋ ВУЈО
+БАБИЋ ВУКМАН
+БАБИЋ ЗАГОРКА
+БАБИЋ ЗДРАВКО
+БАБИЋ ЗОРАН
+БАБИЋ ЗОРАН
+БАБИЋ ЗОРКА
+БАБИЈАНОВИЋ ЈУЛКА
+БАБИЛОН ВЛАДИМИР
+БАБИЛОН ВЛАДИМИР
+БАБИН ЂОРЂЕ
+БАБИН БОГДАН
+БАБИН БРАНИСЛАВ
+БАБИН ДИМИТРИЈЕ
+БАБИН ДУШАН
+БАБИН ЈОВАН
+БАБИН КАТАРИНА
+БАБИН КРИСТИНА
+БАБИН ЛАЗАР
+БАБИН ЉУБОМИР
+БАБИН МАРИЈА
+БАБИН МАРИН
+БАБИН МИХАЈЛО
+БАБИН МИЛАН
+БАБИН МИЛЕНА
+БАБИН МИЛЕНКО ДР ИНГ
+БАБИН МИЛЕНКО
+БАБИН МИОДРАГ
+БАБИН МИРЈАНА
+БАБИН МИРЈАНА
+БАБИН НАДА
+БАБИН НИКОЛА
+БАБИН ПЕТАР
+БАБИН РАДОЈКА
+БАБИН САВА
+БАБИН ЗОРАН
+БАБЈАК СЛОБОДАН
+БАБКА ЈАН
+БАБОРАЦ ДРАГАН
+БАБОВИЋ ЧЕДОМИР
+БАБОВИЋ БРАНИСЛАВ
+БАБОВИЋ ЈАСМИНА
+БАБОВИЋ ЈЕЛЕНА
+БАБОВИЋ ЈОВАН
+БАБОВИЋ ЉУБОМИР
+БАБОВИЋ МИХАИЛО
+БАБОВИЋ МИЛИСАВ
+БАБОВИЋ МОМЧИЛО
+БАБОВИЋ СИНИША ДР
+БАБОВИЋ ТОМИСЛАВ
+БАБОВИЋ ЗОРА
+БАЦКОВИЋ ДОБРОСЛАВ
+БАЦКОВИЋ ДРАГАН
+БАЦКОВИЋ МАРИЈА
+БАЦКОВИЋ МИЛИЦА
+БАЦКОВИЋ МИЛИВОЈЕ
+БАЦКОВИЋ МИЛОРАД
+БАЦКОВИЋ МИЛОВАН
+БАЦКОВИЋ РАДИВОЈЕ
+БАДА ИШТВАН
+БАДАЛИЋ МАЈДА
+БАДАЊАЦ ЈЕЛЕНА
+БАДЊАР МИЛАН
+БАДЊАР МИЛИВОЈЕ
+БАДЊАР ВЛАДО
+БАДЊАРЕВИЋ АЛЕКСАНДАР ДИПЛ ПРАВНИК
+БАДЊАРЕВИЋ БОЖИДАР
+БАДЊАРЕВИЋ МИЛАНА
+БАДЊАРЕВИЋ МИОДРАГ
+БАДЊАРЕВИЋ РАДОШ
+БАДЊАРЕВИЋ СТАНА
+БАДОВИНАЦ ДРАГУТИН
+БАДОВИНАЦ НИКОЛА
+БАДРКИЋ НИКОЛА
+БАДРЉИЦА ДУШИЦА
+БАДРЉИЦА ГАВРА
+БАДРЉИЦА ЛАЗАР
+БАДРЉИЦА МЛАДЕН
+БАДРЉИЦА ОЛГА
+БАДРЉИЦА ПЕТАР
+БАДРЉИЦА РАДОЈКА
+БАФУС ЛАСЛО
+БАГИ ЂУЛА
+БАГИ-БЕНКОВИЋ ПАЛ
+БАГИ ФЕРЕНЦ
+БАГИ ИШТВАН
+БАГИ ЈАНОШ
+БАГИЋ МИРЈАНА
+БАГИЊ ЛАЗАР
+БАГИЊ ЛЕПОСАВА
+БАГЛАВА МИЛАН
+БАГОЊА ЈАН
+БАГОЊА МАРИЈА
+БАГОЊА НАДА
+БАХ ЕРНА
+БАХМАН МАРКО
+БАХТИЈАРЕВИЋ ЈЕЛА
+БАХУН НИКОЛА
+БАХУН ПЕТАР
+БАИЋ МИРКО
+БАИЋ СТАНА
+БАЈЧЕТА МОМЧИЛО
+БАЈЧЕТА РАДОСЛАВ
+БАЈЧЕТИЋ БОГДАН ДР
+БАЈЧЕТИЋ ЉУБИЦА
+БАЈЧЕТИЋ МАРИЈА
+БАЈЧЕТИЋ МАРКО
+БАЈЧЕТИЋ МИЛЕНКО
+БАЈЧЕТИЋ МИРКО
+БАЈЧЕТИЋ ПАВЛЕ
+БАЈЧЕТИЋ ПЕТАР
+БАЈЧЕВ ЈОВАН
+БАЈЧЕВ МИРЈАНА
+БАЈШАНСКИ ДРАГОСЛАВ
+БАЈШАНСКИ ЈОВАН
+БАЈШАНСКИ ЉИЉАНА
+БАЈШАНСКИ МИЛАДИН
+БАЈШАНСКИ МИЛЕНКО
+БАЈШАНСКИ РАДОВАН
+БАЈШАНСКИ САВА
+БАЈШАНСКИ САВА
+БАЈШАНСКИ СМИЉА
+БАЈШАНСКИ ЗОРАН
+БАЈШЕВ ДРАГОМИР
+БАЈШЕВ ИЛИЈА
+БАЈШЕВ МИЛИЦА
+БАЈШЕВ СТЕВАН
+БАЈШЕВ СВЕТИСЛАВ
+БАЈШИЋ ЖАРКО
+БАЈШИЋ ДРАГАН
+БАЈШИЋ МИЛАН
+БАЈА ЂОРЂЕ
+БАЈА СТЕВАН
+БАЈАЦ БОРИСЛАВ
+БАЈАЦ ЕМИЛИЈА ДР
+БАЈАЦ ИСАК
+БАЈАЦ ЉУБИЦА
+БАЈАЦ МИЛАН
+БАЈАЦ МИЛОШ
+БАЈАЦ МИЛУТИН
+БАЈАЦ СВЕТЛАНА
+БАЈАЦ ВЕРА
+БАЈАГИЋ КАТИЦА
+БАЈАГИЋ МИЛЕНА
+БАЈАГИЋ МИОДРАГ
+БАЈАГИЋ МОМЧИЛО
+БАЈАГИЋ МОМЧИЛО
+БАЈАГИЋ ПЕТАР
+БАЈАГИЋ РАДА
+БАЈАГИЋ РАДЕ
+БАЈАГИЋ САВО
+БАЈАГИЋ СВЕТОЗАР
+БАЈАГИЋ ТАМАРА
+БАЈАКИЋ МАРА
+БАЈАЛО ЈОВАНКА
+БАЈАЛОВИЋ СОФИЈА
+БАЈАЛОВИЋ СВЕТИСЛАВ
+БАЈАТ МИЛОРАД
+БАЈАТ МИРКО
+БАЈАТ МИРКО
+БАЈАТ НЕДЕЉКО
+БАЈАТ НИКОЛА
+БАЈАТ РАДОВАН
+БАЈАТ ТРИФУН
+БАЈАТ ВЕЛИМИР
+БАЈАЗЕТ ЈЕВГЕНИЈА
+БАЈАЗЕТ ТОДОР
+БАЈАЗЕТ ВЕРА ДИПЛ ИНГ
+БАЈАЗЕТОВ ДРАГАН
+БАЈАЗЕТОВ ДРАГАН
+БАЈАЗЕТОВ РАДИВОЈ
+БАЈАЗИТ МИЛАН
+БАЈБАРАК ИВАН
+БАЈГО ЗОЛТАН
+БАЈИ АРАНКА
+БАЈИ-ХРИБАР ЈУЛИЈА
+БАЈИ СТЕВАН
+БАЈИЋ ЧЕДОМИР
+БАЈИЋ ЖАРКО
+БАЈИЋ ЖИКА
+БАЈИЋ ЖИВКО
+БАЈИЋ ЖИВОЈИН
+БАЈИЋ ЂОРЂЕ ДР
+БАЈИЋ ЂУРА
+БАЈИЋ ЂУРО
+БАЈИЋ АЛЕКСАНДАР
+БАЈИЋ БОШКО
+БАЈИЋ БОЖИЦА
+БАЈИЋ БОГДАН
+БАЈИЋ БОГОЉУБ
+БАЈИЋ БОЈКА
+БАЈИЋ БОРА
+БАЈИЋ БОРИВОЈЕ
+БАЈИЋ БОСИЉКА
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНКО
+БАЈИЋ ДАНИЦА
+БАЈИЋ ДИМИТРИЈЕ
+БАЈИЋ ДРАГИЦА
+БАЈИЋ ДРАГОСЛАВ
+БАЈИЋ ДРАГУТИН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШКО
+БАЈИЋ ГОЈКО
+БАЈИЋ ГОРДАНА
+БАЈИЋ ИЛИЈА
+БАЈИЋ ИЛИНКА
+БАЈИЋ ИЛОНА
+БАЈИЋ ЈАГОШ
+БАЈИЋ ЈАНКО
+БАЈИЋ ЈАНКО
+БАЈИЋ ЈЕЛИЦА
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВИЦА
+БАЈИЋ КРСТА
+БАЈИЋ ЛАЗАР
+БАЈИЋ ЛУКА
+БАЈИЋ МАРА
+БАЈИЋ МАРА
+БАЈИЋ МАРИЦА
+БАЈИЋ МАРИЈА
+БАЈИЋ МАРИЈА
+БАЈИЋ МЕЛАНИЈА
+БАЈИЋ МИЋО
+БАЈИЋ МИХАЈЛО ДР
+БАЈИЋ МИЛАН ДР ПРОФ
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛЕНКО
+БАЈИЋ МИЛЕ
+БАЈИЋ МИЛИЦА
+БАЈИЋ МИЛКА
+БАЈИЋ МИЛОВАН
+БАЈИЋ МИОДРАГ
+БАЈИЋ МИРКО
+БАЈИЋ МИРКО
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИТАР
+БАЈИЋ МИТАР
+БАЈИЋ МИТА
+БАЈИЋ МЛАДЕН
+БАЈИЋ МЛАДЕН
+БАЈИЋ МЛАДЕН
+БАЈИЋ МОМЧИЛО
+БАЈИЋ НАДА
+БАЈИЋ НАДА
+БАЈИЋ НАТАША
+БАЈИЋ НЕЂО
+БАЈИЋ НЕВЕНА
+БАЈИЋ НИКОЛА
+БАЈИЋ НИКОЛА
+БАЈИЋ ПЕРА
+БАЈИЋ ПЕРО
+БАЈИЋ ПЕРСИДА
+БАЈИЋ ПЕТАР
+БАЈИЋ ПЕТАР
+БАЈИЋ РАДЕ
+БАЈИЋ РАДЕ
+БАЈИЋ РАДЕ
+БАЈИЋ РАДИВОЈ
+БАЈИЋ РАДМИЛА
+БАЈИЋ РАДОСЛАВ
+БАЈИЋ САВА
+БАЈИЋ САВО
+БАЈИЋ СИМО
+БАЈИЋ СИНИША
+БАЈИЋ СЛАВКО
+БАЈИЋ СЛАВКО
+БАЈИЋ СНЕЖАНА
+БАЈИЋ СНЕЖАНА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОЊА
+БАЈИЋ СПАСОЈЕ
+БАЈИЋ СТАНИСЛАВ
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СВЕТЛАНА
+БАЈИЋ ТОДОР
+БАЈИЋ ТОМИСЛАВ
+БАЈИЋ-ТУРИНСКИ МИРЈАНА
+БАЈИЋ ВАСА
+БАЈИЋ ВАСА
+БАЈИЋ ВЕРОНА
+БАЈИЋ ВЕСЕЛИН
+БАЈИЋ ВИДА
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ЗОРАНКА
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРИЦА
+БАЈИЛО ДРАГОМИР
+БАЈИЛО ДРАГОМИР
+БАЈИЛО ДУШАН
+БАЈИЛО ПЕРО
+БАЈИЛО ВИДОСАВА
+БАЈИЛОВ ЉИЉАНА
+БАЈИН БОРИСЛАВ
+БАЈИН БРАНИСЛАВ
+БАЈИН ГАВРИЛО
+БАЈИН ИВАН
+БАЈИН КАЋА
+БАЈИН ЉУБИЦА
+БАЈИН МИЛАНКА
+БАЈИН НАДА
+БАЈИН РАДОЈКА
+БАЈИН РАЈКО
+БАЈИН РУЖИЦА
+БАЈИН САВА
+БАЈИН САВЕТА
+БАЈИН СТОЈАНКА
+БАЈКИН АНЂЕЛКО
+БАЈКИН СТОЈАН
+БАЈКИН СВЕТОЗАР
+БАЈКИН ВЕСЕЛИН
+БАЈКИН ВИТОМИР
+БАЈОР МАРИЈА
+БАЈОВИЋ БРАНКО
+БАЈОВИЋ МАРА
+БАЈОВИЋ МИТАР
+БАЈОВИЋ ВЕРА
+БАЈРАМИ ШЕФКИ
+БАЈРАМИ ШЕФКИ
+БАЈРАМИ АГРОН
+БАЈРАМИ БАТИЈА
+БАЈРАМИ ГАНИ
+БАЈРАМИ СКЕНДЕР
+БАЈРАМОВИЋ ШЕРИФ
+БАЈРАМОВИЋ ХИВЗИЈА
+БАЈРИЋ РАДМИЛА
+БАЈС ФРАНЦ
+БАЈУНОВИЋ МЛАДЕН
+БАЈУС ЈОЖЕФ
+БАКША ЂОРЂЕ
+БАКША ИМРЕ
+БАКША ЈОЖЕФ
+БАКША ЛАЈОШ
+БАКША ЛАЈОШ
+БАКША ЛАСЛО
+БАКША МАГДА
+БАКША МИХАЈЛО
+БАКША ЗОЛТАН
+БАКША ЗОЛТАН
+БАКА АНТАЛ
+БАКА ИШТВАН
+БАКА ИШТВАН
+БАКА ИШТВАН
+БАКА ИБОЉА
+БАКА МИЛИЦА
+БАКАИ ИРЕН
+БАКАЈ ИВАН
+БАКАЈ МИЉКО
+БАКАЈИЋ МИЛАН
+БАКАЈИН ДОБРИЛА
+БАКАЈИН ЉУБОМИР
+БАКАЈИН НЕВЕНКА
+БАКАЈИН ТОДОР
+БАКАЛИЋ ЂУЛИНКА СУДИЈА
+БАКАЛИЋ МИХАЈЛО
+БАКАЛИЋ ВОЈИСЛАВ
+БАКАЛОВИЋ НЕМАЊА
+БАКЕВ ЂОРЂЕ
+БАКИ ИРЕНА
+БАКИ ОТО
+БАКИ ВЕРА
+БАКИШ ЧЕДОМИР ДИПЛ ИНГ
+БАКИЋ БОРИВОЈЕ
+БАКИЋ ДИМИТРИЈЕ
+БАКИЋ ДУШАН ДИПЛ ИНГ
+БАКИЋ ИВАН
+БАКИЋ ЈОВАН
+БАКИЋ КОСТА
+БАКИЋ МИЈОМИР
+БАКИЋ МИЛОШ
+БАКИЋ МИЛОШ
+БАКИЋ МИЛУТИН
+БАКИЋ МИРА
+БАКИЋ МИРОСЛАВ
+БАКИЋ МИРОСЛАВ
+БАКИЋ НАДА
+БАКИЋ СИНИША
+БАКИЋ СОЊА
+БАКЛАИЋ ЈОВАНКА
+БАКМАЗ ЛАЗО
+БАКМАЗ ЉУБАН
+БАКМАЗ ЗОРАН
+БАКО МИША
+БАКОЧЕВИЋ МИРЈАНА
+БАКОШ ЂЕРЂИ
+БАКОШ ГАБОР
+БАКОШ ЛАЈОШ
+БАКОШ ЛАСЛО
+БАКОШ МАРИЈА
+БАКОШ ПАЛ
+БАКОШ ПЕТАР
+БАКОШ ТЕРЕЗИЈА
+БАКОВИЋ РАДЕ
+БАКТАИ СТЕВАН
+БАКУНИЋ ИВАН
+БАКУНИЋ ВИДОСАВА
+БАКВИЋ МИЛАН
+БАЛ КАРЛО
+БАЛ ЗВОНИМИР
+БАЛЧАКОВИЋ ВАСО
+БАЛШИЋ РАНКА
+БАЛА ЕТЕЛКА
+БАЛА ИШТВАН
+БАЛА ЈАНОШ
+БАЛА ЈУЛИЈАНА
+БАЛА ЈУЛИЈА
+БАЛА КАРЛО
+БАЛА КАРЛО
+БАЛА КАРОЉ
+БАЛА ЛАДИСЛАВ
+БАЛА МИХАЉ
+БАЛА ТЕРЕЗ
+БАЛАША ЈОЖЕФ
+БАЛАЋ АНА
+БАЛАЋ ДУШАНКА
+БАЛАЋ ЈОВАН
+БАЛАЋ ЉУБО
+БАЛАЋ МИРОСЛАВ
+БАЛАЋ МИРОСЛАВ
+БАЛАЋ СЛАВКО
+БАЛАЋ СРБИСЛАВ
+БАЛАЋ СТЕВАН
+БАЛАЋ ВУЈО
+БАЛАЋ ЗОРА
+БАЛАЖ ШАНДОР
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ АДАЛБЕРТ
+БАЛАЖ АНА
+БАЛАЖ ЕТЕЛКА
+БАЛАЖ ГЕЗА
+БАЛАЖ ГЕЗА
+БАЛАЖ ИРЕНА
+БАЛАЖ ИВАНКА
+БАЛАЖ ЈАНИКА
+БАЛАЖ ЈЕЛИСАВЕТА
+БАЛАЖ ЈОСИП
+БАЛАЖ ЈОВАН
+БАЛАЖ КАТАРИНА
+БАЛАЖ ЛАСЛО
+БАЛАЖ ПАЛ
+БАЛАЖ ПАЛ
+БАЛАЖ-ПИРИ ЂЕРЂ
+БАЛАЖ ЗИТА
+БАЛАЖЕВ СТИПАН
+БАЛАЖЕВИЋ СЛОБОДАНКА
+БАЛАБАН БОШКО
+БАЛАБАН БРАНКО
+БАЛАБАН МИЛОВАН
+БАЛАБАН МИЛУТИН
+БАЛАБАН НЕЂО
+БАЛАБАН ПЕТАР
+БАЛАБАН САВО
+БАЛАБАН СПОМЕНКА
+БАЛАБАН ВИД
+БАЛАБАН ВУКАШИН
+БАЛАБАНОВ АНА
+БАЛАБАНОВИЋ БОШКО
+БАЛАБАНОВИЋ МИЛОРАД
+БАЛАБАНОВИЋ НИКОЛА
+БАЛАБАНОВИЋ ПЕТАР
+БАЛАБАНОВИЋ ВОЈИСЛАВ
+БАЛАЈ МИХАЈЛО
+БАЛАЛИЋ ЏЕВАД ДИПЛ ИНГ
+БАЛАЛИЋ ЏЕВАД
+БАЛАНЕСКО АЛЕКСАНДАР
+БАЛАТ ИРЕНА
+БАЛАТОН ЂЕРЂ
+БАЛАТОН ЂЕРЂ
+БАЛАТОН ЂЕРЂ
+БАЛАТОН БЕЛА
+БАЛАТОН ИМРЕ
+БАЛАТОН МАГДОЛНА
+БАЛАТОН ПЕТАР
+БАЛЦА ВЛАДИМИР
+БАЛЦА ВЛАДИМИР
+БАЛДИЋ СЛОБОДАН
+БАЛЕНОВИЋ АНДРИЈА
+БАЛЕР ЈОСИП
+БАЛЕВИЋ МИЛИВОЈ
+БАЛГО ФРАНЦИШКА
+БАЛИ АЛЕКСАНДРА
+БАЛИ ГАБОР
+БАЛИ ЛАСЛО
+БАЛИЋ ЕСАД
+БАЛИЖ ИЛДА
+БАЛИЖ МИХАЉ
+БАЛИЖ ЗОЛТАН
+БАЛИНД ПАЛ
+БАЛИНД СИЛВИА
+БАЛИНОВИЋ МИЛЕВА
+БАЛИНОВИЋ СИНИША
+БАЛИНТ ШАНДОР МР
+БАЛИНТ ЖИГМУНД
+БАЛИНТ ЂОРЂЕ
+БАЛИНТ ЂУРА
+БАЛИНТ АНДРЕЈ
+БАЛИНТ ДЕЖЕ
+БАЛИНТ ИШТВАН
+БАЛИНТ ИЛОНА
+БАЛИНТ ИМРЕ
+БАЛИНТ ИМРЕ
+БАЛИНТ ЈОЖЕФ
+БАЛИНТ ЈОЖЕФ
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈУЛИЈАНА
+БАЛИНТ КАРОЉ
+БАЛИНТ МАЋАШ
+БАЛИНТ МАРГАРЕТА
+БАЛИНТ МАРИА
+БАЛИНТ МАРИЈА
+БАЛИНТ МАРИЈА
+БАЛИНТ МИХАИЛО
+БАЛИНТ МИРОСЛАВ
+БАЛИНТ-МИТРОВИЋ ОЛГА
+БАЛИНТ РАДОСЛАВ
+БАЛИНТ РОБЕРТ
+БАЛИНТ СЛАВОМИР
+БАЉ БРАНКО
+БАЉ МИЛОРАД
+БАЉ САВО
+БАЉА ИДРИЗ
+БАЉАК ЧЕДОМИР
+БАЉОШЕВИЋ АЛЕКСАНДАР
+БАЉОШЕВИЋ БОГДАНКА
+БАЉОШЕВИЋ ЈОВАН
+БАЉОШЕВИЋ МИРО
+БАЉОЗОВИЋ ОЛИВЕРА
+БАЉОЗОВИЋ ТОМИСЛАВ ДР
+БАЛКОВОЈ ВЛАДИМИР
+БАЛНОЖАН НЕВЕНКА
+БАЛНОЖАН СИМА
+БАЛО ГАШПАР
+БАЛО ПЕТАР
+БАЛОШ НУЦА
+БАЛОШ ТОДОР
+БАЛОШ ТОДОР
+БАЛОБАН МИЛАН
+БАЛОБАН МИЛАН
+БАЛОГ ШАНДОР
+БАЛОГ ЖИВКА
+БАЛОГ ЖУЖАНА
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂУРА
+БАЛОГ ЂУРА
+БАЛОГ АЛЕКСАНДАР
+БАЛОГ АНА
+БАЛОГ АНА
+БАЛОГ АНА
+БАЛОГ АНДРАШ
+БАЛОГ АНДРИЈА
+БАЛОГ БЕЛА
+БАЛОГ БРАНКО
+БАЛОГ ДЕЖЕ
+БАЛОГ ДЕЖЕ
+БАЛОГ ДРАГАН
+БАЛОГ ДУШАНКА
+БАЛОГ ФЕРЕНЦ
+БАЛОГ ФРАЊА
+БАЛОГ ФРАЊА
+БАЛОГ ФРАЊА
+БАЛОГ ИШТВАН
+БАЛОГ ИБОЈКА
+БАЛОГ ИМРЕ
+БАЛОГ ИМРЕ
+БАЛОГ ЈОЖЕФ
+БАЛОГ ЈОЦА
+БАЛОГ ЈОВАН
+БАЛОГ ЈУЛИЈАНА
+БАЛОГ ЈУЛИЈАНА
+БАЛОГ КАЛМАН
+БАЛОГ КАРОЉ
+БАЛОГ КАРОЉ
+БАЛОГ КАТАРИНА
+БАЛОГ ЛАДИСЛАВ
+БАЛОГ ЛАДИСЛАВ
+БАЛОГ ЛАСЛО
+БАЛОГ МАГДА
+БАЛОГ МАРА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРТА
+БАЛОГ МИЛЕНА
+БАЛОГ МИРКО
+БАЛОГ НИКОЛА
+БАЛОГ НИКОЛА
+БАЛОГ ПИШТА
+БАЛОГ ПИРОШКА
+БАЛОГ СИМА
+БАЛОГ СМИЉА
+БАЛОГ СПОМЕНКА
+БАЛОГ СТЕВАН
+БАЛОГ СТЕВАН
+БАЛОГ СТЕВАН
+БАЛОГ ТИБОР
+БАЛОГ ВЕЛИМИР
+БАЛОГ ЗОРАН
+БАЛОК ИШТВАН
+БАЛОВИЋ МИЛИЋ
+БАЛТА АНА
+БАЛТИЋ ДАНИЦА
+БАЛТИЋ РАДМИЛА
+БАЛТИЋ ВЛАДИМИР ДР
+БАЛТОВИЋ ДРАГАН
+БАЛТОВИЋ ПЕТАР
+БАЛУНОВИЋ ИВАН
+БАМБУЛОВИЋ МИЛКА
+БАН СТЕВАН
+БАНЧЕВИЋ ПЕТАР
+БАНЧЕВИЋ РАДЕ
+БАНЧИ БАЛИНТ
+БАНЧИ КАРОЉ
+БАНЧИЋ ЖИВКО
+БАНЧИЋ АЛЕКСАНДАР
+БАНЧИЋ ЈОВАН
+БАНЧИЋ ЈУЛКА
+БАНЧИЋ ЛАЗА
+БАНЧИЋ МАРИЈА
+БАНЧИЋ СОФИЈА
+БАНЧИЋ СТЕВИЦА
+БАНЧИЋ ТОДОР
+БАНЂУР МИРКО
+БАНАЋАНИН ЉИЉАНА
+БАНАЋАНИН ОЛГА
+БАНАИ ТИБОР
+БАНАИ ВЕРА
+БАНАЈ ЈОСИП
+БАНДА ЖИВКО
+БАНДИЋ БЛАГОЈЕ
+БАНДИЋ ЈЕЛИЦА
+БАНДИЋ ЉУБОМИР
+БАНДИЋ ЉУБО
+БАНДИЋ РАДЕ
+БАНДИЋ САВКА
+БАНДИЋ ТОМИСЛАВ
+БАНДИЋ ВЕРИЦА
+БАНДИЋ ВУЈАДИН
+БАНДИН ЖИВОРАД
+БАНДИН ИВАН
+БАНДИН КАТИЦА
+БАНДИН МИОДРАГ
+БАНДИН МЛАДЕН
+БАНДОБРАНСКИ ОЛГА
+БАНДОЛО ДРАГИЦА
+БАНДУКА ДРАГУТИН
+БАНФИ МАРИЈА
+БАНГО ЉУДЕВИТ
+БАНИЋ АНЂА
+БАНИЋ БОЖИДАР
+БАНИЋ БРАНКО ДР
+БАНИЋ ЕМИЛИЈА
+БАНИЋ ЕВИЦА
+БАНИЋ КАТИЦА
+БАНИЋ МИЛОШ
+БАНИЋ МИЛОВАН
+БАНИЋ ПАНЕ
+БАНИЋ ПЕТАР
+БАНИЋ РАДЕ
+БАНИЋ РАДОМИР
+БАНИЋ РАСТКО
+БАНИЋ РУЖИЦА
+БАНИЋ СЛАВКО
+БАНИЋ СВЕТОЗАР
+БАНИЋ ЗОРКА
+БАНИЋЕВИЋ ЈЕЛЕНА
+БАНИЋЕВИЋ ВЕСЕЛИН
+БАНИА-ЖИВАДИНОВИЋ МИРЈАНА
+БАЊАШ ЂУРА
+БАЊАЦ ЧЕДОМИР
+БАЊАЦ ЧЕДО
+БАЊАЦ ЧЕДО
+БАЊАЦ ШПИРО ДИПЛ ИНГ
+БАЊАЦ ЖИВАН
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ БОСИЉКА
+БАЊАЦ ДАНИЛО
+БАЊАЦ ДМИТАР
+БАЊАЦ ДРАГАН ДИПЛ ИНГ
+БАЊАЦ ДРАГАН
+БАЊАЦ ДРАГИЦА
+БАЊАЦ ДРАГИЦА
+БАЊАЦ ДУШАН
+БАЊАЦ ДУШКО
+БАЊАЦ ДУШКО
+БАЊАЦ ЕМИЛ
+БАЊАЦ ГАВРА
+БАЊАЦ ГОЈКО
+БАЊАЦ ЈЕЛЕНА
+БАЊАЦ ЈОВАН
+БАЊАЦ ЈОВАН
+БАЊАЦ КАТИЦА
+БАЊАЦ МИЛАН
+БАЊАЦ МИЛАН
+БАЊАЦ МИЛЕ
+БАЊАЦ МИЛОРАД
+БАЊАЦ МИРКО
+БАЊАЦ НЕДЕЉКО
+БАЊАЦ НИКОЛА
+БАЊАЦ ОЛГА
+БАЊАЦ ПЕРО
+БАЊАЦ ПЕТАР
+БАЊАЦ РАДА
+БАЊАЦ РАДОЊА
+БАЊАЦ САВА
+БАЊАЦ САВА
+БАЊАЦ САВЕТА
+БАЊАЦ САВО
+БАЊАЦ СЛАВКО
+БАЊАЦ СЛАВНА
+БАЊАЦ СЛОБОДАН
+БАЊАЦ СТЕВАН
+БАЊАЦ ТЕОДОР
+БАЊАЦ ВЕСНА
+БАЊАЦ ВИНКО
+БАЊАЦ ВИТОМИР
+БАЊАЦ ВОЈИСЛАВ
+БАЊАИ ЈАГА
+БАЊАИ ЈАНОШ
+БАЊАИ ЈОВАН
+БАЊАИ ЛАЈОШ
+БАЊАИ МАЋАШ
+БАЊАИ МАРИЈА
+БАЊАИ РОМАН
+БАЊАИ РУЖА
+БАЊАНАЦ БРАНКО
+БАЊАНАЦ БРАТИСЛАВ
+БАЊАНАЦ МИЛАН
+БАЊАНАЦ РАДЕ
+БАЊАНАЦ СЛАВИЦА
+БАЊАНИН ДАНИЦА
+БАЊАНИН ДАРА
+БАЊАНИН ЈЕЛЕНА
+БАЊАНИН ЈЕЛИСАВЕТА
+БАЊАНИН ЈОВАН
+БАЊАНИН НЕДЕЉКО
+БАЊАНИН НЕДЕЉКО
+БАЊАНИН НИКОЛА
+БАЊАНИН НИКОЛА
+БАЊАНИН РАДМИЛА
+БАЊАНИН СОФИЈА
+БАЊАНИН ВЕЛИМИР
+БАЊАРИ ЛАЈОШ
+БАЊЕГЛАВ БОЖА
+БАЊЕГЛАВ ДРАГАН
+БАЊЕГЛАВ ДУШАН
+БАЊЕГЛАВ НИКОЛА
+БАЊЕГЛАВ РАДИВОЈ
+БАЊЕВИЋ СЛОБОДАНКА
+БАНКА ЛАЈОШ
+БАНКОВАЧКИ ЂУРА
+БАНКОВАЧКИ ЈОВАН
+БАНКОВАЧКИ МАРИЈА
+БАНКОВАЧКИ НАДА
+БАНКОВАЧКИ ПЕТАР
+БАНКОВАЧКИ САВА
+БАНКОВАЧКИ СВЕТОЗАР
+БАНКОВИЋ МИЛУН
+БАНОВЧАНИН ДРАГИЦА
+БАНОВЧАНИН МИЛАН
+БАНОВЧАНИН МОМЧИЛО
+БАНОВАЧКИ ЂОРЂЕ
+БАНОВАЧКИ ЈОВАН
+БАНОВАЧКИ МАРИЈА
+БАНОВАЧКИ РУЖИЦА
+БАНОВИЋ ЖАРКО
+БАНОВИЋ ЖИВОРАД
+БАНОВИЋ ДУШАН
+БАНОВИЋ ЈОВАНКА
+БАНОВИЋ ЛЕПОСАВА
+БАНОВИЋ-ЛОЦ НАДА
+БАНОВИЋ МИЛАН
+БАНОВИЋ МИЛАН
+БАНОВИЋ МИЉКО
+БАНОВИЋ НИКОЛА
+БАНОВИЋ СЛАВА
+БАНОВИЋ СЛОБОДАН
+БАНСКИ ЕРИКА
+БАНСКИ МАРИЈА
+БАРЧИКИН ЂОРЂЕ
+БАРШИ ЕНДРЕ
+БАРШИ ЛАСЛО
+БАРАЧАНИН ДАНИЦА
+БАРАЧАНИН ЛАЗАР
+БАРАЧАНИН ПАЈА
+БАРАЧАНИН САВКА
+БАРАЧИ СТЕВАН
+БАРАЧКОВ ЧЕДОМИР
+БАРАЧКОВ ЂОРЂЕ
+БАРАЧКОВ ГОРИНКА
+БАРАЧКОВ МИЛАН
+БАРАЧКОВ СРЕДОЈЕ
+БАРАЧКОВ ВЕСЕЛИН
+БАРАШЕВИЋ МИРОСЛАВА
+БАРАШЕВИЋ ТОМИСЛАВ
+БАРАШИН ГОРАН
+БАРАШИН ЉУБОМИР
+БАРАШИН НЕВЕНКА
+БАРАШИН САВА
+БАРАЋ ЖАРКО
+БАРАЋ ДРАГИЦА
+БАРАЋ ДУШАНКА
+БАРАЋ ГОДИМИР
+БАРАЋ ГОЈКО
+БАРАЋ ЈОСИП
+БАРАЋ КОВИЉКА
+БАРАЋ МИЛАН
+БАРАЋ МИЛОШ
+БАРАЋ МИЛОШ
+БАРАЋ МИЛОСАВА
+БАРАЋ МОМЧИЛО
+БАРАЋ РАДОЊА
+БАРАЋ САРАФИНА
+БАРАЋ СТАНИМИРКА
+БАРАЋ ВЕСЕЛИН
+БАРАЋ ВИДАК
+БАРАЋ ВУЧИНА
+БАРАЦ МАЛИША
+БАРАЦ МАРКО
+БАРАЦ НОВО
+БАРАЦ ТОМИСЛАВ
+БАРАЈЕВАЦ ЈОВА
+БАРАКО САВА
+БАРАЛИЋ МИРОСЛАВ
+БАРАН ЈАКИМ
+БАРАН МИХАЈЛО
+БАРАН МИРОН ДИПЛ ИНГ
+БАРАНИН ВАСИЛИЈЕ
+БАРАЊАИ ЈЕНЕ
+БАРАЊИ ФЕРЕНЦ
+БАРАЊИ ФЕРЕНЦ
+БАРАЊИ ЛАСЛО
+БАРАЊИ ПАВЛЕ
+БАРАЊИ СТЕВАН
+БАРАНОВСКИ ВЛАДА
+БАРАС ТОМА ДР
+БАРАТ АЛЕКСАНДАР
+БАРАТ ДРАГИЦА
+БАРАТ ДРАГИЊА
+БАРАТ ФЕРЕНЦ
+БАРАТ ИМРЕ
+БАРАТ ОЛГА
+БАРАТ ОСКАР
+БАРАТОВ БОШКО
+БАРБАРИЋ АНТЕ
+БАРБАРИЋ ПАВЛЕ
+БАРБАТЕСКОВИЋ ЉУБИША
+БАРБЕРИЋ ДРАГАН
+БАРБЕРИЋ МИРКО
+БАРБИР АНТЕ
+БАРБИР ЉУБА
+БАРБУ ВАСА
+БАРБУЛ МАРИЈА
+БАРБУЛ МИЛАН
+БАРБУЛ МИЛАН
+БАРБУЛ САВА
+БАРБУЛ СТОЈАН
+БАРБУЛ ВЛАДИСЛАВА
+БАРБУЛОВ ДИМИТРИЈЕ
+БАРБУЛОВ ДОБРИВОЈ
+БАРБУЛОВ МИЛИВОЈ
+БАРБУЛОВ НИКОЛА
+БАРБУЛОВИЋ ДРАГАН
+БАРБУЗАН ЈАСНА
+БАРБУЗАН РУЖИЦА
+БАРЦАЛ ЂЕРЂ
+БАРЦАЛ АНА
+БАРЦАЛ ЈОЖЕФ
+БАРЦАЛ ЛАСЛО ДИПЛ ИНГ
+БАРЦЕЛ КАТИЦА
+БАРДАК АЛЕКСАНДАР
+БАРДАК АНКИЦА
+БАРДАК ЛУКА
+БАРДИЋ ЖЕЉКО
+БАРДИЋ МИРКО
+БАРДОШ ЈОЖЕФ
+БАРДОШ МЕЛАНИЈА
+БАРДУН КАРЛО
+БАРЕШИЋ ИВАН
+БАРЕШИЋ МАТО
+БАРЕТИЋ ДРАГОЉУБ
+БАРИЧЕВИЋ СТИПЕ
+БАРИЧИЋ БИСЕРКА
+БАРИШИЋ АНЂЕЛКО
+БАРИШИЋ БЛАГОЈЕ
+БАРИШИЋ БОШКО
+БАРИШИЋ ИЛИЈА
+БАРИШИЋ ИЛИЈА
+БАРИШИЋ ЈАЊА
+БАРИШИЋ ЉУБИЦА
+БАРИШИЋ МАРКО
+БАРИШИЋ МИЛАН
+БАРИШИЋ МИЛАН
+БАРИШИЋ ПЕТАР
+БАРИШИЋ СТЈЕПАН
+БАРИШИЋ ВЕРОНИКА
+БАРИШИЋ ЗОРКА
+БАРИЋ ЉУБИЦА
+БАРИЋ ПАУЛИНА
+БАРИЋ СЛАВИЦА
+БАРЈАКТАР СПАСЕНИЈА
+БАРЈАКТАР СТЕВА
+БАРЈАКТАРЕВИЋ ЖИВКО
+БАРЈАКТАРЕВИЋ ДРАГАН
+БАРЈАКТАРЕВИЋ МАРА
+БАРЈАКТАРЕВИЋ МАРА
+БАРЈАКТАРЕВИЋ МИЛАН
+БАРЈАКТАРЕВИЋ МИЛКА
+БАРЈАКТАРЕВИЋ МИЛОЈЕ
+БАРЈАКТАРЕВИЋ ВАЛЕРИЈА
+БАРЈАКТАРЕВИЋ ЗЛАТКО
+БАРЈАКТАРОВ МИЛИЦА
+БАРЈАКТАРОВИЋ ЂОКО
+БАРЈАКТАРОВИЋ АНКА
+БАРЈАКТАРОВИЋ МИЛОШ
+БАРЈАКТАРОВИЋ СНЕЖАНА
+БАРЈАКТАРОВИЋ ВУЧИНА
+БАРЈАКТАРОВИЋ ВУЧИНА
+БАРЈАКТАРОВИЋ ЗОРКА
+БАРЈАМОВИЋ АЛИЛ
+БАРЈАМОВИЋ АРСЕНИЈЕ
+БАРЈАМОВИЋ СЛОБОДАН
+БАРНА ГАШПАР
+БАРНА ИВАН
+БАРНА ЈАНОШ
+БАРНА ЈОСИП
+БАРНА МИХАЉ
+БАРО ФРАЊО
+БАРО ЈЕЛЕНА
+БАРО ЈОЖЕФ
+БАРО ЈОЖЕФ
+БАРО ЈОСИП
+БАРОШ БОЖО
+БАРОШ БОРИСЛАВ ДР
+БАРОШ БОРИСЛАВ
+БАРОШ ЛАЗО
+БАРОШ НЕБОЈША
+БАРОШ НИКОЛА
+БАРОШ НИКОЛА
+БАРОШЕВИЋ ЈОВО
+БАРОВИЋ ВЕЛИМИР
+БАРОВИЋ ВОЈИСЛАВ
+БАРТА ЂЕРЂ
+БАРТА ЂОРЂЕ
+БАРТА АРПАД
+БАРТА ДЕЖЕ
+БАРТА ЕМА
+БАРТА ИЛДИКО
+БАРТА ИРМА
+БАРТА МАГДАЛЕНА
+БАРТЕК АНДРИЈА
+БАРТЕК КАТАРИНА
+БАРТЕК РУДОЛФ ДИПЛ ИНГ
+БАРТЕК СТЕВАН
+БАРТОШ ДАНИЛО
+БАРТОШ ДРАГИЦА
+БАРТОШ ИМРЕ
+БАРТОШ ЛАДИСЛАВ
+БАРТОШ ЛАСЛО
+БАРТОШ СВЕТЛАНА
+БАРТОШ ЗВОНИМИР
+БАРТОЈ МИРЈАНА
+БАРТОК МАРГИТ
+БАРТОЛОВИЋ АНТУН
+БАРТОЛОВИЋ ЈОСИП
+БАРТОЛОВИЋ МАРИН
+БАРТУЛОВИЋ ПАВЛЕ
+БАРУШИЋ МАРТИН
+БАРУЏИЈА МАРКО
+БАРУДАНОВ ДУШАНКА
+БАСАРА ЂУРО
+БАСАРА АНКА
+БАСАРА ДИВНА
+БАСАРА ДРАГИЦА
+БАСАРА ЈОВАН
+БАСАРА МАРТА
+БАСАРА МИЛИВОЈ
+БАСАРА МИРА
+БАСАРА ПАЈО
+БАСАРАБА ДУШИЦА
+БАСАРИЋ БОГДАН
+БАСАРИЋ ДАНЕ
+БАСАРИЋ ДРАГИЊА
+БАСАРИЋ ДУШАН
+БАСАРИЋ ЈЕЛЕНА
+БАСАРИЋ ЈОВАН
+БАСАРИЋ ЉУБОМИР
+БАСАРИЋ МИЛАН
+БАСАРИЋ МИЛАН
+БАСАРИЋ МИЛКА
+БАСАРИЋ МИРЈАНА
+БАСАРИЋ НИКОЛА
+БАСАРИЋ СТЕВАН
+БАСАРИЋ ВЕРА
+БАСИЋ КОВИЉКА
+БАСИЋ СРЂАН
+БАСИОЛИ СРЕЋКО
+БАСКИЈИН ЗОРА
+БАСРАК БРАНКО
+БАСРАК МИЛАН
+БАСТА ДАНЕ
+БАСТА ДАНИЕЛА
+БАСТА ДРАГУТИН
+БАСТА ДУШАН
+БАСТА ИВАНА
+БАСТА КАТИЦА
+БАСТА ЉУБИЦА
+БАСТА МАРИЈА
+БАСТА МАРИЈА
+БАСТА МАРИЈА
+БАСТА МИЛАН
+БАСТА МИЛОШ
+БАСТА МИРОСЛАВ
+БАСТА НИКОЛА
+БАСТА СТЕВА
+БАСТА ВЛАДО
+БАСТАХ БРАНКО
+БАСТАЈА БРАНКО
+БАСТАЈА МИЛАН
+БАТА ДЕЗИДЕР
+БАТА ИЛОНА
+БАТА КАРОЉ
+БАТА ЛАСЛО
+БАТА ЛАСЛО
+БАТА МАРГИТА
+БАТАЈИЋ БОГОЉУБ
+БАТАК ЕМИЛ
+БАТАК МИРКО
+БАТАКОВИЋ КОСАРА
+БАТАКОВИЋ МИЛАН
+БАТАКОВИЋ ВИТОМИР
+БАТАЛОВ РАДИЦА
+БАТАНЧЕВ ЈОВАН
+БАТАНЧЕВ СЛАВНА
+БАТАЊСКИ МИЛАН
+БАТАЊСКИ МИЛАН
+БАТАНОВИЋ АНКА
+БАТАР ЧЕДОМИР
+БАТАР ЧЕДОМИР
+БАТАР МИЛОШ
+БАТАР МОМИР
+БАТАР СЛОБОДАН
+БАТАР ВЕЛИМИР
+БАТАР ВОЈИН
+БАТАРИЛО ЖЕЉКО
+БАТАС БОЖАНА
+БАТАЗ ВЛАДО
+БАТЕРНЕК ИВАН
+БАТИЋ ЂУРАЂ
+БАТИЋ БОЖИДАР
+БАТИЋ БРАНКА
+БАТИЋ ИВАНА
+БАТИЋ МИХАЈЛО
+БАТИНИЋ ЂУРО
+БАТИНИЋ ДРАГАН
+БАТИНИЋ ГОРДАНА
+БАТИНИЋ САВА
+БАТИНИЋ СПАСОЈЕ
+БАТИСТИЋ ИВАН
+БАТКИЋ ЈУСУФ
+БАТКИЋ СТАНИСЛАВА
+БАТКОВИЋ МАРА
+БАТОРИ ЈАНОШ
+БАТОРИ ЈОЖЕФ
+БАТОРИ МАРИЈА
+БАТОРИ МАРИЈА
+БАТОРИ МИХАЉ
+БАТОРИ МИХАЉ
+БАТОРИ МИХАЉ
+БАТОС АЛЕКСАНДАР
+БАТОС БОШКО
+БАТОС БОШКО
+БАТОС МИЛАН
+БАТОС НАДА
+БАТОС РАДИВОЈ
+БАТОС ЗОРИЦА
+БАТРНЕК ЗДЕНКА
+БАТУРАН ОБРАД
+БАТУРАН РАДОВАН
+БАУЕР ЕВА
+БАУЕР ЈУЛИЈАНА
+БАУЕР КСЕНИЈА
+БАУЕР ОТО
+БАУК ДРАГАН
+БАУКОВ ВЛАДИМИР
+БАУРАНОВ ЛАЗАР
+БАВАРЧИЋ МИЛОРАД
+БАВАРЧИЋ ВЕСЕЛИН
+БАЗАНЧИК ВАЛЕРИЈА
+БАЗОКИН ЖИВИЦА
+БЕЧ ЈАЊА
+БЕЧЕИ ЛАЈОШ
+БЕЧЕЈАЦ АЛЕКСАНДАР
+БЕЧЕЈАЦ БОШКО
+БЕЧЕЈАЦ БРАНИСЛАВ
+БЕЧЕЈАЦ ЈОВАН
+БЕЧЕЈАЦ КАМЕНКО
+БЕЧЕЈАЦ МИЛАН
+БЕЧЕЈАЦ РАДЕНКО
+БЕЧЕЈАЦ РАДОЈКА
+БЕЧЕЈАЦ САВА
+БЕЧЕЛИЋ ЂОРЂЕ
+БЕЧЕЛИЋ БИСЕРКА
+БЕЧЕЛИЋ БОСИЉКА
+БЕЧЕЛИЋ ДОБРИНКО
+БЕЧЕЛИЋ ДРАГИЦА
+БЕЧЕЛИЋ ГИНА
+БЕЧЕЛИЋ ЈОВАН
+БЕЧЕЛИЋ ЛАЗАР
+БЕЧЕЛИЋ МАРИЈА
+БЕЧЕЛИЋ МАРИЈА
+БЕЧЕЛИЋ МИЛАН
+БЕЧЕЛИЋ МИЛЕНА
+БЕЧЕЛИЋ МИЛИЦА
+БЕЧЕЛИЋ МИЛОШ
+БЕЧЕЛИЋ ПЕТАР
+БЕЧЕЛИЋ РАДИВОЈ
+БЕЧЕЛИЋ РАДОВАН
+БЕЧЕЛИЋ СТЕВАН
+БЕЧЕЛИЋ СТЕВАН
+БЕЧЕЛИЋ ВАСА
+БЕЧЕЛИЋ ВЕСЕЛИН
+БЕЧЕЛИЋ ВЕСЕЛИН
+БЕЧИЋ МУХИБА
+БЕЧИЋ ВЕРОЉУБ
+БЕЧКЕИ ЈАНОШ
+БЕЧКЕИ ПЕТАР
+БЕЧКЕЈИ КАРЛО
+БЕЧВАРДИ АЛЕКСАНДАР
+БЕЧВАРДИ ЈОСИП
+БЕШАНИЋ БОЖАНА
+БЕШАНИЋ ЗДРАВКО
+БЕШЕЊИ КАРЛО
+БЕШЕЊИ КАРЛО
+БЕШЕНСКИ НИКОЛА
+БЕШЕВИЋ АЛЕКСА
+БЕШЕВИЋ ЈОВАН
+БЕШЕВИЋ МИРЈАНА
+БЕШЕВИЋ НИКОЛА ДИПЛ ОЕЦ
+БЕШИЋ МАРИЈА
+БЕШИЋ МАРИЈА
+БЕШИЋ МЕХМЕД
+БЕШИЋ МИХАЈЛО
+БЕШИЋ СЛОБОДАН
+БЕШИЋ СВЕТИСЛАВ
+БЕШКЕР АНДРИЈА
+БЕШКЕР БОЖО
+БЕШКЕР СРЕЋКА
+БЕШЛИЋ ЈОВАН
+БЕШЛИЋ ТЕРЕЗИЈА
+БЕШЛИЈА ГОСПАВА
+БЕШЛИН ЖИВКО ДИПЛ ОЕЦ
+БЕШЛИН БРАНКО
+БЕШЛИН ИВАН
+БЕШЛИН ИВИЦА
+БЕШЛИН ЈЕЛИСАВЕТА
+БЕШЛИН МИОДРАГ
+БЕШЛИН СТОЈАН
+БЕШЛИН ВЛАДИСЛАВА
+БЕЋАГУЛ САВА
+БЕЋИН АЛЕКСАНДАР
+БЕЋИН ОЛГА
+БЕЋИРОВСКИ АДЕМ
+БЕЖАН ВИКТОР
+БЕЖАНОВ АЛЕКСАНДАР
+БЕЖАНОВ БРАНИСЛАВ
+БЕЖАНОВ ДРАГОЉУБ
+БЕЖАНОВ МИРОЉУБ
+БЕЖАНОВИЋ ЂОРЂЕ
+БЕАДЕР ЈОВАН
+БЕАРА ЖИВКО
+БЕАРА ЂОРЂЕ
+БЕАРА ЈОВАН
+БЕАРА МАРКО
+БЕАРА ПЕТАР
+БЕАРА ПЕТАР
+БЕАТОВИЋ НЕБОЈША
+БЕБЕК МАТО
+БЕБЕЉА-МАТУШ АНКА
+БЕБИЋ АНА
+БЕБИЋ ЉИЉАНА
+БЕБИЋ НЕВЕНКА
+БЕБИЋ НЕВЕНКА
+БЕБИЋ ПЕТАР
+БЕБИЋ СТОЈАНКА
+БЕЦЕ БЕЛА
+БЕЦЕ ТИБОР
+БЕЦИЋ СТЕВАН
+БЕЏЕТИ МАРИЈА
+БЕДАК БИЉАНА
+БЕДЕ ШАНДОР
+БЕДЕ ПЕТАР ДР
+БЕДЕ ПЕТАР
+БЕДЕКОВИЋ АНТОН
+БЕДНАРИК АНДРИЈА
+БЕДНАРИК ДАРИНКА
+БЕДНАРИК ЈАНОШ
+БЕДНАРИК ЈОСИП
+БЕДНАРИК МИХАЉ
+БЕДОВ БИСЕРКА
+БЕДОВ ЈОВАН
+БЕДОВ ЉУБИЦА
+БЕДОВ МАРИЈА
+БЕДОВ МИРОСЛАВ
+БЕДОВ НАДА
+БЕДОВ ПРЕДРАГ
+БЕДОВ РАДА
+БЕДОВ СРЂАН
+БЕДОВ СУНЧИЦА
+БЕДОВ СВЕТИСЛАВ
+БЕДРИК АЛЕКСАНДАР
+БЕГ АНДРИЈА
+БЕГ-ВАЛОВИЧИЋ АНЂЕЛКО
+БЕГ-ВОЛОВИЧИЋ ИВАН
+БЕГАНИ ШЕРИФ
+БЕГАНОВИЋ МЕХМЕД
+БЕГАНОВИЋ САНИД
+БЕГЕЧКИ РАЈКО
+БЕГЕЧКИ САВА
+БЕГЕНИШИЋ ДРАГОРАД
+БЕГЕНИШИЋ ВУКАШИН
+БЕГИЋ МИЛОШ
+БЕГИЋ МИРКО
+БЕГЛЕРБЕГОВИЋ ЏЕВАД
+БЕГОЈЕВ АНКА
+БЕГОЈЕВ БОГДАН
+БЕГОЈЕВ ЛАЗАР
+БЕГОЈЕВ ЛАЗА
+БЕГОЈЕВ ПЕТАР
+БЕГОЈЕВ РАДОЈКА
+БЕГОЈЕВ ТОША
+БЕГОЈЕВИЋ РАДИВОЈ
+БЕГОВИЋ ЕВИЦА
+БЕГОВИЋ ЈАСМИНА
+БЕГОВИЋ ЈОВАН
+БЕГОВИЋ ЛАДИСЛАВ
+БЕГОВИЋ-ЛИВАЈА ИЛИЈА
+БЕГОВИЋ ЉУБАН
+БЕГОВИЋ МИЛИЈА
+БЕГОВИЋ МИЛОРАД
+БЕГОВИЋ МИРКО
+БЕГОВИЋ РОЋКО
+БЕГОВИЋ САВО
+БЕГОВИЋ ТОДОР
+БЕГОВИЋ ЗОРО
+БЕХЕР ЕВА
+БЕХЕРАНО ЈОСИП
+БЕХТЕР АЛЕКСАНДАР
+БЕЈАРОВИЋ МАРКО
+БЕЈАРОВИЋ НЕНАД
+БЕЈАТОВИЋ ЂОРЂЕ
+БЕЈАТОВИЋ МИЛОРАД
+БЕЈАТОВИЋ МИРКО
+БЕЈТОВИЋ АЛИЈА
+БЕК АНТОНИЈА
+БЕК ДРАГАНА
+БЕК ЈОВАН
+БЕК ЛАДИСЛАВ
+БЕК ЉИЉАНА
+БЕК РУЖА
+БЕК СТЕВАН
+БЕКЧИЋ МИЛОРАД
+БЕКАРЕК ИЛИНКА
+БЕКЕ ЛАСЛО
+БЕКЕ МАРИЈАН
+БЕКЕР ФРЕДЕРИК
+БЕКЕР ИШТВАН
+БЕКЕР ИДА
+БЕКЕР ЈОЖЕФ
+БЕКЕР ЈОСИП
+БЕКЕР СТЕВАН
+БЕКИЋ БОРИС
+БЕКИЋ БРАНКА
+БЕКИЋ ЈУРЕ
+БЕКИЋ МИЛОРАД
+БЕКИЋ ТОМИСЛАВ
+БЕКИЋ ВЕРА
+БЕКРИЋ ДРАГАН
+БЕКРИЋ МИРА
+БЕКРИЋ ТОМИСЛАВ
+БЕКТАШ ДАНИЦА
+БЕКТАШ СЛАВКО
+БЕКУТ ДРАГАН
+БЕКУТ ПЕТАР
+БЕКВАЛАЦ ЖИВАН
+БЕКВАЛАЦ БРАНИСЛАВ
+БЕКВАЛАЦ БРАНИСЛАВ
+БЕКВАЛАЦ БРАНКА
+БЕКВАЛАЦ БРАНКО
+БЕКВАЛАЦ БРАНКО
+БЕКВАЛАЦ ДРАГОЉУБ
+БЕКВАЛАЦ ЕМИЛИЈА
+БЕКВАЛАЦ ИСА
+БЕКВАЛАЦ ЛАЗАР
+БЕКВАЛАЦ ЉУБИЦА
+БЕКВАЛАЦ ЉУБИЦА
+БЕКВАЛАЦ ЉУБИНКО
+БЕКВАЛАЦ МАРА
+БЕКВАЛАЦ МИЈА
+БЕКВАЛАЦ МИЛАНКО
+БЕКВАЛАЦ МИЛАН
+БЕКВАЛАЦ МИЛИСАВ
+БЕКВАЛАЦ МИРЈАНА
+БЕКВАЛАЦ РАДИВОЈ
+БЕКВАЛАЦ РАДМИЛА
+БЕКВАЛАЦ СЕРАФИНА
+БЕКВАЛАЦ СТЕВАН
+БЕЛЧЕВИЋ ГРАДИМИР
+БЕЛЧЕВИЋ РАТКО
+БЕЛАК ШАНДОР
+БЕЛАК АНА
+БЕЛАК МАРГИТА
+БЕЛАК МИЈО
+БЕЛАК ВЛАДА
+БЕЛАН ЈОЖЕФ
+БЕЛАНЧИЋ ЕЛИЗАБЕТА
+БЕЛАНОВИЋ ЂОРЂЕ
+БЕЛАНОВИЋ АЛЕКСАНДРА
+БЕЛАНОВИЋ КАТИЦА
+БЕЛАНОВИЋ МИЛИВОЈ
+БЕЛАНОВИЋ ТИБОР
+БЕЛЕЦКИ ЈЕЛЕНА
+БЕЛЕГИШАНИН ДРАГОМИР ДР
+БЕЛЕСЛИЈИН МИЛОРАД
+БЕЛЕСЛИЈИН СЛОБОДАН
+БЕЛЕСЛИН ДОБРИЛА
+БЕЛЕСЛИН МИРОСЛАВ
+БЕЛЕСЛИН СВЕТОЗАР ДР
+БЕЛЕТИЋ ЈЕЛЕНА
+БЕЛИ АНДРИЈА
+БЕЛИ ЕМИЛ
+БЕЛИ РОЗАЛИЈА
+БЕЛИ СТЕВАН
+БЕЛИ ВОЈИСЛАВ
+БЕЛИЧКА АНА
+БЕЛИЧКА БРАНИСЛАВ
+БЕЛИЧКА МИРОСЛАВ
+БЕЛИЋ ЖИВКА
+БЕЛИЋ ЂОРЂЕ
+БЕЛИЋ ЂОРЂЕ
+БЕЛИЋ ЂУРИЦА
+БЕЛИЋ БОШКО
+БЕЛИЋ БОЖИДАР
+БЕЛИЋ БОЖИДАР
+БЕЛИЋ БОРИСЛАВ
+БЕЛИЋ БОРИСЛАВ
+БЕЛИЋ БОРИС
+БЕЛИЋ БОРИВОЈЕ
+БЕЛИЋ БОРИВОЈЕ
+БЕЛИЋ БРАНИСЛАВ
+БЕЛИЋ-БРКИЋ ВЛАДИСЛАВА
+БЕЛИЋ ДАНИЦА
+БЕЛИЋ ДАНИЈЕЛА
+БЕЛИЋ ДРАГАН
+БЕЛИЋ ДРАГИЦА
+БЕЛИЋ ДРАГУТИН
+БЕЛИЋ ДУШАН ДР
+БЕЛИЋ ДУШАН ДР
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШКО
+БЕЛИЋ ДУШКО
+БЕЛИЋ ФЛОРИКА
+БЕЛИЋ ИЛИЈА
+БЕЛИЋ ЈОСИМ
+БЕЛИЋ ЈОВАНКА
+БЕЛИЋ ЈОВИЦА
+БЕЛИЋ ЈУЛИЈАНА
+БЕЛИЋ ЈУЛКА
+БЕЛИЋ ЛАЗАР
+БЕЛИЋ ЉУБИЦА
+БЕЛИЋ МАРИЦА
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛЕНА
+БЕЛИЋ МИЛИВОЈ
+БЕЛИЋ МИЛОШ
+БЕЛИЋ МИЛОРАД
+БЕЛИЋ МИРЈАНА
+БЕЛИЋ МИРОСЛАВ
+БЕЛИЋ НЕНАД
+БЕЛИЋ НЕСТОР
+БЕЛИЋ НИКОЛА
+БЕЛИЋ ПЕТАР
+БЕЛИЋ ПЕТАР
+БЕЛИЋ РАДИНКА
+БЕЛИЋ РАДОЈКА
+БЕЛИЋ РАДОСЛАВ
+БЕЛИЋ РАДОВАН
+БЕЛИЋ САВА
+БЕЛИЋ СЕНА
+БЕЛИЋ СИМА
+БЕЛИЋ СЛАВКО ДИПЛ ИНГ
+БЕЛИЋ СЛАВКО
+БЕЛИЋ СЛОБОДАНКА
+БЕЛИЋ СОФИЈА
+БЕЛИЋ СРЂАН
+БЕЛИЋ СТАНКО
+БЕЛИЋ СТЕВАН
+БЕЛИЋ СТОЈАНКА
+БЕЛИЋ СТОЈАН
+БЕЛИЋ СВЕТИСЛАВ
+БЕЛИЋ СВЕТИСЛАВ
+БЕЛИЋ СВЕТЛАНА
+БЕЛИЋ ТОДОР
+БЕЛИЋ ВЕРА
+БЕЛИЋ ВЕСНА
+БЕЛИЋ ВЛАДИСЛАВ
+БЕЛИЋ ВЛАДИСЛАВ
+БЕЛИЋ ВОЈИСЛАВ
+БЕЛИЋ ВУКА
+БЕЛИЋ ЗОРА
+БЕЛИМАРКОВИЋ СЛАВОЉУБ
+БЕЛИНИЋ ЂУРА
+БЕЛИНСКИ АЛЕКСАНДАР
+БЕЛИНСКИ СПАСЕНИЈА
+БЕЉАКОВ МИЛИЦА
+БЕЉАНСКИ ЖИВКА
+БЕЉАНСКИ ЖИВКА
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ АНЂЕЛИЈА
+БЕЉАНСКИ АНКИЦА
+БЕЉАНСКИ-БАЈИЋ КАЋУША
+БЕЉАНСКИ БОРА
+БЕЉАНСКИ БОРА
+БЕЉАНСКИ БОРИВОЈ
+БЕЉАНСКИ ДРАГАНА
+БЕЉАНСКИ ДРАГИЦА
+БЕЉАНСКИ ЕМИЛИЈА
+БЕЉАНСКИ ГАВРА
+БЕЉАНСКИ ГОРДАНА
+БЕЉАНСКИ ЈЕЛИСАВЕТА
+БЕЉАНСКИ ЈОВАН
+БЕЉАНСКИ ЈОВАН
+БЕЉАНСКИ ЈУЛИЈАНА
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛЕПОЈКА
+БЕЉАНСКИ ЉУБОМИР
+БЕЉАНСКИ МИЛАН
+БЕЉАНСКИ МИЛЕНКО
+БЕЉАНСКИ МИЛОРАД
+БЕЉАНСКИ МИЛОРАД
+БЕЉАНСКИ МИЛУТИН
+БЕЉАНСКИ МИРЈАНА
+БЕЉАНСКИ ПАВЛЕ
+БЕЉАНСКИ РАДА
+БЕЉАНСКИ РАДМИЛА
+БЕЉАНСКИ РАДОВАН
+БЕЉАНСКИ РАНКО
+БЕЉАНСКИ РУЖИЦА
+БЕЉАНСКИ СЛОБОДАН
+БЕЉАНСКИ СТЕВАН
+БЕЉАНСКИ ТЕОДОР
+БЕЉАНСКИ ТОША
+БЕЉАНСКИ ВАСИЛИЈЕ
+БЕЉАНСКИ ВЕРА
+БЕЉАНСКИ ВЛАДИМИР
+БЕЉАНСКИ ВЛАДИСЛАВ
+БЕЉАНСКИ ВОЈИСЛАВ
+БЕЉАНСКИ ЗАГОРКА
+БЕЉАНСКИ ЗДЕНКА
+БЕЉИН ЖИВА
+БЕЉИН ЂОРЂЕ
+БЕЉИН БРАНИСЛАВА
+БЕЉИН ДИМИТРИЈЕ
+БЕЉИН МАРИЈА МАГДАЛЕНА
+БЕЉИН НЕДЕЉКО
+БЕЉИН РАДИВОЈ
+БЕЉИН РАДОСЛАВ
+БЕЉИН РУЖА
+БЕЉИН САВА
+БЕЉИН СОФИЈА
+БЕЉИН ВЛАДИМИР
+БЕЉИНАЦ ЗОРАН
+БЕЛОШЕВ НЕВЕНКА
+БЕЛОБРАДИЋ МИЛАН
+БЕЛОБРАДИЋ САВА
+БЕЛОБРК БРАНИСЛАВ
+БЕЛОБРК ДРАГОСЛАВ
+БЕЛОБРК ЛИВИЈЕ
+БЕЛОЦИЋ МИЛЕНКО
+БЕЛОЦИЋ РАДМИЛА
+БЕЛОИЦА РАДОСЛАВ
+БЕЛОИЦА ВИДАН
+БЕЛОПАВЛОВИЋ ДРАГА ДР
+БЕЛОПАВЛОВИЋ МИЛОЈКО
+БЕЛОПАВЛОВИЋ ЗОРАН ДР
+БЕЛОПАВЛОВИЋ ЗОРАН ДР
+БЕЛОСАВИЋ ЈЕЛИЦА
+БЕЛОТИ ИВАНКО
+БЕЛОВАРИ ИВАН
+БЕЛОВИЋ БИЉАНА
+БЕЛОВИЋ РАДА
+БЕЛОВИЋ СТЕВАН
+БЕЛУШЕВИЋ БОЖИДАР
+БЕЛУШЕВИЋ НОВИЦА
+БЕЛУЖИЋ ДАРИНКА
+БЕЛУЖИЋ СТЈЕПАН
+БЕМ ИВАН
+БЕМ ЈОВАН
+БЕМ КАРЛО
+БЕМ МИРОСЛАВ
+БЕМИЛЕР МАГДАЛЕНА
+БЕНЧИК ЂУЛА
+БЕНЧИК ИЛОНКА
+БЕНА МИЛОСАВА
+БЕНАШИЋ ВИНКО
+БЕНАК ПАЛ
+БЕНАРИК ЛАСЛО
+БЕНАРИК МАГДАЛЕНА
+БЕНЦ БРАНИСЛАВА
+БЕНЦ ДРАГАН
+БЕНЦЕ МАРИЈА
+БЕНЦЕ МИХАЉ
+БЕНЦЕ МИКЕШ
+БЕНЦЕТИЋ АНДРИЈА
+БЕНЦЕТИЋ ЉУДЕВИТ
+БЕНЦУН ВЕЛИНКА
+БЕНДЕК МИЛАН
+БЕНЕШ ЉУДМИЛА
+БЕНЕЖАН ЉУБИЦА
+БЕНЕДЕКОВИЋ ИВАН
+БЕНГИН-ЂУРКИЋ НЕЗА
+БЕНГИН БОЖИДАР
+БЕНГИН ДОБРИНКА
+БЕНГИН ДУШАН
+БЕНГИН КОВИЦА
+БЕНГИН МИЛАН
+БЕНИЧАК КАРЛО
+БЕНИЧАК МАГДАЛЕНА
+БЕНИШЕК ДРАГУТИН
+БЕНИЋ ЕВА
+БЕНИЋ ГРУЈИЦА
+БЕНИЋ ПЕТАР
+БЕНИЋ СЕКУЛА
+БЕНИЋ ЗДЕНКО
+БЕНИН ЖИВОЈИН
+БЕЊА КАТАРИНА
+БЕЊАК ДРАГОСЛАВА
+БЕЊАК ЕВИЦА
+БЕНКА МАРИЈА
+БЕНКА МИХАИЛО
+БЕНКЕ ЕЛЗА
+БЕНКОВИЋ ЈОЦА
+БЕНКОВИЋ ЈОЦА
+БЕНО ТИБОР
+БЕНОВИЋ ЈОСИП
+БЕНОВИЋ СТАНА
+БЕОЧАНИН ЈОВАН
+БЕОЧАНИН МИОДРАГ
+БЕОЧАНИН ПАВЛЕ
+БЕОДРАНСКИ ДРАГОМИР
+БЕОДРАНСКИ СТОЈАН
+БЕОКОВИЋ ДАМИР
+БЕР АЛЕКСИЈЕ
+БЕР ФРАЊО
+БЕРЧЕК ЂЕРЂ
+БЕРЧЕК БОЖИДАР
+БЕРЧЕК ФРАЊА
+БЕРЧЕК ЛАДИСЛАВ
+БЕРЧЕК МАРИЈА
+БЕРЧЕК МИХАИЛО
+БЕРЧЕК ОСКАР
+БЕРЧЕК САНИСЛО
+БЕРЋАН МИРЈАНА
+БЕРЋАН ПЕТАР
+БЕРЋАН СЛАВКО
+БЕРА ЂОРЂО
+БЕРА ДРАГАН
+БЕРАК НЕБОЈША
+БЕРАНОВИЋ АЛЕКСАНДАР
+БЕРАР ЖИВАНА
+БЕРАР БОРИВОЈ
+БЕРАР БРАНИСЛАВ
+БЕРАР БРАНИСЛАВ
+БЕРАР ДУШАНКА
+БЕРАР МИЛАН
+БЕРАР МИЛАН
+БЕРАР МИЛАН
+БЕРАР РАДИВОЈ
+БЕРАР СЛОБОДАН
+БЕРАР СЛОБОДАН
+БЕРАР ТИМА
+БЕРАР ВЛАДИМИР
+БЕРАРОВ ЂУРИЦА
+БЕРБАКОВ ЉУБИЦА
+БЕРБАКОВ МАРА
+БЕРБАКОВ МИЛОШ
+БЕРБАКОВ ПЕТАР
+БЕРБАКОВ СТЕВАН
+БЕРБАТОВИЋ ЖАРКО
+БЕРБАТОВИЋ МИРЈАНА
+БЕРБЕР ЉИЉАНА
+БЕРБЕР СТЕВАН
+БЕРБЕРИЋ ЈЕЛИСАВЕТА
+БЕРБЕРИЋ ЈОВАН
+БЕРБЕРИЋ ЛАЗАР
+БЕРБЕРИЋ МИЛУТИН
+БЕРЕШ ЂОРЂЕ
+БЕРЕШ ДАНИЛО
+БЕРЕШ ИЛОНА
+БЕРЕШ ЈОСИП
+БЕРЕШ ЈУЛИШКА
+БЕРЕШ КАРОЉ
+БЕРЕШ КОРНЕЛ
+БЕРЕШ ТИБОР
+БЕРЕШ-ТОТ КОРНЕЛ
+БЕРЕХАНИЋ ЈУЛКА
+БЕРЕЊИ ЕУГЕН
+БЕРЕЊИ ЈАНОШ
+БЕРЕЊИ ЈЕЛЕНА
+БЕРЕЊИ МИКЛОШ
+БЕРЕЊИ МИКЛОШ
+БЕРЕЊИ РОЗАЛИЈА
+БЕРЕЊИ СТЕВАН
+БЕРЕЊИ ТИБОР
+БЕРЕНТА ЈОСИП
+БЕРЕНТЕ ИЛОНА
+БЕРЕТИЋ АНТУН
+БЕРЕТИЋ ЛАДИСЛАВ
+БЕРЕТИЋ МАРГИТА
+БЕРЕТКА ШАНДОР
+БЕРЕТКА ГОРДАНА
+БЕРЕТКА ЈУЛИЈАНА
+БЕРЕТКА КАРЛО
+БЕРЕТКА МИХАЉ
+БЕРГЕЛ ЂУРА
+БЕРГЕЛ АНТУН
+БЕРГЕР ФРАЊА ДР СТОМАТОЛОГ
+БЕРГЕР МИРОСЛАВ
+БЕРИША АЗИС
+БЕРИША БОЈКА
+БЕРИША ДЕМО
+БЕРИША ФАИК
+БЕРИША МИРВЕТА
+БЕРИША РАГИБ
+БЕРИЋ ЖИВКО
+БЕРИЋ АНЂЕЛКО
+БЕРИЋ АНТА
+БЕРИЋ АНТА
+БЕРИЋ БЕРИСЛАВ ДР ПРОФ
+БЕРИЋ БИЉАНА
+БЕРИЋ БОЖИДАР
+БЕРИЋ БОГДАН
+БЕРИЋ ДРАГИЊА
+БЕРИЋ ДУШАНКА
+БЕРИЋ ДУШАН
+БЕРИЋ ГОЈКО
+БЕРИЋ ГОЈКО
+БЕРИЋ ГОЈКО
+БЕРИЋ ИЛИЈА
+БЕРИЋ ЈОРДАНА
+БЕРИЋ ЈОВО
+БЕРИЋ КОСТА
+БЕРИЋ МАРА
+БЕРИЋ-МАСКАРЕЛ КАРМЕНСИТА ДР
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛИЦА МР
+БЕРИЋ МИЛИВОЈ
+БЕРИЋ МИЛОРАД
+БЕРИЋ МИЛОРАД
+БЕРИЋ МИЛОВАН
+БЕРИЋ НАДА
+БЕРИЋ НИКОЛА
+БЕРИЋ ПЕРСИДА
+БЕРИЋ ПЕТАР
+БЕРИЋ РАДИВОЈ
+БЕРИЋ РАЈКО
+БЕРИЋ РАЈКО
+БЕРИЋ САВА
+БЕРИЋ ТОДЕ
+БЕРИЋ ВЕРА
+БЕРИЋ ВЕРИЦА
+БЕРИЋ ВЕСНА ДР
+БЕРИЋ ЗОРИЦА
+БЕРИСАВЉЕВИЋ РАЈКО
+БЕРИСАВЉЕВИЋ ЗОРИЦА
+БЕРКЕШ ИШТВАН
+БЕРКИ ЈОЖЕФ
+БЕРКИЋ РУЖИЦА
+БЕРКОВИЋ БЕРИСЛАВ
+БЕРКОВИЋ ЏАФЕР
+БЕРКОВИЋ МИРОСЛАВ
+БЕРКОВИЋ СЛАВОЉУБ
+БЕРЛАНЧИЋ ДАНИЈЕЛ
+БЕРЛОВАН ГЕОРГИНА
+БЕРНАЦКИ АДОЛФ
+БЕРНАРД ЂОРЂЕ
+БЕРНХАРД ЖАРКО
+БЕРНХАРД БОЖИДАР
+БЕРНХАРД БОЈАНА
+БЕРНХАРД ФИЛИП
+БЕРНХАРД ИЛИЈА
+БЕРНХАРД ЉУБАН
+БЕРНХАРД МАРИЈА
+БЕРНХАРД МИЛАН
+БЕРНХАРД МИЛИЦА ДР
+БЕРНХАРД МИЛОРАД
+БЕРНХАРД РАДОСЛАВ
+БЕРНХАРД РАЈКО
+БЕРНХАРД СИМО
+БЕРНХАРД ТРИВО
+БЕРОШ ЉУБИЦА
+БЕРТА ЈАНОШ
+БЕРТА МИЛИЦА
+БЕРТА ПАЛ
+БЕРТА ПЕТАР
+БЕРТИЋ ТАТЈАНА
+БЕРТИЋ ЗВОНКО
+БЕРТОК ЈАНОШ
+БЕРТОК ЈУЛИЈАНА
+БЕРТОК ЛАЈОШ
+БЕРТРОН ЛЕНКЕ
+БЕРУС ВЈЕКОСЛАВ
+БЕРЗА АЛЕКСАНДАР
+БЕСЕДЕШ ЈОЖЕФ
+БЕСЕРМЕЊИ ЂОРЂЕ
+БЕСЕРМЕЊИ БРАНКО
+БЕСЕРМЕЊИ ДИОНИЗИЈЕ
+БЕСЕРМЕЊИ ЕУФЕМИЈА
+БЕСЕРМЕЊИ ИРЕНА
+БЕСЕРМЕЊИ ИВАН
+БЕСЕРМЕЊИ КИРИЛ
+БЕСЕРМЕЊИ КСЕНИЈА
+БЕСЕРМЕЊИ ЛЕОНА
+БЕСЕРМЕЊИ МЕЛАНИЈА
+БЕСЕРМЕЊИ ОЛГА
+БЕСЕРМЕЊИ ВЛАДИМИР
+БЕСЕРМЕЊИ ВЛАДИМИР
+БЕСКОРОВАЈНИ ВЛАДИМИР
+БЕСЛАЋ ДРАГАНА
+БЕСЛАЋ МИЛУТИН
+БЕСЛАЋ РАДМИЛА
+БЕСНИЛОВ БОШКО
+БЕСНИЛОВ ОЛИВЕРА
+БЕСУ СИЛА
+БЕСУ ТОДОР
+БЕСУ ТРАНДАФИР
+БЕТИ СТАНКО АДВОКАТ
+БЕУЦ ЖИВАН
+БЕУЦ МИРА
+БЕУЦ ОЛГА
+БЕЗДАН АНА
+БЕЗДАН ФРАЊА
+БЕЗДАН ИЛДИКО
+БЕЗДАН ИРЕНА
+БЕЗДАН ЈОСИП
+БЕЗЕНШЕК НАТАЛИЈА
+БЕЗИ КАТИЦА
+БЕЗЈАК МИЛАНКА
+БЕЗЈАК ЗДЕНКО
+БЕЗУЉ ЂОРЂЕ
+БЕЗУЉ ЉИЉАНА ПРОФЕСОР
+БИЧАК ИГНАЦ
+БИЧАК ЈУСТИНА
+БИЧАН АНКА
+БИЧАН ИВИЦА
+БИЧКЕИ ТЕРЕЗИЈА
+БИЋАНИЋ ДАНИЦА
+БИЋАНИЋ КРИСТИНА
+БИЋАНИЋ МАРИЈА
+БИЋАНИЋ ПЕТАР
+БИЋАНИЋ ПЕТРА
+БИБЕР СТЕВАН
+БИБЕРЏИЋ РАДОМИР
+БИБИЋ АЛЕКСАНДАР
+БИБИЋ ПАВЛЕ
+БИБИЋ СОФИЈА
+БИБИЋ СТЈЕПАН
+БИБИН ЈУГОСЛАВ
+БИБИН МИЛИНКО
+БИЦИКИН МИЛАН
+БИЦК ДРАГУТИН
+БИЦО РУЖИЦА
+БИЦОК ЕТЕЛКА
+БИЦОК МАРГИТА
+БИЦОК МАРГИТА
+БИЕЛЧИК ЛИДИЈА
+БИГА БОРИСЛАВ
+БИГА МИЛАН
+БИГА НАДА
+БИГА СМИЉА
+БИГОВИЋ-ШИРОКИ ЗОРИЦА
+БИГОВИЋ АНА
+БИГОВИЋ ВОЈИН
+БИГОВИЋ ВОЈИСЛАВ
+БИХОРАЦ МИРЈАНА
+БИЈАНИЋ МИЛЕНКО
+БИЈАНКО ПЕТАР
+БИЈЕДИЋ МИЛОРАД
+БИЈЕЛИЋ АЛЕКСА
+БИЈЕЛИЋ БРАНИСЛАВ
+БИЈЕЛИЋ ДАРА
+БИЈЕЛИЋ ИВИЦА
+БИЈЕЛИЋ ЈОВАН
+БИЈЕЛИЋ ЈОВИЦА
+БИЈЕЛИЋ МАТО
+БИЈЕЛИЋ МИЛАН
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ НОВАК
+БИЈЕЛИЋ ПЕРО
+БИЈЕЛИЋ РИСТО
+БИЈЕЛИЋ СТОЈАН
+БИЈЕЛИЋ СТОЈАН
+БИЈЕЉАЦ НЕДЕЉКО ДИПЛ ИНГ
+БИЈЕЛОВИЋ НОВКА
+БИЈУКЛИЋ ДРАГОСЛАВ
+БИЈУКЛИЋ ДРАГОСЛАВ
+БИЈУКЛИЋ МАРИНКО
+БИКАР ДРАГАНА
+БИКАР ФЕДОРА
+БИКАРЕВИЋ ДРАГАН
+БИКИЋ ЖИВАН
+БИКИЋ ЂОРЂЕ
+БИКИЋ ДАНИЦА
+БИКИЋ ДУШАН
+БИКИЋ КОНСТАНТИН
+БИКИЋ ЉИЉАНА
+БИКИЋ МИЛОВАН
+БИКИЋ МИОДРАГ
+БИКИЋ НИКОЛА
+БИКИЋ ПЕРА
+БИКИЦКИ ЂОРЂЕ
+БИКИЦКИ АЛЕКСАНДАР
+БИКИЦКИ БРАНИСЛАВ
+БИКИЦКИ ЈЕЛИЦА
+БИКИЦКИ ЈЕЛИЦА
+БИКИЦКИ ЈОВАН
+БИКИЦКИ ЈОВАН
+БИКИЦКИ КАТАРИНА
+БИКИЦКИ МИЛОШ
+БИКИЦКИ МИРОСЛАВ
+БИКИЦКИ РАДОЈКА
+БИКИЦКИ СИНИША
+БИКИЦКИ СИНИША
+БИКИЦКИ ВАСИЛИЈЕ
+БИКИТ МАГДОЛНА
+БИКИТ НОРБЕРТ
+БИКОВИЋ ЉУБИЦА
+БИКОВИЋ ВЛАДИМИР
+БИЛЧАР ХИЛДА
+БИЛЧАР ВЕРА
+БИЛА МИРКО
+БИЛАК МИЛАН
+БИЛАК НАДА
+БИЛАЛОВИЋ САБАХУДИН
+БИЛАНЏИЈА ДАНИЦА
+БИЛАНИЋ НАДА
+БИЛАНОВИЋ ДУШАН
+БИЛАНОВИЋ ГОРДАНА
+БИЛАНОВИЋ ПЕРО
+БИЛАС СМИЉА
+БИЛБИЈА БОГДАН
+БИЛБИЈА ДЕЈАН
+БИЛБИЈА ДРАГАН
+БИЛБИЈА ЈАСНА
+БИЛБИЈА МИЛАН
+БИЛБИЈА СМИЉА
+БИЛЕК МИЛИЦА
+БИЛЕР ЂОРЂЕ
+БИЛИ ЈУЛИЈА
+БИЛИЧИЋ СТЈЕПАН
+БИЛИЋ АНТЕ
+БИЛИЋ БРАНКИЦА
+БИЛИЋ ГОРДАНА
+БИЛИЋ ИВАН ДИПЛ ИНГ
+БИЛИЋ ИВАН
+БИЛИЋ ЈАКОВ
+БИЛИЋ ЈЕЛЕНА
+БИЛИЋ МИЛАН
+БИЛИЋ МИЛАН
+БИЛИЋ МИЛЕНКО
+БИЛИЋ МИЛОРАД
+БИЛИЋ МИРО
+БИЛИЋ ПРЕДРАГ
+БИЛИЋ СРЂАН
+БИЛИЋ СТЈЕПАН
+БИЛИЋ СТРАИН
+БИЛИЦКИ ЛАСЛО
+БИЛИНОВИЋ БОРИС
+БИЛИНОВИЋ САША
+БИЉАНИЋ РАДОЈКА
+БИЉЊА ВЛАДИМИР
+БИЛОКАПИЋ ИВАН
+БИЛОКАПИЋ ЈУРЕ
+БИЛОКАПИЋ СТЕВАН
+БИЛУШИЋ СЛАВИЦА
+БИН АЛЕКСАНДАР
+БИН МУХАМЕТ
+БИНАКАЈ БАЈРАМ
+БИНДАС ЂУРА
+БИНДАС ДРАГИЦА
+БИНДАС МИХАЈЛО
+БИНДЕР АРАНКА
+БИНГОЛД ДРАГУТИН
+БИНГОЛД КАРЛО
+БИНГОЛД РУДОЛФ
+БИНГУЛАЦ ЖИВКО
+БИНГУЛАЦ БОЈАНА
+БИНГУЛАЦ МИРЈАНА
+БИОНДИЋ ЈЕЛЕНА
+БИОРАЦ ДЕСИМИР
+БИОРАЦ РАНКО
+БИРЋА СРЕТКО
+БИРЦЛИН РУЖИЦА
+БИРДИЋ БЕЛА
+БИРЕШ ЛЕНКА
+БИРЕШ РОЗАЛИЈА
+БИРГЕМАЈЕР МАРИЈА
+БИРХМАН АНА
+БИРИЊИ ДЕНЕШ
+БИРИЊИ ЕУГЕН
+БИРМАНАЦ ДУШАН
+БИРО АНТОН
+БИРО ГИЗЕЛА
+БИРО ГИЗЕЛА
+БИРО ИШТВАН
+БИРО ИЛОНА
+БИРО ИМРЕ
+БИРО ИМРЕ
+БИРО КАТАЛИН
+БИРО ЛАЈОШ
+БИРО МИКЛОШ
+БИРО МИЛОШ
+БИРОШЕВИЋ МИЛИЦА
+БИРОВЉЕВ БРАНИМИР
+БИРОВЉЕВ БРАНИСЛАВ
+БИРОВЉЕВ МИЛАН
+БИРОВЉЕВ МИЛОРАД
+БИРОВЉЕВ МИЛОСАВ
+БИРОВЉЕВ МИРОСЛАВ
+БИРОВЉЕВ ТОДОР ДР
+БИРОВЉЕВИЋ ДРАГАН
+БИРОВЉЕВИЋ ЉУБИЦА
+БИРТА ВЛАДИМИР
+БИРВАЛСКИ ДУШАН
+БИСЕРЧИЋ АНДРИЈА
+БИСЕРЧИЋ ДРАГО
+БИСЕРЧИЋ МИЛКАНА
+БИСИЋ ЈОВАН
+БИСТРИЦАН ОЛГА
+БИСТРОВИЋ АНТОН
+БИТИЋ ЏЕМАИЛ
+БИТО СТЕВАН
+БИУК МАРИЈА
+БИВОЛАРЕВИЋ ВУКАШИН
+БИЗЈАК РЕНАТО
+БИЗУМИЋ ГЕОРГИЈЕ
+БИЗУМИЋ ЈЕЛКА
+БИЗУМИЋ ЛАЗАР
+БИЗУМИЋ МИЛАН
+БЈЕДИЋ ДЕСАНКА
+БЈЕДОВ ЂУКА
+БЈЕДОВ ДРАГО
+БЈЕДОВ НИКОЛА
+БЈЕГОВИЋ ДАНИЛКА
+БЈЕГОВИЋ ГОЈКО
+БЈЕКИЋ ЛУКА
+БЈЕКИЋ ОСТОЈА
+БЈЕКОВИЋ МИРЈАНА
+БЈЕКОВИЋ РАДЕ
+БЈЕЛАЦ ЂУРА
+БЈЕЛАЦ ДРАГАН
+БЈЕЛАЦ ДРАГАН
+БЈЕЛАЦ ЕТЕЛКА
+БЈЕЛАЈАЦ ДРАГАН
+БЈЕЛАЈАЦ МИЉА
+БЈЕЛАЈАЦ СВЕТОЗАР
+БЈЕЛАКОВИЋ РАДИВОЈЕ
+БЈЕЛАНОВИЋ МИЛОСАВ
+БЈЕЛАНОВИЋ МИРКО
+БЈЕЛАНОВИЋ РАЈКО
+БЈЕЛАНОВИЋ СТАНИМИР
+БЈЕЛАНОВИЋ ТАЊА
+БЈЕЛЕТИЋ БОГДАН
+БЈЕЛЕТИЋ ЉУБИЦА
+БЈЕЛЕТИЋ ЛУКА
+БЈЕЛИ-ХАЏИЋ ЈЕЛИЦА
+БЈЕЛИЋ ЂУРА
+БЈЕЛИЋ БОРИСЛАВ
+БЈЕЛИЋ БРАНКО
+БЈЕЛИЋ ДАНИЛКА
+БЈЕЛИЋ ДМИТАР
+БЈЕЛИЋ ГОРДАНА
+БЈЕЛИЋ ЈОВАН
+БЈЕЛИЋ КАТИЦА
+БЈЕЛИЋ КРСТАН
+БЈЕЛИЋ ЉУБОМИР
+БЈЕЛИЋ МИЛАН
+БЈЕЛИЋ МИРКО
+БЈЕЛИЋ НЕДЕЉКО
+БЈЕЛИЋ ОЛГА
+БЈЕЛИЋ ПЕТАР
+БЈЕЛИЋ ПЕТАР
+БЈЕЛИЋ СЛАВКО
+БЈЕЛИЋ СЛОБОДАН
+БЈЕЛИЋ СТЕВО
+БЈЕЛИЋ СВЕТЛАНА
+БЈЕЛИЋ ВЕРА
+БЈЕЛИЋ ВЛАДИМИР
+БЈЕЛИЦА ЧЕДО
+БЈЕЛИЦА ЂОРЂИЈА
+БЈЕЛИЦА АЛЕКСА
+БЈЕЛИЦА БОГДАН
+БЈЕЛИЦА БРАНИСЛАВ
+БЈЕЛИЦА ДАНИЛО
+БЈЕЛИЦА ДОБРИВОЈЕ
+БЈЕЛИЦА ДРАГУТИН
+БЈЕЛИЦА ГОЈКО
+БЈЕЛИЦА ГОЈКО
+БЈЕЛИЦА ЈАДРАНКА
+БЈЕЛИЦА ЈАДРАНКА
+БЈЕЛИЦА ЛУКА
+БЈЕЛИЦА МИЛАН
+БЈЕЛИЦА МИЛИЦА
+БЈЕЛИЦА МИОДРАГ
+БЈЕЛИЦА НАДА
+БЈЕЛИЦА-ПОПОВИЋ ЉУБИЦА
+БЈЕЛИЦА РАЈКО
+БЈЕЛИЦА РАКО
+БЈЕЛИЦА РАТКО
+БЈЕЛИЦА САВКА
+БЈЕЛИЦА СЛАВКО
+БЈЕЛИЦА СПАСОЈЕ
+БЈЕЛИЦА ТИГРАН
+БЈЕЛИЦА ВЕЉКО
+БЈЕЛИЦА ВЕЉКО
+БЈЕЛИЦА ВОЈО
+БЈЕЛИЦА ВУКОСАВА
+БЈЕЛИЦА ЗОРАН
+БЈЕЛИНИЋ ДАРИНКА
+БЈЕЛИНИЋ ЈОВО
+БЈЕЛИВУК ГОРАН
+БЈЕЛИВУК ВЛАДИМИР
+БЈЕЉАЦ АНА
+БЈЕЉАЦ БОРА
+БЈЕЉАЦ БРАНКО
+БЈЕЉАЦ МИЛАН
+БЈЕЉАЦ МИЛОРАД
+БЈЕЛОШ ДАНИЦА
+БЈЕЛОШ МИРОСЛАВ
+БЈЕЛОШ МИРОСЛАВ
+БЈЕЛОШЕВИЋ СЛАВКО
+БЈЕЛОБАБА АЛЕКСАНДАР
+БЈЕЛОБАБА ДАРА
+БЈЕЛОБРК БОШКО
+БЈЕЛОБРК БОШКО
+БЈЕЛОБРК ГОРАН
+БЈЕЛОБРК ЛАЗАР
+БЈЕЛОБРК ЛАЗАР
+БЈЕЛОБРК МАНЕ
+БЈЕЛОБРК МАРКО
+БЈЕЛОБРК МИЛАН
+БЈЕЛОБРК МИЛОШ
+БЈЕЛОБРК ПЕТАР
+БЈЕЛОБРК-ВАРГА ЈАСНА
+БЈЕЛОГРЛИЋ ЂОРЂЕ
+БЈЕЛОГРЛИЋ БЛАГОЈЕ
+БЈЕЛОГРЛИЋ ДЕЈАНА
+БЈЕЛОГРЛИЋ ДРАГАН
+БЈЕЛОГРЛИЋ ЉУБИЦА
+БЈЕЛОГРЛИЋ ЉУБО
+БЈЕЛОГРЛИЋ МИТАР
+БЈЕЛОГРЛИЋ МОМЧИЛО
+БЈЕЛОТОМИЋ ЈОВО
+БЈЕЛОВИЋ РАТКО
+БЈЕЛОВУК МИРЈАНА
+БЈЕЛОВУК СЛАВИЦА
+БЈЕЛОВУК СЛАВКО
+БЛАШКО ТИБОР
+БЛАШКОВИЋ ФРАЊО
+БЛАШКОВИЋ ЛАСЛО
+БЛАШКОВИЋ ПАВЛЕ
+БЛАЖАН ФРАЊО
+БЛАЖАН ИВО
+БЛАЖАН МАРКО
+БЛАЖАН СЛАВКО
+БЛАЖЕК ГУСТАВ
+БЛАЖЕК ЈЕЛЕНА
+БЛАЖЕК МАРИЈА
+БЛАЖЕК МИХАЉ
+БЛАЖЕВА ОЛГА
+БЛАЖЕВИЋ АНДРИЈА
+БЛАЖЕВИЋ ДРАГАНА
+БЛАЖЕВИЋ ДРАГО
+БЛАЖЕВИЋ ДУШАНКА
+БЛАЖЕВИЋ ДУШИЦА
+БЛАЖЕВИЋ ДУБРАВКА
+БЛАЖЕВИЋ ФРАЊО
+БЛАЖЕВИЋ МИОДРАГ
+БЛАЖЕВИЋ РАДЕ ДР ЛЕКАР
+БЛАЖЕВИЋ СТЈЕПАН
+БЛАЖЕВИЋ СУЗАНА
+БЛАЖЕВИЋ ВЕРА
+БЛАЖЕВИЋ ЗОРАН
+БЛАЖИЋ ЂОРЂЕ
+БЛАЖИЋ БОШКО
+БЛАЖИЋ БРАНИСЛАВА
+БЛАЖИЋ ДРАГАН
+БЛАЖИЋ ДРАГАН
+БЛАЖИЋ ДРАГОЉУБ
+БЛАЖИЋ ХРИСТИНА
+БЛАЖИЋ ИВАН
+БЛАЖИЋ ЈЕЛЕНА
+БЛАЖИЋ КСЕНИЈА
+БЛАЖИЋ МАРИЈА
+БЛАЖИЋ МЕТОДИЈЕ
+БЛАЖИЋ МИХАЈЛО
+БЛАЖИЋ САВА
+БЛАЖИЋ САВКО
+БЛАЖИЋ СВЕТОЗАР
+БЛАЖИЋ ВИДА
+БЛАЖИК АНТАЛ
+БЛАЖИН ДРАГИЊА
+БЛАГОЈЕВ ЖИВКО
+БЛАГОЈЕВ ЖИВКО
+БЛАГОЈЕВ ЂОРЂЕ
+БЛАГОЈЕВ ИВАН
+БЛАГОЈЕВ МИЛИВОЈ
+БЛАГОЈЕВ МИЛОРАД
+БЛАГОЈЕВ МИТА
+БЛАГОЈЕВ РАДА
+БЛАГОЈЕВ РАДОСЛАВ
+БЛАГОЈЕВ СТЕВАН
+БЛАГОЈЕВ ВЕЛИМИР
+БЛАГОЈЕВИЋ ЧЕДО
+БЛАГОЈЕВИЋ ЖАРКО
+БЛАГОЈЕВИЋ ЂОРЂЕ
+БЛАГОЈЕВИЋ ЂОРЂЕ
+БЛАГОЈЕВИЋ АНА
+БЛАГОЈЕВИЋ БЕЋКО
+БЛАГОЈЕВИЋ БОРА
+БЛАГОЈЕВИЋ БОРИСЛАВ
+БЛАГОЈЕВИЋ БОРИВОЈЕ
+БЛАГОЈЕВИЋ БОРИВОЈ
+БЛАГОЈЕВИЋ БОРКО
+БЛАГОЈЕВИЋ БРАНИСЛАВ
+БЛАГОЈЕВИЋ ДАНИЦА
+БЛАГОЈЕВИЋ ДРАГОМИР
+БЛАГОЈЕВИЋ ДУШАН ДИПЛ ИНГ
+БЛАГОЈЕВИЋ ДУШАН
+БЛАГОЈЕВИЋ ЈАГИЦА
+БЛАГОЈЕВИЋ ЈАНКО
+БЛАГОЈЕВИЋ КРСТАН
+БЛАГОЈЕВИЋ ЉУБОМИР
+БЛАГОЈЕВИЋ МАРИНКО
+БЛАГОЈЕВИЋ МИКА
+БЛАГОЈЕВИЋ МИКА
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛЕНА
+БЛАГОЈЕВИЋ МИЛИЦА
+БЛАГОЈЕВИЋ МИЛИВОЈЕ
+БЛАГОЈЕВИЋ МИЛОШ
+БЛАГОЈЕВИЋ МИРОСЛАВ
+БЛАГОЈЕВИЋ МЛАЂА
+БЛАГОЈЕВИЋ МОМИР
+БЛАГОЈЕВИЋ НАДА
+БЛАГОЈЕВИЋ ПРЕДРАГ
+БЛАГОЈЕВИЋ РАДЕ
+БЛАГОЈЕВИЋ РАДОМИР
+БЛАГОЈЕВИЋ СЕРАФИНА
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СНЕЖАНА
+БЛАГОЈЕВИЋ СЊЕЖАНА
+БЛАГОЈЕВИЋ СТАНКО
+БЛАГОЈЕВИЋ СТЕВО
+БЛАГОЈЕВИЋ СВЕТКО
+БЛАГОЈЕВИЋ ВЛАДИСЛАВ
+БЛАГОВИЋ МАРИЈА
+БЛАХО ЈОЖЕФ
+БЛАНАРИК ШАНДОР
+БЛАНАРИК ЂУРА
+БЛАНАРИК АЛЕКСАНДАР
+БЛАНАРИК ЕТЕЛКА
+БЛАНАРИК ИЛОНА
+БЛАНАРИК ЈОЖЕФ
+БЛАНАРИК ЛАДИСЛАВ
+БЛАНАРИК ОЛГА
+БЛАНАРИК СТЕВАН
+БЛАНАРИК ТИБОР
+БЛАНАРИК ВАЛЕРИЈА
+БЛАНУША БРАНКО
+БЛАНУША ИЛИЈА
+БЛАНУША РАДЕ
+БЛАНУША ВЕРА
+БЛАНУША ЗОРАН
+БЛАТЕШИЋ МИОЉКА
+БЛАТЕШИЋ РАЈКО
+БЛАТНИЦКИ ВЕСНА
+БЛЕЧИЋ ЈЕЛЕНА
+БЛЕЧИЋ ЉУБИЦА
+БЛЕЧИЋ МИЛАДИН
+БЛЕЧИЋ МИОДРАГ
+БЛЕЧИЋ РАДОСАВ МР
+БЛЕЧИЋ САША
+БЛЕХЛ ЈОВАНКА
+БЛИТВА ЂОРЂЕ
+БЛИТВА БРАНКО
+БЛИЗАНАЦ ДОБРИВОЈ
+БЛИЗАНАЦ ДРАГОЉУБ
+БЛИЗАНАЦ ДУШАН
+БЛИЗАНАЦ ЈЕЛКИЦА
+БЛИЗАНАЦ ЛЕПОСАВА
+БЛИЗАНАЦ МИЛОРАД
+БЛИЗАНАЦ МИРОСЛАВ
+БЛИЗАНАЦ НЕНАД
+БЛИЗАНАЦ САВА
+БЛИЗАНАЦ ВУЈИЦА
+БЛОЖИЋ ДИМИТРИЈЕ
+БЛУМЕНШАЈН КАРЛО
+БОЧАН ИВАН
+БОЧКОР НИКОЛА
+БОШЧАНИН БОШКО
+БОШКИЋ БОРКА
+БОШКИЋ МИРЈАНА
+БОШКИЋ НАТАША
+БОШКИЋ ЗОРА
+БОШКОВ ЖАРКО ДИПЛ ИНГ
+БОШКОВ ЖИВОЈИН
+БОШКОВ-ЈАГОДИЋ ЗОРИЦА
+БОШКОВ ЉУБИНКА
+БОШКОВ ЛУКА
+БОШКОВ МИЛИВОЈЕ
+БОШКОВ МИЛОШ
+БОШКОВ МИРЈАНА
+БОШКОВ САВКА
+БОШКОВ СОФИЈА
+БОШКОВ СРЕТЕН
+БОШКОВ СТЕВАН
+БОШКОВ СТОЈАН
+БОШКОВ ВЕСНА
+БОШКОВ ВУЈАДИН
+БОШКОВИЋ ЖЕЉКО
+БОШКОВИЋ ЖИВКО
+БОШКОВИЋ АЛЕКСАНДАР
+БОШКОВИЋ АЛЕКСА
+БОШКОВИЋ АЛЕКСА
+БОШКОВИЋ АНЂА
+БОШКОВИЋ БИЉАНА
+БОШКОВИЋ БЛАГОЈЕ
+БОШКОВИЋ БОШКО
+БОШКОВИЋ БОГДАНКА
+БОШКОВИЋ БОГДАН
+БОШКОВИЋ БОРИС
+БОШКОВИЋ БУДИМИР
+БОШКОВИЋ ЦВЕТКО
+БОШКОВИЋ ДАНИЛО
+БОШКОВИЋ ДЕСАНКА
+БОШКОВИЋ ДРАГАН
+БОШКОВИЋ ДРАГИЦА
+БОШКОВИЋ ДРАГОЈЛО
+БОШКОВИЋ ДРАГОЉУБ
+БОШКОВИЋ ДРАГОМИР
+БОШКОВИЋ ДРАГОМИР
+БОШКОВИЋ ДУШАН
+БОШКОВИЋ ДУШАН
+БОШКОВИЋ ДУШКО
+БОШКОВИЋ ГОРАН
+БОШКОВИЋ ГОРАН
+БОШКОВИЋ ХЕДВИГА
+БОШКОВИЋ ЈОВАН
+БОШКОВИЋ КРСТО
+БОШКОВИЋ ЉИЉАНА
+БОШКОВИЋ ЉУБИША
+БОШКОВИЋ ЉУБИНКА
+БОШКОВИЋ ЉУБОМИР
+БОШКОВИЋ ЉУБОМИР
+БОШКОВИЋ МИЛЕВА
+БОШКОВИЋ МИЛИВОЈЕ
+БОШКОВИЋ МИЛИВОЈЕ
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОВАН
+БОШКОВИЋ МИОДРАГ
+БОШКОВИЋ МИРКО
+БОШКОВИЋ МОМЧИЛО
+БОШКОВИЋ МОМЧИЛО
+БОШКОВИЋ НАДА
+БОШКОВИЋ НАДА
+БОШКОВИЋ НЕДЕЉКО
+БОШКОВИЋ НИКОЛА
+БОШКОВИЋ НИКОЛА
+БОШКОВИЋ НОВКА
+БОШКОВИЋ-ПЕРОВИЋ ИВАНА
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ РАДОМИР
+БОШКОВИЋ РАТОМИР
+БОШКОВИЋ РОСА
+БОШКОВИЋ САВА
+БОШКОВИЋ СЛОБОДАНКА
+БОШКОВИЋ СЛОБОДАН
+БОШКОВИЋ СЛОБОДАН
+БОШКОВИЋ СТЕВАН АДВОКАТ
+БОШКОВИЋ СТЕВАН
+БОШКОВИЋ СТЕВАН
+БОШКОВИЋ ТОМИСЛАВ
+БОШКОВИЋ ТОМИСЛАВ
+БОШКОВИЋ ВЕЉКО
+БОШКОВИЋ ВЛАДА
+БОШКОВИЋ ВЛАДИМИР
+БОШКОВИЋ ВОЈИСЛАВ
+БОШКОВСКИ ДОЈЧИН
+БОШКОВСКИ РАДА
+БОШЊАЧИЋ РАЈКО
+БОШЊАК ЂОРЂЕ
+БОШЊАК ЂУРА
+БОШЊАК ЂУРО
+БОШЊАК АНА
+БОШЊАК БОЖИДАР
+БОШЊАК ДАРКО
+БОШЊАК ДЕЈАН
+БОШЊАК ДЕСАНКА
+БОШЊАК ФЕРЕНЦ
+БОШЊАК ИШТВАН
+БОШЊАК ЈЕЛЕНА
+БОШЊАК ЈЕЛИЦА
+БОШЊАК ЈЕЛИЦА
+БОШЊАК ЈУЛКА
+БОШЊАК КАТАРИНА
+БОШЊАК КОСТА
+БОШЊАК ЉУБОМИР
+БОШЊАК ЉУБОМИР
+БОШЊАК МАГДАЛЕНА
+БОШЊАК МАРИЈА
+БОШЊАК МИЛАН
+БОШЊАК МИЛЕНА
+БОШЊАК МИЛОРАД
+БОШЊАК МИРКО
+БОШЊАК НЕЂО
+БОШЊАК НИКОЛА
+БОШЊАК ПАВЛЕ
+БОШЊАК ПЕТАР
+БОШЊАК РАДМИЛА
+БОШЊАК РАДОЈКА
+БОШЊАК РАДОВАН
+БОШЊАК СЛАВКА
+БОШЊАК СЛАВКО
+БОШЊАК ТОМИСЛАВ
+БОШЊАК ВЕЛИМИР
+БОШЊАК ВИДОСАВА
+БОШЊАК ВИНКА
+БОШЊАК ВОЈИСЛАВ
+БОШЊАК ЗОРАН
+БОШЊАКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+БОШЊАКОВИЋ АЛЕКСАНДАР ДИПЛ ПРАВНИК
+БОШЊАКОВИЋ АНТОНИЈА
+БОШЊАКОВИЋ БИЉАНА
+БОШЊАКОВИЋ БОРИСЛАВ
+БОШЊАКОВИЋ БОРИСЛАВ
+БОШЊАКОВИЋ БРАНКА
+БОШЊАКОВИЋ ЦВИЈЕТИН
+БОШЊАКОВИЋ ДОБРИНКА
+БОШЊАКОВИЋ КОРНЕЛИЈЕ
+БОШЊАКОВИЋ ЉУБОМИР
+БОШЊАКОВИЋ МАРИЦА ДИПЛ ОЕЦ
+БОШЊАКОВИЋ МИЛУТИН
+БОШЊАКОВИЋ МИРОСЛАВ
+БОШЊАКОВИЋ МИТАР
+БОШЊАКОВИЋ ПАВАО
+БОШЊАКОВИЋ РАДОСЛАВ
+БОШЊАКОВИЋ РАТКО
+БОШЊАКОВИЋ СИНИША
+БОШЊАКОВИЋ СЛАВКА
+БОЋАН МАРИЈА
+БОЋЕРЕГ ЗУЗАНА
+БОЖА ПАЛ
+БОЖАНИЋ ЖИКА
+БОЖАНИЋ ЂОРЂЕ
+БОЖАНИЋ АНЂЕЛКА
+БОЖАНИЋ ДУШАН
+БОЖАНИЋ ГОЈКО
+БОЖАНИЋ ЈЕЛЕНА
+БОЖАНИЋ КОСА
+БОЖАНИЋ МИЛИЦА
+БОЖАНИЋ МИЛОРАД
+БОЖАНИЋ НЕВЕНКА
+БОЖАНОВИЋ РАЈКА
+БОЖАНОВИЋ ЗОРАН
+БОЖЕР ЛАЈОШ
+БОЖЕР ЉУДЕВИТ
+БОЖЕР ЗОРА
+БОЖИЧИЋ МИЛАН
+БОЖИЧИЋ МИЛЕНКО
+БОЖИЧИЋ ПЕТАР
+БОЖИЧКОВИЋ ЈОВАН
+БОЖИЧКОВИЋ НЕДЕЉКО ДР
+БОЖИЧКОВИЋ НЕРА
+БОЖИЧКОВИЋ ВОЈИСЛАВ
+БОЖИЧКОВИЋ ЗОРКА
+БОЖИЋ ЧЕДОМИР
+БОЖИЋ ЖАРКО
+БОЖИЋ ЖИВАНА
+БОЖИЋ ЖИВКО
+БОЖИЋ ЂОРЂЕ
+БОЖИЋ ЂУРЂИНА
+БОЖИЋ ЂУРА
+БОЖИЋ АЛЕКСАНДАР
+БОЖИЋ АЛЕКСАНДАР
+БОЖИЋ АНЂЕЛКА
+БОЖИЋ БОШКО
+БОЖИЋ БОЖАНА
+БОЖИЋ БОРИВОЈ
+БОЖИЋ БОРКО
+БОЖИЋ БРАНИСЛАВ
+БОЖИЋ БРАНИСЛАВ
+БОЖИЋ ДАРИНКА
+БОЖИЋ ДЕЈО
+БОЖИЋ ДЕСАНКА
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГОЉУБ
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДУШАН
+БОЖИЋ ГАВРО
+БОЖИЋ ГОЈКО
+БОЖИЋ ГОРДАНА
+БОЖИЋ ГОРДАНА
+БОЖИЋ ГРАДИМИР
+БОЖИЋ ИЛИЈА
+БОЖИЋ ИВАН
+БОЖИЋ ЈОВАНКА
+БОЖИЋ ЈОВАН
+БОЖИЋ ЈОВАН
+БОЖИЋ ЈОВИЦА
+БОЖИЋ ЈУЛКА
+БОЖИЋ КСЕНИЈА
+БОЖИЋ ЛАЗАР
+БОЖИЋ ЛАЗАР
+БОЖИЋ ЉИЉАНА
+БОЖИЋ МАРА
+БОЖИЋ МАРИНКО
+БОЖИЋ МАРКО
+БОЖИЋ МАРКО
+БОЖИЋ МАРКО
+БОЖИЋ МАТИЈА
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛЕВА
+БОЖИЋ МИЛЕ
+БОЖИЋ МИЛИСАВ
+БОЖИЋ МИЉКО
+БОЖИЋ МИЛОРАД
+БОЖИЋ МИОДРАГ
+БОЖИЋ МИРЈАНА
+БОЖИЋ МИРКО
+БОЖИЋ МИРКО
+БОЖИЋ МОМЧИЛО
+БОЖИЋ МОМЧИЛО
+БОЖИЋ НЕЂО
+БОЖИЋ НЕНАД
+БОЖИЋ НЕНАД
+БОЖИЋ НИКОЛА
+БОЖИЋ ОЛГА
+БОЖИЋ ОЗРЕН
+БОЖИЋ ПАВЛЕ ДИПЛ ИНГ
+БОЖИЋ ПЕРА
+БОЖИЋ ПЕТАР
+БОЖИЋ РАДИВОЈ
+БОЖИЋ РАДМИЛА
+БОЖИЋ-РАДОМИРОВИЋ ЈОКА
+БОЖИЋ РАДОВАН
+БОЖИЋ РАЈКО
+БОЖИЋ РАНКО
+БОЖИЋ САЊА
+БОЖИЋ САВА
+БОЖИЋ САВА
+БОЖИЋ САВО
+БОЖИЋ СЛОБОДАН
+БОЖИЋ СЛОБОДАН
+БОЖИЋ СРЕТЕН
+БОЖИЋ СТАНИМИР
+БОЖИЋ СТЕВАН
+БОЖИЋ СТЕВО
+БОЖИЋ СТОЈАНКА
+БОЖИЋ ТАМАРА
+БОЖИЋ ТАТЈАНА
+БОЖИЋ ТЕОДОР
+БОЖИЋ ТОМИСЛАВ
+БОЖИЋ ВЕРИЦА
+БОЖИЋ-ВИЛИЋ ЈЕЛЕНА
+БОЖИЋ ВЛАДАНКА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДИСЛАВ
+БОЖИЋ ВУКОСАВА
+БОЖИЋ ЗЛАТА
+БОЖИЋ ЗЛАТИЦА
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРКА
+БОЖИДАР АЛЕКСАНДАР
+БОЖИДАР БОРИСЛАВ
+БОЖИДАР БОРИСЛАВ
+БОЖИДАР-КРИЖАК ИРЕНА
+БОЖИДАР ЉУБОМИР
+БОЖИДАРЕВИЋ ЂУРА
+БОЖИДАРЕВИЋ ДЕСАНКА
+БОЖИДАРЕВИЋ ПЕРСИДА
+БОЖИДАРЕВИЋ ВЕЉКО
+БОЖИН ЖАРКО
+БОЖИН ЂОРЂЕ
+БОЖИН ДАНИЦА
+БОЖИН ДАРИНКА
+БОЖИН ДЕСАНКА
+БОЖИН ИГЊАТ ДИПЛ ИНГ
+БОЖИН ИСИДОР
+БОЖИН ЈЕЛИЦА
+БОЖИН ЈУЛИЈАНА
+БОЖИН КРИСТИНА
+БОЖИН КСЕНИЈА
+БОЖИН ЛАЗАР
+БОЖИН ЉУБИЦА
+БОЖИН ЉУБИЦА
+БОЖИН МИЛОШ
+БОЖИН МИЛОШ
+БОЖИН МИРОСЛАВ
+БОЖИН НИКОЛА
+БОЖИН ПАВЛЕ
+БОЖИН ПЕТАР
+БОЖИН РАДИВОЈ
+БОЖИН РАДОВАН
+БОЖИН СИНИША
+БОЖИН СЛАВИЦА
+БОЖИН СЛОБОДАН
+БОЖИН СТЕВАН
+БОЖИН СТЕВАН
+БОЖИН СТЕВАН
+БОЖИНИЋ РУЖИЦА
+БОЖИНОВСКИ АНГЕЛ
+БОЖИНОВСКИ РИСТЕ
+БОЖИНОВСКИ ТРАЈАН
+БОЖЈАК ФРАЊО
+БОЖЈАК МИКА
+БОЖЈАКОВИЋ ЉУБИНКА
+БОЖО ЕЛЕОНОРА
+БОЖОКИ ЕРНЕ
+БОЖОКИ ИЛОНА
+БОЖОВИЋ БОЖИДАР
+БОЖОВИЋ БОРИВОЈ
+БОЖОВИЋ БРАТИСЛАВ
+БОЖОВИЋ ГОРЧИН
+БОЖОВИЋ ГОРДАНА
+БОЖОВИЋ ЉУБИЦА
+БОЖОВИЋ МИЛАДИН ДИПЛ ИНГ
+БОЖОВИЋ МИЛАДИН
+БОЖОВИЋ МИЛОРАД
+БОЖОВИЋ МИЛОВАН
+БОЖОВИЋ МИРЈАНА
+БОЖОВИЋ МИРОЉУБ
+БОЖОВИЋ РАШКО
+БОЖОВИЋ СЛАВКО
+БОЖОВИЋ СНЕЖАНА
+БОЖОВИЋ СТАНКА
+БОЖОВИЋ ВЕЛИМИР
+БОЖОВИЋ ВЕРА
+БОЖОВИЋ ВЛАДИМИР
+БОЖУЛИЋ АНЂЕЛКО
+БОЖУЛИЋ ИВАН
+БОЖУЛИЋ ИВИЦА
+БОЖУЛИЋ СИНИША
+БОЖУНОВИЋ ДУШАН
+БОЂА ЂУРА
+БОЂА АНДРИЈА
+БОЂА АНДРИЈА
+БОЂА АНДРИЈА
+БОЂА ИВАН
+БОЂА ИВАН
+БОЂА ЈОВАН
+БОЂА САША
+БОЂА СТЕВАН
+БОЂАНАЦ ЈЕЛЕНА
+БОЂАНАЦ МИРОСЛАВ
+БОЂАНАЦ ЗДРАВКО
+БОЂАНСКИ АЛЕКСАНДАР
+БОАРОВ ДИМИТРИЈЕ
+БОАРОВ ЈОВАН
+БОАРОВ КАТАРИНА
+БОАРОВ МИЛАНКА
+БОБ ЈУСТИНА
+БОБАК ИШТВАН
+БОБАК КАТИЦА
+БОБАН ЂЕРЂ
+БОБАН МАРИЈА
+БОБАН МЕРИМА
+БОБАН НЕДЕЉКО
+БОБАН СТИПЕ
+БОБАН СУЗАНА
+БОБАН-ВАРНУС ЕРЖЕБЕТ
+БОБАЊ ИМРЕ
+БОБАР БОШКО
+БОБАРЕВИЋ РУЖИЦА
+БОБЕРИЋ ОЛГА
+БОБЕРИЋ ЗОРКА
+БОБИЋ ЂОРЂЕ
+БОБИЋ ЂОРЂЕ
+БОБИЋ БОГДАН
+БОБИЋ БРАНИСЛАВ
+БОБИЋ ИВАН
+БОБИЋ ЈОСИП
+БОБИЋ КАЈА
+БОБИЋ ЉУБОМИР
+БОБИЋ МИЛАНКА
+БОБИЋ МИЛИЦА
+БОБИЋ МЛАДЕН
+БОБИЋ НЕНАД
+БОБИЋ РУЖИЦА
+БОБИЋ ТАЊА
+БОБИНАЦ ЈОСИП
+БОБИНАЦ ЛУЦИЈА
+БОБИНЕЦ ЈОСИП
+БОБЉАГОВИЋ БОГОСЛАВ
+БОБОШ СТАНКО
+БОЦ СТЕВАН
+БОЦА ДАНЕ
+БОЦА ДУШАН
+БОЦА МИЛЕ
+БОЦА МИЛОШ
+БОЦОНАДИ МАРТОН
+БОЏОНИ ГИЗЕЛА
+БОЏОНИ СТЕВАН
+БОДА ЈОВАН
+БОДАКОШ ЈОСИП
+БОДАКОШ СТЈЕПАН
+БОДЕГРАЈАЦ СОФИЈА
+БОДИ ЕРЖЕБЕТ
+БОДИ ЈАСМИНА
+БОДИ ЛАЈОШ
+БОДИ ЛАСЛО
+БОДИ МИХАЈЛО
+БОДИШ ЈОЖЕФ
+БОДИШ МИЛИЦА
+БОДИРОЖА ПЕТАР
+БОДИРОЖА РАДИВОЈ
+БОДИРОГА ЈОВАН
+БОДИРОГА МАРИЈА
+БОДИРОГА НИКО
+БОДИРОГА ПРЕДРАГ
+БОДЛОВИЋ НИКОЛА
+БОДНАР ШАНДОР
+БОДНАР РИСТА
+БОДНАР СТЕВАН
+БОДНАР ВЕРИЦА
+БОДО ИШТВАН
+БОДО КАРОЉ
+БОДО МАРИЈА
+БОДО МАРИЈА
+БОДО МАТИЈА
+БОДО СТЕВАН
+БОДОЧИ ЈОЖЕФ
+БОДОЛО ШАНДОР
+БОДОЛО ИШТВАН
+БОДОЊИ КАРЛО
+БОДОР АНТОН
+БОДОР АНТУН
+БОДОР БОСИЉКА
+БОДОР ФРАЊА
+БОДОР ФРАЊА
+БОДОР ИШТВАН
+БОДОР ЈАНОШ
+БОДОР ЈОСИП
+БОДОР ПЕТАР
+БОДОР СИНИША
+БОДРЕ ИШТВАН
+БОДРИЧ-ХЕРЋАН АРАНКА
+БОДРИЧ МИХАЈЛО
+БОДРИЧ СТЕВАН
+БОДРИЧ ВЕСНА
+БОДРИЋ ЈЕЛИСАВЕТА
+БОДРОЖА БРАНКО
+БОДРОЖА ОЛГА
+БОДРОЖИЋ ИЛИЈА
+БОДРОЖИЋ ИЛИЈА
+БОДРОЖИЋ ЈОВАН
+БОДРОЖИЋ МИЛАН
+БОДРОЖИЋ СТЕВАН
+БОДУЛИЋ ШТЕФАНИЈА
+БОДУЛИЋ ЈЕЛЕНА
+БОДУЛИЋ ПЕТАР
+БОДУЛИЋ СЛОБОДАН
+БОДУЛИЋ СЛОБОДАН
+БОДВАИ ЈАНКО
+БОГАРОШИ СЛОБОДАН
+БОГАРОШКИ АНДРИЈА
+БОГАТИНОСКИ ТОМИСЛАВ
+БОГАВАЦ АЛЕКСАНДАР ДР
+БОГАВАЦ БРАНИСЛАВ
+БОГАВАЦ ДРАГИЦА
+БОГАВАЦ ЈАДРАНКА
+БОГАВАЦ МИРЈАНА
+БОГДАН АНДРАШ
+БОГДАН БИЉАНА
+БОГДАН ДУШАН
+БОГДАН ИШТВАН
+БОГДАН ИМРЕ
+БОГДАН ИВАН
+БОГДАН ЈОСИП
+БОГДАН ЈОСИП
+БОГДАН МАНЕ
+БОГДАН-МИЈИН ДУШАНКА
+БОГДАН МИЛКА
+БОГДАН НИКОЛА
+БОГДАН СТЕВАН
+БОГДАН СТЕВА
+БОГДАН ВЕРИЦА
+БОГДАН ЗОРАН
+БОГДАНФИ ШАНДОР НОВИНАР
+БОГДАНФИ МАРИНКО
+БОГДАНОВ-АНТОНИЋ БИЉАНА
+БОГДАНОВ БИСЕРКА
+БОГДАНОВ БРАНИСЛАВ ДР ПРОФ
+БОГДАНОВ БРАНКА ДР ЛЕКАР
+БОГДАНОВ ДАНИЛО
+БОГДАНОВ ДИМИТРИЈЕ
+БОГДАНОВ ДРАГАН
+БОГДАНОВ ДУШАН
+БОГДАНОВ-ХИЛ ДОБРИЛА
+БОГДАНОВ ИРМА
+БОГДАНОВ ИВАН
+БОГДАНОВ ЛАЗАР
+БОГДАНОВ МАРИЦА
+БОГДАНОВ МИЛАН
+БОГДАНОВ МИЛЕНА
+БОГДАНОВ МИЛОШ
+БОГДАНОВ МИЛОРАД
+БОГДАНОВ НАДА
+БОГДАНОВ ОЛГА
+БОГДАНОВ ПЕТАР
+БОГДАНОВ СЛАВКО
+БОГДАНОВ СЛАВНА
+БОГДАНОВ СМИЉА
+БОГДАНОВ СТАНКО
+БОГДАНОВ СТЕВАН
+БОГДАНОВ СТЕВАН
+БОГДАНОВ ЗОРАН
+БОГДАНОВИЋ ЖИВАН МР
+БОГДАНОВИЋ ЂОРЂЕ
+БОГДАНОВИЋ ЂОРЂЕ
+БОГДАНОВИЋ ЂУРА
+БОГДАНОВИЋ АЛЕКСАНДАР
+БОГДАНОВИЋ АНКА
+БОГДАНОВИЋ БЛАГОЈА
+БОГДАНОВИЋ БОШКО
+БОГДАНОВИЋ БОЖИДАР
+БОГДАНОВИЋ БОГДАН
+БОГДАНОВИЋ БОРА
+БОГДАНОВИЋ БОРИВОЈ
+БОГДАНОВИЋ БРАНИСЛАВА
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНКО
+БОГДАНОВИЋ ДАРИНКА
+БОГДАНОВИЋ ДЕСАНКА
+БОГДАНОВИЋ ДИМИТРИЈЕ
+БОГДАНОВИЋ ДОБРИВОЈ
+БОГДАНОВИЋ ДРАГАН
+БОГДАНОВИЋ ДРАГАН
+БОГДАНОВИЋ ДРАГОЉУБ
+БОГДАНОВИЋ ДРАГОЉУБ
+БОГДАНОВИЋ ДУШКО
+БОГДАНОВИЋ ЕТЕЛКА
+БОГДАНОВИЋ ГЕДЕОН
+БОГДАНОВИЋ ГОЈКО
+БОГДАНОВИЋ ГОРДАНА
+БОГДАНОВИЋ ИЛИЈА
+БОГДАНОВИЋ ИЛОНА
+БОГДАНОВИЋ ИВАН
+БОГДАНОВИЋ ЈОВАН
+БОГДАНОВИЋ ЈОВИЦА
+БОГДАНОВИЋ КСЕНИЈА
+БОГДАНОВИЋ ЛАЗАР
+БОГДАНОВИЋ ЛАЗАР
+БОГДАНОВИЋ ЉИЉАНА
+БОГДАНОВИЋ ЉУБИСАВ
+БОГДАНОВИЋ ЉУБОМИР
+БОГДАНОВИЋ ЉУБОМИР
+БОГДАНОВИЋ МАРИНА
+БОГДАНОВИЋ МИЋО
+БОГДАНОВИЋ МИХАЈЛО
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛКА
+БОГДАНОВИЋ МИЛОШ
+БОГДАНОВИЋ МИЛОСАВ
+БОГДАНОВИЋ МИОДРАГ
+БОГДАНОВИЋ МИРЈАНА
+БОГДАНОВИЋ МИТАР
+БОГДАНОВИЋ МЛАДЕН
+БОГДАНОВИЋ НАДА
+БОГДАНОВИЋ НАДА
+БОГДАНОВИЋ НЕДЕЉКО
+БОГДАНОВИЋ НИКОЛА
+БОГДАНОВИЋ НИКОЛА
+БОГДАНОВИЋ НОВАК
+БОГДАНОВИЋ ПАЈА
+БОГДАНОВИЋ ПАВЛЕ
+БОГДАНОВИЋ ПАВЛЕ
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПРВОСЛАВ
+БОГДАНОВИЋ РАДИСАВ
+БОГДАНОВИЋ РАДИВОЈЕ
+БОГДАНОВИЋ РАДОСЛАВ
+БОГДАНОВИЋ РАДОВАН
+БОГДАНОВИЋ РАНКО
+БОГДАНОВИЋ РАТОМИР
+БОГДАНОВИЋ РУЖИЦА
+БОГДАНОВИЋ СЛАВКО МР ПРАВНИК
+БОГДАНОВИЋ СЛОБОДАНКА ПРОФЕСОР
+БОГДАНОВИЋ СЛОБОДАН
+БОГДАНОВИЋ СЛОБОДАН
+БОГДАНОВИЋ СОФИЈА
+БОГДАНОВИЋ СОЊА
+БОГДАНОВИЋ СТЕВАН
+БОГДАНОВИЋ СТЕВАН
+БОГДАНОВИЋ СТЕВО
+БОГДАНОВИЋ СВЕТИСЛАВ
+БОГДАНОВИЋ ТИХОМИР
+БОГДАНОВИЋ ТИХОМИР
+БОГДАНОВИЋ ВАЈА
+БОГДАНОВИЋ ВАСА
+БОГДАНОВИЋ ВЕРА
+БОГДАНОВИЋ ВИТОМИР
+БОГДАНОВИЋ ВЛАДИМИР
+БОГДАНОВИЋ ВЛАЈКО
+БОГДАНОВИЋ ЗДРАВКО
+БОГДАНОВИЋ ЗОРАН
+БОГДАНОВСКИ ДИМИТРИЈЕ
+БОГДАНОВСКИ СЛОБОДАН
+БОГЕТИЋ ДРАГОЉУБ
+БОГЕТИЋ САЊА
+БОГИЧЕВИЋ ЖИВКО
+БОГИЧЕВИЋ АНЂЕЛКА
+БОГИЧЕВИЋ ДАНИЦА
+БОГИЧЕВИЋ ДУШАН
+БОГИЧЕВИЋ ГЕОРГИЈЕ
+БОГИЧЕВИЋ КОСТАДИНКА
+БОГИЧЕВИЋ КРСТА
+БОГИЧЕВИЋ ЉУБИША
+БОГИЧЕВИЋ ЉУБИЦА
+БОГИЧЕВИЋ МАРИЈА
+БОГИЧЕВИЋ МИЛИЦА
+БОГИЧЕВИЋ НИКОЛА
+БОГИЧЕВИЋ НИКОЛА
+БОГИЧЕВИЋ ТИХОМИР
+БОГИЧЕВИЋ ЗОРКА
+БОГИШИЋ АНДРИЈА
+БОГИШИЋ ФРАЊА
+БОГИШИЋ ЈОСИП
+БОГИЋ АЛЕКСАНДАР
+БОГИЋ АНЂЕЛКА
+БОГИЋ БРАНИСЛАВ
+БОГИЋ ДИМИТРИЈЕ
+БОГИЋ ДРАГАН
+БОГИЋ ДУШАНКА
+БОГИЋ ИЛДИКО
+БОГИЋ ЈЕЛЕНА
+БОГИЋ ЈЕЛИСАВЕТА
+БОГИЋ ЈОВАН
+БОГИЋ ЉУБИЦА
+БОГИЋ МАРИЈА
+БОГИЋ МИЛАН
+БОГИЋ МИРЈАНА
+БОГИЋ СОФИЈА
+БОГИЋ СРЕЋКО
+БОГИЋ СТЕВАН
+БОГИЋЕВИЋ ЖЕЉКА
+БОГИЋЕВИЋ АНЂЕЛКА
+БОГИЋЕВИЋ БРАНИСЛАВ
+БОГИЋЕВИЋ ДИМИТРИЈЕ
+БОГИЋЕВИЋ ЈЕЛИСАВЕТА
+БОГИЋЕВИЋ ЈЕЛКА
+БОГИЋЕВИЋ ЈОЛЕТА
+БОГИЋЕВИЋ КОНСТАНТИН
+БОГИЋЕВИЋ МИЛАН
+БОГНАР ШАНДОР
+БОГНАР АЛЕКСАНДАР ДИПЛ ИНГ
+БОГНАР АНТАЛ
+БОГНАР ЕЛИЗАБЕТА
+БОГНАР ЕЛИЗАБЕТА
+БОГНАР ГИЗЕЛА
+БОГНАР ЈОЖЕФ
+БОГНАР КАЛМАН
+БОГНАР ЛАЈОШ
+БОГНАР МАРИА
+БОГНАР МАРИЈА
+БОГНАР МИРКО
+БОГНАР РОЗИКА
+БОГНАР СИЛАРД
+БОГНАР СТЕВАН ДР
+БОГОЈЕВ ЖИВКО
+БОГОЈЕВАЦ ЕРЖЕБЕТ
+БОГОЈЕВАЦ ЈОВАН
+БОГОЈЕВИЋ АНГЕЛИНА
+БОГОЈЕВИЋ БИЉАНА
+БОГОЈЕВИЋ БОЖО
+БОГОЈЕВИЋ БРАНИСЛАВ
+БОГОЈЕВИЋ БРАНКО
+БОГОЈЕВИЋ ДРАГО
+БОГОЈЕВИЋ ЈОВАНКА
+БОГОЈЕВИЋ ЛАЗО
+БОГОЈЕВИЋ ЉУБИСАВ
+БОГОЈЕВИЋ МИЛАН
+БОГОЈЕВИЋ МИЛОРАД
+БОГОЈЕВИЋ МИТАР
+БОГОЈЕВИЋ МОМЧИЛО
+БОГОЈЕВИЋ РАДМИЛА
+БОГОЈЕВИЋ РАДОЈКА
+БОГОЈЕВИЋ РАДОМИР
+БОГОЈЕВИЋ РАДОМИР
+БОГОЈЕВИЋ РАЈКО
+БОГОЈЕВИЋ СТАНИЈА
+БОГОЈЕВИЋ ТОДОР
+БОГОЈЕВИЋ ВЕЛИМИР
+БОГОЈЕВИЋ ВЛАДА
+БОГОЈЕВИЋ ВЛАДИЦА
+БОГОЈЕВИЋ ВЛАЈКО
+БОГОСАВ МИЛАН
+БОГОСАВАЦ МИРОСЛАВ
+БОГОСАВАЦ МИРОСЛАВ
+БОГОСАВАЦ ЗДРАВКО
+БОГОСАВЉЕВ ЈОВАНКА
+БОГОСАВЉЕВИЋ ЖАРКО
+БОГОСАВЉЕВИЋ БРАНИСЛАВ
+БОГОСАВЉЕВИЋ ДОБРИЛА
+БОГОСАВЉЕВИЋ ДОБРИВОЈЕ
+БОГОСАВЉЕВИЋ ДРАГИЦА
+БОГОСАВЉЕВИЋ ДРАГОМИР
+БОГОСАВЉЕВИЋ МИЛАДИН
+БОГОСАВЉЕВИЋ МИОДРАГ ДР ИНГ
+БОГОСАВЉЕВИЋ РАДЕ
+БОГОСАВЉЕВИЋ СТАНИМИР
+БОГОСАВЉЕВИЋ ЗЛАТА
+БОГОВАЦ ДОБРОСЛАВА
+БОГОВАЦ ДРАГОЉУБ
+БОГОВАЦ МИЛАН ДР
+БОГОВАЦ НИКОЛА
+БОГОВАЦ СЛОБОДАН
+БОГОВИЋ ИБОЈА
+БОГОВИЋ МИЈО
+БОГОВИЋ НИКОЛА
+БОГОВИЋ СТЕВАН
+БОГОВИЋ ТОМИСЛАВ
+БОГОВИЋ ВЕСНА
+БОГОВИЋ ВЕСНА
+БОГОВИЋ ЗЛАТКО
+БОГУНОВИЋ ЂОРЂЕ
+БОГУНОВИЋ БОГДАН
+БОГУНОВИЋ БРАНКО
+БОГУНОВИЋ ДРАГАН
+БОГУНОВИЋ МИЛАН
+БОГУНОВИЋ ТОМИСЛАВ
+БОГУНОВИЋ ВЛАДЕ
+БОГУНОВИЋ ЗОРАН
+БОГУТ ЉУБО
+БОГУТ НАДА
+БОХАЧЕК ВАЛТЕР
+БОХИНЦ БОЖАНА
+БОХОЦКИ ЈАНОШ
+БОХОЦКИ ЈУЛИЈАНА
+БОХОЦКИ ПЕТАР
+БОХОЦКИ РОБЕРТ
+БОХОТА СИЛВЕСТЕР
+БОХУШ ЈОВАН
+БОЈЧЕТА ГОРАН
+БОЈЧЕВСКИ НАУМ
+БОЈЧИЋ МИЛАН
+БОЈА АНДРАШ
+БОЈА ЕРИКА
+БОЈАЦ ДАФИНА
+БОЈАЦ РАДИВОЈ
+БОЈАДИЋ МИРКО
+БОЈАГИЋ МАРКО
+БОЈАНИЋ АЛЕКСАНДАР
+БОЈАНИЋ АНА
+БОЈАНИЋ БОГОСАВ
+БОЈАНИЋ БОРИКА
+БОЈАНИЋ БОСИЉКА
+БОЈАНИЋ БРАНЕ
+БОЈАНИЋ БУДИМИР
+БОЈАНИЋ ДАРИНКА
+БОЈАНИЋ ДЕСАНКА
+БОЈАНИЋ ДРАГИЦА
+БОЈАНИЋ ДРАГОЉУБ
+БОЈАНИЋ ДУШАН
+БОЈАНИЋ ДУШАН
+БОЈАНИЋ ИЛИЈА
+БОЈАНИЋ ЈЕЛИЦА
+БОЈАНИЋ ЉУБО
+БОЈАНИЋ МИЛАН
+БОЈАНИЋ МИЛИВОЈ
+БОЈАНИЋ МИЛИВОЈ
+БОЈАНИЋ МИЛОШ
+БОЈАНИЋ МИЛУН
+БОЈАНИЋ МИОДРАГ
+БОЈАНИЋ РАНКО
+БОЈАНИЋ СЛОБОДАН
+БОЈАНИЋ СВЕТЛАНА
+БОЈАНИЋ ВЕЛИМИР
+БОЈАНИЋ ЗОРАН
+БОЈАНИЋ ЗОРА
+БОЈАНОВИЋ ЧЕДО
+БОЈАНОВИЋ ДУШКО
+БОЈАНОВИЋ ЛАЗАР
+БОЈАНОВИЋ МАРЈАН
+БОЈАНОВИЋ МИЛОРАД
+БОЈАНОВИЋ РИСТАН
+БОЈАНОВИЋ ВУЈАДИН
+БОЈАНОВИЋ ВУЈАДИН
+БОЈАТ ЈАНКО
+БОЈАТ МИЛОРАД
+БОЈАТ РАДОМИР
+БОЈАТ ВЕСЕЛИН ДР
+БОЈБИЋ РАЈКО
+БОЈИЧИЋ РАДИВОЈ
+БОЈИЋ АНЂЕЛИЈА
+БОЈИЋ БЛАГОТА
+БОЈИЋ БОГДАН
+БОЈИЋ БОГОЉУБ
+БОЈИЋ БОГОМИР
+БОЈИЋ БОРИСЛАВ
+БОЈИЋ БРАНИСЛАВА
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ ДАНИЦА
+БОЈИЋ ДЕЈАН
+БОЈИЋ ДРАГАН
+БОЈИЋ ДРАГАН
+БОЈИЋ ДРАГИЦА
+БОЈИЋ ДРАГИЊА
+БОЈИЋ ДУШАНКА
+БОЈИЋ ДУШАН
+БОЈИЋ ДУШАН
+БОЈИЋ ГОРДАНА ДР
+БОЈИЋ ГОРДАНА
+БОЈИЋ ГОРДАНА
+БОЈИЋ КАТИЦА
+БОЈИЋ-КОЛАРСКИ ГОРДАНА
+БОЈИЋ ЛАЗАР
+БОЈИЋ МАРКО
+БОЈИЋ МИШКО
+БОЈИЋ МИЛА
+БОЈИЋ МИЛЕНКО
+БОЈИЋ МИЛИДАР
+БОЈИЋ МИЛОВАН
+БОЈИЋ МИОДРАГ
+БОЈИЋ МИРКО
+БОЈИЋ МИРОСЛАВ
+БОЈИЋ РАДОСЛАВА
+БОЈИЋ РАЈКО
+БОЈИЋ РАЈКО
+БОЈИЋ СЕНКА
+БОЈИЋ СНЕЖАНА
+БОЈИЋ СНЕЖАНА
+БОЈИЋ СОЊИЦА
+БОЈИЋ СРЕТЕН
+БОЈИЋ СТЕВАН
+БОЈИЋ ТОМИСЛАВ
+БОЈИЋ УГЉЕША
+БОЈИЋ ВЕРА
+БОЈИНОВИЋ ЈЕЛЕНА
+БОЈКИЋ АЛЕКСАНДАР
+БОЈКИЋ МИЛИЦА
+БОЈКО АЛЕКСАНДАР
+БОЈКО ЈОВАНКА
+БОЈКО МАРИЈА
+БОЈКО НЕВЕНКА
+БОЈКОВ ФЕОДОР
+БОЈКОВ РОМАН
+БОЈКОВИЋ ДАНИЦА
+БОЈКОВИЋ КРИСТИНА
+БОЈКОВИЋ ЛЕНА
+БОЈКОВИЋ МИЛИЦА
+БОЈКОВИЋ СЛОБОДАН
+БОЈОВИЋ ЖИВОРАД
+БОЈОВИЋ БОШКО
+БОЈОВИЋ БОГДАН
+БОЈОВИЋ БРАНКО
+БОЈОВИЋ БРАНКО
+БОЈОВИЋ ДРАГОЈЕ
+БОЈОВИЋ ДРАГОСЛАВ
+БОЈОВИЋ ДРАГУТИН
+БОЈОВИЋ ДРАГУТИН
+БОЈОВИЋ ИКОНИЈА
+БОЈОВИЋ ЈАКОВ
+БОЈОВИЋ ЉУБИЦА
+БОЈОВИЋ ЉУБО
+БОЈОВИЋ МИЛАН
+БОЈОВИЋ МИЛАН
+БОЈОВИЋ МИЛИЦА
+БОЈОВИЋ МИЛИЦА
+БОЈОВИЋ МИЛОЈЕ
+БОЈОВИЋ МИРОСЛАВ
+БОЈОВИЋ НАДА
+БОЈОВИЋ НОВИЦА
+БОЈОВИЋ ПЕТАР
+БОЈОВИЋ СРЕТКО
+БОЈОВИЋ ТОМИСЛАВ
+БОЈОВИЋ ВЕЛИША
+БОЈОВИЋ ВЕЉКО
+БОЈОВИЋ ВЛАДАН
+БОЈОВИЋ ВОЈИН
+БОЈОВИЋ ЗОРАН
+БОКШАН АНКА
+БОКШАН ЕМИЛИЈАН
+БОКШАН СТОЈАН
+БОКШИЋ ЂОКА
+БОКШИЋ ЈЕЛЕНА
+БОКШИЋ ЛАЗАР
+БОКШИЋ МИРЈАНА
+БОКШИЋ МИРЈАНА
+БОКШИЋ РАДА
+БОКШИЋ РАДОЈКА
+БОКШИЋ РАДОСЛАВ
+БОКШИЋ РУЖЕНКА
+БОКШИЋ СОКА
+БОКА ЖИВКА
+БОКА СИЛВИО
+БОКА СТЈЕПАН
+БОКАН АНЂА
+БОКАН АНИЦА
+БОКАН ДРАГО
+БОКАН МИЛАН
+БОКАН МИЛАН
+БОКАН МИЛЕНА
+БОКАН МИРКО
+БОКАН НИКОЛА
+БОКАН РАДЕ
+БОКАН РАДОМИР
+БОКАН СЛОБОДАН
+БОКАН ТОМИСЛАВ
+БОКАН ВЕЉКО
+БОКАНИЋ БРАНИСЛАВ
+БОКАНИЋ ВЛАДИМИР
+БОКИЋ ДАНИЛО
+БОКИЋ ДУШАН
+БОКИЋ МИЛАН
+БОКИЋ РАДОЈИЦА
+БОКИЋ ВИД
+БОКОР ЂОРЂЕ ДИПЛ ИНГ
+БОКОР ЂОРЂЕ
+БОКОР ГАВРА
+БОКОР ЛАСЛО ДИПЛ ИНГ
+БОКОР ЛАСЛО
+БОКОР МАРИЈА
+БОКОРОВ ТАНАСИЈЕ ДИПЛ ИНГ
+БОКУН ДУБРАВКА
+БОКУН НОВАК
+БОКУН ПЕТАР
+БОКУН СПАСИЈА
+БОКУН СТЕВА
+БОКУН ВЛАДИМИР
+БОЛАНОВИЋ РАЈКА
+БОЛДИЖАР ЈОЖЕФ
+БОЛДИЖАР ЛАСЛО
+БОЛДИН РУДОЛФ
+БОЛДОЦКИ ЈОЖЕФ
+БОЛДОЦКИ ВЛАДИМИР
+БОЛДОГ ЛАЈОШ
+БОЛЕРАЦ АНА
+БОЛЕСНИКОВ БРАНИСЛАВ
+БОЛЕСНИКОВ ДАРИНКА
+БОЛЕСНИКОВ МИЛОРАД
+БОЛЕСНИКОВ ЗОРАН
+БОЛФ БРАНКО
+БОЛФ НЕВЕНКА
+БОЛФИК ЈОСИП
+БОЛИЋ ЗЛАТКО
+БОЛИНОВСКА СОФИЈА
+БОЛИНОВСКИ МИРОСЛАВ
+БОЉАНОВИЋ ЂОРЂЕ
+БОЉАНОВИЋ АЛЕКСАНДАР
+БОЉАНОВИЋ МИЛИВОЈЕ
+БОЉАНОВИЋ НИКОЛА
+БОЉАНОВИЋ РАДОВАН
+БОЉАНОВИЋ ЗОРИЦА
+БОЉЕВИЋ СВЕТОЗАР
+БОЛМАНАЦ БРАНКО
+БОЛМАНАЦ ЕВГЕНИЈЕ
+БОЛО ЖОЛТ
+БОЛОК АНДРАШ
+БОЛОК ЈОЖЕФ
+БОЛОК КАРЛО
+БОЛОК КАРОЉ
+БОЛОК ПАЛ
+БОЛОРИН РАДИВОЈ
+БОЛТА ЖЕЉКО
+БОЛТА ЂУРА
+БОЛТА БРАНКО
+БОЛТА ДРАГИЦА
+БОМЕШТАР РАДА
+БОНА СТЕВАН
+БОНЏИЋ ДЕЈАН
+БОНДАРЕНКО АЛЕКСАНДАР ДР
+БОНДОКИЋ БОРИВОЈЕ
+БОНДОКИЋ ЉУБИЦА
+БОНЕРТ ДУШАН ДР
+БОНЕРТ ДУШАН
+БОНИЋ ДРАГАН
+БОНИЋ МАРЈАН
+БОНИЋ МИЛИЦА
+БОНИЋ ВЛАДИМИР
+БОНУС ЉУБИЦА
+БОР ЕНДРЕ
+БОРЧАНИН ЉУБИЦА
+БОРЧАНИН СОФИЈА
+БОРЧАНСКИ ТИНКА
+БОРЧИЋ БУДЕ
+БОРЧИЋ ДРАГАНА
+БОРЧИЋ ЈОВАН
+БОРШИ ТИВАДАР ДИПЛ ОЕЦ
+БОРШОШ АТИЛА
+БОРШОШ БАРБАРА
+БОРШОШ ИШТВАН
+БОРШОШ ИШТВАН
+БОРШОШ ИМРЕ
+БОРШТНАР ХЕНРИК
+БОРШТНЕР НАДА
+БОРЂИН ЛАЗАР
+БОРЂОШКИ ЂОРЂЕ ДИПЛ ИНГ
+БОРЂОШКИ БОШКО
+БОРЂОШКИ МИЛИЦА
+БОРЂОШКИ ТАМАРА
+БОРЂОШКИ ВОЈИН
+БОРАШ ИРЕНА
+БОРАС БОРИСЛАВ
+БОРАС МАРИЈА
+БОРАС МИЛИЦА
+БОРБАШ КАРОЉ
+БОРБАШ ВИОЛЕТА
+БОРБАШ ЗОЛТАН
+БОРБЕЉ АЛЕКСАНДАР
+БОРБЕЉ ЈАНОШ
+БОРБЕЉ ЈОСИП
+БОРБЕЉ ЉУБИЦА
+БОРБЕЉ МАРИЈА
+БОРБЕЉ НЕВЕНКА
+БОРДАШ ЂЕЗЕ
+БОРДАШ АКОШ
+БОРДАШ БЕЛА
+БОРДАШ ФЕРЕНЦ
+БОРДАШ ФРАЊА
+БОРДАШ ХИЛДА
+БОРЕНОВИЋ АНТОНИЈЕ
+БОРЕНОВИЋ МИЛЕ
+БОРЕНОВИЋ ВЕРА
+БОРИ ИМРЕ ДР
+БОРИ МАРИЈА
+БОРИЧИЋ ЛАЗАР
+БОРИЧИЋ НОВАК
+БОРИЧИЋ РАДИВОЈЕ
+БОРИЧИЋ РАДУЛЕ
+БОРИШЕВ БОРИСЛАВ
+БОРИШЕВ ЉИЉАНА
+БОРИШЕВ МИЛЕНКО
+БОРИШЕВ НИКОЛА
+БОРИШЕВ РУЖИЦА
+БОРИШЕВ САВА
+БОРИШЕВ ТЕОДОР
+БОРИШЕВ ВАСА
+БОРИШИЋ МАРИЈА
+БОРИШИЋ ВЛАДИМИР
+БОРИЋ ЧЕДОМИР
+БОРИЋ АЛЕКСАНДАР
+БОРИЋ ДУШАН
+БОРИЋ КАМЕНКО
+БОРИЋ КАТИЦА
+БОРИЋ МИЛАН
+БОРИЋ МИЛКА
+БОРИЋ НИКОЛА
+БОРИЋ ПЕТАР
+БОРИЋ СТЕВАН
+БОРИЋ ЗОРАН
+БОРИЋ ЗОРАН
+БОРИС ЈОСИП
+БОРИВОЈЕВИЋ ВИТОМИР
+БОРЈАНИН СЛАВКО
+БОРЈАНОВИЋ ГОРДАНА
+БОРЈАНОВИЋ ИЛИЈА
+БОРЈАНОВИЋ НИКОЛА
+БОРКО СТАНИСЛАВ
+БОРКОВАЧКИ ЗОРАН
+БОРКОВАЦ КАТАРИНА
+БОРКОВИЋ ДРАГОСЛАВА
+БОРКОВИЋ МИЛАН
+БОРЉА СТЕВАН
+БОРОШ ШАНДОР
+БОРОШ ШАНДОР
+БОРОШ ЂЕРЂ
+БОРОШ-ЂЕВИ ЖЕЉКО
+БОРОШ ЂОРЂЕ
+БОРОШ АЛЕКСАНДАР
+БОРОШ АНДРИЈА
+БОРОШ АНТУН
+БОРОШ ЕРНЕ
+БОРОШ ЕВА
+БОРОШ ИШТВАН
+БОРОШ ЈОЖЕФ
+БОРОШ ЈОЛАН
+БОРОШ ЈУЛИЈА
+БОРОШ ЛАДИСЛАВ
+БОРОШ ЛАЈОШ
+БОРОШ МАРГИТА
+БОРОШ МИХАЈЛО
+БОРОШ МИХАЈЛО
+БОРОШ МИКЛОШ
+БОРОШ ВЕРА
+БОРОШИЋ ЕЛИЗАБЕТА
+БОРОЦКИ АЛЕКСАНДАР
+БОРОЦКИ ДАНИЦА
+БОРОЦКИ ЉУБИНКА
+БОРОЈА ЉУБАН
+БОРОЈА РУЖИЦА
+БОРОЈЕВ АРСЕН ДР ЛЕКАР
+БОРОЈЕВ ЕМИЛИЈАН ДР
+БОРОЈЕВ ЈАГОДА
+БОРОЈЕВ ЉУБОМИР
+БОРОЈЕВ РАДМИЛА
+БОРОЈЕВИЋ АНА
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БРАНКО
+БОРОЈЕВИЋ ДРАГАН
+БОРОЈЕВИЋ ДРАГОЉУБ
+БОРОЈЕВИЋ ДУШАН
+БОРОЈЕВИЋ КРСТА
+БОРОЈЕВИЋ ЉИЉАНА
+БОРОЈЕВИЋ МИЛАН
+БОРОЈЕВИЋ ПАВЛЕ
+БОРОЈЕВИЋ ПЕТРА
+БОРОЈЕВИЋ СЛАВКО ПРОФ
+БОРОМИСА ДРАГИЦА
+БОРОМИСА ЈЕЛЕНА
+БОРОЊАЦ ДРАГАН
+БОРОЊАЦ МИЛИЦА
+БОРОЊАЦ ОЛГА
+БОРОЊАЦ ВЕРА
+БОРОТА АЛЕКСАНДАР
+БОРОТА ЈОВАНКА
+БОРОТА МИЛАН
+БОРОТА МИЛОРАД
+БОРОТА МИРА
+БОРОТА РАДОСЛАВ ДР ЛЕКАР
+БОРОВЧАНИН ЉУБОМИР
+БОРОВЧАНИН МИЛИСАВ
+БОРОВЧАНИН НЕДЕЉКО
+БОРОВЧАНИН РАДОМИР
+БОРОВЧАНИН СЛОБОДАН
+БОРОВАЦ АРСО
+БОРОВАЦ БРАНИСЛАВ
+БОРОВАЦ КАТИЦА
+БОРОВАЦ МИЛОРАД
+БОРОВИЧАНИН МИЛОРАД
+БОРОВИЋ АТИЛА
+БОРОВИЋ ЈОСИП
+БОРОВИЋ ЈОВАН
+БОРОВИЋ КОСТА
+БОРОВИЋ МЕНА
+БОРОВИЋ ПЕТАР
+БОРОВИЋ РУДОЛФ
+БОРОВИЋ ВЛАДЕ
+БОРОВИЋАНИН МИРОСЛАВ
+БОРОВИЦА БОЈКА
+БОРОВИЦА ИВАН
+БОРОВИЦА ИВАН
+БОРОВИЦА ЈЕЛЕНА
+БОРОВИЦА МИОДРАГ
+БОРОВНИЦА БРАНКО
+БОРОВНИЦА МАРКО
+БОРОВНИЦА МИЛАН
+БОРОВНИЦА МИЛЕВА
+БОРОЗАН МИЛОРАД
+БОРУШ ИШТВАН
+БОРУШ ИРЕНА
+БОРЗАШКИ БРАТИСЛАВА
+БОРЗАШКИ РАДОМИР
+БОРЗАШКИ СТЕВАН
+БОСАК ИРЕНА
+БОСАКОВ ДРАГАН
+БОСАНЧИЋ БОШКО
+БОСАНЧИЋ БОГДАН
+БОСАНЧИЋ БОГДАН
+БОСАНЧИЋ ЈЕЛИЦА
+БОСАНЧИЋ МАНОЈЛО
+БОСАНЧИЋ МИЛЕВА
+БОСАНЧИЋ МИОДРАГ
+БОСАНЧИЋ РАДОВАН
+БОСАНЧИЋ РАЈКО
+БОСАНЧИЋ ТРИВА
+БОСАНЧИЋ ВАСО
+БОСАНЧИЋ ВЛАДО
+БОСАНЧИЋ ВУЈО
+БОСАНАЦ ЈОВАН
+БОСАНАЦ ЉУБИЦА
+БОСАНАЦ МАРИЈА
+БОСАНАЦ НИКОЛА
+БОСАНАЦ ВЕРА
+БОСИЋ БОЖАНА
+БОСИЋ БРАНКО
+БОСИЋ ДУШАН ДР
+БОСИЋ ЈОВАН
+БОСИЋ МИОДРАГ
+БОСИЋ РАДОВАН
+БОСИЋ СЛАВКА
+БОСИЉКИЋ ЛАЗАР
+БОСИЉКИЋ ЛУКА
+БОСИН СЛОБОДАН
+БОСИОК ДОРУ
+БОСНАИ-БАБА ЛУЦИЈА
+БОСНАИ ЈАНОШ
+БОСНИЋ ЧЕДОМИР
+БОСНИЋ ЂУРЂИНКА
+БОСНИЋ АЛЕКСАНДАР
+БОСНИЋ БОЖИДАР
+БОСНИЋ БОСИЉКА
+БОСНИЋ ДАВИД
+БОСНИЋ ДАВИД
+БОСНИЋ ЈОВАН
+БОСНИЋ МАРА
+БОСНИЋ МИРКО
+БОСНИЋ МЛАДЕН
+БОСНИЋ НАДА
+БОСНИЋ НУРИЈА
+БОСНИЋ РАДОСА
+БОСНИЋ РАЈКО
+БОСНИЋ ВЕРА
+БОСНИЋ ВЛАДА
+БОСНИЋ ВЛАДА
+БОСНИЋ ЗОРАН
+БОТА БРАНИСЛАВ
+БОТИЧ ОЛИВЕРА
+БОТИЋ АЛЕКСАНДАР
+БОТИЋ БОГДАН
+БОТИЋ ДАНИЦА
+БОТИЋ ДАРКО
+БОТИЋ ДАРКО
+БОТИЋ ГАВРА
+БОТИЋ МИЛАН
+БОТИЋ МИЛАН
+БОТИЋ МИЛЕ
+БОТИЋ МИЛОРАД АДВОКАТ
+БОТИЋ МИРОСЛАВА
+БОТИЋ ОЛИВЕРА
+БОТИЋ ПРОКА
+БОТИЋ РАДОСЛАВА
+БОТИЋ ВЕРИЦА
+БОТИЋ ВЛАДИМИР
+БОТИЋ ЗОРАНКА
+БОТКА АНТАЛ
+БОТКА ДАВИД
+БОТКА ЕРЖЕБЕТ
+БОТКА ВЕРОНА
+БОТКА ЗОЛТАН
+БОТЛИК ГЕЗА
+БОТЛИК МАРИЈА
+БОТОШКИ ДРАГОВАН
+БОТОШКИ САВА
+БОТОРИЋ РАДОЈИЦА
+БОТЗА ИШТВАН
+БОЗЕЈАЦ АНТАЛ ДИПЛ ПРАВНИК
+БОЗЕЈАЦ ДУШАН
+БОЗЕЈАЦ ГОРДАНА
+БОЗЕЈАЦ МИЛЕНКО
+БОЗЕЈАЦ СМИЉКА
+БОЗЕЈАЦ СВЕТИСЛАВ
+БОЗЕЈАЦ ВЕРА
+БОЗОКИН СТЕВИЦА
+БРЧИЋ ИГЊАЦ
+БРЧИЋ МИРОСЛАВ
+БРЧИЋ НЕЂО
+БРЧИЋ РАДОВАН
+БРЧИН ЂОРЂЕ
+БРЧИН МИЛИНКА
+БРЧИН НИКОЛА
+БРЧИН РАТОМИР
+БРЧИН СЛАВИЦА
+БРЧИН СВЕТОЗАР
+БРЧИНОВИЋ ПАВЛЕ
+БРЧКАЛОВИЋ ЉУБОМИР
+БРАЧЕВИЋ ИВАН
+БРАЧЕВИЋ МИРЈАНА
+БРАШАНАЦ БОРИСЛАВ
+БРАШАНАЦ ГАВРИЛО ДИПЛ ИНГ
+БРАШАНАЦ ИЛИЈА
+БРАШАНАЦ МИРЈАНА
+БРАШАНАЦ МИРОСЛАВ
+БРАШКО ЈОЖЕФ
+БРАШЊО ГУСТАВ
+БРАШЊО ИШТВАН
+БРАШЊО ИШТВАН
+БРАЦАНОВИЋ ДАМЈАН
+БРАЦАНОВИЋ МИЛУТИН
+БРАЦИЋ МИЛАН
+БРАДАЧ ЕЛИЗАБЕТА
+БРАДАЧ ИМРЕ
+БРАДАШ ЖИВА ДИПЛ ИНГ
+БРАДАРИЋ НЕДЕЉКО
+БРАДИЋ ЂОРЂЕ
+БРАДИЋ ЂОРЂЕ
+БРАДИЋ БОЖИДАР
+БРАДИЋ БОГОЉУБ
+БРАДИЋ БОГОЉУБ
+БРАДИЋ БРАНКО
+БРАДИЋ ЕВГЕНИЈА
+БРАДИЋ ГАВРИЛО
+БРАДИЋ ЈУСТИНА
+БРАДИЋ МИЛАН ДИПЛ ИНГ
+БРАДИЋ МИЛАН
+БРАДИЋ МИЛИЦА
+БРАДИЋ МИЛИВОЈЕ
+БРАДИЋ МИЉКО
+БРАДИЋ СЛОБОДАН
+БРАДИЋ СРЕТА
+БРАДИЋ-ТЕЊИ ЗОРИЦА
+БРАДИЋ ТЕОДОРА
+БРАДИЋ ТОМИСЛАВА
+БРАДИЋ ВИДОЈЕ
+БРАДИЋ ЗОРИЦА
+БРАДОШ СЛОБОДАН
+БРАХТЛ МАРИЦА
+БРАЈДИЋ ИВАН
+БРАЈЕР ФРАЊА
+БРАЈЕВИЋ ПРЕДРАГ
+БРАЈИЋ МИЛИЦА
+БРАЈИЋ РАДОВАН
+БРАЈИЋ СЛОБОДАН
+БРАЈКОВ МАРКО
+БРАЈКОВИЋ ИВО
+БРАЈКОВИЋ МИРЈАНА
+БРАЈОВИЋ МИЛИВОЈЕ
+БРАЈОВИЋ МИЛОШ
+БРАЈОВИЋ СЛАВКА
+БРАЈОВИЋ СПАСОЈЕ
+БРАЈОВИЋ СТАНКА
+БРАЈОВИЋ ВЕЉКО
+БРАКОЧЕВИЋ ЈОВАН
+БРАКУС ДУШАНКА
+БРАКУС ЉИЉАНА
+БРАКУС МАРИЈА
+БРАКУС МИЛАН
+БРАКУС МОМЧИЛО
+БРАЛОВИЋ РАТКО
+БРАНЧИЋ БОРИС ДИПЛ ИНГ
+БРАНЧИЋ ЈАСНА
+БРАНЧИЋ МИЛЕНА
+БРАНЧИЋ МИЛУШКО
+БРАНА ПЕТАР
+БРАНИЛОВИЋ СТЈЕПАН
+БРАНКОВ ЂОРЂЕ
+БРАНКОВ ЂОРЂЕ
+БРАНКОВ АЛЕКСАНДРА
+БРАНКОВ-БОКА РОЗАЛИЈА
+БРАНКОВ БОРИВОЈ
+БРАНКОВ БРАНИСЛАВ
+БРАНКОВ ДОБРИЦА
+БРАНКОВ ДРАГАНА
+БРАНКОВ ДРАГАН
+БРАНКОВ ДУШАН
+БРАНКОВ ЕМИЛ
+БРАНКОВ ИЛИЈА
+БРАНКОВ ЈЕЛИЦА
+БРАНКОВ ЈОВАНКА
+БРАНКОВ КОСТА
+БРАНКОВ КОСТА
+БРАНКОВ ЉУБИЦА
+БРАНКОВ ЉУБИЦА
+БРАНКОВ ЉУБИНКО
+БРАНКОВ МИЛИЦА
+БРАНКОВ МИЛОРАД
+БРАНКОВ МИРКО
+БРАНКОВ МИТА
+БРАНКОВ МИТА
+БРАНКОВ МЛАДЕН
+БРАНКОВ МОМИР
+БРАНКОВ НАДА
+БРАНКОВ ОЛИВЕРА
+БРАНКОВ РАДИВОЈ
+БРАНКОВ РАДОВАН
+БРАНКОВ РАДОВАН
+БРАНКОВ СВЕТИСЛАВ
+БРАНКОВ ВЕЉКО
+БРАНКОВ ВЛАДИМИР
+БРАНКОВ ЗЛАТИНКА
+БРАНКОВАН ЂОРЂЕ
+БРАНКОВАН ВЛАСТИМИР
+БРАНКОВИЋ БОГОЉУБ
+БРАНКОВИЋ БОЈА
+БРАНКОВИЋ БРАНКО
+БРАНКОВИЋ БРАНКО
+БРАНКОВИЋ ДРАГАН
+БРАНКОВИЋ ДУШАНКА
+БРАНКОВИЋ ДУШАН
+БРАНКОВИЋ ДУШАН
+БРАНКОВИЋ ИЛИЈА
+БРАНКОВИЋ-КОВАЧЕВИЋ РАДМИЛА
+БРАНКОВИЋ ЉИЉАНА
+БРАНКОВИЋ ЉУБИЦА
+БРАНКОВИЋ МИЛАН
+БРАНКОВИЋ МИЛЕНА
+БРАНКОВИЋ МИЛОРАД
+БРАНКОВИЋ МИРКО
+БРАНКОВИЋ МЛАДЕН
+БРАНКОВИЋ САВКА
+БРАНКОВИЋ СЛАВКО
+БРАНКОВИЋ СЛАВОЉУБ
+БРАНКОВИЋ СЛАВОЉУБ
+БРАНКОВИЋ СВЕТЛАНА
+БРАНКОВИЋ ТУГОМИР
+БРАНКОВИЋ ЗИНА
+БРАНКОВИЋ ЗОРАН
+БРАНОВАЧКИ ЂОРЂЕ
+БРАНОВАЧКИ АНГЕЛИНА
+БРАНОВАЧКИ ГАВРИЛО
+БРАНОВАЧКИ ИВАНА
+БРАНОВАЧКИ ЉУБИЦА
+БРАНОВАЧКИ ОЛГА
+БРАНОВАЧКИ СВЕТИСЛАВ
+БРАНОВИЋ БИСЕРКА
+БРАНОВИЋ РУЖА
+БРАОВИЋ САНДРА
+БРАОВИЋ ВЛАДИМИР
+БРАТ ДУШАН
+БРАТИЋ АШИР
+БРАТИЋ ДРАГО
+БРАТИЋ ДУШАН
+БРАТИЋ ГОРАН
+БРАТИЋ ЉУБИЦА
+БРАТИЋ ЉУБОМИР
+БРАТИЋ МУХО
+БРАТИЋ НЕДЕЉКО
+БРАТИЋ РАДОВАН
+БРАТИЋ ВОЈИСЛАВ
+БРАТОНОЖИЋ МАРГИТА
+БРБОРИЋ ЛАЗАР
+БРБОРИЋ СРБИСЛАВ
+БРЦАНОВ ЂУРЂИНКА
+БРЦАНОВ ОЛГА
+БРЦАНОВ СИМА
+БРЦАНОВ ТИХОМИР
+БРЦАНСКИ НИКОЛА
+БРДАР ДАНЕ
+БРДАР ДРАГО
+БРДАР ИЛИЈА
+БРДАР ИВАНКА
+БРДАР МИЛАН
+БРДАР ПЕРО
+БРДАР СЛАВИША
+БРДАРЕВИЋ ДУШКО
+БРДАРИЋ ДРАГОМИР
+БРДАРИЋ КОСТА
+БРДАРИЋ МИЛАН
+БРДАРИЋ ПЕТАР
+БРЕШЋАНСКИ МАРИЈА
+БРЕШКОВИЋ СТАНИСЛАВА
+БРЕШКОВСКИ ДРАГИЦА
+БРЕЖАН ИЛОНА
+БРЕЖАН ЛЕОНОРА
+БРЕЖАН МАРИЈА
+БРЕБЕР ЉУБИЦА
+БРЕБЕРИНА МИЛАН
+БРЕБЕРИНА СТЕВАН
+БРЕГУН ЂОРЂЕ
+БРЕГУН АЛЕКСАНДРА
+БРЕГУН НИКОЛА
+БРЕГУН РАДОСЛАВ ДИПЛ ИНГ
+БРЕКАЛО ЈОСИП
+БРЕКИЋ ИЛИЈА
+БРЕКИЋ НИКОЛА
+БРЕКИЋ СТЕВАН
+БРЕНЕЦКИ ЗДРАВКО
+БРЕНЕСЕЛ ДРАГАН
+БРЕНЕСЕЛ ГАБРИЕЛ
+БРЕНЕСЕЛ МИРЈАНА
+БРЕНЕСЕЛ НИКОЛА
+БРЕСТОВАЧКИ ИВАН
+БРЕСТОВАЧКИ ЈАСМИНА
+БРЕСТОВАЧКИ МИЛКА
+БРЕСТОВАЧКИ СТЕВА
+БРЕТ ВЕРА
+БРЕТШНАЈДЕР АНА
+БРЕЗНИК ЕРНЕ
+БРЕЗЊАК ЈАНОШ
+БРЕЗЊАК МАРИЈА
+БРЕЗОВЧЕК ЈОВАНКА
+БРЕЗОВАЦ ДРАГИЦА
+БРЕЗОВАЦ ДУШАН
+БРЕЗОВАЦ ИВАН
+БРЕЗОВАЦ ИВАН
+БРЕЗОВАЦ ЈУРАЈ
+БРЕЗОВАЦ КАТАРИНА
+БРЕЗОВАЦ ЉУБИНКА
+БРЕЗОВАЦ МИЛЕНА
+БРЕЗОВАЦ МИЛОШ
+БРЕЗОВАЦ ПЕТАР
+БРЕЗОВАЦ САВА
+БРЕЗОВИЋ МИРЈАНА
+БРИШЕВАЦ ЈУРЕ
+БРИКЕР СМИЉАНА
+БРИЊАК ДРАГО
+БРИТВЕЦ МАРКО
+БРИЗА ЖЕЛМИРА
+БРИЗА ЈАН
+БРИЗА ЛУКРЕЦИЈА
+БРК СИМО
+БРКАНИЋ МАРКО
+БРКАНИЋ МИЛЕНКО
+БРКАНИЋ ТАТЈАНА
+БРКАНЛИЋ ЖЕЉКО
+БРКАНЛИЋ ДУШАН
+БРКИЋ ЂОРЂЕ
+БРКИЋ ЂОРЂЕ
+БРКИЋ ЂУРО
+БРКИЋ АБАЗ
+БРКИЋ АЛЕКСАНДАР
+БРКИЋ АЛЕКСАНДАР
+БРКИЋ АНКА
+БРКИЋ АНКИЦА
+БРКИЋ-БЕЛИЋ ДАНИЦА
+БРКИЋ БОГДАН
+БРКИЋ БРАНКО
+БРКИЋ ДРАГАН
+БРКИЋ ДРАГА
+БРКИЋ ДРАГО
+БРКИЋ ДУШАНКА
+БРКИЋ ГОЈКО
+БРКИЋ ИЛИЈА
+БРКИЋ ИВАН
+БРКИЋ ИВИЦА
+БРКИЋ ЈЕЛИСАВЕТА
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЉУБОМИР
+БРКИЋ ЛУКА
+БРКИЋ МАГДАЛЕНА
+БРКИЋ МАНДА
+БРКИЋ МАРИЈА
+БРКИЋ МАРИЈА
+БРКИЋ МИЛАДИН
+БРКИЋ МИЛАН
+БРКИЋ МИЛАН
+БРКИЋ МИЛАН
+БРКИЋ МИРЈАНА
+БРКИЋ МИТАР
+БРКИЋ НАДА
+БРКИЋ НЕБОЈША
+БРКИЋ НИКОЛА
+БРКИЋ НИКОЛА
+БРКИЋ ПЕТАР
+БРКИЋ ПЕТАР
+БРКИЋ ПЕТРА
+БРКИЋ РАДОЈКА
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАТКО
+БРКИЋ РУЖА
+БРКИЋ СИЛВИЈА
+БРКИЋ СЛАВКО
+БРКИЋ СНЕЖАНА
+БРКИЋ СНЕЖАНА
+БРКИЋ ТОМО ДИПЛ ИНГ
+БРКИЋ УРОШ
+БРКИЋ ВЕЗИЛИЈА
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВОЈИСЛАВ
+БРКИЋ ЗДРАВКО
+БРКИЋ ЗОРАН
+БРКЉАЧ БРАНИМИР
+БРКЉАЧ БРАНИСЛАВ
+БРКЉАЧ ДРАГОЉУБ
+БРКЉАЧ ИЛИЈА
+БРКЉАЧ КАТАРИНА
+БРКЉАЧ МИЛАНКО
+БРКЉАЧ МИЛАН
+БРКЉАЧ НИКОЛА
+БРКЉАЧ НИКОЛА
+БРКЉАЧ РУЖИЦА
+БРКЉАЧ СЛОБОДАН
+БРКЉАЧ СТЕВАН
+БРКЉАЧА БРАТОЉУБ
+БРКЉАЧИЋ БОЖЕНА
+БРКЉАЧИЋ ВЛАДИМИР
+БРКО НИКОЛА
+БРКОВИЋ ЂОРЂЕ
+БРКОВИЋ АНТУН
+БРКОВИЋ БОСИЉКА
+БРКОВИЋ ДРАГО
+БРКОВИЋ ДУШАН
+БРКОВИЋ ЕМИЛИЈА
+БРКОВИЋ ЈОВАНКА
+БРКОВИЋ ЉУБОМИР
+БРКОВИЋ МАГДА
+БРКОВИЋ МИЛАН
+БРКОВИЋ МИЛИЦА
+БРКОВИЋ НАДА
+БРКОВИЋ НИКОЛА
+БРКОВИЋ РАДОВАН
+БРКОВИЋ ВИОДСАВА
+БРКОВИЋ ВЈЕКОСЛАВ
+БРКОВИЋ ЗЛАТКО
+БРЛИЋ ДРАГУТИН
+БРЛИЋ ИВАН
+БРМБОТА ЈОВАН
+БРМБОТА ЈОВАН
+БРЊАКОВИЋ МАРИЈА
+БРНОВИЋ СВЕТОЗАР
+БРОШТЕАН ВИОРЕЛ
+БРОЋЕТА БОГДАН
+БРОЋЕТА МИЋА
+БРОЋЕТА МИЛОРАД
+БРОЋЕТА НЕДЕЉКО
+БРОЋЕТА ОБРАД
+БРОДРАНСКИ СВЕТЛАНА
+БРОЈЧИН ДУШАН
+БРОЈЧИН САВА
+БРОНЗА ДРАГАН
+БРОНЗА РАЈКО
+БРОЗОВИЋ ИВАН
+БРСАНОВИЋ КРСТА
+БРСТИНА ВАСИЛИЈЕ
+БРТАН ЈОСИП
+БРТКА ЈАН
+БРУШЊАИ ЈОСИП
+БРУШЊАК ПЕРО
+БРУЈИЋ ДУШАН
+БРУЈИЋ ЈОВАН
+БРУЈИЋ МАНОЈЛО
+БРУЈИЋ МИЛАН
+БРУЈИЋ МИЛИЦА
+БРУЈИЋ СЛАВКО
+БРУЈИЋ ВЛАДИМИР
+БРУК АНДРИЈА ДР
+БРУКНЕР БОГДАН
+БРУКНЕР БОГДАН
+БРУНЧЕВИЋ ХИВЗО
+БРУНЧЕВИЋ РЕЏЕП
+БРУНДЗА ЦЕЦИЛИЈА
+БРУНДЗА ВЛАДИМИР МР
+БРУНЕР ЈОСИП
+БРУНЕТ ЕЛЕМЕР
+БРУНЕТ ФРАЊА
+БРУНЕТ ИШТВАН
+БРУНЕТ ЗОЛТАН
+БРУНЕТ ЗОЛТАН
+БРУСИН ДУШКО
+БРУСИН КАЈИЦА
+БРУСИН МИЛОЈКО
+БРУСИН МИЛОВАН
+БРУСИН РАДИЦА
+БРУСИН СЛАВКО
+БРУСЊАИ КАРЛО
+БРУСЊАИ ЛАСЛО
+БРУСЊАИ МАРГАРИТА
+БРЗАК ЖИВКА
+БРЗАК ЖИВОРАД
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂУКА
+БРЗАК АЛЕКСАНДАР
+БРЗАК АЛЕКСАНДАР
+БРЗАК АНЂЕЛКА
+БРЗАК БОГДАНКА
+БРЗАК БОРИСЛАВ
+БРЗАК БОСА
+БРЗАК БРАНИСЛАВ
+БРЗАК ДРАГАН
+БРЗАК ДРАГАН
+БРЗАК ДРАГИЦА
+БРЗАК ДРАГОМИР
+БРЗАК ДУШКО
+БРЗАК ГОЈКО
+БРЗАК ИЛИЈА
+БРЗАК ЈАДРАНКА
+БРЗАК ЈЕЛЕНА
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК КОСТА
+БРЗАК ЛАЗАР
+БРЗАК ЛЕПОСАВА
+БРЗАК МАРИЈА
+БРЗАК МИЛА
+БРЗАК МИЛЕНКО
+БРЗАК МИЛЕНКО
+БРЗАК МИЛЕНКО
+БРЗАК МИЛОВАН
+БРЗАК МИЛОВАН
+БРЗАК МИРА
+БРЗАК МИРА
+БРЗАК МИРОСЛАВ
+БРЗАК МИТАР
+БРЗАК ПЕТАР
+БРЗАК ПРЕДРАГ
+БРЗАК РАДОСЛАВ
+БРЗАК САВА
+БРЗАК САВЕТА
+БРЗАК СИМЕОН
+БРЗАК СЛАВКО
+БРЗАК СЛОБОДАНКА
+БРЗАК СТЕВАН
+БРЗАК СТЕВАН
+БРЗАК СТЕВАН
+БРЗАК СТОЈАНКА
+БРЗАК СВЕТЛАНА
+БРЗАК СВЕТОЗАР
+БРЗАК ТОША
+БРЗАК ТОША
+БРЗАК ТОШИЦА
+БРЗАК ТОДОР
+БРЗАК ВАСА
+БРЗАК ВАСА
+БРЗАК ВАСА
+БРЗАК ВЕЉКО
+БРЗАК ВИДА
+БРЗАК ВИДОСАВА
+БРЗАК ВИДОСЛАВ
+БРЗАК ВЛАДИСЛАВ
+БРЗАК ЗОРАН
+БРЗАКОВИЋ ИГОР
+БРЗАКОВИЋ НЕНАД ДР
+БРЗАКОВИЋ ВИТОМИР ДР ЛЕКАР
+БРЗАНОВИЋ ДРАГАН
+БРЗИЋ ЖИВАН
+БРЗИЋ ЂОРЂЕ
+БРЗИЋ БРАНКО
+БРЗИЋ ФРАЊА
+БРЗИЋ ИВАН
+БРЗИЋ ЈОВАН
+БРЗИЋ ЛАЗАР
+БРЗИЋ ЛАЗАР
+БРЗИЋ МИРЈАНА
+БРЗИЋ ПЕТАР
+БРЗИЋ ПЕТАР
+БРЗИЋ РАДОСЛАВ
+БРЗИЋ СТЕВАН
+БРЗИЋ СВЕТОЗАР
+БРЗИЋ ТОДОР
+БРЗИЋ ЗЛАТА
+БРЗИЦА БРАНКА
+БРЗИЦА ФЕРДО
+БРЗИЦА ИВАНКА
+БРЗИЦА МАРИНКО
+БРЗОВАН БЕХИЈА
+БУ ИШТВАН
+БУЧА ДУШАН
+БУЧА ДУШИЦА
+БУЧА ИРИНА
+БУЧА ВАСА
+БУЧАНСКИ ЈОЖЕФ
+БУЧИЋ БОРИСЛАВ
+БУЧКО АХНЕТА
+БУЧКО ЈАНКО
+БУЧКО МАРИЈА
+БУЧО ДАНИЈЕЛА
+БУЧУ-МАРТОНОШИ ГИЗЕЛА
+БУШ АНА
+БУШ МАГДАЛЕНА
+БУШ СИЛВЕСТЕР
+БУШИЋ СРЕЋКО
+БУШЉЕТА БРАНКА
+БУШТРЕВИЋ МИРЈАНА
+БУШТРЕВИЋ СЛОБОДАНКА
+БУШТРОВИЋ ОЛГА
+БУЋАН ДУШАН
+БУЋАН ДУШАН
+БУЋАН МИЛЕВА
+БУЋАН СЛАВКА
+БУЋАНСКИ МАЋАШ
+БУЋИН РАДЕ
+БУЋО ЗАГОРКА
+БУЖАНЧИЋ МИРА
+БУЖАНИН МИЛЕ
+БУЂИ ЂУЛА
+БУЂИЛАН ПЕТАР
+БУАЧА ДРАГАН
+БУАЧА ОЛГИЦА
+БУАЧА СТЕВАН
+БУБАЛО ДРАГАН
+БУБАЛО ДРАГИЊА
+БУБАЛО ГОРАН
+БУБАЛО ИЛИЈА
+БУБАЛО ЈОВАН
+БУБАЛО ЈОВО
+БУБАЛО МИРОСЛАВ
+БУБАЛО ПЕТАР
+БУБАЛО РАТОМИР
+БУБАЛО СИМО
+БУБАЛО ТЕОДОРА
+БУБАЊ БРАНИСЛАВ
+БУБАЊ ДАНЕ
+БУБАЊ ИВАНКА
+БУБАЊ МИЛИЦА
+БУБАЊ МИЛОШ
+БУБАЊ РАДЕ
+БУБАЊ РАДОЈКА
+БУБАЊ СРБОЉУБ
+БУБАЊ ВИДОСАВА
+БУБАЊА АЛЕКСАНДАР
+БУБАЊА БАТРИЋ
+БУБАЊА ДАРИНКА
+БУБАЊА КАТИЦА
+БУБАЊА МАШАН
+БУБАЊА РАДИСАВ
+БУБАЊА ТАДИЈА
+БУБАЊА ВОЈИСЛАВ
+БУБАЊА ЗОРКА
+БУБИЋ МИЛАН
+БУБНИЋ ВЕРОНА
+БУБЊЕВИЋ ЂОРЂЕ
+БУБЊЕВИЋ БОРЕ
+БУБЊЕВИЋ ДАРА
+БУБЊЕВИЋ ДРАГО
+БУБЊЕВИЋ ГОЈКО
+БУБЊЕВИЋ ЈАЊА
+БУБЊЕВИЋ ЉУБОМИР
+БУБЊЕВИЋ МАРИЦА
+БУБЊЕВИЋ МАРИНКО
+БУБЊЕВИЋ МИРКО
+БУБЊЕВИЋ НЕНАД
+БУБЊЕВИЋ ОСТОЈА
+БУБЊЕВИЋ РАДА
+БУБЊЕВИЋ РАДОМИР
+БУБЊЕВИЋ РЕЉА
+БУБЊЕВИЋ СРБОЉУБ
+БУБЊЕВИЋ СРЕТЕН
+БУБЊЕВИЋ СТОЈАНКА
+БУБЊЕВИЋ ВАСКРСИЈЕ
+БУБЊЕВИЋ ВЛАДИМИР
+БУБЊИЋ ЖЕЉКО
+БУБОЊА БОРИС
+БУБОЊА ДОСТАНА
+БУБОЊА ДУШАН
+БУБОЊА РАДОВАН
+БУБРЕШКО ГОРДАНА
+БУБУЉ МИЛИЋ
+БУБУЉ НАДА
+БУБУЉ СТОЈАНКА
+БУБУЉ СТОЈА
+БУЦАЛО МИЛАДИН
+БУЦАЛО МИРА
+БУЦАЛО МИТАР
+БУЦАЛОВИЋ ДУШАН
+БУЦИЋ АНТЕ
+БУЦИЋ МИЛИВОЈ
+БУЦУЉЕВИЋ АЛЕКСАНДАР
+БУЦУЉЕВИЋ ЗЛАТОМИР ДР
+БУЏАКОСКИ ТОМА
+БУЏАРОВ САВА
+БУДА АДА
+БУДА ЕВА
+БУДА ХАЈНАЛКА
+БУДА ЈОЖЕФ
+БУДА ТЕРЕЗА
+БУДАЋ ЗОРАН
+БУДАИ ГОРИЦА
+БУДАИ ИЛОНКА
+БУДАИ ЈОЖЕФ
+БУДАИ ЈОЛАН
+БУДАИ ЈОВАН
+БУДАИ ЛАЈОШ
+БУДАИ ЛАЈОШ
+БУДАИ ЗОРА
+БУДАК ДРАГАН
+БУДАК ИВИЦА
+БУДАК МИЛАН
+БУДАК ВЕРА
+БУДАКОВ АЛЕКСАНДРА
+БУДАКОВ БРАНИСЛАВ
+БУДАКОВ ДРАГАН
+БУДАКОВ ГОРИЦА
+БУДАКОВ ИВАН
+БУДАКОВ ЉИЉАНА
+БУДАКОВ МИЛАН
+БУДАКОВ МИЛУТИН
+БУДАКОВ ОЛИВЕРА
+БУДАКОВ СЛОБОДАН
+БУДАНОВ АНТАЛ
+БУДАНОВ ДАНИЦА
+БУДАНОВИЋ САВЕТА
+БУДАНОВИЋ СТАНА
+БУДЕРКА МАРИЈА
+БУДИША БОЖА
+БУДИША БОРА
+БУДИША МИРКО
+БУДИША ТИХОМИР
+БУДИШИЋ ДРАГАН
+БУДИШИН ЂОРЂЕ
+БУДИШИН ИВАН
+БУДИШИН МИЛОШ
+БУДИШИН МИЛОШ
+БУДИШИН НИКОЛА ДР
+БУДИШИН-САКАЧ СОЊА ДР
+БУДИШИН ВЛАДИМИР
+БУДИЋ ЖЕЉКО
+БУДИЋ ДАНИЛО
+БУДИЋ ДРАГОСЛАВ
+БУДИЋ ДУШАНКА
+БУДИЋ МИЛАН
+БУДИЋ ЗОРКА
+БУДИМЧИЋ ЈОВАН
+БУДИМЧИЋ ЉИЉАНА
+БУДИМЧИЋ МИЛИВОЈ
+БУДИМА БАЈРУШ
+БУДИМАЦ БУДИМИР
+БУДИМАЦ ЗОРАН
+БУДИМИР МАРИЈА
+БУДИМИР МИЛАН
+БУДИМИР МИЛОЈКО
+БУДИМИРОВИЋ ДРАГИЦА
+БУДИМИРОВИЋ НЕГОВАН
+БУДИМИРОВИЋ УРОШ
+БУДИМКИЋ-КРСТИЋ ДРАГАНА
+БУДИМЛИЈА АЛЕКСАНДАР
+БУДИМЛИЈА ДРАГИЦА
+БУДИМЛИЈА ИЛИЈА
+БУДИМЛИЈА МИЛАН
+БУДИМЛИЈА МИЛАН
+БУДИМЛИЈА РАДЕ
+БУДИМСКИ ЂУРА
+БУДИМСКИ СЛАВУЈ
+БУДИНЧЕВИЋ ГАБОР
+БУДИНЧЕВИЋ ЈУЛИЈАНА
+БУДИНЧЕВИЋ МИРКО
+БУДИНЧЕВИЋ НИКОЛА
+БУДИНСКИ КИРИЛ
+БУДИНСКИ ЉУБА
+БУДИНСКИ МАРИЈА
+БУДИНСКИ ВЛАДИМИР
+БУДИСАВЉЕВИЋ БРАНКО
+БУДИСАВЉЕВИЋ ДУШАН
+БУДИСАВЉЕВИЋ КАРОЛИНА
+БУДИСАВЉЕВИЋ МАРИЈА
+БУДИСАВЉЕВИЋ НАТАЛИЈА
+БУДИСАВЉЕВИЋ НЕВЕНКА
+БУДИСАВЉЕВИЋ РУЖИЦА
+БУДИСАВЉЕВИЋ ВЕРИЦА
+БУДЈИЛАН ПЕТАР
+БУДОШАН ЖИВКО
+БУДОШАН ЂОРЂЕ
+БУДОШАН АЛЕКСАНДАР
+БУДОШАН-КОВАЧ ЈЕЛЕНА
+БУДОШАН МИЛОШ
+БУДОШАН НАДА
+БУДОШАН САВА
+БУДОШАН САВА
+БУДОШАН СТЕВАН
+БУДОШАН ТОШИЦА
+БУДОШАН ВАСА
+БУДОШАН ВАСА
+БУДОШАН ВУКОСАВА
+БУДОВАЛЧЕВ АРСА
+БУДОВАЛЧЕВ ОЛГА
+БУДОВАЛЧЕВ ПЕТАР
+БУДОВАЛЧЕВ ПЕТАР
+БУДУРИН РАДОЈЕ
+БУГАЏИЈА ЛАЈОШ
+БУГАЏИЈА СТЕВАН
+БУГАРЧИЋ ПЕТАР
+БУГАРЧИЋ РАДМИЛО
+БУГАРЧИЋ СМИЉКА
+БУГАРИН-ЧОНКИЋ РАДОЈКА
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН БОШКО
+БУГАРИН БОРИСЛАВ
+БУГАРИН ДАНИЦА
+БУГАРИН ИЛИЈА
+БУГАРИН ИВАНА
+БУГАРИН ЈЕВРОСИМА
+БУГАРИН ЉИЉАНА
+БУГАРИН ЉУБОМИР
+БУГАРИН МАРИЈА
+БУГАРИН МИЛОШ
+БУГАРИН МИЛОРАД
+БУГАРИН РАДИСЛАВ
+БУГАРИН РАДОСЛАВ
+БУГАРИН СИНИША
+БУГАРИН СПАСОЈЕ
+БУГАРИН СТЕВАН
+БУГАРИН ВЕЛИБОР
+БУГАРИН ВЕСНА
+БУГАРИН ЗОРАН
+БУГАРИН ЗОРИЦА
+БУГАРИНОВИЋ МАРГАРЕТА
+БУГАРИУ ЈУЛИЈАН
+БУГАРСКИ ЖАРКО
+БУГАРСКИ ЖИКА
+БУГАРСКИ ЖИВАН ДИПЛ ИНГ
+БУГАРСКИ ЂОРЂЕ
+БУГАРСКИ ЂОРЂЕ
+БУГАРСКИ ЂУРИЦА
+БУГАРСКИ БОЈАНА
+БУГАРСКИ БРАНКО
+БУГАРСКИ ДИМИТРИЈЕ
+БУГАРСКИ ДИМИТРИЈЕ
+БУГАРСКИ ДРАГАН
+БУГАРСКИ ДРАГИЦА
+БУГАРСКИ ДРАГОЉУБ ДР
+БУГАРСКИ ДРАГОЉУБ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДУШАН ДР
+БУГАРСКИ ДУШАН
+БУГАРСКИ ДУШИЦА
+БУГАРСКИ ДУШИЦА
+БУГАРСКИ ДУШКО
+БУГАРСКИ ЕВИЦА
+БУГАРСКИ ЈОВАН
+БУГАРСКИ ЈУЛКА
+БУГАРСКИ КАТА
+БУГАРСКИ КРСТА
+БУГАРСКИ КСЕНИЈА
+БУГАРСКИ ЛАЗАР
+БУГАРСКИ ЛАЗАР
+БУГАРСКИ МИЛАН
+БУГАРСКИ МИЛАН
+БУГАРСКИ МИЛЕНА
+БУГАРСКИ МИЛЕНКО
+БУГАРСКИ МИЛЕТА
+БУГАРСКИ МИЛИЦА
+БУГАРСКИ МИЛОРАД
+БУГАРСКИ МИРА
+БУГАРСКИ МИРЈАНА
+БУГАРСКИ МИРЈАНА
+БУГАРСКИ МИРОСЛАВА
+БУГАРСКИ МИРОСЛАВ
+БУГАРСКИ НАДА
+БУГАРСКИ НЕДЕЉКО
+БУГАРСКИ НИКОЛА
+БУГАРСКИ ОЛИВЕРА
+БУГАРСКИ ПАЈА
+БУГАРСКИ ПАВЛЕ
+БУГАРСКИ РАДОСЛАВ
+БУГАРСКИ РАСТКО
+БУГАРСКИ РАТОМИР
+БУГАРСКИ САВА
+БУГАРСКИ САВА
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СОФИЈА
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СВЕТЛАНА
+БУГАРСКИ ТАТЈАНА
+БУГАРСКИ ВОЈИСЛАВА
+БУГАРСКИ ВОЈИСЛАВ
+БУГАРСКИ ВОЈИСЛАВ
+БУГАРСКИ ЗОРА
+БУГЕЉ ИВАН
+БУХА БРАНКА
+БУХА РАДИВОЈЕ
+БУХА ВУКАШИН
+БУХМИЛЕР АГНЕШ
+БУХМИЛЕР АТИЛА
+БУХМИЛЕР ЕВА
+БУХМИЛЕР ЈОСИП
+БУХМИЛЕР ЈОСИП
+БУХМИЛЕР КАРЛО
+БУИША МИЛИНКО
+БУИЛА АНА
+БУИЛА ИРИНЕЈ
+БУИЛА ЉУБИЦА
+БУИЛА МАКСИМИЛИЈАН
+БУИЛА МИРОСЛАВ
+БУИЛА СЛАВИЦА
+БУИЛА СЛАВОМИР
+БУЈАК ЕМИЛ
+БУЈАК МАТИЛДА
+БУЈАК САВА
+БУЈАНДРИЋ АНЂЕЛКА
+БУЈАНДРИЋ ЈОВАН
+БУЈАНДРИЋ ЉУБИЦА
+БУЈАНДРИЋ МАРИЈА
+БУЈАНДРИЋ МИЛИВОЈ
+БУЈАНДРИЋ МИТАР
+БУЈАНДРИЋ НИКОЛА
+БУЈАНДРИЋ ПАВЛЕ
+БУЈАНДРИЋ ПЕТАР
+БУЈАНДРИЋ СВЕТОЗАР
+БУЈАНДРИЋ ВЛАДИМИР
+БУЈАС МИЛЕНКО
+БУЈАС ВЕНЧЕСЛАВ
+БУЈДОША СТЕВАН
+БУЈДОШИК БОХОМИЛ
+БУЈДОШИК КЛАРА
+БУЈДОШИК МИРОСЛАВ
+БУЈДОШО ИШТВАН
+БУЈИШИЋ ЖИВКО
+БУЈИЋ БОРИВОЈЕ
+БУЈЛА ЕТЕЛКА
+БУЈЛА ЈАСМИНА
+БУЈНОВИЋ ЂОРЂЕ
+БУЈНОВИЋ МИЛИНКО
+БУКАЛОВ ЗОРА
+БУКАРА ДУШАНКА
+БУКАРИЦА ДАНИЦА
+БУКАРИЦА ЈОВАН
+БУКАТКА АНДРЕЈ
+БУКАТКА РАДОСЛАВ
+БУКАТКО ВЛАДИМИР
+БУКАТКОВ ИВАН
+БУКИЋ ЈАКОВ
+БУКИЛИЋ ДРАГА
+БУКИЛИЋ ДРАГИЦА
+БУКИН НИКОЛА ДИПЛ ИНГ
+БУКИНАЦ ЂОРЂЕ
+БУКИНАЦ БИЉАНА
+БУКИНАЦ БОГУМИЛА
+БУКИНАЦ ДИНА
+БУКИНАЦ ГЛИГОРИЈЕ
+БУКИНАЦ ИВАН
+БУКИНАЦ ЈУЛКА
+БУКИНАЦ ЛАЗАР
+БУКИНАЦ МИЛАДИН
+БУКИНАЦ МИЛАН
+БУКИНАЦ МИЛИЦА
+БУКИНАЦ МИЛОСАВА
+БУКИНАЦ МИРКО
+БУКИНАЦ МИРОСЛАВ
+БУКИНАЦ РУЖИЦА
+БУКИНАЦ СЛАВКО
+БУКИНАЦ СТАНКА
+БУКИНАЦ СТЕВАН
+БУКИНАЦ УРОШ
+БУКОВЧАНИН АЦА
+БУКОВАЧКИ МИОДРАГ
+БУКОВАЧКИ ПЕРА
+БУКОВАЧКИ СВЕТОЗАР
+БУКОВАЦ АНКИЦА
+БУКОВАЦ АТИЛА
+БУКОВАЦ СТЕВАН
+БУКОВАЦ ВЛАДО
+БУКОВАЛА ДЕСАНКА
+БУКОВИЧАНИН РЕЉА
+БУКОВИЋ АНДРАШ
+БУКОВИЦА ДИМИТРИЈЕ
+БУКОВИЦА РАНКО
+БУКТА НАДА
+БУКТА ЗВОНКО
+БУКУМИРОВИЋ МИЛОМИР
+БУКУМИРОВИЋ МИЛОРАД ДИПЛ ИНГ
+БУКУРЕЦКИ БРАНИСЛАВ
+БУКУРЕЦКИ СИНИША
+БУКУРИЋ ТАТЈАНА
+БУКУРОВ ЖАРКО
+БУКУРОВ ЖИВАН
+БУКУРОВ ЖИВАН
+БУКУРОВ БОШКО
+БУКУРОВ БРАНИСЛАВ ДР ПРОФ
+БУКУРОВ КСЕНИЈА
+БУКВА ВЕЛИМИР
+БУКВИЋ ЖЕЉКА
+БУКВИЋ АЛЕКСАНДАР
+БУКВИЋ БРАНКО
+БУКВИЋ БУДЕ
+БУКВИЋ ДАНЕ
+БУКВИЋ ДАНИЛО
+БУКВИЋ ДАНИЛО
+БУКВИЋ ДРАГАН
+БУКВИЋ ДУШАН
+БУКВИЋ ИЛИЈА
+БУКВИЋ ИЛИНКА
+БУКВИЋ ЈАНКО
+БУКВИЋ ЈЕЛИСАВЕТА
+БУКВИЋ ЈОВАН
+БУКВИЋ КОВИЉКА
+БУКВИЋ ЉУБОМИР
+БУКВИЋ МАРИЈА
+БУКВИЋ МАРИНКО
+БУКВИЋ МИЛЕНКО
+БУКВИЋ МИЛКА
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОРАД
+БУКВИЋ МИРОСЛАВ
+БУКВИЋ МЛАДЕН
+БУКВИЋ НОВИЦА
+БУКВИЋ РАДОВАН
+БУКВИЋ СЛАВИЦА
+БУКВИЋ СОФИЈА
+БУКВИЋ СТЕВАН
+БУКВИЋ СВЕТОЗАР
+БУКВИЋ ТОМИСЛАВ
+БУКВИЋ ВЕЛИМИР
+БУКВИЋ ВЛАДО
+БУЛАИЋ РЕЉА
+БУЛАЈИЋ ЂУРО
+БУЛАЈИЋ ДАНИЦА
+БУЛАЈИЋ МИОДРАГ
+БУЛАЈИЋ НАТАЛИЈА
+БУЛАЈИЋ НЕДЕЉКО
+БУЛАЈИЋ ВЛАДИМИР
+БУЛАКИЋ ВУКАШИН
+БУЛАТОВИЋ АЛЕКСАНДАР
+БУЛАТОВИЋ БРАНИСЛАВ
+БУЛАТОВИЋ ДИМИТРИЈЕ
+БУЛАТОВИЋ ДРАГАН
+БУЛАТОВИЋ ДРАГАН
+БУЛАТОВИЋ ДУШАНКА
+БУЛАТОВИЋ ДУШАН
+БУЛАТОВИЋ ГРАДИМИР
+БУЛАТОВИЋ ИЛИЈА
+БУЛАТОВИЋ МИЛАДИН
+БУЛАТОВИЋ МИЛИЈАНА
+БУЛАТОВИЋ МИЛИНКО
+БУЛАТОВИЋ МИЛУТИН
+БУЛАТОВИЋ МОМИР
+БУЛАТОВИЋ НИКОЛА
+БУЛАТОВИЋ НИКОЛА
+БУЛАТОВИЋ НОВАК
+БУЛАТОВИЋ ПАВЛЕ
+БУЛАТОВИЋ ПЕРО
+БУЛАТОВИЋ ПРЕДРАГ
+БУЛАТОВИЋ РАДМИЛО
+БУЛАТОВИЋ РАДОЊА
+БУЛАТОВИЋ САВА
+БУЛАТОВИЋ СЛАЂАНА
+БУЛАТОВИЋ СПАСА
+БУЛАТОВИЋ СВЕТОЗАР
+БУЛАТОВИЋ ВОЈИН
+БУЛАТОВИЋ ВОЈИСЛАВ
+БУЛАТОВИЋ ЗЛАТИЈА
+БУЛАТОВИЋ ЗОРАН
+БУЛЕТИНАЦ МИЛОВАН
+БУЛЕВСКА ВЕРА
+БУЛИЋ ШУЋО
+БУЛИЋ АДИЛА
+БУЛИЋ АНТЕ
+БУЛИЋ АРИФ
+БУЛИЋ БОРИС
+БУЛИЋ ДРАГАН
+БУЛИЋ ДРАГОЉУБ
+БУЛИЋ ДУШАН
+БУЛИЋ МАРА
+БУЛИЋ МАРИЈА
+БУЛИЋ МАРИНА
+БУЛИЋ ОЗРЕН
+БУЛИЋ ПЕРСА
+БУЛИЋ ПЕТАР
+БУЛИЋ ПРЕДРАГ
+БУЛИЋ СМИЉА
+БУЛИЋ СТЕВАН
+БУЛИЋ ТОМИСЛАВ
+БУЛИК-ИЛЕАНА ДОРИНА
+БУЉ ЂУРА
+БУЉ БОСИЛЈКА
+БУЉ МИЛАН
+БУЉЧИК ЕУГЕН
+БУЉЧИК ЈОАКИМ
+БУЉЧИК МИХАЈЛО
+БУЉЧИК НИКОЛА
+БУЉЧИК ПАУЛИНА
+БУЉАК РАТКО
+БУЉАН ДРАГУТИН ДИПЛ ИНГ
+БУЉАН ПЕТАР
+БУЉАН СЛАВИЦА
+БУЉИЋ ИЛИЈА
+БУЉИЋ ЈЕЛЕНА
+БУЉИЋ ЈОВАН
+БУЉИЋ ЉУБИЦА
+БУЉИЋ МИЛАН
+БУЉИЋ МИЛЕ
+БУЉИЋ НОВАК
+БУЉИЋ ПАВО
+БУЉИЋ РАДОВАН
+БУЉИЋ СЕКУЛА
+БУЉИЋ СНЕЖАНА
+БУЉИЋ СТЕВА
+БУЉИЋ ВАСО
+БУЉИН БРАНКО
+БУЉИН СЛАВКО
+БУЉИН ТОМИСЛАВ
+БУЉОВЧИЋ СТИПАН
+БУЉУГИЋ РАДОЈЕ
+БУЛОВАН БРАНИСЛАВ
+БУЛОВИЋ ИРИНЕЈ
+БУЛУМ ПЕТАР
+БУЛУТ АНЂЕЛКО
+БУЛУТ НОВИЦА
+БУМБ АНТОН
+БУМБАРОСКИ РАДА
+БУМБИЋ МИЛАДИН ДР
+БУМБИЋ РАДМИЛА
+БУМБИЋ РАЈКО
+БУМБИЋ ВЕЉКО
+БУМБИЋ ВЕЉКО
+БУНЧИЋ ЂОРЂЕ
+БУНЧИЋ АЛЕКСАНДАР
+БУНЧИЋ АЛЕКСАНДАР
+БУНЧИЋ ДРАГАН
+БУНЧИЋ МАРИЈАНА
+БУНЧИЋ МИЛАН
+БУНАЈ МУХАМЕД
+БУНДАЛЕСКИ МИЛОШ
+БУНДАЛО БРАНКО
+БУНДАЛО НЕБОЈША
+БУНДАЛО НИКОЛА
+БУНДАЛО СЛАВКО
+БУНДАЛО СЛОБОДАН
+БУНДАЛО СЛОБОДАН
+БУНДИЋ АНТУН
+БУНЕТА АЛЕКСАНДАР
+БУНЕТА МИЛАН
+БУНЕТА СНЕЖАНА
+БУНЕТА ВУКОСАВА
+БУНИЋ ДРАГАН
+БУНИЋ МИЛАН
+БУЊАЦ ВАСО
+БУЊАЦ ВОЈИСЛАВ
+БУЊЕВЧЕВ ЂОРЂЕ
+БУЊЕВЧЕВ АЛЕКСАНДАР
+БУЊЕВЧЕВ СРЂАН
+БУЊЕВАЧКИ ЖИВОЈИН
+БУЊЕВАЧКИ БРАНКО
+БУЊЕВАЧКИ ДРАГИЊА
+БУЊЕВАЧКИ ЈОВАНКА
+БУЊЕВАЧКИ ЉУБИЦА
+БУЊЕВАЧКИ МИЛЕНА
+БУЊЕВАЧКИ ВОЈИСЛАВ
+БУЊИК ШАНДОР
+БУЊИК ДРАГИЦА
+БУЊИК ИВАН
+БУЊИК ЈОСИП
+БУЊИК КАРОЉ
+БУЊИК ЗОЛТАН
+БУЊИК ЗОЛТАН
+БУНОВИЋ ДРАГУТИН
+БУНОВИЋ ЛАЗАР
+БУНТ МИЈО
+БУРЧЕР ТОМИСЛАВ
+БУРШИЋ ТИНКА
+БУРАИ АЛЕКСАНДАР
+БУРАИ АНДРАШ
+БУРАИ КАРОЉ
+БУРАИ КАТИЦА
+БУРАИ ПЕТАР
+БУРАЈИ ЈОСИП
+БУРАЊ БЕЛА ДР ЛЕКАР
+БУРАЊ ЕНДРЕ
+БУРАЊ МАРТА
+БУРАЊ НАНДОР
+БУРАЊ СИДОНИЈА
+БУРАЊИ МАРИЈА
+БУРАЊИ НАНДОР
+БУРАЗОР ДРАГОЈА
+БУРАЗОР ЗДРАВКО
+БУРБАХ ГЕРХАРД
+БУРБАН ФИЛИП
+БУРДА МЕЛИНДА
+БУРДА СТАНИСЛАВ
+БУРЕВИЋ МИЛИЋ
+БУРГИЋ ДРАГОЈЕ
+БУРГИЋ ЈОВАН
+БУРГИЋ ПЕТАР
+БУРГИЈАШЕВ ВЕСЕЛИН
+БУРИЋ ЂОКО ДИПЛ ИНГ
+БУРИЋ ДИМИТРИЈЕ
+БУРИЋ ДУШАН ДР
+БУРИЋ ДУШАНКА
+БУРИЋ ФРАЊА
+БУРИЋ ГОРДАНА
+БУРИЋ КАТИЦА
+БУРИЋ КОСТА
+БУРИЋ ЛЕОНОРА
+БУРИЋ МИЛИВОЈЕ
+БУРИЋ НАДА
+БУРЈАН ЂОРЂЕ
+БУРЈАНОВСКИ СТОЈАН
+БУРКА ЕЛЕОНОРА ДР
+БУРКА ЕМИЛИЈА
+БУРКА ЕРЖЕБЕТ
+БУРКА ЈОВАН
+БУРКА МИРОСЛАВ
+БУРКА ПАВЛЕ
+БУРКА ПЕТАР
+БУРКА СОФИЈА
+БУРКА СТЕВАН
+БУРКА СТЕВАН
+БУРКЕРТ ЕДВИН
+БУРКИН ЖИВАН
+БУРКИН ЂОКА
+БУРЛАК НАТАЛИЈА
+БУРМАЈА НИКОЛА
+БУРМУЏИЈА БРАНКО
+БУРМУЏИЈА МИЛАН
+БУРМУЏИЈА НИКОЛА
+БУРНАЋ ФЕЛИКС
+БУРНАЋ ЈЕЛИСАВЕТА
+БУРНАЋ СТЕВАН
+БУРНАЋ ВЛАДИМИР
+БУРНОВ ИВАНА
+БУРНОВ ИВАН
+БУРНОВ ВЕСЕЛИНКА
+БУРОВАЦ НАДА
+БУРСАЋ ДАРИНКА
+БУРСАЋ ДРАГОСЛАВА ДИПЛ ПРАВНИК
+БУРСАЋ ЈОВАН
+БУРСАЋ ЉУБОМИР
+БУРСАЋ МИЛАНКА
+БУРСАЋ МИЛАН
+БУРСАЋ МИЛИЦА
+БУРСАЋ МИЛОРАД
+БУРСАЋ МИРКО
+БУРСАЋ НИКОЛА
+БУРСАЋ ПЕРА
+БУРСАЋ ПЕРСА
+БУРСАЋ СЛОБОДАН
+БУРСАЋ СЛОБОДАН
+БУРСАЋ ВЈЕКОСЛАВА
+БУРСАЋ ВЛАДО ДИПЛ ПРАВНИК
+БУРСИЋ СТЕВАН
+БУРСИЋ ВЛАДИМИР
+БУРУШ АЛЕКСАНДРА
+БУРУШ БОШКО
+БУРУМЏИЈА РАДЕ
+БУРЗАН МИРЈАНА
+БУРЗЕЛИЋ МИЛКА
+БУРЗЕЛИЋ ЗЛАТА
+БУСАРЧЕВИЋ СЛАВИЦА
+БУСАРЧЕВИЋ СТЕВАН
+БУСИЈА ЉУБИНКА
+БУСИЈА МИЛАН
+БУСОВ АЛЕКСИЈЕ ДИПЛ ИНГ
+БУСОВ ИГОР
+БУСУЛАЏИЋ МУСТАФА
+БУТА ЛАЗАР
+БУТА ВОЈИСЛАВ ДР
+БУТАШ ФЕРЕНЦ
+БУТЕР КСЕНИЈА
+БУТЕРЕР ИШТВАН
+БУТЕРЕР ЈУЛИЈА
+БУТЕРИН ДЕША
+БУТОР АЛЕКСАНДАР
+БУТОР ЕНДРЕ
+БУТОР МИХАЈЛО
+БУТОРАЦ ЈОСИП
+БУТОРАЦ МАРИЈА
+БУТОРАЦ ЗОРАН
+БУТУЛИЈА БРАНИСЛАВ
+БУТУРОВИЋ РАТКО
+БУТУРОВИЋ СВЕТОЗАР
+БУЗА ИРЕНА
+БУЗА КОРНЕЛИУ
+БУЗА МИХАЉ
+БУЗАШ ШАНДОР
+БУЗАШ ЈОСИП
+БУЗАШ ЈОСИП
+БУЗАШ ЛАЈОШ
+БУЗАШ ПАВАО
+БУЗАШ ПАВЛЕ
+БУЗАШИ ЈОСИП
+БУЗАШИ МИХАЈЛО
+БУЗАЏИЋ ЉИЉАНА
+БУЗАЏИЋ МИРЈАНА
+БУЗАЏИЈА НЕНАД
+БУЗАЏИЈА НОВАК
+БУЗАЉКО ЈУСУФ ДИПЛ ИНГ
+БУЗАНЧИЋ ЈОСИП
+БУЗАНЧИЋ НАДЕЖДА
+БУЗАНСКИ МИША
+БУЗАРЕВИЋ БРАНКО
+БУЗАРЕВИЋ РАДОЈКА
+БУЗАРЕВИЋ РУЖА
+БУЗАРОВ ЖИВАН
+БУЗАРОВ ЈОВАН
+БУЗАРОВ ЗОРА
+БУЗАРСКИ ЂОРЂЕ
+БУЗГО ЈАНОШ
+БУЗОГАЊ МАРИЈА
+ЦАЦКО МАРИЈА
+ЦАЈИЋ МИЛОШ
+ЦАЈНЕР ЈЕЛЕНА
+ЦАЈНЕР ЉУБИЦА
+ЦАЈНЕР СТЕВАН
+ЦАЈНЕР СТЕВА
+ЦАКИЋ ДУШАНКА
+ЦАКИЋ ГОРДАНА
+ЦАКИЋ ЈЕЛЕНКО
+ЦАКИЋ МИРОСЛАВ
+ЦАКИЋ ПЕТАР
+ЦАКИЋ СТЕВАН
+ЦАНДИР ФРАЊА
+ЦАНИЋ ЉИЉАНА
+ЦАНИЋ ВЕЛИМИР
+ЦАП ЂУРА
+ЦАП БОШКО
+ЦАП ЈОАКИМ
+ЦАП ЈОВАН
+ЦАП НЕНАД
+ЦАП НЕНАД
+ЦАП РАДОЈКА
+ЦАП ТАМАРА
+ЦАПАР-ЈАНКОВИЋ ВАЛЕРИЈА
+ЦАПАР ЈАНОШ
+ЦАПАР ЈОВАН
+ЦАПАР МАРИЈА
+ЦАПАР МАРИЈА
+ЦАПИК ЈОСИП
+ЦАПИК ЉУДЕВИТ
+ЦАР МАРИЈА
+ЦАРАН БОШКО
+ЦАРАН ГЕОРГЕ
+ЦАРАН ПЕРСА
+ЦАРАН ПЕТАР
+ЦАРАНОВИЋ СТАНОЈЕ
+ЦАРЕВИЋ ЖИВАН
+ЦАРЕВИЋ ЖИВКА
+ЦАРЕВИЋ ЂОРЂЕ
+ЦАРЕВИЋ ДУШАН
+ЦАРЕВИЋ ЕСТЕР
+ЦАРЕВИЋ КАТИЦА
+ЦАРЕВИЋ МИХАЈЛО
+ЦАРЕВИЋ МИЛЕНА
+ЦАРЕВИЋ МИЛЕ
+ЦАРЕВИЋ НАДА
+ЦАРЕВИЋ ПЕТАР
+ЦАРЕВИЋ САВА
+ЦАРЕВИЋ СЛАВКО
+ЦАРЕВИЋ СЛАВКО
+ЦАРЕВИЋ СТЕВАН
+ЦАРЕВИЋ СВЕТОЗАР
+ЦАРИЧИЋ СЛАВКО
+ЦАРИЋ АНДРИЈА
+ЦАРИЋ БРАНКО
+ЦАРИЋ ГОЈКО
+ЦАРИЋ ЛАЗАР
+ЦАРИЋ МАРИЈА
+ЦАРИЋ МИРЈАНА
+ЦАРИЋ СЛАВКО ДР ПРОФ
+ЦАРИЋ СЛОБОДАН ДР
+ЦАРИЋЕВИЋ МИЛЕНКО
+ЦАРО ГОРАН
+ЦАТИЋ ЛАЗАР
+ЦАВНИЋ МАРТА
+ЦАВНИЋ СВЕТЛАНА
+ЦАЗИН ДРАГАН
+ЦЕ ПАВЛЕ
+ЦЕЦЕЛ МАРИЈА
+ЦЕГЛЕДИ ЂУРО
+ЦЕХОЛА ФЕРЕНЦ
+ЦЕКИЋ БОРИСЛАВ
+ЦЕКИЋ БОРИВОЈЕ
+ЦЕКИЋ БОРКО
+ЦЕКИЋ ЈУЛКА
+ЦЕКИЋ ПЕТАР
+ЦЕКИЋ РАДМИЛА
+ЦЕКУШ ЕВА
+ЦЕЛИЋ БРАНКО
+ЦЕЛИН МИЛАН
+ЦЕЛИН МИЛАН
+ЦЕНАЈ ТАХИР
+ЦЕНДЕР АНГЕЛИНА
+ЦЕНИЋ МИЛОВАН
+ЦЕП СТЕВАН
+ЦЕПФ СТЕВАН
+ЦЕРГОЛ ВИДОСАВА
+ЦЕРИЋ ДАНИЦА
+ЦЕРИЋ МЕХМЕД
+ЦЕРНА РУДОЛФ
+ЦЕРОВАЦ ЗОРКА
+ЦЕРОВИЋ БАТРИЋ
+ЦЕРОВИЋ БОГДАН
+ЦЕРОВИЋ БОЈАНА
+ЦЕРОВИЋ ДАРИНКА
+ЦЕРОВИЋ ИКОНИЈА
+ЦЕРОВИЋ ЉУБИВОЈЕ
+ЦЕРОВИЋ МИШО
+ЦЕРОВИЋ НЕНАД
+ЦЕРОВИЋ НОВАК
+ЦЕРОВИЋ ПЕТАР
+ЦЕРОВИЋ СЛОБОДАН
+ЦЕРОВИЋ СРЕТЕН
+ЦЕРОВИЋ ТОМИСЛАВ
+ЦЕРОВИЋ УРОШ
+ЦЕРОВСКИ ДАНИЈЕЛ
+ЦЕСНАК ЈАНКО
+ЦЕСНАК ПАВЛЕ
+ЦЕСНАК ЗЛАТКО
+ЦЕТЕЊИ ЈОВАН
+ЦЕТИНА ЈОВАН
+ЦЕТИНА ЉИЉАНА
+ЦЕВЦ ФРАЊА
+ЦЕВЦ СОЊА
+ЦИБРИЋ ТОДОР
+ЦИБУЛА ЂУРА
+ЦИБУЛА БЕЛА
+ЦИБУЛА ЈАНКО
+ЦИБУЛА ЈОВАН
+ЦИБУЛА ЈОВАН
+ЦИБУЛА МАРЈЕНКА
+ЦИБУЛА МИША
+ЦИБУЛА ПЕРА
+ЦИЦЕРИ ФЕРЕНЦ
+ЦИЦЕРИ КАРОЉ
+ЦИЦЕРИ ЛАСЛО
+ЦИЦЕРИ МАТИЛДА
+ЦИЦЕРИ ПЕРА
+ЦИЦЕРИ ВИНКО
+ЦИЦКА ШЋЕФАН
+ЦИЦКА ЈАН
+ЦИЦМИЛ БОЖИДАР
+ЦИЦМИЛ БРАНКО
+ЦИЦМИЛ КРСТО
+ЦИЦМИЛ МАРИЈА
+ЦИЦМИЛ МАРКО
+ЦИЦМИЛ МИЛАН
+ЦИЦМИЛ СТОЈАН
+ЦИЦМИЛ ТАТЈАНА
+ЦИЦМИЛ ЗОРАН
+ЦИЦМИЛОВИЋ ДРАГАН
+ЦИЦМИЛОВИЋ ЗОРКА
+ЦИЦО ДУШАН
+ЦИЦВАРИН ЉУБОМИР
+ЦИФРИЋ ГАЛИБ
+ЦИГАН АНТУН
+ЦИГАН ИВАН
+ЦИГАЊ ЈОСИП
+ЦИГАНОВИЋ БРАНКО
+ЦИГАНОВИЋ ДАНЕ
+ЦИГАНОВИЋ ДУШАН
+ЦИГАНОВИЋ МИЛОРАД
+ЦИГАНОВИЋ ОСТОЈА
+ЦИГАНОВИЋ РАЈКО
+ЦИГАНОВИЋ СТЕВО
+ЦИГИЋ ИВАН
+ЦИГЛЕР СНЕЖАНА
+ЦИГЉЕЦКИ ФРАЊА
+ЦИГЉЕЦКИ ВЕРА
+ЦИКОРА ЖУЖАНА
+ЦИКОТА ЖЕЉКО
+ЦИКОТА ОЛГА
+ЦИКОТА СЛАВКО
+ЦИКУША ЈОВАН
+ЦИКУША ЗОРАН
+ЦИМБАЛ АЛЕКСАНДАР
+ЦИМБАЛ АЛЕКСАНДАР
+ЦИМБАЛ ТИБОР
+ЦИМБАЛ ВЕРИЦА
+ЦИМБАЉЕВИЋ ЗЛАТАНА
+ЦИМЕРМАН ЛАДИСЛАВ
+ЦИМЕРМАН СМИЉА
+ЦИНЦОВИЋ ЖИВКА
+ЦИНДЕР ВИДА
+ЦИНДРИЋ ЂОРЂЕ
+ЦИНДРИЋ ЕРЖЕБЕТ
+ЦИНДРИЋ ПЕТАР ДР
+ЦИНГАРА АЛЕКСАНДАР
+ЦИНГЕЛИ МИЛЕНА
+ЦИНГИ КАРЛО
+ЦИНКЛЕР ЈЕЛИСАВЕТА ДИПЛ ИНГ
+ЦИНКЛЕР ЈУЛИЈЕ
+ЦИНКЛЕР КАЛМАН ДИПЛ ИНГ
+ЦИНКЛЕР КАЛМАН ДИПЛ ИНГ
+ЦИНКЛЕР КАЛМАН
+ЦИНКЛЕР МАГДОЛНА
+ЦИНКОЦКИ ЂОРЂЕ
+ЦИНКОЦКИ ВОЈИСЛАВ
+ЦИПРУШ АЛЕКСАНДРА
+ЦИРБУС МАРИЈА
+ЦИРГЕР ДУШАНКА
+ЦИРОК ШАНДОР
+ЦИТКОВИЋ ИВКА
+ЦИТКОВИЋ СЛОБОДАН
+ЦИВРИЋ МИЛКА
+ЦМИЉАНОВИЋ ДРАГИША
+ЦОЦЕК ШТЕФАНИЈА
+ЦОЦЕК ИМРЕ
+ЦОЦЕК ЈОСИП
+ЦОЦЕК СТЕВАН
+ЦОЦИН МИРА
+ЦОЦО ВАХДЕТА
+ЦОЛИЋ БОЖИДАР
+ЦОЛИЋ БОГОСАВ
+ЦОЛИЋ ФРАЊА
+ЦОЛИЋ ЈОСИП
+ЦОЛИЋ КАТИЦА
+ЦОЛИЋ ЛАДИСЛАВ
+ЦОЛИЋ СВЕТЛАНА
+ЦОНИЋ ДРАГИЊА
+ЦОНИЋ ЈАНКО МР ИНГ
+ЦОНИЋ МИОДРАГ
+ЦОПКОВ ЖЕЉКО
+ЦРЕПИЋ ЛАДИСЛАВ
+ЦРЕПУЛИЋ ВИДОСАВА
+ЦРЕПУЉА ТОДОР
+ЦРЕВАР БОГДАН
+ЦРЕВАР МИЛУТИН ДИПЛ ИНГ
+ЦРЕВАР СИМА
+ЦРЕВАР СЛАВКО
+ЦРКВЕЊАКОВ ДАНИЦА
+ЦРКВЕЊАКОВ ДУШАНКА
+ЦРКВЕЊАКОВ СУЛТАНИЈА
+ЦРНЧЕВИЋ ДАРИНКА
+ЦРНЧЕВИЋ МИРКО
+ЦРНЧЕВИЋ МИРКО
+ЦРНЧЕВИЋ НЕДЕЉКА
+ЦРНЧЕВИЋ СЛАВКО
+ЦРНЧЕВИЋ ВЕРА
+ЦРНЧЕВИЋ ВЛАДО
+ЦРНАДАК ВЛАТКО
+ЦРНИ ВЕРИЦА
+ЦРНИ ЗОРИЦА
+ЦРНИЋ БРАНКА
+ЦРНИЋ ДРАГАН
+ЦРНИЋ ГОРАН
+ЦРНИЋ МАРКО
+ЦРНИЋ МИЛАН
+ЦРНИЋ МИЛУТИН
+ЦРНИЋ НИКОЛА
+ЦРНИЋ ОСТОЈА
+ЦРНИЋ РАДОМИР
+ЦРНИЋ СОФИЈА
+ЦРНИЋ УГЉЕША
+ЦРНИЋ ВАСА
+ЦРНИЋ ВЕРА
+ЦРЊАЦ МИЛЕНА
+ЦРЊАК ЖИВАНКА
+ЦРЊАКОВ ДИМИТРИЈЕ
+ЦРЊАНИН БРАНИСЛАВА
+ЦРЊАНИН ЗАГОРКА
+ЦРЊАНСКИ-ЧЕНГЕРИ КРИСТИНА
+ЦРЊАНСКИ ЖАРКО
+ЦРЊАНСКИ ЂОКА
+ЦРЊАНСКИ БУДИМКА
+ЦРЊАНСКИ ИВАН
+ЦРЊАНСКИ ЈЕЛЕНА
+ЦРЊАНСКИ КАТИЦА
+ЦРЊАНСКИ КУЗМАН
+ЦРЊАНСКИ ЛАЗАР
+ЦРЊАНСКИ РАДИВОЈ
+ЦРЊАНСКИ САЊА
+ЦРЊАНСКИ СТЕВАН
+ЦРЊАНСКИ ВЛАДИМИР
+ЦРЊАНСКИ ЗОРАН
+ЦРЊАНСКИ ЗОРАН
+ЦРНКОВИЋ НИКОЛА
+ЦРНКОВИЋ-САВИЋ ЉИЉАНА
+ЦРНКОВИЋ ЗЛАТА
+ЦРНОБАРАЦ ДУШАН
+ЦРНОБАРАЦ ЈОВАН
+ЦРНОБРЊА МИЛАН
+ЦРНОБРЊА МИРЈАНА
+ЦРНОБРЊА ПЕТАР
+ЦРНОГЛАВАЦ МИХАЈЛО
+ЦРНОГЛАВАЦ РАДОСЛАВ
+ЦРНОГОРЧЕВИЋ ЈЕЛИЦА
+ЦРНОГОРАЦ ЂОКО
+ЦРНОГОРАЦ БОРИША
+ЦРНОГОРАЦ БОСИЉКА
+ЦРНОГОРАЦ ДРАГАН
+ЦРНОГОРАЦ ДРАГОЉУБ
+ЦРНОГОРАЦ ДУШАН
+ЦРНОГОРАЦ МИЛАН
+ЦРНОГОРАЦ МИЛКА
+ЦРНОГОРАЦ МИЛОСАВ
+ЦРНОГОРАЦ МИРОСЛАВ
+ЦРНОГОРАЦ ПАВЛЕ
+ЦРНОГОРАЦ СЛОБОДАН
+ЦРНОГОРАЦ СВЕТЛАНА
+ЦРНОГОРАЦ ВЕЛИМИР ДР
+ЦРНОГОРАЦ ЗДРАВКО
+ЦРНОГОРАЦ ЗОРИЦА
+ЦРНОЈА АНТЕ
+ЦРНОЈА СЛАВИЦА
+ЦРНОЈАЧКИ БОГДАН
+ЦРНОЈАЧКИ ДАНИЦА ДР
+ЦРНОЈАЧКИ ДАНИЛО
+ЦРНОЈАЧКИ ДРАГАН
+ЦРНОЈАЧКИ ДРАГОМИР
+ЦРНОЈАЧКИ ГОРДАНА
+ЦРНОЈАЧКИ ЈОВАН
+ЦРНОЈАЧКИ КАТИЦА
+ЦРНОЈАЧКИ МИЛЕНА ДР
+ЦРНОЈАЧКИ МИЛОШ
+ЦРНОЈАЧКИ МЛАДЕН
+ЦРНОЈАЧКИ ОБРАД
+ЦРНОЈАЧКИ ОБРАД
+ЦРНОЈАЧКИ РАДМИЛА
+ЦРНОЈАЧКИ СОФИЈА
+ЦРНОЈАЧКИ ВЛАДИМИР
+ЦРНОЈАЧКИ ЗОРИЦА
+ЦРНОКРАК ЈОВАН
+ЦРНОКРАК МИЛОШ
+ЦРНОКРАК СТЕВАН
+ЦРНОМАРКОВИЋ БОГДАН
+ЦРНОМАРКОВИЋ ДУШАН
+ЦРНОМАРКОВИЋ ДУШАН
+ЦРНОМАРКОВИЋ ГОЈКО
+ЦРНОМАРКОВИЋ ЛУКА
+ЦРНОМАРКОВИЋ НИКОЛА
+ЦРНОМАРКОВИЋ ПЕТАР
+ЦРНОМАРКОВИЋ РАНКО
+ЦРНОМАРКОВИЋ СТОЈАН
+ЦРНОМАРКОВИЋ ВЕРИЦА
+ЦРНОМУТ МИХАЈЛО
+ЦРВЕНИ ЖАРКО
+ЦРВЕНИ АНА
+ЦРВЕНИ БИСЕРКА
+ЦРВЕНИ ДРАГАН
+ЦРВЕНИ МАРКО
+ЦРВЕНИ МИЛАН
+ЦРВЕНИ МИЛЕНКО
+ЦРВЕНИ МИОМИР
+ЦРВЕНИ СИМА
+ЦРВЕНИ СТЕВАН
+ЦРВЕНИ СТЕВАН
+ЦРВЕНКО ЈАНКО
+ЦРВЕНКО МИЛАН
+ЦРВЕНКО РАДОМИР
+ЦРВЕНКОВ БОРИСЛАВ
+ЦРВЕНКОВ МИЛОСАВА
+ЦРВЕНКОВ ПЕТАР
+ЦРВЕНКОВИЋ ЂОРЂЕ
+ЦРВЕНКОВИЋ ЂУРЂИЦА
+ЦРВЕНКОВИЋ ПЕТАР
+ЦРВЕНКОВИЋ РАДЕНКО
+ЦРВЕНКОВИЋ СИНИША ДР
+ЦРВЕНКОВИЋ ВИТОМИР
+ЦУЦАК МИРЈАНА
+ЦУЦАК РАХИМ
+ЦУЦИЋ АЛЕКСАНДАР
+ЦУЦИЋ БОРИСЛАВ
+ЦУЦИЋ ГИНА
+ЦУЦИЋ ЈЕЛКА
+ЦУЦИЋ ЉИЉАНА
+ЦУЦИЋ СТАНА
+ЦУЦИЋ СТАНОЈЛО
+ЦУЦИЋ ВЕРА
+ЦУЦИЋ ВЕСНА
+ЦУЦИЋ ВЛАДИМИР
+ЦУЦОВИЋ РАФЕТ
+ЦУГЛИ ЈОВАН
+ЦУКИЋ РАДА
+ЦУКИЋ РАДОЈИЦА
+ЦУКИЋ СВЕТОЗАР
+ЦУЊАК МИЛУТИН
+ЦУПАЋ СВЕТОМИР ДИПЛ ПРАВНИК
+ЦУПАРИЋ ТОМА
+ЦУРАКОВИЋ МИЛИВОЈЕ
+ЦВЕЈАНОВ ЈЕЛЕНА
+ЦВЕЈАНОВ НЕБОЈША
+ЦВЕЈАНОВ ПРЕДРАГ
+ЦВЕЈАНОВ ВЕЛИБОР
+ЦВЕЈАНОВИЋ КСЕНИЈА
+ЦВЕЈАНОВИЋ ЛАЗАР
+ЦВЕЈАНОВИЋ НАДА
+ЦВЕЈАНОВИЋ НИКОЛА
+ЦВЕЈАНОВИЋ СПОМЕНКА
+ЦВЕЈАНОВИЋ ВИДОСАВА
+ЦВЕЈАНОВИЋ ВОЈИСЛАВ
+ЦВЕЈАНОВИЋ ЗОРИЦА
+ЦВЕЈИЋ ЧЕДОМИР
+ЦВЕЈИЋ ЖАРКО
+ЦВЕЈИЋ ЖИВОЈИН
+ЦВЕЈИЋ ЂОРЂЕ ДР
+ЦВЕЈИЋ ЂУРЂИНКА
+ЦВЕЈИЋ АЛЕКСАНДАР ДР
+ЦВЕЈИЋ АЛЕКСАНДАР
+ЦВЕЈИЋ АЛЕКСАНДАР
+ЦВЕЈИЋ БОЖИДАР
+ЦВЕЈИЋ БОРИВОЈ
+ЦВЕЈИЋ ДРАГАН
+ЦВЕЈИЋ ДРАГОСЛАВ
+ЦВЕЈИЋ ДРАГУТИН
+ЦВЕЈИЋ ИГЊАТ
+ЦВЕЈИЋ ИВАН
+ЦВЕЈИЋ ЈЕЛЕНА
+ЦВЕЈИЋ КАТИЦА
+ЦВЕЈИЋ ЛАЗАР
+ЦВЕЈИЋ МИЛАН
+ЦВЕЈИЋ МИЛАН
+ЦВЕЈИЋ МИЛИСАВ
+ЦВЕЈИЋ МИЛОШ
+ЦВЕЈИЋ МИОДРАГ
+ЦВЕЈИЋ МИРЈАНА
+ЦВЕЈИЋ НАДЕЖДА
+ЦВЕЈИЋ НЕДЕЉКА
+ЦВЕЈИЋ НИКОЛА ДИПЛ ИНГ
+ЦВЕЈИЋ НИКОЛА
+ЦВЕЈИЋ ОЛГА
+ЦВЕЈИЋ ПАВЛЕ
+ЦВЕЈИЋ РАДОСЛАВ
+ЦВЕЈИЋ РАДОВАН
+ЦВЕЈИЋ РУЖИЦА
+ЦВЕЈИЋ СЛАВОЉУБ
+ЦВЕЈИЋ СТЕВАН
+ЦВЕЈИЋ СТЕВАН
+ЦВЕЈИЋ ВЛАДАН
+ЦВЕЈИЋ ЗАГОРКА
+ЦВЕЈИН БОЖА
+ЦВЕЈИН БОЈАНА
+ЦВЕЈИН ДУШАН ДИПЛ ИНГ
+ЦВЕЈИН МАРИЈА
+ЦВЕЈИН МИЛАН
+ЦВЕЈИН МИЛОШ
+ЦВЕЈИН МИРЈАНА
+ЦВЕЈИН НОВАК
+ЦВЕЈИН СЛОБОДАН
+ЦВЕЈИН ТРИВА
+ЦВЕКИЋ МИЛЕТА
+ЦВЕКИЋ ВОЈИН
+ЦВЕКИЋ ЗЛАТИЦА
+ЦВЕРДЕЉ ЈАНКО
+ЦВЕРДЕЉ РУЖА
+ЦВЕРЊАК ЈЕНЕ
+ЦВЕТАНОВИЋ АНИТА
+ЦВЕТАНОВИЋ ДРАГОСЛАВ
+ЦВЕТАНОВИЋ ЈЕЛЕНА
+ЦВЕТАНОВИЋ ЈЕРМИНА ДР ЛЕКАР
+ЦВЕТАНОВИЋ МАГДОЛНА
+ЦВЕТАНОВИЋ РАДИЦА
+ЦВЕТАНОВИЋ СТОЈАДИН
+ЦВЕТАНОВИЋ СТОЈАНКА
+ЦВЕТАНОВИЋ ВЕЉА
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВСКИ МАНОЈЛО
+ЦВЕТАНОВСКИ МИЛЕ
+ЦВЕТИЧАНИН ЉУБИЦА
+ЦВЕТИЧАНИН МИЛКА
+ЦВЕТИЧАНИН ВЕСНА
+ЦВЕТИЧАНИН ЗОРАН
+ЦВЕТИЋ БОШКО
+ЦВЕТИЋ ДРАГОМИР
+ЦВЕТИЋ ЛАЗАР
+ЦВЕТИЋ ЛАЗО
+ЦВЕТИЋ ЉУБИЦА
+ЦВЕТИЋ МАРИЈА
+ЦВЕТИЋ ПЕТАР
+ЦВЕТИЋ СЛАВКО
+ЦВЕТИЋ СТАНКО
+ЦВЕТИЋАНИН БОШКО
+ЦВЕТИЋАНИН БРАНКО
+ЦВЕТИЋАНИН ДАНЕ
+ЦВЕТИЋАНИН ДАНИЦА
+ЦВЕТИЋАНИН ДРАГОМИР
+ЦВЕТИЋАНИН ИЛИЈА
+ЦВЕТИЋАНИН ИРЕНА
+ЦВЕТИЋАНИН МИЛОШ
+ЦВЕТИЋАНИН МИЛОРАД
+ЦВЕТИЋАНИН МИРОСЛАВ
+ЦВЕТИЋАНИН СНЕЖАНА
+ЦВЕТИЋАНИН ЗОРАН
+ЦВЕТИНИЋ МАРКО
+ЦВЕТИНИЋ МАТИЈА
+ЦВЕТИЊАНИН ТОМИСЛАВ
+ЦВЕТИНОВ САВА
+ЦВЕТИНОВИЋ АНКА
+ЦВЕТИНОВИЋ БРАНА
+ЦВЕТИНОВИЋ БРАНКО
+ЦВЕТИНОВИЋ ДИМИТРИЈЕ
+ЦВЕТИНОВИЋ ИЛИЈА
+ЦВЕТИНОВИЋ ИВАНКО
+ЦВЕТИНОВИЋ МИЛАН
+ЦВЕТИНОВИЋ СИМО
+ЦВЕТИНОВИЋ ВЕРА
+ЦВЕТИНОВИЋ ЗОРА
+ЦВЕТКОВ ЈОВАН
+ЦВЕТКОВ МИЛАН ДИПЛ ИНГ
+ЦВЕТКОВ РАДОЈЕ
+ЦВЕТКОВИЋ ЧЕДОМИР
+ЦВЕТКОВИЋ ЖИВОЈИН
+ЦВЕТКОВИЋ ЂОРЂЕ
+ЦВЕТКОВИЋ ЂОРЂЕ
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АНКА
+ЦВЕТКОВИЋ БОЈАНА
+ЦВЕТКОВИЋ БОРА
+ЦВЕТКОВИЋ БОРИСЛАВ
+ЦВЕТКОВИЋ БОРИСЛАВ
+ЦВЕТКОВИЋ БРАНИСЛАВ
+ЦВЕТКОВИЋ БРАНКО
+ЦВЕТКОВИЋ БРАНКО
+ЦВЕТКОВИЋ БУДИМИР
+ЦВЕТКОВИЋ ДАРИНКА
+ЦВЕТКОВИЋ ДЕСИМИР
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГИША
+ЦВЕТКОВИЋ ДРАГОЉУБ
+ЦВЕТКОВИЋ ДРАГОМИР МР
+ЦВЕТКОВИЋ ДРАГОМИР
+ЦВЕТКОВИЋ ДУШАН
+ЦВЕТКОВИЋ ДУШАН
+ЦВЕТКОВИЋ-ГЛАДИЋ СМИЉА
+ЦВЕТКОВИЋ ГРОЗДА
+ЦВЕТКОВИЋ ИЛИЈА
+ЦВЕТКОВИЋ ИВАНКА
+ЦВЕТКОВИЋ ЈЕЛЕНА
+ЦВЕТКОВИЋ ЈЕЛЕНА
+ЦВЕТКОВИЋ ЈЕЛКА
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЛИВИА
+ЦВЕТКОВИЋ ЉИЉАНА
+ЦВЕТКОВИЋ ЉИЉАНА
+ЦВЕТКОВИЋ МЕЛАНИЈА
+ЦВЕТКОВИЋ МИЛАН
+ЦВЕТКОВИЋ МИЛАН
+ЦВЕТКОВИЋ МИЛИЦА
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИРА
+ЦВЕТКОВИЋ МИРЈАНА
+ЦВЕТКОВИЋ МИРОСЛАВ ДР
+ЦВЕТКОВИЋ МИРОСЛАВ
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ ПЕТАР
+ЦВЕТКОВИЋ РАДМИЛА
+ЦВЕТКОВИЋ РАДОЈКО
+ЦВЕТКОВИЋ РАДОСЛАВ
+ЦВЕТКОВИЋ РАДОСЛАВ
+ЦВЕТКОВИЋ РАДОВАН
+ЦВЕТКОВИЋ РАДУЛА
+ЦВЕТКОВИЋ РАТОМИР
+ЦВЕТКОВИЋ РИСТО
+ЦВЕТКОВИЋ РУЖИЦА
+ЦВЕТКОВИЋ СЛАВОЉУБ
+ЦВЕТКОВИЋ СОКА
+ЦВЕТКОВИЋ СРБОБРАН
+ЦВЕТКОВИЋ СТАНКО
+ЦВЕТКОВИЋ СТАНОЈЕ
+ЦВЕТКОВИЋ СТАНОЈЕ
+ЦВЕТКОВИЋ СВЕТОЗАР
+ЦВЕТКОВИЋ ТАТЈАНА
+ЦВЕТКОВИЋ ТОНИ
+ЦВЕТКОВИЋ ВЕЛИМИР
+ЦВЕТКОВИЋ ВЛАДИМИР
+ЦВЕТКОВИЋ ЗОРА
+ЦВЕТКОВСКИ БОРИС
+ЦВЕТКОВСКИ ДРАГОЉУБ
+ЦВЕТКОВСКИ НИКОЛА
+ЦВЕТКОВСКИ ВОЈО
+ЦВЕТОЈЕВИЋ ЉИЉАНА
+ЦВЕТОЈЕВИЋ ЉИЉАНА
+ЦВЕТОЈЕВИЋ МИЛИСАВ
+ЦВЕТОЈЕВИЋ СЛАВКО
+ЦВИЈАН МАРИЈА
+ЦВИЈАН МАРКО
+ЦВИЈАНОВИЋ АНЂА
+ЦВИЈАНОВИЋ АНА
+ЦВИЈАНОВИЋ АНТО
+ЦВИЈАНОВИЋ БОШКО
+ЦВИЈАНОВИЋ БОРО
+ЦВИЈАНОВИЋ ДОБРИЦА
+ЦВИЈАНОВИЋ ДРАГАН
+ЦВИЈАНОВИЋ ДРАГУТИН
+ЦВИЈАНОВИЋ ДУШАНКА
+ЦВИЈАНОВИЋ ИЛИЈА
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛЕВА
+ЦВИЈАНОВИЋ МИРОСЛАВ
+ЦВИЈАНОВИЋ МОМИР
+ЦВИЈАНОВИЋ ПЕТАР
+ЦВИЈАНОВИЋ РАДЕ
+ЦВИЈАНОВИЋ РАНКО
+ЦВИЈАНОВИЋ САВА
+ЦВИЈАНОВИЋ СЛАВКО
+ЦВИЈАНОВИЋ СНЕЖАНА
+ЦВИЈАНОВИЋ ВОЈИСЛАВ
+ЦВИЈАНОВИЋ ЗЛАТА
+ЦВИЈЕТАН МИРКО
+ЦВИЈЕТИЧАНИН ЈОВО
+ЦВИЈЕТИЋ ИГОР
+ЦВИЈЕТИЋ ЈОВО
+ЦВИЈЕТИЋ МИЛЕ
+ЦВИЈЕТИЋ НАДА
+ЦВИЈЕТИНОВИЋ РУЖА
+ЦВИЈЕТИНОВИЋ РУЖИЦА
+ЦВИЈЕТИНОВИЋ СИНИША
+ЦВИЈИЋ ЖЕЉКО
+ЦВИЈИЋ ДРАГАН
+ЦВИЈИЋ ГОРАН
+ЦВИЈИЋ ЈЕЛИСАВА
+ЦВИЈИЋ ЈОВАНКА
+ЦВИЈИЋ МИЛЕНКО
+ЦВИЈИЋ МИОДРАГ
+ЦВИЈИЋ МЛАЂА
+ЦВИЈИЋ НИКОЛА
+ЦВИЈИЋ ПАНТЕ
+ЦВИЈИЋ РУЖИЦА
+ЦВИЈИЋ СТЕВАН
+ЦВИЈИН БРАНКО
+ЦВИЈОВИЋ МИЛЕНКО
+ЦВИЈОВИЋ МИЛИВОЈЕ
+ЦВИЈОВИЋ НЕЂЕЉКА
+ЦВИЈОВИЋ РАДОСАВ
+ЦВИЈОВИЋ ВОЈИН
+ЦВИКИЋ МИХАИЛО
+ЦВИНГ ЈОСИП
+ЦВИТАНОВИЋ СНЕЖАНА
+ЦВИТКО ПЕТАР
+ЦВИТКОВАЦ МАРКО
+ЦВЈЕТАН ОЛГА
+ЦВЈЕТИЋ ИЛИЈА
+ЦВЈЕТИЋАНИН ЖИВКО
+ЦВЈЕТИЋАНИН ГОЈКО
+ЦВЈЕТИЋАНИН СТЕВО
+ЦВЈЕТКОВИЋ МИОДРАГ
+ЦВЈЕТКОВИЋ НЕБОЈША
+ЦВЈЕТОЈЕВИЋ ЧЕДОМИР
+ЦВОРОВИЋ РАДОШ
+ЦВРКАЉ ЂУРО
+ЏАБАСАН ДРАГОЈЕ
+ЏАБИЋ МИЛКА
+ЏАЏИЋ ВУКОСАВА
+ЏАФЕРОВСКИ РЕЂЕП
+ЏАФИЋ ХАМДИЈА
+ЏАФО МАТИЈА
+ЏАЈА МАРИЦА
+ЏАКИЋ ЧЕДО
+ЏАКИЋ БОЖАНА
+ЏАКИЋ ЛАЗА
+ЏАКОВИЋ ДРАГАН
+ЏАКУЛА ЕРЖЕБЕТ
+ЏАКУЛА ЕРЖЕБЕТ
+ЏАКУЛА ИВАН
+ЏАКУЛА МАРИЦА
+ЏАКУЛА НЕДЕЉКО
+ЏАКУЛА ПЕТАР
+ЏАКУЛА РАДЕ
+ЏАКУЛА ВИДОСАВ
+ЏАКУЛИН ДУШАНКА
+ЏАКУЛИН ПЕТАР
+ЏАКУЛИН СТЕВАН
+ЏАЛИЋ СТОЈАН
+ЏАМБАРСКИ ЈОВАН
+ЏАМБАС ДУШАН ДР ЛЕКАР
+ЏАМБАС МИЛЕ
+ЏАМБАСОВИЋ МИЛЕНКО
+ЏАМБИЋ БРАНКО
+ЏАМБИЋ МИЛОВАН
+ЏАМБИЋ РАДОВАН
+ЏАМБИЋ СЛАВКО
+ЏАМБИЋ СРЕТА
+ЏАНИЋ САВА
+ЏАНИЋ СТАЗА
+ЏАРИЋ ДОБРИНКА
+ЏАРИЋ РАДОМИР
+ЏЕЛЕТОВИЋ МИЛАДИН
+ЏЕЛЕТОВИЋ МИЛАН
+ЏЕЛЕТОВИЋ МЛАДЕН
+ЏЕЛЕТОВИЋ РАДОЈКА
+ЏЕЛЕТОВИЋ СЛОБОДАН
+ЏЕЛЕТОВИЋ ТОМО
+ЏЕЛИЛОВИЋ ЈАНА
+ЏЕПИНА ЈОВАН
+ЏЕВЕЛЕКИДИС МАРИНА
+ЏЕВЕЛЕКИДИС ПАНТА
+ЏЕВЕР НЕДЕЉКО
+ЏЕВЕРДАНОВИЋ АНИТА
+ЏЕВЕРДАНОВИЋ ЛАЗАР
+ЏЕВЕРДАНОВИЋ НАСТО
+ЏЕВЕРДАНОВИЋ ВЕЛИЗАР
+ДЖИДА КАТИЦА
+ЏИДА КАТИЦА
+ЏИДА МИЛАДИН
+ЏИДА МИЛОМИР
+ЏИГУРАШ МИЛЕНКО
+ЏИГУРСКИ БОРИВОЈ
+ЏИГУРСКИ БРАНИМИР
+ЏИГУРСКИ БРАНКО
+ЏИГУРСКИ ДАНИЛО
+ЏИГУРСКИ ДУШКО
+ЏИГУРСКИ ЉИЉАНА
+ЏИГУРСКИ ЉИЉАНА
+ЏИГУРСКИ МАРИЈА
+ЏИГУРСКИ МАРИЈА
+ЏИГУРСКИ МИЛАН
+ЏИГУРСКИ МИЛЕНКО
+ЏИГУРСКИ ПЕТАР
+ЏИГУРСКИ ПРЕДРАГ
+ЏИКИЋ МИЛАН
+ЏИЛИТОВ АЛЕКСАНДАР
+ЏИЛИТОВ КАТИЦА
+ЏИЛИТОВ СТЕВАН
+ЏИЛИТОВ СТЕВА
+ЏИЛИТОВ ВЕЛИНКА
+ЏИЛВИЏИЈЕВ МИТКО
+ЏИН МИРКО
+ЏИНИЋ МИРОСЛАВ ДР
+ЏИНИЋ МИРОСЛАВ
+ЏИНОВИЋ ВЕСЕЛИН
+ЏИРИЋ РУЖИЦА
+ЏОЏО РИСТО
+ЏОДАН ДРАГА
+ЏОДАН МИРЈАНА
+ЏОДАН НИКОЛА
+ЏОДАН ВЕРА
+ЏОГАНОВИЋ МИЛОРАД
+ЏОГОВИЋ ЖИВАН
+ЏОГОВИЋ МИЛУН
+ЏОЛЕВ АСЕН ДР СТОМАТОЛОГ
+ЏОЛЕВ АСЕН
+ЏОЛЕВ АСЕН
+ЏОЛЕВ МИТКО
+ЏОЛЕВ ПАНДЕ
+ЏОЛИЋ ГОРДАНА
+ЏОЛИЋ ТОМИСЛАВ
+ЏОМБА ЖИВКО
+ЏОМБЕТА КОСТА
+ЏОМБЕТА МИЛОШ
+ЏОМБЕТА НИКОЛА
+ЏОМБЕТА СВЕТОЗАР
+ЏОМБЕТА ВЛАДО
+ЏОМБИЋ ДУШАН
+ЏОМБИЋ МИЉА
+ЏОМБИЋ СОКА
+ЏОНЛЕЗ ПИРОШКА
+ЏОПАЛИЋ ДРАГАН
+ЏУЏАР ЂУРА
+ЏУЏАР ЈОАКИМ
+ЏУЏАР СЛАВКО
+ЏУДОВИЋ СМИЉКА
+ЏУДОВИЋ ВАСО
+ЏУКЛЕВСКИ САША
+ЏУКЉЕВ ДРАГАН
+ЏУКЉЕВ СТОЈАН
+ЏУНИЋ ЖИВОРАД
+ЏУНИЋ МИЛИВОЈЕ
+ЏУНИЋ МИРЈАНА
+ЏУНИЋ РАДОМИР
+ЏУЊА АМАЛИЈА
+ЏУЊА ЕВГЕНИЈЕ
+ЏУЊА ГОРДАНА
+ЏУЊА ИРЕНА
+ЏУЊА ИВАН
+ЏУЊА ЈАКИМ
+ЏУЊА ЈАНКО
+ЏУЊА ЈЕЛЕНА
+ЏУЊА ЉУБОМИР
+ЏУЊА МИРОН
+ЏУЊА ВЛАДИМИР
+ЏУЊА ЗВОНИМИР
+ЏУВЕР ВЕСЕЛИНКА
+ЏУВЕР ВОЈИСЛАВ
+ЏУВЕРОВИЋ ИВАНКА
+ДАЧЕВИЋ МИЛАН
+ДАЧЕВИЋ МОМИР
+ДАЧИЋ ДУШАН
+ДАЧИЋ КРИСТИНА
+ДАЧИЋ ЉУБОМИР
+ДАЧИЋ МИША
+ДАЧИЋ МИЛАН ПРОФЕСОР
+ДАЧИЋ МИЛАН
+ДАЧИЋ МИЛИЦА
+ДАЧИЋ НАДЕЖДА
+ДАЧИЋ РАДМИЛА
+ДАЧИЋ ВЕЛИНКА
+ДАЧИЋ ВЛАСТИМИР
+ДАШИЋ-ГУЛД ЉИЉАНА
+ДАШИЋ МАРИЈА
+ДАШИЋ МИЛЕНКО
+ДАШИЋ РАДУЛЕ
+ДАШИЋ ВЛАДО
+ДАЖЂУ НИСТОР
+ДАБАНОВИЋ ДАНИЦА
+ДАБАНОВИЋ ВАСИЛИЈЕ
+ДАБЕРЕР АНТОНИЈА
+ДАБЕТИЋ РАДИСАВ
+ДАБЕТИЋ РАДОМИР
+ДАБИЋ ЧЕДОМИР ДИПЛ ОЕЦ
+ДАБИЋ ЂОРЂЕ
+ДАБИЋ АЛЕКСАНДАР
+ДАБИЋ БОРКО
+ДАБИЋ ГОСПАВА
+ДАБИЋ ЈОВАН
+ДАБИЋ ЈОВАН
+ДАБИЋ МАРИЈА
+ДАБИЋ МАРКО
+ДАБИЋ МИЛАН
+ДАБИЋ МИЛОШ
+ДАБИЋ МИЛОРАД
+ДАБИЋ МИЛУТИН
+ДАБИЋ МИОДРАГ
+ДАБИЋ НЕДЕЉКО
+ДАБИЋ НЕНАД
+ДАБИЋ НЕНАД
+ДАБИЋ НЕНАД
+ДАБИЋ РАДОМИР
+ДАБИЋ СЛАВКО
+ДАБИЋ СТЕВАН
+ДАБИЋ СВЕТА
+ДАБИЋ ВОЈИСЛАВ
+ДАБИН ЂОРЂЕ
+ДАБОВИЋ БОГДАН
+ДАБОВИЋ БРАНКО
+ДАЦИН ЖЕЉКО
+ДАДАИ ЂУЛА
+ДАДАИ БАРБАРА
+ДАДАИ ЛАДИСЛАВ
+ДАДАИ ЛАДИСЛАВ
+ДАДАИ ЛАСЛО
+ДАДАИ СТЕВАН
+ДАДИЋ БРАНИСЛАВ
+ДАДИЋ ЉУБИЦА
+ДАИЋ ЛУКА
+ДАИЋ МИЛАН
+ДАЈЧ МИХАЈЛО
+ДАЈЧ НАДА
+ДАЈЧ РУБЕН
+ДАЈЧ ЗОРИЦА
+ДАЈИЋ БРАНКО
+ДАЈИЋ ДРАГИЦА
+ДАЈИЋ ДУШАН
+ДАЈИЋ ЉИЉАНА
+ДАЈИЋ ВЕЛИМИР
+ДАЈКО ВЛАДИМИР
+ДАЈКО ВЛАДИМИР
+ДАЈОВИЋ ЗОРА
+ДАКИЋ ЂОРЂЕ
+ДАКИЋ АНТЕ
+ДАКИЋ БОЈАНА
+ДАКИЋ БОРИС
+ДАКИЋ БОРКА
+ДАКИЋ БРАНКА
+ДАКИЋ ДАНЕ
+ДАКИЋ ДАНИЛО
+ДАКИЋ ДРАГО
+ДАКИЋ ДРАГО
+ДАКИЋ ДУШАНКА
+ДАКИЋ ГОЈКО
+ДАКИЋ ИЛИЈА
+ДАКИЋ ЈЕЛЕНА
+ДАКИЋ КСЕНИЈА
+ДАКИЋ МИЛАН
+ДАКИЋ МИЛОЈЕ
+ДАКИЋ МИЛОМИР
+ДАКИЋ МИТАР
+ДАКИЋ НЕБОЈША
+ДАКИЋ НЕДЕЉКО
+ДАКИЋ НЕДЕЉКО
+ДАКИЋ НИКОЛА
+ДАКИЋ НИКОЛА
+ДАКИЋ ПАВЛЕ
+ДАКИЋ ПЕТАР
+ДАКИЋ РАЈКО
+ДАКИЋ РАНКО
+ДАКИЋ РАТКО
+ДАКИЋ РЕЉА
+ДАКИЋ СЛАВИЦА
+ДАКИЋ СЛАВКО
+ДАКИЋ СЛОБОДАН
+ДАКИЋ СРЕТЕН
+ДАКИЋ СВЕТОЗАР
+ДАКИЋ ВЛАДИМИР ДР
+ДАКИЋ ВЛАДИМИР ДР
+ДАКИЋ ВЛАДИМИР
+ДАКИЋ ВЛАДИМИР
+ДАКИЋ ВЛАДО
+ДАКИЋ ЗОРАН
+ДАКОВИЋ ЂОКО
+ДАКОВИЋ БРАНКО
+ДАКОВИЋ ВЕСЕЛИН
+ДАКОВИЋ ЗОРАН
+ДАКСЕР ЈОВАН
+ДАКСЕР СТЕВАН
+ДАЛЧЕКОВИЋ ИЛИЈА
+ДАЛИПОВ БУДИМИР
+ДАЛИПОВИЋ АБДУЛ
+ДАЉАЦ ЉУБИЦА
+ДАЉЕВ ЉИЉАНА
+ДАЉЕВ МИЛАН
+ДАЛМАЦИЈА ЈАДРАНКА
+ДАЛМАЦИЈА МИРКО
+ДАЛОШ МАРИЈА
+ДАМШИЋ ЈОСИФ
+ДАМЈАН ЈЕЛИСАВЕТА
+ДАМЈАН ЈОН
+ДАМЈАНАЦ РАДМИЛА
+ДАМЈАНАЦ РАДОВАН
+ДАМЈАНАЦ СТОЈАНКА
+ДАМЈАНИЋ ЗОРИЦА
+ДАМЈАНОСКА СЛАВКА
+ДАМЈАНОВ ЖИКА
+ДАМЈАНОВ ЂОРЂЕ
+ДАМЈАНОВ БИЉАНА
+ДАМЈАНОВ БРАНКА
+ДАМЈАНОВ ЦВЕТКО
+ДАМЈАНОВ ДИМИТРИЈЕ
+ДАМЈАНОВ ДРАГОМИР
+ДАМЈАНОВ ИДА
+ДАМЈАНОВ ЈОРДАНКА
+ДАМЈАНОВ ЈОВАН
+ДАМЈАНОВ КАТИЦА
+ДАМЈАНОВ ЛАЗА
+ДАМЈАНОВ МИЛЕНКО
+ДАМЈАНОВ МИЛЕНКО
+ДАМЈАНОВ ПАВЛЕ
+ДАМЈАНОВ СОФИЈА
+ДАМЈАНОВ СТАНКО
+ДАМЈАНОВ СТЕВАН
+ДАМЈАНОВИЋ ЂОРЂЕ
+ДАМЈАНОВИЋ АЛЕКСАНДАР
+ДАМЈАНОВИЋ АРСЕНИЈЕ
+ДАМЈАНОВИЋ БОШКО
+ДАМЈАНОВИЋ БОРИСЛАВ
+ДАМЈАНОВИЋ ДАРИНКА
+ДАМЈАНОВИЋ ДРАГИЦА
+ДАМЈАНОВИЋ ДРАГОСЛАВ
+ДАМЈАНОВИЋ ДРАГО
+ДАМЈАНОВИЋ ДРАГУТИН
+ДАМЈАНОВИЋ ДУШАН
+ДАМЈАНОВИЋ ДУШАН
+ДАМЈАНОВИЋ ДУШИЦА
+ДАМЈАНОВИЋ ДУШКО
+ДАМЈАНОВИЋ ЕМИЛ
+ДАМЈАНОВИЋ ГОРДАНА
+ДАМЈАНОВИЋ ЈОВАН
+ДАМЈАНОВИЋ ЈОВАН
+ДАМЈАНОВИЋ ЈОВО
+ДАМЈАНОВИЋ ЉИЉАНА
+ДАМЈАНОВИЋ ЉУБИША
+ДАМЈАНОВИЋ ЉУБИЦА
+ДАМЈАНОВИЋ МАРИЈА
+ДАМЈАНОВИЋ МИЛАН
+ДАМЈАНОВИЋ МИЛАН
+ДАМЈАНОВИЋ-МИЛЕНКОВИЋ ЈЕЛЕНА
+ДАМЈАНОВИЋ МИОДРАГ
+ДАМЈАНОВИЋ НОВО
+ДАМЈАНОВИЋ ОБРАД
+ДАМЈАНОВИЋ ПЕТАР
+ДАМЈАНОВИЋ РАДЕ
+ДАМЈАНОВИЋ РАДОВАН
+ДАМЈАНОВИЋ РАНКО
+ДАМЈАНОВИЋ РАТКО
+ДАМЈАНОВИЋ СИМО
+ДАМЈАНОВИЋ СИНИША
+ДАМЈАНОВИЋ СЛАВКО
+ДАМЈАНОВИЋ СЛОБОДАНКА
+ДАМЈАНОВИЋ СНЕЖАНА
+ДАМЈАНОВИЋ СТАНИСЛАВ
+ДАМЈАНОВИЋ СТЕВАН
+ДАМЈАНОВИЋ СТЕВАН
+ДАМЈАНОВИЋ СТЕВО
+ДАМЈАНОВИЋ ТЕРЕЗА
+ДАМЈАНОВИЋ ТОДОР
+ДАМЈАНОВИЋ ТОМИСЛАВ
+ДАМЈАНОВИЋ ВАСИЛИЈЕ ДР
+ДАМЈАНОВИЋ ВАСИЛИЈЕ
+ДАМЈАНОВИЋ ВАСИЛИЈЕ
+ДАМЈАНОВИЋ ВОЈИСЛАВ
+ДАМЈАНОВИЋ ЗОРАН
+ДАМЈАНОВСКИ ЖИВКО
+ДАМЈАНОВСКИ АЛЕКСАНДАР
+ДАМЈАНОВСКИ АЛЕКСАНДАР
+ДАМЈАНОВСКИ МИЛАН
+ДАМЈАНОВСКИ РУЖИЦА
+ДАМЈАНОВСКИ ВЛАДИМИР
+ДАМЉАНОВИЋ ЖИВОТА
+ДАМЊАНОВИЋ АЛЕКСАНДАР
+ДАМЊАНОВИЋ КРИСТИНА
+ДАМЊАНОВИЋ ЛАЗАР
+ДАМЊАНОВИЋ ЉИЉАНА
+ДАМЊАНОВИЋ СЛАВОЉУБ
+ДАМЊАНОВИЋ ЗОРАН
+ДАМЊАНОВИЋ ЗОРАН
+ДАН МИРА
+ДАНЧ ТИБОР
+ДАНЧЕТОВИЋ ЗОРИЦА
+ДАНЧО ЧАБА
+ДАНЧО ЈЕНЕ
+ДАНАИЛОВ АЦА
+ДАНАИЛОВ ТЕВА
+ДАНГУБИЋ ЖАРКО
+ДАНГУБИЋ РАДИВОЈЕ ДИПЛ ИНГ
+ДАНГУБИЋ РАТКО
+ДАНГУЗОВ ДУШАН
+ДАНИ ГАШПАР
+ДАНИ ЛАСЛО
+ДАНИЧИЋ БОРО
+ДАНИЧИЋ БРАНИСЛАВ
+ДАНИЧИЋ ДРАГОЉУБ
+ДАНИЧИЋ ДРАГО
+ДАНИЧИЋ ИРЕНА
+ДАНИЧИЋ САВИЦА
+ДАНИЧИЋ ЗДРАВКО
+ДАНИШ ЕВА
+ДАНИШ ИШТВАН
+ДАНИШ МАРИЈА
+ДАНИЋ ПЕТАР ДИПЛ ИНГ
+ДАНИЋ ВЕСНА
+ДАНИЋ ЗОРИЦА
+ДАНИЕЛ АНДРИЈА
+ДАНИЕЛ АРАНКА
+ДАНИЕЛ ХИЛДА
+ДАНИЕЛ ЈОСИП
+ДАНИЕЛ ПЕТАР
+ДАНИЕЛ ПИРОШКА
+ДАНИЕЛ РУЖА
+ДАНИКОВ МИРОЉУБ
+ДАНИКОВ ВАЛЕРИЈА
+ДАНИЛОВ АНИЦА
+ДАНИЛОВ БОСИЉКА
+ДАНИЛОВ ДУШАН
+ДАНИЛОВ МИЛАН
+ДАНИЛОВ РАДОМИР
+ДАНИЛОВ СМИЉАНА
+ДАНИЛОВ СТОЈАН
+ДАНИЛОВ ВАСА
+ДАНИЛОВАЦ ДИМИТРИЈЕ
+ДАНИЛОВАЦ ПЕТАР
+ДАНИЛОВАЦ РУЖА
+ДАНИЛОВАЦ ВИТОМИР
+ДАНИЛОВИЋ ЖИВАН
+ДАНИЛОВИЋ ЖИВОРАД
+ДАНИЛОВИЋ АЛЕКСАНДАР
+ДАНИЛОВИЋ БРАНКО
+ДАНИЛОВИЋ ЈОВАН
+ДАНИЛОВИЋ КАТАРИНА
+ДАНИЛОВИЋ ЉИЉАНА
+ДАНИЛОВИЋ МАРКО
+ДАНИЛОВИЋ МИЛАН
+ДАНИЛОВИЋ МИРКО ДР
+ДАНИЛОВИЋ НИКОЛА
+ДАНИЛОВИЋ НИКОЛА
+ДАНИЛОВИЋ ПЕРСА
+ДАНИЛОВИЋ РАДА
+ДАНИЛОВИЋ РАДМИЛА
+ДАНИЛОВИЋ СТАНИСЛАВА
+ДАНИЛОВИЋ СТЕВАН
+ДАНИЛОВИЋ ТИХОМИР
+ДАНИЛОВИЋ-ВЕСЕЛИНОВ ВЕРА
+ДАНИЛОВИЋ ЗДРАВКО
+ДАЊИ ФЕРЕНЦ
+ДАЊИ ГЕЗА
+ДАЊИ КАРОЉ
+ДАЊИ ЛАСЛО
+ДАЊИ МАЋАШ
+ДАНКА МАРКО
+ДАНКА ЗЛАТА
+ДАНКО ЈАНКО
+ДАНКО ЈАРОСЛАВ
+ДАНКОВИЋ БОГОЉУБ
+ДАНКОВИЋ СЛАВИША
+ДАНКОВИЋ СЛАВКА
+ДАНКУЦ ДРАГАН
+ДАНКУЦ МИЛИЦА
+ДАНКУЦ ВОЈИСЛАВ
+ДАНКУЦ ВОЈИСЛАВ
+ДАНОЈЕВИЋ СТЕВАН
+ДАПЧЕВИЋ ДУШАН
+ДАПЧЕВИЋ ЈОВАН
+ДАПЧЕВИЋ ЉУБИЦА
+ДАПЧЕВИЋ ПАВЛЕ
+ДАПЧЕВИЋ РАЈКО
+ДАПЧЕВИЋ РУЖИЦА
+ДАПЧЕВИЋ ВЕРИЦА
+ДАРАШ ЖЕЉКО
+ДАРАЖ ЈУЛИЈАНА
+ДАРАЖ СТЕВАН
+ДАРАБАЊ ЈОЖЕФ
+ДАРАБОШ ЈУЛКА
+ДАРАБОШ ЛАДИСЛАВ
+ДАРАБОШ МАРИЈА
+ДАРАБОШ ПЕТАР
+ДАРАБУЦ НЕДЕЉКО
+ДАРАДИЋ СТЕВАН
+ДАРМАНОВИЋ МИЛАН
+ДАРМАНОВИЋ СТАНКО
+ДАРМАНОВИЋ ТОМИСЛАВ
+ДАРОЈЕВИЋ ЛАЗАР
+ДАРВИШ ЗОРИЦА
+ДАСОВИЋ СТОЈАНКА
+ДАСОВИЋ ЗЛАТА
+ДАУТОВА-РУШЕВЉАН ВЕЛИНКА ДР
+ДАУТОВИЋ ЂОРЂЕ
+ДАУТОВИЋ БОГДАН
+ДАУТОВИЋ ЏЕМАЛ
+ДАУТОВИЋ ДРАГАН
+ДАУТОВИЋ МИЛАН
+ДАУТОВИЋ МИЛАН
+ДАВИЋ БРАНИСЛАВ
+ДАВИД АНДРАШ
+ДАВИД ИЛОНА
+ДАВИДОВ ЂУРЂИНА
+ДАВИДОВ БОГДАН
+ДАВИДОВ БУДИМКА
+ДАВИДОВ ЈЕЛИЦА
+ДАВИДОВ ЈОВАН
+ДАВИДОВ ЉУБОМИР
+ДАВИДОВ МИЛАН
+ДАВИДОВ МИЛАН
+ДАВИДОВ МИЛИЋ
+ДАВИДОВ МИЛИВОЈ
+ДАВИДОВ МИЛКА
+ДАВИДОВ НЕГОВАН
+ДАВИДОВ РАДОСЛАВ
+ДАВИДОВ РАДОВАН
+ДАВИДОВ СЛАВКО
+ДАВИДОВ СТОЈАН
+ДАВИДОВ ТИХОМИР
+ДАВИДОВАЦ ЂОРЂЕ
+ДАВИДОВАЦ БОШКО
+ДАВИДОВАЦ ДАНИЛО
+ДАВИДОВАЦ ДУШАНКА
+ДАВИДОВАЦ ЕЛВИРА
+ДАВИДОВАЦ ГАВРА
+ДАВИДОВАЦ ГОЈКО
+ДАВИДОВАЦ ЉУБИЦА
+ДАВИДОВАЦ МИРОСЛАВ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДМИЛА
+ДАВИДОВАЦ СТЕВАН
+ДАВИДОВАЦ ТОДОР
+ДАВИДОВАЦ ВЕРИЦА
+ДАВИДОВАЦ ВЕСЕЛИНКА
+ДАВИДОВАЦ ЗДРАВКО
+ДАВИДОВИЋ ЧАСЛАВ
+ДАВИДОВИЋ ДАВОР
+ДАВИДОВИЋ ДРАГАН
+ДАВИДОВИЋ ДРАГИЦА
+ДАВИДОВИЋ ДУШАНКА
+ДАВИДОВИЋ ДУШКО
+ДАВИДОВИЋ ГОРАН
+ДАВИДОВИЋ ЈОВАН
+ДАВИДОВИЋ ЈОВО
+ДАВИДОВИЋ ЉИЉАНА
+ДАВИДОВИЋ МАРИЈА
+ДАВИДОВИЋ МАРИЈА
+ДАВИДОВИЋ МАРЈАН
+ДАВИДОВИЋ МИХАИЛО
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛА
+ДАВИДОВИЋ МИЛОШ
+ДАВИДОВИЋ МИЛОШ
+ДАВИДОВИЋ МИЛОВАН
+ДАВИДОВИЋ МИЛУТИН
+ДАВИДОВИЋ МИРКО
+ДАВИДОВИЋ МИРОСЛАВ
+ДАВИДОВИЋ МИРОСЛАВ
+ДАВИДОВИЋ МЛАДЕН
+ДАВИДОВИЋ НЕБОЈША
+ДАВИДОВИЋ НЕНАД
+ДАВИДОВИЋ ОЛГА
+ДАВИДОВИЋ ПЕРА
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ РАДЕ ДР
+ДАВИДОВИЋ РАДЕ
+ДАВИДОВИЋ РАДОЈЕ
+ДАВИДОВИЋ РАДОМИР
+ДАВИДОВИЋ САВА
+ДАВИДОВИЋ СЛАВКО
+ДАВИДОВИЋ СРЕТА
+ДАВИДОВИЋ СТАНКО
+ДАВИДОВИЋ СТЕВАН
+ДАВИДОВИЋ УРОШ
+ДАВИДОВИЋ ВАСА
+ДАВИДОВИЋ ВИТОМИР
+ДАВИДОВИЋ ВЛАДИМИР
+ДАВИДОВИЋ ВОЈИСЛАВ
+ДАВИДОВИЋ ЗОРА
+ДАВИДОВСКИ МАРА
+ДАВИНИЋ СТОЈАН
+ДАВОГИЋ ТЕОДОР
+ДАВОСИР ИВАН
+ДАВОСИР МАКСИМ
+ДАВОСИР ТЕОДОР
+ДАВОСИР ВЛАДИМИР
+ДЕ-ВРИЕС ИВАНКА
+ДЕШИ ЗОЛТАН
+ДЕШИЋ МАРА
+ДЕШО ЖИВАНКА
+ДЕЖЕ ЈОВАН
+ДЕЖЕ КАРЛО
+ДЕЖЕ ЗДЕНКА
+ДЕЖЕЛИЋ ЈОВАНКА
+ДЕЂАНСКИ ЂОРЂЕ
+ДЕЂАНСКИ ДУШАН
+ДЕЂАНСКИ ПЕТАР
+ДЕАК ЖАРКО
+ДЕАК АНДРАШ
+ДЕАК АНДРИЈАНА
+ДЕАК АНДРИЈА
+ДЕАК АРАНКА
+ДЕАК ФЕРЕНЦ
+ДЕАК ИЛЕШ
+ДЕАК ЛАУРА
+ДЕАК МАТИЛДА
+ДЕАН НЕВЕНКА
+ДЕАРОСКИ ФЕХИМ
+ДЕАРОВИЋ САЛИМ
+ДЕБЕЉАЧКИ ЖИВОЈИН
+ДЕБЕЉАЧКИ ЂОРЂЕ
+ДЕБЕЉАЧКИ АЛЕКСАНДАР
+ДЕБЕЉАЧКИ АЛЕКСАНДАР
+ДЕБЕЉАЧКИ БОСИЉКА
+ДЕБЕЉАЧКИ ДРАГОМИР
+ДЕБЕЉАЧКИ ИВАН
+ДЕБЕЉАЧКИ ИВАН
+ДЕБЕЉАЧКИ КАТИЦА
+ДЕБЕЉАЧКИ ЉУБИЦА
+ДЕБЕЉАЧКИ МИРЈАНА
+ДЕБЕЉАЧКИ МИРОСЛАВ
+ДЕБЕЉАЧКИ НАДА
+ДЕБЕЉАЧКИ СРЂА
+ДЕБЕЉАЧКИ СВЕТОЗАР
+ДЕБЕЉАЧКИ ВЕРА
+ДЕБЕЉАЧКИ ВУКОСАВА
+ДЕБЕЉЕВИЋ ВЕЛИМИР
+ДЕЦ АНИЦА
+ДЕДАЈ ДАВИД
+ДЕДАЈ ЛЕКО
+ДЕДЕИ ИЛОНА
+ДЕДЕИЋ ЕЛИЗАБЕТА
+ДЕДИЋ БРАНИСЛАВ
+ДЕДИЋ ДОБРОСАВ
+ДЕДИЋ ДРАГАН
+ДЕДИЋ ДРАГОСЛАВ
+ДЕДИЋ ЕЛИЗАБЕТА
+ДЕДИЋ ГАВРИЛО
+ДЕДИЋ ЈОВО
+ДЕДИЋ КОВИНКА
+ДЕДИЋ МАРА
+ДЕДИЋ МАРИЈА
+ДЕДИЋ МИЛИВОЈ ДР ПРОФ
+ДЕДИЋ МИЛО
+ДЕДИЋ МИОДРАГ
+ДЕДИЋ НЕМАЊА
+ДЕДИЋ РАДИЦА
+ДЕДИЋ СЛАВКА
+ДЕДИЋ СТЕВАН
+ДЕДИЋ-ТАСИЋ МИРА
+ДЕДИН ДЕЈАН
+ДЕДИН ДИМИТРИЈЕ
+ДЕДИН ДИМИТРИЈЕ
+ДЕДИН ВАСИЛИЈЕ
+ДЕДИНСКИ ТИБОР
+ДЕДОВИЋ МИШО
+ДЕФРАНГЕПАН ФРАНСОА
+ДЕГА АВРАМ
+ДЕЈАНАЦ МИЛОРАД
+ДЕЈАНОСКИ МИЛАН
+ДЕЈАНОВ БЕРИСЛАВ
+ДЕЈАНОВ ДАНИЛО
+ДЕЈАНОВ ЈЕЛЕНА
+ДЕЈАНОВ МИТА
+ДЕЈАНОВ СИМА
+ДЕЈАНОВИЋ ЖАРКО
+ДЕЈАНОВИЋ ЖАРКО
+ДЕЈАНОВИЋ ЖИВАН
+ДЕЈАНОВИЋ ЖИВОЈИН
+ДЕЈАНОВИЋ ЂОРЂЕ
+ДЕЈАНОВИЋ ЂУРЂИНКА
+ДЕЈАНОВИЋ ЂУРИЦА
+ДЕЈАНОВИЋ АЛЕКСАНДАР
+ДЕЈАНОВИЋ АЛЕКСАНДРА
+ДЕЈАНОВИЋ АНЂЕЛИЈА
+ДЕЈАНОВИЋ АНКИЦА
+ДЕЈАНОВИЋ БОРИСЛАВА
+ДЕЈАНОВИЋ ДАНИЛО
+ДЕЈАНОВИЋ ДИМИТРИЈЕ
+ДЕЈАНОВИЋ ДОБРИВОЈЕ
+ДЕЈАНОВИЋ ДОБРИВОЈЕ
+ДЕЈАНОВИЋ ДРАГАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ИВАН
+ДЕЈАНОВИЋ ЈЕЛЕНА
+ДЕЈАНОВИЋ ЈЕЛИЦА
+ДЕЈАНОВИЋ ЈОРДАН
+ДЕЈАНОВИЋ ЈОВАН
+ДЕЈАНОВИЋ КАТИЦА
+ДЕЈАНОВИЋ ЛАЗАР
+ДЕЈАНОВИЋ ЛАЗАР
+ДЕЈАНОВИЋ МИЛАНА
+ДЕЈАНОВИЋ МИЛАН
+ДЕЈАНОВИЋ МИЛАН
+ДЕЈАНОВИЋ МИЛИЦА
+ДЕЈАНОВИЋ МИЛОШ
+ДЕЈАНОВИЋ МИЛОШ
+ДЕЈАНОВИЋ МИЛОРАД
+ДЕЈАНОВИЋ МИЛОРАД
+ДЕЈАНОВИЋ МИРЈАНА
+ДЕЈАНОВИЋ МИРОСЛАВ
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ РАДА
+ДЕЈАНОВИЋ СТЕВАН
+ДЕЈАНОВИЋ СТЕВАН
+ДЕЈАНОВИЋ ВОЈИСЛАВ
+ДЕЈАНОВСКИ МЛАДЕН
+ДЕЈАНОВСКИ ТОМИСЛАВ
+ДЕЈАНОВСКИ ВЕСЕЛИН
+ДЕКАНИЋ БРАНКО
+ДЕКАНИЋ ГЛИГОРИЈЕ
+ДЕКАНИЋ МИЛОШ
+ДЕКАНИЋ МИЛОШ
+ДЕКАНИЋ ВОЈИСЛАВ
+ДЕКАНИЋ ВОЈИСЛАВ
+ДЕКАЊ АНТАЛ
+ДЕКАНСКИ ДИНА
+ДЕКАНСКИ ПАВЛЕ
+ДЕКИЋ ДАНЕ
+ДЕЛАЧ ФРАНЦИШКА
+ДЕЛЕТИЋ ГОРДАНА
+ДЕЛИЋ ЂОРЂЕ
+ДЕЛИЋ БИЉАНА
+ДЕЛИЋ БОЖИДАР
+ДЕЛИЋ БОГДАН
+ДЕЛИЋ ДАРИНКА
+ДЕЛИЋ ДЕСИМИР
+ДЕЛИЋ ДРАГИЦА
+ДЕЛИЋ ДРАГИЦА
+ДЕЛИЋ ДРАГУТИН
+ДЕЛИЋ-ИБУКИЋ ЕСАД
+ДЕЛИЋ ИЛИЈА
+ДЕЛИЋ ЈАЊА
+ДЕЛИЋ ЈОВАН
+ДЕЛИЋ МАРА
+ДЕЛИЋ МИЋО ДР
+ДЕЛИЋ МИХАЈЛО
+ДЕЛИЋ МИЛАНА
+ДЕЛИЋ МИЛАН
+ДЕЛИЋ МИЛИЦА
+ДЕЛИЋ МИЛКА
+ДЕЛИЋ МИЛОШ
+ДЕЛИЋ МИЛОМИР
+ДЕЛИЋ МИЛОСАВА
+ДЕЛИЋ МУСТАФА
+ДЕЛИЋ ПАШКО
+ДЕЛИЋ ПЕТАР
+ДЕЛИЋ РАДМИЛА
+ДЕЛИЋ РАДОЈКА ДР
+ДЕЛИЋ РАДОМИР
+ДЕЛИЋ РАДОСАВ
+ДЕЛИЋ-СЛАВКОВИЋ ВЕРА
+ДЕЛИЋ СРЕТЕН
+ДЕЛИЋ СТОЈАН
+ДЕЛИЋ СВЕТОЗАР
+ДЕЛИЋ ТОМИСЛАВ
+ДЕЛИЋ ВАСА
+ДЕЛИЋ ВЕСЕЛКО
+ДЕЛИЋ ВЕСНА
+ДЕЛИЋ ВЛАДО
+ДЕЛИЋ ВЛАДО
+ДЕЛИЂОРЂЕВИЋ СТЕВАНКА
+ДЕЛИБАШИЋ ДЕЈАН ДИПЛ ИНГ
+ДЕЛИБАШИЋ ЉУБИША
+ДЕЛИБАШИЋ ЉУБИЦА
+ДЕЛИБАШИЋ МАРИЦА
+ДЕЛИБАШИЋ МИЛИВОЈЕ
+ДЕЛИБАШИЋ МИЛИВОЈЕ
+ДЕЛИБАШИЋ МИЛОРАД
+ДЕЛИБАШИЋ МИОДРАГ
+ДЕЛИБАШИЋ САВО
+ДЕЛИБАШИЋ СОФИЈА
+ДЕЛИБАШИЋ ТОМИСЛАВ
+ДЕЛИБЛАЋАНИН ЈОВАН
+ДЕЛКОВИЋ ЈОВИЦА
+ДЕЛОИК ДРАГУТИН
+ДЕЛОНГА СТАНКО
+ДЕЛОВ ОРДАНЧО
+ДЕМЧЕШЕН ВАСИЛИЈЕ
+ДЕМШАР ГОРДАНА
+ДЕМШАР-ВЕГЕР МАРИЈА
+ДЕМАК МИРОСЛАВ
+ДЕМАН ЈАНКО
+ДЕМАН РАСТИСЛАВ
+ДЕМБИЦ СМИЉАНА
+ДЕМЕ ЕМА
+ДЕМЕ ФРАНЦИШКА
+ДЕМЕ ИРЕНА
+ДЕМЕ КЛАРА
+ДЕМЕШИ АРПАД
+ДЕМЕЛИС ЉУБИЦА
+ДЕМЕНДИ БЕЛА
+ДЕМЕНДИ ДОРОТЕА
+ДЕМЕР БЕЛА
+ДЕМЕР ФРАНЦ
+ДЕМЕТЕР ФЕРЕНЦ
+ДЕМЕТЕР ФРАЊА
+ДЕМЕТЕР СТЕВАН
+ДЕМИЋ ЖИВОРАД
+ДЕМЈЕН БОРИСЛАВ
+ДЕМКО-РИХТЕР ЈОСИП
+ДЕМОВСКИ СЕВДИЈА
+ДЕМУТ РОЗАЛИЈА
+ДЕНЧИК ВЛАДИСЛАВ
+ДЕНДА ДРАГАН
+ДЕНДА МИЛИВОЈ
+ДЕНДИЋ СРЕТИМИР
+ДЕНЕШИ ВИЛИМ
+ДЕНГОРИЦИЈА СТЈЕПАН
+ДЕНИЋ ЧЕДОМИР
+ДЕНИЋ ЖИВОТА
+ДЕНИЋ ЉУБИША
+ДЕНИЋ МОМЧИЛО ДИПЛ ИНГ
+ДЕНИЋ РАДИЦА
+ДЕНИЋ СИНИША
+ДЕНИЋ ЗУЗАНА
+ДЕНКОВИЋ ЉУБОМИР
+ДЕНКОВСКИ ЈАНЕ
+ДЕПЧЕЊСКИ СТЕФАН
+ДЕР ФРАЊА
+ДЕР ЈОЖЕФ
+ДЕР ЛАЈОШ
+ДЕР СТЕВАН
+ДЕРАЈИЋ СТОЈА
+ДЕРБАКОВ МАРКО
+ДЕРБОГОСИЈАН БРАНКО
+ДЕРДИЋ РУДОЛФ
+ДЕРЕХ СИМЕОН
+ДЕРЕТА МИЛАН
+ДЕРЕТА ПЕТАР
+ДЕРЕТА СВЕТОЗАР
+ДЕРЕТИЋ СВЕТОЗАР
+ДЕРИКРАВА МИЦА
+ДЕРМЕНЂИЈЕВСКИ ДИМИТАР
+ДЕРОЊИЋ ТОДОР
+ДЕРУШЕК МИЉЕНКО
+ДЕРВИШЕВИЋ ЈУСУФ
+ДЕРВИШЕВИЋ НЕЏИБ
+ДЕРВИШЕВИЋ СЛАВКО
+ДЕРВИШИ МИСИН
+ДЕРВИШИ РАМАДАН
+ДЕРВИШИ РУШИТ
+ДЕРВИЋ ШЕФКА
+ДЕСНИЦА ЂОРЂЕ
+ДЕСНИЦА ЂУРО МР
+ДЕСНИЦА БОГДАН
+ДЕСНИЦА БРАНКО
+ДЕСНИЦА ЈАНКО
+ДЕСНИЦА ЛУКА
+ДЕСНИЦА НИКОЛА
+ДЕСНИЦА РАДОМИР ДИПЛ ИНГ
+ДЕСНИЦА РАДОМИР
+ДЕСНИЦА РЕЉА
+ДЕСНИЦА СМИЉКА
+ДЕСНИЦА СТАНА
+ДЕСПЕНИЋ АЛЕКСАНДАР
+ДЕСПИ ЈОВА
+ДЕСПИ ВЕЉКО
+ДЕСПИЋ ЛАЗАР
+ДЕСПИЋ МАРКО
+ДЕСПИЋ МИРЈАНА
+ДЕСПИЋ СРЕТЕН
+ДЕСПИЋ ЗОРАН
+ДЕСПОТ ДУШАН
+ДЕСПОТ МИЛАН
+ДЕСПОТ МИЛИЦА
+ДЕСПОТ МИРЈАНА
+ДЕСПОТ НАДА
+ДЕСПОТ НЕНАД
+ДЕСПОТ СЛОБОДАН
+ДЕСПОТОВ АЛЕКСАНДАР
+ДЕСПОТОВ ДОБРИЛА
+ДЕСПОТОВ ЕВДОКИЈА
+ДЕСПОТОВ ИЛИЈА
+ДЕСПОТОВ ЈОЦА
+ДЕСПОТОВ ЉУБИНКА
+ДЕСПОТОВ МИЛАН
+ДЕСПОТОВ МИЛОВАН
+ДЕСПОТОВ РАДМИЛА
+ДЕСПОТОВ РУЖИЦА
+ДЕСПОТОВ ВИЛМА
+ДЕСПОТОВ ВИТОМИРКА
+ДЕСПОТОВ ВОЈИСЛАВ
+ДЕСПОТОВ ЗОРАН
+ДЕСПОТОВИЋ БИЉАНА
+ДЕСПОТОВИЋ ДРАГУТИН
+ДЕСПОТОВИЋ ЉИЉАНА
+ДЕСПОТОВИЋ ПАНТЕЛИЈА
+ДЕСПОТОВИЋ РАДИСЛАВ
+ДЕСПОТОВИЋ РАДИСЛАВ
+ДЕСПОТОВИЋ РАДИВОЈЕ
+ДЕСПОТОВИЋ РАДИВОЈЕ
+ДЕСПОТОВИЋ РАДМИЛА
+ДЕСПОТОВИЋ РАТКО
+ДЕСПОТОВИЋ СИМКА
+ДЕСПОТОВИЋ СТАНКО
+ДЕСПОТОВИЋ ВАСО
+ДЕСПОТОВИЋ ВОЈИСЛАВ
+ДЕСПОТОВСКИ ДУШАН
+ДЕТАРИ МАРИЈА
+ДЕТЕЛИН ЂУРА
+ДЕТЕЛИН ЈОСИП
+ДЕТЕЛИН НАДА
+ДЕУРА ДУШАН ДИПЛ ПРАВНИК
+ДЕУРА РАЈКО
+ДЕУРА ВЕРА
+ДЕУРИЋ РАДМИЛА
+ДЕВАИ ШАНДОР
+ДЕВАИ ИМРЕ
+ДЕВАИ ЛАЈОШ
+ДЕВАИ САЊА
+ДЕВАИ ЗОРИЦА
+ДЕВАЈА НАДА
+ДЕВАЈА ОМЕР ДР
+ДЕВАЛД ЕТЕЛКА
+ДЕВАЛД ИВАН
+ДЕВАЛД ЈОХАН
+ДЕВЕЧЕРИ КРИСТИНА
+ДЕВЕЧЕРСКИ АВРАМ
+ДЕВЕЧЕРСКИ ДАНИЦА
+ДЕВЕЧЕРСКИ ВАСИЛИЈЕ ДР
+ДЕВЕДАН ЂОРЂЕ
+ДЕВЕДАН БОГДАН
+ДЕВЕДАН ДРАГОЈЕ
+ДЕВЕДАН МАРА
+ДЕВЕДАН МИЛОВАН
+ДЕВЕДАН МИРКО
+ДЕВЕТАК ЗОРА
+ДЕВИЋ-ЧОБАНКСИ МИЉЕНКА
+ДЕВИЋ ЖИВАН
+ДЕВИЋ ЂОКА
+ДЕВИЋ ЂОРЂЕ
+ДЕВИЋ АЛЕКСАНДАР
+ДЕВИЋ АНКИЦА
+ДЕВИЋ БИЉАНА
+ДЕВИЋ БРАНИСЛАВА
+ДЕВИЋ БРАНКА
+ДЕВИЋ ЦВИЈЕТА
+ДЕВИЋ ДАНИЦА
+ДЕВИЋ ДАНИЛКА
+ДЕВИЋ ДОБРОСАВ
+ДЕВИЋ ДРАГОЉУБ
+ДЕВИЋ ДРАГОМИР
+ДЕВИЋ ДРАГО
+ДЕВИЋ ДУШАН
+ДЕВИЋ ЕВИЦА
+ДЕВИЋ ГОРАН
+ДЕВИЋ ГРОЗДА
+ДЕВИЋ ИГЊАТ
+ДЕВИЋ ИЛИЈА
+ДЕВИЋ ЈОВАН ДИПЛ ИНГ
+ДЕВИЋ ЈОВАНКА ДР
+ДЕВИЋ ЈОВАН
+ДЕВИЋ КАТИЦА
+ДЕВИЋ МИЛАН
+ДЕВИЋ МИЛАН
+ДЕВИЋ МИЛЕНКО
+ДЕВИЋ МИЛЕТА
+ДЕВИЋ МИЛОШ
+ДЕВИЋ МИОДРАГ
+ДЕВИЋ МИРА
+ДЕВИЋ МЛАДЕН
+ДЕВИЋ НЕБОЈША
+ДЕВИЋ НЕНАД
+ДЕВИЋ НОВКА
+ДЕВИЋ ПЕТАР
+ДЕВИЋ РАДОСЛАВ
+ДЕВИЋ СИМА
+ДЕВИЋ СЛАВКО
+ДЕВИЋ СЛОБОДАН
+ДЕВИЋ ТАТЈАНА
+ДЕВИЋ ТОМА
+ДЕВИЋ ВЕЛИНКА
+ДЕВИЋ ВЛАДА
+ДЕВИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+ДЕВИЋ ЗАГОРКА
+ДЕВРЊА БРАНИСЛАВ
+ДЕВРЊА ДРАГИЦА
+ДЕВРЊА ЉУБИЦА
+ДЕВРЊА-МИХАЈЛОВИЋ ЉИЉАНА
+ДЕВРЊА МИОДРАГ
+ДЕВРЊА СПАСОЈЕ
+ДЕВУШИЋ МИЛАН
+ДИЦКОВ ЂОРЂЕ
+ДИЦКОВ АЛЕКСАНДРА
+ДИЦКОВ ДРАГАН
+ДИЦКОВ ДРАГАН
+ДИЦКОВ ДУШКО
+ДИЦКОВ ИВАН
+ДИЦКОВ КОСТА
+ДИЦКОВ МИРЈАНА
+ДИЦКОВ НИКОЛА
+ДИЦКОВ СТЕВАН
+ДИЦКОВ ВЕСЕЛИН
+ДИЦКОВ ВЕСЕЛИН
+ДИЦКОВ ЗОРКА
+ДИЦМАН ЗДЕНКА
+ДИДАНОВИЋ ЧЕДОМИР
+ДИДАНОВИЋ БУДИМИР
+ДИЈАКОВИЋ ПАВА
+ДИЈАМАТОВИЋ ДРАГИЦА
+ДИКИЋ БРАНИСЛАВ
+ДИКИЋ БРАНКО
+ДИКИЋ ДУШАН
+ДИКИЋ ГОРАН
+ДИКИЋ ЈОВАНКА
+ДИКИЋ ЈОВАН
+ДИКИЋ МИЛАН
+ДИКИЋ РАТКО
+ДИКИЋ САВА ДИПЛ ИНГ
+ДИКИЋ СТЕВАН
+ДИКИЋ ВЕЛИНКА
+ДИКИЋ ЗАГОРКА
+ДИКЛИЋ АЛЕКСАНДАР
+ДИКЛИЋ АЛЕКСАНДАР
+ДИКЛИЋ БРАНИСЛАВ
+ДИКЛИЋ ДРАГАН
+ДИКЛИЋ ДРАГАН
+ДИКЛИЋ ДУШАН
+ДИКЛИЋ ДУШАН
+ДИКЛИЋ ЈАСМИНА
+ДИКЛИЋ ЈОВАН
+ДИКЛИЋ ЈУДИТ
+ДИКЛИЋ МАРТА
+ДИКЛИЋ МИЛАН
+ДИКЛИЋ МИЛЕТА
+ДИКЛИЋ МИРОСЛАВ
+ДИКЛИЋ ПЕТАР
+ДИКЛИЋ СТАНКО
+ДИКОВИЋ НИКОЛА
+ДИЛБЕРОВИЋ АНТО
+ДИМЧОВСКИ ТРАЈЧЕ
+ДИМШИЋ АНКА
+ДИМА БОСА
+ДИМАШЕВИЋ АЛЕКСАНДАР
+ДИМАШЕВИЋ ПЕТАР
+ДИМАНИЋ АНКА
+ДИМАНИЋ БРАНИСЛАВ
+ДИМЕСКИ ИЛИЈА
+ДИМЕСКИ МЕТОДИЈЕ
+ДИМИЋ ЖАРКО
+ДИМИЋ ЂОРЂЕ
+ДИМИЋ АКСЕНТИЈЕ
+ДИМИЋ АКСЕНТИЈЕ
+ДИМИЋ АНЂЕЛКА
+ДИМИЋ БОГДАН
+ДИМИЋ БРАНКО
+ДИМИЋ ДАНИЦА
+ДИМИЋ ДИМИТРИЈЕ
+ДИМИЋ ДРАГОЉУБ ДР
+ДИМИЋ ДРАГОМИР
+ДИМИЋ ДРАГО
+ДИМИЋ ДУШАН ДР
+ДИМИЋ ДУШАН
+ДИМИЋ ДУШАН
+ДИМИЋ ЕМИЛИЈА
+ДИМИЋ ЕРЖЕБЕТ
+ДИМИЋ ИГЊАТ
+ДИМИЋ ИВАН
+ДИМИЋ ЈАНКО
+ДИМИЋ КОСТА
+ДИМИЋ ЛАЗАР
+ДИМИЋ ЛАЗАР
+ДИМИЋ ЉУБОМИР
+ДИМИЋ МИЛАН
+ДИМИЋ МИЛАН
+ДИМИЋ МИЛЕВА
+ДИМИЋ МИЛИЦА
+ДИМИЋ МИЛОШ
+ДИМИЋ МИЛОЈЕ ДИПЛ ИНГ
+ДИМИЋ МИТА
+ДИМИЋ НАДА
+ДИМИЋ НАДА
+ДИМИЋ НЕБОЈША
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ ОЛГА
+ДИМИЋ ОЗРЕН
+ДИМИЋ ПЕТАР
+ДИМИЋ СТАНКО
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВА
+ДИМИЋ ВАСА
+ДИМИЋ ВЕРИЦА
+ДИМИЋ ВИТОМИР
+ДИМИЋ ВИТОМИР
+ДИМИЋ ВЛАДИМИР
+ДИМИТРАШКОВИЋ ВЛАДИМИР
+ДИМИТРИЋ ЖИВОРАД
+ДИМИТРИЋ БОГОЉУБ
+ДИМИТРИЋ БРАНКО
+ДИМИТРИЋ ДРАГАН
+ДИМИТРИЋ МИЛЕНКО
+ДИМИТРИЋ МИЛЕВА
+ДИМИТРИЋ НОВАК
+ДИМИТРИЋ ПЕРО
+ДИМИТРИЋ РАТКО
+ДИМИТРИЋ ВЛАДАН
+ДИМИТРИЋ ЗОРАН
+ДИМИТРИАДИС ПАВЛОС
+ДИМИТРИЈЕВИЋ ЧЕДОМИР
+ДИМИТРИЈЕВИЋ ЧЕДОМИР
+ДИМИТРИЈЕВИЋ ЂОРЂЕ
+ДИМИТРИЈЕВИЋ ЂОРЂЕ
+ДИМИТРИЈЕВИЋ ЂУРЂА
+ДИМИТРИЈЕВИЋ АЛЕКСАНДАР
+ДИМИТРИЈЕВИЋ АРСА
+ДИМИТРИЈЕВИЋ АРСЕН
+ДИМИТРИЈЕВИЋ-БЕСЕРМЕЊИ КАТИЦА
+ДИМИТРИЈЕВИЋ БОРИВОЈЕ
+ДИМИТРИЈЕВИЋ БРАНИСЛАВА
+ДИМИТРИЈЕВИЋ БРАНИСЛАВ
+ДИМИТРИЈЕВИЋ БРАНИСЛАВ
+ДИМИТРИЈЕВИЋ БРАНКА
+ДИМИТРИЈЕВИЋ БРЗОМИР
+ДИМИТРИЈЕВИЋ ДАНИЦА
+ДИМИТРИЈЕВИЋ ДАНИЦА
+ДИМИТРИЈЕВИЋ ДЕСАНКА
+ДИМИТРИЈЕВИЋ ДИМИТРИЈЕ
+ДИМИТРИЈЕВИЋ ДОБРИЦА
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДУШАН ДР
+ДИМИТРИЈЕВИЋ ДУШАНКА
+ДИМИТРИЈЕВИЋ ДУШАН
+ДИМИТРИЈЕВИЋ ЕРЖЕБЕТ
+ДИМИТРИЈЕВИЋ ЕТЕЛА
+ДИМИТРИЈЕВИЋ ЕВИЦА
+ДИМИТРИЈЕВИЋ ЈЕЛЕНА
+ДИМИТРИЈЕВИЋ ЈЕЛЕНА
+ДИМИТРИЈЕВИЋ ЈЕЛИЦА
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЛАЗАР
+ДИМИТРИЈЕВИЋ ЉУБИЦА ДР
+ДИМИТРИЈЕВИЋ ЉУБИЦА
+ДИМИТРИЈЕВИЋ ЉУБИЦА
+ДИМИТРИЈЕВИЋ ЉУБИНКО
+ДИМИТРИЈЕВИЋ МАРГИТА
+ДИМИТРИЈЕВИЋ МАРИЦА
+ДИМИТРИЈЕВИЋ МИЛАН МР
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛА
+ДИМИТРИЈЕВИЋ МИЛИВОЈ
+ДИМИТРИЈЕВИЋ МИЛКА
+ДИМИТРИЈЕВИЋ МИЛОЈЕ
+ДИМИТРИЈЕВИЋ МИЛОВАН
+ДИМИТРИЈЕВИЋ МИЛУТИН
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИРЧЕ
+ДИМИТРИЈЕВИЋ МИРОСЛАВКА
+ДИМИТРИЈЕВИЋ МИРОСЛАВ
+ДИМИТРИЈЕВИЋ МЛАДЕН
+ДИМИТРИЈЕВИЋ НАДА
+ДИМИТРИЈЕВИЋ НАДА
+ДИМИТРИЈЕВИЋ НЕНАД
+ДИМИТРИЈЕВИЋ НЕВЕНКА
+ДИМИТРИЈЕВИЋ ПАЈА
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПРЕДРАГ
+ДИМИТРИЈЕВИЋ ПРЕДРАГ
+ДИМИТРИЈЕВИЋ РАДИСАВ
+ДИМИТРИЈЕВИЋ РАДИВОЈЕ
+ДИМИТРИЈЕВИЋ РАДИВОЈ
+ДИМИТРИЈЕВИЋ РАТКО
+ДИМИТРИЈЕВИЋ САША
+ДИМИТРИЈЕВИЋ САВА
+ДИМИТРИЈЕВИЋ СЛАВКО
+ДИМИТРИЈЕВИЋ СЛАВОЉУБ
+ДИМИТРИЈЕВИЋ СРЂА
+ДИМИТРИЈЕВИЋ СТАНКО
+ДИМИТРИЈЕВИЋ СТАНОЈЕ
+ДИМИТРИЈЕВИЋ СТЕВАН
+ДИМИТРИЈЕВИЋ СТОЈАДИН
+ДИМИТРИЈЕВИЋ СТОЈАДИН
+ДИМИТРИЈЕВИЋ СВЕТОМИР
+ДИМИТРИЈЕВИЋ ТИХОМИР
+ДИМИТРИЈЕВИЋ ТОМИСЛАВ
+ДИМИТРИЈЕВИЋ ВЕРА
+ДИМИТРИЈЕВИЋ ВИТОМИР
+ДИМИТРИЈЕВИЋ ВУЈИЦА
+ДИМИТРИЈЕВИЋ ВУКОСАВА
+ДИМИТРИЈЕВИЋ ЗЛАТИБОР
+ДИМИТРИЈЕВИЋ ЗОРАН
+ДИМИТРИЈЕВИЋ ЗОРАН
+ДИМИТРИЈЕВИЋ ЗОРИЦА
+ДИМИТРИЈЕВИЋ ЗОРИЦА
+ДИМИТРИЈЕВСКИ МИХАЈЛО
+ДИМИТРОВ ЖИВОЈИН
+ДИМИТРОВ ЂОКА
+ДИМИТРОВ ЂОРЂЕ
+ДИМИТРОВ БОШКО
+ДИМИТРОВ БОРО
+ДИМИТРОВ БРАНИСЛАВ
+ДИМИТРОВ БРАНКО
+ДИМИТРОВ ДИМИТРИЈЕ
+ДИМИТРОВ ДУШАН
+ДИМИТРОВ ДУШАН
+ДИМИТРОВ ЕФТИМ
+ДИМИТРОВ ЈОЦА
+ДИМИТРОВ ПЕТАР
+ДИМИТРОВ РАДИСЛАВ
+ДИМИТРОВ СЛАВКО
+ДИМИТРОВ СОСА
+ДИМИТРОВ СТЕВАН
+ДИМИТРОВ СВЕТИСЛАВ
+ДИМИТРОВ УРОШ
+ДИМИТРОВ ВЕЛИЧКО
+ДИМИТРОВ ЗЛАТА
+ДИМИТРОВСКИ ИЛОНА
+ДИМИТРОВСКИ ЉУБОМИР
+ДИМИТРОВСКИ ЉУБОМИР
+ДИМИТРОВСКИ ПАВЛЕ
+ДИМКОВИЋ БОРИСЛАВ
+ДИМКОВСКИ ГОРАН
+ДИМКОВСКИ ЉУБИША
+ДИМОСКИ НИКОЛА
+ДИМОВ ДИМИТАР
+ДИМОВ ТОДОР
+ДИМОВА КАТИЦА
+ДИМОВИЋ СОФИЈА
+ДИМОВСКИ ЂЕРО
+ДИМОВСКИ АНДРИЈА
+ДИМОВСКИ ЉУБИЦА
+ДИМОВСКИ МАРИНА
+ДИМОВСКИ МИЛИЦА
+ДИМОВСКИ ТРАЈЧЕ
+ДИНЧИЋ КАТИЦА
+ДИНЧИЋ МИЛОРАД
+ДИНЧИЋ СЛОБОДАН
+ДИНЧИЋ СРЕТЕНКА
+ДИНЧИК МАРИЈА
+ДИНИЋ ЧЕДОМИР
+ДИНИЋ БОЖИДАР
+ДИНИЋ БОСА
+ДИНИЋ ЈОШКА
+ДИНИЋ-КНЕЖЕВИЋ ДУШАНКА
+ДИНИЋ МИЛОРАД
+ДИНИЋ РАДОМИР
+ДИНИЋ ВАЛЕРИЈА
+ДИНИЋ ВЛАДЕТА
+ДИНИЋ ЗВОНИМИР
+ДИЊАШКИ ЖАРКО
+ДИЊАШКИ ИРИНА
+ДИЊАШКИ КСЕНИЈА
+ДИЊАШКИ ЛЕПА
+ДИЊАШКИ НЕСТОР
+ДИЊАШКИ СТАНИМИР
+ДИЊАШКИ СТАНКА
+ДИЊАШКИ СТЕВАН
+ДИЊАШКИ ТРИВА
+ДИЊАШКИ ЗДРАВКО
+ДИЊЕШ ЈОСИП
+ДИНУЛОВИЋ РАДОСЛАВ
+ДИОШИ ЈОСИП
+ДИРНЕР АРАНКА
+ДИСИЋ ЉУБИША
+ДИСИЋ ВЛАДИМИР
+ДИТРИХ АНА
+ДИТРИХ РОБЕРТ
+ДИТРИХ ВЛАДИМИР
+ДИВИЋ МИЛЕНКО
+ДИВИЈАЧКИ ДРАГАН
+ДИВИЈАЧКИ ДРАГАН
+ДИВИЛД ЂОРЂЕ
+ДИВИЛД АНДРИЈА
+ДИВИЛД ЈЕЛИСАВЕТА
+ДИВИЛД РАДОСЛАВ
+ДИВЈАК ДУШАН
+ДИВЈАК ДУШАН
+ДИВЈАК ДУШАН
+ДИВЈАК МАРИНКО
+ДИВЈАК МИЛАН
+ДИВЈАК МИЛАН
+ДИВЈАК МИЛАН
+ДИВЈАК САВА
+ДИВЈАКОВИЋ ЂОРЂЕ
+ДИВЈАКОВИЋ БРАНКО
+ДИВЈАКОВИЋ ГАВРА
+ДИВЈАКОВИЋ ЈЕЛИЦА
+ДИВЈАКОВИЋ ЉУБИЦА
+ДИВЈАКОВИЋ МАРИЈА
+ДИВЈАКОВИЋ-РАДИЧЕВА ДОРИНА
+ДИВЈАКОВИЋ СТЕВАН
+ДИВЈАКОВИЋ ТОДОР
+ДИВЈАКОВИЋ ВЛАДА
+ДИВЉАК АЛЕКСАНДАР
+ДИВЉАК АНГЕЛИНА
+ДИВЉАК БОШКО
+ДИВЉАК ДЕСИМИР
+ДИВЉАК ДОБРИВОЈ
+ДИВЉАК ДРАГО
+ДИВЉАК МИРОСЛАВ
+ДИВЉАК МИРОСЛАВ
+ДИВЉАК РАТКО
+ДИВЉАК ЗДРАВКО
+ДИВЉАКОВИЋ ДРАГУТИН
+ДИВЉАКОВИЋ ИВАНКА
+ДИВЉАН НЕНАД
+ДИВНИЋ ЖИВАН
+ДИВНИЋ ЂОРЂЕ
+ДИВНИЋ ЈЕЛКА
+ДИВНИЋ МИРЈАНА
+ДИВНИЋ ПАЈА
+ДИВНИЋ СЛОБОДАН
+ДИВНИЋ СОЊА
+ДИВНИЋ СВЕТОЗАР
+ДИВОВИЋ РАДОВАН
+ДИЗДАР АНЂА
+ДИЗДАР АНКИЦА
+ДИЗДАР ИВИЦА
+ДИЗДАР ЈОСИП
+ДИЗДАР ЈУРЕ
+ДИЗДАР ЈУРО
+ДИЗДАР МАРИЈА
+ДИЗДАР МАРКО
+ДИЗДАР ПАВО
+ДИЗДАР САРАФИНА
+ДИЗДАР ВЛАДО
+ДИЗДАРЕВИЋ РАДОЉУБ
+ДЛУХИ ЈОСИП
+ДМИТРАШИНОВИЋ РАДЕ
+ДМИТРИЈЕВ ЛИДИЈА
+ДМИТРОВИЋ ДАНИЦА
+ДМИТРОВИЋ ЉИЉАНА
+ДМИТРОВИЋ МИЛОШ
+ДМИТРОВИЋ МИРЈАНА
+ДМИТРОВИЋ РАДЕНКО ЛЕКАР
+ДМИТРОВИЋ СТЕВАН
+ДМИТРОВИЋ СТЕВАН
+ДОШЕМОВИЋ ПРЕДРАГ
+ДОШЕН ЖИВАДИН
+ДОШЕН БИЉАНА
+ДОШЕН БРАНКО
+ДОШЕН ДЕСАНКА
+ДОШЕН ДРАГАН
+ДОШЕН ДУШАН
+ДОШЕН ДУШАН
+ДОШЕН ДУШАН
+ДОШЕН ДУБРАВКА
+ДОШЕН ХРИСТИНА ДР
+ДОШЕН ИЛИЈА
+ДОШЕН ИВАН
+ДОШЕН ИВАН
+ДОШЕН ЈЕЛЕНА
+ДОШЕН МИЛАН
+ДОШЕН МИЛАН
+ДОШЕН МИЛЕ
+ДОШЕН МИЛОШ
+ДОШЕН РАДОСЛАВ
+ДОШЕН РАДОСЛАВ
+ДОШЕН РАТКО
+ДОШЕН СВЕТЛАНА
+ДОШЕН ВОЈИН
+ДОШЕНОВИЋ ЧЕДОМИР
+ДОШЕНОВИЋ МИЛИВОЈЕ
+ДОШЕНОВИЋ МИРОСЛАВА
+ДОШЕНОВИЋ ВАСИЉКА
+ДОШЕНОВИЋ ВОЈИН
+ДОШИЋ ГИЗЕЛА
+ДОШЛИЋ МИЛИЦА
+ДОШЛИЋ НЕНАД
+ДОШЛИЋ РАДОСЛАВ
+ДОШЛОВ КРСТО
+ДОШЛОВ СЛАВИЦА
+ДОЖИЋ ЉИЉАНА
+ДОЖИЋ МАРИЦА
+ДОЖИЋ СТЕВАН
+ДОЖИЋ СТЕВАН
+ДОЖИЋ СВЕТИСЛАВ
+ДОЖИЋ ВАСИЉКА
+ДОБАН МАРЧЕЛ
+ДОБАНОВАЧКИ ЧЕДОМИР
+ДОБАНОВАЧКИ АЛЕКСАНДАР
+ДОБАНОВАЧКИ БОРИСЛАВ
+ДОБАНОВАЧКИ БРАНИСЛАВ
+ДОБАНОВАЧКИ ДОБРИНКА
+ДОБАНОВАЧКИ ДУШАНКА
+ДОБАНОВАЧКИ ДУШАНКА
+ДОБАНОВАЧКИ ДУШАН
+ДОБАНОВАЧКИ ИРЕНА
+ДОБАНОВАЧКИ ЈЕЛКА
+ДОБАНОВАЧКИ ЈУЛКА
+ДОБАНОВАЧКИ ЈУЛКИЦА
+ДОБАНОВАЧКИ МАКСИМ
+ДОБАНОВАЧКИ МИЛАН
+ДОБАНОВАЧКИ МИЛАН
+ДОБАНОВАЧКИ МИРЈАНА
+ДОБАНОВАЧКИ МИРКО
+ДОБАНОВАЧКИ ПЕТАР
+ДОБАНОВАЧКИ РАДОМИР
+ДОБАНОВАЧКИ САВА
+ДОБАНОВАЧКИ САВА
+ДОБАНОВАЧКИ-САВИЋ ТИНКА
+ДОБАНОВАЧКИ СТЕВАН
+ДОБАНОВАЧКИ ТИНКА
+ДОБАНОВАЧКИ ЗОРИЦА
+ДОБАНОВИЋ СОФИЈА
+ДОБЕШ ЈОВАН
+ДОБИ ЈУЛИЈАНА
+ДОБИЋ БРАНИСЛАВ
+ДОБИЋ ПЕТАР
+ДОБО ИЛЕШ
+ДОБО ЈОЖЕФ
+ДОБО ЈОЖЕФ
+ДОБОШ ЈОЖЕФ
+ДОБОШИ ШАНДОР
+ДОБОШИ ЂЕРЂ
+ДОБОШИ ЕРЖЕБЕТ
+ДОБОШИ ЈАНОШ
+ДОБОШИ ЛАСЛО
+ДОБОШИ МАГДАЛЕНА
+ДОБОШИ МАРГИТА
+ДОБОШИ ПАЛ
+ДОБОКАИ МИХАЈЛО
+ДОБОВИЧЕК ФРАНЦ
+ДОБРА ИВАН
+ДОБРАШ МИЛКА
+ДОБРАН СЛАВКО
+ДОБРАНИЋ РАДОВАН
+ДОБРАНИЋ ВИДОСАВА
+ДОБРЕ БОЖА
+ДОБРЕНОВ ДУШАН ДИПЛ ИНГ
+ДОБРЕНОВ ГРЕТА
+ДОБРЕНОВ ЈЕЛИСАВЕТА
+ДОБРЕНОВ ЈЕЛИСАВЕТА
+ДОБРЕНОВ НИКОЛА
+ДОБРЕНОВ САНДРА
+ДОБРЕНОВ ВОЈИН
+ДОБРЕТИЋ МАРИЦА
+ДОБРИЧКИ ДУШАН
+ДОБРИЧКИ МАРИЈА
+ДОБРИЋ ЖИВКО
+ДОБРИЋ ЂОРЂЕ
+ДОБРИЋ БОШКО
+ДОБРИЋ БРАНИСЛАВ
+ДОБРИЋ ЕРЖЕБЕТ
+ДОБРИЋ ГОЈКО
+ДОБРИЋ ЈОВАН
+ДОБРИЋ КОСТА
+ДОБРИЋ ЉУБИЦА
+ДОБРИЋ МИЛАДИН
+ДОБРИЋ МИЛАН
+ДОБРИЋ МИЛАН
+ДОБРИЋ НЕГОСАВА
+ДОБРИЋ РАДИСЛАВ
+ДОБРИЋ РАДИВОЈ
+ДОБРИЋ СЛОБОДАН
+ДОБРИЋ СТЕВАН
+ДОБРИЋ УГЉЕША
+ДОБРИЋ ВЕРОНИКА
+ДОБРИЋ ВЕСНА
+ДОБРИЋ ЗДРАВКО
+ДОБРИЈЕВИЋ ДУШАН
+ДОБРИЈЕВИЋ ПЕТАР
+ДОБРИЈЕВИЋ СЛОБОДАНКА
+ДОБРИЛОВИЋ РАЈКО
+ДОБРИЛОВИЋ РАЈКО
+ДОБРИЛОВИЋ СИМА
+ДОБРИН ДЕЖЕ
+ДОБРИН НИКОЛА
+ДОБРИН ОЛГА
+ДОБРИНИЋ ДАРИНКА
+ДОБРИВОЈЕВИЋ ДУШАН
+ДОБРИВОЈЕВИЋ СВЕТЛАНА
+ДОБРЊАЦ СТОЈАНКА
+ДОБРОДЕЛ ФРАЊО
+ДОБРОДОЛСКИ ЈЕЛЕНА
+ДОБРОДОЛСКИ ЈУЛКА
+ДОБРОДОЛСКИ ВУКИЦА
+ДОБРОКЕС МИЛЕНА
+ДОБРОМИРОВ АЛЕКСАНДАР
+ДОБРОМИРОВ АЛЕКСАНДАР
+ДОБРОМИРОВ ДУШАН
+ДОБРОМИРОВ ЕУФИМИЈА
+ДОБРОМИРОВ НАДА
+ДОБРОМИРОВ ПЕТАР
+ДОБРОМИРОВ ВИТОМИР
+ДОБРОМИРОВ ВЛАДИМИР
+ДОБРОМИРОВ ВОЈИСЛАВ
+ДОБРОМИРОВИЋ ПАВЛЕ
+ДОБРОСАВЉЕВ ЛАЗАР
+ДОБРОСАВЉЕВ ЛАЗАР
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛОВАН
+ДОБРОСАВЉЕВ МИРА
+ДОБРОСАВЉЕВ ПЕТАР
+ДОБРОСАВЉЕВ РАДА
+ДОБРОСАВЉЕВ РАНКО
+ДОБРОСАВЉЕВ САВА
+ДОБРОСАВЉЕВ СВЕТОЗАР
+ДОБРОСАВЉЕВИЋ ДРЕНКА
+ДОБРОСАВЉЕВИЋ СЛАВКО
+ДОБРОСАВЉЕВИЋ ВАСА НОВИНАР
+ДОБРОСАВЉЕВИЋ ВАСИЛИЈЕ
+ДОБРОСАВЉЕВИЋ ВАСИЛИЈЕ
+ДОБРОТА БИСЕРКА
+ДОБРОТА ДАМИР
+ДОБРОВИЋ АЛЕКСАНДРА
+ДОБРОВИЋ ДАМЈАНКА
+ДОБРОВИЋ ЉУБОМИР
+ДОДЕРОВИЋ МИЛОСАВ
+ДОДЕРОВИЋ РАДИВОЈ
+ДОДИЋ ИВАН
+ДОДИЋ ЈЕЛЕНА
+ДОДИЋ МИЛИВОЈ
+ДОДИЋ МИОДРАГ
+ДОДИЋ МИОДРАГ
+ДОДИЋ САВА
+ДОДИЋ СЛОБОДАН
+ДОДИЋ СТАНОЈЕ
+ДОДИЋ СТОЈАН
+ДОДИЋ ВЕРА
+ДОДИК БАРТОЛ
+ДОДИК СТЕВАН
+ДОДЛЕК ВЛАДИМИР
+ДОДОШ ЛАЗАР
+ДОГАНЏИЋ ДОБРИВОЈЕ
+ДОЈЧИНОВИЋ ЂУЈА
+ДОЈЧИНОВИЋ ЂУРЂИЦА
+ДОЈЧИНОВИЋ БЛАГОЈЕ
+ДОЈЧИНОВИЋ БОЖИДАР
+ДОЈЧИНОВИЋ ДУШАН
+ДОЈЧИНОВИЋ ЈОСИФ
+ДОЈЧИНОВИЋ МИХАЈЛО
+ДОЈЧИНОВИЋ МИРОСЛАВ ДР
+ДОЈЧИНОВИЋ РАДОСЛАВ
+ДОЈЧИНОВИЋ ВЛАДА
+ДОЈЧИНОВСКИ ВАНЧА
+ДОЈДЕР ИВО
+ДОЈДЕР ЈАКОВ
+ДОЈИЋ ЛАЗАР
+ДОЈКИЋ БОЖИДАР
+ДОЈКИЋ ЈУЛКИЦА
+ДОЈКИЋ КСЕНИЈА
+ДОЈКИЋ МАРИЈА
+ДОЈКИЋ МИЛОРАД
+ДОЈКИЋ МИЛОРАД
+ДОЈКИЋ МЛАДЕН
+ДОЈКИЋ МЛАДЕН
+ДОЈКИЋ ПАЈА
+ДОЈКИЋ ПЕТАР ДР
+ДОЈКИЋ ПЕТАР
+ДОЈКИЋ РАЈКО
+ДОЈКИЋ РАЈКО
+ДОЈКИЋ СЛАВКО
+ДОЈКИЋ ВЈЕКОСЛАВ
+ДОКЛЕАН АДАМ
+ДОКМАНОВИЋ БОРИВОЈ
+ДОКМАНОВИЋ ДЕЈАН
+ДОКМАНОВИЋ МАРИЈА
+ДОКМАНОВИЋ МИЛИЦА
+ДОКМАНОВИЋ НАДА
+ДОКМАНОВИЋ РАДИВОЈ
+ДОКНИЋ ВЕЉКО
+ДОКОШИЋ МАРИЈА
+ДОЛАШ МИЛОВАН
+ДОЛЕНЕЦ ФЛОРИЈАН
+ДОЛГА МИЛЕНА
+ДОЛИНАЈ ЂУРО
+ДОЛИНАЈ ЈАРОСЛАВА
+ДОЛИНАР ЉУБИЦА
+ДОЛИНГА МАРИОРА
+ДОЛИНГА НИКОЛАЈЕ
+ДОЛОШ ФРАЊА
+ДОЛОВЧАК КАТИЦА
+ДОЛОВАЦ АНКИЦА
+ДОЛОВАЦ БИСЕРКА
+ДОЛОВАЦ ДРАГИЦА
+ДОЛОВАЦ ЈОВАН
+ДОЛОВАЦ ЛАЗАР
+ДОЛОВАЦ ЛАЗАР
+ДОЛОВАЦ МАРИЈА
+ДОЛОВАЦ МИЛИЦА
+ДОЛОВАЦ МИЛОШ
+ДОЛОВАЦ РАДИВОЈ
+ДОЛОВАЦ РАДОСЛАВ
+ДОЛОВАЦ РАДОСЛАВ
+ДОЛОВАЦ СЛАВКО
+ДОЛОВАЦ СЛАВКО
+ДОЛОВАЦ СЛОБОДАН
+ДОЛОВАЦ ВЕЛИМИР
+ДОЛОВАЦ ЗОРКА
+ДОМАСТОВИЋ ДАНИЦА
+ДОМАЗЕТ НИКОЛА
+ДОМАЗЕТ ЗОРИЦА
+ДОМАЗЕТОВ ВЕЛИМИР
+ДОМАЗЕТОВИЋ ЧЕДОМИР
+ДОМАЗЕТОВИЋ МИРЈАНА
+ДОМАЗЕТОВИЋ МИРЈАНА
+ДОМБИ ЛАСЛО
+ДОМБИ РАДОЈКА
+ДОМБИ СМИЉКА
+ДОМИНИЋ АНА
+ДОМИНИЋ НИКОЛА
+ДОМОЊИ МАРТИН
+ДОМОНКОШ ЕВА
+ДОМОНКОШ ВИЛМОШ
+ДОМОНКОС ИШТВАН
+ДОМОВИЋ МИЛАН
+ДОНЧЕВ ТОДЕ
+ДОНЧИЋ НАДА
+ДОНАТ ДРАГУТИН
+ДОНАТ САВЕТА
+ДОНДУР ЖИВКО
+ДОНДУР ДАНИЦА
+ДОНДУР ДАРИНКА
+ДОНДУР МИЛИЦА
+ДОНДУР СЛАВКО
+ДОНДУР СТАНКО
+ДОНДУР ЗДРАВКО
+ДОНЕВ ТОДОР
+ДОНЕВСКИ ЈЕЛЕНА
+ДОНЕВСКИ КРИСТИНА
+ДОНИЋ ЖИВОЈИН
+ДОНКОР ЏЕМС
+ДОНСКОВ СЕРГИЈЕ
+ДОНСКОВА ЗОЈА ДР ЛЕКАР
+ДОПУЂ БОЖИДАР
+ДОПУЂ БРАНКО
+ДОПУЂ ДУБРАВКА
+ДОПУЂ ГОРАН
+ДОПУЂ МАРИЈА
+ДОПУЂ МИЛАН ДР
+ДОПУЂ МИРОСЛАВА
+ДОПУЂА ЖИВКО
+ДОПУЂА ДАРА
+ДОПУЂА ДРАГОМИР
+ДОПУЂА САВА
+ДОПУЂА ВЛАДИМИР
+ДОРЧИЋ АЛОЈЗА
+ДОРЧИЋ-БИКИЋ ОЛГИЦА
+ДОРЧИЋ БОЖО
+ДОРЧИЋ КЛЕМЕНТ
+ДОРЧИЋ МАРЈАН
+ДОРИЋ ЖАРКО
+ДОРИЋ БИЉАНА
+ДОРИЋ БИЉАНА
+ДОРИЋ БОРИСЛАВ
+ДОРИЋ ФРАЊА
+ДОРИЋ ИЛИЈА
+ДОРИЋ ИРМА
+ДОРИЋ ЈОСИП
+ДОРИЋ ПЕТАР
+ДОРИЋ СТЕВАН
+ДОРИЋ ВЕСЕЛИН
+ДОРКО СОФИЈА
+ДОРМАН ЛАСЛО
+ДОРО ГЕЗА ДР
+ДОРОШЕВ ЂОРЂЕ
+ДОРОШКИ ЂОРЂЕ
+ДОРОШКИ БРАНКО
+ДОРОШКИ ДЕСАНКА
+ДОРОШКИ ЈОВАН ДР
+ДОРОШКИ ЉИЉАНА
+ДОРОШКИ МАРИЈА
+ДОРОШКИ МИЛАН
+ДОРОШКИ МИЛА
+ДОРОШКИ МИРЈАНА
+ДОРОШКИ НИКОЛА
+ДОРОШКИ СИМА
+ДОРОШКИ ВИДОСАВА
+ДОРОШКИ ВУЈАДИН
+ДОРОЦКИ МАХАЛ
+ДОРОГХАЗИ ИРИНА
+ДОРОГИ ШАНДОР
+ДОРОЊСКИ ДУШАН
+ДОРОЊСКИ КАТАРИНА
+ДОРОСЛОВАЧКИ ЂУРА
+ДОРОСЛОВАЧКИ АЛЕКСАНДАР
+ДОРОСЛОВАЧКИ АНИЦА
+ДОРОСЛОВАЧКИ ДАНИЦА
+ДОРОСЛОВАЧКИ ГРУЈА
+ДОРОСЛОВАЧКИ ЈЕЛЕНА
+ДОРОСЛОВАЧКИ КСЕНИЈА
+ДОРОСЛОВАЧКИ МАРГИТА
+ДОРОСЛОВАЧКИ МАРИНА
+ДОРОСЛОВАЧКИ МАРЈАНА
+ДОРОСЛОВАЧКИ МИРОСЛАВ
+ДОРОСЛОВАЧКИ НИКОЛА
+ДОРОСЛОВАЧКИ РАДЕ
+ДОРОСЛОВАЧКИ САВЕТА
+ДОРОСЛОВАЧКИ СТЕВАНКА
+ДОРОСЛОВАЧКИ ВУЈА
+ДОРОСЛОВАЧКИ ВУКА
+ДОРОСЛОВАЦ БРАНИСЛАВА
+ДОРОСЛОВАЦ ЛАЗАР
+ДОРОСЛОВАЦ МАРИЈА
+ДОРОСЛОВАЦ МИЛАНА
+ДОРОСЛОВАЦ МИРОСЛАВ
+ДОРОСЛОВАЦ ПЕТАР
+ДОРОСЛОВАЦ ЗОРАН
+ДОРОТИЋ ЂОРЂЕ
+ДОРОТИЋ ЂОРЂЕ
+ДОРОТИЋ ГИЗЕЛА
+ДОРОТИЋ ГОРДАН
+ДОРОТИЋ-ГУТЕША ЛЕОНА
+ДОРОТИЋ ИЛА МР ПРОФ
+ДОРОТИЋ МАРИЈА
+ДОРОТИЋ СТЕВАН
+ДОРОТКА ДРАГАН
+ДОРОТКА МИЛОШ
+ДОСТАН АНА
+ДОСТАН АРПАД
+ДОСТАН ДАРИНКА
+ДОСТАН ИШТВАН
+ДОСТАН ЈОЖЕФ
+ДОСТАН ЛАДИСЛАВ
+ДОСТАН ПЕТАР
+ДОСТАН СТЕВАН
+ДОСТАН ТИБОР
+ДОСТАНИЋ ДРАГИЦА
+ДОСТАНИЋ РАДМИЛО
+ДОСТАНИЋ ВОИСЛАВ
+ДОСТАЊ ЈОСИП
+ДОСТАЊ РОЗАЛИЈА
+ДОСТИЋ СЛАВКО
+ДОСТИЋ СОФИЈА
+ДОТЛИЋ ЖИВКО
+ДОТЛИЋ БОШКО
+ДОТЛИЋ БОРИСЛАВ
+ДОТЛИЋ ДОБРИЛА
+ДОТЛИЋ ДУШАН
+ДОТЛИЋ ЛАЗАР
+ДОТЛИЋ ЛАЗАР
+ДОТЛИЋ ЛУКА
+ДОТЛИЋ САВА
+ДОТЛИЋ СОФИЈА
+ДОТЛИЋ ВАСА
+ДОТОВ ДРАГО
+ДОВАТ ПАВЛЕ ДР
+ДОВАТ ВЛАДИМИР
+ДОВАТОВ АДАМ
+ДОВЕДЕН БОРИСЛАВ
+ДОВГАН ЈОСИП
+ДОВИЈАРОВ МИЛОШ
+ДОВИЈАРОВ РАДИВОЈ
+ДОВИЈАРСКИ БРАНКА
+ДОВИЈАРСКИ МИЛЕНА
+ДОВИЈАРСКИ СТАНИМИР
+ДОВНИКОВИЋ ЛАЗАР
+ДОЗЕТ ЂОРЂЕ
+ДОЗЕТ БОЖО
+ДОЗЕТ ДРАГИЦА
+ДОЗЕТ ИЛИЈА
+ДОЗЕТ ЈАСНА
+ДОЗЕТ ЈУЛКИЦА
+ДОЗЕТ ЉУБИЦА
+ДОЗЕТ ЉУБОМИР
+ДОЗЕТ МИХАЈЛО
+ДОЗЕТ МИЛАН
+ДОЗЕТ МИЛОВАН
+ДОЗЕТ НИКОЛА
+ДОЗЕТ РАДЕ
+ДОЗЕТ РАДМИЛА
+ДОЗЕТ РАДОСЛАВКА
+ДОЗЕТ САВКА
+ДОЗЕТ СТАНКО
+ДРЧА АНА
+ДРЧА БРАНКО
+ДРЧА ДРАГИЦА
+ДРЧА ЈАНКО
+ДРЧА МИЛАН
+ДРЧА РАТКО
+ДРЧА СЛАВКО
+ДРЧА СТЕВАН
+ДРЧА-УРГЕН МАРИЈА
+ДРЧА ВЛАТКО
+ДРЧЕЛИЋ ДОБРИСАВ
+ДРЧЕЛИЋ МИРЈАНА
+ДРЖАЈИЋ ДИМИТРИЈЕ ПРОФЕСОР
+ДРЖИЋ ИЛИЈА
+ДРАЧА ЖИВКО
+ДРАЧА ЂОРЂЕ
+ДРАЧА АЦА
+ДРАЧА ДУБРАВКА
+ДРАЧА МИЛЕ
+ДРАЧА ПЕТАР ДР
+ДРАЧА ПЕТАР
+ДРАЧА СПАСЕНКА
+ДРАЧА ТОМО ДР
+ДРАЧИН КОСТА
+ДРАШИЋ НАТАЛИЈА
+ДРАШКО ЈЕЛКА
+ДРАШКО МИЛОВАН
+ДРАШКО СЛОБОДАН
+ДРАШКОВИЋ БРАНКО ДИПЛ ОЕЦ
+ДРАШКОВИЋ ДРАГА
+ДРАШКОВИЋ ДУШАН
+ДРАШКОВИЋ ЉУБОМИР
+ДРАШКОВИЋ МИХАЈЛО
+ДРАШКОВИЋ МИЛОМИР
+ДРАШКОВИЋ МИЛОРАД
+ДРАШКОВИЋ НЕНАД
+ДРАШКОВИЋ САВО
+ДРАШКОВИЋ СЛОБОДАНКА
+ДРАШКОВИЋ СЛОБОДАН
+ДРАШКОВИЋ СРЕТЕН
+ДРАЖЕТА МИЛЕНКО
+ДРАЖЕТА СТЕВАН
+ДРАЖЕТИН ДУШАН
+ДРАЖЕТИН МЛАДЕН
+ДРАЖИЋ ЖАРКО
+ДРАЖИЋ ЂОРЂЕ
+ДРАЖИЋ ЂОРЂЕ
+ДРАЖИЋ АЛЕКСАНДАР
+ДРАЖИЋ БОГДАН
+ДРАЖИЋ БУДО
+ДРАЖИЋ ДОБРИВОЈ
+ДРАЖИЋ ДРАГОЉУБ
+ДРАЖИЋ ДУШАН
+ДРАЖИЋ ДУШАН
+ДРАЖИЋ ЕМИЛ
+ДРАЖИЋ ГОРДАНА
+ДРАЖИЋ ИЛИЈА
+ДРАЖИЋ ИЛИЈА
+ДРАЖИЋ ИРЕНА
+ДРАЖИЋ ЈАША
+ДРАЖИЋ ЈЕЛИЦА
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ КАТИЦА
+ДРАЖИЋ КОСТА
+ДРАЖИЋ ЛАЗАР
+ДРАЖИЋ ЉУБИЦА
+ДРАЖИЋ МАРИЈА
+ДРАЖИЋ МИЛАН
+ДРАЖИЋ МИЛАН
+ДРАЖИЋ МИЛЕНКО
+ДРАЖИЋ МИЛЕНКО
+ДРАЖИЋ МИЛИНКО ДИПЛ ИНГ
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИРА
+ДРАЖИЋ МИТА
+ДРАЖИЋ НАТАЛИЈА
+ДРАЖИЋ НАТАЛИЈА
+ДРАЖИЋ НЕСТОР
+ДРАЖИЋ НЕВЕНКА
+ДРАЖИЋ НИКОЛА
+ДРАЖИЋ НИКОЛА
+ДРАЖИЋ ОСТОЈА
+ДРАЖИЋ ПЕТАР
+ДРАЖИЋ РАДОВАН
+ДРАЖИЋ РЕЉА
+ДРАЖИЋ СЛАВКО
+ДРАЖИЋ СОФИЈА
+ДРАЖИЋ СТАНКО
+ДРАЖИЋ СТЕВАН
+ДРАЖИЋ СТЕВАН
+ДРАЖИЋ СУЗАНА
+ДРАЖИЋ ТОМИСЛАВ
+ДРАЖИЋ ВЕЛИНКА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ЗЛАТКО
+ДРАЖИЛОВИЋ СТАНИША
+ДРАЖИН БОРИСЛАВ
+ДРАГАШ ЂОРЂЕ
+ДРАГАШ ЂУРО
+ДРАГАШ БОРИСЛАВ
+ДРАГАШ БРАНКО
+ДРАГАШ ДРАГОМИР
+ДРАГАШ ИВАН
+ДРАГАШ КАТИЦА
+ДРАГАШ-КОВАЧ ЉУБИЦА
+ДРАГАШ ЛЕПОСАВА
+ДРАГАШ ЉУБИЦА
+ДРАГАШ ЉУБИЦА
+ДРАГАШ МАНОЈЛО
+ДРАГАШ МИЛАН
+ДРАГАШ МИЛЕНКО
+ДРАГАШ МИРА
+ДРАГАШ МИРЈАНА
+ДРАГАШ МОМЧИЛО
+ДРАГАШ РАДИВОЈ
+ДРАГАШ РАДОМИР
+ДРАГАШ СПОМЕНКА
+ДРАГАШ СВЕТЛАНА
+ДРАГАШ ЗОРАН
+ДРАГАШЕВ ВЛАДИМИР
+ДРАГАН МИЛЕНА
+ДРАГАНИЋ ДРАГА
+ДРАГАНИЋ ЈАНКО
+ДРАГАНИЋ МИХАЈЛО
+ДРАГАНИЋ МИЛИЦА ДР
+ДРАГАНИЋ МИЛКА
+ДРАГАНИЋ МИРКО
+ДРАГАНИЋ МИРОСЛАВ
+ДРАГАНИЋ НАДЕЖДА
+ДРАГАНИЋ РАНКО
+ДРАГАНИЋ ВИДА
+ДРАГАНИЋ ЗЕКО
+ДРАГАНОВ МИЛОШ
+ДРАГАНОВ ОЛГА
+ДРАГАНОВ СЛОБОДАН
+ДРАГАНОВ СТОЈАНКА
+ДРАГАНОВИЋ СЛАВКО
+ДРАГЕЉЕВИЋ ДУШАН
+ДРАГЕЉЕВИЋ ЈОВАН
+ДРАГИЧЕВИЋ АДАМ
+ДРАГИЧЕВИЋ АЛЕКСАНДАР
+ДРАГИЧЕВИЋ БОРИСЛАВ
+ДРАГИЧЕВИЋ ГОЈКО
+ДРАГИЧЕВИЋ ИЛИНКА
+ДРАГИЧЕВИЋ ИВКА
+ДРАГИЧЕВИЋ КРЕШИМИР
+ДРАГИЧЕВИЋ ЛАЗАР
+ДРАГИЧЕВИЋ ЉУБИЦА
+ДРАГИЧЕВИЋ ЉУБОМИР
+ДРАГИЧЕВИЋ МИЉА
+ДРАГИЧЕВИЋ МИЛОШ
+ДРАГИЧЕВИЋ МИРКО
+ДРАГИЧЕВИЋ РАДЕНКО
+ДРАГИЧЕВИЋ СПАСА
+ДРАГИЧЕВИЋ СРЕТЕН
+ДРАГИЧЕВИЋ ВОЈИН
+ДРАГИЧЕВИЋ ВОЈИСЛАВ
+ДРАГИЧЕВИЋ ЗОРАН
+ДРАГИША ЖАРКО
+ДРАГИШИЋ БОГДАН
+ДРАГИШИЋ БОРИСЛАВКА
+ДРАГИШИЋ ЈОВАНКА
+ДРАГИШИЋ НИКОЛА
+ДРАГИШИЋ ПЕТАР
+ДРАГИШИЋ РАДЕ
+ДРАГИЋ ЧЕДОМИР
+ДРАГИЋ ЖЕЉКО
+ДРАГИЋ ЂОРЂЕ
+ДРАГИЋ АНА
+ДРАГИЋ БРАНКО
+ДРАГИЋ ДУШАН
+ДРАГИЋ ДУШАН
+ДРАГИЋ ЕЛВИРА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ЈЕЛЕНА
+ДРАГИЋ ЉУБИША
+ДРАГИЋ ЉУБИША
+ДРАГИЋ МАРИЈАНА
+ДРАГИЋ МИЛЕНКО
+ДРАГИЋ МИЛИВОЈЕ
+ДРАГИЋ МИЛКА
+ДРАГИЋ МИЛОРАД
+ДРАГИЋ НАДА
+ДРАГИЋ НЕДЕЉКО
+ДРАГИЋ НЕВЕНКА
+ДРАГИЋ НИКОЛА
+ДРАГИЋ ОБРАД
+ДРАГИЋ ПАУЛА
+ДРАГИЋ ПАВЛЕ
+ДРАГИЋ ПЕРА
+ДРАГИЋ ПЕТАР
+ДРАГИЋ ПЕТАР
+ДРАГИЋ РАНКО
+ДРАГИЋ САВА
+ДРАГИЋ СЛАВКО
+ДРАГИЋ СПАСОЈЕ
+ДРАГИЋ СТЕВАН
+ДРАГИЋ СТЕВАН
+ДРАГИЋ ТОМИСЛАВ
+ДРАГИЋ ВЕРА
+ДРАГИЋ ВЕСНА
+ДРАГИЋЕВИЋ БОГИЦА
+ДРАГИЋЕВИЋ БОРИСЛАВ
+ДРАГИЋЕВИЋ БРАНИСЛАВ
+ДРАГИЋЕВИЋ РАЈИЦА
+ДРАГИН ЖАРКО
+ДРАГИН БОГДАН
+ДРАГИН БОРИВОЈ
+ДРАГИН ДАНИЛО
+ДРАГИН ДЕСАНКА
+ДРАГИН ДУШКО
+ДРАГИН ГОРДАНА
+ДРАГИН ЈОВАН ДИПЛ ИНГ
+ДРАГИН ЈОВО ДИПЛ ИНГ
+ДРАГИН ЛАЗАР
+ДРАГИН МАРКО
+ДРАГИН МИОДРАГ
+ДРАГИН МИОДРАГ
+ДРАГИН НИКОЛА
+ДРАГИН ПЕТРИЈА
+ДРАГИН РАДИВОЈ
+ДРАГИН РИСТО
+ДРАГИН САША
+ДРАГИН СОКИЦА
+ДРАГИН СТЕВАН
+ДРАГИН СВЕТИСЛАВ
+ДРАГИН ВАСА
+ДРАГИН ВОЈИСЛАВ
+ДРАГИН ЗОРАН
+ДРАГИНЧИЋ ДУШАН
+ДРАГИНЧИЋ СЛАВКО
+ДРАГОШЕВ ДРАГАН
+ДРАГОЈЕВИЋ ЖЕЉКО
+ДРАГОЈЕВИЋ АНЂЕЛКО
+ДРАГОЈЕВИЋ БОШКО
+ДРАГОЈЕВИЋ БРАНИСЛАВ
+ДРАГОЈЕВИЋ ДАРИНКА
+ДРАГОЈЕВИЋ ДРАГУТИН
+ДРАГОЈЕВИЋ ГОЈКО
+ДРАГОЈЕВИЋ ХРИСТИНА
+ДРАГОЈЕВИЋ ЉУБОМИР
+ДРАГОЈЕВИЋ МИЛЕНА
+ДРАГОЈЕВИЋ МИЛЕНКО
+ДРАГОЈЕВИЋ МИЛЕНКО
+ДРАГОЈЕВИЋ МИЛИЦА
+ДРАГОЈЕВИЋ МИЛОРАД
+ДРАГОЈЕВИЋ НИКОЛА
+ДРАГОЈЕВИЋ РАДИША
+ДРАГОЈЕВИЋ СТЕВАН
+ДРАГОЈЕВИЋ ЗЛАТАНА
+ДРАГОЈЛОВ АНКИЦА
+ДРАГОЈЛОВ БОШКО
+ДРАГОЈЛОВ ДУШАН
+ДРАГОЈЛОВ ДУБРАВКА
+ДРАГОЈЛОВ ГАВРА
+ДРАГОЈЛОВ ЛАЗАР
+ДРАГОЈЛОВ МАРГИТА
+ДРАГОЈЛОВ МИЛОШ
+ДРАГОЈЛОВ МИЛОШ
+ДРАГОЈЛОВ МИРОСЛАВ
+ДРАГОЈЛОВ ВОЈИСЛАВ
+ДРАГОЈЛОВИЋ ДУШКО
+ДРАГОЈЛОВИЋ ЛАЗАР
+ДРАГОЈЛОВИЋ МАРА
+ДРАГОЈЛОВИЋ МИЛАН
+ДРАГОЈЛОВИЋ МИЛАН
+ДРАГОЈЛОВИЋ ЗОРИЦА
+ДРАГОЉЕВИЋ ГОЈКО
+ДРАГОЉЕВИЋ МАРИНКО
+ДРАГОЉЕВИЋ МИТАР
+ДРАГОЉЕВИЋ РАНКО
+ДРАГОЉЕВИЋ СЕКУЛА
+ДРАГОЉЕВИЋ СТОЈАН
+ДРАГОЉЕВИЋ ВЛАДЕ
+ДРАГОМИРОВИЋ ЂОКА
+ДРАГОМИРОВИЋ ДИМИТРИЈЕ
+ДРАГОМИРОВИЋ ДРАГИЦА
+ДРАГОМИРОВИЋ ИВАН
+ДРАГОМИРОВИЋ ЉУБИЦА
+ДРАГОМИРОВИЋ САВА
+ДРАГОМИРОВИЋ ТОДОР
+ДРАГОСАВАЦ АНГЕЛИНА
+ДРАГОСАВАЦ ИЛИЈА
+ДРАГОСАВАЦ КАТИЦА
+ДРАГОСАВАЦ МЕЛАНИЈА
+ДРАГОСАВАЦ МИЛАНКО
+ДРАГОСАВАЦ МИЛОРАД
+ДРАГОСАВАЦ НИКОЛА
+ДРАГОСАВАЦ ЗУЗАНА
+ДРАГОСАВЉЕВИЋ ЂУРА
+ДРАГОСАВЉЕВИЋ ЉИЉАНА
+ДРАГОСАВЉЕВИЋ МАРИЈА
+ДРАГОСАВЉЕВИЋ МИРЈАНА
+ДРАГОСАВЉЕВИЋ МЛАДЕН
+ДРАГОСАВЉЕВИЋ СТЕВА ДИПЛ ИНГ
+ДРАГОСАВЉЕВИЋ СТОЈША
+ДРАГОСАВЉЕВИЋ ВОЈА
+ДРАГОСЛАВИЋ ВИДАК
+ДРАГОВАЦ СЛАВКО
+ДРАГОВИЋ ЧЕДО
+ДРАГОВИЋ БУДИМИР
+ДРАГОВИЋ ДРАГАН
+ДРАГОВИЋ ГОЈКО
+ДРАГОВИЋ ГОРДАНА
+ДРАГОВИЋ ЈАСМИНКА
+ДРАГОВИЋ ЈОВАНКА
+ДРАГОВИЋ МИЛАН
+ДРАГОВИЋ МИЛИЋ
+ДРАГОВИЋ МИЛИЦА
+ДРАГОВИЋ МИРА
+ДРАГОВИЋ РАНКО
+ДРАГОВИЋ СНИЈЕЖАНА
+ДРАГОВИЋ СТАМЕНКА
+ДРАГОВИЋ СВЕТИМИР
+ДРАГОВИЋ СВЕТОМИР
+ДРАГОВИЋ ВЕРА
+ДРАГОВИЋ ВИДАК
+ДРАГОВИЋ ВЛАДА
+ДРАГОВИЋ ЗОРАН
+ДРАГУМИЛО МИЛОМИР
+ДРАГУМИЛО МИЛУТИН
+ДРАГУНОВИЋ БОРИСЛАВ
+ДРАГУНОВИЋ ПЕРО
+ДРАГУТИНОВИЋ ЖИВКА
+ДРАГУТИНОВИЋ МИЛАН
+ДРАГУТИНОВИЋ ПРЕДРАГ
+ДРАГУТИНОВИЋ ЗОРАН
+ДРАХ ЈЕЛИСАВЕТА
+ДРАХ ЈЕЛИСАВЕТА
+ДРАХОТУСКИ БОРИСЛАВ
+ДРАХОТУСКИ ПЕТАР
+ДРАКИЋ ДРАГИША
+ДРАКИЋ СЛОБОДАН ДР
+ДРАКУЛ ВАСО
+ДРАКУЛА ДУШАН
+ДРАКУЛА РАДМИЛА
+ДРАКУЛИЋ АЛЕКСАНДАР
+ДРАКУЛИЋ БРАНИСЛАВ
+ДРАКУЛИЋ ДРАГОМИР ДР СТОМАТОЛОГ
+ДРАКУЛИЋ ДРАГОМИР
+ДРАКУЛИЋ ЕРЖЕБЕТ
+ДРАКУЛИЋ ЈЕЛЕНА
+ДРАКУЛИЋ ЈОВАН
+ДРАКУЛИЋ КОСТА
+ДРАКУЛИЋ ЛАЗАР
+ДРАКУЛИЋ ЉУБИЦА
+ДРАКУЛИЋ МАРА
+ДРАКУЛИЋ МАРА
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛИВОЈ
+ДРАКУЛИЋ МИРОСЛАВ
+ДРАКУЛИЋ ПРЕДРАГ
+ДРАКУЛИЋ СМИЉА
+ДРАКУЛИЋ СОФИЈА
+ДРАКУЛИЋ СТЕВАН
+ДРАКУЛИЋ СТОЈАНКА
+ДРАКУЛИЋ СВЕТИСЛАВ
+ДРАКУЛИЋ СВЕТОЗАР
+ДРАКУЛИЋ СВЕТОЗАР
+ДРАКУЛИЋ ТОДОР
+ДРАКУЛИЋ ЗОРАН
+ДРАПШИН ЧАВА
+ДРАПШИН ЂОРЂЕ
+ДРАПШИН ДАНИЦА
+ДРАПШИН ЛЕПОСАВА
+ДРАПШИН МИЛАН
+ДРАПШИН МИЛЕНКО
+ДРАПШИН ПЕТАР
+ДРАПШИН ПРЕДРАГ
+ДРАПШИН САВА
+ДРАПШИН ЗАГОРКА
+ДРАПШИН ЗОРАН
+ДРАПИЋ БОГДАН
+ДРАПИЋ СЕНИТА
+ДРАПИЋ СЛОБОДАН
+ДРАПИЋ ВЕЛИМИР
+ДРАПОШ СТЕВАН
+ДРЕШКАИ ШАНДОР
+ДРЕЦУН ВЕЉКО
+ДРЕХЕР ЛАЈОШ
+ДРЕХЕР НИКОЛА
+ДРЕХЕР ОТО
+ДРЕХЕР ВИЛИМ ДИПЛ ИНГ
+ДРЕКОВИЋ ЂУРО
+ДРЕКОВИЋ КАТИЦА
+ДРЕКОВИЋ ЗОРАН
+ДРЕМПЕТИЋ ДАРКО
+ДРЕМПЕТИЋ ПЕТАР
+ДРЕМПЕТИЋ ЗДЕНКО
+ДРЕЊАКОВИЋ ЈЕЛИЦА
+ДРЕНКОВИЋ ЛАСЛО
+ДРЕНОВЧАНИН ЉУБОМИР
+ДРЕНОВАЦ РАНКО
+ДРЕНОВЕЦ ЦВЕТО
+ДРЕТАР МИРКО
+ДРЕЗГА ЈАКОВ
+ДРЕЗГА ТОДОР
+ДРЕЗГИЋ ДАРА
+ДРЕЗГИЋ ИЛИЈА
+ДРЕЗГИЋ МАРИЈА
+ДРЕЗГИЋ МИЛАН
+ДРЕЗГИЋ РАДИВОЈ
+ДРЕЗГИЋ СВЕТЛАНА
+ДРЕЗГИЋ ВЛАДИМИР
+ДРИГУЛОВ СПАСОЈЕ
+ДРИНЧЕВИЋ ЖИВОТА
+ДРИНЧЕВИЋ ДЕСАНКА ДР
+ДРИНЧИЋ МЕЛАНИЈА
+ДРИНЧИЋ МИЛОЈКО
+ДРИНЧИЋ РАДМИЛА
+ДРИНИЋ АЛЕКСАНДАР
+ДРИНИЋ БОРИСЛАВ
+ДРИНИЋ ЈАГОДА
+ДРИНИЋ МИЛАН
+ДРИНИЋ МИЛЕНКО
+ДРИНИЋ МИЛЕТА
+ДРИНИЋ МИЛОВАН
+ДРИНИЋ МИРКО
+ДРИНИЋ НЕДЕЉКО
+ДРИНИЋ ПЕРО
+ДРИНИЋ РАДМИЛА
+ДРИНИЋ САВО
+ДРИНИЋ СЛАВИЦА
+ДРИНИЋ СТЕВО
+ДРИНИЋ ТОМО
+ДРИНИЋ ЗДРАВКО
+ДРИЊОВСКИ АЛЕКСАНДАР
+ДРИЊОВСКИ ВОЈИСЛАВ
+ДРК БАРБАРА
+ДРКУШИЋ ИЛИЈА
+ДРЉАЧА ЂОРЂЕ
+ДРЉАЧА ЂОРЂЕ
+ДРЉАЧА БРАНКА
+ДРЉАЧА ДРАГАН
+ДРЉАЧА ДУШАН
+ДРЉАЧА МАРКО
+ДРЉАЧА МИЋА
+ДРЉАЧА МИЛАНКО
+ДРЉАЧА МИЛОРАД
+ДРЉАЧА МИРКО
+ДРЉАЧА НЕЂО
+ДРЉАЧА НЕНАД
+ДРЉАЧА РАДОВАН
+ДРЉАЧА РАДОВАН
+ДРЉАЧА СТОЈА
+ДРЉАЧА ЗДРАВКА
+ДРЉАЧИЋ КАТА
+ДРЉЕВИЋ ЂУРО
+ДРЉЕВИЋ АНИЦА
+ДРЉЕВИЋ ЈОВАНКА
+ДРЉЕВИЋ МИЛЕТА
+ДРЉЕВИЋ МИЉА
+ДРЉЕВИЋ МИРЈАНА
+ДРЉИЋ МИЛАДИН
+ДРЉИЋ ПРЕДРАГ
+ДРМАНАЦ МИРОСЛАВ
+ДРМАНАЦ СТАНКО
+ДРМАНОВИЋ МИЛЕВА
+ДРНДАРЕВИЋ БОРА
+ДРНДАРЕВИЋ БОРА
+ДРНДАРЕВИЋ КАТИЦА
+ДРНДАРСКИ МИЛАН
+ДРНДАРСКИ ВЕЛИМИР
+ДРОБАЦ ЖАРКО
+ДРОБАЦ ЖАРКО
+ДРОБАЦ ЂОРЂЕ
+ДРОБАЦ АНА
+ДРОБАЦ БРАНИСЛАВ
+ДРОБАЦ ЉИЉАНА
+ДРОБАЦ МИЛАН
+ДРОБАЦ МИЛАН
+ДРОБАЦ МИЛОРАД
+ДРОБАЦ МИРОСЛАВ
+ДРОБАЦ НЕНАД
+ДРОБАЦ НИКОЛА
+ДРОБАЦ ПРЕДРАГ
+ДРОБАЦ РАДОЈКА
+ДРОБАЦ РАДОЈКА
+ДРОБАЦ СЛАВКО
+ДРОБАЦ ВЛАДО
+ДРОБАЦ ВУКАШИН НОВИНАР
+ДРОБАЦ ЗДРАВКО
+ДРОБИНА ЈУЛИЈАНА
+ДРОБИНА ЉУБИЦА
+ДРОБИНА МИХАЉ
+ДРОБИЊАК РУЖА
+ДРОБЊАК ЕВИЦА
+ДРОБЊАК ЉИЉАНА
+ДРОБЊАК МИЛИВОЈЕ
+ДРОБЊАК МИОДРАГ
+ДРОБЊАК МОМЧИЛО
+ДРОБЊАК РАДИША
+ДРОБЊАК РАДОЈИЦА
+ДРОБЊАК РАДОЈИЦА
+ДРОБЊАКОВИЋ ДУШАН
+ДРОБЊАКОВИЋ ГВОЗДЕН
+ДРОБЊАКОВИЋ РИСТИВОЈЕ
+ДРОБЊИК ЈОСИП
+ДРОБЊИК ЈУДИТ
+ДРОЊАК ЖИВАНА
+ДРОЊАК ЖИВКО
+ДРОЊАК ЂОРЂЕ
+ДРОЊАК ДАРИНКА
+ДРОЊАК МИЛАН
+ДРОЊАК МИРЈАНА
+ДРОЊАК ОЛГА
+ДРОЊАК РАСТКО
+ДРОЊАК САВИНКА
+ДРОЊАК СТЕВАН
+ДРОПКА АРПАД
+ДРОПКА ЈЕЛЕНА
+ДРОПКА НАТАША
+ДРОПКА СТЕВАН
+ДРОПО МИЛКА
+ДРОПО ВАСА
+ДРОПО ЗОРАН
+ДРОЗДИК ИЛОНА
+ДРОЗДИК МАРИЈА
+ДРУЖЕТИЋ ЖИКА
+ДРУГОВИЋ РУЖИЦА
+ДРУГОВИЋ РУЖИЦА
+ДРВЕНЏИЈА РАДОВАН
+ДРВЕНЏИЈА СЛАВКО
+ДРВЕЊАК ВЕРИЦА
+ДУЧЕВИЋ ВАСИЛИЈЕ
+ДУЧИЋ МИЛАН
+ДУЧИЋ СЛОБОДАН
+ДУШАНИЋ ДРАГАН
+ДУШАНИЋ ЛАЗАР
+ДУШАНИЋ ЉУБИЦА
+ДУШАНИЋ НАДА
+ДУШАНИЋ НЕНАД
+ДУШАНОВИЋ СТАНОЈЕ
+ДУШАНОВИЋ ЗВЕЗДАНА
+ДУШЕК ЗЛАТКО ДИПЛ ОЕЦ
+ДУШИЋ БРАНКО
+ДУШИЋ ЗОРАН
+ДУЋАК АНДРИЈА
+ДУЋАК АРАНКА
+ДУЋАК БАРБАРА
+ДУЋАК МИХАЈЛО
+ДУЋАК ТОМА
+ДУЂАК ДРАГУТИН
+ДУЂИК ФРАЊА
+ДУБАИЋ БОЖИДАР
+ДУБАИЋ МИЛАН
+ДУБАИЋ МИРКО
+ДУБАЈИЋ ЖАРКО
+ДУБАЈИЋ ЂУРА
+ДУБАЈИЋ АЛЕКСАНДАР
+ДУБАЈИЋ БИЉАНА
+ДУБАЈИЋ ДРАГАН
+ДУБАЈИЋ МИЛИЦА
+ДУБАЈИЋ МИЛОШ
+ДУБАЈИЋ МИРКО
+ДУБАЈИЋ ВИДА
+ДУБЉЕВИЋ СЛОБОДАН
+ДУБЉЕВИЋ СТОЈАН
+ДУБЉЕВИЋ ВОЈИСЛАВ
+ДУБЉЕВИЋ ЗЛАТА
+ДУБЊАКОВИЋ МАРТА
+ДУБОВСКА МИЛОТА
+ДУБОВСКИ ЈАНКО
+ДУБОВСКИ КАТИЦА
+ДУБРАВАЦ ДУШАН
+ДУБРОЈА ДАНИЦА
+ДУБРОЈА СЛОБОДАН
+ДУЦАНОВИЋ БОШКО
+ДУЦИЋ МИЛАН
+ДУДА ПАВЛЕ
+ДУДАШ ЂУРА
+ДУДАШ ЂУРА
+ДУДАШ ЂУРА
+ДУДАШ АНА
+ДУДАШ АНТАЛ
+ДУДАШ АРПАД
+ДУДАШ АРПАД
+ДУДАШ БОРИС
+ДУДАШ ХЕЛЕНА
+ДУДАШ ЈАНОШ
+ДУДАШ ЈУЛИЈАН
+ДУДАШ ЛАЗАР
+ДУДАШ МАРИНКО
+ДУДАШ МИХАЉ
+ДУДАШ ПИРОШКА
+ДУДАШ РОМАН
+ДУДАШ СЛАВОМИР
+ДУДАК ЈАРОСЛАВ
+ДУДАК МАРИЈА
+ДУДАК СТЕВАН
+ДУДАН МИЛИВОЈ
+ДУДАР НИКОЛА
+ДУДАРИН ЖАРКО
+ДУДАРИН ДРАГАН
+ДУДАРИН САВА
+ДУДАРИН СТЕВАН
+ДУДАРИН СТЕВАН
+ДУДАРИН ВЕСЕЛИН
+ДУДАРИН ЗОРАН
+ДУДАРИН ЗОРАН
+ДУДИЋ АНИЦА
+ДУДИЋ КОСТА
+ДУДИЋ КОСТА
+ДУДИЋ МАТЕ
+ДУДИЋ МИЛА
+ДУДИЋ МИЛЕ
+ДУДИЋ МИЛОШ
+ДУДИЋ МИЛОШ
+ДУДИЋ НАДА
+ДУДИЋ СВЕТОЗАР
+ДУДИЋ ВАСА
+ДУДИЋ ВАСА
+ДУДИЋ ВЕРИЦА
+ДУДИЋ ЗОРАН
+ДУДОЈЕВИЋ НЕЏАД
+ДУДОК ДАНИЕЛ ДР
+ДУДОК ЈАНКО
+ДУДОК ПАВЕЛ
+ДУДУКОВИЋ АЛЕКСАНДАР
+ДУДУКОВИЋ СЛОБОДАН
+ДУДУКОВИЋ СТЕВАН
+ДУДВАРСКИ БОЖИДАР
+ДУДВАРСКИ ДРАГОЉУБ
+ДУДВАРСКИ ИВАН
+ДУДВАРСКИ ПАЈА
+ДУДВАРСКИ ВЕЛИНКА
+ДУГАЈЛИЋ АНЂЕЛКА
+ДУГАЈЛИЋ АРЈАНА
+ДУГАЈЛИЋ МИЛОШ
+ДУГАЈЛИЋ РАДОВАН
+ДУГАЛИЋ ДРАГАН
+ДУГАНЏИЈА БРАНКО
+ДУГАНЏИЈА ДРАГОМИР
+ДУГАНЏИЈА ДУШАН
+ДУГАНЏИЈА НЕДЕЉКО
+ДУГИН СТОЈАН
+ДУГОШИЈА ЖИВКО
+ДУГОШИЈА-МАКСИМОВИЋ НАДА
+ДУГОЊИЋ МИЛЕ
+ДУГОЊИЋ МИЛУТИН
+ДУГОЊИЋ НИКОЛА
+ДУГОЊИЋ СВЕТОМИР
+ДУХ КАТАРИНА
+ДУХАЧЕК ВЛАДО
+ДУИЋ ЈОСИП
+ДУЈАКОВИЋ МИЛЕНА
+ДУЈАКОВИЋ МИЛИЦА
+ДУЈАКОВИЋ НОВА
+ДУЈАКОВИЋ ВЕЉКО
+ДУЈЕВСКИ ВАНГЕЛ ДР
+ДУЈИЋ ЂОРЂЕ
+ДУЈИЋ ИВАН
+ДУЈИЋ ИВИЦА
+ДУЈИЋ ЉУБИЦА
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СМИЉА
+ДУЈИЋ СТОЈАНКА
+ДУЈИН ЖИВА
+ДУЈИН ЖИВКО
+ДУЈИН ДАНИЦА
+ДУЈИН ЛУКА
+ДУЈИН СИМЕОН
+ДУЈИН СВЕТИСЛАВ
+ДУЈИН ТЕОДОР
+ДУЈИН ВИТОМИР
+ДУЈКИЋ ВЛАДИСЛАВ
+ДУЈКОВИЋ БРАНКО
+ДУЈКОВИЋ ПЕТАР
+ДУЈКОВИЋ ТЕОДОР
+ДУЈКОВИЋ ВЛАДИМИР
+ДУЈЛОВИЋ БОРА
+ДУЈМИЋ АНТЕ
+ДУЈМОВИЋ ЕЛИЗАБЕТА
+ДУЈМОВИЋ ЕВА
+ДУЈМОВИЋ ФЕРЕНЦ
+ДУЈМОВИЋ ЈОСИП
+ДУЈОВИЋ ИЛИЈА
+ДУЈОВИЋ РАДМИЛА
+ДУЈОВИЋ РАДМИЛА
+ДУКА МИРОСЛАВ
+ДУКАИ АНДРАШ
+ДУКАН НАТАША
+ДУКАРИЋ ВИДА
+ДУКЕС ФОСКА
+ДУКИЋ ЂУРО
+ДУКИЋ БОРА
+ДУКИЋ ДАНИЛО
+ДУКИЋ ДРАГАН
+ДУКИЋ ДРАГИЦА
+ДУКИЋ ДУШАН
+ДУКИЋ ИВАНКА
+ДУКИЋ ЈЕЛЕНА
+ДУКИЋ ЈОВАН
+ДУКИЋ ЈОВАН
+ДУКИЋ КОСА
+ДУКИЋ ЉУБИЦА
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛИЦА
+ДУКИЋ МИЛИЦА
+ДУКИЋ МИРЈАНА
+ДУКИЋ ПРЕДРАГ
+ДУКИЋ РАДЕ
+ДУКИЋ РАДЕ
+ДУКИЋ РАЈКО
+ДУКИЋ СЛАВИЦА
+ДУКИЋ СОФИЈА
+ДУКИЋ СТЕВО ДИПЛ ИНГ
+ДУКИЋ ВУКАШИН ДР
+ДУКИЋ ЗОРАН
+ДУКОВА ЛИЛИ
+ДУКОВСКИ СВЕТИСЛАВ
+ДУЛЕЈАН ЖИВАДИНКА
+ДУЛЕЈАН СЛАВКО
+ДУЛИЋ ШАНДОР
+ДУЛИЋ АНКА
+ДУЛИЋ ИВАН
+ДУЛИЋ ЈОСИП
+ДУЛИЋ ЈОСИП
+ДУЛИЋ ЉУДЕВИТ
+ДУЛИЋ МАГДА
+ДУЛИЋ МИХАЈЛО
+ДУЛИЋ МИРОСЛАВ
+ДУЛИЋ НИКОЛА
+ДУЛОВИЋ АНЂЕЛКО
+ДУЛОВИЋ БОГДАН
+ДУЛОВИЋ БРАНКО
+ДУЛОВИЋ ДУШАН
+ДУЛОВИЋ МИЛОВАН
+ДУЛОВИЋ МИЛУН
+ДУЛОВИЋ РАДОВАН
+ДУЛОВИЋ РАНКО
+ДУЛОВИЋ РАТКА
+ДУЛОВИЋ ЗОРАН
+ДУМА МИЛОРАД
+ДУМАНЧИЋ СЛАВИЦА
+ДУМАНЧИЋ ЗДРАВКО
+ДУМАНОВИЋ МЛАДЕН
+ДУМЕДАШ СПАСОЈЕ
+ДУМЕДАШ ВАСИЛИЈЕ
+ДУМЕНЧИЋ ИВАН
+ДУМИЋ СЛАВИЦА
+ДУМИЋ СТЕВАН ДИПЛ ИНГ
+ДУМИТРОВ АЛЕКСАНДАР
+ДУМИТРОВ ДИМИТРИЈЕ
+ДУМИТРОВ ЛУКА
+ДУМИТРОВ МАРИЈА
+ДУМИТРОВ МИОДРАГ
+ДУМИТРОВ НЕДЕЉКО
+ДУМИТРОВ СЛАВКО
+ДУМИТРОВ ВЕРИЦА
+ДУМИТРОВ ВОЈИН
+ДУМНИЋ ШАРИКА
+ДУМНИЋ МИЛАН
+ДУМОНИЋ БРАНКО
+ДУМОНИЋ ПЕТАР
+ДУНЂЕР РАДЕ
+ДУНЂЕР РАДЕ
+ДУНЂЕРИН ЂОРЂЕ
+ДУНЂЕРОВ КОСАНА
+ДУНЂЕРОВ НАДА
+ДУНЂЕРОВ ПИРОШКА
+ДУНЂЕРОВИЋ РАДОВАН
+ДУНЂЕРСКИ ЖИВАН
+ДУНЂЕРСКИ ЂОРЂЕ
+ДУНЂЕРСКИ ЂОРЂЕ
+ДУНЂЕРСКИ АЛЕКСАНДАР
+ДУНЂЕРСКИ АНА
+ДУНЂЕРСКИ ЦВЕТАНА
+ДУНЂЕРСКИ ДРАГАН
+ДУНЂЕРСКИ ИВАНКА
+ДУНЂЕРСКИ ИВАН
+ДУНЂЕРСКИ ЈОВАН
+ДУНЂЕРСКИ МАРИЈА
+ДУНЂЕРСКИ МИЛАН
+ДУНЂЕРСКИ МИРЈАНА
+ДУНЂЕРСКИ НОВАК
+ДУНЂЕРСКИ СИМА
+ДУНЂЕРСКИ СОФИЈА
+ДУНЂЕРСКИ СТАНИСЛАВ
+ДУНЂЕРСКИ ТИХОМИР
+ДУНЂЕРСКИ ТРИВА
+ДУНЂЕРСКИ ЗДРАВКО
+ДУНДИЋ ХАРАЛАМПИЈЕ
+ДУНДИЋ ЈЕЛЕНА
+ДУНДИЋ СЛАВКО
+ДУНДОВИЋ СТЈЕПАН
+ДУНИЋ ДРАГИЋ
+ДУЊИЋ СТОЈАН
+ДУНОВИЋ МИЛКА
+ДУНОВИЋ НАТАША
+ДУПАК ИМРЕ
+ДУПАК МАРИЈА
+ДУПАЛО СЛАВКА
+ДУПОР ГОРДАНА
+ДУПОР МИЛОШ
+ДУПОР МИРКО
+ДУПОР ЗОРИЦА
+ДУРАЧКОВИЋ БАХРИЈА
+ДУРАЧКОВИЋ СЕНИЈА
+ДУРАКОВИЋ ЂУРО
+ДУРАКОВИЋ ДРАГАН
+ДУРАКОВИЋ ГОЈКО
+ДУРАКОВИЋ ГОЈКО
+ДУРАН БРАНКО
+ДУРАНОВИЋ ВЛАДИМИР
+ДУРГУТОВИЋ РИФАД
+ДУРКАЛИЋ ВИКТОР
+ДУРКОВИЋ МИЛОРАД
+ДУРКОВИЋ ВЛАЈКО
+ДУРКУЛИЋ АЛЕКСАНДАР
+ДУРКУЛИЋ СПАСОЈЕ
+ДУРЛЕВИЋ МИЛИЦА
+ДУРМАН ДРАГОЉУБ
+ДУРМАН ГОЈКО
+ДУРМАН НАДА
+ДУРМАН РАСТИСЛАВ
+ДУРОШКА ШАНДОР
+ДУРОШКА ИВАНКА
+ДУРОШКА ЈЕЛЕНА
+ДУРОШКА МИХАЈЛО
+ДУРОШКИ ЈУЛИЈАНА
+ДУРУШКА ПАЛ
+ДУРУТОВИЋ ДРАГАН
+ДУРУТОВИЋ РАДОВАН
+ДУРУТОВИЋ СЕНКА
+ДУСИЋ ГОСПАВА
+ДУСПАРА МИЛЕНА
+ДУСПЕР ШИМО
+ДУТИНА АНДРИЈА
+ДУТИНА БРАНИСЛАВ
+ДУТИНА БРАТОЉУБ
+ДУТИНА ДРАГАН
+ДУТИНА ИРЕНА
+ДУТИНА МИОМИР
+ДУТИНА СЛОБОДАН
+ДУТИНА ВЛАДИМИР
+ДУВЊАК ДИВНА
+ДУВЊАК ДИВНА
+ДУВЊАК ИВИЦА
+ДУВЊАК КОСТА
+ДУВЊАК ЛАЗАР
+ДУВЊАК ЛАЗАР
+ДУВЊАК МАРА
+ДУВЊАК МИЛЕНКО
+ДУВЊАК МИЛОРАД
+ДУВЊАК НЕНАД
+ДУВЊАК РАДОЈКА
+ДУВЊАК СТАНА
+ДВОРАЧКО ШАНДОР
+ДВОРНИЋ МИРЈАНА
+ЕШКИ ЕРЖЕБЕТ
+ЕШКИЧЕВИЋ ВАСА
+ЕЋИМ РАДОВАН
+ЕЋИМОВИЋ ГОЈКО
+ЕЋИМОВИЋ НИКОЛА
+ЕЋИМОВИЋ ВЕСЕЛИН
+ЕЂЕДИ ЈОЖЕФ
+ЕЂЕДИ ЈУЛИЈАНА
+ЕБЕНХЕ-ЈОВАНОВИЋ ЈАСНА ДР
+ЕБЕНХЕ НИКОЛА
+ЕБЕРХАРД-МАРКОВИЋ МИРЈАНА
+ЕБЕРХАРТ ПЕТАР
+ЕБЕРСТ-СЕДЛАЧЕК ГАБРИЕЛА
+ЕЦЕТ ЈОВАН
+ЕЦЕТ ЈОВАН
+ЕЦЕТ КАТАЛИН
+ЕЦЕТ ПАЛ
+ЕДЕЛЕЊИ МАРИЈА
+ЕДЕЛИНСКИ ЕУГЕН
+ЕДЕЛИНСКИ ЈОАКИМ
+ЕДЕЛИНСКИ ЉУБИЦА
+ЕДЕЛИНСКИ ВЕРА
+ЕДЕЛИНСКИ ВЕРА
+ЕФТЕМИЈУ НИКОЛА
+ЕГЕЉА МИЛИЦА
+ЕГЕЉА НЕБОЈША
+ЕГЕРИЋ МИРОСЛАВ ДР
+ЕГИЋ ЧЕДМИЛА
+ЕГИЋ ЂОКА
+ЕГИЋ БРАЦО
+ЕГИЋ БРАНИСЛАВ
+ЕГИЋ ЦВЕТАНКА
+ЕГИЋ ДРАГАН
+ЕГИЋ МАНЕ
+ЕГИЋ МАРИЈАН
+ЕГИЋ МИЦА
+ЕГИЋ МИЛАН
+ЕГИЋ МИЛАН
+ЕГИЋ ОЛГА
+ЕЈИЋ МИЛАН
+ЕКЕШ АЛЕКСАНДАР
+ЕКХАРДТ ЉУБИЦА
+ЕКЛИЋ МАРЈАН
+ЕКМЕШЧИЋ МИЛИСАВ
+ЕКМЕЏИЋ АНКА
+ЕКМЕЏИЋ НИКОЛА
+ЕКРЕС ЂОРЂЕ
+ЕКРЕС АНДРИЈА
+ЕКРЕС ЈАНОШ
+ЕКРЕС ЈУЛИЈАНА
+ЕКРЕС МИЛКА
+ЕКРЕС НАНДОР
+ЕКРЕС ОТО
+ЕКРЕС-РАКИЋ ВЕРИЦА
+ЕКРЕС РОЗАЛИЈА
+ЕКРЕС ВАЛЕРИЈА
+ЕЛЕК ЕВА
+ЕЛЕРО ЗВЕЗДАНА
+ЕЛЕСИН БРАНИСЛАВ
+ЕЛЕСИН БРАНКА
+ЕЛЕСИН ДРАГА
+ЕЛЕСИН ДРАГОЉУБ
+ЕЛЕСИН ДУШАНКА
+ЕЛЕСИН ГРАДИМИР
+ЕЛЕСИН МИРОСЛАВ
+ЕЛЕСИН САВА
+ЕЛЕСИН СИНИША
+ЕЛЕСИН ВЛАДИМИР
+ЕЛЕЗ ЂОКА
+ЕЛЕЗ ГОРАН
+ЕЛЕЗОВИЋ НИКОЛА
+ЕЛЕЗОВИЋ ПЕТАР
+ЕЛХАРТ ЛАЗАР
+ЕЛХАРТ ЛАЗАР
+ЕЛИАС ИРЕНА
+ЕЛИЈАШ ЈАН
+ЕЛИЗЕК ЖУЖАНА
+ЕЛИЗЕК ИВАН
+ЕЛОР ИШТВАН
+ЕЛОР ЈАНОШ
+ЕЛОР ЉУБИЦА
+ЕЛОР ПАВЛЕ
+ЕЛОР ЗОРИЦА
+ЕЛТЕР ЈАНОШ
+ЕЛТЕР ЗОЛТАН
+ЕМЕР ЈАКОВ
+ЕМЕР МАРКО
+ЕМИНИ БАЈРАМ
+ЕМИНИ ГАНИ
+ЕМИНИ РОЗАЛИЈА
+ЕНАХОЛО НАДА
+ЕНГЕЛМАН КАТИЦА
+ЕНГЕРТ МИХАЈЛО
+ЕНГЛЕР ЛАЈОШ
+ЕПИФАНИЋ ЦВЕТАНА
+ЕПИФАНИЋ ДУШКО
+ЕРЧИ-ВАРГА МАРИШКА
+ЕРЧИЋ БОЈАНА
+ЕРЧИЋ МИЛОРАД
+ЕРЧИЋ РАДОВАН
+ЕРШТЕ ЖЕЉКО
+ЕРАК БОРО
+ЕРАК ДУШАН
+ЕРАК ИЛИЈА
+ЕРАК ЛАЗАР
+ЕРАК МАРКО
+ЕРАКОВИЋ БОГДАН
+ЕРАКОВИЋ ДАНИЛО
+ЕРАКОВИЋ ДРАГИЦА
+ЕРАКОВИЋ КРИСТИВОЈ
+ЕРАКОВИЋ ЉУБИША
+ЕРАКОВИЋ ЉУБОЈЕ
+ЕРАКОВИЋ МИЛОРАД
+ЕРАКОВИЋ МИТАР
+ЕРАКОВИЋ РАДЕ
+ЕРАКОВИЋ РАЈКО
+ЕРАКОВИЋ СРЕТЕН
+ЕРБЕШ ЕРЖЕБЕТ
+ЕРБЕЖНИК СОЊА
+ЕРБЕС БРАНКА
+ЕРБЕС МАРГИТА
+ЕРБЕЗ БЛАЖО
+ЕРБЕЗ ЕРЖЕБЕТ
+ЕРЦЕГ ШПИРО
+ЕРЦЕГ ЖАРКО
+ЕРЦЕГ ЖИВКО
+ЕРЦЕГ ДАРА
+ЕРЦЕГ ЉИЉАНА
+ЕРЦЕГ МИКА
+ЕРЦЕГ РАДОВАН
+ЕРЦЕГ РАЈКО
+ЕРЦЕГ РАЈКО
+ЕРЦЕГ СЛОБОДАН
+ЕРЦЕГ СТАНА
+ЕРЦЕГ ЗДЕНКО
+ЕРЦЕГ ЗДРАВКО
+ЕРЦЕГАН ГОРАН
+ЕРЦЕГАН МИТА
+ЕРЦЕГОВЧЕВИЋ ЖИВОДАР
+ЕРЦЕГОВЧЕВИЋ ДОСТА
+ЕРЦЕГОВАЦ АНЂЕЛКО
+ЕРЦЕГОВАЦ БРАТИСЛАВ
+ЕРЦЕГОВАЦ МИОДРАГ
+ЕРЦЕГОВАЦ МИТАР
+ЕРЦЕГОВАЦ НАДА
+ЕРЦЕГОВАЦ САВА
+ЕРЦЕГОВАЦ СЛОБОДАН
+ЕРЦЕГОВАЦ СТЕВАН
+ЕРЦЕГОВАЦ ТОМИСЛАВ
+ЕРЦЕГОВИЋ ДАНИЦА
+ЕРДЕШ ДАНИЕЛ
+ЕРДЕШ ЕМИЛ
+ЕРДЕШ ЕСТЕР
+ЕРДЕШ ЕТЕЛКА
+ЕРДЕШ ИЛОНА
+ЕРДЕШ ИВАН
+ЕРДЕШ ЈУЛИЈАНА
+ЕРДЕШ КЛАРА
+ЕРДЕШ ЛАСЛО
+ЕРДЕШ ПАЛ
+ЕРДЕШ ПЕТАР
+ЕРДЕШИ ЛАСЛО
+ЕРДЕШИ ВАЛЕРИЈА
+ЕРДЕГ АРАНКА
+ЕРДЕГ ИЛОНА
+ЕРДЕГ ЈАНОШ
+ЕРДЕГ ЈУСТИНА
+ЕРДЕГ ТОМИСЛАВ
+ЕРДЕИ ШАНДОР
+ЕРДЕИ ЈОСИП
+ЕРДЕИ ЈОВАН
+ЕРДЕИ МИХАЈЛО
+ЕРДЕИ ПЕТАР
+ЕРДЕИ ЗОЛТАН
+ЕРДЕЉ БРАНКО
+ЕРДЕЉ ЕМИЛ
+ЕРДЕЉ ГОРАН
+ЕРДЕЉ ЛУДМИЛА
+ЕРДЕЉ МИЛУТИН
+ЕРДЕЉАН ЖИВКО
+ЕРДЕЉАН АЛЕКСАНДАР
+ЕРДЕЉАН АЛКСАНДАР
+ЕРДЕЉАН БИСЕРКА
+ЕРДЕЉАН БОШКО
+ЕРДЕЉАН-БОГДАНОВ СЛАВИЦА
+ЕРДЕЉАН ДАНИЛО
+ЕРДЕЉАН ДОБРИВОЈ
+ЕРДЕЉАН ДУШАНКА
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ЈЕЛЕНА
+ЕРДЕЉАН КАТИЦА
+ЕРДЕЉАН ЉУБИЦА
+ЕРДЕЉАН ЉУБОМИР
+ЕРДЕЉАН МИЛАДИН
+ЕРДЕЉАН МИЛАН ДИПЛ ИНГ
+ЕРДЕЉАН МИЛАН
+ЕРДЕЉАН МИЛЕНКО
+ЕРДЕЉАН МИЛИВОЈ
+ЕРДЕЉАН МИЛОРАД
+ЕРДЕЉАН МИЛОРАД
+ЕРДЕЉАН МИЛОВАН
+ЕРДЕЉАН МИРЈАНА
+ЕРДЕЉАН НАДЕЖДА
+ЕРДЕЉАН НИКОЛА
+ЕРДЕЉАН ПРЕДРАГ
+ЕРДЕЉАН РАДИВОЈ
+ЕРДЕЉАН СЛАВКА
+ЕРДЕЉАН СЛАВКА
+ЕРДЕЉАН СЛОБОДАН ДИПЛ ИНГ
+ЕРДЕЉАН СРЕДОЈЕ
+ЕРДЕЉАН СТЕВАН
+ЕРДЕЉАН СВЕТИСЛАВ
+ЕРДЕЉАН ТИХОМИР
+ЕРДЕЉАН ВЕРИЦА
+ЕРДЕЉАН ВУКИЦА
+ЕРДЕЉАН ЗЛАТКО
+ЕРДЕЉАН ЗОРА
+ЕРДЕЉАНИН АНЂЕЛКО
+ЕРДЕЉИ ЂЕРЂ
+ЕРДЕЉИ АНТАЛ
+ЕРДЕЉИ БЕЛА
+ЕРДЕЉИ БИСЕРКА
+ЕРДЕЉИ БОРБАЛА
+ЕРДЕЉИ ДЕЖЕ
+ЕРДЕЉИ ДРАГИЦА
+ЕРДЕЉИ ФРАЊА
+ЕРДЕЉИ ГАШПАР
+ЕРДЕЉИ ИШТВАН
+ЕРДЕЉИ ЈЕНЕ
+ЕРДЕЉИ ЈОЖЕФ
+ЕРДЕЉИ КАРОЉ
+ЕРДЕЉИ ЛАЈОШ
+ЕРДЕЉИ ЛАСЛО ДИПЛ ИНГ
+ЕРДЕЉИ МАТИЛДА
+ЕРДЕЉИ СОФРОНА
+ЕРДЕЉИ СТЕВАН
+ЕРДЕЉИ ТИБОР
+ЕРДЕВИК МАРА
+ЕРДЕВИК МАРИЈА
+ЕРДЕВИК СЛОБОДАН
+ЕРДЕВИК ВОЈИСЛАВ
+ЕРДЕВИК ВУКИЦА
+ЕРДЕВИК ЗДРАВКО
+ЕРЕШ ШАНДОР
+ЕРЕШ ЛАСЛО
+ЕРЕЂИН ВУКАШИН
+ЕРЕГ ЛАЈОШ
+ЕРЕМИЋ ЈЕЛИЦА
+ЕРЕМИЋ ЈОВАН
+ЕРЕМИЋ НИНОСЛАВ
+ЕРЕМИЋ РАДОВАН
+ЕРЕМИЋ САВА
+ЕРЕМИЋ СЛАВИЦА
+ЕРЕМИЋ СТАНИСЛАВА
+ЕРЕМИЋ ТИХОМИР ДР ЛЕКАР
+ЕРЕМИЋ ВЕСЕЛИНКА
+ЕРЕМИЈА МИЛАН
+ЕРЕМИЈА СТАНКО
+ЕРЕМИН НИКОЛА
+ЕРЕНТА ЉУБИЦА
+ЕРГ ОЛГА
+ЕРГЕЛАШЕВ ДУБРАВКА
+ЕРГЕЛАШЕВ ИВАН
+ЕРГЕЛАШЕВ ЈОВАН
+ЕРГЕЛАШЕВ МИЛАН
+ЕРГЕЛАШЕВ МИЛОШ
+ЕРГЕЛАШЕВ МОМЧИЛО
+ЕРГЕЛАШЕВ НЕСТОР
+ЕРГЕЛАШЕВ СМИЉКА
+ЕРГЕЛАШЕВ ТИХОМИР
+ЕРГЕЛАШЕВ ЗОРКА
+ЕРХАРТИЧ АНА
+ЕРХАРТИЧ РУДОЛФ
+ЕРИ ИЛОНА
+ЕРИ ЈАНОШ
+ЕРИ ЈОВАН
+ЕРИЋ ЂУЛИНКА
+ЕРИЋ БОЖИН
+ЕРИЋ ЉИЉАНА
+ЕРИЋ МАРКО
+ЕРИЋ МИЛОМИР
+ЕРИЋ НЕБОЈША
+ЕРИЋ ПЕРО
+ЕРИЋ СНЕЖАНА
+ЕРИЋ СВЕТОМИР
+ЕРИЋ ЗОРИЦА
+ЕРКИЋ ЂОРЂЕ
+ЕРКИЋ ПЕТАР
+ЕРЛАУЕР ИВАН
+ЕРЛАУЕР ЈОСИП
+ЕРЛЕР ВЕРОНА
+ЕРНЕСТ ФРАЊА
+ЕРОР ЈОВАН
+ЕРОР ПЕТАР
+ЕРОР СТЕВАН
+ЕРСКИ ПЕТАР
+ЕРСКИ-ПЕТКОВИЋ СОЊА
+ЕРТЛ ФЕРЕНЦ
+ЕРТЛ ХЕДВИГА
+ЕРТЛ ЛАСЛО
+ЕРТЛ ВЛАСТА
+ЕС КЛАРА
+ЕСЕ ШАНДОР
+ЕСКИЋ СВЕТОЗАР
+ЕСТЕР ЈОСИП
+ЕСТЕР МАРИЈА ДР
+ЕСТЕР МАРТА
+ЕТШБЕРГЕР ЈАКОБ
+ЕТЕР ОТО
+ЕТЕРОВИЋ ВЕРА
+ЕТИНСКИ ЖИВАН
+ЕТИНСКИ ЖИВОЈИН
+ЕТИНСКИ ЂОРЂЕ
+ЕТИНСКИ ДРАГИЋ
+ЕТИНСКИ ДРАГИЋ
+ЕТИНСКИ ЈОВАН
+ЕТИНСКИ ЉУБИША
+ЕТИНСКИ МИХАЈЛО
+ЕТИНСКИ МИЛОШ
+ЕТИНСКИ МИЛОРАД
+ЕТИНСКИ МИЛОРАД
+ЕТИНСКИ МИЛОВАН
+ЕТИНСКИ НАДА
+ЕТИНСКИ ПЕТАР
+ЕТИНСКИ РАДОВАН
+ЕТИНСКИ СЛОБОДАНКА
+ЕТИНСКИ ВЕЉКО
+ЕТИНСКИ ВЕРА
+ЕТИНСКИ ВЕРИЦА
+ЕТОРЕ ЂИНА
+ЕВЂИЋ СТАНКА
+ЕВЕТОВИЋ БЛАШКО
+ЕВЕТОВИЋ ЈОСИП
+ЕВЕТОВИЋ ЈОВАН
+ЕВЕТОВИЋ ЈОВАН
+ЕВИЋ АЛЕКСАНДАР
+ЕВИЋ ДРАГИЦА
+ЕВИЋ ЈЕЛИСАВЕТА
+ЕВИЋ ЈОВАН
+ЕВИЋ ЛАЗАР
+ЕВИЋ ЛАЗАР
+ЕВИЋ ПЕТАР
+ЕВИЋ САВА
+ФА МЕЛАНИЈА
+ФА МИЛКА
+ФАЧАР СТЕВАН
+ФАЧКО ЈОЖЕФ
+ФАЧКО СИМА
+ФАБИАН БОРБАЛА
+ФАБИАН ИШТВАН
+ФАБИАН ЈАНОШ
+ФАБИЈАН ШАНДОР
+ФАБИЈАН АНА
+ФАБИЈАН ИЛОНА
+ФАБИЈАН ИМРЕ
+ФАБИЈАН ИВАН
+ФАБИЈАН ЈАНОШ
+ФАБИЈАН ЛАСЛО
+ФАБИЈАН НИКОЛА
+ФАБИЈАН СТЕВАН
+ФАБИЈАН СТЕВАН
+ФАБИЈАНЧИЋ ИВАН
+ФАБИЈАНЧИЋ СТЈЕПАН
+ФАБИЈАНИЋ МАРИЈА
+ФАБИЈАНОВИЋ АНА
+ФАБРИ МИКЛОШ
+ФАБРИ НАНДОР
+ФАБРИ СТЈЕПАН
+ФАБРИ ЗВОНКО
+ФАБРИК КАТАЛИН
+ФАЦИС ПАНТА
+ФАИН АНА
+ФАИН ЛАЈОШ
+ФАИН СТЕВАН
+ФАЈ ГАБОР
+ФАЈДЕТИЋ ЉУБИЦА
+ФАЈДИГА АЛЕКСАНДАР
+ФАЈФЕР ПЕТАР
+ФАЈГЕЉ ИВАН
+ФАЈХНЕР ХЕНРИК
+ФАЈХТНЕР ЈОСИП
+ФАЈХТНЕР РУЖА
+ФАЈИН ИШТВАН
+ФАЈКА ДАНИЦА
+ФАЈКА НАДА
+ФАЈКА ПАВЛЕ
+ФАЈНИК МАРИЈА
+ФАЈТ-ГРАНЕР РОЖА
+ФАЈТ ЈЕЛИЦА
+ФАЈТНЕР ВЕРОНИКА
+ФАКИН ФРАЊА
+ФАКИН ИВАН
+ФАКИН ЗВОНИМИР
+ФАЛБ ЂОРЂЕ
+ФАЛБ БОСИЉКА
+ФАЛБ ЈОСИП
+ФАЛБ КАРОЉ
+ФАЛБ КАРОЉ
+ФАЛБ МАРИНА
+ФАЛБ МАТИЈА
+ФАЛБ ОТО
+ФАЛБ ЗОЛТАН
+ФАМИЛИЋ ЂОРЂЕ
+ФАМИЛИЋ ИВАН
+ФАНЧЕВИЋ АЛЕКСАНДАР
+ФАНЧЕВИЋ ЈОСИП
+ФАНЧЕВИЋ КАТАЛИН
+ФАНЧЕВИЋ ЉУДЕВИТ
+ФАНЧЕВИЋ ТЕРЕЗИЈА
+ФАНКА ДУШАН
+ФАНКА МАРА
+ФАРАГО ШАНДОР
+ФАРАГО ШАНДОР
+ФАРАГО АРАНКА
+ФАРАГО АРПАД
+ФАРАГО ФРАЊА
+ФАРАГО ЈОЖЕФ
+ФАРАГО ЈОСИП
+ФАРАГО КАРЛО
+ФАРАГО ЛАСЛО
+ФАРАГО МАРИЈА
+ФАРК АМАЛИЈА
+ФАРК БЕАТА
+ФАРКАШ АЛЕКСАНДАР
+ФАРКАШ АЛЕКСАНДАР
+ФАРКАШ БОЖЕНА
+ФАРКАШ ДРАГУТИН
+ФАРКАШ ЕЛЕМЕР
+ФАРКАШ ЕЛИЗАБЕТА
+ФАРКАШ ЕЛЗА
+ФАРКАШ ЕСТЕР
+ФАРКАШ ЕСТЕР
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФРАЊА
+ФАРКАШ ГАБОР
+ФАРКАШ ИШТВАН
+ФАРКАШ ИШТВАН
+ФАРКАШ ИЛОНА
+ФАРКАШ ИЛОНКА
+ФАРКАШ ИМРЕ
+ФАРКАШ ЈАН
+ФАРКАШ ЈАРОСЛАВ
+ФАРКАШ ЈЕЛИСАВЕТА
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОСИП
+ФАРКАШ ЈОСИП
+ФАРКАШ ЈОВАН
+ФАРКАШ ЈОВГЕН
+ФАРКАШ ЈУДИТА
+ФАРКАШ КАРЛО
+ФАРКАШ КАТАЛИН
+ФАРКАШ КЛАРА
+ФАРКАШ ЛАДИСЛАВ
+ФАРКАШ ЛАЈОШ
+ФАРКАШ ЛАСЛО
+ФАРКАШ МАРИЈА
+ФАРКАШ МАТИЛДА
+ФАРКАШ МИХАЉ
+ФАРКАШ НАДА
+ФАРКАШ ПАЛ
+ФАРКАШ ПАВЛЕ
+ФАРКАШ РОЗАЛИЈА
+ФАРКАШ СТЕВАН
+ФАРКАШ-ТОТ ВИКТОРИЈА
+ФАРКАШ ВЕРА
+ФАРКАШ ВЕРИЦА
+ФАРКИЋ МИЛАН
+ФАРКОВ ЈОВАНКА
+ФАТ ЈОСИП
+ФАТ ЛАСЛО
+ФАТ МИХАЛ
+ФАТИЋ МАРА
+ФАТУРОВИЋ РАЈКО
+ФАУКОВИЋ НАДА
+ФАЗЕКАШ АНТАЛ
+ФАЗЕКАШ ЈАНОШ
+ФАЗЕКАШ КАТАЛИН
+ФАЗЕКАШ ТИБОР
+ФАЗЛИЋ ЈЕЛИЦА
+ФАЗЛИЋ ЈОВАНКА
+ФАЗЛИНОВИЋ ЕЛБИСА
+ФАЗЛИНОВИЋ ЈАСМИНКА
+ФЕШИШ ИМРЕ
+ФЕШИШ ЈОЖЕФ
+ФЕШИШ ЈОЖЕФ
+ФЕЦЕ ИВАН
+ФЕЦЕ МАРИЈА
+ФЕДЕРЕР ЈОВАН
+ФЕДЕРЕР МИРКО
+ФЕДИ ЈОЖЕФ
+ФЕХЕР ШАНДОР
+ФЕХЕР ШАНДОР
+ФЕХЕР ЂЕРЂ
+ФЕХЕР ЂУЛА
+ФЕХЕР ЂУЛА
+ФЕХЕР АНДРАШ
+ФЕХЕР АРИСТИД
+ФЕХЕР ЕРНЕ
+ФЕХЕР ЕРНЕ
+ФЕХЕР ФЕРЕНЦ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈОЖЕФ
+ФЕХЕР ЈОЖЕФ
+ФЕХЕР ЈОВАН
+ФЕХЕР ЈОВАН
+ФЕХЕР ЈУЛИЈА
+ФЕХЕР КАЛМАН
+ФЕХЕР ЛАЈОШ
+ФЕХЕР ЛАСЛО
+ФЕХЕР ЛАСЛО
+ФЕХЕР МАРГИТА
+ФЕХЕР МАРИЈА
+ФЕХЕР МИХАЈЛО
+ФЕХЕР НАНДОР
+ФЕХЕР СТЕВАН
+ФЕХЕР СТЕВАН
+ФЕХЕР ТЕРЕЗА
+ФЕХЕР ВЕРА
+ФЕХЕРВАРИ ЈЕЛИСАВЕТА
+ФЕХИР АЛЕКСАНДАР
+ФЕХИР ПЕТАР
+ФЕХИРОВ АВРАМ
+ФЕХИРОВ КОСАНА
+ФЕХИРОВ МИРЈАНА
+ФЕЈЂИ ВЛАДИМИР
+ФЕЈДЕТИЋ ТОМИСЛАВ
+ФЕЈЕШ ШАНДОР
+ФЕЈЕШ ЂОРЂЕ
+ФЕЈЕШ АРАНКА
+ФЕЈЕШ ГЕНА
+ФЕЈЕШ ИШТВАН
+ФЕЈЕШ ИШТВАН
+ФЕЈЕШ ЈАНОШ
+ФЕЈЕШ ЈАНОШ
+ФЕЈЕШ ЉИЉАНА
+ФЕЈЕШ ЗОЛТАН
+ФЕЈЕШ ЗОЛТАН
+ФЕЈФАР ЈУЛИЈАНА
+ФЕЈСА ГЕОРГИЈЕ
+ФЕЈСА ЈАНКО МР ПХ
+ФЕЈСА МАРГИТА
+ФЕЈСА-ПОПОВИЋ ЛЕОНА
+ФЕЈСТХАМЕЛ ПАЛ
+ФЕЈЗУЛАХИ ФЕЈЗУЛАХ
+ФЕКЕТЕ ШАНДОР
+ФЕКЕТЕ ШАНДОР
+ФЕКЕТЕ ЖУЖАНА
+ФЕКЕТЕ АДОЛФ
+ФЕКЕТЕ ФЕРЕНЦ
+ФЕКЕТЕ ФЕРЕНЦ
+ФЕКЕТЕ ЈАГОДА
+ФЕКЕТЕ КАРЛО
+ФЕКЕТЕ КАТИЦА
+ФЕКЕТЕ ЛАСЛО
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МИХАЈЛО
+ФЕКЕТЕ МИХАЉ
+ФЕКЕТЕ ПЕТАР
+ФЕКЕТЕ СТЕВАН
+ФЕКЕТЕ ВЕСНА
+ФЕКИЋ ВЛАДИМИР
+ФЕЛБАБ РАДА
+ФЕЛБАБ САВА
+ФЕЛБАБ СТАНИМИР
+ФЕЛБАБОВ ДИМИТРИЈЕ
+ФЕЛБАБОВ ЈОВАН
+ФЕЛБАБОВ ВЛАДИСЛАВА
+ФЕЛБАП ЈУЛКА
+ФЕЛБАП НИКОЛА
+ФЕЛБАПОВ ДИМИТРИЈЕ
+ФЕЛБАПОВ МИЛАНКА
+ФЕЛБАПОВ МИЛОРАД
+ФЕЛБАПОВ НЕМАЊА
+ФЕЛБАПОВ РАДМИЛА
+ФЕЛБАПОВ РАДОСЛАВ
+ФЕЛБАПОВ СТЕВАН
+ФЕЛДШЕР АНА
+ФЕЛДШЕР КАРЛО
+ФЕЛДЕШДИ АНДРИЈА
+ФЕЛДЕШИ ФРАЊА
+ФЕЛДЕШИ ИБОЉА ДР
+ФЕЛДЕШИ МАРИЈА
+ФЕЛДЕЖДИ ЈУЛИЈАНА
+ФЕЛДЕЖДИ ЛАСЛО
+ФЕЛДЕЖДИ ПЕТАР
+ФЕЛДЕЖДИ СТЕВАН
+ФЕЛДЕАК ДАНИЦА
+ФЕЛДЕАК ЈОЖЕФ
+ФЕЛДИ ШАНДОР
+ФЕЛДИ ЕРЖЕБЕТ
+ФЕЛДИ ЈАРОСЛАВ
+ФЕЛДВАРИ ЈОСИП
+ФЕЛДВАРИ ЈОВАН
+ФЕЛДВАРИ ЈУСТИНА
+ФЕЛДВАРИ КАЛМАН
+ФЕЛДВАРИ ОЛГИЦА
+ФЕЛДВАРИ СТЕВАН
+ФЕЛДВЕБЕЛ РОЗАЛИЈА
+ФЕЛЕ ДРАЖЕН ЛЕКАР
+ФЕЛЕЋ ИЗЕТ
+ФЕЛЕГИ АНА
+ФЕЛЕГИ ЛАДИСЛАВ
+ФЕЉА МИРЈАНА
+ФЕЛНЕР ДУШАНКА
+ФЕЛНЕР ТИБОР
+ФЕМИЋ АЛЕКСИЈЕ
+ФЕМИЋ БЛАГОЈЕ
+ФЕМИЋ ГРУЈИЦА
+ФЕМИЋ МИЛИЈА
+ФЕМИЋ МИЛОВАН
+ФЕМИЋ ПЕТКО
+ФЕМИЋ РАДМИЛА
+ФЕМИЋ СТАНКА
+ФЕМИЋ ВЕЉКО
+ФЕМИЋ ЗОРА
+ФЕНЦ РУЖИЦА
+ФЕНДЛЕР ЈОВАН
+ФЕНДРИК АНДРИЈА
+ФЕНДРИК ФРАЊО
+ФЕНДРИК КАРЛО
+ФЕЊАЦ ИВАН
+ФЕЊАЦ ЈОВАН
+ФЕЊАЦ СИНИША
+ФЕЊАЦ СЛОБОДАНКА
+ФЕЊЕШ АНА
+ФЕЊЕШ ФРАЊА
+ФЕЊВЕШИ МАРИШКА
+ФЕРЧИК АНДРИЈА
+ФЕРАРИНОВ ПАВЛЕ
+ФЕРАРИО СИЛВИО
+ФЕРАТИ АФИЗ
+ФЕРАТИ БЕРО
+ФЕРАТИ ЕХАТ
+ФЕРАТИ РАГИП
+ФЕРАТИ СЕЈФИДИН
+ФЕРАТИ СКЕНДЕР
+ФЕРЕНЧАК ИВИЦА
+ФЕРЕНЧЕК ЉУБИЦА
+ФЕРЕНЧЕК ОЛИВЕР ДИПЛ ИНГ
+ФЕРЕНЧЕК ВИЛКО
+ФЕРЕНЧЕВ МИЛОРАД
+ФЕРЕНЧЕВ ЗОРА
+ФЕРЕНЧЕВИЋ ЂОРЂЕ
+ФЕРЕНЧЕВИЋ-САЛАЈ ЈЕЛЕНА
+ФЕРЕНАЦ АНДРИЈА
+ФЕРЕНАЦ АНДРИЈА
+ФЕРЕНАЦ ИВАН
+ФЕРЕНАЦ РАДМИЛА
+ФЕРЕНЦ АНТАЛ
+ФЕРЕНЦ ЈОЖЕФ
+ФЕРЕНЦ ЈОЖЕФ
+ФЕРЕНЦИ ЂЕРЂ
+ФЕРЕНЦИ ДЕЗИДЕР
+ФЕРЕНЦИ ЕУГЕН
+ФЕРЕНЦИ ФРАЊА
+ФЕРЕНЦИ ЈУЛИЈАНА
+ФЕРЕНЦИ СТЕВАН
+ФЕРЕНЦИ ВЕРА
+ФЕРИК ЈУРАЈ
+ФЕРИК ЈУРАЈ
+ФЕРИЗОВИЋ АХМЕТ
+ФЕРКО АНДРЕЈ ДР ЛЕКАР
+ФЕРКО МИЛОШ
+ФЕРКО ПАВЕЛ
+ФЕРКО ПАВЛЕ
+ФЕРЛАН РАДМИЛА
+ФЕТАХИ БАЈРАМ
+ФЕТАХОВИЋ ИСМЕТ
+ФЕТАИ ЗИБЕР
+ФИЧОК АЛОЈЗИЈЕ
+ФИШАКОВ КОНСТАДИН
+ФИШАНГ ЉИЉАНА
+ФИШЕР ЂОРЂЕ ДР ЛЕКАР
+ФИШЕР ЂОРЂЕ
+ФИШЕР АЛЕКСАНДАР ДР
+ФИШЕР АЛЕКСАНДАР
+ФИШЕР АНТОН
+ФИШЕР БЛАНКА
+ФИШЕР ДРАГУТИН
+ФИШЕР ГАВРА
+ФИШЕР ИРЕНА
+ФИШЕР ИРЕНА
+ФИШЕР ЈЕНЕ
+ФИШЕР ЈОСИП
+ФИШЕР КАРОЉ
+ФИШЕР ЛАСЛО
+ФИШЕР ЛЕО ДР
+ФИШЕР НАТАЛИЈА
+ФИШЕР ПИРОШКА
+ФИШЕР СТЕВАН
+ФИШЕР ЗВОНИМИР
+ФИШЛ ФЕДОР
+ФИШЛ ЈУЛИЈА ДИПЛ ИНГ
+ФИШТЕШ ИМРЕ
+ФИШТЕШ МАРИЈА
+ФИШТЕШ МИХАЉ
+ФИШТЕШ ПИРОШКА
+ФИАЛА ИВАНКА
+ФИАЛА ИВАН
+ФИБИШАН ЂУРАЂ
+ФИБИШАН СЛАВОЉУБ
+ФИЦЕ ЕРЖЕБЕТ
+ФИЦИНГЕР ВАЛЕРИЈА
+ФИДУШЕК КАТИЦА
+ФИФА ДРАГИЦА
+ФИФА НЕБИ
+ФИГУРА ШАНДОР
+ФИЈАТОВИЋ ОЛГА
+ФИЈУКОВИЋ САДЕТА
+ФИЈУЉАНИН ЗУЛФО
+ФИЛЕКИ МИРОСЛАВ
+ФИЛЕКОВИЋ СЕИД
+ФИЛЕП ЂЕРЂ
+ФИЛЕП ЂОРЂЕ
+ФИЛЕП ЂОРЂЕ
+ФИЛЕП АНТАЛ
+ФИЛЕП БЕЛА
+ФИЛЕП ИДА
+ФИЛЕП ЈЕНЕ
+ФИЛЕП ЈОЖЕФ
+ФИЛЕП КАЛМАН
+ФИЛЕП КАЛМАН
+ФИЛЕП ЛАДИСЛАВ
+ФИЛЕП МИРЈАНА
+ФИЛЕП ЗОЛТАН
+ФИЛЕПИ МИРОСЛАВ
+ФИЛИМОНОВИЋ ЖИВОРАД
+ФИЛИМОНОВИЋ ЂОРЂЕ
+ФИЛИП ЈОВАН ДР ПРАВНИК
+ФИЛИП РАДОСАВ
+ФИЛИПЧЕВ ЗДРАВКО
+ФИЛИПАШ ДРАГАН
+ФИЛИПАШЕВ НАДА
+ФИЛИПЕЦ ЗИТА
+ФИЛИПЕНДИН МАРКО
+ФИЛИПОВ ИЛИЈА
+ФИЛИПОВ МИЛОШ
+ФИЛИПОВ МИОДРАГ
+ФИЛИПОВ МОМИР
+ФИЛИПОВ НИКОЛА
+ФИЛИПОВ ПРЕДРАГ
+ФИЛИПОВ РАДОВАН
+ФИЛИПОВ СЛАЂАНА
+ФИЛИПОВ ТИХОМИР
+ФИЛИПОВ ТИЈАНА
+ФИЛИПОВИЋ ЧЕДО
+ФИЛИПОВИЋ АЛЕКСАНДАР
+ФИЛИПОВИЋ АНТОН
+ФИЛИПОВИЋ БОШКО
+ФИЛИПОВИЋ БОГОМИР
+ФИЛИПОВИЋ БОРА
+ФИЛИПОВИЋ БРАНКО
+ФИЛИПОВИЋ-ДАМЈАНОВ НАДА
+ФИЛИПОВИЋ ДЕСАНКА
+ФИЛИПОВИЋ ДИЈАНА
+ФИЛИПОВИЋ ДОБРИЦА
+ФИЛИПОВИЋ ДОБРИЛА
+ФИЛИПОВИЋ ДРАГАН
+ФИЛИПОВИЋ ДРАГАН
+ФИЛИПОВИЋ ДУШАНКА
+ФИЛИПОВИЋ ДУШАНКА
+ФИЛИПОВИЋ ГОРДАНА
+ФИЛИПОВИЋ ИВАН
+ФИЛИПОВИЋ ИВАН
+ФИЛИПОВИЋ ЈЕЛИСАВЕТА
+ФИЛИПОВИЋ ЈОВАН
+ФИЛИПОВИЋ ЈОВАН
+ФИЛИПОВИЋ ЛЕПОСАВА
+ФИЛИПОВИЋ ЉИЉАНА
+ФИЛИПОВИЋ ЉУБИЦА
+ФИЛИПОВИЋ ЉУБИНКА
+ФИЛИПОВИЋ ЉУБИНКО
+ФИЛИПОВИЋ МИЛАДИН
+ФИЛИПОВИЋ МИЛАДИН
+ФИЛИПОВИЋ МИЛАН ДИПЛ ИНГ
+ФИЛИПОВИЋ МИЛАНКА
+ФИЛИПОВИЋ МИЛАНКА
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛЕНА
+ФИЛИПОВИЋ МИЛЕНКО
+ФИЛИПОВИЋ МИЛИВОЈЕ
+ФИЛИПОВИЋ МИЛКА
+ФИЛИПОВИЋ МИЛОЈКО
+ФИЛИПОВИЋ МИЛОВАН
+ФИЛИПОВИЋ МИОДРАГ
+ФИЛИПОВИЋ МИОДРАГ
+ФИЛИПОВИЋ МИРЈАНА
+ФИЛИПОВИЋ МИРКО
+ФИЛИПОВИЋ МИРОСЛАВ
+ФИЛИПОВИЋ НАТАША
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛИНА
+ФИЛИПОВИЋ ПАУЛА
+ФИЛИПОВИЋ ПЕРО
+ФИЛИПОВИЋ РАДИВОЈ
+ФИЛИПОВИЋ РАДОЈКА
+ФИЛИПОВИЋ РАДОЈКО
+ФИЛИПОВИЋ РАДОСЛАВ
+ФИЛИПОВИЋ РАДОВАН
+ФИЛИПОВИЋ РАНКА
+ФИЛИПОВИЋ РУЖАНА
+ФИЛИПОВИЋ РУДОЛФ
+ФИЛИПОВИЋ САВА ДИПЛ ИНГ
+ФИЛИПОВИЋ САВА
+ФИЛИПОВИЋ СИБИН
+ФИЛИПОВИЋ СЛАВКО
+ФИЛИПОВИЋ СНЕЖАНА
+ФИЛИПОВИЋ СПАСОЈЕ
+ФИЛИПОВИЋ СРЂАН
+ФИЛИПОВИЋ СРЕЋКО
+ФИЛИПОВИЋ СТЕВАН ДР СТОМАТОЛОГ
+ФИЛИПОВИЋ СТОЈАН
+ФИЛИПОВИЋ СТОЈАН
+ФИЛИПОВИЋ ТОМИСЛАВ
+ФИЛИПОВИЋ ВЕСНА
+ФИЛИПОВИЋ ВИДОСАВ
+ФИЛИПОВИЋ ВЛАДИМИР
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРИЦА
+ФИЛИПОВСКА-ОБРАДОВИЋ ВЕРА
+ФИЛИПОВСКИ БОЖО
+ФИЛИПОВСКИ ТОДОС
+ФИЛКО ДРАГИЦА
+ФИЛКО ЈОСИП
+ФИЛКО ЈОВАН
+ФИЛКО МАРИЈА
+ФИЛКО МИХАЉ
+ФИЛКО МИХАЉ
+ФИЛКО ПАВЕЛ
+ФИЛКО ТИХОМИР
+ФИНЧУР АЛЕКСАНДАР
+ФИНЧУР ЈОЖЕФ
+ФИНЧУР ЈУЛИЈАНА
+ФИНЧУР ЛАДИСЛАВ
+ФИНЏАНОВИЋ ГОЈКО
+ФИНЏАНОВИЋ МИКО
+ФИНЏАНОВИЋ МИРКО
+ФИНЏАНОВИЋ ОБРАД
+ФИНК-ДИМИТРИЈЕВИЋ ДОРОТЕА
+ФИНК ВИКТОР НОВИНАР
+ФИНКА ГОРЧАН
+ФИР БЕАТА
+ФИРАЊ ЈОЖЕФ
+ФИРАЊИ ЂЕРЂ
+ФИРАЊИ ЂОРЂЕ
+ФИРАЊИ ЂОРЂЕ
+ФИРАЊИ ЕРЖЕБЕТ
+ФИРАЊИ ЈОВАН
+ФИРАЊИ ВИКТОР
+ФИРИЋ МАРИЈА
+ФИРУЛОВИЋ КОСТАНТИН
+ФИСТРИЋ ЂОРЂЕ
+ФИСТРИЋ МИРЈАНА
+ФИВЕШИ ГАБОР
+ФИВЕШИ ТИБОР
+ФЛАЦ ИВАНКА
+ФЛАЦ ПЕТАР
+ФЛАЈС ЈЕЛИСАВЕТА
+ФЛЕГЕР СТЕВАН
+ФЛЕГО ИВАН
+ФЛЕГО МАРТА
+ФЛЕКАЧ ВЛАДО
+ФЛИТНЕР ОСКАР
+ФЛОКА ЂЕНИКА
+ФЛОРА ВАСА
+ФЛОРИЋ ДИМИТРИЈЕ
+ФЛОРИЋ ЉУБИЦА
+ФЛОРИЋ ЗОРАН
+ФЛОРИЋ ЗОРАН
+ФЛОРИН ВИНКА
+ФОДОР ЖОФИЈА
+ФОДОР АНА
+ФОДОР АНДРИЈА
+ФОДОР ЕРЖЕБЕТ
+ФОДОР ФЕРЕНЦ
+ФОДОР ФРАЊА
+ФОДОР ФРАЊА
+ФОДОР ЈОЛАН
+ФОДОР ЈОВАН
+ФОДОР ЈОВАН
+ФОДОР КАЛМАН
+ФОДОР КАТА
+ФОДОР ЛАЈОШ
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛИДИЈА
+ФОДОР МАРТА
+ФОДОР ОСКАР ДИПЛ ОЕЦ
+ФОДОР ТИБОР
+ФОДОР ТИБОР
+ФОДОР ТИБОР
+ФОДОР ЗДРАВКО
+ФОДОРА ЈАНКО
+ФОГАРАШИ ЂЕРЂ ДР
+ФОГАРАШИ ЂЕРЂ
+ФОГАРАШИ АНДРИЈА
+ФОГАРАШИ АНИКО
+ФОГАРАШИ ИЛОНА
+ФОГАРАШИ СТЕВАН
+ФОГЛ МАГДАЛЕНА
+ФОЈКАР ЈАНКО
+ФОЛИЋ РАДОМИР ДР
+ФОЛТИН МАРГИТА
+ФОЛТИН МИЛИЦА
+ФОНТАЊ ЛОТАР
+ФОРАИ ЗОЛТАН
+ФОРАИ ЗОРИЦА
+ФОРГАЧ ЈЕЛИСАВЕТА
+ФОРГИЋ ИВАН
+ФОРГО ИШТВАН
+ФОРГО ЛАСЛО
+ФОРИШКОВ ЈОВАНКА
+ФОРИШКОВ ЛАЗАР
+ФОРИШКОВИЋ АЛЕКСАНДАР
+ФОРКАПА САВО
+ФОРКАПИЋ АЛЕКСАНДАР
+ФОРКАПИЋ ИВАНКА
+ФОРКАПИЋ ЛАЗАР
+ФОРКАПИЋ МАРИЈА
+ФОРКАПИЋ НИКОЛА
+ФОРКАПИЋ САВА
+ФОРКАПИЋ СЛАВИЦА
+ФОРКАПИЋ ВЕЛИНКА
+ФОРО ИВАН
+ФОРО ЈУЛИЈАНА
+ФОТИЋ ЂОРЂЕ
+ФОЗЕКОШ АНКИЦА
+ФРЧЕК ЂУРА
+ФРЧЕК МАРИЈА
+ФРЖОП МИШЕ
+ФРЖОВИЋ ЂОРЂЕ
+ФРЖОВИЋ ГАВРИЛО
+ФРЖОВИЋ МИХАЈЛО
+ФРЖОВИЋ МИЛЕНА
+ФРАЦИЛЕ НИЦЕ
+ФРАЈСТ РУДОЛФ
+ФРАЈТОВИЋ МОМЧИЛО
+ФРАЈЗ ПЕТАР
+ФРАНЧИЋ РОК
+ФРАНЦ МАГДАЛЕНА ДИПЛ ИНГ
+ФРАНЦЕЉ ФРАНЦ
+ФРАНЦЕР ИВАН
+ФРАНЦЕР ИВАН
+ФРАНЦИШКОВИЋ АТИЛА
+ФРАНЦИШКОВИЋ ИВАН
+ФРАНЦИШКОВИЋ МАТЕ
+ФРАНЦИА АНДРИЈА
+ФРАНЦИА ИШТВАН
+ФРАНЦИА ПЕТАР
+ФРАНЦИЈА ЈОЖЕФ
+ФРАНЦИЈА-КУКИЧКА МАРГАРЕТА
+ФРАНЦИСТИ ЂОРЂЕ
+ФРАНЦИСТИ ЈАРОСЛАВ
+ФРАНЦИСТИ ПАВЛЕ
+ФРАНЦИСТИ ВЛАДИМИР
+ФРАНЦУСКИ АЛЕКСА
+ФРАНЦУСКИ БРАНИСЛАВ
+ФРАНЦУСКИ ДАРИНКА
+ФРАНЦУСКИ ДЕСАНКА
+ФРАНЦУСКИ ДРАГАН
+ФРАНЦУСКИ ДУШАН
+ФРАНЦУСКИ ИВАН ДР
+ФРАНЦУСКИ ЈОВАНКА
+ФРАНЦУСКИ МАРКО
+ФРАНЦУСКИ МИЛАН
+ФРАНЦУСКИ МИРОСЛАВ
+ФРАНЦУСКИ ПЕТАР
+ФРАНЦУСКИ РАДОВАН
+ФРАНЦУСКИ СЛОБОДАНКА
+ФРАНЦУСКИ СТРАХИЊА
+ФРАНЦУСКИ ЗОРАН
+ФРАНЦУСКИ ЗОРАН
+ФРАНЦУСКИ ЗОРКА
+ФРАНЦУСКИ ЗОРКА
+ФРАНЦУЗ ДАРИНКА
+ФРАНЦУЗ ЈЕЛЕНА
+ФРАНЦУЗ ВЕЛИМИР
+ФРАНЦУЗ ВУК
+ФРАНЕТА ЈОВО
+ФРАНИЋ ИВАН
+ФРАНИЋ МИЛКА
+ФРАЊИЧЕВИЋ НИКОЛА
+ФРАЊИЋ МАРИЦА
+ФРАЊО ЖУЖАНА
+ФРАНК ЂЕРЂ
+ФРАНК ФЕРЕНЦ
+ФРАНК ИЛЕШ
+ФРАНК ЈАНОШ
+ФРАНК ТИБОР
+ФРАНКА МИХАЈЛО
+ФРАНКОВИЋ ЈОВАН
+ФРАНОВИЋ АЛЕКСАНДРА
+ФРАНОВИЋ ВЛАДИМИР
+ФРАНЗЕР ИВАН
+ФРАТОЈ ЈОЦА
+ФРАТРИЋ СИГМУНД
+ФРАТУЦАН ЂОРЂЕ
+ФРАТУЦАН ЂОРЂЕ
+ФРАТУЦАН ФИЛИП
+ФРАТУЦАН ИВАН
+ФРАТУЦАН НЕВЕНА
+ФРАТУЦАН ПЕТАР
+ФРАТУЦАНОВ ИВАНКА
+ФРЕИ ЕЛИЗАБЕТА
+ФРЕМЕР АНТУН
+ФРЕМЛ ШАНДОР
+ФРЕНКЕЛ АНА
+ФРЕНКЕЛ ЕВА
+ФРЕНКЛ ДРАГИЦА
+ФРИЧ БОЖИДАР
+ФРИЧ КАТИЦА
+ФРИШ ДРАГАН
+ФРИШ МИЛАН
+ФРИШЧИЋ ДРАГУТИН
+ФРИЦ РУДОЛФ
+ФРИДРИХ АНА
+ФРИДРИХ ЈЕЛЕНА
+ФРИДРИХ МАГДА
+ФРИДРИХ ЗОРИЦА
+ФРИНДИК ФРАЊА
+ФРИНДИК МИХАЉ
+ФРИНДРИК БЕЛА
+ФРКА АРТУР
+ФРКА НИКОЛА
+ФРЉ МУХАРЕМ
+ФРОЛ МАРИЈАН
+ФРОЛ НАДА
+ФРОЛ ВИЛИМ
+ФРУЖА АЛЕКСАНДАР
+ФУЧИК КАРЛО
+ФУДЕРЕР ЈУЛИЈЕ
+ФУДЕРЕР МАГДАЛЕНА
+ФУЈКА ЂОРЂЕ
+ФУЈТО ВЛАДИМИР
+ФУЛАЈТЕР ЂОРЂЕ
+ФУНЋИК ПАВЛЕ
+ФУНДУРУЉА МИЛЕНКО
+ФУНК ШТЕФАНИЈА
+ФУНК ЛАЈОШ
+ФУНТЕК ИВАН
+ФУРЈАНОВИЋ ВЛАДИСЛАВ
+ФУРЛАН ЕРЖЕБЕТ
+ФУРЛАН МАРКО
+ФУРМАН ФРАЊА
+ФУРМАН ЈОВАН
+ФУРМАН МАРИЈА
+ФУРМАН ТИМОФЕЈ
+ФУРМАН ТИНКА
+ФУРО ИМРЕ
+ФУСКО АНГЕЛА
+ФУСКО ИШТВАН
+ФУСКО МАРИЈА
+ФУСКО МИХАЉ
+ФУТО АНТАЛ
+ФУТО ЈОЖЕФ
+ФУТО ЈОЖЕФ
+ФУТО МИРКО
+ФУТОШКИ МИЛАН
+ФУТОШКИ МИТА
+ГАЧАНОВИЋ ДРАГАН
+ГАЧЕВИЋ МИРОСЛАВ
+ГАЧЕВИЋ РАДЕНКО
+ГАЧЕВИЋ ТЕРЕЗА
+ГАЧИЋ БРАНКО
+ГАЧИЋ ДАНИЦА
+ГАЧИЋ ДАНИЛО
+ГАЧИЋ МИЛАН
+ГАЧИЋ СТЕВАН
+ГАЧИЋ СТЕВАН
+ГАЧИЋ ВЛАДАН
+ГАШЕВИЋ МИЛОРАД
+ГАШЕВИЋ МИЛОВАН
+ГАШЕВИЋ МОМЧИЛО
+ГАШЕВИЋ РАДМИЛА
+ГАШЕВИЋ САВКА
+ГАШЕВИЋ ЗДРАВКО
+ГАШИ ЂЕМАИЉ
+ГАШИ ХАМДИ
+ГАШИ ЈУЛИЈАНА
+ГАШИ ЉУАН
+ГАШИ ЗОРАН
+ГАШИЋ БОГДАН
+ГАШИЋ ДУШАН
+ГАШИЋ КОВИЉКА
+ГАШИЋ КОВИЉКА
+ГАШИЋ КРСТА
+ГАШИЋ МИРОЉУБ
+ГАШИЋ НИКОЛА
+ГАШИЋ СИЛВАНА
+ГАШИЋ ТОДОР ДИПЛ ИНГ
+ГАШИЋ ВАЛЕРИЈА
+ГАШИЋ ЗДРАВКО
+ГАШИЋ ЗОРА
+ГАШПАР БОГДАН
+ГАШПАР ЈАНОШ
+ГАШПАР ЛАЈОШ
+ГАШПАР ЛИДИЈА
+ГАШПАР МИЛЕНКО
+ГАШПАРЕВИЋ ЕРИКА
+ГАШПАРЕВИЋ ЉИЉАНА
+ГАШПАРИЋ НАДА
+ГАШПАРИН ЉИЉАНА
+ГАШПАРОВИЋ ЈОСИП
+ГАЋА БРАНИСЛАВ
+ГАЋА МИОДРАГ
+ГАЋА ВЛАДИМИР
+ГАЋАШ ДРАГИЦА
+ГАЋАШ СИНИША
+ГАЋАШ СТЕВАН
+ГАЋЕША ЂУРО
+ГАЋЕША БРАНКА
+ГАЋЕША ДРАГАН
+ГАЋЕША ДРАГАН
+ГАЋЕША ИЛИЈА
+ГАЋЕША МАНОЈЛО
+ГАЋЕША МИЛОШ
+ГАЋЕША МИЛОРАД
+ГАЋЕША МИЛОВАН ДР
+ГАЋЕША НИКОЛА
+ГАЋЕША СЛАВКО
+ГАЋЕША ВЕЉКО
+ГАЋЕША ВЛАДИМИР
+ГАЋИНА ЖАРКО
+ГАЋИНА ЉИЉАНА
+ГАЋИНОВИЋ БОЖО
+ГАЋИНОВИЋ БРАНКО
+ГАЋИНОВИЋ МИЛИВОЈЕ
+ГАЋИНОВИЋ МИЛОРАД
+ГАЋИНОВИЋ РАЈКО
+ГАЖИ ЈЕЛИСАВЕТА
+ГАЖИК ТЕРЕЗИЈА
+ГАЖО КАТИЦА
+ГАЖО-МАТОШКОВИЋ ОЛГИЦА
+ГАЖО МИХАЈЛО
+ГАЖО МИКЛОШ
+ГАЂАНСКИ ЗОРАН
+ГАБЛЕР ВИКТОРИЈА
+ГАБОР АРПАД
+ГАБОР БЕЛА
+ГАБОР ЕРЖЕБЕТ
+ГАБОР ИРЕНА
+ГАБОР ЈОЖЕФ
+ГАБОР КАРОЉ
+ГАБОР НАНДОР
+ГАБОРОВ БРАНИСЛАВ
+ГАБОРОВ БРАНИСЛАВ
+ГАБОРОВ ГАВРИЛО
+ГАБОРОВ МИЛАН
+ГАБОРОВ МИТА
+ГАБОРОВ ПАВЛЕ
+ГАБОРОВ ПЕТАР
+ГАБРЕ РОКО
+ГАБРИЋ ЕВИЦА
+ГАБРИЋ КСЕНИЈА
+ГАБРИЋ МИХАЈЛО
+ГАБРИЋ НЕСТОР
+ГАБРИЋ ПЕТАР
+ГАБРИЋ СЛАВКО
+ГАБРИЕЛ МИКЛОШ
+ГАБРИЈЕЛЧИЋ ЗДРАВКО
+ГАБРОВИЋ АНДРАШ
+ГАБРОВИЋ АНДРИЈА
+ГАЦИН МИРОСЛАВ
+ГАЏА КРИЖАН
+ГАЏА РУЖА
+ГАЏИЋ МИЛАН
+ГАЏИЋ ВИНКО
+ГАЏУР ИВАН
+ГАЏУРИЋ ЗЛАТКО
+ГАДАНЕЦ КАТАРИНА
+ГАДЊАИ ЈОВА
+ГАДЊАНСКИ ВЛАДИМИР
+ГАГИЋ АЛЕКСАНДАР
+ГАГИЋ АВРАМ
+ГАГИЋ БОШКО
+ГАГИЋ БОРИВОЈЕ
+ГАГИЋ ДРАГИЦА
+ГАГИЋ ДУШАН
+ГАГИЋ-ГРУБЕША МИЛЕВА
+ГАГИЋ ЈОВАНКА
+ГАГИЋ ЈОВАН
+ГАГИЋ НИКОЛА
+ГАГИЋ НИКОЛА
+ГАГИЋ РАДОСЛАВ
+ГАГИЋ РАДОВАН
+ГАГИЋ СЛОБОДАН
+ГАГИЋ ВИДОСАВА
+ГАГОВИЋ МИЛОРАД
+ГАГОВИЋ НОВАК
+ГАГОВИЋ ОЛГА
+ГАГОВИЋ РАДОСАВ
+ГАГРЧИН ЛАЗАР
+ГАГРЧИН МЛАДЕН
+ГАГРИЦА ЈОВАН
+ГАГУЛА МУЈО
+ГАИЋ ВЕЉКО
+ГАИЦКИ НИКОЛА
+ГАИЦКИ САЊА
+ГАИЦКИ ТАНАСИЈЕ
+ГАИЦКИ ВЕРИЦА
+ГАИНОВ РАДОВАН
+ГАЈШИН СЛАВИЦА
+ГАЈШИН СМИЉА
+ГАЈШИН СТАНИСЛАВ
+ГАЈАНИЋ СТЈЕПАН
+ГАЈДА ШАНДОР
+ГАЈДОШ ЂУЛА
+ГАЈДОШ ИШТВАН
+ГАЈДОШ ИБОЉА
+ГАЈДОШ ЛАСЛО
+ГАЈДОШ ЉУБОМИР
+ГАЈДОШ МИХАЈЛО
+ГАЈДОШ НИКОЛА
+ГАЈДОШ ПЕТАР
+ГАЈДОШЕВИЋ ЂОРЂЕ
+ГАЈДОБРАНСКИ ЂОРЂЕ ДР
+ГАЈДОБРАНСКИ ДАНИЦА
+ГАЈДОБРАНСКИ ДРАГИЦА
+ГАЈДОБРАНСКИ ЉУБИЦА
+ГАЈДОБРАНСКИ МАРИЈА
+ГАЈДОБРАНСКИ МИЛИВОЈ
+ГАЈДОБРАНСКИ ПЕТАР
+ГАЈДОБРАНСКИ ТОДОР
+ГАЈЕР ЂУРА
+ГАЈЕР ЈОЦА
+ГАЈЕР ЛЕОНА
+ГАЈЕР МАНОЈЛО
+ГАЈЕР НАДА
+ГАЈГЕР ЈОЖЕФ
+ГАЈИШИН ДАРА
+ГАЈИШИН ЛАЗАР
+ГАЈИШИН МИЛИЦА
+ГАЈИШИН ПЕТАР
+ГАЈИШИН СТЕВАН
+ГАЈИШИН СТЕВАН
+ГАЈИШИН ТОМИСЛАВ
+ГАЈИЋ ЖАРКО
+ГАЈИЋ ЖАРКО
+ГАЈИЋ ЖИВКА
+ГАЈИЋ ЖИВКО
+ГАЈИЋ ЖИВОТА
+ГАЈИЋ ЂОРЂЕ
+ГАЈИЋ ЂУРО
+ГАЈИЋ АЛЕКСАНДАР
+ГАЈИЋ АНА
+ГАЈИЋ БОЖИЦА
+ГАЈИЋ БОЖИДАР
+ГАЈИЋ БОГДАН
+ГАЈИЋ БОГОЉУБ
+ГАЈИЋ БОРИСЛАВ
+ГАЈИЋ БРАНКО
+ГАЈИЋ БРАНКО
+ГАЈИЋ ЦВИЈАН
+ГАЈИЋ ЦВИЈАН
+ГАЈИЋ ДАНИЦА
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДИМИТРИЈЕ
+ГАЈИЋ ДРАГАН
+ГАЈИЋ ДРАГАН
+ГАЈИЋ ДРАГИЦА
+ГАЈИЋ ДРАГОЉУБ
+ГАЈИЋ ДРАГО
+ГАЈИЋ ДУШАН ДИПЛ ИНГ
+ГАЈИЋ ДУШКО ДИПЛ ПРАВНИК
+ГАЈИЋ ГОЈКО
+ГАЈИЋ ГОРАН
+ГАЈИЋ ГОРДАНА
+ГАЈИЋ ИБОЉА
+ГАЈИЋ ЈЕЛЕНА
+ГАЈИЋ КАТАРИНА
+ГАЈИЋ КРИСТИНА
+ГАЈИЋ КРУНА
+ГАЈИЋ ЛАЗАР
+ГАЈИЋ ЛАЗО
+ГАЈИЋ МАКСА
+ГАЈИЋ МАРИЈА ДР
+ГАЈИЋ МАРИЈА
+ГАЈИЋ МАРИНКО ДР
+ГАЈИЋ МИЋО
+ГАЈИЋ МИКА
+ГАЈИЋ МИЛАНА
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛИНКО
+ГАЈИЋ МИЛИВОЈ
+ГАЈИЋ МИЛОШ
+ГАЈИЋ МИЛОЈКА
+ГАЈИЋ МИЛОСАВ
+ГАЈИЋ МИЛОВАН
+ГАЈИЋ МИОДРАГ
+ГАЈИЋ МИОДРАГ
+ГАЈИЋ МИРЈАНА
+ГАЈИЋ МИРКО ДР
+ГАЈИЋ МИРКО
+ГАЈИЋ МИРОСЛАВ
+ГАЈИЋ МИТРА
+ГАЈИЋ МЛАДЕНКО
+ГАЈИЋ МЛАДЕН
+ГАЈИЋ МОМЧИЛО
+ГАЈИЋ НЕДЕЉКО
+ГАЈИЋ НИКОЛА ДИПЛ ИНГ
+ГАЈИЋ НИКОЛА
+ГАЈИЋ НИКОЛА
+ГАЈИЋ НОВАК
+ГАЈИЋ ОЛИВЕРА
+ГАЈИЋ ПЕЛКА
+ГАЈИЋ ПЕРСА
+ГАЈИЋ РАДЕНКО
+ГАЈИЋ РАДМИЛА
+ГАЈИЋ РАДОМИР
+ГАЈИЋ РАЈКА
+ГАЈИЋ РАТКО
+ГАЈИЋ РАТКО
+ГАЈИЋ РОЗАЛИЈА
+ГАЈИЋ РУЖИЦА
+ГАЈИЋ САВА
+ГАЈИЋ СЛАКА
+ГАЈИЋ СЛАВИЦА
+ГАЈИЋ СЛАВКО
+ГАЈИЋ СЛАВКО
+ГАЈИЋ СРЕЋКО
+ГАЈИЋ СРЕТО
+ГАЈИЋ СТАНИМИР
+ГАЈИЋ СТАНОЈЛО
+ГАЈИЋ СТОЈАН
+ГАЈИЋ СТРАХИЊА
+ГАЈИЋ СВЕТОЗАР
+ГАЈИЋ ТАНАСКО
+ГАЈИЋ ВЕЛИМИР
+ГАЈИЋ ВЕСНА
+ГАЈИЋ ВИДА
+ГАЈИЋ ВИДОСАВА
+ГАЈИЋ ВЛАДИСЛАВ
+ГАЈИЋ ЗОРАН
+ГАЈИЦА БРАНКО
+ГАЈИЦКИ БРАНКО
+ГАЈИЦКИ ДУШАН
+ГАЈИЦКИ ЈЕЛЕНА
+ГАЈИЦКИ ЛАЗАР
+ГАЈИЦКИ МАРИЈА
+ГАЈИЦКИ МИЛА
+ГАЈИЦКИ МИЛИЦА
+ГАЈИЦКИ САВА
+ГАЈИН ЖИВКО
+ГАЈИН ЂОРЂЕ
+ГАЈИН АЛЕКСАНДАР
+ГАЈИН АНКА
+ГАЈИН БРАНКО
+ГАЈИН ДРАГИЦА
+ГАЈИН ЈОВАН
+ГАЈИН ЛАЗАР
+ГАЈИН МИХАЈЛО
+ГАЈИН МИЛАН
+ГАЈИН МИЛЕНКО
+ГАЈИН МИЛОВАН
+ГАЈИН МИРЈАНА
+ГАЈИН НАДА
+ГАЈИН НЕВЕНКА
+ГАЈИН ПЕТАР
+ГАЈИН СЛАВКА ДР
+ГАЈИН СВЕТЛАНА
+ГАЈИН ВЛАДИМИР
+ГАЈИНА ДРАГОМИР
+ГАЈИНОВ ЖИВАН
+ГАЈИНОВ ЖИВКО
+ГАЈИНОВ ЖИВКО
+ГАЈИНОВ ЂОКИЦА
+ГАЈИНОВ АЛЕКСАНДАР
+ГАЈИНОВ АНЂЕЛКА
+ГАЈИНОВ БРАНКО
+ГАЈИНОВ ДИМИТРИЈЕ
+ГАЈИНОВ ДРАГОМИР
+ГАЈИНОВ ИВАНКА
+ГАЈИНОВ ЈЕЛЕНА
+ГАЈИНОВ ЈОВАН
+ГАЈИНОВ ЈУЛКА
+ГАЈИНОВ КОСТА
+ГАЈИНОВ КОСТА
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЉИЉАНА
+ГАЈИНОВ ЉУБИЦА
+ГАЈИНОВ ЉУБИЦА
+ГАЈИНОВ МАРИЈА
+ГАЈИНОВ МАРКО
+ГАЈИНОВ МАРКО
+ГАЈИНОВ МИЛАН
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ НИКОЛА
+ГАЈИНОВ ПЕРА
+ГАЈИНОВ ПЕРСИДА
+ГАЈИНОВ РАДА
+ГАЈИНОВ РАДИВОЈ
+ГАЈИНОВ РАДИВОЈ
+ГАЈИНОВ САВА
+ГАЈИНОВ СТЕВАН
+ГАЈИНОВ СТЕВАН
+ГАЈИНОВ ТОДОР
+ГАЈИНОВ ВЕЛИМИР
+ГАЈИНОВИЋ ЂОРЂЕ
+ГАЈИНОВИЋ ЂОРЂЕ
+ГАЈИНОВИЋ ДАНИЦА
+ГАЈИНОВИЋ ДРАГАНА
+ГАЈИНОВИЋ ДУШАН
+ГАЈИНОВИЋ ИКОНИЈА
+ГАЈИНОВИЋ ЈОВАН
+ГАЈИНОВИЋ ЈОВАН
+ГАЈИНОВИЋ КАТИЦА
+ГАЈИНОВИЋ ЉУБИЦА
+ГАЈИНОВИЋ МИЛАН
+ГАЈО ИШТВАН
+ГАЈОДИ ЈОЖЕФ
+ГАЈОДИ МАРИЈА
+ГАЈОВИЋ ЈУЛИЈАНА
+ГАЈОВИЋ МОМЧИЛО
+ГАЈОВИЋ РАДОЈЕ
+ГАЈТА АНИЦА
+ГАЈТА АУРЕЛИЈА
+ГАК АЛЕКСАНДРА
+ГАК МИЛАН
+ГАК НЕВЕНКА
+ГАК РАДЕ
+ГАК СЛАВКО
+ГАК СНЕЖАНА
+ГАК ЗОРКА
+ГАКИЋ БОШКО
+ГАКОВИЋ АНТОНИЈА
+ГАКОВИЋ ЈЕЛЕНА
+ГАКОВИЋ МАРИЈА
+ГАКОВИЋ МИРКО
+ГАКОВИЋ МИРКО
+ГАКОВИЋ РАНКО
+ГАКОВИЋ ЗОРА
+ГАЛ ШАНДОР
+ГАЛ ЂУЛА
+ГАЛ ЂУЛА
+ГАЛ АНКА
+ГАЛ ФЕРЕНЦ
+ГАЛ ФЕРЕНЦ
+ГАЛ ФЕРЕНЦ
+ГАЛ ГАБОР
+ГАЛ ГИЗЕЛА
+ГАЛ ЈАНОШ
+ГАЛ ЈОЖЕФ
+ГАЛ ЈОЖЕФ
+ГАЛ ЈОВАН
+ГАЛ КАЛМАН
+ГАЛ ЛАЈОШ
+ГАЛ ЛАЈОШ
+ГАЛ МАРГИТ
+ГАЛ МАРИА
+ГАЛ МИША
+ГАЛ МИКЛОШ
+ГАЛ ПАВЛЕ
+ГАЛ ПЕТАР
+ГАЛ ПЕТАР
+ГАЛ СТЕВАН
+ГАЛАЦ ЈОСИП
+ГАЛАЦ ПАВЛЕ
+ГАЛАМБ АТИЛА
+ГАЛАМБОШ АНА
+ГАЛАМБОШ АНТОН
+ГАЛАМБОШ ЕРЖЕБЕТ
+ГАЛАМБОШ ИМРЕ
+ГАЛАМБОШ ЈОСИП
+ГАЛАМБОШ ЛАСЛО
+ГАЛАМБОШ ЛАСЛО
+ГАЛБАЧ ЈОЖЕФ
+ГАЛЕЧИЋ БРАНИСЛАВ
+ГАЛЕЧИЋ ДРАГАН
+ГАЛЕЧИЋ МИРОСЛАВ
+ГАЛЕЧИЋ ЗОРАН
+ГАЛЕЧИЋ ЗОРАН
+ГАЛЕШЕВ ЖИВОЈИН
+ГАЛЕШЕВ ДУБРАВКА
+ГАЛЕШЕВ СЛОБОДАН
+ГАЛЕТИЋ АЛЕКСАНДАР
+ГАЛЕТИЋ МАРИЈА
+ГАЛЕТИЋ МИЛАН
+ГАЛЕТИЋ ВАСА
+ГАЛЕТИЋ ВЛАДИМИР
+ГАЛЕТИЋ ЗОРА
+ГАЛЕТИН МИЛИЦА
+ГАЛЕТИН НИКОЛА
+ГАЛЕТИН ПАЈИЦА
+ГАЛЕТИН СИМА
+ГАЛЕТИН СЛАВКО
+ГАЛЕТИН-СМИТ РАДОЈКА
+ГАЛЕТИН СТЕВАН
+ГАЛЕТИН ЗЛАТКО
+ГАЛФИ ЈОСИП
+ГАЛФИ МИЛЕНА
+ГАЛГО ИШТВАН
+ГАЛИЧИЋ БРАНКО
+ГАЛИЧИЋ МИЛИЦА
+ГАЛИЋ ДУШАНКА
+ГАЛИЋ ИВАНКА
+ГАЛИЋ ЈОВАН
+ГАЛИЋ ЈОВАН
+ГАЛИЋ ЈОВАН
+ГАЛИЋ КАТИЦА
+ГАЛИЋ КАТИЦА
+ГАЛИЋ ЛАДИСЛАВ
+ГАЛИЋ ЉУБИЦА
+ГАЛИЋ МАРИЈАН
+ГАЛИЋ МИЛАДИН
+ГАЛИЋ МИЛЕНКО
+ГАЛИЋ МИЛКА
+ГАЛИЋ МИЛОШ
+ГАЛИЋ МИЛОВАН
+ГАЛИЋ МИРКО
+ГАЛИЋ МИТАР
+ГАЛИЋ МОМЧИЛО
+ГАЛИЋ НЕДЕЉКО
+ГАЛИЋ НИКОЛА
+ГАЛИЋ ОЛГА
+ГАЛИЋ ПЕТАР
+ГАЛИЋ РОЖИКА
+ГАЛИЋ САЊА
+ГАЛИЋ СЛАВКА
+ГАЛИЋ СТЕВО
+ГАЛИЋ ТЕРЕЗА
+ГАЛИЋ ВОЈИСЛАВ
+ГАЛИЋ ЗДРАВКО
+ГАЛИЦКИ ЂУРА
+ГАЛИК ЕТЕЛКА
+ГАЛИПОВИЋ ЈОВИЦА
+ГАЛКО ЈУЛИА
+ГАЛО ЂУРА
+ГАЛОЊА ДЕСАНКА
+ГАЛОЊА ДРАГОЉУБ
+ГАЛОЊА МИОДРАГ
+ГАЛОЊА МИРКО
+ГАЛОЊА РАДЕ
+ГАЛОВИЋ ЂОРЂЕ
+ГАЛОВИЋ ЂУРА
+ГАЛОВИЋ АЛЕКСАНДРА
+ГАЛОВИЋ АНЂЕЛКА
+ГАЛОВИЋ БРАНКО
+ГАЛОВИЋ ДРАГИЦА ДР
+ГАЛОВИЋ ИВИЦА
+ГАЛОВИЋ ЈЕЛИЦА
+ГАЛОВИЋ ЉУБИЦА
+ГАЛОВИЋ МИЛАН
+ГАЛОВИЋ МИЛАН
+ГАЛОВИЋ МИЛЕНКО
+ГАЛОВИЋ РАДОМИР
+ГАЛОВИЋ СТЕВО
+ГАЛОВИЋ ЗОРКА
+ГАЛУС ЛАСЛО
+ГАМБЕР СЛОБОДАН
+ГАНЏИ САВКА
+ГАНГЛИ АНА
+ГАНИЋ АЛОЈЗИЈЕ
+ГАНИЋ АЛОЈЗИЈЕ
+ГАНИЋ МИШО
+ГАНИЋ СТАНИСЛАВА
+ГАНИЋ ЗДЕНКО
+ГАНИЋ ЗОРИЦА
+ГАЊИ САМУЕЛ
+ГАНТАР АЛЕКСАНДРА
+ГАНТАР ФИЛИП
+ГАНТАР МИРОСЛАВ ДР
+ГАРЧЕВ ДАНИЦА
+ГАРЧЕВ МИЛУТИН
+ГАРЧЕВИЋ ПЕРО
+ГАРЧЕВИЋ ПЕРО
+ГАРАШЕВИЋ МИЛКА
+ГАРАБА АНДРИЈА
+ГАРАБАНДИЋ ЂОРЂЕ
+ГАРАБАНДИЋ МАРИЈА
+ГАРАБАНДИЋ МИЛЕНКО
+ГАРАБАНДИЋ НИКОЛА
+ГАРАБАНТИН ИВАН
+ГАРАБАНТИН МИЛОВАН
+ГАРАБАНТИН СТЕВАН
+ГАРАИ БЕЛА
+ГАРАИ КОРНЕЛИЈА
+ГАРАЈ БРАНИМИР
+ГАРАЈ ЈЕЛЕНА
+ГАРАЈ ОЛГА
+ГАРАЛЕЈИЋ ВЕРИЦА
+ГАРАПИЋ БРАНКО ДИПЛ ИНГ
+ГАРДАШЕВИЋ МИЛОШ
+ГАРДАШЕВИЋ-СТРИЧЕВИЋ ЈОВАНКА
+ГАРДАШЕВИЋ ВЕСЕЛИН
+ГАРДИЋ АЛИЈА
+ГАРДИНОВАЧКИ ЂОРЂЕ
+ГАРДИНОВАЧКИ БОРИСЛАВ
+ГАРДИНОВАЧКИ БРАНИМИР
+ГАРДИНОВАЧКИ ЦВЕТА
+ГАРДИНОВАЧКИ МИОРКА
+ГАРДИНОВАЧКИ НЕДЕЉКО
+ГАРДИНОВАЧКИ СТЕВАН
+ГАРДИНОВАЧКИ СВЕТОЗАР
+ГАРЕЛОВИЋ МИРОСЛАВ
+ГАРЕВСКИ ДИМИТРИЈА
+ГАРИЋ ЖАРКО
+ГАРИЋ ЛАЗАР
+ГАРИЋ ЛУКА
+ГАРИЋ МИРОСЛАВ
+ГАРИЋ НАДА
+ГАРИЋ СТЕВАН
+ГАРОВИЋ МИЛУТИН
+ГАРОВИЋ МИЛУТИН
+ГАРОВНИКОВ ЂОРЂЕ
+ГАРОВНИКОВ БОРКА
+ГАРТНЕР ПЕТАР
+ГАРУНОВИЋ ДАНИЦА
+ГАРУНОВИЋ ВАСА
+ГАТАЛО ГОРАН
+ГАТАЛО РАТКО
+ГАТАРИЋ ЖЕЉКО
+ГАТАРИЋ ЖЕЉКО
+ГАТАРИЋ БОШКО
+ГАТАРИЋ ДРАЖЕ
+ГАТАРИЋ МАНОЈЛО
+ГАТАРИЋ САВКА
+ГАТАРИЋ СТАНА
+ГАТАРИЋ СВЕТОЗАР
+ГАТАРИЋ ЗЛАТИБОР
+ГАТЕР ЈОСИП
+ГАУДЕЊИ ГАБРИЈЕЛА
+ГАУДЕЊИ МАТИЛД
+ГАУДЕЊИ ТИВАДАР
+ГАВА АЛЕКСЕЈ
+ГАВАНСКИ БРАНИСЛАВ АДВОКАТ
+ГАВАНСКИ БРАНИСЛАВА
+ГАВАНСКИ БРАНИСЛАВА
+ГАВАНСКИ ДАРА
+ГАВАНСКИ ДРАГАН
+ГАВАНСКИ ДУШАН
+ГАВАНСКИ ГАВРИЛО
+ГАВАНСКИ ИВАН
+ГАВАНСКИ ЈЕЛЕНА
+ГАВАНСКИ ЈУДИТА
+ГАВАНСКИ КОНСТАНТИН ДР
+ГАВАНСКИ КОСТА ДПЛ ИНГ
+ГАВАНСКИ КОСТА
+ГАВАНСКИ ЛАЗАР
+ГАВАНСКИ ЛУКА
+ГАВАНСКИ МАРГИТА
+ГАВАНСКИ МИЛИЦА
+ГАВАНСКИ МИЛИЦА
+ГАВАНСКИ НАДА
+ГАВАНСКИ НОВАК
+ГАВАНСКИ ПАВЛЕ
+ГАВАНСКИ ПЕТРА
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СВЕТОЗАР
+ГАВАНСКИ ЗОРАН
+ГАВАНСКИ ЗОРАН
+ГАВАРИЋ АЛЕКСАНДАР
+ГАВАРИЋ ГАВРИЛО
+ГАВАРИЋ ЈЕРЕМИЈЕ
+ГАВАРИЋ ЉУБИЦА
+ГАВАРИЋ МИЛЕНКО
+ГАВЛИК ГЕРГЕЉ
+ГАВОДИ ЕСТЕР
+ГАВРАН ГОЈКО
+ГАВРАН ЉУБОМИР
+ГАВРАНЧИЋ ЂУРЂИЦА
+ГАВРАНЧИЋ ЈОВАН
+ГАВРАНЧИЋ КАТИЦА
+ГАВРАНЧИЋ МАРГИТА
+ГАВРАНЧИЋ МАРИЈА
+ГАВРАНЧИЋ НИКОЛА
+ГАВРАНЧИЋ ВЛАДИМИР
+ГАВРАНИЋ ГОЈКО
+ГАВРАНИЋ ИЛИЈА
+ГАВРАНИЋ ЗВЕЗДАНА
+ГАВРАНОВ БОСА
+ГАВРАНОВ СЛОБОДАН
+ГАВРАНОВИЋ ТОМИСЛАВ
+ГАВРАНОВИЋ ЗДРАВКО
+ГАВРИЋ ЧЕДОМИР
+ГАВРИЋ ЖИВКА
+ГАВРИЋ ЂОРЂЕ
+ГАВРИЋ БРАНИСЛАВ
+ГАВРИЋ ДИМИТРИЈЕ
+ГАВРИЋ-ГАЗДИЋ НИКОЛА
+ГАВРИЋ ИВАН
+ГАВРИЋ ИВАН
+ГАВРИЋ ЈОВАН
+ГАВРИЋ ЈОВО
+ГАВРИЋ МАРИЈА
+ГАВРИЋ МИХАЈЛО
+ГАВРИЋ МИЛАН
+ГАВРИЋ МИЛАН
+ГАВРИЋ МИЛЕНА
+ГАВРИЋ МИЛЕНКО
+ГАВРИЋ МИЛЕНКО
+ГАВРИЋ МИЛОШ
+ГАВРИЋ МИРКО
+ГАВРИЋ МИРОСЛАВ
+ГАВРИЋ ПЕТАР
+ГАВРИЋ РАДОМИР
+ГАВРИЋ РАДОСЛАВ
+ГАВРИЋ СЕНКА
+ГАВРИЋ СЛАВКА
+ГАВРИЋ СПАСОЈЕ
+ГАВРИЋ СВЕТОЗАР
+ГАВРИЋ ВЕЛИНКА
+ГАВРИЋ ВЛАДИМИР
+ГАВРИЋ ЗОРАН
+ГАВРИЋ ЗОРА
+ГАВРИЛОВ ЖИВКА
+ГАВРИЛОВ АНКИЦА
+ГАВРИЛОВ БОГДАН
+ГАВРИЛОВ ГОРДАНА
+ГАВРИЛОВ ХЕРМИНА
+ГАВРИЛОВ ЈУЛКА
+ГАВРИЛОВ ЉУБИЦА
+ГАВРИЛОВ МАРТА
+ГАВРИЛОВ МИЛИВОЈ
+ГАВРИЛОВ МИЛИВОЈ
+ГАВРИЛОВ МИЛОРАД
+ГАВРИЛОВ РАДИВОЈ
+ГАВРИЛОВ СЛАВКО
+ГАВРИЛОВ СМИЉА
+ГАВРИЛОВ ТОДОР
+ГАВРИЛОВ УРОШ
+ГАВРИЛОВИЋ ЖИКИЦА
+ГАВРИЛОВИЋ ЖИВКА
+ГАВРИЛОВИЋ ЖИВОЈИН ДР
+ГАВРИЛОВИЋ АЛЕКСАНДАР
+ГАВРИЛОВИЋ АЛЕКСАНДАР
+ГАВРИЛОВИЋ АЛЕКСА
+ГАВРИЛОВИЋ БОГДАНКА
+ГАВРИЛОВИЋ БОРИВОЈ
+ГАВРИЛОВИЋ БРАНКА
+ГАВРИЛОВИЋ БРАНКО
+ГАВРИЛОВИЋ ДОБРИЛА
+ГАВРИЛОВИЋ ДОБРИВОЈЕ
+ГАВРИЛОВИЋ ДУШИЦА
+ГАВРИЛОВИЋ ЕМИЛ
+ГАВРИЛОВИЋ ГРОЗДАН
+ГАВРИЛОВИЋ ЈЕЛИСАВКА
+ГАВРИЛОВИЋ ЈОВАН
+ГАВРИЛОВИЋ ЈОВАН
+ГАВРИЛОВИЋ КАТИЦА
+ГАВРИЛОВИЋ КЛАУДИЈА
+ГАВРИЛОВИЋ ЛАЗАР
+ГАВРИЛОВИЋ ЉУБОМИР
+ГАВРИЛОВИЋ МАРА
+ГАВРИЛОВИЋ МАРИЈА
+ГАВРИЛОВИЋ МАРИЈА
+ГАВРИЛОВИЋ МИЛЕНА
+ГАВРИЛОВИЋ МИЛЕНКО
+ГАВРИЛОВИЋ МИЛЕНКО
+ГАВРИЛОВИЋ МИЛИЦА
+ГАВРИЛОВИЋ МИЛОШ
+ГАВРИЛОВИЋ МИЛОШ
+ГАВРИЛОВИЋ МИЛОЈЕ
+ГАВРИЛОВИЋ МИЛОСАВА
+ГАВРИЛОВИЋ МИЛОВАН
+ГАВРИЛОВИЋ МИРА
+ГАВРИЛОВИЋ МИРЈАНА
+ГАВРИЛОВИЋ МИРЈАНА
+ГАВРИЛОВИЋ МИРКО
+ГАВРИЛОВИЋ МИРОСЛАВ
+ГАВРИЛОВИЋ МИРОСЛАВ
+ГАВРИЛОВИЋ МИТАР
+ГАВРИЛОВИЋ МЛАДЕН
+ГАВРИЛОВИЋ НЕБОЈША
+ГАВРИЛОВИЋ НИКОЛА ДР ПРОФ
+ГАВРИЛОВИЋ НИКОЛА
+ГАВРИЛОВИЋ ПАВЛЕ
+ГАВРИЛОВИЋ РАДОСЛАВ
+ГАВРИЛОВИЋ РАЈКА
+ГАВРИЛОВИЋ САВА ДР
+ГАВРИЛОВИЋ САВО
+ГАВРИЛОВИЋ СЛАВИЦА
+ГАВРИЛОВИЋ СЛАВКО ДР
+ГАВРИЛОВИЋ СЛАВКО
+ГАВРИЛОВИЋ СЛАВКО
+ГАВРИЛОВИЋ СЛАВОЉУБ
+ГАВРИЛОВИЋ СЛОБОДАН
+ГАВРИЛОВИЋ СОФИЈА
+ГАВРИЛОВИЋ СТАНА
+ГАВРИЛОВИЋ СТЕВА
+ГАВРИЛОВИЋ СТОЈАН
+ГАВРИЛОВИЋ ТОША
+ГАВРИЛОВИЋ ТОДОР
+ГАВРИЛОВИЋ ВЕРА ДР
+ГАВРИЛОВИЋ ВЕРИЦА
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВУКИЦА
+ГАВРИЛОВИЋ ЗЛАТА
+ГАВРИЛОВСКИ ПАВЛИНА
+ГАВРОВИЋ ГОРАН
+ГАВРОВИЋ ГОРДАНА
+ГАВРОВИЋ ЉУБИВОЈЕ
+ГАВРОВИЋ СВЕТЛАНА ЛОКАЛ
+ГАЗАФИ ЛАСЛО
+ГАЗДИЋ БОРИВОЈ
+ГАЗЕПОВ ИЛИЈА
+ГАЗИЋ ИВАН
+ГАЗИБАРИЋ ИЗЕТА
+ГАЗИБАРИЋ ЈЕЛЕНА
+ГАЗИБАРИЋ ЈОВАНКА
+ГАЗИБАРИЋ СИМА
+ГАЗИЈА ЈОВАН
+ГАЗИВОДА ГОЈКО
+ГЕЧЕВСКИ СРЕТКО
+ГЕБАУЕР ЕРВИН ДР
+ГЕБЕЛС АНА
+ГЕЦИ ЂУРА
+ГЕДЕЛОВСКИ ДУШАН
+ГЕДЕЛОВСКИ СОФИЈА
+ГЕГЕШ ЈУЛИЈАНА
+ГЕГЕШ НАНДОР
+ГЕГЕШ СЛАВИЦА
+ГЕГЕНБАУЕР ДРАГУТИН
+ГЕГЕНБАУЕР ИЛОНКА
+ГЕГЕНБАУЕР ЗОРА
+ГЕГИЋ АЛЕКСАНДАР
+ГЕГИЋ НЕМАЊА
+ГЕЛЕИ ЈЕНЕ
+ГЕЛЕР ШАНДОР
+ГЕЛЕР ЂУЛА
+ГЕЛЕР АДАМ
+ГЕЛЕР АЛЕКСАНДАР
+ГЕЛЕР БЕЛА
+ГЕЛЕР ЈЕЛИСАВЕТА
+ГЕЛЕР ЈОВАН
+ГЕЛЕР ЛАСЛО
+ГЕЛЕР ЛАСЛО
+ГЕЛЕР МАРИЈА
+ГЕЛЕР МАРТА
+ГЕЛЕР ОЛГА
+ГЕЛЕР-ПЕТКОВИЋ ГИЗЕЛА
+ГЕЛЕР ТИБОР
+ГЕЉИЋ МАТО
+ГЕМОВИЋ АЛЕКСАНДАР
+ГЕНЦ ФЕРЕНЦ
+ГЕНЦ ЛАЈОШ
+ГЕНЦЕЛ ЈУЛИЈАНА
+ГЕНЦЕЛ МАРИЈАНА
+ГЕНЦЕЛ ВАЛЕРИЈА
+ГЕНЦИ ЈОСИП
+ГЕНЕВАЈН ЂУРА
+ГЕНЕВАЈН ЈОВАН
+ГЕНЕВАЈН КАРЛО
+ГЕНЕВАЈН ЛАЈОШ
+ГЕНЕВАЈН ЛАЈОШ
+ГЕНОВА МАЈДА ДИПЛ ИНГ
+ГЕНОВА МИЛИЦА ДИПЛ ИНГ
+ГЕОРГИЕВ ЛЕПОСАВА
+ГЕОРГИЕВСКИ ПЕРО
+ГЕОРГИЕВСКИ ВАСИЛ
+ГЕОРГИЈЕВИЋ ЖИВКО
+ГЕОРГИЈЕВИЋ АЛЕКСАНДАР
+ГЕОРГИЈЕВИЋ ИВАНА
+ГЕОРГИЈЕВИЋ ЈОВАН
+ГЕОРГИЈЕВИЋ ЈОВАН
+ГЕОРГИЈЕВИЋ ЛАЗАР
+ГЕОРГИЈЕВИЋ ЛАЗА
+ГЕОРГИЈЕВИЋ ЉУБИША
+ГЕОРГИЈЕВИЋ МИЛАН
+ГЕОРГИЈЕВИЋ МИЛОСАВ
+ГЕОРГИЈЕВИЋ МИЛОВАН
+ГЕОРГИЈЕВИЋ НЕСТОР
+ГЕОРГИЈЕВИЋ РАДОВАН
+ГЕОРГИЈЕВИЋ ВОЈИСЛАВ
+ГЕРА ИБОЉА
+ГЕРАК ЕМИЛИЈА
+ГЕРАСИМОВСКИ ЗЛАТЕ
+ГЕРАТОВИЋ ЗОРАН
+ГЕРДИЈАН ЧЕДОМИР
+ГЕРЕ ЛАЈОШ
+ГЕРЕ ЗОЛТАН
+ГЕРЕЦИ ЈУРАЈ
+ГЕРЕГ ЖУЖАНА
+ГЕРЕГ АНДРАШ
+ГЕРЕГ БЛАНКА
+ГЕРЕГ ЕУГЕН
+ГЕРЕГ ТИБОР
+ГЕРГЕЧ СМИЉА
+ГЕРГЕЉ ШИМОН
+ГЕРИ ТЕРЕЗА
+ГЕРИЋ ЖАРКО
+ГЕРИЋ ЂОРЂЕ
+ГЕРИЋ АЛЕКСАНДАР
+ГЕРИЋ АНТОН
+ГЕРИЋ ЦВЕТА
+ГЕРИЋ ГИНА
+ГЕРИЋ ГОРДАНА
+ГЕРИЋ ИВАН
+ГЕРИЋ ИВАН
+ГЕРИЋ КОСТА
+ГЕРИЋ КОВИЦА
+ГЕРИЋ ЉУБОМИР
+ГЕРИЋ МАРИЈА
+ГЕРИЋ МИЛАН
+ГЕРИЋ МИЛОШ
+ГЕРИЋ МИЛОШ
+ГЕРИЋ МИРКО
+ГЕРИЋ НЕДЕЉКО
+ГЕРИЋ НЕСТОР
+ГЕРИЋ ОБРАД
+ГЕРИЋ ПЕТАР
+ГЕРИЋ РАДИНКА
+ГЕРИЋ СТЕВАН
+ГЕРИХ АНДРИЈА
+ГЕРЛ ФЕРДО
+ГЕРЛ МАРИЈА
+ГЕРЛА ДРАГАНА
+ГЕРЛА ЛАДИСЛАВ
+ГЕРЛА ТЕОДОР
+ГЕРМАНОВИЋ МИЛАН
+ГЕРМАНОВИЋ СТАНОЈЕ
+ГЕРНАЧ ЂОРЂЕ
+ГЕРНАЧ ФРАЊА
+ГЕРНАЧ ЛАДИСЛАВ
+ГЕРО ЂЕРЂ
+ГЕРО ДУШАНКА
+ГЕРО ЈАНОШ
+ГЕРО ЈОЖЕФ
+ГЕРО КАРЛО
+ГЕРО ЛАЈОШ
+ГЕРО МАРГИТА
+ГЕРОЛД ЈАКОБ
+ГЕРОЛД ЛАСЛО
+ГЕРОВ АНГЕЛ ДИПЛ ИНГ
+ГЕРТНЕР АНА
+ГЕРТНЕР ФРАЊА
+ГЕРТНЕР ЈОЖЕФ
+ГЕРТНЕР РЕЖЕ
+ГЕТЕЛ ХЕЛМУТ
+ГЕЗ ЈАНОШ
+ГЕЗ ЈЕЛИЦА
+ГЕЗ КАТИЦА
+ГЕЗ ТИБОР
+ГЕЗ ВЕРОНИКА
+ГХАНДОУР-ШАЛ ЈУЛИЈАНА
+ГИАДРОШИЋ МАРИЈА
+ГИБАНИЦА ГЕОРГИНА
+ГИГА СРЕТЕН
+ГИГИЋ МИОМИР
+ГИГИЋ МИРЈАНА
+ГИГИЋ ЗОРАН
+ГИКИЋ БОЖИДАР
+ГИКИЋ ДИМИТРИЈЕ
+ГИКИЋ РАДИВОЈЕ
+ГИКОВСКИ МИНО
+ГИЛЕЗАН КОРИОЛАН
+ГИЛГ ИРЕНА
+ГИЛИЋ ДРАГАН
+ГИЛИЋ ДРАГАН
+ГИМБОШ ДОБРИВОЈЕ
+ГИНЦУЉ СЕРГИЈЕ ДИПЛ ИНГ
+ГИОН АЛЕКСАНДАР
+ГИОН АНА ДР
+ГИОН ИШТВАН
+ГИОН КАЛМАН
+ГИОН НАНДОР
+ГИРИЋ МАТИЈА
+ГИРИЦ БЕЛА
+ГИРИЦ ЕЛЕНА
+ГИРИЦ ИМРЕ
+ГИРИЦ ЈОЖЕФ
+ГИРИЦ ЛАСЛО
+ГИРИЦ-МОКУШ КЛАРА
+ГИРИЗД ЛАСЛО НОВИНАР
+ГИРНТ РОЗАЛИЈА
+ГИС ХЕДВИГА
+ГЈАФО МАТИЈА
+ГЈЕР ВЛАДИМИР
+ГЛАДИШ СТЕВАН
+ГЛАДИЋ МИЛАН
+ГЛАДИЋ РАЈКО
+ГЛАДИЋ СВЕТОЗАР
+ГЛАДОВИЋ ДУШАН
+ГЛАДОВИЋ ТАТЈАНА
+ГЛАЈХ ГЕОРГ
+ГЛАМОЧАНИН НЕВЕНКА
+ГЛАМОЧАНИН НЕВЕНКА
+ГЛАМОЧАНИН ПЕРО
+ГЛАМОЧАНИН ВЛАДИМИР
+ГЛАМОЧИЋ ДАНЕ
+ГЛАМОЧИЋ СНЕЖАНА
+ГЛАМОЧЛИЈА РУЖИЦА
+ГЛАНЦ АНТУН
+ГЛАСОВАЦ МАРТА
+ГЛАВЧИЋ МИЛОРАД
+ГЛАВАШ ЖАРКО
+ГЛАВАШ ЈОВО
+ГЛАВАШ МИЛАН
+ГЛАВАШ-ТРБИЋ БОШКО
+ГЛАВАШЕВИЋ АНЂЕЛКО
+ГЛАВАШЕВИЋ АНЂЕЛКО
+ГЛАВАШКИ ЖИВОЈИН
+ГЛАВАШКИ АЛЕКСАНДАР
+ГЛАВАШКИ АЛЕКСАНДРА
+ГЛАВАШКИ АНЂЕЛКА
+ГЛАВАШКИ БОГДАН ДИПЛ ИНГ
+ГЛАВАШКИ БРАНИСЛАВ
+ГЛАВАШКИ БРАНКО ДИПЛ ПРАВНИК
+ГЛАВАШКИ ДРАГАН
+ГЛАВАШКИ ДУШАН
+ГЛАВАШКИ ГЛИША
+ГЛАВАШКИ МИЛУТИН
+ГЛАВАШКИ НЕМАЊА
+ГЛАВАШКИ СИМА
+ГЛАВАШКИ СИНИША
+ГЛАВАШКИ СМИЉКА
+ГЛАВАН ЈОВАН
+ГЛАВАНИЋ БОСИЉКА
+ГЛАВАНИЋ ЈУЛКА
+ГЛАВАНИЋ МИРКО
+ГЛАВАРДАНОВ АЛЕКСАНДАР
+ГЛАВАРДАНОВ ИВАН ДИПЛ ИНГ
+ГЛАВАРДАНОВ МАРИЈА
+ГЛАВАРДАНОВ СОКО
+ГЛАВАТОВИЋ ДРАГАН
+ГЛАВАТОВИЋ ДУШАН
+ГЛАВИЧИЋ МАРИЈАНА
+ГЛАВИЋ БОШКО
+ГЛАВИЋ ГАВРО
+ГЛАВИЋ ЈЕЛКА
+ГЛАВИЋ РАДИСЛАВ
+ГЛАВИНИЋ ЈОВО
+ГЛАВИНИЋ МИЛОРАД
+ГЛАВОЧЕВИЋ ИЛИЈА
+ГЛЕЂА МИЛЕНКО
+ГЛЕДИЋ МИЛИЦА
+ГЛИШИЋ ЂОРЂО
+ГЛИШИЋ БОРИСЛАВ
+ГЛИШИЋ БРАНКО
+ГЛИШИЋ ГРАДИМИР
+ГЛИШИЋ ИЛИЈА
+ГЛИШИЋ ИВАН
+ГЛИШИЋ ЈЕЛИЦА
+ГЛИШИЋ ЈОВАН
+ГЛИШИЋ-КЕСЕГ ВАЛЕРИЈА
+ГЛИШИЋ ЉУБИША
+ГЛИШИЋ МИЛЕВА
+ГЛИШИЋ НЕНАД
+ГЛИШИЋ ПРЕДРАГ
+ГЛИШИЋ РАДОМИР
+ГЛИШИЋ СИМО
+ГЛИШИЋ СРЕТА
+ГЛИШИЋ ВЕСНА
+ГЛИШИЋ ЗОРАН
+ГЛИШИН ЂОРЂЕ
+ГЛИШИН БРАНКА
+ГЛИШИН НЕНАД
+ГЛИШОВИЋ МАРИЈА
+ГЛИБИЋ МИЛАН
+ГЛИБОТА ВЛАДО
+ГЛИГИЋ ЖЕЉКА
+ГЛИГИЋ МИРА
+ГЛИГИЋ НЕДЕЉКО
+ГЛИГИЋ ТОМИСЛАВ
+ГЛИГОРЕВИЋ ДУШКО
+ГЛИГОРЕВИЋ ТОМО
+ГЛИГОРИЋ ЖЕЉКО
+ГЛИГОРИЋ ЖИВОЈИН
+ГЛИГОРИЋ ЖИВОРАД
+ГЛИГОРИЋ АНЂЕЛКА
+ГЛИГОРИЋ ЦВЕТАНКА
+ГЛИГОРИЋ ДРАГАН
+ГЛИГОРИЋ ДРАГАН
+ГЛИГОРИЋ ДРАГИША
+ГЛИГОРИЋ ДРАГИЦА
+ГЛИГОРИЋ ДРАГИЊА
+ГЛИГОРИЋ ДРАГОМИР
+ГЛИГОРИЋ ЈЕЛЕНА
+ГЛИГОРИЋ КАТИЦА
+ГЛИГОРИЋ ЉУБОМИР
+ГЛИГОРИЋ МИЛАН
+ГЛИГОРИЋ МИЛАН
+ГЛИГОРИЋ МИЛОРАД
+ГЛИГОРИЋ МЛАДЕН
+ГЛИГОРИЋ НИКОЛА
+ГЛИГОРИЋ РАДИША
+ГЛИГОРИЋ СТАНОЈЕ
+ГЛИГОРИЋ СТЕВАН
+ГЛИГОРИЋ СТЕВАН
+ГЛИГОРИЈЕВИЋ АЛЕКСАНДАР
+ГЛИГОРИЈЕВИЋ ДРАГАНА
+ГЛИГОРИЈЕВИЋ ДРАГИЦА
+ГЛИГОРИЈЕВИЋ КРСТА
+ГЛИГОРИЈЕВИЋ МИХАЈЛО
+ГЛИГОРИЈЕВИЋ МИОДРАГ
+ГЛИГОРИЈЕВИЋ ПЕТРА
+ГЛИГОРИЈЕВИЋ РУЖИЦА
+ГЛИГОРИН ЂУРЂИНКА
+ГЛИГОРИН БОЈАНА
+ГЛИГОРИН МИРОСЛАВ
+ГЛИГОРИН СЛАВИЦА
+ГЛИГОРИН СТЕВАН
+ГЛИГОРИН ТОМИСЛАВ
+ГЛИГОРИН ЗОРАН
+ГЛИГОРИН ЗОРКА
+ГЛИГОРОВ ДЕСИМИР
+ГЛИГОРОВ ЈОВАН
+ГЛИГОРОВ ЛЕКА
+ГЛИГОРОВ ЉУБОМИР
+ГЛИГОРОВИЋ СЛАВКО
+ГЛИГОРОВСКИ ТРАЈКО
+ГЛИНТИЋ МИЛЕ
+ГЛИНТИЋ МИОДРАГ
+ГЛИНТИЋ НИКОЛА
+ГЛИНТИЋ РАДОСЛАВ
+ГЛИНТИЋ САВКА
+ГЛИНТИЋ ВЕСЕЛКА
+ГЛОЖАНСКИ МАРИЈА
+ГЛОЖАНСКИ ПЕТАР
+ГЛОЖАНСКИ ВОЈИСЛАВ
+ГЛОГОЊАЦ ВИТОМИР
+ГЛОГОВЧАН МИЛОШ ДИПЛ ИНГ
+ГЛОГОВАЦ ЈЕВРЕМ
+ГЛОГОВАЦ КОРНЕЛИЈА
+ГЛОГОВАЦ МИРКО
+ГЛОГОВАЦ МОМЧИЛО
+ГЛУШАЦ БОЖИДАР
+ГЛУШАЦ ДУШАН
+ГЛУШАЦ МИХАЈЛО
+ГЛУШАЦ МИЛАН
+ГЛУШАЦ МИЛОШ
+ГЛУШАЦ МИЛОРАД
+ГЛУШАЦ ПЕТАР
+ГЛУШИЋ БРАНКО
+ГЛУШИЦА ЉУБОМИР
+ГЛУШИЦА МИЛАН
+ГЛУШИЦА МИЛАН
+ГЛУШИЦА МИЛЕ
+ГЛУШИЦА НЕНАД
+ГЛУШИЦА ПЕТАР
+ГЛУШИЦА СЛАЂАНА
+ГЛУШИЦА СЛАВКА
+ГЛУШИЦА ЗДРАВКО
+ГЛУХАИЋ АНЂЕЛКО
+ГЛУХАЈИЋ БОЖО
+ГЛУХАК КАРЛО
+ГЛУХОВИЋ МИЛОШ
+ГЛУХОВИЋ МИЛОМИР
+ГЛУХОВИЋ ВЕЉКО
+ГЛУМАЦ ДАНЕ
+ГЛУМАЦ ДАНИЛО
+ГЛУМАЦ ДАНИЛО
+ГЛУМАЦ ДРАГАН
+ГЛУМАЦ ДУШАН
+ГЛУМАЦ ГАВРА
+ГЛУМАЦ ЈЕЛЕНА
+ГЛУМАЦ ЛАЗО
+ГЛУМАЦ ЉУБО
+ГЛУМАЦ МАГДАЛЕНА
+ГЛУМАЦ МИЛАН
+ГЛУМАЦ МИЛЕ
+ГЛУМАЦ МИОДРАГ ДР
+ГЛУМАЦ МИРОСЛАВ
+ГЛУМАЦ СЛОБОДАН ДР
+ГЛУМИЧИЋ МАНДА
+ГЛУВАИЋ ЂОРЂЕ
+ГЛУВАЈИЋ ДРАГАН
+ГЛУВАЈИЋ ЈОВАН
+ГЛУВАКОВ МИЛАДИНКА
+ГЛУВАКОВ ПАВЛЕ
+ГЛУВАКОВИЋ ВЛАДИМИР
+ГЛУВЊА СТЕВАН
+ГМИЗИЋ БРАНИСЛАВ
+ГМИЗИЋ НЕГОВАН
+ГМИЗИЋ ВЛАДА
+ГНИП ЈОАКИМ
+ГНИП ВЕЛИМИР ДИПЛ ИНГ
+ГНИП ВЕРА
+ГНИП ВЛАДИМИР
+ГЊАТИЋ СТОЈАНКА
+ГЊЕЧ СВЕН
+ГОЧАНИН РАДЕ
+ГОЧИЋ АНЂА
+ГОШИЋ ЈЕВРЕМ
+ГОШИЋ ЉИЉА
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ТОМИСЛАВ
+ГОШИЋ ТОМИСЛАВ
+ГОШЊИЋ ДОБРИВОЈ
+ГОЂЕВАЦ БОСИЉКА
+ГОБЕЦ КАТИЦА
+ГОБЕЦ МИЛАН
+ГОБЕЉИЋ МИЛОВАН
+ГОБЕЉИЋ СТРАХИЊА
+ГОБЕЉИЋ СВЕТИСЛАВ
+ГОБЕЉИЋ ВУКАДИН
+ГОБЕЉИЋ ВУК
+ГОБОР АНА
+ГОБОР ЛАДИСЛАВ
+ГОБОР ЗОЛТАН
+ГОБОР ЗОЛТАН
+ГОЦИЋ БОГОСАВ
+ГОЦИЋ ЈЕВРОСИМА
+ГОЦИЋ ВИДОЈКО
+ГОДА ОЛИВИЈА
+ГОДАР КАТАРИНА
+ГОДИЋ МАРИЈА
+ГОДИЋ ЗВОНКО
+ГОДИЋ ЗВОНКО
+ГОДИНА ДАРКО
+ГОДИНА МИЛКО
+ГОДИНСКИ ВЛАДИМИР
+ГОДОШЕВ КРСТА
+ГОДОР ШАНДОР
+ГОДОР ЈАНОШ
+ГОДОР ЈОСИП
+ГОДУНЦ ДУШАН
+ГОГИЋ ДОБРИЛО
+ГОГИЋ ДРАГОЉУБ
+ГОГИЋ МАРА
+ГОГИЋ ПАВЛЕ
+ГОГИЋ СЛАВКО
+ГОГИЋ ВЕЛИНКА
+ГОГОЛАК МАРГИТА
+ГОГОЉЕВ МИХАЈЛО
+ГОГОЉЕВ УЉАНА
+ГОГОЉЕВ ВАСИЛИЈЕ
+ГОГОВ МИЛАН
+ГОЈАН ФЕРЕНЦ
+ГОЈИЋ ДРАГАН
+ГОЈИЋ ГОЈКО
+ГОЈИЋ МИЛЕНА
+ГОЈИЋ МИЛЕ
+ГОЈКОВ ЖИВКО
+ГОЈКОВ ЈУЛИЈАНА
+ГОЈКОВ МИЛЕНА
+ГОЈКОВ РАДОМИР
+ГОЈКОВ ВАСИЛИЈЕ
+ГОЈКОВИЋ ДОНКА
+ГОЈКОВИЋ ДРАГАН
+ГОЈКОВИЋ ДРАГОРАД
+ГОЈКОВИЋ ДУШАН
+ГОЈКОВИЋ ГЕОРГИЈЕ ДИПЛ ИНГ
+ГОЈКОВИЋ ИЛИЈА
+ГОЈКОВИЋ ЈЕЛА
+ГОЈКОВИЋ ЉУБИША
+ГОЈКОВИЋ МИЛИСАВ
+ГОЈКОВИЋ МИТА
+ГОЈКОВИЋ НАДЕЖДА
+ГОЈКОВИЋ НЕВЕНКА
+ГОЈКОВИЋ ПАВЛЕ
+ГОЈКОВИЋ РАДМИЛО
+ГОЈКОВИЋ РАДОЉУБ
+ГОЈКОВИЋ САВО
+ГОЈКОВИЋ ТОМИСЛАВ
+ГОЈНИЋ ДАВОР
+ГОЈОВИЋ ВУКОСАВ
+ГОКЛЕР ИЛОНА
+ГОЛДМАН АНКИЦА
+ГОЛДМАН-ТОМАШЕВИЋ ЕВА
+ГОЛЕШ РУЖА
+ГОЛЕНИЋ СЛАВКО
+ГОЛЕЊА БРАНКО
+ГОЛЕЊА ИРЕНА
+ГОЛЕЊА МИРОСЛАВА
+ГОЛЕЊА МИРОСЛАВА
+ГОЛЕВА НАДА
+ГОЛИШЕВИЋ МИРЈАНА
+ГОЛИЋ ЖИВАН
+ГОЛИЋ ЂОРЂЕ
+ГОЛИЋ АЛЕКСАНДАР
+ГОЛИЋ АНИЦА
+ГОЛИЋ ДОБРИВОЈЕ
+ГОЛИЋ ФАИД
+ГОЛИЋ ЉУБОМИР
+ГОЛИЋ МАРКО
+ГОЛИЋ СЛАВКА
+ГОЛИЋ СТАНКА
+ГОЛИЋ ТОМИСЛАВ
+ГОЛИЋ ВОЈИН
+ГОЛИЋ ВОЈКО
+ГОЛИЈАН АНА
+ГОЛИЈАНИН ДУШАНКА
+ГОЛИЈАНИН ЕРЖЕБЕТ
+ГОЛИК ОЛГА
+ГОЛИК СЛОБОДАН
+ГОЉЕВАЧКИ ДРАГИЦА
+ГОЛО АЛЕКСАНДАР
+ГОЛО ДРАГОСЛАВ
+ГОЛОЧОРБИН СЛАВУЈ
+ГОЛОЧОРДИН ДРАГО
+ГОЛОШИН-ДИМИТРИЈЕВИЋ ЉИЉАНА
+ГОЛОШИН СТЕВИЦА
+ГОЛОБОЧАНИН МИЛОСАВ
+ГОЛОМЕЈИЋ МИЛОРАД
+ГОЛОНИЋ ЗАГОРКА
+ГОЛОУХ ИВАН
+ГОЛОВИЋ ЈОВАН
+ГОЛУШИН БРАНИСЛАВ
+ГОЛУШИН ДРАГАН
+ГОЛУШИН ЉУБИЦА
+ГОЛУШИН ЉУБОМИР
+ГОЛУШИН-МИЋИЋ МИЛЕНКО
+ГОЛУШИН МИОДРАГ
+ГОЛУШИН НАДА
+ГОЛУШИН НИКОЛА
+ГОЛУБИЧИЋ ВЕРА
+ГОЛУБИЋ МИЛИВОЈЕ
+ГОЛУБЈАТНИКОВА НИНА
+ГОЛУБОВ НАКА
+ГОЛУБОВИЋ ЧЕДОМИР
+ГОЛУБОВИЋ ЂОРЂЕ
+ГОЛУБОВИЋ АЛЕКСАНДАР
+ГОЛУБОВИЋ АРСЕН
+ГОЛУБОВИЋ БОШКО
+ГОЛУБОВИЋ БОГДАН
+ГОЛУБОВИЋ БОРИВОЈ
+ГОЛУБОВИЋ БРАНКО
+ГОЛУБОВИЋ ДИМИТРИЈЕ
+ГОЛУБОВИЋ ДОБРИЛА
+ГОЛУБОВИЋ ДРАГАНА
+ГОЛУБОВИЋ ДРАГАН
+ГОЛУБОВИЋ ДРАГА
+ГОЛУБОВИЋ ГОЛУБ
+ГОЛУБОВИЋ ГОЛУБ
+ГОЛУБОВИЋ ИЛИЈА
+ГОЛУБОВИЋ ИВАН
+ГОЛУБОВИЋ ЈЕРЕМИЈЕ
+ГОЛУБОВИЋ ЈОВАН
+ГОЛУБОВИЋ КСЕНИЈА
+ГОЛУБОВИЋ ЉИЉАНА
+ГОЛУБОВИЋ ЉУБИНКА
+ГОЛУБОВИЋ ЛУКА
+ГОЛУБОВИЋ МАНОЈЛО
+ГОЛУБОВИЋ МАНОЈЛО
+ГОЛУБОВИЋ МАРИЈА
+ГОЛУБОВИЋ МИХАЈЛО
+ГОЛУБОВИЋ МИЛАН
+ГОЛУБОВИЋ МИЛЕНКО
+ГОЛУБОВИЋ МИЛЕНКО
+ГОЛУБОВИЋ МИЛУН
+ГОЛУБОВИЋ МИЛУТИН
+ГОЛУБОВИЋ МИОДРАГ
+ГОЛУБОВИЋ МИРЈАНА
+ГОЛУБОВИЋ МИРОСЛАВ
+ГОЛУБОВИЋ МЛАЂЕН
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ НАДА
+ГОЛУБОВИЋ НИКОЛА
+ГОЛУБОВИЋ ОЛГИЦА
+ГОЛУБОВИЋ ПЕРИША
+ГОЛУБОВИЋ СЕКУЛА
+ГОЛУБОВИЋ СТАНА
+ГОЛУБОВИЋ СТАНА
+ГОЛУБОВИЋ ТЕОДОРА
+ГОЛУБОВИЋ ТИХОМИР
+ГОЛУБОВИЋ ТОМО
+ГОЛУБОВИЋ ВАЛЕРИЈА
+ГОЛУБОВИЋ ВЕЛИЗАР
+ГОЛУБОВИЋ ВУКАШИН
+ГОЛУБОВИЋ ВУКАШИН
+ГОЛУБОВИЋ ЗОРАН
+ГОЛУБОВИЋ ЗВОНИМИР
+ГОЛУБСКИ МИЛИЦА
+ГОЛУБСКИ РУЖА
+ГОМБАШ ТАМАШ
+ГОМБАР ШАНДОР
+ГОМБАР ЕЛИЗАБЕТА
+ГОМБАР ФЕРЕНЦ
+ГОМБАР ИШТВАН
+ГОМБАР ЈАНОШ
+ГОМБАР ЈАНОШ
+ГОМБАР КАТАЛИН
+ГОМБАР МИХАЉ
+ГОМБАР РОЗАЛИЈА
+ГОМБОШ ИШТВАН
+ГОМБОШ ИВИЦА
+ГОМБОШ КАРЛО
+ГОМБОВИЋ БРАНКО
+ГОМИРАЦ ЖИВКО
+ГОМИРАЦ БРАНКО
+ГОМИРАЦ СТОЈАН
+ГОНЧИН СРЕТКО
+ГОНЂА ЖИВАН
+ГОНЂА МИЛЕНА
+ГОНЂА ПЕТАР
+ГОНДА ЛАДИСЛАВ
+ГОНДАР РУЖА
+ГОЊА БРАНИМИР
+ГОЊА МИЛОСЛАВ
+ГОЊА ПЕТАР
+ГОРШЕ АНДРИЈА
+ГОРАНОВИЋ ДРАГО
+ГОРАНОВИЋ МИРКО
+ГОРБАНОВ ИВАН
+ГОРДАНИЋ СТОЈАН
+ГОРДИЋ ДАРИНКА
+ГОРДИЋ ГОЈКО
+ГОРДИЋ ЛАВИНИЈА
+ГОРДИЋ МИЛОРАД
+ГОРДИЋ МИЛОВАН
+ГОРДИЋ РИСТО
+ГОРДИЋ СЛАВКО
+ГОРДИЋ СТЕВАН
+ГОРДИЋ ВИТОМИР
+ГОРДОШ ЖУЖАНА
+ГОРЕЧАН КАРЛО
+ГОРЕЦ ДРАГУТИН
+ГОРЕЦ НАДА
+ГОРЕЊАК РУДОЛФ
+ГОРИЧАНЕЦ МИЈО
+ГОРЈАНАЦ БРАНКО
+ГОРЈАНАЦ МАРИН
+ГОРЊАК КАТИЦА
+ГОРТВА ЈОСИП
+ГОСАРИЋ ФРАЊА
+ГОСПИЋ НЕДЕЉКО
+ГОСПОЂИНАЧКИ РАДОВАН
+ГОСПОДИНОВИЋ ИВАН
+ГОСТИЋ ЗДРАВКО
+ГОСТИМИРОВИЋ МАРИН
+ГОСТИМИРОВИЋ ПЕТАР
+ГОСТОЈИЋ ЂУРЂИНКА
+ГОСТОЈИЋ ДУШАН
+ГОСТОЈИЋ ЈОВАН
+ГОСТОЈИЋ ЛАЗАР
+ГОСТОЈИЋ МИЛАНА
+ГОСТОЈИЋ МИЛОШ
+ГОСТОЈИЋ МИРОСЛАВ
+ГОСТОЈИЋ МИТАР
+ГОСТОЈИЋ СЛАВКА
+ГОСТОЈИЋ СЛОБОДАНКА
+ГОСТОЈИЋ ТЕОДОР
+ГОСТОВИЋ ЂОРЂЕ
+ГОСТОВИЋ БОГДАН
+ГОСТОВИЋ ИКА
+ГОСТОВИЋ ЉУБОМИР
+ГОСТОВИЋ МОМИР
+ГОТШТАЈН ФЕРЕНЦ
+ГОВЕДАРИЦА ЧЕДО
+ГОВЕДАРИЦА ЖЕЛИМИР
+ГОВЕДАРИЦА ДЕЈАН
+ГОВЕДАРИЦА ДРАГИЦА
+ГОВЕДАРИЦА МИЛЕНКО
+ГОВЕДАРИЦА МИЛОВАН
+ГОВЕДАРИЦА МИТАР
+ГОВЕДАРИЦА МИТАР
+ГОВЕДАРИЦА ПАВЛЕ
+ГОВЕДАРИЦА СИМО
+ГОВЕДАРИЦА СЛАВКО
+ГОВЕДАРИЦА ТАТАЈАНА
+ГОВЕДАРИЦА ВЕЛИМИР
+ГОВЕДАРИЦА ВЛАДИМИР
+ГОВЕДАРОВИЋ ЈУЛИЈА
+ГОВЕДАРОВИЋ НИКОЛА
+ГОВЕДАРОВИЋ ПЕТАР
+ГОВОРЧИН ЖИВКА
+ГОВОРЧИН БОГДАН
+ГОВОРЧИН ДАРИНКА
+ГОВОРЧИН ДЕЛИНКА
+ГОВОРЧИН ДИМИТРИЈЕ
+ГОВОРЧИН ДИМИТРИЈЕ
+ГОВОРЧИН ДУШАН
+ГОВОРЧИН ГАВРА
+ГОВОРЧИН ЛАЗАР
+ГОВОРЧИН МЛАДЕН
+ГОВОРЧИН САВА
+ГОВОРЧИН СЛАВИЦА
+ГОВОРЧИН СЛОБОДАН
+ГОВОРЧИН СТЕВАН
+ГОВОРЧИН СТОЈАН
+ГОВОРЧИН ВЕРА
+ГОВОРЧИН ВЛАДА
+ГОВОРЧИН ВЛАДИМИР
+ГОВОРЧИНОВ МИРОСЛАВ
+ГРЧАНАЦ БРАНКО
+ГРЧЕ МИЛАН
+ГРЧИЋ МИЛЕНКО
+ГРЧИЋ МИЛИВОЈ
+ГРЧИЋ СЛОБОДАН ДИПЛ ИНГ
+ГРЧИЋ СВЕТИСЛАВ
+ГРЧИЋ-ТУБИЋ ЈОВАНКА
+ГРЧИЋ ВЕРИЦА
+ГРЧИЋ ЗОРКА
+ГРЧКИ МИЛЕ
+ГРЧКИ МИРЈАНА
+ГРШИЋ ЂОРЂЕ
+ГРШИЋ ЂОРЂЕ
+ГРШИЋ МИЛИЦА
+ГРШИЋ НИКОЛА
+ГРШИЋ РУЖИЦА
+ГРШИЋ СОФИЈА
+ГРЂИЋ ДРАГУТИН
+ГРАЧАНИН ИВАН
+ГРАЧАНИН ВАЛЕРИЈА
+ГРАЧЕК СТЕВАН
+ГРАЧИК СЛАВКА
+ГРАЧИК СТЕВАН
+ГРАЧКО ШАНДОР
+ГРАЧКО ОЛГА
+ГРАЧКО ОЛГА
+ГРАЧКО РОЗАЛИЈА
+ГРАША ЈОСИП
+ГРАШАР АНА
+ГРАШИЋ ВАЛЕНТИН
+ГРАШИЋ ЗДЕНКО
+ГРАШНЕР СОФИЈА
+ГРАЂИН МИЛОШ
+ГРАБ ФЕРЕНЦ
+ГРАБАР ЈОСИПА
+ГРАБАР ЈОСИП
+ГРАБАР МИРКО
+ГРАБЕЖ ИЛЕ
+ГРАБЕЖ ЈОЈА
+ГРАБИЋ СТЕВАН
+ГРАБИЋ УРОШ
+ГРАБОЦИ РАМАДАН
+ГРАБОВАЦ АЦО
+ГРАБОВАЦ ЦВЕТА
+ГРАБОВАЦ ДИМИТРИЈЕ
+ГРАБОВАЦ ЈОВАН
+ГРАБОВАЦ НЕВЕНКА
+ГРАБОВАЦ РАНКО
+ГРАБОВАЦ СИМЕУН
+ГРАБУНЏИЈА ЈУЛИЈАНА
+ГРАДАШЧЕВИЋ ОСМАН
+ГРАДИЋ ЖИВКО
+ГРАДИЋ БОЖИЦА
+ГРАДИЋ ДАНКА
+ГРАДИЋ СПАСОЈЕ
+ГРАДИНЧЕВИЋ АРСЕНИЈЕ
+ГРАДИНА СМИЉКА
+ГРАДИНАЦ АЛЕКСАНДАР
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАРОВ ДИМИТРИЈЕ
+ГРАДОЈЕВИЋ КАТИЦА
+ГРАДОЈЕВИЋ ЉУБИЦА
+ГРАХЕК НАДА
+ГРАХОВАЦ ЂОРЂЕ
+ГРАХОВАЦ ЂОРЂЕ
+ГРАХОВАЦ БРАНИСЛАВ
+ГРАХОВАЦ ЦВИЈО
+ГРАХОВАЦ ДАНИЈЕЛА
+ГРАХОВАЦ ДРАГАНА
+ГРАХОВАЦ ДРАГИЦА
+ГРАХОВАЦ ДУШАНКА
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ГОЈКО
+ГРАХОВАЦ ЈАНКО
+ГРАХОВАЦ ЈОВАН
+ГРАХОВАЦ ЈОВАН
+ГРАХОВАЦ МИОДРАГ
+ГРАХОВАЦ МИРКО
+ГРАХОВАЦ МИРОСЛАВ
+ГРАХОВАЦ НАДА
+ГРАХОВАЦ НИКОЛА
+ГРАХОВАЦ ОБРАД
+ГРАХОВАЦ РАДЕ
+ГРАХОВАЦ РАНКА
+ГРАХОВАЦ СЛАВИЦА
+ГРАХОВАЦ СЛАВКО
+ГРАХОВАЦ СЛАВКО
+ГРАХОВАЦ СМИЉА
+ГРАХОВАЦ СПАСО
+ГРАХОВАЦ ВАСО
+ГРАХОВАЦ ВЕЛИМИР
+ГРАХОВАЦ ЗДЕНКО
+ГРАЈЛИНГ ЕМИЛ
+ГРАНДИЋ МИЈОДРАГ
+ГРАНДИЋ МИЛИЦА
+ГРАНДИЋ РАДОВАН ДР ПРОФ
+ГРАНДИЋ СТОЈАН
+ГРАНИЋ МАРИЈА
+ГРАНИЋ МАРИЈА
+ГРАНИЋ НИКОЛА
+ГРАНУЛА ГОЈКО
+ГРАОЊА ЂУРО
+ГРАОР МИРОСЛАВ
+ГРАОР СЛАВКО
+ГРАОРАЦ ИСИДОР
+ГРАОВАЦ ЂОРЂЕ
+ГРАОВАЦ АОРИКА
+ГРАОВАЦ БЛАЖ
+ГРАОВАЦ БОГДАН
+ГРАОВАЦ БОГДАН
+ГРАОВАЦ БОРИСЛАВ
+ГРАОВАЦ ДУШАН
+ГРАОВАЦ МИЛОШ
+ГРАОВАЦ МИЛОРАД
+ГРАОВАЦ ОЛИВЕРА
+ГРАОВАЦ-ПАДРОВ ЉУБИНКА
+ГРАОВАЦ СЛОБОДАНКА
+ГРАПЧАК ЈОСИП
+ГРАВАРА ДРАГИЦА
+ГРАВАРА НИКОЛА
+ГРАВАРА РАДЕ
+ГРБА КОСТА
+ГРБА МИЛАН
+ГРБА НЕВЕНКА
+ГРБА ВУКОЈИЦА
+ГРБАТИНИЋ МИЛАН
+ГРБАТИНИЋ МИЛОШ
+ГРБАВ ЈОН
+ГРБАВАЦ НЕВЕНКА
+ГРБАВАЦ НИКОЛА
+ГРБИЋ ЖИВАН
+ГРБИЋ ЖИВКО
+ГРБИЋ ЂОРЂЕ МР
+ГРБИЋ ЂУРАЂ
+ГРБИЋ ЂУРО
+ГРБИЋ АНЂЕЛИЈА
+ГРБИЋ АНКА
+ГРБИЋ АНКИЦА
+ГРБИЋ БОШКО
+ГРБИЋ БОГДАНКА
+ГРБИЋ БОРИВОЈЕ
+ГРБИЋ БРАНКО
+ГРБИЋ ЏЕВАД
+ГРБИЋ ДАРИНКА
+ГРБИЋ ДЕСА
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГО
+ГРБИЋ ДРЕНКА
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШИЦА
+ГРБИЋ ГОЈКО
+ГРБИЋ ГОРАН
+ГРБИЋ ЈОВАНКА
+ГРБИЋ ЈОВАНКА
+ГРБИЋ ЈОВАН
+ГРБИЋ ЈОВАН
+ГРБИЋ ЈОВИЦА
+ГРБИЋ ЈОВО
+ГРБИЋ ЛАЗАР
+ГРБИЋ ЉУБАН
+ГРБИЋ ЉУБИША
+ГРБИЋ МАРИЈА
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛЕНА
+ГРБИЋ МИЛЕНА
+ГРБИЋ МИЛЕНКО
+ГРБИЋ МИЛЕНКО
+ГРБИЋ МИЛЕ
+ГРБИЋ МИЛИЋ
+ГРБИЋ МИЛИЦА
+ГРБИЋ МИЛКА
+ГРБИЋ МИЛОШ
+ГРБИЋ МИЛОШ
+ГРБИЋ МИЛОРАД
+ГРБИЋ МИЛОВАН
+ГРБИЋ МИЛОВАН
+ГРБИЋ МИЛУТИН
+ГРБИЋ МИРА
+ГРБИЋ МИРА
+ГРБИЋ МЛАДЕН
+ГРБИЋ НИКОЛА
+ГРБИЋ ОСТОЈА
+ГРБИЋ ПЕТАР
+ГРБИЋ ПЕТАР
+ГРБИЋ ПЕТАР
+ГРБИЋ РАДЕ
+ГРБИЋ РОСА
+ГРБИЋ СЛОБОДАН
+ГРБИЋ СТЕВАН
+ГРБИЋ СТЕВАН
+ГРБИЋ СТЕВО
+ГРБИЋ СВЕТКО
+ГРБИЋ ВАСА ДР
+ГРБИЋ ВЕРА
+ГРБИЋ ВИД
+ГРБИЋ ВОЈИН
+ГРБИЋ ВОЈИСЛАВ
+ГРБИЋ ВУКОСАВА
+ГРБИН МАРИЈА
+ГРБИН РАДОСЛАВ
+ГРБОВАЦ МИХАЉ
+ГРБОВИЋ АЛИЛ
+ГРБОВИЋ ДРАГАН
+ГРБОВИЋ ГАВРИЛО
+ГРБОВИЋ ЈОВАН
+ГРБОВИЋ ЈОВАН
+ГРБОВИЋ МИЛАН
+ГРБОВИЋ МИЛАН
+ГРБОВИЋ МИРЧЕТА
+ГРБОВИЋ МОМЧИЛО
+ГРБОВИЋ МУРАТ
+ГРБОВИЋ МУРАТ
+ГРБОВИЋ РАДИСАВ
+ГРБОВИЋ РУЖИЦА
+ГРБОВИЋ СЛАВКО
+ГРБОВИЋ СМИЉА
+ГРЦЕ АНИЦА
+ГРЦИЋ ЈОВАН
+ГРЦИЋ МИЛИЦА
+ГРЦИЋ НИКОЛА
+ГРЦИЋ ВЕСЕЛИН
+ГРЦОВИЋ ВЕРИЦА
+ГРДИЋ ИВИЦА
+ГРДИЋ ЛУЈКА
+ГРДИЋ МАРА
+ГРДИНИЋ МИРКО
+ГРДИНИЋ СЛОБОДАН
+ГРЕЧ РОЗАЛИЈА
+ГРЕЧЕЛ КАРЛО
+ГРЕЧНИК ЈАНКО
+ГРЕЧНИК МАРИЈА
+ГРЕЧНИК ПАВЛЕ
+ГРЕБЕЛДИНГЕР ЉУБИЦА
+ГРЕБЕЛДИНГЕР ПЕТАР
+ГРЕБЊЕВ РОЗАЛИЈА
+ГРЕБО НЕДЕЉКО
+ГРЕБОВИЋ РАНКО
+ГРЕГЕЦ МАРИЈА
+ГРЕГЕЦ ВИЛИ
+ГРЕГЕЦ ВИЛИ
+ГРЕГЕР ХЕДВИГА
+ГРЕГОР ЈОСИП
+ГРЕГОРИЋ БРАНКО
+ГРЕГОРИЋ ДУШАН
+ГРЕГОРИЋ МИЛАНКА
+ГРЕГОРИН ПЕТАР
+ГРЕГОРОВИЋ АНТОНИЈЕ
+ГРЕГОРОВИЋ ИВАН
+ГРЕГОРОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+ГРЕГУШ АНТАЛ
+ГРЕГУШ ЈАНОШ
+ГРЕГУШ ЛАСЛО
+ГРЕГУШ ПЕТАР
+ГРЕГУРИЋ ИВАН
+ГРЕИСИНГЕР ДАРИНА
+ГРЕИЗЕР ПЕТАР
+ГРЕК САДИК
+ГРЕКС ПАВЕЛ
+ГРЕКУ АДЕМ
+ГРЕКУ ГАНИ
+ГРЕКУ ХАСАН
+ГРЕКУ МУХАМЕР
+ГРЕКУ НЕЗИР
+ГРЕКУ РАМИЗ
+ГРЕКУ САБИТ
+ГРЕКУЛОВИЋ ЈОВАН
+ГРЕКУЛОВИЋ СТАНЧЕ
+ГРГАНОВИЋ ЂУРА
+ГРГАР ЂУРИЦА
+ГРГАР БРАНКА
+ГРГАР ЛАЗАР
+ГРГАР ТОША
+ГРГИЧЕВИЋ ЈУЛИШКА
+ГРГИЋ БОШКО
+ГРГИЋ БОЈАНА
+ГРГИЋ ДРАГОЈЕ
+ГРГИЋ МИЈО
+ГРГИЋ МИЛАН
+ГРГИЋ САВЕТА
+ГРГИЋ СИМО
+ГРГИЋ ВЕРА
+ГРГИЋ ВЕРИЦА
+ГРГИЋ ЗВОНИМИР
+ГРГИНЧЕВИЋ МИХАЕЛА ПРОФЕСОР
+ГРГИНЧЕВИЋ ВЛАДИМИР
+ГРГУР ДУШАН
+ГРГУР РАДОСЛАВ
+ГРГУР ВЛАДА
+ГРГУРЕВИЋ МИРОСЛАВ
+ГРГУРЕВИЋ РАЈКО
+ГРГУРИЋ АНТУН
+ГРГУРИЋ ЈОСИП
+ГРГУРИЋ РУЖИЦА
+ГРГУРОВ СЛОБОДАН
+ГРГУРОВИЋ МИЛОРАД
+ГРИФАТОНГ КАРЛО
+ГРИФАТОНГ ОТО
+ГРИГОРИЈЕВ АЛЕКСАНДАР
+ГРИГОРИЈЕВИЋ НИКОЛА
+ГРИГОРИЈЕВИЋ ПЕТАР
+ГРИЈАК ДАНИЦА
+ГРИЈАК КОСОВКА
+ГРИЈАК МИЛАН
+ГРИЈАКОВИЋ МИЛИЦА
+ГРИЈАКОВИЋ МИЛОШ
+ГРИЛЕЦ СТАНКО
+ГРИЛЕЦ СТАНКО
+ГРИНХУТ ЛАДИСЛАВ
+ГРИСА ПЕТАР
+ГРИСХАБЕР ФРАЊА
+ГРИЗЕЉ КАРЛО
+ГРИЗЕР ПЕТАР
+ГРИЗЕР СТЕВАН
+ГРКАВАЦ МИЛАН
+ГРКАВАЦ МИРОСЛАВ
+ГРКИНИЋ КОСАРА
+ГРКИНИЋ МИЛАН
+ГРКОВИЋ ЖИВАН
+ГРКОВИЋ ЂОРЂЕ
+ГРКОВИЋ ЂУРО
+ГРКОВИЋ АНКА
+ГРКОВИЋ БОЖИДАР
+ГРКОВИЋ БОГОЉУБ
+ГРКОВИЋ БОРИСЛАВ
+ГРКОВИЋ БРАНКО
+ГРКОВИЋ ДАНЕ
+ГРКОВИЋ ДУШАН
+ГРКОВИЋ ДУШАН
+ГРКОВИЋ ГАВРИЛО
+ГРКОВИЋ ЈЕЛЕНА
+ГРКОВИЋ ЈОВАН ДИПЛ ИНГ
+ГРКОВИЋ ЈОВАН
+ГРКОВИЋ ЉИЉАНА
+ГРКОВИЋ МИЛИЦА ДР
+ГРКОВИЋ МИРЈАНА
+ГРКОВИЋ СТОЈАНКА
+ГРКОВИЋ ВЕРА
+ГРКОВИЋ ВОЈИМИР
+ГРКОВИЋ ВОЈИН
+ГРКОВСКИ ПАНТА
+ГРЛИЋ ЂОРЂЕ
+ГРЛИЋ ЉУБИНКО
+ГРЛИЋ МИЛЕНКО
+ГРЛИЦА ЖЕЉКО
+ГРЛИЦА БОСИЉКА
+ГРЛИЦА МИЛЕВА
+ГРЛИЦА МИЛОВАН
+ГРЛИЦА СТАНКО
+ГРЛИЦА ВОЈИН
+ГРЉЕВИЋ МИРЈАНА
+ГРМАШ ЂУРО
+ГРМАШ БРАНКО
+ГРМОШ ПРЕДРАГ
+ГРМУША ЖИВКО
+ГРМУША ЂУРО
+ГРМУША МИЛАН
+ГРМУША МИЛАН
+ГРМУША РАДЕ
+ГРМУША СЛАВКО
+ГРМУША СМИЉКА
+ГРМУША СТОЈАН
+ГРМУША ВЕЛКО
+ГРЊА ЂУРА
+ГРЊА АНДРИЈА
+ГРЊА АНКА
+ГРЊА-АСАНИ ЉУМНИЈА
+ГРЊА ДУШАН
+ГРЊА ЈАНКО
+ГРЊА ЈАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈУРАЈ
+ГРЊА ЛАСЛО
+ГРЊА ЉУДЕВИТ
+ГРЊА МАРИЈА
+ГРЊА ОСКАР
+ГРЊА СОФИЈА
+ГРЊА СТЕВАН
+ГРЊА СТЕВАН
+ГРЊА СТЕВАН
+ГРЊА ВЛАДИМИР
+ГРОШЕК ЗВОНИМИР
+ГРОШКО МАРИЈА
+ГРОМ ЦИРИЛ
+ГРОМИЛИЋ МИЛОРАД
+ГРОС ЂОРЂЕ
+ГРОС ИВАН
+ГРОС ЛАДИСЛАВ
+ГРОЗДАНИЋ ЂОРЂЕ
+ГРОЗДАНИЋ ЕНИНКА
+ГРОЗДАНИЋ ЈОСИП
+ГРОЗДАНИЋ МИЛАН
+ГРОЗДАНИЋ МИЛАН
+ГРОЗДАНОВ СЛАВКО
+ГРОЗДАНОВСКИ ДАМЈАН
+ГРОЗДАНОВСКИ МИЛЕ
+ГРОЗДАНОВСКИ ПЕТАР
+ГРОЗДИЋ БОШКО
+ГРОЗДИЋ БОГДАН
+ГРОЗДИЋ ДЕСАНКА
+ГРОЗДИЋ ДОБРИВОЈ
+ГРОЗДИЋ ДУШАН
+ГРОЗДИЋ ЈАСМИНА
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ КУЗМАН
+ГРОЗДИЋ ЛАЗАР
+ГРОЗДИЋ ЉУБИША
+ГРОЗДИЋ ЉУБОМИР
+ГРОЗДИЋ МИЛАН
+ГРОЗДИЋ ПЕТАР
+ГРОЗДИЋ СТЕВАН
+ГРОЗДИЋ ВЕСНА
+ГРОЗДИЋ ЗДРАВКО
+ГРОЗДИЋ ЗОРАН
+ГРОЗДИЋ ЗОРИЦА
+ГРОЗГУТ ТИБОР
+ГРУБА ДОРУ
+ГРУБА ТИБЕРИЈЕ
+ГРУБАЧ ГОРДАНА
+ГРУБАЧ МАКСА
+ГРУБАЧ МОМЧИЛО
+ГРУБАЧ СТАНКА
+ГРУБАЧ ТАНАСИЈЕ
+ГРУБАЧИЋ ГОЈКО
+ГРУБАНОВ ДОБРИВОЈ
+ГРУБАНОВ ДУШАНКА
+ГРУБАНОВ НОВАК
+ГРУБАНОВ ЗАХАРИЈЕ
+ГРУБЕША НИКОЛА
+ГРУБЕШИЋ ДРАГАН
+ГРУБЕШИЋ ДУШАН
+ГРУБЕШИЋ МЕЛАНИЈА
+ГРУБЕР ЕДУАРД
+ГРУБЕР ЕМИЛ
+ГРУБЕР ЕВАЛД
+ГРУБЕР ФРАЊА
+ГРУБЕР РУДОЛФ
+ГРУБЕТИЋ ОЛГА
+ГРУБИША АНЂЕЛО
+ГРУБИШИЋ МИРЈАНА
+ГРУБИШИЋ МИРКО
+ГРУБИШИЋ НИКОЛА
+ГРУБИЋ ЖАРКО
+ГРУБИЋ ЖАРКО
+ГРУБИЋ АНКА
+ГРУБИЋ МИЛАН
+ГРУБИЋ НИКОЛА
+ГРУБИН МИЛАН
+ГРУБИН МИРОСЛАВ
+ГРУБЈЕШИЋ БРАНКО
+ГРУБЈЕШИЋ МИЛЕНКО
+ГРУБЈЕШИЋ МИРКО
+ГРУБЈЕШИЋ СТЕВО
+ГРУБОР АДАМ
+ГРУБОР БРАНКО
+ГРУБОР ЕМА
+ГРУБОР ЈЕФТО
+ГРУБОР-ЈОЈИЋ СЛАВИЦА
+ГРУБОР ЈОВО
+ГРУБОР ЛАЗАР
+ГРУБОР ЛАЗО
+ГРУБОР ЉУБОМИР
+ГРУБОР МИЉАНА
+ГРУБОР МИЛОШ
+ГРУБОР НЕЂО
+ГРУБОР НЕДЕЉКО
+ГРУБОР НЕВЕНА
+ГРУБОР НИКОЛА
+ГРУБОР НИКОЛА
+ГРУБОР ОЛГА
+ГРУБОР РАДЕ
+ГРУБОР СЛОБОДАН
+ГРУБОР СРЕТО
+ГРУБОР ВУЈО
+ГРУБОР ЗДРАВКО
+ГРУБОРОВИЋ МИЛЕ
+ГРУБОВИЋ ИЛИЈА
+ГРУЕСКУ-ЋИРИШАН ДЕЛИЈА
+ГРУИЧИЋ ДРАГОЉУБ
+ГРУИК ВЕРОНИКА
+ГРУЈЧИЋ НИКОЛА
+ГРУЈАНАЦ МИЛАН
+ГРУЈЕВ ОГЊАН ДИПЛ ИНГ
+ГРУЈИЧ СЛОБОДАН
+ГРУЈИЧИЋ БИЉАНА
+ГРУЈИЧИЋ ЈОВА
+ГРУЈИЧИЋ МАРИНКО
+ГРУЈИЧИЋ МИА
+ГРУЈИЧИЋ МИЛИЦА
+ГРУЈИЧИЋ МИЛОЈЕ
+ГРУЈИЧИЋ НЕНАД
+ГРУЈИЧИЋ ПЕТАР
+ГРУЈИЧИЋ ПРЕДРАГ
+ГРУЈИЧИЋ РАДОМИР
+ГРУЈИЧИН СТАНОЈЕ
+ГРУЈИЧКОВ ЈОВАН
+ГРУЈИЧКОВ МИЛКА
+ГРУЈИЋ ЖИВКА
+ГРУЈИЋ ЖИВОРАД
+ГРУЈИЋ ЂЕНА
+ГРУЈИЋ ЂЕНИСИЈЕ
+ГРУЈИЋ ЂОРЂЕ
+ГРУЈИЋ ЂУРЂИЦА
+ГРУЈИЋ ЂУРА
+ГРУЈИЋ ЂУРА
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АНЂЕЛКО
+ГРУЈИЋ АНДРИЈА
+ГРУЈИЋ АНИЦА
+ГРУЈИЋ БОЖИДАР
+ГРУЈИЋ БОЖИДАР
+ГРУЈИЋ БОРИСЛАВ
+ГРУЈИЋ БОРИВОЈ
+ГРУЈИЋ БОСИЉКА
+ГРУЈИЋ БРАНИСЛАВ
+ГРУЈИЋ БРАНИСЛАВ
+ГРУЈИЋ БРАНКО
+ГРУЈИЋ ЦВИЈЕТИН
+ГРУЈИЋ ЦВИЈО
+ГРУЈИЋ ДАНИЦА
+ГРУЈИЋ ДИМИТРИЈЕ
+ГРУЈИЋ ДРАГИЦА
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ФРАНЦИШКА
+ГРУЈИЋ ГАВРА
+ГРУЈИЋ ГАВРИЛО
+ГРУЈИЋ ГОРАН
+ГРУЈИЋ ГОРИЦА
+ГРУЈИЋ ГРУЈА
+ГРУЈИЋ ИЛИНКА
+ГРУЈИЋ ИВАН ДИПЛ ИНГ
+ГРУЈИЋ ИВАНКА
+ГРУЈИЋ ЈАЊА
+ГРУЈИЋ ЈЕЛИЦА
+ГРУЈИЋ ЈЕЛИСАВЕТА
+ГРУЈИЋ ЈЕЛКА ДР
+ГРУЈИЋ ЈОВАНКА
+ГРУЈИЋ ЈОВАНКА
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВИЦА
+ГРУЈИЋ ЈУЛКА
+ГРУЈИЋ КОСТА ДР
+ГРУЈИЋ КОСТА ДР
+ГРУЈИЋ ЛАЗАР
+ГРУЈИЋ ЛЕНКА
+ГРУЈИЋ ЉИЉАНА
+ГРУЈИЋ ЉУБИЦА
+ГРУЈИЋ ЉУБОМИР
+ГРУЈИЋ ЉУБО
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИНА
+ГРУЈИЋ МИХАЈЛО
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛЕНА
+ГРУЈИЋ МИЛЕНКО
+ГРУЈИЋ МИЛЕ
+ГРУЈИЋ МИЛИЦА
+ГРУЈИЋ МИЛОШ
+ГРУЈИЋ МИЛОШ
+ГРУЈИЋ МИЛОРАД
+ГРУЈИЋ МИЛОРАД
+ГРУЈИЋ МИРЈАНА
+ГРУЈИЋ МИРОСЛАВ ДИПЛ ИНГ
+ГРУЈИЋ МИРОСЛАВ
+ГРУЈИЋ МИТАР
+ГРУЈИЋ НАДА ДР ЛЕКАР
+ГРУЈИЋ НАДА
+ГРУЈИЋ НАДА
+ГРУЈИЋ НЕДЕЉКО
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НОВАК
+ГРУЈИЋ ПАВЛЕ
+ГРУЈИЋ ПЕТАР
+ГРУЈИЋ РАДЕНКО
+ГРУЈИЋ РАДЕ
+ГРУЈИЋ РАДИША
+ГРУЈИЋ РАДИНКА
+ГРУЈИЋ РАДИВОЈ
+ГРУЈИЋ РАДИВОЈ
+ГРУЈИЋ РАДМИЛА
+ГРУЈИЋ РАДОЈИЦА
+ГРУЈИЋ РАДОВАН
+ГРУЈИЋ РУЖИЦА
+ГРУЈИЋ САЊА
+ГРУЈИЋ САВА
+ГРУЈИЋ САВА
+ГРУЈИЋ СИНИША
+ГРУЈИЋ СЛАВИША
+ГРУЈИЋ СЛАВИЦА
+ГРУЈИЋ СЛАВКА
+ГРУЈИЋ СЛАВКО
+ГРУЈИЋ СЛОБОДАН ДИПЛ ИНГ
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СМИЉАНА
+ГРУЈИЋ СМИЉА
+ГРУЈИЋ СМИЉА
+ГРУЈИЋ СРЂАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТОЈАН ДР
+ГРУЈИЋ СВЕТОЗАР
+ГРУЈИЋ СВЕТОЗАР
+ГРУЈИЋ ТАТЈАНА
+ГРУЈИЋ ВЕЛИМИР
+ГРУЈИЋ ВЕРИЦА
+ГРУЈИЋ ВЕСЕЛИН
+ГРУЈИЋ ВЕСНА
+ГРУЈИЋ ВОЈИСЛАВ
+ГРУЈИЋ ЗДРАВКО
+ГРУЈИЋ ЗЛАТИЦА
+ГРУЈИЋ ЗЛАТИЦА
+ГРУЈИН ДАНИЦА
+ГРУЈИН ДУШАН
+ГРУЈИН ЉУБИЦА
+ГРУЈИН МИЛАН
+ГРУЈИН МИЛОШ
+ГРУЈИН НАДА
+ГРУЈИН ОЛГА
+ГРУЈИН ПЕТАР
+ГРУЈИН РАДОСЛАВ
+ГРУЈИН САША
+ГРУЈИН СМИЉА
+ГРУЈИН СПАСОЈЕ
+ГРУЈИН ТЕРЕЗА
+ГРУЈИН ЗОРАН
+ГРУЈИНОВИЋ ДРАГУТИН
+ГРУЈИНОВИЋ ЗОРКА
+ГРУЈОВИЋ БРАНИСЛАВ
+ГРУЈОВИЋ МИХАЈЛО
+ГРУЈОВСКИ ЛАЗАР
+ГРУЛОВИЋ РАДОЈКА
+ГРУЛОВИЋ ЗДЕНКО
+ГРУЛОВИЋ ЗДРАВКА
+ГРУЛОВИЋ ЗДРАВКО
+ГРУНЧИЋ ЈОВАН
+ГРУНИК ВЛАДИМИР ДР
+ГУША НИКОЛА
+ГУША ПРЕДРАГ
+ГУШАВАЦ ЗОРАН
+ГУШИЋ БОГДАН
+ГУШИЋ БОРИС
+ГУШИЋ МАНОЈЛО
+ГУШИЋ МАНОЈЛО
+ГУШИЋ МИЛЕНКА
+ГУШИЋ РАДЕНКО
+ГУШИЋ РАДЕНКО
+ГУШИЋ УГЉЕША
+ГУШИЋ ВАСИЉКА
+ГУЖАЛИЋ МАРИЈА
+ГУЖАЛИЋ СТЈЕПАН
+ГУЖАЛИЋ ВЛАДИМИР
+ГУЖАЛИЋ ЗВОНИМИР
+ГУЖЕЛА ЛАСЛО
+ГУЖВАЊ ИВИЦА
+ГУЖВИЦА ЂОРЂЕ
+ГУЖВИЦА ЂОРЂЕ
+ГУЖВИЦА БРАНИСЛАВ
+ГУЖВИЦА МИЛАН
+ГУЖВИЦА МИЛАН
+ГУЖВИЦА МИРКО
+ГУЖВИЦА НИКОЛА
+ГУЖВИЦА СТЕВО
+ГУЖВИЦА ЗОРАН
+ГУБАШ АНЂЕЛИЈА
+ГУБАШ МИРОСЛАВ
+ГУБАШ ВЛАДИМИР
+ГУБАШ ЗАГОРКА
+ГУБАНДА БАРБАРА
+ГУБАНДА ЛАДИСЛАВ
+ГУБЕРИНА ДУШАН
+ГУБЕРИНА СЛОБОДАН
+ГУБЕРИНИЋ ЉУБИЦА
+ГУБЕРНОВ ЈУЛИЈАНА
+ГУБИЋ МИРКО
+ГУБИЦА ЈОВАН
+ГУБИК ШАНДОР
+ГУБИК ШАНДОР
+ГУБИК КАРЛО
+ГУБИК КАТАРИНА
+ГУБИК СТЕВАН
+ГУЦ СТЕВАН
+ГУЦИЈАН СТЕВА
+ГУЦУ МИРЈАНА
+ГУЦУЉ ЈЕЛЕНА
+ГУЦУЉ МАРГИТА
+ГУЦУЉ ВЕРА
+ГУЦУЊА ЈОВАН
+ГУЦУЊА МИЛАН
+ГУЦУЊА МИЛОРАД
+ГУЦУЊА МИЛОРАД
+ГУЦУНСКИ ЖИВКА
+ГУЦУНСКИ ЂОРЂЕ
+ГУЦУНСКИ БОЖИДАР
+ГУЦУНСКИ БОРИСЛАВ
+ГУЦУНСКИ БРАНИСЛАВ
+ГУЦУНСКИ ИВАНКА
+ГУЦУНСКИ ИВАНКА
+ГУЦУНСКИ ЈЕЛЕНА
+ГУЦУНСКИ ЈОВАН
+ГУЦУНСКИ МАРИЈА
+ГУЦУНСКИ НАДА
+ГУЦУНСКИ ПЕРСИДА
+ГУЦУНСКИ РАДЕ
+ГУЦУНСКИ СИМА
+ГУДАЉ МАРТА
+ГУДАЛОВИЋ МОМИР
+ГУДАЛОВИЋ РАДМИЛА
+ГУДЕЉ ЂОРЂЕ
+ГУДЕЉ БРАНИСЛАВ ДИПЛ ИНГ
+ГУДЕЉ ЈОВАН
+ГУДЕЉ МАРИЈА
+ГУДЕЉ МИЛАН
+ГУДЕЉ МИЛЕНА
+ГУДЕЉ МОМЧИЛО
+ГУДЕЉ НЕДЕЉКА
+ГУДЕЉ САВА ДР
+ГУДОВИЋ ДРАГОМИР
+ГУДОВИЋ ПАВЛЕ
+ГУДОВИЋ РАДМИЛА
+ГУДОВИЋ СТЕВАН
+ГУДУРИЋ АЛЕКСАНДАР
+ГУДУРИЋ АНЂЕЛКА ДР
+ГУДУРИЋ БРАНИМИР ДР
+ГУДУРИЋ ДЕЈАН
+ГУДУРИЋ ЈОВАН
+ГУДУРИЋ СВЕТИСЛАВ
+ГУДУРИЋ ВАСА
+ГУДУРИЋ ЗОРАН
+ГУЕЛМИНО ШАНДОР
+ГУЕЛМИНО ФРИЂЕШ
+ГУГА ВЕРА
+ГУГА ВЕРА
+ГУГИЋ СИНИША
+ГУГЛЕТА СРБИСЛАВ
+ГУКОДИ МЛАДЕН
+ГУЛАЧИ ЈОСИП
+ГУЛАЋИ ЉУБИНКА
+ГУЛАН БОШКО
+ГУЛАН БРАНИСЛАВ
+ГУЛАН ВИДОСАВА
+ГУЛД ВАЛЕРИЈА
+ГУЛЕВИЋ ТАТЈАНА
+ГУЛЕВИЋ ВЛАДИМИР ДР ЛЕКАР
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ МИХАЈЛО
+ГУЛЕВСКИ САША
+ГУЛИЧ ИМРЕ
+ГУЛИЋ СТАНКО
+ГУЛИЋ ВЕСНА
+ГУЛИН МАРИЦА
+ГУЛИН ЗЛАТКО
+ГУЉАШ МАРИЈА
+ГУЉАШ ТЕРЕЗИЈА
+ГУЉАШ ВЕСНА
+ГУЉПА МИЛАН
+ГУЉПА САВА
+ГУНЕК МАРИЈА
+ГУНЕК МАТЕ
+ГУНЕК ТОМА
+ГУНИЋ МИЛЕНА
+ГУЊЕВИЋ МИЛЕ
+ГУЊЕВИЋ НЕВЕНКА
+ГУРАН ТАМАШ
+ГУРЈАНОВ ЖАРКО
+ГУРЈАНОВ БЛАГОЈЕ
+ГУРЈАНОВ ЈЕЛИЦА
+ГУРЈАНОВ ВАСА
+ГУРОВИЋ БОЖИДАР
+ГУСИЋ МИЛЕВА
+ГУСМАН ЂОРЂЕ ДР ЛЕКАР
+ГУСМАН ДРАГИЦА
+ГУСМАН ГЕРХАРД
+ГУСМАН ХИЛДА
+ГУСМАН ИМРЕ
+ГУТ ЈАНКО
+ГУТ ЈОВАН
+ГУТ НАТАЛИЈА
+ГУТАИ ЈОЛАН
+ГУТАИ МИХАЉ
+ГУТАЈИ ИЛЕШ
+ГУТАЉ МИЛОРАД
+ГУТЕША ЂУРО
+ГУТЕША МИРКО
+ГУТЕША НИКОЛА
+ГУТЕША ВОЈИСЛАВ
+ГУТИ ЖОЛТ
+ГУТИЋ ШПИРО
+ГУТИЋ ГОРАН
+ГУТМАН АЛЕКСАНДАР
+ГУТМАН ДАРИНКО
+ГУТОВИЋ АНЂЕЛКО
+ГУТОВИЋ ДАНИЕЛА
+ГУТОВИЋ МИЛЕНКО
+ГУТОВИЋ РАДЕ
+ГУТОВИЋ РИСТО
+ГУТОВИЋ СИНИША
+ГУТОВИЋ СНЕЖАНА
+ГУТОВИЋ ЗОРАН
+ГУТВАЈН АДАМ
+ГУТВАЈН АДАМ
+ГУТВАЈН ЕЛИЗАБЕТА
+ГУТВАЈН ЕВА
+ГУЗИЈАН ЈОВО
+ГУЗИЈАН МИЛАН
+ГУЗИЈАН НИКОЛА
+ГУЗИНА ЧЕДОМИР
+ГУЗИНА ЉУБИСАВ
+ГУЗИНА МИХАЈЛО
+ГУЗИНА МИЛОРАД
+ГУЗИНА МИЛОРАД
+ГУЗИНА МИЛОСАВ ДР
+ГУЗИНА ВЛАДИМИР
+ГУЗИНА ВОЈИСЛАВ
+ГУЗИНА ВУКАШИН
+ГВЕРИЋ БОРИВОЈ
+ГВЕРИЋ СНЕЖАНА
+ГВЕРО ЛАЗО
+ГВЕРО МИРА
+ГВОЖЂАН БОРИСЛАВА
+ГВОЖЂАН МИХАЈЛО
+ГВОЖЂАН РАДОВАН
+ГВОИЋ БРАНКО
+ГВОИЋ МИЛАН
+ГВОИЋ ВАЛЕРИЈА
+ГВОЈИЋ БОРИСЛАВ
+ГВОЈИЋ МИЛАН
+ГВОЈИЋ СТАНКО
+ГВОЈИЋ СТЕВАН
+ГВОКА НАДА
+ГВОЗДЕН БОСИЉКА
+ГВОЗДЕН БРАНКО
+ГВОЗДЕН СРЕТО
+ГВОЗДЕН ВЛАДИМИР
+ГВОЗДЕНАЦ ЖИВКО
+ГВОЗДЕНАЦ БОРА
+ГВОЗДЕНАЦ БОРА
+ГВОЗДЕНАЦ БОРКА
+ГВОЗДЕНАЦ ДРАГОЉУБ
+ГВОЗДЕНАЦ ДУШАН
+ГВОЗДЕНАЦ РАЈКО
+ГВОЗДЕНАЦ СНЕЖАНА
+ГВОЗДЕНОВ ЈОВАН
+ГВОЗДЕНОВ МИЛАН
+ГВОЗДЕНОВИЋ ЖИВОРАД
+ГВОЗДЕНОВИЋ ЂОРЂЕ
+ГВОЗДЕНОВИЋ ЂУРО
+ГВОЗДЕНОВИЋ БОЖО
+ГВОЗДЕНОВИЋ БРАНКО
+ГВОЗДЕНОВИЋ БРАНКО
+ГВОЗДЕНОВИЋ ДЕЈАН
+ГВОЗДЕНОВИЋ ДРАГИЊА
+ГВОЗДЕНОВИЋ ДУШАН ДР
+ГВОЗДЕНОВИЋ ДУШАН
+ГВОЗДЕНОВИЋ ЕМИЛИЈА
+ГВОЗДЕНОВИЋ ЉИЉАНА
+ГВОЗДЕНОВИЋ ЉУБО
+ГВОЗДЕНОВИЋ МИЋО
+ГВОЗДЕНОВИЋ МИЛИВОЈЕ
+ГВОЗДЕНОВИЋ МИЛОШ
+ГВОЗДЕНОВИЋ МИРКО
+ГВОЗДЕНОВИЋ МИРОСЛАВ
+ГВОЗДЕНОВИЋ МИРОСЛАВ
+ГВОЗДЕНОВИЋ НИКОЛА
+ГВОЗДЕНОВИЋ ПЕТАР
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ СТЕВО
+ГВОЗДЕНОВИЋ-ТОДОРОВИЋ ЗАГОРКА
+ГВОЗДЕНОВИЋ-ТОДОРОВИЋ ЗАГОРКА
+ГВОЗДЕНОВИЋ ВИДА
+ГВОЗДЕНОВИЋ ВИТОМИР
+ГВОЗДЕНОВИЋ ВЛАДА
+ГВОЗДЕНОВИЋ ВЛАДА
+ГВОЗДЕНОВИЋ ЗОРИЦА
+ГВОЗДИЋ ЂОРЂЕ
+ГВОЗДИЋ МИЛАН
+ХАШОВИЋ АНДРИЈА
+ХАШОВИЋ ИМРЕ
+ХАЂИНАЦ БРАНИСЛАВ
+ХАБАШ ЗОРАН
+ХАБАЈЕЦ ЉУБИЦА
+ХАБЕК ЖЕЉКО
+ХАБЕНШУС МИЛЕНКО
+ХАБЕНШУС МИЛЕНКО
+ХАБИЈАН ФРАЊА
+ХАБИЈАН ВЕСНА
+ХАБИЈАНЕЦ ТИХОМИР
+ХАБОР ЈАН
+ХАБРАМ АРАНКА
+ХАБРАМ КАРОЉ
+ХАБУДА ЈОСИП
+ХАБУДА ВАЛЕНТИН
+ХАЦОПУЛОС ЂОРЂЕ
+ХАЦОПУЛОС НАДА
+ХАЏИ АЛЕКСАНДАР
+ХАЏИ КОСТА АДВОКАТ
+ХАЏИ-МАНОВ ЉУПЧО
+ХАЏИ-ПАВЛОВИЋ ОЛГА
+ХАЏИ РАМАДАН
+ХАЏИЋ БОСИЉКА
+ХАЏИЋ ГОРАНКА
+ХАЏИЋ ИБРАХИМ
+ХАЏИЋ ИСМЕТ
+ХАЏИЋ ЛАЗАР
+ХАЏИЋ ЛАЗАР
+ХАЏИЋ МИЛАН ДР
+ХАЏИЋ МИЛЕВА
+ХАЏИЋ МОНИКА
+ХАЏИЋ МУХАРЕМ
+ХАЏИЋ НАДА
+ХАЏИЋ ОЛГА ДР
+ХАЏИЋ ПАВЛЕ
+ХАЏИЋ РАДИВОЈ
+ХАЏИЋ СЛАВУЈ
+ХАЏИЋ ВЛАДИМИР
+ХАЏИАХМЕТОВИЋ РАСИМ
+ХАЏИАРСИЋ ДОБРИВОЈЕ
+ХАЏИБАБИЋ ДРАГАН
+ХАЏИБАБИЋ РАДОМИР
+ХАЏИБАБИЋ РАДОМИР
+ХАЏИБАБИЋ ЗОРИЦА
+ХАЏИХАСАНОВИЋ РАДМИЛА
+ХАЏИВУКОВИЋ СТЕВАН ДР ПРОФ
+ХАЏОВИЋ ЈЕЛИСАВЕТА
+ХАЏОВИЋ РАТКО
+ХАДАДИ СМИЉА
+ХАДИК АДРИЕН
+ХАДИК ЈОЖЕФ
+ХАДНАЂ ГИЗЕЛА
+ХАДНАЂ ТЕРЕЗА
+ХАДНАЂ ВЕРА
+ХАДНАЂ ВЕРОНИКА
+ХАДНАЂЕВ АРСЕН
+ХАДНАЂЕВ ДУШАН ДР
+ХАДНАЂЕВ ДУШАН
+ХАДНАЂЕВ ИСИДОР
+ХАДНАЂЕВ МИОДРАГ
+ХАДНАЂЕВ МИРКО
+ХАДНАЂЕВ СТАНИСЛАВ
+ХАДНАЂЕВ СТЕВАН
+ХАДНАЂЕВ СТОЈАН
+ХАИН БРАНИСЛАВ
+ХАИН ЗОРИЦА
+ХАЈЧУНК ЈОЖЕФ
+ХАЈЧУНК МИРКО
+ХАЈАШ ЈЕЛИСАВЕТА
+ХАЈДАРЕВИЋ ОРХАН
+ХАЈДАРПАШИЋ ЕСАД
+ХАЈДЕР ЂОРЂЕ
+ХАЈДЕР ДРАГАН
+ХАЈДЕР ЛУКА
+ХАЈДЕР МАРИЦА
+ХАЈДЕР МАРКО
+ХАЈДЕР МИЛОШ
+ХАЈДЕР РАДЕ
+ХАЈДЕР РАЈКО
+ХАЈДЕР СТОЈАНКА
+ХАЈДЕР ВЕСНА
+ХАЈДЕР ЗОРАН
+ХАЈДИЋ АНЂЕЛКО
+ХАЈДИН БОГДАН
+ХАЈДИН СЛАВКО
+ХАЈДУ АНА
+ХАЈДУ АНДРИЈА
+ХАЈДУ АНТАЛ
+ХАЈДУ ФЕРЕНЦ
+ХАЈДУ-ГРАЈЛАХ ЕМА
+ХАЈДУ ИЛОНКА
+ХАЈДУ ИРЕНА
+ХАЈДУ ЈОЖЕФ
+ХАЈДУ ЈОЛИКА
+ХАЈДУ ЈОСИП
+ХАЈДУ КАТИЦА
+ХАЈДУ КЛАРА
+ХАЈДУ ЛАЈОШ
+ХАЈДУ ЛАСЛО
+ХАЈДУ ЉУДЕВИТ
+ХАЈДУ МАРИЈА
+ХАЈДУ ОТО
+ХАЈДУ ПАВЛЕ
+ХАЈДУ СТЕВАН
+ХАЈДУК ЂОРЂЕ
+ХАЈДУК ИРИНА
+ХАЈДУК ЈАНКО
+ХАЈДУКОВИЋ АРСЕН
+ХАЈДУКОВИЋ БОШКО
+ХАЈДУКОВИЋ БОГДАН
+ХАЈДУКОВИЋ ДЕСАНКА
+ХАЈДУКОВИЋ ДУШАН
+ХАЈДУКОВИЋ ЈОВАНКА
+ХАЈДУКОВИЋ ЉИЉАНА
+ХАЈДУКОВИЋ МИЛАНКА
+ХАЈДУКОВИЋ МИЛАН
+ХАЈДУКОВИЋ НАДЕЖДА
+ХАЈДУКОВИЋ ОТО
+ХАЈДУКОВИЋ РАДОСЛАВ ДИПЛ ИНГ
+ХАЈДУКОВИЋ СМИЉА
+ХАЈНАЛ АНТАЛ
+ХАЈНАЛ ГАБРИЈЕЛА
+ХАЈНАЛ ИВАН
+ХАЈНАЛ ЛАСЛО
+ХАЈНАЛ ЉУБИЦА
+ХАЈНАЛ МАРИЈА
+ХАЈНАЛ НИКОЛА
+ХАЈНЦ ЂОРЂЕ
+ХАЈНЦ ЈОСИП
+ХАЈНЦ ЈОВАН
+ХАЈНЦ ЗЛАТА
+ХАЈТФОГЕЛ ВЛАДА
+ХАЈТФОГЕЛ ВЛАДИСЛАВ
+ХАЈТЛ ИВАН
+ХАЈВАЗ РАЈКО
+ХАЈЗЛЕР ЂОРЂЕ
+ХАЈЗЛЕР ДУШАН
+ХАЈЗЛЕР ЈОВАН
+ХАКАЧ МАТИЈА
+ХАКЕР ИВАН
+ХАКЕР ТЕРЕЗА
+ХАЛАШ ЗУЗАНА
+ХАЛАШИ ЂОРЂЕ
+ХАЛАШИ ЕТЕЛКА
+ХАЛАШИ-КИШ ФРАНКА
+ХАЛАШИ РУЖА ДР ИНГ
+ХАЛАИ ИМРЕ
+ХАЛАИ МАРИЈА
+ХАЛАИ ПЕТАР
+ХАЛАИ САБОЛЧ
+ХАЛАПИ ДРАГИЦА
+ХАЛАПИ ИРЕНА
+ХАЛАПИ ИВАН
+ХАЛАС ШАНДОР
+ХАЛАС ФРАЊА
+ХАЛАС МАРИЈА
+ХАЛАВАЊА ЖЕЉКО
+ХАЛАВАЊА ЉУБАН
+ХАЛАВАЊА МИЛАН
+ХАЛАВАЊА РАДЕ
+ХАЛАВАЊА СТЕВА
+ХАЛЕР СТЕВАН
+ХАЛИЛОВИЋ МУХАРЕМ
+ХАЛИМ СЕФЕР
+ХАЛУПКА ЈОЖЕФ ДР
+ХАМ АЛЕКСАНДАР
+ХАМУ МИХАЉ
+ХАМЗИЋ МИЛЕНА
+ХАН СОФИЈА
+ХАНЦКО ЈОЖЕФ ДР
+ХАНЦКО ЈОЖЕФ ДР
+ХАНДА КАТИЦА
+ХАНГ МАТЕЈ
+ХАНГ ВЛАТКО
+ХАНГА АНТУН
+ХАНГА АНТУН
+ХАНГА МАРИЈА
+ХАНГОВСКИ АНДРИЈА
+ХАНСКО ЈОСИП
+ХАНСКО СТЕВАН
+ХАНУШИЋ СЕАД
+ХАРАЧИЋ ЏЕМАЛ
+ХАРАЧИЋ ЉУБИЦА
+ХАРАК ПАВЛЕ
+ХАРАМБАШИЋ БОЖАНА
+ХАРАМИЈА МАРИЈА
+ХАРАНГОЗО ШАНДОР
+ХАРАНГОЗО ШАНДОР
+ХАРАНГОЗО ШАРИКА
+ХАРАНГОЗО БАЛИНТ
+ХАРАНГОЗО БОШКО
+ХАРАНГОЗО ЕРЖЕБЕТ
+ХАРАНГОЗО ЕРЖЕБЕТ
+ХАРАНГОЗО ИШТВАН
+ХАРАНГОЗО ИМРЕ
+ХАРАНГОЗО-ЈЕГРИШКИ МАРИЈА
+ХАРАНГОЗО КАРОЉ
+ХАРАНГОЗО-ТОРИ ЖУЖАНА
+ХАРАНГОЗО-ТОРИ ЂУРА
+ХАРАНГОЗО-ТОРИ БОЖИДАР
+ХАРАНГОЗО-ТОРИ ИРИНА
+ХАРАНГОЗО-ТОРИ ИВАН
+ХАРАНГОЗО-ТОРИ ЈОАКИМ
+ХАРАНГОЗО-ТОРИ ЈОВАН
+ХАРАНГОЗО-ТОРИ ЈОВАН
+ХАРАНГОЗО-ТОРИ ЉУБИЦА
+ХАРАНГОЗО-ТОРИ НЕСТОР
+ХАРАНГОЗО-ТОРИ НИКОЛА
+ХАРАНГОЗО-ТОРИ СИЛВЕСТЕР
+ХАРАНГОЗО-ТОРИ СТОЈАНКА
+ХАРАНГОЗО-ТОРИ ВЕСНА
+ХАРАНГОЗО-ТОРИ ВЛАДИМИР
+ХАРАНГОЗО-ТОРИ ВЛАДИМИР
+ХАРФМАН МАРА
+ХАРХАИ ЖЕЉКО
+ХАРХАИ БОЖАНА
+ХАРХАИ ЈАНКО
+ХАРХАЈИ ХЕЛЕНА
+ХАРХАЈИ ЈАНКО
+ХАРХАЈИ ЈОАКИМ
+ХАРХАЈИ ЈОАКИМ
+ХАРХАЈИ ЉУБОМИР
+ХАРХАЈИ ЉУБОМИР
+ХАРХАЈИ МИРОН
+ХАРХАЈИ НИКОЛА
+ХАРХАЈИ ВЛАДИМИР
+ХАРХАЈИ ВЛАДИМИР
+ХАРИШ ЈЕЛИСАВЕТА
+ХАРИШ ЈЕЛИСАВЕТА
+ХАРИШ ЉУБИВОЈЕ
+ХАРИШ ПИРОШКА
+ХАРИЈАН ШТЕФИЦА
+ХАРКАИ СТЕВАН
+ХАРМАТ КОНРАД
+ХАРПАЊ МИХАЛ
+ХАРТ МАРГИТА
+ХАРТИГ ИРЕНА
+ХАРТИГ ТИБОР
+ХАРТМАН КАТАРИНА
+ХАРТМАН ВЕСНА
+ХАС АЛЕКСАНДАР
+ХАС КАРЛО
+ХАС МАРТА
+ХАС МИЛИЦА
+ХАСАНАГИЋ ЕСНАФ
+ХАСАНАГИЋ МИЛАН
+ХАСЕНАУЕР ЈОСИП
+ХАСИЋ ЏЕМАЛ
+ХАТАЛА МАТЕ
+ХАТАЛА ЗОЛТАН
+ХАУГ АНИЦА
+ХАУК РОБЕРТ
+ХАУПТМАН СЛАВКО
+ХАУРДИЋ РАБИЈА
+ХАУСЕР ХИЛДА
+ХАУЗЕР ОСКАР
+ХАУЗЛОХНЕР ИРЕНА
+ХАВЈАР ВЕЛИЗАР
+ХАВЛЕК ФРАЊА
+ХАВЛЕК ЈОСИП
+ХАВРАН ЗЛАТКО
+ХАВЗИ ШЕРИФ
+ХАВЗИ ЛИМАН
+ХЕЂЕШ ЈАНОШ
+ХЕЂЕЛАИ СТЕВАН
+ХЕЂИ АЛЕКСАНДАР
+ХЕЂИ МИЛИЦА
+ХЕДЕШ ЈАНОШ
+ХЕГЕДИШ ЂЕРЂ
+ХЕГЕДИШ БЕЛА
+ХЕГЕДИШ БЕРТА
+ХЕГЕДИШ ГЕЗА
+ХЕГЕДИШ ИШТВАН
+ХЕГЕДИШ ЈОЖЕФ
+ХЕГЕДИШ ЈОХАНА
+ХЕГЕДИШ ЈОЗЕФИНА
+ХЕГЕДИШ ТЕРЕЗИЈА
+ХЕГЕДИШ ЗОЛТАН
+ХЕГЕДУШ КАРОЛИНА
+ХЕИМ МАГДА
+ХЕКИЋ СЛАВИЦА
+ХЕЛЕР ГАБРИЈЕЛ
+ХЕЛЕР ИНГРИД
+ХЕМ ЈАНОШ
+ХЕМИ АНИЦА
+ХЕМИ ВЛАДИСЛАВ
+ХЕМОН БОРИС
+ХЕМОН МАРИЈА
+ХЕМОН СЛАВИЦА
+ХЕМОН ТЕРЕЗИЈА
+ХЕМОН ВЛАДИМИР
+ХЕМОН ВЛАДИМИР
+ХЕМРИХ КЛАРА
+ХЕМУН МИХАЈЛО
+ХЕН ЖЕЉКО
+ХЕН ИВИЦА
+ХЕН МАРИЈА
+ХЕНГЛ ДАМЈАН
+ХЕНГЛ ЈОВАН
+ХЕНГЛ РИХАРД
+ХЕНИШ ВИЛМА
+ХЕНКЕЛ ФИЛИП
+ХЕП МАКСИМ
+ХЕРЧИК РОБЕРТ
+ХЕРАК ИВАН
+ХЕРАК СТАНИСЛАВ
+ХЕРАКОВИЋ АЛЕКСАНДАР
+ХЕРАКОВИЋ БРАНИСЛАВ
+ХЕРАКОВИЋ СЛОБОДАН
+ХЕРБЕЗ МИЛЕНКО
+ХЕРБСТ АНТУН
+ХЕРБУТ ЂОРЂЕ
+ХЕРБУТ ГАБОР
+ХЕРБУТ ЈОЖЕФ
+ХЕРБУТ КАРОЉ
+ХЕРБУТ КИРИЛ
+ХЕРБУТ МИХАЈЛО
+ХЕРБУТ СИЛВЕСТЕР
+ХЕРЦЕГ ЂОРЂЕ
+ХЕРЦЕГ ДРАГОСЛАВ
+ХЕРЦЕГ КАРЛО
+ХЕРЦЕНБЕРГЕР ЂУЛА
+ХЕРЦЕНБЕРГЕР АЛЕКСАНДАР
+ХЕРЦЕНБЕРГЕР АЛЕКСАНДАР
+ХЕРЦЕНБЕРГЕР ГИЗЕЛА
+ХЕРЦЕНБЕРГЕР ИРЕН
+ХЕРЦОГ ЂОРЂЕ
+ХЕРДИ ЈОСИП
+ХЕРДИ ЉИЉАНА
+ХЕРДИ-СТОЈАНОВИЋ АНГЕЛИНА
+ХЕРЕНЧИЋ ЛЕОПОЛД
+ХЕРЕНДИЈА ЂОРЂЕ
+ХЕРЕНДИЈА МАРКО
+ХЕРЕТА СЛОБОДАН
+ХЕРГЕТ КАТИЦА
+ХЕРИЋ МИХОВИЛ
+ХЕРИНГ АМАЛИЈА
+ХЕРИНГ ИВАН
+ХЕРМАН ЧИЛА
+ХЕРМАН АНЂА
+ХЕРМАН ИВАН
+ХЕРМАН КАРЛО
+ХЕРМАН ВИЛИМ
+ХЕРОР ЛАЗАР
+ХЕРПКА ДУБРАВКА
+ХЕРПКА ИВАН ДР ИНГ
+ХЕРТЛ ЈОЖЕФ
+ХЕРТЛ НАДА
+ХЕС ШАНДОР
+ХЕС ЛАСЛО
+ХЕСКО ВИКТОРИЈА
+ХЕВЕР МАРГИТА
+ХЕВЕР ПАВЛЕ
+ХЕВЕРА МИХАЈЛО
+ХЕВЕРА ЗУЗАНА
+ХЕВИЗИ ИЛОНА
+ХЕВИЗИ ПЕТАР
+ХИЋИЛ АЛЕКСАНДАР
+ХИЋИЛ ЈОСИП
+ХИЋИЛ КАТАРИНА
+ХИЖА ЈОВАН
+ХИЖА МИША
+ХИБШ МАРИЈА
+ХИБШ РИХАРД СУДИЈА
+ХИБШ ТАНКРЕД
+ХИЕЛ КСЕНИЈА
+ХИЛ ЈОСИП
+ХИЛ ВЕРА
+ХИЛИЕР-КОЛАРОВ ВАЛЕРИЈА ДР
+ХИЛИЕР ЛАЈОШ ДИПЛ ИНГ
+ХИНИЋ ЂОРЂЕ
+ХИНИЋ БРАНКО
+ХИНИЋ МАНЕ
+ХИНИЋ МИЛИЦА
+ХИНИЋ ПРЕДРАГ
+ХИПИК ШТЕФАНА
+ХИПИК ЈОВАН
+ХИПИК КАРЛО
+ХИРШ СТЈЕПАН
+ХИРШЕНБЕРГЕР МАРТА
+ХИРШЕНБЕРГЕР СТЕВАН ДИПЛ ИНГ
+ХИРШМАН АНТУН
+ХИРЈОВАТИ ЉУБИЦА
+ХИРЈОВАТИЈ МИРОН
+ХИРМАН ФРАЊА
+ХИРМАН ЗОЛТАН
+ХИТЕНБЕРГЕР ЂОРЂЕ
+ХИТИ ФРАНЦ
+ХИТЛ ЕЛИЗАБЕТА
+ХИТЛ СТЕВАН
+ХЛАЂИК ЗВОНКО
+ХЛАДНИ ИВАН
+ХЛАДНИ СЛАВКО
+ХЛАПЕЦ СТЈЕПАН
+ХЛАВСА СЛАВИЦА
+ХЛЕБЕЦ НОРБЕРТ
+ХЛОЖАН ЈОВАН
+ХМИЉ ИЛИЈА
+ХНАТКО МИШКО
+ХОЧКО АЈЕТ
+ХОШЕК ЧАБА
+ХОШЕК ФРАЊА
+ХОБРАТ МАРТА
+ХОЏА РАМАДАН
+ХОЏИЋ ХАЛИД
+ХОЏИЋ ОМЕР
+ХОЏИЋ СТАЗА
+ХОДА МЕЈРЕМ
+ХОДАК МИЛЕ
+ХОДАК СИЛВЕСТАР
+ХОДАК СОФИЈА
+ХОДАК ВЕРА
+ХОДАК ВЛАДИСЛАВ
+ХОДАР ЈОСИП
+ХОДИ ЕРНЕ
+ХОДИ ЕРНЕ
+ХОДИ ФЕРЕНЦ
+ХОДИ ВИЛМА
+ХОДИК БАРБАРА
+ХОДИНКА МИХАИЛО
+ХОДНИК АЛОЈЗ
+ХОДОБА ДАНИЈЕЛА
+ХОДОЛИЧ ЈАНКО
+ХОДОЛИЋ ЈАРОСЛАВ
+ХОФМАН АЛЕКСАНДАР
+ХОФМАН АРТУР
+ХОФМАН БРУНО
+ХОФМАН ФРАЊА
+ХОФМАН ЛАДИСЛАВ
+ХОФМАН МАРИЈА
+ХОФМАН ВЕСНА
+ХОХЊЕЦ ДАРКО
+ХОХЊЕЦ ПЕТАР
+ХОХЊЕЦ ВЛАДИМИР
+ХОЛЦЕР ЛАДИСЛАВ
+ХОЛЕРБАХ КАТИЦА
+ХОЛИ АНДРИЈА МР ПХ
+ХОЛИ КАТАРИНА
+ХОЛИЧЕК ЛАСЛО
+ХОЛИЧЕК МАРГИТ
+ХОЛИЧЕК СТЕВАН
+ХОЛИГА КАРЛО
+ХОЛИГА СНЕЖАНА
+ХОЛИГА СТЕВАН
+ХОЛИК ЈАНКО
+ХОЛИК ЈОАКИМ
+ХОЛО ЛЕОНТИНА
+ХОЛО ВИЛМОШ ДИПЛ ИНГ
+ХОЛОД СТЕВАН
+ХОЛОДКОВ ВЛАДИМИР
+ХОЛОТ РУЖА
+ХОЛОВКА АНКА
+ХОЛОВКА БРАНКА
+ХОЛОВКА НАТАЛИЈА
+ХОЛПЕРТ ЕРНЕСТ
+ХОЛПЕРТ ЛУЈО
+ХОМА АНА
+ХОМА БОСИЉКА
+ХОМА ЕУГЕН
+ХОМА ЈАНКО
+ХОМА ЈОВГЕН
+ХОМА МИРОСЛАВ
+ХОМА НИКОЛА
+ХОМА ПЕТАР ДИПЛ ИНГ
+ХОМА ВЛАДИМИР
+ХОМА ВЛАДИМИР
+ХОМА ВУКИЦА
+ХОМОЉА ЈОЖЕФ
+ХОР БОЖИЦА
+ХОР ИЛИЈА
+ХОР ПАВЛЕ
+ХОРАК МИХАЈЛО
+ХОРАК НАНДОР
+ХОРГАС ИШТВАН
+ХОРГАС МАТИЛДА
+ХОРГОШИ ЂУЛА
+ХОРГОШИ КАТАРИНА
+ХОРИЋ ЈЕЛИСАВЕТА
+ХОРИЋ КОСИМ
+ХОРН ВАЛЕНТИН
+ХОРЊАК ЖИВА
+ХОРЊАК ЂУРО
+ХОРЊАК ДИМИТРИЈЕ
+ХОРЊАК ДИМИТРИЈЕ
+ХОРЊАК ИВАН
+ХОРЊАК ЈАНОШ
+ХОРЊАК ЈАН
+ХОРЊАК МАГДАЛЕНА
+ХОРЊАК МИША
+ХОРЊАК МИРКО
+ХОРЊАК ОЛГА
+ХОРЊАК ПЕТАР
+ХОРЊАК-ПУШКАШОВА МАРИЈА
+ХОРЊАК СОФРОНА
+ХОРЊАК СТЕВАН
+ХОРЊАК ВЛАДА
+ХОРЊАК ВЛАДА
+ХОРЊАК ВЛАДИМИР
+ХОРЊИК ШАНДОР
+ХОРЊИК ЂЕРЂ
+ХОРЊИК ЂЕРЂ
+ХОРЊИК ЗОЛТАН
+ХОРНОК ЗОЛТАН
+ХОРНУНГ-ШОМАН ШТЕФАНИЈА
+ХОРОШИЛОВ СОФИЈА
+ХОРОШКО АЛЕКСАНДАР
+ХОРОШКО СТЕФАН ДР
+ХОРОВИЦ ДРАГИЊА
+ХОРОВИЦ ВЛАДИМИР
+ХОРТИ ДРАГАНА
+ХОРТИ ГЕЗА
+ХОРТИ ЈОСИП
+ХОРТИ ВЛАДИСЛАВ
+ХОРВАЦКИ МАРКО
+ХОРВАЦКИ СНЕЖАНА
+ХОРВАТ ШАНДОР
+ХОРВАТ ШАНДОР
+ХОРВАТ ЖОЛТ
+ХОРВАТ ЂУЛА
+ХОРВАТ ЂУРА
+ХОРВАТ АГИ
+ХОРВАТ АЛЕКСАНДАР
+ХОРВАТ АЛЕКСАНДАР
+ХОРВАТ АНДРАШ
+ХОРВАТ АНДРИЈА
+ХОРВАТ АНКА
+ХОРВАТ АНТАЛ
+ХОРВАТ АРПАД
+ХОРВАТ БЕЛА
+ХОРВАТ БИСЕРКА
+ХОРВАТ ДЕЖЕ
+ХОРВАТ ДИМИТРИЈЕ
+ХОРВАТ ЕДИТ
+ХОРВАТ ЕЛИЗАБЕТА
+ХОРВАТ ЕРЖЕБЕТ
+ХОРВАТ ЕРИКА
+ХОРВАТ ЕСТЕР
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФРАЊА
+ХОРВАТ ФРАЊА
+ХОРВАТ ФРАЊО
+ХОРВАТ ГАБОР
+ХОРВАТ ГИЗЕЛА
+ХОРВАТ ГРОЗДАНА
+ХОРВАТ ИШТВАН
+ХОРВАТ ИГОР
+ХОРВАТ ИГОР
+ХОРВАТ ИЛОНКА
+ХОРВАТ ИМРЕ
+ХОРВАТ ИМРЕ
+ХОРВАТ ИМРЕ
+ХОРВАТ ИРЕНА
+ХОРВАТ ИРЕНКА
+ХОРВАТ ИВАНКА
+ХОРВАТ ИВАН
+ХОРВАТ ЈАНОШ ДИПЛ ИНГ
+ХОРВАТ ЈАНОШ
+ХОРВАТ ЈЕЛЕНА
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОВАН
+ХОРВАТ КАЛМАН
+ХОРВАТ КАРЛО
+ХОРВАТ КАРЛО
+ХОРВАТ КАРЛО
+ХОРВАТ КАРОЉ
+ХОРВАТ КАТАЛИН
+ХОРВАТ КАТАРИНА
+ХОРВАТ КАТИЦА
+ХОРВАТ КАТИЦА
+ХОРВАТ ЛАЈОШ
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛУДВИГ
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАТО
+ХОРВАТ МИХАЉ
+ХОРВАТ-МИЛИТИЧИ КАРОЉ ДР
+ХОРВАТ МИЛКА
+ХОРВАТ МИЛКА
+ХОРВАТ МИЛОСЛАВ
+ХОРВАТ МИРКО
+ХОРВАТ ПАЈА
+ХОРВАТ ПАВЛЕ
+ХОРВАТ ПЕТАР
+ХОРВАТ РАДМИЛА
+ХОРВАТ РОЖА
+ХОРВАТ РОЗАЛИЈА
+ХОРВАТ РУЖА
+ХОРВАТ РУДОЛФ
+ХОРВАТ САМУЕЛ
+ХОРВАТ СИЛВЕСТЕР
+ХОРВАТ СЛАВКО
+ХОРВАТ СМИЉА
+ХОРВАТ СТЕВАН
+ХОРВАТ ТАМАШ
+ХОРВАТ ТЕРЕЗА
+ХОРВАТ ТЕРЕЗА
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ВАЛЕРИЈА
+ХОРВАТ ВЕРИЦА
+ХОРВАТ ВЕРОНИКА
+ХОРВАТ ВЕРОНИКА
+ХОРВАТ ВЛАДИМИР
+ХОРВАТ ЗОЛТАН
+ХОРВАТ ЗОЛТАН
+ХОРВАТИЋ МАРИЈАН
+ХОРВАТИЋ ОЛГА
+ХОРВАТИЋ СЛАВКО
+ХОРВАТИЋ ЗВОНИМИР
+ХОРВАТОВ РАСТКО
+ХОРВАТОВИЋ ЂОРЂЕ
+ХОРВАТОВИЋ КАТИЦА
+ХОРВАТОВИЋ МИРЈАНА
+ХОРВАТОВИЋ ПАВЛЕ ДР
+ХОРВАТСКИ ДУШАН
+ХОРВАТСКИ ЉУБИЦА
+ХОРВАТСКИ ЉУБИЦА
+ХОРВАТСКИ МИЛЕНКО
+ХОРВАТСКИ МИРОСЛАВ
+ХОРВАТСКИ РАДИВОЈ
+ХОРВАТСКИ РУЖИЦА
+ХОСТИЋ БИСЕРКА
+ХОСТНИК КАТИЦА
+ХОСТОНСКИ СТАНА
+ХОТ АДЕМ
+ХОУФ ЕЛВИРА
+ХОВАН МАРТИН
+ХОВАН МИРОСЛАВ
+ХОВАНЕЦ ВИКТОРИЈА
+ХРЋАН ЈОВАН
+ХРЋАН ЈОВАН
+ХРАБАР ИВО
+ХРАБОВСКИ АНТОН
+ХРАБОВСКИ АНТОН
+ХРАБОВСКИ БОЈАНА ДР
+ХРАБОВСКИ ЕДГАР ДИПЛ ОЕЦ
+ХРАБОВСКИ ИМРЕ
+ХРАБОВСКИ ЛАДИСЛАВ
+ХРАБРИЋ ЕУГЕН
+ХРАДЕЧНИ БЕЛА
+ХРАДЕЧНИ ФРАЊА
+ХРАДЕЧНИ ЈОСИП
+ХРАНИЧАК МИРКО
+ХРАНИСАВЉЕВИЋ ПАВЛЕ
+ХРАПОВИЋ ОСМАН
+ХРДЛИЧКА ДЕСАНКА
+ХРЕШЧАК ВЛАДИМИР
+ХРЕНАР ЛАУРА
+ХРГИЋ ЉУБОМИР
+ХРГИЋ МИЛАН
+ХРГИЋ ВЛАСТИМИР
+ХРИЧАНЕК МИРОСЛАВ
+ХРИЧАНЕК НЕДЕЉКА
+ХРИБЉАН АНТОН
+ХРИБОВШЕК ФРАНЦ
+ХРИЦКАНИЋ ЛУКА
+ХРИЕШИК МАРИЈА
+ХРИЈЕШИК ЈАН
+ХРИЈЕШИК ЈУРАЈ
+ХРИСТИЋ БЛАГОЈЕ
+ХРИСТИЋ ДИМИТРИЈЕ
+ХРИСТИЋ ЛЕПОСАВА
+ХРИСТИЋ ЉУБИЦА
+ХРИСТИДИС АПОСТОЛ
+ХРИСТИДИС НИКОЛА
+ХРИСТИДИС НИКОЛА
+ХРИСТОВ БРАНКО
+ХРИСТОВ МИЛОСИЈА
+ХРИСТОВ ВЕСНА
+ХРИСТОВ ЗАГОРКА
+ХРИСТОВА ЕМИЛИЈА
+ХРИСТОВСКИ ТОМА
+ХРИСТУ ТИХОМИР
+ХРКАЛОВИЋ БОШКО
+ХРНЧАР САМУЕЛ
+ХРНЧИЋ МАРГИТА
+ХРНЧИЋ МИХАД
+ХРНЧИЋ ВАХИД
+ХРНЧИАР АНА
+ХРНЧИАР ЈАНКО
+ХРНЧИАРОВА ТЕРЕЗИА
+ХРНЧЈАР АНДРЕЈ
+ХРНЧЈАР ВЛАДИМИР
+ХРЊАЧКИ ЖАРКО
+ХРЊАЧКИ ЂОРЂЕ
+ХРЊАЧКИ ЈЕЛИЦА
+ХРЊАЧКИ ЈОВАН
+ХРЊАЧКИ ЛАЗИЦА
+ХРЊАЧКИ МИЛКА
+ХРЊАЧКИ МЛАДЕН
+ХРЊАК ДАНЕ
+ХРЊАК ДРАГАН
+ХРЊАК ДУШАН
+ХРЊАК ЉИЉАНА
+ХРЊАК МАРИЈА
+ХРЊАК РАЈКО
+ХРЊАК ВЕЉКО
+ХРЊАКОВИЋ БРАНИСЛАВ
+ХРЊАКОВИЋ ИВАНА
+ХРЊАКОВИЋ ЈОВАН
+ХРЊАКОВИЋ МИРКО
+ХРЊЕЗ ОБРАД
+ХРОМИШ АМАЛИЈА
+ХРОМИШ АНА
+ХРОМИШ БАРБАРА
+ХРОМИШ БОРИСЛАВ
+ХРОМИШ ЈОАКИМ
+ХРОМИШ ЈОАКИМ
+ХРОМИШ КАТИЦА
+ХРОМИШ МАРИЈА
+ХРОМИШ МЕЛАНИЈА
+ХРОМИШ МИХАЈЛО ДИПЛ ИНГ
+ХРОМИШ МИРОСЛАВ
+ХРОМИШ МИРОСЛАВ
+ХРОМИШ НАДА
+ХРОМИШ НИКОЛА
+ХРОМИШ ПЕТАР
+ХРОМИШ СИМА
+ХРОМИШ ВЛАДИМИР
+ХРОМИШ ЗДЕНКА
+ХРОЊЕЦ ВИЋАЗОСЛАВ
+ХРСТО СЛАВКО
+ХРУБЕЊА ЂУРА
+ХРУБЕЊА ФЕБРОНА
+ХРУБЕЊА ЈАНКО
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА КАРЛО
+ХРУБЕЊА МИХАЈЛО
+ХРУБЕЊА МИРОСЛАВ
+ХРУБЕЊА ПЕТАР
+ХРУБЕЊА ЗВОНИМИР
+ХРУБИК АНДРЕЈ
+ХРУБИК ЈОВАН
+ХРУБИК КАРЛО
+ХРУБИК МИРКО
+ХРУБИК ОСКАР ДР ЛЕКАР
+ХРУБИК РОЗАЛИЈА
+ХРУСТАНОВИЋ ТУРСУН
+ХРУСТИЋ ЕМИН
+ХРУСТИЋ ЕНВЕР
+ХРУСТИЋ ЗИЈАХ
+ХРУСТИЋ ЗИЛХА
+ХУЧИЋ СТЈЕПАН
+ХУЧКА ЈОВАН
+ХУЖВАР ШАНДОР
+ХУЂЕЦ ЈОВАНКА
+ХУЂЕЦ КАРЛО
+ХУБАИ ГАБОР
+ХУБАНИЋ МИЛЕНА
+ХУБЕР БОЈАНА
+ХУБЕР ДРАГАН
+ХУБЕР ЕЛЗА
+ХУБЕР ЈОВАН ДИПЛ ИНГ
+ХУБЕР МАГДАЛЕНА
+ХУБЕР МАРИЈА
+ХУБЕР МАТИЛДА
+ХУБЕР ПЕТАР
+ХУБЕР ТИБОР
+ХУБЕРТ ЕВА
+ХУБЕРТ РАДМИЛА
+ХУБЕРТ ВЕРА
+ХУБИЈАР ЕНЕС
+ХУБИЈАР НАДА
+ХУДАК ИРИНЕЈ
+ХУДАК НАТАЛИЈА
+ХУДОМЕЛ ИВАН
+ХУЈДУР БРАНКА
+ХУМСКИ РОСА
+ХУЊАДИ АЛЕКСАНДАР
+ХУЊАДИ ИЛОНКА
+ХУЊАДИ ОЛГА
+ХУПЕРТ ЛАЈОШ
+ХУПИК МИРЈАНА
+ХУС ИМРЕ
+ХУСАГ АРПАД
+ХУСАГИЋ ЕСАД
+ХУСАГИЋ СУЛЕЈМАН
+ХУСАГИЋ ЗИНЕТА
+ХУСАК РАДОВАН
+ХУСАР ЕВА
+ХУСАР ИШТВАН
+ХУСАР ЈАНКО
+ХУСАР ЛАСЛО
+ХУСАР ТОДОР
+ХУСЕИН МЕХМЕД
+ХУСЕИНБЕГОВИЋ НАМИК
+ХУСЕИНОВИЋ АНИЦА
+ХУСЕИНОВИЋ АТИЛА
+ХУСЕИНОВИЋ АТИЛА
+ХУСЕИНОВИЋ ЕСМЕРАЛДА
+ХУСЕИНОВИЋ ИСМЕТ
+ХУСЕНБЕГОВИЋ РОЗАЛИЈА
+ХУСИЋ ЂУРЂИНКА
+ХУСИЋ ЛАДИСЛАВ
+ХУСКА ИЛОНА
+ХУСКА-РОКА МАГДА ДР
+ХУСКО МИЈО
+ХУСОВИЋ ХУСО
+ХУТАЛАРОВИЋ ЈЕЛЕНА
+ХУТАЛАРОВИЋ КОСТА
+ХУЗЈАН ТИХОМИР
+ХВАЛА МИРА
+ХВЕТКОВИЋ ЈЕЛИСАВЕТА
+ИЧАГИЋ НИКОЛА
+ИЧЕВИЋ МОМЧИЛО
+ИЧИН ЖИВКО
+ИЧИН МИЛЕНКО
+ИЧИН РАДИСЛАВ
+ИЧИН СРЕТЕН
+ИШИЋ ЕЛИЗАБЕТА
+ИШПАН ШАНДОР
+ИШПАН МАРГИТА
+ИШПАНОВИЋ ЈОЖЕФ
+ИШТОК ЈОСИП
+ИШТОК ЈОСИП
+ИШТОК МИРЈАНА
+ИШТОК СТЕВАН
+ИШТОКОВИЋ СТЕВО
+ИШТВАНОВ СТАНИСЛАВА
+ИЋИТОВИЋ МИЛАН
+ИЋУРУП ЖИВОЈИН
+ИЋУРУП МИЛОРАД
+ИЋУРУП РАДОСЛАВ ДИПЛ ИНГ
+ИЖАК ФЕРЕНЦ
+ИЖАК КАРЛО
+ИЖАК РОЗАЛИЈА
+ИЂИДОВ ОЛГА
+ИЂИДОВ ВЕЛИНКА
+ИЂОШКИ ХОРСТ
+ИЂОШКИ НИКОЛА
+ИЂУШКИ СТЕВАН
+ИБРАХИМ ДЕМИР
+ИБРАХИМАГИЋ НАДА
+ИБРАХИМИ ИБРАХИМ
+ИБРАХИМОВИЋ ДЕРВИША
+ИБРАХИМОВИЋ ЕМИЛ
+ИБРАХИМОВИЋ ХАМДИЈА
+ИБРАХИМОВИЋ МИЛАН
+ИБРАХИМОВИЋ СЛАВКО
+ИБРАХИМОВИЋ ВЕРА
+ИБРАХИМПАШИЋ АНА
+ИБРАЈТЕР ИВАН
+ИБРАЈТЕР ЉУБОМИР
+ИБРАЈТЕР МЛАДЕН
+ИБРИШЕВИЋ ЂУЛАГА
+ИБРИШЕВИЋ МИРСАД
+ИБРИШЕВИЋ СУАД
+ИБРОЧИЋ ДИМИТРИЈЕ ДИПЛ ИНГ
+ИБРОЧИЋ МАРИЈА
+ИБРОЧИЋ РАТОМИР
+ИБРОЧИЋ СЛОБОДАН
+ИБРОЧИЋ ВЕРА
+ИБРОЛИ БАН
+ИЦОСКИ ЛАЗАР
+ИДЕИ НАНДОР
+ИДЕЈИ ЈОВАН
+ИДЕЈИ ВАЛЕРИЈА
+ИДРИЗОВИЋ АХМЕТ ДР
+ИДВОРЕАН ТОДОР
+ИДВОРЕАН ВИКЕНТИЈЕ
+ИФЈУ АНГЕЛИКА
+ИФЈУ ГАБОР
+ИФКО ИЛДИКО ДИПЛ ИНГ
+ИГИЋ ЖИВАДИН
+ИГИЋ ЂУЛВАСИЈА
+ИГИЋ АНКА
+ИГИЋ ДРАГАН
+ИГИЋ ЈОВАНКА
+ИГИЋ МИЛКА
+ИГИЋ МИЛОРАД
+ИГИЋ МИРОСЛАВА
+ИГИЋ МИРОСЛАВ
+ИГИЋ НИКОЛА
+ИГИЋ ПАВЛЕ
+ИГИЋ РАЈКО
+ИГИЋ САША
+ИГИЋ СТЕВАН
+ИГИЋ СТЕВАН
+ИГИЋ СВЕТОЗАР
+ИГИЋ ТОМИСЛАВ
+ИГИЋ ВУКА
+ИГНАЦ ПЕРА
+ИГЊАЦ ВИДА
+ИГЊАТИЋ АНКА
+ИГЊАТИЋ БОРИВОЈ
+ИГЊАТИЋ ДУШАНКА
+ИГЊАТИЋ ГОЈКО
+ИГЊАТИЋ НЕВЕНКА
+ИГЊАТИЋ РАДОВАН
+ИГЊАТИЋ ВИД
+ИГЊАТИЈЕВИЋ АЛЕКСАНДАР
+ИГЊАТИЈЕВИЋ БРАНИСЛАВ
+ИГЊАТИЈЕВИЋ ДОБРИЛА
+ИГЊАТИЈЕВИЋ ДРАГОМИР
+ИГЊАТИЈЕВИЋ ДУШАН
+ИГЊАТИЈЕВИЋ ДУШАН
+ИГЊАТИЈЕВИЋ ЈОВАН
+ИГЊАТИЈЕВИЋ ЉИЉАНА
+ИГЊАТИЈЕВИЋ ЉИЉАНА
+ИГЊАТИЈЕВИЋ ЉУБОМИР
+ИГЊАТИЈЕВИЋ МАРА
+ИГЊАТИЈЕВИЋ МИЛАН
+ИГЊАТИЈЕВИЋ МИЛЕНА
+ИГЊАТИЈЕВИЋ МИРОСЛАВ
+ИГЊАТИЈЕВИЋ МИТА
+ИГЊАТИЈЕВИЋ НОВАК
+ИГЊАТИЈЕВИЋ РАДАШИН
+ИГЊАТИЈЕВИЋ РАДОВАН
+ИГЊАТИЈЕВИЋ СВЕТИСЛАВ
+ИГЊАТИЈЕВИЋ СВЕТОЗАР
+ИГЊАТИЈЕВИЋ ТОМИСЛАВ
+ИГЊАТИЈЕВИЋ ТОМИСЛАВ
+ИГЊАТИЈЕВИЋ ВОЈИСЛАВ
+ИГЊАТИЈЕВИЋ ЗОРАН
+ИГЊАТОВ-РАДОВАНОВИЋ МИЛЕНА ПРОФ
+ИГЊАТОВИЋ ЖИВКО
+ИГЊАТОВИЋ ЖИВОРАД
+ИГЊАТОВИЋ АНГЕЛА
+ИГЊАТОВИЋ АНКА
+ИГЊАТОВИЋ ДАНИЛО
+ИГЊАТОВИЋ ГОРДАНА
+ИГЊАТОВИЋ КОСАРА
+ИГЊАТОВИЋ ЉУБИША
+ИГЊАТОВИЋ МАРИЦА
+ИГЊАТОВИЋ МИЛАН
+ИГЊАТОВИЋ МИЛЕ
+ИГЊАТОВИЋ МИЛКА
+ИГЊАТОВИЋ МИЛОШ ДР ПРАВНИК
+ИГЊАТОВИЋ МИЛОШ
+ИГЊАТОВИЋ МИЛОРАД
+ИГЊАТОВИЋ МИЛУТИН
+ИГЊАТОВИЋ МИРЈАНА
+ИГЊАТОВИЋ САВА
+ИГЊАТОВИЋ СЛОБОДАН
+ИГЊАТОВИЋ ВЕРА
+ИГЊАТОВИЋ ВЕРА
+ИГЊАТОВИЋ ВИДАК
+ИГЊАТОВИЋ ВЛАДИМИР
+ИГЊАТОВИЋ ВОЈИСЛАВ
+ИГЊАТОВИЋ ВУЧКО
+ИГЊАТОВСКИ ЕФРЕМ
+ИГЊИЋ БРАНКО
+ИГЊИЋ ЈОВАН
+ИГЊИЋ СТОЈАН
+ИГЊИЋ ЗИЗА
+ИГЊИЋ ЗОРАН
+ИГЊОВИЋ МАРИЈА
+ИГРАЧКИ ЂОРЂЕ
+ИГРАЧКИ ЕТЕЛА
+ИГРАЧКИ ЈУЛИН
+ИГРАЧКИ КАРЛО
+ИГРАЧКИ ЛАСЛО
+ИГРИЋ НАДА
+ИГРИЋ СТОЈАНКА
+ИГРУТИНОВИЋ СЛОБОДАН
+ИХАС ИЛОНА
+ИЈАЧИЋ БРАНКО
+ИЈАЧИЋ МАКСИМ
+ИЈЕВЉЕВ ФЕОДОР
+ИКАНОВИЋ ДУШАН
+ИКАНОВИЋ ИВАН
+ИКАНОВИЋ ЈЕЛЕНА
+ИКАНОВИЋ НИКОЛА
+ИКЕЉИЋ ИРФАН
+ИКИЋ ДЕЈАН
+ИКИЋ ЈОВАН
+ИКИЋ МЛАДЕН
+ИКИЋ МЛАДЕН
+ИКИЋ СМИЉАНА
+ИКОДИНОВИЋ ДУШАН
+ИКОНИЋ ЂУРА
+ИКОНОВ ДЕЈАН
+ИКОТИН ЈАНОШ
+ИКОТИН ЈОВАНКА
+ИКОТИН МАТИЈА
+ИКОТИН ПАЛ
+ИКОТИН ПЕТАР
+ИКОВАЦ БОШКО
+ИКОВАЦ СТЕВАН
+ИКОВИЋ ДРАГУТИН
+ИКОВИЋ МИЛОШ
+ИКОВИЋ МИЛОСАВ
+ИКОВИЋ ВЕЛИНКА
+ИКРАШЕВ ЈЕЛИЦА
+ИКРАШЕВ ЈОВАН
+ИЛ АЛЕКСАНДАР
+ИЛ ЈЕЛИЦА
+ИЛЧИК МАРИЈА
+ИЛЕШ ФРАНЦИШКА
+ИЛЕШ ИМРЕ
+ИЛЕШ ИРЕНА
+ИЛЕШ МИХАИЛО
+ИЛЕШ МИЛАН
+ИЛЕШ МИРОСЛАВ
+ИЛИЧИЋ АНТУН
+ИЛИЧИЋ ИВАН
+ИЛИЧИЋ ЉУБИЦА
+ИЛИЧИЋ МИХАЈЛО
+ИЛИЧИЋ ПЕТАР
+ИЛИЧИЋ-ПОПИЋ ОЉА
+ИЛИЋ ЧЕДОМИР
+ИЛИЋ ЧЕДО
+ИЛИЋ ШИМУН
+ИЛИЋ ЖЕЉКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОРАД
+ИЛИЋ ЖИВОРАД
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ АЛЕКСА ДР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АНИЦА
+ИЛИЋ АНКИЦА
+ИЛИЋ АРСА
+ИЛИЋ АРСА
+ИЛИЋ БИЉАНА
+ИЛИЋ БЛАГОЈЕ
+ИЛИЋ БОШКО
+ИЛИЋ БОШКО
+ИЛИЋ БОЖИДАР
+ИЛИЋ БОБАН
+ИЛИЋ БОГДАН
+ИЛИЋ БОГОЉУБ
+ИЛИЋ БОРИСЛАВКА
+ИЛИЋ БОРИСЛАВ
+ИЛИЋ БОРИСЛАВ
+ИЛИЋ БОРИВОЈЕ
+ИЛИЋ БОРКА
+ИЛИЋ БОСИЉКА
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНКО
+ИЛИЋ БРАНКО
+ИЛИЋ БРАНКО
+ИЛИЋ БРАТИСЛАВ
+ИЛИЋ БРАТИСЛАВ
+ИЛИЋ ЦЕЦИЛИЈА
+ИЛИЋ ЦВЕТА
+ИЛИЋ ЦВИЈАН
+ИЛИЋ ДАНЕ
+ИЛИЋ ДАРИНКА
+ИЛИЋ ДЕЈАН
+ИЛИЋ ДОБРИВОЈЕ
+ИЛИЋ ДОБРОСАВ
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГИЦА
+ИЛИЋ ДРАГОЉУБ
+ИЛИЋ ДРАГО
+ИЛИЋ ДРАГУТИН
+ИЛИЋ ДУШАНКА
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШИЦА
+ИЛИЋ ДУШИЦА
+ИЛИЋ ЕДИТ
+ИЛИЋ ЕРЖИКА
+ИЛИЋ ГОРАН
+ИЛИЋ ГОРАН
+ИЛИЋ-ГРЕГОР МИРА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИРЕНА
+ИЛИЋ ИВАН ДР
+ИЛИЋ ИВАН
+ИЛИЋ ИВАН
+ИЛИЋ ЈЕЛЕНА
+ИЛИЋ ЈЕЛЕНА
+ИЛИЋ ЈЕЛЕНКО
+ИЛИЋ ЈЕЛИСАВЕТА
+ИЛИЋ ЈЕЛКА
+ИЛИЋ ЈОСИФ
+ИЛИЋ ЈОВАНКА
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВИЦА
+ИЛИЋ КОВИЉКА
+ИЛИЋ КРСТАН
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЉУБИША
+ИЛИЋ ЉУБИША
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИНКО
+ИЛИЋ ЉУБО
+ИЛИЋ МАРА
+ИЛИЋ МАРА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИНКО
+ИЛИЋ МАРКО
+ИЛИЋ МИХАЈЛО
+ИЛИЋ МИХАЈЛО
+ИЛИЋ МИЛАДИН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛА
+ИЛИЋ МИЛЕНА
+ИЛИЋ МИЛЕНА
+ИЛИЋ МИЛЕН
+ИЛИЋ МИЛЕВА
+ИЛИЋ МИЛЕ
+ИЛИЋ МИЛИЋ
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИСАВ
+ИЛИЋ МИЛИВОЈЕ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОРАД
+ИЛИЋ-МИЛУШИЋ ОЛГА
+ИЛИЋ МИЛУШКА
+ИЛИЋ МИЛУТИН
+ИЛИЋ МИОДРАГ ДР
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИРЈАНА
+ИЛИЋ МИРКО
+ИЛИЋ МИРОСЛАВА
+ИЛИЋ МИРОСЛАВ
+ИЛИЋ МИРОСЛАВ
+ИЛИЋ МИТАР
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ НАДА
+ИЛИЋ НЕЂО
+ИЛИЋ НЕБОЈША
+ИЛИЋ НЕБОЈША
+ИЛИЋ НЕНАД
+ИЛИЋ НЕВЕНКА
+ИЛИЋ НИКОЛА
+ИЛИЋ НИКОЛА
+ИЛИЋ ОБРАД
+ИЛИЋ ОБРЕН
+ИЛИЋ ОЛГА
+ИЛИЋ ОЛГА
+ИЛИЋ ОЛИВЕРА
+ИЛИЋ ОСТОЈА
+ИЛИЋ ПАВЛЕ ДИПЛ ИНГ
+ИЛИЋ ПАВЛЕ
+ИЛИЋ ПЕРО
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ-ПЕТРОВИЋ СПОМЕНКА
+ИЛИЋ ПРЕВИСЛАВ
+ИЛИЋ РАДЕ
+ИЛИЋ РАДИВОЈ
+ИЛИЋ РАДОЈКА
+ИЛИЋ РАДОМИР
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОВАН
+ИЛИЋ РАДОВАН
+ИЛИЋ РАДО
+ИЛИЋ РАНКО
+ИЛИЋ РАТКО
+ИЛИЋ РАТКО
+ИЛИЋ РУЖА
+ИЛИЋ РУЖИЦА
+ИЛИЋ САВА ДР
+ИЛИЋ САВА
+ИЛИЋ-САВИЋ ВОЈИСЛАВА
+ИЛИЋ СИМО
+ИЛИЋ СИНИША
+ИЛИЋ СЛАВИЦА
+ИЛИЋ СЛАВКО
+ИЛИЋ СЛАВКО
+ИЛИЋ СЛАВОЉУБ
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЕТЕН
+ИЛИЋ СТАНА
+ИЛИЋ СТАНИША
+ИЛИЋ СТАНИМИР
+ИЛИЋ СТАНИМИР
+ИЛИЋ СТАНКА
+ИЛИЋ СТЕВО
+ИЛИЋ СТОЈАНЧЕ
+ИЛИЋ СТОЈАН
+ИЛИЋ СТОЈАН
+ИЛИЋ СВЕТИСЛАВ ДР ЛЕКАР
+ИЛИЋ СВЕТЛАНА
+ИЛИЋ СВЕТОЗАР
+ИЛИЋ ТАТЈАНА
+ИЛИЋ ТОДЕ
+ИЛИЋ ТОДЕ
+ИЛИЋ ТОМИСЛАВ
+ИЛИЋ ВАСА
+ИЛИЋ ВЕРА
+ИЛИЋ ВИДОСАВ
+ИЛИЋ ВИНКА
+ИЛИЋ ВИНКО
+ИЛИЋ ВЛАДАН
+ИЛИЋ ВЛАДАН
+ИЛИЋ ВЛАДИМИР ДР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАТКА
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ЗДРАВКО
+ИЛИЋ ЗЛАТКО
+ИЛИЋ ЗЛАТКО
+ИЛИЋ ЗОРАН
+ИЛИЋ ЗОРИЦА
+ИЛИБАШИЋ ДАРИНКА
+ИЛИБАШИЋ НИКОЛА
+ИЛИБАШИЋ ОСТОЈА
+ИЛИБАШИЋ СТЕВАН
+ИЛИБАШИЋ СТЕВО
+ИЛИБАШИЋ ЗЛАТА
+ИЛИЕВСКИ АЛЕКСАНДАР
+ИЛИЈЋ СМИЉА
+ИЛИЈЋ СВЕТОЛИК
+ИЛИЈАШЕВ СОФИЈА
+ИЛИЈАШЕВИЋ АЛЕКСАНДАР
+ИЛИЈАШЕВИЋ ДАРА
+ИЛИЈАШЕВИЋ ЉУБИША
+ИЛИЈАШЕВИЋ СВЕТИСЛАВ
+ИЛИЈАЗИ АБДИСАМИ
+ИЛИЈАЗИ ДАУТ
+ИЛИЈАЗИ ХАФИЗА
+ИЛИЈАЗИ ЈАЛЧИН
+ИЛИЈАЗИ ЗАЈНЕЛ
+ИЛИЈАЗОВИЋ ВЕЏРИЈА
+ИЛИЈЕВ ИВАН
+ИЛИЈЕВ ИВАН
+ИЛИЈЕВ ЉУБЕН
+ИЛИЈЕВИЋ ДУШАН ДИПЛ ИНГ
+ИЛИЈЕВИЋ НИКОЛА
+ИЛИЈЕВИЋ РАДЕ
+ИЛИЈЕВСКИ ЋИРО
+ИЛИЈЕВСКИ ЂОРЂЕ
+ИЛИЈЕВСКИ ДАНИЛО
+ИЛИЈИН ЖАРКО
+ИЛИЈИН ЖИВАН
+ИЛИЈИН ДУШАН
+ИЛИЈИН ЈЕЛЕНА
+ИЛИЈИН ЈОВАН
+ИЛИЈИН ЈОВАН
+ИЛИЈИН МИЛАН
+ИЛИЈИН МИЛИВОЈ
+ИЛИЈИН МИЛИВОЈ
+ИЛИЈИН МИЛОШ
+ИЛИЈИН МИРЈАНА
+ИЛИЈИН СТЕВАН
+ИЛИЈИН СВЕТОЗАР
+ИЛИЈИН ТАНАСИЈЕ
+ИЛИЈИН УРОШ
+ИЛИЈИН ЗОРКА
+ИЛИН ЖАРКО
+ИЛИН АЛЕКСАНДАР
+ИЛИН АНКИЦА
+ИЛИН БОРИСЛАВ
+ИЛИН БОРКА
+ИЛИН ДРАГИЊА
+ИЛИН ДРАГИЊА
+ИЛИН ДУШАН
+ИЛИН ДУШАН
+ИЛИН ИВАН
+ИЛИН ЉУБИНКО
+ИЛИН ЉУБОМИР
+ИЛИН МИЛАН
+ИЛИН МИЛЕНКО
+ИЛИН МЛАДЕН
+ИЛИН НЕДЕЉКО
+ИЛИН НИКОЛА
+ИЛИН РАДЕ
+ИЛИН СНЕЖАНА
+ИЛИН СОФИЈА
+ИЛИН ТИМА
+ИЛИН ЗОРА
+ИЛИНЧИЋ МОМИР
+ИЛИНЧИЋ НЕБОЈША
+ИЉАЗИ ЏАМИЉ
+ИЛКИЋ ЈЕЛА
+ИЛКИЋ МАРИЦА
+ИЛКИЋ МИЛАН
+ИЛКИЋ МИРА
+ИЛКИЋ НАДА
+ИЛКИЋ НЕБОЈША
+ИЛКИЋ НЕНАД
+ИЛКИЋ РАДМИЛА
+ИЛКИЋ СТЕВИЦА
+ИЛКИЋ ЗЛАТОЈА
+ИЛКИН РАДИВОЈ
+ИЛОВАЧА МАРКО
+ИЛОВСКИ АЛЕКСАНДАР
+ИЛОВСКИ ЗЛАТА
+ИМШИРОВИЋ КОЛОМАН
+ИМШИРОВИЋ МИРОСЛАВ
+ИМШИРОВИЋ СМАЈИЛ
+ИМАМОВИЋ ЈАСМИНА
+ИМБРА ЖИВОЈИН
+ИМБРИШИЋ БЕХИЈА
+ИМБРИШИЋ ИВАН
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ СПАСОЈА
+ИМБРОНОВИЋ ЂОРЂЕ
+ИМБРОНОВИЋ ДУШАН
+ИМБРОНОВИЋ ЈУЛКА
+ИМРЕШИ ИВАН
+ИНЂИЋ ДРАГИЦА
+ИНЂИЋ ДУШАН
+ИНЂИЋ ЈЕЛЕНА
+ИНЂИЋ ЈЕЛИЦА
+ИНЂИЋ ТЕРЕЗ
+ИНЂИЋ ВОЈИН
+ИНЂИН ЖИВКО
+ИНЂИН ЂУРА
+ИНЂИН ДУШАН
+ИНЂИН ВЛАДИМИР
+ИНИЋ БРАНКО
+ИНИЋ ДРАГАН
+ИНИЋ ДУШАН
+ИНИЋ ЈЕЛЕНА
+ИНИЋ КРСТА
+ИНИЋ ЉУБИЦА
+ИНИЋ МИЛАН ДР
+ИНИЋ ТИНДА
+ИНИЋ ВАСО
+ИЊАЦ БОГДАН
+ИЊАЦ ДРАГИЦА
+ИЊАЦ ЈОВАН
+ИЊАЦ ЉУБИЦА
+ИЊАЦ МИРКО
+ИЊАЦ НИКОЛА
+ИЊАЦ РАДА
+ИЊАЦ РАДЕ
+ИЊАЦ РАДОМИР
+ИЊАЦ СЛОБОДАН
+ИЊАЦ ВЛАДИМИР
+ИНОВАН ДОБРИВОЈЕ
+ИПАЧ КАТАЛИНА
+ИПАЧ КАТИЦА
+ИПИЋ ЗОРА
+ИРШАИ ИВАН
+ИРШАЈИ ЈОВАН
+ИРШАЈИ СТЕВА
+ИРИЋ БОЖО
+ИРИЋ ГАШПАР
+ИРМЕШ МАРИА
+ИРМЕЊИ ЈОЖЕФ
+ИРМЕЊИ ЈОСИП
+ИРМЕЊИ МАРГИТ
+ИСАИЛОВИЋ ЉУБИША
+ИСАИЛОВИЋ МИЛАНКА
+ИСАИЛОВИЋ МИРКО
+ИСАИЛОВИЋ ВЕЛИСАВ
+ИСАЈЕВ МАРИЈА
+ИСАЈЕВИЋ ЛАЗАР
+ИСАЈЕВИЋ МИЛОШ
+ИСАЈЕВИЋ ЗДРАВКО
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВИЋ АЛЕКСАНДАР
+ИСАЈЛОВИЋ АЛЕКСАНДАР
+ИСАЈЛОВИЋ БРАНКО
+ИСАЈЛОВИЋ ДУШАН
+ИСАЈЛОВИЋ ФЕДОР
+ИСАК ИЛИЈА
+ИСАК СТАНКО
+ИСАКОВ ЖАРКО
+ИСАКОВ ЖИВОЈИН
+ИСАКОВ АЦКО
+ИСАКОВ БОРИСЛАВ
+ИСАКОВ ЦВЕТКО
+ИСАКОВ ДИМИТРИЈЕ
+ИСАКОВ ДРАГАНА
+ИСАКОВ ДРАГОЉУБ
+ИСАКОВ ДУШИЦА
+ИСАКОВ ЕСТЕР
+ИСАКОВ ИВАН
+ИСАКОВ ЈЕЛИЦА
+ИСАКОВ ЈОВАНКА
+ИСАКОВ КАТИЦА
+ИСАКОВ ЛЕПОСАВА
+ИСАКОВ ЉУБИЦА
+ИСАКОВ ЉУБИЦА
+ИСАКОВ МИЛАН
+ИСАКОВ МИЛАН
+ИСАКОВ МИЛЕНКО
+ИСАКОВ МИЛИВОЈ
+ИСАКОВ МИЛОРАД
+ИСАКОВ МИЛУТИН
+ИСАКОВ МИОДРАГ
+ИСАКОВ МИРОСЛАВ
+ИСАКОВ НЕНАД
+ИСАКОВ ПЕТАР
+ИСАКОВ РАДЕ
+ИСАКОВ РАДИЦА
+ИСАКОВ РАДИНКА
+ИСАКОВ РАДИВОЈ
+ИСАКОВ РАДМИЛА
+ИСАКОВ РАДОМИР
+ИСАКОВ РАДОВАН
+ИСАКОВ РУЖИЦА
+ИСАКОВ САВА
+ИСАКОВ СЛАВКО
+ИСАКОВ СМИЉКА
+ИСАКОВ СРЕДОЈЕ
+ИСАКОВ СТЕВАН
+ИСАКОВ СТЕВАН
+ИСАКОВ ТОДОР
+ИСАКОВ ТОМИСЛАВ
+ИСАКОВ ВОЈИСЛАВ
+ИСАКОВ ЗОРИЦА
+ИСАКОВИЋ ЂУРА ДИПЛ ИНГ
+ИСАКОВИЋ АНА
+ИСАКОВИЋ МАРКО
+ИСАКОВИЋ СТЕВАН
+ИСАКОВИЋ ЗОРАН
+ИСАКОВСКИ ЈАКОВ
+ИСАКОВСКИ СЛОБОДАН ДР
+ИСАНОВИЋ АНА
+ИСИЈАНОВ СЛОБОДАНКА
+ИСИЈАНОВ ВЛАДИМИР
+ИСКАЛОВ МАРИЈАНА
+ИСКИЋ МИЛАДИН
+ИСКРИН БРАНКО
+ИСКРИН ЈЕЛЕНА
+ИСЛАМБАШИЋ ЉИЉАНА
+ИСЛАМИ АБИБ
+ИСЛАМОВИЋ МАХМУД
+ИСЛАМОВИЋ НАДА
+ИСМАИЛИ ШАЋИР
+ИТАЛО ЕВИЦА
+ИТАЛО МАРКО
+ИТЕБЕЈАЦ ЗОРА
+ИВАЧКОВИЋ БРАНИСЛАВ
+ИВАЧКОВИЋ МАНОЈЛО
+ИВАЧКОВИЋ НАДА
+ИВАШЧЕНКО АЛЕКСАНДАР
+ИВАШЧЕНКО АЛЕКСАНДАР
+ИВАШЧЕНКО КАТИЦА
+ИВАШКУ-МИЛОВАНОВИЋ ФЕЛИЧИА
+ИВАК ЈАН
+ИВАН ШАНДОР
+ИВАН ЂУРА
+ИВАН АТИЛА
+ИВАН ЦЕЦИЛИЈА
+ИВАН ГАБОР
+ИВАН ЈОЖЕФ
+ИВАН ЈОВАН
+ИВАН КАТАЛИН
+ИВАН МИХАЈЛО
+ИВАН СИЛВЕСТЕР
+ИВАН ВЕРОНА
+ИВАНЧЕВ ИРИНА
+ИВАНЧЕВ ВЛАДИМИР
+ИВАНЧЕВИЋ ЖАРКО ДР
+ИВАНЧЕВИЋ БОШКО
+ИВАНЧЕВИЋ БРАНКА
+ИВАНЧЕВИЋ ДАРКО
+ИВАНЧЕВИЋ ДИМИТРИЈЕ
+ИВАНЧЕВИЋ ДРАГОСЛАВА
+ИВАНЧЕВИЋ ДУШАН
+ИВАНЧЕВИЋ ГАВРА
+ИВАНЧЕВИЋ ЈОВАН
+ИВАНЧЕВИЋ ЈОВАН
+ИВАНЧЕВИЋ МАРИЦА
+ИВАНЧЕВИЋ МИЛАН
+ИВАНЧЕВИЋ МИЛАН
+ИВАНЧЕВИЋ МИЛЕНКО
+ИВАНЧЕВИЋ МИЛИВОЈЕ ПРОФЕСОР
+ИВАНЧЕВИЋ ОЛИВЕРА
+ИВАНЧЕВИЋ ПЕТАР
+ИВАНЧЕВИЋ ПЕТАР
+ИВАНЧЕВИЋ РАДИВОЈ ДИПЛ ИНГ
+ИВАНЧЕВИЋ РАДМИЛА
+ИВАНЧЕВИЋ СИНИША
+ИВАНЧЕВИЋ СТАНКО
+ИВАНЧЕВИЋ СВЕТОЗАР
+ИВАНЧЕВИЋ ВЛАДА
+ИВАНЧЕВИЋ ВЛАДИМИР ДР
+ИВАНЧИЋ АНТЕ
+ИВАНЧИЋ БРАНКО
+ИВАНЧИЋ ДРАГАН
+ИВАНЧИЋ ЈОСИП
+ИВАНЧИЋ ЈУЛИЈАНА
+ИВАНЧИЋ МАРИЈА
+ИВАНЧИЋ МИЛАН
+ИВАНЧИЋ ОЛГА
+ИВАНЧИЋ СТАНИМИР
+ИВАНЧИЋ СТАНИСЛАВ
+ИВАНЧИЋ СТЕВАН
+ИВАНЧИЋ СТЕВАН
+ИВАНЧИЋ ВЛАДИМИР
+ИВАНЧИН НИКОЛА
+ИВАНЧИН ОЉЕГ
+ИВАНЧУК ПАВАО
+ИВАНДИЋ ИВИЦА
+ИВАНДИЋ РАДМИЛА
+ИВАНЕЖА АНДРИЈА
+ИВАНЕК ЂУРА
+ИВАНЕК ДУШКО
+ИВАНЕК ВИКТОРИЈА
+ИВАНИ ХИЉА
+ИВАНИШ КОВИЉКА
+ИВАНИШ СЛАВКО
+ИВАНИШ СЛАВКО
+ИВАНИШЕВИЋ ЂУРО
+ИВАНИШЕВИЋ ДУШАН
+ИВАНИШЕВИЋ ЕВИЦА
+ИВАНИШЕВИЋ ИЛИЈА
+ИВАНИШЕВИЋ ЈЕЛИЦА
+ИВАНИШЕВИЋ МИХАИЛО
+ИВАНИШЕВИЋ МИЛАН
+ИВАНИШЕВИЋ МИРОСЛАВ
+ИВАНИШЕВИЋ МИРОСЛАВ
+ИВАНИШЕВИЋ МИТАР
+ИВАНИШЕВИЋ НАДА
+ИВАНИШЕВИЋ НАДА
+ИВАНИШЕВИЋ НЕЂА
+ИВАНИШЕВИЋ НЕМАЊА
+ИВАНИШЕВИЋ ОЛГА
+ИВАНИШЕВИЋ ПЕТАР
+ИВАНИШЕВИЋ РАЈКО
+ИВАНИШЕВИЋ СВЕТОЗАР
+ИВАНИШЕВИЋ ТИНА
+ИВАНИШЕВИЋ ВУКИЦА
+ИВАНИЋ ЧЕДОМИР
+ИВАНИЋ ЂОРЂЕ
+ИВАНИЋ АЛБЕРТ
+ИВАНИЋ АНА
+ИВАНИЋ БРАНКО
+ИВАНИЋ ДРАГАНА
+ИВАНИЋ ДРАГАН
+ИВАНИЋ ДРАГИЦА
+ИВАНИЋ ДУШАН
+ИВАНИЋ ДУШАН
+ИВАНИЋ ГРОЗДАНА
+ИВАНИЋ ИВАНА
+ИВАНИЋ ИВАН
+ИВАНИЋ ИВАН
+ИВАНИЋ ИВАН
+ИВАНИЋ ЈОВО
+ИВАНИЋ МАРИНА
+ИВАНИЋ МИЛАН
+ИВАНИЋ МИЛАН
+ИВАНИЋ МИЛАН
+ИВАНИЋ НЕВЕНКА
+ИВАНИЋ ПЕРСИДА
+ИВАНИЋ ПЕТАР
+ИВАНИЋ СНЕЖАНА
+ИВАНИЋ СТЕВАН
+ИВАНИЋ ЗЛАТОЈЕ
+ИВАЊИ СИНИША
+ИВАЊИ ВЕРОНИКА
+ИВАНКОВИЋ ЧЕДОМИР
+ИВАНКОВИЋ ЂОРЂЕ
+ИВАНКОВИЋ БОЖАНА
+ИВАНКОВИЋ БОЖО
+ИВАНКОВИЋ ЈАНКО
+ИВАНКОВИЋ МАРИНКО
+ИВАНКОВИЋ МИЛЕНКО
+ИВАНКОВИЋ МИЛЕ
+ИВАНКОВИЋ МИЛКА
+ИВАНКОВИЋ МИЛКА
+ИВАНКОВИЋ НЕНАД
+ИВАНКОВИЋ НОВО
+ИВАНКОВИЋ РАДЕ
+ИВАНКОВИЋ РАДЕ
+ИВАНКОВИЋ САВО
+ИВАНКОВИЋ СЛАВКО
+ИВАНКОВИЋ ТИХОМИР
+ИВАНКОВИЋ ЗДРАВКО
+ИВАНОВ ЖИВАН
+ИВАНОВ ЂОКА
+ИВАНОВ ЂОРЂЕ
+ИВАНОВ ЂУРЂЕВКА
+ИВАНОВ ЂУРЂИНКА
+ИВАНОВ БОРИС
+ИВАНОВ ДИМИТАР
+ИВАНОВ ДРАГИЦА
+ИВАНОВ ДРАГОСЛАВА
+ИВАНОВ ЕМИЛИЈА
+ИВАНОВ ЕВИЦА
+ИВАНОВ ГАВРА
+ИВАНОВ ЈУЛКА
+ИВАНОВ КАТИЦА
+ИВАНОВ ЉУБОМИР
+ИВАНОВ МАРИЦА
+ИВАНОВ МАРИЈА
+ИВАНОВ МИША
+ИВАНОВ МИЛЕНКО
+ИВАНОВ МИЛЕ
+ИВАНОВ МИЛОРАД
+ИВАНОВ МИТА
+ИВАНОВ НИКОЛА
+ИВАНОВ ОЛИВЕРА
+ИВАНОВ ПЕТАР
+ИВАНОВ СЕРГИЈЕ
+ИВАНОВ СЛАВКО
+ИВАНОВ ВЕРА
+ИВАНОВ ЗДРАВКО
+ИВАНОВ ЗОРА
+ИВАНОВ ЗОРИЦА
+ИВАНОВИЋ ЧЕДОМИР
+ИВАНОВИЋ ЖИКА
+ИВАНОВИЋ ЖИВОРАД
+ИВАНОВИЋ ЂОРЂЕ
+ИВАНОВИЋ АЛЕКСА
+ИВАНОВИЋ АНГЕЛИНА
+ИВАНОВИЋ БОЖА
+ИВАНОВИЋ БОГДАН
+ИВАНОВИЋ БРАНИСЛАВА
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ ЦВЕЈА
+ИВАНОВИЋ ДЕСАНКА
+ИВАНОВИЋ ДЕСА
+ИВАНОВИЋ ДИМИТРИЈЕ
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГОЉУБ
+ИВАНОВИЋ ДРАГОЉУБ
+ИВАНОВИЋ ДУШАНКА
+ИВАНОВИЋ ДУШАН
+ИВАНОВИЋ ФРАЊА
+ИВАНОВИЋ ИЛИЈА
+ИВАНОВИЋ ИЛИЈА
+ИВАНОВИЋ ИВАН ДР
+ИВАНОВИЋ ЈАНОШ
+ИВАНОВИЋ ЈЕЛЕНА
+ИВАНОВИЋ ЈОРДАН
+ИВАНОВИЋ ЈОВАН
+ИВАНОВИЋ КОВИНКА
+ИВАНОВИЋ КРСТОМИР
+ИВАНОВИЋ КСЕНИЈА
+ИВАНОВИЋ ЉУБИЦА
+ИВАНОВИЋ ЉУБИСАВ
+ИВАНОВИЋ ЉУБОМИР
+ИВАНОВИЋ ЉУДЕВИТ
+ИВАНОВИЋ МАРИЈА
+ИВАНОВИЋ МАРИНКО
+ИВАНОВИЋ МАРКО
+ИВАНОВИЋ МИЛАН СУДИЈА
+ИВАНОВИЋ МИЛЕНКО
+ИВАНОВИЋ МИЛЕНКО
+ИВАНОВИЋ МИЛЕТА
+ИВАНОВИЋ МИЛЕВА
+ИВАНОВИЋ МИЛИЦА
+ИВАНОВИЋ МИЛИЈА
+ИВАНОВИЋ МИЛКА
+ИВАНОВИЋ МИЛКО
+ИВАНОВИЋ МИЛОРАД
+ИВАНОВИЋ МИЛУН
+ИВАНОВИЋ МИЛУТИН
+ИВАНОВИЋ МИОДРАГ
+ИВАНОВИЋ МИРА
+ИВАНОВИЋ МИРЈАНА
+ИВАНОВИЋ МИРКО
+ИВАНОВИЋ МИРОСЛАВ
+ИВАНОВИЋ МИРОСЛАВ
+ИВАНОВИЋ МЛАДЕН
+ИВАНОВИЋ НЕБОЈША
+ИВАНОВИЋ НЕГОВАН
+ИВАНОВИЋ НИКОЛА
+ИВАНОВИЋ ОБРАД
+ИВАНОВИЋ ПЕТАР
+ИВАНОВИЋ ПЕТРА
+ИВАНОВИЋ РАШКО
+ИВАНОВИЋ РАДМИЛА
+ИВАНОВИЋ РАДОМИР
+ИВАНОВИЋ РАДОСЛАВ
+ИВАНОВИЋ РАДОВАН
+ИВАНОВИЋ СЕЛИМИР
+ИВАНОВИЋ СИМО
+ИВАНОВИЋ СЛОБОДАНКА
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СТАМЕН
+ИВАНОВИЋ СТАНИСЛАВА
+ИВАНОВИЋ СТАНКА
+ИВАНОВИЋ СТЕВАН
+ИВАНОВИЋ СТЕВАН
+ИВАНОВИЋ СТОЈАН
+ИВАНОВИЋ ВАСИЛИЈЕ
+ИВАНОВИЋ ВЕЛИБОР
+ИВАНОВИЋ ВИТОМИР
+ИВАНОВИЋ ВЛАДА
+ИВАНОВИЋ ВЛАДА
+ИВАНОВИЋ ВОЈИСЛАВ
+ИВАНОВИЋ ВОЈИСЛАВ
+ИВАНОВИЋ ВУКОСАВА
+ИВАНОВИЋ ЗОРАН ДИПЛ ИНГ
+ИВАНОВИЋ ЗОРА
+ИВАНОВСКИ ЂОРЂЕ
+ИВАНОВСКИ БЛАГОЈЕ
+ИВАНОВСКИ ИЛИЈА
+ИВАНОВСКИ СТАНА
+ИВАТОВИЋ БРАНКО
+ИВЕГЕШ АНА
+ИВЕГЕШ ИШТВАН ДИПЛ ИНГ
+ИВЕГЕШ ЛАСЛО
+ИВЕК ВЛАДИМИР
+ИВЕТИЋ БРАНИСЛАВА
+ИВЕТИЋ БРАНИСЛАВА
+ИВЕТИЋ ДИМИТРИЈЕ
+ИВЕТИЋ ДРАГАН
+ИВЕТИЋ ЛАЗА
+ИВЕТИЋ ЉИЉАНА
+ИВЕТИЋ МИЛОЈКО
+ИВЕТИЋ РАДЕ ДР
+ИВЕТИЋ РАДЕ ДР
+ИВЕТИЋ РАДОВАН
+ИВЕТИЋ ВАСА
+ИВЕТИЋ ВЕСНА
+ИВЕЗИЋ АЛЕКСАНДАР
+ИВЕЗИЋ ДРАГО
+ИВЕЗИЋ ГОЈКО
+ИВЕЗИЋ МАРКО ДР
+ИВЕЗИЋ МИЛЕ
+ИВЕЗИЋ ЗОРАН
+ИВЕЗИЋ ЗВОНКО
+ИВИЧИЋ МИРА
+ИВИЧИЋ НАДА
+ИВИЧИЋ-ТОМИЋ БИЉАНА
+ИВИЋ БЛАГОМИР
+ИВИЋ ДЕСАНКА
+ИВИЋ ЈУЛИЈА
+ИВИЋ МЕЛИТА
+ИВИЋ МИРКО МР ПХ
+ИВИЋ ПЕТАР ДИПЛ ОЕЦ
+ИВИЋ РАДЕ
+ИВИЋ СТОЈАН
+ИВИЋ ВАСИЛИЈЕ
+ИВИЋ ВАСО
+ИВИЋ ВОЈИМИР
+ИВИЋ ЗЛАТКО
+ИВКОВ ЧЕДОМИР
+ИВКОВ ЖИВКА
+ИВКОВ ЂОРЂЕ
+ИВКОВ БОШКО
+ИВКОВ БОРИВОЈ
+ИВКОВ ДАНИЛО
+ИВКОВ ДОБРИВОЈ
+ИВКОВ ДУШАН
+ИВКОВ ИСА
+ИВКОВ ИВАН
+ИВКОВ ЈЕЛЕНА
+ИВКОВ ЈЕЛЕНА
+ИВКОВ КАТИЦА
+ИВКОВ КАТИЦА
+ИВКОВ КАТИЦА
+ИВКОВ МИЛЕНКО
+ИВКОВ МИЛИЦА
+ИВКОВ МИЛОВАН
+ИВКОВ ОЛГИЦА
+ИВКОВ ПЕТАР
+ИВКОВ РАДОСЛАВ
+ИВКОВ РАДОВАН
+ИВКОВ САВА
+ИВКОВ СЕКУЛА
+ИВКОВ СЛАВКО
+ИВКОВ СЛОБОДАН
+ИВКОВ СЛОБОДАН
+ИВКОВ СТАНА
+ИВКОВ СТАНИСЛАВА
+ИВКОВ СТЕВАН
+ИВКОВ СТЕВАН
+ИВКОВ СТЕВАН
+ИВКОВ УРОШ
+ИВКОВ ВОЈИСЛАВ
+ИВКОВИЋ ЂУРО
+ИВКОВИЋ АНТУН
+ИВКОВИЋ АРСА
+ИВКОВИЋ БОЖА
+ИВКОВИЋ БОГДАН
+ИВКОВИЋ БОРИСЛАВ
+ИВКОВИЋ БОРИСЛАВ
+ИВКОВИЋ ДЕЈАН
+ИВКОВИЋ ДИВНА
+ИВКОВИЋ ДРАГАН ДИПЛ ИНГ
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ЕСТЕРА
+ИВКОВИЋ ГУСТАВ ДР
+ИВКОВИЋ-ИВАНДЕКИЋ ДАНИЦА
+ИВКОВИЋ ЈЕЛЕНА
+ИВКОВИЋ ЈОВАН
+ИВКОВИЋ КОВИЉКА
+ИВКОВИЋ-ЛАЗАР ТАТЈАНА ДР
+ИВКОВИЋ ЛУКА
+ИВКОВИЋ МИХАЈЛО
+ИВКОВИЋ МИЛАНКА
+ИВКОВИЋ МИЛАН
+ИВКОВИЋ МИЛЕНТИЈЕ
+ИВКОВИЋ МИЛЕВА
+ИВКОВИЋ МИЛЕ
+ИВКОВИЋ МИЛИЦА
+ИВКОВИЋ МИЛОЉУБ ДИПЛ ИНГ
+ИВКОВИЋ МИЛОРАД
+ИВКОВИЋ МИЛУТИН
+ИВКОВИЋ МИРЈАНА
+ИВКОВИЋ МЛАДЕН
+ИВКОВИЋ НАТАША
+ИВКОВИЋ НАТАША
+ИВКОВИЋ НЕБОЈША
+ИВКОВИЋ НИКОЛА
+ИВКОВИЋ НИКОЛА
+ИВКОВИЋ ПЕТАР
+ИВКОВИЋ ПРЕДРАГ
+ИВКОВИЋ РАДИСАВ
+ИВКОВИЋ РАНКО
+ИВКОВИЋ СТЕВАН
+ИВКОВИЋ СТОЈАН
+ИВКОВИЋ ВЕРА
+ИВКОВИЋ ВЕРА
+ИВКОВИЋ ВЕРИЦА
+ИВКОВИЋ ВЛАДИМИР
+ИВКОВИЋ ВЛАЈКО
+ИВКОВИЋ ЗАГОРКА
+ИВКОВИЋ ЗДРАВКО
+ИВКОВИЋ ЗОРИЦА
+ИВОШ АЛЕКСАНДАР
+ИВОШ РОДОЉУБ
+ИВОШ ВОЈИСЛАВ
+ИВОШЕВ АЛЕКСАНДАР
+ИВОШЕВ ДУШАН
+ИВОШЕВ ИЛИЈА
+ИВОШЕВ КАТАРИНА
+ИВОШЕВ КОСТА
+ИВОШЕВ МАРКО
+ИВОШЕВ СЛАВКО
+ИВОШЕВ ВОЈИСЛАВ
+ИВОШЕВИЋ ЂУРО
+ИВОШЕВИЋ АЛЕКСАНДРА
+ИВОШЕВИЋ ДАНИЦА
+ИВОШЕВИЋ ГОЈКО
+ИВОШЕВИЋ МИЛАН
+ИВОШЕВИЋ МИЛЕНКО
+ИВОШЕВИЋ САВА
+ИВОШЕВИЋ СЛОБОДАН
+ИВОШЕВИЋ ЗОРАН
+ИВОВИЋ ЉУБИША
+ИВОВИЋ ПЕТАР
+ИЗБРАДИЋ СТЕВАН
+ИЗГАРЈАН МИЛИВОЈ
+ЈАШЧЕНКОВ СТАНА
+ЈАШАР ХАСАН
+ЈАШАРАГИЋ ИВАНКА
+ЈАШАРАГИЋ ЗИЈО
+ЈАШАРЕВИЋ ХУСЕИН
+ЈАШАРЕВИЋ МУХАРЕМ
+ЈАШАРЕВИЋ РАМО
+ЈАШАРЕВИЋ ВОЈИСЛАВ
+ЈАШАРИ ЏАФЕР
+ЈАШАРОВ ШАИП
+ЈАШИЋ ДЕСАНКА
+ЈАШИЋ СИНИША
+ЈАШИНСКИ РУЖА
+ЈАШО АНА
+ЈАШО ЈОЖЕФ ДР
+ЈАШО МИЛОСАВ
+ЈАШО МИРОСЛАВА
+ЈАШОВИЋ ГОЈКО
+ЈАЋЕВИЋ МИОДРАГ
+ЈАЋИМОВИЋ АЛЕКСАНДАР ЛЕКАР
+ЈАЋИМОВИЋ БОЈИН
+ЈАЋИМОВИЋ ЈОВА
+ЈАЋИМОВИЋ МИЛЕНКО
+ЈАЋИМОВИЋ МИЛОЈКО
+ЈАЋИМОВИЋ МИРЈАНА
+ЈАЋИМОВИЋ ПЕТАР
+ЈАЋИМОВИЋ СТЕВО
+ЈАЋИМОВИЋ ВОЈИСЛАВ
+ЈАЋИМОВСКИ МОЈСЕ
+ЈАБЛАНОВ ЂУКА
+ЈАБЛАНОВ ДРАГИЦА
+ЈАБЛАНОВ ИГЊАТИЈЕ
+ЈАБЛАНОВ ЈЕЛЕНА
+ЈАБЛАНОВ ЉУБОМИР
+ЈАБЛАНОВ МИЛОРАД ДИПЛ ИНГ
+ЈАБЛАНОВ ЗОРА
+ЈАБЛАНОВ ЗОРА
+ЈАБЛАНОВИЋ ДЕСАНКА
+ЈАБЛАНОВИЋ РАТКО
+ЈАЦАНОВИЋ ЖИВКА
+ЈАЦАНОВИЋ ГАБРИЈЕЛА
+ЈАЦАНОВИЋ ВЛАДИМИР
+ЈАЦИШИН АНКА
+ЈАЦИЋ ДАРИНКА
+ЈАЦИЋ ДРАГАН
+ЈАГЕР АНА
+ЈАГЕР МАРИН
+ЈАГЕР МИХАЈЛО
+ЈАГЕР ПАВАО
+ЈАГЕТИЋ АЛЕКСАНДАР
+ЈАГЕТИЋ МИЛОШ
+ЈАГЕТИЋ СТЕВАН
+ЈАГЕТИЋ ВЕЛИМИР
+ЈАГЕТИЋ ВОЈИСЛАВ
+ЈАГИЋ СЛАВИЦА
+ЈАГЛИЦА БРАНКО
+ЈАГЛИЦА СЛОБОДАН
+ЈАГЊИЋ ДРАГАН
+ЈАГОДИЋ АНЂЕЛКО
+ЈАГОДИЋ ДУШАН
+ЈАГОДИЋ МИЛИЦА
+ЈАГОДИЋ МИРОСЛАВ
+ЈАГОДИЋ ПЕТАР
+ЈАГОДИЋ РАНКО
+ЈАГОДИЋ ВЕЉКО
+ЈАГОДИЋ ВЛАДО
+ЈАГУШТ-АККАД ЛАДА
+ЈАХЈА РЕШАД
+ЈАХУРА ВУКАШИН
+ЈАЈЧАНИН БОЖО
+ЈАЈЧЕВИЋ АНГЕЛА
+ЈАЈАГИН РАДОВАН
+ЈАЈАГИН СПАСОЈЕ
+ЈАЈАГИН ЗОРИЦА
+ЈАЈИЋ ЂОРЂЕ ДР
+ЈАЈИЋ ЂОРЂЕ
+ЈАЈИЋ ДРАГАН
+ЈАЈИЋ ИЛИЈА
+ЈАЈИЋ ИВАНКА
+ЈАЈИЋ ЛАЗАР
+ЈАЈИЋ ЛЕНКА
+ЈАЈИЋ МИЛЕНА
+ЈАЈИЋ МИЛИЦА
+ЈАЈИЋ НИКОЛА
+ЈАЈИЋ САВА
+ЈАЈИЋ СТЕВАН
+ЈАЈИЋ СВЕТЛАНА
+ЈАЈИН ЛАДИСЛАВ
+ЈАЈИН МИРЈАНА
+ЈАЈИН ЗЛАТКО
+ЈАКША ПИРОШКА
+ЈАКШЕВАЦ ДРАГО
+ЈАКШИЋ ЖАРКО
+ЈАКШИЋ ЂОРЂЕ
+ЈАКШИЋ ЂОРЂЕ
+ЈАКШИЋ ЂУРА
+ЈАКШИЋ АНА
+ЈАКШИЋ БОГДАН
+ЈАКШИЋ БОГДАН
+ЈАКШИЋ БОЈАН
+ЈАКШИЋ БРАНКО
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДЕЈАН
+ЈАКШИЋ ДМИТАР
+ЈАКШИЋ ДРАГАН
+ЈАКШИЋ ДУШАНКА
+ЈАКШИЋ ДУШАНКА
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШКО
+ЈАКШИЋ ЕМИЛ
+ЈАКШИЋ ИЛИЈА
+ЈАКШИЋ ИЛИЈА
+ЈАКШИЋ ИВИЦА
+ЈАКШИЋ ИВИЦА
+ЈАКШИЋ ЈАДРАНКА
+ЈАКШИЋ ЈАСМИНКА
+ЈАКШИЋ ЈЕЛЕНА
+ЈАКШИЋ ЈОВАНКА
+ЈАКШИЋ ЈОВАН
+ЈАКШИЋ ЈОВАН
+ЈАКШИЋ КАТИЦА
+ЈАКШИЋ ЉИЉА
+ЈАКШИЋ ЉУБИСАВ
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МИЈАТ
+ЈАКШИЋ МИЛАН
+ЈАКШИЋ МИЛАН
+ЈАКШИЋ МИЛЕНКО
+ЈАКШИЋ МИЛЕВА
+ЈАКШИЋ МИЛОШ
+ЈАКШИЋ МИЛОРАД
+ЈАКШИЋ МИЛОРАД
+ЈАКШИЋ МИОДРАГ
+ЈАКШИЋ МИРКО
+ЈАКШИЋ НЕБОЈША
+ЈАКШИЋ НЕДЕЉКО
+ЈАКШИЋ НЕНАД
+ЈАКШИЋ ПАВЛЕ
+ЈАКШИЋ ПАВЛЕ
+ЈАКШИЋ ПЕТАР
+ЈАКШИЋ ПЕТАР
+ЈАКШИЋ-ПРОВЧИ БРАНКА
+ЈАКШИЋ РАДЕНКО
+ЈАКШИЋ РАДЕ
+ЈАКШИЋ РАДЕ
+ЈАКШИЋ РАДИША
+ЈАКШИЋ РАДОЈКО
+ЈАКШИЋ РАДОВАН
+ЈАКШИЋ РАДУН
+ЈАКШИЋ РИСТО
+ЈАКШИЋ РОСА
+ЈАКШИЋ РУЖИЦА
+ЈАКШИЋ РУЖИЦА
+ЈАКШИЋ САВА
+ЈАКШИЋ СЛОБОДАН
+ЈАКШИЋ СМИЉА
+ЈАКШИЋ СТЕВАН
+ЈАКШИЋ СВЕТКО
+ЈАКШИЋ СВЕТЛАНА ДИПЛ ПХ
+ЈАКШИЋ ТОМИСЛАВ
+ЈАКШИЋ ВАСИЛИЈЕ
+ЈАКШИЋ ВЕЛИМИР
+ЈАКШИЋ ВЕРА
+ЈАКШИЋ ВЛАДА
+ЈАКШИЋ ВЛАДИМИР
+ЈАКШИЋ ВОЈИСЛАВ
+ЈАКАБ ДЕЖЕ
+ЈАКАБ ЈОЖЕФ
+ЈАКАБ ПАВЕЛ
+ЈАКЕШЕВИЋ ДРАГАН
+ЈАКЕШЕВИЋ НИКО
+ЈАКИША ИШТВАН
+ЈАКИЋ ЂОРЂЕ
+ЈАКИЋ ДАНИЦА
+ЈАКИЋ ДАРА
+ЈАКИЋ ДЕСАНКА
+ЈАКИЋ МИЛАНКА
+ЈАКИЋ МИОДРАГ
+ЈАКИЋ НИКОЛА
+ЈАКИЋ СТЕВАН
+ЈАКИЋ ВИДА
+ЈАКИЦА ЧЕДО
+ЈАКИЦА ИЛИЈА
+ЈАКИМОВ СЛАВКО ДР ЛЕКАР
+ЈАКИМОВА-ГАЗЕПОВА ЈУЛКА ДР
+ЈАКИМОВСКИ БЛАГОЈ
+ЈАКИМОВСКИ БОГОСЛАВ
+ЈАКИМОВСКИ БОРКО
+ЈАКИМОВСКИ ДАНЕ
+ЈАКЛИЋ ИВАН
+ЈАКОБ ЈОШКА
+ЈАКОБ ЈОЖЕФ
+ЈАКОБ ЛАЈОШ
+ЈАКОБАЦ ЂУРЂИЦА
+ЈАКОБИ БОРИС
+ЈАКОБИ ТАТЈАНА
+ЈАКОБИ ВИЛМОШ
+ЈАКОБОВИЋ ФРАЊО
+ЈАКОБС ИШТВАН
+ЈАКОНИЋ ДРАГОСЛАВ ДР
+ЈАКОНИЋ ЈАСМИНА
+ЈАКОНИЋ МИЛАН ДИПЛ ОЕЦ
+ЈАКОНИЋ РАДМИЛА
+ЈАКОПЧЕВИЋ БРАНКА
+ЈАКОПОВИЋ БРАНИСЛАВА
+ЈАКОПОВИЋ МИРОСЛАВ
+ЈАКОПОВИЋ ВЛАДИМИР
+ЈАКОТИН ЖИВКО
+ЈАКОТИН КОСТА
+ЈАКОТИН ПЛЕМЕНКА
+ЈАКОВ САЛАМУН
+ЈАКОВАЦ ИВАН
+ЈАКОВИЋ РАДЕ
+ЈАКОВЉЕВ ЖАРКО
+ЈАКОВЉЕВ ЂУРА
+ЈАКОВЉЕВ ЂУРИЦА
+ЈАКОВЉЕВ АЛЕКСЕЈ
+ЈАКОВЉЕВ ДАНИЦА
+ЈАКОВЉЕВ ДРАГАН
+ЈАКОВЉЕВ ДУШАН
+ЈАКОВЉЕВ ИВАН
+ЈАКОВЉЕВ ЈЕФРЕМ
+ЈАКОВЉЕВ КАТА
+ЈАКОВЉЕВ КОСТА
+ЈАКОВЉЕВ КРИСТИФОР
+ЈАКОВЉЕВ МАРИНА
+ЈАКОВЉЕВ МИЛОШ
+ЈАКОВЉЕВ МИЛОШ
+ЈАКОВЉЕВ МИРОСЛАВ
+ЈАКОВЉЕВ РАДОВАН
+ЈАКОВЉЕВ СЛОБОДАН
+ЈАКОВЉЕВ СВЕТОЗАР
+ЈАКОВЉЕВ ВЛАДА
+ЈАКОВЉЕВ ЗЛАТОЈЕ
+ЈАКОВЉЕВИЋ ЖИВАН
+ЈАКОВЉЕВИЋ ЖИВОРАД
+ЈАКОВЉЕВИЋ ЂОРЂЕ
+ЈАКОВЉЕВИЋ ЂОРЂО
+ЈАКОВЉЕВИЋ ЂУРЂИНКА
+ЈАКОВЉЕВИЋ АЛЕКСАНДАР
+ЈАКОВЉЕВИЋ АНА
+ЈАКОВЉЕВИЋ БОЖАНА
+ЈАКОВЉЕВИЋ БОГДАН
+ЈАКОВЉЕВИЋ БОРИША
+ЈАКОВЉЕВИЋ БРАНКА
+ЈАКОВЉЕВИЋ ДАМЈАН
+ЈАКОВЉЕВИЋ ДАМЈАН
+ЈАКОВЉЕВИЋ ДИВНА
+ЈАКОВЉЕВИЋ ДРАГАН
+ЈАКОВЉЕВИЋ ДРАГОСЛАВ
+ЈАКОВЉЕВИЋ ЕМИЛИЈА
+ЈАКОВЉЕВИЋ ГОЈКО
+ЈАКОВЉЕВИЋ ГРОЗДАНА
+ЈАКОВЉЕВИЋ ИГЊАТ
+ЈАКОВЉЕВИЋ ЈАЊА
+ЈАКОВЉЕВИЋ ЈОСО
+ЈАКОВЉЕВИЋ ЈОВАН
+ЈАКОВЉЕВИЋ ЈОВАН
+ЈАКОВЉЕВИЋ ЈОВО
+ЈАКОВЉЕВИЋ ЈОВО
+ЈАКОВЉЕВИЋ ЛАЗАР
+ЈАКОВЉЕВИЋ ЉИЉАНА
+ЈАКОВЉЕВИЋ ЉУБИНКО
+ЈАКОВЉЕВИЋ ЛУКА
+ЈАКОВЉЕВИЋ МАРКО
+ЈАКОВЉЕВИЋ МИЛАНА
+ЈАКОВЉЕВИЋ МИЛАН
+ЈАКОВЉЕВИЋ МИЛАН
+ЈАКОВЉЕВИЋ МИЛЕНА
+ЈАКОВЉЕВИЋ МИЛИЋ
+ЈАКОВЉЕВИЋ МИЛИЦА
+ЈАКОВЉЕВИЋ МИЛИЦА
+ЈАКОВЉЕВИЋ МИЛИВОЈ МР ПХ
+ЈАКОВЉЕВИЋ МИЉАНА
+ЈАКОВЉЕВИЋ МИЛОШ
+ЈАКОВЉЕВИЋ МИЛОВАН
+ЈАКОВЉЕВИЋ МИЛУТИН
+ЈАКОВЉЕВИЋ МИРЈАНА
+ЈАКОВЉЕВИЋ МИРКО
+ЈАКОВЉЕВИЋ МИРОСЛАВ
+ЈАКОВЉЕВИЋ МИТА
+ЈАКОВЉЕВИЋ НИКОЛА
+ЈАКОВЉЕВИЋ ОБРАД
+ЈАКОВЉЕВИЋ ПАЈА
+ЈАКОВЉЕВИЋ РАДИША
+ЈАКОВЉЕВИЋ РАДИВОЈ
+ЈАКОВЉЕВИЋ РАДОЈКО
+ЈАКОВЉЕВИЋ САВА
+ЈАКОВЉЕВИЋ СИМО
+ЈАКОВЉЕВИЋ СЛОБОДАН
+ЈАКОВЉЕВИЋ СОЊА
+ЈАКОВЉЕВИЋ СТЕВАН
+ЈАКОВЉЕВИЋ ТАТЈАНА
+ЈАКОВЉЕВИЋ ВАСА
+ЈАКОВЉЕВИЋ ВАСА
+ЈАКОВЉЕВИЋ ВАСИЛИЈЕ
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ЗДРАВКО
+ЈАКОВОВИЋ ДУШАН
+ЈАКУШ МИРЈАНА
+ЈАКУБЕЦ ЂУРА
+ЈАКУБЕЦ ЛАДИСЛАВ
+ЈАМА НАДА
+ЈАМБОР АНДРЕА
+ЈАМБОР ДАНИЕЛА
+ЈАМБОР ИМРЕ
+ЈАМБОР МИХАЉ
+ЈАМБРУШИЋ ФРАЊО
+ЈАМИНА МИЛОВАН
+ЈАМИНА РАТКО
+ЈАМРИК ЂОРЂЕ
+ЈАМРИК ЈЕЛЕНА
+ЈАМРИК ЉУБИЦА
+ЈАМРИК ОТО
+ЈАНЧА ДЕЈАН ДР
+ЈАНЧА КОСТА ДР
+ЈАНЧА ЉУБИЦА
+ЈАНЧИЋ БИЉАНА
+ЈАНЧИЋ БОЖАНА
+ЈАНЧИЋ БОГДАН
+ЈАНЧИЋ ДИМИТРИЈЕ
+ЈАНЧИЋ ДРАГИЊА
+ЈАНЧИЋ ДРАГОСЛАВА
+ЈАНЧИЋ ДРАГОСЛАВ
+ЈАНЧИЋ ДУШАН
+ЈАНЧИЋ ДУШАН
+ЈАНЧИЋ ГОРДАНА
+ЈАНЧИЋ ГОРИЦА
+ЈАНЧИЋ ЈЕРОСИМ
+ЈАНЧИЋ ЉУБИЦА
+ЈАНЧИЋ МИЛОШ
+ЈАНЧИЋ МИРОСЛАВ
+ЈАНЧИЋ МЛАДЕН
+ЈАНЧИЋ НИКОЛА
+ЈАНЧИЋ ПЕРА
+ЈАНЧИЋ ПЕТАР
+ЈАНЧИЋ РАДОВАН
+ЈАНЧИЋ САВА
+ЈАНЧИЋ СВЕТИСЛАВ
+ЈАНЧИЋ СВЕТИСЛАВ
+ЈАНЧИЋ ТИХОМИР
+ЈАНЧИЋ ТИНКА
+ЈАНЧИЋ ВЕЛИБОР
+ЈАНЧИЋ ВИНКА
+ЈАНЧИЋ ВЛАДИМИР
+ЈАНЧИЋ ВЛАСТА
+ЈАНЧУРИЋ АЛЕКСАНДАР
+ЈАНЧУРИЋ ДАРИНКА
+ЈАНЧУРИЋ ДУШАН
+ЈАНЧУРИЋ ЈОВАН
+ЈАНЧУРИЋ ЛАЗАР
+ЈАНЧУРИЋ ЛЕНКА
+ЈАНЧУРИЋ МИРЈАНА
+ЈАНЧУРИЋ САВА
+ЈАНЖЕКОВИЋ МИЛЕВКА
+ЈАНЖЕКОВИЋ ОЛГА
+ЈАНЖЕЉ АНТОН
+ЈАНАЧЕК ЂОРЂЕ
+ЈАНАЧЕК КАТИЦА
+ЈАНАЧКОВИЋ СТОИЛ
+ЈАНАЋ ЈАНОШ
+ЈАНАЋ КАРОЉ
+ЈАНЦИЋ БЛАГОЈЕ
+ЈАНЦИЋ ПРЕДРАГ
+ЈАНДРИЋ ЂУРИЦА
+ЈАНДРИЋ БОГДАН
+ЈАНДРИЋ ЈАНДРИЈА
+ЈАНДРИЋ МАРИНКО
+ЈАНДРИЋ МАРКО
+ЈАНДРИЋ МАРКО
+ЈАНДРИЋ МИЋО
+ЈАНДРИЋ МИЛЕНА
+ЈАНДРИЋ МИЛИНА
+ЈАНДРИЋ МИЛКА
+ЈАНДРИЋ МИЛОРАД
+ЈАНДРИЋ МИЛОРАД
+ЈАНДРИЋ МИРОСЛАВ
+ЈАНДРИЋ МИРОСЛАВ
+ЈАНДРИЋ МИТАР
+ЈАНДРИЋ МОМЧИЛО
+ЈАНДРИЋ НЕДЕЉКО
+ЈАНДРИЋ РАДОВАН
+ЈАНДРИЋ РАТКО
+ЈАНДРИЋ РИСТО
+ЈАНДРИЋ СИМО
+ЈАНДРИЋ СЛОБОДАН
+ЈАНДРИЋ СРЕТЕН
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ УГЉЕША
+ЈАНДРИЋ ВИДА
+ЈАНДРИЋ ВИНКА
+ЈАНДРИЋ ЗОРАН
+ЈАНДРИЋ ЗОРАН
+ЈАНЕШ НЕВЕН
+ЈАНЕГА СНЕЖАНА
+ЈАНЕВ БЛАГОЈЕ ДИПЛ ИНГ
+ЈАНЕВСКИ АЛЕКСАНДАР
+ЈАНИЧИЋ БЛАЖО
+ЈАНИЧИЋ БОЖА
+ЈАНИЧИЋ ЈЕЛЕНА
+ЈАНИЧИЋ МИЛЕВА
+ЈАНИЧИЋ МИРКО
+ЈАНИЧИЋ РАДОЈИЦА
+ЈАНИЧИЋ СТЕВО
+ЈАНИЋ ЧАСЛАВ ДИПЛ ИНГ
+ЈАНИЋ ЖИВОРАД
+ЈАНИЋ АЛЕКСАНДАР
+ЈАНИЋ АНЂЕЛКО
+ЈАНИЋ ДУШАН
+ЈАНИЋ ДУШКО
+ЈАНИЋ-ХИЛТ ГОРДАНА
+ЈАНИЋ ИРЕНА
+ЈАНИЋ ИВАН ДР
+ЈАНИЋ МИЛИСАВ
+ЈАНИЋ НАДА
+ЈАНИЋ РАДОЈКА
+ЈАНИЋ СЛОБОДАН
+ЈАНИЋ ВЛАДИМИР
+ЈАНИЋИЈЕВИЋ МИЛЕНКО
+ЈАНИЋИЈЕВИЋ МИЛОШ
+ЈАНИЋИЈЕВИЋ МИРКО
+ЈАНИЋИЈЕВИЋ МОМЧИЛО
+ЈАНИЋИЈЕВИЋ НАДЕЖДА
+ЈАНИЋИЈЕВИЋ ОЗРЕНКА
+ЈАНИЋИЈЕВИЋ РАТКО
+ЈАНИЋИЈЕВИЋ СОФИЈА
+ЈАНИЋИЈЕВИЋ ВИТОМИР
+ЈАНИЋИН АНГЕЛИНА
+ЈАНИЋИН ИЛИЈА
+ЈАНИЦКИ СТАНИМИР
+ЈАНИК ФЕРЕНЦ
+ЈАЊАНИН БРАНКО
+ЈАЊАНИН СИМО
+ЈАЊАТОВИЋ ДЕЈАН
+ЈАЊАТОВИЋ ГОРИЦА
+ЈАЊАТОВИЋ МАНЕ
+ЈАЊАТОВИЋ МИЛАН
+ЈАЊАТОВИЋ МИРКО
+ЈАЊАТОВИЋ НЕДЕЉКО
+ЈАЊАТОВИЋ НИКОЛА
+ЈАЊАТОВИЋ СЛАВИЦА
+ЈАЊАТОВИЋ СЛАВИЦА
+ЈАЊАТОВИЋ ВЕРА
+ЈАЊЕТОВ РАДА
+ЈАЊЕТОВИЋ БРАНКО
+ЈАЊЕТОВИЋ НЕБОЈША
+ЈАЊЕТОВИЋ СЛАВИЦА
+ЈАЊЕТОВИЋ СЛОБОДАН
+ЈАЊЕВИЋ ДРАГОСЛАВ
+ЈАЊЕВИЋ КСЕНИЈА
+ЈАЊЕВИЋ ЗОРАН
+ЈАЊЕВИЋ ЗОРАН
+ЈАЊИЧИЋ СИМО
+ЈАЊИШ ЈЕЛИЦА
+ЈАЊИЋ ЧЕДОМИР
+ЈАЊИЋ ЖЕЉКО
+ЈАЊИЋ ЖИВКА
+ЈАЊИЋ ЖИВКО
+ЈАЊИЋ ЂОРЂЕ ДР
+ЈАЊИЋ БОШКО
+ЈАЊИЋ ДАНИЦА
+ЈАЊИЋ ДРАГОМИР ДИПЛ ОЕЦ
+ЈАЊИЋ ИЛИЈА
+ЈАЊИЋ ЈЕЛА
+ЈАЊИЋ ЈЕВРЕМ
+ЈАЊИЋ ЈЕВТО
+ЈАЊИЋ ЈОВАН
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ КСЕНИЈА
+ЈАЊИЋ ЉУБОМИР
+ЈАЊИЋ ЛУКА
+ЈАЊИЋ МАРИЈА
+ЈАЊИЋ МАРКО
+ЈАЊИЋ МИЛИЦА
+ЈАЊИЋ МИЛИВОЈ
+ЈАЊИЋ МИЛКА
+ЈАЊИЋ МИЛОМИР
+ЈАЊИЋ МЛАДЕН
+ЈАЊИЋ НАТАША
+ЈАЊИЋ НЕБОЈША
+ЈАЊИЋ РАДОВАН
+ЈАЊИЋ САВО
+ЈАЊИЋ СТЕВАН
+ЈАЊИЋ ВИТОМИР
+ЈАЊИЋ ВОЈИСЛАВ МР
+ЈАЊИЋ ВОЈКО
+ЈАЊИЋ ВУКОТА
+ЈАЊИН БОГОЉУБ
+ЈАЊИН ДАМЈАН
+ЈАЊИН ЛАЗАР
+ЈАЊИН МИЛИВОЈ
+ЈАЊИН РАДИВОЈ
+ЈАЊИН СНЕЖАНА
+ЈАЊОШ ЗОРАН
+ЈАЊОШЕВИЋ БРАНИСЛАВ
+ЈАЊОШЕВИЋ МИЛИЦА
+ЈАЊОШЕВИЋ СТЕВАНКА
+ЈАЊУШЕВИЋ БОСИЉКА
+ЈАЊУШЕВИЋ ГОЈКО
+ЈАЊУШЕВИЋ ЈОКИЦА
+ЈАЊУШЕВИЋ МИРА
+ЈАЊУШЕВИЋ НЕДЕЉКО
+ЈАЊУШЕВИЋ НЕДЕЉКО
+ЈАЊУШЕВИЋ СТОЈАН
+ЈАНКА ШАНДОР
+ЈАНКА ИВАН
+ЈАНКАЊ ВЛАДО
+ЈАНКИЋ КРИСТИНА
+ЈАНКО ЈАНОШ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БРАНИСЛАВ
+ЈАНКОВ ДРАГИЦА
+ЈАНКОВ ДУШАН
+ЈАНКОВ ИВАН
+ЈАНКОВ ЈЕЛИЦА
+ЈАНКОВ ЈОВАН
+ЈАНКОВ ЈОВИЦА
+ЈАНКОВ МИЛАН
+ЈАНКОВ МИЛИЈАНА
+ЈАНКОВ МИОМИР
+ЈАНКОВ МИТА
+ЈАНКОВ МИТКО
+ЈАНКОВ НАДА
+ЈАНКОВ НЕДЕЉКО
+ЈАНКОВ НИКОЛА
+ЈАНКОВ НИКОЛА
+ЈАНКОВ НОВКА
+ЈАНКОВ ПРЕДРАГ
+ЈАНКОВ РАДИВОЈ
+ЈАНКОВ РАДОСЛАВА
+ЈАНКОВ РАНЂЕЛ
+ЈАНКОВ СЛОБОДАН
+ЈАНКОВ СЛОБОДАН
+ЈАНКОВ СМИЉКА
+ЈАНКОВ СПАСОЈА
+ЈАНКОВ СРЕДОЈЕ
+ЈАНКОВ ТИХОМИР
+ЈАНКОВ ВЕРА
+ЈАНКОВ ЗАГОРКА ДР
+ЈАНКОВИЋ ЧАСЛАВ
+ЈАНКОВИЋ ЧЕДО
+ЈАНКОВИЋ ЧЕДО
+ЈАНКОВИЋ ЖАРКО ДИПЛ ИНГ
+ЈАНКОВИЋ ЖАРКО
+ЈАНКОВИЋ ЖИВКО
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЂОРЂЕ
+ЈАНКОВИЋ ЂОРЂЕ
+ЈАНКОВИЋ ЂУРЂИЦА
+ЈАНКОВИЋ ЂУРА
+ЈАНКОВИЋ АЛЕКСАНДАР
+ЈАНКОВИЋ АЛЕКСАНДАР
+ЈАНКОВИЋ АНА
+ЈАНКОВИЋ АНИЦА
+ЈАНКОВИЋ АНКА
+ЈАНКОВИЋ БОШКО
+ЈАНКОВИЋ БОШКО
+ЈАНКОВИЋ БОЖИДАР
+ЈАНКОВИЋ БОЖИДАР
+ЈАНКОВИЋ БОЖО
+ЈАНКОВИЋ БОГОЉУБ
+ЈАНКОВИЋ БОРИВОЈ ДР ЛЕКАР
+ЈАНКОВИЋ БРАНКО
+ЈАНКОВИЋ БРАТИСЛАВ
+ЈАНКОВИЋ ДАРА
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДОБРИВОЈЕ
+ЈАНКОВИЋ ДОБРИВОЈ
+ЈАНКОВИЋ ДРАГАНА
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГИЊА
+ЈАНКОВИЋ ДРАГОМИР
+ЈАНКОВИЋ ДРАГОСЛАВ
+ЈАНКОВИЋ ДУШАНКА
+ЈАНКОВИЋ ДУШАН
+ЈАНКОВИЋ ДУШАН
+ЈАНКОВИЋ ДУШИЦА
+ЈАНКОВИЋ ГОРДАНА
+ЈАНКОВИЋ ГОРДАНА
+ЈАНКОВИЋ ХРИСТИВОЈЕ
+ЈАНКОВИЋ ИГЊАТ
+ЈАНКОВИЋ ЈЕЛИЦА
+ЈАНКОВИЋ ЈОРДАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈУЛИЈАНА
+ЈАНКОВИЋ КАЛМАН ДИПЛ ИНГ
+ЈАНКОВИЋ КАЛМАН
+ЈАНКОВИЋ КАТИЦА
+ЈАНКОВИЋ КОВИЉКА
+ЈАНКОВИЋ КРСТА
+ЈАНКОВИЋ-КУЗМАНЧЕВ ОЛИВЕРА
+ЈАНКОВИЋ ЛАСЛО
+ЈАНКОВИЋ ЛАСЛО
+ЈАНКОВИЋ ЛАЗАР
+ЈАНКОВИЋ ЛАЗАР
+ЈАНКОВИЋ ЉИЉАНА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБОМИР
+ЈАНКОВИЋ МАРА
+ЈАНКОВИЋ МАРИЈАН
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИНА
+ЈАНКОВИЋ МАРКО
+ЈАНКОВИЋ МЕЛАНИЈА
+ЈАНКОВИЋ МИЋА
+ЈАНКОВИЋ МИЋА
+ЈАНКОВИЋ МИЛАН
+ЈАНКОВИЋ МИЛЕНА
+ЈАНКОВИЋ МИЛЕНКО
+ЈАНКОВИЋ МИЛЕНКО
+ЈАНКОВИЋ МИЛИЦА
+ЈАНКОВИЋ МИЛИЦА
+ЈАНКОВИЋ МИЛИЈАНА
+ЈАНКОВИЋ МИЛИНКО
+ЈАНКОВИЋ МИЛИСАВ
+ЈАНКОВИЋ МИЛИВОЈЕ
+ЈАНКОВИЋ МИЛОЈЕ
+ЈАНКОВИЋ МИЛОЈИЦА
+ЈАНКОВИЋ МИЛОМИР
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИРЈАНА
+ЈАНКОВИЋ МИРОЉУБ
+ЈАНКОВИЋ МИТАР
+ЈАНКОВИЋ МЛАДЕН
+ЈАНКОВИЋ-МРКИЋ ЗОРА ДИПЛ ИНГ
+ЈАНКОВИЋ НАДА
+ЈАНКОВИЋ НАДА
+ЈАНКОВИЋ НАСТА
+ЈАНКОВИЋ НЕНАД
+ЈАНКОВИЋ НИКОЛА
+ЈАНКОВИЋ ОБРАД
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПРВОСЛАВ
+ЈАНКОВИЋ ПРВОСЛАВ
+ЈАНКОВИЋ РАДИВОЈЕ
+ЈАНКОВИЋ РАДОМИР
+ЈАНКОВИЋ РАДОСЛАВ
+ЈАНКОВИЋ РАДОСЛАВ
+ЈАНКОВИЋ РАДОВАН
+ЈАНКОВИЋ РАЈКО
+ЈАНКОВИЋ РАЈКО
+ЈАНКОВИЋ РАНКО
+ЈАНКОВИЋ РАТКО
+ЈАНКОВИЋ РОСА
+ЈАНКОВИЋ РУЖА
+ЈАНКОВИЋ СЛАВИЦА
+ЈАНКОВИЋ СЛАВКО
+ЈАНКОВИЋ СЛАВКО
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СОФИЈА
+ЈАНКОВИЋ СПАСА
+ЈАНКОВИЋ СПАСОЈЕ
+ЈАНКОВИЋ СПОМЕНКА
+ЈАНКОВИЋ СРБОЉУБ
+ЈАНКОВИЋ СТАНКО
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТОЈАНКА
+ЈАНКОВИЋ СВЕТИСЛАВ
+ЈАНКОВИЋ СВЕТОЗАР
+ЈАНКОВИЋ ТИБОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ВЕСНА
+ЈАНКОВИЋ ВИТОМИР
+ЈАНКОВИЋ ВИТОМИР
+ЈАНКОВИЋ ВЛАДИМИР
+ЈАНКОВИЋ ВУКИЋ
+ЈАНКОВИЋ ВУКИЦА
+ЈАНКОВИЋ ВУКОМАН
+ЈАНКОВИЋ ЗЛАТОЈЕ
+ЈАНКОВИЋ ЗОЛТАН
+ЈАНКОВИЋ ЗОРАН
+ЈАНКОВИЋ ЗОРАН
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРКА
+ЈАНКУЛОВ ДАНИЦА
+ЈАНКУЛОВ-ДЕМЈЕН МАЈА
+ЈАНКУЛОВ ДРАГИША МР ПХ
+ЈАНКУЛОВ СТЕВАН
+ЈАНКУЛОВСКИ МАРИЈА
+ЈАНКУЛОВСКИ ПЕТАР
+ЈАНО ЈУЛИЈА
+ЈАНОШЕВ БИСЕРКА
+ЈАНОШЕВ ДРАГИЦА
+ЈАНОШЕВ ЉИЉАНА
+ЈАНОШЕВ МИЛАН
+ЈАНОШЕВ МИЛЕНА
+ЈАНОШЕВ МИЛЕНКО
+ЈАНОШЕВИЋ РАДИВОЈ
+ЈАНОШИ ФРАНЦИШКА
+ЈАНОШИ ИЛОНА
+ЈАНОШИ КАРЛО
+ЈАНОШИ ЛАСЛО
+ЈАНОШИ МАРГИТА
+ЈАНОШИ МИХАЉ
+ЈАНОШИ МИХАЉ
+ЈАНОШИ ТЕРЕЗА
+ЈАНОШИ ЗОЛТАН
+ЈАНОВАЦ ЖИВОЈИН
+ЈАНОВИЋ ЉИЉА
+ЈАНУШКО ИШТВАН
+ЈАНУС МИЛКА
+ЈАНУС ВОИСЛАВ
+ЈАНУЗОВИЋ ДУШАНКА
+ЈАНУЗОВИЋ ЈОЛАН
+ЈАНУЗОВИЋ МИЛОВАН
+ЈАНУЗОВИЋ МИРАЉУБ
+ЈАНУЗОВИЋ НОВИЦА ДР
+ЈАНУЗОВИЋ СЛОБОДАН
+ЈАНУЗОВИЋ СВЕТЛАНА
+ЈАПУНЏА ЛАЗА
+ЈАПУНЏИЋ ЂОРЂЕ
+ЈАПУНЏИЋ ГОРДАНА
+ЈАПУНЏИЋ МИРКО
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ САВА
+ЈАРАК ИВАН
+ЈАРАМАЗ ДИЈАНА
+ЈАРАМАЗ МИЛОВАН
+ЈАРАМАЗ НИКОЛА
+ЈАРЦ АНГЕЛ
+ЈАРИ ПРОКА
+ЈАРИЋ ЧЕДОМИР
+ЈАРИЋ АЛЕКСАНДАР
+ЈАРИЋ АВДО
+ЈАРИЋ БОЈАН
+ЈАРИЋ БРАНКО
+ЈАРИЋ ДАНИЕЛА
+ЈАРИЋ ДЕСАНКА
+ЈАРИЋ ДРАГАНА
+ЈАРИЋ ДРАГАН
+ЈАРИЋ ДУШАН ДР
+ЈАРИЋ КРИСТИНА
+ЈАРИЋ КРИСТИНА
+ЈАРИЋ ЉИЉАНА
+ЈАРИЋ ЉИЉАНА
+ЈАРИЋ МАРИЈА
+ЈАРИЋ МАРИЈА
+ЈАРИЋ МИЛАН
+ЈАРИЋ МИЛАН
+ЈАРИЋ МИЛОЈКО
+ЈАРИЋ МИРА
+ЈАРИЋ СЛОБОДАН
+ЈАРИЋ ЗОРАН
+ЈАРМИНАЦ БРАНКО
+ЈАРОШЕНКО КАТАРИНА
+ЈАРОШЕВСКИ АНТОН
+ЈАРОШЕВСКИ ИВИЦА
+ЈАРОШЕВСКИ ПАВЕЛ
+ЈАСЕНОВСКИ АНА
+ЈАСИЋ ДИВНА
+ЈАСИЋ ЈАНКО
+ЈАСИЋ МАНДА
+ЈАСИЋ МИРКО
+ЈАСИЋ ВЕРИЦА
+ЈАСИКА РУЖА
+ЈАСИКА СТОЈАНКА
+ЈАСИКИЋ МИЛОРАД
+ЈАСМИНОВИЋ ЈАМИН
+ЈАСНИЋ МИЛАН ДР ЛЕКАР
+ЈАСНИЋ МИЛАН
+ЈАСНИЋ МИЛОМИРКА
+ЈАСНИЋ СИНИША
+ЈАСНИГЕР АЛЕКСАНДАР
+ЈАТИЋ АНЂЕЛИЈА
+ЈАТИЋ ДРАГАН
+ЈАТИЋ ГРАДИМИР
+ЈАТИЋ СТЕВАН
+ЈАУКОВИЋ ДРАГИША
+ЈАУКОВИЋ ПЕЈКА
+ЈАУС ВАЛТЕР
+ЈАВНИ ПЕТАР
+ЈАВОРАН ИВАН
+ЈАВОРИНА ЂУРА
+ЈАВОРИНА ЉИЉАНА
+ЈАВОРИНА МИЛЕ
+ЈАВОРИНА СИМО
+ЈАВОРНИК БОСИЉКА
+ЈАВОРНИК ПАВЕЛ
+ЈАЗИЋ ДАНИЛО
+ЈАЗИЋ ИВАНКА
+ЈАЗИЋ ЛАЗА
+ЈАЗИЋ ЉУБОМИР
+ЈАЗИЋ МАРИНКО
+ЈАЗИЋ МИРОСЛАВ
+ЈАЗИЋ-САВИН ТАТЈАНА
+ЈАЗИЋ СВЕТЛАНА
+ЈАЗВИЋ АНКА
+ЈЕЧИНАЦ МИЛАН
+ЈЕЧИНАЦ МИЛОРАД
+ЈЕЧИНАЦ ВЕРА
+ЈЕЧМЕНИЦА АЛЕКСАНДАР
+ЈЕЧМЕНИЦА АЛЕКСАНДАР
+ЈЕЧМЕНИЦА ЈЕЛЕНА
+ЈЕЧМЕНИЦА МИЛОШ
+ЈЕЧМЕНИЦА ВЛАДИМИР
+ЈЕШИЋ ЖИВКА
+ЈЕШИЋ АНЂЕЛКО
+ЈЕШИЋ ДАНИЈЕЛА
+ЈЕШИЋ ЈУЛКА
+ЈЕШИЋ МИЛАН
+ЈЕШИЋ МИОДРАГ
+ЈЕШИЋ МИРОСЛАВА
+ЈЕШИЋ СТЕВАН
+ЈЕШИЋ ЗОРАН
+ЈЕЖ ДРАГАН
+ЈЕЖ ГОСПОЈИНКА
+ЈЕЖ МИЛОРАД
+ЈЕЖ СЛОБОДАН
+ЈЕЖ ТРИВО
+ЈЕЖЕК МИЛИВОЈ
+ЈЕЦКОВ НАДА
+ЈЕДЕРАН ЈОСИП
+ЈЕДЕРАН ЈОСИП
+ЈЕФИЋ ГОРАН
+ЈЕФТЕНИЋ ШПИРО
+ЈЕФТЕНИЋ ВЛАДО
+ЈЕФТИЋ ЖАРКО
+ЈЕФТИЋ БИЉАНА
+ЈЕФТИЋ БОЖИДАР
+ЈЕФТИЋ БОРИСЛАВ ДИПЛ ИНГ
+ЈЕФТИЋ БРАНКО
+ЈЕФТИЋ ДАМЈАН
+ЈЕФТИЋ ДРАГАН
+ЈЕФТИЋ ЈАДРАНКА
+ЈЕФТИЋ ЈЕФТА
+ЈЕФТИЋ ЈЕЛЕНА
+ЈЕФТИЋ ЈОВАН
+ЈЕФТИЋ КАТАРИНА
+ЈЕФТИЋ ЉУБОМИР
+ЈЕФТИЋ МИЛАН
+ЈЕФТИЋ МИЛАН
+ЈЕФТИЋ МИЛЕНКО
+ЈЕФТИЋ МИЛОРАД
+ЈЕФТИЋ МИТА
+ЈЕФТИЋ СРЕТЕНКА
+ЈЕФТИЋ ТИХОМИР
+ЈЕФТИЋ ТОМИСЛАВ
+ЈЕФТИЋ ВЕЛИНКА
+ЈЕФТИЋ ВЛАДИМИР
+ЈЕФТИЋ ВЛАСТА
+ЈЕФТИЋ ЗДРАВКО
+ЈЕФТОВИЋ ФРАЊА
+ЈЕГАРАЦ ОЛГА
+ЈЕГДИЋ ДАМЈАН
+ЈЕГДИЋ ГОРДАНА
+ЈЕГДИЋ СВЕТИСЛАВ
+ЈЕГДИЋ ВАСА
+ЈЕГДИЋ ВАСО
+ЈЕГЕШ МИЛА
+ЈЕКЕЛИЋ БРАНИСЛАВ
+ЈЕКЕЛИЋ БРАНКО
+ЈЕКЕЛИЋ ЕМИЛИЈА
+ЈЕКЕЛИЋ ЛАСЛО
+ЈЕКЕЛИЋ МИЛАН
+ЈЕКЕЛИЋ МИЛИЋ
+ЈЕКЕЛИЋ РАДОСЛАВ ДИПЛ ИНГ
+ЈЕКЕЛИЋ СЛАВКО
+ЈЕКЕЛИЋ ЗОРИЦА
+ЈЕКНИЋ РАДОЈИЦА
+ЈЕЛЧИЋ ЈОЗЕФИНА
+ЈЕЛЧИЋ КРИСТИЈАН
+ЈЕЛЧИЋ ЉУБИША
+ЈЕЛЧИЋ МИЛОВАН
+ЈЕЛЧИЋ МИЛОВАН
+ЈЕЛЧИЋ ПАВЛЕ
+ЈЕЛЧИЋ ЗОРА
+ЈЕЛАЧА ЂУРО
+ЈЕЛАЧА ЂУРО
+ЈЕЛАЧА БРАНКО
+ЈЕЛАЧА ДЕСА
+ЈЕЛАЧА КОСТА
+ЈЕЛАЧА МИХАЈЛО
+ЈЕЛАЧА МИЛЕНКО
+ЈЕЛАЧА РУЖА
+ЈЕЛАЧА СИМО ДР ИНГ
+ЈЕЛАЧА СЛОБОДАН
+ЈЕЛАЧА СТАНКО
+ЈЕЛАЧА СТОЈАН
+ЈЕЛАЧИЋ БОЖИДАР
+ЈЕЛАЧИЋ БРАНКО
+ЈЕЛАЧИЋ ДАНИЛО
+ЈЕЛАЧИЋ ДУШАН
+ЈЕЛАЧИЋ ЈУЛИШКА
+ЈЕЛАЧИЋ ЉУБОМИР
+ЈЕЛАЧИЋ МИХАЈЛО
+ЈЕЛАЧИЋ МИЛЕНКО
+ЈЕЛАЧИЋ МИРОСЛАВ
+ЈЕЛАЧИЋ РАТОМИР
+ЈЕЛАЧИЋ СЛОБОДАН
+ЈЕЛАЧИЋ ЗОРКА
+ЈЕЛАВИЋ ЖЕЉКО
+ЈЕЛАВИЋ ДРАГО
+ЈЕЛЕЧ ИЛИЈА
+ЈЕЛЕЧАНИН ЂОРЂЕ
+ЈЕЛЕЧАНИН МАРИЈА
+ЈЕЛЕЧИЋ ЈОВАН
+ЈЕЛЕНЧИЋ ФРАЊА
+ЈЕЛЕНИЋ ЖИВАН
+ЈЕЛЕНИЋ МИЛАН
+ЈЕЛЕНИЋ ПАНТА
+ЈЕЛЕНИЋ ПАВЛЕ
+ЈЕЛЕНИЋ РАДА
+ЈЕЛЕНИЋ СЛОБОДАН
+ЈЕЛЕНИЋ ВАСИЛИЈЕ
+ЈЕЛЕНКОВИЋ АЛЕКСАНДАР
+ЈЕЛЕНКОВИЋ ГРОЗДА
+ЈЕЛЕНКОВИЋ ВЛАДИСЛАВ
+ЈЕЛЕСИЋ АНГЕЛА ПРОФЕСОР
+ЈЕЛИЧИЋ ЖИВКО
+ЈЕЛИЧИЋ ЂУРО
+ЈЕЛИЧИЋ БЕАТА
+ЈЕЛИЧИЋ БРАНКО
+ЈЕЛИЧИЋ ДУШАН
+ЈЕЛИЧИЋ ЈЕЛЕНА
+ЈЕЛИЧИЋ ЈОВО
+ЈЕЛИЧИЋ ЉУБИЦА
+ЈЕЛИЧИЋ МАРИЈА
+ЈЕЛИЧИЋ МИЛАН
+ЈЕЛИЧИЋ МИЛЕ
+ЈЕЛИЧИЋ МИРКО
+ЈЕЛИЧИЋ ПЕТАР
+ЈЕЛИЧИЋ ПЕТАР
+ЈЕЛИЧИЋ РОСА
+ЈЕЛИЧИЋ ВИД
+ЈЕЛИЋ ЖИВКО
+ЈЕЛИЋ ЖИВКО
+ЈЕЛИЋ ЂОРЂЕ
+ЈЕЛИЋ ЂОРЂЕ
+ЈЕЛИЋ АЋИМ
+ЈЕЛИЋ АНЂА
+ЈЕЛИЋ АНТЕ
+ЈЕЛИЋ БУДИМИР
+ЈЕЛИЋ ДРАГАН
+ЈЕЛИЋ ДРАГУТИН
+ЈЕЛИЋ ДУШАН
+ЈЕЛИЋ ЕМИЛИЈА
+ЈЕЛИЋ ЕСТЕРА
+ЈЕЛИЋ ГОРДАНА
+ЈЕЛИЋ ИВАНКА
+ЈЕЛИЋ ИВИЦА
+ЈЕЛИЋ ЈАГОДИНКА
+ЈЕЛИЋ ЈАЊА
+ЈЕЛИЋ ЈЕЛЕНА
+ЈЕЛИЋ ЈОВАН
+ЈЕЛИЋ ЛАЗАР
+ЈЕЛИЋ ЛАЗАР
+ЈЕЛИЋ ЉУБИЦА
+ЈЕЛИЋ ЉУБИНКА
+ЈЕЛИЋ ЛУКА
+ЈЕЛИЋ МАРИЦА
+ЈЕЛИЋ МАРИНА
+ЈЕЛИЋ-МАТИЋ МАРИЈА
+ЈЕЛИЋ МИЛАН
+ЈЕЛИЋ МИЛАН
+ЈЕЛИЋ МИЛЕНА
+ЈЕЛИЋ МИЛЕНКО
+ЈЕЛИЋ МИЛКА
+ЈЕЛИЋ МИОДРАГ
+ЈЕЛИЋ МИОДРАГ
+ЈЕЛИЋ МИРЈАНА
+ЈЕЛИЋ МИТА
+ЈЕЛИЋ МОМИР
+ЈЕЛИЋ НАДА
+ЈЕЛИЋ НЕДЕЉКО
+ЈЕЛИЋ ПАВЛЕ
+ЈЕЛИЋ ПРЕДРАГ
+ЈЕЛИЋ ПРЕДРАГ
+ЈЕЛИЋ РАДЕНКО
+ЈЕЛИЋ РОСА
+ЈЕЛИЋ САВА
+ЈЕЛИЋ СИМА
+ЈЕЛИЋ СЛАВИЦА
+ЈЕЛИЋ СТАНИМИР
+ЈЕЛИЋ СТЕВАН
+ЈЕЛИЋ СТЕВА
+ЈЕЛИЋ СТЕВА
+ЈЕЛИЋ СТИПЕ
+ЈЕЛИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+ЈЕЛИЋ СВЕТОЗАР
+ЈЕЛИЋ ТОМА
+ЈЕЛИЋ ТОМИСЛАВ
+ЈЕЛИЋ ВАСА
+ЈЕЛИЋ ВАСО
+ЈЕЛИЋ ВИКТОРИЈА
+ЈЕЛИЦКИ СИМЕУН
+ЈЕЛИН ЈОВАН
+ЈЕЛИН РАДМИЛА
+ЈЕЛИНЧИЋ ДУЈО
+ЈЕЛИНЕК СТЕВАН
+ЈЕЛИСАВАЦ ГОРДАН
+ЈЕЛИСАВАЦ МИЛОШ
+ЈЕЛИСАВАЦ МОМИР
+ЈЕЛКИЋ ЈОВАН
+ЈЕЛКИЋ ЛАЗАР
+ЈЕЛКИЋ ОЛИВЕРА
+ЈЕЛКИЋ ВЛАДИМИР
+ЈЕЛОВАЦ ЖАРКО
+ЈЕЛОВАЦ ЖАРКО
+ЈЕЛОВАЦ ЂОРЂЕ
+ЈЕЛОВАЦ ЂОРЂЕ
+ЈЕЛОВАЦ ЂУРО
+ЈЕЛОВАЦ БИСЕРКА
+ЈЕЛОВАЦ БРАНИСЛАВ
+ЈЕЛОВАЦ БРАНКА
+ЈЕЛОВАЦ БРАНКА
+ЈЕЛОВАЦ БРАНКО
+ЈЕЛОВАЦ ДРАГАН
+ЈЕЛОВАЦ ДРАГАН
+ЈЕЛОВАЦ ДУШАН
+ЈЕЛОВАЦ ИЗАБЕЛА
+ЈЕЛОВАЦ ЈОВАН
+ЈЕЛОВАЦ МИЛАН
+ЈЕЛОВАЦ МИЛИЦА
+ЈЕЛОВАЦ МИРОСЛАВ
+ЈЕЛОВАЦ МИРОСЛАВ
+ЈЕЛОВАЦ НАДА
+ЈЕЛОВАЦ НИКОЛА
+ЈЕЛОВАЦ РАДОЈКА
+ЈЕЛОВАЦ РАДОЈКА
+ЈЕЛОВАЦ РАДОМИР ДР ЛЕКАР
+ЈЕЛОВАЦ РУЖИЦА
+ЈЕЛОВАЦ СЛОБОДАН
+ЈЕЛОВАЦ СТЕВАН
+ЈЕЛОВАЦ СТОЈАН
+ЈЕЛОВАЦ ТУГОМИР
+ЈЕЛОВАЦ ВЕЛИМИР
+ЈЕЛОВАЦ ВЛАДА
+ЈЕЛОВАЦ ВУЈИЦА
+ЈЕЛОВИЋ МИЛАНКА
+ЈЕЛУШИЋ ГОРДАНА
+ЈЕЛУШИЋ ЛЕНКА
+ЈЕЛУШИЋ МАТИЈЕ
+ЈЕМЧ БРАНИСЛАВ
+ЈЕМРИЋ ЈЕЛА
+ЈЕНЕЦКОВ РАДМИЛА
+ЈЕНЕЦКОВ САША
+ЈЕНЕИ АНДРАШ
+ЈЕНЕИ ЕУГЕН
+ЈЕНЕИ ЛАЈОШ
+ЈЕНЕИ МИОДРАГ
+ЈЕНЕИ РУЖА
+ЈЕНЕИ СТЕВАН
+ЈЕНЕИ ТИБОР
+ЈЕНЕВ БЛАГОЈ
+ЈЕПУРСКИ НЕНАД
+ЈЕРЧИЋ ФРАЊО
+ЈЕРАНЧЕ ДАНИЦА
+ЈЕРАНТ АНДРИЈА
+ЈЕРАНТ ПАТИЋ ВЕРА ДР
+ЈЕРАНТ ПЕТАР
+ЈЕРАУШЕК ФРАЊО
+ЈЕРАУШЕК ИВИЦА
+ЈЕРБИЋ ДРАГИЦА
+ЈЕРЕБИНШЕК АНА
+ЈЕРЕБИНШЕК СЛАВКО
+ЈЕРЕЛЕ ФРАНЦИШКА
+ЈЕРЕМЕНКО АЛЕКСАНДРА
+ЈЕРЕМИЋ ЂОКА
+ЈЕРЕМИЋ ЂОРЂЕ
+ЈЕРЕМИЋ АЛЕКСАНДАР
+ЈЕРЕМИЋ-БЛАГОЈЕВИЋ ВЕРИЦА
+ЈЕРЕМИЋ БЛАГОЈЕ
+ЈЕРЕМИЋ ДИМИТРИЈЕ ДР ЛЕКАР
+ЈЕРЕМИЋ ДРАГОСЛАВ
+ЈЕРЕМИЋ ДУШАНКА
+ЈЕРЕМИЋ ЈАСНА
+ЈЕРЕМИЋ ЈЕЛЕНА
+ЈЕРЕМИЋ ЈОВАН
+ЈЕРЕМИЋ ЈОВАН
+ЈЕРЕМИЋ ЛАЗАР
+ЈЕРЕМИЋ ЉИЉАНА
+ЈЕРЕМИЋ МЕЛАНИЈА
+ЈЕРЕМИЋ МИЛЕВА
+ЈЕРЕМИЋ МИРА
+ЈЕРЕМИЋ МИРОСЛАВ
+ЈЕРЕМИЋ НАДЕЖДА
+ЈЕРЕМИЋ НЕНАД
+ЈЕРЕМИЋ ОЛИВЕРА
+ЈЕРЕМИЋ ПАВЛЕ
+ЈЕРЕМИЋ ПАВЛЕ
+ЈЕРЕМИЋ РАДЕ
+ЈЕРЕМИЋ СТАНА
+ЈЕРЕМИЋ СТАНКО
+ЈЕРЕМИЋ СТАНОЈЕ
+ЈЕРЕМИЋ СТЕВАН
+ЈЕРЕМИЋ СТЕВАН
+ЈЕРЕМИЋ ВАСИЛИЈЕ
+ЈЕРЕМИЋ ВЕРА
+ЈЕРЕМИЋ ВОЈИСЛАВ
+ЈЕРЕМИЋ ЗОРА
+ЈЕРЕМИЈИЋ ВИТОМИР
+ЈЕРЕНИЋ МЛАДЕН
+ЈЕРГИЋ МИЛИЦА
+ЈЕРГИЋ МИОДРАГ
+ЈЕРГИЋ МИРКО
+ЈЕРГИЋ ПЕТАР
+ЈЕРГИЋ СЛАВИЦА
+ЈЕРГИЋ СПАСОЈЕ
+ЈЕРИЋ ДУШАН
+ЈЕРИЋ КОВИНКА
+ЈЕРИЋ ЉУБИША
+ЈЕРИЋ МИЛИЦА
+ЈЕРИЋ ПЕТАР
+ЈЕРИНИЋ БРАНКО
+ЈЕРИНИЋ-КУРИН ЕДИТ
+ЈЕРИНИЋ МИОДРАГ
+ЈЕРИНИЋ ВОЈИСЛАВ
+ЈЕРИНКИЋ ДРАГАН
+ЈЕРИНКИЋ ИВАН
+ЈЕРИНКИЋ ПАВЛЕ
+ЈЕРКАН АНТЕ
+ЈЕРКИЋ СВЕТОЗАР
+ЈЕРКОВ ЖАРКО
+ЈЕРКОВ АНДРИЈА
+ЈЕРКОВ БРАНИМИР
+ЈЕРКОВ ЈОВАН
+ЈЕРКОВ ЈОВИЦА
+ЈЕРКОВ ЈОВИЦА
+ЈЕРКОВ МИРЈАНА
+ЈЕРКОВ МИРЈАНА
+ЈЕРКОВ ПАВЛЕ
+ЈЕРКОВ СМИЉА
+ЈЕРКОВ СНЕЖАНА
+ЈЕРКОВ ВЕЉКО
+ЈЕРКОВ ВОЈИСЛАВ
+ЈЕРКОВИЋ ЂОРЂЕ
+ЈЕРКОВИЋ АЛЕКСАНДАР
+ЈЕРКОВИЋ ДМИТАР
+ЈЕРКОВИЋ ФРАЊО
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ КАТИЦА
+ЈЕРКОВИЋ КАТИЦА
+ЈЕРКОВИЋ ЛЕНКА
+ЈЕРКОВИЋ МИЛАН
+ЈЕРКОВИЋ МИЛОШ
+ЈЕРКОВИЋ НАДЕЖДА
+ЈЕРКОВИЋ НИКОЛА
+ЈЕРКОВИЋ ПРЕДРАГ
+ЈЕРКОВИЋ РАЈКО
+ЈЕРКОВИЋ СИМО
+ЈЕРКОВИЋ СИНИША
+ЈЕРКОВИЋ СОФИЈА
+ЈЕРКОВИЋ СТЕВАН
+ЈЕРКОВИЋ СТОЈАН
+ЈЕРКОВИЋ СВЕТКО
+ЈЕРКОВИЋ ТАДИЈА
+ЈЕРКОВИЋ ВАЛЕРИЈА
+ЈЕРКОВИЋ ВАСА
+ЈЕРКОВИЋ ВЛАДИМИР МР
+ЈЕРКОВИЋ ВЛАДИМИР
+ЈЕРКОВИЋ ВЛАДО
+ЈЕРКОВИЋ ВУКОСАВА
+ЈЕРКОВИЋ ЗОРАН
+ЈЕРОСИМОВИЋ БРАНИМИР
+ЈЕРОТИЈЕВИЋ ДАРИНКА
+ЈЕСИЋ МИЛЕНА
+ЈЕСТРОНИЋ ТОМИСЛАВ
+ЈЕСТРОВИЋ ИРЕНА
+ЈЕВЂЕНИЋ РУЖИЦА
+ЈЕВЂЕНИЋ ВЛАДА
+ЈЕВЂОВИЋ МЕЛАНИЈА ДР
+ЈЕВЂОВИЋ МЕЛАНИЈА
+ЈЕВИЋ ЧЕДО
+ЈЕВИЋ БРАНКО
+ЈЕВИЋ МИЛАН
+ЈЕВИЋ МИЛИВОЈ
+ЈЕВИЋ МИОДРАГ
+ЈЕВИЋ МОМЧИЛО
+ЈЕВИЋ НАДА
+ЈЕВИЋ НИКОЛА
+ЈЕВИЋ ТОДОР
+ЈЕВРЕМОВ ЖИВА
+ЈЕВРЕМОВ ЂОРЂЕ
+ЈЕВРЕМОВ МИЛАН
+ЈЕВРЕМОВ МИРЈАНА
+ЈЕВРЕМОВИЋ ДОБРИЛА
+ЈЕВРЕМОВИЋ ЉУБИНКА
+ЈЕВРЕМОВИЋ МИЛИВОЈ
+ЈЕВРЕМОВИЋ МИЛОРАД
+ЈЕВРЕМОВИЋ МИОДРАГ
+ЈЕВРЕМОВИЋ РАДИША
+ЈЕВРЕМОВИЋ СИНИША
+ЈЕВРЕМОВИЋ СОФИЈА
+ЈЕВРЕМОВИЋ СТЕВАН
+ЈЕВРЕМОВИЋ ВЛАДАН
+ЈЕВРИЋ ЖИВАН
+ЈЕВРИЋ ЂОРЂЕ
+ЈЕВРИЋ ЂОРЂЕ
+ЈЕВРИЋ БОЖИДАР
+ЈЕВРИЋ БОГОЉУБ
+ЈЕВРИЋ БРАНКО
+ЈЕВРИЋ БРАТИСЛАВ
+ЈЕВРИЋ ДАНИЦА
+ЈЕВРИЋ ДЕСИМИР
+ЈЕВРИЋ ДРАГУТИН
+ЈЕВРИЋ ЕВИЦА
+ЈЕВРИЋ ГИГА
+ЈЕВРИЋ ГОРАН
+ЈЕВРИЋ ЈЕЛА
+ЈЕВРИЋ ЈОВАН
+ЈЕВРИЋ КРИСТИНА
+ЈЕВРИЋ ЉУБИЦА
+ЈЕВРИЋ МАРИЈА
+ЈЕВРИЋ МИЛАН
+ЈЕВРИЋ МИЛЕНКО
+ЈЕВРИЋ МИЛЕ
+ЈЕВРИЋ МИЛОШ
+ЈЕВРИЋ МИРОСЛАВ
+ЈЕВРИЋ РАДИША
+ЈЕВРИЋ РАДИВОЈЕ
+ЈЕВРИЋ РАДИВОЈ
+ЈЕВРИЋ РАДИВОЈ
+ЈЕВРИЋ РАДОСЛАВ
+ЈЕВРИЋ РАНИСАВ
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛОБОДАН
+ЈЕВРИЋ СРБОЉУБ
+ЈЕВРИЋ СТАМЕНКО
+ЈЕВРИЋ СТЕВАН ДР ИНГ
+ЈЕВРИЋ СТЕВАН
+ЈЕВРИЋ ЗЛАТОМИР
+ЈЕВТОВИЋ АЛЕКСАНДАР
+ЈЕВТОВИЋ АЛЕКСАНДРА
+ЈЕВТОВИЋ ЈОРДАН
+ЈЕВТОВИЋ МИЛАН
+ЈЕВТОВИЋ МИРКО
+ЈЕВТОВИЋ РАДИВОЈЕ
+ЈЕВТОВИЋ СТАНИСЛАВА
+ЈЕВТОВИЋ ВОЈКАН
+ЈЕВТОВИЋ ВУКОТА
+ЈЕВТОВИЋ ВУЛЕ
+ЈЕЗДИЋ ДОБРИЛА
+ЈЕЗДИЋ ДРАГАН
+ЈЕЗДИЋ ЈОВАН
+ЈЕЗДИЋ ЉУБОМИР
+ЈЕЗДИЋ МОМЧИЛО
+ЈЕЗДИЋ САВА
+ЈЕЗДИЋ СПИРА
+ЈЕЗДИЋ СТЕВКА
+ЈЕЗДИЋ СТОЈАН ДИПЛ ИНГ
+ЈЕЗДИМИРОВИЋ АЦА
+ЈЕЗДИМИРОВИЋ ДРАГАН
+ЈЕЗДИМИРОВИЋ ДРАГИЦА
+ЈЕЗДИМИРОВИЋ ЛАЗАР
+ЈЕЗДИМИРОВИЋ МИРЈАНА
+ЈЕЗДИМИРОВИЋ СТОЈАНКА
+ЈЕЗДИМИРОВИЋ ЗОРИЦА
+ЈЕЗЕРКИЋ ОЛГИЦА
+ЈИРОТА-ГАЗИБАРИЋ ДАНИЕЛА
+ЈОЧИЋ МОМЧИЛО
+ЈОЧИЋ СТАНОЈЛО
+ЈОЧИН ЖИКА
+ЈОЧКОВИЋ ЈОВАН
+ЈОШАНОВ АЛЕКСАНДРА
+ЈОШАНОВ ЛАЗАР
+ЈОШАНОВ ЉУБИЦА
+ЈОШАНОВ МЛАДЕН
+ЈОШЕВСКИ ЂОРЂИЈА
+ЈОШИЋ ЂУРА
+ЈОШИЋ БЛАЖО
+ЈОШИЋ ДРАГОСЛАВ
+ЈОШИЋ МИЛАН
+ЈОШИЋ МИЛИВОЈ
+ЈОШИЋ МИЛОРАД
+ЈОШИЋ ПЕТАР
+ЈОЖА КАТАЛИН
+ЈОЖИЋ ЂУРА
+ЈОАНОВИЋ ЦВЕТКО ДИПЛ ИНГ
+ЈОАНОВИЋ ЕРЖЕБЕТ
+ЈОАНОВИЋ РАМОНА
+ЈОЦИЋ ЖИВОЈИН ДИПЛ ИНГ
+ЈОЦИЋ ЖИВОРАД ДР
+ЈОЦИЋ ЂОРЂЕ
+ЈОЦИЋ АЛЕКСАНДАР
+ЈОЦИЋ АНЂЕЛКА
+ЈОЦИЋ АНГЕЛИНА
+ЈОЦИЋ АНКИЦА
+ЈОЦИЋ БОРИСЛАВ
+ЈОЦИЋ БРАНИСЛАВ ДР
+ЈОЦИЋ БРАНКА
+ЈОЦИЋ ДРАГИЦА
+ЈОЦИЋ ДРАГУТИН
+ЈОЦИЋ ФИЛИП
+ЈОЦИЋ ХРИСТИНА
+ЈОЦИЋ ИЛИЈА
+ЈОЦИЋ ИСИДОР
+ЈОЦИЋ ЈЕЛИСАВЕТА
+ЈОЦИЋ ЈОВАНКА
+ЈОЦИЋ ЉИЉАНА
+ЈОЦИЋ МАРИЈА
+ЈОЦИЋ МАРКО
+ЈОЦИЋ МАРКО
+ЈОЦИЋ МАРТА
+ЈОЦИЋ МИЛАДИНКА
+ЈОЦИЋ МИЛАН
+ЈОЦИЋ МИЛАН
+ЈОЦИЋ МИЛОШ
+ЈОЦИЋ МИЛОШ
+ЈОЦИЋ МИРКО
+ЈОЦИЋ МЛАДЕН
+ЈОЦИЋ НЕНАД
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ РАДИВОЈ
+ЈОЦИЋ РАДМИЛА
+ЈОЦИЋ РАДОСЛАВ
+ЈОЦИЋ РОДОЉУБ
+ЈОЦИЋ САВА
+ЈОЦИЋ СЛОБОДАН
+ЈОЦИЋ СМИЉА
+ЈОЦИЋ СТЕВАН ДИПЛ ИНГ
+ЈОЦИЋ СТЕВАН
+ЈОЦИЋ СТЕВАН
+ЈОЦИЋ ВАЛЕРИЈА
+ЈОЦИЋ ВЕРА
+ЈОЦИЋ ЗОРАН
+ЈОЦИН БРАНКО
+ЈОЦИН ПЕРСИДА
+ЈОЦИН ЗЛАТОЈЕ
+ЈОЦКОВ ДАНИЦА
+ЈОЦКОВ МАНОЈЛО
+ЈОЦКОВ МИЛАНКА
+ЈОЦКОВ МИЛОСАВ
+ЈОЦКОВ МИРОСЛАВА
+ЈОЦКОВ НИКОЛА
+ЈОЦКОВ НИКОЛА
+ЈОЦКОВ РАДОВАН
+ЈОЦКОВИЋ ЂОРЂЕ ДР
+ЈОЦКОВИЋ ЈОВАНКА
+ЈОЦКОВИЋ ОБРАД
+ЈОЦОВИЋ ЖИВОМИР
+ЈОЦОВИЋ МИОДРАГ
+ЈОЦОВИЋ РАДЕНКО
+ЈОЦОВИЋ ЗОРИЦА
+ЈОЦУЛОВ БРАНКА
+ЈОЦУЛОВ МИХАЉ
+ЈОДАЛ РОЖА
+ЈОХИМСТАЛ АГАТА
+ЈОЈИЋ ЂОРЂЕ
+ЈОЈИЋ АЛЕКСАНДАР
+ЈОЈИЋ БОЖИДАР
+ЈОЈИЋ ДОИНА
+ЈОЈИЋ ДРАГИ
+ЈОЈИЋ ДРАГОСЛАВ ДР
+ЈОЈИЋ ДУШАН
+ЈОЈИЋ ГЕОРГИЈЕ
+ЈОЈИЋ ИВАНКА
+ЈОЈИЋ ИВАНКА
+ЈОЈИЋ ЈЕЛА
+ЈОЈИЋ ЈЕЛЕНА
+ЈОЈИЋ ЉУБИЦА
+ЈОЈИЋ МИЋКО
+ЈОЈИЋ МИЛЕВА
+ЈОЈИЋ МИЛОШ
+ЈОЈИЋ МИОДРАГ
+ЈОЈИЋ МИРКО
+ЈОЈИЋ МИРКО
+ЈОЈИЋ МИРОЉУБ
+ЈОЈИЋ МИРОСЛАВ
+ЈОЈИЋ ОЛГА
+ЈОЈИЋ САВА
+ЈОЈИЋ СИМО
+ЈОЈИЋ СТАНА
+ЈОЈИЋ СТЕВАН
+ЈОЈИЋ СВЕТОЗАР
+ЈОЈИЋ СВЕТО
+ЈОЈИН БАРБАРА
+ЈОЈИН ДОБРОСАВ
+ЈОЈИН СИНИША
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ АЛЕКСАНДАР
+ЈОЈКИЋ БОРИСЛАВА
+ЈОЈКИЋ БРАНИСЛАВ
+ЈОЈКИЋ ДАНИЦА
+ЈОЈКИЋ ДИНА
+ЈОЈКИЋ ДУШАН
+ЈОЈКИЋ ДУШКО
+ЈОЈКИЋ ЈОВИЦА
+ЈОЈКИЋ КАТИЦА
+ЈОЈКИЋ КАТИЦА
+ЈОЈКИЋ ЉУБОМИР
+ЈОЈКИЋ МАРИЦА
+ЈОЈКИЋ МАРИЈА
+ЈОЈКИЋ МАРИЈА
+ЈОЈКИЋ МИЛАДИН
+ЈОЈКИЋ МИЛЕНА
+ЈОЈКИЋ МИЛЕНКО
+ЈОЈКИЋ МИЛИЦА
+ЈОЈКИЋ МИЛИЦА
+ЈОЈКИЋ МИОДРАГ
+ЈОЈКИЋ МИРЈАНА ДР
+ЈОЈКИЋ МИРОСЛАВ
+ЈОЈКИЋ НАДА
+ЈОЈКИЋ ОЛГА
+ЈОЈКИЋ ПАЈА
+ЈОЈКИЋ-ПОЛЕТТО ЗОРА
+ЈОЈКИЋ РАДИВОЈ
+ЈОЈКИЋ РАДИВОЈ
+ЈОЈКИЋ РАДОЈКА
+ЈОЈКИЋ РАДОСЛАВ
+ЈОЈКИЋ СЛАВКО
+ЈОЈКИЋ СМИЉКА
+ЈОЈКИЋ СНЕЖАНА
+ЈОЈКИЋ СОФИЈА
+ЈОЈКИЋ СОКО
+ЈОЈКИЋ СТАНКО
+ЈОЈКИЋ УРОШ
+ЈОЈКИЋ ВОЈИСЛАВ
+ЈОЈКИЋ ЗДРАВКО
+ЈОКА КАТАРИНА
+ЈОКА ВАСО
+ЈОКАНИЋ ИЛИЈА
+ЈОКАНОВИЋ БЛАГОЈЕ
+ЈОКАНОВИЋ БОСИЉКА
+ЈОКАНОВИЋ БРАНКО
+ЈОКАНОВИЋ БРАНКО
+ЈОКАНОВИЋ ДЕСИМИР
+ЈОКАНОВИЋ МИЛОРАД
+ЈОКАНОВИЋ РАДА
+ЈОКАНОВИЋ РАДОМИР
+ЈОКАНОВИЋ СИНИША
+ЈОКАНОВИЋ ТОДОР
+ЈОКАНОВИЋ ТОМИСЛАВ
+ЈОКАНОВИЋ ВЛАДИМИР ДР
+ЈОКИШИЋ БРАНКО
+ЈОКИШИЋ СПАСОЈЕ
+ЈОКИЋ ЖАРКО
+ЈОКИЋ ЖАРКО
+ЈОКИЋ ЖИВАН
+ЈОКИЋ ЂОРЂЕ
+ЈОКИЋ ЂУРАЂ
+ЈОКИЋ БОЖИДАР
+ЈОКИЋ БОРИСЛАВ
+ЈОКИЋ БРАНИСЛАВ
+ЈОКИЋ БУДИМИР
+ЈОКИЋ ЦВИЈЕТИН
+ЈОКИЋ ДАНЕ
+ЈОКИЋ ДОБРИЛА
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГИЦА
+ЈОКИЋ ДРАГИЊА
+ЈОКИЋ ДУШАНКА
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ИГЊАТ
+ЈОКИЋ ЈЕЛЕНА
+ЈОКИЋ ЈОКА
+ЈОКИЋ КРСТАН
+ЈОКИЋ КСЕНИЈА
+ЈОКИЋ ЛАКИЋ
+ЈОКИЋ ЛАЗО
+ЈОКИЋ ЉИЉАНА
+ЈОКИЋ ЉУБИЦА
+ЈОКИЋ ЉУБО
+ЈОКИЋ ЛУКА
+ЈОКИЋ МАРА
+ЈОКИЋ МАРИЈА
+ЈОКИЋ МАРКО
+ЈОКИЋ МИХАЈЛО
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛЕНКО
+ЈОКИЋ МИЛЕВА
+ЈОКИЋ МИЛИЈА
+ЈОКИЋ МИЛИСАВ
+ЈОКИЋ МИЛОРАД
+ЈОКИЋ МИЛОВАН
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРОСЛАВ
+ЈОКИЋ НАДА
+ЈОКИЋ НАДА
+ЈОКИЋ НАДИЦА
+ЈОКИЋ НЕНАД
+ЈОКИЋ НИКОЛА
+ЈОКИЋ НИКОЛА
+ЈОКИЋ ПЕТАР
+ЈОКИЋ РАДИВОЈЕ
+ЈОКИЋ РАДОИЦА
+ЈОКИЋ РИСТА
+ЈОКИЋ САША
+ЈОКИЋ СИМА
+ЈОКИЋ СИНИША
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СНЕЖАНА
+ЈОКИЋ СТЕВАН ДИПЛ ИНГ
+ЈОКИЋ СТЕВАН
+ЈОКИЋ СВЕТИСЛАВ
+ЈОКИЋ СВЕТОЗАР
+ЈОКИЋ СВЕТОЗАР
+ЈОКИЋ ТОМИСЛАВ
+ЈОКИЋ ВЕЉКО
+ЈОКИЋ ВЕРА
+ЈОКИЋ ВЛАДО
+ЈОКИЋ ВОЈИСЛАВ
+ЈОКИЋ ВОЈИСЛАВ
+ЈОКИЋ ВУЈАДИН
+ЈОКИЋ ВУКАДИН
+ЈОКИЋ ВУКО
+ЈОКИЋ ЗЛАТА
+ЈОКИЋ ЗОРКА
+ЈОКМАНОВИЋ САВЕТА
+ЈОКОВИЋ ЖИВКО
+ЈОКОВИЋ ЂУРЂИНА
+ЈОКОВИЋ ДОБРИВОЈЕ
+ЈОКОВИЋ-МИКИЋ МИРЈАНА
+ЈОКОВИЋ МИЛКА
+ЈОКОВИЋ РАДОСАВ
+ЈОКОВИЋ ВОЈИСЛАВ
+ЈОКСИЋ ДРАГИША
+ЈОКСИЋ ГОЈКО
+ЈОКСИМОВЋ НЕБОЈША
+ЈОКСИМОВИЋ ЖАРКО
+ЈОКСИМОВИЋ ДАРКО
+ЈОКСИМОВИЋ ДУШКО
+ЈОКСИМОВИЋ ГОЛУБАНКА
+ЈОКСИМОВИЋ ЈОВАН ДИПЛ ИНГ
+ЈОКСИМОВИЋ ЉУБИЦА
+ЈОКСИМОВИЋ ЉУБИСАВ ДР
+ЈОКСИМОВИЋ ЉУБИСАВ
+ЈОКСИМОВИЋ МОМЧИЛО
+ЈОКСИМОВИЋ НАДА
+ЈОКСИМОВИЋ ПАВЛЕ
+ЈОКСИМОВИЋ ПЕТАР
+ЈОКСИМОВИЋ РАДОМИР
+ЈОКСИМОВИЋ СИНИША
+ЈОКСИМОВИЋ СТЕВАН
+ЈОКСИМОВИЋ ВЛАДИМИР
+ЈОКСИМОВИЋ ЗЛАТОМИР
+ЈОКСИМОВИЋ ЗОРАН
+ЈОКСОВИЋ ДРАГИША
+ЈОКСОВИЋ СНЕЖАНА
+ЈОЛДИЋ МАРА
+ЈОЛДИЋ МИОДРАГ
+ЈОЛИЋ ЖИВАН
+ЈОЛИЋ ЖИВОЈИН
+ЈОЛИЋ АНГЕЛИНА
+ЈОЛИЋ ДАНИЛО
+ЈОЛИЋ ЈАДРАНКА
+ЈОЛИЋ ЈОВАН
+ЈОЛИЋ КОНСТАНТИН
+ЈОЛИЋ КОСТА
+ЈОЛИЋ МИРЈАНА
+ЈОЛИЋ НЕБОЈША
+ЈОЛИЋ ПЕТАР
+ЈОЛИЋ СЛОБОДАН
+ЈОЛИЋ УРОШ
+ЈОЛИЋ ВАСА
+ЈОЛОВИЋ МИЛОВАН
+ЈОНЧИЋ МАРА
+ЈОНАШ ДУШАН
+ЈОНАШ ЛАСЛО
+ЈОНАШ НИКОЛА
+ЈОНИЋ БОШКО
+ЈОНИЋ ДРАГАН
+ЈОЊЕВ МИЛИВОЈ
+ЈОЊЕВ СЛАВОЉУБ
+ЈОЊИЋ САВО
+ЈОНОВИЋ ДУШАН
+ЈОНОВИЋ ПЕТАР
+ЈОНТОВИЋ АЛЕКСА
+ЈОНТОВИЋ-БИКИЋ МИРЈАНА
+ЈОНТОВИЋ РУДОЛФ
+ЈОНУЗОВИЋ ВЛАДИМИР
+ЈОРДАЧ АНА
+ЈОРДАН ЕРЖЕБЕТ
+ЈОРДАНОВ КИРИЛ
+ЈОРДАНОВСКИ СТАНОЈКО
+ЈОРГАНОВИЋ СИМО
+ЈОРГИЋ ЖИВАНА
+ЈОРГИЋ ДРАГОМИР
+ЈОРГОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОРОВИЋ БРАНКО
+ЈОРОВИЋ РАНКО
+ЈОСЕВСКИ СИМЕОН
+ЈОСИЋ АЛЕКСАНДАР
+ЈОСИЋ ФИЛИП
+ЈОСИЋ ИЛИЈА
+ЈОСИЋ ИВАН
+ЈОСИЋ КОСАНА
+ЈОСИЋ ЉУБИНКО
+ЈОСИЋ ЉУБИНКО
+ЈОСИЋ ЉУБОМИР
+ЈОСИЋ МИЛЕНКО
+ЈОСИЋ МИРЈАНА
+ЈОСИЋ ОБРАД
+ЈОСИЋ ОЛГА
+ЈОСИЋ РАДИНКА
+ЈОСИЋ СРЂА
+ЈОСИЋ СТЕВАН
+ЈОСИЋ СТЕВАН
+ЈОСИФИДИС КОСТА
+ЈОСИФОВИЋ ДИМИТРИЈЕ
+ЈОСИФОВИЋ ДРАГИЋ
+ЈОСИФОВИЋ ЉУБИЦА
+ЈОСИФОВИЋ ОЛГА
+ЈОСИМЧЕВ ЗВОНИМИР
+ЈОСИМОВ БОРИСЛАВ
+ЈОСИМОВ ДРАГОСЛАВ
+ЈОСИМОВ ДУШАН
+ЈОСИМОВ ГЛИГОРИЈЕ
+ЈОСИМОВ ЈЕЛЕНА
+ЈОСИМОВ СТЕВАН
+ЈОСИМОВ ВАСИЛИЈЕ
+ЈОСИМОВ ВОЈО
+ЈОСИМОВИЋ ЖИВА
+ЈОСИМОВИЋ БОРИВОЈ
+ЈОСИМОВИЋ БОРИВОЈ
+ЈОСИМОВИЋ ЈУЛИЈАНА
+ЈОСИМОВИЋ МАРКО
+ЈОСИМОВИЋ МИЛИЦА
+ЈОСИМОВИЋ НЕНАД
+ЈОСИМОВИЋ СИНИША
+ЈОСИМОВИЋ СТЕВАН
+ЈОСИМОВИЋ СТЕВАН
+ЈОСИМОВИЋ СТЕВКА
+ЈОСИМОВИЋ ТАТЈАНА
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ЗДЕНКА
+ЈОСИМОВСКИ АЛЕКСАНДАР
+ЈОСИН ДРАГАН
+ЈОСИН МАРИЈА
+ЈОСИН МИЛЕ
+ЈОСИН РАДИЦА
+ЈОСИН РАДОВАН
+ЈОСИН СЛОБОДАН
+ЈОСИПОВИЋ БОРИСЛАВ
+ЈОСИПОВИЋ БОРО
+ЈОСИПОВИЋ ДАНИЦА
+ЈОСИПОВИЋ ИВИЦА
+ЈОСИПОВИЋ ПЕТАР
+ЈОСИПОВИЋ СЛОБОДАН
+ЈОСИПОВИЋ ВЛАДИМИР
+ЈОТАНОВИЋ ДАРИНКА
+ЈОТАНОВИЋ КОРНЕЛИЈА
+ЈОТАНОВИЋ ЉУБОМИР
+ЈОТАНОВИЋ МИЛИВОЈ
+ЈОТАНОВИЋ НЕДЕЉКО
+ЈОТАНОВИЋ РАЈКО
+ЈОТАНОВИЋ СТАНКО
+ЈОТАНОВИЋ ТОМИСЛАВ
+ЈОТИЋ МИРОСЛАВ
+ЈОВЧИЋ ДУШКО
+ЈОВЧИЋ СЛАВКО
+ЈОВЧИЋ ВЛАДАН
+ЈОВАЧЕВИЋ ДМИТАР
+ЈОВАШЕВИЋ СЛОБОДАН
+ЈОВАНЧЕВИЋ БОСИЉКА
+ЈОВАНЧЕВИЋ ГОЈКО
+ЈОВАНЧЕВИЋ ИЛИЈА
+ЈОВАНЧЕВИЋ ЈЕЛИЦА
+ЈОВАНЧЕВИЋ ЈОВАН
+ЈОВАНЧЕВИЋ ЈОВАН
+ЈОВАНЧЕВИЋ КОВИЉКА
+ЈОВАНЧЕВИЋ СТЕВАН
+ЈОВАНЧЕВИЋ-ЗЕКИЋ НИКОЛА
+ЈОВАНЧЕВИЋ-ЗЕКИЋ НИКОЛА
+ЈОВАНЧИЋ ДРАГИЦА
+ЈОВАНЧИЋ МЕЛАНИЈА
+ЈОВАНЧИЋ МИОДРАГ
+ЈОВАНЧИЋ МИРОСЛАВ
+ЈОВАНЦАИ МАРИЈА
+ЈОВАНДИЋ МАНДА
+ЈОВАНДИЋ МИЛОШ
+ЈОВАНДИН МИЛАН
+ЈОВАНИЋ ЂОРЂЕ
+ЈОВАНИЋ ЂУРО
+ЈОВАНИЋ БОШКО
+ЈОВАНИЋ БОШКО
+ЈОВАНИЋ ДОБРИЦА
+ЈОВАНИЋ ДУШАН ДИПЛ ИНГ
+ЈОВАНИЋ МАРИЈА
+ЈОВАНИЋ МИРКО
+ЈОВАНИЋ МЛАДЕН
+ЈОВАНИЋ МОМИР
+ЈОВАНИЋ ОЛИВЕРА
+ЈОВАНИЋ ОЛИВЕРА
+ЈОВАНКИН АЛЕКСАНДАР
+ЈОВАНКОВИЋ РАДОСЛАВ
+ЈОВАНОВ ЖАРКО
+ЈОВАНОВ ЖИВА
+ЈОВАНОВ БИЉАНА
+ЈОВАНОВ БОШКО
+ЈОВАНОВ БОЈАНА
+ЈОВАНОВ БОРИСЛАВ
+ЈОВАНОВ БОРИСЛАВ
+ЈОВАНОВ БРАНИСЛАВ
+ЈОВАНОВ ДРАГАН
+ЈОВАНОВ ДРАГИЦА
+ЈОВАНОВ ДРАГИЊА
+ЈОВАНОВ ДРАГОЉУБ
+ЈОВАНОВ ДРАГОМИР
+ЈОВАНОВ ДУШАН
+ЈОВАНОВ ДУШАН
+ЈОВАНОВ ДУШИЦА
+ЈОВАНОВ ИГЊАТ
+ЈОВАНОВ ИСА
+ЈОВАНОВ ИВАН
+ЈОВАНОВ ЈАША
+ЈОВАНОВ ЈАСНА
+ЈОВАНОВ ЈЕЛЕНА
+ЈОВАНОВ ЈОВАН
+ЈОВАНОВ ЈОВАН
+ЈОВАНОВ ЈОВИЦА
+ЈОВАНОВ ЛАЗАР
+ЈОВАНОВ ЛАЗАР
+ЈОВАНОВ МЕЛАНИЈА
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛИВОЈ
+ЈОВАНОВ МИЛОШ
+ЈОВАНОВ МИРЈАНА
+ЈОВАНОВ МЛАДЕН
+ЈОВАНОВ МОМЧИЛО
+ЈОВАНОВ ПЕТАР
+ЈОВАНОВ РАДИВОЈ
+ЈОВАНОВ САВА
+ЈОВАНОВ СПОМЕНКА
+ЈОВАНОВ СТЕВАНКА
+ЈОВАНОВ СТЕВАН
+ЈОВАНОВ СВЕТИСЛАВ
+ЈОВАНОВ СВЕТИСЛАВ
+ЈОВАНОВ СВЕТОЗАР
+ЈОВАНОВ ТОДОР
+ЈОВАНОВ ТОМА
+ЈОВАНОВ ВИДА
+ЈОВАНОВ ВЛАДИМИР
+ЈОВАНОВИЋ ЧЕДА
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДО
+ЈОВАНОВИЋ ЖИВАДИН
+ЈОВАНОВИЋ ЖИВКА
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОРАД
+ЈОВАНОВИЋ ЖИВОРАД
+ЈОВАНОВИЋ ЖИВОТА
+ЈОВАНОВИЋ ЂЕНЂИ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂУРЂИНА
+ЈОВАНОВИЋ ЂУРЂИНКА
+ЈОВАНОВИЋ ЂУРА
+ЈОВАНОВИЋ ЂУРО
+ЈОВАНОВИЋ АЛЕКСАНДАР ДР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДРА
+ЈОВАНОВИЋ АЛЕКСА
+ЈОВАНОВИЋ АНЂА
+ЈОВАНОВИЋ АНЂА
+ЈОВАНОВИЋ АНЂЕЛИЈА ДР
+ЈОВАНОВИЋ АНЂЕЛКА
+ЈОВАНОВИЋ АНЂЕЛКО
+ЈОВАНОВИЋ АНДРИЈА ДИПЛ ИНГ
+ЈОВАНОВИЋ АНДРИЈА ДИПЛ ОЕЦ
+ЈОВАНОВИЋ АНДРИЈА
+ЈОВАНОВИЋ АНДРИЈА
+ЈОВАНОВИЋ АНГЕЛИНА
+ЈОВАНОВИЋ АНИЦА
+ЈОВАНОВИЋ АНКИЦА
+ЈОВАНОВИЋ АРАНЂЕЛ
+ЈОВАНОВИЋ АРСА ДР
+ЈОВАНОВИЋ АРСА
+ЈОВАНОВИЋ АРСЕНИЈЕ
+ЈОВАНОВИЋ-АРСИЋ ВИОЛЕТА
+ЈОВАНОВИЋ-БАНКОВАЧКИ ЈОВАНКА
+ЈОВАНОВИЋ БЛАГОЈЕ
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОЖИДАР ПРОФЕСОР
+ЈОВАНОВИЋ БОЖИДАР
+ЈОВАНОВИЋ БОЖО
+ЈОВАНОВИЋ БОГДАНКА
+ЈОВАНОВИЋ БОГДАНКА
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОЈАНА
+ЈОВАНОВИЋ БОРИСЛАВ
+ЈОВАНОВИЋ БОРИСЛАВ
+ЈОВАНОВИЋ БОРИВОЈ ДИПЛ ИНГ
+ЈОВАНОВИЋ БОРИВОЈ
+ЈОВАНОВИЋ БОСИЉКА
+ЈОВАНОВИЋ БРАНИБОР
+ЈОВАНОВИЋ БРАНИМИР
+ЈОВАНОВИЋ БРАНИСЛАВА
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНКА
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАТИСЛАВ ДР
+ЈОВАНОВИЋ БУДИМИР
+ЈОВАНОВИЋ ЦВЕТА
+ЈОВАНОВИЋ ЦВЕТКО
+ЈОВАНОВИЋ ДАЛИБОР ДИПЛ ПРАВНИК
+ЈОВАНОВИЋ ДАЛИБОР
+ЈОВАНОВИЋ ДАНИЛО
+ЈОВАНОВИЋ ДАРИНКА
+ЈОВАНОВИЋ ДЕЈАН
+ЈОВАНОВИЋ ДЕЈАН
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДОБРИЛА
+ЈОВАНОВИЋ ДОБРИВОЈЕ
+ЈОВАНОВИЋ ДОБРОСАВ
+ЈОВАНОВИЋ ДОБРОСАВ
+ЈОВАНОВИЋ ДРАГАНА
+ЈОВАНОВИЋ ДРАГАНА
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГИША
+ЈОВАНОВИЋ ДРАГИЋ
+ЈОВАНОВИЋ ДРАГИЋ
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИВОЈЕ
+ЈОВАНОВИЋ ДРАГОЉУБ ОЕЦ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОСЛАВ ДИПЛ ИНГ
+ЈОВАНОВИЋ ДРАГОСЛАВ ДИПЛ ИНГ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГО
+ЈОВАНОВИЋ ДРАГУТИН
+ЈОВАНОВИЋ ДУШАН ДР ПРОФ
+ЈОВАНОВИЋ ДУШАН ДР
+ЈОВАНОВИЋ ДУШАН ДР
+ЈОВАНОВИЋ ДУШАНКА
+ЈОВАНОВИЋ ДУШАНКА
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШКО
+ЈОВАНОВИЋ ДУШКО
+ЈОВАНОВИЋ ДУДА
+ЈОВАНОВИЋ ЕЛЕНА
+ЈОВАНОВИЋ ЕМИЦА
+ЈОВАНОВИЋ ЕСМА
+ЈОВАНОВИЋ ЕВИЦА
+ЈОВАНОВИЋ ФЕЛИЦИЈА
+ЈОВАНОВИЋ ФИЛИП
+ЈОВАНОВИЋ ГЕОРГ
+ЈОВАНОВИЋ ГОЈКО
+ЈОВАНОВИЋ ГОЈКО
+ЈОВАНОВИЋ ГОРАН
+ЈОВАНОВИЋ ГОРАН
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГРОЗДА
+ЈОВАНОВИЋ ГРУЈА
+ЈОВАНОВИЋ ГРУЈИЦА
+ЈОВАНОВИЋ ХРИСТИНА
+ЈОВАНОВИЋ ИЛЕ
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИРИНА
+ЈОВАНОВИЋ ИВАН ДР
+ЈОВАНОВИЋ ИВАНКА ДР ПРОФ
+ЈОВАНОВИЋ ИВАНКА
+ЈОВАНОВИЋ ИВАН
+ЈОВАНОВИЋ ИВАН
+ЈОВАНОВИЋ ЈАША
+ЈОВАНОВИЋ ЈАДРАНКА
+ЈОВАНОВИЋ ЈАСМИНКА
+ЈОВАНОВИЋ ЈЕЛА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛИЦА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛКА
+ЈОВАНОВИЋ ЈЕВТА
+ЈОВАНОВИЋ ЈОЦА
+ЈОВАНОВИЋ ЈОВАНКА
+ЈОВАНОВИЋ ЈОВАНКА
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈУЛИЈАНА
+ЈОВАНОВИЋ ЈУЛКА
+ЈОВАНОВИЋ КАТАРИНА
+ЈОВАНОВИЋ КАТИЦА
+ЈОВАНОВИЋ КОСАНА
+ЈОВАНОВИЋ КОСТА
+ЈОВАНОВИЋ КОСТА
+ЈОВАНОВИЋ-КОСТИЋ ДРАГОСЛАВА
+ЈОВАНОВИЋ КОВИНКА
+ЈОВАНОВИЋ КСЕНИЈА
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЉИЉАНА
+ЈОВАНОВИЋ ЉУБАН
+ЈОВАНОВИЋ ЉУБИША
+ЈОВАНОВИЋ ЉУБИША
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИНКА
+ЈОВАНОВИЋ ЉУБИНКА
+ЈОВАНОВИЋ ЉУБИВОЈЕ ДР
+ЈОВАНОВИЋ ЉУБОМИР МР
+ЈОВАНОВИЋ ЉУБОМИР
+ЈОВАНОВИЋ ЉУБО
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ МАЛИША
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРИЦА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРКО
+ЈОВАНОВИЋ МАРКО
+ЈОВАНОВИЋ МИЋО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИЈАТ
+ЈОВАНОВИЋ МИЈА
+ЈОВАНОВИЋ МИЛАШИН
+ЈОВАНОВИЋ МИЛАДИН
+ЈОВАНОВИЋ МИЛАН АДВОКАТ
+ЈОВАНОВИЋ МИЛАН ДИПЛ ИНГ
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНКО ДР
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНТИЈЕ
+ЈОВАНОВИЋ МИЛЕВА
+ЈОВАНОВИЋ МИЛЕ
+ЈОВАНОВИЋ МИЛЕ
+ЈОВАНОВИЋ МИЛИЋ
+ЈОВАНОВИЋ МИЛИЋ
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЈАНА
+ЈОВАНОВИЋ МИЛИСАВ
+ЈОВАНОВИЋ МИЛИВОЈЕ
+ЈОВАНОВИЋ МИЛИВОЈ
+ЈОВАНОВИЋ МИЛИВОЈ
+ЈОВАНОВИЋ МИЉАНА
+ЈОВАНОВИЋ МИЛКАН
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОЊА
+ЈОВАНОВИЋ МИЛОРАД ДИПЛ ИНГ
+ЈОВАНОВИЋ МИЛОРАД ДР ЛЕКАР
+ЈОВАНОВИЋ МИЛОРАД
+ЈОВАНОВИЋ МИЛОРАД
+ЈОВАНОВИЋ МИЛОВАН
+ЈОВАНОВИЋ МИЛОВАН
+ЈОВАНОВИЋ МИЛУТИН
+ЈОВАНОВИЋ МИЛУТИН
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРОЉУБ
+ЈОВАНОВИЋ МИРОСЛАВА
+ЈОВАНОВИЋ МИРОСЛАВА
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИТАР
+ЈОВАНОВИЋ МЛАЂА
+ЈОВАНОВИЋ МЛАДЕНКА
+ЈОВАНОВИЋ МЛАДЕН
+ЈОВАНОВИЋ МЛАДЕН
+ЈОВАНОВИЋ МОМЧИЛО
+ЈОВАНОВИЋ МОМЧИЛО
+ЈОВАНОВИЋ МОМИР
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НЕБОЈША
+ЈОВАНОВИЋ НЕДА
+ЈОВАНОВИЋ НЕДЕЉКА
+ЈОВАНОВИЋ НЕМАЊА
+ЈОВАНОВИЋ НЕМАЊА
+ЈОВАНОВИЋ НЕНАД АДВОКАТ
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕВЕНА
+ЈОВАНОВИЋ НЕВЕНКА
+ЈОВАНОВИЋ НЕВЕНКА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НОВАК
+ЈОВАНОВИЋ НОВИЦА
+ЈОВАНОВИЋ ОБРАД
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГИЦА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПЕРА
+ЈОВАНОВИЋ ПЕРИЦА
+ЈОВАНОВИЋ ПЕРИЦА
+ЈОВАНОВИЋ ПЕРО
+ЈОВАНОВИЋ ПЕРО
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПРЕДРАГ ДР
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ РАДЕ
+ЈОВАНОВИЋ РАДИША
+ЈОВАНОВИЋ РАДИНКА
+ЈОВАНОВИЋ РАДИВОЈ
+ЈОВАНОВИЋ РАДИВОЈ
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДОМИР ДР
+ЈОВАНОВИЋ РАДОМИР
+ЈОВАНОВИЋ РАДОЊА
+ЈОВАНОВИЋ РАДОСЛАВА
+ЈОВАНОВИЋ РАДОСЛАВ
+ЈОВАНОВИЋ РАДОСЛАВ
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАЈКО
+ЈОВАНОВИЋ РАНЂЕЛ
+ЈОВАНОВИЋ РАНКО
+ЈОВАНОВИЋ РАТКА
+ЈОВАНОВИЋ РУЖА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ САША
+ЈОВАНОВИЋ САВА
+ЈОВАНОВИЋ САВЕТА
+ЈОВАНОВИЋ САВО
+ЈОВАНОВИЋ САВО
+ЈОВАНОВИЋ СЕЛИМИР
+ЈОВАНОВИЋ СЕРАФИМ
+ЈОВАНОВИЋ СИМА
+ЈОВАНОВИЋ СИМА
+ЈОВАНОВИЋ СИМО
+ЈОВАНОВИЋ СИНИША
+ЈОВАНОВИЋ СЛАВИЦА
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛОБОДАН ДР
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СМИЉА
+ЈОВАНОВИЋ СМИЉА
+ЈОВАНОВИЋ СМИЉКА
+ЈОВАНОВИЋ СМИЉКА
+ЈОВАНОВИЋ СОФИЈА
+ЈОВАНОВИЋ СПИРА
+ЈОВАНОВИЋ СПОМЕНКА
+ЈОВАНОВИЋ СРЂАН
+ЈОВАНОВИЋ СРБИСЛАВ
+ЈОВАНОВИЋ СРЕТЕН
+ЈОВАНОВИЋ СТАНИША
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНКО
+ЈОВАНОВИЋ СТАНОЈЕ
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТОЈША
+ЈОВАНОВИЋ-СТОЈАН ГЕРТРУДА ДР
+ЈОВАНОВИЋ СТОЈАНКА
+ЈОВАНОВИЋ СТОЈАНКА
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СУЗАНА
+ЈОВАНОВИЋ СВЕТЛАНА
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ ТАТЈАНА
+ЈОВАНОВИЋ ТЕОДОРА
+ЈОВАНОВИЋ ТИХОМИР
+ЈОВАНОВИЋ ТИХОМИР
+ЈОВАНОВИЋ ТОДОР
+ЈОВАНОВИЋ ТОМА
+ЈОВАНОВИЋ ТОМИСЛАВ
+ЈОВАНОВИЋ ТОМИСЛАВ
+ЈОВАНОВИЋ ТРАЈКО
+ЈОВАНОВИЋ ТУГОМИР
+ЈОВАНОВИЋ УРОШ
+ЈОВАНОВИЋ ВАСА
+ЈОВАНОВИЋ ВАСА
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЉ
+ЈОВАНОВИЋ ВЕЛИЧКО
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИНКА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРИЦА
+ЈОВАНОВИЋ ВЕРИЦА
+ЈОВАНОВИЋ ВЕРОЉУБ
+ЈОВАНОВИЋ ВЕСЕЛИН
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВИДА
+ЈОВАНОВИЋ ВИДОСЛАВ
+ЈОВАНОВИЋ ВИЛМА
+ЈОВАНОВИЋ ВЛАДА
+ЈОВАНОВИЋ ВЛАДА
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИСЛАВА
+ЈОВАНОВИЋ ВЛАЈКО
+ЈОВАНОВИЋ ВЛАСТИМИР
+ЈОВАНОВИЋ ВОЈИСЛАВ ДР ПРОФ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВУЧЕТА
+ЈОВАНОВИЋ ЗАГОРКА
+ЈОВАНОВИЋ ЗДЕНКА
+ЈОВАНОВИЋ ЗДРАВКО
+ЈОВАНОВИЋ ЗДРАВКО
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРА
+ЈОВАНОВИЋ ЗОРА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРКА
+ЈОВАНОВИЋ ЗВОНИМИР
+ЈОВАНОВСКА ЦВЕТА
+ЈОВАНОВСКА ТАСКА
+ЈОВАНОВСКИ ДИМИТАР
+ЈОВАНОВСКИ ДУШАН
+ЈОВАНОВСКИ МИЛЕ
+ЈОВАНОВСКИ МИЛЕ
+ЈОВАНОВСКИ МИЛИЦА
+ЈОВАНОВСКИ НИКОЛА
+ЈОВАНОВСКИ ПЕТАР
+ЈОВАНОВСКИ СИМЕОНА
+ЈОВАНОВСКИ СТОЈАДИН
+ЈОВЕР МИХАЉ
+ЈОВЕТИЋ АНДРИЈА
+ЈОВЕТИЋ БРАНКО
+ЈОВЕТИЋ БРАНКО
+ЈОВЕТИЋ МИЛИЦА
+ЈОВЕТИЋ СТАНКО
+ЈОВЕТИЋ ВЕСЕЛИН
+ЈОВИЧЕВИЋ ВЛАДИМИР ДР
+ЈОВИЧИЋ ЧЕДОМИР
+ЈОВИЧИЋ ЖАРКО
+ЈОВИЧИЋ ЖАРКО
+ЈОВИЧИЋ ЖЕЉКО
+ЈОВИЧИЋ ЖИВАН
+ЈОВИЧИЋ ЂОРЂЕ
+ЈОВИЧИЋ ЂОРЂЕ
+ЈОВИЧИЋ ЂУРА
+ЈОВИЧИЋ АНКИЦА
+ЈОВИЧИЋ БОШКО
+ЈОВИЧИЋ БОГДАН
+ЈОВИЧИЋ БОРА
+ЈОВИЧИЋ БРАНЕ
+ЈОВИЧИЋ БРАНИСЛАВА
+ЈОВИЧИЋ БРАНКА
+ЈОВИЧИЋ ДЕЈАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГОЉУБ
+ЈОВИЧИЋ ДУШАН
+ЈОВИЧИЋ ДУШАН
+ЈОВИЧИЋ ДУШКО
+ЈОВИЧИЋ ГЕОРГИЈЕ
+ЈОВИЧИЋ ХЕЛЕНА
+ЈОВИЧИЋ ИЛИЈА
+ЈОВИЧИЋ ИЛИЈА
+ЈОВИЧИЋ ЈЕЛИСАВЕТА
+ЈОВИЧИЋ ЈОВАН
+ЈОВИЧИЋ ЈОВИЦА
+ЈОВИЧИЋ КАТИЦА
+ЈОВИЧИЋ ЛАЗАР
+ЈОВИЧИЋ ЛЕПОСАВА
+ЈОВИЧИЋ ЉИЉАНА
+ЈОВИЧИЋ ЉИЉАНА
+ЈОВИЧИЋ ЉУБИЦА
+ЈОВИЧИЋ ЉУБИЦА
+ЈОВИЧИЋ ЉУБИНКА
+ЈОВИЧИЋ ЉУБОМИР
+ЈОВИЧИЋ МАКСИМ
+ЈОВИЧИЋ МАРА
+ЈОВИЧИЋ МАРИЈА
+ЈОВИЧИЋ МАРИЈА
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МИЛАДИН
+ЈОВИЧИЋ МИЛАН
+ЈОВИЧИЋ МИЛАН
+ЈОВИЧИЋ МИЛЕНКО
+ЈОВИЧИЋ МИЛЕНКО
+ЈОВИЧИЋ МИЛИЦА
+ЈОВИЧИЋ МИЛИЦА
+ЈОВИЧИЋ МИЛОШ
+ЈОВИЧИЋ МИЛОШ
+ЈОВИЧИЋ МИЛОМИР
+ЈОВИЧИЋ МИЛОРАД
+ЈОВИЧИЋ МИЛОВАН
+ЈОВИЧИЋ МИРОСЛАВ
+ЈОВИЧИЋ МЛАДЕН
+ЈОВИЧИЋ ОБРАД
+ЈОВИЧИЋ ОЛГА
+ЈОВИЧИЋ ПАЈА
+ЈОВИЧИЋ ПЕТАР
+ЈОВИЧИЋ РАДА
+ЈОВИЧИЋ РАДЕ
+ЈОВИЧИЋ РАДИСЛАВ
+ЈОВИЧИЋ РАДИВОЈЕ
+ЈОВИЧИЋ РАДОМИР
+ЈОВИЧИЋ РАДОВАН
+ЈОВИЧИЋ РАТКО
+ЈОВИЧИЋ САВЕТА
+ЈОВИЧИЋ СИМО
+ЈОВИЧИЋ СЛАВКО
+ЈОВИЧИЋ СЛОБОДАНКА
+ЈОВИЧИЋ СЛОБОДАН
+ЈОВИЧИЋ СРЕТЕН
+ЈОВИЧИЋ СТАНКО
+ЈОВИЧИЋ СВЕТИСЛАВ
+ЈОВИЧИЋ СВЕТОЗАР
+ЈОВИЧИЋ СВЕТОЗАР
+ЈОВИЧИЋ ТАНАСИЈЕ
+ЈОВИЧИЋ ТАТЈАНА
+ЈОВИЧИЋ ТОДОР
+ЈОВИЧИЋ УРОШ
+ЈОВИЧИЋ ВАСА
+ЈОВИЧИЋ ВЕРИЦА
+ЈОВИЧИЋ ВОЈИН
+ЈОВИЧИЋ ВОЈИСЛАВ
+ЈОВИЧИЋ ЗДРАВКО
+ЈОВИЧИЋ ЗОРАН
+ЈОВИЧИН АЛЕКСАНДАР
+ЈОВИЧИН АНИЦА
+ЈОВИЧИН КАТИЦА
+ЈОВИЧИН ЉУБИЦА
+ЈОВИЧИН ЉУБИЦА
+ЈОВИЧИН МИЛОВАН
+ЈОВИЧИН СЛАВКО
+ЈОВИЧИН СОФИЈА
+ЈОВИЧИН ТОША
+ЈОВИШЕВИЋ МИЛАН
+ЈОВИШЕВИЋ МИРЈАНА
+ЈОВИШЕВИЋ ЗДРАВКО
+ЈОВИШИЋ ЖАРКО
+ЈОВИШИЋ ЂУРО
+ЈОВИШИЋ БОРО
+ЈОВИШИЋ ДУШАН
+ЈОВИШИЋ ЈОВАН
+ЈОВИШИЋ МИТАР
+ЈОВИШИЋ НИКОЛА
+ЈОВИШИЋ ПАВЛЕ
+ЈОВИШИЋ ПРЕДРАГ
+ЈОВИШИЋ СИМО
+ЈОВИЋ ЧЕДОМИР
+ЈОВИЋ ЖАРКО
+ЈОВИЋ ЖАРКО
+ЈОВИЋ ЖИВОЈИН
+ЈОВИЋ ЖИВОРАД
+ЈОВИЋ ЖИВОРАД
+ЈОВИЋ ЂОРЂЕ
+ЈОВИЋ АЛЕКСАНДАР
+ЈОВИЋ АЛЕКСАНДАР
+ЈОВИЋ АНИЦА
+ЈОВИЋ БОШКО
+ЈОВИЋ БОБАН
+ЈОВИЋ БОРА
+ЈОВИЋ БРАНКО
+ЈОВИЋ БРАНКО
+ЈОВИЋ ЦВЕТА
+ЈОВИЋ ДАВИД
+ЈОВИЋ ДИМИТРИЈЕ
+ЈОВИЋ ДРАГАНА
+ЈОВИЋ ДРАГОЉУБ
+ЈОВИЋ ДРАГОЉУБ
+ЈОВИЋ ДУШАН
+ЈОВИЋ ДУШАН
+ЈОВИЋ ЕРИКА
+ЈОВИЋ ГОЈКО
+ЈОВИЋ ГОРДАНА
+ЈОВИЋ ИВАНА
+ЈОВИЋ ИВАН
+ЈОВИЋ ЈАДРАНКА ДР
+ЈОВИЋ ЈАСНА
+ЈОВИЋ ЈОЦО
+ЈОВИЋ ЈОВАНКА
+ЈОВИЋ ЈОВАН
+ЈОВИЋ ЈОВАН
+ЈОВИЋ ЈОВО
+ЈОВИЋ КОСТА
+ЈОВИЋ КСЕНИЈА
+ЈОВИЋ ЉУБИША
+ЈОВИЋ МАРИЦА
+ЈОВИЋ МАРИЈАН
+ЈОВИЋ МАРКО
+ЈОВИЋ МЕЛИТА
+ЈОВИЋ МИЛАДИН
+ЈОВИЋ МИЛАНКА
+ЈОВИЋ МИЛАНКА
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛЕНКО
+ЈОВИЋ МИЛИВОЈЕ
+ЈОВИЋ МИЛОЈИЦА
+ЈОВИЋ МИЛУТИН
+ЈОВИЋ МИЛУТИН
+ЈОВИЋ МИРА
+ЈОВИЋ МИРЈАНА
+ЈОВИЋ МИРЈАНА
+ЈОВИЋ МИРОСЛАВА
+ЈОВИЋ МИРОСЛАВ
+ЈОВИЋ МИТАР
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ ПАЈИЦА
+ЈОВИЋ ПЕРСИДА
+ЈОВИЋ ПЕТАР
+ЈОВИЋ ПЕТАР
+ЈОВИЋ РАДЕ
+ЈОВИЋ РАДИВОЈЕ
+ЈОВИЋ РАДИВОЈЕ
+ЈОВИЋ РАДОВАН
+ЈОВИЋ РАЈКО
+ЈОВИЋ САВО
+ЈОВИЋ СЛАВКО
+ЈОВИЋ СЛОБОДАН
+ЈОВИЋ СПАСЕНИЈА
+ЈОВИЋ СТАНА
+ЈОВИЋ СТАНИША
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТЕВАН
+ЈОВИЋ СВЕТИСЛАВ
+ЈОВИЋ ВАСА
+ЈОВИЋ ВЕЛИМИР
+ЈОВИЋ ВЕЛИЗАР
+ЈОВИЋ ВЕЉКО
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДИМИР
+ЈОВИЋ ВЛАДИСЛАВ
+ЈОВИЋ ВОЈИСЛАВ
+ЈОВИЋ ВУКОСАВА
+ЈОВИЋ ЗДРАВКО
+ЈОВИЋ ЗВОНИМИР
+ЈОВИЋЕВИЋ БОЖИДАР
+ЈОВИЋЕВИЋ МИЛА
+ЈОВИЋЕВИЋ МИЛУТИН
+ЈОВИЋЕВИЋ НЕНАД
+ЈОВИЋЕВИЋ СТАНКО ДИПЛ ИНГ
+ЈОВИЋЕВИЋ ВИДОСАВА
+ЈОВИЋЕВИЋ ЗОРАН
+ЈОВИН ЖИВА
+ЈОВИН АНЂЕЛКА
+ЈОВИН БОРИВОЈ
+ЈОВИН БРАНКО
+ЈОВИН ДРАГАН
+ЈОВИН ДРАГОМИР
+ЈОВИН ДУШАН
+ЈОВИН ДУШАН
+ЈОВИН ИВАН
+ЈОВИН ЈЕЛЕНА
+ЈОВИН ЉУБИЦА
+ЈОВИН МИЛАН
+ЈОВИН МИЛИВОЈ ДР
+ЈОВИН МИЛОШ
+ЈОВИН МИРЈАНА
+ЈОВИН РАДОСЛАВ
+ЈОВИН РАДОВАН
+ЈОВИН СИМА
+ЈОВИН СЛАВКО ДР
+ЈОВИН СВЕТЛАНА
+ЈОВИН ВЕСНА
+ЈОВИН ЗЛАТОЈЕ
+ЈОВИН ЗУСКА
+ЈОВИНОВ БОГДАН
+ЈОВКОВИЋ МИОДРАГ
+ЈОВКОВИЋ РАТОМИР
+ЈОВОВИЋ ЖЕЉКО
+ЈОВОВИЋ АНКА
+ЈОВОВИЋ БОЖИДАР
+ЈОВОВИЋ БРАНИСЛАВ
+ЈОВОВИЋ ЈОВАН
+ЈОВОВИЋ ЈОВАН
+ЈОВОВИЋ ЉИЉАНА
+ЈОВОВИЋ МИЛОРАД
+ЈОВОВИЋ МИЛОВАН
+ЈОВОВИЋ НИКОЛА
+ЈОВОВИЋ НИКОЛА
+ЈОВОВИЋ РАДЕ
+ЈОВОВИЋ РАДОМИР
+ЈОВОВИЋ РАЈКО
+ЈОВОВИЋ СТАНА
+ЈОВОВИЋ СТОЈАН
+ЈОЗАНОВ ДАНИЦА
+ЈОЗАНОВ МИЛАН
+ЈОЗАНОВ СЛОБОДАН
+ЈОЗАНОВ ЗОРАН
+ЈОЗЕФЧАК ИВАН
+ЈОЗИЋ ЈОЗА
+ЈОЗИЋ КАТАРИНА
+ЈОЗИЋ МИОДРАГ
+ЈОЗИЋ МИРКО
+ЈОЗИЋ ПЕЈО
+ЈУШИЋ НАТАЛИЈА
+ЈУШКОВИЋ БРАНИСЛАВ
+ЈУАНИН ЖИВОЈИН ДИПЛ ИНГ
+ЈУАНИН ЈОВАН
+ЈУГИН МИЛЕНА
+ЈУГОВИЋ ЂУРАЂ
+ЈУГОВИЋ ЛЕПОСАВА
+ЈУГОВИЋ МИЛЕ
+ЈУГОВИЋ МИЛОШ
+ЈУГОВИЋ ВЕСЕЛИН
+ЈУГОВИЋ ЗДРАВКО
+ЈУХАС ЂЕРЂ
+ЈУХАС АНДРАШ
+ЈУХАС АНДРАШ
+ЈУХАС АНТАЛ
+ЈУХАС ДЕЗЕ
+ЈУХАС ЕРНЕ
+ЈУХАС ЕВА
+ЈУХАС ФЕРЕНЦ
+ЈУХАС ФЕРЕНЦ
+ЈУХАС ГЕЗА ДР ПРОФЕСОР
+ЈУХАС ГИЗЕЛА
+ЈУХАС ИВАНКА
+ЈУХАС ЈАНОШ
+ЈУХАС ЈАНОШ
+ЈУХАС ЈЕЛИСАВЕТА
+ЈУХАС КАТАРИНА
+ЈУХАС-КОСТИЋ ЂЕРЂИ
+ЈУХАС ЛАДИСЛАВ
+ЈУХАС МАРИЈА
+ЈУХАС МИХАЉ
+ЈУХАС МИХАЉ
+ЈУХАС МИЈО
+ЈУХАС МИРОН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС ТИБОР ДИПЛ ИНГ
+ЈУХАС ТИБОР
+ЈУХАС ВАЛЕРИЈА
+ЈУХАС ВИКТОРИЈА
+ЈУХАС ВЛАДИСЛАВ
+ЈУКИЋ БАНЕ
+ЈУКИЋ ФРАЊА
+ЈУКИЋ ФРАЊО
+ЈУКИЋ ИВИЦА
+ЈУКИЋ ЈОСИП
+ЈУКИЋ ЛУКА
+ЈУКИЋ МАРКО
+ЈУКИЋ НАДА
+ЈУКИЋ ВЛАДИСЛАВ
+ЈУКОВИЋ РАСИМ
+ЈУЛИНАЦ ДРАГИЊА
+ЈУНГ ЂЕРЂ
+ЈУНГ ФРАНЦИШКА
+ЈУНГ ИБОЉКА
+ЈУНГ ИЛДИКО
+ЈУНГ ИВИЦА
+ЈУНГ ЈОСИП
+ЈУНГ ЈОВАН
+ЈУНГ КАРОЉ МР
+ЈУНГ МАРИЈА
+ЈУНГ РОБЕРТ
+ЈУНГ РОБЕРТ
+ЈУНГ ВЕРИЦА
+ЈУНУЗОВИЋ ИСМЕТ
+ЈУПЕК ЗДЕНКА
+ЈУРЧЕВИЋ МАРКО
+ЈУРЧИЋ ЖЕЉКО
+ЈУРЧИЋ ДЕСАНКА
+ЈУРШИЋ ЦВЕТА
+ЈУРАГА МАРКО
+ЈУРАГА МИЛОРАД
+ЈУРАКИЋ ГОРАН
+ЈУРАКИЋ ИЛИЈА
+ЈУРАКИЋ ИВАН
+ЈУРАКИЋ ЈЕЛА
+ЈУРАКИЋ ЈОЗО
+ЈУРАКИЋ ПЕЈО
+ЈУРАКИЋ СТИПО
+ЈУРАЊИ МАРИЈА
+ЈУРАС АНИЦА
+ЈУРАС АНТЕ
+ЈУРАСОВИЋ ЈОВАН
+ЈУРЦА ЖЕЉКО
+ЈУРЦА ЂОРЂЕ
+ЈУРЦА ИВАН
+ЈУРЦА ЛАРИСА
+ЈУРЕШЕВ ПЕТАР
+ЈУРЕШИЋ ЈОЗО
+ЈУРЕШИЋ ВЕРА
+ЈУРИШЕВИЋ АНКА
+ЈУРИШЕВИЋ МАРА
+ЈУРИШЕВИЋ МИРКО
+ЈУРИШИЋ ЂОРЂЕ
+ЈУРИШИЋ ЂУРА
+ЈУРИШИЋ АЛОЈЗ
+ЈУРИШИЋ АНДРИЈА
+ЈУРИШИЋ БОГОЉУБ
+ЈУРИШИЋ ДРАГАН
+ЈУРИШИЋ ФРАЊА
+ЈУРИШИЋ ГОСПАВА
+ЈУРИШИЋ ИГЊАТ
+ЈУРИШИЋ ИЛИНКА
+ЈУРИШИЋ ИВАН
+ЈУРИШИЋ ЈЕЛЕНА
+ЈУРИШИЋ ЈОВАН
+ЈУРИШИЋ КАТАРИНА
+ЈУРИШИЋ ЉУБИЦА
+ЈУРИШИЋ МАРИЈА
+ЈУРИШИЋ МИЛЕНКО
+ЈУРИШИЋ МИЛОРАД
+ЈУРИШИЋ МИЛОРАД
+ЈУРИШИЋ НЕДЕЉКА
+ЈУРИШИЋ НЕНАД
+ЈУРИШИЋ НИКОЛА
+ЈУРИШИЋ ОЛГА
+ЈУРИШИЋ ОСТОЈА
+ЈУРИШИЋ ПЕТАР
+ЈУРИШИЋ ПЕТАР
+ЈУРИШИЋ РАДЕНКО
+ЈУРИШИЋ СТЕВАН
+ЈУРИШИЋ СТЕВАН
+ЈУРИШИЋ ВЛАТКО
+ЈУРИШИЋ ЗОРКА
+ЈУРИШИН ЖАРКО
+ЈУРИШИН ЖИВА
+ЈУРИШИН БРАНИСЛАВ
+ЈУРИШИН ДРАГОЉУБ
+ЈУРИШИН ЉИЉАНА
+ЈУРИШИН МИЛИНА
+ЈУРИШИН МИЛОШ
+ЈУРИШИН НАТАЛИЈА
+ЈУРИШИН РАСТКО ДИПЛ ИНГ
+ЈУРИШИН СЛАВКО
+ЈУРИШИН ВЛАДИМИР
+ЈУРИЋ ЖИВАДИНКА
+ЈУРИЋ АНА
+ЈУРИЋ АВГУСТ
+ЈУРИЋ БОСИЉКО
+ЈУРИЋ ЦВИЈО
+ЈУРИЋ ФИЛИП
+ЈУРИЋ ИЛИЈА
+ЈУРИЋ ИВАН
+ЈУРИЋ ЈЕЛКА
+ЈУРИЋ МАРИЈА
+ЈУРИЋ МАРИЈА
+ЈУРИЋ МАРКО
+ЈУРИЋ МАРКО
+ЈУРИЋ МИЛОШ
+ЈУРИЋ ПАУЛИНА
+ЈУРИЋ ПЕТАР
+ЈУРИЋ СОФИЈА
+ЈУРИБАШИЋ МАРИЈА
+ЈУРИБАШИЋ ТОМИСЛАВ
+ЈУРИЦ ИВАН
+ЈУРИЦ ЈОСИП
+ЈУРИЦ СТЈЕПАН
+ЈУРИЦА АНА
+ЈУРИЦА ДАЛИБОР
+ЈУРИЦА ЈАН
+ЈУРИК ШАНДОР
+ЈУРИК ДУШАН
+ЈУРИК ЈОСИП
+ЈУРИК ЈОСИП
+ЈУРИК ЈОВАН
+ЈУРИК МАРИЈА
+ЈУРИК МИХАЛ
+ЈУРИК МИЛКА
+ЈУРИК ПАВЛЕ
+ЈУРИК СТЕВАН
+ЈУРИСТОВСКИ ГЕОРГ ДИПЛ ИНГ
+ЈУРЈАНОВИЋ ДУШАНКА
+ЈУРЈЕВИЋ ЈАСМИНА
+ЈУРКИЋ АНТУН
+ЈУРКИЋ АУГУСТИН
+ЈУРКИЋ МАРКО
+ЈУРКОВИЋ АНА
+ЈУРКОВИЋ БИЉАНА
+ЈУРКОВИЋ БОЖИЦА
+ЈУРКОВИЋ ДРАГАН
+ЈУРКОВИЋ ДУШАН
+ЈУРКОВИЋ КРИСТИНА
+ЈУРКОВИЋ ПЕТАР
+ЈУРКОВИЋ ПЕТАР
+ЈУРКОВИЋ ЗЛАТКО
+ЈУРКОВИЋ ЗВОНКО
+ЈУРКОВСКИ СТЕВАН
+ЈУРЛИНА АНТУН
+ЈУРЛИНА МАРКО ДР
+ЈУРЛИНА ПАВЛЕ
+ЈУРУКОВСКИ ГОСПАВА
+ЈУРУКОВСКИ ЛЕВКО
+ЈУРУКОВСКИ МИЛОВАНКА
+ЈУСТИН ЦИРИЛ
+ЈУСТИН ДАНИЦА
+ЈУСУФИ БЕРЗАТ
+ЈУСУФОВИЋ АМИР
+ЈУВАН ФАНИКА
+КЋИКУ ЂАВИД
+КЋИКУ РАХИМ
+КАЧАК ИЛОНА
+КАЧАПОР СЕФЕДИН
+КАЧАР ЧЕДОМИР
+КАЧАР ЂУРО
+КАЧАР БРАНИСЛАВ
+КАЧАР ДУШАНКА
+КАЧАР СЛАВКО
+КАЧАР СЛОБОДАН
+КАЧАР СЛОБОДАН
+КАЧАР ТАДИЈА
+КАЧАРЕВИЋ МИЛАН
+КАЧАВЕНДА БРАНИСЛАВА
+КАЧАВЕНДА ЛАЗО
+КАЧАВЕНДА МИЛАН
+КАЧАВЕНДА МИЛОРАД
+КАЧАВЕНДА МИЛОРАД
+КАЧАВЕНДА СЛОБОДАН
+КАЧАВЕНДА ТАТЈАНА
+КАЧАВЕНДА ТАТЈАНА
+КАЧАВЕНДА ВЕРА
+КАЧМАРЧИК ШТЕФАН
+КАЧМАРЧИК ЈЕЛЕНА
+КАША ТИБОР
+КАШАИ ЈЕЛИСАВЕТА
+КАШАНИН МИЛЕТА
+КАШАНИН МИРА
+КАШАНИН МИРЈАНА
+КАШАНИН МИРОСЛАВ
+КАШИЋ АЛЕКСАНДАР
+КАШИЋ ЈОВАН ДР
+КАШИЋ МАРИЈА
+КАШИЋ МИЛИВОЈ
+КАШИЋ МЛАДЕН
+КАШИЋ РЕВЕКА
+КАШИЋ ВЕРА
+КАШИЋ ВИКТОРИЈА
+КАШИЋ ВОЈИСЛАВ
+КАШИК ИВАН
+КАШИКОВИЋ ЂОРЂО
+КАШИКОВИЋ БОШКО
+КАШИКОВИЋ ГОЈКО
+КАШИКОВИЋ ПРЕДРАГ
+КАШИКОВИЋ СЛАВКА
+КАШИКОВИЋ ВЛАДО
+КАШЛИК ИМРЕ
+КАШЛИК МАТИЈА
+КАШОВСКИ ЈАНКО
+КАШОВСКИ НИКОЛА
+КАЋАНСКИ ЖАРКО
+КАЋАНСКИ ЖАРКО
+КАЋАНСКИ ЖИВКО
+КАЋАНСКИ ЂОРЂЕ
+КАЋАНСКИ БОЈАНА
+КАЋАНСКИ БРАНИСЛАВ
+КАЋАНСКИ БРАНКО
+КАЋАНСКИ ДУШАНКА
+КАЋАНСКИ ДУШАН
+КАЋАНСКИ ЈЕЛИСАВЕТА
+КАЋАНСКИ КОНСТАНТИН
+КАЋАНСКИ ЉУБИЦА
+КАЋАНСКИ МИЛИВОЈ
+КАЋАНСКИ МИЛИВОЈ
+КАЋАНСКИ МИЛКА
+КАЋАНСКИ МИЛОРАД
+КАЋАНСКИ МИЛУТИН
+КАЋАНСКИ МИРОСЛАВА
+КАЋАНСКИ МЛАДЕН
+КАЋАНСКИ ПАВЛЕ ДР ЛЕКАР
+КАЋАНСКИ ПЛАТОН ДР
+КАЋАНСКИ РАДОВАН
+КАЋАНСКИ СИМА
+КАЋАНСКИ СЛАВКО
+КАЋАНСКИ СМИЉА
+КАЋАНСКИ СОФИЈА
+КАЋАНСКИ СВЕТИСЛАВ
+КАЋАНСКИ ТОДОР
+КАЋАНСКИ ВЕЛИНКА
+КАЋАНСКИ ВЕРА
+КАЋАНСКИ ВЛАДИМИР ВЕТЕРИНАР
+КАЋАНСКИ ВЛАДИСЛАВА
+КАЋИАК МИХАЈЛО
+КАЋУРИН ЖИВАН
+КАЋУРИН КРИСТИНА
+КАЋУРИН МИЛАНА
+КАЋУРИН МИЛАН
+КАЋУРИН РАДОСЛАВ
+КАЖИЋ ВЛАДИМИР
+КАБА СУЛЕЈМАН
+КАБИЋ АНА
+КАБИЋ БОГДАН
+КАБИЋ ДАНИЛО
+КАБИЋ ДРАГИЦА
+КАБИЋ ДРАГУТИН
+КАБИЋ СЛОБОДАН
+КАБИЋ ТИМОШЕНКО
+КАБИЉО ДРАГИЦА
+КАБИЉО ЈОСИП
+КАБИЉО СИЛВИО
+КАБОК ЕРИКА
+КАБОК ЈОЖЕФ
+КАЦАРОШ КОСТАС
+КАДАШ ЛАЈОШ ДИПЛ ИНГ
+КАДАР ЈУЛИЈАНА
+КАДИЋ ИЛИЈА
+КАДИЋ МАРИЈАН
+КАДИЋ НИКОЛА
+КАДИЋ РАДМИЛА
+КАДИЋ САВА
+КАДИЈА ВОЈИСЛАВ
+КАДИВНИК МИОДРАГ
+КАДЛЕЧИК КАТИЦА
+КАДРИЈА ФЕВЗИЈА
+КАДРИЈА ХАБИЉ
+КАДРИЈА ХАСАФ
+КАДРИЈА ХУРМЕТ
+КАДВАЊ ЈАНОШ
+КАДВАЊ ЈОВАН
+КАДВАЊ ЛАДИСЛАВ
+КАДВАЊ ЛАЈОШ
+КАХРИМАН ПЕТАР
+КАХРИМАН СНЕЖАНА
+КАХРИМАН СНЕЖАНА
+КАХРИМАН СНЕЖАНА
+КАИЋ ИВАН
+КАИЋ КАТАЛИН ДР
+КАИЋ ПЕТАР
+КАИНОВИЋ ГОРДАНА
+КАИТОВИЋ ЈЕЛА
+КАЈЧИЋ ЉИЉАНА
+КАЈЧИЋ МИЛОВАН
+КАЈЧИЋ ВЕЛИМИР
+КАЈЕВИЋ ЖАРКО
+КАЈФЕШ ЗВОНКО
+КАЈГАНИЋ ИЛИЈА
+КАЈГАНИЋ ЉУБАН
+КАЈГАНИЋ МИЛОРАД
+КАЈГАНИЋ ВЕРОНИКА
+КАЈИШ ЖЕЉКО
+КАЈИШ МИЛЕ
+КАЈИЋ ЖЕЉКО
+КАЈИЋ НАДА
+КАЈКАРА БОГДАН
+КАЈКАРА МИЛЕНКО
+КАЈКАРА РАДОСЛАВ
+КАЈОН АЛЕКСАНДАР
+КАЈОН АНА
+КАЈОН ЉИЉАНА
+КАЈОН МИРОСЛАВ
+КАЈОН МИРОСЛАВ
+КАЈТЕС ЂУРО
+КАЈТЕЗ ДРАГАН
+КАЈТЕЗ МИРКО
+КАЈТЕЗ НЕДЕЉКО
+КАЈТЕЗ РОЗАЛИЈА
+КАЈТЕЗ ТРИВУН
+КАЈТЕЗ ВАЛЕНТИНА
+КАЈЗЕР КАРЛО
+КАКАШ ДАМИР
+КАКАШ ИЛИЈА
+КАКАШ ЈОЖЕФ
+КАКАШ ЈОСИП
+КАКАШ МАРИЈА
+КАКОЊИ АНА
+КАКУЧКА ИШТВАН
+КАКУЧКА ЈЕЛИСАВЕТА
+КАКУЧКА СТЕВАН
+КАЛЧОВ МИХАЉ
+КАЛА ГЕЗА
+КАЛАЧАЈИ СВЕТИСЛАВ
+КАЛАЧЕВИЋ ВЛАДИМИР
+КАЛАБА БОЈАН
+КАЛАБА БРАНКО
+КАЛАБА ДРАГИЦА
+КАЛАБА ЉУПКО
+КАЛАБА ЛУКА
+КАЛАБА МАРКО
+КАЛАБА МЛАДЕН
+КАЛАБА НИКОЛА
+КАЛАБА СТЕВАН
+КАЛАБИЋ ДАНЕ
+КАЛАБИЋ СТЕВО
+КАЛАБРИЋ БРАНКО
+КАЛАБРИЋ МИХОВИЛ
+КАЛАФАТИЋ МИЛИВОЈ
+КАЛАФАТИЋ НЕБОЈША
+КАЛАИ КАРОЉ
+КАЛАЈЏИЋ ДАРКО
+КАЛАЈЏИЋ ЛУКА
+КАЛАЈЏИЋ МИХАИЛО
+КАЛАЈЏИЋ МИЛАН
+КАЛАМАНДА ДРАГАН
+КАЛАМАНДА СЛОБОДАН
+КАЛАЊ ЂУКА
+КАЛАЊ ДРАГИША
+КАЛАЊ ФЕМКА
+КАЛАЊ СТЕВАН
+КАЛАЊА ДУШАНКА
+КАЛАЊА МИРОСЛАВ
+КАЛАЊЕВ ЗОРА
+КАЛАЊОШ ЂУРА
+КАЛАЊОШ АНА
+КАЛАЊОШ БОРИСЛАВ
+КАЛАЊОШ ЈАНОШ
+КАЛАЊОШ МИРЈАНА
+КАЛАЊОШ ПЕТАР
+КАЛАЊОШ ПЕТАР
+КАЛАЊОШ РУЖА
+КАЛАЊОШ РУЖА
+КАЛАЊУШ ЂУРА
+КАЛАЊУШ ФРАЊА
+КАЛАПАШ ЕВИЦА
+КАЛАПАШЕВ ДИНА
+КАЛАПАШЕВ СИНИША
+КАЛАПАТИ ШАРА
+КАЛАПАТИ ФЕРЕНЦ
+КАЛАПАТИ ИВАН
+КАЛАПАТИ РУДОЛФ
+КАЛАПИШ РУДИ
+КАЛАПИШ ЗОЛТАН
+КАЛАУЗ МАРИНКО
+КАЛАУЗОВ МАША
+КАЛЦ МИЛЕНКА
+КАЛЦ МИЛКО
+КАЛЦ СЛАВОЈКА
+КАЛЕА ЈЕЛЕНА
+КАЛЕЈСКИ ЗЛАТОМИР
+КАЛЕМ БРАНКО
+КАЛЕМ ИВАНКА
+КАЛЕМ МИРЈАНА
+КАЛЕМ НЕДЕЉКО
+КАЛЕМ СРЕТЕН
+КАЛЕМ СРЕТЕН
+КАЛЕМБЕР БОШКО
+КАЛЕМБЕР МИША
+КАЛЕМБЕР МИЛЕНА
+КАЛЕМБЕР МИЛИВОЈ
+КАЛЕМБЕР МИРЈАНА
+КАЛЕМБЕР СОФИЈА
+КАЛЕМБЕР СТОЈАДИН
+КАЛЕМИ ШЕРИФ
+КАЛЕНДЕР КРИСТИНА
+КАЛЕНИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+КАЛЕНИЋ АЛЕКСАНДАР
+КАЛЕНИЋ ВОЈИСЛАВ
+КАЛЕЊУК МИТАР
+КАЛЕНТИЋ БОСА
+КАЛЕНТИЋ РАДОВАН
+КАЛЕЗИЋ ЈЕЛЕНА
+КАЛЕЗИЋ ЈОВАНКА
+КАЛЕЗИЋ ОЛГА
+КАЛЕЗИЋ ТОМИСЛАВ
+КАЛИЧАНИН МОМЧИЛО
+КАЛИЋ ДРАГАНА
+КАЛИЋ ЈОСИП
+КАЛИЋ ЈОВАНКА
+КАЛИЋ МИЛЕНА
+КАЛИЋ МУСТАФА
+КАЛИЋ ОЛГА
+КАЛИЋ РАДОВАН
+КАЛИЋ СОФИЈА
+КАЛИК ГРОЗДА
+КАЛИН ЕДУАРД
+КАЛИН МАРИЈАН
+КАЛИНИЋ ДАНИЦА
+КАЛИНИЋ ЈОВО
+КАЛИНИЋ КРСТО
+КАЛИНИЋ МИЛАДИН
+КАЛИНИЋ МИЛИЦА
+КАЛИНИЋ НАДА
+КАЛИНСКИ ДАРКО
+КАЛИВОДА РУДОЛФ
+КАЉЕВИЋ АЛЕКСАНДАР
+КАЉЕВИЋ КРСТО
+КАЉЕВИЋ СТЕВАН
+КАЛКАН МИЛАН
+КАЛМАН КЛАРА
+КАЛМАН МИХАЈЛО
+КАЛМАН МИКЛОШ
+КАЛМАН РАДИЦА
+КАЛМАР ЂОРЂЕ
+КАЛМАР ЂУРА
+КАЛМАР АНА
+КАЛМАР ФЕРЕНЦ
+КАЛМАР ФРАЊА
+КАЛМАР ГРГУР
+КАЛМАР ИШТВАН
+КАЛМАР ЛАЈОШ
+КАЛМАР МИРКО
+КАЛМАР-ВЕРЕШ ГИЗЕЛА
+КАЛМАР ВЛАДИМИР
+КАЛМАРЕВИЋ АЛЕКСАНДАР
+КАЛНОК СЛОБОДАН
+КАЛОЧАИ ШАНДОР
+КАЛОЧАИ ИШТВАН
+КАЛОЧАИ ЛЕНКЕ
+КАЛОЧАИ ПЕТАР
+КАЛОЧАЈИ ЂОРЂЕ
+КАЛОЧАЊ ФЕРЕНЦ
+КАЛОЦИ ИВАН
+КАЛОЦИ ЛАДИСЛАВ
+КАЛОЦИ ТИБОР
+КАЛОЦИ ВЕСЕЛИНКА
+КАЛОПЕР ЈОВАНКА
+КАЛОПЕР ПЕРИЦА
+КАЛОЗИ АРАНКА
+КАЛТНЕКЕР ЕМИЛИЈА
+КАЛТНЕКЕР ЕМИЛИЈА
+КАЛУШЕВ ГЛИША
+КАЛУШКА СЛАВКО
+КАЛУЖИЋ КАТИЦА
+КАЛУЖИЋ НАДА
+КАЛУЂЕРОВИЋ МАРКО
+КАЛУЂЕРОВИЋ МИЛИВОЈЕ
+КАЛУЂЕРОВИЋ МИЛОШ
+КАЛУЂЕРОВИЋ МИРИЈАНА
+КАЛУЂЕРОВИЋ МЛАДЕН
+КАЛУЂЕРОВИЋ МОМЧИЛО
+КАЛУЂЕРОВИЋ ОЛИВЕРА
+КАЛУЂЕРОВИЋ УРОШ
+КАЛУЂЕРСКИ ЂОКА
+КАЛУЂЕРСКИ ЂОКА
+КАЛУЂЕРСКИ АГНЕЗА
+КАЛУЂЕРСКИ БОРИС
+КАЛУЂЕРСКИ ГАВРА
+КАЛУЂЕРСКИ МИЛОРАД
+КАЛУЂЕРСКИ МИРОСЛАВ
+КАЛУЂЕРСКИ СИНИША
+КАЛУЂЕРСКИ СТОЈАН ДР
+КАЛУГЕР НИКОЛА
+КАЛУГЕР ЗОРАН
+КАМЧЕСКА ДРАГИЦА
+КАМЧЕСКИ ДИМЧЕ
+КАМЧЕСКИ СТЕВАН
+КАМЧЕВИЋ АНА
+КАМЧЕВСКИ САВА
+КАМАРИТ ЗОРАН
+КАМАСИ ФЕРЕНЦ
+КАМАСИ ФЕРЕНЦ
+КАМАСИ ИМРЕ
+КАМАСИ ЈАНОШ
+КАМБЕРИ ДУШАН
+КАМБЕРИ МУСА
+КАМБЕРОВИЋ БАТО
+КАМБЕРОВИЋ СИНИША
+КАМЕНАРОВИЋ ГЛИГОРИЈЕ
+КАМЕНАРОВИЋ МИЛАН
+КАМЕНАРОВИЋ НИКОЛА
+КАМЕЊИЦКИ ЈУЛИЈАН
+КАМЕНКО МИЛАН
+КАМЕНКО РАДЕ
+КАМЕНКО РАДЕ
+КАМЕНКО ВЕРА
+КАМЕНКОВИЋ АЛЕКСАНДРА
+КАМЕНКОВИЋ ДОБРИЛА
+КАМЕНКОВИЋ ЈОСИП
+КАМЕНКОВИЋ ЈОВАНКА
+КАМЕНКОВИЋ ОЛГА
+КАМЕНОВ ЕМИЛ ДР
+КАМПЕЛ ИВАН
+КАМПИЋ ПАВЛЕ
+КАМРА ИВАН
+КАНЧАР ЕРЖЕБЕТ
+КАНАЧКИ ЖАРКО
+КАНАЧКИ ЉИЉАНА
+КАНАЧКИ МАГДАЛЕНА
+КАНАЧКИ СТЕВАН
+КАНАЧКИ ЗЛАТА
+КАНАЗИР ЖИВКА
+КАНАЗИР АЛЕКСАНДАР
+КАНАЗИР-БЕЛИЋ МИЛИЦА
+КАНАЗИР БОРИСЛАВ
+КАНАЗИР БОРИСЛАВ
+КАНАЗИР БРАНИСЛАВ
+КАНАЗИР ЦВЕТА
+КАНАЗИР ДРАГИЦА
+КАНАЗИР ДРАГИЦА
+КАНАЗИР ДУШАН
+КАНАЗИР ИВАНКА
+КАНАЗИР ЈОВАНКА
+КАНАЗИР ЈОВАН
+КАНАЗИР КОСТА
+КАНАЗИР КОСТА
+КАНАЗИР КОСТА
+КАНАЗИР МАРИЈА
+КАНАЗИР МИЛАН
+КАНАЗИР МИЛИЦА
+КАНАЗИР МИЛОВАН
+КАНАЗИР РАДИВОЈ
+КАНАЗИР СЛАВКО
+КАНАЗИР ВАСА
+КАНАЗИР ВЕРИЦА ДР
+КАНАЗИР ВУКИЦА
+КАНАЗИР ЗАХАРИЈЕ
+КАНБАН МИЛИЦА
+КАНДИЋ НАДА
+КАНДИЋ РАДМИЛА
+КАНДИЋ СМИЉАНА
+КАНДИЋ ВИДОЈЕ
+КАНДРАЧ ЂОРЂЕ
+КАНДРАЧ ЛЕОНА
+КАНГРГА АНКА
+КАНГРГА КОСТА
+КАНГРГА РУЖА
+КАНИЖАИ ЕВА
+КАЊА ЈАН
+КАЊЕРИЋ МАТЕ
+КАЊО ИШТВАН
+КАЊО СТЈЕПАН
+КАЊО ЗОЛТАН
+КАЊУХ ЈАКИМ
+КАЊУХ ЈОАКИМ
+КАЊУХ МАРИЦА
+КАЊУХ МИРА
+КАЊУХ ВЛАДИМИР
+КАЊУХ ЗВОНКО
+КАЊУКА ИВАН
+КАЊУКА ВЛАДИМИР
+КАНКАРАШ РАДОСАВ
+КАНКАРАШ ВЕСЕЛИН
+КАНЛИЋ МИЛАН
+КАНЛИЋ ЗАРИЈА
+КАНОВИЋ ПАВЛЕ ДИПЛ ИНГ
+КАНТАР ЂУРО
+КАНТАР ДМИТАР
+КАНТАР КАЈА
+КАНТАР МИЛАН
+КАНТАР МИЛОШ
+КАНТАР МИРОСЛАВ
+КАНТАР НИКОЛА
+КАНТАР ОСТОЈА
+КАНТАР ВЛАДО
+КАНТАРЏИЋ ЂОРЂЕ
+КАНТАРЏИЋ ГОРДАНА
+КАНТАРЏИЋ ЈЕЛЕНА
+КАНТАРЏИЋ КАТИЦА
+КАНТАРЏИЋ КОСТА
+КАНТАРЏИЋ ЛАЗАР
+КАНТАРЏИЋ ЛАЗА
+КАНТАРЏИЋ МИЛИЦА
+КАНТАРЏИЋ МИЛОВАН
+КАНТАРЏИЋ МИЛОВАН
+КАНТАРЏИЋ МИРОСЛАВ
+КАНТАРЏИЋ МЛАДЕН
+КАНТАРЏИЋ НАДА
+КАНТАРЏИЋ ОЛГА
+КАНТАРЏИЋ ПЕТАР
+КАНТАРЏИЋ СТЕВАН
+КАНТАРЏИЋ ВАСА
+КАНТИНКОСКИ ХАНУ
+КАНТОР ЛАЈОШ
+КАНТОР ОСКАР
+КАНУРИЋ АЛЕКСАНДАР
+КАНУРИЋ МИЛИЦА
+КАНУРИЋ ЗОРКА
+КАНУРСКИ ЈОВАН
+КАНУРСКИ ВИДОСАВА
+КАПАМАЏИЈА АЛЕКСАНДРА
+КАПАМАЏИЈА БОРИСЛАВ ДР
+КАПАМАЏИЈА ДУШАНКА
+КАПАМАЏИЈА РАДМИЛА
+КАПАМАЏИН ЈОВАН
+КАПЕЛАН НИКОЛА
+КАПЕС АЛЕКСАНДАР
+КАПЕС ЗДРАВКА
+КАПЕТАНИЋ ТОМИСЛАВ
+КАПЕТАНОВ МИРЈАНА
+КАПЕТАНОВ СВЕТИСЛАВ
+КАПЕТАНОВ ВУКИЦА
+КАПЕТАНОВИЋ ЈОВАН
+КАПЕТАНОВИЋ МИДХАТ
+КАПЕТАНОВИЋ МОМЧИЛО
+КАПЕТАНОВИЋ ОЛГА
+КАПЕТАНОВИЋ РАТКО
+КАПЕТАНОВИЋ ВЕРИЦА
+КАПИЧИЋ ДУШАН
+КАПИЧИЋ САВО
+КАПИЧИЋ СТЕВАН
+КАПИЦЛ ДРАГУТИН
+КАПИТАЊ ЛАСЛО
+КАПЛАР ЖИВАН
+КАПЛАР МАРИЈА
+КАПЛАРЕВИЋ МИОДРАГ
+КАПЛАРСКИ КОНСТАНТИН
+КАПЛАРСКИ МЛАДЕН
+КАПЛАРСКИ СВЕТЛАНА
+КАПЛИЈЕВ ПЕТАР
+КАПМАЈЕР АЛЕКСАНДАР
+КАПОЧ АНТАЛ
+КАПОЧ ЈУДИТ
+КАПОР АГНЕШ
+КАПОР АЛЕКСАНДАР
+КАПОР ДЕСАНКА
+КАПОР ГОЈКО
+КАПОР КАТАРИНА
+КАПОР НАДА
+КАПОР НОВИЦА
+КАПОР СТАНА
+КАПОСТА ТЕРЕЗА
+КАПРИШ МИРЈАНА
+КАПУЋ ИЛОНА
+КАРЋАШ МИЛКА
+КАРАЧ МИРКО
+КАРАЧОЊИ ИШТВАН
+КАРАЋ ДРАГАН
+КАРАЋ ДУШАН
+КАРАЋ ДУШАН
+КАРАЋ ИЛИЈА
+КАРАЋ ЈЕЛИЦА
+КАРАЋ ЉУБОМИР
+КАРАЋ МАРИЈА
+КАРАЋ МИЛЕНКО
+КАРАЋ РАДЕНКО
+КАРАЋ РАЈКО
+КАРАЋ СЛОБОДАН
+КАРАЂЕНОВ ИВАН
+КАРАЂЕНОВ ИВАН
+КАРАЂЕНОВ МИРЈАНА
+КАРАЂИНОВИЋ ШПИРО
+КАРАЂИНОВИЋ НЕНАД
+КАРАЂИНОВИЋ ПЕТАР
+КАРАЂИНОВИЋ ВЕЛИМИР
+КАРАЂИНОВИЋ ЗОРА
+КАРАБА ИРЕНА ДР ЛЕКАР
+КАРАБА ЈОВАН
+КАРАБА ОЛГА
+КАРАБАШ МИЛИВОЈ
+КАРАБАШ СЛОБОДАН
+КАРАБАСИЛ ДРАГАН
+КАРАБАСИЛ ВИДОМИР
+КАРАБЕГОВИЋ ДАНИЛО
+КАРАЏИЋ ШУЈО
+КАРАЏИЋ ЖАРКО
+КАРАЏИЋ ЂОРЂЕ
+КАРАЏИЋ АРСЕНИЈЕ
+КАРАЏИЋ АВРАМ
+КАРАЏИЋ БОЖО
+КАРАЏИЋ БРАТИСЛАВ
+КАРАЏИЋ ЈОВАН
+КАРАЏИЋ ЈОВАН
+КАРАЏИЋ КСЕНИЈА
+КАРАЏИЋ МАРИЈА
+КАРАЏИЋ МИЛОРАД
+КАРАЏИЋ МИОДРАГ
+КАРАЏИЋ МИРОСЛАВ
+КАРАЏИЋ НЕНАД
+КАРАЏИЋ РЕЉА
+КАРАЏИЋ РУЖА
+КАРАЏИЋ СЛАВИЦА
+КАРАЏИЋ ТВРТКО
+КАРАЏИЋ ВЕРА
+КАРАЏИЋ ВУК
+КАРАЏИЋ ЗОРАН
+КАРАЏИЋ ЗОРАН
+КАРАДАРЕВИЋ МИЛАН
+КАРАДАРЕВИЋ МИЛОШ
+КАРАДЕГЛИЋ КОСА
+КАРАГА НИКОЛА
+КАРАГИЋ-ЛИПИНСКИ ИЛОНА
+КАРАИЦА ЗОРАН
+КАРАЈКОВ АЛОЈЗИЈЕ
+КАРАЈКОВ ВЛАДИМИР
+КАРАЈКОВ ВЛАДИМИР
+КАРАЈЛОВИЋ ЂУРО
+КАРАЈОВИЋ МИЛУТИН
+КАРАКАШ МИРЈАНА
+КАРАКАШЕВИЋ ДЕСАНКА
+КАРАКАШЕВИЋ ДРАГИЦА
+КАРАКАШЕВИЋ ЕВИЦА
+КАРАКАШЕВИЋ СТЕВАН
+КАРАКАШЕВИЋ ЗОРА
+КАРАМАРКОВИЋ МИЛА
+КАРАМАТИЋ АНТЕ
+КАРАН ЖЕЉКО
+КАРАН ДРАГАН
+КАРАН-КЕРН БАРБАРА
+КАРАН МИЛАН
+КАРАН МИЛЕНКО
+КАРАН МИЛИНКО
+КАРАН САВО
+КАРАН СРЂО
+КАРАЊАЦ ДРАГОСЛАВ
+КАРАЊАЦ ЉУБИЦА
+КАРАЊАЦ ВЕРОЉУБ
+КАРАНОВ ЖИВАН
+КАРАНОВ БУДИМКА
+КАРАНОВ ДРАГОЉУБ
+КАРАНОВ КУЗМАН
+КАРАНОВ МИЛАН
+КАРАНОВ МИЛОВАН
+КАРАНОВ МИРОСЛАВ
+КАРАНОВ СОФИЈА
+КАРАНОВИЋ ЂОРЂЕ
+КАРАНОВИЋ БОЖО
+КАРАНОВИЋ ДРАГАН
+КАРАНОВИЋ ДУШАН
+КАРАНОВИЋ ДУШАН
+КАРАНОВИЋ ЕМИЛИЈА
+КАРАНОВИЋ ГРЕТА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИВИЦА
+КАРАНОВИЋ ЈОВАН
+КАРАНОВИЋ КАТИЦА
+КАРАНОВИЋ ЉИЉАНА
+КАРАНОВИЋ ЉУБА
+КАРАНОВИЋ МИЛАН
+КАРАНОВИЋ МИЛАН
+КАРАНОВИЋ МИЛОМИР
+КАРАНОВИЋ МИЛУТИН
+КАРАНОВИЋ МИРЈАНА
+КАРАНОВИЋ МИРКО
+КАРАНОВИЋ НИКОЛА
+КАРАНОВИЋ ПЕРО
+КАРАНОВИЋ РАТКО
+КАРАНОВИЋ СЛАВКО
+КАРАНОВИЋ СЛОБОДАН
+КАРАНОВИЋ СТЕВАН
+КАРАНОВИЋ СТЕВО
+КАРАНОВИЋ СВЕТОЗАР
+КАРАНОВИЋ ТРИВО
+КАРАНОВИЋ ВЕСО
+КАРАНОВИЋ ВЛАДИМИР
+КАРАПАНЖА МАРИЈА
+КАРАПАНЏА ЉИЉАНА
+КАРАПАНЏА ВИТОМИР
+КАРАПАНЏИЋ ЂУРА
+КАРАПАНЏИЋ ГОРДАНА
+КАРАПАНЏИЋ МИРЈАНА
+КАРАПАНЏИН БАРБАРА
+КАРАПАНЏИН ЗОРКА
+КАРАС КАЗИМИР
+КАРАС МАГДА
+КАРАС ПЕТАР
+КАРАС ПЕТАР
+КАРАСАЛИХОВИЋ СМАИЛ
+КАРАСЕК КАРОЉ
+КАРАСИЈ БОРИС
+КАРАСИЈ ЈАСМИНА
+КАРАСИЈ ВЕРОНИКА
+КАРАТИ ЕУГЕН
+КАРАТУР ЈАДРАНКА
+КАРАВЛА КАТАРИНА
+КАРАВЛА ЗЛАТКО
+КАРАВЛА ЗОРИЦА
+КАРБАН РУДОЛФ
+КАРДАШ ОБРАД
+КАРДАШ ОЛГА
+КАРДАШЕВИЋ БРАНИСЛАВ
+КАРДАШЕВИЋ ФИЈА
+КАРДАШЕВИЋ ХУСНИЈА
+КАРДОШ АЛЕКСАНДАР
+КАРДОШ ЕРИКА
+КАРДОШ ИЛОНА
+КАРДОШ ЛАЈОШ
+КАРДОШ ПАЛ
+КАРДОШ ВЕРОНИКА
+КАРДОВ ЈОСИП
+КАРДУМ ЂОРЂЕ
+КАРГАЧИН ЈЕЛИСАВЕТА
+КАРИШИЋ ИВАНКА
+КАРИШИК ДАНЕ
+КАРИШИК ЈОВАНКА
+КАРИШИК МИЛУТИН
+КАРИЋ БОСИЉКА
+КАРИЋ ЈОВАНКА
+КАРИЋ РАДОСЛАВ
+КАРИЋ САВА
+КАРИЋ САВА
+КАРИЋ СВЕТИСЛАВ
+КАРИКО ЈОСИП
+КАРИКО МАРИЈА
+КАРИКО ТЕРЕЗА
+КАРИНА ДРАГИЦА
+КАРИУС МАРИЈА
+КАРИУС ВЕРА
+КАРЛАШ МИЛОРАД
+КАРЛАВАРИС ДРАГАН
+КАРЛАВАРИС ИВАН
+КАРЛАВАРИС НАДА
+КАРЛАВАРИС РАДИВОЈ
+КАРЛАВАРИС-ЗЕКОВИЋ МИРЕЛА
+КАРЛИЋ ЈЕФТА
+КАРЛИЋ ЛАЗАР
+КАРЛИЋ МИЛИВОЈ
+КАРЛО ВАЈДА
+КАРЛОВЧЕЦ МИРКО
+КАРЛОВИЋ ЂЕРЂ
+КАРЛОВИЋ МАРИЦА
+КАРОЛИЋ ЉУБИЦА
+КАРОЛИЋ МИРКО
+КАРОЛИЋ МИРОСЛАВ
+КАРОЉИ ЈАНОШ
+КАРОЉИ ЛАСЛО
+КАРОВИЋ ГЛИША
+КАРПАТИ ЛАСЛО
+КАРПОЊА ЈУЛИЈАНА
+КАРПОЊА СИНИША
+КАРТАГ НАНДОР
+КАРТАИ ЛАЈОШ
+КАРТАЛОВИЋ МИЛАН
+КАРТЈЕ ЈОВАН
+КАРВАК ЕМА
+КАРВАК ГЕЗА
+КАСА ЂЕРЂ
+КАСА АНДРИЈА
+КАСА АНТАЛ
+КАСА ФРАЊА
+КАСА ИДА
+КАСА ИМРЕ
+КАСА ЈЕЛЕНА
+КАСА МИХАЉ
+КАСА РУЖА
+КАСА РУЖА
+КАСА ЗОРКА
+КАСАШ АЛЕКСАНДАР МР
+КАСАШ АЛЕКСАНДАР
+КАСАШ ИМРЕ
+КАСАШ ИМРЕ
+КАСАШ ИМРЕ
+КАСАШ ЈАНОШ
+КАСАШ ЈОЖЕФ
+КАСАШ ЈОСИП
+КАСАШ КАРОЉ
+КАСАШ КАРОЉ
+КАСАШ КАРОЉ
+КАСАШ ОЛГА
+КАСАГИЋ БОРИСЛАВ
+КАСАЛИЦА ЖАРКО
+КАСАЛИЦА ЖИВКО
+КАСАЛИЦА МИЛАН
+КАСАЛИЦА СТЕВАНИЈА
+КАСАП ЕРВИН
+КАСАПОВ СТЕВАН
+КАСАПОВИЋ МАРА
+КАСАПОВИЋ МЕХО
+КАСАПОВИЋ ТИХОМИР
+КАСАПСКИ ЖАРКО
+КАСАПСКИ ЈЕЛКА
+КАСАР СЕЛИМ
+КАСИЋ ДАНИЦА
+КАСНЕР МИЈОЉКА
+КАСПЕР АЛЕКСАНДАР
+КАСПЕР ФЕРЕНЦ
+КАСПЕР ФРАЊА
+КАСПЕР ЛАДИСЛАВ
+КАСПЕР СТЕВАН
+КАСТЕЛИ ЂУРЂИНКА
+КАСТЕЛИ МАРКО
+КАСТОРИ РУДОЛФ
+КАСТРАТИ ФАДИЛ
+КАСТРАТОВИЋ АЛЕКСАНДАР
+КАСТРАТОВИЋ БОГДАН
+КАСТРАТОВИЋ МИХАИЛО
+КАСТРАТОВИЋ ВЛАДИМИР
+КАСТРАТОВИЋ ЗОРАН
+КАСТРАТОВИЋ ЗОРАН
+КАТАШИЋ ПЕТАР
+КАТАЛЕНИЋ ДУШАН
+КАТАЛИНЧЕВ ЖИВАН
+КАТАНА АНГЕЛИНА
+КАТАНА НИКОЛА
+КАТАНИЋ АНЂЕЛКА
+КАТАНИЋ ЈЕЦА
+КАТАНИЋ КСЕНИЈА
+КАТАНИЋ ЉУБИЦА
+КАТАНИЋ МАРА
+КАТАНИЋ РАДИВОЈ
+КАТАНИЋ РАДОМИР
+КАТАНИЋ САВА ДР
+КАТАНСКИ МИЛОШ
+КАТАНСКИ ПАВЛЕ
+КАТАРИНЧИЋ ЦЕЛЕСТИН
+КАТАРИВАС ЕЛА
+КАТАРИВАС-НИКОЛИЋ ГИЗЕЛА
+КАТАТИЋ ИЛОНА
+КАТАВА РУДОЛФ
+КАТАВИЋ ДАНИЛКА
+КАТАВИЋ МАРИЈА
+КАТАВИЋ РАДМИЛА
+КАТИЋ АДА
+КАТИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+КАТИЋ БОСИЉКА
+КАТИЋ ДАРА
+КАТИЋ ДОБРИЛА
+КАТИЋ ГОЈКО
+КАТИЋ ИЛИЈА
+КАТИЋ ИЛИЈА
+КАТИЋ ИВАН
+КАТИЋ ЈОВАН
+КАТИЋ ЈОВО
+КАТИЋ КОСТА
+КАТИЋ КРСТА
+КАТИЋ КСЕНИЈА
+КАТИЋ ЉИЉАНА
+КАТИЋ ЉУБИНКО
+КАТИЋ ЛУКА
+КАТИЋ МАРГАРЕТА
+КАТИЋ МАРИЈА
+КАТИЋ МИЛАН
+КАТИЋ МИЛАН
+КАТИЋ МИЛОРАД
+КАТИЋ МИЛОРАД
+КАТИЋ МИТА
+КАТИЋ НИКОЛА
+КАТИЋ НОВАК
+КАТИЋ ОТИЛИЈА
+КАТИЋ ПАВЛЕ ДР
+КАТИЋ РАДИВОЈ
+КАТИЋ РАТКО
+КАТИЋ САВО
+КАТИЋ СЛОБОДАН
+КАТИЋ СЛОБОДАН
+КАТИЋ СНЕЖАНА
+КАТИЋ СРЕТЕН
+КАТИЋ СТАНКО
+КАТИЋ СВЕТИСЛАВ
+КАТИЋ СВЕТЛАНА
+КАТИЋ ВЕСЕЛА
+КАТИЋ ВЕСНА
+КАТИЋ ВЛАДИМИР
+КАТИЋ ЗЛАТОМИР
+КАТИНЧИЋ ЖЕЛИМИР ДИПЛ ИНГ
+КАТНИЋ САВЕТА
+КАТОНА ИМРЕ
+КАТОНА ЈОЖЕФ
+КАТОНА ЛАЈОШ ДИПЛ ИНГ
+КАТОНА ЛАСЛО
+КАТОНА ВИНЦЕ
+КАУРИЋ НИКОЛА
+КАУРИН ЈУРЕ
+КАУРИН КРСТО
+КАУРИН ЛАЗАР
+КАУРИН МОМЧИЛО
+КАУРИН НЕДЕЉКО
+КАУРИН ВАСО
+КАУРИНОВИЋ БОЖИДАР
+КАУРИНОВИЋ СИМО ДИПЛ ИНГ
+КАУТЕН ЈОХАН
+КАВЧИЋ СТЕВАН
+КАВАЈА ЛУКА
+КАВАЈА НИКО
+КАВАЛИЋ БОРИСЛАВ
+КАВЕЧАН ИВАН ДР
+КАВЕЧАН НИКОЛА
+КАВГИЋ МИОДРАГ
+КАВГИЋ НИКОЛА
+КАВГИЋ ПЕТАР
+КАВГИЋ ПЕТАР
+КАВГИЋ СТЕВАН
+КАВРАЈА СТЕВАН
+КАВРАЈА СВЕТОЗАР
+КАВРАН ЖЕЉКО
+КАЗАФЕРОВИЋ РЕШАД
+КАЗАНЦЕВ ЈОСИПА
+КАЗИ ЕРНЕ
+КАЗИ ЈОЖЕФ
+КАЗИЈА СМИЉКА
+КАЗИМИЋ СТЕВАН
+КАЗИМИРОВИЋ АНА
+КАЗИМИРОВИЋ ЉУБИСАВ
+КАЗИМИРОВИЋ МИРЈАНА
+КАЗИМИРОВИЋ НЕСТОР
+КЕЧА БОЈАНА
+КЕЧА ДУШАНКА
+КЕЧА ИЛИЈА
+КЕЧА МИКАН
+КЕЧА МИЛАН
+КЕЧА МИЛАН
+КЕЧА МИЛАН
+КЕЧА МИЛЕНКО
+КЕЧА МИЛЕВА
+КЕЧА ПЕРО
+КЕЧА РАНКО
+КЕЧА СЛОБОДАН
+КЕЧА ВОЈИН
+КЕЧИЋ ЖИВАН
+КЕЧИЋ МИЛАН АКАДЕМСКИ СЛИКАР
+КЕЧКЕШ ЂЕРЂ
+КЕЧКЕШ ФЕРЕНЦ
+КЕЧКЕШ ЈОСИП
+КЕЧКЕМЕТИ ИШТВАН
+КЕЧКИ РУЖИЦА
+КЕШАНСКИ ИВКА
+КЕШАНСКИ КАТИЦА
+КЕШАНСКИ РАДЕНКО
+КЕШАНСКИ РАДИВОЈ
+КЕШАНСКИ РУЖИЦА
+КЕШАНСКИ СИМО
+КЕШАНСКИ СТАНИСЛАВ
+КЕШЕЉ ЧЕДОМИР
+КЕШЕЉ ЕВА
+КЕШЕЉ ГОЈКО
+КЕШЕЉ ЈОВАН
+КЕШЕЉ РАДМИЛА
+КЕШЕЉ СЛОБОДАН
+КЕШЕЉ УГЉЕША
+КЕШЕЉ ВУКАШИН
+КЕШКИЋ ЗВОНИМИР
+КЕШМАРКИ-КРЕСТА ЈЕЛЕНА
+КЕЖИЋ БИЉАНА
+КЕЖИЋ ДУШАН
+КЕЖИЋ КАТИЦА
+КЕЖИЋ МАРЈАН
+КЕЖИЋ МИЛАН
+КЕЖИЋ НЕВЕНКА
+КЕЖИЋ ВЛАДО
+КЕБИН ЖАРКО
+КЕЦЕЛИ МИХАЉ
+КЕЦИЋ ДАНИЛО ДР
+КЕЦИЋ МИРОСЛАВ
+КЕЦИЋ СЛОБОДАН
+КЕЦМАН ЧЕДА
+КЕЦМАН ЖАРКО
+КЕЦМАН ЂУРО
+КЕЦМАН ЂУРО
+КЕЦМАН БОРИСЛАВ
+КЕЦМАН БРАНКО
+КЕЦМАН ДРАГИЦА
+КЕЦМАН ДУШАН
+КЕЦМАН ИЛИЈА
+КЕЦМАН ЈОВАН
+КЕЦМАН ЈОВАН
+КЕЦМАН ЈУЛКА
+КЕЦМАН ЉУБА
+КЕЦМАН МАРА
+КЕЦМАН МАРКО
+КЕЦМАН МИЛАДИН
+КЕЦМАН МИЛАН
+КЕЦМАН МИЛАН
+КЕЦМАН МИЛКА
+КЕЦМАН МИЛУТИН
+КЕЦМАН МИРЈАНА
+КЕЦМАН МИРОСЛАВА
+КЕЦМАН МЛАДЕН
+КЕЦМАН СТЕВАН
+КЕЦМАН СВЕТКО
+КЕЦО ЧЕДОМИР
+КЕЦО ГОЈКО
+КЕЦО ЈЕЛЕНА
+КЕЦО ЉУБОМИР
+КЕЦО МАРИЈА
+КЕЦО МАРИЈА
+КЕЦО МИРЈАНА
+КЕЦО МИТАР
+КЕЦО МОМИР
+КЕЦО РАДОЈЕ
+КЕЦО РАТКО
+КЕЦО СЛОБОДАН
+КЕЦО СЛОБОДАН
+КЕЏА МИЛОРАД
+КЕДИЋ ДУШАН
+КЕДИЋ СТАНКО
+КЕДВЕШ ЕВА
+КЕФЕР ЈАНОШ
+КЕФЕР ЈОСИП
+КЕГЛОВИЋ ВИНКО
+КЕК ЕРЖЕБЕТ
+КЕК ЕВА
+КЕКЕЉЕВИЋ МИОДРАГ
+КЕКЕЊ ГИЗЕЛА
+КЕКЕЗ ДРАГИЊА
+КЕКИЋ ЂОРЂЕ
+КЕКИЋ ЂУРА
+КЕКИЋ АГИЦА
+КЕКИЋ ДАНИЦА
+КЕКИЋ ДРАГАН
+КЕКИЋ ДУШАН
+КЕКИЋ ГОРДАНА
+КЕКИЋ КОСОВКА
+КЕКИЋ МИЛАН
+КЕКИЋ МИЛИЦА
+КЕКИЋ МИРКО
+КЕКИЋ НАТАЛИЈА
+КЕКИЋ ПЕТАР
+КЕКИЋ СЛАВИЦА
+КЕКИЋ ТЕОДОР
+КЕКИН МАРИЈА
+КЕКОВИЋ ДРАГОЉУБ
+КЕКОВИЋ МЕЛАНИЈА
+КЕКОВИЋ МИОДРАГ
+КЕЛБЛИ МИХАЈЛО
+КЕЛЕ ЈОЖЕФ
+КЕЛЕ ЈОЖЕФ
+КЕЛЕЧ МИЛОРАД
+КЕЛЕЧ МИРКО
+КЕЛЕЧЕВИЋ ДАНИЦА
+КЕЛЕЧЕВИЋ НИКИЦА
+КЕЛЕЧИЋ ИВАН
+КЕЛЕЧИЋ ЈОСИП
+КЕЛЕМЕН АЛЕКСАНДАР ДИПЛ ИНГ
+КЕЛЕМЕН АЛЕКСАНДАР
+КЕЛЕМЕН АНА
+КЕЛЕМЕН ГАБОР
+КЕЛЕМЕН ИМРЕ
+КЕЛЕМЕН ЈОЖЕФ
+КЕЛЕМЕН ЈОЖЕФ
+КЕЛЕМЕН ЛАЈОШ
+КЕЛЕМЕН МАЋАШ
+КЕЛЕМЕН МАРИЈА
+КЕЛЕМЕН ТИБОР
+КЕЛЕР ЈАНОШ
+КЕЛЕР ЈАНОШ
+КЕЛЕР ПЕТАР
+КЕЛЕР РАДМИЛА
+КЕЛЕР СТЕВАН
+КЕЛЕУВА ДРАГО
+КЕЛЕУВА МИХАЈЛО
+КЕЛИЋ СТЕВАНКА
+КЕЛИЈАШЕВИЋ ЖИВКО
+КЕЛНЕР МАРИЈА
+КЕЛОВИЋ МИЛОМИР
+КЕМЕЦ АНДРИЈА
+КЕМЕЦ МИЈО ДИПЛ ИНГ
+КЕМЕНЦИ БЕЛА
+КЕМЕЊ МИРА
+КЕМЕЊ ТЕРЕЗИЈА ДИПЛ ИНГ
+КЕМИВЕШ ГЕОРГ
+КЕНЂЕЛ СТЕВИЦА
+КЕНЦЕЛ СМИЉА
+КЕНЕШКИ ДРАГАН
+КЕНИГ ХЕНДРИХ
+КЕНИГ ЈЕКА
+КЕНИГ ЈЕЛЕНА
+КЕЊАЛО СТОЈАН
+КЕПЧИЈА ИЛИЈА
+КЕПЧИЈА МИЛЕ
+КЕПЧИЈА ТОДОР
+КЕПЕ-ДРАГОСАВЉЕВИЋ ЛИВИЈА
+КЕПЕ ЈУЛИЈАНА
+КЕПИЋ ЖИВАН
+КЕРЧЕВ КАРЛО
+КЕРЧУ МИРЈАНА
+КЕРЧУ СТАНИСЛАВ
+КЕРШНЕР АЛЕКСАНДАР
+КЕРАЦ ЖАРКО
+КЕРАЦ ЖАРКО
+КЕРАЦ ЂУРА
+КЕРАЦ БРАНИСЛАВ
+КЕРАЦ ДАНИЦА
+КЕРАЦ ДУШАН
+КЕРАЦ ЕРЖЕБЕТ
+КЕРАЦ ГАВРА
+КЕРАЦ ЈОВАН
+КЕРАЦ ЈОВАН
+КЕРАЦ ЛАЗАР
+КЕРАЦ ЛАЗАР
+КЕРАЦ ЛЕПОСАВА
+КЕРАЦ МИЛИВОЈ
+КЕРАЦ МИЛОШ
+КЕРАЦ МИТА
+КЕРАЦ ПАВЛЕ
+КЕРАЦ ПАВЛЕ
+КЕРАЦ ПЕРА
+КЕРАЦ СИМА
+КЕРАЦ СОЊА
+КЕРАЦ СПАСА
+КЕРАЦ СТАНА
+КЕРАЦ СТАНИСЛАВА
+КЕРАЦ СТЕВАН
+КЕРАЦ СТЕВАН
+КЕРАЦ ТОДОР
+КЕРАЦ ЗЛАТКО
+КЕРАНОВИЋ МИЛАН
+КЕРАНОВИЋ СТАНА
+КЕРАВЧИН МИТА
+КЕРАВЧИН СВЕТОЗАР
+КЕРАВИЦА ДАВИД
+КЕРАВИЦА ЈОВАН
+КЕРАВИЦА ЉУБОМИР
+КЕРАВИЦА МИЛИВОЈ
+КЕРАВИЦА МИЛОШ
+КЕРАВИЦА МИЛОШ
+КЕРАВИЦА МИОДРАГ
+КЕРАВИЦА МИОДРАГ
+КЕРАВИЦА ПЕТАР
+КЕРАВИЦА СТЕВАН
+КЕРАВИЦА СВЕТИСЛАВ
+КЕРЕЧКИ БРАНКО
+КЕРЕЧКИ ДРАГОМИР
+КЕРЕШЕВИЋ АЛЕКСАНДРА
+КЕРЕШЕВИЋ ИЛОНА
+КЕРЕШЕВИЋ СТОЈАНКА
+КЕРЕШИ ЈУЛИЈАНА
+КЕРЕШИ ВИНЦЕ
+КЕРЕЖИ ФЕРЕНЦ
+КЕРЕЦ ИВАН
+КЕРЕЏИН МИЛАН
+КЕРЕЏИН МИРЈАНА
+КЕРЕЏИН СОФИЈА
+КЕРЕКЕШ ИШТВАН ДИПЛ ИНГ
+КЕРЕКЕШ-МАЛОНКА ЕТЕЛКА
+КЕРЕНЕЦ ЉИЉАНА
+КЕРЕЊИ АЛЕКСАНДАР
+КЕРЕСТЕШ ЈЕНЕ
+КЕРЕСТЕШ ЉУБИЦА
+КЕРЕСТЕШ МАРГИТА
+КЕРЕЗОВИЋ МИХАЈЛО
+КЕРЕЗОВИЋ НЕЂО
+КЕРИ ДЕНЕШ
+КЕРИ ФРАЊО
+КЕРИ ЈОВАН
+КЕРИЋ САВА
+КЕРКЕЗ ДРАГО
+КЕРКЕЗ ДУШАНКА
+КЕРКЕЗ ДУШАН
+КЕРКЕЗ ДУШАН
+КЕРКЕЗ ГОЈКО
+КЕРКЕЗ ИЛИЈА
+КЕРКЕЗ ЛАЗАР
+КЕРКЕЗ МИЛАН
+КЕРКЕЗ МИЛЕНКО
+КЕРКЕЗ МИЛИЦА
+КЕРКЕЗ МИРЈАНА
+КЕРКЕЗ МИРОСЛАВ
+КЕРКЕЗ МЛАДЕН
+КЕРКЕЗ НИКОЛА
+КЕРКЕЗ ПАУЛИНА
+КЕРКЕЗ ПЕТАР
+КЕРКЕЗ СЛОБОДАН
+КЕРКЕЗ СРЕТЕН
+КЕРКЕЗ СТЕВАН
+КЕРКЕЗ СТЕВАН
+КЕРКЕЗ ВЛАДА
+КЕРКЕЗ ВОЈИН
+КЕРЛЕТА НЕЂО
+КЕРМЕЦ ИЛОНКА
+КЕРМЕЦИ ТИБОР
+КЕРМЕНДИ ПЕТАР
+КЕРН ДАНИЕЛ
+КЕРПЕЛ СОФИЈА
+КЕРСНИК ЈОЖЕ
+КЕРСНИК МИША
+КЕРСТИНГ КАТАРИНА
+КЕРТЕС ЕРЖЕБЕТ
+КЕРТЕС ЈАНОШ
+КЕРТЕС ЈАНОШ
+КЕРТЕС ВИЛМОШ
+КЕРВИНА АНТОН
+КЕРВИНА АРИЈАНА
+КЕСЕГ ЛАЈОШ
+КЕСЕГ ЛАЈОШ
+КЕСЕГИ ГЕЗА
+КЕСЕГИ КАРОЉ
+КЕСЕГИ ВОЈИСЛАВ
+КЕСЕР ДРАГИША
+КЕСЕРОВИЋ КАТАРИНА
+КЕСИЋ ЖИВКО
+КЕСИЋ ЂУРА
+КЕСИЋ БОШКО
+КЕСИЋ БОРИСЛАВ
+КЕСИЋ ГОРАН
+КЕСИЋ ЈОВАН
+КЕСИЋ МАРИНКО
+КЕСИЋ МИЛЕ
+КЕСИЋ МИЛИЦА
+КЕСИЋ МИЛКА
+КЕСИЋ НЕВЕНКА
+КЕСИЋ СЛОБОДАН
+КЕСИЋ СТАНОЈЕ ДИПЛ ПРАВНИК
+КЕСЛЕР АНДРИЈА ДР ЛЕКАР
+КЕСЛЕР РОБЕРТ
+КЕТЕЛЕШ РОЖИКА
+КЕТИГ ТОМИСЛАВ
+КЕТИГ ТОМИСЛАВ
+КЕВИЋ МИЛА
+КЕВИЋ ОЛГА
+КЕВИЋ РАДЕ
+КЕВИЉ БРАНКО
+КЕВРЕШАН ЕМИЛ
+КЕЗЕШИ ДУШКО
+КЕЗИЋ ДУШАНКА
+КЕЗИЋ МИРКО
+КЕЗИЈА МИЛОРАД
+КЕЗМИЋ БИЉАНА
+КЕЗУНОВИЋ МИЛОВАН
+КЕЗУНОВИЋ ПЕТКО
+КЕЗУНОВИЋ РАЈКО
+КИЧИ ЕРНЕ
+КИЧИН ЕВА
+КИЧИНА ЛАЗАР
+КИЧИЊ ЕЛИЗАБЕТА
+КИШ-ЧЕПЕГИ ГАБОР
+КИШ-ЧЕПЕГИ ГАБОР
+КИШ-ЧЕПЕГИ РУДОЛФ
+КИШ-ЧЕПЕГИ ТЕРЕЗА
+КИШ ШАНДОР
+КИШ ШАНДОР
+КИШ ЂЕРЂ
+КИШ ЂЕРЂ
+КИШ АЛЕКСАНДАР
+КИШ АНА
+КИШ АНДРИЈА
+КИШ БЕЛА
+КИШ БЕЛА
+КИШ БОЛДИЖАР
+КИШ БРАНКО
+КИШ ДУШАНКА
+КИШ ДУШИЦА
+КИШ ЕРНЕСТ
+КИШ ЕРНЕ
+КИШ ЕСТЕР
+КИШ ЕВА
+КИШ ФЕРЕНЦ
+КИШ ФЕРЕНЦ
+КИШ ФЕРЕНЦ
+КИШ ФРАЊО
+КИШ ГЕЗА
+КИШ ГЕЗА
+КИШ ГИЗЕЛА
+КИШ ХЕЛЕНА
+КИШ ХЕНРИЈЕТА
+КИШ ИШТВАН
+КИШ ИШТВАН
+КИШ ИШТВАН
+КИШ ИЛОНА
+КИШ ИЛОНКА
+КИШ ИРЕНА
+КИШ ИСИДОР
+КИШ ИВАН
+КИШ ИВАН
+КИШ ЈАНКО
+КИШ ЈАНОШ
+КИШ ЈОЖЕФ
+КИШ ЈОЦА
+КИШ ЈОСИП
+КИШ ЈОСИП
+КИШ-ЈОВАК ФРАЊА
+КИШ ЈОЗЕФИНА
+КИШ ЈУЛИЈАН
+КИШ КАЛМАН
+КИШ КАТАЛИН
+КИШ КАТИЦА
+КИШ КАТИЦА
+КИШ ЛАЦИКА
+КИШ ЛАСЛО
+КИШ ЛАСЛО
+КИШ МАРГИТА
+КИШ МАРИЈА
+КИШ МАРИЈА
+КИШ МИХАЉ
+КИШ МИЈА
+КИШ МИЛАН
+КИШ МИЛИЦА
+КИШ МИРКО
+КИШ НАНДОР
+КИШ НИКОЛА
+КИШ НИКОЛА
+КИШ ОТО
+КИШ ОТО
+КИШ ПАВЛЕ
+КИШ ПЕРА
+КИШ ПЕТАР
+КИШ ПЕТАР
+КИШ ПЕТАР
+КИШ РОЗАЛИЈА
+КИШ СЛАВИЦА
+КИШ СЛАВИЦА
+КИШ СЛОБОДАН
+КИШ СТАНИСЛАВ
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЈЕПАН
+КИШ ТИБОР ДР
+КИШ ТИБОР
+КИШ ТИБОР
+КИШ ТОДОР
+КИШ ВЕСНА
+КИШ ВИКТОРИЈА
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВУКОСАВА
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШДОБРАНСКИ МИЛИВОЈ
+КИШЕГЕЦИ ЈАН ДР
+КИШГЕЦИ-ДУДАШ КЛАРА
+КИШГЕЦИ ЕМИЛ
+КИШГЕЦИ ИВАН
+КИШГЕЦИ ПАВЛЕ
+КИШГЕЦИ СТАНИСЛАВ
+КИШГЕЦИ СТАНИСЛАВ
+КИШГЕЦИ СТЕВАН
+КИШГЕЦИ ВЛАДИМИР
+КИШЈУХАС ЈАКОВ
+КИШМИШКА ПАЛ
+КИШПРДИЛОВ ДЕЈАН
+КИШПРДИЛОВ ЗОРАН
+КИЋАНОВИЋ БОРО
+КИЋАНОВИЋ ДАРИНКА
+КИЋАНОВИЋ ЈОКА
+КИЋАНОВИЋ МИРОСЛАВ
+КИЋАНОВИЋ МИТАР
+КИЋАНОВИЋ ПЕТАР
+КИЋАНОВИЋ РАДМИЛА
+КИЋАНОВИЋ РАЈКО
+КИЋАНОВИЋ ЗОРАН
+КИЖДОБРАНСКИ ЖАРКО
+КИЖДОБРАНСКИ ЉУБИЦА
+КИЖДОБРАНСКИ МИЛАН
+КИЖДОБРАНСКИ МИЛАН
+КИЖДОБРАНСКИ МИЛИВОЈ
+КИЖДОБРАНСКИ САВА
+КИЖЕВСКИ ДИМКО
+КИЖЕВСКИ МИРА
+КИЖЕВСКИ ВОЈИСЛАВ
+КИЦОШЕВ БРАНКО
+КИЦОШЕВ ЉИЉАНА
+КИЦОШЕВ МИТА
+КИЦОШЕВ САША
+КИЦОШЕВ СТОЈАН
+КИЦОШЕВИЋ ТРИВА
+КИЦОШЕВИЋ ВЛАЈКО
+КИЈАЧКИ БРАНИСЛАВ
+КИЈАНОВИЋ МАНОЈЛЕ
+КИЈАНОВИЋ СТАНКО
+КИКАНОВИЋ ДИМИТРИЈЕ
+КИКАНОВИЋ ДОБРИЛА
+КИКАНОВИЋ МИЛЕНИЈА
+КИКИЋ-ШОВЉАНСКИ ЉИЉАНА
+КИКИЋ МИРКО
+КИКИЋ СМИЉА ДР
+КИКИНЂАНИН МИРОСЛАВА
+КИКИНДАИ ВЕРА
+КИКОШ ГОРДАН
+КИКОШ ЈОВАН
+КИКОШ ЛАЗАР
+КИКОШ СРБИСЛАВ
+КИКОВИЋ СЛАВИЦА
+КИЛИЋ НИКОЛА
+КИЛИБАРДА МИЛОРАД
+КИЛИБАРДА МИТАР
+КИЛИБАРДА ПАВЛЕ
+КИЛИБАРДА ВЛАДИМИР
+КИЛИБАРДА ВОЈИСЛАВ
+КИМПАНОВ БРАНИСЛАВ
+КИМПАНОВ НАТАЛИЈА
+КИМПАНОВ СЛОБОДАН
+КИМПАНОВ СЛОБОДАН
+КИМПАНОВ СОФИЈА
+КИНЧЕШ МИХАЉ
+КИНЂИН СВЕТОЗАР
+КИНЂИН ВАСА
+КИНДЕРНАЈ ИЛИЈА
+КИНДЕРНАЈ МИЛАН
+КИНДЕРНАЈ ОТО
+КИНДЕРНОЈ ПАВЛЕ
+КИНИК ЈАН
+КИНИК ПАВЛЕ
+КИЊЕРАН СВЕТИСЛАВ
+КИНКА РИТА
+КИПЕРОВИЋ ЈОВО
+КИПИЋ ЂУЛА
+КИПИЋ АНДРИЈА
+КИПИЋ АНКА
+КИПИЋ ЕДИТА
+КИПИЋ ЕРЖЕБЕТ
+КИПИЋ ЕРНЕ
+КИПИЋ ФЕРЕНЦ
+КИПИЋ ФРАЊА
+КИПИЋ ИШТВАН
+КИПИЋ ЈОСИП
+КИПИЋ ЛАСЛО
+КИПИЋ НАНДОР
+КИРЧАН ЕМИЛ
+КИРШ ЈОЖЕФ
+КИРШ МИЛОРАД
+КИРШЕК ЈУРАЈ
+КИРЋАН САВА
+КИРЋАНСКИ БРАНКО
+КИРЋАНСКИ ДУШКО
+КИРЋАНСКИ ИВАН
+КИРЋАНСКИ МИЛИЦА
+КИРЋАНСКИ ОБРАД
+КИРЋАНСКИ РАДИВОЈ
+КИРЋАНСКИ РАДОСЛАВА
+КИРДА ВЛАДИМИР
+КИРИЋ ФРАЊО
+КИРИЋ МЕНКА
+КИРИЋ СЛОБОДАН
+КИРИЋ СТАНИСЛАВ
+КИРИЏИЋ ДРАГИША
+КИРИЏИЋ МИЛОШ
+КИРИЏИЋ ОБРАД
+КИРИЛОВ АЛЕКСАНДАР
+КИРИЛОВИЋ АЛЕКСАНДАР
+КИРИЛОВИЋ ДОБРИНКА
+КИРИЛОВИЋ ЈЕЛЕНА
+КИРИЛОВИЋ КРИСТА
+КИРИЛОВИЋ КРИСТИНА
+КИРИЛОВИЋ ОЛГА
+КИРИН ЖЕЉКО
+КИРИН ИВИЦА
+КИРИН СНЕЖАНА
+КИРЈАКОВИЋ ЈОВАН
+КИРЈАКОВИЋ НИКОЛА
+КИРКОВ ДИМИТАР
+КИРКОВ ВЕРИЦА
+КИРН ВЛАДИМИР
+КИРОВАКОВ ВАЛЕРИЈА
+КИРТИЋ ДУШАН
+КИСАЧАНИН ДЕСАНКА
+КИСАЧАНИН ДУШАН
+КИСАЧАНИН МИОДРАГ ДИПЛ ИНГ
+КИСАЧАНИН МИРОСЛАВ
+КИСАЧАНИН ПАВЛЕ
+КИСАЧАНИН СВЕТОЗАР
+КИСЕЛИЧКИ ЖИВКО СУДИЈА
+КИСЕЛИЧКИ ДАНИЦА
+КИСЕЛИЧКИ ФЕДОР ДР
+КИСЕЛИЧКИ ЛАЗАР ДИПЛ ИНГ
+КИСЕЛИЦА ЖАРКО
+КИСЕЛИЦА НАДА
+КИСЕЛИЦА ПЕТАР
+КИСЕЛИЦА ПЕТАР
+КИСИЋ ДУШАН
+КИСИЋ ЈОВАН
+КИСИЋ МИРКО
+КИСИЋ СРЂАН
+КИСИЋ СВЕТОЗАР
+КИСИН АНЂА
+КИСИН МИЛИЦА
+КИСИН МИЛКА
+КИСИН ТОМО
+КИСЛИЦ ИРЕНА
+КИСЛОВСКИ ВЛАДИМИР
+КИСО МИЛОРАД
+КИСТЕР ВИНКО
+КИТ ВАСИЉ
+КИТАНОВИЋ ЖИВКО
+КИТАНОВИЋ БРАНИСЛАВА
+КИТАНОВИЋ КАТИЦА
+КИТАНОВИЋ ЛЕНКА
+КИТАНОВИЋ МИРЈАНА
+КИТАНОВИЋ НЕДЕЉКО
+КИТАНОВИЋ ТОМА
+КИТАНОВСКИ ДИМЧЕ
+КИТИЋ РАДОЈКА
+КИТИЋ САВО
+КИТИЋ СТОЈКО
+КИТИЋ ВЕЛИМИР
+КИУРСКИ СТЕВАН ДИПЛ ОЕЦ
+КИВОВИЋ АНТОНИЈА
+КИЗА БРАНКИЦА
+КИЗИЋ ДУШАН
+КИЗИЋ ЛИДИЈА
+КИЗИЋ МАРКО
+КИЗИЋ МИХАИЛО
+КИЗИЋ САВКА
+КИЗИЋ СЛОБОДАН
+КИЗИЋ СЛОБОДАН
+КИЗИЋ СНЕЖАНА
+КИЗИЋ ТИХОСЛАВ
+КИЗУР АНДРАШ
+КИЗУР ИШТВАН
+КИЗУР ЈАНОШ
+КИЗУР ЛАСЛО
+КИЗУР ПАВЕЛ
+КИЗУР ВЕРА
+КЛАЧАР МИЛКО
+КЛАЧАР МИЛОШ
+КЛАШЊА ЖАРКО
+КЛАШЊА БРАНКО
+КЛАШЊА ЈОВАН
+КЛАШЊА МАРИЈА
+КЛАШЊА МИКА
+КЛАШЊА МИЛЕНА
+КЛАШЊА МИЛЕ
+КЛАШЊА МИЛИЦА
+КЛАШЊА МИРОСЛАВ
+КЛАШЊА ВЛАДИСЛАВ ДР ЛЕКАР
+КЛАЋ ДРАГАН
+КЛАЋИК ЈОЖЕФ
+КЛАЋИК МАРИЈА
+КЛАДУШИЋ МЕНСУРА
+КЛАИЋ АНТО
+КЛАИЋ ПАВО
+КЛАЈ ПЕТАР
+КЛАЈИЋ ЂУРА
+КЛАЈИЋ ДАНИЛО
+КЛАЈИЋ ЉУБИЦА
+КЛАЈИЋ МАГДАЛЕНА
+КЛАЈИЋ ОЛГА
+КЛАЈИЋ РОЗАЛИЈА
+КЛАЈИЋ ВАЛЕРИЈА
+КЛАЈИЋ ВИДА
+КЛАЈН АЛБЕРТ
+КЛАЈН АНА
+КЛАЈН ДРАГУТИН
+КЛАЈН ИВАНКА
+КЛАЈН ИВАН
+КЛАЈН ЛАЈЧО ДР
+КЛАЈН МИРОСЛАВ
+КЛАЈН ВЕРА
+КЛАЈНЕР ЕСТЕР
+КЛАЈНЕР ИШТВАН
+КЛАМАР КАРЛО
+КЛАМИК ИМРЕ
+КЛАПАРЕВИЋ ГОРАН
+КЛАПАРЕВИЋ САВА
+КЛАПАРЕВИЋ ВАСИЛИЈЕ
+КЛАРИЋ ДУШАНКА
+КЛАРИЋ ГОРАН
+КЛАРИЋ ЉУБИЦА
+КЛАРИЋ МИЛИЋ
+КЛАРИЋ МИЛОРАД
+КЛАРИЋ ОЛГА
+КЛАРИЋ СЕКА
+КЛАСАН АНА
+КЛАСЕР АЛБЕРТ
+КЛАСИЋ ЛАДИСЛАВ
+КЛАСИЋ САША
+КЛАУС ЕРЖЕБЕТ
+КЛАУС ЕРЖЕБЕТ
+КЛАУС ЛАСЛО
+КЛЕБЕЧКО ШАНДОР
+КЛЕБЕЧКО ШАНДОР
+КЛЕМ АДАМ ДР
+КЛЕМ ЈОЖЕФ
+КЛЕМ ТЕРЕЗА
+КЛЕМЕНОВИЋ УРОШ
+КЛЕНОЦКИ МАРИЈА
+КЛЕНОВШЕК ФРАЊА
+КЛЕНОВШЕК ТЕРЕЗИЈА
+КЛЕНОВШЕК ЗВОНИМИР
+КЛЕПИЋ ЂУРАЂ
+КЛЕПИЋ НИКОЛА
+КЛЕТ ГЕЗА
+КЛЕУТ МИЛАН
+КЛЕУТ РУЖА ДР ЛЕКАР
+КЛЕВЕРНИЋ БОРИСЛАВ
+КЛИЧЕК ИРЕНА
+КЛИЧКОВИЋ ДАНИЦА
+КЛИЧКОВИЋ КОСТА
+КЛИЧКОВИЋ ВЕРА
+КЛИШАНИЋ ЈОСИП
+КЛИШАНИЋ СТАНИСЛАВ
+КЛИЦОВ ИЛИЈА
+КЛИКОВАЦ МИХАЈЛО
+КЛИКОВАЦ ВЕЛИМИР
+КЛИМЕШ ДРАГАНА
+КЛИМЕШ ЗОРА
+КЛИНАЦ УРОШ
+КЛИНАР ИВАН
+КЛИНЦОВ НАДА
+КЛИНЏИЋ СТЈЕПАН
+КЛИНГЕР КАТИЦА
+КЛИНКО ЈАН
+КЛИНОЦКИ ЂЕРЂ
+КЛИНОВСКИ БРАНКО
+КЛИНОВСКИ ДРАГАН
+КЛИНОВСКИ ДРАГАН
+КЛИНОВСКИ ДУШАН
+КЛИПА ЖИВАН
+КЛИПА ЂОРЂЕ
+КЛИПА ЈЕЛИЦА
+КЛИПА-КРАБЕС ГРЕТА
+КЛИПА ЛАЗАР
+КЛИПА МИКА
+КЛИР ИЛОНА
+КЛИР РОЗАЛИЈА
+КЛИСАРА ЖИВКО
+КЛИСАРА ЂОРЂЕ
+КЛИСАРИЋ МИРКО
+КЛИСИЋ НАДА
+КЛИСКА АНЂЕЛИЈА
+КЛИСКА ВОЈО
+КЛИСУРА МИЛОШ
+КЛИСУРА МОМИР
+КЛИСУРА СТАКА
+КЛИСУРИЋ ЂУРО
+КЛИВИЊИ ЈОЖЕФ
+КЉАИЋ ЛЕПОСАВА
+КЉАИЋ МАЦА
+КЉАИЋ СИМО
+КЉАИН ДРАГИЊА
+КЉАИН ЛАЗАР
+КЉАЈИЋ ЂОРЂЕ ПРОФЕСОР
+КЉАЈИЋ ЂОРЂЕ
+КЉАЈИЋ ЂОРЂЕ
+КЉАЈИЋ БОРИВОЈЕ
+КЉАЈИЋ БОРКА
+КЉАЈИЋ БРАНКО
+КЉАЈИЋ БРАНКО
+КЉАЈИЋ ДАНИЛО
+КЉАЈИЋ ДРАГАН
+КЉАЈИЋ ДРАГАН
+КЉАЈИЋ ДУШАНКА
+КЉАЈИЋ ИЛИЈА
+КЉАЈИЋ ИЛИЈА
+КЉАЈИЋ ИВАН
+КЉАЈИЋ ЈЕЛЕНА
+КЉАЈИЋ КОВИЉКА
+КЉАЈИЋ ЛУКА
+КЉАЈИЋ МАРА
+КЉАЈИЋ МИЛАН
+КЉАЈИЋ МИЛЕВА
+КЉАЈИЋ МИОДРАГ
+КЉАЈИЋ НАДА
+КЉАЈИЋ ОЛИВЕРА
+КЉАЈИЋ ПЕТАР
+КЉАЈИЋ-РАДАКОВИЋ МИЛИЦА
+КЉАЈИЋ СЕНКА
+КЉАЈИЋ ВАТА
+КЉАЈИЋ ВЛАДО
+КЉАЈИЋ ВУКИЦА
+КЉАЈИЋ ЗДРАВКО
+КЉАКИЋ ВУКАШИН
+КЉЕЧАНИН МИРЈАНА
+КЉУЧОВСКИ МАХАЉИНА
+КЉУЧОВСКИ НИКОЛА
+КЉУТИЋ ЈАСМИНА
+КЉУТИЋ ОСТОЈА
+КЛОБУШИЦКИ ВЛАДИСЛАВ
+КЛОПФЕР ЂОРЂЕ
+КЛОПКА КЛАРА ДР
+КЛОПКА ПИРОШКА
+КМЕЧ МАРТИН
+КМЕЧКО СТЕВАН
+КМЕЋ ЈАН ДР
+КМЕЗИЋ ИВАНКА
+КМЕЗИЋ МИЛЕ
+КМЕЗИЋ ВЛАДА
+КМИЦИКЕВИЋ ЗОРАН
+КМИЦИКОВИЋ МИЛОЈКА
+КНЕШАУРЕК МАРИЈА
+КНЕЖЕВ ЖАРКО ДИПЛ ИНГ
+КНЕЖЕВ ЂОРЂЕ
+КНЕЖЕВ ЂОРЂЕ
+КНЕЖЕВ ЂУРА
+КНЕЖЕВ ЈЕЛИЦА
+КНЕЖЕВ ЉИЉАНА
+КНЕЖЕВИЋ ЖАРКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖИВКА
+КНЕЖЕВИЋ ЖИВКО
+КНЕЖЕВИЋ ЖИВОЈИН
+КНЕЖЕВИЋ ЖИВОЈИН
+КНЕЖЕВИЋ ЂИНЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂУРА
+КНЕЖЕВИЋ ЂУРА
+КНЕЖЕВИЋ ЂУРО
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДРА
+КНЕЖЕВИЋ АЛЕКСА
+КНЕЖЕВИЋ АНЂЕЛКО
+КНЕЖЕВИЋ АНИЦА
+КНЕЖЕВИЋ АНИЦА
+КНЕЖЕВИЋ АРКАДИЈА
+КНЕЖЕВИЋ БОШКО
+КНЕЖЕВИЋ БОЖО
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОРИСЛАВ
+КНЕЖЕВИЋ БОРИС
+КНЕЖЕВИЋ БОРКА
+КНЕЖЕВИЋ БОСИЉКА
+КНЕЖЕВИЋ БРАНИМИР
+КНЕЖЕВИЋ БРАНКО
+КНЕЖЕВИЋ БРАНКО
+КНЕЖЕВИЋ ЦВИЈО
+КНЕЖЕВИЋ ДОБРИВОЈЕ
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГИША
+КНЕЖЕВИЋ ДРАГИЦА
+КНЕЖЕВИЋ ДРАГИЦА
+КНЕЖЕВИЋ ДРАГОЉУБ
+КНЕЖЕВИЋ ДРАГОЉУБ
+КНЕЖЕВИЋ ДУШАНКА
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ГЛИША
+КНЕЖЕВИЋ ГОРДАНА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИВАНКА
+КНЕЖЕВИЋ ИВАН
+КНЕЖЕВИЋ ИВАН
+КНЕЖЕВИЋ ЈЕЛА
+КНЕЖЕВИЋ ЈЕЛЕНА
+КНЕЖЕВИЋ ЈЕЛЕНА
+КНЕЖЕВИЋ ЈЕЛИСАВКА
+КНЕЖЕВИЋ ЈОСИП
+КНЕЖЕВИЋ ЈОВАНКА
+КНЕЖЕВИЋ ЈОВАНКА
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВО
+КНЕЖЕВИЋ ЈУГОСЛАВ
+КНЕЖЕВИЋ КРСТАН
+КНЕЖЕВИЋ ЛАТИНКА
+КНЕЖЕВИЋ ЛАЗАР
+КНЕЖЕВИЋ ЛАЗАР
+КНЕЖЕВИЋ ЉИЉАНА
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ МАНЕ
+КНЕЖЕВИЋ МАРИЦА
+КНЕЖЕВИЋ МАРИЦА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРКО
+КНЕЖЕВИЋ МИЋА
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИЛАДИН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛИЦА
+КНЕЖЕВИЋ МИЛИЈАНА
+КНЕЖЕВИЋ МИЛИВОЈ
+КНЕЖЕВИЋ МИЛКА
+КНЕЖЕВИЋ МИЛОШ
+КНЕЖЕВИЋ МИЛОМИР
+КНЕЖЕВИЋ МИЛОЊА
+КНЕЖЕВИЋ МИЛОЊА
+КНЕЖЕВИЋ МИЛОРАД
+КНЕЖЕВИЋ МИЛУТИН
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИРЈАНА
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРОСЛАВ
+КНЕЖЕВИЋ МИРОСЛАВ
+КНЕЖЕВИЋ МЛАДЕН
+КНЕЖЕВИЋ МОМЧИЛО
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ НАДА
+КНЕЖЕВИЋ НАДЕЖДА
+КНЕЖЕВИЋ НЕНАД
+КНЕЖЕВИЋ НЕВЕНА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ ПАНТА
+КНЕЖЕВИЋ ПАВЛЕ
+КНЕЖЕВИЋ ПЕРА
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТКО
+КНЕЖЕВИЋ РАДА
+КНЕЖЕВИЋ РАДЕ
+КНЕЖЕВИЋ РАДИВОЈЕ
+КНЕЖЕВИЋ РАДИВОЈЕ
+КНЕЖЕВИЋ РАДМИЛА
+КНЕЖЕВИЋ РАДОМИР
+КНЕЖЕВИЋ РАДОСЛАВ
+КНЕЖЕВИЋ РАЈКО
+КНЕЖЕВИЋ РАНКО
+КНЕЖЕВИЋ РИСТО
+КНЕЖЕВИЋ РОЗА
+КНЕЖЕВИЋ САВО
+КНЕЖЕВИЋ СИНИША
+КНЕЖЕВИЋ СЛАВКО
+КНЕЖЕВИЋ СЛАВКО
+КНЕЖЕВИЋ СЛАВОЉУБ
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СПАСЕНИЈА
+КНЕЖЕВИЋ СРБИСЛАВА
+КНЕЖЕВИЋ СТАНА
+КНЕЖЕВИЋ СТАНИША
+КНЕЖЕВИЋ СТАНИМИР
+КНЕЖЕВИЋ СТАНКО
+КНЕЖЕВИЋ СТЕВАН
+КНЕЖЕВИЋ СТЕВО
+КНЕЖЕВИЋ СТЕВО
+КНЕЖЕВИЋ СТИПЕ
+КНЕЖЕВИЋ СТОЈАН
+КНЕЖЕВИЋ СВЕТКО
+КНЕЖЕВИЋ СВЕТО
+КНЕЖЕВИЋ ТЕОДОР
+КНЕЖЕВИЋ ТОМИСЛАВ
+КНЕЖЕВИЋ УРОШ
+КНЕЖЕВИЋ ВАСИЛИЈА
+КНЕЖЕВИЋ ВЕРА
+КНЕЖЕВИЋ ВЕРА
+КНЕЖЕВИЋ ВЛАДИМИР
+КНЕЖЕВИЋ ВЛАДИМИР
+КНЕЖЕВИЋ ВЛАСТИМИР
+КНЕЖЕВИЋ ВЛАСТИМИР
+КНЕЖЕВИЋ ВОЈИН
+КНЕЖЕВИЋ ВУКОСАВ
+КНЕЖЕВИЋ ЗДРАВКО
+КНЕЖЕВИЋ ЗЛАТАН
+КНЕЖЕВИЋ ЗОРАН
+КНЕЖЕВИЋ ЗОРАН
+КНЕЖЕВИЋ ЗОРА
+КНЕЖИЋ ОЛГА
+КНЕЖИЋ РАДОМИР
+КНЕБЛ ФРАЊА
+КНЕБЛ НИКОЛА
+КНЕГИЋ МИРОСЛАВ
+КНЕР ДЕЗИДЕР
+КНЕСЕЛАЦ БРАНИСЛАВА
+КНЕЗ ЗЛАТКО
+КНЕЗИ ИВАН
+КНЕЗИ ЈОЖЕФ
+КНЕЗИ СЛОБОДАН
+КЊЕШКО ЖУЖАНА
+КЊЕШКО АЛБЕРТ
+КОЧАР ЛАСЛО
+КОЧАР СТЕФАНИЈА
+КОЧАР ТИХОМИР
+КОЧЕТОВ ТАТЈАНА
+КОЧИ ЕТЕЛКА
+КОЧИ ИШТВАН
+КОЧИ ВЛАДИМИР
+КОЧИШ ЂУРА
+КОЧИШ АНДРИЈА
+КОЧИШ АНДРИЈА
+КОЧИШ ЕРНЕСТ
+КОЧИШ ГЕРГЕЉ ДИПЛ ИНГ
+КОЧИШ ХЕЛЕНА
+КОЧИШ ИШТВАН
+КОЧИШ ЈАКОВ
+КОЧИШ ЈАНКО
+КОЧИШ ЈАНОШ
+КОЧИШ КАРЛО
+КОЧИШ МАРИЈА
+КОЧИШ МИХАЈЛО
+КОЧИШ НИКОЛА ПРОФЕСОР
+КОЧИШ РАДЕ
+КОЧИШ ВЛАДИМИР
+КОЧИШ ВЛАДИМИР
+КОЧИЋ ДРАГО
+КОЧИЋ МАНЕ
+КОЧИЋ МИЛОРАД
+КОЧИЋ СТАНИСЛАВ
+КОЧОБА РАДИСЛАВ
+КОЧОСКИ ПЕТАР
+КОЧОВИЋ АЛЕКСАНДАР
+КОЧОВИЋ МИЛЕТА
+КОШЋАК САВКА
+КОША ТИБОР ДИПЛ ИНГ
+КОШАНИН МИЛОМИР
+КОШАЊИ ФЕРЕНЦ
+КОШАРИЋ ДИМИТРИЈЕ
+КОШИЋ ЉУБИЦА
+КОШИЋ МИТА
+КОШИЋ СТЕВАН
+КОШИЋ СТЕВО
+КОШИЋ ВАСИЛИЈЕ
+КОШИЦКИ ЛЕА
+КОШИЦКИ МАРИЈА
+КОШНИЧАР МИЛАН
+КОШНИЧАР СОФИЈА
+КОШОЦКИ МАРИЈА
+КОШУТИЋ ЂУРО
+КОШУТИЋ ЂУРО
+КОШУТИЋ БОЖИДАР
+КОШУТИЋ БРАНКО
+КОШУТИЋ ДИМИТРИЈЕ
+КОШУТИЋ ДУШАН
+КОШУТИЋ ЈОВАН
+КОШУТИЋ КОСТА
+КОШУТИЋ МАНЕ
+КОШУТИЋ МИЛОШ
+КОШУТИЋ НИКОЛА
+КОЋАЛО РАДОЈИЦА
+КОЖУЛ ГОЈКО
+КОЖУЛ ГОЈКО
+КОЖУЛ РАЈКО
+КОЖУВАРА ГАВРА
+КОБАШ ЈОСИП
+КОБАШ КАТИЦА
+КОБАШ ВУКАШИН
+КОБАЛ ЂУРА
+КОБАЛ БОЖИДАР
+КОБАЛ ИРИС
+КОБАЛ ИВАН
+КОБИЛАРИЋ ЂУРЂИЦА
+КОБИЛАРОВ АНГЕЛИНА
+КОБИЛАРОВ ЉУБОМИР
+КОБИЛАРОВ МИЛАНКА
+КОБИЛАРОВ МИЛОШ
+КОБИЛАРОВ МИРОСЛАВ
+КОБИЛАРОВ НЕГОВАН
+КОБИЛАРОВ НЕСТОР
+КОБИЛАРОВ СИМА
+КОБИЛАРОВ ТОША
+КОБИЛАРОВ ВАСА
+КОБИЉСКИ ЂОРЂЕ
+КОБИЉСКИ ДОБРИЛА
+КОБИЉСКИ ДРАГОМИР
+КОБИЉСКИ ДУШАН
+КОБИЉСКИ ЛАЗАР
+КОБИЉСКИ МИЛОШ
+КОБИЉСКИ МИРЈАНА
+КОБИЉСКИ МЛАДЕН
+КОБИЉСКИ НИКОЛА
+КОБИЉСКИ СТЕВАН
+КОБИЉСКИ ВИДА
+КОБИЛСКИ МАРИЈА
+КОБРЕХЕЛ ЛАЈОШ
+КОЦАП МАРИЈА
+КОЦАП МИРА
+КОЦАП ВЛАДИМИР
+КОЦИ ФЕРЕНЦ
+КОЦИ РЕЖЕ
+КОЦИЋ ЖИКИЦА
+КОЦИЋ АЛЕКСАНДАР
+КОЦИЋ АНИЦА
+КОЦИЋ ДУШАНКА
+КОЦИЋ ЈАСНА
+КОЦИЋ ЉИЉАНА
+КОЦИЋ МИЛИЈАНА
+КОЦИЋ РАДМИЛА
+КОЦИЋ СИНИША
+КОЦИЋ СЛАЂАНА
+КОЦИЋ СЛАВКО
+КОЦИЋ ТОМИСЛАВ
+КОЦИЋ ВАСИЛИЈЕ
+КОЦИЋ ВЕЛИНКА
+КОЦИЋ ЗВЕЗДАН
+КОЦИЈАНЧИЋ МИРА
+КОЦКАР БОРИСЛАВ
+КОЦКАР БОРИСЛАВ
+КОЦКАР ЉУБОМИР
+КОЦКАР ВЛАДИМИР
+КОЦКАРЕВИЋ БРАНИСЛАВ
+КОЦКАРЕВИЋ ЈОВАН
+КОЦКАРЕВИЋ МИЛИЦА
+КОЦО ШАНДОР
+КОЦО ЕРЖЕБЕТ
+КОЦОЉЕВАЦ СТАНИСЛАВ
+КОЏО САША
+КОЏО ЗОРАН
+КОДИЋ ДИМИТРИЈЕ
+КОДРАНОВ РАДОВАН
+КОДРАНОВ СРЕДОЈЕ
+КОДРИН ЉУДМИЛА
+КОГОЈ ЕДУАРД
+КОГОЈ ЕМА
+КОХ ЈОЖЕФ
+КОХ САВЕТА
+КОХАНЕЦ ШАНДОР
+КОХАНЕЦ ФРАЊА
+КОХАНЕЦ ГАШПАР
+КОХАНЕЦ ЈОВАН
+КОХАНЕЦ МАРИЈА
+КОХАНЕЦ ПАЛ
+КОХУТ ЂУРА
+КОХУТ СТОЈА
+КОЈЧИЋ АНЂЕЛКО
+КОЈЧИЋ ДРАГИЦА
+КОЈЧИЋ ИВАНА
+КОЈЧИЋ ПРЕДРАГ
+КОЈЧИЋ СРЕДОЈЕ ДР
+КОЈЧИН ЏЕМИЉА
+КОЈЧИН МИЛЕВА
+КОЈАДИНОВИЋ ЖИВКО
+КОЈАДИНОВИЋ БОШКО
+КОЈАДИНОВИЋ БОРО
+КОЈАДИНОВИЋ ГОРДАНА
+КОЈАДИНОВИЋ КАТА
+КОЈАДИНОВИЋ МИРА
+КОЈАДИНОВИЋ РАДЕ
+КОЈАДИНОВИЋ СТОЈАН
+КОЈАДИНОВИЋ ВЛАДИМИР
+КОЈДИЋ МИРЈАНА
+КОЈДИЋ МЛАДЕН
+КОЈДИЋ ПЕТАР
+КОЈИЧИЋ НОВКА
+КОЈИЧИЋ ТОМИСЛАВ
+КОЈИЧИН МИЛАН
+КОЈИЋ ЧЕДОМИР
+КОЈИЋ ЖИВАН
+КОЈИЋ ЂУРАЂ
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АРСЕН
+КОЈИЋ БОШКО
+КОЈИЋ-БОЖАНИЋ СОФИЈА
+КОЈИЋ БОРИВОЈ
+КОЈИЋ БРАНИСЛАВ
+КОЈИЋ ДАНИЦА
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГИЊА
+КОЈИЋ ДУШАН
+КОЈИЋ ЕРЖЕБЕТ
+КОЈИЋ ГОРАН
+КОЈИЋ ГОРАН
+КОЈИЋ ГОРАН
+КОЈИЋ ХРИСТИФОР
+КОЈИЋ ИВАН
+КОЈИЋ ИВАН
+КОЈИЋ ИВАН
+КОЈИЋ ЈОВАНКА
+КОЈИЋ ЈОВАНКА
+КОЈИЋ ЈОВО
+КОЈИЋ ЛЕПОСАВА
+КОЈИЋ ЉУБИЦА
+КОЈИЋ ЉУБОДРАГ
+КОЈИЋ ЛУКА
+КОЈИЋ МИХАИЛО
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛЕНА
+КОЈИЋ МИЛЕНА
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛОВИНА
+КОЈИЋ МИОДРАГ
+КОЈИЋ МИРЈАНА
+КОЈИЋ МОМЧИЛО
+КОЈИЋ НЕЂО
+КОЈИЋ НЕБОЈША
+КОЈИЋ НЕБОЈША
+КОЈИЋ НЕДЕЉКО
+КОЈИЋ ОЛГИЦА
+КОЈИЋ ПЕТАР
+КОЈИЋ РАДИВОЈ
+КОЈИЋ РУЖИЦА
+КОЈИЋ РУЖИЦА
+КОЈИЋ САВО
+КОЈИЋ СИМЕОН
+КОЈИЋ СИНИША
+КОЈИЋ СПАСЕНИЈА
+КОЈИЋ СТЕВАН
+КОЈИЋ СТЕВАН
+КОЈИЋ СТЕВАН
+КОЈИЋ СВЕТИСЛАВ
+КОЈИЋ УГЉЕША
+КОЈИЋ ВАСА
+КОЈИЋ ВЕЛИМИР
+КОЈИЋ ВИНКА
+КОЈИЋ ВЛАДИСЛАВ
+КОЈОВИЋ ЖАРКО
+КОЈОВИЋ МИЛИНКО
+КОКАИ ШАНДОР
+КОКАИ ШАНДОР
+КОКАИ ШАНДОР
+КОКАИ АЛИСА
+КОКАИ ЕЛЕНА
+КОКАИ ФЕРЕНЦ
+КОКАИ ФЕРЕНЦ
+КОКАИ ФЕРЕНЦ
+КОКАИ ЛАДИСЛАВ
+КОКАИ ЛАСЛО
+КОКАИ МАГДОЛНА
+КОКАИ МИХАЈЛО
+КОКАИ ТИБОР
+КОКАН ИВАН
+КОКАНОВ МИЛЕТА
+КОКАНОВИЋ ДУШАН
+КОКАНОВИЋ КОВИЉКА
+КОКАР ВЕРИЦА
+КОКАР ВИЛМА
+КОКЕЉ ТУГОМИР
+КОКЕЗА ЖАРКО
+КОКЕЗА ДУШАН
+КОКЕЗА МИЛЕНА
+КОКИЋ ЈОВАН
+КОКИЋ МИРОСЛАВ
+КОКИНОВИЋ СЛАВКО
+КОКИР ЉУБО
+КОКОРУШ ОСТОЈА
+КОКОТ РАДЕ
+КОКОТ СМИЉА
+КОКОТ СРЕТА
+КОКОТ СВЕТЛАНА
+КОКОТ ВИЦО
+КОКОТОВИЋ ЖИВКО
+КОКОТОВИЋ БОЖИДАР
+КОКОТОВИЋ ГОЈКО
+КОКОТОВИЋ ИЛИЈА
+КОКОТОВИЋ ИВИЦА
+КОКОТОВИЋ ЈЕЛИСАВЕТА
+КОКОТОВИЋ КАТИЦА
+КОКОТОВИЋ ПЕТАР
+КОКОТОВИЋ СНЕЖАНА
+КОКОТОВИЋ ВЕСЕЛИН
+КОКОВИЋ ДРАГАН
+КОКОВИЋ ГОРАН
+КОЛЂЕРАЈ ЂОН
+КОЛАЧАРИЋ ВЕЛИБОР
+КОЛАШИНАЦ ЉУБОМИР
+КОЛАК ДУШАН
+КОЛАК ЈЕЛЕНА
+КОЛАК МИЛАН
+КОЛАКОВИЋ АЛМАЗ
+КОЛАКОВИЋ ЈУРЕ
+КОЛАКОВИЋ МИЛЕ
+КОЛАКОВИЋ ЗДРАВКО
+КОЛАКУШИЋ ИВИЦА
+КОЛАКВИЋ ЉИЉАНА
+КОЛАНО АНТОН
+КОЛАНО ДРАГОСЛАВ
+КОЛАНО ИВАН
+КОЛАНО ЈУЛКА
+КОЛАР АНА
+КОЛАР АНА
+КОЛАР АНДРИЈА
+КОЛАР АНТАЛ
+КОЛАР ДАРКО
+КОЛАР ИБОЉКА
+КОЛАР ИВАН
+КОЛАР ЈОСИП
+КОЛАР ЈОСИП
+КОЛАР ЈУЛИЈАНА
+КОЛАР ЛАЈОШ
+КОЛАР ЛАСЛО
+КОЛАР ЛОЗИНКА
+КОЛАР МАТИЈА
+КОЛАР МИЛИЦА
+КОЛАР МИРКО
+КОЛАР ПАВЛЕ
+КОЛАР ПЕТАР
+КОЛАРШ ШТЕФАН
+КОЛАРЕВИЋ ЉУБИЦА
+КОЛАРИЋ АЛЕКСАНДРА
+КОЛАРИЋ БРАНКО
+КОЛАРИЋ БРИГИТА
+КОЛАРИЋ ДОБРИЛА
+КОЛАРИЋ ДРАГИЦА
+КОЛАРИЋ ДРАГОЉУБ
+КОЛАРИЋ ДУШАН
+КОЛАРИЋ ФИЛИП
+КОЛАРИЋ ИДА
+КОЛАРИЋ КОСТА
+КОЛАРИЋ МАРИЈА
+КОЛАРИЋ МАРИЈА
+КОЛАРИЋ МИЛАН
+КОЛАРИЋ МИЛАН
+КОЛАРИЋ МИЛИВОЈ
+КОЛАРИЋ МЛАДЕН
+КОЛАРИЋ НАДА
+КОЛАРИЋ НЕМАЊА
+КОЛАРИЋ НИКОЛА
+КОЛАРИЋ РАДОВАН
+КОЛАРИЋ СЛАВКО
+КОЛАРИЋ СЛОБОДАН
+КОЛАРИЋ СЛОБОДАН
+КОЛАРИЋ СНЕЖАНА
+КОЛАРИЋ СТЕВАН
+КОЛАРИЋ ТОМИСЛАВ
+КОЛАРИЋ ВОЈА
+КОЛАРИЋ ЗОРАН
+КОЛАРИЋ ЗВОНКО
+КОЛАРОВ ЖИВА
+КОЛАРОВ ЂОРЂЕ
+КОЛАРОВ АЛЕКСАНДАР
+КОЛАРОВ ДИМИТРИЈЕ
+КОЛАРОВ ДРАГОСЛАВ
+КОЛАРОВ ДРАГОСЛАВ
+КОЛАРОВ ГОЈКО
+КОЛАРОВ ЈОВАН
+КОЛАРОВ ЈОВАН
+КОЛАРОВ ЈУЛКА
+КОЛАРОВ КАТЕ
+КОЛАРОВ ЉИЉАНА
+КОЛАРОВ МАРИЦА
+КОЛАРОВ МИЛАНКА
+КОЛАРОВ МИЛИВОЈ
+КОЛАРОВ МИЛОШ
+КОЛАРОВ МОМИР
+КОЛАРОВ НАДА ДР ЛЕКАР
+КОЛАРОВ НЕБОЈША
+КОЛАРОВ ПАВЛЕ
+КОЛАРОВ ПЕТАР
+КОЛАРОВ РАДОЈКО
+КОЛАРОВ-РАДОВАНОВИЋ МАРИНА
+КОЛАРОВ САВА
+КОЛАРОВ ТОДОР
+КОЛАРОВ ТОМИСЛАВ
+КОЛАРОВ ВОЈИСЛАВ
+КОЛАРОВИЋ ЖИВКО
+КОЛАРОВИЋ ЈЕЛЕНА
+КОЛАРОВИЋ КАТИЦА
+КОЛАРОВИЋ КОВИНКА
+КОЛАРОВИЋ ЛУКА ДР
+КОЛАРОВИЋ МИХАЈЛО
+КОЛАРОВИЋ МИЛИЦА
+КОЛАРОВИЋ НЕНАД
+КОЛАРСКИ ЂОРЂЕ
+КОЛАРСКИ АЛЕКСАНДАР
+КОЛАРСКИ АНИЦА
+КОЛАРСКИ АРПАД
+КОЛАРСКИ БОСИЉКА
+КОЛАРСКИ БРАНИСЛАВ
+КОЛАРСКИ ДАНИЦА
+КОЛАРСКИ ДУШАНКА ДИПЛ ОЕЦ
+КОЛАРСКИ ЈОВАН
+КОЛАРСКИ ЈОВАН
+КОЛАРСКИ КАТИЦА
+КОЛАРСКИ ЛАСЛО
+КОЛАРСКИ ЛАЗАР
+КОЛАРСКИ МИЛАДИН
+КОЛАРСКИ МИЛАН
+КОЛАРСКИ МИЛЕНКО ВЕТЕРИНАР
+КОЛАРСКИ МИЛЕНКО
+КОЛАРСКИ МИЛИЦА
+КОЛАРСКИ МИТАР
+КОЛАРСКИ МЛАДЕН
+КОЛАРСКИ МЛАДЕН
+КОЛАРСКИ НАДА
+КОЛАРСКИ НИКОЛА
+КОЛАРСКИ РАДМИЛА
+КОЛАРСКИ РАДОСЛАВ
+КОЛАРСКИ РАДОВАН
+КОЛАРСКИ РАДОВАН
+КОЛАРСКИ СЛАВИЦА
+КОЛАРСКИ СТЕВАН
+КОЛАРСКИ СТЕВАН
+КОЛАРСКИ ТОДОР
+КОЛАРСКИ ВЕРА
+КОЛАРСКИ ЗДРАВКО
+КОЛБАС ДАНИЈЕЛ
+КОЛБАС ЈАНКО
+КОЛБАС ЈОАКИМ
+КОЛБАС МЕЛАНИЈА
+КОЛБАС МИЛЕВА
+КОЛБАС ВЛАДА
+КОЛЏИЋ БРАНКА
+КОЛЏИЋ БРАНКО
+КОЛЏИН МИРКО
+КОЛЏИН ВЕСЕЛИН
+КОЛДАН МИЛЕНКО
+КОЛЕШКА ЕДУАРД
+КОЛЕДАР АНДРИЈА
+КОЛЕДИН ЂОРЂЕ
+КОЛЕДИН ФОТИЈЕ
+КОЛЕДИН МИЛОШ
+КОЛЕДИН МИРЈАНА
+КОЛЕДИН ПЕТАР
+КОЛЕДИН РАДОСЛАВ
+КОЛЕДИН РАДОВАН
+КОЛЕДИН РАДОВАН
+КОЛЕДИН СТЕВАН
+КОЛЕДИН ВЕЛИМИР
+КОЛЕДИН ВЕРА
+КОЛЕР АНТАЛ
+КОЛЕР ЛАЈОШ
+КОЛЕСАР ЂУРА
+КОЛЕСАР АНИЦА
+КОЛЕСАР ФЕДОР
+КОЛЕСАР ФЕРЕНЦ
+КОЛЕСАР ГАВРА
+КОЛЕСАР ЈАНОШ
+КОЛЕСАР ЈОВАН
+КОЛЕСАР ЈОВАН
+КОЛЕСАР ЈУЛИЈАН
+КОЛЕСАР ЈУЛИЈАН
+КОЛЕСАР КАТИЦА
+КОЛЕСАР КСЕНИЈА
+КОЛЕСАР МИХАЈЛО
+КОЛЕСАР ПЕТАР ДР
+КОЛЕСАР ПЕТАР
+КОЛЕСАР СИМЕОН
+КОЛЕСАР ВЕРА
+КОЛЕСАР ВЛАДИМИР
+КОЛЕСАР ЗОРИЦА
+КОЛЕСАРИЋ ВИНКО
+КОЛЕВ ТОДОРКА
+КОЛИЋ АИША
+КОЛИН ЈОЖЕФ НОВИНАР
+КОЉАЏИНСКИ ЈОВАН
+КОЉАЏИНСКИ СТЕФАНИЈА
+КОЉАЈА БЛАГОЈЕ
+КОЉАЈА ДРАГАН
+КОЉАЈА ГОРАН
+КОЉАНИН ПЕТАР
+КОЛМАН ЈОЖЕФ
+КОЛОЧАИ ЈОСИП
+КОЛОШЊАИ МИРОН
+КОЛОШЊАЈИ ЈАНКО
+КОЛОШЊАЈИ ВЛАДИМИР
+КОЛОПИЋ ПЕТАР
+КОЛОПИЋ РУЖИЦА
+КОЛОВИЋ СТЕВАН
+КОЛТИН БРАНКО
+КОЛУНЏИЋ ЖИВКА
+КОЛУНЏИЋ ЂУРА
+КОЛУНЏИЋ АНКА
+КОЛУНЏИЋ ПЕРИЦА
+КОЛУНЏИЋ СЛАВКО
+КОЛУНЏИЋ СЛАВКО
+КОЛУНЏИЈА АНЂЕЛКА
+КОЛУНЏИЈА БОРИСЛАВ
+КОЛУНЏИЈА ДАВОРКА
+КОЛУНЏИЈА ДРАГАН
+КОЛУНЏИЈА ЛАЗАР
+КОЛУНЏИЈА ЉУБОМИР
+КОЛУНЏИЈА МИРКО
+КОЛУНЏИЈА НАДА
+КОЛУНЏИЈА НИКОЛА
+КОЛУНЏИЈА ЗОРКА
+КОЛУТАЦ МАТИЈА
+КОМШИЋ ЈОВАН
+КОМШО НИКОЛА
+КОМАД АНА
+КОМАД ГОЈКО
+КОМАД РАТОМИР
+КОМАД ТОМИСЛАВ
+КОМАДАНОВИЋ МОМЧИЛО
+КОМАДАНОВИЋ МОМИР
+КОМАДАРИЋ МИЛОШ
+КОМАДИНА МАНЕ
+КОМАДИНА ВЕЛИСЛАВ
+КОМАДИНА ВУЈАДИН
+КОМАДИНИЋ МИЛОРАД
+КОМАДИНОВИЋ ДУШАН
+КОМАДИНОВИЋ МИРА
+КОМАДИНОВИЋ РАДОСЛАВ
+КОМАН БОСИЉКА
+КОМАНОВ МАРИЈА
+КОМАР ГОЈКО ДИПЛ ИНГ
+КОМАР РАДИВОЈЕ
+КОМАР СЛАВКА
+КОМАР СЛОБОДАН
+КОМАР ЗОРКА
+КОМАРЧЕВИЋ АЛЕКСАНДАР
+КОМАРЧЕВИЋ ИШТВАН
+КОМАРЧЕВИЋ МИЛЕНА
+КОМАРЧЕВИЋ МИЛИНКО ДР
+КОМАРЧЕВИЋ МИРОСЛАВ
+КОМАРЧЕВИЋ ВЛАДИМИР
+КОМАРИЦА МАРКО
+КОМАРИЦА НОВКО
+КОМАРИЦА РАДМИЛА
+КОМАРОМИ ЂОРЂЕ
+КОМАРОМИ АНЂЕЛКА
+КОМАРОМИ БОРБАЛА
+КОМАРОМИ БОРЈАНКА
+КОМАРОМИ БОРЈАНКА
+КОМАРОМИ ИРМА
+КОМАРОМИ КЛАРА
+КОМАРОМИ МАГДОЛНА
+КОМАРОМИ МАГДОЛНА
+КОМАРОМИ МАРИЈА
+КОМАРОМИ ПЕТАР
+КОМАРОМИ ЗОЛТАН
+КОМАРОВ АЛЕКСАНДАР ДИПЛ ИНГ
+КОМАРОВ АЛЕКСАНДАР
+КОМАРОВ БРАНКА
+КОМАРОВ ДРАГИЦА
+КОМАРОВ ДРАГОМИР
+КОМАТИНА ДРАГАН
+КОМАТИНОВИЋ МИХАЈЛО
+КОМАТОВИЋ МИЛАН
+КОМАТОВИЋ ВЕЛИМИР
+КОМАЗЕЦ ДРАГОМИР
+КОМАЗЕЦ ПЕТАР
+КОМБЕРИ АВДУШ
+КОМБИЉ ВЕРА
+КОМЕНДА АНДРИЈА
+КОМИНКО ЉУБИЦА
+КОМЛЕНИЋ ЂОРЂЕ
+КОМЛЕНОВ ЖИВАН
+КОМЛЕНОВ ЂОРЂЕ
+КОМЛЕНОВ ЈОВАН
+КОМЛЕНОВИЋ МАРИЈА
+КОМЛЕНОВИЋ МИЛАН
+КОМЛЕНОВИЋ МИЛЕ
+КОМЛЕНОВИЋ ВЕЉКО
+КОМЛЕНСКИ ЖИВАН
+КОМЛЕНСКИ-ДЕЛИЋ ВУКОСАВА ДР
+КОМЛЕНСКИ ЗОРАН
+КОМЉЕНОВИЋ АЛЕКСАНДРА
+КОМЉЕНОВИЋ БОШКО
+КОМЉЕНОВИЋ МИЛАН
+КОМЉЕНОВИЋ МОМИР
+КОМЉЕНОВИЋ СТЕВАН
+КОМЉЕНОВИЋ ВЛАДО
+КОМЛУШАН БОЖА
+КОМЛУШКИ ИВАНА МР
+КОМНЕНИЋ ИВАНКА
+КОМНЕНОВ ШАРЛОТА
+КОМНЕНОВ МИЛОРАД
+КОМНЕНОВ НИКОЛА
+КОМНЕНОВ САНДРА
+КОМНЕНОВ СТАНИСЛАВ
+КОМНЕНОВ ВЕСЕЛИНА
+КОМНЕНОВ ВЛАДИМИР ДР
+КОМНЕНОВИЋ ЖИВАН
+КОМНЕНОВИЋ БРАНКО
+КОМНЕНОВИЋ ДЕЈАН
+КОМНЕНОВИЋ ЈЕЛЕНА
+КОМНЕНОВИЋ ЉУБОЈЕ
+КОМНЕНОВИЋ МИЛАН
+КОМНЕНОВИЋ РАДОСЛАВ
+КОМНЕНОВИЋ СТАНКО
+КОМНЕНОВИЋ СТОЈАН
+КОМНЕНОВИЋ ВЕРИЦА
+КОМОСАР БРАНКО
+КОМОСАР РАЈКО
+КОМОЗЕЦ ЂОРЂЕ
+КОМОЗЕЦ ЛАЗАР
+КОН СЛОБОДАНКА
+КОН СТЕВАН
+КОН ТОМАЖ
+КОНЧАР АНДРИЈА
+КОНЧАР БОСИЉКА
+КОНЧАР ЈОВО
+КОНЧАР ЛАДИСЛАВ
+КОНЧАР МИРА
+КОНЧАР МИТАР
+КОНЧАР НИКОЛА
+КОНЧАР НИКОЛА
+КОНЧАР РАНКО
+КОНЧАР СЛАВКО
+КОНЧАР ЗОРА
+КОНЧАР ЗОРА
+КОНЧАРЕВИЋ ДАНИЦА
+КОНЧАРЕВИЋ ИЛИЈА
+КОНЧЕК РОЗАЛИЈА
+КОНАКОВ НЕДЕЉКО
+КОНЦ ШАНДОР
+КОНЦ ИШТВАН
+КОНЦ ИЛОНА
+КОНЦ ЉИЉАНА
+КОНЦ ЗОРАНКА
+КОНДАН МАРГАРЕТА
+КОНДИЋ АНА
+КОНДИЋ АНКА
+КОНДИЋ БРАНКО
+КОНДИЋ ДРАГАН
+КОНДИЋ ДРАГИЦА
+КОНДИЋ ДРАГОЉУБ
+КОНДИЋ ДУШАНКА
+КОНДИЋ ЈОВАН
+КОНДИЋ ЉУБИЦА
+КОНДИЋ МИЛЕНКО
+КОНДИЋ МИРА
+КОНДИЋ НЕБОЈША
+КОНДИЋ НЕМАЊА
+КОНДИЋ НИКОЛА
+КОНДИЋ НИКОЛА
+КОНДИЋ РАДМИЛА
+КОНДИЋ РАДОЈКА
+КОНДИЋ РАЈКО
+КОНДИЋ САНДРА
+КОНДИЋ ТРИВО
+КОНДИЋ ЗДРАВКО
+КОНДИЋ ЗОРКА
+КОНДОЈАНИ ЂОРЂЕ
+КОНДРАК СТОЈАН
+КОНДРАТЈЕВ ШТЕФАНИЈА
+КОНЕЧНИ МАРИЈА
+КОНЕЦКИ ЗЛАТКО
+КОНЕЦКИ ЗЛАТКО
+КОНЕН РОБЕРТ
+КОНЕН РОБЕРТ
+КОНЕСКА ЉИЉАНА
+КОНГО ВЕРА
+КОЊАТИЋ ШИМО
+КОЊЕВИЋ ЖИВА ДИПЛ ПРАВНИК
+КОЊЕВИЋ АНА
+КОЊЕВИЋ ДАНИЛО
+КОЊЕВИЋ ДОБРИВОЈ
+КОЊЕВИЋ ДРАГОМИР
+КОЊЕВИЋ ГРОЗДАНА
+КОЊЕВИЋ ИВАНКА
+КОЊЕВИЋ МИЛЕВА
+КОЊЕВИЋ МИЛИВОЈ
+КОЊЕВИЋ МЛАЂЕН
+КОЊЕВИЋ МЛАДЕН
+КОЊЕВИЋ НЕНАД
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ СТАНИСЛАВ
+КОЊЕВИЋ СТАНИСЛАВ
+КОЊИЋ СТОЈАНКА
+КОЊИК НАДА
+КОЊИК ВИДОЈЕ
+КОЊОВИЋ БРАНИСЛАВ
+КОЊОВИЋ ЈОВАН
+КОЊОВИЋ МАКСИМ
+КОЊОВИЋ МИЛАН
+КОЊОВИЋ МИРЈАНА
+КОЊОВИЋ НИКОЛА
+КОЊОВИЋ РАДОСЛАВА
+КОЊОВИЋ СМИЉА
+КОЊОВИЋ СОФИЈА
+КОЊОВИЋ ТИНКА
+КОЊОВИЋ ВЕРА
+КОНКОЛ МИХАЈЛО
+КОНКОЉ МАРИЈА
+КОНОПЕК СТАНИМИР
+КОНРАД ФРАЊА
+КОНРАД МИРЧА
+КОНРАД ПАВЛЕ
+КОНСТАНТИН БУХА
+КОНСТАНТИНИДИС ДИМИТРИЈЕ
+КОНСТАНТИНИДИС ГЕОРГИОС
+КОНСТАНТИНИДИС ТЕОДОР
+КОНСТАНТИНИДУ СОФИЈА
+КОНСТАНТИНОВИЋ АНЂЕЛИЈА
+КОНСТАНТИНОВИЋ БЛАГОЈЕ
+КОНСТАНТИНОВИЋ ХЕРМИНА
+КОНСТАНТИНОВИЋ ЈЕЛИЦА
+КОНСТАНТИНОВИЋ ЈОРДАН
+КОНСТАНТИНОВИЋ ЈОВАН
+КОНСТАНТИНОВИЋ ЉИЉАНА
+КОНСТАНТИНОВИЋ ЛУКА
+КОНСТАНТИНОВИЋ МИРЈАНА
+КОНСТАНТИНОВИЋ НИКОЛА
+КОНСТАНТИНОВИЋ ПЕТАР
+КОНСТАНТИНОВИЋ ВЕРА
+КОНСТАНТИНОВИЋ ЗВОНИМИР
+КОНТИЋ ДОБРИВОЈ
+КОНТИЋ ЈОВАНКА
+КОНТИЋ МИЛАН
+КОНТИЋ СЛАВИЦА
+КОНТРИЋ ЈОВАН
+КОПЧАНСКИ ЖЕЉКО
+КОПЧАНСКИ ИРИНА
+КОПЧАНСКИ НИКОЛА
+КОПЧАНСКИ ПЕТАР
+КОПЧАНСКИ РАДМИЛА
+КОПЧАНСКИ СТЕВАН
+КОПЧАНСКИ ВЛАДА
+КОПЧОК АНА
+КОПЧОК КАТИЦА
+КОПЧОК МИША
+КОПЧОК САНДРА
+КОПАЊА ДАНИЛО
+КОПАЊА ДРАГОМИР
+КОПАЊА ДУШАН
+КОПАЊА ДУШАН
+КОПАЊА ГОЈКО
+КОПАЊА ГОЈКО
+КОПАЊА ИЛИЈА
+КОПАЊА ЉУПКО
+КОПАЊА МИЋО
+КОПАЊА МИОДРАГ
+КОПАЊА МИТАР
+КОПАЊА РАНИСЛАВ
+КОПАЊА РОСА
+КОПАЊА ВИД
+КОПАС ЈАНОШ
+КОПЕРЕЦ АЛЕКСАНДАР
+КОПЕРЕЦ АНДРИЈА
+КОПЕРЕЦ ЈАНОШ
+КОПЕРЕЦ ЈОВАН
+КОПЕРЕЦ СТЕВАН
+КОПЕРЕЦ СТЕВАН
+КОПЕСТЕНСКИ КАТИЦА
+КОПЕСТИНСКИЈ РЕГИНА
+КОПИЋ ИЛОНА
+КОПИЦЛ РУДОЛФ
+КОПИЛОВИЋ ЈОСИП
+КОПИЛОВИЋ МАРГА
+КОПИЛОВИЋ-МИЈАТОВ ДРАГИЦА
+КОПИЛОВИЋ ПАВЛЕ
+КОПИТОВИЋ ШПИРО
+КОПИТОВИЋ ПЕТАР
+КОПЛАЊИ МАРИЈА
+КОПЛАЊИ МИРОСЛАВА
+КОПЛИЋ ЂОРЂЕ
+КОПЛИЋ ДАНИЦА
+КОПЛИЋ ДУШАН
+КОПЛИЋ МИЛЕ
+КОПРЕНОВИЋ РАДОЈКА
+КОПРИВШЕК ЗВОНИМИР
+КОПРИВИЦА АНГЕЛИНА
+КОПРИВИЦА БОЖИДАР
+КОПРИВИЦА БОЖИДАР
+КОПРИВИЦА БОРИСЛАВ
+КОПРИВИЦА ГОРДАНА
+КОПРИВИЦА ЉИЉАНА
+КОПРИВИЦА МИЛЕНКО
+КОПРИВИЦА МИЛУТИН
+КОПРИВИЦА МИОДРАГ
+КОПРИВИЦА НОВАК
+КОПРИВИЦА ОБРЕН
+КОПРИВИЦА ПЕТАР
+КОПРИВИЦА СВЕТОЗАР
+КОПРИВИЦА ЗОРАН
+КОПУНОВИЋ ЉУБИЦА
+КОРЧОК ЈАН
+КОРЧОК МАРИЈА
+КОРЧОК ВЛАДИМИР
+КОРАЋ ЖЕЉКО
+КОРАЋ АНЂЕЛИЈА
+КОРАЋ ДУШАН
+КОРАЋ ГОЈКО
+КОРАЋ ИГОР
+КОРАЋ ЈУЛИЈАНА
+КОРАЋ КАТИЦА
+КОРАЋ ЉУБИСАВ
+КОРАЋ МАНЕ
+КОРАЋ МИХАЈЛО
+КОРАЋ МИЛАН
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛОВАН ДР ПРОФ
+КОРАЋ МИЛОВАН
+КОРАЋ МИЛОВАН
+КОРАЋ МИОДРАГ
+КОРАЋ ПЕТАР
+КОРАЋ ПЕТРА
+КОРАЋ РАДЕ
+КОРАЋ РАДОЈКА
+КОРАЋ РАДОЈКА
+КОРАЋ РАДОСАВ
+КОРАЋ СЛОБОДАН
+КОРАЋ СНЕЖАНА
+КОРАЋ ТАТЈАНА
+КОРАЋ ВЛАДО
+КОРАЈИЦА ЂУРА
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ДИМИТРИЈЕ
+КОРАЈЛИЈА МИЛАН
+КОРАКУ ЛУЧИЈАН
+КОРАКУ ЛУЦИЈАН
+КОРБАТФИНСКИ ЕЛВИРА
+КОРБАТФИНСКИ ВИКТОР ДР
+КОРБАТВИНСКИ ДРАГАН
+КОРБАТВИНСКИ-ЛАЛОШЕВИЋ ЗЛАТА
+КОРБИЋ МЛАДЕН
+КОРДА МИЛОШ
+КОРДА НАНДОР
+КОРДИЋ ЂУРА
+КОРДИЋ БОЈАН
+КОРДИЋ ДУШАНКА
+КОРДИЋ ГОЈКО
+КОРДИЋ МИЛАН
+КОРЕНИЋ ГАБРИЕЛ
+КОРЕНИЋ ТЕОДОР
+КОРЕЊИ ЂОРЂЕ
+КОРЕЊИ АЛЕКСАНДАР
+КОРЕЊИ ЛАСЛО
+КОРЕНТ ЛУДВИГ
+КОРХАМЕР ФЕРЕНЦ
+КОРХЕЦ ПАВЛЕ
+КОРИШ ЈУЛИЈАНА
+КОРИЋАНАЦ ИВАН
+КОРИЋАНАЦ ЉУБИНКА
+КОРИЖ АРПАД
+КОРИЦА ЂОРЂЕ
+КОРИЦА ЂУРО
+КОРИЦА ДУШАН
+КОРИЦА ЈАНКО
+КОРИЦА МИЛОРАД
+КОРИЦА НЕДЕЉКО
+КОРИЦА НИКОЛА
+КОРИЦА ПЕТАР
+КОРИЦА СНЕЖАНА
+КОРИЦА СОФИЈА
+КОРИЦА СТЕВАН
+КОРИСТОВИЋ МИКСАРД
+КОРЛАТ ПЕРИЦА
+КОРЛАТ ПЕТАР
+КОРМАЊОШ ШАНДОР
+КОРМАЊОШ АНДРИЈА
+КОРМАЊОШ БОРКА
+КОРМАЊОШ ФЕРЕНЦ
+КОРМАЊОШ КАРОЉ
+КОРМАЊОШ МИХАЉ
+КОРМОШ ЈАНОШ
+КОРМОШ МАРГИТА
+КОРМОШ МАРГИТА
+КОРМОШ МАРИЈА
+КОРМОШ ТЕРЕЗА
+КОРОШ РАСТИСЛАВ
+КОРОШ ВЛАДА
+КОРОШАН ШАНДОР
+КОРОШЕЦ ЛЕО
+КОРОБКО ТАРАС
+КОРОДИ ФРАЊА
+КОРОКНАИ ФЕРЕНЦ
+КОРОКНАИ ЈАНОШ
+КОРОКНАИ ЗОЛТАН
+КОРОЛИЈА ДУШАН ДР ЛЕКАР
+КОРОЛИЈА ДУШАН
+КОРОЛИЈА СТЕВАН ДР
+КОРОЛИЈА ВЕРА
+КОРОМ ЕРЖЕБЕТ
+КОРОМ ТИБОР
+КОРОМАН МИЛОРАД
+КОРОВ ЂОРЂЕ
+КОРОВЉЕВ ИВАН
+КОРОВЉЕВ ЈОВАНКА
+КОРОВЉЕВ МАРИЈА
+КОРОВЉЕВ МИЛЕНКО
+КОРОВЉЕВ МИЛОШ
+КОРОВЉЕВ РАДМИЛА
+КОРОВЉЕВ ВУКИЦА
+КОРПА БЕЛА
+КОРПАШ АМАЛИЈА
+КОРПАШ ДАНИЦА
+КОРПАШ ДИМИТРИЈЕ
+КОРПАШ ЈАНКО
+КОРПАШ МИРОСЛАВ
+КОРПАШ МИРОСЛАВ
+КОРПАШ ПЕРА
+КОРПАК ДРАГИЊА
+КОРПАК НАДА
+КОРПОНАИ ИШТВАН
+КОРПОНАИ МАРИЈА
+КОРУГА БОРА
+КОРУГА ЈУЛКА
+КОРУГА РАДОМИР
+КОРУНИЋ ЛИЗА
+КОС ИДА
+КОС МАРИЈА
+КОС СЛАВКО
+КОС СЛАВКО
+КОС СТАНКО
+КОСАЋ ДАРИНКА
+КОСАНИЋ БРАНИСЛАВ
+КОСАНИЋ ИВАНКА
+КОСАНИЋ САВА
+КОСАНОВ АЛЕКСАНДАР
+КОСАНОВ КАТИЦА
+КОСАНОВ ВЛАДИМИР
+КОСАНОВИЋ АНЂЕЛКА
+КОСАНОВИЋ БОГДАН МР
+КОСАНОВИЋ БРАНКО
+КОСАНОВИЋ БРАНКО
+КОСАНОВИЋ ДАНЕ
+КОСАНОВИЋ ДРАГАН
+КОСАНОВИЋ ДУШАНКА
+КОСАНОВИЋ ДУШАН
+КОСАНОВИЋ ЈЕЛИЦА
+КОСАНОВИЋ ЈОВАН
+КОСАНОВИЋ КОСАНА
+КОСАНОВИЋ ЛАЗО
+КОСАНОВИЋ ЉУБИЦА
+КОСАНОВИЋ ЉУБОМИР ДР
+КОСАНОВИЋ-МАНДИЋ НЕНА
+КОСАНОВИЋ МАНЕ
+КОСАНОВИЋ МАРКО
+КОСАНОВИЋ МИЋО
+КОСАНОВИЋ МИЛАН
+КОСАНОВИЋ МИЛЕ
+КОСАНОВИЋ МИЛОРАД
+КОСАНОВИЋ МИРКО
+КОСАНОВИЋ МИТАР
+КОСАНОВИЋ МЛАДЕН
+КОСАНОВИЋ НАДА
+КОСАНОВИЋ ОЛГА
+КОСАНОВИЋ ПЕТАР
+КОСАНОВИЋ РАДОВАН
+КОСАНОВИЋ СЛАВКО
+КОСАНОВИЋ СТОЈАН
+КОСАНОВИЋ ВЕЛИМИР
+КОСАНОВИЋ ЗОРИЦА
+КОСАРЕНКО ПЕТАР
+КОСЕДНАР СТЈЕПАН
+КОСИЋ ЖАРКО
+КОСИЋ ЖАРКО
+КОСИЋ ЖИВОЈИН
+КОСИЋ БИЉАНА
+КОСИЋ БОЈАН
+КОСИЋ БОРКО
+КОСИЋ БРАНИСЛАВ
+КОСИЋ ГОРАН
+КОСИЋ ГОРДАНА
+КОСИЋ ИВАН
+КОСИЋ ЈЕЛИЦА
+КОСИЋ ЈОВИЦА
+КОСИЋ ЛУКА
+КОСИЋ МАРИЈА
+КОСИЋ МИЛОВАН
+КОСИЋ МИРКО ДИПЛ ИНГ
+КОСИЋ НЕДЕЉКО
+КОСИЋ РУЖА
+КОСИЋ СВЕТОЗАР
+КОСИЋ ТОМА
+КОСИЋ ЗОРИЦА
+КОСИНА МИЛИЦА
+КОСИРОВИЋ МАРИЈА
+КОСИРОВИЋ МИЛАН
+КОСИРОВИЋ ПАНТЕЛИЈА
+КОСЈЕР ДУШАН
+КОСЈЕРИНА МИЛЕНКО
+КОСКА АТМАНА
+КОСКА ХАТИЏЕ
+КОСКА ЈАСМИДИН
+КОСКА ЉЕРКА
+КОСКА МИЛЕНА
+КОСКА НАДЕЖДА
+КОСКА САФЕТ
+КОСКА САЛИ
+КОСМАЈАЦ ЂОРЂЕ
+КОСМАЈАЦ АНИЦА
+КОСО БОСИЉКА
+КОСО ФРАЊО
+КОСО МИХАЉ
+КОСО ОЛИВЕРА
+КОСО ПАЛ
+КОСОРУШ ЂУРА
+КОСОРУШ ЕТЕЛКА
+КОСОРУШ ПЕТЕР
+КОСОВАЦ ЧЕДА
+КОСОВАЦ ЖИВКО
+КОСОВАЦ АЛЕКСАНДАР ДР
+КОСОВАЦ БОЈАН
+КОСОВАЦ БОЈАН
+КОСОВАЦ ДАРКО
+КОСОВАЦ ДРАГАН
+КОСОВАЦ ДУШАН
+КОСОВАЦ ГЕОРГИЈЕ
+КОСОВАЦ ГОЈКО
+КОСОВАЦ ЈУЛИЈАНА
+КОСОВАЦ МИЛАН
+КОСОВАЦ МИЛАН
+КОСОВАЦ МИРКО
+КОСОВАЦ НИКОЛА
+КОСОВАЦ РАДИВОЈ
+КОСОВАЦ ЗДРАВКО
+КОСОВИЋ АНДРИЈА
+КОСОВИЋ АНКИЦА
+КОСОВИЋ МИЛОРАД
+КОСОВИЋ ОЛГА ПРОФЕСОР
+КОСОВИЋ РАДИСЛАВ
+КОСОВИЋ РАТКО
+КОСОВИЋ СВЕТИСЛАВ
+КОСОВРАСТИ АЏИ
+КОСТАДИНОСКИ БЛАГОЈЕ
+КОСТАДИНОВ РИСТА
+КОСТАДИНОВИЋ БРАНИСЛАВ
+КОСТАДИНОВИЋ ДРАГОЉУБ
+КОСТАДИНОВИЋ ЉИЉАНА
+КОСТАДИНОВИЋ ТИХОМИР
+КОСТАДИНОВИЋ ВЕРА
+КОСТАДИНОВИЋ ВЕРИЦА
+КОСТАДИНОВИЋ ВУКАН
+КОСТАДИНОВСКИ ДИМЧЕ
+КОСТЕЛНИК НЕСТОР
+КОСТЕЛНИК СИЛВЕСТЕР
+КОСТЕВСКИ ИВАН
+КОСТИЋ-ШОБОТ МИЛКА
+КОСТИЋ ЖАРКО
+КОСТИЋ ЖЕЉКО
+КОСТИЋ ЖИВОЈИН
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂУРЂИЦА
+КОСТИЋ АЦА
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДРА
+КОСТИЋ АНА
+КОСТИЋ АНГЕЛИНА
+КОСТИЋ АНКИЦА
+КОСТИЋ БОЖИДАР
+КОСТИЋ БОЖИДАР
+КОСТИЋ БОГОЉУБ
+КОСТИЋ БРАНИМИР
+КОСТИЋ БРАНИСЛАВ
+КОСТИЋ БРАНИСЛАВ
+КОСТИЋ БРАНКО
+КОСТИЋ ДАНИЛО
+КОСТИЋ ДЕЈАН
+КОСТИЋ ДЕСАНКА
+КОСТИЋ ДРАГАН
+КОСТИЋ ДРАГА
+КОСТИЋ ДРАГА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГОЉУБ
+КОСТИЋ ДУШАН
+КОСТИЋ ДУШАН
+КОСТИЋ ДУШАН
+КОСТИЋ ЕЛЕОНОРА
+КОСТИЋ ГЕОРГИНА
+КОСТИЋ ГЛИША
+КОСТИЋ ГОЛУБ
+КОСТИЋ ГОРДАНА
+КОСТИЋ ГРАДИМИР
+КОСТИЋ ИВАН
+КОСТИЋ ИВАН
+КОСТИЋ ЈЕЛЕНА
+КОСТИЋ ЈЕЛИЦА
+КОСТИЋ ЈЕЛИЦА
+КОСТИЋ ЈОРДАНКА
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ КРСМАН
+КОСТИЋ КРСТА
+КОСТИЋ ЉИЉАНА
+КОСТИЋ ЉИЉАНА
+КОСТИЋ ЉУБИША
+КОСТИЋ ЉУБИЦА
+КОСТИЋ ЉУБИЦА
+КОСТИЋ ЉУБИЦА
+КОСТИЋ МАКСИМ
+КОСТИЋ МАРИЈА
+КОСТИЋ МАРКО
+КОСТИЋ МЕТОДИЈЕ
+КОСТИЋ МИХАЈЛО
+КОСТИЋ МИЛАН
+КОСТИЋ МИЛАН
+КОСТИЋ МИЛЕНА ДР
+КОСТИЋ МИЛЕНА
+КОСТИЋ МИЛЕВА
+КОСТИЋ МИЛИЦА
+КОСТИЋ МИЛОРАД
+КОСТИЋ МИЛОВАН
+КОСТИЋ МИЛУША
+КОСТИЋ МИРЈАНА
+КОСТИЋ МИРКО
+КОСТИЋ МОЈСЕ
+КОСТИЋ НАДА
+КОСТИЋ НАДА
+КОСТИЋ НИКОЛА
+КОСТИЋ НИКОЛА
+КОСТИЋ ОЛИВЕРА
+КОСТИЋ ПАВЛЕ
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ РАДОЈИЦА
+КОСТИЋ РАДОЈКО
+КОСТИЋ РАДОМИР
+КОСТИЋ РАДОСАВ
+КОСТИЋ РАТКО
+КОСТИЋ РУЖИЦА
+КОСТИЋ САВА
+КОСТИЋ САВА
+КОСТИЋ СЛАВИЦА
+КОСТИЋ СЛАВКА
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СНЕЖАНА
+КОСТИЋ СПАСЕНКО
+КОСТИЋ СРЕТЕН
+КОСТИЋ СТАНА
+КОСТИЋ СТАНИМИР
+КОСТИЋ СТАНКО
+КОСТИЋ СТАЗА
+КОСТИЋ СТЕВАН
+КОСТИЋ СТОЈАДИН
+КОСТИЋ СТРАХИЊА ДР ПРОФ
+КОСТИЋ СВЕТИСЛАВ ДР
+КОСТИЋ СВЕТИСЛАВ
+КОСТИЋ СВЕТОЗАР
+КОСТИЋ ТИБЕРИЈЕ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ВАСО
+КОСТИЋ ВЕЛИМИР
+КОСТИЋ ВЕРА
+КОСТИЋ ВЛАДИСЛАВА
+КОСТИЋ ВЛАДИСЛАВ
+КОСТИЋ ВЛАСТИМИР
+КОСТИЋ ВОЈИСЛАВ
+КОСТИЋ ВУКАШИН
+КОСТИЋ ЗДРАВКО
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРИЦА
+КОСТОВИЋ ЈЕЛИЦА
+КОСТОВИЋ РАТКО
+КОСТОВИЋ СНЕЖАНА
+КОСТОВСКИ КАТИЦА
+КОСТОВСКИ МИРОСЛАВ
+КОСТОВСКИ ТРАЈЧЕ
+КОСТРЕШ МОМЧИЛО
+КОСТРЕШЕВИЋ ГОРАН
+КОСТРЕШЕВИЋ МИЛАДИН
+КОСТРЕШЕВИЋ НЕДЕЉКО
+КОСТРЕШЕВИЋ СТАНКА
+КОСТРИЧЕНКО ВАСИЛИЈЕ
+КОСТУДИЈА МИРОСЛАВ
+КОТ ИЛОНА
+КОТ ЈОСИП
+КОТ ЛАДИСЛАВ
+КОТ ЛАСЛО
+КОТ МАРТА
+КОТ МИРА
+КОТ МИРКО
+КОТА ЕРЖЕБЕТ
+КОТА ЛАЈОШ
+КОТА МИХАЈЛО
+КОТАРЧЕВИЋ ЕЛВИРА
+КОТАРЧЕВИЋ НИКОЛА
+КОТАРАЦ КАТИЦА
+КОТАРАЦ КОСТА
+КОТАРАЦ СВЕТИСЛАВ
+КОТАРАНИН ЉИЉАНА
+КОТАРАНИН ПЕТАР
+КОТАРЛИЋ ДАРКО
+КОТАРЛИЋ ДРАГАНА
+КОТАРЛИЋ САВА
+КОТХАИ ИШТВАН
+КОТХАИ ЈОЖЕФ
+КОТХАИ СТЕВАН
+КОТХАЈ СТЕВАН
+КОТИЋ ВОЈИСЛАВ
+КОТЛАЈА МИЛАНКО
+КОТЛАЈА МИЛКО
+КОТЛАРИЋ МАРКО ДР
+КОТЛАРИЋ СТАНИМИР
+КОТРБА ФРАЊА
+КОТРЕ МАГДОЛНА
+КОТУШ ЕРЖЕБЕТ
+КОТУШ МИЛИЦА
+КОТУШ МИРОСЛАВ
+КОТУШ СТЕВАН
+КОТУЋ МАРИЈЕТА
+КОТУР АНЂЕЛКА
+КОТУР ДРАГАН
+КОТУР ЈЕЛА
+КОТУР РАДЕ
+КОТУРОВ НАДА
+КОТУРОВИЋ КАТИЦА
+КОУНИС ЉИЉАНА
+КОВЧЕ АМАЛИЈА
+КОВЧЕВ СПАСЕНКА
+КОВЧИН МИЛИЦА
+КОВЧИН МИЛОВАН
+КОВЧИН МИРОСЛАВ ДИПЛ ИНГ
+КОВЧИН НЕГА
+КОВЧИН СТАНИМИР ДР
+КОВАЧ ЧЕДО
+КОВАЧ ШАНДОР
+КОВАЧ ШАНДОР
+КОВАЧ ЂОРЂЕ
+КОВАЧ ЂОРЂЕ
+КОВАЧ ЂУЛА
+КОВАЧ ЂУРЂА
+КОВАЧ-АЧ КАРОЉ
+КОВАЧ АЛЕКСАНДАР
+КОВАЧ АЛЕКСАНДАР
+КОВАЧ АНА
+КОВАЧ АНА
+КОВАЧ АНДРАШ
+КОВАЧ АНТАЛ
+КОВАЧ АНТОН
+КОВАЧ АРПАД
+КОВАЧ АТИЛА
+КОВАЧ БЕЛА
+КОВАЧ БЕЛА
+КОВАЧ-БИРКАШ МИХАЉ
+КОВАЧ БОРИС
+КОВАЧ ДЕЖЕ
+КОВАЧ ДЕСАНКА
+КОВАЧ ДРАГИЦА МР
+КОВАЧ ДУШАН
+КОВАЧ ЕТЕЛКА
+КОВАЧ ЕТЕЛКА
+КОВАЧ ФЕРЕНЦ
+КОВАЧ ФЕРЕНЦ
+КОВАЧ ФРАЊА
+КОВАЧ ФРАЊА
+КОВАЧ ГАБОР
+КОВАЧ ГИЗЕЛА
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИЛОНА
+КОВАЧ ИМРЕ
+КОВАЧ ИМРЕ
+КОВАЧ ИМРЕ
+КОВАЧ ИРЕНА
+КОВАЧ ИРЕНА
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ЈАКОБ
+КОВАЧ ЈАНКО
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАН
+КОВАЧ ЈАН
+КОВАЧ ЈЕЛИЦА
+КОВАЧ ЈЕЛИСАВЕТА
+КОВАЧ ЈОЖЕФ
+КОВАЧ ЈОЖЕФ
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОВАН
+КОВАЧ ЈОВАН
+КОВАЧ ЈОВАН
+КОВАЧ ЈУЛИАНА
+КОВАЧ ЈУЛИЈАНА
+КОВАЧ КАРЛО
+КОВАЧ КАРЛО
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЛЈ
+КОВАЧ КАТАЛИН
+КОВАЧ КАТАРИНА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КОВИЉКА
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАЈОШ
+КОВАЧ ЛАЈОШ
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЉУБАН
+КОВАЧ ЉУДЕВИТ
+КОВАЧ МАЈА
+КОВАЧ МАРГИТА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРТИН
+КОВАЧ МАТИЈА
+КОВАЧ МИХАЈЛО
+КОВАЧ МИХАЈЛО
+КОВАЧ МИХАЉ
+КОВАЧ МИХАЉ
+КОВАЧ МИКЛОШ
+КОВАЧ МИКЛОШ
+КОВАЧ МИЛАДИН
+КОВАЧ МИЛАН
+КОВАЧ МИЛЕНА
+КОВАЧ МИЛОШ
+КОВАЧ МИЛОРАД
+КОВАЧ МИРЈАНА
+КОВАЧ МИРЈАНА
+КОВАЧ МИРЈАНА
+КОВАЧ МИРКО
+КОВАЧ МИРОН ДИПЛ ИНГ
+КОВАЧ МИРОСЛАВ
+КОВАЧ НАТАЛИЈА
+КОВАЧ НИКОЛА
+КОВАЧ НИКОЛА
+КОВАЧ ОЛГИЦА
+КОВАЧ ОЛГИЦА
+КОВАЧ ОТО
+КОВАЧ ПАВЕЛ
+КОВАЧ ПЕТАР
+КОВАЧ РИСТО ДИПЛ ИНГ
+КОВАЧ РОЖИ
+КОВАЧ РОЖИ
+КОВАЧ РОЗАЛИЈА
+КОВАЧ РОЗАЛИЈА
+КОВАЧ РУЖИЦА
+КОВАЧ СИЛВЕСТЕР
+КОВАЧ СМИЉА
+КОВАЧ СТАНОЈКА
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЈЕПАН ДИПЛ ИНГ
+КОВАЧ СВЕТОЗАР
+КОВАЧ ТЕОДОР ДР ПРОФ
+КОВАЧ ТЕОДОР ДР
+КОВАЧ ТИБОР
+КОВАЧ ТИБОР
+КОВАЧ-ТИХМАЈЕР СТЕВАН
+КОВАЧ ТОМИСЛАВ
+КОВАЧ ТРПИМИР
+КОВАЧ ВАЛЕРИЈА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРИЦА
+КОВАЧ ВЕРОНА
+КОВАЧ ВЕРОНА
+КОВАЧ ВИДА
+КОВАЧ ВЛАДИМИР
+КОВАЧ ВЛАДИМИР
+КОВАЧ ЗОРА
+КОВАЧ ЗВОНИМИР
+КОВАЧЕК БОЖИДАР ДР
+КОВАЧЕК ДАНИЦА
+КОВАЧЕК ЈЕЛЕНА
+КОВАЧЕВ ЂОРЂЕ
+КОВАЧЕВ АЛЕКСАНДАР
+КОВАЧЕВ БРАНКА
+КОВАЧЕВ БРАНКО
+КОВАЧЕВ БРАНКО
+КОВАЧЕВ ДАНЧЕ
+КОВАЧЕВ ДАНИЛКА
+КОВАЧЕВ ДИМИТРИЈЕ
+КОВАЧЕВ ДРАГИША
+КОВАЧЕВ ДРАГОСЛАВ
+КОВАЧЕВ ДРАГУТИН
+КОВАЧЕВ ДРАГУТИН
+КОВАЧЕВ ДУШАНКА
+КОВАЧЕВ ГОРАН
+КОВАЧЕВ ГОРДАНА
+КОВАЧЕВ ГОРДАНА
+КОВАЧЕВ ИЛИЈА
+КОВАЧЕВ ИВИЦА
+КОВАЧЕВ ЈЕЛА
+КОВАЧЕВ ЈЕЛЕНА
+КОВАЧЕВ ЈОВАН
+КОВАЧЕВ ЈУЛИЈАНА
+КОВАЧЕВ ЈУЛКА
+КОВАЧЕВ ЛАЗАР
+КОВАЧЕВ МАРИЈА
+КОВАЧЕВ МИЛАН
+КОВАЧЕВ МИЛАН
+КОВАЧЕВ МИЛЕНА
+КОВАЧЕВ МИЛИЦА
+КОВАЧЕВ МИЛОШ
+КОВАЧЕВ МИЛОРАД ДР ЛЕКАР
+КОВАЧЕВ МИЛУТИН
+КОВАЧЕВ МИРЈАНА
+КОВАЧЕВ МЛАДЕН
+КОВАЧЕВ НЕДЕЉКО
+КОВАЧЕВ НЕМАЊА
+КОВАЧЕВ ПЕТАР
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СВЕТИСЛАВ
+КОВАЧЕВ СВЕТОЗАР
+КОВАЧЕВ ТЕОДОР ДР
+КОВАЧЕВ ТЕОДОР ДР
+КОВАЧЕВ ВЕРА
+КОВАЧЕВ ВЕРА
+КОВАЧЕВ ВЕСНА
+КОВАЧЕВИЋ ЧЕДА
+КОВАЧЕВИЋ ЖЕЛИМИР
+КОВАЧЕВИЋ ЖЕЉКО
+КОВАЧЕВИЋ ЖИВАН
+КОВАЧЕВИЋ ЖИВАН
+КОВАЧЕВИЋ ЂОРЂЕ ДИПЛ ИНГ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂУРЂИНА
+КОВАЧЕВИЋ ЂУРА
+КОВАЧЕВИЋ АГНЕШ
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АНЂЕЛИЈА
+КОВАЧЕВИЋ АНДРИЈА
+КОВАЧЕВИЋ АНЕТА
+КОВАЧЕВИЋ АНКИЦА
+КОВАЧЕВИЋ АРСА
+КОВАЧЕВИЋ БЛАГОЈЕ
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОЖИДАР
+КОВАЧЕВИЋ БОГДАН
+КОВАЧЕВИЋ БОГДАН
+КОВАЧЕВИЋ БОРИСЛАВА
+КОВАЧЕВИЋ БОРИСЛАВ
+КОВАЧЕВИЋ БОРИСЛАВ
+КОВАЧЕВИЋ БОРИВОЈЕ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРКА
+КОВАЧЕВИЋ БРАНИМИР
+КОВАЧЕВИЋ БРАНИСЛАВА ДИПЛ ИНГ
+КОВАЧЕВИЋ БРАНИСЛАВА
+КОВАЧЕВИЋ БРАНИСЛАВА
+КОВАЧЕВИЋ БРАНИСЛАВ
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БУДИМИР
+КОВАЧЕВИЋ БУДИМИР
+КОВАЧЕВИЋ ДАМЈАН
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЛО
+КОВАЧЕВИЋ ДАНКА
+КОВАЧЕВИЋ ДАВОРКА
+КОВАЧЕВИЋ ДЕСАНКА
+КОВАЧЕВИЋ ДИМИТРИЈЕ ДИПЛ ОЕЦ
+КОВАЧЕВИЋ ДРАГАН ДР
+КОВАЧЕВИЋ ДРАГАНА
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГИЦА
+КОВАЧЕВИЋ ДРАГИЦА
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГО
+КОВАЧЕВИЋ ДРАГО
+КОВАЧЕВИЋ ДРАГУТИН
+КОВАЧЕВИЋ ДРАГУТИН
+КОВАЧЕВИЋ ДРЕНА
+КОВАЧЕВИЋ ДУШАНКА
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШИЦА
+КОВАЧЕВИЋ ДУШИЦА
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ФРАЊА
+КОВАЧЕВИЋ ГАВРИЛО
+КОВАЧЕВИЋ ГЛИГОРИЈЕ
+КОВАЧЕВИЋ ГОЈКО
+КОВАЧЕВИЋ ИШТВАН
+КОВАЧЕВИЋ ИГЊАТ
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИСА
+КОВАЧЕВИЋ ИВАН
+КОВАЧЕВИЋ ЈАГОШ
+КОВАЧЕВИЋ ЈЕЛЕНА
+КОВАЧЕВИЋ ЈЕЛИЦА
+КОВАЧЕВИЋ ЈЕЛИЦА
+КОВАЧЕВИЋ ЈЕЛИСАВЕТА
+КОВАЧЕВИЋ ЈОРДАН
+КОВАЧЕВИЋ ЈОВАНКА
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВИЦА
+КОВАЧЕВИЋ ЈОВО
+КОВАЧЕВИЋ КАТАРИНА
+КОВАЧЕВИЋ КАТА
+КОВАЧЕВИЋ КАТИЦА ДР
+КОВАЧЕВИЋ КАТИЦА
+КОВАЧЕВИЋ КАТИЦА
+КОВАЧЕВИЋ КЛАРА
+КОВАЧЕВИЋ КОЧА
+КОВАЧЕВИЋ КОЈА
+КОВАЧЕВИЋ КОСТА
+КОВАЧЕВИЋ КОСТА
+КОВАЧЕВИЋ КОВИЉКА
+КОВАЧЕВИЋ КРСТА
+КОВАЧЕВИЋ КРСТО
+КОВАЧЕВИЋ КСЕНИЈА
+КОВАЧЕВИЋ КСЕНИЈА
+КОВАЧЕВИЋ ЛАЗО
+КОВАЧЕВИЋ ЉИЉАНА
+КОВАЧЕВИЋ ЉИЉА
+КОВАЧЕВИЋ ЉУБИЦА
+КОВАЧЕВИЋ ЉУБО
+КОВАЧЕВИЋ МАРА
+КОВАЧЕВИЋ МАРА
+КОВАЧЕВИЋ МАРИЈА
+КОВАЧЕВИЋ МАРИЈА
+КОВАЧЕВИЋ МАРКО
+КОВАЧЕВИЋ МАРКО
+КОВАЧЕВИЋ МИХАЈЛО
+КОВАЧЕВИЋ МИХАЈЛО
+КОВАЧЕВИЋ МИЛАДИНКА
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛЕНА
+КОВАЧЕВИЋ МИЛЕНА
+КОВАЧЕВИЋ МИЛЕ
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИМИР
+КОВАЧЕВИЋ МИЛИВОЈ ДР
+КОВАЧЕВИЋ МИЉАН
+КОВАЧЕВИЋ МИЛКА
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОРАД
+КОВАЧЕВИЋ МИЛОРАД
+КОВАЧЕВИЋ МИЛОВАН
+КОВАЧЕВИЋ МИЛОВАН
+КОВАЧЕВИЋ МИОДРАГ
+КОВАЧЕВИЋ МИОДРАГ
+КОВАЧЕВИЋ МИРА
+КОВАЧЕВИЋ МИРА
+КОВАЧЕВИЋ МИРЈАНА
+КОВАЧЕВИЋ МИРЈАНА
+КОВАЧЕВИЋ МИРКО
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИТАР
+КОВАЧЕВИЋ МИТА
+КОВАЧЕВИЋ-МЛАДЕНОВИЋ ОЛГА
+КОВАЧЕВИЋ МЛАДЕН
+КОВАЧЕВИЋ НАДА
+КОВАЧЕВИЋ НАДЕЖДА
+КОВАЧЕВИЋ НАТАЛИЈА
+КОВАЧЕВИЋ НЕБОЈША
+КОВАЧЕВИЋ НЕДЕЉКА
+КОВАЧЕВИЋ НЕДЕЉКО
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ ОЛГИЦА
+КОВАЧЕВИЋ ОЗРЕН
+КОВАЧЕВИЋ ПАВЛЕ
+КОВАЧЕВИЋ ПАВЛЕ
+КОВАЧЕВИЋ ПЕТАР
+КОВАЧЕВИЋ РАДЕНКО
+КОВАЧЕВИЋ РАДЕ
+КОВАЧЕВИЋ РАДИВОЈЕ
+КОВАЧЕВИЋ РАДИВОЈ
+КОВАЧЕВИЋ РАДИВОЈ
+КОВАЧЕВИЋ РАДМИЛА
+КОВАЧЕВИЋ РАДОЈКА
+КОВАЧЕВИЋ РАДОЈКО
+КОВАЧЕВИЋ РАДОМАН
+КОВАЧЕВИЋ РАДОСЛАВ
+КОВАЧЕВИЋ РАДОВАН
+КОВАЧЕВИЋ РАЈКО
+КОВАЧЕВИЋ РАЈКО
+КОВАЧЕВИЋ РАНКО
+КОВАЧЕВИЋ РЕЉА
+КОВАЧЕВИЋ РУЖИЦА
+КОВАЧЕВИЋ РУЖИЦА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВКА
+КОВАЧЕВИЋ САВО
+КОВАЧЕВИЋ СЕКУЛА
+КОВАЧЕВИЋ СИМЕОН
+КОВАЧЕВИЋ СЛАЂАНА
+КОВАЧЕВИЋ СЛАВИЦА
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СПАСЕНИЈА
+КОВАЧЕВИЋ СРБИЈАНКА
+КОВАЧЕВИЋ СРЕТА
+КОВАЧЕВИЋ СРЕТЕН
+КОВАЧЕВИЋ СТАНА
+КОВАЧЕВИЋ СТАНКА
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТОЛИК
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ ТЕРЕЗА
+КОВАЧЕВИЋ ТОДОР
+КОВАЧЕВИЋ ТОМИСЛАВ
+КОВАЧЕВИЋ ВАСА
+КОВАЧЕВИЋ ВЕЛИМИР
+КОВАЧЕВИЋ ВЕЛИМИР
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИНКО
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИСЛАВ
+КОВАЧЕВИЋ ВОЈИН
+КОВАЧЕВИЋ ВОЈИН
+КОВАЧЕВИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+КОВАЧЕВИЋ ВУЈО
+КОВАЧЕВИЋ ВУКАШИН
+КОВАЧЕВИЋ ВУКАШИН
+КОВАЧЕВИЋ ЗДЕНКО
+КОВАЧЕВИЋ ЗДРАВКО
+КОВАЧЕВИЋ ЗОРАН ДР
+КОВАЧЕВИЋ ЗОРАН
+КОВАЧЕВИЋ ЗОРАН
+КОВАЧЕВИЋ ЗОРИЦА
+КОВАЧЕВИЋ ЗОРИЦА
+КОВАЧЕВИЋ ЗВОНИМИРКА
+КОВАЧИЋ ЖИВКО
+КОВАЧИЋ АНИЦА
+КОВАЧИЋ БОЖАНА
+КОВАЧИЋ БОРИВОЈ
+КОВАЧИЋ ДРАГАНА
+КОВАЧИЋ ДУШАНКА
+КОВАЧИЋ ДУШАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЉЕПОСАВА
+КОВАЧИЋ ЛУКА
+КОВАЧИЋ МИЛАН
+КОВАЧИЋ МИЛЕНКО
+КОВАЧИЋ МИРОСЛАВ
+КОВАЧИЋ МИРОСЛАВ
+КОВАЧИЋ НЕДЕЉКО
+КОВАЧИЋ НИКОЛА
+КОВАЧИЋ ПЕТАР
+КОВАЧИЋ РАДОСЛАВ
+КОВАЧИЋ СЛОБОДАН
+КОВАЧИЋ СТАНИСЛАВ
+КОВАЧИЋ ТАНАСИЈЕ
+КОВАЧИЋ ТОША
+КОВАЧИЋ ТОМИСЛАВ
+КОВАЧИЋ ВЕСНА
+КОВАЧИК МАРГИТА
+КОВАЧИК МАРИЈА
+КОВАЛЧИК ВЛАДИСЛАВ
+КОВАЛОВСКИ ТЕОДОР
+КОВАНОВИЋ ПЕТАР
+КОВАР ЈАЊА
+КОВАРЧИК АНДРИЈА
+КОВАРЧИК МАРИЈА
+КОВАРИК ВАЛЕРИЈА
+КОВЕИНДЛ ЈОСИП
+КОВЕЉ ТОМИСЛАВ
+КОВИЋ ДРАГИЦА
+КОВИЋ НАДА
+КОВИЋ СЛОБОДАН
+КОВИЈАНИЋ ВЛАДИМИР
+КОВИНЧИЋ БОЈАН
+КОВИНЧИЋ МИЛАН
+КОВИНЧИЋ НАДА
+КОВИНЧИЋ НАТАША
+КОВИНЧИЋ СЛОБОДАН ДИПЛ ИНГ
+КОВИНЧИЋ СТОЈАН
+КОВЈАНИЋ АЛЕКСАНДАР
+КОВЈАНИЋ ЈОВАН
+КОВЈАНИЋ МИЛОРАД
+КОВЈАНИЋ НАДА
+КОВЈАНИЋ НЕНАД
+КОВЈАНИЋ ПЕРА
+КОВЈАНИЋ САВА
+КОВЉАН ЂОРЂЕ
+КОВЉАН САВО
+КОВРЛИЈА ЈОВАН
+КОЗАК МАРИЈА
+КОЗАКИВ ИВАН
+КОЗАР РАДЕ
+КОЗАРЧИЋ ЈОВАНКА
+КОЗАРЧИЋ ЈОВАН
+КОЗАРЧИЋ ЈОВАН
+КОЗАРЧИЋ МАРКО
+КОЗАРЧИЋ МИЛАН
+КОЗАРАЦ МИЋО
+КОЗАРЕВ ЖАРКО
+КОЗАРЕВ ЖИВКО
+КОЗАРЕВ АЛЕКСАНДРА
+КОЗАРЕВ БОГОЉУБ
+КОЗАРЕВ ДАРИНКА
+КОЗАРЕВ ДИМИТРИЈЕ
+КОЗАРЕВ ДИМИТРИЈЕ
+КОЗАРЕВ ДРАГИЦА
+КОЗАРЕВ ГОСПАВА
+КОЗАРЕВ ЛАЗАР
+КОЗАРЕВ ЉУБИЦА
+КОЗАРЕВ МАРИЈА
+КОЗАРЕВ МИЛАН
+КОЗАРЕВ МИЛКА
+КОЗАРЕВ МЛАДЕН
+КОЗАРЕВ НЕДЕЉКО
+КОЗАРЕВ ПАВЛЕ
+КОЗАРЕВ ПЕТАР
+КОЗАРЕВ САВА
+КОЗАРЕВ САВА
+КОЗАРЕВ ТОДОР
+КОЗАРЕВИЋ РАДИНКА
+КОЗАРЕВИЋ ЗОРАН
+КОЗАРОВ ЂОРЂЕ
+КОЗАРОВ АНИЦА
+КОЗАРОВ ГАВРА
+КОЗАРОВ ИВАН
+КОЗАРОВ ЈОВАНКА
+КОЗАРОВ КАТИЦА
+КОЗАРОВ МИЛОШ
+КОЗАРОВ НАТАЛИЈА
+КОЗАРОВ ПАВЛЕ
+КОЗАРОВ ПАВЛЕ
+КОЗАРОВ СРБИСЛАВ
+КОЗАРОВ ТОМИСЛАВ
+КОЗАРСКИ ЖИВАН
+КОЗАРСКИ ЖИВКО
+КОЗАРСКИ ЛИДИЈА
+КОЗАРСКИ МАРИЈА
+КОЗАРСКИ МИРОСЛАВ
+КОЗАРСКИ-РАЈИЋ ВЕРИЦА
+КОЗАРСКИ СЛОБОДАН
+КОЗАРСКИ СОФИЈА
+КОЗАРСКИ СТЕВАН
+КОЗАРСКИ ТЕОДОРА
+КОЗАРСКИ ВАСИЛИЈЕ
+КОЗАРСКИ ВЕРА
+КОЗАРСКИ ВОЈИСЛАВ
+КОЗАРСКИ ВОЈИСЛАВ
+КОЗБАШИЋ СТЕВАН
+КОЗИЋ БОГДАН
+КОЗИЋ ПЕТАР
+КОЗИЋ РАТКО
+КОЗИЋ РОЖА
+КОЗИЋ САВА
+КОЗИЋ СТАНКО
+КОЗИЋ ВЕЉКО
+КОЗИНА ИВАН
+КОЗИНА МАРИЦА
+КОЗЛИК КАТАРИНА
+КОЗЛИК ЛАЈОШ
+КОЗЛИНА ДЕСАНКА
+КОЗЛИНА ДУШКО
+КОЗЛИНА ЈЕКА
+КОЗЛИНА МИЛЕ
+КОЗЛИНА ЗЛАТИЦА
+КОЗЛОВАЧКИ ЖИВКО
+КОЗЛОВАЧКИ ГОРДАНА
+КОЗЛОВАЧКИ ЉУБА
+КОЗЛОВАЧКИ САВА
+КОЗЛОВАЧКИ СОФИЈА
+КОЗЛОВАЧКИ ВЕСЕЛИН
+КОЗЛОВИЋ БОРИС
+КОЗЛОВИЋ САВА
+КОЗМА ШАНДОР
+КОЗМА ЕТЕЛ
+КОЗМА ФЕРЕНЦ
+КОЗМА ЈОЖЕФ
+КОЗМА ЈОСИП
+КОЗМИДИС-ПЕТРОВИЋ АНА
+КОЗОМАРА ЂОРЂЕ
+КОЗОМАРА ЈОВО
+КОЗОМАРА ЉУБИЦА
+КОЗОМАРА МАРИЈА
+КОЗОМАРА ЗОРАН
+КОЗОМАРИЋ МАРИЈА
+КОЗОМОРА БОЖИДАР
+КОЗОМОРА БРАНКО
+КОЗОМОРА ИЛИЈА
+КОЗОМОРА ЈОКА
+КОЗОМОРА ЈОВО
+КОЗОМОРА ЛАЗО
+КОЗОМОРА МИЛАН
+КОЗОМОРА МИЛЕ
+КОЗОМОРА МИЛОЈКО
+КОЗОМОРА МИРОСЛАВ
+КОЗОМОРА ПЕТАР
+КОЗОМОРА РАДОМИР
+КОЗОМОРА СРЂАН
+КОЗОМОРА ТАТЈАНА
+КОЗОМОРА ВАСИЛИЈЕ
+КОЗОМОРИЋ БРАНИСЛАВА ДР ЛЕКАР
+КОЗУНОВИЋ МИРОСЛАВ
+КРЧАДИНАЦ КОСТА
+КРЧАДИНАЦ НИКОЛА
+КРЧЕДИНАЦ МИОДРАГ
+КРЧЕДИНАЦ ТИМА
+КРЧЕЛИЋ АНДРИЈА
+КРЧМАР ЖЕЉКО
+КРЧМАР ЦВИЈО
+КРЧМАР ДРАГОМИР
+КРЧМАР ДУШКО
+КРЧМАР ЈОВАН
+КРЧМАР ЛЕПОСАВА
+КРЧМАР ЉУБИЦА
+КРЧМАР ЉУБИЦА
+КРЧМАР МИЛАН
+КРЧМАР МИЛАН
+КРЧМАР МИРКО
+КРЧМАР ПАНЕ
+КРЧМАР ВАСО
+КРЧМАР ВИНКО
+КРЧМАР ЗОРАН
+КРЧМАР ЗОРАН
+КРЧМАРИК ДАНИЛО
+КРЧМАРИК ПРЕДРАГ
+КРЧО БОЖИДАР
+КРЧО МИЛЕНКО
+КРЧО РАСИМ
+КРЧО РАСИМ
+КРШЕВ БОРИС
+КРШЕВ ИВАН
+КРШЕВ ЈУЛИЈАНА
+КРШЕВ ЈУЛКИЦА
+КРШИЋ ДАРА
+КРШИЋ ИГЊАТ
+КРШИЋ ЈЕЛА
+КРШИЋ ТОМО
+КРШИН ЈОВО
+КРШОВИЋ ЈЕЛЕНА
+КРШТЕНИЋ ДЕСАНКА
+КРЖА МИЛЕНКО
+КРЖИЋ СИМО
+КРЂИЋ СПОМЕНКА
+КРАЧЕНСКИ БОРИСЛАВ
+КРАЧЕВСКИ АПОСТОЛ
+КРАЧУН ИВАН
+КРАЧУН ТРАЈАН
+КРАЧУН ТРАЈАН
+КРАЧУНОВ ПЕТАР
+КРАЧУНОВ СТЕВАН
+КРАЧУНОВИЋ ЖИВОРАД
+КРАЧУНОВИЋ ВЕЉКО
+КРАЋАК БОШКО
+КРАГИЧЕК КЛАРА
+КРАГИЋ БИЉАНА
+КРАГИЋ БОРА
+КРАГИЋ ЉИЉАНА
+КРАГИЋ ЗОРАН
+КРАГОВИЋ МАРИНКО
+КРАГОВИЋ ВЛАДИМИР
+КРАГУЈЕВ ДУШАН
+КРАГУЈЕВИЋ МИЛОРАД ДР ЛЕКАР
+КРАГУЈЕВИЋ РАЈКО
+КРАГУЈЕВИЋ СТАНИСЛАВ ДР ЛЕКАР
+КРАГУЉ АЛЕКСАНДАР
+КРАГУЉ ДУШАНКА
+КРАГУЉ ЈЕЛА
+КРАГУЉ ЛАЗО
+КРАГУЉ САВКА
+КРАГУЉЕВИЋ ЗОРИЦА
+КРАЈЧЕВИЋ МИОДРАГ
+КРАЈЧИ ВЛАДИМИР
+КРАЈЧИНОВИЋ ЈОВАН ДР ЛЕКАР
+КРАЈШИЋ МИРКО
+КРАЈАЧЕВИЋ БОРИСЛАВ
+КРАЈАЧЕВИЋ ХИЛДА
+КРАЈАЧЕВИЋ МИРЈАНА
+КРАЈАЧЕВИЋ ТОМИСЛАВ
+КРАЈАЧЕВИЋ ЗОРАН
+КРАЈЦАР ВЛАДИМИР
+КРАЈЦЕР ЕУГЕН
+КРАЈЦЕР ИРЕНА
+КРАЈЦЕР ИВАН
+КРАЈЦЕР ПЕТАР
+КРАЈИШНИК ЖИВОРАД
+КРАЈИШНИК КРИСТИНА
+КРАЈИЋ АГИЦА
+КРАЈИНА АЛЕКСАНДАР
+КРАЈИНА ФИЛИП
+КРАЈИНОВИЋ БРАНКО
+КРАЈИНОВИЋ ЛАЗАР
+КРАЈИНОВИЋ МИЛАН
+КРАЈИНОВИЋ ПАВЛЕ
+КРАЈИНОВИЋ СИНИША
+КРАЈНИК ЖАРКО
+КРАЈНИК ЛАЗАР
+КРАЈНИКЕР НАНДОР
+КРАЈНОВ БОГДАН
+КРАЈНОВ БОГОЉУБ
+КРАЈНОВ ГОРАН
+КРАЈНОВИЋ ЂОРЂЕ
+КРАЈНОВИЋ ЂОРЂЕ
+КРАЈНОВИЋ ЂУРО
+КРАЈНОВИЋ БОШКО
+КРАЈНОВИЋ БОГДАН
+КРАЈНОВИЋ ЈАДРАНКА
+КРАЈНОВИЋ МИЛИЋ
+КРАЈНОВИЋ МИЛИЦА
+КРАЈНОВИЋ НИКОЛА
+КРАЈНОВИЋ ПЕТАР
+КРАЈНОВИЋ РАДЕ
+КРАЈНОВИЋ СЛАВИЦА
+КРАЈНОВИЋ ВЕРА
+КРАЈОВАН МИРЈАНА
+КРАЈОВАН МИРОСЛАВ
+КРАК МИША
+КРАКАНОВИЋ ДУШАН
+КРАКАНОВИЋ ВОЈИСЛАВ
+КРАЛИК МИРОСЛАВ
+КРАЛИК ОЛИНКА
+КРАЛИК ПАВЛЕ
+КРАЛИК СТЕВАН
+КРАЉ ВАЛЕНТИН
+КРАЉ ЗВОНИМИР
+КРАЉЕВАЧКИ БАРБАРА
+КРАЉЕВАЧКИ ИЛИЈА
+КРАЉЕВАЧКИ ЈОСИП
+КРАЉЕВИЋ БОСИЉКА
+КРАЉЕВИЋ ДУШАН
+КРАЉЕВИЋ МАРИЦА
+КРАЉЕВИЋ МИЛКА
+КРАЉЕВИЋ САВО
+КРАЉЕВИЋ ВЛАДИМИР ДР
+КРАЉИЋ ЈЕЛЕНА
+КРАЉИЋ ВЛАДА
+КРАЊЧЕВИЋ ГОРДАНА
+КРАЊЧЕВИЋ ЈОСИП
+КРАС ЈЕЛЕНА
+КРАСАВАЦ ЖИВОРАД
+КРАСАВАЦ МИЛКА
+КРАСАВАЦ МИЛОРАД
+КРАСАВАЦ МИЛОРАД
+КРАСАВАЦ РУЖИЦА
+КРАСИЋ БРАНИСЛАВ
+КРАСИЋ ДУШАН
+КРАСИЋ ГОЛУБ
+КРАСИЋ МИЛОЈЕ
+КРАСИЋ НИКОЛА
+КРАСИЋ СТЕВАН
+КРАСКО ЈАНКО
+КРАСНИЋ ИРИНА
+КРАСНИЋ ВЕРА
+КРАСНИК ВЛАТКО
+КРАСНИК ЗВОНКО
+КРАСОЈЕВИЋ КОНСТАНТИН
+КРАСОЈЕВИЋ ЗОРАН
+КРАСУЛА ТОМА
+КРАСУЉА ДУШАН
+КРАСУЉА СТЕВАН
+КРАУС АНА
+КРАУС ОТО
+КРАВЧЕНКО ПЕТАР
+КРАВАРУШИЋ ДРАГАН
+КРАВАРУШИЋ ИЛИЈА
+КРАВАРУШИЋ ТРИВУН
+КРАВАРУШИЋ ВИТОМИР
+КРАВИЋ ДУШАН
+КРАВИЋ МИЛАН
+КРАВИЋ ПЕТАР
+КРАВЉАНАЦ АЛЕКСАНДРА
+КРАВЉАНАЦ ИВАНКА
+КРБАЊЕВИЋ АЛЕКСАНДАР
+КРБАЊЕВИЋ МИЛАН
+КРБАЊЕВИЋ САША
+КРБАВАЦ ЈЕЛА
+КРЦИЋ БРАТИМИР
+КРЦУНОВИЋ БЛАГОЈЕ
+КРЏАЛИЋ ДРАГАН
+КРЏАЛИЋ СТЕВАН
+КРЏИЋ ВИДОЈЕ
+КРЕШО ЕМИР
+КРЕЦУЛ ЛИДИЈА
+КРЕЦУЉ МАРИЈА
+КРЕГ ЕДУАРД
+КРЕГ ВЛАДИМИР
+КРЕЈИЋ БОРИСЛАВ
+КРЕЈИЋ ЈОВАН
+КРЕЈИЋ МАРИНКО
+КРЕЈИЋ СТАНИСЛАВ
+КРЕЈИЋ СТАНИСЛАВ
+КРЕЈИЋ СТОЈА
+КРЕКИЋ БАРИША ДР
+КРЕКИЋ ЕНВЕР
+КРЕКИЋ ФРАЊА
+КРЕКИЋ МИЛЕНА
+КРЕКО ЉУБИЦА
+КРЕМЕНОВИЋ БОРИСЛАВ
+КРЕМЕНОВИЋ КЛАРА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ МИЛАНКА
+КРЕМЕНОВИЋ МИЛЕНА
+КРЕМЕНОВИЋ МИЛЕНКО
+КРЕМЕНОВИЋ МИЛОШ
+КРЕМЕНОВИЋ МИРКО
+КРЕМЕНОВИЋ НЕДЕЉКО
+КРЕМЕНОВИЋ ПЕТАР
+КРЕМЕНОВИЋ РАДОСЛАВ
+КРЕМЕНОВИЋ СИНИША
+КРЕМЕНОВИЋ СНЕЖАНА
+КРЕМЕНОВИЋ СТАНКО
+КРЕМЕНОВИЋ СТЕВО
+КРЕМЕНОВИЋ ВОЈИН
+КРЕМЕР ЕЛИЗАБЕТА
+КРЕМЕР ФРАЊА
+КРЕМЕР ЈОВАН
+КРЕМЕР КАТИЦА
+КРЕМЕР МАТИЈА
+КРЕМЕР ПАЈА
+КРЕМИЋ ДРАГАН
+КРЕМИЋ ЉУБОМИР
+КРЕМПАСКИ-АНДРИЋ ХИЛДА
+КРЕМПАСКИ ЕЛИЗАБЕТА
+КРЕСАНКО ЛАСЛО
+КРЕСАНКО МАРГИТА
+КРЕСАНКО МАРИЈА
+КРЕСИЋ ЈАЊА
+КРЕСИЋ МИЛЕНА
+КРЕСИЋ МИТАР
+КРЕСИЋ СЛАВКО
+КРЕСО ШАЋИР
+КРЕСОЈА ДУШКО
+КРЕСОЈА МАРИНКО
+КРЕСОЈЕВИЋ ДАМЈАН
+КРЕСОЈЕВИЋ ЈОВАНКА
+КРЕСОЈЕВИЋ ЈОВАН
+КРЕСОЈЕВИЋ СРБОСЛАВ
+КРЕСОЈЕВИЋ ВЕСНА
+КРЕСОЈЕВИЋ ЗДРАВКО
+КРЕСОВИЋ СЛАВКО
+КРЕСОВИЋ СЛОБОДАН
+КРЕСОВИЋ ВАСО
+КРЕСТА АРПАД
+КРЕСТА АТИЛА
+КРЕСТИЋ ДАФИНА
+КРЕСТИЋ НАДА
+КРЕСТИЋ СТЕВАН
+КРЕСТИЋ ВЛАДИМИР
+КРЕВЕШИЋ КАРЛО
+КРЕВЕШИЋ КАТА
+КРГА ГАВРА
+КРГА МАНЕ
+КРГА МАРА
+КРГА МИЛАН
+КРГА МИЛОШ
+КРГА ВАСА
+КРГИН МЛАДЕН
+КРГИН НАДА
+КРГИН НЕДЕЉКО
+КРГОВИЋ ДУШАНКА
+КРГОВИЋ ДУШАНКА
+КРГОВИЋ ЈОВО
+КРГОВИЋ МАЛИША
+КРГОВИЋ МАРИЈА
+КРГОВИЋ МИЋО
+КРГОВИЋ МИЛАН
+КРГОВИЋ МИЛОРАД ДР ЛЕКАР
+КРГОВИЋ МОМЧИЛО
+КРГОВИЋ РАТКО
+КРГОВИЋ СМИЉА
+КРГОВИЋ СНЕЖАНА
+КРГОВИЋ СВЕТОЗАР
+КРГОВИЋ ВЛАДА
+КРГОВИЋ ВУКОМАН ДИПЛ ИНГ
+КРГОВИЋ ЗОРИЦА
+КРИШ ПЕТАР
+КРИШАН БОСИЉКА
+КРИШАН ДРАГОЈЛО
+КРИШАН МАТИЈА
+КРИШАН МИЛОШ
+КРИШАН ВУКИЦА
+КРИШАН ЗДРАВКО
+КРИШАНОВ ЈОВАН
+КРИШАНОВИЋ ДРАГОМИР
+КРИШТО ЈУЛИЈАНА
+КРИЖ ЈАНКО
+КРИЖ ПАВЕЛ
+КРИЖАК АНА
+КРИЖАН ШАНДОР
+КРИЖАН ЂУРА
+КРИЖАН АНИЦА
+КРИЖАН ЕДУАРД
+КРИЖАН ЈАНОШ
+КРИЖАН ЈУЛА
+КРИЖАН ЛАСЛО
+КРИЖАН МАРИЈА
+КРИЖАН МАТИЈА
+КРИЖАН МИКЛОШ
+КРИЖАН РОЖА
+КРИЖАНИЋ ЈОВАН
+КРИЖАНИЋ ЈОВАН
+КРИЖАНИЋ МИЛЕНКО
+КРИЖАНИЋ СЛАЂАНА
+КРИЖАНИЋ ВЛАДИМИР
+КРИЖАНОВИЋ ЖУЖАНА
+КРИЖНАР БОЈАН
+КРИЖНАР МАРА
+КРИЖНАР МИРКО ДР ДИПЛ ИНГ
+КРИЖНАР ТОМА ДИПЛ ИНГ
+КРИМШАМХАЛОВ ЗАИДА
+КРИНКОВСКИ АЛЕКСАНДАР
+КРИНКОВСКИ АЛЕКСАНДАР
+КРИНКОВСКИ ВЕРОНИКА
+КРИСТИЋ МАРИЈА
+КРИСТИЋ НАДА
+КРИСТИАН ЈОЖЕФ
+КРИСТОВИЋ МИРОСЛАВА
+КРИСТОВИЋ РУДОЛФ
+КРИВАК АНА
+КРИВАК МИРОСЛАВ
+КРИВИЋ ДРАГАНА
+КРИВИЋ ЉИЉАНА
+КРИВИЋ НИКОЛА
+КРИВОШИЈА ЖИВКО
+КРИВОШИЈА ФРАЊО
+КРИВОШИЈА МИЛЕ
+КРИВОКАПИЋ АМАЛИЈА
+КРИВОКАПИЋ ДАНИЦА
+КРИВОКАПИЋ МАРТИН
+КРИВОКАПИЋ НЕДЕЉКО
+КРИВОКАПИЋ НЕВЕНКА ДИПЛ ЕЦЦ
+КРИВОКАПИЋ РАДОСЛАВ
+КРИВОКАПИЋ СЛОБОДАН
+КРИВОКАПИЋ СЛОБОДАН
+КРИВОКАПИЋ СТЕВАН
+КРИВОКАПИЋ ВЛАДИМИР
+КРИВОКУЋА ЂОРЂЕ
+КРИВОКУЋА ДЕЈАН ДИПЛ ИНГ
+КРИВОКУЋА ДИМИТРИЈЕ
+КРИВОКУЋА ДРАГИЦА
+КРИВОКУЋА ДРАГОМИР
+КРИВОКУЋА ДРАГОМИР
+КРИВОКУЋА ДУШАН
+КРИВОКУЋА ЈЕЛИСАВЕТА
+КРИВОКУЋА ЈОВАН
+КРИВОКУЋА ЈУЛИЈАНА
+КРИВОКУЋА МИЛАН
+КРИВОКУЋА МИЛИЦА
+КРИВОКУЋА МИЛКА
+КРИВОКУЋА МИОДРАГ
+КРИВОКУЋА ПЕТАР
+КРИВОКУЋА РАДОСЛАВ
+КРИВОКУЋА РАДОВАН
+КРИЗБАИ ЗОЛТАН
+КРКЕЛИЋ СЛОБОДАН
+КРКЕЉЕШ БОРИС
+КРКЕЉИЋ МОМЧИЛО
+КРКЕЉИЋ СВЕТИСЛАВ
+КРКИЋ МИЛОВАН
+КРКЛЕЦ ЈОСИП
+КРКЛЕЦ ВЕРА
+КРКЛЕЦ ВЛАДИМИР
+КРКЉЕШ ЂУРО
+КРКЉЕШ БОРА
+КРКЉЕШ МИЛЕ ДР
+КРКЉИЋ ЂУРО
+КРКЉИЋ ДРАГАН
+КРКЉИЋ МИЛАН
+КРКЉИЋ МИЛОВАН
+КРКЉИЋ НИКОЛА
+КРКЉИЋ ОСТОЈА
+КРКЉУШ БОШКО
+КРКЉУШ БРАНКО
+КРКЉУШ ДРАГАНА
+КРКЉУШ ДУШАНКА
+КРКЉУШ ДУШАН
+КРКЉУШ ЈЕЛЕНА
+КРКЉУШ ЈЕЛИЦА
+КРКЉУШ КРИСТИНА
+КРКЉУШ ЉУБИНКА
+КРКЉУШ ЉУБОМИРКА ДР
+КРКЉУШ МИЛАН
+КРКЉУШ МИЛАН
+КРКЉУШ МИЛИЦА
+КРКЉУШ МИЛОРАД
+КРКЉУШ МИРОСЛАВ
+КРКЉУШ МОМЧИЛО
+КРКЉУШ ПЕТАР
+КРКЉУШ ПЕТАР
+КРКЉУШ РАДЕ
+КРКЉУШ СЛАВКО
+КРКЉУШ СЛОБОДАН
+КРКЉУШ СТЕВАН
+КРКЉУШ ВЕРИЦА
+КРКОБАБИЋ ИЛИЈА
+КРКОБАБИЋ ВЕРИЦА
+КРКОВИЋ-ЈУПЕК ДУШАНКА
+КРМАР ДУШАН
+КРМАР ЈАСНА
+КРМАР МАРКО
+КРМАР ЗОРА
+КРМПОТ ГОЈКО
+КРМПОТ ЛАЗАР
+КРМПОТИЋ АНЂЕЛКА
+КРМПОТИЋ ВОЈИСЛАВ ДИПЛ ПРАВНИК
+КРМПОТИЋ ВУКИЦА
+КРНЧЕВИЋ АНЂЕЛКА
+КРНАЈАЦ ЖИВАН
+КРНАЈАЦ ИВАН
+КРНАЈАЦ МОМЧИЛО
+КРНАЈАЦ НЕВЕНКА
+КРНАЈАЦ ПЕТАР
+КРНАЈАЦ РАДОВАН
+КРНАЈАЦ ЗЛАТИЦА
+КРНАЈСКИ МИЛОРАД
+КРНДИЈА БОГОЉУБ
+КРНДИЈА БРАНКО
+КРНДИЈА МАРКО
+КРНДИЈА МИЛОВАН
+КРНДИЈА НЕНАД
+КРНДИЈА ПЕТАР
+КРНДИЈА СТАНА
+КРНДИЈА СТЕВО
+КРНДИЈА ВОЈИН
+КРНЕТА БОГДАН
+КРНЕТА ЈЕЛКА
+КРНЕТА МИЛОРАД
+КРНЕТА МИЛОСАВА
+КРНЕТА НИКОЛА
+КРНЕТА РАДЕ
+КРНЕТА СЛОБОДАН
+КРНЕТА СТЕВАН
+КРНЕТИЋ ГОЈКО
+КРНЕТИЋ ЈОВАН
+КРНИЋ АНА
+КРНИЋ ПЕРА
+КРНИЋ РАДОЈКА
+КРНИЋ СТЕВАН
+КРНИЋ СТИПО
+КРНИЈА МАРИНКО
+КРЊАИЋ ДРАГО
+КРЊАИЋ ГОРАН
+КРЊАИЋ ЈЕЛИСАВЕТА
+КРЊАЈИЋ ДУШАНКА
+КРЊАЈИЋ ИЛИЈА
+КРЊАЈИЋ ИВИЦА
+КРЊАЈИЋ ЈОВАН
+КРЊАЈИЋ МИЛОШ
+КРЊАЈИЋ МИРОСЛАВ
+КРЊАЈИЋ РАДОМИР
+КРЊЕШЕВАЦ САВА
+КРЊЕТА ЛЕПОСАВА
+КРЊЕТА НОВАК
+КРЊЕТИН ЖИВКО
+КРЊЕТИН БРАНКО
+КРЊЕТИН ДРАГАН
+КРЊЕТИН ЈОВАН
+КРЊЕТИН КАТИЦА
+КРЊЕТИН МАЈА
+КРЊЕТИН МИКА
+КРЊЕТИН САВА
+КРЊИЋ ИВАН
+КРЊУЛАЦ ДУШАН
+КРНОЈЕЛАЦ ДАНИЛО
+КРОШЛАК СТЕВАН
+КРОМБХОЛЦ ЕМИЛ
+КРОМХОЛЦ КАРЛО
+КРОМПИЋ ЉИЉАНА ПРОФЕСОР
+КРОМПИЋ ЉУБИЦА
+КРОМПИЋ МИЛАН
+КРОМПИЋ СТАНКО
+КРОНАВЕТЕР АЛФРЕД
+КРОНИЋ ЛАЗАР
+КРОНИЋ МИЛЕНКО
+КРОЊА ИВАН
+КРОЊА ИВАН
+КРОЊА МИЛАНКА
+КРОПШ ХИЛДА
+КРОПАЧЕК ИВАН
+КРОПФ АНЂЕЛКА
+КРОПФ ФРАЊА
+КРПАН ЖЕЉКО
+КРПАН ИВАН
+КРПАН ЉИЉАНА
+КРПАН МИРКО
+КРПАН СТЕВАН
+КРСМАНОВИЋ БОЖИДАРКА
+КРСМАНОВИЋ БОГДАНКА
+КРСМАНОВИЋ БРАНКО
+КРСМАНОВИЋ ЦВИЈАН
+КРСМАНОВИЋ ЈОВАН
+КРСМАНОВИЋ КРСМАН ДИПЛ ИНГ
+КРСМАНОВИЋ ЛАЗАР
+КРСМАНОВИЋ ЉИЉАНА
+КРСМАНОВИЋ МИЛОШ
+КРСМАНОВИЋ МОМЧИЛО
+КРСМАНОВИЋ ОБРЕН
+КРСМАНОВИЋ САША
+КРСМАНОВИЋ СЛАВОЈКА
+КРСМАНОВИЋ СРЕТЕН
+КРСМАНОВИЋ ВАСА
+КРСНИК ЈОН
+КРСНИК МАРИЈА
+КРСТАЈИЋ МИЛОЈИЦА
+КРСТАЈИЋ ПЕРКО
+КРСТАНОВИЋ ЦВИЈО
+КРСТАНОВИЋ ДРАГОМИР
+КРСТАНОВИЋ ФРАЊА
+КРСТАНОВИЋ ИВАНКА
+КРСТАНОВИЋ КОСТА
+КРСТАНОВИЋ МОМЧИЛО
+КРСТАНОВИЋ ПЕТАР
+КРСТЕКАНИЋ ЧЕДОМИР
+КРСТЕКАНИЋ АНА
+КРСТЕКАНИЋ КРИСТИНА
+КРСТЕКАНИЋ РАТОМИР
+КРСТЕВСКИ ДРАГОСЛАВ
+КРСТЕВСКИ СТАНИСЛАВ
+КРСТИЋ-ШТИМАЦ СПАСЕНИЈА ДР
+КРСТИЋ ЖАРКО
+КРСТИЋ ЖИВАН
+КРСТИЋ ЖИВКО
+КРСТИЋ ЖИВКО
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ-ЂУРЧЈАНСКИ РУЖЕНКА
+КРСТИЋ АЛЕКСАНДАР ДР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АНДРИЈА
+КРСТИЋ АНИЦА
+КРСТИЋ БОШКО
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОГДАН
+КРСТИЋ БОРИВОЈ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНКА
+КРСТИЋ БРАНКА
+КРСТИЋ БРАНКО
+КРСТИЋ ДАНИЦА
+КРСТИЋ ДЕСАНКА
+КРСТИЋ ДИМИТРИЈЕ
+КРСТИЋ ДОБРИЛА
+КРСТИЋ ДОБРИЛА
+КРСТИЋ ДОБРИНКА
+КРСТИЋ ДОБРОСЛАВ
+КРСТИЋ ДРАГАН
+КРСТИЋ ДРАГИЊА
+КРСТИЋ ДРАГОЉУБ
+КРСТИЋ ДРАГОСЛАВ
+КРСТИЋ ДРАГУТИН
+КРСТИЋ ДУШАН ДИПЛ ИНГ
+КРСТИЋ ДУШАН
+КРСТИЋ ДУШКО
+КРСТИЋ ЕТЕЛКА
+КРСТИЋ ЕВИЦА
+КРСТИЋ ГАВРА
+КРСТИЋ-ГУНЕК МАРИЈА
+КРСТИЋ ИЛИЈА
+КРСТИЋ ИВАН ДР
+КРСТИЋ ЈЕЛЕНА
+КРСТИЋ ЈЕЛЕНА
+КРСТИЋ ЈОРДАН
+КРСТИЋ ЈОВАН
+КРСТИЋ ЈОВАН
+КРСТИЋ ЈОВАН
+КРСТИЋ КАМЕНКО
+КРСТИЋ КАМЕНКО
+КРСТИЋ КАТИЦА
+КРСТИЋ КАТИЦА
+КРСТИЋ КАТИЦА
+КРСТИЋ КОРНЕЛИЈА
+КРСТИЋ ЛАЗАР
+КРСТИЋ ЛАЗАР
+КРСТИЋ ЉИЉАНА
+КРСТИЋ ЉИЉАНА
+КРСТИЋ ЉУБИША
+КРСТИЋ ЉУБИША
+КРСТИЋ ЉУБИЦА
+КРСТИЋ ЉУБИНКА
+КРСТИЋ ЉУБИСАВ
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРКО
+КРСТИЋ МИЛАДИН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛЕНКО
+КРСТИЋ МИЛЕНКО
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛОШ
+КРСТИЋ МИЛОШ
+КРСТИЋ МИЛОЈКО
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИНЧЕ ДИПЛ ИНГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИРКО
+КРСТИЋ МИРКО
+КРСТИЋ МИРОЉУБ
+КРСТИЋ МИРОЉУБ
+КРСТИЋ МИРОСЛАВА
+КРСТИЋ МИРОСЛАВА
+КРСТИЋ МИРОСЛАВ
+КРСТИЋ МИТАР
+КРСТИЋ НАДА
+КРСТИЋ НЕБОЈША
+КРСТИЋ НЕНАД
+КРСТИЋ НЕНАД
+КРСТИЋ НИКОЛА
+КРСТИЋ НИКОЛА
+КРСТИЋ НИКОЛА
+КРСТИЋ НОВАК
+КРСТИЋ НОВАК
+КРСТИЋ ПЕТАР ДИПЛ ИНГ
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТРУН
+КРСТИЋ РАДИСАВ
+КРСТИЋ РАДИВОЈ
+КРСТИЋ РАДИВОЈ
+КРСТИЋ РАДОЈЕ
+КРСТИЋ РАДОМИР
+КРСТИЋ РАДОМИР
+КРСТИЋ РАДОСАВ
+КРСТИЋ РАДОСЛАВ
+КРСТИЋ РАДОВАН
+КРСТИЋ РАТКО
+КРСТИЋ РАТКО
+КРСТИЋ САВА
+КРСТИЋ САВЕТА
+КРСТИЋ СИНИША
+КРСТИЋ СЛАВИЦА
+КРСТИЋ СЛОБОДАН
+КРСТИЋ СРЂАН
+КРСТИЋ СРЕТЕН
+КРСТИЋ СТАНКО
+КРСТИЋ СТАНОЈЕ
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТОЈАНКА
+КРСТИЋ СВЕТИСЛАВ
+КРСТИЋ СВЕТИСЛАВ
+КРСТИЋ СВЕТЛАНА
+КРСТИЋ СВЕТЛАНА
+КРСТИЋ СВЕТОЗАР
+КРСТИЋ ТИНКА
+КРСТИЋ УГЉЕША ДР
+КРСТИЋ ВАСА ДР ЛЕКАР
+КРСТИЋ ВАСА
+КРСТИЋ ВАСИЛИЈЕ ДИПЛ ИНГ
+КРСТИЋ ВАСИЛИЈЕ
+КРСТИЋ ВЕЛИМИР
+КРСТИЋ ВЕЉКО
+КРСТИЋ ВЕРА
+КРСТИЋ ВЕРА
+КРСТИЋ ВЕСЕЛИН
+КРСТИЋ ВЛАДА
+КРСТИЋ ВОЈИН
+КРСТИЋ-ВРЖИНА БОСАНКА
+КРСТИЋ ВУКИЦА
+КРСТИЋ ЗОРАН
+КРСТИЋ ЗОРАН
+КРСТИН ЖИВКА
+КРСТИН БРАНКО
+КРСТИН ИВАН
+КРСТИН ЈЕЛКА
+КРСТИН КОСТА
+КРСТИН ЛАЗАР
+КРСТИН МЛАДЕН
+КРСТИН НАТАША
+КРСТИН ПЕТАР
+КРСТИН СЛАВКО
+КРСТИН СТЕВАН
+КРСТИН СВЕТОЗАР
+КРСТИН ВЕРА
+КРСТИН ВЛАДАН
+КРСТИН ЗОРАН
+КРСТИНИЋ ДРАГАН
+КРСТОНОШИЋ ЖИВАН
+КРСТОНОШИЋ БОСИЉКА
+КРСТОНОШИЋ ЈЕЛЕНА
+КРСТОНОШИЋ ЈОВАН
+КРСТОНОШИЋ ЉУБИЦА
+КРСТОНОШИЋ МИЛАНКА
+КРСТОНОШИЋ МИЛЕНКО
+КРСТОНОШИЋ МИЛЕНКО
+КРСТОНОШИЋ МИРОСЛАВ
+КРСТОНОШИЋ НАДА
+КРСТОНОШИЋ НЕСТОР
+КРСТОНОШИЋ ПЕТАР
+КРСТОНОШИЋ ПЕТАР
+КРСТОНОШИЋ СТЕВАН
+КРСТОНОШИЋ ВЕРА
+КРСТОНОШИЋ ВИДА
+КРСТОНОШИЋ ЗЛАТА ДР
+КРСТОНОШИЋ ЗОРА
+КРСТОВСКИ РАДОЈКА
+КРТЕНИЋ БРАНКО
+КРТЕНИЋ ДОБРИЛА
+КРТЕНИЋ ПАВЛЕ
+КРТИНИЋ БОРА
+КРТИНИЋ ДАНЕ
+КРТИНИЋ ДАНЕ
+КРТИНИЋ МИРЈАНА
+КРТИНИЋ МИРКО
+КРТИНИЋ МИРОСЛАВ
+КРТИНИЋ НАДА
+КРТИНИЋ САВА
+КРТИНИЋ СМИЉАНА
+КРТИНИЋ ВЛАДИМИР
+КРУЧИЧАН МИЛАН
+КРУШКА ЂОРЂЕ
+КРУШКА СТЕВАН
+КРУЖЕВИЋ ДЕЈАН
+КРУЖЕВИЋ НЕНАД
+КРУЖЕВИЋ ВЛАДИМИР
+КРУЖЕВИЋ ЗДРАВКО
+КРУЖЕВИЋ ЗОРАН
+КРУЖИЋ АНА
+КРУЉ БРАНИСЛАВА
+КРУЉ МИЛАН
+КРУНИЋ ЖИВАН
+КРУНИЋ ЖИВОРАД
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ-БЕЛИЋ МИЛАНА
+КРУНИЋ БРАНКО
+КРУНИЋ БРАНКО
+КРУНИЋ БРАНКО
+КРУНИЋ ДАРА
+КРУНИЋ ДРАГОЉУБ
+КРУНИЋ ДРАГОМИР
+КРУНИЋ ГРАДИМИР
+КРУНИЋ ИЛИЈА
+КРУНИЋ ИЛОНКА
+КРУНИЋ ЈЕЛЕНА
+КРУНИЋ ЉУБИША
+КРУНИЋ ЉУБИЦА
+КРУНИЋ ЉУБОМИР
+КРУНИЋ МИЋО
+КРУНИЋ МИКА
+КРУНИЋ МИЛАНКА
+КРУНИЋ МИЛАН
+КРУНИЋ МИЛОШ
+КРУНИЋ НОВАК
+КРУНИЋ ПАВЛЕ
+КРУНИЋ ПЕРИША
+КРУНИЋ ПЛЕМЕНКА
+КРУНИЋ РАДОЈКА
+КРУНИЋ СЛОБОДАН
+КРУНИЋ СОФИЈА
+КРУНИЋ ТОШИЦА
+КРУНИЋ УРОШ
+КРУНИЋ ВЕЛИЧКО
+КРУНИЋ ВЕРИЦА
+КРУНИЋ ЗДРАВКО
+КРУПЕЖЕВИЋ ДАРИНКА
+КРУПЕЖЕВИЋ ПРВОСЛАВ
+КРУПЉАНИН СТАНА
+КРУПЉАНИН ВЕСЕЛА
+КРУТА БОЖАНА
+КРУТА ДРАГАН
+КРВАВАЦ БИСЕРКА
+КРВАВИЦА ДРАЖЕН
+КРВАВИЦА ТОМИСЛАВ
+КРВОПИЋ ОЛГА
+КРЗМАНОВИЋ МАРГАРЕТА
+КРЗНАРИЋ МИЛЕ
+КРЗНАРИЋ ВАЛЕНТИНА
+КУЧ СЛОБОДАН
+КУЧЕРА АЛЕКСАНДАР
+КУЧЕРА СТЕВАН
+КУЧИЋ НИКОЛА
+КУЧМАШ ИРЕНА
+КУЧМАШ НАТАША
+КУЧМАШ НИКОЛА
+КУЧНЕР ЛАДИСЛАВ
+КУШАКОВИЋ СМИЉА
+КУШЛИЋ МИЛАН
+КУШЉАН СЛАВКО
+КУШЉИЋ БОРИСЛАВ
+КУШЉИЋ БОРИСЛАВ
+КУШЉИЋ БОРИС
+КУЋ СТАНКА
+КУЖАТКО АНИЦА
+КУЖАТКО ЕМИЛ
+КУЖАТКО МАРТА
+КУЖАТКО ВЛАДИМИР
+КУЖЕЛКА СИМА
+КУЖЕТИН БОЖА
+КУЖЕТИН ЈЕЛИСАВЕТА
+КУЖЕТИН МАРА
+КУЖЕТИН МИЛАН
+КУЖЕТИН НОВАК
+КУЖЕВСКИ МИЛИВОЈЕ
+КУЖИЋ ДРАГУТИН
+КУЖИЋ МЛАДЕН
+КУЖИЋ МЛАДЕН
+КУЖИЋ ПЕТАР
+КУБАЊИ АНА
+КУБАНОВИ ЗЛАТКО
+КУБАТ МИЛАН ДИПЛ ИНГ
+КУБАТ УРОШ
+КУБАТОВИЋ АНА
+КУБАТОВИЋ ИЛИЈА
+КУБЕЧКА МИЛАН
+КУБЕТ МИЛАН
+КУБИЧЕЛА ПЕТАР
+КУБИЧКО ФЕРЕНЦ
+КУБИЦА СТЈЕПАН
+КУБИЦА ВЕРА
+КУБИК ФРАНЦИШКА
+КУБИЊЕЦ ЈОСИП
+КУБУРИЋ МИЋО
+КУБУРИЋ НОВКА
+КУБУРИЋ СВЕТОЗАР
+КУЦУЛОВИЋ ДАНИЦА
+КУЦУЛОВИЋ ВОЈИСЛАВ
+КУЦУРАЦ ДИМИТРИЈЕ
+КУЦУРАЦ МАРА
+КУЦУРАЦ НАДЕЖДА
+КУЦУРАЦ СТЕВАН
+КУЦУРСКИ ЂУРИЦА
+КУЦУРСКИ ДРАГОМИР
+КУЦУРСКИ РАДИСЛАВ
+КУДИЋ МИЛОСАВА
+КУДИЋ СТЕВА
+КУДРА ДАНИЈЕЛА
+КУДРА ОЛГА
+КУДРА-ЗИКОВИЋ ЉУБИЦА
+КУДРИЋ ДЕСИМИР
+КУГА ЈОВАН
+КУГИЋ ИЛИЈА
+КУГИЋ РАДМИЛА
+КУГИЋ САВКА
+КУГЛИ ИМРЕ
+КУГЛИ ЈОСИП
+КУГЛИ МИХАЈЛО
+КУГЛИ МИХАЉ
+КУГЛИ ПАВАО
+КУГЛИ РОЖИКА
+КУГЛИ СТЕВАН
+КУХАЈДА ШАНДОР
+КУХАЈДА КСЕНИЈА МР
+КУХАЈДА ВЛАДИМИР МР
+КУХАЈДА ЗЛАТА
+КУХАР ЈЕЛЕНА
+КУХАР ЈОВАН
+КУХАР СЛАВИЦА
+КУЈАЧИЋ ДРАГАН
+КУЈОВИЋ НЕДА
+КУЈОВИЋ СОФИЈА
+КУЈУНЏИЋ ЛУЈЗА
+КУЈУНЏИЋ МИОДРАГ
+КУЈУНЏИЋ ТОМАНИЈА
+КУЈУНЏИЋ ВЕРА
+КУКАВИЦА ЈОРДАН
+КУКАВИЦА МИРКО
+КУКАВИЦА РУЖИЦА
+КУКАВСКИ ПАВЛЕ
+КУКИЋ ЖАРКО
+КУКИЋ БРАНКА
+КУКИЋ ДРАГАН
+КУКИЋ ГОЈКО
+КУКИЋ ГОРДАНА
+КУКИЋ ЈЕЛИЦА
+КУКИЋ ЈЕЛКА
+КУКИЋ МИЛАН
+КУКИЋ МИЛОЈКА
+КУКИЋ МИРЈАНА
+КУКИЋ МИРКО
+КУКИЋ НЕБОЈША
+КУКИЋ НИКОЛА
+КУКИЋ ПЕТАР
+КУКИЋ СЛОБОДАН
+КУКИЋ СТЕВАН
+КУКИЋ СВЕТОЗАР
+КУКИЋ ВЕРА
+КУКИЋ ВЛАДИМИР
+КУКИЋ ЗОРАН
+КУКИЋ ЗОРАН
+КУКИЋ ЗВОНИМИР
+КУКИН ЖИВАН
+КУКИН АЛЕКСАНДАР
+КУКИН ДЕЈАН
+КУКИН СМИЉКА
+КУКЛА ИВАН
+КУКОЧ ВИНКО
+КУКОБАТ РАДОВАН
+КУКОЉ ДАНЕ
+КУКОЉ ДРАГАН
+КУКОЉ ДУШКО
+КУКОЉ МИЛКА
+КУКОЉ МИРЈАНА
+КУКОЉ РАДМИЛА
+КУКОЉ РАЈКО
+КУКОВСКИ ЈОВАН
+КУКРИКА БОШКО
+КУКУЧКА ЈАН
+КУКУЧКА МИХАЈЛО
+КУКУЉ ДОБРИЛА
+КУКУРОВ ЈОСИФ
+КУКУРУЗОВИЋ ЈЕЛЕНА
+КУКУРУЗОВИЋ ВЛАДИМИР
+КУЛЧАР ИШТВАН
+КУЛАЧАНИН АНИЦА
+КУЛАЧАНИН БРАНИСЛАВ
+КУЛАЧАНИН МИЛЕНКО
+КУЛАЧАНИН НАДА
+КУЛАЧИЋ ЗВОНИМИР
+КУЛАЧИН ЂУРО
+КУЛАЧИН БУДИМКА
+КУЛАЧИН ДУШАН
+КУЛАЧИН СЛАВКО
+КУЛАЧКИ МИТАР
+КУЛАШ МАРКО
+КУЛАШ СЛОБОДАН
+КУЛАШЕВИЋ ЗЛАТА
+КУЛАШИНОВИЋ АНЂЕЛКА
+КУЛАШИНОВИЋ ДАНИЦА
+КУЛАШИНОВИЋ ДУШИЦА
+КУЛАШИНОВИЋ МИЛАН
+КУЛАШИНОВИЋ МИЛИВОЈ
+КУЛАУЗОВ АРКАДИЈЕ
+КУЛАУЗОВ ЈОВАНКА
+КУЛАУЗОВ МИЛЕНКО ДР
+КУЛЕШЕВИЋ ОЛИВЕРА
+КУЛЕШЕВИЋ ПЕТАР
+КУЛЕШКО ДРАГОСЛАВА
+КУЛЕНОВИЋ АХМЕД
+КУЛЕНОВИЋ ЗОРАН
+КУЛЕВСКИ КАТИЦА
+КУЛЕВСКИ РОЖА
+КУЛЕВСКИ РОЖА
+КУЛИШИЋ НЕДА
+КУЛИШИЋ ОЛГА
+КУЛИШИЋ СЛАВОЉУБ
+КУЛИЋ ДАРИНКА
+КУЛИЋ ЈОВАН
+КУЛИЋ ЈОВО
+КУЛИЋ ЛАЗАР
+КУЛИЋ НЕБОЈША
+КУЛИЋ РАДИВОЈ
+КУЛИЋ ВЛАДИМИР
+КУЛИЏАН ДРАГУТИН
+КУЛИЏАН НЕМАЊА
+КУЛИЏАН ВАСО ДР
+КУЉАЧА ИЛИЈА
+КУЉАЧА ПЕТАР
+КУЉАК МАРИЈА
+КУЉАНЧИЋ ДУШАН
+КУЉАНЧИЋ ЈУЛКА
+КУЉАНЧИЋ МИЛЕНА
+КУЉАНЧИЋ НИКОЛА
+КУЉАНЧИЋ САВО
+КУЉАНЧИЋ ВЕРА
+КУЉАНИН ЈАКОВ
+КУЉАНКИЋ МУРАДИФ
+КУЉАНСКИ ОЛГА
+КУЉАНСКИ СЛАВКО
+КУЉИШ СЛОБОДАН
+КУЉИЋ БИСЕРКА
+КУЉИЋ ДРАГОСЛАВ
+КУЉИЋ ЛАЗАР
+КУЉИЋ ЉУБОМИР
+КУЉИЋ МИРЈАНА
+КУЉИЋ НЕДЕЉКО
+КУЉИЋ НИКОЛА
+КУЉИЋ ПЕТАР
+КУЉИЋ САВО
+КУЉИЋ-СМУЂА МАГДАЛЕНА
+КУЉИЋ ЗДРАВКО
+КУЛКА ГРЕТА
+КУЛПИНЧЕВИЋ ЂОРЂЕ
+КУЛПИНЧЕВИЋ ЈОВО
+КУЛПИНСКИ ДУШАН
+КУЛПИНСКИ МИРЈАНА
+КУЛПИНСКИ СТЕВАН
+КУЛПИНСКИ ВУЈАДИН
+КУМАНОВ ЖИВАН
+КУМАНОВ БОЖИДАР
+КУМАНОВИЋ МИОДРАГ
+КУМАЗЕЦ ЛАЗА
+КУМОВИЋ БРАНКА
+КУМОВИЋ МИЛИЦА
+КУМОВИЋ САВО
+КУН ЂУРА
+КУН АЛЕКСАНДАР
+КУН БЕЛА
+КУН ДАНИЦА
+КУН ЕДИТА
+КУН ЕРНЕ
+КУН ЛАСЛО
+КУН СТЕВАН
+КУНЧАКОВА МАРИЈА
+КУНАРАЦ АНИЕЛА
+КУНДАЧИНА ЈОВО
+КУНДАЧИНА РАДОВАН
+КУНДАЧИНА САВО
+КУНИЋ ЂОРЂЕ
+КУНИЋ ГОРДАНА
+КУНИЋ ВЕСЕЛИНКА
+КУНОСИЋ НЕЏАД
+КУНОСИЋ ОСМАН
+КУНОВАЦ ЉУБО
+КУНСТ ИРЕН
+КУНСТМАН АНАСТАСИЈА
+КУПЕК ЖЕЉКА
+КУПЕК ЗОРИЦА
+КУПИРОВИЋ СОФИЈА
+КУПРЕШАК ДАНИЛО
+КУПРЕШАК ВИДА
+КУПРЕШАНИН БИЉАНА
+КУПРЕШАНИН ИЛИЈА
+КУПРЕШАНИН МИЛЕ ДИПЛ ИНГ
+КУПРЕШКИ ЈОЦА
+КУПРЕШКИ ВЕРА
+КУПУСАРЕВИЋ БРАНИСЛАВ
+КУПУСИНАЦ БРАНИСЛАВ
+КУПУСИНАЦ ВЕЉКО
+КУРЧУБИЋ ДРАГИЋ
+КУРЧУБИЋ МЕЛАНИЈА
+КУРШУМОВИЋ АВДУЛАХ
+КУРАЈИЋ ЈОВАН
+КУРАН ИВАН
+КУРАЊИ ЈАН
+КУРАЊИ ЈАН
+КУРБАЛИЈА ЂОРЂЕ
+КУРБАЛИЈА ДАНИЦА
+КУРБАЛИЈА ЈОВАН
+КУРБАЛИЈА ЛАЗАР
+КУРБАЛИЈА МИРЈАНА
+КУРБАТФИНСКИ ФЕЂА ДИПЛ ИНГ
+КУРБАТФИНСКИ ИВАН
+КУРБАТФИНСКИ СЛАВКО
+КУРБАТФИНСКИ ВЛАДИМИР
+КУРБАТВИНСКИ ДИНА
+КУРБАТВИНСКИ ИВАН
+КУРБАТВИНСКИ СТЕВАН
+КУРБАТВИНСКИ ЗОРА
+КУРЦИНАК ЕМИЛ
+КУРЦИНАК ИМРЕ
+КУРЦИНАК ЈОСИП
+КУРЦИНАК ЛАЈОШ
+КУРЦИНАК ПАВЛЕ
+КУРЦИНАК СТЕВАН
+КУРЦИНАК ВЕСНА
+КУРДИ АМАЛИЈА
+КУРДОВСКИ МИТАР
+КУРДУЛИЋ МИЛОШ
+КУРЕШЕВИЋ РАЦКО
+КУРЕШЕВИЋ САВО
+КУРЕКАШ МИТАР
+КУРЕПА ВАСА
+КУРИШ ШТЕФАН
+КУРИЏА БОГДАН
+КУРИЏА ДУШАН
+КУРИЈ ТОМИСЛАВ
+КУРИЈА ВЕЉКО
+КУРИКША АНТОНИНА
+КУРИЛА ЈАНОШ
+КУРИЛИЋ ЈОВО
+КУРИЛИЋ МИЛАН
+КУРИЛИЋ МИЛОШ
+КУРИЛИЋ МИРОСЛАВ
+КУРИН ЂОРЂЕ
+КУРИН ЈОСИП
+КУРЈАЧКИ ЖИВКО
+КУРЈАЧКИ ЂОРЂЕ
+КУРЈАЧКИ ЂУРЂИНА
+КУРЈАЧКИ АНКИЦА
+КУРЈАЧКИ ДАНИЦА
+КУРЈАЧКИ ЈОВАН
+КУРЈАЧКИ МИХАЈЛО
+КУРЈАЧКИ МИЛАН
+КУРЈАЧКИ МИЛЕВА
+КУРЈАЧКИ МИЛЕВА
+КУРЈАЧКИ МИЛИЦА
+КУРЈАЧКИ МИЛИВОЈ
+КУРЈАЧКИ МИОДРАГ
+КУРЈАЧКИ МИРЈАНА
+КУРЈАЧКИ МИРЈАНА
+КУРЈАЧКИ СРЕДОЈЕ
+КУРЈАЧКИ СТАНКО
+КУРЈАЧКИ СТЕВАН
+КУРЈАЧКИ СВЕТОЗАР
+КУРЈАЧКИ ЗОРА
+КУРЈАКОВ ЂОРЂЕ
+КУРЈАКОВ ДАНИЛО
+КУРЈАКОВ ДРАГАН
+КУРЈАКОВ МИЛАН
+КУРЈАКОВ МИЛИВОЈ
+КУРЈАКОВ РОКСАНДА
+КУРЈАКОВ ВИКТОРИЈА
+КУРС ЂОРЂЕ
+КУРТА АЗИС
+КУРТЕШ ЈАСНА
+КУРТЕШ ЛАЗАР
+КУРТЕШ МАРА
+КУРТЕШ СВЕТКО
+КУРТЕШИ ФУАТ
+КУРТЕШИ НУСРЕТ
+КУРТЕШИ ЗЕНУН
+КУРТИ МУСТАФА
+КУРТИ НЕЗИР
+КУРТИШЕВИЋ НАСУФ
+КУРТИЋ АЛЕКСАНДАР
+КУРТИЋ БРАНИСЛАВА
+КУРТИЋ МИЛОВАН
+КУРТИНОВИЋ ПРЕДРАГ
+КУРТОВИЋ АНА
+КУРТОВИЋ ИВАН
+КУРТУШИЋ ИВАНКА
+КУРУЧЕВ МАРИЈА
+КУРУЧЕВ МИРЈАНА
+КУРУЧЕВ СЛОБОДАН
+КУРУЧКИ КАМЕНКО
+КУРУЧКИ ВЛАДИМИР
+КУРУЧКИ ЗЛАТИМИР
+КУРУШИЋ БОРО
+КУРУЦ ЂУЛА
+КУРУЦ ЂУЛА
+КУРУЦ ИГНАЦ
+КУРУЦ ИРЕНА
+КУРУЦ ЈАНОШ
+КУРУЦ ЈОВО
+КУРУЦ ЛАЈОШ
+КУРУЦ ЛАСЛО
+КУРУЦ НАНДОР
+КУРУЦ ТИБОР
+КУРУЦ ВИНКА
+КУРУЦА БОЖА
+КУРУЦА ЈОВАН
+КУРУЦИЋ ДРАГАН
+КУРУЦИЋ ЉУБИЦА
+КУРУЦИЋ СИНИША
+КУРУЦИЋ ВИТОМИР
+КУРУЦИН ЖИВАНА
+КУРУНЦИ АНДРИЈА
+КУРУНЦИ ЈОЖЕФ
+КУРУНЦИ ЈОЖЕФ
+КУРУНЦИ МАРИЈА
+КУРУЗОВИЋ ТАТЈАНА
+КУСИЋ СРЕТКО
+КУСЛИ ФЕРЕНЦ
+КУСЛИ ГЕЗА
+КУСМУК ДАРИНКА
+КУСТИЋ СОФИЈА
+КУСТУДИЈА ДАНИЦА
+КУСТУДИЈА МИРОСЛАВ
+КУСТУДИЈА СЛОБОДАН
+КУСТУРИЋ НИКОЛА
+КУСТУРИЋ СЕЛИМИР
+КУСТУРИЦА ХАСАН
+КУСТУРИЦА НАЗИФ
+КУСТУРИН АНТУН
+КУСТУРИН МИРЈАНА
+КУСУРОВИЋ АНКИЦА
+КУТИЈЕВАЦ ЉУБИЦА
+КУТЛАЧА МАРКО
+КУТЛЕШИЋ ЉУБИША
+КУТЛЕШИЋ ЉУБИША
+КУТРИ КАРЛО
+КУТРИ КАРОЉ
+КУТРИ СТЕВАН
+КУТРИЧКИ ЗОРАН
+КУТУЗОВ МИЛОРАД
+КУТУЗОВ МИРОСЛАВ
+КУВАЉ СТЕВАН
+КУВАЉА ДРАГАН
+КУВАЉА ДРАГОЉУБ
+КУВАЉА КАТИЦА
+КУВАЉА ОСТОЈА
+КУВЕКАЛОВИЋ РАДОСЛАВ
+КУВЕКАЛОВИЋ СТРАИН
+КУВЕЉИЋ ЖАРКО
+КУВЕЉИЋ ЉИЉАНА
+КУВЕЉИЋ РАДИВОЈЕ
+КУВЕЉИЋ РАДОМАН
+КУВИЗИЋ ЖИВОЈИН
+КУВИЗИЋ ЖИВОЈИН
+КУЗЕВСКИ ДРАГАН
+КУЗМАН АНКА
+КУЗМАН БОГДАН
+КУЗМАН БОГДАН
+КУЗМАН БОРИСЛАВ
+КУЗМАН ДИМИТРИЈЕ
+КУЗМАН ДРАГАН
+КУЗМАН МИЛАН
+КУЗМАН МИЛОВАН
+КУЗМАН МИРКО
+КУЗМАН НАДА
+КУЗМАН НАДА
+КУЗМАН НАДА
+КУЗМАН НАДЕЖДА
+КУЗМАН ПЕТАР
+КУЗМАН РИСТО
+КУЗМАН СЛАВИЦА
+КУЗМАНЧЕВ АЛЕКСАНДАР
+КУЗМАНЧЕВ ДИМИТРИЈЕ
+КУЗМАНЧЕВ ДУШАН
+КУЗМАНЧЕВ ОЛИВЕРА ДР
+КУЗМАНЧЕВ ТИМОШЕНКО
+КУЗМАНОВ БОРИСЛАВ
+КУЗМАНОВ МАРИЈА
+КУЗМАНОВ ОБРАД
+КУЗМАНОВ ОБРАД
+КУЗМАНОВ РАДОШ ДИПЛ ИНГ
+КУЗМАНОВ РАДОСЛАВ
+КУЗМАНОВ САВА
+КУЗМАНОВ СЛАВКО
+КУЗМАНОВ СВЕТИСЛАВ
+КУЗМАНОВ ТАНАСИЈЕ
+КУЗМАНОВ ЗОРАН
+КУЗМАНОВИЋ ЧЕДОМИР
+КУЗМАНОВИЋ ЖИВОЈИН
+КУЗМАНОВИЋ ЂОРЂЕ
+КУЗМАНОВИЋ ЂУРА
+КУЗМАНОВИЋ АЛЕКСАНДАР
+КУЗМАНОВИЋ АНГЕЛИНА
+КУЗМАНОВИЋ БОШКО
+КУЗМАНОВИЋ БОГДАН
+КУЗМАНОВИЋ БОГДАН
+КУЗМАНОВИЋ БОРИСЛАВ
+КУЗМАНОВИЋ БРАНИСЛАВА
+КУЗМАНОВИЋ БРАНИСЛАВ
+КУЗМАНОВИЋ ДАНИЦА
+КУЗМАНОВИЋ ДАРИНКА
+КУЗМАНОВИЋ ДЕЈАН
+КУЗМАНОВИЋ ДРАГИЊА
+КУЗМАНОВИЋ ДРАГОМИР
+КУЗМАНОВИЋ ДРАГУТИН
+КУЗМАНОВИЋ ДРАГУТИН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШКО
+КУЗМАНОВИЋ ГОРАН
+КУЗМАНОВИЋ ЈЕЛЕНА
+КУЗМАНОВИЋ ЈОВАН
+КУЗМАНОВИЋ ЈОВАН
+КУЗМАНОВИЋ КАТА
+КУЗМАНОВИЋ ЛАЗАР
+КУЗМАНОВИЋ ЛАЗАР
+КУЗМАНОВИЋ ЛАЗО
+КУЗМАНОВИЋ ЛЕНКА
+КУЗМАНОВИЋ ЉИЉАНА
+КУЗМАНОВИЋ ЉУБИША
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБОМИР
+КУЗМАНОВИЋ МИЛАН
+КУЗМАНОВИЋ МИЛАН
+КУЗМАНОВИЋ МИЛЕНА
+КУЗМАНОВИЋ МИЛЕНКО
+КУЗМАНОВИЋ МИЛЕ
+КУЗМАНОВИЋ МИЉОЈКО ДИПЛ ИНГ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИОДРАГ
+КУЗМАНОВИЋ МИРЈАНА
+КУЗМАНОВИЋ МЛАДЕН
+КУЗМАНОВИЋ НАДА
+КУЗМАНОВИЋ НАДЕЖДА
+КУЗМАНОВИЋ НЕНАД
+КУЗМАНОВИЋ НЕВЕНА
+КУЗМАНОВИЋ НИКОЛА
+КУЗМАНОВИЋ НИКОЛА
+КУЗМАНОВИЋ ПАЈА
+КУЗМАНОВИЋ ПЕТАР
+КУЗМАНОВИЋ ПЕТАР
+КУЗМАНОВИЋ ПРЕДРАГ
+КУЗМАНОВИЋ РАДИВОЈ
+КУЗМАНОВИЋ РАДИВОЈ
+КУЗМАНОВИЋ РАДОЈКО
+КУЗМАНОВИЋ РАДОСАВ
+КУЗМАНОВИЋ РАДОСЛАВ
+КУЗМАНОВИЋ РАЈКО
+КУЗМАНОВИЋ СЛАВКО
+КУЗМАНОВИЋ СЛАВКО
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СПОМЕНКА
+КУЗМАНОВИЋ СТОЈАН
+КУЗМАНОВИЋ СТОЈАН
+КУЗМАНОВИЋ ТОДОР
+КУЗМАНОВИЋ ТОДОР
+КУЗМАНОВИЋ ВАСИЛИЈЕ
+КУЗМАНОВИЋ ВАСИЛИЈЕ
+КУЗМАНОВИЋ ВЕРА
+КУЗМАНОВИЋ ВЕРА
+КУЗМАНОВИЋ ВЛАСТИМИР
+КУЗМАНОВИЋ ВОЈИСЛАВ
+КУЗМАНОВИЋ ЗДРАВКО
+КУЗМАНОВИЋ ЗОРАН
+КУЗМАНОВИЋ ЗОРА
+КУЗМАНОВСКИ БЛАГОЈА
+КУЗМАНОВСКИ ЦВЕТА
+КУЗМАНОВСКИ ДУШАН
+КУЗМАНОВСКИ МИЛЕ
+КУЗМАНОВСКИ ПЕРЕ
+КУЗМАНОВСКИ РАДОЈКА
+КУЗМАНОВСКИ ТАСЕ
+КУЗМАНОВСКИ ТРАЈЧЕ
+КУЗМИЋ МИЛКА
+КУЗМИЋ ЗВОНКО
+КУЗМИНАЦ БОРИСЛАВ
+КУЗМИНАЦ ГОРДАНА
+КУЗМИНАЦ ПЕТАР
+КУЗМИНАЦ ПРЕДРАГ
+КУЗМИНАЦ РАДОСЛАВ
+КВАШЧЕВ ЈОВАН
+КВАШЧЕВ МИРА
+КВАШЧЕВ РАДИВОЈ
+КВАИЋ ЂОРЂЕ
+КВАИЋ ДУШАН
+КВАИЋ ЈЕЛЕНА
+КВАИЋ МИЛЕВА
+КВРГИЋ БОШКО
+КВРГИЋ МИЛАН
+КВРГИЋ ПЕТАР
+КВРГИЋ РАДОВАН
+КВРГИЋ САВО
+КВРГИЋ ТОМИСЛАВ
+ЛАЧАНСКИ ДЕСАНКА
+ЛАЧОК КАРЛО
+ЛАЧОК КАРОЉ
+ЛАШКОВ ИГОР ДИПЛ ИНГ
+ЛАЋАК ЂУРА
+ЛАЋАК МИХАЉ
+ЛАЋАНСКИ ВОЈИСЛАВ
+ЛАЋАРАЦ ЖАРКО
+ЛАЋАРАЦ БИЉАНА
+ЛАЋАРАЦ БОРИСЛАВ
+ЛАЋАРАЦ ДОБРИВОЈЕ
+ЛАЋАРАЦ ЈОВАН
+ЛАЋАРАЦ МАКСИМ
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ ТЕОДОР
+ЛАЋАРАЦ ВЕРА
+ЛАЋАРАК ЖАРКО
+ЛАЋАРАК ЛАЗАР
+ЛАЋАРАК ЛАЗА
+ЛАЋАРАК МИЛОШ
+ЛАЋАРАК МЛАДЕН
+ЛАЋАРАК ОГЊАНКА
+ЛАЖЕГИЋ НЕВЕНКА
+ЛАЖЕТИЋ АЛЕКСАНДАР
+ЛАЖЕТИЋ МАРИЈА ДР
+ЛАЂЕВАЦ ДУШАН
+ЛАЂЕВИЋ ДРАГАН
+ЛАЂЕВИЋ ГОЈКО
+ЛАЂЕВИЋ ЈОВАН
+ЛАЂИНОВИЋ ЖИКА
+ЛАЂИНОВИЋ ЗЛАТКО
+ЛАБАШ ИВАН
+ЛАБАДИ ЈОЖЕФ
+ЛАБАН ЈУЛКА
+ЛАБАН МИРКО
+ЛАБАТ АНА
+ЛАБАТ АНКА
+ЛАБАТ ЈАН
+ЛАБАТ КВЕТОСЛАВА
+ЛАБАТ РУЖЕНА
+ЛАБАТ СТЕВАН
+ЛАБАТ ВЕРА
+ЛАБАТ ВЛАДИМИР
+ЛАБАТ ВЛАДИСЛАВ
+ЛАБАВИЋ ИВАН
+ЛАБОВИЋ БОЖИДАР
+ЛАБОВИЋ МАНОЈЛО
+ЛАБРОВИЋ МИРКО
+ЛАБУДОВИЋ БОРИС
+ЛАБУДОВИЋ ХЕЛЕНА
+ЛАБУДОВИЋ РОЗАЛИЈА
+ЛАБУДОВИЋ ВЛАДИМИР
+ЛАБУС ЂУРО
+ЛАБУС БОЖИДАР
+ЛАБУС БРАНКО
+ЛАБУС ИЛИЈА
+ЛАБУС ЈОВАН
+ЛАБУС ЉУБОМИР
+ЛАБУС МАКЕДОНКА
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛЕ
+ЛАБУС НИКОЛА
+ЛАБУС СЛАВКО
+ЛАЦИК ЈАНОШ
+ЛАЦИК СЛАВИЦА
+ЛАЦКО МИХАЈЛО
+ЛАЦКОВИЋ ДРАГИША
+ЛАЦКОВИЋ ЈОСИП
+ЛАЦКОВИЋ РАДЕ
+ЛАЦКОВИЋ РАДОВАН
+ЛАЦКОВИЋ СОФИЈА
+ЛАЦКОВИЋ СТАНИМИР
+ЛАЦКОВИЋ ЗЛАТКО
+ЛАЦКОВИЋ ЗОРАН
+ЛАЦМАНОВИЋ МИОДРАГ
+ЛАЦМАНОВИЋ СЛАВОЈКА
+ЛАДАР МИЛОШ
+ЛАДАР СТЕВАН
+ЛАДИ ИШТВАН
+ЛАДИ ЛАЈОШ
+ЛАДИ МАРИЈА
+ЛАДИШИЋ АНТОН
+ЛАДИШИЋ ГУСТАВ
+ЛАДИШИЋ ЈЕЛИСАВЕТА
+ЛАДИШИЋ ЈОСИП
+ЛАДИШИЋ МИРКО
+ЛАДИШИЋ НИКОЛА
+ЛАДИШИЋ СТЕВАН
+ЛАДИК ШАНДОР
+ЛАДИК ФЕРЕНЦ
+ЛАДИК КАТАЛИН
+ЛАДИК КАТАЛИН
+ЛАДИК МАРГИТА
+ЛАДИК МИРЈАНА
+ЛАДИКА БЛАЖ
+ЛАДОЦКИ АНДРИЈА
+ЛАДОЛЕЖ ЕРЖЕБЕТ
+ЛАДОЛЕЖ МИЛАДИН
+ЛАГУМЏИЈА ХАМИД
+ЛАГУМЏИЈА МИЛЕНА
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН СВЕТОЗАР
+ЛАГУНЏИН ЗОРАН
+ЛАХАРНАР ЛУЦИЈА
+ЛАХОШ ЂОРЂЕ
+ЛАХОШ АНДРИЈА
+ЛАХОШ ИШТВАН
+ЛАИНОВИЋ АЛЕКСА
+ЛАИНОВИЋ БОРИСЛАВ
+ЛАИНОВИЋ РАНКО
+ЛАЈШИЋ СТЕВАН
+ЛАЈШИЋ ЗОРКА
+ЛАЈХ МАРИЈА
+ЛАЈХТНЕР АНТАЛ
+ЛАЈХТНЕР ФРАЊА
+ЛАЈХТНЕР НИКОЛА ДИПЛ ИНГ
+ЛАЈИЋ ШТЕФКА
+ЛАЈИЋ БРАНКО
+ЛАЈИЋ ДРАГАН
+ЛАЈИЋ ДРАГОЉУБ
+ЛАЈИЋ ЉИЉАНА
+ЛАЈИЋ МИРКО
+ЛАЈИЋ РАЈКО
+ЛАЈИЋ СТАНА
+ЛАЈИЋ ЗДРАВКО
+ЛАЈКО ШАНДОР
+ЛАЈКО ЈОСИП
+ЛАЈКО ЛАЈОШ ДИПЛ ИНГ
+ЛАЈКО МАРИЈА
+ЛАЈКО СТЕВАН
+ЛАЈКО ВЕРА
+ЛАЈОШ ЛАСЛО
+ЛАЈТЕР ЕЛЗА
+ЛАЈТЕР ГИЗЕЛА
+ЛАЈТЕР ИВАН
+ЛАЈТИХ СИГФРИД
+ЛАКАТОШ АМАЛИЈА
+ЛАКАТОШ АНА
+ЛАКАТОШ АНДРАШ
+ЛАКАТОШ ДРАГИЦА
+ЛАКАТОШ ГИЗА
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ЈАСМИНКА
+ЛАКАТОШ ЈЕЛЕНА
+ЛАКАТОШ ЛАЈОШ
+ЛАКАТОШ МИХАЈЛО
+ЛАКАТОШ МИЛИЦА
+ЛАКАТОШ НАДА
+ЛАКАТОШ ПАВЛЕ
+ЛАКАТОШ СТЕВАН
+ЛАКАТОШ ТИБОР
+ЛАКАТОШ ВЕРА
+ЛАКАТОШ ВИЛМОШ
+ЛАКАТОШ ЗОЛТАН
+ЛАКАТОШ ЗОЛТАН
+ЛАКАТУШ БРАНИСЛАВ
+ЛАКЕТА БОЖО
+ЛАКЕТИЋ ЉУБОМИР
+ЛАКЕТИЋ МИЛАН
+ЛАКЕТИЋ МИЛИВОЈ
+ЛАКИЧЕВИЋ НАДА
+ЛАКИЧЕВИЋ-СТОЈАЧИЋ СНЕЖАНА
+ЛАКИЋ АНЂА
+ЛАКИЋ АНЂЕЛКА
+ЛАКИЋ БОГОСАВ
+ЛАКИЋ БРАНКО ДР ЛЕКАР
+ЛАКИЋ БРАНКО
+ЛАКИЋ БРАНКО
+ЛАКИЋ ДАНИЛО
+ЛАКИЋ ИЛИЈА
+ЛАКИЋ ЈОЛАН
+ЛАКИЋ МАРКО
+ЛАКИЋ МИРА
+ЛАКИЋ МИРЈАНА
+ЛАКИЋ МЛАДЕН
+ЛАКИЋ МОМИР
+ЛАКИЋ НИКОЛА
+ЛАКИЋ РАДИВОЈЕ
+ЛАКИЋ РАДИВОЈ
+ЛАКИЋ РАДИВОЈ
+ЛАКИЋ РАДМИЛА
+ЛАКИЋ РАЈКО
+ЛАКИЋ САВА ДР
+ЛАКИЋ СЛОБОДАН
+ЛАКИЋ СМИЉА
+ЛАКИЋ СПАСОЈЕ
+ЛАКИЋ СРЂАН
+ЛАКИЋ СРЂАН
+ЛАКИЋ СРЂАН
+ЛАКИЋ СТЕВАН
+ЛАКИЋ СВЕТИСЛАВ
+ЛАКИЋ ТОМИСЛАВ
+ЛАКИЋ ВЕЛИМИР
+ЛАКИЋ ВЕСНА
+ЛАКИЋ ВУЧЕТА
+ЛАКИЋ ЗОРИЦА
+ЛАКИЋЕВИЋ МИЛИЈА
+ЛАКИЋЕВИЋ СВЕТЛАНА
+ЛАКИЋЕВИЋ ВАСО
+ЛАКИЋЕВИЋ ВЕСНА
+ЛАКИЋЕВИЋ ВУКСАН ДР
+ЛАКЛИЈА СТЕВАН
+ЛАКО МАРИЈА
+ЛАКОБРИЈА ДРАГАН
+ЛАКОБРИЈА ДУШАН
+ЛАКОБРИЈА ИЛИЈА
+ЛАКОБРИЈА ЈЕЛЕНА
+ЛАКОБРИЈА МИЛАН
+ЛАКОБРИЈА МИЛАН
+ЛАКОБРИЈА МИЛОШ
+ЛАКОБРИЈА МИЛОШ
+ЛАКОБРИЈА НИКОЛА
+ЛАКОВИЋ БУДИМИР
+ЛАКОВИЋ ДУШКО
+ЛАКОВИЋ МИЛИЋ
+ЛАКОВИЋ МИЛОРАД
+ЛАКОВИЋ ПЕТАР
+ЛАКОВИЋ РОЗАЛИЈА
+ЛАКОВИЋ ВАСИЉКА
+ЛАЛАТОВИЋ ДЕСАНКА
+ЛАЛАТОВИЋ ДРАГУТИН
+ЛАЛАТОВИЋ СЛОБОДАНКА
+ЛАЛАТОВИЋ ВАСИЛИЈЕ
+ЛАЛИЧИЋ ВЕЛИМИР
+ЛАЛИЋ ЖИВА
+ЛАЛИЋ ЂОРЂЕ
+ЛАЛИЋ АНКИЦА
+ЛАЛИЋ АРКАДИЈЕ
+ЛАЛИЋ БОГДАН
+ЛАЛИЋ ГЛИГОРИЈЕ
+ЛАЛИЋ ГОЈКО
+ЛАЛИЋ ГОРДАНА
+ЛАЛИЋ ИКОНИЈА
+ЛАЛИЋ ЈАГОДА
+ЛАЛИЋ ЈУЛИЈАНА
+ЛАЛИЋ ЈУЛКА
+ЛАЛИЋ ЉУБОМИР
+ЛАЛИЋ МАРИЈА
+ЛАЛИЋ МИЛАДИНКА
+ЛАЛИЋ МИЛАН
+ЛАЛИЋ МИЛИЦА
+ЛАЛИЋ МИРКО
+ЛАЛИЋ НЕНАД
+ЛАЛИЋ НИКОЛА
+ЛАЛИЋ РАДОМИР ДР
+ЛАЛИЋ СРЕДОЈЕ
+ЛАЛИЋ ТАМАРА
+ЛАЛИЋ ТОДОР
+ЛАЛИЋ УГЉЕША
+ЛАЛИЋ ВАСИЛИЈЕ
+ЛАЛИН АЛЕКСАНДАР
+ЛАЛИН МИЛАН
+ЛАЛОШЕВИЋ АЛЕКСАНДАР
+ЛАЛОШЕВИЋ АЛЕКСАНДАР
+ЛАЛОШЕВИЋ ДИМИТРИЈЕ
+ЛАЛОШЕВИЋ ДУШАН
+ЛАЛОШЕВИЋ ДУШКО
+ЛАЛОШЕВИЋ ФЕМКА
+ЛАЛОШЕВИЋ ЈЕЛИСАВЕТА
+ЛАЛОШЕВИЋ ЈОВАН
+ЛАЛОШЕВИЋ КАТИЦА
+ЛАЛОШЕВИЋ ЛАЗАР
+ЛАЛОШЕВИЋ МАРА
+ЛАЛОШЕВИЋ МИКА
+ЛАЛОШЕВИЋ СТЕВАН
+ЛАЛОШЕВИЋ СТЕВА
+ЛАЛОШЕВИЋ ВАСА
+ЛАЛОШЕВИЋ ВЛАДИМИР
+ЛАЛОШЕВИЋ ВЛАДИМИР
+ЛАЛОВИЋ ЈАНКО
+ЛАЛОВИЋ МАРКО
+ЛАЛОВИЋ МИРЈАНА
+ЛАЛОВИЋ НАДА
+ЛАЛОВИЋ РАДИВОЈЕ
+ЛАЛОВИЋ СУЗАНА
+ЛАЛОВИЋ ВЕРА
+ЛАМБЕТА ПЕКО
+ЛАМБИЋ БРАНИСЛАВ
+ЛАМБИЋ ЈОВО
+ЛАМБИЋ ОЛИВЕРА
+ЛАМПРЕТ КРИСТИЈАН
+ЛАНЧУШКИ ЕМИЛКА
+ЛАНЦ ФРАЊА
+ЛАНЦ МАРИЈА
+ЛАНЦОШ АНА
+ЛАНЦОШ НЕНАД
+ЛАНЦОШ СВЕТОЗАР
+ЛАНЦОШ ТОМИСЛАВ
+ЛАНДЕКА АНТОНИЈЕ
+ЛАНГ АТИЛА
+ЛАНГ ДРАГИЦА
+ЛАНГ ЈОСИП
+ЛАНГ МИРЈАНА
+ЛАНГ ВАЛЕРИЈА
+ЛАЊИ АНДРАШ
+ЛАЊИ СТЕВАН
+ЛАНКОВСКИ ПЕЦО
+ЛАНКОВСКИ ТОМЧЕ
+ЛАПЧЕВИЋ ДРАГИЦА
+ЛАПЧЕВИЋ МИЛИЦА
+ЛАПЧЕВИЋ МИЛУТИН
+ЛАПЧЕВИЋ ПАЈА
+ЛАПЧЕВИЋ ВУКОСАВА
+ЛАПЧИЋ МИЛАН
+ЛАПАДАТ ХОРТЕНЗИЈА
+ЛАПАДАТ СОРИН
+ЛАПАДАТ ВАСИЛИЈЕ
+ЛАПАЈНЕ МИЛАН
+ЛАПО ЈОВАН
+ЛАПУ АНДРАШ
+ЛАРКИН СТЕВАН
+ЛАСИЋ ТОМИСЛАВ
+ЛАСИЋ ЗВОНКО
+ЛАСИЋ ЗВОНКО
+ЛАСИЦА БУДИМИР
+ЛАСИЦА ДРАГУТИН
+ЛАСИЦА ИЛИЈА
+ЛАСИЦА МИЛАН
+ЛАСИЦА МИЛАН
+ЛАСИЦА МИЛЕНКО
+ЛАСИЦА МИРОСЛАВ
+ЛАСИЦА УРОШ
+ЛАСИЦА ВЕЉКО
+ЛАСИЦА ЗДРАВКО
+ЛАСИЦА ЗЛАТА
+ЛАСИЦА ЗОРА
+ЛАСКОВ ДОБРЕ
+ЛАСКОВИЋ БРАНКА
+ЛАСКОВИЋ ДАНИЛО
+ЛАСКОВИЋ ДРАГАН
+ЛАСЛО ЕТЕЛКА
+ЛАСЛО ФЕРЕНЦ
+ЛАСЛО ФРАЊА
+ЛАСЛО ФРАЊА
+ЛАСЛО ИЛОНА
+ЛАСЛО ЈОЖЕФ
+ЛАСЛО ЈОСИП
+ЛАСЛО ЈОВАН
+ЛАСЛО ЛАСЛО
+ЛАСЛО МИКЛОШ
+ЛАСЛО МИЛЕНА
+ЛАСЛО ТИБОР
+ЛАСЛО ВЕРА
+ЛАСЛОВСКИ ТЕРЕЗА
+ЛАСТИЋ АЛЕКСАНДАР
+ЛАТАК НАНДОР
+ЛАТАЛ МАРЈАН
+ЛАТАЛ СЛАВИЦА
+ЛАТАЛ СТЕВАН
+ЛАТАЛ ВЕРА
+ЛАТАЛ ЗАГОРКА
+ЛАТАС ЖИВКА
+ЛАТАС ЛАЗАР
+ЛАТАС МАРКО
+ЛАТАС МИЛАДИН
+ЛАТАС МИЛАН
+ЛАТАС ПЕТАР
+ЛАТАС САВА ДР СТОМАТОЛОГ
+ЛАТАС ЗОРА
+ЛАТИШКО УРОШ
+ЛАТИЋ ИСАК
+ЛАТИЋ РАДИВОЈ
+ЛАТИНЧИЋ БОРИСЛАВ
+ЛАТИНЧИЋ ДАНИЦА
+ЛАТИНЧИЋ ГРУЈА
+ЛАТИНЧИЋ НИКОЛА
+ЛАТИНЧИЋ РУЖА
+ЛАТИНКИЋ СТЕВАН
+ЛАТИНКИЋ ВИНКА
+ЛАТИНКОВИЋ РАДОМИР
+ЛАТИНОВИЋ ЖАРКО
+ЛАТИНОВИЋ ЂУЈА
+ЛАТИНОВИЋ БОЖО
+ЛАТИНОВИЋ ДРАГАН
+ЛАТИНОВИЋ ДРАГАН
+ЛАТИНОВИЋ ЕРИКА
+ЛАТИНОВИЋ ИЛИЈА
+ЛАТИНОВИЋ ЈОВАН
+ЛАТИНОВИЋ ЈОВАН
+ЛАТИНОВИЋ ЛАЗА
+ЛАТИНОВИЋ ЉУБА
+ЛАТИНОВИЋ МАЦА
+ЛАТИНОВИЋ МАРИНКО
+ЛАТИНОВИЋ МИЛЕНКО
+ЛАТИНОВИЋ МИЛОРАД
+ЛАТИНОВИЋ МИРКО
+ЛАТИНОВИЋ НЕЂО
+ЛАТИНОВИЋ НЕДЕЉКО
+ЛАТИНОВИЋ НИКОЛА
+ЛАТИНОВИЋ НИКОЛА
+ЛАТИНОВИЋ ПЕТАР
+ЛАТИНОВИЋ РАДОМИР
+ЛАТИНОВИЋ РАЈКО
+ЛАТИНОВИЋ САВО
+ЛАТИНОВИЋ СЛОБОДАНКА
+ЛАТИНОВИЋ СЛОБОДАН
+ЛАТИНОВИЋ СЛОБОДАН
+ЛАТИНОВИЋ СМИЉА
+ЛАТИНОВИЋ СВЕТОЗАР
+ЛАТИНОВИЋ ЗОРКА
+ЛАТКОВИЋ ЖЕЉКО
+ЛАТКОВИЋ ЈОВАН
+ЛАТКОВИЋ ЈОВО
+ЛАТКОВИЋ МИЛЕ
+ЛАТКОВИЋ ВУЈО
+ЛАТКОВСКИ РИСТО
+ЛАТО ЈАСНА
+ЛАТОВЉЕВ ЗАГОРКА
+ЛАУШ ДИМИТРИЈЕ
+ЛАУШ ВЛАДИМИР
+ЛАУШЕВ ДРАГАНА
+ЛАУШЕВ ЈОЦА
+ЛАУШЕВ ЉУБИНКА
+ЛАУШЕВ МИРЈАНА
+ЛАУШЕВ ТОША
+ЛАУШЕВ ВЕЛИМИР
+ЛАУШЕВ ВОЈИСЛАВ
+ЛАУШЕВИЋ ЖИВАН
+ЛАУШЕВИЋ ЖИВКА
+ЛАУШЕВИЋ ЖИВКА
+ЛАУШЕВИЋ БРАНИСЛАВ
+ЛАУШЕВИЋ ДРАГОЈЕ
+ЛАУШЕВИЋ ДРАГУТИН
+ЛАУШЕВИЋ ПАВЛЕ
+ЛАУШЕВИЋ РАДОЈИЦА
+ЛАУШЕВИЋ ВЕСЕЛИН
+ЛАУШЕВИЋ ЗИТА
+ЛАУШИН БРАНИСЛАВ
+ЛАУБЕРТ ВЛАДИСЛАВА
+ЛАУС АНА
+ЛАУС КАТАРИНА
+ЛАУТАРЕВИЋ ДРАГАН
+ЛАУТЕРЕР ЂЕНЂИ
+ЛАУТЕРЕР ЛАСЛО
+ЛАВАЧ ЈОЖЕФ
+ЛАВАЧ ЛАСЛО
+ЛАВИЧКА КАРЛО
+ЛАВРНИЋ КСЕНИЈА
+ЛАВРНИЋ КСЕНИЈА
+ЛАВРНИЋ МИЛОШ
+ЛАВРНИЋ РАДИВОЈ
+ЛАВРЊА ЛАЗАР
+ЛАВРЊА МИЛКАН
+ЛАЗА ЈОН
+ЛАЗА ТЕОДОРА
+ЛАЗАНСКИ АНА
+ЛАЗАНСКИ БРАНИСЛАВ
+ЛАЗАНСКИ ГОРДАНА
+ЛАЗАНСКИ ГОРДАНА
+ЛАЗАР ЂУЛА
+ЛАЗАР ЕЛЕНА
+ЛАЗАР ЈУЛИА
+ЛАЗАР ЈУЛИЈА
+ЛАЗАР КАТАЛИН
+ЛАЗАР ЛАДИСЛАВ
+ЛАЗАР ПАВЛЕ
+ЛАЗАР СИМА
+ЛАЗАР СТЈЕПАН
+ЛАЗАР ВЛАДИМИР
+ЛАЗАРЕВ ЂОКА
+ЛАЗАРЕВ АНА
+ЛАЗАРЕВ АНДРИЈА
+ЛАЗАРЕВ ЈОВАН
+ЛАЗАРЕВ ВЕРА
+ЛАЗАРЕВИЋ ЧЕДА
+ЛАЗАРЕВИЋ ЖИВКА
+ЛАЗАРЕВИЋ ЖИВОТА
+ЛАЗАРЕВИЋ ЂОРЂЕ
+ЛАЗАРЕВИЋ БОШКО
+ЛАЗАРЕВИЋ БОРИСЛАВ
+ЛАЗАРЕВИЋ БРАНКО
+ЛАЗАРЕВИЋ БРАНКО
+ЛАЗАРЕВИЋ ДАНИЛО
+ЛАЗАРЕВИЋ ДАРИНКА
+ЛАЗАРЕВИЋ ДИМИТРИЈЕ
+ЛАЗАРЕВИЋ ДОБРОСАВ
+ЛАЗАРЕВИЋ ДРАГИША
+ЛАЗАРЕВИЋ ДРАГОМИР
+ЛАЗАРЕВИЋ ЈАДВИГА
+ЛАЗАРЕВИЋ ЈЕЛЕНА
+ЛАЗАРЕВИЋ ЈЕЛЕНА
+ЛАЗАРЕВИЋ ЛАЗАР
+ЛАЗАРЕВИЋ ЉУБОМИР
+ЛАЗАРЕВИЋ ЉУБО
+ЛАЗАРЕВИЋ МАНДА
+ЛАЗАРЕВИЋ МИЛАДИНКА
+ЛАЗАРЕВИЋ МИЛАН
+ЛАЗАРЕВИЋ МИЛАН
+ЛАЗАРЕВИЋ МИЛИВОЈЕ
+ЛАЗАРЕВИЋ МИЛОРАД
+ЛАЗАРЕВИЋ МИЛОРАД
+ЛАЗАРЕВИЋ МИЛУН
+ЛАЗАРЕВИЋ МИЛУТИН
+ЛАЗАРЕВИЋ НИКОЛА
+ЛАЗАРЕВИЋ САВА
+ЛАЗАРЕВИЋ СМИЉА
+ЛАЗАРЕВИЋ СТАНИША
+ЛАЗАРЕВИЋ СТАНОЈЕ
+ЛАЗАРЕВИЋ СТЕВАН
+ЛАЗАРЕВИЋ СТЕВАН
+ЛАЗАРЕВИЋ СВЕТИСЛАВ
+ЛАЗАРЕВИЋ ВЕЛИМИР
+ЛАЗАРЕВИЋ ВЕСНА
+ЛАЗАРЕВИЋ ВИДАН
+ЛАЗАРЕВИЋ ВЛАДИМИР
+ЛАЗАРЕВИЋ ВОЈИСЛАВ
+ЛАЗАРЕВИЋ ЗОРАН ДР ЛЕКАР
+ЛАЗАРЕВИЋ ЗОРАН
+ЛАЗАРЕВСКИ ЂОРЂЕ
+ЛАЗАРЕВСКИ ДРАГОЉУБ
+ЛАЗАРЕВСКИ СЛАВКО
+ЛАЗАРОВ ВЕСЕЛИН
+ЛАЗАРОВ ЗОРАН
+ЛАЗАРОВСКИ ДРАГАН
+ЛАЗЕНДИЋ ЛАЗАР
+ЛАЗЕНДИЋ НИКОЛА
+ЛАЗИЧИЋ БРАНКО
+ЛАЗИЧИЋ СТАНИЈА
+ЛАЗИЋ ЖАРКО
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВКО
+ЛАЗИЋ ЖИВОЈИН
+ЛАЗИЋ ЖИВОРАД
+ЛАЗИЋ ЂОРЂЕ ДИПЛ ИНГ
+ЛАЗИЋ АНЂЕЛКА
+ЛАЗИЋ АНДРИЈА
+ЛАЗИЋ БОШКО
+ЛАЗИЋ БОЖИДАР
+ЛАЗИЋ БРАНИСЛАВА
+ЛАЗИЋ БРАНИСЛАВА
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНКА ДР
+ЛАЗИЋ БУДИМИР
+ЛАЗИЋ ДАМЈАНКА
+ЛАЗИЋ ДЕЈАН ДИПЛ ИНГ
+ЛАЗИЋ ДЕЈАН
+ЛАЗИЋ ДРАГАНА
+ЛАЗИЋ ДРАГАН
+ЛАЗИЋ ДРАГА
+ЛАЗИЋ ДРАГИЦА
+ЛАЗИЋ ДРАГОЉУБ
+ЛАЗИЋ ДРАГОМИР
+ЛАЗИЋ ДРАГО
+ЛАЗИЋ ДРАГУТИН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ЕМИЛ ДР ЛЕКАР
+ЛАЗИЋ ГОЈКО
+ЛАЗИЋ ГОРОЉУБ
+ЛАЗИЋ ГРОЗДАНА
+ЛАЗИЋ ИВАНА
+ЛАЗИЋ ЈЕЛИСАВЕТА
+ЛАЗИЋ ЈОЦА
+ЛАЗИЋ ЈОВАНКА
+ЛАЗИЋ ЈОВАН
+ЛАЗИЋ ЈУЛКА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КОСТАДИН
+ЛАЗИЋ КОСТА
+ЛАЗИЋ ЛАЗАР
+ЛАЗИЋ ЛАЗАР
+ЛАЗИЋ ЉУБАН
+ЛАЗИЋ ЉУБИНКА
+ЛАЗИЋ ЉУБИСАВА
+ЛАЗИЋ ЉУБОМИР
+ЛАЗИЋ МАРИЈА
+ЛАЗИЋ МАРИЈА
+ЛАЗИЋ МАРИНКО
+ЛАЗИЋ МАРТА
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛЕНА
+ЛАЗИЋ МИЛЕНА
+ЛАЗИЋ МИЛЕНКО
+ЛАЗИЋ МИЛЕНКО
+ЛАЗИЋ МИЛЕВКА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИНКО
+ЛАЗИЋ МИЛИСАВ ПРОФЕСОР
+ЛАЗИЋ МИЛИСАВ
+ЛАЗИЋ МИЛИВОЈ
+ЛАЗИЋ МИЛОШ
+ЛАЗИЋ МИЛОРАД
+ЛАЗИЋ МИОДРАГ
+ЛАЗИЋ МИРА
+ЛАЗИЋ МИРЈАНА
+ЛАЗИЋ МИРКО
+ЛАЗИЋ МИРОЉУБ
+ЛАЗИЋ МИРОСЛАВ
+ЛАЗИЋ МЛАДЕН
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДЕЖДА
+ЛАЗИЋ НАЈДАН
+ЛАЗИЋ НЕВЕНА
+ЛАЗИЋ НИКОЛА ДИПЛ ИНГ
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ ОБРЕН
+ЛАЗИЋ ПАЈА
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПИРОШКА
+ЛАЗИЋ ПИРОШКА
+ЛАЗИЋ РАДА
+ЛАЗИЋ РАДЕ
+ЛАЗИЋ РАДИША
+ЛАЗИЋ РАДИВОЈ
+ЛАЗИЋ РАДМИЛА
+ЛАЗИЋ РАДОЈКА
+ЛАЗИЋ РАДОЈКО
+ЛАЗИЋ РАДОВАН
+ЛАЗИЋ РАЈКО
+ЛАЗИЋ РОДОЉУБ
+ЛАЗИЋ РУЖА
+ЛАЗИЋ САЊА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ СИМА ДР
+ЛАЗИЋ СЛАВКО
+ЛАЗИЋ СЛОБОДАН
+ЛАЗИЋ СЛОБОДАН
+ЛАЗИЋ СМИЉА
+ЛАЗИЋ СРБИСЛАВ
+ЛАЗИЋ СТАНИМИР
+ЛАЗИЋ СТАНКО
+ЛАЗИЋ СТЕВАНКА
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТОЈАДИН
+ЛАЗИЋ СТОЈАН
+ЛАЗИЋ СВЕТОЗАР
+ЛАЗИЋ ТЕОДОР
+ЛАЗИЋ ТРАЈКО
+ЛАЗИЋ ВАЛЕРИЈА
+ЛАЗИЋ ВАСИЛИЈЕ
+ЛАЗИЋ ВЕЛИНКА
+ЛАЗИЋ ВЕСЕЛИН
+ЛАЗИЋ ВЕСНА
+ЛАЗИЋ ВЛАДИМИР
+ЛАЗИЋ ЗОРАН
+ЛАЗИЋ ЗОРИЦА
+ЛАЗИЋ ЗОРИЦА
+ЛАЗИЦАНИ АЉУШ
+ЛАЗИН БОГДАН
+ЛАЗИН БРАНКО
+ЛАЗИН ГОЈКО
+ЛАЗИН МИРОСЛАВА
+ЛАЗИН НАТАЛИЈА
+ЛАЗИН САВА
+ЛАЗИН САВА
+ЛАЗИН СИНИША
+ЛАЗИН СИНИША
+ЛАЗИН СЛОБОДАН
+ЛАЗИН ВОЈИН
+ЛАЗИН ЗОРИЦА
+ЛАЗИНИЦА РАДОЈКА
+ЛАЗОР МИРОН
+ЛАЗОР НИКОЛА
+ЛАЗОВ ТРАЈАН
+ЛАЗОВА ТРАЈКА
+ЛАЗОВИЋ ЧЕДО
+ЛАЗОВИЋ БОШКО
+ЛАЗОВИЋ БОЖИДАР
+ЛАЗОВИЋ ДЕЈАН ДИПЛ ИНГ
+ЛАЗОВИЋ ДРАГАН
+ЛАЗОВИЋ ЛАЗАР
+ЛАЗОВИЋ ЉИЉАНА
+ЛАЗОВИЋ МИЛЕНТИЈЕ
+ЛАЗОВИЋ МИЛЕТА
+ЛАЗОВИЋ МИЛИЦА
+ЛАЗОВИЋ МИЛОЈИЦА
+ЛАЗОВИЋ НЕНАД
+ЛАЗОВИЋ РАДОСАВ
+ЛАЗОВИЋ САВИЦА
+ЛАЗОВИЋ СЛОБОДАН
+ЛАЗОВИЋ СТАНКО
+ЛАЗОВИЋ СТЕВАН ПРОФЕСОР
+ЛАЗОВИЋ СВЕТИСЛАВ
+ЛАЗОВИЋ ВУЈАДИН
+ЛАЗОВИЋ ЗОРАН
+ЛАЗОВИЋ ЗОРАН
+ЛАЗОВСКИ СЛАВЧО
+ЛАЗУКИЋ ЧЕДО
+ЛАЗУКИЋ АНЂА
+ЛАЗУКИЋ ЈОВО
+ЛАЗУКИЋ КАЋА
+ЛАЗУКИЋ МИЛАН
+ЛАЗУКИЋ СЛОБОДАН
+ЛЕЧ ЕНДРЕ ДР
+ЛЕЧ ЕРИХ
+ЛЕЧАР ЈОСИП
+ЛЕЧАР КАРЛО
+ЛЕЧИЋ ЧЕДОМИР
+ЛЕЧИЋ ДОБРИЛА
+ЛЕЧИЋ ДОБРОСАВ
+ЛЕЧИЋ ГОЈКО
+ЛЕЧИЋ МИЛЕВА
+ЛЕЧИЋ МИЛОВАН
+ЛЕЧИЋ НАДА
+ЛЕЧИЋ НАДА
+ЛЕЧИЋ СИМО
+ЛЕЧИЋ СПАСОЈЕ
+ЛЕЧИЋ ВИДОСАВА
+ЛЕЧИЋ ВЛАДИМИР
+ЛЕШЧЕШЕН ЕДВАРД
+ЛЕШЧЕШЕН ЈЕЛЕНА
+ЛЕШИЋ ЂУРА
+ЛЕШИЋ СТОЈАН
+ЛЕШКИЋ ЂОРЂЕ
+ЛЕШКИЋ ВОЈИСЛАВ
+ЛЕШКОВ ЈОВАН
+ЛЕШКОВ МИЛАН
+ЛЕШКОВ МИОДРАГ
+ЛЕШКОВ ОЛГИЦА
+ЛЕШКОВИЋ ЗЛАТКО
+ЛЕШНИК ЗАГОРКА
+ЛЕШТАР СТЕВАН
+ЛЕШТАР ЗОРИЦА
+ЛЕЖАЈИЋ ВУКАДИН
+ЛЕЖАКОВ ЂУРЂИЦА
+ЛЕЖАКОВ МИЛАН
+ЛЕЖИМИРАЦ АЛЕКСАНДАР
+ЛЕЖИМИРАЦ БРАНКИЦА
+ЛЕЖИМИРАЦ ДОБРИНКА
+ЛЕЖИМИРАЦ СЛОБОДАН
+ЛЕЖИМИРАЦ СЛОБОДАН
+ЛЕЖИМИРАЦ СВЕТЛАНА
+ЛЕЖИМИРАЦ ВЛАДИМИР
+ЛЕЂАНА ЈЕЛЕНА
+ЛЕЂАНАЦ ЂУРЂИНКА
+ЛЕЂАНАЦ БРАНИСЛАВА
+ЛЕЂАНАЦ ДРАГОМИР
+ЛЕЂАНАЦ ЕМИЛИЈА
+ЛЕЂАНАЦ ГАВРА
+ЛЕЂАНАЦ ГОРИЦА
+ЛЕЂАНАЦ ЈОВАН
+ЛЕЂАНАЦ МИЛАН
+ЛЕЂАНАЦ СЕКУЛА
+ЛЕЂАНАЦ СЕКУЛА
+ЛЕЂАНАЦ СЛАВКО
+ЛЕЂАНАЦ СТЕВАН
+ЛЕЂАНАЦ СТЕВАН
+ЛЕЂАНАЦ ВИТОМИР
+ЛЕЂАНСКИ БРАНКА
+ЛЕЂЕНАЦ ДРАГАН
+ЛЕЂЕНАЦ НАДА
+ЛЕЂЕНАЦ СЛАВКО
+ЛЕЂЕНАЦ СТАНИМИР
+ЛЕЂЕНАЦ СТРАХИЊА
+ЛЕБАР ЗЛАТИЦА
+ЛЕБЕР ЗЛАТКО
+ЛЕБЛ АРПАД ДР ПРОФЕСОР
+ЛЕБОВИЋ МАРИНКО
+ЛЕБУРИЋ ВАСИЛИЈЕ
+ЛЕЦКИ ЂУЛА
+ЛЕЦКИ КРИШТОФ
+ЛЕЦКОВИЋ ЕМИЛ
+ЛЕДЕНКО АНТЕ МР
+ЛЕДЕР ЕМИНА
+ЛЕДЕР ОЛГА
+ЛЕГЕН СТОЈАН
+ЛЕГЕТИЋ БРАНКА
+ЛЕХОЦКИ ШАНДОР
+ЛЕХОЦКИ ФЕРЕНЦ
+ЛЕХОТСКИ КАРЛО
+ЛЕХР ДАВОР
+ЛЕИТНЕР НИКОЛА
+ЛЕКИ ЂУРА
+ЛЕКИ МАРИЈА
+ЛЕКИ СТЈЕПАН
+ЛЕКИ ТЕРЕЗИЈА
+ЛЕКИЋ ЖИВАДИН
+ЛЕКИЋ ЂОРЂИЈЕ
+ЛЕКИЋ БОГДАН
+ЛЕКИЋ БРАНКА
+ЛЕКИЋ БРАНКО
+ЛЕКИЋ ДЕЈАН
+ЛЕКИЋ ДРАГОЉУБ
+ЛЕКИЋ ДУШАН
+ЛЕКИЋ ЈОРДАН
+ЛЕКИЋ ЉУБОМИР
+ЛЕКИЋ ЉУБОМИР
+ЛЕКИЋ МИЛАДИН
+ЛЕКИЋ МИЛАНКА
+ЛЕКИЋ НЕЂО
+ЛЕКИЋ НИКОЛА
+ЛЕКИЋ СИМЕВУН
+ЛЕКИЋ СТАНКА
+ЛЕКИЋ СТЕВАН
+ЛЕКИЋ ТАТЈАНА
+ЛЕКИЋ ТЕОДОР
+ЛЕКИЋ ВЕСЕЛКО
+ЛЕКИЋ ЗАГОРКА
+ЛЕКИЋ ЗДРАВКО
+ЛЕКИН ЉУБИЦА
+ЛЕКИН МИЛАН
+ЛЕКИН МИЛАН
+ЛЕКИН МИЛАН
+ЛЕКИН ЗДРАВКО
+ЛЕКО ЂЕРЂ
+ЛЕКО АЛЕКСАНДАР
+ЛЕКО БОРИСЛАВ
+ЛЕКО МЛАДЕН
+ЛЕКОВИЋ ДОБРИЛО
+ЛЕКОВИЋ ДРАГИША
+ЛЕКОВИЋ МИЛОШ
+ЛЕКОВИЋ МИРКО
+ЛЕКОВИЋ НОВАК
+ЛЕКОВИЋ СЛОБОДАНКА
+ЛЕКОВИЋ ТОМИСЛАВ
+ЛЕКОВИЋ ВЕРИЦА
+ЛЕЛЕА ТОДОР
+ЛЕЛЕОВИЋ БОРО
+ЛЕЛИЋ ЖЕЉКО
+ЛЕЛИЋ МАХМУТ
+ЛЕЛИЋ МАРИЈА
+ЛЕЛИЋ МИРСАМ
+ЛЕЛИЋ ЗУМРЕТА
+ЛЕЛИК ЈАНОШ
+ЛЕЛИК ЈЕНЕ
+ЛЕЛОВИЋ РАДЕ
+ЛЕМАИЋ ЖЕЉКО
+ЛЕМАИЋ СОФИЈА
+ЛЕМАЈИЋ БРАНКО
+ЛЕМАЈИЋ ЦЕЦИЛИЈА
+ЛЕМАЈИЋ КАТИЦА
+ЛЕМАЈИЋ МАРИЈА
+ЛЕМАЈИЋ МИЛАН
+ЛЕМАЈИЋ МИЛАН
+ЛЕМАЈИЋ МИРОСЛАВ
+ЛЕМАЈИЋ РАДОЈИЦА
+ЛЕМАЈИЋ СЛОБОДАН
+ЛЕМАЈИЋ ВЛАДИМИР
+ЛЕМХЕ ЈЕЛИСАВЕТА
+ЛЕМИЋ БОСА
+ЛЕМИЋ ДРАГИЊА
+ЛЕМИЋ ЛАЗАР
+ЛЕМИЋ МИЛЕНКО
+ЛЕМИЋ НЕБОЈША
+ЛЕМИЋ ВЛАДИМИР
+ЛЕН ПИРОШКА
+ЛЕНЧА АНДРИЈА
+ЛЕНЧА КАТА
+ЛЕНЂЕЛ ЂУРО
+ЛЕНЂЕЛ ЈОВАН
+ЛЕНЂЕЛ ЈОВАН
+ЛЕНЂЕЛ КАРОЉ
+ЛЕНЂЕЛ МИХАЈЛО
+ЛЕНАРД АРПАД
+ЛЕНАРД ПЕТАР
+ЛЕНАРТ КАТИЦА
+ЛЕНАРТИЋ ЂОРЂЕ
+ЛЕНАТОВ ДУШАН
+ЛЕНДИЋ ЈОСИП
+ЛЕНДВАЈИ АНДРИЈА
+ЛЕНДВАЈИ ЈОЖЕФ
+ЛЕНДВАЈИ ЉИЉАНА
+ЛЕНЕР АНДРАШ
+ЛЕНЕР ДЕЖЕ
+ЛЕНЕРТ АНТАЛ
+ЛЕНЕРТ ПЕТАР ДР ДОЦЕНТ
+ЛЕНЕРТ СТЕВАН
+ЛЕНХАРД ЈАНОШ
+ЛЕНКЕШ ЈОВАН
+ЛЕНКЕШ ЛАСЛО
+ЛЕОВАЦ МИЛИВОЈЕ
+ЛЕОВАЦ ВУКАДИН
+ЛЕПЧЕВИЋ МИЛЕТА
+ЛЕПШАНОВИЋ ЛАЗАР ДР ЛЕКАР
+ЛЕПШИЋ ДРАГИЦА
+ЛЕПАР ШАНДОР
+ЛЕПАР ЈЕЛИЦА
+ЛЕПАР ЛАДИСЛАВ
+ЛЕПЕШ ЛАДИСЛАВ
+ЛЕПЕШ ТИБОР ДР ПРОФ
+ЛЕПХАФТ ПАЛ
+ЛЕПИР АНЂЕЛКА
+ЛЕПИР БОСИЉКА
+ЛЕПИР МИЛОРАД
+ЛЕПИР ВЕЛИМИР
+ЛЕПОША РУДОЛФ
+ЛЕПОЈЕВ БРАНКО
+ЛЕПОЈЕВ САВА
+ЛЕПОЈЕВ ВАСИЛИЈЕ
+ЛЕПОЈЕВИЋ ЖИВОРАД
+ЛЕПОЈЕВИЋ СТАНКО
+ЛЕПОРИС ЈАН
+ЛЕПОТИЋ ЖИВАН
+ЛЕПОТИЋ МИЛЕНКО
+ЛЕПОТИЋ НИКОЛА
+ЛЕПОВИЋ МИКА
+ЛЕПУША ЗДЕНКО
+ЛЕР ИВАН
+ЛЕРИЋ ЕРЖЕБЕТ
+ЛЕРИК АНДРАШ
+ЛЕРИК ИШТВАН
+ЛЕРИК МИКЛОШ
+ЛЕРИНЦ АНИКО
+ЛЕРИНЦ ДРАГОСЛАВ
+ЛЕРИНЦ ЈАНОШ
+ЛЕРИНЦ КАРЛО
+ЛЕРИНЦ КАТАЛИН
+ЛЕРИНЦ ЛАСЛО
+ЛЕРИНЦ ЛАСЛО
+ЛЕРИНЦ ЛЕО
+ЛЕРИНЦ ЛЕО
+ЛЕРО БОЖИДАР
+ЛЕРО ВЛАДИМИР
+ЛЕСКОВАЦ ЂОРЂЕ
+ЛЕСКОВАЦ ДРАГАН
+ЛЕСКОВАЦ ЉУБИЦА
+ЛЕСКОВАЦ МИЛАН
+ЛЕСКОВАЦ МИЛАН
+ЛЕСКОВАЦ МИЛЕТА
+ЛЕСКОВАЦ МЛАДЕН ПРОФЕСОР
+ЛЕСКОВАЦ РАДОМИР
+ЛЕСКОВАЦ СТАНКА
+ЛЕСКОВАЦ ВЛАДИМИР ДР
+ЛЕСКОВАЦ ВОЈИСЛАВ
+ЛЕТАЈЕВ АЛЕКСАНДАР
+ЛЕТАЈЕВ АЛЕКСАНДАР
+ЛЕТАЈЕВ МИХАЈЛО
+ЛЕТАЈЕВ ВЛАДИМИР
+ЛЕТИЋ ЧЕДО
+ЛЕТИЋ ЖАРКО
+ЛЕТИЋ ЖИВА
+ЛЕТИЋ ЖИВКО ДИПЛ ИНГ
+ЛЕТИЋ ЂОКО
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ АНИЦА
+ЛЕТИЋ АНИЦА
+ЛЕТИЋ АРИШКО
+ЛЕТИЋ БОГДАН
+ЛЕТИЋ БОРИВОЈ
+ЛЕТИЋ БРАНИСЛАВ
+ЛЕТИЋ БРАНИСЛАВ
+ЛЕТИЋ БРАНКА
+ЛЕТИЋ БРАНКО
+ЛЕТИЋ ДАРИНКА
+ЛЕТИЋ ДРАГАН
+ЛЕТИЋ ДРАГИША
+ЛЕТИЋ ДРАГИЦА
+ЛЕТИЋ ДУШАН
+ЛЕТИЋ ДУШАН
+ЛЕТИЋ ГАВРА
+ЛЕТИЋ ГОЈКО
+ЛЕТИЋ ГОРДАНА ДР
+ЛЕТИЋ ИВАН
+ЛЕТИЋ ЈОВАНКА
+ЛЕТИЋ ЈОВАН
+ЛЕТИЋ КОСТА
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЉУБИША
+ЛЕТИЋ ЉУБИЦА
+ЛЕТИЋ МАРИЦА
+ЛЕТИЋ МАРИЈА
+ЛЕТИЋ МАРИЈА
+ЛЕТИЋ МАРИНКО
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОВАН
+ЛЕТИЋ МИОДРАГ
+ЛЕТИЋ МИРОСЛАВ
+ЛЕТИЋ МИРОСЛАВ
+ЛЕТИЋ НЕНАД
+ЛЕТИЋ НЕВЕНА
+ЛЕТИЋ ОЛГА
+ЛЕТИЋ ОЛГА
+ЛЕТИЋ ОЛГИЦА
+ЛЕТИЋ ПЕРА
+ЛЕТИЋ РАДА
+ЛЕТИЋ РАДЕ
+ЛЕТИЋ РАДМИЛА
+ЛЕТИЋ САВА
+ЛЕТИЋ САВА
+ЛЕТИЋ СИМКА
+ЛЕТИЋ СЛОБОДАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТОЈАН ЛЕКАР
+ЛЕТИЋ СВЕТИСЛАВ
+ЛЕТИЋ СВЕТОЗАР
+ЛЕТИЋ ТОДОР
+ЛЕТИЋ ВЕРА
+ЛЕТИЋ ВЕСНА
+ЛЕТИЋ ВИДА
+ЛЕТИЋ ВЛАДИМИР
+ЛЕТИЋ ВЛАДИСЛАВА
+ЛЕТИЋ ЗДРАВКО
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРКА
+ЛЕТИЦА ИВАНА
+ЛЕТИЦА МИЛАН
+ЛЕТИЦА ТОМИСЛАВ
+ЛЕТО РУЖИЦА
+ЛЕТОНАИ ЈАНОШ
+ЛЕТОНАИ ЛАСЛО
+ЛЕВА ИЛИНКА
+ЛЕВАИ ГАБОР
+ЛЕВАИ КАТАЛИН
+ЛЕВАИ НАНДОР
+ЛЕВАИ СТЕВАН
+ЛЕВАЈАЦ ВЕРА
+ЛЕВАКОВ МАРА
+ЛЕВАКОВ СЛОБОДАН
+ЛЕВАКОВ ВОЈИСЛАВ
+ЛЕВАРСКИ МИХАЈЛО
+ЛЕВАТИЋ МАТИЈА
+ЛЕВАТИЋ МИЛКА
+ЛЕВАТИЋ МИЛКИЦА
+ЛЕВЕНСКИ ТАДЕЈ
+ЛЕВИ ГОРАН
+ЛЕВИ ЛЕОН
+ЛЕВИ ВИКТОР
+ЛЕВИЋ ЉУБИНКО
+ЛЕВНАЈИЋ ДРАГАН
+ЛЕВНАЈИЋ МИЛКА
+ЛЕВНАЈИЋ МОМЧИЛО
+ЛЕЗЕЧЕВ СИНИША
+ЛИЧАНИН ДРАГАН
+ЛИЧАНИН МАРИЈА
+ЛИЧАНИН СЛАВКО
+ЛИЧЕН ХОТИМИР
+ЛИЧЕН ЈОСИП ДИПЛ ИНГ
+ЛИЧЕН ЉУДМИЛА
+ЛИЧИНА ЂОРЂЕ
+ЛИЧИНА БРАНКИЦА
+ЛИЧИНА ДАНИЛО
+ЛИЧИНА ДМИТАР
+ЛИЧИНА ДРАГО
+ЛИЧИНА ДУШАН
+ЛИЧИНА ЛУКА
+ЛИЧИНА МАРИЈА
+ЛИЧИНА МИЛАНКА
+ЛИЧИНА МИЛАН
+ЛИЧИНА МИЛЕ
+ЛИЧИНА ПРЕДРАГ
+ЛИЧИНА РАДЕ
+ЛИЧИНА ВЕЛИБОР
+ЛИЧИНА ЗОРАН
+ЛИЧИНАР ДРАГАН
+ЛИЧИНАР НЕДЕЉКО
+ЛИЧИНАР СЛАВКО
+ЛИЧИНАР СТАНКО
+ЛИЧИНИЋ ДУШАН
+ЛИЧИНИЋ НАДА
+ЛИШЧИЋ ВЕЛИНКА
+ЛИШИЋ ЂУРЂИНКА
+ЛИШИЋ МАРИЦА
+ЛИШКОВИЋ МИРОСЛАВ
+ЛИШКОВИЋ МИРОСЛАВ
+ЛИБЕР СТЕВАН
+ЛИБРИЋ ИВАН
+ЛИБРИЋ ИВАН
+ЛИБРИЋ МАРИЈАН
+ЛИДЛОФ ПИРОШКА
+ЛИДЛОФ РУДОЛФ
+ЛИДЛОФ ЗОЛТАН
+ЛИХТЕНТАЛ АНТАЛ
+ЛИХТЕНТАЛ ЕЛИЗАБЕТА
+ЛИХВАРЧЕК АНДРИЈА
+ЛИКАВЕЦ ЈАРОМИР
+ЛИКАВЕЦ КАРЛО ДИПЛ ИНГ
+ЛИКИЋ БОРИСЛАВ
+ЛИКИЋ БУДИСЛАВ
+ЛИКОДРИЋ МИЛОВАН
+ЛИЛЧЕВ ДАРИНКА
+ЛИЛИ ВЕРА
+ЛИЛИЋ ЂОРЂЕ
+ЛИЛИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЛИЛИЋ МАРИЈАНА
+ЛИЛИЋ МИЛЕНА
+ЛИЛИЋ МИОДРАГ
+ЛИЛИЋ СРБИСЛАВ
+ЛИЛИЋ ТАТЈАНА
+ЛИЛИЋ ВЕЛИМИР
+ЛИМАНИ ШАЋИР
+ЛИМАНИ МЕМИШ
+ЛИМАНИ НАЗИФ
+ЛИМАНОВИЋ НАЗИФ
+ЛИМАНОВСКИ ИБРАХИМ
+ЛИМАНОВСКИ МУСАФЕТ
+ЛИМБОЦКИ ПЕТАР
+ЛИМБУРГЕР ЈОЖЕФ
+ЛИНДЕМАН ЈЕЛЕНА
+ЛИНДЕМАН РУДОЛФ
+ЛИНДНЕР МАРГИТ
+ЛИНИЋ ДРАГАН
+ЛИЊАК ДРАГОМИР
+ЛИНКО КОЛОМАН
+ЛИПАИ КОРНЕЛ
+ЛИПАНОВИЋ ГОЈКО
+ЛИПНИЧКИ ЗОРИЦА
+ЛИПОТИЋ ПЕТАР
+ЛИПОВАЦ ДУШАН
+ЛИПОВАЦ МАТИЈА
+ЛИСИЧИН НАДА
+ЛИСИЧИН ТОМИСЛАВ
+ЛИСИЋ МАРИЦА
+ЛИСИЦА МИХАЈЛО
+ЛИСИЦА МИХАЈЛО
+ЛИСИЦА МИЛОШ АДВОКАТ
+ЛИСОВ КАТИЦА
+ЛИСОВ МИЛИМИР
+ЛИСОВ МИРКО
+ЛИСОВАЦ ЗОРАН
+ЛИСУЛ АЛЕКСАНДАР
+ЛИСУЛ МИЛКА
+ЛИСУЛОВ ОЛГА
+ЛИСУЛОВ РАТОМИР
+ЛИСУЛОВ ЗОРАН
+ЛИТАВСКИ ВЛАДИМИР
+ЛИТНЕР ЈОВАН
+ЛИТРИЧИЋ ГАВРА
+ЛИТРИЧИН БОГДАН
+ЛИТРИЧИН ГЕНА
+ЛИТРИЧИН-ВЕБЕР БОГДАНКА
+ЛИТРИЧИН ВЕЛИМИР
+ЛИТВЈАК ПАВЛЕ
+ЛИТВЈАК ВЛАДИМИР
+ЛИВАДА МИЛАН
+ЛИВАДА МИЛОШ
+ЛИВАЈА ЈОЗО
+ЛИВАЈА ЈУРЕ
+ЛИЗАТОВИЋ БРАНКО
+ЉАЧЕВИЋ БОЖИДАР
+ЉАЈИЋ ТАИП
+ЉАЉИЋ ЂОРЂЕ
+ЉАТИФИ КАДРИ
+ЉАВРОШКА ПАВЕЛ
+ЉАВРОШКА ПАВЕЛ
+ЉЕШЕВИЋ ЉИЉАНА ДР
+ЉЕШЕВИЋ МАРИЈА
+ЉЕШЊАК МИРОЉУБ
+ЉЕШЊАК МОМЧИЛО
+ЉЕЉАК МЕХО
+ЉЕПОЈЕВИЋ СТЕВАН
+ЉИКАР ЕВГЕНИЈЕ
+ЉИКАР МИХАЈЛО ДИПЛ ИНГ
+ЉИКАР ВЕРОНА
+ЉИКАР ВЛАДИМИР ЛЕКАР
+ЉИЉАК ЉИЉАНА
+ЉИЉАК МИЛАН
+ЉИЉАК МИЛАН
+ЉИЉАК МИЛЕНКО
+ЉИЉАК МИЛОРАД
+ЉИЉАК МИОДРАГ
+ЉИЉАК МИРКО
+ЉИЉАК МИРОСЛАВ
+ЉИЉАК НАДА
+ЉИЉАК НАДЕЖДА
+ЉИЉАК ПАЈО
+ЉИЉАК САВА
+ЉИЉАК СЛАВКО
+ЉИЉАК ВЛАДИМИР
+ЉИЉАК ВЛАДО
+ЉУШТИНА ЖИВАН
+ЉУШТИНА ЂОРЂЕ
+ЉУШТИНА ЈЕЛЕНА
+ЉУШТИНА ЉУБИЦА
+ЉУШТИНА МИЛАН
+ЉУШТИНА МИЛАН
+ЉУШТИНА МИЛОВАН
+ЉУШТИНА НИКОЛА
+ЉУШТИНА ОЛГА
+ЉУШТИНА СОФИЈА
+ЉУШТИНА ВОЈКА
+ЉУШТИНОВ НАДА
+ЉУБАШЧИК АНТОН
+ЉУБАНИЋ МАРА
+ЉУБАНОВИЋ МИЛЕНКО
+ЉУБАНОВИЋ РАДИСЛАВ
+ЉУБЕНКОВИЋ МИЛОВАН
+ЉУБЕНКОВИЋ ПЕТАР
+ЉУБЕНКОВИЋ ПЕТАР
+ЉУБИЧИЋ ЖАРКО
+ЉУБИЧИЋ ЖАРКО
+ЉУБИЧИЋ ЖИВКА
+ЉУБИЧИЋ ЂУРЂИНКА
+ЉУБИЧИЋ БЛАЖО
+ЉУБИЧИЋ БОРИСЛАВ
+ЉУБИЧИЋ ДАНКО
+ЉУБИЧИЋ ДАРА
+ЉУБИЧИЋ ДРАГУТИН
+ЉУБИЧИЋ ЈОВИЦА
+ЉУБИЧИЋ ЛАЗАР
+ЉУБИЧИЋ ЛУКА
+ЉУБИЧИЋ МАРИЈАН
+ЉУБИЧИЋ МАРИНА
+ЉУБИЧИЋ МИХАЈЛО
+ЉУБИЧИЋ МИЛОШ ЛОКАЛ
+ЉУБИЧИЋ МИЛОШ
+ЉУБИЧИЋ МИРОСЛАВА
+ЉУБИЧИЋ МИРОСЛАВ
+ЉУБИЧИЋ НАДА
+ЉУБИЧИЋ НАДА
+ЉУБИЧИЋ НЕВЕНКА
+ЉУБИЧИЋ НИКОЛА
+ЉУБИЧИЋ ПЕТАР
+ЉУБИЧИЋ ПЕТАР
+ЉУБИЧИЋ РАДОСЛАВ
+ЉУБИЧИЋ РАДОСЛАВ
+ЉУБИЧИЋ РАТКО
+ЉУБИЧИЋ РЕЉА
+ЉУБИЧИЋ РУДОЛФ
+ЉУБИЧИЋ СЛОБОДАН
+ЉУБИЧИЋ СТАНКО
+ЉУБИЧИЋ СТЕВАН
+ЉУБИЧИЋ СУЗАНА
+ЉУБИЧИЋ ТАЛИНКА
+ЉУБИЧИЋ ВЛАДИМИР
+ЉУБИЧИЋ ЗОРА
+ЉУБИШЕВИЋ МИЛОШ
+ЉУБИШИЋ БРАНИСЛАВ
+ЉУБИШИЋ МИЛАНКО
+ЉУБИШИЋ ПЕТАР
+ЉУБИШИЋ СУЗАНА
+ЉУБИЋ АНЂЕЛКА
+ЉУБИЋ АНДРИЈА
+ЉУБИЋ ИВАН
+ЉУБИЋ ЈЕЛЕНА
+ЉУБИЋ МИРЈАНА
+ЉУБИЋ НАТАЛИЈА
+ЉУБИЋ ПЕРО
+ЉУБИЋ РАЈКО
+ЉУБИБРАТИЋ ЕДО
+ЉУБИБРАТИЋ ЛЕО
+ЉУБИНАЦ МИЛАНКА
+ЉУБИНКОВИЋ АЛЕКСАНДРА
+ЉУБИНКОВИЋ БОГОЉУБ
+ЉУБИНКОВИЋ ЛЕНКА
+ЉУБИНКОВИЋ МАРИЈА
+ЉУБИНКОВИЋ МИЛАНКО
+ЉУБИНКОВИЋ МИЛАН
+ЉУБИНКОВИЋ МИЛОРАД
+ЉУБИНКОВИЋ ПАВЛЕ
+ЉУБИНКОВИЋ САВА
+ЉУБИНКОВИЋ СТЕВАН
+ЉУБИНКОВИЋ ВЕЛИМИР
+ЉУБИСАВЉЕВИЋ ДАНИЦА
+ЉУБИСАВЉЕВИЋ МИША
+ЉУБИСАВЉЕВИЋ МИЛАН
+ЉУБИСАВЉЕВИЋ МИЛИЦА
+ЉУБОЈА ДРЕНКА
+ЉУБОЈА МЛАДЕН
+ЉУБОЈА СИЛВИЈА
+ЉУБОЈЕВ БИЉАНА
+ЉУБОЈЕВ ИВАН
+ЉУБОЈЕВ ЈЕЛЕНА
+ЉУБОЈЕВ ЛАЗАР
+ЉУБОЈЕВ МАЈА
+ЉУБОЈЕВ ПЕТАР МР
+ЉУБОЈЕВ РАЈКО
+ЉУБОЈЕВИЋ ЧЕДОМИР
+ЉУБОЈЕВИЋ АНЂЕЛИЈА
+ЉУБОЈЕВИЋ БОРИСЛАВ
+ЉУБОЈЕВИЋ БРАНКО
+ЉУБОЈЕВИЋ ДЕСИМИР
+ЉУБОЈЕВИЋ ДРАГИЦА
+ЉУБОЈЕВИЋ ИЛИЈА
+ЉУБОЈЕВИЋ ЈОВАН
+ЉУБОЈЕВИЋ ЈУЛКА
+ЉУБОЈЕВИЋ КАТИЦА
+ЉУБОЈЕВИЋ КОСТА
+ЉУБОЈЕВИЋ МАРКО
+ЉУБОЈЕВИЋ МАРКО
+ЉУБОЈЕВИЋ МИХАЈЛО
+ЉУБОЈЕВИЋ МИЛЕНА
+ЉУБОЈЕВИЋ МИЛИЦА
+ЉУБОЈЕВИЋ МИРКО
+ЉУБОЈЕВИЋ ОСТОЈА
+ЉУБОЈЕВИЋ ПЕТАР
+ЉУБОЈЕВИЋ РУЖА
+ЉУБОЈЕВИЋ РУЖИЦА
+ЉУБОЈЕВИЋ СЛАВКО
+ЉУБОЈЕВИЋ СЛОБОДАН
+ЉУБОЈЕВИЋ СТЕВАН
+ЉУБОЈЕВИЋ ТОДОР
+ЉУБОЈЕВИЋ ВЕЉКО
+ЉУБОЈЕВИЋ ВЛАДИМИР
+ЉУБОЈЕВИЋ ВЛАДИМИР
+ЉУБОЈЕВИЋ ВОЈИСЛАВ
+ЉУБОТИН ЈЕЛЕНА
+ЉУБОТИН РАДОСЛАВ
+ЉУБОТИНА-БРКИЋ РАЈНА
+ЉУБОВИЋ МАРИНКО
+ЉУБУШЧИК ПЕТАР
+ЉУКОВЧАНИН МИРЈАНА
+ЉУКОВЧАНИН ЗОРИЦА
+ЉУМОЖЕВСКИ ЈЕЛЕНА
+ЉУМОЖЕВСКИ МАРИЈА
+ЉУМОВИЋ ДАНИЦА
+ЉУТИЋ СТАНИКА
+ЉУТВИ РАДИВОЈ
+ЛОЧКИ ЈЕЛИСАВЕТА
+ЛОШИЋ МИЛОРАД
+ЛОШИЋ МИЛОРАД
+ЛОШИЋ МИТРА
+ЛОШОНЦ ХЕНРИЈЕТЕ
+ЛОБОДА АНТУН
+ЛОБОДА СТЕВАН
+ЛОЦ АНДРАШ
+ЛОЦ ЈОЖЕФ
+ЛОЦИ ИШТВАН
+ЛОДИ ГАБОР
+ЛОДИ ЈЕЛИСАВЕТА
+ЛОДИ ЛАСЛО
+ЛОГУНОВ АЛЕКСЕЈ ДИПЛ ИНГ
+ЛОЈАНИЧИЋ РАДИВОЈЕ
+ЛОЈАНИЦА БОШКО
+ЛОЈНА ИВАН
+ЛОЈОВИЋ БОЖИЦА
+ЛОЈОВИЋ ОСТОЈА
+ЛОЈОВИЋ РАНКО
+ЛОЈПУР МИЛОВАН
+ЛОКАС ДАРКО
+ЛОКИЋ ДАНИЦА
+ЛОКИЋ ЈЕЛЕНА
+ЛОКИЋ ЉУБИЦА
+ЛОКИЋ МИЛОВАН
+ЛОКИЋ ВЕРА
+ЛОЛИЋ БОШКО
+ЛОЛИЋ ДОБРИНКА
+ЛОЛИЋ МАРИЈА
+ЛОЛИЋ МИЛАН
+ЛОЛИЋ НЕДЕЉКО
+ЛОЛИЋ СЛАВКА
+ЛОЛИЋ ТОДОР
+ЛОЛИН ДЕЈАН
+ЛОЛИН ЗОРИЦА
+ЛОМЕН ЕЛЕНА
+ЛОМИЋ МОМИР
+ЛОМИЋ РАДОВАН
+ЛОМИЋ СЛОБОДАН
+ЛОМЈАНСКИ АДАМ
+ЛОМЈАНСКИ СТЕВАН
+ЛОМОВИЋ БРАТИСЛАВ МР ОЕЦ И ИУРЕ
+ЛОМОВИЋ МИХАИНА
+ЛОМОВИЋ МИХАИНА
+ЛОМПАР ДРАГАН
+ЛОМПАР МИТАР
+ЛОМПАР ПЕТАР
+ЛОМПАР САВА
+ЛОНЧАР ЧЕДОМИР
+ЛОНЧАР ЂУРО
+ЛОНЧАР БОШКО
+ЛОНЧАР БОЖИДАР
+ЛОНЧАР БОЈАНА
+ЛОНЧАР БОРИС
+ЛОНЧАР БРАНИСЛАВ
+ЛОНЧАР ДРАГАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ГОЈКО
+ЛОНЧАР ГОРДАНА
+ЛОНЧАР ИЛИЈА
+ЛОНЧАР ЈЕЛИЦА
+ЛОНЧАР ЈОВАН
+ЛОНЧАР КОСТА
+ЛОНЧАР КСЕНИЈА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР МАРКО
+ЛОНЧАР МИХАЈЛО
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛЕНКО
+ЛОНЧАР МИЛЕ
+ЛОНЧАР МИЛЕ
+ЛОНЧАР МИЛОРАД
+ЛОНЧАР МИРКО
+ЛОНЧАР МИРКО
+ЛОНЧАР НЕДЕЉКО
+ЛОНЧАР НЕВЕНКА
+ЛОНЧАР НИКОЛА
+ЛОНЧАР НИКОЛА
+ЛОНЧАР ПАНТЕЛИЈА
+ЛОНЧАР ПРЕДРАГ
+ЛОНЧАР РАДЕ
+ЛОНЧАР РАДОМИР
+ЛОНЧАР РАДОМИР
+ЛОНЧАР СИМО
+ЛОНЧАР СЛАВКО
+ЛОНЧАР СЛОБОДАН
+ЛОНЧАР-СРЕМЧЕВ ВЕРИЦА
+ЛОНЧАР СТЕВО
+ЛОНЧАР ТАТЈАНА
+ЛОНЧАР ВЕЛИМИР
+ЛОНЧАР ВЕРА
+ЛОНЧАР ВЛАДА
+ЛОНЧАР ВЛАДИМИРКА ДР
+ЛОНЧАР ВУКАШИН
+ЛОНЧАР ЗДРАВКО
+ЛОНЧАР ЗОРАН
+ЛОНЧАРЕВИЋ ЖИВОТА
+ЛОНЧАРЕВИЋ ИГЊАТ
+ЛОНЧАРЕВИЋ МИЛАН
+ЛОНЧАРЕВИЋ ПУНИША
+ЛОНЧАРЕВИЋ РАДОВАН
+ЛОНЧАРЕВИЋ ВИТОМИР
+ЛОНЧАРИЋ РАДМИЛА
+ЛОНЧАРСКИ ДРАГАНА
+ЛОНЧАРСКИ ДРАГИША
+ЛОНЧАРСКИ ПРЕДРАГ
+ЛОНЧАРСКИ САВА
+ЛОНЧАРСКИ СРЕДОЈЕ
+ЛОНЧИНА МИЉА
+ЛОНЧИНА ПРЕДРАГ
+ЛОНЦИЋ БЕРИСЛАВА
+ЛОНЦИЋ РАЈКО
+ЛОПАТИН НИКОЛА
+ЛОПИЧИЋ ШПИРО
+ЛОПИЧИЋ БРАНКО
+ЛОПИЧИЋ БРАНКО
+ЛОПИЧИЋ ЈЕЛИЦА
+ЛОПИЧИЋ ЈОВАН
+ЛОПИЧИЋ МИОДРАГ
+ЛОПИЧИЋ ОЛГА
+ЛОПИЧИЋ ВЕСЕЛИН
+ЛОПУШАНСКИ ДУШИЦА
+ЛОПУШИНА АЛЕКСАНДАР
+ЛОПУШИНА ЈЕЛИЦА
+ЛОРБЕК ЈОСИП
+ЛОРЕК ЈОВАН
+ЛОРЕНЦИН МИЛАН
+ЛОТИНА ДРАГАН
+ЛОТИНА МИРОСЛАВ
+ЛОТИНА СМИЉА
+ЛОВЧЕВИЋ ДАРИНКА
+ЛОВЧЕВИЋ ДРАГОСЛАВ
+ЛОВЧЕВИЋ МИЛИЋ
+ЛОВЧЕВИЋ ТОМИСЛАВ
+ЛОВЧЕВИЋ ВОЈИСЛАВ
+ЛОВАШ РОЗАЛИЈА
+ЛОВАДИНОВ СВЕТОЗАР
+ЛОВАС ИВАН
+ЛОВИЋ КУЗМАН
+ЛОВРЕ ЧЕДО
+ЛОВРЕ ДРАГАН
+ЛОВРЕ ЉИЉАНА
+ЛОВРЕ МИЛОШ
+ЛОВРЕ САВО
+ЛОВРЕ СЛАВКО
+ЛОВРЕ СТЕВАН
+ЛОВРЕКОВИЋ ТОМИСЛАВ
+ЛОВРЕКОВИЋ ЗЛАТКО
+ЛОВРЕН СЛАВКО
+ЛОВРЕНЧИЋ КАТИЦА
+ЛОВРЕНОВИЋ МИРОСЛАВА
+ЛОВРЕНСКИ ДУШАН
+ЛОВРЕНСКИ ДУШАН
+ЛОВРИЋ ЖЕЉКО
+ЛОВРИЋ ЖЕЉКО
+ЛОВРИЋ ЂУРА
+ЛОВРИЋ ДИВНА
+ЛОВРИЋ МАРКО
+ЛОВРИЋ НИКОЛА
+ЛОВРИЋ ПЕТАР
+ЛОВРИЋ РАЈКО
+ЛОВРИЋ РАТКО
+ЛОВРИЋ СЛАВКО
+ЛОВРИЋ СЛАВКО
+ЛОВРИЋ СТЕВАН
+ЛОВРИЋ СТЕВАН
+ЛОВРИЋ ТАТЈАНА
+ЛОВРИЋ ТРИВУН
+ЛОВРИН ДАРА
+ЛОВРИН ДРАГАН
+ЛОЗАНЧИЋ НИКО
+ЛОЗАНИЋ ИВАН ДИПЛ ИНГ
+ЛОЗАНИЋ-ПАВЛОВИЋ ЂУРЂИНКА
+ЛОЗАНОВ ЕМИЛ
+ЛОЗАНОВ САВА
+ЛОЗИЋ ЈОСИП
+ЛОЗИЋ КРСТА
+ЛОЗИЋ КСЕНИЈА
+ЛОЗИЋ МИОДРАГ ДИПЛ ИНГ
+ЛОЗИЋ ТОМИСЛАВ
+ЛОЗЈАНИН НИКОЛА
+ЛОЗЈАНИН НИКОЛА
+ЛОЗЈАНИН НИКОЛА
+ЛОЗОВОЈ ЉУБИЦА
+ЛУЧАК ЗЛАТИЦА
+ЛУЧАР МИЛАДИН
+ЛУЧАР МИЛАН
+ЛУЧАР ВЕРА
+ЛУЧИ АНИЦА
+ЛУЧИ ИВАН
+ЛУЧИЋ ЧЕДОМИР
+ЛУЧИЋ ЖИВКО
+ЛУЧИЋ ЂОКО
+ЛУЧИЋ ЂОРЂЕ
+ЛУЧИЋ ЂУРЂИНА
+ЛУЧИЋ АЛЕКСАНДАР ДР
+ЛУЧИЋ АЛЕКСАНДРА
+ЛУЧИЋ БРАНКО
+ЛУЧИЋ ДРАГАН
+ЛУЧИЋ ДРАГИЦА
+ЛУЧИЋ ДРАГИЊА
+ЛУЧИЋ ДРАГУТИН
+ЛУЧИЋ ГЕОРГИЈЕ
+ЛУЧИЋ ЈЕЛЕНА
+ЛУЧИЋ ЈЕЛИЦА
+ЛУЧИЋ ЈОВАН МР
+ЛУЧИЋ ЈОВАН
+ЛУЧИЋ ЈОВАН
+ЛУЧИЋ ЈОВИЦА
+ЛУЧИЋ ЛАЗО
+ЛУЧИЋ ЉУБАН
+ЛУЧИЋ ЉУБОМИР
+ЛУЧИЋ ЉУБО
+ЛУЧИЋ МИХАЈЛО
+ЛУЧИЋ МИЛАН
+ЛУЧИЋ МИЛЕНКО
+ЛУЧИЋ МИЛЕНКО
+ЛУЧИЋ МИЛИЦА
+ЛУЧИЋ МИЛИВОЈЕ
+ЛУЧИЋ МИЛОШ
+ЛУЧИЋ МИЛОЈИЦА
+ЛУЧИЋ МИЛОЈКА
+ЛУЧИЋ МИЛОМИР
+ЛУЧИЋ МИЛОСАВА
+ЛУЧИЋ МИЛУТИН
+ЛУЧИЋ МИОДРАГ
+ЛУЧИЋ МИРЈАНА
+ЛУЧИЋ МИРОСЛАВА
+ЛУЧИЋ МОМЧИЛО
+ЛУЧИЋ МОМИР
+ЛУЧИЋ НАДА
+ЛУЧИЋ ОБРАД
+ЛУЧИЋ ПАНТА
+ЛУЧИЋ ПАВА
+ЛУЧИЋ ПЕТАР
+ЛУЧИЋ ПЕТКО
+ЛУЧИЋ ПЕТКО
+ЛУЧИЋ РАЈКО
+ЛУЧИЋ РИСТО
+ЛУЧИЋ СЛАВКО
+ЛУЧИЋ СЛАВНА
+ЛУЧИЋ СОФИЈА
+ЛУЧИЋ СПАСОЈЕ
+ЛУЧИЋ СТЕФАНИЈА
+ЛУЧИЋ СТЕВАН
+ЛУЧИЋ ВАСО
+ЛУЧИЋ ВЛАДО
+ЛУЧИЋ ВОЈИН
+ЛУЧИЋ ЗДРАВКО
+ЛУШИНОВСКИ ДИМИТРИЈЕ
+ЛУЖАИЋ ЂОРЂЕ
+ЛУЖАИЋ ЂОРЂЕ
+ЛУЖАИЋ АНКА
+ЛУЖАИЋ БОЖИЦА
+ЛУЖАИЋ ДУШКО
+ЛУЖАИЋ ЈАДРАНКА
+ЛУЖАИЋ ЈУЛКА
+ЛУЖАИЋ МИРА
+ЛУЖАИЋ ВЛАДИМИР
+ЛУЖАИЋ ВЛАДИМИР
+ЛУЖАЈИЋ АНКА
+ЛУЖАЈИЋ ЈАДРАНКА
+ЛУЖАЈИЋ МИЛЕНА
+ЛУЖАЈИЋ НАДА
+ЛУЖАЈИЋ СТАНКО
+ЛУЖАЈИЋ СТАНКО
+ЛУЖАЈИЋ СТОЈАН
+ЛУЖАНИН СВЕТОЗАР
+ЛУБАШЧИК АНТАЛ
+ЛУБАШЧИК ЛАСЛО
+ЛУБАРДА ЉУБИЦА
+ЛУБАРДА СТЕВАН
+ЛУБЕН РАНКО
+ЛУБЕН САВА
+ЛУБУРИЋ ЧЕДОМИР
+ЛУБУРИЋ ДАНИЛО
+ЛУБУРИЋ МИЛОРАД
+ЛУБУРИЋ МИЛОРАД
+ЛУБУРИЋ МИЛОВАН
+ЛУБУРИЋ МИОДРАГ
+ЛУБУРИЋ МИРКО
+ЛУБУРИЋ НАДА
+ЛУБУРИЋ РАДОМИР
+ЛУБУРИЋ РАЈКО
+ЛУБУРИЋ СТАНА
+ЛУБУРИЋ СТЕВАН
+ЛУЦ ЈАНОШ
+ЛУЦ ЈУЛИЈА
+ЛУЦИЋ ЖИВОЈИН
+ЛУЦИЋ АЛЕКСАНДРА
+ЛУЦИЋ ПЕТАР
+ЛУЦИЋ РАДИВОЈ
+ЛУЦКАРЖ ВЛАДИМИР
+ЛУДАЈИЋ ДУШАН ДИПЛ ИНГ
+ЛУДАЈИЋ ВЕРА
+ЛУДОШКИ АНЂЕЛКО
+ЛУДОШКИ КАТИЦА
+ЛУДОШКИ ЛАЗАР
+ЛУДОШКИ ЛАЗАР
+ЛУДОШКИ ЉУБИЦА
+ЛУДОШКИ ЉУБОМИР
+ЛУДОШКИ МИЛЕНКО
+ЛУДОШКИ ВЕЛИМИР
+ЛУДРОВАН СТЕВА
+ЛУГОЊА ЛАЗО
+ЛУГОЊА ПЕТАР
+ЛУГОЊА РАДИВОЈ
+ЛУГОЊА САВА
+ЛУГОЊА СЛОБОДАН
+ЛУГОЊА ВЕЉКО
+ЛУГОЊА ВИДОЈЕ
+ЛУГУМЕРСКИ ДАНИЦА
+ЛУИНОВИЋ МИЛАН
+ЛУЈАНОВ ДРАГОСЛАВ
+ЛУЈИНОВИЋ МИЛАН
+ЛУЈНОВИЋ БРАНКА
+ЛУКАЧ ШАНДОР
+ЛУКАЧ АНДРАШ
+ЛУКАЧ АНКИЦА
+ЛУКАЧ АРАНКА
+ЛУКАЧ БОШКО
+ЛУКАЧ БОШКО
+ЛУКАЧ БОЖИДАР
+ЛУКАЧ БРАНИСЛАВ
+ЛУКАЧ ДАНИЛО
+ЛУКАЧ ДРАГАН
+ЛУКАЧ ДРАГОСЛАВ ДР
+ЛУКАЧ ФЕРЕНЦ
+ЛУКАЧ ФРАНЦИШКА
+ЛУКАЧ ФРАЊА
+ЛУКАЧ ГРОЗДА
+ЛУКАЧ ИГЊАТ
+ЛУКАЧ ИВАН
+ЛУКАЧ ЛАЗАР
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИЛЕВА
+ЛУКАЧ НАДЕЖДА
+ЛУКАЧ ПЕТАР
+ЛУКАЧ ПЕТАР
+ЛУКАЧ РАДЕ
+ЛУКАЧ САВА
+ЛУКАЧ СЛОБОДАНКА
+ЛУКАЧ СЛОБОДАН
+ЛУКАЧ СТЕВАН
+ЛУКАЧ СВЕТКО
+ЛУКАЧ ВЕЛИМИР
+ЛУКАЧЕВИЋ ЉУБИША
+ЛУКАЧИ ЈЕЛИСАВЕТА
+ЛУКАЧИ ЈУЛИЈАНА
+ЛУКАЈИЋ ЛАЗАР МР
+ЛУКАН ЂОРЂЕ
+ЛУКАН ВИНЦЕНЦ
+ЛУКАНИЋ ФРИЂЕШ
+ЛУКАНИЋ СТЕВАН
+ЛУКАТЕЛИ ИВАНКА
+ЛУКАВАЦ СМИЉКА
+ЛУКАВАЦ ЗОРАН
+ЛУКЕШЕВИЋ ДРАГАН
+ЛУКЕНИЋ ЉИЉАНА
+ЛУКЕТА РАДМИЛА
+ЛУКИЧИЋ БОГДАН ДИПЛ ИНГ
+ЛУКИЧИЋ КАТИЦА
+ЛУКИЧИЋ РАДА
+ЛУКИЧИЋ СЛОБОДАН
+ЛУКИЧИЋ СЛОБОДАН
+ЛУКИЋ ЖИВОРАД
+ЛУКИЋ ЖИВОРАД
+ЛУКИЋ ЖИВОТА
+ЛУКИЋ ЂУРА
+ЛУКИЋ ЂУРО
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АНГЕЛИНА
+ЛУКИЋ БЕРТА
+ЛУКИЋ БОШКО
+ЛУКИЋ БОЖИДАР
+ЛУКИЋ БОГОЉУБ
+ЛУКИЋ БОРИВОЈЕ
+ЛУКИЋ БОРО
+ЛУКИЋ БОСИЉКА
+ЛУКИЋ ЦВЕТА
+ЛУКИЋ ЦВЈЕТКО
+ЛУКИЋ ДАНЕ
+ЛУКИЋ ДАНЕ
+ЛУКИЋ ДАРИНКА
+ЛУКИЋ ДИМИТРИЈЕ
+ЛУКИЋ ДОБРИЛА
+ЛУКИЋ ДОБРОСАВ
+ЛУКИЋ ДРАГАН
+ЛУКИЋ ДРАГА
+ЛУКИЋ ДРАГОЈЕ
+ЛУКИЋ ДРАГОСЛАВА
+ЛУКИЋ ДУШАНКА
+ЛУКИЋ ДУШАН
+ЛУКИЋ ДУШАН
+ЛУКИЋ-ФУДЕРЕР ЈОЛАНКА
+ЛУКИЋ ГРОЗДА
+ЛУКИЋ ГРУЈИЦА ДИПЛ ИНГ
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИВАН
+ЛУКИЋ ИВАН
+ЛУКИЋ ИВАН
+ЛУКИЋ ЈАДРАНКА
+ЛУКИЋ ЈАСМИНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛИЦА
+ЛУКИЋ ЈОВАНКА
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВО
+ЛУКИЋ ЈОВО
+ЛУКИЋ ЈУЛКА
+ЛУКИЋ КАТАРИНА
+ЛУКИЋ КОСТА
+ЛУКИЋ КОСТА
+ЛУКИЋ ЛАЗАР
+ЛУКИЋ ЉИЉАНА
+ЛУКИЋ ЉУБА
+ЛУКИЋ ЉУБИША ДР ЛЕКАР
+ЛУКИЋ ЉУБИЦА
+ЛУКИЋ ЛЈУБОМИР
+ЛУКИЋ МАРА
+ЛУКИЋ МАРИЈА
+ЛУКИЋ МАРКО
+ЛУКИЋ МАРКО
+ЛУКИЋ МАРКО
+ЛУКИЋ МИЋА
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛЕ
+ЛУКИЋ МИЛИЈА
+ЛУКИЋ МИЛКА
+ЛУКИЋ МИЛОШ
+ЛУКИЋ МИЛОРАД
+ЛУКИЋ МИЛОРАД
+ЛУКИЋ МИОДРАГ
+ЛУКИЋ МИРЈАНА
+ЛУКИЋ МИРЈАНА
+ЛУКИЋ МИРОСЛАВ
+ЛУКИЋ МИРОСЛАВ
+ЛУКИЋ МОМЧИЛО
+ЛУКИЋ НЕВЕНА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НОВКА
+ЛУКИЋ ОБРАД
+ЛУКИЋ ОЛГА
+ЛУКИЋ ОЛГИЦА
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ РАДОСАВ
+ЛУКИЋ РАДОСЛАВ
+ЛУКИЋ РАДОВАН
+ЛУКИЋ РАДОВАН
+ЛУКИЋ РАЈКО
+ЛУКИЋ РИСТО
+ЛУКИЋ РУЖА
+ЛУКИЋ РУЖА
+ЛУКИЋ САВКА
+ЛУКИЋ СЛОБОДАНКА
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СОФИЈА
+ЛУКИЋ СОФИЈА
+ЛУКИЋ СТАНА
+ЛУКИЋ СТАНИША
+ЛУКИЋ СТАНИСЛАВ
+ЛУКИЋ СТЕВАН
+ЛУКИЋ СТЕВАН
+ЛУКИЋ-СТЕВИЋ ЉИЉАНА
+ЛУКИЋ СТЕВО
+ЛУКИЋ СТОЈАНКА
+ЛУКИЋ СТОЈАН
+ЛУКИЋ СВЕТЛАНА
+ЛУКИЋ ТАМАРА
+ЛУКИЋ ТОМИСЛАВ
+ЛУКИЋ ТОМИСЛАВ
+ЛУКИЋ ВЕЛИБОР ДР
+ЛУКИЋ ВЕЛИБОР ДР
+ЛУКИЋ ВЕЛИМИР
+ЛУКИЋ ВЕЉКО
+ЛУКИЋ ВЕРА
+ЛУКИЋ ВЕРИЦА
+ЛУКИЋ ВЕРОНА
+ЛУКИЋ ВЕРОНИКА
+ЛУКИЋ ВЕСЕЛИН
+ЛУКИЋ ВИДОСАВА
+ЛУКИЋ ВЛАДИМИР ДИПЛ ИНГ
+ЛУКИЋ ВЛАДИМИР
+ЛУКИЋ ВОЈИН
+ЛУКИЋ ВУКОСАВ
+ЛУКИЋ ВУК
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРКА
+ЛУКО ШАНДОР
+ЛУКО АНДРАШ
+ЛУКОВАЦ АНИЦА
+ЛУКОВАЦ ДРАГАН
+ЛУКОВАЦ МИЛАН
+ЛУКОВАЦ МИЛОВАН
+ЛУКОВИЋ ДУШАН
+ЛУКОВИЋ ИВАН
+ЛУКОВИЋ ЈОВАН
+ЛУКОВИЋ МИЛАН
+ЛУКОВИЋ МИЛОРАД
+ЛУКОВИЋ МИЛОРАД
+ЛУКОВИЋ МИЛУТИН
+ЛУКОВИЋ СЛАВКО
+ЛУКОВИЋ СЛОБОДАНКА
+ЛУКОВИЋ ВЛАДИМИР
+ЛУЛИЋ АНА
+ЛУЛИЋ АНТУН
+ЛУЛИЋ ФРАЊА
+ЛУЛИЋ ИВАН МР
+ЛУЛИЋ ИВАН
+ЛУЛИЋ МАЈА
+ЛУЛИЋ МАРКО
+ЛУНГ ДРАГАН
+ЛУНГ СТЕВАН
+ЛУНГИНОВИЋ МАРИЈА
+ЛУНГУЛОВ МИЛИВОЈ
+ЛУПШИЋ ЈУЛИЈАНА
+ЛУПШИЋ КОРНЕЛ
+ЛУПШИЋ КОРНЕЛ
+ЛУПШОР СТЕЛА
+ЛУПИНСКИ НИНОСЛАВ
+ЛУПИНСКИ ВЛАДИМИР
+ЛУПУЦ ЈЕЛИЦА
+ЛУПУРОВ ЛАЗА
+ЛУПУРОВИН НЕВЕНКА
+ЛУТКИЋ ЖИВКА
+ЛУТКИЋ ЂОРЂЕ
+ЛУТКИЋ АЛЕКСАНДРА
+ЛУТКИЋ ЛАЗАР
+ЛУТКИЋ МИЛОРАД
+ЛУТКИЋ СТАНКО
+ЛУТКИЋ СТЕВАН
+ЛУТКИЋ ЗАГОРКА
+ЛУТРОВ НАДА
+ЛУВРАДОВ БЛАГОЈЕ
+МАЧЕК ЈОВАН
+МАЧКИЋ БРАНКО
+МАЧКИЋ ДРАГИЦА
+МАЧКИЋ ЈАНКО
+МАЧКИЋ ЈАНКО
+МАЧКИЋ МИЛЕНА
+МАЧКИЋ МИЛЕНКО
+МАЧКИЋ МИЛЕВКА
+МАЧКИЋ МИЛИВОЈ
+МАЧКИЋ МИЉКА
+МАЧКИЋ МИЛОШ
+МАЧКИЋ НЕДЕЉКО
+МАЧКИЋ НЕНАД
+МАЧКИЋ ПЕТРА
+МАЧКИЋ СТЕВО
+МАЧКИЋ ВАСО
+МАЧКИЋ ВЛАДИМИР
+МАЧКОВИЋ МИЛАНА
+МАЧКОВИЋ МИЛАН
+МАЧКОВИЋ ТОМА
+МАЧУКАТ ГРГО
+МАЧВАНИН БОЈАНА ДР ЛЕКАР
+МАША ЕРЖЕБЕТ
+МАША МИХАЈЛО
+МАША ВЛАДИМИР
+МАШАНОВИЋ ЂОРЂЕ ДИПЛ ИНГ
+МАШАНОВИЋ ЂОРЂИЈЕ
+МАШАНОВИЋ БЛАЖО
+МАШАНОВИЋ БОСИЉКА
+МАШАНОВИЋ БРАНИСЛАВ
+МАШАНОВИЋ ДРАГО
+МАШАНОВИЋ НИКОЛА
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ЗОРАН
+МАШИЋ ЖАРКО
+МАШИЋ ЖИВАН
+МАШИЋ БОРИС
+МАШИЋ ДРАГАН
+МАШИЋ ДРАГИЋ
+МАШИЋ ИШТВАН
+МАШИЋ ИМРЕ
+МАШИЋ ИВАН
+МАШИЋ ЈОВАН
+МАШИЋ КАРОЉ
+МАШИЋ МАНДА
+МАШИЋ МИЛАН ДР
+МАШИЋ МИЛИНКО
+МАШИЋ МИЛИВОЈ
+МАШИЋ МИЉАНА
+МАШИЋ МИЛОЈЕ
+МАШИЋ МИРА
+МАШИЋ МИРКО
+МАШИЋ МИРОСЛАВ
+МАШИЋ НАДА
+МАШИЋ ПЕТАР
+МАШИЋ РЕШАД
+МАШИЋ СЕНКА
+МАШИЋ СЕНКА
+МАШИЋ СИМЕОН
+МАШИЋ СТЕВАН
+МАШИЋ ТОМИСЛАВ
+МАШИЋ ВЕРА
+МАШИЋ ВИКТОР
+МАШИЋ ВУЧЕТА
+МАШИРЕВИЋ ГОРДАНА
+МАШИРЕВИЋ СТЕВАН
+МАШКОВИЋ НОВИЦА
+МАШКОВИЋ ЗОРАН
+МАШТРАПОВИЋ ДРАГОЉУБ
+МАШУЛОВИЋ ЈАСМИНА
+МАШУЛОВИЋ ЈОВАНКА
+МАЋАШ СТЕВАН
+МАЋАШ ВАСА
+МАЋАШЕВ АЛЕКСАНДАР
+МАЋАШЕВ БРАНИСЛАВ
+МАЋАШЕВ ДАНИЛО
+МАЋАШЕВИЋ ВЛАДИМИР
+МАЋЕШИЋ ЈОСИП
+МАЋЕШИЋ МИХАИЛО
+МАЋКО ЈОЖЕФ
+МАЋКО ВИЛМОШ
+МАЖИЋ ЂОРЂЕ
+МАЖИЋ ДРАГИША
+МАЖИЋ МИРА
+МАЖИЋ ПЕТАР
+МАЖИЋ РУЖА
+МАЖИБРАДА ВАСО
+МАЖИБРАДА-ВУГРИН МАРТА ДИПЛ ИНГ
+МАЂАР БОЖИДАР
+МАЂАР ЕРЖЕБЕТ
+МАЂАР ЈОВАН
+МАЂАР ЈОВАН
+МАЂАР ЛАДИСЛАВ
+МАЂАР СТЕВАН
+МАЂАРЕВИЋ АЛЕКСАНДАР
+МАЂАРЕВИЋ ИВАН
+МАЂАРЕВИЋ КОСТА
+МАЂАРЕВИЋ МИЛЕ
+МАЂАРЕВИЋ МИЛОШ
+МАЂАРЕВИЋ СПАСОЈЕ
+МАЂАРЕВИЋ ЗОРИЦА
+МАЂАРИ АНДОР
+МАЂИСТОРОВ ВЛАДИМИР
+МАЦАК ПАВЛЕ
+МАЦАК ВЛАДИМИР
+МАЦАНОВИЋ ДУШАН
+МАЦАНОВИЋ ЈЕЛЕНА
+МАЦАНОВИЋ ЈЕВРОСИМА
+МАЦАНОВИЋ ЈОВАН
+МАЦАНОВИЋ МИЛОШ
+МАЦАНОВИЋ РАТКО
+МАЦЕДОНИЋ БОГДАН ДР
+МАЦЕДОНИЋ ГОРДАНА
+МАЦЕДОНИЋ СТАНИМИР
+МАЦЕДОНИЋ ВЛАДИМИР
+МАЦКО ЂУРА
+МАЦКО АНА
+МАЦНЕР ДАВОР
+МАЦУРА ЧЕДО
+МАЦУРА ЂОРЂЕ
+МАЦУРА ДОБРИНКА
+МАЦУРА ДРАГО
+МАЦУРА ЛИДИЈА
+МАЦУРА МИЛОШ
+МАЦУРА МИЛОРАД
+МАЦУРА МИРОСЛАВ
+МАЦУРА ПЕТАР
+МАЦУРА ТЕОДОР
+МАЦУТ МИЛОШ
+МАЏАР БОРИСЛАВ
+МАЏАР МИЛОРАД
+МАЏАР МИРКО
+МАЏАРАЦ ЧЕДОМИР
+МАЏАРАЦ ДУШАН ДИПЛ ИНГ
+МАЏАРЕВ ДУШАН
+МАЏАРЕВ МИЛАНКА
+МАЏАРЕВИЋ ЖИВОРАД
+МАЏАРЕВИЋ ЂОРЂЕ
+МАЏАРЕВИЋ БИСЕРКА
+МАЏАРЕВИЋ МАРКО
+МАЏАРЕВИЋ САВА
+МАЏГАЉ МИЛЕНКО
+МАЏГАЉ СЛОБОДАН
+МАЏОВСКИ САНДЕ
+МАДАЧИ МАРИЈА
+МАДАЦКИ АНТАЛ
+МАДАЦКИ ЈАН
+МАДАЦКИ ЈОСИП
+МАДАЦКИ КАРЛО
+МАДАРАС АНДРАШ
+МАДАРАС АРПАД
+МАДАРАС МАЋАШ
+МАДАРАС МАРИЈА
+МАДАРАС РОЗАЛИЈА
+МАДИ ЂУРИЦА
+МАДИ ЈОЖЕФ
+МАДИЋ БОЖИДАР ДИПЛ ИНГ
+МАДИЋ МАРИЈАН
+МАДИЋ МИЛИСАВ
+МАДОНИЋ СТЈЕПАН
+МАДОВ ИЛИЈА
+МАГАРАШЕВИЋ АНАМАРИЈА
+МАГАРАШЕВИЋ БОРИВОЈ
+МАГАРАШЕВИЋ КАТАРИНА
+МАГАРАШЕВИЋ МИРКО
+МАГАРАШЕВИЋ НАДА
+МАГДА КЛАРА
+МАГДАЛЕНИЋ ВЕРЈОВ
+МАГДИЋ ТОМИСЛАВ
+МАГДУ ЈОН ДИПЛ ИНГ
+МАГДУ ЛИА
+МАГДУ РОДИКА ЛЕКАР
+МАГИЋ НИКОЛА
+МАГЛАЈЛИЋ САБРИЈА
+МАГЛИЋ ЈОВАН
+МАГЛИНСКИ БОРИСЛАВ ДИПЛ ПРАВНИК
+МАГЛОВ АЛЕКСАНДАР
+МАГЛОВ ДРАГОЉУБ
+МАГЛОВ ДУШАН
+МАГЛОВСКИ ДУШКО
+МАГЛОВСКИ ЈОСИП
+МАГЛОВСКИ МАРГИТА
+МАГЛОВСКИ МИЛИЦА
+МАГЛОВСКИ МИРОСЛАВ
+МАГЛОВСКИ СТЕВАН
+МАГЛОВСКИ СТЕВАН
+МАГОЧ ФРАЊА
+МАГОЧ ЈУЛИЈАН
+МАГОЧ МИРОЊ
+МАГОШ ШАНДОР
+МАГОШ ЈЕЛИСАВЕТА
+МАГОШ ЈУЛИЈАНА
+МАГОШ МАРИЈА
+МАГУРА ТОМА
+МАХЂИК ЕЛЕНА
+МАХАЧИ ЈАНОШ
+МАХМУТИ МАХМУТ
+МАХМУТИ ЗУЗАНА
+МАХОВАЦ МИЛОРАД
+МАИЦХЕР ЂОРЂЕ
+МАЈШАИ ФЕРЕНЦ
+МАЈШАИ КЛАРА
+МАЈДАНЧЕВИЋ МИТАР
+МАЈДАНАЦ ДРАГИЊА
+МАЈДАНЏИЋ ЈОЗО
+МАЈДАНЏИЋ ПЕРИЦА
+МАЈДАНЏИЋ ПЕТАР
+МАЈДЕВАЦ ЖИВКО ДР
+МАЈДЕВАЦ РАДОВАН
+МАЈЕР ШАНДОР
+МАЈЕР ЕДУАРД
+МАЈЕР ЈАНОШ
+МАЈЕР ЈОВАН
+МАЈЕР КАТИЦА
+МАЈЕР МАРИЈА
+МАЈЕР НИКОЛА
+МАЈЕР ПЕТАР
+МАЈЕР СТЕВАН
+МАЈЕРСКИ ШТЕФАН
+МАЈЕТИЋ АНТОН
+МАЈЕТИЋ МАРИЈА
+МАЈЕТИЋ НИКОЛА
+МАЈИЋ СТЕВАН
+МАЈИЋ ВЕСНА
+МАЈИЋ ЗОРАН
+МАЈИЋ ЗОРАН
+МАЈИН ЕФИМИЈА
+МАЈИН МИОДРАГ
+МАЈИНСКИ ЗОРА
+МАЈКИЋ АЛЕКСАНДРА
+МАЈКИЋ БОГДАН
+МАЈКИЋ БОГДАН
+МАЈКИЋ ДРАГАН
+МАЈКИЋ ИЛИЈА
+МАЈКИЋ ИВАНКА
+МАЈКИЋ ЈОЦА
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИРОСЛАВ
+МАЈКИЋ НИКОЛА
+МАЈКИЋ ОБРАД
+МАЈКИЋ РАДЕ
+МАЈКИЋ РАДОЈКА
+МАЈКИЋ СТОЈАНКА
+МАЈКИЋ ВЕЉКО
+МАЈКИЋ ВЛАДО
+МАЈКИЋ ЗДРАВКО
+МАЈКИЋ ЗОРАН
+МАЈКСНЕР ЂОРЂЕ
+МАЈОР ЂУРА
+МАЈОР АНА
+МАЈОР ФЕРЕНЦ ДР ИНГ
+МАЈОР ЈОЖЕФ
+МАЈОР ЈОЖЕФ
+МАЈОР КАРОЉ
+МАЈОР КАРОЉ
+МАЈОР МАРГИТА
+МАЈОР МАРИЈА
+МАЈОР МАРИЈА
+МАЈОР НАНДОР
+МАЈОР СТЕВАН
+МАЈОРЧИК ФРАЊА
+МАЈОРОШ БЕЛА ДР
+МАЈОРОШ ДЕЖЕ
+МАЈОРОШ ЈОВАН
+МАЈОРОШ ЛАЈОШ
+МАЈОРОШ СТЕВАН
+МАЈОРОШ ТЕРЕЗИЈА
+МАЈОРОШИ-ДЕУРА МАРИЈА
+МАЈОРОШИ ИМРЕ
+МАЈСКИ ЈЕЛИЦА
+МАЈСКИ ЈОВАН
+МАЈСКИ МИЛАН
+МАЈСКИ НИКОЛА
+МАЈСКИ СЛАВКО
+МАЈСКИ ВЕСНА
+МАЈСТОРАЦ ДРАГАН
+МАЈСТОРАЦ ЉУБОМИР
+МАЈСТОРАЦ ПЕТАР
+МАЈСТОРАЦ САВО
+МАЈСТОРОВ ЉУБИША
+МАЈСТОРОВ ВЛАДИМИР
+МАЈСТОРОВИЋ ЂУРАЂ
+МАЈСТОРОВИЋ АНЂА
+МАЈСТОРОВИЋ АНКА
+МАЈСТОРОВИЋ БОГДАН
+МАЈСТОРОВИЋ БОРИВОЈ
+МАЈСТОРОВИЋ БОРИВОЈ
+МАЈСТОРОВИЋ ДАРКО
+МАЈСТОРОВИЋ ДРАГАН
+МАЈСТОРОВИЋ ДРАГОМИР
+МАЈСТОРОВИЋ ДУШАН
+МАЈСТОРОВИЋ ДУШКО
+МАЈСТОРОВИЋ ГОРДАНА
+МАЈСТОРОВИЋ КАТИЦА
+МАЈСТОРОВИЋ-КОСТИЋ ВЕСНА
+МАЈСТОРОВИЋ ЉИЉАНА
+МАЈСТОРОВИЋ МИЛАН
+МАЈСТОРОВИЋ МИЛАН
+МАЈСТОРОВИЋ МИЛИЦА
+МАЈСТОРОВИЋ НЕЂО
+МАЈСТОРОВИЋ НЕБОЈША
+МАЈСТОРОВИЋ НЕВЕНКА
+МАЈСТОРОВИЋ НИКОЛА
+МАЈСТОРОВИЋ ПЕТАР
+МАЈСТОРОВИЋ РАДОСЛАВ
+МАЈСТОРОВИЋ САВКА
+МАЈСТОРОВИЋ СИМА
+МАЈСТОРОВИЋ СЛОБОДАН
+МАЈСТОРОВИЋ СВЕТЛАНА
+МАЈСТОРОВИЋ ТЕОДОР
+МАЈСТОРОВИЋ УРОШ
+МАЈСТОРОВИЋ ВАСА
+МАЈСТОРОВИЋ ВИТОМИР
+МАЈСТОРОВИЋ ВУКАШИН
+МАЈСТОРОВИЋ ВУКОСАВА
+МАЈТАН ЂОРЂЕ ДИПЛ ИНГ
+МАЈТАН КАРЛО
+МАЈТАН МИХАЈЛО
+МАЈТАН ПАВЛЕ
+МАК АНДРИЈА
+МАК ЈОСИПА
+МАК ОСКАР
+МАКША АНА
+МАКША ЈОВАН
+МАКША КАРЛО
+МАКША ПЕТАР
+МАКАЈИ ЈАКОВ
+МАКАЈИ ЈАНКО
+МАКАН ЈАН
+МАКАЊИЋ БОЈАН
+МАКАЊИЋ МИЛИСАВ
+МАКАРИЋ НАДА
+МАКАРИЋ СТЕВАН
+МАКАРИЋ ВИДА
+МАКАРИЋ ЗОРАН
+МАКАРИН ЖАРКО
+МАКАРИН ЗВОНИМИР ДИПЛ ИНГ
+МАКИШ РУЖА
+МАКИШ ВЛАТКО
+МАКИТАН ЈОВАН
+МАКИВИЋ МИХАЈЛО
+МАКИВИЋ МИЛОШ
+МАКИВИЋ САВА
+МАКИВИЋ СТАНИСЛАВ
+МАКЈИ ЗДЕНКА
+МАКЛЕНОВИЋ РАДА
+МАКЉЕНОВИЋ СРБОЉУБ
+МАКЉЕНОВИЋ ЗОРАН
+МАКО ШАНДОР
+МАКО ФРАЊА
+МАКО ЈУЛИЈАНА
+МАКО МИЛЕНА
+МАКОХ АНТОН
+МАКРА АНА
+МАКРА ИВАН
+МАКРА ЈОСИП
+МАКРА КАТАРИНА
+МАКРИН МАРГИТА ДР
+МАКРИН РУЖИЦА
+МАКСИЋ ЖИВАНА
+МАКСИЋ ЂОРЂЕ
+МАКСИЋ БИЉАНА
+МАКСИЋ БОШКО
+МАКСИЋ БОЖИДАР
+МАКСИЋ ДАНИЦА
+МАКСИЋ ДЕЈАН
+МАКСИЋ ДМИТАР
+МАКСИЋ ДОБРИВОЈЕ
+МАКСИЋ ДРАГАН
+МАКСИЋ ДРАГАН
+МАКСИЋ ДРАГОМИР
+МАКСИЋ ДУШАН
+МАКСИЋ ЕДИТ
+МАКСИЋ ГАВРА
+МАКСИЋ ЈЕЛИЦА
+МАКСИЋ ЈЕЛИЦА
+МАКСИЋ ЈОВАНКА
+МАКСИЋ ЈОВАН
+МАКСИЋ ЈОВАН
+МАКСИЋ ЛУКА
+МАКСИЋ МАРИЈАНА
+МАКСИЋ МИЛАНА
+МАКСИЋ МИЛИЦА
+МАКСИЋ МИЛИЦА
+МАКСИЋ МИЛОРАД
+МАКСИЋ МИЛОРАД
+МАКСИЋ НИКОЛА
+МАКСИЋ РАДОСЛАВ
+МАКСИЋ РАТКО
+МАКСИЋ САВА
+МАКСИЋ СЛАВКО
+МАКСИЋ ВОЈИН
+МАКСИЋ ЗОРКА
+МАКСИМЧЕВ АНЂЕЛКО
+МАКСИМЧЕВ СТЕВАН
+МАКСИМОВ БРАНИСЛАВ
+МАКСИМОВ ЉУБОМИР
+МАКСИМОВ СЛОБОДАН
+МАКСИМОВ ВЕРА
+МАКСИМОВИЋ ЧЕДОМИР
+МАКСИМОВИЋ ЖИВОРАД
+МАКСИМОВИЋ ЂУРИЦА
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АНА
+МАКСИМОВИЋ АНКИЦА
+МАКСИМОВИЋ БОШКО
+МАКСИМОВИЋ БОРИВОЈЕ
+МАКСИМОВИЋ БОРИВОЈ
+МАКСИМОВИЋ БРАНИСЛАВ
+МАКСИМОВИЋ БРАНКА
+МАКСИМОВИЋ ЦВИЈЕТИН
+МАКСИМОВИЋ ДАНИЦА
+МАКСИМОВИЋ ДАРКО
+МАКСИМОВИЋ ДИМИТРИЈЕ
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГИЋ
+МАКСИМОВИЋ ДРАГОСЛАВ
+МАКСИМОВИЋ ДУШАН МР ОЕЦ
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ИВАНКА
+МАКСИМОВИЋ ИВАН
+МАКСИМОВИЋ ЈАКОВ
+МАКСИМОВИЋ ЈЕЛИСАВЕТА
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ КАТАРИНА
+МАКСИМОВИЋ КАТИЦА
+МАКСИМОВИЋ ЛАЗАР
+МАКСИМОВИЋ ЛАЗА
+МАКСИМОВИЋ ЛЕНКА
+МАКСИМОВИЋ ЉУБИША
+МАКСИМОВИЋ ЉУБИША
+МАКСИМОВИЋ ЉУБИЦА
+МАКСИМОВИЋ ЉУБИЦА
+МАКСИМОВИЋ ЛУКА
+МАКСИМОВИЋ МАРКО
+МАКСИМОВИЋ МИЛАН ДИПЛ ИНГ
+МАКСИМОВИЋ МИЛАНА
+МАКСИМОВИЋ МИЛАН
+МАКСИМОВИЋ МИЛЕНКО
+МАКСИМОВИЋ МИЛЕНКО
+МАКСИМОВИЋ МИЛИНА
+МАКСИМОВИЋ МИЛОРАД
+МАКСИМОВИЋ МИЛУТИН
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИРОСЛАВ
+МАКСИМОВИЋ МЛАДЕН
+МАКСИМОВИЋ НАДА
+МАКСИМОВИЋ НАТАЛИЈА
+МАКСИМОВИЋ НИКОЛА
+МАКСИМОВИЋ НИКОЛА
+МАКСИМОВИЋ ПЕТАР
+МАКСИМОВИЋ ПРЕДРАГ
+МАКСИМОВИЋ РАДМИЛА
+МАКСИМОВИЋ РАДОВАНКА
+МАКСИМОВИЋ РАДО
+МАКСИМОВИЋ РАНЂЕЛ
+МАКСИМОВИЋ РИСТО
+МАКСИМОВИЋ САВА
+МАКСИМОВИЋ САВО
+МАКСИМОВИЋ СЛАВОЉУБ
+МАКСИМОВИЋ СРЕЋКО
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВИЦА
+МАКСИМОВИЋ СВЕТОМИР
+МАКСИМОВИЋ ТИХОМИР
+МАКСИМОВИЋ ТИНКА
+МАКСИМОВИЋ ТОМИСЛАВ
+МАКСИМОВИЋ ТОМИСЛАВ
+МАКСИМОВИЋ ВЕЛИЧКО
+МАКСИМОВИЋ ВЕЛИМИР
+МАКСИМОВИЋ ВЛАДИМИР
+МАКСИМОВИЋ ЗЛАТА
+МАКСИМОВИЋ ЗОРАН
+МАКСИМОВСКИ ЂОРЂЕ
+МАКСИМОВСКИ ВОЈО
+МАКСИН СЛАВКА
+МАКУХ МИХАИЛО
+МАКУХ МИХАЈЛО
+МАКУХ ВЛАДИМИР
+МАЛЧИЋ АНДРИЈА ДИПЛ ИНГ
+МАЛЧИЋ АНДРИЈА
+МАЛЧИЋ ЈОЖЕФ
+МАЛЧИЋ ЈУЛКА
+МАЛЧИЋ НИКОЛА
+МАЛАШЕВИЋ МИЛУТИН
+МАЛАЦКО ЈУЛИЈАН
+МАЛАЦКО ЉУБИЦА
+МАЛАЕНИЋ ДРАГАН
+МАЛАВРАЗИЋ ЈОВАН
+МАЛБАША БОРИСЛАВА
+МАЛБАША ДРАГОЉУБ
+МАЛБАША ДУШАНКА
+МАЛБАША ЈЕЛКА
+МАЛБАША МИЛАН
+МАЛБАША МИЛЕ
+МАЛБАША ВЕЉКО
+МАЛБАША ЗДРАВКО
+МАЛБАШИЋ БОШКО
+МАЛБАШИЋ ДРАГАН
+МАЛБАШИЋ ЈАНКО
+МАЛБАШИЋ МИЋО
+МАЛБАШИЋ РУЖА
+МАЛБАШКИ ДУШАН
+МАЛБАШКИ-ЈАНКОВ АНЂА
+МАЛБАШКИ МАРИЈА
+МАЛБАШКИ МИЛИНКА
+МАЛЕШ АНЂЕЛКА
+МАЛЕШ БОРА
+МАЛЕШ ДМИТАР
+МАЛЕШ ЈЕЛЕНА
+МАЛЕШ ЈОВАНКА
+МАЛЕШ КОСТА
+МАЛЕШ ЉИЉАНА
+МАЛЕШ МАРИНКО
+МАЛЕШ НОВАК
+МАЛЕШ РАДОМИР
+МАЛЕШ РУЖИЦА
+МАЛЕШ СТАНА
+МАЛЕШ СВЕТЛАНА
+МАЛЕШ ВАСО
+МАЛЕШ ВОЈИСЛАВ
+МАЛЕШ ЗОРА
+МАЛЕШЕВ ЖИВКО
+МАЛЕШЕВ ЖИВОЈИН
+МАЛЕШЕВ ЂОРЂЕ
+МАЛЕШЕВ БОШКО
+МАЛЕШЕВ БОРИСЛАВ
+МАЛЕШЕВ БРАНКО
+МАЛЕШЕВ ДАМЈАН
+МАЛЕШЕВ ДАМЈАН
+МАЛЕШЕВ ДИМИТРИЈЕ
+МАЛЕШЕВ ДРАГАНА
+МАЛЕШЕВ ДРАГОЉУБ
+МАЛЕШЕВ ДРАГОЉУБ
+МАЛЕШЕВ ДУШАН
+МАЛЕШЕВ ЈЕЛИЦА
+МАЛЕШЕВ ЈОВАН
+МАЛЕШЕВ КОСАНА
+МАЛЕШЕВ ЛАЗАР
+МАЛЕШЕВ ЉУБИЦА
+МАЛЕШЕВ ЉУБИНКО
+МАЛЕШЕВ ЉУБОМИР
+МАЛЕШЕВ ЛУКА
+МАЛЕШЕВ МАРИЈА
+МАЛЕШЕВ МИЛЕНКО
+МАЛЕШЕВ МИЛЕВА
+МАЛЕШЕВ МИЉА
+МАЛЕШЕВ МИЛОШ
+МАЛЕШЕВ МИОДРАГ
+МАЛЕШЕВ МИОДРАГ
+МАЛЕШЕВ МИРОСЛАВ
+МАЛЕШЕВ МИРОСЛАВ
+МАЛЕШЕВ ПЕТАР
+МАЛЕШЕВ ПЕТАР
+МАЛЕШЕВ ПРЕДРАГ
+МАЛЕШЕВ ПРЕДРАГ
+МАЛЕШЕВ ПРИЗРЕНКА
+МАЛЕШЕВ СЛАВКО
+МАЛЕШЕВ ТАМАРА
+МАЛЕШЕВ ВЕРА
+МАЛЕШЕВ ВИТОМИР
+МАЛЕШЕВИЋ ЖИВАН
+МАЛЕШЕВИЋ ЖИВКА
+МАЛЕШЕВИЋ ЂУКА
+МАЛЕШЕВИЋ АЛЕКСАНДРА
+МАЛЕШЕВИЋ ДИМИТРИЈЕ
+МАЛЕШЕВИЋ ДРАГАНА
+МАЛЕШЕВИЋ ДРАГАН
+МАЛЕШЕВИЋ ДУШКО
+МАЛЕШЕВИЋ ГОЈКО
+МАЛЕШЕВИЋ ИВАН
+МАЛЕШЕВИЋ ЈОВАН
+МАЛЕШЕВИЋ ЈОВАН
+МАЛЕШЕВИЋ ЛАЗАР
+МАЛЕШЕВИЋ ЉУБИЦА
+МАЛЕШЕВИЋ МАРИЈА
+МАЛЕШЕВИЋ МАРКО
+МАЛЕШЕВИЋ МИЛЕ
+МАЛЕШЕВИЋ МИЛИЦА
+МАЛЕШЕВИЋ МИЛОШ
+МАЛЕШЕВИЋ МИРКО
+МАЛЕШЕВИЋ МИРОСЛАВ
+МАЛЕШЕВИЋ МЛАДЕН
+МАЛЕШЕВИЋ НАДА
+МАЛЕШЕВИЋ НЕДЕЉКО
+МАЛЕШЕВИЋ НИКИЦА
+МАЛЕШЕВИЋ ПЕТАР
+МАЛЕШЕВИЋ ПЕТАР
+МАЛЕШЕВИЋ САВКО ЛОКАЛ
+МАЛЕШЕВИЋ СЛОБОДАНКА ДР
+МАЛЕШЕВИЋ ВАСКРСИЈЕ
+МАЛЕШЕВИЋ ВЛАДИМИР
+МАЛЕШЕВИЋ ВОЈИСЛАВА
+МАЛЕЦКИ БЛАЖ
+МАЛЕНЧИЋ ЂОРЂЕ
+МАЛЕНЧИЋ ГАВРИЛО
+МАЛЕНЧИЋ МАРИЈА
+МАЛЕНЧИЋ НИКОЛА
+МАЛЕНЧИЋ РОДОЉУБ
+МАЛЕНЧИЋ РУЖИЦА
+МАЛЕНИЋ ЛАЗАР
+МАЛЕНИЋ РУЖА
+МАЛЕНИЋ СИМА
+МАЛЕНИЋ ТОМИСЛАВ
+МАЛЕНИЦА ЂУРО
+МАЛЕНИЦА АНТУН
+МАЛЕНИЦА ДРАГО
+МАЛЕНИЦА ИВАН
+МАЛЕНИЦА МАРКО
+МАЛЕНКОВИЋ ЂОРЂЕ
+МАЛЕНКОВИЋ МИЛОШ ДР
+МАЛЕНКОВИЋ ВЛАДИМИР
+МАЛЕНОВИЋ МИРОСЛАВ
+МАЛЕР КРИШТОФ
+МАЛЕРТ ВЕНДЕЛ
+МАЛЕТАШКИ ЕВИЦА
+МАЛЕТИЋ-ШРЕК МАРИЈА
+МАЛЕТИЋ-ШРЕК МАРИЈА
+МАЛЕТИЋ ЖАРКО
+МАЛЕТИЋ ЖИВАНКА
+МАЛЕТИЋ ЖИВКО
+МАЛЕТИЋ ЂОРЂЕ ДИПЛ ИНГ
+МАЛЕТИЋ ЂОРЂЕ
+МАЛЕТИЋ ЂОРЂЕ
+МАЛЕТИЋ БОСИЉКА
+МАЛЕТИЋ ДРАГОСЛАВ
+МАЛЕТИЋ ДРАГО
+МАЛЕТИЋ ЈЕЛИЦА
+МАЛЕТИЋ ЈОВАНКА
+МАЛЕТИЋ ЈОВАН
+МАЛЕТИЋ ЛАУРА
+МАЛЕТИЋ ЛАЗАР
+МАЛЕТИЋ ЛАЗАР
+МАЛЕТИЋ ЛУКА
+МАЛЕТИЋ МАРИЦА
+МАЛЕТИЋ МИЛЕНКО
+МАЛЕТИЋ МИЛОМИР
+МАЛЕТИЋ МИОДРАГ
+МАЛЕТИЋ МИОМИР
+МАЛЕТИЋ НАДА
+МАЛЕТИЋ НЕДЕЉКО
+МАЛЕТИЋ НИКОЛА
+МАЛЕТИЋ ПАЈА
+МАЛЕТИЋ РАДИВОЈ
+МАЛЕТИЋ РАДОСЛАВ
+МАЛЕТИЋ РАДОСЛАВ
+МАЛЕТИЋ САВА
+МАЛЕТИЋ САВО
+МАЛЕТИЋ СЛАВИЦА
+МАЛЕТИЋ СЛОБОДАНКА
+МАЛЕТИЋ СЛОБОДАН
+МАЛЕТИЋ СРБОЉУБ
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СВЕТОЗАР
+МАЛЕТИЋ СВЕТОЗАР
+МАЛЕТИЋ ТАМАРА
+МАЛЕТИЋ ВЕКОСЛАВ
+МАЛЕТИЋ ВЈЕРА
+МАЛЕТИЋ ВЈЕРА
+МАЛЕТИЋ ЗЛАТКО
+МАЛЕТИН ЧАРНА ДИПЛ ИНГ
+МАЛЕТИН ЖИВКО
+МАЛЕТИН ЂОРЂЕ
+МАЛЕТИН ЂОРЂЕ
+МАЛЕТИН ЂУРА
+МАЛЕТИН ЂУРИЦА
+МАЛЕТИН АЛЕКСАНДАР
+МАЛЕТИН БОШКО
+МАЛЕТИН БОЖАНА
+МАЛЕТИН ДАНИЦА
+МАЛЕТИН ДАРИНКА
+МАЛЕТИН ДРАГИША
+МАЛЕТИН ДУШАН
+МАЛЕТИН ДУШАН
+МАЛЕТИН ГОРАН
+МАЛЕТИН ЈАНА
+МАЛЕТИН ЈЕЛЕНА
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЉУБОМИР
+МАЛЕТИН МАРИЈА
+МАЛЕТИН МАРИЈА
+МАЛЕТИН МИЛАНКА
+МАЛЕТИН МИЛАН
+МАЛЕТИН МИЛАН
+МАЛЕТИН МИЛОШ
+МАЛЕТИН МИЛОВАН
+МАЛЕТИН МИРКО
+МАЛЕТИН ПАЈА
+МАЛЕТИН ПАВЛЕ
+МАЛЕТИН РАДА
+МАЛЕТИН РАДИВОЈЕ
+МАЛЕТИН РУЖИЦА
+МАЛЕТИН СЛАВИЦА
+МАЛЕТИН СЛАВКО
+МАЛЕТИН СПОМЕНКА
+МАЛЕТИН СТЕВАН
+МАЛЕТИН СТЕВАН
+МАЛЕТИН СВЕТОЗАР
+МАЛЕТИН СВЕТОЗАР
+МАЛЕТИН ТИМА
+МАЛЕТИН ТОДОР
+МАЛЕТИН ТОДОР
+МАЛЕТИН ВАСА
+МАЛЕТИН ВИТОМИР
+МАЛЕТИН ВОЈИСЛАВ
+МАЛЕТИН ЗОРА
+МАЛЕТИН ЗОРА
+МАЛЕВИЋ ВЛАДИМИР
+МАЛИ ЖИВАН
+МАЛИ ЖИВКО
+МАЛИ ДАМЈАН
+МАЛИ ДРАГА
+МАЛИ ЕЛЕОНОРА
+МАЛИ ГОРАН
+МАЛИ ЈОВАН
+МАЛИ КРИСТИФОР
+МАЛИ ЉУБИЦА
+МАЛИ ЉУБОМИР
+МАЛИ МИЛОШ
+МАЛИ МИОДРАГ
+МАЛИ САВА
+МАЛИ СТАНИМИР
+МАЛИ ВОЈИСЛАВ
+МАЛИЧЕВИЋ ЂОРЂЕ
+МАЛИЧЕВИЋ РАДИВОЈЕ
+МАЛИЧИЋ МИЛОШ
+МАЛИЧИЋ ВОЈИСЛАВ
+МАЛИЋ ЖАРКО
+МАЛИЋ БИЉАНА
+МАЛИЋ БОЖАНА
+МАЛИЋ ЦВИЈЕТИН
+МАЛИЋ МИЛАН
+МАЛИЋ МИЛЕНКО
+МАЛИЋ МИТАР
+МАЛИЋ МЛАДЕН
+МАЛИЋ НОВАК
+МАЛИЋ ПРЕДРАГ
+МАЛИЋ РАДИВОЈ
+МАЛИЋ РАТКО
+МАЛИЋ СЛАВКО
+МАЛИЋ СОФИЈА
+МАЛИЋ СТОЈАН
+МАЛИЋ СТОЈА
+МАЛИЋ УРОШ
+МАЛИЋ ВУКИЦА
+МАЛИЏА ЖЕЉКО
+МАЛИЏАН БЛАЖО
+МАЛИКОВИЋ ДУШАН
+МАЛИН ЂУРА
+МАЛИН ИЛИЈА
+МАЛИН МИЛИЦА
+МАЛИН ОЛГА
+МАЛИН СТАНИСЛАВ
+МАЛИН ТАТЈАНА
+МАЛИНАР ЈЕЛЕНА
+МАЛИНИЋ СПАСОЈЕ
+МАЛИНОВИЋ АНЂА
+МАЛИНОВИЋ АНКИЦА
+МАЛИНОВИЋ АНКИЦА
+МАЛИНОВИЋ БОЖО
+МАЛИНОВИЋ БОГДАН
+МАЛИНОВИЋ БОГДАН
+МАЛИНОВИЋ ДАНИЦА
+МАЛИНОВИЋ ДРАГАН
+МАЛИНОВИЋ ДРАГИЊА
+МАЛИНОВИЋ ДРАГОЉУБ
+МАЛИНОВИЋ ЈОВО
+МАЛИНОВИЋ МАРИНКО
+МАЛИНОВИЋ НЕДЕЉКО
+МАЛИНОВИЋ НЕДЕЉКО
+МАЛИНОВИЋ САВО
+МАЛИНОВИЋ СИНИША
+МАЛИНОВИЋ СЛАВИЦА
+МАЛИНОВИЋ СТЕВАН
+МАЛИНОВИЋ ВЕЉКО
+МАЛИВУК БОЖАНА
+МАЛИВУК ДУШАН
+МАЛИВУК МИЛАН
+МАЛИВУК НИКОЛА
+МАЛИВУК ПАВЛЕ
+МАЛИВУК СВЕТИСЛАВ
+МАЉА МОРИНА
+МАЉИК СТЕВА
+МАЉКОВИЋ ЂУРО
+МАЉКОВИЋ БРАНКО
+МАЉКОВИЋ БРАНКО
+МАЉКОВИЋ-ЏУКЛЕВСКИ АНА
+МАЉКОВИЋ МАРКО
+МАЉКОВИЋ МИЛАН
+МАЉКОВИЋ МИЛАН
+МАЉКОВИЋ НЕВЕНКА
+МАЉКОВИЋ НИКОЛА
+МАЉКОВИЋ РАНКА
+МАЉКОВИЋ ВЕРА
+МАЛКИЋ ГОРДАН
+МАЛКИЋ ЉУБИША
+МАЛКИЋ СТАНА
+МАЛМЕР АНДРИЈА
+МАЛМЕР АНДРИЈА
+МАЛНАР ДРАГУТИН
+МАЛНАР ЈОСИП
+МАЛОЧИЋ МИЛАН
+МАЛОЧИЋ МИЛОРАД
+МАЛОБАБИЋ ЉУБАН
+МАЛОБАБИЋ МАРКО
+МАЛОБАБИЋ МИРОСЛАВ
+МАЛОБАБИЋ НОВИЦА
+МАЛОБАБИЋ РАДЕ
+МАЛОГАЈСКИ БОРИСЛАВ
+МАЛОГАЈСКИ СТЕВАН
+МАЛОТИЋ САВО
+МАЛОВАШИЋ МАРИЈА
+МАЛОВИЋ БОГДАН
+МАЛОВИЋ РАДМИЛА
+МАЛОВИЋ СТАНИША
+МАЛОВРАЗИЋ ГОЈКО
+МАЛОВРАЗИЋ ГОЈКО
+МАЛУЦКОВ БОГДАН
+МАЛУЦКОВ ДАНИЦА
+МАЛУЦКОВ ЈОВАН
+МАЛУЦКОВ МАРИЈА
+МАЛУЦКОВ МИОДРАГ ДИПЛ ИНГ
+МАЛУЦКОВ РАДОВАН ДР ЛЕКАР
+МАЛУЦКОВ СЛОБОДАН
+МАЛУЦКОВ СТЕВАН
+МАЛУЦКОВ ЗОРКА
+МАМИЋ ИВАН
+МАМИЋ ЈОЗО
+МАМУЖИЋ ИВАН ДИПЛ ИНГ
+МАМУЖИЋ ИВАН
+МАМУЖИЋ ИВАН
+МАМУЛА ДУШАН
+МАМУЛА МЛАДЕНКА
+МАМУЛА ПАВЛЕ
+МАМУЛА РУЖА
+МАМУТОВИЋ МИЛАН
+МАМУТОВИЋ МИЛАН
+МАМУТОВИЋ РАДИВОЈ
+МАМУЗИЋ БОГДАНКА
+МАНЧЕВ НИКОЛА
+МАНЧЕВСКИ КАТА
+МАНЧЕВСКИ СТЕВАН
+МАНЧИЋ АРАНКА
+МАНЧИЋ ДРАГАН ДР
+МАНЧИЋ КАТА
+МАНЧИЋ НИКОЛА
+МАНЧИЋ САША
+МАНЧИЋ СЛОБОДАН
+МАНЧИЋ СВЕТОЗАР
+МАНЧУ ЂОРЂЕ
+МАНЧУ ДРАГИЊА
+МАНЧУ ДУШАН
+МАНЧУ МИЛАН
+МАНЧУ МИЛАН
+МАНЧУ МИЛОШ
+МАНЧУ МИЛОШ
+МАНЧУ НЕНАД
+МАНЧУ СТЕВАН
+МАНЧУ СВЕТОЗАР
+МАНЧУ ВИКТОР
+МАНАСИЈЕВИЋ ГЕРАСИМ
+МАНАСТИРАЦ ДАМЈАН
+МАНАСТИРАЦ ЉУБИША
+МАНЦ СТЕВАН
+МАНЦЕДЕР ЂУРА
+МАНЏУКИЋ МИОДРАГ
+МАНЏУКОВИЋ ВЕЛИМИР
+МАНДАРИН НАТАША
+МАНДЕК ФИЛИП
+МАНДЕЛЦ ЉУБИЦА
+МАНДИЋ ЧАВА
+МАНДИЋ ЖИВКО
+МАНДИЋ ЂОРЂЕ
+МАНДИЋ ЂОРЂЕ
+МАНДИЋ ЂУРА
+МАНДИЋ ЂУРИЦА
+МАНДИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+МАНДИЋ АЛЕКСАНДАР
+МАНДИЋ БОШКО
+МАНДИЋ БОГДАН
+МАНДИЋ БОРИСЛАВА
+МАНДИЋ БОРИСЛАВ
+МАНДИЋ БРАНИСЛАВ
+МАНДИЋ ЦВИЈЕТА
+МАНДИЋ ДАНИЦА
+МАНДИЋ ДАРА
+МАНДИЋ ДЕЛФИНА
+МАНДИЋ ДЕНЕШ
+МАНДИЋ ДОБРИЛА
+МАНДИЋ ДРАГАНА
+МАНДИЋ ДРАГАН
+МАНДИЋ ДРАГОСЛАВ
+МАНДИЋ ДРАГО
+МАНДИЋ ДРАГО
+МАНДИЋ ДРАГУТИН
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАН
+МАНДИЋ ФРАЊА
+МАНДИЋ ИГЊАТ
+МАНДИЋ ИВАНКА
+МАНДИЋ ИВКА
+МАНДИЋ ЈОВАНКА
+МАНДИЋ-ЈОВАНОВИЋ ВИНКА
+МАНДИЋ ЈОВО
+МАНДИЋ ЈОВО
+МАНДИЋ КАТИЦА
+МАНДИЋ КОСТА
+МАНДИЋ КСЕНИЈА
+МАНДИЋ ЉИЉАНА
+МАНДИЋ ЉУБИЦА
+МАНДИЋ ЉУБОМИР
+МАНДИЋ МАНЕ
+МАНДИЋ МАНЕ
+МАНДИЋ МАРА
+МАНДИЋ МАРГИТА
+МАНДИЋ МАРИЈА
+МАНДИЋ МАРИЈА
+МАНДИЋ МАРИЈА
+МАНДИЋ МИКА
+МАНДИЋ МИЛАДИЈА
+МАНДИЋ МИЛАН ДИПЛ ИНГ
+МАНДИЋ МИЛАН
+МАНДИЋ МИЛЕНА
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛОЈЕ
+МАНДИЋ МИЛОЈКО ДР ЛЕКАР
+МАНДИЋ МИЛОРАД
+МАНДИЋ МИЛОРАД
+МАНДИЋ МИОДРАГ
+МАНДИЋ МИРОСЛАВ
+МАНДИЋ НАДА
+МАНДИЋ НАДА
+МАНДИЋ НЕЂО
+МАНДИЋ НЕЂО
+МАНДИЋ НЕДЕЉКО ДИПЛ ПРАВНИК
+МАНДИЋ НИКОЛА
+МАНДИЋ НИКОЛА
+МАНДИЋ НОВКА
+МАНДИЋ ПАНЕ
+МАНДИЋ ПЕРА
+МАНДИЋ ПЕТАР
+МАНДИЋ РАДЕНКО
+МАНДИЋ РАДИВОЈЕ
+МАНДИЋ РАДМИЛА
+МАНДИЋ РАДМИЛА
+МАНДИЋ РАДОЈКА
+МАНДИЋ РАДОМИР
+МАНДИЋ РАДОВАН
+МАНДИЋ РАДОВАН
+МАНДИЋ РАЈА
+МАНДИЋ СИНИША
+МАНДИЋ СЛАВКА
+МАНДИЋ СЛАВКО
+МАНДИЋ СЛОБОДАН
+МАНДИЋ СЛОБОДАН
+МАНДИЋ СНЕЖАНА
+МАНДИЋ СРЕТЕН
+МАНДИЋ СРЕТЕН
+МАНДИЋ СРЕТО
+МАНДИЋ СТЕВАН
+МАНДИЋ СВЕТКО
+МАНДИЋ СВЕТЛАНА
+МАНДИЋ ТЕРЕЗИЈА
+МАНДИЋ ТИБОР
+МАНДИЋ ТОМИСЛАВ
+МАНДИЋ ТОМИСЛАВ
+МАНДИЋ УРОШ ДИПЛ ОЕЦ
+МАНДИЋ ВАСИЛИЈЕ
+МАНДИЋ ВЕЛИЗАР
+МАНДИЋ ВЕРА
+МАНДИЋ ВИОЛЕТА
+МАНДИЋ ЗЛАТИЦА
+МАНДИЋ ЗОРАН
+МАНДИЋ ЗОРАН
+МАНДИЋ ЗОРИЦА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗВОНИМИР
+МАНДРАПА ЂУРО
+МАНДРИНО САНКА
+МАНЕСКИ БЛАГОЈА
+МАНЕВСКИ БРАНИСЛАВ
+МАНЕВСКИ ДУШАН
+МАНЕВСКИ РАДОСЛАВ
+МАНЕВСКИ ТРАЈКО ДР
+МАНЕВСКИ ВЕРА
+МАНГ БРАНКО
+МАНГЕР ЈОСИП
+МАНХАЈМ ЈОЖЕФ
+МАНИЋ АНКИЦА
+МАНИЋ БЛАНКА
+МАНИЋ БОЖИДАР
+МАНИЋ БРАНИСЛАВ
+МАНИЋ БРАНКО
+МАНИЋ БРАНКО
+МАНИЋ ДАНИЛО
+МАНИЋ ДРАГИША
+МАНИЋ МИЛОЈЕ
+МАНИЋ МИЛОЈЕ
+МАНИЋ МИЛОРАД
+МАНИЋ СЕВЕР ДИПЛ ПХ
+МАНИЋ СВЕТОМИР
+МАНИН ЂОРЂЕ
+МАЊА СРЕДОЈЕ
+МАЊА ЗДРАВКО
+МАЊАК ДРАГО
+МАЊЕНЧИЋ СЛОБОДАН
+МАЊУЛОВ ЛУКА
+МАНОЈЛОВ ИРЕНА
+МАНОЈЛОВ ИВАН
+МАНОЈЛОВ ЈОВАНКА
+МАНОЈЛОВИЋ ЧЕДОМИР
+МАНОЈЛОВИЋ ЧЕДО
+МАНОЈЛОВИЋ ЖАРКО
+МАНОЈЛОВИЋ ЖИВКО
+МАНОЈЛОВИЋ ЂОРЂЕ
+МАНОЈЛОВИЋ АЛЕКСАНДАР
+МАНОЈЛОВИЋ АЛЕКСАНДАР
+МАНОЈЛОВИЋ АЛЕКСА
+МАНОЈЛОВИЋ АНГЕЛИНА
+МАНОЈЛОВИЋ БИЉАНА
+МАНОЈЛОВИЋ БОСИЉКА
+МАНОЈЛОВИЋ БРАНИСЛАВ
+МАНОЈЛОВИЋ ДАРИНКА
+МАНОЈЛОВИЋ ДЕСАНКА
+МАНОЈЛОВИЋ ДОБРИЛА
+МАНОЈЛОВИЋ ДРАГАНА
+МАНОЈЛОВИЋ ДРАГИЦА
+МАНОЈЛОВИЋ ДУШАН
+МАНОЈЛОВИЋ ДУШАН
+МАНОЈЛОВИЋ ГРУЈИЦА
+МАНОЈЛОВИЋ ИЛИЈА
+МАНОЈЛОВИЋ ЈЕЛЕНА
+МАНОЈЛОВИЋ ЈОВАН
+МАНОЈЛОВИЋ КАТАРИНА
+МАНОЈЛОВИЋ КОВИЉКО
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЉУБИЦА
+МАНОЈЛОВИЋ ЉУБИЦА
+МАНОЈЛОВИЋ ЉУБОМИР
+МАНОЈЛОВИЋ МАЈА
+МАНОЈЛОВИЋ МАНОЈЛО
+МАНОЈЛОВИЋ МАНОЈЛО
+МАНОЈЛОВИЋ МАРИЈА
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛЕНКО
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОРАД
+МАНОЈЛОВИЋ МИЛОРАД
+МАНОЈЛОВИЋ МИОДРАГ
+МАНОЈЛОВИЋ МИОДРАГ
+МАНОЈЛОВИЋ МИРЈАНА
+МАНОЈЛОВИЋ МИРКО ДИПЛ ИНГ
+МАНОЈЛОВИЋ МИРКО
+МАНОЈЛОВИЋ МИРОСЛАВ
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ НЕНАД
+МАНОЈЛОВИЋ НИКОЛА
+МАНОЈЛОВИЋ ПЕТАР
+МАНОЈЛОВИЋ ПЕТАР
+МАНОЈЛОВИЋ РАДИВОЈ
+МАНОЈЛОВИЋ РАТКО
+МАНОЈЛОВИЋ САВА
+МАНОЈЛОВИЋ САВО
+МАНОЈЛОВИЋ СЛАВИЦА
+МАНОЈЛОВИЋ СЛОБОДАН
+МАНОЈЛОВИЋ СТАНИША ДР ПРОФ
+МАНОЈЛОВИЋ СТАНКО
+МАНОЈЛОВИЋ СТЕВАН
+МАНОЈЛОВИЋ СТЕВАН
+МАНОЈЛОВИЋ СВЕТОЗАР
+МАНОЈЛОВИЋ ТОША
+МАНОЈЛОВИЋ ВАНДА
+МАНОЈЛОВИЋ ВЕЛИСЛАВ
+МАНОЈЛОВИЋ ВЕРА
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРИЦА
+МАНОЈЛОВИЋ ЗВОНКО
+МАНУКОВ ОЛГА
+МАНУКОВ ТОДОР
+МАОДУШ АНА
+МАОДУШ ДАНИЦА
+МАОДУШ ЈОВО
+МАОДУШ МИОДРАГ
+МАОДУШ НИКОЛА
+МАОДУШ ПРЕДРАГ
+МАР ЕДВАРД
+МАРЧАК МИХАЈЛО
+МАРЧЕК МИЛАН
+МАРЧЕТА ЂУРА
+МАРЧЕТА БРАНКО
+МАРЧЕТА ДРАГИЦА
+МАРЧЕТА ДРАГИЦА
+МАРЧЕТА ЛАЗАР
+МАРЧЕТА МИЛАН
+МАРЧЕТА РАЈКО
+МАРЧЕТА СЛОБОДАН
+МАРЧЕТА СТЕВА
+МАРЧЕТА ВЕЛИМИР
+МАРЧЕТА ЗОРА
+МАРЧЕТИЋ ЦВЕТА
+МАРЧЕТИЋ ДРАГО
+МАРЧЕТИЋ МАРКО
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ НИКОЛА
+МАРЧЕТИЋ ОБРЕНИЈА
+МАРЧЕТИЋ ОЛБИНА
+МАРЧЕТИЋ ПЕРИЦА
+МАРЧЕТИЋ ПЕТАР
+МАРЧЕТИЋ ПЕТАР
+МАРЧЕТИН РАДЕ
+МАРЧИЋ ЖИВАН
+МАРЧИЋ ЂОРЂЕ
+МАРЧИЋ АЛЕКСАНДАР
+МАРЧИЋ БОЖАНА
+МАРЧИЋ ЈЕЛЕНА
+МАРЧИЋ МАРИЈА
+МАРЧИЋ МИЛЕНКО
+МАРЧИЋ СТЕВАН
+МАРЧИЋ СТЕВАН
+МАРЧИЋ СТЕВАН
+МАРЧИЋЕВ МАРИЈА
+МАРЧИЋЕВ МЕРИМА
+МАРЧИНКО МИЛАН
+МАРЧОК АНИЦА
+МАРЧОК ИШТВАН
+МАРЧОК ИСИДОРА
+МАРЧОК ЛИДИЈА
+МАРЧОК МИХАЈЛО
+МАРЧОК МИХАЈЛО
+МАРЧОК ВЕРА
+МАРЧОК ЗУЗАНА
+МАРЧУК САША
+МАРЧУК СТЕВАН
+МАРЖИЋ АНИЦА
+МАРЂЕЛОШКИ СТАНУША
+МАРАШ ЈОВАН
+МАРАШ МИРОЈЕ
+МАРАШ СЛОБОДАН
+МАРАШ ВОЈИН
+МАРАЦИ МИХАЉ
+МАРАКОВИЋ НЕВЕНА
+МАРАМИЦА ЈЕЛЕНА
+МАРАМИЦА МИРОСЛАВ
+МАРАН ДРАГИША
+МАРАН МИЛОРАД
+МАРАС ФИЛИП
+МАРАС ЈОСИП
+МАРАУЦ ЗВОНИМИР
+МАРАВИЋ ЂУРО
+МАРАВИЋ ЂУРО
+МАРАВИЋ ЂУРО
+МАРАВИЋ БРАНИСЛАВ
+МАРАВИЋ ДМИТАР
+МАРАВИЋ ДРАГИЦА
+МАРАВИЋ ЛАЗО
+МАРАВИЋ МАРКО
+МАРАВИЋ МИХАЈЛО
+МАРАВИЋ МИЛАН
+МАРАВИЋ МИЛЕНА
+МАРАВИЋ МИЛОШ
+МАРАВИЋ НИКОЛА
+МАРАВИЋ САВА
+МАРАВИЋ СЛАВИЦА
+МАРАВИЋ ВЛАДА
+МАРЦЕКИЋ ДОБРИНКА
+МАРЦИКИЋ ЖИВАНА
+МАРЦИКИЋ БОГДАН
+МАРЦИКИЋ ДРАГИЦА
+МАРЦИКИЋ ЕМИЛ
+МАРЦИКИЋ ГИГА ДР
+МАРЦИКИЋ КОНСТАНТИН
+МАРЦИКИЋ ЉИЉАНА
+МАРЦИКИЋ ЉУБИНКА
+МАРЦИКИЋ МАРИЦА
+МАРЦИКИЋ МИЛЕНА
+МАРЦИКИЋ СОФИЈА
+МАРЦИКИЋ СТЕВАН
+МАРЦИКИЋ СТЕВАН
+МАРЦИКИЋ ВЕРА
+МАРДЕШИЋ ШИМЕ
+МАРЕШ БОЖО
+МАРЕШ ТРИФУН
+МАРЕШЧУК ПЕТАР
+МАРЕЉ ЖИВАН
+МАРЕЉ МИРОСЛАВ
+МАРЕЉ СЕЛЕНА
+МАРЕЉ ВЕЛИСЛАВ
+МАРЕЉ ЗЛАТА
+МАРЕЉЕВ ЈЕЛЕНА
+МАРЕТИЋ МАРКО ДИПЛ ОЕЦ
+МАРЕТИЋ СТЕВО
+МАРЕТИЋ ВЛАДА
+МАРЕТИЋ ВЛАДА
+МАРЕТИЋ ВЛАДА
+МАРЕВИЋ АНТЕ
+МАРФИ СМИЉКА
+МАРГАНОВИЋ ДРАГИЦА
+МАРГАНОВИЋ ДУШАН ДР
+МАРГАНОВИЋ ГЕОРГИНА
+МАРГАНЗ ВИКТОР
+МАРГЕТА АНИЦА
+МАРГЕТА МАРИЈА
+МАРГЕТИЋ ЖИЖА
+МАРГЕТИЋ ЕЛВИРА
+МАРГИТ ЈУЛИЈАНА
+МАРГИТ ВЕРА
+МАРГУШИЋ АНДРИЈА
+МАРХОШЕВИЋ МУЈО
+МАРИЧЕВИЋ КАТИЦА
+МАРИЧЕВИЋ РИСТА
+МАРИЧИЋ АНДРИЈА
+МАРИЧИЋ БРАНКО
+МАРИЧИЋ БРАТОЉУБ
+МАРИЧИЋ ГОЈКО
+МАРИЧИЋ ИЛИЈА
+МАРИЧИЋ ИВИЦА
+МАРИЧИЋ МАРА
+МАРИЧИЋ МИЛАН
+МАРИЧИЋ МИЛОРАД
+МАРИЧИЋ МИРА
+МАРИЧИЋ НЕДЕЉКО
+МАРИЧИЋ НИКОЛА
+МАРИЧИЋ НИКОЛА
+МАРИЧИЋ ПАВЛЕ
+МАРИЧИЋ СТЕВАН
+МАРИЧИЋ СТЕВАН
+МАРИЧИЋ ВОЈИСЛАВ
+МАРИЧИН НЕНАД
+МАРИШАН ВЛАДИМИР
+МАРИЋ ЖАРКО
+МАРИЋ ЖАРКО
+МАРИЋ ЖИКА
+МАРИЋ ЖИВАНА
+МАРИЋ ЖИВКО
+МАРИЋ ЂОРЂЕ
+МАРИЋ ЂУРО
+МАРИЋ АДАМ ДР
+МАРИЋ АЛЕКСАНДАР
+МАРИЋ АНЂЕЛКО
+МАРИЋ АНЂЕЛКО
+МАРИЋ АНКА
+МАРИЋ АНКА
+МАРИЋ АНКИЦА
+МАРИЋ БОШКО
+МАРИЋ БОШКО
+МАРИЋ БОЖИЦА
+МАРИЋ БОЖИДАР
+МАРИЋ БОГОЉУБ
+МАРИЋ БОЈАДИМИР
+МАРИЋ БОРИВОЈ
+МАРИЋ БОСИЉКА
+МАРИЋ БРАНИСЛАВ ДИПЛ ИНГ
+МАРИЋ БРАНКО
+МАРИЋ БРАНКО
+МАРИЋ БРАНО
+МАРИЋ ЦВИЈО
+МАРИЋ ДАНИЦА
+МАРИЋ ДАРИНКА
+МАРИЋ ДАВИД
+МАРИЋ ДРАГАНА
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГИЦА
+МАРИЋ ДРАГОЉУБ
+МАРИЋ ДУШАНКА
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШИЦА
+МАРИЋ ЕРЖЕБЕТ
+МАРИЋ ГОЈКО
+МАРИЋ ГОЈКО
+МАРИЋ ГРУЈИЦА ДР
+МАРИЋ ИЛЕ
+МАРИЋ ИЛИЈА
+МАРИЋ ИЛИЈА
+МАРИЋ ИЛИНКА
+МАРИЋ ИВО
+МАРИЋ ЈАДРАНКА
+МАРИЋ ЈЕЛИЦА
+МАРИЋ ЈОЦА
+МАРИЋ ЈОЛАНКА
+МАРИЋ ЈОВАНКА
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВО
+МАРИЋ ЈОВО
+МАРИЋ ЈУЛИЈАНА
+МАРИЋ КАДИВКА
+МАРИЋ КАТИЦА
+МАРИЋ КАТИЦА
+МАРИЋ КОСТА
+МАРИЋ ЛАЗАР
+МАРИЋ ЉЕПОСАВА
+МАРИЋ ЉУБА
+МАРИЋ ЉУБИЦА
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУПКО
+МАРИЋ ЛУКА
+МАРИЋ МАРА
+МАРИЋ МАРИЈА
+МАРИЋ МАРИЈА
+МАРИЋ МАРИЈА
+МАРИЋ МАРКО
+МАРИЋ МАРКО
+МАРИЋ МИЋА ДИПЛ ИНГ
+МАРИЋ МИХАЈЛО
+МАРИЋ МИЛАН ДИПЛ ИНГ
+МАРИЋ МИЛАН ДР
+МАРИЋ МИЛАНА
+МАРИЋ МИЛАНКА
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛЕ ДИПЛ ОЕЦ
+МАРИЋ МИЛЕНА
+МАРИЋ МИЛЕНА
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛИСАВ
+МАРИЋ МИЛОШ
+МАРИЋ МИЛОШ
+МАРИЋ МИЛОРАД
+МАРИЋ МИЛОРАД
+МАРИЋ МИЛОСАВ
+МАРИЋ МИЛУН
+МАРИЋ МИЛУТИН
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРОЉУБ
+МАРИЋ МИТАР
+МАРИЋ МИТАР
+МАРИЋ-МИТРОВИЋ МАРИЈА
+МАРИЋ МОМЧИЛО
+МАРИЋ НЕБОЈША
+МАРИЋ НЕДЕЉКО
+МАРИЋ НЕВЕНКА
+МАРИЋ НИКОЛА
+МАРИЋ НИКОЛА
+МАРИЋ НОВАК
+МАРИЋ НОВАК
+МАРИЋ ОСТОЈА
+МАРИЋ ПАВЛЕ
+МАРИЋ ПЕТАР
+МАРИЋ ПЕТАР
+МАРИЋ ПРВОСЛАВ
+МАРИЋ РАДИВОЈ
+МАРИЋ РАДМИЛА
+МАРИЋ РАДМИЛА
+МАРИЋ РАДМИЛА
+МАРИЋ РАДОМИР ДР
+МАРИЋ РАДОСАВ
+МАРИЋ РАДОСЛАВА
+МАРИЋ РАДОВАНКА
+МАРИЋ РАДОВАН
+МАРИЋ РАДОВАН
+МАРИЋ РАЈКО
+МАРИЋ САВА
+МАРИЋ СИНИША
+МАРИЋ СЛАВИЦА
+МАРИЋ СЛАВКО
+МАРИЋ СЛАВКО
+МАРИЋ СЛОБОДАН
+МАРИЋ СЛОБОДАН
+МАРИЋ СРЕТЕН ДР ПРОФ
+МАРИЋ СТАНИСЛАВ
+МАРИЋ СТАНИСЛАВ
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВКА
+МАРИЋ СТЕВО
+МАРИЋ СТОЈАНКА
+МАРИЋ СВЕТИСЛАВ ПРОФЕСОР
+МАРИЋ СВЕТИСЛАВ
+МАРИЋ ТАМАРА ДИПЛ ИНГ
+МАРИЋ УРОШ
+МАРИЋ ВАСКА
+МАРИЋ ВАСО
+МАРИЋ ВЕРА
+МАРИЋ ВИД
+МАРИЋ ВЛАДИСЛАВ
+МАРИЋ ВОЈИСЛАВ ДР ПРОФ
+МАРИЋ ВУКАДИН
+МАРИЋ ЗОРАНКА
+МАРИЋ ЗОРАН
+МАРИЋ ЗОРАН
+МАРИЋЕВИЋ ЗОРАН
+МАРИАШ ЈОЖЕФ
+МАРИАШ МАРИЈА
+МАРИЈАШ ЈОВАН
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МИХАЉ
+МАРИЈАШ СТЕВАН
+МАРИЈАШ ЗДЕНКА
+МАРИЈАН ЖЕЉКО
+МАРИЈАН БРАНИСЛАВА
+МАРИЈАНАЦ СТОЈА
+МАРИЈАНОВИЋ РАДОЈКА
+МАРИЈАНОВИЋ СВЕТОЗАР
+МАРИЈАНСКИ ЂОРЂЕ
+МАРИЈАНСКИ ЂОРЂЕ
+МАРИЈАНСКИ АЛЕКСАНДАР
+МАРИЈАНСКИ МИЛОШ
+МАРИЈАНСКИ СТЕВАН
+МАРИЈАНСКИ ВЕСНА
+МАРИН МИЛАН
+МАРИН МИЛИВОЈ
+МАРИН МЛАДЕН
+МАРИН НАТАЛИЈА
+МАРИН НИКОЛА
+МАРИН РАДОМИР
+МАРИН ВАСО
+МАРИН ВЕРИЦА
+МАРИН ЗОРАН
+МАРИНЧЕВ БРАНИСЛАВ
+МАРИНЧЕВ СТЕВАН
+МАРИНЧИЋ ДРАГИЦА
+МАРИНЧИЋ МАРКО
+МАРИНЧИЋ МИЛАН
+МАРИНЧИЋ МИЛАН
+МАРИНЧИЋ ОЛГА
+МАРИНШЕК ВЈЕКОСЛАВ
+МАРИНА ШТЕФАН
+МАРИНА ЛУЋИЈАН
+МАРИНАЦ ЗОРАН
+МАРИНИЋ БРАНКО
+МАРИНИЋ ИВО
+МАРИНИЋ СТИПАН
+МАРИНКОВ ЧЕДА
+МАРИНКОВ ЖАРКО
+МАРИНКОВ ЂОРЂЕ
+МАРИНКОВ ЂОРЂЕ
+МАРИНКОВ ЂУРА ДИПЛ ИНГ
+МАРИНКОВ АНКИЦА
+МАРИНКОВ АРСЕН
+МАРИНКОВ БОЖА
+МАРИНКОВ ДЕЈАН
+МАРИНКОВ ДРАГИЊА
+МАРИНКОВ ДУШАН
+МАРИНКОВ ФЕМКА
+МАРИНКОВ ГАВРА
+МАРИНКОВ ЈОВАНКА
+МАРИНКОВ ЈОВАН
+МАРИНКОВ ЈОВАН
+МАРИНКОВ ЈУЛИЈАНА
+МАРИНКОВ ЈУЛИЈАНА
+МАРИНКОВ МЕЛАНИЈА
+МАРИНКОВ МИЛЕНКО
+МАРИНКОВ МИЛИВОЈ ДИПЛ ИНГ
+МАРИНКОВ МИЉА
+МАРИНКОВ МИЛОРАД
+МАРИНКОВ МИЛОСАВА
+МАРИНКОВ МИОДРАГ
+МАРИНКОВ МИРЈАНА
+МАРИНКОВ МОМЧИЛО
+МАРИНКОВ МОМЧИЛО
+МАРИНКОВ НИКОЛА
+МАРИНКОВ ОМЕР
+МАРИНКОВ ПАЈА
+МАРИНКОВ ПРЕДРАГ
+МАРИНКОВ РУЖИЦА
+МАРИНКОВ САВА
+МАРИНКОВ СИНИША
+МАРИНКОВ СЛАВКО
+МАРИНКОВ СЛАВКО
+МАРИНКОВ СТЕВАН
+МАРИНКОВ СТЕВАН
+МАРИНКОВ СТРАХИЊА ДР ПРОФ
+МАРИНКОВ ВЕСЕЛИН
+МАРИНКОВ ВЕСНА
+МАРИНКОВ ВЛАДА
+МАРИНКОВ ВЛАЈКО
+МАРИНКОВ ЗОРАН
+МАРИНКОВИЋ ЧЕДОМИР
+МАРИНКОВИЋ ЖИВА
+МАРИНКОВИЋ ЖИВКА
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВОЈИН
+МАРИНКОВИЋ ЖИВОРАД
+МАРИНКОВИЋ БОГОЉУБ
+МАРИНКОВИЋ БОЈА
+МАРИНКОВИЋ БОРИСЛАВ
+МАРИНКОВИЋ БОРИВОЈЕ ДР
+МАРИНКОВИЋ БРАНКО
+МАРИНКОВИЋ БРАТИМИР
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГИЦА
+МАРИНКОВИЋ ДРАГИЦА
+МАРИНКОВИЋ ЈЕЛИЦА
+МАРИНКОВИЋ ЈОВАН
+МАРИНКОВИЋ КАТАЛИН
+МАРИНКОВИЋ ЛЕПОСАВА
+МАРИНКОВИЋ МИЋО
+МАРИНКОВИЋ МИЛАН
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕН
+МАРИНКОВИЋ МИЛИЦА
+МАРИНКОВИЋ МИЛИВОЈЕ
+МАРИНКОВИЋ МИЛОЈКО
+МАРИНКОВИЋ МИЛОРАД
+МАРИНКОВИЋ МИЛОВАН
+МАРИНКОВИЋ МИЛУТИН
+МАРИНКОВИЋ МИРКО
+МАРИНКОВИЋ МИРОСЛАВ
+МАРИНКОВИЋ МИТАР
+МАРИНКОВИЋ МИТАР
+МАРИНКОВИЋ НЕНАД
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ РАДА
+МАРИНКОВИЋ РАДИВОЈ
+МАРИНКОВИЋ РАДОЈИЦА
+МАРИНКОВИЋ РАДОЈКА
+МАРИНКОВИЋ РАДОМИР
+МАРИНКОВИЋ РАДОСЛАВ ДР
+МАРИНКОВИЋ РАДОВАН
+МАРИНКОВИЋ РИСТАНА
+МАРИНКОВИЋ РУЖИЦА
+МАРИНКОВИЋ САВА
+МАРИНКОВИЋ СЛАВКО
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СОФИЈА
+МАРИНКОВИЋ СТАНКО
+МАРИНКОВИЋ СТАНОЈКА
+МАРИНКОВИЋ СТЕВАН
+МАРИНКОВИЋ СТОЈАНКА
+МАРИНКОВИЋ СТОЈАН
+МАРИНКОВИЋ СВЕТИСЛАВ
+МАРИНКОВИЋ ВЛАДИЦА
+МАРИНКОВИЋ ВЛАДО
+МАРИНКОВИЋ ВОЈИН
+МАРИНКОВИЋ ВОЈИСЛАВКА
+МАРИНКОВИЋ ВУКАШИН
+МАРИНКОВИЋ ЗОРАН
+МАРИНОВ МАРИНКО
+МАРИНОВИЋ ЂОРЂЕ
+МАРИНОВИЋ АЛЕКСАНДАР
+МАРИНОВИЋ АЛЕКСАНДАР
+МАРИНОВИЋ ДОБРИВОЈЕ
+МАРИНОВИЋ ДУШАН
+МАРИНОВИЋ КАТИЦА
+МАРИНОВИЋ МАРИЈА
+МАРИНОВИЋ МИЛАН
+МАРИНОВИЋ ПЕЈО
+МАРИНОВИЋ-СРДАНОВ ДАНИЦА
+МАРИНОВИЋ ТОМИСЛАВ
+МАРИНОВИЋ ВИНКА
+МАРИНОВИЋ ЗЛАТИЦА
+МАРИНОВИЋ ЗОРИЦА
+МАРИНОВИЋ ЗОРИЦА
+МАРИНОВСКИ ЂОРЂЕ
+МАРИНОВСКИ КАТИЦА
+МАРЈАШ АНКА
+МАРЈАШ ЈАНКО
+МАРЈАШ МИША
+МАРЈАШ МИХАЈЛО
+МАРЈАШ МИЛКА
+МАРЈАШ СТАНКО
+МАРЈАШ ВЛАДИМИР
+МАРЈАН ДУШАН
+МАРЈАН МИЛИЈАНА
+МАРЈАН МИРКО
+МАРЈАНОВ ДУШАН
+МАРЈАНОВ ЕРЖЕБЕТ
+МАРЈАНОВ ЈОВАНКА
+МАРЈАНОВ ЉУБОМИР
+МАРЈАНОВ МАРА
+МАРЈАНОВ МИХАЈЛО ДР
+МАРЈАНОВ МИЛЕНКО
+МАРЈАНОВ ОЛГА
+МАРЈАНОВ РАДОВАН
+МАРЈАНОВ СОЊА
+МАРЈАНОВ ТИМОТИЈЕ
+МАРЈАНОВ ВУЈИЦА
+МАРЈАНОВИЋ ЧЕДОМИР
+МАРЈАНОВИЋ ЖАРКО
+МАРЈАНОВИЋ ЖЕЉКО
+МАРЈАНОВИЋ ЖИВОТА
+МАРЈАНОВИЋ ЖИВОТА
+МАРЈАНОВИЋ ЂОРЂЕ
+МАРЈАНОВИЋ ЂУРО
+МАРЈАНОВИЋ АЛЕКСАНДАР
+МАРЈАНОВИЋ БИЉАНА
+МАРЈАНОВИЋ БОЖИДАР
+МАРЈАНОВИЋ БОЖИДАР
+МАРЈАНОВИЋ БОЈАНА
+МАРЈАНОВИЋ БОРИВОЈЕ
+МАРЈАНОВИЋ БОСИЉКА
+МАРЈАНОВИЋ БРАНИМИР
+МАРЈАНОВИЋ ДАНА
+МАРЈАНОВИЋ ДАНИЛКО
+МАРЈАНОВИЋ ДИМИТРИЈЕ
+МАРЈАНОВИЋ ДРАГАН
+МАРЈАНОВИЋ ДРАГИША
+МАРЈАНОВИЋ ДРАГИША
+МАРЈАНОВИЋ ДРАГОМИР
+МАРЈАНОВИЋ ДУШАНКО
+МАРЈАНОВИЋ ДУШАН
+МАРЈАНОВИЋ ДУШАН
+МАРЈАНОВИЋ ДУШКО
+МАРЈАНОВИЋ ГАБРИЈЕЛ
+МАРЈАНОВИЋ ГОЈКО
+МАРЈАНОВИЋ ЈОВАНКА
+МАРЈАНОВИЋ ЈОВАН
+МАРЈАНОВИЋ ЈОВА
+МАРЈАНОВИЋ ЉУБИВОЈЕ
+МАРЈАНОВИЋ ЉУБОМИР
+МАРЈАНОВИЋ ЛУКА
+МАРЈАНОВИЋ МАРИЈА
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛЕНКО ДР ИНГ
+МАРЈАНОВИЋ МИЛИЦА ДР
+МАРЈАНОВИЋ МИЛОШ
+МАРЈАНОВИЋ МИЛОМИР
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛУТИН
+МАРЈАНОВИЋ МИРОСЛАВ
+МАРЈАНОВИЋ МИРОСЛАВ
+МАРЈАНОВИЋ МИТАР
+МАРЈАНОВИЋ НАДА
+МАРЈАНОВИЋ НАТАЛИЈА
+МАРЈАНОВИЋ НЕДЕЉКО
+МАРЈАНОВИЋ НЕДЕЉКО
+МАРЈАНОВИЋ НИКОЛА МР
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ ПРВОСЛАВ
+МАРЈАНОВИЋ РАДМИЛА
+МАРЈАНОВИЋ РУЖИЦА
+МАРЈАНОВИЋ СЛАВОЉУБ ДР
+МАРЈАНОВИЋ СТЕВКА
+МАРЈАНОВИЋ СВЕТЛАНА
+МАРЈАНОВИЋ ТАТЈАНА
+МАРЈАНОВИЋ ТРИВУН
+МАРЈАНОВИЋ ВЕЛИМИР
+МАРЈАНОВИЋ ВЕРА
+МАРЈАНОВИЋ ВИД
+МАРЈАНОВИЋ ВЛАДО
+МАРЈАНОВИЋ ВОЈИН
+МАРЈАНОВИЋ ЗОРАН
+МАРЈАНОВИЋ ЗОРА
+МАРЈАНСКИ ФЕДОР
+МАРКАНОВ ЉУБИЦА
+МАРКАНОВ ЗОРИЦА
+МАРКГРАФ АНИЦА
+МАРКГРАФ СОФИЈА
+МАРКИ НЕВЕНКА
+МАРКИ НИКОЛА
+МАРКИ СЛАВКА
+МАРКИШ СОФИЈА
+МАРКИЋЕВИЋ ДУШАНКА
+МАРКИЋЕВИЋ МИЛАН
+МАРКО ЈАН ПРОФЕСОР
+МАРКО НАДА ДР
+МАРКОСКИ СТОЈАН
+МАРКОВ ЖАРКО
+МАРКОВ ЖИВА
+МАРКОВ ЂУРА
+МАРКОВ АНЂЕЛКА
+МАРКОВ ЦВЕТАНА
+МАРКОВ ДОБРИЛА
+МАРКОВ ДРАГАН
+МАРКОВ ДРАГАН
+МАРКОВ ДУШАН
+МАРКОВ ЕМИЛ
+МАРКОВ ФОТИЈЕ
+МАРКОВ ИЛИЈА
+МАРКОВ ИВИЦА
+МАРКОВ-ЈЕЛЕНИЋ МИРЈАНА
+МАРКОВ ЉУБОМИР
+МАРКОВ ЉУБОМИР
+МАРКОВ ЉУБОМИР
+МАРКОВ МАРИЈА
+МАРКОВ МИЛАН
+МАРКОВ МИЛАН
+МАРКОВ МИЛЕНКО
+МАРКОВ МИЛИЦА
+МАРКОВ МИЛИЦА
+МАРКОВ МИРА
+МАРКОВ НАДА
+МАРКОВ НАДА
+МАРКОВ НИКОЛА
+МАРКОВ ПЕТАР
+МАРКОВ ПЕТАР
+МАРКОВ РАДИСЛАВ
+МАРКОВ РАДОСАВ
+МАРКОВ РАДОВАН
+МАРКОВ РАДОВАН
+МАРКОВ САВА
+МАРКОВ СИНИША
+МАРКОВ СПАСОЈЕ ДР
+МАРКОВ СТОЈАН
+МАРКОВ ТОМИСЛАВ
+МАРКОВ ВЕРА
+МАРКОВ ВИДОСАВА
+МАРКОВ ЗОРАН МР
+МАРКОВ ЗОРА
+МАРКОВ ЗОРКА
+МАРКОВИЋ ЧЕДОМИР
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖЕЛИБОР
+МАРКОВИЋ ЖЕЉКА
+МАРКОВИЋ ЖЕЉКО
+МАРКОВИЋ ЖИВАН
+МАРКОВИЋ ЖИВКО
+МАРКОВИЋ ЖИВОЈИН ДР
+МАРКОВИЋ ЖИВОЈИН
+МАРКОВИЋ ЖИВОЈИН
+МАРКОВИЋ ЖИВОСЛАВ
+МАРКОВИЋ ЖИВОТА
+МАРКОВИЋ ЂЕНА
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ АДАМ
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АНТОНИЈЕ
+МАРКОВИЋ БОШКО
+МАРКОВИЋ БОРИСЛАВ
+МАРКОВИЋ БОРИСЛАВ
+МАРКОВИЋ БОРИС
+МАРКОВИЋ БОРИВОЈ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНКО
+МАРКОВИЋ БРАНКО
+МАРКОВИЋ БУДИМИР
+МАРКОВИЋ БУДИМИР
+МАРКОВИЋ ЦВЕТКО
+МАРКОВИЋ ЦВЕТКО
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДЕЈАН
+МАРКОВИЋ ДЕСАНКА
+МАРКОВИЋ ДИМИТРИЈЕ
+МАРКОВИЋ ДИМИТРИЈЕ
+МАРКОВИЋ ДОБРОСАВ
+МАРКОВИЋ ДОБРОСАВ
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГИША
+МАРКОВИЋ ДРАГОЈА
+МАРКОВИЋ ДРАГОЈА
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОМИР
+МАРКОВИЋ ДРАГОСЛАВ
+МАРКОВИЋ ДРАГОСЛАВ
+МАРКОВИЋ ДРАГУТИН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУБРАВКО
+МАРКОВИЋ ЕРЖЕБЕТ
+МАРКОВИЋ ЕВИЦА
+МАРКОВИЋ ГОРАН
+МАРКОВИЋ ГОРДАНА
+МАРКОВИЋ ИГЊАТ
+МАРКОВИЋ ИЛИЈА
+МАРКОВИЋ ИЛИЈА
+МАРКОВИЋ ИРЕНА
+МАРКОВИЋ ИВАН
+МАРКОВИЋ ИВКО
+МАРКОВИЋ ЈАДРАНКА
+МАРКОВИЋ ЈАДРАНКА
+МАРКОВИЋ ЈАРОСЛАВ
+МАРКОВИЋ ЈЕЛЕНА
+МАРКОВИЋ ЈЕЛИЦА
+МАРКОВИЋ ЈЕЛИЦА
+МАРКОВИЋ ЈЕЛИСАВКА
+МАРКОВИЋ ЈОВАН ДИПЛ ИНГ
+МАРКОВИЋ ЈОВАНКА
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВО
+МАРКОВИЋ ЈОВО
+МАРКОВИЋ ЈУЛИЈА
+МАРКОВИЋ ЈУЛКА
+МАРКОВИЋ КАРЛО
+МАРКОВИЋ КАРОЛИНА
+МАРКОВИЋ КАРОЛИНА
+МАРКОВИЋ КАТА
+МАРКОВИЋ КАТИЦА
+МАРКОВИЋ КОСАНА
+МАРКОВИЋ КОСТА
+МАРКОВИЋ КРАСИМИР
+МАРКОВИЋ КСЕНИЈА
+МАРКОВИЋ ЛЕПОСАВА ЛЕКАР
+МАРКОВИЋ ЉУБИША
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИНКО
+МАРКОВИЋ ЉУБОМИР
+МАРКОВИЋ ЉУБОМИР
+МАРКОВИЋ ЛУКА
+МАРКОВИЋ-МАЈТЕЊИ АНДРИЈА
+МАРКОВИЋ-МАЈТЕЊИ МИХАЉ
+МАРКОВИЋ МАРА
+МАРКОВИЋ МАРИЈА
+МАРКОВИЋ МАРИЈА
+МАРКОВИЋ МАРИНА
+МАРКОВИЋ МАРКО
+МАРКОВИЋ МАРКО
+МАРКОВИЋ МИХАИЛО
+МАРКОВИЋ МИХАЈЛО
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛА
+МАРКОВИЋ МИЛЕВА
+МАРКОВИЋ МИЛЕВА
+МАРКОВИЋ МИЛКО
+МАРКОВИЋ МИЛКО
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОЉУБ
+МАРКОВИЋ МИЛОМИР
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛО
+МАРКОВИЋ МИЛУТИН
+МАРКОВИЋ МИЛУТИН
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИРКО
+МАРКОВИЋ МИРКО
+МАРКОВИЋ МИРОСЛАВА
+МАРКОВИЋ МИРОСЛАВА
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МЛАДЕН
+МАРКОВИЋ МЛАДЕН
+МАРКОВИЋ МОМЧИЛО
+МАРКОВИЋ МОМЧИЛО
+МАРКОВИЋ МОМИР
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАТАША
+МАРКОВИЋ НАТАЛИЈА
+МАРКОВИЋ НЕДЕЉКО
+МАРКОВИЋ НЕГОСЛАВ
+МАРКОВИЋ НЕМАЊА
+МАРКОВИЋ НЕНАД
+МАРКОВИЋ НЕНАД
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ ОБРАД
+МАРКОВИЋ ОБРАД
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ПАВЛЕ
+МАРКОВИЋ ПЕЈЧА
+МАРКОВИЋ ПЕТАР ДИПЛ ИНГ
+МАРКОВИЋ ПЕТАР ВЕТЕРИНАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТРОНИЈЕ
+МАРКОВИЋ ПРЕДРАГ
+МАРКОВИЋ ПРВОСЛАВ ДР
+МАРКОВИЋ РАША
+МАРКОВИЋ РАДЕНКО
+МАРКОВИЋ РАДЕ
+МАРКОВИЋ РАДИНКА
+МАРКОВИЋ РАДИВОЈ
+МАРКОВИЋ РАДИВОЈ
+МАРКОВИЋ РАДМИЛА
+МАРКОВИЋ РАДМИЛА
+МАРКОВИЋ РАДОЈКА
+МАРКОВИЋ РАДОСАВ ДИПЛ ИНГ
+МАРКОВИЋ РАДОСАВ
+МАРКОВИЋ РАДОСЛАВ
+МАРКОВИЋ РАДОВАНКА
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАНКО
+МАРКОВИЋ РАТКО
+МАРКОВИЋ РОДОЉУБ
+МАРКОВИЋ РОЗАЛИЈА
+МАРКОВИЋ РУЖИЦА
+МАРКОВИЋ РУЖИЦА
+МАРКОВИЋ САША
+МАРКОВИЋ САВА
+МАРКОВИЋ САВА
+МАРКОВИЋ САВА
+МАРКОВИЋ СИНИША
+МАРКОВИЋ СИНИША
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СМИЉА
+МАРКОВИЋ СРЂАН
+МАРКОВИЋ СТАНА
+МАРКОВИЋ СТАНИША
+МАРКОВИЋ СТАНИМИР
+МАРКОВИЋ СТАНИСЛАВ
+МАРКОВИЋ СТЕФАНИЈА
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈА
+МАРКОВИЋ СВЕТИСЛАВ
+МАРКОВИЋ СВЕТЛАНА
+МАРКОВИЋ СВЕТОЗАР
+МАРКОВИЋ СВЕТОЗАР
+МАРКОВИЋ ТАНАСИЈЕ
+МАРКОВИЋ ТАТЈАНА
+МАРКОВИЋ ТОДОР
+МАРКОВИЋ ТОМИСЛАВ
+МАРКОВИЋ УГЉЕША
+МАРКОВИЋ ВАСА
+МАРКОВИЋ ВАСИЛИЈЕ ДР
+МАРКОВИЋ ВЕЛИМИР
+МАРКОВИЋ ВЕЉКО
+МАРКОВИЋ ВЕЉКО
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВИЋА
+МАРКОВИЋ ВИДОЈЕ
+МАРКОВИЋ ВИДОСАВА
+МАРКОВИЋ ВИД
+МАРКОВИЋ ВИНКО
+МАРКОВИЋ ВИТКО
+МАРКОВИЋ ВИТОМИР
+МАРКОВИЋ ВЛАДАН
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДОЈЕ
+МАРКОВИЋ ВОЈИН
+МАРКОВИЋ ВОЈИН
+МАРКОВИЋ ВОЈИСЛАВ
+МАРКОВИЋ ЗАГОРКА
+МАРКОВИЋ ЗАГОРКА
+МАРКОВИЋ ЗЛАТА
+МАРКОВИЋ ЗЛАТИЈА
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРА
+МАРКОВИЋ ЗОРА
+МАРКОВИЋ ЗОРИЦА
+МАРКОВИЋАН ЈОН
+МАРКОВИНОВИЋ ПЕТАР
+МАРКОВИНОВИЋ ПЕТАР
+МАРКОВЉЕВ ДРАГАН
+МАРКОВСКИ ЦВЕТАНА
+МАРКОВСКИ ЈОВАН
+МАРКСЕР ИВАН
+МАРКСЕР ЈОВАН
+МАРКУШ АНКИЦА
+МАРКУШ БОРИСЛАВ
+МАРКУШ ЕМИЛ
+МАРКУШ ЕТЕЛКА
+МАРКУШ ЈОСИП
+МАРКУШ ПРЕДРАГ
+МАРКУШ ЗОРАН
+МАРКУШЕВ ДРАГИЦА
+МАРКУШЕВ ЈЕЛЕНА
+МАРЛОГ МИРОСЛАВ
+МАРОШ ДУШАН
+МАРОШ МИЛОВАН
+МАРОШ СТЕВАН
+МАРОШ ВЕЉКО
+МАРОШАН ТИХОМИР
+МАРОШЕВ КРИСТА
+МАРОШЕВИЋ ИВАН
+МАРОШЕВИЋ МАРКО
+МАРОШЕВИЋ МАТА
+МАРОШЕВИЋ НАТАЛИЈА
+МАРОШЕВИЋ ВЛАДИМИР
+МАРОЂИ ИВАН
+МАРОЂИ ЈОЛАН
+МАРОЂИ ЈОЛАН
+МАРОЦИ МАРГИТА
+МАРОЈЕВИЋ АЛЕКСАНДАР
+МАРОЈЕВИЋ ИВАНКА
+МАРОЈЕВИЋ ЈОСИП
+МАРОЈЕВИЋ РАДМИЛО
+МАРОЈЕВИЋ СЛАВОЉУБ
+МАРОЛД ЈОСИП
+МАРОЛИ ИСАК
+МАРОН ДЕНЕШ
+МАРОН КАРЛО
+МАРОСЛАВАЦ МИРОСЛАВ
+МАРОТ ИВАН
+МАРОТИ МИКЛОШ
+МАРОВИЋ ЂУРА
+МАРОВИЋ БОРИС ДР
+МАРОВИЋ ДАРИНКА
+МАРОВИЋ МИЛИЦА
+МАРОВИЋ МИРКО
+МАРОВИЋ РАДОМИР
+МАРОВИЋ ЗДЕНКА
+МАРОВСКИ НИКОЛА
+МАРСЕНИЋ ДРАГАНА
+МАРСЕНИЋ ЛЕКА
+МАРСЕНИЋ СЛАВОЈКА
+МАРТИЋ ЖИВОЈИН
+МАРТИЋ ЂУРА
+МАРТИЋ БРАНКА
+МАРТИЋ ДРАГАН
+МАРТИЋ КОСТА
+МАРТИЋ ЛАЗАР
+МАРТИЋ ЉУБОМИР
+МАРТИЋ МАРА
+МАРТИЋ МИЛАН
+МАРТИЋ МИЛЕНКО
+МАРТИЋ МИЛИЦА
+МАРТИЋ ОЛГА
+МАРТИЋ ПЕРО
+МАРТИЋ РАДМИЛА
+МАРТИЋ РАДОМИР
+МАРТИЋ СЛАВКО
+МАРТИЋ СТЕВАН
+МАРТИЋ ВЛАДИМИР
+МАРТИЋ ВОЈНА
+МАРТИЦКИ МЛАДЕН
+МАРТИН АЛОЈЗИЈЕ
+МАРТИН АНТАЛ
+МАРТИН ЕНДРЕ
+МАРТИН ЕРЖЕБЕТ
+МАРТИН ИМРЕ
+МАРТИН ИВАН
+МАРТИН ЈОСИФ
+МАРТИН ЈОВАН
+МАРТИН ЉУБИНКА
+МАРТИН МАТИЛДА
+МАРТИН МИРОСЛАВА
+МАРТИН ЗВОНИМИР
+МАРТИНЧЕВИЋ МИХАЈЛО
+МАРТИНЧИЋ ДАВОР
+МАРТИНЧИЋ ДАВОР
+МАРТИНАШЕВИЋ ХЕРМИНА
+МАРТИНАШЕВИЋ ОТО
+МАРТИНАК ЈОВАН
+МАРТИНЕЦ АНТОН
+МАРТИНЕК АНТАЛ
+МАРТИНЕК ФЕРЕНЦ
+МАРТИНКО АНДРИЈА
+МАРТИНОВ ЂОРЂЕ
+МАРТИНОВ АНКА
+МАРТИНОВ ЛАЗАР
+МАРТИНОВ МИКА
+МАРТИНОВ МИЛАН ДР
+МАРТИНОВ МИЛИЦА
+МАРТИНОВ МИЛОШ
+МАРТИНОВ МИЛОШ
+МАРТИНОВ МИЛОШ
+МАРТИНОВ САНДРА
+МАРТИНОВ САВА
+МАРТИНОВ СЛАВКО
+МАРТИНОВ СЛАВКО
+МАРТИНОВИЋ ЂОРЂЕ
+МАРТИНОВИЋ АНЂЕЛКА
+МАРТИНОВИЋ АНА
+МАРТИНОВИЋ АНИТА
+МАРТИНОВИЋ БРАНКА
+МАРТИНОВИЋ ДЕСАНКА
+МАРТИНОВИЋ ДУШАН
+МАРТИНОВИЋ ЕЛИЗАБЕТА
+МАРТИНОВИЋ ФИЛИП
+МАРТИНОВИЋ ФИНКА
+МАРТИНОВИЋ ИВО
+МАРТИНОВИЋ ЈЕЛЕНА
+МАРТИНОВИЋ ЈОВАН ВЕТЕРИНАР
+МАРТИНОВИЋ МАРИЈАНА
+МАРТИНОВИЋ МАРИЈА
+МАРТИНОВИЋ МИЛЕ
+МАРТИНОВИЋ МИЛИЦА
+МАРТИНОВИЋ МИЛКА
+МАРТИНОВИЋ МИЛКА
+МАРТИНОВИЋ НАДА
+МАРТИНОВИЋ НЕНАД
+МАРТИНОВИЋ ОЛГА
+МАРТИНОВИЋ ПЕРСИДА
+МАРТИНОВИЋ РИСТА
+МАРТИНОВИЋ СЛАВКО
+МАРТИНОВИЋ СТАНИША
+МАРТИНОВИЋ СТАНКА
+МАРТИНОВИЋ СТЕВАН
+МАРТИНОВИЋ СВЕТОЗАР
+МАРТИНОВИЋ УРОШ
+МАРТИНОВИЋ ВЕЛИМИР
+МАРТИНОВИЋ ВЕЉКО
+МАРТИНОВИЋ ЗАРИЈЕ
+МАРТИНОВСКИ РОМАН
+МАРТОН ШАНДОР
+МАРТОН ЖУЖАНА
+МАРТОН АНДРАШ
+МАРТОН ФЕРЕНЦ
+МАРТОН ИШТВАН
+МАРТОН ИЛЕШ
+МАРТОН ЈОЖЕФ
+МАРТОН ЈОЖЕФ
+МАРТОН ЈОЛАН
+МАРТОН ЛАЈОШ
+МАРТОН МАЋАШ
+МАРТОН МАРИЈА
+МАРТОН РОЗА
+МАРУШЧУК МИРОСЛАВ
+МАРУШЕВИЋ ИВАН
+МАРУШИЋ ДАНИЦА
+МАРУШИЋ ФРАЊА
+МАРУШИЋ ГОРАН
+МАРУШИЋ ЈУЛИЈАНА
+МАРУШИЋ ЉУБО
+МАРУШИЋ МИОРИЦА
+МАРУШИЋ НЕБОЈША
+МАРУШИЋ ОЛГА
+МАРУШИЋ СТОЈАН
+МАРУШИЋ ВЛАДИМИР
+МАРУНИЋ БОСИЉКА
+МАРУНКИЋ МИЛИНА
+МАРУНОВИЋ БЛАГОТА
+МАСЛАЋ АНТЕ
+МАСЛАЋ МИЛЕНКО
+МАСЛАЋ РАЈКО
+МАСЛАЋ ВИНКО
+МАСЛОВАРИЋ БОЖИДАР ДР
+МАСНЕЦ АНКА
+МАСНИКОСА ФЕМКА
+МАСНИКОСА ФЕМКА
+МАСНОВ РОЗАЛИЈА
+МАСТИКОСА ДРАГИЦА
+МАСТИКОСА НИКО
+МАСТИЛОВИЋ ДУШАН
+МАСТИЛОВИЋ ЉУБИЦА
+МАСТИЛОВИЋ МИРА
+МАСТИЛОВИЋ МИРКО
+МАСТИЛОВИЋ МОМЧИЛО
+МАСТИЛОВИЋ ПЛЕМА
+МАСТИЛОВИЋ РАНКО
+МАТАЈЧИЋ ФРАЊО
+МАТАЈЧИЋ ИВАН
+МАТАК МАРИЈА
+МАТАК МАРЈАН
+МАТАК ВЕСНА
+МАТАКОВИЋ КАТИЦА
+МАТАНОВ ЈАСМИНА
+МАТАНОВИЋ ДЕЗИДЕР
+МАТАНОВИЋ ИРЕНА
+МАТАНОВИЋ ЈАДРАНКА
+МАТАНОВИЋ ЈЕЛИСАВЕТА
+МАТАНОВИЋ МИЛОРАД
+МАТАНОВИЋ МИЛОРАД
+МАТАНОВИЋ МИОДРАГ
+МАТАНОВИЋ ПЕТАР
+МАТАНОВИЋ ПЕТАР
+МАТАНОВИЋ СЛАВИЦА
+МАТАНОВИЋ ВЛАДА
+МАТАРУГА ЉИЉАНА
+МАТАРУГА МИЛКА
+МАТАРУГА ПАВЛЕ
+МАТАРУГА ЗАГОРКА
+МАТАРУГИН АЛЕКСАНДАР
+МАТАСИЋ МАРИЈА
+МАТАВУЉ МИЛИЦА
+МАТЕ ЕТЕЛКА
+МАТЕ ГИЗЕЛА
+МАТЕ ВЕНДЕЛ ДР
+МАТЕЧИК МИКЛОШ
+МАТЕЈАШЕВ АЛЕКСАНДАР
+МАТЕЈАШЕВ СВЕТОЗАР
+МАТЕЈАШЕВ СВЕТОЗАР
+МАТЕЈЕВИЋ ЈЕЛЕНА
+МАТЕЈЕВИЋ СТАНКО
+МАТЕЈЕВИЋ ВЕЛИМИР
+МАТЕЈЕВИЋ ВЛАДИМИР
+МАТЕЈЕВИЋ ЗИЛДА
+МАТЕЈИЋ ЂУРА
+МАТЕЈИЋ АЛЕКСАНДАР
+МАТЕЈИЋ НАДЕЖДА
+МАТЕЈИЋ РАТКО
+МАТЕЈИЋ РУЖИЦА
+МАТЕЈИЋ СЛАВОЉУБ ДР ЛЕКАР
+МАТЕЈИН ЂОРЂЕ
+МАТЕЈИН ДРАГАН
+МАТЕЈИН ДРАГИЋ
+МАТЕЈИН ДУШАН
+МАТЕЈИН МИЛИВОЈ
+МАТЕЈИН ВЕСЕЛИН
+МАТЕКАЛО МИЛКА
+МАТЕКОВИЋ СМИЉА
+МАТЕОВИЋ ПУБА ДР
+МАТЕВСКИ ЛУИЂИ
+МАТИЧЕК ЉУДЕВИТ
+МАТИША ИРЕНА
+МАТИШИЋ ЉУБОМИР
+МАТИЋ ЖАРКО
+МАТИЋ ЖИВКА
+МАТИЋ ЖИВКО
+МАТИЋ ЖИВКО
+МАТИЋ ЖИВОЈИН
+МАТИЋ ЖИВОРАД
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂУРЂИЦА
+МАТИЋ ЂУРА ДР
+МАТИЋ АЦКО
+МАТИЋ АЦКО
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АНКА
+МАТИЋ АНКИЦА
+МАТИЋ АРАНКА
+МАТИЋ АРАНКА
+МАТИЋ-БАУС ЖИВКО
+МАТИЋ-БЕКВАЛАЦ ВЕСНА
+МАТИЋ БОЖИДАР ДР
+МАТИЋ БОЈАНА
+МАТИЋ БРАНИСЛАВ
+МАТИЋ ДАМЈАН ДИПЛ ИНГ
+МАТИЋ ДЕСАНКА
+МАТИЋ ДОБРИЦА
+МАТИЋ ДОБРИЛО
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГИША
+МАТИЋ ДРАГИЦА
+МАТИЋ ДРАГИЊА
+МАТИЋ ДРАГУТИН
+МАТИЋ ДУШАНКА
+МАТИЋ ДУШАНКА
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ЕЛИЗАБЕТА
+МАТИЋ ЕВА
+МАТИЋ ФИНКА
+МАТИЋ ГОРДАНА
+МАТИЋ ИЛИЈА
+МАТИЋ ЈЕЛЕНА
+МАТИЋ ЈЕЛИСАВЕТА
+МАТИЋ ЈЕЛИСАВЕТА
+МАТИЋ ЈЕЛИСАВКА
+МАТИЋ ЈОВАН
+МАТИЋ КАТИЦА
+МАТИЋ-КЕКИЋ СНЕЖАНА
+МАТИЋ КРИСТИНА
+МАТИЋ ЛАЗАР
+МАТИЋ ЛАЗАР
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉУБИЦА
+МАТИЋ ЉУБИЦА
+МАТИЋ ЉУБО
+МАТИЋ ЛУКА
+МАТИЋ МАГДАЛЕНА
+МАТИЋ МАРИЦА
+МАТИЋ МАРИЈА
+МАТИЋ МАРКО
+МАТИЋ МАРКО
+МАТИЋ МИЛАН
+МАТИЋ МИЛАН
+МАТИЋ МИЛАН
+МАТИЋ МИЛЕНКО
+МАТИЋ МИЛЕНКО
+МАТИЋ МИЛИСАВ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОВАН
+МАТИЋ МИРЈАНА
+МАТИЋ МИРЈАНА
+МАТИЋ МИРКО
+МАТИЋ НАДА
+МАТИЋ НАДЕЖДА
+МАТИЋ НАТАША
+МАТИЋ НАТАЛИЈА
+МАТИЋ НЕГОВАН
+МАТИЋ НИКОЛА
+МАТИЋ НОВИЦА
+МАТИЋ ПАВА
+МАТИЋ ПАВЛЕ
+МАТИЋ ПАВЛЕ
+МАТИЋ ПЕТАР
+МАТИЋ ПЕТАР
+МАТИЋ ПЛАНИНКА
+МАТИЋ ПРЕДРАГ
+МАТИЋ ПРЕДРАГ
+МАТИЋ РАДЕ
+МАТИЋ РАДМИЛА
+МАТИЋ РАДОЈЕ
+МАТИЋ РАДОМИР
+МАТИЋ РАДОМИР
+МАТИЋ РАДОМИР
+МАТИЋ РАДОСЛАВ
+МАТИЋ РАДОВАН
+МАТИЋ РАДОВАН
+МАТИЋ РАЈКО
+МАТИЋ САВА
+МАТИЋ СИМА
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛОБОДАН
+МАТИЋ СТАНКО
+МАТИЋ СТАНКО
+МАТИЋ СТАЗА
+МАТИЋ СТИПО
+МАТИЋ СТОЈАН
+МАТИЋ СВЕТЛАНА
+МАТИЋ СВЕТОЗАР
+МАТИЋ СВЕТОЗАР
+МАТИЋ ТОМА
+МАТИЋ ТОМИСЛАВ
+МАТИЋ ВАЛЕРИЈА
+МАТИЋ ВЕСЕЛИН
+МАТИЋ ВИДА
+МАТИЋ ВИТОМИР ДИПЛ ИНГ
+МАТИЋ ВЛАДА
+МАТИЋ ВЛАДИМИР
+МАТИЋ ВЛАДИМИР
+МАТИЋ ВЛАДИСЛАВ
+МАТИЋ ВЛАСТИМИР МР
+МАТИЋ ВУЈИЦА
+МАТИЋ ВУКИЦА
+МАТИЋ ЗАГОРКА
+МАТИЋ ЗДРАВКА
+МАТИЋ ЗОРА
+МАТИЦКИ МИЛАНА ДР
+МАТИЦКИ МИЛОШ
+МАТИЈАШ ИЛИЈА
+МАТИЈАШЕВ АЛЕКСАНДАР
+МАТИЈАШЕВ РАДИВОЈ
+МАТИЈАШЕВИЋ АЛЕКСАНДАР
+МАТИЈАШЕВИЋ ЈЕЛКА
+МАТИЈАШЕВИЋ КАТИЦА
+МАТИЈАШЕВИЋ МАРКО
+МАТИЈАШЕВИЋ МИХАИЛО
+МАТИЈАШЕВИЋ СТАНИСЛАВКА
+МАТИЈЕВИЋ АНТИЦА
+МАТИЈЕВИЋ АНТУН
+МАТИЈЕВИЋ БОЈАН
+МАТИЈЕВИЋ БРАНКО
+МАТИЈЕВИЋ ДРАГИЦА
+МАТИЈЕВИЋ ФРАНЧИШКА
+МАТИЈЕВИЋ ИЛИЈА
+МАТИЈЕВИЋ ЈОСИП
+МАТИЈЕВИЋ КАТАЛИН
+МАТИЈЕВИЋ ЛАЈОШ
+МАТИЈЕВИЋ МАРИЈА
+МАТИЈЕВИЋ МИЛЕ
+МАТИЈЕВИЋ МИЛОЈКО
+МАТИЈЕВИЋ ПЕРО
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ РАДЕ
+МАТИЈЕВИЋ СЛАВКО
+МАТИЈЕВИЋ ВУКОСАВА
+МАТИЈЕВИЋ ЗОРАН
+МАТИЈЕВИЋ ЗОРА
+МАТИЈЕВИЋ ЗОРА
+МАТИН ДОРОТЕА
+МАТИН ЈОСИП
+МАТИН ЛАЈОШ
+МАТИН МАТИЈА
+МАТИС ШАНДОР ДИПЛ ПРАВНИК
+МАТИС ШАНДОР
+МАТЈАЧИЋ ВИНКО
+МАТКО ЕВА
+МАТКОВИЋ ЖАРКО
+МАТКОВИЋ ЖАРКО
+МАТКОВИЋ БОЖИДАР
+МАТКОВИЋ ДРАГОЉУБ
+МАТКОВИЋ ДРАГОЉУБ
+МАТКОВИЋ ЈОВАН
+МАТКОВИЋ ЛАДИСЛАВ
+МАТКОВИЋ МИЛЕНКО
+МАТКОВИЋ МИРОСЛАВА
+МАТКОВИЋ МИРОСЛАВ
+МАТКОВИЋ МИРОСЛАВ
+МАТКОВИЋ МОМИР
+МАТКОВИЋ РАДОВАН
+МАТКОВИЋ РОЗАЛИЈА
+МАТКОВИЋ РУЖИЦА
+МАТКОВИЋ СТАМЕНКО
+МАТКОВИЋ ВЛАСТИМИР
+МАТКОВИЋ ЗДЕНКА ДР
+МАТОШЕВИЋ ИВАН
+МАТОШИЋ СТАНИСЛАВ
+МАТОШКОВИЋ АГАТА
+МАТОШКОВИЋ ТЕРЕЗА
+МАТОВИЋ АНЂЕЛКО
+МАТОВИЋ АНА
+МАТОВИЋ БОЖАНА
+МАТОВИЋ БОРИВОЈЕ
+МАТОВИЋ БОРО
+МАТОВИЋ БРАНИСЛАВ
+МАТОВИЋ ДАНИЦА
+МАТОВИЋ ДАРО
+МАТОВИЋ ДЕСА
+МАТОВИЋ ДРАГАНА
+МАТОВИЋ ДРАГИША
+МАТОВИЋ ЉУБИНКА
+МАТОВИЋ МИЛАН ДИПЛ ИНГ
+МАТОВИЋ МИЛАН
+МАТОВИЋ МИЛЕНКО
+МАТОВИЋ МИЛЕ
+МАТОВИЋ-МИЛИЋ БАТРИЋ
+МАТОВИЋ МИЛИЋ
+МАТОВИЋ МИЛОЈКО
+МАТОВИЋ НАТАША
+МАТОВИЋ ПАВЛЕ
+МАТОВИЋ ПЕТАР
+МАТОВИЋ РАДИВОЈЕ
+МАТОВИЋ РАДОСАВ
+МАТОВИЋ РАДОСЛАВ
+МАТОВИЋ ВИТОМИР
+МАТОВИНА ФРАЊА
+МАТОВИНА ГОРАН
+МАТОВИНА МАРКО
+МАТРАК ДРАГАН
+МАТУШ ЈАН
+МАТУШКА МАРТОН
+МАТУЉИН ИГЊАЦ
+МАТУСКИ СОЊА
+МАТВИКОВ ЕУГЕНИЈЕ
+МАУКОВИЋ ВОЈИСЛАВ
+МАУЛ ГОРДАНА
+МАУРИЋ ФЕРЕНЦ
+МАУРИЋ ГЕЗА
+МАУРИЋ НЕНАД
+МАВИЋ СРЂАН
+МАВРАК ИМРЕ
+МАВРЕНСКИ БОГДАН
+МАВРЕНСКИ БОРКО
+МАВРЕНСКИ ИВИЦА
+МАВРОВИЋ БРАНИСЛАВ
+МАЗАЛИЦА БРАНИСЛАВ
+МАЗАЛИЦА ДУШАН
+МАЗАЛИЦА ГОЈКО
+МАЗАЛИЦА ЉУБО
+МАЗАЛИЦА МАРИЈА
+МАЗАЛИЦА РАЈКО
+МАЗАЛИЦА СНЕЖАНА
+МАЗАЛИЦА УРОШ
+МАЗАЛИЦА ВАСО
+МАЗАЛИЦА ВЕЉКО
+МАЗАНЧИК АНДРИЈА
+МАЗАНЋИК ПАЈА
+МАЗАЊИ КАРЛО
+МАЗИЋ ЖИВКО
+МАЗИЋ БРАНКО
+МАЗИЋ ДРАГАН
+МАЗИЋ ЉУБОМИР
+МАЗИЋ МИХАЈЛО
+МАЗИЋ МИРОСЛАВ
+МАЗИЋ ПЛЕТИКОСА
+МАЗИЊАНИН ДУШАН
+МАЗЛАМИ ЏАБИР
+МАЗУР ВУКИЦА
+МЦ-ЦОННЕЛЛ МАРТА
+МЕЧКАРОВСКИ ДРАГАН
+МЕЧКИЋ ДОБРИЛА
+МЕЧКИЋ СЛАВКО
+МЕШАНОВИЋ ХАЗИМ
+МЕШТЕР ИРЕНА
+МЕШТЕРОВИЋ ЉИЉАНА
+МЕШТРОВИЋ БОЖИДАР
+МЕЋАВА БРАНКО
+МЕЋАВА ДРАГАН
+МЕЋАВА МИЛАН
+МЕЂАНИН ДУШАН
+МЕЂЕШИ ЉУБОМИР
+МЕЂЕШИ ВЛАДИМИР
+МЕЂЕД МАРИЦА
+МЕЂЕДОВИЋ ЂОРЂИЈЕ
+МЕЂЕДОВИЋ БРАНКО
+МЕЂЕДОВИЋ ДАНИЛО
+МЕЂЕДОВИЋ ДРАГОЉУБ
+МЕЂЕДОВИЋ ДРАГО
+МЕЂЕДОВИЋ ДУБРАВКА
+МЕЂЕДОВИЋ МИРЈАНА
+МЕЂЕДОВИЋ НЕМАЊА
+МЕЂЕДОВИЋ РАДОВАН
+МЕЂЕРИ ВЕРОНИКА
+МЕЂИМОРЕЦ ЕДУАРД
+МЕЂИМОРЕЦ ЉУБОМИР
+МЕЂИМОРЕЦ СТЈЕПАН
+МЕЂИМОРЕЦ ВИКТОР
+МЕАМЏИЈА МИРА
+МЕАНЏИЋ СЛАВКО
+МЕЦАНОВ СТОЈАНКА
+МЕДАКОВ ЖИВКО
+МЕДАКОВ МАРИЈА
+МЕДАКОВ МИЛАН
+МЕДАКОВ МИЛАН
+МЕДАКОВ МИЉАНА
+МЕДАКОВ РАДИВОЈ
+МЕДАКОВ ВЛАДИМИР
+МЕДАКОВИЋ БОГДАН
+МЕДАКОВИЋ ДАМИР
+МЕДАКОВИЋ ДАРИНКА
+МЕДАКОВИЋ ДУШАН
+МЕДАКОВИЋ ДУШАН
+МЕДАКОВИЋ ИЛДИКО
+МЕДАКОВИЋ ИЛИЈА
+МЕДАКОВИЋ ЈОВАН
+МЕДАКОВИЋ ЉУБИЦА
+МЕДАКОВИЋ ЉУБИЦА
+МЕДАКОВИЋ ПЕТАР
+МЕДАКОВИЋ СВЕТЛАНА
+МЕДАКОВИЋ СВЕТЛАНА
+МЕДАКОВИЋ ВЛАДИСЛАВ
+МЕДАН ДРАГИЊА
+МЕДАН МАНОЈЛО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛОРАД
+МЕДАН МИРОСЛАВ
+МЕДАН РАДЕНКО
+МЕДАН СЛАВИЦА
+МЕДАН СПАСОЈЕ
+МЕДАН ВЕЛИМИР
+МЕДАН ВЛАДИСЛАВ
+МЕДАНОВСКИ БОРИС
+МЕДАР ВУЧКО
+МЕДАРЕВИЋ ДРАГАН
+МЕДАРЕВИЋ ДРАГАН
+МЕДАРЕВИЋ СТАНА
+МЕДЕНИЦА ЂУРЂИЦА
+МЕДЕНИЦА ЂУРО
+МЕДЕНИЦА БОСИЉКА
+МЕДЕНИЦА МИЛИСАВ
+МЕДЕНИЦА РАДОМИР
+МЕДЕНИЦА СНЕЖАНА
+МЕДЕНИЦА СНЕЖАНА
+МЕДЕНИЦА ВОЈИСЛАВ
+МЕДЕНИЦА ВОЈИСЛАВ
+МЕДЕР ЂОРЂЕ
+МЕДЕР ЈЕЛЕНА
+МЕДИЋ ЂУРА
+МЕДИЋ ЂУРА
+МЕДИЋ БОШКО
+МЕДИЋ БОГДАН
+МЕДИЋ БОГДАН
+МЕДИЋ БОРИВОЈ
+МЕДИЋ БРАНКА
+МЕДИЋ ДАНЕ
+МЕДИЋ ДАНЕ
+МЕДИЋ ДАНИЦА
+МЕДИЋ ДРАГИЦА
+МЕДИЋ ДРАГОЉУБ
+МЕДИЋ ДРАГОСЛАВА
+МЕДИЋ ДУШАН
+МЕДИЋ ДУШАН
+МЕДИЋ ГОЈКО
+МЕДИЋ ИЛИЈА
+МЕДИЋ ИЛИЈА
+МЕДИЋ ИЛИЈА
+МЕДИЋ ЛАЗАР
+МЕДИЋ МИЋО
+МЕДИЋ МИЛАН
+МЕДИЋ МИЛАН
+МЕДИЋ МИЛЕ
+МЕДИЋ МИЛИЦА
+МЕДИЋ МИЛКА
+МЕДИЋ МИЛОШ
+МЕДИЋ МИЛОРАД
+МЕДИЋ МИЛОРАД
+МЕДИЋ МИОДРАГ
+МЕДИЋ МИРА
+МЕДИЋ МИРЈАНА
+МЕДИЋ МИРКО
+МЕДИЋ МИРОСЛАВА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ ПЕТАР
+МЕДИЋ РАДЕ
+МЕДИЋ РАДОВАН
+МЕДИЋ РАДОВАН
+МЕДИЋ САВО
+МЕДИЋ СИМО
+МЕДИЋ СЛАВКО
+МЕДИЋ СЛОБОДАНКА
+МЕДИЋ СМИЉА
+МЕДИЋ СТЕВАН
+МЕДИЋ СВЕТОЗАР
+МЕДИЋ ТАТЈАНА
+МЕДИЋ ЗДРАВКО
+МЕДИЋ ЗДРАВКО
+МЕДИЋ ЗОРАН
+МЕДИЋ ЗОРА
+МЕДОШ УРОШ
+МЕДОЈЕВИЋ МИЛАН
+МЕДОЈЕВИЋ МИЛЕТА
+МЕДОЈЕВИЋ НИКОЛА
+МЕДОВАРСКИ ФРАЊА
+МЕДОВАРСКИ МИША
+МЕДОВАРСКИ ПИРОШКА
+МЕДОВАРСКИ ПИРОШКА
+МЕДОВАРСКИ СТЕВАН
+МЕДОВИЋ ПРЕДРАГ ДР
+МЕДУЊАНИН ФЕБРОНА
+МЕДУЊАНИН ИСИДОР
+МЕДУРИЋ ДАНИЛО
+МЕДУРИЋ ДРАГОМИР
+МЕДУРИЋ ГОРАН
+МЕДУРИЋ ИРЕНА
+МЕДУРИЋ ЈЕЛЕНА
+МЕДУРИЋ КОСТА
+МЕДУРИЋ МИЛИВОЈ
+МЕДУРИЋ ПЕТАР
+МЕДУРИЋ СМИЉА
+МЕДУРИЋ ЗЛАТА
+МЕДВЕДОВИЋ ДРАГА
+МЕГЛАЈ БОСИЉКА
+МЕХАКОВИЋ ДАНИЦА
+МЕХАНЏИСКИ ВЕНКО
+МЕХМЕТИ ХИСЕН
+МЕХМЕТИ РАФЕТ
+МЕХМЕТОЈ ХАСАН
+МЕЈИЋ НЕВЕНКА
+МЕКЕЊИШАЦ ВЕСЕЛИН
+МЕКЕЊИШАЦ ЗОРАН
+МЕКИЋ СОФИЈА
+МЕКИНДА МАРИЈАН ДР
+МЕКИНДА МИРЈАНА
+МЕКИНИЋ АНТЕ
+МЕКИНИЋ МИРЈАНА
+МЕКИНИЋ ТОНКА
+МЕЛАР АНДРАШ
+МЕЛАР ЈЕЛЕНА
+МЕЛАР ЉУДЕВИТ
+МЕЛЕГ ЈАНКО
+МЕЛЕГ ЈОВАН
+МЕЛЕГ ЈОВАН
+МЕЛЕГ МИША
+МЕЛЕГ ВЛАДИМИР
+МЕЛЕРТ ВЕНДЕЛ
+МЕЛИНК ДУШАНКА
+МЕЛИНК ЈОХАН
+МЕЉА ЈУЛИЈАНА
+МЕЉКУТИ ФЕРЕНЦ
+МЕЉКУТИ ЈОЖЕФ
+МЕЉКУТИ КАРЛО
+МЕЉКУТИ ОРБАН
+МЕЉНИК ИЛИЈА
+МЕЉНИКОВ ДЕСАНКА
+МЕЛКУС БОЖА
+МЕЛКУС БОРИВОЈ
+МЕЛКУС КАТИЦА
+МЕЛКУС МИРЈАНА
+МЕЛКУС ВОЈИСЛАВ
+МЕЛО АЛЕКСАНДАР
+МЕЛОВИЋ ДЕЈАН
+МЕЛОВИЋ МИЛОВАН
+МЕЛВАН ЕРЖЕБЕТ
+МЕЛВАН ПЕТАР
+МЕЛВАН ЗОРАН
+МЕЛВИНГЕР АЛОЈЗИЈА
+МЕМАРОВИЋ РАДОВАН
+МЕМЕДОВИЋ БОРИСЛАВ
+МЕМЕДОВИЋ БОСИЉКА
+МЕМЕДОВСКИ УЗЕИР
+МЕМИШЕВИЋ ИБРАХИМ
+МЕМИШЕВИЋ ИСМАИЛ
+МЕМИШЕВИЋ МАРЈАН
+МЕМИШЕВИЋ МЕХМЕД
+МЕМИШЕВИЋ РАШИДА
+МЕМИШИ ТЕФИК
+МЕМИЏАН РЕЏО
+МЕНЂАН ШАНДОР
+МЕНЂАН МАРИЈА
+МЕНЂАН ПАВЕЛ
+МЕНЂАН РАСТИСЛАВ
+МЕНДЕБАБА БОРИСЛАВ
+МЕНДЕБАБА ПАНТА
+МЕНДЕЛ ЕЛИЗАБЕТА
+МЕНДРАГИЋ ЂОРЂЕ
+МЕНДРЕИ ХЕЛЕНА
+МЕНЕШИ БЕЛА
+МЕНЕШИ ИРЕНА
+МЕНЕШИ ЛАСЛО
+МЕНГЛ ИРЕН
+МЕНГЛ ЛАЈОШ
+МЕНИЧАНИН ЈЕЛА
+МЕНИЧАНИН СТЕВАН
+МЕНИЋАНИН ПЕТАР
+МЕЊАК ИВАН
+МЕНЗИЛЏИЋ ГАБРИЈЕЛА
+МЕРЧ ЈАНОШ
+МЕРЧА СТЕВАН
+МЕРШ МИЛАН
+МЕРЖА КАРОЉ
+МЕРЂЕЛОШКИ МИЛИЦА
+МЕРЦ ЕВА
+МЕРДИЋ МИРОСЛАВ
+МЕРДОВИЋ МИЛКА
+МЕРЕИ КАТАЛИН
+МЕРЕИ МАРГИТА
+МЕРГАНЦ КАТИЦА
+МЕРГЕШ ЈАНОШ
+МЕРГЕЛ МАРИЈА
+МЕРИЧАР РАДОЈИЦА
+МЕРКОВИЋ АЛЕКСАНДАР
+МЕРКОВИЋ АЛОЈЗ
+МЕРКОВИЋ АНКИЦА
+МЕРКОВИЋ ЈУДИТ
+МЕРКОВИЋ ЉУДЕВИТ
+МЕРКОВИЋ НИКОЛА
+МЕРКОВИЋ ПЕТАР
+МЕРКОВИЋ СИЛВИА
+МЕРКОВИЋ СВЕТИСЛАВА
+МЕРКОВИЋ ВЕРА
+МЕРКУЛОВ ЉИЉАНА
+МЕРКВА ЕМА
+МЕРКВА ЈОЖЕФ
+МЕРЊАК ФРАЊО
+МЕСАК НИКОЛА
+МЕСАРИЋ ГАБРИЈЕЛА
+МЕСАРОШ ШАНДОР ДР
+МЕСАРОШ ЂУРА
+МЕСАРОШ АНДРАШ
+МЕСАРОШ АРПАД
+МЕСАРОШ АТИЛА
+МЕСАРОШ БАЛАЖ
+МЕСАРОШ ФЕРЕНЦ
+МЕСАРОШ ФРАЊА
+МЕСАРОШ ГЕЗА
+МЕСАРОШ ГЕЗА
+МЕСАРОШ ГОРАН
+МЕСАРОШ ИШТВАН
+МЕСАРОШ ИШТВАН
+МЕСАРОШ ИЛОНА
+МЕСАРОШ ИЛОНА
+МЕСАРОШ ИМРЕ
+МЕСАРОШ ЈЕЛЕНА
+МЕСАРОШ ЈЕЛИЦА
+МЕСАРОШ ЈОСИФ
+МЕСАРОШ ЈОСО
+МЕСАРОШ КАРЛО
+МЕСАРОШ КАТИЦА
+МЕСАРОШ ЛАЈОШ
+МЕСАРОШ ЛАСЛО
+МЕСАРОШ ЛЕОН
+МЕСАРОШ МИХАЉ
+МЕСАРОШ МИКЛОШ
+МЕСАРОШ ПАВЛЕ
+МЕСАРОШ ПИРОШКА
+МЕСАРОШ СТЕВАН
+МЕСАРОШ ТИБОР
+МЕСАРОШ ТИБОР
+МЕСАРОШ ЗОЛТАН
+МЕСАРОШ ЗОРА ДИПЛ ИНГ
+МЕСАРОШ ЗОРИЦА
+МЕСАРОВИЋ ДУШАН
+МЕСАРОВИЋ ЈОВАН
+МЕСАРОВИЋ МАРГИТА
+МЕСАРОВИЋ МИЛАН
+МЕСАРОВИЋ СВЕТОЛИК
+МЕСЕШАН ГЕЗА
+МЕСЕЛЏИЈА ЖИВКО
+МЕСЕЛЏИЈА НАДЕЖДА
+МЕСЕЛЏИЈА ОСТОЈА
+МЕСЕЛЏИЈА РАЈКО
+МЕСЕЛЏИЈА СЛАВИЦА
+МЕСЕЛЏИЈА СТАНИМИР
+МЕТЕЉСКИ СЕРГИЈЕ
+МЕТОДИЈЕВИЋ МИЛОСАВ
+МЕЗЕ ЈУЛИЈАНА
+МЕЗЕШ ИМРЕ
+МЕЗЕИ ШАНДОР
+МЕЗЕИ ЈОЖЕФ
+МЕЗЕИ ЛАДИСЛАВ
+МЕЗЕИ ЛАСЛО
+МЕЗЕИ СНЕЖАНА
+МЕЗЕИ СТЕВАН ДР
+МЕЗЕИ СТЕВАН
+МИЧА ЈОСИП
+МИЧА ЈОВАН
+МИЧИЋ-ЂЕРМАНОВ ВИДА
+МИЧИЋ БОШКО
+МИЧИЋ БОШКО
+МИЧИЋ МИРЈАНА
+МИЧИЋ-МИТРОВИЋ МИЛИЦА
+МИЧИЋ НЕДЕЉКО
+МИЧИЋ СНЕЖАНА
+МИЧИЋ СОФИЈА
+МИЧИЋ ЗОРА
+МИЧУРИН ЈОСИП
+МИШЧЕВИЋ БРАНКО
+МИШЧЕВИЋ БРАНКО
+МИШЧЕВИЋ ДУШАН
+МИШЧЕВИЋ ДУШАН
+МИШЧЕВИЋ ИЛИЈА
+МИШЧЕВИЋ ИВАНКА
+МИШЧЕВИЋ МАРИЈА
+МИШЧЕВИЋ МИЦА
+МИШЧЕВИЋ МИЛАДИН
+МИШЧЕВИЋ МИЛАН
+МИШЧЕВИЋ НИКОЛА
+МИШЧЕВИЋ ОЛГА
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ВЛАДИМИР
+МИШЧЕВИЋ ЗЛАТКО
+МИШАН ЛАЗАР
+МИШАНОВИЋ ДРАГОЉУБ
+МИШАНОВИЋ СИМО
+МИШЕЛИЋ ЈЕФТА
+МИШИЋ ЧЕДОМИР
+МИШИЋ ЂУРА
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АНЂЕЛИЈА
+МИШИЋ АНЂЕЛКА
+МИШИЋ АНА
+МИШИЋ БОГДАН
+МИШИЋ БУДИМИР
+МИШИЋ ДРАГИЦА
+МИШИЋ ДРАГИЦА
+МИШИЋ ЕТЈЕН
+МИШИЋ ГОРАН
+МИШИЋ ИВАН
+МИШИЋ ИВАН
+МИШИЋ ЈАГОДА
+МИШИЋ ЈАКОВ
+МИШИЋ ЈАСМИНА
+МИШИЋ ЈОСИП
+МИШИЋ ЈОВАН
+МИШИЋ ЛАЗАР
+МИШИЋ ЛАЗАР
+МИШИЋ ЛИНКА
+МИШИЋ ЉИЉАНА
+МИШИЋ ЉУБО
+МИШИЋ МАРИЈА
+МИШИЋ МАРКО
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛОСАВКА
+МИШИЋ МИЛОВАН
+МИШИЋ МИОДРАГ
+МИШИЋ МИОМИР
+МИШИЋ МИРЈАНА
+МИШИЋ МИРОСЛАВ
+МИШИЋ МИРОСЛАВ
+МИШИЋ НАДА
+МИШИЋ НЕНАД
+МИШИЋ НЕСТОР
+МИШИЋ НИКОЛА
+МИШИЋ ПЕТАР
+МИШИЋ ПРЕДРАГ
+МИШИЋ РАДЕ
+МИШИЋ РАДИВОЈЕ
+МИШИЋ РАДИВОЈЕ
+МИШИЋ РАДОЈКА
+МИШИЋ РАНКО
+МИШИЋ САВА
+МИШИЋ СЛАВКО
+МИШИЋ СЛОБОДАН
+МИШИЋ СЛОБОДАН
+МИШИЋ СЛОБОДАН
+МИШИЋ СОФИЈА
+МИШИЋ СТИПО
+МИШИЋ СТЈЕПАН
+МИШИЋ СВЕТОЗАР
+МИШИЋ СВЕТОЗАР
+МИШИЋ ТОДОР ДР
+МИШИЋ ТУГОМИР
+МИШИЋ ВАСА
+МИШИЋ ВИДОСАВА
+МИШИЋ ВЛАДИЦА
+МИШИЋ ВОЈИН
+МИШИЋ ЗДРАВКО
+МИШИЋ ЗОРАН
+МИШИЋ ЗОРА
+МИШИЋ ЗОРИЦА
+МИШИЋ ЗВОНИМИР
+МИШИНСКИ ЈЕЛЕНА
+МИШКАР ЈОВАН
+МИШКЕЉИН БОШКО
+МИШКИЋ ШИМУН
+МИШКИЋ ДУШАН
+МИШКИЋ ИВАН
+МИШКИЋ МИЛАН
+МИШКИЋ РАЈКО
+МИШКИЋ РАНКО
+МИШКИЋ СВЕТИСЛАВКА
+МИШКИЋ ВИТОМИР
+МИШКИЋЕВИЋ БОРИВОЈ
+МИШКЉИН КАТИЦА
+МИШКОВ ЂУРЂИНКА
+МИШКОВ АЛЕКСАНДАР
+МИШКОВ АНГЕЛИНА
+МИШКОВ АНКА
+МИШКОВ АНКИЦА
+МИШКОВ АВРАМ
+МИШКОВ БИЉАНА
+МИШКОВ БОЈКА
+МИШКОВ БРАНИМИР
+МИШКОВ БРАНКО
+МИШКОВ ИВИЦА
+МИШКОВ ЈОВАН
+МИШКОВ КАТАРИНА
+МИШКОВ КАТАРИНА
+МИШКОВ ЉУБИЦА
+МИШКОВ ЉУБИЦА
+МИШКОВ МАКСА
+МИШКОВ МАРИЦА
+МИШКОВ МИЛОШ
+МИШКОВ МИЛОВАН
+МИШКОВ МИРОСЛАВ
+МИШКОВ НАДА
+МИШКОВ НЕВЕНКА
+МИШКОВ НИКОЛА
+МИШКОВ НОВА
+МИШКОВ РАДИВОЈ
+МИШКОВ САВА ДИПЛ ИНГ
+МИШКОВ САВА
+МИШКОВ СТАНКА
+МИШКОВ СТЕВАН
+МИШКОВ ВЕСНА
+МИШКОВ ВЕСНА
+МИШКОВ ЗАГОРКА
+МИШКОВ ЗЛАТА
+МИШКОВИЋ ЖИВКО
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ АЛЕКСАНДРА
+МИШКОВИЋ АНА
+МИШКОВИЋ АНА
+МИШКОВИЋ АРСА
+МИШКОВИЋ БЛАЖО
+МИШКОВИЋ БОЖИДАР
+МИШКОВИЋ БОЈАНА
+МИШКОВИЋ БОЈАН
+МИШКОВИЋ БОРИВОЈ
+МИШКОВИЋ БРАНИСЛАВ
+МИШКОВИЋ БРАНКО
+МИШКОВИЋ ЦВЕТКО
+МИШКОВИЋ ДАНЧИКА
+МИШКОВИЋ ДАРИНКА
+МИШКОВИЋ ДЕЛИНКА
+МИШКОВИЋ ДРАГАН
+МИШКОВИЋ ДРАГОРАД
+МИШКОВИЋ ДУБРАВКА
+МИШКОВИЋ ИЛИЈА
+МИШКОВИЋ ИЛИЈА
+МИШКОВИЋ ИЛОНКА
+МИШКОВИЋ ЈОЦА
+МИШКОВИЋ ЈОВАН
+МИШКОВИЋ ЛАЗАР
+МИШКОВИЋ ЉУБИЦА
+МИШКОВИЋ ЉУБИЦА
+МИШКОВИЋ МАРКО
+МИШКОВИЋ МИХАЈЛО
+МИШКОВИЋ МИЛКА
+МИШКОВИЋ МИЛОШ
+МИШКОВИЋ МИЛОЈЕ
+МИШКОВИЋ МИЛОРАД
+МИШКОВИЋ МИОДРАГ
+МИШКОВИЋ МИРЈАНА
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРОСЛАВА
+МИШКОВИЋ НЕНАД
+МИШКОВИЋ НИЋИФОР
+МИШКОВИЋ ОБРАД
+МИШКОВИЋ ОЛГИЦА
+МИШКОВИЋ ПЕТАР
+МИШКОВИЋ РАДЕ
+МИШКОВИЋ РАДИВОЈ МР
+МИШКОВИЋ РАДОСЛАВ
+МИШКОВИЋ РАНКО
+МИШКОВИЋ САША
+МИШКОВИЋ САВКА
+МИШКОВИЋ СТАНКА
+МИШКОВИЋ СТЕВАН
+МИШКОВИЋ СТЕВАН
+МИШКОВИЋ ТАЊА
+МИШКОВИЋ ВИДОСАВА
+МИШКОВИЋ ВИЈЕНЦЕСЛАВ
+МИШКОВИЋ ВУКИЦА
+МИШКОВИЋ ВУКИЦА
+МИШКОВИЋ ЗРНКА
+МИШКОВИЦ ЉУДЕВИТ
+МИШКОВИЦ ЗУЗАНА
+МИШКУЛИН ДРАГИША
+МИШКУЛИН НАДА
+МИШКУЛИН НИКОЛА
+МИШЉЕНОВИЋ МИОДРАГ
+МИШЛОВ ЉУБИЦА
+МИШОВИЋ МИРКО
+МИШОВСКИ РИСТО
+МИШУЛИЋ ПЕТАР
+МИШУЛИЋ ВИДАК
+МИШУЛИЋ ВОЈИСЛАВ
+МИШУРА ИВАН
+МИЋАШЕВИЋ БОШКО
+МИЋАШЕВИЋ САВА
+МИЋАНОВИЋ ДРАГАН
+МИЋАНОВИЋ ДРАГИША
+МИЋАНОВИЋ МАРЈАН
+МИЋЕВИЋ ДУШАН
+МИЋЕВИЋ СОФИЈА
+МИЋИЋ ЂОРЂЕ
+МИЋИЋ ЂУРЂИНА
+МИЋИЋ БОЈАНА
+МИЋИЋ БРАНИСЛАВ
+МИЋИЋ БРАНКА
+МИЋИЋ БРАНКО ДИПЛ ИНГ
+МИЋИЋ БРАНО
+МИЋИЋ ЦВИЈЕТИН
+МИЋИЋ ДРАГОЉУБ
+МИЋИЋ ДУШАН ДИПЛ ПРАВНИК
+МИЋИЋ ДУШАН
+МИЋИЋ ДУШАН
+МИЋИЋ ИЛИЈА
+МИЋИЋ ЈОВАНКА
+МИЋИЋ КОНСТАНТИНА
+МИЋИЋ КРСТА
+МИЋИЋ ЉУБОМИР
+МИЋИЋ ЉУБОМИР
+МИЋИЋ МАРИЈА
+МИЋИЋ МИХАЈЛО
+МИЋИЋ МИЛАНА
+МИЋИЋ МИЛЕНА
+МИЋИЋ МИЛЕНКО ДИПЛ ИНГ
+МИЋИЋ МИЛИЦА
+МИЋИЋ МИЛИЦА
+МИЋИЋ МИЛКА
+МИЋИЋ МИЛОРАД
+МИЋИЋ МИРОСЛАВ
+МИЋИЋ ОЛИВЕРА
+МИЋИЋ ОЗРЕН
+МИЋИЋ РАДМИЛА
+МИЋИЋ РАДОЈИЦА
+МИЋИЋ РАДОВАН
+МИЋИЋ РОДОЉУБ
+МИЋИЋ СЛАВИЦА
+МИЋИЋ СЛАВКО
+МИЋИЋ СМИЉА
+МИЋИЋ СТОЈАН
+МИЋИЋ СУЗАНА
+МИЋИЋ ВЕЛИМИР
+МИЋИЋ ВЛАДИМИР
+МИЋИН ЖАРКО
+МИЋИН ЂОРЂЕ
+МИЋИН ДУШКО
+МИЋИН ЛАЗА
+МИЋИН МИЛИЦА
+МИЋИН РАДОВАН
+МИЋИН УРОШ
+МИЋКОВИЋ МИЛИНКО
+МИЋОВИЋ ЧЕДОМИР
+МИЋОВИЋ БОРИСЛАВ
+МИЋОВИЋ БОСИЉКА
+МИЋОВИЋ ЈАНКО
+МИЋОВИЋ КОСТАДИН ДР
+МИЋОВИЋ МИЛАН
+МИЋОВИЋ МИРЈАНА
+МИЋОВИЋ НЕБОЈША ДИПЛ ИНГ
+МИЋОВИЋ ПРЕДРАГ ДИПЛ ИНГ
+МИЋОВИЋ СТОЈАНКА
+МИЋОВИЋ ВЕЛИМИР
+МИЋУНОВИЋ ДРАГУТИН
+МИЋУНОВИЋ МАРИЦА
+МИЋУНОВИЋ СТАНКА
+МИЋУНОВИЋ ВЛАДО
+МИЋУНОВИЋ ВОЈИСЛАВКА
+МИАВЕЦ МАЋАШ
+МИЦАИ МАРИЈА
+МИЦИЋ ДРАГАН
+МИЦИЋ ДРАГОЉУБ
+МИЦИЋ ДРАГОЉУБ
+МИЦИЋ ДУШАН
+МИЦИЋ КРСТА ДР
+МИЦИЋ МИРКО
+МИЦКОВ БЛАГОЈ
+МИЦКОВ ЕЛЕНА
+МИДИ НЕНАД
+МИДИЋ ЂОРЂЕ
+МИДИЋ БОРИВОЈ
+МИДИЋ-ДУНЂЕРСКИ МИЛЕНА
+МИДИЋ ЈЕЛЕНА
+МИДИЋ ЈОВАН
+МИДИЋ ЉУБИША
+МИДИЋ МИЛЕНКО
+МИДИЋ МИЛОРАД
+МИДИЋ СЛОБОДАН
+МИДИЋ СТЕВАН
+МИДИЋ СВЕТОЗАР
+МИДИЋ СВЕТОЗАР
+МИДИЋ ЗОРКА
+МИГЛИНЦИ БАРБАРА
+МИГЛИНЦИ ЕТЕЛКА
+МИГЛИНЦИ ЈЕЛЕНА
+МИГЛИНЦИ ЛАСЛО
+МИХАИЛОВИЋ ЧЕДОМИР
+МИХАИЛОВИЋ ЂОКО
+МИХАИЛОВИЋ ДРАГУТИН
+МИХАИЛОВИЋ ГОРАН
+МИХАИЛОВИЋ ЈОВАН
+МИХАИЛОВИЋ КОСТАДИН
+МИХАИЛОВИЋ ЉУБИЦА
+МИХАИЛОВИЋ МИЛАН
+МИХАИЛОВИЋ МИЛОШ
+МИХАИЛОВИЋ МИОДРАГ
+МИХАИЛОВИЋ МИРОСЛАВ
+МИХАИЛОВИЋ МИРОСЛАВ
+МИХАИЛОВИЋ СЛАВОЉУБ
+МИХАИЛОВИЋ СВЕТЛАНА
+МИХАИЛОВИЋ СВЕТОЗАР
+МИХАИЛОВИЋ ВЕЛИБОР
+МИХАИЛОВИЋ ВЕРА ДР
+МИХАИЛОВИЋ ВОЈИСЛАВ
+МИХАИЛОВИЋ ЗОРАН
+МИХАЈЉЕВИЋ РАТОМИР
+МИХАЈЛО ЉАВО
+МИХАЈЛОВ ЖИВА
+МИХАЈЛОВ ЂОРЂЕ
+МИХАЈЛОВ АЛЕКСАНДАР ДР
+МИХАЈЛОВ БОГДАН
+МИХАЈЛОВ БРАНИСЛАВ
+МИХАЈЛОВ ДРАГАНА
+МИХАЈЛОВ ДРАГАН
+МИХАЈЛОВ ДУШАН
+МИХАЈЛОВ ИВАН
+МИХАЈЛОВ ЈОВАНКА
+МИХАЈЛОВ ЛАЗАР
+МИХАЈЛОВ ЉИЉАНА
+МИХАЈЛОВ МАРИЈА
+МИХАЈЛОВ МИЛАН
+МИХАЈЛОВ МИЛОШ
+МИХАЈЛОВ МИЛОРАД
+МИХАЈЛОВ МИЛОВАН
+МИХАЈЛОВ МИЛОВАН
+МИХАЈЛОВ МИРОСЛАВА
+МИХАЈЛОВ НИКОЛА
+МИХАЈЛОВ ОЛГА
+МИХАЈЛОВ РАДОЈКА
+МИХАЈЛОВ РАДОСЛАВ
+МИХАЈЛОВ СПАСОЈЕ
+МИХАЈЛОВ ВЕРА
+МИХАЈЛОВ ВЕСЕЛИН
+МИХАЈЛОВ ВИДОСАВ
+МИХАЈЛОВ ЗОРАН
+МИХАЈЛОВИЋ ЧЕДОМИР
+МИХАЈЛОВИЋ ЧЕДО
+МИХАЈЛОВИЋ ЖАРКО
+МИХАЈЛОВИЋ ЖАРКО
+МИХАЈЛОВИЋ ЖЕЉКО
+МИХАЈЛОВИЋ ЖИВКО
+МИХАЈЛОВИЋ ЖИВОЈИН
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂУРА
+МИХАЈЛОВИЋ АНЂЕЛКО
+МИХАЈЛОВИЋ АНИЦА
+МИХАЈЛОВИЋ АНКА
+МИХАЈЛОВИЋ БОШКО
+МИХАЈЛОВИЋ БОГОЉУБ ДР
+МИХАЈЛОВИЋ БОГОЉУБ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНКА
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ ДАНКА
+МИХАЈЛОВИЋ ДАРИНКА
+МИХАЈЛОВИЋ ДЕЈАН
+МИХАЈЛОВИЋ ДЕЈАН
+МИХАЈЛОВИЋ ДЕЛИЈА
+МИХАЈЛОВИЋ ДИМИТРИЈЕ
+МИХАЈЛОВИЋ ДРАГИША
+МИХАЈЛОВИЋ ДРАГОЉУБ ДР ЛЕКАР
+МИХАЈЛОВИЋ ДРАГОЉУБ
+МИХАЈЛОВИЋ ДРАГОЉУБ
+МИХАЈЛОВИЋ ДРЕНКА
+МИХАЈЛОВИЋ ДУШАНКА
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШКО
+МИХАЈЛОВИЋ ЕРНЕСТ
+МИХАЈЛОВИЋ ФРАЊА
+МИХАЈЛОВИЋ ГОЈКО
+МИХАЈЛОВИЋ ГОРДАНА
+МИХАЈЛОВИЋ ГОРДАНА
+МИХАЈЛОВИЋ ИЛЕ
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИВАНКА
+МИХАЈЛОВИЋ ЈАСМИНА ДР
+МИХАЈЛОВИЋ ЈЕЛА
+МИХАЈЛОВИЋ ЈЕЛЕНКО
+МИХАЈЛОВИЋ ЈЕЛИЦА
+МИХАЈЛОВИЋ ЈЕЛИЦА
+МИХАЈЛОВИЋ ЈОКА
+МИХАЈЛОВИЋ ЈОВАН ДИПЛ ИНГ
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈУЛИЈАНА
+МИХАЈЛОВИЋ КАТИЦА
+МИХАЈЛОВИЋ КОСТА
+МИХАЈЛОВИЋ КРИСТИНА
+МИХАЈЛОВИЋ КСЕНИЈА
+МИХАЈЛОВИЋ ЛАЗО
+МИХАЈЛОВИЋ ЛЕНКА
+МИХАЈЛОВИЋ ЛЕНКА
+МИХАЈЛОВИЋ ЛЕПОСАВА
+МИХАЈЛОВИЋ ЉУБИША
+МИХАЈЛОВИЋ ЉУБО
+МИХАЈЛОВИЋ МАРГИТА
+МИХАЈЛОВИЋ МАРИЈА
+МИХАЈЛОВИЋ МАРИЈА
+МИХАЈЛОВИЋ МИЋА
+МИХАЈЛОВИЋ МИХАЈЛО
+МИХАЈЛОВИЋ МИЛАДИН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛА
+МИХАЈЛОВИЋ МИЛЕНКО
+МИХАЈЛОВИЋ МИЛЕНКО
+МИХАЈЛОВИЋ МИЛЕТА
+МИХАЈЛОВИЋ МИЛЕ
+МИХАЈЛОВИЋ МИЛИЦА
+МИХАЈЛОВИЋ МИЛОРАД ДИПЛ ИНГ
+МИХАЈЛОВИЋ МИЛОРАД
+МИХАЈЛОВИЋ МИЛОРАД
+МИХАЈЛОВИЋ МИЛОВАН
+МИХАЈЛОВИЋ МИЛУН
+МИХАЈЛОВИЋ МИРА
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРОЉУБ ДИПЛ ИНГ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МОМЧИЛО
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДИРА
+МИХАЈЛОВИЋ НЕБОЈША
+МИХАЈЛОВИЋ НЕДЕЉКО
+МИХАЈЛОВИЋ НЕДЕЉКО
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НОВАК
+МИХАЈЛОВИЋ ОЛИВЕРА
+МИХАЈЛОВИЋ ОСТОЈА
+МИХАЈЛОВИЋ ПЕТАР
+МИХАЈЛОВИЋ ПРВОСЛАВ
+МИХАЈЛОВИЋ РАДЕ
+МИХАЈЛОВИЋ РАДИВОЈ
+МИХАЈЛОВИЋ РАДМИЛА
+МИХАЈЛОВИЋ РАДМИЛА
+МИХАЈЛОВИЋ РАДОМИР
+МИХАЈЛОВИЋ РАДОСЛАВ
+МИХАЈЛОВИЋ РАДОСЛАВ
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РОЗАЛИЈА
+МИХАЈЛОВИЋ РУЖИЦА
+МИХАЈЛОВИЋ РУЖИЦА
+МИХАЈЛОВИЋ САЊА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВО
+МИХАЈЛОВИЋ СИНИША
+МИХАЈЛОВИЋ СЛАВИЦА
+МИХАЈЛОВИЋ СЛАВКО
+МИХАЈЛОВИЋ СЛАВОЉУПКА
+МИХАЈЛОВИЋ СЛОБОДАН
+МИХАЈЛОВИЋ СЛОБОДАН
+МИХАЈЛОВИЋ СМИЉАНА
+МИХАЈЛОВИЋ СОФИЈА
+МИХАЈЛОВИЋ СРЂА
+МИХАЈЛОВИЋ СРБИСЛАВ ДР ЛЕКАР
+МИХАЈЛОВИЋ СРЕТЕН
+МИХАЈЛОВИЋ СРЕТКО
+МИХАЈЛОВИЋ СТАНИША ДИПЛ ИНГ
+МИХАЈЛОВИЋ СТАНИСЛАВА
+МИХАЈЛОВИЋ СТАНКО
+МИХАЈЛОВИЋ СТЕВАН
+МИХАЈЛОВИЋ СТЕВАН
+МИХАЈЛОВИЋ СТЕВА
+МИХАЈЛОВИЋ СТЕВИЦА
+МИХАЈЛОВИЋ СТОЈАН
+МИХАЈЛОВИЋ СТОЈАН
+МИХАЈЛОВИЋ-СУБИЋ ЈОВАНКА
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ ТУГОМИР
+МИХАЈЛОВИЋ УРОШ
+МИХАЈЛОВИЋ ВАСА
+МИХАЈЛОВИЋ ВЕРА
+МИХАЈЛОВИЋ ВИТОМИР
+МИХАЈЛОВИЋ ВЛАДИМИР
+МИХАЈЛОВИЋ ВЛАДИМИР
+МИХАЈЛОВИЋ ВОЈИСЛАВ
+МИХАЈЛОВИЋ ЗОРАНА
+МИХАЈЛОВИЋ ЗОРИЦА
+МИХАЈЛОВСКИ ЉУБИНКА
+МИХАЈЛОВСКИ МИРОСЛАВ
+МИХАЈЛОВСКИ ВЛАДИМИР
+МИХАЛАЧКИ МИХАИЛО
+МИХАЛАЧКИ СЛОБОДАН
+МИХАЛЕЦ АНГЕЛИНА
+МИХАЛЕЦ МАРИЈА
+МИХАЛЕК ИВАН
+МИХАЛЕК МАРИЈА
+МИХАЛЕНКО СТЕВАН
+МИХАЛИЋ ПЕТАР
+МИХАЛИК-ТИР ЗУЗАНА
+МИХАЉ ЕСТЕР
+МИХАЉ МАРИЈА ДР
+МИХАЉ МИХАЈЛО ДР
+МИХАЉ МИРОСЛАВ ДР
+МИХАЉ ВЛАДИМИР
+МИХАЉЧЕВИЋ АЛОЈЗИЈЕ
+МИХАЉЧИЋ ДРАГАН
+МИХАЉЧИЋ ГОЈКО
+МИХАЉЧИЋ ИЛЕ
+МИХАЉЧИЋ ЈОВАН
+МИХАЉЧИЋ ЈОВАН
+МИХАЉЧИЋ ЛУКА
+МИХАЉЧИЋ МИТАР
+МИХАЉЧИЋ СПАСОЈЕ
+МИХАЉЕВ ЖЕЉКО
+МИХАЉЕВ ИВАН ДР
+МИХАЉЕВ СТОЈАН
+МИХАЉЕВИЋ АНТОН
+МИХАЉЕВИЋ ЕМИЛ
+МИХАЉЕВИЋ ИВАН
+МИХАЉЕВИЋ МИЛАН
+МИХАЉЕВИЋ РУЖИЦА
+МИХАЉЕВИЋ ЗДРАВКО
+МИХАЉФИ МАРИКА
+МИХАЉИ МАРИЈА
+МИХАЉИЧИЋ БРАНКО
+МИХАЉИЧИЋ ДМИТАР
+МИХАЉИЧИЋ ЈОВАНКА
+МИХАЉИЧИЋ СИМО
+МИХАЉИЧИЋ ТОДЕ
+МИХАЉИЦА АНЂА
+МИХАЉИЦА БОЖО
+МИХАЉИЦА ЦВЕТКО
+МИХАЉИЦА МИРА
+МИХАЉКА БРАНИСЛАВ
+МИХАЉОВСКИ ДАНИЛО
+МИХАЛОВИЋ БРАНКО
+МИХАЛОВИЋ ГРОЗДАНА
+МИХЕЉ ФРАЊО
+МИХЕВЦ ИВАНКА
+МИХИЋ ЧЕДОМИР
+МИХИЋ БОЖИДАР
+МИХИЋ МИЛАН
+МИХИЋ МИЛАН
+МИХИЋ МИЛЕНА
+МИХИЋ РИСТО
+МИХИЋ РИСТО
+МИХИЋ САВА ДИПЛ ИНГ
+МИХИЋ ВЕРА
+МИХИЋ ВЛАДИМИР
+МИХИЋ ВОЈИСЛАВКА
+МИХИЋ ЗОРАН
+МИХЛИЦ ПЕТАР
+МИХЊАК ЈОАКИМ
+МИХЊАК КАТИЦА
+МИХЊАК ЛАДИСЛАВ
+МИХЊАК МЕЛАНИЈА
+МИХЊАК НАДА
+МИХЊАК ПЕТАР
+МИХОЦИ ФРАЊА
+МИХОЦИ ЗВОНИМИР
+МИХОЈЕВИЋ ЂОРЂЕ
+МИХОЈЕВИЋ МИЛЕНА
+МИХОЈЕВИЋ НИКОЛА
+МИХОЈЕВИЋ СНЕЖАНА
+МИХОЛЧИЋ СТЕВИЦА
+МИХОЉЕВИЋ ЕМА
+МИХОЉЕВИЋ МИЛОТКА
+МИЈАЧ СЛАВКО
+МИЈАЧЕВИЋ МИЛАН
+МИЈАЏЕВИЋ ЈОВО
+МИЈАИЛОВИЋ ЂОРЂЕ
+МИЈАИЛОВИЋ МИЛИВОЈЕ
+МИЈАИЛОВИЋ ПАНТЕЛИЈА
+МИЈАИЛОВИЋ РАНИСАВ
+МИЈАИЛОВИЋ РАНКО
+МИЈАИЛОВИЋ СТАНОЈЕ
+МИЈАЈЛОВИЋ АЈНА
+МИЈАЈЛОВИЋ ВУКОСАВА
+МИЈАЛЧИЋ МИЛАН
+МИЈАЛЧИЋ САВА
+МИЈАЛЧИЋ ЗОРА
+МИЈАЛИЦА СВЕТОСЛАВ
+МИЈАНОВИЋ ЂОРЂЕ
+МИЈАНОВИЋ ЂОРЂЕ
+МИЈАНОВИЋ МИЛИЦА
+МИЈАНОВИЋ МИЛОШ
+МИЈАНОВИЋ МИЛОРАД
+МИЈАНОВИЋ МИЛОРАД
+МИЈАНОВИЋ ПАВЛЕ
+МИЈАНОВИЋ РАДОМИР
+МИЈАТ ИВАН
+МИЈАТ МИЛАНКА
+МИЈАТ РОКО
+МИЈАТ ТОМИСЛАВ
+МИЈАТОВ ЖИВКА
+МИЈАТОВ АЛЕКСАНДАР
+МИЈАТОВ АНЂЕЛКА
+МИЈАТОВ БРАНИСЛАВ
+МИЈАТОВ ДРАГИЋ
+МИЈАТОВ ДРАГИЦА
+МИЈАТОВ ИВАН
+МИЈАТОВ ИВАН
+МИЈАТОВ ЈОСА
+МИЈАТОВ КАТИЦА
+МИЈАТОВ ЛАЗАР
+МИЈАТОВ ЉУБИНКА
+МИЈАТОВ ЉУБОМИР
+МИЈАТОВ МИЛАДИН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛА
+МИЈАТОВ МИЛЕНКО
+МИЈАТОВ МИЛОШ
+МИЈАТОВ МИЛОРАД
+МИЈАТОВ МИОДРАГ
+МИЈАТОВ МИРЈАНА
+МИЈАТОВ РАДИВОЈ
+МИЈАТОВ РАДОВАН
+МИЈАТОВ САВА
+МИЈАТОВ САВКА
+МИЈАТОВ СЛАВКО
+МИЈАТОВ СМИЉКА
+МИЈАТОВ СТЕВАН
+МИЈАТОВ ВИДОСАВА
+МИЈАТОВ ВОЈИН
+МИЈАТОВ ЗЛАТИНКА
+МИЈАТОВИЋ ЖИВАН
+МИЈАТОВИЋ ЂОРЂЕ
+МИЈАТОВИЋ ЂУЈА
+МИЈАТОВИЋ ЂУРИЦА
+МИЈАТОВИЋ ЂУРО
+МИЈАТОВИЋ АЛЕКСАНДРА
+МИЈАТОВИЋ АНТОНИЈЕ
+МИЈАТОВИЋ БИСЕРКА
+МИЈАТОВИЋ БОШКО
+МИЈАТОВИЋ БОЖИДАР
+МИЈАТОВИЋ БОЖО
+МИЈАТОВИЋ БОГОМИР
+МИЈАТОВИЋ БРАНКО
+МИЈАТОВИЋ ДРАГАН
+МИЈАТОВИЋ ДРАГАН
+МИЈАТОВИЋ ДРАГИЋ
+МИЈАТОВИЋ ДРАГИ
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ГОЈКО
+МИЈАТОВИЋ ИЛИЈА
+МИЈАТОВИЋ ИЛИЈА
+МИЈАТОВИЋ ЈОВАН
+МИЈАТОВИЋ ЈОВАН
+МИЈАТОВИЋ КАТИЦА
+МИЈАТОВИЋ КОСТА
+МИЈАТОВИЋ ЛАЗАР
+МИЈАТОВИЋ ЛАЗАР
+МИЈАТОВИЋ ЛЕЛА
+МИЈАТОВИЋ ЉИЉАНА
+МИЈАТОВИЋ ЉУБЕНКО
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ МАРТА
+МИЈАТОВИЋ МАТО
+МИЈАТОВИЋ МИША
+МИЈАТОВИЋ МИЛАН
+МИЈАТОВИЋ МИЛЕВА
+МИЈАТОВИЋ МИЛИВОЈЕ
+МИЈАТОВИЋ МИЛКО
+МИЈАТОВИЋ МИЛОШ
+МИЈАТОВИЋ МИЛОРАД
+МИЈАТОВИЋ МИЛОВАН
+МИЈАТОВИЋ МИОДРАГ
+МИЈАТОВИЋ МИРА
+МИЈАТОВИЋ МИРЈАНА
+МИЈАТОВИЋ МИРЈАНА
+МИЈАТОВИЋ НАТАША
+МИЈАТОВИЋ НЕВЕНА
+МИЈАТОВИЋ НИКОЛА
+МИЈАТОВИЋ НОВО
+МИЈАТОВИЋ ОБРАД
+МИЈАТОВИЋ ПЕРА
+МИЈАТОВИЋ ПЕТАР
+МИЈАТОВИЋ-ПУШИЋ БРАНИСЛАВА ДР
+МИЈАТОВИЋ РАДИЧ
+МИЈАТОВИЋ РАДОСЛАВ
+МИЈАТОВИЋ СИМО
+МИЈАТОВИЋ СНЕЖАНА
+МИЈАТОВИЋ СТАНА
+МИЈАТОВИЋ ТОША
+МИЈАТОВИЋ ТОМИСЛАВ
+МИЈАТОВИЋ ВЕРА
+МИЈАТОВИЋ ВЕРА
+МИЈАТОВИЋ ВИД
+МИЈАТОВИЋ ВЛАДАН
+МИЈАТОВИЋ ВОЈИН АДВОКАТ
+МИЈАТОВИЋ ЗДРАВКО ДИПЛ ИНГ
+МИЈАТОВИЋ ЗОРАН
+МИЈАТОВИЋ ЗОРА
+МИЈАТОВИЋ ЗОРИЦА
+МИЈАТОВИЋ ЗВОНИМИР
+МИЈАВЕЦ ЂОРЂЕ
+МИЈАВЕЦ ЈОВАН
+МИЈАВЕЦ ЛУДВИГ
+МИЈАВЕЦ МИХАЈЛО
+МИЈАВЕЦ ПАЈА
+МИЈАВЕЦ ЗОРА
+МИЈИЋ ЖЕЉКО
+МИЈИЋ ЖЕЉКО
+МИЈИЋ ЂОРЂЕ
+МИЈИЋ АЛЕКСАНДАР
+МИЈИЋ АНТЕ
+МИЈИЋ БРАНКО
+МИЈИЋ ДЕСАНКА
+МИЈИЋ ДРАГАН
+МИЈИЋ ДУШАН
+МИЈИЋ ИЛИЈА
+МИЈИЋ ЈАЊА
+МИЈИЋ МИХАЈЛО
+МИЈИЋ МИЛАН
+МИЈИЋ МИЛОШ
+МИЈИЋ МИОДРАГ
+МИЈИЋ НИКОЛА
+МИЈИЋ ПЕРА
+МИЈИЋ ПЕТАР
+МИЈИЋ ПЕТАР
+МИЈИЋ РАДОВАН
+МИЈИЋ РАДОВАН
+МИЈИЋ САВА
+МИЈИЋ СВЕТИСЛАВ
+МИЈИЋ ТИНКА
+МИЈИЋ ВЕЉКО
+МИЈИЋ ВЕСНА
+МИЈИЋ ВЛАДИМИР
+МИЈИН БОРИСЛАВ
+МИЈИН БРАНИСЛАВ
+МИЈИН ЈОВА
+МИЈИН ЛАЗАР
+МИЈИН ЛАЗАР
+МИЈИН МИЛАН
+МИЈИН МИЛЕВА
+МИЈИН МИЛИЦА
+МИЈИН МИЛОШ
+МИЈИН ПЕТАР
+МИЈИН ПЕТАР
+МИЈИН РАДА
+МИЈИН САВА
+МИЈИН СИМА
+МИЈИН СТЕВАН
+МИЈИН СВЕТОЗАР
+МИЈОКОВ ДРАГАН
+МИЈОЛИЋ СЛОБОДАН
+МИЈОЉЕВИЋ МИЛЕНКО
+МИЈОВИЋ ЖАРКО
+МИЈОВИЋ ДРАГИЦА
+МИЈОВИЋ ГАВРИЛО
+МИЈОВИЋ РАДОЈКА
+МИЈОВИЋ ВЕРА
+МИЈУЧИЋ СТЕВАН
+МИЈУЧИЋ ВЕРА
+МИЈУЧИН МИЛКА
+МИЈУШКОВИЋ ДРАГИЦА
+МИЈУШКОВИЋ ЈОВАН
+МИЈУШКОВИЋ МИЛИВОЈЕ
+МИЈУШКОВИЋ ОБРЕН
+МИЈУШКОВИЋ РАДЕ
+МИЈУШКОВИЋ РАДМИЛА
+МИЈУШКОВИЋ ТИНКА
+МИКША МИЛАН
+МИКШИЋ ЧЕДОМИР
+МИКШИЋ ОТОН
+МИКШИЋ СЛОБОДАН
+МИКАШИНОВИЋ БИЉАНА
+МИКАШИНОВИЋ САВА
+МИКАЋ МИЛАН
+МИКАЦ ЕВКА
+МИКАЛАЧКИ ЂОРЂЕ
+МИКАЛАЧКИ АЛЕКСАНДАР
+МИКАЛАЧКИ ДРАГИЦА
+МИКАЛАЧКИ ИВАНКА
+МИКАЛАЧКИ ИВАНКА
+МИКАЛАЧКИ ЈАСМИНА
+МИКАЛАЧКИ МИЛУТИН
+МИКАЛАЧКИ МИРЈАНА
+МИКАЛАЧКИ ПАВЛЕ
+МИКАЛАЧКИ УРОШ
+МИКАЛАЧКИ ЗОРАН
+МИКАЛАЧКИ ЗОРАН
+МИКАН БОСИЉКА
+МИКАН ИВАН
+МИКАНОВИЋ ДАНИЦА
+МИКАНОВИЋ ДРАГАН
+МИКАНОВИЋ ИРЕНА
+МИКАНОВИЋ РАНКО
+МИКАВИЦА СТАНИМИР
+МИКЕ ЕСТЕР
+МИКЕШ АНДРИЈА
+МИКЕШ ЕНДРЕ
+МИКЕШ ЕТЕЛ
+МИКЕШ МЕЛАНИЈА
+МИКЕШ МИХАЉ
+МИКЕТИЋ МИРЈАНА
+МИКИЋ ЖАРКО
+МИКИЋ ЖАРКО
+МИКИЋ ЂУРА ДР
+МИКИЋ ДЕСИМИР
+МИКИЋ ИВАН
+МИКИЋ ЈОСИП ДИПЛ ИНГ
+МИКИЋ ЛАЗАР
+МИКИЋ МАКСИМ
+МИКИЋ МИЛАН
+МИКИЋ МИЛЕНА
+МИКИЋ МИЛИСАВ
+МИКИЋ МИЛКА
+МИКИЋ МИЛКА
+МИКИЋ МИЛОВАН
+МИКИЋ МИРОСЛАВ
+МИКИЋ ОЛГА
+МИКИЋ РАДИВОЈЕ
+МИКИЋ РАДОЈКА
+МИКИЋ РАДОСЛАВКА
+МИКИЋ РУЖА
+МИКИЋ СЛОБОДАН
+МИКИЋ СРБОЉУБ
+МИКИЋ СТОЈА
+МИКИЋ ТОДОР
+МИКИЋ ВЛАДАН
+МИКИЋ ЗОРКА
+МИКИН НАДА
+МИКИТИШИН НАДА
+МИКЛЕВ СТОЈАНКА
+МИКЛИЋ ЂОРЂЕ
+МИКЛИЋ АНА
+МИКЛИЋ ТЕРЕЗА
+МИКЛОШ АНДРАШ
+МИКЛОШ АНДРИЈА
+МИКЛОШ АНТАЛ
+МИКЛОШ ДИМИТРИЈЕ
+МИКЛОШ ЈАНКО
+МИКЛОШ ЈЕЛИСАВЕТА
+МИКЛОШ ЈУЛИЈАН
+МИКЛОШ НАНДОР ДР ЛЕКАР
+МИКЛОШ СТЕВАН
+МИКЛОШ ВЛАДИМИР
+МИКЛОВИЦ ЈАН
+МИКЛОВИЦ МИЛОСЛАВ
+МИКОЛА ЂУРА
+МИКОЛАЦИ ЛЕПОСАВА
+МИКОЛЕЦКИ СЛАВИЦА
+МИКОЛИЋ АЛЕКСАНДАР
+МИКОВ ЈОВАНКА
+МИКОВ МЕТОДИ ДР ЛЕКАР
+МИКОВ МОМИР
+МИКОВИЋ ЂОРЂЕ
+МИКОВИЋ ЂОРЂЕ
+МИКОВИЋ ЂУРА
+МИКОВИЋ АЛЕКСАНДАР
+МИКОВИЋ АЛЕКСАНДАР
+МИКОВИЋ ДАНИЛО
+МИКОВИЋ ДАРИНКА
+МИКОВИЋ ДЕЈАН
+МИКОВИЋ ДЕСАНКА
+МИКОВИЋ ЈЕЛЕНА
+МИКОВИЋ ЛАЗАР
+МИКОВИЋ ЉИЉАНА
+МИКОВИЋ МИЛЕНА
+МИКОВИЋ МИОДРАГ
+МИКОВИЋ МЛАДЕН
+МИКОВИЋ МОМЧИЛО ДР ПРАВНИК
+МИКОВИЋ НАДА
+МИКОВИЋ НИНОСЛАВ
+МИКОВИЋ ПАВА
+МИКОВИЋ РУЖИЦА
+МИКОВИЋ СЛАВКО
+МИКОВИЋ СНЕЖАНА
+МИКОВИЋ СРЕДОЈЕ
+МИКОВИЛОВИЋ ИВАН
+МИКСАТ ЈОЖЕФ
+МИКУШ АНЂЕЛКА
+МИКУШ МИЛКА
+МИКУШ МИРЈАНА
+МИКУЛЕСКО ДУШАН
+МИКУЛЕСКО САВО ДИПЛ ИНГ
+МИКУЛИЋ ШИМЕ
+МИКУЛИЋ БИЉАНА
+МИКУЛИЋ БЛАЖ
+МИКУЛИЋ ЕДИТ
+МИКУЛИЋ ИВАН
+МИКУЛИЋ ИВАН
+МИКУЛИЋ ИВА
+МИКУЛИЋ ЈЕЛИСАВЕТА
+МИКУЛИЋ ЛОВРЕ
+МИКУЛИЋ МАРА
+МИКУЛИЋ МИЛЕ
+МИКУЛИЋ МИЛИЋ
+МИКУЛИНАЦ МАТИЈА
+МИКУЛИНАЦ РЕНЕТА
+МИКУЛИНАЦ СЛАВИЦА
+МИЛЧИЋ ДРАГАН
+МИЛЧИЋ ЈОВАН
+МИЛАЧИЋ ЖЕЉКО
+МИЛАЧИЋ БОРИВОЈЕ
+МИЛАЧИЋ БРАНИСЛАВ
+МИЛАЧИЋ БРАНКО
+МИЛАЧИЋ ДУШАН
+МИЛАЧИЋ ИВАН
+МИЛАЧИЋ ЉУБОМИР
+МИЛАЧИЋ МАШАН
+МИЛАЧИЋ МИЛЕНКО
+МИЛАЧИЋ СРБОСЛАВ
+МИЛАЧИЋ СВЕТОЗАР
+МИЛАЧИЋ ЗОРИЦА
+МИЛАШ ДРАГАН
+МИЛАШ ДУШАНКА
+МИЛАШЕВИЋ ЗОРКА
+МИЛАШИНОВИЋ ЈОВАН
+МИЛАШИНОВИЋ ЉУБОМИР
+МИЛАШИНОВИЋ МИЋУН
+МИЛАШИНОВИЋ МИЛОРАД
+МИЛАШИНОВИЋ МИРЈАНА
+МИЛАШИНОВИЋ МИРКО
+МИЛАШИНОВИЋ МИРКО
+МИЛАШИНОВИЋ РАДЕ
+МИЛАШИНОВИЋ-СТАНОЈЕВИЋ ЉИЉАНА
+МИЛАШИНОВИЋ ВУКОМАН
+МИЛАШИНОВИЋ ЗЛАТОЈА
+МИЛАДИЋ ЧЕДА
+МИЛАДИЋ ДОБРОМИР
+МИЛАДИЋ ПЕТАР
+МИЛАДИНОСКИ ЛЕВКО
+МИЛАДИНОВ ЖАРКО
+МИЛАДИНОВ ЖИВКО
+МИЛАДИНОВ БОЖИДАР
+МИЛАДИНОВ ДАНИЦА
+МИЛАДИНОВ ДАНИЦА
+МИЛАДИНОВ ДУШАНКА
+МИЛАДИНОВ ДУШАН
+МИЛАДИНОВ ЈОЦА
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВИЦА
+МИЛАДИНОВ ЉУБИЦА
+МИЛАДИНОВ МАРИЈА
+МИЛАДИНОВ МИЛАН
+МИЛАДИНОВ МИЛАН
+МИЛАДИНОВ МИЛЕНА
+МИЛАДИНОВ МИЛЕНКО
+МИЛАДИНОВ МИЛОВАН ДИПЛ ИНГ
+МИЛАДИНОВ МИЛОВАН
+МИЛАДИНОВ НАДА
+МИЛАДИНОВ НОВАК
+МИЛАДИНОВ РАДИВОЈ
+МИЛАДИНОВ РАДОВАН
+МИЛАДИНОВ СЛАВИЦА
+МИЛАДИНОВ СРБИНКО
+МИЛАДИНОВ СВЕТОЗАР
+МИЛАДИНОВ СВЕТОЗАР
+МИЛАДИНОВ ТИХОМИР
+МИЛАДИНОВ ВЕСНА
+МИЛАДИНОВ ВЈЕРА
+МИЛАДИНОВИЋ ЖИВАДИН ДИПЛ ИНГ
+МИЛАДИНОВИЋ ЖИВОЈИН
+МИЛАДИНОВИЋ ЂОРЂЕ
+МИЛАДИНОВИЋ АЛЕКСАНДАР
+МИЛАДИНОВИЋ АЛЕКСАНДАР
+МИЛАДИНОВИЋ БОЖИДАР
+МИЛАДИНОВИЋ БРАНИМИР
+МИЛАДИНОВИЋ БРАНКО
+МИЛАДИНОВИЋ ДАМИР
+МИЛАДИНОВИЋ ДИВНА
+МИЛАДИНОВИЋ ДРАГАН
+МИЛАДИНОВИЋ ДРАГАН
+МИЛАДИНОВИЋ ДРАГИША
+МИЛАДИНОВИЋ ДРАГОМИР
+МИЛАДИНОВИЋ ДРАГОСЛАВ
+МИЛАДИНОВИЋ ДУШАН
+МИЛАДИНОВИЋ ЈОВАН
+МИЛАДИНОВИЋ ЈОВАН
+МИЛАДИНОВИЋ ЉУБИЦА
+МИЛАДИНОВИЋ ЉУБИНКА
+МИЛАДИНОВИЋ МАРКО
+МИЛАДИНОВИЋ МИХАЈЛО
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛЕ
+МИЛАДИНОВИЋ МИЛОВАН
+МИЛАДИНОВИЋ МИРОСЛАВ
+МИЛАДИНОВИЋ НОВИЦА
+МИЛАДИНОВИЋ ПРЕДРАГ
+МИЛАДИНОВИЋ РАДМИЛО
+МИЛАДИНОВИЋ РАДОСЛАВ
+МИЛАДИНОВИЋ СЛАВКО
+МИЛАДИНОВИЋ СЛОБОДАНКА
+МИЛАДИНОВИЋ СЛОБОДАН
+МИЛАДИНОВИЋ СЛОБОДАН
+МИЛАДИНОВИЋ СВЕТОМИР
+МИЛАДИНОВИЋ ТОДЕ
+МИЛАДИНОВИЋ ВЕРА
+МИЛАК ЂОРЂЕ
+МИЛАК ДАРИНКА
+МИЛАК ДУШАН
+МИЛАК ЈЕЛЕНА
+МИЛАК ЈОВАН
+МИЛАК ЈОВАН
+МИЛАК КАТИЦА
+МИЛАК ЛАЗАР
+МИЛАК МИЛАН
+МИЛАК МИЛАН
+МИЛАК МИЛЕНКО
+МИЛАК МИЛОШ
+МИЛАК РАДОСЛАВ
+МИЛАК САВА
+МИЛАКОВ ЈЕЛЕНА ДР ПРОФ
+МИЛАКОВ ЉУБИЦА ДР
+МИЛАКОВ МИРЈАНА
+МИЛАКОВИЋ ЂОРЂЕ
+МИЛАКОВИЋ ЂУРАЂ
+МИЛАКОВИЋ ЂУРО
+МИЛАКОВИЋ БОСИЉКА
+МИЛАКОВИЋ ДАНИЦА
+МИЛАКОВИЋ ДРАГИЦА
+МИЛАКОВИЋ ДУШАН
+МИЛАКОВИЋ ГОРАН
+МИЛАКОВИЋ МИЛАН
+МИЛАКОВИЋ МИЛКА
+МИЛАКОВИЋ МЛАДЕН
+МИЛАКОВИЋ РАДМИЛА
+МИЛАКОВИЋ РАТОМИР
+МИЛАКОВИЋ ТЕОДОР
+МИЛАКОВИЋ ВОЈИСЛАВ
+МИЛАКОВИЋ ВОЈО
+МИЛАКОВИЋ ВУКИЦА
+МИЛАКОВИЋ ЗОРАН
+МИЛАНКО СЛАВКО
+МИЛАНКОВ ЖИВА
+МИЛАНКОВ ЖИВА
+МИЛАНКОВ ЂОРЂЕ
+МИЛАНКОВ БРАНИСЛАВ
+МИЛАНКОВ ЦВЕТА
+МИЛАНКОВ ДУШАН
+МИЛАНКОВ ИВАН
+МИЛАНКОВ ЈЕЛЕНА
+МИЛАНКОВ ЈУЛИЈАНА
+МИЛАНКОВ ЛАЗАР
+МИЛАНКОВ МАРКО
+МИЛАНКОВ МИЛЕНКО
+МИЛАНКОВ МИЛИВОЈ
+МИЛАНКОВ МИЛКО
+МИЛАНКОВ СЛАВИМИР
+МИЛАНКОВ СОФИЈА
+МИЛАНКОВ СТАНИМИР
+МИЛАНКОВ СТЕВАН
+МИЛАНКОВИЋ ЂОРЂЕ
+МИЛАНКОВИЋ ЂОРЂЕ
+МИЛАНКОВИЋ АНА
+МИЛАНКОВИЋ-ЦОКОВИЋ МИРЈАНА
+МИЛАНКОВИЋ ДРАГОЉУБ
+МИЛАНКОВИЋ ГОРАН
+МИЛАНКОВИЋ ГОРАН
+МИЛАНКОВИЋ ИЛИНКА
+МИЛАНКОВИЋ ЛАЗАР
+МИЛАНКОВИЋ МИЛАНКО
+МИЛАНКОВИЋ МИЛАН
+МИЛАНКОВИЋ МИЛЕВА
+МИЛАНКОВИЋ РАДОСЛАВ
+МИЛАНКОВИЋ СЛОБОДАН
+МИЛАНКОВИЋ ЗОРА
+МИЛАНОВ АНИЦА
+МИЛАНОВ АНКА
+МИЛАНОВ БОГДАН
+МИЛАНОВ БОРИСЛАВА
+МИЛАНОВ ДОБРИВОЈ
+МИЛАНОВ ЈЕЛИЦА
+МИЛАНОВ ЉУБИША
+МИЛАНОВ МИЛАН
+МИЛАНОВ МИОДРАГ
+МИЛАНОВ МИРЈАНА
+МИЛАНОВ МЛАДЕН
+МИЛАНОВ ПЕРСИДА
+МИЛАНОВ РАДИВОЈ
+МИЛАНОВ САВКА
+МИЛАНОВ СВЕТОЗАР
+МИЛАНОВ ВУКОСАВА
+МИЛАНОВИЋ ЖЕЉКО
+МИЛАНОВИЋ ЖИВОРАД
+МИЛАНОВИЋ ЖИВОТИЈЕ
+МИЛАНОВИЋ АЛЕКСАНДАР
+МИЛАНОВИЋ БОШКО
+МИЛАНОВИЋ БОЖИДАР
+МИЛАНОВИЋ БОГДАН
+МИЛАНОВИЋ БРАНКО ДР
+МИЛАНОВИЋ БРАНКО
+МИЛАНОВИЋ ЦВИЈЕТИН
+МИЛАНОВИЋ ДАМЈАНКА
+МИЛАНОВИЋ ДЕСАНКА
+МИЛАНОВИЋ ДОНКА
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГИЦА
+МИЛАНОВИЋ ДРАГО
+МИЛАНОВИЋ ДУШАН
+МИЛАНОВИЋ ГОРАН
+МИЛАНОВИЋ ГОРАН
+МИЛАНОВИЋ ИЛИЈА
+МИЛАНОВИЋ ИЛИЈА
+МИЛАНОВИЋ ЈАСМИНА
+МИЛАНОВИЋ КАТИЦА
+МИЛАНОВИЋ ЉИЉАНА
+МИЛАНОВИЋ ЉУБИША
+МИЛАНОВИЋ ЉУБИЦА
+МИЛАНОВИЋ МАРТА
+МИЛАНОВИЋ МИХО
+МИЛАНОВИЋ МИЛАНА
+МИЛАНОВИЋ МИЛЕНКО
+МИЛАНОВИЋ МИЛЕНКО
+МИЛАНОВИЋ МИЛИЈА
+МИЛАНОВИЋ МИЛИСАВ
+МИЛАНОВИЋ МИЛИСАВ
+МИЛАНОВИЋ МИЛОЈЕ
+МИЛАНОВИЋ МИЛОРАД
+МИЛАНОВИЋ МИЛОРАД
+МИЛАНОВИЋ МИОДРАГ
+МИЛАНОВИЋ МЛАДЕН
+МИЛАНОВИЋ НАДА
+МИЛАНОВИЋ-ПЕТРАШЕВИЋ ДРАГИЦА
+МИЛАНОВИЋ РАДОСЛАВ
+МИЛАНОВИЋ РАДОВАН
+МИЛАНОВИЋ САША
+МИЛАНОВИЋ СЛАВОЉУБ
+МИЛАНОВИЋ СЛОБОДАН
+МИЛАНОВИЋ СВЕТОМИР
+МИЛАНОВИЋ ВИКТОРИЈА
+МИЛАНОВИЋ ВИТКО
+МИЛАНОВИЋ ВЛАДИМИР
+МИЛАНОВИЋ ВЛАДИМИР
+МИЛАНОВИЋ ВУЈО
+МИЛАНОВИЋ ЗОРАН
+МИЛАНОВИЋ ЗОРАН
+МИЛАНОВИЋ ЗОРА
+МИЛАНОВИЋ ЗОРКА
+МИЛАРИЋ ИВАН
+МИЛАТОВИЋ ДАНИЛО
+МИЛАТОВИЋ ЈОВАНКА
+МИЛАТОВИЋ ВЛАДИМИР
+МИЛЕШЕВ МИЛИЦА
+МИЛЕШЕВИЋ ОБРАД
+МИЛЕЦ ДОРОТЕА
+МИЛЕЦ ИЛОНКА
+МИЛЕИ ДРАГУТИН
+МИЛЕИ ЈАНОШ
+МИЛЕИ ТОМИСЛАВ
+МИЛЕКШИЋ БОГДАН
+МИЛЕКИЋ ДУШАН
+МИЛЕКИЋ МИЛОМИР
+МИЛЕКИЋ НИКОЛА
+МИЛЕКИЋ СТЕВАН
+МИЛЕКИЋ УРОШ
+МИЛЕНКОВИЋ ЖАРКО
+МИЛЕНКОВИЋ ЖИВОЈИН
+МИЛЕНКОВИЋ ЂОРЂЕ
+МИЛЕНКОВИЋ ЂУРЂИНА
+МИЛЕНКОВИЋ АЛЕКСАНДАР
+МИЛЕНКОВИЋ-АНТИЋ ЛАЗАР
+МИЛЕНКОВИЋ-БЈЕЛАЈАЦ МИЛАНКА
+МИЛЕНКОВИЋ БОЖИДАР
+МИЛЕНКОВИЋ БОГОМИР
+МИЛЕНКОВИЋ БОРИВОЈЕ
+МИЛЕНКОВИЋ БРАНИСЛАВ
+МИЛЕНКОВИЋ БРАНИСЛАВ
+МИЛЕНКОВИЋ БРАНКО
+МИЛЕНКОВИЋ БРАТИСЛАВ
+МИЛЕНКОВИЋ БРАТИСЛАВ
+МИЛЕНКОВИЋ ДАРИНКА
+МИЛЕНКОВИЋ ДОБРИЛА
+МИЛЕНКОВИЋ ДОБРИЛА
+МИЛЕНКОВИЋ ДОБРИВОЈЕ
+МИЛЕНКОВИЋ ДРАГАН ДР
+МИЛЕНКОВИЋ ДРАГОШ
+МИЛЕНКОВИЋ ДРАГОЉУБ ДР
+МИЛЕНКОВИЋ ДРАГОСЛАВ
+МИЛЕНКОВИЋ ДРАГОСЛАВ
+МИЛЕНКОВИЋ ДУШАН
+МИЛЕНКОВИЋ ДУШАН
+МИЛЕНКОВИЋ ЕРЖИКА
+МИЛЕНКОВИЋ ГРОЗДАНА
+МИЛЕНКОВИЋ ИЛОНКА
+МИЛЕНКОВИЋ ИРЕНА
+МИЛЕНКОВИЋ ЈЕЛИЦА
+МИЛЕНКОВИЋ ЈЕВТО
+МИЛЕНКОВИЋ ЈУГОСЛАВ
+МИЛЕНКОВИЋ ЈУСТИНА
+МИЛЕНКОВИЋ КОВИЉКА
+МИЛЕНКОВИЋ КРСТАНА
+МИЛЕНКОВИЋ ЉИЉАНА
+МИЛЕНКОВИЋ ЉИЉАНА
+МИЛЕНКОВИЋ МИЛИЈАН
+МИЛЕНКОВИЋ МИЛИСАВ
+МИЛЕНКОВИЋ МИЛОРАД
+МИЛЕНКОВИЋ МИЛОРАД
+МИЛЕНКОВИЋ МИЛОСАВ
+МИЛЕНКОВИЋ МИЛУТИН
+МИЛЕНКОВИЋ МИОДРАГ
+МИЛЕНКОВИЋ МИРОСЛАВ
+МИЛЕНКОВИЋ МИРОСЛАВ
+МИЛЕНКОВИЋ МОМЧИЛО
+МИЛЕНКОВИЋ НЕБОЈША
+МИЛЕНКОВИЋ НЕНАД
+МИЛЕНКОВИЋ НИЋИФОР
+МИЛЕНКОВИЋ ПАУН
+МИЛЕНКОВИЋ ПРЕДРАГ
+МИЛЕНКОВИЋ РАДИСАВ
+МИЛЕНКОВИЋ РАДОМИР
+МИЛЕНКОВИЋ РАДОСЛАВ
+МИЛЕНКОВИЋ РАДОВАН
+МИЛЕНКОВИЋ САВА
+МИЛЕНКОВИЋ СЛАВОЉУБ
+МИЛЕНКОВИЋ СНЕЖАНА
+МИЛЕНКОВИЋ СРЕТЕН
+МИЛЕНКОВИЋ СТОЈАНКА
+МИЛЕНКОВИЋ СВЕТИСЛАВ
+МИЛЕНКОВИЋ СВЕТОМИР
+МИЛЕНКОВИЋ ТИХОМИР
+МИЛЕНКОВИЋ ВЕСЕЛИНКА
+МИЛЕНКОВИЋ ВИТОМИР
+МИЛЕНКОВИЋ ВЛАДАН
+МИЛЕНКОВИЋ ЗОРИЦА
+МИЛЕНКОВИЋ ЗОРКА
+МИЛЕНКОВСКИ БЛАГОЈЕ
+МИЛЕНКОВСКИ МИЛИЦА
+МИЛЕНОВИЋ ЖИВА
+МИЛЕНОВИЋ-БЕКИЋ МИРЈАНА
+МИЛЕНОВИЋ БРАНКО
+МИЛЕНОВИЋ МИЛОРАД
+МИЛЕНОВИЋ ОЛГА
+МИЛЕНОВИЋ ПРЕДРАГ
+МИЛЕНТИЈЕВИЋ ЖИВОРАД
+МИЛЕНТИЈЕВИЋ ЗДРАВКО
+МИЛЕР БАРБАРА
+МИЛЕР ЕРЖЕБЕТ
+МИЛЕР ФРАЊА
+МИЛЕР ИМРЕ ДР ЛЕКАР
+МИЛЕР ИВАНКА
+МИЛЕР ЈЕЛЕНА
+МИЛЕР ЈЕЛИЦА
+МИЛЕР КАРЛО
+МИЛЕР МАРИЈА
+МИЛЕР МИХАЈЛО
+МИЛЕР ОТОКАР
+МИЛЕР ЗЛАТКО
+МИЛЕСКИ АТАНАСИЈЕ
+МИЛЕТА НИКОЛА
+МИЛЕТАШКИ БОРИВОЈ
+МИЛЕТАШКИ МИЛЕ
+МИЛЕТИЋ ЖИВКО
+МИЛЕТИЋ ЖИВОТА
+МИЛЕТИЋ ЂОРЂЕ
+МИЛЕТИЋ АЛЕКСАНДРА
+МИЛЕТИЋ АНА
+МИЛЕТИЋ БОЖА
+МИЛЕТИЋ БОРИША
+МИЛЕТИЋ БРАНИСЛАВ
+МИЛЕТИЋ ДОБРОСАВ
+МИЛЕТИЋ ДРАГИЦА
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ГОЈКО
+МИЛЕТИЋ ГВОЗДЕН
+МИЛЕТИЋ ИЛИЈА
+МИЛЕТИЋ ИВИЦА
+МИЛЕТИЋ ЉУБИЦА
+МИЛЕТИЋ ЉУБИСАВ
+МИЛЕТИЋ МИЛИЦА
+МИЛЕТИЋ МИЛИВОЈ
+МИЛЕТИЋ МИЛОЈЕ
+МИЛЕТИЋ МИТА
+МИЛЕТИЋ НАДА
+МИЛЕТИЋ НИКОЛА
+МИЛЕТИЋ ОЛГА
+МИЛЕТИЋ ПЕТАР
+МИЛЕТИЋ РАДЕ
+МИЛЕТИЋ РАДОШ
+МИЛЕТИЋ РАДОЈКА
+МИЛЕТИЋ РАДОСЛАВ
+МИЛЕТИЋ РАНКО
+МИЛЕТИЋ СЕВЕРИНА
+МИЛЕТИЋ СЛАВКО ДР ЛЕКАР
+МИЛЕТИЋ СЛАВКО
+МИЛЕТИЋ СЛАВОЉУБ
+МИЛЕТИЋ СЛОБОДАН
+МИЛЕТИЋ СЛОБОДАН
+МИЛЕТИЋ СОЊА
+МИЛЕТИЋ СТЕВАН
+МИЛЕТИЋ ВЕЛЕ
+МИЛЕТИЋ ВЕЛИБОР
+МИЛЕТИЋ ВЕЛИБОР
+МИЛЕТИЋ ВЕЛИМИР
+МИЛЕТИЋ ВИДОСАВА
+МИЛЕТИЋ ЗДРАВКО
+МИЛЕТИЦКИ РАДА
+МИЛЕТИЦКИ ЗОРКА
+МИЛЕТИН ДАНА
+МИЛЕТИН МИРЈАНА
+МИЛЕТИН НИКОЛА
+МИЛЕТИН РАДИВОЈ
+МИЛЕТИН СВЕТОЗАР ДИПЛ ОЕЦ
+МИЛЕТОВИЋ СЛАВКО
+МИЛЕУСНИЋ ДРАГАН
+МИЛЕУСНИЋ МАРКО
+МИЛЕУСНИЋ НАДА
+МИЛЕУСНИЋ НАДА
+МИЛЕУСНИЋ ПЕТАР
+МИЛЕВ ПЕТАР
+МИЛЕВСКИ ЂОРЂЕ
+МИЛХАНС СТАНИСЛАВ
+МИЛИЧЕВИЋ ЂУРА
+МИЛИЧЕВИЋ АРАНКА
+МИЛИЧЕВИЋ БРАНКО
+МИЛИЧЕВИЋ ДРАГИЊА
+МИЛИЧЕВИЋ ДУШАН
+МИЛИЧЕВИЋ ЈОВАН
+МИЛИЧЕВИЋ КАТИЦА
+МИЛИЧЕВИЋ МИЛАН
+МИЛИЧЕВИЋ МИЛЕНКО
+МИЛИЧЕВИЋ МИЛИЦА
+МИЛИЧЕВИЋ МИЛИВОЈ
+МИЛИЧЕВИЋ МИЛКАН
+МИЛИЧЕВИЋ МЛАДЕН
+МИЛИЧЕВИЋ НЕНАД
+МИЛИЧЕВИЋ НОВИЦА
+МИЛИЧЕВИЋ ПАВА
+МИЛИЧЕВИЋ ПЕРО
+МИЛИЧЕВИЋ СТАНИМИР
+МИЛИЧЕВИЋ СТЕВАН
+МИЛИЧЕВИЋ ТОМИСЛАВ
+МИЛИЧИЋ ЖАРКО
+МИЛИЧИЋ АЛЕКСАНДАР
+МИЛИЧИЋ АНА
+МИЛИЧИЋ АНДРИЈА
+МИЛИЧИЋ АНКА
+МИЛИЧИЋ БОРИСЛАВ
+МИЛИЧИЋ БРАНКО
+МИЛИЧИЋ ДРАГИЦА
+МИЛИЧИЋ ДРАГОМИР
+МИЛИЧИЋ ДУШАН
+МИЛИЧИЋ ЈЕЛИЦА
+МИЛИЧИЋ ЈОВАНКА
+МИЛИЧИЋ ЈОВАН
+МИЛИЧИЋ КАТИЦА
+МИЛИЧИЋ ЉУБИНКА
+МИЛИЧИЋ МАРИНКО
+МИЛИЧИЋ МИХАЈЛО
+МИЛИЧИЋ МИЛОШ
+МИЛИЧИЋ МИРЈАНА
+МИЛИЧИЋ РАДОВАН
+МИЛИЧИЋ РАЈКО
+МИЛИЧИЋ СТЕВАН
+МИЛИЧИЋ ТИЛКА
+МИЛИЧИЋ ВАСА
+МИЛИШИЋ ЂОРЂЕ
+МИЛИШИЋ ДУШАНКА
+МИЛИШИЋ НЕБОЈША
+МИЛИЋ ЧЕДОМИР
+МИЛИЋ ЧЕДОМИР
+МИЛИЋ ЖИКА
+МИЛИЋ ЖИВКО
+МИЛИЋ ЖИВОМИР
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂУРИЦА
+МИЛИЋ АДИЛА
+МИЛИЋ АЛЕКСАНДАР
+МИЛИЋ АЛЕКСАНДРА
+МИЛИЋ АНЂЕЛИЈА
+МИЛИЋ БОЖИДАР ДР
+МИЛИЋ БОЖИДАР
+МИЛИЋ БОЖО
+МИЛИЋ БОГДАН
+МИЛИЋ БОЈАНА
+МИЛИЋ БОРИВОЈЕ
+МИЛИЋ БОРИВОЈ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНКА
+МИЛИЋ БРАНКО
+МИЛИЋ БРАНКО
+МИЛИЋ БРАТИСЛАВ
+МИЛИЋ ДАНИЦА
+МИЛИЋ ДАНИЛКА
+МИЛИЋ ДАНИЛКА
+МИЛИЋ ДАНИЛО
+МИЛИЋ ДАРА
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГИЦА
+МИЛИЋ ДРАГИЦА
+МИЛИЋ ДРАГОМИР
+МИЛИЋ ДРАГОМИР
+МИЛИЋ ДРАГОСЛАВ
+МИЛИЋ ДУШАНКА
+МИЛИЋ ДУШАНКА
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ЕЛИЗАБЕТА
+МИЛИЋ ЕМИЛИЈА
+МИЛИЋ ЕМИЛИЈА
+МИЛИЋ ЕВА
+МИЛИЋ ЕВА
+МИЛИЋ ЕВИЦА
+МИЛИЋ ФЕРЕНЦ
+МИЛИЋ ГАВРА
+МИЛИЋ ИЛИЈА
+МИЛИЋ-ЈАГОДИНСКИ МИЛАН
+МИЛИЋ ЈАНКО
+МИЛИЋ ЈЕЛЕНА
+МИЛИЋ ЈЕЛИЦА
+МИЛИЋ ЈЕЛКА
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВА
+МИЛИЋ ЈОВО
+МИЛИЋ ЈОВО
+МИЛИЋ ЈУЛКА
+МИЛИЋ КАТИЦА
+МИЛИЋ КРСТО
+МИЛИЋ КСЕНИЈА
+МИЛИЋ ЛАЗАР
+МИЛИЋ ЉИЉАНА
+МИЛИЋ ЉУБИША
+МИЛИЋ ЉУБИЦА
+МИЛИЋ ЉУБОМИР ДИПЛ ИНГ
+МИЛИЋ ЉУБОМИР
+МИЛИЋ ЉУБОМИР
+МИЛИЋ ЉУБОМИР
+МИЛИЋ МАРА
+МИЛИЋ МАРИЈА
+МИЛИЋ МАРИЈА
+МИЛИЋ МАРИЈА
+МИЛИЋ МИЛАНКА
+МИЛИЋ МИЛАН
+МИЛИЋ МИЛЕНКО
+МИЛИЋ МИЛИЦА
+МИЛИЋ МИЛИЦА
+МИЛИЋ МИЛОШ
+МИЛИЋ МИЛОШ
+МИЛИЋ МИЛОРАД
+МИЛИЋ МИЛОСАВ
+МИЛИЋ МИЛУТИН
+МИЛИЋ МИОДРАГ
+МИЛИЋ МИРЈАНА ДИПЛ ОЕЦ
+МИЛИЋ МИРЈАНА
+МИЛИЋ МИРОСЛАВ
+МИЛИЋ МИТА
+МИЛИЋ МЛАДЕН
+МИЛИЋ НАДА
+МИЛИЋ НЕДЕЉКО
+МИЛИЋ НИКОЛА
+МИЛИЋ НИКОЛА
+МИЛИЋ НОВАК
+МИЛИЋ НОВАК
+МИЛИЋ ПАНТА
+МИЛИЋ ПАВЛЕ
+МИЛИЋ ПЕРА
+МИЛИЋ ПЕТАР
+МИЛИЋ ПЕТАР
+МИЛИЋ ПРОКА
+МИЛИЋ РАДА
+МИЛИЋ РАДЕ
+МИЛИЋ РАДИВОЈЕ
+МИЛИЋ РАДМИЛА
+МИЛИЋ РАДОЈКА
+МИЛИЋ РАДОМИР
+МИЛИЋ РАНКО
+МИЛИЋ РУЖА
+МИЛИЋ САНДРА
+МИЛИЋ САВА
+МИЛИЋ СЛАВИЦА
+МИЛИЋ СЛАВИЦА
+МИЛИЋ СЛАВКА
+МИЛИЋ СЛАВКО
+МИЛИЋ СЛАВУЈ
+МИЛИЋ СОФИЈА
+МИЛИЋ СТЕВАН
+МИЛИЋ СТЕВАН
+МИЛИЋ СТЕВАН
+МИЛИЋ СВЕТЛАНА
+МИЛИЋ СВЕТОЗАР
+МИЛИЋ СВЕТОЗАР
+МИЛИЋ ТЕОДОРА
+МИЛИЋ ТОДОР
+МИЛИЋ ТОДОР
+МИЛИЋ ТОМИСЛАВ
+МИЛИЋ ТОМИСЛАВ
+МИЛИЋ УРОШ
+МИЛИЋ ВАСА
+МИЛИЋ ВЕЛИНКА
+МИЛИЋ ВЕРА
+МИЛИЋ ВЕРА
+МИЛИЋ ВЕРИЦА
+МИЛИЋ ВЛАДИЦА
+МИЛИЋ ВЛАДО
+МИЛИЋ ВУКИЦА
+МИЛИЋ ЗДРАВКО
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРА
+МИЛИЋЕВ БОРИСЛАВ
+МИЛИЋЕВ БРАНКО
+МИЛИЋЕВ СЛАВКО
+МИЛИЋЕВ ВАСИЛИЈЕ
+МИЛИЋЕВ ВИКЕНТИЈЕ
+МИЛИЋЕВИЋ ЖИВОРАД
+МИЛИЋЕВИЋ ЂОРЂЕ
+МИЛИЋЕВИЋ ЂОРЂЕ
+МИЛИЋЕВИЋ ЂУРАЂ
+МИЛИЋЕВИЋ БОЖИДАР
+МИЛИЋЕВИЋ БОРИША
+МИЛИЋЕВИЋ БРАНКО
+МИЛИЋЕВИЋ ДРАГАН
+МИЛИЋЕВИЋ ДУШАН
+МИЛИЋЕВИЋ ДУШАН
+МИЛИЋЕВИЋ ГОЈКО
+МИЛИЋЕВИЋ ГОРДАНА
+МИЛИЋЕВИЋ КАТАРИНА
+МИЛИЋЕВИЋ КАТИЦА
+МИЛИЋЕВИЋ КСЕНИЈА ДР СТОМАТОЛОГ
+МИЛИЋЕВИЋ ЉУБОМИР
+МИЛИЋЕВИЋ МАРКО
+МИЛИЋЕВИЋ МИХАИЛО
+МИЛИЋЕВИЋ МИЛИЦА
+МИЛИЋЕВИЋ МИЛОРАД
+МИЛИЋЕВИЋ МИЛОВАН
+МИЛИЋЕВИЋ МИОДРАГ
+МИЛИЋЕВИЋ МИОДРАГ
+МИЛИЋЕВИЋ МОМЧИЛО
+МИЛИЋЕВИЋ МОМЧИЛО
+МИЛИЋЕВИЋ НАТАША
+МИЛИЋЕВИЋ НИКОЛА
+МИЛИЋЕВИЋ ПАВЛЕ
+МИЛИЋЕВИЋ ПЕТАР
+МИЛИЋЕВИЋ РАДМИЛА
+МИЛИЋЕВИЋ РАЈКО
+МИЛИЋЕВИЋ СЛАЂАНА
+МИЛИЋЕВИЋ СЛАВИЦА
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СПАСО
+МИЛИЋЕВИЋ СТАНА
+МИЛИЋЕВИЋ СТЕВАН
+МИЛИЋЕВИЋ СТЕВАН
+МИЛИЋЕВИЋ СВЕТИСЛАВ
+МИЛИЋЕВИЋ ВЕЛИША
+МИЛИЋЕВИЋ ВЕРОЉУБ
+МИЛИЋЕВИЋ ВИТОМИР
+МИЛИЋЕВИЋ ВЛАДИМИР
+МИЛИЋЕВИЋ ВУКОМИР
+МИЛИЦ КАРОЉ
+МИЛИДРАГ КРСТО
+МИЛИДРАГОВИЋ БОРИСЛАВ
+МИЛИДРАГОВИЋ ЛАЗАР
+МИЛИДРАГОВИЋ МИЛИВОЈЕ
+МИЛИДРАГОВИЋ МИЛОРАД ДИПЛ ИНГ
+МИЛИДРАГОВИЋ МЛАДЕН
+МИЛИДРАГОВИЋ НЕДЕЉКО
+МИЛИДРАГОВИЋ СЛОБОДАН
+МИЛИЈАШ-ПАВКОВИЋ МАРИЈА
+МИЛИЈАШЕВИЋ ЖИВОРАД
+МИЛИЈАШЕВИЋ БОШКО
+МИЛИЈАШЕВИЋ МИЛАН
+МИЛИЈАНОВИЋ ЂОРЂЕ
+МИЛИЈАНОВИЋ МИЛАН
+МИЛИЈЕВИЋ ЂУРАЂ
+МИЛИКИЋ ДРАГОЈЕ
+МИЛИКИЋ СИМА
+МИЛИН ЖИВАН
+МИЛИН БРАНИСЛАВ
+МИЛИН ДУШАН
+МИЛИН ДУШАН
+МИЛИН ИВАН
+МИЛИН ЈОВАН
+МИЛИН МИЛЕНКО
+МИЛИН МИЛИЦА
+МИЛИН МОМИР
+МИЛИН РАДИВОЈ ДР
+МИЛИН РАДИВОЈ
+МИЛИН СНЕЖАНА
+МИЛИН СТЕВАН
+МИЛИН СВЕТИСЛАВ
+МИЛИН ВОЈИСЛАВ НОВИНАР
+МИЛИН ЗДРАВКО ДИПЛ ИНГ
+МИЛИН ЗОРИЦА
+МИЛИНЧИЋ ЧАСЛАВ
+МИЛИНЧИЋ СТОЈАН
+МИЛИНИЋ РАДЕНКО
+МИЛИНИЋ РАЈКО
+МИЛИНКОВ ЖИВАН
+МИЛИНКОВ ЖИВОЈИН
+МИЛИНКОВ АНЂЕЛКА
+МИЛИНКОВ БОЖА
+МИЛИНКОВ БРАНИСЛАВ
+МИЛИНКОВ БРАНИСЛАВ
+МИЛИНКОВ БРАНКО
+МИЛИНКОВ ДАНИЛО
+МИЛИНКОВ ДУШАН
+МИЛИНКОВ ИВАН
+МИЛИНКОВ ЈУЛКА
+МИЛИНКОВ ЛАЗАР
+МИЛИНКОВ ЉУБИЦА
+МИЛИНКОВ МИЛАН
+МИЛИНКОВ МИЛИЦА
+МИЛИНКОВ НЕНАД
+МИЛИНКОВ НЕНАД
+МИЛИНКОВ НИКОЛА
+МИЛИНКОВ СЛОБОДАН
+МИЛИНКОВ ВЕРА
+МИЛИНКОВ ВЕСЕЛИН
+МИЛИНКОВ ВЛАЈКО
+МИЛИНКОВ ЗОРАН
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂУРО
+МИЛИНКОВИЋ БИЉАНА
+МИЛИНКОВИЋ БОЈО
+МИЛИНКОВИЋ БУДИМИР
+МИЛИНКОВИЋ ДРАГАН
+МИЛИНКОВИЋ ДРАГОСЛАВ
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ЕТЕЛКА
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ЈОВАН
+МИЛИНКОВИЋ ЈОВИЦА
+МИЛИНКОВИЋ ЉИЉАНА
+МИЛИНКОВИЋ МАРА
+МИЛИНКОВИЋ МИЛАН
+МИЛИНКОВИЋ МИЛЕНА
+МИЛИНКОВИЋ МИЛИЋ
+МИЛИНКОВИЋ МИЛОРАД
+МИЛИНКОВИЋ НАДЕЖДА
+МИЛИНКОВИЋ НОВАК
+МИЛИНКОВИЋ ПАНТА
+МИЛИНКОВИЋ ПЕТАР
+МИЛИНКОВИЋ СЛАВКО
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СМИЉКА
+МИЛИНКОВИЋ СРЕТО
+МИЛИНКОВИЋ ВИДА
+МИЛИНКОВИЋ ВЛАДИСЛАВ
+МИЛИНКОВИЋ ВОЈА
+МИЛИНОВ ГАВРА
+МИЛИНОВ ЈЕЛЕНКО
+МИЛИНОВ МИЛОРАД
+МИЛИНОВ МИРЈАНА
+МИЛИНОВ МИРОСЛАВ
+МИЛИНОВ НЕВЕНА
+МИЛИНОВ НИКОЛА
+МИЛИНОВ РАДИВОЈ
+МИЛИНОВ СЛАВКО
+МИЛИНОВ СТЕВАН
+МИЛИНОВ СВЕТИСЛАВ
+МИЛИНОВИЋ ЖАРКО
+МИЛИНОВИЋ БОЖИДАР
+МИЛИНОВИЋ БОГОЉУБ
+МИЛИНОВИЋ ДРАГАН
+МИЛИНОВИЋ ДРАГАН
+МИЛИНОВИЋ КСЕНИЈА
+МИЛИНОВИЋ ЛАЗО
+МИЛИНОВИЋ ЉУБОМИР
+МИЛИНОВИЋ ЉУБОМИР
+МИЛИНОВИЋ МИХАЈЛО
+МИЛИНОВИЋ МИРОСЛАВ
+МИЛИНОВИЋ НИКОЛА
+МИЛИНОВИЋ ПЕТАР
+МИЛИНОВИЋ ПЕТАР
+МИЛИНОВИЋ РАДОМИР
+МИЛИНОВИЋ САВА
+МИЛИНОВИЋ СЛОБОДАН
+МИЛИНОВИЋ СТЕВАН
+МИЛИНОВИЋ СТЕВА
+МИЛИНОВИЋ ТИМА
+МИЛИНОВИЋ ВЈЕКОСЛАВ
+МИЛИНСКИ АЛЕКСАНДАР
+МИЛИНСКИ АРПАД
+МИЛИНСКИ ЕРЖЕБЕТ
+МИЛИНСКИ ГАБОР
+МИЛИНСКИ ГОРДАНА
+МИЛИНСКИ ЈЕЛЕНА
+МИЛИНСКИ ЈЕЛЕНА
+МИЛИНСКИ ЛАДИСЛАВ
+МИЛИНСКИ МИХАИЛО
+МИЛИНСКИ НИКОЛА
+МИЛИНСКИ ТЕОДОР
+МИЛИНСКИ ВИКТОР
+МИЛИНСКИ ВИКТОР
+МИЛИНСКИ ЗОЛТАН
+МИЛИСАВАЦ ЖИВАН
+МИЛИСАВЉЕВИЋ ДРАГОМИР
+МИЛИСАВЉЕВИЋ ДРАГОСЛАВ ДР ПРОФ
+МИЛИСАВЉЕВИЋ ЈОВАН
+МИЛИСАВЉЕВИЋ ЈУЛИЈАНА
+МИЛИСАВЉЕВИЋ МИЛАДИН
+МИЛИСАВЉЕВИЋ МИЛАН
+МИЛИСАВЉЕВИЋ МИЛОРАД
+МИЛИСАВЉЕВИЋ МИРЧЕТА
+МИЛИСАВЉЕВИЋ СТАНИМИР
+МИЛИСАВЉЕВИЋ СТАНИМИР
+МИЛИСАВЉЕВИЋ ВЛАДИМИР
+МИЛИВОЈЧЕВ БОРИСЛАВ
+МИЛИВОЈЧЕВ СТЕВАН
+МИЛИВОЈЧЕВИЋ АЛЕКСАНДАР
+МИЛИВОЈША ЛАЗАР
+МИЛИВОЈШИН ЈОВАН
+МИЛИВОЈШИН ПАЈА
+МИЛИВОЈЕВ АНИЦА
+МИЛИВОЈЕВ БОРИВОЈ
+МИЛИВОЈЕВ ГРАДОЈЕ
+МИЛИВОЈЕВ ЈОВАНКА
+МИЛИВОЈЕВ КОНСТАНТИН
+МИЛИВОЈЕВ ЛУКА
+МИЛИВОЈЕВ МИХАЈЛО
+МИЛИВОЈЕВ МИЛАНА
+МИЛИВОЈЕВ МИЛАН
+МИЛИВОЈЕВ МИЛАН
+МИЛИВОЈЕВ МИЛОШ
+МИЛИВОЈЕВ МЛАДЕН
+МИЛИВОЈЕВ НАДА
+МИЛИВОЈЕВ ПАВЛЕ
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВИЋ ЧЕДОМИР
+МИЛИВОЈЕВИЋ ЖИВКА
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ БИЉАНА
+МИЛИВОЈЕВИЋ БОШКО
+МИЛИВОЈЕВИЋ БРАНКО
+МИЛИВОЈЕВИЋ БУДИМИР
+МИЛИВОЈЕВИЋ БУДИСЛАВ
+МИЛИВОЈЕВИЋ ДРАГАН
+МИЛИВОЈЕВИЋ ДРАГАН
+МИЛИВОЈЕВИЋ ДУШАН
+МИЛИВОЈЕВИЋ ДУШАН
+МИЛИВОЈЕВИЋ ИЛИЈА
+МИЛИВОЈЕВИЋ ЈАГОДА
+МИЛИВОЈЕВИЋ ЈЕЛЕНА
+МИЛИВОЈЕВИЋ ЈОВАН
+МИЛИВОЈЕВИЋ ЈОВАН
+МИЛИВОЈЕВИЋ МАРИНА
+МИЛИВОЈЕВИЋ МИЛАН
+МИЛИВОЈЕВИЋ МИЛЕНА
+МИЛИВОЈЕВИЋ МИЛОМИР
+МИЛИВОЈЕВИЋ МИЛОРАД
+МИЛИВОЈЕВИЋ МИЛОВАН
+МИЛИВОЈЕВИЋ МИРЈАНА
+МИЛИВОЈЕВИЋ МИРКО
+МИЛИВОЈЕВИЋ МИРОСЛАВ
+МИЛИВОЈЕВИЋ МОМЧИЛО
+МИЛИВОЈЕВИЋ РАДОЈЕ
+МИЛИВОЈЕВИЋ РАДОСЛАВ
+МИЛИВОЈЕВИЋ САВО
+МИЛИВОЈЕВИЋ СЛАВКО
+МИЛИВОЈЕВИЋ СЛАВНА
+МИЛИВОЈЕВИЋ СТОЈАНКА
+МИЛИВОЈЕВИЋ ВЛАДИМИР
+МИЛИВОЈЕВИЋ ВЛАСТИМИР
+МИЛИВОЈЕВИЋ ВОЈА
+МИЛИВОЈЕВИЋ ВОЈИСЛАВ
+МИЛИВОЈЕВИЋ ВУЧО
+МИЛИВОЈЕВИЋ ЗДРАВКО
+МИЛИВОЈЕВИЋ ЗОРА
+МИЉАКОВИЋ МИЛАН
+МИЉАНИЋ ЖИВКА
+МИЉАНИЋ ДРАГАН
+МИЉАНИЋ ДУШАН
+МИЉАНИЋ ЈОВАН
+МИЉАНИЋ МАРКО
+МИЉАНИЋ НОВАК
+МИЉАНИЋ ОБРАД
+МИЉАНИЋ РАДИВОЈЕ
+МИЉАНИЋ РАДОСЛАВ
+МИЛЈАНИЋ СЛОБОДАН
+МИЉАНИЋ СЛОБОДАН
+МИЉАНИЋ СТАНКО
+МИЉАНИЋ ВУКОТА
+МИЉАНОВИЋ ЖЕЉКО
+МИЉАНОВИЋ АДАМ
+МИЉАНОВИЋ БРАНКО
+МИЉАНОВИЋ ДУШАН
+МИЉАНОВИЋ ДУШИЦА
+МИЉАНОВИЋ МИЛКА
+МИЉАНОВИЋ ПРЕДРАГ
+МИЉАНОВИЋ СТАНКО
+МИЉАНОВИЋ ВИЛМА
+МИЉАНСКИ БОШКО
+МИЉАНСКИ ЛАЗАР
+МИЉАНСКИ ЗОРИЦА
+МИЉАНСКИ ЗОРИЦА
+МИЉАТОВИЋ ЂОРЂЕ
+МИЉАТОВИЋ МАРИЦА
+МИЉАТОВИЋ МИЛАН
+МИЉАТОВИЋ МИЛУТИН
+МИЉАТОВИЋ ВЕРА
+МИЉЕШИЋ НЕНАД
+МИЉЕНОВИЋ СЛОБОДАН
+МИЉЕВИЋ ЖИВКО
+МИЉЕВИЋ АДАМ
+МИЉЕВИЋ АНКА
+МИЉЕВИЋ БОГДАН ДИПЛ ИНГ
+МИЉЕВИЋ ДРАГОЉУБ
+МИЉЕВИЋ ДУШАН
+МИЉЕВИЋ ГАВРИЛО
+МИЉЕВИЋ ЈАЊА
+МИЉЕВИЋ ЈОВАН
+МИЉЕВИЋ ЈОВО
+МИЉЕВИЋ ЛАЗАР
+МИЉЕВИЋ ЉУБИЦА
+МИЉЕВИЋ ЉУБИНКО
+МИЉЕВИЋ МАРИНКО
+МИЉЕВИЋ МИЛОРАД
+МИЉЕВИЋ НАТАША
+МИЉЕВИЋ НЕДЕЉКО
+МИЉЕВИЋ ОБРАД
+МИЉЕВИЋ РАДОЈКА
+МИЉЕВИЋ СТЕВАН
+МИЉЕВИЋ ВЕРИЦА
+МИЉЕВИЋ ВЕРИЦА
+МИЉЕВИЋ ВИНКО
+МИЉИЋ СЛАВКО
+МИЉКОВ ЂУРИЦА
+МИЉКОВАЦ БОГОСАВ
+МИЉКОВАЦ ДРАГОМИР
+МИЉКОВАЦ ПЕТАР
+МИЉКОВАЦ РАДОВАН
+МИЉКОВАЦ ТАТЈАНА
+МИЉКОВИЋ ЧЕДОМИР
+МИЉКОВИЋ ЖИВАН
+МИЉКОВИЋ БОШКО
+МИЉКОВИЋ БОРИСЛАВ
+МИЉКОВИЋ БОСИЉКА
+МИЉКОВИЋ ДОБРИЛО
+МИЉКОВИЋ ДРАГАН
+МИЉКОВИЋ ДРАГИША
+МИЉКОВИЋ ДРАГУТИН
+МИЉКОВИЋ ДУШАН
+МИЉКОВИЋ ДУШАН
+МИЉКОВИЋ ЛЕНКЕ
+МИЉКОВИЋ ЉИЉАНА
+МИЉКОВИЋ ЉУБИША
+МИЉКОВИЋ ЉУБИЦА
+МИЉКОВИЋ ЉУПЧЕ
+МИЉКОВИЋ МАРА
+МИЉКОВИЋ МИЋА
+МИЉКОВИЋ МИЛИЦА
+МИЉКОВИЋ МИЛИЦА
+МИЉКОВИЋ МИЛОШ
+МИЉКОВИЋ МИОДРАГ
+МИЉКОВИЋ МИРА
+МИЉКОВИЋ МИРЈАНА
+МИЉКОВИЋ МИРЈАНА
+МИЉКОВИЋ МИТА
+МИЉКОВИЋ МЛАДЕН
+МИЉКОВИЋ МОЈСА
+МИЉКОВИЋ НИКОЛА ДР ИНГ
+МИЉКОВИЋ НИКОЛА
+МИЉКОВИЋ НИКОЛА
+МИЉКОВИЋ РАДОСАВ
+МИЉКОВИЋ РАДОСЛАВ
+МИЉКОВИЋ РАХИЉА
+МИЉКОВИЋ РОСА
+МИЉКОВИЋ РОСА
+МИЉКОВИЋ СЛОБОДАН
+МИЉКОВИЋ СТАМЕНКО ДР ЛЕКАР
+МИЉКОВИЋ СТОЈАДИН
+МИЉКОВИЋ СТОЈАН
+МИЉКОВИЋ ТОМИСЛАВ
+МИЉКОВИЋ ВЕЛИБОР
+МИЉОЈКОВИЋ ДЕСИМИР
+МИЉОЈКОВИЋ ДОБРИНКА
+МИЉОЈКОВИЋ ЕМИЛИЈА
+МИЉОЈКОВИЋ ЉУБИША
+МИЉОЈКОВИЋ ЉУБИША
+МИЉУШ ЂУРО
+МИЉУШ АЛЕКСАНДАР
+МИЉУШ БРАНКО
+МИЉУШ БРАНКО
+МИЉУШ ДРАГО
+МИЉУШ ДУШАНКА
+МИЉУШ ДУШАН
+МИЉУШ ЕВА
+МИЉУШ ЈОВАН ДР
+МИЉУШ ЈОВАН
+МИЉУШ ЈОВАН
+МИЉУШ КАТАРИНА
+МИЉУШ ЉИЉАНА
+МИЉУШ ЉУБИЦА
+МИЉУШ МАРИЈА
+МИЉУШ МАРИЈА
+МИЉУШ МИЛАН
+МИЉУШ МИЛЕ
+МИЉУШ МИЛОРАД
+МИЉУШ МИОДРАГ
+МИЉУШ НИКОЛА
+МИЉУШ ПЕТАР
+МИЛКОВ ЂУРЂИНКА
+МИЛКОВ ЂУРЂИНКА
+МИЛКОВ АЦА
+МИЛКОВ ДРАГАН ДР
+МИЛКОВ ДРАГИЊА
+МИЛКОВ ГОРДАНА
+МИЛКОВ ГОРДАНА
+МИЛКОВ ЈАСМИНА
+МИЛКОВ ЈЕЛЕНА
+МИЛКОВ ЛАЗАР
+МИЛКОВ ЛАЗАР
+МИЛКОВ СЛАВИЦА
+МИЛКОВ СТАНОЈЕ
+МИЛКОВ СТЕВАН
+МИЛКОВИЋ ДРАГИЦА
+МИЛКОВИЋ ДУШАН
+МИЛКОВИЋ ДУШАН
+МИЛКОВИЋ ВЕЉКО
+МИЛНОВИЋ АЛЕКСАНДАР
+МИЛНОВИЋ КАМЕНКО
+МИЛНОВИЋ ЛАЗАР
+МИЛНОВИЋ МИХАЈЛО
+МИЛНОВИЋ СТОЈАН
+МИЛНОВИЋ ВАСИЛИЈЕ
+МИЛНОВИЋ ЗОРА
+МИЛО ГИЗЕЛА
+МИЛОШ ИВАН
+МИЛОШЧИН СТАША
+МИЛОШЧИН СТЕВАН
+МИЛОШЧИН ВЛАДИМИР
+МИЛОШЕВ ЖАРКО ДР
+МИЛОШЕВ ЖИКА
+МИЛОШЕВ ЖИВКА
+МИЛОШЕВ ЖИВОЈИН
+МИЛОШЕВ АЛЕКСАНДАР
+МИЛОШЕВ АНЂЕЛИЈА
+МИЛОШЕВ БОШКО ДИПЛ ИНГ
+МИЛОШЕВ БРАНИСЛАВА
+МИЛОШЕВ БРАНИСЛАВ
+МИЛОШЕВ БРАНИСЛАВ
+МИЛОШЕВ ДОБРИВОЈ
+МИЛОШЕВ ДУШАН
+МИЛОШЕВ ДУШКО
+МИЛОШЕВ ЈОВАНКА
+МИЛОШЕВ ЈОВАН
+МИЛОШЕВ ЉУБОМИР
+МИЛОШЕВ МАРИЈА
+МИЛОШЕВ МИЋО
+МИЛОШЕВ МИХАЈЛО
+МИЛОШЕВ МИЛАН
+МИЛОШЕВ МИЛЕНКО
+МИЛОШЕВ МИЛИВОЈ
+МИЛОШЕВ МИЉАНА
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОРАД
+МИЛОШЕВ МИЛОРАД
+МИЛОШЕВ МИОДРАГ
+МИЛОШЕВ МИРА
+МИЛОШЕВ МИРЈАНА
+МИЛОШЕВ МИРКО
+МИЛОШЕВ МИРОСЛАВА
+МИЛОШЕВ МИРОСЛАВ
+МИЛОШЕВ МИТА
+МИЛОШЕВ МОМЧИЛО
+МИЛОШЕВ НЕБОЈША
+МИЛОШЕВ НОВКА
+МИЛОШЕВ ПЕТАР
+МИЛОШЕВ РАДА
+МИЛОШЕВ САВА
+МИЛОШЕВ СЛАВКА
+МИЛОШЕВ СОФИЈА
+МИЛОШЕВ СТАНА
+МИЛОШЕВ СТОЈАНКА
+МИЛОШЕВ ВАСА ДИПЛ ИНГ
+МИЛОШЕВ ВАСА
+МИЛОШЕВ ВЕЛИМИР
+МИЛОШЕВ ЗЛАТОМИР
+МИЛОШЕВИЋ ЖИВОЈИН
+МИЛОШЕВИЋ ЖИВОРАД
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДРА
+МИЛОШЕВИЋ АЛЕКСАНДРА
+МИЛОШЕВИЋ АНАСТАЗИЈА
+МИЛОШЕВИЋ АНКА
+МИЛОШЕВИЋ БИЉАНА
+МИЛОШЕВИЋ БИСЕРКА
+МИЛОШЕВИЋ БОШКО
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖО
+МИЛОШЕВИЋ БОГДАН
+МИЛОШЕВИЋ БОЈАНА
+МИЛОШЕВИЋ БРАНИСЛАВА
+МИЛОШЕВИЋ БРАНИСЛАВА
+МИЛОШЕВИЋ БРАНИСЛАВ
+МИЛОШЕВИЋ БРАНИСЛАВ
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ ЦВЕТАН
+МИЛОШЕВИЋ ЦВЕТАН
+МИЛОШЕВИЋ ДАНИЦА
+МИЛОШЕВИЋ ДАРИНКА
+МИЛОШЕВИЋ ДЕЈАН
+МИЛОШЕВИЋ ДОБРИНКА
+МИЛОШЕВИЋ ДОБРОСАВ
+МИЛОШЕВИЋ ДРАГАНА
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГИЦА
+МИЛОШЕВИЋ ДРАГИЦА
+МИЛОШЕВИЋ ДРАГОЉУБ
+МИЛОШЕВИЋ ДРАГОМИР ДИПЛ ИНГ
+МИЛОШЕВИЋ ДРАГУТИН
+МИЛОШЕВИЋ ДУШАН ДР
+МИЛОШЕВИЋ ДУШАН
+МИЛОШЕВИЋ ДУШАН
+МИЛОШЕВИЋ ЕВА
+МИЛОШЕВИЋ ЕВИЦА
+МИЛОШЕВИЋ ГРОЗДА
+МИЛОШЕВИЋ ИГЊАТ
+МИЛОШЕВИЋ ИВАНКА
+МИЛОШЕВИЋ ЈАКОВ
+МИЛОШЕВИЋ ЈАНКО
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕРИНА
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВИЦА
+МИЛОШЕВИЋ ЈУЛКА
+МИЛОШЕВИЋ КЛАУДИЈЕ
+МИЛОШЕВИЋ КРИСТИНА
+МИЛОШЕВИЋ ЛАТИНКА
+МИЛОШЕВИЋ ЛАЗАР
+МИЛОШЕВИЋ ЛАЗАР
+МИЛОШЕВИЋ ЉИЉАНА
+МИЛОШЕВИЋ ЉИЉАНА
+МИЛОШЕВИЋ ЉУБИША
+МИЛОШЕВИЋ ЉУБОМИР
+МИЛОШЕВИЋ ЛОЗАНА
+МИЛОШЕВИЋ МАРА
+МИЛОШЕВИЋ МАРИЦА
+МИЛОШЕВИЋ МАРИЈА
+МИЛОШЕВИЋ МАРИЈА
+МИЛОШЕВИЋ МАРКО
+МИЛОШЕВИЋ МАРТА
+МИЛОШЕВИЋ МИХАИЛО
+МИЛОШЕВИЋ МИХАЉИНА
+МИЛОШЕВИЋ МИЛАДИН
+МИЛОШЕВИЋ МИЛАНКА
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛИЦА
+МИЛОШЕВИЋ МИЛИВОЈЕ
+МИЛОШЕВИЋ МИЛИВОЈЕ
+МИЛОШЕВИЋ МИЛОШ
+МИЛОШЕВИЋ МИЛОШ
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОСАВ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИРА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРКО
+МИЛОШЕВИЋ МИРОСЛАВ
+МИЛОШЕВИЋ МИТАР
+МИЛОШЕВИЋ МОМЧИЛО
+МИЛОШЕВИЋ НАДА
+МИЛОШЕВИЋ НЕВЕНА
+МИЛОШЕВИЋ НИКОЛА
+МИЛОШЕВИЋ НИКОЛА
+МИЛОШЕВИЋ НОВИЦА
+МИЛОШЕВИЋ ОБРАД
+МИЛОШЕВИЋ ОЛГА
+МИЛОШЕВИЋ ОЛИВЕРА
+МИЛОШЕВИЋ ПАВЛЕ
+МИЛОШЕВИЋ ПАВЛЕ
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПРЕДРАГ
+МИЛОШЕВИЋ РАДЕ ДР
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДОВАН
+МИЛОШЕВИЋ РАЈКО
+МИЛОШЕВИЋ РАЈКО
+МИЛОШЕВИЋ РАТКО
+МИЛОШЕВИЋ РИСТО
+МИЛОШЕВИЋ РУЖА
+МИЛОШЕВИЋ РУЖИЦА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ СЕЛЕНКА
+МИЛОШЕВИЋ СЛАВА
+МИЛОШЕВИЋ СЛАВКО
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СНЕЖАНА
+МИЛОШЕВИЋ СНЕЖАНА
+МИЛОШЕВИЋ СПАСОЈЕ
+МИЛОШЕВИЋ СПАСОЈЕ
+МИЛОШЕВИЋ СРБОБРАН
+МИЛОШЕВИЋ СТАНИМИР
+МИЛОШЕВИЋ СТАНКО
+МИЛОШЕВИЋ СТАНКО
+МИЛОШЕВИЋ СТЕВИЦА
+МИЛОШЕВИЋ СТОЈА
+МИЛОШЕВИЋ СВЕТИСЛАВ
+МИЛОШЕВИЋ СВЕТОЉУБ
+МИЛОШЕВИЋ СВЕТОЗАР
+МИЛОШЕВИЋ СВЕТОЗАР
+МИЛОШЕВИЋ ТАДИЈА
+МИЛОШЕВИЋ ТОМИСЛАВ
+МИЛОШЕВИЋ УРОШ
+МИЛОШЕВИЋ ВАСА
+МИЛОШЕВИЋ ВАСИЛИЈЕ
+МИЛОШЕВИЋ ВЕЉКО
+МИЛОШЕВИЋ ВЕРА
+МИЛОШЕВИЋ ВЕСЕЛИН
+МИЛОШЕВИЋ ВИДОЈЕ
+МИЛОШЕВИЋ ВЛАДА ДИПЛ ОЕЦ
+МИЛОШЕВИЋ ВЛАДИМИР
+МИЛОШЕВИЋ ВОЈИСЛАВ
+МИЛОШЕВИЋ ВОЈИСЛАВ
+МИЛОШЕВИЋ ВОЈКАН
+МИЛОШЕВИЋ ВУКАШИН ДР ЛЕКАР
+МИЛОШЕВИЋ ВУКАШИН
+МИЛОШЕВИЋ ЗАХАРИЈЕ
+МИЛОШЕВИЋ ЗДРАВКО
+МИЛОШЕВИЋ ЗЛАТИМИР
+МИЛОШЕВИЋ ЗОРАН ДИПЛ ИНГ
+МИЛОШЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЂОРЂЕ
+МИЛОЈЕВИЋ АНА
+МИЛОЈЕВИЋ БРАНИСЛАВ
+МИЛОЈЕВИЋ БРАНИСЛАВ
+МИЛОЈЕВИЋ ЦВИЈЕТА
+МИЛОЈЕВИЋ ДИМИТРИЈЕ
+МИЛОЈЕВИЋ ДРАГАН
+МИЛОЈЕВИЋ ДРАГАН
+МИЛОЈЕВИЋ ДУШАНКА
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ГОЈКО
+МИЛОЈЕВИЋ ГОРДАНА
+МИЛОЈЕВИЋ ГРОЗДАНА
+МИЛОЈЕВИЋ ЈАНКО
+МИЛОЈЕВИЋ ЈЕЛЕНА
+МИЛОЈЕВИЋ ЈУЛИЈАНА
+МИЛОЈЕВИЋ МИХАЈЛО
+МИЛОЈЕВИЋ-МИЛАНОВ СВЕТЛАНА
+МИЛОЈЕВИЋ МИЛИВОЈЕ
+МИЛОЈЕВИЋ МИЛОЈЕ ДР ПРОФ
+МИЛОЈЕВИЋ МИЛОРАД
+МИЛОЈЕВИЋ МИРОСЛАВ
+МИЛОЈЕВИЋ МОМИР ДР
+МИЛОЈЕВИЋ ОЛГИЦА
+МИЛОЈЕВИЋ ПАВЛЕ
+МИЛОЈЕВИЋ ПРЕДРАГ
+МИЛОЈЕВИЋ РАДОВАН
+МИЛОЈЕВИЋ РАНКО
+МИЛОЈЕВИЋ СЛОБОДАН
+МИЛОЈЕВИЋ ВАСА
+МИЛОЈЕВИЋ ВЛАДА
+МИЛОЈЕВИЋ ВЛАДИМИР
+МИЛОЈЕВИЋ ВОЈИН
+МИЛОЈЕВИЋ ВОЈИСЛАВ
+МИЛОЈЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЗВОНКО
+МИЛОЈИЦА МИЉА
+МИЛОЈКОВИЋ ЖИВАН
+МИЛОЈКОВИЋ АЦА
+МИЛОЈКОВИЋ БОЖАНА
+МИЛОЈКОВИЋ БОЖИДАР
+МИЛОЈКОВИЋ ДУШАН
+МИЛОЈКОВИЋ ДУШАН
+МИЛОЈКОВИЋ ЈОВАНКА
+МИЛОЈКОВИЋ КАТАРИНА
+МИЛОЈКОВИЋ КРИСТА
+МИЛОЈКОВИЋ ЉУБОМИР
+МИЛОЈКОВИЋ МИЛИВОЈ
+МИЛОЈКОВИЋ МИЛОВАН
+МИЛОЈКОВИЋ МИРОЉУБ
+МИЛОЈКОВИЋ НАДЕЖДА
+МИЛОМ ИМРЕ
+МИЛОМ ИМРЕ
+МИЛОРАДИЋ БРАНКО
+МИЛОРАДИЋ НИКОЛА
+МИЛОРАДОВ БОРИСЛАВА
+МИЛОРАДОВ МИЛОШ
+МИЛОРАДОВ МИЛОРАД
+МИЛОРАДОВ РАДОСЛАВКА
+МИЛОРАДОВ ВИОЛЕТА
+МИЛОРАДОВИЋ БРАНИСЛАВ
+МИЛОРАДОВИЋ ДЕЈАН
+МИЛОРАДОВИЋ ДРАГАН
+МИЛОРАДОВИЋ МИЛОШ
+МИЛОРАДОВИЋ МЛАДЕН
+МИЛОРАДОВИЋ ЗЛАТОЈЕ
+МИЛОСАВАЦ МИЋА
+МИЛОСАВИЋ БОРИСЛАВ
+МИЛОСАВИЋ БРАНКО
+МИЛОСАВИЋ КРСТАН
+МИЛОСАВИЋ МЛАДЕН
+МИЛОСАВИЋ МОМЧИЛО
+МИЛОСАВИЋ ПЕТАР
+МИЛОСАВИЋ РАДИВОЈ
+МИЛОСАВИЋ СТОЈА
+МИЛОСАВЉЕВ ЖИВАН
+МИЛОСАВЉЕВ ЖИВКА
+МИЛОСАВЉЕВ АЛЕКСАНДАР
+МИЛОСАВЉЕВ БОЖИДАР
+МИЛОСАВЉЕВ ДОБРЕН
+МИЛОСАВЉЕВ ДРАГИЊА
+МИЛОСАВЉЕВ ЉИЉАНА
+МИЛОСАВЉЕВ МЕЛАНИЈА
+МИЛОСАВЉЕВ МИЛЕНКО
+МИЛОСАВЉЕВ МИЛИЦА
+МИЛОСАВЉЕВ НОВКА
+МИЛОСАВЉЕВ ВЛАДА
+МИЛОСАВЉЕВ ВОЈА
+МИЛОСАВЉЕВИЋ ЖАРКО
+МИЛОСАВЉЕВИЋ ЖИВАДИН
+МИЛОСАВЉЕВИЋ ЖИВКО
+МИЛОСАВЉЕВИЋ ЖИВКО
+МИЛОСАВЉЕВИЋ АДАМ ДИПЛ ПРАВНИК
+МИЛОСАВЉЕВИЋ БОЖИДАР
+МИЛОСАВЉЕВИЋ БОРА
+МИЛОСАВЉЕВИЋ БОРИВОЈЕ
+МИЛОСАВЉЕВИЋ БРАНИСЛАВ
+МИЛОСАВЉЕВИЋ БРАНКО
+МИЛОСАВЉЕВИЋ БРАТИСЛАВ
+МИЛОСАВЉЕВИЋ ДЕЈАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГИЦА
+МИЛОСАВЉЕВИЋ ДРАГИЦА
+МИЛОСАВЉЕВИЋ ДРАГУТИН
+МИЛОСАВЉЕВИЋ ДУШАНКА
+МИЛОСАВЉЕВИЋ ИЛИЈА
+МИЛОСАВЉЕВИЋ ЈЕЛИСАВЕТА
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ КАТИЦА
+МИЛОСАВЉЕВИЋ ЛАЗАР
+МИЛОСАВЉЕВИЋ МАРИЈА
+МИЛОСАВЉЕВИЋ МИХАЈЛО
+МИЛОСАВЉЕВИЋ МИЛАН
+МИЛОСАВЉЕВИЋ МИЛАН
+МИЛОСАВЉЕВИЋ МИЛЕ
+МИЛОСАВЉЕВИЋ МИЛИЦА
+МИЛОСАВЉЕВИЋ МИЛКА
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОВАН
+МИЛОСАВЉЕВИЋ МИОДРАГ ДР
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИРОСЛАВ
+МИЛОСАВЉЕВИЋ НИКОЛА ДР
+МИЛОСАВЉЕВИЋ НОВИЦА
+МИЛОСАВЉЕВИЋ ОЛГА
+МИЛОСАВЉЕВИЋ ПЕТАР
+МИЛОСАВЉЕВИЋ РАДИВОЈЕ
+МИЛОСАВЉЕВИЋ РАДИВОЈ
+МИЛОСАВЉЕВИЋ РАДОМИР
+МИЛОСАВЉЕВИЋ САВО
+МИЛОСАВЉЕВИЋ СЛАВКО
+МИЛОСАВЉЕВИЋ СЛОБОДАН
+МИЛОСАВЉЕВИЋ СЛОБОДАН
+МИЛОСАВЉЕВИЋ СРЕТА
+МИЛОСАВЉЕВИЋ СТАНИСЛАВ
+МИЛОСАВЉЕВИЋ СТАНКО
+МИЛОСАВЉЕВИЋ СТЕВО
+МИЛОСАВЉЕВИЋ СВЕТОЗАР
+МИЛОСАВЉЕВИЋ ВЕРА
+МИЛОСАВЉЕВИЋ ВЕРА
+МИЛОСАВЉЕВИЋ ВЛАДИМИР
+МИЛОСАВЉЕВИЋ ВЛАДИСЛАВ
+МИЛОСАВЉЕВИЋ ЗОРАН
+МИЛОСОВИЋ ЈОВАН
+МИЛОСОВИЋ МИЛОШ
+МИЛОСОВИЋ МИРКО
+МИЛОВЧЕВИЋ МИЛОШ
+МИЛОВАЦ ДУШАН
+МИЛОВАЦ ГЛИША
+МИЛОВАЦ ГОРАН
+МИЛОВАЦ ИЛЕ
+МИЛОВАЦ ИЛИЈА
+МИЛОВАЦ ЈЕЛА
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ ПЕТАР
+МИЛОВАЦ РУЖИЦА
+МИЛОВАЦ СИМО
+МИЛОВАЦ СТАНКО
+МИЛОВАЦ СТЕВАН
+МИЛОВАЦ СТОЈАН
+МИЛОВАН КОНСТАНЦА
+МИЛОВАНЧЕВ АЛЕКСАНДАР
+МИЛОВАНЧЕВ ИСИДОР
+МИЛОВАНЧЕВ НИКОЛА
+МИЛОВАНЧЕВ СЛОБОДАН ДИПЛ ИНГ
+МИЛОВАНЧЕВ СВЕТОЗАР ДР
+МИЛОВАНКИЋ ЂОРЂЕ
+МИЛОВАНКИЋ МИРОСЛАВ
+МИЛОВАНОВ ЂОРЂЕ
+МИЛОВАНОВ АЛЕКСАНДАР ДИПЛ ИНГ
+МИЛОВАНОВ АНИЦА
+МИЛОВАНОВ БОЖИДАР
+МИЛОВАНОВ ДИМИТРИЈЕ ДИПЛ ИНГ
+МИЛОВАНОВ ДРАГАН
+МИЛОВАНОВ ГОЈКО
+МИЛОВАНОВ ГОЈКО
+МИЛОВАНОВ ГОРАН
+МИЛОВАНОВ ГОРДАНА ДР ЛЕКАР
+МИЛОВАНОВ ИВАН
+МИЛОВАНОВ ЈУЛКА
+МИЛОВАНОВ МИЛАН
+МИЛОВАНОВ МИЛЕ
+МИЛОВАНОВ МИЛИНКА
+МИЛОВАНОВ МИЛИНКА
+МИЛОВАНОВ МИРЈАНА
+МИЛОВАНОВ СИМА
+МИЛОВАНОВ СТОЈАНКА
+МИЛОВАНОВ ТОДОР
+МИЛОВАНОВ ВАСИЛИЈЕ
+МИЛОВАНОВ ЗОРАН
+МИЛОВАНОВИЋ ЖИКА
+МИЛОВАНОВИЋ ЖИВКО
+МИЛОВАНОВИЋ АНЂЕЛКА
+МИЛОВАНОВИЋ АНИЦА
+МИЛОВАНОВИЋ АНИЦА
+МИЛОВАНОВИЋ БОГОСАВ
+МИЛОВАНОВИЋ БРАНИСЛАВА
+МИЛОВАНОВИЋ БРАНИСЛАВ
+МИЛОВАНОВИЋ БРАНИСЛАВ
+МИЛОВАНОВИЋ ДАНИЦА
+МИЛОВАНОВИЋ ДОБРИСАВ
+МИЛОВАНОВИЋ ДОБРИВОЈЕ
+МИЛОВАНОВИЋ ДРАГИЊА
+МИЛОВАНОВИЋ ДРАГОЉУБ
+МИЛОВАНОВИЋ ДРАГОЉУБ
+МИЛОВАНОВИЋ ДРАГОМИР
+МИЛОВАНОВИЋ ДРАГОСЛАВ
+МИЛОВАНОВИЋ ДРАГОСЛАВ
+МИЛОВАНОВИЋ ДУШАН ДР ЛЕКАР
+МИЛОВАНОВИЋ ДУШАН
+МИЛОВАНОВИЋ ГОРАН
+МИЛОВАНОВИЋ ГОРДАНА
+МИЛОВАНОВИЋ ИЛИЈА
+МИЛОВАНОВИЋ ИВАНКА
+МИЛОВАНОВИЋ ИВИЦА
+МИЛОВАНОВИЋ ЈОВАН
+МИЛОВАНОВИЋ КАТАЛИН
+МИЛОВАНОВИЋ КАТИЦА
+МИЛОВАНОВИЋ КОСАРА
+МИЛОВАНОВИЋ КРСТОМИР
+МИЛОВАНОВИЋ ЉИЉАНА
+МИЛОВАНОВИЋ ЉИЉАНА
+МИЛОВАНОВИЋ ЉУБИЦА
+МИЛОВАНОВИЋ ЛУКА
+МИЛОВАНОВИЋ МИЛАДИН
+МИЛОВАНОВИЋ МИЛАН
+МИЛОВАНОВИЋ МИЛЕНА
+МИЛОВАНОВИЋ МИЛЕНКО
+МИЛОВАНОВИЋ МИЛЕВА
+МИЛОВАНОВИЋ МИЛИСАВ
+МИЛОВАНОВИЋ МИЛИВОЈЕ
+МИЛОВАНОВИЋ МИЛОРАД
+МИЛОВАНОВИЋ МИЛОВАН
+МИЛОВАНОВИЋ МИЛОВАН
+МИЛОВАНОВИЋ МИРЈАНА
+МИЛОВАНОВИЋ МИРЈАНА
+МИЛОВАНОВИЋ МОМИР ДИПЛ ИНГ
+МИЛОВАНОВИЋ НАДА МР
+МИЛОВАНОВИЋ НИКОЛА
+МИЛОВАНОВИЋ ОБРЕН
+МИЛОВАНОВИЋ ОЛГА
+МИЛОВАНОВИЋ РАДАШИН
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕ
+МИЛОВАНОВИЋ РАДИСАВ
+МИЛОВАНОВИЋ РАДИСЛАВ
+МИЛОВАНОВИЋ РАДОСЛАВ
+МИЛОВАНОВИЋ РИСТА
+МИЛОВАНОВИЋ САВА
+МИЛОВАНОВИЋ СЛАВКА
+МИЛОВАНОВИЋ СЛАВКО
+МИЛОВАНОВИЋ СЛОБОДАН
+МИЛОВАНОВИЋ СОЊА
+МИЛОВАНОВИЋ СРБИСЛАВ
+МИЛОВАНОВИЋ СТАНИЦА
+МИЛОВАНОВИЋ СТЕВАН ДИПЛ ИНГ
+МИЛОВАНОВИЋ СТЕВАН
+МИЛОВАНОВИЋ СТЕВАН
+МИЛОВАНОВИЋ СВЕТОЗАР
+МИЛОВАНОВИЋ СВЕТОЗАР
+МИЛОВАНОВИЋ ТЕРКА
+МИЛОВАНОВИЋ ВЕСЕЛИНКА
+МИЛОВАНОВИЋ ВЕСНА
+МИЛОВАНОВИЋ ВИДАН
+МИЛОВАНОВИЋ ВЛАДИМИР
+МИЛОВАНОВИЋ ВЛАДИМИР
+МИЛОВАНОВИЋ ВЛАДИСЛАВ
+МИЛОВАНОВИЋ ВОЈА
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВУКОСАВА
+МИЛОВАНОВИЋ ЗОРАН
+МИЛОВАНОВИЋ ЗОРАН
+МИЛОВАНОВИЋ ЗОРКА
+МИЛОВИЋ ЧЕДО
+МИЛОВИЋ ЂОРЂЕ
+МИЛОВИЋ БОШКО
+МИЛОВИЋ БОГДАН
+МИЛОВИЋ БОРИША
+МИЛОВИЋ БОРО
+МИЛОВИЋ БОРО
+МИЛОВИЋ БРАНКО
+МИЛОВИЋ ДЕСИМИР
+МИЛОВИЋ ДУШАН
+МИЛОВИЋ ГОЈКО
+МИЛОВИЋ ГОЈКО
+МИЛОВИЋ ИЛИЈА
+МИЛОВИЋ ЈЕЛЕНА
+МИЛОВИЋ КРСТО
+МИЛОВИЋ ЉУБОМИР
+МИЛОВИЋ МАЈА
+МИЛОВИЋ МАРИЈАН
+МИЛОВИЋ МИЛАН
+МИЛОВИЋ МИЛЕНКО
+МИЛОВИЋ МИЛОРАД
+МИЛОВИЋ МИЛОРАД
+МИЛОВИЋ МИОМИР
+МИЛОВИЋ МОМЧИЛО
+МИЛОВИЋ ОРЛЕ
+МИЛОВИЋ ПЕТАР
+МИЛОВИЋ РАДЕ
+МИЛОВИЋ РАДОВАН
+МИЛОВИЋ СЛОБОДАН
+МИЛОВИЋ СТАНКО
+МИЛОВИЋ ТОМИСЛАВ
+МИЛОВИЋ ВУКАШИН
+МИЛУШИЋ ЕВИЦА
+МИЛУШИЋ ПЕТАР ДИПЛ ИНГ
+МИЛУНОВ ЈОВАН
+МИЛУНОВ ЈУЛКА
+МИЛУНОВИЋ БРАНКО
+МИЛУНОВИЋ ДРАГОМИР
+МИЛУНОВИЋ МИЛОШ
+МИЛУНОВИЋ МИЛОМИР
+МИЛУНОВИЋ МИЛОРАД
+МИЛУНОВИЋ МИЛУН
+МИЛУНОВИЋ РАДОМИР
+МИЛУНОВИЋ СПАСЕНКО
+МИЛУНОВИЋ ЗОРИЦА
+МИЛУРОВИЋ СЛОБОДАН
+МИЛУТИН ЖИВКО
+МИЛУТИН ЈАСНА
+МИЛУТИН МИРА
+МИЛУТИН НЕДЕЉКО
+МИЛУТИН РАТКО
+МИЛУТИН ВОЈИСЛАВ
+МИЛУТИНОВ ЂОКА
+МИЛУТИНОВ АЦА
+МИЛУТИНОВ ДРАГОСЛАВ
+МИЛУТИНОВ ЈЕЛИСАВЕТА
+МИЛУТИНОВ ЈОВАН
+МИЛУТИНОВ КОНСТАНТИН
+МИЛУТИНОВ ЛАЗАР
+МИЛУТИНОВ МИЛИСАВ
+МИЛУТИНОВ МИТА
+МИЛУТИНОВ-НЕДЕЉКОВИЋ РАДОВАН
+МИЛУТИНОВ РАДА
+МИЛУТИНОВ РАДОСЛАВ
+МИЛУТИНОВ САВА
+МИЛУТИНОВ САВЕТА
+МИЛУТИНОВ ТОДОР
+МИЛУТИНОВ ВЕЛИБОР
+МИЛУТИНОВИЋ ШТЕФИЦА
+МИЛУТИНОВИЋ ЖИКА
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂУРЂИЦА
+МИЛУТИНОВИЋ АНЂЕЛКО
+МИЛУТИНОВИЋ БОШКО
+МИЛУТИНОВИЋ БОЈАН
+МИЛУТИНОВИЋ БРАНКА
+МИЛУТИНОВИЋ БУДИМИР
+МИЛУТИНОВИЋ ДАНИЈЕЛА
+МИЛУТИНОВИЋ ДРАГАН
+МИЛУТИНОВИЋ ДРАГИЦА
+МИЛУТИНОВИЋ ДРАГИЦА
+МИЛУТИНОВИЋ ДРАГУТИН
+МИЛУТИНОВИЋ ДУШАНКА
+МИЛУТИНОВИЋ ДУШАН
+МИЛУТИНОВИЋ ГАВРИЛО
+МИЛУТИНОВИЋ ИГЊАТ
+МИЛУТИНОВИЋ ЈОВАН
+МИЛУТИНОВИЋ ЈОВАН
+МИЛУТИНОВИЋ ЈУЛКИЦА
+МИЛУТИНОВИЋ ЛИДИЈА
+МИЛУТИНОВИЋ ЛИДИЈА
+МИЛУТИНОВИЋ ЉУБИНКА
+МИЛУТИНОВИЋ ЉУБО
+МИЛУТИНОВИЋ МАНДА
+МИЛУТИНОВИЋ МАРТА
+МИЛУТИНОВИЋ МЕЛАНИЈА
+МИЛУТИНОВИЋ МИЛАДИН
+МИЛУТИНОВИЋ МИЛАН
+МИЛУТИНОВИЋ МИЛАН
+МИЛУТИНОВИЋ МИЛЕНКО
+МИЛУТИНОВИЋ МИЛИНКО
+МИЛУТИНОВИЋ МИЛИВОЈЕ
+МИЛУТИНОВИЋ МИЛИВОЈЕ
+МИЛУТИНОВИЋ МИЛОШ
+МИЛУТИНОВИЋ МИЛОЈКО
+МИЛУТИНОВИЋ МИЛОРАД
+МИЛУТИНОВИЋ МИЛОРАД
+МИЛУТИНОВИЋ МИЛОВАН
+МИЛУТИНОВИЋ МИЛУТИН
+МИЛУТИНОВИЋ МИОМИР
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРОСЛАВА ДР
+МИЛУТИНОВИЋ МИРОСЛАВ
+МИЛУТИНОВИЋ МОМИР
+МИЛУТИНОВИЋ ОЛГА
+МИЛУТИНОВИЋ ПЕТАР
+МИЛУТИНОВИЋ ПЕТАР
+МИЛУТИНОВИЋ РАДЕ
+МИЛУТИНОВИЋ РАДИША
+МИЛУТИНОВИЋ РАДОЈКА
+МИЛУТИНОВИЋ РАДОСАВ
+МИЛУТИНОВИЋ САША
+МИЛУТИНОВИЋ СЛАВКО
+МИЛУТИНОВИЋ СЛОБОДАНКА
+МИЛУТИНОВИЋ СРЕТЕН
+МИЛУТИНОВИЋ СТАНА
+МИЛУТИНОВИЋ СТЕВАН
+МИЛУТИНОВИЋ СТОЈАНКА
+МИЛУТИНОВИЋ СТОЈАН
+МИЛУТИНОВИЋ СВЕТОЗАР
+МИЛУТИНОВИЋ ВЕЛИМИР
+МИЛУТИНОВИЋ ВЕРА
+МИЛУТИНОВИЋ ВЕРА
+МИЛУТИНОВИЋ ВЕРИЦА ДР
+МИЛУТИНОВИЋ-ВУКСАН ОЛГА
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИМИЦА МЛАДЕН
+МИМИЦА НЕНАД
+МИМИЦА НЕНАД
+МИМИЦА НЕНАД
+МИНЧИЋ МИРОЉУБ
+МИНЧИЋ МИРОСЛАВ
+МИНЧИЋ СЛОБОДАНКА
+МИНДА-РАЂЕНОВИЋ ЕЛЕНА
+МИНДА ТИБОР
+МИНДИЋ МИРЈАНА
+МИНДИЋ СВЕТИСЛАВ
+МИНЕА РОМАН
+МИНИЋ МИЛОСАВ
+МИНИЋ НАДА
+МИНИЋ СЛАВКО
+МИНИЋ ТОМИСЛАВ
+МИНИЋ ЗОРКА
+МИНИК ШАНДОР
+МИНИК ЈОСИП
+МИЊА МАЈА
+МИЊА МИЛУТИН
+МИОЧ ЖЕЉКО
+МИОЧ ИВАН
+МИОЧ ЗДЕНКО
+МИОЧИНОВИЋ МАРКО
+МИОЧИНОВИЋ МИЛАН
+МИОДАНИЋ ДАНКО
+МИОДРАГ АНА
+МИОДРАГ МИРКО
+МИОДРАГ ПЕРО
+МИОДРАГ ЗДРАВКА
+МИОДРАГ ЗОРИЦА
+МИОДРАГОВИЋ АЛАКСАНДАР
+МИОДРАГОВИЋ БОРИСЛАВ
+МИОДРАГОВИЋ ДРАГОЉУБ
+МИОДРАГОВИЋ ДРАГОЉУБ
+МИОДРАГОВИЋ ДРАГОМИР
+МИОДРАГОВИЋ ДУШКО
+МИОДРАГОВИЋ МИЛЕНКО ДИПЛ ИНГ
+МИОДРАГОВИЋ МИЛЕНКО
+МИОДРАГОВИЋ РАДОСЛАВ
+МИОДРАГОВИЋ СТЕВАН
+МИОДРАГОВИЋ ТОША
+МИОДРАГОВИЋ ВЕРА
+МИОДРАГОВИЋ-ВУКАНИЋ АЛЕКСАНДРА
+МИОДРАГОВИЋ ЗОРИЦА
+МИОК ВЛАСТИМИР
+МИОКОВИЋ БРАНКО
+МИОКОВИЋ ДАНИЦА
+МИОКОВИЋ РАДОСЛАВ
+МИОЛСКИ БОРИСЛАВ
+МИОЛСКИ ДУШКО
+МИОЛСКИ СТАНКО
+МИОЛСКИ СТЕВАН
+МИРЧЕТИЋ ЈОВАН
+МИРЧЕТИЋ ЛАЗАР
+МИРЧЕТИЋ МИЛИЦА
+МИРЧЕТИЋ МИЛУТИН
+МИРЧЕТИЋ РАДОСЛАВ
+МИРЧЕТИЋ СЛАВКО
+МИРЧЕТИЋ ЗОРАН
+МИРЧЕТИЋ ЗОРАН
+МИРЧЕВСКИ МИХАИЛО
+МИРЧИЋ КОВИЉКА
+МИРЧИЋ МИЛОРАД
+МИРЧИЋ НИКОЛА
+МИРЧИЋ РАДОВАН
+МИРЧИЋ СТОЈАНКА
+МИРЧИЋ СТОЈАН
+МИРАЖИЋ АНТУН
+МИРАЖИЋ БРАНИСЛАВ
+МИРАЖИЋ БРАНКО
+МИРАЖИЋ ЈЕЛА
+МИРАЖИЋ МАРА
+МИРАЖИЋ ВЕСЕЛИНКА
+МИРАЛЕМ АХМЕД
+МИРАНОВИЋ КСЕНИЈА ДР ЛЕКАР
+МИРАНОВИЋ МАЈА
+МИРАНОВИЋ МИРКО
+МИРЕШЕВИЋ ДУШАН
+МИРЕШЕВИЋ РАДОЈКА
+МИРИЋ ЂУРА
+МИРИЋ АГАТА
+МИРИЋ БОЖИДАР
+МИРИЋ ДАНЕ
+МИРИЋ ДРАГОМИР
+МИРИЋ ДРАГУТИН
+МИРИЋ ДУШАНКА
+МИРИЋ ДУШАН
+МИРИЋ ДУШАН
+МИРИЋ ДУШКО
+МИРИЋ ЈОСИФ
+МИРИЋ ЈОВАН
+МИРИЋ ЈОВО
+МИРИЋ КАТА
+МИРИЋ КАТИЦА
+МИРИЋ КОВИЉКА
+МИРИЋ МАРИЈА
+МИРИЋ МИЛАН
+МИРИЋ МИЛАН
+МИРИЋ МИЛАН
+МИРИЋ МИЛЕНА
+МИРИЋ МИЛКА
+МИРИЋ НИКОЛА
+МИРИЋ ПАВЛЕ
+МИРИЋ РАЈКО
+МИРИЋ РУЖИЦА
+МИРИЋ САША
+МИРИЋ САВКА
+МИРИЋ СМИЉА
+МИРИЋ СТЕВАН
+МИРИЋ СТОЈАНКА
+МИРИЋ ВАСИЛИЈЕ
+МИРИЛОВ АЛЕКСАНДАР
+МИРИЛОВ МИЛАДИН ДР
+МИРИЛОВ ЗОРКА
+МИРИЛОВИЋ ДРАГАН
+МИРИЛОВИЋ ГОРДАНА
+МИРИЛОВИЋ ЛАЗАР
+МИРИЛОВИЋ МЛАДЕН
+МИРИЛОВИЋ СНЕЖАНА
+МИРИМАНОВ ДАРА
+МИРИМАНОВ ВЛАДИМИР
+МИРЈАЧИЋ БОСА
+МИРЈАНИЋ ДАНИЦА
+МИРЈАНИЋ МОРАВКА
+МИРЈАНИЋ ВАСА
+МИРЈАНИЋ ВЕРИЦА
+МИРЈАНИН НЕРА
+МИРКАЦ СТАНИСЛАВ
+МИРКАЈЛОВИЋ МИЛОВАН
+МИРКАЈЛОВИЋ МИЛОВАН
+МИРКИЋ БЛАГОЈЕ
+МИРКОЊ СРЕДОЈЕ
+МИРКОЊЕВ БРАНИСЛАВ
+МИРКОЊЕВ СНЕЖАНА
+МИРКОВ ЖЕЉКО
+МИРКОВ ЖИВАН
+МИРКОВ ЂОРЂЕ
+МИРКОВ ЂУРЂИЈА
+МИРКОВ ЂУРЂИЈА
+МИРКОВ ЂУРИЦА
+МИРКОВ БОСИЉКА
+МИРКОВ ДУШИЦА
+МИРКОВ ЕВИЦА
+МИРКОВ МАРИЦА
+МИРКОВ ПАВЛЕ
+МИРКОВ РУЖИЦА
+МИРКОВ СЕКУЛА ДИПЛ ОЕЦ
+МИРКОВ СЛОБОДАН
+МИРКОВ СНЕЖАНА
+МИРКОВ СТАНИСЛАВ
+МИРКОВ СТЕВАН
+МИРКОВ СТЕВАН
+МИРКОВ ВЕЉКО
+МИРКОВ ВЛАДА
+МИРКОВ ЗОРАН
+МИРКОВ ЗОРИЦА
+МИРКОВ ЗОРКА
+МИРКОВИЋ ЧЕДОМИР
+МИРКОВИЋ ЖИВАН
+МИРКОВИЋ ЖИВКА
+МИРКОВИЋ ЖИВОЈИН
+МИРКОВИЋ ЂОРЂЕ
+МИРКОВИЋ ЂОРЂЕ
+МИРКОВИЋ АВРАМ
+МИРКОВИЋ БОРА
+МИРКОВИЋ БРАНИСЛАВ
+МИРКОВИЋ БРАНКА
+МИРКОВИЋ БРАНКА
+МИРКОВИЋ БРАНКО
+МИРКОВИЋ БРАНКО
+МИРКОВИЋ ДАНИЦА
+МИРКОВИЋ ДЕЈАН
+МИРКОВИЋ ДРАГАНА
+МИРКОВИЋ ДРАГИЦА
+МИРКОВИЋ ДРАГИЦА
+МИРКОВИЋ ДРАГОЉУБ
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШКО
+МИРКОВИЋ ДУБРАВКА
+МИРКОВИЋ ЕДИТА
+МИРКОВИЋ ЕЛА
+МИРКОВИЋ ЕМИЛИЈА
+МИРКОВИЋ ГАВРИЛО
+МИРКОВИЋ ИВАН
+МИРКОВИЋ ЈОВАНКА
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ КАТИЦА
+МИРКОВИЋ ЛАЗАР
+МИРКОВИЋ ЉИЉАНА
+МИРКОВИЋ ЉИЉАНА
+МИРКОВИЋ МАРА
+МИРКОВИЋ МАРА
+МИРКОВИЋ МИЛАН ДР
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛИЦА
+МИРКОВИЋ МИЛИСАВ
+МИРКОВИЋ МИЛИВОЈ ДИПЛ ИНГ
+МИРКОВИЋ МИЛИВОЈЕ
+МИРКОВИЋ МИЛКА
+МИРКОВИЋ МИЛОШ
+МИРКОВИЋ МИЛОСАВ
+МИРКОВИЋ МИЛОВАН
+МИРКОВИЋ МИЛУТИН
+МИРКОВИЋ МИОДРАГ
+МИРКОВИЋ МИРЈАНА
+МИРКОВИЋ МИРКО
+МИРКОВИЋ МИРОСЛАВ
+МИРКОВИЋ НЕНАД
+МИРКОВИЋ НОВАК
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПРЕДРАГ
+МИРКОВИЋ РАДМИЛА
+МИРКОВИЋ РАТКО
+МИРКОВИЋ САЊА
+МИРКОВИЋ САВА
+МИРКОВИЋ СЛОБОДАН ДР ЛЕКАР
+МИРКОВИЋ СЛОБОДАН
+МИРКОВИЋ СТЕВАН
+МИРКОВИЋ СВЕТИСЛАВ
+МИРКОВИЋ ТРИФУН
+МИРКОВИЋ ВЛАДИМИР
+МИРКОВИЋ ЗОРАН ДР
+МИРКОВИЋ ЗОРАН
+МИРКОВИЋ ЗОРАН
+МИРКОВИЋ ЗОРКА
+МИРКОВИЋ ЗОРКА
+МИРНИЋ ЈОСИП ДР
+МИРНИЋ СИЛВИЈА
+МИРНИЋ ВУКАШИН
+МИРОШЕВИЋ НИНО
+МИРОНИЦКИ РУЖИЦА
+МИРОНИЦКИ ЗВОНИМИР
+МИРОСАВИЋ МИЛЕНКО
+МИРОСАВИЋ МИЛЕНКО
+МИРОСАВЉЕВ ИЛИНКА
+МИРОСАВЉЕВ ЈОЦА
+МИРОСАВЉЕВ МАРИЈА
+МИРОСАВЉЕВ МИЛЕНКО
+МИРОСАВЉЕВ МЛАДЕН
+МИРОСАВЉЕВИЋ АЛЕКСАНДАР
+МИРОСАВЉЕВИЋ БОШКО
+МИРОСАВЉЕВИЋ БОРИСЛАВ
+МИРОСАВЉЕВИЋ БОРИВОЈ
+МИРОСАВЉЕВИЋ БРАНКА
+МИРОСАВЉЕВИЋ ДОБРИЛА
+МИРОСАВЉЕВИЋ ЈОВАН
+МИРОСАВЉЕВИЋ ЛЕПОСАВА
+МИРОСАВЉЕВИЋ ЉУБИЦА
+МИРОСАВЉЕВИЋ ЉУБОДРАГ
+МИРОСАВЉЕВИЋ МАГДА
+МИРОСАВЉЕВИЋ МИЛЕНКО
+МИРОСАВЉЕВИЋ НИКОЛА
+МИРОСАВЉЕВИЋ НИКОЛА
+МИРОСАВЉЕВИЋ СТЕВАН
+МИРОСАВЉЕВИЋ СТРАХИЊА
+МИРОСАВЉЕВИЋ СВЕТИСЛАВ
+МИРОСАВЉЕВИЋ ТОМИСЛАВ
+МИРОСАВЉЕВИЋ ТОМИСЛАВ
+МИРОСАВЉЕВИЋ ВЕРА
+МИРОСАВЉЕВИЋ ВЕРА
+МИРОСАВЉЕВИЋ ВОЈИСЛАВ
+МИРОСАВЉЕВИЋ ЗОРАН
+МИРОСАВЉЕВИЋ ЗОРКА
+МИРОСЛАВЉЕВИЋ ДУШАНКА
+МИРОВИЋ АЛЕКСАНДАР
+МИРОВИЋ ДИМИТРИЈЕ
+МИРОВИЋ ИГОР
+МИРОВИЋ МАРИЈА
+МИРОВИЋ МИЛО
+МИРОВИЋ НЕНАД
+МИСАИЛОВИЋ СВЕТОЗАР
+МИСАЈЛОВИЋ МАРГИТА
+МИСАЉЕВИЋ НЕМАЊА
+МИСИМИ КАМБЕР
+МИСИНИ МИРИМАН
+МИСИРКИЋ МИЛОШ
+МИСИРКИЋ ВЛАДА
+МИСИРЛИС ГЕОРГИОС
+МИСКИН ДРАГАН
+МИСКИН МИЛОШ
+МИСКИН НИКО
+МИСКИН ЗДРАВКО
+МИСЛИМИ АЛИВЕБИ
+МИТАР ТОМА
+МИТАР ВЕРА
+МИТЕВСКИ ИВАН
+МИТИЋ ЧЕДОМИР
+МИТИЋ АЛЕКСАНДАР
+МИТИЋ БОРИВОЈ
+МИТИЋ БРАНИСЛАВА
+МИТИЋ БРАНИСЛАВ
+МИТИЋ БУДИМИР
+МИТИЋ ДАНИЦА
+МИТИЋ ДРАГОЉУБ
+МИТИЋ ДРАГОЉУБ
+МИТИЋ ДРАГУТИН
+МИТИЋ ДУШАН
+МИТИЋ ГОРДАНА
+МИТИЋ ИГОР
+МИТИЋ ЈОСИФ
+МИТИЋ ЈОВАН
+МИТИЋ ЈОВАН
+МИТИЋ МАРИЈА
+МИТИЋ МИЛАН
+МИТИЋ МИЛИВОЈ
+МИТИЋ МИОДРАГ ДР ЛЕКАР
+МИТИЋ МИОДРАГ
+МИТИЋ МИРКО
+МИТИЋ МИТАР ДИПЛ ИНГ
+МИТИЋ НИКОЛА
+МИТИЋ ПАВЛЕ
+МИТИЋ РАДИВОЈЕ
+МИТИЋ РУЖИЦА
+МИТИЋ СЛАВКО
+МИТИЋ СРЕБРА
+МИТИЋ СУЗАНА
+МИТИЋ ТОМИСЛАВ
+МИТИЋ ВЕЛИМИР
+МИТИЋ ВЕРА
+МИТИЋ ВИДОСАВА
+МИТИЋ ВИТОМИР
+МИТКОВИЋ ДРАГАН
+МИТОШЕВИЋ БОГДАН
+МИТОШЕВИЋ МИЛЕ
+МИТОШЕВИЋ НАДА
+МИТОШЕВИЋ САВА
+МИТОВИЋ АЛЕКСАНДАР
+МИТОВИЋ ДОБРИСЛАВ
+МИТОВИЋ МИРОСЛАВ
+МИТРАШИНОВИЋ ЉИЉАНА
+МИТРАШИНОВИЋ ЗОРА
+МИТРАКОВИЋ ЂУРАЂ
+МИТРАКОВИЋ МИРОСЛАВ
+МИТРАКОВИЋ НЕНАД
+МИТРАКОВИЋ УГЉЕША
+МИТРЕКАНИЋ МИЛОРАД
+МИТРЕСКИ МОМЧИЛО
+МИТРЕВСКА ЕВДОКИЈА
+МИТРЕВСКИ ЛАМБЕ
+МИТРЕВСКИ МОМЧИЛО
+МИТРЕВСКИ РАДА
+МИТРИЧЕВИЋ ЖИКА
+МИТРИЧЕВИЋ АНЂЕЛКА
+МИТРИЧЕВИЋ АНА
+МИТРИЧЕВИЋ СМИЉА
+МИТРИЋ ЂУРО
+МИТРИЋ БОГИЋ
+МИТРИЋ МИЛАН
+МИТРИЋ МИЛАН
+МИТРИЋ МИЛОШ
+МИТРИЋ НЕЂО
+МИТРИЋ НЕЂО
+МИТРИЋ НОВАК
+МИТРИЋ РАДМИЛА
+МИТРИЋ ВАЛЕНТИНА
+МИТРОВЧАН ЈУЛКИЦА
+МИТРОВЧАН КОСТА
+МИТРОВЧАН ЛАЗАР
+МИТРОВЧАН ЉУБИНКО
+МИТРОВЧАН ЉУБИНКО
+МИТРОВЧАН МИТА
+МИТРОВЧАН РАДИНКА
+МИТРОВЧАН СТЕВАН
+МИТРОВЧАН СТЈЕПАН
+МИТРОВЧАН ЗАГОРКА
+МИТРОВИЋ ЧЕДОМИР
+МИТРОВИЋ ЖАРКО
+МИТРОВИЋ ЖИВОРАД
+МИТРОВИЋ ЂОКО
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АНГЕЛИНА
+МИТРОВИЋ АНКА
+МИТРОВИЋ БИЉАНА
+МИТРОВИЋ БОШКО
+МИТРОВИЋ БОРИСЛАВ
+МИТРОВИЋ БРАНКО
+МИТРОВИЋ БРАНКО
+МИТРОВИЋ ДАНИЦА
+МИТРОВИЋ ДАРИНКА
+МИТРОВИЋ ДЕСАНКА
+МИТРОВИЋ ДРАГАН
+МИТРОВИЋ ДРАГАН
+МИТРОВИЋ ДРАГИЦА
+МИТРОВИЋ ДРАГИ
+МИТРОВИЋ ДРАГОЈЛО
+МИТРОВИЋ ДРАГОЉУБ
+МИТРОВИЋ ДУШАНКА
+МИТРОВИЋ ДУШАН
+МИТРОВИЋ ДУШАН
+МИТРОВИЋ ДУШКО
+МИТРОВИЋ ДУБРАВКА
+МИТРОВИЋ ГОЈКО
+МИТРОВИЋ ГОСПАВА
+МИТРОВИЋ ГОСПА
+МИТРОВИЋ ИКА
+МИТРОВИЋ ИВАН
+МИТРОВИЋ ЈЕЛЕНА
+МИТРОВИЋ ЈЕЛЕНА
+МИТРОВИЋ ЈЕЛИЦА
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЛАЗАР
+МИТРОВИЋ ЛАЗАР
+МИТРОВИЋ ЉИЉАНА
+МИТРОВИЋ ЉУБИСАВ
+МИТРОВИЋ ЉУБОМИР
+МИТРОВИЋ ЉУБОМИР
+МИТРОВИЋ МАРКО
+МИТРОВИЋ МИХАЈЛО
+МИТРОВИЋ МИХАЈЛО
+МИТРОВИЋ МИЛАНКА
+МИТРОВИЋ МИЛАН
+МИТРОВИЋ МИЛАН
+МИТРОВИЋ МИЛЕНА
+МИТРОВИЋ МИЛЕНКО
+МИТРОВИЋ МИЛИЦА
+МИТРОВИЋ МИЛКА
+МИТРОВИЋ МИЛОШ
+МИТРОВИЋ МИЛОШ
+МИТРОВИЋ МИЛОРАД
+МИТРОВИЋ МИЛОВАН
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИРКО
+МИТРОВИЋ МИРКО
+МИТРОВИЋ МИРОСЛАВ
+МИТРОВИЋ МИРОСЛАВ
+МИТРОВИЋ МИТАР ДИПЛ ИНГ
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МОМЧИЛО
+МИТРОВИЋ МОМИР
+МИТРОВИЋ НАДЕЖДА
+МИТРОВИЋ НЕНАД
+МИТРОВИЋ НИКОЛА
+МИТРОВИЋ ОЛГА
+МИТРОВИЋ ПЕТАР
+МИТРОВИЋ РАДИСЛАВ
+МИТРОВИЋ РАДИВОЈЕ
+МИТРОВИЋ РАДИВОЈ
+МИТРОВИЋ РАДМИЛА
+МИТРОВИЋ РАДМИЛА
+МИТРОВИЋ РАДОЈИЦА
+МИТРОВИЋ РАДОВАН
+МИТРОВИЋ РАДОВАН
+МИТРОВИЋ РАДО
+МИТРОВИЋ РАТКО
+МИТРОВИЋ СЛАВКО
+МИТРОВИЋ СЛАВКО
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СОФИЈА
+МИТРОВИЋ СРЕТА
+МИТРОВИЋ СТАКА
+МИТРОВИЋ СТАНИША
+МИТРОВИЋ СТАНКО
+МИТРОВИЋ СТЕВАН
+МИТРОВИЋ СТЕВАН
+МИТРОВИЋ СУЗАНА
+МИТРОВИЋ СУЗАНА
+МИТРОВИЋ ТИХОМИР ДИПЛ ИНГ
+МИТРОВИЋ ТИХОМИР
+МИТРОВИЋ ТОДЕ
+МИТРОВИЋ ВАЛЕРИЈА
+МИТРОВИЋ ВАСА
+МИТРОВИЋ ВЕЛИМИР
+МИТРОВИЋ ВЕРА
+МИТРОВИЋ ВЕРА
+МИТРОВИЋ ВЕРИЦА
+МИТРОВИЋ ВЕРОНИКА
+МИТРОВИЋ ВЕСЕЛИН
+МИТРОВИЋ ВЛАДИМИР
+МИТРОВИЋ ВУЧЕТА
+МИТРОВИЋ-ВУЈНИЋ СМИЉАНА
+МИТРОВИЋ ВУЈОШ
+МИТРОВИЋ ЗЛАТКО
+МИТРУШИЋ БОРИСЛАВ
+МИТРУШИЋ БРАНИСЛАВ
+МИТРУШИЋ ЈЕЛИСАВЕТА
+МИУЧИН НАТАЛИЈА
+МИУЧИН РОЗИНА
+МИУЧИН СЛАВКО
+МИУЧИН СВЕТОЗАР
+МИУЧИН ВЕРИЦА
+МИЗ МАРИЈА
+МИЗ РОМАН
+МИЗДРАК БРАНКО
+МЈЕДА СИМОН
+МЛАЂЕН ЂУРО
+МЛАЂЕН ДМИТАР
+МЛАЂЕНОВИЋ БРАНКА
+МЛАЂЕНОВИЋ ЕЛЕНА
+МЛАЂЕНОВИЋ РАДЕ
+МЛАДЕНОВИЋ ЖИВОРАД
+МЛАДЕНОВИЋ ЂОРЂЕ
+МЛАДЕНОВИЋ ЂОРЂЕ
+МЛАДЕНОВИЋ АЛЕКСАНДАР
+МЛАДЕНОВИЋ АЛЕКСАНДАР
+МЛАДЕНОВИЋ АНЂЕЛКА
+МЛАДЕНОВИЋ АНКИЦА
+МЛАДЕНОВИЋ БОШКО
+МЛАДЕНОВИЋ БОГДАН
+МЛАДЕНОВИЋ БОСИЉКА
+МЛАДЕНОВИЋ ДАНИЛО
+МЛАДЕНОВИЋ ДРАГАН
+МЛАДЕНОВИЋ ДРАГАН
+МЛАДЕНОВИЋ ДРАГОЉУБ
+МЛАДЕНОВИЋ ДРАГОМИР
+МЛАДЕНОВИЋ ДУШАН
+МЛАДЕНОВИЋ ДУШАН
+МЛАДЕНОВИЋ ГРАДИМИР
+МЛАДЕНОВИЋ ЈЕЛЕНА
+МЛАДЕНОВИЋ ЈЕЛЕНА
+МЛАДЕНОВИЋ ЈЕЛИЦА
+МЛАДЕНОВИЋ ЈЕЛИЦА
+МЛАДЕНОВИЋ ЈУСТИНА
+МЛАДЕНОВИЋ МАРА
+МЛАДЕНОВИЋ МАРИНА
+МЛАДЕНОВИЋ МИХАЈЛО
+МЛАДЕНОВИЋ МИЛАН ДИПЛ ИНГ
+МЛАДЕНОВИЋ МИЛАН
+МЛАДЕНОВИЋ МИЛАН
+МЛАДЕНОВИЋ МИЛОРАД
+МЛАДЕНОВИЋ МИЛОРАД
+МЛАДЕНОВИЋ МИЛОВАН
+МЛАДЕНОВИЋ МИЛОВАН
+МЛАДЕНОВИЋ МЛАДЕН
+МЛАДЕНОВИЋ НАДЕЖДА
+МЛАДЕНОВИЋ НЕБОЈША
+МЛАДЕНОВИЋ-НИКОЛИЋ ГОРДАНА
+МЛАДЕНОВИЋ ОЛГА
+МЛАДЕНОВИЋ ПЕТАР
+МЛАДЕНОВИЋ РАДИВОЈ
+МЛАДЕНОВИЋ РАЈКО
+МЛАДЕНОВИЋ РАНКО
+МЛАДЕНОВИЋ РУЖИЦА
+МЛАДЕНОВИЋ САВА
+МЛАДЕНОВИЋ СЛОБОДАН
+МЛАДЕНОВИЋ СЛОБОДАН
+МЛАДЕНОВИЋ СРБИСЛАВКА
+МЛАДЕНОВИЋ ТИХОМИР
+МЛАДЕНОВИЋ ТОМИСЛАВ
+МЛАДЕНОВИЋ ТОМИСЛАВ
+МЛАДЕНОВИЋ УРОШ
+МЛАДЕНОВИЋ ВЕКОСЛАВ
+МЛАДЕНОВИЋ ВЕРИЦА
+МЛАДЕНОВИЋ ВОЈИСЛАВ
+МЛАДЕНОВИЋ ЗАГОРКА
+МЛАДЕНОВИЋ ЗОРАНА
+МЛАДЕНОВСКИ ЛОЗАНА
+МЛАДИН ИМРЕ
+МЛАДИН МАРГИТА
+МЛАЗЕВ ВАСИЛ
+МЛИНАР МУХАРЕМ
+МЛИНАР МУСТАФА
+МЛИНКО АМБРОЗИЈЕ
+МЛИНКО ДУШАН
+МЛИНКО ПЕТАР
+МЛИНКО ЗВОНИМИР
+МОЧ ЈЕЛЕНА
+МОЧ ЈОВАНКА
+МОШО ЈОЖЕФ
+МОШОРИНАЦ ЖИВКО
+МОШОРИНАЦ НЕНАД
+МОШОРИНСКИ ЗАГОРКА
+МОШОРИНСКИ ЗОРА
+МОЋАН ЈЕЛЕНА ДИПЛ ИНГ
+МОЖЕ ЕМИЛ
+МОЦИЋ МОМИР
+МОЦИК ЂУЛА
+МОЦИК ИРЕНКА
+МОЦКО ЈАН
+МОЦКО-МИЛАДИНОВИЋ ВИЕРА
+МОЦКО МИРОСЛАВ
+МОЦКО СТЕВАН
+МОЦНАИ ИРЕНА
+МОЦНИ ЈОВАН
+МОЦНИ МАРИЈА
+МОЦНИ СТЕВАН
+МОДЕЛСКИ БРАНИСЛАВА
+МОДИЋ МИЛЕНКО
+МОДИЋ МИЛЕНКО
+МОДИЋ МИЛИВОЈЕ
+МОДИЋ РАНКО
+МОДИЋ СЛОБОДАН
+МОДИЋ ТОМИСЛАВ
+МОДИЋ ТОМИСЛАВ
+МОДОШАНОВ МАРТА
+МОДОШАНОВ НИКОЛА
+МОДРАХ ВЛАДИМИР
+МОДРИ ШАНДОР
+МОДРИ ДРАГАН
+МОДРИ ЕВА
+МОДРИЋ ИЛИЈА
+МОДРИЋ СТАНКО
+МОДРИНИЋ МИЛИЦА
+МОДРОЊА ФЕХИМ
+МОФАРДИН СПАСЕНКА
+МОГА БРАНКО
+МОГА ЈОВАН
+МОГА МИЛАН ДР ЛЕКАР
+МОГА МЛАДЕН
+МОГА ПАЈА
+МОГА СТЕВАН
+МОГА ВЕРА
+МОГИЋ АЛЕКСАНДАР
+МОГИЋ БОРИСЛАВ
+МОГИЋ ГОРАНА
+МОГИН АЛЕКСАНДАР
+МОГИН АЛЕКСАНДАР
+МОГИН АЛЕКСАНДАР
+МОГИН БОРИСЛАВ
+МОГИН ИРИНА
+МОГИН ЈЕЛЕНА
+МОГИН ЈУЛИЈАНА
+МОГИН КСЕНИЈА
+МОГИН ЛАЗАР
+МОГИН ЉУБИША
+МОГИН МАРА
+МОГИН МИЛАНА
+МОГИН МИЛАН
+МОГИН ПАВЛЕ
+МОГИН ПАВЛЕ
+МОГИН ПАВЛЕ
+МОГИН ПЕТАР
+МОГИН РАДОМИР
+МОГИН РАДОМИР
+МОГИН ВИТОМИР
+МОХАЧИ АЛЕКСАНДАР
+МОХАЧИ ЛАСЛО
+МОХАН ДЕАНА
+МОХАН ЈОН
+МОХАН ПЕТАР
+МОХАН СМИЉАНА
+МОХОРА ЕМИЛИЈАН
+МОХОРИЋ ДАНИЦА
+МОХОРКО ИЛИЈА
+МОХОРКО ИЛИЈА
+МОХОРКО МАРГИТА
+МОХОРКО РАЈКО
+МОЈИЋ ДУШАН
+МОЈИЋ ДУШАН
+МОЈИЋ ИВАНКА
+МОЈИЋ МИЛИВОЈЕ
+МОЈИЋ МИЛОРАД
+МОЈИЋ МИТАР
+МОЈИЋ НИКОЛА
+МОЈИЋ НИКОЛА
+МОЈИЋ СЛАВКО
+МОЈИЋЕВИЋ ДЕСИМИР
+МОЈИН СОФИЈА
+МОЈСЕ КАТИЦА
+МОЈСЕ НАНДОР
+МОЈСЕЈЕВ АЛЕКСАНДАР
+МОЈСЕЈЕВ КОНСТАНТИН ДИПЛ ПХ
+МОЈСИЈЕВИЋ НИКОЛА
+МОЈСИЈЕВИЋ САВА
+МОЈСИЛОВ ДИМИТРИЈЕ
+МОЈСИЛОВ ДРАГАН
+МОЈСИЛОВ МИЛИСАВ
+МОЈСИЛОВИЋ МИЛОМИР
+МОЈСИЛОВИЋ ПЕТАР
+МОЈСИЛОВИЋ СЛАВИЦА
+МОЈСИЛОВИЋ ВЕРА
+МОЈСИЛОВИЋ ВИДОЈЕ
+МОЈСИН ДРАГОМИР
+МОЈСОВИЋ АЛЕКСАНДАР
+МОЈЗЕШ АЛФРЕД
+МОЈЗЕШ МАРИЈА
+МОКУШ ШАНДОР
+МОКУШ ИМРЕ
+МОКУШ ЈОВАН
+МОКУШ КАЛМАН
+МОКУШ ЛАСЛО
+МОКУШ ЛАСЛО
+МОКУШ ЛАСЛО
+МОКУШ МИКЛОШ
+МОКУШ ТИБОР
+МОКУШ ЗОЛТАН
+МОЛАЦ МИЛОРАД
+МОЛЦ КАТИЦА
+МОЛДОВАН ЉУБИНКА
+МОЛДОВАН МАРИЈА
+МОЛДОВАНОВ БОШКО
+МОЛДОВАНОВИЋ ЂОРЂЕ
+МОЛДВАИ ЕРВИН
+МОЛДВАИ ИЗАБЕЛА
+МОЛДВАИ ЛАСЛО
+МОЛДВАИ ОТО
+МОЛДВАЈ ФРАЊА
+МОЛДВАЈ ХИЛДА
+МОЛДВАЈ-ОЛАХ ЕМИЛИЈА
+МОЛДВАЈ РОЗАЛИА
+МОЛДВАЈ СТЕВАН
+МОЛДВАЈ ВИКТОР
+МОЛДВАЈИ ПРЕДРАГ
+МОЛЕРОВ РАДОВАН
+МОЉАЦ ЂОРЂЕ
+МОЉАЦ БРАНКА
+МОЉАЦ ГАВРА
+МОЉАЦ ГАВРА
+МОЉАЦ ЈОВАН
+МОЉАЦ ЈОВАН
+МОЉАЦ КАТИЦА
+МОЉАЦ МИЛИЦА
+МОЉАЦ МИОДРАГ
+МОЉАЦ НАДА
+МОЉАЦ ПАЈА
+МОЉАЦ СТЕВАН
+МОЉАЦ СТЕВАН
+МОЉАЦ ВЕРА
+МОЉСКИ МИРОСЛАВ
+МОЛКУЦ ПЕТАР ДИПЛ ИНГ
+МОЛКУЦ ВИРЂИНЕЛ
+МОЛНАР ШАНДОР
+МОЛНАР-ШТЕФУЛИК ИЛОНА
+МОЛНАР ЂОРЂЕ
+МОЛНАР АЛЕКСАНДАР
+МОЛНАР АНДРАШ
+МОЛНАР АНДРАШ
+МОЛНАР АНТОН
+МОЛНАР АРПАД
+МОЛНАР БРАНИСЛАВА
+МОЛНАР ДЕЖЕ
+МОЛНАР ЕМИЛИЈА
+МОЛНАР ЕМИЛИЈА
+МОЛНАР ЕВИЦА
+МОЛНАР ФЕОДОР
+МОЛНАР ФЕРЕНЦ ДИПЛ ИНГ
+МОЛНАР ИШТВАН
+МОЛНАР ИШТВАН
+МОЛНАР ИМРЕ ДР
+МОЛНАР ИМРЕ
+МОЛНАР ИМРЕ
+МОЛНАР ИРЕНА
+МОЛНАР ИВАН ДИПЛ ИНГ
+МОЛНАР ИВАН
+МОЛНАР ИВАН
+МОЛНАР ЈАКОВ
+МОЛНАР ЈАНОШ
+МОЛНАР ЈАН
+МОЛНАР ЈЕЛЕНА
+МОЛНАР ЈЕЛИЦА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЛАНКА
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОВАН
+МОЛНАР КАРЛО
+МОЛНАР КАТАЛИН
+МОЛНАР ЛАСЛО
+МОЛНАР ЛАЗАР
+МОЛНАР МАЋАШ
+МОЛНАР МАРИЈА ДР
+МОЛНАР МАРТА ДР
+МОЛНАР МАТИЛДА
+МОЛНАР МИХАЈЛО
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИЛАН
+МОЛНАР МИРОН
+МОЛНАР НИКОЛА
+МОЛНАР СПОМЕНКА
+МОЛНАР СВЕТОСЛАВ
+МОЛНАР ТЕРЕЗА
+МОЛНАР ВЕРА
+МОЛНАР ВИЛМОШ ДИПЛ ИНГ
+МОЛНАР ВЈЕРА
+МОЛНАР ВЛАДИМИР
+МОЛНАР ЗВОНКО
+МОМЧИЛОВ ДОБРИЈА
+МОМЧИЛОВ ГАВРИЛО
+МОМЧИЛОВ ГАВРИЛО
+МОМЧИЛОВ СТЕВАН
+МОМЧИЛОВИЋ ЧЕДОМИР
+МОМЧИЛОВИЋ БОГОМИР
+МОМЧИЛОВИЋ БРАНКО ДР
+МОМЧИЛОВИЋ ДАНЕ
+МОМЧИЛОВИЋ ДРАГАН
+МОМЧИЛОВИЋ ДУШАНКА
+МОМЧИЛОВИЋ ИЛИЈА
+МОМЧИЛОВИЋ МИХАЈЛО
+МОМЧИЛОВИЋ МИЛАН
+МОМЧИЛОВИЋ МИЛАН
+МОМЧИЛОВИЋ МИЛЕ
+МОМЧИЛОВИЋ МИРА
+МОМЧИЛОВИЋ МИРА
+МОМЧИЛОВИЋ МОМЧИЛО
+МОМЧИЛОВИЋ ПЕТАР
+МОМЧИЛОВИЋ РУЖИЦА
+МОМЧИЛОВИЋ СМИЉА
+МОМЧИЛОВИЋ ТОМИСЛАВ
+МОМЧИЛОВИЋ ВАСА
+МОМЧИЛОВИЋ ВИДАН
+МОМЧИЛОВИЋ ВОЈИСЛАВ
+МОМЧИЛОВИЋ ВУКИЦА
+МОМАНИ АКРАМ
+МОМИЋ ОБРАД
+МОМИРОВ ИЛИЈА
+МОМИРОВ ЉИЉАНА
+МОМИРОВ МИЛЕНКО
+МОМИРОВ МИЛЕТА
+МОМИРОВ МИРОСЛАВ
+МОМИРОВ НАДА
+МОМИРОВ ПАЈА
+МОМИРОВ САВА
+МОМИРОВ СВЕТЛАНА
+МОМИРОВ СВЕТОЗАР
+МОМИРОВ ТОША
+МОМИРОВ ЗОРИЦА
+МОМИРОВИЋ БРАНКО
+МОМИРОВИЋ ЈЕЛИЦА
+МОМИРОВИЋ ЈОВИЦА
+МОМИРОВИЋ ЛАЗА
+МОМИРОВИЋ ПЕТАР
+МОМИРОВИЋ СРЕЋКО
+МОМИРОВИЋ СТЕВАН
+МОМИРОВСКИ-МИЛОШЕВИЋ ЦВЕТАНА
+МОНАР ЈАНКО
+МОНАРЕВ АЛЕКСАНДАР
+МОНАРЕВ ЈОСИПА
+МОНАРЕВ-СОКОЛИЋ НАДА
+МОНАРОВ ЕЛИЗАБЕТА
+МОНАРОВ ЈОЗЕФИНА
+МОНДОВИЋ ЂУЛА
+МОНДОВИЋ АЛЕКСАНДАР
+МОНДОВИЋ ФРАЊА
+МОНДОВИЋ КАТИЦА
+МОНДОВИЋ ЛАДИСЛАВ
+МОНГЕЈАР РАДОСАВА
+МОНИ ИСЛАМ
+МОНОКИ ЂУЛА
+МОНОКИ ИШТВАН
+МОР ЂЕРЂ
+МОР ФРАЊА
+МОР ГАБОР
+МОР ГАБОР
+МОР ЛАСЛО
+МОР ЗДЕНКО
+МОРА АНА
+МОРА АНДРАШ
+МОРА КОРНЕЛИЈА
+МОРАЧА ЂУРАЂ
+МОРАЧА МИОДРАГ
+МОРАЧА НИКОЛА
+МОРАЧА РАДМИЛА
+МОРАЧА ВАСО
+МОРАЧА ВАСО
+МОРАЧАНИН МИЛОРАД
+МОРАИЋ ЂОРЂЕ
+МОРАРЕВИЋ ЉУБИЦА
+МОРАРЕВИЋ ВОЈКАН
+МОРАВАЦ ВОЈИСЛАВ
+МОРАВЕК ЈАНКО
+МОРЕ МАРИЈА
+МОРЕ СИЛВЕСТЕР
+МОРГЕНТАЛЕР ЈОВАН
+МОРИЋ ХАМО
+МОРИЦ ДРАГУТИН
+МОРИЦ ГАБОР
+МОРИЦ ЈАНОШ
+МОРИЦ ЈЕЛЕНА
+МОРИЦ ЈУЛИЈА
+МОРИЦ КАРЛО
+МОРИЦ ЛАЈОШ
+МОРИЦ ЛАСЛО
+МОРИЦ ЛАСЛО
+МОРИЦ ЛИДИЈА
+МОРИЦ МИЛАНА
+МОРИЦ ПАУЛА
+МОРИЦ СИЛАРД
+МОРИЦ СЛАВИЦА
+МОРИЦ ЗОЛТАН
+МОРОШЕВ РАДОСЛАВ
+МОРОКВАШИЋ БОГДАНКА
+МОРОКВАШИЋ МИЛИСАВ
+МОРОКВАШИЋ НЕНАД
+МОРОКВАШИЋ НИКОЛА
+МОРОМИЛОВ ЉУБИНКА
+МОРОТВАНСКИ ВИДОСАВА
+МОРОВИЋ МАТИЛДА
+МОРОВИЋ МИЛЕНА
+МОРОВИЋ НЕСТОР
+МОРОВИЦ ЛАСЛО
+МОРВАИ ШАНДОР
+МОРВАИ ЂЕРЂ
+МОРВАИ ФЕРЕНЦ
+МОРВАИ ЈАНОШ
+МОРВАИ КАРЛО
+МОРВАИ ЛАДИСЛАВ
+МОРВАИ ПЕТАР
+МОСИЋ МИОДРАГ
+МОСКАЉ ЉУБОМИР
+МОСКАЉ НИКОЛА
+МОСКАЉ НИКОЛА
+МОСКАЉ РАДМИЛА
+МОСКВАЉ САВКА
+МОСЛОВАЦ КАТАРИНА
+МОСНАК АНДРИЈА
+МОСНАК ПАВЕЛ
+МОСТАРАЦ ЈЕЛЕНА
+МОСТАРСКИ СЛАВИЦА
+МОСТИЋ РАДМИЛА
+МОСУРОВИЋ МИЛИЈАНА
+МОТОК ЂОРЂЕ
+МОТОК БРАНКО
+МОТОРОЖЕСКУ АУРОРА
+МОВРИН ИВАН
+МОЗЕТИЋ МЛАДЕН
+МРЧАРИЦА ЗОРАН
+МРША МИЛЕНКА
+МРШИЋ ЂОРЂЕ
+МРШИЋ БОГДАН
+МРШИЋ ДУШАН
+МРШИЋ МАРКО
+МРШИЋ МИЛЕ
+МРШО АНТО
+МРШУЉА НИКОЛА
+МРШУЉА РАДОМИР
+МРЂА БОШКО
+МРЂА БОГДАН
+МРЂА МАНЕ
+МРЂА МИЛКАН
+МРЂА МИРОСЛАВ
+МРЂА СТЕВАН
+МРЂА ЗОРАН
+МРЂАН ДУШАН
+МРЂАН МИХАЈЛО
+МРЂАН РУЖИЦА
+МРЂАН САВА
+МРЂАН САВА
+МРЂАН СТЕВАН
+МРЂАН СТЕВАН
+МРЂАНИН ВЛАДИСЛАВ
+МРЂАНОВ ЖАРКО
+МРЂАНОВ АНИЦА
+МРЂАНОВ КСЕНИЈА
+МРЂАНОВ ЛАЗА
+МРЂАНОВ МАРИНКО
+МРЂАНОВ МЕЛАНИЈА
+МРЂАНОВ МИРОСЛАВ
+МРЂАНОВ МОМЧИЛО
+МРЂАНОВ НЕМАЊА
+МРЂАНОВ НОВИЦА
+МРЂАНОВ ПРОКА
+МРЂАНОВ СМИЉА
+МРЂАНОВ ВУКОСАВА
+МРЂАНОВ ЗДРАВКО
+МРЂЕН ИЛИЈА
+МРЂЕН ЈЕЛЕНА
+МРЂЕН ЛАЗАР
+МРЂЕН МИРКО
+МРЂЕН ВЕЉКО
+МРЂЕНОВ КАТИЦА
+МРЂЕНОВИЋ БРАНИСЛАВ
+МРЂЕНОВИЋ БРАНКО
+МРЂЕНОВИЋ ЉУБОМИР
+МРЂЕНОВИЋ НЕБОЈША
+МРЂЕНОВИЋ ПЕТАР
+МРЂЕНОВИЋ ВАСО
+МРАЧАЈАЦ ЦВИЈО
+МРАЧАЈАЦ ДЕЈАН
+МРАЋЕВИЋ РАДИВОЈ
+МРАКОВИЋ БОЖИДАР
+МРАКОВИЋ ЉУБАН
+МРАКОВИЋ СЛОБОДАНКА
+МРАОВИЋ-БАХУН МИЛИЈАНА
+МРАОВИЋ ДРАГАН
+МРАОВИЋ ДУШАН
+МРАОВИЋ КАТИЦА
+МРАОВИЋ МАРКО
+МРАОВИЋ ОЛГА ДР ПРАВНИК
+МРАОВИЋ СЛОБОДАН
+МРАОВИЋ СТОЈАН
+МРАТИНКОВИЋ БОРИС ДР ЛЕКАР
+МРАТИНКОВИЋ ДУШАН ДР
+МРАТИНКОВИЋ ЉУБИЦА
+МРАВИК ЖИВКА
+МРАВИК ЂУРА
+МРАВИК ПАВЛЕ
+МРАЗ АНДРИЈА
+МРАЗЕК БЕРНАРДО
+МРАЗОВИЋ ЈОСИП
+МРАЗОВИЋ МИЛАНА
+МРАЗОВИЋ МИЛАН
+МРАЗОВИЋ НЕВЕНКА
+МРДАК ЂОРЂЕ
+МРДАК МИРАШ
+МРДАКОВИЋ БОРИСАВ
+МРДАКОВИЋ МИЛУТИН
+МРДАКОВИЋ ВЕРИЦА
+МРДАКОВИЋ ВУКОСАВ
+МРДАЉ ПЕТАР
+МРДИЋ КАРОЛИНА
+МРДИЋ МАРКО
+МРДИЋ САЊА
+МРГАНИЋ ЈОЗО
+МРГАНИЋ СРЕЋКО
+МРГИЋ МИРЈАНА
+МРКШИЋ ЂОРЂЕ
+МРКШИЋ АЛЕКСАНДАР
+МРКШИЋ БОЈАНА
+МРКШИЋ ДРАГАН
+МРКШИЋ ДРАГАН
+МРКШИЋ ЈЕЛЕНА
+МРКШИЋ ЈОЦА
+МРКШИЋ ЈОЦА
+МРКШИЋ КОСТА
+МРКШИЋ МИЛОШ
+МРКШИЋ НЕНАД
+МРКШИЋ СЛАВИЦА
+МРКШИЋ ЗАГОРКА
+МРКШИЋ ЗЛАТА
+МРКАИЋ ГОРАН
+МРКАИЋ СИМА
+МРКАИЋ ТОМИСЛАВ
+МРКАЉ БОЖИДАР
+МРКЕЛА МИРА
+МРКЕЛА ВОЈИН
+МРКИЋ БРАНИСЛАВ
+МРКИЋ МИЛКА МР ПХ
+МРКИЋ НИКОЛА
+МРКИЋ СМИЉА
+МРКОЈЕВИЋ КОСТА
+МРКОЈЕВИЋ МАРИЈА
+МРКОЊЕВ ДРАГАН
+МРКОЊИЋ ЖИВОЈИН
+МРКОВАЧКИ ЈЕЛЕНА
+МРКОВАЧКИ МИЛОШ
+МРКОВАЧКИ МИЛОВАН
+МРКОВИЋ МЛАДЕН
+МРКУШИЋ МИЛИЦА
+МРКУШИЋ МИЛИЦА
+МРКУШИЋ РАДИВОЈ
+МРКУШИЋ СТЕВАН
+МРМОШ МИЛАН
+МРНУШТИК СТЕВАН
+МРВИЋ НЕДЕЉКО
+МРВИЋ САВА
+МРВИЋ СТЕВАН
+МРВИЋ ВУКОМИР
+МРВИЦА РУЖИЦА
+МРВОШ ЈОВАН
+МРВОШ МИХАИЛО
+МРВОШ МИЛАНКА
+МУЧАЛИЦА ДРАГОЉУБ
+МУЧАЛО СЛАВИЦА
+МУЧАЛОВ СЛОБОДАН
+МУЧАЛОВИЋ ДУШКО
+МУЧЕНСКИ ЉУБОМИР
+МУЧЕНСКИ НИКОЛА
+МУЧЕНСКИ ВЛАДИМИР
+МУЧИ ЂЕРЂ ДИПЛ ИНГ
+МУЧИ АНДРАШ
+МУЧИ ФРАЊА
+МУЧИ ИЛОНА
+МУЧИ ИЛОНКА
+МУЧИ ЈОЖЕФ
+МУЧИ ЈОЖЕФ
+МУЧИБАБИЋ МИРЈАНА
+МУЧИБАБИЋ НАТАЛИЈА
+МУЧИБАБИЋ РАДОВАН
+МУЧИБАБИЋ РАДОВАН
+МУЧИБАБИЋ САВО
+МУЧИБАБИЋ ВЕРА
+МУЧУ ЈОВАН
+МУЧУ НИКОЛА
+МУШАН МАРИЈА
+МУШИЋ ФРАЊА
+МУШИЦКИ ЋИРА
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЂОРЂЕ
+МУШИЦКИ ЂОРЂЕ
+МУШИЦКИ БОГДАН
+МУШИЦКИ БОЈАНА
+МУШИЦКИ БРАНИСЛАВ
+МУШИЦКИ БРАНКА
+МУШИЦКИ ДОРОТЕЈА
+МУШИЦКИ ДРАГАН
+МУШИЦКИ ДРАГОСЛАВ
+МУШИЦКИ ДУШАН
+МУШИЦКИ ДУШАН
+МУШИЦКИ ДУШАН
+МУШИЦКИ ЕВИЦА
+МУШИЦКИ ЈОВАН
+МУШИЦКИ ЛАЗАР
+МУШИЦКИ МАРИЈА
+МУШИЦКИ МИЛАНА
+МУШИЦКИ МИЛЕНКО
+МУШИЦКИ МИЛИЦА
+МУШИЦКИ МИЛИЦА
+МУШИЦКИ МИЛОРАД
+МУШИЦКИ НАТАША
+МУШИЦКИ НОВАК
+МУШИЦКИ ПРОКА
+МУШИЦКИ СЛАВКО
+МУШИЦКИ СЛАВКО
+МУШИЦКИ СОФИЈА
+МУШИЦКИ СТЕВАН
+МУШИЦКИ ВЕЉКО
+МУШИКИЋ БОЖИДАР
+МУШИКИЋ ЉУБИЦА
+МУШИКИЋ РАДОМИР
+МУШИКИЋ РАТКО
+МУШКИЊА БАРИЦА
+МУШКИЊА МИРКО
+МУЖЕК ВИДА
+МУЖИЈЕВИЋ РИСТО
+МУЖИК БИЉАНА
+МУЖИК МАТА
+МУЖИКА-ТОТ ЗОЛТАН
+МУЖЛАИ ШАНДОР
+МУЦ ЗЛАТОМИР
+МУЦИ ЈАНОШ
+МУДРЕНИЋ МАРИЈА
+МУДРЕНИЋ РАДИСЛАВ
+МУДРИ ЕУГЕН
+МУДРИ ЈОАКИМ
+МУДРИ ЉУБИЦА
+МУДРИ МИРОСЛАВ
+МУДРИ ПЕТАР
+МУДРИ ПЕТАР
+МУДРИ ВЕРА ДР ВЕТЕРИНЕ
+МУДРИ ВЛАДА
+МУДРИ ВЛАДИМИР
+МУДРИ ВЛАДИМИР
+МУДРИЋ ЂУРА
+МУДРИЋ ДРАГОЉУБ
+МУДРИЋ ЉУБОМИР ДИПЛ ИНГ
+МУДРИЋ ПЕТАР
+МУДРИЋ СЛАВКА
+МУДРИНИЋ БОШКО
+МУДРИНИЋ БОШКО
+МУДРИНИЋ БРАНКО
+МУДРИНИЋ ГОЈКО
+МУДРИНИЋ МАЈА
+МУДРИНИЋ МИХАЈЛО
+МУДРИНИЋ МИЛАН
+МУДРИНИЋ МИЛЕВА
+МУДРИНИЋ МЛАДЕН
+МУДРИНИЋ ПЕТАР ДР
+МУДРИНИЋ СЛАВКО
+МУДРИНИЋ СПАСЕНКА
+МУДРИНИЋ СТЕВО
+МУДРИНИЋ СТОЈАН
+МУДРИНИЋ ВЛАДИМИР
+МУДРИНИЋ ВОЈИН
+МУДРИНСКИ ЂОРЂЕ
+МУДРИНСКИ АЛЕКСАНДАР
+МУДРИНСКИ АЛЕКСАНДАР
+МУДРИНСКИ БОРИСЛАВ
+МУДРИНСКИ БОСИЉКА
+МУДРИНСКИ ИВАНКА
+МУДРИНСКИ ЛАЗАР
+МУДРИНСКИ МИЛАН
+МУДРИНСКИ МИЛЕТА
+МУДРИНСКИ МИЛОШ
+МУДРИНСКИ МИРОСЛАВ
+МУДРИНСКИ ОЛГА
+МУДРИНСКИ ПЕТАР
+МУДРИНСКИ САВА
+МУДРИНСКИ СОФИЈА
+МУДРИНСКИ СТЕВАН
+МУДРИНСКИ ВОЈИСЛАВ
+МУГОША МИЛО
+МУХА ЗУЗАНА
+МУХАРЕМИ ФУАД
+МУХАРЕМСКИ-БЕЋИРОВИЋ РЕМЗИЈА
+МУХАРИ ЛАЈОШ
+МУХИ БЕЛА
+МУЈАНОВИЋ САФЕТ
+МУЈАНОВИЋ СЛОБОДАН
+МУЈАНОВИЋ СВЕТЛАНА
+МУЈЕЗИНОВИЋ АЛМАС
+МУЈЕЗИНОВИЋ ИРЕНА
+МУЈЕЗИНОВИЋ ЗЛАТАН
+МУЈИЋ МИЛАН
+МУЈКАНОВИЋ САЛИХ
+МУЈКИЋ ШЕФИК
+МУЈКИЋ ХАЈРУДИН
+МУЈКИЋ ИЛДУЗА
+МУЈКИЋ ИЗУДИН
+МУЈКИЋ ЈАКУБ
+МУЈКИЋ МЕХМЕД
+МУК-САМАРЏИЋ ЕМА
+МУЛАИ МАТИЈА
+МУЛАЈ ЕСТИКА
+МУЛАЈ КАТИЦА
+МУЛИЋ КАТАРИНА
+МУЛИЋ МИОДРАГ
+МУЛИЋ МИРОСЛАВ
+МУЛИЋ ПЕТАР
+МУЛИЋ РАДМИЛО
+МУЛИЋ СВЕТИСЛАВ
+МУЛИЋ ВЕЉКО
+МУЛИЋ ЗОРАН
+МУМЏИЋ ХАЗИР
+МУМИН АЛЕКСАНДАР
+МУМИН НИКОЛА
+МУМИНАГИЋ АЛИДА
+МУМИНОВИЋ АЛИМ
+МУМИНОВИЋ ХАМЕД
+МУМОВИЋ АНДРИЈА
+МУМОВИЋ ЈОВА
+МУМОВИЋ САВА
+МУНЋАН ЂОРЂЕ
+МУНЋАН ЂОРЂЕ
+МУНЋАН ЂОРЂЕ
+МУНЋАН АЛЕКСАНДАР
+МУНЋАН АНГЕЛИНА
+МУНЋАН БОШКО
+МУНЋАН БОШКО
+МУНЋАН ДРАГАН
+МУНЋАН ДРАГОЉУБ
+МУНЋАН ДУШАН
+МУНЋАН ЈОВАН ДР
+МУНЋАН ЈОВАН
+МУНЋАН ЛАЗАР
+МУНЋАН ЛАЗА
+МУНЋАН МИЛЕНКО
+МУНЋАН РАДОВАН
+МУНЋАН СЛАВКО
+МУНЋАН СОФИЈА
+МУНЋАН ТОДОР
+МУНЋАН ВАСА
+МУНЋАН ВЕСЕЛИН
+МУНЋАН ВЛАДИМИР
+МУНЋАН ЗОРА
+МУНЏИЋ ЖИВОЈИН
+МУНЏИЋ БОГДАН
+МУНЏИЋ МИРЈАНА
+МУНЏИЋ ПЕТАР
+МУНДИНГ ЕТЕЛКА
+МУНИШИЋ ЈОВАН
+МУНИЖАБА ЂОРЂЕ ДИПЛ ИНГ
+МУНИЖАБА БРАНИСЛАВ
+МУНИЖАБА ЈОВАН
+МУНИЖАБА КАТИЦА
+МУНИЖАБА ЛАЗАР
+МУНИЖАБА МИЛЕНКО
+МУНИЖАБА ВЕДРАНА
+МУНИТЛАК ДРАГАН
+МУЊАС БОЖИДАР
+МУЊАС ДМИТАР
+МУЊАС МИЛАН
+МУЊАС СИМКА
+МУЊАС СТАНА
+МУЊИН ЖИВКО
+МУЊИН АЛЕКСАНДАР
+МУЊИН-БАНИЋ ОЛГА ДИПЛ ПРАВНИК
+МУЊИН КАЈИЦА
+МУЊИН ЛАЗАР
+МУЊИН ПЕТАР
+МУЊИН СМИЉА
+МУЊИЗА ЖЕЉКО
+МУЊИЗА ЈОВАНКА
+МУНК ЂОРЂЕ
+МУНКА ДУШАНКА
+МУНКАЧИ МИХАЈЛО
+МУНТЕАН ИЛИЈА
+МУНТЕАН ТОДОР
+МУНЗАР ВЕРА
+МУРАТИ МИЉАЗИМ
+МУРАТИ СТАНА
+МУРАТОВИЋ ИБРАХИМ
+МУРАТОВИЋ ЈОВО
+МУРАТОВИЋ МИКА
+МУРАТОВИЋ РАДЕНКО
+МУРАТОВИЋ САБРИЈА
+МУРГАШКИ БРАНКА
+МУРГАШКИ ДАНИЦА
+МУРГАШКИ ДОБРЕН
+МУРГАШКИ ДУШАН
+МУРГАШКИ ЈОВАН
+МУРГАШКИ ЉУБИНКА
+МУРГАШКИ МАТИЈА
+МУРГАШКИ МИХАЈЛО
+МУРГАШКИ МИЛИЦА
+МУРГАШКИ МИЛОШ
+МУРГАШКИ МИЛОРАД
+МУРГАШКИ МИРОСЛАВ
+МУРГАШКИ НЕНАД
+МУРГАШКИ НОВАК
+МУРГАШКИ ПЕТАР
+МУРГАШКИ САВА
+МУРГАШКИ СЕВЕР
+МУРГАШКИ СЛОБОДАН ДР
+МУРГАШКИ СВЕТОЗАР
+МУРГАШКИ ВУКОСАВА
+МУРГУЛ ЉУБОМИР
+МУРГУЛОВИЋ МОМИР
+МУРИЋ СЛАВКО
+МУРИЋ СТЕВАН
+МУРИЋ ВЕЉКО
+МУРИЊИ ЈОСИП
+МУРИЊИ КАТИЦА
+МУРИЊИ МИЛЕВА
+МУРИЊИ СТОЈАНКА
+МУРПХУ МИРЈАНА
+МУРСЕЛИ МИРЧЕ
+МУРСЕЛИ НЕЗИР
+МУРСЕЛОВИЋ НАЗИФ
+МУРСЕЛОВИЋ РАИФ
+МУСА ИВАНКА
+МУСА ЈЕЛИЦА
+МУСАФИЈА БЛАНКА
+МУСИЋ ШАБАНИЈА
+МУСИЋ ШЕМСА
+МУСИЋ КАТИЦА
+МУСИЋ МИРКО
+МУСИЋ РАДОЈКА
+МУСИЋ ЗОРАН
+МУСИН КАЛМАН
+МУСОВСКИ ИСА
+МУСТАФИЋ БРАНКА
+МУСТАФИЋ ХАРИЗ
+МУСТАФИЋ МИЛИЦА
+МУСТАФИЋ СЕДАТ
+МУСТАФОСКИ БЕДРИЈА
+МУСТЕДАНАГИЋ ЕСАД
+МУСУЛИН ГОРКИ
+МУСУЛИН МИЛОРАД
+МУСУЛИН СЛАВКО
+МУТАБЏИЈА МИЛОВАН
+МУТАВЧИЕВ ИВАН
+МУТАВЏИЋ-ГИОН МАРИЈА
+МУТАВЏИЋ МИЛАН
+МУТАВЏИЋ МИЛАН
+МУТАВЏИЋ МИЛОШ
+МУТАВЏИЋ РАТКО
+МУТАВЏИЋ ТОМИСЛАВ
+МУТАВЏИЋ ВЕЉКО
+МУТАВЏИЋ ЗЛАТА
+МУТАВЏИЈА МИРЈАНА
+МУТИЋ ЖИВКО
+МУТИЋ БРАНКО
+МУТИЋ ДУШАН
+МУТИЋ ДУШАН
+МУТИЋ ДУШАН
+МУТИЋ ДУШИЦА
+МУТИЋ КАМЕНКО
+МУТИЋ ЉИЉАНА
+МУТИЋ РАДОСЛАВ
+МУТИЋ СМИЉА
+МУТИБАРИЋ АЛЕКСАНДАР ДР
+МУТИБАРИЋ АЛЕКСАНДАР
+МУТИБАРИЋ ДРАГОЉУБ
+МУТИБАРИЋ ИРЕНА
+МУТИБАРИЋ ЛИБУША
+МУТИБАРИЋ МИЛАН
+МУТИБАРИЋ МИЛЕ
+МУТИБАРИЋ НАТАША
+МУТИБАРИЋ СТЕВАН
+МУТИБАРИЋ ТОДОР
+МУТИН ЂОРЂЕ
+МУТИН ЕМИЛ
+МУТИН ЗДРАВКО
+МУЗАЛЕВСКИ АЛЕКСАНДАР
+МУЗЕКА МАРИЈАНА
+МУЗЕР ФРАЊА
+МУЗЕР МИРОСЛАВ
+МУЗЕР РАДОСЛАВ
+МУЗИКРАВИЋ БЛАЖО
+МУЗИКРАВИЋ ЉУБОМИР ДР
+НАЧ АНДРИЈА
+НАЧА ЈАНОШ
+НАЧА ЈОСИП
+НАЧА ОТИЛИЈА
+НАШИГАЋИН МИЛЕНКО
+НАЋУК АЛЕКСАНДАР
+НАЋУК ИРИНА
+НАЂ ЧОНГОР
+НАЂ ЧОНГОР
+НАЂ ШАНДОР
+НАЂ ШАНДОР
+НАЂ ЂЕРЂ
+НАЂ-АБОЊИ ГАБОР
+НАЂ АЛЕКСАНДАР
+НАЂ АНА
+НАЂ АНГЕЛА
+НАЂ БАРБАРА
+НАЂ БЕЛА
+НАЂ БРАНКА
+НАЂ ДЕЖЕ
+НАЂ-ДОРОТИЋ МАРИЈА
+НАЂ ДРАГИСЛАВ
+НАЂ ДУШАНКА
+НАЂ ЕРЖЕБЕТ
+НАЂ ЕТЕЛ
+НАЂ ЕУФЕМИЈА
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ-ФОРКАШ КАТИЦА
+НАЂ ФРАЊА
+НАЂ ФРАЊА
+НАЂ ФРАЊА
+НАЂ ГЕОРГИНА
+НАЂ ГИЗЕЛА
+НАЂ-ХЕВЕШИ ЛАСЛО
+НАЂ ИШТВАН
+НАЂ ИШТВАН
+НАЂ ИЛОНА
+НАЂ ИМРЕ
+НАЂ ИРИНА
+НАЂ ИВАН
+НАЂ ЈАНОШ
+НАЂ ЈАНОШ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОВАНКА
+НАЂ ЈОВАН
+НАЂ КАРЛО
+НАЂ КАРОЉ
+НАЂ КАРОЉ
+НАЂ КАТАРИНА
+НАЂ ЛАДИСЛАВ
+НАЂ ЛАЈОШ
+НАЂ ЛАЈОШ
+НАЂ ЛАСЛО ДИПЛ ИНГ
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛЕОНА
+НАЂ ЛЕОНА
+НАЂ ЉУБИЦА
+НАЂ МАРГАРЕТА
+НАЂ МАРИЈА
+НАЂ МАРИЈА
+НАЂ МАРТОН
+НАЂ-МЕЉКУТИ ЕДИТ
+НАЂ МИХАЈЛО
+НАЂ МИХАЉ
+НАЂ МИРА
+НАЂ МИРА
+НАЂ МИРА
+НАЂ МИРЈАНА
+НАЂ НАНДОР
+НАЂ НАНДОР
+НАЂ НЕВЕНКА
+НАЂ НИКОЛА
+НАЂ НОВИЦА
+НАЂ ОТО
+НАЂ ОТО
+НАЂ ПАВЛЕ
+НАЂ ПАВЛЕ
+НАЂ ПЕТАР
+НАЂ ПЕТАР
+НАЂ ПЕТАР
+НАЂ ПЕТЕР
+НАЂ ПИРОШКА
+НАЂ ПИРОШКА
+НАЂ-ПОПОВ ЦЕЦИЛИЈА
+НАЂ РОЗА
+НАЂ СЛАВКО
+НАЂ СТЕВАН
+НАЂ СТЕВАН
+НАЂ СВЈАТОСЛАВ
+НАЂ-ТАНАСКОВИЋ ЈУЛИЈА
+НАЂ ТИБОР
+НАЂ ВАСИЛИЈЕ
+НАЂ ВЕРОНА
+НАЂ ВИКТОРИЈА
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ЗЛАТИМИР
+НАЂ ЗОЛТАН
+НАЂАЛИН БРАНКО
+НАЂАЛИН ИСА
+НАЂБАБИ ФЕРЕНЦ
+НАЂБАБИ ФЕРЕНЦ
+НАЂБАБИ ИГОР
+НАЂБАБИ ИВКА
+НАЂБАБИ ЈАНИКА
+НАЂЕРЂ ИЛОНКА
+НАЂГЕЛЕРТ ЈАНОШ
+НАЂХЕЂЕШИ ФРАЊА
+НАЂХЕЂЕШИ ЈОВАН
+НАЂХЕЂЕШИ ЛАДИСЛАВ
+НАЂИДАИ КАРОЉ
+НАЂМЕЉКУТИ КЛАРА
+НАЂМИЋО ВЕСЕЛИНА
+НАЂОРЂ САША
+НАЂПАЛ ИРЕНКА
+НАЂВИНСКИ КСЕНИЈА
+НАЂВИНСКИ ПЕТАР
+НАЦЕВ ГРУЈО
+НАДАШКИ ЛАЗАР
+НАДАШКИ МИЛИВОЈ
+НАДАШКИ МИРОСЛАВ
+НАДАШКИЋ КАТИЦА
+НАДАЖДИ РУЖИЦА
+НАДАРЕВИЋ БОРИС
+НАДБАНДИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+НАДБАНТИЋ НАДА
+НАДИХ ФРИДРИХ
+НАДИХ МИРКО
+НАДЛАЧКИ АЛЕКСАНДАР
+НАДЛАЧКИ МИЛОЈЕ
+НАДЛАЧКИ РАДИВОЈ
+НАДЛАЧКИ РАДОВАН
+НАДЛАЧКИ СТЕВКА
+НАДЛУКАЧ МАРИЈА
+НАДРЉАНСКИ ЂОРЂЕ
+НАДРЉАНСКИ ДАНИЛКА
+НАДРЉАНСКИ ЉИЉАНА
+НАДРЉАНСКИ ЉУБИША
+НАДРЉАНСКИ МИЛИВОЈ
+НАДРЉАНСКИ СЛОБОДАН
+НАДРЉАНСКИ СТЕВАН
+НАЕРАЦ СЛОБОДАН
+НАГЛИЋ СЛАВКО
+НАГРАДИЋ ЈЕЛЕНА
+НАГРАДИЋ ЉУБИЦА
+НАХЛОВСКИ ЈОЖЕФ
+НАЈБАУЕР ИВАН
+НАЈДАНОВ ГЕОРГИ
+НАЈДАНОВ ИВАН
+НАЈДЕК ВИНКО
+НАЈДОВСКИ ТОМИСЛАВ
+НАЈДОВСКИ ТОМИСЛАВ
+НАЈИЋ АНКИЦА
+НАЈИЋ МИЛЕНКО
+НАЈИЋ ЗОРИЦА
+НАЈВИРТ ГОТФРИД
+НАЈВИРТ ЈОВАН
+НАКАРАДА ДАРИНКА
+НАКАРАДИЋ ЉУБО
+НАКИЋ ДРАГАН
+НАКИЋ ИВАН
+НАКИЋ ЈАЊА
+НАКИЋ ЉУБИНКА
+НАКИЋ РАДОВАН
+НАКИЋ СТЕВАН
+НАКОМЧИЋ ЗОРКА
+НАКОВ ЈОРДАН
+НАЛИЋ ДРАГИЦА
+НАЛИЋ ЕНИСА
+НАМЕСНИК ОЛГА
+НАМЛИЂИ ФЕРИДА
+НАНАШИ ЖОЛТ
+НАНАШИ АГАТА
+НАНАШИ ЈУЛИЈАНА
+НАНИЋ ЂОКА
+НАНОВСКИ ВЛАДИМИР
+НАНОВСКИЈ АЛЕКСАНДАР
+НАОДОВИЋ ПАВЛЕ
+НАРАИ ФЕРЕНЦ
+НАРАНЧИЋ ИЛОНКА
+НАРАНЧИЋ МИЛЕ
+НАРАНЧИЋ МИЛЕ
+НАРАНЧИЋ МИЛОРАД
+НАРАНЧИЋ НАДА
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ САВА
+НАРАНЧИЋ СТЕВАН
+НАРАНЧИЋ СТЕВАН
+НАРАНЧИЋ СУЗАНА
+НАРАНЧИЋ ВЛАДИМИР
+НАРАНЏИЋ ДАРКО
+НАРАНЏИЋ ЕВА
+НАРАНЏИЋ МИЛАН
+НАРАНЏИЋ МИРЈАНА
+НАРАНЏИЋ ВЕРА
+НАРИЋ НЕДЕЉКО
+НАС ЂЕРЂ
+НАС ФЕРЕНЦ
+НАС ФРАЊА
+НАС КАРЛО
+НАСКОВИЋ БЛАЖА
+НАСКОВИЋ ЗОРКА
+НАСОВ МИЛИВОЈ
+НАСТАСИЋ ДРАГАН
+НАСТАСИЋ ИВАН
+НАСТАСИЋ ЈЕЛЕНА
+НАСТАСИЋ ЉИЉАНА
+НАСТАСИЋ ПАВЛЕ
+НАСТАСИЋ РАДОСЛАВ
+НАСТАСИЋ СТЕВАН ДР ЛЕКАР
+НАСТАСИЋ ТАТЈАНА
+НАСТАСИЋ ТЕОДОР
+НАСТАСИЈЕВИЋ МИРОСЛАВ
+НАСТАСОВИЋ МЛАДЕН
+НАСТАСОВИЋ ТОНЧА
+НАСТЕВИЋ ТОДОР
+НАСТИЋ ИРЕНА
+НАСТИЋ ЛЕПОСАВА
+НАСТИЋ МИХАИЛО
+НАСТИЋ МИЛЕНА
+НАСТИЋ МИЛИЦА
+НАСТИЋ МИРЈАНА
+НАСТИЋ НИКОЛЕТА
+НАСТИЋ ОЛГА
+НАСТИЋ РАДЕ
+НАСТИЋ РАДИСАВ
+НАСТИЋ РАДОМИР
+НАСТИЋ РАТОМИР
+НАСТИЋ СВЕТОЗАР
+НАСТИЋ ВЛАДА
+НАСТИЋ ЗОРАН ДР ЛЕКАР
+НАСТОВ КИРО
+НАСТОВСКИ ДРАГО
+НАТОШЕВИЋ ДЕЈАН
+НАУМОВ ЂОРЂЕ
+НАУМОВ БРАНКА
+НАУМОВ ДРАГОЉУБ
+НАУМОВ КАТАРИНА
+НАУМОВ КАТАРИНА
+НАУМОВ МИЛЕНА
+НАУМОВ МИЛИВОЈ
+НАУМОВ СТЕВАН
+НАУМОВИЋ ЈЕЛИЦА
+НАУМОВИЋ МИЛИВОЈ ДР
+НАУМОВИЋ НИКОЛА
+НАУМОВИЋ СЛОБОДАН
+НАУМОВСКИ МИРКО
+НАУМОВСКИ НИКОЛА
+НАУМОВСКИ СОЊА
+НАУМОВСКИ СТОЈАН
+НАУМОВСКИ ТАНАС
+НАУНКОВИЋ БОГДАНКА
+НАУНКОВИЋ СИНИША
+НАВАЛА НИКОЛА
+НАВАЛУШИЋ ЈУЛИЈАНА
+НАВАЛУШИЋ ВОЈИН
+НАВРАТИЛ ЂУРА
+НАВРАТИЛ ЈОСИП
+НАВРАТИЛ ЈОСИП
+НАВРАТИЛ СЛОБОДАН
+НАВРАТИЛ ЗДЕНКО
+НАВРАТИЛ ЗОРАН
+НАЗДРАВЕЦКИ АНДРАШ
+НЕЧОВСКИ ДИМИТРИЈЕ
+НЕШЕВИЋ АНЂЕЛКА
+НЕШЕВИЋ АНЂЕЛКО
+НЕШИЋ АЦА
+НЕШИЋ АЛЕКСАНДАР
+НЕШИЋ АЛЕКСАНДАР
+НЕШИЋ БОЖИДАР
+НЕШИЋ БРАНИСЛАВ ДР
+НЕШИЋ БРАНИСЛАВ
+НЕШИЋ ДИМИТРИЈЕ
+НЕШИЋ ДУШАН
+НЕШИЋ ЈЕФТА
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ КОСАНА
+НЕШИЋ ЛЕНКА
+НЕШИЋ ЛЕОНИД
+НЕШИЋ ЉИЉАНА
+НЕШИЋ МАРЈАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛЕНКО
+НЕШИЋ МИЛИЦА
+НЕШИЋ МИЛИВОЈ
+НЕШИЋ МИЛКА
+НЕШИЋ МИЛОРАД
+НЕШИЋ МИРА
+НЕШИЋ МИРКО
+НЕШИЋ МИРОСЛАВА
+НЕШИЋ МЛАДЕН
+НЕШИЋ МЛАДЕН
+НЕШИЋ НЕДЕЉКО
+НЕШИЋ ПЕТАР
+НЕШИЋ РАДИСАВ
+НЕШИЋ САВЕТА
+НЕШИЋ СИМЕОН
+НЕШИЋ СЛАВКО
+НЕШИЋ СЛАВОЈКА
+НЕШИЋ ТОДОР
+НЕШИЋ ВЛАДИМИР
+НЕШИН ЖАРКО
+НЕШИН ЈОВАНА
+НЕШИН ЈОВАН
+НЕШИН МАРКО
+НЕШИН СТЕВАН
+НЕШКОВ ДРАГОСЛАВ ДР
+НЕШКОВ СТАНИСЛАВ
+НЕШКОВ ВОЈИСЛАВ
+НЕШКОВИЋ ЂУРЂА
+НЕШКОВИЋ АЛЕКСАНДАР
+НЕШКОВИЋ ДРАГАН
+НЕШКОВИЋ ИРЕНА
+НЕШКОВИЋ ЈЕЛЕНА
+НЕШКОВИЋ ЉУБИША
+НЕШКОВИЋ МИХАИЛО
+НЕШКОВИЋ МИЛАН
+НЕШКОВИЋ МИЛИЈАН
+НЕШКОВИЋ МИЛИСАВ
+НЕШКОВИЋ МИЛИВОЈЕ
+НЕШКОВИЋ МИЛКА
+НЕШКОВИЋ МИЛОВАН
+НЕШКОВИЋ МИТА
+НЕШКОВИЋ НЕШКО
+НЕШКОВИЋ ПЕРИЦА
+НЕШКОВИЋ ПЕТАР
+НЕШКОВИЋ РАДИСАВ
+НЕШКОВИЋ РАДОМИР
+НЕШКОВИЋ РАДОЊА
+НЕШКОВИЋ РЕЈМОНД
+НЕШКОВИЋ РУЖИЦА
+НЕШКОВИЋ СТЕВАН
+НЕШКОВИЋ-ЗДРАВИЋ ВЕРИЦА
+НЕШОВИЋ ДЕСАНКА
+НЕШОВИЋ ДРАГАН ДИПЛ ИНГ
+НЕШОВИЋ ДРАГАНА
+НЕШОВИЋ ДРАГАН
+НЕШОВИЋ ИВАНКА
+НЕШОВИЋ МИЛОВАН
+НЕШОВИЋ ПРЕДРАГ
+НЕШОВИЋ РАДОМИР
+НЕШОВИЋ РУЖИЦА
+НЕШОВИЋ ТРИВКА
+НЕШТИЦКИ ЈОСИП
+НЕШТИЦКИ ЈОСИП
+НЕШТИЦКИ МИЛИЦА
+НЕШТИЦКИ СТЕВАН
+НЕЋАК ЂОРЂЕ
+НЕЋАК АЛЕКСАНДАР
+НЕЋАК БРАНКО
+НЕЋАК-КОРАЋ АНЂЕЛКА
+НЕЋАК СТЕВАН
+НЕЋАК ВЕРА
+НЕЋАК ЗДРАВКО
+НЕЋАКОВ МАРИЈА
+НЕЋАКОВ МИЛАН
+НЕЋАКОВ МИЛКА
+НЕЋАКОВ СИМА
+НЕЋАКОВ СЛОБОДАН
+НЕЖИЋ ДАМИР
+НЕАТНИЦА ДУШАН
+НЕАТНИЦА РАДИВОЈ ДИПЛ ИНГ
+НЕБЕСНИ БОРИС
+НЕБОЈША СОФИЈА
+НЕБРИГИЋ ЈОВИЦА
+НЕБРИГИЋ РАТКО
+НЕЦЕВ ДРАГОЉУБ
+НЕЦИЋ ДРАГОЉУБ
+НЕЦИЋ ТОША
+НЕЦИН ЖИВИЦА
+НЕЦИН СТЕВА
+НЕЦИН ВОЈА
+НЕЦИН ЗЛАТОМИР
+НЕЦКОВ ДРАГИЊА
+НЕЦКОВ ГОРАН
+НЕЦКОВ КАТИЦА
+НЕЦКОВ ЛАЗАР
+НЕЦКОВ ЛОЗИНКА
+НЕЦКОВ МАРИЈА
+НЕЦКОВ МИРЈАНА
+НЕЦКОВ МОМЧИЛО
+НЕЦКОВ НИКОЛА
+НЕДЕЉКОВ ЖИВКО
+НЕДЕЉКОВ ЖИВКО
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ АНЂЕЛКА
+НЕДЕЉКОВ АНКА
+НЕДЕЉКОВ ДЕСАНКА
+НЕДЕЉКОВ ДРАГАН
+НЕДЕЉКОВ ДРАГИЊА
+НЕДЕЉКОВ ДУШАН
+НЕДЕЉКОВ ИЛИЈА
+НЕДЕЉКОВ ИРЕНА
+НЕДЕЉКОВ ИВАН
+НЕДЕЉКОВ ЈЕЛЕНА
+НЕДЕЉКОВ ЈОВАН
+НЕДЕЉКОВ ЈОВАН
+НЕДЕЉКОВ ЈУЛИЈАНА
+НЕДЕЉКОВ КАТИЦА
+НЕДЕЉКОВ КРСТА
+НЕДЕЉКОВ ЛАЗАР ДИПЛ ИНГ
+НЕДЕЉКОВ ЛИНА
+НЕДЕЉКОВ ЉИЉАНА
+НЕДЕЉКОВ ЉУБИЦА
+НЕДЕЉКОВ ЉУБИЦА
+НЕДЕЉКОВ МАРИЈА
+НЕДЕЉКОВ МАРИЈА
+НЕДЕЉКОВ МАРКО
+НЕДЕЉКОВ МИЛАН
+НЕДЕЉКОВ МИЛАН
+НЕДЕЉКОВ МИЛИВОЈ
+НЕДЕЉКОВ МИЛОШ
+НЕДЕЉКОВ МИРЈАНА
+НЕДЕЉКОВ МИРКО
+НЕДЕЉКОВ МИРОСЛАВА
+НЕДЕЉКОВ МИТА
+НЕДЕЉКОВ ОЛГА
+НЕДЕЉКОВ ОЛГА
+НЕДЕЉКОВ РАДЕ
+НЕДЕЉКОВ РАДИВОЈ
+НЕДЕЉКОВ РАДОЈКА
+НЕДЕЉКОВ РАДОМИР
+НЕДЕЉКОВ СИНИША
+НЕДЕЉКОВ СТЕВАН
+НЕДЕЉКОВ ТЕОДОРА
+НЕДЕЉКОВ ТОМИСЛАВ
+НЕДЕЉКОВ ВИНКА
+НЕДЕЉКОВ ВОЈИСЛАВ
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВОЈИН
+НЕДЕЉКОВИЋ ЂОРЂЕ
+НЕДЕЉКОВИЋ ЂОРЂЕ
+НЕДЕЉКОВИЋ АЛЕКСАНДАР
+НЕДЕЉКОВИЋ АЛЕКСАНДАР
+НЕДЕЉКОВИЋ АНДРИЈА
+НЕДЕЉКОВИЋ БОГОМИР
+НЕДЕЉКОВИЋ БОРИСЛАВ ДИПЛ ИНГ
+НЕДЕЉКОВИЋ БОРКА
+НЕДЕЉКОВИЋ БОСИЉКА
+НЕДЕЉКОВИЋ ДАРИНКА
+НЕДЕЉКОВИЋ ДОБРИЛА
+НЕДЕЉКОВИЋ ДОБРИНКА
+НЕДЕЉКОВИЋ ДРАГАН
+НЕДЕЉКОВИЋ ЈАДРАНКА
+НЕДЕЉКОВИЋ ЈЕЛЕНА
+НЕДЕЉКОВИЋ ЈОРДАН
+НЕДЕЉКОВИЋ ЈОВАН
+НЕДЕЉКОВИЋ ЈОВАН
+НЕДЕЉКОВИЋ ЈУГОСЛАВ
+НЕДЕЉКОВИЋ ЈУЛКИЦА
+НЕДЕЉКОВИЋ ЈУСТА
+НЕДЕЉКОВИЋ ЛЕПОСАВА
+НЕДЕЉКОВИЋ ЉУБОМИР
+НЕДЕЉКОВИЋ МАРКО
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛЕНКО
+НЕДЕЉКОВИЋ МИЛИЈА
+НЕДЕЉКОВИЋ МИЛИСАВ
+НЕДЕЉКОВИЋ МИЛОЈКА
+НЕДЕЉКОВИЋ МИЛОЈКА
+НЕДЕЉКОВИЋ МИЛУТИН
+НЕДЕЉКОВИЋ МИРЈАНА
+НЕДЕЉКОВИЋ МИРОСЛАВ
+НЕДЕЉКОВИЋ МИРОСЛАВ
+НЕДЕЉКОВИЋ НЕБОЈША
+НЕДЕЉКОВИЋ НИКОЛА
+НЕДЕЉКОВИЋ ПАВА
+НЕДЕЉКОВИЋ РАДОЈИЦА
+НЕДЕЉКОВИЋ РАДОМИР
+НЕДЕЉКОВИЋ РАДОВАН
+НЕДЕЉКОВИЋ СИМА
+НЕДЕЉКОВИЋ СИМА
+НЕДЕЉКОВИЋ СЛАВКО
+НЕДЕЉКОВИЋ СЛОБОДАНКА
+НЕДЕЉКОВИЋ СЛОБОДАНКА
+НЕДЕЉКОВИЋ СЛОБОДАН
+НЕДЕЉКОВИЋ СОФИЈА
+НЕДЕЉКОВИЋ СРЕТА
+НЕДЕЉКОВИЋ СТАНИМИР
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СВЕТИСЛАВ
+НЕДЕЉКОВИЋ СВЕТИСЛАВ
+НЕДЕЉКОВИЋ СВЕТОЗАР
+НЕДЕЉКОВИЋ ВЕРА
+НЕДЕЉКОВИЋ ВЕРИЦА
+НЕДЕЉКОВИЋ ВЛАДИСЛАВ ДР
+НЕДЕЉКОВИЋ ВОЈИСЛАВ
+НЕДЕЉКОВИЋ ВУЧКО
+НЕДЕЉКОВИЋ ЗАГОРКА
+НЕДЕЉКОВИЋ ЗЛАТА
+НЕДИЋ ШПИРО
+НЕДИЋ БИЉАНА
+НЕДИЋ БОРИСЛАВ
+НЕДИЋ БОРЈАНКА
+НЕДИЋ ДАРИНКА
+НЕДИЋ ДЕСАНКА ПРОФЕСОР
+НЕДИЋ ДРАГОСЛАВ
+НЕДИЋ ЈЕЛЕНА
+НЕДИЋ ЈЕЛИСАВЕТА
+НЕДИЋ ЈОВАН ДИПЛ ИНГ
+НЕДИЋ ЈОВАН
+НЕДИЋ КАТИЦА
+НЕДИЋ КАТИЦА
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЉУБИЦА
+НЕДИЋ МЕЛАНИЈА
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛЕНКО
+НЕДИЋ МИЛОШ
+НЕДИЋ МИЛОЈЕ
+НЕДИЋ МИЛОВАН
+НЕДИЋ МИРОСЛАВ
+НЕДИЋ МЛАДЕН
+НЕДИЋ НЕНАД
+НЕДИЋ НИКОЛА
+НЕДИЋ ПЕТАР
+НЕДИЋ РАДОШ
+НЕДИЋ РАДОМИР
+НЕДИЋ РАДОСЛАВ
+НЕДИЋ РАДОСЛАВ
+НЕДИЋ САВА
+НЕДИЋ СМИЉА
+НЕДИЋ СНЕЖАНА
+НЕДИЋ-СРЕМАЦ НАДА
+НЕДИЋ СТЕВАН
+НЕДИЋ ВЕРА
+НЕДИЋ ВИДА
+НЕДИЋ ВЛАДИМИР
+НЕДИЋ ЗЛАТОЈЕ
+НЕДИЋ ЗОРАН
+НЕДИМОВИЋ БОЖО
+НЕДИМОВИЋ ДРАГАН
+НЕДИМОВИЋ ГОРДАНА
+НЕДИНИЋ СРЕТЕН
+НЕДИНИЋ ЗОРАН
+НЕДОМАЧКИ МИЛАН
+НЕДОМАЧКИ СТЕВАН
+НЕДОВИЋ АНКИЦА
+НЕДОВИЋ МИРО
+НЕДОВИЋ МИРО
+НЕДОВИЋ ВЛАДО
+НЕДУЧИЋ СВЕТОЗАР
+НЕДУЧИН АЛЕКСАНДАР
+НЕДУЧИН ДРАГИЦА
+НЕДУЧИН ЛАЗАР ДИПЛ ИНГ
+НЕДУЧИН МИЛЕНА
+НЕДВИДЕК БОРИС ДР
+НЕГЛИЋ ЂОРЂЕ
+НЕГЛИЋ КАТИЦА
+НЕГОВАНОВИЋ ЖИВКО
+НЕГОВАНОВИЋ БРАНКО
+НЕГОВАНОВИЋ ЛАЗАР
+НЕГРУ БИСЕРКА
+НЕГУШЕВИЋ ПАЈА
+НЕЈГЕБАУЕР АЛЕКСАНДАР ДР ПРОФ
+НЕМЧАНИН ЂУРЂИЦА
+НЕМЧАНИН МАРИЈА
+НЕМЧАНИН МИРЈАНА
+НЕМЧЕВ БОРИВОЈ
+НЕМЧЕВ ДУШКО
+НЕМЧЕВ ЈЕЛЕНА
+НЕМЧЕВ НИКОЛА
+НЕМЧЕВ СРБИНКО
+НЕМЧЕВИЋ МАРКО
+НЕМЧЕВИЋ ПЕТАР
+НЕМА ВАЛЕРИЈА
+НЕМЕЧЕК РОЖА
+НЕМЕШ ЈЕЛА
+НЕМЕШ СЛОБОДАНКА
+НЕМЕЦ АНТУН
+НЕМЕЦ АНТУН
+НЕМЕЦ ЕМАНУЕЛ
+НЕМЕЦ ЉУДМИЛА
+НЕМЕТ ШАНДОР
+НЕМЕТ АНДРИЈА
+НЕМЕТ АНТАЛ
+НЕМЕТ АНТАЛ
+НЕМЕТ АНТАЛ
+НЕМЕТ АРПАД
+НЕМЕТ БОРИСЛАВКА
+НЕМЕТ ДЕЖЕ
+НЕМЕТ ДЕЈАН
+НЕМЕТ ЕРНЕСТ
+НЕМЕТ ГЕРГЕЉ
+НЕМЕТ ГЕЗА ДР
+НЕМЕТ ГЕЗА
+НЕМЕТ ИШТВАН
+НЕМЕТ ИШТВАН
+НЕМЕТ ИШТВАН
+НЕМЕТ ИЛОНА
+НЕМЕТ ИЛОНА
+НЕМЕТ ИЛОНКА
+НЕМЕТ ЈУЛИЈАНА
+НЕМЕТ КАРЛО
+НЕМЕТ КАРЛО
+НЕМЕТ КАТИЦА
+НЕМЕТ ЛАЈОШ
+НЕМЕТ ЛАСЛО
+НЕМЕТ ЛАСЛО
+НЕМЕТ ЉИЉАНА
+НЕМЕТ МАРИЈАНА
+НЕМЕТ МАРИЈА
+НЕМЕТ МАРИЈА
+НЕМЕТ МИХАЉ
+НЕМЕТ МИЛКА
+НЕМЕТ МИРЈАНА
+НЕМЕТ-МУЧИ МАРИЈА
+НЕМЕТ ОЛИВЕРА
+НЕМЕТ ОТО
+НЕМЕТ ПЕТАР
+НЕМЕТ РОЗАЛИЈА
+НЕМЕТ РУДОЛФ
+НЕМЕТ СТЕВАН
+НЕМЕТ СТОЈАНКА
+НЕМЕТ ТИБОР
+НЕМЕТ ВИОЛЕТА
+НЕМЕТ ЗОЛТАН
+НЕМЕТ ЗОЛТАН
+НЕМЕТХ ИРЕНА
+НЕНАД СИМО
+НЕНАДИЋ МИЛАН
+НЕНАДИЋ МИЛЕНКО
+НЕНАДИЋ МИЛОРАД
+НЕНАДИЋ РАТКО
+НЕНАДОВ ЖИВКО
+НЕНАДОВ АМАЛИЈА
+НЕНАДОВ АНКА
+НЕНАДОВ БРАНИСЛАВ
+НЕНАДОВ ДРАГОМИР
+НЕНАДОВ ЈЕВРОСИМА
+НЕНАДОВ КАМЕНКО
+НЕНАДОВ КОСТА ДИПЛ ИНГ
+НЕНАДОВ МИЛЕНКО
+НЕНАДОВ МИЛЕНКО
+НЕНАДОВ ОЛГА
+НЕНАДОВ ПЕТАР
+НЕНАДОВ РАЈКО
+НЕНАДОВ СТЕВАН
+НЕНАДОВ ВОЈИСЛАВ
+НЕНАДОВИЋ БОРИСЛАВ
+НЕНАДОВИЋ ДАНИЦА
+НЕНАДОВИЋ ДРАГИЦА
+НЕНАДОВИЋ ДУШАН
+НЕНАДОВИЋ ЈУЛКИЦА
+НЕНАДОВИЋ МИХАЈЛО
+НЕНАДОВИЋ МИЛЕНКО ДР
+НЕНАДОВИЋ МИТАР
+НЕНАДОВИЋ ПАНТА
+НЕНАДОВИЋ ПЕТАР
+НЕНАДОВИЋ СЛАВНА
+НЕНАДОВИЋ СЛОБОДАН
+НЕНАДОВИЋ ВАСИЛИЈЕ
+НЕНЕЗИЋ ЂОРЂЕ
+НЕНЕЗИЋ ДАРКО
+НЕНЕЗИЋ МИРОСЛАВ
+НЕНЕЗИЋ РАДЕНКО
+НЕНЕЗИЋ РАДИСАВ
+НЕНИЋ ЂОРЂЕ
+НЕНИЋ БРАНИМИР
+НЕНИЋ САВА
+НЕНИЋ ВЕРА
+НЕНИЋ ВЕРИЦА
+НЕНИН ЖИВКО
+НЕНИН ДЕЈАН
+НЕНИН ДРАГИЊА
+НЕНИН ДРАГОМИР
+НЕНИН ЈАСЕНКА
+НЕНИН ЛЕНКА
+НЕНИН МАРА
+НЕНИН МИЛАН
+НЕНИН МИЛИЦА
+НЕНИН МИЛИЦА
+НЕНИН МИЛОРАД
+НЕНИН МИРКО
+НЕНИН РАЈКО
+НЕНИН САВА
+НЕНИН СЛАВКО
+НЕНИН ТОМИСЛАВ
+НЕНИН ВАСА
+НЕОФИТОВИЋ ДЕЈАН
+НЕПИЛ АНТУН
+НЕПОКОЈЧИЦКИ АЛЕКСАНДАР
+НЕРА ОРЛЕАНА
+НЕРАЦ МЛАДИНКО
+НЕРАЦ ПЕРО
+НЕРАЦ СЛОБОДАН
+НЕРАНЧИЋ НИКОЛА
+НЕРАНЏИЋ БОШКО
+НЕРАНЏИЋ БРАНИСЛАВ
+НЕРАНЏИЋ ЈАСМИНА
+НЕРАНЏИЋ МАКСИМ
+НЕРАНЏИЋ НЕВЕНКА
+НЕРАНЏИЋ СТОЈАНКА
+НЕРЕР ЂУРА
+НЕРЕР АЛЕКСАНДАР
+НЕРТИЦА СТЕВАН
+НЕСКАЛИЋ ЕВГЕНИЈЕ
+НЕСКАЛИЋ ЛЕОНАРДО
+НЕСТОРОВ ЖЕЉКО
+НЕСТОРОВ АЛЕКСАНДАР
+НЕСТОРОВ ДРАГОЉУБ
+НЕСТОРОВ ЛАЗАР
+НЕСТОРОВ МИЛАН ДИПЛ ИНГ
+НЕСТОРОВ МИРКО
+НЕСТОРОВ СЛОБОДАН
+НЕСТОРОВИЋ ЖИВОТА
+НЕСТОРОВИЋ БИЉАНА
+НЕСТОРОВИЋ БЛАГОЈЕ
+НЕСТОРОВИЋ БОЈАНА
+НЕСТОРОВИЋ БОРИС
+НЕСТОРОВИЋ ДРАГАН
+НЕСТОРОВИЋ ДРАГОЉУБ
+НЕСТОРОВИЋ ДРАГУТИН
+НЕСТОРОВИЋ ДУШАНКА
+НЕСТОРОВИЋ ГАВРА
+НЕСТОРОВИЋ ИСА
+НЕСТОРОВИЋ ЉИЉАНА
+НЕСТОРОВИЋ МИЛЕ
+НЕСТОРОВИЋ НАДА
+НЕСТОРОВИЋ НАДЕЖДА
+НЕСТОРОВИЋ РАДМИЛА
+НЕСТОРОВИЋ РАДОВАН
+НЕСТОРОВИЋ САВА
+НЕСТОРОВИЋ СЛАВИЦА
+НЕСТОРОВИЋ СЛОБОДАН
+НЕСТОРОВИЋ ВЛАДИМИР
+НЕСТОРОВИЋ ВЛАДИМИР
+НЕВАЈДИЋ ВЕЛИМИР
+НЕВИДОВЧИЋ ЉУБИЦА
+НЕВИДОВЧИЋ МИЛКА
+НЕВИДОВЧИЋ САВА
+НЕВОЛИЋ АНИЦА
+НЕЗИРИ АРИФ
+НЕЗИРОВ АЉИЉ
+НЕЗИРОВ ВЕЛИЧКО
+НИЧИЋ НАДА
+НИЧИЋ ПРЕДРАГ
+НИШАВИЋ КРИСТИНА
+НИШАВИЋ МИЛУТИН
+НИШАВИЋ ПАВЛЕ
+НИШАВИЋ РАДОСЛАВ
+НИШЕВИЋ ЂОРЂЕ
+НИШЕВИЋ ЂУРА
+НИШЕВИЋ ЈОВИЦА
+НИШЕВИЋ КАТИЦА
+НИШЕВИЋ ОЛГА
+НИШЕВИЋ САВА
+НИШИЋ ДРАГАН
+НИШИЋ МЛАЂЕН
+НИШКАНОВИЋ БОШКО
+НИШКАНОВИЋ ЉУПКО
+НИШКАНОВИЋ МИРКО
+НИЋЕТИЋ ЉУБОМИР
+НИЋЕТИЋ МИРА
+НИЋИФОРОВИЋ ЈОВАН
+НИЋИФОРОВИЋ ПЕРА
+НИЋИФОРОВИЋ ПЕТАР
+НИЋИФОРОВИЋ ТЕОДОР
+НИЋИН ЂОРЂЕ
+НИЋИН АЛЕКСАНДАР
+НИЋИН БРАНИСЛАВ
+НИЋИН ДОНКА
+НИЋИН ДУШКО
+НИЋИН МИРОСЛАВ
+НИЋИН НЕВЕНКА
+НИЋИН НИЋИФОР ДИПЛ ИНГ
+НИЋИН СНЕЖАНА
+НИЋИН СОФИЈА
+НИЋИН СВЕТОЗАР
+НИЋИН ВАСИЛИЈЕ
+НИЋИН ВЕРИЦА
+НИЋИН ЗОРА
+НИЦИЋ ДАРКО
+НИДЕРЛЕНДЕР ЂОРЂЕ
+НИДЕРЛЕНИЋ ЗОРАНА
+НИЈЕМЧЕВИЋ НИКОЛА
+НИКЧЕВИЋ БОШКО
+НИКЧЕВИЋ ЈОВАН
+НИКЧЕВИЋ ЉУБОМИР
+НИКЧЕВИЋ МОМО
+НИКЧЕВИЋ РАТКО
+НИКЧЕВИЋ СТАНА
+НИКШИЋ ЖИВКО
+НИКШИЋ ЂУРА
+НИКШИЋ ЦВЕТОЗАР
+НИКШИЋ ДАРКО
+НИКШИЋ ДРАГИЊА
+НИКШИЋ ДРАГОЉУБ
+НИКШИЋ ДУШАНКА
+НИКШИЋ ФРАЊА
+НИКШИЋ ИСА
+НИКШИЋ ЈУЛИЈА
+НИКШИЋ МИЛАН
+НИКШИЋ МИРКО
+НИКШИЋ МЛАДЕН
+НИКШИЋ СТЕВАН
+НИКШИЋ ВЕСНА
+НИКАЧЕВ РАДОВАН
+НИКАЧЕВ РАДОВАН
+НИКАЧЕВИЋ МИХОВИЛ
+НИКАЧЕВИЋ РАДОМАН
+НИКАШИНОВИЋ ЉИЉАНА
+НИКАШИНОВИЋ ЉУБИЦА
+НИКЕТИЋ ГОРДАНА
+НИКЕТИЋ ГОСПАВА
+НИКЕТИЋ ЈЕФТА
+НИКЕТИЋ КАТИЦА
+НИКЕТИЋ НЕБОЈША ДР
+НИКЕТИЋ ПЕТАР
+НИКЕТИЋ САША
+НИКЕТИЋ СИМА
+НИКЕТИЋ СЛОБОДАН
+НИКЕТИЋ ВЛАДИМИР
+НИКЕЗИЋ МИЛА
+НИКЕЗИЋ ПЕТАР
+НИКЕЗИЋ РОКСАНДА
+НИКИЋ БРАНИСЛАВА
+НИКИЋ БРАНИСЛАВ
+НИКИЋ БУДИМИР
+НИКИЋ ДАЈАНА
+НИКИЋ ДРАГАН
+НИКИЋ ЈОВАНКА
+НИКИЋ ЈОВО
+НИКИЋ ЈОВО
+НИКИЋ КАТИЦА
+НИКИЋ ЛАЗАР
+НИКИЋ МАРИНКО
+НИКИЋ МИЛАН
+НИКИЋ МИЛЕ
+НИКИЋ МИЛУТИН
+НИКИЋ МИОДРАГ
+НИКИЋ МИРЈАНА
+НИКИЋ НАДА
+НИКИЋ НАТАША
+НИКИЋ НЕВЕНКА
+НИКИЋ РАДМИЛА
+НИКИЋ РАДОМИР
+НИКИЋ РАДОМИР
+НИКИЋ РАДОМИР
+НИКИЋ САЊА
+НИКИЋ САВА
+НИКИЋ ВЛАДИМИР
+НИКИЋ ЗДРАВКО
+НИКИЋ ЗЛАТА
+НИКИЋ ЗОРА
+НИКИЋ ЗОРКА
+НИКИН БОРИСЛАВ
+НИКИН РАДОМИР
+НИКИН ВЕРА
+НИКИТИШИН НАДА
+НИКИТОВИЋ ЧЕДОМИР
+НИКИТОВИЋ АЛЕКСАНДАР
+НИКИТОВИЋ АНГЕЛИНА
+НИКИТОВИЋ БОЖО
+НИКИТОВИЋ ДУШАН
+НИКИТОВИЋ ДУШАН
+НИКИТОВИЋ МИХАЈЛО
+НИКИТОВИЋ МИЛИЈАНКА
+НИКИТОВИЋ РАДА
+НИКИТОВИЋ РАДОЈИЦА
+НИКИТОВИЋ СЛОБОДАН
+НИКОЧЕВ ЗОРИЦА
+НИКОДИЈЕВИЋ ДУШАН
+НИКОДИЈЕВИЋ ЕНЕСА
+НИКОДИЈЕВИЋ РАДОЈКО
+НИКОДИЈЕВИЋ РАТОМИР
+НИКОДИНОВСКИ СТОЈАН ДИПЛ ИНГ
+НИКОЛЧИЋ БЛАЖО
+НИКОЛЧИЋ ДРАГАН
+НИКОЛЧИЋ СВЕТЛАНА
+НИКОЛЧИН МИЛОШ
+НИКОЛЧИН МИРЈАНА
+НИКОЛАШЕВ БОРИВОЈ
+НИКОЛАШЕВ ЈОВА
+НИКОЛАШЕВ ЉУБОМИР
+НИКОЛАШЕВ МАТИЛДА
+НИКОЛАШЕВ НАДА
+НИКОЛАЈЕВ ЈЕЛЕНА
+НИКОЛАЈЕВ ЛАЗАР
+НИКОЛАЈЕВ МИЛИЦА
+НИКОЛАЈЕВИЋ ДИМИТРИЈЕ
+НИКОЛАЈЕВИЋ ДУШАН
+НИКОЛАЈЕВИЋ ИРЕНА
+НИКОЛАЈЕВИЋ МИЛИВОЈ АКАДЕМСКИ СЛИКАР
+НИКОЛАЈЕВИЋ НИКОЛА
+НИКОЛАЈЕВИЋ РАДИВОЈ
+НИКОЛАЈЕВИЋ ВОЈИСЛАВ
+НИКОЛАЈЕВСКИ АЛЕКСАНДАР
+НИКОЛЕТИЋ БОРА
+НИКОЛЕТИЋ ДРАГАН
+НИКОЛЕТИЋ ДУШАНКА
+НИКОЛЕТИЋ ДУШАН
+НИКОЛЕТИЋ ДУШАН
+НИКОЛЕТИЋ ЈОВАНКА
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ МИЛАН
+НИКОЛЕТИЋ МИЛОШ
+НИКОЛЕТИЋ МИЛОВАН
+НИКОЛЕТИЋ СИМО
+НИКОЛЕТИЋ СТЕВАН
+НИКОЛЕТИЋ СВЕТОЗАР
+НИКОЛЕТИЋ ВИД
+НИКОЛЕТИЋ ЗОРАН
+НИКОЛИЧИН БРАНКО
+НИКОЛИЧИН ДАНИЛО
+НИКОЛИЧИН ЗОРАН
+НИКОЛИШ ДРАГУТИН
+НИКОЛИШ ЕВИЦА
+НИКОЛИШ МИЛАН
+НИКОЛИЋ-ЧАЊИ БАРБАРА
+НИКОЛИЋ-ШИКОПАРИЈА НЕВЕНКА
+НИКОЛИЋ ЋИРИЛО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВА
+НИКОЛИЋ ЖИВКА
+НИКОЛИЋ ЖИВКА
+НИКОЛИЋ ЖИВКО
+НИКОЛИЋ ЖИВКО
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОТА
+НИКОЛИЋ ЖИВОТА
+НИКОЛИЋ ЂОРЂЕ ПРОФЕСОР
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂУРЂИНКА
+НИКОЛИЋ ЂУРЂИНКА
+НИКОЛИЋ ЂУРА
+НИКОЛИЋ ЂУРА
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ-АЛЕКСОВСКИ СЛАВИЦА
+НИКОЛИЋ АНА
+НИКОЛИЋ АНДРИЈА
+НИКОЛИЋ АНКА
+НИКОЛИЋ АНКИЦА
+НИКОЛИЋ-БАЈШЕВ СТАНКА
+НИКОЛИЋ БИЉАНА
+НИКОЛИЋ БИСЕРКА
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖО
+НИКОЛИЋ БОГДАН
+НИКОЛИЋ БОЈКА
+НИКОЛИЋ БОРА
+НИКОЛИЋ БОРА
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИВОЈЕ
+НИКОЛИЋ БОРИВОЈ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БУДИМИР
+НИКОЛИЋ ЦВЕТАНКА
+НИКОЛИЋ ЦВИЈЕТА
+НИКОЛИЋ-ЏАВЕР ИВАН ДИПЛ ИНГ
+НИКОЛИЋ ДАМЈАН
+НИКОЛИЋ ДАМЈАН
+НИКОЛИЋ ДАНА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЕЛ
+НИКОЛИЋ ДАНИЈЕЛ
+НИКОЛИЋ ДАНИЛО
+НИКОЛИЋ ДАНИЛО
+НИКОЛИЋ ДАНКО
+НИКОЛИЋ ДАРИНКА
+НИКОЛИЋ ДАВОРИН
+НИКОЛИЋ ДЕЈАН
+НИКОЛИЋ ДЕСАНКА
+НИКОЛИЋ ДИМИТРИЈЕ
+НИКОЛИЋ ДОБРИВОЈЕ
+НИКОЛИЋ ДРАШКО
+НИКОЛИЋ ДРАГАНА
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОСЛАВ
+НИКОЛИЋ ДРАГО
+НИКОЛИЋ ДРАГУТИН
+НИКОЛИЋ ДУШАН ДИПЛ ИНГ
+НИКОЛИЋ ДУШАНКА
+НИКОЛИЋ ДУШАНКА
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШКО
+НИКОЛИЋ ЕМИЛИЈА
+НИКОЛИЋ ЕМИЛ
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ХИЛДА
+НИКОЛИЋ ХРИСТИНА
+НИКОЛИЋ ИЛИЈА
+НИКОЛИЋ ИСИДОР
+НИКОЛИЋ ИВАНКА
+НИКОЛИЋ ИВАН
+НИКОЛИЋ ИВО
+НИКОЛИЋ ЈАВОРКА
+НИКОЛИЋ ЈЕФТА
+НИКОЛИЋ ЈЕФТИМИР
+НИКОЛИЋ ЈЕФТИМИР
+НИКОЛИЋ ЈЕЛЕНА
+НИКОЛИЋ ЈЕЛЕНА
+НИКОЛИЋ ЈЕЛКА
+НИКОЛИЋ ЈЕЛКА
+НИКОЛИЋ ЈОЦА
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВИЦА
+НИКОЛИЋ ЈУЛИЈАНА
+НИКОЛИЋ ЈУЛКА
+НИКОЛИЋ КАТАРИНА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КОСТАДИН
+НИКОЛИЋ КОСТА
+НИКОЛИЋ КРСТА ДР
+НИКОЛИЋ КРСТА
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЛУЈЗА
+НИКОЛИЋ ЛУКА
+НИКОЛИЋ МАНОЈЛО
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРГИТА
+НИКОЛИЋ МАРГИТА
+НИКОЛИЋ МАРИЦА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МЕЛАНИЈА СТОМАТОЛОГ
+НИКОЛИЋ МЕЛАНИЈА
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИЛАШИН
+НИКОЛИЋ МИЛАНА
+НИКОЛИЋ МИЛАНА
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛЕНА
+НИКОЛИЋ МИЛЕНКО
+НИКОЛИЋ МИЛЕВА
+НИКОЛИЋ МИЛЕВА
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИВОЈЕ
+НИКОЛИЋ МИЛКА
+НИКОЛИЋ МИЛКА
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОЈКО
+НИКОЛИЋ МИЛОМИР
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОСАВА
+НИКОЛИЋ МИЛОСАВА
+НИКОЛИЋ МИЛОВАН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИОДРАГ ДИПЛ ИНГ
+НИКОЛИЋ МИОДРАГ ДР
+НИКОЛИЋ МИОДРАГ ДР
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРКО
+НИКОЛИЋ МИРКО
+НИКОЛИЋ МИРОСЛАВ ДИПЛ ИНГ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИТА
+НИКОЛИЋ МИТА
+НИКОЛИЋ МИТА
+НИКОЛИЋ МЛАДЕНКА
+НИКОЛИЋ МЛАДЕН
+НИКОЛИЋ МОМЧИЛО
+НИКОЛИЋ-МУШИЦКИ ДАРА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДЕЖДА
+НИКОЛИЋ НЕБОЈША
+НИКОЛИЋ НЕДЕЉКА
+НИКОЛИЋ НЕДЕЉКО
+НИКОЛИЋ НЕДЕЉКО
+НИКОЛИЋ НЕНАД ДР
+НИКОЛИЋ НЕНАД
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ ОЛГА
+НИКОЛИЋ ОСМАН
+НИКОЛИЋ ПАУН
+НИКОЛИЋ ПАВЛЕ
+НИКОЛИЋ ПЕРА
+НИКОЛИЋ ПЕРО
+НИКОЛИЋ ПЕРСИДА
+НИКОЛИЋ ПЕТАР ДИПЛ ОЕЦ
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТРА
+НИКОЛИЋ ПЕТРА
+НИКОЛИЋ ПЕТРОНИЈЕ
+НИКОЛИЋ ПРЕДРАГ
+НИКОЛИЋ ПРВОСЛАВ
+НИКОЛИЋ РАДЕНКО
+НИКОЛИЋ РАДИСАВ
+НИКОЛИЋ РАДИВОЈЕ
+НИКОЛИЋ РАДОЈИЦА
+НИКОЛИЋ РАДОЈКА
+НИКОЛИЋ РАДОЈКА
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОСЛАВА
+НИКОЛИЋ РАДОСЛАВ
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАЈКО
+НИКОЛИЋ РАЈКО
+НИКОЛИЋ РАНКА
+НИКОЛИЋ РАТКО МР
+НИКОЛИЋ РАТОМИР
+НИКОЛИЋ РАТОМИР
+НИКОЛИЋ РУЖА
+НИКОЛИЋ РУЖИЦА
+НИКОЛИЋ РУЖИЦА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВЕТА
+НИКОЛИЋ САВКА
+НИКОЛИЋ САВО
+НИКОЛИЋ СЕЋЕРКА
+НИКОЛИЋ СИМА
+НИКОЛИЋ СИМЕОН
+НИКОЛИЋ СИМЕУН
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СЛАЂАНА
+НИКОЛИЋ СЛАВИША
+НИКОЛИЋ СЛАВИЦА
+НИКОЛИЋ СЛАВКО
+НИКОЛИЋ СЛАВНА
+НИКОЛИЋ СЛОБОДАНКА
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СМИЉАНА
+НИКОЛИЋ СНЕЖАНА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СПАСЕНКА
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СРЕТА
+НИКОЛИЋ СРЕТЕНКА
+НИКОЛИЋ СТАНИМИР
+НИКОЛИЋ СТАНИМИР
+НИКОЛИЋ СТАНИСЛАВ
+НИКОЛИЋ СТАНКО
+НИКОЛИЋ СТЕФАНИЈА
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВИЦА
+НИКОЛИЋ СТОЈАДИН
+НИКОЛИЋ СТОЈАН
+НИКОЛИЋ СУЗАНА
+НИКОЛИЋ СВЕТИСЛАВ
+НИКОЛИЋ СВЕТИСЛАВ
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ ТАМАРА
+НИКОЛИЋ ТАТЈАНА
+НИКОЛИЋ ТЕОДОР
+НИКОЛИЋ ТЕОДОР
+НИКОЛИЋ ТИХОМИР
+НИКОЛИЋ ТИХОМИР
+НИКОЛИЋ ТОДОР
+НИКОЛИЋ ТОМИСЛАВ МР
+НИКОЛИЋ ТОМИСЛАВ
+НИКОЛИЋ ТОМИСЛАВ
+НИКОЛИЋ ТРЕНЧА
+НИКОЛИЋ ВАСИЛИЈЕ
+НИКОЛИЋ ВЕКОСЛАВ
+НИКОЛИЋ ВЕЛИМИР
+НИКОЛИЋ ВЕЛИМИР
+НИКОЛИЋ ВЕЉКО ДР ИНГ
+НИКОЛИЋ ВЕЉКО
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРИЦА
+НИКОЛИЋ ВЕСНА
+НИКОЛИЋ ВИДОСАВА
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВЛАДА
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИСЛАВ ДР
+НИКОЛИЋ ВОЈИСЛАВ ДР ДОЦЕНТ
+НИКОЛИЋ ВОЈИСЛАВ ДР ЛЕКАР
+НИКОЛИЋ ВОЈИСЛАВ
+НИКОЛИЋ ВУКАШИН
+НИКОЛИЋ ВУКАШИН
+НИКОЛИЋ ЗАГОРКА
+НИКОЛИЋ ЗДРАВКО
+НИКОЛИЋ ЗДРАВКО
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРКА
+НИКОЛИН АЛЕКСАНДРА
+НИКОЛИН АНА
+НИКОЛИН БРАНКО
+НИКОЛИН ДРАГОСЛАВА ДР
+НИКОЛИН ДУШИЦА
+НИКОЛИН ЕРЖЕБЕТ
+НИКОЛИН ИВИЦА
+НИКОЛИН ЛАЗАР ДР ЛЕКАР
+НИКОЛИН ЉУБИША
+НИКОЛИН МАРГИТА
+НИКОЛИН МИЛАН
+НИКОЛИН МИЛИЦА
+НИКОЛИН МИЛИВОЈ
+НИКОЛИН МИЛИВОЈ
+НИКОЛИН МИРОСЛАВ
+НИКОЛИН РАДОВАН
+НИКОЛИН РАДОВАН
+НИКОЛИН РУЖИЦА
+НИКОЛИН САВА
+НИКОЛИН СИНИША
+НИКОЛИН СИНИША
+НИКОЛИН СТИПАН
+НИКОЛИН ВЕСНА
+НИКОЛИН ВИТОМИР
+НИКОЛОСКИ НИКОЛА
+НИКОЛОСКИ СЛАВИЦА
+НИКОЛОВ ЂОРЂЕ
+НИКОЛОВ БОШКО
+НИКОЛОВ ЈОЦА
+НИКОЛОВ ЈОЦА
+НИКОЛОВ ЉУБИЦА
+НИКОЛОВ НИНА
+НИКОЛОВ РАША
+НИКОЛОВ СИНИША
+НИКОЛОВ СТОЈАН
+НИКОЛОВ ТОДОР
+НИКОЛОВСКИ ИЛИЈА
+НИКОЛОВСКИ МИЛАН
+НИКОТИЋ ВЕЛИМИР
+НИЛИЋ НИКОЛА
+НИЛОВИЋ МИРОСЛАВ
+НИМРИХТЕР ДРАГУТИН
+НИМРИХТЕР МИЛАН
+НИМРИХТЕР МИРОСЛАВ
+НИМРИХТЕР ВЛАДА
+НИНЧИЋ БИСЕРКА
+НИНЧИЋ ДАМЈАН
+НИНЧИЋ МИЛЕНКО
+НИНЧИЋ ПЕРО
+НИНИЋ АЛЕКСА
+НИНИЋ БРАНИСЛАВ
+НИНИЋ МАРКО
+НИНИЋ МИРКО
+НИНИЋ РАДОЈЕ
+НИНИЋ РАДОМИР
+НИНКОВ ЖИВКО
+НИНКОВ ЂОРЂЕ
+НИНКОВ ЂОРЂЕ
+НИНКОВ ЂОРЂЕ
+НИНКОВ БОЖИЦА
+НИНКОВ БОРИСЛАВ
+НИНКОВ БОРИСЛАВ
+НИНКОВ БРАНИСЛАВ
+НИНКОВ ДОБРИВОЈ
+НИНКОВ ДРАГОМИР
+НИНКОВ ДУШАН
+НИНКОВ ДУШАН
+НИНКОВ ДУШАН
+НИНКОВ ЕМИЛИЈА
+НИНКОВ ЕРЖЕБЕТ
+НИНКОВ ЈЕЛИЦА
+НИНКОВ ЈОВАН
+НИНКОВ ЈУЛИЈАН МР
+НИНКОВ-КОМЛЕНОВ ДАНИЦА ДР
+НИНКОВ ЛАЗАР
+НИНКОВ ЛАЗАР
+НИНКОВ-ЛЕЂЕНАЦ ЈОВАНКА ДР
+НИНКОВ ЉУБОМИР
+НИНКОВ ЉУБОМИР
+НИНКОВ МАРИЈА
+НИНКОВ МАРИЈА
+НИНКОВ МИЛАНА
+НИНКОВ МИЛАН
+НИНКОВ МИЛИЦА
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОВАН
+НИНКОВ МИЛОВАН
+НИНКОВ МИЛУТИН
+НИНКОВ МИРЈАНА
+НИНКОВ МИРКО
+НИНКОВ МИРОСЛАВ
+НИНКОВ МИРОСЛАВ
+НИНКОВ НАДА
+НИНКОВ НЕБОЈША
+НИНКОВ НЕБОЈША
+НИНКОВ НИКОЛА
+НИНКОВ ОЛГИЦА
+НИНКОВ РАДИЦА
+НИНКОВ САВЕТА ДИПЛ ИНГ
+НИНКОВ САВЕТА
+НИНКОВ СЛАВКО
+НИНКОВ СМИЉА
+НИНКОВ СОФИЈА
+НИНКОВ СПОМЕНКА
+НИНКОВ СТЕВАН
+НИНКОВ СТЕВАН
+НИНКОВ СТЕВАН
+НИНКОВ ВЕЛИМИР
+НИНКОВ ВЕЉКО
+НИНКОВ ВЕРИЦА
+НИНКОВ ВЛАДИМИР
+НИНКОВ ВОЈИСЛАВ
+НИНКОВИЋ ШПИРО
+НИНКОВИЋ ШПИРО
+НИНКОВИЋ ЂУРАЂ
+НИНКОВИЋ ЂУРА
+НИНКОВИЋ АНКИЦА
+НИНКОВИЋ БРАНКО
+НИНКОВИЋ ДАНИЦА
+НИНКОВИЋ ДРАГА
+НИНКОВИЋ ДУШАН
+НИНКОВИЋ ЕРИКА
+НИНКОВИЋ ГАВРА
+НИНКОВИЋ ЈАНКО
+НИНКОВИЋ ЈОЈА
+НИНКОВИЋ ЈОВАНКА
+НИНКОВИЋ МАРИЦА
+НИНКОВИЋ МАРКО
+НИНКОВИЋ МИЋО
+НИНКОВИЋ МИХАИЛО
+НИНКОВИЋ МИЛАН
+НИНКОВИЋ МИЛОШ
+НИНКОВИЋ МИРЈАНА
+НИНКОВИЋ МИРЈАНА
+НИНКОВИЋ НИКОЛА
+НИНКОВИЋ НИКОЛА
+НИНКОВИЋ ПЕРА
+НИНКОВИЋ ПЕРО
+НИНКОВИЋ ПЕТАР
+НИНКОВИЋ РАДОМИР
+НИНКОВИЋ РАДОВАН
+НИНКОВИЋ РАЈКО
+НИНКОВИЋ СРЂАН
+НИНКОВИЋ СТОЈАН
+НИНКОВИЋ СВЕТИСЛАВ
+НИНКОВИЋ ВЕРА
+НИСИМ ДЕСА
+НИСТЕР ЕВА
+НИСТОР ДРАГАН
+НИСТОРАН ЂОРЂЕ
+НИСТОРАН МИЛАН
+ЊАГОЈЕВ МИЛАДИН
+ЊАГРИН СЛАВИЦА
+ЊАГУЛ-ДОКИЋ СРБИСЛАВА
+ЊАГУЛ ДУШАН
+ЊАРАДИ ЕВГЕНИЈЕ
+ЊАРАДИ ЈАНКО
+ЊАРАДИ ЈОВГЕН
+ЊАРАДИ МАРИЈА
+ЊАРАДИ СОФИЈА
+ЊАРИ ШАНДОР
+ЊАРИ ДЕЖЕ
+ЊЕЖИЋ ОБРАД
+ЊЕЖИЋ ЗВОНКО
+ЊЕГОМИР ЂУРО
+ЊЕГОМИР ЉУБИНКА ДР ЛЕКАР
+ЊЕГОМИР МИЛАН
+ЊЕГОМИР НИКОЛА
+ЊЕГОМИР НОВАК
+ЊЕГОВАН ЖАРКО
+ЊЕГОВАН ЈОВАНКА
+ЊЕГОВАН МАРА
+ЊЕГОВАН МАРИЈА
+ЊЕГОВАН МИРКО
+ЊЕГОВАН МИРКО
+ЊЕГОВАН СТОЈАНКА
+ЊЕГОВАНОВИЋ ЕЛЕНА
+ЊЕГРИЋ МАРИЈА
+ЊЕГРИЋ РАДМИЛА
+ЊЕМЧОК ЈОЖЕФ
+ЊЕМОГА ЈУРАЈ
+ЊЕЊИЋ ВЛАДО
+ЊЕРГЕШ ЈАНОШ
+ЊЕРГЕШ МАРИЈА
+ЊИРЕ СТЕВАН
+ЊИРЈАК ЂОРЂЕ
+ЊИРЈАК ЛЕОНА
+ЊИТРИ КАРОЉ
+ЊУЊИЋ МИЛЕВА
+НОЧЕВСКА ВЕЛИКА
+НОЧЕВСКИ БИЉАНА
+НОЧЕВСКИ РАДЕ
+НОЖИЦА ЦВИЈЕТА
+НОЖИЦА МИЛИВОЈЕ
+НОЖИНИЋ ДАРА
+НОЖИНИЋ ЉУБИЦА
+НОЖИНИЋ МИЛАН
+НОЖИНИЋ НИКОЛА
+НОЛА ТИМЊА
+НОЛИН ЂУРЂИНКА
+НОНИН АНЂЕЛКА
+НОНИН ДУШАН
+НОНИН МИЛОРАД
+НОНИН НИКОЛА
+НОНИН СОЊА
+НОНИН ВИТОМИР
+НОНКОВИЋ МИЛАН
+НОНКОВИЋ МИЛОРАД
+НОСАК ЂОРЂЕ
+НОСАК МИКЛОШ
+НОСАЉ МИША
+НОСЕК ЕВИЦА
+НОСЕК ФРАЊА
+НОСЕК КАРЛО
+НОСЕК КСЕНИЈА
+НОСЕК ЗОРАН
+НОСОЊИН ЛЕНКА
+НОСОЊИН МИЛАН
+НОСОЊИН САВА
+НОСОВИЋ ЂОРЂЕ
+НОСОВИЋ ДАНИЦА
+НОСОВИЋ ЈАНКО
+НОСОВИЋ ЈОВАН
+НОСОВИЋ ЈОВАН
+НОСОВИЋ ЗОРАН
+НОТА ЈАНКО
+НОТАРОШ ДАРИНКА
+НОТАРОШ ДЕЈАН
+НОТАРОШ МИЛАН
+НОТХОФ ЕВА
+НОТХОФ ЗОЛТАН
+НОВЧИЋ БУДИМИР
+НОВЧИЋ ДАМЊАН
+НОВЧИЋ ДУШАН
+НОВЧИЋ СТАНА
+НОВЧИЋ СТАНА
+НОВЧИЋ ТАТЈАНА
+НОВЧИЋ ВЛАДИМИР
+НОВАЧИЋ ЂУРА
+НОВАЧИЋ ЂУРО
+НОВАЧИЋ ПЕРСИДА
+НОВАК ЂОРЂЕ
+НОВАК АНДРИЈА
+НОВАК АНТАЛ
+НОВАК БОШКО
+НОВАК ДРАГИЦА
+НОВАК ДУШАНКА
+НОВАК ФРАЊА
+НОВАК ИШТВАН
+НОВАК ИРЕНА
+НОВАК ИВАН
+НОВАК ЈАНА
+НОВАК ЈАНОШ
+НОВАК ЈОСИП
+НОВАК ЈОСИП
+НОВАК ЈОВАН
+НОВАК ЛАДИСЛАВ МР
+НОВАК ЛАСЛО
+НОВАК ЛАЗАР
+НОВАК ЉУБОМИР
+НОВАК МАРГИТА
+НОВАК МАРИЈА
+НОВАК МАТИЛДА
+НОВАК МИХАЉ
+НОВАК НАНДОР
+НОВАК НИКОЛА
+НОВАК СЛАВКА
+НОВАК СТЕВАН
+НОВАК СТЕВАН
+НОВАК СТЈЕПАН
+НОВАК ТИБОР
+НОВАК-ВАЈДА ЉИЉАНА
+НОВАК ВАСИЛИЈА
+НОВАК ВЕРА
+НОВАК ВЕРОНА
+НОВАК ВИКТОР
+НОВАКОВ ЧЕДОМИР
+НОВАКОВ АНЂЕЛКО
+НОВАКОВ БОРИСЛАВ
+НОВАКОВ ДРАГОЉУБ МР
+НОВАКОВ ДУШАН
+НОВАКОВ ГОРДАНА
+НОВАКОВ ГОСПАВА ДР
+НОВАКОВ ЈЕЛИЦА
+НОВАКОВ ЛАЗАР
+НОВАКОВ ЉУБИНКА
+НОВАКОВ ЉУБОМИР
+НОВАКОВ МАРИНА
+НОВАКОВ МИЛАН
+НОВАКОВ МИЛИЦА
+НОВАКОВ МИЛИВОЈ
+НОВАКОВ МИЛОРАД
+НОВАКОВ МИРОСЛАВ
+НОВАКОВ НАДА
+НОВАКОВ ПРЕДРАГ
+НОВАКОВ ПРЕДРАГ
+НОВАКОВ РАДОВАН ДИПЛ ИНГ
+НОВАКОВ САВА
+НОВАКОВ САВА
+НОВАКОВ СРБИСЛАВ
+НОВАКОВ СРЕТЕН
+НОВАКОВ СРЕТЕН
+НОВАКОВ СТЕВАН ДР
+НОВАКОВ СТЕВАН
+НОВАКОВ ВАЛЕРИЈА
+НОВАКОВ ВЕСЕЛИН
+НОВАКОВ ЗДРАВКО
+НОВАКОВИЋ ЖИВАН
+НОВАКОВИЋ ЖИВАН
+НОВАКОВИЋ ЖИВКО
+НОВАКОВИЋ ЖИВОЈИН
+НОВАКОВИЋ ЂОРЂЕ
+НОВАКОВИЋ ЂУЈА
+НОВАКОВИЋ ЂУРО
+НОВАКОВИЋ АЛЕКСАНДАР
+НОВАКОВИЋ АНЂЕЛКА
+НОВАКОВИЋ АНА
+НОВАКОВИЋ АНКА
+НОВАКОВИЋ БОШКО ДР ПРОФ
+НОВАКОВИЋ БОГДАН
+НОВАКОВИЋ БРАНИСЛАВА
+НОВАКОВИЋ БРАНИСЛАВ
+НОВАКОВИЋ БРАНКО
+НОВАКОВИЋ БРАНКО
+НОВАКОВИЋ ЦВЕТКО ДР
+НОВАКОВИЋ ЦВИЈЕТА
+НОВАКОВИЋ ДАНА
+НОВАКОВИЋ ДАНИЦА
+НОВАКОВИЋ ДИМИТРИЈЕ
+НОВАКОВИЋ ДРАГАН
+НОВАКОВИЋ ДРАГАН
+НОВАКОВИЋ ДРАГА
+НОВАКОВИЋ ДРАГОЉУБ
+НОВАКОВИЋ ДРАГОЉУБ
+НОВАКОВИЋ ДРАГОСЛАВ
+НОВАКОВИЋ ДУШАНКА
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ФРАЊО
+НОВАКОВИЋ ГОРДАНА
+НОВАКОВИЋ ГОРИЦА
+НОВАКОВИЋ ГРОЗДА
+НОВАКОВИЋ ИНЂИЈА
+НОВАКОВИЋ ЈЕЛЕНА
+НОВАКОВИЋ ЈЕЛЕНА
+НОВАКОВИЋ ЈОВАНКА
+НОВАКОВИЋ ЈОВАН
+НОВАКОВИЋ ЈОВАН
+НОВАКОВИЋ КОСА
+НОВАКОВИЋ ЛАЗАР
+НОВАКОВИЋ ЛЕПОСАВА
+НОВАКОВИЋ ЉИЉАНА
+НОВАКОВИЋ ЉУБОМИР
+НОВАКОВИЋ ЉУБОМИР
+НОВАКОВИЋ МАРИЦА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МЕЛАНИЈА
+НОВАКОВИЋ МИШО
+НОВАКОВИЋ-МИДИ ДИВНА ДИПЛ ТУРИЗМ
+НОВАКОВИЋ МИЈОДРАГ
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛОШ
+НОВАКОВИЋ МИЛОШ
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОВАН
+НОВАКОВИЋ МИЛОВАН
+НОВАКОВИЋ МИОДРАГ ДР
+НОВАКОВИЋ МИОДРАГ
+НОВАКОВИЋ МЛАДЕН
+НОВАКОВИЋ МОМЧИЛО
+НОВАКОВИЋ НАДА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ ОЛИВЕР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ-ПЛАВШИЋ ЈЕЛЕНА
+НОВАКОВИЋ РАДМИЛО
+НОВАКОВИЋ РАДОЈКА
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОВАН
+НОВАКОВИЋ РАЈКО
+НОВАКОВИЋ РАНКО
+НОВАКОВИЋ РОСАНКА
+НОВАКОВИЋ РУЖИЦА
+НОВАКОВИЋ САВА
+НОВАКОВИЋ САВА
+НОВАКОВИЋ СЛАВКО
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СОФИЈА
+НОВАКОВИЋ СПАСОЈА
+НОВАКОВИЋ СПОМЕНКА
+НОВАКОВИЋ СТАНИСЛАВ
+НОВАКОВИЋ СТЕВАН ДИПЛ ИНГ
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВО
+НОВАКОВИЋ СТОЈАН
+НОВАКОВИЋ СВЕТОМИР
+НОВАКОВИЋ ВЕЛИМИР
+НОВАКОВИЋ ВЕЛИНКА
+НОВАКОВИЋ ВЕРИЦА
+НОВАКОВИЋ ВЕСНА
+НОВАКОВИЋ ВИДОЈЕ
+НОВАКОВИЋ ВИТКО
+НОВАКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+НОВАКОВИЋ ВЛАДИМИР
+НОВАКОВИЋ ВЛАДИМИР
+НОВАКОВИЋ ВЛАДИСЛАВ
+НОВАКОВИЋ ЗЛАТОМИР
+НОВАКОВИЋ ЗОРА
+НОВАКОВИЋ ЗОРИЦА
+НОВАКОВИЋ ЗОРИЦА
+НОВИЧИЋ МИЛОШ
+НОВИЋ ЧЕДО
+НОВИЋ-ЧУЉАК ЉУБИЦА
+НОВИЋ ДАНИЦА
+НОВИЋ ДУШАН
+НОВИЋ ЈОВАН
+НОВИЋ МИЛАН
+НОВИЋ МИЛАН
+НОВИЋ МИРОСЛАВ
+НОВИЋ МИРОСЛАВ
+НОВИЋ МИТАР
+НОВИЋ НИКОЛА
+НОВИЋ ПАНТЕЛИЈА
+НОВИЋ ПЕРСИДА
+НОВИЋ ТАТЈАНА
+НОВИЋ ТОМА
+НОВИЋ ВЛАЈКО
+НОВИЦКИ АЛЕКСА
+НОВИКОВ ВЕРА
+НОВИНЦ ИВАН
+НОВИТОВИЋ МАРКО
+НОВКОВ ЖИВОЈИН
+НОВКОВ ДОБРИЛА
+НОВКОВ ГАВРА
+НОВКОВ ЈОВАН
+НОВКОВ МИЛАН
+НОВКОВ НАДА
+НОВКОВ СТЕВАН
+НОВКОВ СТЕВАН
+НОВКОВ ЗАГОРКА
+НОВКОВИЋ ЂОРЂЕ
+НОВКОВИЋ АНКА
+НОВКОВИЋ БИЉАНА
+НОВКОВИЋ ДРАГИЦА
+НОВКОВИЋ ДРАГИЊА
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ЕЛФРИДА
+НОВКОВИЋ ЕЛИЗАБЕТА
+НОВКОВИЋ ЈОВАН
+НОВКОВИЋ МИХАЈЛО
+НОВКОВИЋ МИЛАН
+НОВКОВИЋ МИЛИНКО
+НОВКОВИЋ МИЛОШ
+НОВКОВИЋ МИРЈАНА
+НОВКОВИЋ МОМЧИЛО
+НОВКОВИЋ МОМЧИЛО
+НОВКОВИЋ НАДА
+НОВКОВИЋ НЕБОЈША ДР
+НОВКОВИЋ НИКОЛА
+НОВКОВИЋ РОСА
+НОВКОВИЋ СМИЉКА
+НОВКОВИЋ СТАНКО
+НОВКОВИЋ ВЛАДА
+НОВКОВИЋ ВУКАШИН
+НОВОСЕЛ ГОРДАНА
+НОВОСЕЛ МАРИЈА
+НОВОСЕЛ НАДА
+НОВОСЕЛ РАЈКО
+НОВОСЕЛАЦ КАТИЦА
+НОВОСЕЛАЦ СТЕВАН
+НОВОСЕЛАЦ ЗВОНИМИР
+НОВОСЕЉАЧКИ МИЛИВОЈ
+НОВОСЕЛОВСКИ АНГЕЛ
+НОВОТ ЛАДИСЛАВ
+НОВОТ ПАВЛЕ
+НОВОВИЋ ЖИВОЈИН
+НОВОВИЋ БАТРИЋ
+НОВОВИЋ БИЉАНА
+НОВОВИЋ ДРАГАН
+НОВОВИЋ ГОРДАНА
+НОВОВИЋ МИНА
+НОВОВИЋ НАДА
+НОВОВИЋ ВЛАДО
+НОВОВИЋ ЗДЕНКА
+НОВТА НИКОЛА ДР
+НОВТА ВЛАДИМИР
+НОВТА ВЛАДИМИР
+НУЖДИЋ МИЛАН
+НУЖДИЋ ОБРАД
+НУБЕР АНА
+НУДИЋ ЂОРЂЕ
+НУДИЋ СВЕТОЗАР
+НУХИ ФЕВЗИ
+НУХИ ХАЈДАН
+НУХИ ЗЕКИЈА
+НУКА ХАСАН
+НУКИЋ АЉО
+НУКИЋ ЏЕВАД
+НУКИЋ КАНИТА
+НУКИЋ ОМЕР
+ОЧЕНАШ ЉУДМИЛА
+ОЧКАЈИ ИШТВАН
+ОЧКО ВИЛХЕЛМ
+ОЧОВАЈ БОЖЕНКА
+ОЧОВАЈ ЗУЗАНА
+ОШАП ЈЕЛЕНА
+ОШАП ЈОВАН
+ОШКЕРТ АНКА
+ОШТРИЋ МИЛЕ ДИПЛ ИНГ
+ОШТРИКА ЖАРКО
+ОШТРИКА ЖАРКО
+ОШТРИКА ДАРИНКА
+ОЖЕГОВИЋ ЖАРКО ДИПЛ ИНГ
+ОЖЕГОВИЋ БОШКО
+ОЖЕГОВИЋ БРАНКО ДИПЛ ИНГ
+ОЖЕГОВИЋ ДАНЕ
+ОЖЕГОВИЋ ДРАГА
+ОЖЕГОВИЋ ЛАЗАР
+ОЖЕГОВИЋ МИРКО
+ОЖЕГОВИЋ МОМЧИЛО
+ОЖЕГОВИЋ НЕВЕНКА
+ОЖЕГОВИЋ СЛАВКО
+ОЖЕГОВИЋ СЛОБОДАН
+ОЖЕКОВИЋ ГОЈКО
+ОЖВАТ ЈАСМИНА
+ОЖВАТ ЈАСМИНА
+ОЖВАТ ЈУЛИЈАНА
+ОЖВАТ ОНДРЕЈ
+ОЂИЋ АЛЕКСАНДАР
+ОБШУСТ ЈАНКО
+ОБАДОВ АЛЕКСАНДРА
+ОБАДОВ МИЛЕ
+ОБАДОВ НАТАЛИЈА
+ОБАДОВ СЛАВКО
+ОБАДОВИЋ ДУШАНКА
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОРАД
+ОБАДОВИЋ СЛОБОДАНКА
+ОБЕРМАЈЕР ФРАЊА
+ОБЕРМАН БРАНИСЛАВ
+ОБЕРТ ФРАНЦ
+ОБЈЕДОВИЋ СТОЈАН
+ОБЛЕШЧУК АНКА
+ОБЛЕШЧУК АНКА
+ОБЛЕШЧУК ДРАГИША
+ОБЛЕШЧУК ГРЕГОР
+ОБЛЕШЧУК МАРИЈА
+ОБОЧКИ ВЛАДИМИР
+ОБРАДОВ ГОРДАНА
+ОБРАДОВ ГОРДАНА
+ОБРАДОВ ЉУБИША
+ОБРАДОВ ЉУБИША
+ОБРАДОВ МИЛАН
+ОБРАДОВ МИЛОРАД
+ОБРАДОВ НАДА
+ОБРАДОВ НОВАК
+ОБРАДОВ РАДИВОЈ
+ОБРАДОВ РАДМИЛА
+ОБРАДОВ СТОЈАНКА
+ОБРАДОВИЋ ЧЕДОМИР
+ОБРАДОВИЋ ЖИВКО
+ОБРАДОВИЋ ЖИВКО
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂУРЂИНА
+ОБРАДОВИЋ ЂУРО
+ОБРАДОВИЋ ЂУРО
+ОБРАДОВИЋ АЛЕКСАНДАР
+ОБРАДОВИЋ АНКА
+ОБРАДОВИЋ БОГДАНКА
+ОБРАДОВИЋ БОГДАН
+ОБРАДОВИЋ БОГДАН
+ОБРАДОВИЋ БОРИСЛАВ
+ОБРАДОВИЋ БОРКА
+ОБРАДОВИЋ БРАНИСЛАВ
+ОБРАДОВИЋ БРАНИСЛАВ
+ОБРАДОВИЋ БРАНКО
+ОБРАДОВИЋ БУДИМИР
+ОБРАДОВИЋ БУДО
+ОБРАДОВИЋ ДАНЕ
+ОБРАДОВИЋ ДАНИЈЕЛА
+ОБРАДОВИЋ ДАНИЛО ДР
+ОБРАДОВИЋ ДМИТАР
+ОБРАДОВИЋ ДОБРИЛА
+ОБРАДОВИЋ ДРАГАН
+ОБРАДОВИЋ ДРАГИЦА
+ОБРАДОВИЋ ДРАГОЉУБ
+ОБРАДОВИЋ ДУШАНКА
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ЕМИЛИЈА
+ОБРАДОВИЋ ГЛИША
+ОБРАДОВИЋ ГОРДАНА
+ОБРАДОВИЋ ГВОЗДЕН
+ОБРАДОВИЋ ИЛИЈА
+ОБРАДОВИЋ ЈАСМИНА
+ОБРАДОВИЋ ЈОВАН
+ОБРАДОВИЋ ЈОВАН
+ОБРАДОВИЋ ЈОВО
+ОБРАДОВИЋ КОНСТАНТИН
+ОБРАДОВИЋ ЛАЗАР
+ОБРАДОВИЋ ЛАЗАР
+ОБРАДОВИЋ ЛИДИЈА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉУБИША
+ОБРАДОВИЋ ЉУБОДРАГ
+ОБРАДОВИЋ ЛУКА
+ОБРАДОВИЋ МАРКО
+ОБРАДОВИЋ МИЛАДИН
+ОБРАДОВИЋ МИЛАН
+ОБРАДОВИЋ МИЛА
+ОБРАДОВИЋ МИЛЕНА
+ОБРАДОВИЋ МИЛЕНКО
+ОБРАДОВИЋ МИЛЕ
+ОБРАДОВИЋ МИЛЕ
+ОБРАДОВИЋ МИЛИЦА
+ОБРАДОВИЋ МИЛИЈАНА
+ОБРАДОВИЋ МИЛКА
+ОБРАДОВИЋ МИЛОШ
+ОБРАДОВИЋ МИЛОЈКО
+ОБРАДОВИЋ МИЛОРАД
+ОБРАДОВИЋ МИЛОРАД
+ОБРАДОВИЋ МИЛОВАН ДИПЛ ИНГ
+ОБРАДОВИЋ МИЛУН
+ОБРАДОВИЋ МИЛУТИН
+ОБРАДОВИЋ МИОДРАГ
+ОБРАДОВИЋ МИРАШ
+ОБРАДОВИЋ МИРЈАНА ДИПЛ ИНГ
+ОБРАДОВИЋ МИРКО
+ОБРАДОВИЋ МИРОСЛАВ
+ОБРАДОВИЋ МЛАДЕН
+ОБРАДОВИЋ НАДА
+ОБРАДОВИЋ НЕБОЈША
+ОБРАДОВИЋ НЕДЕЉКА
+ОБРАДОВИЋ НЕДЕЉКО
+ОБРАДОВИЋ НЕМАЊА
+ОБРАДОВИЋ НЕНАД ДР ЛЕКАР
+ОБРАДОВИЋ НИКОЛА
+ОБРАДОВИЋ ПЕТАР
+ОБРАДОВИЋ ПЕТАР
+ОБРАДОВИЋ РАДЕ
+ОБРАДОВИЋ РАДИВОЈЕ
+ОБРАДОВИЋ РАДИВОЈ
+ОБРАДОВИЋ РАДМИЛА
+ОБРАДОВИЋ РАТКО
+ОБРАДОВИЋ РОСА
+ОБРАДОВИЋ САВА
+ОБРАДОВИЋ-СИКИМИЋ МИРЈАНА
+ОБРАДОВИЋ СЛАВИЦА
+ОБРАДОВИЋ СЛАВКО
+ОБРАДОВИЋ СЛАВКО
+ОБРАДОВИЋ СЛОБОДАН
+ОБРАДОВИЋ СМИЉКА
+ОБРАДОВИЋ СМИЉКА
+ОБРАДОВИЋ СТАНИМИР
+ОБРАДОВИЋ СТАНКО
+ОБРАДОВИЋ СТЕВАН ДР
+ОБРАДОВИЋ СТЕВАН
+ОБРАДОВИЋ СТЕВАН
+ОБРАДОВИЋ СТЕВО
+ОБРАДОВИЋ СТЕВО
+ОБРАДОВИЋ СТЈЕПАН
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ ТОДОР
+ОБРАДОВИЋ ВЕРА
+ОБРАДОВИЋ ВЕРА
+ОБРАДОВИЋ ВОЈИСЛАВ
+ОБРАДОВИЋ ЗЛАТИЦА
+ОБРЕХТ ПЕТАР
+ОБРЕНИЋ БОРИВОЈЕ
+ОБРЕНИЋ ДРАГО
+ОБРЕНИЋ ЈЕЛИСАВЕТА
+ОБРЕНИЋ МАНОЈЛЕ
+ОБРЕНИЋ МИЛАДИН
+ОБРЕНИЋ МИЛЕВА
+ОБРЕНИЋ МИЛОМИР
+ОБРЕНИЋ ПРЕДРАГ
+ОБРЕНИЋ РАДОМАН
+ОБРЕНИЋ СНЕЖАНА
+ОБРЕНОВ ЖИВАН
+ОБРЕНОВ ЖИВАН
+ОБРЕНОВ ЈЕЛЕНА
+ОБРЕНОВ ЈЕВРЕМ
+ОБРЕНОВ ЈОЛАНДА
+ОБРЕНОВ КРУНА
+ОБРЕНОВ ПЕТАР
+ОБРЕНОВ РАДИВОЈ
+ОБРЕНОВ САЊА
+ОБРЕНОВ САВА
+ОБРЕНОВ СЛОБОДАНКА
+ОБРЕНОВ СТАНКА
+ОБРЕНОВ СТЕВАН
+ОБРЕНОВ ВАСА
+ОБРЕНОВ ВЛАДИМИР
+ОБРЕНОВ ЗОРИЦА
+ОБРЕНОВ ЗОРИЦА
+ОБРЕНОВИЋ БОЖИДАР
+ОБРЕНОВИЋ БРАНКО
+ОБРЕНОВИЋ ДАРИНКА
+ОБРЕНОВИЋ ДЕСИМИР
+ОБРЕНОВИЋ КАТАРИНА
+ОБРЕНОВИЋ МИЛАН ДР
+ОБРЕНОВИЋ МИОДРАГ ДИПЛ ИНГ
+ОБРЕНОВИЋ МИРОСЛАВ
+ОБРЕНОВИЋ НИКОЛА
+ОБРЕНОВИЋ РАДОСЛАВ
+ОБРЕНОВИЋ ТАТЈАНА
+ОБРЕНОВИЋ ВАСО
+ОБРЕНОВИЋ ВЛАЈКО
+ОБРИЋ ГОЈКО
+ОБРИЋ РАДОЈИЦА
+ОБРКНЕЖЕВ ЂОРЂЕ
+ОБРКНЕЖЕВ МИЛЕНКО
+ОБРКНЕЖЕВ РАДМИЛА
+ОБРКНЕЖЕВ РАДОЈКА
+ОБРКНЕЖЕВ СТЕВАН
+ОБРОВАЧКИ ДУШИЦА
+ОБРОВАЧКИ ГОРДАНА
+ОБРОВАЧКИ МИРОСЛАВ
+ОБРОВАЧКИ РАДЕ
+ОБРОВАЧКИ СВЕТОЗАР
+ОБРОВАЦ МИЈАТ
+ОБРОВСКИ ЂОРЂЕ
+ОБРОВСКИ ДРАГУТИН
+ОБРОВСКИ ИВАН
+ОБРОВСКИ ЈОВАН
+ОБРОВСКИ КАТИЦА
+ОБРОВСКИ МИХАЈЛО
+ОБРОВСКИ ВАСА
+ОБУЋИНА РАТОМИР
+ОБУЋИНА СЛАВКО
+ОБУЋИНА СЛАВОЉУБ
+ОЦОКОЉИЋ ЉУБИНКО
+ОЏИЋ НОВКА
+ОЏИЋ РАТОМИР
+ОЏИЋ ЗОРКА
+ОЏОВСКИ ИЛИЈА
+ОДАЏИЋ ДУШАН
+ОДАЏИЋ ГОРДАНА
+ОДАЏИЋ ЈЕЛИСАВЕТА
+ОДАЏИЋ НАДА
+ОДАЏИЋ РАДИВОЈ
+ОДАЏИЋ СТЕВАН
+ОДАЛОВИЋ БРАНКО
+ОДАВИЋ-ЈОСИЋ ЈЕЛИЦА ДИПЛ ИНГ
+ОДАВИЋ МИЛКА
+ОДАВИЋ СЛАВКО
+ОДОР ЈОСИП
+ОДОВИЋ ЈОВО
+ОДРИ БАЛИНТ
+ОДРИ КАРЛО
+ОФЕНБЕХЕР ГИЗЕЛА
+ОФЕНБЕХЕР ВАЛЕРИЈА
+ОФЕНБЕХЕР ВЕРИЦА
+ОГАР ЈЕЛЕНА
+ОГАР ВЛАДЕ
+ОГНЕНОВСКА БОЈАНА
+ОГНЕНОВСКА ЦВЕТАНКА
+ОГЊАНАЦ ДРАГИЦА
+ОГЊАНОВ МИЛЕТА
+ОГЊАНОВАЦ БОРИСЛАВ
+ОГЊАНОВИЋ ЂОРЂЕ
+ОГЊАНОВИЋ АЦА
+ОГЊАНОВИЋ БРАНИСЛАВА
+ОГЊАНОВИЋ ДАНИЛО
+ОГЊАНОВИЋ ДЕЈАН ДР ЛЕКАР
+ОГЊАНОВИЋ ДМИТАР
+ОГЊАНОВИЋ МАРИЈА ДР ЛЕКАР
+ОГЊАНОВИЋ МИХАЈЛО
+ОГЊАНОВИЋ МИЛОВАН
+ОГЊАНОВИЋ ОГЊЕНА
+ОГЊАНОВИЋ РАДОЈКА ДР ЛЕКАР
+ОГЊАНОВИЋ РАНКО
+ОГЊАНОВИЋ СПАСОЈЕ
+ОГЊАНОВИЋ СВЕТЛАНА
+ОГЊЕНОВИЋ БОЖИДАР
+ОГЊЕНОВИЋ ДАРА
+ОГЊЕНОВИЋ ДРАГУТИН
+ОГЊЕНОВИЋ МИЛЕНКО
+ОГЊЕНОВИЋ НИКОЛА
+ОГЊЕНОВИЋ НИКОЛА
+ОГЊЕНОВИЋ НОВКА
+ОГЊЕНОВИЋ ПЕТАР
+ОГЊЕНОВИЋ РАДОВАНКА
+ОГЊЕНОВИЋ СТАНИСЛАВ
+ОГЊЕНОВИЋ СТЕВАН
+ОГЊЕНОВИЋ СТЕВО
+ОГЊЕНОВИЋ ТОМИСЛАВ
+ОГОРЕЛИЦА БИЛЈАНА
+ОГОРЕЛИЦА БОГДАН
+ОГОРЕЛИЦА БРАНКО
+ОГОРЕЛИЦА МАРИЈА
+ОГРИЗЕК ДРАГИЦА
+ОГРИЗЕК ДРАГУТИН
+ОГРИЗЕК КРИСТИНА
+ОГРИЗЕК РОБЕРТ
+ОГРИЗОВИЋ АЛЕКСАНДАР
+ОГРИЗОВИЋ БОРА
+ОГРИЗОВИЋ ДЕСАНКА
+ОГРИЗОВИЋ ДЕСАНКА
+ОГРИЗОВИЋ ДРАГИЦА
+ОГРИЗОВИЋ ДУШАН
+ОГРИЗОВИЋ ЉУБИЦА
+ОГРИЗОВИЋ ЉУБИЦА
+ОГРИЗОВИЋ МИЛАН
+ОГРИЗОВИЋ МИЛЕ
+ОГРИЗОВИЋ МИЛИВОЈ
+ОГРИЗОВИЋ НЕДЕЉКО
+ОГРИЗОВИЋ НЕДЕЉКО
+ОГРИЗОВИЋ РАДОЈКА
+ОГРИЗОВИЋ СРЕТА
+ОГРИЗОВИЋ ВЕЉКО
+ОГРИЗОВИЋ ВЛАДИМИР
+ОГРИЗОВИЋ ЗОРАН
+ОЈДАНИЋ САВА
+ОЈКИЋ СЛАВКО
+ОКАШАНОВИЋ СРЕТЕН
+ОКАЊ СТЕВАН
+ОКАЊИ ЛАЈОШ
+ОКАЊИ ОСКАР
+ОКАЊИ РАНКА
+ОКАЊИ ТИБОР
+ОКАНОВИЋ НОВИЦА
+ОКЕЗАН ЈОВАН
+ОКИЉ СЛАВКО
+ОКИЉЕВИЋ СОФИЈА
+ОКЉЕША НЕНАД
+ОКЉЕША НЕНАД
+ОКЛОБЏИЈА МАРКО
+ОКРАЈНОВ СТЕВАН
+ОКРУЖНИК ДРАГАН
+ОКСЕНФЕЛД ЈОВАН
+ОКУКА ЉИЉАНА
+ОКУЛИЋ БОГДАН
+ОКУЛИЋ ЗОРАН
+ОЛШОВИ НИКОЛА
+ОЛАХ ШАНДОР
+ОЛАХ ШАНДОР
+ОЛАХ ШАНДОР
+ОЛАХ ЂОРЂЕ
+ОЛАХ АНДРИЈА
+ОЛАХ ЕРНА
+ОЛАХ ФЕРЕНЦ
+ОЛАХ ФЕРЕНЦ
+ОЛАХ ИШТВАН
+ОЛАХ ИШТВАН
+ОЛАХ ЈЕЛЕНА
+ОЛАХ ЈЕЛИСАВЕТА
+ОЛАХ ЈОВАН
+ОЛАХ ЈУЛИЈАНА
+ОЛАХ ЛАСЛО
+ОЛАХ МИРКО
+ОЛАХ НАНДОР
+ОЛАХ НАНДОР
+ОЛАХ ПАВЛЕ
+ОЛАХ ПАВЛЕ
+ОЛАХ РОЗАЛИЈА
+ОЛАХ ВИНЦЕ
+ОЛАЈОШ БЕЛА
+ОЛАЈОШ ГОРДАНА
+ОЛАЈОШ ЈАНОШ
+ОЛАЈОШ МИХАЉ
+ОЛАЈОШ МИХАЉ
+ОЛАЈОШ ОТО
+ОЛАР ПАУ
+ОЛБИНА СЛАВКО
+ОЛЕАР МИХАЈЛО
+ОЛЕАР МИХАЈЛО
+ОЛЕАР САЊА
+ОЛЕАР СВЕТИСЛАВ
+ОЛЕАР ВЛАДА
+ОЛЕЈАР ЈОАКИМ
+ОЛИЧКОВ БРАНИСЛАВ
+ОЛИЧКОВ МИЛОРАД
+ОЛИЋ СТЕВАН
+ОЛИВЕРИЋ НЕБОЈША
+ОЉШЕВСКА НАТАША
+ОЉАЧА ИЛИЈА
+ОЉАЧА МАРИЦА
+ОЉАЧА МИЛЕНКО
+ОЉАЧА МИЛОВАН
+ОЉАЧА НИКОЛА
+ОЉАЧА РАДА
+ОЉАЧА СЛАВОЉУБ
+ОЉАЧА СТАНИСЛАВ
+ОЉАЧА СТЕВАН
+ОЛМАН МАРИЈА
+ОЛУШКИ ДОБРИЛА
+ОЛУШКИ ДУШАН
+ОЛУШКИ ДУШАН
+ОЛУШКИ ЛАЗАР
+ОЛУШКИ МИЛУТИН
+ОЛУШКИ МИРОСЛАВ
+ОЛУШКИ МИРОСЛАВ
+ОЛУШКИ ОЛИВЕРА
+ОЛУШКИ СТОЈАН
+ОЛУШКИ ТОДОР
+ОЛУШКИ ТОМИСЛАВ
+ОЛУШКИ ВАСА
+ОЛУШКИ ВЕЛИМИР ДР
+ОЛУШКИ ВЕРИЦА
+ОЛУЈИЋ ИВАНА
+ОЛУЈИЋ ИВАН
+ОЛУЈИЋ ЈЕЛЕНА
+ОЛУЈИЋ МИЛИЦА
+ОЛУЈИЋ МИРКО
+ОМЧИКУС БОШКО
+ОМЧИКУС ЈЕЛЕНА
+ОМЧИКУС МАГДА
+ОМЧИКУС НИКОЛА
+ОМЧИКУС РАЈКО
+ОМАЉЕВ ИВАН
+ОМАЉЕВ ИВАН
+ОМАЉЕВ ЈУЛКА
+ОМАЉЕВ ЛЕПОСАВА
+ОМАЉЕВ ЛЕПОСАВА
+ОМАЉЕВ МИЛЕНА
+ОМАЉЕВ МИЛОРАД
+ОМАЉЕВ ВОЈИСЛАВ
+ОМАЗИЋ СОФИЈА
+ОМЕРАГИЋ КЕМАЛ
+ОМЕРИ ХАЈРУДИН
+ОМЕРИ ХАЛИМ
+ОМЕРИ ХАСО
+ОМЕРИ НЕЏАД
+ОМЕРИ НУРУДИН
+ОМЕРЗУ АНТОН
+ОМЕРЗУ ЕЛИЗАБЕТА
+ОМИЋ ИДРИЗ
+ОМОРАЦ КАТАРИНА
+ОМОРАЦ ЛАТИНКА
+ОНЧЕВСКИ ЈОВАН
+ОНЧУ ПЕТАР
+ОНДРИК ДУШАНКА
+ОНЕШЧУК МИХАЈЛО
+ОНЕШЋУК НЕНАД
+ОНХАУЗ МАРИЈА
+ОНОДИ ИШТВАН
+ОПАЧАК АНТУН
+ОПАЧАК ИВАН
+ОПАЧИЋ АНЂА
+ОПАЧИЋ АНГЕЛИНА
+ОПАЧИЋ БОСИЉКА
+ОПАЧИЋ БРАНКО
+ОПАЧИЋ ДУШАН
+ОПАЧИЋ КОСТА
+ОПАЧИЋ МИЛАН
+ОПАЧИЋ МИЛАН
+ОПАЧИЋ МИЛОРАД
+ОПАЧИЋ МИОДРАГ
+ОПАЧИЋ МИРКО
+ОПАЧИЋ МИРКО
+ОПАЧИЋ НЕНАД
+ОПАЧИЋ ПАВЛЕ
+ОПАЧИЋ СИМО
+ОПАЧИЋ СЛАВКО
+ОПАЧИЋ СТЕВАН
+ОПАЧИЋ ТОДОР
+ОПАЛИЋ ДАРИНКА
+ОПАЛИЋ МАРКО
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ СОФИЈА
+ОПАНЧАРЕВ ДУШАН
+ОПАНЧАРЕВ ИВАН
+ОПАНЧАРЕВ МИЛКА
+ОПАРНИЦА ЉУБО
+ОПАРНИЦА ЛУКА
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАРИНКО
+ОПАРНИЦА МИЛЕНКО
+ОПАРНИЦА МИРА
+ОПАРНИЦА СОФИЈА
+ОПАРНИЦА ВИД
+ОПЕЛЦ ЛАДИСЛАВ
+ОПОЈЛЕВИЋ ЛАЗАР
+ОПРАНОВИЋ БОЖИДАР
+ОПРАНОВИЋ МИЦА
+ОПРЕШНИК АНКИЦА
+ОПРИЈАН АНЂЕЛКО ДИПЛ ИНГ
+ОПРИЈАН ДРАГАН
+ОПРИЈАН МИЛКА
+ОПРУЦ МИЛОРАД
+ОПСЕНИЦА МИЛАН
+ОПСЕНИЦА СОКА
+ОРЧИЋ ШИМЕ
+ОРЧИЋ ШИМЕ
+ОРЧИЋ БОЖИДАР
+ОРЧИЋ ДРАГО
+ОРЧИЋ ИВАН
+ОРЧИЋ СТЈЕПАН
+ОРШИЋ ЂОРЂЕ
+ОРШИЋ ЈОЦА
+ОРШИЋ МИЛИЦА
+ОРШОШ ЂОРЂЕ
+ОРШОШ БРАНКО
+ОРШОШ ДРАГАН
+ОРШОШ ФЕРЕНЦ
+ОРШОШ ЈОСИП
+ОРШОШ НИКОЛА
+ОРШОШ РОЗАЛИЈА
+ОРШОШ САВА
+ОРШОШ ТЕРЕЗА
+ОРШОШ ЗОРАН
+ОРШОЛИЋ СТЈЕПАН
+ОРАНИЦА МАКСИМ
+ОРАВЕЦ БРАНИСЛАВ
+ОРАВЕЦ БРАНКО
+ОРАВЕЦ МАРКО
+ОРАВЕЦ ПАВЛЕ
+ОРБАН АЛЕКСАНДАР
+ОРБАН ЕМИЛИЈА
+ОРБАН ГАВРА
+ОРБАН ВЕСНА
+ОРДАНОСКИ ЈЕЛЕНА
+ОРДИНАЧЕВ ЂОРЂЕ
+ОРДИНАЧЕВ МЛАДЕН
+ОРДИНАЧЕВ ТОДОР
+ОРДИНАЧЕВ ТОДОР
+ОРДИНАЧЕВ ТОДОР
+ОРЕШЧАНИН БОГДАН
+ОРЕШЧАНИН БРАНКО
+ОРЕШЧАНИН МИЛАН
+ОРЕШЧАНИН МИЛОВАН
+ОРЕШЧАНИН НАТАЛИЈА ДР
+ОРЕШЧАНИН НАТАЛИЈА
+ОРЕШЧАНИН НИКОЛА
+ОРЕШЧАНИН РАДОВАН
+ОРЕШЧАНИН ВЛАДИМИР
+ОРЕШЧАНИН ВЛАДИМИР
+ОРЕШЋАНИН ДУШАН
+ОРЕШКОВИЋ ДОНА
+ОРЕШКОВИЋ ЈЕЛЕНА
+ОРЕШКОВИЋ МИЛЕ
+ОРЕШКОВИЋ СЛАВКО
+ОРЕШКОВИЋ ЗВОНИМИР
+ОРЕБ БОРИС
+ОРЕХОВАЦ РУЖА
+ОРЕЉ ЂУРО
+ОРЕЉ БРАНИСЛАВ
+ОРЕЉ ДАРИНКА
+ОРЕЉ ЈОВАН
+ОРЕЉ ЉУБО
+ОРЕЉ МАТИЛДА
+ОРЕЉ МИЛЕВА
+ОРЕЉ НАТАЛИЈА
+ОРЕЉ РАДЕ
+ОРЕНДИ ЈУЛИЈАНА
+ОРЕНДИ ЛАСЛО
+ОРЕНДИ ОТО
+ОРЛАНДИЋ КОРНЕЛИЈА
+ОРЛАНДИЋ ЗОЛТАН
+ОРЛИЋ БРАНИСЛАВ
+ОРЛИЋ ЉУБИЦА
+ОРЛИЋ ЉУБИЦА
+ОРЛИЋ МАРИЦА
+ОРЛИЋ МАРИЈА
+ОРЛИЋ МИЛАН
+ОРЛИЋ МИЛОРАД
+ОРЛИЋ НАДА
+ОРЛИЋ НАДЕЖДА
+ОРЛИЋ НЕДЕЉКО
+ОРЛИК АНА
+ОРЛИК МАРИЈА
+ОРЛОВАЦ ЕРЖЕБЕТ
+ОРЛОВИЋ АНТЕ
+ОРЛОВИЋ ДАРИНКА
+ОРЛОВИЋ ДУШАН
+ОРЛОВИЋ ЈОВО
+ОРЛОВИЋ ЉУБИЦА
+ОРЛОВИЋ МАНЕ
+ОРЛОВИЋ МИХАЈЛО
+ОРЛОВИЋ МИЛАН
+ОРЛОВИЋ МИЛАН
+ОРЛОВИЋ МИЛОРАД ДР
+ОРЛОВИЋ МИЛОРАД
+ОРЛОВИЋ САША
+ОРЛОВИЋ СРБОЉУБ
+ОРЛОВИЋ СТЕВИЦА
+ОРЛОВИЋ СТОЈАН
+ОРЛОВИЋ СВЕТЛАНА
+ОРМАИ ТИБОР
+ОРЊАКОВ ПРИЗРЕНКА
+ОРО ЧЕДОМИР
+ОРОС ЖАРКО
+ОРОС ЂУРА
+ОРОС ЂУРА
+ОРОС АЛБЕРТ
+ОРОС ЕУГЕН
+ОРОС ЈОАКИМ
+ОРОС МАРИЈА
+ОРОС НИКОЛА
+ОРОС ВАСА
+ОРОС ЗДЕНКА
+ОРОВЧАНЕЦ КИРА ДР
+ОРОВЕЦ ЈОСИП
+ОРОВИЋ МИЛОВАН
+ОРСАГ АНТАЛ
+ОРСИЋ РАДМИЛА
+ОРТАК КАЋА
+ОРВОШ ЛАЈОШ
+ОРЗА МИРЦА
+ОРЗА РОСАНА
+ОСЕЋАНСКИ МЛАДЕН
+ОСЕТРОВ НИКОЛА
+ОСЛОВЧАН БОСИЉКА
+ОСМАНАЈ ИМЕР
+ОСМАНИ АСАН
+ОСМАНИ МЕХМЕД
+ОСМАНИ НЕШАТ
+ОСМАНИ РОМАНКА
+ОСМАНИ СЕЛИМ
+ОСМАНКАЧ СЕЛИМ
+ОСМАНОВИЋ КЛАУДИЈА
+ОСМАНОВИЋ ЉУБИНКА
+ОСМОНОЈ САДРИЈА
+ОСНОВИЋ ОСКАР
+ОСОСЛИЈА РАДЕНКО
+ОСРЕДКАР ЈОСИП
+ОСТЕР ИЛОНА
+ОСТОИЋ ЂОРЂЕ
+ОСТОИЋ ЗОРАН
+ОСТОЈИЋ ЖИВКО
+ОСТОЈИЋ ЂОРЂЕ
+ОСТОЈИЋ БОШКО
+ОСТОЈИЋ БОЖИДАР
+ОСТОЈИЋ БОЖИДАР
+ОСТОЈИЋ БОГДАН
+ОСТОЈИЋ БРАНА
+ОСТОЈИЋ БРАНИМИР
+ОСТОЈИЋ БРАНИСЛАВ ДР
+ОСТОЈИЋ БРАНКО
+ОСТОЈИЋ ДАФИНА
+ОСТОЈИЋ ДОБРИВОЈ
+ОСТОЈИЋ ДРАГАН
+ОСТОЈИЋ ДРАГИЦА
+ОСТОЈИЋ ДРАГИЦА
+ОСТОЈИЋ ДРАГОЉУБ
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ГОЈКО
+ОСТОЈИЋ ГОРИНКА
+ОСТОЈИЋ ИВАН
+ОСТОЈИЋ ЈОВАНКА
+ОСТОЈИЋ КАТИЦА
+ОСТОЈИЋ ЛАЗАР
+ОСТОЈИЋ ЉУБА
+ОСТОЈИЋ ЉУБИНКО
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ МИЋА
+ОСТОЈИЋ МИЛАДИН
+ОСТОЈИЋ МИЛАН
+ОСТОЈИЋ МИЛЕНКО
+ОСТОЈИЋ МИЛЕНКО
+ОСТОЈИЋ МИЛЕВА
+ОСТОЈИЋ МИЛИЦА
+ОСТОЈИЋ МИЛКА
+ОСТОЈИЋ МИЛОШ
+ОСТОЈИЋ МИЛОРАД
+ОСТОЈИЋ МИЛОРАД
+ОСТОЈИЋ МИРЈАНА
+ОСТОЈИЋ НАДА
+ОСТОЈИЋ НАТАША
+ОСТОЈИЋ НЕНАД
+ОСТОЈИЋ ОБРАД
+ОСТОЈИЋ ОБРАД
+ОСТОЈИЋ ОЛГА
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПРЕДРАГ
+ОСТОЈИЋ РАДИВОЈЕ
+ОСТОЈИЋ РАДОЈИЦА
+ОСТОЈИЋ РАДОВАН
+ОСТОЈИЋ РАТКО
+ОСТОЈИЋ РИСТО
+ОСТОЈИЋ СЛАВИЦА
+ОСТОЈИЋ СЛАВКО
+ОСТОЈИЋ СЛОБОДАН
+ОСТОЈИЋ СМИЉКА
+ОСТОЈИЋ СТАНА
+ОСТОЈИЋ СТАНКА
+ОСТОЈИЋ СВЕТОЗАР
+ОСТОЈИЋ ТОМИСЛАВ
+ОСТОЈИЋ ВАСА
+ОСТОЈИЋ ВАСИЛИЈЕ
+ОСТОЈИЋ ВЕСЕЛИН
+ОСТОЈИЋ ВЕСЕЛИН
+ОСТОЈИЋ ВЛАДИМИР
+ОСТОЈИЋ ВОЈИСЛАВ
+ОСТОЈИЋ ЗАГОРКА
+ОСТОЈИЋ ЗОРАН
+ОСТОЈИЋ ЗОРА
+ОСТОЈИН ЖАРКО
+ОСТОЈИН ЈУЛКА
+ОСТОЈИН ЛАЗАР
+ОСТОЈИН МАРИЈА
+ОСТОЈИН МИЛОШ
+ОСТОЈИН ПЕРА
+ОСТОЈИН ПЕРО
+ОСТОЈИН ПЕТАР
+ОСТОЈИН ПЕТАР
+ОСТОЈИН РАДОВАН
+ОСТОЈИН СВЕТИСЛАВ
+ОСТОЈИН ТОША
+ОСТРОГОНАЦ ИВАН НОВИНАР
+ОСТРОГОНАЦ ИВАН
+ОСТРОГОНАЦ ТИБОР
+ОСВАЛД БАРБАРА
+ОСВАЛД ИВАН
+ОСВАЛД ВЕРА
+ОТАШЕВИЋ ЖИВКО
+ОТАШЕВИЋ ЈОВАН
+ОТАШЕВИЋ СЛОБОДАНКА
+ОТАШЕВИЋ ВЛАСТА
+ОТИЋ ЖИВКО
+ОТИЋ БОРИВОЈ
+ОТИЋ БОРИВОЈ
+ОТИЋ ДАРИНКА
+ОТИЋ ДУБРАВКА
+ОТИЋ ЈОВАНКА
+ОТИЋ КАТИЦА
+ОТИЋ МИЛАН
+ОТИЋ МИЛИВОЈ
+ОТИЋ НИКОЛА
+ОТИЋ НОВАК
+ОТИЋ РАДОСЛАВА
+ОТИЋ РАДОСЛАВА
+ОТИЋ РАДОСЛАВ
+ОТИЋ САВА
+ОТИЋ СВЕТОЗАР
+ОТИЋ ВЕЛИЗАР
+ОТИЋ ВЛАДИСЛАВ
+ОТИЋ ВУКИЦА
+ОТЛОКАН ЈОВАН
+ОТМАЧИЋ ДРАГО
+ОТОШ АНДРАШ
+ОТОРАНОВ СЛАВКО
+ОТОВИЋ ВЛАДИМИР
+ОТРУПЧАК ЈОСИП
+ОТРУПЧАК МИЛОШ
+ОТРУПЧАК САМУИЛО
+ОВЦИН МИЛОРАД
+ОВУКА ЂУРО
+ОВУКА ЂУРО
+ОВУКА МИЛАН
+ОВУКА НИКОЛА
+ОЗЕР ЂУРА
+ОЗЕР ЂУРА
+ОЗЕР ЂУРА
+ОЗМЕЦ ВЕРА
+ПШЕНИЧНИК ЗВОНИМИР
+ПАЧАРИЋ ЖИВАН
+ПАЧАРИЋ МАРИЈА
+ПАЧАРИЋ МИРКО
+ПАЧАРИЋ НИКОЛА
+ПАЧАРИЋ РАДИВОЈ
+ПАЧАРИЋ РАДОМИР
+ПАЧАРИЋ ЗОРАН
+ПАШЋАН ШТЕФАНИЈА
+ПАШЋАН ЂОРЂЕ
+ПАШЋАН ЂОРЂЕ
+ПАШЋАН АНКА
+ПАШЋАН ДАНИЦА
+ПАШЋАН ДРАГАН
+ПАШЋАН ДУШАНКА
+ПАШЋАН ДУШАН
+ПАШЋАН ГАВРА
+ПАШЋАН ЈОВАН
+ПАШЋАН ЈОВАН
+ПАШЋАН МИЛОРАД
+ПАШЋАН НАДЕЖДА
+ПАШЋАН НЕДЕЉКО
+ПАШЋАН НИКОЛА
+ПАШЋАН ОЛГА
+ПАШЋАН ПЕРА
+ПАШЋАН ПЕТАР
+ПАШЋАН РАДИВОЈ
+ПАШЋАН РАДОСЛАВА
+ПАШЋАН РАДОСЛАВ
+ПАШЋАН САВА
+ПАШЋАН СИНИША
+ПАШЋАН СМИЉА
+ПАШЋАН СТЕВАН
+ПАШЋАН ТОДОР
+ПАШЋАН ВАСА
+ПАШЋАН ЗАГОРКА
+ПАШЋАНОВИЋ ГРАДИМИР
+ПАШЋАНОВИЋ ЛАЗАР
+ПАШЋАНОВИЋ ЉУБИЦА
+ПАШЋИК КЛАРА
+ПАШЋИК ЛАСЛО
+ПАШАГИЋ РАЈКО
+ПАШАЈЛИЋ АНЂЕЛКО
+ПАШАЈЛИЋ БИЉАНА
+ПАШАЈЛИЋ МИОДРАГ
+ПАШАЈЛИЋ РАДОСЛАВ
+ПАШАЈЛИЋ РАДОСЛАВ
+ПАШАЈЛИЋ ВЛАДО
+ПАШАЛИЋ ПАВЛЕ
+ПАШАНСКИ МИЛАН
+ПАШАНСКИ ВУКИЦА
+ПАШИЋ БОЖАНА
+ПАШИЋ БОЖО
+ПАШИЋ ДРАГИЦА
+ПАШИЋ ДУШКО
+ПАШИЋ ЈОВАН
+ПАШИЋ КАТИЦА
+ПАШИЋ МИЛАН
+ПАШИЋ МИЛЕНА
+ПАШИЋ ПЕТАР
+ПАШИЋ РОСА
+ПАШИЋ САША
+ПАШИЋ СИНИША
+ПАШИЋ СТОЈА
+ПАШИЋ ВОЈИСЛАВ
+ПАШИЋ ЗОРА
+ПАШИН ГРОЗДАНА
+ПАШКА ШАНДОР
+ПАШКИНОВ ВАСКО
+ПАШТЕРАЦ АЛЕКСАНДАР
+ПАШТИ ШАНДОР
+ПАШТИ МАТИЈА
+ПАШУЈКОВИЋ ЈОВАН
+ПАЋИ БОРИС
+ПАЋИ ИШТВАН
+ПАЋИ МАРИО
+ПАЋУК НИКОЛА
+ПАЋУК СЛАВКО
+ПАЖЂЕРСКИ-МАНОЈЛОВИЋ ЈЕЛЕНА
+ПАЖИН ЖЕЉКО
+ПАЖИН АНЂЕЛКО
+ПАЖИН ДАНИЦА
+ПАЖИН ЉУБОМИР
+ПАЂАН ЉУБОМИР
+ПАЂАН МИЛИЦА
+ПАЂЕН ДУШАН
+ПАЂЕН ЛЕПА
+ПАЂЕН МАРИЈА
+ПАЂЕН СТЕВА
+ПАЂЕН ЗДРАВКО
+ПАЦ ИВАНКА
+ПАЦЕК ЛАСЛО
+ПАЦИК ИШТВАН
+ПАДЕЖАНИН ЉУБО
+ПАДЕЖАНИН ВЛАДЕТА
+ПАДЕЈСКИ МИЛЕНА
+ПАДЕЈСКИ МИЛОВАН
+ПАДЕЈСКИ САВА
+ПАДЕЈСКИ ВЕЛИМИР
+ПАДИ АЛЕКСАНДАР
+ПАДИ АЛЕКСАНДАР
+ПАДИ ЛАЈОШ
+ПАДРОВ ГОРАН
+ПАДРОВ НИКОЛА
+ПАДРОВ РАДИВОЈ
+ПАДРОВ ВЕСНА
+ПАГАЧ БИЉАНА
+ПАГАЧ НИКОЛА
+ПАГАЧЕВИЋ АНЂЕЛКО
+ПАГАЧЕВИЋ ДРАГОМИР
+ПАГАЧЕВИЋ СТЕВАН
+ПАГАЧЕВИЋ СТЕВАН
+ПАГАЧЕВИЋ ВАСА
+ПАГАНЕТО ТИНА
+ПАГОНИС ЈУЛКА
+ПАГОНИС ВЛАДИМИРОС
+ПАИЋ ЂУРАЂ
+ПАИЋ ДРАГАН
+ПАИЋ ФРАНЕ
+ПАИЋ ИВАН
+ПАИЋ МАРИЈА
+ПАЈЧИЋ АЛЕКСА
+ПАЈЧИЋ АНА
+ПАЈЧИН ИЛИЈА
+ПАЈЧИН МИЛОЈКО
+ПАЈЧИН НЕДЕЉКА
+ПАЈЧИН ВОЈИСЛАВ
+ПАЈАНТИЋ ДРАГАН
+ПАЈАЗИТОВИЋ МИРЈАНА
+ПАЈДАКОВИЋ ДУБРАВКА
+ПАЈДИЋ ЈУЛИЈА
+ПАЈДИЋ МАРИЈАН
+ПАЈЕВИЋ ЂОРЂЕ
+ПАЈЕВИЋ ДРАГОЉУБ
+ПАЈЕВИЋ ГОРАН
+ПАЈЕВИЋ КОСТА
+ПАЈЕВИЋ МИЛАН
+ПАЈИЋ БЛАГОЈЕ
+ПАЈИЋ БЛАГОЈЕ
+ПАЈИЋ БОЖИДАР
+ПАЈИЋ БОЖО
+ПАЈИЋ БОГИЋ
+ПАЈИЋ БОРИСЛАВ
+ПАЈИЋ БРАНИСЛАВ
+ПАЈИЋ БРАНКО
+ПАЈИЋ БУДИСЛАВ
+ПАЈИЋ ДОБРИВОЈ
+ПАЈИЋ ДРАГОСЛАВ
+ПАЈИЋ ДУШАН ДР
+ПАЈИЋ ДУШАН
+ПАЈИЋ ДУШАН
+ПАЈИЋ ЕМИНА
+ПАЈИЋ ГОРДАНА
+ПАЈИЋ ГОРИЦА
+ПАЈИЋ ГРУЈА
+ПАЈИЋ КОВИЉКА
+ПАЈИЋ ЉУБИНКА
+ПАЈИЋ ЉУБОМИР ДИПЛ ИНГ
+ПАЈИЋ МАРИЈА
+ПАЈИЋ МИЛИЦА
+ПАЈИЋ МИЛИВОЈЕ
+ПАЈИЋ МИЛОШ
+ПАЈИЋ МИЛОШ
+ПАЈИЋ МИЛОЈЕ
+ПАЈИЋ МИЛОРАД
+ПАЈИЋ МИЛОСАВ
+ПАЈИЋ МИЛУН
+ПАЈИЋ МИРКО
+ПАЈИЋ МИРКО
+ПАЈИЋ МЛАДЕН
+ПАЈИЋ НАДА
+ПАЈИЋ НАДА
+ПАЈИЋ НИКОЛА
+ПАЈИЋ НОВАК
+ПАЈИЋ ПЕРО
+ПАЈИЋ ПЕТАР
+ПАЈИЋ РАДОЈИЦА
+ПАЈИЋ РАДОМИР
+ПАЈИЋ РАДОСЛАВА
+ПАЈИЋ РАЈКО
+ПАЈИЋ СИНИША
+ПАЈИЋ СМИЉА
+ПАЈИЋ СРЕДОЈЕ
+ПАЈИЋ СТЕВАН
+ПАЈИЋ СВЕТОЗАР
+ПАЈИЋ ТИХОМИР
+ПАЈИЋ ВАСА
+ПАЈИЋ ВЕЛИМИР
+ПАЈИЋ ВЕСЕЛИН
+ПАЈИЋ ВИДОСАВА
+ПАЈИЋ ВЛАДИСЛАВ
+ПАЈИЋ ВУКИЦА
+ПАЈИК ДАНИЦА
+ПАЈИН ЈОВАН
+ПАЈИН МИЛИВОЈ
+ПАЈКЕРТ АЛЕКСАНДАР
+ПАЈКЕРТ ФРАЊА
+ПАЈКЕРТ МИРОСЛАВА
+ПАЈКЕРТ РАНКА
+ПАЈКИЋ ДРАГАН
+ПАЈКИЋ РАДОСЛАВ
+ПАЈКОВИЋ ДРАГАНА
+ПАЈКОВИЋ ВЛАСТИМИР
+ПАЈОР МАТИЈА
+ПАЈОВИЋ ШПИРО
+ПАЈОВИЋ ЂОРЂЕ
+ПАЈОВИЋ ДРАГОМИР
+ПАЈОВИЋ ДУШАН
+ПАЈОВИЋ ЈЕЛЕНА
+ПАЈОВИЋ ПРЕДРАГ
+ПАЈОВИЋ РАЈКО
+ПАЈОВИЋ СЛОБОДАН
+ПАЈОВИЋ ЗОРКА
+ПАЈТАШЕВ ДОБРИВОЈ
+ПАЈТАК РАДМИЛА
+ПАЈТИЋ ПАВЛЕ
+ПАЈВАНЧИЋ ФРАЊА
+ПАЈВАНЧИЋ КАТА
+ПАЈВАНЧИЋ МАРИЈАНА
+ПАЈВОД БОСИЉКА
+ПАКАШКИ ЂУРА
+ПАКАШКИ МИКА
+ПАКАШКИ МИЛОВАН
+ПАКАШКИ РАДОСЛАВ
+ПАКАШКИ СИМА
+ПАКАШКИ ВАСА
+ПАКАШКИ ВИТАЛИЈ ДИПЛ ИНГ
+ПАКАИ ЈОЖЕФ
+ПАКАИ ЛАСЛО
+ПАКЛАР ВИДА
+ПАКЛЕДИНАЦ ВИНКО
+ПАКУШЕВСКИ КАТАРИНА
+ПАКУШЕВСКИ МИХАЈЛО
+ПАКУШЕВСКИ МИТАР
+ПАКУШЕВСКИ РУЖИЦА
+ПАКУШЕВСКИЈ СТЕФАН
+ПАЛ ИЛОНА
+ПАЛ РОЗАЛИЈА
+ПАЛЧЕК ЈОСИП
+ПАЛАЧКОВИЋ МИЛАН
+ПАЛАЧКОВИЋ УРОШ
+ПАЛАШТИ ЂОРЂЕ
+ПАЛАШТИ ДЕСАНКА
+ПАЛАШТИ ИШТВАН
+ПАЛАШТИ ИШТВАН
+ПАЛАШТИ ЈОСИП
+ПАЛАШТИ РОЗАЛИЈА
+ПАЛАДА ЈОЗО
+ПАЛАЛИЋ ЂУРА
+ПАЛАЛИЋ ДРАГАН
+ПАЛАЛИЋ ДУШАН
+ПАЛАЛИЋ ГОЈКО
+ПАЛАЛИЋ ГОЈКО
+ПАЛАЛИЋ ИЛИЈА
+ПАЛАЛИЋ ЈОВАН
+ПАЛАЛИЋ МИРКО
+ПАЛАЛИЋ НЕВЕНА
+ПАЛАЛИЋ НИКО
+ПАЛАЛИЋ ПАВЛЕ
+ПАЛАЛИЋ РАДЕ
+ПАЛАЛИЋ СНЕЖАНА
+ПАЛАЛИЋ СРЕТО
+ПАЛАЛИЋ СТОЈАН
+ПАЛАЛИЋ ТОДЕ
+ПАЛАЛИЋ ВИД
+ПАЛАЛИЋ ВОЈИН
+ПАЛАЛИЋ ЗДРАВКО
+ПАЛАМАРЧУК АЛЕКСАНДАР
+ПАЛАН ЈОСИП
+ПАЛАНЧАНИН ЕЛЕНА
+ПАЛАНЧАНИН ЈОВАН
+ПАЛАНЧАНИН РУЖА
+ПАЛАНЧАНИН ВАСА
+ПАЛАНЧАНИН ВАСА
+ПАЛАНАЧКИ ЂОРЂЕ
+ПАЛАНАЧКИ РУЖИЦА
+ПАЛАНАЧКИ САВА
+ПАЛАТИНУШ АНДРАШ
+ПАЛАТИНУШ ИШТВАН
+ПАЛАТИНУШ ЈОЖЕФ
+ПАЛЕЖЕВИЋ БОРИСЛАВ
+ПАЛЕВИЋ СЛАВИЦА
+ПАЛФИ АЛЕКСАНДАР
+ПАЛФИ БОРКА
+ПАЛФИ ИШТВАН
+ПАЛФИ ИШТВАН
+ПАЛФИ ЈУЛИЈАНА
+ПАЛФИ КАТИЦА
+ПАЛИЧКО ЂУРЂИНКА
+ПАЛИЧКО АНДРАШ
+ПАЛИЧКО ИЛЕШ
+ПАЛИЧКО ИРЕНА
+ПАЛИЧКО ЈЕЛЕНА
+ПАЛИШАШКИ ОЛГА
+ПАЛИЋ БОРИСЛАВ ДИПЛ ИНГ
+ПАЛИЋ ДРАГАН
+ПАЛИЋ ДУШАН
+ПАЛИЋ ЉУБИЦА
+ПАЛИЋ МАРТА
+ПАЛИЋ МИЛЕНКО
+ПАЛИЋ НИКОЛА
+ПАЛИЋ ОЛГА
+ПАЛИЋ СТЕВАН
+ПАЛИЋ СТЕВАН
+ПАЛИЋ ВЛАСТИМИР
+ПАЛИНКАШ ЂОРЂЕ
+ПАЛИНКАШ ЂУРА
+ПАЛИНКАШ БЛАНКА
+ПАЛИНКАШ БОРИВОЈЕ ДИПЛ ИНГ
+ПАЛИНКАШ ФРАЊА
+ПАЛИНКАШ ГЕЗА
+ПАЛИНКАШ ЈОЖЕФ
+ПАЛИНКАШ МАРИЈА
+ПАЛИНКАШ МИХАЉ
+ПАЛИНКАШ МИРКО
+ПАЛИНКАШ СТЕВАН
+ПАЛИНКАШ ВЕРА ДР
+ПАЉИЋ ЉУБОМИР
+ПАЉУРАС АПОСТОЛОС
+ПАЛОШ ИВАН
+ПАЛОШИ ОЛГА
+ПАЛОЦ ШАНДОР
+ПАЛОЦ ЛАСЛО
+ПАЛОЦ ТИБОР
+ПАЛОТАШ АНДРИЈА
+ПАЛОВ МИХАИЛО ДР
+ПАЛУРОВИЋ СТЕПАН
+ПАМУЧИНА ЈОВАН
+ПАНЧИЋ ГАВРИЛО
+ПАНЧИЋ ГРАДИМИР
+ПАНЧИЋ ЈУЛИЈАНА
+ПАНЧИЋ ЈУЛИЈАНА
+ПАНЧИЋ СЛОБОДАН
+ПАНЧИЋ ЗОРАН
+ПАНЧОВАН АВРАМ
+ПАНЧУЛИДЗЕВ АЛЕКСИЈЕ
+ПАНАЈОТИДИС ЛЕОНИДАС
+ПАНАОТОВИЋ БОГДАН
+ПАНАОТОВИЋ ДУШАНКА
+ПАНАОТОВИЋ ЈОВИЦА
+ПАНАОТОВИЋ МИРЈАНА
+ПАНЦЕР БРАНКО
+ПАНЦЕР БРАНКО
+ПАНЏА БОЖИЦА
+ПАНЏА ЗВЕЗДАНА
+ПАНЏИЋ НАДА
+ПАНЏИЋ СЛОБОДАНКА
+ПАНЏИЋ СВЕТОЗАР
+ПАНЏИЋ ТОМИСЛАВ
+ПАНЏИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+ПАНДИ ОСКАР
+ПАНДУРЕВИЋ МИЛАНКО
+ПАНДУРОВ ЖИВКА
+ПАНДУРОВ АЦА
+ПАНДУРОВ ДРАГОЉУБ
+ПАНДУРОВ ДУШАНКА
+ПАНДУРОВ МИЛИЦА
+ПАНДУРОВ МИЛИВОЈ
+ПАНДУРОВ МИРОСЛАВ
+ПАНДУРОВ ПЕТАР
+ПАНДУРОВ САВА
+ПАНДУРОВ ЗОРАН
+ПАНДУРОВ ЗОРАН
+ПАНДУРОВИЋ ЖИВКА
+ПАНДУРОВИЋ ИВАН
+ПАНДУРОВИЋ ЈОВАН
+ПАНДУРОВИЋ ЈУЛКА
+ПАНДУРОВИЋ ПАВЛЕ
+ПАНДУРОВИЋ РАДМИЛА
+ПАНДУРОВИЋ СРЕТЕН
+ПАНДУРОВИЋ СВЕТОЗАР
+ПАНДУРОВИЋ ТОМИСЛАВ
+ПАНДУРОВИЋ ВЛАДИСЛАВА
+ПАНДУРОВИЋ ВОЈИН
+ПАНДУРСКИ МИРОСЛАВ
+ПАНГЕРЦ МАРА
+ПАНГЕРЦ ВЕЛИБОР
+ПАНИЋ ЖАРКО
+ПАНИЋ ЖИВАН
+ПАНИЋ ЖИВОЈИН
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂУРА
+ПАНИЋ АЛЕКСАНДАР
+ПАНИЋ АНА
+ПАНИЋ АНА
+ПАНИЋ АНТУН
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНКО
+ПАНИЋ ДАМЈАН
+ПАНИЋ ДАНИЛКА
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГОЉУБ
+ПАНИЋ ДРАГОСЛАВ
+ПАНИЋ ДРАГОСЛАВ
+ПАНИЋ ДРЕНА
+ПАНИЋ ДУШАН
+ПАНИЋ ДУШАН
+ПАНИЋ ГОРДАНА
+ПАНИЋ ИЛИЈА
+ПАНИЋ ИЛОНА
+ПАНИЋ ЈАША
+ПАНИЋ ЈЕЛЕНА
+ПАНИЋ ЈЕЛЕНА
+ПАНИЋ ЈОВАНКА ДР
+ПАНИЋ ЈОВАНКА
+ПАНИЋ ЈОВАНКА
+ПАНИЋ ЈУЛКА
+ПАНИЋ КАИЦА
+ПАНИЋ КАТА
+ПАНИЋ КОНСТАНТИН
+ПАНИЋ ЉУБИЦА
+ПАНИЋ МАРКО
+ПАНИЋ МИЋО
+ПАНИЋ МИЦА
+ПАНИЋ МИКА
+ПАНИЋ МИЛАНА
+ПАНИЋ МИЛАН
+ПАНИЋ МИЛЕНА
+ПАНИЋ МИЛЕНКО
+ПАНИЋ МИЛЕ
+ПАНИЋ МИЛИЦА
+ПАНИЋ МИЛИЈА
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОРАД
+ПАНИЋ МИЛОРАД
+ПАНИЋ МИЛОВАН
+ПАНИЋ МИРЈАНА
+ПАНИЋ МИРКО
+ПАНИЋ МИРКО
+ПАНИЋ МИРОСЛАВ
+ПАНИЋ НАДА
+ПАНИЋ НАДА
+ПАНИЋ НАДА
+ПАНИЋ НЕМАЊА
+ПАНИЋ НЕНАД
+ПАНИЋ ОБРАДИН
+ПАНИЋ ОГЊЕН
+ПАНИЋ ОЛГА
+ПАНИЋ ПЕТАР
+ПАНИЋ ПЕТАР
+ПАНИЋ ПРЕДРАГ
+ПАНИЋ РАДИВОЈЕ
+ПАНИЋ РАДОМИР
+ПАНИЋ РАДОСЛАВ
+ПАНИЋ РАНКО
+ПАНИЋ РИСТО
+ПАНИЋ САША
+ПАНИЋ САЊА
+ПАНИЋ СЛАЂАНА
+ПАНИЋ СМИЉАНКА
+ПАНИЋ СНЕЖАНА
+ПАНИЋ СРЂАН
+ПАНИЋ СРБОЉУБ
+ПАНИЋ СТАНА
+ПАНИЋ СТАНКА
+ПАНИЋ СТЕВАН
+ПАНИЋ СТЕВАН
+ПАНИЋ СТЕВАН
+ПАНИЋ СВЕТОЗАР
+ПАНИЋ ТОМИСЛАВ
+ПАНИЋ УГЉЕША
+ПАНИЋ ВАСИЉКА
+ПАНИЋ ВЛАДИМИР
+ПАНИЋ ВОЈИСЛАВ
+ПАНИЋ ЗДРАВКО
+ПАНИЋ ЗЛАТКО
+ПАНИЋ ЗОРАН
+ПАНИЋ ЗОРА
+ПАНИАН АНИЦА
+ПАНИН БОРИВОЈЕ
+ПАНИН БРАНА
+ПАНИН МИЛИЦА
+ПАНИН МИЛОШ
+ПАНИН МИТА
+ПАНИН МЛАДЕН
+ПАНИН ЗОРАН
+ПАНИНЧИЋ СОФИЈА
+ПАЊКОВИЋ БИЉАНА
+ПАЊКОВИЋ БРАНКА
+ПАЊКОВИЋ ДРАГАН
+ПАЊКОВИЋ ИЛИЈА МР
+ПАЊКОВИЋ ЈЕЛЕНА
+ПАЊКОВИЋ МЕЛАНИЈА
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛИЦА
+ПАЊКОВИЋ НАДА
+ПАЊКОВИЋ НИКОЛА
+ПАЊКОВИЋ ПЕТАР
+ПАЊКОВИЋ ВЛАДИМИР
+ПАНКОВ БРАНИСЛАВ
+ПАНКОВ БРАНИСЛАВ
+ПАНКОВ БРАНКО
+ПАНКОВ ЈЕЛЕНА
+ПАНКОВ ЈЕЛИЦА
+ПАНКОВ КАТИЦА
+ПАНКОВ МАРКО
+ПАНКОВ МИЛЕНКО
+ПАНКОВ МИЛОВАН
+ПАНКОВ ПРЕДРАГ
+ПАНКОВ РАДОСЛАВ
+ПАНКОВ САВА
+ПАНКОВ СЛАВКО
+ПАНКОВ СВЕТОЗАР
+ПАНКОВ ВЕСНА
+ПАНКОВИЋ ЛАЗАР
+ПАНОВ ДЕСАНКА
+ПАНОВ НЕНАД
+ПАНОВИЋ АНЂЕЛКО
+ПАНОВИЋ МИОДРАГ
+ПАНТЕЛЕМОНОВ НЕДЕЉКО
+ПАНТЕЛЕМОНОВ НОВКА
+ПАНТЕЛИЋ ЧЕДОМИР
+ПАНТЕЛИЋ ЖАРКО
+ПАНТЕЛИЋ ЂОРЂЕ
+ПАНТЕЛИЋ ЂОРЂЕ
+ПАНТЕЛИЋ АНЂЕЛКО
+ПАНТЕЛИЋ АНА
+ПАНТЕЛИЋ БОРИВОЈЕ
+ПАНТЕЛИЋ БОРИВОЈ
+ПАНТЕЛИЋ ЦВЕТИН
+ПАНТЕЛИЋ ДАФИНА
+ПАНТЕЛИЋ ДАНИЦА
+ПАНТЕЛИЋ ДРАГАН
+ПАНТЕЛИЋ ДРАГОЉУБ
+ПАНТЕЛИЋ ДРАГОЉУБ
+ПАНТЕЛИЋ ИЛИЈА ДИПЛ ИНГ
+ПАНТЕЛИЋ ИЛИЈА
+ПАНТЕЛИЋ ЈУЛИЈАНА
+ПАНТЕЛИЋ КАМЕНКО
+ПАНТЕЛИЋ ЛАЗАР
+ПАНТЕЛИЋ ЉУБИША
+ПАНТЕЛИЋ ЉУБИЦА
+ПАНТЕЛИЋ МИХАЈЛО
+ПАНТЕЛИЋ МИЛАДИН
+ПАНТЕЛИЋ МИЛАН
+ПАНТЕЛИЋ МИЛОШ
+ПАНТЕЛИЋ МИЛОРАД
+ПАНТЕЛИЋ МИЛОВАН
+ПАНТЕЛИЋ МИОДРАГ
+ПАНТЕЛИЋ МИРОСЛАВ
+ПАНТЕЛИЋ МОМЧИЛО
+ПАНТЕЛИЋ МОМИР
+ПАНТЕЛИЋ НЕНАД
+ПАНТЕЛИЋ НЕВЕНКА
+ПАНТЕЛИЋ НИКОЛА
+ПАНТЕЛИЋ ПАЈО
+ПАНТЕЛИЋ ПАВЛЕ
+ПАНТЕЛИЋ ПЕТАР ДИПЛ ИНГ
+ПАНТЕЛИЋ ПЕТАР
+ПАНТЕЛИЋ-ПЕТРОВИЋ МАРИЈА
+ПАНТЕЛИЋ СЛАВИЦА
+ПАНТЕЛИЋ СОФИЈА
+ПАНТЕЛИЋ ВАСА
+ПАНТЕЛИЋ ВЕРА
+ПАНТЕЛИЋ ВЛАДИМИР
+ПАНТЕЛИЋ ВЛАДИСЛАВ
+ПАНТЕЛИЋ ВУЈИЦА
+ПАНТЕЛИЋ-ВУКАНОВИЋ ВУКОСАВА
+ПАНТЕЛИЋ ВУКИЦА
+ПАНТЕЛИЋ ВУКИЦА
+ПАНТЕЛИЋ ЗОРАН
+ПАНТЕЛИН ГЕОРГИЈЕ
+ПАНТЕЛИНАЦ НИКОЛА
+ПАНТЕЛИНАЦ ПАВЛЕ
+ПАНТЕЛИНАЦ СЛОБОДАН
+ПАНТИЋ ЖАРКО
+ПАНТИЋ ЖИВАН
+ПАНТИЋ ЖИВКА
+ПАНТИЋ ЖИВОЈИН
+ПАНТИЋ ЖИВОРАД
+ПАНТИЋ ЂОРЂЕ
+ПАНТИЋ ЂУРЂИНКА
+ПАНТИЋ АЛЕКСАНДАР
+ПАНТИЋ БАТА
+ПАНТИЋ БОГДАН
+ПАНТИЋ БОРИВОЈЕ
+ПАНТИЋ БОСИЉКА
+ПАНТИЋ ДОБРИВОЈ
+ПАНТИЋ ДОБРОСАВ
+ПАНТИЋ ДУШАН
+ПАНТИЋ ГИЗЕЛА
+ПАНТИЋ ГВОЗДЕН
+ПАНТИЋ ЈЕЛИЦА
+ПАНТИЋ ЉУБИЦА
+ПАНТИЋ МАРИНА
+ПАНТИЋ МИХАИЛО
+ПАНТИЋ МИЛАН
+ПАНТИЋ МИЛЕНКО
+ПАНТИЋ МИЛИВОЈЕ
+ПАНТИЋ МИЛИВОЈ
+ПАНТИЋ МИЛОРАД
+ПАНТИЋ МИЛОРАД
+ПАНТИЋ МИОДРАГ ДР ЛЕКАР
+ПАНТИЋ РАДЕНКО
+ПАНТИЋ РАДОМИР
+ПАНТИЋ РАДОМИР
+ПАНТИЋ РАДОСЛАВ
+ПАНТИЋ РОЗА
+ПАНТИЋ СЕЛИМИР
+ПАНТИЋ СЕЛИМИР
+ПАНТИЋ СВЕТОЗАР
+ПАНТИЋ ТОМИСЛАВ
+ПАНТИЋ УРОШ
+ПАНТИЋ ВЕСНА
+ПАНТИЋ ВОЈИСЛАВ ДР
+ПАНТИЋ ЗАГОРКА
+ПАНТИЋ ЗДРАВКО
+ПАНТОШ ЂУРО
+ПАНТОШ КОВИЉКА
+ПАНТОШ ПЕТАР
+ПАНТОШ ПЕТАР
+ПАНТОВИЋ ШЋЕПАН
+ПАНТОВИЋ ЖЕЉКО
+ПАНТОВИЋ АЦА
+ПАНТОВИЋ БИЉАНА
+ПАНТОВИЋ БРАНКО
+ПАНТОВИЋ ДРАГИЊА
+ПАНТОВИЋ ЉУБО
+ПАНТОВИЋ МИЛИСАВ
+ПАНТОВИЋ МИЛОВАН
+ПАНТОВИЋ МЛАДЕН
+ПАНТОВИЋ САВА
+ПАНТОВИЋ СВЕТОЛИК
+ПАНТОВИЋ ВЛАДИМИР
+ПАНЗАЛОВИЋ РАДОВАН
+ПАОЛОНИ ЂУЗЕПИНА
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ЂЕРЂ
+ПАП ЂУРО
+ПАП АНА
+ПАП ДЕЈАН
+ПАП ДРАГИЦА
+ПАП ЕДИТ
+ПАП ЕДИТ
+ПАП ЕНДРЕ ДР
+ПАП ЕНДРЕ
+ПАП ЕРЖЕБЕТ
+ПАП ЕТЕЛКА
+ПАП ФЕРЕНЦ
+ПАП ФРАЊА
+ПАП ФРАЊА
+ПАП ГАБОР
+ПАП ИШТВАН ДР
+ПАП ИШТВАН
+ПАП ИЛЕШ
+ПАП ИМРЕ
+ПАП ИМРЕ
+ПАП ИРЕНА
+ПАП ИРЕНА
+ПАП ЈАЊА
+ПАП ЈАНКО
+ПАП ЈЕЛЕНА
+ПАП ЈЕЛИСАВЕТА
+ПАП ЈОЖЕФ ДР
+ПАП ЈОСИП
+ПАП ЈОСИП
+ПАП ЈОВАН
+ПАП ЈУЛИЈАНА
+ПАП ЈУЛИЈАН
+ПАП ЈУЛИЈА
+ПАП КАТАРИНА
+ПАП ЛАСЛО
+ПАП МАРГИТА
+ПАП МИХАЈЛО
+ПАП МИХАЈЛО
+ПАП МИКЛОШ
+ПАП МИРОН
+ПАП ОЛГА
+ПАП ПАВЛЕ
+ПАП РОЗАЛИЈА
+ПАП СИЛВЕСТЕР
+ПАП ТЕРЕЗИЈА
+ПАП ТИБОР
+ПАП ВАЛЕРИЈА
+ПАП ВЕРА
+ПАП ВИНЦЕ
+ПАП ВЛАДИСЛАВ
+ПАП ЗДЕНКА
+ПАП ЗОЛТАН
+ПАПШОТ-КОЗИК ПЕПИ
+ПАПЂУРДЕС ЈОВГЕН
+ПАПАДОПОЛО ДРАГОСЛАВ
+ПАПАДОПОЛО ВЈЕКОСЛАВ
+ПАПАДОПУЛОС ЈАНИС
+ПАПАДОПУЛОС КОСТАС
+ПАПАГЕОРГИТ КОСТА
+ПАПАК ДРАГАН
+ПАПАТАНАСИУ НИЦА
+ПАПЕШ ЈОСИП
+ПАПЕШ КОСА
+ПАПЕЖ ИЛИНКА
+ПАПХАРХАЈИ ЂУРА
+ПАПХАРХАЈИ ТЕРЕЗИЈА
+ПАПХАРХАЈИ ВЛАДИМИР
+ПАПИШТА ФРАЊА
+ПАПИШТА ФРАЊА
+ПАПИШТА ИЛДИКА
+ПАПИШТА ЈОВАН
+ПАПИШТА МАРИЈА
+ПАПИШТА МАРКО
+ПАПИШТА МИХАЈЛО
+ПАПИЋ ЧЕДОМИР
+ПАПИЋ ЖИВКО
+ПАПИЋ АЛЕКСАНДАР
+ПАПИЋ АЛЕКСАНДАР
+ПАПИЋ АНА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ БОШКО
+ПАПИЋ БОЖА
+ПАПИЋ БОЖИДАР
+ПАПИЋ БРАНИСЛАВ
+ПАПИЋ БРАНКО
+ПАПИЋ БРАНКО
+ПАПИЋ ДЕСАНКА
+ПАПИЋ ДОБРИВОЈЕ
+ПАПИЋ ДУШАН
+ПАПИЋ ДУШАН
+ПАПИЋ ГОЈКО
+ПАПИЋ ИВАН
+ПАПИЋ ЈЕЛИСАВЕТА
+ПАПИЋ ЛАЗАР
+ПАПИЋ ЛЕПОСАВА
+ПАПИЋ ЉУБИЦА
+ПАПИЋ ЛОЗИНКА
+ПАПИЋ ЛУКА
+ПАПИЋ МАРИЈА
+ПАПИЋ МИХАЈЛО
+ПАПИЋ МИЛАДИН
+ПАПИЋ МИЛАДИН
+ПАПИЋ МИЛИЦА
+ПАПИЋ МИЛИВОЈ
+ПАПИЋ МИЛКА
+ПАПИЋ МИЛОШ
+ПАПИЋ МИРОСЛАВ
+ПАПИЋ МИРОСЛАВ
+ПАПИЋ НИКОЛА
+ПАПИЋ ПАВЛЕ
+ПАПИЋ РАДЕНКО
+ПАПИЋ САВА
+ПАПИЋ СМИЉА
+ПАПИЋ СРЂАН ДР
+ПАПИЋ СРЂАНКА
+ПАПИЋ СТЕВАН
+ПАПИЋ СТЕВАН
+ПАПИЋ СТЕВАН
+ПАПИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+ПАПИЋ ТЕОДОР
+ПАПИЋ ТОДОР
+ПАПИЋ ВЕРА
+ПАПИЋ ЗОРИЦА
+ПАПИЋ ЗОРИЦА
+ПАПИК ВИКТОР
+ПАПИЛИОН БОРИШКА
+ПАПЛАЦКО ВЕЛИМИР
+ПАПОВИЋ ЧЕДОМИР
+ПАПОВИЋ БЛАЖО
+ПАПОВИЋ БЛАГОЈЕ
+ПАПОВИЋ КРСТО
+ПАПОВИЋ МИЛЕ
+ПАПОВИЋ МИОДРАГ
+ПАПОВИЋ МЛАДЕН
+ПАПОВИЋ ВЕСЕЛИН
+ПАПОВИЋ ВУКОСАВ
+ПАПРИЋ ЖИВАН
+ПАПРИЋ ЂОРЂЕ
+ПАПРИЋ МАРКО
+ПАПРИЋ РАЈКО
+ПАПУГА ЂУРА
+ПАПУГА ДИМИТРИЈЕ
+ПАПУГА ЕУФЕМИЈА
+ПАПУГА ИРИНА
+ПАПУГА ЈАРОСЛАВ
+ПАПУГА КИРИЛ
+ПАПУГА ЉУБОМИР
+ПАПУГА МИХАЈЛО
+ПАПУГА ТАТЈАНА
+ПАПУГА ВЕРА
+ПАПУГА ВЛАДИМИР
+ПАПУЛИН ЂЕРЂИКА
+ПАПУЛИН БОРИСЛАВ
+ПАПУЛИН ДОБРИНА
+ПАПУЛИН РАДОЈКА
+ПАРЧИЋ НАЂА ДР
+ПАРАБУЋСКИ МИЛЕНКО
+ПАРАБУЋСКИ-СИМИЋ РУЖИЦА
+ПАРАБУЋСКИ СВЕТИСЛАВ НОВИНАР
+ПАРАБУЦКИ ЛАЗАР
+ПАРАБУЦКИ ЉИЉАНА
+ПАРАГ СТЕВАН
+ПАРАНДИЛОВИЋ РОСА
+ПАРАПИД МИРЈАНА
+ПАРАВИЛ НИКОЛА
+ПАРАВИНА ЈАРМИЛА
+ПАРАВИНА МИЛОШ
+ПАРДОВИЦКИ ФЕРЕНЦ
+ПАРДОВИЦКИ ФРАЊА
+ПАРДОВИЦКИ МАРИЈА
+ПАРЕЖАНИН РАДИВОЈ
+ПАРЕЖАНИН СЛОБОДАН
+ПАРЕЖАНИН ВЛАДИСЛАВ
+ПАРХАНОВ ВИКТОРИЈА
+ПАРИЧЕВИЋ ЕВА
+ПАРИЋ СТИПЕ
+ПАРИПОВ ЈЕЛА
+ПАРИПОВ МИЛАН
+ПАРИПОВ МИЛЕНКО
+ПАРИПОВИЋ ЧЕДОМИР
+ПАРИПОВИЋ ДРАГАН
+ПАРИПОВИЋ ДУШАН
+ПАРИПОВИЋ ЈОВАН
+ПАРИПОВИЋ ЈОВО
+ПАРИПОВИЋ МИХАЈЛО
+ПАРИПОВИЋ МИЛЕНКО
+ПАРИПОВИЋ МИЛЕ
+ПАРИПОВИЋ МИЛКА
+ПАРИПОВИЋ ПАЈА
+ПАРИПОВИЋ СЛОБОДАН
+ПАРИПОВИЋ СВЕТОЗАР
+ПАРИПОВИЋ ВЛАДИМИР
+ПАРИПОВИЋ ВЛАДИСЛАВКА
+ПАРИПОВИЋ ЗОРАН
+ПАРКАЊИ САМУЕЛ
+ПАРЛАЋ ЉУБОМИР
+ПАРЛАЋ МАРИНКО
+ПАРЛАЋ МИОДРАГ
+ПАРЛИЋ АНА
+ПАРЛИЋ ЈЕВТА
+ПАРЛИЋ НИКОЛА
+ПАРМАЋ НЕДЕЉКО
+ПАРНИЦКИ ИВАН
+ПАРНИЦКИ ЈОВАН
+ПАРОШКАЈ ЂУРА
+ПАРОШКАЈ ДАНИЛО
+ПАРОШКИ ЂОРЂЕ
+ПАРОШКИ ЂОРЂЕ
+ПАРОШКИ АЛЕКСАНДАР
+ПАРОШКИ АЛЕКСАНДАР
+ПАРОШКИ АНА
+ПАРОШКИ АНКИЦА
+ПАРОШКИ БОРИВОЈ
+ПАРОШКИ БРАНИСЛАВ
+ПАРОШКИ ДАМЈАН
+ПАРОШКИ ДИМИТРИЈЕ
+ПАРОШКИ ДОБРИЛА
+ПАРОШКИ ДРАГАН
+ПАРОШКИ ДУШАН
+ПАРОШКИ ГЛИША
+ПАРОШКИ ГОРДАН
+ПАРОШКИ ИВАН
+ПАРОШКИ ЈЕЛЕНА
+ПАРОШКИ ЈЕЛИЦА
+ПАРОШКИ ЈОВАН
+ПАРОШКИ МАРИЈА
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛИЦА
+ПАРОШКИ МИЛОШ
+ПАРОШКИ МИЛОРАД
+ПАРОШКИ МИЛОВАН
+ПАРОШКИ МИРА
+ПАРОШКИ МИРЈАНА
+ПАРОШКИ МИРКО
+ПАРОШКИ НЕСТОР
+ПАРОШКИ ОБРЕН
+ПАРОШКИ ОЛГА
+ПАРОШКИ ПЕТАР
+ПАРОШКИ ПУНИША
+ПАРОШКИ РАДМИЛА
+ПАРОШКИ РАЈКО
+ПАРОШКИ РОЖА
+ПАРОШКИ САВА
+ПАРОШКИ СЛАВИЦА
+ПАРОШКИ СОФИЈА
+ПАРОШКИ СТЕВАН
+ПАРОШКИ ВЕРОЉУБ
+ПАРОШКИ ВЛАДИМИР
+ПАРОШКИ ЗАГОРКА
+ПАРОЦИ ЈОСИП
+ПАРОЦИ ЈУЛИЈАНА
+ПАРОЦИ КАРЛО
+ПАРОЦИ ЉИЉАНА
+ПАРОЦИ ТИБОР
+ПАРОЦИ ТИБОР
+ПАРОЦИ ТИБОР
+ПАРОЈЧИЋ ЉУБИЦА
+ПАРОЈЧИЋ СЛОБОДАН
+ПАРОКАИ МИРКО
+ПАРОВИЋ СЛАВКО
+ПАРУЖИЋ ПАНТА
+ПАРУЦКИ МИХАЈЛО
+ПАСАРИЋ РУЖА
+ПАСКАШ МИЛАН
+ПАСКАШ МИЛКА
+ПАСКАШ НАТАША
+ПАСКАЛИ ГОРАН
+ПАСКАЉЕВИЋ АЛЕКСАНДАР
+ПАСКУ ДИМИТРИЈЕ
+ПАСКУЛОВ МИРОЉУБ
+ПАСТ РОБЕРТ
+ПАСТЕРКО СТЕВАН
+ПАСТОЊИЦКИ ЕЛЕМИР
+ПАСТОР ГЕЗА
+ПАСТОР ЈАНОШ
+ПАСТОР ЈАНОШ
+ПАСТОР ЈОСИП
+ПАСТОР ЈОСИП
+ПАСТОР ЈОЗЕФ
+ПАСТОР ЛАСЛО
+ПАСТОР МАРИЈА
+ПАСТОР МИХАЈЛО
+ПАСТОР МИЛАН
+ПАСТОР ПЕТАР
+ПАСТОР СТЈЕПАН
+ПАСТОРНАЧКИ ЂУРЂИНКА
+ПАСТОРНАЧКИ ЛАЗАР
+ПАСТОРНАЧКИ ЉУБИША
+ПАСТОРНАЧКИ МАРИЈА
+ПАСТОРНАЧКИ РАДОСЛАВ
+ПАСТОРЊИЦКИ ГОРДАНА
+ПАТАФТА ЈУЛИЈА
+ПАТАФТА СТЕВАН
+ПАТАЈ АРАНКА ДР
+ПАТАК ПАВЛЕ
+ПАТАКИ АНА
+ПАТАКИ ЕВА
+ПАТАКИ ГОРАН
+ПАТАРИЋ СТИПАН
+ПАТАРИЦА ЕЛЕМЕР
+ПАТИЋ ДРАГОМИР
+ПАТИЋ РАДОСАВ
+ПАТИЋ РАТКО
+ПАТИЋ ВЛАДИМИР
+ПАТЛЕЈХ НАДЕЖДА
+ПАТРИК ЛАЈОШ
+ПАТРИК СТЕВАН
+ПАТРНОГИЋ БРАНИСЛАВ ДИПЛ ИНГ
+ПАТРНОГИЋ ДУШАН ДР
+ПАТРНОГИЋ ДУШИЦА
+ПАТРНОГИЋ ЛИДИЈА
+ПАУШИЋ ИВАН
+ПАУШИЋ МАРКО
+ПАУКОВИЋ МИРЈАНА
+ПАУЛ КАТИЦА
+ПАУЛ ЛАЈОШ
+ПАУЛ ЛАЈОШ
+ПАУЛ ОСКАР
+ПАУЛИЋ МИЛЕ
+ПАУЛИК АЛЕКСАНДАР
+ПАУЛИК ПЕРО
+ПАУЛИК ПЕТАР
+ПАУЛОВИЋ ДРАГУТИН
+ПАУНЕСКУ ВАСА
+ПАУНИЋ ЖИВКО ДИПЛ ИНГ
+ПАУНИЋ ЂУРА
+ПАУНИЋ АЛИМПИЈЕ
+ПАУНИЋ БРАНКО
+ПАУНИЋ ДИМИТРИЈЕ
+ПАУНИЋ ДРАГОМИР
+ПАУНИЋ ИЛИЈА
+ПАУНИЋ ЛАЗАР
+ПАУНИЋ МИЛАНА
+ПАУНИЋ МИЛЕВА
+ПАУНИЋ МИЛЕ
+ПАУНИЋ СТАНИМИР
+ПАУНИЋ ТОМА
+ПАУНИЋ ВУКАШИН
+ПАУНКОВИЋ ЈОВАНА
+ПАУНКОВИЋ ЉИЉАНА
+ПАУНКОВИЋ ВЕЛИМИР
+ПАУНКОВИЋ ВЛАДИМИР
+ПАУНКУ АУРЕЛИЈА
+ПАУНОВИЋ ЧАСЛАВ
+ПАУНОВИЋ АНТО
+ПАУНОВИЋ БОГДАН
+ПАУНОВИЋ БОГДАН
+ПАУНОВИЋ БРАНКА
+ПАУНОВИЋ БРАНКО
+ПАУНОВИЋ ДИМИТРИЈЕ
+ПАУНОВИЋ ДРАГОЉУБ
+ПАУНОВИЋ ДРАГУТИН
+ПАУНОВИЋ ГОСПАВА
+ПАУНОВИЋ ЈЕЛЕНА
+ПАУНОВИЋ ЈОВАН
+ПАУНОВИЋ ЈОВИЦА
+ПАУНОВИЋ КАТИЦА
+ПАУНОВИЋ КОВИЉКА
+ПАУНОВИЋ КОВИЉКА
+ПАУНОВИЋ ЉИЉАНА
+ПАУНОВИЋ ЉУБИВОЈЕ
+ПАУНОВИЋ МАРИНА
+ПАУНОВИЋ МЕЛИНДА
+ПАУНОВИЋ МИЛИЦА
+ПАУНОВИЋ МИЛОМИР
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ НИКОЛА
+ПАУНОВИЋ ПАУН
+ПАУНОВИЋ ПЕТАР
+ПАУНОВИЋ РАДОШ
+ПАУНОВИЋ РАДОСЛАВ
+ПАУНОВИЋ РАДОСЛАВ
+ПАУНОВИЋ РАТОМИР
+ПАУНОВИЋ СЛАВА
+ПАУНОВИЋ СЛОБОДАНКА
+ПАУНОВИЋ СРБИЦА
+ПАУНОВИЋ СТОЈАНКА
+ПАУНОВИЋ ТОМИСЛАВ
+ПАУНОВИЋ ВУКОСАВА
+ПАУНОВИЋ ЗОРАН
+ПАУНОВИЋ ЗВОНКО
+ПАУТ МИЛАН
+ПАУЗЕНБЕРГЕР ИРЕНА
+ПАУЗЕНБЕРГЕР ЈОВАН
+ПАВАИ ФРАЊА
+ПАВЕЛКА ДАНИЕЛА
+ПАВЕЛКА ВЛАДИМИР
+ПАВИЧ ДАНИЦА
+ПАВИЧЕВИЋ МИЛАН
+ПАВИЧЕВИЋ НАДА
+ПАВИЧИЋ ДРАГИЦА
+ПАВИЧИЋ ИВАН
+ПАВИЧИЋ МИРКО
+ПАВИШИЋ ЂУРА
+ПАВИЋ ЂУРО
+ПАВИЋ АНКА
+ПАВИЋ АРОН
+ПАВИЋ БИЉАНА
+ПАВИЋ ДУШАН
+ПАВИЋ ГАШО
+ПАВИЋ ГОЈКО
+ПАВИЋ ЈОЖЕФ
+ПАВИЋ ЉУБИША
+ПАВИЋ ЉУБИЦА
+ПАВИЋ ЉУБОМИР
+ПАВИЋ МАРИЈА
+ПАВИЋ МИЛАН
+ПАВИЋ МИЛАН
+ПАВИЋ МИЛИЦА
+ПАВИЋ СЛАВКО
+ПАВИЋ СТЕВАН
+ПАВИЋ-СУЛОЦКИ ЕСТЕР
+ПАВИЋ ТЕРЕЗИЈА
+ПАВИЋ ВЕНКО
+ПАВИЋ ВЕРКА
+ПАВИЋЕВИЋ АЛЕКСАНДАР
+ПАВИЋЕВИЋ АЛЕКСАНДАР
+ПАВИЋЕВИЋ АНАНИЈЕ
+ПАВИЋЕВИЋ БРАНИСЛАВ
+ПАВИЋЕВИЋ ДЕСА
+ПАВИЋЕВИЋ ДРАГАН
+ПАВИЋЕВИЋ ДУШАН
+ПАВИЋЕВИЋ ДУШАН
+ПАВИЋЕВИЋ ЈЕЛЕНА
+ПАВИЋЕВИЋ ЉИЉАНА
+ПАВИЋЕВИЋ МИЛАНКО
+ПАВИЋЕВИЋ МИЛОШ
+ПАВИЋЕВИЋ МИЛОМИР
+ПАВИЋЕВИЋ МИЛУТИН
+ПАВИЋЕВИЋ МИОДРАГ
+ПАВИЋЕВИЋ МИОДРАГ
+ПАВИЋЕВИЋ МИРА
+ПАВИЋЕВИЋ МИРКО
+ПАВИЋЕВИЋ СЛАВКО
+ПАВИЋЕВИЋ СЛОБОДАН
+ПАВИН ЉУБИЦА
+ПАВКОВ ЖИВКО
+ПАВКОВ ЖИВОЈИН
+ПАВКОВ ЂУРЂЕВКА
+ПАВКОВ ЂУРЂИНА
+ПАВКОВ АЛЕКСАНДАР
+ПАВКОВ АНКА
+ПАВКОВ БОЖИДАР
+ПАВКОВ БОСИЉКА
+ПАВКОВ БРАНКО
+ПАВКОВ ДРАГАН
+ПАВКОВ ДРАГАН
+ПАВКОВ ДУШАН
+ПАВКОВ ДУШАН
+ПАВКОВ ГОЈКО
+ПАВКОВ ГОРДАНА
+ПАВКОВ ИВАНКА
+ПАВКОВ ЈОВАН
+ПАВКОВ ЈОВАН
+ПАВКОВ ЈОВАН
+ПАВКОВ КАТИЦА
+ПАВКОВ ЛАЗАР
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛИВОЈ ДИПЛ ИНГ
+ПАВКОВ МИЛОШ
+ПАВКОВ МИЛОЈЕ
+ПАВКОВ МИЛОРАД
+ПАВКОВ МИЛОРАД
+ПАВКОВ МИЛУТИН
+ПАВКОВ МИТАР
+ПАВКОВ НАДА
+ПАВКОВ НАДА
+ПАВКОВ ПАВЛЕ
+ПАВКОВ ПЕТАР
+ПАВКОВ РАДИВОЈ
+ПАВКОВ РАДОВАН
+ПАВКОВ РАТОМИР
+ПАВКОВ САВА
+ПАВКОВ САВА
+ПАВКОВ СИНИША
+ПАВКОВ СЛАВКО
+ПАВКОВ СТЕВАН
+ПАВКОВ СТЕВАН
+ПАВКОВ СТЕВАН
+ПАВКОВ УРОШ
+ПАВКОВ ВИТОМИР
+ПАВКОВ ЗОРАН
+ПАВКОВ ЗОРКА
+ПАВКОВИЋ БОЖИДАР
+ПАВКОВИЋ БОРИСЛАВ
+ПАВКОВИЋ ДРАГАНА
+ПАВКОВИЋ ДРАГИЦА
+ПАВКОВИЋ ЈОВАНКА
+ПАВКОВИЋ КАТИЦА
+ПАВКОВИЋ НИКОЛА
+ПАВКОВИЋ ПЕТАР
+ПАВКОВИЋ РАДОЈЕ
+ПАВЛЕКИЋ СТЕВАН
+ПАВЛЕСКИ МЕНКА
+ПАВЛЕВСКИ ДЕСА
+ПАВЛЕВСКИ ТРАЈАН
+ПАВЛИЧ МИРКО
+ПАВЛИЧИЋ КРЕШИМИР
+ПАВЛИЧИЋ ЉУБИША ДР
+ПАВЛИЋ ЂОРЂЕ
+ПАВЛИЋ БОРИСЛАВ
+ПАВЛИЋ БРАНКО ДИПЛ ИНГ
+ПАВЛИЋ ПЕТАР ДИПЛ ИНГ
+ПАВЛИЋ ВЛАДА
+ПАВЛИЋЕВ ЂОРЂЕ
+ПАВЛИЦА БРАНИСЛАВ
+ПАВЛИЦА ЈОВАН
+ПАВЛИЦА ЛАЗАР
+ПАВЛИЦА МАРИЦА
+ПАВЛИЦА МИЦА
+ПАВЛИЦА МИЛАН
+ПАВЛИЦА МИЛЕНА
+ПАВЛИЦА МИЛЕВА
+ПАВЛИЦА НАДА
+ПАВЛИЦА НИКОЛА
+ПАВЛИЦА НИКОЛА
+ПАВЛИЦА САВО
+ПАВЛИЦА СОФИЈА
+ПАВЛИЦА ТОДОР
+ПАВЛИЦА ВЛАДИМИР
+ПАВЛИК АНТАЛ
+ПАВЛИК ЈОСИП
+ПАВЛИК КАТАРИНА
+ПАВЛИК МИША
+ПАВЛИК ВИНКО
+ПАВЛОВ ЖАРКО
+ПАВЛОВ ЖИВАН
+ПАВЛОВ ЖИВКА
+ПАВЛОВ ЂОКА
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ БОГДАНКА
+ПАВЛОВ БОРИСЛАВ
+ПАВЛОВ ДАНИЦА
+ПАВЛОВ ДАНИЛО
+ПАВЛОВ ДРАГИЊА
+ПАВЛОВ ДРАГОМИР
+ПАВЛОВ ДУШАНКА
+ПАВЛОВ ДУШАНКА
+ПАВЛОВ ДУШАН
+ПАВЛОВ ДУШАН
+ПАВЛОВ ЈОВАН
+ПАВЛОВ КАТИЦА
+ПАВЛОВ-КОСТИЋ АНА ДР
+ПАВЛОВ КОВИЉКА
+ПАВЛОВ КРИСТИНА
+ПАВЛОВ КУЗМАН
+ПАВЛОВ ЛАЗАР
+ПАВЛОВ ЛАЗАР
+ПАВЛОВ ЉУБИЦА
+ПАВЛОВ ЉУБИЦА
+ПАВЛОВ МАРИЈА
+ПАВЛОВ МИЛАН
+ПАВЛОВ МИЛЕТА
+ПАВЛОВ МИЛИВОЈ
+ПАВЛОВ МИЛОРАД
+ПАВЛОВ МИЛОРАД
+ПАВЛОВ МИЛОВАН
+ПАВЛОВ МИЛОВАН
+ПАВЛОВ МИЛУТИН
+ПАВЛОВ МИРА
+ПАВЛОВ-МИРКОВИЋ МИРОСЛАВА ДР
+ПАВЛОВ МИРОСЛАВ
+ПАВЛОВ МИРОСЛАВ
+ПАВЛОВ МИТКО
+ПАВЛОВ НАДА
+ПАВЛОВ НАДА
+ПАВЛОВ НАТАЛИЈА
+ПАВЛОВ НЕВЕНКА
+ПАВЛОВ ОЛГА
+ПАВЛОВ ПАЈА
+ПАВЛОВ ПАВЕЛ
+ПАВЛОВ ПАВЕЛ
+ПАВЛОВ ПАВЛЕ
+ПАВЛОВ ПЕТАР
+ПАВЛОВ ПЕТАР
+ПАВЛОВ РАДА
+ПАВЛОВ РАДИВОЈ
+ПАВЛОВ РАДМИЛА
+ПАВЛОВ РАДОСЛАВА
+ПАВЛОВ РАДОСЛАВ
+ПАВЛОВ САВА
+ПАВЛОВ САВА
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТОЈАН
+ПАВЛОВ СВЕТОЗАР
+ПАВЛОВ ВАСИЛИЈЕ
+ПАВЛОВ ВЕРА
+ПАВЛОВ ВЕРА
+ПАВЛОВ ВЕРИЦА
+ПАВЛОВ ВИДОСАВА
+ПАВЛОВ ВЛАДИМИР
+ПАВЛОВ ВЛАСТИМИР
+ПАВЛОВИЋ ЧЕДОМИР
+ПАВЛОВИЋ ЖАРКО
+ПАВЛОВИЋ-ЖЕНЕР ОЛГА
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂО
+ПАВЛОВИЋ ЂОРЂО
+ПАВЛОВИЋ АЛЕКСАНДАР ДР
+ПАВЛОВИЋ АЛЕКСАНДАР
+ПАВЛОВИЋ АЛЕКСИЈЕ
+ПАВЛОВИЋ АНА
+ПАВЛОВИЋ АНА
+ПАВЛОВИЋ АНДРИЈА
+ПАВЛОВИЋ АНИЦА
+ПАВЛОВИЋ АНКИЦА
+ПАВЛОВИЋ БЛАГОЈЕ
+ПАВЛОВИЋ БЛАГО
+ПАВЛОВИЋ БОЖИДАР
+ПАВЛОВИЋ БОЖО
+ПАВЛОВИЋ БОГДАН
+ПАВЛОВИЋ БОГОЉУБ
+ПАВЛОВИЋ БОРА
+ПАВЛОВИЋ БОРИСАВ
+ПАВЛОВИЋ БОРИСЛАВ
+ПАВЛОВИЋ БОРИСЛАВ
+ПАВЛОВИЋ БРАНКО
+ПАВЛОВИЋ БРАНКО
+ПАВЛОВИЋ ЦВЕТАН
+ПАВЛОВИЋ ДЕЈАН
+ПАВЛОВИЋ ДИМИТРИЈЕ
+ПАВЛОВИЋ ДОБРИВОЈ
+ПАВЛОВИЋ ДОБРОСЛАВ
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГОЉУБ
+ПАВЛОВИЋ ДРАГОЉУБ
+ПАВЛОВИЋ ДРАГОСЛАВА
+ПАВЛОВИЋ ДРАГОСЛАВ
+ПАВЛОВИЋ ДРАГУТИН
+ПАВЛОВИЋ ДУШАНКА
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШКО
+ПАВЛОВИЋ ЕМИЛ
+ПАВЛОВИЋ ЕРЖЕБЕТ
+ПАВЛОВИЋ ЕРЖЕБЕТ
+ПАВЛОВИЋ ГОЈКО
+ПАВЛОВИЋ ГОРИНКА
+ПАВЛОВИЋ ИЛИЈА
+ПАВЛОВИЋ ИЛИЈА
+ПАВЛОВИЋ ИЛОНА
+ПАВЛОВИЋ ИЛОНА
+ПАВЛОВИЋ ИРИНА
+ПАВЛОВИЋ ИВАН ДИПЛ ИНГ
+ПАВЛОВИЋ ИВАН
+ПАВЛОВИЋ ЈАГО
+ПАВЛОВИЋ ЈАНКО
+ПАВЛОВИЋ ЈАНКО
+ПАВЛОВИЋ ЈАНОШ
+ПАВЛОВИЋ ЈЕЛА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛИЦА
+ПАВЛОВИЋ ЈОАКИМ
+ПАВЛОВИЋ ЈОВАН
+ПАВЛОВИЋ ЈОВАН
+ПАВЛОВИЋ ЈОВИЦА
+ПАВЛОВИЋ КАТАРИНА
+ПАВЛОВИЋ КАТИЦА
+ПАВЛОВИЋ КОНСТАНТИН
+ПАВЛОВИЋ КОВИНКА
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЉУБИША
+ПАВЛОВИЋ МАГДА
+ПАВЛОВИЋ МАРА ДИПЛ ИНГ
+ПАВЛОВИЋ МАРА
+ПАВЛОВИЋ МАРИЦА
+ПАВЛОВИЋ МАРКО ДИПЛ ИНГ
+ПАВЛОВИЋ МАРКО
+ПАВЛОВИЋ МИЦА
+ПАВЛОВИЋ МИЛАДИН
+ПАВЛОВИЋ МИЛАН
+ПАВЛОВИЋ МИЛАН
+ПАВЛОВИЋ МИЛЕНА
+ПАВЛОВИЋ МИЛЕНКО
+ПАВЛОВИЋ МИЛЕНКО
+ПАВЛОВИЋ МИЛЕ
+ПАВЛОВИЋ МИЛЕ
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИСАВ
+ПАВЛОВИЋ МИЉАНА
+ПАВЛОВИЋ МИЛКА
+ПАВЛОВИЋ МИЛКА
+ПАВЛОВИЋ МИЛОЈЕ
+ПАВЛОВИЋ МИЛОЈЕ
+ПАВЛОВИЋ МИЛОМИР
+ПАВЛОВИЋ МИЛОРАД ДР
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОСАВА
+ПАВЛОВИЋ МИЛОСАВ
+ПАВЛОВИЋ МИЛОВАН
+ПАВЛОВИЋ МИЛОВАН
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИРА
+ПАВЛОВИЋ МИРЈАНА ДР
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРКО ДИПЛ ОЕЦ
+ПАВЛОВИЋ МИРКО
+ПАВЛОВИЋ МИРКО
+ПАВЛОВИЋ МИРОСЛАВА
+ПАВЛОВИЋ МИРОСЛАВ
+ПАВЛОВИЋ МОМЧИЛО
+ПАВЛОВИЋ НАДА ДР
+ПАВЛОВИЋ НАДА
+ПАВЛОВИЋ НАДА
+ПАВЛОВИЋ НЕДЕЉКА
+ПАВЛОВИЋ НЕДЕЉКО
+ПАВЛОВИЋ НЕМАЊА
+ПАВЛОВИЋ НЕМАЊА
+ПАВЛОВИЋ НИКОЛА
+ПАВЛОВИЋ НИКОЛА
+ПАВЛОВИЋ НИКОЛИЦА
+ПАВЛОВИЋ НИНА
+ПАВЛОВИЋ НОВАК
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ПАВЛЕ
+ПАВЛОВИЋ ПАВЛЕ
+ПАВЛОВИЋ ПЕЂА
+ПАВЛОВИЋ ПЕРО
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЛЕМЕНКА
+ПАВЛОВИЋ-ПОПОВИЋ ЗОРА ДР ЛЕКАР
+ПАВЛОВИЋ ПРЕДРАГ
+ПАВЛОВИЋ ПРЕДРАГ
+ПАВЛОВИЋ ПРВОСЛАВ
+ПАВЛОВИЋ РАДЕНКО
+ПАВЛОВИЋ РАДИВОЈ
+ПАВЛОВИЋ РАДМИЛА
+ПАВЛОВИЋ РАДМИЛО ДИПЛ ИНГ
+ПАВЛОВИЋ РАДМИЛО
+ПАВЛОВИЋ РАДОЈЕ
+ПАВЛОВИЋ РАДОЈКА
+ПАВЛОВИЋ РАДОМИР ДИПЛ ОЕЦ
+ПАВЛОВИЋ РАДОМИР
+ПАВЛОВИЋ РАДОСЛАВА
+ПАВЛОВИЋ РАДОВАН ДР ВЕТЕРИНЕ
+ПАВЛОВИЋ РАДОВАН
+ПАВЛОВИЋ РАЈКО
+ПАВЛОВИЋ РАНКО
+ПАВЛОВИЋ РАТКО
+ПАВЛОВИЋ САВА
+ПАВЛОВИЋ САВО
+ПАВЛОВИЋ СИМА
+ПАВЛОВИЋ СИМЕОН
+ПАВЛОВИЋ СИМЕОН
+ПАВЛОВИЋ СИНИША
+ПАВЛОВИЋ СЛАВИЦА
+ПАВЛОВИЋ СЛАВКО ДИПЛ ИНГ
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛОБОДАН ДР
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СМИЉА
+ПАВЛОВИЋ СТАНА
+ПАВЛОВИЋ СТАНИКА
+ПАВЛОВИЋ СТАНИСЛАВ
+ПАВЛОВИЋ СТЕВАНКА
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЈЕПАН
+ПАВЛОВИЋ СТОЈАН
+ПАВЛОВИЋ СТОЈАН
+ПАВЛОВИЋ СВЕТИСЛАВ
+ПАВЛОВИЋ СВЕТОЗАР
+ПАВЛОВИЋ ТОША
+ПАВЛОВИЋ ТОМА
+ПАВЛОВИЋ ТОМИСЛАВ ДР
+ПАВЛОВИЋ ВЕЛИЗАР
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВИДА
+ПАВЛОВИЋ ВИДОСАВА
+ПАВЛОВИЋ ВИДОСАВА
+ПАВЛОВИЋ ВИДОСЛАВ
+ПАВЛОВИЋ ВИТОМИР
+ПАВЛОВИЋ ВИТОМИР
+ПАВЛОВИЋ ВЛАДИМИР
+ПАВЛОВИЋ ВОЈИСЛАВ
+ПАВЛОВИЋ ЗАГОРКА
+ПАВЛОВИЋ ЗДРАВКО
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРА
+ПАВЛОВИЋ ЗОРИЦА
+ПАВЛОВИЋ ЗВОНИМИР
+ПАВЛОВСКИ АЛЕКСАНДАР
+ПАВЛОВСКИ МАРИЈА
+ПАВЛОВСКИ СЕРГЕЈ
+ПАВОШЕВИЋ АНКА
+ПАВОШЕВИЋ РОДОЉУБ
+ПАЗАРСКИ СТЕВАН
+ПАЗМАЊ ЈУЛИЈАНА
+ПЕЧАРИЋ КАТИЦА
+ПЕЧИ ГЕЗА
+ПЕЧИ ИШТВАН
+ПЕЧИ МАРИЈА
+ПЕЧКАИ-КОВАЧ АНА
+ПЕЧКАИ МАРГИТА
+ПЕЧВАРАЦ СТАНОЈЕ
+ПЕШЕЊАНСКИ ИВАН
+ПЕШЕЊАНСКИ ИВАН
+ПЕШЕЊАНСКИ КАРЛО
+ПЕШЕВИЋ БОГДАН
+ПЕШЕВСКИ ЂОКА
+ПЕШЕВСКИ ТОМЕ
+ПЕШЕВСКИ ВЛАДО
+ПЕШИЋ ЖИВАН
+ПЕШИЋ АЛЕКСАНДАР
+ПЕШИЋ АНЂЕЛКО
+ПЕШИЋ БУДИМИР
+ПЕШИЋ ДЕСИМИР
+ПЕШИЋ ДИМИТРИЈЕ
+ПЕШИЋ ДИМИТРИЈЕ
+ПЕШИЋ ДРАГАН
+ПЕШИЋ ДРАГИЦА
+ПЕШИЋ ДРАГОЉУБ
+ПЕШИЋ ДРАГОЉУБ
+ПЕШИЋ ГОЈКО
+ПЕШИЋ ГРАДИМИР
+ПЕШИЋ ИЛИЈА
+ПЕШИЋ ЈОРДАН
+ПЕШИЋ ЈОВАН
+ПЕШИЋ ЉУБИЦА
+ПЕШИЋ МИЛАДИН
+ПЕШИЋ МИЛАН
+ПЕШИЋ МИЛИНКО
+ПЕШИЋ МИЛУТИН
+ПЕШИЋ МИЛУТИН
+ПЕШИЋ МИРОСЛАВ
+ПЕШИЋ ПЕТАР
+ПЕШИЋ РАДМИЛА
+ПЕШИЋ РАЈКО
+ПЕШИЋ РУЖА
+ПЕШИЋ САВА
+ПЕШИЋ СТАНОЈЕ
+ПЕШИЋ СТЕВАН ДР
+ПЕШИЋ ВЛАДИМИР
+ПЕШИЋ ВУКАШИН
+ПЕШИКАН ТИХОМИР
+ПЕШИКАН ВУК
+ПЕШКА АНА
+ПЕШКАН ДРАГАН
+ПЕШКАН ВЕРА
+ПЕШКАНОВ МИЛОРАД
+ПЕШКАНОВ ПЕРСИДА
+ПЕШКАНОВ СТЕВАН
+ПЕШКАНОВ ТОДОР
+ПЕШОВИЋ МИЛИВОЈЕ
+ПЕШОВИЋ СТОЈАН
+ПЕШТАЛИЋ СЛОБОДАНКА
+ПЕШТЕРАЦ ЧЕДОМИР
+ПЕШТЕРАЦ МИЛОМИР
+ПЕШТЕРАЦ МИЛУТИН
+ПЕШТИ ЈОЖЕФ
+ПЕШУТ АЛЕКСАНДРА
+ПЕШУТ БОШКО
+ПЕШУТ БРАНКО
+ПЕШУТ ДУШАН
+ПЕШУТ ДУШАН
+ПЕШУТ ИЛИЈА
+ПЕШУТ МАРИЈА
+ПЕШУТ МИЛАН
+ПЕШУТ МИЛИЦА
+ПЕШУТ СЛАВКА
+ПЕШУТ СМИЉА
+ПЕШУТ ВЛАДИМИР
+ПЕЋАНАЦ БОСИЉКА
+ПЕЋАНАЦ ДИМИТРИЈЕ
+ПЕЋАНАЦ ЈОВАН
+ПЕЋАНАЦ НИКОЛА
+ПЕЋАНАЦ ВЕСНА
+ПЕЋАНИН ДУШАН
+ПЕЋАНИН ЉУБИША ДИПЛ ИНГ
+ПЕЋАНИН МИРОСЛАВА
+ПЕЋАНИН ОМИЉЕН
+ПЕЋАНИН-ВЕРМЕЗОВИЋ ОЉА
+ПЕЋКО ДАНИЛО
+ПЕЋКО ВЕРА
+ПЕЋО ЛАЗАР
+ПЕЋО ЛУКА
+ПЕЋО СВЕТОЗАР
+ПЕЦ ЈУЛИЈЕ
+ПЕЦАРСКИ ЛЕКСА
+ПЕЦЕ ЂОРЂЕ
+ПЕЦЕ ЂОРЂЕ
+ПЕЦЕ АЛЕКСАНДАР
+ПЕЦЕ АНТОН
+ПЕЦЕ ИЛЕШ
+ПЕЦЕ ЗОЛТАН
+ПЕЦЕЉ БОЖО
+ПЕЦЕЉ СТЕВАН
+ПЕЦИЋ АЦА
+ПЕЦИЋ КАТАРИНА
+ПЕЦИЋ МИОДРАГ
+ПЕЦИЋ СТЕВАН
+ПЕЦЊИК АНА
+ПЕЦО МИРСАД
+ПЕЦОВИЋ РАДОМИР
+ПЕДОВИЋ РАТОМИР
+ПЕИЋ-ТУКУЉАЦ ВЈЕКОСЛАВ
+ПЕЈЧИЋ БОЖИДАР
+ПЕЈЧИЋ БРАТИСЛАВ
+ПЕЈЧИЋ ДОБРИВОЈЕ
+ПЕЈЧИЋ ДОБРИВОЈ
+ПЕЈЧИЋ ДОБРОСАВ
+ПЕЈЧИЋ ДРАГОМИР
+ПЕЈЧИЋ ДУШАНКА
+ПЕЈЧИЋ ДУБРАВКА
+ПЕЈЧИЋ ГРАДИМИР
+ПЕЈЧИЋ ИЛИЈА
+ПЕЈЧИЋ ИЛИЈА
+ПЕЈЧИЋ ЈАСМИНА
+ПЕЈЧИЋ ЈОВАН
+ПЕЈЧИЋ ЈОВАН
+ПЕЈЧИЋ ЉУБИЦА
+ПЕЈЧИЋ ЉУБОМИР
+ПЕЈЧИЋ МИЛЕНКО
+ПЕЈЧИЋ МИЛЕ
+ПЕЈЧИЋ МИОДРАГ
+ПЕЈЧИЋ МИРОСЛАВ
+ПЕЈЧИЋ МИТАР
+ПЕЈЧИЋ МОМЧИЛО
+ПЕЈЧИЋ НОВАК
+ПЕЈЧИЋ ПЕТАР
+ПЕЈЧИЋ РАДОСЛАВА
+ПЕЈЧИЋ РУЖА
+ПЕЈЧИЋ САВА
+ПЕЈЧИЋ САВА
+ПЕЈЧИЋ СВЕТИСЛАВ
+ПЕЈЧИЋ ВОЈИСЛАВ
+ПЕЈЧИЋ ВОЈИСЛАВ
+ПЕЈЧИЋ ЗОРАН
+ПЕЈАК ЂОРЂЕ
+ПЕЈАК ЂУРА
+ПЕЈАК БРАНКО
+ПЕЈАК ДРАГОСЛАВА
+ПЕЈАК ЈЕЛЕНА
+ПЕЈАК ЈОВАН
+ПЕЈАК ЈОВИЦА
+ПЕЈАК ЛАЗАР
+ПЕЈАК ЉУБИЦА
+ПЕЈАК МИЛАН
+ПЕЈАК МИЛИНКА
+ПЕЈАК МИОДРАГ
+ПЕЈАК МИРЈАНА
+ПЕЈАК МОЈА
+ПЕЈАК НЕВЕНКА
+ПЕЈАК РАДОВАН
+ПЕЈАК РАЈКО
+ПЕЈАК САВА
+ПЕЈАК СЛАВКО
+ПЕЈАК ТРИВА
+ПЕЈАК ВЕРИЦА
+ПЕЈАК ВЛАДИМИР
+ПЕЈАКИЋ МАРКО
+ПЕЈАКОВИЋ ЖАРКО
+ПЕЈАКОВИЋ ЂОРЂЕ
+ПЕЈАКОВИЋ ДУШАН
+ПЕЈАКОВИЋ ИЛИЈА
+ПЕЈАКОВИЋ МИЛЕНКО
+ПЕЈАКОВИЋ НАНДОР
+ПЕЈАКОВИЋ НЕНАД
+ПЕЈАКОВИЋ ПЕРИЦА
+ПЕЈАКОВИЋ ПЕТАР
+ПЕЈАКОВИЋ ПРЕДРАГ
+ПЕЈАНОВИЋ ЂОРЂЕ
+ПЕЈАНОВИЋ АНЂЕЛКО
+ПЕЈАНОВИЋ БРАНКО
+ПЕЈАНОВИЋ ДИМИТРИЈЕ
+ПЕЈАНОВИЋ МИЛКА
+ПЕЈАНОВИЋ РАДОВАН ДР
+ПЕЈАНОВИЋ ЗОРАН
+ПЕЈИЧИЋ МИЛАН
+ПЕЈИЋ ЖИВАН
+ПЕЈИЋ АЛЕКСАНДАР
+ПЕЈИЋ АЛЕКСАНДАР
+ПЕЈИЋ АНИЦА
+ПЕЈИЋ АНТОН
+ПЕЈИЋ БОГДАНКА
+ПЕЈИЋ БОРИВОЈ
+ПЕЈИЋ БРАНИСЛАВ
+ПЕЈИЋ БРАНИСЛАВ
+ПЕЈИЋ ДРАГАН
+ПЕЈИЋ ДРАГАН
+ПЕЈИЋ ДРАГИША
+ПЕЈИЋ ДРАГИЦА
+ПЕЈИЋ ДРАГО
+ПЕЈИЋ ДРАГО
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ГАВРА
+ПЕЈИЋ ИВАН
+ПЕЈИЋ ИВАН
+ПЕЈИЋ ЈАЊА
+ПЕЈИЋ ЈОВАН
+ПЕЈИЋ ЉУБОМИР
+ПЕЈИЋ МАРА
+ПЕЈИЋ МИХАЈЛО
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛЕНКО
+ПЕЈИЋ МИЛИЦА
+ПЕЈИЋ МИЛОШ
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОСАВ
+ПЕЈИЋ НЕДЕЉКО
+ПЕЈИЋ НИКОЛА
+ПЕЈИЋ НИКО
+ПЕЈИЋ НОВАК
+ПЕЈИЋ ОРЈЕН
+ПЕЈИЋ ПРЕДРАГ
+ПЕЈИЋ РАДОЈКА
+ПЕЈИЋ РАДОСАВ
+ПЕЈИЋ РАЈКО
+ПЕЈИЋ РУЖИЦА
+ПЕЈИЋ СЛОБОДАНКА
+ПЕЈИЋ СЛОБОДАН
+ПЕЈИЋ СЛОБОДАН
+ПЕЈИЋ СОФИЈА
+ПЕЈИЋ СТАНКО
+ПЕЈИЋ СТЕВАН
+ПЕЈИЋ СТИПАН
+ПЕЈИЋ ВЕРИЦА
+ПЕЈИЋ ВЛАДО
+ПЕЈИН ЂОРЂЕ
+ПЕЈИН ЂУРЂИНА
+ПЕЈИН АНЂЕЛКА
+ПЕЈИН БРАНИМИР
+ПЕЈИН БРАНИМИР
+ПЕЈИН БРАНИМИР
+ПЕЈИН ДЕЈАН
+ПЕЈИН ДИМИТРИЈЕ
+ПЕЈИН ДУШАН ДР
+ПЕЈИН ГОЈКО
+ПЕЈИН ЈЕЛЕНА
+ПЕЈИН ЈОВАН
+ПЕЈИН ЛАЗАР ДИПЛ ОЕЦ
+ПЕЈИН МАРИЈА
+ПЕЈИН МАРИТА
+ПЕЈИН МИЛИВОЈ
+ПЕЈИН МИЛОШ
+ПЕЈИН МИЛОРАД
+ПЕЈИН МИРОСЛАВ
+ПЕЈИН МЛАДЕН
+ПЕЈИН НЕНАД
+ПЕЈИН НИКОЛА
+ПЕЈИН НИКОЛА
+ПЕЈИН НИКОЛА
+ПЕЈИН НОВАК
+ПЕЈИН ПАВЛЕ
+ПЕЈИН ПЕРСИДА
+ПЕЈИН ПЛАВША
+ПЕЈИН РАДА
+ПЕЈИН РАДА
+ПЕЈИН РАДОСЛАВ
+ПЕЈИН СТЕВАН
+ПЕЈИН СТЕВАН
+ПЕЈИН ВАСА
+ПЕЈИН ВЕРИЦА
+ПЕЈИН ВУКОСАВА
+ПЕЈИНОВ БРАНИСЛАВ
+ПЕЈИНОВ ЉУБИЦА
+ПЕЈИНОВ ВЕЉКО
+ПЕЈИНОВИЋ ДРАГАН
+ПЕЈКОВИЋ АЛЕКСАНДАР
+ПЕЈКОВИЋ ДАНИЛКА
+ПЕЈКОВИЋ ИБОЉКА
+ПЕЈКОВИЋ ИВАН
+ПЕЈКОВИЋ ЈАСНА
+ПЕЈНОВИЋ БОСИЉКА
+ПЕЈНОВИЋ ЉУБИНКА
+ПЕЈНОВИЋ МИЛАН
+ПЕЈНОВИЋ МИРОСЛАВ
+ПЕЈНОВИЋ НИКОЛА
+ПЕЈНОВИЋ СТЕВАН
+ПЕЈОВИЋ ЂОКА
+ПЕЈОВИЋ ЂУКАН
+ПЕЈОВИЋ АЛЕКСАНДАР
+ПЕЈОВИЋ АЛЕКСАНДАР
+ПЕЈОВИЋ БОЖИДАР
+ПЕЈОВИЋ БОРИСЛАВ
+ПЕЈОВИЋ БОРИВОЈЕ
+ПЕЈОВИЋ БОРКА
+ПЕЈОВИЋ БОСИЉКА
+ПЕЈОВИЋ БРАНКА
+ПЕЈОВИЋ ДАНИЦА
+ПЕЈОВИЋ ДАНИЛО
+ПЕЈОВИЋ ДАВИД
+ПЕЈОВИЋ ДЕЈАН
+ПЕЈОВИЋ ДОБРИЛА
+ПЕЈОВИЋ ДРАГИЦА
+ПЕЈОВИЋ ЉУБО
+ПЕЈОВИЋ МАРКО
+ПЕЈОВИЋ МИЛАН
+ПЕЈОВИЋ МИЛЕНА
+ПЕЈОВИЋ МИЛЕНА
+ПЕЈОВИЋ МИЛИЈА
+ПЕЈОВИЋ МИЛОЈКА
+ПЕЈОВИЋ МИОДРАГ
+ПЕЈОВИЋ МИРЈАНА
+ПЕЈОВИЋ МОМИР
+ПЕЈОВИЋ НАДА
+ПЕЈОВИЋ ОЛГА
+ПЕЈОВИЋ ПАВЛЕ
+ПЕЈОВИЋ ПЕТАР
+ПЕЈОВИЋ САВА
+ПЕЈОВИЋ СЛАВКА
+ПЕЈОВИЋ СЛОБОДАНКА
+ПЕЈОВИЋ СЛОБОДАН
+ПЕЈОВИЋ ТОМИСЛАВ
+ПЕЈОВСКИ ДРАГАН
+ПЕЈОВСКИ КОЛЕ
+ПЕЈОВСКИ ТОМИСЛАВ
+ПЕКАР ДАРКО
+ПЕКАР ЈАНОШ
+ПЕКАР МИЛКА
+ПЕКАР РОЗАЛИЈА
+ПЕКАРОВИЋ ДРАГИЦА
+ПЕКАС АНТЕ
+ПЕКЕЧ МИТА
+ПЕКЕЗ БРАНКО
+ПЕКЕЗ ЈОВАН
+ПЕКЕЗ ЈОВАН
+ПЕКЕЗ МАРИЦА
+ПЕКЕЗ МИЛОРАД
+ПЕКЕЗ СТАНА
+ПЕКЕЗ ЗОРА
+ПЕКИЋ БРАНИСЛАВ ДР
+ПЕКИЋ ГОРАН
+ПЕКИЋ КРСТО
+ПЕКИЋ МИХАЈЛО
+ПЕКИЋ МИЛАН
+ПЕКИЋ МИЛАН
+ПЕКИЋ МИЛОШ
+ПЕКИЋ МИРКО
+ПЕКИЋ СТЕВАН
+ПЕКОВИЋ ЖЕЉКО
+ПЕКОВИЋ ИЛИЈА
+ПЕКОВИЋ МАГДАЛЕНА
+ПЕКОВИЋ МИЛИВОЈЕ
+ПЕКОВИЋ МИТРУША
+ПЕКОВИЋ-ПАРЛАЋ СМИЉА ДР
+ПЕКОВИЋ ПАВА
+ПЕКОВИЋ ВЕРА
+ПЕКОВИЋ ВИДА
+ПЕКОВИЋ ВУКАШИН
+ПЕКУРАР КОРНЕЛ
+ПЕКУРАР РОМАН
+ПЕЛАГИЋ НАДА
+ПЕЛАГИЋ СРЂАН
+ПЕЛЕ ФЕРЕНЦ
+ПЕЛЕ МАРИЈА
+ПЕЛЕ ЗОЛТАН
+ПЕЛЕГРИН СТЈЕПАН
+ПЕЛЕГРИН ВЛАДО
+ПЕЛЕВИЋ БРАНКО
+ПЕЛХЕ ФРАЊА ДР
+ПЕЉХА ЂУРА
+ПЕЉХА САЊА
+ПЕЉХА ЗВОНКО
+ПЕЛОЗА ДУШАН
+ПЕЛОЗА НАДА
+ПЕЛВА ЈОСИП
+ПЕЛВА ЈОВАН
+ПЕЛВА ЗОЛТАН
+ПЕЛВАИ-ЗОРИЋ ЕДИТ
+ПЕМАЦ БРАНИСЛАВ
+ПЕМАЦ ЛАЗАР
+ПЕНА МАРИНКО
+ПЕНА МИЛАН
+ПЕНА МИОДРАГ
+ПЕНА РАДИВОЈ
+ПЕНА СЛОБОДАН
+ПЕНАЦ СТАКИЦА
+ПЕНАВИН ВЕЛИМИР
+ПЕНЦ ДОБРИЛА
+ПЕНЦ ИРЕНА
+ПЕНЦА СЛАВКО
+ПЕНЏИЋ БРАНИСЛАВ
+ПЕНЏИЋ ЈЕРОСИМА
+ПЕНЕЗИЋ ДУШАН
+ПЕНЕЗИЋ НЕНАД
+ПЕНЕЗИЋ РАДОСЛАВ
+ПЕНЕЗИЋ ЗОРИЦА
+ПЕНИЋ ЧЕДОМИР
+ПЕНИЋ ЂУРЂИЦА
+ПЕНИЋ БОРИСЛАВ
+ПЕНИЋ БРАНКО
+ПЕНИЋ МИХАЈЛО
+ПЕНИЋ МИЛЕВА
+ПЕНИЋ МИЛИЦА
+ПЕНИЋ ПАВЛЕ
+ПЕНИЋ СЛАВКО
+ПЕНИЋ СТЕВАН
+ПЕНИЋ ВЛАДИМИР
+ПЕЊАШКОВИЋ ЗВОНИМИР
+ПЕЊИН ЖИВА
+ПЕЊИН СЛАВКО
+ПЕНОВ ЕМИЛ
+ПЕНОВ ЉУБИША
+ПЕНОВ МАРКО
+ПЕНЗЕШ ЂОРЂЕ
+ПЕНЗЕШ ФЕРЕНЦ
+ПЕНЗЕШ ФЕРЕНЦ
+ПЕНЗЕШ МИХАЉ
+ПЕНЗЕШ МИХАЉ
+ПЕНЗЕШ ТИБОР
+ПЕПИЋ ЛАЗО
+ПЕПИЋ МИЛАН
+ПЕПИЋ МИЛЕ
+ПЕПИЋ МИРЈАНА
+ПЕПИЋ МИРКО
+ПЕПЛИНАЦ ТОМА
+ПЕРЧИ АГНЕЗА
+ПЕРЧИЋ ДРАГАН
+ПЕРШ КСЕНИЈА
+ПЕРШАЈ МИРЈАНА
+ПЕРШИЋ ДАНИЦА
+ПЕРШИЋ ВАЛЕРИЈА
+ПЕРЂЕЂАЈ БАШКИМ
+ПЕРЂУН ЗВОНКО
+ПЕРАЋ БРАНКО
+ПЕРАЋ ЉУПКО
+ПЕРАЗИЋ САВА
+ПЕРАЗИЋ ВЛАДИМИР
+ПЕРЦ БРАНКА
+ПЕРЦ ЕЛА
+ПЕРЦ ВЛАДИМИР
+ПЕРЦЕ ЛУКА
+ПЕРДАН СТАНИСЛАВ
+ПЕРЕШ ХЕРМИНА
+ПЕРЕЖА НИКОЛА
+ПЕРЕГИ ГЕЗА
+ПЕРЕГИ ОСКАР
+ПЕРЕХИНАЦ ИВАН
+ПЕРЕНЧЕВИЋ ВАСО
+ПЕРЕПАТИЋ ПИРОШ
+ПЕРЕПАТИЋ СТЕВАН
+ПЕРЕУЛА БОГДАН
+ПЕРГАЛ МИРОСЛАВ ДР ИНГ
+ПЕРГЕ ЕСТЕР
+ПЕРГЕ МАРА
+ПЕРГЕ ВИКТОРИЈА
+ПЕРИЧЕВИЋ БРАНКО
+ПЕРИЧЕВИЋ РАЈКО
+ПЕРИЧИН ЖИВАН
+ПЕРИЧИН МИЛАНКА
+ПЕРИЧИН МИЛЕНКО
+ПЕРИЧИН РАТКО
+ПЕРИЧИН ВЛАДА
+ПЕРИША ЈАКОВ
+ПЕРИША МИРОСЛАВ
+ПЕРИШИЋ ЧЕДОМИР
+ПЕРИШИЋ ЖИВОДАРКА
+ПЕРИШИЋ ЂОРЂЕ
+ПЕРИШИЋ ЂОРЂЕ
+ПЕРИШИЋ АЛЕКСАНДАР
+ПЕРИШИЋ АНИЦА
+ПЕРИШИЋ БЛАЖО
+ПЕРИШИЋ БЛАГОЈЕ
+ПЕРИШИЋ БОБАН
+ПЕРИШИЋ БОРИСЛАВ
+ПЕРИШИЋ БРАНКО
+ПЕРИШИЋ ДАНИЦА
+ПЕРИШИЋ ДРАГОМИР
+ПЕРИШИЋ ДУШАНКА
+ПЕРИШИЋ ИРЕНА
+ПЕРИШИЋ КАТИЦА
+ПЕРИШИЋ КАТИЦА
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗА
+ПЕРИШИЋ ЉУБОМИР
+ПЕРИШИЋ МАНЦИКА
+ПЕРИШИЋ МАРА
+ПЕРИШИЋ МИХАЈЛО
+ПЕРИШИЋ МИЛАН
+ПЕРИШИЋ МИЛЕНКО
+ПЕРИШИЋ МИЛИНКО
+ПЕРИШИЋ МИЉА
+ПЕРИШИЋ МИЛОВАН
+ПЕРИШИЋ МИЛОВАН
+ПЕРИШИЋ МИЛУТИН
+ПЕРИШИЋ МИОДРАГ
+ПЕРИШИЋ МИРА
+ПЕРИШИЋ НИКОЛА
+ПЕРИШИЋ РАДЕ
+ПЕРИШИЋ РАДОСЛАВА
+ПЕРИШИЋ РАДОСЛАВ
+ПЕРИШИЋ РАНКО
+ПЕРИШИЋ СТАНКО
+ПЕРИШИЋ СТЕВО
+ПЕРИШИЋ СТОЈАН
+ПЕРИШИЋ СВЕТОЗАР
+ПЕРИШИЋ ТОДОР
+ПЕРИШИЋ УГЉЕША
+ПЕРИШИЋ ВАСО
+ПЕРИШИЋ ВАСО
+ПЕРИЋ ЖАРКО
+ПЕРИЋ ЖИВКА
+ПЕРИЋ ЖИВОЈИН
+ПЕРИЋ ЂОРЂЕ
+ПЕРИЋ ЂУРИЦА
+ПЕРИЋ АЛЕКСАНДАР
+ПЕРИЋ АНА
+ПЕРИЋ БИСЕРКА
+ПЕРИЋ БОЖИДАР
+ПЕРИЋ БОЖИДАР
+ПЕРИЋ БОРИС
+ПЕРИЋ БРАНИСЛАВ
+ПЕРИЋ БРАНИСЛАВ
+ПЕРИЋ БРАНКО
+ПЕРИЋ ЦВИЈЕТИН
+ПЕРИЋ ДОБРИЛА
+ПЕРИЋ ДРАГАНА
+ПЕРИЋ ДУШАНКА
+ПЕРИЋ ДУШАН
+ПЕРИЋ ДУШАН
+ПЕРИЋ ГОЈКО ДИПЛ ИНГ
+ПЕРИЋ ГОРАН
+ПЕРИЋ ИВАН
+ПЕРИЋ ЈАНКО
+ПЕРИЋ ЈЕЛКА
+ПЕРИЋ ЈОВАНКА
+ПЕРИЋ ЈОВАН
+ПЕРИЋ КСЕНИЈА
+ПЕРИЋ ЛАЗА
+ПЕРИЋ ЉУБИША
+ПЕРИЋ ЉУБИЦА
+ПЕРИЋ ЉУБИНКА
+ПЕРИЋ ЉУБИНКО
+ПЕРИЋ ЉУБОМИР
+ПЕРИЋ МАРА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИНКО
+ПЕРИЋ МАРКО
+ПЕРИЋ МИХА
+ПЕРИЋ МИЛАДИН
+ПЕРИЋ МИЛАН
+ПЕРИЋ МИЛЕНКО
+ПЕРИЋ МИЛИЦА
+ПЕРИЋ МИЛКИЦА
+ПЕРИЋ МИЛОШ
+ПЕРИЋ МИЛОШ
+ПЕРИЋ МИЛОРАД
+ПЕРИЋ МИОДРАГ
+ПЕРИЋ МИТАР
+ПЕРИЋ НАТАША
+ПЕРИЋ-НЕШИЋ ЦОКА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ ПАВЛЕ
+ПЕРИЋ ПЕТАР
+ПЕРИЋ РАША
+ПЕРИЋ РАДЕ
+ПЕРИЋ РАДИВОЈ
+ПЕРИЋ РАДО
+ПЕРИЋ РАЈКО
+ПЕРИЋ РОДОЉУБ
+ПЕРИЋ РУЖИЦА
+ПЕРИЋ САВА
+ПЕРИЋ САВА
+ПЕРИЋ СЛАВИЦА
+ПЕРИЋ СЛАВКО
+ПЕРИЋ СЛОБОДАН
+ПЕРИЋ СЛОБОДАН
+ПЕРИЋ СМИЉА
+ПЕРИЋ СТАНКА
+ПЕРИЋ СВЕТОЗАР
+ПЕРИЋ ТОМИСЛАВ
+ПЕРИЋ ВАСА
+ПЕРИЋ ВИНКА
+ПЕРИЋ ВЛАТКО
+ПЕРИЋ ЗДЕНКА
+ПЕРИЋ ЗОРАН
+ПЕРИЋ ЗОРАН
+ПЕРИЋ ЗОРА
+ПЕРИЦА АНТЕ
+ПЕРИЦА РАДОСЛАВ
+ПЕРИН БРАНИСЛАВ
+ПЕРИН ДРАГИША
+ПЕРИН МИЛИНКО
+ПЕРИН МИЛОРАД
+ПЕРИН РАДИША
+ПЕРИН СЕКУЛА
+ПЕРИН ЗОРА
+ПЕРИНАЦ РАДОВАН
+ПЕРИНАЦ РАДОВАН
+ПЕРИНОВИЋ БРАНКО
+ПЕРИНОВИЋ НАДА
+ПЕРИНОВИЋ СЛАВИЦА
+ПЕРИНОВИЋ СЛАВКО
+ПЕРИНОВИЋ СТАНКО
+ПЕРИЗ СТЕВО
+ПЕРКОВ РАДИНКА
+ПЕРКОВАЦ МАРИЈА
+ПЕРКОВИЋ БРАНИМИР
+ПЕРКОВИЋ БРАНИСЛАВ
+ПЕРКОВИЋ ДАНИЦА
+ПЕРКОВИЋ ДРАГАН
+ПЕРКОВИЋ ГВОЗДЕН
+ПЕРКОВИЋ ЈЕЛКА
+ПЕРКОВИЋ РАДИВОЈ
+ПЕРКОВИЋ РАДОМАН МР
+ПЕРКОВИЋ СЛАВКО
+ПЕРКОВИЋ ТАДИЈА
+ПЕРКОВИЋ ТОМО
+ПЕРКОВСКИ ЂОРЂЕ
+ПЕРКОВСКИ АНЂЕЛКО
+ПЕРКУЧИН ЂОРЂЕ
+ПЕРКУЧИН ЂУЛИНКА
+ПЕРКУЧИН ДУШАН
+ПЕРКУЧИН ГОРДАНА
+ПЕРКУЧИН КАТИЦА
+ПЕРКУЧИН НИКОЛА
+ПЕРКУЧИН РАДИВОЈ ДР
+ПЕРЛАКИ ЛАЈОШ
+ПЕРЛИЋ ДРАГАН
+ПЕРЛИНАЦ СИМЕУН
+ПЕРЊАК НАТАЛИЈА
+ПЕРЊАК НИКОЛА ДИПЛ ИНГ
+ПЕРЊАКОВИЋ ДРАГОСЛАВ
+ПЕРОШЕВИЋ НОВИЦА
+ПЕРОШЕВИЋ СТАНКА
+ПЕРОСАВЉЕВИЋ ЉУБИША
+ПЕРОВАНОВИЋ АЛЕКСАНДАР
+ПЕРОВАНОВИЋ ДУШАН
+ПЕРОВАНОВИЋ ЈАГОДА
+ПЕРОВИЋ ЖАНКА
+ПЕРОВИЋ АНЂЕЛКА
+ПЕРОВИЋ БОЈАНА
+ПЕРОВИЋ БРАНКО
+ПЕРОВИЋ БРАТИМИР
+ПЕРОВИЋ ДРАГО
+ПЕРОВИЋ ГАБРИЕЛА
+ПЕРОВИЋ ИВАНКА
+ПЕРОВИЋ ЈЕЛА
+ПЕРОВИЋ ЈОВАН
+ПЕРОВИЋ КАТАРИНА
+ПЕРОВИЋ МАРКО
+ПЕРОВИЋ МИЛЕНКО ДР
+ПЕРОВИЋ МИЛОРАД
+ПЕРОВИЋ МЛАЂЕН
+ПЕРОВИЋ НАДЕЖДА
+ПЕРОВИЋ НИКОЛА
+ПЕРОВИЋ РАДАШИН
+ПЕРОВИЋ РАДИСАВ
+ПЕРОВИЋ РАДИСЛАВ
+ПЕРОВИЋ РАДИВОЈЕ
+ПЕРОВИЋ РАДИВОЈ
+ПЕРОВИЋ РАДОВАН ДИПЛ ИНГ
+ПЕРОВИЋ СВЕТОМИР
+ПЕРОВИЋ ВЕСЕЛИН
+ПЕРОВИЋ ВЛАЈКО
+ПЕРТИЋ ЗАКАРИАШ
+ПЕРТОТ ЈЕЛЕНА
+ПЕРУНИЧИЋ ДОБРИЛА
+ПЕРУНИЧИЋ МИЛОРАД
+ПЕРУНИЧИЋ РАДАН
+ПЕРУНОВИЋ ЉИЉАНА
+ПЕРУНОВИЋ ПАНТО
+ПЕРУНОВИЋ СТАНОЈЕ
+ПЕРВАЗ ЖИВКА
+ПЕРВАЗ ДРАГИЊА ДР ПРОФ
+ПЕСИРАЦ ДРАГОЉУБ
+ПЕСИРАЦ КАТАРИНА
+ПЕСИРАЦ ПЕТАР
+ПЕСИРАЦ СТЕВАН
+ПЕСЛАЋ ЈОВАН
+ПЕСТАЛИЋ ЈОСИП
+ПЕСТЕЛЕК ЉУБИША
+ПЕСТЕЛЕК ЉУБИША
+ПЕТАКОВ ЖИВКО
+ПЕТАКОВ ЈУЛКА
+ПЕТАКОВ МИЛЕНКО
+ПЕТАКОВ РАДОСЛАВ
+ПЕТАКОВ РАНКА
+ПЕТАКОВ САВА
+ПЕТАКОВИЋ ДОБРИЛА
+ПЕТАКОВИЋ ДУШАН
+ПЕТАКОВИЋ ИЛИЈА
+ПЕТАКОВИЋ ЈОВАН
+ПЕТАКОВИЋ МИЛИЦА
+ПЕТАКОВИЋ НЕМАЊА
+ПЕТАКОВИЋ РАДИВОЈ
+ПЕТАКОВИЋ РАЈКО
+ПЕТАКОВИЋ САВА
+ПЕТЕ ЂУРА
+ПЕТЕ ЂУРА
+ПЕТЕ ДУШАНКА
+ПЕТЕ ФЕРЕНЦ
+ПЕТЕ ФЕРЕНЦ
+ПЕТЕ ФРАЊА
+ПЕТЕ ИШТВАН
+ПЕТЕ ИШТВАН
+ПЕТЕ ИШТВАН
+ПЕТЕ КАРОЉ
+ПЕТЕ ПЕТАР
+ПЕТЕ СТЕПАН
+ПЕТЕ СТЕВАН
+ПЕТЕЈ РАТКО
+ПЕТЕК ДАМИР
+ПЕТЕЛИН ЕЛИЗАБЕТА
+ПЕТЕЊИ ЈОСИП ДР
+ПЕТЕЊИ СТЕВАН
+ПЕТЕР ФРАНЦИШКА
+ПЕТЕР ЈОЖЕФ
+ПЕТЕР ЈОЛАН
+ПЕТЕР ЈОВАН
+ПЕТЕР МИХАЉ
+ПЕТЕР ВИЛМОШ
+ПЕТЕРКА ЂОРЂЕ
+ПЕТЕРКА ЈЕЛЕНА
+ПЕТЕРКА ЈОСИП
+ПЕТЕРКА МАРИЈА
+ПЕТЕРКА СТЕВАН
+ПЕТЕРКА ВЛАДИСЛАВ
+ПЕТЕРЛИЋ МИЛАН
+ПЕТЕРНЕЛ ЛИДИЈА
+ПЕТИЋ МИЛАН
+ПЕТИЋ ЗОРКА
+ПЕТИЈЕВИЋ ЈОВАН МР
+ПЕТИЈЕВИЋ ЈОВАН
+ПЕТИН НИКОЛА ПРОФЕСОР
+ПЕТКАНИЋ МИЛОРАД
+ПЕТКОВ ЖАРЕ
+ПЕТКОВ ЂОРЂЕ
+ПЕТКОВ ЂУРА
+ПЕТКОВ БОРИСЛАВ
+ПЕТКОВ ИВАН
+ПЕТКОВ МИЛАН
+ПЕТКОВ НАДЕЖДА
+ПЕТКОВ САВА
+ПЕТКОВ СТЕВАН
+ПЕТКОВ СТЕВА
+ПЕТКОВИЋ ЧЕДА
+ПЕТКОВИЋ ЖАРКО
+ПЕТКОВИЋ ЖЕЉКО
+ПЕТКОВИЋ ЖИВОРАД
+ПЕТКОВИЋ ЖИВОРАД
+ПЕТКОВИЋ ЂОРЂЕ ДР
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂУЛА
+ПЕТКОВИЋ ЂУРАЂ
+ПЕТКОВИЋ АЛЕКСАНДАР
+ПЕТКОВИЋ АНА
+ПЕТКОВИЋ АНТУН
+ПЕТКОВИЋ БОЈАНА
+ПЕТКОВИЋ БОРИСЛАВ
+ПЕТКОВИЋ БОРКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ ЦВЕТКО
+ПЕТКОВИЋ ДАРИНКА
+ПЕТКОВИЋ ДРАГАН
+ПЕТКОВИЋ ДРАГАН
+ПЕТКОВИЋ ДРАГИША
+ПЕТКОВИЋ ДРАГИЦА
+ПЕТКОВИЋ ДРАГОЉУБ
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ГОРДАНА
+ПЕТКОВИЋ ГВОЗДЕН
+ПЕТКОВИЋ ИШТВАН
+ПЕТКОВИЋ ИЛИЈА
+ПЕТКОВИЋ ИЛИЈА
+ПЕТКОВИЋ ИЉА
+ПЕТКОВИЋ ИРЕНА
+ПЕТКОВИЋ ЈАГОДА
+ПЕТКОВИЋ ЈОСИП
+ПЕТКОВИЋ ЈОВАН
+ПЕТКОВИЋ ЈОВО
+ПЕТКОВИЋ КАЛМАН
+ПЕТКОВИЋ КАТАРИНА
+ПЕТКОВИЋ КОСТАДИН
+ПЕТКОВИЋ КРСТА
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗО
+ПЕТКОВИЋ ЉУБИНКО
+ПЕТКОВИЋ ЉУБОМИР
+ПЕТКОВИЋ МАРКО
+ПЕТКОВИЋ МИХАЈЛО
+ПЕТКОВИЋ МИЛАНА
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛИЦА
+ПЕТКОВИЋ МИЛКА
+ПЕТКОВИЋ МИЛОРАД
+ПЕТКОВИЋ МИЛОРАД
+ПЕТКОВИЋ МИЛОВАНКА
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОРИКА
+ПЕТКОВИЋ МИРА
+ПЕТКОВИЋ МИРЈАНА ДИПЛ ИНГ
+ПЕТКОВИЋ МИРЈАНА
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ НАДА
+ПЕТКОВИЋ НИКО
+ПЕТКОВИЋ ОБРАД
+ПЕТКОВИЋ ОЛИВЕРА
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТРА
+ПЕТКОВИЋ ПУНИША
+ПЕТКОВИЋ РАДЕ
+ПЕТКОВИЋ РАДИВОЈ
+ПЕТКОВИЋ РАДОВАН
+ПЕТКОВИЋ РАДОВАН
+ПЕТКОВИЋ РАТКА
+ПЕТКОВИЋ СЛАВКО
+ПЕТКОВИЋ СЛОБОДАН
+ПЕТКОВИЋ СЛОБОДАН
+ПЕТКОВИЋ СРЂАН
+ПЕТКОВИЋ СТАНА
+ПЕТКОВИЋ СТАНОЈЕ
+ПЕТКОВИЋ СТЕВАН
+ПЕТКОВИЋ СТЕВАН
+ПЕТКОВИЋ СВЕТИСЛАВ
+ПЕТКОВИЋ ТОМИСЛАВ
+ПЕТКОВИЋ ТОМИСЛАВ
+ПЕТКОВИЋ ВАСИЛИЈЕ
+ПЕТКОВИЋ ВЕРА
+ПЕТКОВИЋ ВЕРИЦА
+ПЕТКОВИЋ ВЕСЕЛИН
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИСЛАВ
+ПЕТКОВИЋ ВОЈИСЛАВ
+ПЕТКОВИЋ ВУКАШИН
+ПЕТКОВИЋ ВУКОСАВА
+ПЕТКОВИЋ ЗЛАТКО
+ПЕТКОВИЋ ЗЛАТОМИР
+ПЕТКОВИЋ ЗОРАН
+ПЕТКОВСКА СЛАВИЦА
+ПЕТКОВСКИ АЦА
+ПЕТКОВСКИ ГОРАН
+ПЕТКОВСКИ МИЛКА
+ПЕТКОВСКИ СТАНКО
+ПЕТЛЕК ЈОВАН
+ПЕТЉАНСКИ БРАНКО
+ПЕТЉАНСКИ ДРАГОСЛАВ
+ПЕТЉАНСКИ ИРЕНА
+ПЕТО ЈОЖЕФ
+ПЕТОШЕВИЋ МИЛЕ
+ПЕТОШЕВИЋ СЛАВКО
+ПЕТОШЕВИЋ СТЕВАН
+ПЕТОШЕВИЋ СВЕТИСЛАВ
+ПЕТОХЛЕБ ПАВИЦА
+ПЕТОЈЕВИЋ ЂОРЂЕ
+ПЕТОВИЋ ЂУРО
+ПЕТОВИЋ ГОЈКО
+ПЕТОВИЋ МИЛЕНА
+ПЕТОВИЋ СЛАВКО
+ПЕТРАШИНОВИЋ ДРАГАН
+ПЕТРАШКОВИЋ ДРАГАН
+ПЕТРАШКОВИЋ ЕМИЛИЈА
+ПЕТРАКОВИЋ-ГРАОВАЦ КОСАНА
+ПЕТРАНОВИЋ ЈОСИП
+ПЕТРАНОВИЋ МАГДА
+ПЕТРАНОВИЋ ЗВОНКО
+ПЕТРЕШ ФРАЊО
+ПЕТРЕШ РАДЕ
+ПЕТРЕЊ СТЕВАН
+ПЕТРЕВСКА ЗОРАНКА
+ПЕТРЕВСКИ БОРИС
+ПЕТРЕВСКИ ИЛОНА
+ПЕТРЕВСКИ КИРО
+ПЕТРИ МИЛЕНА
+ПЕТРИ МИРОСЛАВА
+ПЕТРИЧЕВИЋ ИВАН
+ПЕТРИЧИЋ БРАНКО
+ПЕТРИЧИЋ ДАНЕ
+ПЕТРИЧИЋ ЈОВО
+ПЕТРИЧИЋ МИЛАН
+ПЕТРИЧИЋ МИЛАН
+ПЕТРИЧИЋ СТЕВАН
+ПЕТРИЧИЋ ТАТЈАНА
+ПЕТРИЋ ЂОРЂЕ
+ПЕТРИЋ АЛЕКСАНДАР
+ПЕТРИЋ АНАСТАЗИЈА
+ПЕТРИЋ БОШКО
+ПЕТРИЋ БРАНИСЛАВА
+ПЕТРИЋ БРАНКО ДР
+ПЕТРИЋ ДАНИЛО
+ПЕТРИЋ ДЕСАНКА ДИПЛ ИНГ
+ПЕТРИЋ ДЕСИМИР
+ПЕТРИЋ ДИМИТРИЈЕ ДИПЛ ИНГ
+ПЕТРИЋ ДИМИТРИЈЕ
+ПЕТРИЋ ДИМИТРИЈЕ
+ПЕТРИЋ ДУШАНКА
+ПЕТРИЋ ДУШАН
+ПЕТРИЋ ИЛИЈА
+ПЕТРИЋ ЈОВАН
+ПЕТРИЋ ЛАЗАР МР
+ПЕТРИЋ ЉИЉАНА
+ПЕТРИЋ ЉУБИЦА
+ПЕТРИЋ МИЛАН
+ПЕТРИЋ МИЛАН
+ПЕТРИЋ МИЛЕНКО
+ПЕТРИЋ МИЛЕТА
+ПЕТРИЋ МИЛИВОЈ
+ПЕТРИЋ МИЛОРАД
+ПЕТРИЋ НАДА
+ПЕТРИЋ ОЛГА
+ПЕТРИЋ ПЕТАР
+ПЕТРИЋ ПЕТАР
+ПЕТРИЋ РАДИСАВ
+ПЕТРИЋ РАДИСАВ
+ПЕТРИЋ РАДОВАН
+ПЕТРИЋ СЛАВИЦА
+ПЕТРИЋ СЛОБОДАНКА
+ПЕТРИЋ СЛОБОДАН
+ПЕТРИЋ СОФИЈА
+ПЕТРИЋ СОФИЈА
+ПЕТРИЋ ВАСИЛИЈЕ
+ПЕТРИЋ ВУЛЕТА
+ПЕТРИК ШАНДОР
+ПЕТРИК АЛЕКСАНДАР ДИПЛ ИНГ
+ПЕТРИК ЕЛИЗАБЕТА
+ПЕТРИК ИШТВАН
+ПЕТРИК ВИНЦЕ
+ПЕТРИК ЗОЛТАН
+ПЕТРИКА ЉУБИША
+ПЕТРИКА МИОДРАГ
+ПЕТРИКОЊА КСЕНИЈА
+ПЕТРИКОЊА ЛАЗАР
+ПЕТРИН ДУШАН
+ПЕТРИН КАТИЦА
+ПЕТРИН МАЈА
+ПЕТРИН МИЛАНКА
+ПЕТРИН МИЛАНКА
+ПЕТРИН РАДМИЛА
+ПЕТРИН ВЛАДИМИР
+ПЕТРИН ВЛАДИМИР
+ПЕТРИНИЋ МИРКО
+ПЕТРИНОВИЋ МИЛИНА
+ПЕТРИНОВИЋ СТЕВА
+ПЕТРО АНТЕ
+ПЕТРО КАТАЛИН
+ПЕТРО НИКО
+ПЕТРО САЊА
+ПЕТРОНИЋ ЖИВОТА
+ПЕТРОНИЋ АЛЕКСАНДАР
+ПЕТРОНИЋ КАТАРИНА
+ПЕТРОНИЈЕВИЋ ДРАГОМИР
+ПЕТРОНИЈЕВИЋ ГОРАН
+ПЕТРОНИЈЕВИЋ ПРЕДРАГ
+ПЕТРОНИЈЕВИЋ СРЕТА
+ПЕТРОНИЈЕВИЋ ВЛАСТИМИР
+ПЕТРОЊЕ МИОДРАГ
+ПЕТРОЊЕ МИОДРАГ
+ПЕТРОВ ЖИВАНА
+ПЕТРОВ ЖИВАН
+ПЕТРОВ АНАТОЛИЈ
+ПЕТРОВ АНА
+ПЕТРОВ БОРИС
+ПЕТРОВ ДАНИЦА
+ПЕТРОВ ДУШАНКА
+ПЕТРОВ ДУШАН
+ПЕТРОВ ЕВИЦА
+ПЕТРОВ ФРАНКА
+ПЕТРОВ ИШТВАН
+ПЕТРОВ ИВАН
+ПЕТРОВ ЈАСМИНА
+ПЕТРОВ ЈЕЛЕНА
+ПЕТРОВ ЈОЖЕФ
+ПЕТРОВ ЛАЗАР
+ПЕТРОВ ЉУБОМИР
+ПЕТРОВ ЉУБОМИР
+ПЕТРОВ МАРИЈА
+ПЕТРОВ МАРИЈА
+ПЕТРОВ МАРИНКО
+ПЕТРОВ МИЛАН
+ПЕТРОВ МИЛЕНКО
+ПЕТРОВ МИЛИЦА
+ПЕТРОВ МИЛОРАД
+ПЕТРОВ МИЛОСАВА
+ПЕТРОВ МИЛОВАН
+ПЕТРОВ МИОДРАГ
+ПЕТРОВ МИОДРАГ
+ПЕТРОВ МИРОСЛАВ
+ПЕТРОВ МОМЧИЛО
+ПЕТРОВ НАДА
+ПЕТРОВ НАТАЛИЈА
+ПЕТРОВ НЕБОЈША ДР
+ПЕТРОВ ОЛГА
+ПЕТРОВ РАДМИЛА
+ПЕТРОВ САША
+ПЕТРОВ САВА
+ПЕТРОВ САВА
+ПЕТРОВ САВА
+ПЕТРОВ СЕРГИЈЕ
+ПЕТРОВ СЛАВКА
+ПЕТРОВ СЛАВКО
+ПЕТРОВ СЛОБОДАН
+ПЕТРОВ СРБИВОЈ
+ПЕТРОВ СТЕВАН
+ПЕТРОВ СВЕТОЗАР
+ПЕТРОВ ТОМИСЛАВ
+ПЕТРОВ ВАСО
+ПЕТРОВ ВЕЛИЗАР
+ПЕТРОВ ВЛАДИМИР
+ПЕТРОВ ВОЈИСЛАВ
+ПЕТРОВ ВОЈИСЛАВ
+ПЕТРОВ ЗЛАТОМИР
+ПЕТРОВЧАН-ШПАНОВИЋ ЕУФЕМИЈА
+ПЕТРОВАЧКИ ДУШАН
+ПЕТРОВАЧКИ ЈОВАН
+ПЕТРОВАЧКИ ЉИЉАНА
+ПЕТРОВАЧКИ ВЕРА
+ПЕТРОВИЋ ЧЕДА
+ПЕТРОВИЋ ШТЕФАН
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖЕЉКО
+ПЕТРОВИЋ ЖЕЉКО
+ПЕТРОВИЋ ЖИКА
+ПЕТРОВИЋ ЖИВАН
+ПЕТРОВИЋ ЖИВКА
+ПЕТРОВИЋ ЖИВКА
+ПЕТРОВИЋ ЖИВКО
+ПЕТРОВИЋ ЖИВКО
+ПЕТРОВИЋ ЖИВОЈИН
+ПЕТРОВИЋ ЖИВОРАД
+ПЕТРОВИЋ ЖИВОТА
+ПЕТРОВИЋ ЂОКИЦА
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂУРА
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДРА
+ПЕТРОВИЋ АЛЕКСАНДРА
+ПЕТРОВИЋ АЛИНКА
+ПЕТРОВИЋ АНЂЕЛКА
+ПЕТРОВИЋ АНА
+ПЕТРОВИЋ АНГЕЛИНА
+ПЕТРОВИЋ АНИЦА
+ПЕТРОВИЋ АНКА
+ПЕТРОВИЋ АНКА
+ПЕТРОВИЋ-БАЛИЖ ЉИЉАНА
+ПЕТРОВИЋ БИЉАНА
+ПЕТРОВИЋ БОШКО
+ПЕТРОВИЋ БОЖИДАР
+ПЕТРОВИЋ БОГДАН
+ПЕТРОВИЋ БОГДАН
+ПЕТРОВИЋ БОЈАНА
+ПЕТРОВИЋ БОСИЉКА
+ПЕТРОВИЋ БОСИЉКА
+ПЕТРОВИЋ БРАНИМИР
+ПЕТРОВИЋ БРАНИСЛАВА
+ПЕТРОВИЋ БРАНИСЛАВА
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНКА
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ ЦВИКО
+ПЕТРОВИЋ ДАМИР
+ПЕТРОВИЋ ДАМИР
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАРА
+ПЕТРОВИЋ ДАРИНКА
+ПЕТРОВИЋ ДАРИНКА
+ПЕТРОВИЋ ДЕЈАН
+ПЕТРОВИЋ ДЕСАНКА
+ПЕТРОВИЋ ДЕСИМИР
+ПЕТРОВИЋ ДИМИТРИЈЕ
+ПЕТРОВИЋ ДОБРИЦА
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГИША ДИПЛ ПРАВНИК
+ПЕТРОВИЋ ДРАГИША
+ПЕТРОВИЋ ДРАГИЋ
+ПЕТРОВИЋ ДРАГИЊА
+ПЕТРОВИЋ ДРАГОЉУБ ДР
+ПЕТРОВИЋ ДРАГОЉУБ
+ПЕТРОВИЋ ДРАГОЉУБ
+ПЕТРОВИЋ ДРАГОМИР
+ПЕТРОВИЋ ДРАГОСЛАВ
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШИЦА
+ПЕТРОВИЋ ДУШКО
+ПЕТРОВИЋ ЕВА
+ПЕТРОВИЋ ЕВГЕНИЈЕ
+ПЕТРОВИЋ ЕВИЦА
+ПЕТРОВИЋ ФАБИЈАН
+ПЕТРОВИЋ ГАВРИЛО
+ПЕТРОВИЋ ГОРДАНА
+ПЕТРОВИЋ ГОРДАНА
+ПЕТРОВИЋ ГРАДИМИР
+ПЕТРОВИЋ ГРАДИМИР
+ПЕТРОВИЋ ХРИСТИНА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛОНА
+ПЕТРОВИЋ ИСАК
+ПЕТРОВИЋ ИВАНКА
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ЈАНКО
+ПЕТРОВИЋ ЈАСМИНКА
+ПЕТРОВИЋ ЈЕЛЕНА
+ПЕТРОВИЋ ЈЕЛИЦА
+ПЕТРОВИЋ ЈЕЛИСАВЕТА
+ПЕТРОВИЋ ЈЕВРЕМ
+ПЕТРОВИЋ ЈОЖЕФ
+ПЕТРОВИЋ ЈОВАНКА
+ПЕТРОВИЋ ЈОВАНКА
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КОСТА ДР
+ПЕТРОВИЋ КРСТО
+ПЕТРОВИЋ ЛАЗАР
+ПЕТРОВИЋ ЛАЗАР
+ПЕТРОВИЋ ЛЕНКА
+ПЕТРОВИЋ ЛИДА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉУБИША
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИНКА
+ПЕТРОВИЋ ЉУБИСАВ
+ПЕТРОВИЋ ЉУБОМИР
+ПЕТРОВИЋ ЉУБОМИР
+ПЕТРОВИЋ МАРА
+ПЕТРОВИЋ МАРИЦА
+ПЕТРОВИЋ МАРИЈА
+ПЕТРОВИЋ МАРИЈА
+ПЕТРОВИЋ МАРИКА
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МИАЈЛО
+ПЕТРОВИЋ МИЦА
+ПЕТРОВИЋ МИХАИЛО
+ПЕТРОВИЋ МИХАИЛО
+ПЕТРОВИЋ МИХАЈЛО ДР ВЕТЕРИНЕ
+ПЕТРОВИЋ МИЈОМИР
+ПЕТРОВИЋ МИЛАДИН
+ПЕТРОВИЋ МИЛАНКА
+ПЕТРОВИЋ МИЛАНКО
+ПЕТРОВИЋ МИЛАНКО
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛЕНА
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕН
+ПЕТРОВИЋ МИЛЕВА
+ПЕТРОВИЋ МИЛЕ
+ПЕТРОВИЋ МИЛИЋ
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИВОЈ
+ПЕТРОВИЋ МИЛОШ ДР
+ПЕТРОВИЋ МИЛОШ ДР
+ПЕТРОВИЋ МИЛОШ
+ПЕТРОВИЋ МИЛОЈЕ
+ПЕТРОВИЋ МИЛОЈКО
+ПЕТРОВИЋ МИЛОЉУБ
+ПЕТРОВИЋ МИЛОРАД
+ПЕТРОВИЋ МИЛОРАД
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛУН
+ПЕТРОВИЋ МИЛУН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОЉУБ
+ПЕТРОВИЋ МИОМИР
+ПЕТРОВИЋ МИРЧЕА
+ПЕТРОВИЋ МИРЈАНА
+ПЕТРОВИЋ МИРЈАНА
+ПЕТРОВИЋ МИРКО
+ПЕТРОВИЋ МИРОСЛАВ ДР ЛЕКАР
+ПЕТРОВИЋ МИРОСЛАВА
+ПЕТРОВИЋ МИРОСЛАВКА
+ПЕТРОВИЋ МИРОСЛАВ
+ПЕТРОВИЋ МИРОСЛАВ
+ПЕТРОВИЋ МЛАЂЕН
+ПЕТРОВИЋ МЛАДЕН
+ПЕТРОВИЋ МЛАДЕН
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДИРА
+ПЕТРОВИЋ НАТАЛИЈА
+ПЕТРОВИЋ НЕНАД
+ПЕТРОВИЋ НЕВЕНА
+ПЕТРОВИЋ НЕВЕНКА ДР
+ПЕТРОВИЋ НИКОЛА
+ПЕТРОВИЋ НИКОЛА
+ПЕТРОВИЋ НОВАК
+ПЕТРОВИЋ НОВИЦА
+ПЕТРОВИЋ ОБРАД
+ПЕТРОВИЋ ОЛГА
+ПЕТРОВИЋ ОЛГИЦА
+ПЕТРОВИЋ ОЛИВЕРА
+ПЕТРОВИЋ ПАЈА
+ПЕТРОВИЋ ПАНТЕЛИЈА
+ПЕТРОВИЋ ПЕРСИДА
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТРИЈА
+ПЕТРОВИЋ ПЛАМЕНКА
+ПЕТРОВИЋ-ПОПАДИЋ МИЛАН
+ПЕТРОВИЋ ПРЕДРАГ
+ПЕТРОВИЋ ПРВОСЛАВ
+ПЕТРОВИЋ РАДА
+ПЕТРОВИЋ РАДЕ
+ПЕТРОВИЋ РАДИША ДИПЛ ИНГ
+ПЕТРОВИЋ РАДИША
+ПЕТРОВИЋ РАДИША
+ПЕТРОВИЋ РАДИВОЈЕ
+ПЕТРОВИЋ РАДИВОЈ
+ПЕТРОВИЋ РАДИВОЈ
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДОЈКА
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОСАВ
+ПЕТРОВИЋ РАДОСЛАВ
+ПЕТРОВИЋ РАДОСЛАВ
+ПЕТРОВИЋ РАЈКО
+ПЕТРОВИЋ РАЈКО
+ПЕТРОВИЋ РАНКО
+ПЕТРОВИЋ РАНКО
+ПЕТРОВИЋ РАТКО
+ПЕТРОВИЋ РАТКО
+ПЕТРОВИЋ РАТОМИР
+ПЕТРОВИЋ РИСТО
+ПЕТРОВИЋ РОДОЉУБ
+ПЕТРОВИЋ РОСА
+ПЕТРОВИЋ РУЖА
+ПЕТРОВИЋ РУЖИЦА
+ПЕТРОВИЋ РУЗМАРИНКА
+ПЕТРОВИЋ САВАН
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ СИМА
+ПЕТРОВИЋ СИМЕУН
+ПЕТРОВИЋ СИМО
+ПЕТРОВИЋ СИНИША
+ПЕТРОВИЋ СЛАВИЦА
+ПЕТРОВИЋ СЛАВКА
+ПЕТРОВИЋ СЛАВКА
+ПЕТРОВИЋ СЛАВКО
+ПЕТРОВИЋ СЛАВКО
+ПЕТРОВИЋ СЛОБОДАН ДИПЛ ИНГ
+ПЕТРОВИЋ СЛОБОДАН ДИПЛ ИНГ
+ПЕТРОВИЋ СЛОБОДАН ДР
+ПЕТРОВИЋ СЛОБОДАНКА
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СМИЉА
+ПЕТРОВИЋ СНЕЖАНА
+ПЕТРОВИЋ СОФИЈА
+ПЕТРОВИЋ СПАСЕ
+ПЕТРОВИЋ СПАСОЈЕ
+ПЕТРОВИЋ СПОМЕНКА
+ПЕТРОВИЋ СРЂАН
+ПЕТРОВИЋ СТАМЕНКО
+ПЕТРОВИЋ СТАНИША
+ПЕТРОВИЋ СТАНИСЛАВ
+ПЕТРОВИЋ СТЕВАН ДИПЛ ИНГ
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТОЈАДИН
+ПЕТРОВИЋ СТОЈАН
+ПЕТРОВИЋ СТОЈАН
+ПЕТРОВИЋ СТОЈКА
+ПЕТРОВИЋ СУЗАНА ДР
+ПЕТРОВИЋ СУЗАНА
+ПЕТРОВИЋ СВЕТИСЛАВ
+ПЕТРОВИЋ СВЕТКО
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ ТАТЈАНА
+ПЕТРОВИЋ ТИБОР
+ПЕТРОВИЋ ТИНКА
+ПЕТРОВИЋ ТОДОРКА
+ПЕТРОВИЋ ТОМИСЛАВ
+ПЕТРОВИЋ УРОШ
+ПЕТРОВИЋ УРОШ
+ПЕТРОВИЋ ВАСА
+ПЕТРОВИЋ ВАСИЛИЈЕ
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИМИР
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРИЦА
+ПЕТРОВИЋ ВЕСЕЛА
+ПЕТРОВИЋ ВЕСЕЛИН
+ПЕТРОВИЋ ВЕСНА
+ПЕТРОВИЋ ВИШЊА
+ПЕТРОВИЋ ВИДА
+ПЕТРОВИЋ ВЛАДА
+ПЕТРОВИЋ ВЛАДЕ
+ПЕТРОВИЋ ВЛАДИМИР
+ПЕТРОВИЋ ВЛАДИМИР
+ПЕТРОВИЋ ВЛАДИСЛАВА
+ПЕТРОВИЋ ВЛАСТИМИР
+ПЕТРОВИЋ ВОЈИН
+ПЕТРОВИЋ ВОЈИН
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈКА
+ПЕТРОВИЋ ВУКАШИН
+ПЕТРОВИЋ ВУКИЦА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗДЕНКО
+ПЕТРОВИЋ ЗДЕНКО
+ПЕТРОВИЋ ЗЛАТАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРА
+ПЕТРОВИЋ ЗОРА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРКА
+ПЕТРОВСКИ БОРИС
+ПЕТРОВСКИ ДИМИТРИЈЕ
+ПЕТРОВСКИ ЕВА
+ПЕТРОВСКИ ФИДАНЧО
+ПЕТРОВСКИ ХЕЛЕНА
+ПЕТРОВСКИ МИЛАДИН
+ПЕТРОВСКИ МИЛАН
+ПЕТРОВСКИ МИЛОДАРКА
+ПЕТРОВСКИ ПЕТАР
+ПЕТРОВСКИ СЛАВКА
+ПЕТРУШЕВИЋ МОМЧИЛО
+ПЕТРУШЕВСКИ МОМЧИЛО
+ПЕТРУШЕВСКИ НАДА
+ПЕТРУШИЋ-ПАРИПОВИЋ ОЛГА
+ПЕТРУШИЋ ВАСИЉ
+ПЕТРУЉЕСКОВ ДРАГАН
+ПЕТРУЉЕСКОВ ДРАГАН
+ПЕУЛИЋ ЉУБОМИР
+ПЕУЛИЋ МИРЈАНА
+ПЕУЉА ВОЈИН
+ПЕУРАЧА ДРАГАН
+ПЕУРАЧА МИЛЕ
+ПЕВАЧ СТЈЕПАН
+ПЕВИЋ ЕРЖЕБЕТ
+ПЕЗДЕВШЕК ЈАНЕЗ
+ПЕЗДЕВШЕК КАРЛ
+ПЕЗЕРОВИЋ ВЕЛИМИР
+ПФАЈФЕР АЛЕКСАНДАР
+ПФАЈФЕР АТИЛА
+ПФАЈФЕР ПЕТАР
+ПФАЈФЕРТ АЛЕКСАНДАР
+ПФАУ ЈОВАНКА
+ПФУНШТАЈН ЈОСИП
+ПИШКОРИЋ ИВАН
+ПИШПЕК МАРТА
+ПИШТАЛОВИЋ МИХАЈЛО
+ПИШТАЛОВИЋ МИРКО
+ПИЋУРИЋ ЖИВКО
+ПИЋУРИЋ МИКО
+ПИЖУРИЦА МАТО
+ПИГЛ АНА
+ПИГЛ ИМРЕ
+ПИХАЈЛИЋ БЛАЖ
+ПИХЛЕР ЈОСИП
+ПИХЛЕР СТАНКО ДР
+ПИХЛЕР ТОДОР
+ПИЈАНИЋ ДАНИЈЕЛ
+ПИЈЕТЛОВИЋ БРАНО
+ПИЈЕТЛОВИЋ ЈОВАН
+ПИЈУКОВИЋ ЕЛЗА
+ПИЈУКОВИЋ ИЛИЈА
+ПИКСИАДЕС ОНДРЕЈ
+ПИКСИЈАДЕС АНА
+ПИКСИЈАДЕС ПАВЕЛ
+ПИКСИЈАДЕС ПАВЛЕ
+ПИКУЛА ЂОРЂЕ
+ПИКУЛА БРАНКО
+ПИЛ АНДРИЈА
+ПИЛ МИХАЈЛО
+ПИЛ СТЕВАН
+ПИЛ ТЕРЕЗА
+ПИЛАР МАРИЦА
+ПИЛЦ НАНДОР
+ПИЛЦ РЕЖЕ
+ПИЛЦ ЗОЛТАН
+ПИЛЕР КАРЛО
+ПИЛИШ АНА
+ПИЛИШ АНДРАШ
+ПИЛИШ ЈОСИП
+ПИЛИШЕР ЂОРЂЕ
+ПИЛИЋ ЖАРКО
+ПИЛИЋ АНТОН
+ПИЛИЋ БОРИВОЈ
+ПИЛИЋ БОРО
+ПИЛИЋ ГАВРА
+ПИЛИЋ ЈОВАН
+ПИЛИЋ-КАЛЕНИЋ МИЛИНКА
+ПИЛИЋ ЉИЉА
+ПИЛИЋ МИЛОШ
+ПИЛИЋ МИЛУТИН
+ПИЛИЋ РАНКО
+ПИЛИЋ СЛАВКО
+ПИЛИЋ СРБОЉУБ
+ПИЛИЋ СТАНКО
+ПИЛИЋ СТЕВАН
+ПИЛИЋ ВОЈИСЛАВ
+ПИЛИПОВ ЕВА
+ПИЛИПОВИЋ ЧЕДА
+ПИЛИПОВИЋ ЖИВКО
+ПИЛИПОВИЋ ЂОРЂЕ
+ПИЛИПОВИЋ ЂУРА
+ПИЛИПОВИЋ АНЂА
+ПИЛИПОВИЋ БОШКО
+ПИЛИПОВИЋ БОЖИДАР
+ПИЛИПОВИЋ БРАНКО
+ПИЛИПОВИЋ ЦВИЈЕТА
+ПИЛИПОВИЋ ЦВИЈЕТА
+ПИЛИПОВИЋ ДАНЕ
+ПИЛИПОВИЋ ДАНИЦА
+ПИЛИПОВИЋ ДАНИЦА
+ПИЛИПОВИЋ ДРАГАН
+ПИЛИПОВИЋ ДРАГО
+ПИЛИПОВИЋ ГОРАН
+ПИЛИПОВИЋ ЈОЛАН
+ПИЛИПОВИЋ ЈОВАН
+ПИЛИПОВИЋ ЛАЗАР
+ПИЛИПОВИЋ ЉИЉАНА
+ПИЛИПОВИЋ ЉУБИЦА
+ПИЛИПОВИЋ ЉУБО
+ПИЛИПОВИЋ МАРИЈА
+ПИЛИПОВИЋ МИХАЈЛО
+ПИЛИПОВИЋ МИХАЈЛО
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛЕНКО
+ПИЛИПОВИЋ МИЛЕВА
+ПИЛИПОВИЋ МИЛОШ
+ПИЛИПОВИЋ МИРКО
+ПИЛИПОВИЋ НИКОЛА
+ПИЛИПОВИЋ ПЕТАР ДИПЛ ИНГ
+ПИЛИПОВИЋ РАДЕ
+ПИЛИПОВИЋ РАДЕ
+ПИЛИПОВИЋ РАДИВОЈЕ
+ПИЛИПОВИЋ РАДОМИР
+ПИЛИПОВИЋ СЛАВКО
+ПИЛИПОВИЋ СПОМЕНКО
+ПИЛИПОВИЋ СТАНА
+ПИЛИПОВИЋ СТЕВАН
+ПИЛИПОВИЋ СТЕВАН
+ПИЛИПОВИЋ СТЕВО
+ПИЛИПОВИЋ ВОЈИН
+ПИЛИПОВИЋ ЗОРИЦА
+ПИЛИПОВИЋ ЗВОНКО
+ПИЉИЋ МАРИЈАН
+ПИЛКО ИРЕНА
+ПИЛКО ПАВЛЕ
+ПИЛОВИЋ ДЕСИМИР
+ПИЛОВИЋ ДУШАНКА
+ПИЛОВИЋ МИЛАН
+ПИНЋИР ЈАН
+ПИНЋИР ВЛАДИМИР
+ПИНЋИР ЗДЕНКО
+ПИНЋЈЕР ОНДРЕЈ
+ПИНЋЈЕР САМУЕЛ
+ПИНЋЈЕР САМУИЛО
+ПИЊУШИЋ ИЛИЈА
+ПИЊУХ МИРЈАНА
+ПИЊУХ ПЕТАР
+ПИНТАЧ ФРАЊО
+ПИНТАЧ ЛАДИСЛАВ
+ПИНТАЧ НИКОЛА ДИПЛ ОЕЦ
+ПИНТАЧ ВЕСНА
+ПИНТАЋ ЂОРЂЕ
+ПИНТАЋ МАРИЈА
+ПИНТАРИЋ ЈАСНА
+ПИНТАРИЋ ЈОВАН
+ПИНТЕР АДРИЕНЕ
+ПИНТЕР АЛЕКСАНДАР
+ПИНТЕР АНДРАШ
+ПИНТЕР БЕЛА
+ПИНТЕР БЕЛА
+ПИНТЕР ФРАЊА
+ПИНТЕР ИМРЕ
+ПИНТЕР ЈАНОШ
+ПИНТЕР КАРОЉ
+ПИНТЕР КАТАЛИН
+ПИНТЕР ЛЕНКА
+ПИНТЕР ЛИВИЈА
+ПИНТЕР МАРИЈА
+ПИНТЕР МИХАЉ
+ПИНТЕР МИХАЉ
+ПИНТЕР СТЕВАН
+ПИНТЕР ТИБОР
+ПИНТЕР ВЕРА
+ПИНТЕР ВЈЕКОСЛАВ
+ПИПЕР ВЕЛИБОР
+ПИПЕРАЦ НАДА
+ПИПЕРКОВ АНКА
+ПИПЕРСКИ ЖИВА
+ПИПЕРСКИ АНА
+ПИПЕРСКИ ДРАГОМИР
+ПИПЕРСКИ КОСТА
+ПИРЦ ДАНИЦА
+ПИРИ ЈАНОШ
+ПИРИ ЈОЖЕФ
+ПИРИ ЈОСИП
+ПИРИ ЈОСИП
+ПИРИЋ ИБРАХИМ
+ПИРИЋ ОСМАН
+ПИРИЋ ЗОРА
+ПИРИВАТРИЋ ДУШАНКА
+ПИРМАЈЕР ЈОСИП
+ПИРОШКИ ДРАГИЦА
+ПИРОШКИ ЈУЛИЈАНА
+ПИРОШКИ МИОДРАГ
+ПИРОШКИ ВАСА
+ПИРТИЋ КСЕНИЈА
+ПИРТИЋ РАДИНКА
+ПИРТИЋ САВЕТА
+ПИС ЕДИТА
+ПИСАЧИЋ ВЛАДИМИР
+ПИСАР ШАНДОР
+ПИСАР ДУШАН
+ПИСАР ЈОЖЕФ
+ПИСАР ЛАСЛО
+ПИСАРЕВ ЂОРЂЕ
+ПИСАРЕВ ЕМИЛИЈА
+ПИСАРЕВ КАТИЦА
+ПИСАРЕВ МИЛАН
+ПИСАРЕВИЋ ЂОРЂЕ
+ПИСАРЕВИЋ МИРКО
+ПИСАРЕВИЋ МИРКО
+ПИСАРЕВИЋ МИТАР
+ПИСАРЕВИЋ СПАСЕНИЈА
+ПИСАРИЋ ЂУРА
+ПИСАРИЋ ЂУРО
+ПИСАРИЋ БЛАЖО
+ПИСАРИЋ БРАНКО
+ПИСАРИЋ ДРАГАН
+ПИСАРИЋ ДРАГО
+ПИСАРИЋ НЕЂО
+ПИСАРИЋ ОСТОЈА
+ПИСАРИЋ ОСТОЈА
+ПИСАРИЋ ПАВЛЕ
+ПИСАРИЋ ВЛАДО
+ПИСАРОВ ЂОРЂЕ
+ПИСАРОВ КАТИЦА
+ПИСАРОВ ВАСА
+ПИТА МАХМУТ
+ПИТА МАХМУТ
+ПИТОМАЧИЋ СТОЈАНКА
+ПИТОМАЧИЋ ВЛАДА
+ПИТУК НАДА
+ПИУКОВИЋ ИВАН
+ПИУКОВИЋ МАГДА
+ПИВАЧ БОСИЉКА
+ПИВАЦ ДРАГОЉУБ
+ПИВАЦ МИЛОРАД
+ПИВАЦ МИЛОВАН
+ПИВАЦ ЗВОНИМИР
+ПИВАРСКИ БРАНКА
+ПИВАРСКИ ДУШАН
+ПИВАРСКИ МИОДРАГ
+ПИВАРСКИ РАТОМИР
+ПИВАРСКИ СЛАВИЦА
+ПИВАРСКИ СТЕВАН
+ПИВАРСКИ ВЕСЕЛИН МР ПХ
+ПИВНИЧКИ БОГДАНКА
+ПИВНИЧКИ БРАНИСЛАВ
+ПИВНИЧКИ БРАНИСЛАВ
+ПИВНИЧКИ БРАНКА
+ПИВНИЧКИ ДРАГАН
+ПИВНИЧКИ ГОРДАНА
+ПИВНИЧКИ ИВАНКА
+ПИВНИЧКИ КАТАРИНА
+ПИВНИЧКИ МАРИЈА
+ПИВНИЧКИ МИЛАН
+ПИВНИЧКИ МИЛЕТА
+ПИВНИЧКИ РАДЕНКО
+ПИВНИЧКИ РАЈКО
+ПИВНИЧКИ СТОЈКА
+ПИВНИЧКИ СВЕТОЗАР
+ПЈАНИЋ МИХАЈЛО
+ПЈАНИЋ РИСТА
+ПЈЕШЧИЋ БОГОЉУБ
+ПЈЕШЧИЋ ЛЕПОСАВА
+ПЈЕШЧИЋ МАРИЈА
+ПЈЕШЧИЋ МИЛЕВА
+ПЈЕШЧИЋ НОВАК
+ПЈЕШИВАЦ ЗДРАВКО
+ПЈЕТЛОВИЋ ДРАГИЦА
+ПЈЕВАЧ НИКОЛА
+ПЈЕВАЦ БРАНКО
+ПЈЕВАЦ ДУШАН
+ПЈЕВАЦ СТЕВАН
+ПЈЕВАЦ ВЛАДИМИР
+ПЈЕВАЦ ЗОРА
+ПЈЕВАЛИЦА УРОШ
+ПЈЕВИЋ ЂУРАЂ
+ПЈЕВИЋ БОЖО
+ПЈЕВИЋ МИРКО ДР
+ПЈЕВИЋ МИРОСЛАВА ДР
+ПЛАЧКИЋ ЖАРКО
+ПЛАЧКИЋ БОЖИДАР
+ПЛАЧКИЋ БРАНКО
+ПЛАЧКИЋ МЕЛАНИЈА
+ПЛАЧКИЋ СЛАВКО
+ПЛАЧКИЋ ТОМИСЛАВ
+ПЛАЧКО СТЈЕПАН
+ПЛАЧКОВ ЖИВКА
+ПЛАЧКОВ ЂОРЂЕ
+ПЛАЧКОВ БОРИВОЈ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНКА
+ПЛАЧКОВ ДУШАН
+ПЛАЧКОВ ИЛОНКА
+ПЛАЧКОВ МИЛАН
+ПЛАЧКОВ МИРОЉУБ
+ПЛАЧКОВ ПАЈА
+ПЛАЧКОВ ПЕРА
+ПЛАЧКОВ ПЕТАР
+ПЛАЧКОВ РУДОЛФ
+ПЛАЧКОВ САВА
+ПЛАЧКОВ САВЕТА
+ПЛАЧКОВ СИМА
+ПЛАЧКОВ СТАНИМИР
+ПЛАЧКОВ СТЕВАН
+ПЛАЧКОВ СТЕВА
+ПЛАЧКОВ СТОЈАН
+ПЛАЧКОВ СВЕТОЗАР
+ПЛАЧКОВ ВУКОСАВА
+ПЛАЧКОВИЋ МИЛАН
+ПЛАЧКОВИЋ ПАЈА
+ПЛАЦ ЕДО
+ПЛАКАЛОВИЋ МИЛАДИН
+ПЛАНЧАК АМАЛИЈА
+ПЛАНЧАК ЕУФЕМИЈА
+ПЛАНЧАК ЕУГЕН
+ПЛАНЧАК ЈОВАН
+ПЛАНЧАК МИХАЈЛО
+ПЛАНЧАК МИРОСЛАВ ДР ПРОФ
+ПЛАНИЋ РАДОВАН
+ПЛАНИЋ ЗДЕНКА
+ПЛАНИНЧИЋ МИНА
+ПЛАНИНЧИЋ ВЕСЕЛИН
+ПЛАЊАНИН РАДОМИР
+ПЛАНОЈЕВИЋ МИЛУТИН ДР
+ПЛАНОВИЋ ВЕСНА
+ПЛАТИША МИЛАН
+ПЛАТИША МИОДРАГ
+ПЛАВШИЋ АНЂА
+ПЛАВШИЋ АНИЦА
+ПЛАВШИЋ АНИЦА
+ПЛАВШИЋ АНКА
+ПЛАВШИЋ БОШКО
+ПЛАВШИЋ БОЖА
+ПЛАВШИЋ БОЖА
+ПЛАВШИЋ БОЖИДАР
+ПЛАВШИЋ БОГОМИР
+ПЛАВШИЋ БОРИСЛАВ
+ПЛАВШИЋ БРАНИСЛАВ
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ ЦВИЈО
+ПЛАВШИЋ ДРАГАН
+ПЛАВШИЋ ДУШАН
+ПЛАВШИЋ ДУШИЦА
+ПЛАВШИЋ ГОРДАНА
+ПЛАВШИЋ ЈЕЛИСАВЕТА
+ПЛАВШИЋ ЈОВАНКА
+ПЛАВШИЋ ЈОВАН
+ПЛАВШИЋ ЈОВАН
+ПЛАВШИЋ ЈОВИЦА
+ПЛАВШИЋ КАТАРИНА
+ПЛАВШИЋ КРСТА
+ПЛАВШИЋ ЛАЗАР
+ПЛАВШИЋ ЉИЉАНА
+ПЛАВШИЋ ЉУБИЦА
+ПЛАВШИЋ ЉУБИЦА
+ПЛАВШИЋ ЉУБИНКА
+ПЛАВШИЋ ЉУБОМИР
+ПЛАВШИЋ ЛУКА
+ПЛАВШИЋ МАРИЈА
+ПЛАВШИЋ МАРИНКО
+ПЛАВШИЋ МАРИНКО
+ПЛАВШИЋ МИЛЕНКО
+ПЛАВШИЋ МИЛЕНКО
+ПЛАВШИЋ МИЛИЦА
+ПЛАВШИЋ МИЛИЦА
+ПЛАВШИЋ МИЛИНКА
+ПЛАВШИЋ МИЛОШ
+ПЛАВШИЋ МИЛОМИР
+ПЛАВШИЋ МИОДРАГ
+ПЛАВШИЋ МИРКО
+ПЛАВШИЋ МИРКО
+ПЛАВШИЋ МИРОСЛАВ ДР ЛЕКАР
+ПЛАВШИЋ МИТАР
+ПЛАВШИЋ МИТА
+ПЛАВШИЋ МОМЧИЛО
+ПЛАВШИЋ МОМИР
+ПЛАВШИЋ НЕРА
+ПЛАВШИЋ НИКОЛА
+ПЛАВШИЋ НОВКА
+ПЛАВШИЋ ПАВА
+ПЛАВШИЋ ПЕТАР
+ПЛАВШИЋ ПЕТАР
+ПЛАВШИЋ РАДЕ
+ПЛАВШИЋ РАДМИЛА
+ПЛАВШИЋ РАДОВАН
+ПЛАВШИЋ РАДОВАН
+ПЛАВШИЋ РАНКО
+ПЛАВШИЋ РАНКО
+ПЛАВШИЋ СИМА
+ПЛАВШИЋ СЛОБОДАН
+ПЛАВШИЋ СЛОБОДАН
+ПЛАВШИЋ СТЕВАН
+ПЛАВШИЋ СТЕВАН
+ПЛАВШИЋ СТЕВО
+ПЛАВШИЋ ТОДЕ
+ПЛАВШИЋ ТОДОР
+ПЛАВШИЋ ВИНКО
+ПЛАВШИЋ ВИТОМИР
+ПЛАВШИЋ ВЛАДА
+ПЛАВШИЋ ВОЈИН
+ПЛАВШИЋ ВОЈИН
+ПЛАВШИЋ ВУКОСАВА
+ПЛАВШИЋ ЗОРКА
+ПЛАВШИН ДУШАН
+ПЛАВШИН МИЛИЦА
+ПЛАВШИН СТЕВАН
+ПЛАВАЦ ЖЕЉКО
+ПЛАВАЦ ДУШАН
+ПЛАВАЦ ЈАНКО
+ПЛАВЦ АХМЕТ
+ПЛАВЦ БАЈРУШ
+ПЛАВЉАНИН ЖИВКО
+ПЛАЗАЧИЋ ВИДОЈЕ
+ПЛАЗИНА ПУНИША
+ПЛЕША ЈОСИП
+ПЛЕШЕ ГОРАН
+ПЛЕШКО АНИЦА
+ПЛЕШТИЋ ДИМИТРИЈЕ
+ПЛЕШТИЋ МИРЈАНА
+ПЛЕЋАШ ДАНИЛО
+ПЛЕЋАШ ИЛИЈА
+ПЛЕЋАШ КАТИЦА
+ПЛЕЋАШ МИЛЕВА
+ПЛЕЋАШ РАДЕ
+ПЛЕЋАШ РОЗАЛИЈА
+ПЛЕМИЋ ЂУРО
+ПЛЕМИЋ ДАНЕ
+ПЛЕМИЋ МИЛАН
+ПЛЕСКОЊА МИЛОЈИЦА
+ПЛЕСКОЊИЋ АМАЛИЈА
+ПЛЕСКОВИЋ АНТУН
+ПЛЕСКОВИЋ НИКОЛА
+ПЛЕСКОВИЋ ЗДРАВКО
+ПЛЕТЕЛ КСЕНИЈА
+ПЛЕТЕЛ МИЛАН
+ПЛЕТИКАПИЋ ДРАГАН
+ПЛЕТИКОСИЋ ЉЕРКА
+ПЛЕТИКОСИЋ ПЕТАР
+ПЛЕТЛ ОТИЛИЈА
+ПЛИСНИЋ МИЛИЦА
+ПЛИСНИЋ МИЛОРАД
+ПЛИВАР ЈОВАН
+ПЉУЦО БРАНКО
+ПЛОХ ДРАГО
+ПЛОХ ФРАЊА
+ПЛОЈ МАРИЈА
+ПЛОС МИОДРАГ
+ПЛУЖАРЕВ ЛАЗАР
+ПЛУЖАРЕВ ОЛИВЕРА ДР
+ПЛУЖАРОВ МИЛЕНКО
+ПЛУКАВЕЦ ИВАН
+ПЛЗАК ДРАГОСЛАВ
+ПОЧАНИЋ ТРИПО
+ПОЧЕК БРАНИСЛАВ
+ПОЧЕК БРАНКО
+ПОЧЕК ЉИЉАНА
+ПОЧЕК МИЛОВАН
+ПОЧЕК ВЛАДА
+ПОЧЕК ВЛАДИСЛАВ
+ПОЧЕК ВЛАДИСЛАВ
+ПОЧЕТАК МИЛЕНКО
+ПОЧЕТАК МИЛИЦА
+ПОЧУЧА ДМИТАР
+ПОЧУЧА ДУШАН
+ПОЧУЧА ЈОВАНКА
+ПОЧУЧА ПЕТАР
+ПОЧУЧА РАДМИЛА
+ПОШЧИЋ ЕРИКА
+ПОША ЂУРА
+ПОША АНДРАШ
+ПОША ДРАГИЦА
+ПОША ИШТВАН
+ПОША КАРЛО
+ПОША ПЕТАР
+ПОША РОЗАЛИЈА
+ПОША СНЕЖАНА
+ПОШАРАЦ ДУШКО
+ПОШАРАЦ ЗОРАН
+ПОШТА НИКОЛА
+ПОШТИЋ ЂОРЂЕ ДР
+ПОШТИЋ ДРАГАН
+ПОШТИЋ МИЛАН
+ПОШТИЋ СЛОБОДАНКА
+ПОШТИЋ СОФИЈА
+ПОШТИЋ СРЂАН ДИПЛ ИНГ
+ПОШТОШ ВЕРА
+ПОЖАР МИЛИЦА
+ПОЖАРЕВ ЂОРЂЕ
+ПОЖАРЕВ ЂОРЂЕ
+ПОЖАРЕВ АЛЕКСАНДАР
+ПОЖАРЕВ АНЂЕЛКА
+ПОЖАРЕВ ДОРА
+ПОЖАРЕВ ЈЕЛЕНА
+ПОЖАРЕВ РАДЕ
+ПОЖАРЕВ РАТОМИРКА
+ПОЖАРЕВ РАТОМИР
+ПОЖАРЕВ СТЕВАН
+ПОЖАРЕВ ВЕСЕЛИН
+ПОЖЕГА МИЛЕ
+ПОЖЕГА СОФИЈА
+ПОЖЕГА СТЕВАН
+ПОЖГАЈ АНТУН
+ПОЖГАЈ ТОМИСЛАВ
+ПОБОР ЈЕЛЕНА
+ПОБОР СРЕТО
+ПОБРАН СТЕВАН
+ПОБРАН ВЛАДИМИР
+ПОБРИЋ ИСАК
+ПОБУЋАНОВИЋ-КУЉАНКИЋ ШУХРЕТА
+ПОБУЂАНОВИЋ ИЛИНКА
+ПОБУЂАНОВИЋ МУХАРЕМ
+ПОБУЂАНОВИЋ СВЕТЛАНА
+ПОЦАЈТ ВИКТОР
+ПОЦМАН АНТУН
+ПОЦМАН ВИЛИМ
+ПОЦРНИЋ МИЛЕ
+ПОЦРНИЋ НИКОЛА
+ПОДГОРНИК МИЛАН
+ПОДГОРНИК РАЈНА
+ПОДЛИПЕЦ МАРИЈА
+ПОДМАЈОРСКИ МАРА
+ПОДОБНИК ЈАСНА
+ПОДОЛА ЈУСТИНА
+ПОДРАШЧАНИН ЈОВАН
+ПОДРАШЧАНИН НАДА
+ПОДРАШЧАНИН ВОЈА
+ПОДРАВАЦ БРАНКО
+ПОГАНЧЕВ ГОРАН
+ПОГАНЧЕВ ГОРАН
+ПОГАЊ ЈУЛИЈАНА
+ПОГУБЕРОВИЋ ЈОВАН
+ПОЈБИЋ ДУШАН
+ПОЈЕ ЈОСИП
+ПОЈИЋ БРАНКО
+ПОКА ЈОСИП
+ПОКАС ЈОСИП
+ПОКРАЈАЦ АНГЕЛИНА
+ПОКРАЈАЦ ЈОВАН
+ПОКРАЈАЦ ЈОВАН
+ПОКРАЈАЦ МИЛАН
+ПОКРАЈАЦ МИЛОРАД
+ПОКРАЈАЦ РАДЕ
+ПОКРАЈАЦ СЛАВКО
+ПОКРИЋ ВОЈИСЛАВ
+ПОКУШЕВСКИ ДОБРИНКА
+ПОКУПЕЦ МИЛАН
+ПОЛАК ЈЕЛЕНА
+ПОЛАК ЈОЖЕФ
+ПОЛАК СТЕВАН
+ПОЛАКОВИЋ ЕРЖЕБЕТ
+ПОЛАКОВИЋ ЈАНОШ
+ПОЛАНЕЦ ФРАЊО
+ПОЛЕ НИКОЛА
+ПОЛЕ НИКОЛА
+ПОЛЕДИЦА ДУШАНКА
+ПОЛЕНДЕР СОФИЈА
+ПОЛЕРМАН БЕЛА
+ПОЛЕРМАН МИЛИЦА
+ПОЛЕТАНОВИЋ МАРИНКО
+ПОЛЕТО ДОМЕНИК
+ПОЛЕТО ИВАН
+ПОЛГАР ИШТВАН
+ПОЛИЋ ЂУРА
+ПОЛИЋ БОШКО
+ПОЛИЋ ДАНИЦА
+ПОЛИЋ ДРАГАН
+ПОЛИЋ ЉУБИЦА
+ПОЛИЋ МАРИЈАН
+ПОЛИЋ СЛОБОДАН
+ПОЛИМАЦ АНЂЕЛИЈА
+ПОЛИН ЂУРА
+ПОЛИН ЛАСЛО
+ПОЛИНСКИ АРАНКА
+ПОЉАЧКИ АЛЕКСАНДАР
+ПОЉАЧКИ МИЛИЦА
+ПОЉАЧКИ МИЛИЦА
+ПОЉАЧКИ СВЕТОЗАР
+ПОЉАК ЂЕРЂ
+ПОЉАК ЕВА
+ПОЉАК ФРАЊО
+ПОЉАК ЛАСЛО
+ПОЉАК МИША
+ПОЉАК МИХАЉ
+ПОЉАК МИЛКА
+ПОЉАК МИОДРАГ
+ПОЉАК МИОДРАГ
+ПОЉАК НИКОЛА
+ПОЉАК НИКОЛА
+ПОЉАК ПЕТАР
+ПОЉАК РАНКО
+ПОЉАКОВИЋ СТЈЕПАН
+ПОЉАНСКИ ЈОВИЦА
+ПОЉАНСКИ ЉУБИЦА
+ПОЉАНСКИ СТОЈАН
+ПОЉИЧАК АНТЕ
+ПОЉИЧАК ЉУБАН
+ПОЉИЋ РЕФИК
+ПОЉОВКА ЈАН
+ПОЉВАШ ЈОЖЕФ
+ПОЛОЈАЦ ЛУКА
+ПОЛОВИЋ КОСТА
+ПОЛОВИЋ СТЕВО
+ПОЛОВИНА ЂОРЂЕ
+ПОЛОВИНА ДАНИЈЕЛ
+ПОЛОВИНА ИСА
+ПОЛОВИНА МИЛАН
+ПОЛОВИНА МИЛИЦА
+ПОЛОВИНА МИЛОРАД
+ПОЛОВИНА НАДА
+ПОЛОВИНА НИКОЛА
+ПОЛОВИНА ПЛЕМЕНКА
+ПОЛОВИНА РАДИВОЈЕ
+ПОЛОВИНА СЛОБОДАН
+ПОЛОВИНА СТЕВО
+ПОЛОВИНА ТОДОР
+ПОЛОВИНА ВЛАДИМИР
+ПОЛОВИНА ВЛАДО
+ПОЛОВИНСКИ САВА
+ПОЛТУРА ЖУЖАНА
+ПОЛТУРА ГАБОР
+ПОЛТУРА ИРЕНА
+ПОЛТУРА МИРКО
+ПОЛУЖАНСКИ ИВАНКА
+ПОЛУМИРАЦ МИЛИЦА
+ПОЛУТА ЛИНА
+ПОЛВЕРЕЖАН-ОБШУСТ ЋЕЋИЛИЈА
+ПОЛЗОВИЋ АЛЕКСАНДАР
+ПОЛЗОВИЋ ЈОВАН
+ПОЛЗОВИЋ МИОМИР
+ПОЛЗОВИЋ МИРОСЛАВ
+ПОЛЗОВИЋ РАДОСЛАВ
+ПОМОРИШКИ БРАНИСЛАВ
+ПОНГО ЖУЖАНА
+ПОНГО ЈАНОШ
+ПОНГО ЛАСЛО
+ПОНГО СТЕВАН
+ПОЊАРАЦ САВО
+ПОЊАВИЋ ГОРДАНА
+ПОЊАВИЋ РАДИСАВ
+ПОЊАВИЋ СИНИША
+ПОЊЕВИЋ МОМЧИЛО
+ПОЊЕВИЋ ПЕТАР
+ПОЊЕВИЋ СПАСАН
+ПОЊЕВИЋ ЗВЕЗДАН
+ПОЊИЧАН ХОРИСЛАВ
+ПОЊИЧАН ЈАН
+ПОЊИЧАН ЈОСИП
+ПОЊИГЕР ЂУРА
+ПОЊИГЕР ИВАН
+ПОНОЋКО ЧЕДОМИР
+ПОНОРАЦ ЛАЗАР
+ПОП-ЈОВАНОВ ВЕРА
+ПОП ЗДЕНКО
+ПОПЂУРЂЕВ МИЛАН
+ПОПА СПАСЕНИЈА
+ПОПАДИЋ ЖИВАН
+ПОПАДИЋ ЖИВА
+ПОПАДИЋ ЖИВКО
+ПОПАДИЋ ЂОКО
+ПОПАДИЋ ЂУКА
+ПОПАДИЋ БРАНКА
+ПОПАДИЋ ГОЈКО
+ПОПАДИЋ ИСИДОР
+ПОПАДИЋ-ЈАНУЗОВИЋ РАДМИЛА
+ПОПАДИЋ ЉИЉАНА
+ПОПАДИЋ ЉУБИЦА
+ПОПАДИЋ ЉУБО
+ПОПАДИЋ МИЛАН
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИОДРАГ
+ПОПАДИЋ НЕДЕЉКО
+ПОПАДИЋ НЕГОВАН
+ПОПАДИЋ НИКОЛА
+ПОПАДИЋ НОВАК
+ПОПАДИЋ ПЕТКО
+ПОПАДИЋ ПРЕДРАГ
+ПОПАДИЋ РАДМИЛА
+ПОПАДИЋ РАДМИЛА
+ПОПАДИЋ РАТОМИР
+ПОПАДИЋ СИЛВИЈА
+ПОПАДИЋ СЛАВКО
+ПОПАДИЋ СЛАВОЉУБ
+ПОПАДИЋ СТАНА
+ПОПАДИЋ СТОЈИЦА
+ПОПАДИЋ СВЕТЛАНА
+ПОПАДИЋ ТИХОМИР
+ПОПАДИЋ ВЕРА
+ПОПАДИЋ ВОЈИСЛАВ АДВОКАТ
+ПОПАДИЋ ВОЈИСЛАВ
+ПОПАРА АЛЕКСАНДАР
+ПОПАРА ИЛИЈА
+ПОПАРА ЉУБИША
+ПОПАРА ТАДИЈА
+ПОПАРА ЗОРАН
+ПОПАРИЋ ЖИВОЈИН
+ПОПАРИЋ ИСИДОР
+ПОПАРИЋ МАРИЦА
+ПОПАРИЋ НЕНАД
+ПОПДАНКОВ ЈУДИТА
+ПОПЕЈКОВ БОРИСЛАВ
+ПОПЕЈКОВ ЉИЉАНА
+ПОПЕЈКОВ МАРА
+ПОПЕНГОВ ВАСА
+ПОПЕСКУ РУЖА
+ПОПГЛИГОРИН ПАВЛЕ
+ПОПИЋ ЖЕЉКО
+ПОПИЋ АЛЕКСАНДАР
+ПОПИЋ АНЂЕЛКО
+ПОПИЋ БРАНКО
+ПОПИЋ БУДИМИР
+ПОПИЋ ДРАГАН
+ПОПИЋ ДУШАН
+ПОПИЋ ДУШАН
+ПОПИЋ ДУШАН
+ПОПИЋ ЕДИТА
+ПОПИЋ ГОРДАНА
+ПОПИЋ ЈЕЛИСАВЕТА
+ПОПИЋ КАТИЦА
+ПОПИЋ ЉИЉАНА
+ПОПИЋ ЛУКА
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛИЦА
+ПОПИЋ МИЛИВОЈ
+ПОПИЋ МИРА
+ПОПИЋ МИРА
+ПОПИЋ МИРЈАНА
+ПОПИЋ НАДА
+ПОПИЋ-ПАЉИЋ ФЕОДОРА
+ПОПИЋ РАДИВОЈ
+ПОПИЋ САВА
+ПОПИЋ САВО
+ПОПИЋ СНЕЖАНА
+ПОПИЋ СОФИЈА
+ПОПИЋ СОФИЈА
+ПОПИЋ СВЕТОЗАР
+ПОПИЋ ТОМА
+ПОПИЋ ВУКИЦА
+ПОПИЋ ЗОРА
+ПОПИН ИВАН
+ПОПИН РАДИВОЈ
+ПОПИН ВИТОМИР
+ПОПИН ВЛАДИМИР
+ПОПИВОДА БОЖИДАР
+ПОПИВОДА МИЛОВАН
+ПОПИВОДА МИЛУТИН
+ПОПИВОДА НЕДЕЉКО
+ПОПИВОДА ПЕТАР
+ПОПИВОДА РАДИСЛАВ
+ПОПМИХАЈЛОВ ДИМИТРИЈЕ
+ПОПМИХАЈЛОВ ДУШАН
+ПОПНОВАКОВ ДРАГОМИР
+ПОПНОВАКОВ МИЛАН
+ПОПНОВАКОВ МИЛИЦА
+ПОПОВ ЧЕДОМИР
+ПОПОВ ЖАРКО
+ПОПОВ ЖАРКО
+ПОПОВ-ЖИКЕЛИЋ ЗОРА
+ПОПОВ ЖИВКА
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЂОКА
+ПОПОВ ЂОКА
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂУРЂИНА
+ПОПОВ ЂУРА
+ПОПОВ ЂУРА
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АНЂА
+ПОПОВ АНДОН
+ПОПОВ АНКИЦА
+ПОПОВ-БАША ВЕРА
+ПОПОВ БОРИВОЈ ДИПЛ ИНГ
+ПОПОВ БРАНИСЛАВА
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНКО
+ПОПОВ БРАНКО
+ПОПОВ ДАНИЦА
+ПОПОВ ДАНИЦА
+ПОПОВ ДАНИЛО
+ПОПОВ ДАНИЛО
+ПОПОВ ДАРИНКА
+ПОПОВ ДИМИТРИЈЕ
+ПОПОВ ДИМИТРИЈЕ
+ПОПОВ ДРАГАНА
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГА
+ПОПОВ ДРАГИША
+ПОПОВ ДРАГИЦА
+ПОПОВ-ДРАГИН ОЛГА
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОСЛАВА
+ПОПОВ ДУШАН ДР
+ПОПОВ ДУШАН
+ПОПОВ ДУШАН
+ПОПОВ ДУШАН
+ПОПОВ ДУШКА
+ПОПОВ ГАВРА
+ПОПОВ ГОРАН
+ПОПОВ ГОРДАНА ДР
+ПОПОВ ГОРДАНА
+ПОПОВ ГОРДАНА
+ПОПОВ ИЛОНКА
+ПОПОВ ИСА
+ПОПОВ ИВАНКА
+ПОПОВ ИВАН
+ПОПОВ ИВКА
+ПОПОВ ЈЕЛА
+ПОПОВ ЈЕЛА
+ПОПОВ ЈЕЛИСАВЕТА
+ПОПОВ ЈЕЗДИМИР
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈУГОСЛАВ
+ПОПОВ ЈУГ
+ПОПОВ ЈУЛКА
+ПОПОВ КАТИЦА
+ПОПОВ КАТИЦА
+ПОПОВ КОСА
+ПОПОВ КОВИНКА
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛЕНКА
+ПОПОВ ЉИЉАНА
+ПОПОВ ЉИЉАНА
+ПОПОВ ЉУБИША
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИНКА
+ПОПОВ ЉУБОМИР
+ПОПОВ МАРА
+ПОПОВ МАРИЦА
+ПОПОВ МАРИЈА
+ПОПОВ МАРИЈА
+ПОПОВ МАРИНКО
+ПОПОВ МАРКО
+ПОПОВ МАРКО
+ПОПОВ МАРКО
+ПОПОВ МИЛАДИН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛЕНА
+ПОПОВ МИЛЕНА
+ПОПОВ МИЛЕНКО
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛКА
+ПОПОВ МИЛОШ
+ПОПОВ МИЛОШ
+ПОПОВ МИЛОЈЕ
+ПОПОВ МИЛОРАД
+ПОПОВ МИЛОВАН
+ПОПОВ МИЛОВАН
+ПОПОВ МИЛУТИН
+ПОПОВ МИРЈАНА
+ПОПОВ МИРЈАНА
+ПОПОВ МИРЈАН
+ПОПОВ МИРОСЛАВ
+ПОПОВ МИТА
+ПОПОВ МОМЧИЛО
+ПОПОВ НЕДЕЉКО
+ПОПОВ НЕНАТКА
+ПОПОВ НИКОЛА
+ПОПОВ НИНА
+ПОПОВ НИНОСЛАВ ДИПЛ ИНГ
+ПОПОВ НОВАК
+ПОПОВ ОБРАД
+ПОПОВ-ОБРОВАЧКИ СОФИЈА
+ПОПОВ ОЛГА
+ПОПОВ ПАЈА
+ПОПОВ ПАВЛЕ
+ПОПОВ ПАВЛЕ
+ПОПОВ ПАВЛЕ
+ПОПОВ ПЕРА
+ПОПОВ ПЕТАР
+ПОПОВ ПЕТАР
+ПОПОВ ПЛАТОН
+ПОПОВ ПРЕДРАГ
+ПОПОВ РАДИВОЈЕ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДМИЛА
+ПОПОВ РАДОЈКА
+ПОПОВ РАДОВАН ДИПЛ ИНГ
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАТОМИР
+ПОПОВ РЕЉА
+ПОПОВ РОДОЉУБ
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВЕТА
+ПОПОВ СЕКУЛА
+ПОПОВ СИНИША
+ПОПОВ СЛАВИЦА
+ПОПОВ СЛАВКО
+ПОПОВ СЛАВКО
+ПОПОВ СЛАВКО
+ПОПОВ СЛОБОДАН
+ПОПОВ СЛОБОДАН
+ПОПОВ СНЕЖАНА
+ПОПОВ СОФИЈА
+ПОПОВ СПАСОЈЕ
+ПОПОВ СРЕДОЈЕ
+ПОПОВ СТАНА
+ПОПОВ СТЕВАН ДИПЛ ИНГ
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВА
+ПОПОВ СТЕВИЦА
+ПОПОВ СТОЈАНКА
+ПОПОВ СВЕТЛАНА
+ПОПОВ СВЕТОЗАР
+ПОПОВ СВЕТОЗАР
+ПОПОВ ТАТОМИР
+ПОПОВ ТОДОР
+ПОПОВ ТРИВА
+ПОПОВ УРОШ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВЕРА
+ПОПОВ ВЕРА
+ПОПОВ ВЕРА
+ПОПОВ ВЕРИЦА
+ПОПОВ ВЕСЕЛИН
+ПОПОВ ВЛАДИМИР
+ПОПОВ ВЛАДИМИР
+ПОПОВ ВОЈИН
+ПОПОВ ВОЈИСЛАВ
+ПОПОВ ВУКОСАВА
+ПОПОВ ЗЛАТА
+ПОПОВ ЗЛАТИЦА
+ПОПОВ ЗОРКА
+ПОПОВИЋ ЧАСЛАВ ДИПЛ ПРАВНИК
+ПОПОВИЋ ЧЕДОМИР ДИПЛ ИНГ
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ-ЧЕЈОВИЋ ПАВЛЕ
+ПОПОВИЋ ШЋЕПАН
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖЕЉКО
+ПОПОВИЋ ЖИВАН
+ПОПОВИЋ ЖИВАН
+ПОПОВИЋ ЖИВКО
+ПОПОВИЋ ЖИВОРАД
+ПОПОВИЋ ЖУЖАНА
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂИЈЕ
+ПОПОВИЋ ЂУРЂИНА
+ПОПОВИЋ ЂУРЂИНА
+ПОПОВИЋ ЂУРА
+ПОПОВИЋ ЂУРИЦА
+ПОПОВИЋ ЂУРО
+ПОПОВИЋ ЂУРО
+ПОПОВИЋ АКСЕНТИЈЕ
+ПОПОВИЋ АЛЕКСАНДАР ДР ПРАВНИК
+ПОПОВИЋ АЛЕКСАНДАР ДР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АНЂЕЛКА
+ПОПОВИЋ АНЂЕЛКА
+ПОПОВИЋ АНЂЕЛ
+ПОПОВИЋ АНА
+ПОПОВИЋ АНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНИЦА
+ПОПОВИЋ БЛАГОЈЕ
+ПОПОВИЋ БОЖА
+ПОПОВИЋ БОЖИДАР
+ПОПОВИЋ БОГДАН
+ПОПОВИЋ БОГДАН
+ПОПОВИЋ БОГОЉУБ
+ПОПОВИЋ БОЈАН
+ПОПОВИЋ БОРИСЛАВА
+ПОПОВИЋ БОРИСЛАВ
+ПОПОВИЋ БОРЈАН
+ПОПОВИЋ БОРКА
+ПОПОВИЋ БОСИЉКА
+ПОПОВИЋ БРАНИСЛАВ ДР
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИВОЈ
+ПОПОВИЋ БРАНИВОЈ
+ПОПОВИЋ БРАНКА
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ ЦВЕЈА
+ПОПОВИЋ ДАНЧИКА
+ПОПОВИЋ ДАНЕ
+ПОПОВИЋ ДАНЕ
+ПОПОВИЋ ДАНИЦА
+ПОПОВИЋ ДАНИЦА
+ПОПОВИЋ ДАНИЛО
+ПОПОВИЋ ДАНКИЦА
+ПОПОВИЋ ДАРИНКА
+ПОПОВИЋ ДЕЈАН
+ПОПОВИЋ ДЕСАНКА
+ПОПОВИЋ ДЕСА
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДОБРИНКА
+ПОПОВИЋ ДОБРИНКА
+ПОПОВИЋ ДОБРИНКО
+ПОПОВИЋ ДОБРИВОЈ
+ПОПОВИЋ ДРАГАНА
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГИША ДР
+ПОПОВИЋ ДРАГИША
+ПОПОВИЋ ДРАГИЊА
+ПОПОВИЋ ДРАГО ДИПЛ ИНГ
+ПОПОВИЋ ДРАГОЈЛО
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОМИР
+ПОПОВИЋ ДРАГОМИР
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГУТИН
+ПОПОВИЋ ДУШАН ДР
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШИЦА
+ПОПОВИЋ ДУШКО ДР
+ПОПОВИЋ ЕМИЛ
+ПОПОВИЋ ФЕОДОРА
+ПОПОВИЋ ФЕОДОР
+ПОПОВИЋ ГОЈКО
+ПОПОВИЋ ГОРАН
+ПОПОВИЋ ГОРДАНА
+ПОПОВИЋ ИЛЕ
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИРИНА
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ЈАДРАНКА
+ПОПОВИЋ ЈАНКО
+ПОПОВИЋ ЈАСНА
+ПОПОВИЋ ЈЕФТА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛИСАВЕТА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВО
+ПОПОВИЋ КАТАРИНА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КОНСТАНТИН
+ПОПОВИЋ КОСТА ДР
+ПОПОВИЋ КОСТАДИН
+ПОПОВИЋ КОСТА
+ПОПОВИЋ КОСТА
+ПОПОВИЋ КРИСТИНА
+ПОПОВИЋ КРСТА
+ПОПОВИЋ КРСТО
+ПОПОВИЋ КСЕНИЈА
+ПОПОВИЋ ЛАЗАР ДР ЛЕКАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛЕЛА
+ПОПОВИЋ ЛЕПОСАВА
+ПОПОВИЋ ЉИЉАНА ДР
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИСАВ
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ МАКСИМ
+ПОПОВИЋ МАРА
+ПОПОВИЋ МАРА
+ПОПОВИЋ МАРИЈА ДР
+ПОПОВИЋ МАРИЈАНА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИНКО
+ПОПОВИЋ МАРКО ДР ЛЕКАР
+ПОПОВИЋ МАРКО МР ИНГ
+ПОПОВИЋ МАРКО
+ПОПОВИЋ МАРКО
+ПОПОВИЋ МАРТА
+ПОПОВИЋ МЕЛАНИЈА
+ПОПОВИЋ МИХАИЛО
+ПОПОВИЋ МИХАЈЛО ДР
+ПОПОВИЋ МИХАЈЛО
+ПОПОВИЋ МИЛАНА
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛА
+ПОПОВИЋ МИЛЕНА
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕТА ДИПЛ ИНГ
+ПОПОВИЋ МИЛЕ
+ПОПОВИЋ МИЛИЦА
+ПОПОВИЋ МИЛИЦА
+ПОПОВИЋ МИЛИЈАН ДР
+ПОПОВИЋ МИЛИНКО
+ПОПОВИЋ МИЛИВОЈЕ
+ПОПОВИЋ МИЛКА
+ПОПОВИЋ МИЛОШ ДИПЛ ИНГ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОСАВА
+ПОПОВИЋ МИЛОСАВ
+ПОПОВИЋ МИЛОВАН
+ПОПОВИЋ МИЛУТИН
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИРА
+ПОПОВИЋ МИРА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРОЉУБ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИТАР
+ПОПОВИЋ МИТАР
+ПОПОВИЋ МЛАДЕН
+ПОПОВИЋ МЛАДИНКО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАТАЛИЈА
+ПОПОВИЋ НЕЂО
+ПОПОВИЋ НЕБОЈША
+ПОПОВИЋ НЕДЕЉКО
+ПОПОВИЋ НЕДЕЉКО
+ПОПОВИЋ НЕНАД
+ПОПОВИЋ НЕНАД
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НОВАК
+ПОПОВИЋ НОВАК
+ПОПОВИЋ ОБРАД
+ПОПОВИЋ ОБРАД
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ПАЈА
+ПОПОВИЋ ПАВЛЕ ДИПЛ ПРАВНИК
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПЕРА
+ПОПОВИЋ ПЕРИЦА
+ПОПОВИЋ ПЕРО
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ РАДА
+ПОПОВИЋ РАДЕНКО
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДИНКА
+ПОПОВИЋ РАДИВОЈЕ
+ПОПОВИЋ РАДИВОЈ
+ПОПОВИЋ РАДИВОЈ
+ПОПОВИЋ РАДМИЛА
+ПОПОВИЋ РАДМИЛА
+ПОПОВИЋ РАДОИЦА
+ПОПОВИЋ РАДОИЦА
+ПОПОВИЋ РАДОЈИЦА
+ПОПОВИЋ РАДОЈКА
+ПОПОВИЋ РАДОЈКА
+ПОПОВИЋ РАДОМИР
+ПОПОВИЋ РАДОСАВ
+ПОПОВИЋ РАДОСАВ
+ПОПОВИЋ РАДОСЛАВ
+ПОПОВИЋ РАДОВАНКА
+ПОПОВИЋ РАДОВАНКА
+ПОПОВИЋ РАДОВАН
+ПОПОВИЋ РАДУЛ
+ПОПОВИЋ РАЈКО
+ПОПОВИЋ РАНКО
+ПОПОВИЋ РАТКО
+ПОПОВИЋ РАВИЈОЈЛА
+ПОПОВИЋ РЕЉА ДР
+ПОПОВИЋ РОДОЉУБ
+ПОПОВИЋ САЊА
+ПОПОВИЋ САВА ДИПЛ ИНГ
+ПОПОВИЋ САВА ДИПЛ ИНГ
+ПОПОВИЋ САВА
+ПОПОВИЋ САВА
+ПОПОВИЋ САВА
+ПОПОВИЋ САВО
+ПОПОВИЋ СЕКУЛА
+ПОПОВИЋ СИНИША ДР ЛЕКАР
+ПОПОВИЋ СЛАВИЦА
+ПОПОВИЋ СЛАВКО ДИПЛ ОЕЦ
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВОЉУБ
+ПОПОВИЋ СЛАВОЉУБ
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СМИЉАНА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОЊА
+ПОПОВИЋ СПАСОЈЕ
+ПОПОВИЋ СТАНИМИР
+ПОПОВИЋ СТАНИМИР
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТЕВАН ДР
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВКА
+ПОПОВИЋ СТЕВО
+ПОПОВИЋ СТОЈАН
+ПОПОВИЋ СВЕТИСЛАВ
+ПОПОВИЋ СВЕТЛАНА
+ПОПОВИЋ СВЕТОЗАР
+ПОПОВИЋ ТЕОДОР
+ПОПОВИЋ ТЕРЕЗА
+ПОПОВИЋ ТОДОР
+ПОПОВИЋ ТОМИСЛАВ
+ПОПОВИЋ ТОМО
+ПОПОВИЋ УГЉЕША
+ПОПОВИЋ ВАСИЛИЈЕ
+ПОПОВИЋ ВАСИЛИЈЕ
+ПОПОВИЋ ВЕЛИМИР
+ПОПОВИЋ ВЕЛИЗАР
+ПОПОВИЋ ВЕЉКО
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРИЦА
+ПОПОВИЋ ВЕСЕЛИН
+ПОПОВИЋ ВИДОЈЕ
+ПОПОВИЋ ВИДОСАВА
+ПОПОВИЋ ВИКТОРИЈА
+ПОПОВИЋ ВЛАДАН
+ПОПОВИЋ ВЛАДИМИР ДР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИСЛАВ
+ПОПОВИЋ ВЛАДО
+ПОПОВИЋ ВОЈИН
+ПОПОВИЋ ВОЈИН
+ПОПОВИЋ ВОЈИСЛАВ
+ПОПОВИЋ ВУЧИНА
+ПОПОВИЋ ВУЧКО
+ПОПОВИЋ ВУЈАДИН
+ПОПОВИЋ ВУКАДИН
+ПОПОВИЋ ВУКАДИН
+ПОПОВИЋ ВУКОСАВА
+ПОПОВИЋ ЗДЕНКО
+ПОПОВИЋ ЗДРАВКА
+ПОПОВИЋ ЗЛАТОЈА
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРКА
+ПОПОВИЋ ЗУЗАНА
+ПОПОВИЋ ЗВОНИМИР
+ПОПОВИЦКИ ЖАРКО
+ПОПОВИЦКИ БОРИСЛАВ
+ПОПОВИЦКИ ЈОВАНКА
+ПОПОВИЦКИ ЉУБОМИР
+ПОПОВИЦКИ МИЛЕНКО
+ПОПОВИЦКИ МИЛЕНКО
+ПОПОВИЦКИ МИЛИЦА
+ПОПОВИЦКИ МИЛОШ
+ПОПОВИЦКИ ПЕТАР
+ПОПОВИЦКИ РАДОМИР
+ПОПОВИЦКИ РАДОМИР
+ПОПОВИЦКИ САЛОМА
+ПОПОВИЦКИ СВЕТИСЛАВ
+ПОПОВИЦКИ ТАТЈАНА
+ПОПОВИЦКИ ТЕОДОР
+ПОПОВИЦКИ ВЛАДИСЛАВ
+ПОПОВИЦКИ ЗОРАН
+ПОПОВСКИ РАДОЈКА
+ПОПОВСКИ ВЕНКО
+ПОПРЖАН МИЛАН
+ПОПРЖАН НИКОЛА
+ПОПРЖАН ВАЛЕНТИНА
+ПОПРЖЕН БОРИВОЈ
+ПОПСАВИН ДУШАН
+ПОПСАВИН ВЕЛИМИР
+ПОПТЕШИН ЂОРЂЕ
+ПОПТЕШИН ЛАЗАР ДИПЛ ПРАВНИК
+ПОПТЕШИН МИЛАДИНКА
+ПОПТЕШИН СТЕВАН
+ПОРЧА ЉИЉАНА
+ПОРЧА РАМИЗ
+ПОРОШИН ДРАГИЊА
+ПОРОШИН ГЕОРГИЈЕ ДР ЛЕКАР
+ПОРОБИЋ МИЛАН
+ПОРОБИЋ МИРОСЛАВ
+ПОРОБИЋ МИРОСЛАВ
+ПОРОБИЋ НИЈАЗ
+ПОРОБИЋ НИКОЛА
+ПОРОБИЋ СЛОБОДАН
+ПОРОПАТ БОШКО
+ПОРОПАТИЋ ЗОРА
+ПОСАВАЦ ВЈЕКОСЛАВ
+ПОСЛАН ИВАН
+ПОСТОЛОВИЋ СТАНИМИР
+ПОТ ФРАЊА
+ПОТ ЈОСИП
+ПОТ МИРКО ДИПЛ ИНГ
+ПОТАИ ЛАДИСЛАВ
+ПОТХ ЉУДЕВИТ
+ПОТИЋ МАРИЈЕЛА
+ПОТИЋ РАДИВОЈЕ
+ПОТИЋ РАДОМИР
+ПОТКОЊАК ЈОВАН
+ПОТКОЊАК МАРА
+ПОТКОЊАК НИКОЛА
+ПОТКОЊАК ПЕТАР
+ПОТКОЊАК СОФИЈА
+ПОТКОЊАК СТАНКО
+ПОТКОЊАК СТЕВО
+ПОТКОЊАК ВЛАДО
+ПОТКОЗАРАЦ ЈУЛИЈАНА
+ПОТНЕР ТЕРЕЗИЈА
+ПОТОКОВИЋ АБДУЛАХ
+ПОТОКОВИЋ СМАЈО
+ПОТПАРИЋ ЈЕЛИЦА
+ПОТРАН МИША
+ПОТРЕБИЋ ЂУРО
+ПОТРЕБИЋ ДОБРИЛА
+ПОТРЕБИЋ ДРАГИЦА
+ПОТРЕБИЋ МИЛЕ
+ПОТРЕБИЋ МИЛЕ
+ПОТРЕБИЋ МИЛИЦА
+ПОТРЕБИЋ НИКОЛА
+ПОТРЕБИЋ РАДЕ
+ПОТРЕБИЋ СЛАВКО
+ПОТРЕБИЋ СОФИЈА
+ПОТУРИЋ СТЕВА
+ПОУЧКИ РАДИСЛАВ
+ПОВА МИРОСЛАВА
+ПОВАЖАН АНДРИЈА
+ПОВАЖАН МАРИЈА
+ПОВАЗАИ ИШТВАН
+ПОВАЗАИ ТИБОР
+ПОВИЋ МИЛАН
+ПОВРЖАН СИМО
+ПОЗДАН ЂУРО
+ПОЗДЕР ВЕРОНА
+ПОЗДЕРЕЦ ФРАНЦ
+ПОЗНАНОВИЋ ДЕЈАН
+ПОЗНАНОВИЋ ЈЕЛЕНА
+ПОЗНАНОВИЋ ЉУБОМИР
+ПОЗНАНОВИЋ МИЛАН
+ПОЗНАНОВИЋ МИЛАН
+ПОЗНАНОВИЋ МИЛЕНКО
+ПОЗНАНОВИЋ ОБРАД
+ПОЗНАНОВИЋ РАДИВОЈЕ
+ПОЗНИЋ ЂУРО
+ПОЗНИЋ ЈОВО
+ПОЗНИЋ МИРА
+ПОЗНИЋ НИКОЛА
+ПОЗОЈЕВИЋ КЛАРА
+ПОЗОЈЕВИЋ СТЕВАН
+ПРЧИЋ ЈЕЛИСАВЕТА
+ПРЧИЋ СТЈЕПАН
+ПРЧИЋ ТИХОМИР
+ПРЧИЋ ВЛАДИМИР
+ПРША МИРОСЛАВ МР
+ПРША ВЕРА
+ПРЋИЋ ИВАН
+ПРЖАР НАДА
+ПРЖЕВАЉСКИ НИКОЛА
+ПРЖНИЦА МИЛАНА
+ПРЖНИЦА ЗЛАТКО
+ПРАШЧЕВИЋ АНТОНИЈА
+ПРАШЧЕВИЋ ЗОРИЦА
+ПРАШТАЛО МИЛУТИН
+ПРАШТАЛО ПЕТАР
+ПРАЖИЋ БИЉАНА
+ПРАЖИЋ БРАНКО
+ПРАЦНЕР ЈОСИП
+ПРАЦНЕР РУЖИЦА
+ПРАЛИЦА ЉУБОМИР
+ПРАЛИЦА НЕДЕЉКО
+ПРАЛИЦА СТЕВАН
+ПРАЛИЦА СТЕВАН
+ПРАМЕНКО МИРОСЛАВ
+ПРАМЕНКО НЕДЕЉКО
+ПРАМЕНКО РИСТО
+ПРАМЕНКО СРЕТО
+ПРАНИЋ КАТИЦА
+ПРАНИЋ МИРКО
+ПРАНИЋ ПЕТАР
+ПРАНИЋ ТОФИЛ
+ПРАЊИЋ ЗЛАТКО
+ПРАЊКИЋ МАРКО
+ПРАНКИЋ МИЛЕ
+ПРАВДА БОРБАЛА
+ПРАВДА ЛАДИСЛАВ
+ПРАВДА ЛАЈОШ
+ПРАВИЦА ЕВИЦА
+ПРАВИЦА ЉУБОМИР
+ПРДИЋ НЕДЕЉКО
+ПРЕЧАНИЦА БОЖО
+ПРЕШЕРН ЈУЛИЈАНА
+ПРЕШОВА МИРЈАНА
+ПРЕБЕГ ДРАГАН
+ПРЕБИРЧЕВИЋ НЕВЕНА
+ПРЕБИРАЧЕВИЋ КРИСТИНА
+ПРЕБИРАЧЕВИЋ ЛАЗО
+ПРЕДА АУРЕЛ
+ПРЕДИЋ МИХАЈЛО
+ПРЕДИЋ РАДОМИР
+ПРЕДОЈЕВИЋ ЖЕЉКО
+ПРЕДОЈЕВИЋ АНКА
+ПРЕДОЈЕВИЋ БОЖО
+ПРЕДОЈЕВИЋ БОЖО
+ПРЕДОЈЕВИЋ БОРИСЛАВ
+ПРЕДОЈЕВИЋ ДАНИЦА
+ПРЕДОЈЕВИЋ ДРАГИЦА
+ПРЕДОЈЕВИЋ ЉУБОМИР
+ПРЕДОЈЕВИЋ ЛУКА
+ПРЕДОЈЕВИЋ МИЛАН
+ПРЕДОЈЕВИЋ МИЛЕ
+ПРЕДОЈЕВИЋ МИЛИЦА
+ПРЕДОЈЕВИЋ МИЛОРАД
+ПРЕДОЈЕВИЋ МИЛОВАН
+ПРЕДОЈЕВИЋ МИРКО
+ПРЕДОЈЕВИЋ НЕНАД
+ПРЕДОЈЕВИЋ ПАВЛЕ
+ПРЕДОЈЕВИЋ ПРЕДРАГ
+ПРЕДОЈЕВИЋ РАДОСЛАВА
+ПРЕДОЈЕВИЋ СИМА
+ПРЕДОЈЕВИЋ СИМО
+ПРЕДОЈЕВИЋ СТОЈАН
+ПРЕДОЈЕВИЋ ТРИВО
+ПРЕДОЈЕВИЋ ЗОРА
+ПРЕДОЛАЦ ДРАГОМИР
+ПРЕДОВИЋ ДУШАН
+ПРЕДРАШКИ ДРАГОЉУБ
+ПРЕДРАГОВИЋ БОРА
+ПРЕДРАГОВИЋ ДЕСИМИР
+ПРЕДРАГОВИЋ МАРИЈА
+ПРЕДРАГОВИЋ НОВАК
+ПРЕДРАГОВИЋ ВЕСЕЛКО
+ПРЕДРАГОВИЋ ВЕСНА
+ПРЕДРАГОВИЋ ЗВЕЗДАН ДИПЛ ИНГ
+ПРЕГУН ЂУРА
+ПРЕГУН НИКОЛА
+ПРЕГУН ПЕТАР
+ПРЕГУН СТЕВАН
+ПРЕГУН ЗОРА
+ПРЕКАЈАЦ ЖИВОЈИН
+ПРЕКАЈАЦ СЛАВКО
+ПРЕКАЈСКИ БРАНКО
+ПРЕКАЈСКИ МИРЈАН
+ПРЕКИЋ АНЂЕЛКА
+ПРЕКОДРАВАЦ НЕВЕНКА
+ПРЕКОГАЧИЋ ЂОРЂЕ
+ПРЕКОГАЧИЋ ДАНИЦА
+ПРЕКОГАЧИЋ ИЛИЈА
+ПРЕКОГАЧИЋ ВЕРА
+ПРЕКОП ЈОЖЕФ
+ПРЕКОП РАДОЈКА
+ПРЕКПАЉАЈ БИБА
+ПРЕКПАЉАЈ КОЉА
+ПРЕКПАЉАЈ МАРТИН
+ПРЕКПАЉАЈ ПЈЕТЕР
+ПРЕЛ МАРИЈА
+ПРЕЛЕВИЋ БОРИСЛАВ
+ПРЕЛЕВИЋ МАРКО
+ПРЕЛЕВИЋ МИЛАН
+ПРЕЛЕВИЋ МИЛОШ
+ПРЕЛЕВИЋ РАДОМИР
+ПРЕЛЕВИЋ СЕНКА
+ПРЕЛЕВИЋ ВАСИЛИЈЕ
+ПРЕЛИЋ МИЛОЈКА
+ПРЕЛИЋ ВАСА
+ПРЕЛИЋ ЗАГОРКА
+ПРЕМИЋ ПЕТАР
+ПРЕМИЋ ВАСА
+ПРЕМОВИЋ ДАНИЦА
+ПРЕМОВИЋ РАДОМИР
+ПРЕМОВИЋ ТОМИСЛАВ
+ПРЕМУШ ФРАЊА
+ПРЕМУЖИЋ ДАМИР
+ПРЕМУЖИЋ МАТО
+ПРЕМУЖИЋ ВЛАДИМИР
+ПРЕНДОВИЋ ПАЉУШ
+ПРЕНТОВИЋ ДРАГАН
+ПРЕНТОВИЋ ДРАГАН
+ПРЕНТОВИЋ МИЛАН
+ПРЕНТОВИЋ ПАВЛЕ
+ПРЕНТОВИЋ ПЕТАР
+ПРЕНТОВИЋ РИСТО
+ПРЕНТОВИЋ ВАСО
+ПРЕРАД ДОБРИЛА
+ПРЕРАДОВ ДИНКА
+ПРЕРАДОВ ДРАГИЦА
+ПРЕРАДОВ ДУБРАВКА
+ПРЕРАДОВ ГАВРА
+ПРЕРАДОВ ЛАЗАР
+ПРЕРАДОВ ЛЕПОСАВА
+ПРЕРАДОВ МАРИЈА
+ПРЕРАДОВ МИРЈАНА
+ПРЕРАДОВ МИРЈАНА
+ПРЕРАДОВ НЕДЕЉКО
+ПРЕРАДОВ ПЕТАР
+ПРЕРАДОВ САВА
+ПРЕРАДОВ ВЕЛИЗАР
+ПРЕРАДОВ ВЛАДИМИР
+ПРЕРАДОВИЋ АНА
+ПРЕРАДОВИЋ БОЈА
+ПРЕРАДОВИЋ МИЛЕНКО
+ПРЕРАДОВИЋ МЛАДЕН
+ПРЕРАДОВИЋ НЕДЕЉКО
+ПРЕРАДОВИЋ НЕДЕЉКО
+ПРЕСЕЧКОВИЋ ВЕСНА
+ПРЕТМЕРСКИ ЈОВАН
+ПРЕТМЕРСКИ СТЕВАН
+ПРЕВЕДЕН ЛЕО
+ПРГОМЕЉА НИКОЛА
+ПРИШИЋ КАТИЦА
+ПРИШИЋ ЛАЗАР
+ПРИШИЋ ЛИДИЈА
+ПРИШИЋ МИЛОШ
+ПРИШИЋ МИТА
+ПРИШИЋ НАТАЛИЈА
+ПРИШИЋ СТЕВАН
+ПРИБАКОВИЋ КСЕНИЈА
+ПРИБАКОВИЋ МИЛАНА
+ПРИБАКОВИЋ НИКОЛА
+ПРИБАНОВИЋ ТОМИСЛАВ
+ПРИБИЧЕВИЋ АРСЕНИЈЕ
+ПРИБИЧЕВИЋ САВКА
+ПРИБИЧЕВИЋ СВЕТОЗАР ДР ИНГ
+ПРИБИШ СТЕВАН
+ПРИБИШЕВ МИРЈАНА
+ПРИБИШИЋ ЉУБО
+ПРИБИШИЋ МИРОСЛАВ
+ПРИБИШИЋ РИСТИЊА
+ПРИБИШИЋ САВО
+ПРИБИЋ АРСЕНИЈЕ
+ПРИБИЋ ДАНИЛО
+ПРИБИЋ ДИМИТРИЈЕ
+ПРИБИЋ МАРИЈА
+ПРИБИЋ МИЛОЈЕ
+ПРИБИЋ САВА
+ПРИБИЋЕВИЋ ЈОВО
+ПРИБИЋЕВИЋ ОЛГА
+ПРИБИЋЕВИЋ ТАТЈАНА
+ПРИБИЛОВИЋ БРАНКИЦА
+ПРИЦА ЖИВКО
+ПРИЦА АЛЕКСАНДАР
+ПРИЦА БОРИВОЈ
+ПРИЦА БОСИЉКА
+ПРИЦА ДАНИЛО
+ПРИЦА ДУШАН
+ПРИЦА ИСО
+ПРИЦА ЈОВАНКА
+ПРИЦА МАРКО
+ПРИЦА МИЛЕ
+ПРИЦА МЛАДЕН
+ПРИЦА ПЕТАР
+ПРИЦА СОФИЈА
+ПРИЈЕВИЋ ЂОРЂЕ
+ПРИЈЕВИЋ МИЛАН
+ПРИЈИЋ МИЛАН
+ПРИЈИЋ МИРСАД
+ПРИЈОВИЋ БОГДАН
+ПРИЈОВИЋ ДРАГАН
+ПРИЈОВИЋ СТАНИША
+ПРИКЕЛ ПЕТАР
+ПРИКИДАНОВИЧ ЛАСЛО
+ПРИКИДАНОВИЋ АНА
+ПРИЉЕВА БОРИСЛАВ
+ПРИМОРАЦ НИКОЛА
+ПРИМОВИЋ БЛАГОЈЕ
+ПРИМОВИЋ ДЕЈАН
+ПРИМОВИЋ ДОБРИЦА
+ПРИМОВИЋ ГОРДАНА
+ПРИМОВИЋ КОВИНКА
+ПРИМОВИЋ МИЛАН
+ПРИМОВИЋ СТОЈАН
+ПРИНЦИП ЈОЗО
+ПРИСЕЛАЦ БОРИС
+ПРИСЕЛАЦ БРАНКО
+ПРИСЕЛАЦ ЗДРАВКО
+ПРИСЛАН ЗВОНИМИР
+ПРИСТАИ ЛАДИСЛАВ
+ПРИВРОДСКИ БОРИС ДР
+ПРИВРОДСКИ КОНСТАНТИН
+ПРКУШИЋ АНИЦА
+ПРКУШИЋ СЛАВКО
+ПРЛЕВИЋ СТОЈАН
+ПРЛИНАЦ ВЕЉКО
+ПРЉЕВИЋ НАДА
+ПРОЧИКЕВИЋ АНКА
+ПРОШИЋ БОГДАН
+ПРОШИЋ ЈОВАН
+ПРОШИЋ НЕЂО
+ПРОШИЋ НЕЂО
+ПРОШИЋ НЕБОЈША
+ПРОШИЋ НИКОЛА
+ПРОШИЋ ПЕТАР
+ПРОШИЋ СМИЉА
+ПРОБОЈЧЕВИЋ АНТУН
+ПРОБОЈЧЕВИЋ ЕРНЕСТ
+ПРОБОЈЧЕВИЋ МАРИЈА
+ПРОБОЈЧИЋ БРАНИСЛАВА
+ПРОДАНА КРСТАН
+ПРОДАНИЋ БОРИСЛАВ
+ПРОДАНИЋ МИЛАН
+ПРОДАНОВ АНЂЕЛКА
+ПРОДАНОВ БЛАГОЈА
+ПРОДАНОВ БОРА
+ПРОДАНОВ ДАНИЛО
+ПРОДАНОВ ДРАГОЉУБ
+ПРОДАНОВ ДРАГОЉУБ
+ПРОДАНОВ ДРАГОСЛАВ
+ПРОДАНОВ ДУШАН
+ПРОДАНОВ ГОРИЦА
+ПРОДАНОВ ИЛИЈА
+ПРОДАНОВ ЈОВАН
+ПРОДАНОВ ЈУСТИНА
+ПРОДАНОВ МИЛАН
+ПРОДАНОВ МИЛЕНА
+ПРОДАНОВ МИЛЕНКО
+ПРОДАНОВ МИОДРАГ
+ПРОДАНОВ МЛАДЕН
+ПРОДАНОВ НЕДЕЉКО
+ПРОДАНОВ РАДОСЛАВ
+ПРОДАНОВ САВА
+ПРОДАНОВ СЛАВКА ДР
+ПРОДАНОВ ЗУЗАНА
+ПРОДАНОВИЋ ШПИРО
+ПРОДАНОВИЋ ЖАРКО
+ПРОДАНОВИЋ ЖЕЉКО
+ПРОДАНОВИЋ ЖИВАН
+ПРОДАНОВИЋ ЖИВКА
+ПРОДАНОВИЋ ЖИВКО
+ПРОДАНОВИЋ ЂОКА
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂУРО
+ПРОДАНОВИЋ АЛЕКСАНДАР
+ПРОДАНОВИЋ АНЂЕЛКО
+ПРОДАНОВИЋ БИЉАНА
+ПРОДАНОВИЋ БОРИСЛАВ
+ПРОДАНОВИЋ БОСИЉКА
+ПРОДАНОВИЋ БРАНИМИР
+ПРОДАНОВИЋ ДАМЈАН
+ПРОДАНОВИЋ ДАНИЦА
+ПРОДАНОВИЋ ДАНИЦА
+ПРОДАНОВИЋ ДАНИЛКА
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДУШАНКА
+ПРОДАНОВИЋ ДУШАН
+ПРОДАНОВИЋ ДУШАН
+ПРОДАНОВИЋ ДУШИЦА
+ПРОДАНОВИЋ ГАВРА
+ПРОДАНОВИЋ ЈОВАНКА
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ КОСТА
+ПРОДАНОВИЋ КОСТА
+ПРОДАНОВИЋ ЛАЗАР ДИПЛ ИНГ
+ПРОДАНОВИЋ ЉУБИЦА
+ПРОДАНОВИЋ ЉУБИНКА
+ПРОДАНОВИЋ ЉУБОЈА
+ПРОДАНОВИЋ ЉУБОМИР
+ПРОДАНОВИЋ МАРТА
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛИЦА
+ПРОДАНОВИЋ МИЉКО
+ПРОДАНОВИЋ МИЛОРАД
+ПРОДАНОВИЋ МИЛОВАН
+ПРОДАНОВИЋ МИОДРАГ
+ПРОДАНОВИЋ МИОДРАГ
+ПРОДАНОВИЋ МИРА
+ПРОДАНОВИЋ МИРЈАНА
+ПРОДАНОВИЋ МИРОСЛАВ
+ПРОДАНОВИЋ МЛАДЕН
+ПРОДАНОВИЋ НИКОЛА
+ПРОДАНОВИЋ-ПАЊКОВИЋ ЂУРЂИНКА
+ПРОДАНОВИЋ ПАВА
+ПРОДАНОВИЋ ПАВЛЕ
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ РАДИСАВ
+ПРОДАНОВИЋ РАДОСЛАВ
+ПРОДАНОВИЋ РАТКО
+ПРОДАНОВИЋ РОДОЉУБ
+ПРОДАНОВИЋ САВА
+ПРОДАНОВИЋ СИНИША
+ПРОДАНОВИЋ СИНИША
+ПРОДАНОВИЋ СЛАВКО
+ПРОДАНОВИЋ СЛОБОДАН
+ПРОДАНОВИЋ СЛОБОДАН
+ПРОДАНОВИЋ СТАНА
+ПРОДАНОВИЋ ТАНАСИЈЕ
+ПРОДАНОВИЋ ВАСА
+ПРОДАНОВИЋ ВАСА
+ПРОДАНОВИЋ ВЕЛИНКА
+ПРОДАНОВИЋ ВЕЉКО
+ПРОДАНОВИЋ ВЕРА ДР
+ПРОДАНОВИЋ ВИДОСАВА
+ПРОДАНОВИЋ ВЛАДИМИР
+ПРОДАНОВИЋ ЗАГОРКА
+ПРОДАНОВИЋ ЗАГОРКА
+ПРОДАНОВИЋ ЗОРАН
+ПРОДИЋ ДАНИЦА
+ПРОДИЋ ВИДА
+ПРОДИЋ ВИТОМИР
+ПРОДИЋ ВИТОМИР
+ПРОФОНТАРОВИЋ РОЗАЛИЈА
+ПРОХАСКА МИЛЕНКО
+ПРОХАСКА НИКОЛА
+ПРОХАСКА СТЕВАН
+ПРОХАСКА ВЕРА
+ПРОЈКОВСКИ ДЕСПА
+ПРОКЕШ БЕЛА
+ПРОКЕШ ЛАДИСЛАВ
+ПРОКИЋ ЂОРЂЕ
+ПРОКИЋ ГОРАН
+ПРОКИЋ МИЛАН
+ПРОКИЋ МИРА
+ПРОКИЋ РУЖИЦА
+ПРОКИЋ СТЕВАН
+ПРОКИЋ СТЕВАН
+ПРОКИЋ ЗОРАН
+ПРОКИЋ ЗОРАН
+ПРОКИН АНЂЕЛКА
+ПРОКИН БРАНИСЛАВ
+ПРОКИН КСЕНИЈА
+ПРОКИН ЛАЗАР
+ПРОКИН МАРКО
+ПРОКИН МИРА
+ПРОКИН РАДИВОЈ
+ПРОКИН РУЖИЦА
+ПРОКИН СТЕВАН
+ПРОКИН СТЕВАН
+ПРОКИН ЗЛАТИНКА
+ПРОКИН ЗОРА
+ПРОКОПЕЦ ДУШАН
+ПРОКОПЕЦ ХЕЛЕНА
+ПРОКОПЕЦ ЈЕЛИСАВЕТА
+ПРОКОПЕЦ СТЕВАН
+ПРОКОПИЋ ЧЕДО
+ПРОКОПИЋ МИХАЈИЛО
+ПРОКОПИЋ СТОЈАН
+ПРОЛЕ ЦВИЈО
+ПРОЛЕ ЈАГОДА
+ПРОЛЕ МЕЛАНИЈА
+ПРОЛЕ МИЛЕНКО
+ПРОЛЕ МИЛИЈАНА
+ПРОЛЕ МИЛОШ
+ПРОЛЕ МИРКО
+ПРОЛЕ МИРОСЛАВ
+ПРОЛЕ МИТАР
+ПРОЛЕ МИТАР
+ПРОЛЕ МЛАДЕН
+ПРОЛЕ РАДОВАН
+ПРОЛЕ РИСТА
+ПРОЛЕ СТАНИСЛАВ
+ПРОЛЕ СТАНКО
+ПРОЛЕ УГЉЕША
+ПРОЛЕ ВЕЉКО
+ПРОЛЕ ВЕРОНА
+ПРОЛИЋ ДРАГИЦА
+ПРОЛИЋ МИЛОРАД
+ПРОЛИЋ ПЕРО
+ПРОЛИЋ ВИД
+ПРОСЕНИЦА МАРКО
+ПРОСЕНИЦА ВИДОСАВА
+ПРОСЕНИК ДУБРАВКО
+ПРОСЕНИК ЗВОНИМИР
+ПРОСТРАН ЧЕДОМИР
+ПРОСТРАН ПЕТАР
+ПРОТИЋ ЖАРКО
+ПРОТИЋ ЂОКА
+ПРОТИЋ ЂОРЂЕ
+ПРОТИЋ БОСИЉКА
+ПРОТИЋ БРАНИСЛАВ
+ПРОТИЋ ДРАГАН
+ПРОТИЋ ДУШАН
+ПРОТИЋ ИЛИЈА ДИПЛ ИНГ
+ПРОТИЋ ЈОСИМ
+ПРОТИЋ МАРИЈА
+ПРОТИЋ МИЛЕНА ДР СТОМАТОЛОГ
+ПРОТИЋ МИЛКА
+ПРОТИЋ-МИЛОШЕВИЋ СИМКА ПРОФ
+ПРОТИЋ МИЛОШ
+ПРОТИЋ МИЛОРАД
+ПРОТИЋ МИРЈАНА
+ПРОТИЋ МИТАР
+ПРОТИЋ НАДА
+ПРОТИЋ ОБРАД
+ПРОТИЋ ПРЕДРАГ
+ПРОТИЋ ПУНИША
+ПРОТИЋ РАДОМИР
+ПРОТИЋ САМУИЛО
+ПРОТИЋ СМИЉА
+ПРОТИЋ ВИДА
+ПРОТИЋ ВИТОМИР
+ПРОВЧИ АГАФИЈА
+ПРОВЧИ ЕВГЕНИЈЕ ДИПЛ ИНГ
+ПРОВЧИ ЈОВГЕН
+ПРОВЧИ ВЕРА
+ПРПА АНЂА
+ПРПА ГОСПА
+ПРПА ЛАЗАР
+ПРПА МАРГИТА
+ПРПА МИЛОВАН
+ПРПА ВЕЉКО
+ПРПА ЗАГОРКА
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ МАРИЈАНА
+ПРПИЋ НИКОЛА
+ПРПИЋ РАДОВАН
+ПРСКАЛО БЛАГО
+ПРСТОЈЕВИЋ ГОРАН
+ПРСТОЈЕВИЋ ВОЈИСЛАВ
+ПРТИНА БРАНКО
+ПРУЖАРЕВ ТАТЈАНА
+ПРУДАН-ЂУРИШИЋ РАДОЈКА ДР
+ПРУГИЋ ЉУБОМИР
+ПРУГИЋ ВОЈИСЛАВ
+ПРУГИНИЋ ЉУБИЦА
+ПРУНИЋ ЈОВАН
+ПРУСИНА ДРАГО
+ПРУСИНА ИЛИЈА
+ПРУСИНА МАРГИТА
+ПРУСИНА МИЛАН
+ПРУСИНА ВЛАТКО
+ПРВАНОВ БРАНИСЛАВ
+ПРВАНОВ ДАРИНКА
+ПРВАНОВ ДИВНА
+ПРВАНОВ МИЛОШ
+ПРВАНОВ ВЛАДИМИР
+ПРВАНОВИЋ МИЛЕВА
+ПСОДАРОВ БРАНКО
+ПСОДОРОВ МАЈА
+ПСОДОРОВ СПАСОЈЕ
+ПСОДОРОВ ТАМАРА
+ПТИЧАР ЂУРА
+ПТИЧАР МИЛАН
+ПУШАЦ БРАНКО
+ПУШАЦ ЈЕЛЕНКО
+ПУШАЦ МИЛЕНА
+ПУШАЦ МИЛЕНА
+ПУШАРА ЂОРЂЕ
+ПУШАРА БОЖИДАР
+ПУШАРА ДУШАН
+ПУШАРА ЈЕЛЕНА
+ПУШАРА МИЛИВОЈ
+ПУШАРА МИРКО
+ПУШАРА МИРОСЛАВ
+ПУШАРА РАДМИЛА
+ПУШЕЉИЋ ЈЕЛЕНА
+ПУШЕЊАК МАРИЈА
+ПУШИЋ ДРАГОЉУБ
+ПУШИЋ ДУШАН
+ПУШИЋ ЕМИЛ
+ПУШИЋ ГОРАН
+ПУШИЋ ЈОВАН
+ПУШИЋ ЉУБИНКО
+ПУШИЋ МИЛЕНА
+ПУШИЋ МИЛИЦА
+ПУШИЋ МИЛИВОЈ
+ПУШИЋ МИЛОШ
+ПУШИЋ НИКОЛА
+ПУШИЋ ОБРАД
+ПУШИЋ ПАВЛЕ
+ПУШИЋ САВА
+ПУШИЋ САВА
+ПУШИЋ СОФИЈА
+ПУШИЋ СТЕВАН
+ПУШИЋ ВЕРИЦА
+ПУШИЋ ВЕРИЦА
+ПУШИЋ ЗАГОРКА
+ПУШИБРК ЦВЕТКО
+ПУШИБРК ВАСА
+ПУШИН МИРЈАНА
+ПУШИН МИРОСЛАВ
+ПУШИН МИРОСЛАВ
+ПУШИН ВЛАДА
+ПУШКАШ ЂУРА
+ПУШКАШ ЂУРА
+ПУШКАШ ЦИЛА
+ПУШКАШ ЈОЖЕФ
+ПУШКАШ ЈОАКИМ
+ПУШКАШ ЈУЛИЈАН
+ПУШКАШ МИХАЈЛО
+ПУШКАШ МИЛЕНА
+ПУШКАШ МИРОСЛАВ
+ПУШКАШ ОЛЕНА
+ПУШКАШ ОНУФРИЈЕ
+ПУШКАШ ПЕТАР
+ПУШКАШ РОЗАЛИЈА
+ПУШКАШ СТЕВАН
+ПУШКАШ ВЕРА
+ПУШКАШ ВЛАДИМИР
+ПУШКАШ ВЛАДИМИР
+ПУШКАР ЈОВИЦА
+ПУШКАР СТЕВА
+ПУШКАР ВОЈИСЛАВ
+ПУШКАРЕВИЋ ЈОВАНКА
+ПУШКАРЕВИЋ СВЕТИСЛАВ
+ПУШКАРИЋ АНА
+ПУШКАРИЋ ИВАН
+ПУШКАРИЋ ЈУРЕ
+ПУШКАРИЋ МАРИЈА
+ПУШКАРОВ ДАНИЛКА
+ПУШКАРОВ ДАНИЛКА
+ПУШКАРОВ МИЛАН
+ПУШКАРОВ ЗОРА
+ПУШКОВИЋ АНЂЕЛКО
+ПУШТРИЋ МИЛАН
+ПУШТРИЋ СПАСОЈЕ
+ПУЖ-ЕВИЋ ОЛГА
+ПУЖИЋ ВЕРА
+ПУЂА ЛЕПОСАВА
+ПУАЧ СВЕТИСЛАВ
+ПУАЧ СВЕТОЗАР
+ПУАЧА ВЕЉКО ДР
+ПУЦАР ЂУРО
+ПУЦАР ДУШАН
+ПУЦАР МИЛИЦА
+ПУЦАР СТЕВО
+ПУЦАР ВАСИЛИЈЕ
+ПУЦАР ВАСО
+ПУЦАР ЗДРАВКО
+ПУЦАРЕВИЋ ЖИВКО
+ПУЦАРЕВИЋ БОСИЉКА
+ПУЦАРЕВИЋ ГОЈКО
+ПУЦАРЕВИЋ ХИЛДА
+ПУЦАРЕВИЋ ЈЕЛА
+ПУЦАРЕВИЋ НОВАК
+ПУЦАРЕВИЋ СОФИЈА
+ПУЦОВСКИ ЂУРО
+ПУДАР ДАНИЛО
+ПУДАР ГОЈКО
+ПУДАР РАЈКО
+ПУДАР РАНКО
+ПУДАР РАНКО
+ПУДАР РАНКО
+ПУДАР РАТКО
+ПУДАР СЛОБОДАН
+ПУДАР СТЕВАН
+ПУДАР ЗДРАВКО
+ПУДИЋ ИЛИЈА
+ПУДИЋ ЈОЗА
+ПУДРЉА БРАНКО
+ПУГАР АНЂЕЛКА
+ПУХАЧА СТЕВО
+ПУХАЛАК БЕРТА
+ПУХАЛАК ЛАСЛО ДР ЛЕКАР
+ПУХАЛАК СТЕВАН
+ПУХАН ОСКАР
+ПУХАНИЋ ТЕРЕЗА
+ПУХАР ДУШАН
+ПУХАР ФРАНЦ
+ПУИЋ ЂОРЂЕ
+ПУИЋ РАДОСЛАВ
+ПУЈА ФЛОРИН
+ПУЈИЋ МИЛИВОЈ
+ПУЈИЋ МИЛОШ
+ПУЈИЋ НАДЕЖДА
+ПУЈИЋ ПЕРСИДА ДИПЛ ИНГ
+ПУЈИЋ САВА
+ПУЈИЋ СТЕВАН
+ПУЈИН ЛАЗА
+ПУЈИН РАДЕ
+ПУЈИН РАДИВОЈЕ
+ПУЈИН СТЕВАН
+ПУЈИН ВЛАСТА ДР
+ПУЛАИ ЛАЈОШ
+ПУЛЕТИЋ ЗДРАВКО
+ПУЛИЋ АНТОНИЈА
+ПУЛИЋ ОЛГА
+ПУЛИЋ РАДОЈКА
+ПУЛИСАК ФРАЊА
+ПУЛИСАК ИЛОНКА
+ПУЛИСАК ЈОВАН
+ПУЛИСАК МИХАЈЛО
+ПУЛИСАК НАДЕЖДА
+ПУЛИСАК НИКОЛА
+ПУЉИЗЕВИЋ АНТУН ДИПЛ ИНГ
+ПУНДОВ АНДРЕЈ
+ПУНГУЛ ЈОВИЦА
+ПУНГУЛ МИРА
+ПУПАВАЦ ЂОРЂЕ
+ПУПАВАЦ БРАНКО
+ПУПАВАЦ БРАНКО
+ПУПАВАЦ ФРАЊА
+ПУПАВАЦ МИЛАН
+ПУПАВАЦ ПЕТАР
+ПУПАВАЦ СТАКА
+ПУПАВАЦ СТЕВАН
+ПУПАВАЦ СТОЈАН
+ПУПАВАЦ ТОДОР
+ПУПАВАЦ ВЕСНА
+ПУПИЋ РАДМИЛА
+ПУПИН ЖИВАН
+ПУПОВАЦ ДМИТАР
+ПУПОВАЦ ДУШАН
+ПУПОВАЦ ЛУКА
+ПУПОВАЦ МИЛОШ
+ПУПОВАЦ МИЛОШ
+ПУПОВАЦ СВЕТЛАНА
+ПУПОВАЦ ТОДОР
+ПУПОВИЋ ЉУБОМИР
+ПУРАЋ ЖИВКО
+ПУРАЋ БРАНКО
+ПУРАЋ ЕРЖЕБЕТ
+ПУРАЋ ЈОВАН
+ПУРАЋ ЛАЗАР
+ПУРАЋ МАГДА
+ПУРАЋ МИЛАДИН
+ПУРАЋ МИЛАДИН
+ПУРАЋ МИЛЕНКО
+ПУРАЋ МИРОСЛАВ
+ПУРАЋ НАДА
+ПУРАЋ ОЛГА
+ПУРИШИЋ ЧЕДО
+ПУРИШИЋ СВЕТЛАНА
+ПУРИЋ БЛАНКА
+ПУРИЋ БОЖО
+ПУРИЋ ДИЈАНА
+ПУРИЋ ДРАГАН
+ПУРИЋ ДРАГИЦА
+ПУРИЋ МИЛАН
+ПУРИЋ СЛОБОДАН
+ПУРИЋ ЗОРА
+ПУРКОВ ВЕСЕЛИН
+ПУРКОВИЋ ЉИЉАНА
+ПУРТИЋ НИКОЛА
+ПУСТАИ ИМРЕ
+ПУСТАИ ЈЕНЕ
+ПУСТАЈИЋ БРАНКА
+ПУСТАЈИЋ РАДА
+ПУСТАЈИЋ ВУКИЦА
+ПУСТИ ЈОСИП
+ПУТАРИЋ ЈОВАН
+ПУТИЋ ЖИВАНА
+ПУТИЋ КАТИЦА
+ПУТИЋ ЛИВИЈА
+ПУТИЋ СЛОБОДАН
+ПУТИЋ СВЕТИСЛАВ
+ПУТИЋ ЗОРАН
+ПУТНИК АЛЕКСАНДАР
+ПУТНИК АЛЕКСАНДАР
+ПУТНИК БОРИСЛАВ
+ПУТНИК БРАНКО
+ПУТНИК ДАНИЛКА
+ПУТНИК ДИМИТРИЈЕ
+ПУТНИК ГЕРТРУДА
+ПУТНИК ГОРАН
+ПУТНИК ИВАН
+ПУТНИК ЈЕЛЕНА
+ПУТНИК КАТИЦА
+ПУТНИК КСЕНИЈА
+ПУТНИК ЉУБИЦА
+ПУТНИК МИЛАН
+ПУТНИК МИЛАН
+ПУТНИК МИЛЕНА
+ПУТНИК МИЛОРАД
+ПУТНИК НЕВЕНКА
+ПУТНИК ПАЈО
+ПУТНИК ПЕТАР
+ПУТНИК ПЕТАР
+ПУТНИК РАДЕ
+ПУТНИК РАДОМИР
+ПУТНИК РАДОВАН
+ПУТНИК СЛОБОДАН ДИПЛ ИНГ
+ПУТНИК СНЕЖАНА
+ПУТНИК СТЕФАНИЈА
+ПУТНИК СТЕВАН
+ПУТНИК СТЕВАН
+ПУТНИК-УРАЧ РЕНАТА
+ПУТНИК ВЛАДИМИР ДР
+ПУТНИК ВЛАДИМИР
+ПУТНИК ЗОРАН
+ПУТНИКОВИЋ ИВАН
+ПУТНИКОВИЋ МИЛЕНА
+ПУТНИКОВИЋ ПИРОШКА
+ПУВАЧА ЉИЉАНА
+ПУВАЛИЋ КАТИЦА
+ПУЗИЋ БИЉАНА
+ПУЗИЋ БОШКО
+ПУЗИЋ БОСА
+ПУЗИЋ ДРАГОМИР
+ПУЗИЋ САВА
+ПУЗИЋ ВЕЉКО
+ПУЗИГАЋА КРИСТИНА
+РАЧИЋ АРАНЂЕЛ
+РАЧИЋ ЛЕПОСАВА
+РАЧИЋ МИЛОШ
+РАЧИЋ МИРОСЛАВ
+РАЧИЋ НАДА
+РАЧИЋ РАНКО
+РАЧИЋ САША
+РАЧИЋ-САВИН ЗОРИЦА
+РАЧИЋ СТОЈАН
+РАЧИЋ ТОМИСЛАВ
+РАЧИЋ ВЕРА
+РАЧИЋ ЗДРАВКО
+РАШЧАНИН БРАНИСЛАВ
+РАШЧАНИН БРАНИСЛАВ
+РАШЧИЋ НЕХРУ
+РАША ДОЈНА
+РАШАЈСКИ ДУШАН
+РАШАЈСКИ ВЕРОСЛАВ
+РАШЕТА ДАНЕ
+РАШЕТА МИОДРАГ
+РАШЕТА МИРЈАНА
+РАШЕТА НИКОЛА
+РАШЕТА ПЕТАР
+РАШЕТА СТЕВА
+РАШЕТА ТОМА
+РАШЕТА ЗДРАВКО
+РАШЕВИЋ ЖАРКО
+РАШЕВИЋ ЖЕЉКО
+РАШЕВИЋ МИОДРАГ
+РАШИЋ БОЖИДАР ДР
+РАШИЋ ДИМИТРИЈЕ
+РАШИЋ ДУШИЦА
+РАШИЋ ИБОЈКА
+РАШИЋ ИГЊАТ
+РАШИЋ ИЛИЈА
+РАШИЋ-КОПЧОК НАДА
+РАШИЋ ЛАЗАР
+РАШИЋ МАНДА
+РАШИЋ МАРИЈА
+РАШИЋ НАДЕЖДА
+РАШИЋ НИКОЛА
+РАШИЋ ПАУН
+РАШИЋ ПЕТАР МР ИНГ
+РАШИЋ СМИЉА
+РАШИЋ СТОЈАН
+РАШИЋ УРОШ
+РАШИЋ ВЕСНА
+РАШИДИ ДОРОТЕЈА
+РАШИДИ СЛОБОДАНКА
+РАШИЈОВАН РАДМИЛА
+РАШИТИ БАЈРАМ
+РАШИТИ ХАВА
+РАШИТИ ИМЕР
+РАШКОВ БРАНКО
+РАШКОВ БРАНКО
+РАШКОВ ДАНИЦА
+РАШКОВ МАРИЈА
+РАШКОВ СМИЉКА
+РАШКОВИЋ ЂОРЂЕ
+РАШКОВИЋ ЂОРЂЕ
+РАШКОВИЋ ДАРИНКА
+РАШКОВИЋ ДРАГАН
+РАШКОВИЋ ДРАГОЉУБ
+РАШКОВИЋ ДРАГОСЛАВА
+РАШКОВИЋ ГОРДАНА
+РАШКОВИЋ МИЛАН
+РАШКОВИЋ МИЛИЦА
+РАШКОВИЋ МИОДРАГ
+РАШКОВИЋ МИРЈАНА
+РАШКОВИЋ МИРЈАНА
+РАШКОВИЋ МЛАДЕН
+РАШКОВИЋ РАДОСАВ
+РАШКОВИЋ СЛОБОДАН
+РАШКОВИЋ СРЕЋКО
+РАШКОВИЋ СТЕВАН
+РАШКОВИЋ ВЕРА
+РАШКОВИЋ ВЛАДИМИР
+РАШОВИЋ РАДОВАН
+РАШОВИЋ ВОЈИСЛАВ
+РАЖНАТОВИЋ РАДИВОЈ
+РАЂЕЛИЋ ГОРДАНА
+РАЂЕЛИЋ МИЛАН
+РАЂЕНОВИЋ ЖЕЉКО
+РАЂЕНОВИЋ ЖЕЉКО
+РАЂЕНОВИЋ БОЖО
+РАЂЕНОВИЋ БОРИС
+РАЂЕНОВИЋ БОСА
+РАЂЕНОВИЋ БРАНКО
+РАЂЕНОВИЋ ДРАГА
+РАЂЕНОВИЋ ДУШАН
+РАЂЕНОВИЋ ДУШАН
+РАЂЕНОВИЋ КАРЛО
+РАЂЕНОВИЋ МАНЕ
+РАЂЕНОВИЋ МИЛАНКО
+РАЂЕНОВИЋ МИЛЕВА
+РАЂЕНОВИЋ МИЛКА
+РАЂЕНОВИЋ МИЛКА
+РАЂЕНОВИЋ НЕБОЈША
+РАЂЕНОВИЋ НИКОЛА
+РАЂЕНОВИЋ СОФИЈА
+РАЂЕНОВИЋ УРОШ
+РАЂЕНОВИЋ ВЕЉКО
+РАЂЕНОВИЋ ЗОРИЦА
+РАЂЕВИЋ САВО
+РАБАЏИЈЕВСКИ ПАУЛА
+РАБАТИЋ МИЛОШ
+РАБИ ЈОЖЕФ
+РАБИЈАЦ СРБА
+РАБРЕНОВИЋ МАРИЈА
+РАБРЕНОВИЋ РАДИСАВ
+РАБРЕНОВИЋ ЗЛАТИНКА
+РАЦ ШАНДОР
+РАЦ АЛБЕРТ
+РАЦ АНА
+РАЦ БРУНО
+РАЦ ЕДМУНД
+РАЦ ФЕРЕНЦ
+РАЦ ФЕРЕНЦ
+РАЦ ФРАЊА
+РАЦ ГАБРИЈЕЛ
+РАЦ ЈАНОШ
+РАЦ ЈЕЛИСАВЕТА
+РАЦ ЈОВАН
+РАЦ ЉИЉАНА
+РАЦ ЉУБОМИР
+РАЦ МАРИЈА
+РАЦ МАРИЈА
+РАЦ МЕЛАНИЈА
+РАЦ ПАЛ
+РАЦ РУДОЛФ
+РАЦ-САБО ЛАЈОШ
+РАЦ СТЕВАН
+РАЦ ТЕОДОР
+РАЦ ВЛАДИМИР
+РАЦ ЗЛАТА
+РАЦА ЂУРО
+РАЦА ДРАГАН
+РАЦА ДРАГАН
+РАЦА ДРАГАН
+РАЦА ДУШАН
+РАЦА ГОРДАНА ДР
+РАЦА МИРКО
+РАЦА ПЕТАР
+РАЦА РУЖИЦА
+РАЦИЋ ЧЕДОМИР
+РАЦИЋ БРАНКО
+РАЦИЋ ДУШАН
+РАЦИЋ МИЛАН
+РАЦИЋ МИЛЕНКО
+РАЦИЋ МИЛИЦА
+РАЦИЋ МИЛИЦА
+РАЦИЋ МИЛОРАД
+РАЦИЋ МИРЈАНА
+РАЦИЋ НЕДЕЉКО
+РАЦИЋ РАДЕНКО
+РАЦИЋ СЛОБОДАН
+РАЦИЋ СЛОБОДАН
+РАЦИЋ ВЕЉКО
+РАЦИЋ ЗДРАВКО
+РАЦИЋ ЗДРАВКО
+РАЦИЋ ЗОРАН
+РАЦКОВ ДАРИНКА
+РАЦКОВ ДРАГОСЛАВ
+РАЦКОВ КАТИЦА
+РАЦКОВ ЛАЗАР
+РАЦКОВ МИЛИЦА
+РАЦКОВ МИЛИВОЈ
+РАЦКОВ МИЛОШ
+РАЦКОВ МИРОСЛАВ
+РАЦКОВ МИРОСЛАВ
+РАЦКОВ НАТАША
+РАЦКОВ ОЛГА
+РАЦКОВ РАДОЈКА
+РАЦКОВ РАДОМИР
+РАЦКОВ РАДОСЛАВ
+РАЦКОВ САВА
+РАЦКОВ СЛОБОДАН
+РАЦКОВ СРЂАН
+РАЦКОВ СРЂАН
+РАЦКОВ СРЂАН
+РАЦКОВ ЗЛАТИЦА
+РАЦКОВИЋ ЂОРЂЕ
+РАЦКОВИЋ ДРАГОМИР
+РАЦКОВИЋ ДУШАН
+РАЦКОВИЋ ЛАЗАР
+РАЦКОВИЋ МИЛАН
+РАЦКОВИЋ МИЛОШ
+РАЦКОВИЋ МИРЈАНА
+РАЦЛЕР ЂЕРЂ
+РАЦЛЕР МАРГИТ
+РАЦО МИЋО
+РАЦО РАТКО
+РАД ПРЕДРАГ
+РАДАШИН ЕЛВИРА
+РАДАШИН ВЛАДИМИР
+РАДАШИН ЗВЕЗДАН
+РАДАК ЂОРЂЕ
+РАДАК ЂУРИЦА
+РАДАК ДУШАН
+РАДАК ДУШАН
+РАДАК ГАВРА
+РАДАК ЈЕЛИСАВЕТА
+РАДАК ЈОВАНКА
+РАДАК ЈОВАН
+РАДАК КОВИНКА
+РАДАК ЛАЗАР
+РАДАК ЛАЗАР
+РАДАК ЉУБИЦА
+РАДАК ЉУБИЦА
+РАДАК ЛУКА
+РАДАК МИЛАДИНКА
+РАДАК МИРОСЛАВ
+РАДАК ОЛГА
+РАДАК РАДМИЛА
+РАДАК СЛАВКО
+РАДАК ЗОРА
+РАДАКОВИЋ ЖИВАН
+РАДАКОВИЋ ЂОРЂЕ
+РАДАКОВИЋ ЂОРЂЕ
+РАДАКОВИЋ ЂУРАЂ
+РАДАКОВИЋ АЛЕКСАНДАР
+РАДАКОВИЋ АНА ДР
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ ДАМЈАН
+РАДАКОВИЋ ДАРКА
+РАДАКОВИЋ ДИМИТРИЈЕ
+РАДАКОВИЋ ДУШАН
+РАДАКОВИЋ ДУШАН
+РАДАКОВИЋ ИЛИЈА
+РАДАКОВИЋ ИЛИЈА
+РАДАКОВИЋ ЈЕЛЕНА
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЛАЗО
+РАДАКОВИЋ ЉИЉАНА
+РАДАКОВИЋ МАНДА
+РАДАКОВИЋ МАНЕ
+РАДАКОВИЋ МИЛАНКО
+РАДАКОВИЋ МИЛАН
+РАДАКОВИЋ МИЛЕНА
+РАДАКОВИЋ МИЛЕ
+РАДАКОВИЋ МИЛЕ
+РАДАКОВИЋ МИЛОЈКА
+РАДАКОВИЋ МИЛОРАД
+РАДАКОВИЋ МИРОСЛАВ
+РАДАКОВИЋ НЕНАД
+РАДАКОВИЋ ПЕТАР
+РАДАКОВИЋ РАДЕ
+РАДАКОВИЋ РАДЕ
+РАДАКОВИЋ РАЈКО
+РАДАКОВИЋ РУЖИЦА
+РАДАКОВИЋ САВА
+РАДАКОВИЋ СМИЉКА
+РАДАКОВИЋ ТЕОДОРА
+РАДАКОВИЋ ВЛАДИМИР
+РАДАКОВИЋ ВЛАДИСЛАВ
+РАДАН ВЕЛИМИР
+РАДАНОВ БИЉАНА
+РАДАНОВ ДРАГОМИР
+РАДАНОВ ДУШАН
+РАДАНОВ ГОСПАВА
+РАДАНОВ ЉУБОМИР АДВОКАТ
+РАДАНОВ ЉУБОМИР
+РАДАНОВ МИРОСЛАВА
+РАДАНОВ НИКОЛА
+РАДАНОВ ОЛИВЕРА
+РАДАНОВ РАДИНКА
+РАДАНОВ РАДИВОЈ
+РАДАНОВ РАДОСЛАВ
+РАДАНОВ ВЕРИЦА
+РАДАНОВИЋ ЖЕЉКО
+РАДАНОВИЋ ЂОРЂЕ
+РАДАНОВИЋ ЂОРЂЕ
+РАДАНОВИЋ ЂУКА
+РАДАНОВИЋ АЛЕКСАНДАР
+РАДАНОВИЋ АНЂЕЛКО
+РАДАНОВИЋ БОЖИДАР
+РАДАНОВИЋ ДИМИТРИЈЕ
+РАДАНОВИЋ ДРАГАН
+РАДАНОВИЋ ДРАГИЦА
+РАДАНОВИЋ ДРАГОМИР
+РАДАНОВИЋ ДРАГОМИР
+РАДАНОВИЋ ДРАГУТИН
+РАДАНОВИЋ ГОЈКО
+РАДАНОВИЋ ИЛИЈА
+РАДАНОВИЋ ЈОВАНКА
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ КАТА
+РАДАНОВИЋ КОВИЉКА
+РАДАНОВИЋ ЉУБО
+РАДАНОВИЋ МАРИЈА
+РАДАНОВИЋ МИЛАНКО
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛЕНКО
+РАДАНОВИЋ МИЛОШ
+РАДАНОВИЋ МИОДРАГ
+РАДАНОВИЋ МИОДРАГ
+РАДАНОВИЋ НЕВЕНКА
+РАДАНОВИЋ НИКОЛА
+РАДАНОВИЋ НИКОЛА
+РАДАНОВИЋ ОБРАД
+РАДАНОВИЋ ПЕТАР
+РАДАНОВИЋ ПЕТАР
+РАДАНОВИЋ РАДИВОЈ
+РАДАНОВИЋ РАДОВАНКА
+РАДАНОВИЋ РАДОВАН
+РАДАНОВИЋ РАЈКО
+РАДАНОВИЋ САША
+РАДАНОВИЋ САВА
+РАДАНОВИЋ СОФИЈА
+РАДАНОВИЋ СОФИЈА
+РАДАНОВИЋ СРЕТЕН
+РАДАНОВИЋ ТРИША
+РАДАНОВИЋ ВИТОМИР
+РАДАТ МАРКО
+РАДАТОВИЋ МАРИЈА
+РАДЕК АНДРАШ
+РАДЕК МАРИЈА
+РАДЕКА ШТЕФКА
+РАДЕКА ДУШКО
+РАДЕКА ЈОВАН
+РАДЕКА МИЛЕ
+РАДЕКА МИЛКА
+РАДЕКА НИКОЛА
+РАДЕКА РАДОВАН
+РАДЕКИН ЉУБИЦА
+РАДЕЛИЋ МИЛАН
+РАДЕНЧИЋ ЈОСИП
+РАДЕНКОВИЋ ЧЕДОМИР
+РАДЕНКОВИЋ ЖИВОЈИН
+РАДЕНКОВИЋ БЛАЖА
+РАДЕНКОВИЋ ДРАГАН
+РАДЕНКОВИЋ ЛЕПОСАВА
+РАДЕНКОВИЋ ЉУБИША
+РАДЕНКОВИЋ МИЛИВОЈЕ
+РАДЕНКОВИЋ МИЛОВАН
+РАДЕНКОВИЋ МИЛОВАН
+РАДЕНКОВИЋ МИОДРАГ
+РАДЕНКОВИЋ НАДА
+РАДЕНКОВИЋ РАДОМИР
+РАДЕНКОВИЋ РАДОСЛАВА
+РАДЕНКОВИЋ РАТОМИР
+РАДЕНКОВИЋ РОЗАЛИЈА
+РАДЕНКОВИЋ СЛОБОДАН
+РАДЕНКОВИЋ ТОМИСЛАВ
+РАДЕНКОВИЋ ВИТОМИР
+РАДЕНКОВИЋ ВЈЕРА
+РАДЕНОВИЋ ОБРЕН
+РАДЕТА СЛАВКО
+РАДЕТА СВЕТОЗАР
+РАДЕТИЋ БОШКО
+РАДЕТИЋ БРАНКО
+РАДЕТИЋ ГОРАН
+РАДЕТИЋ РАДОМИР
+РАДЕТИЋ ВОЈИСЛАВ
+РАДЕВИЋ ЂОРЂЕ
+РАДЕВИЋ ГОРАН
+РАДЕВИЋ ИВАН
+РАДЕВИЋ МИЛЕВА
+РАДЕВИЋ МИЛОШ
+РАДЕВИЋ ВОЈИМИР
+РАДИЧЕВ ЈЕЛИЦА
+РАДИЧЕВ МАРИЈА ДР
+РАДИЧЕВИЋ РАДМИЛА
+РАДИЧЕВИЋ САВА
+РАДИЧЕВИЋ ЗОРАН
+РАДИЧИЋ СМИЉАНА
+РАДИШИЋ ЖИВКО
+РАДИШИЋ ЂОРЂЕ
+РАДИШИЋ АНЂЕЛКА
+РАДИШИЋ БИЉАНА
+РАДИШИЋ БОРИСЛАВ
+РАДИШИЋ БОРИСЛАВ
+РАДИШИЋ БРАНИСЛАВ
+РАДИШИЋ БРАНКА
+РАДИШИЋ БРАНКО
+РАДИШИЋ ДРАГИША
+РАДИШИЋ ДРАГУТИН
+РАДИШИЋ ДУШАН
+РАДИШИЋ ДУШИЦА
+РАДИШИЋ ИЛИЈА
+РАДИШИЋ ЈЕФТА
+РАДИШИЋ ЈЕЛЕНА
+РАДИШИЋ ЈОВАН
+РАДИШИЋ ЈОВО
+РАДИШИЋ КАТИЦА
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЉИЉАНА
+РАДИШИЋ ЉУБИЦА
+РАДИШИЋ МАРКО
+РАДИШИЋ МИЛАН
+РАДИШИЋ МИЛЕНА
+РАДИШИЋ МИЛЕНКО
+РАДИШИЋ МИЛИЦА
+РАДИШИЋ МИЛИЈАНА
+РАДИШИЋ МИЛУТИН
+РАДИШИЋ МИРОСЛАВА
+РАДИШИЋ МЛАДЕН
+РАДИШИЋ НЕНА
+РАДИШИЋ НИКОЛА
+РАДИШИЋ ОБРАДИН
+РАДИШИЋ ОЛИВЕРА
+РАДИШИЋ ПЕРИЦА
+РАДИШИЋ ПЕРО
+РАДИШИЋ ПЕРСА
+РАДИШИЋ ПЕТАР
+РАДИШИЋ РАДИВОЈ
+РАДИШИЋ РАДМИЛА
+РАДИШИЋ РАДОЈКА
+РАДИШИЋ САВЕТА
+РАДИШИЋ СЛОБОДАН
+РАДИШИЋ СТАНОЈЕ
+РАДИШИЋ СТЕВАН
+РАДИШИЋ СТЕВАН
+РАДИШИЋ СВЕТОЗАР
+РАДИШИЋ ТОДОР
+РАДИШИЋ ВЛАДИМИР
+РАДИШИЋ ВЛАДИМИР
+РАДИШИЋ ЗОРАН
+РАДИЋ ЧЕДА
+РАДИЋ ЖЕЉКО
+РАДИЋ ЖИВАН
+РАДИЋ ЂОРЂЕ
+РАДИЋ ЂОРЂЕ
+РАДИЋ АНЂА
+РАДИЋ АНЂЕЛКО
+РАДИЋ АНДРИЈА ДР
+РАДИЋ АНГЕЛИНА
+РАДИЋ АНКИЦА
+РАДИЋ АНТЕ
+РАДИЋ БОШКО
+РАДИЋ БРАНКА
+РАДИЋ ДОБРИВОЈЕ
+РАДИЋ ДРАГОЉУБ
+РАДИЋ ДУШАН
+РАДИЋ ДУШАН
+РАДИЋ ФРАЊА
+РАДИЋ ФРАЊО
+РАДИЋ ГОЈКО
+РАДИЋ ХРАНИСЛАВ
+РАДИЋ ИЛИЈА
+РАДИЋ ИЛИЈА
+РАДИЋ ИВАНКА
+РАДИЋ ЈОСИП
+РАДИЋ ЈОВАН
+РАДИЋ ЛАЗАР
+РАДИЋ ЉУБИЦА
+РАДИЋ ЉУБОМИР
+РАДИЋ МАРИЈА
+РАДИЋ МИЈА
+РАДИЋ МИЛАНКО
+РАДИЋ МИЛАН
+РАДИЋ МИЛАН
+РАДИЋ МИЛЕ
+РАДИЋ МИЛИВОЈ
+РАДИЋ МИЛИВОЈ
+РАДИЋ МИЛКА
+РАДИЋ МИЛУТИН ДИПЛ ИНГ
+РАДИЋ МИРЈАНА
+РАДИЋ МИРКО
+РАДИЋ МЛАДЕН
+РАДИЋ НЕДЕЉКО
+РАДИЋ НЕНАД
+РАДИЋ ПАВЛЕ
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ-ПОПОВИЋ ГОРДАНА
+РАДИЋ ПРЕДРАГ
+РАДИЋ РАДА
+РАДИЋ РАДЕ
+РАДИЋ РОБЕРТ
+РАДИЋ САВА
+РАДИЋ СЛАВИША
+РАДИЋ СЛАВКО
+РАДИЋ СОФИЈА
+РАДИЋ СТАНКО
+РАДИЋ СТЕВАН
+РАДИЋ СТЕВАН
+РАДИЋ СТОЈАН
+РАДИЋ ТИХОМИР
+РАДИЋ ТРИВА
+РАДИЋ ВЕЛИНКА
+РАДИЋ ВЛАДИМИР
+РАДИЋ ЗДРАВКО
+РАДИЋ ЗОРАН
+РАДИЋ ЗОРА
+РАДИЋ ЗОРИЦА
+РАДИБРАТОВИЋ МИЛИЦА
+РАДИБРАТОВИЋ МОМЧИЛО
+РАДИЈЕЉАЦ ЈЕЛЕНА
+РАДИЈЕЉАЦ МОМЧИЛО
+РАДИН ЖИВАН
+РАДИН АЛЕКСАНДАР
+РАДИН АНТОНИЈА
+РАДИН БРАНИСЛАВ
+РАДИН БРАНИСЛАВ
+РАДИН БРАНКО
+РАДИН ДРАГОЈЛА
+РАДИН ХРИСТИНА
+РАДИН ИВАНКА
+РАДИН ЈОВАНКА
+РАДИН ЛАЗАР
+РАДИН ЉУБОМИР ДР ЛЕКАР
+РАДИН ЉУБОМИР
+РАДИН МАКСИМИЛИЈАН
+РАДИН МАРА
+РАДИН МИЛАДИНКА
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛЕНА
+РАДИН МИЛКА
+РАДИН МИРА
+РАДИН МИРОСЛАВ
+РАДИН МЛАДЕН
+РАДИН НАДА
+РАДИН НИКОЛА ДИПЛ ИНГ
+РАДИН ПЕТАР ДР
+РАДИН РАДА
+РАДИН РАДОСЛАВ
+РАДИН СЛАВИНКА
+РАДИН СЛАВКО
+РАДИН СТЕВАН
+РАДИН СТЕВАН
+РАДИН СВЕТИСЛАВ
+РАДИН ТОМИСЛАВ
+РАДИН ВЕСЕЛИН
+РАДИН ВЛАДИМИР
+РАДИН ЗЛАТОЈЕ
+РАДИН ЗОРАНКА
+РАДИН ЗОРА
+РАДИНОВИЋ ЂОРЂЕ
+РАДИНОВИЋ БУДИМИР
+РАДИНОВИЋ ДИМИТРИЈЕ
+РАДИНОВИЋ ДУШКО
+РАДИНОВИЋ ИЛИЈА
+РАДИНОВИЋ ЛАЗО
+РАДИНОВИЋ МАНОЈЛО
+РАДИНОВИЋ МАРИЈА
+РАДИНОВИЋ МИЛИЦА
+РАДИНОВИЋ МИЛИВОЈ
+РАДИНОВИЋ МИЛОРАД
+РАДИНОВИЋ МИРА
+РАДИНОВИЋ МЛАДЕН
+РАДИНОВИЋ МОМЧИЛО ДИПЛ ПРАВНИК
+РАДИНОВИЋ МОМЧИЛО
+РАДИНОВИЋ НИКОЛА
+РАДИНОВИЋ РАДОСЛАВ
+РАДИНОВИЋ СИЛВАНА
+РАДИНОВИЋ СТЕВАН
+РАДИНОВИЋ ВУКАШИН
+РАДИСАВЉЕВИЋ ЖИВОРАД
+РАДИСАВЉЕВИЋ БОГДАН
+РАДИСАВЉЕВИЋ БОРИВОЈЕ
+РАДИСАВЉЕВИЋ ИВАН
+РАДИСАВЉЕВИЋ МИЛОСАВ
+РАДИСАВЉЕВИЋ СЛАВИЦА
+РАДИСАВЉЕВИЋ СТАНИША
+РАДИСАВЉЕВИЋ ЗОРИЦА ДР
+РАДИВОЈША МИЛОШ
+РАДИВОЈША СМИЉА
+РАДИВОЈАЦ ДОБРИЛА
+РАДИВОЈАЦ ДРАГА
+РАДИВОЈАЦ ДРАГОЉУБ
+РАДИВОЈАЦ ЈОВАН
+РАДИВОЈАЦ НАТАЛИЈА
+РАДИВОЈЕВ РАДИНКА
+РАДИВОЈЕВИЋ АНЂЕЛКО
+РАДИВОЈЕВИЋ БОГОЉУБ
+РАДИВОЈЕВИЋ БРАНИСЛАВ
+РАДИВОЈЕВИЋ БРАНКО
+РАДИВОЈЕВИЋ БРАТИМИР
+РАДИВОЈЕВИЋ ДРАГАН МР
+РАДИВОЈЕВИЋ ДРАГИША
+РАДИВОЈЕВИЋ ДРАГОМИР
+РАДИВОЈЕВИЋ ДРАГОСЛАВ
+РАДИВОЈЕВИЋ ДУШАН ДИПЛ ОЕЦ
+РАДИВОЈЕВИЋ ДУШАНКА
+РАДИВОЈЕВИЋ ИДА
+РАДИВОЈЕВИЋ ЈАНКО
+РАДИВОЈЕВИЋ ЈЕЛА
+РАДИВОЈЕВИЋ ЈОВАНКА
+РАДИВОЈЕВИЋ ЈОВАН
+РАДИВОЈЕВИЋ ЉУБИЦА
+РАДИВОЈЕВИЋ ЉУБОДРАГ
+РАДИВОЈЕВИЋ ЉУБОМИР
+РАДИВОЈЕВИЋ ЉУБОМИР
+РАДИВОЈЕВИЋ ЛУКА
+РАДИВОЈЕВИЋ ЛУКА
+РАДИВОЈЕВИЋ МИЛАН
+РАДИВОЈЕВИЋ МИЛА
+РАДИВОЈЕВИЋ МИЛЕ
+РАДИВОЈЕВИЋ МИЛИВОЈЕ
+РАДИВОЈЕВИЋ МИЛОМИР
+РАДИВОЈЕВИЋ МИРЈАНА
+РАДИВОЈЕВИЋ МЛАДЕН
+РАДИВОЈЕВИЋ МОМЧИЛО
+РАДИВОЈЕВИЋ НЕЂО
+РАДИВОЈЕВИЋ НЕМАЊА
+РАДИВОЈЕВИЋ НИКОЛА
+РАДИВОЈЕВИЋ ПАВЛЕ
+РАДИВОЈЕВИЋ РАДИША
+РАДИВОЈЕВИЋ РАДИВОЈЕ
+РАДИВОЈЕВИЋ РАДОШ
+РАДИВОЈЕВИЋ РАТКО
+РАДИВОЈЕВИЋ СИНИША
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СТЕВАН
+РАДИВОЈЕВИЋ СТОЈАДИН
+РАДИВОЈЕВИЋ ТОМИСЛАВ
+РАДИВОЈЕВИЋ ТУГОМИР
+РАДИВОЈЕВИЋ ВЕРА
+РАДИВОЈЕВИЋ ВИДА
+РАДИВОЈЕВИЋ ВИДА
+РАДИВОЈЕВИЋ ВУКИЦА
+РАДИВОЈЕВИЋ ЗОРАН
+РАДИВОЈЕВИЋ ЗОРАН
+РАДИВОЈКОВ ЂОРЂЕ
+РАДИВОЈКОВ ЈЕЛИЦА
+РАДИВОЈКОВ МИРЈАНА
+РАДИВОЈКОВ РАЈКО
+РАДИВОЈКОВ САВА
+РАДИВОЈКОВ СТЕВАН
+РАДЛОВАЧКИ ДОБРИНКА
+РАДЛОВАЧКИ СИНИША
+РАДЛОВИЋ МИЛКА
+РАДМАН ШИМУН
+РАДМАН ШПИРО
+РАДМАН ИВАН
+РАДМАН ЛЕПОСАВА
+РАДМАН МИЛАН
+РАДМАН МИЛЕ
+РАДМАН МИЛИЦА
+РАДМАН МИЛОВАН
+РАДМАН МИРОСЛАВ
+РАДМАНИЋ ЕВИЦА
+РАДМАНОВАЦ МИЛОВАН
+РАДМАНОВИЋ ДРАГИЦА
+РАДМАНОВИЋ ДУШАНКА
+РАДМАНОВИЋ МИЛУТИН
+РАДМИЛО ЂУРО
+РАДМИЛО МАРИЈА
+РАДМИЛО МИРКО
+РАДМИЛОВИЋ ДУШАНКА
+РАДМИЛОВИЋ МИЛАН
+РАДМИЛОВИЋ МИЛОШ
+РАДМИЛОВИЋ МИРОСЛАВ
+РАДМИЛОВИЋ НЕДЕЉКО
+РАДМИЛОВИЋ РАДЕ ПРОФЕСОР
+РАДМИЛОВИЋ СЛАВОЉУБ
+РАДМИЛОВИЋ СТЕВО
+РАДНИЋ ДОБРИНКА
+РАДНОВ АЛЕКСА
+РАДНОВ ЛЕНКА
+РАДНОВ РАДИВОЈ
+РАДНОВ РАЈКО
+РАДНОВ ЗОРКА
+РАДНОВИЋ ДРАГАН
+РАДНОВИЋ ОЛГИЦА
+РАДНОВИЋ РАДОВАН
+РАДНОВИЋ УРОШ
+РАДНОВИЋ УРОШ
+РАДОЧАЈ ДУШАНКА
+РАДОЧАЈ ИЛИЈА
+РАДОЧАЈ МАРА
+РАДОЧАЈ МИЛКА
+РАДОЧАЈ НЕДЕЉКА
+РАДОЧАЈ САВКА
+РАДОШ БОРИСЛАВ
+РАДОШ ДАНИЦА
+РАДОШ ДРЕНКА
+РАДОШ МАРТА
+РАДОШ МИЛАН
+РАДОШ РУЖА
+РАДОШ ВОЈИСЛАВ
+РАДОШ ЗОРА
+РАДОШЕВИЋ-ШТИМАЦ ЉУБИЦА
+РАДОШЕВИЋ ЂОРЂЕ
+РАДОШЕВИЋ АНЂЕЛКА
+РАДОШЕВИЋ АНИЦА
+РАДОШЕВИЋ АНИЦА
+РАДОШЕВИЋ БОЖИДАР
+РАДОШЕВИЋ БОЖО
+РАДОШЕВИЋ БРАНИСЛАВ
+РАДОШЕВИЋ БРАНКО
+РАДОШЕВИЋ ДЕСАНКА
+РАДОШЕВИЋ ДУШИЦА
+РАДОШЕВИЋ ЈЕЛИСАВЕТА
+РАДОШЕВИЋ ЈОВАНКА
+РАДОШЕВИЋ ЈОВАН
+РАДОШЕВИЋ ЈОВАН
+РАДОШЕВИЋ ЉИЉАНА
+РАДОШЕВИЋ ЉУБИЦА
+РАДОШЕВИЋ МИЛЕНА
+РАДОШЕВИЋ МИЛЕНА
+РАДОШЕВИЋ МИЛИВОЈ
+РАДОШЕВИЋ МИЛОШ
+РАДОШЕВИЋ МИЛУТИН
+РАДОШЕВИЋ МИОДРАГ
+РАДОШЕВИЋ МИРЈАНА
+РАДОШЕВИЋ МИРОСЛАВА
+РАДОШЕВИЋ МИТАР
+РАДОШЕВИЋ НИКОЛА
+РАДОШЕВИЋ ОЛИВЕРА
+РАДОШЕВИЋ РАДЕ
+РАДОШЕВИЋ РАДИВОЈ
+РАДОШЕВИЋ РАДМИЛА
+РАДОШЕВИЋ РАДОВАН
+РАДОШЕВИЋ РАДОВАН
+РАДОШЕВИЋ РОДОЉУБ
+РАДОШЕВИЋ СТАНИЦА
+РАДОШЕВИЋ ТЕРЕЗА
+РАДОШЕВИЋ ВЛАДИМИР
+РАДОШЕВИЋ ЗДРАВКО
+РАДОЦ ФРАЊА
+РАДОЦ-СИМИЋ СОФИЈА
+РАДОИЧИЋ МИЛОШ
+РАДОИЧКИ БРАНИСЛАВ
+РАДОЈЧЕВИЋ МИЛОШ
+РАДОЈЧИЋ БОЖА ДИПЛ ИНГ
+РАДОЈЧИЋ БОЖИДАР
+РАДОЈЧИЋ БОЖИДАР
+РАДОЈЧИЋ ДАНИЦА
+РАДОЈЧИЋ ДАРИНКА
+РАДОЈЧИЋ ДРАГАНА
+РАДОЈЧИЋ ДРАГОМИР
+РАДОЈЧИЋ ДРАГО
+РАДОЈЧИЋ ДУШКО
+РАДОЈЧИЋ ГОЈКО
+РАДОЈЧИЋ ИРЕНА
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ЉИЈАНА
+РАДОЈЧИЋ ЉИЉАНА
+РАДОЈЧИЋ МИЛАДИН
+РАДОЈЧИЋ МИЛАН
+РАДОЈЧИЋ МИЛЕНКО
+РАДОЈЧИЋ МИЛИЦА
+РАДОЈЧИЋ МИЛОРАД
+РАДОЈЧИЋ МИЛУТИН
+РАДОЈЧИЋ МИОДРАГ
+РАДОЈЧИЋ МИТАР
+РАДОЈЧИЋ НАДИЦА
+РАДОЈЧИЋ НЕНАД
+РАДОЈЧИЋ-ОБЕРКНЕЖЕВ МИРЈАНА
+РАДОЈЧИЋ ПАВЛЕ
+РАДОЈЧИЋ САВА
+РАДОЈЧИЋ СРЕТЕН
+РАДОЈЧИЋ СТЕВАН
+РАДОЈЧИЋ ВИТОМИР
+РАДОЈЧИЋ ВЛАДАН
+РАДОЈЧИЋ ВОЈИСЛАВ
+РАДОЈЧИН ЂОРЂЕ
+РАДОЈЧИН АНИЦА
+РАДОЈЧИН ДОБРИЛА
+РАДОЈЧИН ДУШИЦА
+РАДОЈЧИН ЕВИЦА
+РАДОЈЧИН ЈУЛКА
+РАДОЈЧИН МАРА
+РАДОЈЧИН МАРТА
+РАДОЈЧИН МИЛАН
+РАДОЈЧИН МИЛКА
+РАДОЈЧИН МИЛОШ
+РАДОЈЧИН МИЛОВАН
+РАДОЈЧИН МИРЈАНА
+РАДОЈЧИН РАДМИЛА
+РАДОЈЧИН РАДОЈКА
+РАДОЈЧИН РАДОВАН
+РАДОЈЧИН СЛОБОДАН
+РАДОЈЧИН СРЕДОЈЕ
+РАДОЈЧИН ТОДОР
+РАДОЈЧИН ВЕЛИМИР
+РАДОЈЧИН ВЕРА
+РАДОЈЧИН ВЕРА
+РАДОЈА БОРИСЛАВ
+РАДОЈА КОВИЉКА
+РАДОЈЕВ ИВАН
+РАДОЈЕВ СЛАВКО
+РАДОЈЕВИЋ ЂОКА
+РАДОЈЕВИЋ АНЂЕЛКА
+РАДОЈЕВИЋ БОСИЉКА
+РАДОЈЕВИЋ ДЕЈАН
+РАДОЈЕВИЋ ДРАГОСЛАВ
+РАДОЈЕВИЋ ЈЕЛЕНА
+РАДОЈЕВИЋ ЈЕЛИЦА
+РАДОЈЕВИЋ КАТА
+РАДОЈЕВИЋ КОСТА
+РАДОЈЕВИЋ МИЛАН
+РАДОЈЕВИЋ МИЛЕНКО
+РАДОЈЕВИЋ МИЛЕ
+РАДОЈЕВИЋ МИЛУТИН
+РАДОЈЕВИЋ МИРЈАНА
+РАДОЈЕВИЋ МИРОСАНДА
+РАДОЈЕВИЋ МОМЧИЛО
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ ПЕТРА
+РАДОЈЕВИЋ РАДИСАВ
+РАДОЈЕВИЋ РАДОСЛАВКА ДР
+РАДОЈЕВИЋ САВА
+РАДОЈЕВИЋ СЛАВКО
+РАДОЈЕВИЋ СРБОЉУБ
+РАДОЈЕВИЋ СТЕВАН
+РАДОЈЕВИЋ СТЕВАН
+РАДОЈЕВИЋ ТАТЈАНА
+РАДОЈЕВИЋ ВЕРА
+РАДОЈЕВИЋ ЗОРАН
+РАДОЈИЧИЋ ЂОКА
+РАДОЈИЧИЋ ЂОРЂО
+РАДОЈИЧИЋ ДАНИЛО
+РАДОЈИЧИЋ ДРАГАН
+РАДОЈИЧИЋ ЈЕЛЕНА
+РАДОЈИЧИЋ ЈОРДАН
+РАДОЈИЧИЋ ЉУБОМИР
+РАДОЈИЧИЋ МИЛИЦА
+РАДОЈИЧИЋ МИЛОСАВ
+РАДОЈИЧИЋ ОБРЕН
+РАДОЈИЧИЋ РАДЕ
+РАДОЈИЧИЋ РАДИША
+РАДОЈИЧИЋ ВЛАДАН
+РАДОЈИЧИЋ ВОЈИН
+РАДОЈКО ЈЕЛЕНА
+РАДОЈКОВИЋ ЂУРЂИНКА
+РАДОЈКОВИЋ ЉУБИЦА
+РАДОЈКОВИЋ ПРЕДРАГ
+РАДОЈКОВИЋ ПРВОСЛАВ
+РАДОЈКОВИЋ ПРВОСЛАВ
+РАДОЈКОВИЋ РАЈКО
+РАДОЈКОВИЋ ТИХОМИР
+РАДОЈКОВИЋ ТОМИСЛАВ
+РАДОЈКОВИЋ ТРАЈКО
+РАДОЈКОВИЋ ВЛАДИМИР
+РАДОМАН ЈЕЛЕНА
+РАДОМАН ЉУБИЦА
+РАДОМАН МАРТА
+РАДОМАН МИРОСЛАВ
+РАДОМАН ЗОРАН
+РАДОМИР СТОЈАН
+РАДОМИРОВИЋ МИЛОРАД
+РАДОМИРОВИЋ ВИНКО
+РАДОМИРОВИЋ ВУКСАН
+РАДОМИРОВИЋ ЗЛАТА
+РАДОНЧИЋ ЈУСУФ
+РАДОНЧИЋ РАМИЗ
+РАДОНИЋ ЖЕЉКО
+РАДОНИЋ ЖИВАН
+РАДОНИЋ ЖИВКО
+РАДОНИЋ АЛЕКСАНДАР
+РАДОНИЋ АНЂЕЛКА
+РАДОНИЋ БЛАГОЈЕ
+РАДОНИЋ БРАНИСЛАВ
+РАДОНИЋ БРАНКО ДИПЛ ИНГ
+РАДОНИЋ БРАНКО
+РАДОНИЋ ДАНИЦА
+РАДОНИЋ ДУШАН
+РАДОНИЋ ЕВГЕНИЈЕ
+РАДОНИЋ ФЕРЕНЦ
+РАДОНИЋ ХАНА
+РАДОНИЋ ЈОВАН
+РАДОНИЋ ЉУБОМИР
+РАДОНИЋ МАКСИМ
+РАДОНИЋ МИЛИВОЈЕ
+РАДОНИЋ МИЛОВАН
+РАДОНИЋ МЛАДЕН
+РАДОНИЋ НАДА
+РАДОНИЋ НАДА
+РАДОНИЋ НЕДЕЉКО
+РАДОНИЋ НЕНАД
+РАДОНИЋ НИКОЛА
+РАДОНИЋ НИКОЛА
+РАДОНИЋ НОВИЦА
+РАДОНИЋ ПЕТАР
+РАДОНИЋ РАДА
+РАДОНИЋ РАДЕ
+РАДОНИЋ РАДИВОЈ
+РАДОНИЋ РАДИВОЈ
+РАДОНИЋ РАДМИЛА
+РАДОНИЋ РАЈКО
+РАДОНИЋ СОФИЈА
+РАДОНИЋ ВЛАДА
+РАДОНИЋ ВЛАДИМИР
+РАДОЊА АНТЕ
+РАДОЊАНИН МАРТА
+РАДОЊАНИН ПЕТАР
+РАДОЊАНИН ВЛАСТИМИР
+РАДОЊИЋ БРАНИСЛАВ
+РАДОЊИЋ ДРАГАН
+РАДОЊИЋ ИВАН
+РАДОЊИЋ КАТАРИНА
+РАДОЊИЋ ЛУКА
+РАДОЊИЋ МАНДА
+РАДОЊИЋ МИЛАДИН
+РАДОЊИЋ МИЛОВАН
+РАДОЊИЋ МИРЈАНА
+РАДОЊИЋ МИТАР
+РАДОЊИЋ ОЛГА
+РАДОЊИЋ СЕНКА
+РАДОЊИЋ СЛАВОМИР
+РАДОЊИЋ СЛОБОДАН
+РАДОЊИЋ СНЕЖАНА
+РАДОЊИЋ СТАНА
+РАДОЊИЋ ВЕРИЦА
+РАДОСАВ ЕРЖЕБЕТ
+РАДОСАВ КРИСТИНА
+РАДОСАВ РАДИВОЈ
+РАДОСАВЧЕВ ДУШАН
+РАДОСАВЧЕВ МИЛА
+РАДОСАВАЦ ДИМИТРИЈЕ ДР
+РАДОСАВАЦ ДУШИЦА
+РАДОСАВАЦ НЕДЕЉКО
+РАДОСАВАЦ ВЕЛИЗАР
+РАДОСАВАЦ ВЛАДО
+РАДОСАВЉЕВ ЖИВАН
+РАДОСАВЉЕВ БОЖИДАР
+РАДОСАВЉЕВ ДРАГОЉУБ
+РАДОСАВЉЕВ ДРАГУТИН
+РАДОСАВЉЕВ ГОЈКО
+РАДОСАВЉЕВ ИВАН
+РАДОСАВЉЕВ ЈЕВРЕМ
+РАДОСАВЉЕВ КАЋА
+РАДОСАВЉЕВ МИЛОРАД
+РАДОСАВЉЕВ НИКОЛА
+РАДОСАВЉЕВ ПАВЛЕ
+РАДОСАВЉЕВ СЛАВКА
+РАДОСАВЉЕВ СТЕВАН
+РАДОСАВЉЕВ ЗОРА
+РАДОСАВЉЕВ ЗОРИЦА
+РАДОСАВЉЕВИЋ ЖИВАН
+РАДОСАВЉЕВИЋ ЂОРЂЕ
+РАДОСАВЉЕВИЋ ЂОРЂЕ
+РАДОСАВЉЕВИЋ АЛЕКСАНДАР
+РАДОСАВЉЕВИЋ АНА
+РАДОСАВЉЕВИЋ АНА
+РАДОСАВЉЕВИЋ БОЖИДАР
+РАДОСАВЉЕВИЋ БОГДАН
+РАДОСАВЉЕВИЋ БОГОВИД
+РАДОСАВЉЕВИЋ БОРА
+РАДОСАВЉЕВИЋ БОРА
+РАДОСАВЉЕВИЋ БУДИМИР
+РАДОСАВЉЕВИЋ ДАНИЕЛ
+РАДОСАВЉЕВИЋ ДИАНА
+РАДОСАВЉЕВИЋ ДОБРИВОЈЕ
+РАДОСАВЉЕВИЋ ДРАГАН
+РАДОСАВЉЕВИЋ ДРАГИША
+РАДОСАВЉЕВИЋ ДРАГОЉУБ
+РАДОСАВЉЕВИЋ ДРАГУТИН
+РАДОСАВЉЕВИЋ ДУШАН ДИПЛ ИНГ
+РАДОСАВЉЕВИЋ ДУШАН
+РАДОСАВЉЕВИЋ ДУШАН
+РАДОСАВЉЕВИЋ ИЛИЈА
+РАДОСАВЉЕВИЋ ЈАСМИНА
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈУЛИЈА
+РАДОСАВЉЕВИЋ ЛЕПОСАВА
+РАДОСАВЉЕВИЋ ЉИЉАНА
+РАДОСАВЉЕВИЋ ЉИЉА
+РАДОСАВЉЕВИЋ ЉУБИША
+РАДОСАВЉЕВИЋ ЉУБОМИР
+РАДОСАВЉЕВИЋ ЉУБОМИР
+РАДОСАВЉЕВИЋ МАРКО
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛЕНКО
+РАДОСАВЉЕВИЋ МИЛЕНКО
+РАДОСАВЉЕВИЋ МИЛЕВА
+РАДОСАВЉЕВИЋ МИЛКА
+РАДОСАВЉЕВИЋ МИЛОВАН
+РАДОСАВЉЕВИЋ МИОДРАГ
+РАДОСАВЉЕВИЋ МИРЈАНА
+РАДОСАВЉЕВИЋ МИРЈАНА
+РАДОСАВЉЕВИЋ МЛАДЕН
+РАДОСАВЉЕВИЋ ЊЕГОСАВА
+РАДОСАВЉЕВИЋ ПАВЛЕ
+РАДОСАВЉЕВИЋ ПЕТАР
+РАДОСАВЉЕВИЋ РАДИША
+РАДОСАВЉЕВИЋ РАДИША
+РАДОСАВЉЕВИЋ РАДИВОЈ
+РАДОСАВЉЕВИЋ РАМИЗА
+РАДОСАВЉЕВИЋ РОДОЉУБ ДИПЛ ИНГ
+РАДОСАВЉЕВИЋ САВА
+РАДОСАВЉЕВИЋ СИНИША
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТОЈАН
+РАДОСАВЉЕВИЋ СВЕТИСЛАВ
+РАДОСАВЉЕВИЋ СВЕТИСЛАВ
+РАДОСАВЉЕВИЋ СВЕТЛАНА
+РАДОСАВЉЕВИЋ СВЕТОЗАР
+РАДОСАВЉЕВИЋ ВИДОСАВА
+РАДОСАВЉЕВИЋ ВЛАДЕТА
+РАДОСАВЉЕВИЋ ЗАГА
+РАДОСАВЉЕВИЋ ЗАГОРКА
+РАДОСАВЉЕВИЋ ЗОРИЦА
+РАДОВАЦ ИВА
+РАДОВАЦ НИКОЛА
+РАДОВАЦ ПЕТАР
+РАДОВАЦ САВА
+РАДОВАН АНТЕ
+РАДОВАН ВИДОСАВА
+РАДОВАНЧЕВ БРАНИСЛАВ
+РАДОВАНЧЕВ ЉУБИЦА
+РАДОВАНЧЕВ ВЛАДИМИР
+РАДОВАНЧЕВ ВЛАДИМИР
+РАДОВАНАЦ ЂУРА
+РАДОВАНАЦ НЕЂО
+РАДОВАНОВ ЖИВАН
+РАДОВАНОВ АЛЕКСАНДАР
+РАДОВАНОВ АНЂЕЛКА
+РАДОВАНОВ АНКА
+РАДОВАНОВ БОЖИДАР
+РАДОВАНОВ БОГДАНКА
+РАДОВАНОВ БРАНКО
+РАДОВАНОВ ДАНИЦА
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ЕВИЦА
+РАДОВАНОВ ГОРДАНА
+РАДОВАНОВ ИЛИЈА
+РАДОВАНОВ КУЗМАН
+РАДОВАНОВ ЉУБИЦА
+РАДОВАНОВ МАРИЈА
+РАДОВАНОВ МЕЛАНИЈА
+РАДОВАНОВ МИЛАН
+РАДОВАНОВ МИЛАН
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛКА
+РАДОВАНОВ МИРЈАНА
+РАДОВАНОВ НАДА
+РАДОВАНОВ НЕВЕНКА
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ РАДОМИР
+РАДОВАНОВ РАДОВАН
+РАДОВАНОВ РУЖИЦА
+РАДОВАНОВ СЛОБОДАНКА
+РАДОВАНОВ СЛОБОДАН
+РАДОВАНОВ СЛОБОДАН
+РАДОВАНОВ СМИЉАНА
+РАДОВАНОВ СТЕВАН
+РАДОВАНОВ СТЕВАН
+РАДОВАНОВ СТЕВА
+РАДОВАНОВ СВЕТОЗАР
+РАДОВАНОВ ТАТЈАНА
+РАДОВАНОВ ТИНКА
+РАДОВАНОВ ВОЈИСЛАВ
+РАДОВАНОВИЋ ЖИВАДИН
+РАДОВАНОВИЋ ЂОРЂИЈЕ
+РАДОВАНОВИЋ БОРА
+РАДОВАНОВИЋ БОРКА
+РАДОВАНОВИЋ БРАНКО
+РАДОВАНОВИЋ ДАНИЛО
+РАДОВАНОВИЋ ДАРИНКА
+РАДОВАНОВИЋ ДОБРИВОЈЕ
+РАДОВАНОВИЋ ДРАГАН
+РАДОВАНОВИЋ ДРАГИША
+РАДОВАНОВИЋ ДРАГИША
+РАДОВАНОВИЋ ДРАГОЉУБ
+РАДОВАНОВИЋ ДУШАНКА
+РАДОВАНОВИЋ ДУШАН
+РАДОВАНОВИЋ ДУШКО ДИПЛ ИНГ
+РАДОВАНОВИЋ ИЛОНКА
+РАДОВАНОВИЋ ЈЕЛИЦА
+РАДОВАНОВИЋ ЈОКА
+РАДОВАНОВИЋ ЈОВАНКА
+РАДОВАНОВИЋ ЛАЗАР
+РАДОВАНОВИЋ ЛАЗО
+РАДОВАНОВИЋ ЉУБИЦА
+РАДОВАНОВИЋ ЉУБОМИР
+РАДОВАНОВИЋ МАРА
+РАДОВАНОВИЋ МАРИЈА ДР
+РАДОВАНОВИЋ МАРИЈА
+РАДОВАНОВИЋ МИЋО
+РАДОВАНОВИЋ МИЛАДИН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛА
+РАДОВАНОВИЋ МИЛИЦА
+РАДОВАНОВИЋ МИЛОШ
+РАДОВАНОВИЋ МИЛОШ
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛУТИН
+РАДОВАНОВИЋ МИРА
+РАДОВАНОВИЋ МИРОСЛАВ ДР ПРОФ
+РАДОВАНОВИЋ МИРОСЛАВ
+РАДОВАНОВИЋ МЛАЂЕН
+РАДОВАНОВИЋ МОМИР
+РАДОВАНОВИЋ НАДА
+РАДОВАНОВИЋ НЕДЕЉКО
+РАДОВАНОВИЋ НИКОЛА
+РАДОВАНОВИЋ НИНОСЛАВ ДР
+РАДОВАНОВИЋ ПРЕДРАГ
+РАДОВАНОВИЋ РАДЕНКО
+РАДОВАНОВИЋ РАДИВОЈ
+РАДОВАНОВИЋ РАДОЈИЦА
+РАДОВАНОВИЋ РАДОМИР ДР ЛЕКАР
+РАДОВАНОВИЋ РАДОСЛАВ
+РАДОВАНОВИЋ РАДОСЛАВ
+РАДОВАНОВИЋ РАДОВАН
+РАДОВАНОВИЋ РАЈА
+РАДОВАНОВИЋ РАЈКО
+РАДОВАНОВИЋ СЛАДОЉУБ
+РАДОВАНОВИЋ СЛАВКО
+РАДОВАНОВИЋ СЛАВКО
+РАДОВАНОВИЋ СЛОБОДАН
+РАДОВАНОВИЋ СНЕЖАНА
+РАДОВАНОВИЋ СРЕТЕН
+РАДОВАНОВИЋ СТАНОЈЕ
+РАДОВАНОВИЋ СТЕВАН
+РАДОВАНОВИЋ СТЕВАН
+РАДОВАНОВИЋ СВЕТИСЛАВ
+РАДОВАНОВИЋ ТОМИСЛАВ
+РАДОВАНОВИЋ ВЕЛИСАВ
+РАДОВАНОВИЋ ВИДОСАВА
+РАДОВАНОВИЋ ВИНКА
+РАДОВАНОВИЋ ВЛАДИМИР
+РАДОВАНОВИЋ ВОЈИСЛАВ
+РАДОВАНОВИЋ ВОЈИСЛАВ
+РАДОВАНОВИЋ ЗОРКА
+РАДОВАНОВИЋ ЗВЕЗДАНА
+РАДОВИЋ ЧЕДОМИР
+РАДОВИЋ ЖАРКО
+РАДОВИЋ ЖИВАН
+РАДОВИЋ ЂОРЂЕ
+РАДОВИЋ АЛЕКСАНДАР
+РАДОВИЋ АЛЕКСАНДАР
+РАДОВИЋ АНЂЕЛИЈА
+РАДОВИЋ БЛАГА
+РАДОВИЋ БЛАГОЈЕ
+РАДОВИЋ БОШКО
+РАДОВИЋ БОГОЉУБ
+РАДОВИЋ БОРИСЛАВ
+РАДОВИЋ БРАНИСЛАВ ДИПЛ ИНГ
+РАДОВИЋ БРАНКО
+РАДОВИЋ ДАМЈАН
+РАДОВИЋ ДАРКО
+РАДОВИЋ ДЕЈАН
+РАДОВИЋ ДИМИТРИЈЕ
+РАДОВИЋ ДОБРИЛА
+РАДОВИЋ ДРАГАН
+РАДОВИЋ ДРАГИША
+РАДОВИЋ ДРАГИЦА
+РАДОВИЋ ДРАГОЉУБ
+РАДОВИЋ ДРАГУТИН
+РАДОВИЋ ДУШАН
+РАДОВИЋ ГОЈКО ДИПЛ ИНГ
+РАДОВИЋ ИРМА
+РАДОВИЋ ИВА
+РАДОВИЋ ЈЕВТО
+РАДОВИЋ ЈОВАН
+РАДОВИЋ ЉУБОМИР
+РАДОВИЋ МАГДАЛЕНА
+РАДОВИЋ МАГДА
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛЕНА
+РАДОВИЋ МИЛЕВА
+РАДОВИЋ МИЛЕ
+РАДОВИЋ МИЛОШ
+РАДОВИЋ МИЛОЈЕ
+РАДОВИЋ МИЛОМИР
+РАДОВИЋ МИЛУТИН
+РАДОВИЋ МИОДРАГ
+РАДОВИЋ МИОДРАГ
+РАДОВИЋ МИРЧЕТА
+РАДОВИЋ МОМЧИЛО
+РАДОВИЋ МОМЧИЛО
+РАДОВИЋ НЕДЕЉКО
+РАДОВИЋ НОВАК
+РАДОВИЋ ОЛГА
+РАДОВИЋ ПАВЛЕ
+РАДОВИЋ ПЕТАР
+РАДОВИЋ ПЕТКО
+РАДОВИЋ РАДОЈКА
+РАДОВИЋ РАДОМИР
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАЈКО
+РАДОВИЋ РАТОМИР ДИПЛ ИНГ
+РАДОВИЋ РОЗИКА
+РАДОВИЋ САВО
+РАДОВИЋ СИМА
+РАДОВИЋ СЛАВИЦА
+РАДОВИЋ СЛАВИЦА
+РАДОВИЋ СЛАВКА
+РАДОВИЋ СЛАВКО
+РАДОВИЋ СРЕТЕН
+РАДОВИЋ СТАНКО
+РАДОВИЋ СТЕВАН
+РАДОВИЋ СТРАХИЊА
+РАДОВИЋ ТЕРЕЗИЈА
+РАДОВИЋ-УВЕРИЋ МИЛА ДР
+РАДОВИЋ ВЕЛИМИР
+РАДОВИЋ ВЕЉА
+РАДОВИЋ ВЕЉКО
+РАДОВИЋ ВЕЉКО
+РАДОВИЋ ВЕРА
+РАДОВИЋ ВЕРА
+РАДОВИЋ ВИДАК
+РАДОВИЋ ВИДОСАВ
+РАДОВИЋ ВЛАДИМИР
+РАДОВИЋ ВЛАДИМИР
+РАДОВИЋ ВЛАЈКО
+РАДОВИЋ ВОЈИСЛАВ
+РАДОВИЋ ВУКСАН
+РАДОВИЋ ЗДРАВКО
+РАДОВИЋ ЗОРАН
+РАДОВНИКОВИЋ МАРИЈА
+РАДУ БРАНКО
+РАДУЈКО ЂУРА
+РАДУЈКО АЛЕКСАНДАР
+РАДУЈКО БРАНКО
+РАДУЈКО ДЕСА
+РАДУЈКО ДУШАН
+РАДУЈКО ДУШАН
+РАДУЈКО ГОРАН
+РАДУЈКО ЈАСМИНА
+РАДУЈКО ЉИЉАНА
+РАДУЈКО МАРКО
+РАДУЈКО МИЛАН
+РАДУЈКО МИРА
+РАДУЈКО МИРКО
+РАДУЈКО НЕДЕЉКО
+РАДУЈКО СТЕВО
+РАДУЈКОВ АЛЕКСАНДАР
+РАДУЈКОВ ДАНИЦА ДИПЛ ИНГ
+РАДУЈКОВ ДАНИЛО
+РАДУЈКОВ ДАНИЛО
+РАДУЈКОВ ДЕЈАН
+РАДУЈКОВ ДРАГОЉУБ
+РАДУЈКОВ ЉУБИЦА
+РАДУЈКОВ ЉУБИЦА
+РАДУЈКОВ МИЛАН
+РАДУЈКОВ МИЛИВОЈ
+РАДУЈКОВ МИТАР
+РАДУЈКОВ НИКОЛА
+РАДУЈКОВ ПЕТАР
+РАДУЈКОВ РУЖИЦА
+РАДУЈКОВ СТЕВАН
+РАДУЈКОВ ВЛАДИМИР
+РАДУЈКОВИЋ ИЛИЈА
+РАДУЈКОВИЋ ЈЕЛКА
+РАДУЈКОВИЋ КОСТА
+РАДУКА ЛАЈОШ
+РАДУКИЋ РАДОСАВ
+РАДУКИН АЛЕКСА
+РАДУКИН БРАНКА
+РАДУКИН ДАНИЦА
+РАДУКИН ГАВРА
+РАДУКИН ЉУБОМИР
+РАДУКИН МИЛАН
+РАДУКИН МИЛЕНКО
+РАДУКИН МИРКО
+РАДУКИН РАДОСЛАВ
+РАДУКИН СТОЈКА
+РАДУЛАШКИ БОШКО
+РАДУЛАШКИ СТЕВАН
+РАДУЛЕВ ЈОВАН
+РАДУЉ ЈЕЛЕНА
+РАДУЛОВ ЦВЕТИСЛАВ
+РАДУЛОВ ЦВЕТИСЛАВ
+РАДУЛОВ ЈОВАН
+РАДУЛОВ ЈУЛКА
+РАДУЛОВИЋ ЖИВКО
+РАДУЛОВИЋ ЂОКО
+РАДУЛОВИЋ ЂОРЂЕ
+РАДУЛОВИЋ ЂОРЂЕ
+РАДУЛОВИЋ ЂУРО
+РАДУЛОВИЋ АЛЕКСАНДАР
+РАДУЛОВИЋ АЛЕКСАНДАР
+РАДУЛОВИЋ АНЂЕЛКА
+РАДУЛОВИЋ АНЂЕЛКО
+РАДУЛОВИЋ АНЂЕЛКО
+РАДУЛОВИЋ АНА
+РАДУЛОВИЋ-БЕЛИЋ ЗОРКА
+РАДУЛОВИЋ БОГДАНКА
+РАДУЛОВИЋ БОРИВОЈ
+РАДУЛОВИЋ БОСА
+РАДУЛОВИЋ БОСИЉКА
+РАДУЛОВИЋ БРАНКА
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАТИСЛАВ
+РАДУЛОВИЋ ДАНИЈЕЛА
+РАДУЛОВИЋ ДРАГАН
+РАДУЛОВИЋ ДРАГИЦА
+РАДУЛОВИЋ ДРАГИЦА
+РАДУЛОВИЋ ДРАГОЉУБ
+РАДУЛОВИЋ ДРАГУТИН
+РАДУЛОВИЋ ДУШАН
+РАДУЛОВИЋ ГОРАН
+РАДУЛОВИЋ ИЛИЈА
+РАДУЛОВИЋ ЈОРДАН
+РАДУЛОВИЋ ЈОВАН
+РАДУЛОВИЋ ЈОВАН
+РАДУЛОВИЋ КРУНИСЛАВ
+РАДУЛОВИЋ КСЕНИЈА
+РАДУЛОВИЋ ЛАЗАР
+РАДУЛОВИЋ ЉУБИША ДИПЛ ИНГ
+РАДУЛОВИЋ МАГДА
+РАДУЛОВИЋ МАРИЈАНА
+РАДУЛОВИЋ МАРИЈА
+РАДУЛОВИЋ МАРИЈА
+РАДУЛОВИЋ МИХАИЛО
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛЕНА
+РАДУЛОВИЋ МИЛЕ
+РАДУЛОВИЋ МИЛОЈЕ
+РАДУЛОВИЋ МИЛОРАД ДР
+РАДУЛОВИЋ МИЛОВАН
+РАДУЛОВИЋ МИЛУТИН
+РАДУЛОВИЋ МИРЈАНА
+РАДУЛОВИЋ МИРКО
+РАДУЛОВИЋ МИРОСЛАВА
+РАДУЛОВИЋ НАДА
+РАДУЛОВИЋ НЕДЕЉКА
+РАДУЛОВИЋ НИКОЛА ДИПЛ ИНГ
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИНОСЛАВА ДР
+РАДУЛОВИЋ ПЕТАР
+РАДУЛОВИЋ ПЕТАР
+РАДУЛОВИЋ РАДЕ
+РАДУЛОВИЋ РАДИВОЈ
+РАДУЛОВИЋ РАДОЈЕ ДР
+РАДУЛОВИЋ РАДОЈКА
+РАДУЛОВИЋ РАДОМИР
+РАДУЛОВИЋ РАЈКО
+РАДУЛОВИЋ РОЗАЛИЈА
+РАДУЛОВИЋ РУЖА
+РАДУЛОВИЋ РУДОЛФ
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ СЕЛИМИР
+РАДУЛОВИЋ СЛАВИЦА
+РАДУЛОВИЋ СЛОБОДАН
+РАДУЛОВИЋ СРЕЋКО
+РАДУЛОВИЋ СРЕТО
+РАДУЛОВИЋ СТАНА
+РАДУЛОВИЋ СТАНКО
+РАДУЛОВИЋ СТЕВАН ДР
+РАДУЛОВИЋ СТЕВАН
+РАДУЛОВИЋ СТЕВАН
+РАДУЛОВИЋ СВЕТКО
+РАДУЛОВИЋ СВЕТОЗАР
+РАДУЛОВИЋ СВЕТОЗАР
+РАДУЛОВИЋ ТОМАШ
+РАДУЛОВИЋ ВЕЛИМИР
+РАДУЛОВИЋ ЗЛАТИНКА ДР
+РАДУЛОВИЋ ЗОРАН
+РАДУЛОВИЋ ЗОРАН
+РАДУЛОВИЋ ЗВОНИМИР
+РАДУМИЛО АЛЕКСАНДАР
+РАДУМИЛО ГОРДАНА
+РАДУМИЛО МИЋО
+РАДУМИЛО МИЛОРАД
+РАДУМИЛО МИРКО
+РАДУН ЖЕЉКО
+РАДУН ЖЕЉКО
+РАДУН ДРАГАН
+РАДУН ГОРАН
+РАДУН ИЛИЈА
+РАДУН ЈОВАН
+РАДУН ЉУБИЦА
+РАДУН МАРКО
+РАДУН МИЛОШ
+РАДУН СЛОБОДАН
+РАДУН СМИЉА
+РАДУН ВЛАДО
+РАДУЊИЋ МИЛОМИР
+РАДУНКОВИЋ МИРОСЛАВ
+РАДУНКОВИЋ РАДОМИР
+РАДУНКОВИЋ РАНКО
+РАДУНОВИЋ ЂОРЂЕ
+РАДУНОВИЋ ЈЕЛИЦА
+РАДУНОВИЋ ЈЕЛИЦА
+РАДУНОВИЋ ЈЕВРЕМ
+РАДУНОВИЋ РАДУН
+РАДУНОВИЋ РОСАНДА
+РАДУСИН МИЛЕ
+РАДУСИН ТОМА
+РАДУСИН ВЕРИЦА
+РАДУСИН ВЛАДИМИР
+РАДУСИНОВИЋ БИСЕР ДИПЛ ИНГ
+РАДУСИНОВИЋ БОРА
+РАДУСИНОВИЋ ДАНИЛО
+РАДУСИНОВИЋ МИЛАН
+РАДУСИНОВИЋ НЕДЕЉКО
+РАДУСИНОВИЋ ВОЈИСЛАВ
+РАДВАЊ САША
+РАДВАЊИ ЈОВАН
+РАДВАНСКИ СТЕВАН
+РАФА АНДРАШ
+РАФАИ ГАБОР
+РАФАИ ИШТВАН
+РАФАИ ЈУЛИЈАНА
+РАФАИ СТЕВАН
+РАФАИ ТИБОР
+РАФАЈЛОВИЋ ЗУЗАНА
+РАФАЛ ЂУРЂИНКА
+РАФАЛ ЛАЈОШ
+РАФАЛ МАРИЈА
+РАГАЧ ИВАН
+РАГАИ ЈОВГЕН
+РАГАЈИ ЂУРА
+РАГАЈИ ИРИНА
+РАГАЈИ НИКОЛА
+РАГАЈИ НИКОЛА
+РАГАЈИ ВЛАДА
+РАГАЈИ ВЛАДА
+РАГАЈИ ВЛАДИМИР
+РАГО АДАМ
+РАГУЖ ДРАЖЕН
+РАХЕЛИЋ СВЕТОМИР ДР
+РАХМАН МИХАЈЛО
+РАИЧ АЛЕКСАНДАР
+РАИЧ НИКОЛА
+РАИЧЕВИЋ ЖИВКО
+РАИЧЕВИЋ ЖИВОЈИН
+РАИЧЕВИЋ ЖИВОЈИН
+РАИЧЕВИЋ БОРКА
+РАИЧЕВИЋ ДРАГИЋ
+РАИЧЕВИЋ МИЛАН
+РАИЧЕВИЋ МИЛИЦА
+РАИЧЕВИЋ НИКОЛА
+РАИЧЕВИЋ ВЕСНА
+РАИЧЕВИЋ ЗОРАН
+РАИЧИЋ ЖИВОЈИН
+РАИЧИЋ ЖИВОЈИН
+РАИЋ ДРАГАН
+РАИЋ НИКОЛА
+РАИЛИЋ РАНКО
+РАИЛИЋ ВУКОСАВА
+РАИМОВСКИ ДЕСАНКА
+РАИНАЦ МАРИКА
+РАИНАЦ МИТАР
+РАЈЧАН ИШТВАН
+РАЈЧЕТИЋ ДРАГОМИР
+РАЈЧЕТИЋ ЕМИЛ
+РАЈЧЕТИЋ ГОЈКО
+РАЈЧЕТИЋ ИВАНКА
+РАЈЧЕТИЋ ЛАЗАР
+РАЈЧЕТИЋ ЉУБИЦА
+РАЈЧЕТИЋ МИЛИВОЈ
+РАЈЧЕТИЋ МИРОСЛАВ
+РАЈЧЕТИЋ РУЖИЦА
+РАЈЧЕТИЋ СИНИША
+РАЈЧЕТИЋ СТОЈАН
+РАЈЧЕТИЋ ВЕРА
+РАЈЧЕТИЋ ВЛАДИСЛАВ
+РАЈЧЕТИЋ ВЛАДИСЛАВ
+РАЈЧЕВИЋ ВЛАДЕТА
+РАЈЧИЋ ГРГА
+РАЈЧИЋ ПАВЛЕ
+РАЈЧИЋ СТЕВАН
+РАЈШИЋ АНЂА
+РАЈШИЋ ДАНИЦА
+РАЈШИЋ ДУШАН
+РАЈШИЋ ИЛИЈА
+РАЈШИЋ ЈЕЛА
+РАЈШИЋ НАДА
+РАЈШИЋ РАДЕ
+РАЈШИЋ СТАНА
+РАЈШИЋ СТАНКО
+РАЈШЛИ ИЛОНА
+РАЈШЛИ ЛАСЛО
+РАЈАЧИЋ-ЧАПАКОВИЋ ЈЕЛИЦА
+РАЈАЧИЋ ЂУРО
+РАЈАЧИЋ ЂУРО
+РАЈАЧИЋ АЛЕКСАНДАР
+РАЈАЧИЋ БОРИСЛАВ
+РАЈАЧИЋ БОРИСЛАВ
+РАЈАЧИЋ БРАНИСЛАВА
+РАЈАЧИЋ ДМИТАР
+РАЈАЧИЋ ДУШАН
+РАЈАЧИЋ ГОРДАНА
+РАЈАЧИЋ ИЛИЈА
+РАЈАЧИЋ ЈОВАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ ПЕТАР
+РАЈАЧИЋ ТИХОМИР
+РАЈАЧИЋ ВЛАДИМИР
+РАЈАЧИЋ ВЛАДО
+РАЈАЧИЋ ЗОРИЦА
+РАЈАЧИЋ ЗОРКА
+РАЈАК БРАНКО
+РАЈАК МИЛЕНА
+РАЈАК НЕГОВАН
+РАЈАКОВАЦ МИОДРАГ
+РАЈАКОВАЦ ЗОРАН
+РАЈБЕР ЈОЖЕФ
+РАЈДА ПЕТАР
+РАЈДА ПЕТЕР
+РАЈДА САНДИ
+РАЈЕВИЋ КОСТА
+РАЈЕВИЋ ВАЛЕРИЈА
+РАЈХ ДЕЖЕ
+РАЈХ ОЛГА
+РАЈХ ВЛАДИМИР
+РАЈИЧ МИЛАН
+РАЈИЧИЋ КАТАЛИН
+РАЈИЧИЋ МИОДРАГ
+РАЈИЧИЋ МИОДРАГ
+РАЈИЋ АНКИЦА
+РАЈИЋ БОРИСАВ
+РАЈИЋ ДАРИНКА
+РАЈИЋ ДЕСАНКА
+РАЈИЋ ДОБРИВОЈ
+РАЈИЋ ДРАГАН
+РАЈИЋ ДРАГА
+РАЈИЋ ДРАГИЦА
+РАЈИЋ ДРАГУТИН
+РАЈИЋ ГОРДАНА
+РАЈИЋ ИГЊАТ
+РАЈИЋ ИСА
+РАЈИЋ ЈОВАН
+РАЈИЋ ЈОВАН
+РАЈИЋ КАТАРИНА
+РАЈИЋ КОВИНКА
+РАЈИЋ КРИСТИНА
+РАЈИЋ ЉУБИЦА
+РАЈИЋ ЛУКА
+РАЈИЋ МИЛАН
+РАЈИЋ МИЛЕНА
+РАЈИЋ МИЛКА
+РАЈИЋ МИЛОРАД
+РАЈИЋ МИОМИР
+РАЈИЋ НАДА
+РАЈИЋ НАДА
+РАЈИЋ НИКОЛА
+РАЈИЋ ПЕРКА
+РАЈИЋ ПЕТАР
+РАЈИЋ РАДЕ
+РАЈИЋ РАДИСЛАВ
+РАЈИЋ РАДМИЛА
+РАЈИЋ РУЖА
+РАЈИЋ СЛАВКА
+РАЈИЋ СНЕЖАНА
+РАЈИЋ СПАСОЈЕ ДР
+РАЈИЋ СТЕВАН
+РАЈИЋ СТЕВАН
+РАЈИЋ СТЕВАН
+РАЈИЋ ВЕЛИМИР
+РАЈИЋ ВЕЛИМИР
+РАЈИЋ ВЕЛИНКА
+РАЈИЋ ВОЈИСЛАВ
+РАЈИЋ ВОЈИСЛАВ
+РАЈИЋ ЗОРАН
+РАЈИЛИЋ ЈОВАНКА
+РАЈИНАЦ-БУКУРОВ ДРАГАНА
+РАЈИНАЦ НЕНАД
+РАЈИНАЦ СВЕТОЗАР
+РАЈИНОВИЋ МИРКО
+РАЈКИЋ НИКОЛА
+РАЈКОВ БОГДАН ДР
+РАЈКОВ БОРИВОЈ
+РАЈКОВ ДЕСАНКА
+РАЈКОВ ДРАГИЋ
+РАЈКОВ ДУШАН
+РАЈКОВ ИСИДОР
+РАЈКОВ ИВАН
+РАЈКОВ ИВАН
+РАЈКОВ ЉУБОМИР
+РАЈКОВ МАРКО
+РАЈКОВ МИЛАН
+РАЈКОВ МИЛЕНКО
+РАЈКОВ МИЛОРАД
+РАЈКОВ МЛАДЕН ДИПЛ ИНГ
+РАЈКОВ МОМИР
+РАЈКОВ МОМИР
+РАЈКОВ НИКОЛА
+РАЈКОВ ПЕТАР
+РАЈКОВ РАЈКО
+РАЈКОВ РАТИМИР
+РАЈКОВ САВА
+РАЈКОВ СТЕВАН
+РАЈКОВ ВЕСНА
+РАЈКОВ ВЛАДИМИР
+РАЈКОВ ВУКАШИН
+РАЈКОВИЋ ЧЕДОМИР
+РАЈКОВИЋ ЖИВАН ДР
+РАЈКОВИЋ АНКИЦА
+РАЈКОВИЋ БЛАГУТИН
+РАЈКОВИЋ БОГОЉУБ
+РАЈКОВИЋ БОРИВОЈЕ
+РАЈКОВИЋ БРАНКО
+РАЈКОВИЋ ДАМЊАН
+РАЈКОВИЋ ДРАГАНА
+РАЈКОВИЋ ДРАГАН
+РАЈКОВИЋ ДРАГИША
+РАЈКОВИЋ ДРАГОЉУБ
+РАЈКОВИЋ ДУШАН
+РАЈКОВИЋ ИВО
+РАЈКОВИЋ ЉУБОМИР
+РАЈКОВИЋ МИЛАН
+РАЈКОВИЋ МИЛЕВА
+РАЈКОВИЋ МИЛИЋ
+РАЈКОВИЋ МИЉКО
+РАЈКОВИЋ МИРКО
+РАЈКОВИЋ МИРОЉУБ
+РАЈКОВИЋ НИКОЛА
+РАЈКОВИЋ ПЕТАР
+РАЈКОВИЋ РАЈКО
+РАЈКОВИЋ РАТКО
+РАЈКОВИЋ СЛАВКО
+РАЈКОВИЋ СЛОБОДАН
+РАЈКОВИЋ СРБОЉУБ
+РАЈКОВИЋ СРЕТЕН
+РАЈКОВИЋ СТЕВАН
+РАЈКОВИЋ СТОЈА
+РАЈКОВИЋ СВЕТИСЛАВ
+РАЈКОВИЋ ТАТЈАНА
+РАЈКОВИЋ ТОМИСЛАВ
+РАЈКОВИЋ ВЕЛИМИР
+РАЈКОВИЋ ВИДОСАВ
+РАЈКОВИЋ ВЛАСТИМИР
+РАЈЛИЋ МИЛКА
+РАЈЛИЋ НЕВЕНКА
+РАЈМОВСКА ЈЕЛЗА
+РАЈНИЋ ДРАГАН
+РАЈНИЋ НОВАК
+РАЈНИНГЕР ЈОЖЕФ
+РАЈНОВИЋ АЛОЈЗ
+РАЈНОВИЋ БЛАЖ
+РАЈНОВИЋ ЈЕЛЕНА
+РАЈНОВИЋ ЈОВАН
+РАЈНОВИЋ ЈУЛИЈАНА
+РАЈНОВИЋ НАДА
+РАЈНОВИЋ СНЕЖАНА
+РАЈНПРЕХТ ВЕРА
+РАЈТА ИШТВАН
+РАЈТА МАРИЈА
+РАЈТА НИКОЛА
+РАЈТЕНБАХ ЕЛЕМИР
+РАЈТЕР ДРАГИЦА
+РАЈТЕР ЗОЛТАН
+РАК АНИЦА
+РАК МАРИЈА
+РАК НИКОЛА
+РАК ВЕЛИБОР
+РАКШАЊИ ЛАДИСЛАВ
+РАКАС ЂОРЂЕ
+РАКАС РАДОЈКА
+РАКАЗОВ МИОДРАГ
+РАКЕТИЋ ТОМИСЛАВ
+РАКИЋ ЖАРКО
+РАКИЋ ЖИВКА
+РАКИЋ ЖИВКО
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂУРА
+РАКИЋ АЛЕКСАНДАР
+РАКИЋ АНЂЕЛИЈА
+РАКИЋ АНЂЕЛКА
+РАКИЋ АНАСТАСИЈА
+РАКИЋ АНА
+РАКИЋ БЛАГОЈЕ
+РАКИЋ БОЖО
+РАКИЋ БОГДАНКА
+РАКИЋ БОРО
+РАКИЋ БРАНИМИР
+РАКИЋ БРАНИСЛАВ
+РАКИЋ БРАНКА
+РАКИЋ БРАНКО
+РАКИЋ ДАРИНКА
+РАКИЋ ДОМИНКА
+РАКИЋ ДРАГАНА
+РАКИЋ ДРАГАН
+РАКИЋ ДРАГИША
+РАКИЋ ДРАГОМИР
+РАКИЋ ДУШАНКА
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ГАВРА
+РАКИЋ ГЛИГОРИЈЕ
+РАКИЋ ГОРДАНА
+РАКИЋ ГРУЈА
+РАКИЋ ИВАН
+РАКИЋ ЈОВАНКА
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВИЦА
+РАКИЋ КАТИЦА
+РАКИЋ КЛЕМЕНТ
+РАКИЋ ЛАЗАР
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉУБИША ДР ЛЕКАР
+РАКИЋ ЉУБИША
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБОМИР
+РАКИЋ ЉУБО
+РАКИЋ МАТИЈА
+РАКИЋ МИЛАНКА
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛИЦА
+РАКИЋ МИЛИНА
+РАКИЋ МИЛИВОЈЕ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛКА
+РАКИЋ МИЛОШ
+РАКИЋ МИЛОВАН
+РАКИЋ МИЛУТИН
+РАКИЋ МИОДРАГ
+РАКИЋ МИРА
+РАКИЋ МИРА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРОСЛАВА
+РАКИЋ НАТАЛИЈА
+РАКИЋ НЕБОЈША
+РАКИЋ НЕДЕЉКО
+РАКИЋ НЕНАД
+РАКИЋ НЕНАД
+РАКИЋ НИКОЛА
+РАКИЋ НИКОЛА
+РАКИЋ НОВАК
+РАКИЋ ОБРАД
+РАКИЋ ПАЈА
+РАКИЋ ПАНЕ
+РАКИЋ ПАВЛЕ
+РАКИЋ ПЕТАР
+РАКИЋ ПЕТАР
+РАКИЋ ПРЕДРАГ
+РАКИЋ РАДМИЛА
+РАКИЋ РАДМИЛА
+РАКИЋ РАДОЈКА
+РАКИЋ РАДОЈКА
+РАКИЋ РАДОСЛАВ ДИПЛ ИНГ
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАЈКО
+РАКИЋ РАЈКО
+РАКИЋ РУЖИЦА
+РАКИЋ САВА
+РАКИЋ СЛАВКА
+РАКИЋ СЛАВКО
+РАКИЋ СЛОБОДАН
+РАКИЋ СЛОБОДАН
+РАКИЋ СЛОБОДАН
+РАКИЋ СМИЉАНА
+РАКИЋ СОФИЈА
+РАКИЋ СТАМЕНКА
+РАКИЋ СТЕВАНКА
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВИЦА
+РАКИЋ СТОЈАНКА
+РАКИЋ СТОЈАН
+РАКИЋ СВЕТОМИР
+РАКИЋ СВЕТОЗАР
+РАКИЋ ТИМА
+РАКИЋ ТОДОР
+РАКИЋ ТОМИСЛАВ
+РАКИЋ ВАСИЛИЈЕ
+РАКИЋ ВЕЛЕМИР
+РАКИЋ ВЕРА
+РАКИЋ ВЕРА
+РАКИЋ ВИДОСАВА
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ЗАГА
+РАКИЋ ЗЛАТА
+РАКИЋ ЗОРАН
+РАКИЋ ЗОРКА
+РАКИЋЕВИЋ СТАМЕНА
+РАКИЋЕВИЋ ТИХОМИР
+РАКИЋЕВИЋ ЗОРАН
+РАКИН ЂОРЂЕ
+РАКИН АНТУН
+РАКИН БОРИСЛАВ
+РАКИН ГОЈКО
+РАКИН ЈЕЛИЦА
+РАКИН ЈУЛИЈАНА
+РАКИН-МАРТИНОВИЋ РАДМИЛА
+РАКИН РАДОВАН
+РАКИТА АНКИЦА
+РАКИТА БОЖО
+РАКИТА ЦВИЈАН
+РАКИТА ЦВИЈО
+РАКИТА ЈОВО
+РАКИТА ЉИЉАНА
+РАКИТА МИЛАН
+РАКИТА МЛАДИНКО
+РАКИТА ПЕТАР
+РАКИТА СИМКА
+РАКОЧЕВИЋ ЂОРЂЕ
+РАКОЧЕВИЋ БОРО
+РАКОЧЕВИЋ ГРУЈИЦА
+РАКОЧЕВИЋ МАРИЈАН
+РАКОЧЕВИЋ МАРКО
+РАКОЧЕВИЋ МИЛАН
+РАКОЧЕВИЋ МИЛИЈА
+РАКОЧЕВИЋ МИРОСЛАВ
+РАКОЧЕВИЋ РАДЕ
+РАКОЧЕВИЋ РАДМИЛА
+РАКОШ ЈАНОШ
+РАКОШ КАТИЦА
+РАКОШ ЗВОНИМИР
+РАКОШИ НАДА
+РАКОШИ ВЛАДИСЛАВ
+РАКОЊАЦ БОГОЉУБ
+РАКОЊАЦ ПУНИША
+РАКОВИЋ АЛЕКСАНДАР
+РАКОВИЋ ДРАГИЦА
+РАКОВИЋ ДУШАН
+РАКОВИЋ ЈУГОСЛАВ
+РАКОВИЋ ЉУБИНКА
+РАКОВИЋ МИЛАН
+РАКОВИЋ МИЛОВАН
+РАКОВИЋ НИКОЛА
+РАКОВИЋ ОСТОЈА
+РАКОВИЋ РАДОМИР
+РАКОВИЋ РАТКО
+РАКОВИЋ СЛАВКО
+РАКОВИЋ СТАНИСЛАВ
+РАКОВИЋ ТОМИСЛАВ
+РАКОВИЋ ВИТОМИРКА
+РАКОВИЋ ВЛАДО
+РАКУШИЋ ВЛАДИМИР
+РАЛЕТИЋ ЖИВКА
+РАЛЕТИЋ ЂОРЂЕ
+РАЛЕТИЋ ЂУРА
+РАЛЕТИЋ АНЂЕЛКА
+РАЛЕТИЋ АНА
+РАЛЕТИЋ БОГДАН
+РАЛЕТИЋ ДОБРИЦА
+РАЛЕТИЋ ДРАГАН
+РАЛЕТИЋ ДУШАН
+РАЛЕТИЋ ИЛИЈА
+РАЛЕТИЋ ЈЕЛИЦА
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛЕПОСАВА
+РАЛЕТИЋ МАЈА
+РАЛЕТИЋ МИЛАН
+РАЛЕТИЋ МИЛОШ
+РАЛЕТИЋ МИЛОШ
+РАЛЕТИЋ МИЛОРАД
+РАЛЕТИЋ МИРКО
+РАЛЕТИЋ МИРОСЛАВ
+РАЛЕТИЋ МЛАДЕН
+РАЛЕТИЋ ПЕТАР
+РАЛЕТИЋ-САВИЋ ЈЕЛЕНА
+РАЛЕТИЋ-САВИЋ ЈЕЛЕНА
+РАЛЕТИЋ ВЕЉКО
+РАЛЕТИЋ ВЕРА
+РАЛЕТИЋ ЗОРАН
+РАЛЕТИЋ ЗОРИЦА
+РАЛЕВИЋ НЕБОЈША
+РАЛИЋ ЖИВОЈИН
+РАЛИЋ БРАНКО
+РАЛИЋ ДРАГИЦА
+РАЛИЋ ДУШАН
+РАЛИЋ МАРИЈА
+РАЛИЋ МАРИЈА
+РАЛИЋ МИЛЕ
+РАЛИЋ МОМИРКА
+РАЛИЋ СТЕВАН
+РАЛИЋ СТЕВА
+РАЉИЋ АНЂЕЛКО
+РАЉИЋ ДРАГИЊА
+РАЉИЋ ДУШАН
+РАЉИЋ НЕДЕЉКО
+РАМАЧ АНИЦА
+РАМАЧ ИВАН
+РАМАЧ ЈУЛИЈАН
+РАМАЧ ЛЕОНА
+РАМАЧ ЉУБОМИР
+РАМАЧ ЉУБОМИР
+РАМАЧ ЉУБОМИР
+РАМАЧ МАРИЈА
+РАМАЧ МИХАЈЛО
+РАМАЧ МИХАЈЛО
+РАМАЧ МИРОСЛАВ
+РАМАЧ НАДА
+РАМАЧ НАТАЛИЈА
+РАМАЧ ПЕТАР
+РАМАЧ СИМЕОН
+РАМАЧ ВЛАДИМИР
+РАМАЧ ЗДЕНКА
+РАМАЋ МИЛЕВА
+РАМАДАНИ РОЗА
+РАМАДАНОВ МУМУДИЈА
+РАМАДАНОВИЋ ЂЕМАЉ
+РАМАДАНОВИЋ ЈАКОВ
+РАМАДАНОВСКИ НАДА
+РАМАДАНОВСКИ НЕДЕЉКО
+РАМАДАНСКИ ДРАГИЋ
+РАМАДАНСКИ ЈЕЛЕНА
+РАМАДАНСКИ МИЛИНКА
+РАМАЗАНОВ ВИКТОР
+РАМИЋ ЂУКА
+РАМИЋ ЈОВАНКА
+РАМИЋ ЛАЗАР
+РАМИЋ ЛУКА
+РАМИЋ ЛУКА
+РАМИЋ МИЛОШ ДИПЛ ОЕЦ
+РАМИЋ НИКОЛА
+РАМИЋ РАДОЈКА
+РАМИЋ СТОЈАН
+РАМИЋ ВЕЛИДА
+РАМЉАК ВЛАДИМИР
+РАМЉАК ЗЛАТКО
+РАНЧИЋ ШИМЕ
+РАНЧИЋ ДУШАНКА
+РАНЧИЋ ХРАНИСЛАВ
+РАНЧИЋ ЈОРДАН
+РАНЧИЋ МИЛОШ
+РАНЧИЋ РАНКО
+РАНЂЕЛОВИЋ ЂОРЂЕ
+РАНЂЕЛОВИЋ ХРАНИСЛАВ
+РАНЂЕЛОВИЋ ИЛИЈА
+РАНЂЕЛОВИЋ ЉИЉАНА
+РАНЂЕЛОВИЋ ЉУБИША
+РАНЂЕЛОВИЋ ЉУБОДРАГ
+РАНЂЕЛОВИЋ МИРЈАНА
+РАНЂЕЛОВИЋ МИРОСЛАВ
+РАНЂЕЛОВИЋ МИРОСЛАВ
+РАНЂЕЛОВИЋ МЛАДЕН
+РАНЂЕЛОВИЋ ОБРАД
+РАНЂЕЛОВИЋ РУЖИЦА
+РАНЂЕЛОВИЋ СЛАВОЉУБ
+РАНЂЕЛОВИЋ СТЕВАН
+РАНЂЕЛОВИЋ ТОМИСЛАВ
+РАНЂЕЛОВИЋ ВЛАСТИМИР
+РАНЂЕЛОВИЋ ЗОРАН
+РАНДЕЉ ЂОРЂЕ
+РАНДЕЉ ЂУРЂИНКА
+РАНДЕЉ ЛАЗАР
+РАНДЕЉ ОЛИВЕРА
+РАНДЕЉ ПЕТАР
+РАНДЕЉ СТЕВАН
+РАНДЕЉ СВЕТОЗАР
+РАНГЕЛОВ ДИМИТАР
+РАНГЕЛОВ СТЕВАН
+РАНГЕЛОВ СТЕВАН
+РАНИЋ ВЛАДИСЛАВ
+РАНИН ЈОВАН
+РАНИН ЛАЗАР
+РАНИСАВ РАДИВОЈ
+РАНИСАВЉЕВ ЖИВКО
+РАНИСАВЉЕВ ЂОРЂЕ
+РАНИСАВЉЕВ ЂОРЂЕ
+РАНИСАВЉЕВ ГОРДАНА
+РАНИСАВЉЕВ МИЛИЦА
+РАНИСАВЉЕВ МИЛОШ
+РАНИСАВЉЕВ ПАЈА
+РАНИСАВЉЕВ РАДА
+РАНИСАВЉЕВ РАДМИЛА
+РАНИСАВЉЕВ РАДМИЛА
+РАНИСАВЉЕВ РАДОСЛАВ
+РАНИСАВЉЕВ СЛАВОЉУБ
+РАНИСАВЉЕВ СТЕВАН
+РАНИСАВЉЕВ ТИЈАНА
+РАНИСАВЉЕВИЋ ЖАРКО
+РАНИСАВЉЕВИЋ ЖЕЉКО
+РАНИСАВЉЕВИЋ БОГУМИЛА
+РАНИСАВЉЕВИЋ ДОБРИВОЈ
+РАНИСАВЉЕВИЋ ДУШАН
+РАНИСАВЉЕВИЋ ЈЕЛЕНА
+РАНИСАВЉЕВИЋ НЕБОЈША
+РАНИСАВЉЕВИЋ РАДИВОЈ
+РАНИСАВЉЕВИЋ СИНИША
+РАНИСАВЉЕВИЋ СЛАВКА
+РАНИСАВЉЕВИЋ ВИОЛЕТА
+РАНИСАВЉЕВИЋ ЗОРАН
+РАНИСЛАВ-ЛАРТY НАДА ДР
+РАНИТОВИЋ БОШКО
+РАНИТОВИЋ БОГОЉУБ
+РАНИТОВИЋ ДИВНА
+РАНИТОВИЋ ДРАГОСЛАВ
+РАНИТОВИЋ ЈЕЛИЦА
+РАНИТОВИЋ СЛАВИЦА
+РАНИТОВИЋ ВЕЛИСЛАВ
+РАНКИЋ СТЕВО
+РАНКИЋ ТОМИСЛАВ
+РАНКОВ АНКИЦА
+РАНКОВ ДРАГАН ДР
+РАНКОВ ДРАГОЉУБ
+РАНКОВ ГРОЗДА
+РАНКОВ ИРЕНА
+РАНКОВ ИВАНКА
+РАНКОВ ЈОВАН
+РАНКОВ КОСТА
+РАНКОВ ЉИЉАНА
+РАНКОВ ЉУБИЦА
+РАНКОВ МАРИЈА
+РАНКОВ МИЛАН
+РАНКОВ МИЛИВОЈ
+РАНКОВ МИРОСЛАВ
+РАНКОВ НЕДЕЉКО
+РАНКОВ НЕДЕЉКО
+РАНКОВ ОЛГИЦА
+РАНКОВ ПЕТАР
+РАНКОВ РАДИСЛАВ
+РАНКОВ РАДМИЛА
+РАНКОВ РАДОЈКА
+РАНКОВ СТЕВАН
+РАНКОВ СТЕВАН
+РАНКОВ ТАНАСИЈЕ
+РАНКОВ ЗОРА
+РАНКОВИЋ ЖИВКО
+РАНКОВИЋ АНЂЕЛКА ДР
+РАНКОВИЋ АНДРИЈА
+РАНКОВИЋ АНКА
+РАНКОВИЋ БОШКО
+РАНКОВИЋ БОЈАН
+РАНКОВИЋ БОРИВОЈ
+РАНКОВИЋ БРАНИСЛАВ
+РАНКОВИЋ БРАНКА
+РАНКОВИЋ ДАРИНКА
+РАНКОВИЋ ДЕСАНКА
+РАНКОВИЋ ДРАГО
+РАНКОВИЋ ДУШАН
+РАНКОВИЋ ДУШИЦА
+РАНКОВИЋ ДУБРАВКА
+РАНКОВИЋ ИРЕНА
+РАНКОВИЋ ИВАН
+РАНКОВИЋ ЈОВАН
+РАНКОВИЋ ЉУБИЦА
+РАНКОВИЋ МЕЛАНИЈА
+РАНКОВИЋ МИЛИЦА
+РАНКОВИЋ МИРОСЛАВ
+РАНКОВИЋ НИКОЛА ДИПЛ ИНГ
+РАНКОВИЋ ПРЕДРАГ
+РАНКОВИЋ РАДИВОЈ
+РАНКОВИЋ РАТОМИР
+РАНКОВИЋ РОЗАЛИЈА
+РАНКОВИЋ СЛОБОДАН
+РАНКОВИЋ СТЕВАН
+РАНКОВИЋ СВЕТОЗАР
+РАНКОВИЋ СВЕТОЗАР
+РАНКОВИЋ ТОМИСЛАВ
+РАНКОВИЋ ВУКОСАВА
+РАНКОВИЋ ЗОРАН
+РАНОГАЈЕЦ ИВАН
+РАОНИЋ ЂОРЂЕ
+РАОНИЋ ИКОНИЈА
+РАОНИЋ ЈАНКО
+РАОНИЋ РАДЕНКО
+РАОНИЋ СПАСОЈЕ
+РАОНИЋ ВУКОЛА
+РАПЧО КАТАЛИН
+РАПАИЋ ДЕЈАН
+РАПАИЋ МИОДРАГ ДР
+РАПАИЋ РАДЕНКА
+РАПАИЋ СТЕВАН
+РАПАЈИЋ АНАМАРИЈА
+РАПАЈИЋ БОРИВОЈЕ
+РАПАЈИЋ ДУШКО
+РАПАЈИЋ МИЛАН АДВОКАТ
+РАПАЈИЋ МИЛАН
+РАПАЈИЋ МИЛАН
+РАПАЈИЋ РАДОЈА
+РАПАЈИЋ СТЕВАН
+РАПАЈИЋ ТАМАРА
+РАПИЋ БОРЕ
+РАПИЋ ДРАГОМИР
+РАПИЋ ДУШАНКА
+РАПИЋ ЈОВАН
+РАПИЋ ЈОВАН
+РАПИЋ МИЛАН
+РАПИЋ НАДА
+РАПИЋ НЕНАД
+РАПИЋ РАДЕ
+РАПИЋ РУШКО
+РАПО СТЈЕПАН
+РАПОТИ ИШТВАН
+РАСПОПОВИЋ БОШКО
+РАСПОПОВИЋ МИЛОШ
+РАСПОПОВИЋ СЛОБОДАН
+РАСПОПОВИЋ СВЕТИСЛАВ
+РАСПОПОВИЋ ВЛАДИСЛАВ
+РАСТАВАЦ ПЕТАР
+РАСТИК ЂОРЂЕ
+РАСТОВАЦ ЂУРО
+РАСТОВИЋ ИЛИЈА
+РАСТОВИЋ ЈЕЛЕНА
+РАСТОВИЋ МИЛАН
+РАСТОВИЋ МИЛИЦА
+РАСТОВИЋ-ПЛИВЕЛИЋ ДЕСАНКА
+РАСТОВИЋ РАДОЈКА
+РАСТОВИЋ СЛОБОДАН
+РАСТОВИЋ СТЕВАН
+РАСТОВИЋ ВЕРА
+РАТ ФЕРЕНЦ
+РАТ ФРАЊА
+РАТ ЈАКОБ
+РАТ ЈОСИП
+РАТАЈАЦ ДРАГОЉУБ ДР
+РАТГЕБЕР ЈУЛИЈА
+РАТГЕБЕР ЛАСЛО
+РАТИЋ ЂУРЂИНА
+РАТИЋ БОРА
+РАТИЋ ДУШАН
+РАТКЕЛИЋ МИЛАН
+РАТКОВ ЖИВКО
+РАТКОВ ЂОРЂЕ
+РАТКОВ АЦА
+РАТКОВ БОРИВОЈ
+РАТКОВ ЦЕЦИЛИЈА
+РАТКОВ ДРАГАН
+РАТКОВ ДРАГИЊА
+РАТКОВ ДРАГИЊА
+РАТКОВ ДУШАНКА
+РАТКОВ ДУШАН
+РАТКОВ ЈЕЛЕНА
+РАТКОВ ЈУЛИЈАНА
+РАТКОВ КАТАРИНА
+РАТКОВ ЛЕПОСАВА
+РАТКОВ МИЋО
+РАТКОВ МИЛЕНКО
+РАТКОВ МИЛЕНКО
+РАТКОВ МИЛИЦА
+РАТКОВ НЕНАД
+РАТКОВ НЕНАД
+РАТКОВ ПАВЛЕ
+РАТКОВ ПРЕДРАГ
+РАТКОВ РАДЕ
+РАТКОВ РАДИВОЈ
+РАТКОВ РАДОМИР
+РАТКОВ РУЖИЦА
+РАТКОВ САВКА
+РАТКОВ СМИЉАНА
+РАТКОВ СТАНИСЛАВА
+РАТКОВ СТАНИСЛАВ
+РАТКОВ ВЕРА
+РАТКОВ ВИДОСАВА
+РАТКОВ ВЛАДИМИР
+РАТКОВ ВЛАДИМИР
+РАТКОВ ВОЈИСЛАВ
+РАТКОВ ВУЈИЦА
+РАУШ КЛАУДИЈА
+РАУШ РИХАРД
+РАУШЕНБЕРГЕР МАРТИН
+РАУШКИ ЂОРЂЕ
+РАУШКИ АНГЕЛИНА
+РАУШКИ ДАНИЛО
+РАУШКИ ЉИЉАНА
+РАУШКИ МИЛАНА
+РАУШКИ МИЛОШ
+РАУСАВЉЕВИЋ ЂОРЂЕ
+РАУСАВЉЕВИЋ ДУШАНКА
+РАУЗА ПАЛКО
+РАВАЈИЋ ЂУРО
+РАВАСИ ЉУБИЦА
+РАВИЋ НИКОЛА
+РАВИЋ СЛОБОДАНКА
+РАВЛИЋ-БАЊАЦ СНЕЖАНА
+РАВЛИЋ ПЕЈО
+РАВЛИЋ ВИДА
+РАВЛИЈА ДРАГАН
+РАЗДЕВШЕК СТОЈАНКА
+РАЗИЋ ЏЕМАЛ
+РАЗМОВСКИ НИКОЛА
+РАЗУМЕНИЋ-КОТРОШАН МИЛЕНА
+РЕЧЕИ ИЛОНКА
+РЕЧКО ИЛЕШ
+РЕШЋАНСКИ БОШКО
+РЕШЋАНСКИ БОГДАН
+РЕШЋАНСКИ ВЕРА
+РЕШЕТАР АНТЕ
+РЕШЕТАР СТАНА
+РЕШЕТАРОВИЋ ЈОВАН
+РЕШИТИ ЂОРЂЕ
+РЕШЊАК АНДРИЈА
+РЕШЊАК ЛАСЛО
+РЕШЊАК СТЕВАН
+РЕШЊАК ЗОРИЦА
+РЕЖЊАК ЛАСЛО
+РЕЖУК ЈОСИП
+РЕЂЕП ДРАШКО
+РЕЂЕПИ ЏЕЉАН
+РЕЂЕПИ МИЛАИМ
+РЕЂЕПОВИЋ АЛИЈА
+РЕБА БЛАГОЈЕ
+РЕБА ИГОР
+РЕБА ИГОР
+РЕБИЋ БОГДАН ДИПЛ ИНГ
+РЕБИЋ ДРАГАН
+РЕБИЋ НЕДЕЉКО
+РЕБИЋ НЕДЕЉКО
+РЕБИЋ СИМЕОН
+РЕБИЋ СИМО
+РЕБИЋ СЛОБОДАН ДР
+РЕБИЋ ВЛАДИМИР
+РЕБРИНА КАТАРИНА
+РЕЏА ИБРАХИМ
+РЕЏЕК ЈОВАН
+РЕЏЕП ЈУСНИЈА
+РЕЏЕПОВ ШЕВКИН
+РЕЏЕПОВ КАМБЕР
+РЕДЕ РУДОЛФ
+РЕДИГ ВИЛИМ
+РЕДЛИ ЂОРЂЕ
+РЕДЛИ МАРИЈА
+РЕДЛИ ВЕРА
+РЕГАЈЗ СТЕВАН
+РЕГЕЦ ЕТЕЛКА
+РЕГЕЉАЦ ЉУБИЦА
+РЕГЕЉАЦ МАРА
+РЕГЕР ЈОВАН
+РЕГЛ ВЛАДИМИР
+РЕГОДИЋ СВЕТОЗАР
+РЕГОЈЕВИЋ МЛАЂЕНКО
+РЕХАК ИМРЕ
+РЕХАК ЛАСЛО
+РЕХАК ОЛГА
+РЕХНЕР МАРИЈА
+РЕХНЕР СТАМЕНКА
+РЕИНХОЛЦ ЂЕЗЕ
+РЕИНХОЛЦ ЂЕЗЕ
+РЕИНХОЛЗ ЂЕЗЕ
+РЕКА АРИФ
+РЕКА-ИВАНОВИЋ ДУШИЦА
+РЕКЕЋЕ ШАНДОР
+РЕКЕЦКИ ЕЛЕОНОРА
+РЕКЕЦКИ ЈОЖЕФ
+РЕКИЋ ХУСЕИН
+РЕЛИЋ ЂОРЂЕ
+РЕЛИЋ ЂОРЂЕ
+РЕЛИЋ ДАРКО
+РЕЛИЋ ДИМИТРИЈЕ
+РЕЛИЋ ГОЈКО
+РЕЛИЋ ЈОВАН
+РЕЛИЋ ЈОВИЦА
+РЕЛИЋ КОНСТАНТИН
+РЕЛИЋ ЉУБАН
+РЕЛИЋ МИЛАН
+РЕЛИЋ МИЛЕНКО
+РЕЛИЋ МИЛИВОЈ
+РЕЛИЋ МИРА
+РЕЛИЋ ПАВЛЕ
+РЕЛИЋ ПЕТАР
+РЕЛИЋ РАДИНКА
+РЕЛИЋ САВА
+РЕЛИЋ СЛАВОЉУБ
+РЕЛИЋ СОФИЈА
+РЕЛИЋ СОФИЈА
+РЕЛИЋ СПОМЕНКА ДИПЛ ПРАВНИК
+РЕЛИЋ СРЕТА
+РЕЉАНОВИЋ МАРИЈА
+РЕЉИЋ ЂУРИЦА
+РЕЉИЋ ЂУРО
+РЕЉИЋ БОЖИДАР
+РЕЉИЋ ДАМЈАНКА
+РЕЉИЋ ДАНИЛО
+РЕЉИЋ ЈОВАН
+РЕЉИЋ ЉУБОМИР
+РЕЉИЋ МАРА
+РЕЉИЋ МИЛОРАД
+РЕЉИЋ РОМАН
+РЕЉИЋ СЛАВКО
+РЕЉИЋ СМИЉА
+РЕЉИЋ СНЕЖАНА
+РЕЉИЋ СТЕВАН
+РЕЉИЋ СТЕВА
+РЕЉИЋ ЗЛАТКО
+РЕЉИЋ ЗОРКА
+РЕЉИН ДУШАНКА
+РЕЉИН ДУШАН
+РЕЉИН ДУШАН
+РЕЉИН ИГЊАТ ДР
+РЕЉИН ИЛОНА
+РЕЉИН ИВАН
+РЕЉИН ЛАЗАР
+РЕЉИН ЛЕПОСАВА
+РЕЉИН МАРИЦА
+РЕЉИН МИЛАН
+РЕЉИН МИЛАН
+РЕЉИН МИЛИЦА
+РЕЉИН МИЛИВОЈ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОРАД
+РЕЉИН НАДА
+РЕЉИН ПРОКОПИЈЕ
+РЕЉИН РАДОВАН
+РЕЉИН САВА
+РЕЉИН СИМА
+РЕЉИН СЛОБОДАН
+РЕЉИН СТЕВАН
+РЕЛОТА РУДОЛФ
+РЕМЕЦКИ ДРАГУТИН
+РЕМЕЦКИ ПЕТАР
+РЕМЕЛИ АНТОН
+РЕМЕЛИ ЛАСЛО
+РЕМЕНАР ДРАГУТИН
+РЕМЕР БРАНИСЛАВ
+РЕМЛИНГЕР РОБЕРТ
+РЕНЧАР ШАНДОР
+РЕНЧАР ТИВАДАР
+РЕНЧЕВИЋ МИЛАН
+РЕНДУЛИЋ МАРКО
+РЕНДУЛИЋ СТОЈАН
+РЕПШТОК ЈОЖЕФ
+РЕПАШИ ЈОСИП
+РЕПАШИ СТЕВАН
+РЕПАЦ ЖУЖАНА
+РЕПАЦ ЂОРЂЕ
+РЕПАЦ АНА
+РЕПАЦ ИСА
+РЕПАЦ ЈОВАН
+РЕПАЦ КОВИЉКА
+РЕПАЦ МИРОСЛАВ
+РЕПАЦ ПЕРКИЦА
+РЕПАЦ ПЕТАР
+РЕПАЦ СЛАВКО
+РЕПАЦ СТАНИША
+РЕПАЦ ВАСИЛИЈА
+РЕПИЋ ЖИВАН
+РЕПИЋ ДАНИЦА
+РЕПИЋ ЕМИЛ
+РЕПИЋ ГИЗЕЛА
+РЕПИЋ ИВАН
+РЕПИЋ МАРКО
+РЕПИЋ МИЛЕНА
+РЕПИЋ МИЛКА
+РЕПИЋ ВЕРИЦА
+РЕПИЋ ЗОРАН
+РЕСАН АНА
+РЕСАНОВИЋ АНКА
+РЕСАНОВИЋ ДРАГАН
+РЕСАНОВИЋ ЉУБО
+РЕСАНОВИЋ НАДА
+РЕСАНОВИЋ ПЕРО
+РЕСМАН ЗДРАВКО
+РЕСУЛОВСКИ СТОЈАН
+РЕУ ЛАВИНЕЛ
+РЕВЕС АНДРИЈА
+РЕВИД КАТАРИНА
+РЕЗАНЦОВ КАТИЦА
+РЕЗЕЦ АНТОН
+РЕЗНИЧЕК КАРЛО
+РИЖАЊИ ИРЕНА
+РИЂИЧКИ ЂОКА
+РИЂИЧКИ ЂОРЂЕ
+РИЂИЧКИ МИЛАНКА
+РИЂИЧКИ МИЛАН
+РИЂИЧКИ СПОМЕНКА
+РИЂИК-ГРУЈИЋ ЧЕДОМИР
+РИЂИК-ГРУЈИЋ ЈАДРАНКА
+РИЂИК-ГРУЈИЋ ВЕЛИМИР
+РИБАР ШАНДОР
+РИБАР БЕЛА ДР
+РИБАР ИМРЕ
+РИБАР КАТИЦА
+РИБАРЕВИЋ ВЕРА
+РИБАРОВ МИРОСЛАВ
+РИБАРОВ СЛАВИЦА
+РИБИЧ РУЖА
+РИБИЋ ЧЕДО
+РИБИЋ БРАНКО
+РИБИЋ ФРАНЦ
+РИБИЋ ЈОВАН
+РИБИЋ МИХАЈЛО
+РИБИЋ МИЛАН
+РИБИЋ ПАВО
+РИБИЋ ПЕТАР
+РИБИЋ СТАНКО
+РИБИЋ ЗОРИЦА
+РИБОВИЋ АМАЛИЈА
+РИЦ МИХАЉ ДИПЛ ОЕЦ
+РИЦ РУДОЛФ
+РИЦ ВЕСЕЛИН
+РИЦА АНИЦА
+РИЦЕ МАРГИТА
+РИГО ЂУЛА
+РИГО ЛАСЛО
+РИХАК НАНДОР
+РИХТАРЕЦ КАТАРИНА
+РИЈАВЕЦ ИВАН
+РИКЕР ЗВОНИМИР
+РИКИЋ ЖЕЉКО
+РИКИЋ ДРАГИЦА
+РИКИЋ МИЛАДИН
+РИКИЋ МИЛЕНКО
+РИЛ ПАЛ
+РИЛАК МИЛОМИР
+РИЛКЕ РОБЕРТ
+РИМШНАЈДЕР РОБЕРТ
+РИМАЦ ЈОСИП
+РИМАН ЕГОН ДР
+РИМАР ЛЕОНА
+РИМАР ВЛАДИМИР
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЂОКА
+РИМСКИ БИСЕРКА
+РИМСКИ БИСЕРКА
+РИМСКИ БРАНИСЛАВ
+РИМСКИ БРАНКА
+РИМСКИ БРАНКО
+РИМСКИ ЈАСМИНА
+РИМСКИ ЈЕЛЕНА
+РИМСКИ МИЛАН
+РИМСКИ МИЛИЦА
+РИМСКИ НАТАЛИЈА
+РИМСКИ НОВАК
+РИМСКИ САВА
+РИМСКИ САВА
+РИМСКИ СМИЉА
+РИМСКИ СМИЉА
+РИМСКИ СТЕВАН
+РИС ШАНДОР
+РИС АЛЕКСАНДАР
+РИС ДРАГИЊА
+РИС ДУШКО
+РИС ГЕЗА
+РИС НЕДЕЉКО
+РИС СТЕВАН
+РИС ТАЊА
+РИС ЗДРАВКО
+РИСОВИЋ ДУШАН
+РИСОВИЋ НЕДЕЉКО
+РИСОВИЋ НЕДЕЉКО
+РИСТА ЖЕЉКА
+РИСТАНОВИЋ ЦВЕТИН
+РИСТАНОВИЋ РАДЕ
+РИСТАНОВИЋ РАДОСЛАВ
+РИСТАНОВИЋ ВЕРИЦА
+РИСТАНОВИЋ ВОЈИМИР
+РИСТАНОВИЋ ЗДРАВКО
+РИСТАНОВИЋ ЗОРАН
+РИСТАНОВИЋ ЗОРАН
+РИСТИЋ ЂОРЂЕ ДР ЛЕКАР
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂУЈА
+РИСТИЋ ЂУРЂА
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСА
+РИСТИЋ АНДРИЈА
+РИСТИЋ БОЖИДАР
+РИСТИЋ БОЖИДАР
+РИСТИЋ БОРА
+РИСТИЋ БОРИСЛАВ
+РИСТИЋ БРАНИСЛАВ
+РИСТИЋ БРАНКО
+РИСТИЋ ЦВЈЕТАНКА
+РИСТИЋ ДАНИЛО
+РИСТИЋ ДАРИНКА
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДОБРИВОЈЕ
+РИСТИЋ ДРАГАН
+РИСТИЋ ДРАГАН
+РИСТИЋ ДРАГИША
+РИСТИЋ ДРАГИЦА
+РИСТИЋ ДРАГОЈЛА
+РИСТИЋ ДРАГОЉУБ
+РИСТИЋ ДРАГОЉУБ
+РИСТИЋ ДУШАН ДР
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ГАВРИЛО
+РИСТИЋ ИСИДОР
+РИСТИЋ ЈАСМИНА
+РИСТИЋ ЈЕЛЕНА
+РИСТИЋ ЈЕЛЕНА
+РИСТИЋ ЈЕРЕМИЈА
+РИСТИЋ ЈОВАН ДР
+РИСТИЋ ЈОВАН ДР
+РИСТИЋ ЈОВАН
+РИСТИЋ КСЕНИЈА
+РИСТИЋ ЛАБУД ДР ЛЕКАР
+РИСТИЋ ЛАЗАР
+РИСТИЋ ЉИЉАНА
+РИСТИЋ ЉИЉАНА
+РИСТИЋ ЉУБИЦА
+РИСТИЋ ЉУБИЦА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈЕНКА
+РИСТИЋ МАРКО
+РИСТИЋ МИХАЈЛО
+РИСТИЋ МИЛАНКА
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛЕТА
+РИСТИЋ МИЛИВОЈЕ
+РИСТИЋ МИЛКА
+РИСТИЋ МИЛОШ
+РИСТИЋ МИЛОШ
+РИСТИЋ МИЛОРАД
+РИСТИЋ МИЛОРАД
+РИСТИЋ МИЛУН
+РИСТИЋ МИЛУТИН
+РИСТИЋ МИОДРАГ
+РИСТИЋ МИОДРАГ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МЛАДЕН
+РИСТИЋ НАДА
+РИСТИЋ НАТАЛИЈА
+РИСТИЋ НЕГОВАН
+РИСТИЋ НЕСТОР
+РИСТИЋ НИКОЛА
+РИСТИЋ НИКОЛА
+РИСТИЋ НОВИЦА
+РИСТИЋ ОЛГА
+РИСТИЋ ПАВЛЕ
+РИСТИЋ ПЕРА
+РИСТИЋ ПЕТАР
+РИСТИЋ-ПОПОВИЋ МИЛИЦА
+РИСТИЋ РАДИСАВ
+РИСТИЋ РАИСА
+РИСТИЋ РОДОЉУБ ДР
+РИСТИЋ САВА
+РИСТИЋ САВА
+РИСТИЋ САВО
+РИСТИЋ СЛАЂАН
+РИСТИЋ СЛАВИЦА
+РИСТИЋ СЛАВИЦА
+РИСТИЋ СЛАВКО
+РИСТИЋ СПОМЕНКА
+РИСТИЋ СТАНИША
+РИСТИЋ СТАНОЈЕ ДР
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВИЦА
+РИСТИЋ СВЕТИСЛАВ
+РИСТИЋ ТЕМЕЉКО
+РИСТИЋ ТОМИСЛАВ
+РИСТИЋ ВЕРИЦА
+РИСТИЋ ВИТОМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВОЈИН
+РИСТИЋ ВОЈИСЛАВ
+РИСТИЋ ЗАГОРКА
+РИСТИЋ ЗДРАВКО
+РИСТИЋ ЗОРАН
+РИСТИЋ ЗОРАН
+РИСТИН ЈОВАН
+РИСТИН МИОДРАГ
+РИСТИН МИОДРАГ
+РИСТИВОЈЕВИЋ АНЂЕЛКА
+РИСТИВОЈЕВИЋ АНИЦА
+РИСТИВОЈЕВИЋ ДЕСИМИР
+РИСТИВОЈЕВИЋ ИГЊАТ
+РИСТИВОЈЕВИЋ РАДОМИР
+РИСТИВОЈЕВИЋ РАТОМИР
+РИСТИВОЈЕВИЋ СТОЈАНКА
+РИСТИВОЈЕВИЋ ЗДРАВКО
+РИСТОВИЋ ЈОВАНКА
+РИСТОВИЋ НЕБОЈША
+РИСТОВИЋ РАДИВОЈЕ
+РИСТОВИЋ РАТКО
+РИСТОВСКИ АЛЕКСАНДАР
+РИСТОВСКИ КОСТА
+РИСТОВСКИ ЉИЉАНА
+РИСТОВСКИ ЉИЉАНА
+РИСТОВСКИ ЉУБО
+РИСТОВСКИ СИМЕОН
+РИТЕР АНКИЦА
+РИТЕР АНТОН
+РИТЕР ФРАЊА
+РИТЕР ЈОЖЕФ
+РИТЕР ЛУДВИГ
+РИТЕР НАДА
+РИТОЦ ГЕЗА
+РИТТЕР ШАНДОР
+РИВИЋ ИВО
+РИЗНИЋ БРАНИСЛАВА
+РИЗНИЋ ВЕЉКО
+РИЗНИЋ ВЕЉКО
+РИЗОВСКИ ДРАГО
+РИЗВАН ШУКРИ
+РИЗВАНОВИЋ САДИК
+РМУШ ЗОРИЦА
+РНИЋ МИХАИЛО
+РЊАК ДАНИЦА
+РЊАК СТАНКО
+РОШИН КСЕНИЈА
+РОШИН ЗОРКО
+РОШУ КОСТА
+РОШУЉ ЖИВАН
+РОШУЉ ЖИВА
+РОШУЉ АНЂЕЛКА
+РОШУЉ ЕМИЛ
+РОШУЉ ЛАЗАР
+РОШУЉ МИЛАНА
+РОШУЉ МИЛОРАД
+РОШУЉ РАДОВАН
+РОШУЉ СВЕТОЗАР
+РОШУЉ ЗОРАН
+РОШУЉА ВАСА
+РОШУЛОВ СТАДОЈЕ
+РОЖА БЕЛА
+РОЖА ФЕРЕНЦ
+РОЖА ЈАНОШ
+РОЖА ЈОВАН
+РОЖА МИРКО
+РОЖАНКОВИЋ ИВАН
+РОЂАК ФРАЊА
+РОЂЕНКОВ ЖИВОЈИН
+РОЂЕНКОВ ЂУРА
+РОЂЕНКОВ МИЛОШ
+РОБОТИЋ АНА
+РОБОТИЋ ТЕРЕЗА
+РОД ДАНИЦА
+РОДИЋ ЧЕДОМИР
+РОДИЋ ЧЕДОМИР
+РОДИЋ ШПИРО
+РОДИЋ ЂОРЂЕ
+РОДИЋ АЛЕКСАНДАР
+РОДИЋ АНДРИЈА
+РОДИЋ БОЖО
+РОДИЋ БОЖО
+РОДИЋ БОГДАН
+РОДИЋ БОРИСЛАВ
+РОДИЋ БОРИСЛАВ
+РОДИЋ БРАНИСЛАВ
+РОДИЋ ДАНИЦА
+РОДИЋ ДРАГАН
+РОДИЋ ДРАГОМИР
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ГОЈКО
+РОДИЋ ГОЈКО
+РОДИЋ ГОЈКО
+РОДИЋ ЈЕЛИСАВЕТА
+РОДИЋ ЈОВО
+РОДИЋ ЛЕПА
+РОДИЋ ЉИЉАНА
+РОДИЋ МАНОЈЛО
+РОДИЋ МИЋА
+РОДИЋ МИЋО
+РОДИЋ МИЛАН
+РОДИЋ МИЛЕНА
+РОДИЋ МИЛИЦА
+РОДИЋ МИЛИЦА
+РОДИЋ МИЛКА
+РОДИЋ МИЛОШ
+РОДИЋ МИЛОРАД
+РОДИЋ МИРКО
+РОДИЋ МИРОСЛАВ
+РОДИЋ НАТАЛИЈА
+РОДИЋ НЕЂО
+РОДИЋ НЕДЕЉКО
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ ОЛГА
+РОДИЋ ПЕТАР ДИПЛ ИНГ
+РОДИЋ ПЕТАР
+РОДИЋ ПЕТРА
+РОДИЋ РАДЕ
+РОДИЋ РАНКО
+РОДИЋ СЛАВКО
+РОДИЋ СМИЉА
+РОДИЋ СРЕТЕН
+РОДИЋ СТАНКО
+РОДИЋ СТЕВАН
+РОДИЋ СУЗАНА
+РОДИЋ СУЗАНА
+РОДИЋ СВЕТКО
+РОДИЋ-ТОМЉАНОВИЋ МИРЈАНА
+РОДИЋ ВЕРИЦА
+РОДИЋ ЗОРАН
+РОГАЧ СВЕТЛАНА
+РОГАЧ СВЕТОЗАР
+РОГАЧЕВИЋ ОБРАД
+РОГАЉСКИ ЈЕЛЕНА
+РОГАЛО АНТОН
+РОГАН СВЕТОЗАР
+РОГАНОВИЋ КАТАРИНА
+РОГАНОВИЋ ЛУКА
+РОГАНОВИЋ МИЛАНКА
+РОГАНОВИЋ НАДА
+РОГАНОВИЋ НОВАК
+РОГАНОВИЋ СЛОБОДАН
+РОГАНОВИЋ СТЕВО
+РОГАНОВИЋ ТАЊА
+РОГАНОВИЋ ВЕЛИЗАР
+РОГАВАЦ МИЛАН
+РОГИЋ АЛЕКСА
+РОГИЋ МИЛОРАД
+РОГИЋ САВА
+РОГИЋ ВЕЉКО
+РОГИЋ ВЕСЕЛИН
+РОГИЋ ВЕСНА
+РОГИЋ ЗОРАН
+РОГЛИЋ ИВАН
+РОГЛИЋ ЉУБОМИР
+РОГЛИЋ МИЛАН
+РОГЛИЋ ВЕСНА
+РОГЛИЋ ВЕСНА
+РОГОЖАРСКИ СТЕВАНКА
+РОГУЛИЋ ЈЕЛЕНА
+РОГУЉА ЂОРЂЕ
+РОГУЉА ИЛИЈА
+РОГУЉА ЈОВАН
+РОГУЉА НИКОЛА
+РОГУЉА ПАВЛЕ ДР
+РОГУЉИЋ МИЛОРАД
+РОГУЉИЋ НЕДЕЉКО
+РОГУЉИЋ ПРЕДРАГ
+РОГУЉИЋ ЗДРАВКО
+РОЈКА АНДРЕЈ
+РОЈКА АНДРЕЈ
+РОЈНИК ЉУБОМИР
+РОКА ЖУЖАНА
+РОКА ЈАНОШ
+РОКА ВАЛЕРИЈА
+РОКАИ ПЕТАР
+РОКИЋ ДУШАН
+РОКИЋ МИЛЕНКО
+РОКЛИЦЕР ФРАЊА
+РОКЛИЦЕР ЈОСИП
+РОКНИЋ ЈУЛКИЦА
+РОКНИЋ МИЛЕНКО
+РОКНИЋ МОМЧИЛО
+РОКСАНДИЋ АДАМ
+РОКСАНДИЋ МИЛАН
+РОКСАНДИЋ СИМА
+РОКСАНДИЋ ВЛАДИМИР
+РОКСАНДИЋ ВЛАДО
+РОКСИЋ СЛОБОДАН
+РОКВИЋ БОГДАН
+РОКВИЋ БРАНИСЛАВ
+РОКВИЋ ДУШАН
+РОКВИЋ ГОЈКО
+РОКВИЋ ЛАЗАР
+РОКВИЋ МАРКО
+РОКВИЋ МИЛАН
+РОКВИЋ МИЛИЦА
+РОКВИЋ МИЛОРАД
+РОКВИЋ НИКОЛА ДИПЛ ПОЛИТИКОЛОГ
+РОКВИЋ ОМИЉКО
+РОКВИЋ РАДИВОЈ
+РОКВИЋ РАДОЈКА
+РОКВИЋ РАНКО
+РОКВИЋ СИНИША
+РОКВИЋ ВЕСЕЛКО
+РОКВИЋ ЗДРАВКО
+РОЛАНД ТОМИСЛАВ
+РОЛОВИЋ ДУШАНКА
+РОЛОВИЋ ОЛГА
+РОМ БРАНКА
+РОМЧЕВ МИРОСЛАВ
+РОМАН ЈЕЛЕНА
+РОМАН ЉУБИЦА
+РОМАН МИНЕА
+РОМАН МИРОН
+РОМАН РОМКО
+РОМАНДИЋ АНКИЦА
+РОМАНДИЋ ЈЕЛЕНА
+РОМАНДИЋ СТАНИМИР
+РОМАНЕЛИ ГИНО
+РОМАНИЋ ДУШАН
+РОМАНИЋ ЕРЖЕБЕТ
+РОМАНИЋ ЈОЦ0
+РОМАНИЋ МАРИЈА
+РОМАНКИВ МИХАЈЛО
+РОМАНОВ ЈОСИП
+РОМАНОВ СНЕЖАНА
+РОМАНОВИЋ ЂОРЂЕ ДИПЛ ПРАВНИК
+РОМАНОВИЋ ЂОРЂЕ
+РОМАНОВИЋ АЛЕКСАНДАР
+РОМАНОВИЋ ИЛИНКА
+РОМАНОВИЋ МИЛАН
+РОМАНОВИЋ НАДА
+РОМАС ЈОСИП
+РОМИЋ ЕТА
+РОМИЋ ЈАНКО
+РОМИЋ ЉУБОМИР
+РОМИЋ ЉУБОМИР
+РОМИЋ МЛАДЕН
+РОМИЋ НЕНАД
+РОМИЋ ПАВЛЕ
+РОМИЋ ПРЕДРАГ
+РОМОДА ИШТВАН
+РОМОДА КАРЛО
+РОМОДА МАРИЈА
+РОНЧЕЛИ КАТИЦА
+РОНЧЕВИЋ БОГДАН
+РОНЧЕВИЋ ДРАГАН
+РОНЧЕВИЋ ИКОНИЈА
+РОНЧЕВИЋ КОСТА
+РОНЧЕВИЋ МИЛЕ
+РОНЧЕВИЋ НАДА
+РОНЧЕВИЋ ОБРАД
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ РАДИВОЈЕ
+РОНЧЕВИЋ САВЕТА
+РОНЧЕВИЋ САВО
+РОНЧЕВИЋ СТАНА
+РОНЧЕВИЋ СТАНИМИР
+РОНЧЕВИЋ СТАНИМИР
+РОНЧЕВИЋ СТЕВАН
+РОНЧЕВИЋ СТЕВАН
+РОНЧЕВИЋ ВЕРА
+РОНАИ МИРКО ДИПЛ ИНГ
+РОНТО ФРАНЦИШКА
+РОНТО ИЛОНКА
+РОНТО ЈАКОБ
+РОНТОВИЋ РАДОСЛАВ
+РОР ДЕСА
+РОРБАХЕР МАГДОЛНА
+РОСИЋ ЂУРО
+РОСИЋ БОГДАН
+РОСИЋ ДРАГАНА
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДУШАН
+РОСИЋ ГРОЗДАНА
+РОСИЋ ИЛИЈА
+РОСИЋ ЉИЉАНА
+РОСИЋ МИЛЕНА
+РОСИЋ МИЛИЦА
+РОСИЋ МИЛОРАД
+РОСИЋ МИОДРАГ
+РОСИЋ НИКОЛА
+РОСИЋ ОСТОЈА
+РОСИЋ ВЛАДИМИР
+РОСИЋ ЗОРАН
+РОСЛАВЉЕВ ВОЈИСЛАВ
+РОСО ИВАН
+РОСО МАРТА
+РОТ ДЕЗИДЕР
+РОТ ФРАЊА
+РОТАРИУ ТИБЕРИЈЕ
+РОТБАРТ ВЛАДИСЛАВ
+РОТИМ ИВАН
+РОВЧАНИН ЕУЂЕНИЈА
+РОВЧАНИН УЗЕИР
+РОВЧАНИН ВЕСЕЛИН
+РОВИЋ БРАНИСЛАВ
+РОВИЋ ДИМИТРИЈЕ
+РОВО МИХАЉ
+РОЗЕНТАЛ ДРАГИЦА
+РОЗЕНТАЛ КАРЛО
+РОЗЕНТАЛ МАРТОН
+РОЗИЋ АНТЕ
+РОЗМАРИНГ ИШТВАН
+РОЗМИРОВ ДРАГАН
+РОЗМИРОВ МИЛЕНКО
+РУШИТИ АЛИЈА
+РУШКО ЕРЖЕБЕТ
+РУШКУЦ ЂОРЂЕ
+РУШКУЦ АТАНАСИЈЕ
+РУШКУЦ МАРГАРИТА
+РУШКУЦ МАРТА
+РУШКУЦ ПАВЛЕ
+РУШКУЦ СТЕВАН
+РУШКУЦ СВЕТИСЛАВ
+РУШКУЦ ВЕСЕЛИН
+РУШКУЦ ВЛАДИМИР
+РУЖАНОВИЋ ДРАГОЉУБ
+РУЖАНОВИЋ МАРИЈА
+РУЖИЧИЋ ЂОРЂЕ
+РУЖИЧИЋ БОШКО
+РУЖИЧИЋ МИЛАН
+РУЖИЧИН ДАНИЦА
+РУЖИЧИН РАДИВОЈ
+РУЖИЧКА ЂУРА
+РУЖИЧКА РУЖА
+РУЖИЋ ЖАРКО
+РУЖИЋ АЛЕКСАНДАР
+РУЖИЋ ДРАЖАНА
+РУЖИЋ ДУШАН
+РУЖИЋ ДУШАН
+РУЖИЋ ДУШАН
+РУЖИЋ ЕМА
+РУЖИЋ ГОРДАНА
+РУЖИЋ ИВИЦА
+РУЖИЋ ЈОВАН
+РУЖИЋ ЈОВО
+РУЖИЋ ЈУЛКА
+РУЖИЋ КРСТО
+РУЖИЋ МАРИЈА
+РУЖИЋ МАРИЈА
+РУЖИЋ МИЛАН
+РУЖИЋ МИЛАН
+РУЖИЋ МИЛИВОЈ
+РУЖИЋ МИРА
+РУЖИЋ МИРЈАНА
+РУЖИЋ МИРЈАНА
+РУЖИЋ МИРКО
+РУЖИЋ НИКОЛА
+РУЖИЋ НИКОЛА
+РУЖИЋ ПАВА
+РУЖИЋ ПЕТАР
+РУЖИЋ РАДМИЛА
+РУЖИЋ РАДОМИР
+РУЖИЋ СЛОБОДАН
+РУЖИЋ СМИЉАНА
+РУЖИЋ СТАНКО
+РУЖИЋ-СТАРИ ВЕСНА
+РУЖИЋ СТЈЕПАН
+РУЖИЋ СВЕТОЛИК
+РУЖИЋ ВЕЉКО
+РУЖИЋ ВЛАДИМИР ДИПЛ ИНГ
+РУЖИЋ ЗОРАН
+РУЖИЋ ЗОРАН
+РУЖИН ЧЕДОМИР
+РУЖИН МИЛОРАД
+РУЖНИЦКИ ИВАН
+РУЂА НЕМАЊА
+РУЂА ЗОРАН
+РУЂА ЗОРАН
+РУБЕЖИЋ МИЛОВАН
+РУБЕЖИЋ СЛОБОДАН
+РУБИН МИЛАН
+РУБУШ АГНЕЗА
+РУБУШ ЈОЖЕФ
+РУДАН МАРКО
+РУДАН РАДИВОЈЕ
+РУДЕЖ ИЛИЈА
+РУДЕЖ МИЋО
+РУДЕЖ ПЕРА
+РУДЕК ЈАРОСЛАВ
+РУДЕК НИКОЛА
+РУДЕК НИКОЛА
+РУДИЋ ДАРКО
+РУДИЋ ДИМИТРИЈЕ
+РУДИЋ ДРАГАН
+РУДИЋ ДУШАН
+РУДИЋ ИМРЕ
+РУДИЋ ИВАН
+РУДИЋ ИВАН
+РУДИЋ ЈОСИП
+РУДИЋ ЛАЗАР
+РУДИЋ МАРКО
+РУДИЋ МАРКО
+РУДИЋ МИЛКА
+РУДИЋ НЕДЕЉКО
+РУДИЋ НИКОЛА
+РУДИЋ ПЕРА
+РУДИЋ СТЕВАН
+РУДИЋ СТЕВИЦА
+РУДИЋ-ВРАНИЋ НЕДЕЉКА
+РУДОЛФ КЛАЈН
+РУДОЛФ ОЛГА
+РУДОЛФ СПАСОЈЕ
+РУДОЛФ ЗОРАН
+РУДОВИЋ ДАНИЛО
+РУДОВИЋ ИЛИЈА
+РУДОВИЋ ЈУГОСЛАВ
+РУДОВИЋ МИРЈАНА
+РУДОВИЋ ЗОРАН
+РУФЧЕСКИ СЛОБОДАН
+РУЈЕВИЋ ЈАДРАНКА
+РУЈЕВИЋ МИЛЕВА
+РУКАВИНА-ШЛИБАР ХЕРМИНА
+РУКАВИНА АЛЕКСАНДАР
+РУКАВИНА БАРИЦА
+РУКАВИНА ДЕСПИНА
+РУКАВИНА ДОБРИЛА
+РУКАВИНА ДУШАН
+РУКАВИНА ЈУРЕ
+РУКАВИНА КРЕШИМИР
+РУКАВИНА ЉУБИЦА
+РУКАВИНА МАРИЈА
+РУКАВИНА МИЛКА
+РУКАВИНА РУДОЛФ
+РУКАВИНА РУДОЛФ
+РУКАВИНА СТЕВАН
+РУКАВИНА ЗВОНИМИР
+РУМАН МИХАЈЛО
+РУНИЋ МАРИЈА
+РУНИЋ МИЛАН ДИПЛ ИНГ
+РУЊАЈИЋ ИЛИЈА
+РУЊАНИН ЂОРЂЕ
+РУЊАНИН ВЛАДИСЛАВ
+РУЊАНИН ВОЈО
+РУЊИЋ АМАЛИЈА
+РУЊИЋ ДРАГАН
+РУЊИЋ ДРАГИЦА
+РУЊИЋ ГАВРИЛО
+РУЊИЋ ГОРАН
+РУЊО ЈОВАН
+РУНТИЋ БОШКО
+РУПЧИЋ ВЛАДИМИР
+РУПА АТИЛА
+РУПАР БРАНИСЛАВ
+РУПАР ЕРЖЕБЕТ
+РУПИЋ ЖИВКО
+РУПЊАК БРАНИСЛАВ
+РУС ЂУРЂИНКА
+РУС ДРАГАН
+РУС ИВАНКА
+РУС ЈОСИП
+РУС МАРГИТА
+РУС МАРИЈА
+РУС МИЛОСАВА
+РУС РАДА
+РУС СЛАВИЦА
+РУС СМИЉА
+РУС СВЕТЛАНА
+РУС ВЕРА
+РУС ВУКОСАВА
+РУСИЋ АНДРИЈА
+РУСКАЈИ СЛАВОМИР
+РУСКИ ДИМИТРИЈЕ
+РУСКИ ЛАЗАР
+РУСКОВСКИ ЂОРЂЕ
+РУСКОВСКИ ДРАГИЦА
+РУСКОВСКИ МАГДАЛЕНА
+РУСМИР РАДМИЛА
+РУСМИРОВИЋ БИЉАНА
+РУСМИРОВИЋ БИЉАНА
+РУСОВ ЖАРКО
+РУСОВ ЖИВКА
+РУСОВ БРАНКА
+РУСОВ БРАНКО
+РУСОВ ДРЕНКА
+РУСОВ КАТИЦА
+РУСОВ КОСТА
+РУСОВ КРИСТИНА
+РУСОВ МАРИЈА
+РУСОВ МИЛАН
+РУСОВ МИЛОРАД
+РУСОВ НАДА
+РУСОВ ПАВЛЕ
+РУСОВ СЛОБОДАН
+РУСОВ ВЛАДИМИР
+РУСОВАН ЖИВИЦА
+РУСОВАН ДРАГОЉУБ
+РУСОВАН МИЛАН
+РУСОВАН МИЛАН
+РУСТЕМАГИЋ ЕРВИН
+РУСТЕМИ ШАБАН
+РУТЕШИЋ ЈОВИЦА
+РУТИЋ МИЛОРАД
+РУТОНИЋ ЈУЛКИЦА
+РУТОНИЋ-КОЛЕНДА ВИДОСАВА
+РУТОНИЋ ЛАЗАР
+РУТОНИЋ ЛАЗАР
+РУТОЊСКИ ДУШАН
+РУТОЊСКИ ЈЕЛИЦА
+РУТОЊСКИ ЈОВАНКА
+РУТОЊСКИ НАДА
+РУТОЊСКИ СЛОБОДАН
+РУТОЊСКИ ВАСА
+РУТОНСКИ ЂОРЂЕ
+РУТОВИЋ БОШКО
+САЧЕК МИРОСЛАВ
+САЧЕР РОКИ
+САЧИЋ МАРИЈА
+САБАДИ ЛАСЛО
+САБАДИ МИРЈАНА
+САБАДКА ШАНДОР
+САБАДКА ИЛОНКА
+САБАДКА ВАЛЕРИЈА
+САБАДОШ ШАНДОР
+САБАДОШ ЂУРА
+САБАДОШ ИВАН
+САБАДОШ ЈАНКО
+САБАДОШ ЈАНКО
+САБАДОШ ЈАНКО
+САБАДОШ ЈОАКИМ
+САБАДОШ ЉУБОМИР
+САБАДОШ МИША
+САБАДОШ МИХАЈЛО
+САБАДОШ МИХАЈЛО
+САБАДОШ МИРОСЛАВ
+САБАДОШ ПАВЛИНА
+САБАДОШ РУЖИЦА
+САБАДОШ СЛАВНА
+САБАДОШ СЛАВОМИР
+САБАДОШ СРБИСЛАВ
+САБАДОШ СТЕВАН
+САБАДОШ ВЛАДИМИР
+САБАДОШ ВЛАДИМИР
+САБАДОШ ЗДЕНКА
+САБАДУШ ЈОВАН ДИПЛ ИНГ
+САБАДУШ СТЕВАН
+САБАТКА СТЕВАН
+САБАТУШ БОРИСЛАВ
+САБАТУШ ДРАГОЉУБ
+САБАТУШ ТОМИСЛАВ
+САБЛИЋ БРАНКО
+САБЉАК ДРАГАН
+САБЉАК ФРАЊО
+САБЉАК МАРИЈАН
+САБЉАКОВИЋ ЕСАД
+САБЉАР ЂОРЂЕ
+САБЉАР МАНОЈЛО
+САБЉАР МИЛАН
+САБЉАР ТЕОДОР
+САБЉАРЕВИЋ ВЕРИЦА
+САБЉИЋ ДАНИЛО ДИПЛ ПРАВНИК
+САБЉИЋ ДАРА
+САБЉИЋ ГОРДАНА
+САБЉОВ ИШТВАН
+САБЉОВ МИЛИЦА
+САБО ШАНДОР
+САБО ШАЊИКА
+САБО ЂЕЗЕ
+САБО ЂОРЂЕ
+САБО ЂОРЂЕ
+САБО АЛЕКСАНДАР
+САБО АЛЕКСАНДАР
+САБО АНА ДР
+САБО АНА
+САБО АНА
+САБО АНДРАШ
+САБО АНДРАШ
+САБО АНИЦА
+САБО АНИЦА
+САБО БЕРТАЛАН
+САБО ДРАГАН
+САБО ЕЛИЗАБЕТА
+САБО ЕМИЛ
+САБО ЕРЖЕБЕТ
+САБО ЕРЖЕБЕТ
+САБО ЕРНЕ
+САБО ЕРНЕ
+САБО ЕСТЕР
+САБО ФЕРЕНЦ
+САБО ФЕРЕНЦ
+САБО ФРАЊА
+САБО ФРАЊА
+САБО ФРАЊО
+САБО ГАШПАР
+САБО ГАБОР
+САБО ГЕРГЕЉ
+САБО ГИЗЕЛА
+САБО ГОРДАНА
+САБО ХИЛДА
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИБОЉКА
+САБО ИДА
+САБО ИЛОНА
+САБО ИМРЕ
+САБО ИМРЕ
+САБО ИВАН
+САБО ЈАНИКА
+САБО ЈАНОШ
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈУЛИА
+САБО ЈУЛИЈАНА
+САБО КАРОЛИНА
+САБО КАТИЦА
+САБО КАТИЦА
+САБО ЛАДИСЛАВ
+САБО ЛАДИСЛАВ
+САБО ЛАДИСЛАВ
+САБО ЉУБОМИР
+САБО МАРИЈА
+САБО МАРТА
+САБО МИХАЈЛО
+САБО МИЛИЦА
+САБО НИКОЛА
+САБО ОЛИВЕРА
+САБО ПАВЛЕ
+САБО ПЕТАР
+САБО ПЕТАР
+САБО ПЕТАР
+САБО ПИШТА
+САБО РОЗАЛИЈА
+САБО СНИЈЕЖАНА
+САБО СТЕВАН
+САБО ТЕРЕЗИЈА
+САБО ТИБОР
+САБО ВАЛЕРИЈА
+САБО ЗОЛТАН
+САБО ЗОЛТАН
+САБОШОТИ ФАБИЈАН
+САБОЛ ЈАРОСЛАВ
+САБОЛ ЈЕЛЕНА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ ЗОЛТАН
+САБОЛОВИЋ БОРИС
+САБОВ БОРИВОЈЕ
+САБОВЉЕВИЋ РАДОВАН
+САЏАК ЉУБИЦА
+САЏАКОВ ДРАГОМИР
+САЏАКОВ ДУШАНКА
+САЏАКОВ МИРОСЛАВ
+САЏАКОВ ОЛГА
+САЏАКОВ ПЕТАР
+САЏАКОВ РАДОВАН
+САЏАКОВ РАДОВАН
+САЏАКОВ ВИДОСАВА
+САЏАКОВ ЗОРАН
+САДИЋ РАДИВОЈ
+САДИКУ САДИК
+САИТОВ ШАХИМ
+САЈФЕРТ ЂУЛА
+САЈФЕРТ ЈОХАН
+САЈФЕРТ ЉУБИША
+САЈФЕРТ ЉУБИША
+САЈФЕРТ МАРГИТ
+САЈФЕРТ МАРИЈА
+САЈИЋ МИЛИВОЈЕ
+САЈКО БРАНКА
+САЈКО ИШТВАН
+САЈКО МАРГИТА
+САЈКО РУЖИЦА
+САЈКО ЗОЛТАН
+САЈЛЕР ФЕРЕНЦ
+САЈТОВИЋ ДРАГИЊА
+САКАЧ БОРИСЛАВ ЛЕКАР
+САКАЧ ФЕРЕНЦ
+САКАЧ ИШТВАН
+САКАЧ ЈАНКО
+САКАЧ ЈАНКО
+САКАЧ ЈОВАН
+САКАЧ ЈУЛИЈАНА
+САКАЧ ЈУЛИЈАН
+САКАЧ ЉУДЕВИТ
+САКАЧ МАГДА
+САКАЧ МАРИЈА
+САКАЧ МИХАИЛО
+САКАЧ СИМА
+САКАЧ СВЕТЛАНА
+САКАЧ ВАСИЛИЈЕ
+САКАЧ ВЛАДИМИР АДВОКАТ
+САКАЧ ВЛАДИМИР
+САКАЧ ВЛАДИМИР
+САКАЛ АДЕЛА
+САКАЛ АУГУСТИНА
+САКАЛ ГАБОР
+САКАЛ ЈОЖЕФ
+САКАЛ МАРИЈА
+САКАЛ МАРИЈА
+САКАЛАШ ОТО
+САКАН ДАЛИБОР
+САКОВИЋ АЛИЈА
+САКОВИЋ СТОЈАН
+САКУЛСКИ МИЛАН
+САЛАЧ ЂУРО
+САЛАГ ЕВГЕНИЈЕ
+САЛАГ ЈАНКО
+САЛАГ ЉУБА
+САЛАИ ЕРЖЕБЕТ
+САЛАИ ЕСТЕР
+САЛАИ-ГОМБАР РУЖА
+САЛАИ ИШТВАН НОВИНАР
+САЛАИ ЈЕЛИСАВЕТА
+САЛАИ ЛАДИСЛАВ
+САЛАИ ЛАСЛО
+САЛАЈ ФРАЊО
+САЛАЈ ЈАНКО
+САЛАЈ ЈОЖЕФ
+САЛАЈ МИРЈАНА
+САЛАЈ РУДОЛФ
+САЛАК ЈАНКО
+САЛАК ВЛАДИМИР
+САЛАК ВЛАДИМИР
+САЛАМУН АНА
+САЛАМУН БОСИЉКА
+САЛАМУН ИЛИЈА
+САЛАМУН ЈАНКО
+САЛАМУН ЈОАКИМ
+САЛАМУН ЈОАКИМ
+САЛАМУН НАТАЛИЈА
+САЛАМУН СИЛВЕСТЕР
+САЛАМУН ВЛАДИМИР
+САЛАПУРА МИЛЕ
+САЛАПУРА НЕДЕЉКО
+САЛАПУРА ПЕТАР
+САЛАТИЋ МИЛОВАН
+САЛАТИЋ ПЕТАР МР ОЕЦ
+САЛАТИЋ ВЕЛИМИР
+САЛДУМ ВИДА
+САЛЕТА АНТУН
+САЛИЋ МИЛАН
+САЛИБЕГОВИЋ МУСТАФА
+САЛИХОВИЋ ИСМЕТ
+САЛИЈА СЕФЕР
+САЛИЈЕВИЋ ШЕЋЕРИЈА
+САЛКАИ ИЛОНА
+САЛКАИ ЛАСЛО
+САЛМА ШАНДОР
+САЛМА ГЕЗА
+САЛМА ЈОЖЕФ ПРОФ ДР
+САЛМА ЈОСИП
+САЛМА ПЕТАР
+САЛМА ТИБОР
+САЛМА ТИБОР
+САЛОЦКИ СТЕВАН
+САЛОНСКИ БОЖИДАР
+САЛОНСКИ ЈЕЛЕНА
+САЛОНСКИ МИЛОРАД
+САЛОНСКИ МИРЈАНА
+САЛОНСКИ МИРОСЛАВ
+САЛОНСКИ РУЖА
+САЛОНТАИ ЈУЛИЈАНА
+САЛОПЕК БРАНКО
+САЛОВ ЈОВАН
+САМАЦ ИВАНКА
+САМАЦ МИРКО
+САМАРЂИЋ БРАНИСЛАВА
+САМАРЏИЋ ЖАРКО
+САМАРЏИЋ АДАМ
+САМАРЏИЋ БОШКО
+САМАРЏИЋ БОШКО
+САМАРЏИЋ БОРА
+САМАРЏИЋ БОРА
+САМАРЏИЋ БРАНИСЛАВ
+САМАРЏИЋ БРАНКО
+САМАРЏИЋ ДАНИЛО
+САМАРЏИЋ ДАНИЛО
+САМАРЏИЋ ДЕСА
+САМАРЏИЋ ДРАГАН
+САМАРЏИЋ ДУШАН
+САМАРЏИЋ ГОЈКО
+САМАРЏИЋ ИЛИЈА
+САМАРЏИЋ ИВАН
+САМАРЏИЋ КРСТА
+САМАРЏИЋ ЉУБО
+САМАРЏИЋ МИЛАН
+САМАРЏИЋ МИЛИЈА
+САМАРЏИЋ МИЛОШ
+САМАРЏИЋ МИЛОШ
+САМАРЏИЋ МИЛОЈКО
+САМАРЏИЋ МИЛОРАД
+САМАРЏИЋ МИЛОСАВ
+САМАРЏИЋ МИОДРАГ
+САМАРЏИЋ МИРА
+САМАРЏИЋ НЕЂА
+САМАРЏИЋ НОВИЦА
+САМАРЏИЋ ОЛГА
+САМАРЏИЋ ОСТОЈА
+САМАРЏИЋ РАДОЈКА
+САМАРЏИЋ РАДОСЛАВ
+САМАРЏИЋ РАДОВАН
+САМАРЏИЋ РАЈКО
+САМАРЏИЋ РАТКО
+САМАРЏИЋ РОЗИНА
+САМАРЏИЋ САВКА
+САМАРЏИЋ САВО
+САМАРЏИЋ СПОМЕНКА
+САМАРЏИЋ СРЕТЕН
+САМАРЏИЋ СРЕТЕН
+САМАРЏИЋ-СТАНИШИЋ МИЛАНКА
+САМАРЏИЋ СВЕТЛАНА
+САМАРЏИЋ ВАСИЛИЈА
+САМАРЏИЋ ВАСО
+САМАРЏИЋ ВЕЛИМИР
+САМАРЏИЋ ВЛАДО
+САМАРЏИЋ ВУКАШИН
+САМАРЏИЋ ЗДРАВКО
+САМАРЏИЋ ЗОРАН
+САМАРЏИЋ ЗУЗАНА
+САМАРЏИЈА ЂУРЂИНКА
+САМАРЏИЈА ЂУРАЂ
+САМАРЏИЈА ЂУРА
+САМАРЏИЈА БОШКО
+САМАРЏИЈА ДЕСА
+САМАРЏИЈА ДУШАН
+САМАРЏИЈА ГОРИЦА
+САМАРЏИЈА ЈЕЛЕНА
+САМАРЏИЈА ЉУБИЦА
+САМАРЏИЈА ЉУБИЦА
+САМАРЏИЈА МАРИЈА
+САМАРЏИЈА МАРИЈА
+САМАРЏИЈА МИЛАНКА
+САМАРЏИЈА МИЛАН
+САМАРЏИЈА МИЛАН
+САМАРЏИЈА МИЛЕ
+САМАРЏИЈА МИРКО
+САМАРЏИЈА МИРОСЛАВ
+САМАРЏИЈА НЕБОЈША
+САМАРЏИЈА НОВИЦА
+САМАРЏИЈА ПЕТАР
+САМАРЏИЈА РАДЕ
+САМАРЏИЈА РАДЕ
+САМАРЏИЈА РАНКО
+САМАРЏИЈА СТОЈАН
+САМАРЏИЈЕВИЋ МИРОСЛАВ
+САМБРАИЛО БРУНО
+САМЕЦ БОЖЕНКА
+САМИИ АББАС
+САМОЧЕТА АЛЕКСАНДРА
+САМОЧЕТА МИЛЕ
+САМОЧЕТА НЕВЕНКА
+САМОЧЕТА РАДОМИР
+САМОЈЛИК НИКОЛА
+САМОКОВЛИЈА МАРКО
+САМОЛОВ ВЕЉКО
+САМОЛОВЧЕВ ИВАНКА
+САМСОНОВ НИКОЛА ДИПЛ ИНГ
+САНЧАНИН МИЛИВОЈ
+САНАДЕР ЖИВКО
+САНАДЕР ЖИВКО
+САНАДЕР ЈЕЛЕНА
+САНАДЕР РАДОВАН
+САНАДЕР СЛОБОДАН
+САНАДЕР ВЕРА
+САНДИЋ БРАНИМИР
+САНДИЋ ИВАН
+САНДИЋ СВЕТЛАНА
+САНДИКИ АПОСТОЛ
+САНДИКИ КОСТА
+САНДИКИ КОСТА
+САНКОВИЋ БОРКО
+САНКОВИЋ ЉУБИНКА
+САНКОВИЋ МИЛОРАД
+САНКОВИЋ МИРА
+САНКОВИЋ ПЕТАР
+САНКОВИЋ САБИНА
+САНКОВИЋ СВЕТОЗАР
+САНТАИ ИЛОНА
+САНТО ФРАЊА
+САНТО КАРОЉ
+САНТО ЛАДИСЛАВ ДИПЛ ИНГ
+САНТО ЗОЛТАН
+САНТО ЗОЛТАН
+САНТОВАЦ ДРАГАН
+САНТОВАЦ ЉУБИНКА
+САНТОВАЦ МИЛОШ
+САНТОВАЦ ПЕТАР
+САНТОВАЦ СТЕВАН
+САНТРАЧ ЂУРЂИНКА
+САНТРАЧ ДРАГОЉУБ
+САНТРАЧ ГОРДАНА
+САНТРАЧ МИЛАН
+САНТРАЧ МИЛОРАД
+САНТРАЧ МОМЧИЛО
+САНТРАЧ НИКОЛА
+САНТРАЧ РАТКО
+САНТРАЧ САВО
+САНТРАЧ СЛАВКО
+САПУНЏИЋ-МАТИЋ МИРЈАНА
+САПУНЏИЋ МИЛАН
+САПУНЏИЋ МИРА
+САПУНЏИЋ ТАТЈАНА
+САПУНЏИЈА ЕРЖЕБЕТ
+САПУНЏИЈА МАРИЈА
+САРЧЕВ НАДИЦА
+САРЧЕВ РАДИВОЈ
+САРАЧЕВИЋ СРБОЉУБ
+САРАФИЈАНОВИЋ НИКОЛА
+САРАЈЛИЈА ДРАГОМИР
+САРАМАНДИЋ МОМИР
+САРАМАНДИЋ НЕДЕЉКО
+САРАНДА ВАСИЉКА
+САРАПКА КАТИЦА
+САРАТЛИЋ МИЛАН
+САРАТЛИЋ СРБОЉУБ
+САРАВОЛАЦ ЛАЗАР ВЕТЕРИНАР
+САРАВОЛАЦ МАГДАЛЕНА
+САРАВОЛАЦ МИРЈАНА
+САРАВОЛАЦ МИРЈАНА
+САРАВОЛАЦ СИНИША ДР
+САРАВОЛАЦ СЛАВКО
+САРАВОЛАЦ СВЕТЛАНА
+САРИЋ ЂУРА
+САРИЋ ДАНИЛО
+САРИЋ ИВАН
+САРИЋ ЛЕПОСАВА
+САРИЋ МАРИНКО
+САРИЋ МИЛОШ
+САРИЋ МИЛОЈЕ ДР
+САРИЋ РАДОШ
+САРИЋ РАТКО
+САРИЋ ТИБОР
+САРИЋ ВОЈИН
+САРИКАС СНЕЖАНА
+САРИКАС ВАСИЛИЈЕ
+САРКА АРПАД
+САРКА МИХАЉ
+САРКОТИЋ ФРАЊА
+САРМЕШ МАРИЈА ДИПЛ ПРАВНИК
+САРОВ ЛАЗАР
+САРВАШ ШАНДОР
+САРВАШ ЈАНОШ
+САРВАК АЛЕКСА
+САРВАН ДРАГОЉУБ
+САРВАН ВЈЕРА
+САС ЈЕНЕ
+САСИК БОРИСЛАВ
+САТАРИЋ БРАНИСЛАВ
+САТАРИЋ МИЉКО ДР
+САТКАНОВИЋ ХАБИБ
+САУЕР ЈЕЛИЦА
+САУЕР МАРГИТА
+САУЕР ПАВЛЕ
+САУЕР РОСА
+САУЕР СМИЉАНА
+САУСМАН ЛАСЛО
+САУЗЕР ФРАЊО
+САВЧИЋ ДРАГАН
+САВЧИЋ МИЛАНА
+САВЧИЋ МИЛИВОЈЕ
+САВЧИЋ МИЛИВОЈ
+САВЧИЋ МИРОСЛАВ
+САВЧИЋ СЛОБОДАН
+САВА ФРАЊА
+САВАНОВИЋ БРАНКО
+САВАНОВИЋ ДРАГОЉУБ
+САВАНОВИЋ ДУШАН
+САВАНОВИЋ ЈОВАН
+САВАНОВИЋ ЈОВО
+САВАНОВИЋ ЉУБОМИР
+САВАНОВИЋ МАРИЦА
+САВАНОВИЋ МАРИНКО
+САВАНОВИЋ МИЛАН
+САВАНОВИЋ МИЛОШ
+САВАНОВИЋ МИРКО
+САВАНОВИЋ НЕНАД
+САВАНОВИЋ СНЕЖАНА
+САВАНОВИЋ СТОЈАН
+САВАНОВИЋ ЗДРАВКА
+САВАТИЋ ДРАГОМИР
+САВАТИЋ ВЛАДИМИР
+САВАТОВИЋ БОСИЉКА
+САВАТОВИЋ ДРАГАН
+САВАТОВИЋ ДУШАН
+САВАТОВИЋ РАДОВАН
+САВЕЉИЋ ЧЕДОМИР
+САВЕЉИЋ ДУШАН
+САВЕЉИЋ МАРИЈА
+САВЕЉИЋ СВЕТЛАНА
+САВЕЉИЋ ВЕЉКО
+САВЕСКИ МИЛЧО
+САВЕСКИ ЗОРАН
+САВИЧЕВИЋ ГОЈКО
+САВИЧИЋ ГОЈКО
+САВИЧИЋ СТОЈАН
+САВИЧИН ЉУБИЦА
+САВИЋ ЧЕДОМИР
+САВИЋ ЧЕДО
+САВИЋ ЋЕТКО
+САВИЋ ЖИВКА
+САВИЋ ЖИВКА
+САВИЋ ЂОКА
+САВИЋ ЂОРЂЕ ДИПЛ ИНГ
+САВИЋ ЂОРЂЕ
+САВИЋ ЂУРЂИЈА
+САВИЋ АЛЕКСАНДРА
+САВИЋ АЛЕКСА
+САВИЋ АНЂЕЛКА
+САВИЋ АНЂЕЛКА
+САВИЋ АНА
+САВИЋ АНДРИЈА
+САВИЋ АНДРИЈА
+САВИЋ АНГЕЛИНА
+САВИЋ БЛАГОЈЕ
+САВИЋ БЛАГОЈЕ
+САВИЋ БОЖИДАР
+САВИЋ БОЖИМИР ДР
+САВИЋ БОГДАН
+САВИЋ БОРИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНКО
+САВИЋ ЦВЕТАНКА
+САВИЋ ЦВЕТКО
+САВИЋ ДАМЈАН ДР ЛЕКАР
+САВИЋ ДАНИЦА
+САВИЋ ДАРА
+САВИЋ ДЕЈАН
+САВИЋ ДЕСАНКА
+САВИЋ ДЕСИМИР
+САВИЋ ДОБРИЛА
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГИША
+САВИЋ ДРАГОСЛАВ
+САВИЋ ДРАГО
+САВИЋ ДРАГУТИН
+САВИЋ ДРАГУТИН
+САВИЋ ДУШАНКА
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ГЕОРГИЈЕ
+САВИЋ ГЛИГОРИЈЕ
+САВИЋ ГОЈКО
+САВИЋ ГОРАН
+САВИЋ ГОСТИМИР
+САВИЋ ГРОЗДАНА
+САВИЋ ИЛИЈА
+САВИЋ ИЛИЈА
+САВИЋ ИВАН
+САВИЋ ЈАДРАНКА
+САВИЋ ЈЕЛА
+САВИЋ ЈЕЛЕНА
+САВИЋ ЈЕЛЕНА
+САВИЋ ЈЕЛИЦА
+САВИЋ ЈЕВТО
+САВИЋ ЈОВАНКА
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ КАТИЦА
+САВИЋ КАТИЦА
+САВИЋ КОСТА
+САВИЋ КСЕНИЈА
+САВИЋ ЛАЗАР
+САВИЋ ЛАЗАР
+САВИЋ ЛЕНКА ДР
+САВИЋ ЉИЉАНА
+САВИЋ ЉИЉАНА
+САВИЋ ЉУБИША
+САВИЋ ЉУБИЦА
+САВИЋ ЉУБОМИР
+САВИЋ ЉУБОСЛАВ
+САВИЋ ЛУКА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИНА
+САВИЋ МАРИНА
+САВИЋ МАРКО
+САВИЋ МЕЏО
+САВИЋ МИХАЈЛО
+САВИЋ МИЛАДИН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛЕНА
+САВИЋ МИЛЕНКО
+САВИЋ МИЛЕНКО
+САВИЋ МИЛЕНКО
+САВИЋ МИЛИЈАНА
+САВИЋ МИЛИСАВ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈ
+САВИЋ МИЛИВОЈ
+САВИЋ МИЛКО
+САВИЋ МИЛОШ ДИПЛ ИНГ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОРАД
+САВИЋ МИЛОРАД
+САВИЋ МИЛОРАД
+САВИЋ МИЛОСАВА
+САВИЋ МИЛОСАВ
+САВИЋ МИЛОВАН
+САВИЋ МИЛУТИН
+САВИЋ МИОДРАГ
+САВИЋ МИОДРАГ
+САВИЋ МИРЈАНА
+САВИЋ МИРКО
+САВИЋ МИРКО
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МЛАДЕН
+САВИЋ МОМЧИЛО
+САВИЋ НАДА
+САВИЋ НАДЕЖДА
+САВИЋ НАТАША
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕНАД
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИНОСЛАВ
+САВИЋ НОВО
+САВИЋ ОЛГА
+САВИЋ ОЛИВЕРА
+САВИЋ ОЛИВЕРА
+САВИЋ ПАНТЕЛИЈА
+САВИЋ ПАВЛЕ
+САВИЋ ПЕРА
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЛАНИНКА
+САВИЋ ПРЕДРАГ
+САВИЋ ПРОКОПИЈЕ
+САВИЋ РАДИША
+САВИЋ РАДИВОЈЕ ДИПЛ ИНГ
+САВИЋ РАДМИЛА
+САВИЋ РАДМИЛА
+САВИЋ РАДМИЛА
+САВИЋ РАДОЈИЦА
+САВИЋ РАДОМИР
+САВИЋ РАДОМИР
+САВИЋ РАДОВАН
+САВИЋ РАДОВАН
+САВИЋ РАКИЋ
+САВИЋ РАТКО
+САВИЋ РАТКО
+САВИЋ РЕЉА ДР
+САВИЋ РЕНАТА
+САВИЋ РОКСАНДА
+САВИЋ РУЖИЦА
+САВИЋ САША
+САВИЋ САВА АДВОКАТ
+САВИЋ САВА
+САВИЋ САВА
+САВИЋ САВА
+САВИЋ СИМЕУН ДИПЛ ИНГ
+САВИЋ СИНИША
+САВИЋ СЛАВКО
+САВИЋ СЛАВОЉУБ
+САВИЋ СЛАВОЉУБ
+САВИЋ СЛОБОДАН
+САВИЋ СЛОБОДАН
+САВИЋ СМИЉА
+САВИЋ СПАСОЈЕ
+САВИЋ СПАСОЈЕ
+САВИЋ СРЂАН
+САВИЋ СРБИСЛАВ
+САВИЋ СРЕТА
+САВИЋ СТЕВАН
+САВИЋ СТОЈАНКА
+САВИЋ СТОЈАН
+САВИЋ СТОЈАН
+САВИЋ СТОЈАН
+САВИЋ СВЕНКА
+САВИЋ СВЕТОЗАР
+САВИЋ СВЕТОЗАР
+САВИЋ ТАТОМИР
+САВИЋ ТЕОДОР
+САВИЋ ТИНКА
+САВИЋ ТОДОР
+САВИЋ ТОДОР
+САВИЋ ТОДОР
+САВИЋ ТОМИСЛАВ
+САВИЋ УРОШ
+САВИЋ ВЕЉКО
+САВИЋ ВЕРИЦА
+САВИЋ ВЕРИЦА
+САВИЋ ВЕСНА
+САВИЋ ВИДОСАВ
+САВИЋ ВИТОМИР
+САВИЋ ВЛАДИМИР
+САВИЋ ВЛАДИМИР
+САВИЋ ВОЈА
+САВИЋ ВУКАН
+САВИЋ ВУКОТА
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРА
+САВИН ЖИВКА
+САВИН ЖИВКО
+САВИН ЂОРЂЕ
+САВИН ЂУРЂИНКА
+САВИН БЕРИСЛАВ
+САВИН БИЉАНА ДР
+САВИН БОРА
+САВИН ДАНИЦА
+САВИН ДРАГОЉУБ
+САВИН ДРАГОМИР
+САВИН ДРЕНКА
+САВИН ДУШАН
+САВИН ДУШАН
+САВИН ЈОВАН
+САВИН ЈОВАН
+САВИН ЈУЛКА
+САВИН ЛАСЛО
+САВИН ЛАЗАР
+САВИН ЉУБИНКА
+САВИН МАГДА
+САВИН МИЛЕВА
+САВИН МИЛИЦА
+САВИН МИЛКА
+САВИН МИЛОРАД
+САВИН МИЛОРАД
+САВИН МИЛОВАН
+САВИН МИОДРАГ ДИПЛ ОЕЦ
+САВИН МИРЈАНА
+САВИН МИРЈАНА
+САВИН НИКОЛА
+САВИН ПАВЛЕ
+САВИН ПРЕДРАГ
+САВИН РАДИВОЈ
+САВИН САВА
+САВИН СНЕЖАНА
+САВИН СПИРИДОН
+САВИН СТАНА
+САВИН ТОДОР
+САВИН ТОДОР
+САВИН ВЕРИЦА
+САВИН ВУКОСАВА
+САВИН ЗОРА
+САВКЕЉИН СТЕВАН
+САВКИЋ ДУШАН
+САВКОВ ДРАГОЉУБ
+САВКОВ ИЛИЈА
+САВКОВ МИЛАН
+САВКОВ ТОДОР
+САВКОВ ВЕРА
+САВКОВ ВОЈИСЛАВ
+САВКОВ ЗОРАН
+САВКОВИЋ ЖИВОРАД
+САВКОВИЋ ЈАЊА
+САВКОВИЋ МИЛУТИН
+САВКОВИЋ МИРКО
+САВКОВИЋ НЕМАЊА
+САВКОВИЋ САВА
+САВКОВИЋ САВО
+САВКОВИЋ СТАША
+САВКОВИЋ ТАТЈАНА
+САВКОВИЋ ВУКА
+САВКОВИЋ ЗДРАВКО
+САВОВИЋ ДЕСАНКА
+САВОВИЋ ФАТИМА
+САВОВИЋ ЉУБО
+САВОВИЋ ЛУКА
+САВОВИЋ НЕНАД
+САВОВИЋ РАДЕ
+САВУ-МИХАЈЛОВИЋ СОФИЈА
+САВУ ТИБИ
+САВУЉИЋ РАДОМИР
+САЗДАНИЋ ЂОКА
+САЗДАНИЋ ПАВЛЕ
+САЗДАНИЋ СТЕВАН
+СЕЧАНСКИ ЂОРЂЕ
+СЕЧЕН МИЛИВОЈ
+СЕЧЕН СВЕТОЗАР ДР
+СЕЧЕЊИ ИБОЉА
+СЕЧИ ИШТВАН
+СЕЧИВАНОВИЋ ЛЕПША
+СЕЧИВАНОВИЋ ЛЕПША
+СЕЧИВАНОВИЋ ПАВЛЕ
+СЕЧУЈСКИ АНДРИЈА ДИПЛ ИНГ
+СЕЧУЈСКИ ДАНИЛО
+СЕЧУЈСКИ МЛАДЕН
+СЕЧУЈСКИ РАДИВОЈ
+СЕБАСТИАН ЕРНЕ
+СЕБАСТИАН ЈОХАНА
+СЕБАСТИЈАН ЗЛАТКО
+СЕБЕЛЕДИ ПАВЛЕ
+СЕБЕЊИ ФЕРЕНЦ
+СЕБЕЊИ ФРАЊА
+СЕБИШАНОВИЋ ЂОРЂЕ
+СЕБИШАНОВИЋ ПАВЛЕ
+СЕДЕЈ ЈАНЕЗ
+СЕДЕР АЛЕКСАНДАР
+СЕДЕР ИВИЦА
+СЕДЕР СЛАВКО
+СЕДЕР ВЛАДИМИР
+СЕДЕРЛАНД ЂОРЂЕ
+СЕДЛАЧЕК САРА
+СЕДЛАК АНДРАШ
+СЕДЛАН ИЛИЈА
+СЕДЛАН МАНОЈЛО
+СЕДЛАН МИРКО ДИПЛ ИНГ
+СЕДЛАН РАДОСЛАВ
+СЕДЛАН САВА
+СЕДЛАР ИЛИЈА
+СЕДЛАР МАНЕ
+СЕДЛАР МИЛИЦА
+СЕДЛАР МИЛИЦА
+СЕДЛАР НАДА
+СЕДМАК ДРАГАН
+СЕДМАК ВЛАДО
+СЕФЧИК ЖУЖАНА
+СЕФЕР МАРИЈА
+СЕФЕР САКИБ
+СЕФЕР СЕНАД
+СЕФЕРОВИЋ СУАД
+СЕГ ЖУЖАНА
+СЕГ ИМРЕ
+СЕГЕДИ БРАНКА
+СЕГЕДИ ДИМИТРИЈЕ
+СЕГЕДИ ЕВГЕНИЈЕ
+СЕГЕДИ ИВИЦА
+СЕГЕДИ ЈОСИП
+СЕГЕДИ ЈОВАН
+СЕГЕДИ ЈУЛИЈАН
+СЕГЕДИ КАРОЉ
+СЕГЕДИ-КОВАЧЕВ БРАНКА ДР
+СЕГЕДИ КСЕНИЈА
+СЕГЕДИ ЛЕОНА
+СЕГЕДИ МАРИЈА
+СЕГЕДИ МЕЛИТА
+СЕГЕДИ МИЛЕНА
+СЕГЕДИ СЛАВИЦА
+СЕГЕДИ СТЕВАН
+СЕГЕДИ ВЛАДИМИР
+СЕГЕДИНАЦ ДУШКО
+СЕГЕДИНАЦ НАТАЛИЈА
+СЕГЕДИНАЦ ЗДРАВКО
+СЕГЕДИНСКИ АРКАДИЈЕ
+СЕГЕДИНСКИ БОЈКО
+СЕГЕДИНСКИ ЈУЛИЈАНА
+СЕГЕДИНСКИ НЕСТОР
+СЕГЕДИНСКИ САВА
+СЕГЕДИНСКИ ТОМА
+СЕГЕДИНСКИ ВИТОМИР
+СЕГИ ЛАСЛО
+СЕГИЋ БОРИСЛАВ
+СЕГИЋ РАНКО
+СЕИЗОВИЋ ДУШАНКА
+СЕКАЧ ПЕТАР
+СЕКЕ АРПАД
+СЕКЕ ЕВА
+СЕКЕ ИЛИЈА
+СЕКЕ ЈОСИП
+СЕКЕ КАТАРИНА
+СЕКЕ СТЕВАН
+СЕКЕ СТЕВАН
+СЕКЕЉ ЈАНИ
+СЕКЕЉ ЈОСИП
+СЕКЕЉ МАРИЈА
+СЕКЕЉ РУЖИЦА
+СЕКЕРЕШ ШАНДОР
+СЕКЕРЕШ ЂУЛА
+СЕКЕРЕШ ДЕНЕШ
+СЕКЕРЕШ ЕТЕЛ
+СЕКЕРЕШ ФЕРЕНЦ ДР ЛЕКАР
+СЕКЕРЕШ ФЕРЕНЦ
+СЕКЕРЕШ ИШТВАН
+СЕКЕРЕШ ИШТВАН
+СЕКЕРЕШ ИРЕНА
+СЕКЕРЕШ ЈОЖЕФ
+СЕКЕРЕШ ЈУЛИЈАНА
+СЕКЕРЕШ ЈУЛИЈА
+СЕКЕРЕШ КАРОЉ
+СЕКЕРЕШ КАТИЦА
+СЕКЕРЕШ ЛАЈОШ ДИПЛ ИНГ
+СЕКЕРЕШ НАНДОР
+СЕКЕРЕШ СТЕВАН
+СЕКЕРЕШ ТИБОР
+СЕКЕРЕШ ВЕРА
+СЕКЕРЕЗОВИЋ МИЛАН
+СЕКЕРИЋ СТЕВАН
+СЕКЕРУШ ЈЕЛИСАВЕТА
+СЕКЕРУШ ЉУБИЦА
+СЕКЕРУШ МИЛКИЦА
+СЕКЕРУШ МИРЈАНА
+СЕКЕРУШ ПАВЛЕ
+СЕКЕРУШ ПЕТАР
+СЕКЕРУШ СТАНИСЛАВ
+СЕКЕРУШ ВЛАДИМИР
+СЕКИЦКИ АЛЕКСАНДАР
+СЕКИЦКИ ЕМИЛИЈА
+СЕКИЦКИ ИСИДОР
+СЕКИЦКИ ЛАЗАР
+СЕКИЦКИ МАРИЦА
+СЕКИЦКИ МИЛОРАД
+СЕКИЦКИ ПЕТАР
+СЕКИЦКИ ВЕЉА
+СЕКИЗ ЖИВКО
+СЕКИЗ ИЛИЈА
+СЕКИЗ ЈОВАН
+СЕКИЗ МЕЛАНИЈА
+СЕКИЗ ПЕТАР
+СЕКИЗ ПЕТАР
+СЕКИЗ РАДИВОЈ
+СЕКИЗ СОЊА
+СЕКОШАН ЉУБИЦА
+СЕКОШАН МАРИНА
+СЕКОЛ МИЛКА
+СЕКОСКИ ЈОМЧЕ
+СЕКОВСКИ РАДЕ
+СЕКРЕЊ ЈОЖЕФ
+СЕКУЛИЋ ЧЕДИЦА
+СЕКУЛИЋ ЧЕДОМИР
+СЕКУЛИЋ ЖАРКО
+СЕКУЛИЋ ЖИВКО
+СЕКУЛИЋ ЖИВКО
+СЕКУЛИЋ ЖИВОЈИН ДИПЛ ИНГ
+СЕКУЛИЋ ЂОРЂЕ
+СЕКУЛИЋ ЂОРЂЕ
+СЕКУЛИЋ ЂУРЂИЦА
+СЕКУЛИЋ ЂУРАЂ
+СЕКУЛИЋ АЛЕКСАНДАР
+СЕКУЛИЋ АЛЕКСАНДАР
+СЕКУЛИЋ АНЂЕЛКА
+СЕКУЛИЋ АРСЕНИЈЕ
+СЕКУЛИЋ БОЖИДАР ДИПЛ ИНГ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ ДАНЕ
+СЕКУЛИЋ ДАРИНКА
+СЕКУЛИЋ ДАРИНКА
+СЕКУЛИЋ ДЕСАНКА
+СЕКУЛИЋ ДЕСАНКА
+СЕКУЛИЋ ДОСТА
+СЕКУЛИЋ ДРАГАН
+СЕКУЛИЋ ДРАГИЦА
+СЕКУЛИЋ ДРАГОЉУБ
+СЕКУЛИЋ ДРАГОМИР
+СЕКУЛИЋ ДРАГОМИР
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ИЛИЈА
+СЕКУЛИЋ ИЛИЈА
+СЕКУЛИЋ ИВАН
+СЕКУЛИЋ ИВАН
+СЕКУЛИЋ КАТИЦА
+СЕКУЛИЋ ЛАЗАР
+СЕКУЛИЋ ЉИЉАНА
+СЕКУЛИЋ ЉИЉАНА
+СЕКУЛИЋ ЉУБИША
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБОМИР
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МИЋО
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛЕНА
+СЕКУЛИЋ МИЛЕНА
+СЕКУЛИЋ МИЛИВОЈЕ
+СЕКУЛИЋ МИЉА
+СЕКУЛИЋ МИЛОРАД
+СЕКУЛИЋ МИЛОРАД
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИОДРАГ
+СЕКУЛИЋ МИОДРАГ
+СЕКУЛИЋ МИРА
+СЕКУЛИЋ МИРЈАНА
+СЕКУЛИЋ МИРЈАНА
+СЕКУЛИЋ МИРКО
+СЕКУЛИЋ НЕГИЦА
+СЕКУЛИЋ НЕМАЊА
+СЕКУЛИЋ ОЛГА
+СЕКУЛИЋ ОЛИВЕРА
+СЕКУЛИЋ ПАВЛЕ
+СЕКУЛИЋ ПАВЛЕ
+СЕКУЛИЋ ПЕТАР ДР
+СЕКУЛИЋ ПЕТАР
+СЕКУЛИЋ ПЕТКО
+СЕКУЛИЋ РАДЕ
+СЕКУЛИЋ РАДИВОЈ МР
+СЕКУЛИЋ РАДМИЛА
+СЕКУЛИЋ РАДОСАВ
+СЕКУЛИЋ РУЖИЦА
+СЕКУЛИЋ СИМО
+СЕКУЛИЋ СЛАВКО
+СЕКУЛИЋ СМИЉА
+СЕКУЛИЋ СПАСА
+СЕКУЛИЋ СПАСО
+СЕКУЛИЋ СТАНИСЛАВ
+СЕКУЛИЋ СТАНОЈЕ
+СЕКУЛИЋ СТЕВАН
+СЕКУЛИЋ СТЕВАН
+СЕКУЛИЋ СТОЈАН ДИПЛ ИНГ
+СЕКУЛИЋ СТОЈАН
+СЕКУЛИЋ СВЕТОЗАР
+СЕКУЛИЋ СВЕТОЗАР
+СЕКУЛИЋ ТИХОМИР
+СЕКУЛИЋ ТОМИСЛАВ
+СЕКУЛИЋ ТОМИСЛАВ
+СЕКУЛИЋ УСТИЈАНКА
+СЕКУЛИЋ ВАЛЕНТИНА
+СЕКУЛИЋ ВЕНО
+СЕКУЛИЋ ВИДОЈЕ
+СЕКУЛИЋ ВИНКО
+СЕКУЛИЋ ВЛАДИМИР
+СЕКУЛИЋ ВЛАДИМИР
+СЕКУЛИЋ ВЛАДО
+СЕКУЛИЋ ВОЈИСЛАВ
+СЕКУЛИЋ ЗОРАН
+СЕКУЛИЋ ЗОРАН
+СЕКУЛИЋ ЗОРА
+СЕКУЛИЋ ЗОРИЦА
+СЕКУЛОВИЋ МИХАИЛО
+СЕКУЛОВИЋ МИЛАНКА
+СЕКУЛОВИЋ МИЛЕНКО
+СЕКУЛОВИЋ РАДИВОЈЕ
+СЕКУЛОВИЋ СЛАВКО
+СЕЛ АНА
+СЕЛ ЈОЖЕФ
+СЕЛ ЛАДИСЛАВ
+СЕЛАК ЈОВАН
+СЕЛАК ЈОВО
+СЕЛАК МИРЈАНА
+СЕЛАК СТЕВАН
+СЕЛАКОВИЋ ЂОРЂЕ ДР ЛЕКАР
+СЕЛАКОВИЋ ДРАГИЦА ДР ЛЕКАР
+СЕЛАКОВИЋ ЉУБИСАВ
+СЕЛАКОВИЋ МИЛАН
+СЕЛАКОВИЋ МИОДРАГ
+СЕЛАКОВИЋ МИРОСЛАВ
+СЕЛАКОВИЋ МЛАДЕН
+СЕЛАКОВИЋ РАДОСЛАВ
+СЕЛАКОВИЋ СРЕЋКО
+СЕЛАКОВИЋ ВОЈА
+СЕЛЕШ КАРОЉ
+СЕЛЕШ КАРОЉ
+СЕЛЕШ МИХАЈЛО
+СЕЛЕШИ ЕЛЗА
+СЕЛЕШИ ЕТЕЛКА
+СЕЛЕШИ ЛАДИСЛАВ
+СЕЛЕШИ ЛАСЛО
+СЕЛЕШИ МАГДАЛЕНА
+СЕЛЕШИ МАРИЈА
+СЕЛЕШИ ПАЛ
+СЕЛЕШИ СТЕВАН
+СЕЛЕШИ ВИНЦЕ
+СЕЛЕШИ ЗОЛТАН
+СЕЛЕНА ЈЕЛЕНА
+СЕЛЕНА НИКОЛА
+СЕЛЕНИЋ АНКИЦА
+СЕЛИ ЕТЕЛКА
+СЕЛИ ИШТВАН ДР
+СЕЛИ МИКЛОШ
+СЕЛИЋ ДРАГУТИН
+СЕЛИЋ МИЋО
+СЕЛИЋ МИЛОШ
+СЕЛИЋ МИЛОРАД
+СЕЛИХ ДАНИЛО
+СЕЛИХ ДРАГО
+СЕЛИК ЈОСИП
+СЕЛИК ЛАДИСЛАВ
+СЕЛИМОВИЋ МУСТАФА
+СЕЛИНГЕР ГАБРИЈЕЛА
+СЕЉАКОВ НАДА
+СЕЛМАН ХАКИЈА
+СЕЛСКИ АНА
+СЕЛСКИ МАРИЈА
+СЕЛВЕР АЛИНАЂИ
+СЕМАН ЈОАКИМ
+СЕМЕДЕР ДИМИТРИЈЕ
+СЕМЕДЕР СУЗАНА
+СЕМЕДЕР СУЗАНА
+СЕМЕК ЧАБА
+СЕМЕК ЧИЛА
+СЕМЕНСКИ КОРНЕЛИЈА
+СЕМЕРЕДИ ЈОЖЕФ
+СЕМЕРЕДИ ВЕРА
+СЕМИЗ КАТИЦА
+СЕМИЗОВИЋ САДИК
+СЕМНИЦ РУДОЛФ ДР
+СЕН МАРТИН
+СЕНЧУК СЛАВИЦА
+СЕНЧУК СТЕВО
+СЕНЋАНСКИ ЈУЛИЈА
+СЕНЋАНСКИ КАТИЦА
+СЕНЋАНСКИ НАДА
+СЕНЋАНСКИ ПЕТАР
+СЕНЋАНСКИ ЗОРА
+СЕНАШИ ЛАДИСЛАВ
+СЕНЦИ ЛАДИСЛАВ
+СЕНДЕРАК ЂУРА
+СЕНДЕРАК ЕУГЕН
+СЕНДЕРАК ЛИДИЈА
+СЕНДЕРАК МЕЛАНИЈА
+СЕНДЕРАК МИРКО
+СЕНДЕРАК НИКОЛА
+СЕНДЕРАК ПЕТАР
+СЕНДЕРАК СИЛВЕСТЕР
+СЕНЕШИ ЈЕЛЕНА
+СЕНИЋ АНИЦА
+СЕНИЋ ИВАНКА
+СЕНИЋ ЛАЗАР
+СЕНИЋ МИЛОРАД
+СЕНИЋ РИСТО
+СЕНИЋ ВЛАДИМИР
+СЕЊЕШ ШАНДОР
+СЕЊИ АГОШТОН ДР ЛЕКАР
+СЕЊИ ИЛОНА
+СЕЊИ ИРЕНА
+СЕНТЕ ЉУБИЦА
+СЕНТЕ ПЕТАР
+СЕНТИН ЧЕДОМИР
+СЕНТИВАНАЦ ЂОРЂЕ
+СЕНТИВАНАЦ МАРКО
+СЕНТИВАНАЦ МИЛАН
+СЕНТИВАНАЦ МИЛОШ
+СЕНТИВАНАЦ МОМИР
+СЕНТИВАНАЦ САВА
+СЕНТИВАНАЦ СВЕТЛАНА
+СЕНТИВАНАЦ ТОДОР
+СЕНТИВАНАЦ ВЕСНА
+СЕНТМАРТОНИ ФЕРЕНЦ
+СЕП АНТАЛ
+СЕП ДЕЖЕ ДР ЛЕКАР
+СЕП ФЕРЕНЦ
+СЕП-ВАРГА ЕМИЛИЈА
+СЕРАФИМОВ КИРИЛ
+СЕРАТЛИЋ ЧЕДОМИР
+СЕРАТЛИЋ ДАРКА
+СЕРАТЛИЋ ГОЛУБ
+СЕРАТЛИЋ МИРАШ
+СЕРАТЛИЋ МИРЈАНА
+СЕРАТЛИЋ ВЕЛИМИР ДР
+СЕРАТЛИЋ ЗОРАН
+СЕРДА ШАНДОР
+СЕРДАР ДАНИЦА
+СЕРДАР ИЛИЈА
+СЕРДАР МАРА
+СЕРДАР МЛАДЕН
+СЕРДАР НЕДЕЉКО
+СЕРДАР ПЕТАР
+СЕРДАР ПЕТАР
+СЕРДАРЕВИЋ ЋАЗИМ
+СЕРДАРЕВИЋ ГИЗЕЛА
+СЕРЕШИ ФЕРЕНЦ
+СЕРЕШИ ИШТВАН
+СЕРЕШИ ЛАСЛО
+СЕРЕШИ РОЗАЛИЈА
+СЕРЕШИ СТЕВАН
+СЕРЕШИ ТИБОР
+СЕРЕНЧЕ ЛАДИСЛАВ
+СЕРЕНЧЕШ ЈОЖЕФ НОВИНАР
+СЕРНЕЦ СТЕВАН
+СЕРТИЋ ДРАГАН
+СЕРТИЋ МАРИЈА
+СЕРТИЋ МАТИЈА
+СЕРТИЋ МИЛАН
+СЕРТИЋ ВЛАДА
+СЕТЕНЧИЋ МИЛОРАД
+СЕВЕР ШИМЕ
+СЕВЕРИНИ ЈАН
+СЕВИЋ ЂОРЂЕ
+СЕВИЋ РАДЕНКО
+СЕВКИЋ БРАНКО
+СЕВКИЋ МАГДАЛЕНА
+СИЧ АНДРИЈА
+СИЧ ДРАГАН
+СИЧ ФЕРЕНЦ
+СИЧ ИМРЕ
+СИЧ ЈОЖЕФ
+СИЧ ЈОСИП
+СИЧ ЈОСИП
+СИЧ ЈУЛИЈАНА
+СИЧ КАЛМАН
+СИЧ КАЛМАН
+СИЧ МАРГИТА
+СИЧ МАРИЈА
+СИЧ МАРИЈА
+СИЧ МИХАЉ
+СИЧ МИРОСЛАВА
+СИЧ ПЕТАР ДР ЛЕКАР
+СИЧ ПИРОШКА
+СИЧ СТЕВАН
+СИЧ СТЕВАН
+СИЧ СТЕВАН
+СИЧ ТЕРЕЗА
+СИЧ ВЛАДИСЛАВ
+СИЧ ЗЛАТКО
+СИЋ МИРОСЛАВ
+СИЋ СЛАЂАНА
+СИЋ СТАНИСЛАВ
+СИЋ СТАНКО
+СИЂИ МИРКО
+СИБЕР ИШТВАН
+СИБЕР ИШТВАН
+СИБИНАЦ ВУКИЦА
+СИБИНКИЋ ПЕТАР
+СИБИНКИЋ РАТКО
+СИБИНКИЋ РАТКО
+СИБИНКИЋ ВАСА
+СИБИНОВ НИКОЛА
+СИБИНОВИЋ РАДОМИР
+СИБИНСКИ ВИДА
+СИЏИМОСКИ ДИМИТРИЈЕ
+СИДОР ЋИРИЛ ДР
+СИГЕТИ-БИЧКЕИ АГОТА
+СИГЕТИ ЈАША
+СИГЕТИ ЈАНОШ
+СИГЕТИ СТЕВАН
+СИКА ФРАЊА
+СИКА ИРЕНА
+СИКИМИЋ АНЂЕЛКА
+СИКИМИЋ НОВАК
+СИКИМИЋ СРЂАН
+СИКИМИЋ СРЂАН
+СИКИРИЦА МИРЈАНА
+СИКОРА КАРОЉ
+СИКОРА ЛАДИСЛАВ
+СИКОРА ПЕТАР
+СИЛАШКИ ИЛИЈА
+СИЛАШКИ РАДОВАН
+СИЛАШКИ СЛАВКО
+СИЛАШКИ СНЕЖАНА
+СИЛАШКИ ВЕРА
+СИЛАШКИ ВЛАДИСЛАВА
+СИЛАЂЕВ РУЖИЦА
+СИЛАЂИ ШАНДОР
+СИЛАЂИ АНДРАШ
+СИЛАЂИ ФРАЊА
+СИЛАЂИ ГИЗЕЛА
+СИЛАЂИ ИШТВАН
+СИЛАЂИ ИМРЕ
+СИЛАЂИ ЈЕЛИСАВЕТА
+СИЛАЂИ КАРОЉ
+СИЛАЂИ ЛАДИСЛАВ
+СИЛАЂИ ЛАСЛО ВАЈАР
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЉУДЕВИТ
+СИЛАЂИ ЉУДЕВИТ
+СИЛАЂИ МАРИЈА
+СИЛАЂИ МИКЛОШ
+СИЛАЂИ РОЗАЛИЈА
+СИЛАЂИ ТЕРЕЗА
+СИЛАЂИ ВИКТОРИЈА
+СИЛАК АНДРАШ
+СИЛАК ГИЗЕЛА
+СИЛАК ИШТВАН
+СИЛАК ЗОЛТАН
+СИЛБАШКИ ДОШКО
+СИЛБАШКИ ЉУБИЦА
+СИЛБАШКИ МАРЈАН
+СИЛБАШКИ ЗОРАН
+СИЛБЕРХОЛЦ СТЕВАН
+СИЛЕР ЂУЛА
+СИЛЕР ДУШИЦА
+СИЛЕР ГУСТАВ
+СИЛЕР КАРЛ
+СИЉАНОВСКИ ДАРКО
+СИЉАНОВСКИ ЈОЖЕ
+СИЛНИ СЛАВНА
+СИЛВАШИ ШАНДОР
+СИЛВАШИ ЈАНОШ
+СИЛВАШИ КАРОЉ
+СИЛВЕСТРОВИЋ МИЛИЦА
+СИЛВЕСТРОВИЋ ТАНАСИЈЕ
+СИМЧИН МИХАЈЛО
+СИМАНИЋ ИЛИЈА
+СИМАНИЋ ЈЕЗДИМИР
+СИМАНИЋ ПЕТКО
+СИМАНИЋ РАЈКА
+СИМАНИЋ САВА
+СИМЕНДИЋ БОЖА
+СИМЕНДИЋ ГОРАН
+СИМЕНДИЋ СВЕТОЗАР
+СИМЕНДИЋ ВЛАДИМИР
+СИМЕНТИЋ ЈОВАН
+СИМЕНТИЋ ВОЈИСЛАВ
+СИМЕОНОВ ПАВЛЕ
+СИМЕОНОВ РАДИВОЈ
+СИМЕОНОВ ЗДРАВЧО
+СИМЕОНОВИЋ ЂОРЂЕ
+СИМЕОНОВИЋ МИЛИВОЈ
+СИМЕОНОВИЋ РАДОСЛАВ
+СИМЕОНОВИЋ СЛОБОДАНКА
+СИМЕТИЋ МОМЧИЛО
+СИМЕТИЋ ОСТОЈА
+СИМЕУНОВИЋ БОРИСЛАВ
+СИМЕУНОВИЋ ДРАГАН
+СИМЕУНОВИЋ ДРАГАН
+СИМЕУНОВИЋ ДРАГОЉУБ
+СИМЕУНОВИЋ ДУШАН
+СИМЕУНОВИЋ ЈАНКО
+СИМЕУНОВИЋ ЛЕПОСАВА
+СИМЕУНОВИЋ МИЛАН
+СИМЕУНОВИЋ МИЛОМИР
+СИМЕУНОВИЋ НЕВЕНКА
+СИМЕУНОВИЋ РАДОСАВ
+СИМЕУНОВИЋ САВА
+СИМЕУНОВИЋ СИМО
+СИМЕУНОВИЋ СИМО
+СИМЕУНОВИЋ СРЕТЕН
+СИМЕУНОВИЋ ВЛАДА
+СИМИЧИЋ ДРАГАНА
+СИМИШИЋ РАДОЈИЦА
+СИМИЋ ЧЕДА
+СИМИЋ ЖИВОЈИН
+СИМИЋ ЖИВОЈИН
+СИМИЋ ЂУРЂЕВКА
+СИМИЋ ЂУРА
+СИМИЋ ЂУРО
+СИМИЋ АЦА
+СИМИЋ АДАМ
+СИМИЋ АЛЕКСАНДАР
+СИМИЋ АЛЕКСАНДАР
+СИМИЋ АНЂЕЛКА
+СИМИЋ БОШКО
+СИМИЋ БОЈАНА
+СИМИЋ БОРА
+СИМИЋ БОРИСЛАВ
+СИМИЋ БОРИСЛАВ
+СИМИЋ БОРКА
+СИМИЋ БОСИЉКА
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНКО
+СИМИЋ БУДИМИР
+СИМИЋ-ЦХАЛАБИ ДРАГАНА
+СИМИЋ ЦВЕТИН
+СИМИЋ ДЕЈАН
+СИМИЋ ДОБРИВОЈЕ
+СИМИЋ ДОБРИВОЈЕ
+СИМИЋ ДОЈЧИН
+СИМИЋ ДРАГАН
+СИМИЋ ДРАГИЦА
+СИМИЋ ДРАГОЉУБ
+СИМИЋ ДРАГОЉУБ
+СИМИЋ ДРАГУТИН
+СИМИЋ ДУШАНКА
+СИМИЋ ДУШАН
+СИМИЋ ДУШАН
+СИМИЋ ДУШИЦА
+СИМИЋ ГОЈКО
+СИМИЋ ГОРДАНА
+СИМИЋ ГРАДИМИР
+СИМИЋ ХЕРМИНА ДР
+СИМИЋ ИЛИЈА
+СИМИЋ ИЛОНКА
+СИМИЋ ИВАН
+СИМИЋ ЈЕЛЕНА
+СИМИЋ ЈОВАН
+СИМИЋ ЈОВАН
+СИМИЋ ЈОВИЦА
+СИМИЋ ЈОВО
+СИМИЋ ЈОВО
+СИМИЋ ЈУДИТ
+СИМИЋ КРИСТИНА
+СИМИЋ ЉИЉАНА
+СИМИЋ МАРИЈА
+СИМИЋ МАРИЈА
+СИМИЋ МАРИЈА
+СИМИЋ МИЦА
+СИМИЋ МИХАИЛО
+СИМИЋ МИЛАН
+СИМИЋ МИЛАН
+СИМИЋ МИЛАН
+СИМИЋ МИЛЕНА
+СИМИЋ МИЛИЦА
+СИМИЋ МИЛИЈА
+СИМИЋ МИЛИВОЈ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОРАД
+СИМИЋ МИЛОРАД
+СИМИЋ МИЛОВАН
+СИМИЋ МИЛУТИН
+СИМИЋ МИЛУТИН
+СИМИЋ МИЛУТИН
+СИМИЋ МИРКО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ НАДА
+СИМИЋ НАДА
+СИМИЋ НАРАНЧА
+СИМИЋ НЕЂО
+СИМИЋ НЕДЕЉКО
+СИМИЋ НЕМАЊА
+СИМИЋ НЕВЕНКА
+СИМИЋ НИКОЛА
+СИМИЋ НИКОЛА
+СИМИЋ НОВАК
+СИМИЋ НОВАК
+СИМИЋ НОВАК
+СИМИЋ ОЛГА
+СИМИЋ ОСТОЈА
+СИМИЋ ПАНТЕЛИЈА
+СИМИЋ ПАВЛЕ
+СИМИЋ ПЕТАР
+СИМИЋ РАДА
+СИМИЋ РАДЕНКО
+СИМИЋ РАДЕНКО
+СИМИЋ РАДИСАВ
+СИМИЋ РАДИВОЈЕ
+СИМИЋ РАДИВОЈЕ
+СИМИЋ РАДИВОЈ
+СИМИЋ РАДОЈЕ
+СИМИЋ РАДОВАН
+СИМИЋ РАЈКО
+СИМИЋ РУЖИЦА
+СИМИЋ РУЖИЦА
+СИМИЋ САВА
+СИМИЋ СИМА
+СИМИЋ СИНИША
+СИМИЋ СЛАДА
+СИМИЋ СЛАВКО
+СИМИЋ СЛОБОДАН
+СИМИЋ СРЂАН
+СИМИЋ СРЕТЕН
+СИМИЋ СТЕВАН
+СИМИЋ СТЕВАН
+СИМИЋ СТЕВАН
+СИМИЋ СТОЈАНКА
+СИМИЋ СВЕТИСЛАВ
+СИМИЋ СВЕТИСЛАВ
+СИМИЋ ТИХОМИР
+СИМИЋ ТИХОМИР
+СИМИЋ ТОДЕ
+СИМИЋ ТОМИСЛАВ
+СИМИЋ ТОМИСЛАВ
+СИМИЋ ВАЈКА
+СИМИЋ ВАСА
+СИМИЋ ВЕРОНКА
+СИМИЋ ВЕСЕЛКО
+СИМИЋ ВИНКА
+СИМИЋ ВЛАДЕ
+СИМИЋ ВЛАДИМИР
+СИМИЋ ВЛАДО
+СИМИЋ ВОЈИСЛАВ
+СИМИЋ ЗЛАТИМИР
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРА
+СИМИЋ ЗОРА
+СИМИЋ ЗОРИЦА
+СИМИЋ ЗОРКА
+СИМИЋЕВИЋ РАДОМАН
+СИМИЈОНОВИЋ СЛОБОДАН
+СИМИКИЋ ЈОВАН
+СИМИЛЕЊИ ДУШИЦА
+СИМИН ЖИВКА
+СИМИН ЖИВОЈИН
+СИМИН АНЂЕЛКА
+СИМИН АРАНКА
+СИМИН ЦВЕТКО
+СИМИН ДАНИЦА
+СИМИН ДАНИЛО
+СИМИН ДИНА
+СИМИН ДРАГАН
+СИМИН ХИЛДА
+СИМИН ИВАНКА
+СИМИН ИВАН
+СИМИН ЈАША
+СИМИН ЈЕЛЕНА
+СИМИН КОСТА
+СИМИН ЛАЗАР
+СИМИН ЛЕПОСАВА
+СИМИН ЉУБИЦА
+СИМИН МАГДА
+СИМИН МИЛЕНА
+СИМИН МИЛИЦА
+СИМИН МИЛИЦА
+СИМИН МИЛИВОЈ
+СИМИН МИЛИВОЈ
+СИМИН МИЛУТИН
+СИМИН МИРОСЛАВ
+СИМИН НАДА
+СИМИН НАДА
+СИМИН НЕБОЈША
+СИМИН ПАВЛЕ
+СИМИН ПЕТАР
+СИМИН РАДИЦА
+СИМИН РАДИВОЈЕ
+СИМИН РАДОЈИЦА
+СИМИН РАДОВАН
+СИМИН СИНИША
+СИМИН СОФИЈА
+СИМИН СТЕВАН
+СИМОНОВИЋ ДРАГОСЛАВА
+СИМОНОВИЋ ХРИСТИНА
+СИМОНОВИЋ ИРЕНА ДР
+СИМОНОВИЋ МИЛЕ
+СИМОНОВИЋ МИЛОРАД
+СИМОНОВИЋ МИЛОРАД
+СИМОНОВИЋ НАДА
+СИМОНОВИЋ НИКОЛА
+СИМОНОВИЋ ПЕТАР
+СИМОНОВИЋ СЛОБОДАН
+СИМОНОВИЋ ТОМИСЛАВ
+СИМОНОВИЋ ВОЈИСЛАВ
+СИМОНОВСКИ ФИНКА
+СИМОНОВСКИ МИТА
+СИМОТИН РАДОВАН
+СИМОВИЋ ЖЕЉКО
+СИМОВИЋ ЖИВОТА
+СИМОВИЋ АНКА
+СИМОВИЋ БРАНИСЛАВ ДР
+СИМОВИЋ ДРАГОЉУБ
+СИМОВИЋ ДРАГОЉУБ
+СИМОВИЋ ДРАГО
+СИМОВИЋ ЈОВА
+СИМОВИЋ ЉУБИША
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛОШ
+СИМОВИЋ МИЛОШ
+СИМОВИЋ МИРКО
+СИМОВИЋ МИТАР
+СИМОВИЋ ПЕТАР
+СИМОВИЋ РАДИВОЈЕ
+СИМОВИЋ РАДОМИР
+СИМОВИЋ СЛОБОДАН ПРОФЕСОР
+СИМОВИЋ СЛОБОДАН
+СИМОВИЋ ТОДОР
+СИМОВИЋ ВИДАК
+СИМОВИЋ ВЛАДИМИР
+СИМОВЉЕВИЋ ЈОЦА
+СИМУНИЋ ЖЕЛИМИР
+СИМУНИЋ АНДРИЈА
+СИМУНИЋ МАГДА
+СИМУНИЋ СТАНИМИР
+СИМУНОВИЋ МАРИЈА
+СИМУНОВИЋ МИЛУН
+СИМУРДИЋ МИЛАН
+СИМУРДИЋ ПЕТАР
+СИМУРДИЋ ВИТОМИР
+СИНЧИЋ ЗВОНИМИР
+СИНЂЕЛИЋ ЉУБИСАВ
+СИНЂЕЛИЋ МИЛОШ
+СИНЂИЋ МИЛЕНКО
+СИНАДИНОВИЋ ВОЈО
+СИНАНИ АБДУЛА
+СИНАНИ МИЛИЦА
+СИНАНОВИЋ САФЕТ
+СИНГЕР ДРАГИЦА
+СИНГЕР РУЖИЦА
+СИРАЧКИ КАРОЛИНА
+СИРАЦКИ ЈОВАН
+СИРАЦКИ ВЛАДИМИР
+СИРАК ЛАСЛО ДР
+СИРИШКИ ЖАРКО
+СИРИШКИ ЂУРЂИНА
+СИРИШКИ БРАНИСЛАВ
+СИРИШКИ ИВАН
+СИРИШКИ ЈАСМИНКА
+СИРИШКИ ЈЕЛЕНА
+СИРИШКИ ЈОВАН
+СИРИШКИ МИРОСЛАВА
+СИРИШКИ СЛАВКО СУДИЈА
+СИРИШКИ СЛАВКО
+СИРОЧИЋ ИВАН
+СИРОЖЕНКО СНЕЖАНА
+СИРОЖЕНКО ВЕРА
+СИРОТИН СЛАВИЦА
+СИРОВИЦА ЈАНОШ
+СИРУЧЕК ВИЛИМ ДИПЛ ИНГ
+СИТАШ ИЛОНА
+СИТАШ ЛАЈОШ
+СИТАРЕВИЋ АМИР
+СИТАРИЋ ПАЈА
+СИВЧ АМАЛИЈА
+СИВЧ АНЂЕЛКА
+СИВЧ ДАНИЛО
+СИВЧ ХЕЛЕНА
+СИВЧ ИРИНА
+СИВЧ ЈАНКО
+СИВЧ ЉУБОМИР
+СИВЧ ЉУБОМИР
+СИВЧ НЕСТОР
+СИВЧ ВЛАДИМИР
+СИВЧЕВ ЂОКА
+СИВЧЕВ БОЖИДАР
+СИВЧЕВ ЈОВАН ДР
+СИВЧЕВ ЈУЛКА
+СИВЧЕВ ЉУБИЦА
+СИВЧЕВ МИЛАН
+СИВЧЕВ ЗОРАН
+СИВАЧКИ ЂУРА
+СИВАЧКИ ЈОВАН
+СИВАЧКИ МИЛАН
+СИВАЧКИ МИРЈАНА
+СИВАЧКИ МИРОСЛАВ
+СИВАЧКИ САВА
+СИВАЧКИ СЛОБОДАНКА
+СИВАЧКИ ВЕРА
+СИВАЧКИ ВЕРА
+СИВАЦ ЈОВАНКА
+СИВАК ИБОЉА
+СИВАК ЈУДИТА
+СИВАК ЉУБИНКА
+СИВАК РОЗИНА
+СИВИЋ ГОЈКО
+СИВИЋ РАДЕ
+СИЗОВ МАРГИТА
+СЈЕНИЧИЋ НЕДЕЉКО
+СЈЕПАНОВИЋ СРЂАН
+СКАКАВАЦ НИКОЛА
+СКАКАВАЦ НОВА
+СКАКАВАЦ НОВА
+СКАКАВАЦ СОФИЈА
+СКАКАВАЦ ВЕЛИМИР
+СКАКАВАЦ ВУЈИЦА
+СКАКАВАЦ ЗДРАВКО
+СКАКИЋ БОШКО
+СКАКИЋ МИЛАН
+СКАКИЋ НИКОЛА
+СКАКУН ЖИВКО
+СКАЛА АНТАЛ
+СКАЛА МИЛЕНА
+СКАЛА ВЛАДИМИР
+СКАЛИЦКИ ЗАГОРКА
+СКАНДАРСКИ АНКА
+СКАНДАРСКИ МИЛАН
+СКАНДАРСКИ МИЛОШ
+СКАНДАРСКИ МИРКО
+СКАНДАРСКИ МЛАДЕН
+СКАНДАРСКИ МОМЧИЛО
+СКАНДАРСКИ РАДОВАН
+СКАРАМУЦА МИЈО
+СКАРАМУЦА ЗДРАВКО
+СКЕЛЕЏИЋ АЛЕКСАНДАР
+СКЕЛЕЏИЋ АЛЕКСАНДАР
+СКЕЛЕЏИЋ БРАНИСЛАВ
+СКЕЛЕЏИЋ БРАНИСЛАВ
+СКЕЛЕЏИЋ ДРАГИЦА
+СКЕЛЕЏИЋ КАТИЦА
+СКЕЛЕЏИЋ ЉУБИНКО
+СКЕЛЕЏИЋ МАРИЈА
+СКЕЛЕЏИЋ МИЛАН
+СКЕЛЕЏИЋ МИРОСЛАВА
+СКЕЛЕЏИЋ РАДОСЛАВ
+СКЕЛЕЏИЋ РАДОСЛАВ
+СКЕЛЕЏИЈА КАТА
+СКЕЛЕЏИЈА РАДОЈИЦА
+СКЕЛЕЏИЈА СПАСИМИР
+СКЕНЏИЋ ЖАРКО
+СКЕНЏИЋ БОГДАН
+СКЕНЏИЋ БРАНКА
+СКЕНЏИЋ ДАНЕ
+СКЕНЏИЋ ДАНИЛО
+СКЕНЏИЋ ДРАГОМИР
+СКЕНЏИЋ ДУШАН
+СКЕНЏИЋ ИЛИЈА
+СКЕНЏИЋ ЈАСМИНКА
+СКЕНЏИЋ ЈОВАНКА
+СКЕНЏИЋ МАРГАРЕТА
+СКЕНЏИЋ МИЛАН
+СКЕНЏИЋ МИЛЕНКО
+СКЕНЏИЋ МИЛИЦА
+СКЕНЏИЋ РАДЕ
+СКЕНЏИЋ САРА
+СКЕНЏИЋ СОФИЈА
+СКЕНЏИЋ СТЕВАН
+СКЕНДЕРОВИЋ АНДРИЈА
+СКЕНДЕРОВИЋ БЕРИСЛАВ
+СКЕНДЕРОВИЋ ГАБОР
+СКЕНДЕРОВИЋ МАРИЈА
+СКЕНДЕРОВИЋ СИНИША
+СКЕРЛЕТОВИЋ МИЛОШ
+СКЕРЛЕТОВИЋ ЗОРАН
+СКЕРТ БОЖИДАР
+СКИЧАК ЛАСЛО
+СКИВЈАНИ ШАНДОР
+СКИВЈАНИ МИХАЉ
+СКЛАБИНАЦ ВЛАДИМИР
+СКЛАБИНСКИ САМО
+СКЛЕНА ЈОХАН ДИПЛ ИНГ
+СКЛЕНА ОЛИВЕРА
+СКЛЕНА ВИКТОРИЈА
+СКЛЕНАР ПЕТАР
+СКЉАР ЂУРО
+СКОЧАЈИЋ ВУКАШИН
+СКОЧОВСКИ МАРИЈА
+СКОБЕ ИВАН
+СКОК МИРЈАНА
+СКОКАНДИЋ ПЕТАР
+СКОКИЋ НЕНАД
+СКОКИЋ ВЕСНА
+СКОКНИЋ ДУШАН
+СКОКНИЋ СТЕВАН
+СКОКО МИЛОШ
+СКОМИНА ВЕРИЦА
+СКОПАЛ БЕЛА
+СКОПАЛ ЈОВАН
+СКОРИЋ ЈАСМИНКА
+СКОРИЋ ЉУБО
+СКОРИЋ ТОНКА
+СКОРИЋ ВУЈО
+СКОРУПАН ЂУРА
+СКОРУПАН ДАНИЦА
+СКОРУПАН КАТА
+СКОРУПАН РАДЕНКО
+СКОРУПАН СЛАВКО
+СКОТОВИЋ ФЕРЕНЦ
+СКРАМОЋИН СРЕЋКО
+СКРОБИЋ ДРАГАН
+СКРОБИЋ ПЕТАР
+СКРОБОЊА АЛЕКСАНДАР
+СКРОБОЊА КАТИЦА
+СКРОБОЊА НИКОЛА
+СКРОБОЊА ВЛАДИМИР
+СКУБАН ХЕЛЕНА
+СКУБАН ЈАНКО
+СКУБАН ЈЕФРЕМ
+СКУБАН ЈУЛИЈАН
+СКУБАН ЛЕОНА
+СКУБАН ЉУБОМИР
+СКУБАН МИХАЈЛО
+СКУБАН НАТАЛИЈА
+СКУБАН НИКОЛА
+СКУБАН ЗОРКА
+СКУЛАР РАДОЈКА
+СКУЛИЋ МИРЈАНА
+СКУЛИЋ СИМКА
+СКУЛИЋ ВЛАДИМИР
+СКУМПИЈА ЈОЖЕФ
+СКУРУПАТИС МИРЈАНА
+СЛАЋАНИН ИВАН
+СЛАДАКОВИЋ НИКОЛА
+СЛАДЕК АНДРИЈА
+СЛАДИЋ ЦВЕТА
+СЛАДИЋ СЛОБОДАН
+СЛАДИЋ СТЕВАН
+СЛАДИЋ ЗОРИЦА
+СЛАДОЈА МИЛОВАН
+СЛАДОЈЕ ИЛИЈА
+СЛАДОЈЕ РАДОМИР
+СЛАДОЈЕВ МИЛАН
+СЛАДОЈЕВ ПРЕДРАГ
+СЛАДОЈЕВИЋ ЖИВКО
+СЛАДОЈЕВИЋ МИРКО
+СЛАДОЈЕВИЋ РАДИВОЈ
+СЛАМА ЂОРЂЕ
+СЛАМА МАРИЈА
+СЛАМАР ФЕРЕНЦ
+СЛАНЦ ЈЕЛЕНА
+СЛАНКАМЕНАЦ ЖИВКО
+СЛАНКАМЕНАЦ ЖИВКО
+СЛАНКАМЕНАЦ ЂОРЂЕ
+СЛАНКАМЕНАЦ АЛЕКСАНДАР
+СЛАНКАМЕНАЦ АНКИЦА
+СЛАНКАМЕНАЦ БРАНИСЛАВ
+СЛАНКАМЕНАЦ ДУШАНКА
+СЛАНКАМЕНАЦ ИДА
+СЛАНКАМЕНАЦ ЈЕЛЕНА
+СЛАНКАМЕНАЦ ЈОВАН
+СЛАНКАМЕНАЦ МАРИЈА
+СЛАНКАМЕНАЦ МАРИЈА
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛОШ
+СЛАНКАМЕНАЦ МИЛОШ
+СЛАНКАМЕНАЦ МИЛОЈЕ
+СЛАНКАМЕНАЦ МИРЈАНА
+СЛАНКАМЕНАЦ МОМЧИЛО
+СЛАНКАМЕНАЦ НАДА
+СЛАНКАМЕНАЦ ПЕТАР ДР
+СЛАНКАМЕНАЦ ПЕТАР
+СЛАНКАМЕНАЦ ПЕТАР
+СЛАНКАМЕНАЦ ПРОКА
+СЛАНКАМЕНАЦ РАДОСЛАВ
+СЛАНКАМЕНАЦ СТЕВАН
+СЛАНКАМЕНАЦ ВЕСЕЛИН
+СЛАНКАМЕНАЦ ЗОРАН
+СЛАТВИНСКИ ГЕОРГИЈЕ
+СЛАВИЋ ЂОРЂЕ
+СЛАВИЋ СОФИЈА
+СЛАВИЦА СТИПЕ
+СЛАВКИЋ ДУШАНКА
+СЛАВКОВИЋ АЛОЈЗ
+СЛАВКОВИЋ МИЛОШ
+СЛАВКОВИЋ МИРЈАНА
+СЛАВКОВИЋ СИБИН
+СЛАВКОВИЋ СНЕЖАНА
+СЛАВКОВИЋ ТРИФУН
+СЛАВКОВИЋ ЗДЕНКО
+СЛАВНИЋ ДАНИЛО
+СЛАВНИЋ ЈАСМИНА
+СЛАВНИЋ ЉУБИЦА
+СЛАВНИЋ НОВКА
+СЛАВНИЋ РАДИВОЈ
+СЛАВНОВИЋ ИВАН
+СЛАВУЈ БОЖО
+СЛАВУЈ ДРАГАН
+СЛАВУЈЕВИЋ ДУШАН
+СЛАВУЈЕВИЋ ЉУБОМИР
+СЛАВУЈЕВИЋ МИЛЕНА
+СЛАВУЈЕВИЋ РАДИСАВ
+СЛАВУЈЕВИЋ СТЕВО
+СЛАВУЉ МИЛЕ
+СЛЕПЧЕВ ЖИВАН
+СЛЕПЧЕВ ДАНИЦА
+СЛЕПЧЕВ ЈОВАН
+СЛЕПЧЕВ НИКОЛА
+СЛЕПЧЕВ ЗДЕНКА
+СЛЕПЧЕВ ЗОРИЦА
+СЛЕПЧЕВИЋ КРСТАН
+СЛЕПЧЕВИЋ ЉУБИША
+СЛЕПЧЕВИЋ МИЛАН
+СЛЕПЧЕВИЋ ОЛГА
+СЛЕПЧЕВИЋ РУЖА
+СЛЕПЧЕВИЋ ЗДРАВКА
+СЛЕПКО ИРЕНА
+СЛЕПКО ЈОВАН
+СЛЕПКО МИХАЈЛО
+СЛЕПКО МИЛИЦА
+СЛЕСАР ДАНИЛО
+СЛЕСАР ЈЕЛЕНА
+СЛЕСАР МОМЧИЛО
+СЛЕСАР ВАСА
+СЛИШКО АНДРИЈА
+СЛИШКО МАРКО
+СЛИШКОВИЋ АНЂЕЛКА
+СЛИЈЕПЧЕВИЋ АНА
+СЛИЈЕПЧЕВИЋ БИСЕРКА
+СЛИЈЕПЧЕВИЋ ДРАГАН
+СЛИЈЕПЧЕВИЋ ДУШАН
+СЛИЈЕПЧЕВИЋ ДУШАН
+СЛИЈЕПЧЕВИЋ ГЕОРГИЈЕ
+СЛИЈЕПЧЕВИЋ ЈАНКО
+СЛИЈЕПЧЕВИЋ ЈАНКО
+СЛИЈЕПЧЕВИЋ ЈОВАН
+СЛИЈЕПЧЕВИЋ КОВИЉКА
+СЛИЈЕПЧЕВИЋ ЉУБАН
+СЛИЈЕПЧЕВИЋ МИЛОРАД
+СЛИЈЕПЧЕВИЋ МИЛОВАН
+СЛИЈЕПЧЕВИЋ МИРОСЛАВА
+СЛИЈЕПЧЕВИЋ НОВИЦА
+СЛИЈЕПЧЕВИЋ РУЖИЦА
+СЛИЈЕПЧЕВИЋ САВО
+СЛИЈЕПЧЕВИЋ ВЕРА
+СЛИЈЕПЧЕВИЋ ВЈЕКОСЛАВА
+СЛИЈЕПЧЕВИЋ ЗВОНКО
+СЛИЈЕПАЦ МИЛОШ
+СЛИЈЕПАЦ СЛОБОДАН
+СЛИМАК АДАМ
+СЛИВА ЕЛИЗАБЕТА
+СЛИВКА ЂУРА
+СЛИВКА АНА
+СЛИВКА БОЖАНА
+СЛИВКА БОСИЉКА
+СЛИВКА ЈАРОСЛАВ
+СЛИВКА ЈОВАН
+СЛИВКА МИША
+СЛИВКА МИША
+СЛИВКА СТЕВАН
+СЛИВКА ЗДЕНКА
+СЛИВКА ЗЛАТА
+СЉУКА БОХУСЛАВ
+СЉУКА ЈУРАЈ
+СЛОБОДА АНТАЛ
+СЛОБОДА ИШТВАН
+СЛОБОДА ЈАНОШ
+СЛОБОДА ЈОЖЕФ
+СЛОБОДА ЈУЛКА
+СЛОБОДА МИХАЈЛО
+СЛОБОДА МИХАЉ
+СЛОБОДА ПЕТАР
+СЛОБОДА СЛАВКА
+СЛОБОДА СТЕВАН
+СЛОКАР ИВАН
+СЛОКАР МАТИЈА
+СЛОВИЋ ДРАГОЉУБ ДР
+СЛУЊСКИ ФРАЊА
+СМАГИН ИВАН
+СМАЈИЋ МАКСИМ
+СМАЈИЋ МИЛОШ
+СМАЈИЋ СЛОБОДАН
+СМАЈИЋ СЛОБОДАН
+СМЕДЕРЕВАЦ ДУШАН
+СМЕДЕРЕВАЦ ЈОВАН
+СМЕДЕРЕВАЦ МИЛИЦА
+СМЕДЕРЕВАЦ ПЕТАР
+СМЕДЕРЕВАЦ СТЕВИЦА
+СМИЋЕВИЋ УРОШ
+СМИЕШКО ЈЕЛИСАВЕТА
+СМИЛИЋ МАРИЈА
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ БОЈАНА
+СМИЉАНИЋ БОРКА
+СМИЉАНИЋ БРАНКО
+СМИЉАНИЋ ДОБРИВОЈ
+СМИЉАНИЋ ДРАГИЦА
+СМИЉАНИЋ ИЛИЈА
+СМИЉАНИЋ ЈОВАНА
+СМИЉАНИЋ ЈОВАН
+СМИЉАНИЋ ЈОВО
+СМИЉАНИЋ ЉИЉАНА
+СМИЉАНИЋ ЉИЉАНА
+СМИЉАНИЋ МАРИЈА
+СМИЉАНИЋ МИЛАН
+СМИЉАНИЋ МИЛАН
+СМИЉАНИЋ МИЛЕНКО
+СМИЉАНИЋ МИЛКА
+СМИЉАНИЋ МИЛОРАД
+СМИЉАНИЋ МИЛУТИН
+СМИЉАНИЋ МИОДРАГ
+СМИЉАНИЋ МЛАДЕН
+СМИЉАНИЋ НЕВЕНКА
+СМИЉАНИЋ НЕВЕНКА
+СМИЉАНИЋ ОЛИВЕРА
+СМИЉАНИЋ ПЕТАР
+СМИЉАНИЋ ПРЕДРАГ
+СМИЉАНИЋ РАДА
+СМИЉАНИЋ РАДЕ
+СМИЉАНИЋ САВА
+СМИЉАНИЋ СОФИЈА
+СМИЉАНИЋ СОФИЈА
+СМИЉАНИЋ СТАНА
+СМИЉАНИЋ СТЕВО
+СМИЉАНИЋ ТРИВО
+СМИЉАНИЋ ВЕСЕЛКО
+СМИЉАНИЋ ВИДОСАВ
+СМИЉАНИЋ ВИНКО
+СМИЉАНИЋ ВЛАДИМИР
+СМИЉАНИЋ ВЛАДИМИР
+СМИЉАНИЋ ЗЛАТКО
+СМИЉАНИЋ ЗОРКА
+СМИЉАНОВ МИЛАН
+СМИЉАНОВ РАДОВАН
+СМИЉАНСКИ МИЛАН
+СМИЉИЋ ЖИВКО
+СМИЉКОВИЋ РАДОМИР
+СМИЉКОВИЋ СТАНИМИР
+СМИРНОВ ЈУДИТА
+СМИРНОВ ЈУДИТ
+СМИРНОВ РАСТИСЛАВ
+СМИРНОВ ВЛАДИМИР
+СМОК НИКОЛА
+СМОЛЧИЋ РУЖА
+СМОЛЕНИЦКИ МЕЛИТА
+СМОЛЕНСКИ КАРЛО
+СМОЛЕНСКИ РОЗАЛИЈА
+СМОЉАНИКОВ МИХАЈЛО ДИПЛ ИНГ
+СМОЛОВИЋ ДРАГОЉУБ
+СМОЛОВИЋ МИХАЈЛО
+СМОЛОВИЋ РАДМИЛА
+СМОЛОВИЋ РАТКО
+СМОЛОВИЋ САВА
+СМРЕКА ДРАГИЦА
+СМУЂА ГРАДИМИР
+СМУЂА ЈОВАН
+СМУЂА МИЛЕНКО
+СМУЂА НИКОЛА
+СМУЂА САВА
+СМУК ЖИВАНА
+СМУК БОРИВОЈ
+СМУТЕК ЈОСИП
+СМУТНИ ИВАН
+СЊИДА АНА
+СЊИДА САША
+СОБЧАК ФРАЊА
+СОБОЧАН МИША
+СОБОЋАН ИВАН
+СОЦЕК ИМРЕ
+СОЦЕК ЈОСИП
+СОЦЕК МИРЈАНА
+СОФИЉ АЛЕКСАНДРА
+СОФИЉ ДРАГИЦА
+СОФИЉ ЈОВАНКА
+СОФИЉ РАНКО
+СОФИЉ СЛАВИЦА
+СОФИНКИЋ БРАНКА
+СОФРАЏИЈА МУХАМЕД
+СОФРАНИН БОРИВОЈ
+СОФРАНИН КУЗМАН
+СОФРАНИН МИЛИВОЈ
+СОФРЕНИЋ ВЕРИЦА
+СОФРОНИЈЕВИЋ ЉУБИЦА
+СОФТИЋ МАРИЈА
+СОГИЋ САВА
+СОГИЋ ВЛАДИСЛАВ
+СОЈЕВИЋ МЛАДЕН
+СОЈИЋ РАДОЈКА
+СОКЕЛЕ БРАНИСЛАВ
+СОКИЋ ЖИВКО
+СОКИЋ ЂУРЂИЦА
+СОКИЋ ИЛИЈА
+СОКИЋ ЛИДИЈА
+СОКИЋ ЗОРКА
+СОКНИЋ ТОМИСЛАВ
+СОКОЛА АНТУН
+СОКОЛА ФЕРЕНЦ
+СОКОЛА ИШТВАН
+СОКОЛА ИШТВАН
+СОКОЛА КАТАРИНА
+СОКОЛА МАРТА
+СОКОЛАИ ЈОЖЕФ
+СОКОЛАИ ЛАЈОШ
+СОКОЛИЋ ЖЕЉКО
+СОКОЛОВ АЛЕКСАНДАР
+СОКОЛОВ ЉУБОМИР
+СОКОЛОВ МИЛАН
+СОКОЛОВ НАДКА
+СОКОЛОВ СЛАВКА
+СОКОЛОВ СТЕВАН
+СОКОЛОВ ЗИНАИДО
+СОКОЛОВИЋ ЂОРЂЕ
+СОКОЛОВИЋ АНА
+СОКОЛОВИЋ ДУШКО
+СОКОЛОВИЋ КАТАРИНА
+СОКОЛОВИЋ МИЛЕ
+СОКОЛОВИЋ НАТАЛИЈА
+СОКОЛОВИЋ РУЖИЦА
+СОКОЛОВИЋ СЛОБОДАН
+СОКОЛОВИЋ СЛОБОДАН
+СОКОЛОВИЋ ТОМИСЛАВ
+СОКОЛОВИЋ ЗОРИЦА
+СОКОВИЋ ДИМИТРИЈЕ
+СОКОВИЋ ДУШАН
+СОЛАР ЉУБИЦА
+СОЛАР СТЈЕПАН
+СОЛАРЕВИЋ ЈОВАНКА
+СОЛАРЕВИЋ МИЛАНКА
+СОЛАРИЋ СОФИЈА
+СОЛАРОВ БОРИСЛАВ
+СОЛАРОВ БОРО
+СОЛАРОВ МИЛАН
+СОЛАРОВ МИЛИЦА
+СОЛАРОВ МИЛИЦА
+СОЛАРОВ МИЛОШ
+СОЛАРОВ МИЛОВАН
+СОЛАРОВ НИКОЛА
+СОЛАРОВ РАДИВОЈ
+СОЛДАТ БОШКО
+СОЛДАТ БРАНКА
+СОЛДАТ ДРАГО
+СОЛДАТ МИЛОШ
+СОЛДАТ МИТАР
+СОЛДАТ ПЕТАР
+СОЛДАТ ВЕСНА
+СОЛДАТОВИЋ ЂОРЂЕ
+СОЛДАТОВИЋ ЂОРЂЕ
+СОЛДАТОВИЋ ГОРАН
+СОЛДАТОВИЋ ЈОВАН
+СОЛДАТОВИЋ МИЛА
+СОЛДАТОВИЋ САВА НОВИНАР
+СОЛДАТОВИЋ СТАНОЈЕ
+СОЛДАТОВИЋ ВЕСНА
+СОЛДАТОВИЋ ВОЈО
+СОЛДО АЛЕКСАНДАР
+СОЛДО ИВАН
+СОЛДО НОВИЦА
+СОЛДО ВЛАДИМИР
+СОЛЕША МИШО
+СОЛОМУН БРАНКО
+СОЛОМУН ДРАГО
+СОЛОМУН ИЛИЈА
+СОЛОМУН МИЛЕ
+СОЛОМУН ВЕСА
+СОЛОЊА СТЕВАН
+СОМБОРАЦ АЛЕКСАНДАР
+СОМБОРАЦ ЈОВАН
+СОМБОРАЦ МАРИЈА
+СОМБОРАЦ СРЕЋКО
+СОМБОРАЦ ТЕРЕЗА
+СОМБОРАЦ ТОДОР
+СОМБОРСКИ ЛАЗАР
+СОМБОРСКИ МИЛИЦА
+СОМЕР ИМРЕ
+СОМЕР ЈЕЛЕНА
+СОМЕР ТИБОР
+СОПКА АНИЦА
+СОПКА ЈАНКО
+СОПКА ЉУБОМИР
+СОПКА ЉУБОМИР
+СОПКА МАРИЈА
+СОПКА МИРОСЛАВ
+СОРШАК МИЛАН
+СОРШАК ВАЛЕНТИН
+СОРАДИ АНТУН
+СОРАДИ ИВАН
+СОРАДИ СТЈЕПАН
+СОРАЈИЋ МИЛАН
+СОРАЈИЋ МИЛИВОЈ
+СОРАК ДЕЛИВОЈЕ
+СОРГ АНГЕЛИНА
+СОРГ ЈЕЛЕНА
+СОРГ НИКОЛА
+СОРГЕР МИРА
+СОРО МИЛАН
+СОРО МИОДРАГ
+СОРО МИРЈАНА
+СОРО НИКОЛА
+СОРО СИМО
+СОТЕР ЈАНОШ
+СОТИРОВИЋ СЛАВИЦА
+СОТОНИЦА РАЈКО
+СОВА ПЕТАР
+СОВА РУДИ
+СОВИШ ЂОРЂЕ
+СОВИШ МИША
+СОВИШ ОЛГА
+СОВИШ ПАВЛЕ
+СОВИЉ ЂОРЂЕ
+СОВИЉ ЂУРО
+СОВИЉ АНЂЕЛКО
+СОВИЉ АНКА
+СОВИЉ БОЖО
+СОВИЉ БОГДАН
+СОВИЉ ДУШАН
+СОВИЉ ИЛИЈА
+СОВИЉ ИЛИЈА
+СОВИЉ ИЛИЈА
+СОВИЉ ИВИЦА
+СОВИЉ ЈОВАН ДР ЛЕКАР
+СОВИЉ ЉУБИЦА
+СОВИЉ МИЛАН МР
+СОВИЉ МИЛАН
+СОВИЉ ПЕРКА
+СОВИЉ ПЕТАР
+СОВИЉ ПЕТАР
+СОВИЉ ВЛАДО
+СПАХИЋ КЕМАЛ
+СПАИЋ ЖЕЉКО
+СПАИЋ МИЛАН
+СПАИЋ МИЛАН
+СПАЈИЋ БОЖА
+СПАЈИЋ ДИКО
+СПАЈИЋ ЈОВАН
+СПАЈИЋ ЈУЛИЈАНА
+СПАЈИЋ МИЛОЈЕ
+СПАЈИЋ МИРЈАНА
+СПАЈИЋ СОФИЈА
+СПАЈИЋ ВОЈИСЛАВ
+СПАЈИЋ ЗОРАН
+СПАЈИЋ ЗОРАН
+СПАЛЕВИЋ МИОМИР
+СПАЛЕВИЋ ВЕРА
+СПАРИОСИ АНЂЕЛКА
+СПАСЕНОСКИ ДИМИТРИЈЕ
+СПАСЕНОВ МИЛЕ
+СПАСЕНОВ СПАСКО
+СПАСЕНОВ СТАНА
+СПАСЕНОВИЋ ЖИВКО
+СПАСЕНОВИЋ ЉУБИЦА
+СПАСЕНОВСКИ РОМАН
+СПАСЕНОВСКИ ВАСА
+СПАСИЋ ЖИВОМИР
+СПАСИЋ ЂОРЂЕ
+СПАСИЋ АЛЕКСАНДАР
+СПАСИЋ БОЖИДАР
+СПАСИЋ БРАНИСЛАВ
+СПАСИЋ БРАНИСЛАВ
+СПАСИЋ ДРАГИША
+СПАСИЋ ГОРДАНА
+СПАСИЋ ГОРДАНА
+СПАСИЋ ЈЕЛИСАВЕТА
+СПАСИЋ ЈОВАН
+СПАСИЋ ЈУГОСЛАВ
+СПАСИЋ ЉИЉАНА
+СПАСИЋ ЉУБИЦА
+СПАСИЋ МИЛАН
+СПАСИЋ МИЛЕВА
+СПАСИЋ МИЛОШ
+СПАСИЋ МИЛУТИН
+СПАСИЋ МИРЈАНА
+СПАСИЋ МИРКО
+СПАСИЋ ОЛИВЕРА
+СПАСИЋ ПЕТАР
+СПАСИЋ ПРЕДРАГ
+СПАСИЋ СТАНИША
+СПАСИЋ СТАНКО
+СПАСИЋ СТОЈАН
+СПАСИЋ СВЕТИСЛАВ
+СПАСИЋ ТОМИСЛАВ ДИПЛ ИНГ
+СПАСИЋ ТОМИСЛАВ
+СПАСИЋ ТРАЈАНКА
+СПАСИЋ ВЕЛИЧКО
+СПАСИЋ ВУЈИЦА
+СПАСОЈЕВ ЉУБИЦА
+СПАСОЈЕВ СТОЈАН
+СПАСОЈЕВИЋ ЖИВОТА
+СПАСОЈЕВИЋ ЂОРЂЕ
+СПАСОЈЕВИЋ ЂУРА
+СПАСОЈЕВИЋ БОРИША МР
+СПАСОЈЕВИЋ БОРИСЛАВ
+СПАСОЈЕВИЋ ЦВЕТКО
+СПАСОЈЕВИЋ ДЕСИМИР
+СПАСОЈЕВИЋ ДОБРИЛА
+СПАСОЈЕВИЋ ДОБРОСАВ
+СПАСОЈЕВИЋ ДРАГАН
+СПАСОЈЕВИЋ ДРАГИША
+СПАСОЈЕВИЋ ДРАГОЉУБ
+СПАСОЈЕВИЋ ДРАГОМИР
+СПАСОЈЕВИЋ ДУШАН
+СПАСОЈЕВИЋ ЕЛИЗАБЕТА
+СПАСОЈЕВИЋ ГОСПАВА
+СПАСОЈЕВИЋ ГОСТИМИР
+СПАСОЈЕВИЋ ЈОВАН
+СПАСОЈЕВИЋ ЈУЛКА
+СПАСОЈЕВИЋ КАТИЦА
+СПАСОЈЕВИЋ КРСТА
+СПАСОЈЕВИЋ ЛАЗАР
+СПАСОЈЕВИЋ МИЋО
+СПАСОЈЕВИЋ МИЋО
+СПАСОЈЕВИЋ МИХАЈЛО
+СПАСОЈЕВИЋ МИЛОРАД
+СПАСОЈЕВИЋ МИОДРАГ
+СПАСОЈЕВИЋ МИОДРАГ
+СПАСОЈЕВИЋ МОМЧИЛО
+СПАСОЈЕВИЋ НЕБОЈША
+СПАСОЈЕВИЋ НОВАК
+СПАСОЈЕВИЋ ПАВЛЕ
+СПАСОЈЕВИЋ ПРЕДРАГ
+СПАСОЈЕВИЋ РАЦО
+СПАСОЈЕВИЋ РАДИСАВ
+СПАСОЈЕВИЋ РАДОЈЛЕ
+СПАСОЈЕВИЋ РАНКО ДИПЛ ИНГ
+СПАСОЈЕВИЋ РОДОЉУБ
+СПАСОЈЕВИЋ РУЖИЦА
+СПАСОЈЕВИЋ СЛАВКА
+СПАСОЈЕВИЋ СЛАВКО
+СПАСОЈЕВИЋ СЛАВО
+СПАСОЈЕВИЋ СЛОБОДАН
+СПАСОЈЕВИЋ СОЊА
+СПАСОЈЕВИЋ СТАНИСЛАВА
+СПАСОЈЕВИЋ СТЕВАН
+СПАСОЈЕВИЋ СУЗАНА
+СПАСОЈЕВИЋ ВИТОМИР ДР
+СПАСОЈЕВИЋ ВЛАДИМИР
+СПАСОЈЕВИЋ ЗОРАН
+СПАСОЛИ ФЕРАТ
+СПАСОВА ЉУБИЦА
+СПЕРАНСКИ ЉУДМИЛА МР
+СПЕРЊАК ЂОРЂЕ
+СПЕРЊАК БОГДАН
+СПЕРЊАК ЉУБИНКА
+СПЕРЊАК МИЛЕНКО ДИПЛ ИНГ
+СПЕВАК ДАНИЕЛА
+СПЕВАК ЈУРАЈ
+СПЕВАК ЗОРОСЛАВ
+СПИЧАНОВИЋ ЕВИЦА
+СПИЧАНОВИЋ МАЈА
+СПИЧАНОВИЋ ЗАГОРКА
+СПИЛКУЦИЋ БОРИВОЈЕ
+СПИРИЋ АЛЕКСАНДАР
+СПИРИДОНОВ АНАСТАС
+СПИРИДОНОВИЋ ГРАДИМИР
+СПИРИДОНОВИЋ МИЛЕНКО
+СПИРИДОНОВИЋ СИЛВИЈА
+СПИРОСКИ АЛЕКСАНДАР
+СПИРОВСКИ ЦАНЕ
+СПОЈА ЖЕЉКО
+СПРЕМИЋ ДРАГАН
+СПРЕМИЋ ПЕТАР
+СПРЕМИЋ СРЕТЕН
+СПРЕМО ЂУРО
+СПРЕМО МИОДРАГ
+СПРЕМО МИРКО
+СПРЕМО МИРОСЛАВ
+СПРЕМО РАДОВАН
+СПРЕМО СЛАВКО
+СПРЕМО ВОЈИСЛАВ
+СПУСЕНИК ЛАЈОШ
+СРЂАНОВ ЖАРКО
+СРЂАНОВ ЖИВКО
+СРЂАНОВ КОНСТАНТИН
+СРЂАНОВ МИХАЈЛО
+СРЂАНОВ МИЛИВОЈ
+СРЂАНОВ МИЛОШ ДИПЛ ИНГ
+СРЂАНОВ МИЛОШ
+СРЂАНОВ МИРОСЛАВ
+СРЂАНОВ НАДА
+СРЂАНОВ НАДА
+СРЂАНОВ СЛАВКО
+СРЂАНОВ СЛОБОДАНКА
+СРЂАНОВ СЛОБОДАНКА
+СРЂАНОВ СЛОБОДАН
+СРЂАНОВ ВЕРА
+СРЂЕНОВИЋ МИЛАН
+СРЂЕНОВИЋ УРОШ
+СРЂЕВИЋ БОЈАН
+СРБИН АНКА
+СРБИН БОГДАН
+СРБИН ЈОВАН ДР
+СРБИН КОСТА
+СРБИН МИРОСЛАВ
+СРБИНОВСКИ БОРИС
+СРБИНОВСКИ ДРАГАНА
+СРБИНОВСКИ ДРАГАНА
+СРБИНОВСКИ МАША
+СРБИНОВСКИ ПАНТА
+СРБИНОВСКИ ПЕТАР
+СРБЉАН ЛАЗАР
+СРБЉАНИН ДРАГАН
+СРБЉАНИН ПРЕДРАГ
+СРБОВАН ЈОН
+СРБУЛОВИЋ БОЖИДАР
+СРБУЛОВИЋ ДРАГОЉУБ
+СРБУЛОВИЋ МИРОСЛАВ
+СРДАНОВ ЖИВАН
+СРДАНОВ ЖИВОЈИН
+СРДАНОВ ЂОРЂЕ
+СРДАНОВ БОЖИДАР
+СРДАНОВ ЈЕЛКА
+СРДАНОВ ЈОВАН
+СРДАНОВ ЛАЗАР
+СРДАНОВ ЛАЗАР
+СРДАНОВ ЉИЉАНА
+СРДАНОВ МИША
+СРДАНОВ МИЛИЦА
+СРДАНОВ МИЛОШ
+СРДАНОВ МИЛОСАВА
+СРДАНОВ ПЕТАР
+СРДАНОВ СИМА
+СРДАНОВ СЛАВКА
+СРДАНОВ СЛОБОДАН
+СРДАНОВ СЛОБОДАН
+СРДАНОВ ТОДОР
+СРДАНОВИЋ БРАНИСЛАВ
+СРДАНОВИЋ ДЕЈАН
+СРДАНОВИЋ ДРАГОЈЕ
+СРДАНОВИЋ ФИЛИП
+СРДАНОВИЋ ЛЕПОСАВА
+СРДАНОВИЋ ОЗРЕН ДИПЛ ИНГ
+СРДАНОВИЋ РОСАНДА
+СРДАНОВИЋ САЊА
+СРДИЋ ЧЕДОМИР
+СРДИЋ ЖИВКО
+СРДИЋ ЖИВКО
+СРДИЋ ЖИВКО
+СРДИЋ ЂОРЂЕ МР
+СРДИЋ ЂУРО
+СРДИЋ АНЂА
+СРДИЋ АНА
+СРДИЋ БОШКО
+СРДИЋ БОГДАН
+СРДИЋ БОСА
+СРДИЋ БРАНИСЛАВ
+СРДИЋ ДАНЕ
+СРДИЋ ДИЈАНА
+СРДИЋ ДУШАН
+СРДИЋ ЕМЕРИКА
+СРДИЋ ЕМЕРИКА
+СРДИЋ ГОРАН
+СРДИЋ ИВАН
+СРДИЋ ЈЕЛЕНА
+СРДИЋ ЉУБИЦА
+СРДИЋ МИЛАН
+СРДИЋ МИЛАН
+СРДИЋ МИЛИЦА
+СРДИЋ МИРЈАНА
+СРДИЋ МИРКО
+СРДИЋ МИРКО
+СРДИЋ НАДА
+СРДИЋ НАДА
+СРДИЋ НИКОЛА
+СРДИЋ НИКОЛА
+СРДИЋ НИКОЛА
+СРДИЋ ПЕТАР
+СРДИЋ РАДЕ
+СРДИЋ РАДЕ
+СРДИЋ СИМА
+СРДИЋ СЛОБОДАН
+СРДИЋ СВЕТОЗАР
+СРДИЋ ВАСО
+СРДИЋ ВЛАДИМИР
+СРДИЋ ВОЈА
+СРДИЋ ЗОРА
+СРЕЋКОВ ЖИВКО
+СРЕЋКОВ БЛАГИЦА
+СРЕЋКОВ БРАНКО
+СРЕЋКОВ ДРАГАН
+СРЕЋКОВ ДРАГИЦА
+СРЕЋКОВ ДУШАН
+СРЕЋКОВ ДУШАН
+СРЕЋКОВ ЕРЖЕБЕТ
+СРЕЋКОВ ЈОВАН
+СРЕЋКОВ КАТИЦА
+СРЕЋКОВ МИЛЕНА
+СРЕЋКОВ МИЛЕНА
+СРЕЋКОВ МИЛИВОЈ
+СРЕЋКОВ МИРОСЛАВ
+СРЕЋКОВ РАДИВОЈ
+СРЕЋКОВ РАДОЈКА
+СРЕЋКОВ СТАНКО
+СРЕЋКОВ СТЕВАН
+СРЕЋКОВ ТЕОДОРА
+СРЕЋКОВ ВАСА
+СРЕЋКОВ ЗДРАВКО
+СРЕЋКОВИЋ АЛЕКСАНДАР ДР
+СРЕЋКОВИЋ ДРАГИША
+СРЕЋКОВИЋ МАРИЈА
+СРЕЋКОВИЋ МИЛУТИН
+СРЕЋКОВИЋ РАДИША
+СРЕЋКОВИЋ СТОЈАНА
+СРЕЋО ДАНИЦА
+СРЕЋО МИЋО
+СРЕБОТЊАК СТАНКО
+СРЕБРО ИЛИЈА ДР
+СРЕДАНОВИЋ МИЛОРАД ДИПЛ ИНГ
+СРЕДАНОВИЋ НЕДЕЉКО
+СРЕДОЈЕВИЋ ДАРИНКА
+СРЕДОЈЕВИЋ ДОБРО
+СРЕДОЈЕВИЋ ЈУЛКИЦА
+СРЕДОЈЕВИЋ ЛАЗАР
+СРЕДОЈЕВИЋ МИЛИСАВ
+СРЕДОЈЕВИЋ МИРКО
+СРЕДОЈЕВИЋ НЕБОЈША
+СРЕДОЈЕВИЋ ВЕЛИМИР
+СРЕДОЈЕВИЋ ВЕЛИМИР
+СРЕДОВИЋ РАЈКО
+СРЕЈИЋ БОРКА
+СРЕМЧЕВ ЂОРЂЕ
+СРЕМЧЕВ АЛЕКСАНДАР ДР ЛЕКАР
+СРЕМЧЕВ ЛАЗАР
+СРЕМЧЕВ МАРИЈА
+СРЕМЧЕВ НЕСТОР
+СРЕМЧЕВ СЛОБОДАН
+СРЕМЧЕВ СОФИЈА
+СРЕМЧЕВИЋ БОРИСЛАВ
+СРЕМЧЕВИЋ ЈОВАН
+СРЕМЧЕВИЋ ЈОВАН
+СРЕМЧЕВИЋ КАТА
+СРЕМЧЕВИЋ КАТИЦА
+СРЕМЧЕВИЋ ЉУБИША
+СРЕМЧЕВИЋ РАДИВОЈ
+СРЕМЧЕВИЋ РАСТКО
+СРЕМЧЕВИЋ СЛАВНА
+СРЕМЧЕВИЋ СТАНИСЛАВ
+СРЕМЧЕВИЋ ВЕЉКО
+СРЕМАЧКИ ЂОРЂЕ
+СРЕМАЧКИ ДРАГОЉУБ
+СРЕМАЧКИ ДУШАНКА
+СРЕМАЧКИ-ГАВРИЛОВИЋ МАЈА
+СРЕМАЧКИ ИВАНКА
+СРЕМАЧКИ ЈОВАНКА
+СРЕМАЧКИ МИЛОШ
+СРЕМАЧКИ-МИРКОВИЋ МИРЈАНА
+СРЕМАЧКИ ПЕТАР
+СРЕМАЧКИ СИМА
+СРЕМАЧКИ СОКА
+СРЕМАЧКИ СПАСОЈЕ
+СРЕМАЧКИ СТАНОЈЕ
+СРЕМАЧКИ ВЛАДА
+СРЕМАЧКИ ЗОРИЦА
+СРЕМАЦ ЂОРЂЕ
+СРЕМАЦ АЛЕКСАНДАР
+СРЕМАЦ ДРАГОЉУБ
+СРЕМАЦ ИСАК
+СРЕМАЦ ЈАНКО
+СРЕМАЦ ЈОВАН
+СРЕМАЦ ЉУБИЦА
+СРЕМАЦ ЉУБИЦА
+СРЕМАЦ МИЛЕНА
+СРЕМАЦ МИЛЕНКО
+СРЕМАЦ МИЛИВОЈ
+СРЕМАЦ МИРА
+СРЕМАЦ НИКОЛА
+СРЕМАЦ ПАУЛИНА
+СРЕМАЦ ПАВЛЕ
+СРЕМАЦ ПЕРСИДА
+СРЕМАЦ РАДОЈКО
+СРЕМАЦ СЛОБОДАН
+СРЕМАЦ СРЂАН
+СРЕМАЦ СТОЈАНКА
+СРЕМАЦ СВЕТИСЛАВ
+СРЕМАЦ СВЕТИСЛАВ
+СРЕМАЦ ТАНАСИЈЕ
+СРЕМАЦ ВЛАДИМИР
+СРЕМАЦ ВЛАЈКО
+СРЕМАЦ ЗОРАНА
+СРЕМАЦ ЗОРАН
+СРЕТЕНОВИЋ ЂУРЂИНКА
+СРЕТЕНОВИЋ БОРИВОЈ
+СРЕТЕНОВИЋ-МАНОЈЛОВИЋ ЂУРЂИНКА
+СРЕТЕНОВИЋ НЕВЕНКА
+СРЕТЕНОВИЋ СТОЈАДИН
+СРЕТИЋ МИЛЕНКО
+СРЕТИЋ МИРЈАНА
+СРЕТИЋ РАТОМИР
+СРЕТКОВИЋ ВЕРИЦА
+СРНДОВИЋ ЗОРКА
+СРНЕЦ ЖЕЉКО
+СРНИЋ БОГДАН
+СРНИЋ ЕВИЦА
+СРНКА ЈАНКО
+СРНКА ЈОВАН
+СТАШУК МИХАЈЛО
+СТАХАНИЋ АНКА
+СТАИН СТЕВАН
+СТАЈЧИЋ ИВАН
+СТАЈЧИЋ ПЕТАР
+СТАЈШИЋ ЂУРА
+СТАЈИЋ ЂОРЂЕ
+СТАЈИЋ АЛЕКСАНДРА
+СТАЈИЋ БОЖИДАР
+СТАЈИЋ БОРИСЛАВ
+СТАЈИЋ БОРИСЛАВ
+СТАЈИЋ БОРИВОЈ
+СТАЈИЋ БРАНИМИР
+СТАЈИЋ БРАНИСЛАВ
+СТАЈИЋ ДРАГОЉУБ
+СТАЈИЋ ДУШАН
+СТАЈИЋ ДУШИЦА
+СТАЈИЋ ФЕМА
+СТАЈИЋ ГЛИГОРИЈЕ
+СТАЈИЋ ГЛИГОРИЈЕ
+СТАЈИЋ ГРИГОРИЈЕ ДИПЛ ИНГ
+СТАЈИЋ ЈУСТИНА
+СТАЈИЋ ЛЕПОСАВА
+СТАЈИЋ ЉУБОМИР
+СТАЈИЋ МАРА
+СТАЈИЋ МАРИЈА
+СТАЈИЋ МИЛАН ДИПЛ ИНГ
+СТАЈИЋ МИЛАН
+СТАЈИЋ МИЛЕСА
+СТАЈИЋ МИЛЕВА
+СТАЈИЋ МИЛКА
+СТАЈИЋ МИРОСЛАВ
+СТАЈИЋ НЕСТОР
+СТАЈИЋ ПАВЛЕ
+СТАЈИЋ ПЕТАР
+СТАЈИЋ-ПОПОВ БОРИСЛАВА ДР
+СТАЈИЋ РАДИВОЈ
+СТАЈИЋ РАДОСЛАВ
+СТАЈИЋ СИКА
+СТАЈИЋ СРЕТА
+СТАЈИЋ СТАНИСЛАВ
+СТАЈИЋ СТОЈАДИН
+СТАЈИЋ ТОДОР
+СТАЈИЋ ВЕЛИМИР
+СТАЈИЋ ВУКОСАВ
+СТАЈИЋ ЗЛАТА
+СТАЈКОВИЋ БРАТИСЛАВ
+СТАЈКОВИЋ ДРАГОЉУБ
+СТАКИЋ ЖИВАН
+СТАКИЋ ЖИВКА
+СТАКИЋ ЂУРО
+СТАКИЋ АЛЕКСАНДАР
+СТАКИЋ БОШКО
+СТАКИЋ БОЖИДАР
+СТАКИЋ БОРИВОЈЕ
+СТАКИЋ БРАНИСЛАВ
+СТАКИЋ ДЕЈАН
+СТАКИЋ ДУШАН ДИПЛ ИНГ
+СТАКИЋ ЈЕЛЕНА
+СТАКИЋ ЈОВАН СУДИЈА
+СТАКИЋ МЕЛИНДА
+СТАКИЋ МИЛАН
+СТАКИЋ МИЛАН
+СТАКИЋ МИРКО
+СТАКИЋ МОМИР
+СТАКИЋ НЕБОЈША
+СТАКИЋ НЕДЕЉКО
+СТАКИЋ НИКОЛА
+СТАКИЋ ПАВЛЕ
+СТАКИЋ СПОМЕНКА
+СТАКИЋ СТОЈАН
+СТАКИЋ ВЕРА
+СТАКИЋ ЗАХАРИЈЕ
+СТАКИЋ ЗОРАН
+СТАКОРИЋ ЗДРАВКО
+СТАМАТОВИЋ МИЛЕНКО ДР
+СТАМАТОВИЋ МИЛОРАД
+СТАМЕНИЋ ДАМЊАН
+СТАМЕНИЋ МАРКО
+СТАМЕНИЋ РАДОСАВ
+СТАМЕНИЋ ТОМИСЛАВ
+СТАМЕНКОВИЋ ЖИВОЈИН
+СТАМЕНКОВИЋ ЖИВОЈИН
+СТАМЕНКОВИЋ АЛЕКСАНДАР
+СТАМЕНКОВИЋ БЛАГОЈЕ
+СТАМЕНКОВИЋ ДРАГАН
+СТАМЕНКОВИЋ ГОРДАНА
+СТАМЕНКОВИЋ ЉУБОМИР ДР
+СТАМЕНКОВИЋ ЉУБОМИР
+СТАМЕНКОВИЋ МАРЈАН
+СТАМЕНКОВИЋ МИЛОРАД
+СТАМЕНКОВИЋ МИРОСЛАВА
+СТАМЕНКОВИЋ НОВИЦА
+СТАМЕНКОВИЋ ПЕТРОНИЈЕ
+СТАМЕНКОВИЋ РАДОМИР ДИПЛ ИНГ
+СТАМЕНКОВИЋ СИНИША
+СТАМЕНКОВИЋ СЛАВОЉУБ
+СТАМЕНКОВИЋ СЛОБОДАН
+СТАМЕНКОВИЋ СРЕТЕН ДР
+СТАМЕНКОВИЋ СРЕТЕН
+СТАМЕНКОВИЋ СТАНИМИР
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ ВАСИЛИЈЕ
+СТАМЕНКОВИЋ ВЕЛИБОР
+СТАМЕНКОВИЋ ВЕРА
+СТАМЕНКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+СТАМЕНКОВИЋ ВЛАДИМИР
+СТАМЕНКОВИЋ ВЛАСТИМИР
+СТАМЕНКОВИЋ ВУКАДИН
+СТАМЕНКОВИЋ ЗОРАН
+СТАМЕНКОВИЋ ЗОРА
+СТАМЕНОВ БРАНКО
+СТАМЕНОВ НИКОЛА
+СТАМЕНОВ СЛАВКА
+СТАМЕНОВИЋ КРСТИВОЈ
+СТАМЕНОВИЋ РАЈКО
+СТАМЕВСКИ ТОНЧЕ
+СТАМОРАН КАТИЦА
+СТАМПФЕР РОЗАЛИЈА
+СТАНЧЕТИЋ ДРАГИЦА
+СТАНЧЕТИЋ ПАВЛЕ
+СТАНЧИЋ АНЂЕЛКА
+СТАНЧИЋ АНДРИЈА ДР
+СТАНЧИЋ БЛАГОЈЕ МР
+СТАНЧИЋ БОЖАНА
+СТАНЧИЋ БОЖИДАР
+СТАНЧИЋ ДАНИЦА
+СТАНЧИЋ ДРАГОЉУБ
+СТАНЧИЋ ЛАЗАР
+СТАНЧИЋ ЉУБОМИР
+СТАНЧИЋ МАРИЈА
+СТАНЧИЋ МАРКО
+СТАНЧИЋ МИЋА
+СТАНЧИЋ МИХАЈЛО
+СТАНЧИЋ МИКА
+СТАНЧИЋ МИОДРАГ
+СТАНЧИЋ НИКОЛА
+СТАНЧИЋ ПАВЛЕ
+СТАНЧИЋ ТАНКОСАВА
+СТАНЧИЋ ТИХОМИР
+СТАНЧИЋ ЗОРАН
+СТАНЧИК МАРГИТА
+СТАНЧУ МАРИЈА
+СТАНЧУЛ ЖИВАН
+СТАНЧУЛ АНКА
+СТАНЧУЛ ЉИЉАНА
+СТАНЧУЛ ЉУБОМИР
+СТАНЧУЛ РАДИСЛАВ
+СТАНЧУЛ РАДОВАН
+СТАНЧУЛ САВА
+СТАНЧУЛОВ ДРАГИЦА
+СТАНЧУЛОВ МИЛАН
+СТАНАЋЕВ ЖИВА
+СТАНАЋЕВ МИЛЕНА
+СТАНАЋЕВ МИЛИВОЈ
+СТАНАЋЕВ СРЕДОЈЕ ДР
+СТАНАР ЂУРА
+СТАНАР ЂУРА
+СТАНАР ЂУРА
+СТАНАР АНКА
+СТАНАР ДЕСА
+СТАНАР ДУШАНКА
+СТАНАР ДУШАН
+СТАНАР-ГОГИЋ СТЕВАН
+СТАНАР ИЛИЈА
+СТАНАР МИЛЕ
+СТАНАР РАДЕ
+СТАНАР РАТКО
+СТАНАРЕВИЋ ЖЕЉКО
+СТАНАРЕВИЋ БОЖА
+СТАНАРЕВИЋ МАРКО
+СТАНАРЕВИЋ МИХАЈЛО
+СТАНАРЕВИЋ МИЛАН
+СТАНАРЕВИЋ НЕДЕЉКА
+СТАНАРЕВИЋ САВА
+СТАНБОЛИЈА МИРКО
+СТАНЕКОВИЋ МИЛАН
+СТАНЕКОВИЋ СТАНИСЛАВ
+СТАНЕКОВИЋ ВОЈА
+СТАНИЧКОВ ЧЕДОМИР
+СТАНИЧКОВ БОРА
+СТАНИЧКОВ ЈОВАН
+СТАНИЧКОВ ЉИЉАНА
+СТАНИЧКОВ МАРТА
+СТАНИШИЋ БОГОЉУБ
+СТАНИШИЋ БОРИСЛАВ
+СТАНИШИЋ БУДИНКА
+СТАНИШИЋ ДАМЈАН
+СТАНИШИЋ ДРАГОЉУБ
+СТАНИШИЋ ДРАГОЉУБ
+СТАНИШИЋ ДРАГОМИР
+СТАНИШИЋ ДУШАН
+СТАНИШИЋ ДУШАН
+СТАНИШИЋ ГОЈКО
+СТАНИШИЋ ЈЕЛЕНА
+СТАНИШИЋ ЈОВАН
+СТАНИШИЋ ЈОВАН
+СТАНИШИЋ КАТИЦА
+СТАНИШИЋ ЛЕПОСАВА
+СТАНИШИЋ ЉИЉАНА ДР
+СТАНИШИЋ ЉУБИЦА
+СТАНИШИЋ МАРКО
+СТАНИШИЋ МАРКО
+СТАНИШИЋ МИЛАН
+СТАНИШИЋ МИЛАН
+СТАНИШИЋ МИЛИЋ ДР ЛЕКАР
+СТАНИШИЋ МИЛИВОЈ
+СТАНИШИЋ МИЛОШ
+СТАНИШИЋ МИОДРАГ
+СТАНИШИЋ МИОДРАГ
+СТАНИШИЋ МЛАДЕН
+СТАНИШИЋ МОМИР
+СТАНИШИЋ НЕБОЈША
+СТАНИШИЋ НЕДЕЉКА
+СТАНИШИЋ НИКОЛА
+СТАНИШИЋ НИКОЛА
+СТАНИШИЋ ОЛГИЦА
+СТАНИШИЋ ПАВЛЕ
+СТАНИШИЋ ПАВЛЕ
+СТАНИШИЋ ПЕТАР
+СТАНИШИЋ ПРОКА
+СТАНИШИЋ РАДА
+СТАНИШИЋ РАДОВАН
+СТАНИШИЋ РАТКО
+СТАНИШИЋ РЕЉА
+СТАНИШИЋ СИМО
+СТАНИШИЋ СЛАВКО ДИПЛ ИНГ
+СТАНИШИЋ СЛОБОДАН
+СТАНИШИЋ СТАНИША
+СТАНИШИЋ СТАНИСЛАВ
+СТАНИШИЋ СТЕВО
+СТАНИШИЋ СТОЈАНЧА
+СТАНИШИЋ СВЕТЛАНА
+СТАНИШИЋ СВЕТОЗАР ДР
+СТАНИШИЋ СВЕТОЗАР
+СТАНИШИЋ ТИХОМИР
+СТАНИШИЋ ТОДОР
+СТАНИШИЋ ТОМАШ
+СТАНИШИЋ ВАСИЉКА
+СТАНИШИЋ ВЕЉКО
+СТАНИШИЋ ВЛАДА
+СТАНИШИЋ ЗОРАН
+СТАНИШИЋ ЗОРАН
+СТАНИШИН БРАНКО
+СТАНИШИН ИСА
+СТАНИШИН ВОЈИН
+СТАНИШЉЕВИЋ ДУШАНКА
+СТАНИЋ ЖИВАДИН
+СТАНИЋ ЖИВАН
+СТАНИЋ ЂУРА
+СТАНИЋ АЛЕКСАНДАР
+СТАНИЋ БОШКО
+СТАНИЋ БОГДАН
+СТАНИЋ БРАНКА
+СТАНИЋ БРАНКО
+СТАНИЋ БРАНКО
+СТАНИЋ ДАНЕ
+СТАНИЋ ДАНИЦА
+СТАНИЋ ДАНКА
+СТАНИЋ ДРАГАН
+СТАНИЋ ДРАГОСЛАВ ДР
+СТАНИЋ ДРАГО
+СТАНИЋ ДУШАН
+СТАНИЋ ГОЈКО
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИВАН
+СТАНИЋ ЈАДРАНКА
+СТАНИЋ ЈЕЛЕНА
+СТАНИЋ ЈОВАН ДИПЛ ИНГ
+СТАНИЋ ЈОВАН ДИПЛ ИНГ
+СТАНИЋ ЈУЛКА
+СТАНИЋ КРИСТИВОЈЕ
+СТАНИЋ ЛИНКА
+СТАНИЋ ЉУБОДРАГ
+СТАНИЋ МАНЕ
+СТАНИЋ МАРКО
+СТАНИЋ МИЛАН ДИПЛ ПРАВНИК
+СТАНИЋ МИЛАНКО
+СТАНИЋ МИЛАНКО
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛЕ
+СТАНИЋ МИЛИЦА
+СТАНИЋ МИЛИНКО
+СТАНИЋ МИЛИСАВ
+СТАНИЋ МИЛОЈЕ
+СТАНИЋ МИЛОСАВА
+СТАНИЋ МЛАДЕН
+СТАНИЋ МОМЧИЛО
+СТАНИЋ ОЛГА
+СТАНИЋ ОСТОЈА
+СТАНИЋ ПЕТАР
+СТАНИЋ ПЕТАР
+СТАНИЋ ПЕТАР
+СТАНИЋ РАДЕ
+СТАНИЋ РАДЕ
+СТАНИЋ РАДИША
+СТАНИЋ РАДОВАН ДИПЛ ИНГ
+СТАНИЋ РАЈКО
+СТАНИЋ САВО
+СТАНИЋ СИМО
+СТАНИЋ СИНИША
+СТАНИЋ СПАСОЈЕ
+СТАНИЋ СРЂАН
+СТАНИЋ СТАМЕНА
+СТАНИЋ СТЕВАН
+СТАНИЋ УРОШ
+СТАНИЋ ВЕЛИБОР
+СТАНИЋ ВИКТОР
+СТАНИЋ ВИТОМИР
+СТАНИЋ ВИТОМИР
+СТАНИЋ ВЛАДИМИР
+СТАНИЋ ВОЈИСЛАВ
+СТАНИЋ ЗОРАН
+СТАНИЋ ЗОРАН
+СТАНИЖАН МИЛОРАД
+СТАНИК ОЛГА
+СТАНИКИЋ МИЛАН
+СТАНИКИЋ МИЛЕВА
+СТАНИМИРОВ АЛЕКСАНДАР
+СТАНИМИРОВ АНА
+СТАНИМИРОВ БОРИВОЈ
+СТАНИМИРОВ БРАНКА
+СТАНИМИРОВ ДУШАН
+СТАНИМИРОВ ГАВРА
+СТАНИМИРОВ ЈЕЛКА
+СТАНИМИРОВ КАТИЦА
+СТАНИМИРОВ ЉИЉАНА
+СТАНИМИРОВ ЉИЉАНА
+СТАНИМИРОВ ЉУБИЦА
+СТАНИМИРОВ НЕДЕЉКО
+СТАНИМИРОВ РАДИВОЈ
+СТАНИМИРОВ РАНКА
+СТАНИМИРОВ СЛАВКО
+СТАНИМИРОВ ЗОРИЦА
+СТАНИМИРОВИЋ ЖИВОЈИН
+СТАНИМИРОВИЋ ДЕСИМИР
+СТАНИМИРОВИЋ ДРАГАН
+СТАНИМИРОВИЋ ДРАГАН
+СТАНИМИРОВИЋ ДРАГОМИР
+СТАНИМИРОВИЋ ЈАДРАНКА
+СТАНИМИРОВИЋ ЈЕЛИЦА
+СТАНИМИРОВИЋ КРСТО
+СТАНИМИРОВИЋ МОМА ДР
+СТАНИМИРОВИЋ ПАВЛЕ
+СТАНИМИРОВИЋ РАДОЈКА
+СТАНИМИРОВИЋ СТАНИМИР
+СТАНИМИРОВИЋ ТАТЈАНА
+СТАНИМИРОВИЋ ТРИФУН
+СТАНИМИРОВИЋ ВЕРОНИКА
+СТАНИСАВЉЕВ ЂОКА
+СТАНИСАВЉЕВ ЂОРЂЕ
+СТАНИСАВЉЕВ АЛЕКСАНДРА
+СТАНИСАВЉЕВ АНА
+СТАНИСАВЉЕВ ДОБРИВОЈ
+СТАНИСАВЉЕВ ДУШАН
+СТАНИСАВЉЕВ ЉУБИЦА
+СТАНИСАВЉЕВ ЉУБОМИР
+СТАНИСАВЉЕВ МИЛАН
+СТАНИСАВЉЕВ МИЛИЦА
+СТАНИСАВЉЕВ МИЛОЈКО
+СТАНИСАВЉЕВ МИРОСЛАВ
+СТАНИСАВЉЕВИЋ ЂОРЂЕ ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ ЂОРЂЕ
+СТАНИСАВЉЕВИЋ БИЉАНА
+СТАНИСАВЉЕВИЋ БОЖА
+СТАНИСАВЉЕВИЋ ЦВЕТА
+СТАНИСАВЉЕВИЋ ДАНЕ
+СТАНИСАВЉЕВИЋ ДИМИТРИЈЕ
+СТАНИСАВЉЕВИЋ ДРАГОМИР
+СТАНИСАВЉЕВИЋ ДУШАНКА
+СТАНИСАВЉЕВИЋ ЕЛИЗАБЕТА
+СТАНИСАВЉЕВИЋ ГИЗЕЛА
+СТАНИСАВЉЕВИЋ ГОРДАНА
+СТАНИСАВЉЕВИЋ ИГЊАТИЈЕ
+СТАНИСАВЉЕВИЋ КАТИЦА
+СТАНИСАВЉЕВИЋ ЛЕПОСАВА
+СТАНИСАВЉЕВИЋ МАРИЈА
+СТАНИСАВЉЕВИЋ МИЛАН
+СТАНИСАВЉЕВИЋ МИЛАН
+СТАНИСАВЉЕВИЋ МИЛИВОЈЕ
+СТАНИСАВЉЕВИЋ МИЛОШ
+СТАНИСАВЉЕВИЋ МИОДРАГ
+СТАНИСАВЉЕВИЋ МИОДРАГ
+СТАНИСАВЉЕВИЋ МИРКО
+СТАНИСАВЉЕВИЋ НАДА
+СТАНИСАВЉЕВИЋ РАДЕ
+СТАНИСАВЉЕВИЋ РУЖИЦА
+СТАНИСАВЉЕВИЋ САВА ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ СТАВРА ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ СТЕВАН
+СТАНИСАВЉЕВИЋ ВЕЛИЗАР
+СТАНИСАВЉЕВИЋ ВЕЉКО
+СТАНИСАВЉЕВИЋ ЗОРИЦА
+СТАНИВУК ЖАРКО
+СТАНИВУК ДЕЈАН
+СТАНИВУК МИРКО
+СТАНИВУК МЛАДЕН
+СТАНИВУК НАДА
+СТАНИВУК НЕДЕЉКО
+СТАНИВУК НИКОЛА
+СТАНИВУК ЗДРАВКО
+СТАНИВУКОВИЋ ДРАГУТИН МР
+СТАНИВУКОВИЋ ДРАГУТИН
+СТАНИВУКОВИЋ ЉИЉАНА
+СТАНИВУКОВИЋ МАРИЈА
+СТАНИВУКОВИЋ МИЛИВОЈ ДР ВЕТЕРИНЕ
+СТАНИВУКОВИЋ УРОШ
+СТАНКИЋ ДРАГАН
+СТАНКИЋ ЛАЗАР
+СТАНКИЋ МИЛОШ
+СТАНКИЋ СТЕВАН
+СТАНКИЋ ВИЛОГОРКА
+СТАНКИЈЕВИЋ ДУШАН
+СТАНКИН ЂОРЂЕ
+СТАНКИН БРАНКА
+СТАНКИН ЈАСМИНА
+СТАНКИН МИЛЕ
+СТАНКИН МИЛИВОЈ
+СТАНКИН МИЛИВОЈ
+СТАНКИН ТОДОР
+СТАНКО ИМРЕ
+СТАНКО ИВАН
+СТАНКО ЈОСИП ДИПЛ ИНГ
+СТАНКО СТЕВАН
+СТАНКО СТЕВАН
+СТАНКО СТЕВАН
+СТАНКО ВЕРИЦА
+СТАНКОВ ЖАРКО
+СТАНКОВ ЖИВКА
+СТАНКОВ ЖИВКО
+СТАНКОВ ЖИВКО
+СТАНКОВ ЂОРЂЕ
+СТАНКОВ БОЈАНА
+СТАНКОВ ДАРИНКА
+СТАНКОВ ДАРКО
+СТАНКОВ ДУШАН
+СТАНКОВ ДУШАН
+СТАНКОВ ЕЖЕБЕТ
+СТАНКОВ ИВАНКА
+СТАНКОВ ИВАН
+СТАНКОВ ЈЕЛЕНА
+СТАНКОВ КАТИЦА
+СТАНКОВ КОВИНА
+СТАНКОВ ЉУБИЦА
+СТАНКОВ МАРИЈА
+СТАНКОВ МАРИНКО
+СТАНКОВ МАРКО
+СТАНКОВ МИЛАНКО
+СТАНКОВ МИЛАНКО
+СТАНКОВ МИЛОШ
+СТАНКОВ МИРЈАНА
+СТАНКОВ МИРОСЛАВ
+СТАНКОВ НЕВЕНКА
+СТАНКОВ НИКОЛА
+СТАНКОВ ПАЈА ДР
+СТАНКОВ ПАВЛЕ
+СТАНКОВ ПЕТАР
+СТАНКОВ ПЕТАР
+СТАНКОВ РАДОВАН
+СТАНКОВ РАСТКО
+СТАНКОВ РУЖИЦА
+СТАНКОВ СЛОБОДАНКА
+СТАНКОВ СОФИЈА
+СТАНКОВ СТАНКА
+СТАНКОВ СТЕВАН
+СТАНКОВ СТЕВАН
+СТАНКОВ СТОЈАН
+СТАНКОВ СВЕТИСЛАВ
+СТАНКОВ СВЕТОЗАР
+СТАНКОВ ВЕЉКО
+СТАНКОВ ВЕЉКО
+СТАНКОВ ВЛАДИМИР
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ЗОРАНКА
+СТАНКОВ ЗОРАН
+СТАНКОВИЋ ЖАРКО
+СТАНКОВИЋ ЖАРКО
+СТАНКОВИЋ ЖИВКО
+СТАНКОВИЋ ЖИВКО
+СТАНКОВИЋ ЖИВОЈИН
+СТАНКОВИЋ ЖИВОЈИН
+СТАНКОВИЋ ЖИВОРАД
+СТАНКОВИЋ ЂОРЂЕ
+СТАНКОВИЋ ЂОРЂЕ
+СТАНКОВИЋ ЂОРЕ
+СТАНКОВИЋ ЂУРО
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АНЂЕЛКА
+СТАНКОВИЋ АНЂЕЛКА
+СТАНКОВИЋ АНА
+СТАНКОВИЋ АНИЦА
+СТАНКОВИЋ АРАНКА
+СТАНКОВИЋ АВРАМ
+СТАНКОВИЋ БИЉАНА
+СТАНКОВИЋ БОЖИДАР
+СТАНКОВИЋ БОЖИДАР
+СТАНКОВИЋ БОГОЉУБ ДР
+СТАНКОВИЋ БОГОЉУБ
+СТАНКОВИЋ БОЈАНА
+СТАНКОВИЋ БОЈАН
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРИСЛАВ
+СТАНКОВИЋ БОРИСЛАВ
+СТАНКОВИЋ БОСИЉКА
+СТАНКОВИЋ БРАНКО
+СТАНКОВИЋ ДАНИЦА
+СТАНКОВИЋ ДАНИЛО
+СТАНКОВИЋ ДАРИНКА
+СТАНКОВИЋ ДИВНА
+СТАНКОВИЋ ДОБРИНКА
+СТАНКОВИЋ ДОБРИВОЈЕ
+СТАНКОВИЋ ДОБРИВОЈЕ
+СТАНКОВИЋ ДОБРОСЛАВ
+СТАНКОВИЋ ДРАГАН
+СТАНКОВИЋ ДРАГАН
+СТАНКОВИЋ ДРАГИША
+СТАНКОВИЋ ДРАГИША
+СТАНКОВИЋ ДРАГИЦА
+СТАНКОВИЋ ДРАГОЉУБ
+СТАНКОВИЋ ДРАГОРАД
+СТАНКОВИЋ ДРАГУТИН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШКО
+СТАНКОВИЋ ЕВЕЛИН ДР
+СТАНКОВИЋ ЕВИЦА
+СТАНКОВИЋ ФРЕДЕРИК
+СТАНКОВИЋ ИЛИЈА
+СТАНКОВИЋ ИЛИЈА
+СТАНКОВИЋ ИВАН
+СТАНКОВИЋ ИВАН
+СТАНКОВИЋ ЈАГОДА
+СТАНКОВИЋ ЈЕЛЕНА
+СТАНКОВИЋ ЈЕЛИЦА
+СТАНКОВИЋ ЈЕСЕНКА ДР
+СТАНКОВИЋ ЈОВАН ДИПЛ ИНГ
+СТАНКОВИЋ ЈОВАН
+СТАНКОВИЋ ЈОВИЦА
+СТАНКОВИЋ ЈОВИЦА
+СТАНКОВИЋ КАТАЛИН
+СТАНКОВИЋ КАТАРИНА
+СТАНКОВИЋ КАТИЦА
+СТАНКОВИЋ КОСАНА
+СТАНКОВИЋ КОСТАДИН
+СТАНКОВИЋ ЛАЗАР ДИПЛ ИНГ
+СТАНКОВИЋ ЛАЗАР
+СТАНКОВИЋ ЛАЗАР
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉУБИЦА
+СТАНКОВИЋ ЉУБИЦА
+СТАНКОВИЋ ЉУБИСАВ
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБО
+СТАНКОВИЋ МАРИЈА
+СТАНКОВИЋ МАРИЈА
+СТАНКОВИЋ МАРИНКО
+СТАНКОВИЋ МАРИНКО
+СТАНКОВИЋ МАРЈАН
+СТАНКОВИЋ МАРКО
+СТАНКОВИЋ МЕЛАНИЈА
+СТАНКОВИЋ МИХАЈЛО
+СТАНКОВИЋ МИХАЈЛО
+СТАНКОВИЋ МИЛАНКО
+СТАНКОВИЋ МИЛАНКО
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛЕНКО
+СТАНКОВИЋ МИЛОШ
+СТАНКОВИЋ МИЛОШ
+СТАНКОВИЋ МИЛОРАД
+СТАНКОВИЋ МИЛУТИН
+СТАНКОВИЋ МИОДРАГ
+СТАНКОВИЋ МИОМИР
+СТАНКОВИЋ МИРЈАНА
+СТАНКОВИЋ МИРЈАНА
+СТАНКОВИЋ МИРКО
+СТАНКОВИЋ МИРКО
+СТАНКОВИЋ МИРОЉУБ
+СТАНКОВИЋ МИРОСЛАВ
+СТАНКОВИЋ МИРОСЛАВ
+СТАНКОВИЋ МИТАР
+СТАНКОВИЋ МЛАДЕН
+СТАНКОВИЋ МЛАДЕН
+СТАНКОВИЋ МОМЧИЛО
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАТАША
+СТАНКОВИЋ НАТАЛИЈА
+СТАНКОВИЋ НЕНАД
+СТАНКОВИЋ НЕВЕНА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ ОЛГА
+СТАНКОВИЋ ОЛГА
+СТАНКОВИЋ ОЛГИЦА
+СТАНКОВИЋ ОСТОЈА
+СТАНКОВИЋ ПАВЛЕ
+СТАНКОВИЋ ПЕТАР
+СТАНКОВИЋ ПЕТАР
+СТАНКОВИЋ РАДИВОЈ
+СТАНКОВИЋ РАДОМИР
+СТАНКОВИЋ РАДОСЛАВ
+СТАНКОВИЋ САША
+СТАНКОВИЋ САВКА
+СТАНКОВИЋ САВО
+СТАНКОВИЋ СЛАВКО
+СТАНКОВИЋ СЛАВКО
+СТАНКОВИЋ СЛОБОДАНКА
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СОФИЈА
+СТАНКОВИЋ СРЂАН
+СТАНКОВИЋ СРБОЉУБ ДИПЛ ИНГ
+СТАНКОВИЋ СТАМЕН
+СТАНКОВИЋ СТАНКО
+СТАНКОВИЋ СТАНОЈЕ
+СТАНКОВИЋ СТЕВАН
+СТАНКОВИЋ СТЕВАН
+СТАНКОВИЋ СТЕВО
+СТАНКОВИЋ СВЕТИСЛАВ
+СТАНКОВИЋ СВЕТИСЛАВ
+СТАНКОВИЋ СВЕТОЗАР
+СТАНКОВИЋ СВЕТОЗАР
+СТАНКОВИЋ ТЕРЕЗА
+СТАНКОВИЋ ТИОСАВ
+СТАНКОВИЋ ТОША
+СТАНКОВИЋ ТОМИСЛАВ
+СТАНКОВИЋ ТОМИСЛАВ
+СТАНКОВИЋ ВЕНЕРА
+СТАНКОВИЋ ВЕСЕЛИН
+СТАНКОВИЋ ВЕСЕЛИН
+СТАНКОВИЋ ВИТОМИР
+СТАНКОВИЋ ВЛАДАН
+СТАНКОВИЋ ВЛАДА
+СТАНКОВИЋ ВЛАДИМИР
+СТАНКОВИЋ ВЛАДИМИР
+СТАНКОВИЋ ВОЈИСЛАВ
+СТАНКОВИЋ-ВРАНИЋ МИЛИЦА
+СТАНКОВИЋ ЗЛАТИВОЈЕ
+СТАНКОВИЋ ЗОРАН
+СТАНКОВИЋ ЗОРАН
+СТАНКОВИЋ ЗОРА
+СТАНКОВСКИ КОСТА
+СТАНКОВСКИ СТЕВАН
+СТАНКОВСКИ ВЕЉАН
+СТАНОЈЧИЋ ЂОРЂЕ
+СТАНОЈЧИЋ АНЂЕЛКО
+СТАНОЈЧИЋ АНКИЦА
+СТАНОЈЧИЋ ДЕСИМИР
+СТАНОЈЧИЋ ДУШАНКА
+СТАНОЈЧИЋ ОЛГА
+СТАНОЈЧИЋ СЛОБОДАН
+СТАНОЈЧИЋ СОФИЈА
+СТАНОЈЧИЋ СТЕВАН
+СТАНОЈЧИЋ ВЕРА
+СТАНОЈЧИЋ ВОЈИСЛАВ
+СТАНОЈЕВ ЖИВАН
+СТАНОЈЕВ АЛЕКСАНДРА
+СТАНОЈЕВ БРАНИСЛАВ
+СТАНОЈЕВ ДЕЈАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ГОРАН
+СТАНОЈЕВ ЈОЦА
+СТАНОЈЕВ ЛАЗАР
+СТАНОЈЕВ ЉУБИЦА
+СТАНОЈЕВ МИЛАН
+СТАНОЈЕВ-МОСКАЉ ОЛГА
+СТАНОЈЕВ НЕБОЈША
+СТАНОЈЕВ НИКОЛА
+СТАНОЈЕВ-ПЕТРЕЊ МИРЈАНА
+СТАНОЈЕВ САВА
+СТАНОЈЕВ СТАНКА
+СТАНОЈЕВ СТЕВАН
+СТАНОЈЕВ ТИХОМИР
+СТАНОЈЕВ ВЕРИЦА
+СТАНОЈЕВ ВЛАДИМИР
+СТАНОЈЕВ ВЛАДИМИР
+СТАНОЈЕВИЋ ЧЕДОМИР
+СТАНОЈЕВИЋ ЖАРКО
+СТАНОЈЕВИЋ ЖИВАНКО
+СТАНОЈЕВИЋ ЖИВОЈИН
+СТАНОЈЕВИЋ ЂУРА
+СТАНОЈЕВИЋ БОЖИДАР
+СТАНОЈЕВИЋ ДАНИЦА
+СТАНОЈЕВИЋ ДРАГАН
+СТАНОЈЕВИЋ ДРАГОЉУБ
+СТАНОЈЕВИЋ ДУШАН
+СТАНОЈЕВИЋ ДУШАН
+СТАНОЈЕВИЋ ХРАНИСЛАВ
+СТАНОЈЕВИЋ ИЛИЈА
+СТАНОЈЕВИЋ ЈОВАН
+СТАНОЈЕВИЋ КАЋА
+СТАНОЈЕВИЋ КОСТА
+СТАНОЈЕВИЋ ЉУБИНКА
+СТАНОЈЕВИЋ-МАНДИЋ МИЛА
+СТАНОЈЕВИЋ МАРИЈА
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛА
+СТАНОЈЕВИЋ МИЛЕТА
+СТАНОЈЕВИЋ МИЛИВОЈ
+СТАНОЈЕВИЋ МИЛОРАД
+СТАНОЈЕВИЋ МИОДРАГ
+СТАНОЈЕВИЋ МИОДРАГ
+СТАНОЈЕВИЋ МИРОСЛАВ
+СТАНОЈЕВИЋ НАДА
+СТАНОЈЕВИЋ НАТАША
+СТАНОЈЕВИЋ НЕБОЈША
+СТАНОЈЕВИЋ НЕМАЊА
+СТАНОЈЕВИЋ НЕСТОР
+СТАНОЈЕВИЋ НИКОЛА
+СТАНОЈЕВИЋ НИКОЛА
+СТАНОЈЕВИЋ ПАВЛЕ
+СТАНОЈЕВИЋ ПЕТАР
+СТАНОЈЕВИЋ ПРЕДРАГ
+СТАНОЈЕВИЋ РАДМИЛА
+СТАНОЈЕВИЋ РАДОМИР
+СТАНОЈЕВИЋ РАДОСЛАВ
+СТАНОЈЕВИЋ РАДО
+СТАНОЈЕВИЋ СЛОБОДАН
+СТАНОЈЕВИЋ СОФИЈА
+СТАНОЈЕВИЋ СРБОЉУБ
+СТАНОЈЕВИЋ СТЕВАН
+СТАНОЈЕВИЋ СВЕТИСЛАВ
+СТАНОЈЕВИЋ ТАТЈАНА
+СТАНОЈЕВИЋ ТОМИСЛАВ
+СТАНОЈЕВИЋ-ВАРГА АНА ДР
+СТАНОЈЕВИЋ ВЕЉКО
+СТАНОЈЕВИЋ ВЛАДИМИР
+СТАНОЈЕВИЋ ВЛАДИМИР
+СТАНОЈЕВИЋ ВЛАДИСЛАВ
+СТАНОЈЕВИЋ ВУК
+СТАНОЈЕВИЋ ЗДРАВКО
+СТАНОЈЕВИЋ ЗЛАТКО
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈКОВИЋ МИЛОШ
+СТАНОЈКОВИЋ РАДЕ
+СТАНОЈКОВИЋ ВЛАДА
+СТАНОЈЛОВИЋ МИТАР
+СТАНОЈЛОВИЋ СТЕВАН
+СТАНОЈОСКИ ДАНИЦА
+СТАНОЈОСКИ ЗЛАТА
+СТАНОЈСКИ БЛАГОЈЕ
+СТАНОВИЋ СТЕВАН
+СТАНОВИЋ ВЕСЕЛИН
+СТАНТЕ ЈОСИП
+СТАНТИЋ БАРТУЛ
+СТАНТИЋ БЕРТАЛАН
+СТАНТИЋ КАТАЛИН
+СТАНТИЋ ЛАДИСЛАВ
+СТАНТИЋ ВЕРОНА
+СТАНУШИЋ МИЈАТ
+СТАНУЛ ПЕТАР
+СТАНУЛОВ СВЕТЛАНА
+СТАНУЛОВ ТОДОР
+СТАНУЛОВИЋ ДИМИТРИЈЕ ДР
+СТАНУЛОВИЋ МИЛАН ДР
+СТАПАР АЛЕКСАНДАР
+СТАПАРСКИ БОРИСЛАВ
+СТАПАРСКИ МИЛАН
+СТАПАРСКИ ПЕТАР
+СТАПАРСКИ СТЕВАН
+СТАРЧЕВ АНЂЕЛКА
+СТАРЧЕВ БРАНКА
+СТАРЧЕВ ДЕСАНКА
+СТАРЧЕВ ЈЕЛА
+СТАРЧЕВ КАТИЦА
+СТАРЧЕВ МИЛАН ДИПЛ ИНГ
+СТАРЧЕВ МИЛЕНКО
+СТАРЧЕВ МИЛОШ
+СТАРЧЕВ МИРОСЛАВ
+СТАРЧЕВ СТОЈАНКА
+СТАРЧЕВИЋ АНИЦА
+СТАРЧЕВИЋ АНКА
+СТАРЧЕВИЋ БОШКО
+СТАРЧЕВИЋ БОГДАН
+СТАРЧЕВИЋ БОРИСЛАВ
+СТАРЧЕВИЋ БРАНИСЛАВ
+СТАРЧЕВИЋ БУДИМИР
+СТАРЧЕВИЋ ДРАГИЦА
+СТАРЧЕВИЋ ДУШАНКА
+СТАРЧЕВИЋ ДУШАН
+СТАРЧЕВИЋ ФРАЊА
+СТАРЧЕВИЋ ИВАН
+СТАРЧЕВИЋ ЉУБИНКО ДИПЛ ИНГ
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛИЦА
+СТАРЧЕВИЋ МИЛИЦА
+СТАРЧЕВИЋ МИЛКА
+СТАРЧЕВИЋ МИЛОВАН
+СТАРЧЕВИЋ МИОДРАГ
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ НИКОЛА
+СТАРЧЕВИЋ ОЛГА
+СТАРЧЕВИЋ ПАВЛЕ
+СТАРЧЕВИЋ РУДОЛФ
+СТАРЧЕВИЋ СТАМЕНКА
+СТАРЧЕВИЋ СТАНКО
+СТАРЧЕВИЋ СТИПО
+СТАРЧЕВИЋ СТОЈАН
+СТАРЧЕВИЋ ВЛАСТИМИР
+СТАРАЧЕК ЖЕЉКО
+СТАРАЧЕК ЈОЖЕФ
+СТАРАЧЕК ЈОВАН
+СТАРЕВИЋ НИКОЛА
+СТАРИ ДАНИЕЛ
+СТАРИ ЛИВИЈА
+СТАРИЋ ИВАН
+СТАРОВИЋ БОРИВОЈ ДР
+СТАРОВИЋ БРАНКО
+СТАРОВИЋ МАРИЈА
+СТАРОВИЋ МИЛАН
+СТАРОВИЋ ПРЕДРАГ
+СТАРОВИЋ РАДОМИР
+СТАРОВИЋ РАСТИСЛАВ
+СТАРОВИЋ ЗДРАВКО
+СТАРОВЛАХ МЛАДЕН
+СТАВЕНОВ ЂОРЂЕ
+СТАВЈЕЛ МЛАДЕН
+СТАВРЕВСКИ БОГДАН
+СТАВРИЋ ИЛОНКА
+СТАВРИЋ СТАНОЈЕ
+СТАВРОВ ДАНИЦА
+СТЕЋ МИТАР
+СТЕЋ ВАСИЛИЈЕ
+СТЕФАН ИВАН
+СТЕФАН ЉУБОМИРА
+СТЕФАНИДЕС ЈУЛИЈЕ
+СТЕФАНИДЕС ЉУДЕВИТ
+СТЕФАНИДИС КИРИАКИ
+СТЕФАЊУК НИКОЛА
+СТЕФАНОВ БЛАГОЈЕ
+СТЕФАНОВ ЉУБОМИР
+СТЕФАНОВ НАДА
+СТЕФАНОВИЋ ЖАРКО
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИВКО
+СТЕФАНОВИЋ ЖИВОРАД
+СТЕФАНОВИЋ ЖИВОТА
+СТЕФАНОВИЋ ЂОРЂЕ
+СТЕФАНОВИЋ ЂУРИЦА ДР ЛЕКАР
+СТЕФАНОВИЋ АЛЕКСАНДАР
+СТЕФАНОВИЋ АЛЕКСАНДАР
+СТЕФАНОВИЋ АНА
+СТЕФАНОВИЋ АНГЕЛИНА
+СТЕФАНОВИЋ АНКА
+СТЕФАНОВИЋ БОГДАН
+СТЕФАНОВИЋ БОГОЉУБ
+СТЕФАНОВИЋ БОРИВОЈЕ
+СТЕФАНОВИЋ БОРИВОЈ
+СТЕФАНОВИЋ БРАНИСЛАВ
+СТЕФАНОВИЋ БРАНКА
+СТЕФАНОВИЋ БРАНКО
+СТЕФАНОВИЋ ДАНИЦА
+СТЕФАНОВИЋ ДАНИЦА
+СТЕФАНОВИЋ ДАНИЛКА
+СТЕФАНОВИЋ ДАРИНКА
+СТЕФАНОВИЋ ДЕЖЕ
+СТЕФАНОВИЋ ДЕЈАН
+СТЕФАНОВИЋ ДРАГАНА
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГИША
+СТЕФАНОВИЋ ДРАГИША
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГОЉУБ
+СТЕФАНОВИЋ ДРАГОЉУБ
+СТЕФАНОВИЋ ДРАГУТИН
+СТЕФАНОВИЋ ДРАГУТИН
+СТЕФАНОВИЋ ДУШАН
+СТЕФАНОВИЋ ДУШКО
+СТЕФАНОВИЋ ЕРЖИКА
+СТЕФАНОВИЋ-ГЕРИЋ ЗОРКА
+СТЕФАНОВИЋ ГОРАН
+СТЕФАНОВИЋ ГОРДАН
+СТЕФАНОВИЋ ИВАН
+СТЕФАНОВИЋ ЈЕЛИЦА
+СТЕФАНОВИЋ ЈЕЛИЦА
+СТЕФАНОВИЋ ЈОСИФ
+СТЕФАНОВИЋ ЈОВАНКА
+СТЕФАНОВИЋ ЈОВАН
+СТЕФАНОВИЋ ЈОВАН
+СТЕФАНОВИЋ ЈОЗЕФИНА
+СТЕФАНОВИЋ ЈУЛИЈАНА
+СТЕФАНОВИЋ КАРАНФИЛА
+СТЕФАНОВИЋ КАТИЦА
+СТЕФАНОВИЋ ЛАЗАР
+СТЕФАНОВИЋ ЛЕНКА
+СТЕФАНОВИЋ ЉУБОМИР ДР
+СТЕФАНОВИЋ ЉУБОМИР
+СТЕФАНОВИЋ ЛУЦИЈА
+СТЕФАНОВИЋ МАРИЈА
+СТЕФАНОВИЋ МАРИНКО
+СТЕФАНОВИЋ МАРКО
+СТЕФАНОВИЋ МАРТА
+СТЕФАНОВИЋ МАРТА
+СТЕФАНОВИЋ МИХАЈЛО
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛЕНА
+СТЕФАНОВИЋ МИЛЕН
+СТЕФАНОВИЋ МИЛИЦА
+СТЕФАНОВИЋ МИЛОШ
+СТЕФАНОВИЋ МИЛОШ
+СТЕФАНОВИЋ МИЛОЈЕ
+СТЕФАНОВИЋ МИЛОВАН
+СТЕФАНОВИЋ МИЛУТИН ДИПЛ ПРАВНИК
+СТЕФАНОВИЋ МИЛУТИН
+СТЕФАНОВИЋ МИОМИР
+СТЕФАНОВИЋ МИРА
+СТЕФАНОВИЋ МИРЈАНА
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ НАДА
+СТЕФАНОВИЋ НЕДЕЉКА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ ПАНТА
+СТЕФАНОВИЋ ПАУЛА
+СТЕФАНОВИЋ ПЕТАР
+СТЕФАНОВИЋ РАДМИЛА
+СТЕФАНОВИЋ РАДМИЛА
+СТЕФАНОВИЋ РАДОСЛАВ
+СТЕФАНОВИЋ РУЖИЦА
+СТЕФАНОВИЋ САЊА
+СТЕФАНОВИЋ СЛАВИЦА ДР
+СТЕФАНОВИЋ СЛАВКА
+СТЕФАНОВИЋ СЛАВКО
+СТЕФАНОВИЋ СЛАВКО
+СТЕФАНОВИЋ СЛОБОДАН ПРОФЕСОР
+СТЕФАНОВИЋ СЛОБОДАН
+СТЕФАНОВИЋ СМИЉА
+СТЕФАНОВИЋ СМИЉКА
+СТЕФАНОВИЋ СНЕЖАНА
+СТЕФАНОВИЋ СТАНИША
+СТЕФАНОВИЋ СТАНКО
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЈЕПАН
+СТЕФАНОВИЋ СТОЈАНА
+СТЕФАНОВИЋ СУЗАНА
+СТЕФАНОВИЋ СВЕТИСЛАВ
+СТЕФАНОВИЋ СВЕТОЗАР
+СТЕФАНОВИЋ СВЕТОЗАР
+СТЕФАНОВИЋ ТАТЈАНА
+СТЕФАНОВИЋ-ТИЛИЋ ДИВНА
+СТЕФАНОВИЋ ТОДОР
+СТЕФАНОВИЋ ТОМИСЛАВ
+СТЕФАНОВИЋ ВАСА
+СТЕФАНОВИЋ ВАСА
+СТЕФАНОВИЋ ВАСИЛИЈЕ
+СТЕФАНОВИЋ ВЕРА
+СТЕФАНОВИЋ ВЕРА
+СТЕФАНОВИЋ ВЕРИЦА
+СТЕФАНОВИЋ ВЕСНА
+СТЕФАНОВИЋ ВЕСНА
+СТЕФАНОВИЋ ВИТОМИР
+СТЕФАНОВИЋ ВЛАДИЦА
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАЈКО
+СТЕФАНОВИЋ ВОЈИСЛАВА
+СТЕФАНОВИЋ ВОЈИСЛАВ
+СТЕФАНОВИЋ ВОЈИСЛАВ
+СТЕФАНОВИЋ ЗОРАН
+СТЕФАНОВИЋ ЗОРАН
+СТЕФАНОВСКА ЗОРКА
+СТЕФАНОВСКИ ЛЕВКО
+СТЕФАНОВСКИ МЕТОДИЈЕ
+СТЕФАНОВСКИ МИЛОРАД
+СТЕФАНОВСКИ СТАМЕН
+СТЕГИЋ ДЕЈАН
+СТЕГИЋ ИВАН
+СТЕГИЋ НИКОЛА
+СТЕГЊАИЋ ОЛГА
+СТЕГЊАЈИЋ ВЛАДИМИР
+СТЕЈИЋ АРАНКА
+СТЕЈИЋ ЈЕЛЕНА
+СТЕЈИЋ КОСТА
+СТЕЈИЋ НЕВЕНКА
+СТЕЈИЋ РУЖА
+СТЕЈИН ЂОРЂЕ
+СТЕЈИН БОРИСЛАВ
+СТЕЈИН ДУШАН ДИПЛ ИНГ
+СТЕЈИН ЈЕЛЕНА
+СТЕЈИН ЈОВАНКА
+СТЕЈИН ЉУБИЦА
+СТЕЈИН РУЖИЦА
+СТЕЈИН САША
+СТЕЈИН СРЂАН
+СТЕЛА ВЛАДИМИРА
+СТЕЉА НОВАК
+СТЕЉИЋ МИЛИВОЈЕ
+СТЕЉИЋ МИЛУН
+СТЕЛКИЋ ЂУРИЦА
+СТЕЛКИЋ ДРАГИЦА
+СТЕЛКИЋ МИЛИВОЈ
+СТЕЛКИЋ РАДИЦА
+СТЕЛКИЋ РЕЉА ДИПЛ ИНГ
+СТЕЛКИЋ СВЕТОЗАР
+СТЕЛКИЋ ЗЛАТОМИР
+СТЕПАНЧЕВ АНИЦА
+СТЕПАНЧЕВ СТЕВАН
+СТЕПАНЧЕВ ВЛАДИСЛАВ
+СТЕПАНЧЕВ ЗОРАН
+СТЕПАНЧЕВ ЗОРА
+СТЕПАНЧЕВ ЗОРИЦА
+СТЕПАНЧЕВИЋ МИЛИЦА
+СТЕПАНЧЕВИЋ МИОДРАГ
+СТЕПАНЧЕВИЋ СОФИЈА
+СТЕПАНЧЕВИЋ СПАСОЈЕ
+СТЕПАНИЋ МИЛИСАВ
+СТЕПАНИЋ ПРЕДРАГ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ АЛЕКСАНДАР
+СТЕПАНОВ АЛЕКСАНДРА
+СТЕПАНОВ АНЂЕЛКА
+СТЕПАНОВ БРАНИСЛАВ
+СТЕПАНОВ БРАНКО
+СТЕПАНОВ БРАНКО
+СТЕПАНОВ ДРАГИША
+СТЕПАНОВ ДРАГИЦА
+СТЕПАНОВ ДУШАН
+СТЕПАНОВ ДУШАН
+СТЕПАНОВ ЕМИЛ
+СТЕПАНОВ ЈОЛЕ
+СТЕПАНОВ КАТИЦА
+СТЕПАНОВ ЉИЉАНА
+СТЕПАНОВ ЉУБОМИР ДР
+СТЕПАНОВ ЉУБОМИР
+СТЕПАНОВ МАКСА
+СТЕПАНОВ МАРА
+СТЕПАНОВ МИЛАНКА
+СТЕПАНОВ МИЛАНКА
+СТЕПАНОВ МИЛАН
+СТЕПАНОВ МИЛАН
+СТЕПАНОВ МИЛЕВА
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛОВАН
+СТЕПАНОВ НИКОЛА
+СТЕПАНОВ ПАЈА
+СТЕПАНОВ ПАЈА
+СТЕПАНОВ ПЕТАР ДР
+СТЕПАНОВ ПЕТАР
+СТЕПАНОВ ПИРОШКА
+СТЕПАНОВ РАДИВОЈ
+СТЕПАНОВ РАДОВАН
+СТЕПАНОВ САВА
+СТЕПАНОВ САВА
+СТЕПАНОВ СЕРГИЈЕ
+СТЕПАНОВ СЛОБОДАН
+СТЕПАНОВ СВЕТИСЛАВ
+СТЕПАНОВ ВАСИЛИЈЕ
+СТЕПАНОВ ВЕЛИМИР
+СТЕПАНОВ ВЕСНА
+СТЕПАНОВ ВИДА
+СТЕПАНОВ ВИДОСАВА
+СТЕПАНОВ ВОЈНА
+СТЕПАНОВ ЗДРАВКО
+СТЕПАНОВИЋ ЂУРЂИЦА
+СТЕПАНОВИЋ БРАТИСЛАВ
+СТЕПАНОВИЋ ДРАГИША
+СТЕПАНОВИЋ ДРАГИЦА
+СТЕПАНОВИЋ МИЛОРАД
+СТЕПАНОВИЋ НЕБОЈША
+СТЕПАНОВИЋ СЛОБОДАН
+СТЕПАНОВИЋ СНЕЖАНА
+СТЕПАНОВИЋ СТЕВАН
+СТЕПАНОВИЋ СВЕТЛАНА
+СТЕПИЋ ЈОСИП
+СТЕПИЋ МАРИЈА
+СТЕРИО ЂОРЂЕ
+СТЕРИО БРАНКО ДР
+СТЕРПИН ЗВОНИМИР
+СТЕВЧИЋ САВАТИЈЕ
+СТЕВАНЧЕВ АНКИЦА
+СТЕВАНЧЕВ МИЛИЦА
+СТЕВАНЧЕВ МИЛОРАД
+СТЕВАНЧЕВ ОЛГА
+СТЕВАНЧЕВИЋ ЉИЉАНА
+СТЕВАНДИЋ ЂУРО
+СТЕВАНДИЋ МИЛИЦА
+СТЕВАНДИЋ РАДЕ
+СТЕВАНИЋ БОРИВОЈЕ
+СТЕВАНИЋ ДРАГОСЛАВ
+СТЕВАНИЋ ИВАН
+СТЕВАНИЋ МИОДРАГ
+СТЕВАНИЋ СЛОБОДАН
+СТЕВАНИЋ ВУКОМАН
+СТЕВАНОВ ЖИВАН
+СТЕВАНОВ ДРАГАНА
+СТЕВАНОВ ЕМИЛКА
+СТЕВАНОВ ГАВРА
+СТЕВАНОВ ЈЕЛЕНА
+СТЕВАНОВ ЉИЉАНА
+СТЕВАНОВ МАДЛЕН
+СТЕВАНОВ МИЛОРАД
+СТЕВАНОВ МИЛОВАН
+СТЕВАНОВ МИЛУТИН
+СТЕВАНОВ МЛАДЕН
+СТЕВАНОВ МЛАДЕН
+СТЕВАНОВ НАТАЛИЈА
+СТЕВАНОВ СТАНА
+СТЕВАНОВ СВЕТОЗАР
+СТЕВАНОВ ВЕСЕЛИН
+СТЕВАНОВ ВЛАДИМИР
+СТЕВАНОВ ЗЛАТОЈЕ
+СТЕВАНОВИЋ ЖИВАДИН
+СТЕВАНОВИЋ ЖИВКА
+СТЕВАНОВИЋ ЖИВОРАД
+СТЕВАНОВИЋ АДАМ
+СТЕВАНОВИЋ АЛЕКСАНДАР
+СТЕВАНОВИЋ БОШКО
+СТЕВАНОВИЋ БОРА
+СТЕВАНОВИЋ БРАНИСЛАВА
+СТЕВАНОВИЋ ДАНИЦА
+СТЕВАНОВИЋ ДЕСИМИР
+СТЕВАНОВИЋ ДРАГИША
+СТЕВАНОВИЋ ДРАГИЦА
+СТЕВАНОВИЋ ДРАГОСЛАВ
+СТЕВАНОВИЋ ДУШАН ДР
+СТЕВАНОВИЋ ГОРАН
+СТЕВАНОВИЋ ГОРАН
+СТЕВАНОВИЋ ЈАРОСЛАВ
+СТЕВАНОВИЋ ЈОВАН
+СТЕВАНОВИЋ ЉУБИША
+СТЕВАНОВИЋ МИЛАДИНКА
+СТЕВАНОВИЋ МИЛАДИН
+СТЕВАНОВИЋ МИЛЕНКО
+СТЕВАНОВИЋ МИЛЕ
+СТЕВАНОВИЋ МИЛИВОЈ
+СТЕВАНОВИЋ МИЛКА
+СТЕВАНОВИЋ МИЛОЉУБ
+СТЕВАНОВИЋ МИОМИР
+СТЕВАНОВИЋ МИРА
+СТЕВАНОВИЋ МЛАДЕНКА
+СТЕВАНОВИЋ-НЕЋАК СЛОБОДАНКА ДИПЛ ИНГ
+СТЕВАНОВИЋ НИКОСАВА
+СТЕВАНОВИЋ РАДОСЛАВ
+СТЕВАНОВИЋ РАЈКО
+СТЕВАНОВИЋ РАНКО ДР ЛЕКАР
+СТЕВАНОВИЋ РАТКО
+СТЕВАНОВИЋ РУЖА
+СТЕВАНОВИЋ САВА
+СТЕВАНОВИЋ СЛОБОДАН
+СТЕВАНОВИЋ СНЕЖАНА
+СТЕВАНОВИЋ СТОЈАДИН
+СТЕВАНОВИЋ СВИЈЕТЛАНА
+СТЕВАНОВИЋ ТОМИСЛАВ
+СТЕВАНОВИЋ ТОМИСЛАВ
+СТЕВАНОВИЋ ВЕРА
+СТЕВАНОВИЋ ВЛАДА
+СТЕВАНОВИЋ ВЛАСТИМИР
+СТЕВАНОВИЋ ЗЛАТКО ДР
+СТЕВАНОВИЋ ЗОРАН
+СТЕВАНОВИЋ ЗОРИЦА
+СТЕВАНОВСКИ ГОШЕ
+СТЕВАНОВСКИ СЛОБОДАН
+СТЕВИЋ ДОБРИВОЈЕ
+СТЕВИЋ ДУШАН
+СТЕВИЋ ГОРДАНА
+СТЕВИЋ ЉУБИША
+СТЕВИЋ НИКОЛА
+СТЕВИЋ ПЕТАР
+СТЕВИЋ СЛОБОДАН
+СТЕВИЋ СНЕЖАНА
+СТЕВИЋ СРБА
+СТЕВИЋ ВЕЛИМИР
+СТЕВИЋ ВОЈИСЛАВ
+СТЕВИН БОГДАН
+СТЕВИН БОРИСЛАВ
+СТЕВИН НАДА ДИПЛ ИНГ
+СТЕВИН РАДОЈЛА
+СТЕВОВИЋ АНКА
+СТЕВОВИЋ БОЖИДАР
+СТЕВОВИЋ БРАНИСЛАВ
+СТЕВОВИЋ ИВАН ДИПЛ ПРАВНИК
+СТЕВОВИЋ-ЛУКИЋ РАДМИЛА
+СТЕВОВИЋ МИЛОСАВА
+СТЕВОВИЋ ВОЈИН
+СТИЈАЧИЋ БРАНКО
+СТИЈАЧИЋ ПАВЛЕ
+СТИЈАЧИЋ СВЕТОЗАР
+СТИЈАКОВИЋ ДРАГАН
+СТИЈЕПОВИЋ АЛЕКСА
+СТИЈЕПОВИЋ МИЛИЈАНА
+СТИЈОВИЋ ИЛИЈА
+СТИЈОВИЋ ЈЕЛИСАВЕТА
+СТИЈОВИЋ МАРА
+СТИЈОВИЋ МИЛАН
+СТИКИЋ БИЉАНА
+СТИКИЋ ЈОВАН
+СТИКИЋ МОМИРКА
+СТИКОВИЋ РОСА
+СТИЛИНОВИЋ КОВИНКА
+СТИЛИНОВИЋ ЗВОНИМИР ДИПЛ ИНГ
+СТИПАНЧИЋ СТИПАН
+СТИПАНОВИЋ БЈЕЛИЦА
+СТИПАНОВИЋ ГОЈКО
+СТИПЕТИЋ ДРАГАН
+СТИПИЋ АНДРИЈА
+СТИПИЋ АНТЕ
+СТИПИЋ БУДЕ
+СТИПИЋ ГИЗЕЛА
+СТИПИЋ ЈАША
+СТИПИЋ НАДА
+СТИПИЋ ОЛИВЕРА
+СТИПИЋ СОЊА
+СТИПИЋ ВЕЉКО
+СТИСКАЛО ТИХОМИР
+СТЈЕЉА ДАНИЦА
+СТЈЕПЧЕВИЋ АНИЦА
+СТЈЕПАНОВИЋ БОЖО
+СТЈЕПАНОВИЋ БОРИВОЈЕ
+СТЈЕПАНОВИЋ ЦВЕЈА
+СТЈЕПАНОВИЋ ЈАСНА
+СТЈЕПАНОВИЋ ЈЕЛЕНА
+СТЈЕПАНОВИЋ ЈЕЛИСАВЕТА
+СТЈЕПАНОВИЋ ЈОВИЦА
+СТЈЕПАНОВИЋ СТАНКА
+СТЈЕПАНОВИЋ ТОМИСЛАВ
+СТЈЕПИЋ ЈОСИП
+СТЈЕПИЋ МИЈО
+СТОШИЋ ДРАГАН
+СТОШИЋ ДРАГАН
+СТОШИЋ ДРАГАН
+СТОШИЋ ДУШАН
+СТОШИЋ ДУШАН
+СТОШИЋ ДУШАН
+СТОШИЋ ЈЕЛЕНА
+СТОШИЋ МИЛИЦА
+СТОШИЋ НЕДЕЉКО
+СТОШИЋ РАДИВОЈ
+СТОШИЋ СЛАВИША
+СТОШИЋ СТОЈАДИН
+СТОШИЋ СТОЈАН
+СТОШИЋ ТАЊА
+СТОШИЋ ТОМИСЛАВ
+СТОШИЋ ВЛАДИМИР
+СТОШИЋ ВОЈИСЛАВ
+СТОШИЋ ЗОРАН
+СТОЖИНИЋ ДРАГИЊА
+СТОЕСКИ ЈЕВТИМ
+СТОГОВ АНАТОЛИЈ ДИПЛ ИНГ
+СТОИЉКОВИЋ ЖИКА
+СТОИЉКОВИЋ ДРАГОСЛАВ
+СТОИЉКОВИЋ ЈЕЛИЦА
+СТОИЉКОВИЋ ЈОВАН
+СТОИЉКОВИЋ МИЛОРАД
+СТОИЉКОВИЋ НЕНАД
+СТОИЉКОВИЋ СТОЈАН
+СТОИЛКОВСКИ БОРИС
+СТОИСАВЉЕВИЋ ЂУЈА
+СТОИСАВЉЕВИЋ МИЋО
+СТОЈЧЕВ МАРИЈА
+СТОЈЧЕВИЋ ИЛИЈА
+СТОЈЧЕВИЋ СТАНОЈКО
+СТОЈЧЕВСКИ БЛАГОЈА
+СТОЈЧЕВСКИ ТОМИСЛАВ
+СТОЈЧЕВСКИ ТОНЕ
+СТОЈЧИЋ ЂОРЂЕ
+СТОЈЧИЋ ЂУРО
+СТОЈЧИЋ ДЕСИМИР
+СТОЈЧИЋ ДУШАН
+СТОЈЧИЋ ЈЕЛЕНА
+СТОЈЧИЋ МИЛАН
+СТОЈЧИЋ МИЛАН
+СТОЈЧИЋ МИЛЕНКО
+СТОЈЧИЋ МИРОСЛАВ
+СТОЈЧИЋ НИКОЛА
+СТОЈЧИЋ СРЕЋКО
+СТОЈЧИЋ СРЕТКО
+СТОЈЧИНОВИЋ МАРКО
+СТОЈЧИНОВИЋ СИМО
+СТОЈШИЋ ЖИВАН
+СТОЈШИЋ ЂОРЂЕ
+СТОЈШИЋ ЂОРЂЕ
+СТОЈШИЋ БОЈКА
+СТОЈШИЋ ДАНЧИКА
+СТОЈШИЋ ДРАГИ
+СТОЈШИЋ ДУШАНКА
+СТОЈШИЋ ЈЕЛЕНА
+СТОЈШИЋ ЈОВАН
+СТОЈШИЋ ЈОВАН
+СТОЈШИЋ ЛАЗАР
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МИЛАН ДИПЛ ИНГ
+СТОЈШИЋ МИЛАН
+СТОЈШИЋ МИЛАН
+СТОЈШИЋ МИЛИВОЈ
+СТОЈШИЋ МИЛКА
+СТОЈШИЋ МИЛОШ
+СТОЈШИЋ МИРА
+СТОЈШИЋ НАДА
+СТОЈШИЋ НАДА
+СТОЈШИЋ НЕГОВАН
+СТОЈШИЋ НЕНАД
+СТОЈШИЋ НЕВЕНКА
+СТОЈШИЋ НЕВЕНКА
+СТОЈШИЋ НИКОЛА
+СТОЈШИЋ ОЛГА
+СТОЈШИЋ ПЕТАР
+СТОЈШИЋ ПРОКОПИЈЕ
+СТОЈШИЋ ПРВОСЛАВ
+СТОЈШИЋ САВА
+СТОЈШИЋ САВА
+СТОЈШИЋ САВА
+СТОЈШИЋ СЛАВИЦА
+СТОЈШИЋ СМИЉА
+СТОЈШИЋ СОФИЈА
+СТОЈШИЋ СРБИСЛАВ
+СТОЈШИЋ СТАНОЈЕ
+СТОЈШИЋ СТЕВАН
+СТОЈШИЋ ТАТЈАНА
+СТОЈШИЋ ВЕРА
+СТОЈШИЋ ВИДОСАВА
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВОЈИСЛАВ
+СТОЈШИЋ ВУЈАДИН ДИПЛ ИНГ
+СТОЈШИЋ ЗДРАВКО
+СТОЈШИН ЖАРКО
+СТОЈШИН ЂОРЂЕ
+СТОЈШИН ЂУРЂА
+СТОЈШИН ЂУРЂИНКА
+СТОЈШИН БОГОСЛОВ
+СТОЈШИН ДИМИТРИЈЕ
+СТОЈШИН ДОБРИВОЈ
+СТОЈШИН ДРАГАН
+СТОЈШИН ДУШАН
+СТОЈШИН ЕМИЛ
+СТОЈШИН ЕСТЕР
+СТОЈШИН ГАВРА
+СТОЈШИН ГРОЗДАНА
+СТОЈШИН ЈОВАН
+СТОЈШИН ЈОВАН
+СТОЈШИН ЛАЗАР
+СТОЈШИН МИЛАНКА
+СТОЈШИН МИЛАН
+СТОЈШИН МИЛАН
+СТОЈШИН МИЛИЦА
+СТОЈШИН МИЛОРАД
+СТОЈШИН МИЛОВАН
+СТОЈШИН НИКОЛА
+СТОЈШИН ОЛГА
+СТОЈШИН РАДА
+СТОЈШИН РАДОСЛАВ
+СТОЈШИН САВА
+СТОЈШИН САВА
+СТОЈШИН СИНИША
+СТОЈШИН СВЕТОЗАР
+СТОЈШИН ТОДОР
+СТОЈШИН ВАСА
+СТОЈШИН ВЕРА
+СТОЈШИН ЗЛАТА
+СТОЈА ЉИЉАНА
+СТОЈА МАРИЈА
+СТОЈА МИЛАНА
+СТОЈА СЛАЂАНА
+СТОЈА СЛОБОДАН ДР ЛЕКАР
+СТОЈА ВОЈИСЛАВ
+СТОЈАЧИЋ ДИМИТРИЈЕ
+СТОЈАЧИЋ МИЛАН
+СТОЈАЧИЋ НЕНАД
+СТОЈАЧИЋ ВЛАДИСЛАВ
+СТОЈАДИНОВ РАДИВОЈ
+СТОЈАДИНОВИЋ АНИЦА
+СТОЈАДИНОВИЋ БОРИСЛАВА
+СТОЈАДИНОВИЋ БОРИВОЈ
+СТОЈАДИНОВИЋ ДИМИТРИЈЕ
+СТОЈАДИНОВИЋ ДОБРИЛА
+СТОЈАДИНОВИЋ ДРАГАНА ЛЕКАР
+СТОЈАДИНОВИЋ ДРАГИЊА
+СТОЈАДИНОВИЋ ДРАГОСЛАВ
+СТОЈАДИНОВИЋ ЛАЗАР
+СТОЈАДИНОВИЋ ЉУБИША
+СТОЈАДИНОВИЋ МИЛАН
+СТОЈАДИНОВИЋ МИЛАН
+СТОЈАДИНОВИЋ МИЛЕВА
+СТОЈАДИНОВИЋ МИЛИЦА
+СТОЈАДИНОВИЋ МИЛИНКО
+СТОЈАДИНОВИЋ МИЛКА
+СТОЈАДИНОВИЋ МИЛОЈЕ
+СТОЈАДИНОВИЋ ПЕТАР
+СТОЈАДИНОВИЋ ПЕТАР
+СТОЈАДИНОВИЋ ПУНИША
+СТОЈАДИНОВИЋ СЛАВКО
+СТОЈАДИНОВИЋ СЛОБОДАН
+СТОЈАДИНОВИЋ СЛОБОДАН
+СТОЈАДИНОВИЋ СОФИЈА
+СТОЈАДИНОВИЋ СОФИЈА
+СТОЈАДИНОВИЋ СТЕВАН
+СТОЈАДИНОВИЋ ТАТЈАНА
+СТОЈАДИНОВИЋ ВЛАДЕТА
+СТОЈАК ЗОРИЦА
+СТОЈАКОВ БОЖИДАР
+СТОЈАКОВ МИЛОРАД
+СТОЈАКОВ СРБОСЛАВ
+СТОЈАКОВ СРБОСЛАВ
+СТОЈАКОВИЋ ЂУКАН
+СТОЈАКОВИЋ ЂУРО
+СТОЈАКОВИЋ БРАНИСЛАВА
+СТОЈАКОВИЋ ДИВНА
+СТОЈАКОВИЋ ДРАГАН
+СТОЈАКОВИЋ ЈЕЛКА
+СТОЈАКОВИЋ КОСТА
+СТОЈАКОВИЋ ЛАЗАР
+СТОЈАКОВИЋ МАРГИТА
+СТОЈАКОВИЋ МИХАЈЛО
+СТОЈАКОВИЋ МИЛАДИНКА
+СТОЈАКОВИЋ МИЛА
+СТОЈАКОВИЋ МИЛЕ
+СТОЈАКОВИЋ МИЛИСАВ
+СТОЈАКОВИЋ МИЛОВАН
+СТОЈАКОВИЋ НИКОЛА
+СТОЈАКОВИЋ РАДМИЛА
+СТОЈАКОВИЋ САВАН
+СТОЈАКОВИЋ СЛАВКО
+СТОЈАКОВИЋ СМИЉА
+СТОЈАКОВИЋ СТАНКО
+СТОЈАКОВИЋ СТЕВО
+СТОЈАКОВИЋ СВЕТОЗАР
+СТОЈАКОВИЋ ЗОРАН
+СТОЈАКОВИЋ ЗОРА
+СТОЈАНЧЕВ ГОРДАНА
+СТОЈАНЧЕВ ИВАН
+СТОЈАНЧЕВ РАДОМИР
+СТОЈАНЧЕВ СЛАВИЦА
+СТОЈАНЧЕВ ВАСА
+СТОЈАНЧИЋ ВЛАДА
+СТОЈАНАЦ БРАНКО
+СТОЈАНАЦ МИЛЕ
+СТОЈАНАЦ НИКОЛА
+СТОЈАНИЋ АНГЕЛИНА
+СТОЈАНОСКИ ДУШАН
+СТОЈАНОСКИ ГАВРИЛ
+СТОЈАНОВ БРАНКО
+СТОЈАНОВ БРАНКО
+СТОЈАНОВ ИВАН
+СТОЈАНОВ МИЛОВАН
+СТОЈАНОВ МИРЈАНА
+СТОЈАНОВ МЛАДЕН ДР
+СТОЈАНОВ НАДА
+СТОЈАНОВ НАДА
+СТОЈАНОВ ОЛГА
+СТОЈАНОВ РАДИВОЈЕ
+СТОЈАНОВ РАДОВАН
+СТОЈАНОВ САВА
+СТОЈАНОВ САВА
+СТОЈАНОВ СЕНКА
+СТОЈАНОВ СТАНКО
+СТОЈАНОВ СТЕВАН
+СТОЈАНОВ ВЕРА
+СТОЈАНОВ ВЛАДИМИР
+СТОЈАНОВ ВУКИЦА
+СТОЈАНОВ ЗОРАН
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВОЈИН
+СТОЈАНОВИЋ ЖИВОРАД
+СТОЈАНОВИЋ ЂОРЂЕ
+СТОЈАНОВИЋ ЂОРЂЕ
+СТОЈАНОВИЋ ЂУРЂИЦА
+СТОЈАНОВИЋ ЂУРА
+СТОЈАНОВИЋ АЦА
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЉОША
+СТОЈАНОВИЋ АНА
+СТОЈАНОВИЋ-БАЛИНТ БОЖАНА
+СТОЈАНОВИЋ БЛАГОЈЕ
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОЖИДАР
+СТОЈАНОВИЋ БОЖИДАР
+СТОЈАНОВИЋ БОБАН
+СТОЈАНОВИЋ БОГОЉУБ
+СТОЈАНОВИЋ БОРИСЛАВА
+СТОЈАНОВИЋ БОРИСЛАВ
+СТОЈАНОВИЋ БОРИВОЈЕ
+СТОЈАНОВИЋ БОРИВОЈ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНКА
+СТОЈАНОВИЋ БРАНКА
+СТОЈАНОВИЋ БРАНКО
+СТОЈАНОВИЋ БРАНКО
+СТОЈАНОВИЋ БУДИМИР
+СТОЈАНОВИЋ ЦВИЈЕТА
+СТОЈАНОВИЋ ДАНИЦА
+СТОЈАНОВИЋ ДАНИЦА
+СТОЈАНОВИЋ ДАНИЛО
+СТОЈАНОВИЋ ДАНКА
+СТОЈАНОВИЋ ДАРИНКА ДР
+СТОЈАНОВИЋ ДЕСИМИР
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИНКА
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГИША
+СТОЈАНОВИЋ ДРАГИША
+СТОЈАНОВИЋ ДРАГИЦА
+СТОЈАНОВИЋ ДРАГОЉУБ
+СТОЈАНОВИЋ ДРАГОЉУБ
+СТОЈАНОВИЋ ДРАГОМИР
+СТОЈАНОВИЋ ДРАГОСЛАВ
+СТОЈАНОВИЋ ДУШАН
+СТОЈАНОВИЋ ДУШИЦА
+СТОЈАНОВИЋ ГАВРИЛО
+СТОЈАНОВИЋ ГАВРО
+СТОЈАНОВИЋ ГОРАН
+СТОЈАНОВИЋ ГРАДИМИР
+СТОЈАНОВИЋ ИВКО
+СТОЈАНОВИЋ ЈАКОВ
+СТОЈАНОВИЋ ЈАСМИНА
+СТОЈАНОВИЋ-ЈЕФТОВИЋ БОСИЉКА
+СТОЈАНОВИЋ ЈЕЛЕНА
+СТОЈАНОВИЋ ЈЕЛЕНА
+СТОЈАНОВИЋ ЈЕЛИЦА
+СТОЈАНОВИЋ ЈОВАН
+СТОЈАНОВИЋ ЈОВАН
+СТОЈАНОВИЋ ЈУЛКА
+СТОЈАНОВИЋ КАТИЦА
+СТОЈАНОВИЋ КОНСТАНТИН
+СТОЈАНОВИЋ КОСТА
+СТОЈАНОВИЋ КРСТА
+СТОЈАНОВИЋ ЛАЗАР
+СТОЈАНОВИЋ ЛАЗАР
+СТОЈАНОВИЋ ЛЕОНА
+СТОЈАНОВИЋ ЉУБИША
+СТОЈАНОВИЋ ЉУБИЦА
+СТОЈАНОВИЋ ЉУБИНКО
+СТОЈАНОВИЋ ЉУБОМИР
+СТОЈАНОВИЋ ЉУБОМИР
+СТОЈАНОВИЋ МАРИЈА
+СТОЈАНОВИЋ МАРКО
+СТОЈАНОВИЋ МИША
+СТОЈАНОВИЋ МИЛАК
+СТОЈАНОВИЋ МИЛАН
+СТОЈАНОВИЋ МИЛАН
+СТОЈАНОВИЋ МИЛЕТА
+СТОЈАНОВИЋ МИЛЕ
+СТОЈАНОВИЋ МИЛИЦА
+СТОЈАНОВИЋ МИЛИЦА
+СТОЈАНОВИЋ МИЛИВОЈЕ
+СТОЈАНОВИЋ МИЛКА
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИОДРАГ
+СТОЈАНОВИЋ МИОДРАГ
+СТОЈАНОВИЋ МИОМИР
+СТОЈАНОВИЋ МИРА
+СТОЈАНОВИЋ МИРЈАНА
+СТОЈАНОВИЋ МИРЈАНА
+СТОЈАНОВИЋ МИРОЉУБ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРО
+СТОЈАНОВИЋ МОМЧИЛО
+СТОЈАНОВИЋ МОМИР
+СТОЈАНОВИЋ НАДА
+СТОЈАНОВИЋ НАДА
+СТОЈАНОВИЋ НАСТАС
+СТОЈАНОВИЋ НЕДЕЉКО
+СТОЈАНОВИЋ НЕНАД
+СТОЈАНОВИЋ НЕНАД
+СТОЈАНОВИЋ НИКИЦА
+СТОЈАНОВИЋ НИКОЛА
+СТОЈАНОВИЋ НИКОЛА
+СТОЈАНОВИЋ НОВИЦА
+СТОЈАНОВИЋ НОВИЦА
+СТОЈАНОВИЋ ОБРАД
+СТОЈАНОВИЋ ОЛГА
+СТОЈАНОВИЋ ОСТОЈА
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПРВАН
+СТОЈАНОВИЋ РАДЕ
+СТОЈАНОВИЋ РАДЕ
+СТОЈАНОВИЋ РАДИСАВ
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛО
+СТОЈАНОВИЋ РАДОИЦА
+СТОЈАНОВИЋ РАДОМИР
+СТОЈАНОВИЋ РАДОМИР
+СТОЈАНОВИЋ РАДОВАН
+СТОЈАНОВИЋ РУЖИЦА
+СТОЈАНОВИЋ САША
+СТОЈАНОВИЋ САВА
+СТОЈАНОВИЋ-СИМИЋ ВЕСНА
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВОЈКА
+СТОЈАНОВИЋ СЛАВОЉУБ
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СРЂАН
+СТОЈАНОВИЋ СРБОЉУБ
+СТОЈАНОВИЋ СРЕТЕН
+СТОЈАНОВИЋ СРЕТЕН
+СТОЈАНОВИЋ СТАНИСЛАВ ДР ЛЕКАР
+СТОЈАНОВИЋ СТАНОЈЕ
+СТОЈАНОВИЋ СТАНОЈЕ
+СТОЈАНОВИЋ СТЕВАН ДР
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТОЈАН
+СТОЈАНОВИЋ СТОЈАН
+СТОЈАНОВИЋ СТОЛЕ
+СТОЈАНОВИЋ СВЕТИСЛАВ
+СТОЈАНОВИЋ СВЕТЛАНА
+СТОЈАНОВИЋ СВЕТОЗАР
+СТОЈАНОВИЋ ТИХОМИР ДР ИНГ
+СТОЈАНОВИЋ ТИХОМИР
+СТОЈАНОВИЋ ТОМИСЛАВ МР
+СТОЈАНОВИЋ ТОМИСЛАВ
+СТОЈАНОВИЋ ВАЛЕРИЈА
+СТОЈАНОВИЋ ВАСИЛИЈЕ
+СТОЈАНОВИЋ ВАСО
+СТОЈАНОВИЋ ВЕЛИМИР
+СТОЈАНОВИЋ ВЕЛИМИР
+СТОЈАНОВИЋ ВЕЉКО
+СТОЈАНОВИЋ ВЕРА
+СТОЈАНОВИЋ ВЕРА
+СТОЈАНОВИЋ ВЕСНА
+СТОЈАНОВИЋ ВЕСНА
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАСТИМИР
+СТОЈАНОВИЋ ВОЈИСЛАВ
+СТОЈАНОВИЋ ВУКАШИН
+СТОЈАНОВИЋ ЗДРАВКО
+СТОЈАНОВИЋ ЗОРАН ДР
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРКА
+СТОЈАНОВСКИ ЖИВКО
+СТОЈАНОВСКИ АНДРИЈА
+СТОЈАНОВСКИ БИЉАНА
+СТОЈАНОВСКИ БРАНИМИР
+СТОЈАНОВСКИ ДРАГАН ДИПЛ ОЕЦ
+СТОЈАНОВСКИ ЈОРДАН
+СТОЈАНОВСКИ ЉУБИША
+СТОЈАНОВСКИ ЉУБИЦА
+СТОЈАНОВСКИ ПАВЛЕ
+СТОЈАНОВСКИ ПАВЛЕ
+СТОЈАНОВСКИ САНЕ
+СТОЈАНОВСКИ СЛАВИЦА
+СТОЈАНОВСКИ ТОМО
+СТОЈЕВ СТОИЧКО
+СТОЈИЧИЋ ДЕСАНКА
+СТОЈИЧИЋ ГЛИГОРИЈЕ
+СТОЈИЧИЋ ЈАСМИНА
+СТОЈИЧИЋ ЈАСМИНА
+СТОЈИЧИЋ МИЛИЦА
+СТОЈИЧИЋ РОСА
+СТОЈИЧИЋ СЛАВКО
+СТОЈИЧИЋ ТОДОРА
+СТОЈИШИЋ ЂУРИЦА ДР
+СТОЈИЋ ЂУРЂИНКА
+СТОЈИЋ-АПИЋ СЛАВКА
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БРАНКА
+СТОЈИЋ ДОБРИВОЈ
+СТОЈИЋ ДРАГИЊА
+СТОЈИЋ ДРАГОЉУБ
+СТОЈИЋ ДУШАН
+СТОЈИЋ ГАВРА
+СТОЈИЋ ГОЈКО
+СТОЈИЋ ГРАДИМИР
+СТОЈИЋ ИШТВАН
+СТОЈИЋ ЈУЛИЈАНА
+СТОЈИЋ КАТИЦА
+СТОЈИЋ ЉУБИНКА
+СТОЈИЋ МАРА
+СТОЈИЋ МАРИНКО
+СТОЈИЋ МИЛАН
+СТОЈИЋ МИЛЕНА
+СТОЈИЋ МИЛЕ
+СТОЈИЋ МИЛИЦА
+СТОЈИЋ МИОДРАГ ДР
+СТОЈИЋ МИОМИР
+СТОЈИЋ МИРКО
+СТОЈИЋ МЛАДЕН ДР ЛЕКАР
+СТОЈИЋ НЕДЕЉКО
+СТОЈИЋ НИКОЛА
+СТОЈИЋ СИНИША ДР
+СТОЈИЋ СЛАВКА
+СТОЈИЋ СТАНИСЛАВ
+СТОЈИЋ СВЕТЛАНА
+СТОЈИЋ СВЕТОЗАР
+СТОЈИЋ ТОДОР
+СТОЈИЋ ВАСА
+СТОЈИЋ ВУЧКО
+СТОЈИЋ ВУКАШИН
+СТОЈИЋ ЗОРАН
+СТОЈИЋЕВИЋ СЛОБОДАН
+СТОЈИЦ ЈОНЕЛ
+СТОЈИЉКОВИЋ БОЖИДАР
+СТОЈИЉКОВИЋ БОЖИДАР
+СТОЈИЉКОВИЋ БРАНИМИР ДИПЛ ОЕЦ
+СТОЈИЉКОВИЋ ДАМИР
+СТОЈИЉКОВИЋ ДАРКА
+СТОЈИЉКОВИЋ ГОРАН ДР
+СТОЈИЉКОВИЋ ГОРДАНА
+СТОЈИЉКОВИЋ ЈЕЛИЦА
+СТОЈИЉКОВИЋ ЉУБИША
+СТОЈИЉКОВИЋ ТОМИСЛАВ
+СТОЈИЉКОВИЋ ТОМИСЛАВ
+СТОЈИЉКОВИЋ ВИКТОР
+СТОЈИЛКОВИЋ МИЛЕТИЈЕ
+СТОЈИЛКОВИЋ МИЛЕ
+СТОЈИЛКОВИЋ СТОЈАН
+СТОЈИЛКОВИЋ ВАЛЕРИЈА
+СТОЈИЛОВ РАДОСЛАВ
+СТОЈИЛОВИЋ МИЛАН
+СТОЈИЛОВИЋ МИЛАН
+СТОЈИН ЧЕДОМИР
+СТОЈИН МИЛИВОЈ ДР ПРОФ
+СТОЈИН МИЛИВОЈ
+СТОЈИНОВ ЖИВКО
+СТОЈИНОВ БРАНКО
+СТОЈИНОВ ДУШАН
+СТОЈИНОВ ЈОВАН
+СТОЈИНОВ КАТАРИНА
+СТОЈИНОВ КАТИЦА
+СТОЈИНОВ ЉУБИЦА
+СТОЈИНОВ МИЛЕНКО
+СТОЈИНОВ ЗОРИЦА
+СТОЈИНОВИЋ ГОРАН
+СТОЈИНОВИЋ МАРИЦА
+СТОЈИСАВЉЕВИЋ ДУШАН
+СТОЈИСАВЉЕВИЋ ЈОВАНКА
+СТОЈИСАВЉЕВИЋ МИЛАН
+СТОЈИСАВЉЕВИЋ МИЛЕ
+СТОЈИСАВЉЕВИЋ СЛОБОДАН
+СТОЈИСАВЉЕВИЋ СЛОБОДАН
+СТОЈИСАВЉЕВИЋ ВЕЉКО
+СТОЈКОВ ЖАРКО
+СТОЈКОВ ЖИВОРАД
+СТОЈКОВ АЛЕКСАНДАР
+СТОЈКОВ БОГДАН
+СТОЈКОВ БОРИВОЈ
+СТОЈКОВ БРАНИСЛАВ
+СТОЈКОВ ДИМИТРИЈЕ
+СТОЈКОВ ДРАГИНА
+СТОЈКОВ ИВАН
+СТОЈКОВ ЈЕЛИЦА
+СТОЈКОВ ЈЕЛКА
+СТОЈКОВ ЈОВАН
+СТОЈКОВ ЈУЛКА
+СТОЈКОВ КАТИЦА
+СТОЈКОВ ЉУБИЦА
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛЕНА
+СТОЈКОВ МИЛЕВКА
+СТОЈКОВ МИЛЕ
+СТОЈКОВ МИОДРАГ
+СТОЈКОВ МИОМИР
+СТОЈКОВ МИРОСЛАВ
+СТОЈКОВ МЛАДЕН
+СТОЈКОВ НЕГОВАН
+СТОЈКОВ РАДИВОЈ
+СТОЈКОВ РАДИВОЈ
+СТОЈКОВ СЛОБОДАН
+СТОЈКОВ СТЕВАН
+СТОЈКОВ СТОЈАН
+СТОЈКОВ СТОЈАН
+СТОЈКОВ ТОДОР
+СТОЈКОВ ВЕРИЦА
+СТОЈКОВ ВУКОСАВА
+СТОЈКОВ ЗДРАВКО
+СТОЈКОВИЋ-ШАЛБОТ БОЈАНА
+СТОЈКОВИЋ ЖИВКА
+СТОЈКОВИЋ ЖИВОТА
+СТОЈКОВИЋ ЂОРЂЕ
+СТОЈКОВИЋ ЂОРЂЕ
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АНЂЕЛКА
+СТОЈКОВИЋ АНАНИЈЕ
+СТОЈКОВИЋ АНТОНИЈЕ
+СТОЈКОВИЋ БЛАГОЈЕ
+СТОЈКОВИЋ БОЖИДАР
+СТОЈКОВИЋ БОЖИДАР
+СТОЈКОВИЋ БОРИСЛАВ
+СТОЈКОВИЋ БОРКО
+СТОЈКОВИЋ БРАНИСЛАВ
+СТОЈКОВИЋ ДРАГАН
+СТОЈКОВИЋ ДРАГАН
+СТОЈКОВИЋ ДРАГИЊА
+СТОЈКОВИЋ ДРАГОЉУБ
+СТОЈКОВИЋ ДРАГОЉУБ
+СТОЈКОВИЋ ДУШАНКА
+СТОЈКОВИЋ ДУШАНКА
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ГОРДАНА
+СТОЈКОВИЋ ГОРДАНА
+СТОЈКОВИЋ ГРАДИМИР
+СТОЈКОВИЋ ИЛИЈА
+СТОЈКОВИЋ ИВАН
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ-ЈОВАНОВИЋ СЛАВИЦА
+СТОЈКОВИЋ ЈОВАН
+СТОЈКОВИЋ ЈОВАН
+СТОЈКОВИЋ КАТИЦА
+СТОЈКОВИЋ КУЗМАН
+СТОЈКОВИЋ ЛЕНКА
+СТОЈКОВИЋ МАРИЈА
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛЕНКО
+СТОЈКОВИЋ МИЛЕНКО
+СТОЈКОВИЋ МИЛЕНТИЈЕ
+СТОЈКОВИЋ МИЛОШ
+СТОЈКОВИЋ МИЛОВАН
+СТОЈКОВИЋ МИЛТЕН
+СТОЈКОВИЋ МИЛУТИН
+СТОЈКОВИЋ МИОДРАГ
+СТОЈКОВИЋ МИОДРАГ
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРКО
+СТОЈКОВИЋ МИРОСЛАВ
+СТОЈКОВИЋ МЛАДЕН
+СТОЈКОВИЋ НАДА
+СТОЈКОВИЋ ПАВЛЕ
+СТОЈКОВИЋ ПАВЛЕ
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПРЕДРАГ ДР
+СТОЈКОВИЋ РАДЕНКО
+СТОЈКОВИЋ РАДИСАВ ДИПЛ ИНГ
+СТОЈКОВИЋ РАДИВОЈЕ
+СТОЈКОВИЋ РАДМИЛА
+СТОЈКОВИЋ РАДМИЛА
+СТОЈКОВИЋ РАДОМИР
+СТОЈКОВИЋ РАДОСЛАВКА
+СТОЈКОВИЋ РАДОСЛАВ
+СТОЈКОВИЋ РАДОВАН ДИПЛ ИНГ
+СТОЈКОВИЋ САЊА
+СТОЈКОВИЋ СЛАВКА
+СТОЈКОВИЋ СЛАВОЉУБ
+СТОЈКОВИЋ СМИЉКА
+СТОЈКОВИЋ СТОЈАДИН
+СТОЈКОВИЋ ТЕОДОР
+СТОЈКОВИЋ ВЕЛИМИР
+СТОЈКОВИЋ ВЕЉКО
+СТОЈКОВИЋ ВЕРОСЛАВ
+СТОЈКОВИЋ ВЛАДИМИР
+СТОЈКОВИЋ ВЛАДИМИР
+СТОЈКОВИЋ ЗАГОРКА
+СТОЈКОВИЋ ЗЛАТИБОР
+СТОЈКОВИЋ ЗОРАН
+СТОЈКОВСКИ ДРАГАН
+СТОЈКОВСКИ ДРАГАН
+СТОЈЛОВИЋ ЂУЛА
+СТОЈМЕНОВИЋ ЖИВКО
+СТОЈМЕНОВИЋ ИВАН
+СТОЈМЕНОВИЋ ЈОВАН
+СТОЈМЕНОВИЋ МАРИЈА
+СТОЈМЕНОВИЋ ВЛАДА
+СТОЈМЕНОВИЋ ВОЈИСЛАВ
+СТОЈНИЋ БОШКО
+СТОЈНИЋ ДРАГАН
+СТОЈНИЋ ДРАГИЦА
+СТОЈНИЋ ДУШАН
+СТОЈНИЋ МИЛИЦА
+СТОЈНИЋ МИРКО
+СТОЈНИЋ ПАВЛЕ
+СТОЈНИЋ РАДОМИР
+СТОЈНИЋ СЛОБОДАН
+СТОЈНОВ ДАМЈАН
+СТОЈОВИЋ РАДОМИР
+СТОЈОВИЋ ТОМАШ
+СТОЈСАВЉЕВИЋ НИКОЛА
+СТОЈСАВЉЕВИЋ ПЕТАР
+СТОЈСАВЉЕВИЋ СТЕВАН
+СТОЈСАВЉЕВИЋ ТИХОМИР
+СТОКАНОВИЋ ЂОРЂЕ
+СТОКАНОВИЋ МИЛОРАД
+СТОКИЋ ЂОРЂЕ
+СТОКИЋ ДРАГОЉУБ
+СТОКИЋ ДУШАН
+СТОКИЋ ЈОВИЦА
+СТОКИЋ МИЛАН
+СТОКИЋ ТОДОР
+СТОКИН АЛЕСАНДАР
+СТОКИН БРАНКО
+СТОКИН МИЛИВОЈ
+СТОКИН СЛОБОДАН
+СТОКИН СТОЈАН
+СТОКУЋА ДАНЕ
+СТОКУЋА МИХАЈЛО
+СТОКУЋА МИЛАН
+СТОКУЋА МИЛАН
+СТОКУЋА МИЛАН
+СТОКУЋА МИРЈАНА
+СТОКУЋА НИКОЛА
+СТОКУЋА ПЕТАР
+СТОЛЕСКИ МИТИЈА
+СТОЛИЋ ЂУРО
+СТОЛИЋ БИСЕРКА
+СТОЛИЋ ДУШАН
+СТОЛИЋ ДУШАН
+СТОЛИЋ ДУШАН
+СТОЛИЋ КАТИЦА
+СТОЛИЋ ЉУБИЦА
+СТОЛИЋ МИРЈАНА
+СТОЛИЋ МИРОСЛАВ
+СТОЛИЋ МИРОСЛАВ
+СТОЛИЋ НЕНАД
+СТОЛИЋ ПЕТАР ДР
+СТОЛИЋ СРЕТА
+СТОЛИЋ СТЕВАН
+СТОПИНШЕК СТАНИСЛАВ
+СТРАЖМЕШТЕР БОЖИДАР
+СТРАЖМЕШТЕР ДУШАН
+СТРАЖМЕШТЕРОВ ДИМИТРИЈЕ
+СТРАЖМЕШТЕРОВ МИЛИЦА
+СТРАЖМЕШТЕРОВ МИРОСЛАВ ДИПЛ ИНГ
+СТРАЖМЕШТЕРОВ САВА
+СТРАЖМЕШТЕРОВ СОФИЈА
+СТРАЖМЕШТЕРОВ СТЕВАН
+СТРАЦЕНСКИ МИРОСЛАВ
+СТРАЦЕНСКИ СТЕВАН
+СТРАГА СТЈЕПАН
+СТРАХИНИЋ КРСТОМИР
+СТРАЈИН БРАНИСЛАВА
+СТРАЈИН ЈЕЛЕНА
+СТРАЈИН НАДА
+СТРАЈИН РАДОВАН
+СТРАЈИН СТОЈАН
+СТРАЈИН ВЕЛИЗАР
+СТРАЈИНИЋ БОЖИДАР
+СТРАЈИНИЋ ИРЕНА
+СТРАЈИНИЋ ЈОВАН
+СТРАЈИНИЋ ЛАЗАР
+СТРАЈИНИЋ МИЛУТИН
+СТРАЈНИЋ БРАНКО
+СТРАЈНИЋ ДУШАН
+СТРАЈНИЋ ГРУЈА
+СТРАЈНИЋ МАРИЈА
+СТРАЈНИЋ МИЛАНКО
+СТРАЈНИЋ МИЛАН
+СТРАЈНИЋ МЛАДЕН
+СТРАЈНИЋ ПАЛ
+СТРАЈНИЋ ТОША
+СТРАНИЋ ЈОВИЦА
+СТРАЊАКОВИЋ ЖИВОЈИН
+СТРАЊАНАЦ МИЛОРАД
+СТРАЊАНАЦ МИРОСЛАВ
+СТРБАЧКИ ФРИДОЛИНА
+СТРБАЧКИ СТЕВАН
+СТРБАД СТЕВАН
+СТРБАТ ТОМИСЛАВ
+СТРЕХОВСКИ ЗУЗАНА
+СТРЕЛЕ РАША
+СТРЕЗОСКИ ЈОВАН
+СТРЕЗОСКИ МИЛЕСА
+СТРЕЗОСКИ НИКОДИНКА
+СТРЕЗОСКИ ВЛАДИМИР
+СТРГАР ПЕТАР
+СТРИЧЕВИЋ ДАРА
+СТРИЧЕВИЋ ДУШАН
+СТРИЧЕВИЋ ЈОСИП
+СТРИЧЕВИЋ ЈУЛКА
+СТРИЧЕВИЋ КСЕНИЈА
+СТРИЧЕВИЋ ЉУБОМИР
+СТРИЧЕВИЋ МЛАДЕН
+СТРИЧЕВИЋ РАДИВОЈ
+СТРИЧЕВИЋ САВКА
+СТРИЧЕВИЋ ВЕЛИМИР
+СТРИЧЕВИЋ ВЛАДИСЛАВА
+СТРИЧКО ВЛАДИМИР
+СТРИБЕР ЕМИЛ
+СТРИБЕР ФРАЊА
+СТРИБЕР ФРАЊА
+СТРИБЕР МИХАЈЛО
+СТРИБЕР СТЕВАН
+СТРИБЕР СТЕВАН
+СТРИЦКИ ИВАН
+СТРИКА ЂОРЂЕ
+СТРИКА БРАНКО
+СТРИКОВИЋ ЋАМИЛ
+СТРИКОВИЋ БЕЛИ
+СТРИКОВИЋ ЈАНОШ
+СТРИКОВИЋ МИЛОСАВ
+СТРИКОВИЋ РАДОСЛАВ
+СТРИКОВИЋ ВЕРА
+СТРИНЕКА КАТИЦА
+СТРИЗОВИЋ ЉИЉАНА
+СТРИЗОВИЋ МАКСИМ
+СТРУГАР ЖАРКО
+СТРУГАР ЖИВОРАД
+СТРУГАР ГОРАН
+СТРУГАР ЈОСИП
+СТРУГАР МИЛУТИН
+СТРУГАР ПАВЛЕ
+СТРУГАР РАДМИЛА
+СТРУГАР СОЊА
+СТРУГАР ВОЈИСЛАВ
+СТРУГАР ЗАРИЈА
+СТРУХАР АНА
+СТРУХАР ЈАРМИЛА
+СТРУХАР ЈОСИП
+СТРУХАР МАГДА
+СТРУХАРИК ЈОСИП
+СТРУХАРИК ЈОСИП
+СТРУХАРИК-ЈУР РАСТИСЛАВ
+СТРУХАРИК ЈУРАЈ ДР
+СТРУХАРИК МАРЈЕНА
+СТРУХАРИК МАТО
+СТРУХАРИК ПАВЛЕ
+СТРУКАН ДОМАГОЈ ДР
+СТРУЊАШ ГОРДАНА
+СТУБЛИНАЦ МИЛОШ
+СТУДЕН ЖИВОРАД
+СТУЛАР ДУШАН
+СТУПАР ЧЕДА
+СТУПАР ЖЕЉКО
+СТУПАР ЖИВКО
+СТУПАР ЂОРЂЕ
+СТУПАР БОГОЉУБ
+СТУПАР БОРО
+СТУПАР БОСИЉКА
+СТУПАР БРАНКО
+СТУПАР БРАНКО
+СТУПАР БРАНКО
+СТУПАР ЦВЕТА
+СТУПАР ДЕСАНКА
+СТУПАР ДРАГАН
+СТУПАР ДРАГО
+СТУПАР ДУШАНКА
+СТУПАР ДУШАН
+СТУПАР ДУШАН
+СТУПАР ДУШАН
+СТУПАР ИЛИЈА
+СТУПАР ЈАЊА
+СТУПАР ЈАНКО
+СТУПАР ЈОВО
+СТУПАР ЉУБИНКА
+СТУПАР МАРКО
+СТУПАР МАРКО
+СТУПАР МИЉА
+СТУПАР МИЛКА
+СТУПАР МИЛОРАД
+СТУПАР МИЛОРАД
+СТУПАР МИРЈАНА
+СТУПАР МИРКО
+СТУПАР НИКОЛА
+СТУПАР ПЕРО
+СТУПАР ПЕТАР
+СТУПАР ПЕТАР
+СТУПАР РАДА
+СТУПАР РАДЕ
+СТУПАР РАЈКО
+СТУПАР РАЈКО
+СТУПАР РАЈКО
+СТУПАР СЛАЂАНА
+СТУПАР ВЛАДИМИР
+СТУПАР ЗДРАВКО
+СТУПАР ЗОРАН
+СТУПАВСКИ АНДРЕЈ
+СТУПАВСКИ ЈАНКО
+СТУПИЋ СЛАВЕНКО
+СТУПИН ИВАН
+СТУПИН ЗВОНИМИР
+СТУРАР ЗДРАВКО
+СТВОРИЋ ПАВЛЕ
+СУЧЕВИЋ ДАНЕ ДИПЛ ПРАВНИК
+СУЧЕВИЋ ДРАГАН
+СУЧЕВИЋ ДУШАН
+СУЧЕВИЋ МАРИЈА
+СУЧЕВИЋ МАРТА
+СУЧЕВИЋ МИРОСЛАВ
+СУЧЕВИЋ НИКОЛА
+СУЧЕВИЋ НИКОЛА
+СУЧЕВИЋ РУЖИЦА
+СУША ДАНИЛО
+СУША МАРКО
+СУША МИЛИЈАНА
+СУШАЦ ВИНКО
+СУШИЋ ГОРДАНА
+СУШИЋ ХИЛДА
+СУШИЋ РАДА
+СУШИЋ ВУЈАНА
+СУЂИ ЈОВАН
+СУЂИ МАРИЈА
+СУЂИ СТАНКО
+СУБАШИЋ БОРИСЛАВ
+СУБАШИЋ ЈУЛКА
+СУБАШИЋ ЛАЗАР
+СУБАШИЋ МАРКО
+СУБАШИЋ МИЛАН
+СУБАШИЋ НИКОЛА
+СУБАШИЋ ПЕРО
+СУБАШИЋ ПЕТАР МР
+СУБАШИЋ РАЈКО
+СУБАШИЋ СИМА
+СУБАШИЋ СТОЈАН
+СУБАЈКОВ РАДОЈКА
+СУБАКОВ КОВИЉКА
+СУБАКОВ СМИЉКА
+СУБАКОВ СОФИЈА
+СУБАНОВИЋ МИЛАН
+СУБИЋ ЖАРКО
+СУБИЋ ЂОРЂЕ
+СУБИЋ АЛЕКСАНДАР
+СУБИЋ АНЂЕЛКА
+СУБИЋ БОЖЕНА
+СУБИЋ БОЖИДАР
+СУБИЋ БРАНИСЛАВ
+СУБИЋ ДАМИР
+СУБИЋ ДАРА
+СУБИЋ ДИМИТРИЈЕ
+СУБИЋ ДУШАН
+СУБИЋ ГОРДАНА
+СУБИЋ ЈОВАН
+СУБИЋ КОСТА
+СУБИЋ ЛАЗАР
+СУБИЋ ЛАЗАР
+СУБИЋ ЛАЗАР
+СУБИЋ ЉУБИЦА
+СУБИЋ ЉУБОМИР
+СУБИЋ ЉУБОМИР
+СУБИЋ ЉУБОМИР
+СУБИЋ МАРИЈА
+СУБИЋ МАРКО
+СУБИЋ МАРКО
+СУБИЋ МИЛАН
+СУБИЋ МИРОСЛАВА
+СУБИЋ МЛАДЕН
+СУБИЋ НАДА
+СУБИЋ НЕДЕЉКА
+СУБИЋ НЕДЕЉКО
+СУБИЋ НОВАК
+СУБИЋ ОЛГА
+СУБИЋ ПАЈА
+СУБИЋ РАДИВОЈ
+СУБИЋ РАДОСЛАВ
+СУБИЋ СМИЉА
+СУБИЋ СНЕЖАНА
+СУБИЋ СТЕВАН
+СУБИЋ ЗОРАН
+СУБОТИЧКИ БРАНИСЛАВ
+СУБОТИЧКИ ГОРИЦА
+СУБОТИЧКИ КАТИЦА
+СУБОТИЧКИ ЛУКА
+СУБОТИЧКИ МИРЈАНА
+СУБОТИЧКИ МИРКО
+СУБОТИЧКИ НАДА
+СУБОТИЧКИ НЕСТОР ДИПЛ ИНГ
+СУБОТИЧКИ РАДОВАН
+СУБОТИЧКИ САВА
+СУБОТИЧКИ СЛОБОДАН
+СУБОТИЧКИ СОФИЈА
+СУБОТИЧКИ СВЕТИСЛАВ
+СУБОТИЧКИ ВАСА
+СУБОТИЧКИ ВЕРА
+СУБОТИЧКИ ВЛАДИМИР
+СУБОТИЧКИ ЗОРАН
+СУБОТИЋ ЖАРКО
+СУБОТИЋ ЂОРЂЕ
+СУБОТИЋ ЂУРО
+СУБОТИЋ АЛЕКСАНДАР
+СУБОТИЋ БРАНИСЛАВ ДР
+СУБОТИЋ ДРАГУТИН
+СУБОТИЋ ДУШАН
+СУБОТИЋ ДУШАН
+СУБОТИЋ ЉИЉАНА
+СУБОТИЋ ЉУБИЦА
+СУБОТИЋ МАЦА
+СУБОТИЋ МАРКО
+СУБОТИЋ МИЛИВОЈ
+СУБОТИЋ МИЛОШ
+СУБОТИЋ МИЛОРАД
+СУБОТИЋ МИОДРАГ ДИПЛ ИНГ
+СУБОТИЋ НЕНАД
+СУБОТИЋ РАДИВОЈ
+СУБОТИЋ РАДОШ
+СУБОТИЋ РАЈКО
+СУБОТИЋ РАЈКО
+СУБОТИЋ РУЖА
+СУБОТИЋ РУЖА
+СУБОТИЋ САВА
+СУБОТИЋ СЛОБОДАН
+СУБОТИЋ СТАНА
+СУБОТИЋ СВЕТОЗАР
+СУБОТИЋ СВЕТОЗАР
+СУБОТИЋ ТОМИСЛАВ
+СУБОТИЋ ВЕРА
+СУБОТИЋ ВЛАДАНА
+СУБОТИН ЖИВКО
+СУБОТИН ЖИВКО
+СУБОТИН ЂОРЂЕ
+СУБОТИН ЂОРЂЕ
+СУБОТИН ЂУРА
+СУБОТИН БОГДАН
+СУБОТИН БОГДАН
+СУБОТИН ДАНИЦА
+СУБОТИН ДИМИТРИЈЕ
+СУБОТИН ДРАГАН
+СУБОТИН ДРАГИЊА
+СУБОТИН ДУШАНКА
+СУБОТИН ИРИНА
+СУБОТИН ИВАН
+СУБОТИН ЈЕЛЕНА
+СУБОТИН ЈЕЛИЦА
+СУБОТИН ЉИЉАНА
+СУБОТИН ЉУБИНКА
+СУБОТИН МАРКО
+СУБОТИН МАРКО
+СУБОТИН МАРКО
+СУБОТИН МИЛАН
+СУБОТИН МИЛАН
+СУБОТИН МИЛАН
+СУБОТИН МИЛОРАД
+СУБОТИН НЕВЕНКА
+СУБОТИН ПАВЛЕ
+СУБОТИН ПЕТАР
+СУБОТИН ПРЕДРАГ
+СУБОТИН РАДОСЛАВ
+СУБОТИН РАДОВАН
+СУБОТИН САША
+СУБОТИН САВА
+СУБОТИН САВА
+СУБОТИН САВА
+СУБОТИН СЛОБОДАН
+СУБОТИН СМИЉА
+СУБОТИН СТАНКА
+СУБОТИН СТЕВАН
+СУБОТИН СТЕВАН
+СУБОТИН СВЕТОЗАР
+СУБОТИН СВЕТОЗАР
+СУБОТИН СВЕТОЗАР
+СУБОТИН ЗОРА
+СУБУ ЂОРЂЕ
+СУЏУКОВИЋ НИКОЛА
+СУЏУМ БОШКО
+СУЏУМ БОГДАН
+СУЏУМ ИЛИЈА
+СУДАК ВЛАДИМИР
+СУДАР ДУШАН
+СУДАР ДУШАН
+СУДАР ГАЈА
+СУДАР ВОЈИН
+СУДАРЕВИЋ БОШКО
+СУДАРОВ БРАТИСЛАВ
+СУДАРСКИ ДУШАН
+СУДИМАЦ ДРАГО
+СУДИМАЦ МИЛАН
+СУХАНЕК АДАМ
+СУХАНСКИ СТЕВАН
+СУХОВСКИ ЈАНО
+СУИЋ БРАНКО
+СУИЋ НЕНАД
+СУЈЕР МИХАЈЛО
+СУЈИЋ ЈЕЛЕНА
+СУЈИЋ МИЛАН
+СУЈИЋ СОФИЈА
+СУЈИЋ ВОЈИН
+СУЈИЋ ЗДЕНКА
+СУКАЧ МИХАЈЛО
+СУКЊАЈА ДАНИЛО
+СУКНОВИЋ МИРКО
+СУКНОВИЋ РАДИВОЈЕ
+СУКНОВИЋ СЛАВКО
+СУКОЛА АНТАЛ
+СУКОЛА СУЗАНА
+СУКУП МАРГИТА
+СУЛЕЈМАНОВ НАФИЈА
+СУЛИЋ МАРИЦА
+СУЛИЋ ТОМИСЛАВ
+СУЉА РАМАДАН
+СУЉАГИЋ РЕФИК
+СУЛОЦКИ ЈОШКА
+СУЛОМАР АГНЕЗА
+СУЛОМАР ЕРЖЕБЕТ
+СУЛОМАР ИЛОНА
+СУЛОМАР ЈАНОШ
+СУЛОМАР МАГДА
+СУМАН МИЛЕ
+СУМАРОВ ЈЕЛИСАВЕТА
+СУМИНА ДАНИЦА
+СУМИЊА МИША
+СУНАЈКО ЂУРО
+СУНАЈКО ДУШАН
+СУНДАЋ ЂУРА
+СУНДАЋ ТОДОР
+СУНИЋ МИРЈАНА
+СУНКА ЉУБИЦА
+СУНТОК АНИЦА
+СУНЗЕР ВЛАДИМИР
+СУПИЋ БОРИША
+СУПИЋ ДАРИНКА
+СУПИЋ МИЛАН
+СУПИЋ ОЛГА
+СУРЋА ЈОСИП
+СУРЋА ТРАЈАН
+СУРА МАРГИТА
+СУРДУЧАН ДИМИТРИЈЕ
+СУРДУЧКИ ЖИВКО
+СУРДУЧКИ ДРАГАН
+СУРДУЧКИ ИЛИЈА
+СУРДУЧКИ ИЛИЈА
+СУРДУЧКИ ИСИДОР
+СУРДУЧКИ МАРА
+СУРДУЧКИ МИЛАН
+СУРДУЧКИ МИЛОШ
+СУРДУЧКИ МИЛОШ
+СУРДУЧКИ МИРЈАНА
+СУРДУЧКИ НЕБОЈША
+СУРДУЧКИ ПАНТЕЛИЈА
+СУРДУЧКИ ПЕРСА
+СУРДУЧКИ СИНИША
+СУРДУЧКИ СТАНКА
+СУРДУЧКИ СТЕВАН
+СУРЛА БОЖО
+СУРЛА ДУШАН
+СУРЛА ЛУКА
+СУРЛА ПЕТАР
+СУРЛА ПЕТАР
+СУРЛА САВА
+СУРЛА ЗОРАН
+СУРЛИЋ МИЛЕНКО
+СУРОВИ АНТОН
+СУРОВИ ЈОЛАНКА
+СУРОВИ МИХАЛ
+СУРОВИ МИРОСЛАВ
+СУРОВИ СТЕВАН
+СУРОВИ ВЛАДИМИР
+СУСЕДСКИ ОСКАР
+СУТАРИЋ ВЕРА
+СУТРИН БОРИС
+СУТУРОВИЋ ЈАГА
+СУТУРОВИЋ МАРИЈА
+СУТУРОВИЋ НЕСТО
+СУТУРОВИЋ ЗВОНИМИР
+СУВАЧАР ИЛИНКА
+СУВАЧАР ТОДОР
+СУВАЧАР ВЕРА
+СУВАЧАРЕВ БОРИСЛАВА
+СУВАЧАРЕВ ЈОВАН
+СУВАЧАРЕВ МАРИЈА
+СУВАЧАРЕВ МИЛЕНКО
+СУВАЧАРЕВ МОМИР
+СУВАЧАРЕВ ОБРАД
+СУВАЧАРЕВ ПАЈА
+СУВАЧАРЕВ РАДЕНКО
+СУВАЈЧЕВИЋ СВЕТИСЛАВ
+СУВАЈАЦ ЖЕЉКО
+СУВАЈАЦ ВАСИЛИЈЕ
+СУВАЈЏИЋ ЖИВКО
+СУВАЈЏИЋ ЂОРЂЕ
+СУВАЈЏИЋ ЂОРЂЕ
+СУВАЈЏИЋ ДИМИТРИЈЕ
+СУВАЈЏИЋ ГОЈКО
+СУВАЈЏИЋ ИЛИЈА
+СУВАЈЏИЋ ИСА
+СУВАЈЏИЋ ЈОВАН
+СУВАЈЏИЋ ЉИЉАНА
+СУВАЈЏИЋ МАРИЈА
+СУВАЈЏИЋ МАРИНКО
+СУВАЈЏИЋ МИЛКА
+СУВАЈЏИЋ НЕНАД
+СУВАЈЏИЋ НЕНАД
+СУВАЈЏИЋ ОБРАД
+СУВАЈЏИЋ ОЛГИЦА
+СУВАЈЏИЋ ПЕТАР
+СУВАЈЏИЋ РАДМИЛА
+СУВАЈЏИЋ ВАСА
+СУВАЈЏИЋ ВАСА
+СУВАЈЏИН ЈОВАН
+СУВАЈЏИН ЈОВАН
+СУВАЈЏИН МЛАДЕН
+СУВАЈЏИН НИКОЛА
+СУЗИЋ МАРА
+СУЗИЋ МИРКО
+СУЗИЋ НИКОЛА
+СУЗИЋ СОФИЈА
+СВАЛИНА КАТА
+СВЕЋЊАК БРАНКО
+СВЕТИЋ ИВАН ДР
+СВЕТИЋ ИВАН
+СВЕТИЋ ЉЕРКА
+СВЕТЛИК АДАМ
+СВИЛАКОС МАРИЈА
+СВИЛАР АНЂЕЛКА
+СВИЛАР БРАНИСЛАВ
+СВИЛАР ГОЈКО
+СВИЛАР ЉУБОМИР
+СВИЛАР МИХАЈЛО
+СВИЛАР МИХАЈЛО
+СВИЛАР НИКОЛА
+СВИЛАР ПЕТАР
+СВИЛАР РАДОМИР
+СВИЛАР РАТКО
+СВИЛАР СЛАВИЦА
+СВИЛАР СОФИЈА
+СВИЛАР ВЕРИЦА
+СВИЛАР ВИНКА
+СВИЛАРЕВИЋ СТЕВО
+СВИЛАРКОВИЋ СТАНИМИР ДИПЛ ИНГ
+СВИЛАРОВ МИЛАН
+СВИЛОКОС БОРИСЛАВ
+СВИЛОКОС ГАВРА
+СВИЛОКОС КАТИЦА
+СВИЛОКОС МИЛАН
+СВИЛОКОС СТЕВАН
+СВИЊАРЕВИЋ СЛАВКО
+СВИРЧЕВ ЖИВКО
+СВИРЧЕВ ЈОВАН
+СВИРЧЕВ МИЛИВОЈ
+СВИРЧЕВ МИЛОШ
+СВИРЧЕВ РАДА
+СВИРЧЕВИЋ АЛЕКСАНДАР ДР ДОЦЕНТ
+СВИРЧЕВИЋ АНА
+СВИРЧЕВИЋ БОРИСЛАВ
+СВИРЧЕВИЋ ДРАГАН
+СВИРЧЕВИЋ ДРАГА
+СВИРЧЕВИЋ ДРЕНКА
+СВИРЧЕВИЋ ЈОВАН
+СВИРЧЕВИЋ ЈОВАН
+СВИРЧЕВИЋ ЉУБОМИР
+СВИРЧЕВИЋ МИЛИВОЈ
+СВИРЧЕВИЋ МИЛОРАД
+СВИРЧЕВИЋ МИРЈАНА
+СВИРЧЕВИЋ ПЕТАР
+СВИРЧЕВИЋ РАДОВАН
+СВИРЧЕВИЋ СЛАВКО
+СВИРЧЕВИЋ СТЕВАН
+СВИРЧЕВИЋ ТЕОДОРА
+СВИРЧЕВИЋ-ТРАЈКОВИЋ ЉУБИЦА
+СВИРЧЕВИЋ ВАСА
+СВИРЧЕВИЋ ВУКАН
+СВИРАЦ РУЖИЦА
+СВИТИЋ БОЖО
+СВИТЛИЦА ДРАГАН
+СВИТЛИЦА ДУШАН
+СВИТЛИЦА ГОЈКО ДИПЛ ОЕЦ
+СВИТЛИЦА ЈЕЛИЦА
+СВИТЛИЦА МИЛАН
+СВИТЛИЦА РУЖИЦА
+СВИТЛИЦА СИМО
+СВИТЛИЦА СТАНКО
+СВИТЛИЦА ТАНАСИЈЕ ДИПЛ ОЕЦ
+СВИТЛИЦА ВЕРА
+СВОБОДА СТЕВАН
+СВОРЦАН БРАНИСЛАВ
+СВОРЦАН ЉУБОМИР
+СВОРЦАН МИЛОШ
+СВОРЦАН МИЛОРАД
+СВОРЦАН МИЛОРАД
+СВОРЦАН РАДИСЛАВ
+СВОРЦАН РАДОМИР
+СВОРЦАН СТЕВАН
+СВОРЦАН СТОЈАН
+СВОРЦАН ЗОРИЦА
+СВРДЛАН МЛАЂАН
+СВРКОТА ЖИВКО
+СВРКОТА ВУКОМАН
+СВРЗИЋ ГОРДАНА
+ТАЧИ ИСМАИЉ
+ТАЧИ ТЕОФИЛ
+ТАШ КАРОЉ
+ТАШЕВСКИ МИЛКА
+ТАШЕВСКИ СОФИЈА
+ТАШИ ЉУБИЦА
+ТАШИ ПЕТАР
+ТАШИ РОЗАЛИЈА
+ТАШИ СТЕВАН
+ТАШИ ЗОЛТАН
+ТАШИЋ МИЛИВОЈ
+ТАШИЋ ВЕРА
+ТАШНАДИ МИХАЉ
+ТАБШ НАДА
+ТАБШ НОХАДЕДИН
+ТАБАЧКИ ВЛАДИМИР
+ТАБАЧКИ ЗОРИЦА
+ТАБАК ДРАГАН
+ТАБАК ИВАН
+ТАБАК ВАСА
+ТАБАК ВОЈИСЛАВ
+ТАБАКОВ ДРАГОМИР
+ТАБАКОВ МИЛЕНКО
+ТАБАКОВ МЛАДЕН
+ТАБАКОВИЋ ЂОРЂЕ ДИПЛ ИНГ
+ТАБАКОВИЋ ДУШАН
+ТАБАКОВИЋ ИСМЕТ
+ТАБАКОВИЋ МИРКО
+ТАБОРИ ЂОРЂЕ ДР ЛЕКАР
+ТАЦОВИЋ ВЕРА
+ТАДИЋ ЖИВАН
+ТАДИЋ ЂОРЂЕ
+ТАДИЋ ЂОРЂЕ
+ТАДИЋ АЛЕКСАНДАР
+ТАДИЋ АНА
+ТАДИЋ АРСЕНИЈЕ
+ТАДИЋ БОСИЉКА
+ТАДИЋ ДАНИЛО
+ТАДИЋ ДРАГАН
+ТАДИЋ ДРАГА
+ТАДИЋ ДУШАН
+ТАДИЋ ДУШАН
+ТАДИЋ ДУШАН
+ТАДИЋ ЕДИТА
+ТАДИЋ ГОРАН
+ТАДИЋ ИЛИЈА
+ТАДИЋ ИЛИЈА
+ТАДИЋ ИВАН
+ТАДИЋ ЈОВИЦА
+ТАДИЋ КРАСИМИР
+ТАДИЋ ЛАЗАР
+ТАДИЋ ЛАЗАР
+ТАДИЋ МАРИЈА
+ТАДИЋ МАРИНКО
+ТАДИЋ МАРИНКО
+ТАДИЋ МИЈО
+ТАДИЋ МИЛОШ ДИПЛ ИНГ
+ТАДИЋ МИЛОШ
+ТАДИЋ МИЛОЈЕ
+ТАДИЋ МИЛОСАВ
+ТАДИЋ МИРКО
+ТАДИЋ МИРКО
+ТАДИЋ МИРКО
+ТАДИЋ НАДА
+ТАДИЋ НЕВЕНКА
+ТАДИЋ ОБРЕН
+ТАДИЋ ПЕТАР
+ТАДИЋ РАДОЈЕ
+ТАДИЋ РАТКО
+ТАДИЋ САША
+ТАДИЋ САВА
+ТАДИЋ СЛОБОДАН
+ТАДИЋ СОФИЈА
+ТАДИЋ СПАСОЈЕ
+ТАДИЋ СТОЈАН
+ТАДИЋ ТАНКОСАВА
+ТАДИЋ УРОШ
+ТАДИЋ ВЕСЕЛИН
+ТАДИЋ ЗОРАН
+ТАДИЋ ЗОРА
+ТАДИЋ ЗОРКА
+ТАДИЈАНОВИЋ СИЛВЕСТЕР
+ТАДИЈИН ГЛИША
+ТАДИЈИН МИЛИЦА
+ТАДИЈИН МИЛОШ
+ТАДИЈИН МИЛОРАД
+ТАДИН ДУШАНКА
+ТАДИН ДУШАН
+ТАДИН ИВАНКА
+ТАДИН МИЛОВАН
+ТАДИН ЗЛАТОЈЕ
+ТАХИРОВИЋ ЕВИЦА
+ТАХИРОВИЋ МАРИЈА
+ТАХИРОВИЋ МИЛАДИНКА
+ТАИРОВИЋ АЛЕКСАНДАР
+ТАЈХМАН БЕЛА
+ТАЈХМАН ДЕСАНКА
+ТАЈХМАН ЈОСИП
+ТАЈКОВ АНЂЕЛКА
+ТАЈКОВ ЈОВАН
+ТАЈКОВ МИРЈАНА
+ТАЈКОВ РАДОЈКА
+ТАЈКОВИЋ МИЛИЦА
+ТАЈТИ ВЕРОНИКА
+ТАКАЧ ШАНДОР
+ТАКАЧ ЂЕРЂИ
+ТАКАЧ ЂОРЂЕ
+ТАКАЧ ЂУЛА
+ТАКАЧ ЂУРА
+ТАКАЧ ЂУРА
+ТАКАЧ АНЂЕЛКА
+ТАКАЧ АНДРИЈА
+ТАКАЧ АНТАЛ
+ТАКАЧ АНТАЛ
+ТАКАЧ АНТУН
+ТАКАЧ АНТУН
+ТАКАЧ АРПАД
+ТАКАЧ ЕРНЕ
+ТАКАЧ ЕВГЕН
+ТАКАЧ ФЕРЕНЦ
+ТАКАЧ ФРАЊА
+ТАКАЧ ИШТВАН
+ТАКАЧ ИШТВАН
+ТАКАЧ ЈАКИМ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈОЖЕФ ДИПЛ ИНГ
+ТАКАЧ ЈОЖЕФ
+ТАКАЧ ЈОЖЕФ
+ТАКАЧ ЈОСИП
+ТАКАЧ КАРОЉ
+ТАКАЧ КАТИЦА
+ТАКАЧ КАТИЦА
+ТАКАЧ ЛАДИСЛАВ
+ТАКАЧ ЛАЈОШ
+ТАКАЧ ЛАСЛО
+ТАКАЧ МАГДА
+ТАКАЧ МАТА
+ТАКАЧ МИХАЈЛО
+ТАКАЧ МИЛАН
+ТАКАЧ МИРКО
+ТАКАЧ РОЖА
+ТАКАЧ СЕНА
+ТАКАЧ СОФИЈА
+ТАКАЧ СОФИЈА
+ТАКАЧ СТЕВАН
+ТАКАЧ ТИБОР
+ТАКАЧ ТИБОР
+ТАКАЧ ВИНКО
+ТАКАЧ ВЛАДИМИР
+ТАКАЧ ВЛАДИМИР
+ТАКАЧ ЗОЛТАН
+ТАКАЧИ АРПАД ДИПЛ ОЕЦ
+ТАКАЧИ АРПАД ДР
+ТАКАЧИ ГАБОР
+ТАКО ЗВОНИМИР
+ТАКОВАЦ РАДИСАВ
+ТАКОВСКИ БЛАГОЈЕ
+ТАКОВСКИ ЈОВАНКА
+ТАЛЕСКИ ЉУБИЦА
+ТАЛЕСКИ РИСТА
+ТАЛИЋ ДРАГАН
+ТАЛИЋ МИТАР
+ТАЛИЈАН РОЖА
+ТАЛО ШАНДОР
+ТАЛО ЖИВКА
+ТАЛО АЛЕКСАНДАР
+ТАЛО БРИГИТА
+ТАЛО ФРАЊА
+ТАЛО ЈЕЛЕНА
+ТАЛО ЈЕЛИСАВЕТА
+ТАЛО ЈОЖЕФ
+ТАЛО ЈОСИП
+ТАЛО ЈОВАН
+ТАЛО ТЕРЕЗА
+ТАЛОШИ ЂОРЂЕ
+ТАЛОШИ ИРЕНА
+ТАЛОШИ КАРОЉ
+ТАЛОВИЋ БЕХУДИН
+ТАЛОВИЋ ХАЈРИЈА
+ТАЛОВИЋ САДИК
+ТАМАШ ЂЕРЂ
+ТАМАШ ЂУРА
+ТАМАШ ИРИНЕЈ
+ТАМАШ-ЈОШАНОВ АЛЕКСАНДРА
+ТАМАШ ЉУБОМИР
+ТАМАШ МАРИЈА
+ТАМАШ МИХАЈЛО
+ТАМАШ ПАВЛЕ
+ТАМАШ ВЛАДИМИР
+ТАМАШ ВЛАДИМИР
+ТАМАШИ АГОШТОН
+ТАМАШИ АЛАДАР
+ТАМАШИ ТИБОР
+ТАМАШКОВИЋ ЗОЛТАН
+ТАМБУРАШЕВ ВУКАШИН
+ТАМБУРКОВСКИ ДРАГАН
+ТАМИНЏИЋ ЧЕДОМИР
+ТАМИНЏИЋ АНЂЕЛКО
+ТАМИНЏИЋ КОВИНКА
+ТАМИНЏИЋ РИСТА
+ТАМИНЏИЈА ДАНИЛО
+ТАМИНЏИЈА МИЛОРАД
+ТАМИНЏИЈА МИРКО
+ТАМИНЏИЈА ВЛАДО
+ТАНЧИК ШАНДОР
+ТАНЧИК АЛБЕРТ
+ТАНЧИК АЛЕКСАНДАР
+ТАНЧИК ЕМИЛ
+ТАНЧИК ИБОЉА
+ТАНЧИК РОЗА
+ТАНАЦКОВ НОВАК
+ТАНАЦКОВИЋ АЦО
+ТАНАЦКОВИЋ МИХАЈЛО
+ТАНАСИЋ ЈОВАН
+ТАНАСИЋ ОЛИВЕРА
+ТАНАСИЋ ПРЕДРАГ
+ТАНАСИЋ РУЖА
+ТАНАСИЋ СПАСОЈЕ
+ТАНАСИЋ ВАЛЕРИЈА
+ТАНАСИЋ ВАЛЕРИЈА
+ТАНАСИЈЕВИЋ ЖАРКО
+ТАНАСИЈЕВИЋ-ФИЛИПОВ ИВАНКА
+ТАНАСИЈЕВИЋ МИЛАН
+ТАНАСИЈЕВИЋ СИНИША
+ТАНАСИЈИН ЛУКА
+ТАНАСИЈИН ПЕТАР
+ТАНАСИЈИН ВЕРА
+ТАНАСИН ДАНИСЛАВА
+ТАНАСИН ЈОВАН
+ТАНАСИН ЉУБИЦА
+ТАНАСИН НЕСТОР
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСКОВИЋ ДРАГАН
+ТАНАСКОВИЋ ДРАГОМИР
+ТАНАСКОВИЋ ГИНА
+ТАНАСКОВИЋ ГОРДАНА
+ТАНАСКОВИЋ ГОСПАВА
+ТАНАСКОВИЋ ЛАЗАР
+ТАНАСКОВИЋ МИЛЕ
+ТАНАСКОВИЋ НОВАК
+ТАНАСКОВИЋ СТАНИСЛАВ
+ТАНАСКОВИЋ ВИТКО
+ТАНАСКОВИЋ ВИТОМИР
+ТАНАСКОВИЋ ВУКАН
+ТАНДИ ЈУЛИЈАНА
+ТАНЕВ ТРАЈКО
+ТАНГЛ ИВАН
+ТАНГЛ ОЛГА
+ТАЊЕВИЋ ДРАГОЉУБ
+ТАЊЕВИЋ ЉУБОМИР
+ТАЊГА ГОРАН
+ТАЊГА ЉУБОМИР
+ТАЊГА МАРИЈА
+ТАЊГА РАЈКО
+ТАЊГА ТАНЕ
+ТАНКА ИШТВАН
+ТАНКОСИЋ БОГДАН
+ТАНКОСИЋ БОЈАНА
+ТАНКОСИЋ БРАНКО
+ТАНКОСИЋ ЈОВАН
+ТАНКОСИЋ КУЗМАН
+ТАНКОСИЋ МАРКО
+ТАНКОСИЋ МИХАЈЛО
+ТАНКОСИЋ МИЛАН
+ТАНКОСИЋ МИЛЕНА
+ТАНКОСИЋ МИЛИЦА
+ТАНКОСИЋ МИЛИЦА
+ТАНКОСИЋ НИКОЛА
+ТАНКОСИЋ РАЗИЈА
+ТАНКОСИЋ СТЕВАН
+ТАНКОВИЋ САЛКО
+ТАНОВИЋ ГАВРИЛО МР
+ТАНОВИЋ ЈОВО
+ТАНОВИЋ ВЛАДИМИР
+ТАНТИЋ СЛАВКО
+ТАНУРЏИЋ ЖИВОЈИН
+ТАНУРЏИЋ АЛЕКСАНДАР
+ТАНУРЏИЋ ДАРИНКА
+ТАНУРЏИЋ ГОЈКО
+ТАНУРЏИЋ ЈОВАН
+ТАНУРЏИЋ МИЛИЦА
+ТАНУРЏИЋ МИРКО
+ТАНУРЏИЋ СРБОМИР
+ТАНУРЏИЋ СТАНИСЛАВА
+ТАНУРЏИЋ СВЕТОЗАР
+ТАНУРЏИЋ ЗОРА
+ТАПАИ РУДОЛФ
+ТАПАЈ ГАБРИЈЕЛ
+ТАПАЈ СТАМЕНКА
+ТАПАЛАГА ЈОН
+ТАПАЛАГА ТОДОР
+ТАПАВИЧКИ ЧЕДОМИР
+ТАПАВИЧКИ БОРИВОЈ
+ТАПАВИЧКИ ФЕОДОР
+ТАПАВИЧКИ МЛАДЕН
+ТАПАВИЧКИ РАДОВАН
+ТАПАВИЧКИ СТЕВАН
+ТАПАВИЦА ЧЕДОМИР
+ТАПАВИЦА АЛЕКСАНДРА
+ТАПАВИЦА АЛЕКСАНДРА
+ТАПАВИЦА БОРКА
+ТАПАВИЦА БРАНКА
+ТАПАВИЦА ДОБРИЛА
+ТАПАВИЦА ЈЕЛИЦА
+ТАПАВИЦА ЉУБОМИР
+ТАПАВИЦА МИЛОРАД
+ТАПАВИЦА МИТА
+ТАПАВИЦА РАДОСЛАВА
+ТАПАВИЦА РАЈКО
+ТАПАВИЦА СИМА
+ТАПАВИЦА СТЕВАН
+ТАПАВИЦА ТИХОМИР
+ТАПАВИЦА ВЕРИЦА
+ТАПАВИЦА ВЕРИЦА
+ТАРАКЧИЈА ЂОРЂЕ
+ТАРАКЧИЈА-МИЛОВАНОВИЋ РАТКА
+ТАРАНЏА ИВАН
+ТАРАНЏА ИВАН
+ТАРАСЕНКО БРАТИСЛАВ ДР
+ТАРБУК МИРКО
+ТАРБУК НИКОЛА
+ТАРЕВСКИ ЋАМИЛ
+ТАРГУШ МАТИЈА
+ТАРИ ИЛОНА
+ТАРЈАН ДЕЖЕ
+ТАРЈАН ГАБОР
+ТАРЈАН ИМРЕ
+ТАРЈАН КАРЛО
+ТАРЈАН ТИБОР
+ТАРКО ЈАНОШ
+ТАРЛАЋ ПЕРИЦА
+ТАРЛЕ ИЛИЈА
+ТАРЛЕ ИВАН
+ТАРНОЦКИ АМАЛИЈА ДР
+ТАРНОЦКИ ПАЛ
+ТАСЕВ БЛАЖО
+ТАСЕВСКИ ИЛО
+ТАСЕВСКИ ЈОРДАН
+ТАСИЋ ЖАКЛИНА
+ТАСИЋ ЖИВОЈИН
+ТАСИЋ ЂОРЂЕ
+ТАСИЋ АНЂЕЛИЈА
+ТАСИЋ АНА
+ТАСИЋ БЛАГОЈЕ ДИПЛ ПРАВНИК
+ТАСИЋ БЛАГОЈЕ
+ТАСИЋ БОЖИДАР МР ПХ
+ТАСИЋ БОРИСЛАВ
+ТАСИЋ БОРИВОЈЕ
+ТАСИЋ БОРИВОЈЕ
+ТАСИЋ ДЕСАНКА
+ТАСИЋ ДОБРИВОЈ
+ТАСИЋ ИВАН
+ТАСИЋ ЉУБОДРАГ ДИПЛ ИНГ
+ТАСИЋ МИЛОШ ДР ЛЕКАР
+ТАСИЋ МИЛОШ ДР
+ТАСИЋ МИЛОШ ДР
+ТАСИЋ МИЛОШ
+ТАСИЋ МИРОСЛАВ
+ТАСИЋ МИРОСЛАВ
+ТАСИЋ НЕВЕНКА
+ТАСИЋ РАДЕ
+ТАСИЋ СИНИША
+ТАСИЋ СЛОБОДАН
+ТАСИЋ ТРИФУН
+ТАСИЋ УРОШ
+ТАСИЋ ВЕРА
+ТАСИЋ ВЛАДАНКА
+ТАСИЋ ЗОРАН
+ТАСКОВИЋ ДУШАН
+ТАСКОВИЋ МИРОСЛАВ
+ТАСКОВИЋ ПЕРА
+ТАСОВАЦ ДОБРИЛА
+ТАСОВАЦ МИЛОРАД
+ТАТАИ ЕМИЛИЈА
+ТАТАИ ИВАН
+ТАТАИ КАРОЉ
+ТАТАИ МАРГИТ
+ТАТАИ ТИБОР
+ТАТАЛОВИЋ ЖИВКО
+ТАТАЛОВИЋ БРАНИМИР
+ТАТАЛОВИЋ ДРАГАН
+ТАТАЛОВИЋ ИЛИЈА
+ТАТАЛОВИЋ ИЛИЈА
+ТАТАЛОВИЋ ЛАЗО
+ТАТАЛОВИЋ МИЛАН
+ТАТАЛОВИЋ МИЛАН
+ТАТАЛОВИЋ ПЕТАР
+ТАТАЛОВИЋ ПЕТАР
+ТАТАЛОВИЋ ПЕТАР
+ТАТАР ДУШАН
+ТАТАР ДУШАН
+ТАТАРЕВИЋ БЛАЖА
+ТАТАРИН РУЖИЦА
+ТАТАРСКИ ДУШАН
+ТАТАРСКИ МИЛОРАД
+ТАТАРСКИ НАДА
+ТАТАРСКИ СВЕТИСЛАВ
+ТАТАРСКИ ВЛАДЕТА
+ТАТИЋ ЖАРКО
+ТАТИЋ ЂУРЂИНКА
+ТАТИЋ АЛЕКСАНДАР
+ТАТИЋ АЛЕКСАНДАР
+ТАТИЋ АНКИЦА
+ТАТИЋ БРАНКО
+ТАТИЋ ДАНА
+ТАТИЋ ДРАГАН
+ТАТИЋ ДРАГОШ
+ТАТИЋ ДРАГОЉУБ
+ТАТИЋ ДРАГОМИР
+ТАТИЋ ДУШАН
+ТАТИЋ ЕМИЛ ДР
+ТАТИЋ ЕВИЦА
+ТАТИЋ ИЛИЈА
+ТАТИЋ ИЛИЈА
+ТАТИЋ ИЛОНКА
+ТАТИЋ ЈЕЛЕНА
+ТАТИЋ ЈОВАН ДИПЛ ИНГ
+ТАТИЋ ЈОВАН
+ТАТИЋ ЛАЗАР
+ТАТИЋ МАРА
+ТАТИЋ МАРИЈА
+ТАТИЋ МАРИЈА
+ТАТИЋ МИЛАН
+ТАТИЋ МИЛАН
+ТАТИЋ МИЛИВОЈ
+ТАТИЋ МИЛКА
+ТАТИЋ МИЛОШ
+ТАТИЋ МИЛОРАД
+ТАТИЋ МИЛОСАВ
+ТАТИЋ МИЛУТИН ДИПЛ ИНГ
+ТАТИЋ НЕДЕЉКО
+ТАТИЋ ПАЈА
+ТАТИЋ ПЕРСИДА
+ТАТИЋ ПЕТАР
+ТАТИЋ РАДМИЛА
+ТАТИЋ РАДОСЛАВ
+ТАТИЋ СЛАВКО
+ТАТИЋ СЛОБОДАН
+ТАТИЋ СРБИСЛАВ
+ТАТИЋ СТЕВАН
+ТАТИЋ ТОМИСЛАВ
+ТАТИЋ ЗЛАТИЦА
+ТАТОМИР МАРКО
+ТАТОМИРОВ ЈОВАН
+ТАТОМИРОВ МАРИЈА
+ТАТОМИРОВ МАРИЈА
+ТАТОМИРОВ РАДИВОЈ
+ТАТОМИРОВ ЗОРАН
+ТАТОМИРОВИЋ БРАНКА
+ТАУШАН МАРКО
+ТАУШАНОВИЋ ИЛИЈА
+ТАУШАНОВИЋ РАДЕ
+ТАУБНЕР КАТИЦА
+ТЕШАНОВ МИЛАН
+ТЕШАНОВИЋ ЧЕДО
+ТЕШАНОВИЋ ЖЕЉКО
+ТЕШАНОВИЋ ЂОКО
+ТЕШАНОВИЋ ЦВИЈЕТА
+ТЕШАНОВИЋ ДРАГАН
+ТЕШАНОВИЋ ДРАГАН
+ТЕШАНОВИЋ ДУШАН
+ТЕШАНОВИЋ ЈЕЛА
+ТЕШАНОВИЋ ЛАЗАР
+ТЕШАНОВИЋ НЕНАД
+ТЕШАНОВИЋ НЕВЕНКА
+ТЕШАНОВИЋ ПЕТАР
+ТЕШАНОВИЋ РАШКО
+ТЕШАНОВИЋ РАЈКО
+ТЕШАНОВИЋ ТОМА
+ТЕШАНОВИЋ ВОЈА
+ТЕШАНОВИЋ ЗОРАН
+ТЕШЕЊИ ЕДУАРД
+ТЕШИЋ ЂОРЂЕ
+ТЕШИЋ АЛЕКСАНДАР
+ТЕШИЋ ДАРИНКА
+ТЕШИЋ ДРАГАН
+ТЕШИЋ ДУШАН
+ТЕШИЋ ЕРЖЕБЕТ
+ТЕШИЋ ГРАДИМИР
+ТЕШИЋ ИЛИЈА
+ТЕШИЋ ЈУЛИЈАНА
+ТЕШИЋ ЉУБОМИР
+ТЕШИЋ ЛУКА
+ТЕШИЋ МАРИЈА
+ТЕШИЋ МИЛЕНКО
+ТЕШИЋ МИЛЕ
+ТЕШИЋ МИЛЕ
+ТЕШИЋ МИЛИЦА
+ТЕШИЋ МИЛОРАД
+ТЕШИЋ МИРКО
+ТЕШИЋ ПЕРСА
+ТЕШИЋ РАДИСЛАВ
+ТЕШИЋ СЛАВКА
+ТЕШИЋ СЛАВОЉУБ ДИПЛ ИНГ
+ТЕШИЋ СОФИЈА
+ТЕШИЋ СТАНИСЛАВА
+ТЕШИЋ СТЕВАН ДР
+ТЕШИЋ СВЕТЛАНА
+ТЕШИЋ ЗДРАВКО
+ТЕШИН ЈАСМИНКА
+ТЕШИН ЉУБИНКА
+ТЕШИН МИЛОШ
+ТЕШИН СТЕВКА
+ТЕШИН ВЕСНА
+ТЕШОВИЋ ДРАГИЦА
+ТЕШОВИЋ ЉУБО
+ТЕШОВИЋ МИЛЕНКО
+ТЕШОВИЋ МИЛОМИР
+ТЕШОВИЋ МИЛОРАД
+ТЕШОВИЋ ВАСИЛИЈЕ
+ТЕЖЛА АНДРИЈА
+ТЕДИЋ ЖИВКО
+ТЕДИЋ БРАНИСЛАВ
+ТЕДИЋ МИЛОВАН
+ТЕДИЋ НЕВЕНКА
+ТЕГЕЛТИЈА БОГДАН
+ТЕГЕЛТИЈА ДУШАН
+ТЕГЕЛТИЈА ДУШАН
+ТЕГЕЛТИЈА ИЛОНКА
+ТЕГЕЛТИЈА МАГДАЛЕНА
+ТЕГЕЛТИЈА МИЛАН
+ТЕГЕЛТИЈА МИТРА
+ТЕГЕЛТИЈА СТАНКО
+ТЕГЕЛТИЈА ВЛАЈКО
+ТЕГЛАШ АНА
+ТЕГЛАШ ЛИДИЈА
+ТЕГЛАШ НАДА
+ТЕГЛАШИ ИШТВАН
+ТЕГЛАШИ ЈОЖЕФ
+ТЕЈИЋ БРАНКО
+ТЕЈИЋ-КОВАЧ МАРИЈА
+ТЕЈИЋ ЛАЗАР
+ТЕЈИЋ МИЛИЈА
+ТЕКИЋ БОРО
+ТЕКИЋ МИЛАН
+ТЕКИЋ МИЛКА
+ТЕКИЋ МИОДРАГ
+ТЕКИЋ МИРКО
+ТЕКИЋ СЛАВИЦА
+ТЕКИЋ СЛАВКО
+ТЕЛ ФЕРЕНЦ
+ТЕЛ ЈАНОШ
+ТЕЛ ЈЕЛИСАВЕТА
+ТЕЛ ЈЕНЕ
+ТЕЛ ПЕТАР
+ТЕЛ ВИЛМОШ
+ТЕЛАРОВ АНКА
+ТЕЛАРОВ ЈОВАН
+ТЕЛАРОВ МИЛОШ
+ТЕЛАРОВ НАДА
+ТЕЛАРОВ ПЕРА
+ТЕЛАРОВ СИМА
+ТЕЛАРОВ СИНИША
+ТЕЛАРОВ СИНИША
+ТЕЛАРОВ СМИЉАНА
+ТЕЛАРОВ ВОЈИН
+ТЕЛАРОВ ЗОРА
+ТЕЛАРОВИЋ БОРИС
+ТЕЛАРОВИЋ ДИМИТРИЈЕ
+ТЕЛАРОВИЋ ИВАНА
+ТЕЛАРОВИЋ ИВАН
+ТЕЛАРОВИЋ РАТОМИР
+ТЕЛАРОВИЋ СЛОБОДАН
+ТЕЛАРОВИЋ СТЕВАН
+ТЕЛАРОВИЋ СТЈЕПАН
+ТЕЛЕКИ ШАНДОР
+ТЕЛЕКИ ЕРИКА
+ТЕЛЕКИ СТЕВАН
+ТЕЛЕКИ ВЕРА
+ТЕМЕРИНАЦ ДАРА
+ТЕМЕРИНАЦ МИЛЕВА
+ТЕМЕРИНАЦ МИОДРАГ
+ТЕМЕРИНСКИ ЈЕЛИЦА
+ТЕМЕРИНСКИ ЈОВАН
+ТЕМЕРИНСКИ НАДА
+ТЕМУНОВИЋ МАРИЈА
+ТЕНЦЕ АЛБИН
+ТЕЊИ ЂОРЂЕ
+ТЕЊИ ЈОСИП
+ТЕЊИ ЈОСИП
+ТЕЊИ ЈОСИП
+ТЕЊИ КСЕНИЈА
+ТЕЊИ МАРИЈА
+ТЕЊОВИЋ ДОБРИВОЈЕ
+ТЕЊОВИЋ МИЛОШ
+ТЕЊОВИЋ РАДИВОЈЕ
+ТЕОДОРОВИЋ АНДРЕЈА
+ТЕОДОРОВИЋ ДОБРИЛА
+ТЕОДОРОВИЋ ДУШАН
+ТЕОДОРОВИЋ ЈОВАН
+ТЕОДОРОВИЋ ЈОВАН
+ТЕОДОРОВИЋ ЉУБО
+ТЕОДОРОВИЋ МАРА
+ТЕОДОРОВИЋ МИЛАН
+ТЕОДОРОВИЋ НАДА
+ТЕОДОРОВИЋ ПАЈА
+ТЕОДОРОВИЋ ПЕРА
+ТЕОДОРОВИЋ ПЕРА
+ТЕОДОРОВИЋ РАТИМИР
+ТЕОДОРОВИЋ САВА
+ТЕОДОРОВИЋ СИМА
+ТЕОДОРОВИЋ СЛОБОДАН
+ТЕОДОРОВИЋ ВИТОМИР
+ТЕОДОРОВИЋ ВЛАДИСЛАВ ДИПЛ ИНГ
+ТЕОДОРОВИЋ ВЛАДИСЛАВА
+ТЕОДОСИЋ МИРЈАНА
+ТЕОДОСИЈЕВИЋ БРАНИСЛАВ
+ТЕОДОСИЈЕВИЋ МИЛИЦА
+ТЕОДОСИЈЕВИЋ ЗОРАН
+ТЕОФАНОВ ЂУРЂИЦА
+ТЕОФАНОВ БОШКО
+ТЕОФАНОВ ДОБРИНКА
+ТЕОФАНОВ ДУШАН
+ТЕОФАНОВ ДУШКО
+ТЕОФАНОВ МАРИНКО
+ТЕОФАНОВ МИЛАН
+ТЕОФАНОВ МИЛИВОЈ
+ТЕОФАНОВ МИЛОШ
+ТЕОФАНОВ МИЛОШ
+ТЕОФАНОВ ОЛИВЕРА
+ТЕОФАНОВ ЗОРА
+ТЕОФАНОВИЋ ШТЕФАНИЈА
+ТЕОФАНОВИЋ АЛЕКСАНДАР
+ТЕОФАНОВИЋ АЛЕКСАНДАР
+ТЕОФАНОВИЋ АНА
+ТЕОФАНОВИЋ АРАНЂЕЛ
+ТЕОФАНОВИЋ БОГДАН
+ТЕОФАНОВИЋ БОГДАН
+ТЕОФАНОВИЋ ДАНИЛО
+ТЕОФАНОВИЋ ДОНКА
+ТЕОФАНОВИЋ ДУШАН
+ТЕОФАНОВИЋ МАРКО ДР ВЕТЕРИНЕ
+ТЕОФАНОВИЋ МИЛЕВА
+ТЕОФАНОВИЋ МИЛИЦА
+ТЕОФАНОВИЋ ТАДИЈА
+ТЕОФИЛОВИЋ ЂУРЂИЦА
+ТЕОФИЛОВИЋ АЛЕКСАНДАР
+ТЕОФИЛОВИЋ БРАНКА
+ТЕОФИЛОВИЋ ГОРАН
+ТЕОФИЛОВИЋ МОМЧИЛО
+ТЕОФИЛОВИЋ САВО
+ТЕОВАНОВИЋ НЕВЕНКА
+ТЕПША НЕБОЈША
+ТЕПША СИНИША
+ТЕПШИЋ ЈОВИЦА
+ТЕПШИЋ МИОДРАГ
+ТЕПШИЋ РАДЕ
+ТЕПАЧЕВИЋ АНДРЕЈА
+ТЕПАВЧЕВИЋ ЖАНКА
+ТЕПАВЧЕВИЋ БОЖИДАР
+ТЕПАВЧЕВИЋ ГОЈКО
+ТЕПАВЧЕВИЋ МИЛОВАН
+ТЕПАВЧЕВИЋ ПЕТАР ДР
+ТЕПАВЧЕВИЋ РАТКО
+ТЕПАВЧЕВИЋ СТРАХИЊА
+ТЕПИЋ ФРАНЦИКА
+ТЕПИЋ ГОРАН
+ТЕПИЋ ЈОВАН
+ТЕПИЋ МИЛАН
+ТЕПИЋ МИЛОШ
+ТЕПИЋ МИЛОВАН
+ТЕПИЋ НЕДЕЉКО
+ТЕПИЋ ОБРЕНКО
+ТЕПИЋ РАДОВАН
+ТЕПИЋ РАЈКО
+ТЕПИЋ СНЕЖАНА
+ТЕПИЋ ВИДА
+ТЕПИЋ ЗОРАН
+ТЕРЕЧЕК АНЂЕЛКА
+ТЕРЕЧИЋ ЛАЈОШ
+ТЕРЕЧИК ПАЛ
+ТЕРЕЦКИ ИШТВАН
+ТЕРЕК ЂУЛА
+ТЕРЕК АНДРИЈА
+ТЕРЕК ФЕРЕНЦ
+ТЕРЕК ИШТВАН
+ТЕРЕК ИМРЕ ДИПЛ ИНГ
+ТЕРЕК ИРЕНА
+ТЕРЕК ЈАНОШ
+ТЕРЕК КАТАЛИН
+ТЕРЕК ЛАСЛО
+ТЕРЕК ЉУДЕВИТ ДР ИНГ
+ТЕРЕК ОЛГА
+ТЕРЕК ТИБОР
+ТЕРЕЗИЈА БОСИЉКА
+ТЕРХЕШ ШАНДОР
+ТЕРЈЕК АЛЕКСАНДАР
+ТЕРЈЕК-КОВАЧ КАРЛО
+ТЕРЈЕК МИХАЈЛО
+ТЕРЈЕК ВИКТОРИЈА
+ТЕРКЕЉ АНА
+ТЕРЉУК ИВАН
+ТЕРНОВАЦ ИШТВАН
+ТЕРЗИЋ ЖИВКО
+ТЕРЗИЋ ЂОРЂЕ
+ТЕРЗИЋ ЂУРО
+ТЕРЗИЋ БЕЛА
+ТЕРЗИЋ БИСЕРКА
+ТЕРЗИЋ БОГОЉУБ
+ТЕРЗИЋ БРАНКА
+ТЕРЗИЋ ДРАГАН
+ТЕРЗИЋ ДРАГОМИР
+ТЕРЗИЋ ДУШАН
+ТЕРЗИЋ ДУШАН
+ТЕРЗИЋ ФРАНЦА
+ТЕРЗИЋ ЈЕВРЕМ
+ТЕРЗИЋ ЈОВАН
+ТЕРЗИЋ МИЛАН
+ТЕРЗИЋ МИЛАН
+ТЕРЗИЋ МИЛЕНА
+ТЕРЗИЋ МИЛЕНКО
+ТЕРЗИЋ МИЛИЦА
+ТЕРЗИЋ МИОДРАГ
+ТЕРЗИЋ МИОДРАГ
+ТЕРЗИЋ НИКОЛА
+ТЕРЗИЋ ЊЕГОСАВА
+ТЕРЗИЋ ПАВЛЕ
+ТЕРЗИЋ ПЕРКА
+ТЕРЗИЋ ПЕТАР ДР
+ТЕРЗИЋ ПЕТАР
+ТЕРЗИЋ ПЕТАР
+ТЕРЗИЋ РЕЉА
+ТЕРЗИЋ САВА
+ТЕРЗИЋ СЛАВКО
+ТЕРЗИЋ СЛАВКО
+ТЕРЗИЋ СЛАВНА
+ТЕРЗИЋ СЛОБОДАН
+ТЕРЗИЋ СРБИСЛАВ
+ТЕРЗИЋ СТАНКА
+ТЕРЗИЋ ТЕОДОР
+ТЕРЗИЋ ТЕРЕЗА
+ТЕРЗИЋ ТРИФУН
+ТЕРЗИЋ ВЕРА
+ТЕРЗИЋ ВЛАДАН
+ТЕРЗИЋ ВОЈИСЛАВ
+ТЕРЗИЈА МИТАР
+ТЕРЗИН БРАНИСЛАВ
+ТЕРЗИН БРАНКО
+ТЕРЗИН ДРАГОСЛАВ
+ТЕРЗИН ДУШАН
+ТЕРЗИН ЈОВАНКА
+ТЕРЗИН ЈОВАНКА
+ТЕРЗИН ЉУБИЦА
+ТЕРЗИН МИЛАН
+ТЕРЗИН МИЛИНА
+ТЕРЗИН МИРЈАНА
+ТЕРЗИН МИРОСЛАВА
+ТЕРЗИН МИРОСЛАВА
+ТЕРЗИН МИТА
+ТЕРЗИН НЕВЕНКА
+ТЕРЗИН РАДИВОЈ
+ТЕРЗИН РАДМИЛА
+ТЕРЗИН РИСТА
+ТЕРЗИН СЛОБОДАН
+ТЕРЗИН СТАНКО
+ТЕРЗИН ТОША
+ТЕРЗИН ВАСА
+ТЕРЗИН ВЕЛИМИР
+ТЕРЗИН ВЕЉКО
+ТЕРЗИН ВЕРИЦА
+ТЕРЗИН ВЕСЕЛИН
+ТЕРЗИН ВОЈИСЛАВ
+ТЕСЛА ШПИРО
+ТЕСЛА БРАНКО
+ТЕСЛА ДРАГАН
+ТЕСЛА МИРА
+ТЕСЛИЋ ЂОРЂЕ
+ТЕСЛИЋ МАКСИМ
+ТЕСЛИЋ МАРКО
+ТЕСЛИЋ ВЛАДИМИР
+ТЕСТИН МАРИЈА
+ТИШАНОВИЋ МИЛИВОЈ
+ТИШИЋ МИЛЕНА
+ТИШМА ЧЕДОМИР
+ТИШМА ЖЕЉКО
+ТИШМА ЂУРИЦА
+ТИШМА АНДРЕЈ
+ТИШМА БРАНКО
+ТИШМА ДУШАН
+ТИШМА ДУШАН
+ТИШМА ИЛИЈА
+ТИШМА ЈОВАН
+ТИШМА ЛАЗАР
+ТИШМА ЉИЉАНА
+ТИШМА МАРИЈА
+ТИШМА МАРТА
+ТИШМА-МИЛОШЕВСКИ НАТАША
+ТИШМА МИЛОШ
+ТИШМА МИРКО
+ТИШМА МОМИР
+ТИШМА НИКОЛА
+ТИШМА СИНИША
+ТИШМА СМИЉА
+ТИШМА СТЕВАН
+ТИШМА СВЕТОЗАР
+ТИШМА ВОЈИНКА
+ТИШМА ВОЈИН
+ТИШМА ЗОРАН
+ТИБАИ ИШТВАН
+ТИЦ АНАМАРИЈА
+ТИЦА БОЖО
+ТИЦА ЦВЕТА
+ТИЦА ДМИТАР
+ТИЦА ДРАГАН
+ТИЦА ЈОВАН
+ТИЦА МИЛОШ
+ТИЦА НЕДЕЉКО
+ТИГАЊ АНТЕ
+ТИХИ ЈОСИП
+ТИХОМИРОВИЋ МИЛАН
+ТИХОМИРОВИЋ ВЕЉКО
+ТИХВИНСКИ ВЛАДАН
+ТИХВИНСКИ ВЛАДИМИР ДИПЛ ИНГ
+ТИЈАНИЋ МИЛОШ
+ТИЈАНИЋ СМИЉА
+ТИЈАНИЋ ЗОРАН
+ТИКВЕША НАИЛА
+ТИКВИЋ БОШКО
+ТИКВИЋ МИРОСЛАВ
+ТИКВИЦКИ ХРВОЈЕ
+ТИКВИЦКИ МАРИЈАНА
+ТИЛ ЕДВИН ДР
+ТИМАРАЦ БРАНКО
+ТИМАРАЦ СТОЈАН
+ТИМАРОВ ЂОРЂЕ
+ТИМАРОВ СТЕВАН
+ТИМАРОВ ВАСА
+ТИМАРОВ ВЕРА
+ТИМИЛИЋ ДИМИТРИЈЕ
+ТИМКО ИРИНЕЈ
+ТИМКО ЉУБОВ
+ТИМКО МЕЛАНИЈА
+ТИМКО НЕСТОР
+ТИМКО ВЕРА
+ТИМКО ВЛАДИМИР
+ТИМОТИЋ ЂОРЂЕ
+ТИМОТИЋ СТАНА
+ТИМОТИЋ УРОШ
+ТИМОТИЈЕВИЋ АНИЦА
+ТИМОТИЈЕВИЋ БОЖИДАР
+ТИМОТИЈЕВИЋ ДИМИТРИЈЕ
+ТИМОТИЈЕВИЋ ЈЕВРЕМ
+ТИМОТИЈЕВИЋ-КОПРИВИЦА МАЈА
+ТИМОТИЈЕВИЋ МИРОСЛАВ
+ТИМОТИЈЕВИЋ ОЛГА
+ТИМОТИЈЕВИЋ ПЛЕМЕНКА
+ТИМОТИЈЕВИЋ РАДОСЛАВ
+ТИНКОВИЋ ТОМИСЛАВ
+ТИНТЕР ХЕДВИГА
+ТИНТОР ЂУРА
+ТИНТОР ДУШАН
+ТИНТОР МАРКО
+ТИНТОР МИЛКА
+ТИНТОР МИОДРАГ
+ТИНТОР МИРА
+ТИНТОР-РАДОМИР СТОЈА
+ТИНТОР СТЕВАН
+ТИНУС БЕРНАДЕТА
+ТИНУС МАРТА
+ТИОДОРОВИЋ ЉИЉАНА
+ТИОДОРОВИЋ РАДОВАН
+ТИПШИН БОРИСЛАВ
+ТИПУРА ЈОСИП
+ТИПУРА ЈОСИП
+ТИПУРА ЛАДИСЛАВ
+ТИПУРА ЛАСЛО
+ТИР ИШТВАН
+ТИР МИЛКА
+ТИР ПЕТАР
+ТИРИ АНТАЛ
+ТИРИНДА ЂУРА
+ТИРИНГЕР ЕЛЗА
+ТИРКАЈЛА АНА
+ТИРКАЈЛА СЛАВОМИР
+ТИРНАНИЋ БИСЕРКА
+ТИСИНОВИЋ ЈЕЛИСАВЕТА
+ТИСТА ЕРЖЕБЕТ
+ТИСТА ЈАНОШ
+ТИТЕЛАЦ ЂОРЂЕ
+ТИТЕЛАЦ ЂОРЂЕ
+ТИТЕЛАЦ ЈЕЛЕНА
+ТИТЕЛАЦ ЈОВАН
+ТИТЕЛАЦ МИЛИНКА
+ТИТЕЛАЦ НАДА
+ТИТЕЛАЦ СТЕВАН
+ТИТЕЛАЦ ЗОРИЦА
+ТИТОВ АЛЕКСАНДАР
+ТИТОВ АНА
+ТИТОВ АНИЦА
+ТИТОВ ЕВГЕНИЈЕ
+ТИТОВ ПАВЛЕ
+ТИТОВ ТОМИСЛАВ
+ТКАЛЧЕЦ ЈОВАН
+ТКАЛЕЦ ПАВАО
+ТОШИЋ ЖАРКО
+ТОШИЋ БОРИСЛАВА
+ТОШИЋ БОРИСЛАВ
+ТОШИЋ БРАТИСЛАВ
+ТОШИЋ БРАТИСЛАВ
+ТОШИЋ ДАНИЦА
+ТОШИЋ ДРАГАН
+ТОШИЋ ДРАГАН
+ТОШИЋ ДУШАН
+ТОШИЋ ДУШАН
+ТОШИЋ ДУШАН
+ТОШИЋ ЕРЖЕБЕТ
+ТОШИЋ ЕВИЦА
+ТОШИЋ ГОЈКО
+ТОШИЋ ЈЕЛА
+ТОШИЋ ЈОВАН
+ТОШИЋ ЈОВИЦА
+ТОШИЋ КРСТАН
+ТОШИЋ КРСТОМИР
+ТОШИЋ ЉУБИЦА
+ТОШИЋ ЉУБИНКО
+ТОШИЋ МИХАЈЛО
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛЕВА
+ТОШИЋ МИЛЕ
+ТОШИЋ МИЛОШ
+ТОШИЋ МИЛОРАД
+ТОШИЋ МИЛУТИН
+ТОШИЋ МИОДРАГ
+ТОШИЋ МИРКО
+ТОШИЋ МИТАР
+ТОШИЋ НЕДЕЉКО
+ТОШИЋ НЕВЕНКА
+ТОШИЋ НИКОЛА
+ТОШИЋ НИКО
+ТОШИЋ НОВАК
+ТОШИЋ ОБРАД
+ТОШИЋ ОСТОЈА
+ТОШИЋ ПЕРО
+ТОШИЋ ПЕТАР
+ТОШИЋ РАДЕ
+ТОШИЋ РАДОМИР
+ТОШИЋ РАДОМИР
+ТОШИЋ РАТКО
+ТОШИЋ САВА
+ТОШИЋ СЛАВКА
+ТОШИЋ СОФИЈА
+ТОШИЋ СТАНИМИР
+ТОШИЋ СТЕВАН
+ТОШИЋ СТЕВАН
+ТОШИЋ СВЕТИСЛАВ
+ТОШИЋ СВЕТЛАНА
+ТОШИЋ ВЕЛИБОР
+ТОШИЋ ВЕРА
+ТОШИЋ ВИД
+ТОШИЋ ВЛАДО
+ТОШИЋ ВЛАСТИМИР
+ТОШИЋ ВОЈИН
+ТОШИНОВИЋ ЛУКА
+ТОШКОВ ХРАНИСЛАВ
+ТОШКОВ ПЕРА
+ТОШКОВИЋ ВУЧЕТА
+ТОШКОВИЋ ВУЧИЋ
+ТОШКОВИЋ ЗДРАВКО
+ТОШОВИЋ МИЛАНКА
+ТОШОВИЋ МИЛОЈЕ
+ТОЂЕР КОСТА
+ТОБЏИЋ-БРАШАНАЦ МИРОСЛАВА
+ТОБЏИЋ КАТАРИНА
+ТОБЏИЋ МИЛЕНКО
+ТОБЏИЋ СТЕВАН
+ТОБИ МАРИЈА
+ТОБИ МИРОСЛАВ
+ТОБИАШ ВИЛМОШ
+ТОБОЛКА АНА
+ТОБОЛКА ДАНИЕЛ
+ТОБОЛКА ЕРИКА
+ТОБОЛКА ИШТВАН
+ТОБОЛКА ИЛОНА
+ТОДИЋ БОГДАН
+ТОДИЋ БОРИСЛАВ
+ТОДИЋ БОРИСЛАВ
+ТОДИЋ БРАНИСЛАВ
+ТОДИЋ ДАНИЈЕЛА
+ТОДИЋ ГОЈКО ДИПЛ ИНГ
+ТОДИЋ МАРИЈАНА
+ТОДИЋ МИЛАНКО
+ТОДИЋ МИЛАН
+ТОДИЋ МИЛЕ
+ТОДИЋ МИЛОШ ДИПЛ ИНГ
+ТОДИЋ МИЛОШ
+ТОДИЋ МИРОСЛАВ
+ТОДИЋ НЕЂО
+ТОДИЋ РАДИВОЈ
+ТОДИЋ РАЈКО
+ТОДИЋ РАТОМИР
+ТОДИЋ СТАНИСАВА
+ТОДИЋ СТАНКО
+ТОДИЋ ТОМИСЛАВ
+ТОДИЋ ВЕЛИМИР
+ТОДИЋ ВЛАДО
+ТОДОШКОВИЋ БОГДАН
+ТОДОШКОВИЋ НАДА
+ТОДОШКОВИЋ НЕМАЊА
+ТОДОРЧЕВИЋ ДРАГУТИН
+ТОДОРЧЕВИЋ ОСТОЈА
+ТОДОРЧЕВИЋ ПЕРО
+ТОДОРЧЕВИЋ СВЕТЛАНА
+ТОДОРЧЕВИЋ ВАСИЛИЈЕ
+ТОДОРЧЕВИЋ ВАСО
+ТОДОРЧЕВИЋ ВОЈИН
+ТОДОРАН ТРАЈАН
+ТОДОРИЋ ЧЕДОМИР
+ТОДОРИЋ БРАНКО
+ТОДОРИЋ ДРАГАН
+ТОДОРИЋ ГОЈКО
+ТОДОРИЋ ИЛИЈА
+ТОДОРИЋ ЈЕЛЕНА
+ТОДОРИЋ ЈОВАНКА
+ТОДОРИЋ ЈОВАН
+ТОДОРИЋ ЉУБА
+ТОДОРИЋ ЉУБИВОЈЕ
+ТОДОРИЋ МАРИЈА
+ТОДОРИЋ МИЛОШ
+ТОДОРИЋ МИЛОШ
+ТОДОРИЋ НЕДЕЉКО
+ТОДОРИЋ НИКОЛА
+ТОДОРИЋ НИКО
+ТОДОРИЋ РАДМИЛА
+ТОДОРИЋ СЕЛИМИР
+ТОДОРИЋ ТРИВУНА
+ТОДОРОВ ЂУРА
+ТОДОРОВ АЛЕКСАНДАР
+ТОДОРОВ БИСЕРКА
+ТОДОРОВ ДЕСАНКА
+ТОДОРОВ ГЛИША
+ТОДОРОВ ИВАН
+ТОДОРОВ-ЈАШАРЕВИЋ ДАНИЦА
+ТОДОРОВ МИЛИВОЈ
+ТОДОРОВ МИЛОШ
+ТОДОРОВ НЕДЕЉКО
+ТОДОРОВ ОБРЕНКА
+ТОДОРОВ РАДОВАН
+ТОДОРОВ РОБЕРТ
+ТОДОРОВ САВА
+ТОДОРОВ СЛОБОДАН
+ТОДОРОВ СПИРО ДР
+ТОДОРОВ ТОМИСЛАВ
+ТОДОРОВИЋ ЧЕДО
+ТОДОРОВИЋ ЖАРКО
+ТОДОРОВИЋ ЖАРКО
+ТОДОРОВИЋ ЖИВОЈИН
+ТОДОРОВИЋ ЖИВОТА
+ТОДОРОВИЋ ЖИВОТА
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АНЂЕЛКО
+ТОДОРОВИЋ АНА
+ТОДОРОВИЋ АНКА
+ТОДОРОВИЋ АНТУН
+ТОДОРОВИЋ БОШКО
+ТОДОРОВИЋ БОШКО
+ТОДОРОВИЋ БОГДАН
+ТОДОРОВИЋ БОРИСЛАВ
+ТОДОРОВИЋ БОРИВОЈЕ
+ТОДОРОВИЋ БОСА
+ТОДОРОВИЋ БРАНИСЛАВ
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ ЦВЕТКО
+ТОДОРОВИЋ ЦВИЈЕТИН
+ТОДОРОВИЋ ЦВИЈО
+ТОДОРОВИЋ ДАНИЦА
+ТОДОРОВИЋ ДАНИЛО
+ТОДОРОВИЋ ДИМИТРИЈЕ
+ТОДОРОВИЋ ДОБРОСАВ
+ТОДОРОВИЋ ДОБРОСАВ
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГИЦА
+ТОДОРОВИЋ ДРАГОЉУБ
+ТОДОРОВИЋ ДРАГОЉУБ
+ТОДОРОВИЋ ДРАГОСЛАВ
+ТОДОРОВИЋ ДРАГОСЛАВ
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШКО
+ТОДОРОВИЋ ГОЈКО
+ТОДОРОВИЋ ГОЈКО
+ТОДОРОВИЋ ГРАДИМИР
+ТОДОРОВИЋ ИЛЕ
+ТОДОРОВИЋ ЈАСНА
+ТОДОРОВИЋ ЈЕЛЕНА
+ТОДОРОВИЋ ЈЕЛИЦА
+ТОДОРОВИЋ ЈЕЛИЦА
+ТОДОРОВИЋ ЈОКА
+ТОДОРОВИЋ ЈОВАНКА
+ТОДОРОВИЋ ЈОВИЦА
+ТОДОРОВИЋ ЈУЛИЈАНА
+ТОДОРОВИЋ КОВИНКА
+ТОДОРОВИЋ ЛАЗАР
+ТОДОРОВИЋ ЛЕНКА
+ТОДОРОВИЋ ЉУБИЦА
+ТОДОРОВИЋ ЉУБИЦА
+ТОДОРОВИЋ ЉУБИНКА
+ТОДОРОВИЋ ЉУБОМИР
+ТОДОРОВИЋ МАРА
+ТОДОРОВИЋ МАРГИТА
+ТОДОРОВИЋ МАРИЈА
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МИШО
+ТОДОРОВИЋ МИЋА
+ТОДОРОВИЋ МИЋО
+ТОДОРОВИЋ МИХАЈЛО
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛЕНКО
+ТОДОРОВИЋ МИЛЕ
+ТОДОРОВИЋ МИЛИЦА
+ТОДОРОВИЋ МИЛКА
+ТОДОРОВИЋ МИЛОШ
+ТОДОРОВИЋ МИЛОРАД
+ТОДОРОВИЋ МИЛОВАН
+ТОДОРОВИЋ МИРКО ДИПЛ ИНГ
+ТОДОРОВИЋ МИРКО ДР ЛЕКАР
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРОСЛАВА
+ТОДОРОВИЋ МИРОСЛАВ
+ТОДОРОВИЋ МЛАДЕН ДР
+ТОДОРОВИЋ МЛАДЕН
+ТОДОРОВИЋ МЛАДОМИР
+ТОДОРОВИЋ МОМЧИЛО
+ТОДОРОВИЋ МОМЧИЛО
+ТОДОРОВИЋ МОМИРКА
+ТОДОРОВИЋ НАДА
+ТОДОРОВИЋ НАДА
+ТОДОРОВИЋ НИЋИФОР
+ТОДОРОВИЋ НИКОЛА
+ТОДОРОВИЋ НИКОЛА
+ТОДОРОВИЋ ОЛГИЦА
+ТОДОРОВИЋ ОСТОЈА
+ТОДОРОВИЋ ПЕТАР
+ТОДОРОВИЋ ПЕТАР
+ТОДОРОВИЋ РАШКО
+ТОДОРОВИЋ РАДА
+ТОДОРОВИЋ РАДИША
+ТОДОРОВИЋ РАДИВОЈ АДВОКАТ
+ТОДОРОВИЋ РАДИВОЈЕ
+ТОДОРОВИЋ РАДИВОЈ
+ТОДОРОВИЋ РАДМИЛА
+ТОДОРОВИЋ РАДОЈКА
+ТОДОРОВИЋ РАДОСЛАВ
+ТОДОРОВИЋ РАЈКО
+ТОДОРОВИЋ РАНКО
+ТОДОРОВИЋ РАТКО
+ТОДОРОВИЋ РОСА
+ТОДОРОВИЋ САША
+ТОДОРОВИЋ САВА
+ТОДОРОВИЋ САВА
+ТОДОРОВИЋ САВО
+ТОДОРОВИЋ САВО
+ТОДОРОВИЋ СЕНКА
+ТОДОРОВИЋ СИМА
+ТОДОРОВИЋ СИНИША
+ТОДОРОВИЋ СЛАВЕ
+ТОДОРОВИЋ СЛОБОДАН
+ТОДОРОВИЋ СЛОБОДАН
+ТОДОРОВИЋ СМИЉКА
+ТОДОРОВИЋ СНЕЖАНА
+ТОДОРОВИЋ СОФИЈА
+ТОДОРОВИЋ СРЕДОЈЕ
+ТОДОРОВИЋ СРЕТЕН
+ТОДОРОВИЋ СТАНИМИР
+ТОДОРОВИЋ СТАНИСЛАВ
+ТОДОРОВИЋ СТАНКО
+ТОДОРОВИЋ СТЕВАН
+ТОДОРОВИЋ СТЕВАН
+ТОДОРОВИЋ СТЕВА
+ТОДОРОВИЋ ТОДЕ
+ТОДОРОВИЋ ТОДЕ
+ТОДОРОВИЋ ТОМИСЛАВ
+ТОДОРОВИЋ ТОМИСЛАВ
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЛАДЕТА
+ТОДОРОВИЋ ВЛАДИМИР
+ТОДОРОВИЋ ВЛАДИМИР
+ТОДОРОВИЋ ВЛАДИСЛАВ
+ТОДОРОВИЋ ВУКАШИН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРА
+ТОДОРОВИЋ ЗОРКА
+ТОДОРОВСКИ МАНАСИЈЕ
+ТОДОРОВСКИ МИРОСЛАВ
+ТОДОРОВСКИ НАДА
+ТОДОСИЈЕВИЋ ЂОРЂЕ
+ТОДОСИЈЕВИЋ ДРАГОЉУБ
+ТОДОСИЈЕВИЋ МИЛАН
+ТОДОСИЈЕВИЋ ЗЛАТКО ДИПЛ ПРАВНИК
+ТОФИЛ СОФИЈА
+ТОХОЉ ЈОВО
+ТОХОЉЕВИЋ БОШКО
+ТОХОЉЕВИЋ ЗДРАВКО
+ТОЈАГА МИЛАН
+ТОЈАГА МИЛОШ
+ТОЈАГА СВЕТОЗАР
+ТОЈАГИЋ ЂОРЂЕ
+ТОЈАГИЋ БОЖИДАР
+ТОЈАГИЋ ДАНЕ
+ТОЈАГИЋ ДАНИЛО
+ТОЈАГИЋ ДУШАН
+ТОЈАГИЋ ЈЕЛА
+ТОЈАГИЋ ЛУДМИЛА
+ТОЈАГИЋ МИРЈАНА
+ТОЈАГИЋ НИКОЛА
+ТОЈАГИЋ НИКОЛА
+ТОЈАГИЋ РАДОВАН
+ТОЈАГИЋ СЛОБОДАН
+ТОЈЗАН ИЛОНА
+ТОКАР ЈУЛИЈА
+ТОКИЋ КОСАРА
+ТОКИЋ МИХАЈЛО
+ТОКИЋ МИЛАН
+ТОКИЋ САВА
+ТОКИЋ САВА
+ТОКИЋ САВА
+ТОКИН-ЂЕРИЋ ЗАГОРКА
+ТОКИН ЂОРЂЕ
+ТОКИН АЛИСА
+ТОКИН БОРА
+ТОКИН ДАНИЦА
+ТОКИН ПРОКОП ДР ЛЕКАР
+ТОКИН СЛОБОДАН
+ТОКИН ВЕРА
+ТОКИН ВЛАДА
+ТОКОДИ ЈАНОШ
+ТОКОДИ ЈОЛАНКА
+ТОКОДИ МАРГИТА
+ТОКОВИЋ ЈЕЛИЦА
+ТОЛ АНДРАШ
+ТОЛ ЈОЖЕФ
+ТОЛДИ ЕВА
+ТОЛДИ ВИЛМОШ
+ТОЛИЋ МИЛОШ
+ТОЛИЋ ВЕСНА
+ТОЛИЦКИ ЗОРА
+ТОЛИМИР УРОШ
+ТОЉАГА ВУКОСАВА
+ТОЉЕВИЋ БРАНКО
+ТОЉЕВИЋ ДОБРИСЛАВ
+ТОЉЕВИЋ ДРАГИЦА
+ТОЉИЋ РАЈКО
+ТОЛМАЧ ЗОРАН
+ТОЛМАЧЕВ ЖИВА
+ТОЛМАЧЕВ МИРОСЛАВ
+ТОЛНАИ ОТО
+ТОЛНАИ РУЖА
+ТОЛТ ЈОЖЕФ
+ТОЛТ ЈОСИП
+ТОЛВАЈ АГНЕШ
+ТОЛВАЈ ЕЛЕОНОРА
+ТОЛВЕТ ОСКАР
+ТОМЧАЊИ ИВАН
+ТОМЧАЊИ МИРОСЛАВА
+ТОМЧАЊИ СТАНИСЛАВА
+ТОМЧЕВА НЕВЕНКА ДР
+ТОМЧЕВСКИ ЦВЕТАН
+ТОМЧИЋ ЧЕДОМИР
+ТОМЧОВ ТОМЧО
+ТОМЧОВА АНЕТА ДР
+ТОМЧОВА АНИТА ДР
+ТОМШИЋ ЛАДИСЛАВ
+ТОМА ШАНДОР
+ТОМА АНДРИЈА
+ТОМА ЈАНОШ
+ТОМА ЈАНОШ
+ТОМА ЈАНОШ
+ТОМА ЈУЛИЈАНА
+ТОМА ЛАДИСЛАВ
+ТОМА МАРИЈА
+ТОМА МИХАЈЛО
+ТОМА ОЛГА
+ТОМА ПАЛ
+ТОМА РОЗАЛИЈА
+ТОМА СТЕВАН
+ТОМАШ ЂУРА
+ТОМАШ ЈАНКО
+ТОМАШ ЈОВАН
+ТОМАШ МИЛОРАД
+ТОМАШ МИЛОВАН
+ТОМАШ СТОЈАНКА
+ТОМАШЕВ БОЖИДАР
+ТОМАШЕВ КОВИНКА
+ТОМАШЕВ МАТИЈА
+ТОМАШЕВ МАТИЈА
+ТОМАШЕВ ПЕТАР
+ТОМАШЕВ ВЕРА
+ТОМАШЕВИЋ БЛАГОТА
+ТОМАШЕВИЋ БОЖИДАР
+ТОМАШЕВИЋ БОРИСЛАВ
+ТОМАШЕВИЋ ДРАГАНА
+ТОМАШЕВИЋ ЕВИЦА
+ТОМАШЕВИЋ ИВАН
+ТОМАШЕВИЋ ЈЕЛИЦА
+ТОМАШЕВИЋ ЈОВАН
+ТОМАШЕВИЋ КОСТА
+ТОМАШЕВИЋ ЉУБИША
+ТОМАШЕВИЋ ЉУБИЦА
+ТОМАШЕВИЋ ЛУКА
+ТОМАШЕВИЋ МАНОЈЛЕ
+ТОМАШЕВИЋ МИЛЕНКО
+ТОМАШЕВИЋ МИЛИВОЈ
+ТОМАШЕВИЋ МИЛКА
+ТОМАШЕВИЋ МИЛОРАД
+ТОМАШЕВИЋ МИОДРАГ
+ТОМАШЕВИЋ МИОДРАГ
+ТОМАШЕВИЋ НАДА
+ТОМАШЕВИЋ НАДЕЖДА
+ТОМАШЕВИЋ РАДИВОЈ
+ТОМАШЕВИЋ РАДОЈКА
+ТОМАШЕВИЋ РАДОЈКА
+ТОМАШЕВИЋ САВО
+ТОМАШЕВИЋ СЛОБОДАН
+ТОМАШЕВИЋ СВЕТОМИР
+ТОМАШЕВИЋ ВЛАДИМИР
+ТОМАШЕВИЋ ВОЈИСЛАВ
+ТОМАШИЋ ЂУРА
+ТОМАШИЋ БЕРТА
+ТОМАШИЋ МАРТИН
+ТОМАШИЋ МИРЈАНА
+ТОМАШИЋ ТИБОР
+ТОМАЦ ИВАН
+ТОМАЦ МИРОСЛАВ
+ТОМАЦ РУЖИЦА
+ТОМАН ДИН
+ТОМАН ФРАЊА
+ТОМАН ЈОЖЕФ
+ТОМАН ЛАСЛО
+ТОМАН МАГДОЛНА
+ТОМАНИЋ ДУШАН
+ТОМАНИЋ-ЛАЦКОВИЋ МИЛЕНА
+ТОМАНИЋ МИЛЕНА
+ТОМАНИЋ ЗДЕНКА
+ТОМАНОВИЋ БРАНИСЛАВ
+ТОМАНОВИЋ МАРИЈА
+ТОМАНОВИЋ МИОДРАГ
+ТОМАНОВИЋ РАЈКО
+ТОМАНОВИЋ ТОМИСЛАВ
+ТОМАС АНДРИЈА
+ТОМАС ЈОСИП
+ТОМАС РУДОЛФ
+ТОМАС ЗДРАВКА
+ТОМЕЦ ВЛАДИСЛАВ
+ТОМИЧИЋ АНТЕ
+ТОМИЧИЋ ЦВИЈО
+ТОМИЧИЋ ЈОВО
+ТОМИЧИЋ ПЕТАР
+ТОМИЧИЋ СТОЈА
+ТОМИЧИЋ ТОМИСЛАВ
+ТОМИЧИН МАРИЈА
+ТОМИЋ ЧЕДОМИР ДИПЛ ИНГ
+ТОМИЋ ЧЕДОМИР
+ТОМИЋ ЖЕЉКО
+ТОМИЋ ЖИВКО
+ТОМИЋ ЖИВОЈИН
+ТОМИЋ ЂОРЂЕ
+ТОМИЋ ЂУРЂИЦА
+ТОМИЋ ЂУРЂИНКА
+ТОМИЋ ЂУРИЦА
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСА
+ТОМИЋ АНА
+ТОМИЋ АНГЕЛИНА
+ТОМИЋ АНКА
+ТОМИЋ АНКИЦА
+ТОМИЋ АНКИЦА
+ТОМИЋ АРИЈАДНА
+ТОМИЋ БИЉАНА
+ТОМИЋ БОШКО
+ТОМИЋ БОШКО
+ТОМИЋ БОЖИДАРКА
+ТОМИЋ БОГДАНКА
+ТОМИЋ БОЈКА
+ТОМИЋ БОРИСЛАВ ДР ИНГ
+ТОМИЋ БОРИСЛАВ
+ТОМИЋ БОСИЉКА
+ТОМИЋ БРАНКО
+ТОМИЋ ДАНИЦА
+ТОМИЋ ДАНИЛО МР
+ТОМИЋ ДАРИНКА
+ТОМИЋ ДЕЈАН
+ТОМИЋ ДЕВА
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГА
+ТОМИЋ ДРАГА
+ТОМИЋ ДРАГОЉУБ
+ТОМИЋ ДРАГУТИН
+ТОМИЋ ДУШАН
+ТОМИЋ ДУШАН
+ТОМИЋ ДУШИЦА
+ТОМИЋ ЕВА
+ТОМИЋ ЕВА
+ТОМИЋ ГОРДАНА
+ТОМИЋ ГРАДИМИР
+ТОМИЋ ИЛЕ
+ТОМИЋ ИЛЕ
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИВАН
+ТОМИЋ-ИВИЧИЋ БИЉАНА
+ТОМИЋ ЈЕЛЕНА
+ТОМИЋ ЈЕЛИЦА
+ТОМИЋ ЈОСИФ
+ТОМИЋ ЈОСИП
+ТОМИЋ ЈОВАНКА
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈУЛИАНА
+ТОМИЋ КАТАРИНА
+ТОМИЋ КОНСТАНТИН
+ТОМИЋ КОРНЕЛИА
+ТОМИЋ КОСА
+ТОМИЋ КРСТА
+ТОМИЋ ЛАЗАР
+ТОМИЋ ЛАЗАР
+ТОМИЋ ЛЕПОСАВА
+ТОМИЋ ЉИЉАНА
+ТОМИЋ ЉИЉА
+ТОМИЋ ЉУБА
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИНКА
+ТОМИЋ ЉУБОМИР
+ТОМИЋ ЉУБОМИР
+ТОМИЋ МАРГИТ
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРКО
+ТОМИЋ МИЈОДРАГ
+ТОМИЋ МИЛАДИН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛЕНКО
+ТОМИЋ МИЛЕНКО
+ТОМИЋ МИЛЕ
+ТОМИЋ МИЛИВОЈ
+ТОМИЋ МИЛКА
+ТОМИЋ МИЛОШ
+ТОМИЋ МИЛОШ
+ТОМИЋ МИЛОМИР
+ТОМИЋ МИЛОРАД
+ТОМИЋ МИЛОРАД
+ТОМИЋ МИЛОСАВ
+ТОМИЋ МИРЈАНА
+ТОМИЋ МИРЈАНА
+ТОМИЋ МИРЈАН
+ТОМИЋ МИРКО
+ТОМИЋ МИРКО
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИТАР
+ТОМИЋ МЛАДЕН
+ТОМИЋ МОМЧИЛО
+ТОМИЋ МОМЧИЛО
+ТОМИЋ НАТАША
+ТОМИЋ НАТАЛИЈА
+ТОМИЋ НЕБОЈША
+ТОМИЋ НЕДЕЉКА
+ТОМИЋ-НЕДЕЉКОВИЋ ДОБРИЛА
+ТОМИЋ НЕДЕЉКО
+ТОМИЋ НЕНАД
+ТОМИЋ НЕНАД
+ТОМИЋ НЕНАД
+ТОМИЋ НИКОЛА
+ТОМИЋ НИКОЛА
+ТОМИЋ НОВИЦА
+ТОМИЋ ОЛГИЦА МР
+ТОМИЋ ОЛИВЕРА
+ТОМИЋ ПАВЛЕ ДР
+ТОМИЋ ПЕЛКА
+ТОМИЋ ПЕТАР
+ТОМИЋ ПЕТКО
+ТОМИЋ РАДИВОЈЕ
+ТОМИЋ РАДОВАН
+ТОМИЋ РАДОВАН
+ТОМИЋ РАТОМИР
+ТОМИЋ РОЗАЛИЈА
+ТОМИЋ САША
+ТОМИЋ САВА
+ТОМИЋ САВА
+ТОМИЋ СЕЛИМИР
+ТОМИЋ-СИМИН МИЛКА
+ТОМИЋ СИНИША
+ТОМИЋ СЛАВИЦА
+ТОМИЋ СЛАВИЦА
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВОЉУБ
+ТОМИЋ СЛОБОДАНКА
+ТОМИЋ СЛОБОДАН
+ТОМИЋ СЛОБОДАН
+ТОМИЋ СНЕЖАНА
+ТОМИЋ СОФИЈА
+ТОМИЋ СТАНКО
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТИПА
+ТОМИЋ СТЈЕПАН
+ТОМИЋ СВЕТОЗАР
+ТОМИЋ СВЕТОЗАР
+ТОМИЋ ТАТЈАНА
+ТОМИЋ ТОДЕ
+ТОМИЋ ТОДОР
+ТОМИЋ ВАЛЕРИЈА
+ТОМИЋ ВЕЉКО
+ТОМИЋ ВЕЉКО
+ТОМИЋ ВЕРА
+ТОМИЋ ВЕРИЦА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВИД
+ТОМИЋ ВИНКО
+ТОМИЋ ВЛАДИМИР
+ТОМИЋ ВЛАДИМИР
+ТОМИЋ ВЛАСТИМИР
+ТОМИЋ ВЛАСТИМИР
+ТОМИЋ ВОЈИСЛАВА
+ТОМИЋ ВУКОСАВА
+ТОМИЋ ЗОРАН
+ТОМИЋ ЗОРИЦА
+ТОМИЋ ЗОРКА
+ТОМИЋ ЗОРКА
+ТОМИЋ ЗОРКА
+ТОМИК ЈОВАН
+ТОМИК СОФИЈА
+ТОМИК СТЕВАН
+ТОМИН ЖИВАН
+ТОМИН АЛЕКСАНДАР
+ТОМИН БРАНИСЛАВ
+ТОМИН БРАНИСЛАВ
+ТОМИН ДИМИТРИЈЕ
+ТОМИН ДРАГАН
+ТОМИН ДРАГАН
+ТОМИН ДРАГИЊА
+ТОМИН ДУШАН
+ТОМИН ГОРДАНА
+ТОМИН ЉУБИЦА
+ТОМИН ЉУБИЦА
+ТОМИН МАРИЈА
+ТОМИН МИЛАН
+ТОМИН МИЛУТИН
+ТОМИН МИЛУТИН
+ТОМИН МИРОСЛАВ
+ТОМИН МИТАР
+ТОМИН РАДОСЛАВ
+ТОМИН СТЕВАН ДИПЛ ПРАВНИК
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СВЕТЛАНА
+ТОМИН ВАСА
+ТОМИН ВИДОСАВА
+ТОМИНЧИЋ МИЛОВАН
+ТОМИНАЦ ВИНКО
+ТОМКА АЛПАР
+ТОМКА КАРЛО
+ТОМЉАНОВИЋ БОГОСЛАВ
+ТОМЉАНОВИЋ ЉУБИЦА
+ТОМЉАНОВИЋ МАРИЈА
+ТОМЉАНОВИЋ МИЛАН
+ТОМО ЈОСИП
+ТОМОВ БОГДАН
+ТОМОВ МИРЧЕ
+ТОМОВ САВА
+ТОМОВ СЛОБОДАН
+ТОМОВ ТОША
+ТОМОВ ТОДОР
+ТОМОВ ВЕЛИН
+ТОМОВ ВЕЛИН
+ТОМОВИЋ АНЂА
+ТОМОВИЋ БОЖИДАР
+ТОМОВИЋ БОРИСЛАВ
+ТОМОВИЋ ДРАГИЊА
+ТОМОВИЋ ДУШАН
+ТОМОВИЋ МИТАР
+ТОМОВИЋ РАДОМИР
+ТОМОВИЋ РАДОСЛАВ
+ТОМОВИЋ СТОЈАНКА
+ТОМОВИЋ ТОМО
+ТОМОВИЋ ВАСИЛИЈЕ
+ТОМОВИЋ ЗОРАН
+ТОМОВИЋ ЗОРИЦА
+ТОНЧЕВ ИВАН
+ТОНДОЛО СМИЉА
+ТОНИЋ ЖИКИЦА
+ТОНИЋ РУЖИЦА
+ТОНИЋ СТОЈИМЕН
+ТОНКОВИЋ ЈОЦА
+ТОНКОВИЋ ЈОСИП
+ТОНКОВИЋ МИЛАН
+ТОНКОВИЋ МИЛАН
+ТОНТЕ ФРИЂЕШ
+ТОНТИЋ ЂОРЂЕ
+ТОНТИЋ ДУШАН
+ТОПАЛОВ ДУШАН
+ТОПАЛОВ ГАВРА ДИПЛ ИНГ
+ТОПАЛОВ ЈЕЛИЦА
+ТОПАЛОВ МЕЛАНИЈА
+ТОПАЛОВ МЕЛАНИЈА
+ТОПАЛОВ МИХАЈЛО
+ТОПАЛОВ МИЛЕНА
+ТОПАЛОВ МИЛОШ
+ТОПАЛОВ МИЛОРАД
+ТОПАЛОВ НАДА
+ТОПАЛОВ ПЕТАР
+ТОПАЛОВ СОФИЈА
+ТОПАЛОВ СПАСОЈЕ
+ТОПАЛОВ СТАНИСЛАВА
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СВЕТОЗАР
+ТОПАЛОВ ВАСИЛИЈЕ
+ТОПАЛОВ ВЕРА
+ТОПАЛОВИЋ БОЖО
+ТОПАЛОВИЋ ДУШАН
+ТОПАЛОВИЋ ДУКАТИНКА
+ТОПАЛОВИЋ ЕМИЛИЈА
+ТОПАЛОВИЋ ЈЕЛЕНА
+ТОПАЛОВИЋ ЈУЛИЈЕ
+ТОПАЛОВИЋ МИХАЈЛО
+ТОПАЛОВИЋ МИЛАН
+ТОПАЛОВИЋ МИРКО
+ТОПАЛОВИЋ НЕВЕНКА
+ТОПАЛОВИЋ РАДОЈИЦА
+ТОПАЛОВИЋ СТАНИЈА
+ТОПАЛОВИЋ ВЛАЈКО
+ТОПАЛСКИ ДАНИЛО
+ТОПАЛСКИ ДУШАНКА
+ТОПАЛСКИ-ФИШТЕШ НАДА
+ТОПАЛСКИ МИЛЕНА
+ТОПАЛСКИ ЗОРАН
+ТОПАР МАРИЈА
+ТОПИЋ ЧЕДО
+ТОПИЋ ЂУРО
+ТОПИЋ АНТО
+ТОПИЋ ЦВИЈА
+ТОПИЋ ДАНИЦА
+ТОПИЋ ДАНИЦА
+ТОПИЋ ДРАГАН
+ТОПИЋ ДРАГАН
+ТОПИЋ ИЛИЈА
+ТОПИЋ ЈОВАН
+ТОПИЋ ЈОВАН
+ТОПИЋ ЛЕОН
+ТОПИЋ ЉУБО
+ТОПИЋ МАРИЈА
+ТОПИЋ МИЛАДИНКА
+ТОПИЋ МИЛАН
+ТОПИЋ МИЛИВОЈЕ
+ТОПИЋ МИЛИВОЈ
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОВАН
+ТОПИЋ МИРКО
+ТОПИЋ МИТАР
+ТОПИЋ НАТАЛИЈА
+ТОПИЋ НЕЂО
+ТОПИЋ НИКО
+ТОПИЋ ПЕТАР
+ТОПИЋ РАТКО
+ТОПИЋ СРЕТЕН
+ТОПИЋ СТЕВАН
+ТОПИЋ ТАТЈАНА
+ТОПИЋ ВОЈИН
+ТОПИЋ ВОЈИСЛАВ
+ТОПКА АЛЕКСАНДАР
+ТОПКА АЛЕКСАНДАР
+ТОПЛАК ИМРЕ
+ТОПЛИЦА АБЕДИН
+ТОПЛИЦА ГАНИ
+ТОПЛИЦА НЕЂМЕДИН
+ТОПЛИЦА РАМАДАН
+ТОПЛИЦА ЗЕЋИР
+ТОПЛИЦА ЗЕНИЈА
+ТОПО АНТОНИЈА
+ТОПО ЉУБОМИР
+ТОПО НЕНАД
+ТОПОЛЧЕВИЋ ЈОВАН
+ТОПОЛАЦ РАДИВОЈ ДР ЛЕКАР
+ТОПОЛИЋ ЂУРА
+ТОПОЛИЋ ДУШАН
+ТОПОЛИЋ ПЕЈА
+ТОПОЉАНИН ВЛАДИСЛАВА
+ТОПОЛКОВИЋ ВЛАДИМИР
+ТОПОЛОВАЧКИ РАДОВАН
+ТОПОЛОВАЧКИ ВУКОСАВА
+ТОПРЕК СИМО
+ТОРЂАНСКИ АЛЕКСАНДАР
+ТОРБАРОВ ДУШАН
+ТОРБИЦА АЛЕКСА
+ТОРБИЦА БОРИСЛАВ
+ТОРБИЦА ДУШАН
+ТОРБИЦА ДУШАН
+ТОРБИЦА ИЛИЈА
+ТОРБИЦА ЈЕЛКА
+ТОРБИЦА ЈУЛКА
+ТОРБИЦА МАРИЈА
+ТОРБИЦА МИЛОШ
+ТОРБИЦА МИРОСЛАВ
+ТОРБИЦА НАДА
+ТОРБИЦА РАДОСЛАВ
+ТОРБИЦА ВЕРИЦА
+ТОРДА ЈАНКО
+ТОРДАИ ИЛОНА
+ТОРДАИ МАРИЈА
+ТОРДАИ СВЕТЛАНА
+ТОРДАЈ МИШКО
+ТОРДАЈИ ЈАНКО
+ТОРЕР ЂУРА
+ТОРМА ГЕЗА
+ТОРМА ЈОСИП
+ТОРМА ЈОВАН
+ТОРМА МАРГИТА
+ТОРМА СТЕВАН
+ТОРМА ВИЛИМ
+ТОРМАШИ ЂЕРЂ
+ТОРМАШИ ЈАНОШ
+ТОРМАШИ СМИЉКА
+ТОРМАШИ СТЕВАН
+ТОРМОШИ ЈОЖЕФ
+ТОРЊАНСКИ ЖАРКО
+ТОРЊАНСКИ БОРИСЛАВ
+ТОРЊАНСКИ БРАНИСЛАВ
+ТОРЊАНСКИ ЈЕЛКА
+ТОРЊАНСКИ СВЕТИСЛАВ
+ТОРОК ЧАБА
+ТОРОМАН БРАНИСЛАВ
+ТОРОМАН НЕЂЕЉКО
+ТОРОМАН РАДИСАВ
+ТОРОМАН РАДМИЛА
+ТОРОМАН РАДОЈИЦА
+ТОРОВИЋ ТРИПО
+ТОРТИЋ АНДРИЈА
+ТОРТИЋ ЈОСИП
+ТОРТИЋ МИХАЈЛО
+ТОРТИЋ СТЕВАН
+ТОРТИЋ ВЕРА
+ТОСМАН ЈОСИП
+ТОСУНОВИЋ ЈЕЛИСАВЕТА
+ТОСУНОВИЋ МАРИЈА
+ТОСУНОВИЋ ВЛАДИМИР
+ТОТ ШАНДОР
+ТОТ ШАНДОР
+ТОТ ШАНДОР
+ТОТ АМАЛИЈА
+ТОТ АНА
+ТОТ АНА
+ТОТ АНДРАШ
+ТОТ АНДРИЈА
+ТОТ АНДРИЈА
+ТОТ АНИЦА
+ТОТ АНТАЛ ДИПЛ ИНГ
+ТОТ АНТОНИЈА
+ТОТ АРПАД
+ТОТ-АРВАИ АНТАЛ
+ТОТ-АРВАИ ЈАНОШ
+ТОТ-АРВАИ ЈАНОШ
+ТОТ-БАГИ ИМРЕ
+ТОТ-БАГИ ЈАНОШ
+ТОТ-БАГИ МАРИЈА
+ТОТ БАЛИНТ
+ТОТ БЕРТА
+ТОТ-БОЈНИК ДЕЗИДЕР ДИПЛ ИНГ
+ТОТ БОРА
+ТОТ ДЕЖЕ
+ТОТ ДУШАНКА
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФРАЊА
+ТОТ ФРАЊА
+ТОТ ФРАЊА
+ТОТ ГАБОР
+ТОТ ГЕЗА
+ТОТ-ХОРТИ ШАНДОР
+ТОТ ИШТВАН
+ТОТ ИШТВАН
+ТОТ ИШТВАН
+ТОТ ИБОЉА ДР
+ТОТ ИЛОНА
+ТОТ ИЛОНА
+ТОТ ИЛОНА
+ТОТ ИМРЕ
+ТОТ ИРЕНА
+ТОТ ИРЕНА
+ТОТ ИВАН
+ТОТ ЈАНОШ
+ТОТ ЈАНОШ
+ТОТ ЈАНОШ
+ТОТ ЈЕЛЕНА
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОСИП
+ТОТ ЈОВАНКА
+ТОТ ЈОВАН
+ТОТ ЈУЛИЈАНА
+ТОТ ЈУЛИЈАНА
+ТОТ ЈУЛИЈА
+ТОТ-КАША БЛАЖ
+ТОТ КАРОЉ
+ТОТ КАРОЉ
+ТОТ КАТАРИНА
+ТОТ КАТИЦА
+ТОТ КОВИЉКА
+ТОТ ЛАЈОШ
+ТОТ ЛАЈОШ
+ТОТ ЛАСЛО ДР
+ТОТ ЛАСЛО
+ТОТ ЛАСЛО
+ТОТ ЛАСЛО
+ТОТ ЛИВИЈА
+ТОТ МАГДОЛНА
+ТОТ МАРГИТА
+ТОТ МАРГИТА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МИХАЉ
+ТОТ МИХАЉ
+ТОТ МИКЛОШ
+ТОТ МИЛАНКА
+ТОТ МИЛКА
+ТОТ МИРОСЛАВ
+ТОТ НЕБОЈША
+ТОТ ОЛГА
+ТОТ ПАЛИКА
+ТОТ ПАЛ
+ТОТ ПАЛ
+ТОТ ПАЛ
+ТОТ ПАВЛЕ
+ТОТ РОЗАЛИЈА
+ТОТ РОЗАЛИЈА
+ТОТ СИЛВЕСТЕР
+ТОТ СТЕВАН
+ТОТ СТЕВАН
+ТОТ СТЕВАН
+ТОТ СТЈЕПАН
+ТОТ ТЕРЕЗА
+ТОТ ТЕРЕЗА
+ТОТ ТИБОР
+ТОТ ТОМИСЛАВ
+ТОТ ВАЛЕРИЈА
+ТОТ ВЛАДИМИР
+ТОТ ВЛАДИСЛАВ
+ТОТ ЗИТА
+ТОТ ЗЛАТА
+ТОТ ЗОЛТАН
+ТОТ ЗОРА
+ТОТАРВАИ МАРИЈА
+ТОТХ СИЛВЕСТЕР
+ТОТИЋ СВЕТОЗАР
+ТОТОВИЋ ЈОВАНКА
+ТОТОВИЋ МИЛАН
+ТОВАРЛОЖА ДУШАНКА
+ТОВЕРНИЋ ЗОРА
+ТОВИЛОВИЋ СВЕТЛАНА
+ТОВИЛОВИЋ ЗОРАН
+ТОВИТОВИЋ НИКОЛА
+ТОВИТОВИЋ СЛОБОДАН
+ТОВЈАНИН БИЉАНА
+ТОВЉАНИЋ ДУШАН
+ТОВЉАНИЋ САВА
+ТРАЖИ ПАЛ
+ТРАБАК КАТАРИНА
+ТРАИЛОВИЋ НАДА
+ТРАИЛОВИЋ СЕЛИМИР
+ТРАИЛОВИЋ ВОЈИСЛАВ
+ТРАЈЧЕВИЋ ЛЕПОСАВА
+ТРАЈЧЕВСКА АНИТА
+ТРАЈАНОВСКИ ЉУБИЦА
+ТРАЈАНОВСКИ ЉУБО
+ТРАЈАНОВСКИ МОЈСО
+ТРАЈАНОВСКИ ТРАЈАН
+ТРАЈБАР АДОЛФ
+ТРАЈБАР ЗВОНИМИР
+ТРАЈЕР ЛАДИСЛАВ ДР
+ТРАЈЕР РОБЕРТ
+ТРАЈКОВИЋ БОЖИДАР
+ТРАЈКОВИЋ БРАНИМИР
+ТРАЈКОВИЋ БРАНИСЛАВ
+ТРАЈКОВИЋ БРАНКО
+ТРАЈКОВИЋ ДИМИТРИЈЕ
+ТРАЈКОВИЋ ГЛИГОРИЈЕ
+ТРАЈКОВИЋ МИЛАН
+ТРАЈКОВИЋ МИЛОРАД
+ТРАЈКОВИЋ НАДА
+ТРАЈКОВИЋ НАЈДАН
+ТРАЈКОВИЋ РУЖИЦА
+ТРАЈКОВИЋ СЛОБОДАН
+ТРАЈКОВИЋ СТОЈАДИН
+ТРАЈКОВСКИ ДИМИТРИЈЕ
+ТРАЈКОВСКИ МЕТОДИЈЕ
+ТРАЈКОВСКИ ПАНТА
+ТРАКИЛОВИЋ ВЛАДА
+ТРАЉИЋ ИВАН
+ТРАНДАФИР ВАСИЛИЈЕ
+ТРАНКОЛОВИЋ ЦВЕТА
+ТРАНКУЛОВ ЈОЖЕФ
+ТРАУМ АРАНКА
+ТРАВАЊ ЈОВАНКА
+ТРАВАР ЂУРО
+ТРАВАР ЉУБИША
+ТРАВАР МИЛОСАВ
+ТРАВИЦА МИЛАН
+ТРАВИЦА МИЛЕ
+ТРАВИЦА НИКОЛА
+ТРАВИЦА РАДЕ
+ТРБАНОС ЖИВА
+ТРБИЋ БРАНИСЛАВ
+ТРБИЋ ЉУБИША
+ТРБИЋ МИЛАДИН
+ТРБИЋ МИРОСЛАВ
+ТРБИЋ ТАМАРА
+ТРБИЋ ВЛАДИМИР
+ТРБОЈЕВИЋ ЂОРЂЕ
+ТРБОЈЕВИЋ ЂУРАЂ
+ТРБОЈЕВИЋ БОГОЉУБ
+ТРБОЈЕВИЋ БРАНКО
+ТРБОЈЕВИЋ ДРАГИЦА
+ТРБОЈЕВИЋ ГАВРА
+ТРБОЈЕВИЋ ИДА
+ТРБОЈЕВИЋ ИЛИЈА
+ТРБОЈЕВИЋ ЈОВАН
+ТРБОЈЕВИЋ ЛАЗА
+ТРБОЈЕВИЋ МАРИЦА
+ТРБОЈЕВИЋ МИЛЕ
+ТРБОЈЕВИЋ МИЛИЦА
+ТРБОЈЕВИЋ НИКОЛА
+ТРБОЈЕВИЋ НИКОЛА
+ТРБОЈЕВИЋ СТЕВАН
+ТРБОЉЕВАЦ ДРАГОСЛАВ
+ТРБОВИЋ МИХАЈЛО ДИПЛ ПРАВНИК
+ТРБОВИЋ МИЛАН
+ТРБОВИЋ МИЛАН
+ТРБОВИЋ ВЕСНА
+ТРЕШЊИЋ АЛЕКСАНДРА
+ТРЕШЊИЋ ЈОВАН
+ТРЕШЊИЋ СТЕВАН
+ТРЕЋАКОВ СТОЈАН
+ТРЕБАТИЦКИ АЛЕКСАНДАР
+ТРЕБАТИЦКИ АЛЕКСАНДАР
+ТРЕБАТИЦКИ ЈУСТИНА
+ТРЕБАТИЦКИ МАРИЈА
+ТРЕБИЧНИК-ВУЧИЋ ОЛГА
+ТРЕБОВАЦ МИЛЕ
+ТРЕНЧЕВСКИ НАДЕЖДА
+ТРЕПАНИЋ МАХМУТ
+ТРЕСИГЛАВИЋ КАТИЦА
+ТРЕСИГЛАВИЋ МИЛАН
+ТРЕСИГЛАВИЋ СЛАВКО
+ТРЕСИГЛАВИЋ СТЕВАН
+ТРЕСИГЛАВИЋ ВАСА
+ТРЕСИГЛАВИЋ ВАСА
+ТРЕСКИЋ ЗДРАВКО
+ТРГАЛА ЂУРА
+ТРГО НЕВЕНКА
+ТРИЧКОВИЋ АНКА
+ТРИЧКОВИЋ ЈУЛКА
+ТРИЧКОВИЋ МИОДРАГ
+ТРИЧКОВИЋ СИНИША
+ТРИЧКОВИЋ ВЕРИЦА
+ТРИШИЋ ХРАНИСЛАВ
+ТРИШИЋ-ИЛИЋ СВЕТЛАНА
+ТРИШИЋ МЛАДЕН
+ТРИФКОВИЋ ЈОВИЦА
+ТРИФКОВИЋ КУЗМАН
+ТРИФКОВИЋ ЉУБИЦА
+ТРИФКОВИЋ МАРКО
+ТРИФКОВИЋ МИЛАДИН
+ТРИФКОВИЋ МИЛАН
+ТРИФКОВИЋ МИЛАН
+ТРИФКОВИЋ МИЛИСАВ
+ТРИФКОВИЋ МИРОСЛАВА
+ТРИФКОВИЋ НЕДЕЉКО
+ТРИФКОВИЋ СРЂА ДР
+ТРИФКОВИЋ ВЛАДИМИР
+ТРИФКОВИЋ ВОЈИСЛАВ
+ТРИФУ ДОРУ
+ТРИФУНЧЕВИЋ МАРИЈА
+ТРИФУНЧЕВИЋ МИЛОШ
+ТРИФУЊАГИЋ СПАСОЈЕ
+ТРИФУЊАГИЋ СВЕТИСЛАВ
+ТРИФУНОВ ДАНИЛО
+ТРИФУНОВ ЈОСИФ
+ТРИФУНОВ МИОДРАГ
+ТРИФУНОВ РАДМИЛА
+ТРИФУНОВИЋ ЖИКИЦА
+ТРИФУНОВИЋ ЖИВКА
+ТРИФУНОВИЋ БОШКО
+ТРИФУНОВИЋ ДАНКА
+ТРИФУНОВИЋ ДРАГАН
+ТРИФУНОВИЋ ДРАГОМИР
+ТРИФУНОВИЋ ИЛИНКА
+ТРИФУНОВИЋ ЈЕЛЕНА
+ТРИФУНОВИЋ ЈОВАН
+ТРИФУНОВИЋ ЈОВАН
+ТРИФУНОВИЋ МАКСИМ
+ТРИФУНОВИЋ МИЛИСАВ
+ТРИФУНОВИЋ МИЛОРАД ДИПЛ ИНГ
+ТРИФУНОВИЋ МИРЈАНА
+ТРИФУНОВИЋ МИРКО
+ТРИФУНОВИЋ НАДА
+ТРИФУНОВИЋ НАДЕЖДА
+ТРИФУНОВИЋ НЕГОВАНКА
+ТРИФУНОВИЋ ОЛГА
+ТРИФУНОВИЋ ПАВЛЕ
+ТРИФУНОВИЋ ПЕТАР
+ТРИФУНОВИЋ ПЕТАР
+ТРИФУНОВИЋ РАДИВОЈ
+ТРИФУНОВИЋ РАДМИЛА
+ТРИФУНОВИЋ РАДОМИР ДИПЛ ПРАВНИК
+ТРИФУНОВИЋ РУЖИЦА
+ТРИФУНОВИЋ СЛАВИЦА
+ТРИФУНОВИЋ СЛОБОДАН ДР
+ТРИФУНОВИЋ СЛОБОДАН
+ТРИФУНОВИЋ СОФИЈА
+ТРИФУНОВИЋ СТАНА
+ТРИФУНОВИЋ СВЕТИСЛАВ ДР
+ТРИФУНОВИЋ СВЕТОМИР
+ТРИФУНОВИЋ ТРИФУН
+ТРИФУНОВИЋ ВАСА
+ТРИФУНОВИЋ ВЕРА
+ТРИФУНОВИЋ ВЛАДАН
+ТРИФУНОВИЋ ВЛАДИМИР
+ТРИФУНОВИЋ ВЛАДИМИР
+ТРИФУНОВИЋ ВОЈИСЛАВ
+ТРИФУНОВИЋ ВУКОСАВА
+ТРИФУНОВИЋ ВУКОСАВ
+ТРИКИЋ ДРАГИЦА
+ТРИКИЋ МИРКО
+ТРИКИЋ РОСА
+ТРИКИЋ СВЕТОЗАР
+ТРИКИЋ ВЛАДИМИР
+ТРИПКОВИЋ МИЛАН
+ТРИПКОВИЋ СЛОБОДАН
+ТРИПОЛСКИ МАРИЈА
+ТРИПУНОВИЋ ЂОРЂИЈА
+ТРИПУНОВИЋ БЛАЖО
+ТРИПУНОВИЋ ДРАГОМИР
+ТРИС ЈАКОБ
+ТРИВАНОВИЋ ДРАГАН
+ТРИВАНОВИЋ РАДЕ
+ТРИВАНОВИЋ СТЕВАН
+ТРИВАНОВИЋ ВЕРА
+ТРИВИЋ БОРИС
+ТРИВИЋ БРАНИСЛАВ
+ТРИВИЋ ДОБРИВОЈЕ
+ТРИВИЋ ДУШАН
+ТРИВИЋ ЈОВАН
+ТРИВИЋ СВЕТЛАНА
+ТРИВУНЧИЋ МИРА
+ТРИВУНЏА МИЛОШ
+ТРИВУНЏА НЕНАД
+ТРИВУНИЋ БОГОЉУБ
+ТРИВУНИЋ МИРОСЛАВ
+ТРИВУНИЋ РАНКО
+ТРИВУНОВИЋ МЛАДЕНКО
+ТРИВУНОВИЋ СИМО
+ТРИВУНОВИЋ ТИХОМИР
+ТРИЗЛИЋ СЛАВКО
+ТРКЉА ГОЈКО
+ТРКЉА МИРКО
+ТРКУЉА ЖИВОРАД
+ТРКУЉА АНА
+ТРКУЉА БОШКО
+ТРКУЉА БОРИСЛАВ
+ТРКУЉА БРАНКО
+ТРКУЉА ДРАГАН
+ТРКУЉА ДРАГАН
+ТРКУЉА ЕСТЕР
+ТРКУЉА ГОЈКО
+ТРКУЉА ГРОЗДА
+ТРКУЉА ЈОВАН
+ТРКУЉА ЈУЛКА
+ТРКУЉА МАРИНКО
+ТРКУЉА МИЛАН
+ТРКУЉА МИЛОРАД
+ТРКУЉА МИОДРАГ
+ТРКУЉА МИОДРАГ
+ТРКУЉА НЕДЕЉКО
+ТРКУЉА НИКОЛА
+ТРКУЉА НОВАК
+ТРКУЉА НОВАК
+ТРКУЉА ПЕТАР
+ТРКУЉА РАНКО
+ТРКУЉА СЛАВКО
+ТРКУЉА СОФИЈА
+ТРКУЉА СОЊА
+ТРКУЉА СТЕВАН
+ТРКУЉА СТОЈАНКА
+ТРКУЉА ВЛАДИСЛАВА
+ТРМЧИЋ РАДОСЛАВ
+ТРНЧИЋ ЛАЗО
+ТРНАВАЦ МИЛАН
+ТРНИЋ РАДМИЛА
+ТРНИЋ ВЕРА
+ТРНИНИЋ ЖИВАН
+ТРНИНИЋ ЖИВОЈИН
+ТРНИНИЋ ЂОРЂЕ
+ТРНИНИЋ ЂУРА
+ТРНИНИЋ БОГДАН
+ТРНИНИЋ БОЈА
+ТРНИНИЋ БОРИВОЈ
+ТРНИНИЋ БОСИЉКА
+ТРНИНИЋ ДОБРИВОЈ
+ТРНИНИЋ ДРАГАН
+ТРНИНИЋ ДРАГАН
+ТРНИНИЋ ДУШАН
+ТРНИНИЋ МАРА
+ТРНИНИЋ МАРИЈА
+ТРНИНИЋ МИРКО
+ТРНИНИЋ МИРКО
+ТРНИНИЋ МИРОСЛАВ
+ТРНИНИЋ МОМЧИЛО
+ТРНИНИЋ ОЛИВЕРА
+ТРНИНИЋ РАДИВОЈ
+ТРНИНИЋ РАДОЈКА
+ТРНИНИЋ РАДОВАН
+ТРНИНИЋ СТЕВА
+ТРНИНИЋ ВЛАДИМИР
+ТРЊАКОВ ДУШАН
+ТРНОВАЦ НАДА
+ТРОЧА КОРНЕЛ
+ТРОШЕЉАЦ МАТО
+ТРОШКИН САВЕТА
+ТРОШКИН ТАМАРА
+ТРОЈАНОВ ЕДВАРД
+ТРОЈАНОВ МАРИЈА
+ТРОЈАНОВ РОМАН
+ТРОЈКОВИЋ ИЛОНА
+ТРОМЛЕР ЛАСЛО
+ТРПЧЕВИЋ МИРОСЛАВ
+ТРПЧЕВСКИ ТОМЧЕ
+ТРПИНАЦ ЈЕЛЕНА
+ТРПКА ПАВЛЕ
+ТРПКА ПАВЛЕ
+ТРПОВСКИ ВАСИЉ
+ТРСТЕЊАК ФРАЊА
+ТРТИЋ СЛАВКО
+ТРУШНОВЕЦ ИВАН
+ТРУБАРАЦ ГАБРИЈЕЛА
+ТРУДА АЛИЈА
+ТРУДИЋ ИВАН
+ТРУЈИЋ ДУШИЦА
+ТРУЈИЋ МИЛОШ ВЕТЕРИНАР
+ТРУМБИЋ ВЕДРАН
+ТРУМИЋ СОФИЈА
+ТРУМИЋ ВЕРА
+ТУЧЕВ ЖИВАНКА
+ТУШЕВ ЖИВКО
+ТУШЈАК ЈАН
+ТУШЈАК ЈУРАЈ
+ТУШЈАК МИЛОШ
+ТУШНЕК ОТИЛИЈА
+ТУШЊАК АНА
+ТУБИЋ ЖИВАН
+ТУБИЋ АЛЕКСАНДАР
+ТУБИЋ БРАНИСЛАВ
+ТУБИЋ ДРАГУТИН
+ТУБИЋ ДУШАН
+ТУБИЋ ДУШАН
+ТУБИЋ ЈУГОСЛАВ
+ТУБИЋ ЛЕПОСАВА
+ТУБИЋ МИЛАН
+ТУБИЋ МИЛЕНКО
+ТУБИЋ МИЛИВОЈ
+ТУБИЋ МИЛОШ
+ТУБИЋ МИЛОЈКО
+ТУБИЋ МИЛОРАД
+ТУБИЋ НИКОЛА
+ТУБИЋ НОВАК
+ТУБИЋ ОЛГА
+ТУБИЋ ПЕТАР
+ТУБИЋ РАДА
+ТУБИЋ РАДМИЛА
+ТУБИЋ РАДОВАН
+ТУБИЋ САВА
+ТУБИЋ СТАНКО
+ТУБИЋ СВЕТОЗАР ДР
+ТУБИЋ ВЕРА
+ТУБИЋ ВЛАДИМИР
+ТУБИЋ ЗОРАН
+ТУБИН КАТАРИНА
+ТУБИН СТОЈАН ДИПЛ ИНГ
+ТУБИН СТОЈА
+ТУБИН ТОМИСЛАВ
+ТУБИН ЗОРКА
+ТУЦАКОВ ЂОРЂЕ
+ТУЦАКОВ ЂОРЂЕ
+ТУЦАКОВ БОШКО
+ТУЦАКОВ БОГДАНКА
+ТУЦАКОВ БОРА
+ТУЦАКОВ БРАНКО
+ТУЦАКОВ ДАРИНКА
+ТУЦАКОВ ДРАГАН
+ТУЦАКОВ КАМЕНКО
+ТУЦАКОВ ЛАТИНКА
+ТУЦАКОВ МАРИЈА
+ТУЦАКОВ МАРКО
+ТУЦАКОВ МИЛАН
+ТУЦАКОВ МИЛАН
+ТУЦАКОВ МИЛИЦА
+ТУЦАКОВ НОВАК
+ТУЦАКОВ РАДИВОЈ
+ТУЦАКОВ РАДОЈКА
+ТУЦАКОВ РАДОСЛАВ
+ТУЦАКОВ РАЈКО
+ТУЦАКОВ СИНИША
+ТУЦАКОВ ТАНАСИЈЕ
+ТУЦАКОВ ВЕРА
+ТУЦАКОВ ВЛАДИМИР
+ТУЦАКОВ ЗОРАНА
+ТУЦАКОВ ЗОРА
+ТУЦАКОВИЋ ЂОРЂЕ
+ТУЦАКОВИЋ ДАНИЦА
+ТУЦАКОВИЋ ДЕСАНКА
+ТУЦАКОВИЋ ЈОВАН
+ТУЦАКОВИЋ МИЛОШ
+ТУЦАКОВИЋ РАДОСЛАВ
+ТУЦИЋ ЂОРЂЕ
+ТУЦИЋ БРАНИСЛАВ
+ТУЦИЋ ЛАЗАР
+ТУЦИЋ МИЛЕНКО
+ТУЦИЋ МИРОСЛАВА
+ТУЦИЋ МИРОСЛАВ
+ТУЦИЋ ВУЈИЦА
+ТУЦОВИЋ ЗОРА
+ТУФЕГЏИЋ МИЛЕН
+ТУКАЧ МИХАЈЛО
+ТУКАНИЋ ЕНДРЕ
+ТУКАНИЋ ИРЕНА
+ТУКАР ФАДИЛ
+ТУКАР МИРЈАНА
+ТУКИЋ ПЕТАР
+ТУКИЋ СТОЈАНКА
+ТУЛАЋ ЈОВИЦА
+ТУЛЕНЧИЋ КАТИЦА
+ТУЛЕНЧИЋ РАДОСЛАВА
+ТУЛЕНЧИЋ РАДОСЛАВ
+ТУЛИЋ БОРКО
+ТУЛИЋ НЕВЕНКО
+ТУЛУБЕЦ ЂОРЂЕ
+ТУЛУБЕЦ МИЛКА
+ТУЛУБЕЦ ВАСИЛИЈЕ
+ТУМАРИЋ БРАНИСЛАВ
+ТУМАРИЋ ЦВЕТИН
+ТУМАРИЋ МИЛОРАД
+ТУМБАС АГНЕЗА
+ТУМБАС ИВАН
+ТУМБАС ЉУДЕВИТ
+ТУМИН ДУШАНКА
+ТУНГУЗ ЈЕЛИСАВЕТА
+ТУНИЋ РАДОЈИЦА
+ТУНИЋ РАЈКО
+ТУНИЋ СПАСОЈЕ
+ТУНИЋ СТЕВАН
+ТУНТЕВ МАРИЈА
+ТУПАНЧЕВСКИ НИКОЛА
+ТУПЕЦ ЗВОНИМИР
+ТУПИЋ НЕВЕНКА
+ТУР МИХАЈЛО
+ТУР СУЗАНА
+ТУРЧАН ЈАН
+ТУРЧАН ЈАН
+ТУРЧАН ЈУРАЈ
+ТУРЧАН ВЛАДИМИР СУДИЈА
+ТУРЧИЋ МИРОСЛАВА
+ТУРШИЋ ЈЕЛЕНА
+ТУРШИЈАН ВАСА
+ТУРАИ БЕЛА
+ТУРАИ МИХАЈЛО
+ТУРАИ ТЕРЕЗА
+ТУРАЈЛИЋ МИЛЕ
+ТУРАЈЛИЈА БОЖИЦА
+ТУРАЈЛИЈА МИРОСЛАВ
+ТУРАН ЂУРА
+ТУРАН ЉУБИЦА
+ТУРАНСКИ ЂОРЂЕ
+ТУРАНСКИ ФЕРЕНЦ
+ТУРАНСКИ ГЕЗА
+ТУРАНСКИ ЈАНОШ
+ТУРАНСКИ ЈОСИП
+ТУРАНСКИ ЛАСЛО
+ТУРАНСКИ МАРИЦА
+ТУРАНСКИ МАРИЈА
+ТУРАНСКИ МАТИЈА
+ТУРАНСКИ ПЕТАР
+ТУРАНСКИ СТЕВАН
+ТУРИ АРПАД
+ТУРИ ТИБОР
+ТУРИЋ ЛУКА
+ТУРИЋ МАРИНКО
+ТУРИКА ЈОСИМ
+ТУРИНСКИ ДУШАН
+ТУРИНСКИ ЕДИТА
+ТУРИНСКИ МИЛЕТА
+ТУРИНСКИ МИОМИР
+ТУРК МИРКО
+ТУРК НАДА
+ТУРКАЉ КАТА
+ТУРКОВИЋ ХАКИЈА
+ТУРКОВИЋ МИРКО
+ТУРКОВИЋ МИТАР
+ТУРКОВИЋ ПЕТАР
+ТУРКОВИЋ РАФИТ
+ТУРКОВИЋ ВЛАДИМИР
+ТУРКОВИЋ ЗИНКА
+ТУРКУЛОВ ЖАКЛИНА
+ТУРКУЛОВ ДУШАН
+ТУРКУЛОВ ЈОВАН
+ТУРЛАКОВ ЦВЕТАН
+ТУРНАЈ СЛАВОЉУБ ДИПЛ ИНГ
+ТУРО МИХАЉ
+ТУРОМАН МИЛОРАД
+ТУРОПОЉАЦ МИЋО
+ТУРУДИЋ МИЛАН
+ТУРУДИЋ МИОДРАГ
+ТУРУДИЈА МИЛОРАД
+ТУРУКАЛО МИОДРАГ
+ТУРУКАЛО РАДМИЛА
+ТУРУКАЛО ЗОРА
+ТУРЗО ЈЕЛИСАВЕТА
+ТУРЗО КАРЛО
+ТУТИЋ ИЛИЈА
+ТУТНИЛОВИЋ НАДА
+ТУТЊЕВИЋ БОЖЕНКА
+ТУТЊЕВИЋ БОГДАН
+ТУТЊЕВИЋ ЈОВАН
+ТУТЊЕВИЋ МИРОСЛАВ
+ТУТЊЕВИЋ РАДОЈКА
+ТУТОРОВ ДЕСАНЧИЋ
+ТУТОРОВ ЈУЛКИЦА
+ТУТОРОВ СТАНА
+ТУТОРОВ СТЕВАН
+ТУТУЛУГЏИЈА МАРА
+ТУВЕЏИЋ ДРАГАНА
+ТУВИЋ СЛОБОДАН
+ТВРТКОВИЋ МАРИН ДР ЛЕКАР
+УШЋЕБРКА ЛАЗАР
+УШЋЕБРКА МИЛЕНКО
+УШЋЕБРКА ЗЛАТО
+УШЋУМЛИЋ МИЛЕНКО
+УШЋУМЛИЋ НЕШКО
+УШЋУМЛИЋ ВУКИЦА
+УШАН ЈАНЕЗ
+УШЈАК ЈАНКО
+УШЈАК ЈАРМИЛА
+УШЈАК ВЛАСТА
+УШЉЕБРКА МИЛОРАД
+УШТИПАК ЈЕЛА
+УЋУКАЛО СИМО
+УЖАР ДЕСАНКА
+УЖАР КАТИЦА
+УЖИЧАНИН ЂОРЂЕ
+УБАВЧИЋ САВА
+УБАВИЋ ДАРИНКА
+УБАВИЋ ЉУБИЦА
+УБАВИЋ МОМЧИЛО ДР
+УБИПАРИП ЧЕДО
+УБИПАРИП ЖИВКО
+УБИПАРИП ГОЈКО
+УБИПАРИП ИЛЕ
+УБИПАРИП ЈАЊА
+УБИПАРИП ЈОВО
+УБИПАРИП МАРИНКО
+УБИПАРИП МАРКО
+УБИПАРИП МИЛАН
+УБИПАРИП МИРКО
+УБИПАРИП МОМИР
+УБИПАРИП ПАВЛЕ
+УБИПАРИП СЛАВКО
+УБИПАРИП ТОДЕ
+УБИПАРИП ВОЈКО
+УБИПАРИП ЗДРАВКО
+УБИПАРИП ЗОРАН
+УБОРКА ШАНДОР
+УБОРКА МАРТОН
+УБОРКА СТЕВКА
+УБОРЊИ ШАНДОР
+УБОРЊИ АНДРАШ
+УБОВИЋ ЕВА
+УБОВИЋ ЈЕФТА
+УБОВИЋ ЈОВИЦА
+УБОВИЋ МАРКО
+УБОВИЋ МИЛОШ
+УБОВИЋ ПЕТРА
+УБОВИЋ РАЈКО
+УЦАЈ ВЛАДИМИР
+УДИЦКИ ПАЈА
+УДИЦКИ СЛАВИЦА
+УДИЦКИ СРЕДОЈЕ
+УДОВИЧИЋ БОБАН
+УДОВИЧИЋ БРАНКО
+УДОВИЧИЋ ИВАН
+УДОВИЧИЋ МОМИР
+УДОВИЧИЋ РАДОСЛАВ
+УДОВИЧИЋ СТЕВАН
+УДОВИЧКИ БРАНКО ЛЕКАР
+УДОВИЧКИ ЈУЛКА
+УДОВИЧКИ ОЛГИЦА ДР
+УДОВИЧКИ СЛОБОДАН
+УДОВИЧКИ СВЕТОЗАР
+УДРИЈА ПЕТАР
+УДВАРДИ КАРЛО
+УГАРЧИНА БОРИСЛАВ
+УГАРЧИНА ДРАГАН
+УГАРЧИНА ИЛИЈА
+УГАРАК ЂОРЂЕ
+УГАРАК БОЖО
+УГАРАК ДРАГАН
+УГАРАК ДУШАН
+УГАРАК ПЕТАР
+УГАРКОВИЋ ДАРИНКА
+УГАРКОВИЋ ЈЕЛА
+УГАРКОВИЋ КАТИЦА
+УГАРКОВИЋ СТЕВАН
+УГЉЕШИЋ БОШКО
+УГЉЕШИЋ ХИЛДА
+УГРЧИЋ ВУКИЦА
+УГРЕШИЋ ПЕТАР
+УГРЕМ МАРИЈА
+УГРЕМ РАДОВАН
+УГРЕН МИЛОРАД
+УГРЕН ПЕТАР
+УГРЕНИЋ ЛАСЛО
+УГРЕНИЋ МИХАЉ
+УГРЕНОВИЋ ВУЧИЋ
+УГРЕНОВИЋ ВУЈАДИН
+УГРИЦА ДРАГАН
+УГРИЦА СРЕЋКО
+УГРИН ИЛИЈА
+УГРИН МИЛОВАН
+УГРИНЧИЋ ДАНИЛКА
+УГРИНЧИЋ ДОБРИЛА
+УГРИНЧИЋ МИЛИВОЈ
+УГРИНЧИЋ МИРЈАНА ДР
+УГРИНЧИЋ СТЕВАН
+УГРИНЧИЋ ВЛАДА ДИПЛ ИНГ
+УГРИНОВ ЂУРИЦА
+УГРИНОВ ДОБРИЛА
+УГРИНОВ МИЛИЦА
+УГРИНОВ НАДА
+УГРНОВ ВЛАДИМИР
+УГРНОВ ЗОРИЦА
+УХЕР ВЕРА
+УХЛАРИК ЕЛИЗАБЕТА
+УХЛАРИК ЛАДИСЛАВ
+УХЛАРИК СТЕВАН
+УХОР ПЕТАР
+УЈ МАРТОН
+УЈЧИЋ БЛАЖ
+УЈЧИЋ ТОМА
+УЈДИЛОВИЋ МИЛОРАД
+УЈФАЛУШ ВЕЛИМИР
+УЈФАЛУШИ ЂУРА
+УЈФАЛУШИ ЈАНКО
+УЈФАЛУШИ ЈУЛИЈАН
+УЈФАЛУШИ ЉУБОМИР
+УЈФАЛУШИ МИРОСЛАВ
+УЈФАЛУШИ НИКОЛА
+УЈФАЛУШИ СИЛВЕСТЕР
+УЈФАЛУШИ ВЛАДИМИР
+УЈФЕЉАН МИЛАН
+УЈХАЗИ БОРИШКА
+УЈХАЗИ ИВАН
+УЈХАЗИ ЈЕЛИСАВЕТА
+УЈХАЗИ ЛАДИСЛАВ
+УЈХАЗИ МИРКО
+УЈХЕЉИ ЈОВАНКА
+УЈХЕЉИ МИХАЉ
+УЈЛАКОШ КАРЛО
+УЈВАРИ ГАБОР
+УЈВАРИ КАТАЛИН
+УКАЧЕК ВЕРКА
+УКРОПИНА ЧЕДА
+УКРОПИНА ДЕСАНКА
+УКРОПИНА ЈЕЛЕНА
+УКРОПИНА ЈОВАНКА
+УКРОПИНА ЈОВАН
+УКРОПИНА МИЛОВАН
+УКРОПИНА НЕБОЈША
+УКРОПИНА ПАНТО
+УКРОПИНА ТОМИСЛАВ
+УЛЕМЕК ЂУРО
+УЛИЋ ЖЕЉКА
+УЛИЋ ЂОРЂЕ
+УЛИЋ АЛЕКСАНДАР
+УЛИЋ ДОБРОСЛАВ
+УЛИЋ МИЛАН
+УЉАРЕВИЋ ПЕРО
+УМЕК МАРГИТА
+УМЕК МИКЛОШ
+УМИЧЕВИЋ ПЕРА
+УМИЋЕВИЋ ЖЕЉКО
+УМИЋЕВИЋ ГОРДАНА
+УМИЋЕВИЋ МИРКО
+УМИЋЕВИЋ МЛАДЕН
+УНЧАНИН БОЈАН
+УНЧАНИН ДУШАН
+УНГАР ТИХОМИР
+УНГУРОВИЋ ЈЕЛЕНА
+УНКОВИЋ АНЂЕЛКО
+УНКОВИЋ МЛАДЕН
+УРАЧ ШАНДОР
+УРАЧ АЛЕКСАНДАР
+УРАЧ ДАНИЦА
+УРАЧ ГИЗЕЛА
+УРАЧ ИШТВАН
+УРАЧ РОЗАЛИЈА
+УРБАН ЂЕРЂ
+УРБАН ЂОРЂЕ
+УРБАН АНА
+УРБАН ХОРВАТ
+УРБАН ИШТВАН
+УРБАН ЈАНОШ
+УРБАН ЈАСНА
+УРБАН МИХАЉ
+УРБАН МИХАЉ
+УРБАН ПАВЕЛ
+УРБАН СТАНИСЛАВ
+УРБАН СТЕВАН
+УРБАН ВИКТОРИЈА
+УРБАН ВЛАДИСЛАВ
+УРБАНЧИК ПИРОШКА
+УРБАНЧИК СИЛВИА
+УРБАНОВИЋ СТЕВАН
+УРДАРЕВИЋ СТАНИМИР
+УРЕКЕ ЂОРЂЕ
+УРИ ЧАБА
+УРИ АЛЕКСАНДАР
+УРИ ЕВА
+УРИ ГАБОР
+УРИ КАРЛО
+УРИ ЛАСЛО
+УРИ ПАЈА
+УРИ СТЕВАН
+УРИ СТЕВАН
+УРКИН ЉУБИЦА
+УРЛИХ МАРИЈА
+УРОШЕВ ЖИВАН
+УРОШЕВ БОЈКА
+УРОШЕВ ИЛИЈА
+УРОШЕВ ЈЕРИЦА
+УРОШЕВ МИЛЕНКО
+УРОШЕВ МИРЈАНА
+УРОШЕВ ПАЈА
+УРОШЕВ СОФИЈА
+УРОШЕВ СТОЈАН
+УРОШЕВ ВЕЛИНКА
+УРОШЕВИЋ ЖИВАН
+УРОШЕВИЋ АЛЕКСАНДАР
+УРОШЕВИЋ БОГДАН ДИПЛ ИНГ
+УРОШЕВИЋ БОРИВОЈ
+УРОШЕВИЋ БРАНКА
+УРОШЕВИЋ БРАНКО
+УРОШЕВИЋ ДРАГИША
+УРОШЕВИЋ ДУШАН
+УРОШЕВИЋ ИВАН
+УРОШЕВИЋ ЛЕОНА
+УРОШЕВИЋ ЉИЉАНА
+УРОШЕВИЋ ЉУБИЦА
+УРОШЕВИЋ МАРКА
+УРОШЕВИЋ МИЛОШ
+УРОШЕВИЋ МИРЈАНА
+УРОШЕВИЋ НАДА
+УРОШЕВИЋ РУЖИЦА
+УРОШЕВИЋ СРЂА
+УРОШЕВИЋ СТАНИСЛАВА
+УРОШЕВИЋ ВИДОЈКО
+УРОШЕВИЋ ВЛАДИМИР
+УРОШЕВИЋ ЗОРИЦА
+УРСИЋ ВЛАДИМИР
+УРСУЛЕСКУ ФЛОРИН
+УРСУЛЕСКУ ЈУЛИЈАН
+УСКОКОВИЋ БРАНИСЛАВ
+УСКОКОВИЋ МИЛЕНКО
+УСКОКОВИЋ МИЛОШ
+УСТИЋ ЂУРА
+УСТИЋ НИКОЛА
+УСТИЋ СИМА
+УСТИЋ ВОЈКО
+УТАШИ ЧАБА
+УТЈЕШАНОВИЋ СИМО
+УТЈЕШИНОВИЋ ДЕСАНКА
+УТЈЕШИНОВИЋ ЉИЉАНА
+УТЈЕШИНОВИЋ МИЛАН
+УТЈЕШИНОВИЋ ВЕРА
+УТОРНИК ИВАН
+УТОРНИК ЈОВАН
+УТОРНИК КАТИЦА
+УТОРНИК ЉУБИЦА
+УТОРНИК МИЛОШ
+УТОРНИК-РАДУЛОВИЋ МАРИЈА
+УТОРНИК СТЕВАН
+УТОРНИК СВЕТОЗАР
+УТРЖАН БРАНКО
+УТВИЋ КОСТА
+УТВИЋ ПАВЛЕ
+УТВИЋ ВАСА
+УТВИЋ-ВУКАШИНОВИЋ ДАРА
+УВАЛИЋ АНГЕЛИНА
+УВАЛИЋ ДУШАНКА
+УВАЛИЋ ДУШАН
+УВАЛИЋ ДУШКО
+УВАЛИЋ ЛАЗАР
+УВАЛИЋ МЕЛАНИЈА
+УВАЛИЋ РАДОСЛАВ
+УВАЛИЋ СТАНИСЛАВ
+УВАЛИЋ ВАСА
+УВЕРИЋ ЂУРА
+УВЕРИЋ БРАНКА
+УВЕРИЋ МИЛАН
+УВЕРИЋ МИЛОШ
+УВЕРИЋ МИЛОРАД
+УВЕРИЋ МИРЈАНА
+УВЕРИЋ НИКОЛА
+УЗАИР АЛИЈА
+УЗЕИРИ МУАРЕМ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂУРИЦА
+УЗЕЛАЦ ЂУРО
+УЗЕЛАЦ АЛЕКСАНДРА
+УЗЕЛАЦ АЛЕКСА
+УЗЕЛАЦ БИСЕРКА
+УЗЕЛАЦ БОШКО
+УЗЕЛАЦ БОГДАН
+УЗЕЛАЦ БОГДАН
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНКО
+УЗЕЛАЦ ЦВЕТА
+УЗЕЛАЦ ДАРИНКА
+УЗЕЛАЦ ДЕСАНКА
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДУШАНКА
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ЕВА
+УЗЕЛАЦ ГАЛИНА
+УЗЕЛАЦ ГОРДАНА
+УЗЕЛАЦ ИЛИЈА
+УЗЕЛАЦ ИВАН
+УЗЕЛАЦ ЈЕЛЕНА
+УЗЕЛАЦ КОСТА
+УЗЕЛАЦ ЛАЗАР
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МИХАЈЛО
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛЕ
+УЗЕЛАЦ МИЛИЦА
+УЗЕЛАЦ МИЛОШ
+УЗЕЛАЦ МОМЧИЛО
+УЗЕЛАЦ НИКОЛА
+УЗЕЛАЦ НИКОЛА
+УЗЕЛАЦ ОЛИВЕРА
+УЗЕЛАЦ РАДМИЛА
+УЗЕЛАЦ РАДОЈКА
+УЗЕЛАЦ РЕНАТА
+УЗЕЛАЦ СЛАВКО
+УЗЕЛАЦ СЛОБОДАН
+УЗЕЛАЦ СЛОБОДАН
+УЗЕЛАЦ СОФИЈА
+УЗЕЛАЦ СРЂАН
+УЗЕЛАЦ СРЂАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТОЈАН
+УЗЕЛАЦ ВЕРА
+УЗЕЛАЦ ВУЈО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗОРОЦКИ ИШТВАН
+УЗУНОВИЋ БРАНИСЛАВ
+УЗУНОВИЋ ЛАДИСЛАВ
+УЗУНОВИЋ МИЛОРАД
+УЗУНОВИЋ МИТО
+УЗУНОВИЋ НАСУФ
+УЗУНОВИЋ РАЈКО
+УЗУРОВ ОБРЕНИЈА
+УЗУРОВ РАДМИЛА
+ВАЧИЋ АЛЕКСАНДАР
+ВАЧИЋ ЗОРАН
+ВАЧИК ЈОЖЕФ
+ВАШ АТИЛА
+ВАШ ЈОСИП
+ВАШ ПАВЛЕ
+ВАШ ВЕРА
+ВАШЧИЋ БОЖИДАР
+ВАШАШ МИКЛОШ
+ВАШАШ ОЛГА
+ВАШАДИ ФЕРЕНЦ
+ВАШАДИ ЈУЛИЈАНА
+ВАШАДИ ВАЛЕРИЈА
+ВАШАЛИЋ АНКА
+ВАШАЛИЋ МИЛОШ
+ВАШАЛИЋ ОБРАД
+ВАШАЛИЋ УРОШ
+ВАШТАГ ЂОРЂЕ
+ВАШТАГ АНДРАШ
+ВАШТАГ ИШТВАН
+ВАШТАГ ИШТВАН
+ВАШТАГ ЈАСМИНКА
+ВАШТАГ МАРГИТА
+ВАШТАГ МАРИЈА
+ВАШТАГ МИХАЉ
+ВАШТАГ ОЛГА
+ВАШТАГ РУЖА
+ВАШТАГ СТОЈАН
+ВАЖИЋ ДАНИЦА
+ВАЖИЋ ЈОВАН
+ВАЖИЋ ЈУЛИЈА
+ВАЖИЋ МИРА
+ВАЖИЋ СЛАВИЦА
+ВАЖИЋ ВЕРИЦА
+ВАЖИЋ ВЕСЕЛИН
+ВАЖИЋ ВЛАДИМИР
+ВАЖОЊИ АНТАЛ
+ВАЖОЊИ РОЗАЛИЈА
+ВАЦИ ШИМОН
+ВАЦИЋ БЛАГОЈЕ
+ВАЦИЋ ВИДЕН
+ВАЦЛАВИК МАРИЈА
+ВАДАСКИ ЦЕЦИЛИЈА
+ВАДАСКИ ЉУБОМИР
+ВАДОЦ ФРАЊА
+ВАДОЦ ИВИЦА
+ВАДОЦ ЈОСИП
+ВАГИЋ ЂУРО
+ВАГНЕР ЂУРА
+ВАГНЕР АНДРИЈА
+ВАГНЕР ЈОСИП
+ВАГНЕР КАРЛО
+ВАГНЕР ЛАСЛО
+ВАГНЕР МАРИЈА
+ВАГНЕР ОТИЛИЈА
+ВАГО ИШТВАН
+ВАГО СТЕВАН
+ВАГУРИЋ ЗДРАВКО
+ВАЈАГИЋ АНЂЕЛКА
+ВАЈАГИЋ БОШКО
+ВАЈАГИЋ ГОРДАНА
+ВАЈАГИЋ МИЛАН
+ВАЈАГИЋ НИКОЛА ДР
+ВАЈАГИЋ НИКОЛА
+ВАЈАГИЋ САВО
+ВАЈАГИЋ СИМА
+ВАЈАГИЋ СТОЈАН
+ВАЈАГИЋ ЗОРИЦА
+ВАЈДА ШАНДОР
+ВАЈДА ШАНДОР
+ВАЈДА ИРМА
+ВАЈДА ЛАЈОШ
+ВАЈДА ЛАЈОШ
+ВАЈДА ТИБОР
+ВАЈДА ТОМИСЛАВ
+ВАЈДИЋ ЖИВКО
+ВАЈДИЋ ИВАН
+ВАЈДИЋ ЈОВАН ДР
+ВАЈДИЋ ЈОВАН ДР
+ВАЈДИЋ МИЛИЦА
+ВАЈДИЋ МИЛИЦА
+ВАЈДИЋ НАДА
+ВАЈДИЋ ПЕТАР
+ВАЈДИЋ ТИХОМИР
+ВАЈДЛ ЈОВАН
+ВАЈДЛ МИРОСЛАВ
+ВАЈДЛЕ ЈОЛАН
+ВАЈЛЕР АНДРИЈА
+ВАЈНШТАЈН ПЕТАР
+ВАЈНБЕРГЕР ВЛАДИМИР
+ВАЈНБЕРГЕР ЗЛАТКО
+ВАЈНБЕРГЕР ЗВОНИМИР
+ВАЈНГЕРТНЕР РАДОЈКА ДИПЛ ЕЦЦ
+ВАЈНХЕПЛ МАРИА
+ВАЈНХЕПЛ ОТМАР ДИПЛ ИНГ
+ВАЈОВИЋ ВАСИЛИЈЕ
+ВАЈС ШАНДОР
+ВАЈС БРАНКО
+ВАЈС КАРЛО
+ВАЈС КАРЛО
+ВАЈС МАГДА
+ВАЈС ВЕРИЦА
+ВАЈСЕНБЕРГ ЈОСИП
+ВАЈУКИЋ ПАНТЕЛИЈА
+ВАКАЊАЦ МИЛИЦА
+ВАЛ ЂОРЂЕ
+ВАЛ АНДРИЈА
+ВАЛ ЕВА
+ВАЛ ЗОЛТАН
+ВАЛАХ ЈАНКО
+ВАЛАН ОСТОЈА
+ВАЛАН ЗОРАН
+ВАЛДМА АРБО
+ВАЛЕК ЕМИЛИЈА
+ВАЛЕК ФРАЊА
+ВАЛЕНЧИК ПАВЕЛ
+ВАЛЕНЧИК СТЕВАН
+ВАЛЕНЋИК АНДРИЈА
+ВАЛЕНЋИК ЈАН
+ВАЛЕНЋИК ПАВЛЕ
+ВАЛЕНЋИК ВЛАДИМИР
+ВАЛЕНТ ЖУЖАНА
+ВАЛЕНТ ЈАНКО
+ВАЛЕНТ ЈАНКО
+ВАЛЕНТ ЛАСЛО
+ВАЛЕНТА ЈАСМИНКА
+ВАЛЕНТЕЊИ ЈОСИП
+ВАЛЕНТЕЊИ ЈУЛИЈАНА
+ВАЛЕНТИЋ ИВАН
+ВАЛЕНТИЋ ВИКТОР
+ВАЛЕНТИЋ ВИКТОР
+ВАЛЕНТИК НИКОЛА
+ВАЛЕНТИН ИМРЕ
+ВАЛЕНТИН ЈУЦИКА
+ВАЛЕНТИН СТЕВАН
+ВАЛЕНТИРОВ СТЕВАН
+ВАЛЕНТИРОВИЋ ЉУБОМИР
+ВАЛЕНТОВИЋ ЈОСИП
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ ТИБОР
+ВАЛИЋ ГОРАН
+ВАЛИЋ СЛАВКО
+ВАЛИЏИЈА НИКОЛА ДИПЛ ИНГ
+ВАЛИХОРА ЈОЗЕФ
+ВАЛИХОРА КАТИЦА
+ВАЛКАИ ЈОЖЕФ
+ВАЛКО ГАВРА
+ВАЛО ГОРДАНА
+ВАЛО ЈОСИП
+ВАЛО ЈОСИП
+ВАЛО МИРКО
+ВАЛО СТЕВАН
+ВАЛОК ЂОРЂЕ
+ВАЛОК ЂУРА
+ВАЛОК РАТОМИР
+ВАЛТЕР ДРАГИЊА
+ВАЛТЕР ЉИЉАНА
+ВАЛТЕР НОРБЕРТ
+ВАЛТНЕР ПЕТАР
+ВАЛУШЕК ЈОВАН
+ВАЛУШЕК КАТИЦА
+ВАЛУШЕК ПАВЛЕ
+ВАЛУХ БРАНИСЛАВ
+ВАЛУХ ЈАНКО
+ВАЛУХ ЈАНКО
+ВАЛУХ КАРЛО
+ВАЛУХ МИХАЈЛО
+ВАМБАХ ВИКТОРИЈА
+ВАМОШЕР МИРЈАНА
+ВАМОШЕР ПАВЛЕ
+ВАМПОВАЦ ЈОСИП
+ВАНЂЕЛ МИЛАН
+ВАНДЕРЕР ПАЛ
+ВАНДОРИ МАРИЈА
+ВАНИЋ ДРАГУТИН
+ВАНИЋ КАТИЦА
+ВАНИЋ ЉУБИЦА
+ВАЊУР ФРАЊА
+ВАЊУР ФРАЊА
+ВАЊУР ИШТВАН ДИПЛ ИНГ
+ВАЊУР ЈОЖЕФ
+ВАЊУР ЈОСИП
+ВАЊУР КАРЛО
+ВАЊУР КАРЛО
+ВАЊУР МАРИЈА
+ВАНКО ЈАРОСЛАВ
+ВАНОВИЋ СНЕЖАНА
+ВАПА ЈОВАНКА
+ВАПА МИЛАН ДР
+ВАПА ВЕРА
+ВАПА ЗОРАН
+ВАПЕНСКИ ИВАН
+ВАПЕНСКИ МАРИЈА
+ВАРШАЊИ ИРЕНА
+ВАРАЂАНИН МИЛАН
+ВАРАДИ ТИБОР ДР ПРОФ
+ВАРАГИЋ БОГДАН
+ВАРАГИЋ ЉУБИЦА
+ВАРАГИЋ МАРИЈА
+ВАРАГИЋ МЕЛАНИЈА
+ВАРАГИЋ МИЛИЦА
+ВАРАГИЋ ВИЋЕНТИЈЕ
+ВАРАЈИЋ ГОРАН
+ВАРАЈИЋ ГОРАН
+ВАРАВА ЕМИЛИЈАН
+ВАРБАИ ЛАДИСЛАВ
+ВАРЦАР ДЕСАНКА
+ВАРДИЋ ГАВРИЛО
+ВАРЕНИКА ЂОКА
+ВАРЕНИКА БРАНИСЛАВ
+ВАРЕНИКА РАДОЈКА
+ВАРЕВАЦ ДРАГАН
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА-ШОМОЂИ ЈАНОШ
+ВАРГА ЖАРКО
+ВАРГА ЂЕРЂ
+ВАРГА ЂОРЂЕ
+ВАРГА ЂОРЂЕ
+ВАРГА ЂУЛА
+ВАРГА ЂУРА
+ВАРГА ЂУРА
+ВАРГА АЛЕКСАНДАР
+ВАРГА АНА
+ВАРГА АНДРАШ
+ВАРГА АНДРИЈА
+ВАРГА АНДРИЈА
+ВАРГА АНТОН
+ВАРГА АРАНКА
+ВАРГА БЕЛА
+ВАРГА БЕЛА
+ВАРГА БИЉАНА
+ВАРГА-БУРАИ ЕРЖЕБЕТ
+ВАРГА ДРАГИЦА
+ВАРГА ДУШАНКА
+ВАРГА ЕРЖИКА
+ВАРГА ФЕРЕНЦ
+ВАРГА ФЕРЕНЦ
+ВАРГА ФЕРЕНЦ
+ВАРГА ФРАЊА
+ВАРГА ФРАЊА
+ВАРГА ФРАЊО
+ВАРГА ФРАЊО
+ВАРГА ГАБОР
+ВАРГА ГИЗЕЛА
+ВАРГА ХЕЛЕНА
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИЛЕШ
+ВАРГА ИМРЕ
+ВАРГА-ИВАН АНГЕЛИНА
+ВАРГА ЈАКИМ
+ВАРГА ЈАН ДР
+ВАРГА ЈАНОШ
+ВАРГА ЈАНОШ
+ВАРГА ЈАРОСЛАВ
+ВАРГА ЈЕЛЕНА
+ВАРГА ЈЕЛИСАВЕТА
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОСИПА
+ВАРГА ЈОСИП
+ВАРГА ЈОСИП
+ВАРГА ЈОВАН
+ВАРГА ЈУЛИЈА
+ВАРГА КАРЛО
+ВАРГА КАТАРИНА
+ВАРГА КАТА
+ВАРГА-КЛИШАНИЋ ЉУБИЦА
+ВАРГА КОРНЕЛИЈА
+ВАРГА КОРНЕЛ
+ВАРГА КОСАНА
+ВАРГА ЛАДИСЛАВ
+ВАРГА ЛАЈОШ
+ВАРГА ЛАЈОШ
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЉУПКА
+ВАРГА МАРГИТА
+ВАРГА МАРИЈА
+ВАРГА МАРИЈА
+ВАРГА МАРИЈА
+ВАРГА МИХАЈЛО
+ВАРГА МИХАЈЛО
+ВАРГА МИХАЉ
+ВАРГА МИРКО
+ВАРГА МИРОН
+ВАРГА МИРОСЛАВ
+ВАРГА НИКОЛА
+ВАРГА ОЛГА
+ВАРГА ПАЛ
+ВАРГА ПАЛ
+ВАРГА ПЕТАР
+ВАРГА ПЕТАР
+ВАРГА ПЕТЕР ДИПЛ ИНГ
+ВАРГА РАСТИСЛАВ
+ВАРГА РОЗАЛИЈА
+ВАРГА РОЗАЛИЈА
+ВАРГА СЛАВИЦА
+ВАРГА СТЕВАН
+ВАРГА СТЕВАН
+ВАРГА СТЈЕПАН
+ВАРГА ТИБОР
+ВАРГА ТИБОР
+ВАРГА ВЕРА
+ВАРГА ВЕРА
+ВАРГА ВЕРОНИКА
+ВАРГА ВЛАДИСЛАВ
+ВАРГА ВЛАСТА
+ВАРГА ЗОЛТАН
+ВАРГА ЗОЛТАН
+ВАРГЕЦ ИВАН
+ВАРХОЛИК АДАМ
+ВАРИЋАК БОЖО
+ВАРИЋАК ДАРИНКА
+ВАРЈУ ЛАСЛО
+ВАРЈУ МАРИЈА
+ВАРЈУ ТЕРЕЗА
+ВАРКАШ ИВАН
+ВАРМАЗ ИСМЕТ
+ВАРМЕЂА ЂОРЂЕ
+ВАРМУЖА МАЋАШ
+ВАРНИЦА ИВАН
+ВАРНИЦА ПЕТАР
+ВАРЊУ АНУШКА
+ВАРЊУ ГИЗЕЛА
+ВАРЊУ ИЛОНА
+ВАРНОС МАРТОН
+ВАРНУС ЈОЖЕФ
+ВАРОШЧИЋ СПАСЕНИЈА
+ВАРОШИ ГАБРИЕЛА
+ВАРОШИ ЈОВАН
+ВАРОШИ СИЛАРД
+ВАСЕЛЕК ШТЕФАН
+ВАСЕЛЕК СТЕВАН
+ВАСЕЛЕК СТЕВАН
+ВАСЕЛЕК ВАСИЉ
+ВАСИЋ ЖЕЉКО
+ВАСИЋ ЖИВКА
+ВАСИЋ ЖИВКО
+ВАСИЋ ЖИВКО
+ВАСИЋ ЖИВКО
+ВАСИЋ ЂОКА
+ВАСИЋ ЂОРЂЕ
+ВАСИЋ ЂОРЂЕ
+ВАСИЋ АЛЕКСАНДАР
+ВАСИЋ АНИЦА
+ВАСИЋ АНКИЦА
+ВАСИЋ БОЈАНА
+ВАСИЋ БОРИСЛАВ
+ВАСИЋ БОРИВОЈ
+ВАСИЋ БРАНКО
+ВАСИЋ ЦВЕТКО
+ВАСИЋ ДАРИНКА
+ВАСИЋ ДОБРИВОЈ
+ВАСИЋ ДРАГАНА
+ВАСИЋ ДРАГАН
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГОЉУБ
+ВАСИЋ ДРАГОМИР
+ВАСИЋ ДРАГОМИР
+ВАСИЋ ДРАГОСЛАВ
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШИЦА
+ВАСИЋ ДУШКО НОВИНАР
+ВАСИЋ ДУБРАВКА
+ВАСИЋ ЕЛЕНА
+ВАСИЋ ГОРАН
+ВАСИЋ ГОРДАНА
+ВАСИЋ ГОРДАНА
+ВАСИЋ ГОРДИЦА
+ВАСИЋ ЈАКОВ
+ВАСИЋ ЈАНА
+ВАСИЋ ЈАНКО
+ВАСИЋ ЈЕЛИЦА
+ВАСИЋ ЈОВО
+ВАСИЋ КАТИЦА
+ВАСИЋ КОСТА
+ВАСИЋ КРИСТИНА
+ВАСИЋ ЛАЗАР
+ВАСИЋ ЉИЉАНА ДР
+ВАСИЋ ЉИЉАНА
+ВАСИЋ ЉУБОМИР
+ВАСИЋ ЛУКА
+ВАСИЋ МАКСИМ
+ВАСИЋ МАРИЈАНА
+ВАСИЋ МАРКО
+ВАСИЋ МИЋО
+ВАСИЋ МИХАИЛО
+ВАСИЋ МИХАЈЛО
+ВАСИЋ МИКА
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛЕНКО ДР ПРИМАРИУС
+ВАСИЋ МИЛЕНКО
+ВАСИЋ МИЛЕНКО
+ВАСИЋ МИЛИЦА
+ВАСИЋ МИЛИНКО
+ВАСИЋ МИЛОШ
+ВАСИЋ МИЛОШ
+ВАСИЋ МИЛОВАН
+ВАСИЋ МИЛОВАН
+ВАСИЋ МИЛУТИН
+ВАСИЋ МИОДРАГ
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРОСЛАВА
+ВАСИЋ НАДА
+ВАСИЋ НАДА
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НИКОЛА
+ВАСИЋ НОВАК
+ВАСИЋ НОВАК
+ВАСИЋ НОВАК
+ВАСИЋ ОЛГА
+ВАСИЋ ОЛГИЦА
+ВАСИЋ ОСТОЈА
+ВАСИЋ ОСТОЈА
+ВАСИЋ ПАЈА
+ВАСИЋ ПЕРО
+ВАСИЋ ПЕТАР
+ВАСИЋ ПЕТАР
+ВАСИЋ-ПОПОВИЋ ЉИЉАНА
+ВАСИЋ ПРВОСЛАВ ДИПЛ ИНГ
+ВАСИЋ РАДИЦА
+ВАСИЋ РАДИВОЈ
+ВАСИЋ РАДОЈЕ
+ВАСИЋ РАДОСЛАВ
+ВАСИЋ РАДОВАН
+ВАСИЋ РАТКО
+ВАСИЋ РАВИЦА
+ВАСИЋ САВА
+ВАСИЋ САВА
+ВАСИЋ САВА
+ВАСИЋ СЕКУЛА
+ВАСИЋ СЛАВИЦА
+ВАСИЋ СЛАВКО
+ВАСИЋ СЛАВКО
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СНЕЖАНА
+ВАСИЋ СОФИЈА
+ВАСИЋ СРЕТКО
+ВАСИЋ СТАНИША
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СВЕТЛАНА
+ВАСИЋ СВЕТОЗАР
+ВАСИЋ ТИХОМИР
+ВАСИЋ ТИНКА
+ВАСИЋ ТОША
+ВАСИЋ ТОМИСЛАВ
+ВАСИЋ ВЕЛИМИР
+ВАСИЋ ВЕЛИМИР
+ВАСИЋ ВЕСЕЛИН
+ВАСИЋ ВИДА
+ВАСИЋ ВЛАДИМИР ДР ЛЕКАР
+ВАСИЋ ВЛАДИМИР
+ВАСИЋ ВОЈИСЛАВ
+ВАСИЋ ЗДРАВКО
+ВАСИЋ ЗОРАН
+ВАСИЋ ЗОРИЦА
+ВАСИЛЧИН СЛОБОДАН
+ВАСИЛЕСКИ БРАНКО
+ВАСИЛИШИН АНТОН
+ВАСИЛИШИН МИЛАН
+ВАСИЛИЋ БРАНИСЛАВ
+ВАСИЛИЋ ДАНИЦА
+ВАСИЛИЋ ДРАГА
+ВАСИЛИЋ МИЛАН
+ВАСИЛИЋ МИЛЕНКО
+ВАСИЛИЋ МИРА
+ВАСИЛИЋ НИКОЛА
+ВАСИЛИЋ РАЈКО
+ВАСИЛИЋ СТЕВАН
+ВАСИЛИЋ ТОДЕ
+ВАСИЛИЋ ВЕСНА
+ВАСИЛИЋ ВОЈИН ДИПЛ ИНГ
+ВАСИЉЧИН ЖИВКО
+ВАСИЉЕВ АНА
+ВАСИЉЕВ ДЕЈАН
+ВАСИЉЕВ ДРАГОСЛАВ
+ВАСИЉЕВ ЈЕЛИЦА
+ВАСИЉЕВ ЈОВАН
+ВАСИЉЕВ ЈОВАН
+ВАСИЉЕВ ЉУБИЦА
+ВАСИЉЕВ МАРА
+ВАСИЉЕВ МИЛОРАД
+ВАСИЉЕВ МИРОЉУБ
+ВАСИЉЕВ МИТА
+ВАСИЉЕВ РАДОВАН
+ВАСИЉЕВ СПАСОЈЕ
+ВАСИЉЕВ СТАНОЈЕ
+ВАСИЉЕВ ТАМАРА
+ВАСИЉЕВ ЗДРАВКО
+ВАСИЉЕВИЋ ШАРЛОТА
+ВАСИЉЕВИЋ ЖИВОТА
+ВАСИЉЕВИЋ ЂОРЂЕ
+ВАСИЉЕВИЋ ЂУРА
+ВАСИЉЕВИЋ-АЋАНСКИ ИВАНА
+ВАСИЉЕВИЋ АНЂЕЛКА
+ВАСИЉЕВИЋ АНДРЕЈА
+ВАСИЉЕВИЋ ЦВЕТКО
+ВАСИЉЕВИЋ ДАНИЦА
+ВАСИЉЕВИЋ ДРАГИША
+ВАСИЛЈЕВИЋ ДУШИЦА
+ВАСИЉЕВИЋ ГЛИГОР
+ВАСИЉЕВИЋ ГОЈАН
+ВАСИЉЕВИЋ ГОЈКО
+ВАСИЉЕВИЋ ГРОЗДА
+ВАСИЉЕВИЋ ЈАВОРКА
+ВАСИЉЕВИЋ ЈУЛКА
+ВАСИЉЕВИЋ ЛЕПА
+ВАСИЉЕВИЋ ЉУБИНКО
+ВАСИЉЕВИЋ МАРКО
+ВАСИЉЕВИЋ МАРКО
+ВАСИЉЕВИЋ МИЛЕНА
+ВАСИЉЕВИЋ МИЛЕНКО
+ВАСИЉЕВИЋ МИЛИСАВ
+ВАСИЉЕВИЋ МИЉКО
+ВАСИЉЕВИЋ МИЛОШ
+ВАСИЉЕВИЋ МИЛОРАД
+ВАСИЉЕВИЋ МИОДРАГ ДИПЛ ИНГ
+ВАСИЉЕВИЋ МИРА
+ВАСИЉЕВИЋ МИРОСЛАВ
+ВАСИЉЕВИЋ МОМЧИЛО ДР
+ВАСИЉЕВИЋ НАДА
+ВАСИЉЕВИЋ НЕДЕЉКО
+ВАСИЉЕВИЋ НЕВЕНКА
+ВАСИЉЕВИЋ НИКОЛА
+ВАСИЉЕВИЋ НИКОЛА
+ВАСИЉЕВИЋ ОЛГА
+ВАСИЉЕВИЋ ОСТОЈА
+ВАСИЉЕВИЋ ПЕТАР
+ВАСИЉЕВИЋ ПЕТАР
+ВАСИЉЕВИЋ РАДА
+ВАСИЉЕВИЋ РАДЕНКА
+ВАСИЉЕВИЋ РАДОСАВ
+ВАСИЉЕВИЋ РАДОСЛАВ
+ВАСИЉЕВИЋ РАДО
+ВАСИЉЕВИЋ РАЈА НОВИНАР
+ВАСИЉЕВИЋ РАЈКО
+ВАСИЉЕВИЋ СИМО
+ВАСИЉЕВИЋ СЛАВКО
+ВАСИЉЕВИЋ СТАНИМИР
+ВАСИЉЕВИЋ ТИХОМИР
+ВАСИЉЕВИЋ ТОША
+ВАСИЉЕВИЋ УМКА
+ВАСИЉЕВИЋ ВЕРИЦА
+ВАСИЉЕВИЋ ВУКИЦА
+ВАСИЉЕВИЋ ЗДРАВКО
+ВАСИЉЕВИЋ ЗЛАТКО
+ВАСИЉЕВИЋ ЗЛАТОЈЕ
+ВАСИЉЕВИЋ ЗОРАН
+ВАСИЉЕВСКИ ВАСИЛИЈЕ
+ВАСИН ЂОРЂЕ
+ВАСИН ЂОРЂЕ
+ВАСИН АНЂЕЛКА
+ВАСИН АРАНКА
+ВАСИН БОРИВОЈЕ
+ВАСИН БРАНИСЛАВ
+ВАСИН ДРАГАНА
+ВАСИН ДРАГОМИР
+ВАСИН ЈАСМИНА
+ВАСИН ЈЕЛЕНА
+ВАСИН ЈЕВРОСИМА
+ВАСИН ЈУЛКА
+ВАСИН ЛАЗАР
+ВАСИН ЉУБИНКА
+ВАСИН МАРИЦА
+ВАСИН МИЛЕНКО
+ВАСИН МИЛЕНКО
+ВАСИН НЕДЕЉКО
+ВАСИН ОЛГИЦА
+ВАСИН ПАВЛЕ
+ВАСИН ПЕТАР
+ВАСИН РАДИВОЈ
+ВАСИН СТЕВАН
+ВАСИН СВЕТИСЛАВ
+ВАСИН СВЕТОЗАР
+ВАСИН ТОДОР
+ВАСИН ЗОРА
+ВАСКО ВЕРА
+ВАСКОВИЋ МИЛОРАД
+ВАСКРСИЋ САВЕТА
+ВАСОВИЋ АЛЕКСАНДАР
+ВАСОВИЋ МИЛЕНА
+ВАСОВИЋ МИЛОВАН
+ВАСОВИЋ ПРЕДРАГ
+ВАСОВИЋ СЛАВИМИРКА
+ВАТАЈИ ЂУЛА
+ВАТИЋ МАРЈАН
+ВАТИЋ МАРКО
+ВАТИЋ МИРАШ
+ВАТИЋ НИКОЛА
+ВАТОВИЋ ХРАНИСЛАВ
+ВАТОВИЋ ЈЕЛЕНА
+ВАУРИЧАК КАТАЛИН
+ВАВАН МИЛОРАД
+ВАВАН МИЛОРАД
+ВАВАН МЛАДЕНКО
+ВАВАН ПАВЛЕ
+ВАВАН СЛАВКО
+ВАВИЋ ЈОВАН
+ВАВРА ПРЕДРАГ
+ВАВРИН ЈОСИП
+ВАВРИН ПЕТАР
+ВДОВИАК БЕРНАРД
+ВЕЧЕИ ЈОЖЕФ
+ВЕЧЕИ ЈОСИП
+ВЕЧЕИ ЉИЉАНА
+ВЕЧЕЈИ ЈОВАН
+ВЕЧЕРА МИХАЈЛО
+ВЕЧЕРИ ЈУЛИУС
+ВЕЧИ ИШТВАН
+ВЕЧИЋ СВЕТЛАНА
+ВЕШЛИГАЈ СТЕВАН
+ВЕШЛИГАЈ ВЕРА
+ВЕШОВИЋ ИВАНКА
+ВЕШОВИЋ ЛЕОПОЛД
+ВЕШОВИЋ ОЛГА
+ВЕШОВИЋ СМИЉАНА
+ВЕШОВИЋ ВЛАСТИМИР
+ВЕШОВИЋ ВУКСАН
+ВЕШОВИЋ ЗОРКА МР
+ВЕЋКАЛОВ ЂОРЂЕ
+ВЕЋКАЛОВ АЛЕКСАНДАР
+ВЕЋКАЛОВ СОФИЈА ДР ЛЕКАР
+ВЕБЕЛ ВАЛЕРИЈА
+ВЕБЕР БОЖАНА
+ВЕБЕР ГАБРИЕЛА
+ВЕБЕР ГАБРИЕЛА
+ВЕБЕР МИЛИЦА
+ВЕБЕР ОЛГА
+ВЕБЕР ТЕРЕЗИЈА
+ВЕГ ШАНДОР
+ВЕГ ЕНИКЕ
+ВЕГШЕ ПАВЛЕ
+ВЕГЕЛ ЛАСЛО
+ВЕГВАРИ ДЕЖЕ
+ВЕГВАРИ ЈУЛИАНА
+ВЕГВАРИ МИКЛОШ
+ВЕХТЕР КАРОЉ
+ВЕХТЕР КАРОЉ
+ВЕХТЕР ЗОЛТАН
+ВЕИН ЈЕКА
+ВЕИН ЗОРКА
+ВЕИНОВИЋ НИКОЛА
+ВЕЈИН ЂОРЂЕ
+ВЕЈИН БРАНИСЛАВА
+ВЕЈИН БРАНИСЛАВ
+ВЕЈИН ДУШАНКА
+ВЕЈИН КРИСТИНА
+ВЕЈНОВИЋ ДАНЕ
+ВЕЈНОВИЋ ДРАГАН
+ВЕЈНОВИЋ ЈЕЛЕНА
+ВЕЈНОВИЋ МИРКО
+ВЕЈНОВИЋ МЛАДЕН ДИПЛ ИНГ
+ВЕЈНОВИЋ НИКОЛА
+ВЕЈНОВИЋ ОБРАД
+ВЕЈНОВИЋ РАЈКО
+ВЕЈНОВИЋ СИМЕОН
+ВЕЈНОВИЋ ТИХОМИР
+ВЕЈНОВИЋ ТИХОМИР
+ВЕЈНОВИЋ ВАЈКО
+ВЕЈНОВИЋ ВОЈИСЛАВ
+ВЕЈЗОВСКИ ВЕЈЗ
+ВЕКАШ ЖУЖАНА
+ВЕКАШ АТИЛА
+ВЕКАШ ЕВА
+ВЕКАШ ЕВА
+ВЕКАШ ЈАНОШ
+ВЕКАШ ЈУДИТА
+ВЕКАШ ЛАСЛО
+ВЕКИЋ АНА
+ВЕКИЋ ДРАГАН
+ВЕКИЋ ЕЛЕНА
+ВЕКИЋ ЈУЛИЈАНА
+ВЕКИЋ НИКОЛА
+ВЕКИЋ ПЕТАР
+ВЕКИЋ РАДИВОЈ
+ВЕКИЋ РАДМИЛА
+ВЕКИЋ ТЕРЕЗА
+ВЕКИЋ ТЕРЕЗА
+ВЕКИЋ ЗВОНКО
+ВЕКОЊ ШАНДОР
+ВЕКОЊ ЛАДИСЛАВ
+ВЕКОВИЋ МИЛОРАД
+ВЕЛЧЕК ИШТВАН
+ВЕЛЧЕК ЈОСИП
+ВЕЛЧЕК ВЛАДИМИР
+ВЕЛЂИ АНА
+ВЕЛЂИ ЈОЖЕФ
+ВЕЛЂИ ЛАДИСЛАВ
+ВЕЛЂИ МАРИЈА
+ВЕЛАГИЋ САЊА
+ВЕЛАЈА ЈОВО
+ВЕЛБАБОВИЋ ДЕСАНКА
+ВЕЛБАБОВИЋ МИЛОРАД
+ВЕЛБАБОВИЋ РАДИНКА
+ВЕЛЕЧКОВИЋ БРАНКО
+ВЕЛЕЧКОВИЋ ЕВА
+ВЕЛЕМИР АНИЦА
+ВЕЛЕМИР ДРАГОЉУБ
+ВЕЛЕМИР ИЛИЈА
+ВЕЛЕМИР МИЛОМИР
+ВЕЛЕМИР РИСТО
+ВЕЛЕМИР РИСТО
+ВЕЛЕМИР САВКА
+ВЕЛЕМИР СЛАВКО
+ВЕЛЕМИР СВЕТОМИР
+ВЕЛЕМИР ТОДОР
+ВЕЛЕМИР ВОЈА
+ВЕЛЕМИР ВОЈКО
+ВЕЛЕМИРОВ СИМА
+ВЕЛЕНДЕЧИЋ БОЖО
+ВЕЛЕНДЕЧИЋ МИЛАН
+ВЕЛЕЗ ИШТВАН
+ВЕЛЕЗ ИШТВАН
+ВЕЛХЕС МИРОСЛАВ
+ВЕЛХНЕР ЈОСИП ДИПЛ ИНГ
+ВЕЛИЧКОВ ЖИВАН
+ВЕЛИЧКОВ ДАНИЦА
+ВЕЛИЧКОВ ГРОЗДА
+ВЕЛИЧКОВ КАТИЦА
+ВЕЛИЧКОВ ЉИЉА
+ВЕЛИЧКОВ НАТАША
+ВЕЛИЧКОВ РАДИВОЈ
+ВЕЛИЧКОВИЋ ЖИВОРАД ДИПЛ ПРАВНИК
+ВЕЛИЧКОВИЋ ЖИВОТА
+ВЕЛИЧКОВИЋ ЂОРЂЕ
+ВЕЛИЧКОВИЋ БИЉАНА
+ВЕЛИЧКОВИЋ ДУШАН
+ВЕЛИЧКОВИЋ ЕМИЛИЈА
+ВЕЛИЧКОВИЋ ИВАНКА
+ВЕЛИЧКОВИЋ ЈОВАН
+ВЕЛИЧКОВИЋ ЈОВАН
+ВЕЛИЧКОВИЋ КАТАРИНА
+ВЕЛИЧКОВИЋ КСЕНИЈА
+ВЕЛИЧКОВИЋ МАРИЈА
+ВЕЛИЧКОВИЋ МИЛАНКА
+ВЕЛИЧКОВИЋ МИЛАН
+ВЕЛИЧКОВИЋ МИЛИЦА
+ВЕЛИЧКОВИЋ МИЛОРАД
+ВЕЛИЧКОВИЋ НЕНАД
+ВЕЛИЧКОВИЋ НИКОЛА
+ВЕЛИЧКОВИЋ ПЕРСИДА
+ВЕЛИЧКОВИЋ ПРЕДРАГ
+ВЕЛИЧКОВИЋ СЛАВИША
+ВЕЛИЧКОВИЋ СЛАВОЉУБ
+ВЕЛИЧКОВИЋ СОЊА
+ВЕЛИЧКОВИЋ СТЕВАН
+ВЕЛИЧКОВИЋ ЗОРАН
+ВЕЛИЧКОВСКИ АЛЕКСАНДАР
+ВЕЛИШЕК ГАБРИЕЛА
+ВЕЛИШЕК ГЕЗА
+ВЕЛИШЕК КАРЛО
+ВЕЛИЋ ИЛИЈА
+ВЕЛИЋ ЗОРАН
+ВЕЛИЦКИ ЂОРЂЕ
+ВЕЛИЦКИ АЛЕКСАНДАР
+ВЕЛИЦКИ АЛЕКСАНДАР
+ВЕЛИЦКИ ЈЕЛИЦА
+ВЕЛИЦКИ ЈОВИЦА
+ВЕЛИЦКИ ЉУБОМИР
+ВЕЛИЦКИ МИЛАН
+ВЕЛИЦКИ МИЛАН
+ВЕЛИЦКИ МИЛИВОЈ
+ВЕЛИЦКИ МИОДРАГ
+ВЕЛИЦКИ НОВАК
+ВЕЛИЦКИ СВЕТОЗАР
+ВЕЛИЦКИ УРОШ
+ВЕЛИЦКИ ЗОРАН
+ВЕЛИЦКИ ЗОРА
+ВЕЛИЈА ЉИЉАНА
+ВЕЛИЈА РЕЂЕП
+ВЕЛИКИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ВЕЛИКИЋ АНА
+ВЕЛИКИЋ ДАНИЦА
+ВЕЛИКИЋ ЉУБОМИР
+ВЕЛИКИЋ СИМА
+ВЕЛИКИЋ ЗОРАН
+ВЕЛИМИРОВ ЈЕЛЕНА
+ВЕЛИМИРОВ МИЛОШ
+ВЕЛИМИРОВ ВЛАДИМИР
+ВЕЛИМИРОВИЋ АНГЕЛА
+ВЕЛИМИРОВИЋ БОШКО
+ВЕЛИМИРОВИЋ ДИМИТРИЈЕ
+ВЕЛИМИРОВИЋ ДРАШКО
+ВЕЛИМИРОВИЋ ЈЕЛИСАВЕТА
+ВЕЛИМИРОВИЋ ЈОВАН
+ВЕЛИМИРОВИЋ ЛАЗАР
+ВЕЛИМИРОВИЋ НОВАК
+ВЕЛИМИРОВИЋ СИМЕОН
+ВЕЛИМИРОВИЋ СЛАВИЦА
+ВЕЛИМИРОВИЋ СЛАВОЉУБ
+ВЕЛИМИРОВИЋ СМИЉАНА
+ВЕЛИМИРОВИЋ СНЕЖАНА
+ВЕЛИМИРОВИЋ ВОЈИН
+ВЕЛИОСКИ САДЕМ
+ВЕЛИОВ ЏЕМАЈЛО
+ВЕЛИСАВЉЕВ ГОРДАНА ДР
+ВЕЛИСАВЉЕВ МИЛОРАД ДР
+ВЕЛИСАВЉЕВ СРЕДОЈЕ
+ВЕЛИСАВЉЕВИЋ МИЛИСАВ
+ВЕЉА ЖИВА ДИП ОЕЦ
+ВЕЉА ПЕТАР
+ВЕЉАНОВИЋ БРАНИСЛАВ
+ВЕЉАНОВИЋ МОМЧИЛО
+ВЕЉАНОВИЋ ТОМИСЛАВА
+ВЕЉАНОВСКИ ИВАН
+ВЕЉИЋ МИЛОВАН
+ВЕЉКО АНЂЕЛКО
+ВЕЉКОВ ДАРИНКА
+ВЕЉКОВ ГЕОРГИЈЕ
+ВЕЉКОВ ИДА
+ВЕЉКОВ МИРОСЛАВ ДИПЛ ПРАВНИК
+ВЕЉКОВ ПАВЛЕ
+ВЕЉКОВ-ПФАЈФЕР СОФИЈА
+ВЕЉКОВ СТЕВАН
+ВЕЉКОВ ВЛАДИМИР
+ВЕЉКОВИЋ ЖАРКО
+ВЕЉКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ВЕЉКОВИЋ АЛЕКСАНДАР
+ВЕЉКОВИЋ АНЂЕЛКА
+ВЕЉКОВИЋ БОЖИДАР
+ВЕЉКОВИЋ БОЈАН
+ВЕЉКОВИЋ ДОБРОСАВ
+ВЕЉКОВИЋ ДРАГАН
+ВЕЉКОВИЋ МИЛОМИР
+ВЕЉКОВИЋ МИОДРАГ
+ВЕЉКОВИЋ МИОДРАГ
+ВЕЉКОВИЋ МИРЈАНА
+ВЕЉКОВИЋ МИРКО
+ВЕЉКОВИЋ НАДА
+ВЕЉКОВИЋ ПЕТАР
+ВЕЉКОВИЋ РАДА
+ВЕЉКОВИЋ РАДИСАВ
+ВЕЉКОВИЋ РАДОСАВ
+ВЕЉКОВИЋ РАДОСЛАВ
+ВЕЉКОВИЋ РУЖИЦА
+ВЕЉКОВИЋ СРЕТЕН
+ВЕЉКОВИЋ СВЕТА
+ВЕЉКОВИЋ СВЕТИСЛАВ
+ВЕЉКОВИЋ ТИХОМИР
+ВЕЉКОВИЋ ВИДОЈЕ
+ВЕЉКОВИЋ ВОЈИСЛАВ
+ВЕЉКОВИЋ ВУКАШИН
+ВЕЉОВИЋ ДУШАН
+ВЕЉОВИЋ ЛЕПОСАВА
+ВЕЉОВИЋ МИЛАН
+ВЕЉОВИЋ МИТАР
+ВЕЉОВИЋ МОМЧИЛО
+ВЕЉОВИЋ ПАВЛЕ
+ВЕЉОВИЋ РУЖА
+ВЕЉОВИЋ СИМО
+ВЕЉОВИЋ СЛАВИЦА
+ВЕЛКОВСКИ ИРЕНА
+ВЕЛКОВСКИ ТЕОФИЛ
+ВЕМЕНАЦ ОБРАД
+ВЕМИЋ БОРА
+ВЕМИЋ ДРАГИЊА
+ВЕМИЋ ИЛИЈА
+ВЕМИЋ ЛАЗАР
+ВЕМИЋ МИЛАН
+ВЕМИЋ РАДИВОЈЕ ДР
+ВЕМИЋ РАДИВОЈЕ
+ВЕНЧЕЛОВСКИ ЉУБИЦА
+ВЕНЧЕЛОВСКИ ВЛАДА
+ВЕНЧЕЛОВСКИ ВЛАДИМИР
+ВЕНЧЕЛОВСКИ ВЛАСТА
+ВЕНЦЕЛ ГЕЗА
+ВЕНЦЕЛ ГЕЗА
+ВЕНЦЛ ЈОСИП
+ВЕНЦЛ ЗВОНИМИР
+ВЕНДЛЕНЕР АНДРИЈАНА
+ВЕНДЛЕНЕР ЈЕЛЕНА
+ВЕНДЛЕНЕР ЗОРАН
+ВЕНЕ ГОРДАНА
+ВЕНГРИН АГНЕШ
+ВЕНГРИНГ ФЕРЕНЦ
+ВЕНГРИНГ СТЕВАН
+ВЕРАЦ МИОДРАГ
+ВЕРБА ЈОЖЕФ
+ВЕРБАНЕЦ ИШТВАН
+ВЕРБАНЕЦ ИШТВАН
+ВЕРБАСИ ФРАЊА
+ВЕРБАСИ ЈОВАНКА
+ВЕРЕШ ЂУЛА
+ВЕРЕШ АНДРИЈА
+ВЕРЕШ ДРАГУТИН
+ВЕРЕШ ХАЈНАЛКА
+ВЕРЕШ ИВАН
+ВЕРЕШ ЈЕЛИСАВЕТА
+ВЕРЕШ ЈОЖЕФ
+ВЕРЕШ ЈОСИП
+ВЕРЕШ ЈОСИП
+ВЕРЕШ ЛАДИСЛАВ
+ВЕРЕШ МАРИЈА
+ВЕРЕШБАРАЊИ ИШТВАН
+ВЕРЕШБАРАЊИ МАРИЈА
+ВЕРЕШЕВИЋ ТИХОМИР
+ВЕРЕЖАН ЂУРИЦА
+ВЕРЕЖАН ЗОРКА
+ВЕРЕБ ЖУЖАНА
+ВЕРЕБЕШ БОРИСЛАВА
+ВЕРЕБЕШ ЕРВИН
+ВЕРЕЦКЕИ ДУШИЦА
+ВЕРЕЦКЕИ ГЕЗА
+ВЕРЕЦКЕИ МАРГИТА
+ВЕРГАШ БРАНКО
+ВЕРИЋ РАТКО
+ВЕРКИЋ ТОДОР
+ВЕРКИЋ ВИТОМИР
+ВЕРКИЋ ВОЈИСЛАВ
+ВЕРЛИЋ МИЛАН
+ВЕРМЕШ ЛИЛИ
+ВЕРМЕЗОВИЋ ЂОРЂЕ
+ВЕРНАЧКИ АНИТА
+ВЕРНАЧКИ БРАНИСЛАВ
+ВЕРНАЧКИ ГАВРА
+ВЕРНАЧКИ ГАВРИЛО
+ВЕРНАЧКИ МИРОСЛАВ
+ВЕРНЕР АНА
+ВЕРНЕР МИХАЈЛО
+ВЕРНЕР СТЕВАН
+ВЕРНОТ АНА
+ВЕРНОТ ДУЊА
+ВЕРНОТ ЈОСИП
+ВЕРНОТ ВЈЕКОСЛАВА
+ВЕРНОТ ЗДЕНКО
+ВЕРНОТ ЗДЕНКО
+ВЕРЗОТИ ДРАГИЦА
+ВЕРЗОТИ ЈУЛИЈАНА
+ВЕРЗОТИ ПЕТАР
+ВЕРЗОТИ СТАНКА
+ВЕСЕЛИЋ БОРИВОЈ
+ВЕСЕЛИЋ ДРАГОЉУБ
+ВЕСЕЛИЋ ГОСПАВА
+ВЕСЕЛИЋ РАДОЈКА
+ВЕСЕЛИЋ СЛАВКО
+ВЕСЕЛИЦА МАНЕ
+ВЕСЕЛИЦА МИЛАН
+ВЕСЕЛИЦА СВЕТОЗАР
+ВЕСЕЛИН ПЕТАР
+ВЕСЕЛИНОВ ЂОРЂЕ
+ВЕСЕЛИНОВ БОРИСЛАВА
+ВЕСЕЛИНОВ БРАНИСЛАВ
+ВЕСЕЛИНОВ ЛИБУША
+ВЕСЕЛИНОВ МИЛИЦА
+ВЕСЕЛИНОВ РИСТА
+ВЕСЕЛИНОВ СТЕВАН ДР
+ВЕСЕЛИНОВ СТЕВАН
+ВЕСЕЛИНОВ СВЕТОЗАР
+ВЕСЕЛИНОВ ВЕРА
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂУЈА
+ВЕСЕЛИНОВИЋ ЂУРА
+ВЕСЕЛИНОВИЋ ЂУРО
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ БОРА
+ВЕСЕЛИНОВИЋ БРАНЕ
+ВЕСЕЛИНОВИЋ БРАНИСЛАВ
+ВЕСЕЛИНОВИЋ БРАНИСЛАВ
+ВЕСЕЛИНОВИЋ ДАРА
+ВЕСЕЛИНОВИЋ ДАРКО
+ВЕСЕЛИНОВИЋ ДРАГАН
+ВЕСЕЛИНОВИЋ ДРАГОМИР
+ВЕСЕЛИНОВИЋ ДРАГОРАД
+ВЕСЕЛИНОВИЋ ДУШАНКА
+ВЕСЕЛИНОВИЋ ГОРДАНА
+ВЕСЕЛИНОВИЋ ИЛИЈА
+ВЕСЕЛИНОВИЋ ЈЕЛИСАВКА
+ВЕСЕЛИНОВИЋ ЈОРДАН
+ВЕСЕЛИНОВИЋ ЈОСИПА
+ВЕСЕЛИНОВИЋ ЈОВАНКА
+ВЕСЕЛИНОВИЋ ЈУЛИЈАНА
+ВЕСЕЛИНОВИЋ КАТИЦА
+ВЕСЕЛИНОВИЋ ЛАНА
+ВЕСЕЛИНОВИЋ ЛЕНКИЦА
+ВЕСЕЛИНОВИЋ ЉУБОМИР
+ВЕСЕЛИНОВИЋ МАРИЈА
+ВЕСЕЛИНОВИЋ МИКА
+ВЕСЕЛИНОВИЋ МИЛАНКА
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛЕНА
+ВЕСЕЛИНОВИЋ МИЛЕ
+ВЕСЕЛИНОВИЋ МИЛИСАВ
+ВЕСЕЛИНОВИЋ МИЛОРАД
+ВЕСЕЛИНОВИЋ МИРКО
+ВЕСЕЛИНОВИЋ МИТА
+ВЕСЕЛИНОВИЋ МЛАДЕН
+ВЕСЕЛИНОВИЋ НИКОЛА
+ВЕСЕЛИНОВИЋ НИКОЛА
+ВЕСЕЛИНОВИЋ ОЛГА
+ВЕСЕЛИНОВИЋ ПАВЛЕ
+ВЕСЕЛИНОВИЋ ПЕРСИДА
+ВЕСЕЛИНОВИЋ ПЕТАР
+ВЕСЕЛИНОВИЋ-ПОПОВИЋ БРАНКА
+ВЕСЕЛИНОВИЋ ПРЕДРАГ
+ВЕСЕЛИНОВИЋ РАДМИЛ
+ВЕСЕЛИНОВИЋ РАНКО
+ВЕСЕЛИНОВИЋ РАНКО
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ САВА
+ВЕСЕЛИНОВИЋ СЕВЕР
+ВЕСЕЛИНОВИЋ СЛОБОДАН
+ВЕСЕЛИНОВИЋ СПАСОЈЕ
+ВЕСЕЛИНОВИЋ СТЕВАН
+ВЕСЕЛИНОВИЋ СТЕВАН
+ВЕСЕЛИНОВИЋ СВЕТИСЛАВ
+ВЕСЕЛИНОВИЋ ТОДОР
+ВЕСЕЛИНОВИЋ ТОДОР
+ВЕСЕЛИНОВИЋ УРОШ
+ВЕСЕЛИНОВИЋ ВАСИЉКА
+ВЕСЕЛИНОВИЋ ВЕЛИМИР
+ВЕСЕЛИНОВИЋ ВЕЛИЗАР
+ВЕСЕЛИНОВИЋ ВЕЉКО
+ВЕСЕЛИНОВИЋ ВЕРА
+ВЕСЕЛИНОВИЋ ВЕРА
+ВЕСЕЛИНОВИЋ ВЕСЕЛИН
+ВЕСЕЛИНОВИЋ ВЕСЕЛИН
+ВЕСЕЛИНОВИЋ ВИНКА
+ВЕСЕЛИНОВИЋ ВЛАДИСЛАВ
+ВЕСЕЛИНОВИЋ ВЛАСТИМИР
+ВЕСЕЛИНОВИЋ ВОЈИСЛАВ ДР ЛЕКАР
+ВЕСЕЛИНОВИЋ ВОЈИСЛАВ
+ВЕСЕЛИНОВИЋ ВУКИЦА
+ВЕСЕЛИНОВИЋ ЗОРАН
+ВЕСЕЛИНОВИЋ ЗОРАН
+ВЕСЕЛИНОВИЋ ЗВЕЗДАН
+ВЕСИЋ ДОБРОСАВ
+ВЕСИЋ ДРАГОСЛАВ
+ВЕСИЋ КАТИЦА
+ВЕСИЋ КРСТА
+ВЕСИЋ МИЛАН
+ВЕСИЋ МИЛАН
+ВЕСИЋ МИЛИЦА
+ВЕСИЋ МИОДРАГ
+ВЕСИЋ МИТАР
+ВЕСИЋ МЛАДЕН
+ВЕСИЋ РУЖИЦА
+ВЕСИЋ-ВАРГА ДРАГИЦА
+ВЕСИЋ ВЕСЕЛИНКА
+ВЕСИН БРАНКО
+ВЕСИН МИЛАН
+ВЕСИН НАДА
+ВЕСИН ПЕТАР
+ВЕСКОВ АЛЕКСАНДАР
+ВЕСКОВ АЛЕКСАНДАР
+ВЕСКОВ ИВАН
+ВЕСКОВ ЈЕЛЕНА
+ВЕСКОВ МИЛОШ
+ВЕСКОВИЋ АНКИЦА
+ВЕСКОВИЋ ДРАШКО
+ВЕСКОВИЋ КАТАРИНА
+ВЕСКОВИЋ МАРИЦА
+ВЕСКОВИЋ МИРОСЛАВ
+ВЕСКОВИЋ МОМЧИЛО ДИПЛ ИНГ
+ВЕСКОВИЋ ПЕТАР
+ВЕСКОВИЋ СЛАВКО
+ВЕСКОВИЋ СТАНОЈЕ
+ВЕСКОВИЋ ЗОРА
+ВЕСЛАВСКИ ТИНКА
+ВЕСНИЋ МИЛЕНА
+ВЕСНИЋ-ВАСИЉЕВИЋ АНЂЕЛИЈА
+ВЕСОВИЋ АЦО
+ВЕСОВИЋ АНДРИЈА
+ВЕТРАБ ФРАЊА
+ВЕТРАБ КАТАЛИН
+ВЕТРАБ МИХАЉ
+ВЕТРО ПЕТАР
+ВЕВЕРИЧЕК МАРИЈА
+ВЕЗЕТИ МИХАЕЛ
+ВЕЗЕТИ ПЕТАР
+ВЕЗИЛИЋ ЂОРЂЕ
+ВЕЗИЛИЋ ЦРНОГОРКА
+ВЕЗИЛИЋ ДУШАНКА
+ВЕЗИЛИЋ ДУШИЦА
+ВЕЗИЛИЋ ЈЕЛИЦА
+ВЕЗИЛИЋ РАДОСЛАВ
+ВЕЗМАР БРАНКО
+ВЕЗМАР ИЛИЈА
+ВЕЗМАР МАРГАРИТА
+ВЕЗМАР МИЛАН
+ВЕЗМАР МИЛОШ
+ВЕЗМАР МИЛОРАД
+ВЕЗМАР МОМЧИЛО
+ВЕЗМАР НИКОЛА
+ВЕЗМАР ПЕТАР
+ВЕЗУЛИЋ ЂОРЂЕ
+ВИЧЕК ШАНДОР
+ВИЧЕК КАРОЉ
+ВИЧЕВИЋ ЗВОНИМИР
+ВИЧИК ИГЊАТ
+ВИШЕКРУНА БОРИВОЈ
+ВИШЕКРУНА ДАНКО
+ВИШЕКРУНА ДУШАН
+ВИШЕКРУНА ДУШКО
+ВИШЕКРУНА ЈОВАН
+ВИШЕКРУНА МИЛАН
+ВИШЕКРУНА СЛАВКО
+ВИШЕКРУНА ВОЈИН
+ВИШИЋ МИЛЕ
+ВИШКОВИЋ МИЛИЦА
+ВИШКОВИЋ МИЛОШ
+ВИШКОВИЋ ПЛАНИНКА
+ВИШКОВИЋ ПРЕДРАГ
+ВИШКОВИЋ ВЛАДИМИР ДР
+ВИШНИЋ ДАНИЦА
+ВИШНИЋ ДУШАН
+ВИШНИЋ ЗОРКА
+ВИШЊЕВЧАНИН ЈОВАН
+ВИШЊЕВЧАНИН ЛЕПА
+ВИШЊЕВАЦ БОРО
+ВИШЊЕВАЦ ОЛИВЕРА
+ВИШЊЕВСКИ КАТИЦА
+ВИШЊИЧАН ДУШАН
+ВИШЊИЧАН ГАВРИЛО
+ВИШЊИЧАН ЈОВАНКА
+ВИШЊИЧАН МИЛИЦА
+ВИШЊИЧАНИН ЈОВАНКА
+ВИШЊИЧАР ЖАРКО
+ВИШЊИЧАР ЂОРЂЕ
+ВИШЊИЧАР ЂОРЂЕ
+ВИШЊИЧАР ДРАГОСЛАВ
+ВИШЊИЧАР МАРИЈА
+ВИШЊИЧАР МИКА
+ВИШЊИЧАР НЕДЕЉКО
+ВИШЊИЧКИ ГОРДАНА
+ВИШЊИЧКИ МИЛОШ
+ВИШЊИЧКИ МИРОСЛАВ
+ВИШЊИЧКИ СРЕТЕН
+ВИШЊИЋ ЧЕДОМИЛА
+ВИШЊИЋ БРАНКО
+ВИШЊИЋ БРАНСИЛАВА
+ВИШЊИЋ ДАЛИБОР
+ВИШЊИЋ ДУШАН
+ВИШЊИЋ ИЛИЈА
+ВИШЊИЋ ЈОСИП
+ВИШЊИЋ МАРИЈА
+ВИШЊИЋ МИЛАН
+ВИШЊИЋ МИЛИЦА
+ВИШЊИЋ ОЛИВЕРА
+ВИШЊИЋ ОЛИВЕР
+ВИШЊИЋ СПАСОЈЕ
+ВИШЊИЋ ТИХОМИР
+ВИШЊИЋ ВАСИЛИЈЕ
+ВИШЊИЋ ВЕРА
+ВИШЊИЋ ВЕСНА
+ВИШЊОВСКИ ЂУРА
+ВИШЊОВСКИ АРАНКА
+ВИШЊОВСКИ МАРИЈА
+ВИШЊОВСКИ МАРЈАН
+ВИШОШЕВИЋ РУЖЕНА
+ВИШОНТАИ ЈОЖЕФ
+ВИШОНТАИ ЈОЖЕФ
+ВИЋЕВИЋ РАДИША
+ВИЖАИ ШАНДОР
+ВИАТОРИС ЈАНОШ
+ВИАТОРИС ЈУЛИШКА
+ВИАТОРИС ЉУБИЦА
+ВИБОК ЈОЖЕФ
+ВИЦЕИ ЈОЖЕФ
+ВИЦЕИ НИКОЛА
+ВИЦИАН КЛАРА
+ВИЦКО АРПАД
+ВИЦКО ФРАЊА
+ВИЦКО ЈОСИП
+ВИЦКОШ ЈОЖЕФ
+ВИЦКОВИЋ БРАНКО
+ВИЦКОВИЋ БРАНКО
+ВИЦКОВИЋ ДРАГИЦА
+ВИЦКОВИЋ ТОМИСЛАВ
+ВИЦКОВИЋ ВЕСНА
+ВИЦО БОГДАН
+ВИЦО РАДИВОЈЕ
+ВИЦО РАДОМИР
+ВИД БРАНИСЛАВА
+ВИДА ЈЕЛИСАВЕТА
+ВИДА ЈОЖЕФ
+ВИДА ЈУЛИЈА
+ВИДА СЛОБОДАНКА
+ВИДА ВИЛИ
+ВИДАЧ ЈАЊА ЛОКАЛ
+ВИДАЧ ЛАСЛО
+ВИДАЧ СЛАВИЦА
+ВИДАЈИЋ ЖИВКО
+ВИДАЈИЋ ЈАСМИНА
+ВИДАЈИЋ ЈОСИП
+ВИДАЈИЋ ЛУЧИЈАНО
+ВИДАЈИЋ МАРИЈА
+ВИДАЈИЋ ВЕЉА
+ВИДАЈИЋ ВЛАДА
+ВИДАКОВ АНКИЦА
+ВИДАКОВ ЈОВАН
+ВИДАКОВ ЗОРИЦА
+ВИДАКОВИЋ АЛЕКСАНДАР
+ВИДАКОВИЋ АЛЕКСАНДРА ДР
+ВИДАКОВИЋ АНГЕЛИНА
+ВИДАКОВИЋ БРАНИМИР
+ВИДАКОВИЋ БРАНКО
+ВИДАКОВИЋ ДУШАНКА
+ВИДАКОВИЋ ДУШАН
+ВИДАКОВИЋ ЕМИЛ
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ЈАГОДА
+ВИДАКОВИЋ ЈОСИП
+ВИДАКОВИЋ ЈОСИП
+ВИДАКОВИЋ КОСА
+ВИДАКОВИЋ МИХАЈЛО
+ВИДАКОВИЋ МИЛАН
+ВИДАКОВИЋ МИЛАН
+ВИДАКОВИЋ МИЉА
+ВИДАКОВИЋ МИРЧЕТА
+ВИДАКОВИЋ МИРЈАНА
+ВИДАКОВИЋ МИРКО
+ВИДАКОВИЋ НЕДЕЉКО
+ВИДАКОВИЋ ОЛГА
+ВИДАКОВИЋ ОЛГА
+ВИДАКОВИЋ РАДЕНКО
+ВИДАКОВИЋ РАДМИЛА
+ВИДАКОВИЋ САВА
+ВИДАКОВИЋ СЛАВКА
+ВИДАКОВИЋ СОФИЈА
+ВИДАКОВИЋ СРЕЋКО
+ВИДАКОВИЋ СРЕЋКО
+ВИДАКОВИЋ СТЕВАН
+ВИДАКОВИЋ СТОЈАН
+ВИДАКОВИЋ СВЕТОЗАР
+ВИДАКОВИЋ ТЕРЕЗА
+ВИДАКОВИЋ ВОЈИСЛАВ
+ВИДАКОВИЋ ВОЈИСЛАВ
+ВИДАКОВИЋ ВУКАШИН
+ВИДАНОВИЋ МИХАЈЛО
+ВИДАНОВИЋ-СКОКО ЈЕЛЕНА
+ВИДАРИЋ ЈОВО
+ВИДАРИЋ МИЛОРАД
+ВИДАРИЋ РАТКО
+ВИДАРИЋ СТЕВАН
+ВИДАС ТЕРЕЗА
+ВИДЕЦ ЈОСИП
+ВИДЕЦ ЈОСИП
+ВИДЕНОВИЋ БРАНКО
+ВИДЕНОВИЋ КОСОВКА
+ВИДЕНОВИЋ ЉИЉАНА ДР
+ВИДЕНОВИЋ МОМИР
+ВИДЕР МИРКО ДИПЛ ИНГ
+ВИДИЋ ЖЕЉКО
+ВИДИЋ ЂОРЂЕ
+ВИДИЋ БРАНИСЛАВ
+ВИДИЋ БРАНКА
+ВИДИЋ БРАНКА
+ВИДИЋ БРАНКО
+ВИДИЋ ДРАГАНА
+ВИДИЋ ДУШАНКА
+ВИДИЋ ЕМИЛИЈА
+ВИДИЋ ЈЕЛИЦА
+ВИДИЋ ЈОЦА
+ВИДИЋ ЉИЉАНА
+ВИДИЋ ЉУБОМИР
+ВИДИЋ МАРИЈА
+ВИДИЋ МИЛАН
+ВИДИЋ МИЛАН
+ВИДИЋ МИЛОШ
+ВИДИЋ МИРОСЛАВА
+ВИДИЋ МИРОСЛАВ
+ВИДИЋ НАДА
+ВИДИЋ ПЕРО
+ВИДИЋ РАДМИЛА
+ВИДИЋ РАДМИЛА
+ВИДИЋ РАЈКО
+ВИДИЋ СОФИЈА
+ВИДИЋ СТАНИСЛАВА
+ВИДИЋ СТЕВАН
+ВИДИЋ СВЕТИСЛАВ
+ВИДИЋ ВЕЉКО
+ВИДИЋ ВЕРА
+ВИДИЋ ЗДРАВКО
+ВИДИЦКИ БРАНКО
+ВИДИЦКИ ИВАН
+ВИДИЦКИ КОСТА
+ВИДИЦКИ ЉУБОМИР
+ВИДИЦКИ МИРОСЛАВ
+ВИДИНЕР БОЖИДАР
+ВИДМАНИЋ ГАБРИЈЕЛА
+ВИДОЈЕВИЋ ЖИВКА
+ВИДОЈЕВИЋ БЛАЖО
+ВИДОЈЕВИЋ БОЖА
+ВИДОЈЕВИЋ ЈОСИФ
+ВИДОЈКОВИЋ РАДОМИР
+ВИДОСАВЉЕВИЋ ДОБРОСАВ
+ВИДОСАВЉЕВИЋ ДУШАН
+ВИДОСАВЉЕВИЋ ЈЕЛИЦА
+ВИДОСАВЉЕВИЋ ЗВОНИМИР
+ВИДОВИЋ ЖИВКО
+ВИДОВИЋ АМИРА
+ВИДОВИЋ АНИЦА
+ВИДОВИЋ БЕАТРИС
+ВИДОВИЋ БИЉАНА
+ВИДОВИЋ БИСЕРКА
+ВИДОВИЋ БОЖИДАР
+ВИДОВИЋ БОРИСЛАВ
+ВИДОВИЋ БОРИСЛАВ
+ВИДОВИЋ БРАНИСЛАВ
+ВИДОВИЋ ДРАГО
+ВИДОВИЋ МАРЈАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛЕ
+ВИДОВИЋ МИЛИЦА
+ВИДОВИЋ МИЛОШ
+ВИДОВИЋ МИРКО
+ВИДОВИЋ НАДА
+ВИДОВИЋ ПЕТАР
+ВИДОВИЋ РАДОМИР
+ВИДОВИЋ РАЈКО
+ВИДОВИЋ РУЖИЦА
+ВИДОВИЋ САВА
+ВИДОВИЋ СЛОБОДАН
+ВИДОВИЋ ВИД
+ВИГИ ЈОСИП
+ВИГЊЕВИЋ ЂОРЂЕ
+ВИГЊЕВИЋ АНА
+ВИГЊЕВИЋ БРАНКА
+ВИГЊЕВИЋ БРАНКО
+ВИГЊЕВИЋ ДАКО
+ВИГЊЕВИЋ ДРАГАН
+ВИГЊЕВИЋ ДРАГАН
+ВИГЊЕВИЋ ДУШАНКА
+ВИГЊЕВИЋ МИЛЕНКО
+ВИГЊЕВИЋ НЕВЕНКА
+ВИГЊЕВИЋ РАДЕ
+ВИГЊЕВИЋ СТЕВАНИЈА
+ВИГЊЕВИЋ ВЕСНА
+ВИГЊЕВИЋ ВЛАДИМИР
+ВИГЊЕВИЋ ЗОРАН
+ВИЈАТОВ СМИЉА
+ВИЈЕШТИЦА ЊЕГОМИР
+ВИЈУК ЉУБАН
+ВИЈУК САВА
+ВИКОР ПЕТАР
+ВИКОР РУЖА
+ВИЛЧЕК ЈАЊА
+ВИЛЧЕК НИКОЛА
+ВИЛА МИЛОВАН
+ВИЛАГОШ ЂЕРЂИ
+ВИЛЕТИ ЗОРА
+ВИЛИШ ЂУРА
+ВИЛИШ ФРАЊА
+ВИЛИЋ МАРКО
+ВИЛИЋ РАДОМИР
+ВИЛИЋ РАДОСЛАВА
+ВИЛИЋ РОЗАЛИЈА
+ВИЛИЋ ВОЈИСЛАВ
+ВИЛИГОРСКИ ПАУЛА
+ВИЛОТИЋ ЖИВКО
+ВИЛОТИЋ МИЛИСАВ
+ВИЛОТИЈЕВИЋ ДРАГУТИН
+ВИЛОТИЈЕВИЋ КИЋУН
+ВИЛОТИЈЕВИЋ МИРОЈЕ
+ВИЛОВАЧКИ КАТИЦА
+ВИЛОВАЧКИ СЛАВКО
+ВИЛОВАЦ ЈОВАН
+ВИЛОВАЦ ЈОВАН
+ВИЛОВАЦ МИЛАН
+ВИЛОВСКИ ЂОРЂЕ
+ВИЛОВСКИ БРАНИСЛАВ
+ВИЛОВСКИ БРАНКО
+ВИЛОВСКИ САВА
+ВИЛОВСКИ СЛАВОМИР
+ВИЛОВСКИ СМИЉАНА
+ВИЛОВСКИ ВЕЉКО
+ВИЛОВСКИ ЗОРА
+ВИЛУС ДАНИЦА
+ВИМЕР ВЕРА
+ВИН ИВАН
+ВИН ЈОСИП
+ВИН ЛАЈОШ
+ВИН ПАВЛЕ
+ВИН СВЕТЛАНА
+ВИНШ ДРАГУТИН
+ВИНАЈ ЂОРЂЕ
+ВИНАЈ ЂОРЂЕ
+ВИНАЈ ЈАНКО
+ВИНАЈ ЉУБИЦА
+ВИНАЈ МЕЛАНИЈА
+ВИНАЈИ ЂУРА
+ВИНАЈИ МИТАР
+ВИНАЈИ ВЕРИЦА
+ВИНАРЖ ВЛАДИМИР
+ВИНЦЕ АНДРИЈА
+ВИНЦЕ ЕРЖЕБЕТ
+ВИНЦЕ ИШТВАН
+ВИНЦЕ КАРЛО
+ВИНЦЕ ЛАЦИКА
+ВИНЦЕ МАРЕЛА
+ВИНЦЕ МАРГИТА
+ВИНЦЕ ПАВЛЕ
+ВИНЦЕТИН АНА
+ВИНЏАНОВИЋ ПЕТАР
+ВИНЏАНОВИЋ РАДИВОЈЕ
+ВИНДИШ ДРАГУТИН
+ВИНДИШ СТЕВАН
+ВИНЕР БРАНИСЛАВ
+ВИНЕР ИВАН
+ВИНЕР ЈЕРОНИМ
+ВИНЕР МАРИЈА
+ВИНЕР ЗВОНИМИР
+ВИНКА ЕМАНУЕЛА
+ВИНКИЋ ИЛИЈА
+ВИНКЛЕР ЈОЖЕФ
+ВИНКЛЕРОВИЋ ВЕРИЦА
+ВИНКОВИЋ АНА
+ВИНКОВИЋ ДРАГАН
+ВИНКОВИЋ ЉУДЕВИТ
+ВИНОКИЋ БОГДАН
+ВИНОКИЋ ВАСИЉКА
+ВИРАГ АЛБЕРТ
+ВИРАГ АНДРИЈА
+ВИРАГ ЕРИКА
+ВИРАГ ЈУЛИЈАНА
+ВИРАГ ЉУДЕВИТ
+ВИРАГ МАРТОН
+ВИРАГ МИХАЈЛО
+ВИРАГ РОБЕРТ
+ВИРАГ РОБЕРТ
+ВИРЦ ФЕРЕНЦ
+ВИРЦ ЈОЖЕФ
+ВИРЦ ЈОВАН
+ВИРЦ МАРТИН
+ВИРЦ НАДА
+ВИРЦ РУЖИЦА
+ВИРЦ СТЕВАН
+ВИРИЋ ИВАН
+ВИРИЋ ИВАН
+ВИРИЈЕВИЋ ЂОРЂЕ
+ВИРИЈЕВИЋ БОЖИДАР
+ВИРИЈЕВИЋ БУДИМИР
+ВИРИЈЕВИЋ ЈОВАНКА
+ВИРИЈЕВИЋ ЉУБИНКО
+ВИРИЈЕВИЋ ПЕТАР
+ВИРИЈЕВИЋ ВОЈИН
+ВИСЛАВСКИ ЂУРА
+ВИСЛАВСКИ БОГДАН
+ВИСЛАВСКИ ЈАКИМ
+ВИСЛАВСКИ ЈАКИМ
+ВИСЛАВСКИ ЈАНОШ
+ВИСЛАВСКИ ЈАНОШ
+ВИСЛАВСКИ ЛЕОН
+ВИСЛАВСКИ ЉУБОМИР
+ВИСЛАВСКИ МАРИЈА
+ВИСЛАВСКИ МИХАЈЛО
+ВИСЛАВСКИ МИРОН
+ВИСЛАВСКИ МИРОСЛАВ
+ВИСЛАВСКИ МИРОСЛАВ
+ВИСЛАВСКИ НАТАША
+ВИСЛАВСКИ ЗЛАТКО
+ВИСТ ХЕЛГААНА
+ВИТАС СТЕВАН
+ВИТАС СТЕВАН
+ВИТАСОВИЋ ДУШАНКА
+ВИТАСОВИЋ ДУШАНКА
+ВИТАСОВИЋ ДУШАН
+ВИТАСОВИЋ НЕБОЈША
+ВИТАЗ ПЕТАР
+ВИТЕЗ ЈАН
+ВИТЕЗ ТУГОМИР
+ВИТЕЗ ЗВОНКО
+ВИТИЋ ЂОРЂЕ
+ВИТИЋ ЂОРЂЕ
+ВИТИЋ БОШКО ДР ЛЕКАР
+ВИТЈУК МИРЈАНА ДИПЛ ИНГ
+ВИТЈУК ПЕТАР ДИПЛ ИНГ
+ВИТКАИ ИЛОНА
+ВИТКОВИЋ БРАНКО
+ВИТКОВИЋ ДРАГО
+ВИТКОВИЋ ЈОВАН
+ВИТОМИРОВ ЖИВАН
+ВИТОМИРОВИЋ БОРИС
+ВИТОМИРОВИЋ ДРАГОМИР
+ВИТОРАЦ ЂУРА
+ВИТОРАЦ ЂУРО
+ВИТОРАЦ БОРИСЛАВ
+ВИТОРАЦ ИЛИЈА
+ВИТОРАЦ НАДА
+ВИТОРАЦ РУЖЕНКА
+ВИТОРОВИЋ МИЛАН
+ВИТОРОВИЋ МИЛОШ
+ВИТОРОВИЋ ОЛГА
+ВИТОРОВИЋ РАНКА
+ВИТОРОВИЋ СОФИЈА
+ВИТУШКА СТЕВАН
+ВИВОД ЈЕЛИСАВЕТА
+ВИВОД МАГДАЛЕНА
+ВИЗИ ШАНДОР
+ВИЗИ ЈОСИП
+ВИЗИ ЈОВАН
+ВИЗИ КАТИЦА
+ВИЗИ МАРИЈА
+ВИЗИ МАРИЈА
+ВИЗИ РАДОЈКА
+ВИЗИ СОЊА
+ВИЗИ СТЕВАН
+ВЈЕШТИЦА ЂУРО
+ВЈЕШТИЦА ДУШАНКА
+ВЈЕШТИЦА ЈОВО
+ВЈЕШТИЦА МИЛАН
+ВЈЕШТИЦА МИРКО
+ВЈЕШТИЦА МИРОСЛАВ
+ВЈЕШТИЦА НАДА
+ВЈЕШТИЦА НЕБОЈША
+ВЈЕШТИЦА СЛАВКО
+ВЈЕРГ БРАНИСЛАВ
+ВЈЕТРОВ ЉУБИЦА
+ВЛА ДУШАН
+ВЛА ДУШАН
+ВЛА ЈОВАН
+ВЛА МИЛОВАН
+ВЛА ПЕТАР
+ВЛА РАДОСЛАВ
+ВЛА СЛАВКО
+ВЛА СРЕТА
+ВЛАЧО ДУШАНКА
+ВЛАШЧИЋ АЛЕКСАНДАР
+ВЛАШИЋ МИОДРАГ
+ВЛАШИЋ ВАСО
+ВЛАШКАЛИЋ ЂОРЂЕ
+ВЛАШКАЛИЋ АЛЕКСАНДАР
+ВЛАШКАЛИЋ АНДРИЈА
+ВЛАШКАЛИЋ БОЖАНА
+ВЛАШКАЛИЋ-БОЈАНОВИЋ РАЈКА
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ ДОНКА
+ВЛАШКАЛИЋ ФАДИЛА
+ВЛАШКАЛИЋ ИЛИЈА
+ВЛАШКАЛИЋ ЛАЗАР
+ВЛАШКАЛИЋ ЛАЗАР
+ВЛАШКАЛИЋ МИЛОРАД
+ВЛАШКАЛИЋ НИКОЛА
+ВЛАШКАЛИЋ ОЛГА
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПЕТАР
+ВЛАШКАЛИЋ ПЕТАР
+ВЛАШКАЛИЋ-ПОПОВИЋ ДУШАНКА
+ВЛАШКАЛИЋ РАДОСЛАВ
+ВЛАШКАЛИЋ САВА
+ВЛАШКАЛИЋ СЛОБОДАН
+ВЛАШКАЛИЋ СЛОБОДАН
+ВЛАШКАЛИЋ СТЕВАН
+ВЛАШКАЛИЋ СТОЈАН
+ВЛАШКАЛИЋ ВЛАДИМИР
+ВЛАШКАЛИЋ ЗОРА
+ВЛАШКАЛИЈА ЈЕЛЕНА
+ВЛАШКАЛИЈА ВЛАДА
+ВЛАШКАЛИН БРАНКО
+ВЛАШКИ БОГДАНКА
+ВЛАШКИ ЛАЗАР
+ВЛАШКИ ПРЕДРАГ
+ВЛАДАРСКИ ОЛГА
+ВЛАДАРСКИ ОЛГА
+ВЛАДЕТИЋ МИЛАН
+ВЛАДЕТИЋ МИРКО
+ВЛАДИЋ ДРАГО
+ВЛАДИЋ МИЛАН
+ВЛАДИЋ ПЕТАР
+ВЛАДИМИР СЕЛЕНА
+ВЛАДИМИР ЗДРАВКО
+ВЛАДИМИРОВИЋ АЛЕКСАНДАР
+ВЛАДИМИРОВИЋ МИЛАН
+ВЛАДИМИРОВИЋ ВЛАДИМИР
+ВЛАДИСАВЉЕВ ЖИВАН
+ВЛАДИСАВЉЕВ МИЛОРАД
+ВЛАДИСАВЉЕВ ПЕРА
+ВЛАДИСАВЉЕВ ТОМА
+ВЛАДИСАВЉЕВИЋ ЂОРЂЕ
+ВЛАДИСАВЉЕВИЋ ЂУРА
+ВЛАДИСАВЉЕВИЋ ДЕСИМИР
+ВЛАДИСАВЉЕВИЋ ДРАГИЦА
+ВЛАДИСАВЉЕВИЋ ЕРЖЕБЕТ
+ВЛАДИСАВЉЕВИЋ ЈЕЛЕНА
+ВЛАДИСАВЉЕВИЋ МИЛОСАВА
+ВЛАДИСАВЉЕВИЋ МИРОСЛАВ
+ВЛАДИСАВЉЕВИЋ ОБРАД
+ВЛАДИСАВЉЕВИЋ-ПЕШКАНОВ МИРЈАНА
+ВЛАДИСАВЉЕВИЋ ПРЕДРАГ
+ВЛАДИСАВЉЕВИЋ ВОЈИСЛАВ
+ВЛАДОВИЋ ЈОВАН
+ВЛАДОВИЋ ЈОВАН
+ВЛАДОВИЋ РАДОЈКА
+ВЛАДУША НИКОЛА
+ВЛАДУШИЋ ИВАН
+ВЛАДУШИЋ МИЛАН
+ВЛАДУЛОВ ЖИВОЈИН
+ВЛАДУЛОВИЋ-ПОПОВ МАРИЈА ДР ЛЕКАР
+ВЛАДУЛОВИЋ ТИХОМИР
+ВЛАХ ДАНИЦА
+ВЛАХ ИВАН
+ВЛАХ ПАВЛЕ
+ВЛАХ РАДОВАН
+ВЛАХЕК СТАНКО
+ВЛАХИНИЋ МИЛОШ
+ВЛАХО КРУНОСЛАВ
+ВЛАХОВИЋ ЂОРЂЕ
+ВЛАХОВИЋ БОЈАНА
+ВЛАХОВИЋ БРАНИСЛАВ
+ВЛАХОВИЋ БРАНКА
+ВЛАХОВИЋ БРАНКА
+ВЛАХОВИЋ ДАНИЈЕЛА
+ВЛАХОВИЋ ДРАГОЉУБ
+ВЛАХОВИЋ ДРАГО
+ВЛАХОВИЋ ДУШАН
+ВЛАХОВИЋ ЈЕЛИЦА
+ВЛАХОВИЋ ЉУБИЦА
+ВЛАХОВИЋ ЉУБИНКА
+ВЛАХОВИЋ МАРИЈА
+ВЛАХОВИЋ МИЛАН ДИПЛ ИНГ
+ВЛАХОВИЋ МИЛЕНКО
+ВЛАХОВИЋ МИЛИЦА
+ВЛАХОВИЋ МИРКО ДР ИНГ
+ВЛАХОВИЋ МИРОСЛАВА
+ВЛАХОВИЋ МОМЧИЛО
+ВЛАХОВИЋ ПАВЛЕ
+ВЛАХОВИЋ РАДОШ
+ВЛАХОВИЋ РАДОМИР
+ВЛАХОВИЋ РАДОЊА
+ВЛАХОВИЋ САВА ДР
+ВЛАХОВИЋ СЕНКА
+ВЛАХОВИЋ СЛОБОДАН
+ВЛАХОВИЋ СТЕВАН
+ВЛАХОВИЋ СТРАХИЊА
+ВЛАХОВИЋ ТЕОДОРА
+ВЛАХОВИЋ ВИТОМИРКА
+ВЛАХОВИЋ ВЛАДА
+ВЛАХОВИЋ ВЛАДИМИР
+ВЛАХУШИЋ МИРКО
+ВЛАХУШИЋ ОЛГИЦА
+ВЛАИСАВЉЕВИЋ ЖИВКО
+ВЛАИСАВЉЕВИЋ ЂУЈО
+ВЛАИСАВЉЕВИЋ АНГЕЛИНА
+ВЛАИСАВЉЕВИЋ ДАНИЛО
+ВЛАИСАВЉЕВИЋ ДАРА
+ВЛАИСАВЉЕВИЋ ДМИТАР
+ВЛАИСАВЉЕВИЋ ДУШАН
+ВЛАИСАВЉЕВИЋ МАКСИМ
+ВЛАИСАВЉЕВИЋ МИЛАН
+ВЛАИСАВЉЕВИЋ МИЛАН
+ВЛАИСАВЉЕВИЋ МИЛИЈАНА
+ВЛАИСАВЉЕВИЋ МИЛОШ
+ВЛАИСАВЉЕВИЋ МОМЧИЛО
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ РАДМИЛА
+ВЛАИСАВЉЕВИЋ САВО
+ВЛАИСАВЉЕВИЋ СЛОБОДАН
+ВЛАИСАВЉЕВИЋ СОФИЈА
+ВЛАИСАВЉЕВИЋ СТОЈА
+ВЛАИСАВЉЕВИЋ ТРИВУНА
+ВЛАИСАВЉЕВИЋ ВАСО
+ВЛАЈАНКОВ ЛАЗАР
+ВЛАЈАНКОВ НАТАЛИЈА
+ВЛАЈАНКОВ СЛОБОДАН
+ВЛАЈАНКОВ-ВУЛИЋ ВЕРА
+ВЛАЈИЋ ДРАГАН
+ВЛАЈИЋ ДРАГОСЛАВА
+ВЛАЈИЋ ДУШАНКА
+ВЛАЈИЋ ДУШИЦА
+ВЛАЈИЋ ЈОВАН
+ВЛАЈИЋ МАРИЈА
+ВЛАЈИЋ МИЛОШ
+ВЛАЈИЋ ВАЛЕРИЈА
+ВЛАЈКОВ БОСИЉКА
+ВЛАЈКОВ БРАНИСЛАВ
+ВЛАЈКОВ БРАНКО
+ВЛАЈКОВ-ИВАНОВИЋ СНЕЖАНА
+ВЛАЈКОВ ЛАЗАР
+ВЛАЈКОВ ЛАЗА
+ВЛАЈКОВ МАЦА
+ВЛАЈКОВ МИОДРАГ
+ВЛАЈКОВ МИРКО
+ВЛАЈКОВ МЛАДЕН
+ВЛАЈКОВ НИКОЛА
+ВЛАЈКОВ ПАВЛЕ
+ВЛАЈКОВ ПЕТАР
+ВЛАЈКОВ ЗОРИЦА
+ВЛАЈКОВИЋ АНТОНИЈА
+ВЛАЈКОВИЋ БОГДАН
+ВЛАЈКОВИЋ МИЛУТИН
+ВЛАЈКОВИЋ МИОДРАГ
+ВЛАЈКОВИЋ НЕМАЊА
+ВЛАЈНИЋ ЧЕДОМИР
+ВЛАЈНИЋ ГОРАН
+ВЛАЈНИЋ МИРЈАНА
+ВЛАЈНИЋ ЗОРА
+ВЛАЈОВАНОВ СЛОБОДАН
+ВЛАЛУКИН ДРАГОСЛАВ
+ВЛАЛУКИН ИЛОНА
+ВЛАЛУКИН ИЛОНКА
+ВЛАЛУКИН МИЛОРАД ДИПЛ ИНГ
+ВЛАЛУКИН МИРЈАНА
+ВЛАЛУКИН НАДА
+ВЛАЛУКИН САВА
+ВЛАЛУКИН СЛАВКО
+ВЛАЛУКИН ЗОРА
+ВЛАОВ-ЖАРКОВ ОЛГА
+ВЛАОВ ГОРДАНА
+ВЛАОВ ЈАВОРКА
+ВЛАОВ МИЛОШ
+ВЛАОВ МИРОСЛАВ
+ВЛАОВ ВЕЛИМИР
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ АЛЕКСАНДАР
+ВЛАОВИЋ АНИЦА
+ВЛАОВИЋ БОШКО
+ВЛАОВИЋ БРАНИСЛАВА
+ВЛАОВИЋ ДИМИТРИЈЕ
+ВЛАОВИЋ ДРАГАН
+ВЛАОВИЋ ДРАГАН
+ВЛАОВИЋ ДРАГОЉУБ
+ВЛАОВИЋ ДУШАН
+ВЛАОВИЋ ДУШКО
+ВЛАОВИЋ ГАВРА
+ВЛАОВИЋ ХАРИ
+ВЛАОВИЋ ИГЊАТ
+ВЛАОВИЋ ИВАНКА
+ВЛАОВИЋ ЈЕЛА
+ВЛАОВИЋ ЈОВАН
+ВЛАОВИЋ ЈОВАН
+ВЛАОВИЋ КАТИЦА
+ВЛАОВИЋ ЛАЗАР
+ВЛАОВИЋ ЉУБИША
+ВЛАОВИЋ ЉУБИЦА
+ВЛАОВИЋ ЉУБОМИР
+ВЛАОВИЋ ЉУБОМИР
+ВЛАОВИЋ ЛУКА
+ВЛАОВИЋ МАРА
+ВЛАОВИЋ МАРКО
+ВЛАОВИЋ МИЛОШ
+ВЛАОВИЋ МИЛОШ
+ВЛАОВИЋ МИЛОСАВ
+ВЛАОВИЋ МИРОСЛАВ
+ВЛАОВИЋ МЛАДЕН
+ВЛАОВИЋ НИКОЛА
+ВЛАОВИЋ НИКОЛА
+ВЛАОВИЋ ОЛИВЕРА
+ВЛАОВИЋ ПЛЕМЕНКА
+ВЛАОВИЋ РАДИВОЈ
+ВЛАОВИЋ РАЈКО
+ВЛАОВИЋ САВА
+ВЛАОВИЋ СЛАВКО
+ВЛАОВИЋ СТАНОЈЕ
+ВЛАОВИЋ СТЕВАН
+ВЛАОВИЋ СТЕВАН
+ВЛАОВИЋ СВЕТОЗАР
+ВЛАОВИЋ ТОША
+ВЛАОВИЋ ТОДОР
+ВЛАОВИЋ ТОМА
+ВЛАОВИЋ ТОМИСЛАВ
+ВЛАОВИЋ ВЕСНА
+ВЛАОВИЋ ВЛАСТИСЛАВА
+ВЛАОВИЋ ЗОРАН
+ВЛАСАЧЕВИЋ СТОЈКО
+ВЛАСАК РЕНАТА
+ВЛАСОВ МИХАЈЛО
+ВЛАСТЕЛИЋ РОКСАНДА
+ВЛАТКОВИЋ ЖЕЉКО
+ВЛАТКОВИЋ АНГЕЛО
+ВЛАТКОВИЋ ДУШАН
+ВЛАТКОВИЋ КРЕШИМИР
+ВЛАТКОВИЋ МАРИЈА
+ВЛАТКОВИЋ МАРИЈА
+ВЛАТКОВИЋ МИЛАН
+ВЛАТКОВИЋ МИЛИЦА
+ВЛАТКОВИЋ МИРОСЛАВ
+ВЛАТКОВИЋ МЛАДЕН
+ВЛАТКОВИЋ НИКОЛА
+ВЛАТКОВИЋ САВКА
+ВЛАТКОВИЋ СВЕТОЗАР
+ВОШТИЋ АЛЕКСАНДАР
+ВОШТИЋ МИОДРАГ
+ВОДА ЗДЕНКО
+ВОДАЛОВ ДЕЈАН
+ВОДАЛОВ МЛАДЕН
+ВОДЕНИЧАР НИКОЛА
+ВОДОГАЗ ДРАГАН
+ВОДОГАЗ ЛЕПОСАВА
+ВОДОПИВЕЦ ЖЕЉКО
+ВОДОПИВЕЦ ДРАГИЦА
+ВОДОПИВЕЦ МИХАЕЛ
+ВОГАЊАЦ МИЛЕНКО
+ВОГЛЕШ ЛИДИЈА
+ВОИН АЛЕКСАНДАР ДР ЛЕКАР
+ВОЈЧЕВСКИ АЛЕКСАНДАР
+ВОЈЧИЋ ЈОВАН
+ВОЈАШЋУК МАРА
+ВОЈИЧИЋ ЈЕЛЕНА
+ВОЈИЧИЋ РАЈКО
+ВОЈИЧИЋ САВА
+ВОЈИЧИЋ ВЛАДИМИР
+ВОЈИМИРОВИЋ СЛАВКО
+ВОЈИН МИЛКА
+ВОЈИНОВ ЂОРЂЕ
+ВОЈИНОВ МИРА
+ВОЈИНОВ РАДОСЛАВ
+ВОЈИНОВИЋ АЛЕКСАНДРА
+ВОЈИНОВИЋ БОГИЋ
+ВОЈИНОВИЋ ДРАГАН
+ВОЈИНОВИЋ ДРАГОЉУБ
+ВОЈИНОВИЋ ДРАГОСЛАВ
+ВОЈИНОВИЋ ЈЕЛЕНА
+ВОЈИНОВИЋ ЈОВАН ДР
+ВОЈИНОВИЋ ЉИЉАНА
+ВОЈИНОВИЋ ЉУБОМИР
+ВОЈИНОВИЋ МИЛИВОЈЕ
+ВОЈИНОВИЋ МИЛОРАД
+ВОЈИНОВИЋ МИРЈАНА ДР
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ НЕБОЈША
+ВОЈИНОВИЋ ВЕСЕЛИН
+ВОЈИНОВИЋ ВУЈИЦА
+ВОЈИНОВИЋ ВУКОСАВА
+ВОЈИНОВИЋ ЗОРКА
+ВОЈИСАВЉЕВИЋ ЗЛАТИЈА
+ВОЈКИЋ БОШКО
+ВОЈКИЋ РАДИСЛАВ
+ВОЈНИЋ ФРАЊА
+ВОЈНИЋ-ХАЈДУК ГИЗА
+ВОЈНИЋ-ХАЈДУК ЉИЉАНА
+ВОЈНИЋ-ХАЈДУК МИРЈАНА
+ВОЈНИЋ ЈОВАН
+ВОЈНИЋ-КОРТУИШ СТАНА
+ВОЈНИЋ СТЕВАН
+ВОЈНОВ БРАНИСЛАВ
+ВОЈНОВ-ИЛИЋ РОЗАЛИЈА
+ВОЈНОВ СТОЈАН ДР ЛЕКАР
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЂОРЂЕ
+ВОЈНОВИЋ ЂОРЂЕ
+ВОЈНОВИЋ ЂУРА
+ВОЈНОВИЋ ЂУРО
+ВОЈНОВИЋ АЦА
+ВОЈНОВИЋ АНАСТАЗИЈА
+ВОЈНОВИЋ БРАЦА
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ ДАНИЦА
+ВОЈНОВИЋ ДАВОР
+ВОЈНОВИЋ ДЕСАНКА
+ВОЈНОВИЋ ДЕСАНКА
+ВОЈНОВИЋ ДИМИТРИЈЕ
+ВОЈНОВИЋ ДРАГАН
+ВОЈНОВИЋ ДРАГАН
+ВОЈНОВИЋ ДРАГИЦА
+ВОЈНОВИЋ ДУШАН ДИПЛ ИНГ
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ГИЗЕЛА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИВАНКА
+ВОЈНОВИЋ ИВАН
+ВОЈНОВИЋ ЈОВАН
+ВОЈНОВИЋ ЈОВАН
+ВОЈНОВИЋ КАТАРИНА
+ВОЈНОВИЋ КАТИЦА
+ВОЈНОВИЋ КЛАРА
+ВОЈНОВИЋ ЉУБИША
+ВОЈНОВИЋ ЉУБИНКА
+ВОЈНОВИЋ МАРА
+ВОЈНОВИЋ МАРКО
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛЕНКО
+ВОЈНОВИЋ МИЛЕНКО
+ВОЈНОВИЋ МИЛИЦА
+ВОЈНОВИЋ МИЛИНА
+ВОЈНОВИЋ МИЉАН
+ВОЈНОВИЋ МИЛКА
+ВОЈНОВИЋ МИЛОШ
+ВОЈНОВИЋ МИЛУТИН
+ВОЈНОВИЋ МИОДРАГ
+ВОЈНОВИЋ МИРЈАНА
+ВОЈНОВИЋ МИРКО
+ВОЈНОВИЋ МИРОСЛАВ
+ВОЈНОВИЋ МЛАДЕН ДИПЛ ОЕЦ
+ВОЈНОВИЋ НАДА
+ВОЈНОВИЋ НАДА
+ВОЈНОВИЋ НАДЕЖДА
+ВОЈНОВИЋ НАТАША
+ВОЈНОВИЋ НАТАША
+ВОЈНОВИЋ НИКОЛА ДР
+ВОЈНОВИЋ НИКОЛА
+ВОЈНОВИЋ НИКОЛА
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ РАДА
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДИВОЈ
+ВОЈНОВИЋ-РАДУЈКОВ НАДА
+ВОЈНОВИЋ РАЈКО
+ВОЈНОВИЋ РУЖИЦА
+ВОЈНОВИЋ СЛАВКО
+ВОЈНОВИЋ СЛАВКО
+ВОЈНОВИЋ СПАСЕНИЈА
+ВОЈНОВИЋ СТАМЕНКА
+ВОЈНОВИЋ СТАНИСЛАВ
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВА
+ВОЈНОВИЋ СТЕВО
+ВОЈНОВИЋ СТОЈКА
+ВОЈНОВИЋ СТРАХИЊА
+ВОЈНОВИЋ ТОМИСЛАВ
+ВОЈНОВИЋ ВЕСЕЛИН
+ВОЈНОВИЋ ВЕСЕЛИН
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВОЈИСЛАВ
+ВОЈНОВИЋ ВОЈИСЛАВ
+ВОЈНОВИЋ ЗДРАВКО
+ВОЈТ ЉУБИЦА
+ВОЈТ МИЛАНА
+ВОЈТАС СТАНИСЛАВ
+ВОЈТЕХОВСКИ ЈАРОСЛАВ
+ВОЈТЕХОВСКИ ОТО
+ВОЈТЕХОВСКИ ОТО
+ВОЈТЕХОВСКИ ЗАГОРКА
+ВОЈВОДИЋ ЂУРА
+ВОЈВОДИЋ АЛЕКСАНДАР
+ВОЈВОДИЋ АНА
+ВОЈВОДИЋ БРАНИСЛАВ
+ВОЈВОДИЋ ДАНИЦА
+ВОЈВОДИЋ ДРАГОЉУБ
+ВОЈВОДИЋ ДУШАН
+ВОЈВОДИЋ ГРАДИМИР
+ВОЈВОДИЋ ЈОВАН
+ВОЈВОДИЋ МАНИША
+ВОЈВОДИЋ МИЛАН
+ВОЈВОДИЋ МИЛЕ
+ВОЈВОДИЋ МИЛОШ
+ВОЈВОДИЋ МИЛОРАД
+ВОЈВОДИЋ МИРКО
+ВОЈВОДИЋ НАДА
+ВОЈВОДИЋ НИКОЛА
+ВОЈВОДИЋ РАДОВАН
+ВОЈВОДИЋ РАТКА
+ВОЈВОДИЋ СЛАВКО
+ВОЈВОДИЋ СТЕВАН
+ВОЈВОДИЋ СТЕВАН
+ВОЈВОДИЋ-ТАСИЋ СВЕТЛАНА
+ВОЈВОДИЋ ВАСО
+ВОЈВОДИЋ ВОЈИСЛАВ
+ВОЈВОДИЋ ЗОРА
+ВОКШИ ЂЕВАД
+ВОКАЛИЋ ХИЛДЕГАРД
+ВОКАЛИЋ ТЕОБАЛД
+ВОКИЋ ДРАГАН
+ВОКИЋ ДУШКО
+ВОКИЋ ЈОВАН
+ВОКИЋ НАДА
+ВОЛЧЕВИЋ БОРИСЛАВ
+ВОЛЧЕВИЋ ЕВА
+ВОЛЧЕВИЋ ТОДОР
+ВОЛЧЕВСКИ ЕВАНТИЈЕ
+ВОЛЧЕВСКИ НИКОЛА
+ВОЛАШ ИСИДОР
+ВОЛАШ МИЛАНКО
+ВОЛАШ МИЛАН
+ВОЛАР АНДРАШ
+ВОЛАР КАРЛО
+ВОЛАР ПЕТАР
+ВОЛАР СТЈЕПАН
+ВОЛАРЕВ ЉУБОМИР
+ВОЛАРЕВ НАДА
+ВОЛАРЕВ СТЕВАН
+ВОЛАРЕВИЋ МАРКО
+ВОЛАРЕВИЋ ЗОРАН
+ВОЛАРОВ МИЛАН
+ВОЛАРОВ РАДОВАН
+ВОЛЕНЦ МАРИЈА
+ВОЛФ БОРИС
+ВОЛФ ДРАГУТИН
+ВОЛФ ИШТВАН
+ВОЛФ ЉУБИЦА
+ВОЛФ ЉУДЕВИТ
+ВОЛФ МИРА
+ВОЛФ МИРА
+ВОЛФ ВЕРА
+ВОЛИЧ ВЛАДИМИР
+ВОЛИЋ АЛЕКСАНДАР
+ВОЛИЋ БОЖИДАР
+ВОЛИЋ ДРАГОСЛАВ
+ВОЛИЋ ГРУЈА
+ВОЛИЋ ЉИЉАНА
+ВОЛИЋ МАРИНКА
+ВОЛИЋ ПЕТАР
+ВОЛИЋ РАДОСЛАВ
+ВОЛИЋ СЛАВКО
+ВОЛИЋ ТИХОМИР
+ВОЛИЋ ВИНКА
+ВОЛКАР ЕМИЛ
+ВОЛКОВ РАДОСЛАВ
+ВОЛОШКИН БРАТИСЛАВ
+ВОЛОШКИН ДРАГИЦА
+ВОНИЋ ВЛАТКО
+ВОРАЧЕК ЖЕЉКО
+ВОРАЧЕК ЛАДИСЛАВ
+ВОРАТОВИЋ РАДИВОЈ
+ВОРГИЋ ЂОРЂЕ
+ВОРГИЋ АЛЕКСАНДАР
+ВОРГИЋ АНЂЕЛКА
+ВОРГИЋ БОРИВОЈ
+ВОРГИЋ ДРАГАН
+ВОРГИЋ ЕМИЛ
+ВОРГИЋ ГАВРА
+ВОРГИЋ ЈОСИП
+ВОРГИЋ ЛАЗАР
+ВОРГИЋ МАРА
+ВОРГИЋ МИЛАДИНКА
+ВОРГИЋ НИКОЛА ДР
+ВОРГИЋ СЛОБОДАН
+ВОРГИЋ СТЕВАН
+ВОРГИЋ СТЕВАН
+ВОРГИЋ ВУЈИЦА
+ВОРГИЋ ЗДРАВКО
+ВОРГИЋ ЗОРА
+ВОРГИНЦ ЦВЕТА
+ВОРГУЧИЋ МИЛОШ
+ВОРГУЧИЋ САША
+ВОРГУЧИН ИВАН
+ВОРКАПА НИКОЛА
+ВОРКАПИЋ ДУШАН
+ВОРКАПИЋ ЉУБИЦА
+ВОРКАПИЋ МИЛАН
+ВОРКАПИЋ НИКОЛА
+ВОРЛИЧЕК ЈАНОШ
+ВОРЛИЧЕК ЈАНОШ
+ВОРЛИЧЕК МАРИЦА
+ВОРОБЈЕВ ПЕТАР
+ВОРОБЈЕВ САВА
+ВОРОТОВИЋ СТАНА
+ВОРТИЋ БОСИЉКА
+ВОЗАР АНА
+ВОЗАР ДАНИЦА
+ВОЗАР ДРАГАН
+ВОЗАР МИЛОШ
+ВОЗАР ПАВЛЕ ДИПЛ ИНГ
+ВОЗАРЕВИЋ ЂОРЂЕ
+ВОЗАРЕВИЋ ЕЛИЗАБЕТА
+ВОЗАРЕВИЋ ЈЕЛИЦА
+ВОЗАРЕВИЋ МИРКО
+ВОЗАРОВИЋ ВИДА
+ВРЧИНАЦ ПЕТАР
+ВРШКА ЂОРЂЕ
+ВРШКА ДАНИЈЕЛ
+ВРШКА КАТАРИНА
+ВРАЧАР БРАНИСЛАВ
+ВРАЧАР ДАРИНКА
+ВРАЧАР ЈОВАН
+ВРАЧАР ЉУБОМИР
+ВРАЧАР ЉУБО
+ВРАЧАР МИЛАН
+ВРАЧАР МИОЉКА
+ВРАЧАР НЕДЕЉКО
+ВРАЧАР СЛАВКА
+ВРАЧАР СЛОБОДАН
+ВРАЧАР ВЕРА
+ВРАЧАР ВУК
+ВРАЧАР ЗДЕНКА
+ВРАЧАРИЧИЋ РАДЕ
+ВРАЧАРИЋ ЂОРЂЕ
+ВРАЧАРИЋ АЛЕКСАНДАР
+ВРАЧАРИЋ ДИМИТРИЈЕ
+ВРАЧАРИЋ ЈЕЛИЦА
+ВРАЧАРИЋ ЉИЉАНА
+ВРАЧАРИЋ ЉУБИША
+ВРАЧАРИЋ ЉУБОМИР
+ВРАЧАРИЋ МАРИЈА
+ВРАЧАРИЋ МИЛЕНКО
+ВРАЧАРИЋ МИЛИСАВ
+ВРАЧАРИЋ МИЛОМИР
+ВРАЧАРИЋ ВЛАДИМИР
+ВРАЧЕВИЋ САВКА
+ВРАШТАНОВИЋ ЉУБИНКА
+ВРАБЛИК ЈУЛИЈАНА
+ВРАГОВИЋ ЈОЦА
+ВРАНА НАДА
+ВРАНАЦ КСЕНИЈА
+ВРАНАЦ СЕАД
+ВРАНАЦ ВАХИДА
+ВРАНАЦ ЗИЈАД
+ВРАНЕШ ЧЕДОМИР
+ВРАНЕШ БОЖИДАР
+ВРАНЕШ ДАВОРИН
+ВРАНЕШ ЕМИЛИЈА
+ВРАНЕШ ЈОВАНКА
+ВРАНЕШ МАРИЈА
+ВРАНЕШ МИЛАН
+ВРАНЕШ МИЛКА
+ВРАНЕШ МИЛУТИН
+ВРАНЕШ НАДА
+ВРАНЕШ НИКОЛА
+ВРАНЕШ ПЕТАР
+ВРАНЕШ СМИЉА
+ВРАНЕШ ВЕРИЦА
+ВРАНЕШЕВИЋ АДАМ
+ВРАНЕШЕВИЋ БРАНИСЛАВ ДР
+ВРАНЕШЕВИЋ ДАМЈАН
+ВРАНЕШЕВИЋ КАТИЦА
+ВРАНЕШЕВИЋ МИЛАН
+ВРАНЕШЕВИЋ МИЛАН
+ВРАНЕШЕВИЋ МИЛОШ
+ВРАНЕШЕВИЋ МИРОСЛАВ
+ВРАНЕШЕВИЋ МЛАДЕН
+ВРАНЕШЕВИЋ НАДА ДР
+ВРАНЕШЕВИЋ ПРЕДРАГ
+ВРАНЕШЕВИЋ РАЈКО
+ВРАНЕШЕВИЋ СТЕВАН
+ВРАНЕШЕВИЋ СТОЈАН
+ВРАНИЋ ЧЕДОМИР
+ВРАНИЋ БРАНКО
+ВРАНИЋ ДОБРИНА
+ВРАНИЋ ДРАГИЊА
+ВРАНИЋ ДРАГОСЛАВ
+ВРАНИЋ ИЛИЈА
+ВРАНИЋ ЈАДРАНКА
+ВРАНИЋ МАРКО
+ВРАНИЋ МИЛАН ПРОФЕСОР
+ВРАНИЋ МИЛОРАД
+ВРАНИЋ МИЛУТИН
+ВРАНИЋ МИРЧЕТА
+ВРАНИЋ МИРКО
+ВРАНИЋ МИТРА
+ВРАНИЋ НЕНАД
+ВРАНИЋ НИКОЛА
+ВРАНИЋ РАДИВОЈЕ
+ВРАНИЋ РАДОЈКА
+ВРАНИЋ СЛАВКО
+ВРАНИЋ СЛОБОДАН
+ВРАЊЕШ ГОЈКО
+ВРАЊЕШ ЈОВАНКА
+ВРАЊЕШ МИЛЕНКО
+ВРАЊЕШ МИЛЕНКО
+ВРАЊЕШ МИЛЕ
+ВРАЊЕШ МИЛКА
+ВРАЊЕШ НЕНАД
+ВРАЊЕШ РАДОМИР
+ВРАЊЕШ СОФИЈА
+ВРАЊЕШ СВЕТИСЛАВ
+ВРАЊЕШ СВЕТЛАНА
+ВРАЊЕШЕВИЋ БРАНКО
+ВРАЊЕШЕВИЋ ДИНКА
+ВРАЊЕШЕВИЋ ДРАГАН
+ВРАЊЕШЕВИЋ ЈОВИЦА
+ВРАЊЕШЕВИЋ МОМИР
+ВРАЊЕШЕВИЋ РАТОМИР
+ВРАЊЕШЕВИЋ ВЕЉКО
+ВРАЊЕВАЦ ДРАГАН
+ВРАЊЕВАЦ МИЛИВОЈЕ
+ВРАЊКОВИЋ МИЛАН
+ВРАЊКОВИЋ МИЛЕ
+ВРАЊКОВИЋ СМИЉКА
+ВРАЊКОВИЋ СРЕТО
+ВРАЊО ФРАЊА
+ВРАЊО ЗОЛТАН
+ВРАНКОВИЋ ЈУРАЈ
+ВРАНКОВИЋ ЛУКА
+ВРАНКОВИЋ МИЛАН
+ВРАПЧЕВ ЖИВКО
+ВРАПЧЕВ ДУШКО
+ВРАПЧЕВ МЕЛАНИЈА
+ВРАТЊАН БРАНИМИР
+ВРАТОЊИЋ СЛАВОЉУБ
+ВРБАШКИ ЖАРКО
+ВРБАШКИ ЖАРКО
+ВРБАШКИ ЂОРЂЕ
+ВРБАШКИ ЂОРЂЕ
+ВРБАШКИ ЂУРА
+ВРБАШКИ АЛЕКСАНДАР
+ВРБАШКИ АНИЦА
+ВРБАШКИ БРАНИСЛАВА
+ВРБАШКИ ДАРИНКА
+ВРБАШКИ ДРАГОМИР
+ВРБАШКИ ДРАГОСЛАВ
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШИЦА
+ВРБАШКИ ГОРДАНА
+ВРБАШКИ ЈЕЛЕНА
+ВРБАШКИ ЈЕЛИСАВЕТА
+ВРБАШКИ ЈОВАН
+ВРБАШКИ ЈУЛИЈАНА
+ВРБАШКИ КОСТА
+ВРБАШКИ ЛАЗАР
+ВРБАШКИ ЉИЉАНА
+ВРБАШКИ ЉУБИЦА МР
+ВРБАШКИ ЉУБОМИР
+ВРБАШКИ МИЛАН
+ВРБАШКИ МИЛАН
+ВРБАШКИ МИЛЕНА
+ВРБАШКИ МИЛЕНКО
+ВРБАШКИ МИЛИЦА
+ВРБАШКИ МИЛОРАД
+ВРБАШКИ МИОДРАГ
+ВРБАШКИ МИРОСЛАВ
+ВРБАШКИ МИРОСЛАВ
+ВРБАШКИ ПАВЛЕ
+ВРБАШКИ ПЕТАР ДИПЛ ИНГ
+ВРБАШКИ ПЕТАР
+ВРБАШКИ ПЕТАР
+ВРБАШКИ РАДА
+ВРБАШКИ РАДЕНКО
+ВРБАШКИ САВА
+ВРБАШКИ СЛОБОДАН
+ВРБАШКИ СТЕВАН ДР
+ВРБАШКИ СВЕТЛАНА
+ВРБАШКИ ТАЊА
+ВРБАШКИ ТИМА
+ВРБАШКИ ТОДОР
+ВРБАШКИ ВЛАДИСЛАВ
+ВРБАЈАЦ ЂОРЂЕ
+ВРБАЈАЦ ЦВЕЋЕ
+ВРБАЈАЦ ЈОВАН
+ВРБАЈАЦ ВАЛЕРИЈА
+ВРБАНАЦ ЛАЈОШ
+ВРБИЦА ДРАГОЉУБ
+ВРБИЦА КСЕНИЈА
+ВРБИЦА ПЕТАР
+ВРБЉАНАЦ АЛЕН
+ВРЦАН ВАЛЕРИЈА
+ВРЦЕЉ ЖИВКО
+ВРЦЕЉ БОЖИДАР
+ВРЦЕЉ ЉИЉАНА
+ВРЦЕЉ МИХАЈЛО
+ВРЦЕЉ ЗОРАН
+ВРДОЉАК БРАНИМИР
+ВРДОЉАК РАДОВАНКА
+ВРЕШЋАК ИШТВАН
+ВРЕЋА БРАНКО
+ВРЕЋО ВЕЛИМИР
+ВРЕБАЦ ЗВОНИМИР
+ВРЕБАЛОВ АЛЕКСАНДРА
+ВРЕБАЛОВ СТЕВАН
+ВРЕБАЛОВ ТИХОМИР
+ВРЕВЕЗОСКИ РИСТО
+ВРЕВИЧИЋ ЂОРЂЕ
+ВРЕВИЧИЋ СИМА
+ВРЕВИЧИЋ ТРИВУН
+ВРГОВ КОСТА
+ВРГОВИЋ ДРАГАН
+ВРГОВИЋ СТЕВАН
+ВРГОВИЋ ВЕРА
+ВРГОВИЋ ВЛАДИМИР
+ВРХОВАЦ БРАНИСЛАВ
+ВРХОВАЦ ДАНЕ
+ВРХОВАЦ ЈАСМИНА
+ВРХОВАЦ НЕДЕЉКО
+ВРХОВАЦ СЛАВКО ДИПЛ ИНГ
+ВРХОВАЦ ТОМИСЛАВ
+ВРКЕШ ГОРАН
+ВРМИЋ МЛАДЕН
+ВРНЧИЋ ЂОРЂЕ
+ВРСАЈКОВ ИЛИЈА
+ВРСАЈКОВ ИСИДОР
+ВРСАЈКОВ ЈУЛКА
+ВРСАЈКОВ ЉУБИЦА
+ВРСАЈКОВ МИЛОШ
+ВРСАЈКОВ НЕВЕНКА
+ВРСЕЉА ВИНКО
+ВРТИКАПА ЈОВАНКА
+ВРТИПРАШКИ ПЕТАР
+ВРТИПРАШКИ РАДОВАН ДР
+ВРТИПРАШКИ РАДОВАН
+ВРТИПРАШКИ ВАСА
+ВРТОВШНИК МИХАЈЛО
+ВРТУЛЕК СМИЉА
+ВРТУНИЋ БОРИСЛАВ
+ВРТУНИЋ МАРКО
+ВРТУНИЋ НИКОЛА
+ВРТУНСКИ ДАНИЦА
+ВРТУНСКИ ХЕДВИГА
+ВРТУНСКИ ЈУЛКА
+ВРТУНСКИ КАТАРИНА
+ВРТУНСКИ МИЛАН
+ВРТУНСКИ МИЛИЦА
+ВРТУНСКИ МИОДРАГ
+ВРТУНСКИ МЛАДЕН
+ВРТУНСКИ СРЂАН
+ВРТУНСКИ ВЛАДИМИР
+ВРУЋИНИЋ РАДОЈИЦА
+ВРУЋИНИЋ РАЈКО
+ВРЗИЋ БОРИСЛАВ
+ВРЗИЋ ДРАГИЦА
+ВРЗИЋ ДРАГИЦА
+ВРЗИЋ НАДЕЖДА
+ВРЗИЋ СТЕВО
+ВУЧАЈ АЛЕКСАНДАР
+ВУЧАЈ ФРАН
+ВУЧАЈ МИОМИРА
+ВУЧАЈ РОБЕРТ
+ВУЧАНОВИЋ ПРЕДРАГ
+ВУЧЕЛИЋ РАДОМИР
+ВУЧЕЛИЋ СЛАВКО
+ВУЧЕЛИЋ ВЕРА
+ВУЧЕЛИЋ ВЛАЈКО
+ВУЧЕН МИЛАНА
+ВУЧЕНИЋ ПРЕДРАГ
+ВУЧЕНОВ ЂУРИЦА
+ВУЧЕНОВ КАТАЛИН
+ВУЧЕНОВ МИРЈАНА
+ВУЧЕНОВ СТЕВАН
+ВУЧЕНОВИЋ ЖИВАН
+ВУЧЕНОВИЋ ЖИВАН
+ВУЧЕНОВИЋ БРАНКА
+ВУЧЕНОВИЋ ДЕСАНКА
+ВУЧЕНОВИЋ ДРАГОЉУБ
+ВУЧЕНОВИЋ ЈОВАН
+ВУЧЕНОВИЋ ЛУКА
+ВУЧЕНОВИЋ МИРКО
+ВУЧЕНОВИЋ ПЕТАР
+ВУЧЕНОВИЋ СРЕТО
+ВУЧЕНОВИЋ СВЕТЛАНА
+ВУЧЕРИЋ ПРВОСЛАВ
+ВУЧЕТИЋ ЖИКА
+ВУЧЕТИЋ ЖИВКО
+ВУЧЕТИЋ АНЂЕЛКА
+ВУЧЕТИЋ БОЖИДАР
+ВУЧЕТИЋ БОЈАНА
+ВУЧЕТИЋ ДАРИНКА
+ВУЧЕТИЋ ДЕСИМИР
+ВУЧЕТИЋ ДЕВА
+ВУЧЕТИЋ ДИМИТРИЈЕ
+ВУЧЕТИЋ ДРАГАН
+ВУЧЕТИЋ ДУШАН
+ВУЧЕТИЋ ЛАЗАР
+ВУЧЕТИЋ ЉИЉАНА
+ВУЧЕТИЋ МИЋА
+ВУЧЕТИЋ МИЛЕНА
+ВУЧЕТИЋ МИЛЕНА
+ВУЧЕТИЋ МИЛЕН
+ВУЧЕТИЋ МИЛОСАВ
+ВУЧЕТИЋ НИКОЛА
+ВУЧЕТИЋ НИКОЛА
+ВУЧЕТИЋ НИНКО
+ВУЧЕТИЋ ПЕТАР
+ВУЧЕТИЋ ПЕТАР
+ВУЧЕТИЋ РАДЕ
+ВУЧЕТИЋ РАДОЈКА
+ВУЧЕТИЋ РАДОЈКО
+ВУЧЕТИЋ РАЈКО
+ВУЧЕТИЋ САЊА
+ВУЧЕТИЋ СЛОБОДАН
+ВУЧЕТИЋ СМИЉКА
+ВУЧЕТИЋ СОФИЈА
+ВУЧЕТИЋ СТАНКО
+ВУЧЕТИЋ СТЕВАН
+ВУЧЕТИЋ СВЕТЛАНА
+ВУЧЕТИЋ ВАЊА
+ВУЧЕТИЋ ВЕЉКО ДР
+ВУЧЕТИЋ ВЕРА
+ВУЧЕТИЋ ВЛАДИСЛАВ
+ВУЧЕТИЋ ЗОРАН
+ВУЧЕТИЋ ЗОРАН
+ВУЧЕТИН ЖИВАН
+ВУЧЕТИН МИЛОРАД
+ВУЧЕТИН ПЕТАР
+ВУЧЕТИН СОФИЈА
+ВУЧЕТИН ТОДОР
+ВУЧЕВАЦ ЖЕЛИМИР
+ВУЧЕВИЋ АЛЕКСАНДАР
+ВУЧЕВИЋ БОЖАНА
+ВУЧЕВИЋ ВАЛЕРИЈА
+ВУЧИЧЕВИЋ МИЛАН
+ВУЧИЧЕВИЋ НИКОЛА
+ВУЧИЋ ЖАРКО
+ВУЧИЋ ЂОРЂЕ
+ВУЧИЋ ЂУРЂИНКА
+ВУЧИЋ БОГДАН
+ВУЧИЋ БРАНИСЛАВА
+ВУЧИЋ ДРАГАН
+ВУЧИЋ ДУШАН
+ВУЧИЋ ДУШАН
+ВУЧИЋ ЈЕЛЕНА
+ВУЧИЋ ЈОВАНКА
+ВУЧИЋ ЈОВАН
+ВУЧИЋ КАТИЦА
+ВУЧИЋ МАРГИТА
+ВУЧИЋ МИЛАН
+ВУЧИЋ МИЛАН
+ВУЧИЋ МИРОСЛАВ
+ВУЧИЋ НЕВЕНКА
+ВУЧИЋ НИКОЛА
+ВУЧИЋ РАДМИЛА
+ВУЧИЋ СЛОБОДАН
+ВУЧИЋ ТОДОР
+ВУЧИЋ ВЕСЕЛИН
+ВУЧИЋЕВИЋ ЂОРЂЕ
+ВУЧИЋЕВИЋ БОЖИДАР
+ВУЧИЋЕВИЋ ДУШАН
+ВУЧИЋЕВИЋ ГОРДАНА
+ВУЧИЋЕВИЋ МИЛАН
+ВУЧИЋЕВИЋ МИЛАН
+ВУЧИЋЕВИЋ МИЛЕНКО
+ВУЧИЋЕВИЋ МИЛИЦА
+ВУЧИЋЕВИЋ МИОДРАГ
+ВУЧИЋЕВИЋ НАДЕЖДА
+ВУЧИЋЕВИЋ ПЕТАР
+ВУЧИЋЕВИЋ СЕЛИМИР
+ВУЧИЋЕВИЋ ВУКОСАВ
+ВУЧИНИЋ АНЂЕЛИЈА
+ВУЧИНИЋ АНДРИЈА
+ВУЧИНИЋ ДУШАН
+ВУЧИНИЋ ГАВРИЛО
+ВУЧИНИЋ ЈАЊА
+ВУЧИНИЋ ЈАСМИНКА
+ВУЧИНИЋ ЉИЉАНА ДР
+ВУЧИНИЋ ЉУБОМИР
+ВУЧИНИЋ МАРИЈА
+ВУЧИНИЋ МИЛАН
+ВУЧИНИЋ МИЛАН
+ВУЧИНИЋ МИЛИСАВ
+ВУЧИНИЋ МИЛУТИН
+ВУЧИНИЋ МИОДРАГ
+ВУЧИНИЋ МЛАДЕН
+ВУЧИНИЋ МЛАДЕН
+ВУЧИНИЋ ПЕТАР
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАЈКО
+ВУЧИНИЋ ВЕСНА
+ВУЧИНИЋ ВЛАДИМИР
+ВУЧИНИЋ ВУКМАН
+ВУЧИНИЋ ЗЛАТИБОР
+ВУЧИНОВИЋ РАДМИЛА
+ВУЧКОВ БОЈАНА
+ВУЧКОВ БРАНИСЛАВ
+ВУЧКОВ МАРЕЛА
+ВУЧКОВ МИЛОВАН
+ВУЧКОВАЦ ДРАГАН
+ВУЧКОВАЦ РАДЕ
+ВУЧКОВАЦ ТОМИСЛАВ
+ВУЧКОВИЋ ЧАСЛАВ
+ВУЧКОВИЋ ЖАРКО
+ВУЧКОВИЋ ЖИВКО
+ВУЧКОВИЋ ЂОРЂЕ
+ВУЧКОВИЋ ЂОРЂЕ
+ВУЧКОВИЋ АНЂЕЛКО
+ВУЧКОВИЋ АНА
+ВУЧКОВИЋ БОГДАН
+ВУЧКОВИЋ БРАНИСЛАВ
+ВУЧКОВИЋ БРАНКО
+ВУЧКОВИЋ БРАНКО
+ВУЧКОВИЋ ДОБРИЛА
+ВУЧКОВИЋ ДРАГАН
+ВУЧКОВИЋ ДРАГО
+ВУЧКОВИЋ ДУШАНКА
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУБРАВКА
+ВУЧКОВИЋ ЕМИН
+ВУЧКОВИЋ ЕВИЦА
+ВУЧКОВИЋ ГЕОРГИЈЕ
+ВУЧКОВИЋ ЈАНКО
+ВУЧКОВИЋ ЈАНКО
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЉУБИЦА
+ВУЧКОВИЋ ЛУКА ДИПЛ ОЕЦ
+ВУЧКОВИЋ МАРА
+ВУЧКОВИЋ МАРИЈА
+ВУЧКОВИЋ МАРКО
+ВУЧКОВИЋ МАРКО
+ВУЧКОВИЋ МИХАЈЛО
+ВУЧКОВИЋ МИХАЈЛО
+ВУЧКОВИЋ МИЛАН
+ВУЧКОВИЋ МИЛАН
+ВУЧКОВИЋ МИЛЕНА
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОЈКА
+ВУЧКОВИЋ МИЛОРАД
+ВУЧКОВИЋ МИОДРАГ
+ВУЧКОВИЋ МИОДРАГ
+ВУЧКОВИЋ МИРКО
+ВУЧКОВИЋ МИРОСЛАВ
+ВУЧКОВИЋ МОМЧИЛО
+ВУЧКОВИЋ НАДА ДР
+ВУЧКОВИЋ НАДА
+ВУЧКОВИЋ НЕДЕЉКО
+ВУЧКОВИЋ НИКОЛА ВЕТЕРИНАР
+ВУЧКОВИЋ НОВИЦА
+ВУЧКОВИЋ ПАУЛИНА
+ВУЧКОВИЋ-ПЕУРАЧА ЉИЉАНА
+ВУЧКОВИЋ РАДИВОЈ
+ВУЧКОВИЋ РАДОВАН
+ВУЧКОВИЋ САВЕТА
+ВУЧКОВИЋ-СИМИЋ ВЕСНА
+ВУЧКОВИЋ СИНИША
+ВУЧКОВИЋ СТЕВАН
+ВУЧКОВИЋ СТОЈАН ДР ЛЕКАР
+ВУЧКОВИЋ СТОЈАН ДР
+ВУЧКОВИЋ СВЕТЛАНА
+ВУЧКОВИЋ ТАЈСИЈА
+ВУЧКОВИЋ ТОМО
+ВУЧКОВИЋ ВАСА
+ВУЧКОВИЋ ВЛАДИСЛАВ
+ВУЧКОВИЋ ВОЈИСЛАВ
+ВУЧКОВИЋ ВУКИЦА
+ВУЧКОВИЋ ВУКОСАВА
+ВУЧУРЕВИЋ ЧЕДО
+ВУЧУРЕВИЋ ЂОРЂЕ
+ВУЧУРЕВИЋ АНЂЕЛИЈА
+ВУЧУРЕВИЋ БИЉАНА
+ВУЧУРЕВИЋ БЛАЖО
+ВУЧУРЕВИЋ БОШКО
+ВУЧУРЕВИЋ БРАНИСЛАВ
+ВУЧУРЕВИЋ ДАРИНКА
+ВУЧУРЕВИЋ ДРАГОМИР
+ВУЧУРЕВИЋ ДУШАН
+ВУЧУРЕВИЋ ГОРДАНА
+ВУЧУРЕВИЋ ЈЕЛЕНА
+ВУЧУРЕВИЋ МАША
+ВУЧУРЕВИЋ МИЛОШ
+ВУЧУРЕВИЋ МИРКО
+ВУЧУРЕВИЋ МЛАДЕН
+ВУЧУРЕВИЋ НАДА
+ВУЧУРЕВИЋ НИКОЛА
+ВУЧУРЕВИЋ ПЕТАР
+ВУЧУРЕВИЋ ТЕРЕЗИЈА
+ВУЧУРЕВИЋ УРОШ
+ВУЧУРЕВИЋ ВЕСНА
+ВУЧУРЕВИЋ ВЛАДИСЛАВА
+ВУЧУРЕВИЋ ВЛАДО
+ВУЧУРЕВИЋ ВОЈИСЛАВ
+ВУЧУРЕВИЋ ВОЈО
+ВУЧУРОВИЋ ЈАСНА
+ВУЧУРОВИЋ ЈОВАН
+ВУЧУРОВИЋ МИРКО
+ВУЧУРОВИЋ МИРОСЛАВ
+ВУЧУРОВИЋ МЛАДЕН
+ВУЧУРОВИЋ ПРЕДРАГ
+ВУЧУРОВИЋ СЛОБОДАН ДР
+ВУШТАР БОГДАН
+ВУЦЕЛИЋ СЛОБОДАН ДИПЛ ИНГ
+ВУЦЕЉА ДРАГАН
+ВУЦЕЉА МИЛОШ
+ВУЦЕЉА-ПЕТРОНИЈЕВИЋ ВЕРА
+ВУЦЕЉА ТРИВУН
+ВУЦЕЉА ВОЈИН
+ВУДРАГ САВО
+ВУДРАГ ЗОРАН
+ВУДРАГ ЗОРАН
+ВУДРАКОВИЋ РАТКО
+ВУГДЕЛИЋ ДОБРИВОЈ
+ВУГДЕЛИЋ ВУК
+ВУГЛЕЦ ЕДИТА
+ВУГРЕНИЧЕК ЂУРА
+ВУГРЕНИЧЕК МАГДА
+ВУГРИН СТЕВАН
+ВУГРИНЧИЋ АНКА
+ВУГРИНЧИЋ ФРАЊО
+ВУГРИНЧИЋ ЈАРОСЛАВ
+ВУГРИНЕЦ РУДОЛФ
+ВУИЋ ЈОСИП
+ВУЈЧИЋ ДРАГАН
+ВУЈЧИЋ МИЛЕ
+ВУЈЧИЋ ПЕТАР
+ВУЈЧИЋ ПЕТРИЈА
+ВУЈЧИН ЈОВАН
+ВУЈЧИН МИЛАН
+ВУЈЧИН МИТА
+ВУЈАЧИЋ ДРАГУТИН
+ВУЈАЧИЋ ДУБРАВКА
+ВУЈАЧИЋ МИЛИСАВ
+ВУЈАЧИЋ МИЛОРАД
+ВУЈАЧИЋ МИЛОРАД
+ВУЈАЧИЋ НИКОЛА
+ВУЈАЧИЋ РАДОСАВ
+ВУЈАЧИЋ РАЈКО
+ВУЈАШКОВИЋ СЛАВКО
+ВУЈАШКОВИЋ ВЛАДИМИР
+ВУЈАШКОВИЋ ВЛАДИСЛАВ
+ВУЈАШКОВИЋ ЗОРА
+ВУЈАЦКОВ ЂОРЂЕ
+ВУЈАЦКОВ АЛЕКСАНДАР
+ВУЈАЦКОВ ЈОВАН
+ВУЈАДИНОВ ДОБРИВОЈЕ ДИПЛ ИНГ
+ВУЈАДИНОВИЋ БЛАГОЈЕ
+ВУЈАДИНОВИЋ БРАНИСЛАВА
+ВУЈАДИНОВИЋ ЉУБИЦА
+ВУЈАДИНОВИЋ МИЛАН
+ВУЈАДИНОВИЋ МИЛИВОЈЕ
+ВУЈАДИНОВИЋ МИЛИВОЈ
+ВУЈАДИНОВИЋ МИЛИВОЈ
+ВУЈАДИНОВИЋ РАДОШ
+ВУЈАДИНОВИЋ РАЈКО
+ВУЈАДИНОВИЋ СЛАВИЦА
+ВУЈАДИНОВИЋ СВЕТОЗАР
+ВУЈАДИНОВИЋ ТОМИСЛАВ
+ВУЈАДИНОВИЋ ВЕРА
+ВУЈАДИНОВИЋ ВИШЊА
+ВУЈАДИНОВИЋ ВИТО
+ВУЈАДИНОВИЋ ВОЈИСЛАВ
+ВУЈАКЛИЈА ДЕСА
+ВУЈАКЛИЈА СТАНКО
+ВУЈАКОВИЋ ЂУРАЂ
+ВУЈАКОВИЋ ДРАГУТИН
+ВУЈАКОВИЋ КРСТАН
+ВУЈАКОВИЋ СЛОБОДАН
+ВУЈАКОВИЋ ВАСО
+ВУЈАКОВИЋ ВУЈО
+ВУЈАНИЋ ЖИВОСАВ
+ВУЈАНИЋ ЖИВОСЛАВ
+ВУЈАНИЋ БОРИВОЈ
+ВУЈАНИЋ БРАНКО
+ВУЈАНИЋ ГОРДАНА
+ВУЈАНИЋ ЈОРДАН
+ВУЈАНИЋ КОРНЕЛИЈА
+ВУЈАНИЋ МИЛАН
+ВУЈАНИЋ МИЛЕ
+ВУЈАНИЋ МИЛОВАН
+ВУЈАНИЋ НЕДЕЉКА
+ВУЈАНИЋ ПЕТАР
+ВУЈАНИЋ-ВАРГА ДИНКА ДР
+ВУЈАНОВ АЛЕКСАНДАР
+ВУЈАНОВ МИЛАНКА
+ВУЈАНОВ НИКОЛА
+ВУЈАНОВИЋ ЖАРКО
+ВУЈАНОВИЋ АЛЕКСАНДАР
+ВУЈАНОВИЋ БОШКО
+ВУЈАНОВИЋ БОЖИДАР ДР
+ВУЈАНОВИЋ БОЖИДАР
+ВУЈАНОВИЋ БОРИСЛАВ
+ВУЈАНОВИЋ БРАНКО
+ВУЈАНОВИЋ ДЕСИМИР
+ВУЈАНОВИЋ ДИМИТРИЈЕ
+ВУЈАНОВИЋ ДИМИТРИЈЕ
+ВУЈАНОВИЋ ДРАГИЦА
+ВУЈАНОВИЋ ЈОВАНКА
+ВУЈАНОВИЋ ЈОВО
+ВУЈАНОВИЋ МИЈО
+ВУЈАНОВИЋ МИЛАН
+ВУЈАНОВИЋ МИЛЕ
+ВУЈАНОВИЋ МИЛИНКА
+ВУЈАНОВИЋ МИЛОРАД
+ВУЈАНОВИЋ МИРКО
+ВУЈАНОВИЋ МЛАДЕН
+ВУЈАНОВИЋ СИМО
+ВУЈАНОВИЋ СЛАВОЉУБ
+ВУЈАНОВИЋ СТАНА
+ВУЈАНОВИЋ СТОЈАН
+ВУЈАНОВИЋ ВИТОМИР
+ВУЈАСИН СТРАИЛО
+ВУЈАСИНОВИЋ ЧЕДОМИР
+ВУЈАСИНОВИЋ ЈЕЛИЦА
+ВУЈАСИНОВИЋ ЉУБОМИР
+ВУЈАСИНОВИЋ МАРКО
+ВУЈАСИНОВИЋ МИЛАН
+ВУЈАСИНОВИЋ МИРОСЛАВ
+ВУЈАСИНОВИЋ РАДМИЛА
+ВУЈАТОВИЋ МИЛЕНКО
+ВУЈАТОВИЋ МИРЈАНА
+ВУЈАТОВИЋ ТЕОДОР
+ВУЈЕВИЋ РУЖА
+ВУЈИЧИЋ ЂОРЂЕ
+ВУЈИЧИЋ БИСЕРКА
+ВУЈИЧИЋ БОЖИДАР
+ВУЈИЧИЋ ЦВЕТА
+ВУЈИЧИЋ ДАНИЛО ДР
+ВУЈИЧИЋ ДОБРИЛА
+ВУЈИЧИЋ ДРАГАН
+ВУЈИЧИЋ ДУШАН
+ВУЈИЧИЋ ГОЈКО
+ВУЈИЧИЋ ИГЊАТ
+ВУЈИЧИЋ ИЛИЈА
+ВУЈИЧИЋ ИВИЦА ДР ПРОФ
+ВУЈИЧИЋ МАРКО
+ВУЈИЧИЋ МИХАЈЛО
+ВУЈИЧИЋ МИЛЕНКО
+ВУЈИЧИЋ МИЛОШ
+ВУЈИЧИЋ МИЛОШ
+ВУЈИЧИЋ ПЕТАР
+ВУЈИЧИЋ ПЕТРА
+ВУЈИЧИЋ РАДОСЛАВ
+ВУЈИЧИЋ РАНКО
+ВУЈИЧИЋ РАТКО
+ВУЈИЧИЋ РАТКО
+ВУЈИЧИЋ СИМО
+ВУЈИЧИЋ СЛОБОДАН
+ВУЈИЧИЋ СРЂАН
+ВУЈИЧИЋ СТАНКО
+ВУЈИЧИЋ СТЕВАН
+ВУЈИЧИЋ СТОЈАН ДИПЛ ИНГ
+ВУЈИЧИЋ СВЕТКО
+ВУЈИЧИЋ ТОМИСЛАВ
+ВУЈИЧИЋ ВАСИЛИЈЕ
+ВУЈИЧИЋ ВЕРА
+ВУЈИЧИЋ ВЕРИЦА
+ВУЈИЧИЋ ВЛАДИМИР
+ВУЈИЧИЋ ВОЈИН
+ВУЈИЧИН ЖАРКО
+ВУЈИЧИН ЂОРЂЕ
+ВУЈИЧИН ЂУРЂИЦА
+ВУЈИЧИН ЉУБИЦА
+ВУЈИЧИН ПЕТАР
+ВУЈИЋ ЖАРКО
+ВУЈИЋ ЖИВКО
+ВУЈИЋ ЂОРЂЕ
+ВУЈИЋ ЂОРЂЕ
+ВУЈИЋ ЂУРЂИЈА
+ВУЈИЋ ЂУРА
+ВУЈИЋ ЂУРА
+ВУЈИЋ АЛЕКСАНДАР
+ВУЈИЋ АЛЕКСАНДАР
+ВУЈИЋ АНЂЕЛИЈА
+ВУЈИЋ АНТЕ
+ВУЈИЋ АНТЕ
+ВУЈИЋ БОРИСЛАВ
+ВУЈИЋ БРАНИСЛАВ
+ВУЈИЋ БРАНИСЛАВ
+ВУЈИЋ БРАНКА
+ВУЈИЋ ДРАГА
+ВУЈИЋ ДРАГА
+ВУЈИЋ ДРАГИЊА
+ВУЈИЋ ДРАГОСЛАВА
+ВУЈИЋ ДРАГОСЛАВ
+ВУЈИЋ ДУШАН
+ВУЈИЋ ИВАН ДР
+ВУЈИЋ ИВАН ДР
+ВУЈИЋ ИВАНКА
+ВУЈИЋ ЈАКОБ ДР ЛЕКАР
+ВУЈИЋ ЈОВАН
+ВУЈИЋ ЈОВАН
+ВУЈИЋ ЈОВО
+ВУЈИЋ КАТАРИНА
+ВУЈИЋ-КОСО ВЕСНА
+ВУЈИЋ ЛАЗАР
+ВУЈИЋ ЉУБАН
+ВУЈИЋ ЉУБИЦА
+ВУЈИЋ МАРИЈА ПРОФЕСОР
+ВУЈИЋ МИЛАН
+ВУЈИЋ МИЛЕВА
+ВУЈИЋ МИЛЕВА
+ВУЈИЋ МИЛЕВКА
+ВУЈИЋ МИЛИЦА
+ВУЈИЋ МИЛОШ ДР
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИРА
+ВУЈИЋ МИРОСЛАВ ДИПЛ ИНГ
+ВУЈИЋ МОМИР
+ВУЈИЋ НАДА
+ВУЈИЋ НАДА
+ВУЈИЋ ПАВЛЕ ДР
+ВУЈИЋ ПРЕДРАГ
+ВУЈИЋ РАДИВОЈ
+ВУЈИЋ РАДОСЛАВ
+ВУЈИЋ РАТКА
+ВУЈИЋ САВО
+ВУЈИЋ САВО
+ВУЈИЋ СЛАВКА
+ВУЈИЋ СОФИЈА
+ВУЈИЋ СТАНКО
+ВУЈИЋ СТАНКО
+ВУЈИЋ СТЕВАН
+ВУЈИЋ СТЕВАН
+ВУЈИЋ СТЕВАН
+ВУЈИЋ ВЕРА
+ВУЈИЋ ВЕСНА
+ВУЈИЋ ВЛАДИМИР
+ВУЈИЋ ВЛАДИМИР
+ВУЈИЋ ВОЈИСЛАВА
+ВУЈИЋ ЗОРАН
+ВУЈИН ЂОКА
+ВУЈИН ЂУРИЦА
+ВУЈИН АЛЕКСАНДАР
+ВУЈИН ДАНИЦА
+ВУЈИН ДАВИД
+ВУЈИН ЈЕВРЕМ
+ВУЈИН ЈОВАНКА
+ВУЈИН ЛАЗАР
+ВУЈИН МАРА
+ВУЈИН МЕЛАНИЈА
+ВУЈИН МИРЈАНА
+ВУЈИН РАДИВОЈ
+ВУЈИН РАДОВАН
+ВУЈИН СЛАВКО
+ВУЈИН СЛОБОДАН
+ВУЈИН СВЕТОЗАР
+ВУЈИН ВУЈАДИН
+ВУЈИНОВИЋ ЖИВКА
+ВУЈИНОВИЋ ЂУРА
+ВУЈИНОВИЋ ЂУРО
+ВУЈИНОВИЋ БОРИСЛАВ
+ВУЈИНОВИЋ БРАНИМИР
+ВУЈИНОВИЋ ГЊАТИЈА
+ВУЈИНОВИЋ ЈОВО
+ВУЈИНОВИЋ ЉУБОМИР
+ВУЈИНОВИЋ МИЛОШ
+ВУЈИНОВИЋ МЛАДИНКО
+ВУЈИНОВИЋ НАДА
+ВУЈИНОВИЋ СРЕТЕН
+ВУЈИНОВИЋ СТОЈАН
+ВУЈИНОВИЋ ТЕОДОСИЈЕ
+ВУЈИНОВИЋ ВЕРА
+ВУЈИНОВИЋ ВИДОЈЕ
+ВУЈКО САВА
+ВУЈКОВ ЧЕДОМИР
+ВУЈКОВ ЂОРЂЕ
+ВУЈКОВ АЛЕКСАНДАР
+ВУЈКОВ АНТИНИЈА
+ВУЈКОВ БОЖИДАР
+ВУЈКОВ БОЖИДАР
+ВУЈКОВ ДРАГИЦА
+ВУЈКОВ ДРАГИЊА
+ВУЈКОВ ДРАГОЉУБ
+ВУЈКОВ ДУШАН
+ВУЈКОВ ДУШАН
+ВУЈКОВ-ИСАКОВ ЈАГИЦА
+ВУЈКОВ ЈЕЛЕНА
+ВУЈКОВ ЛАЗАР
+ВУЈКОВ ЛАЗАР
+ВУЈКОВ МИЛАН ДИПЛ ИНГ
+ВУЈКОВ МИЛАНА
+ВУЈКОВ МИЛАНА
+ВУЈКОВ МИЛАН
+ВУЈКОВ МИЛАН
+ВУЈКОВ МИЛЕНА
+ВУЈКОВ МИЛИЦА
+ВУЈКОВ МИЛИЦА
+ВУЈКОВ МИЛИВОЈ
+ВУЈКОВ МИРЈАНА
+ВУЈКОВ МИРОСЛАВ ДИПЛ ИНГ
+ВУЈКОВ МИРОСЛАВ
+ВУЈКОВ НАДА
+ВУЈКОВ НЕНАД
+ВУЈКОВ ОЛГА
+ВУЈКОВ ПАВЛЕ
+ВУЈКОВ ПЕРА
+ВУЈКОВ ПЕТАР ДИПЛ ПРАВНИК
+ВУЈКОВ РАДИВОЈ
+ВУЈКОВ РАДОСЛАВ
+ВУЈКОВ САВА
+ВУЈКОВ САВА
+ВУЈКОВ СЕНКА
+ВУЈКОВ СИМА
+ВУЈКОВ СЛАВКО
+ВУЈКОВ СЛОБОДАН
+ВУЈКОВ СНЕЖАНА
+ВУЈКОВ СНЕЖАНА
+ВУЈКОВ СТЕВАН
+ВУЈКОВ СВЕТОЗАР
+ВУЈКОВ ТАМАРА
+ВУЈКОВ ТОМИСЛАВ
+ВУЈКОВ ВАСА ДР
+ВУЈКОВ ВЕСЕЛИН ДР ПРОФ
+ВУЈКОВ ВЛАДИМИР
+ВУЈКОВ ЗДРАВКО
+ВУЈКОВ ЗДРАВКО
+ВУЈКОВИЋ ЂУРА
+ВУЈКОВИЋ ДРАГАН
+ВУЈКОВИЋ ГОРДАНА
+ВУЈКОВИЋ ГОСПАВА
+ВУЈКОВИЋ МИРА
+ВУЈКОВИЋ НИКОЛА
+ВУЈКОВИЋ РУЖА
+ВУЈКОВИЋ СЛОБОДАН
+ВУЈКОВИЋ СТЕВАН
+ВУЈНОВИЋ АНКА
+ВУЈНОВИЋ БОСИЉКА
+ВУЈНОВИЋ ДРАГАН
+ВУЈНОВИЋ ГОЈКО
+ВУЈНОВИЋ ГОЈКО
+ВУЈНОВИЋ ИЛИЈА
+ВУЈНОВИЋ-МИХАЈЛОВИЋ ДЕСАНКА
+ВУЈНОВИЋ МИЛАН
+ВУЈНОВИЋ МИЛАН
+ВУЈНОВИЋ ВЕЉКО
+ВУЈНОВИЋ ВЕРА
+ВУЈНОВИЋ ЗОРА
+ВУЈОШЕВИЋ БОРИСЛАВ
+ВУЈОШЕВИЋ БРАНКО ДИПЛ ОЕЦ
+ВУЈОШЕВИЋ ДОБРИСЛАВ
+ВУЈОШЕВИЋ ДУШАН
+ВУЈОШЕВИЋ КЛАРА
+ВУЈОШЕВИЋ ЉУБОМИР
+ВУЈОШЕВИЋ МИЛАН
+ВУЈОШЕВИЋ НИКОЛА
+ВУЈОШЕВИЋ РАТКО
+ВУЈОШЕВИЋ ЗОРА
+ВУЈОВИЋ ЂОРЂЕ
+ВУЈОВИЋ АЛЕКСАНДАР
+ВУЈОВИЋ БЛАЖО
+ВУЈОВИЋ БЛАГОЈЕ
+ВУЈОВИЋ БОЖИДАР
+ВУЈОВИЋ ДАНИЦА
+ВУЈОВИЋ ДАРИНКА
+ВУЈОВИЋ ДРАГОЉУБ
+ВУЈОВИЋ ДУШАН
+ВУЈОВИЋ МАРТА
+ВУЈОВИЋ МИХАИЛО
+ВУЈОВИЋ МИЛОМИР
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОВАН
+ВУЈОВИЋ МИОДРАГ
+ВУЈОВИЋ МИОМИР
+ВУЈОВИЋ МИРЈАНА
+ВУЈОВИЋ НЕЂЕЉКО
+ВУЈОВИЋ НЕЂО
+ВУЈОВИЋ НОВИЦА
+ВУЈОВИЋ ОЛГА
+ВУЈОВИЋ ПАВЛЕ
+ВУЈОВИЋ ПАВЛЕ
+ВУЈОВИЋ ПЕТКО
+ВУЈОВИЋ РАДИВОЈЕ
+ВУЈОВИЋ РАДИВОЈ
+ВУЈОВИЋ РАДОЈЕ
+ВУЈОВИЋ РАТКО
+ВУЈОВИЋ СЛОБОДАН
+ВУЈОВИЋ СЛОБОДАН
+ВУЈОВИЋ СТЕВАН
+ВУЈОВИЋ СВЕТИСЛАВ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВЕЉКО
+ВУЈОВИЋ ВЕСЕЛИН
+ВУЈОВИЋ ВЛАДО
+ВУЈОВИЋ ВЛАЈКО
+ВУЈОВИЋ ВЛАТКО
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВУКИЦА
+ВУЈОВИЋ ЗОРАН
+ВУКЧЕВИЋ ДУШАН
+ВУКЧЕВИЋ ГОРДАНА
+ВУКЧЕВИЋ ЈОВАН
+ВУКЧЕВИЋ КРСТО
+ВУКЧЕВИЋ ЉУБОМИР
+ВУКЧЕВИЋ ЉУБОМИР
+ВУКЧЕВИЋ МИЛЕНКО
+ВУКЧЕВИЋ МИЛЕНКО
+ВУКЧЕВИЋ ПЕТАР
+ВУКЧЕВИЋ САВО
+ВУКЧЕВИЋ СОФИЈА
+ВУКЧЕВИЋ СТЕВАН
+ВУКЧЕВИЋ ЗОРАН
+ВУКША ЧЕДО
+ВУКША ЖЕЉКО
+ВУКША БОРИВОЈЕ
+ВУКША ЛАЗАР
+ВУКША МИЛЕНКО
+ВУКША МИЛУТИН
+ВУКША ПЕТАР
+ВУКША ВЈЕРА
+ВУКАШЕВИЋ МИЛО
+ВУКАШЕВИЋ СЛОБОДАН
+ВУКАШИН ЈОВАН
+ВУКАШИНОВ БРАНИМИР
+ВУКАШИНОВ ЦВЕТКО
+ВУКАШИНОВ СТЕВАН
+ВУКАШИНОВИЋ ЖАРКО
+ВУКАШИНОВИЋ ЖИВАН
+ВУКАШИНОВИЋ ЂОРЂЕ
+ВУКАШИНОВИЋ БОЖИДАР
+ВУКАШИНОВИЋ БОЈАН
+ВУКАШИНОВИЋ ДРАГАН
+ВУКАШИНОВИЋ ДРАГИЊА
+ВУКАШИНОВИЋ ДРАГОЉУБ
+ВУКАШИНОВИЋ ИРЕНА
+ВУКАШИНОВИЋ ИРЕНА
+ВУКАШИНОВИЋ ЛАЗАР
+ВУКАШИНОВИЋ ЛАЗАР
+ВУКАШИНОВИЋ МИЛАН
+ВУКАШИНОВИЋ МИЛЕ
+ВУКАШИНОВИЋ МИЛИЦА
+ВУКАШИНОВИЋ МИРА
+ВУКАШИНОВИЋ МИРЈАНА
+ВУКАШИНОВИЋ МИРОСЛАВ
+ВУКАШИНОВИЋ МОМИР
+ВУКАШИНОВИЋ НИКОЛА
+ВУКАШИНОВИЋ ПАВЛЕ
+ВУКАШИНОВИЋ РАДОЈЕ
+ВУКАШИНОВИЋ СПОМЕНКА
+ВУКАШИНОВИЋ СТОЈАН
+ВУКАШИНОВИЋ ВЕРА
+ВУКАШИНОВИЋ ВЕРИЦА
+ВУКАШИНОВИЋ ВЕСЕЛИН
+ВУКАШИНОВИЋ ВИДА
+ВУКАШИНОВИЋ ЗДРАВКО
+ВУКАДИН ДОБРИВОЈЕ
+ВУКАДИН ТОМИСЛАВ
+ВУКАДИНОВ ЂОРЂЕ
+ВУКАДИНОВ ЂУРА
+ВУКАДИНОВ БОЈКА
+ВУКАДИНОВ БРАНИСЛАВ
+ВУКАДИНОВ ИСИДОР
+ВУКАДИНОВ ИВАНКА
+ВУКАДИНОВ ИВАНКА
+ВУКАДИНОВ ЈОВАН
+ВУКАДИНОВ КАТИЦА
+ВУКАДИНОВ МИЛЕНКО
+ВУКАДИНОВ МИОДРАГ
+ВУКАДИНОВ НЕНАД
+ВУКАДИНОВИЋ АНЂЕЛКО
+ВУКАДИНОВИЋ БИЉАНА
+ВУКАДИНОВИЋ БОСИЉКА
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНКО
+ВУКАДИНОВИЋ ГАБРИЈЕЛА ПРОФЕСОР
+ВУКАДИНОВИЋ ЈЕЛИЦА
+ВУКАДИНОВИЋ ЛЕПОСАВА
+ВУКАДИНОВИЋ ЉУБО
+ВУКАДИНОВИЋ МИЛЕНКО
+ВУКАДИНОВИЋ МИЛИВОЈЕ
+ВУКАДИНОВИЋ МИЉОЈКО
+ВУКАДИНОВИЋ МИЛОШ
+ВУКАДИНОВИЋ МИЛОЈЕ
+ВУКАДИНОВИЋ МИЛОРАД
+ВУКАДИНОВИЋ НИКОЛА
+ВУКАДИНОВИЋ ПАВЛЕ ДР
+ВУКАДИНОВИЋ ПЕТАР
+ВУКАДИНОВИЋ ПЕТАР
+ВУКАДИНОВИЋ СОФИЈА ЛОКАЛ
+ВУКАДИНОВИЋ СОФИЈА
+ВУКАДИНОВИЋ СТАНА
+ВУКАДИНОВИЋ СТЕВАН ДР
+ВУКАДИНОВИЋ СВЕТОЗАР
+ВУКАДИНОВИЋ СВЕТОЗАР
+ВУКАДИНОВИЋ ТАТЈАНА
+ВУКАДИНОВИЋ ВЕЛИЗАР
+ВУКАДИНОВИЋ ВЛАДИСАВ
+ВУКАДИНОВИЋ ЗОЛИКА
+ВУКАДИНОВИЋ ЗОЛИКА
+ВУКАЈЛОВ БУДИМИР
+ВУКАЈЛОВ МИРОСЛАВ
+ВУКАЈЛОВИЋ ЖИВАН ПРОФЕСОР
+ВУКАЈЛОВИЋ ЂОРЂЕ
+ВУКАЈЛОВИЋ АНКИЦА
+ВУКАЈЛОВИЋ ДАНИЛО
+ВУКАЈЛОВИЋ ДАРИНКА
+ВУКАЈЛОВИЋ ДУШАН
+ВУКАЈЛОВИЋ ЕЛИЗАБЕТА
+ВУКАЈЛОВИЋ ЛАЗАР
+ВУКАЈЛОВИЋ МИЛЕНА
+ВУКАЈЛОВИЋ МИРЈАНА
+ВУКАЈЛОВИЋ СРЕТО
+ВУКАЈЛОВИЋ СТЕВАН
+ВУКАЛИЋ МУМИН
+ВУКАЉЕВИЋ ИЛИЈА
+ВУКАЉЕВИЋ СЛАВКО
+ВУКАЛОВИЋ СВЕТЛАНА
+ВУКАНИЋ АЛЕКСАНДАР
+ВУКАНИЋ ПЕТАР
+ВУКАНИЋ СРЕТЕН
+ВУКАНИЋ ЗОРАН
+ВУКАНИЋ ЗОРАН
+ВУКАНОВИЋ ЖИВКА
+ВУКАНОВИЋ АНИЦА
+ВУКАНОВИЋ МАРИНА
+ВУКАНОВИЋ МИРОСЛАВ
+ВУКАНОВИЋ НЕБОЈША
+ВУКАНОВИЋ РАДИВОЈ
+ВУКАНОВИЋ СЛАВИМИР
+ВУКАНОВИЋ СЛОБОДАН
+ВУКАНОВИЋ СЛОБОДАН
+ВУКАС ЂОРЂЕ
+ВУКАС ЂУРО
+ВУКАС АНКИЦА
+ВУКАС БРАНКО
+ВУКАС ОМЕРКА
+ВУКАСОВИЋ БРАНИСЛАВ
+ВУКАСОВИЋ МАРИЈА
+ВУКАСОВИЋ МИЛАН
+ВУКАСОВИЋ СЛАВИЦА
+ВУКАВИЋ АЛЕКСАНДРА
+ВУКЕЛИЋ АНЂЕЛКА
+ВУКЕЛИЋ БОРИСЛАВ
+ВУКЕЛИЋ БРАНКО
+ВУКЕЛИЋ БРАНКО
+ВУКЕЛИЋ ДАРА
+ВУКЕЛИЋ ДРАГАН
+ВУКЕЛИЋ ЈОВАН
+ВУКЕЛИЋ ЉУБОМИР
+ВУКЕЛИЋ МИЛАН
+ВУКЕЛИЋ МИЛЕ
+ВУКЕЛИЋ МИЛИЦА
+ВУКЕЛИЋ МИОДРАГ
+ВУКЕЛИЋ МОМИР
+ВУКЕЛИЋ ПАВЛЕ
+ВУКЕЛИЋ ПЕТАР
+ВУКЕЛИЋ ПЕТАР
+ВУКЕЛИЋ РАДА
+ВУКЕЛИЋ РАДЕ
+ВУКЕЛИЋ СИЛВИЈЕ
+ВУКЕЛИЋ СИМО
+ВУКЕЛИЋ СЛАВКО
+ВУКЕЛИЋ СТЕВАН
+ВУКЕЛИЋ СТЕВАН
+ВУКЕЛИЋ ТОМИСЛАВ
+ВУКЕЛИЋ ВЕЉКО
+ВУКЕЛИЋ ВЕРИЦА
+ВУКЕЛИЋ ВЕСНА
+ВУКЕЛИЋ ВУКИЦА
+ВУКЕЛИЋ ЗДРАВКО ДР
+ВУКЕЛИЋ ЗОРИЦА
+ВУКЕЛИЋ ЗВОНИМИР
+ВУКЕЉА БРАНКА
+ВУКИЧЕВИЋ ДРАГОМИР
+ВУКИЧЕВИЋ ЉИЉАНА
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИТАР ДИПЛ ПРАВНИК
+ВУКИЧЕВИЋ РАНКО
+ВУКИЧЕВИЋ СПАСОЈЕ
+ВУКИЧЕВИЋ ВЕСНА
+ВУКИЋ-ЋУЛАФИЋ БРАНКА
+ВУКИЋ ЖИВКО
+ВУКИЋ АНДРЕЈ
+ВУКИЋ БОЖИДАР
+ВУКИЋ БОРИСЛАВ
+ВУКИЋ БРАНКО
+ВУКИЋ БРАНКО
+ВУКИЋ БУДИМИР
+ВУКИЋ ДЕЈАН
+ВУКИЋ ДИМИТРИЈЕ
+ВУКИЋ ДУШАН
+ВУКИЋ ИВАНКА
+ВУКИЋ ЈОВАН
+ВУКИЋ ЉУБИЦА
+ВУКИЋ ЉУБОМИР
+ВУКИЋ МАРИЈА
+ВУКИЋ МИЛАН
+ВУКИЋ МИЛИЦА
+ВУКИЋ МИРЈАНА
+ВУКИЋ МИРКО
+ВУКИЋ МОМЧИЛО
+ВУКИЋ НИКОЛА
+ВУКИЋ НИКОЛА
+ВУКИЋ НОВАК
+ВУКИЋ ПЕТАР
+ВУКИЋ СТАНКО
+ВУКИЋ СТЕВАН
+ВУКИЋ ВЕЛИМИР
+ВУКИЋ ВЛАДО
+ВУКИЋ ВУКАШИН
+ВУКИЋЕВИЋ ЂОРЂЕ
+ВУКИЋЕВИЋ ЂОРЂЕ
+ВУКИЋЕВИЋ АЛЕКСАНДАР
+ВУКИЋЕВИЋ БРАТИСЛАВ
+ВУКИЋЕВИЋ ДРАГИЦА
+ВУКИЋЕВИЋ ДУШАНКА
+ВУКИЋЕВИЋ ИСИДОР
+ВУКИЋЕВИЋ ИСИДОР
+ВУКИЋЕВИЋ МИОМИР
+ВУКИЋЕВИЋ МИРОСЛАВ
+ВУКИЋЕВИЋ МИРОСЛАВ
+ВУКИЋЕВИЋ МОМЧИЛО ДР
+ВУКИЋЕВИЋ СТАНИША
+ВУКИЋЕВИЋ ТОМА
+ВУКИЋЕВИЋ ВЕЉКО
+ВУКЛИШ ДРАГАН
+ВУКЛИШ СЛОБОДАН
+ВУКМАНОВИЋ ДАНИЛО
+ВУКМАНОВИЋ ЉУБА
+ВУКМАНОВИЋ МИЛАНА
+ВУКМАНОВИЋ МИЛАН
+ВУКМАНОВИЋ НЕНАД
+ВУКМАНОВИЋ ПЕТАР
+ВУКМАНОВИЋ СИМО
+ВУКМАНОВИЋ ВЕЛИМИР
+ВУКМАНОВИЋ ВЕРА
+ВУКМИРОВИЋ ЂОРЂЕ
+ВУКМИРОВИЋ ЂОРЂЕ
+ВУКМИРОВИЋ БОЖИДАР
+ВУКМИРОВИЋ БРАНКО
+ВУКМИРОВИЋ БРАНКО
+ВУКМИРОВИЋ ДАНЕ
+ВУКМИРОВИЋ ДРАГАН
+ВУКМИРОВИЋ ГОЈКО
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ЈАЊА
+ВУКМИРОВИЋ ЉУБОМИР
+ВУКМИРОВИЋ МИЛАН
+ВУКМИРОВИЋ МИЛАН
+ВУКМИРОВИЋ МИЛИЦА
+ВУКМИРОВИЋ МИЛОШ
+ВУКМИРОВИЋ МИЛО
+ВУКМИРОВИЋ НИКОЛА
+ВУКМИРОВИЋ ПЕТАР
+ВУКМИРОВИЋ РАНКО
+ВУКМИРОВИЋ РАНКО
+ВУКМИРОВИЋ РОДОЉУБ
+ВУКМИРОВИЋ СМИЉКА
+ВУКМИРОВИЋ СРЕЋКО
+ВУКМИРОВИЋ ВЕЛИНКА
+ВУКМИРОВИЋ ВУКИЦА
+ВУКМИРОВИЋ ЗДРАВКА
+ВУКНИЋ МАРИЈАН
+ВУКОБРАД ДРАГО
+ВУКОБРАД ЉУБОМИР
+ВУКОБРАД МАРКО
+ВУКОБРАД МИЛОШ
+ВУКОБРАТ ДАНИЦА
+ВУКОБРАТ ДРАГАН
+ВУКОБРАТ ЈОШО
+ВУКОБРАТ ЉУБОМИР
+ВУКОБРАТ МИЛАН
+ВУКОБРАТ НИКОЛА
+ВУКОБРАТ ПЕТАР
+ВУКОБРАТ ТАТЈАНА
+ВУКОБРАТ ЗДРАВКО
+ВУКОБРАТОВ РАДОВАН ДИПЛ ИНГ
+ВУКОБРАТОВ СЛОБОДАН
+ВУКОБРАТОВИЋ БОГДАН
+ВУКОБРАТОВИЋ ДАНИЦА
+ВУКОБРАТОВИЋ ЈОВАН
+ВУКОБРАТОВИЋ МИРЈАНА
+ВУКОБРАТОВИЋ НАДА
+ВУКОБРАТОВИЋ СЛАВИЦА
+ВУКОЈЧИЋ ДУШАН
+ВУКОЈА АНТУН
+ВУКОЈЕ ДУШАН
+ВУКОЈЕ ГАШО
+ВУКОЈЕ ИЛИЈА
+ВУКОЈЕ ЈОВАН
+ВУКОЈЕ МИЛАНА
+ВУКОЈЕ РАДИВОЈЕ
+ВУКОЈЕ РАДМИЛА
+ВУКОЈЕ РАДОВАН
+ВУКОЈЕ ВАЊА
+ВУКОЈЕ ВОЈО
+ВУКОЈЕВ БОГДАН
+ВУКОЈЕВ ДУШАН
+ВУКОЈЕВ ДУШАН
+ВУКОЈЕВ СЛОБОДАН
+ВУКОЈЕВИЋ ЂУРО
+ВУКОЈЕВИЋ МАРА
+ВУКОЈЕВИЋ МИЋО
+ВУКОЈЕВИЋ МИОДРАГ
+ВУКОЈЕВИЋ НИКО
+ВУКОЈЕВИЋ ВЕРИЦА
+ВУКОЈЕВИЋ ВИДОСАВ
+ВУКОЈЕВИЋ ЗОРАН
+ВУКОЈИЧИЋ БОРИСЛАВ
+ВУКОЈИЧИЋ ДРАГАН
+ВУКОЈИЧИЋ МИОДРАГ
+ВУКОЈИЧИЋ МИОДРАГ
+ВУКОЈИЧИЋ СЛАВОЉУБ
+ВУКОМАН ЕМИЛИЈА
+ВУКОМАН МИЛОРАД
+ВУКОМАН РАДА
+ВУКОМАН ЗОРАН
+ВУКОМАН ЗОРКА
+ВУКОМАНОВ ЈОВАН
+ВУКОМАНОВИЋ АНДРИЈА
+ВУКОМАНОВИЋ КАТИЦА
+ВУКОМАНОВИЋ НИКОЛА
+ВУКОМАНОВИЋ РАДОМИР
+ВУКОМАНОВИЋ СЛАВКО
+ВУКОСАВ БОРИВОЈЕ
+ВУКОСАВ БОРКО ДР
+ВУКОСАВ ДОБРИЛА
+ВУКОСАВ ЈОВО
+ВУКОСАВ МИЛОВАН
+ВУКОСАВ РАДЕ
+ВУКОСАВ СЕНКА
+ВУКОСАВ ВЛАЈКО
+ВУКОСАВЉЕВ БОГДАНКА
+ВУКОСАВЉЕВ ДАНИЦА
+ВУКОСАВЉЕВ ДРАГИЦА
+ВУКОСАВЉЕВ ЈЕЛЕНА
+ВУКОСАВЉЕВ ЛАЗАР
+ВУКОСАВЉЕВ МАКСА
+ВУКОСАВЉЕВ МИЛАН
+ВУКОСАВЉЕВ ПЕТАР
+ВУКОСАВЉЕВ САВА
+ВУКОСАВЉЕВ СЛАВИЦА
+ВУКОСАВЉЕВ СТЕВАН
+ВУКОСАВЉЕВ ВОЈИН ДИПЛ ИНГ
+ВУКОСАВЉЕВИЋ АНЂЕЛКА
+ВУКОСАВЉЕВИЋ БАРБАРА
+ВУКОСАВЉЕВИЋ ЦВИЈЕТИН
+ВУКОСАВЉЕВИЋ ДРАГИЦА
+ВУКОСАВЉЕВИЋ ИВАН
+ВУКОСАВЉЕВИЋ ЉУБИЦА
+ВУКОСАВЉЕВИЋ ЛУКА
+ВУКОСАВЉЕВИЋ МАРА
+ВУКОСАВЉЕВИЋ МИЛЕНКО
+ВУКОСАВЉЕВИЋ МИЛОРАД
+ВУКОСАВЉЕВИЋ МИРА
+ВУКОСАВЉЕВИЋ МИРОСЛАВ
+ВУКОСАВЉЕВИЋ ПАВЛЕ
+ВУКОСАВЉЕВИЋ СЛОБОДАН
+ВУКОСАВЉЕВИЋ СТОЈАН
+ВУКОСЛАВЧЕВИЋ НИКОЛА
+ВУКОСЛАВЧЕВИЋ ЗАРИЈЕ
+ВУКОСЛАВОВИЋ РАДОЊА
+ВУКОТА МАРКО
+ВУКОТА МИЛАН
+ВУКОТИЋ БРАНКО
+ВУКОТИЋ ИВА
+ВУКОТИЋ КАТАРИНА
+ВУКОТИЋ-КОВАЧЕВИЋ БИЉАНА
+ВУКОТИЋ ЛУКА
+ВУКОТИЋ МАРА
+ВУКОТИЋ МАРИЈА
+ВУКОТИЋ МИЛАН
+ВУКОТИЋ МИЛИЦА
+ВУКОТИЋ МИОДРАГ
+ВУКОТИЋ НЕНАД
+ВУКОТИЋ НИКОЛА
+ВУКОТИЋ ОЛГА
+ВУКОТИЋ ПЕРИША
+ВУКОТИЋ РАДОЈЕ
+ВУКОТИЋ РАДОВАН
+ВУКОТИЋ СОФИЈА
+ВУКОТИЋ ЗОРИЦА
+ВУКОВ ЖИВКО
+ВУКОВ ЂОРЂЕ
+ВУКОВ ЂОРЂЕ
+ВУКОВ БОШКО
+ВУКОВ БОШКО
+ВУКОВ БОЖАНА
+ВУКОВ БРАНИСЛАВ
+ВУКОВ БРАНИСЛАВ
+ВУКОВ ДРАГАН
+ВУКОВ ДРАГОЉУБ
+ВУКОВ ЈОВАН
+ВУКОВ ЈОВАН
+ВУКОВ ЛАЗАР
+ВУКОВ ЉУБОМИР
+ВУКОВ МАРИЈА
+ВУКОВ МАРКО
+ВУКОВ НИКОЛИЈА
+ВУКОВ ОЛГА
+ВУКОВ СТЕВИЦА
+ВУКОВ ВУКАШИН
+ВУКОВАЦ ДРАГАН
+ВУКОВАЦ ПАНТА
+ВУКОВИЋ ШТЕФИЦА
+ВУКОВИЋ ЖИВКО
+ВУКОВИЋ ЖИВОЈИН
+ВУКОВИЋ ЂОРЂЕ
+ВУКОВИЋ ЂУКА
+ВУКОВИЋ АЛЕКСАНДАР
+ВУКОВИЋ АЛЕКСАНДРА
+ВУКОВИЋ АЛЕКСИЈА
+ВУКОВИЋ АНДРИЈА
+ВУКОВИЋ АНТО
+ВУКОВИЋ БИЉАНА
+ВУКОВИЋ БЛАЖО
+ВУКОВИЋ БЛАГОЈЕ
+ВУКОВИЋ БОШКО
+ВУКОВИЋ БОШКО
+ВУКОВИЋ БОГИЋ
+ВУКОВИЋ БОЈАНА
+ВУКОВИЋ БОЈАНА
+ВУКОВИЋ БОРИША
+ВУКОВИЋ БОРИША
+ВУКОВИЋ БОРИВОЈ
+ВУКОВИЋ БОСИЉКА
+ВУКОВИЋ БРАНИСЛАВ
+ВУКОВИЋ БУДИМИР
+ВУКОВИЋ ЦВЕТКО
+ВУКОВИЋ ДАРИНКА
+ВУКОВИЋ ДОБРИВОЈЕ
+ВУКОВИЋ ДРАГАН
+ВУКОВИЋ ДРАГАН
+ВУКОВИЋ ДРАГОЉУБ
+ВУКОВИЋ ДРАГОСЛАВ
+ВУКОВИЋ ДРАГО
+ВУКОВИЋ ДУШАН ДР ЛЕКАР
+ВУКОВИЋ ДУШАНКА
+ВУКОВИЋ ДУШАН
+ВУКОВИЋ ДУШАН
+ВУКОВИЋ ГЕЗА НОВИНАР
+ВУКОВИЋ ГОЈКО
+ВУКОВИЋ ГОРАН
+ВУКОВИЋ ГОРДАНА
+ВУКОВИЋ ИЛИЈА
+ВУКОВИЋ ИЛИЈА
+ВУКОВИЋ ИВАН
+ВУКОВИЋ ИВАН
+ВУКОВИЋ ИВИЦА
+ВУКОВИЋ ЈАСМИНА
+ВУКОВИЋ ЈЕЛИЦА
+ВУКОВИЋ ЈОСИП
+ВУКОВИЋ ЈОВА
+ВУКОВИЋ ЈУЛИЈАНА
+ВУКОВИЋ ЈУЛИЈАНА
+ВУКОВИЋ ЉУБАН
+ВУКОВИЋ МАРГАРЕТА
+ВУКОВИЋ МАРЈЕНКА
+ВУКОВИЋ МАТО
+ВУКОВИЋ МИЛАДИН
+ВУКОВИЋ МИЛАН
+ВУКОВИЋ МИЛАН
+ВУКОВИЋ МИЛЕНА
+ВУКОВИЋ МИЛЕНА
+ВУКОВИЋ МИЛЕНКО
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈ
+ВУКОВИЋ МИЉАН
+ВУКОВИЋ МИЛКА
+ВУКОВИЋ МИЛКА
+ВУКОВИЋ МИЛОРАД
+ВУКОВИЋ МИЛУТИН
+ВУКОВИЋ МИЛУТИН
+ВУКОВИЋ МИОДРАГ
+ВУКОВИЋ МИОДРАГ
+ВУКОВИЋ МИРЈАНА
+ВУКОВИЋ МИРЈАНА
+ВУКОВИЋ МИРКО
+ВУКОВИЋ МИРКО
+ВУКОВИЋ МИРОЈЕ
+ВУКОВИЋ МИРОСЛАВ
+ВУКОВИЋ МИРОСЛАВ
+ВУКОВИЋ МИТАР
+ВУКОВИЋ МИТАР
+ВУКОВИЋ МИТА
+ВУКОВИЋ МЛАДЕН
+ВУКОВИЋ НАДА
+ВУКОВИЋ НАДА
+ВУКОВИЋ НЕДА
+ВУКОВИЋ ОБРАД
+ВУКОВИЋ ОБРАД
+ВУКОВИЋ ОЛГИЦА
+ВУКОВИЋ ОЛГИЦА
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ РАДЕНКО
+ВУКОВИЋ РАДЕ
+ВУКОВИЋ РАДОСЛАВ
+ВУКОВИЋ РАДОВАН
+ВУКОВИЋ РАТКО
+ВУКОВИЋ САВА
+ВУКОВИЋ СЕНКА
+ВУКОВИЋ СИМА
+ВУКОВИЋ СЛОБОДАН
+ВУКОВИЋ СЛОБОДАН
+ВУКОВИЋ СРЕЋКО
+ВУКОВИЋ СРЕДОЈЕ
+ВУКОВИЋ СТАНКА
+ВУКОВИЋ СТАНКА
+ВУКОВИЋ СТИПА
+ВУКОВИЋ СВЕТИСЛАВ
+ВУКОВИЋ СВЕТЛАНА
+ВУКОВИЋ СВЕТЛАНА
+ВУКОВИЋ-ТАВЧИОСКА АЛЕКСАНДРА
+ВУКОВИЋ ТОДОР
+ВУКОВИЋ ТОМИСЛАВ
+ВУКОВИЋ ВЕСНА
+ВУКОВИЋ ВИДАК
+ВУКОВИЋ ВИНКА
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИСЛАВ ДР
+ВУКОВИЋ ВЛАТКО ДИПЛ ИНГ
+ВУКОВИЋ ВОЈИСЛАВ
+ВУКОВИЋ ВОЈКО
+ВУКОВИЋ ВУЧИЋ
+ВУКОВИЋ ВУКАШИН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВЉАК БОСИЉКА
+ВУКОВЉАК ЕВИЦА
+ВУКОВЉАК МИРКО
+ВУКОВЉАК ВОЈИН
+ВУКОВОЈАЦ ОЛГА
+ВУКОВОЈАЦ ВОЈИСЛАВ
+ВУКСАН МИЛАН
+ВУКСАН МИЛИВОЈ
+ВУКСАН МИОДРАГ
+ВУКСАН НИКОЛА
+ВУКСАН РАДОСЛАВ ПРОФЕСОР
+ВУКСАН РУЖИЦА
+ВУКСАН СВЕТОЗАР
+ВУКСАН ВУКОСАВА
+ВУКСАНОВ ЉУБИЦА
+ВУКСАНОВ ВОЈИСЛАВ
+ВУКСАНОВИЋ ЖИВОРАД
+ВУКСАНОВИЋ АЛЕКСАНДАР
+ВУКСАНОВИЋ АЛЕКСАНДАР
+ВУКСАНОВИЋ ДАРКО
+ВУКСАНОВИЋ ДЕСАНКА
+ВУКСАНОВИЋ ГОРАН
+ВУКСАНОВИЋ ГОРДАНА
+ВУКСАНОВИЋ ЈОВАН
+ВУКСАНОВИЋ МИЛЕ
+ВУКСАНОВИЋ МИЛИСАВ
+ВУКСАНОВИЋ МИЛОРАД
+ВУКСАНОВИЋ МИОДРАГ
+ВУКСАНОВИЋ МИРО
+ВУКСАНОВИЋ САВО
+ВУКСАНОВИЋ СТЕВАНКА
+ВУКСИЋ СТЕВО
+ВУКСИЋ ВЕЛИМИР
+ВУКУШИЋ АНТЕ
+ВУЛАНОВИЋ РЕЉА
+ВУЛАНОВИЋ ВОЈИСЛАВ
+ВУЛЕТА БОЈАН
+ВУЛЕТА ПРЕДРАГ
+ВУЛЕТА РИСТО
+ВУЛЕТИЋ ЖЕЉКО
+ВУЛЕТИЋ ЂОРЂИЈЕ
+ВУЛЕТИЋ АНДРИЈА
+ВУЛЕТИЋ БОРИСЛАВ
+ВУЛЕТИЋ БРАНИСЛАВА
+ВУЛЕТИЋ БРАНКО
+ВУЛЕТИЋ БРАНКО
+ВУЛЕТИЋ ДАНИЦА ДР
+ВУЛЕТИЋ ДИМИТРИЈЕ
+ВУЛЕТИЋ ЈЕЛЕНА
+ВУЛЕТИЋ ЈЕЛИЦА ПРОФЕСОР
+ВУЛЕТИЋ МИЛАДИН
+ВУЛЕТИЋ МИЛАН ВЕТЕРИНАР
+ВУЛЕТИЋ МИЛЕ
+ВУЛЕТИЋ МИЛИВОЈ
+ВУЛЕТИЋ МЛАДЕН
+ВУЛЕТИЋ НАДЕЖДА
+ВУЛЕТИЋ НЕДЕЉКО
+ВУЛЕТИЋ НИКОЛА
+ВУЛЕТИЋ ОБРАД
+ВУЛЕТИЋ РАДОВАН
+ВУЛЕТИЋ СРЂАН
+ВУЛЕТИЋ ВАСИЛИЈЕ
+ВУЛЕТИЋ ВИДОСАВА
+ВУЛЕТИЋ ВИТОМИР
+ВУЛЕТИЋ ВЛАДИМИР
+ВУЛЕТИЋ ВЛАСТИМИР
+ВУЛЕТИЋ ЗОРИЦА
+ВУЛЕТИН ЗОРА
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ СПАСОЈЕ
+ВУЛИЋ ЖИКА
+ВУЛИЋ ЂОРЂЕ
+ВУЛИЋ ЂОРЂЕ
+ВУЛИЋ БОЖИДАР
+ВУЛИЋ БОРИСЛАВ
+ВУЛИЋ БРАНИСЛАВ
+ВУЛИЋ БРАНИСЛАВ
+ВУЛИЋ ДАРИНКА
+ВУЛИЋ ДЕСАНКА
+ВУЛИЋ ДРАГОЉУБ
+ВУЛИЋ ИЛИЈА
+ВУЛИЋ ЈАВОРКА
+ВУЛИЋ ЈЕЛЕНА
+ВУЛИЋ ЈЕЛЕНА
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЛУКА
+ВУЛИЋ ЛУКА
+ВУЛИЋ МИЛАНКА
+ВУЛИЋ МИЛАН
+ВУЛИЋ МИЛИВОЈЕ
+ВУЛИЋ МИЛОРАД
+ВУЛИЋ МИЛОРАД
+ВУЛИЋ МИРОСЛАВ
+ВУЛИЋ МЛАДЕН
+ВУЛИЋ МОМЧИЛО
+ВУЛИЋ НИКОЛА
+ВУЛИЋ ПЕТКО
+ВУЛИЋ СЛАВИЦА
+ВУЛИЋ СЛАВКО
+ВУЛИЋ СТЕВАН
+ВУЛИЋ ЗЛАТА
+ВУЛИЋ ЗЛАТИЈА
+ВУЛИКИЋ ЛУКА
+ВУЛИКИЋ РУЖИЦА
+ВУЛИКИЋ ВЕСЕЛИН
+ВУЛИКИЋ ВОЈИСЛАВ
+ВУЛИН АНГЕЛИНА
+ВУЛИН БРАНИСЛАВ
+ВУЛИН ГОЈКО
+ВУЛИН ЈУЛКА
+ВУЛИН МЛАДЕН
+ВУЛИН НЕНАД
+ВУЛИН НЕНАД
+ВУЛИН ПРЕДРАГ
+ВУЛИН РАДОМИР
+ВУЛИН СТЕВАН
+ВУЛИН ВУКАШИН
+ВУЉАЈ ВАСЕЉ
+ВУЉЕВИЋ ЂОКА
+ВУЛКАНИ ГОРДАНА
+ВУЛОВИЋ ДРАГИЦА
+ВУЛОВИЋ ДРАГОШ
+ВУЛОВИЋ ДРАГОЉУБ
+ВУЛОВИЋ ДРАГОМИР
+ВУЛОВИЋ ГОРАН
+ВУЛОВИЋ ПЕТАР
+ВУЛОВИЋ РАЈКО
+ВУЛОВИЋ САВО
+ВУЛОВИЋ СЛАВИША
+ВУЛОВИЋ ВЛАДИМИР
+ВУЛОВИЋ ВУКИЦА
+ВУЛСАНОВИЋ ИЛКА
+ВУНДЕРЛИХ ЈОСИП
+ВУНДУК МИРОСЛАВА
+ВУНИЋ МИЉЕНКО
+ВУНИЋ ПЕТАР
+ВУНИЋ РАДОЈКА
+ВУЊАК ЂОРЂЕ
+ВУЊАК БРАНИСЛАВА
+ВУЊАК ДУШАН
+ВУРДЕЉА НЕМАЊА ДР ПРОФ
+ВУРДЕЉА СОФИЈА
+ВУРДЕЉА ВАСА
+ВУРСТ ЈОВАНКА
+ВУРУНА БРАНКО
+ВУРУНА МАРИЈА
+ВУРУНИЋ ЗДРАВКО
+ЗАБЛЕЋАНСКИ ВЛАДА
+ЗАБРДАЦ МИЛАН
+ЗАБУНОВ ВЛАДИМИР
+ЗАДОР АНДРИЈА ДР ИУРЕ
+ЗАДРАВЕЦ ЈОСИП
+ЗАДРО НИКОЛА
+ЗАФИРОВИЋ БРАНКО
+ЗАГА МИЛАН
+ЗАГАЈЧАН КОСТА
+ЗАГОРЧИЋ ЖАРКО
+ЗАГОРЧИЋ ЖИВКО
+ЗАГОРЧИЋ ЖИВКО
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ АЛЕКСАНДАР
+ЗАГОРЧИЋ АНГЕЛИНА
+ЗАГОРЧИЋ БОРИСЛАВ
+ЗАГОРЧИЋ БОРИСЛАВ
+ЗАГОРЧИЋ ДРАГОЉУБ
+ЗАГОРЧИЋ ГАВРА
+ЗАГОРЧИЋ ГЛИГОРИЈЕ
+ЗАГОРЧИЋ ГОРАН
+ЗАГОРЧИЋ ИЛИЈА
+ЗАГОРЧИЋ ИЛИЈА
+ЗАГОРЧИЋ ИРЕНА
+ЗАГОРЧИЋ ЈАСМИНА
+ЗАГОРЧИЋ ЈЕЛЕНА
+ЗАГОРЧИЋ ЈОВАН
+ЗАГОРЧИЋ ЈОВАН
+ЗАГОРЧИЋ КРИСТИНА
+ЗАГОРЧИЋ ЛАЗАР
+ЗАГОРЧИЋ ЛАЗАР
+ЗАГОРЧИЋ ЛАЗА
+ЗАГОРЧИЋ МАРИЈА
+ЗАГОРЧИЋ МИЛАН
+ЗАГОРЧИЋ МИЛАН
+ЗАГОРЧИЋ МИЛИЦА
+ЗАГОРЧИЋ МИЛИВОЈЕ
+ЗАГОРЧИЋ МИЛИВОЈ
+ЗАГОРЧИЋ МИЛИВОЈ
+ЗАГОРЧИЋ МИЛОШ
+ЗАГОРЧИЋ МИЛОСАВ
+ЗАГОРЧИЋ-ОРШОШ ДРАГАНА
+ЗАГОРЧИЋ ПАНТА
+ЗАГОРЧИЋ ПЕТАР
+ЗАГОРЧИЋ ПЕТАР
+ЗАГОРЧИЋ ПРЕДРАГ
+ЗАГОРЧИЋ РАДИВОЈ
+ЗАГОРЧИЋ РАДОСЛАВ
+ЗАГОРЧИЋ СЛОБОДАН
+ЗАГОРЧИЋ СТЕВАН
+ЗАГОРЧИЋ СВЕТИСЛАВ
+ЗАГОРЧИЋ СВЕТОЗАР
+ЗАГОРЧИЋ УРОШ
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВУКОСАВА
+ЗАГОРЧИЋ ЗИЈАХ
+ЗАГОРАЦ БОЖИЦА
+ЗАГОРАЦ ДИМИТРИЈЕ
+ЗАГОРАЦ ДУШАН
+ЗАГОРАЦ ИВАН
+ЗАГОРАЦ МАРИЈА
+ЗАГОРАЦ МИЛЕНА
+ЗАГОРАЦ МИЛИЦА
+ЗАГОРАЦ МИЛИЦА
+ЗАГОРАЦ НЕДЕЉКО
+ЗАГОРАЦ НИКОЛА
+ЗАГОРАЦ НИКОЛА
+ЗАГОРАЦ ОСТОЈА
+ЗАГОРАЦ ПЕТАР
+ЗАГОРАЦ РАЈКО
+ЗАГОРАЦ РУЖИЦА
+ЗАГОРАЦ СИМО
+ЗАГОРАЦ ВАЛКО
+ЗАГОРЕЦ ЈОСИП
+ЗАГОРИЦА ОЗРЕН
+ЗАГРАЂА БАЈИРАМ
+ЗАХАРИЈЕВИЋ БОГДАН
+ЗАХОРАИ ЈОВАН
+ЗАХОРЕЦ ЗУЗАНА
+ЗАХОРОДНИ АНТОН
+ЗАХОРОДНИ ИВАН
+ЗАИМОВИЋ МУХАРЕМ
+ЗАЈЗОВ ЈЕЛЕНА
+ЗАКАЊ АРПАД
+ЗАКАЊ ЛАЈОШ
+ЗАКАЊ МИРКО
+ЗАКАЊ-ТОБОЛКА ЕВА
+ЗАКИЋ ЂОРЂЕ
+ЗАКИЋ БОЖИДАР
+ЗАКИЋ ДИМИТРИЈЕ
+ЗАКИЋ ДОБРИВОЈ
+ЗАКИЋ ДОБРИВОЈ
+ЗАКИЋ ИВАН
+ЗАКИЋ МИЛАН
+ЗАКИЋ САВА
+ЗАКЛАН ЂУРА
+ЗАКЛАН МИЛАН
+ЗАКЛАН НЕГИЦА
+ЗАКЛАН РАНКО
+ЗАКЛАН СЛОБОДАН
+ЗАКЛАН СТАНИША
+ЗАКЛАН ТИХОМИР
+ЗАКЛАН ТОМИСЛАВ
+ЗАЛИС ГЕОРГИЈЕ
+ЗАЛИС ЈАНИС
+ЗАМАКЛАР ЗОРАН
+ЗАМОЛО ЕДУАРД
+ЗАМУРОВИЋ АЛЕКСАНДАР
+ЗАМУРОВИЋ БОЈАНА
+ЗАМУРОВИЋ КОСТА
+ЗАМУРОВИЋ МИЛЕНА
+ЗАМУРОВИЋ ОЛГА ДР
+ЗАМУРОВИЋ СТОЈАН
+ЗАНОВЈАК ПЕТЕР
+ЗАПУНИДИС ЛЕОНИДАС
+ЗАРЕЦКИ РОЗАЛИЈА
+ЗАРИЧНИ ВЕРИЦА
+ЗАРИЧНИ ВЕРОНИКА
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ БОШКО
+ЗАРИЋ БОГДАН
+ЗАРИЋ БОРИСЛАВ
+ЗАРИЋ БРАНИСЛАВ
+ЗАРИЋ БРАТИСЛАВ
+ЗАРИЋ ДРАГА
+ЗАРИЋ ДРАГОСЛАВ
+ЗАРИЋ ДУШАН
+ЗАРИЋ ИВАНКА
+ЗАРИЋ ИВАН
+ЗАРИЋ ЈЕЛЕНА
+ЗАРИЋ ЈОВАН
+ЗАРИЋ ЈОВО
+ЗАРИЋ КАТИЦА
+ЗАРИЋ КАТИЦА
+ЗАРИЋ ЛАЗАР
+ЗАРИЋ МАРИЈА
+ЗАРИЋ МАРИЈА
+ЗАРИЋ МИКА
+ЗАРИЋ МИЛАДИН
+ЗАРИЋ МИЛАН
+ЗАРИЋ МИЛАН
+ЗАРИЋ МИЛЕНА
+ЗАРИЋ МИЛИЦА
+ЗАРИЋ МИЛИЦА
+ЗАРИЋ МИОДРАГ
+ЗАРИЋ МЛАДЕН
+ЗАРИЋ МОМЧИЛО
+ЗАРИЋ НИКОЛА
+ЗАРИЋ НИКОЛА
+ЗАРИЋ НОВАК
+ЗАРИЋ ПЕТАР
+ЗАРИЋ РАДМИЛА
+ЗАРИЋ РАЈО
+ЗАРИЋ САВА
+ЗАРИЋ СЛОБОДАН
+ЗАРИЋ СЛОБОДАН
+ЗАРИЋ СТАНИМИР
+ЗАРИЋ СТАНИСЛАВ
+ЗАРИЋ СТАНКА
+ЗАРИЋ СТЕВАН
+ЗАРИЋ ВЕСНА
+ЗАРИЋ ЗАРИЈА
+ЗАРИЋ ЗДРАВКО
+ЗАРИЋ ЗОРКА
+ЗАРИН СТЕВА
+ЗАРИНГЕР-ПИНТЕР НИКОЛА
+ЗАРКОВ КОЦА
+ЗАРЛИ КАТАРИНА
+ЗАРНОЦКИ ПАВЛЕ
+ЗАРОЛ АЛЕКСАНДАР
+ЗАРУБАЦ АЛЕКСАНДАР
+ЗАРУБАЦ БОРКА
+ЗАРУБАЦ РОМИЦА
+ЗАРУБИЦА БОЖАНА
+ЗАРУБИЦА РАДУН
+ЗАРУПСКИ ЂОРЂЕ
+ЗАРУПСКИ БРАНКО
+ЗАРУПСКИ МИЛОВАН
+ЗАТЕК МАРИЈА
+ЗАТЕЗАЛО ДУШАН ПРОФ
+ЗАТЕЗАЛО МИОДРАГ
+ЗАТЕЗАЛО ПЕТАР
+ЗАТЕЗАЛО ПРЕДРАГ
+ЗАВАРГО ЗОЛТАН
+ЗАВАРКО ШАНДОР
+ЗАВАРКО ШАНДОР
+ЗАВАРКО ШАНДОР
+ЗАВАРКО АНТАЛ
+ЗАВАРКО ЕСТЕРА
+ЗАВАРКО ИШТВАН
+ЗАВАРКО ЈАНОШ
+ЗАВАРКО КАРЛО
+ЗАВАРКО МАРИЈА
+ЗАВАРКО ВЕРА
+ЗАВАРОШ АНДРИЈА
+ЗАВИША ПЕТАР
+ЗАВИША РАНКО
+ЗАВИШИЋ ЦВИЈЕТА
+ЗАВИШИЋ МИЛАН
+ЗАВИШИЋ ПРЕДРАГ
+ЗАВИШИЋ ВИДА
+ЗАВИШИН МАРИЦА
+ЗАВИШИН МОМИР
+ЗАВИШИН САВА
+ЗАВРТАНИК ИВАН
+ЗАВРТАНИК ИВАН
+ЗАВРТАНИК МАРЈАН
+ЗАЗУЉАК СЛАВКО
+ЗБАЧНИК ЗОФИЈА
+ЗБИЉИЋ ДРАГОЉУБ
+ЗБУЋНОВИЋ ЈОВАНКА
+ЗБУЋНОВИЋ МИЛАН
+ЗБУЋНОВИЋ МИЛОШ
+ЗБУЋНОВИЋ МИТА
+ЗБУЋНОВИЋ ПАВЛЕ
+ЗБУЋНОВИЋ САВА
+ЗДЕЛАР СЛОБОДАН
+ЗДЕЊАК ЈОСИП
+ЗДИХАН МАРКО
+ЗДЈЕЛАР ДРАГАН
+ЗДЈЕЛАР МИРОСЛАВ
+ЗДЈЕЛАР ОЛГА
+ЗДЈЕЛАР ВИШЊА
+ЗДЈЕЛАР ЗДРАВКО
+ЗДЈЕЛАРИЋ БРАНКО
+ЗДЈЕЛАРИЋ ДРАГАН
+ЗДРАВЕСКИ ДУШАНКА
+ЗДРАВЕВСКИ ИЛИЈА
+ЗДРАВКОВИЋ АНЂЕЛИЈА
+ЗДРАВКОВИЋ БОГОЉУБ
+ЗДРАВКОВИЋ БОРИСЛАВ
+ЗДРАВКОВИЋ ДЕЈАН
+ЗДРАВКОВИЋ ДРАГОЉУБ
+ЗДРАВКОВИЋ ДУШАНКА
+ЗДРАВКОВИЋ ЈЕЛЕНА
+ЗДРАВКОВИЋ ЈОВАН
+ЗДРАВКОВИЋ МИХАЈЛО
+ЗДРАВКОВИЋ МИЛАН
+ЗДРАВКОВИЋ МИОДРАГ
+ЗДРАВКОВИЋ МИОДРАГ
+ЗДРАВКОВИЋ МИРОСЛАВ
+ЗДРАВКОВИЋ РАДЕ
+ЗДРАВКОВИЋ РАДЕ
+ЗДРАВКОВИЋ ТИХОМИР
+ЗДРАВКОВИЋ ТОМИСЛАВ
+ЗДРАВКОВИЋ ВЕРОЉУБ
+ЗДРАВКОВИЋ ВИДОЈЕ
+ЗДУПСКИ БОЖИДАР
+ЗЕЧАК ВОЈА
+ЗЕЧЕВИЋ ЂОРЂО
+ЗЕЧЕВИЋ АНГЕЛИНА
+ЗЕЧЕВИЋ ЦВИЈАН
+ЗЕЧЕВИЋ ДОБРИВОЈЕ ДР
+ЗЕЧЕВИЋ ДРАГАН ДР
+ЗЕЧЕВИЋ ДУШАН
+ЗЕЧЕВИЋ ГОЛУБ
+ЗЕЧЕВИЋ ГВОЗДЕН
+ЗЕЧЕВИЋ ХИМЗО
+ЗЕЧЕВИЋ КРСТО
+ЗЕЧЕВИЋ ЉУБИЦА
+ЗЕЧЕВИЋ ЉУБИНКО
+ЗЕЧЕВИЋ МАРИЈА
+ЗЕЧЕВИЋ МИЛАН
+ЗЕЧЕВИЋ МИЛАН
+ЗЕЧЕВИЋ МИЛИСАВ
+ЗЕЧЕВИЋ МИЛО
+ЗЕЧЕВИЋ МИОМИР
+ЗЕЧЕВИЋ МИРЈАНА
+ЗЕЧЕВИЋ НИКОЛА
+ЗЕЧЕВИЋ НИКОЛА
+ЗЕЧЕВИЋ НОВАК
+ЗЕЧЕВИЋ ПРЕДРАГ
+ЗЕЧЕВИЋ РАЈКО
+ЗЕЧЕВИЋ РИСТИВОЈЕ
+ЗЕЧЕВИЋ САВО
+ЗЕЧЕВИЋ СЛАВКО
+ЗЕЧЕВИЋ СЛОБОДАН
+ЗЕЧЕВИЋ СМИЉА
+ЗЕЧЕВИЋ СМИЉА
+ЗЕЧЕВИЋ СОФИЈА
+ЗЕЧЕВИЋ ВЕСНА
+ЗЕЧЕВИЋ ВЛАДИМИР
+ЗЕЧЕВИЋ ЗОРАН
+ЗЕЧИРОВИЋ ИЛМИ
+ЗЕЋИРИ ИСМАИЛ
+ЗЕЋИРИ ЗИЈА
+ЗЕЦ ЖЕЉКО
+ЗЕЦ ЂУРО
+ЗЕЦ БОШКО
+ЗЕЦ БОЖИДАР
+ЗЕЦ ДАНИЈЕЛ
+ЗЕЦ ДРАГАН
+ЗЕЦ ДРАГУТИН
+ЗЕЦ ДУШАН
+ЗЕЦ ДУШАН
+ЗЕЦ ЈОВАН
+ЗЕЦ МАРИЈА
+ЗЕЦ МАРИЈА
+ЗЕЦ МАРИНКО
+ЗЕЦ МАТА
+ЗЕЦ МИЛАН
+ЗЕЦ МИЛАН
+ЗЕЦ МИЛЕ ДИПЛ ИНГ
+ЗЕЦ МИЛОШ
+ЗЕЦ МИЛОШ
+ЗЕЦ МИЛОРАД
+ЗЕЦ МИЛОВАН
+ЗЕЦ НИКОЛА
+ЗЕЦ НИКОЛА
+ЗЕЦ РАДОВАН
+ЗЕЦ РАЈКО
+ЗЕЦ РАЈКО
+ЗЕЦ СТЕВАНИЈА
+ЗЕЦ ЗОРИЦА
+ЗЕДИ МИХАЉ
+ЗЕГА АЛЕКСАНДАР
+ЗЕГНАЛ РУДОЛФ
+ЗЕЈАК ИВАН
+ЗЕЈАК МИЛЕТА
+ЗЕЈАК РАДОШ
+ЗЕКА ГЗИМ
+ЗЕКА ХИРЗЕН
+ЗЕКА ИРМА
+ЗЕКАВИЦА ЈЕЛЕНА
+ЗЕКАВИЦА МИРЈАНА
+ЗЕКАВИЦА СЛАВИЦА
+ЗЕКАВИЦА СРЂАН
+ЗЕКИЋ МИРА
+ЗЕКОЊА ЗДРАВКО
+ЗЕКОВИЋ БОШКО
+ЗЕКОВИЋ ДРАГОМИР
+ЗЕКОВИЋ ГОРДАНА
+ЗЕКОВИЋ ХАНКИЈА
+ЗЕКОВИЋ ЈУЛИЈАНА
+ЗЕКОВИЋ ЛИЛА
+ЗЕКОВИЋ МИЛАДИН
+ЗЕКОВИЋ МИЛОШ
+ЗЕКОВИЋ ПЕТАР ДИЛП ОЕЦ
+ЗЕКОВИЋ ПЕТАР
+ЗЕКОВИЋ РАДЕНКО
+ЗЕКОВИЋ РИЗА
+ЗЕКОВИЋ ВАСО
+ЗЕКОВСКИ ЗОРИЦА
+ЗЕЛЕНБАБА РАТКО
+ЗЕЛЕНБАБА СТЕВАН
+ЗЕЛЕНХАСИЋ ЕМИР
+ЗЕЛЕЊАК АНДРИЈА
+ЗЕЛЕЊАК СТЈЕПАН
+ЗЕЛЕНКА ФРАЊА
+ЗЕЛЕНКА МАРИЈА
+ЗЕЛЕНКО ЕМА
+ЗЕЛЕНОВИЋ БОРИША
+ЗЕЛЕНОВИЋ ДРАГАН
+ЗЕЛЕНОВИЋ ЈЕЛЕНА
+ЗЕЛЕНОВИЋ ЈОВАН
+ЗЕЛЕНОВИЋ ЉУБИЦА
+ЗЕЛЕНОВИЋ ЉУБО
+ЗЕЛЕНОВИЋ МАРА
+ЗЕЛЕНОВИЋ МИЛАДИН
+ЗЕЛЕНОВИЋ МИЛАН
+ЗЕЛЕНОВИЋ МИЛИСАВ
+ЗЕЛЕНОВИЋ МИЛИСАВ
+ЗЕЛЕНОВИЋ ВЕРА
+ЗЕЛЕНОВИЋ ВЛАДИМИР
+ЗЕЛЕНСКИ АЛЕКСАНДАР
+ЗЕЛЕНСКИ АЛЕКСАНДАР
+ЗЕЛЕНСКИ ЈЕЛЕНА
+ЗЕЛЕНСКИ МИЛИЦА
+ЗЕЛИЋ ЂОРЂЕ
+ЗЕЛИЋ ИВАН
+ЗЕЛИЋ ЈАНОШ
+ЗЕЛИЋ ЈОВАН
+ЗЕЛИЋ ЛАЗАР
+ЗЕЛИЋ ЉУБА
+ЗЕЛИЋ ЉУБИЦА
+ЗЕЛИЋ ЉУБОМИР
+ЗЕЛИЋ МАРТА
+ЗЕЛИЋ ПАВЛЕ
+ЗЕЛИЋ ПЕРСИДА
+ЗЕЛИЋ ПЕТАР
+ЗЕЛИЋ РУЖИЦА
+ЗЕЛИЋ ВЛАДИМИР
+ЗЕЛИЋ ЗОЛТАН
+ЗЕЉАЈИЋ НИКОЛА ДР
+ЗЕЉИЋ СЛОБОДАН
+ЗЕЉКО МАРИЦА
+ЗЕЉКОВИЋ ЖЕЉКО
+ЗЕЉКОВИЋ ЖЕЉКО
+ЗЕЉКОВИЋ ЂУРО
+ЗЕЉКОВИЋ БОСА
+ЗЕЉКОВИЋ БРАНКО
+ЗЕЉКОВИЋ БРАНКО
+ЗЕЉКОВИЋ ДЕСИМИР
+ЗЕЉКОВИЋ ДРАГУТИН
+ЗЕЉКОВИЋ ДУШКО
+ЗЕЉКОВИЋ ИВАНКА
+ЗЕЉКОВИЋ ЈОВАН
+ЗЕЉКОВИЋ ЈОВО
+ЗЕЉКОВИЋ КРИСТИНА
+ЗЕЉКОВИЋ ЉИЉАНА
+ЗЕЉКОВИЋ МАРКО
+ЗЕЉКОВИЋ МИЛАН
+ЗЕЉКОВИЋ МИЛАН
+ЗЕЉКОВИЋ МИЛИЋ
+ЗЕЉКОВИЋ МИЉА
+ЗЕЉКОВИЋ МИЛОШ
+ЗЕЉКОВИЋ МИРКО
+ЗЕЉКОВИЋ ОСТОЈА
+ЗЕЉКОВИЋ РАДМИЛА
+ЗЕЉКОВИЋ РАНКО
+ЗЕЉКОВИЋ РАТКО
+ЗЕЉКОВИЋ СИМА
+ЗЕЉКОВИЋ СТЕВО
+ЗЕЉКОВИЋ СТОЈАНКА
+ЗЕЉКОВИЋ ТОДЕ
+ЗЕЉКОВИЋ ТОМА
+ЗЕЉКОВИЋ ВЕРА
+ЗЕЉКОВИЋ ВЛАЈКО
+ЗЕЉКОВИЋ ВУКАШИН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕМБЕРИ ФЕРЕНЦ
+ЗЕМБЕРИ ЈОСИП
+ЗЕМБЕРИ РОБЕРТ
+ЗЕМКО ШАНДОР
+ЗЕМЉАК ИВАН
+ЗЕМЉАНАЦ МИЛАНКА
+ЗЕНТАИ РОБЕРТ ДИПЛ ИНГ
+ЗЕНУН АВДО
+ЗЕНЗЕРОВИЋ ПАВЛЕ
+ЗЕРДО БОЖИДАР
+ЗЕРДО МИЛОРАД
+ЗЕРДО РАДОСЛАВ
+ЗЕРДО ЗЛАТА
+ЗЕРЕМСКИ ДАНИЛО
+ЗЕРЕМСКИ ДРАГАН
+ЗЕРЕМСКИ ДУШАН
+ЗЕРЕМСКИ КАМЕНКО
+ЗЕРЕМСКИ НАДА
+ЗЕРЕМСКИ НОВАК
+ЗЕРЕМСКИ ПЕТАР
+ЗЕРЕМСКИ ПЕТАР
+ЗЕРЕМСКИ ПИРОШКА
+ЗЕРЕМСКИ РАДОЈКА
+ЗЕРЕМСКИ РАНКО
+ЗЕРЕМСКИ РАТОМИР
+ЗЕРЕМСКИ РУЖИЦА
+ЗЕРЕМСКИ СЛАВИЦА
+ЗЕРЕМСКИ СТЕВАН
+ЗЕРЕМСКИ СТЕВАН
+ЗЕРЕМСКИ ТЕОФАН
+ЗЕРЕМСКИ ТОМИСЛАВ
+ЗЕРЕМСКИ ВЕРА
+ЗЕРЕМСКИ ВЛАДИМИР
+ЗЕРЕМСКИ ВУЈАДИН
+ЗЕЗДИН АЛЕКСАНДАР ДР
+ЗГОМБА ЛАЗАР
+ЗГОМБА ВЛАДИМИР
+ЗГОЊАНИН МИЛАН
+ЗГОЊАНИН РАДЕ
+ЗГОЊАНИН РУЖА
+ЗИДАР МАРИЈАН
+ЗИКОВ АНДРИЈА
+ЗИКОВ ДРАГОЉУБ
+ЗИМА ЧАБА
+ЗИМА РУДОЛФ
+ЗИМАЊИ ЈОВАН
+ЗИМОЊА ЉУБОМИР
+ЗИМОЊИЋ ВЛАДИМИР
+ЗИНАИЋ ЦВИЈЕТА
+ЗИНАИЋ УРОШ
+ЗИРАМОВ ЖАРКО
+ЗИРАМОВ ЈЕВРОСИМА
+ЗИРАМОВ ЈЕВРОСИМА
+ЗИРАМОВ САВА
+ЗИРАМОВ СТЕВАН
+ЗИРДУХ МАРИЈАН
+ЗИРОЈЕ ДРАГАН
+ЗИРОЈЕВИЋ АНЂА
+ЗИРОЈЕВИЋ ГОЈКО
+ЗИРОЈЕВИЋ МИЛЕНКО
+ЗИРОЈЕВИЋ МЛАДЕН
+ЗИРОЈЕВИЋ ОБРАД
+ЗИРОЈЕВИЋ ТОМИСЛАВ
+ЗИСИЈАДЕС МИРЈАНА
+ЗИВЛАК БРАНКО
+ЗИВЛАК ЈЕЛКА
+ЗИВЛАК ЈОВАН
+ЗИВЛАК ПЕРО
+ЗИВЛАК ПЕРО
+ЗИВЛАК ВЛАДИМИР
+ЗИВЛАКОВИЋ ДРАГОЉУБ
+ЗЈАЧИЋ ЂОРЂЕ
+ЗЈАЧИЋ ЂОРЂЕ
+ЗЈАЧИЋ БРАНКО
+ЗЈАЈИЋ КРСТАН
+ЗЈАЛИЋ ДРАГОМИР АДВОКАТ
+ЗЈАЛИЋ ДРАГОМИР
+ЗЈАЛИЋ МАРГИТА
+ЗЈЕВАЛО АНКИЦА
+ЗЛАТАНОВИЋ БЛАГОЈЕ
+ЗЛАТАНОВИЋ ЦВЕТКО
+ЗЛАТАНОВИЋ РАДИВОЈ
+ЗЛАТАНОВИЋ ТИХОМИР
+ЗЛАТАНОВИЋ ВЛАДИМИР
+ЗЛАТАНОВСКИ ДИМИТРИЈЕ
+ЗЛАТАНОВСКИ РУСЕ
+ЗЛАТАР МИЛЕНКО
+ЗЛАТАРЕВ ДУШАН
+ЗЛАТАРЕВ ДУШАН
+ЗЛАТАРЕВ ВЕРИЦА
+ЗЛАТАРИЋ МОМЧИЛО
+ЗЛАТАРИЋ ВОЈИСЛАВ
+ЗЛАТАРОВ МИЛОВАН
+ЗЛАТЕК ЛАЗАР
+ЗЛАТИЧАНИН ТОШО
+ЗЛАТИЋ МИЛОРАД
+ЗЛАТИЋ РАДОСЛАВ
+ЗЛАТИЋ ВЕСЕЛИН
+ЗЛАТКОВИЋ БОШКО
+ЗЛАТКОВИЋ БОРИСЛАВ
+ЗЛАТКОВИЋ ЈЕЛИЦА
+ЗЛАТКОВИЋ-ЈОВИЋ ОЛГИЦА
+ЗЛАТКОВИЋ КАТАРИНА
+ЗЛАТКОВИЋ МЕЛАНИЈА
+ЗЛАТКОВИЋ РУСОМИР
+ЗЛАТКОВИЋ СЛАЂАНА
+ЗЛАТКОВИЋ СЛАВКО
+ЗЛАТОНИЋ СЛАВКО
+ЗЛАТОВЕРХОВНИКОВ ЂОРЂЕ
+ЗЛАТОВИЋ ЈЕЛИСАВЕТА
+ЗЛАТОВИЋ НИКОЛА
+ЗЛИЧИЋ АЛЕКСАНДРА
+ЗЛИЧИЋ ДАРИНКА
+ЗЛИЧИЋ ДИМИТРИЈЕ
+ЗЛИЧИЋ ДУШАНКА ДИПЛ ИНГ
+ЗЛИЧИЋ ДУШАН
+ЗЛИЧИЋ ИВАН
+ЗЛИЧИЋ КАТИЦА
+ЗЛИЧИЋ ЉУБИЦА
+ЗЛИЧИЋ МИЛАН
+ЗЛИЧИЋ МИЛОРАД
+ЗЛИЧИЋ РАДОВАН
+ЗЛИЧИЋ ВАСИЉКА
+ЗЛОЈУТРО МИЋО
+ЗЛОЈУТРО МИХАЈЛО
+ЗЛОЈУТРО СТЕВО
+ЗЛОЈУТРО ВАСА
+ЗЛОКОЛИЦА ЖИВКО
+ЗЛОКОЛИЦА ЂОРЂЕ
+ЗЛОКОЛИЦА БОШКО
+ЗЛОКОЛИЦА ЈОРГОВАНКА
+ЗЛОКОЛИЦА ЈОВАН
+ЗЛОКОЛИЦА ЈОВАН
+ЗЛОКОЛИЦА ЛАЗАР
+ЗЛОКОЛИЦА ЉУБИЦА
+ЗЛОКОЛИЦА МАРКО
+ЗЛОКОЛИЦА МИЛОШ
+ЗЛОКОЛИЦА МИОДРАГ
+ЗЛОКОЛИЦА НИКОЛА
+ЗЛОКОЛИЦА НОВАК
+ЗЛОКОЛИЦА СЛАВКО
+ЗЛОКОЛИЦА СЛАВНА
+ЗЛОКОЛИЦА СТЕВАН
+ЗЛОКОЛИЦА СТЕВАН
+ЗЛОКОЛИЦА ТОДОР
+ЗЛОКОЛИЦА ВЛАДА
+ЗЛОКОЛИЦА ЗЛАТА
+ЗМИЈАЊАЦ МИЛАН
+ЗМРЗЛИКАР МИРЈАНА
+ЗОЋЕВИЋ МАРИЈА
+ЗОЋЕВИЋ ВИТОР
+ЗОБЕНИЦА БИЉАНА
+ЗОБЕНИЦА ДАНИЦА
+ЗОБЕНИЦА МИРЈАНА
+ЗОГОВИЋ ВУК
+ЗОКИ СТЕВАН
+ЗОКИЋ РАДОВАН
+ЗОЛНАИ ТОМАШ
+ЗОЛЊАН ПАВЕЛ
+ЗОЛОТИЋ КАТАРИНА
+ЗОЛОТИЋ ВЕЛИНКА
+ЗОЛОТИЋ ВУКОСАВ
+ЗОМБОРАЦ ЗВОНКО
+ЗОНА ДИВНА
+ЗОНАИ ПАЛ
+ЗОНИЋ ЉУБАН
+ЗОНИЋ РИЗАХ
+ЗОРАД МИХАЉ
+ЗОРАД СТЕВАН
+ЗОРАЈА ЂУРА
+ЗОРАЈА ДРАГАН
+ЗОРАЈА ИГЊАТ
+ЗОРАЈА ПЕТАР
+ЗОРАЈА СТЕВАН
+ЗОРАНИЋ СЛАВИЦА
+ЗОРАНОВИЋ ДУШАНКА
+ЗОРАНОВИЋ ИЛИЈА
+ЗОРАНОВИЋ ЛАЗАР
+ЗОРАНОВИЋ ЛАЗАР
+ЗОРАНОВИЋ МИЛАН
+ЗОРАНОВИЋ МИОДРАГ
+ЗОРАНОВИЋ СОФИЈА
+ЗОРАНОВИЋ СПАСА
+ЗОРАНОВИЋ СТЕВАН
+ЗОРАНОВИЋ СВЕТЛАНА
+ЗОРИЧИЋ ДРАГОЉУБ
+ЗОРИЋ ЧЕДО
+ЗОРИЋ ЂОРЂЕ
+ЗОРИЋ ЂОРЂЕ
+ЗОРИЋ ЂУРЂИЦА
+ЗОРИЋ ЂУРИЦА
+ЗОРИЋ ЂУРО
+ЗОРИЋ ЂУРО
+ЗОРИЋ ЂУРО
+ЗОРИЋ АНЂЕЛКА
+ЗОРИЋ БОШКО
+ЗОРИЋ БОЖИДАР
+ЗОРИЋ БОГДАН
+ЗОРИЋ БОГОЉУБ
+ЗОРИЋ БОРИВОЈ
+ЗОРИЋ БОРО
+ЗОРИЋ БОРО
+ЗОРИЋ БРАНКА
+ЗОРИЋ БРАНКО
+ЗОРИЋ ДАРИНКА
+ЗОРИЋ ДАРКО
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГОЉУБ
+ЗОРИЋ ДУШАНКА
+ЗОРИЋ ДУШАН
+ЗОРИЋ ДУШАН
+ЗОРИЋ-ГАРДИНОВАЧКИ МАРИЈАНА
+ЗОРИЋ ГАВРИЛО
+ЗОРИЋ ГОРДАНА
+ЗОРИЋ ЈЕЛИСАВЕТА
+ЗОРИЋ ЈЕЛИСАВЕТА
+ЗОРИЋ ЈОВАН
+ЗОРИЋ КАТА
+ЗОРИЋ КЛАРА
+ЗОРИЋ КОСТАДИН
+ЗОРИЋ КОВИЉКА
+ЗОРИЋ ЛАЗАР
+ЗОРИЋ ЛУКА
+ЗОРИЋ МАРИЈА
+ЗОРИЋ МАРКО
+ЗОРИЋ МИКА
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛЕВА
+ЗОРИЋ МИЛИЦА
+ЗОРИЋ МИЛИЦА
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИОДРАГ
+ЗОРИЋ МИРКО ИНГ
+ЗОРИЋ МИРКО
+ЗОРИЋ МИРОСЛАВ
+ЗОРИЋ НИКОЛА
+ЗОРИЋ НИКОЛА
+ЗОРИЋ НИКОЛА
+ЗОРИЋ ПАВЛЕ
+ЗОРИЋ ПЕРА
+ЗОРИЋ ПЕТАР
+ЗОРИЋ ПЕТКО
+ЗОРИЋ РАДЕ
+ЗОРИЋ РАДЕ
+ЗОРИЋ САВА
+ЗОРИЋ СИМА
+ЗОРИЋ СИМЕОН
+ЗОРИЋ СЛАВИЦА
+ЗОРИЋ СЛОБОДАН
+ЗОРИЋ СНЕЖАНА
+ЗОРИЋ СОКА
+ЗОРИЋ СПАСОЈЕ
+ЗОРИЋ СТАНКО
+ЗОРИЋ СТОЈАН
+ЗОРИЋ СВЕТКО
+ЗОРИЋ СВЕТКО
+ЗОРИЋ ВАСИЛИЈЕ
+ЗОРИЋ ВЕЛИМИР
+ЗОРИЋ ВЕЉКО ДИПЛ ИНГ
+ЗОРИЋ ВЛАДИСЛАВ
+ЗОРИЋ ВЛАДО
+ЗОРИЋ ВОЈИН
+ЗОРИЋ ВОЈКА
+ЗОРИЋ ЗДРАВКА
+ЗОРИЋ ЗОРИЦА
+ЗОРИЋ ЗВОНИМИР
+ЗОРИЦА АЦО
+ЗОРИЦА ДУШАН
+ЗОРИЦА МАРКО
+ЗОРИЈАН ЕМИЛ
+ЗОРЈАН БРАНКО
+ЗОРЈАН ЈАНКО
+ЗОРКИЋ ЖИВКО
+ЗОРНИЈА БРАНКО
+ЗОРНИЈА ВЛАДИСЛАВ
+ЗОРНИК АЛДА
+ЗОРЗИЋ МИЛОРАД
+ЗОТИН ЂОРЂЕ
+ЗОТИН САВА
+ЗОТИН СЛАВОЉУБ
+ЗОТОВИЋ АЛЕКСАНДАР
+ЗОТОВИЋ ОБРАД
+ЗОВИЋ АНА
+ЗОВИЋ ДУШАН
+ЗОВИЋ МИЛОВАН
+ЗОВИЋ МИРОСЛАВ
+ЗОВКО ШИМУН
+ЗОВКО ИЛИЈА
+ЗОВКО ЈОСИП
+ЗОВКО МАНДА
+ЗОВКО МАРЈАН
+ЗОЗУК ЉУБОМИР
+ЗРИЛИЋ НАДА
+ЗРИЛИЋ ВЕРА
+ЗРИЛИЋ ВЛАДИМИР ДР ЛЕКАР
+ЗРНИЋ ШПИРО
+ЗРНИЋ ЂОРЂЕ
+ЗРНИЋ ЂУРО
+ЗРНИЋ ЂУРО
+ЗРНИЋ БРАНКО
+ЗРНИЋ ДУШАН
+ЗРНИЋ ГОЈКО
+ЗРНИЋ ГОЈКО
+ЗРНИЋ ЈОВАН
+ЗРНИЋ ЛАЗАР
+ЗРНИЋ МАЈА
+ЗРНИЋ МАЛИНА
+ЗРНИЋ МАНЕ ДИПЛ ИНГ
+ЗРНИЋ МАНЕ
+ЗРНИЋ МАРИНКО
+ЗРНИЋ МИЛАН
+ЗРНИЋ МИЛАН
+ЗРНИЋ МИЛОШ
+ЗРНИЋ МИРЈАНА
+ЗРНИЋ МИРОЉУБ
+ЗРНИЋ НЕНАД
+ЗРНИЋ НИКОЛА
+ЗРНИЋ ПЕТАР
+ЗРНИЋ СИНИША
+ЗРНИЋ СЛОБОДАН
+ЗРНИЋ СРЂАН
+ЗРНИЋ ВЛАДО
+ЗРНИЋ ЗОРАН
+ЗРНИЋ ЗОРАН
+ЗУБАЦ ЧЕДОМИР
+ЗУБАЦ ДИВНА
+ЗУБАЦ МИЛАН
+ЗУБАЦ ПЕРО
+ЗУБАК СТЕВАН
+ЗУБАН ПЕТАР
+ЗУБАНОВ БРАНИСЛАВ
+ЗУБАНОВ ВЛАДИМИР
+ЗУБЕР ДУШАН
+ЗУБЕР МАРКО
+ЗУБЕРЕЦ ЈОВАН
+ЗУБИЋ ЖАРКО
+ЗУБИЋ ЂУРЂА
+ЗУБИЋ БИЉАНА
+ЗУБИЋ БОЖО
+ЗУБИЋ БРАНИСЛАВА
+ЗУБИЋ ДРАГО
+ЗУБИЋ ЈОВО
+ЗУБИЋ ЛАЗО
+ЗУБИЋ ПЕТАР
+ЗУБИЋ РАДОСЛАВ
+ЗУБИЋ РАТКО
+ЗУБИЋ ВЕРА
+ЗУБИЋ ВЕРКА
+ЗУБОВ АДЕЛА
+ЗУБОВИЋ АНДРИЈА
+ЗУБОВИЋ МИРЈАНА
+ЗУБОВИЋ СЛОБОДАН
+ЗУБОВИЋ СТЕВАН
+ЗУЦАЈИЋ ЈЕЛЕНА
+ЗУКИЋ ГОЈКО
+ЗУКОВИЋ МИЛИНКО
+ЗУЛИЋ АГНЕШ
+ЗУМБУЛОВИЋ ПРЕДРАГ
+ЗУПАНЧИЋ ФРАНЦ
+ЗУПАНЧИЋ ИВАН
+ЗУПАНЦ ДАРКО
+ЗУПАНЦ РАЈКО
+ЗУПКОВ ЂУРА
+ЗУПКОВ МИРОСЛАВ
+ЗУРКОВИЋ ЂОРЂЕ
+ЗУРКОВИЋ АЛЕКСАНДАР
+ЗУРКОВИЋ БОГОЉУБ
+ЗУРКОВИЋ ДУШАН
+ЗУРКОВИЋ ГАВРА
+ЗУРКОВИЋ МИРЈАНА
+ЗУРКОВИЋ НИКОЛА
+ЗУРКОВИЋ РАДОСЛАВ
+ЗУРКОВИЋ РУЖА
+ЗУРКОВИЋ ВЕРА
+ЗУРОВАЦ ЈОВО
+ЗУРОВАЦ ВЕЉКО
+ЗУВИЋ ОБРАД
+ЗУЗАКУ РЕЏЕП
+ЗВАРА ЈУЛИЈА
+ЗВЕКАНОВИЋ ЈОСИП
+ЗВЕКИЋ ДУШАНКА
+ЗВЕКИЋ ЈУГОСЛАВ
+ЗВЕКИЋ МАРИЈА
+ЗВЕКИЋ МИЛАН
+ЗВЕКИЋ НАДА
+ЗВЕКИЋ ПЕТАР
+ЗВЕКИЋ СИНИША
+ЗВЕКИЋ ВЕЛИМИР
+ЗВЕРЖИНА ЈОСИП
+ЗВЕЗДАНОВИЋ БОРА
+ЗВЕЗДАНОВИЋ ТОМА
+ЗВЕЗДИН ЈОВАНКА
+ЗВИЈЕР МИЛОРАД
+ЗВИЗДИЋ МЕХМЕД
+ЗВОШЕЦ КЛАРА
+ЗВОНАРЕВИЋ КАТА
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt
new file mode 100644
index 0000000..343ded9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+虹如
+丁一贤
+丁川伟
+丁心岚
+丁弘光
+丁任法
+丁志宏
+丁幸姬
+丁俊夫
+丁建文
+丁映纯
+丁羿文
+丁哲
+丁伟民
+丁国梅
+丁淑玲
+丁苏南
+丁毓彦
+丁雍哲
+丁绮慧
+丁慧岚
+丁璟枫
+丁誉琳
+丁鋐镒
+卜正伦
+于弋翔
+于秀美
+于秉弘
+于清华
+于殿圣
+山杰
+尹寸欣
+尹居才
+尹振威
+尹瑞丰
+尹晓恩
+仇家琪
+孔守中
+孔智杰
+孔繁霖
+尤心瑜
+尤吟文
+尤良
+尤明仲
+尤俊响
+尤星策
+尤伟仕
+尤净缨
+尤钦乐
+尤盟贵
+尤宽宏
+尤韵琇
+尤莳萱
+文志忠
+文真花
+文仪咏
+方士铭
+方天中
+方文锋
+方永清
+方汝育
+方孝君
+方志明
+方秀敏
+方佳俊
+方幸宜
+方怡洁
+方长扬
+方俊雄
+方奕斌
+方建智
+方彦程
+方映芬
+方柏钦
+方秋锦
+方若珊
+方重凯
+方晋德
+方健刚
+方彩宜
+方淑芬
+方淑儒
+方凯玲
+方景弘
+方策民
+方雅琪
+方爱珍
+方瑞远
+方裕钦
+方嘉兴
+方翠鸿
+方慧琴
+方静宜
+方琼仪
+方丽雅
+方钟锋
+方菀萍
+毛文勇
+毛佩娟
+毛彦乔
+毛淑芬
+毛汉梅
+水祥苓
+牛贵贤
+王一珍
+王乃俐
+王力平
+王上维
+王士忠
+王士荣
+王士豪
+王大昌
+王子成
+王子英
+王子熙
+王小芬
+王中平
+王中憓
+王尹圣
+王仁君
+王仁宗
+王仁舜
+王元助
+王元兴
+王友志
+王天文
+王少文
+王心忠
+王心怡
+王心智
+王文平
+王文君
+王文志
+王文杰
+王文郁
+王文琪
+王文瑶
+王文鸿
+王方怡
+王月婷
+王世宇
+王世明
+王世杰
+王世广
+王丕铨
+王可欣
+王巧莹
+王弘毅
+王正威
+王正达
+王永仁
+王永升
+王永诚
+王玉文
+王玉珠
+王玉云
+王生勋
+王立梅
+王立玮
+王仲琦
+王光麃
+王吉佳
+王如玉
+王宇清
+王安凯
+王旭全
+王有权
+王自强
+王佐辅
+王伯逸
+王利生
+王君瑞
+王妙红
+王孝君
+王宏仁
+王宏哲
+王宏嘉
+王序纶
+王志仁
+王志文
+王志弘
+王志呈
+王志忠
+王志峰
+王志伟
+王志清
+王志钦
+王志诚
+王志豪
+王志铭
+王杏如
+王秀云
+王秀芬
+王秀珠
+王秀雯
+王秀椿
+王育德
+王谷神
+王亚志
+王依韵
+王佳珍
+王佳琪
+王佩
+王佩音
+王佩诗
+王坤贤
+王孟谦
+王宗棋
+王宜彦
+王冈陵
+王念慈
+王怡仁
+王怡文
+王怡方
+王怡珍
+王怡清
+王怡婷
+王怡晴
+王怡雅
+王怡苹
+王承舜
+王明仁
+王明珊
+王明富
+王昀珩
+王欣之
+王欣慧
+王泓翔
+王治邦
+王玫桦
+王芳慧
+王邵郁
+王金华
+王雨湘
+王亭钧
+王信仁
+王信泰
+王信富
+王信裕
+王俊仁
+王俊立
+王俊彦
+王俊清
+王俊杰
+王俊凯
+王俊凯
+王俊富
+王俊钦
+王俊超
+王俊道
+王俊龙
+王俞文
+王冠伦
+王冠然
+王则胜
+王劲凌
+王品淇
+王奕君
+王奕钧
+王姿今
+王姿萍
+王威能
+王宣卿
+王建山
+王建文
+王建政
+王建凯
+王建钦
+王建雄
+王建斌
+王彦能
+王彦智
+王律之
+王思捷
+王思洁
+王政治
+王政权
+王昭人
+王昭淑
+王昭懿
+王星皓
+王昱凯
+王昱苹
+王柏欣
+王柏尧
+王柏钧
+王派轩
+王为蒨
+王玲英
+王盈心
+王盈杰
+王盈雅
+王祈钧
+王秋惠
+王纪
+王美玉
+王美玲
+王美淑
+王美惠
+王美雯
+王美懿
+王致棠
+王若筑
+王英文
+王英蓉
+王衍易
+王贞懿
+王郁欣
+王郁婷
+王郁菁
+王郁珺
+王韦翔
+王修兰
+王哲聪
+王家伟
+王家瑜
+王展玮
+王悦如
+王振宇
+王振浩
+王时蔚
+王桂岑
+王海天
+王浩伦
+王佩伦
+王佩璇
+王素卿
+王纯美
+王茹馨
+王伟民
+王伟州
+王伟军
+王伟德
+王健民
+王健勋
+王国
+王国彦
+王国隆
+王国龙
+王执信
+王培桦
+王婉瑜
+王崇明
+王昆龙
+王彩霞
+王惇慧
+王启宗
+王启樵
+王敏贞
+王敏铨
+王晨晔
+王梅兰
+王淳慧
+王清鸿
+王淑怡
+王淑冠
+王淑眉
+王淑娟
+王淑媛
+王淑雯
+王淑慧
+王淑韵
+王净莹
+王祥宇
+王祥霖
+王绍真
+王莉汶
+王莉雯
+王雪如
+王杰立
+王凯弘
+王凯怡
+王凯蒂
+王胜弘
+王胜雄
+王博文
+王博修
+王尧弘
+王婷仪
+王富昌
+王复辉
+王惠君
+王惠玲
+王惠敏
+王惠慧
+王敦正
+王晴姿
+王景元
+王景泉
+王智弘
+王智立
+王智益
+王智鸣
+王智龙
+王朝永
+王朝键
+王钦帝
+王湘云
+王琪
+王琦枚
+王皓正
+王紫雯
+王翔宁
+王舒瑜
+王舜生
+王菁兰
+王咏慧
+王贵龙
+王逸修
+王进鸿
+王闵韦
+王雅伶
+王雅姿
+王雅贞
+王雅惠
+王雅雯
+王雅仪
+王雅慧
+王雯
+王云生
+王顺鸿
+王勤善
+王意惠
+王慈庆
+王爱嘉
+王敬翔
+王新慧
+王榆富
+王毓菁
+王毓煇
+王照兴
+王瑞吟
+王瑞烽
+王瑞云
+王瑞颐
+王瑞芗
+王盟仁
+王棱钧
+王圣
+王圣尤
+王圣淳
+王圣棋
+王圣维
+王圣玮
+王裕正
+王裕智
+王诗郁
+王诗婷
+王诗雅
+王诗馨
+王道仁
+王钜翔
+王靖雯
+王鼎允
+王嘉君
+王嘉郁
+王嘉琪
+王嘉农
+王嘉慧
+王嘉兴
+王嘉龄
+王彰懋
+王荣发
+王汉祥
+王睿君
+王硕庆
+王福祥
+王维如
+王维雯
+王维灿
+王翠华
+王苍龙
+王豪杰
+王铭梅
+王铭鸿
+王凤宜
+王仪颖
+王德皓
+王庆堂
+王慧君
+王慧英
+王慧凯
+王慧雯
+王慧静
+王标钦
+王瑾瑜
+王辉铭
+王儒隆
+王宪盟
+王晓音
+王晓雯
+王晓玮
+王燕强
+王兴邦
+王蕙容
+王锡禄
+王锦慧
+王静怡
+王静琪
+王静慧
+王爵暐
+王臆铃
+王薇媛
+王谦维
+王鸿志
+王鸿钧
+王礼谦
+王宠惠
+王瀚基
+王琼佩
+王琼瑶
+王绘岚
+王证雄
+王韵淑
+王鹏
+王麒钧
+王丽芬
+王丽淑
+王丽琦
+王丽雯
+王麓斯
+王宝龙
+王继尧
+王耀晖
+王耀庆
+王耀铎
+王钟铭
+王馨敏
+王馨苹
+王龄梓
+王俪颖
+王樱娟
+王跃霖
+王显卉
+王芊雯
+王姵雯
+王浟美
+王琇姿
+王翊萤
+王棨德
+王琮玮
+王琡雯
+王嫆棻
+王玮铃
+王筱婷
+王筱萱
+王钰欣
+王钰植
+王蓁仪
+王薏雯
+王嬿淑
+世潓静
+丘真绮
+冉兆珍
+包志文
+包宫维
+古一真
+古月娥
+古玉凤
+古秀铃
+古佩玉
+古承弘
+古明晟
+古俊纲
+古英山
+古桂菊
+古惟铭
+古莉霜
+古智伟
+古云仁
+古诗仪
+古学涵
+古俶绮
+司顺安
+史先鸿
+史明原
+史国福
+史圣鸿
+史曜彰
+左宗元
+左蓌
+甘永裕
+甘孟龙
+甘政弘
+甘惠华
+甘霈霖
+田世贤
+田兆琪
+田沐恩
+田佩灏
+田怡
+田芳茹
+田英志
+田佩促
+田淑君
+田钦文
+田嘉玲
+田晓钧
+田璧菀
+申志斌
+申富鑫
+白大尹
+白全成
+白岑怡
+白佳渝
+白宜铮
+白欣松
+白玲慈
+白振源
+白耿行
+白淑瑜
+白喜文
+白舜元
+白煌麒
+白荣修
+白静如
+白丽娜
+石乃如
+石世名
+石玉凤
+石旭生
+石育玟
+石佳蓉
+石宗仁
+石明周
+石芳珊
+石美玲
+石峻平
+石纯绮
+石彩慧
+石杰宇
+石朝安
+石雅惠
+石庆和
+石锦航
+石馥瑄
+石玮静
+伍世扬
+伍秀蓉
+伍建文
+伍家谊
+伍健鹏
+伍碧玲
+任才俊
+任君敏
+任俊儒
+任纯慧
+任新兰
+任筱清
+危明康
+向西阳
+向德容
+安志伟
+成丹玲
+曲昌隆
+朱乙真
+朱心怡
+朱文碧
+朱世钧
+朱正文
+朱玉汶
+朱亦丹
+朱百晟
+朱妍如
+朱希振
+朱志洋
+朱沛怡
+朱育佑
+朱育莹
+朱佳琪
+朱宗蔚
+朱念英
+朱怡臻
+朱东应
+朱秉慧
+朱邱明
+朱俊祥
+朱俊龙
+朱奎州
+朱建泰
+朱彦儒
+朱政哲
+朱柏苍
+朱珍慧
+朱秋慧
+朱若梅
+朱郁庭
+朱原宏
+朱家正
+朱家欣
+朱家慧
+朱容练
+朱峰谊
+朱时彦
+朱书贤
+朱殷廷
+朱佩仪
+朱祐呈
+朱纯莹
+朱伟杰
+朱健诚
+朱培萱
+朱康铭
+朱敏道
+朱淑惠
+朱陈启源
+朱寓理
+朱朝麟
+朱咏联
+朱雅铃
+朱嗣芬
+朱瑞勇
+朱达明
+朱荣宏
+朱福山
+朱凤薇
+朱慧真
+朱辉耀
+朱晓晴
+朱静文
+朱璇尹
+朱丽婷
+朱芮宜
+朱琬蓁
+次兰英
+江中健
+江天授
+江文松
+江文琼
+江世华
+江正杰
+江玉卉
+江立峰
+江吉祥
+江成斌
+江呈阳
+江志宏
+江志隆
+江秀玲
+江育霆
+江佳芳
+江佳纯
+江佳霖
+江佩玲
+江佩萦
+江协勇
+江孟芝
+江孟泽
+江宗哲
+江宜芳
+江宜桦
+江岩达
+江忠远
+江怡萱
+江怡禛
+江昌鸿
+江明松
+江明书
+江明璋
+江明艺
+江东懋
+江欣容
+江玩萩
+江芝敏
+江长寿
+江信东
+江俊明
+江俊亿
+江俊兴
+江品仪
+江威德
+江建铭
+江彦辉
+江恬
+江政儒
+江昭贤
+江柏苇
+江玲慧
+江纪明
+江美慧
+江英信
+江衍龙
+江风远
+江家铭
+江振宇
+江书莹
+江佩宙
+江纯玫
+江健成
+江国庆
+江寅甫
+江启仲
+江条均
+江淑贞
+江盛龙
+江凯洁
+江惠华
+江智维
+江逸安
+江雅文
+江雅惠
+江传江
+江瑞祥
+江裕国
+江嘉伦
+江榕樱
+江翠芳
+江宽慈
+江慧芳
+江慕屏
+江忆雯
+江颖明
+江锦辉
+江蕾
+江丰良
+江丽娟
+江劭伦
+江媞
+江柽皇
+池泰宏
+牟昕
+艾青蓉
+何大新
+何仁田
+何天恩
+何文文
+何文萱
+何世雄
+何永琳
+何玉洁
+何亘彬
+何光棂
+何旭平
+何君萍
+何志浩
+何沛熙
+何育杰
+何享蓉
+何佳南
+何佳真
+何佳融
+何佩芝
+何佩纯
+何其泽
+何姗蓉
+何孟贤
+何季秦
+何宗彬
+何宗熹
+何宗禧
+何宜倩
+何宜璇
+何岳珈
+何怡君
+何承仲
+何易展
+何明宗
+何明书
+何明颖
+何升儒
+何松瑶
+何欣轩
+何秉欣
+何芷瑄
+何雨雯
+何信宗
+何俊廷
+何俊达
+何俊贤
+何冠霖
+何威德
+何建乐
+何彦驹
+何思颖
+何政翰
+何昭贤
+何炳贤
+何秋萱
+何美玲
+何若瑜
+何香叶
+何家菁
+何峻杰
+何振维
+何浚铭
+何素君
+何健维
+何国晟
+何崇维
+何敏菁
+何清龙
+何淑婷
+何涵
+何胜合
+何惠君
+何惠钰
+何舒岚
+何逸然
+何雅琪
+何意莹
+何瑞美
+何萱璇
+何嘉展
+何荣文
+何维耕
+何铭宏
+何庆兴
+何慧仪
+何学厚
+何晓盈
+何燕屏
+何锦题
+何静仪
+何织
+何丽君
+何旻霜
+何翊绮
+余子铭
+余心农
+余文裕
+余弘伟
+余吉祥
+余伶
+余志龙
+余迅
+余佳音
+余佳兴
+余佩娟
+余坪芳
+余孟霏
+余宗儒
+余宛儒
+余忠灯
+余昌翰
+余明娟
+余明泽
+余东晓
+余法昌
+余金典
+余信伟
+余俊渊
+余俊儒
+余劲毅
+余帝庆
+余彦霖
+余政隆
+余星柔
+余盈锋
+余若帆
+余凌昌
+余家莹
+余泰男
+余素兰
+余国安
+余婉萍
+余晨华
+余盛钦
+余惠文
+余智杰
+余雅淑
+余慈宴
+余瑞萍
+余嘉峰
+余福浩
+余齐威
+余宪宗
+余谐
+余谢辉
+余丽琴
+余琬瑜
+利秀兰
+利德弦
+吴乃元
+吴千慧
+吴大维
+吴子豪
+吴中宏
+吴仁佑
+吴仁贵
+吴元平
+吴元嫈
+吴少钧
+吴心惠
+吴文玉
+吴文怡
+吴文益
+吴文杰
+吴文发
+吴文铃
+吴文毅
+吴文斌
+吴火山
+吴世伟
+吴世达
+吴仕强
+吴仞一
+吴平和
+吴必胜
+吴正奇
+吴正华
+吴永昌
+吴永裕
+吴玉吟
+吴玉茹
+吴玉景
+吴玉蓉
+吴立民
+吴立勤
+吴伊苹
+吴仲泂
+吴兆文
+吴吉龙
+吴如楦
+吴安邦
+吴旭泰
+吴至仁
+吴行中
+吴伶丽
+吴君育
+吴妙伦
+吴宏仁
+吴宏基
+吴希祖
+吴志宏
+吴志恒
+吴志伟
+吴志汉
+吴志龙
+吴杏旋
+吴沛晃
+吴汶汶
+吴秀玲
+吴秀纹
+吴秀鹃
+吴育宗
+吴育硕
+吴育霖
+吴亚欣
+吴依妮
+吴依蓓
+吴佳和
+吴佳芳
+吴佳南
+吴佳玲
+吴佳玲
+吴佳倩
+吴佳容
+吴佳真
+吴佳惠
+吴佳蓉
+吴佳憬
+吴佳桦
+吴佳颖
+吴佳蕙
+吴佳静
+吴佳鸿
+吴佩君
+吴佩芳
+吴佩城
+吴佩珊
+吴佩玲
+吴佩娥
+吴佩纯
+吴佩蓉
+吴佩儒
+吴佩谕
+吴佩蓁
+吴侑庭
+吴其霖
+吴函蓁
+吴叔镇
+吴坤祐
+吴坤鸿
+吴奇哲
+吴奇龙
+吴孟宗
+吴孟芬
+吴孟贞
+吴孟娟
+吴孟茹
+吴孟蓉
+吴孟宪
+吴孟锡
+吴孟荞
+吴季瑾
+吴宗岱
+吴宗祈
+吴宗桓
+吴宗隆
+吴宗儒
+吴宗宪
+吴宗翰
+吴宗兴
+吴宗龙
+吴定疆
+吴宜芳
+吴宜贞
+吴宜祐
+吴宜穆
+吴宜嫔
+吴宛怡
+吴宛萦
+吴尚倍
+吴尚儒
+吴冈儒
+吴岱霖
+吴岳桐
+吴幸枝
+吴幸真
+吴延晃
+吴忠政
+吴忠霖
+吴怡君
+吴怡珊
+吴怡萍
+吴怡庆
+吴怡莹
+吴怡宪
+吴怡静
+吴怡
+吴承哲
+吴承璋
+吴招
+吴易逊
+吴昌庭
+吴昆
+吴昆璋
+吴明
+吴明忠
+吴明芳
+吴明珍
+吴明哲
+吴明恭
+吴明轩
+吴明达
+吴明璋
+吴明勋
+吴明晔
+吴明龙
+吴明颜
+吴昕姿
+吴升桥
+吴东和
+吴东耿
+吴东霖
+吴松沛
+吴欣佩
+吴欣怡
+吴欣伦
+吴欣硕
+吴欣儒
+吴欣鸿
+吴泓玳
+吴治英
+吴玫姗
+吴直耕
+吴秉伦
+吴秉勋
+吴秉骏
+吴芳青
+吴芳瑜
+吴芝纬
+吴采芳
+吴金玉
+吴金历
+吴长柏
+吴雨哲
+吴青育
+吴青峰
+吴青环
+吴亭谊
+吴信幸
+吴信宽
+吴信辉
+吴侯璋
+吴俊宏
+吴俊奇
+吴俊杰
+吴俊杰
+吴俊达
+吴俊仪
+吴俊德
+吴俊毅
+吴俊纬
+吴俊贤
+吴俊锋
+吴俊谚
+吴俊睿
+吴俞莹
+吴冠群
+吴冠贤
+吴冠翚
+吴劲龙
+吴品蓉
+吴奕成
+吴奕羲
+吴姿仪
+吴姿桦
+吴威芳
+吴宣锋
+吴建生
+吴建男
+吴建芝
+吴建达
+吴建德
+吴建贤
+吴建勋
+吴建旻
+吴彦庆
+吴律铭
+吴思萱
+吴思莹
+吴思颖
+吴政
+吴政旺
+吴政原
+吴政彬
+吴政德
+吴政勋
+吴政颖
+吴政霖
+吴春生
+吴春缓
+吴昭蓉
+吴昭毅
+吴昭龙
+吴昱宏
+吴柄德
+吴柏青
+吴柏仪
+吴柏毅
+吴柏颖
+吴炫宗
+吴炳峣
+吴玲媛
+吴皇欣
+吴盈洁
+吴祉龙
+吴秋美
+吴秋慧
+吴纪君
+吴美妮
+吴美玲
+吴美惠
+吴美祯
+吴美慧
+吴美萤
+吴羿喧
+吴致铭
+吴若华
+吴英宏
+吴英鸿
+吴贞宜
+吴贞莹
+吴郁芳
+吴重毅
+吴飞龙
+吴倩
+吴原宇
+吴哲雯
+吴哲权
+吴家明
+吴家琪
+吴家荣
+吴家豪
+吴家慧
+吴容莹
+吴庭狱
+吴振成
+吴振豪
+吴挺锋
+吴晏平
+吴书荣
+吴桂箐
+吴泰昌
+吴海芬
+吴佩君
+吴佩慈
+吴佩祯
+吴益芳
+吴素芬
+吴纯欣
+吴轩轩
+吴伟伦
+吴伟诚
+吴健民
+吴健鑫
+吴国伟
+吴国狮
+吴国熙
+吴国铭
+吴坚玮
+吴培贤
+吴婉婷
+吴婉歆
+吴崇铭
+吴彩邑
+吴悠
+吴启扬
+吴启斌
+吴敏真
+吴敏钜
+吴梓逢
+吴添锋
+吴淑如
+吴淑芬
+吴淑卿
+吴淑敏
+吴淑华
+吴淑凤
+吴涵宜
+吴祥维
+吴绍华
+吴莉婷
+吴雪妮
+吴竟芳
+吴凯雯
+吴胜祺
+吴乔森
+吴复兴
+吴惠君
+吴惠彩
+吴惠雯
+吴斯熏
+吴智东
+吴智豪
+吴栋隆
+吴犀灵
+吴善铭
+吴菁菁
+吴咏宸
+吴逸民
+吴逸群
+吴钧婷
+吴雅坤
+吴雅郁
+吴雅岚
+吴雅萍
+吴雅雯
+吴雅绮
+吴云骥
+吴圆朗
+吴敬琪
+吴毓真
+吴源章
+吴瑞
+吴瑞哲
+吴瑞钦
+吴瑞庆
+吴稚霆
+吴圣威
+吴诗婷
+吴诚昌
+吴鼎伟
+吴嘉信
+吴嘉娟
+吴嘉胜
+吴嘉荣
+吴嘉蕙
+吴宁瑄
+吴荣泰
+吴汉铭
+吴碧俐
+吴福量
+吴维倩
+吴维裕
+吴肇腾
+吴远诚
+吴铭振
+吴铨友
+吴凤兰
+吴德元
+吴庆文
+吴慧君
+吴慧玲
+吴慧贞
+吴慧敏
+吴慧雯
+吴洁珊
+吴赐忠
+吴宪中
+吴忆屏
+吴晓青
+吴晓纯
+吴晓菁
+吴晓薇
+吴燕芬
+吴颖轩
+吴蕙如
+吴蕙纹
+吴遵先
+吴锦佳
+吴锦镒
+吴静宜
+吴静怡
+吴静芳
+吴静茹
+吴静雯
+吴龙宝
+吴总成
+吴声源
+吴迈
+吴鸿昌
+吴鸿森
+吴曜臣
+吴丰吉
+吴镇利
+吴琼玉
+吴韵卉
+吴丽春
+吴丽婷
+吴献良
+吴馨怡
+吴懿婷
+吴显宗
+吴佼佼
+吴旻儒
+吴玠蓉
+吴昶葳
+吴淩安
+吴琮杰
+吴玮琳
+吴筱珈
+吴璁
+吴韫德
+吕子豪
+吕仁团
+吕友婷
+吕文专
+吕文铃
+吕世豪
+吕正安
+吕玉秋
+吕立伟
+吕如英
+吕自达
+吕志宏
+吕志锋
+吕育芳
+吕育玮
+吕佳宜
+吕佳容
+吕佳桦
+吕佩姗
+吕佩纯
+吕其霖
+吕姗姗
+吕季芳
+吕宗铭
+吕宜芳
+吕宜晏
+吕宜霖
+吕居勋
+吕忠育
+吕怡慧
+吕旺骐
+吕明
+吕明泰
+吕明龙
+吕杰纬
+吕欣颖
+吕芳俊
+吕金彦
+吕长馨
+吕保岸
+吕俊仪
+吕俐
+吕南畿
+吕威德
+吕建彦
+吕建锋
+吕彦融
+吕政彦
+吕政谕
+吕昭仪
+吕柏宏
+吕皇其
+吕秋云
+吕美惠
+吕美龄
+吕英玮
+吕韦箴
+吕哲明
+吕庭维
+吕格豪
+吕祐吉
+吕伟钦
+吕国培
+吕婉茹
+吕梅音
+吕淑卿
+吕淑祯
+吕理霖
+吕绍荣
+吕雪瑜
+吕惠菁
+吕智杰
+吕咏真
+吕雅玲
+吕雅琪
+吕雯歆
+吕沧尧
+吕圣章
+吕嘉元
+吕嘉丰
+吕维玲
+吕铭智
+吕慧惠
+吕学君
+吕学智
+吕学睿
+吕燕林
+吕锦顺
+吕静蓉
+吕鸿麟
+吕丽娟
+吕厅严
+吕翊民
+宋大辰
+宋之揆
+宋心慧
+宋世文
+宋玉婷
+宋伯瑜
+宋沛勇
+宋育玮
+宋佩珊
+宋孟瑛
+宋幸真
+宋昌霖
+宋东威
+宋秉萱
+宋俊洋
+宋奕儒
+宋建欣
+宋政隆
+宋禹莹
+宋致远
+宋家霖
+宋舫臣
+宋培元
+宋敏华
+宋乔玉
+宋朝斌
+宋云明
+宋嘉仁
+宋碧琳
+宋慧洁
+宋燕俪
+宋窜
+宋旻真
+巫子懿
+巫戎怡
+巫佩璇
+巫宜学
+巫明翰
+巫芷玮
+巫冠谊
+巫柏毅
+巫振嘉
+巫清文
+巫善福
+巫嘉兴
+巫晓芬
+巫晟逸
+李乃文
+李士享
+李子允
+李小芬
+李中任
+李中慧
+李仁修
+李仁凯
+李今黛
+李元圃
+李元裕
+李友淳
+李天桦
+李心仁
+李心岚
+李文
+李文吉
+李文志
+李文政
+李文莉
+李文惠
+李文琦
+李文意
+李文达
+李文贤
+李文斌
+李月星
+李世安
+李世伟
+李世剀
+李世宽
+李以新
+李可立
+李巧琳
+李弘昊
+李正元
+李正彦
+李正胜
+李正豪
+李永昌
+李永钦
+李永鸿
+李玉佩
+李玉卿
+李玉琳
+李玉铃
+李立仁
+李立强
+李亦晴
+李仲玄
+李光
+李光祥
+李光倢
+李兆斌
+李吉敏
+李名伦
+李如珍
+李宇弘
+李守维
+李安琳
+李成汉
+李有钦
+李羽
+李至章
+李佐宁
+李伯毅
+李君彦
+李含仁
+李妍莹
+李宏文
+李宏洲
+李廷伟
+李志成
+李志明
+李志峰
+李志伟
+李志章
+李志铭
+李志鹏
+李沛杰
+李汪盛
+李秀年
+李秀玲
+李秀卿
+李秀华
+李秀蘅
+李育枝
+李育庭
+李育群
+李育莹
+李育融
+李见汶
+李亚伦
+李京桦
+李依纯
+李依恂
+李佳汶
+李佳明
+李佳芳
+李佳芬
+李佳玲
+李佳玲
+李佳珍
+李佳倩
+李佳家
+李佳晃
+李佳真
+李佳训
+李佳雯
+李佳蓉
+李佳庆
+李佳儒
+李佳桦
+李佳颖
+李佳臻
+李佳霖
+李佳霏
+李佳键
+李佳蓁
+李侃洋
+李佩佩
+李佩芝
+李佩姿
+李佩珊
+李佩玲
+李佩倩
+李佩真
+李佩陵
+李佩仪
+李佩晔
+李佩谕
+李佩嬬
+李侑宬
+李其澧
+李函芬
+李卓道
+李和昌
+李坤明
+李坤源
+李坤霖
+李奇展
+李奇翰
+李孟坤
+李孟珊
+李孟哲
+李孟轩
+李孟儒
+李孟颖
+李孟灿
+李孟璁
+李季华
+李宗坤
+李宗伦
+李宗恩
+李宗义
+李宗贤
+李宗宪
+李宗颖
+李宗翰
+李宗霖
+李宗鸿
+李定远
+李宜明
+李宜芳
+李宜洲
+李宜玲
+李宜哲
+李宜峻
+李宜纯
+李宜洁
+李宜桦
+李宜霖
+李宜韩
+李宜圜
+李宛玲
+李宛萍
+李宛静
+李尚贤
+李岩晖
+李岱蓁
+李岳峰
+李岳桦
+李岳鸿
+李幸娟
+李幸锭
+李忠和
+李忠义
+李忠颖
+李念蒨
+李怡昌
+李怡玲
+李怡萱
+李怡宽
+李怡慧
+李怡瑾
+李怡颖
+李怡旻
+李承宗
+李承璋
+李承龙
+李易修
+李易谚
+李昌达
+李昆宏
+李昆达
+李昆龙
+李明利
+李明怡
+李明杰
+李明彦
+李明修
+李明哲
+李明书
+李明钊
+李明达
+李明洁
+李明勋
+李明桦
+李明谕
+李明霞
+李明墉
+李昀臻
+李昊
+李升翰
+李东彦
+李东隆
+李东龙
+李杰如
+李松家
+李欣怡
+李欣怡
+李欣哲
+李欣达
+李欣儒
+李欣颖
+李欣霞
+李法汉
+李治安
+李玟玟
+李玥莹
+李秉朔
+李秉翰
+李芳圻
+李芳婷
+李芳仪
+李芝绫
+李芸彦
+李虎峰
+李金泓
+李金铃
+李金桦
+李长文
+李长荣
+李长纮
+李青松
+李青阳
+李非霏
+李信成
+李信杰
+李信德
+李信颖
+李保蓁
+李俊宏
+李俊奇
+李俊昀
+李俊彦
+李俊祺
+李俊亿
+李俊德
+李俊毅
+李俊贤
+李俊贤
+李俊贤
+李俊勋
+李俊锜
+李俞慧
+李冠朋
+李冠仪
+李冠莹
+李冠臻
+李勇宁
+李南娇
+李品慧
+李奕枚
+李奏锐
+李姿仪
+李姿莹
+李威宏
+李威德
+李威霖
+李宣莹
+李建民
+李建宏
+李建邦
+李建明
+李建威
+李建苇
+李建宽
+李建贤
+李建锋
+李建桦
+李建兴
+李建禲
+李彦宏
+李彦宜
+李彦仪
+李彦莹
+李彦儒
+李彦霖
+李律玮
+李思怡
+李思萱
+李思仪
+李思莹
+李思谕
+李政
+李政忠
+李政哲
+李政达
+李政辉
+李政晔
+李政龙
+李春枝
+李春燕
+李昭美
+李昭纬
+李映萱
+李昱春
+李昱磷
+李柏杉
+李柏蓉
+李柏贤
+李柏璁
+李炳坤
+李珊珊
+李界锋
+李盈盈
+李盈洁
+李盈颖
+李科泯
+李秋梅
+李秋仪
+李秋麟
+李美玉
+李美芳
+李美伦
+李美瑜
+李美仪
+李美莹
+李美锜
+李胤瑶
+李致慧
+李茂全
+李英志
+李英瑞
+李英玮
+李虹仪
+李贞宜
+李贞慧
+李述申
+李郁伟
+李重贤
+李音慧
+李倩
+李修齐
+李哲安
+李哲纬
+李家宏
+李家珍
+李家萱
+李家豪
+李家侬
+李家兴
+李容婷
+李师媺
+李悦嘉
+李振昌
+李振诚
+李振仪
+李晋豪
+李书涵
+李根嘉
+李桃森
+李泰霖
+李浩庭
+李佩如
+李佩琳
+李佩嘉
+李益荣
+李祖珍
+李素梅
+李纯慧
+李能远
+李训亿
+李干晖
+李伟吉
+李伟恺
+李伟嘉
+李伟颙
+李健源
+李健铭
+李国全
+李国强
+李国华
+李国瑞
+李国荣
+李国维
+李国银
+李国兴
+李基弘
+李培华
+李婉真
+李婉瑞
+李崇仁
+李崇豪
+李康正
+李彩莹
+李启弘
+李启沧
+李敏吉
+李敏嘉
+李敏龙
+李清吟
+李淑君
+李淑芬
+李淑贞
+李淑茹
+李淑惠
+李淑华
+李淑蓉
+李淑静
+李涵富
+李祥瑞
+李绍绮
+李翎毓
+李连峰
+李雪萍
+李杰如
+李凯桢
+李胜雄
+李乔铮
+李岚琦
+李惠芬
+李惠珠
+李惠琳
+李惠雯
+李晴雯
+李智怡
+李智强
+李智维
+李森
+李湘桦
+李皖玲
+李善同
+李舜华
+李咏秋
+李逸才
+李逸群
+李进福
+李隆华
+李雅玫
+李雅玲
+李雅梅
+李雅婷
+李雅惠
+李雅惠
+李雅萍
+李雅雯
+李雅燕
+李雯燕
+李传君
+李意雯
+李想
+李新泽
+李毓真
+李源
+李瑞文
+李瑞贞
+李瑞华
+李瑞骐
+李义雄
+李圣琰
+李诗伟
+李诗楷
+李道林
+李嘉
+李嘉林
+李嘉凌
+李嘉轩
+李嘉华
+李嘉铭
+李嘉鸿
+李宁芳
+李荣茂
+李荣驰
+李汉祺
+李碧婷
+李福蓉
+李维仁
+李维伦
+李维桢
+李肇欣
+李志明
+李铭周
+李铭毓
+李鸣宇
+李齐芳
+李广祁
+李德海
+李庆宏
+李庆华
+李慧芬
+李慧美
+李慧珠
+李慧仪
+李毅信
+李莹洁
+李贤淦
+李学明
+李宪斌
+李晓妮
+李晓玲
+李晓岚
+李晓菁
+李晓榕
+李泽育
+李燕玲
+李璟郁
+李翰青
+李兴舜
+李蕙如
+李蕙芸
+李豫凡
+李锦升
+李锦莲
+李静宜
+李静怡
+李静怡
+李静美
+李静蓉
+李龙生
+李龙麟
+李爵臣
+李聪岳
+李舆鑫
+李鸿志
+李鸿达
+李曜存
+李谨帆
+李熔阡
+李馥如
+李琼英
+李丽枝
+李丽珠
+李宝玉
+李耀民
+李馨怡
+李懿如
+李权家
+李劭军
+李旻升
+李旻玮
+李昶欣
+李苹慈
+李涴汝
+李堨
+李絜
+李玮琪
+李筱云
+李钰雯
+李靓宸
+李铠任
+李君
+杜文杰
+杜民杰
+杜全林
+杜志贤
+杜佳豪
+杜孟政
+杜宛谕
+杜承鑫
+杜升翰
+杜芳政
+杜俊毅
+杜威廷
+杜彦霖
+杜炳龙
+杜美慧
+杜家昌
+杜佩诗
+杜婉雯
+杜淑铮
+杜阳圆
+杜嘉玲
+杜维修
+杜燕华
+杜耀仁
+沙正悦
+沈士杰
+沈仁杰
+沈文祥
+沈世闵
+沈正德
+沈立仁
+沈如峰
+沈佑翰
+沈君璐
+沈志川
+沈志龙
+沈汶萍
+沈育星
+沈依颖
+沈佳慧
+沈佩雯
+沈坤升
+沈宗庆
+沈宜蓁
+沈怡伶
+沈昌明
+沈明萱
+沈欣学
+沈秉谊
+沈芸萩
+沈信增
+沈俊翔
+沈冠宏
+沈姿慧
+沈建成
+沈建德
+沈恒光
+沈昭贤
+沈柏宽
+沈盈菁
+沈美娟
+沈郁康
+沈哲标
+沈家荣
+沈振兴
+沈益承
+沈纯如
+沈国铨
+沈晨钟
+沈淑华
+沈惠菁
+沈舒琳
+沈雅惠
+沈晖庭
+沈瑞钦
+沈圣昆
+沈道论
+沈嘉蕙
+沈维毓
+沈德厚
+沈学成
+沈蕙君
+沈鸿洲
+沈妏真
+沈筱云
+汪大伦
+汪巧玲
+汪百轩
+汪秀燕
+汪孟涵
+汪怡华
+汪青蓉
+汪冠宏
+汪美玉
+汪家莹
+汪启文
+汪雅萍
+汪靖国
+汪庆珍
+汪丽娟
+狄家溧
+谷泓道
+车益华
+辛宗潭
+辛奕成
+辛菁娥
+辛旻修
+邢能文
+阮文祥
+阮吕真
+阮信宪
+阮昱宏
+阮飞铭
+阮淑茹
+阮斐瑜
+阮雅伦
+阮睿祥
+阮鹏硕
+卓士勋
+卓永堂
+卓志忠
+卓佳庆
+卓宛君
+卓明仪
+卓芳如
+卓俊宏
+卓建隆
+卓英哲
+卓家楠
+卓训良
+卓淑媛
+卓朝闵
+卓瑞崇
+卓志隆
+卓静如
+卓生
+周上钦
+周士杰
+周大钧
+周子敬
+周中兴
+周心怡
+周文政
+周文雅
+周月霜
+周世丰
+周代尉
+周弘敏
+周正国
+周永雄
+周玉莲
+周立伟
+周仲凯
+周吉龙
+周年盛
+周至芬
+周佑祯
+周伯鑫
+周君鸿
+周孝芳
+周宏瑜
+周廷隆
+周志忠
+周志清
+周志勋
+周汶珊
+周秀晏
+周育伶
+周育润
+周亚欣
+周佳怡
+周佳蓉
+周佳震
+周佩宜
+周佩仪
+周协利
+周奇蓉
+周孟谊
+周宗建
+周宜芳
+周宛萱
+周幸蓉
+周怡伶
+周怡君
+周怡邦
+周怡俪
+周明弘
+周明彻
+周明辉
+周杰
+周欣芸
+周欣莹
+周玟萱
+周芳如
+周芝涵
+周金燕
+周青蓉
+周信辉
+周俊宏
+周俊豪
+周冠伶
+周品妍
+周威呈
+周建呈
+周建铭
+周彦岑
+周思微
+周政翰
+周星同
+周柏甫
+周玲
+周盈杉
+周秋萍
+周美春
+周致丞
+周郁文
+周韦翰
+周凌悌
+周娟如
+周家浩
+周家庆
+周峰正
+周振凯
+周书婷
+周泰安
+周佩如
+周祐慧
+周耿行
+周伟茹
+周国靖
+周婉琳
+周敏钰
+周淑娟
+周淑燕
+周凯慧
+周惠莲
+周智敏
+周渝珊
+周咏训
+周逸兰
+周雅婷
+周云棠
+周敬晏
+周业钦
+周煌耿
+周瑞楠
+周义峰
+周圣慧
+周裕丰
+周道泓
+周嘉松
+周嘉庆
+周汉源
+周福凤
+周翠芬
+周亿信
+周慧姿
+周乐天
+周贤德
+周宪邦
+周晓萍
+周燕盈
+周融骏
+周静雯
+周聪宇
+周镇邦
+周丽玲
+周兰芳
+周旻静
+周旆瑜
+周玮
+周钰翔
+孟天祥
+孟庆安
+季育泽
+官大弘
+官育萱
+官芳如
+官苑杰
+官农哲
+尚书
+屈道刚
+岳维铤
+房兆隆
+于家珍
+易足真
+易智健
+昌孟翰
+东慎琳
+林一炜
+林上志
+林久匀
+林于正
+林于婷
+林于祯
+林千媚
+林千毓
+林士力
+林士郁
+林士渊
+林士杰
+林士扬
+林士越
+林士农
+林大元
+林大祥
+林大钧
+林女满
+林子玄
+林子伟
+林子杰
+林子惠
+林子咏
+林子勤
+林子绮
+林子瑄
+林小琪
+林山云
+林才元
+林中强
+林之菁
+林仁彦
+林仁杰
+林介一
+林元恺
+林升权
+林天民
+林心如
+林心岚
+林文中
+林文全
+林文泳
+林文科
+林文将
+林文祥
+林文胜
+林文斯
+林文琦
+林文雯
+林文德
+林文聪
+林文媄
+林月英
+林木兴
+林世平
+林世昌
+林世芳
+林世峰
+林世伟
+林世淇
+林世翔
+林世寰
+林主恩
+林以晨
+林仕伟
+林加冠
+林可钧
+林巨淙
+林巧梅
+林平苑
+林弘升
+林弘祥
+林正一
+林正宗
+林正军
+林正伟
+林正凯
+林正福
+林民基
+林永昌
+林永信
+林永清
+林永祥
+林永森
+林永庆
+林永晟
+林玉如
+林玉芳
+林玉玲
+林玉佩
+林玉敏
+林玉婷
+林玉菁
+林玉云
+林玉龙
+林石隆
+林立任
+林立伦
+林立伟
+林立群
+林立鑫
+林仲威
+林仰望
+林兆盈
+林吉伯
+林后唯
+林如敏
+林宇星
+林守德
+林安缇
+林有俊
+林百扬
+林至承
+林行谦
+林佑安
+林佑珊
+林佑儒
+林佑锺
+林伯岳
+林伯峻
+林伯勋
+林伶贞
+林克威
+林克寰
+林呈任
+林君宜
+林君玲
+林君瑜
+林君翰
+林吟姿
+林均郁
+林妙君
+林妙娥
+林妍妤
+林孝全
+林孝宪
+林宏坤
+林宏亮
+林宏韦
+林宏干
+林宏达
+林宏儒
+林宏锜
+林岐益
+林廷吉
+林廷辉
+林志民
+林志成
+林志良
+林志忠
+林志明
+林志杰
+林志芬
+林志勇
+林志皇
+林志峰
+林志伟
+林志坚
+林志扬
+林志慎
+林志豪
+林志豪
+林志铭
+林志儒
+林志颖
+林志谋
+林志龙
+林志鸿
+林志鸿
+林李铭
+林材俊
+林沛君
+林沛蓁
+林灼龙
+林秀坪
+林秀花
+林秀俐
+林秀玲
+林秀美
+林秀卿
+林秀真
+林秀雯
+林秀凤
+林秀颖
+林秀馨
+林育仕
+林育正
+林育民
+林育生
+林育立
+林育名
+林育如
+林育成
+林育宏
+林育昀
+林育珊
+林育进
+林育群
+林育萱
+林育蓓
+林育慧
+林育贤
+林育锋
+林育麟
+林良俊
+林见明
+林谷峰
+林贝珊
+林里燕
+林享烨
+林依盈
+林依洁
+林依璇
+林佳生
+林佳宏
+林佳良
+林佳怡
+林佳欣
+林佳亭
+林佳盈
+林佳贞
+林佳陵
+林佳阳
+林佳绮
+林佳蓉
+林佳亿
+林佳庆
+林佳慧
+林佳慧
+林佳洁
+林佳莹
+林佳贤
+林佳桦
+林佳燕
+林佳臻
+林佳静
+林佳鸿
+林佳潓
+林佩君
+林佩怡
+林佩芬
+林佩贞
+林佩雯
+林佩蓉
+林佩蓉
+林佩慧
+林佩桦
+林佩锦
+林佩璇
+林侑青
+林其侯
+林其锋
+林协村
+林和秀
+林坤生
+林坤韦
+林坤梁
+林坤霂
+林奇模
+林孟仕
+林孟君
+林孟亭
+林孟萱
+林孟德
+林孟贤
+林孟颖
+林孟葳
+林季苗
+林季烨
+林宗廷
+林宗顺
+林宗亿
+林宗庆
+林宗贤
+林宗辉
+林宗泽
+林宗谟
+林官逸
+林宜君
+林宜玫
+林宜珍
+林宜圣
+林宜蓉
+林宜慧
+林宜贤
+林宜桦
+林宜铮
+林宜静
+林宜蓁
+林宜
+林宛瑜
+林宛桦
+林尚良
+林尚颖
+林岱蓉
+林岱融
+林岳仪
+林岳嶙
+林幸蓉
+林庚立
+林征卫
+林忠岳
+林忠庆
+林怡
+林怡汝
+林怡伶
+林怡利
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡均
+林怡秀
+林怡辰
+林怡芳
+林怡青
+林怡莉
+林怡菁
+林怡萱
+林怡宽
+林怡儒
+林怡礽
+林承岳
+林承毅
+林于妮
+林易珊
+林昌弘
+林昌贤
+林昆田
+林昆模
+林昆煇
+林明生
+林明志
+林明宗
+林明杰
+林明彦
+林明莉
+林明枫
+林明志
+林明德
+林明毅
+林明纬
+林明辉
+林明勋
+林明环
+林昀龙
+林升永
+林升龙
+林东茂
+林东毅
+林杰欣
+林松尧
+林欣立
+林欣怡
+林欣怡
+林欣怡
+林欣政
+林欣慈
+林欣仪
+林欣仪
+林欣毅
+林欣谊
+林欣颖
+林欣丽
+林武谚
+林泓君
+林泱秀
+林牧台
+林玟君
+林玟妏
+林玫君
+林玫蓉
+林秉泓
+林秉莹
+林芳一
+林芳如
+林芳如
+林芳州
+林芳芳
+林芳新
+林芳仪
+林芝卉
+林芝宁
+林芬芳
+林芸晖
+林芷筠
+林金仕
+林金明
+林金莲
+林金龙
+林长志
+林长庆
+林雨农
+林青志
+林青慧
+林青霞
+林亮仁
+林信全
+林信佑
+林信宏
+林信廷
+林信延
+林信义
+林保成
+林俊仲
+林俊宇
+林俊佑
+林俊伯
+林俊宏
+林俊宏
+林俊廷
+林俊甫
+林俊男
+林俊言
+林俊杰
+林俊杰
+林俊逸
+林俊达
+林俊豪
+林俊魁
+林俊贤
+林俊麟
+林俐亭
+林俞增
+林冠宇
+林冠吟
+林冠宏
+林冠秀
+林冠瑛
+林冠儒
+林勇成
+林南宏
+林品宜
+林奕成
+林奕伶
+林奕秀
+林奕岚
+林奎君
+林姿伶
+林姿吾
+林姿妙
+林姿婷
+林威名
+林威利
+林威廷
+林威良
+林宣任
+林宣鳌
+林建一
+林建仲
+林建宇
+林建成
+林建吾
+林建宏
+林建宏
+林建廷
+林建志
+林建男
+林建良
+林建邦
+林建升
+林建华
+林建彰
+林建莹
+林建勋
+林彦文
+林彦名
+林彦亨
+林彦伶
+林彦孝
+林彦宏
+林彦甫
+林彦享
+林彦嘉
+林彦兴
+林思吟
+林思华
+林思亲
+林恒硕
+林恪群
+林政位
+林政良
+林政浩
+林政裕
+林政仪
+林政纬
+林政锋
+林政翰
+林春年
+林春美
+林昭宇
+林昭志
+林昭铭
+林映汝
+林星晨
+林昱君
+林昱伟
+林柑杏
+林柏州
+林柏伸
+林柏宏
+林柏村
+林柏城
+林柏荣
+林柏翰
+林泉洋
+林洪霄
+林为文
+林炳煌
+林珊如
+林玲至
+林珍如
+林皇利
+林盈成
+林盈君
+林盈志
+林盈萱
+林祈均
+林科宏
+林秋良
+林秋惠
+林秋菊
+林秋莲
+林纪元
+林美如
+林美伶
+林美君
+林美吟
+林美秀
+林美怡
+林美玲
+林美珠
+林美智
+林美华
+林美慧
+林美龄
+林羿妏
+林致君
+林致颖
+林茂盛
+林英男
+林英杰
+林英铭
+林虹如
+林虹宏
+林贞
+林贞延
+林郁文
+林郁欣
+林郁芬
+林郁敏
+林郁森
+林郁雄
+林郁兰
+林韦丞
+林韦廷
+林韦嘉
+林香君
+林倍伊
+林倩如
+林倩慧
+林修民
+林伦旭
+林原合
+林哲民
+林哲任
+林哲宏
+林哲裕
+林哲辉
+林娟如
+林娉孜
+林家弘
+林家弘
+林家生
+林家如
+林家亨
+林家勇
+林家惠
+林家晖
+林家圣
+林家祯
+林家铭
+林家庆
+林家贤
+林家蕙
+林家斌
+林容仞
+林容圣
+林展圣
+林峻晖
+林峰年
+林师群
+林庭玮
+林恩光
+林恩霈
+林振浩
+林振旸
+林振滨
+林时新
+林晋全
+林晋畿
+林晏如
+林晏稚
+林书弘
+林书聿
+林书楷
+林书毅
+林书泽
+林桓赋
+林桂珠
+林格妃
+林泰安
+林泰维
+林浚杰
+林浩群
+林佩如
+林佩菁
+林佩儒
+林益弘
+林益如
+林益运
+林真绮
+林祐禾
+林祐榆
+林祐瑄
+林窈意
+林素如
+林素贞
+林素华
+林纯如
+林纯湘
+林耘德
+林耿弘
+林耿真
+林茵
+林起翎
+林轩颉
+林高源
+林伟民
+林伟彬
+林伟桢
+林伟德
+林健青
+林唯凯
+林国欣
+林国祥
+林国隆
+林国勋
+林培尧
+林婉君
+林婉婷
+林婉瑜
+林崇宇
+林崇毅
+林康宁
+林启人
+林启航
+林启丰
+林敏裕
+林梅陇
+林清吉
+林清云
+林淑君
+林淑芬
+林淑玲
+林淑贞
+林淑娟
+林淑娥
+林淑梅
+林淑媛
+林淑惠
+林淑萍
+林淑华
+林淑雯
+林淑仪
+林淑铮
+林涵瑜
+林盛杰
+林莘怡
+林荷芳
+林雪萍
+林杰圣
+林创
+林胜杰
+林博隆
+林婷
+林富美
+林惠文
+林惠怡
+林惠美
+林惠敏
+林惠萍
+林惠雯
+林惠琇
+林敦煌
+林景民
+林景氛
+林智能
+林智清
+林智业
+林期
+林森田
+林港贵
+林湘惠
+林湲舒
+林琦国
+林登山
+林紫菁
+林舒慧
+林华一
+林视尊
+林咏翔
+林超
+林逸昀
+林逸峰
+林逸菁
+林逸儒
+林进益
+林钧陶
+林雁敏
+林雅君
+林雅芬
+林雅玲
+林雅伦
+林雅淳
+林雅博
+林雅惠
+林雅琪
+林雅萍
+林雅华
+林雅雯
+林雅慧
+林雅慧
+林雅谦
+林雯宣
+林云正
+林顺安
+林顺兴
+林勤淙
+林嵩山
+林意伦
+林意腾
+林爱惠
+林敬文
+林敬渊
+林敬翔
+林新凡
+林新发
+林晖皓
+林楠棋
+林殿一
+林毓珊
+林毓超
+林源河
+林照男
+林煜庭
+林煌轩
+林焕钦
+林瑞明
+林瑞家
+林瑞雪
+林瑞德
+林瑞兰
+林瑜莉
+林盟杰
+林祺勋
+林稚扬
+林经维
+林义峰
+林义杰
+林义智
+林义雄
+林群峰
+林群耀
+林圣怡
+林圣恩
+林圣杰
+林圣智
+林圣钧
+林圣耀
+林苇萍
+林裕昕
+林裕坚
+林裕胜
+林裕舜
+林诗凡
+林诗倩
+林诗渊
+林诗雯
+林诗苹
+林运浩
+林铉智
+林雍翔
+林靖修
+林颂博
+林鼎植
+林嘉禾
+林嘉信
+林嘉珍
+林嘉伟
+林嘉琪
+林嘉群
+林嘉慧
+林嘉鸿
+林掴彦
+林荣钦
+林汉
+林汉斌
+林睿旸
+林碧惠
+林硕儒
+林精湛
+林维珊
+林维莉
+林翠萍
+林蓓羚
+林豪彦
+林铭洲
+林铭煌
+林铭熛
+林凤珍
+林齐蔚
+林仪虹
+林增威
+林广义
+林德晋
+林庆升
+林庆蓉
+林慧君
+林慧怡
+林慧珊
+林慧美
+林慧珠
+林慧淳
+林慧萍
+林慧华
+林慧雯
+林慧丽
+林憬良
+林澄泽
+林莹芳
+林瑾兰
+林蔚玲
+林卫圣
+林贤得
+林适之
+林儒民
+林学隆
+林宪政
+林忆淳
+林晓君
+林晓芳
+林晓玲
+林晓婷
+林晓华
+林晓嘉
+林晓娸
+林泽义
+林燕梅
+林璟
+林颖
+林颖莉
+林颖聪
+林兴钊
+林蕙淇
+林豫亭
+林锦伶
+林锦隆
+林锦鸿
+林静吟
+林静宜
+林静怡
+林静怡
+林静芬
+林静雯
+林静仪
+林龙生
+林懋州
+林聪仁
+林谦妙
+林骏逸
+林鸿君
+林鸿彬
+林鸿达
+林鸿锜
+林礼强
+林丰舜
+林瀛文
+林琼芳
+林韵娟
+林丽君
+林丽美
+林丽珠
+林丽华
+林丽蓉
+林宝秀
+林继平
+林耀南
+林蔼文
+林巍龙
+林懿君
+林麟
+林夆宾
+林芊亨
+林旻逸
+林炅嵚
+林姝均
+林昶安
+林珈妤
+林倬世
+林纾玮
+林琇雯
+林棨任
+林琮闵
+林琬瑜
+林暐庭
+林炜鸿
+林玮竣
+林筱玲
+林筱菁
+林萩燕
+林钰庭
+林钰凯
+林钰慧
+林璇怡
+林霙真
+林驧
+武良文
+武敬和
+祁义国
+花羽薇
+花雅斐
+初若凡
+邵文泰
+邵志丰
+邵奕钧
+邵郁惠
+邵胜添
+邵爱玟
+邵怀德
+邱一真
+邱于倩
+邱千绮
+邱士恭
+邱大刚
+邱子枫
+邱小嫚
+邱仁杰
+邱天宏
+邱文玉
+邱文柏
+邱文钦
+邱文鸿
+邱世民
+邱仕杰
+邱幼媚
+邱正祥
+邱永嘉
+邱玉玲
+邱立国
+邱仲韵
+邱名仕
+邱安台
+邱有谅
+邱君清
+邱志光
+邱志强
+邱志斌
+邱秀英
+邱秀静
+邱良毅
+邱佳松
+邱佳颍
+邱孟月
+邱定邦
+邱延龄
+邱怡乔
+邱怡祯
+邱昌裕
+邱明琪
+邱欣怡
+邱泓彰
+邱芳宜
+邱金生
+邱信益
+邱信辉
+邱俊昌
+邱俊智
+邱俊荣
+邱俊霖
+邱冠瑜
+邱品华
+邱垂章
+邱奕明
+邱奕睿
+邱姿惠
+邱建中
+邱建诚
+邱建鋐
+邱彦瑛
+邱思嘉
+邱政涌
+邱昭钦
+邱昱臻
+邱柏瑜
+邱柏霖
+邱珀祥
+邱盈棠
+邱纪华
+邱美惠
+邱美慧
+邱致颖
+邱军浩
+邱郁淑
+邱重宪
+邱哲琳
+邱家贤
+邱振峰
+邱桂铃
+邱浩彰
+邱佩绮
+邱纯玮
+邱伟伦
+邱健雄
+邱国恭
+邱国洁
+邱培瑜
+邱婉嬅
+邱启翔
+邱敏蕙
+邱清龙
+邱淑娟
+邱淑琴
+邱淑慧
+邱绍溢
+邱莉婷
+邱凯
+邱创俭
+邱富源
+邱惠娥
+邱惠诗
+邱景萍
+邱智杰
+邱湘云
+邱结
+邱咏淳
+邱逸群
+邱雅芬
+邱雅莉
+邱雅雯
+邱雅茜
+邱圆惠
+邱敬雯
+邱毓玲
+邱焕文
+邱瑞梅
+邱盟琇
+邱圣文
+邱圣斌
+邱诗渊
+邱诗琁
+邱靖雯
+邱嘉杰
+邱嘉慧
+邱碧施
+邱维婉
+邱韶莹
+邱德凯
+邱慧如
+邱慧婷
+邱纬平
+邱晓玲
+邱树国
+邱静宜
+邱静雯
+邱锺仁
+邱丰祥
+邱琼惠
+邱琼慧
+邱韵宁
+邱丽英
+邱宝萱
+邱继莹
+邱蕴静
+邱馨仪
+邱龄颐
+邱显桓
+邱显霖
+邱姵绫
+邱琬淑
+邱椿凯
+邱筱雯
+邱钰斐
+邱瞍
+金士为
+金京荣
+金明辉
+金政谚
+金珞琳
+金勤
+金磊
+侯力维
+侯文哲
+侯正鸿
+侯如芬
+侯宏昌
+侯秀如
+侯佳典
+侯函秀
+侯岳宏
+侯昆助
+侯欣翰
+侯信宇
+侯咸仰
+侯彦伸
+侯柏青
+侯致中
+侯素云
+侯渊铭
+侯博元
+侯景勋
+侯贵龄
+侯雅雯
+侯嘉珍
+侯庆辰
+侯静汝
+侯丽慧
+侯霈青
+俞佳凡
+俞泊霖
+俞能方
+俞雅婷
+俞芊荟
+姜元钧
+姜后怡
+姜宏荣
+姜佩伶
+姜明宏
+姜芝怡
+姜建铭
+姜堉颍
+姜凯杰
+姜智钧
+姜雅婷
+姜义恺
+姜增炫
+姜树锦
+姜礼豪
+姜旻姗
+姚又文
+姚方洁
+姚立三
+姚克钧
+姚志宪
+姚佳慧
+姚宗朴
+姚怡兰
+姚金源
+姚威宇
+姚盈任
+姚素兰
+姚凯文
+姚琛富
+姚瑞贤
+姚德麟
+姚丽人
+宣志凌
+律振扬
+施大维
+施文
+施文豪
+施可隆
+施玉品
+施名玥
+施宇骏
+施百桦
+施伯宜
+施孝德
+施宏泽
+施志豪
+施秀宛
+施育瑜
+施佳君
+施佩君
+施佩华
+施孟宏
+施宜呈
+施宛直
+施怡如
+施怡铃
+施明妍
+施杰松
+施玫君
+施雨佐
+施俊名
+施俊贤
+施奕涵
+施建宇
+施彦甫
+施政豪
+施柏如
+施皇旭
+施美瑛
+施郁蕙
+施振坤
+施素卿
+施健鸿
+施敏男
+施淑惠
+施雪姿
+施博元
+施富浩
+施惠琪
+施智勇
+施程凯
+施咏然
+施钧伦
+施雅娟
+施雯琪
+施义沧
+施嘉琪
+施汉嵘
+施志豪
+施慧君
+施瑾伦
+施晓雯
+施静怡
+施琼如
+施馨贵
+施旻宜
+施玮瑜
+柯力豪
+柯元凯
+柯文祥
+柯世贤
+柯永忠
+柯全益
+柯伯彦
+柯宏威
+柯志明
+柯沛志
+柯良蕙
+柯佳秀
+柯佩君
+柯坤明
+柯宗伯
+柯宛君
+柯怡玟
+柯明翰
+柯欣仪
+柯金杏
+柯俊吉
+柯俊隆
+柯宣宇
+柯彦旭
+柯昭生
+柯盈如
+柯虹如
+柯泰名
+柯敏盛
+柯淑惠
+柯连田
+柯博元
+柯富议
+柯惠菱
+柯智仁
+柯棋棣
+柯闵文
+柯雅华
+柯毓萍
+柯嘉汶
+柯碧昭
+柯凤仪
+柯宪苍
+柯锦男
+柯琼蓥
+柯旻良
+查慧琳
+柳如庭
+柳佩君
+柳建良
+柳茹萍
+柳棋元
+柳嘉轩
+柳鹤松
+段明宏
+段逸轩
+洪一中
+洪力壹
+洪于闵
+洪千惠
+洪千琦
+洪士育
+洪士杰
+洪大为
+洪子婷
+洪小惠
+洪元斌
+洪文明
+洪文凯
+洪文贤
+洪世升
+洪世嘉
+洪加达
+洪正光
+洪永昌
+洪玉芳
+洪玉婷
+洪玉蒨
+洪亦洁
+洪光亿
+洪名衡
+洪安俐
+洪百贤
+洪佑升
+洪君祥
+洪宏政
+洪志生
+洪志明
+洪志雄
+洪志铭
+洪村铭
+洪秀芳
+洪秀莹
+洪良欣
+洪依琪
+洪佳琳
+洪佩伶
+洪坤锜
+洪孟瑶
+洪宗汉
+洪宜良
+洪尚铭
+洪忠圣
+洪怡真
+洪明化
+洪明伟
+洪明龙
+洪欣升
+洪芷漪
+洪信嘉
+洪俊雄
+洪宣竹
+洪思琪
+洪政霈
+洪柏宁
+洪秋华
+洪美萍
+洪茂雄
+洪英杰
+洪郁庭
+洪重卿
+洪家琪
+洪悦玲
+洪振益
+洪振铭
+洪根华
+洪佩芳
+洪佩绮
+洪耿智
+洪伟哲
+洪伟杰
+洪伟谕
+洪健峰
+洪曼珊
+洪国哲
+洪国惟
+洪国翔
+洪国耀
+洪培伦
+洪婉纹
+洪崇恩
+洪昆健
+洪御彗
+洪启伟
+洪敏芳
+洪敏雄
+洪清健
+洪淑贞
+洪淑惠
+洪淑淩
+洪绍文
+洪翎宾
+洪雪芳
+洪胜凯
+洪惠文
+洪惠棋
+洪晴晴
+洪智贤
+洪琦惠
+洪菁隆
+洪菱紫
+洪隆智
+洪雅苓
+洪雅雯
+洪顺男
+洪慈伶
+洪恺廷
+洪桢邦
+洪毓嫔
+洪煌凯
+洪瑞堂
+洪瑞蓉
+洪瑞鸿
+洪万得
+洪圣恩
+洪萱锋
+洪裕焜
+洪诗雅
+洪靖凯
+洪嘉圻
+洪嘉珊
+洪嘉琳
+洪嘉莲
+洪嘉骏
+洪宁
+洪荣辉
+洪甄苡
+洪硕伟
+洪绮
+洪维良
+洪维泽
+洪肇彦
+洪志强
+洪铭佐
+洪铭阳
+洪铭锺
+洪魁禧
+洪宽泰
+洪庆铭
+洪慧玲
+洪慧萍
+洪莹珍
+洪儒明
+洪晓岚
+洪蕙心
+洪静怡
+洪声铨
+洪礼君
+洪艺菁
+洪丽姿
+洪丽钧
+洪继贤
+洪俪凤
+洪劭元
+洪晢惇
+洪斌凯
+洪歆怡
+洪筱佩
+洪钰樱
+相孟豪
+纪人玮
+纪文钦
+纪吉如
+纪伯璁
+纪志霖
+纪佳宜
+纪宗霖
+纪怡婷
+纪泓尧
+纪长兴
+纪威羽
+纪盈州
+纪祖豪
+纪淑芳
+纪博敏
+纪智仁
+纪钧闳
+纪顺兴
+纪铭坤
+纪晓恩
+纪兰洁
+胡丁元
+胡小萍
+胡心慧
+胡文瑜
+胡世融
+胡正翰
+胡玉慧
+胡同亮
+胡成章
+胡廷威
+胡志铭
+胡育维
+胡佳祯
+胡定宇
+胡怡芳
+胡东升
+胡芳慈
+胡金灏
+胡帝
+胡玲婉
+胡若男
+胡修瑀
+胡家荣
+胡展铭
+胡振中
+胡书绵
+胡纯菁
+胡干锋
+胡授淳
+胡淑君
+胡淑雅
+胡凯智
+胡博砚
+胡惠婷
+胡景雯
+胡智铭
+胡竣砚
+胡贵月
+胡雅妍
+胡雅智
+胡顺隆
+胡毓发
+胡瑞洙
+胡诗菁
+胡嘉真
+胡碧媜
+胡赫廷
+胡慧如
+胡宪霖
+胡静苑
+胡琼文
+胡耀仁
+胡懿心
+胡炜珍
+范中威
+范文政
+范世璋
+范玉萱
+范吉庆
+范均沛
+范甫宗
+范佳雯
+范明中
+范冠伟
+范姜彦如
+范姜慧怡
+范秋霞
+范郁如
+范家诚
+范振文
+范振麟
+范耕魁
+范国基
+范淑玲
+范莉苓
+范博彰
+范扬宜
+范扬腾
+范智钦
+范钧杰
+范毓贞
+范瑞祥
+范诗漪
+范汉君
+范纲贤
+范慧如
+范晓怡
+范瀚文
+范耀聪
+范琇璇
+苗后杰
+计竹宇
+韦人瑜
+韦志鸿
+韦桂仁
+候昺辰
+倪玉龙
+倪志鸿
+倪威远
+倪伟智
+倪淑婷
+倪瑞期
+倪慧珊
+凌世芳
+凌明德
+凌雪惠
+凌慧萍
+唐千惠
+唐文贤
+唐永兴
+唐作豪
+唐邦泰
+唐明志
+唐思维
+唐英娜
+唐佩珊
+唐国忠
+唐淑芬
+唐朝纬
+唐雅燕
+唐义尧
+唐嘉羚
+唐韶霙
+唐晓微
+唐誉玫
+夏正邦
+夏良玉
+夏春香
+夏淑蓉
+夏达伟
+夏慧龄
+夏翊伦
+孙上雯
+孙士烘
+孙元俊
+孙方仪
+孙可为
+孙永信
+孙立民
+孙如彬
+孙伯中
+孙志勇
+孙育芝
+孙协裕
+孙忠凯
+孙明骏
+孙采薇
+孙建崴
+孙美英
+孙郁婷
+孙振凉
+孙佩芳
+孙伟伦
+孙国书
+孙崇哲
+孙惟正
+孙淑芬
+孙杰
+孙琦
+孙逸燕
+孙传凯
+孙溢堂
+孙睦杰
+孙道隆
+孙嘉荫
+孙纲
+孙豪志
+孙铭鸿
+孙慧津
+孙学仪
+孙龙翔
+孙丽娟
+孙炘宜
+孙瑀
+宫姗姗
+师宜青
+徐乙可
+徐千祐
+徐千雅
+徐士勋
+徐子平
+徐子强
+徐小萍
+徐仁干
+徐心宜
+徐文君
+徐文益
+徐月娥
+徐世基
+徐仕泓
+徐巧凌
+徐正怡
+徐永光
+徐永鸣
+徐玉芬
+徐玉慈
+徐立达
+徐光平
+徐匡平
+徐如升
+徐有庆
+徐艾伶
+徐克钧
+徐宏宇
+徐志宇
+徐志伟
+徐志豪
+徐李全
+徐秀玲
+徐育慈
+徐佳如
+徐佩如
+徐佩锦
+徐宗源
+徐忠义
+徐昆羿
+徐明华
+徐明鸿
+徐松鸿
+徐欣妏
+徐知本
+徐采薇
+徐信中
+徐俊杰
+徐奕晖
+徐思维
+徐柏韬
+徐美玉
+徐美华
+徐若馨
+徐英硕
+徐郁桦
+徐家楷
+徐振洲
+徐书政
+徐浚杰
+徐佩祯
+徐伟凡
+徐伟峻
+徐伟顺
+徐健顺
+徐国伦
+徐国智
+徐国耀
+徐培溶
+徐婉仪
+徐昆仑
+徐从诰
+徐敏芳
+徐敏华
+徐梅凌
+徐淑娟
+徐淑嫔
+徐祥然
+徐莉真
+徐雪琼
+徐富康
+徐惠珍
+徐掌瑛
+徐朝康
+徐舒亚
+徐咏媛
+徐进宝
+徐雅棋
+徐顺宏
+徐爱婷
+徐毓良
+徐瑚镁
+徐瑞恭
+徐瑞聪
+徐瑜敏
+徐裕彬
+徐资证
+徐靖惠
+徐嘉宏
+徐嘉琳
+徐嘉驹
+徐梦麟
+徐荣辰
+徐甄鸿
+徐福祥
+徐维扬
+徐翠遥
+徐铭佛
+徐铭谦
+徐凤忆
+徐德贤
+徐慧心
+徐慧婷
+徐毅宏
+徐震东
+徐晓筠
+徐兴淦
+徐静仪
+徐鸿仁
+徐赞登
+徐丽珍
+徐继政
+徐樱芳
+徐淯
+徐菡禧
+徐玮芬
+徐筱芸
+徐钰绫
+徐鑫豪
+书百川
+桑怡秋
+柴学舜
+殷芷若
+殷绍闵
+殷肇阳
+浦晓凤
+留干焜
+祖晓凤
+秦一平
+秦安立
+秦建玮
+秦梓铭
+秦圣杰
+秦丽雅
+翁于琪
+翁士轩
+翁子婷
+翁文茹
+翁以哲
+翁玉娟
+翁仲贤
+翁宇骏
+翁宏霖
+翁志豪
+翁育稔
+翁佳韵
+翁宗裕
+翁明安
+翁林铤
+翁信台
+翁柏圣
+翁英斌
+翁振芳
+翁佩怡
+翁伟伦
+翁健纬
+翁基清
+翁崇庭
+翁启信
+翁晨耀
+翁淑华
+翁壹姿
+翁滋佩
+翁逸轩
+翁雅惠
+翁毓翎
+翁瑞羚
+翁义宗
+翁鼎昌
+翁嘉翎
+翁梦君
+翁碧壕
+翁维良
+翁铭逊
+翁德卿
+翁晓芬
+翁静瑜
+翁麒昌
+翁俪倩
+翁玮娟
+翁靓晏
+荆伟政
+袁天英
+袁如冈
+袁怡茹
+袁柏伟
+袁伟伦
+袁启鑫
+袁雅惠
+袁荣灿
+袁静华
+记佳雯
+郝政鸿
+马一文
+马中骅
+马占峰
+马玉娟
+马安妮
+马志明
+马佳伶
+马岳宏
+马南欣
+马英杰
+马佩婷
+马国蕾
+马淑卿
+马智君
+马煌坤
+马嘉隆
+马绪川
+马忆婷
+马樱菁
+高一铭
+高千惠
+高士明
+高子淇
+高小文
+高友慧
+高文彬
+高世昌
+高主强
+高弘州
+高正国
+高玉如
+高玉馨
+高伊俊
+高合助
+高旭庆
+高至宽
+高宏铭
+高志伟
+高志魁
+高秀铃
+高亚兰
+高佩吟
+高妮玮
+高宗炜
+高幸瑜
+高明
+高明玮
+高欣洁
+高金志
+高咸实
+高彦勋
+高柏豪
+高美芳
+高英凯
+高郁凯
+高峰
+高栩
+高佩绮
+高伟伦
+高健
+高国哲
+高国宁
+高培真
+高彬原
+高启祐
+高敏娉
+高淑芳
+高淑惠
+高笙辅
+高雪卿
+高婷
+高景怡
+高琪舒
+高咏彦
+高雅芳
+高雅腹
+高意祯
+高毓辰
+高照闵
+高瑞瑶
+高义忠
+高诗娉
+高颂清
+高嘉良
+高嘉屿
+高彰隆
+高睿兰
+高端玫
+高翠翎
+高银穗
+高铭杰
+高铭琇
+高仪铭
+高庆斌
+高慧萍
+高忆如
+高静民
+高薇薇
+高谱伦
+高丽蕙
+高颢哲
+高斌鑫
+高筱慧
+高薏涵
+商弘易
+商凤英
+寇丽雯
+崔佑维
+崔倩苓
+崔琦民
+常欣玉
+康乃月
+康仕宗
+康宇宁
+康攸华
+康孟意
+康金锋
+康美玲
+康家彰
+康庭瑞
+康配容
+康杰民
+康智升
+康登杰
+康雅婷
+康稚旸
+康嘉兰
+康晓蕙
+康丽贞
+张
+张一鸿
+张乃文
+张乃伟
+张力仁
+张力夫
+张又千
+张又牙
+张千里
+张士贤
+张子昌
+张小萍
+张中薇
+张尹馨
+张仁杰
+张仁杰
+张仁聪
+张元
+张元隆
+张元鸿
+张友
+张天凤
+张尤子
+张心怡
+张心瑜
+张心馨
+张文育
+张文明
+张文彦
+张文玲
+张文轩
+张文钦
+张文雯
+张文荣
+张文豪
+张文樵
+张文炉
+张文腾
+张月容
+张世中
+张世岳
+张世明
+张世芬
+张世雯
+张世儒
+张世壎
+张以全
+张仕育
+张仕旻
+张加升
+张可欣
+张央昌
+张巧玲
+张幼玮
+张弘泰
+张必明
+张正余
+张正忠
+张正杰
+张正隆
+张正卫
+张正玗
+张永材
+张永昆
+张永俊
+张永棋
+张永勋
+张玄鸿
+张玉欣
+张玉玲
+张玉琪
+张玉蓉
+张玉旻
+张立文
+张立欣
+张立钧
+张立纬
+张亦宁
+张仲平
+张仲铨
+张光仁
+张光伟
+张兆域
+张匡杰
+张吉丰
+张好礼
+张如莹
+张宇竣
+张安妮
+张式良
+张旭宗
+张泛骐
+张羽洁
+张至睿
+张艾铃
+张佑民
+张佑群
+张作成
+张伯骏
+张克伟
+张君如
+张君瑜
+张吟慈
+张妙慧
+张宋萍
+张宏春
+张宏瑞
+张宏铭
+张希圣
+张志
+张志仰
+张志宇
+张志舟
+张志明
+张志伟
+张志坚
+张志祥
+张志琳
+张志源
+张志达
+张志豪
+张志豪
+张志豪
+张志铭
+张志鸿
+张志瑄
+张沅玺
+张秀玉
+张秀珍
+张秀琪
+张秀蓉
+张育平
+张育崧
+张育菁
+张育慎
+张育诚
+张育彰
+张育纶
+张育铨
+张育玮
+张良源
+张邑如
+张亚衔
+张佳文
+张佳音
+张佳惠
+张佳雯
+张佳蓉
+张佩帆
+张佩瑛
+张叔美
+张孟玉
+张孟婷
+张宗仁
+张宗贤
+张宜新
+张尚钧
+张延任
+张念慈
+张怡欣
+张怡莉
+张怡慧
+张昆煌
+张明利
+张明祥
+张明照
+张明璋
+张升钦
+张林芬
+张欣怡
+张欣蕙
+张治国
+张秉祺
+张芳菁
+张芳绫
+张芝友
+张芸慧
+张金山
+张金凤
+张雨筑
+张信发
+张俊伟
+张俊尧
+张俊贤
+张冠华
+张姿媚
+张建邦
+张建祥
+张建豪
+张彦菁
+张思仪
+张恒玮
+张政杰
+张昭元
+张柔明
+张洲期
+张为栋
+张玲婉
+张界聪
+张盈鸿
+张秋婷
+张纪君
+张美玲
+张美羚
+张美雯
+张美霞
+张致蒨
+张茂醒
+张英琦
+张郁芬
+张郁婷
+张香玺
+张幸碧
+张修豪
+张伦玮
+张刚维
+张原谋
+张哲健
+张哲瑞
+张哲榕
+张哲维
+张哲铭
+张娟华
+张家明
+张家振
+张家淦
+张家栋
+张家菱
+张家源
+张家瑜
+张家群
+张家榕
+张家荣
+张家硕
+张家绮
+张家豪
+张家豪
+张家豪
+张家赫
+张家铭
+张家铭
+张家润
+张家怀
+张家玮
+张容菱
+张宸宗
+张峻杰
+张峻嘉
+张峻严
+张峰荣
+张庭源
+张庭玮
+张恩琼
+张振源
+张振镒
+张晋通
+张晋豪
+张晏诚
+张晏龄
+张书航
+张书维
+张书豪
+张书铭
+张书馨
+张根源
+张桂华
+张桂凤
+张泰青
+张浩堂
+张佩怡
+张佩琪
+张益州
+张益华
+张益维
+张祐慈
+张祐维
+张秦芸
+张素秋
+张素华
+张纯益
+张纯玮
+张耿
+张耿维
+张耿崚
+张训义
+张轩豪
+张高瑞
+张伟伦
+张伟钧
+张健良
+张国志
+张国浩
+张国媛
+张国玺
+张堂凡
+张婉君
+张婉暄
+张崇伟
+张康虔
+张惟捷
+张启明
+张敏芝
+张梅君
+张淳惠
+张清文
+张清凯
+张淑君
+张淑芳
+张淑芬
+张淑珍
+张淑贞
+张淑娟
+张淑茹
+张淑婷
+张淑琦
+张淑雅
+张淑娴
+张淑谨
+张渊富
+张涵轩
+张盛纲
+张绍晖
+张莉茹
+张逢时
+张雪云
+张凯宇
+张凯淳
+张凯岚
+张凯琳
+张凯超
+张凯维
+张胜仁
+张胜杰
+张胜雄
+张博和
+张博勋
+张博钧
+张喻
+张乔翔
+张壹能
+张婷韵
+张富淳
+张富祯
+张惠如
+张惠珊
+张惠娟
+张惠婷
+张惠琪
+张惠菁
+张惠雯
+张惠兰
+张敦义
+张晴晴
+张景伦
+张景浑
+张景闳
+张智安
+张智刚
+张智清
+张智杰
+张智崴
+张智翔
+张智钧
+张智豪
+张智谦
+张朝凯
+张朝龙
+张棋雯
+张湘怡
+张琪华
+张琦绍
+张登翔
+张皓崴
+张程顺
+张紫铃
+张翔智
+张舒琦
+张舜华
+张菁茹
+张华倩
+张咏茵
+张证荃
+张贵琳
+张逸凡
+张逸群
+张量然
+张钧富
+张钧贻
+张闵富
+张雁婷
+张雅姗
+张雅芬
+张雅玲
+张雅卿
+张雅敏
+张雅婷
+张雅婷
+张雅婷
+张雅婷
+张雅岚
+张雅惠
+张雅惠
+张雅琪
+张雅琴
+张雅萍
+张雅雯
+张雅雯
+张雅铃
+张雅莹
+张雯茵
+张雯仪
+张顺吉
+张顺福
+张嗣文
+张意诚
+张慈洒
+张恺晏
+张新宏
+张毓
+张毓芬
+张毓伦
+张毓洁
+张源鑫
+张瑚珊
+张瑞君
+张瑞杰
+张瑞芸
+张瑞娟
+张瑞景
+张瑞桦
+张瑞氶
+张瑜君
+张瑜娟
+张祺升
+张义忠
+张群朋
+张圣莉
+张裕昌
+张裕雯
+张诗怡
+张诗雯
+张资昊
+张道智
+张靖怡
+张鼎铉
+张嘉元
+张嘉正
+张嘉宏
+张嘉欣
+张嘉芬
+张嘉玲
+张嘉玲
+张嘉哲
+张嘉晋
+张嘉真
+张嘉训
+张嘉惠
+张嘉雄
+张嘉维
+张嘉声
+张嘉珣
+张宁馨
+张榕容
+张荣盈
+张荣宪
+张荧珊
+张睿颖
+张碧娟
+张硕元
+张硕桓
+张福政
+张纲邑
+张彩芳
+张维全
+张维珊
+张维哲
+张维真
+张维淳
+张维洁
+张翠文
+张翠琪
+张肇梁
+张蓓萱
+张豪文
+张银芳
+张铭宗
+张铭峰
+张铭翰
+张凤平
+张凤仪
+张广浩
+张德榆
+张庆怡
+张庆丰
+张慧怡
+张慧娟
+张慧萍
+张慧箴
+张莹珊
+张卫帆
+张适恒
+张学伦
+张忆君
+张晓昀
+张晓婷
+张晓菁
+张晓凤
+张燕妮
+张翰文
+张醒世
+张锦婷
+张静如
+张静怡
+张静茹
+张龙仁
+张环伊
+张谦达
+张鸿如
+张鸿智
+张曜铨
+张简正伟
+张简欣华
+张简嘉人
+张蓝尹
+张丰璸
+张怀恩
+张琼之
+张琼文
+张琼文
+张琼方
+张琼惠
+张艺馨
+张丽君
+张丽淑
+张宝云
+张献壬
+张缤文
+张继昌
+张耀云
+张耀允
+张耀正
+张耀声
+张释文
+张馨文
+张馨文
+张腾元
+张俪薰
+张巍耀
+张誉馨
+张鹤耀
+张霁月
+张芃
+张倛
+张茜茹
+张琇闵
+张媜媜
+张琬宜
+张琬菁
+张菀倩
+张炜宁
+张玮芸
+张玮伦
+张玮婷
+张筱君
+张筱雯
+张鄐憛
+张钰彩
+张禕伦
+张璁文
+张镫尹
+张恒中
+戚久智
+敖永龙
+曹士敏
+曹文彦
+曹世浩
+曹立行
+曹聿男
+曹志强
+曹佳安
+曹昌男
+曹欣良
+曹春文
+曹哲嘉
+曹峻昌
+曹佩怡
+曹伟茹
+曹淑媛
+曹胜丰
+曹智欣
+曹皓云
+曹雅惠
+曹新彦
+曹嘉文
+曹维伦
+曹毅勇
+曹玺穠
+曹莨贤
+梁乃健
+梁仁华
+梁文安
+梁文宾
+梁世豪
+梁正忠
+梁玉玲
+梁任中
+梁汝舜
+梁君霙
+梁志彬
+梁志铭
+梁育华
+梁佳进
+梁怡芬
+梁东林
+梁信元
+梁俐琦
+梁彦豪
+梁炳铸
+梁郁蓁
+梁家明
+梁家豪
+梁峻铭
+梁晋魁
+梁佩佩
+梁秦宜
+梁健忠
+梁启玄
+梁淑娟
+梁莉娟
+梁胜铭
+梁惠婷
+梁景尧
+梁朝凯
+梁舒怡
+梁逸芬
+梁雅舒
+梁恺芸
+梁瑞轩
+梁圣昌
+梁嘉珍
+梁碧慧
+梁翠珊
+梁慧华
+梁晓维
+梁静宜
+梁琼丹
+梁继仁
+梁懿德
+梁玮真
+梅光宇
+梅雅婷
+毕志华
+盛心
+盛祥
+符肇中
+莫星宇
+庄一凡
+庄于莹
+庄士国
+庄子凯
+庄仁宏
+庄心萍
+庄文昭
+庄文豪
+庄世杰
+庄弘任
+庄正扬
+庄永福
+庄玉麟
+庄如轩
+庄克伟
+庄志明
+庄志荣
+庄秀铃
+庄育榕
+庄依婷
+庄佳荣
+庄佩雯
+庄坤哲
+庄孟玲
+庄孟纾
+庄宗勋
+庄官璇
+庄宜璇
+庄忠益
+庄怡轩
+庄昌晔
+庄明达
+庄东明
+庄欣哲
+庄玥嬛
+庄金静
+庄俊杰
+庄建
+庄政宪
+庄秋子
+庄美馨
+庄英琴
+庄仓杰
+庄家升
+庄家铭
+庄峻榕
+庄桓嘉
+庄佩铃
+庄纯纯
+庄伟仁
+庄国辰
+庄培鑫
+庄启文
+庄梨青
+庄清富
+庄淑芬
+庄淑婷
+庄淑闵
+庄淑珺
+庄莉莉
+庄凯茵
+庄胜利
+庄博清
+庄尧任
+庄富杰
+庄复贵
+庄惠茹
+庄惠萍
+庄惠蓉
+庄晴云
+庄景琇
+庄智涵
+庄智钧
+庄朝钧
+庄登发
+庄善芳
+庄贺乔
+庄闵旭
+庄雅心
+庄雅玲
+庄雅婷
+庄雅惠
+庄雅萍
+庄雅云
+庄雯雯
+庄嵩纬
+庄瑞南
+庄裕文
+庄嘉玲
+庄汉清
+庄维铭
+庄铭景
+庄慧心
+庄莹姿
+庄树宏
+庄蕙萍
+庄锦平
+庄静怡
+庄滨绮
+庄曜旭
+庄蝉妃
+庄熔璞
+庄馥纲
+庄丽足
+庄懿强
+庄捃娉
+庄斌智
+庄筱婷
+许一之
+许乃积
+许又仁
+许大容
+许仁全
+许元铭
+许壬耀
+许心盈
+许文忠
+许文厚
+许文桐
+许文华
+许文豪
+许文蓝
+许日春
+许世民
+许世昌
+许世恬
+许世贤
+许加宏
+许平
+许弘毅
+许正忠
+许正谊
+许永明
+许永毅
+许玉芳
+许玉娟
+许玉婵
+许甲
+许立群
+许仲贤
+许名世
+许宇杰
+许戎岑
+许泛颖
+许至全
+许佑铨
+许克仲
+许君豪
+许妍希
+许宏伟
+许宏德
+许志同
+许志宏
+许志崇
+许志雄
+许志维
+许志远
+许志鹏
+许汶州
+许秀珊
+许秀蓉
+许育菁
+许育诚
+许良
+许贝如
+许佳政
+许佳雯
+许佩茹
+许卓尘
+许孟翔
+许宗荣
+许幸雯
+许怡佩
+许承训
+许明杰
+许明德
+许松等
+许泓琮
+许芳慈
+许芳铭
+许芙玱
+许金发
+许信荣
+许俊雄
+许姿怡
+许彦然
+许恬绫
+许昭元
+许柏桦
+许珊瑜
+许秋玲
+许美芳
+许美华
+许致维
+许英杰
+许郁敏
+许俸昌
+许修铭
+许原铭
+许哲瑞
+许哲彰
+许哲豪
+许哲玮
+许家宣
+许家杰
+许家旸
+许家彰
+许家荣
+许家豪
+许家豪
+许家庆
+许宸豪
+许峻哲
+许峻玮
+许峰铭
+许庭玮
+许振湖
+许时嘉
+许晋荧
+许书
+许书荣
+许书铨
+许根宜
+许栓豪
+许浩玮
+许佩嘉
+许益轩
+许祐莱
+许素菁
+许纯瑜
+许耿豪
+许财得
+许伟忠
+许国安
+许国贤
+许婉茹
+许彩真
+许启扬
+许梅菁
+许淳琇
+许清枫
+许淑芬
+许淑贞
+许淑茹
+许淑惠
+许淑华
+许淑莲
+许盛昌
+许莉莉
+许凯惇
+许凯嘉
+许胜勋
+许博为
+许博森
+许堡如
+许富忠
+许富雄
+许惠如
+许惠珍
+许惠茹
+许惠琳
+许惠雯
+许惠滢
+许晴斐
+许景钧
+许智玲
+许智惟
+许智凯
+许智翔
+许智雄
+许智德
+许朝富
+许钦豪
+许登渊
+许竣能
+许善凯
+许舒茜
+许华倚
+许咏胜
+许贵彰
+许逸章
+许进兴
+许闵雄
+许雅欣
+许雅玲
+许雅淑
+许雅婷
+许雅惠
+许雅惠
+许雅萍
+许雅雁
+许雅雯
+许雅慧
+许雯琳
+许顺清
+许意苹
+许恺翔
+许桢祥
+许毓娟
+许源泉
+许瑞
+许瑞芸
+许瑞恩
+许瑞仪
+许瑜芳
+许禀曼
+许圣杰
+许裕亿
+许诗筠
+许铃英
+许嘉元
+许嘉芳
+许嘉倩
+许嘉佩
+许嘉惠
+许嘉颖
+许榕
+许荣隆
+许瑶馨
+许碧珠
+许硕修
+许箔涵
+许维育
+许维真
+许翠端
+许诱
+许铭仁
+许铭哲
+许铭财
+许阁文
+许凤雅
+许庆文
+许慧君
+许慧贞
+许慕贞
+许适枫
+许忆芳
+许晓菁
+许燕萍
+许锦文
+许静宜
+许静雪
+许嵘仁
+许鸿文
+许薰文
+许怀文
+许琼文
+许琼月
+许陇祺
+许丽华
+许缤如
+许耀文
+许馨仁
+许腾元
+许跃议
+许昶华
+许琇婷
+许琮邦
+许嫈玉
+许筱萍
+许钰茹
+许鋑鸿
+许恒达
+连仁圣
+连世和
+连佑仁
+连秀仁
+连佩泠
+连芸凰
+连建智
+连秋旺
+连容琪
+连桂宏
+连伟杰
+连婉仪
+连启智
+连胜祥
+连雅贞
+连嘉纯
+连庆丰
+连静茹
+郭一桦
+郭乃荣
+郭人豪
+郭力玮
+郭于祯
+郭士华
+郭士凤
+郭子立
+郭子荧
+郭子禕
+郭仁哲
+郭天立
+郭文同
+郭文彦
+郭文惠
+郭文铨
+郭水山
+郭世兰
+郭卉雯
+郭正宗
+郭永明
+郭玉珍
+郭立
+郭立达
+郭仲渊
+郭兆雯
+郭夙吟
+郭年真
+郭有镇
+郭至哲
+郭君怡
+郭宏文
+郭宏骏
+郭志宏
+郭志祥
+郭杏
+郭沂村
+郭育先
+郭育昌
+郭育维
+郭邦彦
+郭佳欣
+郭佳雯
+郭佳鑫
+郭佩琦
+郭奇文
+郭孟蓉
+郭宗庆
+郭尚勋
+郭忠和
+郭怡伶
+郭怡君
+郭怡君
+郭怡秀
+郭怡铃
+郭承仪
+郭明宗
+郭明峰
+郭明道
+郭明玮
+郭松颖
+郭武安
+郭玟玟
+郭玥妦
+郭芳君
+郭芳雯
+郭芝睿
+郭长树
+郭信宏
+郭保君
+郭俊宏
+郭俊男
+郭俊信
+郭俊亿
+郭俐亨
+郭冠廷
+郭品秀
+郭姿伶
+郭姿欣
+郭威志
+郭建宏
+郭建廷
+郭建良
+郭建源
+郭彦君
+郭彦甫
+郭思宜
+郭政忠
+郭政璋
+郭昭安
+郭昭显
+郭昱旻
+郭柏秀
+郭炳成
+郭玲慈
+郭盈君
+郭省萱
+郭美君
+郭美姗
+郭美善
+郭美兰
+郭茂虔
+郭贞孍
+郭倍安
+郭幸铨
+郭凌志
+郭哲成
+郭哲玮
+郭家宏
+郭家祥
+郭家豪
+郭家慧
+郭宸昀
+郭峰升
+郭庭蓉
+郭振汉
+郭晏佑
+郭书豪
+郭桂凤
+郭浩志
+郭益元
+郭祖佑
+郭素绫
+郭耿任
+郭轩
+郭国正
+郭婉玲
+郭启沐
+郭添新
+郭淑芯
+郭淑敏
+郭淑慧
+郭逢祥
+郭胜
+郭乔年
+郭惠青
+郭惠旻
+郭智明
+郭智玮
+郭琪娲
+郭咏佩
+郭进昌
+郭雅汝
+郭雅婷
+郭雅菱
+郭雅薇
+郭慈盈
+郭煜崇
+郭瑞钦
+郭义棠
+郭诗屏
+郭嘉伟
+郭梦竹
+郭荣庆
+郭碧娟
+郭纶益
+郭肇强
+郭铭杰
+郭庆生
+郭慧珍
+郭慧薄
+郭儒谦
+郭晓卉
+郭晓雯
+郭燕玲
+郭蕙萍
+郭锟霖
+郭静美
+郭济维
+郭骏
+郭曜彰
+郭镇元
+郭琼媛
+郭丽秋
+郭献文
+郭蕴忱
+郭馨镁
+郭笼庆
+郭旻瑜
+郭晟宇
+郭暐
+郭钰芳
+郭恒妙
+陈一成
+陈一华
+陈一玮
+陈乃钏
+陈乃荣
+陈人甄
+陈力凡
+陈又昕
+陈又圣
+陈上伦
+陈千锦
+陈士杰
+陈大同
+陈子仁
+陈子彦
+陈子钧
+陈小萍
+陈己升
+陈中铭
+陈之谕
+陈仁宗
+陈仁杰
+陈今凡
+陈元孝
+陈元靖
+陈兮
+陈天仁
+陈天赏
+陈心怡
+陈心怡
+陈心洁
+陈文川
+陈文成
+陈文忠
+陈文亮
+陈文昭
+陈文郎
+陈文涓
+陈文彬
+陈文章
+陈文钦
+陈文华
+陈文蓉
+陈文德
+陈文学
+陈文鸿
+陈文钰
+陈月妮
+陈水泉
+陈世宇
+陈世宗
+陈世明
+陈世杰
+陈世政
+陈世庭
+陈世伟
+陈世章
+陈世棻
+陈世盟
+陈世豪
+陈世泽
+陈世鸿
+陈主欣
+陈以静
+陈仕芳
+陈仕源
+陈仕睿
+陈加明
+陈功霖
+陈可欣
+陈右民
+陈右谕
+陈巨鶠
+陈巧珊
+陈巧惠
+陈巧颐
+陈幼欣
+陈弘文
+陈弘欣
+陈弘训
+陈弘毅
+陈弘铠
+陈札培
+陈正宏
+陈正昌
+陈正芳
+陈正峰
+陈正杰
+陈正雄
+陈正豪
+陈正兴
+陈民
+陈永
+陈永宗
+陈永昌
+陈永青
+陈永凌
+陈永康
+陈永富
+陈永志
+陈永穆
+陈永珩
+陈玉文
+陈玉奇
+陈玉芳
+陈玉芬
+陈玉珊
+陈玉珍
+陈玉娟
+陈玉珠
+陈玉梅
+陈玉琳
+陈玉菁
+陈玉云
+陈玉娇
+陈玉璘
+陈玉馨
+陈生松
+陈石育
+陈立凡
+陈立言
+陈立欣
+陈立伦
+陈立伟
+陈立翎
+陈立维
+陈立翰
+陈亦凡
+陈伊伦
+陈仲志
+陈仲贤
+陈光甫
+陈光华
+陈兆奕
+陈吉利
+陈向荣
+陈在明
+陈如芬
+陈如苹
+陈宇杰
+陈宇超
+陈安佑
+陈安朴
+陈旬
+陈有志
+陈江立
+陈百杰
+陈羽珊
+陈至凯
+陈亨成
+陈佑任
+陈佑庭
+陈伸田
+陈伯杰
+陈伯苍
+陈克宇
+陈克铭
+陈君妃
+陈君航
+陈君荣
+陈君儒
+陈均硕
+陈妙桢
+陈妍伶
+陈妍秀
+陈妤蕙
+陈孝铨
+陈宏仁
+陈宏安
+陈宏昌
+陈宏波
+陈宏美
+陈宏彬
+陈宏隆
+陈宏达
+陈宏铭
+陈宏贤
+陈宏炜
+陈廷俊
+陈志山
+陈志平
+陈志仲
+陈志安
+陈志宏
+陈志沛
+陈志岳
+陈志怡
+陈志明
+陈志升
+陈志欣
+陈志彦
+陈志浩
+陈志伟
+陈志强
+陈志祥
+陈志翔
+陈志雄
+陈志源
+陈志达
+陈志荣
+陈志维
+陈志豪
+陈志豪
+陈志豪
+陈志远
+陈志铭
+陈志宽
+陈志颖
+陈志鸿
+陈志斌
+陈攸婷
+陈村龙
+陈沛吟
+陈汶津
+陈甸
+陈秀君
+陈秀芝
+陈秀玲
+陈秀娟
+陈秀敏
+陈秀惠
+陈秀雅
+陈秀铃
+陈秀慧
+陈秀兰
+陈育正
+陈育佐
+陈育奇
+陈育章
+陈育廉
+陈育诗
+陈育莹
+陈育斌
+陈良政
+陈见秋
+陈辰扬
+陈酉茹
+陈亚铃
+陈依辰
+陈依翔
+陈佳
+陈佳汝
+陈佳伶
+陈佳吟
+陈佳宏
+陈佳妮
+陈佳玥
+陈佳盈
+陈佳真
+陈佳惠
+陈佳琪
+陈佳琦
+陈佳雯
+陈佳群
+陈佳凤
+陈佳慧
+陈佳璘
+陈佳骏
+陈佳怜
+陈侃婷
+陈佩君
+陈佩君
+陈佩佩
+陈佩芸
+陈佩真
+陈佩琳
+陈佩瑜
+陈佩莹
+陈侑娥
+陈其钧
+陈协昌
+陈和成
+陈坤佐
+陈坤杰
+陈坤锺
+陈委承
+陈孟伶
+陈孟良
+陈孟威
+陈孟伟
+陈孟琪
+陈孟铃
+陈孟辉
+陈季佑
+陈宗仁
+陈宗志
+陈宗盈
+陈宗雄
+陈宗旗
+陈宗纬
+陈宗龙
+陈定至
+陈宜平
+陈宜君
+陈宜秀
+陈宜姿
+陈宜培
+陈宜群
+陈宜璋
+陈宜旻
+陈宛姗
+陈尚文
+陈尚瑜
+陈居仁
+陈岳君
+陈幸足
+陈幸满
+陈延道
+陈忠良
+陈忠义
+陈怡
+陈怡文
+陈怡卉
+陈怡冰
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡安
+陈怡竹
+陈怡伶
+陈怡伶
+陈怡伶
+陈怡利
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡廷
+陈怡秀
+陈怡昌
+陈怡芳
+陈怡珊
+陈怡香
+陈怡真
+陈怡婷
+陈怡婷
+陈怡琴
+陈怡菁
+陈怡雯
+陈怡诚
+陈怡硕
+陈怡蓉
+陈怡洁
+陈怡儒
+陈怡颖
+陈怡静
+陈怡静
+陈怡苹
+陈怡蓁
+陈怡睿
+陈招诚
+陈易村
+陈昌文
+陈昌港
+陈昆杰
+陈昂佑
+陈明正
+陈明伸
+陈明宏
+陈明材
+陈明昌
+陈明政
+陈明珠
+陈明莉
+陈明婷
+陈明楷
+陈明裕
+陈明德
+陈明贤
+陈明丰
+陈昕方
+陈升毅
+陈东华
+陈杰盛
+陈松萍
+陈欣如
+陈欣宏
+陈欣宜
+陈欣怡
+陈欣怡
+陈欣泰
+陈欣瑜
+陈欣兰
+陈泳任
+陈法光
+陈泓翔
+陈泓霖
+陈治宇
+陈泊辰
+陈玟光
+陈玟伶
+陈玟瑛
+陈玫如
+陈玫君
+陈玫芳
+陈玫臻
+陈玥燕
+陈秉淳
+陈秉斌
+陈芳珍
+陈芳萱
+陈芝倩
+陈芝范
+陈芯怡
+陈邵鑫
+陈金良
+陈金堤
+陈金声
+陈长庆
+陈雨新
+陈青瑜
+陈亭君
+陈亮丞
+陈亮君
+陈亮颖
+陈信伊
+陈信宇
+陈信旭
+陈信吟
+陈信宏
+陈信宏
+陈信甫
+陈信忠
+陈信智
+陈信裕
+陈信豪
+陈信学
+陈保元
+陈保彰
+陈俊仁
+陈俊文
+陈俊仰
+陈俊吉
+陈俊如
+陈俊宇
+陈俊安
+陈俊成
+陈俊旭
+陈俊佑
+陈俊呈
+陈俊宏
+陈俊宏
+陈俊宏
+陈俊宏
+陈俊廷
+陈俊男
+陈俊男
+陈俊良
+陈俊和
+陈俊杰
+陈俊郎
+陈俊彬
+陈俊杰
+陈俊凯
+陈俊华
+陈俊源
+陈俊达
+陈俊榕
+陈俊维
+陈俊豪
+陈俊铭
+陈俊铭
+陈俊璋
+陈俊桦
+陈俊谚
+陈俊龙
+陈俊玮
+陈俐安
+陈俐秀
+陈俐洁
+陈俞仲
+陈俞妙
+陈俞静
+陈冠夫
+陈冠仰
+陈冠如
+陈冠宇
+陈冠州
+陈冠舟
+陈冠含
+陈冠宏
+陈冠廷
+陈冠男
+陈冠杰
+陈冠呜
+陈冠维
+陈冠铭
+陈冠桦
+陈冠妏
+陈则钦
+陈勇在
+陈勇志
+陈勇达
+陈劲吾
+陈南居
+陈厚铭
+陈品先
+陈品秀
+陈品辉
+陈奕中
+陈奕任
+陈奕帆
+陈奕利
+陈奕廷
+陈奕盈
+陈奕达
+陈奕颖
+陈奕蓁
+陈奎每
+陈姿文
+陈姿百
+陈姿利
+陈姿吟
+陈姿岐
+陈姿珊
+陈姿蓉
+陈姿颖
+陈姿璇
+陈威丞
+陈威全
+陈威宇
+陈威成
+陈威助
+陈威廷
+陈威志
+陈威志
+陈威邑
+陈威翔
+陈威豪
+陈威儒
+陈威霖
+陈宣任
+陈宣每
+陈宥任
+陈宥谕
+陈帅名
+陈建中
+陈建元
+陈建文
+陈建任
+陈建同
+陈建宇
+陈建安
+陈建州
+陈建成
+陈建旭
+陈建行
+陈建呈
+陈建宏
+陈建宏
+陈建宏
+陈建宏
+陈建廷
+陈建志
+陈建志
+陈建甫
+陈建男
+陈建良
+陈建邦
+陈建明
+陈建国
+陈建扬
+陈建华
+陈建评
+陈建源
+陈建达
+陈建荣
+陈建蓉
+陈建辅
+陈建铭
+陈建铭
+陈建璋
+陈建勋
+陈建桦
+陈建龙
+陈建烜
+陈彦夫
+陈彦文
+陈彦任
+陈彦合
+陈彦宇
+陈彦帆
+陈彦竹
+陈彦伸
+陈彦君
+陈彦壮
+陈彦宏
+陈彦宏
+陈彦廷
+陈彦甫
+陈彦良
+陈彦昌
+陈彦凯
+陈彦恺
+陈彦纶
+陈彦豪
+陈彦慰
+陈彦勋
+陈彦霖
+陈律元
+陈思先
+陈思年
+陈思妤
+陈思亮
+陈思源
+陈思蓉
+陈思朴
+陈思颖
+陈思翰
+陈思璇
+陈政文
+陈政宏
+陈政昕
+陈政尧
+陈政裕
+陈政毅
+陈政谦
+陈春妃
+陈春明
+陈春燕
+陈昭文
+陈昭宇
+陈昭伶
+陈昭志
+陈昭伟
+陈昭荣
+陈昭铭
+陈昭玮
+陈映旭
+陈映志
+陈映儒
+陈星宇
+陈星熹
+陈昱丞
+陈昱全
+陈昱汝
+陈昱宏
+陈昱甫
+陈昱达
+陈昱桦
+陈柔安
+陈柄方
+陈柏元
+陈柏份
+陈柏宇
+陈柏州
+陈柏年
+陈柏舟
+陈柏含
+陈柏宏
+陈柏志
+陈柏沅
+陈柏岳
+陈柏峰
+陈柏凯
+陈柏瑞
+陈柏宁
+陈柏蓉
+陈柏璋
+陈柏翰
+陈柏辑
+陈柏玮
+陈洲星
+陈炫君
+陈炳仲
+陈炳辰
+陈炳锟
+陈炯锦
+陈珊珊
+陈珍莹
+陈皆兴
+陈皇旭
+陈皇龙
+陈盈全
+陈盈如
+陈盈如
+陈盈安
+陈盈竹
+陈盈君
+陈盈孜
+陈盈杉
+陈盈贝
+陈盈婷
+陈盈绮
+陈盈璋
+陈盈谕
+陈盈璇
+陈相达
+陈祈宾
+陈禹齐
+陈科顺
+陈秋方
+陈秋帆
+陈秋秀
+陈秋纯
+陈秋萍
+陈秋雯
+陈秋燕
+陈红玉
+陈纪足
+陈美云
+陈美玉
+陈美如
+陈美年
+陈美伶
+陈美君
+陈美吟
+陈美廷
+陈美秀
+陈美芝
+陈美玲
+陈美娟
+陈美纯
+陈美乔
+陈美惠
+陈美琴
+陈美菱
+陈美铃
+陈美慧
+陈美儒
+陈美静
+陈美钰
+陈羿谷
+陈致仰
+陈致宏
+陈致福
+陈致睿
+陈若曦
+陈茂雄
+陈英杰
+陈英振
+陈英杰
+陈英蓓
+陈英鸿
+陈苓娟
+陈虹曲
+陈虹吟
+陈虹洁
+陈衍至
+陈衍霖
+陈贞旭
+陈贞妤
+陈贞蓉
+陈贞玮
+陈郁仁
+陈郁文
+陈郁芬
+陈郁杰
+陈郁菁
+陈郁枫
+陈重光
+陈重廷
+陈重儒
+陈韦在
+陈韦伶
+陈韦廷
+陈韦承
+陈韦豪
+陈音
+陈飞良
+陈香如
+陈香吟
+陈香婷
+陈倍甄
+陈幸翠
+陈凌砚
+陈哲民
+陈哲强
+陈哲贤
+陈家正
+陈家奇
+陈家珍
+陈家祥
+陈家湖
+陈家雯
+陈家汉
+陈家仪
+陈家慧
+陈家兴
+陈家琮
+陈容萱
+陈峰州
+陈恕
+陈恩荣
+陈振东
+陈振涌
+陈振铭
+陈时盟
+陈书光
+陈书毓
+陈桂玉
+陈桂慧
+陈泰全
+陈泰伶
+陈泰峰
+陈泰铭
+陈浚钦
+陈浩茹
+陈佩云
+陈佩怡
+陈佩佩
+陈佩瑜
+陈佩玮
+陈益裕
+陈祐悌
+陈纺
+陈素珍
+陈素娥
+陈素瑜
+陈纯怡
+陈耘宽
+陈荃豪
+陈郡怡
+陈干淦
+陈伟民
+陈伟信
+陈伟莉
+陈伟裕
+陈健上
+陈健封
+陈健霖
+陈国元
+陈国明
+陈国峰
+陈国梁
+陈国棋
+陈国荣
+陈国锋
+陈坚民
+陈培育
+陈培端
+陈婉育
+陈婉卿
+陈婉菁
+陈婉洁
+陈崇原
+陈昆铭
+陈彩纯
+陈捷
+陈启存
+陈启清
+陈启铭
+陈敏星
+陈敏新
+陈梓玮
+陈梅馨
+陈清奇
+陈清源
+陈淑
+陈淑君
+陈淑怡
+陈淑芬
+陈淑芬
+陈淑玲
+陈淑秋
+陈淑贞
+陈淑娟
+陈淑娟
+陈淑真
+陈淑羚
+陈淑惠
+陈淑萍
+陈淑雅
+陈淑铃
+陈淑慧
+陈淑静
+陈渊秋
+陈猛宗
+陈祥钧
+陈绍庭
+陈庄伟
+陈莉婷
+陈许民
+陈雪芬
+陈雪华
+陈杰裕
+陈凯玲
+陈凯钿
+陈胜如
+陈胜嘉
+陈博康
+陈乔宇
+陈婷玟
+陈富民
+陈富荣
+陈惠文
+陈惠君
+陈惠芬
+陈惠玲
+陈惠美
+陈惠娟
+陈惠婷
+陈惠萍
+陈惠雯
+陈惠雯
+陈惠龄
+陈扬哲
+陈晶晶
+陈景泰
+陈景鑫
+陈智亮
+陈智伟
+陈智阳
+陈智宽
+陈朝文
+陈朝熙
+陈棋珍
+陈湘于
+陈湘琴
+陈渝文
+陈琪雯
+陈琦琳
+陈登隆
+陈筑筠
+陈肃权
+陈舒憛
+陈菁
+陈华伟
+陈咏亮
+陈贺钰
+陈辜亮
+陈逸平
+陈逸明
+陈逸盈
+陈逸菁
+陈逸维
+陈逸鸿
+陈进志
+陈进隆
+陈钧屏
+陈闵隆
+陈隆斌
+陈雅君
+陈雅玫
+陈雅芬
+陈雅玲
+陈雅玲
+陈雅苓
+陈雅佩
+陈雅雪
+陈雅婷
+陈雅惠
+陈雅惠
+陈雅琪
+陈雅琴
+陈雅菁
+陈雅雯
+陈雅雯
+陈雅铃
+陈雅慧
+陈雅韵
+陈雯
+陈雯惠
+陈云朴
+陈顺发
+陈传兴
+陈意文
+陈意雯
+陈慈雅
+陈爱甄
+陈敬文
+陈敬杰
+陈新烈
+陈业统
+陈榆涵
+陈毓良
+陈毓茹
+陈毓钧
+陈源正
+陈温萍
+陈照慈
+陈煦淑
+陈焕森
+陈瑞利
+陈瑞昌
+陈瑞芬
+陈瑞钏
+陈瑞瑜
+陈瑞霖
+陈瑞麟
+陈瑜诗
+陈祺富
+陈经国
+陈义忠
+陈义纬
+陈圣尹
+陈圣宜
+陈圣杰
+陈圣宪
+陈萱蔓
+陈蜂灏
+陈裕升
+陈裕廷
+陈裕智
+陈诗平
+陈诗泉
+陈诗婷
+陈诗诗
+陈诗苹
+陈运征
+陈达裕
+陈雍
+陈靖怡
+陈鼎仁
+陈嘉仁
+陈嘉亨
+陈嘉宏
+陈嘉怡
+陈嘉玲
+陈嘉峰
+陈嘉茵
+陈嘉淦
+陈嘉惠
+陈嘉雁
+陈嘉勤
+陈嘉德
+陈嘉莹
+陈嘉营
+陈嘉琮
+陈旗昌
+陈荣杰
+陈荣进
+陈荣耀
+陈汉珍
+陈汉蔚
+陈瑶真
+陈碧红
+陈碧云
+陈硕伟
+陈福林
+陈绮华
+陈维邦
+陈维哲
+陈维仪
+陈翠婷
+陈肇鸿
+陈蓓玲
+陈志睿
+陈铭
+陈铭泉
+陈铭强
+陈铭雄
+陈铭耀
+陈凤玲
+陈凤鸣
+陈仪
+陈仪珊
+陈仪洁
+陈宽如
+陈广麟
+陈德和
+陈德堂
+陈德远
+陈征宗
+陈庆星
+陈庆华
+陈庆维
+陈庆翰
+陈庆鸿
+陈慧玉
+陈慧如
+陈慧君
+陈慧芝
+陈慧珊
+陈慧玲
+陈慧美
+陈慧卿
+陈慧真
+陈慧纯
+陈慧敏
+陈慧萍
+陈慧雯
+陈慧蓉
+陈慧樵
+陈慧兰
+陈慕儒
+陈毅正
+陈毅鸿
+陈洁音
+陈莹芳
+陈莹蓉
+陈莹瑄
+陈纬恩
+陈蔚青
+陈谊芳
+陈贤典
+陈辉吉
+陈震宇
+陈黎桂
+陈学明
+陈宪仁
+陈宪仪
+陈忆雯
+陈晓姗
+陈晓青
+陈晓风
+陈晓岚
+陈晓菁
+陈晓筠
+陈晓慧
+陈晓丽
+陈树年
+陈泽珊
+陈燕伶
+陈燕菁
+陈燕怜
+陈颖君
+陈颖祥
+陈颖慧
+陈穆蓉
+陈翰璋
+陈蕙芳
+陈蕙苹
+陈锡华
+陈锦秀
+陈锦堂
+陈锦慧
+陈锦鸿
+陈静如
+陈静宜
+陈静怡
+陈静怡
+陈静怡
+陈静芳
+陈静淑
+陈静宁
+陈静仪
+陈静慧
+陈静贤
+陈龙生
+陈龙宽
+陈曙东
+陈聪仁
+陈臆仁
+陈薇
+陈薇如
+陈谦毅
+陈骏扬
+陈鸿文
+陈鸿志
+陈鸿清
+陈鸿裕
+陈鸿霖
+陈璇如
+陈丰振
+陈怀哲
+陈玺争
+陈琼淇
+陈琼桦
+陈艺心
+陈赞中
+陈铿任
+陈韵夙
+陈韵如
+陈韵如
+陈韵如
+陈韵竹
+陈韵婷
+陈韵静
+陈鹏禾
+陈麒元
+陈麒全
+陈丽文
+陈丽如
+陈丽宇
+陈丽而
+陈丽芬
+陈丽卿
+陈丽珠
+陈丽婷
+陈丽萍
+陈丽雯
+陈丽莲
+陈宝玉
+陈宝莲
+陈耀仁
+陈耀笙
+陈馨怡
+陈俪文
+陈樱容
+陈誉龄
+陈鹤中
+陈懿映
+陈艳铃
+陈芊秀
+陈怜君
+陈旻政
+陈玠源
+陈姮霏
+陈姵如
+陈姵吟
+陈姵瑱
+陈昶昱
+陈珈琦
+陈彧馨
+陈琇如
+陈堜
+陈琮闵
+陈琬婷
+陈琬菁
+陈椸涓
+陈玮
+陈玮典
+陈玮耘
+陈玮昶
+陈筱芳
+陈筱婷
+陈筱筠
+陈萩芸
+陈钰玫
+陈钰婷
+陈钰玺
+陈铫茹
+陈霈宇
+陈薏雯
+陈滢如
+陈滢淑
+陈嬿因
+陈嬿伶
+陈顗文
+陈鑫麟
+陆小燕
+陆正义
+陆季宏
+陆信龙
+陆津华
+陆梅婷
+陆云泰
+陆凤玲
+陆淯铃
+陶育均
+陶惟萱
+章文芝
+章佳云
+章根源
+章翔
+章琼方
+麦佩雯
+麦卢宝全
+傅一雄
+傅子
+傅文进
+傅正希
+傅光智
+傅宏斌
+傅亚凡
+傅怡芳
+傅金宏
+傅建国
+傅映先
+傅美蓉
+傅佩淇
+傅国栋
+傅启皇
+傅淑雯
+傅斯平
+傅雅卿
+傅煌锦
+傅铅文
+傅德政
+傅锹淼
+傅琮
+单亦侠
+喻至善
+乔宗尧
+富康翔
+彭上吉
+彭士
+彭仁志
+彭及辰
+彭文宏
+彭文慧
+彭以信
+彭正良
+彭玉华
+彭伊芬
+彭如敏
+彭成杰
+彭旭初
+彭宏君
+彭志豪
+彭佳伟
+彭宗意
+彭怡蕙
+彭朋雍
+彭秉正
+彭保欣
+彭俊福
+彭冠瑛
+彭威翔
+彭建荣
+彭律凡
+彭柏威
+彭秋萍
+彭若慈
+彭郁仁
+彭哲仁
+彭浩伦
+彭伟君
+彭国峰
+彭崇信
+彭启钧
+彭淑珍
+彭盛
+彭雪琦
+彭喜浩
+彭晶声
+彭滋萍
+彭舒彦
+彭开明
+彭雅绢
+彭爱苹
+彭瑞苓
+彭圣萍
+彭嘉君
+彭荣桂
+彭铭淇
+彭慧如
+彭贤一
+彭晓琪
+彭锦炫
+彭骏洁
+彭丽慧
+彭馨慧
+彭玮彦
+彭颀苹
+景雨秋
+曾凡哲
+曾于慈
+曾千豪
+曾士轩
+曾士
+曾子庭
+曾小玲
+曾仁佑
+曾元志
+曾孔钰
+曾文
+曾文忠
+曾文彬
+曾文慧
+曾文顗
+曾世煌
+曾令瑜
+曾平诰
+曾正耀
+曾玉如
+曾玉菁
+曾立德
+曾仲盟
+曾吉宏
+曾如君
+曾安琪
+曾羽岭
+曾君豪
+曾志玄
+曾志杰
+曾志麟
+曾秀梅
+曾育菁
+曾佳玲
+曾佳瑱
+曾季歆
+曾尚志
+曾怡娟
+曾怡嘉
+曾承志
+曾明德
+曾泓霖
+曾芝兰
+曾信杰
+曾俊彦
+曾俊智
+曾俊豪
+曾俊玮
+曾冠桦
+曾品彰
+曾姿绮
+曾威谕
+曾建和
+曾建博
+曾建荣
+曾建霖
+曾彦闵
+曾彦翰
+曾思维
+曾政豪
+曾昭翔
+曾映龄
+曾柏涵
+曾柏兴
+曾皇龙
+曾秋敏
+曾美怡
+曾美华
+曾美龄
+曾英峰
+曾郁文
+曾郁颖
+曾家振
+曾展其
+曾书慧
+曾佩琳
+曾素铃
+曾轩彬
+曾伟翔
+曾健逢
+曾国志
+曾国书
+曾国裕
+曾国鋆
+曾婉惠
+曾庸哲
+曾启强
+曾梅玉
+曾淑芳
+曾淑敏
+曾淑萍
+曾涵副
+曾祥达
+曾贯智
+曾凯悌
+曾博彦
+曾富钰
+曾惠玲
+曾惠雯
+曾斐红
+曾智弘
+曾智祺
+曾湘云
+曾舒平
+曾华龄
+曾贵祯
+曾钧鼎
+曾雅青
+曾雅惠
+曾雅铉
+曾云沐
+曾意文
+曾慈惠
+曾晖洸
+曾溥元
+曾焕杰
+曾瑞晃
+曾瑛琳
+曾筠凊
+曾圣然
+曾裕凯
+曾诗翰
+曾靖娟
+曾鼎元
+曾嘉英
+曾荣
+曾碧莲
+曾维群
+曾铭衔
+曾德龙
+曾庆瑄
+曾慧真
+曾澄堉
+曾宪忠
+曾晓琪
+曾蕙菁
+曾静怡
+曾繁青
+曾鸿家
+曾怀贤
+曾琼慧
+曾韵真
+曾丽娟
+曾宝磁
+曾继增
+曾耀贤
+曾馨仪
+曾龄慧
+曾郅絜
+曾琮彦
+曾暐清
+曾筱婷
+曾钰芬
+曾瞍
+游力行
+游士汉
+游大纬
+游之娴
+游文志
+游文聪
+游世斌
+游本威
+游玉姿
+游兆君
+游君苹
+游志伟
+游李雄
+游亚俐
+游佳敏
+游佩勋
+游宗宪
+游宜群
+游怡祥
+游昌翰
+游明仪
+游欣
+游青霏
+游奕霖
+游政璋
+游秋怡
+游英如
+游娟娟
+游家豪
+游恩政
+游佩筠
+游高杰
+游婉青
+游启辉
+游淑如
+游淑惠
+游祥杰
+游凯媜
+游乔智
+游惠玲
+游景翔
+游智超
+游朝舜
+游竣盛
+游舜杰
+游进富
+游雅芳
+游雅婷
+游雅筠
+游瑞莲
+游裕德
+游荣华
+游庆芳
+游辉祥
+游晓芸
+游锡宗
+游骏伟
+游镇邦
+游献群
+游旻宪
+游矞皇
+汤一珊
+汤今兰
+汤玉琴
+汤志忠
+汤佳翰
+汤岳豊
+汤治邦
+汤家豪
+汤健文
+汤渊富
+汤富棋
+汤咏瑜
+汤雅枫
+汤庆铮
+汤鸿贤
+焦信祥
+程之宁
+程文锺
+程立辉
+程志文
+程尚则
+程秉鑫
+程奕欣
+程建翰
+程柏章
+程秋兰
+程伟政
+程婉欣
+程淑玲
+程斐文
+程雅惠
+程诗婷
+程洁菡
+程琼萱
+程蕴霞
+童士芬
+童弘
+童安亨
+童信和
+童美满
+童惟新
+童湘芸
+童圣杰
+童韵如
+童滢蓉
+舒婷婷
+华国锋
+覃思齐
+费骐葳
+贺厚平
+贺瑞丽
+买菁华
+辜信福
+辜郁仁
+辜惠群
+辜静怡
+闵任远
+阳正光
+云智勇
+须上苑
+冯允中
+冯文政
+冯永滢
+冯佑雄
+冯佳琦
+冯长龙
+冯建筌
+冯美珊
+冯晋嘉
+冯彩娟
+冯博伟
+冯翔瑜
+冯瑞阳
+冯志遵
+冯炽炜
+冯耀文
+黄一
+黄一伦
+黄乙上
+黄力言
+黄上芳
+黄凡维
+黄于芬
+黄于珊
+黄于哲
+黄于真
+黄于祯
+黄千芳
+黄千凌
+黄千华
+黄士
+黄士欣
+黄士原
+黄士峰
+黄士钊
+黄士嘉
+黄士豪
+黄士贤
+黄大伦
+黄子才
+黄子建
+黄子卿
+黄子轩
+黄子穆
+黄小佩
+黄小娟
+黄山峰
+黄才旺
+黄中伟
+黄之亭
+黄仁弘
+黄仁良
+黄仁柏
+黄仁璋
+黄元山
+黄元隆
+黄元骏
+黄友谦
+黄天健
+黄少雨
+黄心怡
+黄心怡
+黄心怡
+黄心仪
+黄心姮
+黄文正
+黄文孝
+黄文村
+黄文怡
+黄文信
+黄文彦
+黄文玲
+黄文益
+黄文胜
+黄文隆
+黄文祺
+黄文荣
+黄文璋
+黄文龙
+黄文麒
+黄日青
+黄月瑾
+黄世安
+黄世宜
+黄世朋
+黄世坚
+黄世涌
+黄世嘉
+黄世增
+黄世颖
+黄以乔
+黄仕达
+黄加欣
+黄可甄
+黄巧婷
+黄平宇
+黄弘吉
+黄弘毅
+黄正一
+黄正安
+黄正佩
+黄正伟
+黄正顺
+黄正锟
+黄永仁
+黄永升
+黄永智
+黄永汉
+黄汀满
+黄玉君
+黄玉雨
+黄玉娟
+黄玉婷
+黄玉菁
+黄玉莹
+黄玉兰
+黄立文
+黄立芬
+黄立达
+黄立纬
+黄亦萱
+黄仲正
+黄仲煦
+黄任延
+黄光玉
+黄光满
+黄兆敏
+黄全富
+黄吉廷
+黄名池
+黄夙慧
+黄如真
+黄如翰
+黄宇廷
+黄守田
+黄安德
+黄旭弘
+黄旭辉
+黄江瑜
+黄百灿
+黄聿君
+黄至枰
+黄至鹏
+黄伯年
+黄克任
+黄君怡
+黄妙芬
+黄孝彰
+黄宏亮
+黄宏进
+黄宏骏
+黄志仁
+黄志平
+黄志成
+黄志明
+黄志伟
+黄志强
+黄志扬
+黄志雄
+黄志嘉
+黄志豪
+黄志铭
+黄志龙
+黄杏如
+黄沛声
+黄秀玲
+黄秀容
+黄秀华
+黄秀蓉
+黄育信
+黄良
+黄邦彦
+黄依文
+黄佳元
+黄佳春
+黄佳媛
+黄佳华
+黄佳娴
+黄佳蕙
+黄佩俐
+黄佩萱
+黄卓君
+黄坤德
+黄孟专
+黄孟樵
+黄宗基
+黄宗贤
+黄宜玲
+黄宛贞
+黄幸仪
+黄念芹
+黄怡君
+黄怡珊
+黄怡茹
+黄怡萍
+黄怡菁
+黄怡雯
+黄怡嘉
+黄怡维
+黄怡龄
+黄承德
+黄昌鼎
+黄明志
+黄明彦
+黄明理
+黄明瑞
+黄明慧
+黄昕岚
+黄东海
+黄松筠
+黄欣怡
+黄欣愉
+黄欣蕙
+黄河顺
+黄治平
+黄玟瑾
+黄秉钧
+黄芝华
+黄芷云
+黄金汤
+黄金树
+黄长泽
+黄亭萍
+黄亮凯
+黄信文
+黄信捷
+黄信棠
+黄信恺
+黄信彰
+黄信铭
+黄信颖
+黄信斌
+黄保璁
+黄俊生
+黄俊哲
+黄俊淇
+黄俊杰
+黄俊杰
+黄俊杰
+黄俊凯
+黄俊棋
+黄俊舜
+黄俊隆
+黄俊祺
+黄俊嘉
+黄俊维
+黄俊豪
+黄俊贤
+黄俊颖
+黄俊龙
+黄俊烨
+黄俞斐
+黄冠怡
+黄冠程
+黄冠雅
+黄冠宾
+黄冠龙
+黄勇慧
+黄厚盛
+黄品杰
+黄品毅
+黄奕揆
+黄奕霖
+黄姿婷
+黄姿绫
+黄威凯
+黄威铭
+黄宣凯
+黄宣穆
+黄建中
+黄建文
+黄建青
+黄建凯
+黄建智
+黄建程
+黄建钧
+黄建源
+黄建彰
+黄建豪
+黄建铭
+黄建勋
+黄建颖
+黄建龙
+黄彦太
+黄彦强
+黄彦博
+黄彦皓
+黄彦瑜
+黄彦宾
+黄彦樵
+黄彦斌
+黄思凯
+黄思嘉
+黄思贤
+黄思玮
+黄政原
+黄政扬
+黄政龙
+黄春堤
+黄昭仁
+黄昭智
+黄昭维
+黄映瑄
+黄昱中
+黄昱恺
+黄昱龙
+黄柏元
+黄柏强
+黄柏乔
+黄柏翔
+黄柏瑞
+黄柏绮
+黄柏璋
+黄柏翰
+黄柏禲
+黄为栋
+黄炳宪
+黄珊萍
+黄珀钟
+黄盈惠
+黄盈彰
+黄相志
+黄秋芳
+黄秋萍
+黄秋瑛
+黄秋霞
+黄美玉
+黄美玲
+黄美娟
+黄美羚
+黄美筑
+黄美雯
+黄美蓉
+黄美燕
+黄致恒
+黄致远
+黄若薇
+黄茂源
+黄英彦
+黄英杰
+黄英铭
+黄衍钦
+黄贞颖
+黄郁仁
+黄郁玫
+黄郁珊
+黄郁茗
+黄郁婷
+黄郁棠
+黄郁雯
+黄郁静
+黄重凯
+黄韦琪
+黄韦勋
+黄香榕
+黄仓彦
+黄哲枫
+黄孙宇
+黄家珍
+黄家隆
+黄家纬
+黄峻峥
+黄庭钰
+黄振甫
+黄振庭
+黄振诚
+黄振玱
+黄书寅
+黄书钰
+黄泰昆
+黄泰霖
+黄浩天
+黄浩钧
+黄佩芸
+黄佩娟
+黄佩舒
+黄佩瑜
+黄益建
+黄祖贤
+黄素真
+黄纯美
+黄能丰
+黄钊俊
+黄伟宙
+黄伟修
+黄伟峰
+黄伟杰
+黄伟诚
+黄伟铭
+黄健奇
+黄健晏
+黄健溢
+黄凰慈
+黄国全
+黄国芳
+黄国伦
+黄国展
+黄国晋
+黄国轩
+黄国栋
+黄国钧
+黄国裕
+黄国荣
+黄国豪
+黄国钟
+黄堂轩
+黄培峻
+黄培铭
+黄婉贞
+黄婉菁
+黄尉翔
+黄崇训
+黄崇铭
+黄常树
+黄彩铭
+黄惟圣
+黄启宏
+黄启修
+黄启书
+黄启彰
+黄敏
+黄敏修
+黄敏华
+黄敏慧
+黄梅玲
+黄添虎
+黄清泰
+黄清麟
+黄淑岑
+黄淑芬
+黄淑玲
+黄淑贞
+黄淑卿
+黄淑桃
+黄淑梅
+黄淑媛
+黄淑琪
+黄淑华
+黄淑雯
+黄淑甄
+黄淑静
+黄渊贤
+黄皎
+黄祥恩
+黄祥斌
+黄绍萱
+黄莉
+黄莉娟
+黄莉琪
+黄莉嘉
+黄途岩
+黄雪凤
+黄杰文
+黄凯威
+黄凯琪
+黄凯麟
+黄胜志
+黄胜裕
+黄博泰
+黄喜麟
+黄尧伟
+黄婷婷
+黄富
+黄富详
+黄复聪
+黄惠君
+黄惠芬
+黄惠珍
+黄惠娥
+黄惠敏
+黄惠琴
+黄惠勤
+黄惠诗
+黄惠霞
+黄扬名
+黄斯骏
+黄景裕
+黄智勇
+黄智伟
+黄智康
+黄智隆
+黄智铭
+黄智玮
+黄朝琴
+黄朝梁
+黄植懋
+黄湘巧
+黄湘婷
+黄渝芳
+黄琪婷
+黄琳钧
+黄琦棻
+黄登键
+黄竣南
+黄筑钰
+黄善晖
+黄舒彦
+黄舜忠
+黄菁薇
+黄菊英
+黄咏瑞
+黄贵堂
+黄逸
+黄逸纯
+黄逸玮
+黄钧沁
+黄闵农
+黄雅君
+黄雅芳
+黄雅津
+黄雅玲
+黄雅卿
+黄雅淑
+黄雅雪
+黄雅惠
+黄雅琪
+黄雅琴
+黄雅萍
+黄雅雯
+黄雅萱
+黄雅铃
+黄雅慧
+黄雅龄
+黄雯玉
+黄雯筠
+黄顺吉
+黄传围
+黄廉智
+黄意茹
+黄意超
+黄慈
+黄敬元
+黄敬斌
+黄晖文
+黄楷祺
+黄榆婷
+黄毓翎
+黄毓华
+黄源璋
+黄照凯
+黄煦氛
+黄瑟芸
+黄瑞伶
+黄瑞屏
+黄瑞祥
+黄瑞阳
+黄瑞兴
+黄瑜淑
+黄盟凯
+黄祺芬
+黄筠真
+黄义君
+黄义铭
+黄群雄
+黄圣圳
+黄圣哲
+黄圣杰
+黄圣棻
+黄圣鸿
+黄裕中
+黄裕宜
+黄裕盛
+黄裕翔
+黄裕昶
+黄诗芸
+黄诗茹
+黄诗涵
+黄诗惠
+黄诗雯
+黄诗苹
+黄道全
+黄铃琪
+黄隽琦
+黄靖芸
+黄靖惠
+黄靖雯
+黄鼎能
+黄嘉民
+黄嘉勇
+黄嘉伦
+黄嘉雪
+黄嘉萱
+黄嘉贤
+黄荣山
+黄荣顺
+黄汉光
+黄汉辉
+黄睿伸
+黄碧云
+黄祯庆
+黄维
+黄维智
+黄肇宏
+黄远宏
+黄铭伟
+黄铭辉
+黄魁彬
+黄仪君
+黄德秀
+黄德炜
+黄庆华
+黄慧玉
+黄慧芬
+黄慧娟
+黄慧茹
+黄慧菁
+黄慧祯
+黄澄伟
+黄蔚仁
+黄贤章
+黄震宇
+黄宪得
+黄忆菁
+黄晓佩
+黄晓音
+黄晓菱
+黄晓薇
+黄燕娥
+黄兴元
+黄蕙萍
+黄铮晖
+黄锦章
+黄静子
+黄静宜
+黄静怡
+黄静莉
+黄龙一
+黄应璇
+黄聪琪
+黄薇琼
+黄骏达
+黄鸿智
+黄礼伸
+黄薰莹
+黄双玉
+黄怀庆
+黄瀚德
+黄琼妃
+黄琼华
+黄琼仪
+黄琼仪
+黄琼慧
+黄琼慧
+黄琼谊
+黄琼
+黄镜生
+黄韵如
+黄韵韵
+黄鹏图
+黄丽妃
+黄丽芬
+黄丽香
+黄丽容
+黄丽蓉
+黄丽铮
+黄宝玉
+黄宝仪
+黄宝稹
+黄献谆
+黄继增
+黄耀文
+黄耀俊
+黄耀德
+黄耀莹
+黄耀辉
+黄议德
+黄钟苇
+黄馨怡
+黄馨仪
+黄馨慧
+黄馨毅
+黄馨霈
+黄龄萱
+黄兰玉
+黄铁豪
+黄显婷
+黄艳玉
+黄玠晟
+黄姵瑄
+黄昶斌
+黄勖轩
+黄琇苓
+黄翊宸
+黄枨吉
+黄琮富
+黄琬君
+黄琬婷
+黄琬雯
+黄琬瑂
+黄菀铃
+黄暐睿
+黄玮欣
+黄玮宁
+黄筱芸
+黄筱乔
+黄筱雁
+黄筱苹
+黄钰娟
+黄钰婷
+黄钰婷
+黄钰斐
+黄钰雯
+黄钲闵
+黄瞍
+黄薏澄
+黄謵说
+黄龆
+涂巧忆
+涂时雨
+涂媄云
+杨
+杨人颖
+杨三贤
+杨千里
+杨千慧
+杨士弘
+杨士朋
+杨士毅
+杨士贤
+杨大毅
+杨子恒
+杨子毅
+杨子瑢
+杨小慧
+杨中孚
+杨之慧
+杨仁华
+杨介文
+杨允中
+杨心怡
+杨心德
+杨文宏
+杨文杰
+杨文媛
+杨文瑞
+杨文仪
+杨文玮
+杨世平
+杨世凯
+杨世鹏
+杨仕馨
+杨可歆
+杨弘先
+杨本圣
+杨正彬
+杨永正
+杨永琦
+杨玉君
+杨玉鼎
+杨白鲸
+杨立群
+杨仲民
+杨兆钦
+杨妃婷
+杨守城
+杨旨祥
+杨自雄
+杨伶慧
+杨妙恩
+杨宏祥
+杨志平
+杨志能
+杨志伟
+杨志祥
+杨志雍
+杨志学
+杨沛莳
+杨秀珠
+杨秀慧
+杨育真
+杨育儒
+杨亚琦
+杨佳欣
+杨佳展
+杨佳菁
+杨佳撰
+杨佳萤
+杨佩珊
+杨佩儒
+杨其瀚
+杨坤英
+杨奇惠
+杨孟修
+杨孟蓉
+杨孟翰
+杨宗
+杨宗倍
+杨宗尧
+杨宗儒
+杨宗颖
+杨宗翰
+杨宗烜
+杨宜文
+杨宜璋
+杨宜蓁
+杨尚训
+杨尚融
+杨岱儒
+杨忠仁
+杨忠宪
+杨怡芳
+杨怡萍
+杨承
+杨承熹
+杨易伦
+杨昌宾
+杨昆霖
+杨明杰
+杨明纯
+杨明诚
+杨明寰
+杨明禧
+杨升桦
+杨东敏
+杨松铭
+杨欣怡
+杨欣佩
+杨欣燕
+杨泓褘
+杨秉顺
+杨芳雄
+杨芸
+杨金璋
+杨长洁
+杨青峰
+杨俊宏
+杨俊辉
+杨奕昶
+杨建彦
+杨思隽
+杨政彬
+杨政勋
+杨政霖
+杨昭辉
+杨为舜
+杨秋男
+杨纪芸
+杨美玲
+杨美惠
+杨美艺
+杨苑利
+杨倩
+杨哲安
+杨哲铭
+杨家明
+杨家祺
+杨家铭
+杨家玮
+杨恭沛
+杨振宗
+杨振汉
+杨晏菁
+杨书豪
+杨涓樱
+杨佩君
+杨佩琦
+杨真珠
+杨素卿
+杨荐翔
+杨虔雅
+杨伟文
+杨伟琪
+杨健国
+杨国松
+杨国鼎
+杨培恩
+杨婉莉
+杨崇鑫
+杨惟白
+杨启宏
+杨敏芳
+杨梵孛
+杨淳砚
+杨清桃
+杨淑元
+杨淑佳
+杨淑芬
+杨淑美
+杨淑敏
+杨淑惠
+杨淑萍
+杨淑雅
+杨淑慧
+杨渊胜
+杨净芝
+杨盛斌
+杨莉芳
+杨雪雅
+杨凯仲
+杨凯杰
+杨凯钧
+杨胜宇
+杨胜斐
+杨勋凯
+杨博宇
+杨博钦
+杨喻闵
+杨壹舒
+杨婷钧
+杨富安
+杨富琛
+杨循婷
+杨惠宇
+杨惠真
+杨惠婷
+杨惠琳
+杨惠雯
+杨敦杰
+杨斯凯
+杨景元
+杨景尧
+杨景雯
+杨智元
+杨智宏
+杨智杰
+杨智尧
+杨智善
+杨智钧
+杨智龙
+杨朝敏
+杨朝舜
+杨森发
+杨涌评
+杨登安
+杨皓玮
+杨策航
+杨善惠
+杨舒帆
+杨舒媛
+杨舒雯
+杨舜钦
+杨菁芬
+杨菱雅
+杨咏菘
+杨贵媛
+杨逸莉
+杨钧百
+杨闵翔
+杨雅玉
+杨雅芳
+杨雅伦
+杨雅淑
+杨雅婷
+杨雅婷
+杨雅岚
+杨雅惠
+杨雅晶
+杨雅翔
+杨雅超
+杨雅雯
+杨雅云
+杨雅茜
+杨雯惠
+杨云翔
+杨顺棋
+杨慈仪
+杨毓玲
+杨焕章
+杨瑞杰
+杨万帆
+杨裕
+杨诗轩
+杨道忠
+杨嘉玲
+杨嘉瑜
+杨嘉丰
+杨荣吉
+杨槐驹
+杨碧雯
+杨维华
+杨赵铭
+杨铭顾
+杨德志
+杨庆隆
+杨慧玲
+杨慧琼
+杨璋
+杨震伟
+杨宪升
+杨晓青
+杨晓菁
+杨桥霖
+杨燕云
+杨蕙芳
+杨蕙嘉
+杨锡宪
+杨静如
+杨静怡
+杨静雯
+杨戴州
+杨爵骏
+杨骏民
+杨曜准
+杨础远
+杨绣绫
+杨丰全
+杨丰铭
+杨镇远
+杨馥诚
+杨琼华
+杨丽冠
+杨丽琴
+杨曦琳
+杨钟铉
+杨灵苓
+杨茜卉
+杨琇如
+杨琇媛
+杨翊佩
+杨琬婷
+杨玮琦
+杨蓁蓁
+杨铠伊
+温丈纬
+温心岚
+温正龙
+温至任
+温秀怡
+温宗
+温承翰
+温金瑞
+温建声
+温若婷
+温展华
+温素梅
+温培青
+温淑怡
+温凯
+温智连
+温雅清
+温圣延
+温铭哲
+温晓华
+温馥远
+温菘渝
+万佳昕
+万建明
+万敏婉
+万晓明
+叶丁源
+叶乃祯
+叶人宾
+叶又嘉
+叶千菊
+叶士新
+叶大苇
+叶子豪
+叶山华
+叶天将
+叶文伟
+叶文龙
+叶世民
+叶代权
+叶正圣
+叶玉玲
+叶亦盛
+叶光愉
+叶向阳
+叶如雯
+叶竹育
+叶佐骏
+叶宏杰
+叶志彦
+叶志博
+叶步旻
+叶秀梅
+叶育峰
+叶依青
+叶佳欣
+叶佳菁
+叶佳勋
+叶佩真
+叶奉杰
+叶孟尧
+叶宗智
+叶宗鑫
+叶宛轩
+叶忠欣
+叶怡君
+叶怡芳
+叶承泓
+叶昌伦
+叶明升
+叶明旋
+叶明鑫
+叶松炫
+叶欣毓
+叶玟君
+叶芳伶
+叶芳萍
+叶芷妘
+叶长青
+叶亭志
+叶信廷
+叶俊宏
+叶俊甫
+叶俊庆
+叶俞杉
+叶冠慧
+叶奕维
+叶姿妏
+叶建君
+叶建升
+叶彦志
+叶思仪
+叶政辉
+叶昭伶
+叶昱志
+叶柏纲
+叶玲岑
+叶秋月
+叶美娟
+叶致忠
+叶衍孜
+叶郁菁
+叶倩
+叶哲全
+叶家宇
+叶家铃
+叶家儒
+叶峻宾
+叶振福
+叶晋嘉
+叶书玮
+叶涓涓
+叶益升
+叶素绫
+叶耿齐
+叶健伟
+叶国贤
+叶张建
+叶欲
+叶淑珍
+叶淑铃
+叶绍任
+叶胜玄
+叶惠文
+叶惠祯
+叶智仁
+叶森渝
+叶咏晴
+叶雁甄
+叶雅婷
+叶雅雯
+叶云鹏
+叶毓峰
+叶义松
+叶铃珊
+叶嘉华
+叶睿哲
+叶铭昌
+叶仪芳
+叶慧欣
+叶洁恩
+叶晓芬
+叶树开
+叶蕙芳
+叶锦凤
+叶曙庆
+叶骏逸
+叶礼维
+叶琼文
+叶宝壬
+叶腾远
+叶骥
+叶玴豪
+叶琤怡
+叶怿馨
+葛世萱
+葛倩如
+董人宏
+董子青
+董巧玲
+董合恩
+董志仁
+董佳豪
+董怡君
+董芳铭
+董姿利
+董彦宏
+董秋瑾
+董修铭
+董振雄
+董能瑞
+董惠芳
+董圣缘
+董慧美
+董鸿楠
+董峣泓
+裘元恺
+解美铃
+詹于芳
+詹子民
+詹仁嘉
+詹文祥
+詹世杰
+詹永祥
+詹立成
+詹如钤
+詹宏彬
+詹志鸿
+詹育雯
+詹佳振
+詹佳兴
+詹佩颖
+詹孟晃
+詹宗宪
+詹宜纹
+詹忠荣
+詹昌吉
+詹明洁
+詹欣宜
+詹青艳
+詹前泰
+詹政峰
+詹美珍
+詹卿苹
+詹家铨
+詹浚升
+詹益伟
+詹益铭
+詹茗芸
+詹婉君
+詹启纬
+詹淑妃
+詹淑萍
+詹淑芩
+詹凯捷
+詹胜钦
+詹富智
+詹惠媛
+詹景尧
+詹智杰
+詹森
+詹翔任
+詹证富
+詹钧维
+詹雅婷
+詹雅闵
+詹雯莹
+詹群毅
+詹嘉璇
+詹德馨
+詹勋明
+詹颖萍
+詹璨嵘
+詹丰宇
+詹鹃年
+詹玓玮
+詹琬渝
+资君仪
+贾治国
+贾爱玫
+贾髐憛
+邹一仲
+邹文隆
+邹立彦
+邹李昌
+邹佳华
+邹宗华
+邹明原
+邹金德
+邹国龙
+邹智仁
+邹新全
+邹维刚
+邹静佩
+雍敦元
+雷宜庭
+雷衍兴
+雷惠琦
+雷雅菁
+雷鹏程
+廖丁逸
+廖于文
+廖千慧
+廖士尧
+廖大樟
+廖小华
+廖仁禾
+廖元利
+廖允靖
+廖文平
+廖文茹
+廖文评
+廖文甄
+廖文洁
+廖月观
+廖仕绮
+廖本元
+廖正伟
+廖玉
+廖玉萍
+廖丞晞
+廖光辉
+廖守正
+廖伯璋
+廖含洁
+廖宏慈
+廖志民
+廖志伟
+廖志远
+廖秀卿
+廖育良
+廖良淮
+廖佳玥
+廖佩如
+廖佩凤
+廖宗山
+廖宜群
+廖怡玲
+廖怡景
+廖承庆
+廖明仪
+廖欣仪
+廖芳玲
+廖芝坚
+廖青松
+廖信宽
+廖俊杰
+廖俊钦
+廖冠美
+廖奕任
+廖姿毓
+廖建城
+廖建钧
+廖彦凯
+廖恒毅
+廖春菊
+廖昱树
+廖炳焜
+廖盈奇
+廖秋怡
+廖美玲
+廖美琳
+廖茂良
+廖英男
+廖英杰
+廖苑君
+廖述茂
+廖郁婷
+廖倩宜
+廖卿惠
+廖哲论
+廖家玲
+廖家宁
+廖家莹
+廖家婧
+廖峻毅
+廖恩慈
+廖振良
+廖挺崴
+廖书佩
+廖桂君
+廖浚宏
+廖佩君
+廖佩玫
+廖佩爱
+廖益群
+廖素卿
+廖耕辉
+廖干成
+廖伟成
+廖伟辰
+廖伟斯
+廖伟鸿
+廖健明
+廖健铭
+廖国宏
+廖国勋
+廖国华
+廖基宏
+廖培瑜
+廖婉利
+廖婉欣
+廖寄萍
+廖崇硕
+廖康霖
+廖惇治
+廖启良
+廖敏汝
+廖敏玲
+廖梓茜
+廖淑君
+廖淑贞
+廖淑惠
+廖淑丽
+廖祥达
+廖贯佩
+廖章棋
+廖富田
+廖惠娟
+廖智辉
+廖琪美
+廖舒仪
+廖进平
+廖雅倩
+廖顺帆
+廖楷文
+廖筠怡
+廖萱芹
+廖嗾
+廖嘉阳
+廖汉鼎
+廖维珍
+廖铭仁
+廖庆贺
+廖慧雯
+廖莹璇
+廖宪堂
+廖晓慧
+廖锦瑜
+廖擎帆
+廖曜莹
+廖麒闵
+廖耀东
+廖显庆
+廖偲妤
+廖斌杰
+廖钰铭
+汉述仁
+熊立新
+熊东增
+熊凌霆
+熊崇纬
+熊勤云
+甄慧明
+管幼仲
+管金玲
+管琪芸
+翟敦敏
+台文照
+蒲信全
+蒲骏毅
+裴伟程
+褚心怡
+褚俊伟
+褚家德
+宾敬文
+赵士齐
+赵子维
+赵仁佑
+赵元宏
+赵友崧
+赵文忠
+赵方恺
+赵世裕
+赵必昌
+赵玉莲
+赵安琪
+赵君杰
+赵宏钧
+赵志豪
+赵育琳
+赵佩芬
+赵宜君
+赵怡婷
+赵明辉
+赵芷菁
+赵俊凯
+赵品彦
+赵建胜
+赵恬仪
+赵炫勋
+赵秋凤
+赵英龙
+赵修霖
+赵家良
+赵家贤
+赵振宏
+赵桂青
+赵佩汛
+赵祐甄
+赵伟廷
+赵伟翔
+赵国志
+赵培霖
+赵崇闵
+赵敏如
+赵淑芳
+赵皎君
+赵婷完
+赵湘君
+赵钧志
+赵瑞昌
+赵嘉敬
+赵广元
+赵慕群
+赵树仪
+赵龙基
+赵双骏
+赵玹羲
+远藤永康
+鄞豪辉
+齐雪汝
+刘乙萱
+刘乃萱
+刘人豪
+刘几萍
+刘力豪
+刘又慈
+刘上旗
+刘于菁
+刘千瑜
+刘士华
+刘士豪
+刘大荣
+刘子由
+刘子嘉
+刘子颀
+刘山豪
+刘中琪
+刘仁正
+刘仁裕
+刘元凤
+刘少维
+刘心仪
+刘文玉
+刘文玲
+刘文胜
+刘文超
+刘文福
+刘日顺
+刘世文
+刘世清
+刘世庆
+刘以筠
+刘台
+刘弘伟
+刘正河
+刘正雄
+刘永健
+刘玉文
+刘玉家
+刘玉萍
+刘玉琇
+刘立伟
+刘亦升
+刘伊修
+刘仲涵
+刘光杰
+刘兆容
+刘全彬
+刘名娟
+刘如芳
+刘如薰
+刘宇薇
+刘安祥
+刘旭芬
+刘汝娟
+刘至安
+刘伯彦
+刘君祺
+刘孝伦
+刘宏伟
+刘廷楷
+刘志勇
+刘志浩
+刘志源
+刘志玮
+刘沂昀
+刘秀郁
+刘秀雯
+刘育成
+刘育志
+刘育宗
+刘育洸
+刘育诚
+刘育颖
+刘邦平
+刘邦相
+刘亚芸
+刘依文
+刘佳沐
+刘佳怡
+刘佳芳
+刘佳洧
+刘佳琪
+刘佳达
+刘佳颖
+刘侃如
+刘佩青
+刘佩绫
+刘和德
+刘坤颖
+刘孟佳
+刘孟冠
+刘孟翰
+刘宗怡
+刘宗葆
+刘定宇
+刘宜昆
+刘宜婷
+刘宛如
+刘冈陵
+刘幸雪
+刘忠勋
+刘怡伶
+刘怡君
+刘怡君
+刘怡君
+刘怡和
+刘怡芬
+刘怡惠
+刘怡静
+刘承桦
+刘昌
+刘昌诚
+刘明合
+刘明杰
+刘明哲
+刘明达
+刘明丽
+刘升鑫
+刘果珍
+刘欣坤
+刘欣怡
+刘欣茹
+刘武浚
+刘玟成
+刘玫宁
+刘穹林
+刘芳吟
+刘芳玲
+刘芳兰
+刘芬芳
+刘采真
+刘金凤
+刘青苹
+刘信宏
+刘信良
+刘信鸿
+刘俊宏
+刘俊廷
+刘俊良
+刘俊杰
+刘俊毅
+刘俊岩
+刘俐梅
+刘冠妍
+刘冠良
+刘冠显
+刘勃彦
+刘品宜
+刘奕志
+刘姿
+刘姿吟
+刘威汗
+刘威昌
+刘建民
+刘建宏
+刘建宏
+刘建村
+刘建良
+刘建明
+刘建德
+刘建町
+刘彦君
+刘彦廷
+刘彦良
+刘彦博
+刘律明
+刘思洁
+刘恪人
+刘政勋
+刘昭如
+刘映秀
+刘昱辰
+刘柏宏
+刘柏麟
+刘为明
+刘珊妮
+刘珍佑
+刘盈如
+刘盈秀
+刘盈兰
+刘秋成
+刘秋燕
+刘美君
+刘美仑
+刘美玲
+刘美华
+刘羿汝
+刘若谨
+刘英龙
+刘贞伶
+刘军毅
+刘韦成
+刘倍如
+刘修明
+刘哲宇
+刘哲郎
+刘哲玮
+刘家成
+刘家宏
+刘家升
+刘家琳
+刘家僖
+刘家豪
+刘家凤
+刘家馨
+刘容懿
+刘峻伶
+刘峰郡
+刘恩吉
+刘振中
+刘振豪
+刘晋育
+刘晏诚
+刘书宏
+刘根豪
+刘桐盛
+刘浚铭
+刘佩怡
+刘益伸
+刘益祯
+刘祖宁
+刘素玲
+刘纯杏
+刘耕维
+刘轩宇
+刘伟立
+刘伟诚
+刘国平
+刘国栋
+刘国龙
+刘婉玲
+刘崇理
+刘康楝
+刘得光
+刘启平
+刘敏琪
+刘淳雅
+刘淑芬
+刘淑贞
+刘淑莉
+刘淑华
+刘淑慧
+刘祥民
+刘莉燕
+刘凯茹
+刘博文
+刘富明
+刘惠怡
+刘惠纹
+刘扬铭
+刘智仁
+刘智钧
+刘朝莲
+刘湘琪
+刘皓宁
+刘舒慈
+刘咏薇
+刘逸竹
+刘闵结
+刘雅君
+刘雅玲
+刘雅惠
+刘雅萍
+刘雅慧
+刘云霞
+刘勤经
+刘敬民
+刘毓波
+刘源伦
+刘瑞芳
+刘瑞豪
+刘经纶
+刘裕宏
+刘诗韵
+刘靖
+刘嘉育
+刘嘉淳
+刘嘉雯
+刘嘉桦
+刘彰
+刘荣德
+刘熙慧
+刘硕稳
+刘维泰
+刘肇鹏
+刘铭村
+刘铭辉
+刘凤兴
+刘德正
+刘德诚
+刘庆镇
+刘慧玲
+刘慧婷
+刘慧珑
+刘莹娟
+刘贤荧
+刘震鸿
+刘忆
+刘晓芬
+刘晓琪
+刘晓桦
+刘树蕙
+刘燕萍
+刘璟锋
+刘颖蒨
+刘兴家
+刘蕙瑄
+刘锦堂
+刘锦鸿
+刘静芳
+刘静华
+刘龙山
+刘爵维
+刘锺霖
+刘鸿霖
+刘璧莹
+刘镇嘉
+刘瀚阳
+刘韵琦
+刘丽惠
+刘宝婷
+刘耀升
+刘译聪
+刘灌辉
+刘懿慧
+刘赞嘻
+刘旻珊
+刘姵嘉
+刘挐
+刘翊邡
+刘玮玲
+刘筱慧
+刘滢騿
+厉斌中
+樊乃嘉
+樊修龙
+乐子骏
+欧士源
+欧世洋
+欧如程
+欧志盈
+欧邦华
+欧宗原
+欧怡秀
+欧昀修
+欧长晏
+欧俊彦
+欧建民
+欧政艳
+欧美莹
+欧娉妦
+欧书豪
+欧淑姿
+欧逸青
+欧阳有慧
+欧阳玫
+欧阳惠如
+欧阳铭文
+欧阳忻忆
+欧荣杰
+欧颖君
+欧缮嘉
+潘
+潘允仁
+潘文华
+潘正元
+潘玉惠
+潘亦蕾
+潘成富
+潘宏宗
+潘志伟
+潘秀盈
+潘佳妤
+潘佩君
+潘宗裕
+潘延辉
+潘怡君
+潘怡瑾
+潘明楷
+潘玟桦
+潘亮如
+潘信翰
+潘俊良
+潘冠宏
+潘品洁
+潘威历
+潘建成
+潘建彰
+潘彦蓉
+潘政纬
+潘柔考
+潘珍琪
+潘美玲
+潘述东
+潘家铭
+潘泰全
+潘能哲
+潘婉萍
+潘淑雯
+潘惠娟
+潘进益
+潘雅馨
+潘瑞香
+潘裕智
+潘睿哲
+潘仪恬
+潘慧敏
+潘儒莹
+潘锦昌
+潘鸿铭
+潘丽萍
+潘姵如
+潘钰柔
+滕忆雯
+练建伸
+蒋中衍
+蒋正福
+蒋汝安
+蒋沆祥
+蒋佳珊
+蒋佩余
+蒋孟儒
+蒋宜静
+蒋怡慧
+蒋明儒
+蒋长旻
+蒋政颖
+蒋佩泠
+蒋淑慧
+蒋萍
+蒋苇立
+蒋德才
+蒋滨州
+蒋耀毅
+蔡丁经哲
+蔡士旺
+蔡子怡
+蔡中钧
+蔡仁伟
+蔡元正
+蔡元雄
+蔡天祺
+蔡文仁
+蔡文彦
+蔡文伟
+蔡文博
+蔡文钦
+蔡文嘉
+蔡文鸿
+蔡月珠
+蔡世杰
+蔡世鸿
+蔡巧如
+蔡弘原
+蔡正宗
+蔡正晖
+蔡永彬
+蔡永莹
+蔡玉秋
+蔡玉菁
+蔡立芬
+蔡亦雯
+蔡仲宁
+蔡兆骅
+蔡名书
+蔡如婷
+蔡宇伦
+蔡安乔
+蔡旭曜
+蔡羽容
+蔡行真
+蔡伯鸿
+蔡君毅
+蔡宏文
+蔡宏培
+蔡廷颖
+蔡志宏
+蔡志明
+蔡志晃
+蔡志扬
+蔡志维
+蔡志鸿
+蔡沁玲
+蔡沛婷
+蔡汶鸿
+蔡秀玲
+蔡秀惠
+蔡育正
+蔡育彦
+蔡育真
+蔡育勋
+蔡贝珊
+蔡享翰
+蔡依珊
+蔡依容
+蔡依龄
+蔡佳伶
+蔡佳宏
+蔡佳良
+蔡佳欣
+蔡佳芬
+蔡佳玲
+蔡佳珍
+蔡佳容
+蔡佳真
+蔡佳航
+蔡佳琳
+蔡佳蓉
+蔡佳桦
+蔡佳颖
+蔡佳霖
+蔡佳礽
+蔡佩如
+蔡佩君
+蔡佩妤
+蔡佩芳
+蔡佩芬
+蔡佩珊
+蔡佩珊
+蔡佩玲
+蔡佩娥
+蔡佩纹
+蔡佩蓉
+蔡佩颖
+蔡佩静
+蔡侑廷
+蔡其佩
+蔡协甫
+蔡受勋
+蔡坤佑
+蔡坤雄
+蔡坤锦
+蔡奇均
+蔡奇霖
+蔡孟君
+蔡孟育
+蔡孟芳
+蔡孟秋
+蔡孟哲
+蔡孟真
+蔡孟雄
+蔡孟儒
+蔡孟桦
+蔡孟谕
+蔡季玲
+蔡宗佑
+蔡宗志
+蔡宗玫
+蔡宗益
+蔡宗达
+蔡宗儒
+蔡宗宪
+蔡宗颖
+蔡宗翰
+蔡宗霖
+蔡宜君
+蔡宜廷
+蔡宜芳
+蔡宜珊
+蔡宜倩
+蔡宜真
+蔡宜蓉
+蔡宜霖
+蔡宜蓁
+蔡宛玲
+蔡宛谕
+蔡尚岳
+蔡尚颖
+蔡岱勋
+蔡岳书
+蔡幸如
+蔡幸恒
+蔡幸淳
+蔡弦豪
+蔡忠信
+蔡忠颖
+蔡怡君
+蔡怡萍
+蔡承昊
+蔡承璋
+蔡承翰
+蔡易亨
+蔡易升
+蔡易宪
+蔡昌宇
+蔡昌儒
+蔡昆佑
+蔡明
+蔡明泛
+蔡明宏
+蔡明杉
+蔡明宗
+蔡明芳
+蔡明伦
+蔡明哲
+蔡明峰
+蔡明茵
+蔡明钦
+蔡明蒲
+蔡明赐
+蔡明宪
+蔡明颖
+蔡明龙
+蔡昀甫
+蔡升伯
+蔡升颖
+蔡东明
+蔡东颖
+蔡杰志
+蔡松柏
+蔡松霖
+蔡欣怡
+蔡欣伦
+蔡欣达
+蔡欣颖
+蔡武谚
+蔡牧勋
+蔡直勋
+蔡秉昆
+蔡秉璋
+蔡秉谕
+蔡芳洵
+蔡采芳
+蔡金峰
+蔡金龙
+蔡长荣
+蔡雨洁
+蔡青峰
+蔡信良
+蔡俊晏
+蔡俊贤
+蔡品仪
+蔡宥定
+蔡建裕
+蔡思捷
+蔡政宏
+蔡政言
+蔡政哲
+蔡政群
+蔡政勋
+蔡政翰
+蔡政龙
+蔡昭龙
+蔡柏毅
+蔡玲津
+蔡禹歆
+蔡纪源
+蔡美芝
+蔡美莉
+蔡美慧
+蔡英宗
+蔡郁君
+蔡韦志
+蔡凌凤
+蔡娟娟
+蔡家华
+蔡容瑛
+蔡悦玟
+蔡振议
+蔡栩维
+蔡佩怡
+蔡真禕
+蔡素碧
+蔡茹茵
+蔡伟杰
+蔡国手
+蔡国圣
+蔡培译
+蔡崇民
+蔡启堂
+蔡添文
+蔡淑妃
+蔡淑怡
+蔡淑玲
+蔡淑真
+蔡淑惠
+蔡淑瑜
+蔡淑薇
+蔡盛勋
+蔡雪卿
+蔡胜雄
+蔡博全
+蔡乔安
+蔡富贵
+蔡惠如
+蔡惠美
+蔡惠琪
+蔡惠燕
+蔡景淑
+蔡智宏
+蔡智暐
+蔡湘怡
+蔡皓明
+蔡舒宇
+蔡菁菁
+蔡咏翔
+蔡逸珊
+蔡进昌
+蔡隆泰
+蔡雅君
+蔡雅芬
+蔡雅茹
+蔡雅惠
+蔡雅菁
+蔡雅慧
+蔡雯淇
+蔡传德
+蔡桢瑜
+蔡毓霖
+蔡瑞文
+蔡瑞峰
+蔡瑞麒
+蔡义益
+蔡裕健
+蔡诗薏
+蔡嘉仁
+蔡嘉恒
+蔡嘉章
+蔡嘉庆
+蔡荣昌
+蔡荣贤
+蔡汉义
+蔡碧容
+蔡福晏
+蔡维玲
+蔡维蓁
+蔡裴伶
+蔡铭
+蔡铭峰
+蔡铭贤
+蔡凤仪
+蔡征霖
+蔡慧民
+蔡慧贞
+蔡慧萱
+蔡毅轩
+蔡贤皇
+蔡学文
+蔡忆铃
+蔡晓然
+蔡泽铭
+蔡颖箴
+蔡翰熊
+蔡蕙婷
+蔡锦坡
+蔡静宜
+蔡静惠
+蔡龙仪
+蔡翼如
+蔡鸿民
+蔡鸿斌
+蔡璧光
+蔡丰文
+蔡丰杰
+蔡镇岳
+蔡鹃弥
+蔡琼仪
+蔡丽芳
+蔡丽惠
+蔡献毅
+蔡耀群
+蔡耀驹
+蔡馨仪
+蔡佶兴
+蔡旻芳
+蔡旻宪
+蔡琄竹
+蔡歆怡
+蔡玮竑
+蔡缏
+蔡鑫廷
+谈昭兰
+郑一凡
+郑乃佳
+郑人元
+郑力仁
+郑又仁
+郑士韦
+郑子见
+郑小岚
+郑尹斯
+郑仁富
+郑元孝
+郑元瑜
+郑友诚
+郑心如
+郑文正
+郑文彬
+郑文富
+郑文嘉
+郑月枝
+郑世昌
+郑世湘
+郑仕鑫
+郑巧青
+郑弘伟
+郑正诚
+郑永津
+郑玉伶
+郑玉英
+郑玉菁
+郑立享
+郑亘吟
+郑伊真
+郑仲宏
+郑仲贤
+郑光佑
+郑光淳
+郑兆均
+郑先萌
+郑吉佑
+郑吏孜
+郑合修
+郑夙涵
+郑如欣
+郑如纯
+郑宇宏
+郑宇净
+郑守东
+郑安芸
+郑安翔
+郑成棠
+郑旭盛
+郑有财
+郑百婷
+郑羽晴
+郑至刚
+郑伯南
+郑君达
+郑宏明
+郑志功
+郑志伟
+郑志龙
+郑秀怡
+郑秀娟
+郑秀慧
+郑育升
+郑贝如
+郑佳宜
+郑佳祥
+郑佳仪
+郑佩珊
+郑其雯
+郑孟玲
+郑宗杰
+郑宜芳
+郑幸宜
+郑怡君
+郑怡婷
+郑昌岳
+郑明忠
+郑明铨
+郑欣如
+郑欣荣
+郑秉泓
+郑芸芸
+郑长志
+郑俊宏
+郑勇猛
+郑建佳
+郑彦达
+郑春菊
+郑省村
+郑美玉
+郑美琴
+郑若琤
+郑迪允
+郑倩如
+郑家典
+郑家铭
+郑振宜
+郑书钰
+郑佩君
+郑祐阡
+郑素彬
+郑茗聪
+郑伟珊
+郑国正
+郑国祥
+郑培聪
+郑崇佑
+郑惟心
+郑启荣
+郑梅君
+郑清俊
+郑淑云
+郑淑米
+郑淑玲
+郑淑婷
+郑淑燕
+郑渊藤
+郑祥如
+郑莉雯
+郑杰元
+郑凯仁
+郑凯元
+郑凯文
+郑凯育
+郑凯鸿
+郑胜旭
+郑博仁
+郑博文
+郑乔铭
+郑婷文
+郑富仁
+郑尊孝
+郑惠文
+郑惠君
+郑惠纹
+郑惠霜
+郑斯尹
+郑景仁
+郑景文
+郑景隆
+郑智仁
+郑智元
+郑智昌
+郑智豪
+郑朝元
+郑朝营
+郑植寰
+郑湘昀
+郑皓云
+郑程议
+郑丝雯
+郑翔龙
+郑舒蕊
+郑咏仁
+郑诏谦
+郑逸娴
+郑闵鸿
+郑雅云
+郑雅友
+郑雅文
+郑雅妃
+郑雅芬
+郑雅娟
+郑雅琪
+郑雅甄
+郑雅黛
+郑云鹏
+郑意中
+郑敬桦
+郑毓龄
+郑瑞美
+郑瑜琳
+郑义宪
+郑圣贤
+郑裕年
+郑诗慧
+郑嘉仁
+郑嘉扬
+郑嘉旻
+郑荣娟
+郑福和
+郑肇心
+郑铭泰
+郑凤龄
+郑庆哲
+郑慧芳
+郑慧镁
+郑蔚蝉
+郑宪存
+郑晓怡
+郑晓薇
+郑颖铨
+郑蕙琦
+郑霖骏
+郑静芳
+郑懋杰
+郑谢冠
+郑鸿源
+郑丰嘉
+郑丽君
+郑献文
+郑旻轩
+郑琇仁
+郑埵
+郑絜心
+郑玮隆
+郑钰钟
+郑靋
+邓升敦
+邓文仪
+邓永忠
+邓伊容
+邓后琛
+邓旭敦
+邓志煌
+邓佳玲
+邓宜欣
+邓明芳
+邓金鸿
+邓秋惠
+邓振英
+邓伟贤
+邓淑玲
+邓博仁
+邓惠文
+邓景龙
+邓翔仁
+邓雅心
+邓顺展
+邓裕馨
+邓福隆
+邓震宇
+邓颖骏
+邓劦呈
+鲁忠豪
+鲁宪云
+黎世廉
+黎宇容
+黎明伦
+黎俐均
+黎家伶
+黎婉仪
+黎焕元
+黎铭仁
+黎礼智
+卢三仁
+卢仁杰
+卢文忠
+卢文晟
+卢弘海
+卢永升
+卢申泰
+卢吉勇
+卢呈芳
+卢志忠
+卢志融
+卢育圣
+卢佳惠
+卢叔欣
+卢定均
+卢延华
+卢怡伶
+卢怡涵
+卢承业
+卢欣宜
+卢玫妏
+卢雨涵
+卢保全
+卢俊言
+卢俊儒
+卢冠晔
+卢奎伯
+卢威霖
+卢建宏
+卢建铭
+卢思源
+卢星全
+卢柏良
+卢盈宏
+卢美如
+卢英仁
+卢韦仁
+卢家钰
+卢祖翔
+卢婉瑜
+卢淑丽
+卢惠杰
+卢超群
+卢恺莉
+卢群育
+卢嘉振
+卢德芳
+卢慧宜
+卢辉展
+卢颖志
+卢龙生
+卢韵岑
+卢誉允
+卢筱莹
+穆美蕙
+萧人豪
+萧士泰
+萧尹贞
+萧允泰
+萧文欣
+萧文笔
+萧文魁
+萧世民
+萧以亮
+萧正平
+萧永泓
+萧玉贞
+萧立韦
+萧亦维
+萧仲志
+萧兆琳
+萧名沂
+萧圭妙
+萧如珊
+萧宇伯
+萧安廷
+萧有宏
+萧聿宏
+萧君怡
+萧宏裕
+萧志羽
+萧志豪
+萧秀惠
+萧育隆
+萧佳悌
+萧佩珊
+萧季薇
+萧尚文
+萧怡芳
+萧昆廷
+萧欣怡
+萧芳盈
+萧青萍
+萧俊贤
+萧彦彰
+萧柏轩
+萧美娟
+萧述仁
+萧夏敏
+萧振安
+萧佩如
+萧训国
+萧国正
+萧国宝
+萧崇论
+萧敏彦
+萧清燕
+萧淑珍
+萧淑颖
+萧雪吟
+萧凯懋
+萧博仁
+萧博仰
+萧富元
+萧惠元
+萧惠芳
+萧惠乡
+萧斐如
+萧景聪
+萧智梅
+萧棋元
+萧竣鸿
+萧咏方
+萧逸平
+萧雅丹
+萧雅文
+萧雅莉
+萧雯心
+萧爱玲
+萧焕纬
+萧瑛旗
+萧圣桦
+萧诗璇
+萧嘉琪
+萧宁君
+萧维倩
+萧辅彦
+萧铭权
+萧慧怡
+萧莹真
+萧忆兰
+萧翰英
+萧静宜
+萧丰智
+萧丽娟
+萧鹤轩
+萧琮翰
+萧柽哗
+赖乃颂
+赖士超
+赖仁祐
+赖天鸿
+赖文英
+赖文华
+赖世昌
+赖世维
+赖可恩
+赖弘璘
+赖正野
+赖永铃
+赖玉唐
+赖玉霜
+赖亦贞
+赖妃君
+赖旭彦
+赖伯威
+赖妙宣
+赖宏昌
+赖廷禹
+赖志昌
+赖志伟
+赖志纲
+赖杏儒
+赖秀春
+赖育廷
+赖育麟
+赖佳伶
+赖佳欣
+赖佳慧
+赖佩君
+赖其亮
+赖孟华
+赖宗诚
+赖宜佳
+赖居正
+赖怡文
+赖怡伶
+赖怡君
+赖怡欣
+赖怡桦
+赖昌彦
+赖明宏
+赖明德
+赖东延
+赖欣宜
+赖武溪
+赖玫如
+赖芳延
+赖长佑
+赖信光
+赖信诚
+赖俊兆
+赖俊宏
+赖俊杰
+赖俊达
+赖俐卉
+赖冠宏
+赖勇志
+赖奕帆
+赖姿均
+赖威均
+赖宣妤
+赖建合
+赖建佑
+赖建志
+赖建雄
+赖建融
+赖彦佐
+赖彦良
+赖彦桦
+赖思霖
+赖政宽
+赖昭光
+赖昭龙
+赖昱勋
+赖柏伸
+赖柏龙
+赖珀贤
+赖盈青
+赖科印
+赖红霞
+赖美冠
+赖美錵
+赖茂廷
+赖虹伶
+赖军举
+赖郁雯
+赖韦达
+赖家弘
+赖振生
+赖浩丰
+赖秩光
+赖高志
+赖国恩
+赖基渌
+赖启源
+赖淑怡
+赖淑贞
+赖淑萍
+赖莉雯
+赖惠君
+赖愉芳
+赖钦诠
+赖贵义
+赖隆平
+赖雅琴
+赖顺振
+赖源淳
+赖义中
+赖苇帆
+赖靖宜
+赖嘉慧
+赖荣琏
+赖维廷
+赖铭相
+赖增聪
+赖庆铭
+赖慧娟
+赖洁芳
+赖锋
+赖晓枫
+赖颖辉
+赖锦亿
+赖静璇
+赖鸿铭
+赖韵如
+赖丽
+赖丽雯
+赖芃君
+赖柊棋
+赖玮昀
+赖霈儒
+迟尚权
+钱以恬
+钱良蕙
+钱欣宜
+钱威融
+钱郁苹
+钱逸霖
+钱德俊
+锜惠雯
+阎惠玲
+霍莘瑜
+骆永建
+骆季平
+骆芳梧
+骆建呈
+骆衍龙
+骆嘉庆
+鲍行仁
+鲍国峰
+龙秀贞
+龙星兆
+储于超
+应志宏
+戴乙菁
+戴大钧
+戴元利
+戴文雄
+戴正平
+戴立人
+戴全利
+戴守正
+戴佑洲
+戴呈安
+戴宏丞
+戴志升
+戴杏芳
+戴佳平
+戴季全
+戴怡贞
+戴明珠
+戴俊纬
+戴秋香
+戴郁芳
+戴振远
+戴国良
+戴惟有
+戴莉
+戴森地
+戴雅如
+戴传家
+戴瑞君
+戴群峰
+戴嘉宏
+戴嘉宪
+戴维伸
+戴增瑜
+戴贤祥
+戴静仪
+戴忞臻
+戴薏珊
+缪信宇
+薛乃允
+薛丹桂
+薛世煌
+薛玉锋
+薛光程
+薛如君
+薛百惠
+薛志宏
+薛依蒨
+薛幸嘉
+薛升旭
+薛奕龙
+薛美芳
+薛展立
+薛伟伯
+薛淑靖
+薛凯文
+薛围中
+薛景文
+薛竣纶
+薛雅萍
+薛瑞珍
+薛嘉雄
+薛蓓芳
+薛儒霙
+薛韵婷
+薛钰真
+谢于樱
+谢小梅
+谢仁哲
+谢元贵
+谢心雅
+谢文娟
+谢文尧
+谢文瑜
+谢文斌
+谢以欣
+谢弘亮
+谢正益
+谢永信
+谢玉珠
+谢立群
+谢光中
+谢吉丰
+谢如鸿
+谢戌嘉
+谢聿
+谢佐宜
+谢克强
+谢均毅
+谢宏忠
+谢宏纬
+谢志宏
+谢志明
+谢志伟
+谢志逸
+谢志德
+谢扶锦
+谢秀青
+谢秀莲
+谢育娟
+谢育霖
+谢亚岚
+谢依伦
+谢佳文
+谢佳宏
+谢佳芳
+谢佳倩
+谢佳纯
+谢佳雯
+谢佳颖
+谢佳樱
+谢佩君
+谢佩芳
+谢佩珊
+谢佩珍
+谢佩真
+谢佩蓉
+谢侑书
+谢其斌
+谢周炽
+谢坤宪
+谢孟君
+谢孟芸
+谢孟真
+谢孟桦
+谢孟芩
+谢宗佑
+谢宗容
+谢宗贤
+谢宗宪
+谢宗翰
+谢宜
+谢宜芳
+谢宜伦
+谢宜婷
+谢宜臻
+谢宛玲
+谢宛谘
+谢尚儒
+谢幸宜
+谢庚翰
+谢忠勤
+谢怡婷
+谢承达
+谢于睿
+谢易霖
+谢昌瑾
+谢明
+谢明宏
+谢明村
+谢明芳
+谢明伦
+谢明书
+谢明惠
+谢明憬
+谢明宪
+谢明翰
+谢明諴
+谢升哲
+谢东升
+谢东晓
+谢松宪
+谢欣宏
+谢欣怡
+谢欣钊
+谢欣霖
+谢牧阮
+谢秉容
+谢秉谚
+谢芝青
+谢金贞
+谢长原
+谢雨青
+谢青桦
+谢俊宏
+谢俞枰
+谢奕姝
+谢彦吏
+谢政男
+谢政达
+谢政翰
+谢柏舟
+谢皇翔
+谢秋燕
+谢美玲
+谢致群
+谢郁瑄
+谢家菱
+谢庭恩
+谢晋贤
+谢浩然
+谢素菱
+谢干骏
+谢曼盈
+谢国彬
+谢婉玲
+谢启文
+谢梓麟
+谢清洲
+谢淑芬
+谢淑娟
+谢淑钧
+谢皎盈
+谢笠元
+谢凯伟
+谢博皓
+谢媛琪
+谢岚屏
+谢惠芬
+谢惠萍
+谢景仁
+谢智浩
+谢植冈
+谢皓智
+谢菊蕙
+谢进忠
+谢雅如
+谢雅雪
+谢雅萍
+谢雯凯
+谢顺隆
+谢毓玲
+谢瑞梅
+谢万龙
+谢诗慧
+谢嘉珊
+谢嘉铭
+谢荣哲
+谢碧菁
+谢维仁
+谢翠环
+谢铭忠
+谢铭智
+谢凤玲
+谢德钧
+谢慧珍
+谢慧琼
+谢蔚儒
+谢学纲
+谢晓岚
+谢燕玲
+谢蕙
+谢融齐
+谢静宜
+谢静仪
+谢瑷如
+谢鸿骏
+谢礼成
+谢镇宇
+谢琼文
+谢韵儒
+谢宝瑢
+谢耀养
+谢显铭
+谢旻莉
+谢晟铭
+谢炜频
+谢耀聪
+锺乙民
+锺元振
+锺文宇
+锺文钦
+锺月圆
+锺幼凌
+锺永雄
+锺玉惠
+锺兆民
+锺成奇
+锺伯君
+锺孝其
+锺志宏
+锺志豪
+锺秀芳
+锺育谚
+锺依静
+锺佳真
+锺佳颖
+锺佩芸
+锺佩婷
+锺卓儒
+锺孟憬
+锺宜全
+锺宜兴
+锺尚儒
+锺延华
+锺承璋
+锺易达
+锺明秀
+锺明晏
+锺明宪
+锺升颖
+锺欣翰
+锺秉谚
+锺金璋
+锺俊甫
+锺政民
+锺政锦
+锺盈慧
+锺美琳
+锺郁翎
+锺振泓
+锺纹易
+锺商骏
+锺崇梅
+锺淑芬
+锺淑萍
+锺凯依
+锺惠如
+锺智杰
+锺绚如
+锺逸石
+锺云光
+锺源德
+锺裕文
+锺嘉凤
+锺祯元
+锺铭智
+锺德霖
+锺乐吟
+锺晓岚
+锺锦琳
+锺薰
+锺鹏飞
+锺懿华
+锺旻圜
+鞠岱琦
+韩文丰
+韩克俭
+韩佩劭
+韩宜洁
+韩明伦
+韩相宜
+韩梅
+韩雅而
+韩嘉骏
+韩宝莹
+丛淑华
+简上哲
+简士益
+简士濠
+简小蕙
+简文亨
+简文贵
+简世裕
+简巧婷
+简民龙
+简玉珍
+简立人
+简伊婕
+简仰壮
+简吉聪
+简宇屏
+简百应
+简至霆
+简伶娟
+简君玲
+简妤玲
+简宏伦
+简廷安
+简志安
+简志峰
+简志雄
+简志颖
+简秀杏
+简秀纯
+简贝珊
+简佳琪
+简佩琪
+简宗德
+简怡婷
+简明雁
+简玫玉
+简雨荫
+简建一
+简昭萸
+简美娟
+简虹琪
+简家新
+简佩雅
+简健俊
+简国斌
+简启恒
+简淑芬
+简淑婷
+简莉静
+简博彬
+简惠湘
+简森乙
+简华真
+简雅如
+简顺立
+简敬庭
+简溢均
+简瑞棻
+简圣豪
+简诗峰
+简嘉宏
+简嘉彬
+简嘉龄
+简汉璋
+简祯佑
+简维萱
+简远真
+简铭辰
+简凤仪
+简慧娟
+简忆如
+简锡渊
+简骏贸
+简艺峰
+简骊洁
+简玮伦
+简圣
+聂东南
+聂暐峻
+蓝子桓
+蓝元皓
+蓝文孝
+蓝弘伟
+蓝仲伟
+蓝志发
+蓝怡平
+蓝昕纬
+蓝春发
+蓝峻彬
+蓝伟仁
+蓝国华
+蓝梓仑
+蓝惠萍
+蓝雅龄
+蓝嘉哲
+蓝慧珊
+蓝黛莹
+阙少芳
+阙吟夙
+阙明慧
+阙逢毅
+阙滢芬
+颜士彬
+颜大福
+颜小凡
+颜月
+颜弘祥
+颜永芳
+颜玉玮
+颜光玗
+颜如玉
+颜有男
+颜伯奇
+颜呈旭
+颜妙芳
+颜宏哲
+颜宏睿
+颜志成
+颜志扬
+颜志麟
+颜秀真
+颜良泽
+颜佳慧
+颜宗平
+颜承伟
+颜秉德
+颜奕仁
+颜秋琴
+颜若庭
+颜家祺
+颜佩岚
+颜国书
+颜尉凯
+颜晨暐
+颜淑云
+颜婷玲
+颜华成
+颜雅卉
+颜雯韵
+颜瑞文
+颜瑜慧
+颜圣鸿
+颜嘉成
+颜嘉琳
+颜宁佑
+颜福顺
+颜银桐
+颜鸣庆
+颜莹鹏
+颜泽宇
+颜鸿钦
+颜献佑
+颜钰芸
+魏士杰
+魏子晴
+魏仁威
+魏文绮
+魏巧晴
+魏玉雯
+魏任廷
+魏名泛
+魏宇达
+魏百盛
+魏伶娟
+魏君洁
+魏孝宽
+魏岑芬
+魏志伦
+魏秀恬
+魏良佑
+魏佳卿
+魏宜宽
+魏明章
+魏俊旺
+魏春生
+魏英镇
+魏晋一
+魏伟
+魏崇桓
+魏淑玫
+魏逢毅
+魏朝信
+魏逸玲
+魏爱津
+魏滇佑
+魏筠文
+魏铃芝
+魏嘉良
+魏嫦妆
+魏硕颖
+魏铭汉
+魏慕帆
+魏趋吉
+魏麒容
+魏瑄谊
+庞永培
+旷婉君
+罗千雯
+罗子轩
+罗尹伶
+罗仁勇
+罗元甫
+罗允中
+罗友声
+罗心屏
+罗文宜
+罗文彬
+罗文齐
+罗月凰
+罗世铭
+罗仕棋
+罗巧莉
+罗正邦
+罗永智
+罗玉萍
+罗亦旋
+罗仰真
+罗兆维
+罗宇任
+罗旭君
+罗至善
+罗宏一
+罗志雄
+罗秀玲
+罗亚宁
+罗佳琦
+罗宜君
+罗怡惠
+罗明章
+罗欣慈
+罗芷青
+罗俊彦
+罗彦
+罗玲玲
+罗美莲
+罗苑榕
+罗家欣
+罗振廷
+罗泰伦
+罗佩娟
+罗素花
+罗伟哲
+罗健志
+罗唯瑄
+罗国华
+罗国暐
+罗婉娥
+罗强
+罗敏文
+罗敏仪
+罗淇文
+罗淑蓉
+罗绍文
+罗杰
+罗凯颐
+罗博俊
+罗惠方
+罗惠兰
+罗智能
+罗紫菁
+罗华浓
+罗钧耀
+罗雅敏
+罗雯琴
+罗毓杰
+罗瑞荣
+罗圣琳
+罗达
+罗嘉玲
+罗荣辉
+罗际川
+罗庆杰
+罗莹棻
+罗晓威
+罗兴安
+罗鸿基
+罗馨宜
+罗炜程
+谭又民
+谭光华
+谭佩岚
+谭悦馨
+谭智仁
+谭谛
+关一心
+关志宇
+关淑云
+严子筑
+严心元
+严可君
+严志哲
+严春凤
+严振兴
+严婉玲
+严淑菁
+严咏圣
+严维德
+严馥
+窦瑞霞
+蔺心怡
+苏千代
+苏士豪
+苏子翔
+苏中怡
+苏元乙
+苏文
+苏文娟
+苏文辉
+苏世庭
+苏巧宁
+苏正家
+苏永杰
+苏玉修
+苏立凯
+苏如蕙
+苏竹安
+苏君霏
+苏宏泰
+苏志孟
+苏志坚
+苏志鸿
+苏秀玲
+苏育弘
+苏育俞
+苏育瑱
+苏佳足
+苏佩瑜
+苏宗一
+苏尚瑾
+苏怡如
+苏怡君
+苏怡菁
+苏怡馨
+苏明俊
+苏明鸿
+苏武龙
+苏芳正
+苏芳莹
+苏青妙
+苏信源
+苏俊夫
+苏俊祥
+苏俊铭
+苏俞如
+苏勇诚
+苏奕杰
+苏威达
+苏建中
+苏建志
+苏建豪
+苏彦荧
+苏恒至
+苏政谦
+苏昭君
+苏昱任
+苏柏州
+苏柏桦
+苏珊莹
+苏皇原
+苏盈穗
+苏纪敏
+苏美玲
+苏致仁
+苏英皓
+苏贞燕
+苏郁伦
+苏郁雅
+苏香琪
+苏仓永
+苏哲亿
+苏家
+苏家信
+苏家莹
+苏峻民
+苏庭瑶
+苏振铭
+苏桓庆
+苏浩为
+苏益禄
+苏窈瑱
+苏纯慧
+苏轩民
+苏伟诚
+苏国典
+苏堂豪
+苏婉惠
+苏敏
+苏清安
+苏淑婷
+苏皎慧
+苏莉惠
+苏博玄
+苏惠贞
+苏晶新
+苏湘怡
+苏舜卿
+苏逸真
+苏雅君
+苏雅惠
+苏雅慧
+苏顺诚
+苏意岚
+苏敬菱
+苏毓彬
+苏猷翔
+苏睦仁
+苏群杰
+苏圣涵
+苏裕文
+苏诗婷
+苏靖岚
+苏嘉宏
+苏嘉鸿
+苏碧昭
+苏闻谨
+苏亿珍
+苏慧文
+苏慧娟
+苏毅
+苏晓如
+苏晓芃
+苏锦升
+苏静芳
+苏声振
+苏鸿仪
+苏鹏翰
+苏丽华
+苏旻君
+苏烜毅
+苏琡评
+苏玮琳
+苏豊棋
+苏钰菁
+钟士钦
+钟文秀
+钟玉如
+钟佳绢
+钟盈凯
+钟挺豪
+钟国铭
+钟敏愫
+钟惠宇
+钟顺禹
+钟碧兰
+钟馨谊
+饶志豪
+饶亮
+饶佩龄
+饶敬国
+党一为
+顾文绚
+顾立苹
+顾宗沛
+顾倩如
+顾崇德
+顾翠华
+龚于珊
+龚文颖
+龚兆祺
+龚佩君
+龚青云
+龚彦名
+龚贞如
+龚书圣
+龚淑苗
+龚雅欣
+龚靖诒
+龚豫慧
+亓隆祥
+佘尚鸿
+佘联斌
+邾亦南
+涂世和
+涂君蓉
+涂育荣
+涂欣宏
+涂政男
+涂振民
+涂启原
+涂富星
+涂雅燕
+涂嘉原
+涂慧珍
+涂耀升
+粘弘吉
+粘育玮
+粘纯如
+粘圣鑫
+粘耀仁
+邬心怡
+靳立伟
+邝光宁
+栾季强
+芳琦
+婉婷
+铭源
+文勋
+凤琪
+信义
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt
new file mode 100644
index 0000000..6b243f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt
@@ -0,0 +1,10843 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
+กมล ตระการพินิจ
+กมล ทัพพะรังสี
+กมล บัดติยา
+กมล พงษ์อนันตโยธิน
+กมล โพโสภา
+กมล รมเยศ
+กมล โลหะไพศาล
+กมล วิสุทธิ์เสรีวงศ์
+กมล สมพงษ์
+กมล สุรพงษ์ประชา
+กมล แหวนทับทิม
+กมล เอี่ยมศิริ
+กมลชัย ศรีสิริรัตนากร
+กมลทิพย์ บัวหิรัญ
+กมลทิพย์ อภินันท์สิริ
+กมลพร สาโรวาท
+กมลมาศ จิวะธนะพร
+กมลรัตน์ เดชะปิยวงศ์
+กมลรัตน์ เลิศเลาห์กุล
+กมลวรรณ งามละม้าย
+กมลวรรณ บุญเสริม
+กมลวรรณ สรานุกูล
+กมลศักดิ์ งามบริรักษ์
+กมลา มโนพัฒนะ
+กร กรินรักษ์
+กรกฎ จงเจริญ
+กรกนก วงศ์พันธุเศรษฐ์
+กรกริช กุสุมามาลย์
+กรชุลี กิตติเสรีชัย
+กรทอง ศรีสุโข
+กรมใบ สุริโย
+กรรณิกา กนกวัฒนาวรรณ
+กรรณิกา จุลอยู่
+กรรณิกา แต้เจริญ
+กรรณิกา ผาณิตพงศ์
+กรรณิกา ลิ้มสกุล
+กรรณิกา สารพานิช
+กรรณิการ์ กนกวรรณจำรัส
+กรรณิการ์ จาริยานนท์
+กรรณิการ์ แซ่เตียว
+กรรณิการ์ นครศรี
+กรรณิการ์ ไผทฉันท์
+กรรณิการ์ มีสุข
+กรรณิการ์ วัชระคุ้มครอง
+กรรณิการ์ สาทรกิจ
+กรรณิการ์ อังสถิตย์อนันต์
+กรรมสิทธิ์ เทพสุทธิ์
+กรวิกา สืบวงศ์คล้าย
+กรหทัย จิตฤทัย
+กรองกาญจน์ อัจฉริยวงศ์
+กรองทอง นาถพิริยรัตน์
+กรองทิพย์ ประจันตะเสน
+กรองแก้ว แซ่แต้
+กรองแก้ว หิรัญ
+กระจ่าง เลิศเกียรติดำรงค์
+กระสัน เสริมทรัพย์
+กระแสร์ ท้วมจั่น
+กรานต์ประภา ประสิทธิ์วรากุล
+กริชจุฑา ศรีสกุล
+กริสน์ นวมทอง
+กรีฑาพร วงศ์รอด
+กรุณา ขันทอง
+กรุณา พิเชฐสัทธา
+กรูดีป ซิงห์
+กฤช ปุณณกันต์
+กฤชปณต นิธินโรดม
+กฤดา กิติวิภาต
+กฤตพร กาญจนการุณวงศ์
+กฤตยา พุฒิเนาวรัตน์
+กฤตวิทย์ สิงห์สุข
+กฤติกา ศุกรกำเหนิด
+กฤติยา ธนาเศรษฐ์กุล
+กฤษ สุนทรารชุน
+กฤษฎา จิระวิชชเลิศ
+กฤษฎา บุญราช
+กฤษฎา วรรณสารเมธา
+กฤษฎางค์ ถนอมวงษ์
+กฤษฏ์ ไตรกฤษดาพร
+กฤษณะ คุณากร
+กฤษณะ พงษ์ธนะ
+กฤษณะ อยู่สุข
+กฤษณา คลาเวช
+กฤษณา เซนต์วิบูลย์
+กฤษณา ธรรมวุฒิ
+กฤษณา ปิยะตระกูลรัตน์
+กฤษณา มณเฑียร
+กฤษณา ศรีคำ
+กฤษณา สุขวัฒก์
+กฤษณา อู่หิรัญ
+กฤษณเดว ทรีปาตี
+กฤษณ์ ทองไทยสิน
+กฤษณ์ วงษ์สมบูรณ์
+กฤษดา กฤษณาชูวงศ์
+กฤษดา ทอนสูงเนิน
+กฤษดา เลิศไพศาลกิจ
+กฤษดา เอื้อปิยะชาติ
+กฤษวรรณ อินทพานิช
+กลยุทธ์ วุ่นบำรุง
+กลอยใจ พุ่มพวง
+กล้าณรงค์ เผือกคุ้มกฤษ
+กลิ่นขจร รักวงษ์
+กวงบู้ แซ่ตั้ง
+กวา แซ่เต๋ง
+กวินนาถ เลิศสุดประเสริฐ
+กวี ทังสุบุตร
+กวี เลาะฟอ
+กวีชัย หวังศิลปคุณ
+ก้วงเซีย แซ่ฉั่ว
+กษมา วงศ์ไพฑูรย์ปิยะ
+กสมา โรจน์เมธา
+กอง ว่องพงศาวิวัฒน์
+กองเหว่ง แซ่เจียง
+กอบกาญจน์ ธรรมวาทิน
+กอบกุล จันทร์กระจ่าง
+กอบกุล นุชแดง
+กอบกุล วิวัฒนะประเสริฐ
+กอบกูล สิงคะตีระ
+กอบชัย แหละเหล่าปราชญ์
+กอบศักดิ์ ตปนียทรัพย์
+กอบเกื้อ พุกกลิ่น
+กอบแก้ว ศิริวรรณ
+กอเซ็ม เม่นทอง
+ก่อเกียรติ ขุนทอง
+ก่อโชค จันทวรางกูร
+ก้องเกียรติ เฟื่องวุฒิราญ
+ก้อนแก้ว ศรีนคร
+กังวาล เกียรติ์ศักดาวงศ์
+กังสดาล หอมกลิ่นราตรี
+กัญจนี งามพสุธาดล
+กัญญธร พงศ์พงัน
+กัญญา เกษสังข์
+กัญญา ใจมั่น
+กัญญา ดีที่สุด
+กัญญา นวลแข
+กัญญา ผู้กฤตยาคามี
+กัญญา รุ่งเรือง
+กัญญา ศรีวัฒนะ
+กัญญา หงสกุล
+กัญญาภรณ์ ลิลิตชาญ
+กัญญารัตน์ เมืองแก้ว
+กัญทิมา ธีรภาพรุ่งโรจน์
+กัณฐิกา ณ สงขลา
+กัณทิมา เจริญรัตนวัฒน์
+กัณหา สุวรรณกาโร
+กันตยา เพิ่มผล
+กันทิมา รอดสำอางค์
+กันยา จีนฟุ้ง
+กันยา โภคาสถิตย์
+กันยา เอี่ยมอนันต์วัฒนะ
+กันยาลักษณ์ เตชะพงศ์วรชัย
+กัมปนาท ยอแสงทอง
+กัมพล ตั้งจิตรศรัทธา
+กัมพล สิขรียะ
+กัลนิกา เยาวรักษ์
+กัลยา การักษ์พิทักษ์
+กัลยา คุณปสุต
+กัลยา ฉายชูพงศ์
+กัลยา แซ่อึ๊ง
+กัลยา เถระปัญญา
+กัลยา นุชนาฎนนท์
+กัลยา เผ่าไทย
+กัลยา ไพรวัฒนานุพันธ์
+กัลยา ยิ่งธเนศ
+กัลยา ลิ้มโยธิน
+กัลยา วิริยะโรจนาวุฒิ
+กัลยา สรรพกิจผล
+กัลยา สุรพฤกษ์
+กัลยา อินทรทัต
+กัลยาณี คูประพัทธ์พงศ์
+กัลยาณี ถิระรณรงค์
+กัลยาณี รุ่งเลิศ
+กัลยาณี หิรัญเชรษฐ์
+กัลยารัตน์ บัณฑิตภิรมย์
+กากอง แซ่หยี่
+กาญจนะ ไม้แก้ว
+กาญจนา กาญจนา
+กาญจนา แก่นประยูร
+กาญจนา ครุฑไชยันต์
+กาญจนา จันทนะโสตถิ์
+กาญจนา จีระแพทย์
+กาญจนา เฉลิมพันธุ์
+กาญจนา เชิงชาญกิจ
+กาญจนา แซ่อั๊ง
+กาญจนา แดงประไพ
+กาญจนา โต๊ะพิกุล
+กาญจนา เทพรส
+กาญจนา นาควิสัย
+กาญจนา บุญช่วย
+กาญจนา ปองเสงี่ยม
+กาญจนา พนมวรรณเวช
+กาญจนา พิพัฒนานิตย์
+กาญจนา ภาคคู
+กาญจนา เมฆกุลวิโรจน์
+กาญจนา ราตรี
+กาญจนา เลิศศักดิ์วิมาน
+กาญจนา วัฒนะจันทร์
+กาญจนา ศรีประทีปบัณฑิต
+กาญจนา เศวตามร์
+กาญจนา สามารถกิจ
+กาญจนา สุทธินุ่น
+กาญจนา แสงสูง
+กาญจนา อภินันท์นาถ
+กาญจนา อินทรพิทักษ์
+กาญจนาภรณ์ ขมิ้นเครือ
+กาญจนี รักษ์สกุล
+กาญจน์ ยู่โหงว
+กานดา คณะสุข
+กานดา เด่นไทย
+กานดา ปานชี
+กานดา รุ่งประกายรัตน์
+กานดา ศักดิ์สิทธิ์
+กานดา อัมพรวิโรจน์กิจ
+กานต์ โกสินทรกุล
+กาบนภา นามแดง
+การะเกด กุหลาบแก้ว
+การีม บุญมาเลิศ
+การุณ ชัยวงศ์โรจน์
+การุณ ศรีสดใส
+การุณย์ เสริมสกุล
+กาหลง ด่านพาณิชย์กุล
+ก้าน น่วมสำลี
+กำจร ชูธนากรณ์กุล
+กำจร อนัญญาเขต
+กำจัด ฤทธิ์ดี
+กำชัย ลาวัณยวุฒิ
+กำธร จารุสุวรรณภูมิ
+กำธร ตันธีระธรรม
+กำธร พรทวีโภคทรัพย์
+กำธร ไวทยะพานิช
+กำธร อินทรไพโรจน์
+กำพล เข็มทอง
+กำพล โชคสุนทสุทธิ์
+กำพล บูรพาชีพ
+กำพล รัตนวิริยะ
+กำพล ศักดิ์พิชัยสกุล
+กำพล อดุลวิทย์
+กำเนิด เทียนเนียม
+กำไร ฉิมดอนทอง
+กิ่ง กสิภาร์
+กิ่งกาญจน์ ธนคุ้มชีพ
+กิ่งกาญจ์ วงศ์กิจจาเลิศ
+กิ่งพร คงเอี่ยมพิธี
+กิ่งแก้ว ใจต๊ะมา
+กิ่งแก้ว ยังเจริญ
+กิจ นาวาพนม
+กิจจา เจริญผล
+กิจจา พูลผล
+กิจจา สุขประเสริฐ
+กิจติพงษ์ ชูไทย
+กิตดนัย ธรมธัช
+กิตติ กิตติวรพันธ์
+กิตติ คงชื่นสิน
+กิตติ จ่างจรูญโรจน์
+กิตติ ชัยศิริพงศ์
+กิตติ แซ่หลิ้ม
+กิตติ ตโมหรณวงศ์
+กิตติ ธนาภินันท์ชัย
+กิตติ บุญวันต์
+กิตติ พงศ์พลาญชัย
+กิตติ ไพบูลย์ยิ่ง
+กิตติ รองรัตน์
+กิตติ ลิ้มชัยกิจ
+กิตติ วัชระคุปต์
+กิตติ ศรีสุทธิรักษ์
+กิตติ สันประเสริฐ
+กิตติ เสรีบุตร
+กิตติ อยู่โพธิ์
+กิตติ เอื้อชาญเวช
+กิตติคุณ เจือกิจกำจร
+กิตติชัย ช่อทองดี
+กิตติชัย พิริยะกุลธร
+กิตติชัย อรชร
+กิตตินันท์ หมายมั่นศร
+กิตติพงศ์ ทองสุขา
+กิตติพงษ์ กิตติภัสสร
+กิตติพงษ์ ทรัพย์สุข
+กิตติพงษ์ เมษะมัต
+กิตติพงษ์ หาญไทยผลดี
+กิตติพล จันทร์ยิ้ม
+กิตติพันธุ์ เล็กประสมวงค์
+กิตติมา เกียรติกมลมาลย์
+กิตติมา เพิ่มสุข
+กิตติมา เอื้อกิจธิโรปกรณ์
+กิตติยา รัตนศรีอำไพพงศ์
+กิตติวรรณ กำธรเจริญ
+กิตติวุฒิ ศศิพงศ์อนันต์
+กิตติศักดิ์ แซ่ตั้ง
+กิตติศักดิ์ ประอินทร์
+กิตติศักดิ์ วรกิจประทีป
+กิตติศักดิ์ หอมจำปา
+กิตติเดช ธนรรฆากร
+กิติ ชวนะลิขิกร
+กิติกร พนิชย์สกุล
+กิติชัย สิทธิ์ธรรมวิไล
+กิติพงษ์ ตันติวณิชย์
+กิติพัฒน์ ปวีณวิทยโชติ
+กิติมา พุฒจันทร์
+กิติยา นกทอง
+กิติศักดิ์ แกล้วกสิวิทย์
+กิติศักดิ์ เลิศวงศ์วีรชัย
+กินรี ดำทองสุข
+กิมกี แซ่หรือ
+กิมจั๊ว แซ่โป่ว
+กิมซ้ง แซ่ลี้
+กิมป๊อ เลิศกวีวงศ์
+กิมลั้ง กิจเจริญชัย
+กิมลุ้ย แซ่ลิ้ม
+กิมหยุน แซ่จง
+กิมฮวด เจริญรังสรรค์
+กิมฮั้ว แซ่ลี้
+กิมเช็ง แซ่ไหล
+กิมเตียง แซ่เฮ้ง
+กิมเลี้ยง บุญยงค์
+กิมเอ็ง แซ่หลิม
+กิมเฮียง แซ่ไหล
+กิมไจ๊ แซ่อึ๊ง
+กิ้มกุ้ง แซ่ปึ้ง
+กิรณ จารุจินดา
+กี จี้เซ้ง
+กีรณา ทันตะเวช
+กีรบุตร กิติยาดิศัย
+กุง แซ่เล้า
+กุณฑล พุกกรมานนท์
+กุนที ไพจิตรประภาภรณ์
+กุยเกียง แซ่เอี้ย
+กุ่ยเฮียง แซ่ลิ้ม
+กุร์จรันชิงห์ โครานา
+กุลชร แย้มผอบ
+กุลญา มัญชุวาทินี
+กุลธร นารูลา
+กุลธิดา อุตตโน
+กุลปราณี คงพลัง
+กุลมิตกอร์ จาวาลา
+กุลรัตน์ สิ่งยัง
+กุลวดี ธีรสุนทรวัฒน์
+กุลวลี ตระกูลสันติชัย
+กุลเทพ นาคะอภิ
+กุศล บุญเสมอ
+กุศลศรี ศักดิ์เมือง
+กุสุมา เทียนประเสริฐ
+กุสุมา เสือเนียม
+กุหลาบ คุณสามารถ
+กุหลาบ ทรัพย์เกษตร
+กุหลาบ พุกกะณะสุต
+กุหลาบ วิสุทธิอุทัยกุล
+กุหลาบ อารีรัตน์
+กู้เกียรติ ชัยกรโกศล
+เกชา โต๊ะสมัน
+เกตุ ฤทธิ์ดี
+เกนซิงห์ เกนซิงห์
+เกริก เมนัช
+เกริกอิทธิ์ เกษมสันต์
+เกรียง เยาวนวิมล
+เกรียงชัย รัตนไพวงศ์
+เกรียงศักดิ์ ก้องไตรภพ
+เกรียงศักดิ์ โฆษิตกุลพร
+เกรียงศักดิ์ ชวลิขิต
+เกรียงศักดิ์ ตรีทิพยรักษ์
+เกรียงศักดิ์ นรดี
+เกรียงศักดิ์ พงศ์เพ็ชร
+เกรียงศักดิ์ เฟื่องฟูพงศ์
+เกรียงศักดิ์ ฤกษ์อำนวยโชค
+เกรียงศักดิ์ วิชชุวัฒนากร
+เกรียงศักดิ์ สมกิจรุ่งโรจน์
+เกรียงศักดิ์ แสนใหม่
+เกรียงศักดิ์ อุดมมิตรรัก
+เกรียงไกร กิตติชัยเดช
+เกรียงไกร จิรสิริโรจนากร
+เกรียงไกร ด่านธนะชัย
+เกรียงไกร นาคทอง
+เกรียงไกร พิณทอง
+เกรียงไกร ลาภสิริสวัสดิ์
+เกรียงไกร ศิรามพุธ
+เกรียงไกร หงสไกร
+เกลียวดี ตันสุวรรณดี
+เกวลี พลชัย
+เกศทิพย์ พุทธพงษ์
+เกศรา แซ่เฮ้ง
+เกศราภรณ์ พลีเกตุ
+เกศรินทร์ หลีทับ
+เกศสุนีย์ วิวัฒนาภิรักษ์
+เกศินี ชวลี
+เกศินี มนทิราลัย
+เกศีณี ลือกุลวัฒนชัย
+เกษณี แซ่ตั้ง
+เกษตร สุวรรณธรรมา
+เกษม กิตติโสภณกิจ
+เกษม คำพยัคฆ์
+เกษม จำนงค์ไว
+เกษม ช่วงโชติ
+เกษม แซ่ซื้อ
+เกษม ตุ้มทอง
+เกษม ธีรทีฆานุวงศ์
+เกษม บุญมายะพันธุ์
+เกษม ปึงชวลิตโสภี
+เกษม พิพัฒน์ประทานพร
+เกษม มั่นถาวร
+เกษม รัตนาธรรมวัฒน์
+เกษม เลี่ยงวิชชุพันธ์
+เกษม เวชรัตน์พิมล
+เกษม สมิทธิเนตย์
+เกษม สุดวิสัย
+เกษม หวังจิตต์เชียร
+เกษม อินทรสกุล
+เกษมศรี ชีวะเกตุ
+เกษมศักดิ์ ปัญญาฤทธิ์
+เกษมสันต์ สนธิสถาพร
+เกษร กุลเลิศประเสริฐ
+เกษร ชีวปรีชา
+เกษร นำพัก
+เกษร เพิ่มทรัพย์
+เกษร วัฒนาลัย
+เกษร โสรัตน์
+เกษรา พวงสวัสดิ์
+เกษรินทร์ สมวงศ์
+เกษสุนีย์ มามีชัย
+เกษแก้ว เจริญสุข
+เกสรี เกียรติกำจร
+เการักษ์ สุคนธ์เลิศสมร
+เกียง เลิศพลาชัย
+เกียรติ กังวานเวชกุล
+เกียรติ ดีขจร
+เกียรติ มหเกียรติไพศาล
+เกียรติ หงษ์วิศิษฐกุล
+เกียรติคุณ ทักษิณนุกุลวงศ์
+เกียรติชัย โตอรุวงศ์
+เกียรติชัย เวศน์มัฆวาน
+เกียรติณรงค์ รัตนปรีชาเวช
+เกียรติพร จารุธรรม
+เกียรติศักดิ์ กิจก้องขจรชัย
+เกียรติศักดิ์ ฉัตรวิทยาทรัพย์
+เกียรติศักดิ์ บุญเรือง
+เกียรติศักดิ์ เรือนนาค
+เกียรติศักดิ์ เสาสาย
+เกียรติ์ กัณวเศรษฐ
+เกียว พัวสวัสดิ์
+เกี้ยงซวง แซ่งุ่ย
+เกื้อกูล กองวิเศษ
+เกื้อกูล วงศ์ทศพร
+เก็ก แซ่อิม
+เก่งกาจ ปักกาเต
+เก๋ สุวรรณวัฒน์
+แก่น ทั่งสถิตย์
+แก้ว จิรบวรวิสุทธิ์
+แก้ว ถาวรนันท์
+แก้ว ยาน้อย
+แก้ว ไสยจิตร์
+แก้วจินดา ทองแก้ว
+แก้วตา ศฤงคารเจษฎา
+แก้วมณี ศรีวะรมย์
+แก้วใจ ไวศยางกูร
+โกมล โกมุทธนชาติ
+โกมล ปัตตานุสรณ์
+โกมล ศิริพร
+โกมินทร์ ฑีฆธนานนท์
+โกลิตา มีลาภ
+โกวิท แซ่เล้า
+โกวิท พันธุ์แย้มมาลี
+โกวิท วาตะ
+โกวิท อุทัยฉาย
+โกวิทย์ ทรัพย์เจริญศรี
+โกวิทย์ วงศ์รุ่งโรจน์
+โกศล กฤษณประพันธ์
+โกศล ใจวิจิตร
+โกศล ธีรพิทยาธร
+โกศล เพ็ชรสุวรรณ์
+โกศล วัฒนามานนท์
+โกศล เหล่าศิริรัตน์
+โกสิทธิ์ ฉันทาจารุวงศ์
+โกสินทร์ วัลลิโภดม
+โกสุม แมนผดุง
+โกสุมภ์ อภิวันทนันท์
+โกเมศ โกมุทเกื้อกูล
+ใกล้รุ่ง แพทย์ประเสริฐ
+ไกรดา ดวงประชา
+ไกรฤกษ์ ณ ลำปาง
+ไกรวัลย์ วิริยะวิทย์
+ไกรศร ปรารถนาดี
+ไกรศักดิ์ หุ่นวิจิตร
+ไกรสร วงศ์นภากาญจน์
+ไกรสีห์ คล้ายมณี
+ไกวัล จาตนิลพันธุ์
+ขจร ช้อนประเสริฐ
+ขจร พิมพิชัย
+ขจร สุนทโรดม
+ขจรพล แสนสุดสวาท
+ขจรศักดิ์ เจ้ากรมทอง
+ขจรศักดิ์ โพธินามทอง
+ขจรศักดิ์ เหล่าพงษ์ศร
+ขจรเดช พงษ์สนาม
+ขจิตพรรณ คชพันธุ์
+ขชล วรทีปานนท์
+ขนิษฐา การสมพิษ
+ขนิษฐา จำเนียรกาล
+ขนิษฐา ดวงแก้ว
+ขนิษฐา นากาอิ
+ขนิษฐา ผลงาม
+ขนิษฐา ยงวานิชจิต
+ขนิษฐา วงศ์เหลือง
+ขนิษฐา สังข์ศิริ
+ขนิษฐา อนุสถิตย์
+ขยัน ศาสตระรุจิ
+ขวัญ ขวัญเทียนทอง
+ขวัญจิต ยอดสอน
+ขวัญชัย กงบุราณ
+ขวัญชัย เชื้อสุวรรณ
+ขวัญชัย พงษ์เลาหพันธุ์
+ขวัญชัย วงษ์ณรัตน์
+ขวัญชัย อมรเมธ
+ขวัญตา จันทร์ฉาย
+ขวัญตา ศุภเสาวภาคย์
+ขวัญยืน บุญพรม
+ขวัญศิริ วณิชกุลบดี
+ขวัญเมือง คงถาวร
+ขวัญเรือน งามเผือก
+ขวัญเรือน สียวน
+ขวัญใจ เจตน์จำนงค์สกุล
+ขวัญใจ นรมัตถ์
+ขวัญใจ รุ่งเรือง
+ขวัญใจ สุขอาบใจ
+ขัณฑ์ไชย วงศ์งาม
+ขันติ เดชะคุปต์
+ขันทอง ศรีคำ
+ขางิ้ม แซ่ลิ้ม
+ขาว สุบรรณรัตน์
+ขำเสมอ คงศิริ
+ขุนแผน แก้วน้อย
+เขมชาติ อิรัชตานนท์
+เขมา วิสุทธิวัฒนากร
+เขียน ภัทรี
+เข็ม คล้อยแสง
+เข็มทอง ศิริแสงเลิศ
+แขนภา ดุษฎีดำเกิง
+ไขศรี รังสิยานนท์
+ไข่มุกข์ คงคา
+คงกฤตย์ ปานจันทร์
+คงฤทธิ์ เปี่ยมเจริญชัย
+คงศักดิ์ เติมพิทยาเวช
+คงศักดิ์ วาณิชกรพิพัฒน์
+คงเดช แซ่โหง้ว
+คฑาทอง ทองใหญ่
+คณารัชต์ ทีเหล็ก
+คณิต ซิ้มเจริญ
+คณิต ศาศวัตศานติ
+คณิน จุฑามาศ
+คติ พันธุ์สว่าง
+คนอง นิลพันธ์
+คนึง ชูประจง
+คนึง โสมะเกษตริน
+คนึงนิจ ทวีแก้ว
+คนึงนิจ สังข์เจริญ
+คนึงนิตย์ สุขสกุล
+คมกริช เฉลิมวัฒน์
+คมกฤช ประคุณคดี
+คมขำ ชวลิต
+คมคาย ตั้งตรงคิด
+คมจักร เจนจบ
+คมศักดิ์ กอสินประเสริฐ
+คมสัน คุณเจริญ
+คมสัน บัณฑิตวงษ์
+คมสัน ศรีทองสุข
+คมสันต์ กลิ่นดี
+คมสันต์ สุพรรณโรจน์
+ครรชิต คล่องบุญจิต
+ครรชิต ผลาบูรณะ
+ครรชิต สุวรรณชื่น
+ครองเกียรติ เทศประสิทธิ์
+คลอใจ ปัญญาศร
+คลึง ทวีวรรณ์
+คอตีเยาะ สามัญ
+คะเน็ต ผดุงชีวิต
+คัทรียา ยนตร์เปี่ยม
+คัมภีรปัญญากร พระครู
+คาตี๋ แซ่คง
+คาเกียว แซ่โอ้ว
+คำ วรรณสิทธิ
+คำตา บุญชู
+คำนวน บุณยผล
+คำนึง ไชยยนต์
+คำนึง ศิริจันทร์
+คำปัน แสนสุข
+คำพล คงขวัญเมือง
+คำพันธ์ ศุภสร
+คำมา ศิริอาจ
+คำรณ แซ่กัง
+คำรณ รุ่งโรจน์พานิชย์
+คำรน จตุทอง
+คำหม่อน ประสมผล
+คำแผน ศรีขาว
+คิณห์ วัฒนพิทักษ์กุล
+คิมโอ้ว หวังสุขนิรันดร์
+คีม เล่าวจีศาสตร์
+คึกฤทธิ์ อารีปกรณ์
+คุณน้อง พัฒนานารักษ์
+คุณากรณ์ วิเศษศิริลักษณ์
+คุม บุญแจก
+คูณ โสภณานุกูล
+คเณศ ขาวจันทร์
+เคน สุวรรณศรี
+เครือบุญ โหติธะนัง
+เครือวรรณ ศิรยานนท์พินิจ
+เครือวัลย์ ดำรงค์รักษ์
+เครือวัลย์ พุ่มชา
+เครือวัลย์ สีเลิศ
+เคลิ้ม ภู่ทอง
+เคียงขวัญ จั่นเอี่ยม
+เค็ก แซ่เตีย
+แคล้ว แดงดี
+ไคอู๋ แซ่อึ้ง
+โฆษิต พัฒนพงศ์
+ง่วงเซี้ยม แซ่แห
+ง้วน แซ่ลิ้ม
+ง้อ สินธีรภาพ
+งามขำ ฮุ่นตระกูล
+งามฉินน์ ยิ้มประเสริฐ
+งามตา สาระเทียน
+งามพรรณ แย้มสกุล
+งามศักดิ์ แย้มชื่น
+งิ๊ม แซ่เฮง
+เงิน แก้วชนะชัย
+เงินยวง นุนพนัสศักดิ์
+เง็ก แซ่โง้ว
+เง็กซิม ตนันท์ยุทธวงศ์
+เง็กฮวย แซ่จึง
+เง็กเล้ง แซ่เจียม
+โง้วเคี้ยง แซ่หลอ
+จงกรณ์ อิ่มสกุล
+จงกล ทองโอฬาร
+จงกล ลานเจริญ
+จงกล แหประสพโชค
+จงกลณี แม้นหมาย
+จงกลนี ปิ่นเจริญ
+จงจิต แซ่อึ๋ง
+จงจิตต์ บุญชนานนท์
+จงจิตร จันทวี
+จงจินต์ เสรีรักษ์
+จงดี บัวบูชา
+จงดี แสงเพชร
+จงรัก เต็งอำนวย
+จงรักษ์ จันทร์คงสุวรรณ
+จงรักษ์ พันธมิตร
+จงรักษ์ หาญวุชานุรักษ์
+จงศิริ ล้อกาญจนรัตน์
+จงเฮง แซ่นิ้ม
+จตุพร กาญจนคลอด
+จตุพร ธมรัตน์
+จตุพร วัชรานาค
+จตุพล อิ่มเงิน
+จตุรงค์ พลนิล
+จตุรพร สุริยามาศ
+จรงค์ กลิ่นรื่น
+จรรยรักษ์ คุณุปการ
+จรรยา เงินดี
+จรรยา ชูขวัญ
+จรรยา ทีปานนท์
+จรรยา ปั้นเหน่งเพชร
+จรรยา มณีโชติ
+จรรยา เลาหเลิศชัย
+จรรยา เศรษฐบุตร
+จรรยา ห่วงศรี
+จรรยารักษ์ ทรัพย์เกรียงไกร
+จรวย ทองมีปั่น
+จรวยพร กองเพ็ง
+จรอน โปรยเจริญ
+จรัญ จันทร์ทิม
+จรัญ ดุลยาภินันท์
+จรัญ เนียมหอม
+จรัญ พิริยะปัญญา
+จรัญ ร้องขันแก้ว
+จรัญ ศักดิ์สยามกุล
+จรัญ หงวนเสงี่ยม
+จรัญญา จันทราสุวรรณ
+จรัญเดช จำปาวัลย์
+จรัล จิรศานต์ชัย
+จรัล บุนนาค
+จรัล วิโรจน์ยิ่งยง
+จรัลรัตน์ เรืองชาติ
+จรัส ชัยมหาวัน
+จรัส ปิ่นโสภา
+จรัส วรกุลดำรง
+จรัส อับดุลลา
+จรัสพร แซ่เตียว
+จรัสศรี เจริญชุ่ม
+จรัสศรี พึ่งกัน
+จรัสศรี สุกันญา
+จริง พุ่มแพร
+จริน ภู่น้อย
+จรินทร์ กลิ่นมะลิ
+จรินทร์ ช้างประสิทธิ์
+จรินทร์ นาคศรีอาภรณ์
+จรินทร์ พุทธิสาวงศ์
+จรินทร์ เรือนแก้ว
+จรินทร์ สมุห์สนธ์
+จรินทร์ อิ่มจันทร์
+จริยา เกรียงไกรวณิช
+จริยา เจริญสิน
+จริยา ดิลกโกมล
+จริยา บุญจอง
+จริยา โพธิวิชยานนท์
+จริยา วงศ์กิจเจริญ
+จริยา สังวาลย์
+จริยา องค์วาสิฎฐ์
+จรี ตรีสอาด
+จรีภรณ์ อินทแพทย์
+จรีรัตน์ พิกุลแย้ม
+จรุง พรหมมานนท์
+จรุงศรี จรุงกลิ่น
+จรูญ กันซัน
+จรูญ คงมา
+จรูญ จีระวัฒนา
+จรูญ โชคจารุเนตร
+จรูญ ทรัพย์เนืองนอง
+จรูญ แนมใส
+จรูญ แป้นเล็ก
+จรูญ เพ็ชร์กลับ
+จรูญ รักษาราช
+จรูญ วรรธนะสิน
+จรูญ สร้อยสว่าง
+จรูญ แสนราช
+จรูญ เอื้อเพิ่มเกียรติ
+จรูญลักษณ์ อังค์ไพโรจน์
+จรูญศรี ศุขรุ่งเรือง
+จรูญโรจน์ ฉิมสำราญ
+จวงจันทร์ แก้วพึ่งทรัพย์
+จวน ด้วงเงิน
+จวนฟาง ตั้งสมบูรณ์
+จอน วิริยะอรรถวุฒิ
+จอมฝาง สัมทราย
+จอห์น แอลแลนแร
+จ๊ะ แซ่ท้าว
+จักรกริช รุจอุฬาร
+จักรกฤษ ชุนกองฮอ
+จักรกฤษณ์ นุสสติ
+จักรกฤษณ์ สิทธาจารวัฒน์
+จักรชัย เพ็ชรเม็ดใหญ่
+จักรพงศ์ เลิศมณีพันธ์
+จักรพงษ์ สุภาพ
+จักรพันธ์ ก้อนผูก
+จักรพันธ์ เลิศถวิลภักดี
+จักรวาล กำลังศร
+จักราวุธ แจ้งเวชฉาย
+จักรี เขื่อนธรรม
+จักฤษณ์ ฤทธิ์เลิศ
+จั้ง มดทอง
+จันจนา สมสืบ
+จันดี อิงสา
+จันทนา กมลทิพย์ตระกูล
+จันทนา งามเลิศวงศ์
+จันทนา ชิดชอบ
+จันทนา ตันติประเสริฐ
+จันทนา นุ้ยเผือก
+จันทนา พัฒนจิตวิไล
+จันทนา รอดวิจิตร
+จันทนา วัชรินทร์พิทักษ์
+จันทนา สายกระสุน
+จันทนา โหมวานิช
+จันทนี จันทรารมย์
+จันทนี สิงห์สุวรรณ
+จันทยา ตรองตระการ
+จันทร์กำเหนิด เจริญพิทักษ์
+จันทร์จิรา เชื้อจุ้ย
+จันทร์ฉาย กุลอนันต์
+จันทร์ฉาย พงษ์ประเสริฐ
+จันทร์ดี กุญจร
+จันทร์ทรา บู่สาลี
+จันทร์ทิพย์ วุฒิประเสริฐ
+จันทร์นิภา เกรแฮม
+จันทร์พิม คล้ายนาค
+จันทร์รัตน์ ถนอมพลคลัง
+จันทร์ศรี สวยรูป
+จันทร์สุดา ลาภวุฒิรัตน์
+จันทรา กิจกัญจนาสน์
+จันทรา แซ่กี้
+จันทรา บุญที
+จันทรา โรจน์พลาเสถียร
+จันทรา สุขสิงห์
+จันทราภา พันธุ์สมบุญ
+จันทร์เพ็ญ กลีบบัว
+จันทร์เพ็ญ จันสำโรง
+จันทร์เพ็ญ แซ่ยิด
+จันทร์เพ็ญ ธนพงศ์นุโรจน์
+จันทร์เพ็ญ ปานเทศ
+จันทร์เพ็ญ มาตรสิงห์
+จันทร์เพ็ญ วงศ์ชำนาญ
+จันทร์เพ็ญ สัญญะวี
+จันทร์เพ็ญ อมรสมบูรณ์ศักดิ์
+จันทร์แดง ผลจันทร์
+จันทร์โรจน์ สถิตวิริยวงศ์
+จันทร์ โชคสุริยะสกุล
+จันทร์ พิลา
+จันทร์ สกุณา
+จันทา เกลี้ยงพร้อม
+จันทิมา แก้วประโลม
+จันทิมา ณะรินทร์ฟู
+จันทิมา พินทุวัฒนะ
+จันทิมา ศรีไกรวัชร
+จันทิรา กระบวนยุทธ
+จันทิรา สุขสกุลนี
+จันวิไล ชิตนุชตรานนท์
+จั่วคุณ แซ่เซียว
+จาตุรงค์ สุริยาศศิน
+จามจุรี ศรีหิรัญรัศมี
+จามรี เหรียญอัมพร
+จาริณี สุคนธชาติ
+จารีย์พร พุ่มน้ำเย็น
+จารึก ชูนุช
+จารึก เวทวัฒนาพิบูล
+จารุ วิชาไทย
+จารุณี จะโรครัมย์
+จารุณี นาคนาม
+จารุณี ยุกติรัตน์
+จารุณี เสวตไอยาราม
+จารุนันท์ บุญจันทร์
+จารุพร ศิริทัตสวัสดิ์
+จารุภา แสมขาว
+จารุลักษณ์ ธรรมธาร
+จารุวรรณ จงเลิศวณิชกุล
+จารุวรรณ แซ่โอ๊ว
+จารุวรรณ นิรันดรพฤกษ์
+จารุวรรณ ภิรมย์เจียว
+จารุวรรณ วัฒนสิงหะ
+จารุวรรณ เสรีเจริญสถิตย์
+จารุวัฒน์ จารุวัฒนะ
+จารุเกียรติ คาดสนิท
+จำนง โกวิทอิสริยะ
+จำนง รังสิกุล
+จำนงค์ กิตติรัตนอุดม
+จำนงค์ จรรยาวรวงศ์
+จำนงค์ ชิตจ้อย
+จำนงค์ ทองประเสริฐ
+จำนงค์ บัวประดิษฐ์
+จำนงค์ พวงละออง
+จำนงค์ มังกรประดิษฐ์
+จำนงค์ เล็กดารา
+จำนงค์ สระทอง
+จำนงค์ หนูภักดี
+จำนงนาฏ จิตตกิจ
+จำนอง พวงพุฒ
+จำปา โกษะโยธิน
+จำปา พุมมา
+จำปี จันทร์คำ
+จำปี เป๋าทอง
+จำปี สิงหพันธุ์
+จำรัญ อรรถสุนทร
+จำรัส เงินศิริ
+จำรัส ไชยศิรินทร์
+จำรัส ทับเจริญ
+จำรัส บุญประสพ
+จำรัส พันธุ์แก้ว
+จำรัส มีคัลและห์
+จำรัส เล้าชัยวัฒน์
+จำรัส สงวนพงษ์
+จำรัส แสงรูจี
+จำรัส อินศรี
+จำรูญ คุ้มชุ่ม
+จำรูญ ปิตะโหตระ
+จำรูญ สงวนศักดิ์โยธิน
+จำลอง กองแสงศรี
+จำลอง แขเขียว
+จำลอง จารุชัยนิวัฒน์
+จำลอง ชื่นบำรุง
+จำลอง ท้วมเจริญ
+จำลอง น้อยอินทร์
+จำลอง ปลื้มเปรม
+จำลอง พุฒหยวก
+จำลอง เมธาวิริยะศิลป์
+จำลอง ไล้รักษา
+จำลอง ศิลาพันธ์
+จำลอง สุขสวัสดิ์
+จำลอง อนันตผล
+จำลองลักษณ์ สัญญะเดชากุล
+จำเนียร กองบุบผา
+จำเนียร จงไพจิตร
+จำเนียร แช่มช้อย
+จำเนียร เทศเพ็ญ
+จำเนียร ประภารัตน์
+จำเนียร เพ็งเจริญ
+จำเนียร รัฐวิเศษ
+จำเนียร ศรีวงษ์
+จำเนียร สุดศิริ
+จำเนียร อีดี
+จำเริญ คำสอน
+จำเริญ บุญทองสุข
+จำเริญ เลิศเจริญยงค์
+จำเริญ อันธิรส
+จำเรียง ดิษฐานนท์
+จำเรียง สุวรรณโณ
+จิงล้ง แซ่ตั้ง
+จิณหธาน์ บุญไกรสิทธิ์
+จิตกรอง อินทรอุดม
+จิตต์บรรยง จิตต์บรรยง
+จิตตรา พุกกะมาน
+จิตต์สมร อติเรกานนท์
+จิตติ โชติรัตนะศิริ
+จิตติ วิจิตรชลกานต์
+จิตตินันท์ จินดาหรา
+จิตติมา เกษมโกเมศ
+จิตติมา เทวีลาภรณ์
+จิตติมา เลิศบุญยพันธ์
+จิตติมา อิสระกูล
+จิตต์ ชื่นภักดี
+จิตต์ หมวดสง
+จิตประไพ กนิษฐายน
+จิตร ตันตินิกร
+จิตรกร ศรีหิรัญ
+จิตรภณ รัตนมงคลกุล
+จิตรลดา เหรัญณุกรณ์
+จิตรา กระแสกุศล
+จิตรา จิตต์หาญ
+จิตรา แซ่โง้ว
+จิตรา ธนากูรเมธา
+จิตรา พฤฒิวทัญญู
+จิตรา เยี่ยมฉวี
+จิตรา วัฒนเรืองชัย
+จิตรา สันทนีอนุกูล
+จิตรา อัครพันธ์
+จิตราภรณ์ นามจักร
+จิตรี วงศ์รัตนาวิน
+จิตวดี วิประวิทย์
+จิตอารีย์ เกียรติก่อสุข
+จิน อยู่สบาย
+จินดา แก้วสกลณี
+จินดา จันทร์ภูมิ
+จินดา ฉ่ำจิตรชื่น
+จินดา แซ่หลี
+จินดา ทรัพย์จินดาวงศ์
+จินดา นามทอง
+จินดา ปัญญาวชิรชัย
+จินดา พันนัทธี
+จินดา มากพุ่ม
+จินดา ฤกษ์ปิยะทรัพย์
+จินดา วิวัฒน์พนชาติ
+จินดา สวนทวี
+จินดา เสาร์เกิด
+จินดา อัศวเมธาพร
+จินดาพร ศรีสุขสันต์
+จินดารัตน์ เดชะรักษ์พงษ์
+จินดารัตน์ อมรตานนท์
+จินตนา กลิ่นหอม
+จินตนา เกตุสัมพันธ์
+จินตนา เข็มนาค
+จินตนา จรรยาพาณิชย์
+จินตนา จีระพัฒน์
+จินตนา ชมมาลี
+จินตนา เชิญศิริ
+จินตนา แซ่อ๋อง
+จินตนา เดโชพล
+จินตนา ถาวรวิวัฒนบุตร
+จินตนา เทิดทูลกุล
+จินตนา นาคปนคำ
+จินตนา บุญประสงค์
+จินตนา ปานกลาง
+จินตนา พรหมพิชิต
+จินตนา พุ่มศิริ
+จินตนา มฤคสนธิ
+จินตนา โยธาสมุทร
+จินตนา ลดาวัลย์
+จินตนา วงศ์ชินศรี
+จินตนา วิจิตรศรีวัฒน์
+จินตนา ศรีสวัสดิ์
+จินตนา สถิตรายุธ
+จินตนา สุขทวี
+จินตนา เสนาพรหม
+จินตนา หาเรือนชีพ
+จินตนา อาภานันท์
+จินตนาฏ นิติสารศิลป์
+จินต์ คงทอง
+จินาวรรณ เฮอร์แมน
+จิมฮง แซ่เฮ่ง
+จิรชัย หวังสะดวก
+จิรนันท์ มีวาสนา
+จิรพงษ์ พันธโคตร์
+จิรพร เผื่อนน้อย
+จิรพรรณ นิรัติศัย
+จิรพัฒน์ รัตนปิณฑะ
+จิรภัทร เทวินทรภักติ
+จิรภา มหาพล
+จิรยุทธ อดิเทพนรางกูร
+จิรวรรณ นิมิตศิริวัฒน์
+จิรวัจน์ เจริญศักดิ์
+จิรวัฒน์ ทุมมานนท์
+จิรวัฒน์ สุนทวัฒโรดม
+จิรศักดิ์ กนกกัณฑพงษ์
+จิรศักดิ์ ประไพกรเกียรติ
+จิรศักดิ์ สังขธนานนท์
+จิระ จีรภัทร์
+จิระ ศิลปชำนาญ
+จิระนันต์ แดงพันธ์
+จิระพร กุลเพชรประสิทธิ์
+จิระพันธ์ จินรัตน์
+จิระภา รัตนาวิบูลย์
+จิระวัฒน์ แซ่โง้ว
+จิระศักดิ์ เด่นดวง
+จิระศักดิ์ ศุภบัณฑิตตา
+จิรัชยา แย้มสุวรรณ
+จิรา กมลวาทิน
+จิรานนท์ ศรีทรัพย์
+จิราพร ชูสกุล
+จิราพร ปานเอก
+จิราพร เร่งรัด
+จิราพร สุวินทวงศ์
+จิราพันธุ์ วัฒนา
+จิราภรณ์ จันทรรัศมี
+จิราภรณ์ ณ ไชโย
+จิราภรณ์ บูรณสิงค์
+จิราภรณ์ ยะอนันต์
+จิราภรณ์ วิโรจนวัฒน์
+จิราภรณ์ สุดยอด
+จิราภรณ์ อุบลชาติ
+จิราภา พ่วงสำเนียง
+จิรายุ คุ้มปิติ
+จิรารัช คชภูธร
+จิราวรรณ กันทาซาว
+จิราวรรณ สมพงษ์
+จิราศักดิ์ มันทรานนท์
+จิลาวัลย์ เหียงแก้ว
+จิโรจน์ ไพฑูรย์
+จีรชัย ตังครัช
+จีรพร คุ้มครองธรรม
+จีรพันธ์ อินทเส
+จีรวรรณ แจ่มขำ
+จีรวัฒน์ ไชยวิทย์วิวัฒน์
+จีรศักดิ์ เฉลิมเลิศปัญญา
+จีระ ณ พัทลุง
+จีระพร ลาภานุวัฒน์
+จีระวรรณ พรมเพ็ง
+จีระศักดิ์ มาลัยวงศ์
+จีราพร ลิ้มสุวรรณ
+จีราวุฒิ ทรวงแสวง
+จี้ หง เจิ้ง
+จือเท้ง แซ่ลิ้ม
+จุ่งหยง แซ่ลี้
+จุฑา เชิงชาญ
+จุฑาทิพ วุฒิธรรมสุข
+จุฑาทิพย์ พุทธรักษา
+จุฑาธิป ฉิมกุล
+จุฑาภรณ์ ธนศักดิ์โสภณ
+จุฑามาศ แก้วมงคล
+จุฑามาศ ตนันท์ยุทธวงศ์
+จุฑามาศ พงษ์ศิริ
+จุฑามาศ วัชรเมฆินทร์
+จุฑามาศ เหลืออนันต์
+จุฑารัตน์ กิตติกุลยุทธ์
+จุฑารัตน์ ฐิติปุญญา
+จุฑารัตน์ พลาฤทธิ์
+จุฑารัตน์ วิลัยกรวด
+จุฑาลักษณ์ ถาวรจิตร
+จุติพล เสตะวีระ
+จุนันท์ วงศ์อารี
+จุมพฏ กาญจนกำธน
+จุมพล จันทรศรีเกษร
+จุมพล แนวสกล
+จุมพล ลัมพาภิวัฒน์
+จุมพล หล่มทอง
+จุ้ยร้าง แซ่ฉั่ว
+จุรินทิพย์ สมพันธ์สาทิตย์
+จุรี มงคลละ
+จุรีพร ชั้วชั้น
+จุรีย์ จั่นจุ้ย
+จุรีรัตน์ เครือสุวรรณ
+จุรีรัตน์ วงศ์จันทรา
+จุล ทิพวรนิก
+จุลพงษ์ ณ น่าน
+จุลศิริ สุวรรณศิริ
+จุสิน สุธาชัยพร
+จุฬาพร ขยันการนาวี
+จุฬารัตน์ แซ่เบ้
+จุฬาลักษณ์ นางสวย
+จุไร จงประชาวัฒน์
+จุไร พิเศษกุล
+จุไรพร ศิลปพงษ์
+จุไรรัตน์ เดชเจริญ
+จุไรรัตน์ มหาอิทธิดล
+จุไรรัตน์ หาญไชโยภูมิ
+จุไรศรี มีกังวาล
+จู แซ่ใช้
+จูเคี้ยง แซ่โค้ว
+จเร ญาณะชัย
+จเร สิริสุทธิ
+เจด็จ อรรถหิรัญ
+เจตนา รักษ์กำเนิด
+เจตน์ พรหมเจริญ
+เจน กาบแก้ว
+เจน อิทธิภิญโญ
+เจนจิรา ธรรมวรรธนะ
+เจนนี่ ถาวรกุล
+เจมส์อาเธอร์ ยอร์ช
+เจริญ เกษตรสุวรรณ
+เจริญ คุวินทร์พันธุ์
+เจริญ จิระสถิตย์
+เจริญ ชัยกิตติ
+เจริญ แซ่กวด
+เจริญ ตั้งบุญฤทธิ์ฤทัย
+เจริญ ทองมา
+เจริญ นววัฒนทรัพย์
+เจริญ บุษบรรณ
+เจริญ ผานิล
+เจริญ เพียรเจริญ
+เจริญ ไมดินซา
+เจริญ เรืองศักดิ์
+เจริญ วสันตยานันท์
+เจริญ ศรีวงศ์ษา
+เจริญ สมพร
+เจริญ สุขอากาศ
+เจริญ โสสุด
+เจริญ อินทรเกษตร
+เจริญชัย กาญจนพิบูลย์
+เจริญชัย พิริยะปราการ
+เจริญพงศ์ สุขขี
+เจริญรักษ์ ปลื้มจิตไพบูลย์
+เจริญศรี โกมลฤทธิ์
+เจริญศรี ภู่ประดิษฐ์
+เจริญศักดิ์ กันตชูเวสศิริ
+เจริญสุข กิจเจริญ
+เจรียง พุกกะมาน
+เจษฎา ชนินทรลีลา
+เจษฎา บุญวิจิตร
+เจษฎา เรืองหิรัญ
+เจษฎา แสงสุพรรณ
+เจษฎ์ อนรรฆมงคล
+เจอรี่เยน ยูเชน
+เจิม เดชดำรงค์
+เจิ้ง เจิ้งอิง
+เจียน คชาชัย
+เจียม ไชยราช
+เจียมจิต แก้วน้อย
+เจียมจิตร เชยชื่นจิตร
+เจียมใจ ทะลือ
+เจียรนัย วงษากาศ
+เจียเคียกเล้ง แซ่กัง
+เจือ ทับศรี
+เจือ สุวรรณเจริญ
+เจือเจริญ สถาปนานนท์
+เจ็งเกี๊ยก แซ่ลี้
+แจ่ม เกตุสิงห์น้อย
+แจ่มจันทร์ ปราชญาวิริยะ
+แจ่มศรี อิทธิกุล
+แจ๋ว กีรติไกรนนท์
+ใจ จาตุวิทย์
+ใจทิพย์ ซัง
+ใจอารี วิริยานนท์
+ฉกาจ อารีเสวต
+ฉลวย กัลยาณมิตร
+ฉลวย จูฑะพล
+ฉลวย ตรีเพ็ชร์
+ฉลวย บุญมา
+ฉลวย พันธ์ขะวงษ์
+ฉลวย แย้มกลีบ
+ฉลวย ศรีรัตนา
+ฉลวย แสงอุทัยจามร
+ฉลวยลักษณ์ เรืองจุติโพธิ์พาน
+ฉลอง จารุพัฒนกุล
+ฉลอง ทรัพย์สิน
+ฉลอง ใบเงิน
+ฉลอง มูลเจริญ
+ฉลอง ศาสตรสุข
+ฉลอง อจลพงศ์
+ฉลองพร ศักดิ์เจริญ
+ฉลอม แสงนรินทร์
+ฉลาด ปานเจริญ
+ฉลาด อนันตา
+ฉวี จันทรขำ
+ฉวี เนื้อนิ่มถาวร
+ฉวี วัฒนวิกย์กิจ
+ฉวี อารยางกูร
+ฉวีวรรณ ขจรประศาสน์
+ฉวีวรรณ แจ้งมณี
+ฉวีวรรณ ตันติพิสิทธิ์
+ฉวีวรรณ นราพิทักษ์
+ฉวีวรรณ ปานดำ
+ฉวีวรรณ ภิญญาธินันท์
+ฉวีวรรณ ลาภเจียม
+ฉวีวรรณ ศรสังข์ทอง
+ฉวีวรรณ สิทธิพรธนกุล
+ฉวีวรรณ เหล่าพิทยา
+ฉวีไล รอดพลอย
+ฉอ้อน นอกกระโทก
+ฉอ้าน วุฑฒิกรรมรักษา
+ฉัฐพล จรัสมงคลเจริญ
+ฉัตร ภาคากิจ
+ฉัตรชัย แก้วเกตุ
+ฉัตรชัย เจริญสุข
+ฉัตรชัย เดชาศักดิ์พรรณ
+ฉัตรชัย ธรรมสวยดี
+ฉัตรชัย พจนากำธร
+ฉัตรชัย แย้มแสงทอง
+ฉัตรชัย วัลลิสุต
+ฉัตรชัย สิริปูชกะ
+ฉัตรชัย อัศวปตินาคินทร์
+ฉัตรทิพย์ สวัสดิไชย
+ฉัตรมนา มงคลกิจภักดี
+ฉัตรา ชุมภูทอง
+ฉัตรไชย อาณาวรรณ
+ฉันทนา จังศรียวงศ์
+ฉันทนา ทองธูป
+ฉันทนา พิมลสมบัติ
+ฉันทนา วัชรเสวี
+ฉันทนา หงษ์เฉิดฉันท์
+ฉันท์สินี ทิพศร
+ฉั่นกิ๊ม แซ่ฉั่น
+ฉาย สิงห์ใหญ่
+ฉินกี้ฟอง แซ่ฉิน
+เฉนียน เสนวงษ์
+เฉลย สมิตะมาน
+เฉลา จิระชีวะนันท์
+เฉลา เปี๊ยะสวัสดิ์
+เฉลา วีระกุล
+เฉลาศรี ทรรพวาทิน
+เฉลิม ขำปัญญา
+เฉลิม แจ่มจำรัส
+เฉลิม ดีประเสริฐ
+เฉลิม ธาดาประดับสกุล
+เฉลิม ปัญญา
+เฉลิม พิสิษฐ์สังฆการ
+เฉลิม ยงค์เจริญชัย
+เฉลิม ลือสัมพันธ์
+เฉลิม ศิริวงศ์
+เฉลิม สุขุมพานิช
+เฉลิม องค์ศุลี
+เฉลิมขวัญ ชูคำ
+เฉลิมชัย จันทรวิรุจ
+เฉลิมชัย ทรัพย์สอน
+เฉลิมชัย โพธิ์ทอง
+เฉลิมชัย ศรีอินทนนท์
+เฉลิมชัย อุดมรัตน์
+เฉลิมพงษ์ มหาวาณิชย์วงศ์
+เฉลิมพร เวชเฉลิมจิตร
+เฉลิมพล ฐิตินันท์ถาวร
+เฉลิมพล พานิชยานุวัฒน์
+เฉลิมพล สร้างสมสุขสกุล
+เฉลิมมาต ลิมปิชัยพานิช
+เฉลิมวุธ ซื่อตรง
+เฉลิมศรี เทียมสมบูรณ์
+เฉลิมศรี วิวัฒน์วานิชกุล
+เฉลิมศักดิ์ คงเรืองศรี
+เฉลิมศักดิ์ ระบิลวงศ์
+เฉลิมอัฑฒ์ ก้อนทอง
+เฉลิมเกียรติ สันติพันธุ์
+เฉลียว กลิ่นนิ่มนวล
+เฉลียว จงประสมสิน
+เฉลียว แซ่เตีย
+เฉลียว ไทยเจือ
+เฉลียว ปรึกษา
+เฉลียว เพชรขำ
+เฉลียว รอดเดช
+เฉลียว ศรีหาวงศ์
+เฉลียว แสงกิตติไพบูลย์
+เฉลียว เอี่ยมยอดสิน
+เฉวียน คำเนตร
+เฉิดโฉม สุกกสังค์
+แฉล้ม กระถินทอง
+แฉล้ม โชติช่วง
+แฉล้ม ผูกพันธ์
+แฉล้ม วิชุประภา
+แฉล้ม อุศุภรัตน์
+โฉมยงค์ นาคนึก
+โฉลง กลั่นทรัพย์
+ไฉน พลีขันธ์
+ไฉไล กุลภัทร์แสงทอง
+ช วรัตน์
+ชญานี ตรีทิพยางกูร
+ชฎาพร มันยากุล
+ชฎาวัลย์ รื่นวงษา
+ชณิตา คงสายทองคำ
+ชดช้อย พวงรอด
+ชนกพร เรืองกิจปกรณ์
+ชนม์นิภา นาคย้อย
+ชนะ จันทร์กระจ่าง
+ชนะ เทพบริสุทธิ์
+ชนะ เยี่ยงกมลสิงห์
+ชนะ หนุนภักดี
+ชนะชัย ภู่มีเจริญ
+ชนัชณ์ จันทรเจริญ
+ชนัตถ์ กิตติวิโรจน์
+ชนาญวัต จิตร์ภิรมย์ศรี
+ชนาพร ชูทิม
+ชนิกานต์ ทาคำมา
+ชนิดา ครุฑทอง
+ชนิดา ตาณะสุต
+ชนิดา โภไคศวรรย์
+ชนิดา ศิริรัตนกุล
+ชนิต วิทยากรโกมล
+ชนินทร ศรีรัตน์ภิญโญ
+ชนินทร์ ชีวโชคชัย
+ชนินทร์ ปิยะวาณิชเสถียร
+ชนินทร์ วิเศษดั้น
+ชนินทร์ อัศวธเรศ
+ชนุวรรณ ตรีเกษม
+ชม แซ่ตัน
+ชม สีแจ่ม
+ชมนาค เจริญกุล
+ชมพล สิริสัมพันธ์เจริญ
+ชมพูนุท แซ่ตั้ง
+ชมภู ชมภูนุช
+ชมภู่ พรมพูนพะเนา
+ชมัยพร คำหอมกุล
+ชยทัต รติรมย์พันธ์
+ชยันต์ โพธิ์ทอง
+ชยาวุธ ทิวเสถียร
+ชรัตน์ ต่ออ่อน
+ชรินทร์ กนกพิพัฒน์วงศ์
+ชรินทร์ บัวอ่อน
+ชรินทร์ สวนเจริญ
+ชฤทธิ์ มีสิทธิ์
+ชลดา ปิยณรงค์โรจน์
+ชลธนันท์ เอื้อประกิจสิริ
+ชลธิชา โชติช่วง
+ชลธิชา มหากิจศิริ
+ชลธิดา ธรรมวัฒน์วิมล
+ชลนิชา เจริญสมบัติ
+ชลลดา จงปติยัตต์
+ชลลดา ศิริพงศ์สัมพันธ์
+ชลอ กรีชวด
+ชลอ งามฤทธิ์
+ชลอ แซ่เล้า
+ชลอ นิ่มทอง
+ชลอ พงษ์ภมร
+ชลอ มหาอมรเลิศ
+ชลอ วิมูลชาติ
+ชลอ สุจิตธรรมวงศ์
+ชลอ อุปะเดีย
+ชลัช เทพมโนทัยสกุล
+ชลัมพร ธรรมเนียมจัด
+ชลาภรณ์ สถาพรธนาสิน
+ชลิดา คงรัตนประเสริฐ
+ชลิต ขีตตะสังคะ
+ชลิต ทองมณี
+ชลิต ลิ้มรสสุคนธ์
+ชลิต อาชาไนยกุล
+ชลินทร อนุตรพร
+ชลีพร รักพืช
+ชวชาติ ใจเพ็ชร
+ชวน โชติจารุไชยา
+ชวน พทธโกสัย
+ชวน ศิริกิจ
+ชวนชม จันทระเปารยะ
+ชวนชื่น กราพงษ์
+ชวนพิศ งามขำ
+ชวนพิศ เนมี
+ชวนพิศ วิรยศิริ
+ชวนัชย์ จรรยาศักดิ์
+ชวรัตน์ บวบทอง
+ชวลิต เกตุพล
+ชวลิต จันทรสวัสดิ์
+ชวลิต ชวลิตสุนทร
+ชวลิต แซ่ลิ้ม
+ชวลิต ทรงศรชัย
+ชวลิต นิธากร
+ชวลิต ปัญญาสงค์
+ชวลิต พุนทิกาพัทธ์
+ชวลิต มีแก้วน้อย
+ชวลิต ลิมปิผลไพบูลย์
+ชวลิต วิริยะอาภรณ์
+ชวลิต ส่วนเศรษฐา
+ชวลิต เสนาขันธ์
+ชวลิต อ่อนเมือง
+ชวลี ปัญจางค์เจริญ
+ชวาล เขมะลิลิต
+ชวาลา สุวรรณชีพ
+ช่วง กุลวรรณวิจิตร
+ช่วงโชค ทองอยู่
+ช้วน บัวทอง
+ชอบ คุ้มสติ
+ชอบ พรหมเดช
+ชอบศักดิ์ เส็งประเสริฐ
+ชอุ่ม ไวทยาคม
+ช่อ อยู่บัว
+ช่อทิพย์ เทศประสงค์
+ช่อทิพย์ หิรัญวงษ์
+ช่อลัดดา นนทวัฒน์
+ช้องฮวย รุ่งเรืองรัตนชัย
+ช้อฮั้ว สมศิริวัฒนา
+ชะลอ ศรีเงินยวง
+ชะเลงศักดิ์ เชื้ออรวรรณ
+ชะโอด ทรัพย์กล้า
+ชั้งกิม แซ่โก
+ชัชชนก ศุภผลถาวร
+ชัชชัย บุญยืนยงสกุล
+ชัชชาย วงศ์สงวน
+ชัชพงษ์ โหตะระภวานนท์
+ชัชวรรณ ศิริบรรจงศักดิ์
+ชัชวาล ชูชัยพิเชฐ
+ชัชวาล ปิยะประพันธ์พงษ์
+ชัชวาล วิริยะเจริญมงคล
+ชัชวาล เอี่ยมพิภักดิ์
+ชัชวาลย์ เจริญสวรรยา
+ชัชวาลย์ เต็มฤทธิวงศ์
+ชัชวาลย์ ปายะนันทย์
+ชัชวาลย์ เมฆฉาย
+ชัชวาลย์ วุฒิประเสริฐ
+ชัชวาลย์ สุวิริยะไพศาล
+ชัชสมร ชุนหชัย
+ชัดชัย ปานนาค
+ชั้น จูน้อย
+ชั้น ฤทธิ์หิรัญ
+ชัย ขมิ้นผง
+ชัย แซ่เฮ้ง
+ชัย มนัสศิริเพ็ญ
+ชัย สุรสิทธิ์
+ชัยกิจ อุทัยวัณน์
+ชัยชนะ พันธุ์ภักดีดิสกุล
+ชัยชาญ จูงเจริญจิตต์
+ชัยชาญ สิริมงคลพาณิชย์
+ชัยณรงค์ จันทร์สว่าง
+ชัยณรงค์ ธนาสมบูรณ์ผล
+ชัยณรงค์ เมธีระวัฒน์
+ชัยณรงค์ สนธิปัญญากุล
+ชัยดิษฐ์ ยงบรรเจิด
+ชัยธวัช นาคะนคร
+ชัยนันท์ วิสูตรเรืองเดช
+ชัยปิติ ม่วงกูล
+ชัยพจน์ ฉัตรศรีนพคุณ
+ชัยพร ไชยวุฒิเสรี
+ชัยพร ประเสริฐกันย์
+ชัยพร รัตนเมธานนท์
+ชัยพร สมใจนึก
+ชัยพฤกษ์ แก้วกมล
+ชัยพันธุ์ ประยูรวรรณ
+ชัยมงคล ยิ่งยมสาร
+ชัยยงค์ กาญจนฆาร
+ชัยยงค์ ศรีอรัญญากุล
+ชัยยศ ชินโชติกร
+ชัยยศ พงศ์พูลทอง
+ชัยยศ สินธุประสิทธิ์
+ชัยยะ มีสกุล
+ชัยยันต์ บัวอุไร
+ชัยยา ภิญโย
+ชัยยุทธ ชัยสุรินทร์
+ชัยยุทธ ปิติปาละ
+ชัยยุทธ วันสอง
+ชัยยุทธ เอียดแก้ว
+ชัยรัตน์ กมลนรเทพ
+ชัยรัตน์ จูประจักษ์
+ชัยรัตน์ เดชานำวงศ์
+ชัยรัตน์ บุญน้อย
+ชัยรัตน์ มาประณีต
+ชัยรัตน์ วรวงศ์เธอ
+ชัยรัตน์ สุรชัยธนวัฒน์
+ชัยฤกษ์ เพิ่มเกียรติศักดิ์
+ชัยฤทธิ์ สีหิสราภิสิทธิ์
+ชัยวัฒน์ กิตติพรนันท์
+ชัยวัฒน์ จริยาภรณ์
+ชัยวัฒน์ ชัยรัตนทรงพร
+ชัยวัฒน์ ตันกำแหงเดชา
+ชัยวัฒน์ ธีรสุขประเสริฐ
+ชัยวัฒน์ ประเสริฐชัยกิจ
+ชัยวัฒน์ พานิชยาภรณ์
+ชัยวัฒน์ เยาวภาพงศ์
+ชัยวัฒน์ วงศ์วัฒนศานต์
+ชัยวัฒน์ ศรีเจริญธรรม
+ชัยวัฒน์ สุขวณิชนันท์
+ชัยวัฒน์ อริยมงคลสกุล
+ชัยวัตร์ เตชะฤดีวรรณ
+ชัยวิวัฒน์ เขียวโสภณ
+ชัยวุฒิ ศุภวงศ์วิศาล
+ชัยศักดิ์ ชั่งใจ
+ชัยศิริ พันธุ์โอภาส
+ชัยสิทธิ์ ก่อเกียรติเจริญ
+ชัยสิทธิ์ แต้รัตนชัย
+ชัยสิทธิ์ ลูกรักษ์
+ชัยสิทธิ์ อัญชนานนท์
+ชัยเจริญ เจริญสิทธิ์
+ชัยเลิศ โกยสมบูรณ์
+ชัยโรจน์ เกษรางกูร
+ชัยโรจน์ วัฒนศิริสุข
+ชาคร ปราการนพคุณ
+ชาคริต สุขพรวิทวัส
+ชาญ เกียรติสังวรณ์
+ชาญ เจริญสิทธิพันธ์
+ชาญ เชี่ยวธีรกุล
+ชาญ เตรียมศิริวรกุล
+ชาญ บัวทอง
+ชาญ พันธ์แช่ม
+ชาญ เมธางกูร
+ชาญ วงศ์สุรศิลป์
+ชาญ สง่างาม
+ชาญ เสรีรัฐโพธิ์ตระกูล
+ชาญ เอี่ยมอุ่น
+ชาญชัย กิตติวงศ์ไกร
+ชาญชัย คงโต
+ชาญชัย จารุไพบูลย์
+ชาญชัย ชวลิตกิจเจริญ
+ชาญชัย ไชยนามสถิตย์
+ชาญชัย ณ ถลาง
+ชาญชัย โตบดี
+ชาญชัย นทีวงศ์กิจ
+ชาญชัย ประดับชนานุรัตน์
+ชาญชัย พร้อมวุฒิ
+ชาญชัย ภัทรสิทธิเสรี
+ชาญชัย รัตนาชัยพงษ์
+ชาญชัย เลิศประสพโชค
+ชาญชัย วิทูรปัญญากิจ
+ชาญชัย ศิริวงศ์วราภรณ์
+ชาญชัย สิทธิชัยวิริยะกุล
+ชาญชัย แสงจันทร์ศิวดล
+ชาญชัย อภิรมย์เสมอ
+ชาญชัย เอมะรุจิ
+ชาญณรงค์ ขวัญเจริญ
+ชาญณรงค์ ทองนวล
+ชาญณรงค์ ภูผา
+ชาญณรงค์ สิทธิสมบูรณ์
+ชาญบูรณ์ เพ็ญตระกูล
+ชาญยุทธ ประเสริฐโสภา
+ชาญยุทธ์ ตรีสุคนธ์
+ชาญวิทย์ ช่วงชัย
+ชาญวิทย์ ปิยะวาณิชเสถียร
+ชาญวิทย์ สุขอร่าม
+ชาญวุฒิ พรกิตติวัฒนากุล
+ชาญศักดิ์ ทานธนะเจริญ
+ชาญศักดิ์ อุดมถิรพันธุ์
+ชาญเวช ศรัทธาพุทธ
+ชาตรี เกรียงยะกุล
+ชาตรี เจริญจรัสกุล
+ชาตรี ดิเรกวัฒนชัย
+ชาตรี นกสกุล
+ชาตรี พัธนพันธุ์
+ชาตรี ลิมปิชัยโสภณ
+ชาตรี ศรีสุคนธ์
+ชาตรี สุหัสไพศาล
+ชาตรี อินคุ้ม
+ชาติ ทางทอง
+ชาติชัย จาตุศรีพิทักษ์
+ชาติชาย จงกล
+ชาติชาย แซ่แต้
+ชาติชาย ประสิทธิสา
+ชาติชาย ยุวนะเตมีย์
+ชาติชาย ศรีสาริสถ์
+ชาติชาย อัครวิบูลย์
+ชาติเฉลิม เลขวณิชธรรมวิทักษ์
+ชานนท์ สายชุม
+ชาย ท้วมกลิ่น
+ชาย อุมะวิชนี
+ชายใหญ่ บุญเข็มทอง
+ชาลินี จันทวารา
+ชาลี คำลาย
+ชาลี ทิพยวาน
+ชาลี เพียรมานะ
+ชาลี วัชรเสถียร
+ชาลี อนันต์วิริยะชัย
+ชำนะ ทัตติยพงศ์
+ชำนาญ ฉวีวงษ์
+ชำนาญ แต้สุจิ
+ชำนาญ บุญวิทยากุล
+ชำนาญ โพธิ์สุข
+ชำนาญ เลาหบุตร
+ชำนาญ สาระผล
+ชำนาญ อินทะนะ
+ชำเชี้ยะ ขันทอง
+ชิงชัย พิพัฒน์จรัสสกุล
+ชิด จริยาวิลาศ
+ชิดชนก ศรีสมวงษ์
+ชิดพงษ์ สยามเนตร
+ชิต ตันศิริล้ำ
+ชิต ยะโส
+ชิตชม จัตตุพรพงษ์
+ชิตสกนธ์ สันทัด
+ชิน ตั้งกุศลลลิต
+ชิน โรจนแสง
+ชินณเรศ ดิษฐผล
+ชินฤทธิ์ ประยูรทอง
+ชินวัตร ใจเที่ยง
+ชินเหรียญ เสกธีระ
+ชิลัย สุวรรณสาร
+ชี เค แลม
+ชีวา กลิ่นดี
+ชื่น เกตุปมา
+ชื่น เวทมาหะ
+ชื่นจิต แหลมจริง
+ชื่นจิตร แซ่ตั้ง
+ชื่นสุข กมลทกาภัย
+ชื้น ทองญวน
+ชุงเอง แซ่เจีย
+ชุดาพร แสนราชา
+ชุตินันท์ เตชะสมบูรณ์
+ชุติมณฑน์ บุญชัชวาล
+ชุติมา ขันดี
+ชุติมา ชินโน
+ชุติมา ทรัพย์สิรินทร์
+ชุติมา ปัววราภรณ์
+ชุติมา มหัคคกุล
+ชุติมา วชิรเสรีชัย
+ชุติมา สินสาธิต
+ชุติมา อัญญณรงค์กุล
+ชุน แซ่โง้ว
+ชุนเซ้ง แซ่โง้ว
+ชุบ จันทร์แก้ว
+ชุบ ลาไม้
+ชุมนุม ศัตรูลี้
+ชุมพร ผดุงกิจ
+ชุมพล กาญจนโกศล
+ชุมพล ชมพูทวีป
+ชุมพล ตีรณสาร
+ชุมพล บุญสาใจ
+ชุมพล มรรคผล
+ชุมพล เวสสบุตร
+ชุมพล เสริมชั้น
+ชุมรัตน์ จักรจิตรภา
+ชุมสาย มณีน้อย
+ชุ่ม น้อยประชา
+ชุรีวรรณ จินตกวีวัฒน์
+ชุลี เรืองฤทธิ์
+ชุลีกร รัตน์วิจิตต์เวช
+ชุลีพร บุญอยู่
+ชุลีพร อึ้งวิศิษฎ์วงศ์
+ชู โจแอนนา
+ชูจันทร์ฉาย ลาเคน
+ชูจิตต์ ธรรมฐิติ
+ชูจิตร มักพันธ์เจริญกิจ
+ชูชัย เกิดผล
+ชูชัย เตชะธรารักษ์
+ชูชัย เรียบเลิศหิรัญ
+ชูชัย อุดมโภชน์
+ชูชาติ คำโต
+ชูชาติ ซึ่งดำรง
+ชูชาติ นพวงษ์
+ชูชาติ พงษ์รัตน์
+ชูชาติ รักษาสัตย์
+ชูชาติ ศรีรัตน์
+ชูชาติ สุวัชรวิวัฒน์
+ชูชาติ เอี่ยมสุทธา
+ชูชีพ ปัญจสังข์
+ชูชีพ สังข์นิลแก้ว
+ชูดวง แสงชูโต
+ชูพงศ์ หวังวัฒนานันท์
+ชูพันธ์ โกมลสุต
+ชูรัตน์ บุญเนาว์
+ชูวงศ์ นิติปัญญาวงศ์
+ชูศรี กองแก้ว
+ชูศรี เจียรกุลประเสริฐ
+ชูศรี ทองธรรมชาติ
+ชูศรี ปาละกูล
+ชูศรี มะลิอ่อง
+ชูศรี วิวัฒน์วงศ์ธร
+ชูศรี สุริวงษ์
+ชูศรี เอี่ยมสอาด
+ชูศักดิ์ จันทรมานะ
+ชูศักดิ์ โชคบวร
+ชูศักดิ์ ทองกล่ำ
+ชูศักดิ์ ประทีปเทียนทอง
+ชูศักดิ์ ม่วงยา
+ชูศักดิ์ ลือชาอุดมเกียรติ
+ชูศักดิ์ ศรีเจริญล่ำซำ
+ชูศักดิ์ สุวรรณบูลย์
+ชูศักดิ์ อุ่นประเสริฐศิลป์
+ชูสาร วงศ์วัชรา
+ชูเกียรติ กัณฑศิลป์
+ชูเกียรติ ชื่นภากรณ์
+ชูเกียรติ นาครนราธร
+ชูเกียรติ เมธีประภา
+ชูเกียรติ สว่างเนตร
+ชูเคว้ง แซ่โง้ว
+ชูเอ็ง พรทวีทัศน์
+ชูใจ ฮูเซ็น
+ชโลทร สุวรรณสัญญา
+ชไมพร ชุมเสวี
+ชไมพร วิทิตวัฒน
+เชงคิ้ง แซ่แต้
+เชน ปิ่นเพชร
+เชล พงษ์ศักดิ์
+เชวง เพชรสุวรรณ
+เชวงศักดิ์ เมฆา
+เชษฐชัย รัตนานุวงศ์ชัย
+เชษฐา สุนทรกิติ
+เชอรี่วรรณ จิณณธรรมพงษ์
+เชาวนี สมิตานนท์
+เชาวน์ ยะสุพัฒนากุล
+เชาวรัตน์ เนตรมณีทิพย์สิริ
+เชาวลิต ขำศิริ
+เชาวลิต โปร่งกมล
+เชาวลิต สุขสบาย
+เชาว์ แก้วประดิษฐ
+เชาว์ ทองมา
+เชาว์ มิ่งแก้ว
+เชาว์ หลักเพ็ชร
+เชิงชัย ธำรงวินิจฉัย
+เชิญ ประทุมนนท์
+เชิด บัวเปรม
+เชิด อินทร์มงคล
+เชิดชัย นันทิวัชรินทร์
+เชิดชัย ศรีคำรุณ
+เชิดชาย มากบำรุง
+เชิดพันธุ์ เจริญเวช
+เชิดศักดิ์ นำเจริญกิจกุล
+เชิดศักดิ์ สุคนธสิงห์
+เชียง สำเร็จผล
+เชียะตง เอกอรุณรุ่งฤทธิ์
+เชี้ยน มอญกระโทก
+เชื้อ เกตุนวม
+เชื้อ เรืองรุ่งโรจน์
+เชื้อเต็ก แซ่ฉิ่น
+เช็งสุน แซ่เลี่ยว
+เช้า ธรรมโชติ
+แช่ม เผือกทอง
+โชค พงศาปาน
+โชคชัย จันทร์ผาสุข
+โชคชัย แซ่โง้ว
+โชคชัย บุญญารัตน์สถาพร
+โชคชัย ภาวสุทธิการ
+โชคชัย วังมะนาว
+โชคชัย สุทธิ์ประเสริฐพร
+โชคดี กำพลเชตุ
+โชคอนันต์ พงษ์ติแด
+โชติ จิณณวาโส
+โชติ ประยงค์ทรัพย์
+โชติ สนธิทรัพย์
+โชติกา สวัสดิ์สาระ
+โชติมา กมลวิบูลย์
+โชติรส คูผาสุข
+โชติวุฒิ ผดาจิตร
+ใช่เอ็ง แซ่หลิ่ว
+ไชย แซ่โซว
+ไชยณรงค์ สุนทโรทยาน
+ไชยพร สุคนโธหก
+ไชยยงค์ รินสถิตนนท์
+ไชยยศ พูนดี
+ไชยยันต์ จิรา
+ไชยยา หาญวิวัฒน์วงศ์
+ไชยรัตน์ รัตนแก้วกาญจน์
+ไชยวัฒน์ ฉลองพันธรัตน์
+ไชยวัฒน์ สาวถยางกูร
+ไชยสนธิ์ ถนัดใช้ปืน
+ไชยันต์ ฤตวิรุฬห์
+ไชยา มณี
+ไชยเทพ พิมลธนรักษ์
+ไชโย สิทธิกรโสมนัส
+ซกฮุย พันทร
+ซงค์ รพิทยพรรณ
+ซ่งเม้ง แซ่ตั้ง
+ซ้งเส็ง สุริยะจันทร์หอม
+ซอยม่วย เหลืองทำเหมือน
+ซ่อหยิน แซ่ตั้ง
+ซังเอ็ง แซ่ตั้ง
+ซั้วปวยเม้ง แซ่ซัว
+ซามวล ฟิลลิพส์มิวส์
+ซาวารัน ซิงห์
+ซิกซวง แซ่อั้ง
+ซิมค้วง แซ่เตง
+ซิวง้อ แซ่กัว
+ซิวม่วย แซ่อึ้ง
+ซิวเจ็ง แซ่ตั้ง
+ซิวไน้ แซ่โง้ว
+ซิ้วจู แซ่ตั้ง
+ซิ้วเตียง ประดิษฐ์
+ซีรอยุดดิน มินสาคร
+ซื่อเหลียง แซ่ตั้ง
+ซุนติ๊ก แซ่ฮึ้ง
+ซุยง้อ แซ่เอี้ยว
+ซุ่ยล้ง แซ่ตั้ง
+ซุ้ยลิ้ม แซ่ตั้ง
+ซูบ๊วย แซ่ลิ้ม
+ซู่เกี่ยว แซ่ตั้ง
+เซน โหมดเสม
+เซาะฮวง แซ่หลาย
+เซียงกวง แซ่จึง
+เซียมจู เธียรปรีชา
+เซียมเง็ก แซ่เอี้ย
+เซียวตวง แซ่แต้
+เซียะจั้ว แซ่ตั้ง
+เซียะเกียว แซ่กี้
+เซี่ยงกง แซ่ตั้ง
+เซี่ยมจวน แซ่เฮ้ง
+เซี่ยมลั้ง แซ่ลิ้ม
+เซี่ยมเกียง แซ่ตั้ง
+เซี่ยมเม้ง แซ่เล้า
+เซี่ยวจิว แซ่เอ็ง
+เซี้ยม แซ่เอ็ง
+เซี้ยะย้ง แซ่คู
+เซ็งเฮียง แซ่เตียว
+เซ่งเตียง แซ่โง้ว
+เซ้ยเจี่ย แซ่เบ๊
+โซเฟีย ดำสำราญ
+ไซจู แซ่อึ้ง
+ไซโกอัง แซ่ลิ้ม
+ไซ้เอ็ง แซ่ลิ้ม
+ญาณินี ธชาลุภัฏ
+ญาณีย์ อุ้ยสกุล
+ญานี ตันติตระกูล
+ฐนิดา สกุลชัยวานิช
+ฐากูร ทรงประจักษ์กุล
+ฐานันดร์ อัศวเลิศสรร
+ฐานิศวร์ เจริญพงศ์
+ฐาปนี ศรีนาค
+ฐิตราพร สำราญจิตต์
+ฐิติ โชคเจริญพัฒนกิจ
+ฐิติกา มีธรณี
+ฐิตินันท์ จริยวัฒนสกุล
+ฐิติพงศ์ ศุภผล
+ฐิติพร เตชะโสภณมณี
+ฐิติพร สืบประดิษฐ์
+ฐิติมา คงสว่าง
+ฐิติมา เพียรชอบ
+ฐิติมา อนุสนธิ์
+ฐิติรัตน์ ประภายสาธก
+ฐิติวัฒน์ ล้วนวัฒนานุกูล
+ฐิราอร มินราชัน
+เฑียร กรรณสูต
+ณฐวรรณ ประยุกต์สกุล
+ณพล พลินสุต
+ณรงค์ชัย กิตติโชติรัตน์
+ณรงค์ชัย ธนะปักษิณ
+ณรงค์ชัย ศิริบุญละม่อม
+ณรงค์ยศ สำราญ
+ณรงค์ฤทธิ์ พนาสวัสดิ์
+ณรงค์วิทย์ วิทสัทธาวรกุล
+ณรงค์ศักดิ์ ดีอำพัน
+ณรงค์ศักดิ์ พรหมสาขา ณ สกลนคร
+ณรงค์ศักดิ์ เลิศอนันต์
+ณรงค์ศักดิ์ แสงวัชร
+ณรงค์เดช บุญครอง
+ณรงค์ กองทรัพย์โต
+ณรงค์ กุสสลานุภาพ
+ณรงค์ ขันจอก
+ณรงค์ คำพานิช
+ณรงค์ จวบฤกษ์เย็น
+ณรงค์ จำรูญวัฒน์
+ณรงค์ เจริญเกียรติวงศ์
+ณรงค์ ชัยธีรกิจ
+ณรงค์ โชคจารุรัตน์
+ณรงค์ ด่านอนันต์สุข
+ณรงค์ ตั้งวิบูลย์วิทย์
+ณรงค์ โต๊ะเงิน
+ณรงค์ ทองเรือง
+ณรงค์ ไทยสุริยะ
+ณรงค์ น้อยวงศ์
+ณรงค์ นุตจรัส
+ณรงค์ บุญสิทธิ์
+ณรงค์ ปรีญานนท์
+ณรงค์ ผลามิตร
+ณรงค์ พรายทอง
+ณรงค์ พิริยพฤนท์สกุล
+ณรงค์ โพธิพุกกะนะ
+ณรงค์ มณีวงษ์
+ณรงค์ เมธีวิริยาภรณ์
+ณรงค์ รอดสาย
+ณรงค์ รุ่งวิชานิวัฒน์
+ณรงค์ ลิมปิศิลป์
+ณรงค์ วงษ์สว่าง
+ณรงค์ วิบูลย์เจริญกิจ
+ณรงค์ ศรีนาวาวงศ์
+ณรงค์ ศิลปชำนาญ
+ณรงค์ สรรสุนทร
+ณรงค์ สิทธิมงคล
+ณรงค์ สุทธิวัล
+ณรงค์ เสาวลักษณ์
+ณรงค์ หมื่นวงษ์
+ณรงค์ อดุลย์วิจิตร
+ณรงค์ อังคะจันทร์
+ณรงค์ อุ่นอ่อน
+ณรงศักดิ์ ตั้งเจริญสุขจีระ
+ณริสาห์ เหลืองสวัสดิ์
+ณัชชา กสิพร้อง
+ณัฎฐพร พรหมจินดา
+ณัฎฐินี ดวงภิรมย์
+ณัฏฐพงศ์ ขจรโกวิทย์
+ณัฏฐา น้อยนิวรณ์
+ณัฏฐไชย สายบัว
+ณัฐ ถนอมพิชัย
+ณัฐ อินธการ
+ณัฐกานต์ จงดี
+ณัฐการ อุดมหรรษากุล
+ณัฐชนก แก่งหินแก้ว
+ณัฐชัย ปิยะวงศ์วัฒนา
+ณัฐญา ลี้พ้นพาล
+ณัฐณิชา ธเนศพงศ์ธรรม
+ณัฐธร คูดำรงสวัสดิ์
+ณัฐนันทน์ ทองวิเศษ
+ณัฐปกรณ์ เลาแก้วหนู
+ณัฐพงศ์ สิริพลังคานนท์
+ณัฐพงษ์ สันติศานต์
+ณัฐพร นามบุรี
+ณัฐพร หวังศรีตรัย
+ณัฐพล ช้างสำลี
+ณัฐพล ภัทรเรืองสกุล
+ณัฐพล หวังฤทธิ์ไกรกุล
+ณัฐภรณ์ พรกิตติโชติเจริญ
+ณัฐยา ศิรินันท์
+ณัฐวร สิงหทัต
+ณัฐวรรณ รัศมีพรหม
+ณัฐวัฒน์ บุนนาค
+ณัฐวุฒิ จารุวรรณากูร
+ณัฐวุฒิ ปัญตะโญ
+ณัฐวุฒิ สิมะสุวรรณรงค์
+ณัฐสมพล จำปาทิพย์
+ณัฐสุรางค์ หลิมเจริญ
+ณัฐิยา สันติโยธิน
+ณัศภร เอี่ยมโอภาส
+ณิชาภัทร ชมวิชา
+ณุติศิษฏ์ วิบูลยานนท์
+ดนัย กล่อมเอี้ยง
+ดนัย ฉัพพรรณรังษี
+ดนัย ทิวาเวช
+ดนัย พิณรัตน์
+ดนัย วัฒนรัชกิจ
+ดนัย หะสิตะพงษ์
+ดนุจร เจิมเจิดพล
+ดรรชนี เทวานุรักษ์
+ดรุณพร กมลภุส
+ดรุณี จันดาเวียง
+ดรุณี ตรีศิริพิศาล
+ดรุณี บุษยานุเคราะห์
+ดรุณี รักสัตย์
+ดรุณี ศรีชัยกุล
+ดรุณี หาญสมบูรณ์
+ดลณัฏฐา ศรีเรืองชีพ
+ดลฤดี วิทยาศิริกุล
+ดวง เสมากูร
+ดวงกมล แซ่ตั้ง
+ดวงกมล พูพัฒนานุรักษ์
+ดวงกมล สินธุบูรณ์
+ดวงจันทร์ คลังตระกูล
+ดวงจันทร์ โยธาสิงห์
+ดวงจิตต์ การุณสถิตย์ชัย
+ดวงดาว แซ่ก๊วย
+ดวงดาว เหลืองอาสนะทิพย์
+ดวงตา แตงอ่อน
+ดวงตา สมจิตร์
+ดวงทิพย์ วนะภูติ
+ดวงนภา สวนธนาศิริ
+ดวงพร คำขันธ์
+ดวงพร ชุมพงษ์ทอง
+ดวงพร ไตรสุธรรมพร
+ดวงพร ปิยะชาตินันท์
+ดวงพร ยงค์ฤประพันธ์
+ดวงพร วิไลพรเจริญ
+ดวงพร สุคนธ์
+ดวงพร อึ้งอัมพรวิไล
+ดวงมน วงษ์จันทร์แดง
+ดวงรัตน์ ด่านวัฒนศิริ
+ดวงรัตน์ ศรีทอง
+ดวงฤดี ทวีพจน์
+ดวงฤมล รักษาคุณ
+ดวงสมร มณีผ่อง
+ดวงสุมน สมวิชัย
+ดวงเดือน คล้ายพงษ์พันธ์
+ดวงเดือน บุญชัยฤทธิ์
+ดวงเดือน สัยเกตุ
+ดวงเพชร อรัญชราธร
+ดวงแข โกมุทพงศ์
+ดวงใจ กีระวิศาสกิจ
+ดวงใจ ชาวประสา
+ดวงใจ ทัพพะรังสี
+ดวงใจ ผุดประภากุล
+ดวงใจ รักเนตรสาคร
+ดวงใจ สงวนแก้ว
+ดวงใจ อุปเสนสกุลวงษ์
+ดอกไม้ จ้อยถนอม
+ดะห์ ดีเจริญ
+ดัสซันซิงห์ กุลาตี
+ดาร์ชั่น ซิงห์
+ดารณี จำปา
+ดารณี ถิรธนกุล
+ดารณี เปรื่องวิทยากุล
+ดารณี เมฆกวี
+ดารณี วิชญคุปต์
+ดารณี เสริมสุนทรศิลป์
+ดาระกา ศิริสันติสัมฤทธิ์
+ดารา จันทร์แสงสุก
+ดารา เลี้ยงชูศักดิ์
+ดาราณี เสาวมล
+ดารารัตน์ จิงเสถียรทรัพย์
+ดารารัตน์ สถิตธรรมนูญ
+ดาราวรรณ รัตนสุภา
+ดาริณี เกษมสันต์
+ดารินทร์ สอนเจตน์
+ดารุณี มั่นคง
+ดาลัด วิมุกติบุตร
+ดาวณี สุขมา
+ดาวรุ่ง พรหมศรีทอง
+ดาวุฒ อัชฌาสัย
+ดาวเรือง รอดภัย
+ดาเรศ พรรณขาม
+ดำรง เกษะประดิษฐ์
+ดำรง ทองมาก
+ดำรง รัชตศรีประเสริฐ
+ดำรง สุขผลานันท์
+ดำรงค์ศักดิ์ ทองยืน
+ดำรงค์ คงเจริญ
+ดำรงค์ ชูติกาญจน์
+ดำรงค์ ทองพลาย
+ดำรงค์ ปรีดาภัทรพงษ์
+ดำรงค์ ภูทัตโต
+ดำรงค์ วงษ์ทอง
+ดำรงค์ สิมพลิพันธุ์
+ดำรงค์ อายุเจริญกูล
+ดำรงฤทธิ์ สันติปาตี
+ดำรงศักดิ์ มะลิทอง
+ดำรงเกียรติ มิตรภักดี
+ดำริ ผางยอยซ้าย
+ดำริห์ ปรุงแต่งกิจ
+ดำเกิง จันทราประภาเวช
+ดำเนิน เผ่าพันธุ์
+ดิน รื่นพิทักษ์
+ดิลก ปรางค์นวรัตน์
+ดิลก สามลเวช
+ดิษพงค์ พฤฒิธาดา
+ดิเรก เกตุวัสห์
+ดิเรก โชติวิจิตร
+ดิเรก บางเขียว
+ดิเรก มีอนันต์
+ดิเรก ศักดี
+ดิเรก โฮรา
+ดีมั่น กอบพิมาย
+ดุจดาว สุทธิปรวิทยากุล
+ดุลยนิตย์ อุดมวงศ์ทรัพย์
+ดุษฎี เจริญจิตกร
+ดุษฎี พักตรพันธานนท์
+ดุษฎี สิทธิทอง
+ดุษฏี รัตนาสังการ
+ดุษณี เลรามัญ
+ดุษดี อนันต์ลักษณ์การ
+ดุสิต แจ่มศรี
+ดุสิต บุษบา
+ดุสิต วิรยศิริ
+ดุสิตธรรมคุณ พระครู
+เดช ถิตย์สงวน
+เดช หนูน้ำ
+เดชพล เหรียญวิโรจน์
+เดชา ก้องไพรินทร์
+เดชา จารุมณีโรจน์
+เดชา แซ่แต้
+เดชา เทศะศิริ
+เดชา เปี่ยมราศรี
+เดชา มีระเสน
+เดชา ไวว่อง
+เดชา สุฒนกิจกุล
+เดชา อินทนิล
+เดวิด เดนนี่
+เดือน ปิยะมาลย์มาศ
+เดือนทิพย์ ชัยพันธ์
+เดือนเพ็ญ ฐาปนาชัย
+เดือนเพ็ญ วรประเสริฐ
+เดโช วุฒิกาญจนาวงศ์
+เด่น ศิริบุญ
+เด่นนภา ศาลิคุปต
+แดง จรจันทร์
+แดง ด่านแจ้ง
+แดง ม่วงงาม
+แดง หนูพันธ์
+แดนชัย ขาวฉอ้อน
+ได้เอ็ง แซ่ผู่
+ตติยา จินาวงศ์
+ตรรกพงษ์ หาญพิทักษ์ญาติ
+ตระกูล จันแตง
+ตรัยพจน์ ติสระพงศ์
+ตรีชัย สุทธิเชื้อนาค
+ตรีระนันท์ มะละคำ
+ตรีเทพ เพียรภักดี
+ตลับ มีสัมฤทธิ์
+ตวงพร ธนังคเวชวิบูลย์
+ตวงสิทธิ์ มนัสดำรง
+ตอง ก้านทอง
+ต่อบุญ สุวรรณเภสัช
+ต่อศักดิ์ ทองสาย
+ต่อศักดิ์ อยู่วัฒนา
+ต้อย นิ่มสุวรรณ
+ตะวัน ถาวรอนุมาศ
+ตังฉ่าย แก้วไพรัช
+ตั้งฮั่งเคี้ยง แซ่ตั้ง
+ตั้น ชลธาร
+ตาบ กรานจรูญ
+ต้าเกียง แซ่แต้
+ติ้งชุน แซ่เตียว
+ติ๋ม บุญสนธิ์
+ติ๋ว สายอุบล
+ตี้เฮียง แซ่อึ้ง
+ตี๋ แซ่เบ๊
+ตุ๊กตา แซ่แต้
+ตุ่ม แซ่เถียน
+ตุลยา สีหมากสุก
+ตุ๊ เสริมฤทธิรงค์
+เตาะเคี้ยง แซ่เฮ้ง
+เติม สามนปาล
+เติมศรี สุรพันธุ์
+เติมศักดิ์ อิพภูดม
+เตียง แซ่เฮ้ง
+เตียงทง แซ่โง้ว
+เตียวเซียะ แซ่ฉั่ว
+เตี้ยโอว แซ่เตีย
+เตือนจิตต์ เจริญสุข
+เตือนตา หาญวิริยะฤทธา
+เตือนใจ งามประดิษฐ์
+เตือนใจ แซ่เฮ็ง
+เตือนใจ เนตร์ทอง
+เตือนใจ พูนล้ำเลิศ
+เตือนใจ ลิ้มรุ่งโรจน์
+เตือนใจ สังขรัตน์
+เตือนใจ อหิงสโก
+เต็กย้ง แซ่ลิ้ม
+เต็งง้วน แซ่อึ้ง
+เต็มดวง เก็ษตระทัต
+เต็มเดือน หิรัณยัษฐีติ
+แตงผึ่งผาย พิศมัย
+แต้สี แซ่เซียว
+โตะอู๊ แซ่เตีย
+ไตรพร ลวสุต
+ไตรรงค์ มหาวาณิชย์วงศ์
+ไตรรัตน์ ศิริธรรม
+ไต้จุ้ย แซ่ปึง
+ถนอม เกลาเกลี้ยง
+ถนอม ชลออยู่
+ถนอม ธีรานุตร์
+ถนอม ปึงประยูร
+ถนอม มาลากรณ์
+ถนอม ศรีลาปัง
+ถนอม หรินทรัตน์
+ถนอมจิต พรหมพัฒน์
+ถนอมพงศ์ สุวัฒนธรรม
+ถนอมศรี แซ่เจี่ย
+ถนอมศรี วังไพบูลย์
+ถนอมศักดิ์ ทองใบใหญ่
+ถนัด นาคแกมทอง
+ถนิม มานะกวิน
+ถมยา วงษ์สงฆ์
+ถวัลย์ แก้วประสิทธิ์
+ถวัลย์ ทิมลอยแก้ว
+ถวัลย์ ภรินทนันท์
+ถวัลย์ สิงห์งาม
+ถวิล กิจสมใจ
+ถวิล เจริญศิริสุทธิกุล
+ถวิล เถาว์จู
+ถวิล บุญกล่อม
+ถวิล พึงยา
+ถวิล รื่นยศ
+ถวิล ศรีเจียม
+ถวิล สุเมฆประดิษฐ์
+ถวิลวงศ์ ช่วงชิง
+ถาวร กิจทองถาวร
+ถาวร เงินเพชรทองคำ
+ถาวร ชละเอม
+ถาวร ตั้งสหไมตรี
+ถาวร น่วมแก้ว
+ถาวร ปานรุ่ง
+ถาวร ภูรีโรจน์
+ถาวร ล้วนรัตน์
+ถาวร วีระพงษ์
+ถาวร สุขพิทักษ์
+ถาวร อรัญภูมิ
+ถ้ำ เดชฤดี
+ถิรวัฒน์ เลิศมหาทรัพย์
+ถุงเงิน พันธุ์คูณ
+เถลิงศักดิ์ บัณฑิตพิสุทธิ์
+แถม จันทรทศ
+แถว ไตรบรรณ์
+ทนง จรูญชาติรักษ์
+ทนง แพคงคา
+ทนงค์ กีรวิทย์
+ทนงศักดิ์ คุณาสถิตย์ชัย
+ทนงศักดิ์ ทัศนภักดี
+ทนงศักดิ์ ภัทรไชยนันท์
+ทนงศักดิ์ สราญชื่น
+ทนันท์ชัย พงศ์พิพัฒน์เวช
+ทม เนียมบุบผา
+ทรง ผดุงกิจเจริญ
+ทรงคุณ เลิศฤทธิ์เดชา
+ทรงชัย ทองเล็ก
+ทรงชัย ศิริสร้อย
+ทรงธรรม ป่าพกุล
+ทรงพร ศรีวิบูลย์
+ทรงพล ชูเชิด
+ทรงพล แพทย์รักษ์
+ทรงพล สุทธิเสริม
+ทรงยศ เครือมังกร
+ทรงยศ หริรักษ์สกุล
+ทรงวาด ขนันไทย
+ทรงวุฒิ ไชยสุริวิรัตน์
+ทรงวุฒิ ยาท้วม
+ทรงศรี เฉลิมญาติ
+ทรงศรี อินไชยะ
+ทรงศักดิ์ ฉัตรดำรงธรรม
+ทรงศักดิ์ ทนุบำรุงสาสน์
+ทรงศักดิ์ พันธุมาศ
+ทรงศักดิ์ วงษ์ซิ้ม
+ทรงศักดิ์ สุขประเสริฐกุล
+ทรงศิลป์ เจริญยัง
+ทรงเกียรติ จารุเกียรติขจร
+ทรงเกียรติ์ ธรรมาภิวันท์
+ทรรศนันท์ แย้มกลีบบัว
+ทรรศวรรณ นันชนก
+ทรัพย์ ทินวงค์
+ทฤษฎี อาษารัฐ
+ทวนทอง เปลี่ยนภักดี
+ทวิกา เอกขจรวงษ์
+ทวิช วุฒิรักษ์ชัย
+ทวิพร ฐิติธรรมสวัสดิ์
+ทวี เกตุทับทิม
+ทวี คงสมบูรณ์
+ทวี จันทรี
+ทวี เฉยทุม
+ทวี แซ่จิว
+ทวี ตาตะยานนท์
+ทวี ทองใบใหญ่
+ทวี นวลเจริญ
+ทวี บุญถนอมวงศ์
+ทวี เปี่ยมพงศ์สุข
+ทวี พันธุ์สวัสดิ์
+ทวี ภู่ตระกูล
+ทวี รอดจรูญ
+ทวี ลีลาพันธิสิทธิ
+ทวี วาศประเสริฐ
+ทวี ศิริ
+ทวี สำราญวงษ์
+ทวี สุโกศล
+ทวี โห้ไทย
+ทวี อุตสาหตัน
+ทวีชัย จิรแสงทอง
+ทวีชัย เบญจางคประเสริฐ
+ทวีชัย วิริยะวงศ์สกุล
+ทวีทรัพย์ ช้างแก้ว
+ทวีป เขียวสนั่น
+ทวีป เนตรนิยม
+ทวีป ไวยดี
+ทวีผล วงศ์เลื่อยฤทธิ์
+ทวีพร นิมิตรวรพจน์
+ทวีพัฒน์ คล่องกิจโรจน์
+ทวีลักษณ์ เทพหัสดิน ณ อยุธยา
+ทวีวรรณ พรหมมานนท์
+ทวีวัฒน์ ภูมี
+ทวีศรี อัตตะนันทน์
+ทวีศักดิ์ เข็มเพ็ชร์
+ทวีศักดิ์ จิรบุญวณิชย์
+ทวีศักดิ์ ซอเซวี
+ทวีศักดิ์ ตันแสนทอง
+ทวีศักดิ์ ธรรมนิภา
+ทวีศักดิ์ บุญโพธิ์
+ทวีศักดิ์ พระสว่าง
+ทวีศักดิ์ มหชวโรจน์
+ทวีศักดิ์ ลิขิตชัชวาลกุล
+ทวีศักดิ์ วิวัฒนขจรสุข
+ทวีศักดิ์ สกุลพฤกษ์
+ทวีศักดิ์ สุภสิทธิ์มงคล
+ทวีศักดิ์ อนุสนธิ์
+ทวีศิลป ทิพโกมุท
+ทวีสิน ชินะพัฒนวงศ์
+ทวีสุข อมรสินวรชัย
+ทวีแสง ไหลวัฒนชัย
+ทศนารถ ภวภูตานนท์
+ทศพร ตุลาธรรมกิจ
+ทศพร มหาดไทย
+ทศพร เหล่าอินทร์
+ทศพล ทนทาน
+ทศพล สินแน่นดำรง
+ทหาร ขำหิรัญ
+ทอง นาคนาวา
+ทอง เหมือนเดช
+ทองขาว จิตร์ภักดี
+ทองคำ แก้วบัวดี
+ทองคำ โชควิบูลย์เจริญ
+ทองคำ ธรรมปัญญา
+ทองคำ ผ่องใส
+ทองคำ ยอดเงิน
+ทองคำ ศิริโส
+ทองคำ อรุณศิริ
+ทองจันทร์ ทาวงษ์
+ทองชุบ นิลพลับ
+ทองดี คชาไพร
+ทองดี ดนตรีเสนาะ
+ทองดี บำรุงสิน
+ทองดี โพธิ์เผือก
+ทองดี วิเศษฤทธิ์
+ทองดี หรรษคุณารมณ์
+ทองทวี พิมเสน
+ทองธัช ทองประสานคุณ
+ทองปลิว กิจแจ่มเลิศ
+ทองปอน แสนปะทะ
+ทองพันธ์ ใจแก้ว
+ทองพูน ทรัพย์สงวน
+ทองพูน สุทัศน์
+ทองม้วน กระบิลสิงห์
+ทองมา จอมคำสิงห์
+ทองยวน แจ่มวงษ์
+ทองย้อย ปานย้อย
+ทองยุ้น ประเสริฐศักดิ์
+ทองล้อม เส็งสมาน
+ทองศูนย์ ผากา
+ทองสี สังคีรี
+ทองสุก ศรีนาค
+ทองสุข จันทะสอน
+ทองสุข แดงชาติ
+ทองสุข บุญญาเสนีย์กุล
+ทองสุข พิศเพียงจันทร์
+ทองสุข รัตนโภคา
+ทองสุข สังข์สวน
+ทองสุข อยู่ใจเย็น
+ทองหยอด ผึ่งผดุง
+ทองหล่อ ไกรทอง
+ทองหล่อ เตชะวิเศษ
+ทองหล่อ พลับอินทร์
+ทองหล่อ ลือหมู่
+ทองหล่อ อดทน
+ทองอยู่ แก้วพันธ์พงษ์
+ทองอยู่ ธนังเลิศมาลัย
+ทองอยู่ วีระวัฒนโยธิน
+ทองอวบ อุตรวิเชียร
+ทองอินทร์ ถาวรเจริญ
+ทองฮวย ธรรมสโร
+ทองเจือ เทียมอุทัยสกุล
+ทองเจือ แสวงเงิน
+ทองเติม หาญมณี
+ทองเปลว ไพฑูรย์รัตน์
+ทองเพียร ตันชะ
+ทองเล็ก ไม้ตราวัฒนา
+ทองเอิบ เพ็งแจ่มศรี
+ทองแถม พรมพงษ์
+ทองใบ กลิ่นสุคนธ์
+ทองใบ ชัยเจริญ
+ทองใบ ธรรมสาร
+ทองใบ พรหมปั้น
+ทองใบ รอดบุญชัง
+ทองใบ สาหร่ายทองคำ
+ทองใส บัวมวง
+ทอสรวง สภานุชาต
+ทักษณี ชื่นสำราญ
+ทักษิณา สถิตย์กุล
+ทัดทร บุญเทา
+ทันใจ ตาลาวนิช
+ทับทิม บัลลังค์โพธิ์
+ทับทิม องค์การ
+ทัศนชัย ศิริไพพรรณ
+ทัศนัย เขมเกษม
+ทัศนัย วัชรเกื้อ
+ทัศนา แซ่เล้า
+ทัศนา สิงคะเนติ
+ทัศนี ฉายรังษี
+ทัศนียา ทรรศนกุลพันธ์
+ทัศนีย์ กิตติศิลากร
+ทัศนีย์ คุณาพิส
+ทัศนีย์ จิตราจุลนันท์
+ทัศนีย์ ชัยกุล
+ทัศนีย์ แซ่ลี้
+ทัศนีย์ ตันตินีรนาท
+ทัศนีย์ ทักธิการ
+ทัศนีย์ นาควิลัย
+ทัศนีย์ ประมูล
+ทัศนีย์ พรหมชู
+ทัศนีย์ เพชรแก้วกุล
+ทัศนีย์ มาสณี
+ทัศนีย์ รัตนอุดม
+ทัศนีย์ เล็กคง
+ทัศนีย์ วิริยะเวสม์กุล
+ทัศนีย์ ศิริโสภานนท์
+ทัศนีย์ สิริวิเศษวรกุล
+ทัศนีย์ เสรีพกกะณะ
+ทัศนีย์ อนุตรินทร์
+ทัศนีย์ เอี่ยมสกุล
+ทัศพร พรสุธารักษ์
+ทัศไนย บัญญัติทัศไนย
+ทาบ ผลโพธิ์
+ทำนิ วิไลรัตน์
+ทิฆัมพร ชิ้นศิริกุล
+ทิชากร ชมเดช
+ทิน พัดชา
+ทินกร ทีเก่ง
+ทินกร ลิมปนสุทธิพงศ์
+ทินกรณ์ จันทร์พลับ
+ทิพพวัล เพ็งสอาด
+ทิพยญาณ วิชยานนท์
+ทิพย์ภาพร บุญเจริญยศ
+ทิพย์รัตน์ พงศ์คำ
+ทิพยวรรณ ฟุ้งลัดดา
+ทิพย์วรรณ จิรชนานนท์
+ทิพย์วรรณ พรหมวราทร
+ทิพย์วรรณ สุวรรณพิมล
+ทิพย์วัลย์ ธีรธวัชกุล
+ทิพย์วารี มิ่งขวัญปิยะกุล
+ทิพย์สุดา ใบมรกต
+ทิพยา นวคุณวิจิตร์
+ทิพย์ จันทร์หิรัญ
+ทิพย์ แสวงลาภ
+ทิพวรรณ กรกรอง
+ทิพวรรณ จีรพันธ์
+ทิพวรรณ ทองประเสริฐ
+ทิพวรรณ พัฒนะบดี
+ทิพวรรณ ลิมปนานนท์
+ทิพวรรณ ศิริวิไลรุ่งเรือง
+ทิพวรรณ อนิวรรตพงษ์
+ทิพวัลย์ คีรีวงศ์
+ทิพวัลย์ มาลัยมาลย์
+ทิพวิมล แซ่อึ้ง
+ทิพากร ศรีชียธำรง
+ทิพาพร ศรีอาจ
+ทิพารัตน์ นิลสนธิ
+ทิม มีบุตรสม
+ทิวา จวนจวบทรง
+ทิวา วงเดือน
+ทิวาพร ฉัตรรัตนาวาณิช
+ทิวาวรรณ สิงหพัศ
+ทีเนตร อยู่สุธา
+ทุเรียน จิตตกานต์พิชัย
+ทุเรียน สิทธิภา
+เทพ งามชัยพิสิฐ
+เทพ ลีนะกนิษฐ์
+เทพชัย เจริญพร
+เทพนิรันดร์ ศรีสวัสดิ์
+เทพรัตน์ สารคาม
+เทพสุริยา อรรถวิเศษ
+เทพไทย เสนพงศ์
+เทวัน อุดมเวศย์
+เทวินทร์ มุ่งธัญญา
+เทวีรัตน์ ปาลกะวงศ์ ณ อยุธยา
+เทอดพงษ์ แซ่ตั้ง
+เทอดศักดิ์ นิทัศนานันท์
+เทอดศักดิ์ สัมฤทธิการุณ
+เทิดชัย เตชะธิการ
+เทิดไทย สุขอารมย์
+เทียน พุ่มเจริญ
+เทียนชัย เจริญกิจไพบูลย์
+เทียนชัย ปานรักษา
+เทียนชัย วัฒนโรจนกิจ
+เทียนทิพย์ จงเจตน์ดี
+เทียบ สัมจารินทร์
+เทียม เทียมอารักษ์
+เทียมจันทร์ จารุวัฒนพันธ์
+เทียมฉัตร ริ้วกงแจ
+เทียมใจ บุญถาวรวัฒน
+เที่ยง ประเสริฐสิริเจริญ
+เทเวศ แซ่ซื้อ
+แทน เทศวิลัย
+ไทย เจริญวรรักษ์
+ไทรงาม จำนงค์สูญ
+ธงชัย กนกพนาทัต
+ธงชัย เกียรติเรืองกมลา
+ธงชัย งามธนโกศล
+ธงชัย จิรัฐิติพันธ์
+ธงชัย ชัยพรพงศ์
+ธงชัย แซ่ซิ้ม
+ธงชัย ตนสกุลเดช
+ธงชัย ถุงแก้วรุ่งเรือง
+ธงชัย ธรรมวิไลวัฒน์
+ธงชัย บุญณรงค์
+ธงชัย ปิ่นแก้วประเสริฐ
+ธงชัย พานทอง
+ธงชัย ภูษณะพงษ์
+ธงชัย รอดแก้ว
+ธงชัย ลิขิตวัฒนานุรักษ์
+ธงชัย วัชระอยู่
+ธงชัย ศรีไทยรักษ์
+ธงชัย สาครสุขศรีฤกษ์
+ธงชัย สุพลธวณิชย์
+ธงชัย หาญมงคล
+ธงชัย อากาศวิภาต
+ธงชาติ พวงสุวรรณ
+ธงไชย พลวิทย์
+ธน รมยานนท์
+ธนกร ศุภกรอาภรณ์
+ธนงค์ วิจิตรโท
+ธนชัย เหลืองตระกูลสิริ
+ธนน ศรีธนาโสฬส
+ธนพงศ์ วสุเสถียร
+ธนพร เชาวนปรีชา
+ธนพร ศรีจันทร์
+ธนพล คุ้มวรชัย
+ธนพล วณิชชานนท์
+ธนพันธ์ ฟูพันธุ์อนันต์
+ธนยา วงศ์สงวน
+ธนวรรณ แซ่เตีย
+ธนวรรษ์ เสริมพาณิชย์
+ธนวัฒน์ ประสานธรรมคุณ
+ธนวัฒน์ สามกษัตริย์
+ธนวิศณ์ ภูมิไชย
+ธนสรณ์ ไชยชนะ
+ธนะ พงษ์ทนานนท์กุล
+ธนะชัย วงศ์ทองศรี
+ธนะวรรณ หมื่นสา
+ธนะเสริฐ ยลประสาน
+ธนัญชัย ราชวัลภานุสิษฐ
+ธนัติ บุรินทร์กุล
+ธนันท์ รังสีพรหม
+ธนา ชีรวินิจ
+ธนา โปษยานนท์
+ธนา สว่างกิจ
+ธนากร เตชะสมบูรณ์ผล
+ธนากร สัจจพจน์โสภณ
+ธนาจักร์ น่วมอยู่
+ธนาธิป รัตนัย
+ธนาพร พิชัยวัฒน์โกมล
+ธนาภรณ์ รัตนเสน
+ธนารัช สิริภูมิรัตนานนท์
+ธนาวัฒน์ พิธุวรรณ
+ธนาศักดิ์ วัตราเศรษฐ์
+ธนิดา จินตนวิศิษฐ์
+ธนิต เขียวเงิน
+ธนิต เทพจิตร
+ธนิต มาศรีนวล
+ธนิต สุกันยา
+ธนิตร เนาวศักดิ์
+ธนินทร์ ประเสริฐกาญจน์
+ธนิศร์ อิศราธิกูล
+ธนียา หรยางกูร
+ธนู ฉุยฉาย
+ธนู ฟองกุนฑล
+ธนู หงษ์ดำเนิน
+ธนเดช สุขวัฒนาพร
+ธรณินทร์ กองรักษเวช
+ธรรมณพ เกตุทอง
+ธรรมนูญ คล้ายกรูฏ
+ธรรมนูญ ทัศน์ศรี
+ธรรมนูญ พิชัยศรแผลง
+ธรรมนูญ ศรีชะฎา
+ธรรมนูญ อังศุสิงห์
+ธรรมรักษ์ ทินกร ณ อยุธยา
+ธรรมรัตน์ สังข์ศรีแก้ว
+ธรรมศักดิ์ แม้นมินทร์
+ธรวิสิทธิ์ โชคสัมฤทธิ์ผล
+ธราพงษ์ เคลืองาม
+ธวัช กันต์มิตรี
+ธวัช จอมสง่า
+ธวัช ชั้นเสวิกุล
+ธวัช ตันติปิฏก
+ธวัช ธีรภานุมาศกุล
+ธวัช บุตรยี่
+ธวัช แพใหม่
+ธวัช รัฐประดิษฐ์
+ธวัช วัชรเดชสุวรรณ
+ธวัช สัญญะวิรี
+ธวัช แสนมนตรีกุล
+ธวัช อินแตง
+ธวัชชัย กิมยงค์
+ธวัชชัย คามจินดา
+ธวัชชัย จิตประภาจิณ
+ธวัชชัย ชั่งทอง
+ธวัชชัย ซุ้นซิ่ม
+ธวัชชัย ดีระพันธ์กุล
+ธวัชชัย โตสิตระกูล
+ธวัชชัย ไทยวัฒนา
+ธวัชชัย นาประดิษฐ์
+ธวัชชัย ปัญจรักษ์สกุล
+ธวัชชัย พวงจันทรทิพย์
+ธวัชชัย ฟุ้งเจริญกุล
+ธวัชชัย รติสราญจิต
+ธวัชชัย ลี้ภูมิวนิชย์
+ธวัชชัย วัฒนะ
+ธวัชชัย ศรีวิบูลย์
+ธวัชชัย สราญณิยธรรม
+ธวัชชัย สุนทรกิติ
+ธวัชชัย เหลืองสมอุไร
+ธวัชชัย อิสระนิมิตร
+ธวัฒชัย พิพัฒน์ศิริขจร
+ธัช รัตนทุมมา
+ธัชพล พวงกนก
+ธัญญรักษ์ กุฐินพัฒน์
+ธัญญะ เจริญสุข
+ธัญญา นาคสิเนหผล
+ธัญญา อ่วมเจริญ
+ธัญทิพย์ เล้าวัฒนา
+ธัญยธรณ์ ลักขุนทด
+ธัญลักษณ์ สุวรรณปัทม
+ธันยธร ก้องวิริยะไพศาล
+ธันวดี เครือวัลย์
+ธาดา เกษมสุวรรณ
+ธาดา เลิศสินส่งเสริม
+ธาตรี ดาราเย็น
+ธานันท์ มงคลวราภรณ์
+ธานินทร์ แซ่จึง
+ธานินทร์ พริ้งมงคล
+ธานินทร์ ศรีสุข
+ธานี กลิ่นเกษร
+ธานี โตอดิเทพย์
+ธานี เพิ่มพึ่งรัตน์
+ธานี วาจางาม
+ธานี เหล็งขยัน
+ธารทิพย์ ณ สงขลา
+ธารลักษณ์ หวังธีรพงศ์
+ธารา โรจน์ลือชัย
+ธารารัตน์ พงษ์โสภา
+ธาริณี เสือศรีเสริม
+ธารี สังเนตร์
+ธำรง เจียมประเสริฐบุญ
+ธำรง ภูวประเสริฐ
+ธำรงค์ กาญจนประภาส
+ธำรงค์ มูลเงิน
+ธำรงศักดิ์ ธำรงเลิศฤทธิ์
+ธิดา คุ้มเขว้า
+ธิดา ผลคิมหันต์
+ธิดา สุชาติ
+ธิดารัตน์ กุศลจิตภรณ์
+ธิดารัตน์ สมพันธ์
+ธิติ ทางอนันต์
+ธิติพงศ์ เศรษฐีสมบัติ
+ธิติมา ลาภศรีมงคล
+ธิภาพร ชุณหจิรัฐติกาล
+ธีร ศรแก้ว
+ธีรชัย เดโชพล
+ธีรชัย เศรษฐชาตนันท์
+ธีรดา แซ่ลิ้ม
+ธีรนารถ ปาลกะวงศ์ ณ อยุธยา
+ธีรพงศ์ ดวงเนตร
+ธีรพงษ์ โคจรานนท์
+ธีรพงษ์ รัตนเสถียร
+ธีรพร คุณาทรวัฒนกุล
+ธีรพล เตี๋ยพัฒนกิจ
+ธีรพล สันติวนานนท์
+ธีรพันธ์ พัชรประภากร
+ธีรยศ ชัยเสนะบัณฑิต
+ธีรยุทธ ปรัชญาบำรุ
+ธีรยุทธ อัจจิมารังษี
+ธีรวรรณ วัชรสินธุ์
+ธีรวัฒน์ เตชะสุริยะมณี
+ธีรวัฒน์ ศรีสุข
+ธีรวิทย์ บวรบุญสุข
+ธีรวุฒิ พงศ์เศรษฐไพศาล
+ธีรศักดิ์ จิรวิริยวงศ์
+ธีรศักดิ์ ภิสัชเพ็ญ
+ธีรศักดิ์ อาภาสกุลเดช
+ธีระ คำสา
+ธีระ ไชยรัตน์
+ธีระ ทรัพยรุ่งทวีผล
+ธีระ นิลแจ้ง
+ธีระ พิกุลน้อย
+ธีระ ริมพนัส
+ธีระ วิภูชนิน
+ธีระ สิงหพันธุ์
+ธีระ อนันต์มานะ
+ธีระชัย เกตุตรีกรณ์
+ธีระชัย พันธุลาภ
+ธีระชาติ เลิศบวรวงศ์
+ธีระพงศ์ วัฒนพิทยกุล
+ธีระพงษ์ พลมั่น
+ธีระพร วีระถาวร
+ธีระพล รอบำรุง
+ธีระพันธุ์ วัฒนพันธุ์
+ธีระยุทธ แซ่เล้า
+ธีระวงศ์ แซ่อึ้ง
+ธีระวัฒน์ ศศิธร
+ธีระศักดิ์ กาสาวพานิชย์
+ธีระศักดิ์ บุญเฉลียว
+ธีระศักดิ์ สิงหโรจนากุล
+ธีระเดช ตรีทศายุธ
+ธีรา รุ่งโรจน์
+ธีราลักษณ์ ยมะสมิต
+ธีรเดช เลิศวิไลกุลนที
+ธเนต เปลี่ยนนุช
+ธเนศ ฉายรังษี
+ธเนศ ธาณาธะระนิต
+ธเนศ มีเดช
+ธเนศ ศักดิ์ชัยสมบูรณ์
+ธเนศพล ศุกลกานต์
+เธนตร พิมพ์จันทร์
+เธียรชัย ฝากลาภ
+เธียรไชย ศันสนะกุล
+นกเล็ก ทับนาโคก
+นกแก้ว วงศ์ส่ายถนอม
+นคร ชัยสมบูรณ์พันธ์
+นคร บุตรโพธิ์
+นคร ยิ้มศิริวัฒนะ
+นคร สงคราม
+นคร อินทร์สุข
+นคเรศ ทนงศักดิ์มนตรี
+นงคราญ เขื่อนแก้ว
+นงคราญ วีระพานิชเจริญ
+นงค์เยาว์ ธรรมนิธา
+นงนาฏ นิพนธ์ศักดิ์
+นงนุช กอสกุล
+นงนุช จันทร์หอม
+นงนุช แซ่ตั้ง
+นงนุช ทับศรี
+นงนุช ประกอบเพ็ชร
+นงนุช ไพฑูรย์มงคล
+นงนุช ลาภศรีวิวัฒน์
+นงนุช ศัลย์วิเศษ
+นงนุช สุวรรณกนิษฐ
+นงนุช อุณห์ไวทยะ
+นงพุธ ชื่นชม
+นงลักษณ์ กิตติศักดิ์ไพรัช
+นงลักษณ์ จริยพฤทธิพงศ์
+นงลักษณ์ ช่วยวงษ์ญาติ
+นงลักษณ์ ฐิติวร
+นงลักษณ์ ทองอัศวิน
+นงลักษณ์ บุญญวัฒน์
+นงลักษณ์ พรสืบวงศ์
+นงลักษณ์ ภู่สุบิน
+นงลักษณ์ โรจน์กุลขจร
+นงลักษณ์ วิทยาวิศวสกุล
+นงลักษณ์ สมแก้ว
+นงลักษณ์ สุลาวรรณ
+นงลักษณ์ อรชร
+นงเยาวดี ไพทีกุล
+นงเยาว์ จันทมาศ
+นงเยาว์ แซ่โซว
+นงเยาว์ ธิติไพศาล
+นงเยาว์ พรหมไกรวร
+นงเยาว์ เมนะเศวต
+นงเยาว์ วานะรินทร์
+นงเยาว์ สุกใส
+นงเยาว์ อุทัย
+นที จึงประสิทธิ์พร
+นที เมฆกัลจาย
+นทีทิพย์ รัตติธรรม
+นนทพร อุดมมาก
+นนทิยา ดิถีเพ็ง
+นพ โชติกเสถียร
+นพกร จิตโตภาษ
+นพคุณ วงษ์สวรรค์
+นพณรงค์ แก้วจำลอง
+นพดล ไกรแสง
+นพดล จุฑาธิปัตย์
+นพดล แซ่ตั้ง
+นพดล โตเจริญธนาผล
+นพดล นิลกาเด็ด
+นพดล ปัทมะ
+นพดล พิเดช
+นพดล มิ่งลดาพร
+นพดล ฤทธิ์เทพ
+นพดล เวชวิฐาน
+นพดล สังข์ศิรินทร์
+นพดล หลาวทอง
+นพดล อุชชิน
+นพปฎล จงสกุลนิรันดร์
+นพพร เครือแก้ว
+นพพร ตุงคะรักษ์
+นพพร ประโมจนีย์
+นพพร รัตนวิศิษฎ์กุล
+นพพร ศาสตร์ขำ
+นพพร อินทรสวัสดิ์
+นพพล หมวดจันทร์
+นพมณี แซ่โง้ว
+นพมาศ ไวยรัชพานิช
+นพรัตน์ เขื่อนชัย
+นพรัตน์ ไชยรัตน์
+นพรัตน์ บุญพรพิมล
+นพรัตน์ ยี่อำพันธ์
+นพรัตน์ สมบัติประชากร
+นพรัตน์ อารยะนรากูล
+นพวรรณ คงมะกล่ำ
+นพวรรณ ถาวรวิสิทธิ์
+นพวรรณ ภักดีดำรงฤทธิ์
+นพวรรณ สินตั้งวงษ์
+นพวัลย์ สัมพันธ์สุขศรี
+นพเก้า สุขสิน
+นภดล ไทยธัญญพานิช
+นภดล สุวรรณมณี
+นภัส รัตนไพฑูรย์
+นภา จามีกรกุล
+นภา โต๊ะสมัน
+นภา ภาคาวัลย์
+นภา ศรีกัณฑิมารักษ์
+นภา เอี่ยมละออ
+นภาพร เกียรติชัยทรัพย์
+นภาพร ชลบุษปกุล
+นภาพร ดวงสร้อยทอง
+นภาพร นอบน้อมธรรม
+นภาพร พจนะศิลป
+นภาพร เมตตพันธุ์
+นภาพร วงศ์กุดั่น
+นภาพร สถิรานุวัฒน์
+นภาพร หอมขจร
+นภาพรรณ เตชะพิริยะกุล
+นภาภรณ์ ทิพรัตน์
+นภาภรณ์ หะสิตะเวช
+นภาลัย สุวรรณธาดา
+นภาศิริ ดาดาษ
+นรชัย มานิตกุล
+นรรัตน์ อนุศิริ
+นรา เทพเสนา
+นราทิพย์ วงศ์วิรัตน์
+นราภรณ์ จีระประภากาญจน์
+นราวัลย์ จุลโมกข์
+นรินทรัตน์ สวัสดิวงศ์
+นรินทร์ ฉัตรเฉลิมชัย
+นรินทร์ นรินทร์
+นรินทร์ พสุนธราธรรม
+นรินทร์ ลิ้มสร้อยเพ็ชร
+นรินทร์ สุจิตโต
+นรินทิพย์ โกมุทกุล
+นริศ ธีรพรพงศ์
+นริศ สนใจ
+นริศรา ตรีวรรัตนกุล
+นริศรา อุษาไพรพรรณ
+นริส อารีย์
+นรีทิพย์ ทุ่งกาวี
+นรเศรษฐ์ อิศรางกูร ณ อยุธยา
+นฤดี หิรัญบูรณะ
+นฤนาท ลีเลิศพันธ์
+นฤพร อัครพงศ์ไพศาล
+นฤมล กาญจนถมยา
+นฤมล ขันแก้ว
+นฤมล จันทรวรเมท
+นฤมล ชัยคูณผล
+นฤมล แซ่อึ่ง
+นฤมล ตินา
+นฤมล ธนะถ้อย
+นฤมล บุญกนก
+นฤมล เปรมวุฒิ
+นฤมล พุทธนวรัตน์
+นฤมล มานะสกุลกิจ
+นฤมล รุจิหาญ
+นฤมล วรรณาไทร
+นฤมล ศิริพงศ์ตระกูล
+นฤมล สิริปรีดานนท์
+นฤมล แสนสวย
+นฤมล อรุณเจริญกุล
+นฤมิต ผลากรกุล
+นลพร ภิญโญบริสุทธิ์
+นลินทิพย์ แสนทวีสุข
+นลินี ธงนำทรัพย์
+นลินี อร่ามเรืองสกุล
+นวพร กุลวชิราวรรณ์
+นวพร วงศ์อุไร
+นวม พลับจุ้ย
+นวรัตน์ เจริญธนาวัฒน์
+นวรัตน์ ปุกหุต
+นวรัตน์ สงวนเสรีพานิช
+นวล วัยมุข
+นวลจันทร์ จอมแสง
+นวลจันทร์ ตังคบดี
+นวลจันทร์ บุญพจนสุนทร
+นวลจันทร์ โภคา
+นวลจันทร์ ศรีรุ่งโรจน์
+นวลจันทร์ อารีศรีวัฒนาวงษ์
+นวลฉวี บัวครื้น
+นวลตา พัฒนสิงห์
+นวลน้อย กนิษฐสุต
+นวลน้อย สุขวานิชย์เจริญ
+นวลปราง ชัยทน
+นวลพร ภาณุมาภรณ์
+นวลพรรณ สำรองทรัพย์
+นวลฤดี เต็มฤทธิวงศ์
+นวลละออ เลค
+นวลศรี ฉวีพิศาล
+นวลศรี ริจิรวนิช
+นวลศิริ จงเจริญรุ่งโรจน์
+นวลอนงค์ เจริญผล
+นวลอนงศ์ ธรรมสุจริต
+นววรรณ กิจเจริญวงศ์
+นอลเดวซิงห์ จาวลา
+น้อม ทรัพยัย
+น้อมจิตต์ พึ่งพร
+น้อย คงศิลา
+น้อย ชูดวง
+น้อย ตรีพรไพรัช
+น้อย นุชชัย
+น้อย พัฒพิบูลย์
+น้อย ยรรยงพาณิชย์
+น้อย โวหาร
+น้อย สุดหล้า
+น้อย ฮามิค
+นักรบ หลิ่มวิรัตน์
+นัฎดา ศรีล้อมลาภ
+นัฐกิตติ แซ่เจียม
+นัฐยา อนุดิษฐ์
+นัดดา โพธา
+นัทธมน แตงพุก
+นัน พันเดช
+นันทกา พาสุนันท์
+นันท์ชนก ชาวเรือ
+นันทนา ครองบุญศรี
+นันทนา ซาอะดี
+นันทนา ธรรมสุวรรณ์
+นันทนา พรทรานนท์
+นันทนา ราตรีโชติ
+นันทนา ศิลาสัย
+นันทนา อนันต์ธโนดม
+นันทนี เตชะมโนรมย์
+นันทพร ชัยวรทร
+นันทพร รื่นไวย
+นันทพล ทองคำ
+นันทยา โปร่งแสงธรรม
+นันทรา ฤดีขจร
+นันทวรรณ บูรณประพฤกษ์
+นันทวัฒน์ คนิยมเวคิน
+นันทวัน เจียรอุดมทรัพย์
+นันทวัน ภูริศรี
+นันทวัน อิสระมาลัย
+นันทสาร จันทร์เพ็ญ
+นันทา ชินธรรมมิตร์
+นันทา บุญทวีสกุล
+นันทา รัตนไชย
+นันทา สุขเจริญ
+นันทิกา วิริยะสาโรจน์
+นันทิภา รัตนเพียรชัย
+นันทิยา นำเกียรติวงษา
+นันทิยา ศักดิ์ฉันทอำพน
+นันท์ เรืองตระกูล
+นัยน์รัตน์ เทียมทัศน์
+นัยนา แซ่คู
+นัยนา ปอประสิทธิ์
+นัยนา ลีนะธรรม
+นัยนา สุวรรณทอง
+นัสติยา บุญพิทักษ์
+นาคิน เพชรรักษ์
+นาฎยา อดิเรกฤทธิรณ
+นาฏยา ฤทธิ์เขียว
+นาตยา คงเขาม่วง
+นาตยา นิยม
+นาตยา ศรีสุบิน
+นาตอนงค์ ชื่นบาน
+นาถฤดี สวัสดิ์พร้อม
+นานา แซ่ถัว
+นารถ ธาระพุทธ
+นารา โสมะนันทน์
+นารี ครองสัตย์
+นารี เตชะสุภากูร
+นารี พันธ์ดี
+นารี ศักดิ์เสรีชัยกุล
+นารีนารถ ฉิมภู่นุ่ม
+นารีรัตน์ ธนาสุวรรณดิถี
+นารีรัตน์ สีเหล็ก
+นาวิน กระต่ายจีน
+นาวิน หล่อลักษณ์
+นาเวส ยังน้อย
+นำชัย ทิพชาติโยธิน
+นำชัย อื้อเศรษฐศักดิ์
+นำลาภ เบ้าสุวรรณ
+น้ำ ชลสายพันธ์
+น้ำทิพย์ จันทกนก
+น้ำทิพย์ ภาระเวช
+น้ำผน ระเบียบ
+น้ำฝน วิบูลชาติ
+น้ำเชี่ยว จินดาพันธ์
+นิกร กังวาราวุฒิ
+นิกร นวปรีชากุล
+นิกร เลิศชามพูนท
+นิกรม พึ่งขำ
+นิคม คำเผื่อน
+นิคม เตวัฒตานนท์
+นิคม พงศ์ไทย
+นิคม รุ่งเรือง
+นิคม สุขสุมิตร
+นิจ ยุชมภู
+นิชญา โกวิทคณิต
+นิด แซ่ตั้ง
+นิดดา วสะภิญโญกุล
+นิดา ผ่องอารมณ์
+นิดาวรรณ ฐิตรัตนพล
+นิตย์ประภา อดุลเดชจรัล
+นิตยา การสามารถ
+นิตยา ขวัญฤกษ์
+นิตยา งั่นบุญศรี
+นิตยา จิรประภาพร
+นิตยา ชรินทราวุฒิ
+นิตยา ไชยมงคล
+นิตยา แซ่เป๊
+นิตยา ตั้งจิตนบ
+นิตยา ทวีโต
+นิตยา ธำรงวิทวัสพงศ์
+นิตยา เนียมคง
+นิตยา ประคอง
+นิตยา แผ่นทอง
+นิตยา พิลาแดง
+นิตยา ภู่ยอดยิ่ง
+นิตยา โมฮำมัสอีสมาอีล
+นิตยา เรืองดารกานนท์
+นิตยา วงศ์ปรีดี
+นิตยา วิภาตะโยธิน
+นิตยา ศาลยาชีวิน
+นิตยา สังข์ทอง
+นิตยา สุทธิศิริ
+นิตยา แสงแดง
+นิตยา อยู่นิ่ม
+นิตยา อุดมรัตนานนท์
+นิตย์ แก้วฉาย
+นิตย์ ถี่ถ้วน
+นิตย์ ภู่ใจเที่ยง
+นิตย์ สุนทรอนันตกุล
+นิติ ฉ่ำผึ้ง
+นิติกร สถิตฤทธานันท์
+นิติพร ทองนุ่ม
+นิทธิรา ฟักแย้ม
+นิทัศน์ กังแขก
+นิทัศน์ ประเสริฐเนติกุล
+นิทัศน์ อภิชาติบุตร์
+นิธิชัย ไชยธวัช
+นิธิมา ชาคริตฐากูร
+นิธี เมฆสุทัศน์
+นิพนธ์ กรเกษม
+นิพนธ์ ไกรลักษณ์
+นิพนธ์ จันทร
+นิพนธ์ ชาญอักษร
+นิพนธ์ ดาราวรรณ์
+นิพนธ์ ทศรงค์
+นิพนธ์ นิ่มใหม่
+นิพนธ์ ประสงค์สัมฤทธิ์
+นิพนธ์ พฤฒิคามภีร์
+นิพนธ์ ภวสันต์
+นิพนธ์ โยมา
+นิพนธ์ ลีลาวิลาส
+นิพนธ์ วิลาลัย
+นิพนธ์ สงวนนาม
+นิพนธ์ สุขสมาน
+นิพนธ์ หงส์วิจักษณ์
+นิพนธ์ อัศวสงคราม
+นิพร วรฉัตร
+นิพัฒน์ ขนอนเวช
+นิพัทธ์ ทองเล็ก
+นิพันธ์ เนียมวงศ์
+นิพิฐ อรุณวงษ์ ณ อยุธยา
+นิภา แก้วหอม
+นิภา จันทิมา
+นิภา ช่างนาค
+นิภา แซ่อึ้ง
+นิภา ถกลวิโรจน์
+นิภา นนทชีวา
+นิภา ปรีชาตั้งกิจ
+นิภา พันธมิตร
+นิภา โภคารักษ์
+นิภา รุจิระกิติวกูล
+นิภา วรไกวัล
+นิภา ศรีสวัสดิ์
+นิภา สิริมหาสุวัฒน์
+นิภา หาญเกิดสิริ
+นิภา อินพัตรา
+นิภาพร จงจรวยสกุล
+นิภาพร บัวทอง
+นิภาพร ศักดิ์แสน
+นิภาพรรณ พงศ์ไพโรจน์
+นิภาภรณ์ เชิญรุ่งโรจน์
+นิภาภรณ์ สุขสวัสดิ์
+นิภาวรรณ ทรงศิลป์
+นิมน ตุ่มศิริ
+นิมิต สุริหาร
+นิมิตร น้อยเจริญ
+นิมิตร แสงอำไพ
+นิ่มนวล เกศวรางกูร
+นิ่มนวล ศุภษร
+นิยดา ภู่อนุสาสน์
+นิยม จนิษฐ์
+นิยม แดงเอี่ยมเอก
+นิยม นิลสุวรรณ์
+นิยม พิพัฒน์ศานต์
+นิยม เลิศสำราญเริงรมย์
+นิยม สุภาพ
+นิยมศรี สารสุข
+นิรชา โยธินอุปไมย
+นิรมล จงชาญสิทโธ
+นิรมล ตันติพันธ์วดี
+นิรมล พัฒนสุวรรณ
+นิรมล วยากรณ์วิจิตร
+นิรมล หล่อรุ่งโรจน์
+นิรักษ์ ลิ้มแหลมทอง
+นิรัตน์ พรหรรษาวิจิต
+นิรันดร พวงพุด
+นิรันดร์ จอนแจ้ง
+นิรันดร์ ทองน้อย
+นิรันดร์ พันทรกิจ
+นิรันดร์ โล้สกุล
+นิรันดร์ สุขศรีจักรวาฬ
+นิรันต์ เฉยรอด
+นิรุฒน์ ตันอนุชิตติกุล
+นิรุธ แย้มโชติ
+นิลบล ทูรานุภาพ
+นิลวรรณ พงษ์เผือก
+นิลุบล โกไศยกานนท์
+นิว แซ่เจียง
+นิวัฒน์ คงชื่น
+นิวัฒน์ ตันจิรวัฒนา
+นิวัฒน์ พันธ์พุ่ม
+นิวัฒน์ วัฒนาเจริญศิลป์
+นิวัฒน์ อริยพฤกษ์
+นิวัตน์ ภูติกนิษฐ์
+นิวัตร์ นิยมไทย
+นิวัติ ผลธัญญา
+นิวัติ ห่านตระกูล
+นิศา เจียมรุจีกุล
+นิศากร ปิจเจริญ
+นิศานาท ธรรมดำเกิง
+นิษฐกานต์ เย็นพระพาย
+นิสัย อรรถไกวัลวที
+นิสา ปิยะพันธ์
+นิสากร เกียรติก้องขจร
+นิสารัตน์ เตชาวัฒนวิศาล
+นิสิตา พรมพิลา
+นิเวศ เจิ่งมโนธรรม
+นิเวศน์ นาคสมบูรณ์
+นิโน อินเตอรันเต
+นิไกล โยปัง
+นีรมล สุนทรนนท์
+นุกร วรากูลศิริวรรณ
+นุกูล แซ่ลิ้ม
+นุกูล พฤกษวัน
+นุกูล สุขสม
+นุจรินทร์ สินวนาทรัพย์
+นุช คลองน้อย
+นุชจรินทร์ เจวินนุกุล
+นุชจรี ทองธรรมชาติ
+นุชจารี คล้ายสุวรรณ
+นุชนาจ พลทมิฬ
+นุชนาฎ โสภา
+นุชนาถ เกิดเพิ่ม
+นุชนาถ ศีสังข์
+นุชนารถ ทรัพย์สุทธิ
+นุชนารถ ใสสุทธิ์
+นุชรินทร์ แว่นประทุม
+นุชรีย์ สุขเกียรติภัย
+นุชิต เจริญพานิช
+นุมาน ยิ่งนิยม
+นุศรา พรกฤษฎากุล
+นุสรา จันทร์เจิดสุริยะ
+นุสรา เพ็ชรประพันธุ์กุล
+นุสรา อัศวนัยกิจ
+นเรนทร์ ดิสระพงษ์
+นเรศ ทองแก้ว
+นเรศ ศรพรหม
+นเรศร์ ธรรมสาลี
+เนตร ศรีสุวรรณ
+เนตรทิพย์ ชินลาภากุล
+เนตรนภา หวังสินสุจริต
+เนตริกา เกตุประดิษฐ์
+เนรมิต ศรีจำนง
+เนาวรัตน์ กำลัง
+เนาวรัตน์ เซ็นสาส์น
+เนาวรัตน์ นพเสถียร
+เนาวรัตน์ พิพิธวรรณ
+เนาวรัตน์ วัฒนาภา
+เนาวรัตน์ แสวงศักดิ์
+เนาว์ สุดใจธรรม
+เนียม บำรุงประเสริฐ
+เนี้ยว แซ่เล้า
+เนื้อทิพย์ จันทร์โปร์
+แนบ โสตถิพันธุ์
+แน่งน้อย เซี่ยงผุง
+แน่งน้อย ปุ่นอุดม
+แน่งน้อย เวทยพงษ์
+แน่งน้อย อินทรรักขา
+โนรี แสงศรี
+ไน้ รอดทอง
+บงกช บุญช่วย
+บงกช เหล่าวรวิทย์
+บดินทร์ ดิลกวรโชติ
+บพิตร ดวงแก้ว
+บรรจง กุหลาบวิรัตน์
+บรรจง จันทร์ทอง
+บรรจง ชัยวิริยะวงศ์
+บรรจง ตุ่นทา
+บรรจง นามมีไชย
+บรรจง ป้องภัย
+บรรจง เพิ่มผล
+บรรจง ร่มโพธิหยก
+บรรจง วิลาสรัตน์
+บรรจง สาสะกุล
+บรรจง หรั่งเอม
+บรรจงกิจ ปิยะสันติสุข
+บรรจบ ชื่นพันธุ์
+บรรจบ ภูววีรานนท์
+บรรจะ เรือนแก้ววงศ์
+บรรณา นนทวงษ์
+บรรทึก ล้อวชิระวัฎฎ์
+บรรพต ดีรักษา
+บรรพต มหัทธนากุล
+บรรพต แสงแก่นเพ็ชร์
+บรรยง พิพัฒน์เรืองไร
+บรรยงค์ ยมแพทย์
+บรรลือ เรืองตระกูล
+บรรลุ ภูมิพันธุ์
+บรรหาร ศิลปอาชา
+บรรเจิด ชื่นกุล
+บรรเจิด ภู่ทรัพย์
+บรรเจิด แสงทอง
+บรรเทิง ขาวผ่อง
+บรรเทิง วงษ์พูล
+บรรเลิศ แซ่โค้ว
+บริบูรณ์ วาราชนนท์
+บริหารวรกิจ พระครู
+บวร ประเสริฐสฤษดิ์
+บวร เสถียรโสภณ
+บวรศักดิ์ นิ่มศิริเรืองผล
+บ๊วย ธรรมมงคล
+บักจุ้ย แซ่เฮ้ง
+บักเกียว แซ่ลิ้ม
+บักโคย แซ่ลิ้ม
+บังอร กระถินทอง
+บังอร คงถาวร
+บังอร จิตจรัสแสง
+บังอร ชื่นโชติ
+บังอร เดชผล
+บังอร ทิมโป่งแก้ว
+บังอร บัวสร้อย
+บังอร ปิยสุทธิกุล
+บังอร พุทธินันทน์
+บังอร มาสศรี
+บังอร ลวเศรษฐี
+บังอร วุ้นเหลี่ยม
+บังอร สะสิสมิต
+บังอร สุวรรณานนท์
+บังอร อติชาติ
+บังอร เฮงภู่เจริญ
+บังเอิญ เพ็งสุข
+บัญชร สุขอนันต์ชัย
+บัญชา ครุธเวโช
+บัญชา ชัยประสพ
+บัญชา แต้สุวรรณ
+บัญชา บุนนาคประเสริฐ
+บัญชา เพียรประสาธน์ศิริ
+บัญชา วงศ์ศรีกุล
+บัญชา สะดวกดี
+บัญชา อัจฉรามงคล
+บัญญัติ จินตนาปราโมทย์
+บัญญัติ บุญธรรม
+บัญญัติ วงษ์ประยูร
+บัญฑิต ศรกล้า
+บัณฑิต คู่ทวีธรรม
+บัณฑิต ตระการวีระเดช
+บัณฑิต บุญญาวัฒน์
+บัณฑิต โพธิ์น้อย
+บัณฑิต วรานุศภากุล
+บัณฑิต สุทธิวุฒินฤเบศร์
+บัณฑิต อุลิศ
+บัณฑิตย์ สนิทรักษา
+บัณฑูรย์ พันธุสุข
+บันลือ โยธี
+บัลลังก์ นาคพันธุ์
+บัว พุกเจริญ
+บัวขาว สุขคำ
+บัวซ่อน ทิพย์จักร
+บัวน้อย งัดสันเทียะ
+บัวผิน เปรมกมล
+บัวลอย กมขุนทด
+บัววรรณ อนีจะไพบูลย์
+บัวหลวง พรหมรักษา
+บัวเรียว เกาฏีระ
+บัวไข แจ่มอุลิตรัตน์
+บาซัมยาน มูลาคาน
+บานเย็น สถาวรสมิต
+บ้านกรรณิการ์ บ้านกรรณิการ์
+บ้านชิดตวัน บ้านชิดตวัน
+บ้านนางเลิ้ง 2
+บ้านปิยะณิดา บ้านปิยะณิดา
+บ้านมหิโคต บ้านมหิโคต
+บ้านวิจิตรศรีกมล บ้านวิจิตรศรีกมล
+บ้านสินาลักษณ์ บ้านสินาลักษณ์
+บ้านเกาะกลาง บ้านเกาะกลาง
+บ้านแก้ว บ้านแก้ว
+บำรุง คงขวัญยงค์
+บำรุง แซ่ก๊วย
+บำรุง ประภารักษ์
+บำรุง แย้มบัญชร
+บำรุง สุขสถาน
+บำเพ็ญ กุลดิลกชัย
+บำเพ็ญ สะลอยรัมย์
+บี้ แซ่ล้อ
+บุญ เฉลิมทรานุวัฒน์
+บุญ ศรีช่วย
+บุญก่อ เมธีกุล
+บุญควร เหมบุตร
+บุญจริง ตงจิตรัตน์
+บุญจันทร์ รำจวน
+บุญจิรา ดำริห์กล้า
+บุญชม คำอิ่น
+บุญช่วย กันพูล
+บุญช่วย คาวสุวรรณ
+บุญช่วย ฉิมฉวี
+บุญช่วย แซ่เฮ้ง
+บุญช่วย ทองสุข
+บุญช่วย เนาว์ใหม่
+บุญช่วย แป้นเหมือน
+บุญช่วย เพียรดี
+บุญช่วย ยูนชุ่ม
+บุญช่วย วัฒนาวงศ์
+บุญช่วย สังข์แป้น
+บุญช่วย แสงทองประดิษฐ์
+บุญช่วย อุดมตระกูลวงศ์
+บุญชอบ ทองแก้ว
+บุญชอบ อุดมประมวล
+บุญชัย ขันติญานุวัฒน์
+บุญชัย จีระไพโรจน์กุล
+บุญชัย ชุติอนุสรณ์ชัย
+บุญชัย แซ่โค้ว
+บุญชัย เติมทรัพย์ถาวร
+บุญชัย นิลรพีเกียรติ
+บุญชัย ปรีชาพันธ์
+บุญชัย เพชรพลอยงาม
+บุญชัย เรียงวิไลกุล
+บุญชัย วรกิจพรสิน
+บุญชัย ศรีสุภร
+บุญชัย สุขภิรมย์เกษม
+บุญชัย เหล่าพากเพียร
+บุญชัย อุปถัมชาติ
+บุญชิด บุญเลิศ
+บุญชื่น ปิยะปกรณ์ชัย
+บุญชู กระถินทอง
+บุญชู งิ้วชน
+บุญชู ชัยบุญญลักษณ์
+บุญชู ตระกูลเจริญสุข
+บุญชู ธิราศักดิ์
+บุญชู ปั้นเขียว
+บุญชู โพธิสาร
+บุญชู รอดเพ็งสังค์
+บุญชู วังกานนท์
+บุญชู สมบูรณ์
+บุญชู สุวรรณชาติ
+บุญชู อึ้งกุล
+บุญญฤทธิ์ ลิขิตเจริญวัฒนะ
+บุญฑริก จันทรธารารัตน์
+บุญดี สงวนความดี
+บุญตา แซ่เวียน
+บุญตา ศักดิ์มังกร
+บุญถิ่น พงษ์ขาว
+บุญทรง เนียมโภคะ
+บุญทรัพย์ สหเทวสุคนธ์
+บุญทวี ไวยสุตรา
+บุญทอม โถปั้น
+บุญทัศน์ จรณะหุต
+บุญทิพย์ วัฒนะวิบูลย์
+บุญธรรม กลัดอยู่
+บุญธรรม จรูญศรี
+บุญธรรม แซ่ไหล
+บุญธรรม นพคุณ
+บุญธรรม ผิวเกลี้ยง
+บุญธรรม ม่วงศรี
+บุญธรรม วังเสนา
+บุญธรรม สุวรรณวิจิตร
+บุญธารี จันทรทีประ
+บุญนะ ศรีจินดา
+บุญนาค ญาณโกมุท
+บุญนาค พ่วงพร้อม
+บุญนาค สำแดงเดช
+บุญนำ ช้างมณี
+บุญนำ อยู่ดี
+บุญประสิทธิ์ กนกสิงห์
+บุญปลูก ขุมทรัพย์
+บุญปลูก รุจินาม
+บุญผ่อง รุธันว์
+บุญพันธ์ ทัศนอัมพร
+บุญพา สาริกา
+บุญมั่น ขวัญยืน
+บุญมา เขียวชอุ่ม
+บุญมา แซ่ฉั่ว
+บุญมา นวลสวาท
+บุญมา พุ่มเรือง
+บุญมา วรรณสุทธิพงศ์
+บุญมา เสือแซมเสริม
+บุญมาก ชูศรี
+บุญมี กรรณสูต
+บุญมี งามจิตรุ่งเรือง
+บุญมี ชีวสาธน์
+บุญมี ทวีตระกูล
+บุญมี บุญล้วน
+บุญมี พิษณุวงศ์
+บุญมี โยธาดึก
+บุญมี ศรมยุรา
+บุญมี สุจิตรวัฒนะสุข
+บุญมี เอี่ยมหุ่น
+บุญยง รัตนานันท์
+บุญยงค์ นามดี
+บุญยงค์ แสงมณี
+บุญยะรัตน์ คล้านสินธุ์
+บุญยัง เปียทอง
+บุญยิ่ง กฤษณะประสิทธิ์
+บุญยิ่ง ภาณุศานต์
+บุญยิน สุขมณี
+บุญยืน ทองแจ้ง
+บุญยืน รักษ์สุรวงศา
+บุญยูร อ่อนอำไพ
+บุญร่วม สุวรรณชาติกุล
+บุญรอด ไชยชนะ
+บุญรอด เนตรทิพย์
+บุญรอด มีเดชา
+บุญรอด สุขสารัญ
+บุญรักษ์ เกียรติประภาพกุล
+บุญรัตน์ เจริญพานิช
+บุญรัตน์ วรรณกิจ
+บุญรุ่ง พานิชวัฒน์
+บุญฤทธิ์ นุ้ยขาว
+บุญฤทธิ์ เอกสมสุข
+บุญล้อม ชาวกงจักร
+บุญล้อม วาณิชย์กูล
+บุญลาภ ขาวสอาด
+บุญลือ แข่งขันดี
+บุญลือ ไทรเมือง
+บุญลือ มีมาก
+บุญลือ แสงอินทร์
+บุญศรี กอบบุญ
+บุญศรี ไชยฮวดหล้ำ
+บุญศรี บัณฑุศิลาอาสน์
+บุญศรี มากรอด
+บุญศรี ศุขการค้า
+บุญศรี หลีกภัย
+บุญศักดิ์ เลิศวัฒนชัย
+บุญศิริ ยังเฟื่องมนต์
+บุญส่ง กวยรักษา
+บุญส่ง ขุนหนังสือ
+บุญส่ง จันทร์ฉายทอง
+บุญส่ง ฉันทแพทย์
+บุญส่ง ไชยสาม
+บุญส่ง ตั้งชัยฤกษ์
+บุญส่ง ทองจันทร์มูล
+บุญส่ง นัยริยสัจ
+บุญส่ง บุญอยู่คง
+บุญส่ง เปี่ยมพลาย
+บุญส่ง พานิชการ
+บุญส่ง ภู่พงศ์เพ็ชร
+บุญส่ง ใยพูล
+บุญส่ง ลุจนานนท์
+บุญส่ง วิวัฒนะชัยแสง
+บุญส่ง ศุภวัชรเสรีกุล
+บุญส่ง สาระภา
+บุญส่ง เสมทัพพระ
+บุญส่ง เหล่านพเก้าสกุล
+บุญส่ง อินทร์เหยี่ยว
+บุญสนิท ยามไสย
+บุญสม คำนวนวุฒิ
+บุญสม ชัยสุภา
+บุญสม ทองพันธุ์
+บุญสม บุญอินทร์
+บุญสม โพธิสิทธิ์
+บุญสม ลายหยก
+บุญสม สวนกุหลาบ
+บุญสม แสงเรือง
+บุญสม ฮิมสุ่น
+บุญสันติ์ ฉันทกิจโกศล
+บุญสิน สบายตัว
+บุญสืบ ทองนาก
+บุญสืบ ศาตวรรณ
+บุญสุภา กลิ่นมาลัย
+บุญหล่อ ยิ้มละมัย
+บุญอำไพ กุลสิริสวัสดิ์
+บุญเกิด แซ่ลิ้ม
+บุญเกิด รัตนประภาภาศ
+บุญเกิด อือนอก
+บุญเกียรติ วรงค์โอฬาร
+บุญเกื้อ ท่านัทธี
+บุญเจริญ ไกรกมล
+บุญเจือ รัตนสมบัติ
+บุญเชิด คันธรักษ์
+บุญเชิด เลิศนิมิตร
+บุญเต็ม จันทรเกตุ
+บุญเตือน ผ่องอำไพ
+บุญเทียน แพรนนท์
+บุญเทียม อาเพล
+บุญเนื่อง โลจะยะ
+บุญเพ็ญ พุทธประเสริฐ
+บุญเย็น บุญเรืองอนันต์
+บุญเยี่ยม อินทรไพบูลย์
+บุญเรียม ก้านขาว
+บุญเรือง ดวนด่วน
+บุญเรือง มิซากะ
+บุญเรือง เหลืองอรุณ
+บุญเรือน จันทร์บำรุง
+บุญเรือน ทวีกาญจน์
+บุญเรือน พลอยชู
+บุญเรือน วงษา
+บุญเรือน เหมะปัทมะ
+บุญเลิศ กิ่งคำ
+บุญเลิศ คารวะกุล
+บุญเลิศ เจริญสุข
+บุญเลิศ เณรแก้ว
+บุญเลิศ ทะปะสพ
+บุญเลิศ บัณฑิตวงศ์รัตน์
+บุญเลิศ เปี่ยมปิ่นเศษ
+บุญเลิศ โพธิ์อ่อง
+บุญเลิศ โยทา
+บุญเลิศ เลิศสกุลสมบูรณ์
+บุญเลิศ ศรีสุวรรณ
+บุญเลิศ สุขทอง
+บุญเลิศ เหม็งตระกูล
+บุญเลิศ เอกะวงษ์
+บุญเลี้ยง แป้นอิน
+บุญเลื่อน ศรีทรัพย์
+บุญเสริม โฆษะธรรมกูล
+บุญเสริม เนตรเก่ง
+บุญเสริม ลดาสุนทร
+บุญเสริม แสงแก้ว
+บุญเหลือ ด้วงทอง
+บุญเหลือ สินเต็ม
+บุญเอื้อ ตันยะกุล
+บุญแย้ม เกิดน้อย
+บุญโชติ ทิพย์ประเสริฐสิน
+บุญโฮม ฉายประดับ
+บุญไทย แกมวณิชกุล
+บุณธรรม พานรักษ์
+บุณรอด ศรีแพ่ง
+บุนนาค พุทพงษ์
+บุ้นหงี แซ่ด่าน
+บุบผา กุลเสวต
+บุบผา เซี้ยเจริญ
+บุบผา บุญนิธิวัฒนา
+บุบผา เพ็ชรประไพ
+บุบผา วงศ์แสนสุข
+บุบผา แสงพุ่ม
+บุปผา ก้านขาว
+บุปผา ตาฬวัฒน์
+บุปผา พานิชกูล
+บุปผา ศรีหะรัญ
+บุผา พันธ์ศรี
+บุรินทร์ นอขุนทด
+บุรี ชัยกิจไพบูลย์
+บุลเดช วิบูลผล
+บุศรา ธาราชีวิน
+บุศรา อรุณคุณารักษ์
+บุศรินทร์ ไตรวรเดชา
+บุษกร กรรมารางกูร
+บุษกร ประกาศเกตุการ
+บุษกร สันติวงค์
+บุษบง จันทรกูล
+บุษบงก์ ดิษฐจำเนียร
+บุษบา ชัยจินดา
+บุษบา เนืองนุช
+บุษบา เมชิรานุรักษ์
+บุษบา สงวนยศ
+บุษบาพรรณ อุดมวัฒน์ทวี
+บุษยา ประภายนต์
+บุษรา ชูแก้ว
+บุษราภรณ์ กิจสมุทร
+บุหงัน เจียเพิ่มพูล
+บุหงา ลายประดิษฐ
+บุหลัน วรรัตนวงศ์
+บูรณะศิลป์ บุญสุวรรณ
+บู่ อุดมศรีสำราญ
+เบญจพร ดาวอุดม
+เบญจพร สุขสังวาลย์
+เบญจมา ก้อนทอง
+เบญจมาศ คุณาชีวะ
+เบญจมาศ ทองทิพย์
+เบญจมาศ เพลินประภาพร
+เบญจมาศ ศรีบุญเรือง
+เบญจมาศ เอื้อกาญจนวิไล
+เบญจรัตน์ สิงห์สมบุญ
+เบญจวรรณ คุณณะรักษ์ไทย
+เบญจวรรณ แซ่เฮง
+เบญจวรรณ บุญวัฒน์
+เบญจวรรณ รักท้วม
+เบญจวรรณ เศรษฐบุตร
+เบญจวรรณ อารี
+เบญจา แก้วล้วน
+เบญจา วงศ์ชินชัย
+เบญจารัตน์ อิงคเวทย์
+เบิกฟ้า เกตุนุติ
+เบ็ญจพร สนธิสมบัติ
+เบ็ญจมาศ เหมหงษ์ทอง
+เบ็ญจวรรณ บัวทอง
+เบ็ญจะ บุญศิริยานนท์ชัย
+เบ็ญจา สิงหเนตร
+แบรนด์ลี เอช
+ใบ คงขุนทด
+ปกจิตต์ ประมาญ
+ปกรณ์ เจียรสุต
+ปกรณ์ บุญสินสุข
+ปกรณ์ วงศ์วิทยาภิรมย์
+ปกรณ์ อินทราวุธ
+ปชา ตีระรัตน์
+ปฏินุช วงศ์ทองศรี
+ปฏิมา กาญจนมัย
+ปฐม คล้ายสุทธิ
+ปฐม อักษรศรี
+ปฐมรัตน์ อนุรักษ์เลขา
+ปณัษฐ์ ดวงอุดม
+ปณิธาน รวมวิญญูชัย
+ปทีป ไม้งาม
+ปทุม เปี้ยวนิ่ม
+ปทุม หาญกิตติสกุล
+ปทุมพร อมรจิรพร
+ปทุมรัตน์ วิวัฒน์สวัสดิ์
+ปนัดดา แก้วศรี
+ปนัดดา นามณี
+ปนัดดา วาริธร
+ปนัสยา พอนเจริญ
+ปภัสสร โคบายาชิ
+ปรง เรืองจุ้ย
+ปรวิชย์ โอภาส
+ประกอบ กฤษสุวรรณ
+ประกอบ จันทร์ตรี
+ประกอบ ดอกแก้ว
+ประกอบ นามวงศ์
+ประกอบ พวงทองทิพย์
+ประกอบ รัตนสวัสดิ์
+ประกอบ ศิริโชตะ
+ประกอบ อนันตกุล
+ประกาย จุฬวนิช
+ประกายรัตน์ ตันธีรวงศ์
+ประการ นุชบุษบา
+ประกาส กัณฐัศแก้ว
+ประกิจ ตรีกิตตินุรักษ์
+ประกิจ ยอดยรรยง
+ประกิจ อิงภานุวงศ์
+ประกิต ธนาเจริญภิรมย์
+ประกิต วิศวกรวิศิษฏ์
+ประครอง โชคโสด
+ประคอง เจ็งน้อย
+ประคอง นิลฉาย
+ประคอง พัวพงษ์ทอง
+ประคอง โรจน์รักษ์
+ประคอง สุขพุ่ม
+ประคองศรี เจริญลาภ
+ประจง สิทธิวณิช
+ประจบ วงษ์นิ่ม
+ประจวบ แก่นจันทน์
+ประจวบ จันทรา
+ประจวบ แซ่ลี้
+ประจวบ เที่ยงบุญ
+ประจวบ บุญเอี่ยม
+ประจวบ พัชนีรัตนกรณ์
+ประจวบ มีวันดี
+ประจวบ เลี้ยงเกิด
+ประจวบ สมจิตร์
+ประจวบ แสงเสวต
+ประจวบ อุรุนานนท์
+ประจักร์ อ่ำสุข
+ประจักษ์ เจริญพัฒนานนท์
+ประจักษ์ ธาราฉัตร
+ประจักษ์ พังพานนาค
+ประจักษ์ วัฒนเดชาชาญ
+ประจักษ์ โสธรศักดิ์
+ประจำ วิเศษสมิต
+ประจิตร หามนตรี
+ประชญ มีชูศักดิ์
+ประชา กิจรัตนกาญจน์
+ประชา ชื่นแขก
+ประชา เทศทำนุ
+ประชา ป่างศรี
+ประชา ยิ้มพรพิพัฒน์ผล
+ประชา ศรีศศิวิมล
+ประชา องศ์เจริญวุฒิ
+ประชาวุฒิ โสวรวุฒินันท์
+ประชิต ธีรศาสตร์
+ประชีพ ชูพันธ์
+ประชุม ชวลิต
+ประชุม บัวเขียว
+ประชุม มุกดากรรณ์
+ประชุม สวัสดิวงศ์
+ประชุม เอี่ยมละออ
+ประณต บุนนาค
+ประณีต จิตตินันทน์
+ประดับ จิตติมาพร
+ประดับ พุ่มสุวรรณ์
+ประดับ โสภณกิตยาภรณ์
+ประดิษฐ จันทรา
+ประดิษฐ เลิศวิชา
+ประดิษฐ์ กลิ่นหอมรื่น
+ประดิษฐ์ จงสืบพันธ์
+ประดิษฐ์ ชูพึ่งอาตม์
+ประดิษฐ์ ทองพสิฐสมบัติ
+ประดิษฐ์ บุญมาก
+ประดิษฐ์ พรรณาโส
+ประดิษฐ์ มหพันธ์
+ประดิษฐ์ ลิมปิราษฎร์
+ประดิษฐ์ เวสารัชชนนท์
+ประดิษฐ์ สังข์สว่าง
+ประดิษฐ์ แสวงศักดิ์
+ประดิษฐ์ เอกอุ่น
+ประถม อิ่มสว่าง
+ประทวน นาคพลัง
+ประทวน อรรถโกวิท
+ประทาน นันทประไพ
+ประทิน จำปาเงิน
+ประทิน เบญจพล
+ประทิน ศงสนันทน์
+ประทินทิพย์ บัวพันธุ์
+ประทีป เกิดผล
+ประทีป จงมีเสร็จ
+ประทีป ชัยเฉลิมศักดิ์
+ประทีป เตชะประภาวกุล
+ประทีป นรมั่ง
+ประทีป ประไพลักษณ์
+ประทีป พุฒิสกุลวงศ์
+ประทีป ยิ้มสาระ
+ประทีป วงศ์เลิศ
+ประทีป สนใจพาณิชย์
+ประทีป เสียงหวาน
+ประทีป อุดมผล
+ประทุม ขวัญมา
+ประทุม เจริญชอบ
+ประทุม ดีโรจน์วงค์
+ประทุม นุชนวล
+ประทุม พรหมสนธิ์
+ประทุม ยุวานนท์
+ประทุม เวณุนันทน์
+ประทุม สุขมา
+ประทุม อวยศิริ
+ประทุมพิน มุตเงิน
+ประธาน ชุณหะสันต์
+ประธาน เวชชประสิทธิ์
+ประนอม ก้องสมุทร
+ประนอม โคศิลา
+ประนอม ชนะภัย
+ประนอม ตรีวิจิตรวิวัฒน์
+ประนอม ธงสวัสดิ์
+ประนอม บุญมาเลิศ
+ประนอม พงษ์ศรี
+ประนอม โพธิยานนท์
+ประนอม ยิ้มงาม
+ประนอม วงศาธิชัยสกุล
+ประนอม สถิรสมบัติ
+ประนอม สุวรรณเครือ
+ประนอม อังคเสถียร
+ประพงศ์ วัฒนสุข
+ประพจน์ มีทรัพย์
+ประพนธ์ เกษรางกูล
+ประพนธ์ นพสิทธิศุภพงษ์
+ประพนธ์ วัดมณี
+ประพร ยังประดิษฐ
+ประพฤทธิ์ ศุภพัฒนวรกุล
+ประพัฒน์พงษ์ บำเพ็ญสิทธิ์
+ประพัฒน์ ธนะธนิต
+ประพัฒน์ ลิมป์ธีระกุล
+ประพัฒน์ อุดมโภชน์
+ประพันธุ์ ขันธโสภา
+ประพันธ์ คล้ายสุบรรณ
+ประพันธ์ ฉัตรธนาอนันต์
+ประพันธ์ เดโชธรรมสถิต
+ประพันธ์ ธานีคำ
+ประพันธ์ ประภาพิทยากร
+ประพันธ์ พิพัฒน์อนันต์
+ประพันธ์ ยุชัย
+ประพันธ์ วงศ์แสงวิบูลย์
+ประพันธ์ ศิริโชติรุ่งขจร
+ประพันธ์ สุวรรณ์
+ประพันธ์ อัญญมณี
+ประพาศ ศกุนตนาค
+ประพาฬ แสนสุข
+ประพิทย์ ไชยอุทิตย์กุล
+ประพิมพ์ พุทธิรักษ์กุล
+ประพิศ บุญรุ่ง
+ประพิศ แสงอาทิตย์
+ประพีร์ อิฏฐกรพันธ์
+ประภัศร ไชยเศรษฐ
+ประภัสร์ พิศิษฐการ
+ประภัสสร ทองคำคูณ
+ประภัสสร ลุประสงค์
+ประภัสสร เอี่ยมโอภาส
+ประภา คำเพราะ
+ประภา ชารีอัน
+ประภา ตั๋นเจริญ
+ประภา นาคนิล
+ประภา พงษ์พิพัฒน์
+ประภา มีแสง
+ประภา วิเชียรสิงห์
+ประภา สุขพันธี
+ประภา อิงคนันท์
+ประภาทิพย์ ฉ เจริญผล
+ประภาพร แซ่ลิ้ม
+ประภาพร แย้มอ่วม
+ประภาพร อุบลวิรัตนา
+ประภาพรรณ บุณยะศรี
+ประภาพรรณ อิ่มพูลทรัพย์
+ประภาภรณ์ ผินแต
+ประภารัตน์ บางภิภพ
+ประภาวดี อำมฤตโชติ
+ประภาศรี คารวะตรีเดช
+ประภาศรี เที่ยงขำ
+ประภาศรี เมืองพรหม
+ประภาศรี สุนทเรกานนท์
+ประภาส เกตกะโกมล
+ประภาส ทับทิมทอง
+ประภาส พุทธิดิลก
+ประภาส ศิริอังคณา
+ประภาส โอภาสพันธ์วงศ์
+ประมวญ ประดิษฐโสภณ
+ประมวล คำเวียงจันทร์
+ประมวล เติมกุศลทรัพย์
+ประมวล บุญสิงห์ศร
+ประมวล ภูมิชัย
+ประมวล วิมลโนธ
+ประมวล สุวรรณจินดา
+ประมวลศรี สินอาษา
+ประมาน สุงสุวรรณ
+ประมุข พรหมรัตน์พงศ์
+ประมูล ชูแก้ว
+ประยงค์ กิตติการุณจิต
+ประยงค์ ใจดี
+ประยงค์ ตัณฑ์สุทธิวงค์
+ประยงค์ บัวขจร
+ประยงค์ พ่วงทรัพย์
+ประยงค์ รอดนำพา
+ประยงค์ สง่าวงค์
+ประยงค์ หงษ์อ่อน
+ประยวช นิลพันธ์
+ประยุทธ ขจรกวินกุล
+ประยุทธ ไชยมาตร
+ประยุทธ นิมิตหลิวพานิชย์
+ประยุทธ พุ่มชูศรี
+ประยุทธ วงศ์ประทุม
+ประยุทธ สุทธิสานนท์
+ประยุทธ์ โกวิทวณิชกานนท์
+ประยุธ ยินดีพิธ
+ประยูร แก้วบัณฑิต
+ประยูร จงมีพรชัย
+ประยูร แจ้งจิตร
+ประยูร ไชโย
+ประยูร ทองประทุม
+ประยูร นิ่มขาว
+ประยูร บูรณศิริ
+ประยูร พรสัมพันธ์สุข
+ประยูร ภูมิโสม
+ประยูร รอยตระกูล
+ประยูร เลิศไชยประดิษฐ์
+ประยูร ศรีวิไล
+ประยูร สำเนียงงาม
+ประยูร หงษ์โต
+ประยูร อุณรุท
+ประลอง สุทธินันทสุข
+ประวัติ จิระสถิตย์
+ประวัติ นพรัตนราภรณ์
+ประวัติ รัตนวิภาพงษ์
+ประวัติ สุทธิสารเศรษฐ์
+ประวิง นวลกะสิน
+ประวิช อัชฌาสุทธิคุณ
+ประวิตร วงศ์จิตตาโภค
+ประวิทย์ กังกล
+ประวิทย์ จงจิตสำราญ
+ประวิทย์ เจาสุริยตระกูล
+ประวิทย์ แซ่ปึง
+ประวิทย์ เตชะบูรณเทพาภรณ์
+ประวิทย์ นานาชิน
+ประวิทย์ ปาลศรี
+ประวิทย์ พูลเกษร
+ประวิทย์ รติสิน
+ประวิทย์ เลิศเธียรดำรง
+ประวิทย์ วุฒินภารัตน์
+ประวิทย์ สายจันทร์หอม
+ประวิทย์ แสงไชย
+ประวิทย์ อารีสงเคราะห์กุล
+ประวีณ จันทร์เจริญ
+ประวุฒิ ศรีมันตะ
+ประศาสน์ บุรินทร์วัฒนา
+ประสงค์ กำแหงฤทธิ์
+ประสงค์ แคล้วโยธา
+ประสงค์ เจิดสกุลบุญ
+ประสงค์ แซ่ยิ้ม
+ประสงค์ ตู้จินดา
+ประสงค์ ธำรงวัฒนเลิศ
+ประสงค์ ปทุมเดชะ
+ประสงค์ พรชัยวรกุล
+ประสงค์ แพประเสริฐ
+ประสงค์ รอดเชื้อ
+ประสงค์ วงศ์ชนะภัย
+ประสงค์ ศรีชัยศิริเวช
+ประสงค์ สวนสมจิตร
+ประสงค์ สุวรรณประเทศ
+ประสงค์ อย่างธารา
+ประสบ โต๊ะตระกูล
+ประสพ นวลเถลิงศักดิ์
+ประสพ หัสขันธิ์เปี่ยมสุข
+ประสพสิน ศุขเอี่ยม
+ประสพโชค วุฒิสาร
+ประสม สีน้ำเงิน
+ประสาท เกษตระชนม์
+ประสาท ตั้นเส็ง
+ประสาท พิทักษ์พงศ์ศิริ
+ประสาท ศรีนาค
+ประสาท อร่ามกุล
+ประสาธน์พล คล่องการเขียน
+ประสาน เกษประดิษฐิ์
+ประสาน เฉลยภาพ
+ประสาน เตชะประภาวกุล
+ประสาน บุญรุตน์
+ประสาน พึ่งบุญพานิชย์
+ประสาน เรืองแจ่ม
+ประสาน ศิริบุญ
+ประสาน สุระเรืองชัย
+ประสาน อินทศักดิ์อุบล
+ประสาร ขจรกลิ่น
+ประสาร ธรรมจำรัส
+ประสาร มีสมมนต์
+ประสาร แสงศรี
+ประสิทธิ สิงห์เจริญกิจ
+ประสิทธิ์พร วิริยะประพันธ์
+ประสิทธิ์ กวินปณิธาน
+ประสิทธิ์ กิติศักดิ์กุล
+ประสิทธิ์ แก้วสมนึก
+ประสิทธิ์ คนซื่อ
+ประสิทธิ์ จงอัศญากุล
+ประสิทธิ์ จันไกรผล
+ประสิทธิ์ จุ้ยนิ่ม
+ประสิทธิ์ ฉลองธนากุล
+ประสิทธิ์ ชางประยูร
+ประสิทธิ์ เชื้อชาวนา
+ประสิทธิ์ แซ่หุ่น
+ประสิทธิ์ เดชวนิชยนุมัติ
+ประสิทธิ์ ตันสงวนวงษ์
+ประสิทธิ์ ทรงคะมาลี
+ประสิทธิ์ เทพเอื้อตระกูล
+ประสิทธิ์ นวลอนงค์
+ประสิทธิ์ บรรทัดเที่ยง
+ประสิทธิ์ บุญแก้ว
+ประสิทธิ์ ประเสริฐเลิศ
+ประสิทธิ์ ปุระมาปัด
+ประสิทธิ์ พรพิพัฒน์
+ประสิทธิ์ พันแสงดาว
+ประสิทธิ์ เพชรสุขสันติ์
+ประสิทธิ์ ภู่งามชื่น
+ประสิทธิ์ มานะผล
+ประสิทธิ์ ยืนยง
+ประสิทธิ์ รุ่งธีรกุล
+ประสิทธิ์ ลิมป์วัฒนกุล
+ประสิทธิ์ วงค์ภู่
+ประสิทธิ์ วัชระไพโรจน์
+ประสิทธิ์ วีระพานิชเจริญ
+ประสิทธิ์ ศรีอุทารวงศ์
+ประสิทธิ์ สกุลนามอเนก
+ประสิทธิ์ สันตโยดม
+ประสิทธิ์ สีมาธรรมรัตน์
+ประสิทธิ์ สุทธิศิริกุล
+ประสิทธิ์ แสงภักดี
+ประสิทธิ์ หาญกล้า
+ประสิทธิ์ อ้นปันส์
+ประสิทธิ์ อามินเซ็น
+ประสิทธิ์ เอียดแก้ว
+ประสูต ชาญจำลอง
+ประหยัด คล้อยพึ่งอาจ
+ประหยัด แดงอินทวัฒน์
+ประหยัด บุญส่ง
+ประหยัด ม่วงเลี้ยง
+ประหยัด เศรษฐวงศ์
+ประหลาท นวราช
+ประเจษฎ์ ขจรนันทน์
+ประเชิญ ปั้นทอง
+ประเดิม ยุวเทพากร
+ประเทือง กงทอง
+ประเทือง คงมนต์
+ประเทือง เจียไพแก้ว
+ประเทือง ติณะมาศ
+ประเทือง นิตยะ
+ประเทือง เปาชม
+ประเทือง มหารักขกะ
+ประเทือง เล็กใจกล้า
+ประเทือง สังขสูตร
+ประเทือง หาพจน์
+ประเทืองทิพย์ สุขดี
+ประเมิน ขันธารักษ์
+ประเวช ภักดีประพันธ์
+ประเวศ กุลวิจิตรรังสี
+ประเวศ ภาสวรเวช
+ประเวศน์ บุญวิภารัตน์
+ประเสริฐ กลั่นประสม
+ประเสริฐ กิจเจริญวิศาล
+ประเสริฐ เกิดภู่
+ประเสริฐ ขวัญทะเล
+ประเสริฐ ครองศักดิ์ศรี
+ประเสริฐ โคตรประทุม
+ประเสริฐ จังสถิตย์กุล
+ประเสริฐ จิตต์จารึก
+ประเสริฐ เจตน์สมบูรณ์
+ประเสริฐ ฉากงาม
+ประเสริฐ ชาญฐิติเวช
+ประเสริฐ เชิดชูความดี
+ประเสริฐ แซ่ลิ้ม
+ประเสริฐ ดารารัตน์
+ประเสริฐ ตั้งจรรยาธรรม
+ประเสริฐ เติมประยูร
+ประเสริฐ ทวีโชติช่วง
+ประเสริฐ ทัศนศร
+ประเสริฐ ธรรมรัตโนทัย
+ประเสริฐ นันทสันติ
+ประเสริฐ เนียมกุลรักษ์
+ประเสริฐ บุญรัตน์
+ประเสริฐ ประมงกิจ
+ประเสริฐ ปานสุข
+ประเสริฐ ผาสุถาน
+ประเสริฐ พฤกษางกูร
+ประเสริฐ พีระแพทย์
+ประเสริฐ โพธิเจริญ
+ประเสริฐ ภูมิจันทร์
+ประเสริฐ มักพิมล
+ประเสริฐ มูฮำมัดอารี
+ประเสริฐ รมยศิริไทย
+ประเสริฐ รุจิธารณรงค์
+ประเสริฐ ลาภดารา
+ประเสริฐ เลาหเลิศชัย
+ประเสริฐ วงศ์อัครกุล
+ประเสริฐ วัฒนะชัยศรีสกุล
+ประเสริฐ วุฒยประดิษฐ์
+ประเสริฐ ศรีสุภางค์
+ประเสริฐ ศึกวัฒนา
+ประเสริฐ สวนปรางค์
+ประเสริฐ สายวัฒนาสุข
+ประเสริฐ สุขบาง
+ประเสริฐ สุบินมิตร
+ประเสริฐ เส็งสุข
+ประเสริฐ หรูลักษณานนท์
+ประเสริฐ เหลืองศุภชัยกุล
+ประเสริฐ อยู่พุ่มพฤกษ์
+ประเสริฐ อาจเนียม
+ประเสริฐ อุดมศิริโภคศัย
+ประเสริฐ โอวะกุลวงศ์
+ประเสริฐศรี วงษ์สุรินทร์
+ประเสริฐิ์ ขาวบริสุทธิ์
+ประโมทย์ ไชยกิจ
+ประโยชน์ ไทยอุดม
+ประโยชน์ สนิทวงศ์
+ประไทย ประกอบกลิ่น
+ประไพ ขาวสุทธิ
+ประไพ จำเรียง
+ประไพ ชูประยูร
+ประไพ ตรีนิตย์
+ประไพ เทียนไทย
+ประไพ บุญยะรัตน์
+ประไพ พรมณะ
+ประไพ โพธิ์แหบ
+ประไพ รัตนะชีวะกุล
+ประไพ วิสาลสกล
+ประไพ สร้อยสนธิ์
+ประไพ แสงเดช
+ประไพ อินเอี่ยม
+ประไพพรรณ เก็จวลีวรร
+ประไพพรรณ์ ชะเอม
+ประไพรัตน์ กาญจนพิบูลย์
+ประไพศรี ดวงแก้ว
+ประไพศรี ศรีภิรมย์
+ปรัชญา จรูญโรจน์
+ปรัชญา วิทยาพันธุ์
+ปรัญญา จันทราภรณ์
+ปราการ บ้านเกาะ
+ปรางค์ แก้วงาม
+ปราจิณ วุฒานุสร
+ปราณี กฤษณกรี
+ปราณี กิตติคุณ
+ปราณี แก้วคำ
+ปราณี คงประโยชน์
+ปราณี คุ้มจั่น
+ปราณี จันทร์ทวีลาภ
+ปราณี จิวะพงษ์
+ปราณี ฉัตรไพศาลสุข
+ปราณี ชาญช่างทหาร
+ปราณี โชคชัยเฉลิมวงศ์
+ปราณี แซ่ตั้ง
+ปราณี แซ่เฮ้ง
+ปราณี ตรงเวโรจน์
+ปราณี เตียเติมศุภผล
+ปราณี ทองดอนพุ่ม
+ปราณี ทู้ไพเราะ
+ปราณี ธุรกิจวงค์
+ปราณี นิยมเสน
+ปราณี บุญกล่ำ
+ปราณี ประดิษฐ์สุดสวาท
+ปราณี ปาพจนานนท์
+ปราณี เผือกเกษม
+ปราณี พฤติศรัณยนนท์
+ปราณี พิเนตรเสถียร
+ปราณี โพธิ์มี
+ปราณี มหัตเดชกุล
+ปราณี ไม้สัก
+ปราณี รังสิยานนท์
+ปราณี โรจน์พจนารัช
+ปราณี เลาหะกุลธรรม
+ปราณี วรฉัตราวณิช
+ปราณี วิทุรวงศ์
+ปราณี ศรีทัย
+ปราณี ศิริทัศนกุล
+ปราณี สมบูรณ์ศักดิ์
+ปราณี สายเจริญ
+ปราณี สุขธีวุฒิ
+ปราณี สุริยะฉาย
+ปราณี แสนสุข
+ปราณี หิตะหุ่ง
+ปราณี อยู่เสนาสน์
+ปราณี อำไพสุวรรณ
+ปราณี เอกสิริลัญจกร
+ปราณีต ชวาลกุล
+ปราณีต พึ่งพงศ์
+ปราณีต เหมือนใจ
+ปรานอม จิตรบำรุง
+ปรานอม มิตรธรรมศิริ
+ปรานี เดชมณี
+ปรารถนา จันทร์แกมแก้ว
+ปรารถนา มิลินทจินดา
+ปรารภ รัตพันธุ์
+ปราศรัย อัจฉรารักษ์
+ปราโมท ยินดี
+ปราโมทย์ คงธนะ
+ปราโมทย์ จำปาทอง
+ปราโมทย์ ชุติมา
+ปราโมทย์ ตำราเรียง
+ปราโมทย์ นภาแจ้ง
+ปราโมทย์ บุณยรังสฤษฎ์
+ปราโมทย์ พงศ์กล่ำ
+ปราโมทย์ มกรพฤกษ์
+ปราโมทย์ โรจนวิภาต
+ปราโมทย์ วโรดมวนิชกุล
+ปราโมทย์ สรรเพชรศิริ
+ปราโมทย์ สุบรรณพงษ์
+ปราโมทย์ โห้ใย
+ปริกกีปาล ซิงห์
+ปริญญา คำทะเนตร
+ปริญญา ติรณะประกิจ
+ปริญญา เปรมธีรสมบูรณ์
+ปริญญา แย้มชมสวน
+ปริญญา ศรีสุริโย
+ปริญญา เหมมาชูเกียรติกุล
+ปริญดา นิลจรัสวณิช
+ปริทปาลซิงห์ ซาบาดา
+ปริม คุณะเกษม
+ปริยา ปัญญาพล
+ปริศนา แก้วรุ่งเรือง
+ปริศนา ประหารข้าศึก
+ปริศนา อัศวเรืองชัย
+ปรีชา กลางบุรัมย์
+ปรีชา กีรเศรษฐรุ่งทวี
+ปรีชา แก้วโกถม
+ปรีชา คล่องสู้ศึก
+ปรีชา เงินถาวรวัฒนา
+ปรีชา จารุศิรินุกุล
+ปรีชา เจริญชัยเพชร
+ปรีชา เฉลิมพล
+ปรีชา ชินะนาวิน
+ปรีชา ไชยวสุ
+ปรีชา แซ่โง้ว
+ปรีชา ตรัยศิลานันท์
+ปรีชา เตชทิพากร
+ปรีชา ทรัพย์สถิตย์
+ปรีชา ทิศาภาคย์
+ปรีชา ธาราสนธิ์
+ปรีชา นาสด
+ปรีชา บุญกลั่น
+ปรีชา เบญจนากาศกุล
+ปรีชา ปรีชาวิภาษ
+ปรีชา ผลมาก
+ปรีชา พรหมเกิด
+ปรีชา พิชยพิพัฒน์
+ปรีชา เพ็ชรน่วม
+ปรีชา ภู่สุดแสวง
+ปรีชา มีบุญพูลทรัพย์
+ปรีชา รวยประเสริฐ
+ปรีชา รุ่งเรือง
+ปรีชา ลิปิพัฒนกุล
+ปรีชา วงศ์จิตตาโภค
+ปรีชา วัฒนดิเรก
+ปรีชา วิไลรัตน์
+ปรีชา ศรีเรือง
+ปรีชา สงวนปี
+ปรีชา สว่างจิตต์
+ปรีชา สิทธิกิจ
+ปรีชา สุทธินิภาชัย
+ปรีชา เสรีวงศ์
+ปรีชา หอมพวงภู่
+ปรีชา อนุภาพประเสริฐ
+ปรีชา อัยสานนท์
+ปรีชา อุดมยิ่งเจริญ
+ปรีชาพล ผุสสรางค์มาลัย
+ปรีดา คงสุวรรณ
+ปรีดา แซ่ตั้ง
+ปรีดา บรรทัดพันธุ์
+ปรีดา พิบูลศักดิ์
+ปรีดา โรจน์บัวทอง
+ปรีดา สหนันทรายุทธ
+ปรีดา เอกศิรสุวรรณ
+ปรีดี ขุมสุวรรณ์
+ปรีดี สุทธิแย้ม
+ปรียพรรณ ไทยสวัสดิ์
+ปรียา จิรรักษ์โสภากุล
+ปรียา พงศานรากุล
+ปรียา สมุทรใหญ่
+ปรียานิจ ศรีแก่นจันทร์
+ปรียาพร แซ่อึ้ง
+ปรียาภา อภิสุข
+ปรุง เดชมานนท์
+ปรุงศรี เพชรบูรณ์
+ปรเมษฐ์ พรเลิศ
+ปลอดภัย พีรดัม
+ปลิว ดิษฐปัญญา
+ปลื้มจิตต์ จุฑรรพ
+ปวรินทร บุญยุบล
+ปวิตร์ สุธาวิยางกูร
+ปวีณา ตันสิน
+ปวีณา สนธิภักดี
+ป่วยล้วง แซ่จึง
+ปอง อาภาศิลป์
+ปอจู ตันติอนุกุลบุตร
+ป้อม ประจำมูล
+ปะวิง ศิริกิจ
+ปัญจพงษ์ แซ่ตั้ง
+ปัญจรัตน์ ยุทธวงศ์
+ปัญจาภรณ์ พรหมายน
+ปัญญา กาหลง
+ปัญญา คุณวุฒิดีเลิศยิ่ง
+ปัญญา แจ้งการดี
+ปัญญา แซ่โง้ว
+ปัญญา ทองศรี
+ปัญญา นิลสินธพ
+ปัญญา ปิ่นปาน
+ปัญญา พุ่มลำเจียก
+ปัญญา รอดเครือมิตร
+ปัญญา วรรณกระจ่าง
+ปัญญา ศรีใส
+ปัญญา สุขวัฒนทรัพย์
+ปัญญา ห่านสิงห์
+ปัญญา เอ่งฉ้วน
+ปัณชารีย์ เลี้ยงบำรุง
+ปัทมา กุลปัญญาเลิศ
+ปัทมา ชาญชัยศรี
+ปัทมา ตุลารักษา
+ปัทมา เปี่ยมสัมฤทธิ์
+ปัทมา เมืองทองแก้ว
+ปัทมา วิปัสสนาธรรม
+ปัทมา สุขก้อน
+ปัทมา อาระยานิมิตสกุล
+ปัทมาวดี บุหลัน
+ปั้น โชติกะพุกกะณะ
+ปาน แก้วชนะ
+ปานคำ ลัวะตื้น
+ปานชัย แก้วอัมพร
+ปานทิพย์ นามไชย
+ปานฤทัย ตั้งใจ
+ปานเสก อาทรธุระสุข
+ปารวีร์ บุญโต
+ปาริชาต ก้อนนาค
+ปาริชาติ กราเซียนี่
+ปาริชาติ ทัพภะสุต
+ปาริชาติ ระวังสำโรง
+ปาริชาติ เสวกพันธ์
+ปาลิดา คณารมย์
+ปิง พานิชยานนท์
+ปิติ ปิ่นสุกาญจนะ
+ปิติพงศ์ คุณพงศ์ไพศาล
+ปิ่น กิจเมธี
+ปิ่น มณีบุตร
+ปิ่นทอง ศาลยาชีวิน
+ปิ่นอนงค์ พรหมดวง
+ปิยฉัตร อิศรเสนา ณ อยุธยา
+ปิยนันท์ ทรงสกุล
+ปิยนุช คารวะพิทยากุล
+ปิยพงศ์ ติณสูลานนท์
+ปิยพรรณ แย้มน้อย
+ปิยรัตน์ จาตุรันตบุตร
+ปิยวรรณ คำพยา
+ปิยวรรณ ศรีคต
+ปิยวุฒิ งามพล
+ปิยะ จารุศุกร
+ปิยะ เถื่อนเมือง
+ปิยะ เปสตันยี
+ปิยะ วงศ์สวัสดิ์
+ปิยะ อัชชเสวิน
+ปิยะชาติ จันทรัตน์
+ปิยะดา ล้อศิรินันท์
+ปิยะนาถ ชุ่มอระ
+ปิยะนุช บุญรัตน์
+ปิยะพงศ์ ปิยางสุ
+ปิยะพร นิลฉาย
+ปิยะพันธ์ สีดอกบวบ
+ปิยะรัตน์ ดำรงค์กุล
+ปิยะวดี วิริยะชาติ
+ปิยะวรรณ สุคนธสิงห์
+ปิยะศิริ งามถิ่น
+ปิยาภรณ์ ชินูปการพงศ์
+ปิยเศรษฐ์ วรอาตมพิทักษ์
+ปียาภรณ์ ม่วงกุล
+ปุณณรัตน์ โพธิกำจร
+ปุ่ม มาลากุล
+เป บุญกอง
+เปรม จันทรา
+เปรมกมล เกิดเดช
+เปรมจิตต แพ่งสถา
+เปรมจิตต์ สารธิราช
+เปรมชัย เตชะมงคลาภิวัฒน์
+เปรมพันธ์ ชมภูรัตน์
+เปรมฤดี วงศ์ทองคำ
+เปรมวดี รัตนศิรินทรวุธ
+เปรมสิทธิ์ เติมจรัส
+เปรียบ บุญลือ
+เปลว อยู่สอาด
+เปล่ง นิ่มคำ
+เปาลิน เกียรติยศนุสรณ์
+เปี่ยมศรี เจริญสุข
+เปี๊ยก ล้วนเจริญ
+เป้ง แซ่อื้อ
+เป้า โพธิ์เนืองผล
+เป๋งไก แซ่เจี่ย
+แป้น ระดมงาม
+โปรยมาศย์ ศรีทองกุล
+โป๊ะชัย แซ่จัง
+ผกา นรนิตชัยกุล
+ผกากรอง พุ่มวงศ์สำเนียง
+ผกาพรรณ ปะติเส
+ผกามาศ ตีรณธาดา
+ผกามาศ สิทธิพล
+ผกาวรรณ เทียมทองคำ
+ผกาแก้ว ลีนะบรรจง
+ผจงสุข อังประทีป
+ผจญ หีบแก้ว
+ผดุง ทองบริสุทธิ์
+ผดุง สิงหเสนี
+ผดุงศักดิ์ ธนากิจเจริญสุข
+ผดุงเกียรติ เอื้ออารยะมนตรี
+ผล ปองสุข
+ผลัด เอาฬาร
+ผสาร สุทัศน์ ณ อยุธยา
+ผ่อง ยุทธารักษ์
+ผ่องพรรณ จงไชโย
+ผ่องพรรณ ภิยโยดิลกชัย
+ผ่องพิศ ศิริพานิช
+ผ่องศรี เจยเสนานนท์
+ผ่องศรี นกแก้ว
+ผ่องศรี เพศยนาวิน
+ผ่องศรี วิเศษสุข
+ผ่องศรี อินทรลาวัณย์
+ผ่องใส พาหุรัตน์
+ผ่อน อ่วมวงษ์
+ผัน บุญชิต
+ผาณิต จันทรเทศ
+ผาด กำเหนิดแก้ว
+ผานิต เจริญพงศ์พัฒนะ
+ผาสิต หิรัญญชาติธาดา
+ผาสุข พร้อมเพรียง
+ผิน ก้อนทองดี
+ผิน ศรีอุเทนชัย
+ผิวพรรณ เปียแก้ว
+ผุสดี เขียวพันธุ์
+ผุสดี เบ็ญจมินทร์
+ผุสดี ศรีสำราญ
+ผูกจิต อินทวงศ์
+เผชิญ ยอดยิ่ง
+เผดียง ชัยอัศวรักษ์
+เผด็จ ผู้พัฒน์
+เผด็จชัย ศรีสุวรรณ
+เผือด ทองทิพย์
+เผ่าพงษ์ ใจเจตนกุศล
+แผ่ว เพ็งชะอุ่ม
+ไผ่เทพ กิมเฮียะ
+ฝ้าย ศิริพันธ์
+พงพจน์ เลิศเจียมรัตน์
+พงศกร เส็งสำราญ
+พงศ์ชาย เกียรติกิตติพงษ์
+พงศธร เลิศภูตราช
+พงศ์นรินทร์ พงษ์สิน
+พงศ์พันธุ์ แพทย์พงศ์
+พงศ์รัตน์ รัตนภากร
+พงศ์ศักดิ์ แซ่แต้
+พงศ์ศักดิ์ วัฒนาศรมศิริ
+พงศ์สวัสดิ์ หมู่พงศ์สุวรรณ
+พงศา แสนใจงาม
+พงศ์เทพ อันตะริกานนท์
+พงษกร พัชรไพศาล
+พงษ์ชัย เฉลิมกลิ่น
+พงษ์ชาติ กอหาญ
+พงษ์ธร สุดยอดบรรพต
+พงษ์พัฒน์ ธีรประเทืองกุล
+พงษ์พันธ์ พันธุ์เสือ
+พงษ์ยุทธ ณ พัทลุง
+พงษ์ศรี แซ่ลิ้ม
+พงษ์ศักดิ์ คารวสิริธรรม
+พงษ์ศักดิ์ ชมภูอินตา
+พงษ์ศักดิ์ ดำรงชัยนิมิตร
+พงษ์ศักดิ์ ธีรภาพพิทักษ์
+พงษ์ศักดิ์ ปัญญจเร
+พงษ์ศักดิ์ เพิ่มทวีผล
+พงษ์ศักดิ์ รอบรู้
+พงษ์ศักดิ์ วงศ์สุริยานนท์
+พงษ์ศักดิ์ ศรีสมศักดิ์
+พงษ์ศักดิ์ สินอวย
+พงษ์ศักดิ์ เหล่าเลิศชัย
+พงษ์ศานต์ ค้ำชู
+พงษ์สวัสดิ์ ธงศรี
+พงษ์สิทธิ์ เวชสิทธิ์
+พงษ์เกียรติ ชลวิไล
+พงษ์เทพ ทัพภมาน
+พงษ์เทพ สิตวาทิน
+พงษ์ กิตติมโนรม
+พงษ์ อัครถนอม
+พจน์ณรงค์ ศรีทัศนีย์
+พจนา ไกรประเสริฐโชค
+พจนา ปิยะวิสุทธิกุล
+พจนา ศิลา
+พจนาถ ศุภเศรษฐ์
+พจนารถ เอกญาติ
+พจนีย์ คุณปกรณ์ชัย
+พจนีย์ ปานภักดี
+พจนีย์ ศิริวัฒน์
+พจน์ เกิดผล
+พจน์ ธีรคุปต์
+พจน์ มั่นกันนาน
+พจน์ แสงนิล
+พจมาน ภู่ประดิษฐ์
+พจีรัตน์ รอดรัตนาทูล
+พดา เจริญวัฒนานนท์
+พนม ช้างมณี
+พนม ปานภักดี
+พนม เรืองศิลป์
+พนม หวังดี
+พนมพร นิ่มองคำ
+พนมวัลย์ กาญจนนัมพะ
+พนอ ตันธิประพันธ์
+พนอจันทร์ มาลากุล ณ อยุธยา
+พนัส ฉายสีศิริ
+พนัส สีมันตร
+พนานุรักษา พนานุรักษา
+พนาวัลย์ แคล้วเครือ
+พนิดา คาถา
+พนิดา แซ่ลี้
+พนิดา นาคอ่อน
+พนิดา เพคยางกูร
+พนิดา วงศ์พร้อมเจริญ
+พนิดา สุขโพธิ์เพ็ชร
+พนิต ทองวิจิตร
+พนินธา จ้อยชู
+พยงค์ จันทรังษี
+พยงค์ บุญลือ
+พยงค์ สารจันทร์
+พยนต์ คุ้มรำไพ
+พยนต์ พุตยบุตร
+พยนต์ อุทยานะกะ
+พยอม จั่นอุไร
+พยอม ทวีคูณ
+พยอม ปู่หิน
+พยอม รวมศิลป์
+พยอม สนธิธรรม
+พยอม อินทร์กิ่ง
+พยัพ นาคทั่ง
+พยุง จงปิยะโชติ
+พยุง ทับทอง
+พยุง ฟักเพชร
+พยุง สายัณหวิกสิต
+พยุงศรี จันทร์ศรี
+พยุงศักดิ์ สุขสถาน
+พยูร รักขาว
+พร ไตรรัตนวงศ์
+พร รุ่งเรือง
+พร อัศวพิทยา
+พรจันทร์ ชัยเธียรสุทธานัน
+พรจิตต์ พรหมบรรดาโชค
+พรชนก วรินทรเวช
+พรชัย กิจวรลักษณ์
+พรชัย เขมโชคนที
+พรชัย จันทบาล
+พรชัย เจี่ยสอาด
+พรชัย เชื่องหลิว
+พรชัย แซ่เจี่ย
+พรชัย เดชาประพันธ์
+พรชัย เตชะกนกสุวรรณ
+พรชัย ทุติยาภรณ์
+พรชัย นันทวิมล
+พรชัย ประภากรวรกุล
+พรชัย พรพัฒนาจิรพันธิ
+พรชัย พิริยวิทโยภาส
+พรชัย มงคลตรีมาศ
+พรชัย รัตนโชติพงศ์
+พรชัย ลี้ถาวร
+พรชัย วนาโรจน์
+พรชัย วีระกิตติ
+พรชัย ศิลาโภชน์
+พรชัย สิงห์กุล
+พรชัย สุรีย์กมลชัย
+พรชัย เหลืองจิตวัฒนา
+พรชัย อังสุรัตน์โกมล
+พรชัย เอี่ยมสุขมงคล
+พรณรงค์ ระดมทอง
+พรทวี อธิศิวกุล
+พรทิพย์ กาญจนสุนทร
+พรทิพย์ ขันทอง
+พรทิพย์ จอนแจ้ง
+พรทิพย์ เจริญกิจชัยชนะ
+พรทิพย์ ชินรัตน์
+พรทิพย์ แซ่ลี้
+พรทิพย์ เดชะทัศน์
+พรทิพย์ เตมีรักษ์
+พรทิพย์ ทิพยเสม
+พรทิพย์ นาคบุตร
+พรทิพย์ บุณโยทยาน
+พรทิพย์ ผลฟักแฟง
+พรทิพย์ พิณพิพัณน์
+พรทิพย์ ไพบูลย์
+พรทิพย์ มีทรัพย์สถาพร
+พรทิพย์ รัตนวิเชียร
+พรทิพย์ ลิขิตชีวะ
+พรทิพย์ วชิรานุกูล
+พรทิพย์ วิเศษพงษ์พันธ์
+พรทิพย์ ศิริเอี่ยม
+พรทิพย์ สารการ
+พรทิพย์ สุรชัยสติกุล
+พรทิพย์ หอมลอด
+พรทิพย์ อันประเสริฐพร
+พรทิพย์ ฮวบดี
+พรทิพา พณิชยางกูร
+พรทิภา ทองเขียว
+พรธิดา คงศิลป์
+พรนภา ปิ่นรัตน์
+พรนิดา สิทธิพรรัตนมณี
+พรนุช คืนคงดี
+พรประเสริฐ สุวรรธนะพาณิชย์
+พรพจน์ ป่านแก้ว
+พรพยง คูห์สุวรรณ
+พรพรรณ จิชชุกรจิรภัค
+พรพรรณ ฐานะเจริญกิจ
+พรพรรณ ธีระชาติ
+พรพรรณ พัชรวัฒนพงศ์
+พรพรรณ เย็นลำยอง
+พรพรรณ วิชญาเดชะ
+พรพรรณ สุนาพันธ์
+พรพรรณ์ ไทยเจริญ
+พรพันธุ์ ปิ่นโมรา
+พรพิพัฒน์ สวัสดิ์เวทิน
+พรพิมล จาดประดิษฐ์
+พรพิมล แซ่เบ้
+พรพิมล ธุรพันธ์
+พรพิมล พัฒนายุ
+พรพิมล ลอองสุทธิ์
+พรพิมล ศิลปสืบเชื้อ
+พรพิมล ใหม่นวล
+พรพิลาศ ศุภนานนทชัย
+พรพิศ อาภรณ์ศิริพงษ์
+พรพูล หลุยเจริญ
+พรมณี ไชยบุตร
+พรรณงาม กาพย์แก้ว
+พรรณทิพย์ งามละเมียด
+พรรณทิพย์ ไวทยานนท์
+พรรณทิพา มรกตสินธุ์
+พรรณนรา ปานณรงค์
+พรรณนิภา อุดมจรรยา
+พรรณพิมล แซ่ฮั่น
+พรรณยุพา ฮ่อสกุล
+พรรณรำไพ ดวงดี
+พรรณวดี อัมพุช
+พรรณอร ฉันทโรจน์
+พรรณิกา จันทร์เป้า
+พรรณิภา สิงห์โตเพ็ชร
+พรรณี เกิดเปี่ยม
+พรรณี โคตรักษา
+พรรณี จิรวศิน
+พรรณี ชื่นอุไทย
+พรรณี แซ่โค้ว
+พรรณี ตานะประทีปกุล
+พรรณี ธนภานนท์
+พรรณี บัวชุ่ม
+พรรณี ปูรณามระ
+พรรณี พิมลเกียรติ
+พรรณี มณีชาติ
+พรรณี รองโสภา
+พรรณี ลิ้มสุธาโภชน์
+พรรณี วัฒนายากร
+พรรณี ศรีอนุชาต
+พรรณี สันป่าแก้ว
+พรรณี เสมาทอง
+พรรณี อภิชัยทวีสิน
+พรรณี เอกสินเสริม
+พรรณใจ จันทร์สวัสดิ์
+พรรษพล ตั้งยะฤทธิ์
+พรรัชนี จ้อยพุทธ
+พรฤดี วงศ์ระลึก
+พรวารัตน์ สกุลโชติพาณิชย์
+พรวิไล เจริญชัยเพชร
+พรศรี ชลายนนาวิน
+พรศรี พิมพกรณ์
+พรศรี แสงฉวี
+พรศักดิ์ จำปาทอง
+พรศักดิ์ ทัพสิทธิ์
+พรศักดิ์ พิทักษ์นราธรรม
+พรศักดิ์ วิจิตรโสภณ
+พรศักดิ์ เหล่าตรงจริง
+พรศิริ ผาสุขกานนท์
+พรศุลี จันทร์ศิริศรี
+พรสวรรค์ แซ่เฮ้ง
+พรสวรรค์ ศักดิ์ธนวัฒน์
+พรสิทธิ์ อาศิรพงศ์พิศิษฐ์
+พรสุข ศิริวงศ์
+พรสุรีย์ เพิกจร
+พรหมพิศ ตั้งเลิศสัมพันธ์
+พรอำพัน ชวลิตนิธิกุล
+พร้อม อินทร์โต
+พร้อมศักดิ์ ณ สงขลา
+พริ้ง เถาว์เพ็ง
+พริ้มเพรา โน้ตศิริ
+พรเทพ ก่อเลิศรัศมี
+พรเทพ ฉัตรศิลป์ชัย
+พรเทพ ติงพิทักษ์สกุล
+พรเทพ ปรางค์นวรัตน์
+พรเทพ มหัธนสกุล
+พรเทพ วรกุลพิทักษ์
+พรเทพ สุทธิพิพัฒน์พงศ์
+พรเนตร แย้มงามเหลือ
+พรเพ็ญ ชำนาญกิจวนิช
+พรเพ็ญ ทับน้อย
+พรเพ็ญ มหาคุณโชติ
+พรเพ็ญ ศีตะจิตต์
+พรเพ็ญ อิงอนุรักษ์สกุล
+พรเลิศ รักสิฐ
+พรใจ องศ์ศิริกุล
+พฤฒิวรรณ สมบุญ
+พล กระต่ายโพธิ์
+พล พลรัตน์
+พล อาชีวะ
+พลชัย ส้มเขียวหวาน
+พลมิตร พูลสวัสดิ์
+พลศรี นิรันดร
+พลสินธุ์ ขลิบไหมทอง
+พลอยไพฑูรย์ ชาติประเสริฐ
+พลากร ห่วงกลจักร์
+พลเดช วรฉัตร
+พวง ปะกลาง
+พวงชมนาถ จริยะจินดา
+พวงทอง บุญประเสริฐเจริญ
+พวงทอง สระสม
+พวงทิพย์ มีสุข
+พวงผกา คงอุทัยกุล
+พวงพยอม งามลักษณ์
+พวงพันธ์ กฤษณธรณิศ
+พวงรัตน์ ถาวรรัตน์
+พวงวิไล จันทวงศ์
+พวงเพชร ชัยกุล
+พวงเพชร อินต๊ะวงค์
+พวงเพ็ญ จั่นเพ็ชร
+พวงเพ็ญ วิบูลย์สวัสดิ์
+พวงแก้ว พิมพสุต
+พสิษฐ์ ตุรงค์สมบูรณ์
+พอดี ชัยเวฬุ
+พอล รูดอล์ฟ
+พะจุณณ์ ตามประทีป
+พะเยาว์ โฉมงาม
+พะเยาว์ มาลาเวช
+พะเยีย แจ่มกระจ่าง
+พักตร์ศิริ ชูวานนท์
+พัชณี ชั้นพรภักดี
+พัชนี คุณแพ
+พัชนี นาถประชา
+พัชนี วิสิทธิ์
+พัชนีย์ บุญกรณ์
+พัชรชัย กุลหอมเนียม
+พัชรัตน์ แซ่โหล่
+พัชรา จิตตภัทรโรจน์
+พัชรา แตงนาค
+พัชรา ปานเสมศรี
+พัชรา มีทรัพย์
+พัชรา ศิวิลัย
+พัชรา อิงอรวิจิตร
+พัชราภรณ์ ช่างชุบ
+พัชราภรณ์ วงศ์มั่นกตัญญู
+พัชราวดี แพรัตกุล
+พัชรินทร์ การบริสุทธิ์
+พัชรินทร์ จันทริก
+พัชรินทร์ แซ่จิว
+พัชรินทร์ โต๊ะวนิชรักษา
+พัชรินทร์ ปรีดียานนท์
+พัชรินทร์ โพธิ์อ่อน
+พัชรินทร์ ราหุลปาน
+พัชรินทร์ ศรีชะบา
+พัชรินทร์ สุดใจ
+พัชรินทร์ อัศวนิก
+พัชรี เกตุหอม
+พัชรี จันทรดาวัลย์
+พัชรี ชูจิรวงศ์
+พัชรี ตั้งตระกูล
+พัชรี นรสิงห์
+พัชรี ปริปุรณะ
+พัชรี พันธุมจินดา
+พัชรี มากกรัด
+พัชรี ลิมปภาพันธุ์
+พัชรี ศรีกระจาย
+พัชรี สว่างพันธุ์
+พัชรี สุวพรศิลป์
+พัชรี อรัญทรวานิช
+พัชรีพร สุขโสมนัส
+พัชรีย์ สมเจริญ
+พัฒณี แซ่ลิ้ม
+พัฒนพงศ์ สุขโกษา
+พัฒนวงษ์ วานิช
+พัฒนะชัย ใสสว่างพันธ์
+พัฒนา ทิมสุวรรณ
+พัฒนา มีศุข
+พัฒนา สุมาลี
+พัฒนี บุญทวี
+พัฒน์ พลภัทรพิจารณ์
+พัด โพธิ์สระคู
+พัทธยา นิระมล
+พัทยา พิมพ์สะอาด
+พัน ผลเจริญ
+พันทิพา จันทรวรรณะ
+พันทิพา สุขประไพพัฒน์
+พันธ์ทิพย์ เนตรรังษี
+พันธวิทธิ์ ใจซื่อกุล
+พันธ์ศักดิ์ เย็นสกุลสุข
+พันธิภา ผลภาษี
+พันธุ์ทิพย์ สายสุนทร
+พันธุ์ศักดิ์ สร้อยคำ
+พันธ์เทพ มานะเกียรติตระกูล
+พันปี รัตนประภา
+พันเภา มินโด
+พัลลภ ธนะสมบูรณ์
+พัลลภ สวนไพรินทร์
+พัว ดีประเสริฐ
+พา จันทร์เที่ยง
+พาณิช ภักตร์เจริญ
+พาณี บำเพ็ญบุณย์
+พาณี สุขสวัสดิ์
+พานิช จิตรแจ้ง
+พานิต ศรีสุกใส
+พายัพ เชื้อสุวรรณ
+พารา เอี่ยมมะโนชญ์
+พาสุข ตั้งตรัสธรรม
+พิกุล เจริญวัย
+พิกุล น้อยผาง
+พิกุล มโนภิญโญภิญญะ
+พิกุล สาระ
+พิงค์ศิริ สุนทรชาติ
+พิจิตร เจริญทรัพย์
+พิจิตรา ชงัด
+พิชญ์นรี สันประเสริฐ
+พิชญาณี เลอเลิศกุล
+พิชัย กฤษฎาพิพัฒน์
+พิชัย เขมทโรนนท์
+พิชัย จำปางาม
+พิชัย ชยสดมภ์
+พิชัย แซ่ตั้ง
+พิชัย ตันตินวะชัย
+พิชัย แทนประยูร
+พิชัย บัวมาศ
+พิชัย เปรมทอง
+พิชัย พิริยะเสถียรกุล
+พิชัย มิ่นสุข
+พิชัย รุ้งทาบนภา
+พิชัย วงศ์กุศลสิริ
+พิชัย วุฒิจำนงค์
+พิชัย สถาวรมณี
+พิชัย สุนทรอำพล
+พิชัย หาญณรงค์ฤทธิ์
+พิชัย อินทรพิพัฒน์
+พิชา วัฒนะธารี
+พิชิต กรานเลิศ
+พิชิต จุลฤกษ์
+พิชิต ตั้งสหไมตรี
+พิชิต บุณยเสนา
+พิชิต ภักดิ์แจ่มใส
+พิชิต วัชราดิลกกุล
+พิชิต สิริวุฒิจรุงจิตติ์
+พิชิต เอี่ยมละออ
+พิฑูรย์ ตันติอมรพงษ์
+พิณทิพย์ บริบูรณ์สุข
+พิณสรวง วงศ์วิลัย
+พิทยา คุณาวิริยะสิริ
+พิทยา นุชเจริญ
+พิทยา แย้มศรวล
+พิทยา สุขใจเจริญเวช
+พิทย์ เศรษฐพิทยากุล
+พิทักษ์ จันทร์หอม
+พิทักษ์ ตั้งชูทวีทรัพย์
+พิทักษ์ ปราดเปรื่องเวทย์
+พิทักษ์ เมฆสกุลรัตน์
+พิทักษ์ ศรีตะวัน
+พิทักษ์ หวังศิริสมบูรณ์
+พิธาน คุณพรศรีภิรมย์
+พิน สมาธิ
+พินัย จงศิริรักษ์
+พินิจ กานติกุล
+พินิจ เจริญวิวัฒนกุล
+พินิจ ตริการชอบ
+พินิจ บุญวิเศษ
+พินิจ ภคสกุล
+พินิจ ว่องเมทินี
+พินิจ สุนากร
+พินิจเสนาการ พอ พระ
+พินิตศักดิ์ อ่องจรูญ
+พิบูล อินทรสวัสดิ์
+พิบูลย์ ไทยเจริญ
+พิบูลย์ วิเชียรวรรณ
+พิพัฒนพงษ์ รักยุติธรรม
+พิพัฒน์ จงเจริญกมล
+พิพัฒน์ เชี่ยวหัตถ์พงษ์
+พิพัฒน์ ทองศรีนาค
+พิพัฒน์ ปลื้มเจริญ
+พิพัฒน์ พิชิตนภากุล
+พิพัฒน์ รวยแท้
+พิพัฒน์ วงศาโรจน์
+พิพัฒน์ ศุภสิงห์ศิริปรีชา
+พิพัฒน์ หทัยวสีวงศ์
+พิพัฒน์ โอมพรนุวัฒน์
+พิภพ จันทรโสภาคย์
+พิภพ เลาคำ
+พิภาดา เจริญจันทร์
+พิมพ์กาญจน์ หล่อศิริไพบูลย์
+พิมพ์ประไพ บุณยะประภูติ
+พิมพ์พร มณีรัตน์
+พิมพ์พา ทิพวัลย์
+พิมพร พิมเภาว์
+พิมพรรณ เปรมธาดา
+พิมพ์วัลย์ สุวรรณประกร
+พิมพา งามเงิน
+พิมพา พงศกรรุ่งโรจน์
+พิมพา หนูแก้ว
+พิมพิศ วุฒิธรรมาภรณ์
+พิมพ์ใจ นำสุวิมลกูล
+พิมพ์ใจ หอมจันทร์
+พิมพ์ วงษ์จันทร์
+พิมล เจริญยิ่ง
+พิมล ปีติยา
+พิมล วีรวัฒน์พงศ์
+พิมลพร มหัธนากร
+พิมลพรรณ เหลี่ยมมุกดา
+พิมลรัตน์ อังกูรสิทธิ์
+พิมานมาศ สถิตย์ทรัพย์
+พิรยุทธ โทสูงเนิน
+พิริยะ กิ่งขจี
+พิรุณ เจริญกุล
+พิรุณรัตน์ สุงสุวรรณ
+พิวัฒน์ วิภาวีพิทักษ์
+พิศณุ เจริญนุกูล
+พิศมร ถิรจิตต์สิริ
+พิศมัย เคียงประพันธ์
+พิศมัย ไชยวัฒน์
+พิศมัย นพรัตน์บัญฑิต
+พิศมัย พัฒนา
+พิศมัย เลาห์หิรัญญากุล
+พิศมัย สิริชูติวงศ์
+พิศมัย อินทร์รจนา
+พิศวง มีสุวรรณ
+พิศสมัย เอกอุ่น
+พิศาล ฉายากล
+พิศาล มโนลีหกุล
+พิศาล โฮตระกูล
+พิศิษฐ อักษรพันธ์
+พิศิษฐ์ ทองมั่นคง
+พิศิษฐ์ รงควิลิต
+พิศิษฐ์ เอกปัญญากุล
+พิศเสน่ห์ นิ่มนวล
+พิษณุ ไตรปิ่นเพ็ชร
+พิษณุ มาลยานนท์
+พิษณุ แสงสาคร
+พิสนธิ์ ศรีภัทรโชติ
+พิสมัย นุธิรงค์
+พิสมัย หล้าล้ำ
+พิสันต์ โอสุวรรณ
+พิสิฏฐ อัศวเพชรฤกษ์
+พิสิฐ จันทร์จิรีย์
+พิสิฐ พรวัฒนมงคล
+พิสิฐ สร้างดี
+พิสิทธิ์ ชัยมงคล
+พิสิทธิ์ วุฒิวงศ์วัฒนา
+พิสิษฐ์ กมลวารินทร์
+พิสิษฐ์ พิริยะเบญจวัฒน์
+พิสุทธิ์ แก้วอำไพ
+พิสุทธิ์ ศุภพร
+พิเชฎร์ บุญมา
+พิเชฐ ติยะพงษ์พิทักษ์
+พิเชฐ วัฒนาเอี๊ยบพันธ์
+พิเชต เรือนทิพย์
+พิเชษฐ เตชะดี
+พิเชษฐ รัตนารมย์
+พิเชษฐ อุยยานุกูล
+พิเชษฐ์ เจริญวรกิจการ
+พิเชษฐ์ ทิพย์โกษัย
+พิเชษฐ์ เพ็ญศรี
+พิเชษฐ์ วิมลธรรมวัฒน์
+พิเชษฐ์ อัครพินท์
+พิเศก มาสังข์
+พิไล ครุฑวณิชนนท์
+พิไลลักษณ์ โกสุมพิทักษ์
+พี ปิโตรเลียม
+พีรนุช เพ่งพานิช
+พีรพงษ์ ลิมป์สุทธิรัชต์
+พีรพล ภูมิวัฒน์
+พีรพันธ์ ศรีสุวรรณผไท
+พีรวัฒน์ ชุณหะนันทน์
+พีระ กอสุวรรณสกุล
+พีระ ทักษะวณิชชา
+พีระ มีแสงนิล
+พีระ หวังวิวัฒน์สิน
+พีระพงศ์ คลองกิจโรจน์
+พีระพงษ์ พระคุณอำนวย
+พีระพล ชาตพุทธิธรกุล
+พีระพล แสงจันทร์
+พีระยุทธ ไทยลิ่มทอง
+พีระศักดิ์ ปิยภาณีกุล
+พีรัตน์ ฮามีดี
+พึงใจ เกียรติสาโรจน์
+พุฒ ดอกไม้จีน
+พุฒธิพงษ์ เสน่หา
+พุดจีบ เฟื่องชื่น
+พุทธชาติ วงศ์สุวรรณ
+พุทธศักดิ์ โอฐยิ้มพราย
+พุธ โคตรใต้
+พู ทวีจิตร
+พูนชัย เอื้องสุภาภรณ์
+พูนทรัพย์ สิทธิพรหม
+พูนยศ บุณยรักษ์
+พูนศรี ธีระปกรณ์กุล
+พูนศรี สุบงกช
+พูนศักดิ์ พสุนนท์
+พูนสมบัติ แซ่อื้อ
+พูนสุข คหะแก้ว
+พูนสุข สันติสวัสดิ์
+พูลชัย กาญจนโรจน์
+พูลทรัพย์ พราหมณีย์
+พูลพิพัฒน์ สงวนสัตย์
+พูลศรี แซ่หั่น
+พูลศรี สุขุมวาท
+พูลศักดิ์ พึ่งประภา
+พูลศิริ อิงตระกูล
+พูลสิน เสนีย์
+พูลสุข เม่นแมน
+พเยาว์ กระดาษ
+พเยาว์ จันทร์งาม
+พเยาว์ แตงอ่อน
+พเยาว์ ปั้นบุญชู
+พเยาว์ ภูษา
+พเยาว์ วงษ์สาลี
+พเยาว์ สินช้าง
+พเยาว์ เอี่ยมวงศ์
+เพชร รอสูงเนิน
+เพชรน้อย เวทยประสิทธิ์
+เพชรรัตน์ ปลื้มอารมย์
+เพชรรัตน์ อุตะปะละ
+เพชรัตน์ พรบวรเกียรติ
+เพชรา วิจิตรเลขการ
+เพชรี ภู่สุข
+เพทาย ทองศรี
+เพทาย หาเรือนชีพ
+เพรียบ หุตางกูร
+เพลิน ผิวเณร
+เพลินจิต วัชรโชติ
+เพลินตา อิ่มอกใจ
+เพลินพิศ แดงไพบูลย์
+เพลินพิศ มหาวนิช
+เพลินพิศ ไหลมา
+เพาพะงา อัสมิมานะ
+เพิ่ม ศรีประพันธ์
+เพิ่มพร รุ่งเรืองชัย
+เพิ่มศรี วัดแก้ว
+เพิ่มศักดิ์ ปิติธนสารสมบัติ
+เพิ่มศักดิ์ อยู่เป็นสุข
+เพียงจันทร์ พันธุรัตน์
+เพียงพร อมรไชย
+เพียงเพ็ญ จึงสำราญ
+เพียงใจ จ่าพันธ์อินทร์
+เพียงใจ มหานนท์
+เพียน บังครัน
+เพียร ศิริโชติรัตน์
+เพียรพร ศรีเพียรผล
+เพียว อภิสิทธิ์ภิญโญ
+เพ็กจู แซ่เอี้ย
+เพ็กเฮี้ย แซ่เตีย
+เพ็ชร ศรีวิชัย
+เพ็ชรรัตน์ อารีรักษ์
+เพ็ชราภรณ์ วสุนธรามาศ
+เพ็ญ เชื้อบุญ
+เพ็ญ แสงโชติ
+เพ็ญจันทร์ จิระสินอนันต์
+เพ็ญจันทร์ ปั้นตระกูล
+เพ็ญจันทร์ ศรีจันทร์ดี
+เพ็ญจิต ลิ่วศรีสกุล
+เพ็ญณีย์ ปิงยอง
+เพ็ญทิพา บุญชูกุศล
+เพ็ญนภา บำเพ็ญเกียรติ
+เพ็ญนิดา ตุลวรรธนะ
+เพ็ญประภา ตรีรุ่งเรืองกุล
+เพ็ญประภา แสนเมืองมา
+เพ็ญพร เตชะพิทักษ์เผ่าพันธุ์
+เพ็ญพรรณ จ้อยรุ่ง
+เพ็ญพรรณ เรี่ยวพานิชกุล
+เพ็ญพักตร์ นันธิราภากร
+เพ็ญพิศ ครุธวีร์
+เพ็ญรัตน์ บุณยศิริกุล
+เพ็ญฤดี พุทธปราโมทย์
+เพ็ญศรี กลิ่นประทุม
+เพ็ญศรี ไข่แก้ว
+เพ็ญศรี จิตต์จง
+เพ็ญศรี ชิดประสงค์
+เพ็ญศรี ณ ระนอง
+เพ็ญศรี โตอนันต์
+เพ็ญศรี นภาศรี
+เพ็ญศรี บูรญะบุญวงศ์
+เพ็ญศรี พระกำกับ
+เพ็ญศรี ภังคานนท์
+เพ็ญศรี รัตนรุ่งชัย
+เพ็ญศรี วงษ์ปาน
+เพ็ญศรี ศรีสำราญรุ่งเรือง
+เพ็ญศรี สาระกุล
+เพ็ญศรี แสงเจริญ
+เพ็ญศรี อำนวยผล
+เพ็ญศิริ คัมภิรานนท์
+เพ็ญศิริ รักษาวงษ์รัตน์
+เพ็ญสินี ต้องสกุลโรจน์
+เพ็ญแข คงพิทักษ์ศิลป์
+เพ็ญแข ภัทรดิลก
+เพ็ญแรม มนูญชัย
+เพ้ง ล้อมเพชรพลอย
+แพรว โตโคกขาม
+แพรวพรรณ รังษีกิจโพธิ์
+โพชนะ มาศเขื่อนขันธ์
+โพธิ์พันธุ์ ใจมีธรรมดี
+ไพจิต วศินปริญญา
+ไพจิตร ชัยพฤกษ์
+ไพจิตร มาดี
+ไพจิตรา ศุขสมาน
+ไพฑูรย์ กันภัย
+ไพฑูรย์ คงคาสุริยฉาย
+ไพฑูรย์ เจนจาคะ
+ไพฑูรย์ แซ่เตี้ยว
+ไพฑูรย์ ทองกระจ่าง
+ไพฑูรย์ บัวคลี่
+ไพฑูรย์ ผลภาษี
+ไพฑูรย์ พูลสวัสดิ์
+ไพฑูรย์ รังษิยาภา
+ไพฑูรย์ วรสัมปุรณะ
+ไพฑูรย์ ศิวะพรชัย
+ไพฑูรย์ สุนทรวัฒน์
+ไพฑูรย์ อ่อนศิริ
+ไพฑูลย์ จรูญเรือง
+ไพบูรณ์ คำบุรี
+ไพบูลย์ กิจทวีสมบูรณ์
+ไพบูลย์ ขาวบริสุทธิ์
+ไพบูลย์ จันทร์ตรี
+ไพบูลย์ ใจตาบ
+ไพบูลย์ แซ่ตั้ง
+ไพบูลย์ ต่ายสกุลทิพย์
+ไพบูลย์ เทพจินดา
+ไพบูลย์ นิลาสน์
+ไพบูลย์ ประไพทอง
+ไพบูลย์ พฤทธิพัฒกุล
+ไพบูลย์ พุ่มอาศัย
+ไพบูลย์ มณีโรจน์
+ไพบูลย์ รังสีกุลพงศ์
+ไพบูลย์ ลีลาภาณุมาศ
+ไพบูลย์ ว่องไวยิ่งเจริญ
+ไพบูลย์ ศรีสันติรัตน์
+ไพบูลย์ สมัครการ
+ไพบูลย์ สุขสันต์
+ไพบูลย์ แสงแก้ว
+ไพบูลย์ อมรอนุกูล
+ไพบูลย์ เอมพันธุ์
+ไพมนา เหล่าขัติยะ
+ไพรรินทร์ ธูปสุวรรณ์
+ไพรวัลย์ เพียรลุประสิทธิ์
+ไพรัก ภู่โสภา
+ไพรัช จันทร์เปล่ง
+ไพรัช แซ่เฮ้ง
+ไพรัช ธรรมแพทย์
+ไพรัช ปานทิพย์อำพร
+ไพรัช ไพบูลย์มั่นคง
+ไพรัช ลี้เจริญ
+ไพรัช ศิริชาติ
+ไพรัช เสวกพิบูลย์
+ไพรัช โอสถเจริญผล
+ไพรัตน์ จรรยหาญ
+ไพรัตน์ ธรรมชาติ
+ไพรัตน์ รัตน์พงษ์โสภิต
+ไพรัตน์ แสวงกิจ
+ไพริน ผลหว้า
+ไพรินทร์ จันทร์มณี
+ไพรินทร์ พ่วงสุนทร
+ไพรินทร์ เสือน้อย
+ไพลิน จิตรเจริญ
+ไพลิน ปาระพงศ์
+ไพลิน ว่องประชานุกูล
+ไพลิน อินทร์สุวรรณ
+ไพศรี ธูปเทียนทอง
+ไพศาล เกียรติเกษมศานต์
+ไพศาล จ๋วงพานิช
+ไพศาล เจิดจำนงวิทยากุล
+ไพศาล เชียงมา
+ไพศาล ตั้งจริยธรรม
+ไพศาล ทั้วสุภาพ
+ไพศาล นิลนที
+ไพศาล ประภาอภิรัตน์
+ไพศาล พรหมมณี
+ไพศาล โพธิ์นิ่มแดง
+ไพศาล ยุ้นพันธ์
+ไพศาล ลาวัณยากุล
+ไพศาล วรโพธิ์
+ไพศาล ศรีเกตุ
+ไพศาล สำราญกิจดำรงค์
+ไพศาล เสรีรักษ์
+ไพศาล อยู่เย็น
+ไพศาล โอนเงิน
+ไพสิฐ จริยะเศรษฐ์
+ไพเราะ เกิดวิชัย
+ไพเราะ ทองใบ
+ไพเราะ รีรัตนชาติ
+ไพเราะ อุ่นนิ่ม
+ไพโรจน์ กาญจนพิบูลย์
+ไพโรจน์ ขจรวัชรา
+ไพโรจน์ จรุงภัสสร์ขจร
+ไพโรจน์ จีนขจร
+ไพโรจน์ ชัยพร
+ไพโรจน์ ซึ้งเกษม
+ไพโรจน์ ตลอดกาล
+ไพโรจน์ ทรัพย์สมบูรณ์
+ไพโรจน์ ธีรเกษตรชัย
+ไพโรจน์ บริบูรณ์
+ไพโรจน์ ประสิทธิ์พร
+ไพโรจน์ พงษ์จินดาวานิช
+ไพโรจน์ พิภักกิจ
+ไพโรจน์ ภัทรสุขเสริม
+ไพโรจน์ เมฆวิภาต
+ไพโรจน์ รุ่งบรรลือศักดิ์
+ไพโรจน์ ลิ่มกาญจนโชติ
+ไพโรจน์ วรรณสถิตย์
+ไพโรจน์ ศรจิตติ
+ไพโรจน์ โศจิศุภร
+ไพโรจน์ สิงห์อุสาหะ
+ไพโรจน์ สุวรรณสุทธิ
+ไพโรจน์ หาญพงษ์ธรรม
+ไพโรจน์ อัตตสัมพันธ์
+ไพโรจน์ โอวาทจรูญจิตต์
+ฟองคำ รุจิแสงอนันต์
+ฟองแก้ว พลนะเดช
+ฟาติมะ เกตุประสิทธิ์
+ฟารีดา เซ็มสมพร
+ฟิลิป ปิ่นสุกาญจนะ
+ฟื้น หิรัญสุขสันต์
+ฟู บุญเพ็ง
+ฟูเชียง แซ่จ๋าว
+เฟื่องฉัตร สุคนธ์ขจร
+เฟื่องลัดดา กิจสนาโยธิน
+ภคพร ภักศรีวงษ์
+ภคินี สรพงศ์ไพรัช
+ภมร ฉ ตระกูล
+ภรณ์พรรณ รัตสิรยากร
+ภรณี พงศ์เลิศนภากร
+ภรณ์เพ็ญ แก้วช่วย
+ภราดร รอดเลี่ยม
+ภวัญญา ล้วนใจสนธิ์
+ภักดี จันทพันธ์
+ภักดี พ่วงภักดี
+ภักดี สุพรพัฒนา
+ภัคพงษ์ กุลชล
+ภัชรี ปิ่นประเสริฐ
+ภัททโก โชติกไกร
+ภัทร์กมล เต็มสุข
+ภัทรพร จารุพัฒน์
+ภัทรภร ธนาเกษมพล
+ภัทร์วรรณ คงอรรถการ
+ภัทรา เชี่ยววุฒิภาค
+ภัทรา พรพงศ์ทวีวัฒน์
+ภัทรา วันดี
+ภัทราพร ซื่อกิตติศักดิ์
+ภัทราภรณ์ เอียสกุล
+ภัทราวุธ พันธุเมธาวงศ์
+ภัทรียา บุญยมโนนุกุล
+ภัสรา พงษ์อุดทา
+ภัสสรา เดชะศิริ
+ภาคภูมิ ชาญพิชัย
+ภาคย์ กรดนิยมชัย
+ภาณี เชิดชื่น
+ภาณี สิริเวชกุล
+ภาณุ บริสุทธิ์
+ภาณุธัช พรหมปัญญากุล
+ภาณุมาศ กุศลลานุกูล
+ภาณุวัฒน์ จำจด
+ภาณุศักดิ์ อินทรรักษา
+ภานุ บุตรศรี
+ภานุมาศ พูนสุขโข
+ภานุวุธ นวลสา
+ภารณี อับดุลลา
+ภารดี โรจนวัฒนวุฒิ
+ภาวณี สมันตเวคิน
+ภาวดี อมรพัชระ
+ภาวนา นราจันทร์
+ภาวนา ศรีอรุณ
+ภาวิณี กลิ่นขจร
+ภาวิณี ทองมาก
+ภาวิณี วชิรปัญญานุกูล
+ภาวิต โตดิลก
+ภาวี มีวัตถา
+ภาสกร จิตตรอง
+ภาสกร เหมกรณ์
+ภิชญรัตน์ วงศ์วสุสิน
+ภิญโญ ขันทอง
+ภิญโญ ธันวารชร
+ภิญโญ รพีพิศาล
+ภิญโญ หิโตปกรณ์
+ภิรมณ์ คงอยู่
+ภิรมย์ ฉายารักษ์
+ภิรมย์ พฤกษชาติเจริญ
+ภิรมย์ สงวนนาม
+ภิเศก ใจอ่อนน้อม
+ภุชงค์ ตัณฑ์ไพโรจน์
+ภุชชงค์ ชาญธนากิจ
+ภู ใจชาย
+ภูมิ โสภาจารีย์
+ภูมิพิชญ์ จรรยาวิจักษณ์
+ภูริดา โทธกานันท์
+ภูวดล เรืองโกสินทร์
+ภูวนารถ อุเทศนันทน์
+ภูษิต ประธานพิพัฒน์
+ภูเก็จ แสดงธรรม
+เภาวนา อินทะแสง
+มงคล กษิติประดิษฐ
+มงคล เขียวผึ้ง
+มงคล จันทร์แสงรัตน์
+มงคล ฉิมเล็ก
+มงคล แซ่กุ่ย
+มงคล ตั้งจิตต์วัฒนา
+มงคล ทับทิมชูสุวรรณ
+มงคล นาคะมา
+มงคล ปาณะบรรจง
+มงคล พ่วงพงศ์
+มงคล ภาสกรจรัส
+มงคล ยืนยงหัตถภรณ์
+มงคล ลิ่วมโนมนต์
+มงคล วินิจเจริญศรี
+มงคล ศิริแสงชัยกุล
+มงคล สีดา
+มงคล แสงวงศ์วาณิชย์
+มงคล อยู่นุช
+มงคล เฮงบุญสุขกุล
+ม่งเซี้ย แซ่ตั้ง
+มณฑริก เดชหนู
+มณฑล ใบบัว
+มณฑล อัศวภัทรากร
+มณฑา จรุงกลิ่น
+มณฑา แซ่เฮ้ง
+มณฑา เนียมศิริ
+มณฑา พุฒตาล
+มณฑา เลิศทนุพงศ์
+มณฑา สันติธัญญาโชค
+มณฑา เหลืองลัญจกร
+มณฑาทิพย์ โตแย้ม
+มณฑิตา อู่ทรัพย์
+มณฑ์ สมพันธ์
+มณพิรา อางนานนท์
+มณี โกศลเมธากุล
+มณี เจริญสุข
+มณี แซ่โค้ว
+มณี ทองเกษร
+มณี บุญประสิทธิ์
+มณี พัฒนะเอนก
+มณี มูฮำมัดโน
+มณี วงศ์กรุด
+มณี ศิริวัฒธนะตระกูล
+มณี สุนทรลิปิกร
+มณี อัศวจินดาวัฒน์
+มณีนาฏ พงศ์ภควัตร
+มณีรักษ์ จินตนาบรรเจิด
+มณีรัตน์ แจ้งแจ่มจิตต์
+มณีรัตน์ ถินปวัติ
+มณีรัตน์ พรกุลวัฒน์
+มณีรัตน์ เลิศสุคนธ์
+มณีรัตน์ สุวรรณภาภรณ์
+มณีวรรณ ณ นคร
+มณีวัลย์ อมรธีระกุล
+มณเฑียร ชัยมิตรเจริญ
+มณเฑียร พูลศิริ
+มณเฑียร อาจบรรจง
+มธุรส บุตรดี
+มนชยา ไกรฤกษ์
+มนณัชชา ชูชาติไทย
+มนต์ชัย โชติหิรัณรัตน์
+มนต์ชัย ไผทรักษาธรรม
+มนต์ชัย วิสุทธิสวัสดิ์
+มนต์ชัย เอี่ยมรัตนชัย
+มนตร์วงศ์ ภัทรวิทย์
+มนตรี แก้วเล็ก
+มนตรี จริยากูล
+มนตรี เจริญรัตน์
+มนตรี ชูนามชัย
+มนตรี ดาวเรือง
+มนตรี แตงเจริญ
+มนตรี ธรรมรังษี
+มนตรี เนียมจีน
+มนตรี ประเสริฐวิทยาการ
+มนตรี พรพจน์ธนมาศ
+มนตรี เพิ่มผลชัยกุล
+มนตรี มานะทัต
+มนตรี รอดสวัสดิ์
+มนตรี ลีลาโสภิณ
+มนตรี วิพันธ์วรพงษ์
+มนตรี ศิริตันติธรรม
+มนตรี สังขวุฒิชัยกุล
+มนตรี สุบรรณพงษ์
+มนตรี หฤไชยะศักดิ์
+มนตรี อังศุธนสมบัติ
+มนตรี เอื้ออมร
+มนต์ เชตมี
+มนทิพย์ วิชัยธนพัฒน์
+มนธิรา เอกบุญยืน
+มนวิภา ประชัญคดี
+มนันย์ บุญยะชัย
+มนัส ขันธิโชติ
+มนัส จันทวิช
+มนัส ชัยสุภา
+มนัส ดีชมจันทร์
+มนัส ทองสะอาด
+มนัส นิ่มนวล
+มนัส ประจักษ์จิตร์
+มนัส พลับบุรี
+มนัส ภาคีธรรม
+มนัส ยอแสง
+มนัส เลิศวัฒนาเสรี
+มนัส ศรีธนสาร
+มนัส สอิ้งทอง
+มนัส สุภาวิตา
+มนัส องค์สรณะคม
+มนัส โอสถจันทร์
+มนัสวี พยัคฆนันทน์
+มนุชญ์ วัฒนโกเมร
+มนู โชติรัต
+มนู ปิ่นภู่
+มนู วาวี
+มนู อัศวเกศมณี
+มนูญ ชูศิริอุทัย
+มนูญ นุตวงษ์
+มนูญ พูลทวี
+มนูญ วิกกมานันท์
+มนูญ หินลอย
+มนูศักดิ์ บุญมาเลิศ
+มยุรา จีรจริยาเวช
+มยุรี กลิ่นขจร
+มยุรี จงอุดมทรัพย์
+มยุรี เฉลิมเขตต์
+มยุรี เดชสมฤทธิ์ฤทัย
+มยุรี ธนาเกียรติภิญโญ
+มยุรี ปิ่นแก้ว
+มยุรี เพ็ชร์พนมพร
+มยุรี แย้มเกษร
+มยุรี วงษ์สมบูรณ์
+มยุรี สถาพรวุฒิคุณ
+มยุรี ไสยสมบัติ
+มยุรี เอี่ยมเจริญ
+มรกต จันทร์ทอง
+มรกต ศยามล
+มรินา ด่านวนิช
+มลฑา พิมพ์เหลี่ยม
+มลผกา สรรเพชดาญาน
+มลฤดี ประสงค์ผล
+มลวิภา ใจหลัก
+มลิ หลีสุขเสริฐ
+มลิวัลย์ แก้วสพาน
+มลิวัลย์ พจนสัจ
+มลิวัลย์ สุขประสาท
+ม่วย แซ่คู
+ม่วย สถิรชวาล
+ม่วยเกี้ย ลาจังหรีด
+ม้วย เหล่าสิริภูมิ
+มอซ์ กามรูดิน
+มะนิตย์ เชื้อนุช
+มะลิ กลิ่นมาลา
+มะลิ จิวะสมหวัง
+มะลิ ด้วงเงิน
+มะลิ นามมนตรี
+มะลิ พิริยะอนนท์
+มะลิ รูปพรหม
+มะลิ สาธุ
+มะลิ อมรินทร์เทวา
+มะลิวรรณ รายณะสุข
+มะลิวัลย์ แซ่ตั้ง
+มะลิวัลย์ วัฒนกิตติพร
+มะหะหมาดราหวี นาปาเลน
+มังกร จีรภัทร์
+มังกร ยาน้อย
+มัจฉรี แซ่เตี๋ยว
+มัณฑนา กู้สุวรรณวิจิตร
+มัณฑนา ธาดาสีห์
+มัณฑนา รัตชะถาวร
+มัณฑนา อยู่ยงค์
+มัด เดชะชีพ
+มัทนา โชควรวัฒนกร
+มัทนา โอสถหงษ์
+มัธยา รวมทรัพย์
+มันทนา ศรสิงห์
+มันโมฮันซิงห์ จาวลาห์
+มั้นฟา แซ่เตียว
+มัลลิกา ชัยสิริโรจน์
+มัลลิกา พงศ์เต็มสุข
+มัลลิกา ศรีวีระวานิชกุล
+มัลลี จงเกษม
+มาก เหมือนจันทร์
+มาณพ รุจนิสรกุล
+มาณี บุญหลง
+มาดี แซ่โค้ว
+มานนท์ โตวงศ์ศรีเจริญ
+มานพ ขำชื่น
+มานพ จิตตเกษม
+มานพ ซับซ้อน
+มานพ ทรงเสี่ยงชัย
+มานพ นิ่มนวลอนันต์
+มานพ ปิยะสอน
+มานพ พึ่งอำนวย
+มานพ มูฮำหมัด
+มานพ ลีลาหิรัญ
+มานพ ศรีสงวน
+มานพ สุขวงษ์ศิลป์
+มานพ เหล่าขวัญสถิตย์
+มานวิภา มาศพงศ์
+มานะ งามวัชรสกุล
+มานะ เชี่ยวสงวน
+มานะ ทรัพย์งามศิริ
+มานะ บุญประเสริฐ
+มานะ พิมพ์สมุทร
+มานะ รัตนงามกุล
+มานะ วิสุทธิ์สมุทร
+มานะ สีผ่อง
+มานะ อินทรพินทุวัฒน์
+มานัต ยอดมนต์
+มานัส รุ่งเทียม
+มานิจ ทิมพัฒนพงศ์
+มานิดา รัชดาทิตย์
+มานิต เจียรดิฐ
+มานิต นิลเขตร์
+มานิต ยศอนันตกุล
+มานิต สุจริตวัฒนศักดิ์
+มานิตย์ กาหลง
+มานิตย์ จุนทการ
+มานิตย์ ดิษฐวิศาล
+มานิตย์ นาคไทย
+มานิตย์ เผือกวัฒนะ
+มานิตย์ มีชนะ
+มานิตย์ วงศ์กิตติพัฒนา
+มานิตย์ สัจจเดชะ
+มานิตย์ อนุรัตน์พานิช
+มานิสา เมฆศิริกุล
+มานีรัตน์ มัทธวรัตน์
+มารยาท จัตุรงค์
+มารศรี จันทร์เมือง
+มารศรี ยะอุโมงค์
+มารศรี อัสวะวิสิทธิ์ชัย
+มาริษ ท่าราบ
+มาริสา กาญจโนภาส
+มาริสา สุทธิวรรณารัตน์
+มารุจา สุรพันธุ์
+มารุต สุนทรศิริบุญญา
+มาลัย ขำเจริญพร
+มาลัย ชมพูบุตร
+มาลัย ดอกบัวหลวง
+มาลัย นาให้ผล
+มาลัย พรหมสวัสดิ์
+มาลัย ยังสว่าง
+มาลัย ศรีช้างอิ่ม
+มาลัย แสงงิ้ว
+มาลัยกรอง มูลศาสตร์
+มาลา แซ่โง้ว
+มาลา หิรัญฤทธิ์
+มาลิน ชลานุเคราะห์
+มาลินี กำเนิดดิษฐ์
+มาลินี ชอุ่มพฤกษ์
+มาลินี ทรัพยวณิช
+มาลินี แป้งประสิทธิ์
+มาลินี ยอดโพธิ์ทอง
+มาลินี ศรีสุวัจรีย์
+มาลินี หฤทัยสิริรัตน์
+มาลี กลั่นจังหรีด
+มาลี กุนะวงษ์
+มาลี ขันติวงวาร
+มาลี เครือเฉลิมพันธ์
+มาลี จันใจเด็ด
+มาลี เจริญเกษกิจ
+มาลี ชัยวนิชยา
+มาลี เชื้อศิริ
+มาลี แซ่ตัน
+มาลี แซ่เต็ง
+มาลี ดำรงกิจกุลชัย
+มาลี ตันติปิฏก
+มาลี ทวีศรี
+มาลี ธรมธัช
+มาลี นิภากรพันธ์
+มาลี บุญรอด
+มาลี ปานจันทร์
+มาลี พงศ์สำราญ
+มาลี พันผึ้ง
+มาลี แพร่ศรีตระกูล
+มาลี มนต์วิเศษ
+มาลี ยวงเงิน
+มาลี รัตนานนท์
+มาลี ลิมปิยากร
+มาลี วงศ์แหลมทอง
+มาลี วิลัยสัมพันธ์
+มาลี ศิริคงสุวรรณ
+มาลี สร้างความคิด
+มาลี สินพานิช
+มาลี สุรัตนชัยการ
+มาลี หนึ่งดวงกมล
+มาลี อติแพทย์
+มาลี อาทร
+มาลี อุ้ยอิ่มทรัพย์
+มาลีพันธ์ รัฐสมบูรณ์
+มาลีรัตน์ ศุภทนต์
+มาวิน ศรีมณีพันธ์
+มาเรีย วรรณาพงศ์
+มาเรียม บูรณะรุ่งเรืองกิจ
+มาเรียม สุทธิศีลธรรม
+มาโนช กำจัดภัย
+มาโนช ชัยประเสริฐ
+มาโนช ธรรมรัชสุนทร
+มาโนช เปรมแก้ว
+มาโนช มีศรี
+มาโนช วิชิตวาสุเทพ
+มาโนช แสงสุข
+มาโนชญ์ ชนะภัย
+มาโนชญ์ อรุณรัศมี
+ม้าเสี่ยง แซ่ม้า
+มิ่งขวัญ เมตตากรุณากุล
+มิตร นาคเสน
+มิตรภาพ บุญชูช่วย
+มิ่น เหล่าชาญกิจวนิช
+มี ทองเรือง
+มีชัย นะรา
+มีชัย หงษ์พานิช
+มีนา โรจน์วิชชา
+มีศิริ กิจไพศาลดำรง
+มุก บุญยืน
+มุกดา ฉัตรแก้ว
+มุกดา เทศบรรเทิง
+มุกดา มั่นศิริ
+มุกดา ศิลาโรจน์
+มุกดา อิทธิธานันท์
+มุ่งมุ้ย แซ่หยิน
+มุทิตา ถนอมทรัพย์
+มุยเตียง ศิริอัครกรกุล
+มุ่ยเค็ง แซ่เฮ้ง
+มุ้ยง้อ แซ่โง้ว
+มุสตาฟา มะหะหมัด
+มูหะหมัด เสือสมิง
+มโน จงธนูธรรม
+มโนรส ยอดยิ่ง
+เมตตา เกิดนาค
+เมตตา ปิตยานนท์
+เมตตา สิทธิสุวรรณ
+เมทินี ดาราพัตร
+เมธา แซ่เฮ้ง
+เมธา วงศ์วานิช
+เมธาณี งามทวีวิวัฒน์
+เมธินี ทรัพย์ประเสริฐ
+เมธี จรูญประสิทธิ์พร
+เมธี บัวศรี
+เมธี รัตนตั้งตระกูล
+เมธี หงษ์ทอง
+เมษฐรัตน์ มนเทียรทอง
+เมี่ยวจิง แซ่อื้อ
+เมี้ยวหยิ้น แซ่กอ
+เม่งซก แซ่จิว
+เม้ง แซ่ฉั่ว
+แมน ฉายานนท์
+แมรี่ แวนดา
+แม้นมาตร แอ้นชัยภูมิ
+โมฬี คงกลาง
+ไม นวลเนตร
+ไมตรี ชูมณี
+ไมตรี บัวเนตร
+ไมตรี เลิศเพียรพิทยกุล
+ไมตรี หาญธนวุฒิชัย
+ไม้ ศรีสง่า
+ยง เตชะพงศธร
+ยงค์ชัย ทศพลอภินันท์
+ยงชัย คุณธรรมดี
+ยงยศ ปริพฤติพงศ์
+ยงยุทธ กิจพงษ์นิกร
+ยงยุทธ ฆังนิมิตร
+ยงยุทธ ใจเจริญธรรมกุล
+ยงยุทธ แซ่เตื้อง
+ยงยุทธ ถีระวงศ์
+ยงยุทธ นาคะพงศ์
+ยงยุทธ ปัญญาสกุลวงศ์
+ยงยุทธ พุทธสุวรรณ
+ยงยุทธ เมตะศิริ
+ยงยุทธ ลอยเมฆ
+ยงยุทธ วิเชียรสรรค์
+ยงยุทธ สมิทธิเดชกุล
+ยงยุทธ สุวรรณเพ็ชร
+ยงยุทธ อ่องบางน้อย
+ยงยุทธิ์ วรวุฒิ
+ยงวัฒน์ บูรณะปฏิมากร
+ยงสิน เตชามหชัย
+ย่งฮวด แซ่ลี้
+ย้ง แซ่ลี้
+ยนต์ บุญเหลือหล่อ
+ยมโดย ชลายนนาวิน
+ยรรยง บุญสมพงษ์
+ยรรยง ศุภวิฑูรย์
+ยรรยงค์ พลศิริ
+ยวง ลอยสา
+ย้วน พันนก
+ยศ สมบูรณ์จันทร์
+ยศราวดี เปี่ยมอรุณ
+ยอด กลิ่นกลั่น
+ยอด สันตินิเวศน์
+ยอดธง เจริญจงวิทยา
+ยอดศักดิ์ หล่อจิตต์เสียง
+ยะ เกิดอยู่
+ยักโมฮันซิงห์ ยักโมฮันซิงห์
+ยัสบีรซิงห์ ยัสบีรซิงห์
+ยาดา เศวตตานุสรณ์
+ยาใจ แซ่ลี้
+ย้า เอกประเสริฐ
+ยิ่งยง แซ่ลิ้ม
+ยิ่งยศ บุนนาค
+ยิ่งศักดิ์ ปัจชามาตย์
+ยิน เสมอเชื้อ
+ยินดี พรมเกตุ
+ยินดี อินทรมงคล
+ยิ้ม นาสมนึก
+ยิ้ว หลิวประเสริฐ
+ยี่สุ่น ศุกระวณิช
+ยืนยง นุภาพ
+ยุกยิ้น เชียงฉิน
+ยุคลธร โออดิศัย
+ยุทธ เจริญคติธรรม
+ยุทธ หนุนภักดี
+ยุทธชัย น้ำทิพย์
+ยุทธนันท์ เกษียรธาดานนท์
+ยุทธนา จริงใจกุล
+ยุทธนา ดุจติปิยะ
+ยุทธนา บุณยะวุฒกุล
+ยุทธนา โภคประเสริฐ
+ยุทธนา วานิชอังกูร
+ยุทธนา สุจินตวงษ์
+ยุทธนา เอี่ยมสินธุ์
+ยุทธพงษ์ ฉ โรจน์ประเสริฐ
+ยุทธพล ไกรอาบ
+ยุทธศักดิ์ แซ่โง้ว
+ยุทธศิลป์ เกษรศุกร์
+ยุธิตา แซ่เฮ้ง
+ยุพดี กาญจนา
+ยุพดี ชีพอารนัย
+ยุพดี บริสุทธิ์
+ยุพดี รักการดี
+ยุพดี สนใจยุทธ
+ยุพดี เอี่ยมศุภสวัสดิ์
+ยุพยงค์ พิริยะกิจ
+ยุพา ก๋งน้อย
+ยุพา ขันทอง
+ยุพา จิตรโสภาภรณ์
+ยุพา ชุ่มชาติ
+ยุพา แซ่โค้ว
+ยุพา ทิพยพรเกษม
+ยุพา บัวธรา
+ยุพา เปี๊ยะขายคล่อง
+ยุพา เพ็ญสายใจ
+ยุพา ยิ่งดำนุ่น
+ยุพา เลอยศเกรียงไกร
+ยุพา ไวทยะวิญญู
+ยุพา สามุติอุดมรัตน์
+ยุพา แสงเสริม
+ยุพา อานุภาพมงคล
+ยุพาพร พรหมโชติ
+ยุพาภรณ์ กลั่นกลีบ
+ยุพาวดี ยินดียั่งยืน
+ยุพิน กำเหนิดวัน
+ยุพิน คล้ายสุบรรณ
+ยุพิน จินดาสันต์
+ยุพิน ชื่นสวัสดิ์
+ยุพิน ดอนอุไพร
+ยุพิน ทรงประเสริฐกุล
+ยุพิน เธียรพาณิช
+ยุพิน บุตรเนียม
+ยุพิน พนาชื่นวงศ์สกุล
+ยุพิน ไพรินทราภา
+ยุพิน เมืองวิลัย
+ยุพิน ลีสุวิชากร
+ยุพิน ศรีชัย
+ยุพิน สฤษดิวุฒิ
+ยุพิน สุทธิสุนทร
+ยุพิน หาญวงศ์
+ยุพิน อึ๊งดำรง
+ยุพเยาว์ ศิริเอี้ยวพิกูล
+ยุภา เจ๊ะเลาะ
+ยุภา แสงเดช
+ยุภี เคหะรอด
+ยุรี แซ่โอ้ว
+ยุวดี กระจ่างใจ
+ยุวดี เจนรักมาตุภูมิ
+ยุวดี เตชะเชวงกุล
+ยุวดี ปรมางกูร
+ยุวดี มิตรภักดี
+ยุวดี วัฒนพิทักษ์กุล
+ยุวดี แสงด้วง
+ยุวนา ลวเวชกุล
+ยุวภา บุญเลิศ
+ยุวลักษณ์ เกียรติปัญญา
+ยุเพ็ญ ชูศักดิ์แสงทอง
+ยูซบ อับดุสลาม
+ยูสบ หลงจิ
+ยู่เตียง แซ่เซีย
+เยา ไลไว
+เยาวดี แย้มจุไร
+เยาวนิจ นิติธรรม
+เยาวนุช พุทธิพิรกุล
+เยาวภรณ์ สิริวโรธากุล
+เยาวภา ทัพรัตน์
+เยาวภา วิลัยปาน
+เยาวมาลย์ ทองพรหม
+เยาวรัตน์ ความชอบ
+เยาวลักษณ์ กรันตานนท์
+เยาวลักษณ์ ไชยฤทธิ์
+เยาวลักษณ์ บุญญาวิวัฒน์
+เยาวลักษณ์ มณีโชติ
+เยาวลักษณ์ วงศาโรจน์
+เยาวลักษณ์ สุวรรณลภาพร
+เยาวเรศ กะตากูล
+เยาวเรศ วรรณสุข
+เยียม พุ่มพฤกษ์
+เยี่ยม อินทรกำแหง
+เยื้อน เกตุลอย
+เย็น กองโฮม
+เย็นจิต จิราพัฒนพงศ์
+เย็นจิตร์ ประทีปแสงรัตน์
+แย้ม โกมินา
+โยธิน คงเจริญ
+โยธิน พงศ์พัชราพันธุ์
+โยธิน ศิริโสภณ
+ใย ปัถวี
+รจนา จักรฤทธิพงศ์
+รจนา พาดี
+รจนา แสงโสภณ
+รจิต รักยอด
+รณ สาสนสิทธิ์
+รณชัย นิติชาคร
+รณชัย เอนกอมรชัย
+รณรงค์ โฉมศุภางค์
+รณสิทธิ์ รัตนเกษตร
+รติพรรณ รัตนิต
+รพินทร์ วิชชุไตรภพ
+รพีพรรณ เฉลิมชัยโกศล
+รพีวรรณ สัมปชัญญะ
+รมย์ชลี บุตรไชย
+รวงทอง ส้มเกลี้ยง
+รวมพร ภานันทน์
+รวยริน วจะโนภาส
+รวิวรรณ ไชยวสุ
+รวีนุช คุณธรรมสถิต
+รวีวรรณ พงษ์ดนตรี
+รวีวรรณ อารีธรรมศิริกุล
+รสนา วัฒนาสุนทรพงศ์
+รสรินทร์ กนกอุดม
+รสสุคนธ์ ตามศรี
+รสสุคนธ์ ศรีติมงคล
+รอง มูลมณี
+รอฟะห์ เซ็นหลวง
+รอเบี๊ยะ ยิ่งนิยม
+ระตา อินทร์แก้ว
+ระบิล โสภณพนิช
+ระพี ประสพชัย
+ระพีพรรณ ขอบชิต
+ระพีพรรณ ลำจวนจิตต์
+ระพีพันธ์ อารีย์
+ระย้าทิพย์ อินทรทูต
+ระวิ บุญผดุง
+ระวิวรรณ ประทุมพวง
+ระวี นันทสำเริง
+ระวีวรรณ เจนการ
+ระวีวรรณ ภัทรประภา
+ระวีวรรณ์ ตาชูชาติ
+ระเบียบ กิจกล้า
+ระเบียบ จิตรบำรุง
+ระเบียบ ทับจันทร์
+ระเบียบ ปิ่นแก้ว
+ระเบียบ มานิกพันธุ์
+ระเบียบ วรสุขสังข์
+ระเบียบ เสือสมิง
+ระเวง ลัยศรี
+รักชนก แซ่เจีย
+รักพงษ์ วงษ์จำนงค์
+รักษ์ กะรีรัต
+รักษ์ อ่อนนาง
+รังทอง วีระพัฒน์
+รังษี เทศพันธ์
+รังสรรค์ กัมสุวรรณ
+รังสรรค์ จุฬาธรรมกุล
+รังสรรค์ ตันติเวชกุล
+รังสรรค์ ปัญญาภา
+รังสรรค์ มิตรพันธ์พานิชย์
+รังสรรค์ วิบูลพัฒนะวงศ์
+รังสรรค์ สุนทรนันท์
+รังสรรค์ เอี่ยมจำรัส
+รังสิต เดชะกุล
+รังสิมันต์ ฤกษ์อินทรอารีย์
+รังสิมา แสงหิรัญวัฒนา
+รัช วรรณวัฒนะ
+รัชฎา จิตติวรรณ
+รัชฎา สิริวัฒนวงศ์
+รัชฎาวรรณ ยะตินันท์
+รัชดา เคยมีทรัพย์
+รัชดา รุ่งเศวตกุล
+รัชดาพร สุขเกษมรัตน์
+รัชตฤดี รุจิณรงค์
+รัชนิกร แสงกระจ่าง
+รัชนี กิตติรังสี
+รัชนี คาจิจิ
+รัชนี จิรทวีวงศ์
+รัชนี ชวตานนท์
+รัชนี แซ่ลิ้ม
+รัชนี ตรีบัญชาวงศ์
+รัชนี ทับละคร
+รัชนี นาคสุข
+รัชนี บุตรสี
+รัชนี แผ่ประเสริฐ
+รัชนี พูลทรัพย์
+รัชนี มาฬมงคล
+รัชนี รัตนโกวิท
+รัชนี ลือวิมลกฤษฐ
+รัชนี วิรัชนีย์
+รัชนี สกุลสุรรัตน์
+รัชนี สุกษมรัตน์
+รัชนี แสงสีทอง
+รัชนี อภิชัยกุล
+รัชนี เอกนวาระชาติ
+รัชนีกร มั่งมีผล
+รัชนีบูลย์ มาไพศาลย์
+รัชนีภรณ์ แซ่ลิ้ม
+รัชนีวรรณ ก๋อยสุวรรณ
+รัชนีวรรณ ละออเอี่ยม
+รัชพงษ์ ศิริมี
+รัชรี แซ่ลิ้ม
+รัญจวน วงษ์กล้าหาญ
+รัฐการ เกิดดี
+รัฐพล งามสมุทร
+รัฐาภิรักษ์ ตัณฑประศาสน์
+รัตติกร ตั้งพานทอง
+รัตติพร กรสุทธิโสภณ
+รัตติยา พูลอร่าม
+รัตน์กุล ณ วิทยานันท์
+รัตน์ชฎา พันธ์นิกุล
+รัตนมณี แพทย์พันธ์ศรี
+รัตนะ คุณานพรัตน์
+รัตนา กลั่นแก้ว
+รัตนา กุศล
+รัตนา เขียนภักดี
+รัตนา งามขำ
+รัตนา จิตต์จารึก
+รัตนา ใจปาน
+รัตนา ชินวัฒนา
+รัตนา แซ่ตั้ง
+รัตนา ณ ตะกั่วทุ่ง
+รัตนา ตารพล
+รัตนา ทองคล้าย
+รัตนา ธีระมงคลกุล
+รัตนา เนียมนำผล
+รัตนา เบ็ญจโภคี
+รัตนา เปลี่ยนสี
+รัตนา พลอยประเสริฐ
+รัตนา พุกบางจาก
+รัตนา ภาสวรวิทย์
+รัตนา มีลักษณะ
+รัตนา รักษ์ชน
+รัตนา โรจน์มหามงคล
+รัตนา เลี่ยวปรีชา
+รัตนา วสุวานิช
+รัตนา เวียงธีรวัฒน์
+รัตนา ศิรินรากรณ์
+รัตนา สมบูรณ์นิธิผล
+รัตนา สีวิสุทธิ์
+รัตนา สุวัชรีรักษ์
+รัตนา หาญพลาชัย
+รัตนา อ่องเพ็ชร์
+รัตนา อุชุภาพ
+รัตนาพร คุ้มพงศ์เจริญ
+รัตนาภรณ์ จึงสงวนสิทธิ์
+รัตนาภรณ์ ประยูรโภคราช
+รัตนาภรณ์ ศรีนาราง
+รัตนาวดี ตันตะปาล
+รัตน์ แก้วกูร
+รัตน์ พานิชพันธ์
+รัตน์ เหลืองศุภโชค
+รันดร เหล็กยัง
+รัมภา พระรักษา
+รัศมี คุณประเสริฐกุล
+รัศมี เทพดลไชย
+รัศมี ยิ่งเจริญกอบกิจ
+รัศมี สุวรรณผ่องใส
+รัสมี คำแหงพล
+ราชปาลซิงห์ นารัง
+ราชันย์ เพ็ชรรัตน์
+ราชินี นวเจริญวงศ์
+ราณี ปูรณโชติ
+ราตรี กลิ่นหวล
+ราตรี จตุโชติชวาลุล
+ราตรี แซ่เลี้ยง
+ราตรี นันภักดี
+ราตรี พงศ์พันธ์ศักดา
+ราตรี มั่นจิตต์
+ราตรี ไวทยินทร์
+ราตรี สุ่มมาตย์
+รานี เงินถาวร
+รามฤทธิ์ เทวกุล
+ราวิน อนันต์ทรงวิทย์
+ราศรี ศรีรัตนกูล
+ราเชนทร์ ชาญนิติ
+ราเมศ บินแอ
+รำพวน ปรากฏวงษ์
+รำพึง นิลสุวรรณ
+รำพึง สุขเจริญ
+รำเพย ภาสพันธ์
+รำไพ แซ่ลิ้ม
+รำไพ เรือนทิพย์
+รำไพ อุฬารางกูร
+รินชัย ชัยวรพร
+ริวโก๊ะเคียว ถิตะชัย
+รื่น สะเนาว์
+รุ่ง ชมชื่น
+รุ่งกานต์ พืชสิงห์
+รุ่งตวัน ตันรัตนวงศ์
+รุ่งทิพย์ ตันตระภิรมย์
+รุ่งทิพย์ มณีสังข์
+รุ่งทิพย์ สุเรนทรารักษ์
+รุ่งทิวา ชาญพิทยานุกูลกิจ
+รุ่งทิวา พิภพไชยาสิทธิ์
+รุ่งทิวา สุนา
+รุ่งนภา คงสวัสดิ์
+รุ่งนภา แซ่เอี้ย
+รุ่งนภา บุญชื่น
+รุ่งนภา มณฑาทอง
+รุ่งนภา วาสนาดำรงดี
+รุ่งนภา แสวงผล
+รุ่งพิทยา วัลย์ศรี
+รุ่งรวี ศรีวิลัย
+รุ่งรัฐ กิตติชัยณรงค์
+รุ่งรัตน์ พจน์ธนมาศ
+รุ่งรัตน์ สุนทรวรเชษฐ์
+รุ่งฤดี บุญเจริญทวีสุข
+รุ่งฤทัย รอดโพธิ์ทอง
+รุ่งศักดิ์ แป้นใหญ่
+รุ่งอรุณ กรองการุณย์
+รุ่งอรุณ โพธิ์นิมิตร
+รุ่งเกียรติ ปิยศุภกิจ
+รุ่งเรือง ยืนยงค์
+รุ่งโรจน์ กรรณสูต
+รุ่งโรจน์ โชติประกายเกียรติ
+รุ่งโรจน์ บุญซื่อ
+รุ่งโรจน์ เรืองฤทธิ์
+รุ่งโรจน์ สุพุทธิไกร
+รุ้งทอง คุณประภากร
+รุ้งลดา หุ่นสวัสดิ์
+รุจจรินทร์ รินทระ
+รุจา สุขมาลจันทร์
+รุจิรัตน์ นิติสุพรรัตน์
+รุจิรา เที่ยงอรุณ
+รุจิรา ศรจิตต์
+รุจิเรก ธันวานนท์
+รุจี เพ็ชรนิล
+รุน องอาจ
+เรณุมาศ ฟองเพ็ชร
+เรณู งามขำ
+เรณู ซื่อตรง
+เรณู ธนสิน
+เรณู ปิตินันท์
+เรณู มหาชานิกะ
+เรณู ลี้ธีระกุล
+เรณู เศวตเลข
+เรณู สุไลมาน
+เรณู เอื้อเฟื้อ
+เรวดี ไชยาคำ
+เรวดี บุญเลิศ
+เรวดี เลิศชัยวรกุล
+เรวดี เหลี่ยมไทย
+เรวัต ง้าววิเศษ
+เรวัต เพ็ชรรัตน์
+เรวัตต์ วรรณสินธ์
+เรวัตร สินธุสอาด
+เริง ขำสุข
+เริงชัย วงษ์ดี
+เริงฤทธิ์ นันทนาจารย์กุล
+เริงศักดิ์ สมพงษ์
+เริ่มรจิต ด้วงสำราญ
+เรียม เกษสาคร
+เรียม ภูบาล
+เรียมรัตน์ เกตุกาญจน์
+เรืองกิจ เหรียญกมล
+เรืองชัย รอดรัตน์
+เรืองยศ ขาวสอาด
+เรืองรัตนา อุนะพำนัก
+เรืองวิทย์ จุลกองฮ้อ
+เรืองศักดิ์ จารุกิจโสภณ
+เรืองศักดิ์ ส่งไพศาล
+เรืองเกียรติ เชาวรัตน์
+เรืองไร พูนพานิช
+เรไร จิรศักดิ์ทวี
+แรงรัฐ กวียะ
+โรจนี เมฆประเสริฐวิทย์
+โรม คงเจาะ
+ไรวรรณ สายสกุล
+ฤดี กมลมาศ
+ฤดี ลิ่มทองน้อย
+ฤดีรัตน์ ชีพสุทธา
+ฤทธิชัย นิยมโชค
+ฤทธิรงค์ ทวีธนวาณิชย์
+ฤทธิ์ เชื้อชัย
+ฤทัย พันธุเดช
+ฤาชุตา อัมพุช
+ลดาพรรณ พิศลพูล
+ลดาวัลย์ จินดาวงษ์
+ลดาวัลย์ เผื่อนน้อย
+ลดาวัลย์ ศรีกาญจนา
+ลบ นาดอน
+ลมัย แก้วพันตา
+ลมัย มนาปี
+ลมาด พลเรือง
+ลมูล ทองชื่น
+ลลนา ดีสมสุข
+ลลิตตา สาธุการ
+ลลิสา นามสุดใจ
+ล้วน บุษบา
+ล้วน หมวดสันเทียะ
+ลอย หาญณรงค์
+ลออ บูรณศิริ
+ลออ หอยศรีจันทร์
+ลออศรี บรรจงศิลป
+ละดา สนลอย
+ละม่อม เนตตะสูต
+ละม่อม แสงสุวรรณ
+ละมัย ทองยั่งยืน
+ละมัย รักการ
+ละมัย อารมย์ดี
+ละม้าย พฤกษ์สุนันท์
+ละมุน เปล่งวัน
+ละมูล วงศ์สุวรรณ
+ละออ คูณสินทวีกุล
+ละออ ธเนศธาดา
+ละออ เพ็ญสมบูรณ์
+ละออ วิจิตร
+ละออ อยู่ยืนยง
+ละออง ชะเนติยัง
+ละออง ปานเม่น
+ละออง วงษา
+ละอองดาว เกื้อกูล
+ละออศรี สาเอี่ยม
+ละเมียด ทับทิมทอง
+ละเมียด เลาหพันธุ์สวัสดิ์
+ละเอียด กลิ่นลำดวน
+ละเอียด จันทะวงศ์
+ละเอียด ด้วงโต
+ละเอียด นุ้ยเล็ก
+ละเอียด พิลึก
+ละเอียด เรืองศรี
+ละเอียด สารจันทร์
+ละเอียด เอี่ยมวิจารณ์
+ลักขณา กรรโมปกรณ์
+ลักขณา ช้างแจ้ง
+ลักขณา น้อยปรีชา
+ลักขณา โพธิกุล
+ลักขณา เวฬุสุวรรณ
+ลักขณา อภิวัฒนพงศ์
+ลักษ์คณา ธนะปักษ์
+ลักษณา จารุแสงไพไรจน์
+ลักษณา ปิ่นปลื้มจิตต์
+ลักษณา ศรีเชาวรัตน์
+ลักษณี ศรีสถาพร
+ลักษณ์ อภิชาติธรรม
+ลักษมี ไพบูลย์
+ลัคนา กันตระวงศ์
+ลั้ง แซ่คู
+ลั้งเฮียง แซ่โก
+ลัดดา กาญจนกันทร์
+ลัดดา แก้วรัศมีวงศ์
+ลัดดา คุ้มเกรง
+ลัดดา จิตต์อ่อน
+ลัดดา ชลไพรพิมลรัตน์
+ลัดดา ซอสุขไพบูลย์
+ลัดดา แซ่อึ้ง
+ลัดดา ดีสั้น
+ลัดดา โต๊ะทอง
+ลัดดา ธรรมาภิรานนท์
+ลัดดา นุชเปลี่ยน
+ลัดดา ปฏิบัติ
+ลัดดา เผ่าบุญมี
+ลัดดา พึ่งพัฒน์
+ลัดดา มงคลนัฎ
+ลัดดา ยงไสว
+ลัดดา รุ่งวิตรี
+ลัดดา วงศ์ละคร
+ลัดดา วิมุกตายน
+ลัดดา ศิริงะ
+ลัดดา สัมฤทธิเวช
+ลัดดา สุนทราวงศ์
+ลัดดา หวังมี
+ลัดดา อับดุลลาใบ
+ลัดดา เอิบอิ่ม
+ลัดดาวรรณ จิตรดา
+ลัดดาวรรณ์ พุ่มวิเศษ
+ลัดดาวัลย์ งามประมวญ
+ลัดดาวัลย์ แซ่นิ้ม
+ลัดดาวัลย์ นนทะนาคร
+ลัดดาวัลย์ พลอยเพ็ชร
+ลัดดาวัลย์ ยุทธนาสิริกุล
+ลัดดาวัลย์ ศรีรัตนโชติช่วง
+ลัดดาวัลย์ สุเมธาศร
+ลัดพลี สินธุโสภณ
+ลั่นทม ลีพันแสง
+ลาน วงศ์งามกนก
+ลาลีวัณย์ บุนนาค
+ลาวัณย์ ไชยบูรณะพันธ์กุล
+ลาวัณย์ ฤทธินนท์
+ลาวัลย์ กันชาติ
+ลาวัลย์ โชติพันธ์
+ลาวัลย์ บินสุมัน
+ลาวัลย์ แย้มประภา
+ลาวัลย์ ศุขเทวา
+ลาวัลย์ อินทรดิษฐ์
+ลำจวน บุญเข็ม
+ลำดวน กรุดพันธ์
+ลำดวน เตชะเสน
+ลำดวน เพ็ชรกลับ
+ลำดวน สิมะขจรบุญ
+ลำพร คำมา
+ลำพัง อุดม
+ลำพู สืบสว่างกุล
+ลำภู ศรีภคากร
+ลำยอง นภนที
+ลำระ ทับเปลี่ยน
+ลำเจียก รัตรสาร
+ลำเพย เมฆประสาท
+ลำใย จริตชีวะ
+ลำใย ปานเรือง
+ลำใย สุวรรณโชติ
+ล้ำ ใจเก่งกิจ
+ลิขิต ชวศิริ
+ลิขิต รัตนพงศ์
+ลิดา ตันติจรรยานนท์
+ลินดา จิรประภากร
+ลินดา วีรพันธุ์
+ลิ้นจี่ ขันทองดี
+ลิ้นจี่ สมิตินันทน์
+ลิ่มชิว แซ่ลิ้ม
+ลิ้ม สุขวิทยากุล
+ลิลี่ หงส์สุขพันธุ์
+ลี สุขแสงใส
+ลีต้า กิจสวัสดิ์
+ลีลา ลิน
+ลีฮั้ว ศิริชาตชัย
+ลี่เค็ง แซ่ตั้ง
+ลี่ อยู่ประสิทธิ์
+ลือชัย ไพโรจน์พุทธิคุณ
+ลือพงษ์ โพธิ์เจริญ
+ลุ้ย โตตรึงทรัพย์
+ลูกชิ้น หงษ์ทอง
+เลขา เพชรเสนา
+เลอพงษ์ เรืองวานิช
+เลอศักดิ์ สถิตย์วิมล
+เลาหนุวัติ เลาหนุวัติ
+เลิศ ชื่นไม่วาย
+เลิศ ระหา
+เลิศชัย คล่องธนกิจ
+เลิศชาย ค้าผลดี
+เลิศฤทธิ์ ตั้งก่อสกุล
+เลิศวิทย์ โรจน์ขจรนภาลัย
+เลิศศิลป์ คีรี
+เลียงชัย อรุณกิจเจริญ
+เลี่ยงคิม แซ่อั๊ง
+เลี่ยงเฮ็ง แซ่ตั้ง
+เลี้ยง แซ่เตียว
+เลื่อน กฤษณกรี
+เลื่อน สมดี
+เล็ก กุลกิจกำจร
+เล็ก จตุพรหมวงศ์
+เล็ก ช้างเผือก
+เล็ก แซ่ลี้
+เล็ก ดอกสายหยุด
+เล็ก ทรัพย์แสนดี
+เล็ก นาสุวรรณ
+เล็ก ป้อมชูแก้ว
+เล็ก พีรพลานันท์
+เล็ก เมธีกุล
+เล็ก ลิ้มปิกรณ์
+เล็ก ศรีกลิ่นสุวรรณ
+เล็ก สาตรนนทรีย์
+เล็ก แสงใสแก้ว
+เล็ก อักษรานุวัตร
+เล็บ วงษ์เจริญ
+เล้ง แซ่แต้
+แล้ม ภิรมย์ม่วง
+ไล่ฮก แซ่เบ๊
+วงจันทร์ ไทรงาม
+วงศ์จันทร์ วิเศษศร
+วงศ์ศิริ พรหมชนะ
+วงศ์ จำนงวิทย์
+วงษ์เดือน ชนประชา
+วงเดือน งามโพธิ์ทอง
+วงเดือน ปิ่นกุมภีร์
+วงเดือน สุขเนตร
+วชิร นิยมศิลป
+วชิระ ธรรมหทัย
+วชิรา กิ่งแก้ว
+วชิรา หลีละเมียร
+วชิราวัลย์ วิทยพานิช
+วณิชา โอทกานนท์
+วณี วิจิตร
+วดีกรณ์ สุขจารุวรรณ
+วนรัชต์ ตั้งคารวะคุณ
+วนาลี จิตตานนท์
+วนิชา รัตนะวิศ
+วนิดา กาหลิบ
+วนิดา ขันธสิทธิ์
+วนิดา จงปิยะเลิศ
+วนิดา จุลสุวรรณ
+วนิดา ชัยชัชวาล
+วนิดา ซึงทอง
+วนิดา ฐานะสถิรกุล
+วนิดา ติลกานันท์
+วนิดา เทพพิทักษ์พงษ์
+วนิดา นิมมานไพโรจน์
+วนิดา บูรณสัจจะ
+วนิดา ผลาผล
+วนิดา พานิชเจริญ
+วนิดา ภูทิพยวงษา
+วนิดา ไม้ดีเลิศ
+วนิดา เรืองธีรอำนวย
+วนิดา เลี้ยงถนอม
+วนิดา วิญญูวิสิทธิรักษ์
+วนิดา ศานต์พิริยะ
+วนิดา สราวุธวินัย
+วนิดา สุขสมภักดิ์
+วนิดา แสงพงศ์ชวาล
+วนิดา อมาตยกุล
+วนิดา อุทยางกูร
+วนิภา ว่องวัจนะ
+วรกานต์ ภควัตสุนทร
+วรกิจ สุรณรงค์พันธ์
+วรจิตรา วศินพงศ์วณิช
+วรชัย ทัศไนยเธียรกุล
+วรชัย สินธนนพคุณ
+วรชาติ พันธุ์สวัสดิ์
+วรณี มธุรสตระกูล
+วรธรรม แจ่มจันทร์
+วรนาถ ปิยสุวรรณาภรณ์
+วรนุช กิจอุดมสิน
+วรนุช ตั้งเจริญเสถียร
+วรนุช พิษณุวงษ์
+วรนุช ศรีทัศนีย์
+วรนุช โอภาสเจริญพร
+วรพงศ์ ศิริพงษ์วิรัช
+วรพงษ์ โพธิ์สว่าง
+วรพจน์ กิตติพัฒนาพงศ์
+วรพจน์ ตรรกพงศ์
+วรพจน์ เปรมสาย
+วรพจน์ วงศ์สง่า
+วรพจน์ สุวัฒน์ธนากร
+วรพร ทรัพย์ทวีพร
+วรพรรณ มีทองคำ
+วรพล เบญกานี
+วรพัฒน์ สุมะโน
+วรพิชญา บุญศรีโรจน์
+วรมน คงอ่อน
+วรยุทธ์ ประธานทิพย์
+วรรณกานต์ ขาวลาภ
+วรรณชัย บุญบำรุง
+วรรณดี จันทร์ปลั่ง
+วรรณดี พรนันทารัตน์
+วรรณดี หงส์นิมิตชัย
+วรรณทิพย์ แซ่โป่ว
+วรรณนภา แซ่เตี๋ยว
+วรรณนิภา พุ่มสุวรรณ
+วรรณพร กิตติโสภณ
+วรรณพร เพียรสาระ
+วรรณพิบูลย์ นุชใย
+วรรณภา ชมทรัพย์
+วรรณภา ปิยะตระกูล
+วรรณภา ศรไพศาล
+วรรณรักษ์ วัฒนวุฒิพงศ์
+วรรณรี ชุณหภิญโญกุล
+วรรณวดี โตษยานนท์
+วรรณวิภา ธเนศสุธรรม
+วรรณวิมล ฐานานุศักดิ์
+วรรณวิมล สุขปาน
+วรรณวิไล ศิริชัยเทวินทร์
+วรรณศิริ ตันเจริญ
+วรรณะ คณาญาติ
+วรรณะ ไสยเกื้อ
+วรรณา กุลพนาเวศ
+วรรณา คงเจริญจิตติกุล
+วรรณา จันทรคง
+วรรณา เจียงวงศ์ถาวร
+วรรณา ชินศรีสุข
+วรรณา แซ่ลิ่ว
+วรรณา แซ่โล่
+วรรณา ตันเจริญ
+วรรณา ทองสุข
+วรรณา ธีระพงษ์
+วรรณา บวรวัฒนวานิช
+วรรณา ปรางทอง
+วรรณา พจน์ศิริศิลป
+วรรณา พานิชย์เจริญยิ่ง
+วรรณา ภัทรบัณฑิต
+วรรณา แม้นจันทร์
+วรรณา เรืองประเภท
+วรรณา วงศ์ประเสริฐ
+วรรณา วิสุทธวิเศษ
+วรรณา ศิตะโยธิน
+วรรณา สหธรรมิก
+วรรณา สุจริต
+วรรณา โสภณนรินทร์
+วรรณา อนุสรณชัย
+วรรณา อินทร์พระยา
+วรรณาภา แซ่ซึง
+วรรณิภา สุขพลอย
+วรรณี เกียรติกังวานกุล
+วรรณี คุ้มอนุวงศ์
+วรรณี เจริญเตียวงศ์
+วรรณี โชคชูชัย
+วรรณี แซ่เอียะ
+วรรณี ตั้งเสาวภาคย์
+วรรณี ไทเมืองพล
+วรรณี บุญญะฤทธิ์
+วรรณี ผุสดิน
+วรรณี พุ่มศิริ
+วรรณี มานะภักดิ์ศิริกุล
+วรรณี เรืองสมหมาย
+วรรณี วงษ์เทียนจันทร์
+วรรณี ศรีวิมลทัศน์
+วรรณี สัจจะเวทะ
+วรรณี สุวรรณฤกษ์
+วรรณี อภิรัตนกุล
+วรรณี เอี่ยมสอาด
+วรรณเพ็ญ พรมจันทร์
+วรรธ กันต์ไพเราะ
+วรรลภรณ์ เลอวัฒนกิจถาวร
+วรรัตน์ นิระฉัตรสุวรรณ์
+วรลักษณ์ จันทรดี
+วรลักษณ์ สินไชย
+วรวรรณ ญาณิสสร
+วรวรรณ เลิศคงคาทิพย์
+วรวรรณ เอี่ยมสันติไพศาล
+วรวัฒน์ วิวัฒน์ยุศันต์
+วรวิทย์ กุลวงษ์วาณิชย์
+วรวิทย์ ชาติเวียง
+วรวิทย์ ทัศธนะสิริกุล
+วรวิทย์ พาณิชพัฒน์
+วรวิทย์ วรกิตติพันธ์
+วรวิทย์ สินชวาลวัฒน์
+วรวิทย์ อิศรางกูร ณ อยุธยา
+วรวุฒิ จำเริญรัตนากร
+วรวุฒิ ตั้งสมภาควรกุล
+วรวุฒิ พรวรนันท์
+วรวุฒิ เลิศปรีชาพงษ์
+วรวุฒิ สิทธิศาสตร์สกุล
+วรวุธ เนตรทัศน์
+วรศักดิ์ เด่นเกศินีล้ำ
+วรศักดิ์ สิงหธิติกุล
+วรสิทธิ์ ปลื้มสัมพันธ์
+วรัช อรุณกมล
+วรัญญา ศิลปสมศักดิ์
+วรัมพร สุขได้พึ่ง
+วรากร ผจงจิตติกุล
+วรางคณา ดีมาก
+วรางคณา อินชูโต
+วราทิพย์ ไอยรากาญจนกุล
+วราพร งามสมตระกูลชาติ
+วราพร พันธ์ณรงค์
+วราพร สุทันติกร
+วราภรณ์ กระต่ายแก้ว
+วราภรณ์ โกศลวัฒนะ
+วราภรณ์ จงปั้น
+วราภรณ์ เจียรสมจิตร
+วราภรณ์ ไชยวงศ์
+วราภรณ์ ดาวประจักษ์
+วราภรณ์ โตแจ้ง
+วราภรณ์ ธนาภรณ์พิบูล
+วราภรณ์ บัวคลี่
+วราภรณ์ ปิ่นทอง
+วราภรณ์ พิณเมืองงาม
+วราภรณ์ มฤศโชติ
+วราภรณ์ รัตนะ
+วราภรณ์ เล่งวิริยะกุล
+วราภรณ์ วิพัฒน์กิจวิไล
+วราภรณ์ ศุนาลัย
+วราภรณ์ สุขบุญส่ง
+วราภรณ์ หมึกหอม
+วราภรณ์ อัศวกายมณี
+วรามาศ ซึ่งจิตเสถียร
+วรารัตน์ จิระขจรวงศ์
+วรารัตน์ ออรัตนชัย
+วราลักษณ์ อิทธิเจริญสุข
+วราวุฒิ ธรเสถียร
+วราวุธ เพียรกิจ
+วราห์ เผ่าตำรวจ
+วรินทรีย์ ชินสาย
+วรินทร์ อินทร์ธิราช
+วริศรา เอื้ออารีวิวัฒน์
+วรีภรณ์ สัจจริตานันท์
+วรุณ ลิ้มอุดมสุข
+วรุณี ตั้งสืบกุล
+วรเชต ศรีประภาสุขสันติ
+วรเดช ลิ้มธรเบญจพล
+วรเทพ แทนวันชัย
+วรเทพ สวัสดิยนาวิน
+วรโชติ เชียงทอง
+วลัย แป้นทอง
+วลัยพร เกียรติทับทิว
+วลัยพร ภัทราพงศ์
+วลัยพรรณ ดวงแก้ว
+วลัยรัตน์ แก้วสว่าง
+วลัยลักษณ์ ฤทธิรงค์วัฒนา
+วลิยา วัฒนาพร
+วลี พละบุญมี
+วลีพร สุทธินัยวราภรณ์
+วลีรัตน์ สุวรรณอักษร
+วศิน วณิชย์วรนันต์
+วสันติ โอภาสวานิช
+วสันต์ จงศุภนิมิต
+วสันต์ เชื่อมทอง
+วสันต์ ทองคง
+วสันต์ ปฏิโภคสุทธิ์
+วสันต์ โพธิ์ไพรทอง
+วสันต์ วงศ์กัทลีคาม
+วสันต์ สกุลฟอง
+วสันต์ หทัยเกียรติกุล
+วสุ บูรณะเหตุ
+วอน ฉ่ำนิตย์
+วัง สุขสมบุญ
+วัจวิท ทักษณิวรรตกุล
+วัชร พลวรรณาภา
+วัชรพงษ์ กิจโกศล
+วัชรพันธ์ ประดิษฐพงษ์
+วัชระ แจ่มจำรัส
+วัชระ บุญเอนกทรัพย์
+วัชระ เย็นวิจิตรโสภา
+วัชระ สุระแสง
+วัชรา เจริญรัตนพร
+วัชรา ลิมานนท์ดำรงค์
+วัชราพร เสมคำ
+วัชราภรณ์ ยิ่งยงยศ
+วัชริน ตรีวิลาศรัตน์
+วัชรินทร์ เจริญรัตน์
+วัชรินทร์ ทองรักษ์
+วัชรินทร์ พลับแก้ว
+วัชรินทร์ วชิรพาหุ
+วัชรินทร์ สุบรรณพงษ์
+วัชรี กาญจโนภาส
+วัชรี เจริญทรัพย์
+วัชรี ตรีพานิช
+วัชรี บูรณ์วรุตม์
+วัชรี ฟุกตานนท์
+วัชรี วงศ์กลธูต
+วัชรี สง่าเมือง
+วัชรี หิรัณยาตาพงศ์
+วัชรียา ธนะสุนทร
+วัชร์แสง เหล่าหงษ์เงิน
+วัฒนชัย จินดานุรักษ์
+วัฒนชัย สาตรพันธุ์
+วัฒนศักดิ์ พันธุ์กำแหง
+วัฒนะ ปริศนาวาณิชย์
+วัฒนา กรอบเพ็ชร์
+วัฒนา เขียมทรัพย์
+วัฒนา จิตการุณ
+วัฒนา ชาญไชย
+วัฒนา ตรีวิทยากุล
+วัฒนา เทียนเพ็ง
+วัฒนา บำรุงพฤกษ์
+วัฒนา ปิ่นเสม
+วัฒนา พิมพ์ประดับ
+วัฒนา มาระมิ่ง
+วัฒนา รัตนะมงคลกุล
+วัฒนา วัชระพิมลมาศ
+วัฒนา ศรีเอนกราธา
+วัฒนา สุขกนิษฐ์
+วัฒนา แสดมณี
+วัฒนา อินทรักษ์
+วัฒนาภรณ์ ลี้ชาญกุล
+วัฒน์ เจริญประเสริฐกุล
+วัดกระจัง วัดกระจัง
+วัดช่องนนทรี วัดช่องนนทรี
+วัดธาตุทอง วัดธาตุทอง
+วัดบางพลีน้อย วัดบางพลีน้อย
+วัดป่าเรไร วัดป่าเรไร
+วัดราชคฤห์ วัดราชคฤห์
+วัดสวนแก้ว วัดสวนแก้ว
+วัดอยู่ดีบำรุงธรรม วัดอยู่ดีบำรุงธรรม
+วัดเสด็จ วัดเสด็จ
+วัดใหม่ลำนกแขวก วัดใหม่ลำนกแขวก
+วัธนา พัชราวลัย
+วันจนีย์ ดำรัสการ
+วันชัย กิตติจารุกำจร
+วันชัย ขนบดี
+วันชัย โคตรสมบัติ
+วันชัย จำนงค์
+วันชัย เจียระไนพันธ์
+วันชัย ชาญสง่าเวช
+วันชัย ซื่อเธียรสกุล
+วันชัย แซ่เยี้ย
+วันชัย ตรีสินธ์
+วันชัย โตความรู้
+วันชัย เทิดบัญชรสุข
+วันชัย นันทคุณากร
+วันชัย บุญช้าง
+วันชัย ปั้นพินิจ
+วันชัย พรมวงษ์
+วันชัย พูนทรัพย์
+วันชัย มงคลวงศ์สกุล
+วันชัย ยังประยูร
+วันชัย รุ่งรัตน์มณีมาศ
+วันชัย ลีลาชูพงศ์
+วันชัย วงษ์ขาว
+วันชัย วินัยวรสกุล
+วันชัย ศรีสุวรรณ
+วันชัย สกุลศักดิ์นิมิตร
+วันชัย สายสวัสดิ์
+วันชัย สุทธิอารีกุล
+วันชัย โสตถีวรกุล
+วันชัย อภิกวินวงศ์
+วันชัย อานันทนสกุล
+วันชัย เอี่ยมวิวัฒนะกุล
+วันชาติ ปุญวัฒโท
+วันณี ดาวแสง
+วันดี ไกรรมณ์
+วันดี จุลสำลี
+วันดี แซ่ตั้ง
+วันดี แดงหนู
+วันดี ไทยประดิษฐ์
+วันดี บุณยะกาญจน
+วันดี พลอยมะกล้ำ
+วันดี มฮำหมัด
+วันดี ละมั่ง
+วันดี ไวอ่อน
+วันดี สิงหาพันธุ์
+วันดี หุโลประการกุล
+วันทณี โชติเวที
+วันทนา จงแจ่ม
+วันทนา เดชประสิทธิ์
+วันทนา บุญกร่าง
+วันทนา เพียรวนิช
+วันทนา วงศ์ภักดี
+วันทนา สุวรรณพงษ์
+วันทนาพร ศิรินันทวิทยา
+วันทนี ฤทธิสิงห์
+วันทนีย์ ชลิตตานนท์
+วันทนีย์ เนียมเทศ
+วันทนีย์ ลัทธะพานิชย์
+วันทนีย์ หวัง
+วันธณี แดงประดับ
+วันนา ศรีสวาท
+วันมูหะมัดนอร์ มะทา
+วันวิสา สิริศรัณย์
+วันเจิด ตามเพิ่ม
+วันเพ็ญ กิ่งใบสมบูรณ์
+วันเพ็ญ เขาแก้ว
+วันเพ็ญ จันทรวิโรจน์
+วันเพ็ญ ชนากร
+วันเพ็ญ แซ่ลิ้ม
+วันเพ็ญ ตระกูลสุขทรัพย์
+วันเพ็ญ ทรัพย์มณี
+วันเพ็ญ นาคแย้ม
+วันเพ็ญ ประดิษฐ์สุวรรณ
+วันเพ็ญ พรธนาวุฒิ
+วันเพ็ญ เพชรกาญจนาพงศ์
+วันเพ็ญ มาโนช
+วันเพ็ญ รุ่งเรือง
+วันเพ็ญ วรพัฒนานันต์
+วันเพ็ญ ศรีโยยอด
+วันเพ็ญ สิงห์สวัสดิ์
+วันเพ็ญ สูญสิ้นภัย
+วันเพ็ญ อนุติรยะ
+วันเพ็ญ เอวาสกุล
+วัยวัจน์ ทายาทสุวรรณ
+วัลนภา ราศรีปลั่ง
+วัลภา ดุลยานนท์
+วัลภา ยรรยงพัฒนะ
+วัลภา หรั่งสิโย
+วัลย์ลัดดา ธีระศักดิ์กุล
+วัลยา นวลละออง
+วัลยาภรณ์ รัชวิชัย
+วัลลภ แก้วเปีย
+วัลลภ แจ่มวุฒิปรีชา
+วัลลภ ทองก้าย
+วัลลภ บูรณศิริ
+วัลลภ มะชรา
+วัลลภ วชิรพรพงศา
+วัลลภ สังข์สอน
+วัลลภ อรัญญเกษม
+วัลลภา เฉลิมนัย
+วัลลภา พรมโชติ
+วัลลภา วีระปุลลี
+วัลลา เกาสุรัตน์
+วัลลี นันตาลิก
+วัลลีย์ ประทุมชาติ
+วัลลีย์ ฮั้วห้วยพระ
+วาณิชย์ วดีศิริศักดิ์
+วาณี พันธุมจินดา
+วาณี เหลืองบริสุทธิ์
+วาทิต พิชยนันท์
+วาทินี วงศ์บุษยกุล
+วานิช เมธาธำรงค์ศิริ
+วารณี แดงสี
+วาริท หลาวทอง
+วารินทร์ กิตติโชติกุล
+วารินทร์ บุญชยานุรักษ์
+วารินทร์ วารมา
+วารินี โอษฐิเวช
+วารี จีนสุวรรณ์
+วารี ไตรพุทธางกูร
+วารี พลสระน้อย
+วารี วงศ์อุไร
+วารี สุปรียาวรรณชัย
+วารีทิพย์ เทพนำโสมนัสส์
+วารุณภัค ฮั่นตระกูล
+วารุณี จิตต์ธรรม
+วารุณี ดาบเจริญชัย
+วารุณี นิลเพชร์พลอย
+วารุณี พันธุเพ็ง
+วารุณี โรจน์พลากร
+วารุณี ศรีสกุลดี
+วารุณี สุวรรณศรี
+วารุณีย์ จำปานิล
+วาสนา กระพันพงศ์สกุล
+วาสนา แก้วชูศิลป์
+วาสนา คำศิริรักษ์
+วาสนา จินดาศักดิ์
+วาสนา ชานก
+วาสนา แซ่เล้า
+วาสนา ไตรเวทย์วรกุล
+วาสนา เทียมแสงอรุณ
+วาสนา นิยมฤทธิ์
+วาสนา บูรศิริรักษ์
+วาสนา เผ่าถนอม
+วาสนา พูลนิกร
+วาสนา มะเสริฐ
+วาสนา ระรื่นจิตต์
+วาสนา และเย๊าะห์
+วาสนา วีระรัศมี
+วาสนา ศุภวิทยาโภคี
+วาสนา สำเภาทอง
+วาสนา เสถียรธรรมวิทย์
+วาสนา เหลืองสะอาด
+วาสนา อินทสุวาท
+วาสิน สุภประกร
+ว้า แซ่แต้
+วิกรม วิกรมประสิทธิ์
+วิกิจ สุขสำราญ
+วิจันทรา บุนนาค
+วิจารณ์ นาควิเชียร
+วิจิต ไทยเจริญ
+วิจิตร เกตุธรรมวงศ์
+วิจิตร จุลรัษเฐียร
+วิจิตร ตราชู
+วิจิตร บำรุงกิจ
+วิจิตร พานิชย์
+วิจิตร รังสิยานนท์
+วิจิตร วุฒิอำพล
+วิจิตร สุขวิทยาวงษ์
+วิจิตร อัจฉริยอังกูร
+วิจิตรา แก้วสิทธิวงศ์
+วิจิตรา ถิรสุนทรากุล
+วิจิตรา ม่วงยิ่งสุข
+วิจิตรา สิทธิโชคอุดม
+วิจิตร์ ล้อมกุลไพศาล
+วิชชา อัศววรฤทธิ์
+วิชชุดา ลีลาสุขสันติกุล
+วิชญา สุทธิประเสริฐ
+วิชวน ศิริกาญจนวานิช
+วิชัย กันตังกุล
+วิชัย กีรติพานิช
+วิชัย เกี๋ยวพะมิตร
+วิชัย เขมะวรรณา
+วิชัย คุณากรสิริรักษ์
+วิชัย จตุรพักตรารักษ์
+วิชัย จั่วแจ่มใส
+วิชัย จิระไชยเขื่อนขันธ์
+วิชัย เจริญวุฒิวงษา
+วิชัย ฉายวิชิต
+วิชัย ชัยอำนวย
+วิชัย ชูชัยเจริญ
+วิชัย ซื้อพัฒนารุ่งโรจน์
+วิชัย แซ่ลิ้ม
+วิชัย แซ่เล้า
+วิชัย ดีสุคนธ์
+วิชัย ตั้งจารุ
+วิชัย ตามเที่ยงตรง
+วิชัย ไตรทิพย์พิทักษ์
+วิชัย ทองแท้
+วิชัย ธนะรัชติการนนท์
+วิชัย นกแย้ม
+วิชัย นิมิตไตรทิพย์
+วิชัย บุญญธนัง
+วิชัย บุษยะจารุ
+วิชัย ปรีชาวุฒิ
+วิชัย เปลี่ยนแพ
+วิชัย พรธรรมสิริ
+วิชัย พันธ์คำ
+วิชัย พึ่งสัมพันธ์
+วิชัย ไพบูลย์ลีสกุล
+วิชัย มณีฉาย
+วิชัย มีทรัพย์วัฒนา
+วิชัย ยิ้มน้อย
+วิชัย รัตนเจริญสกุล
+วิชัย โรจน์วิชาวงศ์
+วิชัย ลิ้มพรกุล
+วิชัย เลิศพลากร
+วิชัย วงศ์สระทอง
+วิชัย ว่องกิตติสิน
+วิชัย วิชัยธนพัฒน์
+วิชัย วิเชียรทองคำ
+วิชัย ศรีปัญจพงษ์
+วิชัย ศิริคุม
+วิชัย สกลพงษ์ไพโรจน์
+วิชัย สะอิ๊นะ
+วิชัย สินทัตตโสภณ
+วิชัย สุขเจริญ
+วิชัย สุริยะมงคล
+วิชัย แสงสมมาตร์
+วิชัย หัสดาดล
+วิชัย ไหลเจริญวงศ์
+วิชัย อรุณวัฒน์
+วิชัย อาภาพงศ์ศักดิ์
+วิชัย อุทิศ
+วิชัย ฮั้วประเสริฐ
+วิชา ช่วงโชติ
+วิชา ปิติพัฒนพันธ์
+วิชา วิชาชาญ
+วิชาญ กระแสร์กุล
+วิชาญ จินต์สุภัค
+วิชาญ ดีประหลาด
+วิชาญ บุญประเสริฐยิ่ง
+วิชาญ เพ็งสอาด
+วิชาญ ลิ้มสวัสดิ์
+วิชาญ ศิริเวชวราวุธ
+วิชาญ เหนี่ยวองอาจ
+วิชาติ ยุทธนาวรากุล
+วิชิต เกิดแกง
+วิชิต จิตรีเชื้อ
+วิชิต โชติชัชวาล
+วิชิต เตชะชุณหกิจ
+วิชิต บุญถนอม
+วิชิต พันธุ์พานิช
+วิชิต ร่วมสุข
+วิชิต วงษ์ใหญ่
+วิชิต ศรีพงษ์พันธุ์กุล
+วิชิต สุขสินธารานนท์
+วิชิต อนุตระกูล
+วิชิต เอี่ยมเสมารุ่ง
+วิชุดา แซ่ลิ่ม
+วิชุพร อิทธิรังสิมา
+วิญญู ทองพรรณ
+วิฑิต นีรพิทักษ์
+วิฑูร ลีวงศ์เจริญ
+วิฑูรย์ ขวัญเมือง
+วิฑูรย์ ชุ่มเล็ก
+วิฑูรย์ นิวาสสวัสดิกุล
+วิฑูรย์ โพธิ์จงรักษ์
+วิฑูรย์ วรรณจิตจรูญ
+วิฑูรย์ เส็งพานิช
+วิณัฐฑิตา โสภิตกานต์
+วิทยรัตน์ ทองนิ่ม
+วิทยา แก้ววัฒนะ
+วิทยา จันทร์ดาเรือง
+วิทยา ฉัตรวิทยายุทธ
+วิทยา แซ่ตู
+วิทยา ตัณฑสุทธิ์
+วิทยา ธนะพานิชย์
+วิทยา บุญญธนาภิวัฒน์
+วิทยา พงษ์สัมฤทธิ์
+วิทยา พูลพรรณ
+วิทยา เมตตาสัตย์
+วิทยา ฤทธิ์เดช
+วิทยา วรชาติ
+วิทยา ศรนรินทร์
+วิทยา สันตโยภาส
+วิทยา เสริมชีพ
+วิทยา อร่ามศรี
+วิทยากร เชียงกูล
+วิทย์ เพชรรัศมีพราว
+วิทวัส กิตติคุณานันท์
+วิทวัส หงสไกร
+วิทิต ศิริโภคากิจ
+วิทูร เทพพิทักษ์
+วิทูร แสงสิงแก้ว
+วิทูล สมบัติทวี
+วิน กล่ำแสง
+วินดา ชื่นเชื่อม
+วินัย กลิ่นพุฒ
+วินัย แก้วเกษการณ์
+วินัย คุ้มคอน
+วินัย จิตต์แจ่ม
+วินัย ชนะคช
+วินัย แช่มปรีดา
+วินัย เดชนที
+วินัย ถาวร
+วินัย เทียมน้อย
+วินัย นิธิชัย
+วินัย บุญวัฒนโสภณ
+วินัย ปางกิตติพงศ์
+วินัย พร้อมศิริพงษ์
+วินัย พุ่มเจริญวัฒนา
+วินัย มรรคนันท์
+วินัย ยุดดร
+วินัย โรจน์เจียง
+วินัย วงศ์อำนวยกุล
+วินัย วิลัยกรวด
+วินัย ศาสตร์สาระ
+วินัย สากล
+วินัย สุทธิวรรณารัตน์
+วินัย หมู่มิ่ง
+วินัย อรุณวัฒนกูล
+วินัย เฮงสมบูรณ์
+วินิจ เจริญศิริ
+วินิจ ปรีชารัตน์
+วินิจ วิริยกรอบชัย
+วินิช ชิรวานิช
+วินิตย์ สังข์สีเหลือบ
+วิบูรณ์ ปู่คงพระ
+วิบูลย์ยศ อมาตยกุล
+วิบูลย์ กิตติอัมพานนท์
+วิบูลย์ เจียรวงศ์
+วิบูลย์ แดงดวงแก้ว
+วิบูลย์ แทนบุญไพรัช
+วิบูลย์ ปอแก้ว
+วิบูลย์ ภาควณิช
+วิบูลย์ ฤทัยศรีมณีพันธ์
+วิบูลย์ วิบูลย์กิจวรกุล
+วิบูลย์ สถิรศิลปิน
+วิบูลย์ หวังรวยนาม
+วิบูลลักษณ์ ดิษฐอ่วม
+วิพล ปิตานุเคราะห์
+วิพากย์ โรจนแพทย์
+วิภา กานต์เหมรัตน์
+วิภา คูณขุนทด
+วิภา เจียมทวีวิบูลย์
+วิภา แซ่ตั้ง
+วิภา ตันตริยานนท์
+วิภา ธรรมาจักร์กุล
+วิภา ปาแก้ว
+วิภา พิทักษ์สิริศักดิ์
+วิภา ยังวิเศษ
+วิภา เลี้ยงศิริประเสริฐ
+วิภา เวศาขวรินธ์
+วิภา สามสี
+วิภา แสงสว่าง
+วิภา อิฐงาม
+วิภาจรี ตั้งสำเริงวงศ์
+วิภาดา นิธิปรีชานนท์
+วิภาดา หิรัญน้อย
+วิภาพร แซ่โล้ว
+วิภาพร ฤดีชูพิมล
+วิภาพรรณ พุ่มสงวน
+วิภาภรณ์ แซ่ไหล
+วิภาภรณ์ อาจอาสา
+วิภารัตน์ พรหมศรีสวัสดิ์
+วิภาวดี ไข่มุก
+วิภาวรรณ คุณติสุข
+วิภาวรรณ ภู่ตระกูล
+วิภาวลัย แจวชำนาญเชาว์
+วิภาวี สมิทธิเศรษฐ์
+วิภาส เอกธรรมสกุล
+วิมล กลิ่นเกษร
+วิมล คำเครื่อง
+วิมล ฉายปัญญาเลิศ
+วิมล แซ่เฮี้ย
+วิมล ทองดอนน้อย
+วิมล บุญยัง
+วิมล พัฒนาดิสัย
+วิมล มาลัยทอง
+วิมล ลิมปิสวัสดิ์
+วิมล วูวนิช
+วิมล สุขสมใจ
+วิมล แหยมงาม
+วิมลทิพย์ เกษโกมล
+วิมลมาลย์ สมคะเน
+วิมลรัตน์ งามพฤกษ์วานิชย์
+วิมลรัตน์ นิรัติกุลชัย
+วิมลรัตน์ ลีลาประชากุล
+วิมลรัตน์ อรุณนิธิ
+วิมลวรรณ เผ่าศรีเจริญ
+วิมลศรี ประดับแก้ว
+วิมาน ธิโสภา
+วิยดา วิศิษฐ์รัศมีวงศ์
+วิยะดา ทาประทุม
+วิยะดา ศิริทองคำ
+วิรงรอง อ้นอารี
+วิระ บำรุงศรี
+วิรัช กลิ่นขจร
+วิรัช ขุมทรัพย์
+วิรัช จิตพันธ์
+วิรัช ชื่นมีศรี
+วิรัช ดิษฐบรรจง
+วิรัช เทพประทุม
+วิรัช บรรเทิง
+วิรัช เปรมศรี
+วิรัช พูนทรัพย์
+วิรัช มาดวง
+วิรัช เรือนเงิน
+วิรัช วรรณรัตน์
+วิรัช ศรีบุญวงษ์
+วิรัช สหสมโชค
+วิรัช แสงเงิน
+วิรัช อมศิริ
+วิรัชช สุภานุสร
+วิรัต ยิ้มระหงษ์
+วิรัตน์ แก้วรัตนอัมพร
+วิรัตน์ จารุเวฬ
+วิรัตน์ ชูฉัตร์
+วิรัตน์ ตันติอธิมงคล
+วิรัตน์ ธูปทอง
+วิรัตน์ ประเสริฐกุล
+วิรัตน์ พิลัย
+วิรัตน์ ยันตเวช
+วิรัตน์ ลีลาสมานชัย
+วิรัตน์ แววนกยูง
+วิรัตน์ สิงห์งาม
+วิรัตน์ เหมนรากร
+วิรัตน์ เอียดเสน
+วิราณี วรชาครียนันท์
+วิรินทร์ ตันติพลาวนิชย์
+วิริยะ นิลรังษี
+วิริยา กิตตินันท์
+วิรียา นาคา
+วิรุต ตรียวง
+วิรุฬห์ ครองบุญศรี
+วิรุฬห์ สุนทราภัย
+วิลัย ใจดี
+วิลัย วิสุทธิชาติ
+วิลัยศักดิ์ สุกิจญาณ
+วิลาวรรณ ธารธนาภรณ์
+วิลาวัณย์ แก้วกนกวิจิตร
+วิลาวัณย์ ภัทรวนากุล
+วิลาวัลย์ กระจ่างทิศ
+วิลาวัลย์ นรสิงห์
+วิลาวัลย์ ศรีมีสวัสดิ์
+วิลาศ จีนารักษ์
+วิลาศ เวชภูติ
+วิลาสินี แซ่อึ้ง
+วิวรรณ กมลศรีจักร
+วิวรรธน์ ภิรมย์ประเมศ
+วิวัฒน์ กันฑธนกิจ
+วิวัฒน์ คุณติสุข
+วิวัฒน์ ฉายาสกุลวิวัฒน์
+วิวัฒน์ แซ่โกย
+วิวัฒน์ โตเจริญวิวัฒน์
+วิวัฒน์ นิติภูมิเวชสกุล
+วิวัฒน์ ปิ่นภักดี
+วิวัฒน์ พีรศักดิ์โสภณ
+วิวัฒน์ ยิ่งชนะเกียรติ
+วิวัฒน์ เลาวเลิศ
+วิวัฒน์ วิกรานตโนรส
+วิวัฒน์ ศิลกรุงธีระภาพ
+วิวัฒน์ สุขเจริญ
+วิวัฒน์ อภิวัฒนลังการ
+วิวัฒน์ เอื้อรัตน์ศรีทอง
+วิศณี ศรทัตต์
+วิศลย์ สิริทัศนคุณ
+วิศาล เฉลิมกิจ
+วิศาล ลือกระจ่างธรรม
+วิศิษฎ์ แก้วล้อม
+วิศิษฎ์ พัฒนเมฆิน
+วิศิษฎ์ อภินันท์
+วิศิษฏ์ ภูริวัฒน์
+วิศิษฏ์ อิสณพงศ์
+วิศิษฐ์ กิตตินันทพันธุ์
+วิศิษฐ์ ตารัชกุล
+วิศิษฐ์ มั่งคั่ง
+วิศิษฐ์ ศิวะบวร
+วิศิษย์ศักดิ์ วงศ์สถิตย์พร
+วิษณุ ทวีวิโรจน์สกุล
+วิษณุ วงษ์เงิน
+วิษณุวัต วัจนะพุกกะ
+วิสันต์ จันทร์ศรีเจริญ
+วิสัย สมบูรณ์ทรัพย์
+วิสาร เตชะธีราวัฒน์
+วิสิฐ ลุผลแท้
+วิสิทธิ์ จิตรพานิชเจริญ
+วิสิทธิ์ พงโศธร
+วิสิทธิ์ เศรษฐีพ่อค้า
+วิสิษฐ ฤทธิ์สำเร็จ
+วิสุทธิ บุญกำพร้า
+วิสุทธิ์ คุ้มภาคสกุล
+วิสุทธิ์ ด่านธนสาคร
+วิสุทธิ์ บุญดีเจริญยิ่ง
+วิสุทธิ์ ภัทรเกียรติเจริญ
+วิสุทธิ์ วิสุทธิพิเนตร
+วิสุทธิ์ สุทธิวิริยะกุล
+วิสุทธ์ เคห์ทุ่ม
+วิสูตร ฉกาจฤทธิพงศ์
+วิสูตร ประคองสันติกุล
+วิสูตร วงศ์ไชยศรี
+วิสูตร สู่พานิช
+วิเกื้อ สกุลจันทร์
+วิเชษฐ ปราชเปรื่อง
+วิเชษฐ์ รอดนุสนธิ์
+วิเชียร กังวาลย์
+วิเชียร เกิดภู่
+วิเชียร เข็มเงิน
+วิเชียร เคารพพาพงค์
+วิเชียร จันทโชติบุตร
+วิเชียร เจริญพงษ์
+วิเชียร ชัยชำนะภัย
+วิเชียร โชติตันติมากร
+วิเชียร แซ่โค้ว
+วิเชียร ตรีพุฒ
+วิเชียร เติมวุฒิ
+วิเชียร ทัตตมนัส
+วิเชียร ธารมนูลาภ
+วิเชียร เนตรประเสริฐกุล
+วิเชียร บุริมจิตต์
+วิเชียร ปานอุทัย
+วิเชียร พรายมี
+วิเชียร พิริยะพงศธร
+วิเชียร ฟุ้งสุข
+วิเชียร มามีเกตุ
+วิเชียร ใยประยูร
+วิเชียร รุ่งโรจนาลักษณ์
+วิเชียร ลิ้มอารีธรรม
+วิเชียร วงศ์อนุสรณ์
+วิเชียร วันลักษณ์
+วิเชียร ไวพจนาท
+วิเชียร ศิริรุ่งเรือง
+วิเชียร สมศิริกุล
+วิเชียร สำเภา
+วิเชียร สุคนธาภิรมย์ ณ พัทลุง
+วิเชียร เสร็จสวัสดิ์
+วิเชียร หอมคง
+วิเชียร อยู่เรือง
+วิเชียร อินทร์สำอางค์
+วิเชียร ฮวดประดิษฐ์
+วิเลิศ อร่ามเลิศตระกูล
+วิเศษ บุญประเสริฐ
+วิโชค วิเศษพันธุ์ชัย
+วิโรจน์ กัปปิยจรรยา
+วิโรจน์ โกยอนรรฆกุล
+วิโรจน์ งามเอกอุดมพงศ์
+วิโรจน์ จิวารุ่งเรือง
+วิโรจน์ ชลรัตนกุล
+วิโรจน์ โชติวรรณกุล
+วิโรจน์ ดอนยางไพร
+วิโรจน์ เตชะชนาลัย
+วิโรจน์ ทัศนบริสุทธิ์
+วิโรจน์ นาคน้อย
+วิโรจน์ เบญจพสกุล
+วิโรจน์ ผลตูม
+วิโรจน์ พิทยานนท์
+วิโรจน์ ภาใจธรรม
+วิโรจน์ ยั่งยืนภราดร
+วิโรจน์ รุโจปการ
+วิโรจน์ ลิ่วลักษณ์
+วิโรจน์ วงษ์ศิริ
+วิโรจน์ วิริยะธนากร
+วิโรจน์ ศฤงคาร
+วิโรจน์ สังวรโยธิน
+วิโรจน์ สุทธิรักษ์
+วิโรจน์ หลิมไชยกุล
+วิโรจน์ อรุณรัตนกุล
+วิโรจน์ เอี่ยมสกุลรัตน์
+วิไล กิระวงศ์สกุล
+วิไล คัคนัมพรเลิศ
+วิไล จารุพงศ์
+วิไล ชดช้อย
+วิไล แซ่กิม
+วิไล ดาวสุข
+วิไล โตสุวรรณ
+วิไล ธารีไทย
+วิไล บุญมี
+วิไล ปาดศรี
+วิไล พิทักษ์ชัยวัฒนา
+วิไล มณีแสง
+วิไล รัตตกุล
+วิไล ลิ้มเปรมวัฒนา
+วิไล วิจิตรนิรันดร
+วิไล ศรีอรุณกิจจา
+วิไล สหอารักขา
+วิไล สุทัดณ์วานิช
+วิไล หวังเจริญ
+วิไล อัชณากรลักษณ์
+วิไลพร กุลบุตร
+วิไลพร ท่าไคร้กลาง
+วิไลพร วิทยาขจรเดช
+วิไลพรรณ สมบูรณสิน
+วิไลรัตน์ โกศลจันทรยนต์
+วิไลรัตน์ ปูนวิภากุล
+วิไลรัตน์ หวังศรีตรัย
+วิไลลักษณ์ เจนสมานชัยกุล
+วิไลลักษณ์ นรินทร์
+วิไลลักษณ์ รัตนสวัสดิ์
+วิไลลักษณ์ แสงทักษิณ
+วิไลวรรณ คงคิด
+วิไลวรรณ ชูแดง
+วิไลวรรณ เทียนถาวร
+วิไลวรรณ แป้นสุวรรณ
+วิไลวรรณ ยินดีฤกษ์
+วิไลวรรณ วาศวิท
+วิไลวรรณ สุเพียร
+วิไลวรรณ์ เหลืองสวัสดิ์
+วีณา กัสตัน
+วีณา เจนกิจเจริญชัย
+วีณา ตันเกษม
+วีณา บุญขวัญ
+วีณา ภักดีวัฒนะกุล
+วีณา วงษ์กมลชุณห์
+วีณา สายหยุด
+วีณา เอี่ยมประจง
+วีนัส ปิ่นมังกร
+วีนัส เอี่ยมวัฒนะ
+วีรกิตต์ ไพบูลย์กิจโกศล
+วีรชัย แซ่เซียว
+วีรชัย ลาภเจริญพร
+วีรชัย อานันทศิริเกียรติ
+วีรนาถ แดงบุญ
+วีรพงศ์ เลิศวงศ์ภักดี
+วีรพจน์ เชิดไชยวงษ์
+วีรพล ธนาภรณ์ไพบูลย์
+วีรพัฒน์ กิตติภาณุกุล
+วีรยศ ฤทธิ์ไทย
+วีรยุทธ บัณฑิตภูวนนท์
+วีรยุทธ์ ปีกานนท์
+วีรวรรณ แตงแก้ว
+วีรวรรณ เวสารัชเศรษฐ์
+วีรวัฒน์ คุณพิทักษ์วัฒนา
+วีรวัฒน์ พึ่งโพธิ์สภ
+วีรวัต คุณานุกูล
+วีรศักดิ์ ขจรเกียรติ
+วีรศักดิ์ บรรจงมณี
+วีรศักดิ์ วิชชาชู
+วีรสิทธิ์ ฉัตรสุภางค์
+วีระ แก้วนุ่ม
+วีระ จะบัง
+วีระ ฉินทกานนท์
+วีระ โชคยานุวัฒน์ศิริ
+วีระ โดแวนเว
+วีระ ทองลิ้นจี่
+วีระ นำชาญชัยวุฒิ
+วีระ ประดิษฐผลพานิช
+วีระ พลศักดิ์
+วีระ มนตเสรีวงศ์
+วีระ รัชตามุขยนันต์
+วีระ ลือวิชนะ
+วีระ วัฒนายิ่งสกุล
+วีระ ศรีมาลา
+วีระ สวรรยารัตน์
+วีระ สุริยประภาดิลก
+วีระ เหลืองบริบูรณะ
+วีระ อุนคานนท์
+วีระชัย กูดโพนงาม
+วีระชัย ชิ้นศิริ
+วีระชัย ทองวงษ์
+วีระชัย พรหมมาศ
+วีระชัย โล้พิรุณ
+วีระชัย สุนทรเจริญนนท์
+วีระชาต พงศ์สวัสดิ์
+วีระชาติ อิงสันเทียะ
+วีระพงศ์ บุญกิตติเจริญ
+วีระพงษ์ เทียนเสริมทรัพย์
+วีระพงษ์ สิริวัฒนเสถียร
+วีระพล จิรังนิมิตสกุล
+วีระพล มีลาภ
+วีระพล โอสภารยกุล
+วีระพันธ์ เพชรรัตน์
+วีระยุทธ โกรัตนะ
+วีระยุทธ ศุภนารา
+วีระวรรณ แซ่โค้ว
+วีระวัฒน์ ตุงควิจิตรวัฒน์
+วีระวัฒน์ สุวรรณเบญจกุล
+วีระศักดิ์ กองแก้ว
+วีระศักดิ์ ชาญวิรวงศ์
+วีระศักดิ์ ทองไพบูลย์
+วีระศักดิ์ โปธิมา
+วีระศักดิ์ ฤกษ์สมบูรณ์ศิริ
+วีระศักดิ์ ศรีสินทร
+วีระศักดิ์ หอมชื่น
+วีระเกียรติ ตั้งอมรรัตน์
+วีระเทพ เต็มสินผดุง
+วีรายา อ่วมสะอาด
+วีรเดช ลิมป์รัชตามร
+วุฒฑินันท์ ศรีโฉมงาม
+วุฒิ โชสิวสกุล
+วุฒิ มีสุข
+วุฒิ เหล่าสุนทร
+วุฒิชัย เกศปานนท์
+วุฒิชัย แซ่ลิ้ม
+วุฒิชัย ประวิงรัตน์
+วุฒิชัย รอดเจริญ
+วุฒิชัย ศฤงคารภาษิต
+วุฒิชัย แสนมาโนช
+วุฒินันท์ ตุลยลักษณ์
+วุฒิพงศ์ หวังธนกิจ
+วุฒิพงษ์ ศรีพาณิชย์
+วุฒิวัฒน์ อรุณทอง
+วุฒิสา บุษมงคล
+วุฒิไกร อุทัยวัฒนปรีชา
+วโรชา ตุงคะเศรณี
+วไลพร ดีถาวร
+วไลลักษณ์ เจริญอัควสุข
+เวช ทองเรือง
+เวณิก จงเจริญ
+เวสท์แลนด์ ดี
+เวียงฟ้า คุ้มไพทูลย์
+เว้งฮง แซ่กัง
+แวว อ่อนละมูล
+แววตา รอดคลองตัน
+แววใจ แซ่บ้าง
+ไวฑูรย์ ปรัชญาพงศ์พันธ์
+ไวย เป้าทอง
+ไววิทย์ เหล่าวรวิทย์
+ศกุนตลา รักษาสัตย์
+ศจีพร อิสริยะเสรีกุล
+ศนิษา นัยธนิช
+ศรชัย เกียรติชัยวุฒิ
+ศรชัย รัศมิทัต
+ศรร ธรรมถุติ
+ศรศิลป์ พลเตชา
+ศรัญญา โพธิ์แก้ว
+ศรัณญา จงนรังสิน
+ศรัณยา วงศ์บา
+ศรัณย์ เธียรศิลากุล
+ศรัทธา ทองวุฒิพันธ์
+ศราภรณ์ ปรีชา
+ศรายุทธ สาสนิท
+ศราวุฒิ จินาตุน
+ศราวุธ ด่านเพ็ชรดำรง
+ศราวุธ สมัยเทอดศักดิ์
+ศรินดา ปัสนะจะโน
+ศรินทิพย์ ถ้ำทิมทอง
+ศรินยา สหสิทธิวัฒน์
+ศรี เผ่าทองจีน
+ศรีกันยา โบว์สุวรรณ
+ศรีจันทน์ ว่องเจริญ
+ศรีจันทร์ ยินดีอัน
+ศรีจิตต์ สุชาติสุธาธรรม
+ศรีชาติ สุภาษิต
+ศรีทอง พูลทรัพย์
+ศรีธิชา ทองอินทร์
+ศรีนวล จันทร์สุข
+ศรีนวล ทุมเที่ยง
+ศรีนวล เมฆห่วง
+ศรีนวล สุขสอาด
+ศรีนารี แซ่เฮง
+ศรีประภา กลิ่นสังข์
+ศรีประภา แสงเนตร
+ศรีปราชญ์ สุทัศนศึกษา
+ศรีพร มาละวิชัย
+ศรีพัชรา ศุภรวรรณ
+ศรีมาลา กลีบกมล
+ศรีรัตนา รอดดี
+ศรีรัตน์ บรรยงกะเสนา ณ อยุธยา
+ศรีรัตน์ สังข์พันธ์
+ศรีลัดดา โป๊ะบุญชื่น
+ศรีวรรณ ชูณรงค์
+ศรีวรรณ รัตนเศรษฐ
+ศรีวรรณ อินทรัตน์
+ศรีวลี ลิ่มมรกต
+ศรีวิชัย นกยิ้ม
+ศรีวิลัย สงวนสัตย์
+ศรีวิไล สุขุมกาญจนะ
+ศรีศักดิ์ สุวรรณศักดิ์ศรี
+ศรีสกุล ศรีตะปันย์
+ศรีสมบูรณ์ เพชรม่วง
+ศรีสมร พงศาวลีรัตน์
+ศรีสมัย วิบูลยานนท์
+ศรีสวัสดิ์ ธนานันท์
+ศรีสวาสดิ์ น้อยพันธุ์
+ศรีสอาด แซ่ฮั้ง
+ศรีสุข กลิ่นบัว
+ศรีสุชาติ ทองไล้
+ศรีสุดา แดงดีเลิศ
+ศรีสุดา มั่นคงสกุล
+ศรีสุดา สุวรรณกิจวัฒน์
+ศรีสุนี อัศวพิภพ
+ศรีสุมาลย์ งามประเสริฐกิจ
+ศรีสุวรรณ รุณประเสริฐ
+ศรีออน ทองคำ
+ศรีอุดม เดชะศิริ
+ศรีเจริญ รอบคอบ
+ศรีเพ็ญ ทรัพย์มนชัย
+ศรีเรือน ประยูรพรหม
+ศรีแค ทรัพย์ดี
+ศรีไทย ศรีเวทย์บดี
+ศรุต ครบธีรวงศ์
+ศลิษา วรรณกิจ
+ศศวรรณ ฤกษ์สุริยพันธ์
+ศศิชล จรูญเลิศสิทธิผล
+ศศิธร คำสัณห์
+ศศิธร ไชยริปู
+ศศิธร ธรรมพักตรกุล
+ศศิธร พราหมณะนันทน์
+ศศิธร รุจานุรักษ์
+ศศิธร ศรีอนุพันธุ์
+ศศิธร สุริยาพร
+ศศิธร แอนอึ้ง
+ศศิพร ธนโกวิท
+ศศิภาส์ ประเสริฐสุข
+ศศิลักษณ์ เชาว์พานนท์
+ศศิวิมล โกสิยกุล
+ศศิเพ็ญ วรรณวิจิตร
+ศักดา คล้ายสาคร
+ศักดา แซ่ตั้ง
+ศักดา ธรรมพิทักษ์
+ศักดา พงษ์ผล
+ศักดา แม้นสุวรรณ
+ศักดา วิสุทธิวงศ์
+ศักดา สุริยะพรชัยกุล
+ศักดา เอี่ยมอร่ามศรี
+ศักดิ์ชัย คมกฤส
+ศักดิ์ชัย ช่อชัยพฤกษ์
+ศักดิ์ชัย ดำริห์งาม
+ศักดิ์ชัย ทักขิญเสถียร
+ศักดิ์ชัย ปัญญามีเสมอ
+ศักดิ์ชัย โพธิ์ปริสุทธิ์
+ศักดิ์ชัย ฤกษ์เกษม
+ศักดิ์ชัย วิริยะสุขสินธุ์
+ศักดิ์ชัย สิริประภาพรรณ
+ศักดิ์ชัย เหลียงกอบกิจ
+ศักดิ์ชัย เอื้อสุนทรพานิช
+ศักดิ์ชาย ลิขิตตระกุล
+ศักดิ์ดา ไชยานุวงศ์
+ศักดิ์ดา อิงควะระ
+ศักดิ์ยันต์ ชูใจ
+ศักดิ์ศิริมา ขำเอี่ยม
+ศักดิ์สิทธิ์ เถาทอง
+ศักดิ์สิทธิ์ เหมกิตติเกียรติ์
+ศักดิ์ไสว ทองรัตน์
+ศักดิ์ พึ่งเจริญ
+ศักดี เฉียบแหลม
+ศังกร ภูวเจริญ
+ศันสนีย์ ตะโพนทอง
+ศันสนีย์ วิชัยดิษฐ
+ศัลยวิทย์ ศิริมณฑล
+ศานติ อัจจิมากร
+ศาวิตรี ภวาติเศรษฐ์
+ศินิตย์ อณิสันฑ์
+ศิรพร ศิริบุญรักษา
+ศิระ สโตน
+ศิรานุช สุวรรณโชติ
+ศิริ ไกรสมจิตร
+ศิริ ชัยสันธนะ
+ศิริ ธรรมสุริเชษฐ์
+ศิริ ผลินกูล
+ศิริ มัธยมจันทร์
+ศิริ วงศ์ฉิ่งยืนยง
+ศิริ เศวตรักต
+ศิริ หวานสนิท
+ศิริกัญญา แรมวัลย์
+ศิริกุล จินตนางกูร
+ศิริกุล รักเกียรติยศ
+ศิริขวัญ แซ่เฮา
+ศิริฉาย พงศ์สุประดิษฐ์
+ศิริชัย คูอนันต์กุล
+ศิริชัย แซ่เจียง
+ศิริชัย นภาบริรักษ์
+ศิริชัย พินิจวรกุล
+ศิริชัย ลิ้มเลิศตระกูล
+ศิริชัย ศุภรัชตการ
+ศิริชัย หงษ์วิทยากร
+ศิริณัฐ ใจอารี
+ศิริทิพย์ พรหมสกุลชัย
+ศิรินทร จงเสถียร
+ศิรินทร์ นิมมานเหมินทร์
+ศิรินธร ทองสุข
+ศิรินันท์ แซ่อึ่ง
+ศิรินันท์ เอสุจินต์
+ศิรินารถ ติษยางกูร
+ศิริบูรณ์ เล็กผลิผล
+ศิริพงศ์ อินทร์บำรุง
+ศิริพงษ์ ทับทิม
+ศิริพงษ์ วงศ์พิมพ์
+ศิริพงษ์ อุทัยธนารักษ์
+ศิริพร กาศสุวรรณ
+ศิริพร ขุนโอษฐ
+ศิริพร จันกลัด
+ศิริพร เจริญกิจพิมล
+ศิริพร ชาติพาณิชย์
+ศิริพร แซ่ตั้ง
+ศิริพร ดำรงวงศ์ศิริ
+ศิริพร เต็มสุนทร
+ศิริพร เทียนธรรมชาติ
+ศิริพร นิลพราว
+ศิริพร ประยุกต์วงศ์
+ศิริพร พงษ์ชัยประทีป
+ศิริพร พานิชล้อเจริญ
+ศิริพร ภูมิอมร
+ศิริพร ยันต์ตระกูล
+ศิริพร เรืองธวัชศิลป
+ศิริพร เลิศธนาผล
+ศิริพร วัลลภศิริ
+ศิริพร ศรีสิงห์ชัย
+ศิริพร สลับ
+ศิริพร สุขเจริญนุกูล
+ศิริพร แสงเพ็ชร์
+ศิริพร ให้อุดมกาญจนลาภ
+ศิริพร อารมย์สุข
+ศิริพรรณ กลิ่นสวัสดิ์
+ศิริพรรณ ธรรมคุฬห์
+ศิริพรรณ สุขหิรัญกิจ
+ศิริพัฒนา วิเศษแพทยา
+ศิริพันธ์ ลักขณานุกุล
+ศิริภรณ์ เหลี่ยมศิริวัฒนา
+ศิริมา คุ้มโต
+ศิริมา เฟื่องขจร
+ศิริมา อินธำรงค์
+ศิริรักษ์ บุญช่วยเมตตา
+ศิริรัตน์ เข็มนาค
+ศิริรัตน์ แซ่กิม
+ศิริรัตน์ เทพนิมิตร
+ศิริรัตน์ พรพงศ์อธิคม
+ศิริรัตน์ รักธรรม
+ศิริรัตน์ ศรีนาคคำ
+ศิริรัตน์ แสงจันทร์
+ศิริรัตน์ เอี่ยมเวช
+ศิริลักษณ์ จตุเสน
+ศิริลักษณ์ ตั้งเฉลิมกุล
+ศิริลักษณ์ ปั้นบำรุงกิจ
+ศิริลักษณ์ รุจิโกไศย
+ศิริลักษณ์ สาครรัตนกุล
+ศิริลักษณ์ เอกวงค์
+ศิริวรรณ เกิดวัฒนา
+ศิริวรรณ จารุจรณ
+ศิริวรรณ ชุติจาตุรนต์
+ศิริวรรณ ดาวอุดม
+ศิริวรรณ ทองพูล
+ศิริวรรณ บัวศรี
+ศิริวรรณ พระเทพ
+ศิริวรรณ มหาศักดิ์ศิริ
+ศิริวรรณ เลิศสินอุดม
+ศิริวรรณ ศรีบัวเผื่อน
+ศิริวรรณ สันติเวชชกุล
+ศิริวรรณ แสงสุรีย์
+ศิริวรรณ อินทธิ์สัณห์
+ศิริวัฒน์ แซ่โล้ว
+ศิริวัลภ์ ดารากร ณ อยุธยา
+ศิริศักดิ์ จงตระกูล
+ศิริศักดิ์ โรจน์ฤทธากร
+ศิริสุข เรี่ยวเรืองสุข
+ศิริอร เอียประเสริฐ
+ศิริเพ็ญ โกเมนเอก
+ศิริเพ็ญ บุญกังวาน
+ศิริเพ็ญ สินธุธาน
+ศิริโรจน์ สโลภาพ
+ศิลปชัย ไทยประเสริฐ
+ศิลป์ชัย เจริญใจ
+ศิลปวัธน์ ชัยพัฒนาวรรณ
+ศิลา ราชอภัย
+ศิวพร เกลียวอรรคเดช
+ศิวพร ยินดี
+ศิวลี จันทมาศ
+ศิวะพล งามธนวโรทัย
+ศิวาพร แยงคำ
+ศิวิกานติ์ ไวจรรยา
+ศิษฎ์ ฉันทาริยะ
+ศีลวัต อนะธรรมสมบัติ
+ศุขธาพัฒน์ กัณฑ์ชูสิน
+ศุพิรัตน์ สำราญสุขรัตน์
+ศุภกาญจน์ แสวงศักดิ์
+ศุภกิจ พันธ์บุญเกิด
+ศุภกิจ อิงอนุรักษ์สกุล
+ศุภชัย แก้วมีชัย
+ศุภชัย จิตวิสุทธิ์พงศ์
+ศุภชัย แซ่จึง
+ศุภชัย ตุลวรรธนะ
+ศุภชัย นิ่มนวล
+ศุภชัย พงศ์ชัยสิริกุล
+ศุภชัย มั่งเกียรติสกุล
+ศุภชัย ฤทธิ์ลายา
+ศุภชัย วิวัฒนมงคลกุล
+ศุภชัย สนองคุณ
+ศุภชัย แสงฟ้าสกุลไท
+ศุภชัย อึ้งสกุล
+ศุภณัฐ พรหมพิริยาภรณ์
+ศุภนิตย์ โชครัตนชัย
+ศุภพร มังกรกาญจน์
+ศุภมาส ด่านพานิช
+ศุภมิตร สุขศรี
+ศุภรงค์ ละโว้ชัย
+ศุภรัตน์ ยิ่งกวีมานพ
+ศุภราภรณ์ พุทธรัตน์
+ศุภฤกษ์ หล่อพิริยะวงศ์
+ศุภลักษณ์ แซ่แต้
+ศุภลักษณ์ เลิศรัตน์เดชากุล
+ศุภลัคณ์ มีมาก
+ศุภวรรณ เนติธาดา
+ศุภวรรณ สุวรรณเลิศ
+ศุภวัฒน์ สวัสดิ์วงศ์
+ศุภวิศ สิริเกษมสุข
+ศุภษร พรจิตโกวิท
+ศุภอรรถ นัจจะนันทน์
+ศุภาสินี กังวาลเนาวรัตน์
+ศุภโชค ธนปัญจาภรณ์
+ศุรพงษ์ คชาชีวะ
+ศุลีพร สันนะกิจ
+เศกสรร ทองศรีคำ
+เศรษฐชัย ศักดิ์โฆษิต
+เศรษฐา จงพรประเสริฐ
+เศวต ศรีปัญญา
+โศภิดา เตชะศรินทร์
+โศรยา ศุภกรแสงทอง
+สกน มีกังวาล
+สกนธ์ อริยมงคลสกุล
+สกล ชูเกษ
+สกล เปี่ยมวิมล
+สกล ลีลาขจรจิต
+สกล สุรคุปต์
+สกลวรรณ วาสินนท์
+สกาวรัตน์ อัคคีเดช
+สกุณา รุจิเกียรติกำจร
+สกุล นครชัย
+สกุล เหลืองอร่าม
+สกุลรัตน์ ลัทธ์สัมฤทธิ์
+สงกรานต์ จุณณทัศน์
+สงกรานต์ ศิริพานิช
+สงคราม ฉิมพสุทธ
+สงคราม ศรีสุข
+สงบ งามผ่อง
+สงบ นันทขว้าง
+สงบ เย็นฤดี
+สงบ อ้นประดิษฐ์
+สงวน แกล้วกล้า
+สงวน จันทรอักษร
+สงวน ชูตระกูล
+สงวน ตันสุขานันท์
+สงวน นุชรีวรรณ
+สงวน พงษ์หงษ์
+สงวน ภาระโข
+สงวน รุณภัย
+สงวน วิมลสุทธิกุล
+สงวน สงวนเตชะตระกูล
+สงวน สุวิทยาภรณ์
+สงวน อังกุวรกุล
+สงวนรักษ์ ไตรนาจา
+สงวนศรี ภู่งาม
+สงวนศักดิ์ ลิขนานนทวงศ์
+สงัด จันทร์แต้
+สงัด ปริกเพชร์
+สงัด วันณุปถัมภ์
+สงัด เอี่ยมสำอางค์
+สง่า คงสำราญ
+สง่า ฉวีปลั่ง
+สง่า แดงดีเลิศ
+สง่า ธรรมยิ่งยง
+สง่า ปานะนิล
+สง่า ภาษิต
+สง่า รื่นไทย
+สง่า วุฒิมงคลชัย
+สง่า สาหร่าย
+สง่า หอมสมบัติ
+สงุ่น ซื่อมาก
+ส่งศรี แก้วจันทร์
+ส่งศักดิ์ กรณปกรณ์
+สจ๊วต ชาร์ล
+สด พุ่มนิคม
+สดศรี พุ่มเจริญ
+สดาวรรณ บุญเจริญ
+สดใส ยุทธนาสิริกุล
+สตีเฟน ฮาว
+สถาพร คัมภิรานนท์
+สถาพร ชูวงศ์เติม
+สถาพร นีรนาถวงศ์
+สถาพร พึ่งพระเกียรติ
+สถาพร เล้าประเสริฐศรี
+สถาพร สินธุนาวา
+สถาพร อุกกุฏานนท์
+สถิตพงศ์ มนาปราณี
+สถิตย์ ใจสุทธิ์
+สถิตย์ นาวุฒิ
+สถิตย์ ไม้งิ้ว
+สถิตย์ สิงห์โต
+สถิรพันธุ์ เกยานนท์
+สนชัย พิรุณสาร
+สนทิศ สกุลกนก
+สนธยา เด่นวรกุล
+สนธยา โพธิ์น้อย
+สนธยา เสียงวรานนท์
+สนธิ เลื่อนฉวี
+สนธิยา เกียรติวรางกูร
+สนม โตรักษาสกุล
+สนวน ฉิมนาคพันธุ์
+สนอง จันทรศัพท์
+สนอง ตัมพันธุสกุล
+สนอง บุญมีฤทธิ์
+สนอง โพธิ
+สนอง ลีนะวัต
+สนอง สินเบญจทรัพย์
+สนอง อุ่นทรัพย์
+สนั่น กฤษดาธิการ
+สนั่น โคกขำ
+สนั่น ชื่นเผือก
+สนั่น ทองสมบัติ
+สนั่น บุญมาก
+สนั่น พิกุลแย้ม
+สนั่น รักสมยา
+สนั่น ศรีละม้าย
+สนั่น สุขช่วย
+สนั่น อบเชย
+สนาน จันทรเลิศ
+สนาม พลอยศิริ
+สนิท แก้วพล
+สนิท จั่นประดับ
+สนิท ดุษฏีโหนด
+สนิท แท่งทอง
+สนิท บุญพิทักษ์
+สนิท พ่วงพงษ์
+สนิท มาประจวบ
+สนิท ลูกจันทร์
+สนิท สตมหาชลาสินธุ์
+สนิท แสงทอง
+สนิท อุดมธีรกุล
+สนุ่น เชื้อนุ่น
+สปัน พัชรารัตน์
+สภาองค์การลูกจ้างแรงงานแห่งปร สภาองค์การลูกจ้างแรงงานแห่งปร
+สม น้อยปรีชา
+สม วรรณประภา
+สมกมล มะโนกิจ
+สมคล เชื้อเมืองทาน
+สมควร จันทร์นุ้ย
+สมควร แซ่แต้
+สมควร นัยศิริ
+สมควร พัฒนพงษ์ไพบูลย์
+สมควร รักกลัด
+สมควร ศรีอินทร์
+สมควร ไสยสมบัติ
+สมคิค วัฒนเสรีวงศ์
+สมคิด แก้วชิงดวง
+สมคิด จอนสมจิตต์
+สมคิด ใจอิ่ม
+สมคิด แซ่จิว
+สมคิด ตั้งศิริทรัพย์
+สมคิด ทะรังศรี
+สมคิด นิคมเขตต์
+สมคิด ใบมงคล
+สมคิด พร้อมมูล
+สมคิด เพ็งพาด
+สมคิด มูลทองชุน
+สมคิด รุ่งเรืองศรี
+สมคิด วันวะนา
+สมคิด ศิริรัตนวุฒิ
+สมคิด สิงห์สำราญ
+สมคิด แสงนนท์ตระกูล
+สมคิด อ้นเปรม
+สมคิด อุนทริจันทร์
+สมจันทร์ เหรียญปัญญากุล
+สมจิต จันทุมากร
+สมจิต ตัณฑสุทธิ์
+สมจิต บุญทวี
+สมจิต เพ็งสวน
+สมจิต วรรณรักษ์
+สมจิต สุทธิมาลย์
+สมจิตต์ กนกชัยปราโมทย์
+สมจิตต์ แก้วเกื้อกูล
+สมจิตต์ จิตต์สุทัศน์
+สมจิตต์ ชินราช
+สมจิตต์ แซ่เอี้ย
+สมจิตต์ ถิ่นถนอม
+สมจิตต์ ธัมมรัคคิต
+สมจิตต์ เบนกุโรโม
+สมจิตต์ พลามิตร
+สมจิตต์ ภูมิจิตอมร
+สมจิตต์ รามศร
+สมจิตต์ วชิรวณิชกิจ
+สมจิตต์ ศาสตร์สุข
+สมจิตต์ สิงหา
+สมจิตต์ หมู่ผึ้ง
+สมจิตต์ อิงคะวัต
+สมจิตร เกตุติมะ
+สมจิตร จรรยา
+สมจิตร ใจวังโลก
+สมจิตร แซ่เบ๊
+สมจิตร ทองสุภร
+สมจิตร เนียมศิริ
+สมจิตร ปิ่นมณี
+สมจิตร พุ่มประดับ
+สมจิตร เมี่ยงบัว
+สมจิตร เลิศถวิลจิร
+สมจิตร ศรีสุวณิชกุล
+สมจิตร สินเพ็ง
+สมจิตร หมัดโน๊ต
+สมจิตรา จันโภคา
+สมจิตร์ ฉัตร์ทอง
+สมจิตร์ ทิพย์ประภาแย้ม
+สมจิตร์ พึ่งยนต์
+สมจิตร์ วัฒนเจริญพร
+สมจิตร์ หวังดิลก
+สมจินตนา วังทอง
+สมฉวี เหมะวิริยาพรวัฒนา
+สมชัย กิจเลิศไพโรจน์
+สมชัย คล่องธนกิจ
+สมชัย จิรชยางกูร
+สมชัย ชัยจรูญพร
+สมชัย ไชยศรีธรรมคุณ
+สมชัย แซ่เลี่ยง
+สมชัย ตั้งนิรันดร
+สมชัย ทรงฮง
+สมชัย นรเศรษฐ์โศภณ
+สมชัย โบสุวรรณ์
+สมชัย พรมงคลสุข
+สมชัย ฟุ้งสิริรัตน์
+สมชัย ยุทธนาภินันท์
+สมชัย ล้วนใจสนธิ์
+สมชัย วงศ์พันธ์งาม
+สมชัย วิศวสมภพ
+สมชัย ศิลปสาธิต
+สมชัย สายด้วง
+สมชัย สุโชติกพันธุ์
+สมชัย โหตรจิตร
+สมชัย อาภาวัชน์
+สมชาญ ลีมาสวัสดิ์กุล
+สมชาติ จิตตวิสุทธิวงศ์
+สมชาติ ดลยานุเคราะห์
+สมชาติ นิรันดร์วงศ์วาน
+สมชาติ เพ็ญเสงี่ยม
+สมชาติ เลิศธรรมนาถ
+สมชาติ สันตินรศักดิ์
+สมชาติ อ่วมประเสริฐ
+สมชาย กลพิสุทธิ์
+สมชาย กาญจนกันติการ
+สมชาย กิตติเลิศไพศาล
+สมชาย เกิดเรือง
+สมชาย แก้วสมบูรณ์
+สมชาย ขุนวิเศส
+สมชาย ค้าทันเจริญ
+สมชาย โฆษิตวิวัฒน์
+สมชาย จงเทิดทูนสกุล
+สมชาย จันทรประทิน
+สมชาย จิตตรานนท์
+สมชาย จุนเจือทรัพย์
+สมชาย เจษฎานภาวงศ์
+สมชาย ฉัตรมงคลเกษม
+สมชาย ชลพิไลพงศ์
+สมชาย ชาญสมอน
+สมชาย ชุ่มไชยพฤกษ์
+สมชาย โชคสิริสวัสดิ์
+สมชาย แซ่คู
+สมชาย แซ่ตั้ง
+สมชาย แซ่ลี้
+สมชาย แซ่ฮ้อ
+สมชาย แซ่เฮง
+สมชาย แซ่โล้ว
+สมชาย ดีมงคลสุข
+สมชาย ตระกูลนิ่มนวล
+สมชาย ตั้งปนิธานดี
+สมชาย ตันเจริญ
+สมชาย เตี้ยบัวแก้ว
+สมชาย ถิรโสตถินานนท์
+สมชาย ทองหล่อ
+สมชาย เทอดวงศ์วรกุล
+สมชาย ธรรมกิจไพโรจน์
+สมชาย ธเนศนิตย์
+สมชาย นาคพลั้ง
+สมชาย นิลวณิชย์
+สมชาย บำรุงวงศ์
+สมชาย บุญสุวรรณ์
+สมชาย ประกายโกวิท
+สมชาย ปลื้มจิต
+สมชาย ปุณณรุจาวงษ์
+สมชาย เผื่อนจาง
+สมชาย พรถิระมงคล
+สมชาย พวงทอง
+สมชาย พิทักษ์กิจถาวร
+สมชาย พุ่มสุข
+สมชาย โพธิ์งาม
+สมชาย ภัทรางกูร
+สมชาย มณีเขียว
+สมชาย มารีกัน
+สมชาย เมฆเนย
+สมชาย เย็นใจเฉื่อย
+สมชาย รัตนชาติกุล
+สมชาย รุ่งศรีศศิธร
+สมชาย โรจนวรโสภณ
+สมชาย ลาภอุดมทรัพย์
+สมชาย ลี้ลัทธเกียรติ
+สมชาย เลิศวิบูลย์กิจ
+สมชาย วงศ์ตระกูลจง
+สมชาย วงษ์หิรัญวานิช
+สมชาย ว่องวงศ์ศรี
+สมชาย วานิชวัฒน์
+สมชาย วิษณุวงศ์
+สมชาย ศรบรรจง
+สมชาย ศรีวิไล
+สมชาย ศิริธีราเจษฎ์
+สมชาย ศุภลักษณ์วัจนะ
+สมชาย สนสง่า
+สมชาย สว่างน้อมจิตต์
+สมชาย สัยละมัย
+สมชาย สินธุประภา
+สมชาย สุขนันทศักดิ์
+สมชาย สุทธิขาว
+สมชาย สุรเดชานันท์
+สมชาย เสาหง
+สมชาย หงษ์รัตนวิจิตร
+สมชาย หอมกระหลบ
+สมชาย เหลืองศิริรังษี
+สมชาย อนันต์สุขบรรณ
+สมชาย อยู่เกิด
+สมชาย อังกูรารักษ์
+สมชาย อาจหาญ
+สมชาย อิ่มสมบูรณ์
+สมชาย เอกปัญญากุล
+สมชาย เอื้อเกษมสิน
+สมญา ชาญกระบี่
+สมดี ว่องไววณิชกุล
+สมถวิล จันทร์สิริพจน์
+สมถวิล ทองเหง้า
+สมถวิล พรหมพงษ์
+สมถวิล เลี้ยวพรประสาท
+สมถวิล แสงนิลศิริ
+สมทบ ภู่มงกุฎชัย
+สมทรง ขอพบสุข
+สมทรง เจริญยิ่ง
+สมทรง ตันประเสริฐ
+สมทรง เนื่องจากนาค
+สมทรง พานิชยะมนตรี
+สมทรง รุ่งเรืองศิลป์
+สมทรง เศวตเวช
+สมทรง แสงสว่าง
+สมทรัพย์ พรศิริลัคณา
+สมนัส ขรรค์ชัย
+สมนึก กฤษณสุวรรณ
+สมนึก เกิดเปี่ยม
+สมนึก คงยิ่ง
+สมนึก จรูญศักดิ์
+สมนึก จึงจตุรพิธ
+สมนึก เฉลิมศรี
+สมนึก ชูทรัพย์
+สมนึก แซ่อื้อ
+สมนึก ตั้งวัชรพงศ์
+สมนึก ท้วมแสง
+สมนึก ธัมพิพิธ
+สมนึก เนียมทับทิม
+สมนึก บูรณะสมษัติ
+สมนึก เปรมรัตนา
+สมนึก พลายงาม
+สมนึก พูลโอษฐ์
+สมนึก มงคลจรัสแสง
+สมนึก ยอดบริบูรณ์
+สมนึก รุ้งกมลพันธ์
+สมนึก เลิศสิริสุข
+สมนึก วัชรบูรณพงษ์
+สมนึก ศรีประดับรัตน์
+สมนึก สนธิโหมด
+สมนึก สิงหาคุณ
+สมนึก สุทธิวงศ์
+สมนึก หงุ่ยกระโทก
+สมนึก อมรสิริพาณิชย์
+สมนึก อิสรั่น
+สมบัตร์ ทรัพย์แย้ม
+สมบัติ กุลวุฒิ
+สมบัติ เขียวโสภา
+สมบัติ เครืออาษา
+สมบัติ จารุบรรยงค์
+สมบัติ ฉัตรวรุณรัตน์
+สมบัติ ไชยทรัพย์
+สมบัติ ด้วงวงศ์ศรี
+สมบัติ เตชอัครเสถียร
+สมบัติ ทองย้อย
+สมบัติ เธียรพจน์
+สมบัติ บัวรุ่ง
+สมบัติ ประเสริฐนพคุณ
+สมบัติ ผูกเกษร
+สมบัติ พาเจริญสุข
+สมบัติ โพธิบุญ
+สมบัติ มะหะหมัด
+สมบัติ ยิ่งเจริญ
+สมบัติ เรื้อก
+สมบัติ วงศ์กำชัย
+สมบัติ วิภูศิริ
+สมบัติ ศรเลิศ
+สมบัติ สมศรีอักษรแสง
+สมบัติ สิงห์สวัสดิ์
+สมบัติ สุนทรเสณี
+สมบัติ หม่อมประเสริฐ
+สมบัติ อยู่ประเสริฐ
+สมบัติ อุตมะวิริยางกูร
+สมบุญ เกตมณี
+สมบุญ จารุรัตนเกื้อ
+สมบุญ แซ่หยิบ
+สมบุญ ทองพงษ์เนียม
+สมบุญ บุญวัฒนา
+สมบุญ พูนสิรสิน
+สมบุญ รักษ์สุรวงศา
+สมบุญ วาทรัพย์
+สมบุญ สีน้ำเงิน
+สมบุญ อภิวรรณศรี
+สมบูรณ์ กนกนภากุล
+สมบูรณ์ กิจรังษีวิบูลย์
+สมบูรณ์ แก้วการ
+สมบูรณ์ คงมั่น
+สมบูรณ์ งามธรรมศิริ
+สมบูรณ์ จันโทวาท
+สมบูรณ์ จุลพล
+สมบูรณ์ ฉายะโอภาส
+สมบูรณ์ ชุณหะวัณ
+สมบูรณ์ แซ่ฟุ้ง
+สมบูรณ์ ณัฎฐสมบูรณ์
+สมบูรณ์ ตั้งประดิษฐ์
+สมบูรณ์ เต่าทอง
+สมบูรณ์ ทองอร่าม
+สมบูรณ์ ธนาสุวรรณดิถี
+สมบูรณ์ นิมะ
+สมบูรณ์ บุญล้นเหลือ
+สมบูรณ์ ประเสริฐสุขแสน
+สมบูรณ์ ผ่องไสว
+สมบูรณ์ พรเดชเดชะ
+สมบูรณ์ พิเศษพัฒนกุล
+สมบูรณ์ ฟูเฟื่องสมบัติ
+สมบูรณ์ มั่งมี
+สมบูรณ์ ยันนาดี
+สมบูรณ์ รื่นราตรี
+สมบูรณ์ ลี่ทองอิน
+สมบูรณ์ วงศ์สุวรรณนิธิ
+สมบูรณ์ วัยวิรัตน์
+สมบูรณ์ ศริมโนนุกุล
+สมบูรณ์ ศิริบรรจง
+สมบูรณ์ สมอุดร
+สมบูรณ์ สาสะเดาะห์
+สมบูรณ์ สุทธิชัง
+สมบูรณ์ แสงดี
+สมบูรณ์ หาญพัฒนชัยกูร
+สมบูรณ์ อรรคศิรินนท์
+สมบูรณ์ อินจำปา
+สมบูรณ์ โอภาสเจริญวิทย์
+สมประสงค์ บุญยะชัย
+สมประสงค์ อุ่นละม้าย
+สมปอง เกษร์มณี
+สมปอง จิวไพโรจน์กิจ
+สมปอง ดวงประเสริฐ
+สมปอง เทพเทพา
+สมปอง บูรณะวุฒิ
+สมปอง พุดตาล
+สมปอง ยงวณิชย์
+สมปอง แวววัชระ
+สมปอง สิงหเสนี
+สมปอง เหล่าเพ็ชรรัตน์
+สมพค ศีลพิพัฒน์
+สมพงศ์ แซ่โค้ว
+สมพงศ์ รัตนบุรี
+สมพงษ์ กรรณสูต
+สมพงษ์ กิตติรัตนาภินันท์
+สมพงษ์ โกศลรอด
+สมพงษ์ คล้ายมี
+สมพงษ์ จันทร์จำรัส
+สมพงษ์ จีนเวชศาสตร์
+สมพงษ์ ฉายแก้ว
+สมพงษ์ ชีวะเจริญไทย
+สมพงษ์ แซ่ตั้ง
+สมพงษ์ ณรงค์เปลี่ยน
+สมพงษ์ ตันตระกูล
+สมพงษ์ ทรงทรัพย์กุล
+สมพงษ์ เทพไกรลาศ
+สมพงษ์ นันทพรพิพัฒน์
+สมพงษ์ บุญคุณ
+สมพงษ์ ประภาศิริ
+สมพงษ์ ปุยยะรุน
+สมพงษ์ พงษ์เภตรา
+สมพงษ์ พินิจการณ์
+สมพงษ์ ไพจิตร
+สมพงษ์ มังกรพานิช
+สมพงษ์ ยูฮันเงาะ
+สมพงษ์ รุจิขจร
+สมพงษ์ ลือชาติเมธิกุล
+สมพงษ์ วงสอาด
+สมพงษ์ วิริยะมนตรี
+สมพงษ์ ศรีสากล
+สมพงษ์ สกุลสุภายนา
+สมพงษ์ สะสมทรัพย์
+สมพงษ์ สินสดวก
+สมพงษ์ สุนทรธรรม
+สมพงษ์ แสงสินทรัพย์
+สมพงษ์ หาญพาณิชย์พันธุ์
+สมพงษ์ อมรธัญสิริกุล
+สมพงษ์ อาหมัด
+สมพจน์ กยาวัฒนกิจ
+สมพจน์ หอมนิยม
+สมพร กิจกังวาล
+สมพร แก้วนิล
+สมพร คงสิทธิ์
+สมพร งอนหอม
+สมพร จันทะรังศรี
+สมพร แจวเจริญ
+สมพร ชัยนิคม
+สมพร เชื้อเกตุ
+สมพร แซ่อึ้ง
+สมพร ดีไพศาล
+สมพร ตุ่มมะ
+สมพร ทองประดิษฐ
+สมพร เทียนทัด
+สมพร น้อยเข็มเงิน
+สมพร บัวอุไร
+สมพร บุตรขันทอง
+สมพร ปานใยสมบูรณ์
+สมพร พงษ์สุวรรณ
+สมพร พาชีรัตน์
+สมพร เพชรดี
+สมพร ภู่พวง
+สมพร มิรอซา
+สมพร รอดรัศมี
+สมพร เรืองฤทธิ์
+สมพร เลาหรัตนาหิรัญ
+สมพร วรรณชนะ
+สมพร วิลัยรัตน์
+สมพร ศรีเพชร
+สมพร สนทอง
+สมพร สาธิตพิฐกุล
+สมพร สุขแก้ว
+สมพร แสงนนท์
+สมพร หาญพงษ์พันธุ์
+สมพร อ่องละออ
+สมพร อิศรานุรักษ์
+สมพฤษ์ พรหมมิ
+สมพล ฉายายน
+สมพล ธาดากร
+สมพล พึงมงคลชัยกิจ
+สมพล วงศ์ธิบดีเดช
+สมพล สุพโล
+สมพักตร์ มหาพาณิชย์
+สมพันธ์ บุญกังวาล
+สมพิศ กระแสร์คุปต์
+สมพิศ ควรแถลง
+สมพิศ ชุ่มชวย
+สมพิศ โตมะโน
+สมพิศ เนินกร่าง
+สมพิศ พัฒนาฤดี
+สมพิศ ยอดสวัสดิ์
+สมพิศ วิชัยกุล
+สมพิศ สิลุจจยานนท์
+สมพิศ อ่วมธรรม
+สมภพ กิจไชยา
+สมภพ จิรจรัล
+สมภพ ติรชุลี
+สมภพ ประกอบนพเก้า
+สมภพ พูนผลเจริญศรี
+สมภพ ลมลอย
+สมภพ ศรุตวรสกุล
+สมภพ สุรักขกะ
+สมภพ อัมพุประภา
+สมภาพ รัตนดากุล
+สมมาต สังขพันธ์
+สมมาตร พรหมานุกูล
+สมมาตร์ ช้างเผือก
+สมมาศ กวยมงคล
+สมมิตร จันทร์ภักดี
+สมมุติ รัชตะวรรณ
+สมยศ เกิดอนันต์
+สมยศ จั่นเพ็ชร
+สมยศ เชี่ยวชาญแต่ง
+สมยศ ไตรประเสริฐพงศ์
+สมยศ บุญชัยศรี
+สมยศ พรเจริญวัฒนา
+สมยศ มหัทธนะมงคล
+สมยศ รุจิโมระ
+สมยศ วิบูลย์ปิ่น
+สมยศ สังข์ประดิษฐ์
+สมยศ หลีขาว
+สมยา รอดหร่าย
+สมร จันทร์เลิศ
+สมร ไตรวิชา
+สมร ปานย้อย
+สมร มีแก้ว
+สมร ศิธรกุล
+สมร อรรถพิทย์
+สมรรัตน์ ดิษฐอุดมโพธิ์
+สมรส มงคล
+สมรัก ไพบูลย์วีระสกุล
+สมรักษ์ ต่อวงศ์ไพชยนต์
+สมรัตน์ ปรีเจริญ
+สมฤกษ์ หิรัญศุภโชติ
+สมฤดี บุญประเสริฐ
+สมฤดี เสนะวีณิน
+สมฤทัย กล่อมน้อย
+สมลักษณ์ กิติพงษ์
+สมลักษณ์ ซ่อมประดิษฐ์
+สมลักษณ์ ประสิทธิเมกุล
+สมลักษณ์ ลินจงเจริญ
+สมลักษณ์ สุวรรณแสง
+สมวงศ์ คร้ามกำจร
+สมวงษ์ ชำนาญกิจจา
+สมวิทย์ พงศ์บริพัตร
+สมศรี กิจรักษา
+สมศรี ขาวทอง
+สมศรี ง่วนจร
+สมศรี จิตจรัสแสง
+สมศรี ฉิมคล้าย
+สมศรี ชูศรีนวล
+สมศรี แซ่ตั้ง
+สมศรี แซ่โง้ว
+สมศรี ตั้งเจริญ
+สมศรี เถ่ง
+สมศรี เทศธรรม
+สมศรี นาสมฝัน
+สมศรี บุญศักดิ์
+สมศรี ปัทมพงศ์ประยูร
+สมศรี พรปรัชญาพงศ์
+สมศรี พูลทรัพย์
+สมศรี ภูหานาม
+สมศรี ยศชู
+สมศรี รัตนประภาต
+สมศรี ลิขิตสกุลชัย
+สมศรี วงษ์หวังจันทร์
+สมศรี วิริยะบุศย์
+สมศรี ศักดิ์เสมอพรหม
+สมศรี สลัดยะนันท์
+สมศรี สีวันนา
+สมศรี เส็งดอนไพร
+สมศรี หามนตรี
+สมศรี อังคนาวราพันธุ์
+สมศรี อุ่นวัฒนนุกูล
+สมศักดิ์ กรุงทองจันทร์
+สมศักดิ์ กาญจนประพิณ
+สมศักดิ์ กิตติพิทักษ์
+สมศักดิ์ เกรียงไชยกิจกุล
+สมศักดิ์ แก้วบวร
+สมศักดิ์ ขัตตุพงศ์วณิช
+สมศักดิ์ คงไพศาลถาวร
+สมศักดิ์ คุ้มภัยพาล
+สมศักดิ์ จงวนิชย์
+สมศักดิ์ จันทรกุล
+สมศักดิ์ จารุจุฑารัตน์
+สมศักดิ์ จินารักษ์
+สมศักดิ์ เจนจรัสสกุล
+สมศักดิ์ เจือจันทร์
+สมศักดิ์ เฉลยสังข์
+สมศักดิ์ ชาญสมร
+สมศักดิ์ ชูวงศ์วาลย์
+สมศักดิ์ ใช่แน่
+สมศักดิ์ แซ่ตั้ง
+สมศักดิ์ แซ่อึ้ง
+สมศักดิ์ แซ่โตว
+สมศักดิ์ ดีนก
+สมศักดิ์ ตระกูลโอสถ
+สมศักดิ์ ตั้งเจริญธรรม
+สมศักดิ์ ติลกเลิศ
+สมศักดิ์ โตรักษา
+สมศักดิ์ ทรัพย์วิไล
+สมศักดิ์ ทั่งทอง
+สมศักดิ์ เที่ยงสมบูรณ์
+สมศักดิ์ ธรฤทธิ์
+สมศักดิ์ นวลอุไร
+สมศักดิ์ นินนาท
+สมศักดิ์ บวรอนันต์
+สมศักดิ์ บุญมาเลิศ
+สมศักดิ์ บูรณะศิลปกิจ
+สมศักดิ์ ประเสริฐประศาสน์
+สมศักดิ์ ปาลศรี
+สมศักดิ์ ผจงพฤทธิ์
+สมศักดิ์ พดด้วง
+สมศักดิ์ พฤกษะวัน
+สมศักดิ์ พันธุ์สน
+สมศักดิ์ พืชสะกะ
+สมศักดิ์ เพียรรังสรรค์
+สมศักดิ์ ภคสิริกุล
+สมศักดิ์ มงคลมหาชัย
+สมศักดิ์ มาดี
+สมศักดิ์ มโนทรัพย์บำรุง
+สมศักดิ์ ยิ่งประเสริฐ
+สมศักดิ์ ระวิโรจน์
+สมศักดิ์ ราชแพทยาคม
+สมศักดิ์ เรืองโรจน์
+สมศักดิ์ ลิขิตวิทยศักดิ์
+สมศักดิ์ ลือพัฒนสุข
+สมศักดิ์ โล่ห์สวัสดิ์
+สมศักดิ์ วงษ์พิพัฒน์พงษ์
+สมศักดิ์ ว่องอนันต์วิทย์
+สมศักดิ์ วานิชยางกูร
+สมศักดิ์ วิวัฒนศิริศักดิ์
+สมศักดิ์ ศรศรีทอง
+สมศักดิ์ ศรีสกาวกุล
+สมศักดิ์ ศักดิ์โศภณกุล
+สมศักดิ์ ศิริไพรวัน
+สมศักดิ์ สดใส
+สมศักดิ์ สรไชยเมธา
+สมศักดิ์ สันทัตเวช
+สมศักดิ์ สินชัยดี
+สมศักดิ์ สุขผดุง
+สมศักดิ์ สุทธิผลไพบูลย์
+สมศักดิ์ สุวรรณพิบูลย์
+สมศักดิ์ เสือโตงาม
+สมศักดิ์ โสตถิเสาวภาคย์
+สมศักดิ์ หวังโซ๊ะ
+สมศักดิ์ เหลืองเจริญวัฒนา
+สมศักดิ์ อภิจารี
+สมศักดิ์ อรุณรัตน์
+สมศักดิ์ อัศวยุทธพล
+สมศักดิ์ อิงคนันท์
+สมศักดิ์ อุตมะ
+สมศักดิ์ เอื้อราศีกุล
+สมศิริ พัฒนประภาพันธุ์
+สมษร ทองวิวัฒน์
+สมสนิท ตามพร
+สมสมัย ธะเศรษฐ
+สมสรี พงศ์แพทย์พินิจ
+สมส่วน ฉายาลักษณ์
+สมสิทธิ์ วิเชษนลินวงษ์
+สมสุข ขันติอุดม
+สมสุข พรามเจริญ
+สมสุข สิกขปัญญา
+สมหญิง ทีปะสมบัติ
+สมหมาย กลิ่นแจ่ม
+สมหมาย เขตรคง
+สมหมาย จิตติวัฒนกุล
+สมหมาย ชินวิชา
+สมหมาย ดาบทองดี
+สมหมาย ทวีสุทธิ์
+สมหมาย นาคสมบูรณ์
+สมหมาย ประภากร
+สมหมาย พลายเมือง
+สมหมาย ภรารัตนวัฒน์
+สมหมาย ไม้เกตุ
+สมหมาย ละอองศรี
+สมหมาย วโรดมวิทยา
+สมหมาย สอนวิทย์
+สมหมาย สุดขาว
+สมหมาย หวังทอง
+สมหมาย อิทธิมณีรัตน์
+สมหวัง เกษมโกสินทร์
+สมหวัง ชุนเจริญ
+สมหวัง นันต์จารุวงศ์
+สมหวัง เพชรพินิจวงศ์
+สมหวัง ลอมาเละ
+สมหวัง สาธิตอเนกชัย
+สมหวัง อรุณสวัสดิ์
+สมอาจ อยู่กิจติชัย
+สมัคร ตั้งประเสริฐสม
+สมัคร มุ่งหมาย
+สมัคร อินทรศิลป์
+สมัย เขียวสะอาด
+สมัย แซ่จัง
+สมัย นิลโต
+สมัย เพิ่มพูลวิทยา
+สมัย เลิศกลาง
+สมัย สีที
+สมัย อุณหพันธ
+สมาน กิ่งพรไพนิพัฒน์
+สมาน ค้าคล่อง
+สมาน เจนนภา
+สมาน เซ็นเชาวนิช
+สมาน โตกระจ่าง
+สมาน ธูปเทียน
+สมาน บุษยทริกากรณ์
+สมาน พลีบัตร
+สมาน ม่วงสีตอง
+สมาน แย้มเกษร
+สมาน เลี้ยงประยูร
+สมาน ศิริไพพรรณ
+สมาน สีทา
+สมาน โสด้วง
+สมาน อับดุลเลาะห์
+สมานพล อยู่อ่อน
+สมารุต มะรุลี
+สมิต วรมงคล
+สมิทธิ์ สหนาวิน
+สมุทร แพรมณี
+สมเกลียว บุญคง
+สมเกียรติ กิตติสุวรรณ์
+สมเกียรติ ขวัญดี
+สมเกียรติ งามเสงี่ยม
+สมเกียรติ จิรรัตนชาญ
+สมเกียรติ ชวลิตจิราพันธุ์
+สมเกียรติ ไชยสิงห์
+สมเกียรติ แซ่เบ๊
+สมเกียรติ ตั้งตรงจิตร์
+สมเกียรติ ไตรรัตน์ทวีสุข
+สมเกียรติ แท่นทอง
+สมเกียรติ นิรันดร์วงศ์วาน
+สมเกียรติ ประกอบสุพรรณ
+สมเกียรติ ผลวิเศษชัยกุล
+สมเกียรติ พันธุ์ศิริ
+สมเกียรติ ฟูกระเดื่อง
+สมเกียรติ เมืองประเสริฐ
+สมเกียรติ รุจิรวัฒน์
+สมเกียรติ เลิศลบธาตรี
+สมเกียรติ วัฒนธรรม
+สมเกียรติ ศรทรง
+สมเกียรติ ศุภโกวิท
+สมเกียรติ สิงห์แก้ว
+สมเกียรติ สุรเชษฐ์กิจ
+สมเกียรติ หาญภัทรานนท์
+สมเกียรติ อรุโณทัยจิตร
+สมเกียรติ เอนทะมิน
+สมเจต เกตุแก้ว
+สมเจตน์ จันทร์กระจ่าง
+สมเจตน์ ธำรงราชนิติ
+สมเจตน์ เลิศพลาพงศ์
+สมเจตน์ เอี่ยมอธิฤทธิ์
+สมเด็จ สืบเหล่ารบ
+สมเดช ดุลยอนุกิจ
+สมเดช มณีไมตรีจิต
+สมเดช สุวรรณนาค
+สมเพ็ชร ธรรมถาวรวณิช
+สมเหมือน ประไพย์
+สมโชค ลิ้มเจริญ
+สมโพธิ สรัคคานนท์
+สมโภช เปลี่ยนบางยาง
+สมโภชน์ แก่นทองแดง
+สมโภชน์ แตงบุตร
+สมโภชน์ พุฒสุวรรณ
+สมโภชน์ ศรีธนสุกาญจน์
+สมโภชน์ อัศวศิริโรจน์
+สมใจ กาญจนะวาศ
+สมใจ ขำหาญ
+สมใจ จันทร์ประสิทธิ์
+สมใจ เจียมศุภกิตต์
+สมใจ ชื่นอารมย์
+สมใจ แซ่ย่อง
+สมใจ ฐิวรินทร์
+สมใจ ตันชาลี
+สมใจ ทองรอด
+สมใจ นันทศิลปชัย
+สมใจ บุญรัตนเนตร
+สมใจ ปิยะรังษี
+สมใจ พวงทอง
+สมใจ ฟองจันทร์
+สมใจ มีประดิษฐ์
+สมใจ รื่นเริง
+สมใจ เลียงวัฒนคล
+สมใจ วิวัฒน์วานิช
+สมใจ ศิริกมลมาศ
+สมใจ สว่างแสนสุข
+สมใจ สุขเสริมสกุล
+สมใจ หงษาครประเสริฐ
+สมใจ อมาตยกุล
+สมใจ เอียการนา
+ส้มจีน นิ่มวิบูลย์สม
+ส้มเกลี้ยง สร้างสุขดี
+สยาม ขำแป้ง
+สยาม สาคร
+สยุมพร รัศมีธารา
+สรชัย โพธิ์ชัย
+สรนพ ชวนบุญ
+สรภัย แซ่เหลี่ยว
+สรรค์ชัย เค้าฉิม
+สรรชัย ทองใจ
+สรรพชัย พิทักษากร
+สรรักษ์ ผ่องใส
+สรรเสริญ ชวนประพันธ์
+สรรเสริญ แสงดาว
+สรวงสุดา ค้ำจุน
+สรวุฒิ ธนเขมภัทร
+สรศักดิ์ แซ่เบ๊
+สรศักดิ์ ลาภรัตนไตร
+สรศักดิ์ เอี่ยมโสภณา
+สร้อย ตันเจริญ
+สร้อยทิพย์ คงถาวรสกุล
+สร้อยสอ สุวรรณน้อย
+สรัญญะวงษ์ เกตุฉัตราริยะกุล
+สรัญธร สมประกอบ
+สราญทิพย์ จารุบริสุทธิคุณ
+สรายุทธ สังข์วิเศษ
+สราวุฒิ เกษณียบุตร
+สราวุธ ไชยสว่างศิลป์
+สราวุธ มณีเสาวนพ
+สราวุธ เอี่ยมสงคราม
+สรินทิพย์ หุ่นศาสตร์
+สรียา ทองกระจ่างเนตร
+สฤษฏพร นิคมประศาสน์
+สลวย คชรัตน์
+สละ ดะเงาะ
+สละ รอดปราณี
+สลักจิต ธรรมเกษร
+สลาม เจ๊ะเซ็น
+สลิลโรจน์ รุ่งสมบูรณ์
+สวง โชคมั่งมี
+สวง พวงพิมาย
+สวง สัญกรณ์
+สวงค์ ปราบพุทธจา
+สวดี มานะนิตย์
+สวนีย์ วงษ์เวทย์
+สวรรค์ คมสัน
+สวรรยา นันทไตรเดช
+สวลี อิศรางกูร ณ อยุธยา
+สวัสดิ์เกียรติ สว่างศรี
+สวัสดิ์ ขติยะสุนทร
+สวัสดิ์ จ่างเจริญ
+สวัสดิ์ ช่างหล่อ
+สวัสดิ์ ต้นรัศมี
+สวัสดิ์ ธนาศรีสวัสดิ์
+สวัสดิ์ บุญยรัตประภา
+สวัสดิ์ ผุงเพิ่มตระกูล
+สวัสดิ์ เพชรตระกูล
+สวัสดิ์ มาลีวิลาศ
+สวัสดิ์ ฤทธิ์ทองพิทักษ์
+สวัสดิ์ วิไลรางกูร
+สวัสดิ์ สมบูรณ์ชัยวงศ์
+สวัสดิ์ สุขทั่วญาติ
+สวัสดิ์ หนูไชยา
+สวัสดิ์ อินทปุระ
+สวาท เกตุปาระ
+สวาท ทรัพย์มาก
+สวาท มงคลสวัสดิ์
+สวาท หงษ์เกียร์
+สวาสดิ์ รมณียธรรม
+สว่าง จันทรา
+สว่าง ต่อสหะกุล
+สว่าง ปึกขาว
+สว่าง รัศมีฉาย
+สว่าง สามโกเศศ
+สว่างกิจ อมราชีวะ
+สว่างจิตร สวนจันทร์
+สวิง เกตุโกมุท
+สวิง เลี้ยงบำรุง
+สวิน ทิมมณีฉาย
+สสิธร นากสุก
+สหรัฐ ไชยเผือก
+สหัส เชื้อสุวรรณ
+สหัสชัย รัชตโพธิ์
+สอดศรี จันทร์กระจ่าง
+สอน ศรีเนตร
+สอางค์ คชเสนี
+สอาด กาญจนอุดม
+สอาด จีนะวานิช
+สอาด เทศอินทร์
+สอาด พรพงษ์
+สอาด ยั่งยืน
+สอาด สกุมา
+สอาด เหลียวอินทร์
+สอิ้ง กองหิรัญ
+สอิ้ง บุญธรรม
+สอิ้ง ศรีพนม
+ส่องศรี งามไพบูลย์
+สะตาลีราห์ บูซัล
+สะหมัด เลาะศิริ
+สะอาด ถนอมวงศ์
+สะอาด วงเวียน
+สะอารี แวมูดอ
+สะใบ มะลิใจ
+สัคค์ รัตนธราธร
+สังข์ เผ่าพิมพา
+สังคม ราศรี
+สังวร เพชรประสม
+สังวรณ์ วะเกิดเป้ง
+สังวาลย์ กลิ่นมาลัย
+สังวาลย์ จี่เพชร
+สังวาลย์ นัยศิริ
+สังวาลย์ เพ็ชรนุช
+สังวาลย์ ศรีบุตร
+สังวาลย์ อภัยภักดิ์
+สังเวียน ก้องเวหาสิงหล
+สังเวียน เชาวลิต
+สังเวียน บุญเสงี่ยม
+สังเวียน ลาภพิเศษ
+สังเวียน แหล่งหล้า
+สัจจะ ฤทธิกุลประเสริฐ
+สัจจา สถิราวุธ
+สัญชัย คล้ายชุมแสง
+สัญชัย เธียรสวัสดิ์กิจ
+สัญชัย ลิขิตลัญฉกร
+สัญชัย เหมประชิตชัย
+สัญญา คล้ายจินดา
+สัญญา นุ่มแสง
+สัญญา รัศสุวรรณ
+สัญญา สุขพณิชนันท์
+สัณชาย วิสุทธานนท์
+สัณห์ นิวาสะวัต
+สัตยา ศรีอ่อน
+สันฐัทฒ์ ทองมา
+สันติ กัณนกิจ
+สันติ คุตตะสิงคี
+สันติ จินดาคมน์
+สันติ ชุ่มวรรณ์
+สันติ ตติยตฤษณา
+สันติ ทรงศิริ
+สันติ นิมมานนิตย์
+สันติ ผลประเสริฐ
+สันติ โพธิ์ทอง
+สันติ เย็นสถิตย์
+สันติ เลิศสกุลพันธ์
+สันติ วิไลนำโชคชัย
+สันติ สตาเขต
+สันติ สุขมาก
+สันติ หวังสุนทร
+สันติ อาภาสกุลเดช
+สันติชัย ทองขาว
+สันติพงษ์ นิมิตรดี
+สันติลักษณ์ ธัญญาหาร
+สันติ์ อินทรเกษม
+สันต์ ธนรัตน์รุ่งเรือง
+สันต์ เลิศปิยะบุญ
+สันต์ อัจจิมาธร
+สันทนา วุ่นจู๊ด
+สันทัด จิตตุรงค์อาภรณ์
+สันทัด สำนักพงษ์
+สันธาน คำมิ่ง
+สัมผัส คชวงศ์
+สัมพันธ์ คำณพัฒน์
+สัมพันธ์ ซุ่มเสนา
+สัมพันธ์ นนทศุข
+สัมพันธ์ พันธุ์มณี
+สัมพันธ์ รู้ประมาณ
+สัมพันธ์ สว่างแผ้ว
+สัมพันธ์ หิรัญรักษา
+สัมมารินทร์ ตันศรี
+สัมฤทธิ์ คุณเจตเจริญสุข
+สัมฤทธิ์ ดวงสะอาด
+สัมฤทธิ์ นิ่มอนงค์
+สัมฤทธิ์ พุกพัก
+สัมฤทธิ์ เลี่ยมเพ็ชรรัตน์
+สัมฤทธิ์ สุขใส
+สัมฤทธิ์ อุรุนานนท์
+สากล สรสุนทร
+สาคร คงสมบูรณ์
+สาคร แดงสี
+สาคร บัวเพชร
+สาคร พูนพจน์มาศ
+สาคร ลาภเจริญ
+สาคร สารชาติ
+สาคร อุ่นจิตร
+สาทิต ศรีสวัสดิ์
+สาธร ปาละกะวงษ์
+สาธิต จันทรจิโรจน์กุล
+สาธิต เต็มเจริญ
+สาธิต พงศ์วรินทร์
+สาธิต ลีลาจารุวรรณ
+สาธิต สุทธิวุฒินฤเบศร์
+สาธินี วิลาวรรณ
+สานิต น่วมทัต
+สานิตย์ ปั้นทอง
+สามชัย พวงสำลี
+สามารถ คงคำสี
+สามารถ ชื่นภักดี
+สามารถ นวลละออง
+สามารถ พลายเถื่อน
+สามารถ รัศมีโรจน์วงศ์
+สามารถ สว่างแสง
+สามารถ อินทรเทพ
+สาย พราหมณะนันทน์
+สายจิต ชัยมงคล
+สายชล ฉัตรแก้วบริบูรณ์
+สายชล พุกเจริญ
+สายชล สุขศานติสกุล
+สายทอง ชัยชนะ
+สายทอง มิอรัญ
+สายทิพย์ เจริญชัยศรี
+สายธาร ศุขรัตน์
+สายบัว พลอยงาม
+สายฝน ตาลุคเดอร์
+สายฝน วิเศษศิริ
+สายพิณ ครุสาตะ
+สายพิณ เถาสุวรรณ
+สายพิณ พุ่มเกลี้ยง
+สายพิณ ศรีโรจน์
+สายพิน ชวาลสันตติ
+สายพิน อินทรหะ
+สายรุ่ง รามวินิจ
+สายลม ทรัพย์นาค
+สายสนม วาจนะวินิจ
+สายสมร โต๊ะอาจ
+สายสมร สมบูรณ์ยิ่งสุข
+สายสวาท บัวกล่ำ
+สายสุณี ขุนทอง
+สายสุดใจ ปิ่นกล่อม
+สายสุนีย์ จุติพิทักษ์วงศ์
+สายสุนีย์ ภักดิ์สุขเจริญ
+สายสุนีย์ อัศว์ไชยตระกูล
+สายหยุด จันทร
+สายหยุด ธินนท์
+สายหยุด เพิ่มสมบัติ
+สายหยุด สงสุวรรณ
+สายหยุด โอฬารสุขสกุล
+สายัณห์ กัลยาณมิตร
+สายัณห์ ตรงศิริวิบูลย์
+สายัณห์ พันธุ์ประสิทธิ์
+สายัณห์ วชิรเดชเสถียร
+สายัณห์ หนูราช
+สายันต์ คงคุณ
+สายันต์ พุทธมา
+สายันห์ ลีลากุศลวงศ์
+สายใจ ค้ำจุน
+สายใจ ทองนาค
+สายใจ เพียรเสริมกิจ
+สายใจ วุฒิพงศ์
+สายใจ อรุณชัย
+สารภี คงทรัพย์
+สารภี ไวทย์กุล
+สารัชต์ เผื่อนปฐม
+สาริณี อัศวินนิมิตร
+สาลิกา ธนะวิบูลย์ชัย
+สาลินี สิตะยัง
+สาลี สาโรวาท
+สาลี่ แซ่ฮั้น
+สาลี่ โพธิเวชกุล
+สาลี่ แสงฉาย
+สาวิตรี กล่อมเอี้ยง
+สาวิตรี ผิวผ่อง
+สาวิตรี สิงหรา ณ อยุธยา
+สาหร่าย ไชยมาตร
+สาโรจน์ โกมลหทัย
+สาโรจน์ ทองสวรรค์
+สาโรจน์ พึ่งสุข
+สาโรจน์ ศิริเอี้ยวพิกูล
+สาโรช เจริญศรี
+สาโรช เลาวกุล
+สำนวน ผกาแก้ว
+สำรวจ นิยมเดช
+สำรวม บุรุษรัตนพันธุ์
+สำรวม อ่อนมิ่ง
+สำรวย ขำภักดี
+สำรวย จันทร์สมบุญ
+สำรวย ชุ่มวิเชียร
+สำรวย ถึงใจ
+สำรวย นาน้อย
+สำรวย ประทังคำ
+สำรวย พ่วงเภตรา
+สำรวย ภู่ทอง
+สำรวย รอดกำเหนิด
+สำรวย วรนุช
+สำรวย สมิทธิธรรมธาดา
+สำรวย สุรีย์ศรีสกาว
+สำรวย อ่อนนิ่ม
+สำรวล พุกกะณานนท์
+สำรอง ฤกษ์สุทธิศิริเดช
+สำราญ กัลยาณศิรินทร์
+สำราญ เขียวชะอุ่ม
+สำราญ จันทร์เอี่ยม
+สำราญ ช้างเยาว์
+สำราญ ดีสุด
+สำราญ ทิพวัฒน์
+สำราญ นุชแทน
+สำราญ ปกสว่างเจริญ
+สำราญ พยุงแก้ว
+สำราญ เพ็ชรอุไร
+สำราญ มาลีเทศ
+สำราญ รัตตากร
+สำราญ วรรณตรง
+สำราญ ศัลย์วิเศษ
+สำราญ สาคร
+สำราญ เสงี่ยมเฉย
+สำราญ อรรถอินทรีย์
+สำราญ ฮาเซ๊ะ
+สำฤทธิ์ สอนกระต่าย
+สำลี แซ่ภู่
+สำลี พิฆเนศวร
+สำลี สายขุนทด
+สำออย รุ่งเรือง
+สำอาง อิ่มจิตร
+สำอางค์ ชนะสุริยะเกียรติ
+สำอางค์ นันทรัตนชัย
+สำอางค์ เพลินหัด
+สำอางค์ วงษ์สายสิน
+สำอางค์ ไหวสว่าง
+สำเนา ธิคุนันท์
+สำเนา สุวรรณอ่อน
+สำเนียง กรกมล
+สำเนียง จีดลำดวน
+สำเนียง ทศวงษ์
+สำเนียง ปะละชาติ
+สำเนียง ภู่ประเสริฐ
+สำเนียง ศรีวรรณ์
+สำเนียง หอมชื่น
+สำเภา เจียรสุมัย
+สำเภา บุญอ่อน
+สำเภา วงศ์สีดา
+สำเร็จ จรัญญาอ่อน
+สำเริง กองแสงศรี
+สำเริง จันทรมณี
+สำเริง ดวงภุมเมศ
+สำเริง นิลพฤกษ์
+สำเริง พลอยงาม
+สำเริง มิ่งขวัญ
+สำเริง วัฒนะโชติ
+สำเริง สีสุก
+สำเริง อัมลีย์
+สิงขร ธีราทรง
+สิงห์ทวน เตจ๊ะ
+สิงหะ สายทอง
+สิงห์ คชเสนี
+สิงห์ เลิศนามวงศ์วาน
+สิตธิ์ จังพานิช
+สิทธิ ตัณฑโอภาส
+สิทธิกร ศิริเมืองมูล
+สิทธิชัย เข่งทอง
+สิทธิชัย ใจชื้น
+สิทธิชัย ดรุณวัติ
+สิทธิชัย เทวหสกุลทอง
+สิทธิชัย ปลีกอำไพ
+สิทธิชัย เพียรประเสริฐกุล
+สิทธิชัย ฤกษ์สวัสดิ์กุล
+สิทธิชัย วิสุทธิ์อำพัน
+สิทธิชัย สิทธิวิบูลย์วัฒน์
+สิทธิชัย เหลืองสุขสาคร
+สิทธินัน ชนประเสริฐ
+สิทธิพงษ์ ก่อเศรษฐรัชต์
+สิทธิพยากรณ์ (วีรานุวัตต์)
+สิทธิพร บำเหน็จพันธ์
+สิทธิพร สมบุญ
+สิทธิพล วัฒนคดี
+สิทธิรัตน์ พิชญ์พิทยานนท์
+สิทธิศักดิ์ แซ่แจ้ง
+สิทธิศักดิ์ ลิ้มรสธรรม
+สิทธิศักดิ์ อุบลรัตนะ
+สิทธิเทศ กิตติกุลสุวรรณ
+สิทธิโชค ศรีสุคนธ์
+สิทธิ์ ปรุศดำเกิง
+สิน จินดารัตนวรกุล
+สิน วงศ์คุ้มพงศ์
+สินชัย จอมแสง
+สินชัย พรหมเสนีย์
+สินชัย สุทธิวงษ์
+สินธาร ว่องตาประดิษฐ์
+สินธุ์ ลิ้มปิติ
+สินหลั่ง เอื้อสมสกุล
+สินี มณีกุล
+สินีนาฏ ทองโบราณ
+สินีพรรณ บุญเลี้ยง
+สิรกุล ตะเคียนนุช
+สิริ ประวาหะนาวิน
+สิริกาญจน์ ดวงงาม
+สิริกุล เวียงชนก
+สิริชัย ตันติเลิศเจริญ
+สิริญญา โสภณสกุลศักดิ์
+สิรินทร์ทิพย์ ขำทิพย์
+สิรินราภรณ์ นิลบุตร
+สิรินาท เหลืองอร่ามวิไล
+สิริพงษ์ พุทธธนสุนทร
+สิริพร เจนกชกร
+สิริพร เตชนะศักดิ์
+สิริพร พิพัฒพลกาย
+สิริพร ศรีเพียร
+สิริพร อัศวรันต์
+สิริพัฒน์ กมลรัตน์
+สิริมนต์ บุญหล้า
+สิริมา ไผ่พลู
+สิริมาตา เร่งสมบูรณ์สุข
+สิริรัตน์ แจ่มดวง
+สิริรัตน์ พรวิลาศสิริ
+สิริรัตน์ แสงพยัพ
+สิริลักษณ์ บุญใหญ่
+สิริลักษณ์ อ๋องสกุล
+สิริวรรณ นาคอ่อน
+สิริวรรณ สิทธางกูร
+สิริวิภา อนันตชาติ
+สิริอรรณพ ธนรักษ์
+สิรี ขันทอง
+สิวอ่อน แซ่ตั้ง
+สิโรตม์ วัธนธาดา
+สีดา วัชรพิมลพรรณ
+สีนวล จันทร์ริ้ว
+สีนีพรรณ เกียรติพงษ์สาร
+สีหนาท ประยูรรัตน์
+สืบ คำนิล
+สืบพงษ์ ฐิติโชติรัตนา
+สืบศักดิ์ ปริญญากุล
+สืบสวัสดิ์ วัฒนฐานะ
+สุกร ชลประเสริฐสุข
+สุกรี วัชรพรรณ
+สุกล ยืนตระกูลชัย
+สุกัญญา กุลเรืองทรัพย์
+สุกัญญา คำม่วง
+สุกัญญา จิตรเจริญ
+สุกัญญา ชัยศรีวิบูลย์
+สุกัญญา แซ่อึ้ง
+สุกัญญา ตั้งเติมทอง
+สุกัญญา ทาบสุวรรณ
+สุกัญญา นิยมในธรรม
+สุกัญญา ประสงค์
+สุกัญญา พรวสันต์
+สุกัญญา แพภิรมย์รัตน์
+สุกัญญา เมฆอริยะ
+สุกัญญา ฤทัยธรรม
+สุกัญญา วัฒฑกโกศล
+สุกัญญา ศิริประภากิจ
+สุกัญญา สิงห์ทอง
+สุกัญญา สุโรจนานนท์
+สุกัญญา อนุมานศิริกุล
+สุกัญญา เอมเจริญ
+สุกันยา ภูแข
+สุกัลยา ประเสริฐสังข์
+สุกาญจน์ ฤกษ์สินสาโรจน์
+สุกานดา ธาตุดี
+สุกานดา สุกิตไพบูลย์
+สุกิจ กูลมนูญ
+สุกิจ เชื้ออินทร์
+สุกิจ นิ่มพร้าว
+สุกิจ ภุมมี
+สุกิจ วิชัยโชติ
+สุกิจ แสงพลสุข
+สุกิต วิวัฒนทีปะ
+สุข แจ้งกระจ่าง
+สุข สุระพินิจ
+สุขจิตต งามบรรจง
+สุขชัย อุปสันต์
+สุขประเสริฐ ร่มโพธิ์
+สุขวสา แสงดี
+สุขศรี วงษ์ถม
+สุขสมบัติ เทศะนันทน์
+สุขสอาด จรีศรี
+สุขสันต์ พรสวรรค์วัฒนา
+สุขหรรษา งามวัฒนาเจริญ
+สุขุม เจียมสกุล
+สุขุม พหูสูตร
+สุขุม ศรีวิไลฤทธิ์
+สุขุม เอี่ยมสอาด
+สุขุมาลย์ ประเสริฐศรี
+สุขเกษม เลื่อมอรุณ
+สุขโข สุมานนท์
+สุขใจ วงศ์สุรพิเชษฐ์
+สุคนธ์ทิพย์ ทำเลทอง
+สุคนธา สุระมานะ
+สุคนธ์ เฉลิมพิพัฒน์
+สุคนธ์ เนื่องกันทา
+สุคนธ์ รัตนสะอาด
+สุคนธ์ สุจริต
+สุคิน เด่นเมฆา
+สุจริต มณีวงค์
+สุจารีต กรรณล้วน
+สุจิต สถิตย์มาลัยวงศ์
+สุจิตต์ ตั้งตระกูล
+สุจิตร ชัยคูณผล
+สุจิตรา กล่ำแสง
+สุจิตรา จันทรดิลกกุล
+สุจิตรา แซ่จิว
+สุจิตรา ทวีรัตน์
+สุจิตรา บุญสูง
+สุจิตรา พันธุ์ภัทร์
+สุจิตรา ยิ้มแย้ม
+สุจิตรา วรยศโกวิท
+สุจิตรา สถาพรชัยสิทธิ์
+สุจิตรา สุรรัตน์เดชา
+สุจิตรา อุตตมะศิล
+สุจิน มุกน้อย
+สุจินดา แซ่เล้า
+สุจินดา ภัคภิญโญ
+สุจินดา สิทธิศรัณย์กุล
+สุจินตนา เสือแก้ว
+สุจินต์ จิระชัย
+สุจินต์ ตัณฑ์วรกุล
+สุจินต์ เบ้ากุล
+สุจินต์ ฟุ้งธรรมสาร
+สุจินต์ วงศ์พันธุ์
+สุจินต์ สักกะวนิช
+สุจินต์ อุดมพันธุ์
+สุจิรา ภู่ขำ
+สุชฏิล วัฒยากร
+สุชล ปานกลาง
+สุชัย จำรัสวิมลรัตน์
+สุชัย นรเศรษฐพงศ์
+สุชัย เลิศธีระชาญชัย
+สุชัย หวังกิจจินดา
+สุชาญ ธนะไพรรักษ์
+สุชาดา เกียรติเรืองสุข
+สุชาดา จอนุวัฒนกุล
+สุชาดา ฉายะเกษตริน
+สุชาดา แซ่อึ้ง
+สุชาดา เตี๊ยกคำ
+สุชาดา นทีตานนท์
+สุชาดา ประถมปัทมะ
+สุชาดา พันธุ์มณี
+สุชาดา มารยาท
+สุชาดา โรจนฤทธิ์พิเชษฐ์
+สุชาดา วิทยาภรณ์
+สุชาดา สตังดี
+สุชาดา สุทธิศันสนีย์
+สุชาดา หิรัญพัฒนกุล
+สุชาดา อึ๊งสมุทร
+สุชาติ กลิ่นอุดมสุข
+สุชาติ เกรียงโกมล
+สุชาติ แขรัตนะ
+สุชาติ งามแสง
+สุชาติ จิตพัฒนกุล
+สุชาติ เจษฤาเจิม
+สุชาติ ชัยนะเลิศวงศ์
+สุชาติ เชาว์ไว
+สุชาติ แซ่หลิว
+สุชาติ ดำรงค์อนุกูล
+สุชาติ ตั้งพูลพันธุ์
+สุชาติ ถาวรวงษ์
+สุชาติ เทียมสมัย
+สุชาติ นรากุลรัศมี
+สุชาติ บำรุงพานิช
+สุชาติ ประสานธรรมคุณ
+สุชาติ ผลภิรม
+สุชาติ พะนอจันทร์
+สุชาติ เพียรธุรัตน์
+สุชาติ มลทองดี
+สุชาติ ยิ้มเจริญ
+สุชาติ รุจิโมระ
+สุชาติ ลีรุ่งเรือง
+สุชาติ วงศ์สมบุญ
+สุชาติ วานิชย์หานนท์
+สุชาติ ศรีฟ้าลาวัณย์
+สุชาติ ศุกรวรรณ
+สุชาติ สว่างการ
+สุชาติ สินประสงค์
+สุชาติ สุทธิพรสกุล
+สุชาติ เสรีสุวรรณกิจ
+สุชาติ เหงี่ยมงามศรี
+สุชาติ อ่อนสุข
+สุชาติ อุดมภักดีวงศ์
+สุชาย ชวาลดิฐ
+สุชาย สุนันทารอด
+สุชิต ล่ำซำ
+สุชิน จำปาน้อย
+สุชิน ต่างใจ
+สุชิน ประไพศิลป์
+สุชิน เมฆะสุวรรณโรจน์
+สุชิน ศรีพัฒนวรางกูล
+สุชิน แสงอินทร์
+สุชีพ กุลกาญจนาชีวิน
+สุชีพ สิงห์ธีร์
+สุชีลา แซ่ห่าน
+สุฑาทิพย์ ฟักเย็น
+สุณิสา เย็นฉ่ำ
+สุณี จิรันดร
+สุณี เดชสุวรรณ์
+สุณี ปานดี
+สุณี ลิมป์พนาวงศ์
+สุณี สิทธิเวชวิจิตร
+สุณีนุช โต๊ะหวัง
+สุณีย์ เทพสาย
+สุณีย์ วิทยาทรงตระกูล
+สุด กระแสเทพ
+สุดจิต เจริญนิพนธ์วานิช
+สุดจิตต์ ศรีตรีรัตน์
+สุดชาย บุญโต
+สุดธิดา มหิโคต
+สุดสงวน จันทร์ศรี
+สุดสวาท เฉียบแหลม
+สุดสายใจ หาเรือนโภค
+สุดา จงวัฒนา
+สุดา เชียงเชาว์ไว
+สุดา ตุลาวณิช
+สุดา บำรุงหมู่
+สุดา พึ่งโพธิปักขิยะ
+สุดา รุ่งแสง
+สุดา ศรีกรการ
+สุดา สุขวิบูลย์
+สุดา อัศวโภคิน
+สุดาทิพย์ เอี่ยมอิทธิฤทธิ์
+สุดาพร มณีรัตน์
+สุดาพันธ์ อิศรางกูร ณ อยุธยา
+สุดารัตน์ แก้วชิงดวง
+สุดารัตน์ ชินะประภา
+สุดารัตน์ ธัญสิริโรจน์
+สุดารัตน์ พิมพิมล
+สุดารัตน์ เลิศวิทยาพนธ์
+สุดารัตน์ สารตายน
+สุดารัตน์ อินโทอธิพร
+สุดาวดี แสงชมภู
+สุดาวรรณ ศรีสวัสดิ์
+สุดาอร สัจจาธรรม
+สุดแสวง แสงนพรัตน์
+สุดใจ จงมโนประเสริฐ
+สุดใจ ชัยเปรม
+สุดใจ แตงอ่อน
+สุดใจ บุญมาก
+สุดใจ พานิชกุล
+สุดใจ แย้มเหมือน
+สุดใจ ศรีม่วง
+สุดใจ สินสมุทร์
+สุดใจ อ่อนศรี
+สุถาวรณ์ เกียรติศิลปนันต์
+สุทธาทิพย์ ประสพสุขเจริญ
+สุทธิ ชาติยานนท์
+สุทธิ เพ็งเจริญ
+สุทธิ สุทธิธรรมกุล
+สุทธิชัย ไกรคุณาศัย
+สุทธิชัย ตันธนาศิริกุล
+สุทธิชัย มหวลีรัตน์
+สุทธิชัย สุทธิพิบูลย์
+สุทธิณี จิตตานนท์
+สุทธินันท์ โพธินาค
+สุทธินี สาระยา
+สุทธิพงศ์ วจีปิยนันทานนท์
+สุทธิพงษ์ ไตรรัตนทรงพล
+สุทธิพงษ์ ศรีเนียม
+สุทธิพร ตันมงคล
+สุทธิพล แสงรุ้งฐิติรักษ์
+สุทธิมา จิตตรง
+สุทธิรัตน์ งามทรัพย์
+สุทธิลักษณ์ ผ่องศิริ
+สุทธิวิทย์ ขำลำภู
+สุทธิศักดิ์ ระจิตดำรงค์
+สุทธิสันต์ ตั้งศรีวงษ์
+สุทธี กิจสุภี
+สุทรรศ วัฑฒกานนท์
+สุทัน สวัสดิ์ฟัก
+สุทัศน์ กลิ่นโซดา
+สุทัศน์ จำรัสจุฬาเนตร
+สุทัศน์ ด่านอุดมชาญ
+สุทัศน์ ธีรธนากร
+สุทัศน์ พนัสเลิศ
+สุทัศน์ รอยกุลเจริญ
+สุทัศน์ วุฒิกรวณิชย์
+สุทัศน์ สิทธิวงศ์
+สุทัศน์ อ่อนชุลี
+สุทิต กนกเลิศวงศ์
+สุทิน คูน้ำทิพย์
+สุทิน โชติจุฬางกูร
+สุทิน ทัตตานนท์
+สุทิน บูรณสิน
+สุทิน ภาคยะวัธน์
+สุทิน ฤทราคร
+สุทิน สนทอง
+สุทิน แสวงธีระ
+สุทินี โกมลสิงห์
+สุทิศา อุดมจารุมณี
+สุธน ชูชัย
+สุธน ลิมปมนต์
+สุธร จิตกรีสร
+สุธรรม ชัยศรีวิบูลย์
+สุธรรม บุญเอกบุศย์
+สุธรรม เลิศพงษ์ประเสริฐ
+สุธรรม หะสิตะเวช
+สุธัญญา โพธิรัชตางกูร
+สุธา หงษ์รัตนอุทัย
+สุธาทิพย์ ชยางศุ
+สุธาทิพย์ ศรีมุกข์
+สุธาภรณ์ สุทธินา
+สุธารัตน์ สุขสำอางค์
+สุธาสินี วิจิตรานนท์
+สุธิดา ชื่นแสงจันทร์
+สุธิดา ศิระวัฒนชัย
+สุธิพร สอนมัง
+สุธี กรอุไร
+สุธี ฉัตรอภิวันท์
+สุธี เต่าทอง
+สุธี บุณยเกียรติ
+สุธี มาลีศรี
+สุธี วิเศษสุนทรสกุล
+สุธี สุธรรมฐิติ
+สุธีดา กมลรัตนา
+สุธีรา คุณนิรันดร
+สุธีรา พลสนะ
+สุธีรา อมรนฤนาถ
+สุธีร์ ปรีชานุวัฒน์
+สุธีลา ธนะฤทธิ์โรจน์
+สุนทร กิจจุลลจาริต
+สุนทร ขันทะราม
+สุนทร โค้วนฤมิตร
+สุนทร จิรายุวัฒนา
+สุนทร ชาญ
+สุนทร แซ่ฟอง
+สุนทร ตระกูลฤทธิเดช
+สุนทร ทรัพย์เจริญ
+สุนทร ธิชากรณ์
+สุนทร บัวสมบูรณ์
+สุนทร ประภาโรจน์
+สุนทร พจน์ธนมาศ
+สุนทร พุฒิกรกุล
+สุนทร ภูมิอ่อน
+สุนทร ยศแก้ว
+สุนทร รุ่งแจ้ง
+สุนทร เล้าวิชัย
+สุนทร วิชาชาญ
+สุนทร ศรีแสงฟ้า
+สุนทร สอนสี
+สุนทร สุขมัย
+สุนทร เสือใหญ่
+สุนทร อนุเดช
+สุนทร อิ่มเอิบสุข
+สุนทรา นวลวิจิตร
+สุนทรี กอสิงหวัฒนา
+สุนทรี จันทวุฒิ
+สุนทรี แซ่อึ้ง
+สุนทรี ทารมย์
+สุนทรี ปัญญาธัญญะ
+สุนทรี ไพศาลวิจิตรนุช
+สุนทรี ลำไยทอง
+สุนทรี ศิลปสาคร
+สุนทรี แสงเงิน
+สุนทรี เอี่ยมฤกษ์ศิริ
+สุนนท์ สุวงศ์
+สุนัน ประกายศิลป์
+สุนันทรา คำบรรลือ
+สุนันทา คชนาค
+สุนันทา ฉันทศาสตร์รัศมี
+สุนันทา แซ่เตีย
+สุนันทา โตมานะ
+สุนันทา นิลศรี
+สุนันทา โปษยานนท์
+สุนันทา โพธิ์ทอง
+สุนันทา รังษีธรรม
+สุนันทา วรกิจอาทร
+สุนันทา ศุภมาตรา
+สุนันทา สุรภักดี
+สุนันทา อัศวนัยกิจ
+สุนันท์ กิยะแพทย์
+สุนันท์ งามอัครกุล
+สุนันท์ ฉัตรแก้ว
+สุนันท์ แซ่หว่อง
+สุนันท์ ตาปสนันทน์
+สุนันท์ ธรรมวงศ์วัฒน์
+สุนันท์ บูรณ์ลอม
+สุนันท์ พวงนิล
+สุนันท์ มงคล
+สุนันท์ รังสิตเสถียร
+สุนันท์ วงศ์สุวรรณ
+สุนันท์ ศิริการณ์
+สุนันท์ สินธุ์ประสพชัย
+สุนันท์ หอมพุฒ
+สุนันท์ เอกวัฒน์
+สุนัย มยุรนาคิน
+สุนาค หอมหวล
+สุนารี สงเคราะห์
+สุนิดา ตันกันภัย
+สุนิตยา แก้วเอี่ยม
+สุนิตย์ สุนทร
+สุนิภา รุ่งเมฆารัตน์
+สุนิษา จันเกิด
+สุนิสา จันทบูลย์
+สุนิสา ตันติกุลพาณิชย์
+สุนิสา พิทยาธนาสกุล
+สุนิสา วัชรพงศ์
+สุนิสา เหลืองระฆัง
+สุนี คงสินทวีสุข
+สุนี แซ่เจีย
+สุนี นิ่มน้อย
+สุนี มิ่งมณีนาคิน
+สุนี ศรีสุรีย์ไพศาล
+สุนี อัศวเจริญลาภ
+สุนีย์รัตน์ ศิริเลิศเรืองชัย
+สุนีย์ กุลฤชากร
+สุนีย์ คนมั่น
+สุนีย์ จาตุวัฒน์
+สุนีย์ ฉันทสมบัติ
+สุนีย์ โชติมา
+สุนีย์ แซ่ล้อ
+สุนีย์ ดาริการ์นนท์
+สุนีย์ แต้มเติม
+สุนีย์ ธนานนท์
+สุนีย์ นิรุตตินานนท์
+สุนีย์ ปรีชาทรัพย์
+สุนีย์ พรหมสุวิชัย
+สุนีย์ แพรสุวัฒน์ศิลป์
+สุนีย์ มาทอง
+สุนีย์ รัตนภูมิภิญโญ
+สุนีย์ ลิ้มพรรัตน์
+สุนีย์ วรวุฒิ
+สุนีย์ ศรีพัชรพันธ์
+สุนีย์ สร้อยทอง
+สุนีย์ สุขุมวรพจน์
+สุนีย์ แสงใยมณี
+สุนีย์ อนุพงศ์อภัย
+สุนีย์ อิงสกุลรุ่งเรือง
+สุนีรัตน์ จงปรีชา
+สุ่น เกิดลาภ
+สุบรรณ์ แก่นสาร
+สุบิน ตรีปัจยากร
+สุบิน โพธิ์อัมพร
+สุบิน อาขุรัตน์
+สุปราณี กนกวุฒิ
+สุปราณี จันทร์สิน
+สุปราณี แซ่ลิ้ม
+สุปราณี ธีรอนุรักษ์กุล
+สุปราณี พัชรพจนากรณ์
+สุปราณี รัตนคาม
+สุปราณี ศรีทาโฮม
+สุปราณี ไสยสมบัติ
+สุปรานี ตันสิทธิ
+สุปรีดา เมฆอนันตโกศล
+สุปรียา ศิลาเกษ
+สุปัน พลเสนา
+สุพงศ์ นะมาตร์
+สุพงษ์ เอี่ยมฤกษ์ชัย
+สุพจน์ กิตติโภคิรัตน์
+สุพจน์ คงพ่วง
+สุพจน์ จันทร์วิเมลือง
+สุพจน์ เจริญพรหมมาตร์
+สุพจน์ ช้างวงศ์ทอง
+สุพจน์ แซ่โง้ว
+สุพจน์ ตันตระกูล
+สุพจน์ เทียมทับ
+สุพจน์ นิรันตสุขรัตน์
+สุพจน์ ประภาอภิรัตน์
+สุพจน์ พจนาวราพันธุ์
+สุพจน์ พึ่งพัฒนา
+สุพจน์ มงคลกิจชัยการ
+สุพจน์ เยี่ยมวิญญะ
+สุพจน์ ฤกษ์โศภิษฐ์
+สุพจน์ วงศ์วรเศรษฐ์
+สุพจน์ วิสารทานนท์
+สุพจน์ ศิริวรรณชัย
+สุพจน์ สัมพันธารักษ์
+สุพจน์ สุนทรวิเนตร์
+สุพจน์ หนูแย้ม
+สุพจน์ อยู่ยั่งยืน
+สุพจน์ อุทัยโชติรัตน์
+สุพพตา พรวชิราภา
+สุพร จรรยางาม
+สุพร แซ่มา
+สุพร ธรรมาพิทักษ์พร
+สุพร พละพลีวัลย์
+สุพร รุจาพันธุ์
+สุพร ศุภลักษณ์นารี
+สุพร เหลี่ยมมกราเจริญ
+สุพรชัย วรรณทิม
+สุพรรณ จันพิศาล
+สุพรรณ พงศ์จีรกำจร
+สุพรรณ สุขอรุณ
+สุพรรณา เขียวชอุ้ม
+สุพรรณี ครูซอ
+สุพรรณี แซ่กี้
+สุพรรณี ธรรมคีรี
+สุพรรณี พรพัฒนนางกูร
+สุพรรณี รุจิภักดิ์
+สุพรรณี สมบุญญานนท์
+สุพรรณี อับดุลลาส์
+สุพรรัตน์ เหลืองชวพงศ์
+สุพล เฉลิมเกียรติกุล
+สุพล น้ำเพชร
+สุพล มงคล
+สุพล สมพงษ์
+สุพล เอื้ออนันต์
+สุพัฒฌา แจงาม
+สุพัฒน์ กิจบารมี
+สุพัฒน์ ตั้งศรีประชิต
+สุพัฒน์ ปาวะพิพัฒน์
+สุพัฒน์ รัตนพนัง
+สุพัฒน์ ศาสตร์สิริสมบัติ
+สุพัฒน์ อิทธิเดชรัตน์
+สุพัตรา กันอริ
+สุพัตรา งามลิขิตวัฒนกุล
+สุพัตรา ชินวีระพันธุ์
+สุพัตรา ตังกรัตน์
+สุพัตรา นันทรัตนากูล
+สุพัตรา ไผ่แก้ว
+สุพัตรา มั่งสุวรรณ
+สุพัตรา เลิศอภิสิทธิ์
+สุพัตรา ศุขะวาที
+สุพัตรา สุตรีเชาวนกุล
+สุพัตรา โหรานิคม
+สุพัตศร รักษ์ชน
+สุพา จันทร์ทิพย์
+สุพิชญา พิบูลภานุวัธน
+สุพิตร หาญณรงค์
+สุพิน แซ่อึ้ง
+สุพิน วราพฤกษ์
+สุพินดา วุฒิชัย
+สุพิศ จันแจ่มจิตต์
+สุพิศ วงศ์ภูมินทร์
+สุพีร์พัฒน์ จองพานิช
+สุภจิรา ด้วงดี
+สุภณัฐ นิลรัตน์
+สุภร โขวิฑูรกิจ
+สุภรณ์ งามเงินวรรณ์
+สุภรณ์ พรงาม
+สุภรณ์ เสือจุ้ย
+สุภลัคณ์ นาคะสันต์
+สุภัข สภาคกุล
+สุภัค หงษ์ฉลาด
+สุภัท นกศิริ
+สุภัทร พินิจเวชการ
+สุภัทรา จงเจริญ
+สุภัทรา บุญชัยยุทธศักดิ์
+สุภัทรา วัฒนเกียรติสรร
+สุภัทร์ จันทร์สุข
+สุภา เกษรสมบัติ
+สุภา ฉลาดสุนทรวาที
+สุภา แซ่ลิ้ม
+สุภา ทรัพย์อวยสุข
+สุภา เปียรอด
+สุภา มุนินทร์นิมิตต์
+สุภา เลิศแสวงกิจ
+สุภา ศิริสิทธิ์
+สุภา สุนทรเกศ
+สุภา อังคณาวิศัลย์
+สุภางค์ เทอดเกียรติกุล
+สุภาณี จ้อยวิลัย
+สุภาณี นาฮิม
+สุภาณี วงศ์วิทูไท
+สุภาณี เอี้ยวตระกูล
+สุภาพ กตัญญู
+สุภาพ คำแผง
+สุภาพ ชุนเจริญ
+สุภาพ โตษจระ
+สุภาพ บุญทริกชาติ
+สุภาพ พวงหิมวันต์
+สุภาพ ยศะสินธุ์
+สุภาพ วันวิเวก
+สุภาพ สายกมล
+สุภาพ อภิโช
+สุภาพร กำหนดแน่
+สุภาพร จงสุขกิจพานิช
+สุภาพร แจ้งสนิท
+สุภาพร แซ่นำ
+สุภาพร ตั้งบรรเจิดวนิช
+สุภาพร เทียนประยูร
+สุภาพร บุญเชิดชัยยันต์
+สุภาพร พัฒนประทีป
+สุภาพร ภู่โสภา
+สุภาพร เรืองศรี
+สุภาพร วรรณก้อน
+สุภาพร ศิริลักษณมานนท์
+สุภาพร สุทวีทรัพย์
+สุภาพร เหลี่ยมมงคล
+สุภาพร อินทนานุช
+สุภาพรรณ ชุ่มสุวรรณ
+สุภาพรรณ สันติสุข
+สุภาภรณ์ กล้าหาญ
+สุภาภรณ์ โคตะพันธ์
+สุภาภรณ์ ฉายวิเชียร
+สุภาภรณ์ แซ่อั้ง
+สุภาภรณ์ ไตรกุล
+สุภาภรณ์ นิศาภากร
+สุภาภรณ์ พัฒนาวณิชย์
+สุภาภรณ์ เย็นฉ่ำ
+สุภาภรณ์ วชิโรภาสกรณ์
+สุภาภรณ์ ศิริโสภณา
+สุภาภรณ์ สุธีราธิกุล
+สุภาภรณ์ อาภาชนาวัฒน์
+สุภารัตน์ จักรพันธุ์
+สุภารัตน์ ศรีวุฒิชาญ
+สุภาวดี ขำน้อย
+สุภาวดี แซ่เฮ้า
+สุภาวดี ปุราธนานนท์
+สุภาวดี รังสิเสนา ณ อยุธยา
+สุภาวดี สิงหะเนติ
+สุภาวดี อุปชีวะ
+สุภาวิณี พิมโสม
+สุภาเพ็ญ หลักหาญ
+สุภิดา โอสถานุเคราะห์
+สุภีพรรณ ดารากร ณ อยุธยา
+สุมณฑา จำปา
+สุมณฑา โรจนาเปรมสุข
+สุมน กำปงซัน
+สุมน มธุวานนท์
+สุมน อัครวรรักษ์
+สุมนทา พงษ์พิบูลย์
+สุมนา ไกรกาญจน์
+สุมนา ปทีปะปาณี
+สุมนา สกุลมงคลนาม
+สุมล โควานิสัยสุขกุล
+สุมล ทองพันชั่ง
+สุมล รุ่งอุดมกิจ
+สุมล อยู่ทอง
+สุมลรัตน์ แต้รัตนมงคล
+สุมาณี กิจบุญชัย
+สุมาภรณ์ อุดมโชค
+สุมาลย์ ยิ้มเป็นสุข
+สุมาลา ธูปเทียนหอม
+สุมาลี กิมชูวาณิช
+สุมาลี คงอาษา
+สุมาลี จันทร์วิทยานุชิต
+สุมาลี แจ่มมี
+สุมาลี ชูสังข์
+สุมาลี แซ่แห่ว
+สุมาลี ตุลาดิลก
+สุมาลี เทศนะโยธิน
+สุมาลี นาคเศรณี
+สุมาลี บุญวรเศรษฐ์
+สุมาลี โปสาภิวัฒน์
+สุมาลี พิทักษ์พินิจนันท์
+สุมาลี ภูมิปรีชา
+สุมาลี ไม้หอม
+สุมาลี เรืองศรี
+สุมาลี วงศ์ข้าหลวง
+สุมาลี วิไลแก้ว
+สุมาลี ศิริบาล
+สุมาลี สิงหพันธุ์
+สุมาลี สู้ชิงชัย
+สุมาลี เหลืองปฐมชัย
+สุมาลี อารีวงค์
+สุมาศ เกิดแก่นแก้ว
+สุมิตร ฉัตรชัยวิวัฒนา
+สุมิตร ปุญญาสวัสดิ์
+สุมิตร ศิริซุ้มสุวรรณ
+สุมิตรา เกียรติเอี่ยม
+สุมิตรา ตีรพัฒนพันธ์
+สุมิตรา ภูวเศรษฐ์
+สุมิตรา สิงหทัต
+สุมินทร์ สุนทรพาณิชย์
+สุรกานต์ ปัญญางาม
+สุรกิจ โลหธิตพิทักษ์
+สุรจิต เตชะบูรณเทพากรณ์
+สุรจิตร นนท์ธนประกิจ
+สุรชัย กังเสถียร
+สุรชัย ขจรเกียรติสุข
+สุรชัย จริยานันทเนตร
+สุรชัย เจนปิยพงศ์
+สุรชัย ชัยเสถียรกิจ
+สุรชัย แซ่คู
+สุรชัย ณ เชียงใหม่
+สุรชัย ตั้งเจริญไพบูลย์
+สุรชัย ทวีลาภ
+สุรชัย ธีราเวทย์นุพงศ์
+สุรชัย บุญพลับ
+สุรชัย ปิยะรัตนโยธิน
+สุรชัย พิพัฒพงศา
+สุรชัย มงคลบูรณะศิริ
+สุรชัย โยธาประเสริฐ
+สุรชัย ฤทัยรุ้ง
+สุรชัย วงศ์จารีกิตติ
+สุรชัย วิจารณ์กัยกิจ
+สุรชัย ศรีเจริญสุขยิ่ง
+สุรชัย สวัสดิ์สรรพ์
+สุรชัย สุจินดามณี
+สุรชัย แสงอรุณศิริ
+สุรชัย อดุลยธรรม
+สุรชัย อาจหาญศิริ
+สุรชา ทองพิลา
+สุรชาติ ตำราเรียง
+สุรชาติ ศศิธนานุรักษ์
+สุรณี ตันติวณิชชานนท์
+สุรทิน อิ้งจะนิล
+สุรปรีช์ โคตรโสภา
+สุรพงศ์ พันธ์วิศวาส
+สุรพงศ์ เอื้อวัฒนามงคล
+สุรพงษ์ จุลมนต์
+สุรพงษ์ ตั้งใจการุณย์
+สุรพงษ์ ปกาสิทธิ์
+สุรพงษ์ ภูประไพ
+สุรพงษ์ วังเอก
+สุรพงษ์ สุพัฒน์ศิลป์
+สุรพงษ์ อึ้งอัมพรวิไล
+สุรพร มณีสินธุ์
+สุรพล กิตติดำรง
+สุรพล คงสกุล
+สุรพล จันเพ็ง
+สุรพล เฉลิมชัยนุกุล
+สุรพล แซ่ผั่ง
+สุรพล ตาปนานนท์
+สุรพล เทศขจร
+สุรพล นิโครพิทักษ์
+สุรพล ปรัศว์เมธีกุล
+สุรพล พรหมนิมิตร
+สุรพล พูลทวี
+สุรพล มาพูนสวัสดิ์วัฒนา
+สุรพล รัตน์พงษ์พร
+สุรพล เล็กประสาร
+สุรพล วิยะดามงคล
+สุรพล ศิริชัยวัฒนา
+สุรพล สังข์สิงห์
+สุรพล สุประดิษฐ์
+สุรพล หัสดิน
+สุรพล อินทรลักษณ์
+สุรพัตร สุทธิธนากร
+สุรพันธ์ เตชนะรุ่งโรจน์
+สุรพันธ์ วรกิตติวณิช
+สุรพี แซ่อึ้ง
+สุรภี ทิมพิทักษ์
+สุรมย์ แซ่เตีย
+สุรวงศ์ ทวีสัตย์
+สุรวิทย์ ศาลาสุข
+สุรวุฒิ เศรษฐบุตร
+สุรศักดิ์ กิ่งไทร
+สุรศักดิ์ คงกิตติกร
+สุรศักดิ์ จันทราทิพย์
+สุรศักดิ์ แจวเจริญ
+สุรศักดิ์ เชาว์วิศิษฐ์
+สุรศักดิ์ แซ่เล้า
+สุรศักดิ์ ตั้งศรีรัตนกุล
+สุรศักดิ์ ทองสมบูรณ์
+สุรศักดิ์ นันทวิโรจน์
+สุรศักดิ์ ประทานวรปัญญา
+สุรศักดิ์ พลับพลี
+สุรศักดิ์ ภู่วุฒิกุล
+สุรศักดิ์ รัชตะวรรณ
+สุรศักดิ์ ลือวิศวกุล
+สุรศักดิ์ วรสุวรรณาทร
+สุรศักดิ์ วีรชายลักษณ์
+สุรศักดิ์ ศิริโชติ
+สุรศักดิ์ สังข์ทอง
+สุรศักดิ์ สุพัฒนาภรณ์
+สุรศักดิ์ หะรังษี
+สุรศักดิ์ อังกาบศรี
+สุรศักดิ์ โอฬารรุ่งเรือง
+สุรสิทธิ์ จันทร์โสภณพงศ์
+สุรสิทธิ์ ปราบณรงค์
+สุรสิทธิ์ ศรีอรทัยกุล
+สุรสิทธิ์ เอี่ยมธนากุล
+สุระ พ่วงลาภหลาย
+สุระชัย มาลีแย้ม
+สุระพล อ่อนฤทธิ์
+สุรัช กองนิมิตร
+สุรัชดา ภูวดลพิทักษ์
+สุรัชวดี หอมยก
+สุรัตน์พร เทียมเมฆ
+สุรัตน์ กันตะศรี
+สุรัตน์ จันทร์โชคพงษ์
+สุรัตน์ เชิดชูมาลัยกิจ
+สุรัตน์ ทองเสม็ด
+สุรัตน์ บุญรักษ์
+สุรัตน์ พุ่มผล
+สุรัตน์ รุ่งแสง
+สุรัตน์ ศรีลาภ
+สุรัตน์ สุขพิศาล
+สุรัตน์ อัครภานุมาศ
+สุรัติ เศรษฐอภิธาน
+สุรัสวดี สีบุญเรือง
+สุรางค์รัตน์ มุสิกไชย
+สุรางค์ จรรยาอังกูร
+สุรางค์ ดุลย์พจน์เทวา
+สุรางค์ โปษยานนท์
+สุรางค์ รักษาราชวิตร
+สุรางค์ สงวนวงศ์
+สุรางค์ โหมานันท์
+สุราษฎร์ เกษตระชนม์
+สุรินทร์ทิพย์ อิสสระชัย
+สุรินทร์ เกิดสุวรรณ์
+สุรินทร์ คำโถมฤทธิ์
+สุรินทร์ จินันทยา
+สุรินทร์ ชัยชะนะมงคล
+สุรินทร์ ญาณเกียรติพงศ์
+สุรินทร์ เติมสายทอง
+สุรินทร์ ธนกิจจำรูญ
+สุรินทร์ บุญลพ
+สุรินทร์ โปรเทียรณ์
+สุรินทร์ พิชัยศรทัต
+สุรินทร์ ภู่ประภาดิลก
+สุรินทร์ ยิ้มเพ็ง
+สุรินทร์ ลักษมีวรานนท์
+สุรินทร์ วรพันธ์พิทักษ์
+สุรินทร์ ศรีวารีรัตน์
+สุรินทร์ สมัครช่วย
+สุรินทร์ สุขมาก
+สุรินทร์ แสงรัตน์
+สุรินทร์ อนังรัสดี
+สุรินทร์ อิ่มสุข
+สุริมาศ แพทยานนท์
+สุริยนต์ เกษรพรหม
+สุริยะ ดวงแก้ว
+สุริยะ โลหะเวช
+สุริยัญ นิลทจันทร์
+สุริยันต์ ชูตะวงษ์
+สุริยา เคล้าจันทร์พงษ์
+สุริยา ทองเต็ม
+สุริยา เพ็ชรปิ่นแก้ว
+สุริยา สละกุล
+สุริย์ คูณผล
+สุรี ตันธน์ศุภกาญจน
+สุรีพร คนเจน
+สุรีพร โพธิ์ศิรินันทชัย
+สุรีพร เอี้ยวถาวร
+สุรีย์พร เงินงามเลิศ
+สุรีย์พร ปรียะพานิช
+สุรีย์พร ศรีสืบ
+สุรีย์รัตน์ คงพิทยาพันธุ์
+สุรีย์รัตน์ อนันตกาลต์
+สุรีย์ กิตติวรวงศ์
+สุรีย์ จันทร์ทรัพย์
+สุรีย์ ชื่นสมถ้วย
+สุรีย์ แซ่โง้ว
+สุรีย์ ทรงเชื้อ
+สุรีย์ นิมิตรกุล
+สุรีย์ เปรมปราโมชย์
+สุรีย์ พุ่มศิริ
+สุรีย์ ไม้สถิตย์
+สุรีย์ ลิ้มสุวรรณ
+สุรีย์ วิเชียรกุล
+สุรีย์ สรสุคนธ์
+สุรีย์ สุวรรณประทีป
+สุรีย์ อมรธีระกุล
+สุรีรัตน์ คณะเจริญ
+สุรีรัตน์ ตันธุวนิตย์
+สุรีรัตน์ ยังสว่าง
+สุรีรัตน์ หาญจงกล
+สุรเกียรติ วิเศษสิทธุ์
+สุรเชษฐ น้านาคินทร์
+สุรเชษฐ์ เจริญชัยถาวรจิต
+สุรเชษฐ์ ยังสุข
+สุรเดช กังสดาล
+สุรเดช ดาร์ซิงห์
+สุรเดช ประสานเกียรติราช
+สุรเดช ไร้กังวล
+สุรเดช สิทธิเจริญ
+สุรเทพ ประเสริฐจิตสรร
+สุรไกร กีรติปาล
+สุลัดดา ช้อนทอง
+สุลี คืนตัก
+สุวคนธ์ ม่วงทอง
+สุวณี จิตต์รัตนธรรม
+สุวณีย์ เชี่ยววัฒนา
+สุวดี เทพรักษ์
+สุวดี อารีสกุลสุข
+สุวนิตย์ เสฏฐสุวจะ
+สุวพร เซ็มเฮง
+สุวพิศ ยงศิลปชัย
+สุวภา เลี่ยมพุธทอง
+สุวรรณ กลิ่นจันทร์หอม
+สุวรรณ ขวัญยืน
+สุวรรณ จันทร์สุรินทร์
+สุวรรณ ช้างชัย
+สุวรรณ ดำเนินทอง
+สุวรรณ ทัมพร
+สุวรรณ บรรดาศักดิ์
+สุวรรณ ปิยะภาณี
+สุวรรณ พุ่มประดับ
+สุวรรณ มีหลักชัย
+สุวรรณ โรจนวิภาต
+สุวรรณ วาสนกมล
+สุวรรณ ศิริวิกุล
+สุวรรณ สุขประเสริฐ
+สุวรรณ หอมจันทร์
+สุวรรณ เอี่ยมรัศมีโชติ
+สุวรรณทิพย์ แซ่เฮง
+สุวรรณา กนิษฐสุต
+สุวรรณา เกษมสุข
+สุวรรณา คุปตานนท์
+สุวรรณา จินดาธเนศ
+สุวรรณา ชยะอลงกรณ์
+สุวรรณา ซึ้งวิริยะกุล
+สุวรรณา แซ่เล้า
+สุวรรณา ตั้งคุรุสรณ์
+สุวรรณา ทองทา
+สุวรรณา นนทสุต
+สุวรรณา บำรุงกิจเจริญ
+สุวรรณา ปัญญาชีวิน
+สุวรรณา พัฒนพงศกร
+สุวรรณา ไพโรจน์กิจจา
+สุวรรณา มูมะหะหมัดซอและ
+สุวรรณา รื่นเริงใจ
+สุวรรณา เลิศวงศ์ชัชวาล
+สุวรรณา วิจิตรประภาพงษ์
+สุวรรณา ศรีศุภวรรณ
+สุวรรณา สว่างพาณิชย์
+สุวรรณา สุขมั่นคงเสมอ
+สุวรรณา แสงธนาพฤกษ์
+สุวรรณา อนันตสิทธิ์สกุล
+สุวรรณา อินทร์อุดม
+สุวรรณี การไทย
+สุวรรณี คำสุข
+สุวรรณี จิวรวิวัฒน์
+สุวรรณี ชุติพรวณิช
+สุวรรณี แซ่ฮั้ง
+สุวรรณี ตั้งวงศ์ศานต์
+สุวรรณี เทพสินธนสกุล
+สุวรรณี บัวจีน
+สุวรรณี เผิง
+สุวรรณี เพ่งรุ่งเรืองวงษ์
+สุวรรณี รักษาพจนากิจ
+สุวรรณี เลิศวิริยะไพศาล
+สุวรรณี วิภากุลพิทักษ์
+สุวรรณี สมุทรรังสี
+สุวรรณี สุมามาลย์
+สุวรรณี อ้นรุ่ง
+สุวรรณี เอื้อสมสกุล
+สุวรรณ์ นาคประดิษฐ์
+สุวรัตน์ บุญยสิทธิ์พิชัย
+สุวรีย์ เลิศอริยานันท์
+สุวลักษณ์ อนันตชัย
+สุวลี เอี่ยมสอาด
+สุวัจน์ สงวนวงศ์
+สุวัชร์ ศุภกาญจน์เดชากุล
+สุวัฒนะ ฟุ้งลัดดา
+สุวัฒนา เพ่งพินิจ
+สุวัฒน์ กวีวุฒิศิลป์
+สุวัฒน์ คงประสิทธิ์สิงห์
+สุวัฒน์ จึงประภา
+สุวัฒน์ โชคอวยพรชัย
+สุวัฒน์ ตันเสถียร
+สุวัฒน์ นะโยสิน
+สุวัฒน์ โปษยะพิสิษฐ์
+สุวัฒน์ โพธิแสง
+สุวัฒน์ รัศมี
+สุวัฒน์ เล็กสุวรรณกุล
+สุวัฒน์ วิภัชนนท์กิจ
+สุวัฒน์ ศุภธนสินเขษม
+สุวัฒน์ สุขสันติ์
+สุวัฒน์ หวังวิชา
+สุวัฒน์ อาวรณ์
+สุวัตร ศรีชญา
+สุวันนี โกคูณ
+สุวานีย์ จินตยังคุณ
+สุวารี รุ่งสิริจรัสทอง
+สุวิช ชูตระกูล
+สุวิช ศิริวัฒนโยธิน
+สุวิชญา เกิดคง
+สุวิชา เกตุแก้ว
+สุวิชาน์ กำลังเสือ
+สุวิทย์ กองกันภัย
+สุวิทย์ ไกวัลโกศล
+สุวิทย์ จันทรงาม
+สุวิทย์ จุติประเสริฐ
+สุวิทย์ ชาญทวีคุณ
+สุวิทย์ แซ่เฮง
+สุวิทย์ ตันประวัติ
+สุวิทย์ ทองผาสุข
+สุวิทย์ นฤเบศร์ไกรสีห์
+สุวิทย์ บุญรักษา
+สุวิทย์ โปษยะพิสิษฐ์
+สุวิทย์ พิทักษ์เลิศกุล
+สุวิทย์ ภู่ไพจิตรกุล
+สุวิทย์ รัตนเจริญ
+สุวิทย์ เลาหะกุลธรรม
+สุวิทย์ วัชรเสถียร
+สุวิทย์ เวทย์วราวุธ
+สุวิทย์ เศรษฐีชัยชนะ
+สุวิทย์ สิมะสกุล
+สุวิทย์ เสรีโรจนา
+สุวิทย์ อมฤตกุล
+สุวิทย์ เอกวัฒน์
+สุวิน เลาหประสิทธิ์
+สุวิภรณ์ แย้มทับ
+สุวิมล ก้องกังวาฬโชค
+สุวิมล จันทร์เจริญ
+สุวิมล ชินะวรพงศ์
+สุวิมล ดิลกานนท์
+สุวิมล ธรรมมโนวานิช
+สุวิมล ปิติเจริญโชคลาภ
+สุวิมล ภววรพันธุ์
+สุวิมล ฤทธิโนมัย
+สุวิมล วิบูลย์เลิศวัฒนะ
+สุวิมล สันติทานนท์
+สุวิมล อดุลย์ฐานานุศักดิ์
+สุวิรัตน์ เจนวสุ
+สุวิไล เต็มธารทิพย์
+สุวโรช พะลัง
+สุหาญ สุนทรพาณิชย์
+สุเจตน์ อภัยวงศ์
+สุเชษฐ์ นิลสุวรรณากุล
+สุเทพ กลิ่นถือศีล
+สุเทพ แก้วนิมิตชัย
+สุเทพ โค้วเจริญ
+สุเทพ จีนเจนพจน์
+สุเทพ ชัยสกุล
+สุเทพ แซ่อึ้ง
+สุเทพ ตันวินิจ
+สุเทพ ทับทิมแสง
+สุเทพ ธุวะเศรษฐกุล
+สุเทพ บุญทรัพย์
+สุเทพ ปั้นนิ่ม
+สุเทพ พรอำนวย
+สุเทพ พุ่มท้วม
+สุเทพ มณีเสาวภาคย์
+สุเทพ รวยดี
+สุเทพ ลิ้มตระกูล
+สุเทพ วรยศ
+สุเทพ ศรีนิยม
+สุเทพ สมานมิตร
+สุเทพ สุขบำรุง
+สุเทพ สุวิชาชนันทร์
+สุเทพ เหมือนดวง
+สุเทพ อ่ำสุข
+สุเธียร นิรันดรเกียรติ
+สุเนตรา จิตเบญจกูล
+สุเพ็ญ จรรยานุภาพ
+สุเพียร วงค์ปันง้าว
+สุเมธ กางไธสง
+สุเมธ จันทวงศ์
+สุเมธ ไชยแก้ว
+สุเมธ ทวีทรัพย์
+สุเมธ เปลี่ยนกลิ่น
+สุเมธ มโหสถ
+สุเมธ วงศ์สุขหฤทัย
+สุเมธ ศุภพาณิชวงศ์
+สุเมธ แสงทรัพย์
+สุเมธ อิสริยอำไพ
+สุเมศร์ สุขุมภาณุเมศร์
+สุเวทย์ งูพิมาย
+สุโข ปัญจวีณิน
+สุโภชน์ ตันติวงศ์
+สุใบด๊ะ สุขเจริญ
+สุไลมาน นะมิ
+สเก็ดดาว ซื่อวัฒนะ
+สไบทิพย์ ศิริวงศ์
+เสกสรร นิ่มพิจารณ์
+เสกสรร อุทิศานนท์
+เสกสรรค์ ป้องกันภัย
+เสกสรรค์ อยู่เป็นสุข
+เสงี่ยม เก่งชน
+เสงี่ยม แซ่ชิง
+เสงี่ยม บุตรชะม้อย
+เสงี่ยม มีสันฐาน
+เสงี่ยม สมบัติถาวรวงศ์
+เสงี่ยม เอกฉัตร
+เสถียร คามีศักดิ์
+เสถียร ดลบันดาลโชค
+เสถียร บัวคลี่
+เสถียร ภาสะพันธ์
+เสถียร วงศ์เจริญเกียรติ
+เสถียร ส่อสุหัท
+เสถียร เหลืองอร่าม
+เสนอ แจ้งชัดใจ
+เสนอ มูลศาสตร์
+เสนาะ กันโรคา
+เสนาะ ตุ่นไวย์
+เสนาะ ประดับลาย
+เสนาะ ยิ้มเจริญ
+เสนาะ สังข์ทองดี
+เสนาะ เอมวะดี
+เสนีย์ ธรรมาจักร์กุล
+เสนีย์ อนุสรศักดิ์
+เสน่ห์ ความดี
+เสน่ห์ เชี่ยวธนวัฒน์
+เสน่ห์ นาห้วยทราย
+เสน่ห์ พันธ์จีน
+เสน่ห์ เมฆเฉลิม
+เสน่ห์ ศรีวัฒน์
+เสน่ห์ โสรินทร์
+เสมอ เกียรติไกร
+เสมอ มิตรวิจารณ์
+เสมอพร ชุณหชัชวาล
+เสมา ธิรามนตร์
+เสมือน เชื้อมอญ
+เสริม เกษทอง
+เสริม เนียมนพเนตร
+เสริม มูลทองย้อย
+เสริม หรูสกุล
+เสริมทรัพย์ บุญชู
+เสริมศรี กาญจนาภรณ์กุล
+เสริมศรี ศรีแก้ว
+เสริมศักดิ์ เดชบุญ
+เสริมศักดิ์ ลัคนาจันทโชติ
+เสริมศักดิ์ เอกวัฒน์
+เสริมสุข โชติช่วงฉัตรชัย
+เสริมสุข อยู่ยงสิน
+เสรี เกียรติบรรลือ
+เสรี เจียรแสงทอง
+เสรี เดชกล้า
+เสรี ธานี
+เสรี ปฏิปทานนท์
+เสรี พัวศิริ
+เสรี ยุวรี
+เสรี วงศ์ภัทรชน
+เสรี ศิริธร
+เสรี สุธาชี
+เสรี อริยโสภารักษ์
+เสวก ขะมันจา
+เสวก พันธ์หนอย
+เสวก แสงเขียว
+เสวย เรืองโชติ
+เสวียง อิศรางกูร ณ อยุธยา
+เสาร์แก้ว ใจกว้าง
+เสาวคนธ์ วิสิอติ
+เสาวณี ครอบครอง
+เสาวณี ภักดี
+เสาวณี เอี่ยมวงศ์นุกูล
+เสาวณีย์ ชูเชิด
+เสาวณีย์ ผลิตกุศลธัช
+เสาวณีย์ วิจิตรตระการรุ่ง
+เสาวณีย์ อรุณแฉ่ง
+เสาวนิต ไอน้ำทิพย์
+เสาวนี ศรีเพ็ชรดานนท์
+เสาวนีย์ ชั้นประเสริฐ
+เสาวนีย์ บุรินทรามาตย์
+เสาวนีย์ ลียากาศ
+เสาวนีย์ แสงแก้ว
+เสาวภา ช่วยชูวงศ์
+เสาวภา ศรีรัตนโพธิ์
+เสาวภาคย์ อนันต์ชื่นสุข
+เสาวรส ศรีพนม
+เสาวรีย์ ตะโพนทอง
+เสาวลักษณ์ จิรพงศานานุรักษ์
+เสาวลักษณ์ ฐานะอุดมมงคล
+เสาวลักษณ์ นารถบุญ
+เสาวลักษณ์ พิชิตลำเค็ญ
+เสาวลักษณ์ ลิขิตวัฒนพร
+เสาวลักษณ์ สกุลรัตน์
+เสาวลักษณ์ หลิ่มสาโรช
+เสาวลี ติกขปัญญกุล
+เสียดฟ้า ชวนจิตต์
+เส็ง ชื่นสุข
+เส่ย รัตนวัฒนาธร
+แสง ประยูรหงษ์
+แสง สุระเรืองชัย
+แสงจันทร์ เจริญสุข
+แสงจันทร์ ผกามาศ
+แสงจันทร์ สัชชะเดช
+แสงชัย ฉัตรชัยสุชา
+แสงชัย นวรัตน์ดุสิต
+แสงชัย ศรีรุ่งเรืองภรณ์
+แสงดาว ทองแพ
+แสงทอง ทินนิกร
+แสงธรรม ฟุ้งไพศาลพงศ์
+แสงมา เดชมนต์
+แสงรัตน์ อุดมชัยบรรเจิด
+แสงสุรีย์ วงศ์สุวรรณนิธิ
+แสงอรุณ บุญชู
+แสงอ่อน คำลือ
+แสงเดือน ทิพมนต์
+แสงเดือน สุววรรธน์
+แสงเพ็ญ ลีธนศักดิ์สกุล
+แสดง ตันตยากร
+แสนพล รัศมี
+แสวง กันรัมย์
+แสวง จันทร์อุดม
+แสวง ดำรัสมงคลสิริ
+แสวง บุญงอก
+แสวง พลาณิชย์
+แสวง เย็นใจประเสริฐ
+แสวง ศิริประภาษมงคล
+แสวง หมัดนุรักษ์
+โสดา รัญดร
+โสพล สุขเจริญ
+โสพิศ ภูสนาคม
+โสภณ กู๋เจริญ
+โสภณ จันทร์กลิ่น
+โสภณ ชาลีพรหม
+โสภณ เดชเทวพร
+โสภณ ทับบรรจง
+โสภณ บุญช่วย
+โสภณ พงษ์เภตรารัตน์
+โสภณ ภุมราพันธุ์
+โสภณ รัตนเลิศ
+โสภณ ว่องวงศ์ศรี
+โสภณ ศิวิลัย
+โสภณ สุญาณเศรษฐกร
+โสภณ เหมือนสมัย
+โสภณพัฒนาภรณ์ พระครู
+โสภา เกียรติสังวรณ์
+โสภา เจริญสุขจิระ
+โสภา เตียวพิพัฒน์
+โสภา บุญเรือง
+โสภา เพ็ชรคูเวียง
+โสภา ลิมานนท์วราไชย
+โสภา สวัสดิ์ทัติ
+โสภา โหตระกิตย์
+โสภาพร อาหินันโท
+โสภาศ โสวัฒนางกูร
+โสภิดา แท้เที่ยงธรรม
+โสภิต ลิ้มอำนวย
+โสภิษฐ ผลคำสุข
+โสภี อนุจารีรัตน์
+โสมพิชฌา วรรณกูล
+โสรยา บุญยวิตร์
+โสรัตน์ จอง
+โสฬส ม่วงนุ่ม
+ไส ยิ้มเนียม
+ไสว แขดวง
+ไสว เฉ่งทอง
+ไสว โตวงษ์
+ไสว บุญทิม
+ไสว พึ่งแก้ว
+ไสว ราชวงศ์
+ไสว ศรีแสง
+ไสว สุดปาน
+ไสว อำไพพร
+หง อิสระวรวาณิช
+หงษ์ โกวินธนาพัฒน์
+หงษ์ เผ่าโภคสถิตย์
+หงิ่งล้วง แซ่เซียว
+หทัย เผือกลาดพร้าว
+หทัยชนก แสงพรมทิพย์
+หทัยรัตน์ คุ่ยต่วน
+หทัยรัตน์ พัฒน์คุ้ม
+หทัยรุ่ง ตั้งจิตพิทักษ์กุล
+หนำ ปิยัสสพันธุ์
+หนึ่งหทัย เนติลักษณวิจารณ์
+หนู รุ่งเจริญรอด
+หนูน้อย ฮอกิ้นส์
+หนูวรรณ์ วรรัตน์
+หนูเล็ก แสงทอง
+หม่วย ธรรมบุตร
+หมัด หมัดฮารุณ
+หมุด สุขภิญโญ
+หมุยเตียง แซ่โอ๊ว
+หยกศิริ ประชุมโชติ
+หยวก ล้ำเลิศ
+หยาดดวง เวณุจันทร์
+หยี่ เอี่ยมกลิ่น
+หรรษ์ศักดิ์ พันธ์งาม
+หรรษา มะโรหะบุตร์
+หรั่ง สุทธิสุวรรณ
+หฤทัย เจียมใจสว่างฤกษ์
+หลง สิงห์รุ่งเรือง
+หล่องง้อ แซ่เซียว
+หลาด นิลศิริ
+หลิน ศรีวงจันทร์
+หลี ปลอดภัย
+หลีเอง แซ่ฉั่ว
+หวล เทียมอัมพร
+หวัง ฤกษ์รัชนีกร
+หวั่น จุลมุน
+หวานใจ คล้ายศรี
+หอม เทียมเจริญ
+หอมหวล ปัตนี
+หัด โคตะมะ
+หัทยา พานิชกุล
+หัสตชัย แสงเสริฐเศรษฐ์
+หาญ ซื่อตรง
+หาญ อั๋นวงศ์
+ห่างคุง แซ่ลิ้ม
+หิรัญ บุนนาค
+หิรัญญิการ์ อรัญญิก
+หุ้ยไน้ แซ่ตั้ง
+เหมพรรณ จานศิลา
+เหมือน สีเหล็ก
+เหรียญ ชีวานันท์
+เหรียญ สง่าเนตร
+เหรียญเงิน ทัศนวิรุฬห์
+เหลี่ยม นานอก
+เหล็กฮู้ แซ่เล็ก
+เห็ม ลำเหลือ
+แหลมทอง อภิมหาบุณย์
+โหล่เหมย แซ่เฉิน
+ใหม่ แซ่ซิ้ม
+ไหล่ฮก แซ่จึง
+องค์อร เลอลภ
+องอาจ จึงประภา
+องอาจ โตประดิษฐ์
+องอาจ พจน์ทวีเกียรติ
+องอาจ โรจน์ตรงจิตต์
+องอาจ สุจิรชาโต
+องุ่น โกฏิตระกูล
+องุ่น พรหมมายน
+องุ่น โหงวเจริญ
+อณิวัฒน์ เหลืองมีชัย
+อดินันท์ มงคลรัตน์นากร
+อดิศร ชาติกำแหง
+อดิศร เพ็ชรถนอม
+อดิศร สุริยวรวงศ์
+อดิศักดิ์ กุลศิริวุฒิชัย
+อดิศักดิ์ โฉมแก้ว
+อดิศักดิ์ ทองแท่ง
+อดิศักดิ์ พวงเพ็ชร์
+อดิศักดิ์ โรหิตะศุน
+อดิศักดิ์ ศักดิ์นำส่ง
+อดิศักดิ์ หละทิ้ง
+อดิศัย ธนวิบูลย์
+อดิสัย วิมลสัจจารักษ์
+อดิเรก บุญเอี่ยม
+อดุล จันทรสุริยศักดิ์
+อดุลย์ศักดิ์ ตีระจินดา
+อดุลย์ จารุรัตน์
+อดุลย์ เตียสกุล
+อดุลย์ ผาติหัตถกร
+อดุลย์ รัตนทัศนีย์
+อดุลย์ สกุลพาณิชย์
+อดุลย์ อินเสนี
+อตินุช รังสิยานนท์
+อติเรก ณ ถลาง
+อธิคม ศุภดิลกชัย
+อธิปัตย์ คลี่สุนทร
+อธิวัฒน์ อรรถปวัตน์
+อนงค์นาฎ เตชะวสัญญู
+อนงค์นุช กองจินดา
+อนงค์ลักษณ์ มาลากอง
+อนงค์ แก้วกิตติคุณ
+อนงค์ จันทรศุภแสง
+อนงค์ ชาตบุตร
+อนงค์ แซ่เบ๊
+อนงค์ ทวีสุข
+อนงค์ นามศรีคุณ
+อนงค์ ประพัตร์กุล
+อนงค์ พัลลภรักษา
+อนงค์ ภู่เจริญ
+อนงค์ รุ่งเรือง
+อนงค์ วิเวโก
+อนงค์ สมานสิน
+อนงค์ สุภาพพร้อม
+อนงค์ อ่วมสุข
+อนงลักษณ์ โรจนบุรานนท์
+อนวัช ฐิติภากร
+อนัญญา วีระฐานะ
+อนันต์ชัย ขันโท
+อนันต์ศักดิ์ เพียรจิตเลิศขจร
+อนันต์ กำปั่นทอง
+อนันต์ ขยัน
+อนันต์ งามยิ่งสง่า
+อนันต์ จิตต์รักไทย
+อนันต์ แจ้งกลีบ
+อนันต์ ชุ่มกรานต์
+อนันต์ แซ่เหีย
+อนันต์ ตรีพจนีย์
+อนันต์ ไตรสารศรี
+อนันต์ ธนะศิรินาวิน
+อนันต์ นิติเจริญพงศ์
+อนันต์ บุญศรีสุข
+อนันต์ ปลื้มมณี
+อนันต์ พงษ์สมบัติ
+อนันต์ พึ่งทรัพย์
+อนันต์ ภู่ศรีวราวงศ์กูล
+อนันต์ เมฆลอย
+อนันต์ รัชเวทย์
+อนันต์ ลิ้นจี่
+อนันต์ วงศ์สกุล
+อนันต์ วิริรัตน์
+อนันต์ ศรีเพียร
+อนันต์ สวัสดิ์พาณิชย์
+อนันต์ สุขน้อย
+อนันต์ สูจิฆระ
+อนันต์ เหมือนแม้น
+อนันต์ อัศวกุล
+อนันต์ เอกนิยม
+อนัส ศิลสมบูรณ์
+อนิรุทธ์ คงเปรม
+อนิษฎา ศรีสันติแสง
+อนุ วัฒธัญญกรรม
+อนุกูล ชาติอุดมเดช
+อนุกูล ศิริศักดิ์ไพบูลย์
+อนุชรักษ์ มหาอัมพรพฤกษ์
+อนุชา จารุหิรัญสกุล
+อนุชา ธำรงรัตน์
+อนุชา มุกดาสนิท
+อนุชา สิริสินวิบูลย์
+อนุชาติ คชศิลา
+อนุชิต การนอก
+อนุชิต ทองอั้น
+อนุชิต เร่งพุฒิพงษ์
+อนุชิต อินธิรักษ์
+อนุธิดา แพลงกระโทก
+อนุพงษ์ จังนภาพร
+อนุพนธ์ ยศภรณ์
+อนุพันธ์ สุวรรณ์
+อนุรักษ์ คันธรักษ์
+อนุรักษ์ นาดสาร
+อนุรักษ์ ลีลาปิยมิตร
+อนุรักษ์ เอื้องอุดม
+อนุรัตน์ หมัดสะและ
+อนุวรรตน์ กลเซ็มมูซอ
+อนุวัฒน์ นาคศรีสุข
+อนุวัฒน์ สถิรวิกรานต์
+อนุวัตน์ อังศุภากร
+อนุวัตร อาจวาทิน
+อนุศักดิ์ จงจามรีสีทอง
+อนุศักดิ์ มีสมวิทย์
+อนุศิษฎ์ เทพสินธพสกุล
+อนุสรณ์ คิวเกษมสวัสดิ์
+อนุสรณ์ ถ้ำสุวรรณ
+อนุสรณ์ พงษ์โชติ
+อนุสรณ์ ลิมปิวัฒน์
+อนุสรณ์ สุนทรา
+อนุสรา สุขชาติ
+อนุเทพ บุญเปี่ยมศักดิ์
+อบมาลี ภิญโญวานิชกะ
+อภัย ธรฤทธิ์
+อภิชญา นพมาศ
+อภิชัย จิรัฐติยางกูร
+อภิชัย ทรงศิลป์
+อภิชัย มหารุ่งเรืองรัตน์
+อภิชัย ศรีไชยยันต์
+อภิชัย อัศวโรจน์พานิช
+อภิชาต แพรสีเจริญ
+อภิชาติ กีรติอาภากุล
+อภิชาติ จันทโรบล
+อภิชาติ เชิดชัยภูมิ
+อภิชาติ ตั้งคารวคุณ
+อภิชาติ ธีรสุนทรวัฒน์
+อภิชาติ โปรณานันท์
+อภิชาติ มณีโรจน์ฉาย
+อภิชาติ เลิศปิยะนันทกูร
+อภิชาติ ศิริมาตย์
+อภิชาติ สุวรรณกุล
+อภิชาติ อัศวพิชญ์โชติ
+อภิชิต ฤทธิบูรณ์
+อภิญญา ฉัตรโอฬารกุล
+อภิญญา บุญจำรัส
+อภิญญา เลิศวัฒนนนท์
+อภิญญา อยู่คำ
+อภินพ เกิดพิบูลย์
+อภินันท์ ณ นคร
+อภินันท์ รักตประจิต
+อภิบาล วรรังสฤษฏิ์
+อภิยุตต์ ศิริกุล
+อภิรดี โพธิยันต์
+อภิรมย์ ดิษฐี
+อภิรักษ์ ชีวเสถียรพร
+อภิรักษ์ ศิริทรัพยากร
+อภิรัฐ อิทธิวิกุล
+อภิรัตน์ สุขศรี
+อภิวรรณ สวัสดี
+อภิวัฒน์ บุรีสิริรัตน์
+อภิวัตน์ พิณทอง
+อภิศักดิ์ ซิ้มประเสริฐ
+อภิศักดิ์ สรวิสูตร
+อภิสิทธิ์ จันทรวงศ์
+อภิสิทธิ์ พรเจริญ
+อภิสิทธิ์ สายะวิบูลย์
+อภิเชษฐ์ ช่องดารากุล
+อภิโรจน์ ปิ่นเสถียรเกส
+อมร จะเชือนรัมย์
+อมร ดิเรกบุษราคัม
+อมร บางเจริญพรพงศ์
+อมร พิสุทธิรัตนพันธุ์
+อมร เรืองมานะมงคล
+อมร ศิริอาชาวัฒนา
+อมร หมัดขาว
+อมร เอี่ยมสำอางค์
+อมรพรรณ บุรีสิริรัตน์
+อมรรัตน์ กาญจนวิจิตรเลิศ
+อมรรัตน์ จุฑามาชาติ
+อมรรัตน์ ดุสิต
+อมรรัตน์ นิยมราษฎร์
+อมรรัตน์ พูนตระกูลเกียรติ
+อมรรัตน์ รุ่งโรจน์สกุล
+อมรรัตน์ วินิจฉายะจินดา
+อมรรัตน์ สีเง้อ
+อมรรัตน์ อังสุทธิ
+อมรวิทย์ เอกแสงศรี
+อมรศักดิ์ วงศ์พัฒนาสิน
+อมรา คุ้มแก้ว
+อมรา นิ่มราศรี
+อมรา รัตตากร
+อมรา หงษ์พร้อมญาติ
+อมราวดี อังคสุวรรณ
+อมรเทพ พ่วงโกศล
+อมันยิต ซิงห์
+อยุธ นันทาภิวัธน์
+อร แซ่โง้ว
+อรฉัฐ ช่างทำ
+อรชร โพธิสุข
+อรชุดา พรมบุตร
+อรณี กิติอาภา
+อรณี หลอดเงิน
+อรทัย กฤษณยรรยง
+อรทัย จีรวรรณวงศ์
+อรทัย ดุษฏีทวีพันธุ์
+อรทัย บุญฉิม
+อรทัย ภักดีวิจิตร
+อรทัย เลิศประสพสุข
+อรทัย สยุมพร
+อรทัย อนุพันธ์วีระพงษ์
+อรธิดา บุญสม
+อรนุช ก้องสินธุ
+อรนุช ชนะพันธ์
+อรนุช ถนัดกิจ
+อรนุช พาณิชย์จินดา
+อรนุช วรรณวิจิตร
+อรนุช หังสะไวศยะ
+อรพร บัวประดิษฐ์
+อรพรรณ ฉันวิไลกิจ
+อรพรรณ ปฏิพัทธ์ปัญญากุล
+อรพรรณ วิเศษมงคลชัย
+อรพรรณ อินทรสุริยเดช
+อรพิณ เกตุปัญญา
+อรพิน จันทรสุข
+อรพิน ตันติวิรุฬห์
+อรพิน พรประกาสิต
+อรพิน ว่องวิชชุเวทย์
+อรพิน อนันตรกิตติ
+อรพินทร์ อภินันท์จารุพงศ์
+อรพินท์ แซ่เจี่ย
+อรพินท์ พงศ์วรามิตรชัย
+อรพินท์ วงศ์วิสุทธิรัตน์
+อรพินท์ อนันตบุตร
+อรพินธ์ ธิดารัตน์สกุล
+อรมณี ภาณุพันธ์
+อรรคเดช เลื่อมแสง
+อรรณพ เคียงศิริ
+อรรณพ บุญพิรุณรักษา
+อรรณพ วิจิตรตระการกุล
+อรรณพ อึ้งวิฑูรสถิตย์
+อรรถกมลยบุตยานวัตร หลวง
+อรรถชัย ฤกษบุตร
+อรรถพร โชคชัยเจริญศรี
+อรรถพล กฤษดาธิการ
+อรรถพล ยินบัว
+อรรถพล เฮงบุณยพันธ์
+อรรถวุฒิ รัตนานันท์
+อรรถอุดม พลาศรัย
+อรลักษณ์ ปิ่นนิกร
+อรวรรณ แก่นทอง
+อรวรรณ จันทร์เที่ยง
+อรวรรณ ชฎาชัยวิวัฒน์
+อรวรรณ แซ่เจ่า
+อรวรรณ เต็มสุวรรณพานิช
+อรวรรณ ธีระวิทยเลิศ
+อรวรรณ ปฐมวาณิชย์
+อรวรรณ พงษ์วร
+อรวรรณ ภวพงศ์สุภัทร
+อรวรรณ รอดพันธ์
+อรวรรณ เลิศสาธิต
+อรวรรณ วิทยาเวช
+อรวรรณ ศิริสุขสมบูรณ์
+อรวรรณ สินลอยมา
+อรวรรณ แสงรัตนชัยกุล
+อรวรรณ อรุณรุ่งโรจน์
+อรวรรณ์ มุ่งหน้าที่
+อรศรี นิยมวัน
+อรษา ทรงสมรรถภาพ
+อรสา ขัตติยพรพงศ์
+อรสา ตันไพจิตร
+อรสา พลอยพานิชเจริญ
+อรสา วนรักษ์
+อรสา หงษ์ทอง
+อรอณี เวชพงศา
+อรอนงค์ ตั้งสวัสดิรัตน์
+อรอนงค์ เพริดพริ้ง
+อรอนงค์ ศรีมูล
+อรอนงค์ เอี่ยมฤกษ์ชัย
+อรอุมา นันทุรัตน์
+อรอุษา อาษานอก
+อรัญ เผือกทอง
+อรัญ สุนิพล
+อรัญญา จันทร์สุริวงศ์
+อรัญญา ธนานันท์
+อรัญญา มานะแก้ว
+อรัญญา สาธุ
+อรัณ ศรีอวยชัย
+อร่าม เทพานนท์
+อร่าม วงศ์ถิรวรรธน์
+อร่ามศรี มงคลศิริ
+อรินา ศิริวงศ์
+อริยา วิทยศรีเจริญ
+อริสา เกษมกิจสุวรรณ
+อรุณ เกียรติปัญญา
+อรุณ จังทองศิริ
+อรุณ ชมเชยวงศ์
+อรุณ ดำรงผล
+อรุณ ทองนอก
+อรุณ นิมมานนท์
+อรุณ ปรีดา
+อรุณ พุกพัก
+อรุณ มาฮาบูบ
+อรุณ เรืองยุทธปกรณ์
+อรุณ วันรักษ์
+อรุณ ศึกษาพรต
+อรุณ สุขสบาย
+อรุณ หาญชนะ
+อรุณ อุดมสุข
+อรุณประศาสตร์ เปล่งแสงศรี
+อรุณรัตน์ ทับเล
+อรุณรัตน์ เอี่ยมเจริญยิ่ง
+อรุณวรรณ กีรติพลกุล
+อรุณศรี เกษมพงษ์
+อรุณศรี นุ่มหอม
+อรุณศรี ศิริพรเทพ
+อรุณา บาก้า
+อรุณี คงเรืองฤทธิ์
+อรุณี เจริญผล
+อรุณี ไชยกล
+อรุณี แตงฉ่ำ
+อรุณี นาคประสิทธิ์
+อรุณี ปิ่นบัณฑิต
+อรุณี พีรากรเดช
+อรุณี รักษานาเวศ
+อรุณี โลหาชีวะ
+อรุณี ศรีภา
+อรุณี สิงห์คำ
+อรุณี หมู่ขจรพันธ์
+อรุณี อุดมปราละ
+อรุสรา ชาญสว่าง
+อรไท วุฒิเดชเกรียงไกร
+อลงกรณ์ เดชคง
+อลิตา ดิศรภักดี
+อลิสา ทีโส
+อวบ ประโมจนีย์
+อวยชัย ปิยะคุณ
+อวยพร แก้วมณี
+อวยพร มงคลกล้า
+อวล นิตยสุทธิ์
+อสุนีย์ ทรัพย์ศรีศุภชัย
+ออมสิน สิงห์เทียน
+อ่อนตา สัทธารังสี
+อ้อ โพธา
+อ้อมใจ เพิ่มพิกุล
+อ้อยทิพย์ แซ่อั้ง
+อ้อยใจ บุญยัง
+อัก ชุ่มชื่น
+อักษรักส์ โตกฤษณะ
+อัครนาฏ กิตติแสงธรรม
+อัครพัฒน์ แซ่โค้ว
+อัครเชษฐ์ คงเจริญ
+อัครเดช อารีย์สกุล
+อังกูร ปาลีวงศ์
+อังคณา คำสุนทร
+อังคณา โชติขจรเกียรติ
+อังคณา ทองประเสริฐ
+อังคณา เปี่ยมสุขวัฒน์
+อังคณา เมธยาภา
+อังคณา วาณิชวิเศษกุล
+อังคณา สุขสิทธิ์
+อังคณา อินทรโกเศศ
+อังคาร วัชรบูรพาชัย
+อังสนา คชรักษ์
+อังสนา เลิศผกากุล
+อังเดร จูเนียร์
+อัจจณา ดิถีสวัสดิ์
+อัจฉรา กลิ่นหอม
+อัจฉรา เขมสิริโชค
+อัจฉรา จิตรนุวัฒน์กุล
+อัจฉรา ชื่นสุวรรณ
+อัจฉรา ดิษฐอินทร์
+อัจฉรา ทองมี
+อัจฉรา นิลสวัสดิ์
+อัจฉรา ปลื้มอุทร
+อัจฉรา พิชญ์เลิศชาญ
+อัจฉรา มาศพันธุ์
+อัจฉรา ลวชลาคม
+อัจฉรา วัชรกุล
+อัจฉรา ศรีเล็กดี
+อัจฉรา สารพิมพา
+อัจฉรา สุวิทยาพรสกุล
+อัจฉรา อดิศักดิ์กิตติ
+อัจฉรา เอกจำนงค์
+อัจฉราพันธ์ คัพทะนาวิน
+อัจฉราวรรณ เภตรารัตน์
+อัจฉริยา เสริมทอง
+อัจฉรีย์ อมรเลิศวิมาน
+อัชฌา ตั้งติปกรณ์
+อัชนา ลาภหลาย
+อัชราภรณ์ สุขเกษม
+อัญชฎา เอี่ยมประดิษฐ์ภัณ
+อัญชนา เปล่งจินดาเรือง
+อัญชนี พงศ์ธีรภาพ
+อัญชลี กานดา
+อัญชลี คงกัลป์
+อัญชลี จั่วแจ่มใส
+อัญชลี ชมรส
+อัญชลี แซ่ตั้ง
+อัญชลี ตันติมิตร
+อัญชลี ธนะประ
+อัญชลี บัวทอง
+อัญชลี ปิยะสาธุกิจ
+อัญชลี พินทุพีรโกวิท
+อัญชลี มงคลเจริญ
+อัญชลี รุ่งรัตนาอุบล
+อัญชลี วงศ์ทิม
+อัญชลี วิโรจน์ธนะชัย
+อัญชลี ศุภวรรณ
+อัญชลี สุขุมวานิชกุล
+อัญชลี หล่อนพเก้า
+อัญชลี อินทร์ทอง
+อัญชัญ คำตา
+อัญชัน วุฒิพฤกษ์
+อัญชุลี สุโภทัย
+อัญญาต์ ไพจิตรานนท์
+อัญเชิญ จันทรุเบกษา
+อัฐพล ไชยรักษ์
+อัตถพร ลับไพรี
+อัธยา บุญญะดิษฐ์
+อั่น แซ่จิว
+อับดุลเลาะ สุขถาวร
+อัปสร นิทัศนจารุกุล
+อัมพร กมลบริสุทธิ์
+อัมพร แก่นกระจ่าง
+อัมพร จตุรวัฒนา
+อัมพร เจนอนันต์พร
+อัมพร ชื่นใจ
+อัมพร แซ่โค้ว
+อัมพร ตุณสุวรรณ
+อัมพร ธนสุวรรณเกษม
+อัมพร บรรดาศักดิ์
+อัมพร ปรางค์รัตน์
+อัมพร พรมตัน
+อัมพร พุลเล็ก
+อัมพร มาบจะบก
+อัมพร รุ่งเสรีรัตน์
+อัมพร วงศ์เลิศฟ้า
+อัมพร วิโนทัย
+อัมพร ศิริเวชพันธุ์
+อัมพร สาระพงษ์
+อัมพร สูงสว่าง
+อัมพร อมรกุลาจารย์
+อัมพร อุ่นเสียม
+อัมพริศ เสือวรรณศรี
+อัมพวัน พลอยเพชรมณี
+อัมพา ไข่มุก
+อัมพิกา แซ่อึ้ง
+อัมภา จิรเจิดนภา
+อัมรา คุณเชียร
+อัมรินทร์ นาราช
+อัลดุลเลาะ แดงโกเมน
+อัศนีย์ บุญศิริคำชัย
+อัศวิน แจ้งกระจ่าง
+อัศวิน ศรีสวัสดิ์
+อัษฎางค์ ฐานะวร
+อัสดางค์ ปิ่นสุวรรณ์
+อัสอารี กัสตาวี
+อาคม คร้ามศรี
+อาคม นิตยากรณ์
+อาคม เฟื่องฟุ้ง
+อาคม ศานติสรร
+อาคม อัตถะสัมบุณณะ
+อาจ วสุขันธ์
+อาจารี หอมเศรษฐี
+อาจินต์ เสี่ยงโชคอยู่
+อาชีวะ มงคลสกุลฤทธิ์
+อาณัติ พันธุวดี
+อาดูลย์ ยันตรพินิจ
+อาทร แชประเสริฐ
+อาทร รามโกมุท
+อาทรทิพย์ พวงมณี
+อาทิตย์ ใจบุญ
+อาทิตย์ มานสัจจธรรม
+อาทิตย์ อวศิริพงษ์
+อานนท์ จีรดิษฐ์
+อานนท์ เพ็ชรน้อย
+อานนท์ สระทองแพ
+อานันต์ อิฐสุวรรณ
+อานีตา จาวาลา
+อานุภาพ สุนอนันต์
+อาพร แซ่ลี้
+อาภรณ์ กุลวัฒโท
+อาภรณ์ ใจทัศน์กุล
+อาภรณ์ ตั้งศิริเสถียร
+อาภรณ์ นิโรจน์
+อาภรณ์ พานทอง
+อาภรณ์ รัตนะคุปต์
+อาภรณ์ ศิลอุดม
+อาภรณ์ สโรชวิกสิต
+อาภัทรา ธรรมเจริญ
+อาภา โฉมศรี
+อาภา ศรีงามผ่อง
+อาภากร พิพัฒน์จริยา
+อาภาพรรณ ตระการสิงหนาท
+อาภาภรณ์ สุขสัย
+อาม่วย แซ่โต๋ว
+อามุ่ย แซ่ตัน
+อารดา กรุณายิ่งพันธ์
+อารมณ์ แจ่มดาว
+อารมณ์ ผลเจริญ
+อารมณ์ สงวนทรัพย์
+อารมย์ จั่นฮวบ
+อารมย์ มูเทีย
+อารยะ ตรีศุกร์
+อารยา งามวงศ์เวชกุล
+อารยา ทิมกุล
+อารยา พิพัทธกุศลกุล
+อารยา ศตัษเฐียร
+อารยา อินทร์จันทึก
+อารักษ์ ปุ้ยตระกูล
+อาริชย์ คุณประสพ
+อารี กองเป็ง
+อารี แจ้งสว่าง
+อารี ดิษาภิรมย์
+อารี นาคะสิงห์
+อารี พรหมโณมัย
+อารี ยิ้มอ่ำ
+อารี วิไลวรรณ
+อารี สีตะสิทธิ์
+อารี อัศรัสกร
+อารีพร วงษ์มณีเทศ
+อารีย์วรรณ บัวเผื่อน
+อารียา ลิยะกุลพงศ์
+อารีย์ กิติสารศักดิ์
+อารีย์ คุ้มศิริ
+อารีย์ เจียไพบูลย์
+อารีย์ ซื่อชัยเจริญ
+อารีย์ เด่นศิริพงษ์
+อารีย์ ทิพย์ญานวงศ์
+อารีย์ บินหมัด
+อารีย์ พงศ์พัฒนานุรักษ์
+อารีย์ โพธิสุวรรณ
+อารีย์ เมืองสงวน
+อารีย์ ลิ่มวงศ์
+อารีย์ ศรประเสริฐกุล
+อารีย์ สว่างศรี
+อารีย์ สุนพงษ์ศรี
+อารีย์ หุตะมาน
+อารีย์ อุดมคณารัตน์
+อารีรัตน์ เจตต์สรรวิสรณ์
+อารีรัตน์ บุญทวี
+อารีรัตน์ ลิ้มประเสริฐสกุล
+อารีรัตน์ แหธัญวิสิฐ
+อารีวรรณ ธาราธีรเศรษฐ์
+อารีเฟน ฮะซานี
+อาลัย สุระเรืองชัย
+อาวุฒิ สงวนทรัพย์
+อาวุธ ศรีจันทร์
+อาสา ขยันเขียน
+อาอีซ๊ะ เหมสมัน
+อาเยกุมาร ปาวา
+อ่าง แซ่เตีย
+อ๋า ศรีอำไพ
+อำนวย เกษบำรุง
+อำนวย ครุฑนา
+อำนวย จันทะ
+อำนวย ฉัตรชาญมงคล
+อำนวย ไชยโรจน์
+อำนวย เตชะศรี
+อำนวย ทัศนเมธิน
+อำนวย นาคนาวา
+อำนวย บุญทรักษา
+อำนวย ปั้นงาม
+อำนวย พรเลิศปิติ
+อำนวย เพชรแสง
+อำนวย มาสา
+อำนวย รัตนวิไลกุล
+อำนวย วงศ์วณิช
+อำนวย เวชสุกรรม
+อำนวย สนหลี
+อำนวย สีนวน
+อำนวย สุวรรณปาล
+อำนวย หอยสังข์
+อำนวย อัศวศรีสุวรรณ
+อำนวย ฮาซันบิน
+อำนวยพร ศิริพงษ์ไพบูลย์
+อำนาจ การุณมรรคผล
+อำนาจ จงอดิเรกลาภ
+อำนาจ ชยสมานนท์
+อำนาจ ตรียานนท์
+อำนาจ ธีระประดิษฐผล
+อำนาจ บุญเต็ม
+อำนาจ พรหมนิตย์
+อำนาจ มงคลพันธ์
+อำนาจ เรือนทิพย์
+อำนาจ ไวจงเจริญ
+อำนาจ สายดวง
+อำนาจ แสงศิริ
+อำนาจ อำนาจสิทธิชัย
+อำพน ยิ้มสมบัติ
+อำพร คูณสวัสดิ์
+อำพร ดอนไพรเพชร
+อำพร บัวชัง
+อำพร ภู่เกลี้ยง
+อำพร ไว้ทเบรชท์
+อำพร แสงเพชร
+อำพรรณ ทวีมารถ
+อำพล เกาะกากลาง
+อำพล ชำนาญกิจ
+อำพล นามสนธิ
+อำพล โพธิ์พุ่มเย็น
+อำพล วีระตะนนท์
+อำพล หะรินสุต
+อำพัน คล้ายชัง
+อำพัน ผลห้า
+อำพัน สุขจอด
+อำพันธ์ ชวกุล
+อำพันพงษ์ โดเรี่ยน
+อำภา จันทรคุณาภาส
+อำภา ปานรักษา
+อำภา สุขอารมย์
+อำรุง สรรพสิทธิ์วงศ์
+อำไพ แก้วแจ่ม
+อำไพ จิตรมิตร
+อำไพ ไชยพุทธ
+อำไพ ถุงทรัพย์
+อำไพ บัณฑิต
+อำไพ ผลดี
+อำไพ ภมรสุวรรณ
+อำไพ รัตนรัตน์
+อำไพ วิชาทานสกุล
+อำไพ สมัครไทย
+อำไพ สุรงค์เลิศ
+อำไพ อยู่ศรีเจริญ
+อำไพพรรณ วุฒิธรรมจารี
+อิ๊กตี๋ แซ่เบ๊
+อิงอร วิเชียรสรรค์
+อิ๊ดซ้ง แซ่ฮ้อ
+อิทธิชัย สุหัตถาพร
+อิทธิพล ใจตั้ง
+อิทธิพล รัชในวรรณ
+อิทธิยา แจ่มมิน
+อิทธิโรจน์ พงษ์พิทักษ์
+อินทรศักดิ์ ทองดี
+อินท์อร พันธวารี
+อินทิรา ตันปกิจวงศ์
+อินทิรา เวชธรรม
+อินธิดา แซ่ลี้
+อิม แซ่เจ็ง
+อิ่มจิตต์ อุดมธนภัทร
+อิ้วท้ง แซ่โง้ว
+อิศรา ยงยืน
+อิศเรศ ฉัตรแก้วนพดล
+อิสระ จิตมีสุข
+อิสรา สงวนพงศ์
+อิสสระ ผลาเกตุ
+อีซา พลอยดี
+อี๋เต็ก แซ่เตียว
+อุกฤษ ชาญเลขา
+อุกฤษฏ์ สังข์แก้ว
+อุณานันทน์ วงษ์สัจจานันท์
+อุดม กึกก้อง
+อุดม โกสัยสุก
+อุดม คำภิระยศ
+อุดม จันทร์เที่ยง
+อุดม เจริญศรี
+อุดม ชารีธรรม
+อุดม แซ่ตั้ง
+อุดม แดงรัศมีโสภณ
+อุดม ทรงมี
+อุดม ธรรมภูษิต
+อุดม บัวรุ่ง
+อุดม ปานเถื่อน
+อุดม พรหมเกตุจันทร์
+อุดม พุ่มพวง
+อุดม ภิญโญชีพ
+อุดม มุตรนิพันธุ์
+อุดม รัศมีรังษีเหลือง
+อุดม ลีทอง
+อุดม วสุวิวัฒน์
+อุดม ศรีนพคุณ
+อุดม ศุภสินธุ์
+อุดม สันธู
+อุดม สุดไธสง
+อุดม แสนจำหน่าย
+อุดม อนันตเสถ
+อุดม อึ้งสุวรรณพานิช
+อุดมชัย ตั้งอมรศิริ
+อุดมพร ตันชัยมงคล
+อุดมพันธุ์ ทิพทัส
+อุดมลักษณ์ นนทิวรรธก
+อุดมศรี กิจค้า
+อุดมศักดิ์ โกมลารชุน
+อุดมศักดิ์ ธูปสุวรรณ
+อุดมศักดิ์ วงศ์พิศาล
+อุดมศักดิ์ อวิรุทธา
+อุดมเดช ชาญชยศึก
+อุดร ใจปันธิ
+อุดร พึ่งทอง
+อุดร เสถียรภาพงษ์
+อุทร เขมะบุลกุล
+อุทัย แก่นแก้ว
+อุทัย คูแก้ว
+อุทัย ใจประสาท
+อุทัย แซ่อึ้ง
+อุทัย เตชะรงค์
+อุทัย ธรรมอินทร์
+อุทัย บูรณวิชัยศิลป์
+อุทัย พันธ์พรึกส์
+อุทัย มุสิกะชัย
+อุทัย ลิ้มประเสริฐ
+อุทัย เวชยา
+อุทัย สวัสดิจันทร์
+อุทัย สุวรรณะ
+อุทัย อ่อนรั่ว
+อุทัยพร จารุกิจโสภา
+อุทัยวรรณ จันทร์วัฒนางกูร
+อุทัยวรรณ บัวแก้ว
+อุทัยวรรณ รัมยะรังสิ
+อุทัยวรรณ สุนทรวัฒน์
+อุทาร เฟื่องฟูสิน
+อุทิศ ดุลยกาญจน์
+อุทิศ ล้วนเจริญ
+อุทิศ โอภาสนำพาวงศ์
+อุทุมพร พลาวงศ์
+อุนิตย์ วรรณสินธ์
+อุ่นเรือน จิยะวรนันท์
+อุ่นใจ บุญเสริมแท้
+อุบล แก้วนิมิตร
+อุบล จันทร์ชีวะ
+อุบล ชื่นจิตร
+อุบล โตมอญ
+อุบล นิลเขียว
+อุบล ผ่านจังหาร
+อุบล ภูพีระสุพงษ์
+อุบล เริงกมล
+อุบล ศรีกิตติศักดิ์
+อุบล สิริจันทรดิลก
+อุบล หมื่นภักดี
+อุบล อุปเสวี
+อุบลรัตน์ จิตตะเสนีย์
+อุบลรัตน์ แพ่งนคร
+อุบลรัตน์ เสรีเจียบปรีชา
+อุบลวรรณ เปรมจิตต์ชื่น
+อุบลศรี ต่ายแต้มทอง
+อุปนันท์ เนตรสว่าง
+อุมา อัครลิขิต
+อุมาพร พัฒนเสรี
+อุมาภรณ์ ติกวัฒนานนท์
+อุยฮวง แซ่โง้ว
+อุรดี สาณะเสน
+อุรา แก้วกลม
+อุริน สินศึกสงบ
+อุลิต ปัทมาลัย
+อุษณา ศรีสำเริง
+อุษณี สุนาโพธิ์
+อุษณีย์ ชินพัฒนาการ
+อุษณีย์ บุญเสน่ห์
+อุษณีย์ วงศ์ปราณีกุล
+อุษณีย์ อาจอรุณ
+อุษา เกียรติระบิล
+อุษา จิตต์จรรยากุล
+อุษา โชคเจริญ
+อุษา ทวีสุทธิ์
+อุษา บัวศิริ
+อุษา พงษ์พฤกษา
+อุษา ม่วงจำกัด
+อุษา เล็กยิ้ม
+อุษา ศรีใส
+อุษา สุขสนอง
+อุษา อยู่แพ
+อุษาวดี แซ่โง้ว
+อุสรา ประทีป ณ ถลาง
+อุสาห์ ศิลปี
+อุเทน เฉลิมพรรัตนา
+อุเทน เสรีเด่นชัย
+อุไร กุศลสร้าง
+อุไร คังคะเกตุ
+อุไร เจียประเสริฐ
+อุไร แซ่ว่อง
+อุไร เตียะเพ็ชร
+อุไร นวมแหลม
+อุไร บุนารักษ์
+อุไร พงษ์สว่าง
+อุไร โพธิ์ฐิติรัตน์
+อุไร เมฆไพบูลย์วัฒนา
+อุไร ลิ้นแก้ว
+อุไร ศรฤทธิ์ชิงชัย
+อุไร สวัสดิ์เฉย
+อุไร สุวิวัฒนชัยกุล
+อุไร อรรคเสลา
+อุไรพร แซ่ลิ้ม
+อุไรรัตน์ ฉายชูวงษ์
+อุไรรัตน์ สหวัธนะ
+อุไรวรรณ กำปั่นทอง
+อุไรวรรณ จรูญสมิทธิ์
+อุไรวรรณ เชาวกิตติโรจน์
+อุไรวรรณ เทพประทานกิจ
+อุไรวรรณ ปรีประทุม
+อุไรวรรณ พึ่งใหญ่
+อุไรวรรณ แย้มนิยม
+อุไรวรรณ วิจิตรบัณฑิตกุล
+อุไรวรรณ สาครสินธุ์
+อุไรวรรณ หวั่นวะดี
+อุไรวรรณ เอี่ยมปราณีต
+อู๊ด ดำเกิงตระกูล
+อู๋ มาลาเล็ก
+อโณทัย เจตนเสน
+อโณทัย วงศ์เมธีสุเมธ
+อโนชา สุวรรณรัตน
+อโนทัย อัศวประภา
+เอก ชัฏอนันต์
+เอก สยามวาลา
+เอกชัย กองแก้ว
+เอกชัย ฉลองปิยรัตน์
+เอกชัย เดชศิริพันธ์
+เอกชัย บุษยบริบูรณ์โชติ
+เอกชัย ภัทรนุธาพร
+เอกชัย ว่องบรรจงหาร
+เอกชัย สิริชูสินวงศ์
+เอกชัย อัศวโกวิท
+เอกผล อภิชาติพันธุ์กวี
+เอกพร กังวาฬไกรไพศาล
+เอกพันธ์ ช่างเอกวงศ์
+เอกยง แซ่เซียว
+เอกรัศมี อวยสินประเสริฐ
+เอกรินทร์ เบี้ยวไม
+เอกวัฒน์ ชัยวัตร
+เอกศักดิ์ พิสุทธิชานนท์
+เอกสิทธิ์ ใจบุญ
+เอกสิทธิ์ ศิวาวุธ
+เอกเชาวน์ เพิ่มประเสริฐสุข
+เอนก กิจไพศาล
+เอนก จันรอด
+เอนก แซ่โง้ว
+เอนก เทียนเกษม
+เอนก ปวิดาภา
+เอนก โพธิ์นิ่ม
+เอนก ลิขิตตระกูลเลิศ
+เอนก ศรีแสง
+เอนก แสงฉาย
+เอนก อู่บังสิน
+เอมอร กลิ่นมาลา
+เอมอร เฉลิมนนท์
+เอมอร นาคภูมิ
+เอมอร เฟื่องวิทยาการ
+เอมอร ศรีคงศรี
+เอมอร อรุณยงจิต
+เอส เอ็ม
+เอิบลาภ เลิศวิธี
+เอียะเจ็ง แซ่ตั้ง
+เอี่ยม บุญคง
+เอี่ยม อัศวฤทธิ์กุล
+เอี่ยมซ้ง แซ่ตัน
+เอี่ยมเจียง แซ่โต๋ว
+เอี้ยง แซ่โต๊ะ
+เอี้ยมเซี้ย แซ่นิ่ม
+เอี้ยห่างกวง แซ่เอี้ย
+เอื้อ วงษ์สาก้อ
+เอื้อจิตต์ ผลอินทร์
+เอื้อนพร จิรานนท์
+เอื้อมพร กัลป์เสาวภาคย์กุล
+เอื้อมพร ผุดผาด
+เอื้อมพร ไหมพิมพ์
+เอื้ออารี วงศ์วิฑูรยาพร
+เอ็ง แซ่ลิ้ม
+เอ็งยิ้ว แซ่เยี่ยง
+เอ็นดู ศรีบุญเรือง
+แอน แสงศรี
+แอนโทนี่ เตียง
+แอ๋ว กำมะหยี่
+โอภา ภัทรธรรมบาล
+โอภาส เงินเต็มเปี่ยม
+โอภาส ทรัพย์อาภากร
+โอภาส พรหมรัตนพงศ์
+โอภาส ลิลิตกันยากุล
+โอภาส สุพรรณโอชากุล
+โอรส วงษ์สิทธิ์
+โอสถ โกศิน
+โอฬาร พึ่งสนิท
+โอ้วเซ็ง แซ่อั๊ง
+ไอเซนโฮเฟอร์ ไอ อี
+ฮกเฮง แซ่ลี้
+ฮ่งฮวด แซ่โง้ว
+ฮวงเจ็ง แซ่ตั้ง
+ฮวย แซ่หลาย
+ฮ่ออึ้ง แซ่เตียว
+ฮังตี๋ ตั้งมุจลินท์
+ฮั่งเจีย แซ่ตั้ง
+ฮั้งเกียง แซ่เอี้ยว
+ฮั้นง้วน แซ่ฉั่ว
+ฮั่วปิด แซ่อึ้ง
+ฮั้วใช้ แซ่เล้า
+ฮายูรซิงห์ กัมบีร์
+ฮารี่ปาซาน ซาฮี
+ฮิม แซ่หล่อ
+ฮุก พรหมฤทธิเดชา
+ฮุยกุง แซ่ซิ
+ฮุยเง็ก แซ่เอ็ง
+ฮุ่ยฮวง แซ่ตั้ง
+ฮุ้ยลั้ง ประสิทธิลักษณะ
+เฮง ศิริมงคลรัตน์
+เฮม รุ่งสกุล
+เฮียง แซ่อ้าว
+เฮียงกี่ แซ่เหี่ย
+เฮี้ยงซิม แซ่โง้ว
+โฮง เอกธนานันท์
+ไฮ้ เลิศลิขิตธนิตกุล
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt
new file mode 100644
index 0000000..b9b3f27
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt
@@ -0,0 +1,18 @@
+﻿  ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليـا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تـم تبني مواصفة "يونِكود" مــن قبـل قادة الصانعين لأنظمة الحواسيب فـي العالم، مثل شركات آي.بي.إم. (IBM)، أبـل (APPLE)، هِيـْولِـت بـاكـرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِـل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطـريـقـة الرسـمية لتطبيق المقيـاس الـعـالـمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات.
+
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt
new file mode 100644
index 0000000..bd4225f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt
@@ -0,0 +1,20 @@
+What is Unicode?
+
+Unicode provides a unique number for every character,
+no matter what the platform,
+no matter what the program,
+no matter what the language.
+
+Fundamentally, computers just deal with numbers. They store letters and other characters by assigning a number for each one. Before Unicode was invented, there were hundreds of different encoding systems for assigning these numbers. No single encoding could contain enough characters: for example, the European Union alone requires several different encodings to cover all its languages. Even for a single language like English no single encoding was adequate for all the letters, punctuation, and technical symbols in common use.
+
+These encoding systems also conflict with one another. That is, two encodings can use the same number for two different characters, or use different numbers for the same character. Any given computer (especially servers) needs to support many different encodings; yet whenever data is passed between different encodings or platforms, that data always runs the risk of corruption.
+Unicode is changing all that!
+
+Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.
+
+Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.
+About the Unicode Consortium
+
+The Unicode Consortium is a non-profit organization founded to develop, extend and promote use of the Unicode Standard, which specifies the representation of text in modern software products and standards. The membership of the consortium represents a broad spectrum of corporations and organizations in the computer and information processing industry. The consortium is supported financially solely through membership dues. Membership in the Unicode Consortium is open to organizations and individuals anywhere in the world who support the Unicode Standard and wish to assist in its extension and implementation.
+
+For more information, see the Glossary, Unicode Enabled Products, Technical Introduction and Useful Resources.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt
new file mode 100644
index 0000000..46b7791
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt
@@ -0,0 +1,20 @@
+﻿Qu'est ce qu'Unicode?
+
+Unicode spécifie un numéro unique pour chaque caractère,
+quelle que soit la plate-forme,
+quel que soit le logiciel,
+quelle que soit la langue.
+
+Fondamentalement, les ordinateurs ne comprennent que les nombres. Ils codent les lettres et autres caractères sous formes de nombres. Avant l'invention d'Unicode, des centaines de systèmes de codage de caractères ont été créés. Pas un seul d'entre eux n'était satisfaisant : par exemple, l'Union Européenne a besoin de plusieurs systèmes de codage pour couvrir toutes ses langues d'usage. Même pour une seule langue comme le français, aucun système de codage ne couvrait toutes les lettres, les signes de ponctuation et les symboles techniques en usage courant.
+
+Ces systèmes de codage sont souvent incompatibles entre eux. Ainsi, deux systèmes peuvent utiliser le même nombre pour deux caractères différents ou utiliser différents nombres pour le même caractère. Les ordinateurs, et plus particulièrement les serveurs, doivent supporter plusieurs systèmes de codage de caractères, ce qui crée un risque de corruption des données à chaque transition.
+Unicode transforme tout cela !
+
+Unicode spécifie un numéro unique pour chaque caractère, quelle que soit la plate-forme, quel que soit le logiciel et quelle que soit la langue. Le standard Unicode a été choisi par des pionniers technologiques tels que Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys et bien d'autres. Unicode est exigé par de nombreux standards récents tels que XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc. Le développement d'Unicode est synchronisé avec celui de la norme ISO/CÉI 10646, la version 3.0 d'Unicode est identique code pour code avec l'ISO/CÉI 10646:2000 mais contient de nombreux éléments supplémentaires d'implantation. Unicode est utilisé dans de nombreux systèmes d'exploitation, dans tous les navigateurs récents, et dans de nombreux autres produits. L'apparition du standard Unicode, ainsi que la disponibilité d'outils le gérant, sont parmi les faits les plus marquants de la globalisation récente du développement logiciel.
+
+L'incorporation d'Unicode dans les applications client-serveur, les applications distribuées et les sites Internet permet une simplification de l'architecture et une réduction des coûts par rapport à l'utilisation des systèmes de codage traditionnels. Grâce à Unicode, un seul logiciel ou site Internet peut satisfaire simultanément et sans modification les demandes de plusieurs plate-formes, langues et pays. Unicode permet aussi à des logiciels de provenance variée d'échanger des caractères sans pertes de données.
+À propos du Consortium Unicode
+
+Le Consortium Unicode est une organisation sans but lucratif, ayant pour mission de développer, d'étendre et de promouvoir Unicode. Les membres du consortium sont issus d'un large éventail d'entreprises et d'organisations dans le domaine de l'informatique et des technologies de l'information. Le consortium est financé uniquement par les cotisations de ses membres. L'adhésion au consortium Unicode est ouverte à toutes les organisations et individus qui soutiennent le standard Unicode et souhaitent favoriser son extension et son utilisation.
+
+On trouvera des renseignements additionnels dans le glossaire, la liste partielle de produits gérant Unicode, l'aperçu technique et les ressources utiles [liens en Anglais].
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt
new file mode 100644
index 0000000..6aee92c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt
@@ -0,0 +1,20 @@
+﻿Τι είναι το Unicode;
+
+Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+ανεξάρτητα από το λειτουργικό σύστημα,
+ανεξάρτητα από το λογισμικό,
+ανεξάρτητα από την γλώσσα.
+
+Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+Το Unicode αλλάζει αυτή την κατάσταση!
+
+Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών.
+
+Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης.
+Σχετικά με το Κονσόρτιουμ Unicode
+
+Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της.
+
+Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt
new file mode 100644
index 0000000..9d52a32
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt
@@ -0,0 +1,20 @@
+﻿מה זה יוניקוד (Unicode)?
+
+יוניקוד מקצה מספר ייחודי לכל תו,
+לא משנה על איזו פלטפורמה,
+לא משנה באיזו תוכנית,
+ולא משנה באיזו שפה.
+
+באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף.
+
+מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו.
+יוניקוד משנה את כל זה!
+
+יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה.
+
+שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו.
+פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium)
+
+הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו.
+
+למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית].
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt
new file mode 100644
index 0000000..055f94d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt
@@ -0,0 +1,20 @@
+﻿यूनिकोड क्या है?
+
+यूनिकोड प्रत्येक अक्षर के लिए एक विशेष नम्बर प्रदान करता है,
+चाहे कोई भी प्लैटफॉर्म हो,
+चाहे कोई भी प्रोग्राम हो,
+चाहे कोई भी भाषा हो।
+
+कम्प्यूटर, मूल रूप से, नंबरों से सम्बंध रखते हैं। ये प्रत्येक अक्षर और वर्ण के लिए एक नंबर निर्धारित करके अक्षर और वर्ण संग्रहित करते हैं। यूनिकोड का आविष्कार होने से पहले, ऐसे नंबर देने के लिए सैंकडों विभिन्न संकेत लिपि प्रणालियां थीं। किसी एक संकेत लिपि में पर्याप्त अक्षर नहीं हो सकते हैं : उदाहरण के लिए, यूरोपिय संघ को अकेले ही, अपनी सभी भाषाऒं को कवर करने के लिए अनेक विभिन्न संकेत लिपियों की आवश्यकता होती है। अंग्रेजी जैसी भाषा के लिए भी, सभी अक्षरों, विरामचिन्हों और सामान्य प्रयोग के तकनीकी प्रतीकों हेतु एक ही संकेत लिपि पर्याप्त नहीं थी।
+
+ये संकेत लिपि प्रणालियां परस्पर विरोधी भी हैं। इसीलिए, दो संकेत लिपियां दो विभिन्न अक्षरों के लिए, एक ही नंबर प्रयोग कर सकती हैं, अथवा समान अक्षर के लिए विभिन्न नम्बरों का प्रयोग कर सकती हैं। किसी भी कम्प्यूटर (विशेष रूप से सर्वर) को विभिन्न संकेत लिपियां संभालनी पड़ती है; फिर भी जब दो विभिन्न संकेत लिपियों अथवा प्लैटफॉर्मों के बीच डाटा भेजा जाता है तो उस डाटा के हमेशा खराब होने का जोखिम रहता है।
+यूनिकोड से यह सब कुछ बदल रहा है!
+
+यूनिकोड, प्रत्येक अक्षर के लिए एक विशेष नंबर प्रदान करता है, चाहे कोई भी प्लैटफॉर्म हो, चाहे कोई भी प्रोग्राम हो, चाहे कोई भी भाषा हो। यूनिकोड स्टैंडर्ड को ऐपल, एच.पी., आई.बी.एम., जस्ट सिस्टम, माईक्रोसॉफ्ट, औरेकल, सैप, सन, साईबेस, यूनिसिस जैसी उद्योग की प्रमुख कम्पनियों और कई अन्य ने अपनाया है। यूनिकोड की आवश्यकता आधुनिक मानदंडों, जैसे एक्स.एम.एल., जावा, एकमा स्क्रिप्ट (जावा स्क्रिप्ट), एल.डी.ए.पी., कोर्बा 3.0, डब्ल्यू.एम.एल. के लिए होती है और यह आई.एस.ओ./आई.ई.सी. 10646 को लागू करने का अधिकारिक तरीका है। यह कई संचालन प्रणालियों, सभी आधुनिक ब्राउजरों और कई अन्य उत्पादों में होता है। यूनिकोड स्टैंडर्ड की उत्पति और इसके सहायक उपकरणों की उपलब्धता, हाल ही के अति महत्वपूर्ण विश्वव्यापी सॉफ्टवेयर टेक्नोलॉजी रुझानों में से हैं।
+
+यूनिकोड को ग्राहक-सर्वर अथवा बहु-आयामी उपकरणों और वेबसाइटों में शामिल करने से, परंपरागत उपकरणों के प्रयोग की अपेक्षा खर्च में अत्यधिक बचत होती है। यूनिकोड से एक ऐसा अकेला सॉफ्टवेयर उत्पाद अथवा अकेला वेबसाइट मिल जाता है, जिसे री-इंजीनियरिंग के बिना विभिन्न प्लैटफॉर्मों, भाषाओं और देशों में उपयोग किया जा सकता है। इससे डाटा को बिना किसी बाधा के विभिन्न प्रणालियों से होकर ले जाया जा सकता है।
+यूनिकोड कन्सॉर्शियम के बारे में
+
+यूनिकोड कन्सॉर्शियम, लाभ न कमाने वाला एक संगठन है जिसकी स्थापना यूनिकोड स्टैंडर्ड, जो आधुनिक सॉफ्टवेयर उत्पादों और मानकों में पाठ की प्रस्तुति को निर्दिष्ट करता है, के विकास, विस्तार और इसके प्रयोग को बढ़ावा देने के लिए की गई थी। इस कन्सॉर्शियम के सदस्यों में, कम्प्यूटर और सूचना उद्योग में विभिन्न निगम और संगठन शामिल हैं। इस कन्सॉर्शियम का वित्तपोषण पूर्णतः सदस्यों के शुल्क से किया जाता है। यूनिकोड कन्सॉर्शियम में सदस्यता, विश्व में कहीं भी स्थित उन संगठनों और व्यक्तियों के लिए खुली है जो यूनिकोड का समर्थन करते हैं और जो इसके विस्तार और कार्यान्वयन में सहायता करना चाहते हैं।
+
+अधिक जानकारी के लिए, शब्दावली, सैम्पल यूनिकोड-सक्षम उत्पाद, तकनीकी परिचय और उपयोगी स्रोत देखिए।
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt
new file mode 100644
index 0000000..b420ee4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt
@@ -0,0 +1,20 @@
+﻿ユニコードとは何か？
+
+ユニコードは、すべての文字に固有の番号を付与します
+プラットフォームには依存しません
+プログラムにも依存しません
+言語にも依存しません
+
+コンピューターは、本質的には数字しか扱うことができません。コンピューターは、文字や記号などのそれぞれに番号を割り振ることによって扱えるようにします。ユニコードが出来るまでは、これらの番号を割り振る仕組みが何百種類も存在しました。どの一つをとっても、十分な文字を含んではいませんでした。例えば、欧州連合一つを見ても、そのすべての言語をカバーするためには、いくつかの異なる符号化の仕組みが必要でした。英語のような一つの言語に限っても、一つだけの符号化の仕組みでは、一般的に使われるすべての文字、句読点、技術的な記号などを扱うには不十分でした。
+
+これらの符号化の仕組みは、相互に矛盾するものでもありました。二つの異なる符号化の仕組みが、二つの異なる文字に同一の番号を付けることもできるし、同じ文字に異なる番号を付けることもできるのです。どのようなコンピューターも（特にサーバーは）多くの異なった符号化の仕組みをサポートする必要があります。たとえデータが異なる符号化の仕組みやプラットフォームを通過しても、いつどこでデータが乱れるか分からない危険を冒すことのなるのです。
+ユニコードはすべてを変えます
+
+ユニコードは、プラットフォームに係わらず、プログラムに係わらず、言語に係わらず、すべての文字に独立した番号を与えます。ユニコード標準は、アップル、ヒューレットパッカード、IBM、ジャストシステム、マイクロソフト、オラクル、SAP、サン、サイベースなどの産業界の主導的企業と他の多くの企業に採用されています。ユニコードは、XML、Java、ECMAScript(JavaScript)、LDAP、CORBA 3.0などの最先端の標準の前提となっており、ユニコードを実装すれば、ISO/IEC 10646に適合することになります。ユニコードは、多くのオペレーティングシステムとすべての最新のブラウザーと他の多くの製品でサポートされています。ユニコード標準の出現とユニコードをサポートするツール類は、昨今顕著になっているソフトウエア技術のグローバル化の流れに対して、特に役に立っています。
+
+ユニコードをクライアントサーバー型のアプリケーションや、多層構造を持つアプリケーション、ウェブサイトなどにに組み込むことで、従来の文字コードセットを用いるよりも明らかなコスト削減が可能です。ユニコードは、単一のソフトウエア製品、単一のウェブサイトに、何ら手を加えることなく、複数のプラットフォーム、複数の言語、複数の国をカバーすることが出来るのです。ユニコードは、データが多くの異なるシステムの間を、何の乱れもなしに転送することを可能とするのです。
+ユニコードコンソーシアムについて
+
+ユニコードコンソーシアムは、最新のソフトウエア製品と標準においてテキストを表現することを意味する“ユニコード標準”の構築、発展、普及、利用促進を目的として設立された非営利組織です。同コンソーシアムの会員は、コンピューターと情報処理に係わる広汎な企業や組織から構成されています。同コンソーシアムは、財政的には、純粋に会費のみによって運営されています。ユニコード標準を支持し、その拡張と実装を支援する世界中の組織や個人は、だれもがユニコードコンソーシアムの会員なることができます。
+
+より詳しいことをお知りになりたい方は、Glossary, Unicode-Enabled Products, Technical Introduction および Useful Resourcesをご参照ください。
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt
new file mode 100644
index 0000000..18a55e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt
@@ -0,0 +1,20 @@
+﻿유니코드에 대해 ?
+
+어떤 플랫폼,
+어떤 프로그램,
+어떤 언어에도 상관없이
+유니코드는 모든 문자에 대해 고유 번호를 제공합니다.
+
+기본적으로 컴퓨터는 숫자만 처리합니다. 글자나 다른 문자에도 숫자를 지정하여 저장합니다. 유니코드가 개발되기 전에는 이러한 숫자를 지정하기 위해 수백 가지의 다른 기호화 시스템을 사용했습니다. 단일 기호화 방법으로는 모든 문자를 포함할 수 없었습니다. 예를 들어 유럽 연합에서만 보더라도 모든 각 나라별 언어를 처리하려면 여러 개의 다른 기호화 방법이 필요합니다. 영어와 같은 단일 언어의 경우도 공통적으로 사용되는 모든 글자, 문장 부호 및 테크니컬 기호에 맞는 단일 기호화 방법을 갖고 있지 못하였습니다.
+
+이러한 기호화 시스템은 또한 다른 기호화 시스템과 충돌합니다. 즉 두 가지 기호화 방법이 두 개의 다른 문자에 대해 같은 번호를 사용하거나 같은 문자에 대해 다른 번호를 사용할 수 있습니다. 주어진 모든 컴퓨터(특히 서버)는 서로 다른 여러 가지 기호화 방법을 지원해야 합니다. 그러나, 데이터를 서로 다른 기호화 방법이나 플랫폼 간에 전달할 때마다 그 데이터는 항상 손상의 위험을 겪게 됩니다.
+유니코드로 모든 것을 해결할 수 있습니다!
+
+유니코드는 사용 중인 플랫폼, 프로그램, 언어에 관계없이 문자마다 고유한 숫자를 제공합니다. 유니코드 표준은 Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys 및 기타 여러 회사와 같은 업계 선두주자에 의해 채택되었습니다. 유니코드는 XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML 등과 같이 현재 널리 사용되는 표준에서 필요하며 이는 ISO/IEC 10646을 구현하는 공식적인 방법입니다. 이는 많은 운영 체제, 요즘 사용되는 모든 브라우저 및 기타 많은 제품에서 지원됩니다. 유니코드 표준의 부상과 이를 지원하는 도구의 가용성은 최근 전 세계에 불고 있는 기술 경향에서 가장 중요한 부분을 차지하고 있습니다.
+
+유니코드를 클라이언트-서버 또는 다중-연결 응용 프로그램과 웹 사이트에 통합하면 레거시 문자 세트 사용에 있어서 상당한 비용 절감 효과가 나타납니다. 유니코드를 통해 리엔지니어링 없이 다중 플랫폼, 언어 및 국가 간에 단일 소프트웨어 플랫폼 또는 단일 웹 사이트를 목표로 삼을 수 있습니다. 이를 사용하면 데이터를 손상 없이 여러 시스템을 통해 전송할 수 있습니다.
+유니코드 콘소시엄에 대해
+
+유니코드 콘소시엄은 비영리 조직으로서 현대 소프트웨어 제품과 표준에서 텍스트의 표현을 지정하는 유니코드 표준의 사용을 개발하고 확장하며 장려하기 위해 세워졌습니다. 콘소시엄 멤버쉽은 컴퓨터와 정보 처리 산업에 종사하고 있는 광범위한 회사 및 조직의 범위를 나타냅니다. 콘소시엄의 재정은 전적으로 회비에 의해 충당됩니다. 유니코드 컨소시엄에서의 멤버쉽은 전 세계 어느 곳에서나 유니코드 표준을 지원하고 그 확장과 구현을 지원하고자하는 조직과 개인에게 개방되어 있습니다.
+
+더 자세한 내용은 용어집, 예제 유니코드 사용 가능 제품, 기술 정보 및 기타 유용한 정보를 참조하십시오.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt
new file mode 100644
index 0000000..50f9a46
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt
@@ -0,0 +1,20 @@
+﻿什么是Unicode(统一码)?
+
+Unicode给每个字符提供了一个唯一的数字，
+不论是什么平台，
+不论是什么程序，
+不论是什么语言。
+
+基本上，计算机只是处理数字。它们指定一个数字，来储存字母或其他字符。在创造Unicode之前，有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符：例如，单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言，例如英语，也没有哪一个编码可以适用于所有的字母，标点符号，和常用的技术符号。
+
+这些编码系统也会互相冲突。也就是说，两种编码可能使用相同的数字代表两个不同的字符，或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码，但是，不论什么时候数据通过不同的编码或平台之间，那些数据总会有损坏的危险。
+Unicode正在改变所有这一切！
+
+Unicode给每个字符提供了一个唯一的数字，不论是什么平台，不论是什么程序，不论什么语言。Unicode标准已经被这些工业界的领导们所采用，例如：Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode，例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等，并且，Unicode是实现ISO/IEC 10646的正规方式。许多操作系统，所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在，是近来全球软件技术最重要的发展趋势。
+
+将Unicode与客户服务器或多层应用程序和网站结合，比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台，语言和国家，而不需要重建。它可将数据传输到许多不同的系统，而无损坏。
+关于Unicode学术学会
+
+Unicode学术学会是一个非盈利的组织，是为发展，扩展和推广使用Unicode标准而建立的，Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。
+
+欲知更多信息，请参阅术语词汇表，Unicode产品样本，技术简介和参考资料。
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/dateformatperf.pl b/src/com/ibm/icu/dev/test/perf/dateformatperf.pl
new file mode 100755
index 0000000..f8a6cfa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/dateformatperf.pl
@@ -0,0 +1,496 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.DateFormatPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                 ['TestJDKConstruction',     'TestICUConstruction'],
+                 ['TestJDKParse',            'TestICUParse'],
+                 ['TestJDKFormat',           'TestICUFormat']
+               );
+# Patterns which define the set of characters used for testing.
+my @OPTIONS = (
+#                 locale    pattern              date string
+                [ "en_US",  "dddd MMM yyyy",     "15 Jan 2007"],
+                [ "sw_KE",  "dddd MMM yyyy",     "15 Jan 2007"],
+                [ "en_US",  "HH:mm",             "13:13"],
+                [ "en_US",  "HH:mm zzzz",        "13:13 Pacific Standard Time"],
+                [ "en_US",  "HH:mm z",           "13:13 PST"],
+                [ "en_US",  "HH:mm Z",           "13:13 -0800"],
+              );
+
+my $THREADS;        # number of threads (input from command-line args)
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+# run all tests with the specified number of threads from command-line input
+# (if there is no arguments, use $THREADS = 1)
+foreach my $arg ($#ARGV >= 0 ? @ARGV : "1") {
+  $THREADS = $arg;
+  main();
+}
+
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $threads = ($THREADS > 1) ? "($THREADS threads)" : "";
+    my $title = "ICU4J Performance Test $threads $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], \"@$pat[1]\", \"@$pat[2]\"</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -L @$pat[0] \"@$pat[1]\" \"@$pat[2]\" -r $THREADS";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl b/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl
new file mode 100755
index 0000000..ceb2b92
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl
@@ -0,0 +1,491 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.DecimalFormatPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                 ['TestJDKConstruction',     'TestICUConstruction'],
+                 ['TestJDKParse',            'TestICUParse'],
+                 ['TestJDKFormat',           'TestICUFormat']
+               );
+# Patterns which define the set of characters used for testing.
+my @OPTIONS = (
+#                 locale    pattern      date string
+                [ "en_US",  "#,###.##",  "1,234.56"],
+                [ "de_DE",  "#,###.##",  "1.234,56"],
+              );
+
+my $THREADS;        # number of threads (input from command-line args)
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+# run all tests with the specified number of threads from command-line input
+# (if there is no arguments, use $THREADS = 1)
+foreach my $arg ($#ARGV >= 0 ? @ARGV : "1") {
+  $THREADS = $arg;
+  main();
+}
+
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $threads = ($THREADS > 1) ? "($THREADS threads)" : "";
+    my $title = "ICU4J Performance Test $threads $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], \"@$pat[1]\", \"@$pat[2]\"</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -L @$pat[0] \"@$pat[1]\" \"@$pat[2]\" -r $THREADS";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl
new file mode 100755
index 0000000..00b42cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+my $options = {
+	       "title"=>"Normalization performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"C:\\svn-icu4j\\src\\com\\ibm\\icu\\dev\\test\\perf\\data\\collation",
+	       "outputDir"=>"svn-icu4j\\results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -cp svn-icu4j_3-6/classes $TESTCLASS -b -e UTF-8";
+my $jvm2 = "java -cp svn-icu4j/classes $TESTCLASS -b -e UTF-8";
+
+my $dataFiles = {
+		 "",
+		 [
+		  "TestNames_Asian.txt",
+		  "TestNames_Chinese.txt",
+		  "TestNames_Japanese.txt",
+		  "TestNames_Japanese_h.txt",
+		  "TestNames_Japanese_k.txt",
+		  "TestNames_Korean.txt",
+		  "TestNames_Latin.txt",
+		  "TestNames_SerbianSH.txt",
+		  "TestNames_SerbianSR.txt",
+		  "TestNames_Thai.txt",
+		  "Testnames_Russian.txt",
+#		  "th18057.txt",
+#		  "thesis.txt",
+#		  "vfear11a.txt",
+		 ]
+		};
+
+
+my $tests = { 
+#	     "NFC_NFD_Text",  ["$jvm1 TestICU_NFC_NFD_Text"  ,  "$jvm2 TestICU_NFC_NFD_Text" ],
+	     "NFC_NFC_Text",  ["$jvm1 TestICU_NFC_NFC_Text"  ,  "$jvm2 TestICU_NFC_NFC_Text" ],
+	     "NFC_Orig_Text", ["$jvm1 TestICU_NFC_Orig_Text" ,  "$jvm2 TestICU_NFC_Orig_Text"],
+	     "NFD_NFD_Text",  ["$jvm1 TestICU_NFD_NFD_Text"  ,  "$jvm2 TestICU_NFD_NFD_Text" ],
+	     "NFD_NFC_Text",  ["$jvm1 TestICU_NFD_NFC_Text"  ,  "$jvm2 TestICU_NFD_NFC_Text" ],
+	     "NFD_Orig_Text", ["$jvm1 TestICU_NFD_Orig_Text" ,  "$jvm2 TestICU_NFD_Orig_Text"],
+	     ##
+	     "QC_NFC_NFD_Text",  ["$jvm1 TestQC_NFC_NFD_Text"  ,  "$jvm2 TestQC_NFC_NFD_Text" ],
+	     "QC_NFC_NFC_Text",  ["$jvm1 TestQC_NFC_NFC_Text"  ,  "$jvm2 TestQC_NFC_NFC_Text" ],
+	     "QC_NFC_Orig_Text", ["$jvm1 TestQC_NFC_Orig_Text" ,  "$jvm2 TestQC_NFC_Orig_Text"],
+	     "QC_NFD_NFD_Text",  ["$jvm1 TestQC_NFD_NFD_Text"  ,  "$jvm2 TestQC_NFD_NFD_Text" ],
+	     "QC_NFD_NFC_Text",  ["$jvm1 TestQC_NFD_NFC_Text"  ,  "$jvm2 TestQC_NFD_NFC_Text" ],
+	     "QC_NFD_Orig_Text", ["$jvm1 TestQC_NFD_Orig_Text" ,  "$jvm2 TestQC_NFD_Orig_Text"],
+	     ##
+	     "IsNormalized_NFC_NFD_Text",  ["$jvm1 TestIsNormalized_NFC_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFD_Text" ],
+	     "IsNormalized_NFC_NFC_Text",  ["$jvm1 TestIsNormalized_NFC_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFC_Text" ],
+	     "IsNormalized_NFC_Orig_Text", ["$jvm1 TestIsNormalized_NFC_Orig_Text" ,  "$jvm2 TestIsNormalized_NFC_Orig_Text"],
+	     "IsNormalized_NFD_NFD_Text",  ["$jvm1 TestIsNormalized_NFD_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFD_Text" ],
+	     "IsNormalized_NFD_NFC_Text",  ["$jvm1 TestIsNormalized_NFD_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFC_Text" ],
+	     "IsNormalized_NFD_Orig_Text", ["$jvm1 TestIsNormalized_NFD_Orig_Text" ,  "$jvm2 TestIsNormalized_NFD_Orig_Text"]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl
new file mode 100755
index 0000000..9130a11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib './icu4jsrc_3_4/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+my $options = {
+	       "title"=>"Normalization performance regression (ICU4J 3.2 and 3.4)",
+	       "headers"=>"ICU4J32 ICU4J34",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       #"outputType"=>"HTML",
+	       "dataDir"=>"c:\\src\\perf\\data",
+	       "outputDir"=>"results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -cp ./icu4jsrc_3_2/icu4j32.jar;./icu4jsrc_3_2/perf32.jar $TESTCLASS -l -e UTF-8";
+my $jvm2 = "java -cp ./icu4jsrc_3_4/icu4j34.jar;./icu4jsrc_3_4/perf34.jar $TESTCLASS -l -e UTF-8";
+
+my $dataFiles = {
+		 "",
+		 [
+		  "TestNames_Asian.txt",
+		  "TestNames_Chinese.txt",
+		  "TestNames_Japanese.txt",
+		  "TestNames_Japanese_h.txt",
+		  "TestNames_Japanese_k.txt",
+		  "TestNames_Korean.txt",
+		  "TestNames_Latin.txt",
+		  "TestNames_SerbianSH.txt",
+		  "TestNames_SerbianSR.txt",
+		  "TestNames_Thai.txt",
+		  "Testnames_Russian.txt",
+#		  "th18057.txt",
+#		  "thesis.txt",
+#		  "vfear11a.txt",
+		 ]
+		};
+
+
+my $tests = { 
+	     "NFC_NFD_Text",  ["$jvm1 TestICU_NFC_NFD_Text"  ,  "$jvm2 TestICU_NFC_NFD_Text" ],
+	     "NFC_NFC_Text",  ["$jvm1 TestICU_NFC_NFC_Text"  ,  "$jvm2 TestICU_NFC_NFC_Text" ],
+	     "NFC_Orig_Text", ["$jvm1 TestICU_NFC_Orig_Text" ,  "$jvm2 TestICU_NFC_Orig_Text"],
+	     "NFD_NFD_Text",  ["$jvm1 TestICU_NFD_NFD_Text"  ,  "$jvm2 TestICU_NFD_NFD_Text" ],
+	     "NFD_NFC_Text",  ["$jvm1 TestICU_NFD_NFC_Text"  ,  "$jvm2 TestICU_NFD_NFC_Text" ],
+	     "NFD_Orig_Text", ["$jvm1 TestICU_NFD_Orig_Text" ,  "$jvm2 TestICU_NFD_Orig_Text"],
+	     ##
+	     "QC_NFC_NFD_Text",  ["$jvm1 TestQC_NFC_NFD_Text"  ,  "$jvm2 TestQC_NFC_NFD_Text" ],
+	     "QC_NFC_NFC_Text",  ["$jvm1 TestQC_NFC_NFC_Text"  ,  "$jvm2 TestQC_NFC_NFC_Text" ],
+	     "QC_NFC_Orig_Text", ["$jvm1 TestQC_NFC_Orig_Text" ,  "$jvm2 TestQC_NFC_Orig_Text"],
+	     "QC_NFD_NFD_Text",  ["$jvm1 TestQC_NFD_NFD_Text"  ,  "$jvm2 TestQC_NFD_NFD_Text" ],
+	     "QC_NFD_NFC_Text",  ["$jvm1 TestQC_NFD_NFC_Text"  ,  "$jvm2 TestQC_NFD_NFC_Text" ],
+	     "QC_NFD_Orig_Text", ["$jvm1 TestQC_NFD_Orig_Text" ,  "$jvm2 TestQC_NFD_Orig_Text"],
+	     ##
+	     "IsNormalized_NFC_NFD_Text",  ["$jvm1 TestIsNormalized_NFC_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFD_Text" ],
+	     "IsNormalized_NFC_NFC_Text",  ["$jvm1 TestIsNormalized_NFC_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFC_Text" ],
+	     "IsNormalized_NFC_Orig_Text", ["$jvm1 TestIsNormalized_NFC_Orig_Text" ,  "$jvm2 TestIsNormalized_NFC_Orig_Text"],
+	     "IsNormalized_NFD_NFD_Text",  ["$jvm1 TestIsNormalized_NFD_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFD_Text" ],
+	     "IsNormalized_NFD_NFC_Text",  ["$jvm1 TestIsNormalized_NFD_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFC_Text" ],
+	     "IsNormalized_NFD_Orig_Text", ["$jvm1 TestIsNormalized_NFD_Orig_Text" ,  "$jvm2 TestIsNormalized_NFD_Orig_Text"]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/normperf.pl b/src/com/ibm/icu/dev/test/perf/normperf.pl
new file mode 100755
index 0000000..60cf55b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normperf.pl
@@ -0,0 +1,546 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                ['TestJDK_NFD_NFC_Text',  'TestICU_NFD_NFC_Text'],
+                ['TestJDK_NFC_NFC_Text',  'TestICU_NFC_NFC_Text'],
+#               ['TestJDK_NFC_NFD_Text',  'TestICU_NFC_NFD_Text'],
+                ['TestJDK_NFC_Orig_Text', 'TestICU_NFC_Orig_Text'],
+                ['TestJDK_NFD_NFC_Text',  'TestICU_NFD_NFC_Text'],
+                ['TestJDK_NFD_NFD_Text',  'TestICU_NFD_NFD_Text'],
+                ['TestJDK_NFD_Orig_Text', 'TestICU_NFD_Orig_Text'], 
+               );
+
+# Patterns which define the set of characters used for testing.
+
+my $SOURCEDIR ="src/com/ibm/icu/dev/test/perf/data/collation/";
+
+my @OPTIONS = (
+#                      src text                     src encoding  mode  
+                    [ "TestNames_SerbianSH.txt",    "UTF-8", "b"],
+#                   [ "arabic.txt",                 "UTF-8", "b"],
+#                   [ "french.txt",                 "UTF-8", "b"],
+#                   [ "greek.txt",                  "UTF-8", "b"],
+#                   [ "hebrew.txt",                 "UTF-8", "b"],
+#                   [ "hindi.txt" ,                 "UTF-8", "b"],
+#                   [ "japanese.txt",               "UTF-8", "b"],
+#                   [ "korean.txt",                 "UTF-8", "b"],
+#                   [ "s-chinese.txt",              "UTF-8", "b"],
+#                   [ "french.txt",                 "UTF-8", "b"],
+#                   [ "greek.txt",                  "UTF-8", "b"],
+#                   [ "hebrew.txt",                 "UTF-8", "b"],
+#                   [ "hindi.txt" ,                 "UTF-8", "b"],
+#                   [ "japanese.txt",               "UTF-8", "b"],
+#                   [ "korean.txt",                 "UTF-8", "b"],
+#                   [ "s-chinese.txt",              "UTF-8", "b"],
+#                   [ "arabic.html",                "UTF-8", "b"],
+#                   [ "czech.html",                 "UTF-8", "b"],
+#                   [ "danish.html",                "UTF-8", "b"],
+#                   [ "english.html",               "UTF-8", "b"],
+#                   [ "esperanto.html",             "UTF-8", "b"],
+#                   [ "french.html",                "UTF-8", "b"],
+#                   [ "georgian.html",              "UTF-8", "b"],
+#                   [ "german.html",                "UTF-8", "b"],
+#                   [ "greek.html",                 "UTF-8", "b"],
+#                   [ "hebrew.html",                "UTF-8", "b"],
+#                   [ "hindi.html",                 "UTF-8", "b"],
+#                   [ "icelandic.html",             "UTF-8", "b"],
+#                   [ "interlingua.html",           "UTF-8", "b"],
+#                   [ "italian.html",               "UTF-8", "b"],
+#                   [ "japanese.html",              "UTF-8", "b"],
+#                   [ "korean.html",                "UTF-8", "b"],
+#                   [ "lithuanian.html",            "UTF-8", "b"],
+#                   [ "maltese.html",               "UTF-8", "b"],
+#                   [ "persian.html",               "UTF-8", "b"],
+#                   [ "polish.html",                "UTF-8", "b"],
+#                   [ "portuguese.html",            "UTF-8", "b"],
+#                   [ "romanian.html",              "UTF-8", "b"],
+#                   [ "russian.html",               "UTF-8", "b"],
+#                   [ "s-chinese.html",             "UTF-8", "b"],
+#                   [ "spanish.html",               "UTF-8", "b"],
+#                   [ "swedish.html",               "UTF-8", "b"],
+#                   [ "t-chinese.html",             "UTF-8", "b"],
+#                   [ "welsh.html",                 "UTF-8", "b"],
+                    [ "TestNames_Asian.txt",        "UTF-8", "l"],
+                    [ "TestNames_Chinese.txt",      "UTF-8", "l"],
+                    [ "TestNames_Japanese.txt",     "UTF-8", "l"],
+                    [ "TestNames_Japanese_h.txt",   "UTF-8", "l"],
+                    [ "TestNames_Japanese_k.txt",   "UTF-8", "l"],
+                    [ "TestNames_Korean.txt",       "UTF-8", "l"],
+                    [ "TestNames_Latin.txt",        "UTF-8", "l"],
+                    [ "TestNames_SerbianSH.txt",    "UTF-8", "l"],
+                    [ "TestNames_SerbianSR.txt",    "UTF-8", "l"],
+                    [ "TestNames_Thai.txt",         "UTF-8", "l"],
+                    [ "Testnames_Russian.txt",      "UTF-8", "l"], 
+              );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], @$pat[2]</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] in @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $fileName = $SOURCEDIR . @$pat[0] ; 
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -f $fileName -e @$pat[1] -@$pat[2]";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm
new file mode 100644
index 0000000..ed99311
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm
@@ -0,0 +1,139 @@
+#!/usr/local/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+package Dataset;
+use Statistics::Descriptive;
+use Statistics::Distributions;
+use strict;
+
+# Create a new Dataset with the given data.
+sub new {
+    my ($class) = shift;
+    my $self = bless {
+        _data => \@_,
+        _scale => 1.0,
+        _mean => 0.0,
+        _error => 0.0,
+    }, $class;
+
+    my $n = @_;
+    
+    if ($n >= 1) {
+        my $stats = Statistics::Descriptive::Full->new();
+        $stats->add_data(@{$self->{_data}});
+        $self->{_mean} = $stats->mean();
+
+        if ($n >= 2) {
+            # Use a t distribution rather than Gaussian because (a) we
+            # assume an underlying normal dist, (b) we do not know the
+            # standard deviation -- we estimate it from the data, and (c)
+            # we MAY have a small sample size (also works for large n).
+            my $t = Statistics::Distributions::tdistr($n-1, 0.005);
+            $self->{_error} = $t * $stats->standard_deviation();
+        }
+    }
+
+    $self;
+}
+
+# Set a scaling factor for all data; 1.0 means no scaling.
+# Scale must be > 0.
+sub setScale {
+    my ($self, $scale) = @_;
+    $self->{_scale} = $scale;
+}
+
+# Multiply the scaling factor by a value.
+sub scaleBy {
+    my ($self, $a) = @_;
+    $self->{_scale} *= $a;
+}
+
+# Return the mean.
+sub getMean {
+    my $self = shift;
+    return $self->{_mean} * $self->{_scale};
+}
+
+# Return a 99% error based on the t distribution.  The dataset
+# is desribed as getMean() +/- getError().
+sub getError {
+    my $self = shift;
+    return $self->{_error} * $self->{_scale};
+}
+
+# Divide two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub divide {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $minratio = ($self->{_mean} - $self->{_error}) /
+                   ($rhs->{_mean} + $rhs->{_error});
+    my $maxratio = ($self->{_mean} + $self->{_error}) /
+                   ($rhs->{_mean} - $rhs->{_error});
+
+    my $result = Dataset->new();
+    $result->{_mean} = ($minratio + $maxratio) / 2;
+    $result->{_error} = $result->{_mean} - $minratio;
+    $result->{_scale} = $self->{_scale} / $rhs->{_scale};
+    $result;
+}
+
+# subtracts two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub subtract {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean} - $rhs->{_mean};
+    $result->{_error} = $self->{_error} + $rhs->{_error};
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# adds two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub add {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean} + $rhs->{_mean};
+    $result->{_error} = $self->{_error} + $rhs->{_error};
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub divideByScalar {
+    my $self = shift;
+    my $s = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean}/$s;
+    $result->{_error} = $self->{_error}/$s;
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub multiplyByScalar {
+    my $self = shift;
+    my $s = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean}*$s;
+    $result->{_error} = $self->{_error}*$s;
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+1;
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm
new file mode 100644
index 0000000..20d6075
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm
@@ -0,0 +1,166 @@
+#!/usr/local/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+my $PLUS_MINUS = "&plusmn;";
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    #always do seconds if the following line is commented out
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . '%';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm
new file mode 100644
index 0000000..741a25c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm
@@ -0,0 +1,389 @@
+#!/usr/local/bin/perl
+
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+
+use strict;
+
+use Dataset;
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+my $outType = "HTML";
+my $html = "noName";
+my $inTable;
+my @headers;
+my @timetypes = ("mean per op", "error per op", "events", "per event");
+my %raw;
+my $current = "";
+my $exp = 0;
+my $mult = 1e9; #use nanoseconds
+my $perc = 100; #for percent
+my $printEvents = 0;
+my $legend = "<a name=\"Legend\">\n<h2>Table legend</h2></a><ul>";
+my $legendDone = 0;
+my %options;
+my $operationIs = "operation";
+my $eventIs = "event";
+
+sub startTest {
+  $current = shift;
+  $exp = 0;
+  outputData($current);
+}
+
+sub printLeg {
+  if(!$legendDone) {
+    my $message;
+    foreach $message (@_) {
+      $legend .= "<li>".$message."</li>\n";
+    }
+  }
+}
+
+sub outputDist {
+  my $value = shift;
+  my $percent = shift;
+  my $mean = $value->getMean;
+  my $error = $value->getError;
+  print HTML "<td class=\"";
+  if($mean > 0) {
+    print HTML "value";
+  } else {
+    print HTML "worse";
+  }
+  print HTML "\">";
+  if($percent) {
+    print HTML formatPercent(2, $mean);
+  } else {
+    print HTML formatNumber(2, $mult, $mean);
+  }
+  print HTML "</td>\n";  
+  print HTML "<td class=\"";
+  if((($error*$mult < 10)&&!$percent) || (($error<10)&&$percent)) {
+    print HTML "error";
+  } else {
+    print HTML "errorLarge";
+  }
+  print HTML "\">&plusmn;";
+  if($percent) {
+    print HTML formatPercent(2, $error);
+  } else {
+    print HTML formatNumber(2, $mult, $error);
+  }
+  print HTML "</td>\n";  
+}
+  
+sub outputValue {
+  my $value = shift;
+  print HTML "<td class=\"sepvalue\">";
+  print HTML $value;
+  #print HTML formatNumber(2, 1, $value);
+  print HTML "</td>\n";  
+}
+
+sub startTable {
+  #my $printEvents = shift;
+  $inTable = 1;
+  my $i;
+  print HTML "<table $TABLEATTR>\n";
+  print HTML "<tbody>\n";
+  if($#headers >= 0) {
+    my ($header, $i);
+    print HTML "<tr>\n";
+    print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#TestName\">Test Name</a></th>\n";
+    print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#Ops\">Ops</a></th>\n";
+    printLeg("<a name=\"Test Name\">TestName</a> - name of the test as set by the test writer\n", "<a name=\"Ops\">Ops</a> - number of ".$operationIs."s per iteration\n");
+    if(!$printEvents) {
+      print HTML "<th colspan=".((4*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+    } else {
+      print HTML "<th colspan=".((2*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+      print HTML "<th colspan=".((5*($#headers+1))-2)." class=\"sourceType\">Per Event</th>\n";
+    }
+    print HTML "</tr>\n<tr>\n";
+    if(!$printEvents) {
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#meanop_$header\">$header<br>/op</a></th>\n";
+	printLeg("<a name=\"meanop_$header\">$header /op</a> - mean time and error for $header per $operationIs");
+      }
+    }
+    for $i (1 .. $#headers) {
+      print HTML "<th class=\"source\" colspan=2><a href=\"#mean_op_$i\">ratio $i<br>/op</a></th>\n";
+      printLeg("<a name=\"mean_op_$i\">ratio $i /op</a> - ratio and error of per $operationIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+    }
+    if($printEvents) {
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\"><a href=\"#events_$header\">$header<br>events</a></th>\n";
+	printLeg("<a name=\"events_$header\">$header events</a> - number of ".$eventIs."s for $header per iteration");
+      }
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$header\">$header<br>/ev</a></th>\n";
+	printLeg("<a name=\"mean_ev_$header\">$header /ev</a> - mean time and error for $header per $eventIs");
+      }
+      for $i (1 .. $#headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$i\">ratio $i<br>/ev</a></th>\n";
+	printLeg("<a name=\"mean_ev_$i\">ratio $i /ev</a> - ratio and error of per $eventIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+      }
+    }
+    print HTML "</tr>\n";
+  }
+  $legendDone = 1;
+}
+
+sub closeTable {
+  if($inTable) {
+    undef $inTable;
+    print HTML "</tr>\n";
+    print HTML "</tbody>";
+    print HTML "</table>\n";
+  }
+}
+
+sub newRow {
+  if(!$inTable) {
+    startTable;
+  } else {
+    print HTML "</tr>\n";
+  }
+  print HTML "<tr>";
+}
+
+sub outputData {
+  if($inTable) {
+    my $msg = shift;
+    my $align = shift;
+    print HTML "<td";
+    if($align) {
+      print HTML " align = $align>";
+    } else {
+      print HTML ">";
+    }
+    print HTML "$msg";
+    print HTML "</td>";
+  } else {
+    my $message;
+    foreach $message (@_) {
+      print HTML "$message";
+    }
+  }
+}
+
+sub setupOutput {
+  my $date = localtime;
+  my $options = shift;
+  %options = %{ $options };
+  my $title = $options{ "title" };
+  my $headers = $options{ "headers" };
+  if($options{ "operationIs" }) {
+    $operationIs = $options{ "operationIs" };
+  }
+  if($options{ "eventIs" }) {
+    $eventIs = $options{ "eventIs" };
+  }
+  @headers = split(/ /, $headers);
+  my ($t, $rest);
+  ($t, $rest) = split(/\.\w+/, $0);
+  $t =~ /^.*\W(\w+)$/;
+  $t = $1;
+  if($outType eq 'HTML') {
+    $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "$t $html.html";
+    if($options{ "outputDir" }) {
+      $html = $options{ "outputDir" }."/".$html;
+    }
+    $html =~ s/ /_/g;
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+#<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+    print HTML <<EOF;
+<HTML>
+   <HEAD>
+   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+      <TITLE>$title</TITLE>
+<style>
+<!--
+body         { font-size: 10pt; font-family: sans-serif }
+th           { font-size: 10pt; border: 0 solid #000080; padding: 5 }
+th.testNameHeader { border-width: 1 }
+th.testName  { text-align: left; border-left-width: 1; border-right-width: 1; 
+               border-bottom-width: 1 }
+th.source    { border-right-width: 1; border-bottom-width: 1 }
+th.sourceType { border-right-width: 1; border-top-width: 1; border-bottom-width: 1 }
+td           { font-size: 10pt; text-align: Right; border: 0 solid #000080; padding: 5 }
+td.string    { text-align: Left; border-bottom-width:1; border-right-width:1 }
+td.sepvalue  { border-bottom-width: 1; border-right-width: 1 }
+td.value     { border-bottom-width: 1 }
+td.worse     { color: #FF0000; font-weight: bold; border-bottom-width: 1 }
+td.error     { font-size: 75%; border-right-width: 1; border-bottom-width: 1 }
+td.errorLarge { font-size: 75%; color: #FF0000; font-weight: bold; border-right-width: 1; 
+               border-bottom-width: 1 }
+A:link    { color: black; font-weight: normal; text-decoration: none}    /* unvisited links */
+A:visited { color: blue; font-weight: normal; text-decoration: none }   /* visited links   */
+A:hover   { color: red; font-weight: normal; text-decoration: none } /* user hovers     */
+A:active  { color: lime; font-weight: normal; text-decoration: none }   /* active links    */
+-->
+</style>
+   </HEAD>
+   <BODY bgcolor="#FFFFFF" LINK="#006666" VLINK="#000000">
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    #print HTML "<H2>$TESTCLASS</H2>\n";
+  }
+}
+
+sub closeOutput {
+  if($outType eq 'HTML') {
+    if($inTable) {
+      closeTable;
+    }
+    $legend .= "</ul>\n";
+    print HTML $legend;
+    outputRaw();
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+  }
+}
+
+
+sub outputRaw {
+  print HTML "<h2>Raw data</h2>";
+  my $key;
+  my $i;
+  my $j;
+  my $k;
+  print HTML "<table $TABLEATTR>\n";
+  for $key (sort keys %raw) {
+    my $printkey = $key;
+    $printkey =~ s/\<br\>/ /g;
+    if($printEvents) {
+      if($key ne "") {
+	print HTML "<tr><th class=\"testNameHeader\" colspan = 7>$printkey</td></tr>\n"; # locale and data file
+      }
+      print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th><th class=\"testName\">events</th></tr>\n";
+    } else {
+      if($key ne "") {
+	print HTML "<tr><th class=\"testName\" colspan = 6>$printkey</td></tr>\n"; # locale and data file
+      }
+      print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th></tr>\n";
+    }
+    $printkey =~ s/[\<\>\/ ]//g;
+      
+    my %done;
+    for $i ( $raw{$key} ) {
+      print HTML "<tr>";
+      for $j ( @$i ) {
+	my ($test, $args);
+	($test, $args) = split(/,/, shift(@$j));
+
+	print HTML "<th class=\"testName\">";
+	if(!$done{$test}) {
+	  print HTML "<a name=\"".$printkey."_".$test."\">".$test."</a>";
+	  $done{$test} = 1;
+	} else {
+	  print HTML $test;
+	}
+	print HTML "</th>";
+
+	print HTML "<td class=\"string\">".$args."</td>";
+	
+	print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+	print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+
+	my @data = @{ shift(@$j) };
+	my $ds = Dataset->new(@data);
+	print HTML "<td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getMean)."</td><td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getError)."</td>";
+	if($#{ $j } >= 0) {
+	  print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+	}
+	print HTML "</tr>\n";
+      }
+    }
+  }
+}
+
+sub store {
+  $raw{$current}[$exp++] = [@_];
+}
+
+sub outputRow {
+  #$raw{$current}[$exp++] =  [@_];
+  my $testName = shift;
+  my @iterPerPass = @{shift(@_)};
+  my @noopers =  @{shift(@_)};
+   my @timedata =  @{shift(@_)};
+  my @noevents;
+  if($#_ >= 0) {
+    @noevents =  @{shift(@_)};
+  }
+  if(!$inTable) {
+    if(@noevents) {
+      $printEvents = 1;
+      startTable;
+    } else {
+      startTable;
+    }
+  }
+  debug("No events: @noevents, $#noevents\n");
+
+  my $j;
+  my $loc = $current;
+  $loc =~ s/\<br\>/ /g;
+  $loc =~ s/[\<\>\/ ]//g;
+
+  # Finished one row of results. Outputting
+  newRow;
+  #outputData($testName, "LEFT");
+  print HTML "<th class=\"testName\"><a href=\"#".$loc."_".$testName."\">$testName</a></th>\n";
+  #outputData($iterCount);
+  #outputData($noopers[0], "RIGHT");
+  outputValue($noopers[0]);
+
+  if(!$printEvents) {
+    for $j ( 0 .. $#timedata ) {
+      my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+      #debug("Time per operation: ".formatSeconds(4, $perOperation->getMean, $perOperation->getError)."\n");
+      outputDist($perOperation);
+    }
+  }
+  my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noopers[0]);
+  for $j ( 1 .. $#timedata ) {
+    my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+    my $ratio = $baseLinePO->subtract($perOperation);
+    $ratio = $ratio->divide($perOperation);
+    outputDist($ratio, "%");
+  }   
+  if (@noevents) {
+    for $j ( 0 .. $#timedata ) {
+      #outputData($noevents[$j], "RIGHT");
+      outputValue($noevents[$j]);
+    }
+    for $j ( 0 .. $#timedata ) {
+      my $perEvent =  $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per event
+      #debug("Time per operation: ".formatSeconds(4, $perEvent->getMean, $perEvent->getError)."\n");
+      outputDist($perEvent);
+    }   
+    my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noevents[0]);
+    for $j ( 1 .. $#timedata ) {
+      my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per operation
+      my $ratio = $baseLinePO->subtract($perOperation);
+      $ratio = $ratio->divide($perOperation);
+      outputDist($ratio, "%");
+    }   
+  }
+}
+
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm b/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm
new file mode 100644
index 0000000..ac001a8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm
@@ -0,0 +1,415 @@
+#!/usr/local/bin/perl
+#  ***********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2006, International Business Machines Corporation
+#  * and others. All Rights Reserved.
+#  ***********************************************************************
+
+use strict;
+
+#use Dataset;
+use Format;
+use Output;
+
+my $VERBOSE = 0;
+my $DEBUG   = 1;
+my $start_l = ""; #formatting help
+my $end_l   = "";
+my @testArgs; # different kinds of tests we want to do
+my $datadir = "data";
+my $extraArgs; # stuff that always gets passed to the test program
+
+
+my $iterCount = 0;
+my $NUMPASSES = 4;
+my $TIME = 2;
+my $ITERATIONS;   #Added by Doug
+my $DATADIR;
+
+sub setupOptions {
+  my %options = %{shift @_};
+
+  if($options{"time"}) {
+    $TIME = $options{"time"};
+  }
+
+  if($options{"passes"}) {
+    $NUMPASSES = $options{"passes"};
+  }
+	
+  if($options{"dataDir"}) {
+    $DATADIR = $options{"dataDir"};
+  }
+  
+  # Added by Doug
+  if ($options{"iterations"}) {
+  	$ITERATIONS = $options{"iterations"};
+  }
+}
+
+sub runTests {
+  debug("Enter runTest in PerfFramework4j\n");
+  my $options = shift;
+  my @programs;
+  my $tests = shift;
+  my %datafiles;
+  if($#_ >= 0) { # maybe no files/locales
+    my $datafiles = shift;
+    if($datafiles) {
+      %datafiles = %{$datafiles};
+    }
+  }
+  setupOutput($options);
+  setupOptions($options);
+
+  my($locale, $iter, $data, $program, $args, $variable);
+#
+#  Outer loop runs through the locales to test
+#
+  if (%datafiles) {
+    foreach $locale (sort keys %datafiles ) {
+      foreach $data (@{ $datafiles{$locale} }) {
+	closeTable;
+	my $locdata = "";
+	if(!($locale eq "")) {
+	  $locdata = "<b>Locale:</b> $locale<br>";
+	}
+	$locdata .= "<b>Datafile:</b> $data<br>";
+	startTest($locdata);
+
+	if($DATADIR) {
+	  compareLoop ($tests, $locale, $DATADIR."/".$data);
+	} else {
+	  compareLoop ($tests, $locale, $data);
+	}
+      }
+    }
+  } else {
+    compareLoop($tests);
+  }
+  closeOutput();
+}
+
+sub compareLoop {
+  #debug("enter compareLoop\n");
+  
+  my $tests = shift;
+  #debug("tests $tests");
+  #my @tests = @{$tests};
+  my %tests = %{$tests};
+  #debug("tests $tests");
+  my $locale = shift;
+  my $datafile = shift;
+  my $locAndData = "";
+  if($locale) {
+    $locAndData .= " -L $locale";
+  }
+  
+  if($datafile) {
+    $locAndData .= " -f $datafile";
+  }
+	  
+  my $args;
+  my ($i, $j, $aref);
+  foreach $i ( sort keys %tests ) {
+    #debug("Test: $i\n");
+    $aref = $tests{$i};
+    my @timedata;
+    my @iterPerPass;
+    my @noopers;
+    my @noevents;
+
+    my $program;
+    my @argsAndTest;
+    for $j ( 0 .. $#{$aref} ) {
+    # first we calibrate. Use time from somewhere
+    # first test is used for calibration
+    ##################
+    #  ($program, @argsAndTest) = split(/\ /, @{ $tests{$i} }[$j]);
+    #  #Modified by Doug
+    #   my $commandLine;
+    #  if ($ITERATIONS) {
+    #  	$commandLine = "$program -i $ITERATIONS -p $NUMPASSES $locAndData @argsAndTest";
+    #  } else {
+    #  	$commandLine = "$program -t $TIME -p $NUMPASSES $locAndData @argsAndTest";
+    # 	}
+    ######################
+    ######################
+    my $custArgs;
+    my $testCommand = @{ $tests{$i} }[$j];
+      if ($testCommand =~/--/) {
+      	$custArgs = $& . $';	#The matched part and the right part
+      	$testCommand = $`;		#The left part for furthur processing
+      } else { $custArgs = ''; }
+      ($program, @argsAndTest) = split(/\ /, $testCommand);
+      my $commandLine;
+      if ($ITERATIONS) {
+      	$commandLine = "$program @argsAndTest -i $ITERATIONS -p $NUMPASSES $locAndData $custArgs";
+      } else {
+      	$commandLine = "$program @argsAndTest -t $TIME -p $NUMPASSES $locAndData $custArgs";
+    	}
+    #debug("custArgs:$custArgs\n");
+    ####################
+      
+      my @res = measure1($commandLine);
+      store("$i, $program @argsAndTest", @res);
+
+      push(@iterPerPass, shift(@res));
+      push(@noopers, shift(@res));
+      my @data = @{ shift(@res) };
+      if($#res >= 0) {
+	push(@noevents, shift(@res));
+      }
+    
+
+      shift(@data) if (@data > 1); # discard first run
+
+      #debug("data is @data\n");
+      my $ds = Dataset->new(@data);
+
+      push(@timedata, $ds);
+    }
+
+    outputRow($i, \@iterPerPass, \@noopers, \@timedata, \@noevents);
+  }
+
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    # run passes
+    my @t = callProg(shift); #"$program $args $argsAndTest");
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        #push(@ms, $b[0]);
+        push(@ms, shift(@b));
+    }
+    my $iterCount = shift(@b);
+    my $operationsPerIter = shift(@b);
+    my $eventsPerIter;
+    if($#b >= 0) {
+      $eventsPerIter = shift(@b);
+    }
+
+#    out("Iterations per pass: $iterCount<BR>\n");
+#    out("Events per iteration: $eventsPerIter<BR>\n");
+#    debug("Iterations per pass: $iterCount<BR>\n");
+#    if($eventsPerIter) {
+#      debug("Events per iteration: $eventsPerIter<BR>\n");
+#    }
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+#    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+    debug("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+    if($eventsPerIter) {
+      ($iterCount, $operationsPerIter, \@ms, $eventsPerIter);
+    } else {
+      ($iterCount, $operationsPerIter, \@ms);
+    }
+}
+
+
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @res = measure1(@_);
+    my $iterPerPass = shift(@res);
+    my $operationsPerIter = shift(@res);
+    my @data = @{ shift(@res) };
+    my $eventsPerIter = shift(@res);
+    
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    #$ds->setScale(1.0e-3 / ($iterPerPass * $operationsPerIter));
+    ($ds, $iterPerPass, $operationsPerIter, $eventsPerIter);
+}
+
+
+#---------------------------------------------------------------------
+# Invoke program and capture results, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callProg {
+    my $cmd = shift;
+    #my $pat = shift;
+    #my $n = shift;
+
+    #my $cmd = "java -cp c:\\dev\\myicu4j\\classes $TESTCLASS $method $n $pat";
+    debug( "[$cmd]\n"); # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Program failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #debug( "[", join("\n", @out), "]\n");
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #debug ("$_ => [[$m $state !!!$d!!! $data ]]\n");
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #debug( "#$method:", join(";",@$data), "\n");
+                unshift(@$data, $method); # add method to start
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+sub debug  {
+  my $message;
+  if($DEBUG != 0) {
+    foreach $message (@_) {
+      print STDERR "$message";
+    }
+  }
+}
+
+sub measure1Alan {
+  #Added here, was global
+  my $CALIBRATE = 2; # duration in seconds for initial calibration
+
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        my $timePerIter = 1.0e-3 * $data[0] / $data[2];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[2] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, "$iterCount " x $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0]);
+    }
+    my $eventsPerIter = $b[1];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl b/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl
new file mode 100755
index 0000000..a75f0db
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+my $options = {
+	       "title"=>"Rule Based BreakIterator performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "eventIs"=>"break",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+# Test class
+my $TESTCLASS = "com.ibm.icu.dev.test.perf.RBBIPerf";
+# tests will be done for all the programs. Results will be stored and connected
+my $m1 = "char";
+my $m2 = "word";
+my $m3 = "line";
+my $m4 = "jdkline";
+
+my $m;
+
+if(@_ >= 0) {
+  $m = "-- -m ".shift;
+} else {
+  $m = $m1;
+}
+
+my $jvm1 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j/classes $TESTCLASS";
+
+my $dataFiles = {
+"en", [
+	   #"thesis.txt", 
+       #"2drvb10.txt", 
+       #"ulyss10.txt",  
+       #"nvsbl10.txt", 
+       #"vfear11a.txt", 		  
+       "TestNames_Asian.txt",
+       "TestNames_Chinese.txt",
+       "TestNames_Japanese.txt",
+       "TestNames_Japanese_h.txt",
+       "TestNames_Japanese_k.txt",
+       "TestNames_Korean.txt",
+       "TestNames_Latin.txt",
+       "TestNames_SerbianSH.txt",
+       "TestNames_SerbianSR.txt",
+       "TestNames_Thai.txt",
+       "Testnames_Russian.txt",
+],
+#"th", ["TestNames_Thai.txt", "th18057.txt"]
+};
+
+
+my $tests = { 
+"TestNextChar",      ["$jvm1 testRBBINext $m1", "$jvm2 testRBBINext $m1"],
+"TestNextWord",      ["$jvm1 testRBBINext $m2", "$jvm2 testRBBINext $m2"],
+"TestNextLine",      ["$jvm1 testRBBINext $m3", "$jvm2 testRBBINext $m3"],
+"TestNextJDKLine",   ["$jvm1 testRBBINext $m4", "$jvm2 testRBBINext $m4"],
+##
+"TestPreviousChar",      ["$jvm1 testRBBIPrevious $m1", "$jvm2 testRBBIPrevious $m1"],
+"TestPreviousWord",      ["$jvm1 testRBBIPrevious $m2", "$jvm2 testRBBIPrevious $m2"],
+"TestPreviousLine",      ["$jvm1 testRBBIPrevious $m3", "$jvm2 testRBBIPrevious $m3"],
+#"TestPreviousSentence",  ["$jvm1 testRBBIPrevious $m4", "$jvm2 testRBBIPrevious $m4"],
+##						                                                     
+"TestIsBoundaryChar",      ["$jvm1 testRBBIIsBoundary $m1", "$jvm2 testRBBIIsBoundary $m1"],
+"TestIsBoundaryWord",      ["$jvm1 testRBBIIsBoundary $m2", "$jvm2 testRBBIIsBoundary $m2"],
+"TestIsBoundaryLine",      ["$jvm1 testRBBIIsBoundary $m3", "$jvm2 testRBBIIsBoundary $m3"],
+#"TestIsBoundarySentence",  ["$jvm1 testRBBIIsBoundary $m4", "$jvm2 testRBBIIsBoundary $m4"],
+};
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl b/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl
new file mode 100755
index 0000000..11bfa89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#/**
+# *******************************************************************************
+# * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+use lib 'src/com/ibm/icu/dev/test/perf';
+use lib 'src/com/ibm/icu/dev/test/perf/perldriver';
+use PerfFramework4j;
+
+$TEST_DATA="src/com/ibm/icu/dev/test/perf/data/collation";
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = "com.ibm.icu.dev.test.perf.ResourceBundlePerf"; 
+
+mkdir "results_ICU4J";
+
+my $options = {
+         "title"=>"ResourceBundle performance test",
+         "headers"=>"Java ICU",
+         "operationIs"=>"various",
+         "timePerOperationIs"=>"Time per each fetch",
+         "passes"=>"1",
+         "time"=>"1",
+         "outputType"=>"HTML",
+         "dataDir"=>$TEST_DATA,
+         "outputDir"=>"results_ICU4J"
+        };
+
+# programs
+
+my $cmd = 'java -classpath "classes" '.$TESTCLASS;
+
+my $dataFiles = "";
+
+my $tests = { 
+               "Empty array",           ["$cmd TestEmptyArrayJava",                 "$cmd TestEmptyArrayICU"],
+               "Empty Explicit String", ["$cmd TestEmptyExplicitStringJava",        "$cmd TestEmptyExplicitStringICU"],
+               "Empty String",          ["$cmd TestEmptyStringJava",                "$cmd TestEmptyStringICU"],
+               "Get 123",               ["$cmd TestGet123Java",                     "$cmd TestGet123ICU"],
+               "Get Binary Test",       ["$cmd TestGetBinaryTestJava",              "$cmd TestGetBinaryTestICU"],
+               "Get Empty Binary",      ["$cmd TestGetEmptyBinaryJava",             "$cmd TestGetBinaryTestICU"],
+               "Get Empty Menu",        ["$cmd TestGetEmptyMenuJava",               "$cmd TestGetEmptyMenuICU"],
+               "Get Empty Int",         ["$cmd TestGetEmptyIntJava",                "$cmd TestGetEmptyIntICU"],
+               "Get Empty Int Array",   ["$cmd TestGetEmptyIntegerArrayJava",       "$cmd TestGetEmptyIntegerArrayICU"],
+               "Get Int Array",         ["$cmd TestGetIntegerArrayJava",            "$cmd TestGetIntegerArrayICU"],
+               "Get Menu",              ["$cmd TestGetMenuJava",                    "$cmd TestGetMenuICU"],
+               "Get Minus One",         ["$cmd TestGetMinusOneJava",                "$cmd TestGetMinusOneICU"],
+               "Get Minus One Uint",    ["$cmd TestGetMinusOneUintJava",            "$cmd TestGetMinusOneUintICU"],
+               "Get One",               ["$cmd TestGetOneJava",                     "$cmd TestGetOneICU"],
+               "Get Plus One",          ["$cmd TestGetPlusOneJava",                 "$cmd TestGetPlusOneICU"],
+               "Construction",          ["$cmd TestResourceBundleConstructionJava", "$cmd TestResourceBundleConstructionICU"],
+               "Zero Test",             ["$cmd TestZeroTestJava",                   "$cmd TestZeroTestICU"]
+            };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl b/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl
new file mode 100755
index 0000000..305583f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl
@@ -0,0 +1,493 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UCharacterPerf';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (['JDKDigit',                    'Digit'],
+                ['JDKGetNumericValue',          'GetNumericValue'],
+                ['JDKGetType',                  'GetType'],
+                ['JDKIsDefined',                'IsDefined'],
+                ['JDKIsDigit',                  'IsDigit'],
+                ['JDKIsIdentifierIgnorable',    'IsIdentifierIgnorable'],
+                ['JDKIsISOControl',             'IsISOControl'],
+                ['JDKIsLetter',                 'IsLetter'],
+                ['JDKIsLetterOrDigit',          'IsLetterOrDigit'],
+                ['JDKIsLowerCase',              'IsLowerCase'],
+                ['JDKIsSpaceChar',              'IsSpaceChar'],
+                ['JDKIsTitleCase',              'IsTitleCase'],
+                ['JDKIsUnicodeIdentifierPart',  'IsUnicodeIdentifierPart'],
+                ['JDKIsUnicodeIdentifierStart', 'IsUnicodeIdentifierStart'],
+                ['JDKIsUpperCase',              'IsUpperCase'],
+                ['JDKIsWhiteSpace',             'IsWhiteSpace'],
+               );
+
+# Patterns which define the set of characters used for testing.
+my @PATTERNS = ('0 ffff');
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Pattern</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@PATTERNS) {
+            print HTML "<TR><TD>$pat</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod $pat\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\nBegin $baselineMethod $pat\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test, values in hex digits without 0x
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -cp classes $TESTCLASS $method $n -p $passes $pat";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl b/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl
new file mode 100755
index 0000000..9de021c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UCharacterPerf'; 
+
+my $options = {
+	       "title"=>"UnicodeCharacter Property performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -classpath svn-icu4j/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+
+my $dataFiles = "";
+my $pat = '0 ffff';
+
+my $tests = { 
+	     "Digit ($pat)",                     ["$jvm1 Digit $pat"  ,                     "$jvm2 Digit $pat" ],
+	     "GetNumericValue ($pat)",           ["$jvm1 GetNumericValue $pat"  ,           "$jvm2 GetNumericValue $pat" ],
+	     "GetType ($pat)",                   ["$jvm1 GetType $pat"  ,                   "$jvm2 GetType $pat" ],
+	     "IsDefined ($pat)",                 ["$jvm1 IsDefined $pat"  ,                 "$jvm2 IsDefined $pat" ],
+	     "IsDigit ($pat)",                   ["$jvm1 IsDigit $pat"  ,                   "$jvm2 IsDigit $pat" ],
+	     "IsIdentifierIgnorable ($pat)",     ["$jvm1 IsIdentifierIgnorable $pat"  ,     "$jvm2 IsIdentifierIgnorable $pat" ],
+	     "IsISOControl ($pat)",              ["$jvm1 IsISOControl $pat"  ,              "$jvm2 IsISOControl $pat" ],
+	     "IsLetter ($pat)",                  ["$jvm1 IsLetter $pat"  ,                  "$jvm2 IsLetter $pat" ],
+	     "IsLetterOrDigit ($pat)",           ["$jvm1 IsLetterOrDigit $pat"  ,           "$jvm2 IsLetterOrDigit $pat" ],
+	     "IsLowerCase ($pat)",               ["$jvm1 IsLowerCase $pat"  ,               "$jvm2 IsLowerCase $pat" ],
+	     "IsSpaceChar ($pat)",               ["$jvm1 IsSpaceChar $pat"  ,               "$jvm2 IsSpaceChar $pat" ],
+	     "IsTitleCase ($pat)",               ["$jvm1 IsTitleCase $pat"  ,               "$jvm2 IsTitleCase $pat" ],
+	     "IsUnicodeIdentifierPart ($pat)",   ["$jvm1 IsUnicodeIdentifierPart $pat"  ,   "$jvm2 IsUnicodeIdentifierPart $pat" ],
+	     "IsUnicodeIdentifierStart ($pat)",  ["$jvm1 IsUnicodeIdentifierStart $pat"  ,  "$jvm2 IsUnicodeIdentifierStart $pat" ],
+	     "IsUpperCase ($pat)",               ["$jvm1 IsUpperCase $pat"  ,               "$jvm2 IsUpperCase $pat" ],
+	     "IsWhiteSpace ($pat)",              ["$jvm1 IsWhiteSpace $pat"  ,              "$jvm2 IsWhiteSpace $pat" ]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl b/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl
new file mode 100755
index 0000000..276282c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl
@@ -0,0 +1,483 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UnicodeSetPerf';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                ['UnicodeSetAdd',      'HashSetAdd'],
+                ['UnicodeSetContains', 'HashSetContains'],
+                ['UnicodeSetIterate',  'HashSetIterate']);
+
+# Patterns which define the set of characters used for testing.
+my @PATTERNS = (
+                '[:Lt:]',
+#               '[:Cn:]'
+               );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Pattern</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@PATTERNS) {
+            print HTML "<TR><TD>$pat</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod $pat\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\nBegin $baselineMethod $pat\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -cp classes $TESTCLASS $method $n -p $passes $pat";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl b/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl
new file mode 100755
index 0000000..6763365
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UnicodeSetPerf'; 
+
+my $options = {
+	       "title"=>"Unicode Set performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j/classes $TESTCLASS";
+
+my $dataFiles = "";
+my $pat1 = '[:Lt:]';
+my $pat2 = '[:Cn:]';
+
+my $tests = { 
+	     "UnicodeSetAdd ($pat1)",       ["$jvm1 UnicodeSetAdd $pat1"  ,       "$jvm2 UnicodeSetAdd $pat1" ],
+	     "UnicodeSetAdd ($pat2)",       ["$jvm1 UnicodeSetAdd $pat2"  ,       "$jvm2 UnicodeSetAdd $pat2" ],
+	     "UnicodeSetContains ($pat1)",  ["$jvm1 UnicodeSetContains $pat1"  ,  "$jvm2 UnicodeSetContains $pat1" ],
+	     "UnicodeSetContains ($pat2)",  ["$jvm1 UnicodeSetContains $pat2"  ,  "$jvm2 UnicodeSetContains $pat2" ],
+	     "UnicodeSetIterate ($pat1)",   ["$jvm1 UnicodeSetIterate $pat1"  ,   "$jvm2 UnicodeSetIterate $pat1" ],
+	     "UnicodeSetIterate ($pat2)",   ["$jvm1 UnicodeSetIterate $pat2"  ,   "$jvm2 UnicodeSetIterate $pat2" ],
+	     ##
+	     "HashSetAdd ($pat1)",          ["$jvm1 HashSetAdd $pat1"  ,          "$jvm2 HashSetAdd $pat1" ],
+	     "HashSetAdd ($pat2)",          ["$jvm1 HashSetAdd $pat2"  ,          "$jvm2 HashSetAdd $pat2" ],
+	     "HashSetContains ($pat1)",     ["$jvm1 HashSetContains $pat1"  ,     "$jvm2 HashSetContains $pat1" ],
+	     "HashSetContains ($pat2)",     ["$jvm1 HashSetContains $pat2"  ,     "$jvm2 HashSetContains $pat2" ],
+	     "HashSetIterate ($pat1)",      ["$jvm1 HashSetIterate $pat1"  ,      "$jvm2 HashSetIterate $pat1" ],
+	     "HashSetIterate ($pat2)",      ["$jvm1 HashSetIterate $pat2"  ,      "$jvm2 HashSetIterate $pat2" ]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
new file mode 100644
index 0000000..a30b2b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.util.Arrays;
+import java.util.Locale;
+
+public class BreakIteratorRegTest extends TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorRegTest().run(args);
+    }
+
+    public void TestRegUnreg() {
+    Locale thailand_locale = new Locale("th", "TH", "");
+    Locale foo_locale = new Locale("fu", "FU", "FOO");
+    BreakIterator jwbi = BreakIterator.getWordInstance(Locale.JAPAN);
+    BreakIterator uwbi = BreakIterator.getWordInstance(Locale.US);
+    BreakIterator usbi = BreakIterator.getSentenceInstance(Locale.US);
+    BreakIterator twbi = BreakIterator.getWordInstance(thailand_locale);
+    BreakIterator rwbi = BreakIterator.getWordInstance(new Locale("", "", ""));
+
+    BreakIterator sbi = (BreakIterator)usbi.clone();
+    // todo: this will cause the test to fail, no way to set a breakiterator to null text so can't fix yet.
+    // String text = "This is some test, by golly. Boy, they don't make tests like they used to, do they?  This here test ain't worth $2.50.  Nope.";
+    // sbi.setText(text);
+
+    assertTrue(!BreakIterator.unregister(""), "unregister before register"); // coverage
+
+    Object key0 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), foo_locale, BreakIterator.KIND_WORD);
+    Object key1 = BreakIterator.registerInstance(sbi, Locale.US, BreakIterator.KIND_WORD);
+    Object key2 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), Locale.US, BreakIterator.KIND_WORD);
+    
+    {
+        BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
+        BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
+        BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
+        BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
+        BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
+
+        assertEqual(test0, jwbi, "japan word == japan word");
+        assertEqual(test1, twbi, "us word == thai word");
+        assertEqual(test2, usbi, "us sentence == us sentence");
+        assertEqual(test3, twbi, "thai word == thai word");
+        assertEqual(test4, twbi, "foo word == thai word");
+    }
+
+    //Locale[] locales = BreakIterator.getAvailableLocales();
+    
+    assertTrue(BreakIterator.unregister(key2), "unregister us word (thai word)");
+    assertTrue(!BreakIterator.unregister(key2), "unregister second time");
+    boolean error = false;
+    try {
+        BreakIterator.unregister(null);
+    }
+    catch (IllegalArgumentException e) {
+        error = true;
+    }
+
+    assertTrue(error, "unregister null");
+
+    {
+        CharacterIterator sci = BreakIterator.getWordInstance(Locale.US).getText();
+        int len = sci.getEndIndex() - sci.getBeginIndex();
+        assertEqual(len, 0, "us word text: " + getString(sci));
+    }
+
+    assertTrue(Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "foo_locale");
+    assertTrue(BreakIterator.unregister(key0), "unregister foo word (thai word)");
+    assertTrue(!Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "no foo_locale");
+    assertEqual(BreakIterator.getWordInstance(Locale.US), usbi, "us word == us sentence");
+    
+    assertTrue(BreakIterator.unregister(key1), "unregister us word (us sentence)");
+    {
+        BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
+        BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
+        BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
+        BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
+        BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
+
+        assertEqual(test0, jwbi, "japanese word break");
+        assertEqual(test1, uwbi, "us sentence-word break");
+        assertEqual(test2, usbi, "us sentence break");
+        assertEqual(test3, twbi, "thai word break");
+        assertEqual(test4, rwbi, "root word break");
+
+        CharacterIterator sci = test1.getText();
+        int len = sci.getEndIndex() - sci.getBeginIndex();
+        assertEqual(len, 0, "us sentence-word break text: " + getString(sci));
+    }
+    }
+
+    private void assertEqual(Object lhs, Object rhs, String msg) {
+    msg(msg, lhs.equals(rhs) ? LOG : ERR, true, true);
+    }
+
+    private void assertEqual(int lhs, int rhs, String msg) {
+    msg(msg, lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    private void assertTrue(boolean arg, String msg) {
+    msg(msg, arg ? LOG : ERR, true, true);
+    }
+
+    private static String getString(CharacterIterator ci) {
+    StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex() + 2);
+    buf.append("'");
+    for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
+        buf.append(c);
+    }
+    buf.append("'");
+    return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
new file mode 100644
index 0000000..2d353a4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -0,0 +1,219 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_TEST extends ListResourceBundle {
+    private static final String DATA_NAME = "/com/ibm/icu/dev/data/rbbi/english.dict";
+
+    // calling code will handle case where dictionary does not exist
+
+    public Object[][] getContents() {
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            {   "BreakIteratorClasses",
+                new String[] {
+                    "RuleBasedBreakIterator",
+                    // character-break iterator class
+                    "DictionaryBasedBreakIterator",
+                    // word-break iterator class
+                    "DictionaryBasedBreakIterator",
+                    // line-break iterator class
+                    "RuleBasedBreakIterator" } // sentence-break iterator class
+            },
+
+            // These are the same word-breaking rules as are specified in the default
+            // resource, except that the Latin letters, apostrophe, and hyphen are
+            // specified as dictionary characters
+            {
+                "WordBreakRules",
+                // ignore non-spacing marks, enclosing marks, and format characters,
+                // all of which should not influence the algorithm
+                "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+                // lower and upper case Roman letters, apostrophy and dash are
+                // in the English dictionary
+                +"$_dictionary_=[a-zA-Z\\'\\-];"
+
+                // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+                // other letters, and digits
+                +"$danda=[\u0964\u0965];"
+                    + "$kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+                    + "$kata=[\u3099-\u309c\u30a1-\u30fe];"
+                    + "$hira=[\u3041-\u309e\u30fc];"
+                    + "$let=[[[:L:][:Mc:]]-[$kanji$kata$hira]];"
+                    + "$dgt=[:N:];"
+
+                // punctuation that can occur in the middle of a word: currently
+                // dashes, apostrophes, and quotation marks
+                +"$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'];"
+
+                // punctuation that can occur in the middle of a number: currently
+                // apostrophes, qoutation marks, periods, commas, and the Arabic
+                // decimal point
+                +"$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+                // punctuation that can occur at the beginning of a number: currently
+                // the period, the number sign, and all currency symbols except the cents sign
+                +"$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+                // punctuation that can occur at the end of a number: currently
+                // the percent, per-thousand, per-ten-thousand, and Arabic percent
+                // signs, the cents sign, and the ampersand
+                +"$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+                // line separators: currently LF, FF, PS, and LS
+                +"$ls=[\n\u000c\u2028\u2029];"
+
+                // whitespace: all space separators and the tab character
+                +"$ws=[[:Zs:]\t];"
+
+                // a word is a sequence of letters that may contain internal
+                // punctuation, as long as it begins and ends with a letter and
+                // never contains two punctuation marks in a row
+                +"$word=($let+($mid_word$let+)*$danda?);"
+
+                // a number is a sequence of digits that may contain internal
+                // punctuation, as long as it begins and ends with a digit and
+                // never contains two punctuation marks in a row.
+                +"$number=($dgt+($mid_num$dgt+)*);"
+
+                // break after every character, with the following exceptions
+                // (this will cause punctuation marks that aren't considered
+                // part of words or numbers to be treated as words unto themselves)
+                +".;"
+
+                // keep together any sequence of contiguous words and numbers
+                // (including just one of either), plus an optional trailing
+                // number-suffix character
+                +"$word?($number$word)*($number$post_num?)?;"
+
+                // keep together and sequence of contiguous words and numbers
+                // that starts with a number-prefix character and a number,
+                // and may end with a number-suffix character
+                +"$pre_num($number$word)*($number$post_num?)?;"
+
+                // keep together runs of whitespace (optionally with a single trailing
+                // line separator or CRLF sequence)
+                +"$ws*\r?$ls?;"
+
+                // keep together runs of Katakana
+                +"$kata*;"
+
+                // keep together runs of Hiragana
+                +"$hira*;"
+
+                // keep together runs of Kanji
+                +"$kanji*;" },
+
+            // These are the same line-breaking rules as are specified in the default
+            // resource, except that the Latin letters, apostrophe, and hyphen are
+            // specified as dictionary characters
+            {   "LineBreakRules",
+                // ignore non-spacing marks, enclosing marks, and format characters
+                "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+                // lower and upper case Roman letters, apostrophy and dash
+                // are in the English dictionary
+                +"$_dictionary_=[a-zA-Z\\'\\-];"
+
+                // Hindi phrase separators
+                +"$danda=[\u0964\u0965];"
+
+                // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+                +"$break=[\u0003\t\n\f\u2028\u2029];"
+
+                // characters that always prevent a break: the non-breaking space
+                // and similar characters
+                +"$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+                // whitespace: space separators and control characters, except for
+                // CR and the other characters mentioned above
+                +"$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+                // dashes: dash punctuation and the discretionary hyphen, except for
+                // non-breaking hyphens
+                +"$dash=[[[:Pd:]\u00ad]-[$nbsp]];"
+
+                // characters that stick to a word if they precede it: currency symbols
+                // (except the cents sign) and starting punctuation
+                +"$pre_word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"\\\'];"
+
+                // characters that stick to a word if they follow it: ending punctuation,
+                // other punctuation that usually occurs at the end of a sentence,
+                // small Kana characters, some CJK diacritics, etc.
+                +"$post_word=[[:Pe:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+                // Kanji: actually includes both Kanji and Kana, except for small Kana and
+                // CJK diacritics
+                +"$kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+                // digits
+                +"$digit=[[:Nd:][:No:]];"
+
+                // punctuation that can occur in the middle of a number: periods and commas
+                +"$mid_num=[\\.\\,];"
+
+                // everything not mentioned above, plus the quote marks (which are both
+                // <pre-word>, <post-word>, and <char>)
+                +"$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word$mid_num$danda\r\\\"\\\'];"
+
+                // a "number" is a run of prefix characters and dashes, followed by one or
+                // more digits with isolated number-punctuation characters interspersed
+                +"$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+                // the basic core of a word can be either a "number" as defined above, a single
+                // "Kanji" character, or a run of any number of not-explicitly-mentioned
+                // characters (this includes Latin letters)
+                +"$word_core=([$pre_word$char]*|$kanji|$number);"
+
+                // a word may end with an optional suffix that be either a run of one or
+                // more dashes or a run of word-suffix characters, followed by an optional
+                // run of whitespace
+                +"$word_suffix=(($dash+|$post_word*)$space*);"
+
+                // a word, thus, is an optional run of word-prefix characters, followed by
+                // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+                // actually allows either of them to match the empty string, putting a break
+                // between things like ")(" or "aaa(aaa"
+                +"$word=($pre_word*$word_core$word_suffix);"
+
+                // finally, the rule that does the work: Keep together any run of words that
+                // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+                // line-break character or CRLF combination with the word.  (line separators
+                // "win" over nbsp's)
+                +"$word($nbsp+$word)*\r?$break?;" },
+
+            // these two resources specify the pathnames of the dictionary files to
+            // use for word breaking and line breaking.  Both currently refer to
+            // a file called english.dict placed in com.ibm.icu.impl.data
+            // somewhere in the class path.  It's important to note that
+            // english.dict was created for testing purposes only, and doesn't
+            // come anywhere close to being an exhaustive dictionary of English
+            // words (basically, it contains all the words in the Declaration of
+            // Independence, and the Revised Standard Version of the book of Genesis,
+            // plus a few other words thrown in to show more interesting cases).
+            // { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+            // { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+            {   "WordBreakDictionary", DATA_NAME }, 
+            {   "LineBreakDictionary", DATA_NAME }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
new file mode 100644
index 0000000..8bd628e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -0,0 +1,846 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.BreakIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.Vector;
+
+public class BreakIteratorTest extends TestFmwk
+{
+    private BreakIterator characterBreak;
+    private BreakIterator wordBreak;
+    private BreakIterator lineBreak;
+    private BreakIterator sentenceBreak;
+    private BreakIterator titleBreak;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    public BreakIteratorTest()
+    {
+
+    }
+    protected void init(){
+        characterBreak = BreakIterator.getCharacterInstance();
+        wordBreak = BreakIterator.getWordInstance();
+        lineBreak = BreakIterator.getLineInstance();
+        //logln("Creating sentence iterator...");
+        sentenceBreak = BreakIterator.getSentenceInstance();
+        //logln("Finished creating sentence iterator...");
+        titleBreak = BreakIterator.getTitleInstance();
+    }
+    //=========================================================================
+    // general test subroutines
+    //=========================================================================
+
+    private void generalIteratorTest(BreakIterator bi, Vector expectedResult) {
+        StringBuffer buffer = new StringBuffer();
+        String text;
+        for (int i = 0; i < expectedResult.size(); i++) {
+            text = (String)expectedResult.elementAt(i);
+            buffer.append(text);
+        }
+        text = buffer.toString();
+
+        bi.setText(text);
+
+        Vector nextResults = _testFirstAndNext(bi, text);
+        Vector previousResults = _testLastAndPrevious(bi, text);
+
+        logln("comparing forward and backward...");
+        int errs = getErrorCount();
+        compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                        previousResults);
+        if (getErrorCount() == errs) {
+            logln("comparing expected and actual...");
+            compareFragmentLists("expected result", "actual result", expectedResult,
+                            nextResults);
+        }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = BreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+            boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).
+                            length();
+        boundaries[boundaries.length - 1] = BreakIterator.DONE;
+
+        _testFollowing(bi, text, boundaries);
+        _testPreceding(bi, text, boundaries);
+        _testIsBoundary(bi, text, boundaries);
+
+        doMultipleSelectionTest(bi, text);
+    }
+
+    private Vector _testFirstAndNext(BreakIterator bi, String text) {
+        int p = bi.first();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != 0)
+            errln("first() returned " + p + " instead of 0");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                if (p <= lastP)
+                    errln("next() failed to move forward: next() on position "
+                                    + lastP + " yielded " + p);
+
+                result.addElement(text.substring(lastP, p));
+            }
+            else {
+                if (lastP != text.length())
+                    errln("next() returned DONE prematurely: offset was "
+                                    + lastP + " instead of " + text.length());
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private Vector _testLastAndPrevious(BreakIterator bi, String text) {
+        int p = bi.last();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != text.length())
+            errln("last() returned " + p + " instead of " + text.length());
+        while (p != BreakIterator.DONE) {
+            p = bi.previous();
+            if (p != BreakIterator.DONE) {
+                if (p >= lastP)
+                    errln("previous() failed to move backward: previous() on position "
+                                    + lastP + " yielded " + p);
+
+                result.insertElementAt(text.substring(p, lastP), 0);
+            }
+            else {
+                if (lastP != 0)
+                    errln("previous() returned DONE prematurely: offset was "
+                                    + lastP + " instead of 0");
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+        int p1 = 0;
+        int p2 = 0;
+        String s1;
+        String s2;
+        int t1 = 0;
+        int t2 = 0;
+
+        while (p1 < f1.size() && p2 < f2.size()) {
+            s1 = (String)f1.elementAt(p1);
+            s2 = (String)f2.elementAt(p2);
+            t1 += s1.length();
+            t2 += s2.length();
+
+            if (s1.equals(s2)) {
+                debugLogln("   >" + s1 + "<");
+                ++p1;
+                ++p2;
+            }
+            else {
+                int tempT1 = t1;
+                int tempT2 = t2;
+                int tempP1 = p1;
+                int tempP2 = p2;
+
+                while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                    while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                        tempT1 += ((String)f1.elementAt(tempP1)).length();
+                        ++tempP1;
+                    }
+                    while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                        tempT2 += ((String)f2.elementAt(tempP2)).length();
+                        ++tempP2;
+                    }
+                }
+                logln("*** " + f1Name + " has:");
+                while (p1 <= tempP1 && p1 < f1.size()) {
+                    s1 = (String)f1.elementAt(p1);
+                    t1 += s1.length();
+                    debugLogln(" *** >" + s1 + "<");
+                    ++p1;
+                }
+                logln("***** " + f2Name + " has:");
+                while (p2 <= tempP2 && p2 < f2.size()) {
+                    s2 = (String)f2.elementAt(p2);
+                    t2 += s2.length();
+                    debugLogln(" ***** >" + s2 + "<");
+                    ++p2;
+                }
+                errln("Discrepancy between " + f1Name + " and " + f2Name);
+            }
+        }
+    }
+
+    private void _testFollowing(BreakIterator bi, String text, int[] boundaries) {
+        logln("testFollowing():");
+        int p = 2;
+        for (int i = 0; i <= text.length(); i++) {
+            if (i == boundaries[p])
+                ++p;
+
+            int b = bi.following(i);
+            logln("bi.following(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+        }
+    }
+
+    private void _testPreceding(BreakIterator bi, String text, int[] boundaries) {
+        logln("testPreceding():");
+        int p = 0;
+        for (int i = 0; i <= text.length(); i++) {
+            int b = bi.preceding(i);
+            logln("bi.preceding(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+
+            if (i == boundaries[p + 1])
+                ++p;
+        }
+    }
+
+    private void _testIsBoundary(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 1;
+        boolean isB;
+        for (int i = 0; i <= text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                ++p;
+            }
+            else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+
+    private void doMultipleSelectionTest(BreakIterator iterator, String testText)
+    {
+        logln("Multiple selection test...");
+        BreakIterator testIterator = (BreakIterator)iterator.clone();
+        int offset = iterator.first();
+        int testOffset;
+        int count = 0;
+
+        do {
+            testOffset = testIterator.first();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count++;
+                offset = iterator.next();
+            }
+        } while (offset != BreakIterator.DONE);
+
+        // now do it backwards...
+        offset = iterator.last();
+        count = 0;
+
+        do {
+            testOffset = testIterator.last();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count--;
+                offset = iterator.previous();
+            }
+        } while (offset != BreakIterator.DONE);
+    }
+
+
+    private void doOtherInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("a\r\na");
+        int errorCount = 0;
+
+        // a break should never occur between CR and LF
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(3, testChars.charAt(j));
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between CR and LF in string U+" + Integer.toHexString(
+                                (int)(work.charAt(0))) + ", U+d U+a U+" + Integer.toHexString(
+                                (int)(work.charAt(3))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+
+        // a break should never occur before a non-spacing mark, unless it's preceded
+        // by a line terminator
+        work.setLength(0);
+        work.append("aaaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\n' || c == '\r' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(1, c);
+            for (int j = 0; j < testChars.length(); j++) {
+                c = testChars.charAt(j);
+                if (Character.getType(c) != Character.NON_SPACING_MARK && Character.getType(c)
+                        != Character.ENCLOSING_MARK)
+                    continue;
+                work.setCharAt(2, c);
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+    }
+
+    public void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    //=========================================================================
+    // tests
+    //=========================================================================
+
+
+    /**
+     * @bug 4097779
+     */
+    public void TestBug4097779() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("aa\u0300a");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Words() {
+        Vector wordSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        wordSelectionData.addElement("\uc0c1\ud56d");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\ud55c\uc778");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc5f0\ud569");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c");
+        wordSelectionData.addElement(" ");
+        // conjoining jamo...
+        wordSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+
+    /**
+     * @bug 4111338
+     */
+    public void TestBug4111338() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4111338: Don't break sentences at the boundary between CJK
+        // and other letters
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:\"JAVA\u821c"
+                + "\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba"
+                + "\u611d\u57b6\u2510\u5d46\".\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4"
+                + "\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8"
+                + "\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("He said, \"I can go there.\"\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+
+    /**
+     * @bug 4143071
+     */
+    public void TestBug4143071() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences that end with digits work right
+        sentenceSelectionData.addElement("Today is the 27th of May, 1998.  ");
+        sentenceSelectionData.addElement("Tomorrow will be 28 May 1998.  ");
+        sentenceSelectionData.addElement("The day after will be the 30th.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152416
+     */
+    public void TestBug4152416() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences ending with a capital letter are treated correctly
+        sentenceSelectionData.addElement("The type of all primitive "
+                + "<code>boolean</code> values accessed in the target VM.  ");
+        sentenceSelectionData.addElement("Calls to xxx will return an "
+                + "implementor of this interface.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152117
+     */
+    public void TestBug4152117() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentence breaking is handling punctuation correctly
+        // [COULD NOT REPRODUCE THIS BUG, BUT TEST IS HERE TO MAKE SURE
+        // IT DOESN'T CROP UP]
+        sentenceSelectionData.addElement("Constructs a randomly generated "
+                + "BigInteger, uniformly distributed over the range <tt>0</tt> "
+                + "to <tt>(2<sup>numBits</sup> - 1)</tt>, inclusive.  ");
+        sentenceSelectionData.addElement("The uniformity of the distribution "
+                + "assumes that a fair source of random bits is provided in "
+                + "<tt>rnd</tt>.  ");
+        sentenceSelectionData.addElement("Note that this constructor always "
+                + "constructs a non-negative BigInteger.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("Multi-");
+        lineSelectionData.addElement("Level ");
+        lineSelectionData.addElement("example ");
+        lineSelectionData.addElement("of ");
+        lineSelectionData.addElement("a ");
+        lineSelectionData.addElement("semi-");
+        lineSelectionData.addElement("idiotic ");
+        lineSelectionData.addElement("non-");
+        lineSelectionData.addElement("sensical ");
+        lineSelectionData.addElement("(non-");
+        lineSelectionData.addElement("important) ");
+        lineSelectionData.addElement("sentence. ");
+
+        lineSelectionData.addElement("Hi  ");
+        lineSelectionData.addElement("Hello ");
+        lineSelectionData.addElement("How\n");
+        lineSelectionData.addElement("are\r");
+        lineSelectionData.addElement("you\u2028");
+        lineSelectionData.addElement("fine.\t");
+        lineSelectionData.addElement("good.  ");
+
+        lineSelectionData.addElement("Now\r");
+        lineSelectionData.addElement("is\n");
+        lineSelectionData.addElement("the\r\n");
+        lineSelectionData.addElement("time\n");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("for\r");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("all");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4068133
+     */
+    public void TestBug4068133() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("\u96f6");
+        lineSelectionData.addElement("\u4e00\u3002");
+        lineSelectionData.addElement("\u4e8c\u3001");
+        lineSelectionData.addElement("\u4e09\u3002\u3001");
+        lineSelectionData.addElement("\u56db\u3001\u3002\u3001");
+        lineSelectionData.addElement("\u4e94,");
+        lineSelectionData.addElement("\u516d.");
+        lineSelectionData.addElement("\u4e03.\u3001,\u3002");
+        lineSelectionData.addElement("\u516b");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4086052
+     */
+    public void TestBug4086052() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("foo\u00a0bar ");
+//        lineSelectionData.addElement("foo\ufeffbar");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4097920
+     */
+    public void TestBug4097920() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("dog,cat,mouse ");
+        lineSelectionData.addElement("(one)");
+        lineSelectionData.addElement("(two)\n");
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+ 
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // Fullwidth .!? should be treated as postJwrd
+        lineSelectionData.addElement("\u4e01\uff0e");
+        lineSelectionData.addElement("\u4e02\uff01");
+        lineSelectionData.addElement("\u4e03\uff1f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestLettersAndDigits() {
+        // a character sequence such as "X11" or "30F3" or "native2ascii" should
+        // be kept together as a single word
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("X11 ");
+        lineSelectionData.addElement("30F3 ");
+        lineSelectionData.addElement("native2ascii");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+
+    private static final String graveS = "S\u0300";
+    private static final String acuteBelowI = "i\u0317";
+    private static final String acuteE = "e\u0301";
+    private static final String circumflexA = "a\u0302";
+    private static final String tildeE = "e\u0303";
+
+    public void TestCharacterBreak() {
+        Vector characterSelectionData = new Vector();
+
+        characterSelectionData.addElement(graveS);
+        characterSelectionData.addElement(acuteBelowI);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(acuteE);
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("s");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(tildeE);
+        characterSelectionData.addElement(".");
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement("a");
+        characterSelectionData.addElement("f");
+        characterSelectionData.addElement("q");
+        characterSelectionData.addElement("\n");
+        characterSelectionData.addElement("\r");
+        characterSelectionData.addElement("\r\n");
+        characterSelectionData.addElement("\n");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Characters() {
+        Vector characterSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        characterSelectionData.addElement("\uc0c1");
+        characterSelectionData.addElement("\ud56d");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\ud55c");
+        characterSelectionData.addElement("\uc778");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc5f0");
+        characterSelectionData.addElement("\ud569");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc7a5");
+        characterSelectionData.addElement("\ub85c");
+        characterSelectionData.addElement("\uad50");
+        characterSelectionData.addElement("\ud68c");
+        characterSelectionData.addElement(" ");
+        // conjoining jamo...
+        characterSelectionData.addElement("\u1109\u1161\u11bc");
+        characterSelectionData.addElement("\u1112\u1161\u11bc");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u1112\u1161\u11ab");
+        characterSelectionData.addElement("\u110b\u1175\u11ab");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110b\u1167\u11ab");
+        characterSelectionData.addElement("\u1112\u1161\u11b8");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110c\u1161\u11bc");
+        characterSelectionData.addElement("\u1105\u1169");
+        characterSelectionData.addElement("\u1100\u116d");
+        characterSelectionData.addElement("\u1112\u116c");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    public void TestTitleBreak()
+    {
+        Vector titleData = new Vector();
+        titleData.addElement("   ");
+        titleData.addElement("This ");
+        titleData.addElement("is ");
+        titleData.addElement("a ");
+        titleData.addElement("simple ");
+        titleData.addElement("sample ");
+        titleData.addElement("sentence. ");
+        titleData.addElement("This ");
+
+        generalIteratorTest(titleBreak, titleData);
+    }
+
+
+
+    /*
+     * @bug 4153072
+     */
+    public void TestBug4153072() {
+        BreakIterator iter = BreakIterator.getWordInstance();
+        String str = "...Hello, World!...";
+        int begin = 3;
+        int end = str.length() - 3;
+        // not used boolean gotException = false;
+ 
+
+        iter.setText(new StringCharacterIterator(str, begin, end, begin));
+        for (int index = -1; index < begin + 1; ++index) {
+            try {
+                iter.isBoundary(index);
+                if (index < begin)
+                    errln("Didn't get exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+            catch (IllegalArgumentException e) {
+                if (index >= begin)
+                    errln("Got exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+        }
+    }
+
+
+    public void TestBug4146175Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // the fullwidth comma should stick to the preceding Japanese character
+        lineSelectionData.addElement("\u7d42\uff0c");
+        lineSelectionData.addElement("\u308f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    private static final String cannedTestChars
+        = "\u0000\u0001\u0002\u0003\u0004 !\"#$%&()+-01234<=>ABCDE[]^_`abcde{}|\u00a0\u00a2"
+        + "\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00ab\u00ad\u00ae\u00af\u00b0\u00b2\u00b3"
+        + "\u00b4\u00b9\u00bb\u00bc\u00bd\u02b0\u02b1\u02b2\u02b3\u02b4\u0300\u0301\u0302\u0303"
+        + "\u0304\u05d0\u05d1\u05d2\u05d3\u05d4\u0903\u093e\u093f\u0940\u0949\u0f3a\u0f3b\u2000"
+        + "\u2001\u2002\u200c\u200d\u200e\u200f\u2010\u2011\u2012\u2028\u2029\u202a\u203e\u203f"
+        + "\u2040\u20dd\u20de\u20df\u20e0\u2160\u2161\u2162\u2163\u2164";
+
+    public void TestSentenceInvariants()
+    {
+        BreakIterator e = BreakIterator.getSentenceInstance();
+        doOtherInvariantTest(e, cannedTestChars + ".,\u3001\u3002\u3041\u3042\u3043\ufeff");
+    }
+
+    public void TestEmptyString()
+    {
+        String text = "";
+        Vector x = new Vector();
+        x.addElement(text);
+
+        generalIteratorTest(lineBreak, x);
+    }
+
+    public void TestGetAvailableLocales()
+    {
+        Locale[] locList = BreakIterator.getAvailableLocales();
+
+        if (locList.length == 0)
+            errln("getAvailableLocales() returned an empty list!");
+        // I have no idea how to test this function...
+        
+        com.ibm.icu.util.ULocale[] ulocList = BreakIterator.getAvailableULocales();
+        if (ulocList.length == 0) {
+            errln("getAvailableULocales() returned an empty list!");        
+        } else {
+            logln("getAvailableULocales() returned " + ulocList.length + " locales");
+        }
+    }
+
+    
+    /**
+     * @bug 4068137
+     */
+    public void TestEndBehavior()
+    {
+        String testString = "boo.";
+        BreakIterator wb = BreakIterator.getWordInstance();
+        wb.setText(testString);
+
+        if (wb.first() != 0)
+            errln("Didn't get break at beginning of string.");
+        if (wb.next() != 3)
+            errln("Didn't get break before period in \"boo.\"");
+        if (wb.current() != 4 && wb.next() != 4)
+            errln("Didn't get break at end of string.");
+    }
+
+    // The Following two tests are ported from ICU4C 1.8.1 [Richard/GCL]
+    /**
+     * Port From:   ICU4C v1.8.1 : textbounds : IntlTestTextBoundary
+     * Source File: $ICU4CRoot/source/test/intltest/ittxtbd.cpp
+     **/
+    /**
+     * test methods preceding, following and isBoundary
+     **/
+    public void TestPreceding() {
+        String words3 = "aaa bbb ccc";
+        BreakIterator e = BreakIterator.getWordInstance(Locale.getDefault());
+        e.setText( words3 );
+        e.first();
+        int p1 = e.next();
+        int p2 = e.next();
+        int p3 = e.next();
+        int p4 = e.next();
+
+        int f = e.following(p2+1);
+        int p = e.preceding(p2+1);
+        if (f!=p3)
+            errln("IntlTestTextBoundary::TestPreceding: f!=p3");
+        if (p!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p!=p2");
+
+        if (p1+1!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p1+1!=p2");
+
+        if (p3+1!=p4)
+            errln("IntlTestTextBoundary::TestPreceding: p3+1!=p4");
+
+        if (!e.isBoundary(p2) || e.isBoundary(p2+1) || !e.isBoundary(p3))
+        {
+            errln("IntlTestTextBoundary::TestPreceding: isBoundary err");
+        }
+    }
+
+    
+    /**
+     * Bug 4450804
+     */
+    public void TestLineBreakContractions() {
+        Vector expected = new Vector();
+        expected.add("These ");
+        expected.add("are ");
+        expected.add("'foobles'. ");
+        expected.add("Don't ");
+        expected.add("you ");
+        expected.add("like ");
+        expected.add("them?");
+        generalIteratorTest(lineBreak, expected);
+    }
+
+    /**
+     * Ticket#5615
+     */
+    public void TestT5615() {
+        com.ibm.icu.util.ULocale[] ulocales = BreakIterator.getAvailableULocales();
+        int type = 0;
+        com.ibm.icu.util.ULocale loc = null;
+        try {
+            for (int i = 0; i < ulocales.length; i++) {
+                loc = ulocales[i];
+                for (type = 0; type < 5 /* 5 = BreakIterator.KIND_COUNT */; ++type) {
+                    BreakIterator brk = BreakIterator.getBreakInstance(loc, type);
+                    if (brk == null) {
+                        errln("ERR: Failed to create an instance type: " + type + " / locale: " + loc);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            errln("ERR: Failed to create an instance type: " + type + " / locale: " + loc + " / exception: " + e.getMessage());
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
new file mode 100644
index 0000000..2c31cbb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
@@ -0,0 +1,418 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : rbbi : RBBIAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/rbbiapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import java.util.Locale;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+/**
+ * API Test the RuleBasedBreakIterator class
+ */
+public class RBBIAPITest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new RBBIAPITest().run(args);
+    }
+    
+    /**
+     * Tests clone() and equals() methods of RuleBasedBreakIterator         
+     **/
+    public void TestCloneEquals() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator biequal = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+
+        String testString = "Testing word break iterators's clone() and equals()";
+        bi1.setText(testString);
+        bi2.setText(testString);
+        biequal.setText(testString);
+        
+        bi3.setText("hello");
+        logln("Testing equals()");
+        logln("Testing == and !=");
+        if (!bi1.equals(biequal) || bi1.equals(bi2) || bi1.equals(bi3))
+            errln("ERROR:1 RBBI's == and !- operator failed.");
+        if (bi2.equals(biequal) || bi2.equals(bi1) || biequal.equals(bi3))
+            errln("ERROR:2 RBBI's == and != operator  failed.");
+        logln("Testing clone()");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (!bi1clone.equals(bi1)
+            || !bi1clone.equals(biequal)
+            || bi1clone.equals(bi3)
+            || bi1clone.equals(bi2))
+            errln("ERROR:1 RBBI's clone() method failed");
+
+        if (bi2clone.equals(bi1)
+            || bi2clone.equals(biequal)
+            || bi2clone.equals(bi3)
+            || !bi2clone.equals(bi2))
+            errln("ERROR:2 RBBI's clone() method failed");
+
+        if (!bi1.getText().equals(bi1clone.getText())
+            || !bi2clone.getText().equals(bi2.getText())
+            || bi2clone.equals(bi1clone))
+            errln("ERROR: RBBI's clone() method failed");
+    }
+    
+    /**
+     * Tests toString() method of RuleBasedBreakIterator
+     **/
+    public void TestToString() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing toString()");
+        bi1.setText("Hello there");
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) bi1.clone();
+        String temp = bi1.toString();
+        String temp2 = bi2.toString();
+        String temp3 = bi3.toString();
+        if (temp2.equals(temp3) || temp.equals(temp2) || !temp.equals(temp3))
+            errln("ERROR: error in toString() method");
+    }
+    
+    /**
+     * Tests the method hashCode() of RuleBasedBreakIterator
+     **/
+    public void TestHashCode() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing hashCode()");
+        bi1.setText("Hash code");
+        bi2.setText("Hash code");
+        bi3.setText("Hash code");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (bi1.hashCode() != bi1clone.hashCode()
+            || bi1.hashCode() != bi3.hashCode()
+            || bi1clone.hashCode() != bi3.hashCode()
+            || bi2.hashCode() != bi2clone.hashCode())
+            errln("ERROR: identical objects have different hashcodes");
+        
+        if (bi1.hashCode() == bi2.hashCode()
+            || bi2.hashCode() == bi3.hashCode()
+            || bi1clone.hashCode() == bi2clone.hashCode()
+            || bi1clone.hashCode() == bi2.hashCode())
+            errln("ERROR: different objects have same hashcodes");
+    }
+    
+    /**
+      * Tests the methods getText() and setText() of RuleBasedBreakIterator
+      **/
+    public void TestGetSetText() {
+        logln("Testing getText setText ");
+        String str1 = "first string.";
+        String str2 = "Second string.";
+        //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+        CharacterIterator text1 = new StringCharacterIterator(str1);
+        //CharacterIterator text1Clone = (CharacterIterator) text1.clone();
+        //CharacterIterator text2 = new StringCharacterIterator(str2);
+        wordIter1.setText(str1);
+        if (!wordIter1.getText().equals(text1))
+            errln("ERROR:1 error in setText or getText ");
+        if (wordIter1.current() != 0)
+            errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is"
+                   + wordIter1.current() + "\n"); 
+        wordIter1.next(2);
+        wordIter1.setText(str2);
+        if (wordIter1.current() != 0)
+            errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is"
+                    + wordIter1.current() + "\n"); 
+        //ICU4J has remove the method adoptText
+        /*
+        charIter1.adoptText(text1Clone);
+        if (wordIter1.getText() == charIter1.getText()
+            || wordIter1.getText() != text2
+            || charIter1.getText() != text1)
+            errln((UnicodeString) "ERROR:2 error is getText or setText()");
+        
+        RuleBasedBreakIterator rb = (RuleBasedBreakIterator) wordIter1.clone();
+        rb.adoptText(text1);
+        if (rb.getText() != text1)
+            errln((UnicodeString) "ERROR:1 error in adoptText ");
+        rb.adoptText(text2);
+        if (rb.getText() != text2)
+            errln((UnicodeString) "ERROR:2 error in adoptText ");
+        */
+    }
+    
+    /**
+      * Testing the methods first(), next(), next(int) and following() of RuleBasedBreakIterator
+      *   TODO:  Most of this test should be retired, rule behavior is much better covered by
+      *          TestExtended, which is also easier to understand and maintain.
+      **/
+    public void TestFirstNextFollowing() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25";
+        logln("Testing first() and next(), following() with custom rules");
+        logln("testing word iterator - string :- \"" + testString + "\"\n");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        wordIter1.setText(testString);
+        p = wordIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = wordIter1.next(9);
+        doTest(testString, p, q, 20, "This is a word break");
+        p = q;
+        q = wordIter1.next();
+        doTest(testString, p, q, 21, ".");
+        p = q;
+        q = wordIter1.next(3);
+        doTest(testString, p, q, 28, " Isn't ");
+        p = q;
+        q = wordIter1.next(2);
+        doTest(testString, p, q, 31, "it?");
+        q = wordIter1.following(2);
+        doTest(testString, 2, q, 4, "is");
+        q = wordIter1.following(22);
+        doTest(testString, 22, q, 27, "Isn't");
+        wordIter1.last();
+        p = wordIter1.next();
+        q = wordIter1.following(wordIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: next()/following() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length() + "\n"); 
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        testString = "Write hindi here. "; 
+        logln("testing char iter - string:- \"" + testString + "\"");
+        charIter1.setText(testString);
+        p = charIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = charIter1.next();
+        doTest(testString, p, q, 1, "W");
+        p = q;
+        q = charIter1.next(4);
+        doTest(testString, p, q, 5, "rite");
+        p = q;
+        q = charIter1.next(12);
+        doTest(testString, p, q, 17, " hindi here.");
+        p = q;
+        q = charIter1.next(-6);
+        doTest(testString, p, q, 11, " here.");
+        p = q;
+        q = charIter1.next(6);
+        doTest(testString, p, q, 17, " here.");
+        p = charIter1.following(charIter1.last());
+        q = charIter1.next(charIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This  costs $20,00,000."; 
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        sentIter1.setText(testString);
+        p = sentIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = sentIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        q = sentIter1.next(2);
+        doTest(testString, p, q, 31, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(-2);
+        doTest(testString, p, q, 7, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(4);
+        doTest(testString, p, q, 60, "how are you? I'am fine. Thankyou. How are you doing? ");
+        p = q;
+        q = sentIter1.next();
+        doTest(testString, p, q, 83, "This  costs $20,00,000.");
+        q = sentIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = sentIter1.following(10);
+        doTest(testString, 10, q, 20, " are you? ");
+        q = sentIter1.following(20);
+        doTest(testString, 20, q, 31, "I'am fine. ");
+        p = sentIter1.following(sentIter1.last());
+        q = sentIter1.next(sentIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how\r\n (are)\r you? I'am fine- Thankyou. foo\u00a0bar How, are, you? This, costs $20,00,000."; 
+        logln("(UnicodeString)testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 
+        lineIter1.setText(testString);
+        p = lineIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = lineIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        p = q;
+        q = lineIter1.next(4);
+        doTest(testString, p, q, 20, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(-4);
+        doTest(testString, p, q, 7, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(6);
+        doTest(testString, p, q, 30, "how\r\n (are)\r you? I'am ");
+        p = q;
+        q = lineIter1.next();
+        doTest(testString, p, q, 36, "fine- ");
+        p = q;
+        q = lineIter1.next(2);
+        doTest(testString, p, q, 54, "Thankyou. foo\u00a0bar ");
+        q = lineIter1.following(60);
+        doTest(testString, 60, q, 64, "re, ");
+        q = lineIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = lineIter1.following(10);
+        doTest(testString, 10, q, 12, "\r\n");
+        q = lineIter1.following(20);
+        doTest(testString, 20, q, 25, "you? ");
+        p = lineIter1.following(lineIter1.last());
+        q = lineIter1.next(lineIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+    }
+    
+    /**
+     * Testing the methods lastt(), previous(), and preceding() of RuleBasedBreakIterator
+     **/
+    public void TestLastPreviousPreceding() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25 dollars";
+        logln("Testing last(),previous(), preceding() with custom rules");
+        logln("testing word iteration for string \"" + testString + "\"");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+        wordIter1.setText(testString);
+        p = wordIter1.last();
+        if (p != testString.length()) {
+            errln("ERROR: first() returned" + p + "instead of" + testString.length());
+        }
+        q = wordIter1.previous();
+        doTest(testString, p, q, 37, "dollars");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 36, " ");
+        q = wordIter1.preceding(25);
+        doTest(testString, 25, q, 22, "Isn");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 21, " ");
+        q = wordIter1.preceding(20);
+        doTest(testString, 20, q, 15, "break");
+        p = wordIter1.preceding(wordIter1.first());
+        if (p != BreakIterator.DONE)
+            errln("ERROR: preceding()  at starting position returned #" + p + " instead of 0");
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This  costs $20,00,000."; 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 
+        sentIter1.setText(testString);
+        p = sentIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = sentIter1.previous();
+        doTest(testString, p, q, 60, "This  costs $20,00,000.");
+        p = q;
+        q = sentIter1.previous();
+        doTest(testString, p, q, 41, "How are you doing? ");
+        q = sentIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = sentIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        sentIter1.first();
+        p = sentIter1.previous();
+        q = sentIter1.preceding(sentIter1.first());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n"); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 
+        logln("testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault());
+        lineIter1.setText(testString);
+        p = lineIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = lineIter1.previous();
+        doTest(testString, p, q, 72, "$20,00,000.");
+        p = q;
+        q = lineIter1.previous();
+        doTest(testString, p, q, 66, "costs ");
+        q = lineIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = lineIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        lineIter1.first();
+        p = lineIter1.previous();
+        q = lineIter1.preceding(sentIter1.first());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n");
+    }
+    
+    /**
+     * Tests the method IsBoundary() of RuleBasedBreakIterator
+     **/
+    public void TestIsBoundary() {
+        String testString1 = "Write here. \u092d\u0301\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 a\u0301u";
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault());
+        charIter1.setText(testString1);
+        int bounds1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21, 22, 23, 25, 26};
+        doBoundaryTest(charIter1, testString1, bounds1);
+        RuleBasedBreakIterator wordIter2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        wordIter2.setText(testString1);
+        int bounds2[] = {0, 5, 6, 10, 11, 12, 16, 17, 22, 23, 26};
+        doBoundaryTest(wordIter2, testString1, bounds2);
+    }
+    
+    //---------------------------------------------
+    //Internal subroutines
+    //---------------------------------------------
+    
+    /* Internal subroutine used by TestIsBoundary() */ 
+    public void doBoundaryTest(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 0;
+        boolean isB;
+        for (int i = 0; i < text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                p++;
+            } else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+    
+    /*Internal subroutine used for comparision of expected and acquired results */
+    public void doTest(String testString, int start, int gotoffset, int expectedOffset, String expectedString) {
+        String selected;
+        String expected = expectedString;
+        if (gotoffset != expectedOffset)
+            errln("ERROR:****returned #" + gotoffset + " instead of #" + expectedOffset);
+        if (start <= gotoffset) {
+            selected = testString.substring(start, gotoffset);
+        } else {
+            selected = testString.substring(gotoffset, start);
+        }
+        if (!selected.equals(expected))
+            errln("ERROR:****selected \"" + selected + "\" instead of \"" + expected + "\"");
+        else
+            logln("****selected \"" + selected + "\"");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
new file mode 100644
index 0000000..95945b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -0,0 +1,571 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+ 
+//Regression testing of RuleBasedBreakIterator
+//
+//  TODO:  These tests should be mostly retired.
+//          Much of the test data that was originally here was removed when the RBBI rules
+//            were updated to match the Unicode boundary TRs, and the data was found to be invalid.
+//          Much of the remaining data has been moved into the rbbitst.txt test data file,
+//            which is common between ICU4C and ICU4J.  The remaining test data should also be moved,
+//            or simply retired if it is no longer interesting.
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Vector;
+
+public class RBBITest extends TestFmwk 
+{  
+    
+  public static void main(String[] args) throws Exception {
+    new RBBITest().run(args);
+  }
+
+  public RBBITest() { 
+  }
+  
+  private static final String halfNA = "\u0928\u094d\u200d";  /*halfform NA = devanigiri NA + virama(supresses inherent vowel)+ zero width joiner */  
+
+
+  // tests default rules based character iteration.
+  // Builds a new iterator from the source rules in the default (prebuilt) iterator.
+  //
+  public void TestDefaultRuleBasedCharacterIteration(){
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getCharacterInstance();
+      logln("Testing the RBBI for character iteration by using default rules");
+
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator charIterDefault=null;
+      try{
+          charIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedCharacterIteration()"+ iae.toString());
+      }
+
+      Vector chardata = new Vector();
+      chardata.addElement("H");
+      chardata.addElement("e");
+      chardata.addElement("l");
+      chardata.addElement("l");
+      chardata.addElement("o");
+      chardata.addElement("e\u0301");                   //acuteE
+      chardata.addElement("&");
+      chardata.addElement("e\u0303");                   //tildaE
+      //devanagiri characters for Hindi support
+      chardata.addElement("\u0906");                    //devanagiri AA
+      //chardata.addElement("\u093e\u0901");              //devanagiri vowelsign AA+ chandrabindhu
+      chardata.addElement("\u0916\u0947");              //devanagiri KHA+vowelsign E
+      chardata.addElement("\u0938\u0941\u0902");        //devanagiri SA+vowelsign U + anusvara(bindu)
+      chardata.addElement("\u0926");                    //devanagiri consonant DA
+      chardata.addElement("\u0930");                    //devanagiri consonant RA
+      // chardata.addElement("\u0939\u094c");              //devanagiri HA+vowel sign AI
+      chardata.addElement("\u0964");                    //devanagiri danda
+      //end hindi characters      
+      chardata.addElement("A\u0302");                   // circumflexA 
+      chardata.addElement("i\u0301");                   // acuteBelowI   
+      // conjoining jamo... 
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement("\n");
+      chardata.addElement("\r\n");                      // keep CRLF sequences together  
+      chardata.addElement("S\u0300");                   //graveS
+      chardata.addElement("i\u0301");                   // acuteBelowI
+      chardata.addElement("!");
+
+       // What follows is a string of Korean characters (I found it in the Yellow Pages
+      // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+      // it correctly), first as precomposed syllables, and then as conjoining jamo.
+      // Both sequences should be semantically identical and break the same way.
+      // precomposed syllables...
+      chardata.addElement("\uc0c1");
+      chardata.addElement("\ud56d");
+      chardata.addElement(" ");
+      chardata.addElement("\ud55c");
+      chardata.addElement("\uc778");
+      chardata.addElement(" ");
+      chardata.addElement("\uc5f0");
+      chardata.addElement("\ud569");
+      chardata.addElement(" ");
+      chardata.addElement("\uc7a5");
+      chardata.addElement("\ub85c");
+      chardata.addElement("\uad50");
+      chardata.addElement("\ud68c");
+      chardata.addElement(" ");
+       // conjoining jamo...
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement(" ");
+      chardata.addElement("\u1112\u1161\u11ab");
+      chardata.addElement("\u110b\u1175\u11ab");
+      chardata.addElement(" ");
+      chardata.addElement("\u110b\u1167\u11ab");
+      chardata.addElement("\u1112\u1161\u11b8");
+      chardata.addElement(" ");
+      chardata.addElement("\u110c\u1161\u11bc");
+      chardata.addElement("\u1105\u1169");
+      chardata.addElement("\u1100\u116d");
+      chardata.addElement("\u1112\u116c");
+
+
+      generalIteratorTest(charIterDefault, chardata);
+
+  }
+
+  public void TestDefaultRuleBasedWordIteration(){
+      logln("Testing the RBBI for word iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getWordInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator wordIterDefault=null;
+      try{
+      wordIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedWordIteration() -- custom rules"+ iae.toString());
+      }
+
+      Vector worddata = new Vector();
+      worddata.addElement ("Write");
+      worddata.addElement (" ");
+      worddata.addElement ("wordrules");
+      worddata.addElement (".");
+      worddata.addElement(" ");
+      //worddata.addElement("alpha-beta-gamma");
+      worddata.addElement(" ");      
+      worddata.addElement("\u092f\u0939");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u093f" + halfNA + "\u0926\u0940");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u0948");
+      //  worddata.addElement("\u0964");   //danda followed by a space
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u093e\u092a");
+      worddata.addElement(" ");
+      worddata.addElement("\u0938\u093f\u0916\u094b\u0917\u0947");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+       worddata.addElement("\r");
+      worddata.addElement("It's");
+      worddata.addElement(" ");
+     // worddata.addElement("$30.10");
+      worddata.addElement(" ");  
+       worddata.addElement(" ");
+      worddata.addElement("Badges");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+      worddata.addElement("BADGES");
+      worddata.addElement("!");
+      worddata.addElement("1000,233,456.000");
+      worddata.addElement(" ");
+
+      generalIteratorTest(wordIterDefault, worddata);
+  }
+//  private static final String kParagraphSeparator = "\u2029";
+  private static final String kLineSeparator      = "\u2028";
+
+  public void TestDefaultRuleBasedSentenceIteration(){
+      logln("Testing the RBBI for sentence iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getSentenceInstance();
+      
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      RuleBasedBreakIterator sentIterDefault=null;
+      try{
+          sentIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedSentenceIteration()" + iae.toString());
+      }
+      
+      Vector sentdata = new Vector();
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("Testing the sentence iterator. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("It does not have to make any sense as you can see. ");
+      sentdata.addElement("Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. ");
+      sentdata.addElement("Che la dritta via aveo smarrita. ");
+       generalIteratorTest(sentIterDefault, sentdata);
+  }
+   
+  public void TestDefaultRuleBasedLineIteration(){
+      logln("Testing the RBBI for line iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getLineInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      RuleBasedBreakIterator lineIterDefault=null;
+      try{
+          lineIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedLineIteration()" + iae.toString());
+      }
+
+     Vector linedata = new Vector();
+     linedata.addElement("Multi-");
+     linedata.addElement("Level ");
+     linedata.addElement("example ");
+     linedata.addElement("of ");
+     linedata.addElement("a ");
+     linedata.addElement("semi-");
+     linedata.addElement("idiotic ");
+     linedata.addElement("non-");
+     linedata.addElement("sensical ");
+     linedata.addElement("(non-");
+     linedata.addElement("important) ");
+     linedata.addElement("sentence. ");
+
+     linedata.addElement("Hi  ");
+     linedata.addElement("Hello ");
+     linedata.addElement("How\n");
+     linedata.addElement("are\r");
+     linedata.addElement("you" + kLineSeparator);
+     linedata.addElement("fine.\t");
+     linedata.addElement("good.  ");
+
+     linedata.addElement("Now\r");
+     linedata.addElement("is\n");
+     linedata.addElement("the\r\n");
+     linedata.addElement("time\n");
+     linedata.addElement("\r");
+     linedata.addElement("for\r");
+     linedata.addElement("\r");
+     linedata.addElement("all");
+
+     generalIteratorTest(lineIterDefault, linedata);
+
+
+  }
+ 
+      //=========================================================================
+     // general test subroutines
+     //=========================================================================
+
+     private void generalIteratorTest(RuleBasedBreakIterator rbbi, Vector expectedResult){
+         StringBuffer buffer = new StringBuffer();
+         String text;
+         for (int i = 0; i < expectedResult.size(); i++) {
+             text = (String)expectedResult.elementAt(i);
+             buffer.append(text);
+         }
+         text = buffer.toString();
+         if (rbbi == null) {
+             errln("null iterator, test skipped.");
+             return;
+         }
+
+         rbbi.setText(text);
+
+         Vector nextResults = _testFirstAndNext(rbbi, text);
+         Vector previousResults = _testLastAndPrevious(rbbi, text);
+
+         logln("comparing forward and backward...");
+         int errs = getErrorCount();
+         compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                         previousResults);
+         if (getErrorCount() == errs) {
+             logln("comparing expected and actual...");
+             compareFragmentLists("expected result", "actual result", expectedResult,
+                             nextResults);
+         }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = RuleBasedBreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+         boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).length();
+      
+        boundaries[boundaries.length - 1] = RuleBasedBreakIterator.DONE;
+      
+        _testFollowing(rbbi, text, boundaries);
+        _testPreceding(rbbi, text, boundaries);
+        _testIsBoundary(rbbi, text, boundaries);
+
+        doMultipleSelectionTest(rbbi, text);
+     }
+
+     private Vector _testFirstAndNext(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.first();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != 0)
+             errln("first() returned " + p + " instead of 0");
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.next();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p <= lastP)
+                     errln("next() failed to move forward: next() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.addElement(text.substring(lastP, p));
+             }
+             else {
+                 if (lastP != text.length())
+                     errln("next() returned DONE prematurely: offset was "
+                                     + lastP + " instead of " + text.length());
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private Vector _testLastAndPrevious(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.last();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != text.length())
+             errln("last() returned " + p + " instead of " + text.length());
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.previous();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p >= lastP)
+                     errln("previous() failed to move backward: previous() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.insertElementAt(text.substring(p, lastP), 0);
+             }
+             else {
+                 if (lastP != 0)
+                     errln("previous() returned DONE prematurely: offset was "
+                                     + lastP + " instead of 0");
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+         int p1 = 0;
+         int p2 = 0;
+         String s1;
+         String s2;
+         int t1 = 0;
+         int t2 = 0;
+
+         while (p1 < f1.size() && p2 < f2.size()) {
+             s1 = (String)f1.elementAt(p1);
+             s2 = (String)f2.elementAt(p2);
+             t1 += s1.length();
+             t2 += s2.length();
+
+             if (s1.equals(s2)) {
+                 debugLogln("   >" + s1 + "<");
+                 ++p1;
+                 ++p2;
+             }
+             else {
+                 int tempT1 = t1;
+                 int tempT2 = t2;
+                 int tempP1 = p1;
+                 int tempP2 = p2;
+
+                 while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                     while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                         tempT1 += ((String)f1.elementAt(tempP1)).length();
+                         ++tempP1;
+                     }
+                     while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                         tempT2 += ((String)f2.elementAt(tempP2)).length();
+                         ++tempP2;
+                     }
+                 }
+                 logln("*** " + f1Name + " has:");
+                 while (p1 <= tempP1 && p1 < f1.size()) {
+                     s1 = (String)f1.elementAt(p1);
+                     t1 += s1.length();
+                     debugLogln(" *** >" + s1 + "<");
+                     ++p1;
+                 }
+                 logln("***** " + f2Name + " has:");
+                 while (p2 <= tempP2 && p2 < f2.size()) {
+                     s2 = (String)f2.elementAt(p2);
+                     t2 += s2.length();
+                     debugLogln(" ***** >" + s2 + "<");
+                     ++p2;
+                 }
+                 errln("Discrepancy between " + f1Name + " and " + f2Name);
+             }
+         }
+     }
+
+    private void _testFollowing(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testFollowing():");
+       int p = 2;
+       for(int i = 0; i <= text.length(); i++) {
+           if (i == boundaries[p])
+               ++p;
+           int b = rbbi.following(i);
+           logln("rbbi.following(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                               + ", got " + b);
+       }
+   }
+
+   private void _testPreceding(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testPreceding():");
+       int p = 0;
+       for(int i = 0; i <= text.length(); i++) {
+           int b = rbbi.preceding(i);
+           logln("rbbi.preceding(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                              + ", got " + b);
+           if (i == boundaries[p + 1])
+               ++p;
+       }
+   }
+
+   private void _testIsBoundary(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testIsBoundary():");
+       int p = 1;
+       boolean isB;
+       for(int i = 0; i <= text.length(); i++) {
+           isB = rbbi.isBoundary(i);
+           logln("rbbi.isBoundary(" + i + ") -> " + isB);
+           if(i == boundaries[p]) {
+               if (!isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+               ++p;
+           }
+           else {
+               if(isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+           }
+       }
+   }
+   private void doMultipleSelectionTest(RuleBasedBreakIterator iterator, String testText)
+   {
+       logln("Multiple selection test...");
+       RuleBasedBreakIterator testIterator = (RuleBasedBreakIterator)iterator.clone();
+       int offset = iterator.first();
+       int testOffset;
+       int count = 0;
+
+       do {
+           testOffset = testIterator.first();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count++;
+               offset = iterator.next();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+
+       // now do it backwards...
+       offset = iterator.last();
+       count = 0;
+
+       do {
+           testOffset = testIterator.last();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count--;
+               offset = iterator.previous();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+   }
+
+   private void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+         logln(out.toString());
+    }
+   
+   public void TestThaiDictionaryBreakIterator() {
+       int position;
+       int index;
+       int result[] = { 1, 2, 5, 10, 11, 12, 11, 10, 5, 2, 1, 0 };
+       char ctext[] = { 
+               0x0041, 0x0020,
+               0x0E01, 0x0E32, 0x0E23, 0x0E17, 0x0E14, 0x0E25, 0x0E2D, 0x0E07,
+               0x0020, 0x0041
+               };
+       String text = new String(ctext);
+       
+       ULocale locale = ULocale.createCanonical("th");
+       BreakIterator b = BreakIterator.getWordInstance(locale);
+       
+       b.setText(text);
+       
+       index = 0;
+       // Test forward iteration
+       while ((position = b.next())!= BreakIterator.DONE) {
+           if (position != result[index++]) {
+               errln("Error with ThaiDictionaryBreakIterator forward iteration test at " + position + ".\nShould have been " + result[index-1]);
+           }
+       }
+       
+       // Test backward iteration
+       while ((position = b.previous())!= BreakIterator.DONE) {
+           if (position != result[index++]) {
+               errln("Error with ThaiDictionaryBreakIterator backward iteration test at " + position + ".\nShould have been " + result[index-1]);
+           }
+       }
+       
+       //Test invalid sequence and spaces
+       char text2[] = {
+               0x0E01, 0x0E39, 0x0020, 0x0E01, 0x0E34, 0x0E19, 0x0E01, 0x0E38, 0x0E49, 0x0E07, 0x0020, 0x0E1B, 
+               0x0E34, 0x0E49, 0x0E48, 0x0E07, 0x0E2D, 0x0E22, 0x0E39, 0x0E48, 0x0E43, 0x0E19, 
+               0x0E16, 0x0E49, 0x0E33
+       };
+       int expectedWordResult[] = {
+               2, 3, 6, 10, 11, 15, 17, 20, 22
+       };
+       int expectedLineResult[] = {
+               3, 6, 11, 15, 17, 20, 22
+       };
+       BreakIterator brk = BreakIterator.getWordInstance(new ULocale("th"));
+       brk.setText(new String(text2));
+       position = index = 0;
+       while ((position = brk.next()) != BreakIterator.DONE && position < text2.length) {
+           if (position != expectedWordResult[index++]) {
+               errln("Incorrect break given by thai word break iterator. Expected: " + expectedWordResult[index-1] + " Got: " + position);
+           }
+       }
+      
+       brk = BreakIterator.getLineInstance(new ULocale("th"));
+       brk.setText(new String(text2));
+       position = index = 0;
+       while ((position = brk.next()) != BreakIterator.DONE && position < text2.length) {
+           if (position != expectedLineResult[index++]) {
+               errln("Incorrect break given by thai line break iterator. Expected: " + expectedLineResult[index-1] + " Got: " + position);
+           }
+       }
+   }
+  
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java b/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
new file mode 100644
index 0000000..6a5f969
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
@@ -0,0 +1,492 @@
+/*
+ * Created on May 5, 2004
+ * 
+ * Copyright (C) 2004-2006 International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.ULocale;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.util.Arrays;
+
+
+/**
+ * Rule based break iterator data driven test.
+ *      Perform the tests from the file rbbitst.txt.
+ *      The test data file is common to both ICU4C and ICU4J.
+ *      See the data file for a description of the tests.
+ *
+ */
+public class RBBITestExtended extends TestFmwk {
+    
+    public static void main(String[] args)throws Exception {
+        new RBBITestExtended().run(args);
+    }
+    
+    
+public RBBITestExtended() { 
+    }
+
+
+
+static class TestParams {
+    BreakIterator   bi;
+    StringBuffer    dataToBreak    = new StringBuffer();
+    int[]           expectedBreaks = new int[1000];
+    int[]           srcLine        = new int[1000];
+    int[]           srcCol         = new int[1000];
+    ULocale         currentLocale  = new ULocale("en_US");
+}
+
+
+public void TestExtended() {
+
+    TestParams     tp = new TestParams();
+
+
+    //
+    //  Open and read the test data file.
+    //
+    InputStreamReader isr = null;
+    StringBuffer  testFileBuf = new StringBuffer();
+    try {
+        InputStream is = RBBITestExtended.class.getResourceAsStream("rbbitst.txt");
+        if (is == null) {
+            errln("Could not open test data file rbbitst.txt");
+            return;
+        }
+        isr = new InputStreamReader(is, "UTF-8");           
+        int c;
+        int count = 0;
+        for (;;) {
+            c = isr.read();
+            if (c < 0) {
+                break;
+            }
+            count++;
+            if (c==0xFEFF && count==1) {
+               // BOM in the test data file.  Discard it.
+               continue;
+            }
+           
+            UTF16.append(testFileBuf, c);
+        }
+        
+    } catch (IOException e) {
+        errln(e.toString());
+        return;
+    }
+    
+    String testString = testFileBuf.toString();
+    
+
+    final int  PARSE_COMMENT = 1;
+    final int  PARSE_TAG     = 2;
+    final int  PARSE_DATA    = 3;
+    final int  PARSE_NUM     = 4;
+
+    int parseState = PARSE_TAG;
+
+    int savedState = PARSE_TAG;
+
+    final char CH_LF        = 0x0a;
+    final char CH_CR        = 0x0d;
+    final char CH_HASH      = 0x23;
+    /*static const UChar CH_PERIOD    = 0x2e;*/
+    final char CH_LT        = 0x3c;
+    final char CH_GT        = 0x3e;
+    final char CH_BACKSLASH = 0x5c;
+    final char CH_BULLET    = 0x2022;
+
+    int    lineNum  = 1;
+    int    colStart = 0;
+    int    column   = 0;
+    int    charIdx  = 0;
+    int    i;
+
+    int    tagValue = 0;       // The numeric value of a <nnn> tag.
+    int    len = testString.length();
+
+    for (charIdx = 0; charIdx < len; ) {
+        int  c = UTF16.charAt(testString, charIdx);
+        charIdx++;
+        if (c == CH_CR && charIdx<len && testString.charAt(charIdx) == CH_LF) {
+            // treat CRLF as a unit
+            c = CH_LF;
+            charIdx++;
+        }
+        if (c == CH_LF || c == CH_CR) {
+            lineNum++;
+            colStart = charIdx;
+        }
+        column = charIdx - colStart + 1;
+
+        switch (parseState) {
+        case PARSE_COMMENT:
+            if (c == 0x0a || c == 0x0d) {
+                parseState = savedState;
+            }
+            break;
+
+        case PARSE_TAG:
+            {
+            if (c == CH_HASH) {
+                parseState = PARSE_COMMENT;
+                savedState = PARSE_TAG;
+                break;
+            }
+            if (UCharacter.isWhitespace(c)) {
+                break;
+            }
+           if (testString.startsWith("<word>", charIdx-1)) {
+                tp.bi = BreakIterator.getWordInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<char>", charIdx-1)) {
+                tp.bi = BreakIterator.getCharacterInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<line>", charIdx-1)) {
+                tp.bi = BreakIterator.getLineInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<sent>", charIdx-1)) {
+                tp.bi = BreakIterator.getSentenceInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<title>", charIdx-1)) {
+                tp.bi = BreakIterator.getTitleInstance(tp.currentLocale);
+                charIdx += 6;
+                break;
+            }
+            if (testString.startsWith("<locale ", charIdx-1)) {
+                int closeIndex = testString.indexOf(">", charIdx);
+                if (closeIndex < 0) {
+                    errln("line" + lineNum + ": missing close on <locale  tag.");
+                    break;
+                }
+                String localeName = testString.substring(charIdx+6, closeIndex);
+                localeName = localeName.trim();
+                tp.currentLocale = new ULocale(localeName);
+                charIdx = closeIndex+1;
+                break;
+            }
+            if (testString.startsWith("<data>", charIdx-1)) {
+                parseState = PARSE_DATA;
+                charIdx += 5;
+                tp.dataToBreak.setLength(0);
+                Arrays.fill(tp.expectedBreaks, 0);
+                Arrays.fill(tp.srcCol, 0);
+                Arrays.fill(tp.srcLine, 0);
+                break;
+            }
+
+            errln("line" + lineNum + ": Tag expected in test file.");
+            return;
+            //parseState = PARSE_COMMENT;
+            //savedState = PARSE_DATA;
+            }
+
+        case PARSE_DATA:
+            if (c == CH_BULLET) {
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = -1;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (testString.startsWith("</data>", charIdx-1))  {
+                // Add final entry to mappings from break location to source file position.
+                //  Need one extra because last break position returned is after the
+                //    last char in the data, not at the last char.
+                int idx = tp.dataToBreak.length();
+                tp.srcLine[idx] = lineNum;
+                tp.srcCol[idx]  = column;
+
+                parseState = PARSE_TAG;
+                charIdx += 6;
+
+                // RUN THE TEST!
+                executeTest(tp);
+                break;
+            }
+
+           if (testString.startsWith("\\N{", charIdx-1)) {
+               int nameEndIdx = testString.indexOf('}', charIdx);
+               if (nameEndIdx == -1) {
+                   errln("Error in named character in test file at line " + lineNum +
+                           ", col " + column);
+               }
+                // Named character, e.g. \N{COMBINING GRAVE ACCENT}
+                // Get the code point from the name and insert it into the test data.
+                String charName = testString.substring(charIdx+2, nameEndIdx);
+                c = UCharacter.getCharFromName(charName);
+                if (c == -1) {
+                    errln("Error in named character in test file at line " + lineNum +
+                            ", col " + column);
+                } else {               
+                    // Named code point was recognized.  Insert it
+                    //   into the test data.
+                    UTF16.append(tp.dataToBreak, c);
+                    for (i = tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                        tp.srcLine[i] = lineNum;
+                        tp.srcCol[i]  = column;
+                    }
+                    
+                 }
+                if (nameEndIdx > charIdx) {
+                    charIdx = nameEndIdx+1;
+                }
+                break;
+            }
+
+            if (testString.startsWith("<>", charIdx-1)) {
+                charIdx++;
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = -1;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (c == CH_LT) {
+                tagValue   = 0;
+                parseState = PARSE_NUM;
+                break;
+            }
+
+            if (c == CH_HASH && column==3) {   // TODO:  why is column off so far?
+                parseState = PARSE_COMMENT;
+                savedState = PARSE_DATA;
+                break;
+            }
+
+            if (c == CH_BACKSLASH) {
+                // Check for \ at end of line, a line continuation.
+                //     Advance over (discard) the newline
+                int cp = UTF16.charAt(testString, charIdx); 
+                if (cp == CH_CR && charIdx<len && UTF16.charAt(testString, charIdx+1) == CH_LF) {
+                    // We have a CR LF
+                    //  Need an extra increment of the input ptr to move over both of them
+                    charIdx++;
+                }
+                if (cp == CH_LF || cp == CH_CR) {
+                    lineNum++;
+                    column   = 0;
+                    charIdx++;
+                    colStart = charIdx;
+                    break;
+                }
+
+                // Let unescape handle the back slash.
+                int  charIdxAr[] = new int[1];
+                charIdxAr[0] = charIdx;
+                cp = Utility.unescapeAt(testString, charIdxAr);
+                if (cp != -1) {
+                    // Escape sequence was recognized.  Insert the char
+                    //   into the test data.
+                    charIdx = charIdxAr[0];
+                    UTF16.append(tp.dataToBreak, cp);
+                    for (i=tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                        tp.srcLine[i] = lineNum;
+                        tp.srcCol[i]  = column;
+                    }
+                    
+                    break;
+                }
+
+
+                // Not a recognized backslash escape sequence.
+                // Take the next char as a literal.
+                //  TODO:  Should this be an error?
+                c = UTF16.charAt(testString,charIdx);
+                charIdx = UTF16.moveCodePointOffset(testString, charIdx, 1);
+             }
+
+            // Normal, non-escaped data char.
+            UTF16.append(tp.dataToBreak, c);
+ 
+            // Save the mapping from offset in the data to line/column numbers in
+            //   the original input file.  Will be used for better error messages only.
+            //   If there's an expected break before this char, the slot in the mapping
+            //     vector will already be set for this char; don't overwrite it.
+            for (i=tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                tp.srcLine[i] = lineNum;
+                tp.srcCol[i]  = column;
+            }
+            break;
+
+
+        case PARSE_NUM:
+            // We are parsing an expected numeric tag value, like <1234>,
+            //   within a chunk of data.
+            if (UCharacter.isWhitespace(c)) {
+                break;
+            }
+
+            if (c == CH_GT) {
+                // Finished the number.  Add the info to the expected break data,
+                //   and switch parse state back to doing plain data.
+                parseState = PARSE_DATA;
+                if (tagValue == 0) {
+                    tagValue = -1;
+                }
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = tagValue;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (UCharacter.isDigit(c)) {
+                tagValue = tagValue*10 + UCharacter.digit(c);
+                break;
+            }
+
+            errln("Syntax Error in test file at line "+ lineNum +", col %d" + column);
+            return;
+            
+            // parseState = PARSE_COMMENT;   // TODO: unreachable.  Don't stop on errors.
+            // break;
+        }
+
+
+ 
+    }
+}
+
+void executeTest(TestParams t) {
+    int    bp;
+    int    prevBP;
+    int    i;
+
+    if (t.bi == null) {
+        return;
+    }
+    
+    t.bi.setText(t.dataToBreak.toString());
+    //
+    //  Run the iterator forward
+    //
+    prevBP = -1;
+    for (bp = t.bi.first(); bp != BreakIterator.DONE; bp = t.bi.next()) {
+        if (prevBP ==  bp) {
+            // Fail for lack of forward progress.
+            errln("Forward Iteration, no forward progress.  Break Pos=" + bp +
+                    "  File line,col=" + t.srcLine[bp] + ", " + t.srcCol[bp]);
+            break;
+        }
+
+        // Check that there were we didn't miss an expected break between the last one
+        //  and this one.
+        for (i=prevBP+1; i<bp; i++) {
+            if (t.expectedBreaks[i] != 0) {
+                errln("Forward Iteration, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+            }
+        }
+
+        // Check that the break we did find was expected
+        if (t.expectedBreaks[bp] == 0) {
+            errln("Forward Iteration, break found, but not expected.  Pos=" + bp + 
+                    "  File line,col= " + t.srcLine[bp] + ", " + t.srcCol[bp]);
+        } else {
+            // The break was expected.
+            //   Check that the {nnn} tag value is correct.
+            int expectedTagVal = t.expectedBreaks[bp];
+            if (expectedTagVal == -1) {
+                expectedTagVal = 0;
+            }
+            int line = t.srcLine[bp];
+            int rs = ((RuleBasedBreakIterator)t.bi).getRuleStatus();
+            if (rs != expectedTagVal) {
+                errln("Incorrect status for forward break.  Pos = " + bp +
+                        ".  File line,col = " + line + ", " + t.srcCol[bp] + "\n" +
+                      "          Actual, Expected status = " + rs + ", " + expectedTagVal);
+            }
+        }
+
+
+        prevBP = bp;
+    }
+
+    // Verify that there were no missed expected breaks after the last one found
+    for (i=prevBP+1; i<t.dataToBreak.length()+1; i++) {
+        if (t.expectedBreaks[i] != 0) {
+            errln("Forward Iteration, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+       }
+    }
+
+    //
+    //  Run the iterator backwards, verify that the same breaks are found.
+    //
+    prevBP = t.dataToBreak.length()+2;  // start with a phony value for the last break pos seen.
+    for (bp = t.bi.last(); bp != BreakIterator.DONE; bp = t.bi.previous()) {
+        if (prevBP ==  bp) {
+            // Fail for lack of progress.
+            errln("Reverse Iteration, no progress.  Break Pos=" + bp +
+                    "File line,col=" + t.srcLine[bp] + " " +  t.srcCol[bp]);
+            break;
+        }
+
+        // Check that there were we didn't miss an expected break between the last one
+        //  and this one.  (UVector returns zeros for index out of bounds.)
+        for (i=prevBP-1; i>bp; i--) {
+            if (t.expectedBreaks[i] != 0) {
+                errln("Reverse Itertion, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+            }
+        }
+
+        // Check that the break we did find was expected
+        if (t.expectedBreaks[bp] == 0) {
+            errln("Reverse Itertion, break found, but not expected.  Pos=" + bp + 
+                    "  File line,col= " + t.srcLine[bp] + ", " + t.srcCol[bp]);
+        } else {
+            // The break was expected.
+            //   Check that the {nnn} tag value is correct.
+            int expectedTagVal = t.expectedBreaks[bp];
+            if (expectedTagVal == -1) {
+                expectedTagVal = 0;
+            }
+            int line = t.srcLine[bp];
+            int rs = ((RuleBasedBreakIterator)t.bi).getRuleStatus();
+            if (rs != expectedTagVal) {
+                errln("Incorrect status for reverse break.  Pos=  " + bp +
+                        "File line,col= " + line + ", " + t.srcCol[bp] + "\n" +
+                      "          Actual, Expected status = " + rs + ", " + expectedTagVal);
+                  }
+        }
+
+        prevBP = bp;
+    }
+
+    // Verify that there were no missed breaks prior to the last one found
+    for (i=prevBP-1; i>=0; i--) {
+        if (t.expectedBreaks[i] != 0) {
+            errln("Forward Itertion, break expected, but not found.  Pos=" + i +
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+         }
+    }
+}
+
+
+
+
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java b/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
new file mode 100644
index 0000000..182f410
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
@@ -0,0 +1,1984 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008 International Business Machines Corporation and     *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ package com.ibm.icu.dev.test.rbbi;
+
+
+// Monkey testing of RuleBasedBreakIterator
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+
+/**
+ * Monkey tests for RBBI.  These tests have independent implementations of
+ * the Unicode TR boundary rules, and compare results between these and ICU's
+ * implementation, using random data.
+ * 
+ * Tests cover Grapheme Cluster (char), Word and Line breaks
+ * 
+ * Ported from ICU4C, original code in file source/test/intltest/rbbitst.cpp
+ *
+ */
+public class RBBITestMonkey extends TestFmwk {
+    
+    public static void main(String[] args) {
+        new RBBITestMonkey().run(args);
+    }
+    
+//
+//     classs RBBIMonkeyKind
+//
+//        Monkey Test for Break Iteration
+//        Abstract interface class.   Concrete derived classes independently
+//        implement the break rules for different iterator types.
+//
+//        The Monkey Test itself uses doesn't know which type of break iterator it is
+//        testing, but works purely in terms of the interface defined here.
+//
+    abstract static class RBBIMonkeyKind {
+    
+        // Return a List of UnicodeSets, representing the character classes used
+        //   for this type of iterator.
+        abstract  List  charClasses();
+
+        // Set the test text on which subsequent calls to next() will operate
+        abstract  void   setText(StringBuffer text);
+
+        // Find the next break postion, starting from the specified position.
+        // Return -1 after reaching end of string.
+        abstract   int   next(int i);
+        
+        // A Character Property, one of the constants defined in class UProperty.
+        //   The value fo this property will be displayed for the characters
+        //    near any test failure.  
+        int   fCharProperty;
+    }
+
+ 
+    /**
+     * Monkey test subclass for testing Character (Grapheme Cluster) boundaries.
+     */
+    static class RBBICharMonkey extends RBBIMonkeyKind {
+        List                      fSets;
+
+        UnicodeSet                fCRLFSet;
+        UnicodeSet                fControlSet;
+        UnicodeSet                fExtendSet;
+        UnicodeSet                fPrependSet;
+        UnicodeSet                fSpacingSet;
+        UnicodeSet                fLSet;
+        UnicodeSet                fVSet;
+        UnicodeSet                fTSet;
+        UnicodeSet                fLVSet;
+        UnicodeSet                fLVTSet;
+        UnicodeSet                fHangulSet;
+        UnicodeSet                fAnySet;
+
+        StringBuffer              fText;
+
+
+    RBBICharMonkey() {
+        fText       = null;
+        fCharProperty = UProperty.GRAPHEME_CLUSTER_BREAK;
+        fCRLFSet    = new UnicodeSet("[\\r\\n]");
+        fControlSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Control}]");
+        fExtendSet  = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Extend}]");
+        fPrependSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Prepend}]");
+        fSpacingSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = SpacingMark}]");
+        fLSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = L}]");
+        fVSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = V}]");
+        fTSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = T}]");
+        fLVSet      = new UnicodeSet("[\\p{Grapheme_Cluster_Break = LV}]");
+        fLVTSet     = new UnicodeSet("[\\p{Grapheme_Cluster_Break = LVT}]");
+        fHangulSet  = new UnicodeSet();
+        fHangulSet.addAll(fLSet);
+        fHangulSet.addAll(fVSet);
+        fHangulSet.addAll(fTSet);
+        fHangulSet.addAll(fLVSet);
+        fHangulSet.addAll(fLVTSet);
+
+        fAnySet     = new UnicodeSet("[\\u0000-\\U0010ffff]");
+
+        fSets       = new ArrayList();
+        fSets.add(fCRLFSet);
+        fSets.add(fControlSet);
+        fSets.add(fExtendSet);
+        fSets.add(fPrependSet);
+        fSets.add(fSpacingSet);
+        fSets.add(fHangulSet);
+        fSets.add(fAnySet);
+     }
+
+
+    void setText(StringBuffer s) {
+        fText = s;
+    }
+    
+    List charClasses() {
+        return fSets;
+    }
+    
+    int next(int prevPos) {
+        int    p1, p2, p3;    // Indices of the significant code points around the
+                              //   break position being tested.  The candidate break
+                              //   location is before p2.
+    
+        int     breakPos = -1;
+    
+        int   c1, c2, c3;     // The code points at p0, p1, p2 & p3.
+        
+        // Previous break at end of string.  return DONE.
+        if (prevPos >= fText.length()) {
+            return -1;
+        }
+        p1 = p2 = p3 = prevPos;
+        c3 =  UTF16.charAt(fText, prevPos);
+        c1 = c2 = 0;
+    
+        // Loop runs once per "significant" character position in the input text.
+        for (;;) {
+            // Move all of the positions forward in the input string.
+            p1 = p2;  c1 = c2;
+            p2 = p3;  c2 = c3;
+    
+            // Advance p3 by one codepoint
+            p3 = moveIndex32(fText, p3, 1);
+            c3 = (p3>=fText.length())? -1: UTF16.charAt(fText, p3);
+    
+            if (p1 == p2) {
+                // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                continue;
+            }
+            if (p2 == fText.length()) {
+                // Reached end of string.  Always a break position.
+                break;
+            }
+    
+            // Rule  GB3   CR x LF
+            //     No Extend or Format characters may appear between the CR and LF,
+            //     which requires the additional check for p2 immediately following p1.
+            //
+            if (c1==0x0D && c2==0x0A && p1==(p2-1)) {
+                continue;
+            }
+    
+            // Rule (GB4).   ( Control | CR | LF ) <break>
+            if (fControlSet.contains(c1) ||
+                c1 == 0x0D ||
+                c1 == 0x0A)  {
+                break;
+            }
+    
+            // Rule (GB5)    <break>  ( Control | CR | LF )
+            //
+            if (fControlSet.contains(c2) ||
+                c2 == 0x0D ||
+                c2 == 0x0A)  {
+                break;
+            }
+    
+    
+            // Rule (GB6)  L x ( L | V | LV | LVT )
+            if (fLSet.contains(c1) &&
+                (fLSet.contains(c2)  ||
+                    fVSet.contains(c2)  ||
+                    fLVSet.contains(c2) ||
+                    fLVTSet.contains(c2))) {
+                continue;
+            }
+    
+            // Rule (GB7)    ( LV | V )  x  ( V | T )
+            if ((fLVSet.contains(c1) || fVSet.contains(c1)) &&
+                (fVSet.contains(c2) || fTSet.contains(c2)))  {
+                continue;
+            }
+    
+            // Rule (GB8)    ( LVT | T)  x T
+            if ((fLVTSet.contains(c1) || fTSet.contains(c1)) &&
+                fTSet.contains(c2))  {
+                continue;
+            }
+    
+            // Rule (GB9)    Numeric x ALetter
+            if (fExtendSet.contains(c2))  {
+                continue;
+            }
+    
+            // Rule (GB9a)   x  SpacingMark
+            if (fSpacingSet.contains(c2)) {
+                continue;
+            }
+    
+            // Rule (GB9b)   Prepend x
+            if (fPrependSet.contains(c1)) {
+                continue;
+            }
+    
+            // Rule (GB10)  Any  <break>  Any
+            break;
+        }
+    
+        breakPos = p2;
+        return breakPos;
+        }
+    }
+
+
+    /**
+     * 
+     * Word Monkey Test Class
+     *
+     * 
+     * 
+     */
+    static class RBBIWordMonkey extends RBBIMonkeyKind {
+        List                      fSets;
+        StringBuffer              fText;
+
+        UnicodeSet                fCRSet;
+        UnicodeSet                fLFSet;
+        UnicodeSet                fNewlineSet;
+        UnicodeSet                fKatakanaSet;
+        UnicodeSet                fALetterSet;
+        UnicodeSet                fMidNumLetSet;
+        UnicodeSet                fMidLetterSet;
+        UnicodeSet                fMidNumSet;
+        UnicodeSet                fNumericSet;
+        UnicodeSet                fFormatSet;
+        UnicodeSet                fExtendSet;
+        UnicodeSet                fExtendNumLetSet;
+        UnicodeSet                fOtherSet;
+
+        
+        RBBIWordMonkey() {
+            fCharProperty    = UProperty.WORD_BREAK;
+
+            fCRSet           = new UnicodeSet("[\\p{Word_Break = CR}]");
+            fLFSet           = new UnicodeSet("[\\p{Word_Break = LF}]");
+            fNewlineSet      = new UnicodeSet("[\\p{Word_Break = Newline}]");
+            fALetterSet      = new UnicodeSet("[\\p{Word_Break = ALetter}]");
+            fKatakanaSet     = new UnicodeSet("[\\p{Word_Break = Katakana}]");
+            fMidNumLetSet    = new UnicodeSet("[\\p{Word_Break = MidNumLet}]");
+            fMidLetterSet    = new UnicodeSet("[\\p{Word_Break = MidLetter}]");
+            fMidNumSet       = new UnicodeSet("[\\p{Word_Break = MidNum}]");
+            fNumericSet      = new UnicodeSet("[\\p{Word_Break = Numeric}]");
+            fFormatSet       = new UnicodeSet("[\\p{Word_Break = Format}]");
+            fExtendNumLetSet = new UnicodeSet("[\\p{Word_Break = ExtendNumLet}]");
+            fExtendSet       = new UnicodeSet("[\\p{Word_Break = Extend}]");
+
+            fOtherSet        = new UnicodeSet();
+            fOtherSet.complement();
+            fOtherSet.removeAll(fCRSet);
+            fOtherSet.removeAll(fLFSet);
+            fOtherSet.removeAll(fNewlineSet);
+            fOtherSet.removeAll(fALetterSet);
+            fOtherSet.removeAll(fKatakanaSet);
+            fOtherSet.removeAll(fMidLetterSet);
+            fOtherSet.removeAll(fMidNumSet);
+            fOtherSet.removeAll(fNumericSet);
+            fOtherSet.removeAll(fFormatSet);
+            fOtherSet.removeAll(fExtendSet);
+            fOtherSet.removeAll(fExtendNumLetSet);
+            // Inhibit dictionary characters from being tested at all.
+            fOtherSet.removeAll(new UnicodeSet("[\\p{LineBreak = Complex_Context}]"));
+
+            fSets            = new ArrayList();
+            fSets.add(fCRSet);
+            fSets.add(fLFSet);
+            fSets.add(fNewlineSet);
+            fSets.add(fALetterSet);
+            fSets.add(fKatakanaSet);
+            fSets.add(fMidLetterSet);
+            fSets.add(fMidNumLetSet);
+            fSets.add(fMidNumSet);
+            fSets.add(fNumericSet);
+            fSets.add(fFormatSet);
+            fSets.add(fExtendSet);
+            fSets.add(fExtendNumLetSet);
+            fSets.add(fOtherSet);
+        }
+        
+        
+        List  charClasses() {
+         return fSets;  
+        }
+        
+        void   setText(StringBuffer s) { 
+            fText = s;        
+        }   
+
+        int   next(int prevPos) {  
+            int    /*p0,*/ p1, p2, p3;      // Indices of the significant code points around the 
+                                        //   break position being tested.  The candidate break
+                                        //   location is before p2.
+            int     breakPos = -1;
+            
+            int c0, c1, c2, c3;   // The code points at p0, p1, p2 & p3.
+            
+            // Previous break at end of string.  return DONE.
+            if (prevPos >= fText.length()) {
+                return -1;
+            }
+            /*p0 =*/ p1 = p2 = p3 = prevPos;
+            c3 = UTF16.charAt(fText, prevPos);
+            c0 = c1 = c2 = 0;
+            
+            
+
+            // Loop runs once per "significant" character position in the input text.
+            for (;;) {
+                // Move all of the positions forward in the input string.
+                /*p0 = p1;*/  c0 = c1;
+                p1 = p2;  c1 = c2;
+                p2 = p3;  c2 = c3;
+                
+                // Advancd p3 by    X(Extend | Format)*   Rule 4
+                //    But do not advance over Extend & Format following a new line. (Unicode 5.1 change)
+                do {
+                    p3 = moveIndex32(fText, p3, 1);
+                    c3 = -1;
+                    if (p3>=fText.length()) {
+                        break;
+                    }
+                    c3 = UTF16.charAt(fText, p3);
+                    if (fCRSet.contains(c2) || fLFSet.contains(c2) || fNewlineSet.contains(c2)) {
+                        break;
+                    }
+                }
+                while (setContains(fFormatSet, c3) || setContains(fExtendSet, c3));
+
+                if (p1 == p2) {
+                    // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                    continue;
+                }
+                if (p2 == fText.length()) {
+                    // Reached end of string.  Always a break position.
+                    break;
+                }
+
+                // Rule (3)   CR x LF
+                //     No Extend or Format characters may appear between the CR and LF,
+                //     which requires the additional check for p2 immediately following p1.
+                //
+                if (c1==0x0D && c2==0x0A) {
+                    continue;
+                }
+                
+                // Rule (3a)  Break before and after newlines (including CR and LF)
+                //
+                if (fCRSet.contains(c1) || fLFSet.contains(c1) || fNewlineSet.contains(c1)) {
+                    break;
+                }
+                if (fCRSet.contains(c2) || fLFSet.contains(c2) || fNewlineSet.contains(c2)) {
+                    break;
+                }
+
+                // Rule (5).   ALetter x ALetter
+                if (fALetterSet.contains(c1) &&
+                        fALetterSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (6)  ALetter  x  (MidLetter | MidNumLet)  ALetter
+                //
+                if ( fALetterSet.contains(c1) &&
+                        (fMidLetterSet.contains(c2) || fMidNumLetSet.contains(c2)) &&
+                        setContains(fALetterSet, c3)) {
+                    continue;
+                }
+                
+                
+                // Rule (7)  ALetter (MidLetter | MidNumLet)   x  ALetter
+                if (fALetterSet.contains(c0) &&
+                        (fMidLetterSet.contains(c1) ||  fMidNumLetSet.contains(c1))  &&
+                        fALetterSet.contains(c2)) {
+                    continue;
+                }
+                
+                //  Rule (8)    Numeric x Numeric
+                if (fNumericSet.contains(c1) &&
+                        fNumericSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (9)    ALetter x Numeric
+                if (fALetterSet.contains(c1) &&
+                        fNumericSet.contains(c2))  {
+                    continue;
+                }
+
+                // Rule (10)    Numeric x ALetter
+                if (fNumericSet.contains(c1) &&
+                        fALetterSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (11)   Numeric (MidNum | MidNumLet)  x  Numeric
+                if ( fNumericSet.contains(c0) &&
+                        (fMidNumSet.contains(c1) || fMidNumLetSet.contains(c1))  && 
+                        fNumericSet.contains(c2)) {
+                    continue;
+                }
+                
+                // Rule (12)  Numeric x (MidNum | MidNumLet) Numeric
+                if (fNumericSet.contains(c1) &&
+                        (fMidNumSet.contains(c2) || fMidNumLetSet.contains(c2)) &&
+                        setContains(fNumericSet, c3)) {
+                    continue;
+                }
+                
+                // Rule (13)  Katakana x Katakana
+                if (fKatakanaSet.contains(c1) &&
+                        fKatakanaSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule 13a  (ALetter | Numeric | Katakana | ExtendNumLet) x ExtendNumLet
+                if ((fALetterSet.contains(c1) || fNumericSet.contains(c1) ||
+                        fKatakanaSet.contains(c1) || fExtendNumLetSet.contains(c1)) &&
+                        fExtendNumLetSet.contains(c2)) {
+                    continue;
+                }
+                // Rule 13b   ExtendNumLet x (ALetter | Numeric | Katakana | ExtendNumLet)
+                if (fExtendNumLetSet.contains(c1) &&
+                        (fALetterSet.contains(c2) || fNumericSet.contains(c2) ||
+                        fKatakanaSet.contains(c2) || fExtendNumLetSet.contains(c2))) {
+                    continue;
+                }
+               
+                // Rule 14.  Break found here.
+                break;
+            }
+            
+            breakPos = p2;
+            return breakPos;
+        }
+        
+    }
+
+ 
+    static class RBBILineMonkey extends RBBIMonkeyKind {
+        
+        List        fSets;
+        
+        UnicodeSet  fBK;
+        UnicodeSet  fCR;
+        UnicodeSet  fLF;
+        UnicodeSet  fCM;
+        UnicodeSet  fNL;
+        UnicodeSet  fSG;
+        UnicodeSet  fWJ;
+        UnicodeSet  fZW;
+        UnicodeSet  fGL;
+        UnicodeSet  fCB;
+        UnicodeSet  fSP;
+        UnicodeSet  fB2;
+        UnicodeSet  fBA;
+        UnicodeSet  fBB;
+        UnicodeSet  fHY;
+        UnicodeSet  fCL;
+        UnicodeSet  fEX;
+        UnicodeSet  fIN;
+        UnicodeSet  fNS;
+        UnicodeSet  fOP;
+        UnicodeSet  fQU;
+        UnicodeSet  fIS;
+        UnicodeSet  fNU;
+        UnicodeSet  fPO;
+        UnicodeSet  fPR;
+        UnicodeSet  fSY;
+        UnicodeSet  fAI;
+        UnicodeSet  fAL;
+        UnicodeSet  fID;
+        UnicodeSet  fSA;
+        UnicodeSet  fJL;
+        UnicodeSet  fJV;
+        UnicodeSet  fJT;
+        UnicodeSet  fH2;
+        UnicodeSet  fH3;
+        UnicodeSet  fXX;
+        
+        StringBuffer  fText;
+        int           fOrigPositions;
+        
+        
+        
+        RBBILineMonkey()
+        {
+            fCharProperty  = UProperty.LINE_BREAK;
+            fSets          = new ArrayList();
+            
+            fBK    = new UnicodeSet("[\\p{Line_Break=BK}]");
+            fCR    = new UnicodeSet("[\\p{Line_break=CR}]");
+            fLF    = new UnicodeSet("[\\p{Line_break=LF}]");
+            fCM    = new UnicodeSet("[\\p{Line_break=CM}]");
+            fNL    = new UnicodeSet("[\\p{Line_break=NL}]");
+            fWJ    = new UnicodeSet("[\\p{Line_break=WJ}]");
+            fZW    = new UnicodeSet("[\\p{Line_break=ZW}]");
+            fGL    = new UnicodeSet("[\\p{Line_break=GL}]");
+            fCB    = new UnicodeSet("[\\p{Line_break=CB}]");
+            fSP    = new UnicodeSet("[\\p{Line_break=SP}]");
+            fB2    = new UnicodeSet("[\\p{Line_break=B2}]");
+            fBA    = new UnicodeSet("[\\p{Line_break=BA}]");
+            fBB    = new UnicodeSet("[\\p{Line_break=BB}]");
+            fHY    = new UnicodeSet("[\\p{Line_break=HY}]");
+            fCL    = new UnicodeSet("[\\p{Line_break=CL}]");
+            fEX    = new UnicodeSet("[\\p{Line_break=EX}]");
+            fIN    = new UnicodeSet("[\\p{Line_break=IN}]");
+            fNS    = new UnicodeSet("[\\p{Line_break=NS}]");
+            fOP    = new UnicodeSet("[\\p{Line_break=OP}]");
+            fQU    = new UnicodeSet("[\\p{Line_break=QU}]");
+            fIS    = new UnicodeSet("[\\p{Line_break=IS}]");
+            fNU    = new UnicodeSet("[\\p{Line_break=NU}]");
+            fPO    = new UnicodeSet("[\\p{Line_break=PO}]");
+            fPR    = new UnicodeSet("[\\p{Line_break=PR}]");
+            fSY    = new UnicodeSet("[\\p{Line_break=SY}]");
+            fAI    = new UnicodeSet("[\\p{Line_break=AI}]");
+            fAL    = new UnicodeSet("[\\p{Line_break=AL}]");
+            fID    = new UnicodeSet("[\\p{Line_break=ID}]");
+            fSA    = new UnicodeSet("[\\p{Line_break=SA}]");
+            fJL    = new UnicodeSet("[\\p{Line_break=JL}]");
+            fJV    = new UnicodeSet("[\\p{Line_break=JV}]");
+            fJT    = new UnicodeSet("[\\p{Line_break=JT}]");
+            fH2    = new UnicodeSet("[\\p{Line_break=H2}]");
+            fH3    = new UnicodeSet("[\\p{Line_break=H3}]");
+            fSG    = new UnicodeSet("[\\ud800-\\udfff]");
+            fXX    = new UnicodeSet("[\\p{Line_break=XX}]");
+
+            
+            fAL.addAll(fXX);     // Default behavior for XX is identical to AL
+            fAL.addAll(fAI);     // Default behavior for AI is identical to AL
+            fAL.addAll(fSA);     // Default behavior for SA is XX, which defaults to AL
+            fAL.addAll(fSG);     // Default behavior for SG (unpaired surrogates) is AL
+            
+            
+            
+            fSets.add(fBK);
+            fSets.add(fCR);
+            fSets.add(fLF);
+            fSets.add(fCM);
+            fSets.add(fNL);
+            fSets.add(fWJ);
+            fSets.add(fZW);
+            fSets.add(fGL);
+            fSets.add(fCB);
+            fSets.add(fSP);
+            fSets.add(fB2);
+            fSets.add(fBA);
+            fSets.add(fBB);
+            fSets.add(fHY);
+            fSets.add(fH2);
+            fSets.add(fH3);
+            fSets.add(fCL);
+            fSets.add(fEX);
+            fSets.add(fIN);
+            fSets.add(fJL);
+            fSets.add(fJT);
+            fSets.add(fJV);
+            fSets.add(fNS);
+            fSets.add(fOP);
+            fSets.add(fQU);
+            fSets.add(fIS);
+            fSets.add(fNU);
+            fSets.add(fPO);
+            fSets.add(fPR);
+            fSets.add(fSY);
+            fSets.add(fAI);
+            fSets.add(fAL);
+            fSets.add(fID);
+            fSets.add(fWJ);
+            fSets.add(fSA);
+            fSets.add(fSG);
+            
+        }
+        
+        void setText(StringBuffer s) {
+            fText       = s;
+        }
+        
+        
+        
+
+        int next(int startPos) {
+            int    pos;       //  Index of the char following a potential break position
+            int    thisChar;  //  Character at above position "pos"
+            
+            int    prevPos;   //  Index of the char preceding a potential break position
+            int    prevChar;  //  Character at above position.  Note that prevChar
+                              //   and thisChar may not be adjacent because combining
+                              //   characters between them will be ignored.
+            
+            int    nextPos;   //  Index of the next character following pos.
+                              //     Usually skips over combining marks.
+            int    tPos;      //  temp value.
+            int    matchVals[]  = null;       // Number  Expression Match Results
+ 
+            
+            if (startPos >= fText.length()) {
+                return -1;
+            }
+            
+            
+            // Initial values for loop.  Loop will run the first time without finding breaks,
+            //                           while the invalid values shift out and the "this" and
+            //                           "prev" positions are filled in with good values.
+            pos      = prevPos   = -1;    // Invalid value, serves as flag for initial loop iteration.
+            thisChar = prevChar  = 0;
+            nextPos  = startPos;
+            
+            
+            // Loop runs once per position in the test text, until a break position
+            //  is found.  In each iteration, we are testing for a possible break
+            //  just preceding the character at index "pos".  The character preceding
+            //  this char is at postion "prevPos"; because of combining sequences,
+            //  "prevPos" can be arbitrarily far before "pos".
+            for (;;) {
+                // Advance to the next position to be tested.
+                prevPos   = pos;
+                prevChar  = thisChar;
+                pos       = nextPos;
+                nextPos   = moveIndex32(fText, pos, 1);
+                
+                // Rule LB2 - Break at end of text.
+                if (pos >= fText.length()) {
+                    break;
+                }
+                
+                // Rule LB 9 - adjust for combining sequences.
+                //             We do this rule out-of-order because the adjustment does
+                //             not effect the way that rules LB 3 through LB 6 match,
+                //             and doing it here rather than after LB 6 is substantially
+                //             simpler when combining sequences do occur.
+                
+                
+                // LB 9         Keep combining sequences together.
+                //              advance over any CM class chars at "pos", 
+                //              result is "nextPos" for the following loop iteration.
+                thisChar  = UTF16.charAt(fText, pos);
+                if (!(fSP.contains(thisChar) || fBK.contains(thisChar) || thisChar==0x0d ||
+                        thisChar==0x0a || fNL.contains(thisChar) || fZW.contains(thisChar) )) {
+                    for (;;) {
+                        if (nextPos == fText.length()) {
+                            break;   
+                        }
+                        int nextChar = UTF16.charAt(fText, nextPos);
+                        if (!fCM.contains(nextChar)) {
+                            break;
+                        }
+                        nextPos = moveIndex32(fText, nextPos, 1);
+                    }
+                }
+                
+                // LB 9 Treat X CM* as if it were X
+                //        No explicit action required.
+                
+                // LB 10     Treat any remaining combining mark as AL
+                if (fCM.contains(thisChar)) {
+                    thisChar = 'A';   
+                }
+
+                
+                // If the loop is still warming up - if we haven't shifted the initial
+                //   -1 positions out of prevPos yet - loop back to advance the
+                //    position in the input without any further looking for breaks.
+                if (prevPos == -1) {
+                    continue;
+                }
+                
+                // LB 4  Always break after hard line breaks,
+                if (fBK.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 5  Break after CR, LF, NL, but not inside CR LF
+                if (fCR.contains(prevChar) && fLF.contains(thisChar)) {
+                    continue;
+                }
+                if  (fCR.contains(prevChar) ||
+                     fLF.contains(prevChar) ||
+                     fNL.contains(prevChar))  {
+                    break;
+                }
+                
+                // LB 6  Don't break before hard line breaks
+                if (fBK.contains(thisChar) || fCR.contains(thisChar) ||
+                        fLF.contains(thisChar) || fNL.contains(thisChar) ) {
+                    continue;
+                }
+                
+                
+                // LB 7  Don't break before spaces or zero-width space.
+                if (fSP.contains(thisChar)) {
+                    continue;
+                }
+                
+                if (fZW.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 8  Break after zero width space
+                if (fZW.contains(prevChar)) {
+                    break;
+                }
+                
+                //  LB 9, 10  Already done, at top of loop.
+                //
+                
+                
+                // LB 11
+                //    x  WJ
+                //    WJ  x
+                if (fWJ.contains(thisChar) || fWJ.contains(prevChar)) {
+                    continue;
+                }
+                
+                
+                // LB 12
+                //        GL x
+                if (fGL.contains(prevChar)) {
+                    continue;
+                }
+                
+                // LB 12a
+                //    [^SP BA HY] x GL
+                if (!(fSP.contains(prevChar) ||
+                      fBA.contains(prevChar) ||
+                      fHY.contains(prevChar)     ) && fGL.contains(thisChar)) {
+                    continue;
+                }
+
+                
+                
+                // LB 13  Don't break before closings.
+                //       NU x CL  and NU x IS are not matched here so that they will
+                //       fall into LB 17 and the more general number regular expression.
+                //
+                if (!fNU.contains(prevChar) && fCL.contains(thisChar) ||
+                        fEX.contains(thisChar) ||
+                        !fNU.contains(prevChar) && fIS.contains(thisChar) ||
+                        !fNU.contains(prevChar) && fSY.contains(thisChar))    {
+                    continue;
+                }
+                
+                // LB 14  Don't break after OP SP*
+                //       Scan backwards, checking for this sequence.
+                //       The OP char could include combining marks, so we actually check for
+                //           OP CM* SP* x
+                tPos = prevPos;
+                if (fSP.contains(prevChar)) {
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos=moveIndex32(fText, tPos, -1);
+                    }
+                }
+                while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                    tPos=moveIndex32(fText, tPos, -1);
+                }
+                if (fOP.contains(UTF16.charAt(fText, tPos))) {
+                    continue;
+                }
+                
+                // LB 15 Do not break within "[ 
+                //       QU CM* SP* x OP
+                if (fOP.contains(thisChar)) {
+                    // Scan backwards from prevChar to see if it is preceded by QU CM* SP*
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fQU.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                // LB 16   CL SP* x NS
+                if (fNS.contains(thisChar)) {
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fCL.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                               
+                // LB 17        B2 SP* x B2
+                if (fB2.contains(thisChar)) {
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fB2.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                // LB 18    break after space
+                if (fSP.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 19
+                //    x   QU
+                //    QU  x
+                if (fQU.contains(thisChar) || fQU.contains(prevChar)) {
+                    continue;
+                }
+                
+                // LB 20  Break around a CB
+                if (fCB.contains(thisChar) || fCB.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 21
+                if (fBA.contains(thisChar) ||
+                        fHY.contains(thisChar) ||
+                        fNS.contains(thisChar) ||
+                        fBB.contains(prevChar) )   {
+                    continue;
+                }
+                
+                // LB 22
+                if (fAL.contains(prevChar) && fIN.contains(thisChar) ||
+                        fID.contains(prevChar) && fIN.contains(thisChar) ||
+                        fIN.contains(prevChar) && fIN.contains(thisChar) ||
+                        fNU.contains(prevChar) && fIN.contains(thisChar) )   {
+                    continue;
+                }
+                
+                
+                // LB 23    ID x PO    (Note:  Leading CM behaves like ID)
+                //          AL x NU
+                //          NU x AL
+                if (fID.contains(prevChar) && fPO.contains(thisChar) ||
+                        fAL.contains(prevChar) && fNU.contains(thisChar) ||
+                        fNU.contains(prevChar) && fAL.contains(thisChar) )   {
+                    continue;
+                }
+                
+                // LB 24  Do not break between prefix and letters or ideographs.
+                //        PR x ID
+                //        PR x AL
+                //        PO x AL
+                if (fPR.contains(prevChar) && fID.contains(thisChar) ||
+                    fPR.contains(prevChar) && fAL.contains(thisChar) ||
+                    fPO.contains(prevChar) && fAL.contains(thisChar))  {
+                    continue;
+                }
+                
+                
+                // LB 25    Numbers
+                matchVals = LBNumberCheck(fText, prevPos, matchVals);
+                if (matchVals[0] != -1) {
+                    // Matched a number.  But could have been just a single digit, which would
+                    //    not represent a "no break here" between prevChar and thisChar
+                    int numEndIdx = matchVals[1];  // idx of first char following num
+                    if (numEndIdx > pos) {
+                        // Number match includes at least the two chars being checked
+                        if (numEndIdx > nextPos) {
+                            // Number match includes additional chars.  Update pos and nextPos
+                            //   so that next loop iteration will continue at the end of the number,
+                            //   checking for breaks between last char in number & whatever follows.
+                            nextPos = numEndIdx;
+                            pos     = numEndIdx;
+                            do {
+                                pos = moveIndex32(fText, pos, -1);  
+                                thisChar = UTF16.charAt(fText, pos);
+                            }
+                            while (fCM.contains(thisChar));
+                        }
+                        continue;
+                    }
+                }
+                
+                
+                // LB 26  Do not break Korean Syllables
+                if (fJL.contains(prevChar) && (fJL.contains(thisChar) ||
+                                                fJV.contains(thisChar) ||
+                                                fH2.contains(thisChar) ||
+                                                fH3.contains(thisChar))) {
+                                                    continue;
+                                                }
+
+                if ((fJV.contains(prevChar) || fH2.contains(prevChar))  &&
+                    (fJV.contains(thisChar) || fJT.contains(thisChar))) {
+                        continue;
+                }
+
+                if ((fJT.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fJT.contains(thisChar)) {
+                        continue;
+                }
+
+                // LB 27 Treat a Korean Syllable Block the same as ID
+                if ((fJL.contains(prevChar) || fJV.contains(prevChar) ||
+                    fJT.contains(prevChar) || fH2.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fIN.contains(thisChar)) {
+                        continue;
+                    }
+                if ((fJL.contains(prevChar) || fJV.contains(prevChar) ||
+                    fJT.contains(prevChar) || fH2.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fPO.contains(thisChar)) {
+                        continue;
+                    }
+                if (fPR.contains(prevChar) && (fJL.contains(thisChar) || fJV.contains(thisChar) ||
+                    fJT.contains(thisChar) || fH2.contains(thisChar) || fH3.contains(thisChar))) {
+                        continue;
+                    }
+
+                
+                
+                // LB 28 Do not break between alphabetics
+                if (fAL.contains(prevChar) && fAL.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 29  Do not break between numeric punctuation and alphabetics
+                if (fIS.contains(prevChar) && fAL.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 30  (Withdrawn as of Unicode 5.1)
+              
+                // LB 31    Break everywhere else
+                break;            
+            }
+            
+            return pos;
+        }
+        
+        
+        
+        // Match the following regular expression in the input text.
+        //    ((PR | PO) CM*)? ((OP | HY) CM*)? NU CM* ((NU | IS | SY) CM*) * (CL CM*)?  (PR | PO) CM*)?
+        //      0    0   1       3    3    4              7    7    7    7      9   9     11   11    (match states)
+        //  retVals array  [0]  index of the start of the match, or -1 if no match
+        //                 [1]  index of first char following the match.
+        //  Can not use Java regex because need supplementary character support,
+        //     and because Unicode char properties version must be the same as in
+        //     the version of ICU being tested.
+        private int[] LBNumberCheck(StringBuffer s, int startIdx, int[] retVals) {
+            if (retVals == null) {
+                retVals = new int[2];
+             }
+            retVals[0]     = -1;  // Indicates no match.
+            int matchState = 0;
+            int idx        = startIdx;
+            
+            matchLoop: for (idx = startIdx; idx<s.length(); idx = moveIndex32(s, idx, 1)){
+                int c = UTF16.charAt(s, idx);
+                int cLBType = UCharacter.getIntPropertyValue(c, UProperty.LINE_BREAK);
+                switch (matchState) {
+                    case 0:   
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC ||
+                            cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 1;  
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.OPEN_PUNCTUATION) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.HYPHEN) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        
+                    case 1:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 1;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.OPEN_PUNCTUATION) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.HYPHEN) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        
+                        
+                    case 4:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        //    ((PR | PO) CM*)? ((OP | HY) CM*)? NU CM* ((NU | IS | SY) CM*) * (CL CM*)?  (PR | PO) CM*)?
+                        //      0    0   1       3    3    4              7    7    7    7      9   9     11   11    (match states)
+                 
+                    case 7:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.INFIX_NUMERIC) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.BREAK_SYMBOLS) {
+                            matchState = 7;
+                            break;       
+                        }
+                        if (cLBType == UCharacter.LineBreak.CLOSE_PUNCTUATION) {
+                            matchState = 9;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+
+                        break matchLoop;    // Match Complete.
+                    case 9:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 9;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        break matchLoop;    // Match Complete.
+                    case 11:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        break matchLoop;    // Match Complete.
+                }
+            }
+            if (matchState > 4) {
+                retVals[0] = startIdx;   
+                 retVals[1] = idx;   
+            }
+            return retVals;
+        }
+        
+        
+        List  charClasses() {
+            return fSets;
+        }
+        
+        
+    
+    }
+
+     
+    /**
+     * 
+     * Sentence Monkey Test Class
+     *
+     * 
+     * 
+     */
+    static class RBBISentenceMonkey extends RBBIMonkeyKind {
+        List                 fSets;
+        StringBuffer         fText;
+
+        UnicodeSet           fSepSet;
+        UnicodeSet           fFormatSet;
+        UnicodeSet           fSpSet;
+        UnicodeSet           fLowerSet;
+        UnicodeSet           fUpperSet;
+        UnicodeSet           fOLetterSet;
+        UnicodeSet           fNumericSet;
+        UnicodeSet           fATermSet;
+        UnicodeSet           fSContinueSet;
+        UnicodeSet           fSTermSet;
+        UnicodeSet           fCloseSet;
+        UnicodeSet           fOtherSet;
+        UnicodeSet           fExtendSet;
+
+ 
+        
+        RBBISentenceMonkey() {
+            fCharProperty  = UProperty.SENTENCE_BREAK;
+
+            fSets            = new ArrayList();
+
+            //  Separator Set Note:  Beginning with Unicode 5.1, CR and LF were removed from the separator
+            //                       set and made into character classes of their own.  For the monkey impl,
+            //                       they remain in SEP, since Sep always appears with CR and LF in the rules.
+            fSepSet          = new UnicodeSet("[\\p{Sentence_Break = Sep} \\u000a \\u000d]");
+            fFormatSet       = new UnicodeSet("[\\p{Sentence_Break = Format}]");
+            fSpSet           = new UnicodeSet("[\\p{Sentence_Break = Sp}]");
+            fLowerSet        = new UnicodeSet("[\\p{Sentence_Break = Lower}]");
+            fUpperSet        = new UnicodeSet("[\\p{Sentence_Break = Upper}]");
+            fOLetterSet      = new UnicodeSet("[\\p{Sentence_Break = OLetter}]");
+            fNumericSet      = new UnicodeSet("[\\p{Sentence_Break = Numeric}]");
+            fATermSet        = new UnicodeSet("[\\p{Sentence_Break = ATerm}]");
+            fSContinueSet    = new UnicodeSet("[\\p{Sentence_Break = SContinue}]");
+            fSTermSet        = new UnicodeSet("[\\p{Sentence_Break = STerm}]");
+            fCloseSet        = new UnicodeSet("[\\p{Sentence_Break = Close}]");
+            fExtendSet       = new UnicodeSet("[\\p{Sentence_Break = Extend}]");
+            fOtherSet        = new UnicodeSet();
+
+
+            fOtherSet.complement();
+            fOtherSet.removeAll(fSepSet);
+            fOtherSet.removeAll(fFormatSet);
+            fOtherSet.removeAll(fSpSet);
+            fOtherSet.removeAll(fLowerSet);
+            fOtherSet.removeAll(fUpperSet);
+            fOtherSet.removeAll(fOLetterSet);
+            fOtherSet.removeAll(fNumericSet);
+            fOtherSet.removeAll(fATermSet);
+            fOtherSet.removeAll(fSContinueSet);
+            fOtherSet.removeAll(fSTermSet);
+            fOtherSet.removeAll(fCloseSet);
+            fOtherSet.removeAll(fExtendSet);
+
+            fSets.add(fSepSet);
+            fSets.add(fFormatSet);
+
+            fSets.add(fSpSet);
+            fSets.add(fLowerSet);
+            fSets.add(fUpperSet);
+            fSets.add(fOLetterSet);
+            fSets.add(fNumericSet);
+            fSets.add(fATermSet);
+            fSets.add(fSContinueSet);
+            fSets.add(fSTermSet);
+            fSets.add(fCloseSet);
+            fSets.add(fOtherSet);
+            fSets.add(fExtendSet);
+        }
+        
+        
+        List  charClasses() {
+            return fSets;  
+        }
+        
+        void   setText(StringBuffer s) { 
+            fText = s;        
+        }   
+
+        
+        //      moveBack()   Find the "significant" code point preceding the index i.
+        //      Skips over ($Extend | $Format)*
+        // 
+        private int moveBack(int i) {
+            
+            if (i <= 0) {
+                return -1;
+            }
+            
+            int      c;
+            int      j = i;
+            do {
+                j = moveIndex32(fText, j, -1);
+                c = UTF16.charAt(fText, j);
+            }
+            while (j>0 &&(fFormatSet.contains(c) || fExtendSet.contains(c)));
+            return j;
+        }
+        
+        
+        int moveForward(int i) {
+            if (i>=fText.length()) {
+                return fText.length();
+            }
+            int   c;
+            int   j = i;
+            do {
+                j = moveIndex32(fText, j, 1);
+                c = cAt(j);
+            }
+            while (c>=0 && (fFormatSet.contains(c) || fExtendSet.contains(c)));
+            return j;
+           
+        }
+        
+        int cAt(int pos) {
+            if (pos<0 || pos>=fText.length()) {
+                return -1;
+            }
+            return UTF16.charAt(fText, pos);
+        }
+
+        int   next(int prevPos) {  
+            int    /*p0,*/ p1, p2, p3;      // Indices of the significant code points around the 
+                                        //   break position being tested.  The candidate break
+                                        //   location is before p2.
+            int     breakPos = -1;
+            
+            int c0, c1, c2, c3;         // The code points at p0, p1, p2 & p3.
+            int c;
+            
+            // Prev break at end of string.  return DONE.
+            if (prevPos >= fText.length()) {
+                return -1;
+            }
+            /*p0 =*/ p1 = p2 = p3 = prevPos;
+            c3 = UTF16.charAt(fText, prevPos);
+            c0 = c1 = c2 = 0;
+            
+            // Loop runs once per "significant" character position in the input text.
+            for (;;) {
+                // Move all of the positions forward in the input string.
+                /*p0 = p1;*/  c0 = c1;
+                p1 = p2;  c1 = c2;
+                p2 = p3;  c2 = c3;
+                
+                // Advancd p3 by  X(Extend | Format)*   Rule 4
+                p3 = moveForward(p3);
+                c3 = cAt(p3);
+                
+                // Rule (3) CR x LF
+                if (c1==0x0d && c2==0x0a && p2==(p1+1)) {
+                    continue;
+                }
+                
+                // Rule (4)    Sep  <break>
+                if (fSepSet.contains(c1)) {
+                    p2 = p1+1;   // Separators don't combine with Extend or Format
+                    break;
+                }               
+
+                if (p2 >= fText.length()) {
+                    // Reached end of string.  Always a break position.
+                    break;
+                }
+
+                if (p2 == prevPos) {
+                    // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                    continue;
+                }
+
+                // Rule (6).   ATerm x Numeric
+                if (fATermSet.contains(c1) &&  fNumericSet.contains(c2))  {
+                    continue;
+                }
+
+                // Rule (7).  Upper ATerm  x  Uppper
+                if (fUpperSet.contains(c0) && fATermSet.contains(c1) && fUpperSet.contains(c2)) {
+                    continue;
+                }
+
+                // Rule (8)  ATerm Close* Sp*  x  (not (OLettter | Upper | Lower | Sep))* Lower
+                //           Note:  Sterm | ATerm are added to the negated part of the expression by a 
+                //                  note to the Unicode 5.0 documents.
+                int p8 = p1;
+                while (p8>0 && fSpSet.contains(cAt(p8))) {
+                    p8 = moveBack(p8);
+                }
+                while (p8>0 && fCloseSet.contains(cAt(p8))) {
+                    p8 = moveBack(p8);
+                }
+                if (fATermSet.contains(cAt(p8))) {
+                    p8=p2;
+                    for (;;) {
+                        c = cAt(p8);
+                        if (c==-1 || fOLetterSet.contains(c) || fUpperSet.contains(c) ||
+                            fLowerSet.contains(c) || fSepSet.contains(c) ||
+                            fATermSet.contains(c) || fSTermSet.contains(c))  
+                         {
+                            break;
+                        }
+                        p8 = moveForward(p8);
+                    }
+                    if (p8<fText.length() && fLowerSet.contains(cAt(p8))) {
+                        continue;
+                    }
+                }
+                
+                // Rule 8a  (STerm | ATerm) Close* Sp* x (SContinue | Sterm | ATerm)
+                if (fSContinueSet.contains(c2) || fSTermSet.contains(c2) || fATermSet.contains(c2)) {
+                    p8 = p1;
+                    while (setContains(fSpSet, cAt(p8))) {
+                        p8 = moveBack(p8);
+                    }
+                    while (setContains(fCloseSet, cAt(p8))) {
+                        p8 = moveBack(p8);
+                    }
+                    c = cAt(p8);
+                    if (setContains(fSTermSet, c) || setContains(fATermSet, c)) {
+                        continue;
+                    }
+                }
+
+
+                // Rule (9)  (STerm | ATerm) Close*  x  (Close | Sp | Sep | CR | LF)
+                int p9 = p1;
+                while (p9>0 && fCloseSet.contains(cAt(p9))) {
+                    p9 = moveBack(p9);
+                }
+                c = cAt(p9);
+                if ((fSTermSet.contains(c) || fATermSet.contains(c))) {
+                    if (fCloseSet.contains(c2) || fSpSet.contains(c2) || fSepSet.contains(c2)) {
+                        continue;
+                    }
+                }
+
+                // Rule (10)  (Sterm | ATerm) Close* Sp*  x  (Sp | Sep | CR | LF)
+                int p10 = p1;
+                while (p10>0 && fSpSet.contains(cAt(p10))) {
+                    p10 = moveBack(p10);
+                }
+                while (p10>0 && fCloseSet.contains(cAt(p10))) {
+                    p10 = moveBack(p10);
+                }
+                if (fSTermSet.contains(cAt(p10)) || fATermSet.contains(cAt(p10))) {
+                    if (fSpSet.contains(c2) || fSepSet.contains(c2)) {
+                        continue;
+                    }
+                }
+
+                // Rule (11)  (STerm | ATerm) Close* Sp*   <break>
+                int p11 = p1;
+                if (p11>0 && fSepSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                while (p11>0 && fSpSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                while (p11>0 && fCloseSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                if (fSTermSet.contains(cAt(p11)) || fATermSet.contains(cAt(p11))) {
+                    break;
+                }
+
+                //  Rule (12)  Any x Any
+                continue;
+            }
+            breakPos = p2;
+            return breakPos;
+        }
+           
+
+        
+    }
+
+ 
+    /**
+     * Move an index into a string by n code points.
+     *   Similar to UTF16.moveCodePointOffset, but without the exceptions, which were
+     *   complicating usage.
+     * @param s   a Text string
+     * @param pos The starting code unit index into the text string
+     * @param amt The amount to adjust the string by.
+     * @return    The adjusted code unit index, pinned to the string's length, or
+     *            unchanged if input index was outside of the string.
+     */
+    static int moveIndex32(StringBuffer s, int pos, int amt) {
+        int i;
+        char  c;
+        if (amt>0) {
+            for (i=0; i<amt; i++) {
+                if (pos >= s.length()) {
+                    return s.length();                   
+                }
+                c = s.charAt(pos);
+                pos++;
+                if (UTF16.isLeadSurrogate(c) && pos < s.length()) {
+                    c = s.charAt(pos);
+                    if (UTF16.isTrailSurrogate(c)) {
+                        pos++;   
+                    }
+                }
+            }
+        } else {
+            for (i=0; i>amt; i--) {
+                if (pos <= 0) {
+                    return 0;   
+                }
+                pos--;
+                c = s.charAt(pos);
+                if (UTF16.isTrailSurrogate(c) && pos >= 0) {
+                    c = s.charAt(pos);
+                    if (UTF16.isLeadSurrogate(c)) {
+                        pos--;   
+                    }
+                }
+            }
+        }
+        return pos;
+    }
+    
+    /**
+     * No-exceptions form of UnicodeSet.contains(c).
+     *    Simplifies loops that terminate with an end-of-input character value.
+     * @param s  A unicode set
+     * @param c  A code point value
+     * @return   true if the set contains c.
+     */
+    static boolean setContains(UnicodeSet s, int c) {
+        if (c<0 || c>UTF16.CODEPOINT_MAX_VALUE ) {
+            return false;
+        }
+        return s.contains(c);
+    }
+    
+    
+    /**
+     * return the index of the next code point in the input text.
+     * @param i the preceding index
+     * @return
+     * @internal
+     */
+    static int  nextCP(StringBuffer s, int i) {
+        if (i == -1) {
+            // End of Input indication.  Continue to return end value.
+            return -1;
+        }
+        int  retVal = i + 1;
+        if (retVal > s.length()) {
+            return -1;
+        }
+        int  c = UTF16.charAt(s, i);
+        if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && UTF16.isLeadSurrogate(s.charAt(i))) {
+            retVal++;
+        }
+        return retVal;
+    }
+    
+    
+    /**
+     * random number generator.  Not using Java's built-in Randoms for two reasons:
+     *    1.  Using this code allows obtaining the same sequences as those from the ICU4C monkey test.
+     *    2.  We need to get and restore the seed from values occurring in the middle
+     *        of a long sequence, to more easily reproduce failing cases.
+     */
+    private static int m_seed = 1;
+    private static int  m_rand()
+    {
+        m_seed = m_seed * 1103515245 + 12345;
+        return (int)(m_seed >>> 16) % 32768;
+    }
+
+    // Helper function for formatting error output.
+    //   Append a string into a fixed-size field in a StringBuffer.
+    //   Blank-pad the string if it is shorter than the field.
+    //   Truncate the source string if it is too long.
+    //
+    private static void appendToBuf(StringBuffer dest, String src, int fieldLen) {
+        int appendLen = src.length();
+        if (appendLen >= fieldLen) {
+            dest.append(src.substring(0, fieldLen));
+        } else {
+            dest.append(src);
+            while (appendLen < fieldLen) {
+                dest.append(' ');
+                appendLen++;
+            }
+        }
+    }
+
+    // Helper function for formatting error output.
+    // Display a code point in "\\uxxxx" or "\Uxxxxxxxx" format
+    private static void appendCharToBuf(StringBuffer dest, int c, int fieldLen) {
+           String hexChars = "0123456789abcdef";
+           if (c < 0x10000) {
+                dest.append("\\u");
+                for (int bn=12; bn>=0; bn-=4) {
+                    dest.append(hexChars.charAt((((int)c)>>bn)&0xf));
+                }
+                appendToBuf(dest, " ", fieldLen-6);
+            } else {
+                dest.append("\\U");
+                for (int bn=28; bn>=0; bn-=4) {
+                    dest.append(hexChars.charAt((((int)c)>>bn)&0xf));
+                }
+                appendToBuf(dest, " ", fieldLen-10);
+
+            }
+       }
+    
+/**
+ *  Run a RBBI monkey test.  Common routine, for all break iterator types.
+ *    Parameters:
+ *       bi      - the break iterator to use
+ *       mk      - MonkeyKind, abstraction for obtaining expected results
+ *       name    - Name of test (char, word, etc.) for use in error messages
+ *       seed    - Seed for starting random number generator (parameter from user)
+ *       numIterations
+ */
+void RunMonkey(BreakIterator  bi, RBBIMonkeyKind mk, String name, int  seed, int numIterations) {
+    int              TESTSTRINGLEN = 500;
+    StringBuffer     testText         = new StringBuffer();
+    int              numCharClasses;
+    List             chClasses;
+    int[]            expected         = new int[TESTSTRINGLEN*2 + 1];
+    int              expectedCount    = 0;
+    boolean[]        expectedBreaks   = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        forwardBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        reverseBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        isBoundaryBreaks = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        followingBreaks  = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        precedingBreaks  = new boolean[TESTSTRINGLEN*2 + 1];
+    int              i;
+    int              loopCount        = 0;
+    boolean          printTestData    = false;
+    boolean          printBreaksFromBI = false;
+
+    m_seed = seed;
+
+    numCharClasses = mk.charClasses().size();
+    chClasses      = mk.charClasses();
+
+    // Verify that the character classes all have at least one member.
+    for (i=0; i<numCharClasses; i++) {
+        UnicodeSet s = (UnicodeSet)chClasses.get(i);
+        if (s == null || s.size() == 0) {
+            errln("Character Class " + i + " is null or of zero size.");
+            return;
+        }
+    }
+
+    //--------------------------------------------------------------------------------------------
+    //
+    //  Debugging settings.  Comment out everything in the following block for normal operation
+    //
+    //--------------------------------------------------------------------------------------------
+    // numIterations = -1;  
+    // RuleBasedBreakIterator_New.fTrace = true;
+    // m_seed = 859056465;
+    // TESTSTRINGLEN = 50;
+    // printTestData = true;
+    // printBreaksFromBI = true;
+    // ((RuleBasedBreakIterator_New)bi).dump();
+    
+    //--------------------------------------------------------------------------------------------
+    //
+    //  End of Debugging settings.  
+    //
+    //--------------------------------------------------------------------------------------------
+    
+    int  dotsOnLine = 0;
+     while (loopCount < numIterations || numIterations == -1) {
+        if (numIterations == -1 && loopCount % 10 == 0) {
+            // If test is running in an infinite loop, display a periodic tic so
+            //   we can tell that it is making progress.
+            System.out.print(".");
+            if (dotsOnLine++ >= 80){
+                System.out.println();
+                dotsOnLine = 0;
+            }
+        }
+        // Save current random number seed, so that we can recreate the random numbers
+        //   for this loop iteration in event of an error.
+        seed = m_seed;
+
+        testText.setLength(0);
+        // Populate a test string with data.
+        if (printTestData) {
+            System.out.println("Test Data string ..."); 
+        }
+        for (i=0; i<TESTSTRINGLEN; i++) {
+            int        aClassNum = m_rand() % numCharClasses;
+            UnicodeSet classSet  = (UnicodeSet)chClasses.get(aClassNum);
+            int        charIdx   = m_rand() % classSet.size();
+            int        c         = classSet.charAt(charIdx);
+            if (c < 0) {   // TODO:  deal with sets containing strings.
+                errln("c < 0");
+            }
+            UTF16.appendCodePoint(testText, c);
+            if (printTestData) {
+                System.out.print(Integer.toHexString(c) + " ");
+            }
+        }
+        if (printTestData) {
+            System.out.println(); 
+        }
+
+        Arrays.fill(expected, 0);
+        Arrays.fill(expectedBreaks, false);
+        Arrays.fill(forwardBreaks, false);
+        Arrays.fill(reverseBreaks, false);
+        Arrays.fill(isBoundaryBreaks, false);
+        Arrays.fill(followingBreaks, false);
+        Arrays.fill(precedingBreaks, false);
+ 
+        // Calculate the expected results for this test string.
+        mk.setText(testText);
+        expectedCount = 0;
+        expectedBreaks[0] = true;
+        expected[expectedCount ++] = 0;
+        int breakPos = 0;
+        int lastBreakPos = -1;
+        for (;;) {
+            lastBreakPos = breakPos;
+            breakPos = mk.next(breakPos);
+            if (breakPos == -1) {
+                break;
+            }
+            if (breakPos > testText.length()) {
+                errln("breakPos > testText.length()");
+            }
+            if (lastBreakPos >= breakPos) {
+                errln("Next() not increasing.");
+                // break;
+            }
+            expectedBreaks[breakPos] = true;
+            expected[expectedCount ++] = breakPos;
+        }
+
+        // Find the break positions using forward iteration
+        if (printBreaksFromBI) {
+            System.out.println("Breaks from BI...");  
+        }
+        bi.setText(testText.toString());
+        for (i=bi.first(); i != BreakIterator.DONE; i=bi.next()) {
+            if (i < 0 || i > testText.length()) {
+                errln(name + " break monkey test: Out of range value returned by breakIterator::next()");
+                break;
+            }
+            if (printBreaksFromBI) {
+                System.out.print(Integer.toHexString(i) + " ");
+            }
+            forwardBreaks[i] = true;
+        }
+        if (printBreaksFromBI) {
+            System.out.println();
+        }
+
+        // Find the break positions using reverse iteration
+        for (i=bi.last(); i != BreakIterator.DONE; i=bi.previous()) {
+            if (i < 0 || i > testText.length()) {
+                errln(name + " break monkey test: Out of range value returned by breakIterator.next()" + name);
+                break;
+            }
+            reverseBreaks[i] = true;
+        }
+
+        // Find the break positions using isBoundary() tests.
+        for (i=0; i<=testText.length(); i++) {
+            isBoundaryBreaks[i] = bi.isBoundary(i);
+        }
+
+        // Find the break positions using the following() function.
+        lastBreakPos = 0;
+        followingBreaks[0] = true;
+        for (i=0; i<testText.length(); i++) {
+            breakPos = bi.following(i);
+            if (breakPos <= i ||
+                breakPos < lastBreakPos ||
+                breakPos > testText.length() ||
+                breakPos > lastBreakPos && lastBreakPos > i ) {
+                errln(name + " break monkey test: " +
+                    "Out of range value returned by BreakIterator::following().\n" +
+                    "index=" + i + "following returned=" + breakPos +
+                    "lastBreak=" + lastBreakPos);
+                precedingBreaks[i] = !expectedBreaks[i];   // Forces an error.
+            } else {
+                followingBreaks[breakPos] = true;
+                lastBreakPos = breakPos;
+            }
+        }
+        
+        // Find the break positions using the preceding() function.
+        lastBreakPos = testText.length();
+        precedingBreaks[testText.length()] = true;
+        for (i=testText.length(); i>0; i--) {
+            breakPos = bi.preceding(i);
+            if (breakPos >= i ||
+                breakPos > lastBreakPos ||
+                breakPos < 0 ||
+                breakPos < lastBreakPos && lastBreakPos < i ) {
+                errln(name + " break monkey test: " +
+                        "Out of range value returned by BreakIterator::preceding().\n" +
+                        "index=" + i + "preceding returned=" + breakPos +
+                        "lastBreak=" + lastBreakPos);
+                precedingBreaks[i] = !expectedBreaks[i];   // Forces an error.
+            } else {
+                precedingBreaks[breakPos] = true;
+                lastBreakPos = breakPos;
+            }
+        }
+
+        
+
+        // Compare the expected and actual results.
+        for (i=0; i<=testText.length(); i++) {
+            String errorType = null;
+            if  (forwardBreaks[i] != expectedBreaks[i]) {
+                errorType = "next()";
+            } else if (reverseBreaks[i] != forwardBreaks[i]) {
+                errorType = "previous()";
+            } else if (isBoundaryBreaks[i] != expectedBreaks[i]) {
+                errorType = "isBoundary()";
+            } else if (followingBreaks[i] != expectedBreaks[i]) {
+                errorType = "following()";
+            } else if (precedingBreaks[i] != expectedBreaks[i]) {
+                errorType = "preceding()";
+            }
+
+
+            if (errorType != null) {
+                // Format a range of the test text that includes the failure as
+                //  a data item that can be included in the rbbi test data file.
+
+                // Start of the range is the last point where expected and actual results
+                //   both agreed that there was a break position.
+                int startContext = i;
+                int count = 0;
+                for (;;) {
+                    if (startContext==0) { break; }
+                    startContext --;
+                    if (expectedBreaks[startContext]) {
+                        if (count == 2) break;
+                        count ++;
+                    }
+                }
+
+                // End of range is two expected breaks past the start position.
+                int endContext = i + 1;
+                int ci;
+                for (ci=0; ci<2; ci++) {  // Number of items to include in error text.
+                    for (;;) {
+                        if (endContext >= testText.length()) {break;}
+                        if (expectedBreaks[endContext-1]) { 
+                            if (count == 0) break;
+                            count --;
+                        }
+                        endContext ++;
+                    }
+                }
+
+                // Format looks like   "<data><>\uabcd\uabcd<>\U0001abcd...</data>"
+                StringBuffer errorText = new StringBuffer();
+
+                int      c;    // Char from test data
+                for (ci = startContext;  ci <= endContext && ci != -1;  ci = nextCP(testText, ci)) {
+                    if (ci == i) {
+                        // This is the location of the error.
+                        errorText.append("<?>---------------------------------\n");
+                    } else if (expectedBreaks[ci]) {
+                        // This a non-error expected break position.
+                        errorText.append("------------------------------------\n");
+                    }
+                    if (ci < testText.length()) {
+                        c = UTF16.charAt(testText, ci);
+                        appendCharToBuf(errorText, c, 11);
+                        String gc = UCharacter.getPropertyValueName(UProperty.GENERAL_CATEGORY, UCharacter.getType(c), UProperty.NameChoice.SHORT);
+                        appendToBuf(errorText, gc, 8);
+                        int extraProp = UCharacter.getIntPropertyValue(c, mk.fCharProperty);
+                        String extraPropValue = 
+                            UCharacter.getPropertyValueName(mk.fCharProperty, extraProp, UProperty.NameChoice.LONG);
+                        appendToBuf(errorText, extraPropValue, 20);
+
+                        String charName = UCharacter.getExtendedName(c);
+                        appendToBuf(errorText, charName, 40);
+                        errorText.append('\n');
+                    }
+                }
+                if (ci == testText.length() && ci != -1) {
+                    errorText.append("<>");
+                }
+                errorText.append("</data>\n");
+
+                // Output the error
+                errln(name + " break monkey test error.  " + 
+                     (expectedBreaks[i]? "Break expected but not found." : "Break found but not expected.") +
+                      "\nOperation = " + errorType + "; random seed = " + seed + ";  buf Idx = " + i + "\n" +
+                      errorText);
+                break;
+            }
+        }
+
+        loopCount++;
+    }
+}
+
+public void TestCharMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    RBBICharMonkey  m = new RBBICharMonkey();
+    BreakIterator   bi = BreakIterator.getCharacterInstance(Locale.US);
+    RunMonkey(bi, m, "char", seed, loopCount);
+}
+
+public void TestWordMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    logln("Word Break Monkey Test");
+    RBBIWordMonkey  m = new RBBIWordMonkey();
+    BreakIterator   bi = BreakIterator.getWordInstance(Locale.US);
+    RunMonkey(bi, m, "word", seed, loopCount);
+}
+
+public void TestLineMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    logln("Line Break Monkey Test");
+    RBBILineMonkey  m = new RBBILineMonkey();
+    BreakIterator   bi = BreakIterator.getLineInstance(Locale.US);
+    if (params == null) {
+        loopCount = 50;
+    }
+    RunMonkey(bi, m, "line", seed, loopCount);
+}
+
+public void TestSentMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 3000;
+    }
+    
+    logln("Sentence Break Monkey Test");
+    RBBISentenceMonkey  m = new RBBISentenceMonkey();
+    BreakIterator   bi = BreakIterator.getSentenceInstance(Locale.US);
+    if (params == null) {
+        loopCount = 30;
+    }
+    RunMonkey(bi, m, "sent", seed, loopCount);
+}
+//
+//  Round-trip monkey tests.
+//  Verify that break iterators created from the rule source from the default
+//    break iterators still pass the monkey test for the iterator type.
+//
+//  This is a major test for the Rule Compiler.  The default break iterators are built
+//  from pre-compiled binary rule data that was created using ICU4C; these
+//  round-trip rule recompile tests verify that the Java rule compiler can
+//  rebuild break iterators from the original source rules.
+//
+public void TestRTCharMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    RBBICharMonkey  m = new RBBICharMonkey();
+    BreakIterator   bi = BreakIterator.getCharacterInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    RunMonkey(rtbi, m, "char", seed, loopCount);
+}
+
+public void TestRTWordMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    logln("Word Break Monkey Test");
+    RBBIWordMonkey  m = new RBBIWordMonkey();
+    BreakIterator   bi = BreakIterator.getWordInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    RunMonkey(rtbi, m, "word", seed, loopCount);
+}
+
+public void TestRTLineMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    logln("Line Break Monkey Test");
+    RBBILineMonkey  m = new RBBILineMonkey();
+    BreakIterator   bi = BreakIterator.getLineInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    if (params == null) {
+        loopCount = 50;
+    }
+    RunMonkey(rtbi, m, "line", seed, loopCount);
+}
+
+public void TestRTSentMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 1000;
+    }
+    
+    logln("Sentence Break Monkey Test");
+    RBBISentenceMonkey  m = new RBBISentenceMonkey();
+    BreakIterator   bi = BreakIterator.getSentenceInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    if (params == null) {
+        loopCount = 30;
+    }
+    RunMonkey(rtbi, m, "sent", seed, loopCount);
+}
+
+
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
new file mode 100644
index 0000000..c659e6a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ListResourceBundle;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.DictionaryBasedBreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+
+// TODO: {dlf} this test currently doesn't test anything!
+// You'll notice that the resource that uses the dictionary isn't even on the resource path,
+// so the dictionary never gets used.  Good thing, too, because it would throw a security
+// exception if run with a security manager.  Not that it would matter, the dictionary 
+// resource isn't even in the icu source tree!
+// In order to fix this:
+// 1) make sure english.dict matches the current dictionary format required by dbbi
+// 2) make sure english.dict gets included in icu4jtests.jar
+// 3) have this test use getResourceAsStream to get a stream on the dictionary, and
+//    directly instantiate a DictionaryBasedBreakIterator.  It can use the rules from
+//    the appropriate section of ResourceBundle_en_US_TEST.  I'd suggest just copying
+//    the rules into this file.
+// 4) change the test text by inserting '|' at word breaks, and '||' at line breaks.  
+// 5) process this text to a) create tables of break indices, and b) clean up the test
+//    for the break iterator to work on
+// 
+// This would NOT test the ability to load dictionary-based break iterators through our
+// normal resource mechanism.  One could install such a break iterator and its
+// resources into the icu4j jar, and it would work, but there's no way to register entire
+// resources from outside yet.  Even if there were, the access restrictions are a bit
+// difficult to manage, if one wanted to register a break iterator whose code and data
+// resides outside the icu4j jar.  Since the code to instantiate would be going through 
+// two protection domains, each domain would have to allow access to the data-- but 
+// icu4j's domain wouldn't know about ours.  So we could instantiate before registering
+// the break iterator, but this would mean we'd have to fully initialize the dictionary(s)
+// at instantiation time, rather than let this be deferred until they are actually needed.
+//
+// I've done items 2 and 3 above.  Unfortunately, since I haven't done item 1, the
+// dictionary builder crashes.  So for now I'm disabling this test.  This is not
+// that important, since we have a thai dictionary that we do test thoroughly.
+//
+
+public class SimpleBITest extends TestFmwk{
+    public static final String testText =
+//        "The rain in Spain stays mainly on the plain.  The plains in Spain are mainly pained with rain.";
+//"one-two now--  Hah!  You owe me exactly $1,345.67...  Pay up, huh?  By the way, why don't I send you my re\u0301sume\u0301?  This is a line\r\nbreak.";
+//"nowisthetimeforallgoodmen...  tocometothehelpoftheircountry";
+"When, in the course of human events, it becomes necessary for one people to dissolve the political bonds which have "
+//"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotalyunworth"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+
+    public static void main(String[] args) throws Exception {
+        new SimpleBITest().run(args);
+    }
+    
+    protected boolean validate() {
+        // TODO: remove when english.dict gets fixed
+        return false;
+    }
+
+    private BreakIterator createTestIterator(int kind) {
+        final String bname = "com.ibm.icu.dev.test.rbbi.BreakIteratorRules_en_US_TEST";
+
+        BreakIterator iter = null;
+
+        ListResourceBundle bundle = null;
+        try {
+            Class cls = Class.forName(bname);
+            bundle = (ListResourceBundle)cls.newInstance();
+        }
+        catch (Exception e) {
+            errln("could not create bundle: " + bname + "exception: " + e.getMessage());
+            return null;
+        }
+        
+        final String[] kindNames = {
+            "Character", "Word", "Line", "Sentence"
+        };
+        String rulesName = kindNames[kind] + "BreakRules";
+        String dictionaryName = kindNames[kind] + "BreakDictionary";
+        
+        String[] classNames = bundle.getStringArray("BreakIteratorClasses");
+        String rules = bundle.getString(rulesName);
+        if (classNames[kind].equals("RuleBasedBreakIterator")) {
+            iter = new RuleBasedBreakIterator(rules);
+        }
+        else if (classNames[kind].equals("DictionaryBasedBreakIterator")) {
+            try {
+                String dictionaryPath = bundle.getString(dictionaryName);
+                InputStream dictionary = bundle.getClass().getResourceAsStream(dictionaryPath);
+                System.out.println("looking for " + dictionaryPath + " from " + bundle.getClass() + " returned " + dictionary);
+                iter = new DictionaryBasedBreakIterator(rules, dictionary);
+            }
+            catch(IOException e) {
+                e.printStackTrace();
+                errln(e.getMessage());
+                System.out.println(e); // debug
+            }
+            catch(MissingResourceException e) {
+                errln(e.getMessage());
+                System.out.println(e); // debug
+            }
+        }
+        if (iter == null) {
+            errln("could not create iterator");
+        }
+        
+        return iter;
+    }
+    
+    public void testWordBreak() throws Exception {
+        BreakIterator wordBreak = createTestIterator(BreakIterator.KIND_WORD);
+        int breaks = doTest(wordBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    public void testLineBreak() throws Exception {
+        BreakIterator lineBreak = createTestIterator(BreakIterator.KIND_LINE);
+        int breaks = doTest(lineBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    public void testSentenceBreak() throws Exception {
+        BreakIterator sentenceBreak = createTestIterator(BreakIterator.KIND_SENTENCE);
+        int breaks = doTest(sentenceBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    private int doTest(BreakIterator bi) {
+        // forward
+        bi.setText(testText);
+        int p = bi.first();
+        int lastP = p;
+        String fragment;
+        int breaks = 0;
+        logln("Forward...");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                fragment = testText.substring(lastP, p);
+            } else {
+                fragment = testText.substring(lastP);
+            }
+            debugPrintln(": >" + fragment + "<");
+            ++breaks;
+            lastP = p;
+        }
+        return breaks;
+    }
+
+    private void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+/*    private void debugPrintln2(String s) {
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= '\u0100')
+                out.append("<" + ((int)c - 0x100) + ">");
+            else
+                out.append(c);
+        }
+        logln(out.toString());
+    }*/
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/TestAll.java b/src/com/ibm/icu/dev/test/rbbi/TestAll.java
new file mode 100644
index 0000000..c767550
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/TestAll.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  // Disabled for now; see comment in SimpleBITest for details
+                  // "SimpleBITest",
+                  "BreakIteratorTest",
+                  "RBBITest",
+                  "RBBIAPITest",
+                  "BreakIteratorRegTest",
+                  "RBBITestExtended",
+                  "RBBITestMonkey"
+              },
+              " BreakIterator and RuleBasedBreakIterator Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "RBBI";
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/package.html b/src/com/ibm/icu/dev/test/rbbi/package.html
new file mode 100644
index 0000000..62468ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the RuleBasedBreakIterator.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt b/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
new file mode 100644
index 0000000..fe1666e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
@@ -0,0 +1,542 @@
+# Copyright (c) 2001-2008 International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+# RBBI Test Data
+#
+#   File:  rbbitst.txt
+#
+#     The format of this file looks vaguely like some kind of xml-ish markup,
+#     but it is NOT.  The syntax is this..
+#
+#   <word>    any following data is for word break testing
+#   <sent>    any following data is for sentence break testing
+#   <line>    any following data is for line break testing
+#   <char>    any following data is for char break testing
+#   <locale local_name>  Switch to the named locale at the next occurence of <word>, <sent>, etc.
+#   <data> ... </data>   test data.  May span multiple lines.
+#      <>        Break position, status == 0
+#      •         Break position, status == 0   (Bullet, \u2022) 
+#      <nnn>     Break position, status == nnn
+#      \         Escape.  Normal ICU unescape applied.  
+#      \ at end of line  ->  Line Continuation.  Remove both the backslash and the new line
+#   
+#
+
+
+#   Temp debugging tests 
+<sent>
+<data>•  (This is it).  •Testing the sentence iterator. •\
+"This isn't it." •Hi! \
+•This is a simple sample sentence. •(This is it.) •This is a simple sample sentence. •\
+"This isn't it." •\
+Hi! •This is a simple sample sentence. •It does not have to make any sense as you can see. •Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. •Che la dritta via aveo smarrita. •He said, that I said, that you said!! •Don't rock the boat.\u2029•Because I am the daddy, that is why. 
+•Not on my time (el timo.)! •</data>
+
+########################################################################################
+#
+#
+#       G r a p h e m e    C l u s t e r     T e s t s
+#
+#
+##########################################################################################
+<char>
+
+<data>•a•b•c• •,•\u0666•</data>                 # Quick Test
+<data>•\r•\r•\r\n•\r\n•\n•\r•</data>            # don't break CR/LF
+
+# Always break after controls.  Combining chars don't combine with them.
+<data>•\u0003•\N{COMBINING GRAVE ACCENT}•\r•\N{COMBINING GRAVE ACCENT}•</data>
+<data>•\u0085•\N{COMBINING MACRON}•A\N{COMBINING MACRON}•</data>
+
+# Surrogates
+<data>•\U00011000•\U00010020•\U00010000\N{COMBINING MACRON}•</data>
+<data>•\ud800\udc00•\udbff\udfff•a•</data>
+
+# Extend (Combining chars) combine.
+<data>•A\N{COMBINING GRAVE ACCENT}•B•</data>
+<data>•\N{GREEK SMALL LETTER MU}\N{COMBINING LOW LINE}\N{COMBINING HORN}•</data>
+<data>•a\u0301•b\u0302•c\u0303•d\u0304•e\u0305•f\u0306•g\u0307•h\u0308•i\u0309•</data>
+
+<data>•a\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304•</data>
+
+# Don't break Hangul Syllables
+#   L : \u1100
+#   V : \u1161
+#   T : \u11A8
+#  LV : \uAC00
+# LVT : \uAC01
+
+<data>•\u1100\u1161\u11a8•\u1100\u1161\u11a8•</data>  #LVT
+<data>•\u1100\u1161•\u1100\u1161•</data> 
+<data>•\u1100\u1161\u11a8•\u1161•\u1100•\u11a8•\u1161\u1161\u1161\u11a8•</data>
+<data>•\u1100\u1100\uac01•\u1100\uac01•\u1100\uac01\u0301•\uac01•</data>
+<data>•\u1100\u0301•\u1161\u11a8\u0301•\u11a8•</data>
+
+
+
+# Hindi combining chars.  (An old test)
+#   TODO:  Update these tests for Unicode 5.1 Extended Grapheme clusters 
+#<data>•भ••ा•\u0930•\u0924• •\u0938\u0941\u0902•\u0926•\u0930•
+#•\u0939•\u094c•\u0964•</data>
+#<data>•\u0916\u0947•\u0938\u0941\u0902•\u0926•\u0930•\u0939•\u094c•\u0964•</data>
+
+
+#  Bug 1587.  Tamil.  \u0baa\u0bc1 is an Extended Grpaheme Cluster
+<data>•\u0baa\u0bc1•\u0baa\u0bc1•</data>
+
+#   Regression test for bug 1889
+<data>•\u0f40\u0f7d•\u0000•\u0f7e•</data>
+
+
+#     0xffff is a legal character, and should not stop the break iterator early.
+#     (Requires special casing in implementation, which is why it gets a test.)
+<data>•\uffff•\uffff• •a•</data>
+
+#  Treat Japanese Half Width voicing marks as combining
+<data>•A\uff9e•B\uff9f\uff9e\uff9f•C•</data>
+
+########################################################################################
+#
+#
+#       W o r d    B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+
+<word>
+#
+# Quick sanity test
+#
+<data>•hello<200> •there<200> •goodbye<200></data>
+<data>•hello<200> •12345<100> •,•</data>
+
+
+#
+# Test data originally in RBBIAPITest::TestFirstNextFollowing() and TestLastPreviousPreceding()
+#
+
+<word>
+<data>•This<200> •is<200> •a<200> •word<200> •break<200>.• • •Isn't<200> •it<200>?• •2.25<100></data>
+
+
+
+#
+# Data originally from TestDefaultRuleBasedWordIteration()
+#
+<data>•Write<200> •wordrules<200>.• •123.456<100> •alpha\u00adbeta\u00adgamma<200> •\u092f\u0939<200> •</data>
+<data>• •\u0939\u093f\u0928\u094d\u200d\u0926\u0940<200> •\u0939\u0948<200> •\u0905\u093e\u092a<200> •\u0938\u093f\u0916\u094b\u0917\u0947<200>?•</data>
+
+#Hindi Numbers
+<data>• •\u0968\u0966.\u0969\u096f<100> •\u0967\u0966\u0966.\u0966\u0966<100> •\N{RUPEE SIGN}•\u0967,\u0967\u0966\u0966.\u0966\u0966<100> • •\u0905\u092e\u091c<200>\n•</data>
+
+<data>•\u0938\u094d\u200d\u0935\u0924\u0902deadTA\u0930<200>\r•It's<200> •$•30.10<100> •12,34<100>¢•£•¤•¥•alpha\u05f3beta\u05f4gamma<200> •</data>
+
+<data>•Badges<200>?• •BADGES<200>!•?•!• •We<200> •don't<200> •need<200> •no<200> •STINKING<200> •BADGES<200>!•!•1000,233,456.000<100> •1,23.322<100>%•123.1222<100>$•123,000.20<100> •179.01<100>%•X<200> •Now<200>\r•is<200>\n•the<200>\r\n•time<200> •</data>
+
+#Hangul
+<data>•\uc5f0\ud569<200> •\uc7a5\ub85c\uad50\ud68c<200> •\u1109\u1161\u11bc\u1112\u1161\u11bc<200> •\u1112\u1161\u11ab\u110b\u1175\u11ab<200> •Hello<200>,• •how<200> •are<200> •you<200> •</data>
+
+
+# Words containing non-BMP letters
+<data>•abc\U00010300<200> •abc\N{DESERET SMALL LETTER ENG}<200> •abc\N{MATHEMATICAL BOLD SMALL Z}<200> •abc\N{MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL}<200> •</data>
+
+# Unassigned code points
+<data>•abc<200>\U0001D800•def<200>\U0001D3FF• •</data>
+
+# Hiragana & Katakana stay together, but separates from each other and Latin.
+<data>•abc<200>\N{HIRAGANA LETTER SMALL A}<300>\N{HIRAGANA LETTER VU}\N{COMBINING ACUTE ACCENT}<300>\N{HIRAGANA ITERATION MARK}<300>\N{KATAKANA LETTER SMALL A}\N{KATAKANA ITERATION MARK}\N{HALFWIDTH KATAKANA LETTER WO}\N{HALFWIDTH KATAKANA LETTER N}<300>def<200>#•</data>
+
+# Words with interior formatting characters
+<data>•def\N{COMBINING ACUTE ACCENT}\N{SYRIAC ABBREVIATION MARK}ghi<200> •</data>
+    
+# to test for bug #4097779
+<data>•aa\N{COMBINING GRAVE ACCENT}a<200> •</data>
+
+
+#      to test for bug #4098467
+#      What follows is a string of Korean characters (I found it in the Yellow Pages
+#      ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+#      it correctly), first as precomposed syllables, and then as conjoining jamo.
+#      Both sequences should be semantically identical and break the same way.
+#      precomposed syllables...
+<data>•\uc0c1\ud56d<200> •\ud55c\uc778<200> •\uc5f0\ud569<200> •\uc7a5\ub85c\uad50\ud68c<200> •\u1109\u1161\u11bc\u1112\u1161\u11bc<200> •\u1112\u1161\u11ab\u110b\u1175\u11ab<200> •\u110b\u1167\u11ab\u1112\u1161\u11b8<200> •\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c<200> •</data>
+
+<data>•abc<200>\u4e01<400>\u4e02<400>\u3005<200>\u4e03<400>\u4e03<400>abc<200> •</data>
+
+<data>•\u06c9\uc799\ufffa<200></data>
+
+#      
+#      Try some words from other scripts.
+#     
+
+#       Try some words from other scripts.
+#          Greek, Cyrillic, Hebrew, Arabic, Arabic, Georgian, Latin
+#      
+<data>•ΑΒΓ<200> •БВГ<200> •אבג֓<200> •ابت<200> •١٢٣<100> •\u10A0\u10A1\u10A2<200> •ABC<200> •</data>
+
+<data>•\u0301•A<200></data>
+
+
+#
+#  Hindi word break tests, imported from the old RBBI tests.
+#    An historical note:  a much earlier version of ICU break iterators had a number
+#    of special case rules for Hindi, which were tested by an earlier version of
+#    this test data.  The current RBBI rules do not special case Hindi in 
+#    any way, making this test data much less signfificant.
+#
+<data>•\u0917\u092a\u00ad\u0936\u092a<200>!•\u092f\u0939<200> •\u0939\u093f\u0928\u094d\u200d\u0926\u0940<200> •\u0939\u0948<200> •\u0905\u093e\u092a<200> •\u0938\u093f\u0916\u094b\u0917\u0947<200>?•\n•:•\u092a\u094d\u0930\u093e\u092f\u0903<200>
+•\u0935\u0930\u094d\u0937\u093e<200>\r\n•\u092a\u094d\u0930\u0915\u093e\u0936<200>,•\u0924\u0941\u092e\u093e\u0930\u094b<200> •\u092e\u093f\u0924\u094d\u0930<200> •\u0915\u093e<200> •\u092a\u0924\u094d\u0930<200> •\u092a\u095d\u094b<200> •\u0938\u094d\u0924\u094d\u0930\u093f<200>.• •\u0968\u0966.\u0969\u096f<100> •\u0967\u0966\u0966.\u0966\u0966<100>\u20a8•\u0967,\u0967\u0966\u0966.\u0966\u0966<100> •\u0905\u092e\u091c<200>\n•\u0938\u094d\u200d\u0935\u0924\u0902\u0924\u094d\u0930<200>\r•</data>
+
+#
+#  Failures from monkey tests
+#
+<data>•\u8527<400>\u02ba<200>\u0027\u0d42•\u00b7•\u09ea<100></data>
+
+#
+# Jitterbug 5276 - treat Japanese half width voicing marks as Grapheme Extend
+#
+<data>•A\uff9e\uff9fBC<200> •1\uff9e\uff9f23<100></data>
+
+########################################################################################
+#
+#
+#       S e n t e n c e     B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+
+
+#
+# Test data originally from RBBI RBBITest::TestDefaultRuleBasedSentenceIteration()
+#
+<sent>
+
+
+<sent>
+<data>•This\n<100></data>
+<data>•Hello! •how are you? •I'am fine. •Thankyou. •How are you \
+doing? •This\n<100> costs $20,00,000. •</data>
+
+
+# Sentence ending in a quote.
+<data>•"Sentence ending with a quote." •Bye.•</data>
+
+# Sentence, and test data, ending without a period or other terminator.
+<data>•Here is a random sentence, no ending period<100></data>
+
+
+<data>•  (This is it).  •Testing the sentence iterator. •\
+"This isn't it." •Hi! \
+•This is a simple sample sentence. •(This is it.) •This is a simple sample sentence. •\
+"This isn't it." •\
+Hi! •This is a simple sample sentence. •It does not have to make any sense as you can see. •Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. •Che la dritta via aveo smarrita. •He said, that I said, that you said!! •Don't rock the boat.\u2029•Because I am the daddy, that is why. 
+•Not on my time (el timo.)! •</data>
+
+<data>•Hello.  •So what!!\u2029•"But now," he said, \
+"I know!" •\
+Harris thumbed down several, including "Away We Go" (which became the huge success Oklahoma!). •One species, B. anthracis, is highly virulent.
+•Wolf said about Sounder:\
+"Beautifully thought-out and directed." •\
+Have you ever said, "This is where\tI shall live"? •He answered, \
+"You may not!" •Another popular saying is: "How do you do?". \n•\
+Yet another popular saying is: \
+'I'm fine thanks.' •\
+What is the proper use of the abbreviation pp.? •Yes, I am definatelly 12" tall!!\
+•Now\r<100>is\n<100>the\r\n<100>time\n<100>\r<100>for\r<100>\r<100></data>
+
+<data>•No breaks when . is surrounded by UPPER.Case letters.  •</data>
+<data>•No breaks when . is followed by Numeric .4 a.4 C.4 3.1 .•</data>
+<data>•No breaks when . is followed by a lower, with possible intervening punct .,a .$a .)a. •</data>
+
+#
+#  Sentence Breaks: no break at the boundary between CJK and other letters
+#
+<data>•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:"JAVA\u821c\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46".\u2029•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u3002•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2048•He said, "I can go there."\u2029•Bye, now.•</data>
+
+#
+#      Treat fullwidth variants of .!? the same as their
+#      normal counterparts
+#
+<data>•I know I'm right\uff0e •Right\uff1f •Right\uff01 •</data>
+
+
+#
+#       Don't break sentences at boundary between CJK and digits
+#
+<data>•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e48888\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u3002•Bye, now<100></data>
+
+#
+#      Breaks around '(' following a sentence TERM.  (Rule 9)
+#
+<data>•How do you do?(•Fine). •</data>
+<data>•How do you do? •(Fine). •</data>
+<data>•How do you do?(•fine). •</data>
+<data>•How do you do? •(fine). •</data>
+
+#
+<data>•Hello.123<100></data>    # Rule 6    
+<data>•Hello?•123<100></data>  
+  
+<data>•HELLO.Bye<100></data>    # Rule 7    
+<data>•HELLO?•Bye<100></data>    
+
+<data>•Hello.goodbye<100></data>  #Rule 8
+<data>•Hello. •Goodbye<100></data>
+<data>•Hello. goodbye<100></data>
+
+
+
+#
+#        test for bug #4158381: No breaks when there are no terminators around
+#
+<data>•\<P>Provides a set of &quot;lightweight&quot; (all-java\<FONT SIZE="-2">\<SUP>TM\</SUP>\</FONT> language) components that, to the maximum degree possible, work the same on all platforms.  •</data>
+<data>•Another test.\u2029•</data>
+      
+#        test for bug #4143071: Make sure sentences that end with digits
+#        work right
+#
+<data>•Today is the 27th of May, 1998.  •</data>
+<data>•Tomorrow with be 28 May 1998.  •</data>
+<data>•The day after will be the 30th.\u2029•</data>
+      
+#        test for bug #4152416: Make sure sentences ending with a capital
+#        letter are treated correctly
+#
+<data>•The type of all primitive \<code>boolean\</code> values accessed in the target VM.  •Calls to xxx will return an implementor of this interface.  \u2029•</data>
+      
+#        test for bug #4152117: Make sure sentence breaking is handling
+#        punctuation correctly [COULD NOT REPRODUCE THIS BUG, BUT TEST IS
+#        HERE TO MAKE SURE IT DOESN'T CROP UP]
+#
+<data>•Constructs a randomly generated BigInteger, uniformly distributed over the range \<tt>0\</tt> to \<tt>(2\<sup>numBits\</sup> - 1\)\</tt>, inclusive.  •The uniformity of the distribution assumes that a fair source of random bits is provided in \<tt>rnd\</tt>.  •Note that this constructor always constructs a non-negative biginteger.  \n•Ahh abc.  
+•</data>
+
+#        sentence breaks for hindi which used Devanagari script
+#        make sure there is sentence break after ?,danda(hindi phrase separator),
+#        fullstop followed by space.  (VERY old test)
+#       
+<data>•\u0928\u092e\u0938\u094d\u200d\u0924\u0947 \u0930\u092e\u0947\u0936\u0905\u093e\u092a\u0915\u0948\u0938\u0947 \u0939\u0948?•\u092e\u0948 \u0905\u091a\u094d\u200d \u091b\u093e \u0939\u0942\u0901\u0964 •\u0905\u093e\u092a\r\n<100>\
+\u0915\u0948\u0938\u0947 \u0939\u0948?•\u0935\u0939 \u0915\u094d\u200d\u092f\u093e\n\
+<100>\u0939\u0948?•\u092f\u0939 \u0905\u093e\u092e \u0939\u0948. •\u092f\u0939 means "this". •"\u092a\u095d\u093e\u0908" meaning "education" or "studies". •\u0905\u093e\u091c(\u0938\u094d\u200d\u0935\u0924\u0902\u0924\u094d\u0930 \u0926\u093f\u0935\u093e\u0938) \u0939\u0948\u0964 •Let's end here. •</data>
+
+#         Regression test for bug #1984, Sentence break in Arabic text.
+  
+<data>\
+•\u0623\u0633\u0627\u0633\u064b\u0627\u060c\u0020\u062a\u062a\u0639\u0627"\u0645\u0644\u0020\u0627\u0644\u062d\u0648\u0627\u0633\u064a\u0628\u0020"\u0641\u0642\u0637\u0020\u0645\u0639\u0020\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u060c\u0648\u062a\u0642\u0648\u0645\u0020\u0628\u062a\u062e\u0632\u064a\u0646\u0020\u0627\u0644\u0623\u062d\u0631\u0641\u0020\u0648\u0627\u0644\u0645\u062d\u0627\u0631\u0641\u0020\u0627\u0644\u0623\u062e\u0631\u0649\u0020\u0628\u0639\u062f\u0020\u0623\u0646\u062a\u064f\u0639\u0637\u064a\u0020\u0631\u0642\u0645\u0627\u0020\u0645\u0639\u064a\u0646\u0627\u0020\u0644\u0643\u0644\u0020\u0648\u0627\u062d\u062f\u0020\u0645\u0646\u0647\u0627\u002e\u0020•\u0648\u0642\u0628\u0644\u0020\u0627\u062e\u062a\u0631\u0627\u0639\u0022\u064a\u0648\u0646\u0650\u0643\u0648\u062f\u0022\u060c\u0020\u0643\u0627\u0646\u0020\u0647\u0646\u0627\u0643\u0020\u0645\u0626\u0627\u062a\u0020\u0627\u0644\u0623\u0646\u0638\u0645\u0629\u0020\u0644\u0644\u062a\u0634\u0641\u064a\u0631\u0648\u062a\u062e\u0635\u064a\u0635\u0020\u0647\u0630\u0647\u0020\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u0020\u0644\u0644\u0645\u062d\u0627\u0631\u0641\u060c\u0020\u0648\u0644\u0645\u0020\u064a\u0648\u062c\u062f\u0020\u0646\u0638\u0627\u0645\u062a\u0634\u0641\u064a\u0020\u0639\u0644\u0649\u0020\u062c\u0645\u064a\u0639\u0020\u0627\u0644\u0645\u062d\u0627\u0631\u0641\u0020\u0627\u0644\u0636\u0631\u0648\u0631\u064a\u0629.  •</data>
+
+#         Try a few more of the less common sentence endings.
+<data>•Hello, world\u3002 •Hello, world\u1803 •Hello, world\u2048 •Hello, world\u203c •Let's end here. •</data>
+
+
+
+
+################################################################
+#
+#
+#        L I N E     B R E A K
+#
+#
+################################################################
+
+<line>
+#
+# Test Character for each of the line break classes.
+#
+# 00A1;AI # INVERTED EXCLAMATION MARK  ¡
+# 0041;AL # LATIN CAPITAL LETTER A
+# 0009;BA # <control>
+# 00B4;BB # ACUTE ACCENT
+# 000C;BK # <control>
+# 2014;B2 # EM DASH
+# FFFC;CB # OBJECT REPLACEMENT CHARACTER
+# 0029;CL # RIGHT PARENTHESIS
+# 0301;CM # COMBINING ACUTE ACCENT
+# 0021;EX # EXCLAMATION MARK
+# 00A0;GL # NO-BREAK SPACE
+# 002D;HY # HYPHEN-MINUS
+# 4E00;ID # <CJK Ideograph, First>
+# 2024;IN # ONE DOT LEADER
+# 002C;IS # COMMA
+# 000A;LF # <control>
+# 0E5A;NS # THAI CHARACTER ANGKHANKHU
+# 0032;NU # DIGIT TWO
+# 0028;OP # LEFT PARENTHESIS
+# 0025;PO # PERCENT SIGN
+# 0024;PR # DOLLAR SIGN
+# 0022;QU # QUOTATION MARK
+# 0E01;SA # THAI CHARACTER KO KAI
+# DB7F;SG # Surrogate
+# 0020;SP # SPACE
+# 002F;SY # SOLIDUS /
+# F8FF;XX # Private Use
+# 200B;ZW # ZERO WIDTH SPACE
+
+
+# 2b  Always break at end of text
+
+<data>•  •\u00A1•</data>
+<data>•  •\u0041•</data>
+<data>•  •\u0009•</data>
+<data>•  •\u00B4•</data>
+<data>•    \u000C<100></data>    # LB3C  × BK
+<data>•  •\u2014•</data>
+<data>•  •\uFFFC•</data>
+<data>•   \u0029•</data>    # LB 8   × CL
+# <data>• • \u0301•</data>    # LB 7a   Treat SP CM* as if it were ID  #TODO:  SP CM
+<data>•   \u0021•</data>    # LB 8   × EX
+#<data>•   \u00A0•</data>    # LB 11b   × GL   TODO:  fix.
+<data>•  •\u002D•</data>
+<data>•  •\u4E00•</data>
+<data>•  •\u2024•</data>
+<data>•   \u002C•</data>    # LB 8   × IS
+<data>•   \u000A<100></data>    # LB3C   × ( BK | CR | LF | NL )
+<data>•  •\u0E5A•</data>
+<data>•  •\u0032•</data>
+<data>•  •\u0028•</data>
+<data>•  •\u0025•</data>
+<data>•  •\u0024•</data>
+<data>•  •\u0022•</data>
+<data>•  •\u0E01•</data>
+<data>•  •\uDB7F•</data>
+<data>•   \u0020•</data>     # LB4 - don't break before space.
+<data>•   \u002F•</data>     # LB 8  × SY
+<data>•  •\uF8FF•</data>
+<data>•   \u200B•</data>     # LB4 - don't break before ZA
+
+
+# 3a  Always break after hard line breaks.
+# 3c  Never break before hard line breaks.
+
+<data>•  •\u00A1\u2028<100>\u00A1•</data>
+<data>•  •\u0041\u2028<100>\u0041•</data>
+<data>•  •\u0009\u2028<100>\u0009•</data>
+<data>•  •\u00B4\u2028<100>\u00B4•</data>
+<data>•   \u000C<100>\u2028<100>\u000C<100></data>
+<data>•  •\u2014\u2028<100>\u2014•</data>
+<data>•  •\uFFFC\u2028<100>\uFFFC•</data>
+<data>•   \u0029\u2028<100>\u0029•</data>
+#<data>•   \u0301\u2028<100>\u0301•</data>    # TODO:  fix.
+<data>•   \u0021\u2028<100>\u0021•</data>
+#<data>•   \u00A0\u2028<100>\u00A0•</data>    # TODO:  fix
+<data>•  •\u002D\u2028<100>\u002D•</data>
+<data>•  •\u4E00\u2028<100>\u4E00•</data>
+<data>•  •\u2024\u2028<100>\u2024•</data>
+<data>•   \u002C\u2028<100>\u002C•</data>
+<data>•   \u000A<100>\u2028<100>\u000A<100></data>
+<data>•  •\u0E5A\u2028<100>\u0E5A•</data>
+<data>•  •\u0032\u2028<100>\u0032•</data>
+<data>•  •\u0028\u2028<100>\u0028•</data>
+<data>•  •\u0025\u2028<100>\u0025•</data>
+<data>•  •\u0024\u2028<100>\u0024•</data>
+<data>•  •\u0022\u2028<100>\u0022•</data>
+<data>•  •\u0E01\u2028<100>\u0E01•</data>
+<data>•  •\uDB7F\u2028<100>\uDB7F•</data>
+<data>•   \u0020\u2028<100>\u0020•</data>
+<data>•   \u002F\u2028<100>\u002F•</data>
+<data>•  •\uF8FF\u2028<100>\uF8FF•</data>
+<data>•   \u200B\u2028<100>\u200B•</data>
+
+
+#
+#  Old Line Break Test data.  Orginally located in RBBITest::TestDefaultRuleBasedLineIteration()
+#
+
+<line>
+
+<data>•Multi-•Level •example •of •a •semi-•idiotic •non-•sensical •(non-•important) •sentence. 
+<100>Hi  •Hello •How\n<100>are\r<100>you\u2028<100>fine.\t•good.  •Now\r<100>is\n<100>the\r\n<100>time\n<100>\r<100>for\r<100>\r<100>all•</data>
+
+<line>
+<data>•Hello! •how\r\n<100> •(are)\r<100> •you? •I'am •fine- •Thankyou. •foo\u00a0bar 
+<100>How, •are, •you? •This, •costs •$20,00,000.•</data>
+
+#     test for bug #4068133
+#
+<data>•\u96f6•\u4e00\u3002•\u4e8c\u3001•\u4e09\u3002\u3001•\u56db\u3001\u3002\u3001•\u4e94,•\u516d.•\u4e03.\u3001,\u3002•\u516b•</data>
+
+#     to test for bug #4086052
+<data>•foo\u00a0bar•</data>
+
+#     to test for bug #4097920
+<data>•dog,cat,mouse •(one)•(two)\n<100></data>
+
+#     to test for bug #4035266
+<data>•The •balance •is •$-23,456.78, •not •-•$32,456.78!\n<100></data>
+
+
+#      to test for bug #4098467
+#      What follows is a string of Korean characters (I found it in the Yellow Pages
+#      ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+#      it correctly), first as precomposed syllables, and then as conjoining jamo.
+#      Both sequences should be semantically identical and break the same way.
+#      precomposed syllables...  (I == Rich Gillam?)
+#
+<data>•\uc0c1•\ud56d •\ud55c•\uc778 •\uc5f0•\ud569 •\uc7a5•\ub85c•\uad50•\ud68c•</data>
+
+#      conjoining jamo...
+#      TODO:  rules update needed
+#<data>•\u1109\u1161\u11bc•\u1112\u1161\u11bc •\u1112\u1161\u11ab•\u110b\u1175\u11ab #•\u110b\u1167\u11ab•\u1112\u1161\u11b8 •\u110c\u1161\u11bc•\u1105\u1169•\u1100\u116d•\u1112\u116c•</data>
+
+#      to test for bug #4117554: Fullwidth .!? should be treated as postJwrd
+<data>•\u4e01\uff0e•\u4e02\uff01•\u4e03\uff1f•</data>
+
+#      Surrogate line break tests.
+#
+<data>•\u4e01•\ud840\udc01•\u4e02•abc •\ue000 •\udb80\udc01•</data>
+
+#      Regression for bug 836
+#        Note:  Unicode 5.1 changed this behavior
+#               ICU will want to change it back before releasing,
+#               so there is no break preceding the '('
+<data>•AAA•(AAA •</data> 
+
+#       Try some words from other scripts.
+#          Greek, Cyrillic, Hebrew, Arabic, Arabic, Georgian, Latin
+#      
+<data>•ΑΒΓ •БВГ •אבג֓ •ابت •١٢٣ •\u10A0\u10A1\u10A2 •ABC •</data>
+
+
+########################################################################################
+#
+#
+#       T i t l e   B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+<title>
+<data>•Here •is •a •short •sample •sentence.  •And •another.•</data>
+<data>•HERE •IS •A •SHORT •SAMPLE •SENTENCE.  •AND •ANOTHER.•</data>
+<data>•  •Start •and •end •with •spaces   •</data>
+<data>•Include 123 456 ^&  •some 54332 •numbers 4445•abc123•abc •ending 1223 •</data>
+
+<data>•Combining\u0301 \u0301•ma\u0306rks  •bye  •</data>
+<data>•123  •Start •with •a •number.•</data>
+
+<data>•'•start •with •a •case-•ignorable •cha'r'a'cter•</data>
+
+
+##########################################################################################
+#
+#   Thai Tests
+#
+##########################################################################################
+<locale th>
+<word>
+#
+# Test data originally from the test code source file
+#      // @suwit -- Thai sample data from GVT Guideline
+#
+#  NOTE:  Thai Java results differ from C because the new dictionary code is not
+#         yet ported.  All tags are zero with the old Thai impl.
+
+<data>•\u0E2B\u0E19\u0E36\u0E48\u0E07<000>\u0E04\u0E33<000>\u0E44\u0E17\u0E22<000>\
+\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16<000>\u0E1B\u0E23\u0E30\u0E01\u0E2D\u0E1A<000>\
+\u0E14\u0E49\u0E27\u0E22<000>\u0e2b\u0e25\u0e32\u0e22<000>\
+\u0e1e\u0e22\u0e32\u0e07\u0e04\u0e4c<000></data>
+
+#
+#  Jitterbug 3671 Test Case
+#
+<data>•สวัสดี<000>ครับ<000>สบาย<000>ดี<000>ไหม<000> •ครับ<000></data>
+
+
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
new file mode 100644
index 0000000..5a9604e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
@@ -0,0 +1,169 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import com.ibm.icu.dev.test.ModuleTest;
+
+public class ModuleTestSample extends ModuleTest {
+    public static void main(String[] args) throws Exception {
+    new ModuleTestSample().run(args);
+    }
+    ModuleTestSample(){
+        super("com/ibm/icu/dev/data/testdata/", "Test");
+    }
+
+    // standard loop, settings and cases
+//    public void Test01() {
+//    while (nextSettings()) {
+//        logln("--------");
+//        logln("String: " + settings.getString("aString"));
+//        if (settings.isDefined("anInt")) {
+//        logln("Int: " + settings.getInt("anInt"));
+//        }
+//        logln("Boolean: " + settings.getBoolean("aBoolean"));
+//
+//        while (nextCase()) {
+//        logln("  ----");
+//        logln("  StringArray: " + printArray(testcase.getStringArray("aStringArray")));
+//        logln("  IntArray: " + printArray(testcase.getIntArray("anIntArray")));
+//        logln("  BooleanArray: " + printArray(testcase.getBooleanArray("aBooleanArray")));
+//        }
+//    }
+//    }
+//
+//    // loop with just cases
+//    public void Test02() {
+//    while (nextCase()) {
+//        logln("----");
+//        logln("String: " + testcase.getString("aString"));
+//        logln("Int: " + testcase.getInt("anInt"));
+//        logln("Boolean: " + testcase.getBoolean("aBoolean"));
+//    }
+//    }
+
+    // no cases, just uses info for test
+    public void Test03() {
+//    DataMap info = testInfo();
+//    if (info != null) {
+////        logln(info.getString(TestDataModule.DESCRIPTION)); // standard
+//        logln(info.getString("Extra")); // test-specific
+//    }
+//    return;
+    }
+
+    // no data, ModuleTest should not allow this to execute by default
+    public void Test04() {
+    errln("Test04 should not execute!");
+    }
+
+    // special override of validateMethod allows Test05 
+    // to execute even though it has no data in the module
+    protected boolean validateMethod(String methodName) {
+    return methodName.equals("Test05") ? true : super.validateMethod(methodName);
+    }
+
+    // no data, but override of validateMethod allows it to execute
+    public void Test05() {
+    logln("Test05 executed.");
+    }
+
+//    // The test data contains an error in the third case.  When getInt("Data") is
+//    // executed the error is logged and iteration stops.
+//    public void Test06() {
+//    while (nextCase()) {
+//        logln("----");
+//        logln("isGood: " + testcase.getString("IsGood"));
+//        logln("  Data: " + testcase.getInt("Data"));
+//    }
+//    }
+//
+//    // The test using the data reports an error, which also automatically stops iteration.
+//    public void Test07() {
+//    while (nextSettings()) {
+//        int value = settings.getInt("Value");
+//        while (nextCase()) {
+//        int factor = testcase.getInt("Factor");
+//        float result = (float)value / factor;
+//        if (result != (int)result) {
+//            errln("the number '" + factor + "' is not a factor of the number '" + value + "'");
+//        } else {
+//            logln("'" + factor + "' is a factor of '" + value + "'");
+//        }
+//        }
+//    }
+//    }
+
+//    // The number of data elements is incorrect
+//    public void Test08() {
+//    while (nextCase()) {
+//        int one = testcase.getInt("One");
+//        int two = testcase.getInt("Two");
+//        int three = testcase.getInt("Three");
+//        logln("got: " + one + ", " + two + ", " + three);
+//    }
+//    }
+//
+//    public void Test09() {
+//        while (nextCase()) {
+//            int radix = testcase.getInt("Radix");
+//            int[] pow = testcase.getIntArray("Power");
+//            int[] val = testcase.getIntArray("Value");
+//            logln("radix: " + radix + " pow: " + printArray(pow) + " val: " + printArray(val));
+//            for (int i = 0; i < pow.length; ++i) {
+//                if (val[i] != (int)Math.pow(radix, pow[i])) {
+//                    errln("radix: " + radix + " to power " + pow[i] + " != " + val[i]);
+//                    break;
+//                }
+//            }
+//        }
+//    }
+                
+    // utility print functions to display the data from the resource
+    String printArray(String[] a) {
+    StringBuffer buf = new StringBuffer("String[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    String printArray(int[] a) {
+    StringBuffer buf = new StringBuffer("int[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    String printArray(boolean[] a) {
+    StringBuffer buf = new StringBuffer("boolean[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    protected void processModules() {
+        // TODO Auto-generated method stub
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
new file mode 100644
index 0000000..0ed8ad9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
@@ -0,0 +1,170 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This is sample data for ModuleTestSample, which is an illustration
+ * of a subclass of ModuleTest.  This data is in a format which
+ * is understood by ResourceModule, which for simplicity expects
+ * all data, including numeric and boolean data, to be represented
+ * by Strings.
+ */
+public class ModuleTestSampleData extends ListResourceBundle {
+    public Object[][] getContents() {
+    return contents;
+    }
+
+    Object[][] contents = {
+    { "Info", new Object[][] {
+        { "Description", "This is a sample test module that illustrates ModuleTest " +
+          "and uses data formatted for ResourceModule." },
+        { "Headers", new String[] {
+        "aStringArray", "anIntArray", "aBooleanArray"
+        }},
+    }},
+    
+
+    { "TestData", new Object[][] {
+        { "Test01", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test using both settings and cases." },
+            { "Long_Description", "It does not defined its own headers, but instead " +
+              "uses the default headers defined for the module.  " +
+              "There are two sets of settings and three cases." },
+        }},
+        { "Settings", new Object[] {
+            new Object[][]
+            {{ "aString", "this is a string" },
+             { "anInt", "43" },
+             { "aBoolean", "false" }},
+            new Object[][] 
+            {{ "aString", "this is another string" },
+             { "aBoolean", "true" }}
+        }},
+        { "Cases", new Object[] {
+            new Object[] {
+                new String[] { "one", "two", "three" },
+                new String[] { "24", "48", "72" },
+                new String[] { "true", "false", "true" }
+            },
+            new Object[] { 
+                new String[] { "four", "five", "six" },
+                new String[] { "-1", "-5", "-10" },
+                new String[] { "true", "false", "false" }
+            },
+            new Object[] { 
+                new String[] { "bagel", "peanuts", "carrot" },
+                new String[] { "0", "00001", "10101" },
+                new String[] { "false", "false", "False" }
+            },
+        }}
+        }},
+
+        { "Test02", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test that uses cases but not settings." },
+            { "Long_Description", "It defines its own headers." },
+            { "Headers", new String[] {
+            "aString", "anInt", "aBoolean"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "Superstring", "42", "true" },
+            new Object[] { "Underdog", "12", "false" },
+            new Object[] { "ScoobyDoo", "7", "TrUe" }
+        }}
+        }},
+
+        { "Test03", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test that uses just the info, no cases or settings." },
+            { "Extra", "This is some extra information." }
+        }},
+        }},
+
+        // no Test04 data
+        // Test04 should cause an exception to be thrown since ModuleTestSample does not
+        // specify that it is ok for it to have no data.
+
+        // no Test05 data
+        // Test05 should just log this fact, since ModuleTestSample indicates that it is
+        // ok for Test05 to have no data in its override of validateMethod.
+
+        { "Test06", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test that has bad data." },
+            { "Long_Description", "This illustrates how a data error will automatically " +
+              "terminate the settings and cases loop." },
+            { "Headers", new String[] {
+            "IsGood", "Data",
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "Good", "23" },
+            new Object[] { "Good", "-123" },
+            new Object[] { "Bad", "Whoops" },
+            new Object[] { "Not Executed", "35" },
+        }},
+        }},
+
+        { "Test07", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test that fails with a certain combination of settings and case." },
+            { "Long_Description", "This illustrates how a test error will automatically " +
+              "terminate the settings and cases loop.  Settings data is values, the case " +
+              "data is factors.  The third factor is not a factor of the second value.  " +
+              "The test will log an error, which will automatically stop the loop." },
+            { "Headers", new String[] {
+            "Factor",
+            }},
+        }},
+        { "Settings" , new Object[] {
+            new Object[][] {{ "Value", "210" }},
+            new Object[][] {{ "Value", "420" }},
+            new Object[][] {{ "Value", "42" }},
+            new Object[][] {{ "Value", "Not reached." }}
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "2" },
+            new Object[] { "3" },
+            new Object[] { "5" },
+            new Object[] { "7" },
+        }},
+        }},
+
+        { "Test08", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test with data missing from a test case." },
+            { "Headers", new String[] {
+            "One", "Two", "Three"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "1", "2", "3" },
+            new Object[] { "4", "5" }, // too short
+            new Object[] { "6", "7", "8" },
+        }},
+        }},
+
+        { "Test09", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test with data stored as int arrays instead of strings" },
+            { "Headers", new String[] {
+            "Radix", "Power", "Value"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "2", new int[] { 1, 2, 3 }, new int[] { 2, 4, 8 }},
+            new Object[] { "3", new int[] { 3, 4, 5 }, new int[] { 27, 81, 243 }},
+            new Object[] { "2", new int[] { 0, 8, 16, 24 }, new int[] { 1, 256, 65536, 65536 * 256 }},
+        }},
+        }},
+    }},
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/search/SearchTest.java b/src/com/ibm/icu/dev/test/search/SearchTest.java
new file mode 100644
index 0000000..98b24f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/SearchTest.java
@@ -0,0 +1,2016 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Port From:   ICU4C v2.1 : collate/StringSearchTest
+ * Source File: $ICU4CRoot/source/test/intltest/srchtest.cpp
+ **/
+
+package com.ibm.icu.dev.test.search;
+
+import java.util.Locale;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+public class SearchTest extends TestFmwk {
+
+    //inner class
+    static class SearchData {
+        SearchData(String text, String pattern, String coll, int strength, String breaker,
+                   int[] offset, int[] size) {
+            this.text = text;
+            this.pattern = pattern;
+            this.collator = coll;
+            this.strength = strength;
+            this.breaker = breaker;
+            this.offset = offset;
+            this.size = size;
+        }
+        String              text;
+        String              pattern;
+        String              collator;
+        int                 strength;
+        String              breaker;
+        int[]               offset;
+        int[]               size;
+    }
+
+    RuleBasedCollator m_en_us_;
+    RuleBasedCollator m_fr_fr_;
+    RuleBasedCollator m_de_;
+    RuleBasedCollator m_es_;
+    BreakIterator     m_en_wordbreaker_;
+    BreakIterator     m_en_characterbreaker_;
+
+    static SearchData[] BASIC = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx",          "fisher",       null, Collator.TERTIARY, null, new int[] {-1},            new int[]{0}),
+        new SearchData("silly spring string",           "string",       null, Collator.TERTIARY, null, new int[]{13, -1},         new int[]{6}),
+        new SearchData("silly spring string string",    "string",       null, Collator.TERTIARY, null, new int[]{13, 20, -1},     new int[]{6, 6}),
+        new SearchData("silly string spring string",    "string",       null, Collator.TERTIARY, null, new int[]{6, 20, -1},      new int[]{6, 6}),
+        new SearchData("string spring string",          "string",       null, Collator.TERTIARY, null, new int[]{0, 14, -1},      new int[]{6, 6}),
+        new SearchData("Scott Ganyo",                   "c",            null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("Scott Ganyo",                   " ",            null, Collator.TERTIARY, null, new int[]{5, -1},          new int[]{1}),
+        new SearchData("\u0300\u0325",                  "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300\u0325", null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{2}),
+        new SearchData("a\u0300b",                      "\u0300",       null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("\u00c9",                        "e",            null, Collator.PRIMARY,  null, new int[]{0, -1},          new int[]{1}),
+        new SearchData(null,                            null,           null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0})
+    };
+
+    SearchData BREAKITERATOREXACT[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}),
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY,
+             "wordbreaker", new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData BREAKITERATORCANONICAL[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}),
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY, "wordbreaker",
+                       new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null,
+             Collator.TERTIARY, "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData BASICCANONICAL[] = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx", "fisher", null, Collator.TERTIARY, null, new int[] {-1}, new int [] {0}),
+        new SearchData("silly spring string", "string", null, Collator.TERTIARY, null, new int[] {13, -1}, new int[] {6}),
+        new SearchData("silly spring string string", "string", null, Collator.TERTIARY, null, new int[] {13, 20, -1}, new int[] {6, 6}),
+        new SearchData("silly string spring string", "string", null, Collator.TERTIARY, null, new int[] {6, 20, -1}, new int[] {6, 6}),
+        new SearchData("string spring string", "string", null, Collator.TERTIARY, null, new int[] {0, 14, -1}, new int[] {6, 6}),
+        new SearchData("Scott Ganyo", "c", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("Scott Ganyo", " ", null, Collator.TERTIARY, null, new int[] {5, -1}, new int[] {1}),
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[]{2}),
+        new SearchData("a\u0300b", "\u0300", null, Collator.TERTIARY, null, new int[]{1, -1}, new int[] {1}),
+        new SearchData("a\u0300\u0325b", "\u0300b", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {3}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0300A\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0325A\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("a\u0300\u0325b\u0300\u0325c \u0325b\u0300 \u0300b\u0325", "\u0300b\u0325", null, Collator.TERTIARY, null,
+            new int[] {1, 12, -1}, new int[] {5, 3}),
+        new SearchData("\u00c4\u0323", "A\u0323\u0308", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0308\u0323", "\u0323\u0308", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COLLATOR[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String TESTCOLLATORRULE = "& o,O ; p,P";
+    String EXTRACOLLATIONRULE = " & ae ; \u00e4 & AE ; \u00c4 & oe ; \u00f6 & OE ; \u00d6 & ue ; \u00fc & UE ; \u00dc";
+
+
+    SearchData COLLATORCANONICAL[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIES[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[]  {0, 1, -1}, new int[]  {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIESCANONICAL[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        /* \u0300 blocked by \u0300 */
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        /* blocked accent */
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u01FA A\u0301\u030A A\u030A\u0301 A\u030A \u01FA", "A\u030A",
+            null, Collator.TERTIARY, null, new int[] {0, 6, 10, 13, -1}, new int[] {1, 3, 2, 1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData SUPPLEMENTARY[] = {
+        /* 012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00",
+            "\uD800\uDC00", null, Collator.TERTIARY, null, 
+            new int[] {4, 13, 22, 26, 29, -1}, new int[] {2, 2, 2, 2, 2}),
+        new SearchData("and\uD834\uDDB9this sentence", "\uD834\uDDB9", null, 
+                       Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {2}),
+        new SearchData("and \uD834\uDDB9 this sentence", " \uD834\uDDB9 ", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and-\uD834\uDDB9-this sentence", "-\uD834\uDDB9-", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and,\uD834\uDDB9,this sentence", ",\uD834\uDDB9,", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and?\uD834\uDDB9?this sentence", "?\uD834\uDDB9?", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String CONTRACTIONRULE = "&z = ab/c < AB < X\u0300 < ABC < X\u0300\u0315";
+
+    SearchData CONTRACTION[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration.
+        accents not found because discontiguous stores all information */
+        new SearchData("X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData CONTRACTIONCANONICAL[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration.
+        forwards gives 0, 4 but backwards give 1, 3 */
+        /* {"X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, {0, -1},
+        {4}}, */
+
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null,
+            new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null,
+            new int[] {0, -1}, new int[] {4}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null,
+            new int[] {1, -1}, new int[] {4}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData MATCH[] = {
+        new SearchData("a busy bee is a very busy beeee", "bee", null, Collator.TERTIARY, null,
+        new int[] {7, 26, -1}, new int[] {3, 3}),
+        /* 012345678901234567890123456789012345678901234567890 */
+        new SearchData("a busy bee is a very busy beeee with no bee life", "bee", null,
+            Collator.TERTIARY, null, new int[] {7, 26, 40, -1}, new int[] {3, 3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String IGNORABLERULE = "&a = \u0300";
+
+    SearchData IGNORABLE[] = {
+        new SearchData("\u0300\u0315 \u0300\u0315 ", "\u0300", null, Collator.PRIMARY, null,
+            new int[] {0, 3, -1}, new int[] {2, 2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData DIACTRICMATCH[] = {
+        new SearchData("\u0061\u0061\u00E1", "\u0061\u00E1", null, Collator.SECONDARY, null,
+            new int[] {1, -1}, new int[] {2}),   
+        new SearchData("\u0020\u00C2\u0303\u0020\u0041\u0061\u1EAA\u0041\u0302\u0303\u00C2\u0303\u1EAB\u0061\u0302\u0303\u00E2\u0303\uD806\uDC01\u0300\u0020",
+            "\u00C2\u0303", null, Collator.PRIMARY, null, new int[] {1, 4, 5, 6, 7, 10, 12, 13, 16,-1}, new int[] {2, 1, 1, 1, 3, 2, 1, 3, 2}),
+        new SearchData("\u03BA\u03B1\u03B9\u0300\u0020\u03BA\u03B1\u1F76", "\u03BA\u03B1\u03B9", null, Collator.PRIMARY, null,
+                new int[] {0, 5, -1}, new int[] {4, 3}),   
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NORMCANONICAL[] = {
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1},
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1},
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONNORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData OVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1}, new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONOVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData OVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1},
+                        new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONOVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData PATTERNCANONICAL[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null,
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null,
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData PATTERN[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null,
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null,
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData STRENGTH[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null,
+                        new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es",
+                        Collator.PRIMARY, null, new int[] {2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData STRENGTHCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null,
+                       new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es",
+                       Collator.PRIMARY, null, new int[]{2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+    };
+
+    SearchData SUPPLEMENTARYCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00",
+                       "\uD800\uDC00", null, Collator.TERTIARY, null, new int[] {4, 13, 22, 26, 29, -1},
+                       new int[] {2, 2, 2, 2, 2}),
+        new SearchData("and\uD834\uDDB9this sentence", "\uD834\uDDB9", null, 
+                       Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {2}),
+        new SearchData("and \uD834\uDDB9 this sentence", " \uD834\uDDB9 ", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and-\uD834\uDDB9-this sentence", "-\uD834\uDDB9-", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and,\uD834\uDDB9,this sentence", ",\uD834\uDDB9,", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and?\uD834\uDDB9?this sentence", "?\uD834\uDDB9?", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    static SearchData VARIABLE[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("blackbirds black blackbirds blackbird black-bird", "blackbird", null, Collator.TERTIARY,   null,
+        new int[] {0, 17, 28, 38, -1}, new int[] {9, 9, 9, 10}),
+
+        /* to see that it doesn't go into an infinite loop if the start of text
+        is a ignorable character */
+        new SearchData(" on",                                              "go",        null, Collator.TERTIARY,   null,
+                       new int[] {-1}, new int[]{0}),
+        new SearchData("abcdefghijklmnopqrstuvwxyz",                       "   ",       null, Collator.PRIMARY,    null,
+                        new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1},
+                        new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
+
+        /* testing tightest match */
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.QUATERNARY, null,
+                       new int[]{1, -1}, new int[] {3}),
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.SECONDARY,  null,
+                       new int[] {1, 6, 13, 21, 31, -1}, new int[] {3, 4, 4, 5, 5}),
+
+        /* totally ignorable text */
+        new SearchData("           ---------------",                       "abc",       null, Collator.SECONDARY,  null,
+                       new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    static SearchData TEXTCANONICAL[] = {
+        new SearchData("the foxy brown fox",                               "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {4, 15, -1}, new int[] {3, 3}),
+        new SearchData("the quick brown fox",                              "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {16, -1}, new int[]{3}),
+        new SearchData(null, null, null, Collator.TERTIARY,null, new int[] {-1}, new int[] {0})
+    };
+
+    /**
+     * Constructor
+     */
+    public SearchTest()
+    {
+
+    }
+
+    protected void init()throws Exception{
+        m_en_us_ = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        m_fr_fr_ = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        m_de_ = (RuleBasedCollator)Collator.getInstance(new Locale("de", "DE"));
+        m_es_ = (RuleBasedCollator)Collator.getInstance(new Locale("es", "ES"));
+        m_en_wordbreaker_ = BreakIterator.getWordInstance();
+        m_en_characterbreaker_ = BreakIterator.getCharacterInstance();
+        String rules = m_de_.getRules() + EXTRACOLLATIONRULE;
+        m_de_ = new RuleBasedCollator(rules);
+        rules = m_es_.getRules() + EXTRACOLLATIONRULE;
+        m_es_ = new RuleBasedCollator(rules);
+
+    }
+    public static void main(String[] args) throws Exception {
+        new SearchTest().run(args);
+        // new SearchTest().TestContraction();
+    }
+
+    RuleBasedCollator getCollator(String collator) {
+        if (collator == null) {
+            return m_en_us_;
+        } if (collator.equals("fr")) {
+            return m_fr_fr_;
+        } else if (collator.equals("de")) {
+            return m_de_;
+        } else if (collator.equals("es")) {
+            return m_es_;
+        } else {
+            return m_en_us_;
+        }
+    }
+
+    BreakIterator getBreakIterator(String breaker) {
+        if (breaker == null) {
+            return null;
+        } if (breaker.equals("wordbreaker")) {
+            return m_en_wordbreaker_;
+        } else {
+            return m_en_characterbreaker_;
+        }
+    }
+
+    boolean assertCanonicalEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search" + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqualWithAttribute(SearchData search, boolean canonical, boolean overlap) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(canonical);
+            strsrch.setOverlapping(overlap);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqualWithStringSearch(StringSearch strsrch, SearchData search) {
+        int           count       = 0;
+        int   matchindex  = search.offset[count];
+        String matchtext;
+
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+            errln("Error with the initialization of match start and length");
+        }
+        // start of following matches
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            //int x = strsrch.getMatchStart();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+            count ++;
+
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 &&
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        // start of preceding matches
+        count = count == 0 ? 0 : count - 1;
+        matchindex = search.offset[count];
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.previous();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 &&
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+
+            matchindex = count > 0 ? search.offset[count - 1] : -1;
+            count --;
+        }
+        strsrch.previous();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        return true;
+    }
+
+    public void TestConstructor()
+    {
+        String pattern = "pattern";
+        String text = "text";
+        StringCharacterIterator textiter = new StringCharacterIterator(text);
+        Collator defaultcollator = Collator.getInstance();
+        BreakIterator breaker = BreakIterator.getCharacterInstance();
+        breaker.setText(text);
+        StringSearch search = new StringSearch(pattern, text);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(defaultcollator)
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, String) error");
+        }
+        search = new StringSearch(pattern, textiter, m_fr_fr_);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(m_fr_fr_)
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, StringCharacterIterator, "
+                  + "RuleBasedCollator) error");
+        }
+        Locale de = new Locale("de", "DE");
+        breaker = BreakIterator.getCharacterInstance(de);
+        breaker.setText(text);
+        search = new StringSearch(pattern, textiter, de);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(Collator.getInstance(de))
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, StringCharacterIterator, Locale) "
+                  + "error");
+        }
+
+        search = new StringSearch(pattern, textiter, m_fr_fr_,
+                                  m_en_wordbreaker_);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(m_fr_fr_)
+            || !search.getBreakIterator().equals(m_en_wordbreaker_)) {
+            errln("StringSearch(String, StringCharacterIterator, Locale) "
+                  + "error");
+        }
+    }
+
+    public void TestBasic() {
+        int count = 0;
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestBreakIterator() {
+
+        String text = BREAKITERATOREXACT[0].text;
+        String pattern = BREAKITERATOREXACT[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search");
+            return;
+        }
+
+        strsrch.setBreakIterator(null);
+        if (strsrch.getBreakIterator() != null) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        strsrch.setBreakIterator(m_en_characterbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_characterbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        strsrch.setBreakIterator(m_en_wordbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_wordbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        int count = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData        search   = BREAKITERATOREXACT[count];
+            RuleBasedCollator collator = getCollator(search.collator);
+            BreakIterator     breaker  = getBreakIterator(search.breaker);
+                  //StringSearch      strsrch;
+
+            text = search.text;
+            pattern = search.pattern;
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            collator.setStrength(search.strength);
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+            }
+            search   = BREAKITERATOREXACT[count + 1];
+            breaker  = getBreakIterator(search.breaker);
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            strsrch.setBreakIterator(breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATOREXACT[count].text != null) {
+            if (!assertEqual(BREAKITERATOREXACT[count])) {
+                errln("Error at test number " + count);
+            }
+             count++;
+        }
+    }
+
+    public void TestBreakIteratorCanonical() {
+        int        count  = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData     search   = BREAKITERATORCANONICAL[count];
+
+            String text = search.text;
+            String pattern = search.pattern;
+            RuleBasedCollator collator = getCollator(search.collator);
+            collator.setStrength(search.strength);
+
+            BreakIterator breaker = getBreakIterator(search.breaker);
+            StringSearch  strsrch = null;
+            try {
+                strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            } catch (Exception e) {
+                errln("Error creating string search data");
+                return;
+            }
+            strsrch.setCanonical(true);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+                return;
+            }
+            search  = BREAKITERATOREXACT[count + 1];
+            breaker = getBreakIterator(search.breaker);
+            breaker.setText(strsrch.getTarget());
+            strsrch.setBreakIterator(breaker);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            strsrch.reset();
+            strsrch.setCanonical(true);
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+                 return;
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATORCANONICAL[count].text != null) {
+             if (!assertEqual(BREAKITERATORCANONICAL[count])) {
+                 errln("Error at test number " + count);
+                 return;
+             }
+             count++;
+        }
+    }
+
+    public void TestCanonical() {
+        int count = 0;
+        while (BASICCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(BASICCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestCollator() {
+        // test collator that thinks "o" and "p" are the same thing
+        String text = COLLATOR[0].text;
+        String pattern  = COLLATOR[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+            return;
+        }
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATOR[1].strength);
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+            return;
+        }
+
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[1])) {
+            return;
+        }
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+           errln("Error searching collator test");
+        }
+    }
+
+    public void TestCollatorCanonical() {
+        /* test collator that thinks "o" and "p" are the same thing */
+        String text = COLLATORCANONICAL[0].text;
+        String pattern = COLLATORCANONICAL[0].pattern;
+
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+            return;
+        }
+
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATORCANONICAL[1].strength);
+            tailored.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+        }
+
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[1])) {
+            logln("COLLATORCANONICAL[1] failed");  // Error should already be reported.
+        }
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+            logln("COLLATORCANONICAL[0] failed");  // Error should already be reported.
+        }
+    }
+
+    public void TestCompositeBoundaries() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIES[count].text != null) {
+            // logln("composite " + count);
+            if (!assertEqual(COMPOSITEBOUNDARIES[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestCompositeBoundariesCanonical() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIESCANONICAL[count].text != null) {
+            // logln("composite " + count);
+            if (!assertCanonicalEqual(COMPOSITEBOUNDARIESCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestContraction() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }
+
+        int count = 0;
+        while (CONTRACTION[count].text != null) {
+            text = CONTRACTION[count].text;
+            pattern = CONTRACTION[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTION[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestContractionCanonical() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search");
+        }
+
+        int count = 0;
+        while (CONTRACTIONCANONICAL[count].text != null) {
+            text = CONTRACTIONCANONICAL[count].text;
+            pattern = CONTRACTIONCANONICAL[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTIONCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestGetMatch() {
+        SearchData search = MATCH[0];
+        String text = search.text;
+        String pattern = search.pattern;
+
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        int           count      = 0;
+        int   matchindex = search.offset[count];
+        String matchtext;
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+            count++;
+
+            matchtext = strsrch.getMatchedText();
+            if (matchtext.length() != matchlength){
+                errln("Error getting match text");
+            }
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart()  != StringSearch.DONE ||
+            strsrch.getMatchLength() != 0) {
+            errln("Error end of match not found");
+        }
+        matchtext = strsrch.getMatchedText();
+        if (matchtext != null) {
+            errln("Error getting null matches");
+        }
+    }
+
+    public void TestGetSetAttribute() {
+        String  pattern = "pattern";
+        String  text = "text";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search");
+            return;
+        }
+
+        if (strsrch.isOverlapping()) {
+            errln("Error default overlaping should be false");
+        }
+        strsrch.setOverlapping(true);
+        if (!strsrch.isOverlapping()) {
+            errln("Error setting overlap true");
+        }
+        strsrch.setOverlapping(false);
+        if (strsrch.isOverlapping()) {
+            errln("Error setting overlap false");
+        }
+
+        strsrch.setCanonical(true);
+        if (!strsrch.isCanonical()) {
+            errln("Error setting canonical match true");
+        }
+        strsrch.setCanonical(false);
+        if (strsrch.isCanonical()) {
+            errln("Error setting canonical match false");
+        }
+
+    }
+
+    public void TestGetSetOffset() {
+        String  pattern = "1234567890123456";
+        String  text  = "12345678901234567890123456789012";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search");
+
+            return;
+        }
+
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(-1) failed as expected");
+        }
+
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(128) failed as expected");
+        }
+
+        int index   = 0;
+        while (BASIC[index].text != null) {
+            SearchData  search      = BASIC[index ++];
+
+            text =search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            strsrch.getCollator().setStrength(search.strength);
+            strsrch.reset();
+
+            int count = 0;
+            int matchindex  = search.offset[count];
+
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() ||
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 :
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset\n");
+                        return;
+                    }
+                }
+
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+
+    public void TestGetSetOffsetCanonical() {
+
+        String  text = "text";
+        String  pattern = "pattern";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Fail to open StringSearch!");
+            return;
+        }
+        strsrch.setCanonical(true);
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(-1) failed as expected");
+        }
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(128) failed as expected");
+        }
+
+        int   index   = 0;
+        while (BASICCANONICAL[index].text != null) {
+            SearchData  search      = BASICCANONICAL[index ++];
+            if (BASICCANONICAL[index].text == null) {
+                // skip the last one
+                break;
+            }
+
+            text = search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            int         count       = 0;
+            int matchindex  = search.offset[count];
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() ||
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 :
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset");
+                        return;
+                    }
+                }
+
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: %s" + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+
+    public void TestIgnorable() {
+        String rules = IGNORABLERULE;
+        int        count  = 0;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(IGNORABLE[count].strength);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+            return;
+        }
+        String pattern = "pattern";
+        String text = "text";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        while (IGNORABLE[count].text != null) {
+            text = IGNORABLE[count].text;
+            pattern = IGNORABLE[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, IGNORABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestInitialization() {
+        String  pattern;
+        String  text;
+        String  temp = "a";
+        StringSearch  result;
+
+        /* simple test on the pattern ce construction */
+        pattern = temp + temp;
+        text = temp + temp + temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search ");
+            return;
+        }
+
+        /* testing if an extremely large pattern will fail the initialization */
+        pattern = "";
+        for (int count = 0; count < 512; count ++) {
+            pattern += temp;
+        }
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Fail: an extremely large pattern will fail the initialization");
+            return;
+        }
+        if (result != result) {
+            errln("Error: string search object expected to match itself");
+        }
+
+    }
+
+    public void TestNormCanonical() {
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        int count = 0;
+        while (NORMCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(NORMCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+    }
+
+    public void TestNormExact() {
+        int count = 0;
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        count = 0;
+        while (NORMEXACT[count].text != null) {
+            if (!assertEqual(NORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+        count = 0;
+        while (NONNORMEXACT[count].text != null) {
+            if (!assertEqual(NONNORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestOpenClose() {
+        StringSearch            result;
+        BreakIterator           breakiter = m_en_wordbreaker_;
+        String           pattern = "";
+        String           text = "";
+        String           temp  = "a";
+        StringCharacterIterator  chariter= new StringCharacterIterator(text);
+
+        /* testing null arguments */
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        text  = String.valueOf(0x1);
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty pattern failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty pattern failed as expected");
+        }
+
+        text = "";
+        pattern =temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty text failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty text failed as expected");
+        }
+
+        text += temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, breakiter);
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+    }
+
+    public void TestOverlap() {
+        int count = 0;
+        while (OVERLAP[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAP[count], false, true)) {
+                errln("Error at overlap test number " + count);
+            }
+            count++;
+        }
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertEqual(NONOVERLAP[count])) {
+                errln("Error at non overlap test number " + count);
+            }
+            count++;
+        }
+
+        count = 0;
+        while (count < 1) {
+            SearchData search = (OVERLAP[count]);
+            String text = search.text;
+            String pattern = search.pattern;
+
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = null;
+            try {
+                strsrch  = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            } catch (Exception e) {
+                errln("error open StringSearch");
+                return;
+            }
+
+            strsrch.setOverlapping(true);
+            if (!strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                return;
+            }
+
+            search = NONOVERLAP[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                errln("Error at test number " + count);
+             }
+            count ++;
+        }
+    }
+
+    public void TestOverlapCanonical() {
+        int count = 0;
+        while (OVERLAPCANONICAL[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAPCANONICAL[count], true,
+                                          true)) {
+                errln("Error at overlap test number %d" + count);
+            }
+            count ++;
+        }
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertCanonicalEqual(NONOVERLAPCANONICAL[count])) {
+                errln("Error at non overlap test number %d" + count);
+            }
+            count ++;
+        }
+
+        count = 0;
+        while (count < 1) {
+                 /* UChar       temp[128];
+            const SearchData *search = &(OVERLAPCANONICAL[count]);
+                  UErrorCode  status = U_ZERO_ERROR;*/
+            SearchData search = OVERLAPCANONICAL[count];
+
+            /*u_unescape(search.text, temp, 128);
+            UnicodeString text;
+            text.setTo(temp, u_strlen(temp));
+            u_unescape(search.pattern, temp, 128);
+            UnicodeString pattern;
+            pattern.setTo(temp, u_strlen(temp));*/
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text), collator, null);
+            strsrch.setCanonical(true);
+            strsrch.setOverlapping(true);
+            if (strsrch.isOverlapping() != true) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                return;
+            }
+            search = NONOVERLAPCANONICAL[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping() != false) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                errln("Error at test number %d" + count);
+             }
+
+            count ++;
+            strsrch = null;
+        }
+    }
+
+    public void TestPattern() {
+        m_en_us_.setStrength(PATTERN[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERN[0].pattern, new StringCharacterIterator(PATTERN[0].text), m_en_us_, null);
+
+        /*if (U_FAILURE(status)) {
+            errln("Error opening string search %s", u_errorName(status));
+            m_en_us_.setStrength(getECollationStrength(UCOL_TERTIARY));
+            if (strsrch != NULL) {
+                delete strsrch;
+            }
+            return;
+        }*/
+
+        if (strsrch.getPattern() != PATTERN[0].pattern) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+
+        strsrch.setPattern(PATTERN[1].pattern);
+        if (PATTERN[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        strsrch.reset();
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+
+        strsrch.setPattern(PATTERN[0].pattern);
+        if (PATTERN[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+            strsrch.reset();
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        /* enormous pattern size to see if this crashes */
+        String pattern = "";
+        for (int templength = 0; templength != 512; templength ++) {
+            pattern += 0x61;
+        }
+        try{
+            strsrch.setPattern(pattern);
+        }catch(Exception e) {
+            errln("Error setting pattern with size 512");
+        }
+
+        m_en_us_.setStrength(Collator.TERTIARY);
+        if (strsrch != null) {
+            strsrch = null;
+        }
+    }
+
+    public void TestPatternCanonical() {
+        //StringCharacterIterator text = new StringCharacterIterator(PATTERNCANONICAL[0].text);
+        m_en_us_.setStrength(PATTERNCANONICAL[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERNCANONICAL[0].pattern, new StringCharacterIterator(PATTERNCANONICAL[0].text),
+                                                m_en_us_, null);
+        strsrch.setCanonical(true);
+
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.setPattern(PATTERNCANONICAL[1].pattern);
+        if (PATTERNCANONICAL[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.setPattern(PATTERNCANONICAL[0].pattern);
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+    }
+
+    public void TestReset() {
+        StringCharacterIterator text = new StringCharacterIterator("fish fish");
+        String pattern = "s";
+
+        StringSearch  strsrch = new StringSearch(pattern, text, m_en_us_, null);
+        strsrch.setOverlapping(true);
+        strsrch.setCanonical(true);
+        strsrch.setIndex(9);
+        strsrch.reset();
+        if (strsrch.isCanonical() || strsrch.isOverlapping() ||
+            strsrch.getIndex() != 0 || strsrch.getMatchLength() != 0 ||
+            strsrch.getMatchStart() != SearchIterator.DONE) {
+                errln("Error resetting string search");
+        }
+
+        strsrch.previous();
+        if (strsrch.getMatchStart() != 7 || strsrch.getMatchLength() != 1) {
+            errln("Error resetting string search\n");
+        }
+    }
+
+    public void TestSetMatch() {
+        int count = 0;
+        while (MATCH[count].text != null) {
+            SearchData     search = MATCH[count];
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text),
+                                                    m_en_us_, null);
+
+            int size = 0;
+            while (search.offset[size] != -1) {
+                size ++;
+            }
+
+            if (strsrch.first() != search.offset[0]) {
+                errln("Error getting first match");
+            }
+            if (strsrch.last() != search.offset[size -1]) {
+                errln("Error getting last match");
+            }
+
+            int index = 0;
+            while (index < size) {
+                if (index + 2 < size) {
+                    if (strsrch.following(search.offset[index + 2] - 1) != search.offset[index + 2]) {
+                        errln("Error getting following match at index " + (search.offset[index + 2]-1));
+                    }
+                }
+                if (index + 1 < size) {
+                    if (strsrch.preceding(search.offset[index + 1] + search.size[index + 1] + 1) != search.offset[index + 1]) {
+                        errln("Error getting preceeding match at index " + (search.offset[index + 1] + 1));
+                    }
+                }
+                index += 2;
+            }
+
+            if (strsrch.following(search.text.length()) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            if (strsrch.preceding(0) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            count ++;
+            strsrch = null;
+        }
+    }
+
+    public void TestStrength() {
+        int count = 0;
+        while (STRENGTH[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertEqual(STRENGTH[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestStrengthCanonical() {
+        int count = 0;
+        while (STRENGTHCANONICAL[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertCanonicalEqual(STRENGTHCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestSupplementary() {
+        int count = 0;
+        while (SUPPLEMENTARY[count].text != null) {
+            if (!assertEqual(SUPPLEMENTARY[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestSupplementaryCanonical() {
+        int count = 0;
+        while (SUPPLEMENTARYCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(SUPPLEMENTARYCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestText() {
+        SearchData TEXT[] = {
+            new SearchData("the foxy brown fox", "fox", null, Collator.TERTIARY, null, new int[] {4, 15, -1}, new int[] {3, 3}),
+            new SearchData("the quick brown fox", "fox", null, Collator.TERTIARY, null, new int[] {16, -1}, new int[] {3}),
+            new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+        };
+        StringCharacterIterator t = new StringCharacterIterator(TEXT[0].text);
+        StringSearch strsrch = new StringSearch(TEXT[0].pattern, t, m_en_us_, null);
+
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXT[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXT[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXT[1])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+    }
+
+    public void TestTextCanonical() {
+        StringCharacterIterator t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        StringSearch strsrch = new StringSearch(TEXTCANONICAL[0].pattern, t, m_en_us_, null);
+        strsrch.setCanonical(true);
+
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[1])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            strsrch = null;
+            return;
+        }
+    }
+
+    public void TestVariable() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable" + count);
+            if (!assertEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+
+    public void TestVariableCanonical() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable " + count);
+            if (!assertCanonicalEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+
+    public void TestSubClass()
+    {
+        class TestSearch extends SearchIterator
+        {
+            String pattern;
+            String text;
+
+            TestSearch(StringCharacterIterator target, BreakIterator breaker,
+                       String pattern)
+            {
+                super(target, breaker);
+                this.pattern = pattern;
+                StringBuffer buffer = new StringBuffer();
+                while (targetText.getIndex() != targetText.getEndIndex()) {
+                    buffer.append(targetText.current());
+                    targetText.next();
+                }
+                text = buffer.toString();
+                targetText.setIndex(targetText.getBeginIndex());
+            }
+            protected int handleNext(int start)
+            {
+                int match = text.indexOf(pattern, start);
+                if (match < 0) {
+                    targetText.last();
+                    return DONE;
+                }
+                targetText.setIndex(match);
+                setMatchLength(pattern.length());
+                return match;
+            }
+            protected int handlePrevious(int start)
+            {
+                int match = text.lastIndexOf(pattern, start - 1);
+                if (match < 0) {
+                    targetText.setIndex(0);
+                    return DONE;
+                }
+                targetText.setIndex(match);
+                setMatchLength(pattern.length());
+                return match;
+            }
+
+            public int getIndex()
+            {
+                int result = targetText.getIndex();
+                if (result < 0 || result >= text.length()) {
+                    return DONE;
+                }
+                return result;
+            }
+        }
+
+        TestSearch search = new TestSearch(
+                            new StringCharacterIterator("abc abcd abc"),
+                            null, "abc");
+        int expected[] = {0, 4, 9};
+        for (int i = 0; i < expected.length; i ++) {
+            if (search.next() != expected[i]) {
+                errln("Error getting next match");
+            }
+            if (search.getMatchLength() != search.pattern.length()) {
+                errln("Error getting next match length");
+            }
+        }
+        if (search.next() != SearchIterator.DONE) {
+            errln("Error should have reached the end of the iteration");
+        }
+        for (int i = expected.length - 1; i >= 0; i --) {
+            if (search.previous() != expected[i]) {
+                errln("Error getting next match");
+            }
+            if (search.getMatchLength() != search.pattern.length()) {
+                errln("Error getting next match length");
+            }
+        }
+        if (search.previous() != SearchIterator.DONE) {
+            errln("Error should have reached the start of the iteration");
+        }
+    }
+    
+    //Test for ticket 5024
+    public void TestDiactricMatch() {
+        String pattern = "pattern";
+        String text = "text";
+        StringSearch strsrch = null;
+        int count = 0;
+        try {
+            strsrch = new StringSearch(pattern, text);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        while (DIACTRICMATCH[count].text != null) {
+            strsrch.setCollator(getCollator(DIACTRICMATCH[count].collator));
+            strsrch.getCollator().setStrength(DIACTRICMATCH[count].strength);
+            strsrch.setBreakIterator(getBreakIterator(DIACTRICMATCH[count].breaker));
+            strsrch.reset();
+            text = DIACTRICMATCH[count].text;
+            pattern = DIACTRICMATCH[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, DIACTRICMATCH[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/search/package.html b/src/com/ibm/icu/dev/test/search/package.html
new file mode 100644
index 0000000..522397a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the international search classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/security.policy b/src/com/ibm/icu/dev/test/security.policy
new file mode 100644
index 0000000..340a048
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/security.policy
@@ -0,0 +1,47 @@
+//#
+//#*******************************************************************************
+//#* Copyright (C) 1997-2007, International Business Machines Corporation and    *
+//#* others. All Rights Reserved.                                                *
+//#*******************************************************************************
+//#* This is the ant build file for ICU4J.  See readme.html for more information.
+//#*
+// policies needed to run tests
+grant // codebase "file:${user.dir}/icu4jtests.jar"
+{
+    // temporary for debugging
+    // permission java.lang.RuntimePermission "getProtectionDomain";
+
+    // ibm 141 on ibm xp can't use reflection
+    permission java.lang.RuntimePermission "accessDeclaredMembers";
+
+    // needed for Locale.setDefault, only used in tests and demos
+    permission java.util.PropertyPermission "user.language", "write";
+
+    // needed for TestUtils
+    permission java.util.PropertyPermission "ICUDataPath", "read";
+    permission java.util.PropertyPermission "user.dir", "read";
+    permission java.util.PropertyPermission "GENERATE_TEST_DATA", "read";
+
+    // time zone tests
+    permission java.util.PropertyPermission "user.timezone", "read";
+
+    //for charsets
+    permission java.lang.RuntimePermission "charsetProvider", "read";
+
+};
+
+// there must be a way for code in one jar file to call code in another jar
+// file and give the called code permission to read the calling code's
+// jar.  they're in different protection domains despite being on the
+// same classpath and being loaded by the same class loader, so the class
+// loader doesn't disambiguate which protection domain we're using. it's
+// not easy to figure out the security docs, sigh.
+//
+// this is so ICUData (in icu4j.jar), called from test code (in icu4jtests.jar)
+// can read test resource files (in icu4jtests.jar"
+//
+grant codebase "file:${user.dir}/icu4j.jar"
+{
+    permission java.io.FilePermission "${/}${user.dir}${/}icu4jtests.jar", "read";
+    permission java.io.FilePermission "${/}${user.dir}${/}icu4j-charsets.jar", "read";
+};
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/serializable/CalendarTests.java b/src/com/ibm/icu/dev/test/serializable/CalendarTests.java
new file mode 100644
index 0000000..de7406f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CalendarTests.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Locale;
+
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+import com.ibm.icu.util.CopticCalendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IndianCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TaiwanCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class CalendarTests
+{
+    static class CalendarHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
+            Calendar calendars[] = new Calendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = Calendar.getInstance(pst, locales[i]);
+            }
+            
+            return calendars;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Calendar cal_a = (Calendar) a;
+            Calendar cal_b = (Calendar) b;
+            long now = System.currentTimeMillis();
+            
+            cal_a.setTimeInMillis(now);
+            cal_a.roll(Calendar.MONTH, 1);
+            
+            cal_b.setTimeInMillis(now);
+            cal_b.roll(Calendar.MONTH, 1);
+            
+            return cal_a.getTime().equals(cal_a.getTime());
+        }
+    }
+
+    static class BuddhistCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone tst = TimeZone.getTimeZone("Asia/Bangkok");
+            BuddhistCalendar calendars[] = new BuddhistCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new BuddhistCalendar(tst, locales[i]);
+            }
+            
+            return calendars;
+        }
+    }
+    
+    static class ChineseCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
+            ChineseCalendar calendars[] = new ChineseCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new ChineseCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class CopticCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone ast = TimeZone.getTimeZone("Europe/Athens");
+            CopticCalendar calendars[] = new CopticCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new CopticCalendar(ast, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class EthiopicCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone ast = TimeZone.getTimeZone("Africa/Addis_Ababa");
+            EthiopicCalendar calendars[] = new EthiopicCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new EthiopicCalendar(ast, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class GregorianCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
+            GregorianCalendar calendars[] = new GregorianCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new GregorianCalendar(pst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class HebrewCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Jerusalem");
+            HebrewCalendar calendars[] = new HebrewCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new HebrewCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class IndianCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Calcutta");
+            IndianCalendar calendars[] = new IndianCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new IndianCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class IslamicCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects() {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Africa/Cairo");
+            IslamicCalendar calendars[] = new IslamicCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new IslamicCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class JapaneseCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Tokyo");
+            JapaneseCalendar calendars[] = new JapaneseCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new JapaneseCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class TaiwanCalendarHandler extends CalendarHandler {
+        public Object[] getTestObjects() {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
+            TaiwanCalendar calendars[] = new TaiwanCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new TaiwanCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        //nothing needed yet...
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
new file mode 100644
index 0000000..379a35c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -0,0 +1,275 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import com.ibm.icu.dev.test.TestFmwk;
+//import com.ibm.icu.dev.test.serializable.SerializableTest;
+
+/**
+ * @author emader
+ */
+public class CompatibilityTest extends TestFmwk
+{
+    public class FolderTarget extends Target
+    {
+        private Target head = new Target(null);
+        private Target tail = head;
+        
+        public FolderTarget(String name)
+        {
+            super(name);
+        }
+        
+        public void add(String className, InputStream is)
+        {
+            HandlerTarget newTarget = new HandlerTarget(className, is);
+            
+            tail.setNext(newTarget);
+            tail = newTarget;
+        }
+        
+        protected boolean validate()
+        {
+            return true;
+        }
+        
+        protected void execute() throws Exception
+        {
+            params.indentLevel += 1;
+            
+            for (Target target = head.getNext(); target != null; target = target.getNext())
+            {
+                target.run();
+            }
+            
+            params.indentLevel -= 1;
+        }
+    }
+
+    public class HandlerTarget extends Target
+    {
+        protected SerializableTest.Handler handler = null;
+        protected InputStream inputStream = null;
+        
+        public HandlerTarget(String name, InputStream is)
+        {
+            super(name);
+            inputStream = is;
+        }
+        
+        protected boolean validate()
+        {
+            handler = SerializableTest.getHandler(name);
+            
+            return handler != null;
+        }
+        
+        protected void execute() throws Exception
+        {
+            if (params.inDocMode()) {
+                // nothing to execute
+            } else if (!params.stack.included) {
+                ++params.invalidCount;
+            } else {
+                params.testCount += 1;
+
+                try {
+                    ObjectInputStream in = new ObjectInputStream(inputStream);
+                    Object inputObjects[] = (Object[]) in.readObject();
+                    Object testObjects[] = handler.getTestObjects();
+                    
+                    in.close();
+                    inputStream.close();
+                    
+                    // TODO: add equality test...
+                    // The commented out code below does that,
+                    // but some test objects don't define an equals() method,
+                    // and the default method is the same as the "==" operator...
+                    for (int i = 0; i < testObjects.length; i += 1) {
+    //                    if (! inputObjects[i].equals(testObjects[i])) {
+    //                        errln("Input object " + i + " failed equality test.");
+    //                    }
+                        
+                        if (! handler.hasSameBehavior(inputObjects[i], testObjects[i])) {
+                            warnln("Input object " + i + " failed behavior test.");
+                        }
+                    }
+                }catch (MissingResourceException e){
+                    warnln("Could not load the data. "+e.getMessage());
+                } catch (Exception e) {
+                  e.printStackTrace();
+                    errln("Exception: " + e.toString());
+                    
+                }
+            }
+        }
+    }
+
+    private static final String[][] SKIP_CASES = {
+        {"ICU_3.8.1",   "com.ibm.icu.text.PluralFormat.dat"},
+        {"ICU_3.8.1",   "com.ibm.icu.text.PluralRules.dat"},
+        // The case below actually works OK with 4.2M1 on JRE5, but not on JRE1.4.2.
+        // It looks the use of anonymous inner class is the root cause.  If we want
+        // to fix the root cause, it will likely break the backward compatibility.
+        // For now, we're skipping this case even it works OK on JRE5.  See ticket#6550.
+        {"ICU_4.0",     "com.ibm.icu.text.PluralRules.dat"},
+    };
+
+    private Target getFileTargets(URL fileURL)
+    {
+        File topDir = new File(fileURL.getPath());
+        File dataDirs[] = topDir.listFiles();
+        FolderTarget target = null;
+        
+        for (int d = 0; d < dataDirs.length; d += 1) {
+            File dataDir = dataDirs[d];
+            
+            if (dataDir.isDirectory()) {
+                FolderTarget newTarget = new FolderTarget(dataDir.getName());
+                File files[] = dataDir.listFiles();
+
+                newTarget.setNext(target);
+                target = newTarget;
+
+                String dataDirName = dataDir.getName();
+
+                element_loop:
+                for (int i = 0; i < files.length; i += 1) {
+                    File file = files[i];
+                    String filename = file.getName();
+                    int ix = filename.indexOf(".dat");
+
+                    if (ix > 0) {
+                        String className = filename.substring(0, ix);
+
+                        // Skip some cases which do not work well
+                        for (int j = 0; j < SKIP_CASES.length; j++) {
+                            if (dataDirName.equals(SKIP_CASES[j][0]) && filename.equals(SKIP_CASES[j][1])) {
+                                logln("Skipping test case - " + dataDirName + "/" + className);
+                                continue element_loop;
+                            }
+                        }
+
+                        InputStream is;
+
+                        try {
+                            is = new FileInputStream(file);
+                            target.add(className, is);
+                        } catch (FileNotFoundException e) {
+                            errln("Exception: " + e.toString());
+                        }
+                        
+                    }
+                }
+            }
+        }
+            
+        return target;
+    }
+    
+    private Target getJarTargets(URL jarURL)
+    {
+        String prefix = jarURL.getPath();
+        String currentDir = null;
+        int ix = prefix.indexOf("!/");
+        JarFile jarFile;
+        FolderTarget target = null;
+
+        if (ix >= 0) {
+            prefix = prefix.substring(ix + 2);
+        }
+
+        try {
+            JarURLConnection conn = (JarURLConnection) jarURL.openConnection();
+
+            jarFile = conn.getJarFile();
+
+            Enumeration entries = jarFile.entries();
+
+            element_loop:
+            while (entries.hasMoreElements()) {
+                JarEntry entry = (JarEntry)entries.nextElement();
+                String name = entry.getName();
+                
+                if (name.startsWith(prefix)) {
+                    name = name.substring(prefix.length());
+
+                    if (! entry.isDirectory()) {
+                        int dx = name.lastIndexOf("/");
+                        String dirName  = name.substring(1, dx);
+                        String filename = name.substring(dx + 1);
+
+                        if (! dirName.equals(currentDir)) {
+                            currentDir = dirName;
+
+                            FolderTarget newTarget = new FolderTarget(currentDir);
+
+                            newTarget.setNext(target);
+                            target = newTarget;
+                        }
+
+                        int xx = filename.indexOf(".dat");
+                        
+                        if (xx > 0) {
+                            String className = filename.substring(0, xx);
+
+                            // Skip some cases which do not work well
+                            for (int i = 0; i < SKIP_CASES.length; i++) {
+                                if (dirName.equals(SKIP_CASES[i][0]) && filename.equals(SKIP_CASES[i][1])) {
+                                    logln("Skipping test case - " + dirName + "/" + className);
+                                    continue element_loop;
+                                }
+                            }
+
+                            target.add(className, jarFile.getInputStream(entry));
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            errln("jar error: " + e.getMessage());
+        }
+        
+        return target;
+    }
+    
+    protected Target getTargets(String targetName)
+    {
+        URL dataURL = getClass().getResource("data");
+        String protocol = dataURL.getProtocol();
+        
+        if (protocol.equals("jar")) {
+            return getJarTargets(dataURL);
+        } else if (protocol.equals("file")) {
+            return getFileTargets(dataURL);
+        } else {
+            errln("Don't know how to test " + dataURL.getPath());
+            return null;
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        CompatibilityTest test = new CompatibilityTest();
+        
+        test.run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/CoverageTest.java b/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
new file mode 100644
index 0000000..6e84194
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
@@ -0,0 +1,206 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Modifier;
+import java.net.URL;
+
+import com.ibm.icu.impl.URLHandler;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class CoverageTest extends CompatibilityTest implements URLHandler.URLVisitor
+{
+
+    private static Class serializable;
+
+    public void init() {
+        try {    
+            serializable = Class.forName("java.io.Serializable");
+        } catch (Exception e) {
+            // we're in deep trouble...
+            warnln("Woops! Can't get class info for Serializable.");
+        }
+    }
+
+    private Target head = new Target(null);
+    private Target tail = head;
+    
+    private String path;
+    
+    public CoverageTest()
+    {
+        this(null);
+    }
+    
+    public CoverageTest(String path)
+    {
+        this.path = path;
+        
+        if (path != null) {
+            File dir = new File(path);
+            
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+        }
+    }
+    
+    private void writeFile(String className, byte bytes[])
+    {
+        File file = new File(path + File.separator + className + ".dat");
+        FileOutputStream stream;
+        
+        try {
+            stream = new FileOutputStream(file);
+            
+            stream.write(bytes);
+            stream.close();
+        } catch (Exception e) {
+            System.out.print(" - can't write file!");
+        }
+    }
+    
+    private void add(String className, int classModifiers, byte bytes[])
+    {
+        CoverageTarget newTarget = new CoverageTarget(className, classModifiers, bytes);
+        
+        tail.setNext(newTarget);
+        tail = newTarget;
+    }
+    
+    public class CoverageTarget extends HandlerTarget
+    {
+        private byte bytes[];
+        private int modifiers;
+        
+        public CoverageTarget(String className, int classModifiers, byte bytes[])
+        {
+            super(className, bytes == null? null : new ByteArrayInputStream(bytes));
+            
+            this.bytes = bytes;
+            modifiers = classModifiers;
+        }
+        
+        public boolean validate()
+        {
+            return super.validate() || Modifier.isAbstract(modifiers);
+        }
+        
+        public void execute() throws Exception
+        {
+            Class c = Class.forName(name);
+            try {
+                /*Field uid = */c.getDeclaredField("serialVersionUID");
+            } catch (Exception e) {
+                errln("No serialVersionUID");
+            }
+            
+            if (inputStream == null) {
+                params.testCount += 1;
+            } else {
+               if (path != null) {
+                    writeFile(name, bytes);
+                }
+                
+                super.execute();
+            }
+        }
+    }
+    
+    public void visit(String str)
+    {
+        if(serializable==null){
+            return;
+        }
+        int ix = str.lastIndexOf(".class");
+        
+        if (ix >= 0) {
+            String className = "com.ibm.icu" + str.substring(0, ix).replace('/', '.');
+            
+            // Skip things in com.ibm.icu.dev; they're not relevant.
+            if (className.startsWith("com.ibm.icu.dev.")) {
+                return;
+            }
+            
+            try {
+                Class c = Class.forName(className);
+                int   m = c.getModifiers();
+                
+                if (serializable.isAssignableFrom(c)) {
+                    if (Modifier.isPublic(m) && !Modifier.isInterface(m)) { 
+                        SerializableTest.Handler handler = SerializableTest.getHandler(className);
+                        
+                        if (handler != null) {
+                            Object objectsOut[] = handler.getTestObjects();
+                            
+                            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+                            ObjectOutputStream out = new ObjectOutputStream(byteOut);
+                            
+                            try {
+                                out.writeObject(objectsOut);
+                                out.close();
+                                byteOut.close();
+                            } catch (IOException e) {
+                                warnln("Error writing test objects: " + e.toString());
+                                return;
+                            }
+                            
+                            add(className, m, byteOut.toByteArray());
+                        } else {
+                            add(className, m, null);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                warnln("coverage of " + className + ": " + e.toString());
+            } catch (Throwable e) {
+                e.printStackTrace();
+                warnln("coverage of " + className + ": " + e.toString());
+            }
+        }
+    }
+    
+    protected Target getTargets(String targetName)
+    {
+        
+        if (System.getSecurityManager() != null) {
+            // This test won't run under a security manager
+            return new CoverageTarget("Skipped Due To Security Manager", Modifier.ABSTRACT, null);
+        }
+        
+        if(serializable==null){
+            init();
+        }
+        URL url = getClass().getResource("/com/ibm/icu");
+        URLHandler handler  = URLHandler.get(url);
+        
+        handler.guide(this, true, false);
+        
+        return head.getNext();
+    }
+    
+    public static void main(String[] args)
+    {
+        CoverageTest test = new CoverageTest();
+        
+        test.run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java b/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
new file mode 100644
index 0000000..662c841
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
@@ -0,0 +1,103 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.text.ArabicShapingException;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class ExceptionTests
+{
+    static abstract class ExceptionHandler implements SerializableTest.Handler
+    {
+        abstract public Object[] getTestObjects();
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Exception ea = (Exception) a;
+            Exception eb = (Exception) b;
+            
+            return ea.toString().equals(eb.toString());
+        }
+    }
+    
+    static class ArabicShapingExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ArabicShapingException exceptions[] = new ArabicShapingException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new ArabicShapingException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class StringPrepParseExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            String rules = "This is a very odd little set of rules, just for testing, you know...";
+            StringPrepParseException exceptions[] = new StringPrepParseException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new StringPrepParseException(locales[i].toString(), i, rules, i);
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class UResourceTypeMismatchExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            UResourceTypeMismatchException exceptions[] = new UResourceTypeMismatchException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new UResourceTypeMismatchException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class InvalidFormatExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            InvalidFormatException exceptions[] = new InvalidFormatException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new InvalidFormatException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+
+    public static void main(String[] args)
+    {
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/FormatTests.java b/src/com/ibm/icu/dev/test/serializable/FormatTests.java
new file mode 100644
index 0000000..3b68204
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/FormatTests.java
@@ -0,0 +1,2144 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.text.AttributedCharacterIterator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+
+import com.ibm.icu.impl.DateNumberFormat;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.ChineseDateFormatSymbols;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.DateIntervalFormat;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.PluralFormat;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.TimeUnitFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class FormatTests
+{
+    /*
+     * The serialized form of a normally created DateFormatSymbols object
+     * will have locale-specific data in it that might change from one version
+     * of ICU4J to another. To guard against this, we store the following canned
+     * data into the test objects we create.
+     */
+    static HashMap cannedMonthNames      = new HashMap();
+    static HashMap cannedShortMonthNames = new HashMap();
+
+    static String en_CA_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String fr_CA_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String zh_Hans_CN_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_CN_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String en_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String fr_FR_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String fr_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String de_MonthNames[] = {
+        "Januar", 
+        "Februar", 
+        "M\u00E4rz", 
+        "April", 
+        "Mai", 
+        "Juni", 
+        "Juli", 
+        "August", 
+        "September", 
+        "Oktober", 
+        "November", 
+        "Dezember", 
+    };
+
+    static String de_DE_MonthNames[] = {
+        "Januar", 
+        "Februar", 
+        "M\u00E4rz", 
+        "April", 
+        "Mai", 
+        "Juni", 
+        "Juli", 
+        "August", 
+        "September", 
+        "Oktober", 
+        "November", 
+        "Dezember", 
+    };
+
+    static String it_MonthNames[] = {
+        "gennaio", 
+        "febbraio", 
+        "marzo", 
+        "aprile", 
+        "maggio", 
+        "giugno", 
+        "luglio", 
+        "agosto", 
+        "settembre", 
+        "ottobre", 
+        "novembre", 
+        "dicembre", 
+    };
+
+    static String it_IT_MonthNames[] = {
+        "gennaio", 
+        "febbraio", 
+        "marzo", 
+        "aprile", 
+        "maggio", 
+        "giugno", 
+        "luglio", 
+        "agosto", 
+        "settembre", 
+        "ottobre", 
+        "novembre", 
+        "dicembre", 
+    };
+
+    static String ja_JP_MonthNames[] = {
+        "1\u6708", 
+        "2\u6708", 
+        "3\u6708", 
+        "4\u6708", 
+        "5\u6708", 
+        "6\u6708", 
+        "7\u6708", 
+        "8\u6708", 
+        "9\u6708", 
+        "10\u6708", 
+        "11\u6708", 
+        "12\u6708", 
+    };
+
+    static String ja_MonthNames[] = {
+        "1\u6708", 
+        "2\u6708", 
+        "3\u6708", 
+        "4\u6708", 
+        "5\u6708", 
+        "6\u6708", 
+        "7\u6708", 
+        "8\u6708", 
+        "9\u6708", 
+        "10\u6708", 
+        "11\u6708", 
+        "12\u6708", 
+    };
+
+    static String ko_KR_MonthNames[] = {
+        "1\uC6D4", 
+        "2\uC6D4", 
+        "3\uC6D4", 
+        "4\uC6D4", 
+        "5\uC6D4", 
+        "6\uC6D4", 
+        "7\uC6D4", 
+        "8\uC6D4", 
+        "9\uC6D4", 
+        "10\uC6D4", 
+        "11\uC6D4", 
+        "12\uC6D4", 
+    };
+
+    static String ko_MonthNames[] = {
+        "1\uC6D4", 
+        "2\uC6D4", 
+        "3\uC6D4", 
+        "4\uC6D4", 
+        "5\uC6D4", 
+        "6\uC6D4", 
+        "7\uC6D4", 
+        "8\uC6D4", 
+        "9\uC6D4", 
+        "10\uC6D4", 
+        "11\uC6D4", 
+        "12\uC6D4", 
+    };
+
+    static String zh_Hant_TW_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_TW_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+        };
+
+    static String en_GB_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String en_US_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String en_CA_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String fr_CA_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+    static String zh_Hans_CN_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_CN_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String en_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String fr_FR_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+   static String fr_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+    static String de_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mrz",
+        "Apr",
+        "Mai",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Okt",
+        "Nov",
+        "Dez",
+    };
+
+    static String de_DE_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mrz",
+        "Apr",
+        "Mai",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Okt",
+        "Nov",
+        "Dez",
+    };
+
+    static String it_ShortMonthNames[] = {
+        "gen",
+        "feb",
+        "mar",
+        "apr",
+        "mag",
+        "giu",
+        "lug",
+        "ago",
+        "set",
+        "ott",
+        "nov",
+        "dic",
+    };
+
+    static String it_IT_ShortMonthNames[] = {
+        "gen",
+        "feb",
+        "mar",
+        "apr",
+        "mag",
+        "giu",
+        "lug",
+        "ago",
+        "set",
+        "ott",
+        "nov",
+        "dic",
+    };
+
+    static String ja_JP_ShortMonthNames[] = {
+        "1 \u6708",
+        "2 \u6708",
+        "3 \u6708",
+        "4 \u6708",
+        "5 \u6708",
+        "6 \u6708",
+        "7 \u6708",
+        "8 \u6708",
+        "9 \u6708",
+        "10 \u6708",
+        "11 \u6708",
+        "12 \u6708",
+    };
+
+    static String ja_ShortMonthNames[] = {
+        "1 \u6708",
+        "2 \u6708",
+        "3 \u6708",
+        "4 \u6708",
+        "5 \u6708",
+        "6 \u6708",
+        "7 \u6708",
+        "8 \u6708",
+        "9 \u6708",
+        "10 \u6708",
+        "11 \u6708",
+        "12 \u6708",
+    };
+
+    static String ko_KR_ShortMonthNames[] = {
+        "1\uC6D4",
+        "2\uC6D4",
+        "3\uC6D4",
+        "4\uC6D4",
+        "5\uC6D4",
+        "6\uC6D4",
+        "7\uC6D4",
+        "8\uC6D4",
+        "9\uC6D4",
+        "10\uC6D4",
+        "11\uC6D4",
+        "12\uC6D4",
+    };
+
+    static String ko_ShortMonthNames[] = {
+        "1\uC6D4",
+        "2\uC6D4",
+        "3\uC6D4",
+        "4\uC6D4",
+        "5\uC6D4",
+        "6\uC6D4",
+        "7\uC6D4",
+        "8\uC6D4",
+        "9\uC6D4",
+        "10\uC6D4",
+        "11\uC6D4",
+        "12\uC6D4",
+    };
+
+    static String zh_Hant_TW_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_TW_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String en_GB_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String en_US_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+        
+    static {
+        cannedMonthNames.put("en_CA",      en_CA_MonthNames);
+        cannedMonthNames.put("fr_CA",      fr_CA_MonthNames);
+        cannedMonthNames.put("zh_Hans_CN", zh_Hans_CN_MonthNames);
+        cannedMonthNames.put("zh_CN",      zh_CN_MonthNames);
+        cannedMonthNames.put("zh",         zh_MonthNames);
+        cannedMonthNames.put("en",         en_MonthNames);
+        cannedMonthNames.put("fr_FR",      fr_FR_MonthNames);
+        cannedMonthNames.put("fr",         fr_MonthNames);
+        cannedMonthNames.put("de",         de_MonthNames);
+        cannedMonthNames.put("de_DE",      de_DE_MonthNames);
+        cannedMonthNames.put("it",         it_MonthNames);
+        cannedMonthNames.put("it_IT",      it_IT_MonthNames);
+        cannedMonthNames.put("ja_JP",      ja_JP_MonthNames);
+        cannedMonthNames.put("ja",         ja_MonthNames);
+        cannedMonthNames.put("ko_KR",      ko_KR_MonthNames);
+        cannedMonthNames.put("ko",         ko_MonthNames);
+        cannedMonthNames.put("zh_Hant_TW", zh_Hant_TW_MonthNames);
+        cannedMonthNames.put("zh_TW",      zh_TW_MonthNames);
+        cannedMonthNames.put("en_GB",      en_GB_MonthNames);
+        cannedMonthNames.put("en_US",      en_US_MonthNames);
+
+        cannedShortMonthNames.put("en_CA",      en_CA_ShortMonthNames);
+        cannedShortMonthNames.put("fr_CA",      fr_CA_ShortMonthNames);
+        cannedShortMonthNames.put("zh_Hans_CN", zh_Hans_CN_ShortMonthNames);
+        cannedShortMonthNames.put("zh_CN",      zh_CN_ShortMonthNames);
+        cannedShortMonthNames.put("zh",         zh_ShortMonthNames);
+        cannedShortMonthNames.put("en",         en_ShortMonthNames);
+        cannedShortMonthNames.put("fr_FR",      fr_FR_ShortMonthNames);
+        cannedShortMonthNames.put("fr",         fr_ShortMonthNames);
+        cannedShortMonthNames.put("de",         de_ShortMonthNames);
+        cannedShortMonthNames.put("de_DE",      de_DE_ShortMonthNames);
+        cannedShortMonthNames.put("it",         it_ShortMonthNames);
+        cannedShortMonthNames.put("it_IT",      it_IT_ShortMonthNames);
+        cannedShortMonthNames.put("ja_JP",      ja_JP_ShortMonthNames);
+        cannedShortMonthNames.put("ja",         ja_ShortMonthNames);
+        cannedShortMonthNames.put("ko_KR",      ko_KR_ShortMonthNames);
+        cannedShortMonthNames.put("ko",         ko_ShortMonthNames);
+        cannedShortMonthNames.put("zh_Hant_TW", zh_Hant_TW_ShortMonthNames);
+        cannedShortMonthNames.put("zh_TW",      zh_TW_ShortMonthNames);
+        cannedShortMonthNames.put("en_GB",      en_GB_ShortMonthNames);
+        cannedShortMonthNames.put("en_US",      en_US_ShortMonthNames);
+    }
+
+    private static DateFormatSymbols getCannedDateFormatSymbols(ULocale uloc)
+    {
+        DateFormatSymbols dfs =new DateFormatSymbols(GregorianCalendar.class, uloc);
+        String key = uloc.toString();
+        
+        dfs.setMonths((String[]) cannedMonthNames.get(key));
+        dfs.setShortMonths((String[]) cannedShortMonthNames.get(key));
+        
+        return dfs;
+    }
+    
+    private static SimpleDateFormat getCannedSimpleDateFormat(String pattern, ULocale uloc)
+    {
+        DateFormatSymbols dfs = getCannedDateFormatSymbols(uloc);
+        
+        return new SimpleDateFormat(pattern, dfs, uloc);
+    }
+    
+    /*
+     * The serialized form of a normally created DecimalFormatSymbols object
+     * will have locale-specific data in it that might change from one version
+     * of ICU4J to another. To guard against this, we store the following canned
+     * data into the test objects we create.
+     */
+    static HashMap cannedDecimalFormatSymbols = new HashMap();
+    
+    static String en_CA_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "CAD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String fr_CA_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "CAD", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String zh_CN_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "CNY", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String fr_FR_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String fr_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String de_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD",
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String de_DE_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String it_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String it_IT_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String ja_JP_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "JPY", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ja_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ko_KR_StringSymbols[] = {
+        "\uFFE6", 
+        "E", 
+        "\u221E", 
+        "KRW", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ko_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_Hans_CN_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "CNY", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_Hant_TW_StringSymbols[] = {
+        "NT$", 
+        "E", 
+        "\u221E", 
+        "TWD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_TW_StringSymbols[] = {
+        "NT$", 
+        "E", 
+        "\u221E", 
+        "TWD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_GB_StringSymbols[] = {
+        "\u00A3", 
+        "E", 
+        "\u221E", 
+        "GBP", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_US_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "USD", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+    
+    static {
+        cannedDecimalFormatSymbols.put("en_CA",      en_CA_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr_CA",      fr_CA_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_CN",      zh_CN_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh",         zh_StringSymbols);
+        cannedDecimalFormatSymbols.put("en",         en_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr_FR",      fr_FR_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr",         fr_StringSymbols);
+        cannedDecimalFormatSymbols.put("de",         de_StringSymbols);
+        cannedDecimalFormatSymbols.put("de_DE",      de_DE_StringSymbols);
+        cannedDecimalFormatSymbols.put("it",         it_StringSymbols);
+        cannedDecimalFormatSymbols.put("it_IT",      it_IT_StringSymbols);
+        cannedDecimalFormatSymbols.put("ja_JP",      ja_JP_StringSymbols);
+        cannedDecimalFormatSymbols.put("ja",         ja_StringSymbols);
+        cannedDecimalFormatSymbols.put("ko_KR",      ko_KR_StringSymbols);
+        cannedDecimalFormatSymbols.put("ko",         ko_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_Hans_CN", zh_Hans_CN_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_Hant_TW", zh_Hant_TW_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_TW",      zh_TW_StringSymbols);
+        cannedDecimalFormatSymbols.put("en_GB",      en_GB_StringSymbols);
+        cannedDecimalFormatSymbols.put("en_US",      en_US_StringSymbols);
+    }
+    
+    private static char[] getCharSymbols(DecimalFormatSymbols dfs)
+    {
+        char symbols[] = {
+            dfs.getDecimalSeparator(),
+            dfs.getDigit(),
+            dfs.getGroupingSeparator(),
+            dfs.getMinusSign(),
+            dfs.getMonetaryDecimalSeparator(),
+            dfs.getPadEscape(),
+            dfs.getPatternSeparator(),
+            dfs.getPercent(),
+            dfs.getPerMill(),
+            dfs.getPlusSign(),
+            dfs.getSignificantDigit(),
+            dfs.getZeroDigit()
+        };
+        
+        return symbols;
+    }
+    
+    private static void setCharSymbols(DecimalFormatSymbols dfs, char symbols[])
+    {
+        dfs.setDecimalSeparator(symbols[0]);
+        dfs.setDigit(symbols[1]);
+        dfs.setGroupingSeparator(symbols[2]);
+        dfs.setMinusSign(symbols[3]);
+        dfs.setMonetaryDecimalSeparator(symbols[4]);
+        dfs.setPadEscape(symbols[5]);
+        dfs.setPatternSeparator(symbols[6]);
+        dfs.setPercent(symbols[7]);
+        dfs.setPerMill(symbols[8]);
+        dfs.setPlusSign(symbols[9]);
+        dfs.setSignificantDigit(symbols[10]);
+        dfs.setZeroDigit(symbols[11]);
+    }
+    
+    private static String[] getStringSymbols(DecimalFormatSymbols dfs)
+    {
+        String symbols[] = {
+            dfs.getCurrencySymbol(),
+            dfs.getExponentSeparator(),
+            dfs.getInfinity(),
+            dfs.getInternationalCurrencySymbol(),
+            dfs.getNaN()
+        };
+        
+        return symbols;
+    }
+    
+    private static DecimalFormatSymbols getCannedDecimalFormatSymbols(ULocale uloc)
+    {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uloc);
+        
+        setSymbols(dfs, (String[]) cannedDecimalFormatSymbols.get(uloc.toString()));
+        
+        return dfs;
+    }
+
+    private static DecimalFormat getCannedDecimalFormat(String pattern, ULocale uloc)
+    {
+        return new DecimalFormat(pattern, getCannedDecimalFormatSymbols(uloc));
+    }
+    
+    private static void setSymbols(DecimalFormatSymbols dfs, String symbols[])
+    {
+        dfs.setCurrencySymbol(symbols[0]);
+        dfs.setExponentSeparator(symbols[1]);
+        dfs.setInfinity(symbols[2]);
+        dfs.setInternationalCurrencySymbol(symbols[3]);
+        dfs.setNaN(symbols[4]);
+        
+        setCharSymbols(dfs, symbols[5].toCharArray());
+    }
+    
+    public static class RelativeDateFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateFormat formats[] = { 
+                    DateFormat.getDateInstance(DateFormat.RELATIVE_LONG,new ULocale("en")),
+                    DateFormat.getDateInstance(DateFormat.RELATIVE_SHORT,new ULocale("ru")),
+            };
+            
+            return formats;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b) {
+            DateFormat da = (DateFormat)a;
+            DateFormat db = (DateFormat)b;
+            
+            Date d = new Date(System.currentTimeMillis());
+            return da.format(d).equals(db.format(d));
+        }
+    }
+
+    public static class BasicDurationFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DurationFormat formats[] = { 
+                    DurationFormat.getInstance(new ULocale("en"))
+                   
+            };
+            
+            return formats;
+        }
+        
+        //TODO: Revisit this after 3.8
+        public boolean hasSameBehavior(Object a, Object b) {
+            //DurationFormat da = (DurationFormat)a;
+            //DurationFormat db = (DurationFormat)b;
+            
+            //Date d = new Date(12345);
+            //System.err.println("Warning: BasicDurationFormat test is being skipped for now.");
+            return true;
+            //return da.format(d).equals(db.format(d));
+        }
+    }
+
+    public static class NumberFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            ULocale uloc = ULocale.forLocale(Locale.US);
+            NumberFormat formats[] = {
+                /*
+                 * The code below was used to genereate the
+                 * serialized NumberFormat objects in ICU 3.6:
+                 * 
+                 *    NumberFormat.getInstance(Locale.US)
+                 *    NumberFormat.getCurrencyInstance(Locale.US)
+                 *    NumberFormat.getPercentInstance(Locale.US)
+                 *    NumberFormat.getScientificInstance(Locale.US)
+                 * 
+                 * Because the locale data might now be different that it was in
+                 * ICU 3.6, the only way to guarantee that the object we generate
+                 * will match the ICU 3.6 objects is to generate DecimalFormat objects
+                 * that use the same patterns and DecimalFormatSymbols that
+                 * were used in ICU 3.6.
+                 */
+                getCannedDecimalFormat("#,##0.###", uloc),
+                getCannedDecimalFormat("\u00A4#,##0.00;(\u00A4#,##0.00)", uloc),
+                getCannedDecimalFormat("#,##0%", uloc),
+                getCannedDecimalFormat("#E0", uloc)
+               
+            };
+            
+            return formats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            NumberFormat format_a = (NumberFormat) a;
+            NumberFormat format_b = (NumberFormat) b;
+            double number = 1234.56;
+            
+            return format_a.format(number).equals(format_b.format(number));
+        }
+    }
+    
+    public static class DecimalFormatHandler extends NumberFormatHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DecimalFormat formats[] = new DecimalFormat[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                formats[i] = getCannedDecimalFormat("#,##0.###", uloc);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (formats[0] != null) {
+                // Ticket#6449
+                // Once formatToCharacterIterator is called, NumberFormat.Field
+                // instances are created and stored in the private List field.
+                // NumberForamt.Field is not a serializable, so serializing such
+                // instances end up NotSerializableException.  This problem was
+                // reproduced since formatToCharacterIterator was introduced,
+                // up to ICU 4.0.
+
+                AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(new Double(12.345D));
+                if (aci == null) {} // NOP - for resolving 'Unused local variable' warning.
+            }
+//#endif
+            return formats;
+        }
+    }
+    
+    public static class RuleBasedNumberFormatHandler extends NumberFormatHandler
+    {
+        // default rules, from root.txt
+        String xx_SpelloutRules = "=#,##0.######=;\n";
+        String xx_OrdinalRules = "=#,##0=;\n";
+        String xx_DurationRules = "=#,##0=;\n";
+        
+        String ja_spelloutRules = 
+            "%financial:\n" +
+                "\u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n" +
+                "\u62fe[>>];\n" +
+                "20: <<\u62fe[>>];\n" +
+                "100: <<\u767e[>>];\n" +
+                "1000: <<\u5343[>>];\n" +
+                "10,000: <<\u4e07[>>];\n" +
+                "100,000,000: <<\u5104[>>];\n" +
+                "1,000,000,000,000: <<\u5146[>>];\n" +
+                "10,000,000,000,000,000: =#,##0=;\n" +
+                
+            "%traditional:\n" +
+                "\u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n" +
+                "\u5341[>>];\n" +
+                "20: <<\u5341[>>];\n" +
+                "100: <<\u767e[>>];\n" +
+                "1000: <<\u5343[>>];\n" +
+                "10,000: <<\u4e07[>>];\n" +
+                "100,000,000: <<\u5104[>>];\n" +
+                "1,000,000,000,000: <<\u5146[>>];\n" +
+                "10,000,000,000,000,000: =#,##0=;";
+        
+        String en_SpelloutRules = 
+            // This rule set shows the normal simple formatting rules for English
+            "%simplified:\n" +
+                   // negative number rule.  This rule is used to format negative
+                   // numbers.  The result of formatting the number's absolute
+                   // value is placed where the >> is.
+                "-x: minus >>;\n" +
+                   // faction rule.  This rule is used for formatting numbers
+                   // with fractional parts.  The result of formatting the
+                   // number's integral part is substituted for the <<, and
+                   // the result of formatting the number's fractional part
+                   // (one digit at a time, e.g., 0.123 is "zero point one two
+                   // three") replaces the >>.
+                "x.x: << point >>;\n" +
+                   // the rules for the values from 0 to 19 are simply the
+                   // words for those numbers
+                "zero; one; two; three; four; five; six; seven; eight; nine;\n" +
+                "ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n" +
+                    "seventeen; eighteen; nineteen;\n" +
+                   // beginning at 20, we use the >> to mark the position where
+                   // the result of formatting the number's ones digit.  Thus,
+                   // we only need a new rule at every multiple of 10.  Text in
+                   // backets is omitted if the value being formatted is an
+                   // even multiple of 10.
+                "20: twenty[->>];\n" +
+                "30: thirty[->>];\n" +
+                "40: forty[->>];\n" +
+                "50: fifty[->>];\n" +
+                "60: sixty[->>];\n" +
+                "70: seventy[->>];\n" +
+                "80: eighty[->>];\n" +
+                "90: ninety[->>];\n" +
+                   // beginning at 100, we can use << to mark the position where
+                   // the result of formatting the multiple of 100 is to be
+                   // inserted.  Notice also that the meaning of >> has shifted:
+                   // here, it refers to both the ones place and the tens place.
+                   // The meanings of the << and >> tokens depend on the base value
+                   // of the rule.  A rule's divisor is (usually) the highest
+                   // power of 10 that is less than or equal to the rule's base
+                   // value.  The value being formatted is divided by the rule's
+                   // divisor, and the integral quotient is used to get the text
+                   // for <<, while the remainder is used to produce the text
+                   // for >>.  Again, text in brackets is omitted if the value
+                   // being formatted is an even multiple of the rule's divisor
+                   // (in this case, an even multiple of 100)
+                "100: << hundred[ >>];\n" +
+                   // The rules for the higher numbers work the same way as the
+                   // rule for 100: Again, the << and >> tokens depend on the
+                   // rule's divisor, which for all these rules is also the rule's
+                   // base value.  To group by thousand, we simply don't have any
+                   // rules between 1,000 and 1,000,000.
+                "1000: << thousand[ >>];\n" +
+                "1,000,000: << million[ >>];\n" +
+                "1,000,000,000: << billion[ >>];\n" +
+                "1,000,000,000,000: << trillion[ >>];\n" +
+                   // overflow rule.  This rule specifies that values of a
+                   // quadrillion or more are shown in numerals rather than words.
+                   // The == token means to format (with new rules) the value
+                   // being formatted by this rule and place the result where
+                   // the == is.  The #,##0 inside the == signs is a
+                   // DecimalFormat pattern.  It specifies that the value should
+                   // be formatted with a DecimalFormat object, and that it
+                   // should be formatted with no decimal places, at least one
+                   // digit, and a thousands separator.
+                "1,000,000,000,000,000: =#,##0=;\n" +
+
+            // %default is a more elaborate form of %simplified;  It is basically
+            // the same, except that it introduces "and" before the ones digit
+            // when appropriate (basically, between the tens and ones digits) and
+            // separates the thousands groups with commas in values over 100,000.
+            "%default:\n" +
+                   // negative-number and fraction rules.  These are the same
+                   // as those for %simplified, but have to be stated here too
+                   // because this is an entry point
+                "-x: minus >>;\n" +
+                "x.x: << point >>;\n" +
+                   // just use %simplified for values below 100
+                "=%simplified=;\n" +
+                   // for values from 100 to 9,999 use %%and to decide whether or
+                   // not to interpose the "and"
+                "100: << hundred[ >%%and>];\n" +
+                "1000: << thousand[ >%%and>];\n" +
+                   // for values of 100,000 and up, use %%commas to interpose the
+                   // commas in the right places (and also to interpose the "and")
+                "100,000>>: << thousand[>%%commas>];\n" +
+                "1,000,000: << million[>%%commas>];\n" +
+                "1,000,000,000: << billion[>%%commas>];\n" +
+                "1,000,000,000,000: << trillion[>%%commas>];\n" +
+                "1,000,000,000,000,000: =#,##0=;\n" +
+            // if the value passed to this rule set is greater than 100, don't
+            // add the "and"; if it's less than 100, add "and" before the last
+            // digits
+            "%%and:\n" +
+                "and =%default=;\n" +
+                "100: =%default=;\n" +
+            // this rule set is used to place the commas
+            "%%commas:\n" +
+                   // for values below 100, add "and" (the apostrophe at the
+                   // beginning is ignored, but causes the space that follows it
+                   // to be significant: this is necessary because the rules
+                   // calling %%commas don't put a space before it)
+                "' and =%default=;\n" +
+                   // put a comma after the thousands (or whatever preceded the
+                   // hundreds)
+                "100: , =%default=;\n" +
+                   // put a comma after the millions (or whatever precedes the
+                   // thousands)
+                "1000: , <%default< thousand, >%default>;\n" +
+                   // and so on...
+                "1,000,000: , =%default=;" +
+            // %%lenient-parse isn't really a set of number formatting rules;
+            // it's a set of collation rules.  Lenient-parse mode uses a Collator
+            // object to compare fragments of the text being parsed to the text
+            // in the rules, allowing more leeway in the matching text.  This set
+            // of rules tells the formatter to ignore commas when parsing (it
+            // already ignores spaces, which is why we refer to the space; it also
+            // ignores hyphens, making "twenty one" and "twenty-one" parse
+            // identically)
+            "%%lenient-parse:\n" +
+            //                "& ' ' , ',' ;\n" +
+            "   &\u0000 << ' ' << ',' << '-'; \n";
+
+        String en_GB_SpelloutRules =
+            "%simplified:\n" +
+            "-x: minus >>;\n" +
+            "x.x: << point >>;\n" +
+            "zero; one; two; three; four; five; six; seven; eight; nine;\n" +
+            "ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n" +
+            "    seventeen; eighteen; nineteen;\n" +
+            "20: twenty[->>];\n" +
+            "30: thirty[->>];\n" +
+            "40: forty[->>];\n" +
+            "50: fifty[->>];\n" +
+            "60: sixty[->>];\n" +
+            "70: seventy[->>];\n" +
+            "80: eighty[->>];\n" +
+            "90: ninety[->>];\n" +
+            "100: << hundred[ >>];\n" +
+            "1000: << thousand[ >>];\n" +
+            "1,000,000: << million[ >>];\n" +
+            "1,000,000,000,000: << billion[ >>];\n" +
+            "1,000,000,000,000,000: =#,##0=;\n" +
+        "%default:\n" +
+            "-x: minus >>;\n" +
+            "x.x: << point >>;\n" +
+            "=%simplified=;\n" +
+            "100: << hundred[ >%%and>];\n" +
+            "1000: << thousand[ >%%and>];\n" +
+            "100,000>>: << thousand[>%%commas>];\n" +
+            "1,000,000: << million[>%%commas>];\n" +
+            "1,000,000,000,000: << billion[>%%commas>];\n" +
+            "1,000,000,000,000,000: =#,##0=;\n" +
+        "%%and:\n" +
+            "and =%default=;\n" +
+            "100: =%default=;\n" +
+        "%%commas:\n" +
+            "' and =%default=;\n" +
+            "100: , =%default=;\n" +
+            "1000: , <%default< thousand, >%default>;\n" +
+            "1,000,000: , =%default=;" +
+        "%%lenient-parse:\n" +
+            "& ' ' , ',' ;\n";
+        
+        String fr_SpelloutRules =
+            // the main rule set
+            "%main:\n" +
+                "-x: moins >>;\n" +
+                "x.x: << virgule >>;\n" +
+                   // words for numbers from 0 to 10
+                "z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n" +
+                "dix; onze; douze; treize; quatorze; quinze; seize;\n" +
+                "    dix-sept; dix-huit; dix-neuf;\n" +
+                   // ords for the multiples of 10: %%alt-ones inserts "et"
+                   // when needed
+                "20: vingt[->%%alt-ones>];\n" +
+                "30: trente[->%%alt-ones>];\n" +
+                "40: quarante[->%%alt-ones>];\n" +
+                "50: cinquante[->%%alt-ones>];\n" +
+                   // rule for 60.  The /20 causes this rule's multiplier to be
+                   // 20 rather than 10, allowinhg us to recurse for all values
+                   // from 60 to 79...
+                "60/20: soixante[->%%alt-ones>];\n" +
+                   // ...except for 71, which must be special-cased
+                "71: soixante et onze;\n" +
+                   // at 72, we have to repeat the rule for 60 to get us to 79
+                "72/20: soixante->%%alt-ones>;\n" +
+                   // at 80, we state a new rule with the phrase for 80.  Since
+                   // it changes form when there's a ones digit, we need a second
+                   // rule at 81.  This rule also includes "/20," allowing it to
+                   // be used correctly for all values up to 99
+                "80: quatre-vingts; 81/20: quatre-vingt->>;\n" +
+                   // "cent" becomes plural when preceded by a multiplier, and
+                   // the multiplier is omitted from the singular form
+                "100: cent[ >>];\n" +
+                "200: << cents[ >>];\n" +
+                "1000: mille[ >>];\n" +
+                   // values from 1,100 to 1,199 are rendered as "onze cents..."
+                   // instead of "mille cent..."  The > after "1000" decreases
+                   // the rule's exponent, causing its multiplier to be 100 instead
+                   // of 1,000.  This prevents us from getting "onze cents cent
+                   // vingt-deux" ("eleven hundred one hundred twenty-two").
+                "1100>: onze cents[ >>];\n" +
+                   // at 1,200, we go back to formating in thousands, so we
+                   // repeat the rule for 1,000
+                "1200: mille >>;\n" +
+                   // at 2,000, the multiplier is added
+                "2000: << mille[ >>];\n" +
+                "1,000,000: << million[ >>];\n" +
+                "1,000,000,000: << milliard[ >>];\n" +
+                "1,000,000,000,000: << billion[ >>];\n" +
+                "1,000,000,000,000,000: =#,##0=;\n" +
+            // %%alt-ones is used to insert "et" when the ones digit is 1
+            "%%alt-ones:\n" +
+                "; et-un; =%main=;\n" + 
+            "%%lenient-parse:\n" +
+                "&\u0000 << ' ' << ',' << '-';\n";
+        
+        String de_SpelloutRules =
+            // 1 is "eins" when by itself, but turns into "ein" in most
+            // combinations
+            "%alt-ones:\n" +
+                "-x: minus >>;\n" +
+                "x.x: << komma >>;\n" +
+                "null; eins; =%%main=;\n" +
+            "%%main:\n" +
+                   // words for numbers from 0 to 12.  Notice that the values
+                   // from 13 to 19 can derived algorithmically, unlike in most
+                   // other languages
+                "null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n" +
+                "zehn; elf; zw\u00f6lf; >>zehn;\n" +
+                   // rules for the multiples of 10.  Notice that the ones digit
+                   // goes on the front
+                "20: [>>und]zwanzig;\n" +
+                "30: [>>und]drei\u00dfig;\n" +
+                "40: [>>und]vierzig;\n" +
+                "50: [>>und]f\u00fcnfzig;\n" +
+                "60: [>>und]sechzig;\n" +
+                "70: [>>und]siebzig;\n" +
+                "80: [>>und]achtzig;\n" +
+                "90: [>>und]neunzig;\n" +
+                "100: hundert[>%alt-ones>];\n" +
+                "200: <<hundert[>%alt-ones>];\n" +
+                "1000: tausend[>%alt-ones>];\n" +
+                "2000: <<tausend[>%alt-ones>];\n" +
+                "1,000,000: eine Million[ >%alt-ones>];\n" +
+                "2,000,000: << Millionen[ >%alt-ones>];\n" +
+                "1,000,000,000: eine Milliarde[ >%alt-ones>];\n" +
+                "2,000,000,000: << Milliarden[ >%alt-ones>];\n" +
+                "1,000,000,000,000: eine Billion[ >%alt-ones>];\n" +
+                "2,000,000,000,000: << Billionen[ >%alt-ones>];\n" +
+                "1,000,000,000,000,000: =#,##0=;" +
+            "%%lenient-parse:\n" +
+                "&\u0000 << ' ' << '-'\n" +
+                "& ae , \u00e4 & ae , \u00c4\n" +
+                "& oe , \u00f6 & oe , \u00d6\n" +
+                "& ue , \u00fc & ue , \u00dc\n";
+        
+        String it_SpelloutRules =
+            // main rule set.  Follows the patterns of the preceding rule sets,
+            // except that the final vowel is omitted from words ending in
+            // vowels when they are followed by another word; instead, we have
+            // separate rule sets that are identical to this one, except that
+            // all the words that don't begin with a vowel have a vowel tacked
+            // onto them at the front.  A word ending in a vowel calls a
+            // substitution that will supply that vowel, unless that vowel is to
+            // be elided.
+            "%main:\n" +
+                "-x: meno >>;\n" +
+                "x.x: << virgola >>;\n" +
+                "zero; uno; due; tre; quattro; cinque; sei; sette; otto; nove;\n" +
+                "dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n" +
+                "    diciasette; diciotto; diciannove;\n" +
+                "20: venti; vent>%%with-i>;\n" +
+                "30: trenta; trent>%%with-i>;\n" +
+                "40: quaranta; quarant>%%with-a>;\n" +
+                "50: cinquanta; cinquant>%%with-a>;\n" +
+                "60: sessanta; sessant>%%with-a>;\n" +
+                "70: settanta; settant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: novanta; novant>%%with-a>;\n" +
+                "100: cento; cent[>%%with-o>];\n" +
+                "200: <<cento; <<cent[>%%with-o>];\n" +
+                "1000: mille; mill[>%%with-i>];\n" +
+                "2000: <<mila; <<mil[>%%with-a>];\n" +
+                "100,000>>: <<mila[ >>];\n" +
+                "1,000,000: =#,##0= (incomplete data);\n" +
+            "%%with-a:\n" +
+                "azero; uno; adue; atre; aquattro; acinque; asei; asette; otto; anove;\n" +
+                "adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n" +
+                "    adiciasette; adiciotto; adiciannove;\n" +
+                "20: aventi; avent>%%with-i>;\n" +
+                "30: atrenta; atrent>%%with-i>;\n" +
+                "40: aquaranta; aquarant>%%with-a>;\n" +
+                "50: acinquanta; acinquant>%%with-a>;\n" +
+                "60: asessanta; asessant>%%with-a>;\n" +
+                "70: asettanta; asettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: anovanta; anovant>%%with-a>;\n" +
+                "100: acento; acent[>%%with-o>];\n" +
+                "200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n" +
+                "1000: amille; amill[>%%with-i>];\n" +
+                "2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" +
+            "%%with-i:\n" +
+                "izero; uno; idue; itre; iquattro; icinque; isei; isette; otto; inove;\n" +
+                "idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n" +
+                "    idiciasette; idiciotto; idiciannove;\n" +
+                "20: iventi; ivent>%%with-i>;\n" +
+                "30: itrenta; itrent>%%with-i>;\n" +
+                "40: iquaranta; iquarant>%%with-a>;\n" +
+                "50: icinquanta; icinquant>%%with-a>;\n" +
+                "60: isessanta; isessant>%%with-a>;\n" +
+                "70: isettanta; isettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: inovanta; inovant>%%with-a>;\n" +
+                "100: icento; icent[>%%with-o>];\n" +
+                "200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n" +
+                "1000: imille; imill[>%%with-i>];\n" +
+                "2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" +
+            "%%with-o:\n" +
+                "ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto; onove;\n" +
+                "odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n" +
+                "    odiciasette; odiciotto; odiciannove;\n" +
+                "20: oventi; ovent>%%with-i>;\n" +
+                "30: otrenta; otrent>%%with-i>;\n" +
+                "40: oquaranta; oquarant>%%with-a>;\n" +
+                "50: ocinquanta; ocinquant>%%with-a>;\n" +
+                "60: osessanta; osessant>%%with-a>;\n" +
+                "70: osettanta; osettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: onovanta; onovant>%%with-a>;\n" +
+                "100: ocento; ocent[>%%with-o>];\n" +
+                "200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n" +
+                "1000: omille; omill[>%%with-i>];\n" +
+                "2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" ;
+        
+        String en_OrdinalRules =
+            // this rule set formats the numeral and calls %%abbrev to
+            // supply the abbreviation
+            "%main:\n" +
+                "=#,##0==%%abbrev=;\n" +
+            // this rule set supplies the abbreviation
+            "%%abbrev:\n" +
+                   // the abbreviations.  Everything from 4 to 19 ends in "th"
+                "th; st; nd; rd; th;\n" +
+                   // at 20, we begin repeating the cycle every 10 (13 is "13th",
+                   // but 23 and 33 are "23rd" and "33rd")  We do this by
+                   // ignoring all bug the ones digit in selecting the abbreviation
+                "20: >>;\n" +
+                   // at 100, we repeat the whole cycle by considering only the
+                   // tens and ones digits in picking an abbreviation
+                "100: >>;\n";
+        
+        String en_DurationRules =
+            // main rule set for formatting with words
+            "%with-words:\n" +
+                   // take care of singular and plural forms of "second"
+                "0 seconds; 1 second; =0= seconds;\n" +
+                   // use %%min to format values greater than 60 seconds
+                "60/60: <%%min<[, >>];\n" +
+                   // use %%hr to format values greater than 3,600 seconds
+                   // (the ">>>" below causes us to see the number of minutes
+                   // when when there are zero minutes)
+                "3600/60: <%%hr<[, >>>];\n" +
+            // this rule set takes care of the singular and plural forms
+            // of "minute"
+            "%%min:\n" +
+                "0 minutes; 1 minute; =0= minutes;\n" +
+            // this rule set takes care of the singular and plural forms
+            // of "hour"
+            "%%hr:\n" +
+                "0 hours; 1 hour; =0= hours;\n" +
+
+            // main rule set for formatting in numerals
+            "%in-numerals:\n" +
+                   // values below 60 seconds are shown with "sec."
+                "=0= sec.;\n" +
+                   // higher values are shown with colons: %%min-sec is used for
+                   // values below 3,600 seconds...
+                "60: =%%min-sec=;\n" +
+                   // ...and %%hr-min-sec is used for values of 3,600 seconds
+                   // and above
+                "3600: =%%hr-min-sec=;\n" +
+            // this rule causes values of less than 10 minutes to show without
+            // a leading zero
+            "%%min-sec:\n" +
+                "0: :=00=;\n" +
+                "60/60: <0<>>;\n" +
+            // this rule set is used for values of 3,600 or more.  Minutes are always
+            // shown, and always shown with two digits
+            "%%hr-min-sec:\n" +
+                "0: :=00=;\n" +
+                "60/60: <00<>>;\n" +
+                "3600/60: <#,##0<:>>>;\n" +
+            // the lenient-parse rules allow several different characters to be used
+            // as delimiters between hours, minutes, and seconds
+            "%%lenient-parse:\n" +
+                "& ':' = '.' = ' ' = '-';\n";
+
+            HashMap cannedData = new HashMap();
+        
+        {
+            cannedData.put("en_CA/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("en_CA/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_CA/DurationRules",      en_DurationRules);
+            
+            cannedData.put("fr_CA/SpelloutRules",      fr_SpelloutRules);
+            cannedData.put("fr_CA/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("fr_CA/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("zh_CN/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("zh_CN/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("zh_CH/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("zh/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("zh/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("zh_DurationRules",         xx_DurationRules);
+            
+            cannedData.put("en/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("en/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("en/DurationRules",         en_DurationRules);
+            
+            cannedData.put("fr_FR/SpelloutRules",      fr_SpelloutRules);
+            cannedData.put("fr_FR/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("fr_FR/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("fr/SpelloutRules",         fr_SpelloutRules);
+            cannedData.put("fr/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("fr/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("de/SpelloutRules",         de_SpelloutRules);
+            cannedData.put("de/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("de/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("de_DE/SpelloutRules",      de_SpelloutRules);
+            cannedData.put("de_DE/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("de_DE/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("it/SpelloutRules",         it_SpelloutRules);
+            cannedData.put("it/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("it/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("it_IT/SpelloutRules",      it_SpelloutRules);
+            cannedData.put("it_IT/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("it_IT/DuratonRules",       xx_DurationRules);
+            
+            cannedData.put("ko_KR/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("ko_KR/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("ko_KR/DurationRules",      en_DurationRules);
+            
+            cannedData.put("ko/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("ko/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("ko/DurationRules",         en_DurationRules);
+            
+            cannedData.put("zh_Hans_CN/SpelloutRules", en_SpelloutRules);
+            cannedData.put("zh_Hans_CN/OrdinalRules",  en_OrdinalRules);
+            cannedData.put("zh_Hans_CH/DurationRules", xx_DurationRules);
+            
+            cannedData.put("zh_Hant_TW/SpelloutRules", en_SpelloutRules);
+            cannedData.put("zh_Hant_TW/OrdinalRules",  en_OrdinalRules);
+            cannedData.put("zh_Hant_TW/DurationRules", en_DurationRules);
+            
+            cannedData.put("zh_TW/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("zh_TW/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("zh_TW/DurationRules",      en_DurationRules);
+            
+            cannedData.put("en_GB/SpelloutRules",      en_GB_SpelloutRules);
+            cannedData.put("en_GB/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_GB/DurationRules",      en_DurationRules);
+            
+            cannedData.put("en_US/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("en_US/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_US/DurationRules",      en_DurationRules);
+
+            cannedData.put("ja/SpelloutRules",         ja_spelloutRules);
+            cannedData.put("ja/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("ja/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("ja_JP/SpelloutRules",      ja_spelloutRules);
+            cannedData.put("ja_JP/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("ja_JP/DurationRules",      xx_DurationRules);
+        }
+        
+        int types[]        = {RuleBasedNumberFormat.SPELLOUT, RuleBasedNumberFormat.ORDINAL, RuleBasedNumberFormat.DURATION};
+        String typeNames[] = {"SpelloutRules", "OrdinalRules", "DurationRules"};
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            RuleBasedNumberFormat formats[] = new RuleBasedNumberFormat[types.length * locales.length];
+            int i = 0;
+            
+            for (int t = 0; t < types.length; t += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    String cannedRules = (String) cannedData.get(locales[l].toString() + "/" + typeNames[t]);
+                    
+                    if (cannedRules != null) {
+                        formats[i++] = new RuleBasedNumberFormat(cannedRules, locales[l]);
+                    } else {
+                        formats[i++] = new RuleBasedNumberFormat(locales[l], types[t]);
+                    }
+                }
+            }
+            
+            return formats;
+        }
+    }
+    
+    public static class DecimalFormatSymbolsHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DecimalFormatSymbols dfs[] = new DecimalFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+
+                dfs[i] = getCannedDecimalFormatSymbols(uloc);
+
+//                System.out.println("\n    " + uloc.toString() + " = \"" + 
+//                        com.ibm.icu.impl.Utility.escape(String.valueOf(getCharSymbols(dfs[i]), 0, 12)) + "\"");
+            }
+            
+            return dfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DecimalFormatSymbols dfs_a = (DecimalFormatSymbols) a;
+            DecimalFormatSymbols dfs_b = (DecimalFormatSymbols) b;
+            String strings_a[] = getStringSymbols(dfs_a);
+            String strings_b[] = getStringSymbols(dfs_b);
+            char chars_a[] = getCharSymbols(dfs_a);
+            char chars_b[] = getCharSymbols(dfs_b);
+
+            return SerializableTest.compareStrings(strings_a, strings_b) && SerializableTest.compareChars(chars_a, chars_b);
+        }
+    }
+    
+    public static class MessageFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            MessageFormat formats[] = {new MessageFormat("pattern{0}")};
+            
+            return formats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            MessageFormat mfa = (MessageFormat) a;
+            MessageFormat mfb = (MessageFormat) b;
+            Object arguments[] = {new Integer(123456)};
+            
+            return mfa.format(arguments) != mfb.format(arguments);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class MessageFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            return new Object[] {MessageFormat.Field.ARGUMENT};
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class DateFormatHandler implements SerializableTest.Handler
+    {
+        static HashMap cannedPatterns = new HashMap();
+        static Date fixedDate;
+        
+        {
+            cannedPatterns.put("en_CA",      "EEEE, MMMM d, yyyy h:mm:ss a z");
+            cannedPatterns.put("fr_CA",      "EEEE d MMMM yyyy HH' h 'mm' min 'ss' s 'z");
+            cannedPatterns.put("zh_Hans_CN", "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u65F6'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh_CN",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u65F6'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh",         "EEEE, yyyy MMMM dd HH:mm:ss z");
+            cannedPatterns.put("en",         "EEEE, MMMM d, yyyy h:mm:ss a z");
+            cannedPatterns.put("fr_FR",      "EEEE d MMMM yyyy HH' h 'mm z");
+            cannedPatterns.put("fr",         "EEEE d MMMM yyyy HH' h 'mm z");
+            cannedPatterns.put("de",         "EEEE, d. MMMM yyyy H:mm' Uhr 'z");
+            cannedPatterns.put("de_DE",      "EEEE, d. MMMM yyyy H:mm' Uhr 'z");
+            cannedPatterns.put("it",         "EEEE d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("it_IT",      "EEEE d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("ja_JP",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE H'\u6642'mm'\u5206'ss'\u79D2'z");
+            cannedPatterns.put("ja",         "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE H'\u6642'mm'\u5206'ss'\u79D2'z");
+            cannedPatterns.put("ko_KR",      "yyyy'\uB144' M'\uC6D4' d'\uC77C' EEEE a hh'\uC2DC' mm'\uBD84' ss'\uCD08' z");
+            cannedPatterns.put("ko",         "yyyy'\uB144' M'\uC6D4' d'\uC77C' EEEE a hh'\uC2DC' mm'\uBD84' ss'\uCD08' z");
+            cannedPatterns.put("zh_Hant_TW", "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u6642'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh_TW",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u6642'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("en_GB",      "EEEE, d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("en_US",      "EEEE, MMMM d, yyyy h:mm:ss a z");
+            
+            // Get a date that will likely not move in or out of Daylight savings time...
+            Calendar cal = Calendar.getInstance(Locale.US);
+            
+            cal.clear();
+            cal.set(2007, Calendar.JANUARY, 1, 12, 0, 0); // January 1, 2007 12:00:00 PM.
+            fixedDate = cal.getTime();
+        }
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateFormat formats[] = new DateFormat[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+              //formats[i] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locales[i]);
+                formats[i] = getCannedSimpleDateFormat((String)cannedPatterns.get(uloc.toString()), uloc);
+            }
+            
+            return formats;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateFormat dfa = (DateFormat) a;
+            DateFormat dfb = (DateFormat) b;
+          //Date date = new Date(System.currentTimeMillis());
+            String sfa = dfa.format(fixedDate);
+            String sfb = dfb.format(fixedDate);
+
+            if (!sfa.equals(sfb)) {
+                // TODO
+                // In ICU3.8, localized GMT format pattern was added in
+                // DateFormatSymbols, which has no public setter.
+                // The difference of locale data for localized GMT format
+                // will produce different format result.  This is a temporary
+                // workaround for the issue.
+                DateFormatSymbols dfsa = ((SimpleDateFormat)dfa).getDateFormatSymbols();
+                DateFormatSymbols tmp = (DateFormatSymbols)((SimpleDateFormat)dfb).getDateFormatSymbols().clone();
+
+                tmp.setMonths(dfsa.getMonths());
+                tmp.setShortMonths(dfsa.getShortMonths());
+                tmp.setWeekdays(dfsa.getWeekdays());
+                tmp.setShortWeekdays(dfsa.getShortWeekdays());
+                tmp.setAmPmStrings(dfsa.getAmPmStrings());
+
+                ((SimpleDateFormat)dfa).setDateFormatSymbols(tmp);
+
+                sfa = dfa.format(fixedDate);
+            }
+
+            return sfa.equals(sfb);
+        }
+        
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class DateFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects() {
+            return new Object[] {
+                    DateFormat.Field.AM_PM,
+                    DateFormat.Field.DAY_OF_MONTH,
+                    DateFormat.Field.DAY_OF_WEEK,
+                    DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+                    DateFormat.Field.DAY_OF_YEAR,
+                    DateFormat.Field.ERA,
+                    DateFormat.Field.HOUR_OF_DAY0,
+                    DateFormat.Field.HOUR_OF_DAY1,
+                    DateFormat.Field.HOUR0,
+                    DateFormat.Field.HOUR1,
+                    DateFormat.Field.MILLISECOND,
+                    DateFormat.Field.MINUTE,
+                    DateFormat.Field.MONTH,
+                    DateFormat.Field.SECOND,
+                    DateFormat.Field.TIME_ZONE,
+                    DateFormat.Field.WEEK_OF_MONTH,
+                    DateFormat.Field.WEEK_OF_YEAR,
+                    DateFormat.Field.YEAR,
+                    DateFormat.Field.DOW_LOCAL,
+                    DateFormat.Field.EXTENDED_YEAR,
+                    DateFormat.Field.JULIAN_DAY,
+                    DateFormat.Field.MILLISECONDS_IN_DAY,
+                    DateFormat.Field.YEAR_WOY,
+                    DateFormat.Field.QUARTER
+            };
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class DateFormatSymbolsHandler implements SerializableTest.Handler
+    {
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateFormatSymbols dfs[] = new DateFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                dfs[i] = getCannedDateFormatSymbols(uloc);
+            }
+            
+            return dfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateFormatSymbols dfs_a = (DateFormatSymbols) a;
+            DateFormatSymbols dfs_b = (DateFormatSymbols) b;
+            String months_a[] = dfs_a.getMonths();
+            String months_b[] = dfs_b.getMonths();
+            
+            return SerializableTest.compareStrings(months_a, months_b);
+        }
+    }
+    
+    public static class SimpleDateFormatHandler extends DateFormatHandler
+    {
+        String patterns[] = {
+            "EEEE, yyyy MMMM dd",
+            "yyyy MMMM d",
+            "yyyy MMM d",
+            "yy/MM/dd"
+        };
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            SimpleDateFormat dateFormats[] = new SimpleDateFormat[patterns.length * locales.length];
+            int i = 0;
+            
+            for (int p = 0; p < patterns.length; p += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    dateFormats[i++] = getCannedSimpleDateFormat(patterns[p], ULocale.forLocale(locales[l]));
+                }
+            }
+            
+            return dateFormats;
+        }
+    }
+
+    public static class DateIntervalFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalFormat dateIntervalFormats[] = {
+                DateIntervalFormat.getInstance("yMMMMEEEEd")
+            };
+            return dateIntervalFormats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateIntervalFormat dfa = (DateIntervalFormat) a;
+            DateIntervalFormat dfb = (DateIntervalFormat) b;
+            DateInterval dateInterval = new DateInterval(1, System.currentTimeMillis());
+            String sfa = dfa.format(dateInterval);
+            String sfb = dfb.format(dateInterval);
+
+            return sfa.equals(sfb);
+        }
+    }
+
+
+    public static class DateIntervalInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalInfo dateIntervalInfo[] = {
+                new DateIntervalInfo()
+            };
+            dateIntervalInfo[0].setIntervalPattern("yMd", Calendar.YEAR, "yy/MM/dd - yy/MM/dd");
+            dateIntervalInfo[0].setIntervalPattern("yMd", Calendar.MONTH, "yy/MM - MM/dd");
+            return dateIntervalInfo;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+
+    public static class PatternInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalInfo.PatternInfo patternInfo[] = {
+                new DateIntervalInfo.PatternInfo("yyyy MMM dd - ", 
+                                                 "dd",
+                                                 false)
+            };
+            return patternInfo;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+    public static class ChineseDateFormatHandler extends DateFormatHandler
+    {
+        String patterns[] = {
+            "EEEE y'x'G-Ml-d",
+            "y'x'G-Ml-d",
+            "y'x'G-Ml-d",
+            "y'x'G-Ml-d"
+        };
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ChineseDateFormat dateFormats[] = new ChineseDateFormat[patterns.length * locales.length];
+            int i = 0;
+            
+            for (int p = 0; p < patterns.length; p += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    ULocale locale = new ULocale(locales[l].toString() + "@calendar=chinese");
+                    
+                    dateFormats[i++] = new ChineseDateFormat(patterns[p], locale);
+                }
+            }
+            
+            return dateFormats;
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class ChineseDateFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects() {
+            return new Object[] {
+                    ChineseDateFormat.Field.IS_LEAP_MONTH
+            };
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class ChineseDateFormatSymbolsHandler extends DateFormatSymbolsHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ChineseDateFormatSymbols cdfs[] = new ChineseDateFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                cdfs[i] = new ChineseDateFormatSymbols(uloc);
+                cdfs[i].setMonths((String[]) cannedMonthNames.get(uloc.toString()));
+            }
+            
+            return cdfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            if (! super.hasSameBehavior(a, b)) {
+                return false;
+            }
+            
+            ChineseDateFormatSymbols cdfs_a = (ChineseDateFormatSymbols) a;
+            ChineseDateFormatSymbols cdfs_b = (ChineseDateFormatSymbols) b;
+            
+            return cdfs_a.getLeapMonth(0).equals(cdfs_b.getLeapMonth(0)) &&
+                   cdfs_a.getLeapMonth(1).equals(cdfs_b.getLeapMonth(1));
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class NumberFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            NumberFormat.Field fields[] = {
+                NumberFormat.Field.CURRENCY, NumberFormat.Field.DECIMAL_SEPARATOR, NumberFormat.Field.EXPONENT,
+                NumberFormat.Field.EXPONENT_SIGN, NumberFormat.Field.EXPONENT_SYMBOL, NumberFormat.Field.FRACTION,
+                NumberFormat.Field.GROUPING_SEPARATOR, NumberFormat.Field.INTEGER, NumberFormat.Field.PERCENT,
+                NumberFormat.Field.PERMILLE, NumberFormat.Field.SIGN
+            };
+            
+            return fields;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            NumberFormat.Field field_a = (NumberFormat.Field) a;
+            NumberFormat.Field field_b = (NumberFormat.Field) b;
+            
+            return field_a.toString().equals(field_b.toString());
+        }
+    }
+//#endif
+
+    public static class DateNumberFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateNumberFormat[] dnfmts = new DateNumberFormat[locales.length];
+            for (int i = 0; i < locales.length; i++) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                dnfmts[i] = new DateNumberFormat(uloc);
+            }
+            return dnfmts;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+
+    public static class PluralFormatHandler implements SerializableTest.Handler {
+        public Object[] getTestObjects() {
+            Locale[] locales = { Locale.US }; // main test is in plural rules handler
+            PluralFormat[] plfmts = new PluralFormat[locales.length];
+            for (int i = 0; i < locales.length; i++) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                try {
+                    plfmts[i] = new PluralFormat(uloc, "one{1 foo} other{# foo}");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            return plfmts;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+
+    public static class PluralRulesHandler implements SerializableTest.Handler {
+        public Object[] getTestObjects() {
+            String[] localeNames = {"ja","da","fr","lv","ga","ro","lt","hr","cs","pl","sl"};
+            PluralRules[] plrulz = new PluralRules[localeNames.length];
+            for (int i = 0; i < localeNames.length; i++) {
+                ULocale uloc = ULocale.createCanonical(localeNames[i]);
+                try {
+                    plrulz[i] = PluralRules.forLocale(uloc);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            return plrulz;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+    
+    public static class TimeUnitFormatHandler implements SerializableTest.Handler {
+        // TODO - more test coverage!
+        public Object[] getTestObjects() {
+            return new Object[] { new TimeUnitFormat().setLocale(ULocale.ENGLISH) };
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            TimeUnitFormat tufa = (TimeUnitFormat)a;
+            TimeUnitFormat tufb = (TimeUnitFormat)b;
+
+            TimeUnitAmount amount = new TimeUnitAmount(3, TimeUnit.HOUR);
+            String resa = tufa.format(amount);
+            String resb = tufb.format(amount);
+
+            return resa.equals(resb);
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        // nothing needed...
+    }
+
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/serializable/SerializableTest.java b/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
new file mode 100644
index 0000000..0b68997
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
@@ -0,0 +1,722 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.JavaTimeZone;
+import com.ibm.icu.impl.OlsonTimeZone;
+import com.ibm.icu.impl.TimeZoneAdapter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.math.MathContext;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VTimeZone;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class SerializableTest extends TestFmwk.TestGroup
+{
+    public interface Handler
+    {
+        public Object[] getTestObjects();
+        
+        public boolean hasSameBehavior(Object a, Object b);
+    }
+    
+    public static Handler getHandler(String className)
+    {
+        return (Handler) map.get(className);
+    }
+    
+    private static class TimeZoneHandler implements Handler
+    {
+        String[] ZONES = { "GMT", "MET", "IST" };
+
+        public Object[] getTestObjects()
+        {
+            TimeZone zones[] = new TimeZone[ZONES.length];
+            
+            for(int z = 0; z < ZONES.length; z += 1) {
+                zones[z] = TimeZone.getTimeZone(ZONES[z]);
+            }
+            
+            return zones;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            TimeZone zone_a = (TimeZone) a;
+            TimeZone zone_b = (TimeZone) b;
+
+            if (!(zone_a.getDisplayName().equals(zone_b.getDisplayName()))) {
+                return false;
+            }
+
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                zone_a.getOffset(sampleTimes[i], false, a_offsets);
+                zone_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+    
+    private static Locale locales[] = {
+        Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+        Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH, 
+        Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY, 
+        Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN, 
+        Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN, 
+        Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US
+    };
+    
+    private static Locale places[] = {
+        Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+        Locale.FRANCE, Locale.GERMANY, Locale.ITALY, 
+        Locale.JAPAN, Locale.KOREA, Locale.PRC, Locale.TAIWAN, 
+        Locale.UK, Locale.US
+    };
+    
+    public static Locale[] getLocales()
+    {
+        return locales;
+    }
+    
+    public static boolean compareStrings(String a[], String b[])
+    {
+        if (a.length != b.length) {
+            return false;
+        }
+        
+        for (int i = 0; i < a.length; i += 1) {
+            if (! a[i].equals(b[i])) {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    public static boolean compareChars(char a[], char b[])
+    {
+        if (a.length != b.length) {
+            return false;
+        }
+        
+        for (int i = 0; i < a.length; i += 1) {
+            if (a[i] != b[i]) {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+
+    private static class SimpleTimeZoneHandler extends TimeZoneHandler
+    {
+        public Object[] getTestObjects()
+        {
+            SimpleTimeZone simpleTimeZones[] = new SimpleTimeZone[6];
+            
+            simpleTimeZones[0] = new SimpleTimeZone(32400000, "MyTimeZone");
+            
+            simpleTimeZones[1] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            
+            simpleTimeZones[2] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[2].setRawOffset(0);
+            
+            simpleTimeZones[3] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[3].setStartYear(100);
+            
+            simpleTimeZones[4] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[4].setStartYear(1000);
+            simpleTimeZones[4].setDSTSavings(1800000);
+            simpleTimeZones[4].setStartRule(3, 4, 180000);
+            simpleTimeZones[4].setEndRule(6, 3, 4, 360000);
+            
+            simpleTimeZones[5] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[5].setStartRule(2, 3, 4, 360000);
+            simpleTimeZones[5].setEndRule(6, 3, 4, 360000);
+            
+            return simpleTimeZones;
+        }
+    }
+
+    private static class VTimeZoneHandler extends TimeZoneHandler {
+        public Object[] getTestObjects() {
+            //TODO
+            VTimeZone[] vtzs = new VTimeZone[1];
+            vtzs[0] = VTimeZone.create("America/New_York");
+            return vtzs;
+        }
+    }
+
+    private static final int HOUR = 60*60*1000;
+    private static final AnnualTimeZoneRule[] TEST_US_EASTERN = {
+        new AnnualTimeZoneRule("EST", -5*HOUR, 0,
+                new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1967, 2006),
+        
+        new AnnualTimeZoneRule("EST", -5*HOUR, 0,
+                new DateTimeRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                2007, AnnualTimeZoneRule.MAX_YEAR),
+        
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1967, 1973),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.JANUARY, 6, 2*HOUR, DateTimeRule.WALL_TIME),
+                1974, 1974),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.FEBRUARY, 23, 2*HOUR, DateTimeRule.WALL_TIME),
+                1975, 1975),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1976, 1986),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                1987, 2006),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                2007, AnnualTimeZoneRule.MAX_YEAR)
+    };
+    
+
+    
+    private static class RuleBasedTimeZoneHandler extends TimeZoneHandler
+    {
+        public Object[] getTestObjects()
+        {
+            RuleBasedTimeZone ruleBasedTimeZones[] = new RuleBasedTimeZone[2];
+
+            InitialTimeZoneRule ir = new InitialTimeZoneRule("GMT-5", -5*HOUR, 0);
+
+            // GMT-5, no transition
+            ruleBasedTimeZones[0] = new RuleBasedTimeZone("GMT-5", ir);
+
+
+            // US Eastern since 1967
+            ruleBasedTimeZones[1] = new RuleBasedTimeZone("US_East", ir);
+            for (int i = 0; i < TEST_US_EASTERN.length; i++) {
+                ruleBasedTimeZones[1].addTransitionRule(TEST_US_EASTERN[i]);
+            }
+            return ruleBasedTimeZones;
+        }
+    }
+
+    private static class DateTimeRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            DateTimeRule[] rules = new DateTimeRule[4];
+
+            // DOM + UTC
+            rules[0] = new DateTimeRule(Calendar.OCTOBER, 10, 13*HOUR, DateTimeRule.UTC_TIME);
+
+            // DOW + WALL
+            rules[1] = new DateTimeRule(Calendar.MARCH, 2, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME);
+
+            // DOW_GEQ_DOM + STD
+            rules[2] = new DateTimeRule(Calendar.MAY, 1, Calendar.MONDAY, true, 0*HOUR, DateTimeRule.STANDARD_TIME);
+
+            // DOW_LEQ_DOM + WALL
+            rules[3] = new DateTimeRule(Calendar.AUGUST, 31, Calendar.SATURDAY, false, 1*HOUR, DateTimeRule.WALL_TIME);
+
+            return rules;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return hasSameRule((DateTimeRule)a, (DateTimeRule)b);
+        }
+
+        static boolean hasSameRule(DateTimeRule dtra, DateTimeRule dtrb) {
+            boolean bSame = false;
+            if (dtra.getDateRuleType() == dtrb.getDateRuleType()
+                    && dtra.getRuleMonth() == dtrb.getRuleMonth()
+                    && dtra.getTimeRuleType() == dtrb.getTimeRuleType()
+                    && dtra.getRuleMillisInDay() == dtrb.getRuleMillisInDay()) {
+                switch (dtra.getDateRuleType()) {
+                case DateTimeRule.DOM:
+                    bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth());
+                    break;
+                case DateTimeRule.DOW:
+                    bSame = (dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek() &&
+                                dtra.getRuleWeekInMonth() == dtrb.getRuleWeekInMonth());
+                    break;
+                case DateTimeRule.DOW_GEQ_DOM:
+                case DateTimeRule.DOW_LEQ_DOM:
+                    bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth() &&
+                                dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek());
+                    break;
+                }
+            }
+            return bSame;            
+        }
+    }
+
+    private static boolean compareTimeZoneRules(TimeZoneRule ra, TimeZoneRule rb) {
+        if (ra.getName().equals(rb.getName()) &&
+                ra.getRawOffset() == rb.getRawOffset() &&
+                ra.getDSTSavings() == rb.getDSTSavings()) {
+            return true;
+        }
+        return false;        
+    }
+
+    private static class AnnualTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            return TEST_US_EASTERN;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            AnnualTimeZoneRule ra = (AnnualTimeZoneRule)a;
+            AnnualTimeZoneRule rb = (AnnualTimeZoneRule)b;
+            if (DateTimeRuleHandler.hasSameRule(ra.getRule(), rb.getRule()) &&
+                    ra.getStartYear() == rb.getStartYear() &&
+                    ra.getEndYear() == rb.getEndYear()) {
+                return compareTimeZoneRules(ra, rb);
+            }
+            return false;
+        }
+    }
+
+    private static class InitialTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            TimeZoneRule[] rules = new TimeZoneRule[2];
+            rules[0] = new InitialTimeZoneRule("EST", -5*HOUR, 0);
+            rules[1] = new InitialTimeZoneRule("PST", -8*HOUR, 0);
+            return rules;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return compareTimeZoneRules((TimeZoneRule)a, (TimeZoneRule)b);
+        }
+    }
+
+    private static class TimeArrayTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            TimeArrayTimeZoneRule[] rules = new TimeArrayTimeZoneRule[1];
+            long[] ttime = new long[] {-631152000000L, 0L, 946684800000L}; /* {1950-1-1, 1970-1-1, 2000-1-1} */
+            rules[0] = new TimeArrayTimeZoneRule("Foo", 1*HOUR, 1*HOUR, ttime, DateTimeRule.UTC_TIME);
+
+            return rules;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            TimeArrayTimeZoneRule ra = (TimeArrayTimeZoneRule)a;
+            TimeArrayTimeZoneRule rb = (TimeArrayTimeZoneRule)b;
+
+            Date da = ra.getFirstStart(0, 0);
+            Date db = rb.getFirstStart(0, 0);
+            long t = da.getTime();
+            if (da.equals(db)) {
+                da = ra.getFinalStart(0, 0);
+                db = rb.getFinalStart(0, 0);
+                long end = da.getTime();
+                if (da.equals(db)) {
+                    while (t < end) {
+                        da = ra.getNextStart(t, 0, 0, false);
+                        db = ra.getNextStart(t, 0, 0, false);
+                        if (da == null || db == null || !da.equals(db)) {
+                            break;
+                        }
+                        t = da.getTime();
+                    }
+                    return compareTimeZoneRules(ra, rb);
+                }
+            }
+            return false;
+        }
+    }
+
+    private static class ULocaleHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            ULocale uLocales[] = new ULocale[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                uLocales[i] = ULocale.forLocale(locales[i]);
+            }
+            
+            return uLocales;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            ULocale uloc_a = (ULocale) a;
+            ULocale uloc_b = (ULocale) b;
+            
+            return uloc_a.getName().equals(uloc_b.getName());
+        }
+    }
+    
+    public static class DateIntervalHandler implements Handler
+    {
+        private DateInterval dateInterval[] = {
+                new DateInterval(0L, 1164931200000L/*20061201T000000Z*/)
+        };
+        public Object[] getTestObjects()
+        {
+            return dateInterval;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+
+    private static class CurrencyHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Currency currencies[] = new Currency[places.length];
+            
+            for (int i = 0; i < places.length; i += 1) {
+                currencies[i] = Currency.getInstance(places[i]);
+            }
+            
+            return currencies;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Currency curr_a = (Currency) a;
+            Currency curr_b = (Currency) b;
+            
+            return curr_a.getCurrencyCode().equals(curr_b.getCurrencyCode());
+            
+        }
+    }
+
+    private static String zoneIDs[] = {
+        "Pacific/Honolulu", "America/Anchorage", "America/Los_Angeles", "America/Denver",
+        "America/Chicago", "America/New_York", "Africa/Cairo", "Africa/Addis_Ababa", "Africa/Dar_es_Salaam",
+        "Africa/Freetown", "Africa/Johannesburg", "Africa/Nairobi", "Asia/Bangkok", "Asia/Baghdad",
+        "Asia/Calcutta", "Asia/Hong_Kong", "Asia/Jakarta", "Asia/Jerusalem", "Asia/Manila", "Asia/Tokyo",
+        "Europe/Amsterdam", "Europe/Athens", "Europe/Berlin", "Europe/London", "Europe/Malta", "Europe/Moscow",
+        "Europe/Paris", "Europe/Rome"
+    };
+        
+    private static long sampleTimes[] = {
+        1136073600000L, // 20060101T000000Z
+        1138752000000L, // 20060201T000000Z
+        1141171200000L, // 20060301T000000Z
+        1143849600000L, // 20060401T000000Z
+        1146441600000L, // 20060501T000000Z
+        1149120000000L, // 20060601T000000Z
+        1151712000000L, // 20060701T000000Z
+        1154390400000L, // 20060801T000000Z
+        1157068800000L, // 20060901T000000Z
+        1159660800000L, // 20061001T000000Z
+        1162339200000L, // 20061101T000000Z
+        1164931200000L, // 20061201T000000Z
+    };
+
+    private static class OlsonTimeZoneHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            OlsonTimeZone timeZones[] = new OlsonTimeZone[zoneIDs.length];
+            
+            for (int i = 0; i < zoneIDs.length; i += 1) {
+                timeZones[i] = new OlsonTimeZone(zoneIDs[i]);
+            }
+            
+            return timeZones;
+                
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            OlsonTimeZone otz_a = (OlsonTimeZone) a;
+            OlsonTimeZone otz_b = (OlsonTimeZone) b;
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                otz_a.getOffset(sampleTimes[i], false, a_offsets);
+                otz_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class TimeZoneAdapterHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            TimeZoneAdapter timeZones[] = new TimeZoneAdapter[zoneIDs.length];
+            
+            for (int i = 0; i < zoneIDs.length; i += 1) {
+                timeZones[i] = new TimeZoneAdapter(TimeZone.getTimeZone(zoneIDs[i]));
+            }
+            
+            return timeZones;
+                
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            GregorianCalendar cal = new GregorianCalendar();
+            TimeZoneAdapter tza_a = (TimeZoneAdapter) a;
+            TimeZoneAdapter tza_b = (TimeZoneAdapter) b;
+            
+            int a_offset, b_offset;
+            boolean a_dst, b_dst;
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                cal.setTimeInMillis(sampleTimes[i]);
+                int era = cal.get(Calendar.ERA);
+                int year = cal.get(Calendar.YEAR);
+                int month = cal.get(Calendar.MONTH);
+                int day = cal.get(Calendar.DAY_OF_MONTH);
+                int dow = cal.get(Calendar.DAY_OF_WEEK);
+                int mid = cal.get(Calendar.MILLISECONDS_IN_DAY);
+                a_offset = tza_a.getOffset(era, year, month, day, dow, mid);
+                b_offset = tza_b.getOffset(era, year, month, day, dow, mid);
+                Date d = new Date(sampleTimes[i]);
+                a_dst = tza_a.inDaylightTime(d);
+                b_dst = tza_b.inDaylightTime(d);
+                if (a_offset != b_offset || a_dst != b_dst) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class JavaTimeZoneHandler implements Handler {
+        String[] ZONES = { "GMT", "America/New_York", "GMT+05:45" };
+
+        public Object[] getTestObjects() {
+            JavaTimeZone zones[] = new JavaTimeZone[ZONES.length];
+            for(int z = 0; z < ZONES.length; z += 1) {
+                zones[z] = new JavaTimeZone(ZONES[z]);
+            }
+            return zones;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            TimeZone zone_a = (TimeZone) a;
+            TimeZone zone_b = (TimeZone) b;
+
+            if (!(zone_a.getID().equals(zone_b.getID()))) {
+                return false;
+            }
+
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                zone_a.getOffset(sampleTimes[i], false, a_offsets);
+                zone_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class BigDecimalHandler implements Handler
+    {
+        String values[] = {
+            "1234567890.",
+            "123456789.0",
+            "12345678.90",
+            "1234567.890",
+            "123456.7890",
+            "12345.67890",
+            "1234.567890",
+            "123.4567890",
+            "12.34567890",
+            "1.234567890",
+            ".1234567890"};
+        
+        public Object[] getTestObjects()
+        {
+            BigDecimal bds[] = new BigDecimal[values.length];
+            
+            for (int i = 0; i < values.length; i += 1) {
+                bds[i] = new BigDecimal(values[i]);
+            }
+            
+            return bds;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b) {
+            BigDecimal bda = (BigDecimal) a;
+            BigDecimal bdb = (BigDecimal) b;
+            
+            return bda.toString().equals(bdb.toString());
+        }
+    }
+    
+    private static class MathContextHandler implements Handler
+    {
+        int forms[] = {MathContext.PLAIN, MathContext.ENGINEERING, MathContext.SCIENTIFIC};
+        int rounds[] = {
+            MathContext.ROUND_CEILING, MathContext.ROUND_DOWN, MathContext.ROUND_FLOOR,
+            MathContext.ROUND_HALF_DOWN, MathContext.ROUND_HALF_EVEN, MathContext.ROUND_HALF_UP,
+            MathContext.ROUND_UNNECESSARY, MathContext.ROUND_UP};
+
+        public Object[] getTestObjects()
+        {
+            int objectCount = forms.length * rounds.length;
+            MathContext contexts[] = new MathContext[objectCount];
+            int i = 0;
+            
+            for (int f = 0; f < forms.length; f += 1) {
+                for (int r = 0; r < rounds.length; r += 1) {
+                    int digits = f * r;
+                    boolean lostDigits = (r & 1) != 0;
+                    
+                    contexts[i++] = new MathContext(digits, forms[f], lostDigits, rounds[r]);
+                }
+            }
+            
+            return contexts;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            MathContext mca = (MathContext) a;
+            MathContext mcb = (MathContext) b;
+            
+            return mca.toString().equals(mcb.toString());
+        }
+    }
+
+    private static HashMap map = new HashMap();
+    
+    static {
+        map.put("com.ibm.icu.util.TimeZone", new TimeZoneHandler());
+        map.put("com.ibm.icu.util.SimpleTimeZone", new SimpleTimeZoneHandler());
+        map.put("com.ibm.icu.util.RuleBasedTimeZone", new RuleBasedTimeZoneHandler());
+        map.put("com.ibm.icu.util.VTimeZone", new VTimeZoneHandler());
+        map.put("com.ibm.icu.util.DateTimeRule", new DateTimeRuleHandler());
+        map.put("com.ibm.icu.util.AnnualTimeZoneRule", new AnnualTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.InitialTimeZoneRule", new InitialTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.TimeArrayTimeZoneRule", new TimeArrayTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.ULocale", new ULocaleHandler());
+        map.put("com.ibm.icu.util.Currency", new CurrencyHandler());
+        map.put("com.ibm.icu.impl.JavaTimeZone", new JavaTimeZoneHandler());
+        map.put("com.ibm.icu.impl.OlsonTimeZone", new OlsonTimeZoneHandler());
+        map.put("com.ibm.icu.impl.TimeZoneAdapter", new TimeZoneAdapterHandler());
+        map.put("com.ibm.icu.math.BigDecimal", new BigDecimalHandler());
+        map.put("com.ibm.icu.math.MathContext", new MathContextHandler());
+        
+        map.put("com.ibm.icu.text.NumberFormat", new FormatTests.NumberFormatHandler());
+        map.put("com.ibm.icu.text.DecimalFormat", new FormatTests.DecimalFormatHandler());
+        map.put("com.ibm.icu.text.RuleBasedNumberFormat", new FormatTests.RuleBasedNumberFormatHandler());
+        map.put("com.ibm.icu.text.DecimalFormatSymbols", new FormatTests.DecimalFormatSymbolsHandler());
+        map.put("com.ibm.icu.text.MessageFormat", new FormatTests.MessageFormatHandler());
+        map.put("com.ibm.icu.text.DateFormat", new FormatTests.DateFormatHandler());
+        map.put("com.ibm.icu.text.DateFormatSymbols", new FormatTests.DateFormatSymbolsHandler());
+        map.put("com.ibm.icu.util.DateInterval", new DateIntervalHandler());
+        map.put("com.ibm.icu.text.DateIntervalFormat", new FormatTests.DateIntervalFormatHandler());
+        map.put("com.ibm.icu.text.DateIntervalInfo", new FormatTests.DateIntervalInfoHandler());
+        map.put("com.ibm.icu.text.DateIntervalInfo$PatternInfo", new FormatTests.PatternInfoHandler());
+        map.put("com.ibm.icu.text.SimpleDateFormat", new FormatTests.SimpleDateFormatHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormat", new FormatTests.ChineseDateFormatHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormatSymbols", new FormatTests.ChineseDateFormatSymbolsHandler());
+        map.put("com.ibm.icu.impl.DateNumberFormat", new FormatTests.DateNumberFormatHandler());
+        map.put("com.ibm.icu.text.PluralFormat", new FormatTests.PluralFormatHandler());
+        map.put("com.ibm.icu.text.PluralRules", new FormatTests.PluralRulesHandler());
+        map.put("com.ibm.icu.text.TimeUnitFormat", new FormatTests.TimeUnitFormatHandler());
+
+        map.put("com.ibm.icu.util.Calendar", new CalendarTests.CalendarHandler());
+        map.put("com.ibm.icu.util.BuddhistCalendar", new CalendarTests.BuddhistCalendarHandler());
+        map.put("com.ibm.icu.util.ChineseCalendar", new CalendarTests.ChineseCalendarHandler());
+        map.put("com.ibm.icu.util.CopticCalendar", new CalendarTests.CopticCalendarHandler());
+        map.put("com.ibm.icu.util.EthiopicCalendar", new CalendarTests.EthiopicCalendarHandler());
+        map.put("com.ibm.icu.util.GregorianCalendar", new CalendarTests.GregorianCalendarHandler());
+        map.put("com.ibm.icu.util.HebrewCalendar", new CalendarTests.HebrewCalendarHandler());
+        map.put("com.ibm.icu.util.IndianCalendar", new CalendarTests.IndianCalendarHandler());
+        map.put("com.ibm.icu.util.IslamicCalendar", new CalendarTests.IslamicCalendarHandler());
+        map.put("com.ibm.icu.util.JapaneseCalendar", new CalendarTests.JapaneseCalendarHandler());
+        map.put("com.ibm.icu.util.TaiwanCalendar", new CalendarTests.TaiwanCalendarHandler());
+        
+        map.put("com.ibm.icu.text.ArabicShapingException", new ExceptionTests.ArabicShapingExceptionHandler());
+        map.put("com.ibm.icu.text.StringPrepParseException", new ExceptionTests.StringPrepParseExceptionHandler());
+        map.put("com.ibm.icu.util.UResourceTypeMismatchException", new ExceptionTests.UResourceTypeMismatchExceptionHandler());
+        map.put("com.ibm.icu.impl.InvalidFormatException", new ExceptionTests.InvalidFormatExceptionHandler());
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        map.put("com.ibm.icu.text.NumberFormat$Field", new FormatTests.NumberFormatFieldHandler());
+        map.put("com.ibm.icu.text.DateFormat$Field", new FormatTests.DateFormatFieldHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormat$Field", new FormatTests.ChineseDateFormatFieldHandler());
+        map.put("com.ibm.icu.text.MessageFormat$Field", new FormatTests.MessageFormatFieldHandler());
+//#endif
+        map.put("com.ibm.icu.impl.duration.BasicDurationFormat", new FormatTests.BasicDurationFormatHandler());
+        map.put("com.ibm.icu.impl.RelativeDateFormat", new FormatTests.RelativeDateFormatHandler());
+    }
+    
+    public SerializableTest()
+    {
+        super(
+            new String[] {
+                "com.ibm.icu.dev.test.serializable.CoverageTest",
+                "com.ibm.icu.dev.test.serializable.CompatibilityTest"},
+            "All Serializable Tests"
+        );
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Serializable";
+
+    public static void main(String[] args)
+    {
+        SerializableTest test = new SerializableTest();
+        
+        test.run(args);
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java b/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
new file mode 100644
index 0000000..e9602ee
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
@@ -0,0 +1,61 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import com.ibm.icu.util.VersionInfo;
+
+import java.net.URL;
+
+/**
+ * This class writes the test objects for each class to a file. The work is
+ * actually done by the superclass, CoverageTest. This class just constructs
+ * a CoverageTest w/ a non-null path, which tells it to write the data.
+ * 
+ */
+public class SerializableWriter extends CoverageTest
+{
+    public SerializableWriter(String path)
+    {
+        super(path);
+    }
+    
+    private static String folderName()
+    {
+        int major = VersionInfo.ICU_VERSION.getMajor();
+        int minor = VersionInfo.ICU_VERSION.getMinor();
+        int milli = VersionInfo.ICU_VERSION.getMilli();
+        int micro = VersionInfo.ICU_VERSION.getMicro();
+        StringBuffer result = new StringBuffer("ICU_");
+        
+        result.append(major);
+        result.append(".");
+        result.append(minor);
+        
+        if (milli != 0 || micro != 0) {
+            result.append(".");
+            result.append(milli);
+            
+            if (micro != 0) {
+                result.append(".");
+                result.append(micro);
+            }
+        }
+        
+        return result.toString();
+    }
+
+    public static void main(String[] args)
+    {
+        URL dataURL = SerializableWriter.class.getResource("data");
+        CoverageTest test = new SerializableWriter(dataURL.getPath() + "/" + folderName());
+        
+        test.run(args);
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..721be48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b5de397eefd05cdb5ecfe7e7c9108d9cd850a96ea2740cf0178b48c4a6c0638
+size 12256
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..b8d739c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2bc70590d22e004cea558e5bc71e43f5b925288a2e2e740e48427bae9a340c5
+size 12689
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..c28e485
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85080987b76bbe950592d735125d1526dd68d2b538466bdcf06d827ba0fcf31d
+size 6733
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..f112136
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86eb5737bc3bc555f85379d4aa4e5fbf903351db0efbff9ee09d8650911f91fb
+size 182280
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..8417cf7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:026cebad3937dacb0f55f6efd24a3d7db7cfa412900a21530b2e09c3104fe987
+size 26103
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..84705ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3bdef98ad9923682fcad505f170258dd8b1471d2f9cb4b57131e6ac09d2a2456
+size 48532
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..37f5dec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:779e20204f5f6a3b379465e335a75d0cff6ade0d77f0fbee1f12b43488c8c25a
+size 25664
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..0c39d21
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2122124de82ddc63b662abbcd0b3b8c18c04b775550578a574fe696d0e978b7c
+size 6664
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..465598f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26aef5c5eda1e07b967f08d00060f00b07a34b6a4829014ed0f33ae7663d1c21
+size 3173
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..9229786
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fb0b44db5ed3fee64df4250fbe550115d24c24494e905504788cb1979e48dd4
+size 641
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..fecd40b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7920d829dfcd660cf5d3e8d3be3f9f96d646cd0348b13abd80c4f133989a63a
+size 2822
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..977493d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a15603db38fbde9844fe1d51eb7560083a06ffa2d4eb040e9eae05b3d92c7a84
+size 53971
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..19cc06e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f336250a58d6e11bad571dfdafdeb85b9484ecdac4744c0bd937629ab996e0c
+size 177586
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..696d498
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11ce2fd0fee67d510bc04f081133d34d056e822ad53508f2ed7ba6b2d6816551
+size 11226
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..a385edb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3071e5ec6a9402b1ee0cfba0e76569e4837f6bcad7bf0f06990bfb31a259eb2e
+size 2344
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..c1c10a5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ba63ec43c4c645d55515d62fd5b69db161ae483592079724846f4076fee1179
+size 3146
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..264e18d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cef07a4abc3ee47d6da1e30c2eb54cbad3e3f084b855ad6a1ab2ccbcea8738fd
+size 2195
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..bc49f0ef9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c78d05c4c1368cdb159baa02ce1fd5c8c295376836079c0b33d775cc6cf7fff1
+size 2964
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..23fa977
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98726d41fcbe24957d2b69a66f20887ad757821d691d48e971851d9c64aa7972
+size 351
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..d250567
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0b5d9815dfe33d1ff5750e3d6a636c2cd8470ab28040b13f2f5794f33d30643
+size 2256
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..6ca9cb0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d6d08a9c7399943f4071b56c9a8e6a1fe28bfe6a1c89e1321d9aea1064ea818
+size 3155
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..1c7e037
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79b6497c56ac9a378be6c80d85948d03ef556ae1c6768cccf6d713fd4f1e42f7
+size 2827
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..b88e222
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:961e85416181d3bd7ec8a642f7936e8058ffd92f99f648d9702fbd51971296ff
+size 3011
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..4fc4cfc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da2b4b2c760719e70756a8bd0415c1bb8c7f8e7719350e77fb32c03118722e41
+size 2342
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..0ed26b9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b83a9c167b5e1813fce7ee704aa9ce29cde617a29960d857d03b20a547ad4c1f
+size 1265
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..9f44be5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96b9a210f9d06c06622c5798015d42674903a07411b002d7b2f1a39f66f2fc93
+size 1288
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..11923e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d95304fb413153d2d62a811ad7e4d11a95017a50e627fce7c60336ecbc0ba26
+size 392
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..22aaf7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3c90e8f037a12ebc528117d98370fbc97a342335fc71c861d79c1d569c1c2d0
+size 6798
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat
new file mode 100644
index 0000000..371c631
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6fd6014f58302f177fa23f9a691bbd5f14212b5651eeadbfed7e87e568a654f5
+size 1686
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 0000000..ea39424
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569297bacccf8858c59dd944f7cc5b80a337255b239cee67d87f54feddacc1d9
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..1da2aef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01877ace6f13be237bced72453b55685cbd0742e5ae79cbf9627392286de488c
+size 13642
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 0000000..05d388b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ddf741c9ae0e5b8e6f7892926b195ca13d8b59dcafd12a2bd7b24b3a4325f7b7
+size 9670
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..be4cec5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8994f28289befdf4b5b995cb6a905dc3a29af86127dd15b2297433d4042ab7f
+size 14075
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
new file mode 100644
index 0000000..236f236
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be22e604c7544d27c107537930361e3526870a26c1a249e2d9f41ddc1d3239f5
+size 383
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..8dd87ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32568cce8657f4965c0713b602e41fe802a7c7b7030fbe4bec2431e3a5553fe2
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
new file mode 100644
index 0000000..80067c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db0685c5127565fd7ce341056104753b6599826d54d06fde4f9e4f2bd734544f
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..c92e303
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4db90f5b42aa7d0c5cc8addd259f3b5de0f92c3a99ec45ec6a02bbd7919a7b02
+size 112689
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..7dc7929
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd32ccc491187bbac29f204c9a20e206e8974c68deb590989440fcd1889261b8
+size 24454
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat
new file mode 100644
index 0000000..47c1ebf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e237efb9ce85357480d9dd5d8d0911ce008744c51778c42e21c9d206a8252095
+size 792
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..cc55899
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9fc4257fec856dbeeb6300237a44667c3d474cb420eec71dc8682ccaa242dd9
+size 47710
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..703795c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28960d211ae3502f72b82a5ea32cb14181c4f1c12a69c8baec68ab75994917a5
+size 25976
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..84508e4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f4eb96301da935b7cc6bf481d41509d9b399aa9137f4fdf524cc84e75aa791a
+size 7188
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..bdcc1f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c6bc7e731c503b37bfb666e1d90bf1cc49acaf970ac2a8f3e3918029d2595fb
+size 3161
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat
new file mode 100644
index 0000000..052ec8cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a6147211fa9bf91b682c75e5bf6609143e9b41ff952f3349fb05833dc798584
+size 249
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..6c00c11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4f400ed3b53b1491583ec31dbc21f46dc5d28660e72f1c4408a05a65648f4e3
+size 759
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat
new file mode 100644
index 0000000..f430468
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00baeb776002e737189513debb0d9634dcdf6821a55f9d138ddd207d5bdd90b6
+size 449
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..184a2ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03c90c2634cf06f8af8889216fa0f9a5150d9db1ba68c82cadbf98da15789490
+size 2921
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat
new file mode 100644
index 0000000..2794d1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bca493a34e00d438e394276c1e98537b5046cc6cb912d8987b16708732a9dd10
+size 3384
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat
new file mode 100644
index 0000000..5fb674e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b75ca3d7e12f9ac313ed19aed5d7f33a221e0ec36e610c8be256e2bf3abdc746
+size 2627
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..c2ff172
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98ad4729c2afa820e0cc4c6a9446257fefca834696e377357d35bc494bdaaf92
+size 53194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..4afe1b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:023a7eecdf3a0490a01aea867e53ab49c2a8e17d60a7ef8d51c2debd44d4e71e
+size 122834
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..e40d7e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4faaa5ac4732315928186cca4c34d00b1e7bc6603cf894c1014036f92bc20d94
+size 26674
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
new file mode 100644
index 0000000..74ffe4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b2e5cb7636e2141e6d937d0fdf2d3b824a4319ece4c2b1bfd294299519d6987
+size 898
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..d55aca0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d0b4d29818c4f042068513e9becd54d7c7d6542b1adfd9d7b516effb99fa0c7
+size 2402
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..0f20440
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea0ef63b18485d11cc37ba06b82ff2298958dd57652c6697b1fecca5c1e25290
+size 3316
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..34cca1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4900b2a4ab7c715bb3ef31fac3d6cd1e7d11fa7cdd5ddf3196937f3e9b9a9ad
+size 2253
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..63ff746
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:390ee95377769c20e4ac907d41e63a9330973e350c15503b12f66f440a2bd8ae
+size 2942
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..23fa977
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98726d41fcbe24957d2b69a66f20887ad757821d691d48e971851d9c64aa7972
+size 351
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat
new file mode 100644
index 0000000..7f31f10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95e547b62781546a7fa18adbb52bb14a39f766f24c3f136789504cd32d72570b
+size 324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..ffe7f39
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61e34b6c6663a872ebbc1b1a77a9928d72798ff603de8b4c65ee75aec3dd7e43
+size 2314
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..424526b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b0eff3437a10b019df6ae9b3185dd2620dcbba29cab431b7fe687dc2e215a64
+size 3325
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..0332370
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1594fefa176e9ae5fcd32cefb5ad693b8030acb1fc75f0e2eff222e15ab6be73
+size 2885
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..601b987
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8d04d3518db89ab37efd8ef33ee12c875444dcdf1c58be35dca5e47f2e3b4c1
+size 2194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat
new file mode 100644
index 0000000..faea30f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e87a78c208e64f9a1a791d6a207f1372700b8cb66e8c06296d3ca918bb8d115
+size 241
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..025c8c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54fd7bdaf0d3fbe145e56a90768d425ff84de250faf0f11d958d1fb45bb05382
+size 3111
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..cc1cc8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf77fb3b4353164d61687af6ba10cef11c001f70c785b7f91f9624d3d6d2e80
+size 2440
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat
new file mode 100644
index 0000000..9537c28
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f811ee6e4cd76878e700c3eafb0627b3b0cb0524668dc844b0c9b055e649e682
+size 1401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..faa1a48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09693cbb7c8d078a5d9696dda0a410916c41f2503320ba76e7d3449b996d8e26
+size 1152
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..872bead
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:213b9dfbf87d4def0e67db118b9af9ebf3ca2914b86a2438de96adf0d3db7a60
+size 2487
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
new file mode 100644
index 0000000..20c8438
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250f185d9bedd33f314c4e04498c43f9c5d921a086fae76b720e53b23db6b822
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..cb919cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09321171f7b79255974c2745e8efe5d18da5be4f80ede16f4451220523bd8762
+size 1271
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..7bbeb2a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2097a6ceea62f53f9176b507ba431c7a379d5fc5d33f8b5f123dfb9e3b37246d
+size 365
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..bf7febd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02ae6d813c667e5c03fe0e2d384cf82bd161d9857354c1d1a783e9a35489eef5
+size 22324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 0000000..f6f93f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9df7044f6572b83cff5a8d04fde369eaa03e05c9716a687bb44a8a98b1ef32ff
+size 1897
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat
new file mode 100644
index 0000000..371c631
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6fd6014f58302f177fa23f9a691bbd5f14212b5651eeadbfed7e87e568a654f5
+size 1686
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 0000000..ea39424
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569297bacccf8858c59dd944f7cc5b80a337255b239cee67d87f54feddacc1d9
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat
new file mode 100644
index 0000000..d26405a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e63ce463b9a06b27f37ec0eb559b40540f55f9c363db1a32052b4db85797dc84
+size 2929
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..ab004dc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:914c7b93800814116e0eb2ee8c74b96071cbdffde729fb2bf0d86d821a208fd0
+size 13730
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 0000000..a2100ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81065f4f18fb65dd69a43c7081aa0ea93615bec88c10bb85f76198c66e6417fd
+size 10019
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..2d3869e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d0a5788de3c755cf4d2ab7a0c8c0c41a7e87b67a2039ecedd00b6d0cb2ebaca8
+size 14163
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat
new file mode 100644
index 0000000..236f236
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be22e604c7544d27c107537930361e3526870a26c1a249e2d9f41ddc1d3239f5
+size 383
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..8dd87ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32568cce8657f4965c0713b602e41fe802a7c7b7030fbe4bec2431e3a5553fe2
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat
new file mode 100644
index 0000000..80067c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db0685c5127565fd7ce341056104753b6599826d54d06fde4f9e4f2bd734544f
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..0fd9fb6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:125a737100e73a642f4281fbc8a563e80366526f068d378904b0c7f032074bfe
+size 110463
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..9d8d6a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15709ccd0c198a15a1764561d85e33846cb43c72b8160d63d078a1d2e50bd990
+size 22081
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat
new file mode 100644
index 0000000..47c1ebf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e237efb9ce85357480d9dd5d8d0911ce008744c51778c42e21c9d206a8252095
+size 792
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..7d60239
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:618468ea64ce34f41423307cda4c09693dff7624e29382a20a9276a40fdbf22c
+size 44237
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..5286644
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:460d36ca4e0222f7ee234b4b6295d2205cba80f4eacab289acdf3255c8c9503f
+size 22503
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat
new file mode 100644
index 0000000..a598558
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:554712abddf6ebcdbd1a650eefada4374f90ac56732c2855708767919e4ee8c1
+size 8997
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
new file mode 100644
index 0000000..e660cb3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b5593c919fb29bab1d8ca90b6bd69db8669386ec4088da85b8a8ec93d1d8acd
+size 270
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat
new file mode 100644
index 0000000..9c23f8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89fdd93effcada78b63179de69200d84f0e14aeb93fa1241bf39c83f8a03f3eb
+size 572
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..0ecea63
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0cab5ef21db0dadf0f3c59ca6bfae37d798b24df193d16a5c75ca2f0a43bc8e9
+size 7181
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..bdcc1f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c6bc7e731c503b37bfb666e1d90bf1cc49acaf970ac2a8f3e3918029d2595fb
+size 3161
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat
new file mode 100644
index 0000000..052ec8cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a6147211fa9bf91b682c75e5bf6609143e9b41ff952f3349fb05833dc798584
+size 249
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..6c00c11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4f400ed3b53b1491583ec31dbc21f46dc5d28660e72f1c4408a05a65648f4e3
+size 759
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat
new file mode 100644
index 0000000..f430468
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00baeb776002e737189513debb0d9634dcdf6821a55f9d138ddd207d5bdd90b6
+size 449
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..08bcabd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73acf53856c55403ddae17ae9a487fce3b6b94cc581578a2ebc113a05f0969f0
+size 2921
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat
new file mode 100644
index 0000000..7f97e47
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f843c4a4b61b51d903a9664b8e0474c4bdc70be966066ed10797c8c8ae5448de
+size 3401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat
new file mode 100644
index 0000000..3c81bbe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00be589e07cd6334e38abe822b865562a41d7f46de10e2ac27d3797fd71cb16f
+size 2980
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..c2ff172
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98ad4729c2afa820e0cc4c6a9446257fefca834696e377357d35bc494bdaaf92
+size 53194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..f607717
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26678c923ccd371c6e6ad4a15647f1460ee2bc5ca98f50cbe34f2bcf3fd79bb9
+size 119361
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..e40d7e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4faaa5ac4732315928186cca4c34d00b1e7bc6603cf894c1014036f92bc20d94
+size 26674
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat
new file mode 100644
index 0000000..3c68a89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58a2924f58df0bf9c02eb46a62daa386bf59a3d300b58cce157eef716596e762
+size 408
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat
new file mode 100644
index 0000000..74ffe4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b2e5cb7636e2141e6d937d0fdf2d3b824a4319ece4c2b1bfd294299519d6987
+size 898
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..1f2d7b2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8c3b5d0501ad0110501f01a4d8aa1ddacd573d755fa0eb3eefee2d1690fb4f2
+size 2402
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..05b3c77
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3100e17cb6a9c65cfa1ef09c25ee1d3c890db486128898df86421abe9f013786
+size 3316
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..1154345
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a08b55d6da351f680960fb36e2564a2a37e8866399bfa2925be2aa060d68392
+size 2253
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..0f54029
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0085bba20777e886a1a53cccf910f98c960d232697d27b6fda534c2e60598872
+size 2842
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..eacaa8c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b31014c3d019e89f0575a637c0ad756c00ecababe2aa009ee338b59911cd403
+size 349
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat
new file mode 100644
index 0000000..dde6bea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23ea1aac56dc3581502d59b006be4e963c0dcf7d7fa9d205480523c5c2c9b34a
+size 139
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat
new file mode 100644
index 0000000..7f31f10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95e547b62781546a7fa18adbb52bb14a39f766f24c3f136789504cd32d72570b
+size 324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..77a9cc9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49929366e329211dacc571fd5605d83f6438e02e01cd9d3cd8043011df877a6e
+size 2308
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..cc81bc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:737a9db8f28e6f983b4ca1ee6441e5f4e83323946863e889dd9b202a3ceaaad6
+size 3325
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..36fca03
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:332d93706a0a6ec1583991844b0b55b4bd564bf94a2dc84f4612fdf1077dc29e
+size 2885
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..7175c8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f033679c3f2a5179bc16d4e70095ef231c4e45eb426315e13e39169c907f124d
+size 2194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat
new file mode 100644
index 0000000..faea30f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e87a78c208e64f9a1a791d6a207f1372700b8cb66e8c06296d3ca918bb8d115
+size 241
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..5f22985
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7efacde0ae05f831c2a6a5051918d43c6144d07f17c3b025589e0bc74a2f564c
+size 3111
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..db4c6be
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52c7f5b0dd264e77e793408c4e802f162c9e9dab5ede44f12adee4faac0d0474
+size 2440
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat
new file mode 100644
index 0000000..9537c28
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f811ee6e4cd76878e700c3eafb0627b3b0cb0524668dc844b0c9b055e649e682
+size 1401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..faa1a48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09693cbb7c8d078a5d9696dda0a410916c41f2503320ba76e7d3449b996d8e26
+size 1152
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..398a23b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a792686b660e7a90598ba70dc00c00cccdc044852709be90c26a882945ea677
+size 2487
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
new file mode 100644
index 0000000..20c8438
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250f185d9bedd33f314c4e04498c43f9c5d921a086fae76b720e53b23db6b822
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..cb919cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09321171f7b79255974c2745e8efe5d18da5be4f80ede16f4451220523bd8762
+size 1271
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..7bbeb2a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2097a6ceea62f53f9176b507ba431c7a379d5fc5d33f8b5f123dfb9e3b37246d
+size 365
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..bf7febd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02ae6d813c667e5c03fe0e2d384cf82bd161d9857354c1d1a783e9a35489eef5
+size 22324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 0000000..f6f93f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9df7044f6572b83cff5a8d04fde369eaa03e05c9716a687bb44a8a98b1ef32ff
+size 1897
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
new file mode 100644
index 0000000..fdbd8d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -0,0 +1,503 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Regression test for Arabic shaping.
+ */
+public class ArabicShapingRegTest extends TestFmwk {
+
+    /* constants copied from ArabicShaping for convenience */
+
+    public static final int LENGTH_GROW_SHRINK = 0;
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    public static final int LETTERS_NOOP = 0;
+    public static final int LETTERS_SHAPE = 8;
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    public static final int DIGITS_NOOP = 0;
+    public static final int DIGITS_EN2AN = 0x20;
+    public static final int DIGITS_AN2EN = 0x40;
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+//    private static final int DIGITS_RESERVED = 0xa0;
+
+    public static final int DIGIT_TYPE_AN = 0;
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    public static class TestData {
+        public int type;
+        public String source;
+        public int flags;
+        public String result;
+        public int length;
+        public Class error;
+
+        public static final int STANDARD = 0;
+        public static final int PREFLIGHT = 1;
+        public static final int ERROR = 2;
+
+        public static TestData standard(String source, int flags, String result) {
+            return new TestData(STANDARD, source, flags, result, 0, null);
+        }
+
+        public static TestData preflight(String source, int flags, int length) {
+            return new TestData(PREFLIGHT, source, flags, null, length, null);
+        }
+
+        public static TestData error(String source, int flags, Class error) {
+            return new TestData(ERROR, source, flags, null, 0, error);
+        }
+
+        private TestData(int type, String source, int flags, String result, int length, Class error) {
+            this.type = type;
+            this.source = source;
+            this.flags = flags;
+            this.result = result;
+            this.length = length;
+            this.error = error;
+        }
+
+        private static final String[] typenames = { "standard", "preflight", "error" };
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append("[\n");
+            buf.append(typenames[type]);
+            buf.append(",\n");
+            if (source == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(source));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(Integer.toHexString(flags));
+            buf.append(",\n");
+            if (result == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(result));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(length);
+            buf.append(",\n");
+            buf.append(error);
+            buf.append(']');
+            return buf.toString();
+        }
+    }
+
+    private static final String lamAlefSpecialVLTR =
+        "\u0020\u0646\u0622\u0644\u0627\u0020" +
+         "\u0646\u0623\u064E\u0644\u0627\u0020" +
+         "\u0646\u0627\u0670\u0644\u0627\u0020" +
+         "\u0646\u0622\u0653\u0644\u0627\u0020" +
+         "\u0646\u0625\u0655\u0644\u0627\u0020" +
+         "\u0646\u0622\u0654\u0644\u0627\u0020" +
+         "\uFEFC\u0639";
+
+    private static final String tashkeelSpecialVLTR =
+        "\u064A\u0628\u0631\u0639\u0020" +
+        "\u064A\u0628\u0651\u0631\u064E\u0639\u0020" +
+        "\u064C\u064A\u0628\u0631\u064F\u0639\u0020" +
+        "\u0628\u0670\u0631\u0670\u0639\u0020" +
+        "\u0628\u0653\u0631\u0653\u0639\u0020" +
+        "\u0628\u0654\u0631\u0654\u0639\u0020" +
+        "\u0628\u0655\u0631\u0655\u0639\u0020";
+
+    private static final String logicalUnshape =
+        "\u0020\u0020\u0020\uFE8D\uFEF5\u0020\uFEE5\u0020\uFE8D\uFEF7\u0020" +
+        "\uFED7\uFEFC\u0020\uFEE1\u0020\uFE8D\uFEDF\uFECC\uFEAE\uFE91\uFEF4" +
+        "\uFE94\u0020\uFE8D\uFEDF\uFEA4\uFEAE\uFE93\u0020\u0020\u0020\u0020";
+
+    private static final String numSource =
+        "\u0031" +  /* en:1 */
+        "\u0627" +  /* arabic:alef */
+        "\u0032" +  /* en:2 */
+        "\u06f3" +  /* an:3 */
+        "\u0061" +  /* latin:a */
+        "\u0034";   /* en:4 */
+
+    private static final TestData[] standardTests = {
+        /* lam alef special visual ltr */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* TASHKEEL */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* tashkeel special visual ltr */
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe77\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe79\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe76\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe78\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        /* logical unshape */
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0646\u0020\u0627\u0644\u0623\u0642\u0644\u0627" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642\u0644\u0627\u0020" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_GROW_SHRINK,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020\u0020\u0020\u0020"),
+
+        /* numbers */
+        TestData.standard(numSource,
+                          DIGITS_EN2AN | DIGIT_TYPE_AN,
+                          "\u0661\u0627\u0662\u06f3\u0061\u0664"),
+        TestData.standard(numSource,
+                          DIGITS_AN2EN | DIGIT_TYPE_AN_EXTENDED,
+                          "\u0031\u0627\u0032\u0033\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN,
+                          "\u0031\u0627\u0662\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED,
+                          "\u06f1\u0627\u06f2\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u0661\u0627\u0032\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u06f1\u0627\u0032\u06f3\u0061\u06f4"),
+
+        /* no-op */
+        TestData.standard(numSource,
+                          0,
+                          numSource),
+    };
+
+    private static final TestData[] preflightTests = {
+        /* preflight */
+        TestData.preflight("\u0644\u0627",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           1),
+
+        TestData.preflight("\u0644\u0627\u0031",
+                           DIGITS_EN2AN | DIGIT_TYPE_AN_EXTENDED | LENGTH_GROW_SHRINK,
+                           3),
+
+        TestData.preflight("\u0644\u0644",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           2),
+
+        TestData.preflight("\ufef7",
+                           LETTERS_UNSHAPE | LENGTH_GROW_SHRINK,
+                           2),
+    };
+
+    private static final TestData[] errorTests = {
+        /* bad data */
+        TestData.error("\u0020\ufef7\u0644\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_NEAR,
+                       ArabicShapingException.class),
+
+        TestData.error("\u0020\ufef7",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_END,
+                       ArabicShapingException.class),
+
+        TestData.error("\ufef7\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                       ArabicShapingException.class),
+
+        /* bad options */
+        TestData.error("\ufef7",
+                       0xffffffff,
+                       IllegalArgumentException.class),
+
+        TestData.error("\ufef7",
+                       LETTERS_UNSHAPE | LENGTH_GROW_SHRINK,
+                       ArabicShapingException.class),
+
+        TestData.error(null,
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_END,
+                       IllegalArgumentException.class),
+    };
+
+    public void testStandard() {
+        for (int i = 0; i < standardTests.length; ++i) {
+            TestData test = standardTests[i];
+
+            Exception ex = null;
+            String result = null;
+            ArabicShaping shaper = null;
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                result = shaper.shape(test.source);
+            }
+            catch(MissingResourceException e){
+                throw e;
+            }
+            catch (IllegalStateException ie){
+                warnln("IllegalStateException: "+ie.toString());
+                return;
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (!test.result.equals(result)) {
+                reportTestFailure(i, test, shaper, result, ex);
+            }
+        }
+    }
+
+    public void testPreflight() {
+        for (int i = 0; i < preflightTests.length; ++i) {
+            TestData test = preflightTests[i];
+
+            Exception ex = null;
+            char src[] = null;
+            int len = 0;
+            ArabicShaping shaper = null;
+
+            if (test.source != null) {
+                src = test.source.toCharArray();
+            }
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                len = shaper.shape(src, 0, src.length, null, 0, 0);
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (test.length != len) {
+                reportTestFailure(i, test, shaper, test.source, ex);
+            }
+        }
+    }
+
+    public void testError() {
+        for (int i = 0; i < errorTests.length; ++i) {
+            TestData test = errorTests[i];
+
+            Exception ex = null;
+            char src[] = null;
+            int len = 0;
+            ArabicShaping shaper = null;
+
+            if (test.source != null) {
+                src = test.source.toCharArray();
+                len = src.length;
+            }
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                shaper.shape(src, 0, len);
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (!test.error.isInstance(ex)) {
+                reportTestFailure(i, test, shaper, test.source, ex);
+            }
+        }
+    }
+
+    public void testEquals()
+    {
+        ArabicShaping as1 = new ArabicShaping(LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR);
+        ArabicShaping as2 = new ArabicShaping(LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR);
+        ArabicShaping as3 = new ArabicShaping(LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_BEGINNING);
+
+        if (! as1.equals(as1)) {
+            err("as1: " + as1 + " does not equal itself!\n");
+        }
+
+        if (! as1.equals(as2)) {
+            err("as1: " + as1 + ", as2: " + as2 + " are not equal, but should be.\n");
+        }
+
+        if (as1.equals(as3)) {
+            err("as1: " + as1 + ", as3: " + as3 + " are equal but should not be.\n");
+        }
+    }
+
+    public void reportTestFailure(int index, TestData test, ArabicShaping shaper, String result, Exception error) {
+        if (noData() && error != null && error instanceof MissingResourceException ) {
+            warnln(error.getMessage());
+        }
+
+        StringBuffer buf = new StringBuffer();
+        buf.append("*** test failure ***\n");
+        buf.append("index: " + index + "\n");
+        buf.append("test: " + test + "\n");
+        buf.append("shaper: " + shaper + "\n");
+        buf.append("result: " + escapedString(result) + "\n");
+        buf.append("error: " + error + "\n");
+
+        if (result != null && test.result != null && !test.result.equals(result)) {
+            for (int i = 0; i < Math.max(test.result.length(), result.length()); ++i) {
+                String temp = Integer.toString(i);
+                if (temp.length() < 2) {
+                    temp = " ".concat(temp);
+                }
+                char trg = i < test.result.length() ? test.result.charAt(i) : '\uffff';
+                char res = i < result.length() ? result.charAt(i) : '\uffff';
+
+                buf.append("[" + temp + "] ");
+                buf.append(escapedString("" + trg) + " ");
+                buf.append(escapedString("" + res) + " ");
+                if (trg != res) {
+                    buf.append("***");
+                }
+                buf.append("\n");
+            }
+        }
+        err(buf.toString());
+    }
+
+    private static String escapedString(String str) {
+        if (str == null) {
+            return null;
+        }
+
+        StringBuffer buf = new StringBuffer(str.length() * 6);
+        for (int i = 0; i < str.length(); ++i) {
+            char ch = str.charAt(i);
+            buf.append("\\u");
+            if (ch < 0x1000) {
+                buf.append('0');
+            }
+            if (ch < 0x0100) {
+                buf.append('0');
+            }
+            if (ch < 0x0010) {
+                buf.append('0');
+            }
+            buf.append(Integer.toHexString(ch));
+        }
+        return buf.toString();
+    }
+
+    public static void main(String[] args) {
+        try {
+            new ArabicShapingRegTest().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
new file mode 100644
index 0000000..027335c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
@@ -0,0 +1,286 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Interactive test for Arabic shaping.
+ * Invoke from a command line passing args and strings.  Use '-help' to see description of arguments.
+ */
+public class ArabicShapingTest {
+    private static final int COPY = 0;
+    private static final int INPLACE = 1;
+    private static final int STRING = 2;
+
+    public static final void main(String[] args) {
+        int testtype = COPY;
+        int options = 0;
+        int ss = 0;
+        int sl = -1;
+        int ds = 0;
+        int dl = -1;
+        String text = "$22.4 test 123 \ufef6\u0644\u0622 456 \u0664\u0665\u0666!";
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.charAt(0) == '-') {
+                String opt = arg.substring(1);
+                String val = opt;
+                int index = arg.indexOf(':');
+                if (index != -1) {
+                    opt = opt.substring(0, Math.min(index, 3));
+                    val = arg.substring(index + 1);
+                }
+                
+                if (opt.equalsIgnoreCase("len")) {
+                    options &= ~ArabicShaping.LENGTH_MASK;
+                    if (val.equalsIgnoreCase("gs")) {
+                        options |= ArabicShaping.LENGTH_GROW_SHRINK;
+                    } else if (val.equalsIgnoreCase("sn")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_NEAR;
+                    } else if (val.equalsIgnoreCase("se")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_END;
+                    } else if (val.equalsIgnoreCase("sb")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_BEGINNING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dir")) {
+                    options &= ~ArabicShaping.TEXT_DIRECTION_MASK;
+                    if (val.equalsIgnoreCase("log")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_LOGICAL;
+                    } else if (val.equalsIgnoreCase("vis")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_VISUAL_LTR;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("let")) {
+                    options &= ~ArabicShaping.LETTERS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.LETTERS_NOOP;
+                    } else if (val.equalsIgnoreCase("sh")) {
+                        options |= ArabicShaping.LETTERS_SHAPE;
+                    } else if (val.equalsIgnoreCase("un")) {
+                        options |= ArabicShaping.LETTERS_UNSHAPE;
+                    } else if (val.equalsIgnoreCase("ta")) {
+                        options |= ArabicShaping.LETTERS_SHAPE_TASHKEEL_ISOLATED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dig")) {
+                    options &= ~ArabicShaping.DIGITS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.DIGITS_NOOP;
+                    } else if (val.equalsIgnoreCase("ea")) {
+                        options |= ArabicShaping.DIGITS_EN2AN;
+                    } else if (val.equalsIgnoreCase("ae")) {
+                        options |= ArabicShaping.DIGITS_AN2EN;
+                    } else if (val.equalsIgnoreCase("lr")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_LR;
+                    } else if (val.equalsIgnoreCase("al")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_AL;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("typ")) {
+                    options &= ~ArabicShaping.DIGIT_TYPE_MASK;
+                    if (val.equalsIgnoreCase("an")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN;
+                    } else if (val.equalsIgnoreCase("ex")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN_EXTENDED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dst")) {
+                    try {
+                        ds = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dln")) {
+                    try {
+                        dl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sst")) {
+                    try {
+                        ss = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sln")) {
+                    try {
+                        sl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("tes")) {
+                    if (val.equalsIgnoreCase("cp")) {
+                        testtype = COPY;
+                    } else if (val.equalsIgnoreCase("ip")) {
+                        testtype = INPLACE;
+                    } else if (val.equalsIgnoreCase("st")) {
+                        testtype = STRING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("help")) {
+                    System.out.println(usage);
+                } else {
+                    throwOptError(opt);
+                }
+            } else {
+                // assume text
+                text = parseText(arg);
+            }
+        }
+
+        if (sl < 0) {
+            sl = text.length() - ss;
+            System.out.println("sl defaulting to " + sl);
+        }
+        if (dl < 0) {
+            dl = 2 * sl;
+            System.out.println("dl defaulting to " + dl);
+        }
+
+        ArabicShaping shaper = new ArabicShaping(options);
+        System.out.println("shaper: " + shaper);
+
+        char[] src = text.toCharArray();
+        System.out.println(" input: '" + escapedText(src, ss, sl) + "'");
+        if (testtype != STRING) {
+            System.out.println("start: " + ss + " length: " + sl + " total length: " + src.length);
+        }
+
+        int result = -1;
+        char[] dest = null;
+
+        try {
+            switch (testtype) {
+            case COPY:
+                dest = new char[ds + dl];
+                result = shaper.shape(src, ss, sl, dest, ds, dl);
+                break;
+
+            case INPLACE:
+                shaper.shape(src, ss, sl);
+                ds = ss;
+                result = sl;
+                dest = src;
+                break;
+
+            case STRING:
+                dest = shaper.shape(text).toCharArray();
+                ds = 0;
+                result = dest.length;
+                break;
+            }
+
+            System.out.println("output: '" + escapedText(dest, ds, result) + "'");
+            System.out.println("length: " + result);
+            if (ds != 0 || result != dest.length) {
+                System.out.println("full output: '" + escapedText(dest, 0, dest.length) + "'");
+            }
+        }
+        catch (ArabicShapingException e) {
+            System.out.println("Caught ArabicShapingException");
+            System.out.println(e);
+        }
+        catch (Exception e) {
+            System.out.println("Caught Exception");
+            System.out.println(e);
+        }
+    }
+
+    private static void throwOptError(String opt) {
+        throwUsageError("unknown option: " + opt);
+    }
+
+    private static void throwValError(String opt, String val) {
+        throwUsageError("unknown value: " + val + " for option: " + opt);
+    }
+
+    private static void throwUsageError(String message) {
+        StringBuffer buf = new StringBuffer("*** usage error ***\n");
+        buf.append(message);
+        buf.append("\n");
+        buf.append(usage);
+        throw new Error(buf.toString());
+    }
+
+    private static final String usage = 
+        "Usage: [option]* [text]\n" +
+        "  where option is in the format '-opt[:val]'\n" +
+        "  options are:\n" +
+        "    -len:[gs|sn|se|sb]    (length: grow/shrink, spaces near, spaces end, spaces beginning)\n" +
+        "    -dir:[log|vis]        (direction: logical, visual)\n" +
+        "    -let:[no|sh|un|ta]    (letters: noop, shape, unshape, tashkeel)\n" +
+        // "    -let:[no|sh|un]       (letters: noop, shape, unshape)\n" +
+        "    -dig:[no|ea|ae|lr|al] (digits: noop, en2an, an2en, en2an_lr, en2an_al)\n" +
+        "    -typ:[an|ex]          (digit type: arabic, arabic extended)\n" +
+        "    -dst:#                (dest start: [integer])\n" +
+        "    -dln:#                (dest length (max size): [integer])\n" +
+        "    -sst:#                (source start: [integer])\n" +
+        "    -sln:#                (source length: [integer])\n" +
+        "    -tes:[cp|ip|st]       (test type: copy, in place, string)\n" +
+        "    -help                 (print this help message)\n" +
+        "  text can contain unicode escape values in the format '\\uXXXX' only\n";
+        
+    private static String escapedText(char[] text, int start, int length) {
+        StringBuffer buf = new StringBuffer();
+        for (int i = start, e = start + length; i < e; ++i) {
+            char ch = text[i];
+            if (ch < 0x20 || ch > 0x7e) {
+                buf.append("\\u");
+                if (ch < 0x1000) {
+                    buf.append('0');
+                }
+                if (ch < 0x100) {
+                    buf.append('0');
+                }
+                if (ch < 0x10) {
+                    buf.append('0');
+                }
+                buf.append(Integer.toHexString(ch));
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+
+    private static String parseText(String text) {
+        // process unicode escapes (only)
+        StringBuffer buf = new StringBuffer();
+        char[] chars = text.toCharArray();
+        for (int i = 0; i < chars.length; ++i) {
+            char ch = chars[i];
+            if (ch == '\\') {
+                if ((i < chars.length - 1) &&
+                    (chars[i+1] == 'u')) {
+                    int val = Integer.parseInt(text.substring(i+2, i+6), 16);
+                    buf.append((char)val);
+                    i += 5;
+                } else {
+                    buf.append('\\');
+                }
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java b/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
new file mode 100644
index 0000000..65acd89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -0,0 +1,311 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeMap;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @author limaoyu
+ * 
+ */
+public class IDNAConformanceTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new IDNAConformanceTest().run(args);
+    }
+
+    public void TestConformance() {
+
+        TreeMap inputData = null;
+        
+        try {
+            inputData = ReadInput.getInputData();
+        } catch (UnsupportedEncodingException e) {
+            errln(e.getMessage());
+            return;
+        } catch (IOException e) {
+            errln(e.getMessage());
+            return;
+        }
+        
+        Set keyMap = inputData.keySet();
+        for (Iterator iter = keyMap.iterator(); iter.hasNext();) {
+            Long element = (Long) iter.next();
+            HashMap tempHash = (HashMap) inputData.get(element);
+
+            //get all attributes from input data
+            String passfail = (String) tempHash.get("passfail");
+            String desc = (String) tempHash.get("desc");
+            String type = (String) tempHash.get("type");
+            String namebase = (String) tempHash.get("namebase");
+            String nameutf8 = (String) tempHash.get("nameutf8");
+            String namezone = (String) tempHash.get("namezone");
+            String failzone1 = (String) tempHash.get("failzone1");
+            String failzone2 = (String) tempHash.get("failzone2");
+
+            //they maybe includes <*> style unicode
+            namebase = stringReplace(namebase);
+            namezone = stringReplace(namezone);
+
+            String result = null;
+            boolean failed = false;
+
+            if ("toascii".equals(tempHash.get("type"))) {
+                
+                //get the result
+                try {
+                    //by default STD3 rules are not used, but if the description
+                    //includes UseSTD3ASCIIRules, we will set it.
+                    if (desc.toLowerCase().indexOf(
+                            "UseSTD3ASCIIRules".toLowerCase()) == -1) {
+                        result = IDNA.convertIDNToASCII(namebase,
+                                IDNA.ALLOW_UNASSIGNED).toString();
+                    } else {
+                        result = IDNA.convertIDNToASCII(namebase,
+                                IDNA.USE_STD3_RULES).toString();
+                    }
+                } catch (StringPrepParseException e2) {
+                    //errln(e2.getMessage());
+                    failed = true;
+                }
+                
+                
+                if ("pass".equals(passfail)) {
+                    if (!namezone.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        errln("\t pass fail standard is pass, but failed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        logln("\tpassed");
+                    }
+                }
+
+                if ("fail".equals(passfail)) {
+                    if (failed) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        logln("passed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        errln("\t pass fail standard is fail, but no exception thrown out");
+                    }
+                }
+            } else if ("tounicode".equals(tempHash.get("type"))) {
+                try {
+                    //by default STD3 rules are not used, but if the description
+                    //includes UseSTD3ASCIIRules, we will set it.
+                    if (desc.toLowerCase().indexOf(
+                            "UseSTD3ASCIIRules".toLowerCase()) == -1) {
+                        result = IDNA.convertIDNToUnicode(namebase,
+                                IDNA.ALLOW_UNASSIGNED).toString();
+                    } else {
+                        result = IDNA.convertIDNToUnicode(namebase,
+                                IDNA.USE_STD3_RULES).toString();
+                    }
+                } catch (StringPrepParseException e2) {
+                    //errln(e2.getMessage());
+                    failed = true;
+                }
+                if ("pass".equals(passfail)) {
+                    if (!namezone.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        errln("\t Did not get the expected result. Expected: " + prettify(namezone) + " Got: " + prettify(result));
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        logln("\tpassed");
+                    }
+                }
+
+                if ("fail".equals(passfail)) {
+                    if (failed || namebase.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        logln("\tpassed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        errln("\t pass fail standard is fail, but no exception thrown out");
+                    }
+                }
+            } else {
+                continue;
+            }
+        }
+    }
+
+    /**
+     * Print log message.
+     * @param desc
+     * @param namebase
+     * @param nameutf8
+     * @param namezone
+     * @param failzone1
+     * @param failzone2
+     * @param result
+     */
+    private void printInfo(String desc, String namebase,
+            String nameutf8, String namezone, String failzone1,
+            String failzone2, String result, String type, String passfail) {
+        logln("desc:\t" + desc);
+        log("\t");
+        logln("type:\t" + type);
+        log("\t");
+        logln("pass fail standard:\t" + passfail);
+        log("\t");
+        logln("namebase:\t" + namebase);
+        log("\t");
+        logln("nameutf8:\t" + nameutf8);
+        log("\t");
+        logln("namezone:\t" + namezone);
+        log("\t");
+        logln("failzone1:\t" + failzone1);
+        log("\t");
+        logln("failzone2:\t" + failzone2);
+        log("\t");
+        logln("result:\t" + result);
+    }
+
+    /**
+     * Change unicode string from <00AD> to \u00AD, for the later is accepted
+     * by Java
+     * @param str String including <*> style unicode
+     * @return \\u String
+     */
+    private static String stringReplace(String str) {
+
+        StringBuffer result = new StringBuffer();
+        char[] chars = str.toCharArray();
+        StringBuffer sbTemp = new StringBuffer();
+        for (int i = 0; i < chars.length; i++) {
+            if ('<' == chars[i]) {
+                sbTemp = new StringBuffer();
+                while ('>' != chars[i + 1]) {
+                    sbTemp.append(chars[++i]);
+                }
+                /*
+                 * The unicode sometimes is larger then \uFFFF, so have to use
+                 * UTF16.
+                 */
+                int toBeInserted = Integer.parseInt(sbTemp.toString(), 16);
+                if ((toBeInserted >> 16) == 0) {
+                    result.append((char) toBeInserted);
+                } else {
+                    String utf16String = UTF16.valueOf(toBeInserted);
+                    char[] charsTemp = utf16String.toCharArray();
+                    for (int j = 0; j < charsTemp.length; j++) {
+                        result.append((char) charsTemp[j]);
+                    }
+                }
+            } else if ('>' == chars[i]) {//end when met with '>'
+                continue;
+            } else {
+                result.append(chars[i]);
+            }
+
+        }
+        return result.toString();
+    }
+
+    /**
+     * This class is used to read test data from TestInput file.
+     * 
+     * @author limaoyu
+     *  
+     */
+    public static class ReadInput {
+
+        public static TreeMap getInputData() throws IOException,
+                UnsupportedEncodingException {
+
+            TreeMap result = new TreeMap();
+            try {
+                BufferedReader in = TestUtil.getDataReader("IDNATestInput.txt", "utf-8");
+
+                String tempStr = null;
+                int records = 0;
+                boolean firstLine = true;
+                HashMap hashItem = new HashMap();
+
+                while ((tempStr = in.readLine()) != null) {
+                    //ignore the first line if it's "====="
+                    if (firstLine) {
+                        if ("=====".equals(tempStr))
+                            continue;
+                        firstLine = false;
+                    }
+
+                    //Ignore empty line
+                    if ("".equals(tempStr)) {
+                        continue;
+                    }
+
+                    String attr = "";//attribute
+                    String body = "";//value
+
+                    //get attr and body from line input, and then set them into each hash item.                    
+                    int postion = tempStr.indexOf(":");
+                    if (postion > -1) {
+                        attr = tempStr.substring(0, postion).trim();
+                        body = tempStr.substring(postion + 1).trim();
+
+                        //deal with combination lines when end with '\'
+                        while (null != body && body.length() > 0
+                                && '\\' == body.charAt(body.length() - 1)) {
+                            body = body.substring(0, body.length() - 1);
+                            body += "\n";
+                            tempStr = in.readLine();
+                            body += tempStr;
+                        }
+                    }
+                    //push them to hash item
+                    hashItem.put(attr, body);
+
+                    //if met "=====", it means this item is finished
+                    if ("=====".equals(tempStr)) {
+                        //set them into result, using records number as key
+                        result.put(new Long(records), hashItem);
+                        //create another hash item and continue
+                        hashItem = new HashMap();
+                        records++;
+                        continue;
+                    }
+                }
+            } catch (UnsupportedEncodingException e) {
+                throw e;
+            } catch (FileNotFoundException e) {
+                throw e;
+            } catch (IOException e) {
+                throw e;
+            }
+            return result;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java b/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
new file mode 100644
index 0000000..94f3aea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
@@ -0,0 +1,429 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class IDNAReference {
+    
+    private static char[] ACE_PREFIX = new char[]{ 0x0078,0x006E,0x002d,0x002d } ;
+    private static final int ACE_PREFIX_LENGTH  = 4;
+
+    private static final int MAX_LABEL_LENGTH   = 63;
+    private static final int HYPHEN             = 0x002D;
+    private static final int CAPITAL_A          = 0x0041;
+    private static final int CAPITAL_Z          = 0x005A;
+    private static final int LOWER_CASE_DELTA   = 0x0020;
+    private static final int FULL_STOP          = 0x002E;
+
+
+    public static final int DEFAULT             = 0x0000;
+    public static final int ALLOW_UNASSIGNED    = 0x0001;
+    public static final int USE_STD3_RULES      = 0x0002;
+    public static final NamePrepTransform transform = NamePrepTransform.getInstance();
+  
+    private static boolean startsWithPrefix(StringBuffer src){
+        boolean startsWithPrefix = true;
+
+        if(src.length() < ACE_PREFIX_LENGTH){
+            return false;
+        }
+        for(int i=0; i<ACE_PREFIX_LENGTH;i++){
+            if(toASCIILower(src.charAt(i)) != ACE_PREFIX[i]){
+                startsWithPrefix = false;
+            }
+        }
+        return startsWithPrefix;
+    }
+
+    private static char toASCIILower(char ch){
+        if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
+            return (char)(ch + LOWER_CASE_DELTA);
+        }
+        return ch;
+    }
+
+    private static StringBuffer toASCIILower(StringBuffer src){
+        StringBuffer dest = new StringBuffer();
+        for(int i=0; i<src.length();i++){
+            dest.append(toASCIILower(src.charAt(i)));
+        }
+        return dest;
+    }
+
+    private static int compareCaseInsensitiveASCII(StringBuffer s1, StringBuffer s2){
+        char c1,c2;
+        int rc;
+        for(int i =0;/* no condition */;i++) {
+            /* If we reach the ends of both strings then they match */
+            if(i == s1.length()) {
+                return 0;
+            }
+
+            c1 = s1.charAt(i);
+            c2 = s2.charAt(i);
+        
+            /* Case-insensitive comparison */
+            if(c1!=c2) {
+                rc=toASCIILower(c1)-toASCIILower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+        }
+    }
+    
+    private static int getSeparatorIndex(char[] src,int start, int limit){
+        for(; start<limit;start++){
+            if(NamePrepTransform.isLabelSeparator(src[start])){
+                return start;
+            }
+        }
+        // we have not found the separator just return length
+        return start;
+    }
+    
+    private static boolean isLDHChar(int ch){
+        // high runner case
+        if(ch>0x007A){
+            return false;
+        }
+        //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A]
+        if( (ch==0x002D) || 
+            (0x0030 <= ch && ch <= 0x0039) ||
+            (0x0041 <= ch && ch <= 0x005A) ||
+            (0x0061 <= ch && ch <= 0x007A)
+          ){
+            return true;
+        }
+        return false;
+    }
+        
+    public static StringBuffer convertToASCII(String src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    public static StringBuffer convertToASCII(StringBuffer src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    public static StringBuffer convertToASCII(UCharacterIterator srcIter, int options)
+                throws StringPrepParseException{
+    
+        char[] caseFlags = null;
+    
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+
+        int ch;
+        // step 1
+        while((ch = srcIter.next())!= UCharacterIterator.DONE){
+            if(ch> 0x7f){
+                srcIsASCII = false;
+            }
+        }
+        int failPos = -1;
+        srcIter.setToStart();
+        StringBuffer processOut = null;
+        // step 2 is performed only if the source contains non ASCII
+        if(!srcIsASCII){
+            // step 2
+            processOut =  transform.prepare(srcIter,options);
+        }else{
+            processOut = new StringBuffer(srcIter.getText());
+        }
+        int poLen = processOut.length();
+        if(poLen==0){
+            throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+        }
+        StringBuffer dest = new StringBuffer();
+        
+        // reset the variable to verify if output of prepare is ASCII or not
+        srcIsASCII = true;
+        
+        // step 3 & 4
+        for(int j=0;j<poLen;j++ ){
+            ch=processOut.charAt(j);
+            if(ch > 0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                // here we do not assemble surrogates
+                // since we know that LDH code points
+                // are in the ASCII range only
+                srcIsLDH = false;
+                failPos = j;
+            }
+        }
+    
+        if(useSTD3ASCIIRules == true){
+            // verify 3a and 3b
+            if( srcIsLDH == false /* source contains some non-LDH characters */
+                || processOut.charAt(0) ==  HYPHEN 
+                || processOut.charAt(processOut.length()-1) == HYPHEN){
+
+                /* populate the parseError struct */
+                if(srcIsLDH==false){
+                     throw new StringPrepParseException( "The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                             (failPos>0) ? (failPos-1) : failPos);
+                }else if(processOut.charAt(0) == HYPHEN){
+                    throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),0);
+     
+                }else{
+                     throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                              (poLen>0) ? poLen-1 : poLen);
+
+                }
+            }
+        }
+        if(srcIsASCII){
+            dest =  processOut;
+        }else{
+            // step 5 : verify the sequence does not begin with ACE prefix
+            if(!startsWithPrefix(processOut)){
+
+                //step 6: encode the sequence with punycode
+                StringBuffer punyout = PunycodeReference.encode(processOut,caseFlags);
+                
+                // convert all codepoints to lower case ASCII
+                StringBuffer lowerOut = toASCIILower(punyout);
+
+                //Step 7: prepend the ACE prefix
+                dest.append(ACE_PREFIX,0,ACE_PREFIX_LENGTH);
+                //Step 6: copy the contents in b2 into dest
+                dest.append(lowerOut);
+            }else{
+                throw new StringPrepParseException("The input does not start with the ACE Prefix.",
+                                   StringPrepParseException.ACE_PREFIX_ERROR,processOut.toString(),0);
+            }
+        }
+        if(dest.length() > MAX_LABEL_LENGTH){
+            throw new StringPrepParseException("The labels in the input are too long. Length > 64.", 
+                                    StringPrepParseException.LABEL_TOO_LONG_ERROR,dest.toString(),0);
+        }
+        return dest;
+    }
+    
+    public static StringBuffer convertIDNtoASCII(UCharacterIterator iter,int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(iter.getText(), options);          
+    }
+    public static StringBuffer convertIDNtoASCII(StringBuffer str,int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(str.toString(), options);          
+    }
+    public static StringBuffer convertIDNToASCII(String src,int options)
+            throws StringPrepParseException{
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex = 0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            //make sure this is not a root label separator.
+            if(!(label.length()==0 && sepIndex==srcArr.length)){
+                UCharacterIterator iter = UCharacterIterator.getInstance(label);
+                result.append(convertToASCII(iter,options));
+            }
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        return result;
+    }
+
+    public static StringBuffer convertToUnicode(String src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+    public static StringBuffer convertToUnicode(StringBuffer src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }   
+    public static StringBuffer convertToUnicode(UCharacterIterator iter, int options)
+           throws StringPrepParseException{
+
+        char[] caseFlags = null;
+        
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+               
+        int failPos = -1;
+        int ch;
+        int saveIndex = iter.getIndex();
+        // step 1: find out if all the codepoints in src are ASCII  
+        while((ch=iter.next())!= UCharacterIterator.DONE){
+            if(ch>0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                failPos = iter.getIndex();
+                srcIsLDH = false;
+            }
+        }
+        StringBuffer processOut;
+        
+        if(srcIsASCII == false){
+            // step 2: process the string
+            iter.setIndex(saveIndex);
+            processOut = transform.prepare(iter,options);
+
+        }else{
+            //just point to source
+            processOut = new StringBuffer(iter.getText());
+        }
+        // TODO:
+        // The RFC states that 
+        // <quote>
+        // ToUnicode never fails. If any step fails, then the original input
+        // is returned immediately in that step.
+        // </quote>
+        
+        //step 3: verify ACE Prefix
+        if(startsWithPrefix(processOut)){
+
+           //step 4: Remove the ACE Prefix
+           String temp = processOut.substring(ACE_PREFIX_LENGTH,processOut.length());
+
+           //step 5: Decode using punycode
+           StringBuffer decodeOut = PunycodeReference.decode(new StringBuffer(temp),caseFlags);
+        
+            //step 6:Apply toASCII
+            StringBuffer toASCIIOut = convertToASCII(decodeOut, options);
+
+            //step 7: verify
+            if(compareCaseInsensitiveASCII(processOut, toASCIIOut) !=0){
+                throw new StringPrepParseException("The verification step prescribed by the RFC 3491 failed",
+                                          StringPrepParseException.VERIFICATION_ERROR); 
+             }
+
+            //step 8: return output of step 5
+            return decodeOut;
+            
+        }else{
+            // verify that STD3 ASCII rules are satisfied
+            if(useSTD3ASCIIRules == true){
+                if( srcIsLDH == false /* source contains some non-LDH characters */
+                    || processOut.charAt(0) ==  HYPHEN 
+                    || processOut.charAt(processOut.length()-1) == HYPHEN){
+    
+                        if(srcIsLDH==false){
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),
+                                                     (failPos>0) ? (failPos-1) : failPos);
+                        }else if(processOut.charAt(0) == HYPHEN){
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                                     processOut.toString(),0);
+         
+                        }else{
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                                     processOut.toString(),
+                                                     processOut.length());
+    
+                        }
+                  }
+            }
+            // just return the source
+            return new StringBuffer(iter.getText());
+        }  
+    }
+    public static StringBuffer convertIDNToUnicode(UCharacterIterator iter, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(iter.getText(), options);
+    }
+    public static StringBuffer convertIDNToUnicode(StringBuffer str, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(str.toString(), options);
+    }
+    public static StringBuffer convertIDNToUnicode(String src, int options)
+        throws StringPrepParseException{
+            
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            if(label.length()==0 && sepIndex!=srcArr.length ){
+                throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+            }
+            UCharacterIterator iter = UCharacterIterator.getInstance(label);
+            result.append(convertToUnicode(iter,options));
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        return result;
+    }
+    //  TODO: optimize
+    public static int compare(StringBuffer s1, StringBuffer s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.toString(), options);
+        StringBuffer s2Out = convertIDNToASCII(s2.toString(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    //  TODO: optimize
+    public static int compare(String s1, String s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1, options);
+        StringBuffer s2Out = convertIDNToASCII(s2, options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    //  TODO: optimize
+    public static int compare(UCharacterIterator i1, UCharacterIterator i2, int options)
+        throws StringPrepParseException{
+        if(i1==null || i2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(i1.getText(), options);
+        StringBuffer s2Out = convertIDNToASCII(i2.getText(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java b/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
new file mode 100644
index 0000000..4d1a0a2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
@@ -0,0 +1,150 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * This is a dumb implementation of NFS4 profiles. It is a direct port of
+ * C code, does not use Object Oriented principles. Quick and Dirty implementation
+ * for testing.
+ */
+public final class NFS4StringPrep {
+
+    private StringPrep nfscss = null;
+    private StringPrep nfscsi = null;
+    private StringPrep nfscis = null;
+    private StringPrep nfsmxp = null;
+    private StringPrep nfsmxs = null;
+    //singleton instance
+    private static final NFS4StringPrep prep = new NFS4StringPrep();
+    
+
+    private  NFS4StringPrep (){
+        ClassLoader loader = NFS4StringPrep.class.getClassLoader();
+        try{
+            InputStream  nfscsiFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscsi.spp");
+            nfscsi = new StringPrep(nfscsiFile);
+            nfscsiFile.close();
+            
+            InputStream  nfscssFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscss.spp");
+            nfscss = new StringPrep(nfscssFile);
+            nfscssFile.close();
+            
+            InputStream  nfscisFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscis.spp");
+            nfscis = new StringPrep(nfscisFile);
+            nfscisFile.close();
+            
+            InputStream  nfsmxpFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfsmxp.spp");
+            nfsmxp = new StringPrep(nfsmxpFile);
+            nfsmxpFile.close();
+            
+            InputStream  nfsmxsFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfsmxs.spp");
+            nfsmxs = new StringPrep(nfsmxsFile);
+            nfsmxsFile.close();
+        }catch(IOException e){
+            throw new MissingResourceException(e.toString(),"","");
+        }
+    }
+    
+    private static byte[] prepare(byte[] src, StringPrep strprep)
+                throws StringPrepParseException, UnsupportedEncodingException{
+        String s = new String(src, "UTF-8");
+        UCharacterIterator iter =  UCharacterIterator.getInstance(s);
+        StringBuffer out = strprep.prepare(iter,StringPrep.DEFAULT);
+        return out.toString().getBytes("UTF-8");
+    }
+    
+    public static byte[] cs_prepare(byte[] src, boolean isCaseSensitive)
+                         throws StringPrepParseException, UnsupportedEncodingException{
+        if(isCaseSensitive == true ){
+            return prepare(src, prep.nfscss);
+        }else{
+            return prepare(src, prep.nfscsi);
+        }
+    }
+    
+    public static byte[] cis_prepare(byte[] src)
+                         throws IOException, StringPrepParseException, UnsupportedEncodingException{
+        return prepare(src, prep.nfscis);
+    }  
+    
+    /* sorted array for binary search*/
+    private static final String[] special_prefixes={
+        "ANONYMOUS",    
+        "AUTHENTICATED",
+        "BATCH", 
+        "DIALUP", 
+        "EVERYONE", 
+        "GROUP",
+        "INTERACTIVE",  
+        "NETWORK", 
+        "OWNER",
+    };
+
+
+    /* binary search the sorted array */
+    private static final int findStringIndex(String[] sortedArr,String target){
+
+        int left, middle, right,rc;
+
+        left =0;
+        right= sortedArr.length-1;
+
+        while(left <= right){
+            middle = (left+right)/2;
+            rc= sortedArr[middle].compareTo(target);
+        
+            if(rc<0){
+                left = middle+1;
+            }else if(rc >0){
+                right = middle -1;
+            }else{
+                return middle;
+            }
+        }
+        return -1;
+    }
+    private static final char AT_SIGN = '@';
+    
+    public static byte[] mixed_prepare(byte[] src)
+                         throws IOException, StringPrepParseException, UnsupportedEncodingException{
+        String s = new String(src, "UTF-8");
+        int index = s.indexOf(AT_SIGN);
+        StringBuffer out = new StringBuffer();
+
+        if(index > -1){
+            /* special prefixes must not be followed by suffixes! */
+            String prefixString = s.substring(0,index);
+            int i= findStringIndex(special_prefixes, prefixString);
+            String suffixString = s.substring(index+1, s.length());
+            if(i>-1 && !suffixString.equals("")){
+                throw new StringPrepParseException("Suffix following a special index", StringPrepParseException.INVALID_CHAR_FOUND);
+            }
+            UCharacterIterator prefix = UCharacterIterator.getInstance(prefixString);
+            UCharacterIterator suffix = UCharacterIterator.getInstance(suffixString);
+            out.append(prep.nfsmxp.prepare(prefix,StringPrep.DEFAULT));
+            out.append(AT_SIGN); // add the delimiter
+            out.append(prep.nfsmxs.prepare(suffix, StringPrep.DEFAULT));
+        }else{
+            UCharacterIterator iter = UCharacterIterator.getInstance(s);
+            out.append(prep.nfsmxp.prepare(iter,StringPrep.DEFAULT));
+            
+        }
+       return out.toString().getBytes("UTF-8");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java b/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
new file mode 100644
index 0000000..6fb202c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
@@ -0,0 +1,166 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.Transliterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class NamePrepTransform {
+    
+    private static final NamePrepTransform transform = new NamePrepTransform();
+    
+    private UnicodeSet labelSeparatorSet;
+    private UnicodeSet prohibitedSet;
+    private UnicodeSet unassignedSet;
+    private Transliterator mapTransform;
+    public static final int NONE = 0;
+    public static final int ALLOW_UNASSIGNED = 1;
+    
+    private NamePrepTransform(){
+        // load the resource bundle
+        ICUResourceBundle bundle = (ICUResourceBundle)ICUResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","idna_rules", NamePrepTransform.class.getClassLoader(), true);
+        String  mapRules      = bundle.getString("MapNoNormalization");
+        mapRules             += bundle.getString("MapNFKC");
+        mapTransform          = Transliterator.createFromRules("CaseMap",mapRules,Transliterator.FORWARD);
+        labelSeparatorSet     = new UnicodeSet(bundle.getString("LabelSeparatorSet"));
+        prohibitedSet         = new UnicodeSet(bundle.getString("ProhibitedSet"));
+        unassignedSet         = new UnicodeSet(bundle.getString("UnassignedSet"));
+    }
+    
+    public static final NamePrepTransform getInstance(){
+        return transform;
+    }
+    public static boolean isLabelSeparator(int ch){
+        return transform.labelSeparatorSet.contains(ch);
+    }
+
+     /*
+       1) Map -- For each character in the input, check if it has a mapping
+          and, if so, replace it with its mapping.  
+
+       2) Normalize -- Possibly normalize the result of step 1 using Unicode
+          normalization. 
+
+       3) Prohibit -- Check for any characters that are not allowed in the
+          output.  If any are found, return an error.  
+
+       4) Check bidi -- Possibly check for right-to-left characters, and if
+          any are found, make sure that the whole string satisfies the
+          requirements for bidirectional strings.  If the string does not
+          satisfy the requirements for bidirectional strings, return an
+          error.  
+          [Unicode3.2] defines several bidirectional categories; each character
+           has one bidirectional category assigned to it.  For the purposes of
+           the requirements below, an "RandALCat character" is a character that
+           has Unicode bidirectional categories "R" or "AL"; an "LCat character"
+           is a character that has Unicode bidirectional category "L".  Note
+
+
+           that there are many characters which fall in neither of the above
+           definitions; Latin digits (<U+0030> through <U+0039>) are examples of
+           this because they have bidirectional category "EN".
+
+           In any profile that specifies bidirectional character handling, all
+           three of the following requirements MUST be met:
+
+           1) The characters in section 5.8 MUST be prohibited.
+
+           2) If a string contains any RandALCat character, the string MUST NOT
+              contain any LCat character.
+
+           3) If a string contains any RandALCat character, a RandALCat
+              character MUST be the first character of the string, and a
+              RandALCat character MUST be the last character of the string.
+    */
+    public StringBuffer prepare(UCharacterIterator src,
+                                       int options)
+                                       throws StringPrepParseException{
+             return prepare(src.getText(),options);
+    }
+    private String map ( String src, int options)
+                                throws StringPrepParseException{
+        // map 
+        boolean allowUnassigned =  ((options & ALLOW_UNASSIGNED)>0);
+        String caseMapOut = transform.mapTransform.transliterate(src);    
+        UCharacterIterator iter = UCharacterIterator.getInstance(caseMapOut);
+        int ch;
+        while((ch=iter.nextCodePoint())!=UCharacterIterator.DONE){                          
+            if(transform.unassignedSet.contains(ch)==true && allowUnassigned ==false){
+                throw new StringPrepParseException("An unassigned code point was found in the input",
+                                         StringPrepParseException.UNASSIGNED_ERROR);
+            }
+        }
+        return caseMapOut;
+    }
+    public StringBuffer prepare(String src,int options)
+                                   throws StringPrepParseException{
+ 
+        int ch;
+        String mapOut = map(src,options);
+        UCharacterIterator iter = UCharacterIterator.getInstance(mapOut);
+
+        int direction=UCharacterDirection.CHAR_DIRECTION_COUNT,
+            firstCharDir=UCharacterDirection.CHAR_DIRECTION_COUNT;    
+        int rtlPos=-1, ltrPos=-1;
+        boolean rightToLeft=false, leftToRight=false;
+           
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+
+
+            if(transform.prohibitedSet.contains(ch)==true && ch!=0x0020){
+                throw new StringPrepParseException("A prohibited code point was found in the input",
+                                         StringPrepParseException.PROHIBITED_ERROR,
+                                         iter.getText(),iter.getIndex());
+            }
+
+            direction = UCharacter.getDirection(ch);
+            if(firstCharDir == UCharacterDirection.CHAR_DIRECTION_COUNT){
+                firstCharDir = direction;
+            }
+            if(direction == UCharacterDirection.LEFT_TO_RIGHT){
+                leftToRight = true;
+                ltrPos = iter.getIndex()-1;
+            }
+            if(direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC){
+                rightToLeft = true;
+                rtlPos = iter.getIndex()-1;
+            }
+        }           
+
+        // satisfy 2
+        if( leftToRight == true && rightToLeft == true){
+            throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                     StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),(rtlPos>ltrPos) ? rtlPos : ltrPos);
+        }
+
+        //satisfy 3
+        if( rightToLeft == true && 
+            !((firstCharDir == UCharacterDirection.RIGHT_TO_LEFT || firstCharDir == UCharacterDirection.RIGHT_TO_LEFT_ARABIC) &&
+            (direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC))
+           ){
+            throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                      StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),(rtlPos>ltrPos) ? rtlPos : ltrPos);
+        }
+        
+        return new StringBuffer(mapOut);
+
+      }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java b/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
new file mode 100644
index 0000000..c94c42e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+
+/*
+ * 
+Disclaimer and license
+
+    Regarding this entire document or any portion of it (including
+    the pseudocode and C code), the author makes no guarantees and
+    is not responsible for any damage resulting from its use.  The
+    author grants irrevocable permission to anyone to use, modify,
+    and distribute it in any way that does not diminish the rights
+    of anyone else to use, modify, and distribute it, provided that
+    redistributed derivative works do not contain misleading author or
+    version information.  Derivative works need not be licensed under
+    similar terms.
+
+punycode.c 0.4.0 (2001-Nov-17-Sat)
+http://www.cs.berkeley.edu/~amc/idn/
+Adam M. Costello
+http://www.nicemice.net/amc/
+*/
+
+package com.ibm.icu.dev.test.stringprep;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * The implementation is direct port of C code in the RFC
+ */
+
+public final class PunycodeReference {
+    /*** punycode status codes */
+    public static final int punycode_success=0;
+    public static final int punycode_bad_input=1;   /* Input is invalid.                       */
+    public static final int punycode_big_output=2;  /* Output would exceed the space provided. */
+    public static final int punycode_overflow =3;    /* Input needs wider integers to process.  */
+    
+    /*** Bootstring parameters for Punycode ***/
+    private static final int base = 36;
+    private static final int tmin = 1;
+    private static final int tmax = 26;
+    private static final int skew = 38;
+    private static final int damp = 700;
+    private static final int initial_bias = 72;
+    private static final int initial_n = 0x80;
+    private static final int delimiter = 0x2D;
+    
+    
+//    private static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    
+    /* basic(cp) tests whether cp is a basic code point: */
+    private static boolean basic(int cp){
+        return (char)(cp) < 0x80;
+    }
+
+    /* delim(cp) tests whether cp is a delimiter: */
+    private static boolean delim(int cp){
+        return ((cp) == delimiter);
+    }
+
+    /* decode_digit(cp) returns the numeric value of a basic code */
+    /* point (for use in representing integers) in the range 0 to */
+    /* base-1, or base if cp is does not represent a value.       */
+
+    private static int decode_digit(int cp)
+    {
+      return  cp - 48 < 10 ? cp - 22 :  cp - 65 < 26 ? cp - 65 :
+              cp - 97 < 26 ? cp - 97 :  base;
+    }
+
+    /* encode_digit(d,flag) returns the basic code point whose value      */
+    /* (when used for representing integers) is d, which needs to be in   */
+    /* the range 0 to base-1.  The lowercase form is used unless flag is  */
+    /* nonzero, in which case the uppercase form is used.  The behavior   */
+    /* is undefined if flag is nonzero and digit d has no uppercase form. */
+
+    private static char encode_digit(int d, int flag)
+    {
+      return (char) (d + 22 + (75 * ((d < 26) ? 1 : 0) - (((flag != 0) ? 1 :0) << 5)));
+      /*  0..25 map to ASCII a..z or A..Z */
+      /* 26..35 map to ASCII 0..9         */
+    }
+
+    /* flagged(bcp) tests whether a basic code point is flagged */
+    /* (uppercase).  The behavior is undefined if bcp is not a  */
+    /* basic code point.                                        */
+
+    private static boolean flagged(int bcp){
+         return ((bcp) - 65 < 26);
+    }
+
+    /* encode_basic(bcp,flag) forces a basic code point to lowercase */
+    /* if flag is zero, uppercase if flag is nonzero, and returns    */
+    /* the resulting code point.  The code point is unchanged if it  */
+    /* is caseless.  The behavior is undefined if bcp is not a basic */
+    /* code point.                                                   */
+
+    private static char encode_basic(int bcp, int flag)
+    {
+      bcp -= (((bcp - 97) < 26) ? 1 :0 ) << 5;
+      boolean mybcp = (bcp - 65 < 26);
+      return (char) (bcp + (((flag==0) && mybcp ) ? 1 : 0 ) << 5);
+    }
+
+    /*** Platform-specific constants ***/
+
+    /* maxint is the maximum value of a punycode_uint variable: */
+    private static long maxint = 0xFFFFFFFFL;
+    /* Because maxint is unsigned, -1 becomes the maximum value. */
+
+    /*** Bias adaptation function ***/
+
+    private static int adapt(int delta, int numpoints, boolean firsttime ){
+      int k;
+
+      delta = (firsttime==true) ? delta / damp : delta >> 1;
+      /* delta >> 1 is a faster way of doing delta / 2 */
+      delta += delta / numpoints;
+
+      for (k = 0;  delta > ((base - tmin) * tmax) / 2;  k += base) {
+        delta /= base - tmin;
+      }
+
+      return k + (base - tmin + 1) * delta / (delta + skew);
+    }
+
+    /*** Main encode function ***/
+
+    public static final int encode(   int input_length,
+                                      int input[],
+                                      char[] case_flags,
+                                      int[] output_length,
+                                      char output[] ){
+      int delta, h, b, out, max_out, bias, j, q, k, t;
+      long m,n;
+      /* Initialize the state: */
+
+      n = initial_n;
+      delta = out = 0;
+      max_out = output_length[0];
+      bias = initial_bias;
+
+      /* Handle the basic code points: */
+
+      for (j = 0;  j < input_length;  ++j) {
+        if (basic(input[j])) {
+          if (max_out - out < 2) return punycode_big_output;
+          output[out++] = (char)
+            (case_flags!=null ?  encode_basic(input[j], case_flags[j]) : input[j]);
+        }
+        /* else if (input[j] < n) return punycode_bad_input; */
+        /* (not needed for Punycode with unsigned code points) */
+      }
+
+      h = b = out;
+
+      /* h is the number of code points that have been handled, b is the  */
+      /* number of basic code points, and out is the number of characters */
+      /* that have been output.                                           */
+
+      if (b > 0) output[out++] = delimiter;
+
+      /* Main encoding loop: */
+
+      while (h < input_length) {
+        /* All non-basic code points < n have been     */
+        /* handled already.  Find the next larger one: */
+
+        for (m = maxint, j = 0;  j < input_length;  ++j) {
+          /* if (basic(input[j])) continue; */
+          /* (not needed for Punycode) */
+          if (input[j] >= n && input[j] < m) m = input[j];
+        }
+
+        /* Increase delta enough to advance the decoder's    */
+        /* <n,i> state to <m,0>, but guard against overflow: */
+
+        if (m - n > (maxint - delta) / (h + 1)) return punycode_overflow;
+        delta += (m - n) * (h + 1);
+        n = m;
+
+        for (j = 0;  j < input_length;  ++j) {
+          /* Punycode does not need to check whether input[j] is basic: */
+          if (input[j] < n /* || basic(input[j]) */ ) {
+            if (++delta == 0) return punycode_overflow;
+          }
+
+          if (input[j] == n) {
+            /* Represent delta as a generalized variable-length integer: */
+
+            for (q = delta, k = base;  ;  k += base) {
+              if (out >= max_out) return punycode_big_output;
+              t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+                  k >= bias + tmax ? tmax : k - bias;
+              if (q < t) break;
+              output[out++] = encode_digit(t + (q - t) % (base - t), 0);
+              q = (q - t) / (base - t);
+            }
+
+            output[out++] = encode_digit(q, (case_flags !=null) ? case_flags[j] : 0);
+            bias = adapt(delta, h + 1, (h == b));
+            delta = 0;
+            ++h;
+          }
+        }
+
+        ++delta;
+        ++n;
+      }
+
+      output_length[0] = out;
+      return punycode_success;
+    }
+    
+    public static final StringBuffer encode(StringBuffer input,char[] case_flags)
+                               throws StringPrepParseException{
+        int[] in = new int[input.length()];
+        int inLen = 0;
+        int ch;
+        StringBuffer result = new StringBuffer();
+        UCharacterIterator iter = UCharacterIterator.getInstance(input);
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            in[inLen++]=ch;
+        }
+
+        int[] outLen =  new int[1];
+        outLen[0] = input.length()*4;
+        char[] output = new char[outLen[0]];
+        int rc = punycode_success;
+        for(;;){
+            rc = encode(inLen,in,case_flags, outLen, output);
+            if(rc==punycode_big_output){
+                outLen[0] = outLen[0]*4;
+                output = new char[outLen[0]];
+                // continue to convert
+                continue;
+            }
+            break;
+        }
+        if(rc==punycode_success){
+            return result.append(output,0,outLen[0]);
+        }
+        getException(rc);
+        return result;
+    }
+
+    private static void getException(int rc) 
+                   throws StringPrepParseException{
+         switch(rc){
+             case punycode_big_output:
+                throw new StringPrepParseException("The output capacity was not sufficient.",StringPrepParseException.BUFFER_OVERFLOW_ERROR);
+             case punycode_bad_input:
+                throw new StringPrepParseException("Illegal char found in the input",StringPrepParseException.ILLEGAL_CHAR_FOUND);
+             case punycode_overflow:
+                throw new StringPrepParseException("Invalid char found in the input",StringPrepParseException.INVALID_CHAR_FOUND);   
+         }
+        
+    }
+    private static final int MAX_BUFFER_SIZE = 100;
+    
+    public static final StringBuffer decode(StringBuffer input,char[] case_flags)
+                               throws StringPrepParseException{
+        char[] in = input.toString().toCharArray();
+        int[] outLen = new int[1];
+        outLen[0] = MAX_BUFFER_SIZE;
+        int[] output = new int[outLen[0]];
+        int rc = punycode_success;
+        StringBuffer result = new StringBuffer();
+        for(;;){
+            rc = decode(input.length(),in, outLen, output,case_flags);
+            if(rc==punycode_big_output){
+                outLen[0] = output.length * 4;
+                output = new int[outLen[0]];
+                continue;
+            }
+            break;
+        }
+        if(rc==punycode_success){
+            for(int i=0; i < outLen[0]; i++ ){
+                UTF16.append(result,output[i]);
+            }
+        }else{
+            getException(rc);
+        }
+        return result;
+    }
+    
+    /*** Main decode function ***/
+    public static final int decode(int input_length,
+                             char[] input,
+                             int[] output_length,
+                             int[] output,
+                             char[] case_flags ){
+      int n, out, i, max_out, bias,
+                     b, j, in, oldi, w, k, digit, t;
+
+      /* Initialize the state: */
+
+      n = initial_n;
+      out = i = 0;
+      max_out = output_length[0];
+      bias = initial_bias;
+
+      /* Handle the basic code points:  Let b be the number of input code */
+      /* points before the last delimiter, or 0 if there is none, then    */
+      /* copy the first b code points to the output.                      */
+
+      for (b = j = 0;  j < input_length;  ++j){
+           if (delim(input[j])==true){
+                b = j;
+           }
+      }
+      if (b > max_out) return punycode_big_output;
+
+      for (j = 0;  j < b;  ++j) {
+        if (case_flags != null) case_flags[out] = (char)(flagged(input[j]) ? 1 : 0);
+        if (!basic(input[j])) return punycode_bad_input;
+        output[out++] = input[j];
+      }
+
+      /* Main decoding loop:  Start just after the last delimiter if any  */
+      /* basic code points were copied; start at the beginning otherwise. */
+
+      for (in = b > 0 ? b + 1 : 0;  in < input_length;  ++out) {
+
+        /* in is the index of the next character to be consumed, and */
+        /* out is the number of code points in the output array.     */
+
+        /* Decode a generalized variable-length integer into delta,  */
+        /* which gets added to i.  The overflow checking is easier   */
+        /* if we increase i as we go, then subtract off its starting */
+        /* value at the end to obtain delta.                         */
+
+        for (oldi = i, w = 1, k = base;  ;  k += base) {
+          if (in >= input_length) return punycode_bad_input;
+          digit = decode_digit(input[in++]);
+          if (digit >= base) return punycode_bad_input;
+          if (digit > (maxint - i) / w) return punycode_overflow;
+          i += digit * w;
+          t = (k <= bias) /* + tmin */ ? tmin :     /* +tmin not needed */
+              (k >= (bias + tmax)) ? tmax : k - bias;
+          if (digit < t) break;
+          if (w > maxint / (base - t)) return punycode_overflow;
+          w *= (base - t);
+        }
+
+        bias = adapt(i - oldi, out + 1, (oldi == 0));
+
+        /* i was supposed to wrap around from out+1 to 0,   */
+        /* incrementing n each time, so we'll fix that now: */
+
+        if (i / (out + 1) > maxint - n) return punycode_overflow;
+        n += i / (out + 1);
+        i %= (out + 1);
+
+        /* Insert n at position i of the output: */
+
+        /* not needed for Punycode: */
+        /* if (decode_digit(n) <= base) return punycode_invalid_input; */
+        if (out >= max_out) return punycode_big_output;
+
+        if (case_flags != null) {
+          System.arraycopy(case_flags, i, case_flags,  i + 1, out - i);
+          /* Case of last character determines uppercase flag: */
+          case_flags[i] = (char)(flagged(input[in - 1]) ? 0 :1);
+        }
+
+        System.arraycopy(output, i, output, i + 1,  (out - i));
+        output[i++] = n;
+      }
+
+      output_length[0] = out;
+      return punycode_success;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestAll.java b/src/com/ibm/icu/dev/test/stringprep/TestAll.java
new file mode 100644
index 0000000..cc7cd21
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestAll.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestAll extends TestGroup {
+   
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+                  new String[] { 
+                      "TestIDNA", 
+                      "TestStringPrep",
+                      "TestIDNARef",
+                      "IDNAConformanceTest",
+                  },
+                  "StringPrep and IDNA test"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "StringPrep";
+   
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestData.java b/src/com/ibm/icu/dev/test/stringprep/TestData.java
new file mode 100644
index 0000000..d1aa4e8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestData.java
@@ -0,0 +1,633 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestData {
+    public static final char[][] unicodeIn ={
+        { 
+            0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, 0x0644,
+            0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, 0x061F
+        },
+        {
+            0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587, 
+           
+        },
+        {
+            0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, 0x0074,
+            0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, 0x00ED, 0x010D,
+            0x0065, 0x0073, 0x006B, 0x0079,
+        },
+        {
+            0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, 0x05D8,
+            0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, 0x05DD, 0x05E2,
+            0x05D1, 0x05E8, 0x05D9, 0x05EA,
+        },
+        {
+            0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, 0x094D,
+            0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, 0x0928, 0x0939,
+            0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, 0x0915, 0x0924, 0x0947,
+            0x0939, 0x0948, 0x0902,
+        },
+        {
+            0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, 0x3092,
+            0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, 0x306E, 0x304B,
+           
+        },
+    /*  
+        {
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C,
+        },
+    */
+        {   
+            0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, 0x043E,
+            0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, 0x043E, 0x0440,
+            0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, 0x0441, 0x0441, 0x043A,
+            0x0438,
+        },
+        {
+            0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, 0x0070,
+            0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, 0x006D, 0x0070,
+            0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, 0x0065, 0x0068, 0x0061,
+            0x0062, 0x006C, 0x0061, 0x0072, 0x0065, 0x006E, 0x0045, 0x0073, 0x0070,
+            0x0061, 0x00F1, 0x006F, 0x006C,
+        },
+        {
+            0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587,
+           
+        },
+        {
+            0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, 0x006B,
+            0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, 0x0063, 0x0068,
+            0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, 0x1EBF, 0x006E, 0x0067,
+            0x0056, 0x0069, 0x1EC7, 0x0074,
+        },
+        {
+            0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F,
+        },
+        {
+            0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, 0x0074,
+            0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, 0x002D, 0x004D,
+            0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053,
+        },
+        {
+            0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, 0x006F,
+            0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, 0x0079, 0x002D,
+            0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, 0x6240,
+        },
+        {
+            0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032,
+        },
+        {
+            0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, 0x3059,
+            0x308B, 0x0035, 0x79D2, 0x524D,
+        },
+        {
+            0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0,
+           
+        },
+        {
+            0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067,
+        },
+        // test non-BMP code points
+        {    
+            0xD800, 0xDF00, 0xD800, 0xDF01, 0xD800, 0xDF02, 0xD800, 0xDF03, 0xD800, 0xDF05,
+            0xD800, 0xDF06, 0xD800, 0xDF07, 0xD800, 0xDF09, 0xD800, 0xDF0A, 0xD800, 0xDF0B,
+           
+        },
+        {
+            0xD800, 0xDF0D, 0xD800, 0xDF0C, 0xD800, 0xDF1E, 0xD800, 0xDF0F, 0xD800, 0xDF16,
+            0xD800, 0xDF15, 0xD800, 0xDF14, 0xD800, 0xDF12, 0xD800, 0xDF10, 0xD800, 0xDF20,
+            0xD800, 0xDF21,
+           
+        },
+        // Greek
+        {
+            0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac
+        },
+        // Maltese
+        {
+            0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,
+            0x0127, 0x0061
+        },
+        // Russian
+        {
+            0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,
+            0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,
+            0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,
+            0x0441, 0x0441, 0x043a, 0x0438
+        },
+   
+    };
+
+    public static final String[] asciiIn = {
+        "xn--egbpdaj6bu4bxfgehfvwxn",
+        "xn--ihqwcrb4cv8a8dqg056pqjye",
+        "xn--Proprostnemluvesky-uyb24dma41a",
+        "xn--4dbcagdahymbxekheh6e0a7fei0b",
+        "xn--i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd",
+        "xn--n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa",
+    /*  "xn--989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c",*/
+        "xn--b1abfaaepdrnnbgefbaDotcwatmq2g4l",
+        "xn--PorqunopuedensimplementehablarenEspaol-fmd56a",
+        "xn--ihqwctvzc91f659drss3x8bo0yb",
+        "xn--TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g",
+        "xn--3B-ww4c5e180e575a65lsy2b",
+        "xn---with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n",
+        "xn--Hello-Another-Way--fc4qua05auwb3674vfr0b",
+        "xn--2-u9tlzr9756bt3uc0v",
+        "xn--MajiKoi5-783gue6qz075azm5e",
+        "xn--de-jg4avhby1noc0d",
+        "xn--d9juau41awczczp",
+        "XN--097CCDEKGHQJK",
+        "XN--db8CBHEJLGH4E0AL",
+        "xn--hxargifdar",                       // Greek
+        "xn--bonusaa-5bb1da",                   // Maltese
+        "xn--b1abfaaepdrnnbgefbadotcwatmq2g4l", // Russian (Cyrillic)
+       };
+
+    public static final String[] domainNames = {
+        "slip129-37-118-146.nc.us.ibm.net",
+        "saratoga.pe.utexas.edu",
+        "dial-120-45.ots.utexas.edu",
+        "woo-085.dorms.waller.net",
+        "hd30-049.hil.compuserve.com",
+        "pem203-31.pe.ttu.edu",
+        "56K-227.MaxTNT3.pdq.net",
+        "dial-36-2.ots.utexas.edu",
+        "slip129-37-23-152.ga.us.ibm.net",
+        "ts45ip119.cadvision.com",
+        "sdn-ts-004txaustP05.dialsprint.net",
+        "bar-tnt1s66.erols.com",
+        "101.st-louis-15.mo.dial-access.att.net",
+        "h92-245.Arco.COM",
+        "dial-13-2.ots.utexas.edu",
+        "net-redynet29.datamarkets.com.ar",
+        "ccs-shiva28.reacciun.net.ve",
+        "7.houston-11.tx.dial-access.att.net",
+        "ingw129-37-120-26.mo.us.ibm.net",
+        "dialup6.austintx.com",
+        "dns2.tpao.gov.tr",
+        "slip129-37-119-194.nc.us.ibm.net",
+        "cs7.dillons.co.uk.203.119.193.in-addr.arpa",
+        "swprd1.innovplace.saskatoon.sk.ca",
+        "bikini.bologna.maraut.it",
+        "node91.subnet159-198-79.baxter.com",
+        "cust19.max5.new-york.ny.ms.uu.net",
+        "balexander.slip.andrew.cmu.edu",
+        "pool029.max2.denver.co.dynip.alter.net",
+        "cust49.max9.new-york.ny.ms.uu.net",
+        "s61.abq-dialin2.hollyberry.com",
+
+    };
+    
+    public static final String[] domainNames1Uni = {
+        "\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "www.\u0121.com",
+        //"www.\u00E0\u00B3\u00AF.com",
+        "www.\u00C2\u00A4.com",
+        "www.\u00C2\u00A3.com",
+        // "\\u0025", //'%' (0x0025) produces U_IDNA_STD3_ASCII_RULES_ERROR
+        // "\\u005C\\u005C", //'\' (0x005C) produces U_IDNA_STD3_ASCII_RULES_ERROR
+        //"@",
+        //"\\u002F",
+        //"www.\\u0021.com",
+        //"www.\\u0024.com",
+        //"\\u003f",
+        // These yeild U_IDNA_PROHIBITED_ERROR
+        //"\\u00CF\\u0082.com",
+        //"\\u00CE\\u00B2\\u00C3\\u009Fss.com",
+        //"\\u00E2\\u0098\\u00BA.com",
+        "\u00C3\u00BC.com"
+    };
+    public static final String[] domainNamesToASCIIOut = {
+        "xn--31b8a2bwd.sanjose.ibm.com",
+        "www.xn--vea.com",
+        //"www.xn--3 -iia80t.com",
+        "www.xn--bba7j.com",
+        "www.xn--9a9j.com",
+       // "\u0025",
+       // "\u005C\u005C",
+       // "@",
+       // "\u002F",
+       // "www.\u0021.com",
+       // "www.\u0024.com",
+       // "\u003f",
+        "xn--14-ria7423a.com"
+        
+    };
+
+    public static final String[] domainNamesToUnicodeOut = {
+        "\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "www.\u0121.com",
+        //"www.\u00E0\u0033\u0020\u0304.com",
+        "www.\u00E2\u00A4.com",
+        "www.\u00E2\u00A3.com",
+       // "\u0025",
+       // "\u005C\u005C",
+       // "@",
+       // "\u002F",
+       // "www.\u0021.com",
+       // "www.\u0024.com",
+       // "\u003f",
+        "\u00E3\u0031\u2044\u0034.com"
+        
+    };
+
+
+    public static class ErrorCase{
+
+        public char[] unicode;
+        public String ascii;
+        public Exception expected;
+        public boolean useSTD3ASCIIRules;
+        public boolean testToUnicode;
+        public boolean testLabel;
+        ErrorCase(char[] uniIn, String asciiIn, Exception ex,
+                   boolean std3, boolean testToUni, boolean testlabel){
+            unicode = uniIn;
+            ascii = asciiIn;
+            expected = ex;
+            useSTD3ASCIIRules = std3;
+            testToUnicode = testToUni;
+            testLabel = testlabel; 
+            
+        }
+    }
+    public static final ErrorCase[] errorCases = {
+          
+        
+        new ErrorCase( new char[]{ 
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0x070F,/*prohibited*/
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+        },
+        "www.xn--8mb5595fsoa28orucya378bqre2tcwop06c5qbw82a1rffmae0361dea96b.com",
+        new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),
+        false, true, true),
+
+        new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x0221, 0x0234/*Unassigned code points*/,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            },
+            "www.xn--6la2bz548fj1gua391bf1gb1n59ab29a7ia.com",
+
+            new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR),
+            false, true, true
+        ),
+       new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x0644, 0x064A, 0x0647,/*Arabic code points. Cannot mix RTL with LTR*/
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            },
+            "www.xn--ghBGI4851OiyA33VqrD6Az86C4qF83CtRv93D5xBk15AzfG0nAgA0578DeA71C.com",
+            new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),
+            false, true, true
+        ),
+        new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                /* labels cannot begin with an HYPHEN */
+                0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x002E, 
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            
+            },
+            "www.xn----b95Ew8SqA315Ao5FbuMlnNmhA.com",
+            new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+            true, true, false
+        ),
+        new ErrorCase( new char[]{ 
+                /* correct ACE-prefix followed by unicode */
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0x0078, 0x006e, 0x002d,0x002d,  /* ACE Prefix */
+                0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x002D, 
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            
+            },
+            /* wrong ACE-prefix followed by valid ACE-encoded ASCII */ 
+            "www.XY-----b91I0V65S96C2A355Cw1E5yCeQr19CsnP1mFfmAE0361DeA96B.com",
+            new StringPrepParseException("",StringPrepParseException.ACE_PREFIX_ERROR),
+            false, false, false
+        ),
+        /* cannot verify U_IDNA_VERIFICATION_ERROR */
+
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C, 
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+          },
+          "www.xn--989AoMsVi5E83Db1D2A355Cv1E0vAk1DwRv93D5xBh15A0Dt30A5JpSD879Ccm6FeA98C.com",
+          new StringPrepParseException("",StringPrepParseException.LABEL_TOO_LONG_ERROR),
+          false, true, true
+        ),  
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0x0030, 0x0644, 0x064A, 0x0647, 0x0031, /* Arabic code points squashed between EN codepoints */
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+          },
+          "www.xn--01-tvdmo.com",
+          new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),
+          false, true, true
+        ),  
+    
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x206C, 0x0644, 0x064A, 0x0647, 0x206D, // Arabic code points squashed between BN codepoints 
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.XN--ghbgi278xia.com",
+          new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),
+          false, true, true
+        ),
+        new ErrorCase( new char[] {
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x002D, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, // HYPHEN at the start of label 
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.-abcde.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[] {
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x002D, // HYPHEN at the end of the label
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.abcde-.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x0040, // Containing non LDH code point
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.abcde@.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+             // zero length label
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+          },
+          "www..com",
+          new StringPrepParseException("",StringPrepParseException.ZERO_LENGTH_LABEL),
+          true, true, false
+        ),
+    };
+
+
+     public static final class ConformanceTestCase{
+         String comment;
+         String input;
+         String output;
+         String profile;
+         int flags;
+         Exception expected;
+         private static byte[] getBytes(String in){
+             if(in==null){
+                 return null;
+             }
+             byte[] bytes = new byte[in.length()];
+             for(int i=0; i < in.length();i++){
+                 bytes[i] = (byte)in.charAt(i);
+             }
+             return bytes;
+         }
+         ConformanceTestCase(String comt, String in, String out,
+                              String prof, int flg, Exception ex)
+                              {
+                                  
+             try{
+                 comment = comt;
+                 byte[] bytes = getBytes(in);
+                 input = new String(bytes,"UTF-8");
+                 bytes = getBytes(out);
+                 output = (bytes==null)? null : new String(bytes,"UTF-8");
+                 profile = prof;
+                 flags = flg;
+                 expected = ex;
+             }catch (Exception e){
+                 e.printStackTrace();
+                 throw new RuntimeException();
+             }
+         }
+       }
+       
+       public static final ConformanceTestCase[] conformanceTestCases =
+       {
+  
+         new ConformanceTestCase(
+           "Case folding ASCII U+0043 U+0041 U+0046 U+0045",
+           "\u0043\u0041\u0046\u0045", "\u0063\u0061\u0066\u0065",
+           "Nameprep", IDNA.DEFAULT, 
+           null
+
+         ),
+         new ConformanceTestCase(
+           "Case folding 8bit U+00DF (german sharp s)",
+           "\u00C3\u009F", "\u0073\u0073", 
+           "Nameprep", IDNA.DEFAULT, 
+           null
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII multibyte space character U+1680",
+           "\u00E1\u009A\u0080", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII 8bit control character U+0085",
+           "\u00C2\u0085", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII multibyte control character U+180E",
+           "\u00E1\u00A0\u008E", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII control character U+1D175",
+           "\u00F0\u009D\u0085\u00B5", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 0 private use character U+F123",
+           "\u00EF\u0084\u00A3", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 15 private use character U+F1234",
+           "\u00F3\u00B1\u0088\u00B4", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 16 private use character U+10F234",
+           "\u00F4\u008F\u0088\u00B4", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-character code point U+8FFFE",
+           "\u00F2\u008F\u00BF\u00BE", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-character code point U+10FFFF",
+           "\u00F4\u008F\u00BF\u00BF", null,
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+     /* 
+         {
+           "Surrogate code U+DF42",
+           "\u00ED\u00BD\u0082", null, "Nameprep", InternationalizedDomainNames.DEFAULT,
+           U_IDNA_PROHIBITED_ERROR
+         },
+    */
+         new ConformanceTestCase(
+           "Non-plain text character U+FFFD",
+           "\u00EF\u00BF\u00BD", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Ideographic description character U+2FF5",
+           "\u00E2\u00BF\u00B5", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Display property character U+0341",
+           "\u00CD\u0081", "\u00CC\u0081",
+           "Nameprep", IDNA.DEFAULT, 
+           null
+
+         ),
+
+         new ConformanceTestCase(
+           "Left-to-right mark U+200E",
+           "\u00E2\u0080\u008E", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+
+           "Deprecated U+202A",
+           "\u00E2\u0080\u00AA", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Language tagging character U+E0001",
+           "\u00F3\u00A0\u0080\u0081", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Language tagging character U+E0042",
+           "\u00F3\u00A0\u0081\u0082", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+05BE and LCat characters",
+           "\u0066\u006F\u006F\u00D6\u00BE\u0062\u0061\u0072", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+FD50 and LCat characters",
+           "\u0066\u006F\u006F\u00EF\u00B5\u0090\u0062\u0061\u0072", null,
+           "Nameprep",IDNA.DEFAULT ,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+FB38 and LCat characters",
+           "\u0066\u006F\u006F\u00EF\u00B9\u00B6\u0062\u0061\u0072", "\u0066\u006F\u006F \u00d9\u008e\u0062\u0061\u0072",
+           "Nameprep", IDNA.DEFAULT,
+           null
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat without trailing RandALCat U+0627 U+0031",
+           "\u00D8\u00A7\u0031", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+0627 U+0031 U+0628",
+           "\u00D8\u00A7\u0031\u00D8\u00A8", "\u00D8\u00A7\u0031\u00D8\u00A8",
+           "Nameprep", IDNA.DEFAULT,
+           null
+         ),
+         new ConformanceTestCase(
+           "Unassigned code point U+E0002",
+           "\u00F3\u00A0\u0080\u0082", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR)
+         ),
+
+    /*  // Invalid UTF-8
+         {
+           "Larger test (shrinking)",
+           "X\u00C2\u00AD\u00C3\u00DF\u00C4\u00B0\u00E2\u0084\u00A1\u006a\u00cc\u008c\u00c2\u00a0\u00c2"
+           "\u00aa\u00ce\u00b0\u00e2\u0080\u0080", "xssi\u00cc\u0087""tel\u00c7\u00b0 a\u00ce\u00b0 ",
+           "Nameprep",
+           InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR
+         },
+        {
+
+           "Larger test (expanding)",
+           "X\u00C3\u00DF\u00e3\u008c\u0096\u00C4\u00B0\u00E2\u0084\u00A1\u00E2\u0092\u009F\u00E3\u008c\u0080",
+           "xss\u00e3\u0082\u00ad\u00e3\u0083\u00ad\u00e3\u0083\u00a1\u00e3\u0083\u00bc\u00e3\u0083\u0088"
+           "\u00e3\u0083\u00ab""i\u00cc\u0087""tel\u0028""d\u0029\u00e3\u0082\u00a2\u00e3\u0083\u0091"
+           "\u00e3\u0083\u00bc\u00e3\u0083\u0088"
+           "Nameprep",
+           InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR
+         },
+      */
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java b/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
new file mode 100644
index 0000000..0a0a890
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
@@ -0,0 +1,910 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.InputStream;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author ram
+ */
+public class TestIDNA extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestIDNA().run(args);
+    }
+    private StringPrepParseException unassignedException = new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR);
+    public void TestToUnicode() throws Exception{
+        for(int i=0; i<TestData.asciiIn.length; i++){
+            // test StringBuffer toUnicode
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.DEFAULT, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.ALLOW_UNASSIGNED, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES, null); 
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES|IDNA.ALLOW_UNASSIGNED, null); 
+    
+        }
+    }
+    
+    public void TestToASCII() throws Exception{
+        for(int i=0; i<TestData.asciiIn.length; i++){
+            // test StringBuffer toUnicode
+            doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNA.DEFAULT, null);
+            doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES, null); 
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES|IDNA.ALLOW_UNASSIGNED, null); 
+    
+        }
+    }
+    
+    public void TestIDNToASCII() throws Exception{
+        for(int i=0; i<TestData.domainNames.length; i++){
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.DEFAULT, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.USE_STD3_RULES, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED|IDNA.USE_STD3_RULES, null);
+        }
+        
+        for(int i=0; i<TestData.domainNames1Uni.length; i++){
+            doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNA.DEFAULT, null);
+            doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNA.ALLOW_UNASSIGNED, null);
+        }
+    }
+    public void TestIDNToUnicode() throws Exception{
+        for(int i=0; i<TestData.domainNames.length; i++){
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.DEFAULT, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.USE_STD3_RULES, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED|IDNA.USE_STD3_RULES, null);
+        }
+        for(int i=0; i<TestData.domainNamesToASCIIOut.length; i++){
+            doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNA.DEFAULT, null);
+            doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNA.ALLOW_UNASSIGNED, null);
+        }
+    }
+    
+    private void doTestToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            
+            StringBuffer out = IDNA.convertToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("Did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    
+    private void doTestIDNToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertIDNToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNA.convertIDNToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertIDNToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("Did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertToASCII(src,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+                errln("convertToASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +"\n Got:  "+ ex.toString() +"\n Expected: " +ex.toString());
+            }
+        }
+        
+        try{            
+            StringBuffer out = IDNA.convertToASCII(inBuf,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertToASCII(inIter,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestIDNToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertIDNToASCII(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToIDNASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNA.convertIDNToASCII(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToIDNASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertIDNToASCII(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertIDNToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    public void TestConformance()throws Exception{
+        for(int i=0; i<TestData.conformanceTestCases.length;i++){
+            
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            if(testCase.expected != null){
+                //Test toASCII
+                doTestToASCII(testCase.input,testCase.output,IDNA.DEFAULT,testCase.expected);
+                doTestToASCII(testCase.input,testCase.output,IDNA.ALLOW_UNASSIGNED,testCase.expected);
+            }
+            //Test toUnicode
+            //doTestToUnicode(testCase.input,testCase.output,IDNA.DEFAULT,testCase.expected);
+        }
+    }
+    public void TestNamePrepConformance() throws Exception{
+        InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/uidna.spp");
+        StringPrep namePrep = new StringPrep(stream);
+        for(int i=0; i<TestData.conformanceTestCases.length;i++){
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            UCharacterIterator iter = UCharacterIterator.getInstance(testCase.input);
+            try{
+                StringBuffer output = namePrep.prepare(iter,StringPrep.DEFAULT);
+                if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                    errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                          " Got: "+ prettify(output) );
+                }
+                if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                    errln("Did not get the expected exception. The operation succeeded!");
+                }
+            }catch(StringPrepParseException ex){
+                if(testCase.expected == null || !ex.equals(testCase.expected)){
+                    errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                }
+            }
+            
+            try{
+                iter.setToStart();
+                StringBuffer output = namePrep.prepare(iter,StringPrep.ALLOW_UNASSIGNED);
+                if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                    errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                          " Got: "+ prettify(output) );
+                }
+                if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                    errln("Did not get the expected exception. The operation succeeded!");
+                }
+            }catch(StringPrepParseException ex){
+                if(testCase.expected == null || !ex.equals(testCase.expected)){
+                    errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                }
+            }
+        }
+        
+    }
+    public void TestErrorCases() throws Exception{
+        for(int i=0; i < TestData.errorCases.length; i++){
+            TestData.ErrorCase errCase = TestData.errorCases[i];
+            if(errCase.testLabel==true){
+                // Test ToASCII
+                doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.DEFAULT,errCase.expected);
+                doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                if(errCase.useSTD3ASCIIRules){
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.USE_STD3_RULES,errCase.expected);
+                }
+            }
+            if(errCase.useSTD3ASCIIRules!=true){
+                
+                // Test IDNToASCII
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.DEFAULT,errCase.expected);
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                
+            }else{
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.USE_STD3_RULES,errCase.expected);
+            }
+            
+            //TestToUnicode
+            if(false && errCase.testToUnicode==true){
+                if(errCase.useSTD3ASCIIRules!=true){
+                    // Test IDNToUnicode
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.DEFAULT,errCase.expected);
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                
+                }else{
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.USE_STD3_RULES,errCase.expected);
+                }
+            }
+        }
+    }
+    private void doTestCompare(String s1, String s2, boolean isEqual){
+        try{
+            int retVal = IDNA.compare(s1,s2,IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(new StringBuffer(s1), new StringBuffer(s2), IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            errln("Unexpected exception thrown by IDNA.compare");
+        }
+        
+        try{
+            int retVal = IDNA.compare(s1,s2,IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(new StringBuffer(s1), new StringBuffer(s2), IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            errln("Unexpected exception thrown by IDNA.compare");
+        }
+    }
+    public void TestCompare() throws Exception{
+        String www = "www.";
+        String com = ".com";
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+
+        for(int i=0;i< TestData.unicodeIn.length; i++){
+
+            // for every entry in unicodeIn array
+            // prepend www. and append .com
+            source.setLength(4);
+            source.append(TestData.unicodeIn[i]);
+            source.append(com);
+            
+            // a) compare it with itself
+            doTestCompare(source.toString(),source.toString(),true);
+        
+            // b) compare it with asciiIn equivalent
+            doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+        
+            // c) compare it with unicodeIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(), uni1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),uni0.toString(), false);
+            }
+            // d) compare it with asciiIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(),ascii1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),ascii0.toString(), false);
+            }
+
+        }
+    }
+
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToASCII(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToASCII
+        expected = IDNA.convertIDNToASCII(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertIDNToASCII(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToASCII");
+        }
+        // test convertIDNToA
+        expected = IDNA.convertToASCII(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertToASCII(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToASCII");
+        }   
+    }
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToUnicode(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToUnicode
+        expected = IDNA.convertIDNToUnicode(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertIDNToUnicode(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToUnicode");
+        }
+        // test convertIDNToA
+        expected = IDNA.convertToUnicode(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertToUnicode(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToUnicode");
+        }   
+    }
+    public void TestChaining() throws Exception{
+        for(int i=0; i< TestData.asciiIn.length; i++){
+            doTestChainingToUnicode(TestData.asciiIn[i]);
+        }
+        for(int i=0; i< TestData.unicodeIn.length; i++){
+            doTestChainingToASCII(new String(TestData.unicodeIn[i]));
+        }
+    }
+    
+
+    /* IDNA RFC Says:
+    A label is an individual part of a domain name.  Labels are usually
+    shown separated by dots; for example, the domain name
+    "www.example.com" is composed of three labels: "www", "example", and
+    "com".  (The zero-length root label described in [STD13], which can
+    be explicit as in "www.example.com." or implicit as in
+    "www.example.com", is not considered a label in this specification.)
+    */
+    public void TestRootLabelSeparator() throws Exception{
+        String www = "www.";
+        String com = ".com."; //root label separator
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+
+        for(int i=0;i< TestData.unicodeIn.length; i++){
+
+            // for every entry in unicodeIn array
+            // prepend www. and append .com
+            source.setLength(4);
+            source.append(TestData.unicodeIn[i]);
+            source.append(com);
+            
+            // a) compare it with itself
+            doTestCompare(source.toString(),source.toString(),true);
+        
+            // b) compare it with asciiIn equivalent
+            doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+        
+            // c) compare it with unicodeIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(), uni1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),uni0.toString(), false);
+            }
+            // d) compare it with asciiIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(),ascii1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),ascii0.toString(), false);
+            }
+
+        }
+
+    }
+    
+    
+    private static final int loopCount = 100;
+    private static final int maxCharCount = 15;
+   // private static final int maxCodePoint = 0x10ffff;
+    private Random random = null;
+    
+    /**
+     * Return a random integer i where 0 <= i < n.
+     * A special function that gets random codepoints from planes 0,1,2 and 14
+     */
+    private int rand_uni()
+    {
+       int retVal = (int)(random.nextLong()& 0x3FFFF);
+       if(retVal >= 0x30000){
+           retVal+=0xB0000;
+       }
+       return retVal;
+    }
+
+    private int randi(int n){
+        return (random.nextInt(0x7fff) % (n+1));
+    }
+
+    private StringBuffer getTestSource(StringBuffer fillIn) {
+        // use uniform seed value from the framework
+        if(random==null){
+            random = createRandom();
+        }
+        int i = 0;
+        int charCount = (randi(maxCharCount) + 1);
+        while (i <charCount ) {
+            int codepoint = rand_uni();
+            if(codepoint == 0x0000){
+                continue;
+            }
+            UTF16.append(fillIn, codepoint);
+            i++;
+        }
+        return fillIn;
+       
+    }
+    public void MonkeyTest() throws Exception{
+         StringBuffer source = new StringBuffer();
+         /* do the monkey test   */       
+         for(int i=0; i<loopCount; i++){
+             source.setLength(0);
+             getTestSource(source);
+             doTestCompareReferenceImpl(source);
+         }
+         
+         // test string with embedded null  
+         source.append( "\\u0000\\u2109\\u3E1B\\U000E65CA\\U0001CAC5" );
+                           
+         source = new StringBuffer(Utility.unescape(source.toString()));
+         doTestCompareReferenceImpl(source);
+         
+         //StringBuffer src = new StringBuffer(Utility.unescape("\\uDEE8\\U000E228C\\U0002EE8E\\U000E6350\\U00024DD9\u4049\\U000E0DE4\\U000E448C\\U0001869B\\U000E3380\\U00016A8E\\U000172D5\\U0001C408\\U000E9FB5"));
+         //doTestCompareReferenceImpl(src);
+         
+         //test deletion of code points
+         source = new StringBuffer(Utility.unescape("\\u043f\\u00AD\\u034f\\u043e\\u0447\\u0435\\u043c\\u0443\\u0436\\u0435\\u043e\\u043d\\u0438\\u043d\\u0435\\u0433\\u043e\\u0432\\u043e\\u0440\\u044f\\u0442\\u043f\\u043e\\u0440\\u0443\\u0441\\u0441\\u043a\\u0438"));
+         StringBuffer expected = new StringBuffer("xn--b1abfaaepdrnnbgefbadotcwatmq2g4l");
+         doTestCompareReferenceImpl(source);
+         doTestToASCII(source.toString(),expected.toString(), IDNA.DEFAULT, null);
+    }
+    private void doTestCompareReferenceImpl(StringBuffer src) throws Exception{
+        
+        StringBuffer label = src;  
+
+        StringPrepParseException expected = null;
+        StringBuffer ascii = null;
+        int options = IDNA.DEFAULT;
+        logln("Comparing idnaref_toASCII with uidna_toASCII for input: " + prettify(label));
+        try{       
+            ascii = IDNAReference.convertToASCII(label, options);
+        }catch( StringPrepParseException e){
+            expected = e;
+            if(e.equals(unassignedException)){
+                options = IDNA.ALLOW_UNASSIGNED;
+                expected = null;
+                try{
+                    ascii = IDNAReference.convertToASCII(label, options);
+                }catch( StringPrepParseException ex){
+                    expected = ex;                  
+                }
+            }
+        }
+        
+        doTestToASCII(label.toString(), 
+                      (ascii == null) ? null : ascii.toString(),
+                      options,
+                      expected);
+
+        logln("Comparing idnaref_toUnicode with uidna_toUnicode for input: " + prettify(label));
+        StringBuffer uni =null;
+        
+        if(expected == null){
+            options = IDNA.DEFAULT;
+            try{
+                 uni = IDNAReference.convertToUnicode(ascii, options);
+            }catch( StringPrepParseException e ){
+                expected = e;
+                if(expected.equals(unassignedException)){
+                    options = IDNA.ALLOW_UNASSIGNED;
+                    expected = null;
+                    try{
+                        uni = IDNAReference.convertToUnicode(ascii, options);
+                    }catch(StringPrepParseException ex){
+                        expected = ex;
+                    }
+                }
+            }
+            doTestToUnicode(ascii.toString(),
+                            (uni==null)? null : uni.toString(),
+                            options,
+                            expected);
+        }
+
+    }
+    public void TestCompareRefImpl() throws Exception{
+        
+        for(int i = 0x40000 ; i< 0x10ffff; i++){
+            StringBuffer src = new StringBuffer();
+           
+            if(isQuick()==true && i> 0x1FFFF){
+                return;
+            }
+            if(i >= 0x30000 && i<=0xf0000){
+               i+=0xB0000;
+            }
+            UTF16.append(src,i);
+            doTestCompareReferenceImpl(src);
+
+        }  
+    }
+    public void TestUnicode32Norm() {
+        /*
+         * test Unicode 3.2 normalization, before Public Review Issue #29
+         * see cnormtst.c TestComposition()
+         */
+        final String strings[]={
+            "\u1100\u0300\u1161\u0327",
+            "\u0b47\u0300\u0b3e\u0327"
+        };
+
+        String ascii = null, unicode = null;
+        int i;
+
+        for(i=0; i<strings.length; ++i) {
+            try {
+                ascii=IDNA.convertToASCII(strings[i], 0).toString();
+                unicode=IDNA.convertToUnicode(ascii, 0).toString();
+            } catch(StringPrepParseException ex) {
+                errln("string " + i + " gets exception " + ex.toString());
+            }
+            
+            if(unicode == null || unicode.compareTo(ascii) != 0) {
+                String uc = unicode == null? "(null)" : unicode;
+                
+                errln("string " + i + " yields " + uc +" instead of " + ascii);
+            }
+        }
+    }
+    public void TestJB4490(){
+        String[] in = new String[]{
+                "\u00F5\u00dE\u00dF\u00dD",
+                "\uFB00\uFB01"
+               };
+        for ( int i=0; i< in.length; i++){   
+            try{
+                String ascii = IDNA.convertToASCII(in[i],IDNA.DEFAULT).toString();
+                try{
+                    String unicode = IDNA.convertToUnicode(ascii,IDNA.DEFAULT).toString();
+                    logln("result " + unicode);
+                }catch(StringPrepParseException ex){
+                    errln("Unexpected exception for convertToUnicode: " + ex.getMessage());
+                }
+            }catch(StringPrepParseException ex){
+                errln("Unexpected exception for convertToASCII: " + ex.getMessage());
+            }
+        }
+    }
+    public void TestJB4475(){
+        String[] in = new String[]{
+                        "TEST",
+                        "test"
+                       };
+        for ( int i=0; i< in.length; i++){
+            
+            try{
+                String ascii = IDNA.convertToASCII(in[i],IDNA.DEFAULT).toString();
+                if(!ascii.equals(in[i])){
+                    errln("Did not get the expected string for convertToASCII. Expected: "+ in[i] +" Got: " + ascii);
+                }
+            }catch(StringPrepParseException ex){
+                errln("Unexpected exception: " + ex.getMessage());
+            }
+        }
+            
+    }
+        
+    public void TestDebug(){     
+        try{
+            String src = "\u00ED4dn";
+            String uni = IDNA.convertToUnicode(src,IDNA.DEFAULT).toString();
+            if(!uni.equals(src)){
+                errln("Did not get the expected result. Expected: "+ prettify(src) +" Got: " +uni);
+            }
+        }catch(StringPrepParseException ex){
+            logln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            String ascii = IDNA.convertToASCII("\u00AD",IDNA.DEFAULT).toString();
+            if(ascii!=null){
+                errln("Did not get the expected exception");
+            }
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception: " + ex.getMessage());
+        }
+    }
+    public void TestJB5273(){
+        String INVALID_DOMAIN_NAME = "xn--m\u00FCller.de";
+        try {
+            IDNA.convertIDNToUnicode(INVALID_DOMAIN_NAME, IDNA.DEFAULT);
+            IDNA.convertIDNToUnicode(INVALID_DOMAIN_NAME, IDNA.USE_STD3_RULES);
+
+        } catch (StringPrepParseException ex) {
+            errln("Unexpected exception: " + ex.getMessage());
+        } catch (ArrayIndexOutOfBoundsException ex) {
+            errln("Got an ArrayIndexOutOfBoundsException calling convertIDNToUnicode(\"" + INVALID_DOMAIN_NAME + "\")");
+        }
+        
+        String domain = "xn--m\u00FCller.de";
+        try{
+            IDNA.convertIDNToUnicode(domain, IDNA.DEFAULT);
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception. "+ex.getMessage());
+        }catch (Exception ex){
+            errln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            IDNA.convertIDNToUnicode(domain, IDNA.USE_STD3_RULES);
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception. "+ex.getMessage());
+        }catch (Exception ex){
+            errln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            IDNA.convertToUnicode("xn--m\u00FCller", IDNA.DEFAULT);
+        }catch(Exception ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+        try{
+            IDNA.convertToUnicode("xn--m\u00FCller", IDNA.USE_STD3_RULES);
+        }catch(Exception ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+        try{
+            IDNA.convertIDNToUnicode("xn--m\u1234ller", IDNA.USE_STD3_RULES);
+        }catch(StringPrepParseException ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+    }
+    
+    public void TestLength(){
+        String ul = "my_very_very_very_very_very_very_very_very_very_very_very_very_very_long_and_incredibly_uncreative_domain_label";
+
+        /* this unicode string is longer than MAX_LABEL_BUFFER_SIZE and produces an 
+           IDNA prepared string (including xn--)that is exactly 63 bytes long */
+        String ul1 ="\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774"+
+                    "\uD55C\uAD6D\uC5B4\uB97C\uC774\u00AD\u034F\u1806\u180B"+
+                    "\u180C\u180D\u200B\u200C\u200D\u2060\uFE00\uFE01\uFE02"+
+                    "\uFE03\uFE04\uFE05\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B"+
+                    "\uFE0C\uFE0D\uFE0E\uFE0F\uFEFF\uD574\uD55C\uB2E4\uBA74"+
+                    "\uC138\u0041\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF";
+        try{
+            IDNA.convertToASCII(ul, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.LABEL_TOO_LONG_ERROR){
+                errln("IDNA.convertToASCII failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToASCII(ul, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        try{
+            IDNA.convertToASCII(ul1, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        try{
+            IDNA.convertToUnicode(ul1, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        try{
+            IDNA.convertToUnicode(ul, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        
+        String idn = "my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.ibm.com";
+        try{
+            IDNA.convertIDNToASCII(idn, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR){
+                errln("IDNA.convertToASCII failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToASCII(idn, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        try{
+            IDNA.convertIDNToUnicode(idn, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");  
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR){
+                errln("IDNA.convertToUnicode failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToUnicode(idn, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java b/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
new file mode 100644
index 0000000..31f550e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
@@ -0,0 +1,621 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestIDNARef extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestIDNARef().run(args);
+    }
+    private StringPrepParseException unassignedException = new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR);
+    public void TestToUnicode() throws Exception{
+        try{
+            for(int i=0; i<TestData.asciiIn.length; i++){
+                // test StringBuffer toUnicode
+                doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.DEFAULT, null);
+                doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.ALLOW_UNASSIGNED, null);
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES, null); 
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES|IDNAReference.ALLOW_UNASSIGNED, null); 
+        
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    public void TestToASCII() throws Exception{
+        try{
+            for(int i=0; i<TestData.asciiIn.length; i++){
+                // test StringBuffer toUnicode
+                doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNAReference.DEFAULT, null);
+                doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES, null); 
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES|IDNAReference.ALLOW_UNASSIGNED, null); 
+        
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    public void TestIDNToASCII() throws Exception{
+        try{
+            for(int i=0; i<TestData.domainNames.length; i++){
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.DEFAULT, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+            }
+            
+            for(int i=0; i<TestData.domainNames1Uni.length; i++){
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.DEFAULT, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+    
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestIDNToUnicode() throws Exception{
+        try{
+            for(int i=0; i<TestData.domainNames.length; i++){
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.DEFAULT, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+            }
+            for(int i=0; i<TestData.domainNamesToASCIIOut.length; i++){
+                doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNAReference.DEFAULT, null);
+                doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNAReference.ALLOW_UNASSIGNED, null);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    private void doTestToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            
+            StringBuffer out = IDNAReference.convertToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("Did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    
+    private void doTestIDNToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertIDNToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNAReference.convertIDNToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertIDNToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("Did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertToASCII(src,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+                errln("convertToASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{            
+            StringBuffer out = IDNAReference.convertToASCII(inBuf,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertToASCII(inIter,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestIDNToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertIDNToASCII(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToIDNAReferenceASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNAReferenceASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNAReferenceASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNAReference.convertIDNtoASCII(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToIDNAReferenceASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNAReferenceSCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNAReferenceSCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertIDNtoASCII(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertIDNToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    public void TestConformance()throws Exception{
+        try{
+            for(int i=0; i<TestData.conformanceTestCases.length;i++){
+                
+                TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+                if(testCase.expected != null){
+                    //Test toASCII
+                    doTestToASCII(testCase.input,testCase.output,IDNAReference.DEFAULT,testCase.expected);
+                    doTestToASCII(testCase.input,testCase.output,IDNAReference.ALLOW_UNASSIGNED,testCase.expected);
+                }
+                //Test toUnicode
+                //doTestToUnicode(testCase.input,testCase.output,IDNAReference.DEFAULT,testCase.expected);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestNamePrepConformance() throws Exception{
+        try{
+            NamePrepTransform namePrep = NamePrepTransform.getInstance();
+            for(int i=0; i<TestData.conformanceTestCases.length;i++){
+                TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+                UCharacterIterator iter = UCharacterIterator.getInstance(testCase.input);
+                try{
+                    StringBuffer output = namePrep.prepare(iter,NamePrepTransform.NONE);
+                    if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                        errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                              " Got: "+ prettify(output) );
+                    }
+                    if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                        errln("Did not get the expected exception. The operation succeeded!");
+                    }
+                }catch(StringPrepParseException ex){
+                    if(testCase.expected == null || !ex.equals(testCase.expected)){
+                        errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                    }
+                }
+                
+                try{
+                    iter.setToStart();
+                    StringBuffer output = namePrep.prepare(iter,NamePrepTransform.ALLOW_UNASSIGNED);
+                    if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                        errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                              " Got: "+ prettify(output) );
+                    }
+                    if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                        errln("Did not get the expected exception. The operation succeeded!");
+                    }
+                }catch(StringPrepParseException ex){
+                    if(testCase.expected == null || !ex.equals(testCase.expected)){
+                        errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                    }
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError e){
+            warnln("Could not load NamePrepTransformData");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+        
+    }
+    public void TestErrorCases() throws Exception{
+        try{
+            for(int i=0; i < TestData.errorCases.length; i++){
+                TestData.ErrorCase errCase = TestData.errorCases[i];
+                if(errCase.testLabel==true){
+                    // Test ToASCII
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.DEFAULT,errCase.expected);
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    if(errCase.useSTD3ASCIIRules){
+                        doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.USE_STD3_RULES,errCase.expected);
+                    }
+                }
+                if(errCase.useSTD3ASCIIRules!=true){
+                    
+                    // Test IDNToASCII
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.DEFAULT,errCase.expected);
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    
+                }else{
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.USE_STD3_RULES,errCase.expected);
+                }
+                
+                //TestToUnicode
+                if(errCase.testToUnicode==true){
+                    if(errCase.useSTD3ASCIIRules!=true){
+                        // Test IDNToUnicode
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.DEFAULT,errCase.expected);
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    
+                    }else{
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.USE_STD3_RULES,errCase.expected);
+                    }
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    private void doTestCompare(String s1, String s2, boolean isEqual){
+        try{
+            int retVal = IDNAReference.compare(s1,s2,IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(new StringBuffer(s1), new StringBuffer(s2), IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            errln("Unexpected exception thrown by IDNAReference.compare");
+        }
+        
+        try{
+            int retVal = IDNAReference.compare(s1,s2,IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(new StringBuffer(s1), new StringBuffer(s2), IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            errln("Unexpected exception thrown by IDNAReference.compare");
+        }     
+    }
+    public void TestCompare() throws Exception{
+        String www = "www.";
+        String com = ".com";
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+        try{
+            for(int i=0;i< TestData.unicodeIn.length; i++){
+    
+                // for every entry in unicodeIn array
+                // prepend www. and append .com
+                source.setLength(4);
+                source.append(TestData.unicodeIn[i]);
+                source.append(com);
+                
+                // a) compare it with itself
+                doTestCompare(source.toString(),source.toString(),true);
+            
+                // b) compare it with asciiIn equivalent
+                doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+            
+                // c) compare it with unicodeIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(), uni1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),uni0.toString(), false);
+                }
+                // d) compare it with asciiIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(),ascii1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),ascii0.toString(), false);
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToASCII(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToASCII
+        expected = IDNAReference.convertIDNToASCII(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertIDNtoASCII(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToASCII");
+        }
+        // test convertIDNToA
+        expected = IDNAReference.convertToASCII(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertToASCII(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToASCII");
+        } 
+        
+    }
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToUnicode(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToUnicode
+        expected = IDNAReference.convertIDNToUnicode(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertIDNToUnicode(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToUnicode");
+        }
+        // test convertIDNToA
+        expected = IDNAReference.convertToUnicode(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertToUnicode(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToUnicode");
+        }
+
+    }
+    public void TestChaining() throws Exception{
+        try{
+            for(int i=0; i< TestData.unicodeIn.length; i++){
+                doTestChainingToASCII(new String(TestData.unicodeIn[i]));
+            }
+            for(int i=0; i< TestData.asciiIn.length; i++){
+                doTestChainingToUnicode(TestData.asciiIn[i]);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestRootLabelSeparator() throws Exception{
+        String www = "www.";
+        String com = ".com."; /*root label separator*/
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+        try{
+            for(int i=0;i< TestData.unicodeIn.length; i++){
+    
+                // for every entry in unicodeIn array
+                // prepend www. and append .com
+                source.setLength(4);
+                source.append(TestData.unicodeIn[i]);
+                source.append(com);
+                
+                // a) compare it with itself
+                doTestCompare(source.toString(),source.toString(),true);
+            
+                // b) compare it with asciiIn equivalent
+                doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+            
+                // c) compare it with unicodeIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(), uni1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),uni0.toString(), false);
+                }
+                // d) compare it with asciiIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(),ascii1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),ascii0.toString(), false);
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java b/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
new file mode 100644
index 0000000..cb87eab
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
@@ -0,0 +1,141 @@
+/*
+
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.stringprep;
+
+/**
+ * @author limaoyu
+ */
+public class TestInputDataStructure {
+    
+    private String desc = null;
+
+    private String namebase = null;
+
+    private String nameutf8 = null;
+
+    private String namezone = null;
+
+    private String failzone1 = null;
+
+    private String failzone2 = null;
+
+    private String token = null;
+
+    private String passfail = null;
+
+    private String type = null;
+    /**
+     * @return Returns the desc.
+     */
+    public String getDesc() {
+        return desc;
+    }
+    /**
+     * @param desc The desc to set.
+     */
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+    /**
+     * @return Returns the failzone1.
+     */
+    public String getFailzone1() {
+        return failzone1;
+    }
+    /**
+     * @param failzone1 The failzone1 to set.
+     */
+    public void setFailzone1(String failzone1) {
+        this.failzone1 = failzone1;
+    }
+    /**
+     * @return Returns the failzone2.
+     */
+    public String getFailzone2() {
+        return failzone2;
+    }
+    /**
+     * @param failzone2 The failzone2 to set.
+     */
+    public void setFailzone2(String failzone2) {
+        this.failzone2 = failzone2;
+    }
+    /**
+     * @return Returns the namebase.
+     */
+    public String getNamebase() {
+        return namebase;
+    }
+    /**
+     * @param namebase The namebase to set.
+     */
+    public void setNamebase(String namebase) {
+        this.namebase = namebase;
+    }
+    /**
+     * @return Returns the nameutf8.
+     */
+    public String getNameutf8() {
+        return nameutf8;
+    }
+    /**
+     * @param nameutf8 The nameutf8 to set.
+     */
+    public void setNameutf8(String nameutf8) {
+        this.nameutf8 = nameutf8;
+    }
+    /**
+     * @return Returns the namezone.
+     */
+    public String getNamezone() {
+        return namezone;
+    }
+    /**
+     * @param namezone The namezone to set.
+     */
+    public void setNamezone(String namezone) {
+        this.namezone = namezone;
+    }
+    /**
+     * @return Returns the passfail.
+     */
+    public String getPassfail() {
+        return passfail;
+    }
+    /**
+     * @param passfail The passfail to set.
+     */
+    public void setPassfail(String passfail) {
+        this.passfail = passfail;
+    }
+    /**
+     * @return Returns the token.
+     */
+    public String getToken() {
+        return token;
+    }
+    /**
+     * @param token The token to set.
+     */
+    public void setToken(String token) {
+        this.token = token;
+    }
+    /**
+     * @return Returns the type.
+     */
+    public String getType() {
+        return type;
+    }
+    /**
+     * @param type The type to set.
+     */
+    public void setType(String type) {
+        this.type = type;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java b/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
new file mode 100644
index 0000000..dc7b819
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
@@ -0,0 +1,204 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.StringPrepParseException;
+
+/**
+ * @author ram
+ *
+ */
+public class TestStringPrep extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestStringPrep().run(args);
+    }
+    /*
+       There are several special identifiers ("who") which need to be
+       understood universally, rather than in the context of a particular
+       DNS domain.  Some of these identifiers cannot be understood when an
+       NFS client accesses the server, but have meaning when a local process
+       accesses the file.  The ability to display and modify these
+       permissions is permitted over NFS, even if none of the access methods
+       on the server understands the identifiers.
+
+        Who                    Description
+       _______________________________________________________________
+
+       "OWNER"                The owner of the file.
+       "GROUP"                The group associated with the file.
+       "EVERYONE"             The world.
+       "INTERACTIVE"          Accessed from an interactive terminal.
+       "NETWORK"              Accessed via the network.
+       "DIALUP"               Accessed as a dialup user to the server.
+       "BATCH"                Accessed from a batch job.
+       "ANONYMOUS"            Accessed without any authentication.
+       "AUTHENTICATED"        Any authenticated user (opposite of
+                              ANONYMOUS)
+       "SERVICE"              Access from a system service.
+
+       To avoid conflict, these special identifiers are distinguish by an
+       appended "@" and should appear in the form "xxxx@" (note: no domain
+       name after the "@").  For example: ANONYMOUS@.
+    */
+    private String[] mixed_prep_data ={
+        "OWNER@",
+        "GROUP@",        
+        "EVERYONE@",     
+        "INTERACTIVE@",  
+        "NETWORK@",      
+        "DIALUP@",       
+        "BATCH@",        
+        "ANONYMOUS@",    
+        "AUTHENTICATED@",
+        "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D@slip129-37-118-146.nc.us.ibm.net",
+        "\u0936\u094d\u0930\u0940\u092e\u0926\u094d@saratoga.pe.utexas.edu",
+        "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e@dial-120-45.ots.utexas.edu",
+        "\u0905\u0927\u094d\u092f\u093e\u092f@woo-085.dorms.waller.net",
+        "\u0905\u0930\u094d\u091c\u0941\u0928@hd30-049.hil.compuserve.com",
+        "\u0935\u093f\u0937\u093e\u0926@pem203-31.pe.ttu.edu",
+        "\u092f\u094b\u0917@56K-227.MaxTNT3.pdq.net",
+        "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930@dial-36-2.ots.utexas.edu",
+        "\u0909\u0935\u093E\u091A\u0943@slip129-37-23-152.ga.us.ibm.net",
+        "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947@ts45ip119.cadvision.com",
+        "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947@sdn-ts-004txaustP05.dialsprint.net",
+        "\u0938\u092e\u0935\u0947\u0924\u093e@bar-tnt1s66.erols.com",
+        "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903@101.st-louis-15.mo.dial-access.att.net",
+        "\u092e\u093e\u092e\u0915\u093e\u0903@h92-245.Arco.COM",
+        "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935@dial-13-2.ots.utexas.edu",
+        "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924@net-redynet29.datamarkets.com.ar",
+        "\u0938\u0902\u091c\u0935@ccs-shiva28.reacciun.net.ve",
+        "\u0c30\u0c18\u0c41\u0c30\u0c3e\u0c2e\u0c4d@7.houston-11.tx.dial-access.att.net",
+        "\u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27@ingw129-37-120-26.mo.us.ibm.net",
+        "\u0c06\u0c28\u0c02\u0c26\u0c4d@dialup6.austintx.com",
+        "\u0C35\u0C26\u0C4D\u0C26\u0C3F\u0C30\u0C3E\u0C1C\u0C41@dns2.tpao.gov.tr",
+        "\u0c30\u0c3e\u0c1c\u0c40\u0c35\u0c4d@slip129-37-119-194.nc.us.ibm.net",
+        "\u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26@cs7.dillons.co.uk.203.119.193.in-addr.arpa",
+        "\u0c38\u0c02\u0c1c\u0c40\u0c35\u0c4d@swprd1.innovplace.saskatoon.sk.ca",
+        "\u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26@bikini.bologna.maraut.it",
+        "\u0c38\u0c02\u0c1c\u0c40\u0c2c\u0c4d@node91.subnet159-198-79.baxter.com",
+        "\u0c38\u0c46\u0c28\u0c4d\u0c17\u0c41\u0c2a\u0c4d\u0c24@cust19.max5.new-york.ny.ms.uu.net",
+        "\u0c05\u0c2e\u0c30\u0c47\u0c02\u0c26\u0c4d\u0c30@balexander.slip.andrew.cmu.edu",
+        "\u0c39\u0c28\u0c41\u0c2e\u0c3e\u0c28\u0c41\u0c32@pool029.max2.denver.co.dynip.alter.net",
+        "\u0c30\u0c35\u0c3f@cust49.max9.new-york.ny.ms.uu.net",
+        "\u0c15\u0c41\u0c2e\u0c3e\u0c30\u0c4d@s61.abq-dialin2.hollyberry.com",
+        "\u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27@\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "\u0c06\u0c26\u0c3f\u0c24\u0c4d\u0c2f@www.\u00E0\u00B3\u00AF.com",
+        "\u0C15\u0C02\u0C26\u0C4D\u0C30\u0C47\u0C17\u0C41\u0c32@www.\u00C2\u00A4.com",
+        "\u0c36\u0c4d\u0c30\u0c40\u0C27\u0C30\u0C4D@www.\u00C2\u00A3.com",
+        "\u0c15\u0c02\u0c1f\u0c2e\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f@\u0025",
+        "\u0c2e\u0c3e\u0c27\u0c35\u0c4d@\u005C\u005C",
+        "\u0c26\u0c46\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f@www.\u0021.com",
+        "test@www.\u0024.com",
+        "help@\u00C3\u00BC.com",
+    };
+    public void TestNFS4MixedPrep(){
+        for(int i=0; i< mixed_prep_data.length; i++){
+            try{
+                String src = mixed_prep_data[i];
+                byte[] dest = NFS4StringPrep.mixed_prepare(src.getBytes("UTF-8"));
+                String destString = new String(dest, "UTF-8");
+                int destIndex = destString.indexOf('@');
+                if(destIndex < 0){
+                    errln("Delimiter @ disappeared from the output!");
+                }
+            }catch(Exception e){
+                errln("mixed_prepare for string: " + mixed_prep_data[i] +" failed with " + e.toString());
+            }
+        } 
+        /* test the error condition */
+        {
+            String src = "OWNER@oss.software.ibm.com";
+            try{
+                byte[] dest = NFS4StringPrep.mixed_prepare(src.getBytes("UTF-8"));
+                if(dest!=null){
+                    errln("Did not get the expected exception");
+                }
+            }catch(Exception e){
+                logln("mixed_prepare for string: " + src +" passed with " + e.toString());
+            }
+
+         }
+    }
+    public void TestCISPrep(){
+
+        for(int i=0;i< (TestData.conformanceTestCases.length);i++){
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            String src = testCase.input;
+            Exception expected = testCase.expected;
+            String expectedDest = testCase.output;
+            try{
+                byte[] dest =NFS4StringPrep.cis_prepare(src.getBytes("UTF-8"));
+                String destString = new String(dest, "UTF-8");
+                if(!expectedDest.equalsIgnoreCase(destString)){
+                      errln("Did not get the expected output for nfs4_cis_prep at index " + i);
+                }
+            }catch(Exception e){
+                if(!expected.equals(e)){
+                    errln("Did not get the expected exception");
+                }
+            } 
+
+        }
+    }
+
+    public void TestCSPrep(){
+        
+        // Checking for bidi is turned off
+        String src = "\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774\u0644\u064A\u0647\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74";
+        try{
+            NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        
+        // normalization is turned off
+        try{
+            src = "www.\u00E0\u00B3\u00AF.com";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        
+        // test case insensitive string
+        try{
+            src = "THISISATEST";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.toLowerCase().equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        // test case sensitive string
+        try{
+            src = "THISISATEST";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), true);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+    }
+    
+    public void TestCoverage(){
+        if (new StringPrepParseException("coverage", 0, "", 0,0) == null){
+            errln("Construct StringPrepParseException(String, int, String, int, int)");
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TestAll.java b/src/com/ibm/icu/dev/test/timescale/TestAll.java
new file mode 100644
index 0000000..08ea6f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TestAll.java
@@ -0,0 +1,34 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                           *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run time scale tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public TestAll() {
+        super(
+            new String[] {
+                "TimeScaleAPITest",
+                "TimeScaleDataTest",
+                "TimeScaleMonkeyTest",
+            },
+            "All TimeScale tests");
+    }
+
+    public static void main(String[] args)
+    {
+        new TestAll().run(args);
+    }
+
+    public static final String CLASS_TARGET_NAME  = "TimeScale";
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
new file mode 100644
index 0000000..52de3ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
@@ -0,0 +1,356 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * Test UniversalTimeScale API
+ */
+public class TimeScaleAPITest extends TestFmwk
+{
+
+    /**
+     * 
+     */
+    public TimeScaleAPITest()
+    {
+    }
+    
+    public void TestBigDecimalFromBigDecimal()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(bigZero, -1);
+            errln("bigDecimalFrom(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("from(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestBigDecimalFromDouble()
+    {
+        try {
+            UniversalTimeScale.bigDecimalFrom(0.0, -1);
+            errln("bigDecimalFrom(0.0, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(0.0, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(0.0, " + scale + ") threw IllegalArgumentException.");
+            }
+       }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(0.0, UniversalTimeScale.MAX_SCALE);
+            errln("from(0.0, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestBigDecimalFromLong()
+    {
+        try {
+            UniversalTimeScale.bigDecimalFrom(0L, -1);
+            errln("bigDecimalFrom(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(0L, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+       }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(0L, UniversalTimeScale.MAX_SCALE);
+            errln("from(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestFromLong()
+    {
+        long result;
+        
+        try {
+            result = UniversalTimeScale.from(0L, -1);
+            errln("from(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.from failed as expected");
+        }
+
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            
+            try {
+                result = UniversalTimeScale.from(0L, scale);
+                logln("from(0L, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+
+            try {
+                result = UniversalTimeScale.from(fromMin, scale);
+                logln("from(fromMin, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(fromMin, " + scale + ") threw IllegalArgumentException.");
+            }
+             
+            if (fromMin > Long.MIN_VALUE) {
+                try {
+                    result = UniversalTimeScale.from(fromMin - 1, scale);
+                    errln("from(fromMin - 1, " + scale + ") did not throw IllegalArgumentException.");
+                } catch (IllegalArgumentException iae) {
+                    logln("PASS: UniversalTimeScale.from failed as expected");
+                }
+            }
+             
+            try {
+                result = UniversalTimeScale.from(fromMax, scale);
+                logln("from(fromMax, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(fromMax, " + scale + ") threw IllegalArgumentException.");
+            }
+              
+            if (fromMax < Long.MAX_VALUE) {
+                try {
+                    result = UniversalTimeScale.from(fromMax + 1, scale);
+                    errln("from(fromMax + 1, " + scale + ") did not throw IllegalArgumentException.");
+               } catch (IllegalArgumentException iae) {
+                logln("PASS: UniversalTimeScale.from failed as expected");
+               }
+            }
+       }
+        
+        try {
+            result = UniversalTimeScale.from(0L, UniversalTimeScale.MAX_SCALE);
+            errln("from(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.from failed as expected");
+        }
+    }
+    
+    public void TestGetTimeScale()
+    {
+        long value;
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(-1, 0);
+            errln("getTimeScaleValue(-1, 0) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(0, -1);
+            errln("getTimeScaleValue(0, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                value = UniversalTimeScale.getTimeScaleValue(scale, 0);
+                logln("getTimeScaleValue(" + scale + ", 0) returned " + value);
+            } catch (IllegalArgumentException iae) {
+                errln("getTimeScaleValue(" + scale + ", 0) threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(UniversalTimeScale.MAX_SCALE, 0);
+            errln("getTimeScaleValue(MAX_SCALE, 0) did not throw IllegalArgumentException");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(0, UniversalTimeScale.MAX_SCALE_VALUE);
+            errln("getTimeScaleValue(0, MAX_SCALE_VALUE) did not throw IllegalArgumentException");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+    }
+    
+    public void TestToBigDecimalFromBigDecimal()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.toBigDecimal(bigZero, -1);
+            errln("toBigDecimal(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimal(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimal(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimal(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimal(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+    }
+
+    public void TestToBigDecimalTrunc()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.toBigDecimalTrunc(bigZero, -1);
+            errln("toBigDecimalTrunc(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimalTrunc failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimalTrunc(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimalTrunc(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimalTrunc(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimalTrunc(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimalTrunc failed as expected");
+        }
+    }
+    
+    public void TestToBigDecimalFromLong()
+    {
+        try {
+            UniversalTimeScale.toBigDecimal(0L, -1);
+            errln("toBigDecimal(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimal(0L, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimal(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimal(0L, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimal(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+    }
+    
+    public void TestToLong()
+    {
+        long result;
+        
+        try {
+            result = UniversalTimeScale.toLong(0L, -1);
+            errln("toLong(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toLong failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long toMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE);
+            long toMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE);
+            
+            try {
+                result = UniversalTimeScale.toLong(0L, scale);
+                logln("toLong(0L, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+            
+            try {
+                result = UniversalTimeScale.toLong(toMin, scale);
+                logln("toLong(toMin, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(toMin, " + scale + ") threw IllegalArgumentException.");
+            }
+             
+            if (toMin > Long.MIN_VALUE) {
+                try {
+                    result = UniversalTimeScale.toLong(toMin - 1, scale);
+                    errln("toLong(toMin - 1, " + scale + ") did not throw IllegalArgumentException.");
+                } catch (IllegalArgumentException iae) {
+                    logln("PASS: UniversalTimeScale.toLong failed as expected");
+                }
+            }
+             
+            try {
+                result = UniversalTimeScale.toLong(toMax, scale);
+                logln("toLong(toMax, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(toMax, " + scale + ") threw IllegalArgumentException.");
+            }
+              
+            if (toMax < Long.MAX_VALUE) {
+                try {
+                    result = UniversalTimeScale.toLong(toMax + 1, scale);
+                    errln("toLong(toMax + 1, " + scale + ") did not throw IllegalArgumentException.");
+               } catch (IllegalArgumentException iae) {
+                logln("PASS: UniversalTimeScale.toLong failed as expected");
+               }
+            }
+       }
+        
+        try {
+            result = UniversalTimeScale.toLong(0L, UniversalTimeScale.MAX_SCALE);
+            errln("toLong(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toLong failed as expected");
+        }
+    }
+    
+    public static void main(String[] args)
+    {
+        new TimeScaleAPITest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
new file mode 100644
index 0000000..46c595a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
@@ -0,0 +1,258 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import java.util.Date;
+import java.util.Locale;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * @author Owner
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TimeScaleDataTest extends TestFmwk
+{
+
+    /**
+     * Default contstructor.
+     */
+    public TimeScaleDataTest()
+    {
+    }
+    
+    private void roundTripTest(long value, int scale)
+    {
+        long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
+        
+        if (rt != value) {
+            errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
+        }
+    }
+    
+    private void toLimitTest(long toLimit, long fromLimit, int scale)
+    {
+        long result = UniversalTimeScale.toLong(toLimit, scale);
+        
+        if (result != fromLimit) {
+            errln("toLimit failure: scale = " + scale + ", toLimit = " + toLimit +
+                  ", toLong(toLimit, scale) = " + result + ", fromLimit = " + fromLimit);
+        }
+    }
+    
+    private void epochOffsetTest(long epochOffset, long units, int scale)
+    {
+        long universalEpoch = epochOffset * units;
+        long local = UniversalTimeScale.toLong(universalEpoch, scale);
+        
+        if (local != 0) {
+            errln("toLong(epochOffset, scale): scale = " + scale + ", epochOffset = " + universalEpoch +
+                  ", result = " + local);
+        }
+        
+        local = UniversalTimeScale.toLong(0, scale);
+        
+        if (local != -epochOffset) {
+            errln("toLong(0, scale): scale = " + scale + ", result = " + local);
+        }
+        
+        long universal = UniversalTimeScale.from(-epochOffset, scale);
+        
+        if (universal != 0) {
+            errln("from(-epochOffest, scale): scale = " + scale + ", epochOffset = " + epochOffset +
+                  ", result = " + universal);
+        }
+        
+        universal = UniversalTimeScale.from(0, scale);
+        
+        if (universal != universalEpoch) {
+            errln("from(0, scale): scale = " + scale + ", result = " + universal);
+        }
+    }
+    
+    public void TestEpochOffsets()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long units       = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            long epochOffset = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_VALUE);
+            
+            epochOffsetTest(epochOffset, units, scale);
+        }
+    }
+
+    public void TestFromLimits()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            
+            roundTripTest(fromMin, scale);
+            roundTripTest(fromMax, scale);
+        }
+    }
+    
+    public void TestToLimits()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            long toMin   = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE);
+            long toMax   = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE);
+            
+            toLimitTest(toMin, fromMin, scale);
+            toLimitTest(toMax, fromMax, scale);
+       }
+    }
+
+    // Test with data from .Net System.DateTime ---------------------------- ***
+
+    /*
+     * This data was generated by C++.Net code like
+     * Console::WriteLine(L"    {{ {0}, 1, 1, INT64_C({1}) }},", year, DateTime(year, 1, 1).Ticks);
+     * with the DateTime constructor taking int values for year, month, and date.
+     */
+    static private final long dotNetDateTimeTicks[] = {
+        /* year, month, day, ticks */
+        100, 1, 1, 31241376000000000L,
+        100, 3, 1, 31292352000000000L,
+        200, 1, 1, 62798112000000000L,
+        200, 3, 1, 62849088000000000L,
+        300, 1, 1, 94354848000000000L,
+        300, 3, 1, 94405824000000000L,
+        400, 1, 1, 125911584000000000L,
+        400, 3, 1, 125963424000000000L,
+        500, 1, 1, 157469184000000000L,
+        500, 3, 1, 157520160000000000L,
+        600, 1, 1, 189025920000000000L,
+        600, 3, 1, 189076896000000000L,
+        700, 1, 1, 220582656000000000L,
+        700, 3, 1, 220633632000000000L,
+        800, 1, 1, 252139392000000000L,
+        800, 3, 1, 252191232000000000L,
+        900, 1, 1, 283696992000000000L,
+        900, 3, 1, 283747968000000000L,
+        1000, 1, 1, 315253728000000000L,
+        1000, 3, 1, 315304704000000000L,
+        1100, 1, 1, 346810464000000000L,
+        1100, 3, 1, 346861440000000000L,
+        1200, 1, 1, 378367200000000000L,
+        1200, 3, 1, 378419040000000000L,
+        1300, 1, 1, 409924800000000000L,
+        1300, 3, 1, 409975776000000000L,
+        1400, 1, 1, 441481536000000000L,
+        1400, 3, 1, 441532512000000000L,
+        1500, 1, 1, 473038272000000000L,
+        1500, 3, 1, 473089248000000000L,
+        1600, 1, 1, 504595008000000000L,
+        1600, 3, 1, 504646848000000000L,
+        1700, 1, 1, 536152608000000000L,
+        1700, 3, 1, 536203584000000000L,
+        1800, 1, 1, 567709344000000000L,
+        1800, 3, 1, 567760320000000000L,
+        1900, 1, 1, 599266080000000000L,
+        1900, 3, 1, 599317056000000000L,
+        2000, 1, 1, 630822816000000000L,
+        2000, 3, 1, 630874656000000000L,
+        2100, 1, 1, 662380416000000000L,
+        2100, 3, 1, 662431392000000000L,
+        2200, 1, 1, 693937152000000000L,
+        2200, 3, 1, 693988128000000000L,
+        2300, 1, 1, 725493888000000000L,
+        2300, 3, 1, 725544864000000000L,
+        2400, 1, 1, 757050624000000000L,
+        2400, 3, 1, 757102464000000000L,
+        2500, 1, 1, 788608224000000000L,
+        2500, 3, 1, 788659200000000000L,
+        2600, 1, 1, 820164960000000000L,
+        2600, 3, 1, 820215936000000000L,
+        2700, 1, 1, 851721696000000000L,
+        2700, 3, 1, 851772672000000000L,
+        2800, 1, 1, 883278432000000000L,
+        2800, 3, 1, 883330272000000000L,
+        2900, 1, 1, 914836032000000000L,
+        2900, 3, 1, 914887008000000000L,
+        3000, 1, 1, 946392768000000000L,
+        3000, 3, 1, 946443744000000000L,
+        1, 1, 1, 0L,
+        1601, 1, 1, 504911232000000000L,
+        1899, 12, 31, 599265216000000000L,
+        1904, 1, 1, 600527520000000000L,
+        1970, 1, 1, 621355968000000000L,
+        2001, 1, 1, 631139040000000000L,
+        9900, 3, 1, 3123873216000000000L,
+        9999, 12, 31, 3155378112000000000L
+    };
+
+    /*
+     * ICU's Universal Time Scale is designed to be tick-for-tick compatible with
+     * .Net System.DateTime. Verify that this is so for the
+     * .Net-supported date range (years 1-9999 AD).
+     * This requires a proleptic Gregorian calendar because that's what .Net uses.
+     * Proleptic: No Julian/Gregorian switchover, or a switchover before
+     * any date that we test, that is, before 0001 AD.
+     */
+    public void TestDotNet() {
+        TimeZone utc;
+        final long dayMillis = 86400 * 1000L;    /* 1 day = 86400 seconds */
+        final long dayTicks = 86400 * 10000000L;
+        final int kYear = 0;  // offset for dotNetDateTimeTicks[] field
+        final int kMonth = 1;
+        final int kDay = 2;
+        final int kTicks = 3;
+        final int kIncrement = 4;
+        GregorianCalendar cal;
+        long icuDate;
+        long ticks, millis;
+        int i;
+
+        /* Open a proleptic Gregorian calendar. */
+        long before0001AD = -1000000 * dayMillis;
+        utc = new SimpleTimeZone(0, "UTC");
+        cal = new GregorianCalendar(utc, Locale.ENGLISH);
+        cal.setGregorianChange(new Date(before0001AD));
+        for(i = 0; i < dotNetDateTimeTicks.length; i += kIncrement) {
+            /* Test conversion from .Net/Universal time to ICU time. */
+            millis = UniversalTimeScale.toLong(dotNetDateTimeTicks[i + kTicks], UniversalTimeScale.ICU4C_TIME);
+            cal.clear();
+            cal.set((int)dotNetDateTimeTicks[i + kYear],
+                    (int)dotNetDateTimeTicks[i + kMonth] - 1, /* Java & ICU use January = month 0. */
+                    (int)dotNetDateTimeTicks[i + kDay]);
+            icuDate = cal.getTimeInMillis();
+            if(millis != icuDate) {
+                /* Print days not millis. */
+                errln("UniversalTimeScale.toLong(ticks[" + i + "], ICU4C)=" +
+                      (millis/dayMillis) + " != " + (icuDate/dayMillis) +
+                      "=ucal_getMillis(" + dotNetDateTimeTicks[i + kYear] +
+                      "-" + dotNetDateTimeTicks[i + kMonth] +
+                      "-" + dotNetDateTimeTicks[i + kDay] + ")");
+            }
+
+            /* Test conversion from ICU time to .Net/Universal time. */
+            ticks = UniversalTimeScale.from(icuDate, UniversalTimeScale.ICU4C_TIME);
+            if(ticks != dotNetDateTimeTicks[i + kTicks]) {
+                /* Print days not ticks. */
+                errln("UniversalTimeScale.from(date[" + i + "], ICU4C)=" +
+                      (ticks/dayTicks) + " != " + dotNetDateTimeTicks[i + kTicks]/dayTicks +
+                      "=.Net System.DateTime(" + dotNetDateTimeTicks[i + kYear] +
+                      "-" + dotNetDateTimeTicks[i + kMonth] +
+                      "-" + dotNetDateTimeTicks[i + kDay] + ").Ticks");
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new TimeScaleDataTest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
new file mode 100644
index 0000000..6c2915c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
@@ -0,0 +1,105 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                           *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.math.BigDecimal;
+import java.util.Random;
+
+/**
+ * This class tests the UniversalTimeScale class by
+ * generating ramdon values in range and making sure
+ * that they round-trip correctly.
+ */
+public class TimeScaleMonkeyTest extends TestFmwk
+{
+
+    /**
+     * The default constructor.
+     */
+    public TimeScaleMonkeyTest()
+    {
+    }
+    
+    private static final int LOOP_COUNT = 1000;
+    private static final BigDecimal longMax = new BigDecimal(Long.MAX_VALUE);
+    
+    private Random ran = null;
+    
+    private long ranInt;
+    private long ranMin;
+    private long ranMax;
+    
+    private void initRandom(long min, long max)
+    {
+        BigDecimal interval = new BigDecimal(max).subtract(new BigDecimal(min));
+        
+        ranMin = min;
+        ranMax = max;
+        ranInt = 0;
+        
+        if (ran == null) {
+            ran = createRandom();
+        }
+        
+        if (interval.compareTo(longMax) < 0) {
+            ranInt = interval.longValue();
+        }
+    }
+    
+    private final long randomInRange()
+    {
+        long value;
+        
+        if (ranInt != 0) {
+            value = ran.nextLong() % ranInt;
+            
+            if (value < 0) {
+                value = -value;
+            }
+            
+            value += ranMin;
+        } else {
+            do {
+                value = ran.nextLong();
+            } while (value < ranMin || value > ranMax);
+        }
+        
+        return value;
+    }
+    
+    public void TestRoundTrip()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            int i = 0;
+            
+            initRandom(fromMin, fromMax);
+            
+            while (i < LOOP_COUNT) {
+                long value = randomInRange();
+                                
+                long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
+                
+                if (rt != value) {
+                    errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
+                }
+                
+                i += 1;
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new TimeScaleMonkeyTest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TestAll.java b/src/com/ibm/icu/dev/test/timezone/TestAll.java
new file mode 100644
index 0000000..0545f0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TestAll.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "TimeZoneTest",
+            "TimeZoneRegression",
+            "TimeZoneBoundaryTest",
+//             "TimeZoneAliasTest",
+            "TimeZoneRuleTest",
+            "TimeZoneOffsetLocalTest"
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "TimeZone";
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
new file mode 100644
index 0000000..cbc8d6f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -0,0 +1,421 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.timezone;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Iterator;
+
+import java.text.DateFormat;
+import java.text.NumberFormat;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.dev.test.util.BagFormatter;
+import com.ibm.icu.util.TimeZone;
+
+
+/**
+ * Class for testing TimeZones for consistency
+ * @author Davis
+ * 
+ */
+public class TimeZoneAliasTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new TimeZoneAliasTest().run(args);
+    }
+    
+    /**
+     * There are two things to check aliases for:<br>
+     * 1. the alias set must be uniform: if a isAlias b, then aliasSet(a) == aliasSet(b)<br>
+     * 2. all aliases must have the same offsets
+      */
+    public void TestAliases() {
+        Zone.Seconds seconds = new Zone.Seconds();
+        for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext(); ) {
+            Zone zone = (Zone)it.next();
+            String id = zone.id;
+            if (id.indexOf('/') < 0 && (id.endsWith("ST") || id.endsWith("DT"))) {
+                if (zone.minRecentOffset != zone.maxRecentOffset) {
+                    errln(
+                        "Standard or Daylight Time not constant: " + id 
+                        + ": " + Zone.formatHours(zone.minRecentOffset)
+                        + " != " + Zone.formatHours(zone.maxRecentOffset));
+                }
+            }
+            Set aliases = zone.getPurportedAliases();
+            Set aliasesSet = new TreeSet(aliases);
+            aliasesSet.add(id); // for comparison
+            Iterator aliasIterator = aliases.iterator();
+            while (aliasIterator.hasNext()) {
+                String otherId = (String)aliasIterator.next();
+                Zone otherZone = Zone.make(otherId);
+                Set otherAliases = otherZone.getPurportedAliases();
+                otherAliases.add(otherId); // for comparison
+                if (!aliasesSet.equals(otherAliases)) {
+                    errln(
+                        "Aliases Unsymmetric: "
+                        + id + " => " + Zone.bf.join(aliasesSet)
+                        + "; " 
+                        + otherId + " => " + Zone.bf.join(otherAliases));
+                }
+                if (zone.findOffsetOrdering(otherZone, seconds) != 0) {
+                    errln("Aliases differ: " + id + ", " + otherId
+                         + " differ at " + seconds);
+                }
+            }
+        }
+    }
+    
+    /**
+     * We check to see that every timezone that is not an alias is actually different!
+     */
+    public void TestDifferences() {
+        Zone last = null;
+        Zone.Seconds diffDate = new Zone.Seconds();        
+        for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext();) {
+            Zone testZone = (Zone)it.next();
+            if (last != null) {
+                String common = testZone + "\tvs " + last + ":\t";
+                int diff = testZone.findOffsetOrdering(last, diffDate);
+                if (diff != 0) {
+                    logln("\t" + common + "difference at: " + diffDate 
+                        + ", " + Zone.formatHours(diff) + "hr");
+                } else if (testZone.isRealAlias(last)) {
+                    logln("\t" + common + "alias, no difference");
+                } else {
+                    errln(common + "NOT ALIAS BUT NO DIFFERENCE!");
+                }
+            }
+            last = testZone;
+        }
+    }
+    
+    /**
+     * Utility for printing out zones to be translated.
+     */
+    public static void TestGenerateZones() {
+        int count = 1;
+        for (Iterator it = Zone.getUniqueZoneSet().iterator(); it.hasNext();) {
+            Zone zone = (Zone)it.next();
+            System.out.println(zone.toString(count++));
+        }
+    }
+    
+    /** Utility; ought to be someplace common
+     */
+    /*
+    static String join(Collection c, String separator) {
+        StringBuffer result = new StringBuffer();
+        boolean isFirst = true;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (!isFirst) result.append(separator);
+            else isFirst = false;
+            result.append(it.next().toString());
+        }
+        return result.toString();
+    }
+    */
+        
+    /**
+     * The guts is in this subclass. It sucks in all the data from the zones,
+     * and analyses it. It constructs some mappings for the unique ids,
+     * etc.<br>
+     * The main tricky bit is that for performance it pre-analyses all zones
+     * for inflections points; the points in time where the offset changes.
+     * The zones can then be sorted by those points, which allows us to
+     * avoid expensive comparisons.
+     * @author Davis
+     */
+    static class Zone implements Comparable {
+        // class fields
+        static private final BagFormatter bf = new BagFormatter().setSeparator(", ");
+        static private final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.US);
+        static private final NumberFormat nf = NumberFormat.getInstance(Locale.US);
+        static private final long HOUR = 1000*60*60;
+        static private final double DHOUR = HOUR;
+        static private final long DAY = 24*HOUR;
+        static private final long GROSS_PERIOD = 30*DAY;
+        static private final long EPSILON = HOUR/4;
+        static private final int currentYear = new GregorianCalendar().get(Calendar.YEAR);
+        static private final long endDate = getDate((currentYear+1),0,1).getTime();
+        static private final long endDate2 = getDate((currentYear+1),6,1).getTime();
+        static private final long recentLimit = getDate((currentYear-1),6,1).getTime();
+        static private final long startDate = getDate(1905,0,1).getTime();
+        
+        static private final Map idToZone = new HashMap();
+        static private final Set zoneSet = new TreeSet();
+        static private final Set uniqueZoneSet = new TreeSet();
+        static private final Map idToRealAliases = new HashMap();
+
+        // build everything once.
+        static {
+            String [] foo = TimeZone.getAvailableIDs();
+            for (int i = 0; i < foo.length; ++i) {
+                zoneSet.add(Zone.make(foo[i]));
+            }
+            Zone last = null;
+            Zone.Seconds diffDate = new Zone.Seconds();
+            String lastUnique = "";      
+            for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext();) {
+                Zone testZone = (Zone)it.next();
+                if (last == null) {
+                    uniqueZoneSet.add(testZone);
+                    lastUnique = testZone.id;
+                } else {
+                    int diff = testZone.findOffsetOrdering(last, diffDate);
+                    if (diff != 0) {
+                        uniqueZoneSet.add(testZone);
+                        lastUnique = testZone.id;
+                    } else {
+                        Set aliases = (Set)idToRealAliases.get(lastUnique);
+                        if (aliases == null) {
+                            aliases = new TreeSet();
+                            idToRealAliases.put(lastUnique, aliases);
+                        }
+                        aliases.add(testZone.id);
+                    }
+                }
+                last = testZone;
+            }
+        }
+        
+        static public Set getZoneSet() {
+            return zoneSet;
+        }
+        
+        public static Set getUniqueZoneSet() {
+            return uniqueZoneSet;
+        }
+
+        static public Zone make(String id) {
+            Zone result = (Zone)idToZone.get(id);
+            if (result != null) return result;
+            result = new Zone(id);
+            idToZone.put(id, result);
+            return result;
+        }
+        
+        static public String formatHours(int hours) {
+            return nf.format(hours/DHOUR);
+        }
+        
+        // utility class for date return, because Date is clunky.
+        public static class Seconds {
+            public long seconds = Long.MIN_VALUE;
+            public String toString() {
+                if (seconds == Long.MIN_VALUE) return "n/a";
+                return df.format(new Date(seconds));
+            }
+        }
+        
+        // instance fields
+        // we keep min/max offsets not only over all time (that we care about)
+        // but also separate ones for recent years.
+        private String id;
+        private TimeZone zone;
+        // computed below
+        private int minOffset;
+        private int maxOffset;
+        private int minRecentOffset;
+        private int maxRecentOffset;
+        private List inflectionPoints = new ArrayList();
+        private Set purportedAliases = new TreeSet();
+    
+        private Zone(String id) { // for interal use only; use make instead!
+            zone = TimeZone.getTimeZone(id);
+            this.id = id;
+            
+            // get aliases
+            int equivCount = TimeZone.countEquivalentIDs(id);
+            for (int j = 0; j < equivCount; ++j) {
+                String altID = TimeZone.getEquivalentID(id, j);
+                if (altID.equals(id)) continue;
+                purportedAliases.add(altID);
+            }
+
+            // find inflexion points; times where the offset changed
+            long lastDate = endDate;
+            if (zone.getOffset(lastDate) < zone.getOffset(endDate2)) lastDate = endDate2;
+            maxRecentOffset = minRecentOffset = minOffset = maxOffset = zone.getOffset(lastDate);
+
+            inflectionPoints.add(new Long(lastDate));
+            int lastOffset = zone.getOffset(endDate);
+            long lastInflection = endDate;
+            
+            // we do a gross search, then narrow in when we find a difference from the last one
+            for (long currentDate = endDate; currentDate >= startDate; currentDate -= GROSS_PERIOD) {
+                int currentOffset = zone.getOffset(currentDate);
+                if (currentOffset != lastOffset) { // Binary Search
+                    if (currentOffset < minOffset) minOffset = currentOffset;
+                    if (currentOffset > maxOffset) maxOffset = currentOffset;
+                    if (lastInflection >= recentLimit) {
+                        if (currentOffset < minRecentOffset) minRecentOffset = currentOffset;
+                        if (currentOffset > maxRecentOffset) maxRecentOffset = currentOffset;
+                    }
+                    long low = currentDate;
+                    long high = lastDate;
+                    while (low - high > EPSILON) {
+                        long mid = (high + low)/2;
+                        int midOffset = zone.getOffset(mid);
+                        if (midOffset == low) {
+                            low = mid;
+                        } else {
+                            high = mid;
+                        }
+                    }
+                    inflectionPoints.add(new Long(low));
+                    lastInflection = low;
+                }
+                lastOffset = currentOffset;
+            }
+            inflectionPoints.add(new Long(startDate)); // just to cap it off for comparisons.
+        }
+        
+        // we assume that places will not convert time zones then back within one day
+        // so we go first by half
+        public int findOffsetOrdering(Zone other, Seconds dateDiffFound) {
+            //System.out.println("-diff: " + id + "\t" + other.id);
+            int result = 0;
+            long seconds = 0;
+            int min = inflectionPoints.size();
+            if (other.inflectionPoints.size() < min) min = other.inflectionPoints.size();
+            main:
+            {
+                for (int i = 0; i < min; ++i) {
+                    long myIP = ((Long)inflectionPoints.get(i)).longValue();
+                    long otherIP = ((Long)other.inflectionPoints.get(i)).longValue();
+                    if (myIP > otherIP) { // take lowest, for transitivity (semi)
+                        long temp = myIP;
+                        myIP = otherIP;
+                        otherIP = temp;
+                    }
+                    result = zone.getOffset(myIP) - other.zone.getOffset(myIP);
+                    if (result != 0) {
+                        seconds = myIP;
+                        break main;
+                    } 
+                    if (myIP == otherIP) continue; // test other if different
+                    myIP = otherIP;
+                    result = zone.getOffset(myIP) - other.zone.getOffset(myIP);
+                    if (result != 0) {
+                        seconds = myIP;
+                        break main;
+                    } 
+                }
+                // if they are equal so far, we don't care about the rest
+                result = 0;
+                seconds = Long.MIN_VALUE;
+                break main;
+            }
+            //System.out.println("+diff: " + (result/HOUR) + "\t" + dateDiffFound);
+            if (dateDiffFound != null) dateDiffFound.seconds = seconds;
+            return result;
+        }
+        
+        // internal buffer to avoid creation all the time.
+        private Seconds diffDateReturn = new Seconds();
+        
+        public int compareTo(Object o) {
+            Zone other = (Zone)o;
+            // first order by max and min offsets
+            // min will usually correspond to standard time, max to daylight
+            // unless there have been historical shifts
+            if (minRecentOffset < other.minRecentOffset) return -1;
+            if (minRecentOffset > other.minRecentOffset) return 1;
+            if (maxRecentOffset < other.maxRecentOffset) return -1;
+            if (maxRecentOffset > other.maxRecentOffset) return 1;
+            // now check that all offsets are the same over history
+            int diffDate = findOffsetOrdering(other, diffDateReturn);
+            if (diffDate != 0) return diffDate;
+            // choose longer name first!!
+            if (id.length() != other.id.length()) {
+                if (id.length() < other.id.length()) return 1;
+                return -1;
+            }
+            return id.compareTo(other.id);
+        }
+        
+        public Set getPurportedAliases() {
+            return new TreeSet(purportedAliases); // clone for safety
+        }
+        
+        public boolean isPurportedAlias(String zoneID) {
+            return purportedAliases.contains(zoneID);
+        }
+        
+        public boolean isRealAlias(Zone z) {
+            return purportedAliases.contains(z.id);
+        }
+        
+        public String getPurportedAliasesAsString() {
+            Set s = getPurportedAliases();
+            if (s.size() == 0) return "";
+            return " " + bf.join(s);
+        }
+        
+        public String getRealAliasesAsString() {
+            Set s = (Set)idToRealAliases.get(id);
+            if (s == null) return "";
+            return " *" + bf.join(s);
+        }
+        
+        public String getCity() {
+            int pos = id.lastIndexOf(('/'));
+            String city = id.substring(pos+1);
+            return city.replace('_',' ');
+        }
+
+        public String toString() {
+            return toString(-1);
+        }
+        
+        /**
+         * Where count > 0, returns string that is set up for translation
+         */
+        public String toString(int count) {
+            String city = getCity();
+            String hours = formatHours(minRecentOffset)
+                + (minRecentOffset != maxRecentOffset 
+                    ? "," + formatHours(maxRecentOffset) 
+                    : "");
+            if (count < 0) {
+                return id + getPurportedAliasesAsString() + " (" + hours + ")";
+            } 
+            // for getting template for translation
+            return "\t{\t\"" + id + "\"\t// [" + count + "] " + hours 
+                + getRealAliasesAsString() + "\r\n"
+                + "\t\t// translate the following!!\r\n"
+                + (minRecentOffset != maxRecentOffset
+                    ? "\t\t\"" + city + " Standard Time\"\r\n"
+                    + "\t\t\"" + city + "-ST\"\r\n"
+                    + "\t\t\"" + city + " Daylight Time\"\r\n"
+                    + "\t\t\"" + city + "-DT\"\r\n"
+                    : "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n")
+                + "\t\t\"" + city + " Time\"\r\n"
+                + "\t\t\"" + city + "-T\"\r\n"
+                + "\t\t\"" + city + "\"\r\n"
+                + "\t}";
+        }
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
new file mode 100644
index 0000000..5f47032
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -0,0 +1,852 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+
+/**
+ * A test which discovers the boundaries of DST programmatically and verifies
+ * that they are correct.
+ */
+public class TimeZoneBoundaryTest extends TestFmwk
+{
+    static final int ONE_SECOND = 1000;
+    static final int ONE_MINUTE = 60*ONE_SECOND;
+    static final int ONE_HOUR = 60*ONE_MINUTE;
+    static final long ONE_DAY = 24*ONE_HOUR;
+    static final long ONE_YEAR = (long)(365.25 * ONE_DAY);
+    static final long SIX_MONTHS = ONE_YEAR / 2;
+
+    static final int MONTH_LENGTH[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+
+    // These values are empirically determined to be correct
+    static final long PST_1997_BEG  = 860320800000L;
+    static final long PST_1997_END  = 877856400000L;
+
+    // Minimum interval for binary searches in ms; should be no larger
+    // than 1000.
+    static final long INTERVAL = 10; // Milliseconds
+
+    // [3Jan01 Liu] Updated for 2000f data
+    static final String AUSTRALIA = "Australia/Adelaide";
+    static final long AUSTRALIA_1997_BEG = 877797000000L;
+    static final long AUSTRALIA_1997_END = 859653000000L;
+    
+    public static void main(String[] args) throws Exception {
+        new TimeZoneBoundaryTest().run(args);
+    }
+
+    /**
+     * Date.toString().substring() Boundary Test
+     * Look for a DST changeover to occur within 6 months of the given Date.
+     * The initial Date.toString() should yield a string containing the
+     * startMode as a SUBSTRING.  The boundary will be tested to be
+     * at the expectedBoundary value.
+     */
+    void findDaylightBoundaryUsingDate(Date d, String startMode, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        if (d.toString().indexOf(startMode) == -1)
+        {
+            logln("Error: " + startMode + " not present in " + d);
+        }
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            String s = new Date(mid).toString();
+            // logln(s);
+            if (s.indexOf(startMode) != -1)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Date Before: " + showDate(min));
+        logln("Date After:  " + showDate(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    // This test cannot be compiled until the inDaylightTime() method of GregorianCalendar
+    // becomes public.
+    //    static void findDaylightBoundaryUsingCalendar(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  GregorianCalendar cal = new GregorianCalendar();
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * 24*60*60*1000);
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Calendar Before: " + showDate(min));
+    //  logln("Calendar After:  " + showDate(max));
+    //    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST, long expectedBoundary)
+    {
+        findDaylightBoundaryUsingTimeZone(d, startsInDST, expectedBoundary,
+                                          TimeZone.getDefault());
+    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST,
+                                           long expectedBoundary, TimeZone tz)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        if (tz.inDaylightTime(d) != startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  d + ") != " + startsInDST);
+            startsInDST = !startsInDST; // Flip over; find the apparent value
+        }
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  (new Date(max)) + ") != " + (!startsInDST));
+            return;
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            boolean isIn = tz.inDaylightTime(new Date(mid));
+            if (isIn == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln(tz.getID() + " Before: " + showDate(min, tz));
+        logln(tz.getID() + " After:  " + showDate(max, tz));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary; 
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(tz);
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+    }
+
+    private static String showDate(long l)
+    {
+        return showDate(new Date(l));
+    }
+
+    private static String showDate(Date d)
+    {
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" 
+               + showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               d.getTime();
+    }
+
+    private static String showDate(long l, TimeZone z)
+    {
+        return showDate(new Date(l), z);
+    }
+
+    private static String showDate(Date d, TimeZone zone)
+    {
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(zone);
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" + 
+               showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               fmt.format(d) + " = " + d.getTime();
+    }
+
+    private static String showNN(int n)
+    {
+        return ((n < 10) ? "0" : "") + n;
+    }
+
+    /**
+     * Given a date, a TimeZone, and expected values for inDaylightTime,
+     * useDaylightTime, zone and DST offset, verify that this is the case.
+     */
+    void verifyDST(String tag, Calendar cal, TimeZone time_zone,
+                   boolean expUseDaylightTime, boolean expInDaylightTime,
+                   int expRawOffset, int expOffset)
+    {
+        Date d = cal.getTime();
+
+        logln("-- " + tag + ": " + d +
+              " in zone " + time_zone.getID() + " (" +
+              d.getTime()/3600000.0 + ")");
+
+        if (time_zone.inDaylightTime(d) == expInDaylightTime)
+            logln("PASS: inDaylightTime = " + time_zone.inDaylightTime(d));
+        else
+            errln("FAIL: inDaylightTime = " + time_zone.inDaylightTime(d));
+
+        if (time_zone.useDaylightTime() == expUseDaylightTime)
+            logln("PASS: useDaylightTime = " + time_zone.useDaylightTime());
+        else
+            errln("FAIL: useDaylightTime = " + time_zone.useDaylightTime());
+
+        if (time_zone.getRawOffset() == expRawOffset)
+            logln("PASS: getRawOffset() = " + expRawOffset/(double)ONE_HOUR);
+        else
+            errln("FAIL: getRawOffset() = " + time_zone.getRawOffset()/(double)ONE_HOUR +
+                  "; expected " + expRawOffset/(double)ONE_HOUR);
+
+        //GregorianCalendar gc = new GregorianCalendar(time_zone);
+        //gc.setTime(d);
+        int offset = time_zone.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                                         cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK),
+                                         ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                                           cal.get(Calendar.MINUTE)) * 60 +
+                                          cal.get(Calendar.SECOND)) * 1000 +
+                                         cal.get(Calendar.MILLISECOND));
+        if (offset == expOffset)
+            logln("PASS: getOffset() = " + offset/(double)ONE_HOUR);
+        else {
+            logln("era=" + cal.get(Calendar.ERA) +
+                  ", year=" + cal.get(Calendar.YEAR) +
+                  ", month=" + cal.get(Calendar.MONTH) +
+                  ", dom=" + cal.get(Calendar.DAY_OF_MONTH) +
+                  ", dow=" + cal.get(Calendar.DAY_OF_WEEK) +
+                  ", time-of-day=" + (((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                               cal.get(Calendar.MINUTE)) * 60 +
+                              cal.get(Calendar.SECOND)) * 1000 +
+                             cal.get(Calendar.MILLISECOND)) / 3600000.0 +
+                            " hours");
+            errln("FAIL: getOffset() = " + offset/(double)ONE_HOUR +
+                  "; expected " + expOffset/(double)ONE_HOUR);
+        }
+    }
+
+    /**
+     * Check that the given year/month/dom/hour maps to and from the
+     * given epochHours.  This verifies the functioning of the
+     * calendar and time zone in conjunction with one another,
+     * including the calendar time->fields and fields->time and
+     * the time zone getOffset method.
+     *
+     * @param epochHours hours after Jan 1 1970 0:00 GMT.
+     */
+    void verifyMapping(Calendar cal, int year, int month, int dom, int hour,
+                       double epochHours) {
+        double H = 3600000.0;
+        cal.clear();
+        cal.set(year, month, dom, hour, 0, 0);
+        Date d = cal.getTime();
+        double e = d.getTime() / H;
+        Date ed = new Date((long)(epochHours * H));
+        if (e == epochHours) {
+            logln("Ok: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+                  e + " (" + ed + ")");
+        } else {
+            errln("FAIL: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+                  e + " (" + new Date((long)(e * H)) + ")" +
+                  ", expected " + epochHours + " (" + ed + ")");
+        }
+        cal.setTime(ed);
+        if (cal.get(Calendar.YEAR) == year &&
+            cal.get(Calendar.MONTH) == month &&
+            cal.get(Calendar.DATE) == dom &&
+            cal.get(Calendar.MILLISECONDS_IN_DAY) == hour * 3600000) {
+            logln("Ok: " + epochHours + " (" + ed + ") => " +
+                  cal.get(Calendar.YEAR) + "/" +
+                  (cal.get(Calendar.MONTH)+1) + "/" +
+                  cal.get(Calendar.DATE) + " " +
+                  cal.get(Calendar.MILLISECONDS_IN_DAY)/H);
+        } else {
+            errln("FAIL: " + epochHours + " (" + ed + ") => " +
+                  cal.get(Calendar.YEAR) + "/" +
+                  (cal.get(Calendar.MONTH)+1) + "/" +
+                  cal.get(Calendar.DATE) + " " +
+                  cal.get(Calendar.MILLISECONDS_IN_DAY)/H +
+                  ", expected " + year + "/" + (month+1) + "/" + dom +
+                  " " + hour);
+        }
+    }
+
+// NOTE: Enable this code to check the behavior of the underlying JDK,
+// using a JDK Calendar object.
+//
+//    int millisInDay(java.util.Calendar cal) {
+//        return ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+//                 cal.get(Calendar.MINUTE)) * 60 +
+//                cal.get(Calendar.SECOND)) * 1000 +
+//            cal.get(Calendar.MILLISECOND);
+//    }
+//
+//    void verifyMapping(java.util.Calendar cal, int year, int month, int dom, int hour,
+//                       double epochHours) {
+//        cal.clear();
+//        cal.set(year, month, dom, hour, 0, 0);
+//        Date d = cal.getTime();
+//        double e = d.getTime() / 3600000.0;
+//        Date ed = new Date((long)(epochHours * 3600000));
+//        if (e == epochHours) {
+//            logln("Ok: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+//                  e + " (" + ed + ")");
+//        } else {
+//            errln("FAIL: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+//                  e + " (" + new Date((long)(e * 3600000)) + ")" +
+//                  ", expected " + epochHours + " (" + ed + ")");
+//        }
+//        cal.setTime(ed);
+//        if (cal.get(Calendar.YEAR) == year &&
+//            cal.get(Calendar.MONTH) == month &&
+//            cal.get(Calendar.DATE) == dom &&
+//            millisInDay(cal) == hour * 3600000) {
+//            logln("Ok: " + epochHours + " (" + ed + ") => " +
+//                  cal.get(Calendar.YEAR) + "/" +
+//                  (cal.get(Calendar.MONTH)+1) + "/" +
+//                  cal.get(Calendar.DATE) + " " +
+//                  millisInDay(cal)/3600000.0);
+//        } else {
+//            errln("FAIL: " + epochHours + " (" + ed + ") => " +
+//                  cal.get(Calendar.YEAR) + "/" +
+//                  (cal.get(Calendar.MONTH)+1) + "/" +
+//                  cal.get(Calendar.DATE) + " " +
+//                  millisInDay(cal)/3600000.0 +
+//                  ", expected " + year + "/" + (month+1) + "/" + dom +
+//                  " " + hour);
+//        }
+//    }
+
+    public void TestBoundaries()
+    {
+        TimeZone save = TimeZone.getDefault();
+
+        // Check basic mappings.  We had a problem with this for ICU
+        // 2.8 after migrating to using pass-through time zones.  The
+        // problem appeared only on JDK 1.3.
+        TimeZone pst = safeGetTimeZone("PST");
+        Calendar tempcal = Calendar.getInstance(pst);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 3,  0, 238904.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 4,  0, 238928.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 5,  0, 238952.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 5, 23, 238975.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  0, 238976.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  1, 238977.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  3, 238978.0);
+        
+        TimeZone utc = safeGetTimeZone("UTC");
+        Calendar utccal = Calendar.getInstance(utc);
+        verifyMapping(utccal, 1997, Calendar.APRIL, 6, 0, 238968.0);
+
+// NOTE: Enable this code to check the behavior of the underlying JDK,
+// using a JDK Calendar object.
+//
+//        java.util.TimeZone jdkpst = java.util.TimeZone.getTimeZone("PST");
+//        java.util.Calendar jdkcal = java.util.Calendar.getInstance(jdkpst);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 5,  0, 238952.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 5, 23, 238975.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  0, 238976.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  1, 238977.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  3, 238978.0);
+
+        tempcal.clear();
+        tempcal.set(1997, Calendar.APRIL, 6);
+        Date d = tempcal.getTime();
+
+        try {
+            TimeZone.setDefault(pst);
+
+            // DST changeover for PST is 4/6/1997 at 2 hours past midnight
+            // at 238978.0 epoch hours.
+
+            // i is minutes past midnight standard time
+            for (int i=-120; i<=180; i+=60)
+            {
+                boolean inDST = (i >= 120);
+                tempcal.setTimeInMillis(d.getTime() + i*60*1000);
+                verifyDST("hour=" + i/60,
+                          tempcal, pst, true, inDST, -8*ONE_HOUR,
+                          inDST ? -7*ONE_HOUR : -8*ONE_HOUR);
+            }
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        // This test case does not work well with JRE1.3 with
+//##        // the timezone update for US 2007 rule.  Java 1.3 only
+//##        // supports single DST rule for all years.  Thus, the
+//##        // new rule is also applied to year 1997 incorrectly.
+//#else
+        if (true)
+        {
+            // This only works in PST/PDT
+            TimeZone.setDefault(safeGetTimeZone("PST"));
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PST", PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PDT", PST_1997_END);
+        }
+//#endif
+
+        //  if (true)
+        //  {
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,0,1), false);
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,6,1), true);
+        //  }
+
+        if (true)
+        {
+            // Southern hemisphere test
+            logln("========================================");
+            TimeZone z = safeGetTimeZone(AUSTRALIA);
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, AUSTRALIA_1997_END, z);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, AUSTRALIA_1997_BEG, z);
+        }
+
+        if (true)
+        {
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, PST_1997_END);
+        }
+
+        // This just shows the offset for April 4-7 in 1997.  This is redundant
+        // with a test above, so we disable it.
+        if (false)
+        {
+            TimeZone z = TimeZone.getDefault();
+            tempcal.set(1997, 3, 4);
+            logln(z.getOffset(1, 97, 3, 4, 6, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 5);
+            logln(z.getOffset(1, 97, 3, 5, 7, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 6);
+            logln(z.getOffset(1, 97, 3, 6, 1, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 7);
+            logln(z.getOffset(1, 97, 3, 7, 2, 0) + " " + tempcal.getTime());
+        }
+    }
+
+
+    //----------------------------------------------------------------------
+    // Can't do any of these without a public inDaylightTime in GC
+    //----------------------------------------------------------------------
+
+
+    //    static GregorianCalendar cal = new GregorianCalendar();
+    //
+    //    static void _testUsingBinarySearch(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * ONE_DAY);
+    //
+    //  // First check the max
+    //  cal.setTime(new Date(max));
+    //  if (cal.inDaylightTime() == startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+    //  }
+    //
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Binary Search Before: " + showDate(min));
+    //  logln("Binary Search After:  " + showDate(max));
+    //    }
+    //
+    //    static void _testUsingMillis(Date d, boolean startsInDST)
+    //    {
+    //  long millis = d.getTime();
+    //  long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+    //
+    //  boolean lastDST = startsInDST;
+    //  while (millis < max)
+    //  {
+    //      cal.setTime(new Date(millis));
+    //      boolean inDaylight = cal.inDaylightTime();
+    //
+    //      if (inDaylight != lastDST)
+    //      {
+    //      logln("Switch " + (inDaylight ? "into" : "out of")
+    //                 + " DST at " + (new Date(millis)));
+    //      lastDST = inDaylight;
+    //      }
+    //
+    //      millis += 15*ONE_MINUTE;
+    //  }
+    //    }
+    //
+    //    static void _testUsingFields(int y, boolean startsInDST)
+    //    {
+    //  boolean lastDST = startsInDST;
+    //  for (int m = 0; m < 12; ++m)
+    //  {
+    //      for (int d = 1; d <= MONTH_LENGTH[m]; ++d)
+    //      {
+    //      for (int h = 0; h < 24; ++h)
+    //      {
+    //          for (int min = 0; min < 60; min += 15)
+    //          {
+    //          cal.clear();
+    //          cal.set(y, m, d, h, min);
+    //          boolean inDaylight = cal.inDaylightTime();
+    //          if (inDaylight != lastDST)
+    //          {
+    //              lastDST = inDaylight;
+    //              log("Switch " + (lastDST ? "into" : "out of")
+    //                       + " DST at " + y + "/" + (m+1) + "/" + d
+    //                       + " " + showNN(h) + ":" + showNN(min));
+    //              logln(" " + cal.getTime());
+    //
+    //              cal.set(y, m, d, h-1, 45);
+    //              log("Before = "
+    //+ y + "/" + (m+1) + "/" + d
+    //+ " " + showNN(h-1) + ":" + showNN(45));
+    //              logln(" " + cal.getTime());
+    //          }
+    //          }
+    //      }
+    //      }
+    //  }
+    //    }
+    //
+    //    public void Test1()
+    //    {
+    //  logln(Locale.getDefault().getDisplayName());
+    //  logln(TimeZone.getDefault().getID());
+    //  logln(new Date(0));
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,0,1), false);
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,6,1), true);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using millis");
+    //      _testUsingMillis(new Date(97,0,1), false);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using fields");
+    //      _testUsingFields(1997, false);
+    //  }
+    //
+    //  if (false)
+    //  {
+    //      cal.clear();
+    //      cal.set(1997, 3, 5, 10, 0);
+    //      //  cal.inDaylightTime();
+    //      logln("Date = " + cal.getTime());
+    //      logln("Millis = " + cal.getTime().getTime()/3600000);
+    //  }
+    //    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, Date d, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + (long)(365.25 / 2 * ONE_DAY);
+
+        // First check the boundaries
+        boolean startsInDST = tz.inDaylightTime(d);
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            errln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Binary Search Before: " + showDate(min));
+        logln("Binary Search After:  " + showDate(max));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    /*
+      static void _testUsingMillis(Date d, boolean startsInDST)
+      {
+      long millis = d.getTime();
+      long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+
+      boolean lastDST = startsInDST;
+      while (millis < max)
+      {
+      cal.setTime(new Date(millis));
+      boolean inDaylight = cal.inDaylightTime();
+
+      if (inDaylight != lastDST)
+      {
+      logln("Switch " + (inDaylight ? "into" : "out of")
+      + " DST at " + (new Date(millis)));
+      lastDST = inDaylight;
+      }
+
+      millis += 15*ONE_MINUTE;
+      }
+      }
+      */
+
+    /**
+     * Test new rule formats.
+     */
+    public void TestNewRules()
+    {
+        //logln(Locale.getDefault().getDisplayName());
+        //logln(TimeZone.getDefault().getID());
+        //logln(new Date(0));
+
+        if (true)
+        {
+            // Doesn't matter what the default TimeZone is here, since we
+            // are creating our own TimeZone objects.
+
+            SimpleTimeZone tz;
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+
+            logln("-----------------------------------------------------------------");
+            logln("Aug 2ndTues .. Mar 15");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_1",
+                                    Calendar.AUGUST, 2, Calendar.TUESDAY, 2*ONE_HOUR,
+                                    Calendar.MARCH, 15, 0, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 858416400000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 871380000000L);
+
+            logln("-----------------------------------------------------------------");
+            logln("Apr Wed>=14 .. Sep Sun<=20");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_2",
+                                    Calendar.APRIL, 14, -Calendar.WEDNESDAY, 2*ONE_HOUR,
+                                    Calendar.SEPTEMBER, -20, -Calendar.SUNDAY, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 861184800000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 874227600000L);
+        }
+
+        /*
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using millis");
+          _testUsingMillis(new Date(97,0,1), false);
+          }
+
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using fields");
+          _testUsingFields(1997, false);
+          }
+
+          if (false)
+          {
+          cal.clear();
+          cal.set(1997, 3, 5, 10, 0);
+          //    cal.inDaylightTime();
+          logln("Date = " + cal.getTime());
+          logln("Millis = " + cal.getTime().getTime()/3600000);
+          }
+          */
+    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    // Long Bug
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    //public void Test3()
+    //{
+    //    findDaylightBoundaryUsingTimeZone(new Date(97,6,1), true);
+    //}
+
+    /**
+     * Find boundaries by stepping.
+     */
+    void findBoundariesStepwise(int year, long interval, TimeZone z, int expectedChanges)
+    {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(year, Calendar.JANUARY, 1);
+        Date d = tempcal.getTime();
+        long time = d.getTime(); // ms
+        long limit = time + ONE_YEAR + ONE_DAY;
+        boolean lastState = z.inDaylightTime(d);
+        int changes = 0;
+        logln("-- Zone " + z.getID() + " starts in " + year + " with DST = " + lastState);
+        logln("useDaylightTime = " + z.useDaylightTime());
+        while (time < limit)
+        {
+            d.setTime(time);
+            boolean state = z.inDaylightTime(d);
+            if (state != lastState)
+            {
+                logln((state ? "Entry " : "Exit ") +
+                      "at " + d);
+                lastState = state;
+                ++changes;
+            }
+            time += interval;
+        }
+        if (changes == 0)
+        {
+            if (!lastState && !z.useDaylightTime()) logln("No DST");
+            else errln("FAIL: DST all year, or no DST with true useDaylightTime");
+        }
+        else if (changes != 2)
+        {
+            errln("FAIL: " + changes + " changes seen; should see 0 or 2");
+        }
+        else if (!z.useDaylightTime())
+        {
+            errln("FAIL: useDaylightTime false but 2 changes seen");
+        }
+        if (changes != expectedChanges)
+        {
+            errln("FAIL: " + changes + " changes seen; expected " + expectedChanges);
+        }
+    }
+
+    public void TestStepwise()
+    {
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("America/New_York"), 2);
+        // disabled Oct 2003 aliu; ACT could mean anything, depending on the underlying JDK, as of 2.8
+        // findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("ACT"), 2);
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("America/Phoenix"), 0); // Added 3Jan01
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone(AUSTRALIA), 2);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
new file mode 100644
index 0000000..d375682
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
@@ -0,0 +1,240 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import java.util.Date;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Testing getOffset APIs using local time
+ */
+public class TimeZoneOffsetLocalTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneOffsetLocalTest().run(args);
+    }
+
+    /*
+     * Testing getOffset APIs around rule transition by local standard/wall time.
+     */
+    public void TestGetOffsetAroundTransition() {
+        final int HOUR = 60*60*1000;
+        final int MINUTE = 60*1000;
+
+        int[][] DATES = {
+            {2006, Calendar.APRIL, 2, 1, 30, 1*HOUR+30*MINUTE},
+            {2006, Calendar.APRIL, 2, 2, 00, 2*HOUR},
+            {2006, Calendar.APRIL, 2, 2, 30, 2*HOUR+30*MINUTE},
+            {2006, Calendar.APRIL, 2, 3, 00, 3*HOUR},
+            {2006, Calendar.APRIL, 2, 3, 30, 3*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 0, 30, 0*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 1, 00, 1*HOUR},
+            {2006, Calendar.OCTOBER, 29, 1, 30, 1*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 2, 00, 2*HOUR},
+            {2006, Calendar.OCTOBER, 29, 2, 30, 2*HOUR+30*MINUTE},
+        };
+
+        // Expected offsets by getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)
+        int[] OFFSETS1 = {
+            // April 2, 2006
+            -8*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+
+            // October 29, 2006
+            -7*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+        };
+
+        
+        // Expected offsets by getOffset(long time, boolean local, int[] offsets) with local = true
+        // or getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_STD/duplicatedTimeOpt = LOCAL_STD
+        int[][] OFFSETS2 = {
+            // April 2, 2006
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+
+            // Oct 29, 2006
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+        };
+
+        // Expected offsets by getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_DST/duplicatedTimeOpt = LOCAL_DST
+        int[][] OFFSETS3 = {
+            // April 2, 2006
+            {-8*HOUR, 0},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+
+            // October 29, 2006
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+        };
+
+        int[] offsets = new int[2];
+
+        TimeZone utc = TimeZone.getTimeZone("UTC");
+        Calendar cal = Calendar.getInstance(utc);
+        cal.clear();
+
+        // Set up TimeZone objects - OlsonTimeZone, SimpleTimeZone and RuleBasedTimeZone
+        BasicTimeZone[] TESTZONES = new BasicTimeZone[3];
+
+        TESTZONES[0] = (BasicTimeZone)TimeZone.getTimeZone("America/Los_Angeles", TimeZone.TIMEZONE_ICU);
+        TESTZONES[1] = new SimpleTimeZone(-8*HOUR, "Simple Pacific Time",
+                                            Calendar.APRIL, 1, Calendar.SUNDAY, 2*HOUR,
+                                            Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*HOUR);
+
+        InitialTimeZoneRule ir = new InitialTimeZoneRule(
+                "Pacific Standard Time", // Initial time Name
+                -8*HOUR,        // Raw offset
+                0*HOUR);        // DST saving amount
+
+        RuleBasedTimeZone rbPT = new RuleBasedTimeZone("Rule based Pacific Time", ir);
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule atzr;
+        final int STARTYEAR = 2000;
+
+        dtr = new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME); // 1st Sunday in April, at 2AM wall time
+        atzr = new AnnualTimeZoneRule("Pacific Daylight Time",
+                -8*HOUR /* rawOffset */, 1*HOUR /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbPT.addTransitionRule(atzr);
+
+        dtr = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME); // last Sunday in October, at 2AM wall time
+        atzr = new AnnualTimeZoneRule("Pacific Standard Time",
+                -8*HOUR /* rawOffset */, 0 /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbPT.addTransitionRule(atzr);
+
+        TESTZONES[2] = rbPT;
+
+        // Calculate millis
+        long [] MILLIS = new long[DATES.length];
+        for (int i = 0; i < DATES.length; i++) {
+            cal.clear();
+            cal.set(DATES[i][0], DATES[i][1], DATES[i][2], DATES[i][3], DATES[i][4]);
+            MILLIS[i] = cal.getTimeInMillis();
+        }
+
+        DateFormat df = DateFormat.getInstance();
+        df.setTimeZone(utc);
+
+        // Test getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int d = 0; d < DATES.length; d++) {
+                int offset = TESTZONES[i].getOffset(GregorianCalendar.AD, DATES[d][0], DATES[d][1], DATES[d][2],
+                                                    Calendar.SUNDAY, DATES[d][5]);
+                if (offset != OFFSETS1[d]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[d])) + "(standard) - Got: " + offset + " Expected: " + OFFSETS1[d]);
+                }
+            }
+        }
+
+        // Test getOffset(long time, boolean local, int[] offsets) with local=true
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffset(MILLIS[m], true, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_STD/duplicatedTimeOpt = LOCAL_STD
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_STD, BasicTimeZone.LOCAL_STD, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/STD/STD) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_DST/duplicatedTimeOpt = LOCAL_DST
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_DST, BasicTimeZone.LOCAL_DST, offsets);
+                if (offsets[0] != OFFSETS3[m][0] || offsets[1] != OFFSETS3[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/DST/DST) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_FORMER/duplicatedTimeOpt = LOCAL_LATTER
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_FORMER, BasicTimeZone.LOCAL_LATTER, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/FORMER/LATTER) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_LATTER/duplicatedTimeOpt = LOCAL_FORMER
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_LATTER, BasicTimeZone.LOCAL_FORMER, offsets);
+                if (offsets[0] != OFFSETS3[m][0] || offsets[1] != OFFSETS3[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/LATTER/FORMER) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
new file mode 100644
index 0000000..8b0fcc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -0,0 +1,1154 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * @test 1.18 99/09/21
+ * @bug 4052967 4073209 4073215 4084933 4096952 4109314 4126678 4151406 4151429
+ * @bug 4154525 4154537 4154542 4154650 4159922 4162593 4173604 4176686 4184229 4208960
+ */
+
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.util.*;
+import java.io.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+import java.util.Locale;
+
+public class TimeZoneRegression extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneRegression().run(args);
+    }
+
+    public void Test4052967() {
+        logln("*** CHECK TIMEZONE AGAINST HOST OS SETTING ***");
+        String id = TimeZone.getDefault().getID();
+        try {
+            // user.timezone is a protected system property
+            logln("user.timezone: " + System.getProperty("user.timezone", "<not set>"));
+            logln("TimeZone.getDefault().getID(): " + id);
+            logln(new Date().toString());
+            logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+        }
+        catch (SecurityException e) {
+            warnln("security exception: " + e.toString());
+        }
+    }
+
+    public void Test4073209() {
+        TimeZone z1 = TimeZone.getTimeZone("PST");
+        TimeZone z2 = TimeZone.getTimeZone("PST");
+        if (z1 == z2) errln("Fail: TimeZone should return clones");
+    }
+
+    public void Test4073215() {
+        SimpleTimeZone z = new SimpleTimeZone(0, "GMT");
+        if (z.useDaylightTime())
+            errln("Fail: Fix test to start with non-DST zone");
+        z.setStartRule(Calendar.FEBRUARY, 1, Calendar.SUNDAY, 0);
+        z.setEndRule(Calendar.MARCH, -1, Calendar.SUNDAY, 0);
+        if (!z.useDaylightTime())
+            errln("Fail: DST not active");
+        Calendar tempcal = Calendar.getInstance();
+        tempcal.clear();
+        tempcal.setTimeZone(z);
+        tempcal.set(1997, Calendar.JANUARY, 31);
+        Date d1 = tempcal.getTime();
+        if (z.inDaylightTime(d1)) {
+            errln("Fail: DST not working as expected");
+        } 
+
+        tempcal.set(1997, Calendar.MARCH, 1);
+        Date d2 = tempcal.getTime();
+        if (!z.inDaylightTime(d2)) {
+            errln("Fail: DST not working as expected");
+        }
+        tempcal.clear();
+        tempcal.set(1997, Calendar.MARCH, 31);
+        Date d3 = tempcal.getTime();
+        if (z.inDaylightTime(d3)) {
+            errln("Fail: DST not working as expected");
+        } 
+    }
+
+    /**
+     * The expected behavior of TimeZone around the boundaries is:
+     * (Assume transition time of 2:00 AM)
+     *    day of onset 1:59 AM STD  = display name 1:59 AM ST
+     *                 2:00 AM STD  = display name 3:00 AM DT
+     *    day of end   0:59 AM STD  = display name 1:59 AM DT
+     *                 1:00 AM STD  = display name 1:00 AM ST
+     */
+    public void Test4084933() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+
+        long offset1 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000));
+        long offset2 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset3 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000));
+        long offset4 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        /*
+         *  The following was added just for consistency.  It shows that going *to* Daylight
+         *  Savings Time (PDT) does work at 2am.
+         */
+
+        long offset5 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000));
+        long offset6 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset7 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000));
+        long offset8 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        long SToffset = -8 * 60*60*1000L;
+        long DToffset = -7 * 60*60*1000L;
+        if (offset1 != SToffset || offset2 != SToffset ||
+            offset3 != SToffset || offset4 != DToffset ||
+            offset5 != DToffset || offset6 != SToffset ||
+            offset7 != SToffset || offset8 != SToffset)
+            warnln("Fail: TimeZone misbehaving");
+    }
+
+    public void Test4096952() {
+        String[] ZONES = { "GMT", "MET", "IST" };
+        boolean pass = true;
+        try {
+            for (int i=0; i<ZONES.length; ++i) {
+                TimeZone zone = TimeZone.getTimeZone(ZONES[i]);
+                if (!zone.getID().equals(ZONES[i]))
+                    warnln("Fail: Test broken; zones not instantiating");
+
+                ByteArrayOutputStream baos;
+                ObjectOutputStream ostream =
+                    new ObjectOutputStream(baos = new
+                                           ByteArrayOutputStream());
+                ostream.writeObject(zone);
+                ostream.close();
+                baos.close();
+                ObjectInputStream istream =
+                    new ObjectInputStream(new
+                                          ByteArrayInputStream(baos.toByteArray()));
+                TimeZone frankenZone = (TimeZone) istream.readObject();
+                //logln("Zone:        " + zone);
+                //logln("FrankenZone: " + frankenZone);
+                if (!zone.equals(frankenZone)) {
+                    logln("TimeZone " + zone.getID() +
+                          " not equal to serialized/deserialized one");
+                    pass = false;
+                }
+            }
+            if (!pass) errln("Fail: TimeZone serialization/equality bug");
+        }
+        catch (IOException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    public void Test4109314() {
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998,Calendar.APRIL,4,22,0);
+        Date d1 = tempcal.getTime();
+        tempcal.set(1998,Calendar.APRIL,5,6,0);
+        Date d2 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,24,22,0);
+        Date d3 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,25,6,0);
+        Date d4 = tempcal.getTime();
+        Object[] testData = {
+            PST, d1, d2,
+            PST, d3, d4,
+        };
+        boolean pass=true;
+        for (int i=0; i<testData.length; i+=3) {
+            testCal.setTimeZone((TimeZone) testData[i]);
+            long t = ((Date)testData[i+1]).getTime();
+            Date end = (Date) testData[i+2];
+            while (t < end.getTime()) {
+                testCal.setTime(new Date(t));
+                if (!checkCalendar314(testCal, (TimeZone) testData[i]))
+                    pass = false;
+                t += 60*60*1000L;
+            }
+        }
+        if (!pass) errln("Fail: TZ API inconsistent");
+    }
+
+    boolean checkCalendar314(GregorianCalendar testCal, TimeZone testTZ) {
+        // GregorianCalendar testCal = (GregorianCalendar)aCal.clone();
+
+        final int ONE_DAY = 24*60*60*1000;
+
+        int tzOffset, tzRawOffset;
+        Float tzOffsetFloat,tzRawOffsetFloat;
+        // Here is where the user made an error.  They were passing in the value of
+        // the MILLSECOND field; you need to pass in the millis in the day in STANDARD
+        // time.
+        int millis = testCal.get(Calendar.MILLISECOND) +
+            1000 * (testCal.get(Calendar.SECOND) +
+                    60 * (testCal.get(Calendar.MINUTE) +
+                          60 * (testCal.get(Calendar.HOUR_OF_DAY)))) -
+            testCal.get(Calendar.DST_OFFSET);
+
+        /* Fix up millis to be in range.  ASSUME THAT WE ARE NOT AT THE
+         * BEGINNING OR END OF A MONTH.  We must add this code because
+         * getOffset() has been changed to be more strict about the parameters
+         * it receives -- it turns out that this test was passing in illegal
+         * values. */
+        int date = testCal.get(Calendar.DATE);
+        int dow  = testCal.get(Calendar.DAY_OF_WEEK);
+        while (millis < 0) {
+            millis += ONE_DAY;
+            --date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 6) % 7);
+        }
+        while (millis >= ONE_DAY) {
+            millis -= ONE_DAY;
+            ++date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 1) % 7);
+        }
+
+        tzOffset = testTZ.getOffset(testCal.get(Calendar.ERA),
+                                    testCal.get(Calendar.YEAR),
+                                    testCal.get(Calendar.MONTH),
+                                    date,
+                                    dow,
+                                    millis);
+        tzRawOffset = testTZ.getRawOffset();
+        tzOffsetFloat = new Float((float)tzOffset/(float)3600000);
+        tzRawOffsetFloat = new Float((float)tzRawOffset/(float)3600000);
+
+        Date testDate = testCal.getTime();
+
+        boolean inDaylightTime = testTZ.inDaylightTime(testDate);
+        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+        sdf.setCalendar(testCal);
+        String inDaylightTimeString;
+
+        boolean passed;
+
+        if (inDaylightTime)
+        {
+            inDaylightTimeString = " DST ";
+            passed = (tzOffset == (tzRawOffset + 3600000));
+        }
+        else
+        {
+            inDaylightTimeString = "     ";
+            passed = (tzOffset == tzRawOffset);
+        }
+
+        String output = testTZ.getID() + " " + sdf.format(testDate) +
+            " Offset(" + tzOffsetFloat + ")" +
+            " RawOffset(" + tzRawOffsetFloat + ")" +
+            " " + millis/(float)3600000 + " " +
+            inDaylightTimeString;
+
+        if (passed)
+            output += "     ";
+        else
+            output += "ERROR";
+
+        if (passed) logln(output); else errln(output);
+        return passed;
+    }
+
+    /**
+     * CANNOT REPRODUDE
+     *
+     * Yet another _alleged_ bug in TimeZone.getOffset(), a method that never
+     * should have been made public.  It's simply too hard to use correctly.
+     *
+     * The original test code failed to do the following:
+     * (1) Call Calendar.setTime() before getting the fields!
+     * (2) Use the right millis (as usual) for getOffset(); they were passing
+     *     in the MILLIS field, instead of the STANDARD MILLIS IN DAY.
+     * When you fix these two problems, the test passes, as expected.
+     */
+    public void Test4126678() {
+    // Note: this test depends on the PST time zone.
+    TimeZone initialZone = TimeZone.getDefault();
+        Calendar cal = Calendar.getInstance();
+        TimeZone tz = TimeZone.getTimeZone("PST");
+    TimeZone.setDefault(tz);
+        cal.setTimeZone(tz);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 10, 0);
+        Date dt = tempcal.getTime();
+    // the dt value is local time in PST.
+        if (!tz.inDaylightTime(dt))
+            errln("We're not in Daylight Savings Time and we should be.\n");
+
+        cal.setTime(dt);
+        int era = cal.get(Calendar.ERA);
+        int year = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH);
+        int day = cal.get(Calendar.DATE);
+        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+        int millis = cal.get(Calendar.MILLISECOND) +
+            (cal.get(Calendar.SECOND) +
+             (cal.get(Calendar.MINUTE) +
+              (cal.get(Calendar.HOUR) * 60) * 60) * 1000) -
+            cal.get(Calendar.DST_OFFSET);
+
+        long offset = tz.getOffset(era, year, month, day, dayOfWeek, millis);
+        long raw_offset = tz.getRawOffset();
+        if (offset == raw_offset)
+            errln("Offsets should not match when in DST");
+
+    // restore the initial time zone so that this test case
+    // doesn't affect the others.
+    TimeZone.setDefault(initialZone);
+    }
+
+    /**
+     * TimeZone.getAvailableIDs(int) throws exception for certain values,
+     * due to a faulty constant in TimeZone.java.
+     */
+    public void Test4151406() {
+        int max = 0;
+        for (int h=-28; h<=30; ++h) {
+            // h is in half-hours from GMT; rawoffset is in millis
+            int rawoffset = h * 1800000;
+            int hh = (h<0) ? -h : h;
+            String hname = ((h<0) ? "GMT-" : "GMT+") +
+                ((hh/2 < 10) ? "0" : "") +
+                (hh/2) + ':' +
+                ((hh%2==0) ? "00" : "30");
+            try {
+                String[] ids = TimeZone.getAvailableIDs(rawoffset);
+                if (ids.length > max) max = ids.length;
+                logln(hname + ' ' + ids.length +
+                      ((ids.length > 0) ? (" e.g. " + ids[0]) : ""));
+            } catch (Exception e) {
+                errln(hname + ' ' + "Fail: " + e);
+            }
+        }
+        logln("Maximum zones per offset = " + max);
+    }
+
+    public void Test4151429() {
+        try {
+            TimeZone tz = TimeZone.getTimeZone("GMT");
+            /*String name =*/ tz.getDisplayName(true, Integer.MAX_VALUE,
+                                            Locale.getDefault());
+            errln("IllegalArgumentException not thrown by TimeZone.getDisplayName()");
+        } catch(IllegalArgumentException e) {
+            System.out.print("");
+        }
+    }
+
+    /**
+     * SimpleTimeZone accepts illegal DST savings values.  These values
+     * must be non-zero.  There is no upper limit at this time.
+     */
+    public void Test4154525() {
+        final int GOOD = 1, BAD = 0;
+        int[] DATA = {
+            1, GOOD,
+            0, BAD,
+            -1, BAD,
+            60*60*1000, GOOD,
+            Integer.MIN_VALUE, BAD,
+            // Integer.MAX_VALUE, ?, // no upper limit on DST savings at this time
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            int savings = DATA[i];
+            boolean valid = DATA[i+1] == GOOD;
+            String method = null;
+            for (int j=0; j<2; ++j) {
+                try {
+                    switch (j) {
+                    case 0:
+                        method = "constructor";
+                        SimpleTimeZone z = new SimpleTimeZone(0, "id",
+                            Calendar.JANUARY, 1, 0, 0,
+                            Calendar.MARCH, 1, 0, 0,
+                            savings); // <- what we're interested in
+                        break;
+                    case 1:
+                        method = "setDSTSavings()";
+                        z = new SimpleTimeZone(0, "GMT");
+                        z.setDSTSavings(savings);
+                        break;
+                    }
+                    if (valid) {
+                        logln("Pass: DST savings of " + savings + " accepted by " + method);
+                    } else {
+                        errln("Fail: DST savings of " + savings + " accepted by " + method);
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (valid) {
+                        errln("Fail: DST savings of " + savings + " to " + method + " gave " + e);
+                    } else {
+                        logln("Pass: DST savings of " + savings + " to " + method + " gave " + e);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone.hasSameRules() doesn't work for zones with no DST
+     * and different DST parameters.
+     */
+    public void Test4154537() {
+        // tz1 and tz2 have no DST and different rule parameters
+        SimpleTimeZone tz1 = new SimpleTimeZone(0, "1", 0, 0, 0, 0, 2, 0, 0, 0);
+        SimpleTimeZone tz2 = new SimpleTimeZone(0, "2", 1, 0, 0, 0, 3, 0, 0, 0);
+        // tza and tzA have the same rule params
+        SimpleTimeZone tza = new SimpleTimeZone(0, "a", 0, 1, 0, 0, 3, 2, 0, 0);
+        SimpleTimeZone tzA = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 3, 2, 0, 0);
+        // tzb differs from tza
+        SimpleTimeZone tzb = new SimpleTimeZone(0, "b", 0, 1, 0, 0, 3, 1, 0, 0);
+        if (tz1.useDaylightTime() || tz2.useDaylightTime() ||
+            !tza.useDaylightTime() || !tzA.useDaylightTime() ||
+            !tzb.useDaylightTime()) {
+            errln("Test is broken -- rewrite it");
+        }
+        if (!tza.hasSameRules(tzA) || tza.hasSameRules(tzb)) {
+            errln("Fail: hasSameRules() broken for zones with rules");
+        }
+        if (!tz1.hasSameRules(tz2)) {
+            errln("Fail: hasSameRules() returns false for zones without rules");
+            errln("zone 1 = " + tz1);
+            errln("zone 2 = " + tz2);
+        }
+    }
+
+    /**
+     * SimpleTimeZone constructors, setStartRule(), and setEndRule() don't
+     * check for out-of-range arguments.
+     */
+    public void Test4154542() {
+        final int GOOD = 1;
+        final int BAD  = 0;
+
+        final int GOOD_MONTH       = Calendar.JANUARY;
+        final int GOOD_DAY         = 1;
+        final int GOOD_DAY_OF_WEEK = Calendar.SUNDAY;
+        final int GOOD_TIME        = 0;
+
+        int[] DATA = {
+            GOOD, Integer.MIN_VALUE,    0,  Integer.MAX_VALUE,   Integer.MIN_VALUE,
+            GOOD, Calendar.JANUARY,    -5,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000-1,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000+1,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,  -1,
+            BAD,  Calendar.JANUARY,    -6,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER,    6,  Calendar.SATURDAY,   24*60*60*1000,
+            GOOD, Calendar.DECEMBER,    1,  0,                   0,
+            GOOD, Calendar.DECEMBER,   31,  0,                   0,
+            BAD,  Calendar.APRIL,      31,  0,                   0,
+            BAD,  Calendar.DECEMBER,   32,  0,                   0,
+            BAD,  Calendar.JANUARY-1,   1,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER+1,  1,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,  -32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   31, -Calendar.SATURDAY-1, 0,
+        };
+        SimpleTimeZone zone = new SimpleTimeZone(0, "Z");
+        for (int i=0; i<DATA.length; i+=5) {
+            boolean shouldBeGood = (DATA[i] == GOOD);
+            int month     = DATA[i+1];
+            int day       = DATA[i+2];
+            int dayOfWeek = DATA[i+3];
+            int time      = DATA[i+4];
+
+            Exception ex = null;
+            try {
+                zone.setStartRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setStartRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                zone.setEndRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setEndRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                /*SimpleTimeZone temp =*/ new SimpleTimeZone(0, "Z",
+                        month, day, dayOfWeek, time,
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (", <end>) should work but throws " + ex)
+                       : ", <end>) should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                /*SimpleTimeZone temp = */new SimpleTimeZone(0, "Z",
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME,
+                        month, day, dayOfWeek, time);
+               // temp = null;
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(<start>, month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone.getOffset accepts illegal arguments.
+     */
+    public void Test4154650() {
+        final int GOOD=1, BAD=0;
+        final int GOOD_ERA=GregorianCalendar.AD, GOOD_YEAR=1998, GOOD_MONTH=Calendar.AUGUST;
+        final int GOOD_DAY=2, GOOD_DOW=Calendar.SUNDAY, GOOD_TIME=16*3600000;
+        int[] DATA = {
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GregorianCalendar.BC, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GregorianCalendar.AD, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.BC-1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.AD+1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY-1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER+1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 1, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 31, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 0, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 32, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY-1, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY+1, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 0,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000-1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, -1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000,
+        };
+
+        TimeZone tz = TimeZone.getDefault();
+        for (int i=0; i<DATA.length; i+=7) {
+            boolean good = DATA[i] == GOOD;
+            IllegalArgumentException e = null;
+            try {
+                /*int offset =*/ tz.getOffset(DATA[i+1], DATA[i+2], DATA[i+3],
+                                          DATA[i+4], DATA[i+5], DATA[i+6]);
+                //offset = 0;
+           } catch (IllegalArgumentException ex) {
+                e = ex;
+            }
+            if (good != (e == null)) {
+                errln("Fail: getOffset(" +
+                      DATA[i+1] + ", " + DATA[i+2] + ", " + DATA[i+3] + ", " +
+                      DATA[i+4] + ", " + DATA[i+5] + ", " + DATA[i+6] +
+                      (good ? (") threw " + e) : ") accepts invalid args"));
+            }
+        }
+    }
+
+    /**
+     * TimeZone constructors allow null IDs.
+     */
+    public void Test4159922() {
+        TimeZone z = null;
+
+        // TimeZone API.  Only hasSameRules() and setDefault() should
+        // allow null.
+        try {
+            z = TimeZone.getTimeZone(null);
+            errln("FAIL: Null allowed in getTimeZone");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        z = TimeZone.getTimeZone("GMT");
+        try {
+        // {dlf} requiring cast for disambiguation is ok for compatibility since null
+        // is not a valid argument to this API
+            z.getDisplayName(false, TimeZone.SHORT, (ULocale)null);
+            errln("FAIL: Null allowed in getDisplayName(3)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+        // {dlf} see above
+            z.getDisplayName((ULocale)null);
+            errln("FAIL: Null allowed in getDisplayName(1)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            if (z.hasSameRules(null)) {
+                errln("FAIL: hasSameRules returned true");
+            }
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in hasSameRules");
+        }
+        try {
+            z.inDaylightTime(null);
+            errln("FAIL: Null allowed in inDaylightTime");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            z.setID(null);
+            errln("FAIL: Null allowed in setID");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+
+        TimeZone save = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(null);
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in setDefault");
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+        // SimpleTimeZone API
+        SimpleTimeZone s = null;
+        try {
+            s = new SimpleTimeZone(0, null);
+            errln("FAIL: Null allowed in SimpleTimeZone(2)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0);
+            errln("FAIL: Null allowed in SimpleTimeZone(10)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0, 1000);
+            errln("FAIL: Null allowed in SimpleTimeZone(11)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        if(s!=null){
+            errln("FAIL: Did not get the expected Exception");
+        }
+    }
+
+    /**
+     * TimeZone broken at midnight.  The TimeZone code fails to handle
+     * transitions at midnight correctly.
+     */
+    public void Test4162593() {
+        SimpleDateFormat fmt = new SimpleDateFormat("z", Locale.US);
+        final int ONE_HOUR = 60*60*1000;
+        final float H = (float) ONE_HOUR;
+        TimeZone initialZone = TimeZone.getDefault();
+        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm z");
+
+        SimpleTimeZone asuncion = new SimpleTimeZone(-4*ONE_HOUR, "America/Asuncion" /*PY%sT*/,
+            Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR,
+            Calendar.MARCH, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR);
+
+        /* Zone
+         * Starting time
+         * Transition expected between start+1H and start+2H
+         */
+        Object[] DATA = {
+            new SimpleTimeZone(2*ONE_HOUR, "Asia/Damascus" /*EE%sT*/,
+                Calendar.APRIL, 1, 0 /*DOM*/, 0*ONE_HOUR,
+                Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
+            new int[] {1998, Calendar.SEPTEMBER, 30, 22, 0},
+            Boolean.TRUE,
+
+            asuncion,
+            new int[] {2000, Calendar.FEBRUARY, 28, 22, 0},
+            Boolean.FALSE,
+
+            asuncion,
+            new int[] {2000, Calendar.FEBRUARY, 29, 22, 0},
+            Boolean.TRUE,
+        };
+
+        String[] zone = new String[4];
+
+        for (int j=0; j<DATA.length; j+=3) {
+            TimeZone tz = (TimeZone)DATA[j];
+            TimeZone.setDefault(tz);
+            fmt.setTimeZone(tz);
+            sdf.setTimeZone(tz);
+
+            // Must construct the Date object AFTER setting the default zone
+            int[] p = (int[])DATA[j+1];
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(p[0], p[1], p[2], p[3], p[4]);
+            long start = cal.getTime().getTime();
+            boolean transitionExpected = ((Boolean)DATA[j+2]).booleanValue();
+
+            logln(tz.getID() + ":");
+            for (int i=0; i<4; ++i) {
+                Date d = new Date(start + i*ONE_HOUR);
+                zone[i] = fmt.format(d);
+                logln("" + i + ": " + sdf.format(d) + " => " + zone[i] +
+                      " (" + d.getTime()/H + ")");
+            }
+            cal.set(p[0], p[1], p[2], 0, 0);
+            for (int i=0; i<4; ++i) {
+                int h = 22+i;
+                int dom = p[2]+(h>=24?1:0);
+                h %= 24;
+                int ms = h*ONE_HOUR;
+                cal.clear();
+                cal.set(p[0], p[1], dom, 0, 0);
+                int off = tz.getOffset(GregorianCalendar.AD,
+                                       cal.get(Calendar.YEAR),
+                                       cal.get(Calendar.MONTH),
+                                       cal.get(Calendar.DATE),
+                                       cal.get(Calendar.DAY_OF_WEEK),
+                                       ms);
+                cal.add(Calendar.HOUR, h);
+                int dstOffset = cal.get(Calendar.DST_OFFSET);
+                logln("h=" + h + "; dom=" + dom +
+                      "; ZONE_OFFSET=" + cal.get(Calendar.ZONE_OFFSET)/H +
+                      "; DST_OFFSET=" + dstOffset/H +
+                      "; getOffset()=" + off/H +
+                      " (" + cal.getTime().getTime()/H + ")");
+            }
+            if (zone[0].equals(zone[1]) &&
+                (zone[1].equals(zone[2]) != transitionExpected) &&
+                zone[2].equals(zone[3])) {
+                logln("Ok: transition " + transitionExpected);
+            } else {
+                errln("FAIL: expected " +
+                      (transitionExpected?"transition":"no transition"));
+            }
+        }
+
+    // restore the initial time zone so that this test case
+    // doesn't affect the others.
+    TimeZone.setDefault(initialZone);
+    }
+
+    /**
+     * TimeZone broken in last hour of year
+     */
+    public void Test4173604() {
+        TimeZone pst = TimeZone.getTimeZone("PST");
+        int o22 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 22*60*60*1000);
+        int o23 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 23*60*60*1000);
+        int o00 = pst.getOffset(1, 1999, 0, 1, Calendar.FRIDAY, 0);
+        if (o22 != o23 || o22 != o00) {
+            errln("Offsets should be the same (for PST), but got: " +
+                  "12/31 22:00 " + o22 +
+                  ", 12/31 23:00 " + o23 +
+                  ", 01/01 00:00 " + o00);
+        }
+
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTimeZone(pst);
+        cal.clear();
+        cal.set(1998, Calendar.JANUARY, 1);
+        int lastDST = cal.get(Calendar.DST_OFFSET);
+        int transitions = 0;
+        int delta = 5;
+        while (cal.get(Calendar.YEAR) < 2000) {
+            cal.add(Calendar.MINUTE, delta);
+            if (cal.get(Calendar.DST_OFFSET) != lastDST) {
+                ++transitions;
+                Calendar t = (Calendar)cal.clone();
+                t.add(Calendar.MINUTE, -delta);
+                logln(t.getTime() + "  " + t.get(Calendar.DST_OFFSET));
+                logln(cal.getTime() + "  " + (lastDST=cal.get(Calendar.DST_OFFSET)));
+            }
+        }
+        if (transitions != 4) {
+            errln("Saw " + transitions + " transitions; should have seen 4");
+        }
+    }
+
+    /**
+     * getDisplayName doesn't work with unusual savings/offsets.
+     */
+    public void Test4176686() {
+        // Construct a zone that does not observe DST but
+        // that does have a DST savings (which should be ignored).
+        int offset = 90 * 60000; // 1:30
+        SimpleTimeZone z1 = new SimpleTimeZone(offset, "_std_zone_");
+        z1.setDSTSavings(45 * 60000); // 0:45
+
+        // Construct a zone that observes DST for the first 6 months.
+        SimpleTimeZone z2 = new SimpleTimeZone(offset, "_dst_zone_");
+        z2.setDSTSavings(45 * 60000); // 0:45
+        z2.setStartRule(Calendar.JANUARY, 1, 0);
+        z2.setEndRule(Calendar.JULY, 1, 0);
+
+        // Also check DateFormat
+        DateFormat fmt1 = new SimpleDateFormat("z");
+        fmt1.setTimeZone(z1); // Format uses standard zone
+        DateFormat fmt2 = new SimpleDateFormat("z");
+        fmt2.setTimeZone(z2); // Format uses DST zone
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.FEBRUARY, 1);
+        Date dst = tempcal.getTime(); // Time in DST
+        tempcal.set(1970, Calendar.AUGUST, 1);
+        Date std = tempcal.getTime(); // Time in standard
+
+        // Description, Result, Expected Result
+        String[] DATA = {
+            "getDisplayName(false, SHORT)/std zone",
+            z1.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/std zone",
+            z1.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/std zone",
+            z1.getDisplayName(true, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(true, LONG)/std zone",
+            z1.getDisplayName(true, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(false, SHORT)/dst zone",
+            z2.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/dst zone",
+            z2.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/dst zone",
+            z2.getDisplayName(true, TimeZone.SHORT), "GMT+02:15",
+            "getDisplayName(true, LONG)/dst zone",
+            z2.getDisplayName(true, TimeZone.LONG ), "GMT+02:15",
+            "DateFormat.format(std)/std zone", fmt1.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/std zone", fmt1.format(dst), "GMT+01:30",
+            "DateFormat.format(std)/dst zone", fmt2.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/dst zone", fmt2.format(dst), "GMT+02:15",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            if (!DATA[i+1].equals(DATA[i+2])) {
+                errln("FAIL: " + DATA[i] + " -> " + DATA[i+1] + ", exp " + DATA[i+2]);
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone allows invalid DOM values.
+     */
+    // Current orgnaization of data in zoneinfor.res allows negative
+    // values from DOM so comment these tests out
+    
+    public void Test4184229() {
+        SimpleTimeZone zone = null;
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 startDay");
+        } catch(IllegalArgumentException e) {
+            logln("(a) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 endDay");
+        } catch(IllegalArgumentException e) {
+            logln("(b) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 startDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(c) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 endDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(d) " + e.getMessage());
+        }
+        // Make a valid constructor call for subsequent tests.
+
+        zone = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 0, 1, 0, 0);
+        
+        try {
+            zone.setStartRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(e) " + e.getMessage());
+        }
+        try {
+            zone.setStartRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule");
+        } catch(IllegalArgumentException e) {
+            logln("(f) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(g) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule");
+        } catch(IllegalArgumentException e) {
+            logln("(h) " + e.getMessage());
+        }
+        
+    }
+
+    /**
+     * SimpleTimeZone.getOffset() throws IllegalArgumentException when to get
+     * of 2/29/1996 (leap day).
+     */
+    public void Test4208960 () {
+    TimeZone tz = TimeZone.getTimeZone("PST");
+    try {
+        /*int offset =*/ tz.getOffset(GregorianCalendar.AD, 1996, Calendar.FEBRUARY, 29,
+                      Calendar.THURSDAY, 0);
+        //offset = 0;
+    } catch (IllegalArgumentException e) {
+        errln("FAILED: to get TimeZone.getOffset(2/29/96)");
+    }
+    try {
+        /*int offset =*/ tz.getOffset(GregorianCalendar.AD, 1997, Calendar.FEBRUARY, 29,
+                      Calendar.THURSDAY, 0);
+        //offset = 0;
+        warnln("FAILED: TimeZone.getOffset(2/29/97) expected to throw Exception.");
+    } catch (IllegalArgumentException e) {
+        logln("got IllegalArgumentException");
+    }
+    }
+
+    /**
+     * Test to see if DateFormat understands zone equivalency groups.  It
+     * might seem that this should be a DateFormat test, but it's really a
+     * TimeZone test -- the changes to DateFormat are minor.
+     *
+     * We use two known, zones that are equivalent, where one zone has
+     * localized name data, and the other doesn't, in some locale.
+     */
+    public void TestJ449() {
+        // not used String str;
+
+        // Modify the following three as necessary.  The two IDs must
+        // specify two zones in the same equivalency group.  One must have
+        // locale data in 'loc'; the other must not.
+        String idWithLocaleData = "America/Los_Angeles";
+        String idWithoutLocaleData = "PST"; // "US/Pacific";
+        Locale loc = new Locale("en", "", "");
+
+        TimeZone zoneWith = TimeZone.getTimeZone(idWithLocaleData);
+        TimeZone zoneWithout = TimeZone.getTimeZone(idWithoutLocaleData);
+        // Make sure we got valid zones
+        if (!(zoneWith.getID().equals(idWithLocaleData) &&
+              zoneWithout.getID().equals(idWithoutLocaleData))) {
+            warnln("Fail: Unable to create zones");
+        } else {
+            GregorianCalendar calWith = new GregorianCalendar(zoneWith);
+            GregorianCalendar calWithout = new GregorianCalendar(zoneWithout);
+            SimpleDateFormat fmt =
+                new SimpleDateFormat("MMM d yyyy hh:mm a zzz", loc);
+            Date date = new Date(0L);
+            fmt.setCalendar(calWith);
+            String strWith = fmt.format(date);
+            fmt.setCalendar(calWithout);
+            String strWithout = fmt.format(date);
+            if (strWith.equals(strWithout)) {
+                logln("Ok: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            } else {
+                errln("FAIL: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            }
+        }
+    }
+
+    /**
+     * getOffset returns wrong offset for days in early 20th century
+     */
+    public void TestJ5134() {
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance();
+        TimeZone icuEastern = TimeZone.getTimeZone("America/New_York");        
+        testCal.setTimeZone(icuEastern);
+        testCal.set(1900, Calendar.JANUARY, 1, 0, 0, 0);
+        long time = testCal.getTimeInMillis();
+
+        int offset = icuEastern.getOffset(time);
+        if (offset != -18000000) {
+            errln("FAIL: UTC offset in time zone America/New_York on Jan 1, 1900 -> " + offset);
+        }
+        boolean isDst = icuEastern.inDaylightTime(new Date(time));
+        if (isDst) {
+            errln("FAIL: DST is observed in time zone America/New_York on Jan 1, 1900");
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        if (System.getProperty("java.vendor", "").startsWith("IBM") &&
+            System.getProperty("java.version", "").equals("1.4.1")) {
+            // IBM JDK 1.4.1 has a bug and fails to run this test case.
+            return;
+        }
+        java.util.TimeZone jdkEastern = java.util.TimeZone.getTimeZone("America/New_York");
+        // Compare offset and DST observation with JDK and ICU for 50 years since 1900
+        testCal.add(Calendar.YEAR, 50);
+        long endTime = testCal.getTimeInMillis();
+        int jdkOffset;
+        boolean isDstJdk;
+        while (time < endTime) {
+            offset = icuEastern.getOffset(time);
+            jdkOffset = jdkEastern.getOffset(time);
+            if (offset != jdkOffset) {
+                errln("FAIL: Incompatible UTC offset -> JDK:" + jdkOffset + "/ICU:" + offset + " [" + time + "]");
+            }
+            Date d = new Date(time);
+            isDst = icuEastern.inDaylightTime(d);
+            isDstJdk = jdkEastern.inDaylightTime(d);
+            if (isDst != isDstJdk) {
+                errln("FAIL: Incompatible DST -> JDK:" + isDstJdk + "/ICU:" + isDst + " [" + time + "]");
+            }
+            time += 24*60*60*1000L; // increment 1 day
+        }
+//#endif
+    }
+
+    /**
+     * Test setRawOffset works OK with system timezone
+     */
+    public void TestT5280() {
+        String[] tzids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < tzids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(tzids[i]);
+            boolean useDst = tz.useDaylightTime();
+
+            // Increase offset for 30 minutes
+            int newRawOffset = tz.getRawOffset() + 30*60*1000;
+            try {
+                tz.setRawOffset(newRawOffset);
+            } catch (Exception e) {
+                errln("FAIL: setRawOffset throws an exception");
+            }
+            int offset = tz.getRawOffset();
+            if (offset != newRawOffset) {
+                errln("FAIL: Modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+            }
+            // Ticket#5917
+            // Check if DST observation status is not unexpectedly changed to true.
+            // When original Olson time zone observes DST, setRawOffset may change DST observation
+            // status for some zones.  For example, Asia/Jerusalem, which currently use no DST after
+            // 2037 in tzdata 2007g.  But, the opposite change (false -> true) should never happen.
+            if (!useDst) {
+                if (tz.useDaylightTime()) {
+                    errln("FAIL: Modified zone(" + tz.getID() + ") - useDaylightTime has changed from false to true.");
+                }
+            }
+            // Make sure the offset is preserved in a clone
+            TimeZone tzClone = (TimeZone)tz.clone();
+            offset = tzClone.getRawOffset();
+            if (offset != newRawOffset) {
+                errln("FAIL: Cloned modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+            }
+        }
+    }
+
+    /*
+     * Zone ID is not set by a SimpleTimeZone constructor
+     */
+    public void TestT5432() {
+        String tzid = "MyZone";
+        SimpleTimeZone stz;
+
+        // 2-arg constructor
+        stz = new SimpleTimeZone(0, tzid);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [2-arg constructor]");
+        }
+
+        // 10-arg constructor
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, 9, -1, 1, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [10-arg constructor]");
+        }
+
+        // 11-arg constructor
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, 9, -1, 1, 3600000, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [11-arg constructor]");
+        }
+
+        // 13-arg constructor - this version had a problem reported by trac#5432
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, SimpleTimeZone.WALL_TIME,
+                9, -1, 1, 3600000, SimpleTimeZone.WALL_TIME, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [13-arg constructor]");
+        }
+    }
+    
+    // test bug #4265
+    public void TestJohannesburg() {
+        String j_id="Africa/Johannesburg";
+        TimeZone johannesburg = TimeZone.getTimeZone(j_id);
+        final int ONE_HOUR = 60*60*1000;
+        int expectedOffset = ONE_HOUR*2;  // GMT+2 - NO DST
+        int offset = johannesburg.getOffset(GregorianCalendar.AD,2007,Calendar.JULY,5,Calendar.THURSDAY,0);        
+        
+        if(offset != expectedOffset) {
+            errln("FAIL: zone " + j_id +" returned offset in July " + offset +", expected "+expectedOffset);
+        } else {
+            logln("OK: zone " + j_id +" returned offset in July: " + offset);
+        }
+
+        int offset2 = johannesburg.getOffset(GregorianCalendar.AD,2007,Calendar.DECEMBER,12,Calendar.WEDNESDAY,0);
+
+        if(offset2 != expectedOffset) {
+            errln("FAIL: zone " + j_id +" returned offset in December " + offset2 +", expected "+expectedOffset);
+        } else {
+            logln("OK: zone " + j_id +" returned offset in December: " + offset2);
+        }
+
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
new file mode 100644
index 0000000..90eafd5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -0,0 +1,1627 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Date;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VTimeZone;
+
+/**
+ * Test cases for TimeZoneRule and RuleBasedTimeZone
+ */
+public class TimeZoneRuleTest extends TestFmwk {
+
+    private static final int HOUR = 60 * 60 * 1000;
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneRuleTest().run(args);
+    }
+
+    /*
+     * RuleBasedTimeZone test cases
+     */
+    public void TestSimpleRuleBasedTimeZone() {
+        SimpleTimeZone stz = new SimpleTimeZone(-1*HOUR, "TestSTZ",
+                Calendar.SEPTEMBER, -30, -Calendar.SATURDAY, 1*HOUR, SimpleTimeZone.WALL_TIME,
+                Calendar.FEBRUARY, 2, Calendar.SUNDAY, 1*HOUR, SimpleTimeZone.WALL_TIME,
+                1*HOUR);
+
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule atzr;
+        final int STARTYEAR = 2000;
+
+        InitialTimeZoneRule ir = new InitialTimeZoneRule(
+                "RBTZ_Initial", // Initial time Name
+                -1*HOUR,        // Raw offset
+                1*HOUR);        // DST saving amount
+        
+        // RBTZ
+        RuleBasedTimeZone rbtz1 = new RuleBasedTimeZone("RBTZ1", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, 30, Calendar.SATURDAY, false,
+                1*HOUR, DateTimeRule.WALL_TIME); // SUN<=30 in September, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_DST1",
+                -1*HOUR /* rawOffset */, 1*HOUR /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz1.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 2, Calendar.SUNDAY,
+                1*HOUR, DateTimeRule.WALL_TIME); // 2nd Sunday in February, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_STD1",
+                -1*HOUR /* rawOffset */, 0 /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz1.addTransitionRule(atzr);
+
+        // Equivalent, but different date rule type
+        RuleBasedTimeZone rbtz2 = new RuleBasedTimeZone("RBTZ2", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, -1, Calendar.SATURDAY,
+                1*HOUR, DateTimeRule.WALL_TIME); // Last Sunday in September at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_DST2", -1*HOUR, 1*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz2.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 8, Calendar.SUNDAY, true,
+                1*HOUR, DateTimeRule.WALL_TIME); // SUN>=8 in February, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_STD2", -1*HOUR, 0, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz2.addTransitionRule(atzr);
+
+        // Equivalent, but different time rule type
+        RuleBasedTimeZone rbtz3 = new RuleBasedTimeZone("RBTZ3", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, 30, Calendar.SATURDAY, false,
+                2*HOUR, DateTimeRule.UTC_TIME);
+        atzr = new AnnualTimeZoneRule("RBTZ_DST3", -1*HOUR, 1*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz3.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 2, Calendar.SUNDAY,
+                0*HOUR, DateTimeRule.STANDARD_TIME);
+        atzr = new AnnualTimeZoneRule("RBTZ_STD3", -1*HOUR, 0, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz3.addTransitionRule(atzr);
+
+        // Check equivalency for 10 years
+        long start = getUTCMillis(STARTYEAR, Calendar.JANUARY, 1);
+        long until = getUTCMillis(STARTYEAR + 10, Calendar.JANUARY, 1);
+
+        if (!(stz.hasEquivalentTransitions(rbtz1, start, until))) {
+            errln("FAIL: rbtz1 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+        if (!(stz.hasEquivalentTransitions(rbtz2, start, until))) {
+            errln("FAIL: rbtz2 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+        if (!(stz.hasEquivalentTransitions(rbtz3, start, until))) {
+            errln("FAIL: rbtz3 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+
+        // hasSameRules
+        if (rbtz1.hasSameRules(rbtz2)) {
+            errln("FAIL: rbtz1 and rbtz2 have different rules, but returned true.");
+        }
+        if (rbtz1.hasSameRules(rbtz3)) {
+            errln("FAIL: rbtz1 and rbtz3 have different rules, but returned true.");
+        }
+        RuleBasedTimeZone rbtz1c = (RuleBasedTimeZone)rbtz1.clone();
+        if (!rbtz1.hasSameRules(rbtz1c)) {
+            errln("FAIL: Cloned RuleBasedTimeZone must have the same rules with the original.");
+        }
+
+        // getOffset
+        GregorianCalendar cal = new GregorianCalendar();
+        int[] offsets = new int[2];
+        int offset;
+        boolean dst;
+
+        cal.setTimeZone(rbtz1);
+        cal.clear();
+
+        // Jan 1, 1000 BC
+        cal.set(Calendar.ERA, GregorianCalendar.BC);
+        cal.set(1000, Calendar.JANUARY, 1);
+
+        offset = rbtz1.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK), cal.get(Calendar.MILLISECONDS_IN_DAY));
+        if (offset != 0) {
+            errln("FAIL: Invalid time zone offset: " + offset + " /expected: 0");
+        }
+        dst = rbtz1.inDaylightTime(cal.getTime());
+        if (!dst) {
+            errln("FAIL: Invalid daylight saving time");
+        }
+        rbtz1.getOffset(cal.getTimeInMillis(), true, offsets);
+        if (offsets[0] != -3600000) {
+            errln("FAIL: Invalid time zone raw offset: " + offsets[0] + " /expected: -3600000");
+        }
+        if (offsets[1] != 3600000) {            
+            errln("FAIL: Invalid DST amount: " + offsets[1] + " /expected: 3600000");
+        }
+
+        // July 1, 2000, AD
+        cal.set(Calendar.ERA, GregorianCalendar.AD);
+        cal.set(2000, Calendar.JULY, 1);
+
+        offset = rbtz1.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK), cal.get(Calendar.MILLISECONDS_IN_DAY));
+        if (offset != -3600000) {
+            errln("FAIL: Invalid time zone offset: " + offset + " /expected: -3600000");
+        }
+        dst = rbtz1.inDaylightTime(cal.getTime());
+        if (dst) {
+            errln("FAIL: Invalid daylight saving time");
+        }
+        rbtz1.getOffset(cal.getTimeInMillis(), true, offsets);
+        if (offsets[0] != -3600000) {
+            errln("FAIL: Invalid time zone raw offset: " + offsets[0] + " /expected: -3600000");
+        }
+        if (offsets[1] != 0) {            
+            errln("FAIL: Invalid DST amount: " + offsets[1] + " /expected: 0");
+        }
+
+        // July 1, 2000, AD
+
+        // Try to add 3rd final rule
+        dtr = new DateTimeRule(Calendar.OCTOBER, 15, 1*HOUR, DateTimeRule.WALL_TIME);
+        atzr = new AnnualTimeZoneRule("3RD_ATZ", -1*HOUR, 2*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        boolean bException = false;
+        try {
+            rbtz1.addTransitionRule(atzr);
+        } catch (IllegalStateException ise) {
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: 3rd final rule must be rejected");
+        }
+
+        // Try to add an initial rule
+        bException = false;
+        try {
+            rbtz1.addTransitionRule(new InitialTimeZoneRule("Test Initial", 2*HOUR, 0));
+        } catch (IllegalArgumentException iae) {
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: InitialTimeZoneRule must be rejected");
+        }
+    }
+
+    /*
+     * Test equivalency between OlsonTimeZone and custom RBTZ representing the
+     * equivalent rules in a certain time range
+     */
+    public void TestHistoricalRuleBasedTimeZone() {
+        // Compare to America/New_York with equivalent RBTZ
+        TimeZone ny = TimeZone.getTimeZone("America/New_York", TimeZone.TIMEZONE_ICU);
+
+        //RBTZ
+        InitialTimeZoneRule ir = new InitialTimeZoneRule("EST", -5*HOUR, 0);
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone("EST5EDT", ir);
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule tzr;
+
+        // Standard time
+        dtr = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in October, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EST", -5*HOUR /* rawOffset */, 0 /* dstSavings */, dtr, 1967, 2006);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=1 in November, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EST", -5*HOUR, 0, dtr, 2007, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz.addTransitionRule(tzr);
+
+        // Daylight saving time
+        dtr = new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1967, 1973);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.JANUARY, 6,
+                2*HOUR, DateTimeRule.WALL_TIME);    // January 6, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1974, 1974);
+        rbtz.addTransitionRule(tzr);
+        
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 23,
+                2*HOUR, DateTimeRule.WALL_TIME);    // February 23, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1975, 1975);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1976, 1986);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=1 in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1987, 2006);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=8 in March, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 2007, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz.addTransitionRule(tzr);
+
+        // hasEquivalentTransitions
+        long jan1_1950 = getUTCMillis(1950, Calendar.JANUARY, 1);
+        long jan1_1967 = getUTCMillis(1971, Calendar.JANUARY, 1);
+        long jan1_2010 = getUTCMillis(2010, Calendar.JANUARY, 1);        
+
+        if (!(((BasicTimeZone)ny).hasEquivalentTransitions(rbtz, jan1_1967, jan1_2010))) {
+            errln("FAIL: The RBTZ must be equivalent to America/New_York between 1967 and 2010");
+        }
+        if (((BasicTimeZone)ny).hasEquivalentTransitions(rbtz, jan1_1950, jan1_2010)) {
+            errln("FAIL: The RBTZ must not be equivalent to America/New_York between 1950 and 2010");
+        }
+
+        // Same with above, but calling RBTZ#hasEquivalentTransitions against OlsonTimeZone
+        if (!rbtz.hasEquivalentTransitions(ny, jan1_1967, jan1_2010)) {
+            errln("FAIL: The RBTZ must be equivalent to America/New_York between 1967 and 2010");
+        }
+        if (rbtz.hasEquivalentTransitions(ny, jan1_1950, jan1_2010)) {
+            errln("FAIL: The RBTZ must not be equivalent to America/New_York between 1950 and 2010");
+        }
+
+        // TimeZone APIs
+        if (ny.hasSameRules(rbtz) || rbtz.hasSameRules(ny)) {
+            errln("FAIL: hasSameRules must return false");
+        }
+        RuleBasedTimeZone rbtzc = (RuleBasedTimeZone)rbtz.clone();
+        if (!rbtz.hasSameRules(rbtzc) || !rbtz.hasEquivalentTransitions(rbtzc, jan1_1950, jan1_2010)) {
+            errln("FAIL: hasSameRules/hasEquivalentTransitions must return true for cloned RBTZs");
+        }
+
+        long times[] = {
+           getUTCMillis(2006, Calendar.MARCH, 15),
+           getUTCMillis(2006, Calendar.NOVEMBER, 1),
+           getUTCMillis(2007, Calendar.MARCH, 15),
+           getUTCMillis(2007, Calendar.NOVEMBER, 1),
+           getUTCMillis(2008, Calendar.MARCH, 15),
+           getUTCMillis(2008, Calendar.NOVEMBER, 1)
+        };
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+
+        for (int i = 0; i < times.length; i++) {
+            // Check getOffset - must return the same results for these time data
+            rbtz.getOffset(times[i], false, offsets1);
+            ny.getOffset(times[i], false, offsets2);
+            if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                errln("FAIL: Incompatible time zone offsets for ny and rbtz");
+            }
+            // Check inDaylightTime
+            Date d = new Date(times[i]);
+            if (rbtz.inDaylightTime(d) != ny.inDaylightTime(d)) {
+                errln("FAIL: Incompatible daylight saving time for ny and rbtz");
+            }
+        }
+    }
+
+    /*
+     * Check if transitions returned by getNextTransition/getPreviousTransition
+     * are actual time transitions.
+     */
+    public void TestOlsonTransition() {
+        String[] zids = getTestZIDs();
+        for (int i = 0; i < zids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(zids[i], TimeZone.TIMEZONE_ICU);
+            if (tz == null) {
+                break;
+            }
+            int j = 0;
+            while (true) {
+                long[] timerange = getTestTimeRange(j++);
+                if (timerange == null) {
+                    break;
+                }
+                verifyTransitions(tz, timerange[0], timerange[1]);
+            }
+        }
+    }
+
+    /*
+     * Check if an OlsonTimeZone and its equivalent RBTZ have the exact same
+     * transitions.
+     */
+    public void TestRBTZTransition() {
+        int[] STARTYEARS = {
+            1950,
+            1975,
+            2000,
+            2010
+        };
+
+        String[] zids = getTestZIDs();
+        for (int i = 0; i < zids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(zids[i], TimeZone.TIMEZONE_ICU);
+            if (tz == null) {
+                break;
+            }
+            for (int j = 0; j < STARTYEARS.length; j++) {
+                long startTime = getUTCMillis(STARTYEARS[j], Calendar.JANUARY, 1);
+                TimeZoneRule[] rules = ((BasicTimeZone)tz).getTimeZoneRules(startTime);
+                RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID() + "(RBTZ)",
+                        (InitialTimeZoneRule)rules[0]);
+                for (int k = 1; k < rules.length; k++) {
+                    rbtz.addTransitionRule(rules[k]);
+                }
+
+                // Compare the original OlsonTimeZone with the RBTZ starting the startTime for 20 years
+                long until = getUTCMillis(STARTYEARS[j] + 20, Calendar.JANUARY, 1);
+
+                // Ascending
+                compareTransitionsAscending(tz, rbtz, startTime, until, false);
+                // Ascending/inclusive
+                compareTransitionsAscending(tz, rbtz, startTime + 1, until, true);
+                // Descending
+                compareTransitionsDescending(tz, rbtz, startTime, until, false);
+                // Descending/inclusive
+                compareTransitionsDescending(tz, rbtz, startTime + 1, until, true);
+            }
+            
+        }
+    }
+
+    /*
+     * Test cases for HasTimeZoneRules#hasEquivalentTransitions
+     */
+    public void TestHasEquivalentTransitions() {
+        // America/New_York and America/Indiana/Indianapolis are equivalent
+        // since 2006
+        TimeZone newyork = TimeZone.getTimeZone("America/New_York", TimeZone.TIMEZONE_ICU);
+        TimeZone indianapolis = TimeZone.getTimeZone("America/Indiana/Indianapolis", TimeZone.TIMEZONE_ICU);
+        TimeZone gmt_5 = TimeZone.getTimeZone("Etc/GMT+5", TimeZone.TIMEZONE_ICU);
+
+        long jan1_1971 = getUTCMillis(1971, Calendar.JANUARY, 1);
+        long jan1_2005 = getUTCMillis(2005, Calendar.JANUARY, 1);
+        long jan1_2006 = getUTCMillis(2006, Calendar.JANUARY, 1);
+        long jan1_2007 = getUTCMillis(2007, Calendar.JANUARY, 1);
+        long jan1_2011 = getUTCMillis(2010, Calendar.JANUARY, 1);
+        
+        if (((BasicTimeZone)newyork).hasEquivalentTransitions(indianapolis, jan1_2005, jan1_2011)) {
+            errln("FAIL: New_York is not equivalent to Indianapolis between 2005 and 2010, but returned true");
+        }
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(indianapolis, jan1_2006, jan1_2011)) {
+            errln("FAIL: New_York is equivalent to Indianapolis between 2006 and 2010, but returned false");
+        }
+
+        if (!((BasicTimeZone)indianapolis).hasEquivalentTransitions(gmt_5, jan1_1971, jan1_2006)) {
+            errln("FAIL: Indianapolis is equivalent to GMT+5 between 1971 and 2005, but returned false");
+        }
+        if (((BasicTimeZone)indianapolis).hasEquivalentTransitions(gmt_5, jan1_1971, jan1_2007)) {
+            errln("FAIL: Indianapolis is not equivalent to GMT+5 between 1971 and 2006, but returned true");
+        }
+
+        // Cloned TimeZone
+        TimeZone newyork2 = (TimeZone)newyork.clone();
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(newyork2, jan1_1971, jan1_2011)) {
+            errln("FAIL: Cloned TimeZone must have the same transitions");
+        }
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(newyork2, jan1_1971, jan1_2011, true /*ignoreDstAmount*/)) {
+            errln("FAIL: Cloned TimeZone must have the same transitions");
+        }
+
+        // America/New_York and America/Los_Angeles has same DST start rules, but
+        // raw offsets are different
+        TimeZone losangeles = TimeZone.getTimeZone("America/Los_Angeles", TimeZone.TIMEZONE_ICU);
+        if (((BasicTimeZone)newyork).hasEquivalentTransitions(losangeles, jan1_2006, jan1_2011)) {
+            errln("FAIL: New_York is not equivalent to Los Angeles, but returned true");
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone into VTIMEZONE format, create a new
+     * VTimeZone from the VTIMEZONE data, then compare transitions
+     */
+    public void TestVTimeZoneRoundTrip() {
+        long startTime = getUTCMillis(1850, Calendar.JANUARY, 1);
+        long endTime = getUTCMillis(2050, Calendar.JANUARY, 1);
+
+        String[] tzids = getTestZIDs();
+        for (int i = 0; i < tzids.length; i++) {
+            BasicTimeZone olsontz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+            VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+            vtz_org.setTZURL("http://source.icu-project.org/timezone");
+            vtz_org.setLastModified(new Date());
+            VTimeZone vtz_new = null;
+            try {
+                // Write out VTIMEZONE
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                OutputStreamWriter writer = new OutputStreamWriter(baos);
+                vtz_org.write(writer);
+                writer.close();
+                byte[] vtzdata = baos.toByteArray();
+                // Read VTIMEZONE
+                ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                InputStreamReader reader = new InputStreamReader(bais);
+                vtz_new = VTimeZone.create(reader);
+                reader.close();
+
+                // Write out VTIMEZONE one more time
+                ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+                OutputStreamWriter writer1 = new OutputStreamWriter(baos1);
+                vtz_new.write(writer1);
+                writer1.close();
+                byte[] vtzdata1 = baos1.toByteArray();
+
+                // Make sure VTIMEZONE data is exactly same with the first one
+                if (vtzdata.length != vtzdata1.length) {
+                    errln("FAIL: different VTIMEZONE data length");
+                }
+                for (int j = 0; j < vtzdata.length; j++) {
+                    if (vtzdata[j] != vtzdata1[j]) {
+                        errln("FAIL: different VTIMEZONE data");
+                        break;
+                    }
+                }
+            } catch (IOException ioe) {
+                errln("FAIL: IO error while writing/reading VTIMEZONE data");
+            }
+            // Check equivalency after the first transition.
+            // The DST information before the first transition might be lost
+            // because there is no good way to represent the initial time with
+            // VTIMEZONE.
+            if (vtz_new.getOffset(startTime) != olsontz.getOffset(startTime)) {
+                errln("FAIL: VTimeZone for " + tzids[i]
+                         + " is not equivalent to its OlsonTimeZone corresponding at " + startTime);
+            }
+            TimeZoneTransition tzt = olsontz.getNextTransition(startTime, false);
+            if (tzt != null) {
+                if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, true)) {
+                    errln("FAIL: VTimeZone for " + tzids[i] + " is not equivalent to its OlsonTimeZone corresponding.");
+                }
+                if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, false)) {
+                    logln("VTimeZone for " + tzids[i] + " is not equivalent to its OlsonTimeZone corresponding in strict comparison mode.");
+                }
+            }
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone after a cutoff date into VTIMEZONE format,
+     * create a new VTimeZone from the VTIMEZONE data, then compare transitions
+     */
+    public void TestVTimeZoneRoundTripPartial() {
+        long[] startTimes = new long[] {
+            getUTCMillis(1900, Calendar.JANUARY, 1),
+            getUTCMillis(1950, Calendar.JANUARY, 1),
+            getUTCMillis(2020, Calendar.JANUARY, 1)
+        };
+        long endTime = getUTCMillis(2050, Calendar.JANUARY, 1);
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < startTimes.length; n++) {
+            long startTime = startTimes[n];
+            for (int i = 0; i < tzids.length; i++) {
+                BasicTimeZone olsontz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+                VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+                VTimeZone vtz_new = null;
+                try {
+                    // Write out VTIMEZONE
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    OutputStreamWriter writer = new OutputStreamWriter(baos);
+                    vtz_org.write(writer, startTime);
+                    writer.close();
+                    byte[] vtzdata = baos.toByteArray();
+                    // Read VTIMEZONE
+                    ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                    InputStreamReader reader = new InputStreamReader(bais);
+                    vtz_new = VTimeZone.create(reader);
+                    reader.close();
+
+                } catch (IOException ioe) {
+                    errln("FAIL: IO error while writing/reading VTIMEZONE data");
+                }
+                // Check equivalency after the first transition.
+                // The DST information before the first transition might be lost
+                // because there is no good way to represent the initial time with
+                // VTIMEZONE.
+                if (vtz_new.getOffset(startTime) != olsontz.getOffset(startTime)) {
+                    errln("FAIL: VTimeZone for " + tzids[i]
+                             + " is not equivalent to its OlsonTimeZone corresponding at " + startTime);
+                }
+                TimeZoneTransition tzt = olsontz.getNextTransition(startTime, false);
+                if (tzt != null) {
+                    if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, true)) {
+                        errln("FAIL: VTimeZone for " + tzids[i] + "(>=" + startTime + ") is not equivalent to its OlsonTimeZone corresponding.");
+                    }
+                }
+            }            
+        }
+    }
+
+    /*
+     * Write out simple time zone rules from an OlsonTimeZone at various time into VTIMEZONE
+     * format and create a new VTimeZone from the VTIMEZONE data, then make sure the raw offset
+     * and DST savings are same in these two time zones.
+     */
+    public void TestVTimeZoneSimpleWrite() {
+        long[] testTimes = new long[] {
+                getUTCMillis(2006, Calendar.JANUARY, 1),
+                getUTCMillis(2006, Calendar.MARCH, 15),
+                getUTCMillis(2006, Calendar.MARCH, 31),
+                getUTCMillis(2006, Calendar.APRIL, 5),
+                getUTCMillis(2006, Calendar.OCTOBER, 25),
+                getUTCMillis(2006, Calendar.NOVEMBER, 1),
+                getUTCMillis(2006, Calendar.NOVEMBER, 5),
+                getUTCMillis(2007, Calendar.JANUARY, 1)
+        };
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < testTimes.length; n++) {
+            long time = testTimes[n];
+
+            int[] offsets1 = new int[2];
+            int[] offsets2 = new int[2];
+
+            for (int i = 0; i < tzids.length; i++) {
+                VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+                VTimeZone vtz_new = null;
+                try {
+                    // Write out VTIMEZONE
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    OutputStreamWriter writer = new OutputStreamWriter(baos);
+                    vtz_org.writeSimple(writer, time);
+                    writer.close();
+                    byte[] vtzdata = baos.toByteArray();
+                    // Read VTIMEZONE
+                    ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                    InputStreamReader reader = new InputStreamReader(bais);
+                    vtz_new = VTimeZone.create(reader);
+                    reader.close();
+                } catch (IOException ioe) {
+                    errln("FAIL: IO error while writing/reading VTIMEZONE data");
+                }
+
+                // Check equivalency
+                vtz_org.getOffset(time, false, offsets1);
+                vtz_new.getOffset(time, false, offsets2);
+                if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                    errln("FAIL: VTimeZone writeSimple for " + tzids[i] + " at time " + time + " failed to the round trip.");
+                }
+            }
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone into VTIMEZONE format with RFC2445 header TZURL and
+     * LAST-MODIFIED, create a new VTimeZone from the VTIMEZONE data to see if the headers are preserved.
+     */
+    public void TestVTimeZoneHeaderProps() {
+        String tzid = "America/Chicago";
+        String tzurl = "http://source.icu-project.org";
+        Date lastmod = new Date(getUTCMillis(2007, Calendar.JUNE, 1));
+
+        VTimeZone vtz = VTimeZone.create(tzid);
+        vtz.setTZURL(tzurl);
+        vtz.setLastModified(lastmod);
+
+        // Roundtrip conversion
+        VTimeZone newvtz1 = null;
+        try {
+            // Write out VTIMEZONE
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            OutputStreamWriter writer = new OutputStreamWriter(baos);
+            vtz.write(writer);
+            writer.close();
+            byte[] vtzdata = baos.toByteArray();
+            // Read VTIMEZONE
+            ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+            InputStreamReader reader = new InputStreamReader(bais);
+            newvtz1 = VTimeZone.create(reader);
+            reader.close();
+
+            // Check if TZURL and LAST-MODIFIED headers are preserved
+            if (!(tzurl.equals(newvtz1.getTZURL()))) {
+                errln("FAIL: TZURL property is not preserved during the roundtrip conversion.  Before:"
+                        + tzurl + "/After:" + newvtz1.getTZURL());
+            }
+            if (!(lastmod.equals(newvtz1.getLastModified()))) {
+                errln("FAIL: LAST-MODIFIED property is not preserved during the roundtrip conversion.  Before:"
+                        + lastmod.getTime() + "/After:" + newvtz1.getLastModified().getTime());
+            }
+        } catch (IOException ioe) {
+            errln("FAIL: IO error while writing/reading VTIMEZONE data");
+        }
+
+        // Second roundtrip, with a cutoff
+        VTimeZone newvtz2 = null;
+        try {
+            // Set different tzurl
+            String newtzurl = "http://www.ibm.com";
+            newvtz1.setTZURL(newtzurl);
+            // Write out VTIMEZONE
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            OutputStreamWriter writer = new OutputStreamWriter(baos);
+            newvtz1.write(writer, getUTCMillis(2000, Calendar.JANUARY, 1));
+            writer.close();
+            byte[] vtzdata = baos.toByteArray();
+            // Read VTIMEZONE
+            ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+            InputStreamReader reader = new InputStreamReader(bais);
+            newvtz2 = VTimeZone.create(reader);
+            reader.close();
+
+            // Check if TZURL and LAST-MODIFIED headers are preserved
+            if (!(newtzurl.equals(newvtz2.getTZURL()))) {
+                errln("FAIL: TZURL property is not preserved during the second roundtrip conversion.  Before:"
+                        + newtzurl + "/After:" + newvtz2.getTZURL());
+            }
+            if (!(lastmod.equals(newvtz2.getLastModified()))) {
+                errln("FAIL: LAST-MODIFIED property is not preserved during the second roundtrip conversion.  Before:"
+                        + lastmod.getTime() + "/After:" + newvtz2.getLastModified().getTime());
+            }
+        } catch (IOException ioe) {
+            errln("FAIL: IO error while writing/reading VTIMEZONE data");
+        }
+        
+    }
+
+    /*
+     * Extract simple rules from an OlsonTimeZone and make sure the rule format matches
+     * the expected format.
+     */
+    public void TestGetSimpleRules() {
+        long[] testTimes = new long[] {
+                getUTCMillis(1970, Calendar.JANUARY, 1),
+                getUTCMillis(2000, Calendar.MARCH, 31),
+                getUTCMillis(2005, Calendar.JULY, 1),
+                getUTCMillis(2010, Calendar.NOVEMBER, 1),
+            };
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < testTimes.length; n++) {
+            long time = testTimes[n];
+            for (int i = 0; i < tzids.length; i++) {
+                BasicTimeZone tz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+                TimeZoneRule[] rules = tz.getSimpleTimeZoneRulesNear(time);
+                if (rules == null) {
+                    errln("FAIL: Failed to extract simple rules for " + tzids[i] + " at " + time);
+                } else {
+                    if (rules.length == 1) {
+                        if (!(rules[0] instanceof InitialTimeZoneRule)) {
+                            errln("FAIL: Unexpected rule object type is returned for " + tzids[i] + " at " + time);
+                        }
+                    } else if (rules.length == 3) {
+                        if (!(rules[0] instanceof InitialTimeZoneRule)
+                                || !(rules[1] instanceof AnnualTimeZoneRule)
+                                || !(rules[2] instanceof AnnualTimeZoneRule)) {
+                            errln("FAIL: Unexpected rule object type is returned for " + tzids[i] + " at " + time);
+                        }
+                        for (int idx = 1; idx <= 2; idx++) {
+                            DateTimeRule dtr = ((AnnualTimeZoneRule)rules[idx]).getRule();
+                            if (dtr.getTimeRuleType() != DateTimeRule.WALL_TIME) {
+                                errln("FAIL: WALL_TIME is not used as the time rule in the time zone rule(" + idx + ") for " + tzids[i] + " at " + time);
+                            }
+                            if (dtr.getDateRuleType() != DateTimeRule.DOW) {
+                                errln("FAIL: DOW is not used as the date rule in the time zone rule(" + idx + ") for " + tzids[i] + " at " + time);
+                            }
+                        }
+                    } else {
+                        errln("FAIL: Unexpected number of rules returned for " + tzids[i] + " at " + time);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * API coverage tests for TimeZoneRule 
+     */
+    public void TestTimeZoneRuleCoverage() {
+        long time1 = getUTCMillis(2005, Calendar.JULY, 4);
+        long time2 = getUTCMillis(2015, Calendar.JULY, 4);
+        long time3 = getUTCMillis(1950, Calendar.JULY, 4);
+
+        DateTimeRule dtr1 = new DateTimeRule(Calendar.FEBRUARY, 29, Calendar.SUNDAY, false,
+                3*HOUR, DateTimeRule.WALL_TIME); // Last Sunday on or before Feb 29, at 3 AM, wall time
+        DateTimeRule dtr2 = new DateTimeRule(Calendar.MARCH, 11, 2*HOUR,
+                DateTimeRule.STANDARD_TIME); // Mar 11, at 2 AM, standard time
+        DateTimeRule dtr3 = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SATURDAY,
+                6*HOUR, DateTimeRule.UTC_TIME); //Last Saturday in Oct, at 6 AM, UTC
+        DateTimeRule dtr4 = new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY, true,
+                2*HOUR, DateTimeRule.WALL_TIME); // First Sunday on or after Mar 8, at 2 AM, wall time
+
+        AnnualTimeZoneRule a1 = new AnnualTimeZoneRule("a1", -3*HOUR, 1*HOUR, dtr1,
+                2000, AnnualTimeZoneRule.MAX_YEAR);
+        AnnualTimeZoneRule a2 = new AnnualTimeZoneRule("a2", -3*HOUR, 1*HOUR, dtr1,
+                2000, AnnualTimeZoneRule.MAX_YEAR);
+        AnnualTimeZoneRule a3 = new AnnualTimeZoneRule("a3", -3*HOUR, 1*HOUR, dtr1,
+                2000, 2010);
+        
+        InitialTimeZoneRule i1 = new InitialTimeZoneRule("i1", -3*HOUR, 0);
+        InitialTimeZoneRule i2 = new InitialTimeZoneRule("i2", -3*HOUR, 0);
+        InitialTimeZoneRule i3 = new InitialTimeZoneRule("i3", -3*HOUR, 1*HOUR);
+        
+        long[] emptytimes = {};
+        long[] trtimes1 = {0};
+        long[] trtimes2 = {0, 10000000};
+
+        TimeArrayTimeZoneRule t0 = null;
+        try {
+            // Try to construct TimeArrayTimeZoneRule with null transition times
+            t0 = new TimeArrayTimeZoneRule("nulltimes", -3*HOUR, 0,
+                    null, DateTimeRule.UTC_TIME);
+        } catch (IllegalArgumentException iae) {
+            logln("TimeArrayTimeZoneRule constructor throws IllegalArgumentException as expected.");
+            t0 = null;
+        }
+        if (t0 != null) {
+            errln("FAIL: TimeArrayTimeZoneRule constructor did not throw IllegalArgumentException for null times");
+        }
+        
+        try {
+            // Try to construct TimeArrayTimeZoneRule with empty transition times
+            t0 = new TimeArrayTimeZoneRule("nulltimes", -3*HOUR, 0,
+                    emptytimes, DateTimeRule.UTC_TIME);
+        } catch (IllegalArgumentException iae) {
+            logln("TimeArrayTimeZoneRule constructor throws IllegalArgumentException as expected.");
+            t0 = null;
+        }
+        if (t0 != null) {
+            errln("FAIL: TimeArrayTimeZoneRule constructor did not throw IllegalArgumentException for empty times");
+        }
+
+        TimeArrayTimeZoneRule t1 = new TimeArrayTimeZoneRule("t1", -3*HOUR, 0, trtimes1, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t2 = new TimeArrayTimeZoneRule("t2", -3*HOUR, 0, trtimes1, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t3 = new TimeArrayTimeZoneRule("t3", -3*HOUR, 0, trtimes2, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t4 = new TimeArrayTimeZoneRule("t4", -3*HOUR, 0, trtimes1, DateTimeRule.STANDARD_TIME);
+        TimeArrayTimeZoneRule t5 = new TimeArrayTimeZoneRule("t5", -4*HOUR, 1*HOUR, trtimes1, DateTimeRule.WALL_TIME);
+
+        // AnnualTimeZoneRule#getRule
+        if (!a1.getRule().equals(a2.getRule())) {
+            errln("FAIL: The same DateTimeRule must be returned from AnnualTimeZoneRule a1 and a2");
+        }
+    
+        // AnnualTimeZoneRule#getStartYear
+        int startYear = a1.getStartYear();
+        if (startYear != 2000) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a1 must be 2000 - returned: " + startYear);
+        }
+
+        // AnnualTimeZoneRule#getEndYear
+        int endYear = a1.getEndYear();
+        if (endYear != AnnualTimeZoneRule.MAX_YEAR) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a1 must be MAX_YEAR - returned: " + endYear);
+        }
+        endYear = a3.getEndYear();
+        if (endYear != 2010) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a3 must be 2010 - returned: " + endYear);
+        }
+        
+        // AnnualTimeZone#getStartInYear
+        Date d1 = a1.getStartInYear(2005, -3*HOUR, 0);
+        Date d2 = a3.getStartInYear(2005, -3*HOUR, 0);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: AnnualTimeZoneRule#getStartInYear did not work as expected");
+        }
+        d2 = a3.getStartInYear(2015, -3*HOUR, 0);
+        if (d2 != null) {
+            errln("FAIL: AnnualTimeZoneRule#getSTartInYear returned non-null date for 2015 which is out of rule range");
+        }
+
+        // AnnualTimeZone#getFirstStart
+        d1 = a1.getFirstStart(-3*HOUR, 0);
+        d2 = a1.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: The same start time should be returned by getFirstStart");
+        }
+
+        // AnnualTimeZone#getFinalStart
+        d1 = a1.getFinalStart(-3*HOUR, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getFinalStart for a1");
+        }
+        d1 = a1.getStartInYear(2010, -3*HOUR, 0);
+        d2 = a3.getFinalStart(-3*HOUR, 0);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: Bad date is returned by getFinalStart");
+        }
+
+        // AnnualTimeZone#getNextStart / getPreviousStart
+        d1 = a1.getNextStart(time1, -3*HOUR, 0, false);
+        if (d1 == null) {
+            errln("FAIL: Null Date is returned by getNextStart");
+        } else {
+            d2 = a1.getPreviousStart(d1.getTime(), -3*HOUR, 0, true);
+            if (d2 == null || !d1.equals(d2)) {
+                errln("FAIL: Bad Date is returned by getPreviousStart");
+            }
+        }
+        d1 = a3.getNextStart(time2, -3*HOUR, 0, false);
+        if (d1 != null) {
+            errln("FAIL: getNextStart must return null when no start time is available after the base time");
+        }
+        d1 = a3.getFinalStart(-3*HOUR, 0);
+        d2 = a3.getPreviousStart(time2, -3*HOUR, 0, false);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: getPreviousStart does not match with getFinalStart after the end year");
+        }
+
+        // AnnualTimeZone#isEquavalentTo
+        if (!a1.isEquivalentTo(a2)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is equivalent to a2, but returned false");
+        }
+        if (a1.isEquivalentTo(a3)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is not equivalent to a3, but returned true");
+        }
+        if (!a1.isEquivalentTo(a1)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is equivalent to itself, but returned false");
+        }
+        if (a1.isEquivalentTo(t1)) {
+            errln("FAIL: AnnualTimeZoneRule is not equivalent to TimeArrayTimeZoneRule, but returned true");
+        }
+
+        // AnnualTimeZone#isTransitionRule
+        if (!a1.isTransitionRule()) {
+            errln("FAIL: An AnnualTimeZoneRule is a transition rule, but returned false");
+        }
+
+        // AnnualTimeZone#toString
+        String str = a1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: AnnualTimeZoneRule#toString for a1 returns null or empty string");
+        } else {
+            logln("AnnualTimeZoneRule a1 : " + str);
+        }
+        str = a3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: AnnualTimeZoneRule#toString for a3 returns null or empty string");
+        } else {
+            logln("AnnualTimeZoneRule a3 : " + str);
+        }
+
+        // InitialTimeZoneRule#isEquivalentRule
+        if (!i1.isEquivalentTo(i2)) {
+            errln("FAIL: InitialTimeZoneRule i1 is equivalent to i2, but returned false");
+        }
+        if (i1.isEquivalentTo(i3)) {
+            errln("FAIL: InitialTimeZoneRule i1 is not equivalent to i3, but returned true");
+        }
+        if (i1.isEquivalentTo(a1)) {
+            errln("FAIL: An InitialTimeZoneRule is not equivalent to an AnnualTimeZoneRule, but returned true");
+        }
+
+        // InitialTimeZoneRule#getFirstStart/getFinalStart/getNextStart/getPreviousStart
+        d1 = i1.getFirstStart(0, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getFirstStart");
+        }
+        d1 = i1.getFinalStart(0, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getFinalStart");
+        }
+        d1 = i1.getNextStart(time1, 0, 0, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getNextStart");
+        }
+        d1 = i1.getPreviousStart(time1, 0, 0, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getPreviousStart");
+        }
+
+        // InitialTimeZoneRule#isTransitionRule
+        if (i1.isTransitionRule()) {
+            errln("FAIL: An InitialTimeZoneRule is not a transition rule, but returned true");
+        }
+
+        // InitialTimeZoneRule#toString
+        str = i1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: InitialTimeZoneRule#toString returns null or empty string");
+        } else {
+            logln("InitialTimeZoneRule i1 : " + str);
+        }
+        
+        
+        // TimeArrayTimeZoneRule#getStartTimes
+        long[] times = t1.getStartTimes();
+        if (times == null || times.length == 0 || times[0] != 0) {
+            errln("FAIL: Bad start times are returned by TimeArrayTimeZoneRule#getStartTimes");
+        }
+
+        // TimeArrayTimeZoneRule#getTimeType
+        if (t1.getTimeType() != DateTimeRule.UTC_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 uses UTC_TIME, but different type is returned");
+        }
+        if (t4.getTimeType() != DateTimeRule.STANDARD_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t4 uses STANDARD_TIME, but different type is returned");
+        }
+        if (t5.getTimeType() != DateTimeRule.WALL_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t5 uses WALL_TIME, but different type is returned");
+        }
+
+        // TimeArrayTimeZoneRule#getFirstStart/getFinalStart
+        d1 = t1.getFirstStart(0, 0);
+        if (d1 == null || d1.getTime() != trtimes1[0]) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t1");
+        }
+        d1 = t1.getFinalStart(0, 0);
+        if (d1 == null || d1.getTime() != trtimes1[0]) {
+            errln("FAIL: Bad final start time returned from TimeArrayTimeZoneRule t1");
+        }
+        d1 = t4.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || (d1.getTime() != trtimes1[0] + 4*HOUR)) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t4");
+        }
+        d1 = t5.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || (d1.getTime() != trtimes1[0] + 3*HOUR)) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t5");
+        }
+
+        // TimeArrayTimeZoneRule#getNextStart/getPreviousStart
+        d1 = t3.getNextStart(time1, -3*HOUR, 1*HOUR, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getNextStart after the final transition for t3");
+        }
+        d1 = t3.getPreviousStart(time1, -3*HOUR, 1*HOUR, false);
+        if (d1 == null || d1.getTime() != trtimes2[1]) {
+            errln("FAIL: Bad start time returned by getPreviousStart for t3");
+        } else {
+            d2 = t3.getPreviousStart(d1.getTime(), -3*HOUR, 1*HOUR, false);
+            if (d2 == null || d2.getTime() != trtimes2[0]) {
+                errln("FAIL: Bad start time returned by getPreviousStart for t3");
+            }
+        }
+        d1 = t3.getPreviousStart(time3, -3*HOUR, 1*HOUR, false); //time3 - year 1950, no result expected
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getPrevoousStart for t3");
+        }
+
+        // TimeArrayTimeZoneRule#isEquivalentTo
+        if (!t1.isEquivalentTo(t2)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is equivalent to t2, but returned false");
+        }
+        if (t1.isEquivalentTo(t3)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is not equivalent to t3, but returned true");
+        }
+        if (t1.isEquivalentTo(t4)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is not equivalent to t4, but returned true");
+        }
+        if (t1.isEquivalentTo(a1)) {
+            errln("FAIL: TimeArrayTimeZoneRule is not equivalent to AnnualTimeZoneRule, but returned true");
+        }
+
+        // TimeArrayTimeZoneRule#isTransitionRule
+        if (!t1.isTransitionRule()) {
+            errln("FAIL: A TimeArrayTimeZoneRule is a transition rule, but returned false");
+        }
+
+        // TimeArrayTimeZoneRule#toString
+        str = t3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: TimeArrayTimeZoneRule#toString returns null or empty string");
+        } else {
+            logln("TimeArrayTimeZoneRule t3 : " + str);
+        }
+
+        // DateTimeRule#toString
+        str = dtr1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr1 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr2.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr2 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr3 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr4.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr4 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+    }
+
+    /*
+     * API coverage test for BasicTimeZone APIs in SimpleTimeZone
+     */
+    public void TestSimpleTimeZoneCoverage() {
+
+        long time1 = getUTCMillis(1990, Calendar.JUNE, 1);
+        long time2 = getUTCMillis(2000, Calendar.JUNE, 1);
+
+        TimeZoneTransition tzt1, tzt2;
+
+        // BasicTimeZone API implementation in SimpleTimeZone
+        SimpleTimeZone stz1 = new SimpleTimeZone(-5*HOUR, "GMT-5");
+
+        tzt1 = stz1.getNextTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned by getNextTranstion for SimpleTimeZone with no DST rule");
+        }
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned by getPreviousTransition  for SimpleTimeZone with no DST rule");
+        }
+        TimeZoneRule[] tzrules = stz1.getTimeZoneRules();
+        if (tzrules.length != 1 || !(tzrules[0] instanceof InitialTimeZoneRule)) {
+            errln("FAIL: Invalid results returned by SimpleTimeZone#getTimeZoneRules");
+        }
+
+        // Set DST rule
+        stz1.setStartRule(Calendar.MARCH, 11, 2*HOUR); // March 11
+        stz1.setEndRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2*HOUR); // First Sunday in November
+        tzt1 = stz1.getNextTransition(time1, false);
+        if (tzt1 == null) {
+            errln("FAIL: Non-null transition must be returned by getNextTranstion for SimpleTimeZone with a DST rule");
+        } else {
+            String str = tzt1.toString();
+            if (str == null || str.length() == 0) {
+                errln("FAIL: TimeZoneTransition#toString returns null or empty string");
+            } else {
+                logln(str);
+            }
+        }
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 == null) {
+            errln("FAIL: Non-null transition must be returned by getPreviousTransition  for SimpleTimeZone with a DST rule");
+        }
+        tzrules = stz1.getTimeZoneRules();
+        if (tzrules.length != 3 || !(tzrules[0] instanceof InitialTimeZoneRule)
+                || !(tzrules[1] instanceof AnnualTimeZoneRule)
+                || !(tzrules[2] instanceof AnnualTimeZoneRule)) {
+            errln("FAIL: Invalid results returned by SimpleTimeZone#getTimeZoneRules for a SimpleTimeZone with DST");
+        }
+        // Set DST start year
+        stz1.setStartYear(2007);
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned before 1990");
+        }
+        tzt1 = stz1.getNextTransition(time1, false); // transition after 1990-06-01
+        tzt2 = stz1.getNextTransition(time2, false); // transition after 2000-06-01
+        if (tzt1 == null || tzt2 == null || !tzt1.equals(tzt2)) {
+            errln("FAIL: Bad transition returned by SimpleTimeZone#getNextTransition");
+        }
+    }
+    
+    /*
+     * API coverage test for VTimeZone
+     */
+    public void TestVTimeZoneCoverage() {
+        final String TZID = "Europe/Moscow";
+        BasicTimeZone otz = (BasicTimeZone)TimeZone.getTimeZone(TZID, TimeZone.TIMEZONE_ICU);
+        VTimeZone vtz = VTimeZone.create(TZID);
+
+        // getOffset(era, year, month, day, dayOfWeek, milliseconds)
+        int offset1 = otz.getOffset(GregorianCalendar.AD, 2007, Calendar.JULY, 1, Calendar.SUNDAY, 0);
+        int offset2 = vtz.getOffset(GregorianCalendar.AD, 2007, Calendar.JULY, 1, Calendar.SUNDAY, 0);
+        if (offset1 != offset2) {
+            errln("FAIL: getOffset(int,int,int,int,int,int) returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // getOffset(date, local, offsets)
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+        long t = System.currentTimeMillis();
+        otz.getOffset(t, false, offsets1);
+        vtz.getOffset(t, false, offsets2);
+        if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+            errln("FAIL: getOffset(long,boolean,int[]) returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // getRawOffset
+        if (otz.getRawOffset() != vtz.getRawOffset()) {
+            errln("FAIL: getRawOffset returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // inDaylightTime
+        Date d = new Date();
+        if (otz.inDaylightTime(d) != vtz.inDaylightTime(d)) {
+            errln("FAIL: inDaylightTime returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // useDaylightTime
+        if (otz.useDaylightTime() != vtz.useDaylightTime()) {
+            errln("FAIL: useDaylightTime returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // setRawOffset
+        final int RAW = -10*HOUR;
+        VTimeZone tmpvtz = (VTimeZone)vtz.clone();
+        tmpvtz.setRawOffset(RAW);
+        if (tmpvtz.getRawOffset() != RAW) {
+            logln("setRawOffset is implemented");
+        }
+
+        // hasSameRules
+        boolean bSame = otz.hasSameRules(vtz);
+        logln("OlsonTimeZone#hasSameRules(VTimeZone) should return false always for now - actual: " + bSame);
+
+        // getTZURL/setTZURL
+        final String TZURL = "http://icu-project.org/timezone";
+        String tzurl = vtz.getTZURL();
+        if (tzurl != null) {
+            errln("FAIL: getTZURL returned non-null value");
+        }
+        vtz.setTZURL(TZURL);
+        tzurl = vtz.getTZURL();
+        if (!TZURL.equals(tzurl)) {
+            errln("FAIL: URL returned by getTZURL does not match the one set by setTZURL");
+        }
+
+        // getLastModified/setLastModified
+        Date lastmod = vtz.getLastModified();
+        if (lastmod != null) {
+            errln("FAIL: getLastModified returned non-null value");
+        }
+        Date newdate = new Date();
+        vtz.setLastModified(newdate);
+        lastmod = vtz.getLastModified();
+        if (!newdate.equals(lastmod)) {
+            errln("FAIL: Date returned by getLastModified does not match the one set by setLastModified");
+        }
+
+        // getNextTransition/getPreviousTransition
+        long base = getUTCMillis(2007, Calendar.JULY, 1);
+        TimeZoneTransition tzt1 = otz.getNextTransition(base, true);
+        TimeZoneTransition tzt2 = vtz.getNextTransition(base, true);
+        if (tzt1.equals(tzt2)) {
+            errln("FAIL: getNextTransition returned different results in VTimeZone and OlsonTimeZone");
+        }
+        tzt1 = otz.getPreviousTransition(base, false);
+        tzt2 = vtz.getPreviousTransition(base, false);
+        if (tzt1.equals(tzt2)) {
+            errln("FAIL: getPreviousTransition returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // hasEquivalentTransitions
+        long time1 = getUTCMillis(1950, Calendar.JANUARY, 1);
+        long time2 = getUTCMillis(2020, Calendar.JANUARY, 1);
+        if (!vtz.hasEquivalentTransitions(otz, time1, time2)) {
+            errln("FAIL: hasEquivalentTransitons returned false for the same time zone");
+        }
+
+        // getTimeZoneRules
+        TimeZoneRule[] rulesetAll = vtz.getTimeZoneRules();
+        TimeZoneRule[] ruleset1 = vtz.getTimeZoneRules(time1);
+        TimeZoneRule[] ruleset2 = vtz.getTimeZoneRules(time2);
+        if (rulesetAll.length < ruleset1.length || ruleset1.length < ruleset2.length) {
+            errln("FAIL: Number of rules returned by getRules is invalid");
+        }
+    }
+
+    public void TestVTimeZoneParse() {
+        // Trying to create VTimeZone from empty data
+        StringReader r = new StringReader("");
+        VTimeZone empty = VTimeZone.create(r);
+        if (empty != null) {
+            errln("FAIL: Non-null VTimeZone is returned for empty VTIMEZONE data");
+        }
+
+        // Create VTimeZone for Asia/Tokyo
+        String asiaTokyo =
+                "BEGIN:VTIMEZONE\r\n" +
+                "TZID:Asia\r\n" +
+                "\t/Tokyo\r\n" +
+                "BEGIN:STANDARD\r\n" +
+                "TZOFFSETFROM:+0900\r\n" +
+                "TZOFFSETTO:+0900\r\n" +
+                "TZNAME:JST\r\n" +
+                "DTSTART:19700101\r\n" +
+                " T000000\r\n" +
+                "END:STANDARD\r\n" +
+                "END:VTIMEZONE";
+        r = new StringReader(asiaTokyo);
+        VTimeZone tokyo = VTimeZone.create(r);
+        if (tokyo == null) {
+            errln("FAIL: Failed to create a VTimeZone tokyo");
+        } else {
+            // Make sure offsets are correct
+            int[] offsets = new int[2];
+            tokyo.getOffset(System.currentTimeMillis(), false, offsets);
+            if (offsets[0] != 9*HOUR || offsets[1] != 0) {
+                errln("FAIL: Bad offsets returned by a VTimeZone created for Tokyo");
+            }
+        }        
+
+        // Create VTimeZone from VTIMEZONE data
+        String fooData = 
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FOO\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0700\r\n" +
+            "TZOFFSETTO:-0800\r\n" +
+            "TZNAME:FST\r\n" +
+            "DTSTART:20071010T010000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=WE;BYMONTHDAY=10,11,12,13,14,15,16;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0800\r\n" +
+            "TZOFFSETTO:-0700\r\n" +
+            "TZNAME:FDT\r\n" +
+            "DTSTART:20070415T010000\r\n" +
+            "RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=4\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        r = new StringReader(fooData);
+        VTimeZone foo = VTimeZone.create(r);
+        if (foo == null) {
+            errln("FAIL: Failed to create a VTimeZone foo");
+        } else {
+            // Write VTIMEZONE data
+            StringWriter w = new StringWriter();
+            try {
+                foo.write(w, getUTCMillis(2005, Calendar.JANUARY, 1));
+            } catch (IOException ioe) {
+                errln("FAIL: IOException is thrown while writing VTIMEZONE data for foo");
+            }
+            logln(w.toString());
+        }
+    }
+
+    public void TestT6216() {
+        // Test case in #6216
+        String tokyoTZ =
+            "BEGIN:VCALENDAR\r\n" +
+            "VERSION:2.0\r\n" +
+            "PRODID:-//PYVOBJECT//NONSGML Version 1//EN\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:Asia/Tokyo\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "DTSTART:20000101T000000\r\n" +
+            "RRULE:FREQ=YEARLY;BYMONTH=1\r\n" +
+            "TZNAME:Asia/Tokyo\r\n" +
+            "TZOFFSETFROM:+0900\r\n" +
+            "TZOFFSETTO:+0900\r\n" +
+            "END:STANDARD\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        // Single final rule, overlapping with another
+        String finalOverlap =
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FinalOverlap\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STD\r\n" +
+            "DTSTART:20001029T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0300\r\n" +
+            "TZOFFSETTO:-0200\r\n" +
+            "TZNAME:DST\r\n" +
+            "DTSTART:19990404T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=20050403T040000Z\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        // Single final rule, no overlapping with another
+        String finalNonOverlap = 
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FinalNonOverlap\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STD\r\n" +
+            "DTSTART:20001029T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=20041031T040000Z\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0300\r\n" +
+            "TZOFFSETTO:-0200\r\n" +
+            "TZNAME:DST\r\n" +
+            "DTSTART:19990404T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=20050403T040000Z\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STDFINAL\r\n" +
+            "DTSTART:20071028T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        int[][] TestDates = {
+                {1995, Calendar.JANUARY, 1},
+                {1995, Calendar.JULY, 1},
+                {2000, Calendar.JANUARY, 1},
+                {2000, Calendar.JULY, 1},
+                {2005, Calendar.JANUARY, 1},
+                {2005, Calendar.JULY, 1},
+                {2010, Calendar.JANUARY, 1},
+                {2010, Calendar.JULY, 1},
+        };
+
+        String[] TestZones = {
+            tokyoTZ,
+            finalOverlap,
+            finalNonOverlap,
+        };
+
+        int[][] Expected = {
+          //  JAN90      JUL90      JAN00      JUL00      JAN05      JUL05      JAN10      JUL10
+            { 32400000,  32400000,  32400000,  32400000,  32400000,  32400000,  32400000,  32400000},
+            {-10800000, -10800000,  -7200000,  -7200000, -10800000,  -7200000, -10800000, -10800000},
+            {-10800000, -10800000,  -7200000,  -7200000, -10800000,  -7200000, -10800000, -10800000},
+        };
+
+        // Get test times
+        long[] times = new long[TestDates.length];
+        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        for (int i = 0; i < TestDates.length; i++) {
+            cal.clear();
+            cal.set(TestDates[i][0], TestDates[i][1], TestDates[i][2]);
+            times[i] = cal.getTimeInMillis();
+        }
+
+        for (int i = 0; i < TestZones.length; i++) {
+            try {
+                VTimeZone vtz = VTimeZone.create(new StringReader(TestZones[i]));
+                for (int j = 0; j < times.length; j++) {
+                    int offset = vtz.getOffset(times[j]);
+                    if (offset != Expected[i][j]) {
+                        errln("FAIL: Invalid offset at time(" + times[j] + "):" + offset + " Expected:" + Expected[i][j]);
+                    }
+                }
+            } catch (Exception e) {
+                errln("FAIL: Failed to calculate the offset for VTIMEZONE data " + i);
+            }
+        }
+    }
+
+    // Internal utility methods -----------------------------------------
+
+    /*
+     * Check if a time shift really happens on each transition returned by getNextTransition or
+     * getPreviousTransition in the specified time range
+     */
+    private void verifyTransitions(TimeZone tz, long start, long end) {
+        BasicTimeZone icutz = (BasicTimeZone)tz;
+        long time;
+        int[] before = new int[2];
+        int[] after = new int[2];
+        TimeZoneTransition tzt0;
+
+        // Ascending
+        tzt0 = null;
+        time = start;
+        while(true) {
+            TimeZoneTransition tzt = icutz.getNextTransition(time, false);
+
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+            if (time >= end) {
+                break;
+            }
+            icutz.getOffset(time, false, after);
+            icutz.getOffset(time - 1, false, before);
+
+            if (after[0] == before[0] && after[1] == before[1]) {
+                errln("FAIL: False transition returned by getNextTransition for " + icutz.getID() + " at " + time);
+            }
+            if (tzt0 != null &&
+                    (tzt0.getTo().getRawOffset() != tzt.getFrom().getRawOffset()
+                    || tzt0.getTo().getDSTSavings() != tzt.getFrom().getDSTSavings())) {
+                errln("FAIL: TO rule of the previous transition does not match FROM rule of this transtion at "
+                        + time + " for " + icutz.getID());                
+            }
+            tzt0 = tzt;
+        }
+
+        // Descending
+        tzt0 = null;
+        time = end;
+        while(true) {
+            TimeZoneTransition tzt = icutz.getPreviousTransition(time, false);
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+            if (time <= start) {
+                break;
+            }
+            icutz.getOffset(time, false, after);
+            icutz.getOffset(time - 1, false, before);
+
+            if (after[0] == before[0] && after[1] == before[1]) {
+                errln("FAIL: False transition returned by getPreviousTransition for " + icutz.getID() + " at " + time);
+            }
+
+            if (tzt0 != null &&
+                    (tzt0.getFrom().getRawOffset() != tzt.getTo().getRawOffset()
+                    || tzt0.getFrom().getDSTSavings() != tzt.getTo().getDSTSavings())) {
+                errln("FAIL: TO rule of the next transition does not match FROM rule in this transtion at "
+                        + time + " for " + icutz.getID());                
+            }
+            tzt0 = tzt;
+        }
+    }
+
+    /*
+     * Compare all time transitions in 2 time zones in the specified time range in ascending order
+     */
+    private void compareTransitionsAscending(TimeZone tz1, TimeZone tz2, long start, long end, boolean inclusive) {
+        BasicTimeZone z1 = (BasicTimeZone)tz1;
+        BasicTimeZone z2 = (BasicTimeZone)tz2;
+        String zid1 = tz1.getID();
+        String zid2 = tz2.getID();
+
+        long time = start;
+        while(true) {
+            TimeZoneTransition tzt1 = z1.getNextTransition(time, inclusive);
+            TimeZoneTransition tzt2 = z2.getNextTransition(time, inclusive);
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tzt1 != null) {
+                if (tzt1.getTime() < end || (inclusive && tzt1.getTime() == end)) {
+                    inRange1 = true;
+                }
+            }
+            if (tzt2 != null) {
+                if (tzt2.getTime() < end || (inclusive && tzt2.getTime() == end)) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1) {
+                errln("FAIL: " + zid1 + " does not have any transitions after " + time + " before " + end);
+                break;
+            }
+            if (!inRange2) {
+                errln("FAIL: " + zid2 + " does not have any transitions after " + time + " before " + end);
+                break;
+            }
+            if (tzt1.getTime() != tzt2.getTime()) {
+                errln("FAIL: First transition after " + time + " "
+                        + zid1 + "[" + tzt1.getTime() + "] "
+                        + zid2 + "[" + tzt2.getTime() + "]");
+                break;
+            }
+            time = tzt1.getTime();
+            if (inclusive) {
+                time++;
+            }
+        }
+    }
+
+    /*
+     * Compare all time transitions in 2 time zones in the specified time range in descending order
+     */
+    private void compareTransitionsDescending(TimeZone tz1, TimeZone tz2, long start, long end, boolean inclusive) {
+        BasicTimeZone z1 = (BasicTimeZone)tz1;
+        BasicTimeZone z2 = (BasicTimeZone)tz2;
+        String zid1 = tz1.getID();
+        String zid2 = tz2.getID();
+        long time = end;
+        while(true) {
+            TimeZoneTransition tzt1 = z1.getPreviousTransition(time, inclusive);
+            TimeZoneTransition tzt2 = z2.getPreviousTransition(time, inclusive);
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tzt1 != null) {
+                if (tzt1.getTime() > start || (inclusive && tzt1.getTime() == start)) {
+                    inRange1 = true;
+                }
+            }
+            if (tzt2 != null) {
+                if (tzt2.getTime() > start || (inclusive && tzt2.getTime() == start)) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1) {
+                errln("FAIL: " + zid1 + " does not have any transitions before " + time + " after " + start);
+                break;
+            }
+            if (!inRange2) {
+                errln("FAIL: " + zid2 + " does not have any transitions before " + time + " after " + start);
+                break;
+            }
+            if (tzt1.getTime() != tzt2.getTime()) {
+                errln("FAIL: Last transition before " + time + " "
+                        + zid1 + "[" + tzt1.getTime() + "] "
+                        + zid2 + "[" + tzt2.getTime() + "]");
+                break;
+            }
+            time = tzt1.getTime();
+            if (inclusive) {
+                time--;
+            }
+        }
+    }
+
+    private static final String[] TESTZIDS = {
+        "AGT",
+        "America/New_York",
+        "America/Los_Angeles",
+        "America/Indiana/Indianapolis",
+        "America/Havana",
+        "Europe/Lisbon",
+        "Europe/Paris",
+        "Asia/Tokyo",
+        "Asia/Sakhalin",
+        "Africa/Cairo",
+        "Africa/Windhoek",
+        "Australia/Sydney",
+        "Etc/GMT+8"
+    };
+
+    private String[] getTestZIDs() {
+        if (getInclusion() > 5) {
+            return TimeZone.getAvailableIDs();
+        }
+        return TESTZIDS;
+    }
+
+    private static final int[][] TESTYEARS = {
+        {1895, 1905}, // including int32 minimum second
+        {1965, 1975}, // including the epoch
+        {1995, 2015}  // practical year range
+    };
+
+    private long[] getTestTimeRange(int idx) {
+        int loyear, hiyear;
+        if (idx < TESTYEARS.length) {
+            loyear = TESTYEARS[idx][0];
+            hiyear = TESTYEARS[idx][1];
+        } else if (idx == TESTYEARS.length && getInclusion() > 5) {
+            loyear = 1850;
+            hiyear = 2050;
+        } else {
+            return null;
+        }
+
+        long[] times = new long[2];
+        times[0] = getUTCMillis(loyear, Calendar.JANUARY, 1);
+        times[1] = getUTCMillis(hiyear + 1, Calendar.JANUARY, 1);
+
+        return times;
+    }
+
+    private GregorianCalendar utcCal;
+
+    private long getUTCMillis(int year, int month, int dayOfMonth) {
+        if (utcCal == null) {
+            utcCal = new GregorianCalendar(TimeZone.getTimeZone("UTC"), ULocale.ROOT);
+        }
+        utcCal.clear();
+        utcCal.set(year, month, dayOfMonth);
+        return utcCal.getTimeInMillis();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
new file mode 100644
index 0000000..58216ac
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -0,0 +1,1478 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.timezone;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * @test 1.22 99/09/21
+ * @bug 4028006 4044013 4096694 4107276 4107570 4112869 4130885
+ * @summary test TimeZone
+ * @build TimeZoneTest
+ */
+public class TimeZoneTest extends TestFmwk
+{
+    static final int millisPerHour = 3600000;
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneTest().run(args);
+    }
+
+    /**
+     * NOTE: As of ICU 2.8, the mapping of 3-letter legacy aliases
+     * to `real' Olson IDs is under control of the underlying JDK.
+     * This test may fail on one JDK and pass on another; don't be
+     * too concerned.  Alan
+     *
+     * Bug 4130885
+     * Certain short zone IDs, used since 1.1.x, are incorrect.
+     *  
+     * The worst of these is:
+     *
+     * "CAT" (Central African Time) should be GMT+2:00, but instead returns a
+     * zone at GMT-1:00. The zone at GMT-1:00 should be called EGT, CVT, EGST,
+     * or AZOST, depending on which zone is meant, but in no case is it CAT.
+     *
+     * Other wrong zone IDs:
+     *
+     * ECT (European Central Time) GMT+1:00: ECT is Ecuador Time,
+     * GMT-5:00. European Central time is abbreviated CEST.
+     *
+     * SST (Solomon Island Time) GMT+11:00. SST is actually Samoa Standard Time,
+     * GMT-11:00. Solomon Island time is SBT.
+     *
+     * NST (New Zealand Time) GMT+12:00. NST is the abbreviation for
+     * Newfoundland Standard Time, GMT-3:30. New Zealanders use NZST.
+     *
+     * AST (Alaska Standard Time) GMT-9:00. [This has already been noted in
+     * another bug.] It should be "AKST". AST is Atlantic Standard Time,
+     * GMT-4:00.
+     *
+     * PNT (Phoenix Time) GMT-7:00. PNT usually means Pitcairn Time,
+     * GMT-8:30. There is no standard abbreviation for Phoenix time, as distinct
+     * from MST with daylight savings.
+     *
+     * In addition to these problems, a number of zones are FAKE. That is, they
+     * don't match what people use in the real world.
+     *
+     * FAKE zones:
+     *
+     * EET (should be EEST)
+     * ART (should be EEST)
+     * MET (should be IRST)
+     * NET (should be AMST)
+     * PLT (should be PKT)
+     * BST (should be BDT)
+     * VST (should be ICT)
+     * CTT (should be CST) +
+     * ACT (should be CST) +
+     * AET (should be EST) +
+     * MIT (should be WST) +
+     * IET (should be EST) +
+     * PRT (should be AST) +
+     * CNT (should be NST)
+     * AGT (should be ARST)
+     * BET (should be EST) +
+     *
+     * + A zone with the correct name already exists and means something
+     * else. E.g., EST usually indicates the US Eastern zone, so it cannot be
+     * used for Brazil (BET).
+     */
+    public void TestShortZoneIDs() throws Exception {
+
+        ZoneDescriptor[] JDK_116_REFERENCE_LIST = {
+            new ZoneDescriptor("MIT", -660, false),
+            new ZoneDescriptor("HST", -600, false),
+            new ZoneDescriptor("AST", -540, true),
+            new ZoneDescriptor("PST", -480, true),
+            new ZoneDescriptor("PNT", -420, false),
+            new ZoneDescriptor("MST", -420, false),// updated Aug 2003 aliu
+            new ZoneDescriptor("CST", -360, true),
+            new ZoneDescriptor("IET", -300, true), // updated Feb 2006 srl
+            new ZoneDescriptor("EST", -300, false),// updated Aug 2003 aliu
+            new ZoneDescriptor("PRT", -240, false),
+            new ZoneDescriptor("CNT", -210, true),
+            new ZoneDescriptor("AGT", -180, true), // updated by tzdata 2007k
+            new ZoneDescriptor("BET", -180, true),
+            // new ZoneDescriptor("CAT", -60, false), // Wrong:
+            // As of bug 4130885, fix CAT (Central Africa)
+            new ZoneDescriptor("CAT", 120, false), // Africa/Harare
+            new ZoneDescriptor("GMT", 0, false),
+            new ZoneDescriptor("UTC", 0, false),
+            new ZoneDescriptor("ECT", 60, true),
+            new ZoneDescriptor("ART", 120, true),
+            new ZoneDescriptor("EET", 120, true),
+            new ZoneDescriptor("EAT", 180, false),
+            // new ZoneDescriptor("MET", 210, true),
+            // This is a standard Unix zone, so don't remap it - Liu 3Jan01
+            // new ZoneDescriptor("NET", 240, false);
+            // As of bug 4191164, fix NET
+            new ZoneDescriptor("NET", 240, true),
+            // PLT behaves differently under different JDKs, so we don't check it
+            // new ZoneDescriptor("PLT", 300, true), // updated by tzdata 2008c
+            new ZoneDescriptor("IST", 330, false),
+            new ZoneDescriptor("BST", 360, false),
+            new ZoneDescriptor("VST", 420, false),
+            new ZoneDescriptor("CTT", 480, false), // updated Oct 2003 aliu
+            new ZoneDescriptor("JST", 540, false),
+            new ZoneDescriptor("ACT", 570, false), // updated Oct 2003 aliu
+            new ZoneDescriptor("AET", 600, true),
+            new ZoneDescriptor("SST", 660, false),
+            // new ZoneDescriptor("NST", 720, false),
+            // As of bug 4130885, fix NST (New Zealand)
+            new ZoneDescriptor("NST", 720, true), // Pacific/Auckland
+
+            // [3Jan01 Liu] Three of these zones have been updated.
+            // The CTT and ACT zones just remap to Asia/Shanghai
+            // and Australia/Darwin.  Since those zones have changed,
+            // I have updated the table.  The MET zone used to be mapped
+            // to Asia/Tehran but since MET is a standard Unix zone named
+            // in the source data we no longer do this in icu or icu4j.
+        };
+
+        Hashtable hash = new Hashtable();
+
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i=0; i<ids.length; ++i) {
+            String id = ids[i];
+            if (id.length() == 3) {
+                hash.put(id, new ZoneDescriptor(TimeZone.getTimeZone(id)));
+            }
+        }
+
+        for (int i=0; i<JDK_116_REFERENCE_LIST.length; ++i) {
+            ZoneDescriptor referenceZone = JDK_116_REFERENCE_LIST[i];
+            ZoneDescriptor currentZone = (ZoneDescriptor)hash.get(referenceZone.getID());
+            if (referenceZone.equals(currentZone)) {
+                logln("ok " + referenceZone);
+            }
+            else {
+                warnln("Fail: Expected " + referenceZone +
+                      "; got " + currentZone);
+            }
+        }
+    }
+
+    /**
+     * A descriptor for a zone; used to regress the short zone IDs.
+     */
+    static class ZoneDescriptor {
+        String id;
+        int offset; // In minutes
+        boolean daylight;
+
+        ZoneDescriptor(TimeZone zone) {
+            this.id = zone.getID();
+            this.offset = zone.getRawOffset() / 60000;
+            this.daylight = zone.useDaylightTime();
+        }
+
+        ZoneDescriptor(String id, int offset, boolean daylight) {
+            this.id = id;
+            this.offset = offset;
+            this.daylight = daylight;
+        }
+
+        public String getID() { return id; }
+
+        public boolean equals(Object o) {
+            ZoneDescriptor that = (ZoneDescriptor)o;
+            return that != null &&
+                id.equals(that.id) &&
+                offset == that.offset &&
+                daylight == that.daylight;
+        }
+
+        public String toString() {
+            int min = offset;
+            char sign = '+';
+            if (min < 0) { sign = '-'; min = -min; }
+
+            return "Zone[\"" + id + "\", GMT" + sign + (min/60) + ':' +
+                (min%60<10?"0":"") + (min%60) + ", " +
+                (daylight ? "Daylight" : "Standard") + "]";
+        }
+
+        public static int compare(Object o1, Object o2) {
+            ZoneDescriptor i1 = (ZoneDescriptor)o1;
+            ZoneDescriptor i2 = (ZoneDescriptor)o2;
+            if (i1.offset > i2.offset) return 1;
+            if (i1.offset < i2.offset) return -1;
+            if (i1.daylight && !i2.daylight) return 1;
+            if (!i1.daylight && i2.daylight) return -1;
+            return i1.id.compareTo(i2.id);
+        }
+    }
+
+    /**
+     * As part of the VM fix (see CCC approved RFE 4028006, bug
+     * 4044013), TimeZone.getTimeZone() has been modified to recognize
+     * generic IDs of the form GMT[+-]hh:mm, GMT[+-]hhmm, and
+     * GMT[+-]hh.  Test this behavior here.
+     *
+     * Bug 4044013
+     */
+    public void TestCustomParse() {
+        String[] DATA = {
+            // ID               offset(sec)     output ID
+            "GMT",              "0",            "GMT",      // system ID
+            "GMT-YOUR.AD.HERE", "0",            "GMT",
+            "GMT0",             "0",            "GMT0",     // system ID
+            "GMT+0",            "0",            "GMT+0",    // system ID
+            "GMT+1",            "3600",         "GMT+0100",
+            "GMT-0030",         "-1800",        "GMT-0030",
+            "GMT+15:99",        "0",            "GMT",
+            "GMT+",             "0",            "GMT",
+            "GMT-",             "0",            "GMT",
+            "GMT+0:",           "0",            "GMT",
+            "GMT-:",            "0",            "GMT",
+            "GMT+0010",         "600",          "GMT+0010",
+            "GMT-10",           "-36000",       "GMT-1000",
+            "GMT+30",           "0",            "GMT",
+            "GMT-3:30",         "-12600",       "GMT-0330",
+            "GMT-230",          "-9000",        "GMT-0230",
+            "GMT+05:13:05",     "18785",        "GMT+051305",
+            "GMT-71023",        "-25823",       "GMT-071023",
+            "GMT+01:23:45:67",  "0",            "GMT",
+            "GMT+01:234",       "0",            "GMT",
+            "GMT-2:31:123",     "0",            "GMT",
+            "GMT+3:75",         "0",            "GMT",
+            "GMT-01010101",     "0",            "GMT",
+        };
+        for (int i = 0; i < DATA.length; i += 3) {
+            String id = DATA[i];
+            int offset = Integer.parseInt(DATA[i+1]);
+            String expId = DATA[i+2];
+
+            TimeZone zone = TimeZone.getTimeZone(id);
+            String gotID = zone.getID();
+            int gotOffset = zone.getRawOffset()/1000;
+
+            logln(id + " -> " + gotID + " " + gotOffset);
+
+            if (offset != gotOffset) {
+                errln("FAIL: Unexpected offset for " + id + " - returned:" + gotOffset + " expected:" + offset);
+            }
+            if (!expId.equals(gotID)) {
+                if (TimeZone.getDefaultTimeZoneType() != TimeZone.TIMEZONE_ICU) {
+                    logln("ID for " + id + " - returned:" + gotID + " expected:" + expId);
+                } else {
+                    errln("FAIL: Unexpected ID for " + id + " - returned:" + gotID + " expected:" + expId);
+                }
+            }
+        }
+    }
+
+    /**
+     * Test the basic functionality of the getDisplayName() API.
+     *
+     * Bug 4112869
+     * Bug 4028006
+     *
+     * See also API change request A41.
+     *
+     * 4/21/98 - make smarter, so the test works if the ext resources
+     * are present or not.
+     */
+    public void TestDisplayName() {
+        TimeZone zone = TimeZone.getTimeZone("PST");
+        String name = zone.getDisplayName(Locale.ENGLISH);
+        logln("PST->" + name);
+
+        // dlf - we now (3.4.1) return generic time
+        if (!name.equals("Pacific Time"))
+            errln("Fail: Expected \"Pacific Time\", got " + name +
+                  " for " + zone);
+
+        //*****************************************************************
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+
+        // todo: check to see whether we can test for all of pst, pdt, pt
+        Object[] DATA = {
+            Boolean.FALSE, new Integer(TimeZone.SHORT), "PST",
+            Boolean.TRUE,  new Integer(TimeZone.SHORT), "PDT",
+            Boolean.FALSE, new Integer(TimeZone.LONG),  "Pacific Standard Time",
+            Boolean.TRUE,  new Integer(TimeZone.LONG),  "Pacific Daylight Time",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            name = zone.getDisplayName(((Boolean)DATA[i]).booleanValue(),
+                                       ((Integer)DATA[i+1]).intValue(),
+                                       Locale.ENGLISH);
+            if (!name.equals(DATA[i+2]))
+                errln("Fail: Expected " + DATA[i+2] + "; got " + name);
+        }
+
+        // Make sure that we don't display the DST name by constructing a fake
+        // PST zone that has DST all year long.
+        // dlf - this test is no longer relevant, we display generic time now
+        //    so the behavior of the timezone doesn't matter
+        SimpleTimeZone zone2 = new SimpleTimeZone(0, "PST");
+        zone2.setStartRule(Calendar.JANUARY, 1, 0);
+        zone2.setEndRule(Calendar.DECEMBER, 31, 0);
+        logln("Modified PST inDaylightTime->" + zone2.inDaylightTime(new Date()));
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("Modified PST->" + name);
+        if (!name.equals("Pacific Time"))
+            errln("Fail: Expected \"Pacific Time\"");
+
+        // Make sure we get the default display format for Locales
+        // with no display name data.
+        Locale mt_MT = new Locale("mt", "MT");
+        name = zone.getDisplayName(mt_MT);
+        //*****************************************************************
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+        logln("PST(mt_MT)->" + name);
+
+        // Now be smart -- check to see if zh resource is even present.
+        // If not, we expect the en fallback behavior.
+
+        // in icu4j 2.1 we know we have the zh_CN locale data, though it's incomplete
+//    /"DateFormatZoneData", 
+        UResourceBundle enRB = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,Locale.ENGLISH);
+        UResourceBundle mtRB = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, mt_MT);
+        boolean noZH = enRB == mtRB;
+
+        if (noZH) {
+            logln("Warning: Not testing the mt_MT behavior because resource is absent");
+            if (!name.equals("Pacific Standard Time"))
+                errln("Fail: Expected Pacific Standard Time for PST in mt_MT but got ");
+        }
+        // dlf - we will use generic time, or if unavailable, GMT for standard time in the zone 
+        //     - we now (3.4.1) have localizations for this zone, so change test string
+        else if(!name.equals("Stati Uniti (Los Angeles)") &&
+            !name.equals("GMT-08:00") &&
+            !name.equals("GMT-8:00") &&
+            !name.equals("GMT-0800") &&
+            !name.equals("GMT-800")) {
+
+            errln("Fail: got '" + name + "', expected GMT-08:00 or something similar\n" +
+                  "************************************************************\n" +
+                  "THE ABOVE FAILURE MAY JUST MEAN THE LOCALE DATA HAS CHANGED\n" +
+                  "************************************************************");
+        }
+        
+        // Now try a non-existent zone
+        zone2 = new SimpleTimeZone(90*60*1000, "xyzzy");
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("GMT+90min->" + name);
+        if (!name.equals("GMT+01:30") &&
+            !name.equals("GMT+1:30") &&
+            !name.equals("GMT+0130") &&
+            !name.equals("GMT+130"))
+            errln("Fail: Expected GMT+01:30 or something similar");
+        
+        // cover getDisplayName() - null arg
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+        name = zone2.getDisplayName();
+        logln("GMT+90min->" + name + "for default display locale");
+        if (!name.equals("GMT+01:30") &&
+            !name.equals("GMT+1:30") &&
+            !name.equals("GMT+0130") &&
+            !name.equals("GMT+130"))
+            errln("Fail: Expected GMT+01:30 or something similar");        
+        ULocale.setDefault(save);
+    }
+
+
+    public void TestDisplayName2() {
+        Date now = new Date();
+
+        String[] timezones = {"America/Chicago", "Europe/Moscow", "Europe/Rome", "Asia/Shanghai", "WET" };
+        String[] locales = {"en", "fr", "de", "ja", "zh_TW", "zh_Hans" };
+        for (int j = 0; j < locales.length; ++j) {
+            ULocale locale = new ULocale(locales[j]);
+            for (int i = 0; i < timezones.length; ++i) {
+                TimeZone tz = TimeZone.getTimeZone(timezones[i]);
+                String displayName0 = tz.getDisplayName(locale); // doesn't work???
+                SimpleDateFormat dt = new SimpleDateFormat("vvvv", locale);
+                dt.setTimeZone(tz);
+                String displayName1 = dt.format(now);  // date value _does_ matter if we fallback to GMT
+                logln(locale.getDisplayName() + ", " + tz.getID() + ": " + displayName0);
+                if (!displayName1.equals(displayName0)) {
+                    errln(locale.getDisplayName() + ", " + tz.getID() + 
+                          ": expected " + displayName1 + " but got: " + displayName0);
+                }
+            }
+        }
+    }
+
+    public void TestGenericAPI() {
+        String id = "NewGMT";
+        int offset = 12345;
+
+        SimpleTimeZone zone = new SimpleTimeZone(offset, id);
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        TimeZone zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setID("abc");
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+        // delete zoneclone;
+
+        zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setRawOffset(45678);
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+
+        // C++ only
+        /*
+          SimpleTimeZone copy(*zone);
+          if (!(copy == *zone)) errln("FAIL: copy constructor or operator== failed");
+          copy = *(SimpleTimeZone*)zoneclone;
+          if (!(copy == *zoneclone)) errln("FAIL: assignment operator or operator== failed");
+          */
+
+        TimeZone saveDefault = TimeZone.getDefault();
+        TimeZone.setDefault(zone);
+        TimeZone defaultzone = TimeZone.getDefault();
+        if (defaultzone == zone) errln("FAIL: Default object is identical, not clone");
+        if (!defaultzone.equals(zone)) errln("FAIL: Default object is not equal");
+        TimeZone.setDefault(saveDefault);
+        // delete defaultzone;
+        // delete zoneclone;
+
+//      // ICU 2.6 Coverage
+//      logln(zone.toString());
+//      logln(zone.getDisplayName());
+//      SimpleTimeZoneAdapter stza = new SimpleTimeZoneAdapter((SimpleTimeZone) TimeZone.getTimeZone("GMT"));
+//      stza.setID("Foo");
+//      if (stza.hasSameRules(java.util.TimeZone.getTimeZone("GMT"))) {
+//          errln("FAIL: SimpleTimeZoneAdapter.hasSameRules");
+//      }
+//      stza.setRawOffset(3000);
+//      offset = stza.getOffset(GregorianCalendar.BC, 2001, Calendar.DECEMBER,
+//                              25, Calendar.TUESDAY, 12*60*60*1000);
+//      if (offset != 3000) {
+//          errln("FAIL: SimpleTimeZoneAdapter.getOffset");
+//      }
+//      SimpleTimeZoneAdapter dup = (SimpleTimeZoneAdapter) stza.clone();
+//      if (stza.hashCode() != dup.hashCode()) {
+//          errln("FAIL: SimpleTimeZoneAdapter.hashCode");
+//      }
+//      if (!stza.equals(dup)) {
+//          errln("FAIL: SimpleTimeZoneAdapter.equals");
+//      }
+//      logln(stza.toString());
+
+        String tzver = TimeZone.getTZDataVersion();
+        if (tzver.length() != 5 /* 4 digits + 1 letter */) {
+            errln("FAIL: getTZDataVersion returned " + tzver);
+        } else {
+            logln("PASS: tzdata version: " + tzver);
+        }
+    }
+
+    public void TestRuleAPI()
+    {
+        // ErrorCode status = ZERO_ERROR;
+
+        int offset = (int)(60*60*1000*1.75); // Pick a weird offset
+        SimpleTimeZone zone = new SimpleTimeZone(offset, "TestZone");
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        // Establish our expected transition times.  Do this with a non-DST
+        // calendar with the (above) declared local offset.
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        gc.clear();
+        gc.set(1990, Calendar.MARCH, 1);
+        long marchOneStd = gc.getTime().getTime(); // Local Std time midnight
+        gc.clear();
+        gc.set(1990, Calendar.JULY, 1);
+        long julyOneStd = gc.getTime().getTime(); // Local Std time midnight
+
+        // Starting and ending hours, WALL TIME
+        int startHour = (int)(2.25 * 3600000);
+        int endHour   = (int)(3.5  * 3600000);
+
+        zone.setStartRule(Calendar.MARCH, 1, 0, startHour);
+        zone.setEndRule  (Calendar.JULY,  1, 0, endHour);
+
+        gc = new GregorianCalendar(zone);
+        // if (failure(status, "new GregorianCalendar")) return;
+
+        long marchOne = marchOneStd + startHour;
+        long julyOne = julyOneStd + endHour - 3600000; // Adjust from wall to Std time
+
+        long expMarchOne = 636251400000L;
+        if (marchOne != expMarchOne)
+        {
+            errln("FAIL: Expected start computed as " + marchOne +
+                  " = " + new Date(marchOne));
+            logln("      Should be                  " + expMarchOne +
+                  " = " + new Date(expMarchOne));
+        }
+
+        long expJulyOne = 646793100000L;
+        if (julyOne != expJulyOne)
+        {
+            errln("FAIL: Expected start computed as " + julyOne +
+                  " = " + new Date(julyOne));
+            logln("      Should be                  " + expJulyOne +
+                  " = " + new Date(expJulyOne));
+        }
+
+        Calendar cal1 = Calendar.getInstance();
+        cal1.set(1990, Calendar.JANUARY, 1);
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(1990, Calendar.JUNE, 1);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), marchOne);
+        cal1.set(1990, Calendar.JUNE, 1);
+        cal2.set(1990, Calendar.DECEMBER, 31);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), julyOne);
+
+        if (zone.inDaylightTime(new Date(marchOne - 1000)) ||
+            !zone.inDaylightTime(new Date(marchOne)))
+            errln("FAIL: Start rule broken");
+        if (!zone.inDaylightTime(new Date(julyOne - 1000)) ||
+            zone.inDaylightTime(new Date(julyOne)))
+            errln("FAIL: End rule broken");
+
+        zone.setStartYear(1991);
+        if (zone.inDaylightTime(new Date(marchOne)) ||
+            zone.inDaylightTime(new Date(julyOne - 1000)))
+            errln("FAIL: Start year broken");
+
+        // failure(status, "TestRuleAPI");
+        // delete gc;
+        // delete zone;
+    }
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, long min, long max, long expectedBoundary)
+    {
+        // ErrorCode status = ZERO_ERROR;
+        boolean startsInDST = tz.inDaylightTime(new Date(min));
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        if (tz.inDaylightTime(new Date(max)) == startsInDST) {
+            logln("Error: inDaylightTime(" + new Date(max) + ") != " + (!startsInDST));
+            return;
+        }
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        while ((max - min) > INTERVAL) {
+            long mid = (min + max) / 2;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST) {
+                min = mid;
+            }
+            else {
+                max = mid;
+            }
+            // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        }
+        logln("Binary Search Before: " + min + " = " + new Date(min));
+        logln("Binary Search After:  " + max + " = " + new Date(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 &&
+            mindelta <= INTERVAL &&
+            mindelta >= 0 &&
+            mindelta <= INTERVAL)
+            logln("PASS: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+        else
+            errln("FAIL: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+    }
+
+    static final int INTERVAL = 100;
+
+    // Bug 006; verify the offset for a specific zone.
+    public void TestPRTOffset()
+    {
+        TimeZone tz = TimeZone.getTimeZone( "PRT" );
+        if( tz == null ) {
+            errln( "FAIL: TimeZone(PRT) is null" );
+        }
+        else{
+            if (tz.getRawOffset() != (-4*millisPerHour))
+                warnln("FAIL: Offset for PRT should be -4, got " +
+                      tz.getRawOffset() / (double)millisPerHour);
+        }
+
+    }
+
+    // Test various calls
+    public void TestVariousAPI518()
+    {
+        TimeZone time_zone = TimeZone.getTimeZone("PST");
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, Calendar.APRIL, 30);
+        Date d = cal.getTime();
+
+        logln("The timezone is " + time_zone.getID());
+
+        if (time_zone.inDaylightTime(d) != true)
+            errln("FAIL: inDaylightTime returned false");
+
+        if (time_zone.useDaylightTime() != true)
+            errln("FAIL: useDaylightTime returned false");
+
+        if (time_zone.getRawOffset() != -8*millisPerHour)
+            errln( "FAIL: getRawOffset returned wrong value");
+
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setTime(d);
+        if (time_zone.getOffset(GregorianCalendar.AD, gc.get(GregorianCalendar.YEAR), gc.get(GregorianCalendar.MONTH),
+                                gc.get(GregorianCalendar.DAY_OF_MONTH),
+                                gc.get(GregorianCalendar.DAY_OF_WEEK), 0)
+            != -7*millisPerHour)
+            errln("FAIL: getOffset returned wrong value");
+    }
+
+    // Test getAvailableID API
+    public void TestGetAvailableIDs913()
+    {
+        StringBuffer buf = new StringBuffer("TimeZone.getAvailableIDs() = { ");
+        String[] s = TimeZone.getAvailableIDs();
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        buf.setLength(0);
+        buf.append("TimeZone.getAvailableIDs(GMT+02:00) = { ");
+        s = TimeZone.getAvailableIDs(+2 * 60 * 60 * 1000);
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        if (tz != null)
+            logln("getTimeZone(PST) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        tz = TimeZone.getTimeZone("America/Los_Angeles");
+        if (tz != null)
+            logln("getTimeZone(America/Los_Angeles) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        // Bug 4096694
+        tz = TimeZone.getTimeZone("NON_EXISTENT");
+        if (tz == null)
+            errln("FAIL: getTimeZone(NON_EXISTENT) = null");
+        else if (!tz.getID().equals("GMT"))
+            errln("FAIL: getTimeZone(NON_EXISTENT) = " + tz.getID());
+    }
+
+    /**
+     * Bug 4107276
+     */
+    public void TestDSTSavings() {
+        // It might be better to find a way to integrate this test into the main TimeZone
+        // tests above, but I don't have time to figure out how to do this (or if it's
+        // even really a good idea).  Let's consider that a future.  --rtg 1/27/98
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "dstSavingsTest",
+                                               Calendar.MARCH, 1, 0, 0, Calendar.SEPTEMBER, 1, 0, 0,
+                                               (int)(0.5 * millisPerHour));
+
+        if (tz.getRawOffset() != -5 * millisPerHour)
+            errln("Got back a raw offset of " + (tz.getRawOffset() / millisPerHour) +
+                  " hours instead of -5 hours.");
+        if (!tz.useDaylightTime())
+            errln("Test time zone should use DST but claims it doesn't.");
+        if (tz.getDSTSavings() != 0.5 * millisPerHour)
+            errln("Set DST offset to 0.5 hour, but got back " + (tz.getDSTSavings() /
+                                                                 millisPerHour) + " hours instead.");
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4.5 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 should have been -4.5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        tz.setDSTSavings(millisPerHour);
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 (with a 1-hour DST offset) should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    /**
+     * Bug 4107570
+     */
+    public void TestAlternateRules() {
+        // Like TestDSTSavings, this test should probably be integrated somehow with the main
+        // test at the top of this class, but I didn't have time to figure out how to do that.
+        //                      --rtg 1/28/98
+
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "alternateRuleTest");
+
+        // test the day-of-month API
+        tz.setStartRule(Calendar.MARCH, 10, 12 * millisPerHour);
+        tz.setEndRule(Calendar.OCTOBER, 20, 12 * millisPerHour);
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 5,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/5/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 15,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 25,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/25/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        // test the day-of-week-after-day-in-month API
+        tz.setStartRule(Calendar.MARCH, 10, Calendar.FRIDAY, 12 * millisPerHour, true);
+        tz.setEndRule(Calendar.OCTOBER, 20, Calendar.FRIDAY, 12 * millisPerHour, false);
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 11,
+                              Calendar.WEDNESDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/11/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 14,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/14/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 17,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/17/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    public void TestEquivalencyGroups() {
+        String id = "America/Los_Angeles";
+        int n = TimeZone.countEquivalentIDs(id);
+        if (n < 2) {
+            errln("FAIL: countEquivalentIDs(" + id + ") returned " + n +
+                  ", expected >= 2");
+        }
+        for (int i=0; i<n; ++i) {
+            String s = TimeZone.getEquivalentID(id, i);
+            if (s.length() == 0) {
+                errln("FAIL: getEquivalentID(" + id + ", " + i +
+                      ") returned \"" + s + "\", expected valid ID");
+            } else {
+                logln("" + i + ":" + s);
+            }
+        }
+
+        // JB#5480 - equivalent IDs should not be empty within range
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < ids.length; i++) {
+            int nEquiv = TimeZone.countEquivalentIDs(ids[i]);
+            // Each equivalent ID must not be empty
+            for (int j = 0; j < nEquiv; j++) {
+                String equivID = TimeZone.getEquivalentID(ids[i], j);
+                if (equivID.length() == 0) {
+                    errln("FAIL: getEquivalentID(" + ids[i] + ", " + i +
+                            ") returned \"" + equivID + "\", expected valid ID");
+                }
+            }
+            // equivalent ID out of range must be empty
+            String outOfRangeID = TimeZone.getEquivalentID(ids[i], nEquiv);
+            if (outOfRangeID.length() != 0) {
+                errln("FAIL: getEquivalentID(" + ids[i] + ", " + i +
+                        ") returned \"" + outOfRangeID + "\", expected empty string");
+            }
+        }
+    }
+
+    public void TestCountries() {
+        // Make sure America/Los_Angeles is in the "US" group, and
+        // Asia/Tokyo isn't.  Vice versa for the "JP" group.
+
+        String[] s = TimeZone.getAvailableIDs("US");
+        boolean la = false, tokyo = false;
+        String laZone = "America/Los_Angeles", tokyoZone = "Asia/Tokyo";
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (!la ) {
+            errln("FAIL: " + laZone + " in US = " + la);
+        }
+        if (tokyo) {
+            errln("FAIL: " + tokyoZone + " in US = " + tokyo);
+        }
+        s = TimeZone.getAvailableIDs("JP");
+        la = false; tokyo = false;
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (la) {
+            errln("FAIL: " + laZone + " in JP = " + la);
+        }
+        if (!tokyo) {
+            errln("FAIL: " + tokyoZone + " in JP = " + tokyo);
+        }
+    }
+
+    public void TestFractionalDST() {
+        String tzName = "Australia/Lord_Howe"; // 30 min offset
+        java.util.TimeZone tz_java = java.util.TimeZone.getTimeZone(tzName);
+        int dst_java = 0;
+        try {
+            // hack so test compiles and runs in both JDK 1.3 and JDK 1.4
+            final Object[] args = new Object[0];
+            final Class[] argtypes = new Class[0];
+            java.lang.reflect.Method m = tz_java.getClass().getMethod("getDSTSavings", argtypes); 
+            dst_java = ((Integer) m.invoke(tz_java, args)).intValue();
+            if (dst_java <= 0 || dst_java >= 3600000) { // didn't get the fractional time zone we wanted
+            errln("didn't get fractional time zone!");
+            }
+        } catch (NoSuchMethodException e) {
+            // see JDKTimeZone for the reason for this code
+            dst_java = 3600000;
+        } catch (IllegalAccessException e) {
+            // see JDKTimeZone for the reason for this code
+            errln(e.getMessage());
+            dst_java = 3600000;
+        } catch (InvocationTargetException e) {
+            // see JDKTimeZone for the reason for this code
+            errln(e.getMessage());
+            dst_java = 3600000;
+        } catch (SecurityException e) {
+            warnln(e.getMessage());
+            return;
+        }
+        
+        com.ibm.icu.util.TimeZone tz_icu = com.ibm.icu.util.TimeZone.getTimeZone(tzName);
+        int dst_icu = tz_icu.getDSTSavings();
+
+        if (dst_java != dst_icu) {
+            warnln("java reports dst savings of " + dst_java +
+              " but icu reports " + dst_icu + 
+              " for tz " + tz_icu.getID());
+        } else {
+            logln("both java and icu report dst savings of " + dst_java + " for tz " + tz_icu.getID());
+        }
+    }
+
+    public void TestGetOffsetDate() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, Calendar.JANUARY, 30);
+        long date = cal.getTimeInMillis();
+
+    TimeZone tz_icu = TimeZone.getTimeZone("America/Los_Angeles");
+    int offset = tz_icu.getOffset(date);
+    if (offset != -28800000) {
+        errln("expected offset -28800000, got: " + offset);
+    }
+
+    cal.set(1997, Calendar.JULY, 30);
+    date = cal.getTimeInMillis();
+    offset = tz_icu.getOffset(date);
+    if (offset != -25200000) {
+        errln("expected offset -25200000, got: " + offset);
+    }
+    }
+
+    // jb4484
+    public void TestSimpleTimeZoneSerialization() 
+    {
+        SimpleTimeZone stz0 = new SimpleTimeZone(32400000, "MyTimeZone");
+        SimpleTimeZone stz1 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        SimpleTimeZone stz2 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz2.setRawOffset(0);
+        SimpleTimeZone stz3 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz3.setStartYear(100);
+        SimpleTimeZone stz4 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz4.setStartYear(1000);
+        stz4.setDSTSavings(1800000);
+        stz4.setStartRule(3, 4, 180000);
+        stz4.setEndRule(6, 3, 4, 360000);
+        SimpleTimeZone stz5 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz5.setStartRule(2, 3, 4, 360000);
+        stz5.setEndRule(6, 3, 4, 360000);
+        
+        SimpleTimeZone[] stzs = { stz0, stz1, stz2, stz3, stz4, stz5, };
+
+        for (int i = 0; i < stzs.length; ++i) {
+            SimpleTimeZone stz = stzs[i];
+            try {
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(stz);
+                oos.close();
+                byte[] bytes = baos.toByteArray();
+                logln("id: " + stz.getID() + " length: " + bytes.length);
+
+                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+                ObjectInputStream ois = new ObjectInputStream(bais);
+
+                SimpleTimeZone stzDeserialized = (SimpleTimeZone)ois.readObject();
+                ois.close();
+
+                assertEquals("time zones", stz, stzDeserialized);
+            }
+            catch (ClassCastException cce) {
+                cce.printStackTrace();
+                errln("could not deserialize SimpleTimeZone");
+            }
+            catch (IOException ioe) {
+                errln(ioe.getMessage());
+            }
+            catch (ClassNotFoundException cnfe) {
+                errln(cnfe.getMessage());
+            }
+        }
+    }
+
+    // jb4175
+    /* Generated by org.unicode.cldr.tool.CountItems */
+    private static final String[] timeZoneTestNames = {
+        "America/Argentina/Buenos_Aires", "America/Buenos_Aires",
+        "America/Argentina/Catamarca", "America/Catamarca",
+        "America/Argentina/Cordoba", "America/Cordoba",
+        "America/Argentina/Jujuy", "America/Jujuy",
+        "America/Argentina/Mendoza", "America/Mendoza",
+        "America/Atka", "America/Adak",
+        "America/Ensenada", "America/Tijuana",
+        "America/Fort_Wayne", "America/Indianapolis",
+        "America/Indiana/Indianapolis", "America/Indianapolis",
+        "America/Kentucky/Louisville", "America/Louisville",
+        "America/Knox_IN", "America/Indiana/Knox",
+        "America/Porto_Acre", "America/Rio_Branco",
+        "America/Rosario", "America/Cordoba",
+        "America/Virgin", "America/St_Thomas",
+        "Asia/Ashkhabad", "Asia/Ashgabat",
+        "Asia/Chungking", "Asia/Chongqing",
+        "Asia/Dacca", "Asia/Dhaka",
+        "Asia/Istanbul", "Europe/Istanbul",
+        "Asia/Macao", "Asia/Macau",
+        "Asia/Tel_Aviv", "Asia/Jerusalem",
+        "Asia/Thimbu", "Asia/Thimphu",
+        "Asia/Ujung_Pandang", "Asia/Makassar",
+        "Asia/Ulan_Bator", "Asia/Ulaanbaatar",
+        "Australia/ACT", "Australia/Sydney",
+        "Australia/Canberra", "Australia/Sydney",
+        "Australia/LHI", "Australia/Lord_Howe",
+        "Australia/NSW", "Australia/Sydney",
+        "Australia/North", "Australia/Darwin",
+        "Australia/Queensland", "Australia/Brisbane",
+        "Australia/South", "Australia/Adelaide",
+        "Australia/Tasmania", "Australia/Hobart",
+        "Australia/Victoria", "Australia/Melbourne",
+        "Australia/West", "Australia/Perth",
+        "Australia/Yancowinna", "Australia/Broken_Hill",
+        "Brazil/Acre", "America/Rio_Branco",
+        "Brazil/DeNoronha", "America/Noronha",
+        "Brazil/East", "America/Sao_Paulo",
+        "Brazil/West", "America/Manaus",
+        "CST6CDT", "America/Chicago",
+        "Canada/Atlantic", "America/Halifax",
+        "Canada/Central", "America/Winnipeg",
+        "Canada/East-Saskatchewan", "America/Regina",
+        "Canada/Eastern", "America/Toronto",
+        "Canada/Mountain", "America/Edmonton",
+        "Canada/Newfoundland", "America/St_Johns",
+        "Canada/Pacific", "America/Vancouver",
+        "Canada/Saskatchewan", "America/Regina",
+        "Canada/Yukon", "America/Whitehorse",
+        "Chile/Continental", "America/Santiago",
+        "Chile/EasterIsland", "Pacific/Easter",
+        "Cuba", "America/Havana",
+        "EST", "America/Indianapolis",
+        "EST5EDT", "America/New_York",
+        "Egypt", "Africa/Cairo",
+        "Eire", "Europe/Dublin",
+        "Etc/GMT+0", "Etc/GMT",
+        "Etc/GMT-0", "Etc/GMT",
+        "Etc/GMT0", "Etc/GMT",
+        "Etc/Greenwich", "Etc/GMT",
+        "Etc/UCT", "Etc/GMT",
+        "Etc/UTC", "Etc/GMT",
+        "Etc/Universal", "Etc/GMT",
+        "Etc/Zulu", "Etc/GMT",
+        "Europe/Nicosia", "Asia/Nicosia",
+        "Europe/Tiraspol", "Europe/Chisinau",
+        "GB", "Europe/London",
+        "GB-Eire", "Europe/London",
+        "GMT", "Etc/GMT",
+        "GMT+0", "Etc/GMT",
+        "GMT-0", "Etc/GMT",
+        "GMT0", "Etc/GMT",
+        "Greenwich", "Etc/GMT",
+        "HST", "Pacific/Honolulu",
+        "Hongkong", "Asia/Hong_Kong",
+        "Iceland", "Atlantic/Reykjavik",
+        "Iran", "Asia/Tehran",
+        "Israel", "Asia/Jerusalem",
+        "Jamaica", "America/Jamaica",
+        "Japan", "Asia/Tokyo",
+        "Kwajalein", "Pacific/Kwajalein",
+        "Libya", "Africa/Tripoli",
+        "MST", "America/Phoenix",
+        "MST7MDT", "America/Denver",
+        "Mexico/BajaNorte", "America/Tijuana",
+        "Mexico/BajaSur", "America/Mazatlan",
+        "Mexico/General", "America/Mexico_City",
+        "NZ", "Pacific/Auckland",
+        "NZ-CHAT", "Pacific/Chatham",
+        "Navajo", "America/Shiprock", /* fixed from Mark's original */
+        "PRC", "Asia/Shanghai",
+        "PST8PDT", "America/Los_Angeles",
+        "Pacific/Samoa", "Pacific/Pago_Pago",
+        "Poland", "Europe/Warsaw",
+        "Portugal", "Europe/Lisbon",
+        "ROC", "Asia/Taipei",
+        "ROK", "Asia/Seoul",
+        "Singapore", "Asia/Singapore",
+        "SystemV/AST4", "America/Puerto_Rico",
+        "SystemV/AST4ADT", "America/Halifax",
+        "SystemV/CST6", "America/Regina",
+        "SystemV/CST6CDT", "America/Chicago",
+        "SystemV/EST5", "America/Indianapolis",
+        "SystemV/EST5EDT", "America/New_York",
+        "SystemV/HST10", "Pacific/Honolulu",
+        "SystemV/MST7", "America/Phoenix",
+        "SystemV/MST7MDT", "America/Denver",
+        "SystemV/PST8", "Pacific/Pitcairn",
+        "SystemV/PST8PDT", "America/Los_Angeles",
+        "SystemV/YST9", "Pacific/Gambier",
+        "SystemV/YST9YDT", "America/Anchorage",
+        "Turkey", "Europe/Istanbul",
+        "UCT", "Etc/GMT",
+        "US/Alaska", "America/Anchorage",
+        "US/Aleutian", "America/Adak",
+        "US/Arizona", "America/Phoenix",
+        "US/Central", "America/Chicago",
+        "US/East-Indiana", "America/Indianapolis",
+        "US/Eastern", "America/New_York",
+        "US/Hawaii", "Pacific/Honolulu",
+        "US/Indiana-Starke", "America/Indiana/Knox",
+        "US/Michigan", "America/Detroit",
+        "US/Mountain", "America/Denver",
+        "US/Pacific", "America/Los_Angeles",
+        "US/Pacific-New", "America/Los_Angeles",
+        "US/Samoa", "Pacific/Pago_Pago",
+        "UTC", "Etc/GMT",
+        "Universal", "Etc/GMT",
+        "W-SU", "Europe/Moscow",
+        "Zulu", "Etc/GMT",
+    };
+
+    public void TestOddTimeZoneNames() {
+        for (int i = 0; i < timeZoneTestNames.length; i += 2) {
+            String funkyName = timeZoneTestNames[i];
+            String correctName = timeZoneTestNames[i+1];
+
+            TimeZone ftz = TimeZone.getTimeZone(funkyName);
+            TimeZone ctz = TimeZone.getTimeZone(correctName);
+
+            String fdn = ftz.getDisplayName();
+            long fro = ftz.getRawOffset();
+            long fds = ftz.getDSTSavings();
+            boolean fdy = ftz.useDaylightTime();
+
+            String cdn = ctz.getDisplayName();
+            long cro = ctz.getRawOffset();
+            long cds = ctz.getDSTSavings();
+            boolean cdy = ctz.useDaylightTime();
+
+            if (!fdn.equals(cdn)) {
+                logln("display name (" + funkyName + ", " + correctName + ") expected: " + cdn + " but got: " + fdn);
+            } else if (fro != cro) {
+                logln("offset (" + funkyName + ", " + correctName + ") expected: " + cro + " but got: " + fro);
+            } else if (fds != cds) {
+                logln("daylight (" + funkyName + ", " + correctName + ") expected: " + cds + " but got: " + fds);
+            } else if (fdy != cdy) {
+                logln("uses daylight (" + funkyName + ", " + correctName + ") expected: " + cdy + " but got: " + fdy);
+            } else {
+                // no error, assume we're referencing the same internal java object
+            }
+        }
+    }
+    
+    public void TestCoverage(){
+        class StubTimeZone extends TimeZone{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 8658654217433379343L;
+            public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {return 0;}
+            public void setRawOffset(int offsetMillis) {}
+            public int getRawOffset() {return 0;}
+            public boolean useDaylightTime() {return false;}
+            public boolean inDaylightTime(Date date) {return false;}
+        } 
+        StubTimeZone stub = new StubTimeZone();
+        StubTimeZone stub2 = (StubTimeZone) stub.clone();
+        if (stub.getDSTSavings() != 0){
+            errln("TimeZone.getDSTSavings() should return 0");
+        }
+        if (!stub.hasSameRules(stub2)){
+            errln("TimeZone.clone() object should hasSameRules");
+     
+        }
+    }
+    public void TestMark(){
+        String tzid = "America/Argentina/ComodRivadavia";
+        TimeZone tz = TimeZone.getTimeZone(tzid);
+        int offset = tz.getOffset(new Date().getTime());
+        logln(tzid + ":\t" + offset);
+        List list = Arrays.asList(TimeZone.getAvailableIDs());
+        if(!list.contains(tzid)){
+            errln("Could create the time zone but it is not in getAvailableIDs");
+        }
+    }
+    public void TestZoneMeta() {
+        java.util.TimeZone save = java.util.TimeZone.getDefault();
+        java.util.TimeZone newZone = java.util.TimeZone.getTimeZone("GMT-08:00");
+        com.ibm.icu.util.TimeZone.setDefault(null);
+        java.util.TimeZone.setDefault(newZone);
+        SimpleTimeZone zone = new SimpleTimeZone(0, "GMT");
+        com.ibm.icu.util.TimeZone defaultZone = com.ibm.icu.util.TimeZone.getDefault();
+        if(defaultZone==null){
+            errln("TimeZone.getDefault() failed for GMT-08:00");
+        }
+        if(zone==null){
+            errln("SimpleTimeZone(0, GMT-08:00) failed for GMT-08:00");
+        }
+        //reset
+        java.util.TimeZone.setDefault(save);
+    }
+
+    // Copied from the protected constant in TimeZone.
+    private static final int MILLIS_PER_HOUR = 60*60*1000;
+
+    //  Test that a transition at the end of February is handled correctly.
+    public void TestFebruary() {
+        // Time zone with daylight savings time from the first Sunday in November
+        // to the last Sunday in February.
+        // Similar to the new rule for Brazil (Sao Paulo) in tzdata2006n.
+        //
+        // Note: In tzdata2007h, the rule had changed, so no actual zones uses
+        // lastSun in Feb anymore.
+        SimpleTimeZone tz1 = new SimpleTimeZone(
+                           -3 * MILLIS_PER_HOUR,                    // raw offset: 3h before (west of) GMT
+                           "nov-feb",
+                           Calendar.NOVEMBER, 1, Calendar.SUNDAY,   // start: November, first, Sunday
+                           0,                                       //        midnight wall time
+                           Calendar.FEBRUARY, -1, Calendar.SUNDAY,  // end:   February, last, Sunday
+                           0);                                      //        midnight wall time
+
+        // Now hardcode the same rules as for Brazil in tzdata 2006n, so that
+        // we cover the intended code even when in the future zoneinfo hardcodes
+        // these transition dates.
+        SimpleTimeZone tz2= new SimpleTimeZone(
+                           -3 * MILLIS_PER_HOUR,                    // raw offset: 3h before (west of) GMT
+                           "nov-feb2",
+                           Calendar.NOVEMBER, 1, -Calendar.SUNDAY,  // start: November, 1 or after, Sunday
+                           0,                                       //        midnight wall time
+                           Calendar.FEBRUARY, -29, -Calendar.SUNDAY,// end:   February, 29 or before, Sunday
+                           0);                                      //        midnight wall time
+
+        // Gregorian calendar with the UTC time zone for getting sample test date/times.
+        GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        // "Unable to create the UTC calendar: %s"
+
+        int[] data = {
+            // UTC time (6 fields) followed by
+            // expected time zone offset in hours after GMT (negative=before GMT).
+            // int year, month, day, hour, minute, second, offsetHours
+            2006, Calendar.NOVEMBER,  5, 02, 59, 59, -3,
+            2006, Calendar.NOVEMBER,  5, 03, 00, 00, -2,
+            2007, Calendar.FEBRUARY, 25, 01, 59, 59, -2,
+            2007, Calendar.FEBRUARY, 25, 02, 00, 00, -3,
+
+            2007, Calendar.NOVEMBER,  4, 02, 59, 59, -3,
+            2007, Calendar.NOVEMBER,  4, 03, 00, 00, -2,
+            2008, Calendar.FEBRUARY, 24, 01, 59, 59, -2,
+            2008, Calendar.FEBRUARY, 24, 02, 00, 00, -3,
+
+            2008, Calendar.NOVEMBER,  2, 02, 59, 59, -3,
+            2008, Calendar.NOVEMBER,  2, 03, 00, 00, -2,
+            2009, Calendar.FEBRUARY, 22, 01, 59, 59, -2,
+            2009, Calendar.FEBRUARY, 22, 02, 00, 00, -3,
+
+            2009, Calendar.NOVEMBER,  1, 02, 59, 59, -3,
+            2009, Calendar.NOVEMBER,  1, 03, 00, 00, -2,
+            2010, Calendar.FEBRUARY, 28, 01, 59, 59, -2,
+            2010, Calendar.FEBRUARY, 28, 02, 00, 00, -3
+        };
+
+        TimeZone timezones[] = { tz1, tz2 };
+
+        TimeZone tz;
+        Date dt;
+        int t, i, raw, dst;
+        int[] offsets = new int[2]; // raw = offsets[0], dst = offsets[1]
+        for (t = 0; t < timezones.length; ++t) {
+            tz = timezones[t];
+            for (i = 0; i < data.length; i+=7) {
+                gc.set(data[i], data[i+1], data[i+2],
+                       data[i+3], data[i+4], data[i+5]);
+                dt = gc.getTime();
+                tz.getOffset(dt.getTime(), false, offsets);
+                raw = offsets[0];
+                dst = offsets[1];
+                if ((raw + dst) != data[i+6] * MILLIS_PER_HOUR) {
+                    errln("test case " + t + "." + (i/7) + ": " +
+                          "tz.getOffset(" + data[i] + "-" + (data[i+1] + 1) + "-" + data[i+2] + " " +
+                          data[i+3] + ":" + data[i+4] + ":" + data[i+5] +
+                          ") returns " + raw + "+" + dst + " != " + data[i+6] * MILLIS_PER_HOUR);
+                }
+            }
+        }
+    }
+
+    public void TestCanonicalID() {
+        // Some canonical IDs in CLDR are defined as "Link"
+        // in Olson tzdata.
+        final String[][] excluded1 = {
+                {"America/Shiprock", "America/Denver"}, // America/Shiprock is defined as a Link to America/Denver in tzdata
+                {"America/Marigot", "America/Guadeloupe"},
+                {"America/St_Barthelemy", "America/Guadeloupe"},
+                {"Antarctica/South_Pole", "Antarctica/McMurdo"},
+                {"Atlantic/Jan_Mayen", "Europe/Oslo"},
+                {"Arctic/Longyearbyen", "Europe/Oslo"},
+                {"Europe/Guernsey", "Europe/London"},
+                {"Europe/Isle_of_Man", "Europe/London"},
+                {"Europe/Jersey", "Europe/London"},
+                {"Europe/Ljubljana", "Europe/Belgrade"},
+                {"Europe/Podgorica", "Europe/Belgrade"},
+                {"Europe/Sarajevo", "Europe/Belgrade"},
+                {"Europe/Skopje", "Europe/Belgrade"},
+                {"Europe/Zagreb", "Europe/Belgrade"},
+                {"Europe/Bratislava", "Europe/Prague"},
+                {"Europe/Mariehamn", "Europe/Helsinki"},
+                {"Europe/San_Marino", "Europe/Rome"},
+                {"Europe/Vatican", "Europe/Rome"},
+        };
+
+        // Following IDs are aliases of Etc/GMT in CLDR,
+        // but Olson tzdata has 3 independent definitions
+        // for Etc/GMT, Etc/UTC, Etc/UCT.
+        // Until we merge them into one equivalent group
+        // in zoneinfo.res, we exclude them in the test
+        // below.
+        final String[] excluded2 = {
+                "Etc/UCT", "UCT",
+                "Etc/UTC", "UTC",
+                "Etc/Universal", "Universal",
+                "Etc/Zulu", "Zulu",
+        };
+
+        // Walk through equivalency groups
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < ids.length; i++) {
+            int nEquiv = TimeZone.countEquivalentIDs(ids[i]);
+            if (nEquiv == 0) {
+                continue;
+            }
+            String canonicalID = null;
+            boolean bFoundCanonical = false;
+            // Make sure getCanonicalID returns the exact same result
+            // for all entries within a same equivalency group with some
+            // exceptions listed in exluded1.
+            // Also, one of them must be canonical id.
+            for (int j = 0; j < nEquiv; j++) {
+                String tmp = TimeZone.getEquivalentID(ids[i], j);
+                String tmpCanonical = TimeZone.getCanonicalID(tmp);
+                if (tmpCanonical == null) {
+                    errln("FAIL: getCanonicalID(\"" + tmp + "\") returned null");
+                    continue;
+                }
+                // Some exceptional cases
+                for (int k = 0; k < excluded1.length; k++) {
+                    if (tmpCanonical.equals(excluded1[k][0])) {
+                        tmpCanonical = excluded1[k][1];
+                    }
+                }
+
+                if (j == 0) {
+                    canonicalID = tmpCanonical;
+                } else if (!canonicalID.equals(tmpCanonical)) {
+                    errln("FAIL: getCanonicalID(\"" + tmp + "\") returned " + tmpCanonical + " expected:" + canonicalID);
+                }
+
+                if (canonicalID.equals(tmp)) {
+                    bFoundCanonical = true;
+                }
+            }
+            // At least one ID in an equvalency group must match the
+            // canonicalID
+            if (!bFoundCanonical) {
+                // test exclusion because of differences between Olson tzdata and CLDR
+                boolean isExcluded = false;
+                for (int k = 0; k < excluded1.length; k++) {
+                    if (ids[i].equals(excluded2[k])) {
+                        isExcluded = true;
+                        break;
+                    }
+                }
+                if (isExcluded) {
+                    continue;
+                }
+
+                errln("FAIL: No timezone ids match the canonical ID " + canonicalID);
+            }
+        }
+        // Testing some special cases
+        final String[][] data = {
+                {"GMT-03", "GMT-0300", null},
+                {"GMT+4", "GMT+0400", null},
+                {"GMT-055", "GMT-0055", null},
+                {"GMT+430", "GMT+0430", null},
+                {"GMT-12:15", "GMT-1215", null},
+                {"GMT-091015", "GMT-091015", null},
+                {"GMT+1:90", null, null},
+                {"America/Argentina/Buenos_Aires", "America/Buenos_Aires", "true"},
+                {"bogus", null, null},
+                {"", null, null},
+                {null, null, null},
+        };
+        boolean[] isSystemID = new boolean[1];
+        for (int i = 0; i < data.length; i++) {
+            String canonical = TimeZone.getCanonicalID(data[i][0], isSystemID);
+            if (canonical != null && !canonical.equals(data[i][1])
+                    || canonical == null && data[i][1] != null) {
+                errln("FAIL: getCanonicalID(\"" + data[i][0] + "\") returned " + canonical
+                        + " - expected: " + data[i][1]);
+            }
+            if ("true".equalsIgnoreCase(data[i][2]) != isSystemID[0]) {
+                errln("FAIL: getCanonicalID(\"" + data[i][0] + "\") set " + isSystemID[0]
+                        + " to isSystemID");
+            }
+        }
+    }
+
+    public void TestSetDefault() {
+        java.util.TimeZone save = java.util.TimeZone.getDefault();
+
+        /*
+         * America/Caracs (Venezuela) changed the base offset from -4:00 to
+         * -4:30 on Dec 9, 2007.
+         */
+
+        TimeZone icuCaracas = TimeZone.getTimeZone("America/Caracas", TimeZone.TIMEZONE_ICU);
+        java.util.TimeZone jdkCaracas = java.util.TimeZone.getTimeZone("America/Caracas");
+
+        // Set JDK America/Caracas as the default
+        java.util.TimeZone.setDefault(jdkCaracas);
+
+        java.util.Calendar jdkCal = java.util.Calendar.getInstance();
+        jdkCal.clear();
+        jdkCal.set(2007, java.util.Calendar.JANUARY, 1);
+
+        int rawOffset = jdkCal.get(java.util.Calendar.ZONE_OFFSET);
+        int dstSavings = jdkCal.get(java.util.Calendar.DST_OFFSET);
+
+        int[] offsets = new int[2];
+        icuCaracas.getOffset(jdkCal.getTime().getTime()/*jdkCal.getTimeInMillis()*/, false, offsets);
+
+        boolean isTimeZoneSynchronized = true;
+
+        if (rawOffset != offsets[0] || dstSavings != offsets[1]) {
+            // JDK time zone rule is out of sync...
+            logln("Rule for JDK America/Caracas is not same with ICU.  Skipping the rest.");
+            isTimeZoneSynchronized = false;
+        }
+
+        if (isTimeZoneSynchronized) {
+            // If JDK America/Caracas uses the same rule with ICU,
+            // the following code should work well.
+            TimeZone.setDefault(icuCaracas);
+
+            // Create a new JDK calendar instance again.
+            // This calendar should reflect the new default
+            // set by ICU TimeZone#setDefault.
+            jdkCal = java.util.Calendar.getInstance();
+            jdkCal.clear();
+            jdkCal.set(2007, java.util.Calendar.JANUARY, 1);
+
+            rawOffset = jdkCal.get(java.util.Calendar.ZONE_OFFSET);
+            dstSavings = jdkCal.get(java.util.Calendar.DST_OFFSET);
+
+            if (rawOffset != offsets[0] || dstSavings != offsets[1]) {
+                errln("ERROR: Got offset [raw:" + rawOffset + "/dst:" + dstSavings
+                          + "] Expected [raw:" + offsets[0] + "/dst:" + offsets[1] + "]");
+            }
+        }
+
+        // Restore the original JDK time zone
+        java.util.TimeZone.setDefault(save);
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
new file mode 100644
index 0000000..0336387
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
@@ -0,0 +1,271 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+
+
+
+/**
+ * @test
+ * @summary General test of CompoundTransliterator
+ */
+public class CompoundTransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CompoundTransliteratorTest().run(args);
+    }
+
+    public void TestConstruction(){
+        logln("Testing the construction of the compound Transliterator");
+        String names[]={"Greek-Latin", "Latin-Devanagari", "Devanagari-Latin", "Latin-Greek"};
+
+        try {
+            Transliterator.getInstance(names[0]);
+            Transliterator.getInstance(names[1]);
+            Transliterator.getInstance(names[2]);
+            Transliterator.getInstance(names[3]);
+        }catch(IllegalArgumentException ex) {
+            errln("FAIL: Transliterator construction failed" + ex.getMessage());
+            throw ex;
+        }
+  
+        final String IDs[]={
+            names[0], 
+            names[0]+";"+names[3], 
+            names[3]+";"+names[1]+";"+names[2], 
+            names[0]+";"+names[1]+";"+names[2]+";"+names[3] 
+        };
+
+   
+        for(int i=0; i<4; i++){
+            try{
+                Transliterator.getInstance(IDs[i]);
+            }catch(IllegalArgumentException ex1) {
+                errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + IDs[i]);
+                throw ex1;
+            }
+
+            try{
+                Transliterator.getInstance(IDs[i], Transliterator.FORWARD);
+            }catch(IllegalArgumentException ex2) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD) failed for " + IDs[i]);
+                throw ex2;
+            }
+
+            try{
+                Transliterator.getInstance(IDs[i], Transliterator.REVERSE);
+            }catch(IllegalArgumentException ex3) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=REVERSE) failed for " + IDs[i]);
+                throw ex3;
+            }
+
+//            try{
+//                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i], Transliterator.FORWARD, null);
+//                cpdtrans = null;
+//            }catch(IllegalArgumentException ex4) {
+//                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD," +
+//                        "UnicodeFilter adoptedFilter=0) failed for " + IDs[i]);
+//                throw ex4;
+//            }
+//  
+//       
+//            try{
+//                CompoundTransliterator cpdtrans2=new CompoundTransliterator(transarray[i], null);
+//                cpdtrans2 = null;
+//            }catch(IllegalArgumentException ex5) {
+//                errln("FAIL: Construction using CompoundTransliterator(Transliterator transliterators[]," +
+//                       "UnicodeFilter adoptedFilter = 0)  failed");
+//                throw ex5;
+//            }
+
+            
+        }
+   
+    }
+ 
+    public void TestGetTransliterator(){
+        logln("Testing the getTransliterator() API of CompoundTransliterator");
+        String ID="Latin-Greek;Greek-Latin;Latin-Devanagari;Devanagari-Latin;Latin-Cyrillic;Cyrillic-Latin;Any-Hex;Hex-Any";
+        Transliterator ct1=null;
+        try{
+            //ct1=new CompoundTransliterator(ID);
+            ct1 = Transliterator.getInstance(ID);
+        }catch(IllegalArgumentException iae) {
+            errln("CompoundTransliterator construction failed for ID=" + ID);
+            throw iae;
+        }
+        //int count=ct1.getCount();
+        Transliterator elems[] = ct1.getElements();
+        int count = elems.length;
+        String array[]=split(ID, ';');
+        if (count != array.length) {
+            errln("Error: getCount() failed. Expected:" + array.length + " got:" + count);
+        }
+        for(int i=0; i < count; i++){
+            //String child= ct1.getTransliterator(i).getID();
+            String child = elems[i].getID();
+            if(!child.equals(array[i])){
+                errln("Error getTransliterator() failed: Expected->" + array[i] + " Got->" + child);
+            }else {
+                logln("OK: getTransliterator() passed: Expected->" + array[i] + " Got->" + child);
+            }
+        }
+
+        
+    }
+ 
+       
+    public void TestTransliterate(){
+        logln("Testing the handleTransliterate() API of CompoundTransliterator");
+        Transliterator ct1=null;
+        try{
+            ct1=Transliterator.getInstance("Any-Hex;Hex-Any");
+        }catch(IllegalArgumentException iae){
+            errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + "Any-Hex;Hex-Any");
+            throw iae;
+        }
+    
+        String s="abcabc";
+        expect(ct1, s, s);
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString rsource2=new ReplaceableString(s);
+        String expectedResult=s;
+        ct1.transliterate(rsource2, index);
+        ct1.finishTransliteration(rsource2, index);
+        String result=rsource2.toString();
+        expectAux(ct1.getID() + ":ReplaceableString, index(0,0,0,0)", s + "->" + rsource2, result.equals(expectedResult), expectedResult);
+     
+        Transliterator.Position index2 = new Transliterator.Position(1,3,2,3);
+        ReplaceableString rsource3=new ReplaceableString(s);
+        ct1.transliterate(rsource3, index2); 
+        ct1.finishTransliteration(rsource3, index2);
+        result=rsource3.toString();
+        expectAux(ct1.getID() + ":String, index2(1,2,2,3)", s + "->" + rsource3, result.equals(expectedResult), expectedResult);
+
+       
+        String Data[]={
+             //ID, input string, transliterated string
+             "Any-Hex;Hex-Any;Any-Hex",     "hello",  "\\u0068\\u0065\\u006C\\u006C\\u006F", 
+             "Any-Hex;Hex-Any",                 "hello! How are you?",  "hello! How are you?",
+             "Devanagari-Latin;Latin-Devanagari",       "\u092D\u0948'\u0930'\u0935",  "\u092D\u0948\u0930\u0935", // quotes lost
+             "Latin-Cyrillic;Cyrillic-Latin",           "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h", "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h",
+             "Latin-Greek;Greek-Latin",                 "ABGabgAKLMN", "ABGabgAKLMN",
+             //"Latin-Arabic;Arabic-Latin",               "Ad'r'a'b'i'k'dh'dd'gh", "Adrabikdhddgh",
+             "Hiragana-Katakana",                       "\u3041\u308f\u3099\u306e\u304b\u3092\u3099", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30fa",  
+             "Hiragana-Katakana;Katakana-Hiragana",     "\u3041\u308f\u3099\u306e\u304b\u3051", 
+                                                                 "\u3041\u308f\u3099\u306e\u304b\u3051",
+             "Katakana-Hiragana;Hiragana-Katakana",     "\u30A1\u30f7\u30ce\u30f5\u30f6", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30b1",  
+             "Latin-Katakana;Katakana-Latin",                   "vavivuvevohuzizuzoninunasesuzezu", 
+                                                                 "vavivuvevohuzizuzoninunasesuzezu",  
+        };
+        Transliterator ct2=null;
+        for(int i=0; i<Data.length; i+=3){
+            try{
+                ct2=Transliterator.getInstance(Data[i+0]);
+            }catch(IllegalArgumentException iae2){
+                errln("FAIL: CompoundTransliterator construction failed for " + Data[i+0]);
+                throw iae2;
+            }
+        expect(ct2, Data[i+1], Data[i+2]);
+        }
+   
+    }
+ 
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+     /**
+     * Splits a string,
+    */
+    private static String[] split(String s, char divider) {
+      
+    // see how many there are
+        int count = 1;
+    for (int i = 0; i < s.length(); ++i) {
+       if (s.charAt(i) == divider) ++count;
+    }
+        
+    // make an array with them
+    String[] result = new String[count];
+    int last = 0;
+    int current = 0;
+    int i;
+    for (i = 0; i < s.length(); ++i) {
+        if (s.charAt(i) == divider) {
+            result[current++] = s.substring(last,i);
+            last = i+1;
+        }
+    }
+    result[current++] = s.substring(last,i);
+    return result;
+    }
+
+    private void expect(Transliterator t, String source, String expectedResult) {
+        String result = t.transliterate(source);
+        expectAux(t.getID() + ":String", source, result, expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable", source, result, expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.replace(0, rsource.length(), "");
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.start)).
+                append('|').
+                append(s.substring(index.start));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+        expectAux(t.getID() + ":Keyboard", log.toString(),
+                 result.equals(expectedResult),
+                 expectedResult);
+
+    }
+    private void expectAux(String tag, String source,
+                  String result, String expectedResult) {
+        expectAux(tag, source + " -> " + result,
+                 result.equals(expectedResult),
+                 expectedResult);
+    }
+
+    private void expectAux(String tag, String summary, boolean pass, String expectedResult) {
+        if (pass) {
+            logln("(" + tag + ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: (" + tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }  
+}
+
diff --git a/src/com/ibm/icu/dev/test/translit/ErrorTest.java b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
new file mode 100644
index 0000000..65ed819
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
@@ -0,0 +1,241 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+/**
+ * @test
+ * @summary Error condition test of Transliterator
+ */
+public class ErrorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new ErrorTest().run(args);
+    }
+
+    public void TestTransliteratorErrors() {
+        String trans = "Latin-Greek";
+        String bogusID = "LATINGREEK-GREEKLATIN";
+        String newID = "Bogus-Latin";
+        String newIDRules = "zzz > Z; f <> ph";
+        String bogusRules = "a } [b-g m-p ";
+        ReplaceableString testString =
+            new ReplaceableString("A quick fox jumped over the lazy dog.");
+        String insertString = "cats and dogs";
+        int stoppedAt = 0, len;
+        Transliterator.Position pos = new Transliterator.Position();
+
+        Transliterator t =
+            Transliterator.getInstance(trans, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: construction of Latin-Greek");
+            return;
+        }
+        len = testString.length();
+        stoppedAt = t.transliterate(testString, 0, 100);
+        if (stoppedAt != -1) {
+            errln("FAIL: Out of bounds check failed (1).");
+        } else if (testString.length() != len) {
+            testString =
+                new ReplaceableString("A quick fox jumped over the lazy dog.");
+            errln("FAIL: Transliterate fails and the target string was modified.");
+        }
+        stoppedAt = t.transliterate(testString, 100, testString.length() - 1);
+        if (stoppedAt != -1) {
+            errln("FAIL: Out of bounds check failed (2).");
+        } else if (testString.length() != len) {
+            testString =
+                new ReplaceableString("A quick fox jumped over the lazy dog.");
+            errln("FAIL: Transliterate fails and the target string was modified.");
+        }
+        pos.start = 100;
+        pos.limit = testString.length();
+        try {
+            t.transliterate(testString, pos);
+            errln("FAIL: Start offset is out of bounds, error not reported.");
+        } catch (IllegalArgumentException e) {
+            logln("Start offset is out of bounds and detected.");
+        }
+        pos.limit = 100;
+        pos.start = 0;
+
+        try {
+            t.transliterate(testString, pos);
+            errln("FAIL: Limit offset is out of bounds, error not reported.\n");
+        } catch (IllegalArgumentException e) {
+            logln("Start offset is out of bounds and detected.");
+        }
+        len = pos.contextLimit = testString.length();
+        pos.contextStart = 0;
+        pos.limit = len - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with string: the transliteration position limit didn't change as expected.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("Insertion test with string failed for some reason.");
+        }
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length();
+        pos.limit = testString.length() - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, 0x0061);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with character: the transliteration position limit didn't change as expected.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Insertion test with UTF-16 code point failed for some reason.");
+        }
+        len = pos.limit = testString.length();
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length() - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            errln("FAIL: Out of bounds check failed (3).");
+            if (testString.length() != len) {
+                errln("FAIL: The input string was modified though the offsets were out of bounds.");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Insertion test with out of bounds indexes.");
+        }
+        Transliterator t1 = null;
+        try {
+            t1 = Transliterator.getInstance(bogusID, Transliterator.FORWARD);
+            if (t1 != null) {
+                errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\"");
+            }
+        } catch (IllegalArgumentException e) {
+        }
+
+        //try { // unneeded - Exception cannot be thrown
+        Transliterator t2 =
+            Transliterator.createFromRules(
+                newID,
+                newIDRules,
+                Transliterator.FORWARD);
+        try {
+            Transliterator t3 = t2.getInverse();
+            errln("FAIL: The newID transliterator was not registered so createInverse should fail.");
+            if (t3 != null) {
+                errln("FAIL: The newID transliterator was not registered so createInverse should fail.");
+            }
+        } catch (Exception e) {
+        }
+        //} catch (Exception e) { }
+        try {
+            Transliterator t4 =
+                Transliterator.createFromRules(
+                    newID,
+                    bogusRules,
+                    Transliterator.FORWARD);
+            if (t4 != null) {
+                errln("FAIL: The rules is malformed but error was not reported.");
+            }
+        } catch (Exception e) {
+        }
+    }
+
+    public void TestUnicodeSetErrors() {
+        String badPattern = "[[:L:]-[0x0300-0x0400]";
+        UnicodeSet set = new UnicodeSet();
+        //String result;
+
+        if (!set.isEmpty()) {
+            errln("FAIL: The default ctor of UnicodeSet created a non-empty object.");
+        }
+        try {
+            set.applyPattern(badPattern);
+            errln("FAIL: Applied a bad pattern to the UnicodeSet object okay.");
+        } catch (IllegalArgumentException e) {
+            logln("Test applying with the bad pattern.");
+        }
+        try {
+            new UnicodeSet(badPattern);
+            errln("FAIL: Created a UnicodeSet based on bad patterns.");
+        } catch (IllegalArgumentException e) {
+            logln("Test constructing with the bad pattern.");
+        }
+    }
+
+//    public void TestUniToHexErrors() {
+//        Transliterator t = null;
+//        try {
+//            t = new UnicodeToHexTransliterator("", true, null);
+//            if (t != null) {
+//                errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern.");
+//            }
+//        } catch (IllegalArgumentException e) {
+//        }
+//        try {
+//            t = new UnicodeToHexTransliterator("\\x", true, null);
+//            if (t != null) {
+//                errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern.");
+//            }
+//        } catch (IllegalArgumentException e) {
+//        }
+//        t = new UnicodeToHexTransliterator();
+//        try {
+//            ((UnicodeToHexTransliterator) t).applyPattern("\\x");
+//            errln("FAIL: UnicodeToHexTransliterator::applyPattern succeeded with a bad pattern.");
+//        } catch (Exception e) {
+//        }
+//    }
+
+    public void TestRBTErrors() {
+
+        String rules = "ab>y";
+        String id = "MyRandom-YReverse";
+        String goodPattern = "[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */
+        UnicodeSet set = null;
+        try {
+            set = new UnicodeSet(goodPattern);
+            try {
+                Transliterator t =
+                    Transliterator.createFromRules(id, rules, Transliterator.REVERSE);
+                t.setFilter(set);
+                Transliterator.registerClass(id, t.getClass(), null);
+                Transliterator.unregister(id);
+                try {
+                    Transliterator.getInstance(id, Transliterator.REVERSE);
+                    errln("FAIL: construction of unregistered ID should have failed.");
+                } catch (IllegalArgumentException e) {
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Was not able to create a good RBT to test registration.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns.");
+            return;
+        }
+    }
+
+//    public void TestHexToUniErrors() {
+//        Transliterator t = null;
+//        //try { // unneeded - exception cannot be thrown
+//        t = new HexToUnicodeTransliterator("", null);
+//        //} catch (Exception e) {
+//        //    errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern.");
+//        //}
+//        try {
+//            t = new HexToUnicodeTransliterator("\\x", null);
+//            errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern.");
+//        } catch (IllegalArgumentException e) {
+//        }
+//
+//        t = new HexToUnicodeTransliterator();
+//        try {
+//            ((HexToUnicodeTransliterator) t).applyPattern("\\x");
+//            errln("FAIL: HexToUnicodeTransliterator::applyPattern succeeded with a bad pattern.");
+//        } catch (IllegalArgumentException e) {
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/JamoTest.java b/src/com/ibm/icu/dev/test/translit/JamoTest.java
new file mode 100644
index 0000000..462f73f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/JamoTest.java
@@ -0,0 +1,509 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.util.*;
+
+/**
+ * @test
+ * @summary Test the Latin-Jamo transliterator
+ */
+public class JamoTest extends TransliteratorTest {
+
+    public static void main(String[] args) throws Exception {
+        new JamoTest().run(args);
+    }
+
+    public void TestJamo() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+
+        String[] CASE = {
+            // Column 1 is the latin text L1 to be fed to Latin-Jamo
+            // to yield output J.
+
+            // Column 2 is expected value of J.  J is fed to
+            // Jamo-Latin to yield output L2.
+
+            // Column 3 is expected value of L2.  If the expected
+            // value of L2 is L1, then L2 is null.
+ 
+                // add tests for the update to fix problems where it didn't follow the standard
+                // see also http://www.unicode.org/cldr/data/charts/transforms/Latin-Hangul.html
+                "gach", "(Gi)(A)(Cf)", null,
+                "geumhui", "(Gi)(EU)(Mf)(Hi)(YI)", null,
+                "choe", "(Ci)(OE)", null,
+                "wo", "(IEUNG)(WEO)", null,
+                "Wonpil", "(IEUNG)(WEO)(Nf)(Pi)(I)(L)", "wonpil",
+                "GIPPEUM", "(Gi)(I)(BB)(EU)(Mf)", "gippeum",
+                "EUTTEUM", "(IEUNG)(EU)(DD)(EU)(Mf)", "eutteum",
+                "KKOTNAE", "(GGi)(O)(Tf)(Ni)(AE)", "kkotnae",
+                "gaga", "(Gi)(A)(Gi)(A)", null,
+                "gag-a", "(Gi)(A)(Gf)(IEUNG)(A)", null,
+                "gak-ka", "(Gi)(A)(Kf)(Ki)(A)", null,
+                "gakka", "(Gi)(A)(GGi)(A)", null,
+                "gakk-a", "(Gi)(A)(GGf)(IEUNG)(A)", null,
+                "gakkka", "(Gi)(A)(GGf)(Ki)(A)", null,
+                "gak-kka", "(Gi)(A)(Kf)(GGi)(A)", null,
+
+            "bab", "(Bi)(A)(Bf)", null,
+            "babb", "(Bi)(A)(Bf)(Bi)(EU)", "babbeu",
+            "babbba", "(Bi)(A)(Bf)(Bi)(EU)(Bi)(A)", "babbeuba",
+            "bagg", "(Bi)(A)(Gf)(Gi)(EU)", "baggeu",
+            "baggga", "(Bi)(A)(Gf)(Gi)(EU)(Gi)(A)", "baggeuga",
+            //"bag"+SEP+"gga", "(Bi)(A)(Gf)"+SEP+"(Gi)(EU)(Gi)(A)", "bag"+SEP+"geuga",
+            "kabsa", "(Ki)(A)(Bf)(Si)(A)", null,
+            "kabska", "(Ki)(A)(BS)(Ki)(A)", null,
+            "gabsbka", "(Gi)(A)(BS)(Bi)(EU)(Ki)(A)", "gabsbeuka", // not (Kf)
+            "gga", "(Gi)(EU)(Gi)(A)", "geuga",
+            "bsa", "(Bi)(EU)(Si)(A)", "beusa",
+            "agg", "(IEUNG)(A)(Gf)(Gi)(EU)", "aggeu",
+            "agga", "(IEUNG)(A)(Gf)(Gi)(A)", null,
+            "la", "(R)(A)", null,
+            "bs", "(Bi)(EU)(Sf)", "beus",
+            "kalgga", "(Ki)(A)(L)(Gi)(EU)(Gi)(A)", "kalgeuga",
+
+            // 'r' in a final position is treated like 'l'
+            "karka", "(Ki)(A)(L)(Ki)(A)", "kalka",
+            
+        };
+
+        for (int i=0; i<CASE.length; i+=3) {
+            String jamo = nameToJamo(CASE[i+1]);
+            if (CASE[i+2] == null) {
+                expect(latinJamo, CASE[i], jamo, jamoLatin);
+            } else {
+                // Handle case where round-trip is expected to fail
+                expect(latinJamo, CASE[i], jamo);
+                expect(jamoLatin, jamo, CASE[i+2]);
+            }
+        }
+    }
+
+    /**
+     * These are problems turned up by the Hangul-Jamo;Jamo-Latin
+     * round trip test.
+     */
+    public void TestRoundTrip() {
+        String HANGUL[] = { "\uAC03\uC2F8",
+                            "\uC544\uC5B4"};
+        
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<HANGUL.length; ++i) {
+            String hangul = HANGUL[i];
+            String jamo = hangulJamo.transliterate(hangul);
+            String latin = jamoLatin.transliterate(jamo);
+            String jamo2 = latinJamo.transliterate(latin);
+            String hangul2 = jamoHangul.transliterate(jamo2);
+            buf.setLength(0);
+            buf.append(hangul + " => " +
+                       jamoToName(jamo) + " => " +
+                       latin + " => " + jamoToName(jamo2)
+                       + " => " + hangul2
+                       );
+            if (!hangul.equals(hangul2)) {
+                errln("FAIL: " + Utility.escape(buf.toString()));
+            } else {
+                logln(Utility.escape(buf.toString()));
+            }
+        }
+    }
+
+    /**
+     * Test various step-at-a-time transformation of hangul to jamo to
+     * latin and back.
+     */
+    public void TestPiecemeal() {
+        String hangul = "\uBC0F";
+        String jamo = nameToJamo("(Mi)(I)(Cf)");
+        String latin = "mic";
+        String latin2 = "mich";
+
+        Transliterator t = null;
+
+        t = Transliterator.getInstance("NFD"); // was Hangul-Jamo
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("NFC"); // was Jamo-Hangul
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Latin-Jamo");
+        expect(t, latin, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin");
+        expect(t, jamo, latin2);
+
+        t = Transliterator.getInstance("Hangul-Latin");
+        expect(t, hangul, latin2);
+
+        t = Transliterator.getInstance("Latin-Hangul");
+        expect(t, latin, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Jamo");
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin; Latin-Hangul");
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Hangul");
+        expect(t, hangul, hangul);
+    }
+
+    public void TestRealText() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+        //Transliterator rt = new CompoundTransliterator(new Transliterator[] {
+        //    hangulJamo, jamoLatin, latinJamo, jamoHangul });
+        Transliterator rt = Transliterator.getInstance("NFD;Jamo-Latin;Latin-Jamo;NFC");
+
+        int pos = 0;
+        StringBuffer buf = new StringBuffer();
+        int total = 0;
+        int errors = 0;
+        while (pos < WHAT_IS_UNICODE.length()) {
+            int space = WHAT_IS_UNICODE.indexOf(' ', pos+1);
+            if (space < 0) {
+                space = WHAT_IS_UNICODE.length();
+            }
+            if (pos < space) {
+                ++total;
+                String hangul = WHAT_IS_UNICODE.substring(pos, space);
+                String hangulX = rt.transliterate(hangul);
+                if (!hangul.equals(hangulX)) {
+                    ++errors;
+                    String jamo = hangulJamo.transliterate(hangul);
+                    String latin = jamoLatin.transliterate(jamo);
+                    String jamo2 = latinJamo.transliterate(latin);
+                    String hangul2 = jamoHangul.transliterate(jamo2);
+                    if (hangul.equals(hangul2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Compound transliterator problem): ");
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2 +
+                                   "; but " + hangul + " =cpd=> " + jamoToName(hangulX)
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else if (jamo.equals(jamo2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Jamo<>Hangul problem): ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else {
+                        buf.setLength(0);
+                        buf.append("FAIL: ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        // The Hangul-Jamo conversion is not usually the
+                        // bug here, so we hide it from display.
+                        // Uncomment lines to see the Hangul.
+                        buf.append(//hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   //+ " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));
+                    }
+                }
+            }
+            pos = space+1;
+        }
+        if (errors != 0) {
+            errln("Test word failures: " + errors + " out of " + total);
+        } else {
+            logln("All " + total + " test words passed");
+        }
+    }
+
+    // Test text taken from the Unicode web site
+    static final String WHAT_IS_UNICODE =
+
+        "\uc720\ub2c8\ucf54\ub4dc\uc5d0 \ub300\ud574 ? " +
+
+        "\uc5b4\ub5a4 \ud50c\ub7ab\ud3fc, \uc5b4\ub5a4 " +
+        "\ud504\ub85c\uadf8\ub7a8, \uc5b4\ub5a4 \uc5b8\uc5b4\uc5d0\ub3c4 " +
+        "\uc0c1\uad00\uc5c6\uc774 \uc720\ub2c8\ucf54\ub4dc\ub294 \ubaa8\ub4e0 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uace0\uc720 \ubc88\ud638\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. " +
+        
+        "\uae30\ubcf8\uc801\uc73c\ub85c \ucef4\ud4e8\ud130\ub294 " +
+        "\uc22b\uc790\ub9cc \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uae00\uc790\ub098 " +
+        "\ub2e4\ub978 \ubb38\uc790\uc5d0\ub3c4 \uc22b\uc790\ub97c " +
+        "\uc9c0\uc815\ud558\uc5ec " +
+        "\uc800\uc7a5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\uac00 " +
+        "\uac1c\ubc1c\ub418\uae30 \uc804\uc5d0\ub294 \uc774\ub7ec\ud55c " +
+        "\uc22b\uc790\ub97c \uc9c0\uc815\ud558\uae30 \uc704\ud574 \uc218\ubc31 " +
+        "\uac00\uc9c0\uc758 \ub2e4\ub978 \uae30\ud638\ud654 " +
+        "\uc2dc\uc2a4\ud15c\uc744 " +
+        "\uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc73c\ub85c\ub294 \ubaa8\ub4e0 \ubb38\uc790\ub97c " +
+        "\ud3ec\ud568\ud560 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc608\ub97c " +
+        "\ub4e4\uc5b4 \uc720\ub7fd \uc5f0\ud569\uc5d0\uc11c\ub9cc " +
+        "\ubcf4\ub354\ub77c\ub3c4 \ubaa8\ub4e0 \uac01 \ub098\ub77c\ubcc4 " +
+        "\uc5b8\uc5b4\ub97c \ucc98\ub9ac\ud558\ub824\uba74 \uc5ec\ub7ec " +
+        "\uac1c\uc758 \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774 " +
+        "\ud544\uc694\ud569\ub2c8\ub2e4. \uc601\uc5b4\uc640 \uac19\uc740 " +
+        "\ub2e8\uc77c \uc5b8\uc5b4\uc758 \uacbd\uc6b0\ub3c4 " +
+        "\uacf5\ud1b5\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\uae00\uc790, \ubb38\uc7a5 \ubd80\ud638 \ubc0f " +
+        "\ud14c\ud06c\ub2c8\uceec \uae30\ud638\uc5d0 \ub9de\ub294 \ub2e8\uc77c " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc744 \uac16\uace0 \uc788\uc9c0 " +
+        "\ubabb\ud558\uc600\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc774\ub7ec\ud55c \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uc740 " +
+        "\ub610\ud55c \ub2e4\ub978 \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uacfc " +
+        "\ucda9\ub3cc\ud569\ub2c8\ub2e4. \uc989 \ub450 \uac00\uc9c0 " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc774 \ub450 \uac1c\uc758 \ub2e4\ub978 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uac19\uc740 \ubc88\ud638\ub97c " +
+        "\uc0ac\uc6a9\ud558\uac70\ub098 \uac19\uc740 \ubb38\uc790\uc5d0 " +
+        "\ub300\ud574 \ub2e4\ub978 \ubc88\ud638\ub97c \uc0ac\uc6a9\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc8fc\uc5b4\uc9c4 \ubaa8\ub4e0 " +
+        "\ucef4\ud4e8\ud130(\ud2b9\ud788 \uc11c\ubc84)\ub294 \uc11c\ub85c " +
+        "\ub2e4\ub978 \uc5ec\ub7ec \uac00\uc9c0 \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc744 \uc9c0\uc6d0\ud574\uc57c " +
+        "\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \ub370\uc774\ud130\ub97c " +
+        "\uc11c\ub85c \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774\ub098 " +
+        "\ud50c\ub7ab\ud3fc \uac04\uc5d0 \uc804\ub2ec\ud560 \ub54c\ub9c8\ub2e4 " +
+        "\uadf8 \ub370\uc774\ud130\ub294 \ud56d\uc0c1 \uc190\uc0c1\uc758 " +
+        "\uc704\ud5d8\uc744 \uacaa\uac8c \ub429\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub85c \ubaa8\ub4e0 \uac83\uc744 " +
+        "\ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! " +
+        "\uc720\ub2c8\ucf54\ub4dc\ub294 \uc0ac\uc6a9 \uc911\uc778 " +
+        "\ud50c\ub7ab\ud3fc, \ud504\ub85c\uadf8\ub7a8, \uc5b8\uc5b4\uc5d0 " +
+        "\uad00\uacc4\uc5c6\uc774 \ubb38\uc790\ub9c8\ub2e4 \uace0\uc720\ud55c " +
+        "\uc22b\uc790\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc740 " + // "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, " +
+        // "Sun, Sybase, Unisys " + 
+        "\ubc0f \uae30\ud0c0 \uc5ec\ub7ec " +
+        "\ud68c\uc0ac\uc640 \uac19\uc740 \uc5c5\uacc4 " +
+        "\uc120\ub450\uc8fc\uc790\uc5d0 \uc758\ud574 " +
+        "\ucc44\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub294 " +
+        // "XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML " +
+        "\ub4f1\uacfc " +
+        "\uac19\uc774 \ud604\uc7ac \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 " +
+        "\ud45c\uc900\uc5d0\uc11c \ud544\uc694\ud558\uba70 \uc774\ub294 " + //ISO/IEC " +
+        "10646\uc744 \uad6c\ud604\ud558\ub294 \uacf5\uc2dd\uc801\uc778 " +
+        "\ubc29\ubc95\uc785\ub2c8\ub2e4. \uc774\ub294 \ub9ce\uc740 \uc6b4\uc601 " +
+        "\uccb4\uc81c, \uc694\uc998 \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\ube0c\ub77c\uc6b0\uc800 \ubc0f \uae30\ud0c0 \ub9ce\uc740 " +
+        "\uc81c\ud488\uc5d0\uc11c " +
+        "\uc9c0\uc6d0\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc758 \ubd80\uc0c1\uacfc \uc774\ub97c " +
+        "\uc9c0\uc6d0\ud558\ub294 \ub3c4\uad6c\uc758 \uac00\uc6a9\uc131\uc740 " +
+        "\ucd5c\uadfc \uc804 \uc138\uacc4\uc5d0 \ubd88\uace0 \uc788\ub294 " +
+        "\uae30\uc220 \uacbd\ud5a5\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c " +
+        "\ubd80\ubd84\uc744 \ucc28\uc9c0\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub97c " +
+// Replaced a hyphen with a space to make the test case work with CLDR1.5
+//        "\ud074\ub77c\uc774\uc5b8\ud2b8-\uc11c\ubc84 \ub610\ub294 " +
+        "\ud074\ub77c\uc774\uc5b8\ud2b8 \uc11c\ubc84 \ub610\ub294 " +
+// Replaced a hyphen with a space.
+//        "\ub2e4\uc911-\uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uacfc " +
+        "\ub2e4\uc911 \uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uacfc " +
+        "\uc6f9 \uc0ac\uc774\ud2b8\uc5d0 \ud1b5\ud569\ud558\uba74 " +
+        "\ub808\uac70\uc2dc \ubb38\uc790 \uc138\ud2b8 \uc0ac\uc6a9\uc5d0 " +
+        "\uc788\uc5b4\uc11c \uc0c1\ub2f9\ud55c \ube44\uc6a9 \uc808\uac10 " +
+        "\ud6a8\uacfc\uac00 " +
+        "\ub098\ud0c0\ub0a9\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub97c " +
+        "\ud1b5\ud574 \ub9ac\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \uc5c6\uc774 " +
+        "\ub2e4\uc911 \ud50c\ub7ab\ud3fc, \uc5b8\uc5b4 \ubc0f \uad6d\uac00 " +
+        "\uac04\uc5d0 \ub2e8\uc77c \uc18c\ud504\ud2b8\uc6e8\uc5b4 " +
+        "\ud50c\ub7ab\ud3fc \ub610\ub294 \ub2e8\uc77c \uc6f9 " +
+        "\uc0ac\uc774\ud2b8\ub97c \ubaa9\ud45c\ub85c \uc0bc\uc744 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud558\uba74 " +
+        "\ub370\uc774\ud130\ub97c \uc190\uc0c1 \uc5c6\uc774 \uc5ec\ub7ec " +
+        "\uc2dc\uc2a4\ud15c\uc744 \ud1b5\ud574 \uc804\uc1a1\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc5d0 \ub300\ud574 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc740 " +
+        "\ube44\uc601\ub9ac \uc870\uc9c1\uc73c\ub85c\uc11c \ud604\ub300 " +
+        "\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc81c\ud488\uacfc " +
+        "\ud45c\uc900\uc5d0\uc11c \ud14d\uc2a4\ud2b8\uc758 \ud45c\ud604\uc744 " +
+        "\uc9c0\uc815\ud558\ub294 \uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc758 " +
+        "\uc0ac\uc6a9\uc744 \uac1c\ubc1c\ud558\uace0 \ud655\uc7a5\ud558\uba70 " +
+        "\uc7a5\ub824\ud558\uae30 \uc704\ud574 " +
+        "\uc138\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4 " +
+        "\uba64\ubc84\uc27d\uc740 \ucef4\ud4e8\ud130\uc640 \uc815\ubcf4 " +
+        "\ucc98\ub9ac \uc0b0\uc5c5\uc5d0 \uc885\uc0ac\ud558\uace0 \uc788\ub294 " +
+        "\uad11\ubc94\uc704\ud55c \ud68c\uc0ac \ubc0f \uc870\uc9c1\uc758 " +
+        "\ubc94\uc704\ub97c " +
+        "\ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4\uc758 " +
+        "\uc7ac\uc815\uc740 \uc804\uc801\uc73c\ub85c \ud68c\ube44\uc5d0 " +
+        "\uc758\ud574 \ucda9\ub2f9\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ucee8\uc18c\uc2dc\uc5c4\uc5d0\uc11c\uc758 \uba64\ubc84\uc27d\uc740 " +
+        "\uc804 \uc138\uacc4 \uc5b4\ub290 \uacf3\uc5d0\uc11c\ub098 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc744 \uc9c0\uc6d0\ud558\uace0 " +
+        "\uadf8 \ud655\uc7a5\uacfc \uad6c\ud604\uc744 " +
+        "\uc9c0\uc6d0\ud558\uace0\uc790\ud558\ub294 \uc870\uc9c1\uacfc " +
+        "\uac1c\uc778\uc5d0\uac8c \uac1c\ubc29\ub418\uc5b4 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc6a9\uc5b4\uc9d1, " +
+        "\uc608\uc81c \uc720\ub2c8\ucf54\ub4dc \uc0ac\uc6a9 \uac00\ub2a5 " +
+        "\uc81c\ud488, \uae30\uc220 \uc815\ubcf4 \ubc0f \uae30\ud0c0 " +
+        "\uc720\uc6a9\ud55c \uc815\ubcf4\ub97c " +
+        "\ucc38\uc870\ud558\uc2ed\uc2dc\uc624.";
+
+    // TransliteratorTest override
+    boolean expectAux(String tag, String summary, boolean pass,
+                   String expectedResult) {
+        return super.expectAux(tag, jamoToName(summary),
+                        pass, jamoToName(expectedResult));
+    }
+
+    // UTILITIES
+
+    // Note: The following could more easily be done with a transliterator!
+    static final String[] JAMO_NAMES = {
+        "(Gi)", "\u1100",
+        "(GGi)", "\u1101",
+        "(Ni)", "\u1102",
+        "(Di)", "\u1103",
+        "(DD)", "\u1104",
+        "(R)", "\u1105",
+        "(Mi)", "\u1106",
+        "(Bi)", "\u1107",
+        "(BB)", "\u1108",
+        "(Si)", "\u1109",
+        "(SSi)", "\u110A",
+        "(IEUNG)", "\u110B",
+        "(Ji)", "\u110C",
+        "(JJ)", "\u110D",
+        "(Ci)", "\u110E",
+        "(Ki)", "\u110F",
+        "(Ti)", "\u1110",
+        "(Pi)", "\u1111",
+        "(Hi)", "\u1112",
+        
+        "(A)", "\u1161",
+        "(AE)", "\u1162",
+        "(YA)", "\u1163",
+        "(YAE)", "\u1164",
+        "(EO)", "\u1165",
+        "(E)", "\u1166",
+        "(YEO)", "\u1167",
+        "(YE)", "\u1168",
+        "(O)", "\u1169",
+        "(WA)", "\u116A",
+        "(WAE)", "\u116B",
+        "(OE)", "\u116C",
+        "(YO)", "\u116D",
+        "(U)", "\u116E",
+        "(WEO)", "\u116F",
+        "(WE)", "\u1170",
+        "(WI)", "\u1171",
+        "(YU)", "\u1172",
+        "(EU)", "\u1173",
+        "(YI)", "\u1174",
+        "(I)", "\u1175",
+
+        "(Gf)", "\u11A8",
+        "(GGf)", "\u11A9",
+        "(GS)", "\u11AA",
+        "(Nf)", "\u11AB",
+        "(NJ)", "\u11AC",
+        "(NH)", "\u11AD",
+        "(Df)", "\u11AE",
+        "(L)", "\u11AF",
+        "(LG)", "\u11B0",
+        "(LM)", "\u11B1",
+        "(LB)", "\u11B2",
+        "(LS)", "\u11B3",
+        "(LT)", "\u11B4",
+        "(LP)", "\u11B5",
+        "(LH)", "\u11B6",
+        "(Mf)", "\u11B7",
+        "(Bf)", "\u11B8",
+        "(BS)", "\u11B9",
+        "(Sf)", "\u11BA",
+        "(SSf)", "\u11BB",
+        "(NG)", "\u11BC",
+        "(Jf)", "\u11BD",
+        "(Cf)", "\u11BE",
+        "(Kf)", "\u11BF",
+        "(Tf)", "\u11C0",
+        "(Pf)", "\u11C1",
+        "(Hf)", "\u11C2",
+    };
+
+    static Hashtable JAMO_TO_NAME;
+    static Hashtable NAME_TO_JAMO;
+
+    static {
+        JAMO_TO_NAME = new Hashtable();
+        NAME_TO_JAMO = new Hashtable();
+        for (int i=0; i<JAMO_NAMES.length; i+=2) {
+            JAMO_TO_NAME.put(JAMO_NAMES[i+1], JAMO_NAMES[i]);
+            NAME_TO_JAMO.put(JAMO_NAMES[i], JAMO_NAMES[i+1]);
+        }
+    }
+
+    /**
+     * Convert short names to actual jamo.  E.g., "x(LG)y" returns
+     * "x\u11B0y".  See JAMO_NAMES for table of names.
+     */
+    static String nameToJamo(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c == '(') {
+                int j = input.indexOf(')', i+1);
+                if ((j-i) >= 2 && (j-i) <= 6) { // "(A)", "(IEUNG)"
+                    String jamo = (String) NAME_TO_JAMO.get(input.substring(i, j+1));
+                    if (jamo != null) {
+                        buf.append(jamo);
+                        i = j;
+                        continue;
+                    }
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert jamo to short names.  E.g., "x\u11B0y" returns
+     * "x(LG)y".  See JAMO_NAMES for table of names.
+     */
+    static String jamoToName(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c >= 0x1100 && c <= 0x11C2) {
+                String name = (String) JAMO_TO_NAME.get(input.substring(i, i+1));
+                if (name != null) {
+                    buf.append(name);
+                    continue;
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
new file mode 100644
index 0000000..6cfebde
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
@@ -0,0 +1,190 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class ReplaceableTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new ReplaceableTest().run(args);
+    }
+  
+    public void Test() {
+        check("Lower", "ABCD", "1234");
+        check("Upper", "abcd\u00DF", "123455"); // must map 00DF to SS
+        check("Title", "aBCD", "1234");
+        check("NFC", "A\u0300E\u0300", "13");
+        check("NFD", "\u00C0\u00C8", "1122");
+        check("*(x) > A $1 B", "wxy", "11223");
+        check("*(x)(y) > A $2 B $1 C $2 D", "wxyz", "113322334");
+        check("*(x)(y)(z) > A $3 B $2 C $1 D", "wxyzu", "114433225");
+        // TODO Revisit the following in 2.6 or later.
+        check("*x > a", "xyz", "223"); // expect "123"?
+        check("*x > a", "wxy", "113"); // expect "123"?
+        check("*x > a", "\uFFFFxy", "_33"); // expect "_23"?
+        check("*(x) > A $1 B", "\uFFFFxy", "__223");
+    }
+    
+    void check(String transliteratorName, String test, String shouldProduceStyles) {
+        TestReplaceable tr = new TestReplaceable(test, null);
+        String original = tr.toString();
+        
+        Transliterator t;
+        if (transliteratorName.startsWith("*")) {
+            transliteratorName = transliteratorName.substring(1);
+            t = Transliterator.createFromRules("test", transliteratorName,
+                                               Transliterator.FORWARD);
+        } else {
+            t = Transliterator.getInstance(transliteratorName);
+        }
+        t.transliterate(tr);
+        String newStyles = tr.getStyles();
+        if (!newStyles.equals(shouldProduceStyles)) {
+            errln("FAIL Styles: " + transliteratorName + " ( "
+                + original + " ) => " + tr.toString() + "; should be {" + shouldProduceStyles + "}!");
+        } else {
+            logln("OK: " + transliteratorName + " ( " + original + " ) => " + tr.toString());
+        }
+        
+        if (!tr.hasMetaData() || tr.chars.hasMetaData() 
+            || tr.styles.hasMetaData()) {
+            errln("Fail hasMetaData()");
+        }
+    }
+    
+
+    /**
+     * This is a test class that simulates styled text.
+     * It associates a style number (0..65535) with each character,
+     * and maintains that style in the normal fashion:
+     * When setting text from raw string or characters,<br>
+     * Set the styles to the style of the first character replaced.<br>
+     * If no characters are replaced, use the style of the previous character.<br>
+     * If at start, use the following character<br>
+     * Otherwise use NO_STYLE.
+     */
+    static class TestReplaceable implements Replaceable {
+        ReplaceableString chars;
+        ReplaceableString styles;
+        
+        static final char NO_STYLE = '_';
+
+        static final char NO_STYLE_MARK = 0xFFFF;
+        
+        TestReplaceable (String text, String styles) {
+            chars = new ReplaceableString(text);
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < text.length(); ++i) {
+                if (styles != null && i < styles.length()) {
+                    s.append(styles.charAt(i));
+                } else {
+                    if (text.charAt(i) == NO_STYLE_MARK) {
+                        s.append(NO_STYLE);
+                    } else {
+                        s.append((char) (i + '1'));
+                    }
+                }
+            }
+            this.styles = new ReplaceableString(s.toString());
+        }
+        
+        public String getStyles() {
+            return styles.toString();
+        }
+        
+        public String toString() {
+            return chars.toString() + "{" + styles.toString() + "}";
+        }
+
+        public String substring(int start, int limit) {
+            return chars.substring(start, limit);
+        }
+
+        public int length() {
+            return chars.length();
+        }
+
+        public char charAt(int offset) {
+            return chars.charAt(offset);
+        }
+
+        public int char32At(int offset) {
+            return chars.char32At(offset);
+        }
+
+        public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+            chars.getChars(srcStart, srcLimit, dst, dstStart);
+        }
+
+        public void replace(int start, int limit, String text) {
+            if (substring(start,limit).equals(text)) return; // NO ACTION!
+            if (DEBUG) System.out.print(Utility.escape(toString() + " -> replace(" + start +
+                                            "," + limit + "," + text) + ") -> ");
+            chars.replace(start, limit, text);
+            fixStyles(start, limit, text.length());
+            if (DEBUG) System.out.println(Utility.escape(toString()));
+        }
+        
+        public void replace(int start, int limit, char[] charArray,
+                            int charsStart, int charsLen) {
+            if (substring(start,limit).equals(new String(charArray, charsStart, charsLen-charsStart))) return; // NO ACTION!
+            this.chars.replace(start, limit, charArray, charsStart, charsLen);
+            fixStyles(start, limit, charsLen);
+        }
+
+        void fixStyles(int start, int limit, int newLen) {
+            char newStyle = NO_STYLE;
+            if (start != limit && styles.charAt(start) != NO_STYLE) {
+                newStyle = styles.charAt(start);
+            } else if (start > 0 && charAt(start-1) != NO_STYLE_MARK) {
+                newStyle = styles.charAt(start-1);
+            } else if (limit < styles.length()) {
+                newStyle = styles.charAt(limit);
+            }
+            // dumb implementation for now.
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < newLen; ++i) {
+                // this doesn't really handle an embedded NO_STYLE_MARK
+                // in the middle of a long run of characters right -- but
+                // that case shouldn't happen anyway
+                if (charAt(start+i) == NO_STYLE_MARK) {
+                    s.append(NO_STYLE);
+                } else {
+                    s.append(newStyle);
+                }
+            }
+            styles.replace(start, limit, s.toString());
+        }
+
+        public void copy(int start, int limit, int dest) {
+            chars.copy(start, limit, dest);
+            styles.copy(start, limit, dest);
+        }
+        
+        public boolean hasMetaData() {
+            return true;
+        }
+
+        static final boolean DEBUG = false;
+    }
+    
+    public void Test5789() {
+        String rules =
+            "IETR > IET | \\' R; # (1) do split ietr between t and r\r\n" +
+            "I[EH] > I; # (2) friedrich";
+        Transliterator trans = Transliterator.createFromRules("foo", rules, Transliterator.FORWARD);
+        String result =  trans.transliterate("BLENKDIETRICH");
+        assertEquals("Rule breakage", "BLENKDIET'RICH", result);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/RoundTripTest.java b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
new file mode 100644
index 0000000..76a7713
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -0,0 +1,1588 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.Utility;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.MissingResourceException;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class RoundTripTest extends TestFmwk {
+
+    static final boolean EXTRA_TESTS = true;
+    static final boolean PRINT_RULES = true;
+
+    public static void main(String[] args) throws Exception {
+        new RoundTripTest().run(args);
+    }
+    /*
+    public void TestSingle() throws IOException, ParseException {
+        Transliterator t = Transliterator.getInstance("Latin-Greek");
+        String s = t.transliterate("\u0101\u0069");
+    }
+    */
+
+    /*
+    Note: Unicode 3.2 added new Hiragana/Katakana characters:
+
+3095..3096    ; 3.2 #   [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
+309F..30A0    ; 3.2 #   [2] HIRAGANA DIGRAPH YORI..KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FF          ; 3.2 #       KATAKANA DIGRAPH KOTO
+31F0..31FF    ; 3.2 #  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+
+    We will not add them to the rules until they are more supported (e.g. in fonts on Windows)
+    A bug has been filed to remind us to do this: #1979.
+    */
+
+    static String KATAKANA = "[[[:katakana:][\u30A1-\u30FA\u30FC]]-[\u30FF\u31F0-\u31FF]]";
+    static String HIRAGANA = "[[[:hiragana:][\u3040-\u3094]]-[\u3095-\u3096\u309F-\u30A0]]";
+    static String LENGTH = "[\u30FC]";
+    static String HALFWIDTH_KATAKANA = "[\uFF65-\uFF9D]";
+    static String KATAKANA_ITERATION = "[\u30FD\u30FE]";
+    static String HIRAGANA_ITERATION = "[\u309D\u309E]";
+
+    //------------------------------------------------------------------
+    // AbbreviatedUnicodeSetIterator
+    //------------------------------------------------------------------
+
+    static class AbbreviatedUnicodeSetIterator extends UnicodeSetIterator {
+
+        private boolean abbreviated;
+        private int perRange;
+
+        public AbbreviatedUnicodeSetIterator() {
+            super();
+            abbreviated = false;
+        }
+
+        public void reset(UnicodeSet newSet) {
+            reset(newSet, false);
+        }
+
+        public void reset(UnicodeSet newSet, boolean abb) {
+            reset(newSet, abb, 100);
+        }
+
+        public void reset(UnicodeSet newSet, boolean abb, int density) {
+            super.reset(newSet);
+            abbreviated = abb;
+            perRange = newSet.getRangeCount();
+            if (perRange != 0) {
+                perRange = density / perRange;
+            }
+        }
+
+        protected void loadRange(int myRange) {
+            super.loadRange(myRange);
+            if (abbreviated && (endElement > nextElement + perRange)) {
+                endElement = nextElement + perRange;
+            }
+        }
+    }
+
+    //--------------------------------------------------------------------
+
+    public void showElapsed(long start, String name) {
+        double dur = (System.currentTimeMillis() - start) / 1000.0;
+        logln(name + " took " + dur + " seconds");
+    }
+
+    public void TestKana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Katakana-Hiragana")
+          .test(KATAKANA, "[" + HIRAGANA + LENGTH + "]", "[" + HALFWIDTH_KATAKANA + LENGTH + "]", this, new Legal());
+        showElapsed(start, "TestKana");
+    }
+
+    public void TestHiragana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Hiragana")
+          .test("[a-zA-Z]", HIRAGANA, HIRAGANA_ITERATION, this, new Legal());
+        showElapsed(start, "TestHiragana");
+    }
+
+    public void TestKatakana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Katakana")
+          .test("[a-zA-Z]", KATAKANA, "[" + KATAKANA_ITERATION + HALFWIDTH_KATAKANA + "]", this, new Legal());
+        showElapsed(start, "TestKatakana");
+    }
+
+    public void TestJamo() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Jamo")
+            .test("[a-zA-Z]", "[\u1100-\u1112 \u1161-\u1175 \u11A8-\u11C2]", "", this, new LegalJamo());
+        showElapsed(start, "TestJamo");
+    }
+
+/*
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount,   // 11172
+        LLimit = LBase + LCount,    // 1113
+        VLimit = VBase + VCount,    // 1176
+        TLimit = TBase + TCount,    // 11C3
+        SLimit = SBase + SCount;    // D7A4
+*/
+
+    public void TestHangul() throws IOException {
+        long start = System.currentTimeMillis();
+        Test t = new Test("Latin-Hangul", 5);
+        if (getInclusion() < 10) t.setPairLimit(1000);
+        t.test("[a-zA-Z]", "[\uAC00-\uD7A4]", "", this, new Legal());
+        showElapsed(start, "TestHangul");
+    }
+    
+    public void TestHan() throws UnsupportedEncodingException, FileNotFoundException {
+        try{
+            UnicodeSet exemplars = LocaleData.getExemplarSet(new ULocale("zh"),0);
+            // create string with all chars
+            StringBuffer b = new StringBuffer();
+            for (UnicodeSetIterator it = new UnicodeSetIterator(exemplars); it.next();) {
+                UTF16.append(b,it.codepoint);
+            }
+            String source = b.toString();
+            // transform with Han translit
+            Transliterator han = Transliterator.getInstance("Han-Latin");
+            String target = han.transliterate(source);
+            // now verify that there are no Han characters left
+            UnicodeSet allHan = new UnicodeSet("[:han:]");
+            assertFalse("No Han must be left after Han-Latin transliteration",allHan.containsSome(target));
+            // check the pinyin translit
+            Transliterator pn = Transliterator.getInstance("Latin-NumericPinyin");
+            String target2 = pn.transliterate(target);
+            // verify that there are no marks
+            Transliterator nfc = Transliterator.getInstance("nfc");
+            String nfced = nfc.transliterate(target2);
+            UnicodeSet allMarks = new UnicodeSet("[:mark:]");
+            assertFalse("NumericPinyin must contain no marks", allMarks.containsSome(nfced));
+            // verify roundtrip
+            Transliterator np = pn.getInverse();
+            String target3 = np.transliterate(target);
+            boolean roundtripOK = target3.equals(target);
+            assertTrue("NumericPinyin must roundtrip", roundtripOK);
+            if (!roundtripOK) {
+                String filename = "numeric-pinyin.log.txt";
+                PrintWriter out = new PrintWriter(
+                    new BufferedWriter(
+                        new OutputStreamWriter(
+                            new FileOutputStream(filename), "UTF8"), 4*1024));
+                errln("Creating log file " + new File(filename).getAbsoluteFile());
+                out.println("Pinyin:                " + target);
+                out.println("Pinyin-Numeric-Pinyin: " + target2);
+                out.close();
+            }
+        }catch(MissingResourceException ex){
+            warnln("Could not load the locale data for fetching the exemplar characters.");
+        }
+    }
+
+    public void TestSingle() {
+        Transliterator t = Transliterator.getInstance("Latin-Greek");
+        t.transliterate("\u0061\u0101\u0069");
+    }
+
+    String getGreekSet() {
+        // Time bomb
+        if (skipIfBeforeICU(4,1,1)) {
+            // We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.5.
+            logln("TestGreek needs to be updated to remove delete the section marked [:Age=4.0:] filter");
+        } else {
+            errln("TestGreek needs to be updated to remove delete the [:Age=4.0:] filter ");
+        }
+        return 
+        // isICU28() ? "[[\u003B\u00B7[:Greek:]-[\u03D7-\u03EF]]&[:Age=3.2:]]" :
+            "[\u003B\u00B7[[:Greek:]&[:Letter:]]-[" +
+            "\u1D26-\u1D2A" + // L&   [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI
+            "\u1D5D-\u1D61" + // Lm   [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI
+            "\u1D66-\u1D6A" + // L&   [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI
+            "\u03D7-\u03EF" + // \N{GREEK KAI SYMBOL}..\N{COPTIC SMALL LETTER DEI}
+            "] & [:Age=4.0:]]";
+    }
+    
+    public void TestGreek() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Greek", 50)
+        .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\u03F5\u03F9]", /* roundtrip exclusions */
+            this, new LegalGreek(true));
+        showElapsed(start, "TestGreek");
+    }
+
+    public void TestGreekUNGEGN() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Greek/UNGEGN")
+          .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+        showElapsed(start, "TestGreekUNGEGN");
+    }
+
+    public void Testel() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-el")
+          .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+        showElapsed(start, "Testel");
+    }
+
+    public void TestCyrillic() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Cyrillic")
+          .test("[a-zA-Z\u0110\u0111\u02BA\u02B9]", "[\u0400-\u045F]", null, this, new Legal());
+        showElapsed(start, "TestCyrillic");
+    }
+
+    static final String ARABIC = "[\u060C\u061B\u061F\u0621\u0627-\u063A\u0641-\u0655\u0660-\u066C\u067E\u0686\u0698\u06A4\u06AD\u06AF\u06CB-\u06CC\u06F0-\u06F9]";
+
+    public void TestArabic() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Arabic")
+          .test("[a-zA-Z\u02BE\u02BF]", ARABIC, "[a-zA-Z\u02BE\u02BF\u207F]", null, this, new Legal()); //
+        showElapsed(start, "TestArabic");
+    }
+
+    public void TestHebrew() throws IOException {
+        //      Time bomb
+        if (skipIfBeforeICU(4,1,1)) {
+            // We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.5.
+            logln("TestHebrew needs to be updated to remove delete the section marked [:Age=4.0:] filter");
+        } else {
+            errln("TestHebrew needs to be updated to remove delete the [:Age=4.0:] filter ");
+        }
+        long start = System.currentTimeMillis();
+        new Test("Latin-Hebrew")
+          .test("[a-zA-Z\u02BC\u02BB]", "[[[:hebrew:]-[\u05BD\uFB00-\uFBFF]]& [:Age=4.0:]]", "[\u05F0\u05F1\u05F2]", this, new LegalHebrew());
+        showElapsed(start, "TestHebrew");
+    }
+
+    public void TestThai() throws IOException {
+        long start = System.currentTimeMillis();
+        if(skipIfBeforeICU(4,1,1)){
+            new Test("Latin-Thai")
+            .test("[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02CC]",
+                  "[\u0E01-\u0E3A\u0E40-\u0E5B]", 
+                  "[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02B9\u02CC]",
+            "[\u0E4F]", this, new LegalThai());   
+        }else{
+            new Test("Latin-Thai")
+                .test("[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02CC]",
+                      "[\u0E01-\u0E3A\u0E40-\u0E5B]", 
+                      "[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02B9\u02CC]",
+                null, this, new LegalThai());
+        }
+        
+        showElapsed(start, "TestThai");
+    }
+
+    //----------------------------------
+    // Inter-Indic Tests
+    //----------------------------------
+    public static class LegalIndic extends Legal{
+        UnicodeSet vowelSignSet = new UnicodeSet();
+
+        public LegalIndic(){
+            vowelSignSet.addAll(new UnicodeSet("[\u0901\u0902\u0903\u0904\u093e-\u094c\u0962\u0963]"));               /* Devanagari */
+            vowelSignSet.addAll(new UnicodeSet("[\u0981\u0982\u0983\u09be-\u09cc\u09e2\u09e3\u09D7]"));         /* Bengali */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a01\u0a02\u0a03\u0a3e-\u0a4c\u0a62\u0a63\u0a70\u0a71]"));   /* Gurmukhi */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a81\u0a82\u0a83\u0abe-\u0acc\u0ae2\u0ae3]"));               /* Gujarati */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b01\u0b02\u0b03\u0b3e-\u0b4c\u0b62\u0b63\u0b56\u0b57]"));   /* Oriya */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b81\u0b82\u0b83\u0bbe-\u0bcc\u0be2\u0be3\u0bd7]"));         /* Tamil */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c01\u0c02\u0c03\u0c3e-\u0c4c\u0c62\u0c63\u0c55\u0c56]"));   /* Telugu */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c81\u0c82\u0c83\u0cbe-\u0ccc\u0ce2\u0ce3\u0cd5\u0cd6]"));   /* Kannada */
+            vowelSignSet.addAll(new UnicodeSet("[\u0d01\u0d02\u0d03\u0d3e-\u0d4c\u0d62\u0d63\u0d57]"));         /* Malayalam */
+        }
+
+        String avagraha = "\u093d\u09bd\u0abd\u0b3d\u0cbd";
+        String nukta = "\u093c\u09bc\u0a3c\u0abc\u0b3c\u0cbc";
+        String virama = "\u094d\u09cd\u0a4d\u0acd\u0b4d\u0bcd\u0c4d\u0ccd\u0d4d";
+        String sanskritStressSigns = "\u0951\u0952\u0953\u0954\u097d";
+        String chandrabindu = "\u0901\u0981\u0A81\u0b01\u0c01";
+        public boolean is(String sourceString){
+            int cp=sourceString.charAt(0);
+
+            // A vowel sign cannot be the first char
+            if(vowelSignSet.contains(cp)){
+                return false;
+            }else if(avagraha.indexOf(cp)!=-1){
+                return false;
+            }else if(virama.indexOf(cp)!=-1){
+                return false;
+            }else if(nukta.indexOf(cp)!=-1){
+                return false;
+            }else if(sanskritStressSigns.indexOf(cp)!=-1){
+                return false;
+            }else if((chandrabindu.indexOf(cp)!=-1) &&
+                        (sourceString.length() >1 &&
+                            vowelSignSet.contains(sourceString.charAt(1)))){
+                return false;
+            }
+            return true;
+        }
+    }
+    static String latinForIndic = "[['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD"+
+                                   "\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F"+
+                                   "\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148"+
+                                   "\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0"+
+                                   "\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u01FB"+
+                                   "\u0200-\u021B\u021E-\u021F\u0226-\u0233\u0294\u0303-\u0304\u0306\u0314-\u0315"+
+                                   "\u0325\u040E\u0419\u0439\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7"+
+                                   "\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03\u1F05"+
+                                   "\u1F07\u1F09\u1F0B\u1F0D\u1F0F\u1F11\u1F13\u1F15\u1F19\u1F1B\u1F1D\u1F21"+
+                                   "\u1F23\u1F25\u1F27\u1F29\u1F2B\u1F2D\u1F2F\u1F31\u1F33\u1F35\u1F37\u1F39"+
+                                   "\u1F3B\u1F3D\u1F3F\u1F41\u1F43\u1F45\u1F49\u1F4B\u1F4D\u1F51\u1F53\u1F55"+
+                                   "\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63\u1F65\u1F67\u1F69\u1F6B\u1F6D"+
+                                   "\u1F6F\u1F81\u1F83\u1F85\u1F87\u1F89\u1F8B\u1F8D\u1F8F\u1F91\u1F93\u1F95"+
+                                   "\u1F97\u1F99\u1F9B\u1F9D\u1F9F\u1FA1\u1FA3\u1FA5\u1FA7\u1FA9\u1FAB\u1FAD"+
+                                   "\u1FAF-\u1FB1\u1FB8-\u1FB9\u1FD0-\u1FD1\u1FD8-\u1FD9\u1FE0-\u1FE1\u1FE5"+
+                                   "\u1FE8-\u1FE9\u1FEC\u212A-\u212B\uE04D\uE064]"+
+                                   "-[\uE000-\uE080 \u01E2\u01E3]& [[:latin:][:mark:]]]";
+
+    public void TestDevanagariLatin() throws IOException {
+        long start = System.currentTimeMillis();
+        if (skipIfBeforeICU(4,1,1)) {
+            logln("Warning: TestDevanagariLatin needs to be updated to remove delete the section marked [:Age=4.1:] filter");
+        } else {
+//              We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.4.
+            errln("FAIL: TestDevanagariLatin needs to be updated to remove delete the [:Age=4.1:] filter ");
+            return;
+        }
+        new Test("Latin-DEVANAGARI", 50)
+          .test(latinForIndic, "[[[:Devanagari:][\u094d][\u0964\u0965]]&[:Age=4.1:]]", "[\u0965\u0904]", this, new LegalIndic());
+        showElapsed(start, "TestDevanagariLatin");
+    }
+
+    private static final String [][] interIndicArray= new String[][]{
+        new String [] {  "BENGALI-DEVANAGARI",
+            "[:BENGALI:]", "[:Devanagari:]",
+                "[\u0904\u0951-\u0954\u0943-\u0949\u094a\u0962\u0963\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u0950\u0958\u0959\u095a\u095b\u095e\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-BENGALI",
+           "[:Devanagari:]", "[:BENGALI:]",
+                  "[\u09D7\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u0950\u0958\u0959\u095a\u095b\u095e\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-DEVANAGARI",
+          "[:GURMUKHI:]", "[:Devanagari:]",
+                "[\u0904\u0902\u0936\u0933\u0951-\u0954\u0902\u0903\u0943-\u0949\u094a\u0962\u0963\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GURMUKHI",
+           "[:Devanagari:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0946\u0A5C\u0951-\u0954\u0A70\u0A71\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-DEVANAGARI",
+          "[:GUJARATI:]", "[:Devanagari:]",
+                "[\u0904\u0946\u094A\u0962\u0963\u0951-\u0954\u0961\u090c\u090e\u0912\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GUJARATI",
+           "[:Devanagari:]", "[:GUJARATI:]",
+                  "[\u0951-\u0954\u0961\u090c\u090e\u0912]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-DEVANAGARI",
+          "[:ORIYA:]", "[:Devanagari:]",
+                "[\u0904\u0912\u0911\u090D\u090e\u0931\u0943-\u094a\u0962\u0963\u0951-\u0954\u0950\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-ORIYA",
+           "[:Devanagari:]", "[:ORIYA:]",
+                  "[\u0b5f\u0b56\u0b57\u0b70\u0b71\u0950\u090D\u090e\u0912\u0911\u0931]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-DEVANAGARI",
+          "[:tamil:]", "[:Devanagari:]",
+                  "[\u0901\u0904\u093c\u0943-\u094a\u0951-\u0954\u0962\u0963\u090B\u090C\u090D\u0911\u0916\u0917\u0918\u091B\u091D\u0920\u0921\u0922\u0925\u0926\u0927\u092B\u092C\u092D\u0936\u093d\u0950[\u0958-\u0961]\u097d]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "DEVANAGARI-Tamil",
+           "[:Devanagari:]", "[:tamil:]",
+                  "[\u0bd7\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-DEVANAGARI",
+          "[:telugu:]", "[:Devanagari:]",
+                "[\u0904\u093c\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-TELUGU",
+           "[:Devanagari:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-DEVANAGARI",
+          "[:KANNADA:]", "[:Devanagari:]",
+                "[\u0901\u0904\u0946\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-KANNADA",
+           "[:Devanagari:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cde\u0cd5\u0cd6\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-DEVANAGARI",
+          "[:MALAYALAM:]", "[:Devanagari:]",
+                "[\u0901\u0904\u094a\u094b\u094c\u093c\u0950\u0944\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-MALAYALAM",
+           "[:Devanagari:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-BENGALI",
+          "[:GURMUKHI:]", "[:BENGALI:]",
+                "[\u0982\u09b6\u09e2\u09e3\u09c3\u09c4\u09d7\u098B\u098C\u09B7\u09E0\u09E1\u09F0\u09F1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GURMUKHI",
+           "[:BENGALI:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0a5c\u0a47\u0a70\u0a71\u0A33\u0A35\u0A59\u0A5A\u0A5B\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-BENGALI",
+          "[:GUJARATI:]", "[:BENGALI:]",
+                "[\u09d7\u09e2\u09e3\u098c\u09e1\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GUJARATI",
+           "[:BENGALI:]", "[:GUJARATI:]",
+                  "[\u0A82\u0a83\u0Ac9\u0Ac5\u0ac7\u0A8D\u0A91\u0AB3\u0AB5\u0ABD\u0AD0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-BENGALI",
+          "[:ORIYA:]", "[:BENGALI:]",
+                "[\u09c4\u09e2\u09e3\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-ORIYA",
+           "[:BENGALI:]", "[:ORIYA:]",
+                  "[\u0b35\u0b71\u0b5f\u0b56\u0b33\u0b3d]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-BENGALI",
+          "[:tamil:]", "[:BENGALI:]",
+                  "[\u0981\u09bc\u09c3\u09c4\u09e2\u09e3\u09f0\u09f1\u098B\u098C\u0996\u0997\u0998\u099B\u099D\u09A0\u09A1\u09A2\u09A5\u09A6\u09A7\u09AB\u09AC\u09AD\u09B6\u09DC\u09DD\u09DF\u09E0\u09E1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "BENGALI-Tamil",
+           "[:BENGALI:]", "[:tamil:]",
+                  "[\u0bc6\u0bc7\u0bca\u0B8E\u0B92\u0BA9\u0BB1\u0BB3\u0BB4\u0BB5\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-BENGALI",
+          "[:telugu:]", "[:BENGALI:]",
+                "[\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-TELUGU",
+           "[:BENGALI:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0c47\u0c46\u0c4a\u0C0E\u0C12\u0C31\u0C33\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-BENGALI",
+          "[:KANNADA:]", "[:BENGALI:]",
+                "[\u0981\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-KANNADA",
+           "[:BENGALI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc6\u0cca\u0cd5\u0cd6\u0cc7\u0C8E\u0C92\u0CB1\u0cb3\u0cb5\u0cde]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-BENGALI",
+          "[:MALAYALAM:]", "[:BENGALI:]",
+                "[\u0981\u09e2\u09e3\u09bc\u09c4\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-MALAYALAM",
+           "[:BENGALI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d47\u0d31-\u0d35\u0d0e\u0d12]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-GURMUKHI",
+          "[:GUJARATI:]", "[:GURMUKHI:]",
+                "[\u0A02\u0ab3\u0ab6\u0A70\u0a71\u0a82\u0a83\u0ac3\u0ac4\u0ac5\u0ac9\u0a5c\u0a72\u0a73\u0a74\u0a8b\u0a8d\u0a91\u0abd]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-GUJARATI",
+           "[:GURMUKHI:]", "[:GUJARATI:]",
+                  "[\u0a5c\u0A70\u0a71\u0a72\u0a73\u0a74\u0a82\u0a83\u0a8b\u0a8c\u0a8d\u0a91\u0ab3\u0ab6\u0ab7\u0abd\u0ac3\u0ac4\u0ac5\u0ac9\u0ad0\u0ae0\u0ae1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-GURMUKHI",
+          "[:ORIYA:]", "[:GURMUKHI:]",
+                "[\u0A02\u0a5c\u0a21\u0a47\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61\u0a35\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-ORIYA",
+           "[:GURMUKHI:]", "[:ORIYA:]",
+                  "[\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GURMUKHI",
+          "[:TAMIL:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0a47\u0A16\u0A17\u0A18\u0A1B\u0A1D\u0A20\u0A21\u0A22\u0A25\u0A26\u0A27\u0A2B\u0A2C\u0A2D\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TAMIL",
+           "[:GURMUKHI:]", "[:TAMIL:]",
+                  "[\u0b82\u0bc6\u0bca\u0bd7\u0bb7\u0bb3\u0b83\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0bb6\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GURMUKHI",
+          "[:TELUGU:]", "[:GURMUKHI:]",
+                "[\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TELUGU",
+           "[:GURMUKHI:]", "[:TELUGU:]",
+                  "[\u0c02\u0c03\u0c33\u0c36\u0c44\u0c43\u0c46\u0c4a\u0c56\u0c55\u0C0B\u0C0C\u0C0E\u0C12\u0C31\u0C37\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "KANNADA-GURMUKHI",
+          "[:KANNADA:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-KANNADA",
+           "[:GURMUKHI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0c82\u0c83\u0cb3\u0cb6\u0cc4\u0cc3\u0cc6\u0cca\u0cd5\u0cd6\u0C8B\u0C8C\u0C8E\u0C92\u0CB1\u0CB7\u0cbd\u0CE0\u0CE1\u0cde]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GURMUKHI",
+          "[:MALAYALAM:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a4b\u0a4c\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-MALAYALAM",
+           "[:GURMUKHI:]", "[:MALAYALAM:]",
+                  "[\u0d02\u0d03\u0d33\u0d36\u0d43\u0d46\u0d4a\u0d4c\u0d57\u0D0B\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D37\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-ORIYA",
+          "[:GUJARATI:]", "[:ORIYA:]",
+                "[\u0b56\u0b57\u0B0C\u0B5F\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-GUJARATI",
+           "[:ORIYA:]", "[:GUJARATI:]",
+                  "[\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8D\u0A91\u0AB5\u0Ad0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GUJARATI",
+          "[:TAMIL:]", "[:GUJARATI:]",
+                "[\u0A81\u0a8c\u0abc\u0ac3\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8B\u0A8D\u0A91\u0A96\u0A97\u0A98\u0A9B\u0A9D\u0AA0\u0AA1\u0AA2\u0AA5\u0AA6\u0AA7\u0AAB\u0AAC\u0AAD\u0AB6\u0ABD\u0AD0\u0AE0\u0AE1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TAMIL",
+           "[:GUJARATI:]", "[:TAMIL:]",
+                  "[\u0Bc6\u0Bca\u0Bd7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GUJARATI",
+          "[:TELUGU:]", "[:GUJARATI:]",
+                "[\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TELUGU",
+           "[:GUJARATI:]", "[:TELUGU:]",
+                  "[\u0c46\u0c4a\u0c55\u0c56\u0C0C\u0C0E\u0C12\u0C31\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-GUJARATI",
+          "[:KANNADA:]", "[:GUJARATI:]",
+                "[\u0A81\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-KANNADA",
+           "[:GUJARATI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc6\u0cca\u0cd5\u0cd6\u0C8C\u0C8E\u0C92\u0CB1\u0CDE\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GUJARATI",
+          "[:MALAYALAM:]", "[:GUJARATI:]",
+                "[\u0A81\u0ac4\u0acb\u0acc\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-MALAYALAM",
+           "[:GUJARATI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d4c\u0d55\u0d57\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-ORIYA",
+          "[:TAMIL:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b43\u0b56\u0B0B\u0B0C\u0B16\u0B17\u0B18\u0B1B\u0B1D\u0B20\u0B21\u0B22\u0B25\u0B26\u0B27\u0B2B\u0B2C\u0B2D\u0B36\u0B3D\u0B5C\u0B5D\u0B5F\u0B60\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TAMIL",
+           "[:ORIYA:]", "[:TAMIL:]",
+                  "[\u0bc6\u0bca\u0bc7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0BB5\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-ORIYA",
+          "[:TELUGU:]", "[:ORIYA:]",
+                "[\u0b3c\u0b57\u0b56\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TELUGU",
+           "[:ORIYA:]", "[:TELUGU:]",
+                  "[\u0c44\u0c46\u0c4a\u0c55\u0c47\u0C0E\u0C12\u0C31\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-ORIYA",
+          "[:KANNADA:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b57\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-KANNADA",
+           "[:ORIYA:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc4\u0cc6\u0cca\u0cd5\u0cc7\u0C8E\u0C92\u0CB1\u0CB5\u0CDE]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-ORIYA",
+          "[:MALAYALAM:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b56\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-MALAYALAM",
+           "[:ORIYA:]", "[:MALAYALAM:]",
+                  "[\u0D47\u0D46\u0D4a\u0D0E\u0D12\u0D31\u0D34\u0D35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-TAMIL",
+          "[:TELUGU:]", "[:TAMIL:]",
+                "[\u0bd7\u0ba9\u0bb4\u0BF0\u0BF1\u0BF2\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-TELUGU",
+           "[:TAMIL:]", "[:TELUGU:]",
+                  "[\u0C01\u0c43\u0c44\u0c46\u0c47\u0c55\u0c56\u0c66\u0C0B\u0C0C\u0C16\u0C17\u0C18\u0C1B\u0C1D\u0C20\u0C21\u0C22\u0C25\u0C26\u0C27\u0C2B\u0C2C\u0C2D\u0C36\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TAMIL",
+          "[:KANNADA:]", "[:TAMIL:]",
+                "[\u0bd7\u0bc6\u0ba9\u0bb4\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-KANNADA",
+           "[:TAMIL:]", "[:KANNADA:]",
+                  "[\u0cc3\u0cc4\u0cc6\u0cc7\u0cd5\u0cd6\u0C8B\u0C8C\u0C96\u0C97\u0C98\u0C9B\u0C9D\u0CA0\u0CA1\u0CA2\u0CA5\u0CA6\u0CA7\u0CAB\u0CAC\u0CAD\u0CB6\u0cbc\u0cbd\u0CDE\u0CE0\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TAMIL",
+          "[:MALAYALAM:]", "[:TAMIL:]",
+                "[\u0ba9\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-MALAYALAM",
+           "[:TAMIL:]", "[:MALAYALAM:]",
+                  "[\u0d43\u0d12\u0D0B\u0D0C\u0D16\u0D17\u0D18\u0D1B\u0D1D\u0D20\u0D21\u0D22\u0D25\u0D26\u0D27\u0D2B\u0D2C\u0D2D\u0D36\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TELUGU",
+          "[:KANNADA:]", "[:TELUGU:]",
+                "[\u0C01\u0c3f\u0c46\u0c48\u0c4a]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-KANNADA",
+           "[:TELUGU:]", "[:KANNADA:]",
+                  "[\u0cc8\u0cd5\u0cd6\u0CDE\u0cbc\u0cbd]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TELUGU",
+          "[:MALAYALAM:]", "[:TELUGU:]",
+                "[\u0C01\u0c44\u0c4a\u0c4c\u0c4b\u0c55\u0c56]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-MALAYALAM",
+           "[:TELUGU:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0D34]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-KANNADA",
+          "[:MALAYALAM:]", "[:KANNADA:]",
+                "[\u0cbc\u0cbd\u0cc4\u0cc6\u0cca\u0ccc\u0ccb\u0cd5\u0cd6\u0cDe]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Bengali",
+            latinForIndic, "[[:Bengali:][\u0964\u0965]]",
+               "[\u0965\u09f0-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gurmukhi",
+           latinForIndic, "[[:Gurmukhi:][\u0964\u0965]]",
+               "[\u0a01\u0a02\u0965\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gujarati",
+            latinForIndic, "[[:Gujarati:][\u0964\u0965]]",
+               "[\u0965]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Oriya",
+            latinForIndic, "[[:Oriya:][\u0964\u0965]]",
+               "[\u0965\u0b70]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Tamil",
+            latinForIndic, "[:Tamil:]",
+               "[\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Telugu",
+            latinForIndic, "[:Telugu:]",
+               null, /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Kannada",
+            latinForIndic, "[:Kannada:]",
+               null, /*roundtrip exclusions*/
+                },
+         new String [] {  "Latin-Malayalam",
+           latinForIndic, "[:Malayalam:]",
+               null, /*roundtrip exclusions*/
+                },
+        };
+
+    public void TestInterIndic() throws Exception{
+        long start = System.currentTimeMillis();
+        int num = interIndicArray.length;
+        if (isQuick()) {
+            logln("Testing only 5 of "+ interIndicArray.length+" Skipping rest (use -e for exhaustive)");
+            num = 5;
+        }
+        if (skipIfBeforeICU(4,1,1)) {
+            logln("Warning: TestInterIndic needs to be updated to remove delete the section marked [:Age=4.1:] filter");
+        } else {
+//          We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.4.
+            errln("FAIL: TestInterIndic needs to be updated to remove delete the [:Age=4.1:] filter ");
+            return;
+        }
+        for(int i=0; i<num;i++){
+            logln("Testing " + interIndicArray[i][0] + " at index " + i   );
+            /*TODO: uncomment the line below when the transliterator is fixed
+            new Test(interIndicArray[i][0], 50)
+                .test(interIndicArray[i][1],
+                      interIndicArray[i][2],
+                      interIndicArray[i][3],
+                      this, new LegalIndic());
+            */
+            /* comment lines below  when transliterator is fixed */
+            // start
+            new Test(interIndicArray[i][0], 50)
+            .test("["+interIndicArray[i][1]+" &[:Age=4.1:]]",
+                  "["+interIndicArray[i][2]+" &[:Age=4.1:]]",
+                  interIndicArray[i][3],
+                  this, new LegalIndic());
+            //end
+        }
+        showElapsed(start, "TestInterIndic");
+    }
+
+    //---------------
+    // End Indic
+    //---------------
+
+    public static class Legal {
+        public boolean is(String sourceString) {return true;}
+    }
+
+    public static class LegalJamo extends Legal {
+        // any initial must be followed by a medial (or initial)
+        // any medial must follow an initial (or medial)
+        // any final must follow a medial (or final)
+
+        public boolean is(String sourceString) {
+            try {
+                int t;
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+                for (int i = 0; i < decomp.length(); ++i) { // don't worry about surrogates
+                    switch (getType(decomp.charAt(i))) {
+                    case 0:
+                        t = getType(decomp.charAt(i+1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 1:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 2:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 1 && t != 2) return false;
+                        break;
+                    }
+                }
+                return true;
+            } catch (StringIndexOutOfBoundsException e) {
+                return false;
+            }
+        }
+
+        public int getType(char c) {
+            if ('\u1100' <= c && c <= '\u1112') return 0;
+            else if ('\u1161' <= c && c  <= '\u1175') return 1;
+            else if ('\u11A8' <= c && c  <= '\u11C2') return 2;
+            return -1; // other
+        }
+    }
+
+    //static BreakIterator thaiBreak = BreakIterator.getWordInstance(new Locale("th", "TH"));
+    // anything is legal except word ending with Logical-order-exception
+    public static class LegalThai extends Legal {
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            char ch = sourceString.charAt(sourceString.length() - 1); // don't worry about surrogates.
+            if (UCharacter.hasBinaryProperty(ch, UProperty.LOGICAL_ORDER_EXCEPTION)) return false;
+
+
+            // disallow anything with a wordbreak between
+            /*
+            if (UTF16.countCodePoint(sourceString) <= 1) return true;
+            thaiBreak.setText(sourceString);
+            for (int pos = thaiBreak.first(); pos != BreakIterator.DONE; pos = thaiBreak.next()) {
+                if (pos > 0 && pos < sourceString.length()) {
+                    System.out.println("Skipping " + Utility.escape(sourceString));
+                    return false;
+                }
+            }
+            */
+            return true;
+        }
+    }
+
+    // anything is legal except that Final letters can't be followed by letter; NonFinal must be
+    public static class LegalHebrew extends Legal {
+        static UnicodeSet FINAL = new UnicodeSet("[\u05DA\u05DD\u05DF\u05E3\u05E5]");
+        static UnicodeSet NON_FINAL = new UnicodeSet("[\u05DB\u05DE\u05E0\u05E4\u05E6]");
+        static UnicodeSet LETTER = new UnicodeSet("[:letter:]");
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            // don't worry about surrogates.
+            for (int i = 0; i < sourceString.length(); ++i) {
+                char ch = sourceString.charAt(i);
+                char next = i+1 == sourceString.length() ? '\u0000' : sourceString.charAt(i);
+                if (FINAL.contains(ch)) {
+                    if (LETTER.contains(next)) return false;
+                } else if (NON_FINAL.contains(ch)) {
+                    if (!LETTER.contains(next)) return false;
+                }
+            }
+            return true;
+        }
+    }
+
+
+    public static class LegalGreek extends Legal {
+
+        boolean full;
+
+        public LegalGreek(boolean full) {
+            this.full = full;
+        }
+
+        static final char IOTA_SUBSCRIPT = '\u0345';
+        static final UnicodeSet breathing = new UnicodeSet("[\\u0313\\u0314']");
+        static final UnicodeSet validSecondVowel = new UnicodeSet("[\\u03C5\\u03B9\\u03A5\\u0399]");
+
+        public static boolean isVowel(char c) {
+            return "\u03B1\u03B5\u03B7\u03B9\u03BF\u03C5\u03C9\u0391\u0395\u0397\u0399\u039F\u03A5\u03A9".indexOf(c) >= 0;
+        }
+
+        public static boolean isRho(char c) {
+            return "\u03C1\u03A1".indexOf(c) >= 0;
+        }
+
+        public boolean is(String sourceString) {
+            try {
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+
+                // modern is simpler: don't care about anything but a grave
+                if (!full) {
+                    //if (sourceString.equals("\u039C\u03C0")) return false;
+                    for (int i = 0; i < decomp.length(); ++i) {
+                        char c = decomp.charAt(i);
+                        // exclude all the accents
+                        if (c == '\u0313' || c == '\u0314' || c == '\u0300' || c == '\u0302'
+                            || c == '\u0342' || c == '\u0345'
+                            ) return false;
+                    }
+                    return true;
+                }
+
+                // Legal full Greek has breathing marks IFF there is a vowel or RHO at the start
+                // IF it has them, it has exactly one.
+                // IF it starts with a RHO, then the breathing mark must come before the second letter.
+                // IF it starts with a vowel, then it must before the third letter.
+                //  it will only come after the second if of the format [vowel] [no iota subscript!] [upsilon or iota]
+                // Since there are no surrogates in greek, don't worry about them
+
+                boolean firstIsVowel = false;
+                boolean firstIsRho = false;
+                boolean noLetterYet = true;
+                int breathingCount = 0;
+                int letterCount = 0;
+                //int breathingPosition = -1;
+
+                for (int i = 0; i < decomp.length(); ++i) {
+                    char c = decomp.charAt(i);
+                    if (UCharacter.isLetter(c)) {
+                        ++letterCount;
+                        if (firstIsVowel && !validSecondVowel.contains(c) && breathingCount == 0) return false;
+                        if (noLetterYet) {
+                            noLetterYet = false;
+                            firstIsVowel = isVowel(c);
+                            firstIsRho = isRho(c);
+                        }
+                        if (firstIsRho && letterCount == 2 && breathingCount == 0) return false;
+                    }
+                    if (c == IOTA_SUBSCRIPT && firstIsVowel && breathingCount == 0) return false;
+                    if (breathing.contains(c)) {
+                       // breathingPosition = i;
+                        ++breathingCount;
+                    }
+                }
+
+                if (firstIsVowel || firstIsRho) return breathingCount == 1;
+                return breathingCount == 0;
+            } catch (Throwable t) {
+                System.out.println(t.getClass().getName() + " " + t.getMessage());
+                return true;
+            }
+        }
+    }
+
+    static class Test {
+
+        PrintWriter out;
+
+        private String transliteratorID;
+        private int errorLimit = 500;
+        private int errorCount = 0;
+        private int pairLimit  = 0x10000;
+        private int density = 100;
+        UnicodeSet sourceRange;
+        UnicodeSet targetRange;
+        UnicodeSet toSource;
+        UnicodeSet toTarget;
+        UnicodeSet roundtripExclusions;
+
+        RoundTripTest log;
+        Legal legalSource;
+        UnicodeSet badCharacters;
+
+        /*
+         * create a test for the given script transliterator.
+         */
+        Test(String transliteratorID) {
+            this(transliteratorID, 100);
+        }
+
+        Test(String transliteratorID, int dens) {
+            this.transliteratorID = transliteratorID;
+            this.density = dens;
+        }
+
+        public void setErrorLimit(int limit) {
+            errorLimit = limit;
+        }
+
+        public void setPairLimit(int limit) {
+            pairLimit = limit;
+        }
+
+        // Added to do better equality check.
+
+        public static boolean isSame(String a, String b) {
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            a = Normalizer.normalize(a, Normalizer.NFD);
+            b = Normalizer.normalize(b, Normalizer.NFD);
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            return false;
+        }
+
+        /*
+        public boolean includesSome(UnicodeSet set, String a) {
+            int cp;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                if (set.contains(cp)) return true;
+            }
+            return false;
+        }
+        */
+
+        public static boolean isCamel(String a) {
+            //System.out.println("CamelTest");
+            // see if string is of the form aB; e.g. lower, then upper or title
+            int cp;
+            boolean haveLower = false;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                int t = UCharacter.getType(cp);
+                //System.out.println("\t" + t + " " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                switch (t) {
+                    case Character.UPPERCASE_LETTER:
+                        if (haveLower) return true;
+                        break;
+                    case Character.TITLECASE_LETTER:
+                        if (haveLower) return true;
+                        // drop through, since second letter is lower.
+                    case Character.LOWERCASE_LETTER:
+                        haveLower = true;
+                        break;
+                }
+            }
+            //System.out.println("FALSE");
+            return false;
+        }
+
+        static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+        static final UnicodeSet neverOk = new UnicodeSet("[:Other:]");
+
+        public void test(String srcRange, String trgtRange,
+          String rdtripExclusions, RoundTripTest logger, Legal legalSrc)
+          throws java.io.IOException {
+            test(srcRange, trgtRange, srcRange, rdtripExclusions, logger, legalSrc);
+        }
+
+        /**
+         * Will test 
+         * that everything in sourceRange maps to targetRange,
+         * that everything in targetRange maps to backtoSourceRange
+         * that everything roundtrips from target -> source -> target, except roundtripExceptions
+         */
+        public void test(String srcRange, String trgtRange, String backtoSourceRange,
+          String rdtripExclusions, RoundTripTest logger, Legal legalSrc)
+          throws java.io.IOException {
+
+            legalSource = legalSrc;
+            sourceRange = new UnicodeSet(srcRange);
+            sourceRange.removeAll(neverOk);
+
+            targetRange = new UnicodeSet(trgtRange);
+            targetRange.removeAll(neverOk);
+
+            toSource = new UnicodeSet(backtoSourceRange);
+            toSource.addAll(okAnyway);
+
+            toTarget = new UnicodeSet(trgtRange);
+            toTarget.addAll(okAnyway);
+
+            if (rdtripExclusions != null && rdtripExclusions.length() > 0) {
+                roundtripExclusions = new UnicodeSet(rdtripExclusions);
+            }else{
+                roundtripExclusions = new UnicodeSet(); // empty
+            }
+
+            log = logger;
+
+            log.logln(Utility.escape("Source:  " + sourceRange));
+            log.logln(Utility.escape("Target:  " + targetRange));
+            log.logln(Utility.escape("Exclude: " + roundtripExclusions));
+            if (log.isQuick()) log.logln("Abbreviated Test");
+
+            badCharacters = new UnicodeSet("[:other:]");
+
+            // make a UTF-8 output file we can read with a browser
+
+            // note: check that every transliterator transliterates the null string correctly!
+
+        // {dlf} reorganize so can run test in protected security environment
+//              String logFileName = "test_" + transliteratorID.replace('/', '_') + ".html";
+
+//              File lf = new File(logFileName);
+//              log.logln("Creating log file " + lf.getAbsoluteFile());
+
+//              out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
+//                        new FileOutputStream(logFileName), "UTF8"), 4*1024));
+
+        ByteArrayOutputStream bast = new ByteArrayOutputStream();
+            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
+                      bast, "UTF8"), 4*1024));
+            //out.write('\uFFEF');    // BOM
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<BODY bgcolor='#FFFFFF' style='font-family: Arial Unicode MS'>");
+
+            try {
+                test2();
+            } catch (TestTruncated e) {
+                out.println(e.getMessage());
+            }
+            out.println("</BODY></HTML>");
+            out.close();
+
+            if (errorCount > 0) {
+        try {
+            String logFileName = "test_" + transliteratorID.replace('/', '_') + ".html";
+            File lf = new File(logFileName);
+            logger.logln("Creating log file " + lf.getAbsoluteFile());
+            FileOutputStream fos = new FileOutputStream(lf);
+            fos.write(bast.toByteArray());
+            fos.close();
+            logger.errln(transliteratorID + " errors: "
+                  + errorCount + (errorCount > errorLimit ? " (at least!)" : "")
+                  + ", see " + lf.getAbsoluteFile());
+        }
+        catch (SecurityException e) {
+            logger.errln(transliteratorID + " errors: "
+                  + errorCount + (errorCount > errorLimit ? " (at least!)" : "")
+                  + ", no log provided due to protected test domain");
+        }
+            } else {
+                logger.logln(transliteratorID + " ok");
+//                  new File(logFileName).delete();
+            }
+        }
+
+        // ok if at least one is not equal
+        public boolean checkIrrelevants(Transliterator t, String irrelevants) {
+            for (int i = 0; i < irrelevants.length(); ++i) {
+                char c = irrelevants.charAt(i);
+                String cs = UTF16.valueOf(c);
+                String targ = t.transliterate(cs);
+                if (cs.equals(targ)) return true;
+            }
+            return false;
+        }
+
+        public void test2() {
+
+            Transliterator sourceToTarget = Transliterator.getInstance(transliteratorID);
+            Transliterator targetToSource = sourceToTarget.getInverse();
+            AbbreviatedUnicodeSetIterator usi = new AbbreviatedUnicodeSetIterator();
+            AbbreviatedUnicodeSetIterator usi2 = new AbbreviatedUnicodeSetIterator();
+
+            log.logln("Checking that at least one irrevant characters is not NFC'ed");
+            out.println("<h3>Checking that at least one irrevant characters is not NFC'ed</h3>");
+
+            String irrelevants = "\u2000\u2001\u2126\u212A\u212B\u2329"; // string is from NFC_NO in the UCD
+
+            if (!checkIrrelevants(sourceToTarget, irrelevants)) {
+                logFails("Source-Target, Must not NFC everything");
+            }
+            if (!checkIrrelevants(targetToSource, irrelevants)) {
+                logFails("Target-Source, irrelevants");
+            }
+
+            if (EXTRA_TESTS) {
+                log.logln("Checking that toRules works");
+                String rules = "";
+                Transliterator sourceToTarget2;
+                Transliterator targetToSource2;
+                try {
+                    rules = sourceToTarget.toRules(false);
+                    sourceToTarget2 = Transliterator.createFromRules("s2t2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Forward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                    rules = targetToSource.toRules(false);
+                    targetToSource2 = Transliterator.createFromRules("t2s2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Backward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                } catch (RuntimeException e) {
+                    out.println("<h3>Broken Rules:</h3><p>");
+                    out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                    out.println("</p>");
+                    out.flush();
+                    throw e;
+                }
+
+               out.println("<h3>Roundtrip Exclusions: " + new UnicodeSet(roundtripExclusions) + "</h3>");
+               out.flush();
+
+              log.logln("Checking that source -> target -> source");
+              out.println("<h3>Checking that source -> target -> source</h3>");
+              
+              usi.reset(sourceRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+
+                    String cs = UTF16.valueOf(c);
+                    String targ = sourceToTarget.transliterate(cs);
+                    String targ2 = sourceToTarget2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Source-Target, toRules", cs, targ, targ2);
+                    }
+                }
+
+                log.logln("Checking that target -> source -> target");
+                out.println("<h3>Checking that target -> source -> target</h3>");
+               usi.reset(targetRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+
+                    String cs = UTF16.valueOf(c);
+                    String targ = targetToSource.transliterate(cs);
+                    String targ2 = targetToSource2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Target-Source, toRules", cs, targ, targ2);
+                    }
+                }
+            }
+
+
+            log.logln("Checking that source characters convert to target - Singles");
+            out.println("<h3>Checking that source characters convert to target - Singles</h3>");
+
+            UnicodeSet failSourceTarg = new UnicodeSet();
+
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (!sourceRange.contains(c)) continue;
+                */
+            usi.reset(sourceRange);
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                String cs = UTF16.valueOf(c);
+                String targ = sourceToTarget.transliterate(cs);
+                if (!toTarget.containsAll(targ)
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toTarget.containsAll(targD)
+                            || badCharacters.containsSome(targD)) {
+                        logWrongScript("Source-Target", cs, targ, toTarget, badCharacters);
+                        failSourceTarg.add(c);
+                        continue;
+                    }
+                }
+
+                String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                String targ2 = sourceToTarget.transliterate(cs2);
+                if (!targ.equals(targ2)) {
+                    logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                }
+            }
+
+            log.logln("Checking that source characters convert to target - Doubles");
+            out.println("<h3>Checking that source characters convert to target - Doubles</h3>");
+
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !sourceRange.contains(c)) continue;
+                if (failSourceTarg.get(c)) continue;
+
+            */
+
+            UnicodeSet sourceRangeMinusFailures = new UnicodeSet(sourceRange);
+            sourceRangeMinusFailures.removeAll(failSourceTarg);
+
+            boolean quickRt = log.getInclusion() < 10;
+
+            usi.reset(sourceRangeMinusFailures, quickRt, density);
+
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !sourceRange.contains(d)) continue;
+                    if (failSourceTarg.get(d)) continue;
+                */
+                usi2.reset(sourceRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = sourceToTarget.transliterate(cs);
+                    if (!toTarget.containsAll(targ)
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toTarget.containsAll(targD)
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Source-Target", cs, targ, toTarget, badCharacters);
+                            continue;
+                        }
+                    }
+                    String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                    String targ2 = sourceToTarget.transliterate(cs2);
+                    if (!targ.equals(targ2)) {
+                        logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                    }
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Singles");
+            out.println("<h3>Checking that target characters convert to source and back - Singles</h3>");
+
+            UnicodeSet failTargSource = new UnicodeSet();
+            UnicodeSet failRound = new UnicodeSet();
+
+            /*for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+
+            usi.reset(targetRange);
+            while (usi.next()) {
+                String cs;
+                int c;
+                if(usi.codepoint == UnicodeSetIterator.IS_STRING){
+                    cs = usi.string;
+                    c = UTF16.charAt(cs,0);
+                }else{
+                    c = usi.codepoint;
+                    cs =UTF16.valueOf(c);
+                }
+
+                String targ = targetToSource.transliterate(cs);
+                String reverse = sourceToTarget.transliterate(targ);
+
+                if (!toSource.containsAll(targ)
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toSource.containsAll(targD)
+                            || badCharacters.containsSome(targD)) {
+                                /*UnicodeSet temp = */new UnicodeSet().addAll(targD);
+                        logWrongScript("Target-Source", cs, targ, toSource, badCharacters);
+                        failTargSource.add(cs);
+                        continue;
+                    }
+                }
+                if (!isSame(cs, reverse) && !roundtripExclusions.contains(c)
+                    && !roundtripExclusions.contains(cs)) {
+                    logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                    failRound.add(c);
+                    continue;
+                }
+                String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                String reverse2 = sourceToTarget.transliterate(targ2);
+                if (!reverse.equals(reverse2)) {
+                    logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Doubles");
+            out.println("<h3>Checking that target characters convert to source and back - Doubles</h3>");
+            int count = 0;
+
+            UnicodeSet targetRangeMinusFailures = new UnicodeSet(targetRange);
+            targetRangeMinusFailures.removeAll(failTargSource);
+            targetRangeMinusFailures.removeAll(failRound);
+
+            //char[] buf = new char[4]; // maximum we can have with 2 code points
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+
+            usi.reset(targetRangeMinusFailures, quickRt, density);
+
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                if (++count > pairLimit) {
+                    throw new TestTruncated("Test truncated at " + pairLimit + " x 64k pairs");
+                }
+                //log.log(TestUtility.hex(c));
+
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !targetRange.contains(d)) continue;
+                        */
+                usi2.reset(targetRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+                    if (d < 0) break;
+
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = targetToSource.transliterate(cs);
+                    String reverse = sourceToTarget.transliterate(targ);
+
+                    if (!toSource.containsAll(targ) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toSource.containsAll(targD) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Target-Source", cs, targ, toSource, badCharacters);
+                            continue;
+                        }
+                    }
+                    if (!isSame(cs, reverse) /*&& !failRound.contains(c) && !failRound.contains(d)*/
+                         && !roundtripExclusions.contains(c)
+                         && !roundtripExclusions.contains(d)
+                         && !roundtripExclusions.contains(cs)) {
+                        logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                        continue;
+                    }
+                    String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                    String reverse2 = sourceToTarget.transliterate(targ2);
+                    if (!reverse.equals(reverse2)) {
+                        logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                    }
+                }
+            }
+            log.logln("");
+        }
+
+        final String info(String s) {
+            StringBuffer result = new StringBuffer();
+            result.append("\u200E").append(s).append("\u200E (").append(TestUtility.hex(s)).append("/");
+            if (false) { // append age, as a check
+                int cp = 0;    
+                for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                    cp = UTF16.charAt(s, i);
+                    if (i > 0) result.append(", ");
+                    result.append(UCharacter.getAge(cp));
+                }
+            }
+            result.append(")");
+            return result.toString();
+        }
+
+        final void logWrongScript(String label, String from, String to, 
+          UnicodeSet shouldContainAll, UnicodeSet shouldNotContainAny) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            String toD = Normalizer.normalize(to, Normalizer.NFD);
+            UnicodeSet temp = new UnicodeSet().addAll(toD);
+            UnicodeSet bad = new UnicodeSet(shouldNotContainAny).retainAll(temp)
+                .addAll(new UnicodeSet(temp).removeAll(shouldContainAll));
+
+            out.println("<br>Fail " + label + ": " +
+                        info(from) + " => " + info(to) + " " + bad
+                        );
+        }
+        
+        final void logNotCanonical(String label, String from, String to, String fromCan, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv) " + label + ": " +
+                        info(from) + " => " + info(to) +
+                        " -- " +
+                        info(fromCan) + " => " + info(toCan) + ")"
+                        );
+        }
+
+        final void logFails(String label) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv)" + label);
+        }
+
+        final void logToRulesFails(String label, String from, String to, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail " + label + ": " +
+                        info(from) + " => " + info(to) + ", " + info(toCan)
+                        );
+        }
+
+        final void logRoundTripFailure(String from,String toID, String to,String backID, String back) {
+            if (!legalSource.is(from)) return; // skip illegals
+
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail Roundtrip: " +
+                        info(from) + " "+toID+" => " + info(to) + " " + backID+" => " + info(back)
+                        );
+        }
+
+        /*
+         * Characters to filter for source-target mapping completeness
+         * Typically is base alphabet, minus extended characters
+         * Default is ASCII letters for Latin
+         */
+         /*
+        public boolean isSource(char c) {
+            if (!sourceRange.contains(c)) return false;
+            return true;
+        }
+        */
+
+        /*
+         * Characters to check for target back to source mapping.
+         * Typically the same as the target script, plus punctuation
+         */
+         /*
+        public boolean isReceivingSource(char c) {
+            if (!targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+        /*
+         * Characters to filter for target-source mapping
+         * Typically is base alphabet, minus extended characters
+         */
+         /*
+        public boolean isTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            if (script != targetScript) return false;
+            if (!TestUtility.isLetter(c)) return false;
+            if (targetRange != null && !targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+
+        /*
+         * Characters to check for target-source mapping
+         * Typically the same as the source script, plus punctuation
+         */
+        /*
+        public boolean isReceivingTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            return (script == targetScript || script == TestUtility.COMMON_SCRIPT);
+        }
+
+        final boolean isSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+        */
+
+        static class TestTruncated extends RuntimeException {
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 3361828190488168323L;
+
+            TestTruncated(String msg) {
+                super(msg);
+            }
+        }
+    }
+
+//  static class TestHangul extends Test {
+//      TestHangul () {
+//          super("Jamo-Hangul", TestUtility.JAMO_SCRIPT, TestUtility.HANGUL_SCRIPT);
+//      }
+//
+//      public boolean isSource(char c) {
+//          if (0x1113 <= c && c <= 0x1160) return false;
+//          if (0x1176 <= c && c <= 0x11F9) return false;
+//          if (0x3131 <= c && c <= 0x318E) return false;
+//          return super.isSource(c);
+//      }
+//  }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TestAll.java b/src/com/ibm/icu/dev/test/translit/TestAll.java
new file mode 100644
index 0000000..3541145
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TestAll.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "TransliteratorTest",
+            "UnicodeSetTest",
+            "CompoundTransliteratorTest",
+            "JamoTest",
+            "ErrorTest",
+            "RoundTripTest",
+            "ReplaceableTest",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Translit";
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TestUtility.java b/src/com/ibm/icu/dev/test/translit/TestUtility.java
new file mode 100644
index 0000000..9bf23ce
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TestUtility.java
@@ -0,0 +1,444 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.text.*;
+
+public final class TestUtility {
+
+    public static String hex(char ch) {
+        String foo = Integer.toString(ch,16).toUpperCase();
+        return "0000".substring(0,4-foo.length()) + foo;
+    }
+    
+    public static String hex(int ch) {
+        String foo = Integer.toString(ch,16).toUpperCase();
+        return "00000000".substring(0,4-foo.length()) + foo;
+    }
+    
+    public static String hex(String s) {
+      return hex(s,",");
+    }
+    
+    public static String hex(String s, String sep) {
+      if (s.length() == 0) return "";
+      String result = hex(s.charAt(0));
+      for (int i = 1; i < s.length(); ++i) {
+        result += sep;
+        result += hex(s.charAt(i));
+      }
+      return result;
+    }
+    
+    public static String replace(String source, String toBeReplaced, String replacement) {
+        StringBuffer results = new StringBuffer();
+        int len = toBeReplaced.length();
+        for (int i = 0; i < source.length(); ++i) {
+            if (source.regionMatches(false, i, toBeReplaced, 0, len)) {
+                results.append(replacement);
+                i += len - 1; // minus one, since we will increment
+            } else {
+                results.append(source.charAt(i));
+            }
+        }
+        return results.toString();
+    }
+    
+    public static String replaceAll(String source, UnicodeSet set, String replacement) {
+        StringBuffer results = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source,i);
+            if (set.contains(cp)) {
+                results.append(replacement);
+            } else {
+                UTF16.append(results, cp);
+            }
+        }
+        return results.toString();
+    }
+    
+    // COMMENTED OUT ALL THE OLD SCRIPT STUFF
+    /*
+    public static byte getScript(char c) {
+      return getScript(getBlock(c));
+    }
+    
+    public static byte getScript(byte block) {
+      return blockToScript[block];
+    }
+    
+    public static byte getBlock(char c) {
+      int index = c >> 7;
+      byte block = charToBlock[index];
+      while (block < 0) { // take care of exceptions, blocks split across 128 boundaries
+          int[] tuple = split[-block-1];
+          if (c < tuple[0]) block = (byte)tuple[1];
+          else block = (byte)tuple[2];
+      }
+      return block;
+    }
+               
+    // returns next letter of script, or 0xFFFF if done
+    
+    public static char getNextLetter(char c, byte script) {
+        while (c < 0xFFFF) {
+            ++c;
+            if (getScript(c) == script && Character.isLetter(c)) {
+                return c;
+            }
+        }
+        return c;
+    }
+    
+    // Supplements to Character methods; these methods go through
+    // UCharacter if possible.  If not, they fall back to Character.
+
+    public static boolean isUnassigned(char c) {
+        try {
+            return UCharacter.getType(c) == UCharacterCategory.UNASSIGNED;
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.getType(c) == Character.UNASSIGNED;
+    }
+
+    public static boolean isLetter(char c) {
+        try {
+            return UCharacter.isLetter(c);
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.isLetter(c);
+    }
+
+  public static void main(String[] args) {
+    System.out.println("Blocks: ");
+    byte lastblock = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte block = TestUtility.getBlock(cc);
+      if (block != lastblock) {
+        System.out.println(TestUtility.hex(cc) + "\t" + block);
+        lastblock = block;
+      }
+    }
+    System.out.println();
+    System.out.println("Scripts: ");
+    byte lastScript = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte script = TestUtility.getScript(cc);
+      if (script != lastScript) {
+        System.out.println(TestUtility.hex(cc) + "\t" + script);
+        lastScript = script;
+      }
+    }
+  }
+      
+    
+    
+    public static final byte // SCRIPT CODE
+        COMMON_SCRIPT = 0,
+        LATIN_SCRIPT = 1,
+        GREEK_SCRIPT = 2,
+        CYRILLIC_SCRIPT = 3,
+        ARMENIAN_SCRIPT = 4,
+        HEBREW_SCRIPT = 5,
+        ARABIC_SCRIPT = 6,
+        SYRIAC_SCRIPT = 7,
+        THAANA_SCRIPT = 8, 
+        DEVANAGARI_SCRIPT = 9,
+        BENGALI_SCRIPT = 10,
+        GURMUKHI_SCRIPT = 11,
+        GUJARATI_SCRIPT = 12,
+        ORIYA_SCRIPT = 13,
+        TAMIL_SCRIPT = 14,
+        TELUGU_SCRIPT = 15,
+        KANNADA_SCRIPT = 16,
+        MALAYALAM_SCRIPT = 17,
+        SINHALA_SCRIPT = 18,
+        THAI_SCRIPT = 19,
+        LAO_SCRIPT = 20,
+        TIBETAN_SCRIPT = 21,
+        MYANMAR_SCRIPT = 22,
+        GEORGIAN_SCRIPT = 23,
+        JAMO_SCRIPT = 24,
+        HANGUL_SCRIPT = 25,
+        ETHIOPIC_SCRIPT = 26,
+        CHEROKEE_SCRIPT = 27,
+        ABORIGINAL_SCRIPT = 28,
+        OGHAM_SCRIPT = 29,
+        RUNIC_SCRIPT = 30,
+        KHMER_SCRIPT = 31,
+        MONGOLIAN_SCRIPT = 32,
+        HIRAGANA_SCRIPT = 33,
+        KATAKANA_SCRIPT = 34,
+        BOPOMOFO_SCRIPT = 35,
+        HAN_SCRIPT = 36,
+        YI_SCRIPT = 37;
+    
+    public static final byte // block code
+        RESERVED_BLOCK = 0,
+        BASIC_LATIN = 1,
+        LATIN_1_SUPPLEMENT = 2,
+        LATIN_EXTENDED_A = 3,
+        LATIN_EXTENDED_B = 4,
+        IPA_EXTENSIONS = 5,
+        SPACING_MODIFIER_LETTERS = 6,
+        COMBINING_DIACRITICAL_MARKS = 7,
+        GREEK = 8,
+        CYRILLIC = 9,
+        ARMENIAN = 10,
+        HEBREW = 11,
+        ARABIC = 12,
+        SYRIAC = 13,
+        THAANA = 14,
+        DEVANAGARI = 15,
+        BENGALI = 16,
+        GURMUKHI = 17,
+        GUJARATI = 18,
+        ORIYA = 19,
+        TAMIL = 20,
+        TELUGU = 21,
+        KANNADA = 22,
+        MALAYALAM = 23,
+        SINHALA = 24,
+        THAI = 25,
+        LAO = 26,
+        TIBETAN = 27,
+        MYANMAR = 28,
+        GEORGIAN = 29,
+        HANGUL_JAMO = 30,
+        ETHIOPIC = 31,
+        CHEROKEE = 32,
+        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 33,
+        OGHAM = 34,
+        RUNIC = 35,
+        KHMER = 36,
+        MONGOLIAN = 37,
+        LATIN_EXTENDED_ADDITIONAL = 38,
+        GREEK_EXTENDED = 39,
+        GENERAL_PUNCTUATION = 40,
+        SUPERSCRIPTS_AND_SUBSCRIPTS = 41,
+        CURRENCY_SYMBOLS = 42,
+        COMBINING_MARKS_FOR_SYMBOLS = 43,
+        LETTERLIKE_SYMBOLS = 44,
+        NUMBER_FORMS = 45,
+        ARROWS = 46,
+        MATHEMATICAL_OPERATORS = 47,
+        MISCELLANEOUS_TECHNICAL = 48,
+        CONTROL_PICTURES = 49,
+        OPTICAL_CHARACTER_RECOGNITION = 50,
+        ENCLOSED_ALPHANUMERICS = 51,
+        BOX_DRAWING = 52,
+        BLOCK_ELEMENTS = 53,
+        GEOMETRIC_SHAPES = 54,
+        MISCELLANEOUS_SYMBOLS = 55,
+        DINGBATS = 56,
+        BRAILLE_PATTERNS = 57,
+        CJK_RADICALS_SUPPLEMENT = 58,
+        KANGXI_RADICALS = 59,
+        IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 60,
+        CJK_SYMBOLS_AND_PUNCTUATION = 61,
+        HIRAGANA = 62,
+        KATAKANA = 63,
+        BOPOMOFO = 64,
+        HANGUL_COMPATIBILITY_JAMO = 65,
+        KANBUN = 66,
+        BOPOMOFO_EXTENDED = 67,
+        ENCLOSED_CJK_LETTERS_AND_MONTHS = 68,
+        CJK_COMPATIBILITY = 69,
+        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 70,
+        CJK_UNIFIED_IDEOGRAPHS = 71,
+        YI_SYLLABLES = 72,
+        YI_RADICALS = 73,
+        HANGUL_SYLLABLES = 74,
+        HIGH_SURROGATES = 75,
+        HIGH_PRIVATE_USE_SURROGATES = 76,
+        LOW_SURROGATES = 77,
+        PRIVATE_USE = 78,
+        CJK_COMPATIBILITY_IDEOGRAPHS = 79,
+        ALPHABETIC_PRESENTATION_FORMS = 80,
+        ARABIC_PRESENTATION_FORMS_A = 81,
+        COMBINING_HALF_MARKS = 82,
+        CJK_COMPATIBILITY_FORMS = 83,
+        SMALL_FORM_VARIANTS = 84,
+        ARABIC_PRESENTATION_FORMS_B = 85,
+        SPECIALS = 86,
+        HALFWIDTH_AND_FULLWIDTH_FORMS = 87;
+        
+    static final byte[] blockToScript = {
+        COMMON_SCRIPT, // 0, <RESERVED_BLOCK>
+        LATIN_SCRIPT, // 1, BASIC_LATIN
+        LATIN_SCRIPT, // 2, LATIN_1_SUPPLEMENT
+        LATIN_SCRIPT, // 3, LATIN_EXTENDED_A
+        LATIN_SCRIPT, // 4, LATIN_EXTENDED_B
+        LATIN_SCRIPT, // 5, IPA_EXTENSIONS
+        COMMON_SCRIPT, // 6, SPACING_MODIFIER_LETTERS
+        COMMON_SCRIPT, // 7, COMBINING_DIACRITICAL_MARKS
+        GREEK_SCRIPT, // 8, GREEK
+        CYRILLIC_SCRIPT, // 9, CYRILLIC
+        ARMENIAN_SCRIPT, // 10, ARMENIAN
+        HEBREW_SCRIPT, // 11, HEBREW
+        ARABIC_SCRIPT, // 12, ARABIC
+        SYRIAC_SCRIPT, // 13, SYRIAC
+        THAANA_SCRIPT, // 14, THAANA
+        DEVANAGARI_SCRIPT, // 15, DEVANAGARI
+        BENGALI_SCRIPT, // 16, BENGALI
+        GURMUKHI_SCRIPT, // 17, GURMUKHI
+        GUJARATI_SCRIPT, // 18, GUJARATI
+        ORIYA_SCRIPT, // 19, ORIYA
+        TAMIL_SCRIPT, // 20, TAMIL
+        TELUGU_SCRIPT, // 21, TELUGU
+        KANNADA_SCRIPT, // 22, KANNADA
+        MALAYALAM_SCRIPT, // 23, MALAYALAM
+        SINHALA_SCRIPT, // 24, SINHALA
+        THAI_SCRIPT, // 25, THAI
+        LAO_SCRIPT, // 26, LAO
+        TIBETAN_SCRIPT, // 27, TIBETAN
+        MYANMAR_SCRIPT, // 28, MYANMAR
+        GEORGIAN_SCRIPT, // 29, GEORGIAN
+        JAMO_SCRIPT, // 30, HANGUL_JAMO
+        ETHIOPIC_SCRIPT, // 31, ETHIOPIC
+        CHEROKEE_SCRIPT, // 32, CHEROKEE
+        ABORIGINAL_SCRIPT, // 33, UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
+        OGHAM_SCRIPT, // 34, OGHAM
+        RUNIC_SCRIPT, // 35, RUNIC
+        KHMER_SCRIPT, // 36, KHMER
+        MONGOLIAN_SCRIPT, // 37, MONGOLIAN
+        LATIN_SCRIPT, // 38, LATIN_EXTENDED_ADDITIONAL
+        GREEK_SCRIPT, // 39, GREEK_EXTENDED
+        COMMON_SCRIPT, // 40, GENERAL_PUNCTUATION
+        COMMON_SCRIPT, // 41, SUPERSCRIPTS_AND_SUBSCRIPTS
+        COMMON_SCRIPT, // 42, CURRENCY_SYMBOLS
+        COMMON_SCRIPT, // 43, COMBINING_MARKS_FOR_SYMBOLS
+        COMMON_SCRIPT, // 44, LETTERLIKE_SYMBOLS
+        COMMON_SCRIPT, // 45, NUMBER_FORMS
+        COMMON_SCRIPT, // 46, ARROWS
+        COMMON_SCRIPT, // 47, MATHEMATICAL_OPERATORS
+        COMMON_SCRIPT, // 48, MISCELLANEOUS_TECHNICAL
+        COMMON_SCRIPT, // 49, CONTROL_PICTURES
+        COMMON_SCRIPT, // 50, OPTICAL_CHARACTER_RECOGNITION
+        COMMON_SCRIPT, // 51, ENCLOSED_ALPHANUMERICS
+        COMMON_SCRIPT, // 52, BOX_DRAWING
+        COMMON_SCRIPT, // 53, BLOCK_ELEMENTS
+        COMMON_SCRIPT, // 54, GEOMETRIC_SHAPES
+        COMMON_SCRIPT, // 55, MISCELLANEOUS_SYMBOLS
+        COMMON_SCRIPT, // 56, DINGBATS
+        COMMON_SCRIPT, // 57, BRAILLE_PATTERNS
+        HAN_SCRIPT, // 58, CJK_RADICALS_SUPPLEMENT
+        HAN_SCRIPT, // 59, KANGXI_RADICALS
+        HAN_SCRIPT, // 60, IDEOGRAPHIC_DESCRIPTION_CHARACTERS
+        COMMON_SCRIPT, // 61, CJK_SYMBOLS_AND_PUNCTUATION
+        HIRAGANA_SCRIPT, // 62, HIRAGANA
+        KATAKANA_SCRIPT, // 63, KATAKANA
+        BOPOMOFO_SCRIPT, // 64, BOPOMOFO
+        JAMO_SCRIPT, // 65, HANGUL_COMPATIBILITY_JAMO
+        HAN_SCRIPT, // 66, KANBUN
+        BOPOMOFO_SCRIPT, // 67, BOPOMOFO_EXTENDED
+        COMMON_SCRIPT, // 68, ENCLOSED_CJK_LETTERS_AND_MONTHS
+        COMMON_SCRIPT, // 69, CJK_COMPATIBILITY
+        HAN_SCRIPT, // 70, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+        HAN_SCRIPT, // 71, CJK_UNIFIED_IDEOGRAPHS
+        YI_SCRIPT, // 72, YI_SYLLABLES
+        YI_SCRIPT, // 73, YI_RADICALS
+        HANGUL_SCRIPT, // 74, HANGUL_SYLLABLES
+        COMMON_SCRIPT, // 75, HIGH_SURROGATES
+        COMMON_SCRIPT, // 76, HIGH_PRIVATE_USE_SURROGATES
+        COMMON_SCRIPT, // 77, LOW_SURROGATES
+        COMMON_SCRIPT, // 78, PRIVATE_USE
+        HAN_SCRIPT, // 79, CJK_COMPATIBILITY_IDEOGRAPHS
+        COMMON_SCRIPT, // 80, ALPHABETIC_PRESENTATION_FORMS
+        ARABIC_SCRIPT, // 81, ARABIC_PRESENTATION_FORMS_A
+        COMMON_SCRIPT, // 82, COMBINING_HALF_MARKS
+        COMMON_SCRIPT, // 83, CJK_COMPATIBILITY_FORMS
+        COMMON_SCRIPT, // 84, SMALL_FORM_VARIANTS
+        ARABIC_SCRIPT, // 85, ARABIC_PRESENTATION_FORMS_B
+        COMMON_SCRIPT, // 86, SPECIALS
+        COMMON_SCRIPT, // 87, HALFWIDTH_AND_FULLWIDTH_FORMS
+        COMMON_SCRIPT, // 88, SPECIALS
+    };
+        
+    // could be further reduced to a byte array, but I didn't bother.
+    static final int[][] split = {
+        {0x0250, 4, 5}, // -1
+        {0x02B0, 5, 6}, // -2
+        {0x0370, 7, 8}, // -3
+        {0x0530, 0, 10}, // -4
+        {0x0590, 10, 11}, // -5
+        {0x0750, 13, 0}, // -6
+        {0x07C0, 14, 0}, // -7
+        {0x10A0, 28, 29}, // -8
+        {0x13A0, 0, 32}, // -9
+        {0x16A0, 34, 35}, // -10
+        {0x18B0, 37, 0}, // -11
+        {0x2070, 40, 41}, // -12
+        {0x20A0, 41, -31}, // -13
+        {0x2150, 44, 45}, // -14
+        {0x2190, 45, 46}, // -15
+        {0x2440, 49, -32}, // -16
+        {0x25A0, 53, 54}, // -17
+        {0x27C0, 56, 0}, // -18
+        {0x2FE0, 59, -33}, // -19
+        {0x3040, 61, 62}, // -20
+        {0x30A0, 62, 63}, // -21
+        {0x3130, 64, 65}, // -22
+        {0x3190, 65, -34}, // -23
+        {0x4DB6, 70, 0}, // -24
+        {0xA490, 72, -35}, // -25
+        {0xD7A4, 74, 0}, // -26
+        {0xFB50, 80, 81}, // -27
+        {0xFE20, 0, -36}, // -28
+        {0xFEFF, 85, 86}, // -29
+        {0xFFF0, 87, -37}, // -30
+        {0x20D0, 42, 43}, // -31
+        {0x2460, 50, 51}, // -32
+        {0x2FF0, 0, 60}, // -33
+        {0x31A0, 66, -38}, // -34
+        {0xA4D0, 73, 0}, //-35
+        {0xFE30, 82, -39}, //-36
+        {0xFFFE, 88, 0}, //-37
+        {0x31C0, 67, 0}, // -38
+        {0xFE50, 83, -40}, //-39
+        {0xFE70, 84, 85} // -40
+    };
+        
+    static final byte[] charToBlock = {
+      1, 2, 3, 4, -1, -2, -3, 8, 9, 9, -4, -5, 12, 12, -6, -7,
+      0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27,
+      28, -8, 30, 30, 31, 31, 31, -9, 33, 33, 33, 33, 33, -10, 0, 36,
+      37, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 39, 39,
+      -12, -13, -14, -15, 47, 47, 48, 48, -16, 51, 52, -17, 55, 55, 56, -18,
+      57, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, -19,
+      -20, -21, -22, -23, 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, -24, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, -25, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, -26,
+      75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, 77, 77, 77,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 79, 79, 79, 79, -27, 81, 81, 81, 81, 81, -28, -29, 87, -30
+    };
+    */
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
new file mode 100644
index 0000000..817bce2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
@@ -0,0 +1,3586 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.ULocale;
+import java.util.*;
+
+/***********************************************************************
+
+                     HOW TO USE THIS TEST FILE
+                               -or-
+                  How I developed on two platforms
+                without losing (too much of) my mind
+
+
+1. Add new tests by copying/pasting/changing existing tests.  On Java,
+   any public void method named Test...() taking no parameters becomes
+   a test.  On C++, you need to modify the header and add a line to
+   the runIndexedTest() dispatch method.
+
+2. Make liberal use of the expect() method; it is your friend.
+
+3. The tests in this file exactly match those in a sister file on the
+   other side.  The two files are:
+
+   icu4j:  src/com.ibm.icu.dev.test/translit/TransliteratorTest.java
+   icu4c:  source/test/intltest/transtst.cpp
+
+                  ==> THIS IS THE IMPORTANT PART <==
+
+   When you add a test in this file, add it in transtst.cpp too.
+   Give it the same name and put it in the same relative place.  This
+   makes maintenance a lot simpler for any poor soul who ends up
+   trying to synchronize the tests between icu4j and icu4c.
+
+4. If you MUST enter a test that is NOT paralleled in the sister file,
+   then add it in the special non-mirrored section.  These are
+   labeled
+
+     "icu4j ONLY"
+
+   or
+
+     "icu4c ONLY"
+
+   Make sure you document the reason the test is here and not there.
+
+
+Thank you.
+The Management
+***********************************************************************/
+
+/**
+ * @test
+ * @summary General test of Transliterator
+ */
+public class TransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TransliteratorTest().run(args);
+    }
+
+    public void TestInstantiation() {
+        long ms = System.currentTimeMillis();
+        String ID;
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            ID = (String) e.nextElement();
+            if (ID.equals("Latin-Han/definition")) {
+                System.out.println("\nTODO: disabling Latin-Han/definition check for now: fix later");
+                continue;
+            }
+            Transliterator t = null;
+            try {
+                t = Transliterator.getInstance(ID);
+                // This is only true for some subclasses
+//                // We should get a new instance if we try again
+//                Transliterator t2 = Transliterator.getInstance(ID);
+//                if (t != t2) {
+//                    logln("OK: " + Transliterator.getDisplayName(ID) + " (" + ID + "): " + t);
+//                } else {
+//                    errln("FAIL: " + ID + " returned identical instances");
+//                    t = null;
+//                }
+            } catch (IllegalArgumentException ex) {
+                errln("FAIL: " + ID);
+                throw ex;
+            }
+
+            if (t != null) {
+                // Now test toRules
+                String rules = null;
+                try {
+                    rules = t.toRules(true);
+
+                    Transliterator.createFromRules("x", rules, Transliterator.FORWARD);
+                } catch (IllegalArgumentException ex2) {
+                    errln("FAIL: " + ID + ".toRules() => bad rules: " +
+                          rules);
+                    throw ex2;
+                }
+            }
+        }
+
+        // Now test the failure path
+        try {
+            ID = "<Not a valid Transliterator ID>";
+            Transliterator t = Transliterator.getInstance(ID);
+            errln("FAIL: " + ID + " returned " + t);
+        } catch (IllegalArgumentException ex) {
+            logln("OK: Bogus ID handled properly");
+        }
+
+        ms = System.currentTimeMillis() - ms;
+        logln("Elapsed time: " + ms + " ms");
+    }
+
+    public void TestSimpleRules() {
+        /* Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * []|eabcd  start - no match, copy e to tranlated buffer
+         * [e]|abcd  match rule 1 - copy output & adjust cursor
+         * [ex|y]cd  match rule 2 - copy output & adjust cursor
+         * [exz]|d   no match, copy d to transliterated buffer
+         * [exzd]|   done
+         */
+        expect("ab>x|y;" +
+               "yc>z",
+               "eabcd", "exzd");
+
+        /* Another set of rules:
+         *    1. ab>x|yzacw
+         *    2. za>q
+         *    3. qc>r
+         *    4. cw>n
+         *
+         * []|ab       Rule 1
+         * [x|yzacw]   No match
+         * [xy|zacw]   Rule 2
+         * [xyq|cw]    Rule 4
+         * [xyqn]|     Done
+         */
+        expect("ab>x|yzacw;" +
+               "za>q;" +
+               "qc>r;" +
+               "cw>n",
+               "ab", "xyqn");
+
+        /* Test categories
+         */
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "$dummy=\uE100;" +
+                                                       "$vowel=[aeiouAEIOU];" +
+                                                       "$lu=[:Lu:];" +
+                                                       "$vowel } $lu > '!';" +
+                                                       "$vowel > '&';" +
+                                                       "'!' { $lu > '^';" +
+                                                       "$lu > '*';" +
+                                                       "a>ERROR",
+                                                       Transliterator.FORWARD);
+        expect(t, "abcdefgABCDEFGU", "&bcd&fg!^**!^*&");
+    }
+
+    /**
+     * Test inline set syntax and set variable syntax.
+     */
+    public void TestInlineSet() {
+        expect("{ [:Ll:] } x > y; [:Ll:] > z;", "aAbxq", "zAyzz");
+        expect("a[0-9]b > qrs", "1a7b9", "1qrs9");
+
+        expect("$digit = [0-9];" +
+               "$alpha = [a-zA-Z];" +
+               "$alphanumeric = [$digit $alpha];" + // ***
+               "$special = [^$alphanumeric];" +     // ***
+               "$alphanumeric > '-';" +
+               "$special > '*';",
+
+               "thx-1138", "---*----");
+    }
+
+    /**
+     * Create some inverses and confirm that they work.  We have to be
+     * careful how we do this, since the inverses will not be true
+     * inverses -- we can't throw any random string at the composition
+     * of the transliterators and expect the identity function.  F x
+     * F' != I.  However, if we are careful about the input, we will
+     * get the expected results.
+     */
+    public void TestRuleBasedInverse() {
+        String RULES =
+            "abc>zyx;" +
+            "ab>yz;" +
+            "bc>zx;" +
+            "ca>xy;" +
+            "a>x;" +
+            "b>y;" +
+            "c>z;" +
+
+            "abc<zyx;" +
+            "ab<yz;" +
+            "bc<zx;" +
+            "ca<xy;" +
+            "a<x;" +
+            "b<y;" +
+            "c<z;" +
+
+            "";
+
+        String[] DATA = {
+            // Careful here -- random strings will not work.  If we keep
+            // the left side to the domain and the right side to the range
+            // we will be okay though (left, abc; right xyz).
+            "a", "x",
+            "abcacab", "zyxxxyy",
+            "caccb", "xyzzy",
+        };
+
+        Transliterator fwd = Transliterator.createFromRules("<ID>", RULES, Transliterator.FORWARD);
+        Transliterator rev = Transliterator.createFromRules("<ID>", RULES, Transliterator.REVERSE);
+        for (int i=0; i<DATA.length; i+=2) {
+            expect(fwd, DATA[i], DATA[i+1]);
+            expect(rev, DATA[i+1], DATA[i]);
+        }
+    }
+
+    /**
+     * Basic test of keyboard.
+     */
+    public void TestKeyboard() {
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "psch>Y;"
+                                                       +"ps>y;"
+                                                       +"ch>x;"
+                                                       +"a>A;", Transliterator.FORWARD);
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps",
+            "c", "Apsc",
+            "a", "AycA",
+            "psch", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Basic test of keyboard with cursor.
+     */
+    public void TestKeyboard2() {
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "ych>Y;"
+                                                       +"ps>|y;"
+                                                       +"ch>x;"
+                                                       +"a>A;", Transliterator.FORWARD);
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps", // modified for rollback - "Ay",
+            "c", "Apsc", // modified for rollback - "Ayc",
+            "a", "AycA",
+            "p", "AycAp",
+            "s", "AycAps", // modified for rollback - "AycAy",
+            "c", "AycApsc", // modified for rollback - "AycAyc",
+            "h", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Test keyboard transliteration with back-replacement.
+     */
+    public void TestKeyboard3() {
+        // We want th>z but t>y.  Furthermore, during keyboard
+        // transliteration we want t>y then yh>z if t, then h are
+        // typed.
+        String RULES =
+            "t>|y;" +
+            "yh>z;" +
+            "";
+
+        String[] DATA = {
+            // Column 1: characters to add to buffer (as if typed)
+            // Column 2: expected appearance of buffer after
+            //           keyboard xliteration.
+            "a", "a",
+            "b", "ab",
+            "t", "abt", // modified for rollback - "aby",
+            "c", "abyc",
+            "t", "abyct", // modified for rollback - "abycy",
+            "h", "abycz",
+            null, "abycz", // null means finishKeyboardTransliteration
+        };
+
+        Transliterator t = Transliterator.createFromRules("<ID>", RULES, Transliterator.FORWARD);
+        keyboardAux(t, DATA);
+    }
+
+    private void keyboardAux(Transliterator t, String[] DATA) {
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString s = new ReplaceableString();
+        for (int i=0; i<DATA.length; i+=2) {
+            StringBuffer log;
+            if (DATA[i] != null) {
+                log = new StringBuffer(s.toString() + " + "
+                                       + DATA[i]
+                                       + " -> ");
+                t.transliterate(s, index, DATA[i]);
+            } else {
+                log = new StringBuffer(s.toString() + " => ");
+                t.finishTransliteration(s, index);
+            }
+            UtilityExtensions.formatInput(log, s, index);
+            if (s.toString().equals(DATA[i+1])) {
+                logln(log.toString());
+            } else {
+                errln("FAIL: " + log.toString() + ", expected " + DATA[i+1]);
+            }
+        }
+    }
+
+    // Latin-Arabic has been temporarily removed until it can be
+    // done correctly.
+
+//  public void TestArabic() {
+//      String DATA[] = {
+//          "Arabic",
+//              "\u062a\u062a\u0645\u062a\u0639 "+
+//              "\u0627\u0644\u0644\u063a\u0629 "+
+//              "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629 "+
+//              "\u0628\u0628\u0646\u0638\u0645 "+
+//              "\u0643\u062a\u0627\u0628\u0628\u064a\u0629 "+
+//              "\u062c\u0645\u064a\u0644\u0629"
+//      };
+
+//      Transliterator t = Transliterator.getInstance("Latin-Arabic");
+//      for (int i=0; i<DATA.length; i+=2) {
+//          expect(t, DATA[i], DATA[i+1]);
+//      }
+//  }
+
+    /**
+     * Compose the Kana transliterator forward and reverse and try
+     * some strings that should come out unchanged.
+     */
+    public void TestCompoundKana() {
+        Transliterator t = Transliterator.getInstance("Latin-Katakana;Katakana-Latin");
+        expect(t, "aaaaa", "aaaaa");
+    }
+
+    /**
+     * Compose the hex transliterators forward and reverse.
+     */
+    public void TestCompoundHex() {
+        Transliterator a = Transliterator.getInstance("Any-Hex");
+        Transliterator b = Transliterator.getInstance("Hex-Any");
+        // Transliterator[] trans = { a, b };
+        // Transliterator ab = Transliterator.getInstance(trans);
+        Transliterator ab = Transliterator.getInstance("Any-Hex;Hex-Any");
+
+        // Do some basic tests of b
+        expect(b, "\\u0030\\u0031", "01");
+
+        String s = "abcde";
+        expect(ab, s, s);
+
+        // trans = new Transliterator[] { b, a };
+        // Transliterator ba = Transliterator.getInstance(trans);
+        Transliterator ba = Transliterator.getInstance("Hex-Any;Any-Hex");
+        ReplaceableString str = new ReplaceableString(s);
+        a.transliterate(str);
+        expect(ba, str.toString(), str.toString());
+    }
+
+    /**
+     * Do some basic tests of filtering.
+     */
+    public void TestFiltering() {
+        Transliterator hex = Transliterator.getInstance("Any-Hex");
+        hex.setFilter(new UnicodeFilter() {
+            public boolean contains(int c) {
+                return c != 'c';
+            }
+            public String toPattern(boolean escapeUnprintable) {
+                return "";
+            }
+            public boolean matchesIndexValue(int v) {
+                return false;
+            }
+            public void addMatchSetTo(UnicodeSet toUnionTo) {}
+        });
+        String s = "abcde";
+        String out = hex.transliterate(s);
+        String exp = "\\u0061\\u0062c\\u0064\\u0065";
+        if (out.equals(exp)) {
+            logln("Ok:   \"" + exp + "\"");
+        } else {
+            logln("FAIL: \"" + out + "\", wanted \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test anchors
+     */
+    public void TestAnchors() {
+        expect("^ab  > 01 ;" +
+               " ab  > |8 ;" +
+               "  b  > k ;" +
+               " 8x$ > 45 ;" +
+               " 8x  > 77 ;",
+
+               "ababbabxabx",
+               "018k7745");
+        expect("$s = [z$] ;" +
+               "$s{ab    > 01 ;" +
+               "   ab    > |8 ;" +
+               "    b    > k ;" +
+               "   8x}$s > 45 ;" +
+               "   8x    > 77 ;",
+
+               "abzababbabxzabxabx",
+               "01z018k45z01x45");
+    }
+
+    /**
+     * Test pattern quoting and escape mechanisms.
+     */
+    public void TestPatternQuoting() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "\u4E01>'[male adult]'", "\u4E01", "[male adult]",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+    
+    public void TestVariableNames() {
+        Transliterator gl = Transliterator.createFromRules("foo", "$\u2DC0 = qy; a>b;", Transliterator.FORWARD);
+        if (gl == null) {
+            errln("FAIL: null Transliterator returned.");
+        }
+    }
+
+    /**
+     * Regression test for bugs found in Greek transliteration.
+     */
+    public void TestJ277() {
+        Transliterator gl = Transliterator.getInstance("Greek-Latin; NFD; [:M:]Remove; NFC");
+
+        char sigma = (char)0x3C3;
+        char upsilon = (char)0x3C5;
+        char nu = (char)0x3BD;
+        // not used char PHI = (char)0x3A6;
+        char alpha = (char)0x3B1;
+        // not used char omega = (char)0x3C9;
+        // not used char omicron = (char)0x3BF;
+        // not used char epsilon = (char)0x3B5;
+
+        // sigma upsilon nu -> syn
+        StringBuffer buf = new StringBuffer();
+        buf.append(sigma).append(upsilon).append(nu);
+        String syn = buf.toString();
+        expect(gl, syn, "syn");
+
+        // sigma alpha upsilon nu -> saun
+        buf.setLength(0);
+        buf.append(sigma).append(alpha).append(upsilon).append(nu);
+        String sayn = buf.toString();
+        expect(gl, sayn, "saun");
+
+        // Again, using a smaller rule set
+        String rules =
+                    "$alpha   = \u03B1;" +
+                    "$nu      = \u03BD;" +
+                    "$sigma   = \u03C3;" +
+                    "$ypsilon = \u03C5;" +
+                    "$vowel   = [aeiouAEIOU$alpha$ypsilon];" +
+                    "s <>           $sigma;" +
+                    "a <>           $alpha;" +
+                    "u <>  $vowel { $ypsilon;" +
+                    "y <>           $ypsilon;" +
+                    "n <>           $nu;";
+        Transliterator mini = Transliterator.createFromRules
+            ("mini", rules, Transliterator.REVERSE);
+        expect(mini, syn, "syn");
+        expect(mini, sayn, "saun");
+
+//|    // Transliterate the Greek locale data
+//|    Locale el("el");
+//|    DateFormatSymbols syms(el, status);
+//|    if (U_FAILURE(status)) { errln("FAIL: Transliterator constructor failed"); return; }
+//|    int32_t i, count;
+//|    const UnicodeString* data = syms.getMonths(count);
+//|    for (i=0; i<count; ++i) {
+//|        if (data[i].length() == 0) {
+//|            continue;
+//|        }
+//|        UnicodeString out(data[i]);
+//|        gl->transliterate(out);
+//|        bool_t ok = TRUE;
+//|        if (data[i].length() >= 2 && out.length() >= 2 &&
+//|            u_isupper(data[i].charAt(0)) && u_islower(data[i].charAt(1))) {
+//|            if (!(u_isupper(out.charAt(0)) && u_islower(out.charAt(1)))) {
+//|                ok = FALSE;
+//|            }
+//|        }
+//|        if (ok) {
+//|            logln(prettify(data[i] + " -> " + out));
+//|        } else {
+//|            errln(UnicodeString("FAIL: ") + prettify(data[i] + " -> " + out));
+//|        }
+//|    }
+    }
+
+//    /**
+//     * Prefix, suffix support in hex transliterators
+//     */
+//    public void TestJ243() {
+//        // Test default Hex-Any, which should handle
+//        // \\u, \\U, u+, and U+
+//        HexToUnicodeTransliterator hex = new HexToUnicodeTransliterator();
+//        expect(hex, "\\u0041+\\U0042,u+0043uu+0044z", "A+B,CuDz");
+//
+//        // Try a custom Hex-Any
+//        // \\uXXXX and &#xXXXX;
+//        HexToUnicodeTransliterator hex2 = new HexToUnicodeTransliterator("\\\\u###0;&\\#x###0\\;");
+//        expect(hex2, "\\u61\\u062\\u0063\\u00645\\u66x&#x30;&#x031;&#x0032;&#x00033;",
+//               "abcd5fx012&#x00033;");
+//
+//        // Try custom Any-Hex (default is tested elsewhere)
+//        UnicodeToHexTransliterator hex3 = new UnicodeToHexTransliterator("&\\#x###0;");
+//        expect(hex3, "012", "&#x30;&#x31;&#x32;");
+//    }
+
+    public void TestJ329() {
+
+        Object[] DATA = {
+            Boolean.FALSE, "a > b; c > d",
+            Boolean.TRUE,  "a > b; no operator; c > d",
+        };
+
+        for (int i=0; i<DATA.length; i+=2) {
+            String err = null;
+            try {
+                Transliterator.createFromRules("<ID>",
+                                            (String) DATA[i+1],
+                                            Transliterator.FORWARD);
+            } catch (IllegalArgumentException e) {
+                err = e.getMessage();
+            }
+            boolean gotError = (err != null);
+            String desc = (String) DATA[i+1] +
+                (gotError ? (" -> error: " + err) : " -> no error");
+            if ((err != null) == ((Boolean)DATA[i]).booleanValue()) {
+                logln("Ok:   " + desc);
+            } else {
+                errln("FAIL: " + desc);
+            }
+        }
+    }
+
+    /**
+     * Test segments and segment references.
+     */
+    public void TestSegments() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "([a-z]) '.' ([0-9]) > $2 '-' $1",
+            "abc.123.xyz.456",
+            "ab1-c23.xy4-z56",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test cursor positioning outside of the key
+     */
+    public void TestCursorOffset() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "pre {alpha} post > | @ ALPHA ;" +
+            "eALPHA > beta ;" +
+            "pre {beta} post > BETA @@ | ;" +
+            "post > xyz",
+
+            "prealphapost prebetapost",
+            "prbetaxyz preBETApost",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test zero length and > 1 char length variable values.  Test
+     * use of variable refs in UnicodeSets.
+     */
+    public void TestArbitraryVariableValues() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "$abe = ab;" +
+            "$pat = x[yY]z;" +
+            "$ll  = 'a-z';" +
+            "$llZ = [$ll];" +
+            "$llY = [$ll$pat];" +
+            "$emp = ;" +
+
+            "$abe > ABE;" +
+            "$pat > END;" +
+            "$llZ > 1;" +
+            "$llY > 2;" +
+            "7$emp 8 > 9;" +
+            "",
+
+            "ab xYzxyz stY78",
+            "ABE ENDEND 1129",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Confirm that the contextStart, contextLimit, start, and limit
+     * behave correctly.
+     */
+    public void TestPositionHandling() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 0,9,0,9
+            "xTTaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 2,9,3,8
+            "xtaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 3,8,3,8
+            "xtaTT TTxTTb",
+        };
+
+        // Array of 4n positions -- these go with the DATA array
+        // They are: contextStart, contextLimit, start, limit
+        int[] POS = {
+            0, 9, 0, 9,
+            2, 9, 3, 8,
+            3, 8, 3, 8,
+        };
+
+        int n = DATA.length/3;
+        for (int i=0; i<n; i++) {
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[3*i], Transliterator.FORWARD);
+            Transliterator.Position pos = new Transliterator.Position(
+                POS[4*i], POS[4*i+1], POS[4*i+2], POS[4*i+3]);
+            ReplaceableString rsource = new ReplaceableString(DATA[3*i+1]);
+            t.transliterate(rsource, pos);
+            t.finishTransliteration(rsource, pos);
+            String result = rsource.toString();
+            String exp = DATA[3*i+2];
+            expectAux(Utility.escape(DATA[3*i]),
+                      DATA[3*i+1],
+                      result,
+                      result.equals(exp),
+                      exp);
+        }
+    }
+
+    /**
+     * Test the Hiragana-Katakana transliterator.
+     */
+    public void TestHiraganaKatakana() {
+        Transliterator hk = Transliterator.getInstance("Hiragana-Katakana");
+        Transliterator kh = Transliterator.getInstance("Katakana-Hiragana");
+
+        // Array of 3n items
+        // Each item is "hk"|"kh"|"both", <Hiragana>, <Katakana>
+        String[] DATA = {
+            "both",
+            "\u3042\u3090\u3099\u3092\u3050",
+            "\u30A2\u30F8\u30F2\u30B0",
+
+            "kh",
+            "\u307C\u3051\u3060\u3042\u3093\u30FC",
+            "\u30DC\u30F6\u30C0\u30FC\u30F3\u30FC",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            switch (DATA[i].charAt(0)) {
+            case 'h': // Hiragana-Katakana
+                expect(hk, DATA[i+1], DATA[i+2]);
+                break;
+            case 'k': // Katakana-Hiragana
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            case 'b': // both
+                expect(hk, DATA[i+1], DATA[i+2]);
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            }
+        }
+
+    }
+
+    public void TestCopyJ476() {
+        // This is a C++-only copy constructor test
+    }
+
+    /**
+     * Test inter-Indic transliterators.  These are composed.
+     */
+    public void TestInterIndic() {
+        String ID = "Devanagari-Gujarati";
+        Transliterator dg = Transliterator.getInstance(ID);
+        if (dg == null) {
+            errln("FAIL: getInstance(" + ID + ") returned null");
+            return;
+        }
+        String id = dg.getID();
+        if (!id.equals(ID)) {
+            errln("FAIL: getInstance(" + ID + ").getID() => " + id);
+        }
+        String dev = "\u0901\u090B\u0925";
+        String guj = "\u0A81\u0A8B\u0AA5";
+        expect(dg, dev, guj);
+    }
+
+    /**
+     * Test filter syntax in IDs. (J23)
+     */
+    public void TestFilterIDs() {
+        String[] DATA = {
+            "[aeiou]Any-Hex", // ID
+            "[aeiou]Hex-Any", // expected inverse ID
+            "quizzical",      // src
+            "q\\u0075\\u0069zz\\u0069c\\u0061l", // expected ID.translit(src)
+
+            "[aeiou]Any-Hex;[^5]Hex-Any",
+            "[^5]Any-Hex;[aeiou]Hex-Any",
+            "quizzical",
+            "q\\u0075izzical",
+
+            "[abc]Null",
+            "[abc]Null",
+            "xyz",
+            "xyz",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String ID = DATA[i];
+            Transliterator t = Transliterator.getInstance(ID);
+            expect(t, DATA[i+2], DATA[i+3]);
+
+            // Check the ID
+            if (!ID.equals(t.getID())) {
+                errln("FAIL: getInstance(" + ID + ").getID() => " +
+                      t.getID());
+            }
+
+            // Check the inverse
+            String uID = DATA[i+1];
+            Transliterator u = t.getInverse();
+            if (u == null) {
+                errln("FAIL: " + ID + ".getInverse() returned NULL");
+            } else if (!u.getID().equals(uID)) {
+                errln("FAIL: " + ID + ".getInverse().getID() => " +
+                      u.getID() + ", expected " + uID);
+            }
+        }
+    }
+
+    /**
+     * Test the case mapping transliterators.
+     */
+    public void TestCaseMap() {
+        Transliterator toUpper =
+            Transliterator.getInstance("Any-Upper[^xyzXYZ]");
+        Transliterator toLower =
+            Transliterator.getInstance("Any-Lower[^xyzXYZ]");
+        Transliterator toTitle =
+            Transliterator.getInstance("Any-Title[^xyzXYZ]");
+
+        expect(toUpper, "The quick brown fox jumped over the lazy dogs.",
+               "THE QUICK BROWN FOx JUMPED OVER THE LAzy DOGS.");
+        expect(toLower, "The quIck brown fOX jUMPED OVER THE LAzY dogs.",
+               "the quick brown foX jumped over the lazY dogs.");
+        expect(toTitle, "the quick brown foX caN'T jump over the laZy dogs.",
+               "The Quick Brown FoX Can't Jump Over The LaZy Dogs.");
+    }
+
+    /**
+     * Test the name mapping transliterators.
+     */
+    public void TestNameMap() {
+        Transliterator uni2name =
+            Transliterator.getInstance("Any-Name[^abc]");
+        Transliterator name2uni =
+            Transliterator.getInstance("Name-Any");
+
+        expect(uni2name, "\u00A0abc\u4E01\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF",
+               "\\N{NO-BREAK SPACE}abc\\N{CJK UNIFIED IDEOGRAPH-4E01}\\N{MICRO SIGN}\\N{GUJARATI SIGN CANDRABINDU}\\N{REPLACEMENT CHARACTER}\\N{END OF TRANSMISSION}\\N{CHARACTER TABULATION}\\N{<control-0081>}\\N{<noncharacter-FFFF>}");
+        expect(name2uni, "{\\N { NO-BREAK SPACE}abc\\N{  CJK UNIFIED  IDEOGRAPH-4E01  }\\N{x\\N{MICRO SIGN}\\N{GUJARATI SIGN CANDRABINDU}\\N{REPLACEMENT CHARACTER}\\N{END OF TRANSMISSION}\\N{CHARACTER TABULATION}\\N{<control-0081>}\\N{<noncharacter-FFFF>}\\N{<control-0004>}\\N{",
+               "{\u00A0abc\u4E01\\N{x\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF\u0004\\N{");
+
+        // round trip
+        Transliterator t = Transliterator.getInstance("Any-Name;Name-Any");
+
+        String s = "{\u00A0abc\u4E01\\N{x\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF\u0004\\N{";
+        expect(t, s, s);
+    }
+
+    /**
+     * Test liberalized ID syntax.  1006c
+     */
+    public void TestLiberalizedID() {
+        // Some test cases have an expected getID() value of NULL.  This
+        // means I have disabled the test case for now.  This stuff is
+        // still under development, and I haven't decided whether to make
+        // getID() return canonical case yet.  It will all get rewritten
+        // with the move to Source-Target/Variant IDs anyway. [aliu]
+        String DATA[] = {
+            "latin-greek", null /*"Latin-Greek"*/, "case insensitivity",
+            "  Null  ", "Null", "whitespace",
+            " Latin[a-z]-Greek  ", "[a-z]Latin-Greek", "inline filter",
+            "  null  ; latin-greek  ", null /*"Null;Latin-Greek"*/, "compound whitespace",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            try {
+                Transliterator t = Transliterator.getInstance(DATA[i]);
+                if (DATA[i+1] == null || DATA[i+1].equals(t.getID())) {
+                    logln("Ok: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\"");
+                } else {
+                    errln("FAIL: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\", exp \"" + DATA[i+1] + "\"");
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: " + DATA[i+2] +
+                      " create ID \"" + DATA[i] + "\"");
+            }
+        }
+    }
+
+    public void TestCreateInstance() {
+        String FORWARD = "F";
+        String REVERSE = "R";
+        String DATA[] = {
+            // Column 1: id
+            // Column 2: direction
+            // Column 3: expected ID, or "" if expect failure
+            "Latin-Hangul", REVERSE, "Hangul-Latin", // JB#912
+            
+            // JB#2689: bad compound causes crash
+            "InvalidSource-InvalidTarget", FORWARD, "",
+            "InvalidSource-InvalidTarget", REVERSE, "",
+            "Hex-Any;InvalidSource-InvalidTarget", FORWARD, "",
+            "Hex-Any;InvalidSource-InvalidTarget", REVERSE, "",
+            "InvalidSource-InvalidTarget;Hex-Any", FORWARD, "",
+            "InvalidSource-InvalidTarget;Hex-Any", REVERSE, "",
+            
+            null
+        };
+        
+        for (int i=0; DATA[i]!=null; i+=3) {
+            String id=DATA[i];
+            int dir = (DATA[i+1]==FORWARD)?
+                Transliterator.FORWARD:Transliterator.REVERSE;
+            String expID=DATA[i+2];
+            Exception e = null;
+            Transliterator t;
+            try {
+                t = Transliterator.getInstance(id,dir);
+            } catch (Exception e1) {
+                e = e1;
+                t = null;
+            }
+            String newID = (t!=null)?t.getID():"";
+            boolean ok = (newID.equals(expID));
+            if (t==null) {
+                newID = e.getMessage();
+            }
+            if (ok) {
+                logln("Ok: createInstance(" +
+                      id + "," + DATA[i+1] + ") => " + newID);
+            } else {
+                errln("FAIL: createInstance(" +
+                      id + "," + DATA[i+1] + ") => " + newID +
+                      ", expected " + expID);
+            }
+        }
+    }
+
+    /**
+     * Test the normalization transliterator.
+     */
+    public void TestNormalizationTransliterator() {
+        // THE FOLLOWING TWO TABLES ARE COPIED FROM com.ibm.icu.dev.test.normalizer.BasicTest
+        // PLEASE KEEP THEM IN SYNC WITH BasicTest.
+        String[][] CANON = {
+            // Input               Decomposed            Composed
+            {"cat",                "cat",                "cat"               },
+            {"\u00e0ardvark",      "a\u0300ardvark",     "\u00e0ardvark"     },
+
+            {"\u1e0a",             "D\u0307",            "\u1e0a"            }, // D-dot_above
+            {"D\u0307",            "D\u0307",            "\u1e0a"            }, // D dot_above
+
+            {"\u1e0c\u0307",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_below dot_above
+            {"\u1e0a\u0323",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_above dot_below
+            {"D\u0307\u0323",      "D\u0323\u0307",      "\u1e0c\u0307"      }, // D dot_below dot_above
+
+            {"\u1e10\u0307\u0323", "D\u0327\u0323\u0307","\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+            {"D\u0307\u0328\u0323","D\u0328\u0323\u0307","\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+            {"\u1E14",             "E\u0304\u0300",      "\u1E14"            }, // E-macron-grave
+            {"\u0112\u0300",       "E\u0304\u0300",      "\u1E14"            }, // E-macron + grave
+            {"\u00c8\u0304",       "E\u0300\u0304",      "\u00c8\u0304"      }, // E-grave + macron
+
+            {"\u212b",             "A\u030a",            "\u00c5"            }, // angstrom_sign
+            {"\u00c5",             "A\u030a",            "\u00c5"            }, // A-ring
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        }, //updated with 3.0
+            {"\u00fd\uFB03n",      "y\u0301\uFB03n",     "\u00fd\uFB03n"     }, //updated with 3.0
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry \u2163",       "Henry \u2163"      },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+            {"\uFF76\uFF9E",       "\uFF76\uFF9E",       "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+            {"\u30AB\uFF9E",       "\u30AB\uFF9E",       "\u30AB\uFF9E"      }, // ka + hw_ten
+            {"\uFF76\u3099",       "\uFF76\u3099",       "\uFF76\u3099"      }, // hw_ka + ten
+
+            {"A\u0300\u0316",      "A\u0316\u0300",      "\u00C0\u0316"      },
+        };
+
+        String[][] COMPAT = {
+            // Input               Decomposed            Composed
+            {"\uFB4f",             "\u05D0\u05DC",       "\u05D0\u05DC"      }, // Alef-Lamed vs. Alef, Lamed
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        }, //updated for 3.0
+            {"\u00fd\uFB03n",      "y\u0301ffin",        "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry IV",           "Henry IV"          },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+
+            {"\uFF76\u3099",       "\u30AB\u3099",       "\u30AC"            }, // hw_ka + ten
+        };
+
+        Transliterator NFD = Transliterator.getInstance("NFD");
+        Transliterator NFC = Transliterator.getInstance("NFC");
+        for (int i=0; i<CANON.length; ++i) {
+            String in = CANON[i][0];
+            String expd = CANON[i][1];
+            String expc = CANON[i][2];
+            expect(NFD, in, expd);
+            expect(NFC, in, expc);
+        }
+
+        Transliterator NFKD = Transliterator.getInstance("NFKD");
+        Transliterator NFKC = Transliterator.getInstance("NFKC");
+        for (int i=0; i<COMPAT.length; ++i) {
+            String in = COMPAT[i][0];
+            String expkd = COMPAT[i][1];
+            String expkc = COMPAT[i][2];
+            expect(NFKD, in, expkd);
+            expect(NFKC, in, expkc);
+        }
+
+        Transliterator t = Transliterator.getInstance("NFD; [x]Remove");
+        expect(t, "\u010dx", "c\u030C");
+    }
+
+    /**
+     * Test compound RBT rules.
+     */
+    public void TestCompoundRBT() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule = "::Hex-Any;\n" +
+                      "::Any-Lower;\n" +
+                      "a > '.A.';\n" +
+                      "b > '.B.';\n" +
+                      "::[^t]Any-Upper;";
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+        expect(t, "\u0043at in the hat, bat on the mat",
+               "C.A.t IN tHE H.A.t, .B..A.t ON tHE M.A.t");
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        // Now test toRules
+        t = Transliterator.getInstance("Greek-Latin; Latin-Cyrillic", Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance failed");
+            return;
+        }
+        String exp = "::Greek-Latin;\n::Latin-Cyrillic;";
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Round trip the result of toRules
+        t = Transliterator.createFromRules("Test", r, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules #2 failed");
+            return;
+        } else {
+            logln("OK: createFromRules(" + r + ") succeeded");
+        }
+
+        // Test toRules again
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Test Foo(Bar) IDs.  Careful with spacing in id; make it conform
+        // to what the regenerated ID will look like.
+        String id = "Upper(Lower);(NFKC)";
+        t = Transliterator.getInstance(id, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance #2 failed");
+            return;
+        }
+        if (t.getID().equals(id)) {
+            logln("OK: created " + id);
+        } else {
+            errln("FAIL: createInstance(" + id +
+                  ").getID() => " + t.getID());
+        }
+
+        Transliterator u = t.getInverse();
+        if (u == null) {
+            errln("FAIL: createInverse failed");
+            return;
+        }
+        exp = "NFKC();Lower(Upper)";
+        if (u.getID().equals(exp)) {
+            logln("OK: createInverse(" + id + ") => " +
+                  u.getID());
+        } else {
+            errln("FAIL: createInverse(" + id + ") => " +
+                  u.getID());
+        }
+    }
+
+    /**
+     * Compound filter semantics were orginially not implemented
+     * correctly.  Originally, each component filter f(i) is replaced by
+     * f'(i) = f(i) && g, where g is the filter for the compound
+     * transliterator.
+     *
+     * From Mark:
+     *
+     * Suppose and I have a transliterator X. Internally X is
+     * "Greek-Latin; Latin-Cyrillic; Any-Lower". I use a filter [^A].
+     *
+     * The compound should convert all greek characters (through latin) to
+     * cyrillic, then lowercase the result. The filter should say "don't
+     * touch 'A' in the original". But because an intermediate result
+     * happens to go through "A", the Greek Alpha gets hung up.
+     */
+    public void TestCompoundFilter() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Latin-Greek; Lower", Transliterator.FORWARD);
+        t.setFilter(new UnicodeSet("[^A]"));
+
+        // Only the 'A' at index 1 should remain unchanged
+        expect(t,
+               CharsToUnicodeString("BA\\u039A\\u0391"),
+               CharsToUnicodeString("\\u03b2A\\u03ba\\u03b1"));
+    }
+
+    /**
+     * Test the "Remove" transliterator.
+     */
+    public void TestRemove() {
+        Transliterator t = Transliterator.getInstance("Remove[aeiou]");
+        expect(t, "The quick brown fox.",
+               "Th qck brwn fx.");
+    }
+
+    public void TestToRules() {
+        String RBT = "rbt";
+        String SET = "set";
+        String[] DATA = {
+            RBT,
+            "$a=\\u4E61; [$a] > A;",
+            "[\\u4E61] > A;",
+
+            RBT,
+            "$white=[[:Zs:][:Zl:]]; $white{a} > A;",
+            "[[:Zs:][:Zl:]]{a} > A;",
+
+            SET,
+            "[[:Zs:][:Zl:]]",
+            "[[:Zs:][:Zl:]]",
+
+            SET,
+            "[:Ps:]",
+            "[:Ps:]",
+
+            SET,
+            "[:L:]",
+            "[:L:]",
+
+            SET,
+            "[[:L:]-[A]]",
+            "[[:L:]-[A]]",
+
+            SET,
+            "[~[:Lu:][:Ll:]]",
+            "[~[:Lu:][:Ll:]]",
+
+            SET,
+            "[~[a-z]]",
+            "[~[a-z]]",
+
+            RBT,
+            "$white=[:Zs:]; $black=[^$white]; $black{a} > A;",
+            "[^[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[[a-z]-$a]; $b{a} > A;",
+            "[[a-z]-[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[$a&[a-z]]; $b{a} > A;",
+            "[[:Zs:]&[a-z]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[x$a]; $b{a} > A;",
+            "[x[:Zs:]]{a} > A;",
+
+            RBT,
+            "$accentMinus = [ [\\u0300-\\u0345] & [:M:] - [\\u0338]] ;"+
+            "$macron = \\u0304 ;"+
+            "$evowel = [aeiouyAEIOUY] ;"+
+            "$iotasub = \\u0345 ;"+
+            "($evowel $macron $accentMinus *) i > | $1 $iotasub ;",
+            "([AEIOUYaeiouy]\\u0304[[\\u0300-\\u0345]&[:M:]-[\\u0338]]*)i > | $1 \\u0345;",
+
+            RBT,
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+        };
+
+        for (int d=0; d < DATA.length; d+=3) {
+            if (DATA[d] == RBT) {
+                // Transliterator test
+                Transliterator t = Transliterator.createFromRules("ID",
+                                       DATA[d+1], Transliterator.FORWARD);
+                if (t == null) {
+                    errln("FAIL: createFromRules failed");
+                    return;
+                }
+                String rules, escapedRules;
+                rules = t.toRules(false);
+                escapedRules = t.toRules(true);
+                String expRules = Utility.unescape(DATA[d+2]);
+                String expEscapedRules = DATA[d+2];
+                if (rules.equals(expRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + Utility.escape(rules));
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + Utility.escape(rules + ", exp " + expRules));
+                }
+                if (escapedRules.equals(expEscapedRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + escapedRules);
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + escapedRules + ", exp " + expEscapedRules);
+                }
+
+            } else {
+                // UnicodeSet test
+                String pat = DATA[d+1];
+                String expToPat = DATA[d+2];
+                UnicodeSet set = new UnicodeSet(pat);
+
+                // Adjust spacing etc. as necessary.
+                String toPat;
+                toPat = set.toPattern(true);
+                if (expToPat.equals(toPat)) {
+                    logln("Ok: " + pat +
+                          " => " + toPat);
+                } else {
+                    errln("FAIL: " + pat +
+                          " => " + Utility.escape(toPat) +
+                          ", exp " + Utility.escape(pat));
+                }
+            }
+        }
+    }
+
+    public void TestContext() {
+        Transliterator.Position pos = new Transliterator.Position(0, 2, 0, 1); // cs cl s l
+
+        expect("de > x; {d}e > y;",
+               "de",
+               "ye",
+               pos);
+
+        expect("ab{c} > z;",
+               "xadabdabcy",
+               "xadabdabzy");
+    }
+
+    static final String CharsToUnicodeString(String s) {
+        return Utility.unescape(s);
+    }
+
+    public void TestSupplemental() {
+
+        expect(CharsToUnicodeString("$a=\\U00010300; $s=[\\U00010300-\\U00010323];" +
+                                    "a > $a; $s > i;"),
+               CharsToUnicodeString("ab\\U0001030Fx"),
+               CharsToUnicodeString("\\U00010300bix"));
+
+        expect(CharsToUnicodeString("$a=[a-z\\U00010300-\\U00010323];" +
+                                    "$b=[A-Z\\U00010400-\\U0001044D];" +
+                                    "($a)($b) > $2 $1;"),
+               CharsToUnicodeString("aB\\U00010300\\U00010400c\\U00010401\\U00010301D"),
+               CharsToUnicodeString("Ba\\U00010400\\U00010300\\U00010401cD\\U00010301"));
+
+        // k|ax\\U00010300xm
+
+        // k|a\\U00010400\\U00010300xm
+        // ky|\\U00010400\\U00010300xm
+        // ky\\U00010400|\\U00010300xm
+
+        // ky\\U00010400|\\U00010300\\U00010400m
+        // ky\\U00010400y|\\U00010400m
+        expect(CharsToUnicodeString("$a=[a\\U00010300-\\U00010323];" +
+                                    "$a {x} > | @ \\U00010400;" +
+                                    "{$a} [^\\u0000-\\uFFFF] > y;"),
+               CharsToUnicodeString("kax\\U00010300xm"),
+               CharsToUnicodeString("ky\\U00010400y\\U00010400m"));
+
+        expect(Transliterator.getInstance("Any-Name"),
+               CharsToUnicodeString("\\U00010330\\U000E0061\\u00A0"),
+               "\\N{GOTHIC LETTER AHSA}\\N{TAG LATIN SMALL LETTER A}\\N{NO-BREAK SPACE}");
+
+        expect(Transliterator.getInstance("Name-Any"),
+               "\\N{GOTHIC LETTER AHSA}\\N{TAG LATIN SMALL LETTER A}\\N{NO-BREAK SPACE}",
+               CharsToUnicodeString("\\U00010330\\U000E0061\\u00A0"));
+
+        expect(Transliterator.getInstance("Any-Hex/Unicode"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "U+10330U+10FF00U+E0061U+00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\U00010330\\U0010FF00\\U000E0061\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\x{10330}\\x{10FF00}\\x{E0061}\\x{A0}");
+
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\uD800\\uDF30\\uDBFF\\uDF00\\uDB40\\uDC61\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/XML"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#x10330;&#x10FF00;&#xE0061;&#xA0;");
+
+        expect(Transliterator.getInstance("Any-Hex/XML10"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#66352;&#1113856;&#917601;&#160;");
+
+        expect(Transliterator.getInstance("[\\U000E0000-\\U000E0FFF] Remove"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\u00A0"));
+    }
+
+    public void TestQuantifier() {
+
+        // Make sure @ in a quantified anteContext works
+        expect("a+ {b} > | @@ c; A > a; (a+ c) > '(' $1 ')';",
+               "AAAAAb",
+               "aaa(aac)");
+
+        // Make sure @ in a quantified postContext works
+        expect("{b} a+ > c @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "caa(aaa)");
+
+        // Make sure @ in a quantified postContext with seg ref works
+        expect("{(b)} a+ > $1 @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "baa(aaa)");
+
+        // Make sure @ past ante context doesn't enter ante context
+        Transliterator.Position pos = new Transliterator.Position(0, 5, 3, 5);
+        expect("a+ {b} > | @@ c; x > y; (a+ c) > '(' $1 ')';",
+               "xxxab",
+               "xxx(ac)",
+               pos);
+
+        // Make sure @ past post context doesn't pass limit
+        Transliterator.Position pos2 = new Transliterator.Position(0, 4, 0, 2);
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "caxx",
+               pos2);
+
+        // Make sure @ past post context doesn't enter post context
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "cayy");
+
+        expect("(ab)? c > d;",
+               "c abc ababc",
+               "d d abd");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("(ab)+ {x} > '(' $1 ')';",
+               "x abx ababxy",
+               "x ab(ab) abab(ab)y");
+
+        expect("b+ > x;",
+               "ac abc abbc abbbc",
+               "ac axc axc axc");
+
+        expect("[abc]+ > x;",
+               "qac abrc abbcs abtbbc",
+               "qx xrx xs xtx");
+
+        expect("q{(ab)+} > x;",
+               "qa qab qaba qababc qaba",
+               "qa qx qxa qxc qxa");
+
+        expect("q(ab)* > x;",
+               "qa qab qaba qababc",
+               "xa x xa xc");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("q(ab)* > '(' $1 ')';",
+               "qa qab qaba qababc",
+               "()a (ab) (ab)a (ab)c");
+
+        // 'foo'+ and 'foo'* -- the quantifier should apply to the entire
+        // quoted string
+        expect("'ab'+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+
+        // $foo+ and $foo* -- the quantifier should apply to the entire
+        // variable reference
+        expect("$var = ab; $var+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+    }
+
+    static class TestFact implements Transliterator.Factory {
+        static class NameableNullTrans extends Transliterator {
+            public NameableNullTrans(String id) {
+                super(id, null);
+            }
+            protected void handleTransliterate(Replaceable text,
+                                               Position offsets, boolean incremental) {
+                offsets.start = offsets.limit;
+            }
+        }
+        String id;
+        public TestFact(String theID) {
+            id = theID;
+        }
+        public Transliterator getInstance(String ignoredID) {
+            return new NameableNullTrans(id);
+        }
+    }
+
+    public void TestSTV() {
+        Enumeration es = Transliterator.getAvailableSources();
+        for (int i=0; es.hasMoreElements(); ++i) {
+            String source = (String) es.nextElement();
+            logln("" + i + ": " + source);
+            if (source.length() == 0) {
+                errln("FAIL: empty source");
+                continue;
+            }
+            Enumeration et = Transliterator.getAvailableTargets(source);
+            for (int j=0; et.hasMoreElements(); ++j) {
+                String target = (String) et.nextElement();
+                logln(" " + j + ": " + target);
+                if (target.length() == 0) {
+                    errln("FAIL: empty target");
+                    continue;
+                }
+                Enumeration ev = Transliterator.getAvailableVariants(source, target);
+                for (int k=0; ev.hasMoreElements(); ++k) {
+                    String variant = (String) ev.nextElement();
+                    if (variant.length() == 0) {
+                        logln("  " + k + ": <empty>");
+                    } else {
+                        logln("  " + k + ": " + variant);
+                    }
+                }
+            }
+        }
+
+        // Test registration
+        String[] IDS = { "Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
+        String[] FULL_IDS = { "Any-Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
+        String[] SOURCES = { null, "Seoridf", "Oewoir" };
+        for (int i=0; i<3; ++i) {
+            Transliterator.registerFactory(IDS[i], new TestFact(IDS[i]));
+            try {
+                Transliterator t = Transliterator.getInstance(IDS[i]);
+                if (t.getID().equals(IDS[i])) {
+                    logln("Ok: Registration/creation succeeded for ID " +
+                          IDS[i]);
+                } else {
+                    errln("FAIL: Registration of ID " +
+                          IDS[i] + " creates ID " + t.getID());
+                }
+                Transliterator.unregister(IDS[i]);
+                try {
+                    t = Transliterator.getInstance(IDS[i]);
+                    errln("FAIL: Unregistration failed for ID " +
+                          IDS[i] + "; still receiving ID " + t.getID());
+                } catch (IllegalArgumentException e2) {
+                    // Good; this is what we expect
+                    logln("Ok; Unregistered " + IDS[i]);
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Registration/creation failed for ID " +
+                      IDS[i]);
+            } finally {
+                Transliterator.unregister(IDS[i]);
+            }
+        }
+
+        // Make sure getAvailable API reflects removal
+        for (Enumeration e = Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            String id = (String) e.nextElement();
+            for (int i=0; i<3; ++i) {
+                if (id.equals(FULL_IDS[i])) {
+                    errln("FAIL: unregister(" + id + ") failed");
+                }
+            }
+        }
+        for (Enumeration e = Transliterator.getAvailableTargets("Any");
+             e.hasMoreElements(); ) {
+            String t = (String) e.nextElement();
+            if (t.equals(IDS[0])) {
+                errln("FAIL: unregister(Any-" + t + ") failed");
+            }
+        }
+        for (Enumeration e = Transliterator.getAvailableSources();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            for (int i=0; i<3; ++i) {
+                if (SOURCES[i] == null) continue;
+                if (s.equals(SOURCES[i])) {
+                    errln("FAIL: unregister(" + s + "-*) failed");
+                }
+            }
+        }
+    }
+
+    /**
+     * Test inverse of Greek-Latin; Title()
+     */
+    public void TestCompoundInverse() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Title()", Transliterator.REVERSE);
+        if (t == null) {
+            errln("FAIL: createInstance");
+            return;
+        }
+        String exp = "(Title);Latin-Greek";
+        if (t.getID().equals(exp)) {
+            logln("Ok: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID());
+        } else {
+            errln("FAIL: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID() + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test NFD chaining with RBT
+     */
+    public void TestNFDChainRBT() {
+        Transliterator t = Transliterator.createFromRules(
+                               "TEST", "::NFD; aa > Q; a > q;",
+                               Transliterator.FORWARD);
+        logln(t.toRules(true));
+        expect(t, "aa", "Q");
+    }
+
+    /**
+     * Inverse of "Null" should be "Null". (J21)
+     */
+    public void TestNullInverse() {
+        Transliterator t = Transliterator.getInstance("Null");
+        Transliterator u = t.getInverse();
+        if (!u.getID().equals("Null")) {
+            errln("FAIL: Inverse of Null should be Null");
+        }
+    }
+
+    /**
+     * Check ID of inverse of alias. (J22)
+     */
+    public void TestAliasInverseID() {
+        String ID = "Latin-Hangul"; // This should be any alias ID with an inverse
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "Hangul-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test IDs of inverses of compound transliterators. (J20)
+     */
+    public void TestCompoundInverseID() {
+        String ID = "Latin-Jamo;NFC(NFD)";
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "NFD(NFC);Jamo-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test undefined variable.
+     */
+    public void TestUndefinedVariable() {
+        String rule = "$initial } a <> \u1161;";
+        try {
+            Transliterator.createFromRules("<ID>", rule,Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for " + rule + ", as expected: " +
+                  e.getMessage());
+            return;
+        }
+        errln("Fail: bogus rule " + rule + " compiled without error");
+    }
+
+    /**
+     * Test empty context.
+     */
+    public void TestEmptyContext() {
+        expect(" { a } > b;", "xay a ", "xby b ");
+    }
+
+    /**
+     * Test compound filter ID syntax
+     */
+    public void TestCompoundFilterID() {
+        String[] DATA = {
+            // Col. 1 = ID or rule set (latter must start with #)
+
+            // = columns > 1 are null if expect col. 1 to be illegal =
+
+            // Col. 2 = direction, "F..." or "R..."
+            // Col. 3 = source string
+            // Col. 4 = exp result
+
+            "[abc]; [abc]", null, null, null, // multiple filters
+            "Latin-Greek; [abc];", null, null, null, // misplaced filter
+            "[b]; Latin-Greek; Upper; ([xyz])", "F", "abc", "a\u0392c",
+            "[b]; (Lower); Latin-Greek; Upper(); ([\u0392])", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+            "#\n::[b]; ::Latin-Greek; ::Upper; ::([xyz]);", "F", "abc", "a\u0392c",
+            "#\n::[b]; ::(Lower); ::Latin-Greek; ::Upper(); ::([\u0392]);", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String id = DATA[i];
+            int direction = (DATA[i+1] != null && DATA[i+1].charAt(0) == 'R') ?
+                Transliterator.REVERSE : Transliterator.FORWARD;
+            String source = DATA[i+2];
+            String exp = DATA[i+3];
+            boolean expOk = (DATA[i+1] != null);
+            Transliterator t = null;
+            IllegalArgumentException e = null;
+            try {
+                if (id.charAt(0) == '#') {
+                    t = Transliterator.createFromRules("ID", id, direction);
+                } else {
+                    t = Transliterator.getInstance(id, direction);
+                }
+            } catch (IllegalArgumentException ee) {
+                e = ee;
+            }
+            boolean ok = (t != null && e == null);
+            if (ok == expOk) {
+                logln("Ok: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+                if (source != null) {
+                    expect(t, source, exp);
+                }
+            } else {
+                errln("FAIL: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+            }
+        }
+    }
+
+    /**
+     * Test new property set syntax
+     */
+    public void TestPropertySet() {
+        expect("a>A; \\p{Lu}>x; \\p{Any}>y;", "abcDEF", "Ayyxxx");
+        expect("(.+)>'[' $1 ']';", " a stitch \n in time \r saves 9",
+               "[ a stitch ]\n[ in time ]\r[ saves 9]");
+    }
+
+    /**
+     * Test various failure points of the new 2.0 engine.
+     */
+    public void TestNewEngine() {
+        Transliterator t = Transliterator.getInstance("Latin-Hiragana");
+        // Katakana should be untouched
+        expect(t, "a\u3042\u30A2", "\u3042\u3042\u30A2");
+
+        if (true) {
+            // This test will only work if Transliterator.ROLLBACK is
+            // true.  Otherwise, this test will fail, revealing a
+            // limitation of global filters in incremental mode.
+
+            Transliterator a =
+                Transliterator.createFromRules("a_to_A", "a > A;", Transliterator.FORWARD);
+            Transliterator A =
+                Transliterator.createFromRules("A_to_b", "A > b;", Transliterator.FORWARD);
+
+            //Transliterator array[] = new Transliterator[] {
+            //    a,
+            //    Transliterator.getInstance("NFD"),
+            //    A };
+            //t = Transliterator.getInstance(array, new UnicodeSet("[:Ll:]"));
+
+            try {
+                Transliterator.registerInstance(a);
+                Transliterator.registerInstance(A);
+
+                t = Transliterator.getInstance("[:Ll:];a_to_A;NFD;A_to_b");
+                expect(t, "aAaA", "bAbA");
+
+                Transliterator[] u = t.getElements();
+                assertTrue("getElements().length", u.length == 3);
+                assertEquals("getElements()[0]", u[0].getID(), "a_to_A");
+                assertEquals("getElements()[1]", u[1].getID(), "NFD");
+                assertEquals("getElements()[2]", u[2].getID(), "A_to_b");
+
+                t = Transliterator.getInstance("a_to_A;NFD;A_to_b");
+                t.setFilter(new UnicodeSet("[:Ll:]"));
+                expect(t, "aAaA", "bAbA");
+            } finally {
+                Transliterator.unregister("a_to_A"); 
+                Transliterator.unregister("A_to_b");   
+            }
+        }
+
+        expect("$smooth = x; $macron = q; [:^L:] { ([aeiouyAEIOUY] $macron?) } [^aeiouyAEIOUY$smooth$macron] > | $1 $smooth ;",
+               "a",
+               "ax");
+
+        String gr =
+            "$ddot = \u0308 ;" +
+            "$lcgvowel = [\u03b1\u03b5\u03b7\u03b9\u03bf\u03c5\u03c9] ;" +
+            "$rough = \u0314 ;" +
+            "($lcgvowel+ $ddot?) $rough > h | $1 ;" +
+            "\u03b1 <> a ;" +
+            "$rough <> h ;";
+
+        expect(gr, "\u03B1\u0314", "ha");
+    }
+
+    /**
+     * Test quantified segment behavior.  We want:
+     * ([abc])+ > x $1 x; applied to "cba" produces "xax"
+     */
+    public void TestQuantifiedSegment() {
+        // The normal case
+        expect("([abc]+) > x $1 x;", "cba", "xcbax");
+
+        // The tricky case; the quantifier is around the segment
+        expect("([abc])+ > x $1 x;", "cba", "xax");
+
+        // Tricky case in reverse direction
+        expect("([abc])+ { q > x $1 x;", "cbaq", "cbaxax");
+
+        // Check post-context segment
+        expect("{q} ([a-d])+ > '(' $1 ')';", "ddqcba", "dd(a)cba");
+
+        // Test toRule/toPattern for non-quantified segment.
+        // Careful with spacing here.
+        String r = "([a-c]){q} > x $1 x;";
+        Transliterator t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        String rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+
+        // Test toRule/toPattern for quantified segment.
+        // Careful with spacing here.
+        r = "([a-c])+{q} > x $1 x;";
+        t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+    }
+
+    //======================================================================
+    // Ram's tests
+    //======================================================================
+ /* this test performs  test of rules in ISO 15915 */
+    public void  TestDevanagariLatinRT(){
+        String[]  source = {
+            "bh\u0101rata",
+            "kra",
+            "k\u1E63a",
+            "khra",
+            "gra",
+            "\u1E45ra",
+            "cra",
+            "chra",
+            "j\u00F1a",
+            "jhra",
+            "\u00F1ra",
+            "\u1E6Dya",
+            "\u1E6Dhra",
+            "\u1E0Dya",
+        //"r\u0323ya", // \u095c is not valid in Devanagari
+            "\u1E0Dhya",
+            "\u1E5Bhra",
+            "\u1E47ra",
+            "tta",
+            "thra",
+            "dda",
+            "dhra",
+            "nna",
+            "pra",
+            "phra",
+            "bra",
+            "bhra",
+            "mra",
+            "\u1E49ra",
+        //"l\u0331ra",
+            "yra",
+            "\u1E8Fra",
+        //"l-",
+            "vra",
+            "\u015Bra",
+            "\u1E63ra",
+            "sra",
+            "hma",
+            "\u1E6D\u1E6Da",
+            "\u1E6D\u1E6Dha",
+            "\u1E6Dh\u1E6Dha",
+            "\u1E0D\u1E0Da",
+            "\u1E0D\u1E0Dha",
+            "\u1E6Dya",
+            "\u1E6Dhya",
+            "\u1E0Dya",
+            "\u1E0Dhya",
+            // Not roundtrippable --
+            // \u0939\u094d\u094d\u092E  - hma
+            // \u0939\u094d\u092E         - hma
+            // CharsToUnicodeString("hma"),
+            "hya",
+            "\u015Br\u0325",
+            "\u015Bca",
+            "\u0115",
+            "san\u0304j\u012Bb s\u0113nagupta",
+            "\u0101nand vaddir\u0101ju",
+        };
+        String[]  expected = {
+            "\u092D\u093E\u0930\u0924",    /* bha\u0304rata */
+            "\u0915\u094D\u0930",          /* kra         */
+            "\u0915\u094D\u0937",          /* ks\u0323a  */
+            "\u0916\u094D\u0930",          /* khra        */
+            "\u0917\u094D\u0930",          /* gra         */
+            "\u0919\u094D\u0930",          /* n\u0307ra  */
+            "\u091A\u094D\u0930",          /* cra         */
+            "\u091B\u094D\u0930",          /* chra        */
+            "\u091C\u094D\u091E",          /* jn\u0303a  */
+            "\u091D\u094D\u0930",          /* jhra        */
+            "\u091E\u094D\u0930",          /* n\u0303ra  */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u0930",          /* t\u0323hra */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+        //"\u095C\u094D\u092F",          /* r\u0323ya  */ // \u095c is not valid in Devanagari
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+            "\u0922\u093C\u094D\u0930",    /* r\u0323hra */
+            "\u0923\u094D\u0930",          /* n\u0323ra  */
+            "\u0924\u094D\u0924",          /* tta         */
+            "\u0925\u094D\u0930",          /* thra        */
+            "\u0926\u094D\u0926",          /* dda         */
+            "\u0927\u094D\u0930",          /* dhra        */
+            "\u0928\u094D\u0928",          /* nna         */
+            "\u092A\u094D\u0930",          /* pra         */
+            "\u092B\u094D\u0930",          /* phra        */
+            "\u092C\u094D\u0930",          /* bra         */
+            "\u092D\u094D\u0930",          /* bhra        */
+            "\u092E\u094D\u0930",          /* mra         */
+            "\u0929\u094D\u0930",          /* n\u0331ra  */
+        //"\u0934\u094D\u0930",          /* l\u0331ra  */
+            "\u092F\u094D\u0930",          /* yra         */
+            "\u092F\u093C\u094D\u0930",    /* y\u0307ra  */
+        //"l-",
+            "\u0935\u094D\u0930",          /* vra         */
+            "\u0936\u094D\u0930",          /* s\u0301ra  */
+            "\u0937\u094D\u0930",          /* s\u0323ra  */
+            "\u0938\u094D\u0930",          /* sra         */
+            "\u0939\u094d\u092E",          /* hma         */
+            "\u091F\u094D\u091F",          /* t\u0323t\u0323a  */
+            "\u091F\u094D\u0920",          /* t\u0323t\u0323ha */
+            "\u0920\u094D\u0920",          /* t\u0323ht\u0323ha*/
+            "\u0921\u094D\u0921",          /* d\u0323d\u0323a  */
+            "\u0921\u094D\u0922",          /* d\u0323d\u0323ha */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u092F",          /* t\u0323hya */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+        // "hma",                         /* hma         */
+            "\u0939\u094D\u092F",          /* hya         */
+            "\u0936\u0943",                /* s\u0301r\u0325a  */
+            "\u0936\u094D\u091A",          /* s\u0301ca  */
+            "\u090d",                      /* e\u0306    */
+            "\u0938\u0902\u091C\u0940\u092C\u094D \u0938\u0947\u0928\u0917\u0941\u092A\u094D\u0924",
+            "\u0906\u0928\u0902\u0926\u094D \u0935\u0926\u094D\u0926\u093F\u0930\u093E\u091C\u0941",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD );
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+
+    }
+    public void  TestTeluguLatinRT(){
+        String[]  source = {
+            "raghur\u0101m vi\u015Bvan\u0101dha",                           /* Raghuram Viswanadha    */
+            "\u0101nand vaddir\u0101ju",                                    /* Anand Vaddiraju        */
+            "r\u0101j\u012Bv ka\u015Barab\u0101da",                         /* Rajeev Kasarabada      */
+            "san\u0304j\u012Bv ka\u015Barab\u0101da",                       /* sanjeev kasarabada     */
+            "san\u0304j\u012Bb sen'gupta",                                  /* sanjib sengupata       */
+            "amar\u0113ndra hanum\u0101nula",                               /* Amarendra hanumanula   */
+            "ravi kum\u0101r vi\u015Bvan\u0101dha",                         /* Ravi Kumar Viswanadha  */
+            "\u0101ditya kandr\u0113gula",                                  /* Aditya Kandregula      */
+            "\u015Br\u012Bdhar ka\u1E47\u1E6Dama\u015Be\u1E6D\u1E6Di",      /* Shridhar Kantamsetty   */
+            "m\u0101dhav de\u015Be\u1E6D\u1E6Di"                            /* Madhav Desetty         */
+        };
+
+        String[]  expected = {
+            "\u0c30\u0c18\u0c41\u0c30\u0c3e\u0c2e\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c28\u0c02\u0c26\u0c4d \u0C35\u0C26\u0C4D\u0C26\u0C3F\u0C30\u0C3E\u0C1C\u0C41",
+            "\u0c30\u0c3e\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c2c\u0c4d \u0c38\u0c46\u0c28\u0c4d\u0c17\u0c41\u0c2a\u0c4d\u0c24",
+            "\u0c05\u0c2e\u0c30\u0c47\u0c02\u0c26\u0c4d\u0c30 \u0c39\u0c28\u0c41\u0c2e\u0c3e\u0c28\u0c41\u0c32",
+            "\u0c30\u0c35\u0c3f \u0c15\u0c41\u0c2e\u0c3e\u0c30\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c26\u0c3f\u0c24\u0c4d\u0c2f \u0C15\u0C02\u0C26\u0C4D\u0C30\u0C47\u0C17\u0C41\u0c32",
+            "\u0c36\u0c4d\u0c30\u0c40\u0C27\u0C30\u0C4D \u0c15\u0c02\u0c1f\u0c2e\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+            "\u0c2e\u0c3e\u0c27\u0c35\u0c4d \u0c26\u0c46\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+        };
+
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Telugu", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Telugu-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestSanskritLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java",
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //"\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestCompoundLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java"
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //  "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935"
+        };
+
+        Transliterator latinToDevToLatin=Transliterator.getInstance("Latin-Devanagari;Devanagari-Latin", Transliterator.FORWARD);
+        Transliterator devToLatinToDev=Transliterator.getInstance("Devanagari-Latin;Latin-Devanagari", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDevToLatin,(source[i]),(source[i]));
+            expect(devToLatinToDev,(expected[i]),(expected[i]));
+        }
+    }
+    /**
+     * Test Gurmukhi-Devanagari Tippi and Bindi
+     */
+    public void TestGurmukhiDevanagari(){
+        // the rule says:
+        // (\u0902) (when preceded by vowel)      --->  (\u0A02)
+        // (\u0902) (when preceded by consonant)  --->  (\u0A70)
+
+        UnicodeSet vowel =new UnicodeSet("[\u0905-\u090A \u090F\u0910\u0913\u0914 \u093e-\u0942\u0947\u0948\u094B\u094C\u094D]");
+        UnicodeSet non_vowel =new UnicodeSet("[\u0915-\u0928\u092A-\u0930]");
+
+        UnicodeSetIterator vIter = new UnicodeSetIterator(vowel);
+        UnicodeSetIterator nvIter = new UnicodeSetIterator(non_vowel);
+        Transliterator trans = Transliterator.getInstance("Devanagari-Gurmukhi");
+        StringBuffer src = new StringBuffer(" \u0902");
+        StringBuffer expect = new StringBuffer(" \u0A02");
+        while(vIter.next()){
+            src.setCharAt(0,(char) vIter.codepoint);
+            expect.setCharAt(0,(char) (vIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+
+        expect.setCharAt(1,'\u0A70');
+        while(nvIter.next()){
+            //src.setCharAt(0,(char) nvIter.codepoint);
+            src.setCharAt(0,(char)nvIter.codepoint);
+            expect.setCharAt(0,(char) (nvIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+    }
+    /**
+     * Test instantiation from a locale.
+     */
+    public void TestLocaleInstantiation() {
+        Transliterator t;
+        try{
+            t = Transliterator.getInstance("te_IN-Latin");
+            //expect(t, "\u0430", "a");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale te_IN. "+ex.getMessage());
+        }
+        try{
+            t = Transliterator.getInstance("ru_RU-Latin");
+            expect(t, "\u0430", "a");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale ru_RU. "+ex.getMessage());
+        }
+        try{
+            t = Transliterator.getInstance("en-el");
+            expect(t, "a", "\u03B1");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale el. "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Test title case handling of accent (should ignore accents)
+     */
+    public void TestTitleAccents() {
+        Transliterator t = Transliterator.getInstance("Title");
+        expect(t, "a\u0300b can't abe", "A\u0300b Can't Abe");
+    }
+
+    /**
+     * Basic test of a locale resource based rule.
+     */
+    public void TestLocaleResource() {
+        String DATA[] = {
+            // id                    from             to
+            "Latin-Greek/UNGEGN",    "b",             "\u03bc\u03c0",
+            "Latin-el",              "b",             "\u03bc\u03c0",
+            "Latin-Greek",           "b",             "\u03B2",
+            "Greek-Latin/UNGEGN",    "\u03B2",        "v",
+            "el-Latin",              "\u03B2",        "v",
+            "Greek-Latin",           "\u03B2",        "b",
+        };
+        for (int i=0; i<DATA.length; i+=3) {
+            Transliterator t = Transliterator.getInstance(DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Make sure parse errors reference the right line.
+     */
+    public void TestParseError() {
+        String rule =
+            "a > b;\n" +
+            "# more stuff\n" +
+            "d << b;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            String err = e.getMessage();
+            if (err.indexOf("d << b") >= 0) {
+                logln("Ok: " + err);
+            } else {
+                errln("FAIL: " + err);
+            }
+            return;
+        }
+        errln("FAIL: no syntax error");
+    }
+
+    /**
+     * Make sure sets on output are disallowed.
+     */
+    public void TestOutputSet() {
+        String rule = "$set = [a-cm-n]; b > $set;";
+        Transliterator t = null;
+        try {
+            t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test the use variable range pragma, making sure that use of
+     * variable range characters is detected and flagged as an error.
+     */
+    public void TestVariableRange() {
+        String rule = "use variable range 0x70 0x72; a > A; b > B; q > Q;";
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test invalid post context error handling
+     */
+    public void TestInvalidPostContext() {
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", "a}b{c>d;", Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            String msg = e.getMessage();
+            if (msg.indexOf("a}b{c") >= 0) {
+                logln("Ok: " + msg);
+            } else {
+                errln("FAIL: " + msg);
+            }
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test ID form variants
+     */
+    public void TestIDForms() {
+        String DATA[] = {
+            "NFC", null, "NFD",
+            "nfd", null, "NFC", // make sure case is ignored
+            "Any-NFKD", null, "Any-NFKC",
+            "Null", null, "Null",
+            "-nfkc", "nfkc", "NFKD",
+            "-nfkc/", "nfkc", "NFKD",
+            "Latin-Greek/UNGEGN", null, "Greek-Latin/UNGEGN",
+            "Greek/UNGEGN-Latin", "Greek-Latin/UNGEGN", "Latin-Greek/UNGEGN",
+            "Bengali-Devanagari/", "Bengali-Devanagari", "Devanagari-Bengali",
+            "Source-", null, null,
+            "Source/Variant-", null, null,
+            "Source-/Variant", null, null,
+            "/Variant", null, null,
+            "/Variant-", null, null,
+            "-/Variant", null, null,
+            "-/", null, null,
+            "-", null, null,
+            "/", null, null,
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String ID = DATA[i];
+            String expID = DATA[i+1];
+            String expInvID = DATA[i+2];
+            boolean expValid = (expInvID != null);
+            if (expID == null) {
+                expID = ID;
+            }
+            try {
+                Transliterator t =
+                    Transliterator.getInstance(ID);
+                Transliterator u = t.getInverse();
+                if (t.getID().equals(expID) &&
+                    u.getID().equals(expInvID)) {
+                    logln("Ok: " + ID + ".getInverse() => " + expInvID);
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " +
+                          t.getID() + " x getInverse() => " + u.getID() +
+                          ", expected " + expInvID);
+                }
+            } catch (IllegalArgumentException e) {
+                if (!expValid) {
+                    logln("Ok: getInstance(" + ID + ") => " + e.getMessage());
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    void checkRules(String label, Transliterator t2, String testRulesForward) {
+        String rules2 = t2.toRules(true);
+        //rules2 = TestUtility.replaceAll(rules2, new UnicodeSet("[' '\n\r]"), "");
+        rules2 = TestUtility.replace(rules2, " ", "");
+        rules2 = TestUtility.replace(rules2, "\n", "");
+        rules2 = TestUtility.replace(rules2, "\r", "");
+        testRulesForward = TestUtility.replace(testRulesForward, " ", "");
+
+        if (!rules2.equals(testRulesForward)) {
+            errln(label);
+            logln("GENERATED RULES: " + rules2);
+            logln("SHOULD BE:       " + testRulesForward);
+        }
+    }
+
+    /**
+     * Mark's toRules test.
+     */
+    public void TestToRulesMark() {
+
+        String testRules =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD (NFC);"
+            + "::Lower (Lower);"
+            + "a <> \\u03B1;" // alpha
+            + "::NFKC (NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            + "::([[:Greek:][:Mark:]]);"
+            ;
+        String testRulesForward =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD(NFC);"
+            + "::Lower(Lower);"
+            + "a > \\u03B1;"
+            + "::NFKC(NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            ;
+        String testRulesBackward =
+            "::[[:Greek:][:Mark:]];"
+            + "::Lower (Upper);"
+            + "::NFD(NFKC);"
+            + "\\u03B1 > a;"
+            + "::Lower(Lower);"
+            + "::NFC(NFKD);"
+            ;
+        String source = "\u00E1"; // a-acute
+        String target = "\u03AC"; // alpha-acute
+
+        Transliterator t2 = Transliterator.createFromRules("source-target", testRules, Transliterator.FORWARD);
+        Transliterator t3 = Transliterator.createFromRules("target-source", testRules, Transliterator.REVERSE);
+
+        expect(t2, source, target);
+        expect(t3, target, source);
+
+        checkRules("Failed toRules FORWARD", t2, testRulesForward);
+        checkRules("Failed toRules BACKWARD", t3, testRulesBackward);
+    }
+
+    /**
+     * Test Escape and Unescape transliterators.
+     */
+    public void TestEscape() {
+        expect(Transliterator.getInstance("Hex-Any"),
+               "\\x{40}\\U00000031&#x32;&#81;",
+               "@12Q");
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\U0010BEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\uDBEF\\uDEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\x{41}\\x{10BEEF}\\x{FEED}");
+    }
+
+    /**
+     * Make sure display names of variants look reasonable.
+     */
+    public void TestDisplayName() {
+        String DATA[] = {
+            // ID, forward name, reverse name
+            // Update the text as necessary -- the important thing is
+            // not the text itself, but how various cases are handled.
+
+            // Basic test
+            "Any-Hex", "Any to Hex Escape", "Hex Escape to Any",
+
+            // Variants
+            "Any-Hex/Perl", "Any to Hex Escape/Perl", "Hex Escape to Any/Perl",
+
+            // Target-only IDs
+            "NFC", "Any to NFC", "Any to NFD",
+        };
+
+        Locale US = Locale.US;
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String name = Transliterator.getDisplayName(DATA[i], US);
+            if (!name.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+1]);
+            } else {
+                logln("Ok: " + DATA[i] + ".getDisplayName() => " + name);
+            }
+            Transliterator t = Transliterator.getInstance(DATA[i], Transliterator.REVERSE);
+            name = Transliterator.getDisplayName(t.getID(), US);
+            if (!name.equals(DATA[i+2])) {
+                errln("FAIL: " + t.getID() + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+2]);
+            } else {
+                logln("Ok: " + t.getID() + ".getDisplayName() => " + name);
+            }
+            
+            // Cover getDisplayName(String)
+            ULocale save = ULocale.getDefault();
+            ULocale.setDefault(ULocale.US);
+            String name2 = Transliterator.getDisplayName(t.getID());
+            if (!name.equals(name2))
+                errln("FAIL: getDisplayName with default locale failed");
+            ULocale.setDefault(save);
+        }
+    }
+
+    /**
+     * Test anchor masking
+     */
+    public void TestAnchorMasking() {
+        String rule = "^a > Q; a > q;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t==null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: " + rule + " => " + e);
+        }
+    }
+
+    /**
+     * This test is not in trnstst.cpp. This test has been moved from com/ibm/icu/dev/test/lang/TestUScript.java
+     * during ICU4J modularization to remove dependency of tests on Transliterator.
+     */
+     public void TestScriptAllCodepoints(){
+            int code;
+            HashSet  scriptIdsChecked   = new HashSet();
+            HashSet  scriptAbbrsChecked = new HashSet();
+            for( int i =0; i <= 0x10ffff; i++){
+                code = UScript.getScript(i);
+                if(code==UScript.INVALID_CODE){
+                    errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+                }
+                 String id =UScript.getName(code);
+                 String abbr = UScript.getShortName(code);
+                 if (!scriptIdsChecked.contains(id)) {
+                     scriptIdsChecked.add(id);
+                     String newId ="[:"+id+":];NFD";
+                     try{
+                         Transliterator t = Transliterator.getInstance(newId);
+                         if(t==null){
+                              errln("Failed to create transliterator for "+hex(i)+
+                              " script code: " +id);
+                         }
+                     }catch(Exception e){
+                         errln("Failed to create transliterator for "+hex(i)
+                                 +" script code: " +id
+                                 + " Exception: "+e.getMessage());
+                     }
+                 }
+                 if (!scriptAbbrsChecked.contains(abbr)) {
+                     scriptAbbrsChecked.add(abbr);
+                     String newAbbrId ="[:"+abbr+":];NFD";
+                     try{
+                         Transliterator t = Transliterator.getInstance(newAbbrId);
+                         if(t==null){
+                              errln("Failed to create transliterator for "+hex(i)+
+                              " script code: " +abbr);
+                         }
+                     }catch(Exception e){
+                         errln("Failed to create transliterator for "+hex(i)
+                                 +" script code: " +abbr
+                                 + " Exception: "+e.getMessage());
+                     }
+                 }
+            }
+    }
+
+
+    static final String[][] registerRules = {
+        {"Any-Dev1", "x > X; y > Y;"},
+        {"Any-Dev2", "XY > Z"},
+        {"Greek-Latin/FAKE",
+            "[^[:L:][:M:]] { \u03bc\u03c0 > b ; "+
+            "\u03bc\u03c0 } [^[:L:][:M:]] > b ; "+
+            "[^[:L:][:M:]] { [\u039c\u03bc][\u03a0\u03c0] > B ; "+
+            "[\u039c\u03bc][\u03a0\u03c0] } [^[:L:][:M:]] > B ;"
+            },
+    };
+
+    static final String DESERET_DEE = UTF16.valueOf(0x10414);
+    static final String DESERET_dee = UTF16.valueOf(0x1043C);
+
+    static final String[][] testCases = {
+
+        // NORMALIZATION
+        // should add more test cases
+        {"NFD" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFC" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKD", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKC", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+
+        // mp -> b BUG
+        {"Greek-Latin/UNGEGN", "(\u03BC\u03C0)", "(b)"},
+        {"Greek-Latin/FAKE", "(\u03BC\u03C0)", "(b)"},
+
+        // check for devanagari bug
+        {"nfd;Dev1;Dev2;nfc", "xy", "Z"},
+
+        // ff, i, dotless-i, I, dotted-I, LJLjlj deseret deeDEE
+        {"Title", "ab'cD ffi\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "Ab'cd Ffi\u0131ii\u0307 \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+        //TODO: enable this test once Titlecase works right
+        //{"Title", "\uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+        //          "Ffi\u0131ii \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " + DESERET_DEE + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " + DESERET_dee + DESERET_dee},
+
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+
+         // FORMS OF S
+        {"Greek-Latin/UNGEGN", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek/UNGEGN", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+        {"Greek-Latin", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+
+        // Tatiana bug
+        // Upper: TAT\u02B9\u00C2NA
+        // Lower: tat\u02B9\u00E2na
+        // Title: Tat\u02B9\u00E2na
+        {"Upper", "tat\u02B9\u00E2na", "TAT\u02B9\u00C2NA"},
+        {"Lower", "TAT\u02B9\u00C2NA", "tat\u02B9\u00E2na"},
+        {"Title", "tat\u02B9\u00E2na", "Tat\u02B9\u00E2na"},
+    };
+
+    public void TestSpecialCases() {
+
+        for (int i = 0; i < registerRules.length; ++i) {
+            Transliterator t = Transliterator.createFromRules(registerRules[i][0],
+                registerRules[i][1], Transliterator.FORWARD);
+            DummyFactory.add(registerRules[i][0], t);
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            String name = testCases[i][0];
+            Transliterator t = Transliterator.getInstance(name);
+            String id = t.getID();
+            String source = testCases[i][1];
+            String target = null;
+
+            // Automatic generation of targets, to make it simpler to add test cases (and more fail-safe)
+
+            if (testCases[i].length > 2)    target = testCases[i][2];
+            else if (id.equalsIgnoreCase("NFD"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFD);
+            else if (id.equalsIgnoreCase("NFC"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFC);
+            else if (id.equalsIgnoreCase("NFKD"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKD);
+            else if (id.equalsIgnoreCase("NFKC"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKC);
+            else if (id.equalsIgnoreCase("Lower"))  target = UCharacter.toLowerCase(Locale.US, source);
+            else if (id.equalsIgnoreCase("Upper"))  target = UCharacter.toUpperCase(Locale.US, source);
+
+            expect(t, source, target);
+        }
+        for (int i = 0; i < registerRules.length; ++i) {
+            Transliterator.unregister(registerRules[i][0]);
+        }
+    }
+
+    // seems like there should be an easier way to just register an instance of a transliterator
+
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            //System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+
+    public void TestSurrogateCasing () {
+        // check that casing handles surrogates
+        // titlecase is currently defective
+        int dee = UTF16.charAt(DESERET_dee,0);
+        int DEE = UCharacter.toTitleCase(dee);
+        if (!UTF16.valueOf(DEE).equals(DESERET_DEE)) {
+            errln("Fails titlecase of surrogates" + Integer.toString(dee,16) + ", " + Integer.toString(DEE,16));
+        }
+
+        if (!UCharacter.toUpperCase(DESERET_dee + DESERET_DEE).equals(DESERET_DEE + DESERET_DEE)) {
+            errln("Fails uppercase of surrogates");
+        }
+
+        if (!UCharacter.toLowerCase(DESERET_dee + DESERET_DEE).equals(DESERET_dee + DESERET_dee)) {
+            errln("Fails lowercase of surrogates");
+        }
+    }
+
+    // Check to see that incremental gets at least part way through a reasonable string.
+
+    public void TestIncrementalProgress() {
+        String latinTest = "The Quick Brown Fox.";
+        String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest);
+        String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest);
+        String[][] tests = {
+            {"Any", latinTest},
+            {"Latin", latinTest},
+            {"Halfwidth", latinTest},
+            {"Devanagari", devaTest},
+            {"Katakana", kataTest},
+        };
+
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            String test = findMatch(source, tests);
+            if (test == null) {
+                logln("Skipping " + source + "-X");
+                continue;
+            }
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target + "/" + variant;
+                    logln("id: " + id);
+
+                    String filter = getTranslitTestFilter();
+                    if (filter != null && id.indexOf(filter) < 0) continue;
+
+                    Transliterator t = Transliterator.getInstance(id);
+                    CheckIncrementalAux(t, test);
+
+                    String rev = t.transliterate(test);
+                    Transliterator inv = t.getInverse();
+                    CheckIncrementalAux(inv, rev);
+                }
+            }
+        }
+    }
+
+    public String findMatch (String source, String[][] pairs) {
+        for (int i = 0; i < pairs.length; ++i) {
+            if (source.equalsIgnoreCase(pairs[i][0])) return pairs[i][1];
+        }
+        return null;
+    }
+
+    public void CheckIncrementalAux(Transliterator t, String input) {
+
+        Replaceable test = new ReplaceableString(input);
+        Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length());
+        t.transliterate(test, pos);
+        boolean gotError = false;
+
+        // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X?
+
+        if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) {
+            errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos));
+            gotError = true;
+        } else {
+            logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos));
+        }
+        t.finishTransliteration(test, pos);
+        if (pos.start != pos.limit) {
+            errln("Incomplete, " + t.getID() + ":  " + UtilityExtensions.formatInput(test, pos));
+            gotError = true;
+        }
+        if(!gotError){
+            //errln("FAIL: Did not get expected error");
+        }
+    }
+
+    public void TestFunction() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule =
+            "([:Lu:]) > $1 '(' &Lower( $1 ) '=' &Hex( &Any-Lower( $1 ) ) ')';";
+
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        expect(t, "The Quick Brown Fox",
+               "T(t=\\u0074)he Q(q=\\u0071)uick B(b=\\u0062)rown F(f=\\u0066)ox");
+        rule =
+            "([^\\ -\\u007F]) > &Hex/Unicode( $1 ) ' ' &Name( $1 ) ;";
+
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        expect(t, "\u0301",
+               "U+0301 \\N{COMBINING ACUTE ACCENT}");
+    }
+
+    public void TestInvalidBackRef() {
+        String rule =  ". > $1;";
+        String rule2 ="(.) <> &hex/unicode($1) &name($1); . > $1; [{}] >\u0020;";
+        try {
+            Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+            if (t != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+            errln("FAIL: Ok: . > $1; => no error");
+            Transliterator t2= Transliterator.createFromRules("Test2", rule2, Transliterator.FORWARD);
+            if (t2 != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+            errln("FAIL: Ok: . > $1; => no error");
+        } catch (IllegalArgumentException e) {
+             logln("Ok: . > $1; => " + e.getMessage());
+        }
+    }
+
+    public void TestMulticharStringSet() {
+        // Basic testing
+        String rule =
+            "       [{aa}]       > x;" +
+            "         a          > y;" +
+            "       [b{bc}]      > z;" +
+            "[{gd}] { e          > q;" +
+            "         e } [{fg}] > r;" ;
+
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        expect(t, "a aa ab bc d gd de gde gdefg ddefg",
+                  "y x yz z d gd de gdq gdqfg ddrfg");
+
+        // Overlapped string test.  Make sure that when multiple
+        // strings can match that the longest one is matched.
+        rule =
+            "    [a {ab} {abc}]    > x;" +
+            "           b          > y;" +
+            "           c          > z;" +
+            " q [t {st} {rst}] { e > p;" ;
+
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        expect(t, "a ab abc qte qste qrste",
+                  "x x x qtp qstp qrstp");
+    }
+
+    /**
+     * Test that user-registered transliterators can be used under function
+     * syntax.
+     */
+    public void TestUserFunction() {
+        Transliterator t;
+
+        // There's no need to register inverses if we don't use them
+        TestUserFunctionFactory.add("Any-gif",
+            Transliterator.createFromRules("gif",
+                "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';",
+                Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));
+
+        TestUserFunctionFactory.add("Any-RemoveCurly",
+            Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ; \\\\N > ;", Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+
+        logln("Trying &hex");
+        t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-hex2", t);
+        t = Transliterator.getInstance("Any-hex2");
+        expect(t, "abc", "\\u0061\\u0062\\u0063");
+
+        logln("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &Gif(&Hex2($1));", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-gif2", t);
+        t = Transliterator.getInstance("Any-gif2");
+        expect(t, "ab", "<img src=\"http://www.unicode.org/gifs/24/00/U0061.gif\">" +
+               "<img src=\"http://www.unicode.org/gifs/24/00/U0062.gif\">");
+
+        // Test that filters are allowed after &
+        t = Transliterator.createFromRules("test",
+                "(.) > &Hex($1) ' ' &Any-RemoveCurly(&Name($1)) ' ';", Transliterator.FORWARD);
+        expect(t, "abc", "\\u0061 LATIN SMALL LETTER A \\u0062 LATIN SMALL LETTER B \\u0063 LATIN SMALL LETTER C ");
+
+        // Unregister our test stuff
+        TestUserFunctionFactory.unregister();
+    }
+
+    static class TestUserFunctionFactory implements Transliterator.Factory {
+        static TestUserFunctionFactory singleton = new TestUserFunctionFactory();
+        static HashMap m = new HashMap();
+
+        static void add(String ID, Transliterator t) {
+            m.put(new CaseInsensitiveString(ID), t);
+            Transliterator.registerFactory(ID, singleton);
+        }
+
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(new CaseInsensitiveString(ID));
+        }
+
+        static void unregister() {
+            Iterator ids = m.keySet().iterator();
+            while (ids.hasNext()) {
+                CaseInsensitiveString id = (CaseInsensitiveString) ids.next();
+                Transliterator.unregister(id.getString());
+                ids.remove(); // removes pair from m
+            }
+        }
+    }
+
+    /**
+     * Test the Any-X transliterators.
+     */
+    public void TestAnyX() {
+        Transliterator anyLatin =
+            Transliterator.getInstance("Any-Latin", Transliterator.FORWARD);
+
+        expect(anyLatin,
+               "greek:\u03B1\u03B2\u03BA\u0391\u0392\u039A hiragana:\u3042\u3076\u304F cyrillic:\u0430\u0431\u0446",
+               "greek:abkABK hiragana:abuku cyrillic:abc");
+    }
+
+    /**
+     * Test the source and target set API.  These are only implemented
+     * for RBT and CompoundTransliterator at this time.
+     */
+    public void TestSourceTargetSet() {
+        // Rules
+        String r =
+            "a > b; " +
+            "r [x{lu}] > q;";
+
+        // Expected source
+        UnicodeSet expSrc = new UnicodeSet("[arx{lu}]");
+
+        // Expected target
+        UnicodeSet expTrg = new UnicodeSet("[bq]");
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+        UnicodeSet src = t.getSourceSet();
+        UnicodeSet trg = t.getTargetSet();
+
+        if (src.equals(expSrc) && trg.equals(expTrg)) {
+            logln("Ok: " + r + " => source = " + src.toPattern(true) +
+                  ", target = " + trg.toPattern(true));
+        } else {
+            errln("FAIL: " + r + " => source = " + src.toPattern(true) +
+                  ", expected " + expSrc.toPattern(true) +
+                  "; target = " + trg.toPattern(true) +
+                  ", expected " + expTrg.toPattern(true));
+        }
+    }
+
+    /**
+     * Test handling of rule whitespace, for both RBT and UnicodeSet.
+     */
+    public void TestRuleWhitespace() {
+        // Rules
+        String r = "a > \u200E b;";
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+
+        expect(t, "a", "b");
+
+        // UnicodeSet
+        UnicodeSet set = new UnicodeSet("[a \u200E]");
+
+        if (set.contains(0x200E)) {
+            errln("FAIL: U+200E not being ignored by UnicodeSet");
+        }
+    }
+
+    public void TestAlternateSyntax() {
+        // U+2206 == &
+        // U+2190 == <
+        // U+2192 == >
+        // U+2194 == <>
+        expect("a \u2192 x; b \u2190 y; c \u2194 z",
+               "abc",
+               "xbz");
+        expect("([:^ASCII:]) \u2192 \u2206Name($1);",
+               "<=\u2190; >=\u2192; <>=\u2194; &=\u2206",
+               "<=\\N{LEFTWARDS ARROW}; >=\\N{RIGHTWARDS ARROW}; <>=\\N{LEFT RIGHT ARROW}; &=\\N{INCREMENT}");
+    }
+
+    public void TestPositionAPI() {
+        Transliterator.Position a = new Transliterator.Position(3,5,7,11);
+        Transliterator.Position b = new Transliterator.Position(a);
+        Transliterator.Position c = new Transliterator.Position();
+        c.set(a);
+        // Call the toString() API:
+        if (a.equals(b) && a.equals(c)) {
+            logln("Ok: " + a + " == " + b + " == " + c);
+        } else {
+            errln("FAIL: " + a + " != " + b + " != " + c);
+        }
+    }
+    
+    //======================================================================
+    // New tests for the ::BEGIN/::END syntax
+    //======================================================================
+
+    private static final String[] BEGIN_END_RULES = new String[] {
+        // [0]
+        "abc > xy;"
+        + "aba > z;",
+
+        // [1]
+/*
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [2]
+/*
+        "abc > xy;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [3]
+/*
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "aba > z;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [4]
+        "abc > xy;"
+        + "::Null;"
+        + "aba > z;",
+
+        // [5]
+        "::Upper;"
+        + "ABC > xy;"
+        + "AB > x;"
+        + "C > z;"
+        + "::Upper;"
+        + "XYZ > p;"
+        + "XY > q;"
+        + "Z > r;"
+        + "::Upper;",
+
+        // [6]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [7]
+        "::Null;"
+        + "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [8]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::Null;",
+
+        // [9]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::Null;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [10]
+/*
+        "::BEGIN;"
+        + "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::END;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [11]
+/*
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::BEGIN;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [12]
+/*
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ab = [ab];"
+        + "::BEGIN;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::END;"
+        + "::BEGIN;"
+        + "$ab { ' ' } $ab > '-';"
+        + "c { ' ' > ;"
+        + "::END;"
+        + "::BEGIN;"
+        + "'a-a' > a\\%|a;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [13]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ab = [ab];"
+        + "::Null;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::Null;"
+        + "$ab { ' ' } $ab > '-';"
+        + "c { ' ' > ;"
+        + "::Null;"
+        + "'a-a' > a\\%|a;",
+
+        // [14]
+/*
+        "::[abc];"
+        + "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba > yz;"
+        + "::END;"
+        + "::Upper;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [15]
+        "::[abc];"
+        + "abc > xy;"
+        + "::Null;"
+        + "aba > yz;"
+        + "::Upper;",
+
+        // [16]
+/*
+        "::[abc];"
+        + "::BEGIN;"
+        + "abc <> xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba <> yz;"
+        + "::END;"
+        + "::Upper(Lower);"
+        + "::([XYZ]);",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [17]
+        "::[abc];"
+        + "abc <> xy;"
+        + "::Null;"
+        + "aba <> yz;"
+        + "::Upper(Lower);"
+        + "::([XYZ]);"
+    };
+
+/*
+(This entire test is commented out below and will need some heavy revision when we re-add
+the ::BEGIN/::END stuff)
+    private static final String[] BOGUS_BEGIN_END_RULES = new String[] {
+        // [7]
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;"
+        + "::END;",
+
+        // [8]
+        "abc > xy;"
+        + " aba > z;"
+        + "::END;",
+
+        // [9]
+        "::BEGIN;"
+        + "::Upper;"
+        + "::END;"
+    };
+*/
+
+    private static final String[] BEGIN_END_TEST_CASES = new String[] {
+        BEGIN_END_RULES[0], "abc ababc aba", "xy zbc z",
+//        BEGIN_END_RULES[1], "abc ababc aba", "xy abxy z",
+//        BEGIN_END_RULES[2], "abc ababc aba", "xy abxy z",
+//        BEGIN_END_RULES[3], "abc ababc aba", "xy abxy z",
+        BEGIN_END_RULES[4], "abc ababc aba", "xy abxy z",
+        BEGIN_END_RULES[5], "abccabaacababcbc", "PXAARXQBR",
+
+        BEGIN_END_RULES[6], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[7], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[8], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[9], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[10], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[11], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[12], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[12], "a    a    a    a", "a%a%a%a",
+//        BEGIN_END_RULES[12], "a a-b c b a", "a%a-b cb-a",
+        BEGIN_END_RULES[13], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[13], "a    a    a    a", "a%a%a%a",
+        BEGIN_END_RULES[13], "a a-b c b a", "a%a-b cb-a",
+
+//        BEGIN_END_RULES[14], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+        BEGIN_END_RULES[15], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+//        BEGIN_END_RULES[16], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+        BEGIN_END_RULES[17], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ"
+    };
+
+    public void TestBeginEnd() {
+        // run through the list of test cases above
+        for (int i = 0; i < BEGIN_END_TEST_CASES.length; i += 3) {
+            expect(BEGIN_END_TEST_CASES[i], BEGIN_END_TEST_CASES[i + 1], BEGIN_END_TEST_CASES[i + 2]);
+        }
+
+        // instantiate the one reversible rule set in the reverse direction and make sure it does the right thing
+        Transliterator reversed  = Transliterator.createFromRules("Reversed", BEGIN_END_RULES[17],
+                Transliterator.REVERSE);
+        expect(reversed, "xy XY XYZ yz YZ", "xy abc xaba yz aba");
+
+        // finally, run through the list of syntactically-ill-formed rule sets above and make sure
+        // that all of them cause errors
+/*
+(commented out until we have the real ::BEGIN/::END stuff in place
+        for (int i = 0; i < BOGUS_BEGIN_END_RULES.length; i++) {
+            try {
+                Transliterator t = Transliterator.createFromRules("foo", BOGUS_BEGIN_END_RULES[i],
+                        Transliterator.FORWARD);
+                errln("Should have gotten syntax error from " + BOGUS_BEGIN_END_RULES[i]);
+            }
+            catch (IllegalArgumentException e) {
+                // this is supposed to happen; do nothing here
+            }
+        }
+*/
+    }
+
+    public void TestBeginEndToRules() {
+        // run through the same list of test cases we used above, but this time, instead of just
+        // instantiating a Transliterator from the rules and running the test against it, we instantiate
+        // a Transliterator from the rules, do toRules() on it, instantiate a Transliterator from
+        // the resulting set of rules, and make sure that the generated rule set is semantically equivalent
+        // to (i.e., does the same thing as) the original rule set
+        for (int i = 0; i < BEGIN_END_TEST_CASES.length; i += 3) {
+            Transliterator t = Transliterator.createFromRules("--", BEGIN_END_TEST_CASES[i],
+                    Transliterator.FORWARD);
+            String rules = t.toRules(false);
+            Transliterator t2 = Transliterator.createFromRules("Test case #" + (i / 3), rules, Transliterator.FORWARD);
+            expect(t2, BEGIN_END_TEST_CASES[i + 1], BEGIN_END_TEST_CASES[i + 2]);
+        }
+
+        // do the same thing for the reversible test case
+        Transliterator reversed = Transliterator.createFromRules("Reversed", BEGIN_END_RULES[17],
+                Transliterator.REVERSE);
+        String rules = reversed.toRules(false);
+        Transliterator reversed2 = Transliterator.createFromRules("Reversed", rules, Transliterator.FORWARD);
+        expect(reversed2, "xy XY XYZ yz YZ", "xy abc xaba yz aba");
+    }
+
+    public void TestRegisterAlias() {
+        String longID = "Lower;[aeiou]Upper";
+        String shortID = "Any-CapVowels";
+        String reallyShortID = "CapVowels";
+
+        Transliterator.registerAlias(shortID, longID);
+
+        Transliterator t1 = Transliterator.getInstance(longID);
+        Transliterator t2 = Transliterator.getInstance(reallyShortID);
+
+        if (!t1.getID().equals(longID))
+            errln("Transliterator instantiated with long ID doesn't have long ID");
+        if (!t2.getID().equals(reallyShortID))
+            errln("Transliterator instantiated with short ID doesn't have short ID");
+
+        if (!t1.toRules(true).equals(t2.toRules(true)))
+            errln("Alias transliterators aren't the same");
+
+        Transliterator.unregister(shortID);
+
+        try {
+            t1 = Transliterator.getInstance(shortID);
+            errln("Instantiation with short ID succeeded after short ID was unregistered");
+        }
+        catch (IllegalArgumentException e) {
+        }
+
+        // try the same thing again, but this time with something other than
+        // an instance of CompoundTransliterator
+        String realID = "Latin-Greek";
+        String fakeID = "Latin-dlgkjdflkjdl";
+        Transliterator.registerAlias(fakeID, realID);
+
+        t1 = Transliterator.getInstance(realID);
+        t2 = Transliterator.getInstance(fakeID);
+
+        if (!t1.toRules(true).equals(t2.toRules(true)))
+            errln("Alias transliterators aren't the same");
+
+        Transliterator.unregister(fakeID);
+    }
+
+    /**
+     * Test the Halfwidth-Fullwidth transliterator (ticket 6281).
+     */
+    public void TestHalfwidthFullwidth() {
+        Transliterator hf = Transliterator.getInstance("Halfwidth-Fullwidth");
+        Transliterator fh = Transliterator.getInstance("Fullwidth-Halfwidth");
+
+        // Array of 3n items
+        // Each item is
+        //   "hf"|"fh"|"both",
+        //   <Halfwidth>,
+        //   <Fullwidth>
+        String[] DATA = {
+            "both",
+            "\uFFE9\uFFEA\uFFEB\uFFEC\u0061\uFF71\u00AF\u0020",
+            "\u2190\u2191\u2192\u2193\uFF41\u30A2\uFFE3\u3000",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            switch (DATA[i].charAt(0)) {
+            case 'h': // Halfwidth-Fullwidth only
+                expect(hf, DATA[i+1], DATA[i+2]);
+                break;
+            case 'f': // Fullwidth-Halfwidth only
+                expect(fh, DATA[i+2], DATA[i+1]);
+                break;
+            case 'b': // both directions
+                expect(hf, DATA[i+1], DATA[i+2]);
+                expect(fh, DATA[i+2], DATA[i+1]);
+                break;
+            }
+        }
+
+    }
+    
+    /**
+     *  Test Thai.  The text is the first paragraph of "What is Unicode" from the Unicode.org web site.
+     *              TODO: confirm that the expected results are correct.
+     *              For now, test just confirms that C++ and Java give identical results.
+     */
+    public void TestThai() {
+        Transliterator tr = Transliterator.getInstance("Any-Latin", Transliterator.FORWARD);
+        String thaiText = 
+            "\u0e42\u0e14\u0e22\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27, \u0e04\u0e2d" +
+            "\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e40\u0e01\u0e35\u0e48\u0e22" +
+            "\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e02\u0e2d" +
+            "\u0e07\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02. \u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d" +
+            "\u0e23\u0e4c\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29" +
+            "\u0e23\u0e41\u0e25\u0e30\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e42" +
+            "\u0e14\u0e22\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25" +
+            "\u0e02\u0e43\u0e2b\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e25\u0e30\u0e15" +
+            "\u0e31\u0e27. \u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e4a Unicode \u0e08" +
+            "\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19, \u0e44\u0e14\u0e49" +
+            "\u0e21\u0e35\u0e23\u0e30\u0e1a\u0e1a encoding \u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e25\u0e32\u0e22\u0e23" +
+            "\u0e49\u0e2d\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23" +
+            "\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e40\u0e2b\u0e25\u0e48" +
+            "\u0e32\u0e19\u0e35\u0e49. \u0e44\u0e21\u0e48\u0e21\u0e35 encoding \u0e43\u0e14\u0e17\u0e35\u0e48" +
+            "\u0e21\u0e35\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30" +
+            "\u0e21\u0e32\u0e01\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d: \u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d" +
+            "\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19, \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e19\u0e01" +
+            "\u0e25\u0e38\u0e48\u0e21\u0e2a\u0e2b\u0e20\u0e32\u0e1e\u0e22\u0e38\u0e42\u0e23\u0e1b\u0e40\u0e1e" +
+            "\u0e35\u0e22\u0e07\u0e41\u0e2b\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e01\u0e47\u0e15\u0e49" +
+            "\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2b\u0e25\u0e32\u0e22 encoding \u0e43\u0e19\u0e01\u0e32\u0e23\u0e04" +
+            "\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e17\u0e38\u0e01\u0e20\u0e32\u0e29\u0e32\u0e43\u0e19" +
+            "\u0e01\u0e25\u0e38\u0e48\u0e21. \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e21\u0e49\u0e41\u0e15\u0e48\u0e43" +
+            "\u0e19\u0e20\u0e32\u0e29\u0e32\u0e40\u0e14\u0e35\u0e48\u0e22\u0e27 \u0e40\u0e0a\u0e48\u0e19 \u0e20" +
+            "\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 \u0e01\u0e47\u0e44\u0e21\u0e48\u0e21\u0e35" +
+            " encoding \u0e43\u0e14\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e2a\u0e33\u0e2b" +
+            "\u0e23\u0e31\u0e1a\u0e17\u0e38\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23, \u0e40\u0e04" +
+            "\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e27\u0e23\u0e23\u0e04\u0e15\u0e2d\u0e19" +
+            " \u0e41\u0e25\u0e30\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e17\u0e32\u0e07\u0e40" +
+            "\u0e17\u0e04\u0e19\u0e34\u0e04\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e19\u0e2d\u0e22" +
+            "\u0e39\u0e48\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b.";
+
+        String latinText = 
+            "doy ph\u1ee5\u0304\u0302n \u1e6d\u0304h\u0101n l\u00e6\u0302w, khxmphiwtexr\u0312 ca ke\u012b\u0300" +
+            "ywk\u0304\u0125xng k\u1ea1b re\u1ee5\u0304\u0300xng k\u0304hxng t\u1ea1wlek\u0304h. khxmphiwtexr" +
+            "\u0312 c\u1ea1d k\u0115b t\u1ea1w x\u1ea1ks\u0304\u02b9r l\u00e6a x\u1ea1kk\u0304h ra x\u1ee5\u0304" +
+            "\u0300n\u00ab doy k\u0101r k\u1ea3h\u0304nd h\u0304m\u0101ylek\u0304h h\u0304\u0131\u0302 s\u0304" +
+            "\u1ea3h\u0304r\u1ea1b t\u00e6\u0300la t\u1ea1w. k\u0300xn h\u0304n\u0302\u0101 th\u012b\u0300\u0301" +
+            " Unicode ca t\u0304h\u016bk s\u0304r\u0302\u0101ng k\u0304h\u1ee5\u0302n, d\u1ecb\u0302 m\u012b " +
+            "rabb encoding xy\u016b\u0300 h\u0304l\u0101y r\u0302xy rabb s\u0304\u1ea3h\u0304r\u1ea1b k\u0101" +
+            "r k\u1ea3h\u0304nd h\u0304m\u0101ylek\u0304h h\u0304el\u0300\u0101 n\u012b\u0302. m\u1ecb\u0300m" +
+            "\u012b encoding d\u0131 th\u012b\u0300 m\u012b c\u1ea3nwn t\u1ea1w x\u1ea1kk\u0304hra m\u0101k p" +
+            "he\u012byng phx: yk t\u1ea1wx\u1ef3\u0101ng ch\u00e8n, c\u0304heph\u0101a n\u0131 kl\u00f9m s\u0304" +
+            "h\u0304p\u0323h\u0101ph yurop phe\u012byng h\u0304\u00e6\u0300ng de\u012byw k\u0306 t\u0302xngk\u0101" +
+            "r h\u0304l\u0101y encoding n\u0131 k\u0101r khrxbkhlum thuk p\u0323h\u0101s\u0304\u02b9\u0101 n\u0131" +
+            " kl\u00f9m. h\u0304r\u1ee5\u0304x m\u00e6\u0302t\u00e6\u0300 n\u0131 p\u0323h\u0101s\u0304\u02b9" +
+            "\u0101 de\u012b\u0300yw ch\u00e8n p\u0323h\u0101s\u0304\u02b9\u0101 x\u1ea1ngkvs\u0304\u02b9 k\u0306" +
+            " m\u1ecb\u0300m\u012b encoding d\u0131 th\u012b\u0300 phe\u012byng phx s\u0304\u1ea3h\u0304r\u1ea1" +
+            "b thuk t\u1ea1w x\u1ea1ks\u0304\u02b9r, kher\u1ee5\u0304\u0300xngh\u0304m\u0101y wrrkh txn l\u00e6" +
+            "a s\u0304\u1ea1\u1ef5l\u1ea1ks\u0304\u02b9\u1e47\u0312 th\u0101ng thekhnikh th\u012b\u0300 ch\u0131" +
+            "\u0302 k\u1ea1n xy\u016b\u0300 th\u1ea1\u0300wp\u1ecb.";
+
+            expect(tr, thaiText, latinText);
+    }
+    
+
+    //======================================================================
+    // These tests are not mirrored (yet) in icu4c at
+    // source/test/intltest/transtst.cpp
+    //======================================================================
+
+    /**
+     * Improve code coverage.
+     */
+    public void TestCoverage() {
+        // NullTransliterator
+        Transliterator t = Transliterator.getInstance("Null", Transliterator.FORWARD);
+        expect(t, "a", "a");
+
+        // Source, target set
+        t = Transliterator.getInstance("Latin-Greek", Transliterator.FORWARD);
+        t.setFilter(new UnicodeSet("[A-Z]"));
+        logln("source = " + t.getSourceSet());
+        logln("target = " + t.getTargetSet());
+
+        t = Transliterator.createFromRules("x", "(.) > &Any-Hex($1);", Transliterator.FORWARD);
+        logln("source = " + t.getSourceSet());
+        logln("target = " + t.getTargetSet());
+    }
+    public void TestAny() {
+        UnicodeSet alphabetic = (UnicodeSet) new UnicodeSet("[:alphabetic:]").freeze();
+        StringBuffer testString = new StringBuffer();
+        for (int i = 0; i < UScript.CODE_LIMIT; ++i) {
+            UnicodeSet sample = new UnicodeSet().applyPropertyAlias("script", UScript.getShortName(i)).retainAll(alphabetic);
+            int count = 5;
+            for (UnicodeSetIterator it = new UnicodeSetIterator(sample); it.next();) {
+                testString.append(it.getString());
+                if (--count < 0) break;
+            }
+        }
+        logln("Sample set for Any-Latin: " + testString);
+        Transliterator anyLatin = Transliterator.getInstance("any-Latn");
+        String result = anyLatin.transliterate(testString.toString());
+        logln("Sample result for Any-Latin: " + result);
+    }
+
+    /*
+     * Test case for threading problem in NormalizationTransliterator
+     * reported by ticket#5160
+     */
+    public void TestT5160() {
+        final String[] testData = {
+                "a",
+                "b",
+                "\u09BE",
+                "A\u0301",
+        };
+        final String[] expected = {
+                "a",
+                "b",
+                "\u09BE",
+                "\u00C1",
+            };
+        Transliterator translit = Transliterator.getInstance("NFC");
+        NormTranslitTask[] tasks = new NormTranslitTask[testData.length];
+        for (int i = 0; i < tasks.length; i++) {
+            tasks[i] = new NormTranslitTask(translit, testData[i], expected[i]);
+        }
+        TestUtil.runUntilDone(tasks);
+
+        for (int i = 0; i < tasks.length; i++) {
+            if (tasks[i].getErrorMessage() != null) {
+                System.out.println("Fail: thread#" + i + " " + tasks[i].getErrorMessage());
+                break;
+            }
+        }
+    }
+
+    static class NormTranslitTask implements Runnable {
+        Transliterator translit;
+        String testData;
+        String expectedData;
+        String errorMsg;
+
+        NormTranslitTask(Transliterator translit, String testData, String expectedData) {
+            this.translit = translit;
+            this.testData = testData;
+            this.expectedData = expectedData;
+        }
+
+        public void run() {
+            errorMsg = null;
+            StringBuffer inBuf = new StringBuffer(testData);
+            StringBuffer expectedBuf = new StringBuffer(expectedData);
+
+            for(int i = 0; i < 1000; i++) {
+                String in = inBuf.toString();
+                String out = translit.transliterate(in);
+                String expected = expectedBuf.toString();
+                if (!out.equals(expected)) {
+                    errorMsg = "in {" + in + "} / out {" + out + "} / expected {" + expected + "}";
+                    break;
+                }
+                inBuf.append(testData);
+                expectedBuf.append(expectedData);
+            }
+        }
+
+        public String getErrorMessage() {
+            return errorMsg;
+        }
+    }
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+    void expect(String rules,
+                String source,
+                String expectedResult,
+                Transliterator.Position pos) {
+        Transliterator t = Transliterator.createFromRules("<ID>", rules, Transliterator.FORWARD);
+        expect(t, source, expectedResult, pos);
+    }
+
+    void expect(String rules, String source, String expectedResult) {
+        expect(rules, source, expectedResult, null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator reverseTransliterator) {
+        expect(t, source, expectedResult);
+        if (reverseTransliterator != null) {
+            expect(reverseTransliterator, expectedResult, source);
+        }
+    }
+
+    void expect(Transliterator t, String source, String expectedResult) {
+        expect(t, source, expectedResult, (Transliterator.Position) null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator.Position pos) {
+        if (pos == null) {
+            String result = t.transliterate(source);
+            if (!expectAux(t.getID() + ":String", source, result, expectedResult)) return;
+        }
+
+        Transliterator.Position index = null;
+        if (pos == null) {
+            index = new Transliterator.Position(0, source.length(), 0, source.length());
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        ReplaceableString rsource = new ReplaceableString(source);
+
+        t.finishTransliteration(rsource, index);
+        // Do it all at once -- below we do it incrementally
+
+        if (index.start != index.limit) {
+            expectAux(t.getID() + ":UNFINISHED", source,
+                "start: " + index.start + ", limit: " + index.limit, false, expectedResult);
+            return;
+        }
+        String result = rsource.toString();
+        if (!expectAux(t.getID() + ":Replaceable", source, result, expectedResult)) return;
+
+
+        if (pos == null) {
+            index = new Transliterator.Position();
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        // Test incremental transliteration -- this result
+        // must be the same after we finalize (see below).
+        Vector v = new Vector();
+        v.add(source);
+        rsource.replace(0, rsource.length(), "");
+        if (pos != null) {
+            rsource.replace(0, 0, source);
+            v.add(UtilityExtensions.formatInput(rsource, index));
+            t.transliterate(rsource, index);
+            v.add(UtilityExtensions.formatInput(rsource, index));
+        } else {
+            for (int i=0; i<source.length(); ++i) {
+                //v.add(i == 0 ? "" : " + " + source.charAt(i) + "");
+                //log.append(source.charAt(i)).append(" -> "));
+                t.transliterate(rsource, index, source.charAt(i));
+                //v.add(UtilityExtensions.formatInput(rsource, index) + source.substring(i+1));
+                v.add(UtilityExtensions.formatInput(rsource, index) +
+                      ((i<source.length()-1)?(" + '" + source.charAt(i+1) + "' ->"):" =>"));
+            }
+        }
+
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        //log.append(" => ").append(rsource.toString());
+        v.add(result);
+
+        String[] results = new String[v.size()];
+        v.copyInto(results);
+        expectAux(t.getID() + ":Incremental", results,
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String[] results, boolean pass,
+                   String expectedResult) {
+        msg((pass?"(":"FAIL: (")+tag+")", pass ? LOG : ERR, true, true);
+
+        for (int i = 0; i < results.length; ++i) {
+            String label;
+            if (i == 0) {
+                label = "source:   ";
+            } else if (i == results.length - 1) {
+                label = "result:   ";
+            } else {
+                if (!isVerbose() && pass) continue;
+                label = "interm" + i + ":  ";
+            }
+            msg("    " + label + results[i], pass ? LOG : ERR, false, true);
+        }
+
+        if (!pass) {
+            msg(  "    expected: " + expectedResult, ERR, false, true);
+        }
+
+        return pass;
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
new file mode 100644
index 0000000..17a60e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -0,0 +1,74 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.dev.test.util.UnicodeMap;
+import com.ibm.icu.impl.Utility;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeMapTest extends TestFmwk {
+  
+  static final int MODIFY_TEST_LIMIT = 32;
+  static final int MODIFY_TEST_ITERATIONS = 100000;
+  
+  public static void main(String[] args) throws Exception {
+    new UnicodeMapTest().run(args);
+  }
+  
+  public void TestModify() {
+    Random random = new Random(0);
+    UnicodeMap unicodeMap = new UnicodeMap();
+    HashMap hashMap = new HashMap();
+    String[] values = {null, "the", "quick", "brown", "fox"};
+    for (int count = 1; count <= MODIFY_TEST_ITERATIONS; ++count) {
+      String value = values[random.nextInt(values.length)];
+      int start = random.nextInt(MODIFY_TEST_LIMIT); // test limited range
+      int end = random.nextInt(MODIFY_TEST_LIMIT);
+      if (start > end) {
+        int temp = start;
+        start = end;
+        end = temp;
+      }
+      int modCount = count & 0xFF;
+      if (modCount == 0 && isVerbose()) {
+        logln("***"+count);
+        logln(unicodeMap.toString());
+      }
+      unicodeMap.putAll(start, end, value);
+      if (modCount == 1 && isVerbose()) {
+        logln(">>>\t" + Utility.hex(start) + ".." + Utility.hex(end) + "\t" + value);
+        logln(unicodeMap.toString());
+      }
+      for (int i = start; i <= end; ++i) {
+        hashMap.put(new Integer(i), value);
+      }
+      if (!hasSameValues(unicodeMap, hashMap)) {
+        errln("Failed at " + count);
+      }
+    }
+  }
+
+  private boolean hasSameValues(UnicodeMap unicodeMap, HashMap hashMap) {
+    for (int i = 0; i < MODIFY_TEST_LIMIT; ++i) {
+      Object unicodeMapValue = unicodeMap.getValue(i);
+      Object hashMapValue = hashMap.get(new Integer(i));
+      if (unicodeMapValue != hashMapValue) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
new file mode 100644
index 0000000..1feccbb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
@@ -0,0 +1,2072 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.PrettyPrinter;
+import com.ibm.icu.impl.SortedSetRelation;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UCharacterEnums.ECharacterCategory;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeSetTest extends TestFmwk {
+  
+  static final String NOT = "%%%%";
+  
+  public static void main(String[] args) throws Exception {
+    new UnicodeSetTest().run(args);
+  }
+
+  private static final boolean isCccValue(int ccc) {
+    switch (ccc) {
+    case 0:
+    case 1:
+    case 7:
+    case 8:
+    case 9:
+    case 200:
+    case 202:
+    case 216:
+    case 218:
+    case 220:
+    case 222:
+    case 224:
+    case 226:
+    case 228:
+    case 230:
+    case 232:
+    case 233:
+    case 234:
+    case 240:
+      return true;
+    default:
+      return false;
+    }
+  }
+
+  public void TestPropertyAccess() {
+    int count = 0; 
+    // test to see that all of the names work
+    for (int propNum = UProperty.BINARY_START; propNum < UProperty.INT_LIMIT; ++propNum) {
+      count++;
+      //Skipping tests in the non-exhaustive mode to shorten the test time ticket#6475
+      if(getInclusion()<=5 && count%5!=0){
+          continue;
+      }
+      if (propNum >= UProperty.BINARY_LIMIT && propNum < UProperty.INT_START) { // skip the gap
+        propNum = UProperty.INT_START;
+      }
+      for (int nameChoice = UProperty.NameChoice.SHORT; nameChoice <= UProperty.NameChoice.LONG; ++nameChoice) {
+        String propName;
+        try {
+          propName = UCharacter.getPropertyName(propNum, nameChoice);
+          if (propName == null) {
+            if (nameChoice == UProperty.NameChoice.SHORT) continue; // allow non-existent short names
+            throw new NullPointerException();
+          }
+        } catch (RuntimeException e1) {
+          errln("Can't get property name for: "
+              + "Property (" + propNum + ")"
+              + ", NameChoice: " + nameChoice + ", "
+              + e1.getClass().getName());
+          continue;
+        }
+        logln("Property (" + propNum + "): " + propName);
+        for (int valueNum = UCharacter.getIntPropertyMinValue(propNum); valueNum <= UCharacter.getIntPropertyMaxValue(propNum); ++valueNum) {
+          String valueName;
+          try {
+            valueName = UCharacter.getPropertyValueName(propNum, valueNum, nameChoice);
+            if (valueName == null) {
+              if (nameChoice == UProperty.NameChoice.SHORT) continue; // allow non-existent short names
+              if ((propNum == UProperty.CANONICAL_COMBINING_CLASS ||
+                   propNum == UProperty.LEAD_CANONICAL_COMBINING_CLASS ||
+                   propNum == UProperty.TRAIL_CANONICAL_COMBINING_CLASS) &&
+                  !isCccValue(valueNum)) {
+                // Only a few of the canonical combining classes have names.
+                // Otherwise they are just integer values.
+                continue;
+              } else {
+                throw new NullPointerException();
+              }
+            }
+          } catch (RuntimeException e1) {
+            errln("Can't get property value name for: "
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + ") "
+                + ", NameChoice: " + nameChoice + ", "
+                + e1.getClass().getName());
+            continue;
+          }
+          logln("Value (" + valueNum + "): " + valueName);
+          UnicodeSet testSet;
+          try {
+            testSet = new UnicodeSet("[:" + propName + "=" + valueName + ":]");
+          } catch (RuntimeException e) {
+            errln("Can't create UnicodeSet for: "
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + "): " + valueName + ", "
+                + e.getClass().getName());
+            continue;
+          }
+          UnicodeSet collectedErrors = new UnicodeSet();
+          for (UnicodeSetIterator it = new UnicodeSetIterator(testSet); it.next();) {
+            int value = UCharacter.getIntPropertyValue(it.codepoint, propNum);
+            if (value != valueNum) {
+              collectedErrors.add(it.codepoint);
+            }
+          }
+          if (collectedErrors.size() != 0) {
+            errln("Property Value Differs: " 
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + "): " + valueName + ", "
+                + "Differing values: " + collectedErrors.toPattern(true));
+          }
+        }
+      } 
+    }
+  }
+  
+  
+  /**
+   * Test toPattern().
+   */
+  public void TestToPattern() throws Exception {
+    // Test that toPattern() round trips with syntax characters
+    // and whitespace.
+    for (int i = 0; i < OTHER_TOPATTERN_TESTS.length; ++i) {
+      checkPat(OTHER_TOPATTERN_TESTS[i], new UnicodeSet(OTHER_TOPATTERN_TESTS[i]));
+    }
+    for (int i = 0; i <= 0x10FFFF; ++i) {
+      if ((i <= 0xFF && !UCharacter.isLetter(i)) || UCharacter.isWhitespace(i)) {
+        // check various combinations to make sure they all work.
+        if (i != 0 && !toPatternAux(i, i)) continue;
+        if (!toPatternAux(0, i)) continue;
+        if (!toPatternAux(i, 0xFFFF)) continue;
+      }
+    } 
+    
+    // Test pattern behavior of multicharacter strings.
+    UnicodeSet s = new UnicodeSet("[a-z {aa} {ab}]");
+    expectToPattern(s, "[a-z{aa}{ab}]",
+        new String[] {"aa", "ab", NOT, "ac"});
+    s.add("ac");
+    expectToPattern(s, "[a-z{aa}{ab}{ac}]",
+        new String[] {"aa", "ab", "ac", NOT, "xy"});
+    
+    s.applyPattern("[a-z {\\{l} {r\\}}]");
+    expectToPattern(s, "[a-z{r\\}}{\\{l}]",
+        new String[] {"{l", "r}", NOT, "xy"});
+    s.add("[]");
+    expectToPattern(s, "[a-z{\\[\\]}{r\\}}{\\{l}]",
+        new String[] {"{l", "r}", "[]", NOT, "xy"});
+    
+    s.applyPattern("[a-z {\u4E01\u4E02}{\\n\\r}]");
+    expectToPattern(s, "[a-z{\\u000A\\u000D}{\\u4E01\\u4E02}]",
+        new String[] {"\u4E01\u4E02", "\n\r"});
+    
+    s.clear();
+    s.add("abc");
+    s.add("abc");
+    expectToPattern(s, "[{abc}]",
+        new String[] {"abc", NOT, "ab"});
+    
+    // JB#3400: For 2 character ranges prefer [ab] to [a-b]
+    s.clear(); 
+    s.add('a', 'b');
+    expectToPattern(s, "[ab]", null);
+    
+    // Cover applyPattern, applyPropertyAlias
+    s.clear();
+    s.applyPattern("[ab ]", true);
+    expectToPattern(s, "[ab]", new String[] {"a", NOT, "ab", " "});
+    s.clear();
+    s.applyPattern("[ab ]", false);
+    expectToPattern(s, "[\\ ab]", new String[] {"a", "\u0020", NOT, "ab"});
+    
+    s.clear();
+    s.applyPropertyAlias("nv", "0.5");
+    expectToPattern(s, "[\\u00BD\\u0D74\\u0F2A\\u2CFD\\U00010141\\U00010175\\U00010176]", null);
+    // Unicode 5.1 adds Malayalam 1/2 (\u0D74)
+    
+    s.clear();
+    s.applyPropertyAlias("gc", "Lu");
+    // TODO expectToPattern(s, what?)
+  }
+  
+  static String[] OTHER_TOPATTERN_TESTS = {
+    "[[:latin:]&[:greek:]]", 
+    "[[:latin:]-[:greek:]]",
+    "[:nonspacing mark:]"
+  };
+  
+  
+  public boolean toPatternAux(int start, int end) {
+    // use Integer.toString because Utility.hex doesn't handle ints
+    String source = "0x" + Integer.toString(start,16).toUpperCase();
+    if (start != end) source += "..0x" + Integer.toString(end,16).toUpperCase();
+    UnicodeSet testSet = new UnicodeSet();
+    testSet.add(start, end);
+    return checkPat(source, testSet);
+  }
+  
+  boolean checkPat (String source, UnicodeSet testSet) {
+    String pat = "";
+    try {
+      // What we want to make sure of is that a pattern generated
+      // by toPattern(), with or without escaped unprintables, can
+      // be passed back into the UnicodeSet constructor.
+      String pat0 = testSet.toPattern(true);
+      if (!checkPat(source + " (escaped)", testSet, pat0)) return false;
+      
+      //String pat1 = unescapeLeniently(pat0);
+      //if (!checkPat(source + " (in code)", testSet, pat1)) return false;
+      
+      String pat2 = testSet.toPattern(false);
+      if (!checkPat(source, testSet, pat2)) return false;
+      
+      //String pat3 = unescapeLeniently(pat2);
+      //if (!checkPat(source + " (in code)", testSet, pat3)) return false;
+      
+      //logln(source + " => " + pat0 + ", " + pat1 + ", " + pat2 + ", " + pat3);
+      logln(source + " => " + pat0 + ", " + pat2);
+    } catch (Exception e) {
+      errln("EXCEPTION in toPattern: " + source + " => " + pat);
+      return false;
+    }
+    return true;
+  }
+  
+  boolean checkPat (String source, UnicodeSet testSet, String pat) {
+    UnicodeSet testSet2 = new UnicodeSet(pat);
+    if (!testSet2.equals(testSet)) {
+      errln("Fail toPattern: " + source + "; " + pat + " => " +
+          testSet2.toPattern(false) + ", expected " +
+          testSet.toPattern(false));
+      return false;
+    }
+    return true;
+  }
+  
+  // NOTE: copied the following from Utility. There ought to be a version in there with a flag
+  // that does the Java stuff
+  
+  public static int unescapeAt(String s, int[] offset16) {
+    int c;
+    int result = 0;
+    int n = 0;
+    int minDig = 0;
+    int maxDig = 0;
+    int bitsPerDigit = 4;
+    int dig;
+    int i;
+    
+    /* Check that offset is in range */
+    int offset = offset16[0];
+    int length = s.length();
+    if (offset < 0 || offset >= length) {
+      return -1;
+    }
+    
+    /* Fetch first UChar after '\\' */
+    c = UTF16.charAt(s, offset);
+    offset += UTF16.getCharCount(c);
+    
+    /* Convert hexadecimal and octal escapes */
+    switch (c) {
+      case 'u':
+        minDig = maxDig = 4;
+        break;
+        /*
+         case 'U':
+         minDig = maxDig = 8;
+         break;
+         case 'x':
+         minDig = 1;
+         maxDig = 2;
+         break;
+         */
+      default:
+        dig = UCharacter.digit(c, 8);
+      if (dig >= 0) {
+        minDig = 1;
+        maxDig = 3;
+        n = 1; /* Already have first octal digit */
+        bitsPerDigit = 3;
+        result = dig;
+      }
+      break;
+    }
+    if (minDig != 0) {
+      while (offset < length && n < maxDig) {
+        // TEMPORARY
+        // TODO: Restore the char32-based code when UCharacter.digit
+        // is working (Bug 66).
+        
+        //c = UTF16.charAt(s, offset);
+        //dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+        c = s.charAt(offset);
+        dig = Character.digit((char)c, (bitsPerDigit == 3) ? 8 : 16);
+        if (dig < 0) {
+          break;
+        }
+        result = (result << bitsPerDigit) | dig;
+        //offset += UTF16.getCharCount(c);
+        ++offset;
+        ++n;
+      }
+      if (n < minDig) {
+        return -1;
+      }
+      offset16[0] = offset;
+      return result;
+    }
+    
+    /* Convert C-style escapes in table */
+    for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+      if (c == UNESCAPE_MAP[i]) {
+        offset16[0] = offset;
+        return UNESCAPE_MAP[i+1];
+      } else if (c < UNESCAPE_MAP[i]) {
+        break;
+      }
+    }
+    
+    /* If no special forms are recognized, then consider
+     * the backslash to generically escape the next character. */
+    offset16[0] = offset;
+    return c;
+  }
+  
+  /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+  static private final char[] UNESCAPE_MAP = {
+    /*"   0x22, 0x22 */
+    /*'   0x27, 0x27 */
+    /*?   0x3F, 0x3F */
+    /*\   0x5C, 0x5C */
+    /*a*/ 0x61, 0x07,
+    /*b*/ 0x62, 0x08,
+    /*f*/ 0x66, 0x0c,
+    /*n*/ 0x6E, 0x0a,
+    /*r*/ 0x72, 0x0d,
+    /*t*/ 0x74, 0x09,
+    /*v*/ 0x76, 0x0b
+  };
+  
+  /**
+   * Convert all escapes in a given string using unescapeAt().
+   * Leave invalid escape sequences unchanged.
+   */
+  public static String unescapeLeniently(String s) {
+    StringBuffer buf = new StringBuffer();
+    int[] pos = new int[1];
+    for (int i=0; i<s.length(); ) {
+      char c = s.charAt(i++);
+      if (c == '\\') {
+        pos[0] = i;
+        int e = unescapeAt(s, pos);
+        if (e < 0) {
+          buf.append(c);
+        } else {
+          UTF16.append(buf, e);
+          i = pos[0];
+        }
+      } else {
+        buf.append(c);
+      }
+    }
+    return buf.toString();
+  }
+  
+  public void TestPatterns() {
+    UnicodeSet set = new UnicodeSet();
+    expectPattern(set, "[[a-m]&[d-z]&[k-y]]",  "km");
+    expectPattern(set, "[[a-z]-[m-y]-[d-r]]",  "aczz");
+    expectPattern(set, "[a\\-z]",  "--aazz");
+    expectPattern(set, "[-az]",  "--aazz");
+    expectPattern(set, "[az-]",  "--aazz");
+    expectPattern(set, "[[[a-z]-[aeiou]i]]", "bdfnptvz");
+    
+    // Throw in a test of complement
+    set.complement();
+    String exp = '\u0000' + "aeeoouu" + (char)('z'+1) + '\uFFFF';
+    expectPairs(set, exp);
+  }
+  
+  public void TestCategories() {
+    int failures = 0;
+    UnicodeSet set = new UnicodeSet("[:Lu:]");
+    expectContainment(set, "ABC", "abc");
+    
+    // Make sure generation of L doesn't pollute cached Lu set
+    // First generate L, then Lu
+    // not used int TOP = 0x200; // Don't need to go over the whole range:
+    set = new UnicodeSet("[:L:]");
+    for (int i=0; i<0x200; ++i) {
+      boolean l = UCharacter.isLetter(i);
+      if (l != set.contains((char)i)) {
+        errln("FAIL: L contains " + (char)i + " = " + 
+            set.contains((char)i));
+        if (++failures == 10) break;
+      }
+    }
+    
+    set = new UnicodeSet("[:Lu:]");
+    for (int i=0; i<0x200; ++i) {
+      boolean lu = (UCharacter.getType(i) == ECharacterCategory.UPPERCASE_LETTER);
+      if (lu != set.contains((char)i)) {
+        errln("FAIL: Lu contains " + (char)i + " = " + 
+            set.contains((char)i));
+        if (++failures == 20) break;
+      }
+    }
+  }
+  
+  public void TestAddRemove() {
+    UnicodeSet set = new UnicodeSet();
+    set.add('a', 'z');
+    expectPairs(set, "az");
+    set.remove('m', 'p');
+    expectPairs(set, "alqz");
+    set.remove('e', 'g');
+    expectPairs(set, "adhlqz");
+    set.remove('d', 'i');
+    expectPairs(set, "acjlqz");
+    set.remove('c', 'r');
+    expectPairs(set, "absz");
+    set.add('f', 'q');
+    expectPairs(set, "abfqsz");
+    set.remove('a', 'g');
+    expectPairs(set, "hqsz");
+    set.remove('a', 'z');
+    expectPairs(set, "");
+    
+    // Try removing an entire set from another set
+    expectPattern(set, "[c-x]", "cx");
+    UnicodeSet set2 = new UnicodeSet();
+    expectPattern(set2, "[f-ky-za-bc[vw]]", "acfkvwyz");
+    set.removeAll(set2);
+    expectPairs(set, "deluxx");
+    
+    // Try adding an entire set to another set
+    expectPattern(set, "[jackiemclean]", "aacceein");
+    expectPattern(set2, "[hitoshinamekatajamesanderson]", "aadehkmort");
+    set.addAll(set2);
+    expectPairs(set, "aacehort");
+    
+    // Test commutativity
+    expectPattern(set, "[hitoshinamekatajamesanderson]", "aadehkmort");
+    expectPattern(set2, "[jackiemclean]", "aacceein");
+    set.addAll(set2);
+    expectPairs(set, "aacehort");
+  }
+  
+  /**
+   * Make sure minimal representation is maintained.
+   */
+  public void TestMinimalRep() {
+    // This is pretty thoroughly tested by checkCanonicalRep()
+    // run against the exhaustive operation results.  Use the code
+    // here for debugging specific spot problems.
+    
+    // 1 overlap against 2
+    UnicodeSet set = new UnicodeSet("[h-km-q]");
+    UnicodeSet set2 = new UnicodeSet("[i-o]");
+    set.addAll(set2);
+    expectPairs(set, "hq");
+    // right
+    set.applyPattern("[a-m]");
+    set2.applyPattern("[e-o]");
+    set.addAll(set2);
+    expectPairs(set, "ao");
+    // left
+    set.applyPattern("[e-o]");
+    set2.applyPattern("[a-m]");
+    set.addAll(set2);
+    expectPairs(set, "ao");
+    // 1 overlap against 3
+    set.applyPattern("[a-eg-mo-w]");
+    set2.applyPattern("[d-q]");
+    set.addAll(set2);
+    expectPairs(set, "aw");
+  }
+  
+  public void TestAPI() {
+    // default ct
+    UnicodeSet set = new UnicodeSet();
+    if (!set.isEmpty() || set.getRangeCount() != 0) {
+      errln("FAIL, set should be empty but isn't: " +
+          set);
+    }
+    
+    // clear(), isEmpty()
+    set.add('a');
+    if (set.isEmpty()) {
+      errln("FAIL, set shouldn't be empty but is: " +
+          set);
+    }
+    set.clear();
+    if (!set.isEmpty()) {
+      errln("FAIL, set should be empty but isn't: " +
+          set);
+    }
+    
+    // size()
+    set.clear();
+    if (set.size() != 0) {
+      errln("FAIL, size should be 0, but is " + set.size() +
+          ": " + set);
+    }
+    set.add('a');
+    if (set.size() != 1) {
+      errln("FAIL, size should be 1, but is " + set.size() +
+          ": " + set);
+    }
+    set.add('1', '9');
+    if (set.size() != 10) {
+      errln("FAIL, size should be 10, but is " + set.size() +
+          ": " + set);
+    }
+    set.clear();
+    set.complement();
+    if (set.size() != 0x110000) {
+      errln("FAIL, size should be 0x110000, but is" + set.size());
+    }
+    
+    // contains(first, last)
+    set.clear();
+    set.applyPattern("[A-Y 1-8 b-d l-y]");
+    for (int i = 0; i<set.getRangeCount(); ++i) {
+      int a = set.getRangeStart(i);
+      int b = set.getRangeEnd(i);
+      if (!set.contains(a, b)) {
+        errln("FAIL, should contain " + (char)a + '-' + (char)b +
+            " but doesn't: " + set);
+      }
+      if (set.contains((char)(a-1), b)) {
+        errln("FAIL, shouldn't contain " +
+            (char)(a-1) + '-' + (char)b +
+            " but does: " + set);
+      }
+      if (set.contains(a, (char)(b+1))) {
+        errln("FAIL, shouldn't contain " +
+            (char)a + '-' + (char)(b+1) +
+            " but does: " + set);
+      }
+    }
+    
+    // Ported InversionList test.
+    UnicodeSet a = new UnicodeSet((char)3,(char)10);
+    UnicodeSet b = new UnicodeSet((char)7,(char)15);
+    UnicodeSet c = new UnicodeSet();
+    
+    logln("a [3-10]: " + a);
+    logln("b [7-15]: " + b);
+    c.set(a); c.addAll(b);
+    UnicodeSet exp = new UnicodeSet((char)3,(char)15);
+    if (c.equals(exp)) {
+      logln("c.set(a).add(b): " + c);
+    } else {
+      errln("FAIL: c.set(a).add(b) = " + c + ", expect " + exp);
+    }
+    c.complement();
+    exp.set((char)0, (char)2);
+    exp.add((char)16, UnicodeSet.MAX_VALUE);
+    if (c.equals(exp)) {
+      logln("c.complement(): " + c);
+    } else {
+      errln(Utility.escape("FAIL: c.complement() = " + c + ", expect " + exp));
+    }
+    c.complement();
+    exp.set((char)3, (char)15);
+    if (c.equals(exp)) {
+      logln("c.complement(): " + c);
+    } else {
+      errln("FAIL: c.complement() = " + c + ", expect " + exp);
+    }
+    c.set(a); c.complementAll(b);
+    exp.set((char)3,(char)6);
+    exp.add((char)11,(char) 15);
+    if (c.equals(exp)) {
+      logln("c.set(a).complement(b): " + c);
+    } else {
+      errln("FAIL: c.set(a).complement(b) = " + c + ", expect " + exp);
+    }
+    
+    exp.set(c);
+    c = bitsToSet(setToBits(c));
+    if (c.equals(exp)) {
+      logln("bitsToSet(setToBits(c)): " + c);
+    } else {
+      errln("FAIL: bitsToSet(setToBits(c)) = " + c + ", expect " + exp);
+    } 
+    
+    // Additional tests for coverage JB#2118
+    //UnicodeSet::complement(class UnicodeString const &)
+    //UnicodeSet::complementAll(class UnicodeString const &)
+    //UnicodeSet::containsNone(class UnicodeSet const &)
+    //UnicodeSet::containsNone(long,long)
+    //UnicodeSet::containsSome(class UnicodeSet const &)
+    //UnicodeSet::containsSome(long,long)
+    //UnicodeSet::removeAll(class UnicodeString const &)
+    //UnicodeSet::retain(long)
+    //UnicodeSet::retainAll(class UnicodeString const &)
+    //UnicodeSet::serialize(unsigned short *,long,enum UErrorCode &)
+    //UnicodeSetIterator::getString(void)
+    set.clear();
+    set.complement("ab");
+    exp.applyPattern("[{ab}]");
+    if (!set.equals(exp)) { errln("FAIL: complement(\"ab\")"); return; }
+    
+    UnicodeSetIterator iset = new UnicodeSetIterator(set);
+    if (!iset.next() || iset.codepoint != UnicodeSetIterator.IS_STRING) {
+      errln("FAIL: UnicodeSetIterator.next/IS_STRING");
+    } else if (!iset.string.equals("ab")) {
+      errln("FAIL: UnicodeSetIterator.string");
+    }
+    
+    set.add((char)0x61, (char)0x7A);
+    set.complementAll("alan");
+    exp.applyPattern("[{ab}b-kmo-z]");
+    if (!set.equals(exp)) { errln("FAIL: complementAll(\"alan\")"); return; }
+    
+    exp.applyPattern("[a-z]");
+    if (set.containsNone(exp)) { errln("FAIL: containsNone(UnicodeSet)"); }
+    if (!set.containsSome(exp)) { errln("FAIL: containsSome(UnicodeSet)"); }
+    exp.applyPattern("[aln]");
+    if (!set.containsNone(exp)) { errln("FAIL: containsNone(UnicodeSet)"); }
+    if (set.containsSome(exp)) { errln("FAIL: containsSome(UnicodeSet)"); }
+    
+    if (set.containsNone((char)0x61, (char)0x7A)) {
+      errln("FAIL: containsNone(char, char)");
+    }
+    if (!set.containsSome((char)0x61, (char)0x7A)) {
+      errln("FAIL: containsSome(char, char)");
+    }
+    if (!set.containsNone((char)0x41, (char)0x5A)) {
+      errln("FAIL: containsNone(char, char)");
+    }
+    if (set.containsSome((char)0x41, (char)0x5A)) {
+      errln("FAIL: containsSome(char, char)");
+    }
+    
+    set.removeAll("liu");
+    exp.applyPattern("[{ab}b-hj-kmo-tv-z]");
+    if (!set.equals(exp)) { errln("FAIL: removeAll(\"liu\")"); return; }
+    
+    set.retainAll("star");
+    exp.applyPattern("[rst]");
+    if (!set.equals(exp)) { errln("FAIL: retainAll(\"star\")"); return; }
+    
+    set.retain((char)0x73);
+    exp.applyPattern("[s]");
+    if (!set.equals(exp)) { errln("FAIL: retain('s')"); return; }
+    
+    // ICU 2.6 coverage tests
+    // public final UnicodeSet retain(String s);
+    // public final UnicodeSet remove(int c);
+    // public final UnicodeSet remove(String s);
+    // public int hashCode();
+    set.applyPattern("[a-z{ab}{cd}]");
+    set.retain("cd");
+    exp.applyPattern("[{cd}]");
+    if (!set.equals(exp)) { errln("FAIL: retain(\"cd\")"); return; }
+    
+    set.applyPattern("[a-z{ab}{cd}]");
+    set.remove((char)0x63);
+    exp.applyPattern("[abd-z{ab}{cd}]");
+    if (!set.equals(exp)) { errln("FAIL: remove('c')"); return; }
+    
+    set.remove("cd");
+    exp.applyPattern("[abd-z{ab}]");
+    if (!set.equals(exp)) { errln("FAIL: remove(\"cd\")"); return; }
+    
+    if (set.hashCode() != exp.hashCode()) {
+      errln("FAIL: hashCode() unequal");
+    }
+    exp.clear();
+    if (set.hashCode() == exp.hashCode()) {
+      errln("FAIL: hashCode() equal");
+    }
+    
+    {
+      //Cover addAll(Collection) and addAllTo(Collection)  
+      //  Seems that there is a bug in addAll(Collection) operation
+      //    Ram also add a similar test to UtilityTest.java
+      logln("Testing addAll(Collection) ... ");  
+      String[] array = {"a", "b", "c", "de"};
+      List list = Arrays.asList(array);
+      Set aset = new HashSet(list);
+      logln(" *** The source set's size is: " + aset.size());
+      
+      set.clear();
+      set.addAll(aset);
+      if (set.size() != aset.size()) {
+        errln("FAIL: After addAll, the UnicodeSet size expected " + aset.size() +
+            ", " + set.size() + " seen instead!");
+      } else {
+        logln("OK: After addAll, the UnicodeSet size got " + set.size());
+      }
+      
+      List list2 = new ArrayList();
+      set.addAllTo(list2);
+      
+      //verify the result
+      log(" *** The elements are: ");
+      String s = set.toPattern(true);
+      logln(s);
+      Iterator myiter = list2.iterator();
+      while(myiter.hasNext()) {
+        log(myiter.next().toString() + "  ");
+      }
+      logln("");  // a new line
+    }
+    
+  }
+  
+  public void TestStrings() {
+//  Object[][] testList = {
+//  {I_EQUALS,  UnicodeSet.fromAll("abc"),
+//  new UnicodeSet("[a-c]")},
+//  
+//  {I_EQUALS,  UnicodeSet.from("ch").add('a','z').add("ll"),
+//  new UnicodeSet("[{ll}{ch}a-z]")},
+//  
+//  {I_EQUALS,  UnicodeSet.from("ab}c"),  
+//  new UnicodeSet("[{ab\\}c}]")},
+//  
+//  {I_EQUALS,  new UnicodeSet('a','z').add('A', 'Z').retain('M','m').complement('X'), 
+//  new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]")},
+//  };
+//  
+//  for (int i = 0; i < testList.length; ++i) {
+//  expectRelation(testList[i][0], testList[i][1], testList[i][2], "(" + i + ")");
+//  }        
+    
+    UnicodeSet[][] testList = {
+        {UnicodeSet.fromAll("abc"),
+          new UnicodeSet("[a-c]")},
+          
+          {UnicodeSet.from("ch").add('a','z').add("ll"),
+            new UnicodeSet("[{ll}{ch}a-z]")},
+            
+            {UnicodeSet.from("ab}c"),  
+              new UnicodeSet("[{ab\\}c}]")},
+              
+              {new UnicodeSet('a','z').add('A', 'Z').retain('M','m').complement('X'), 
+                new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]")},
+    };
+    
+    for (int i = 0; i < testList.length; ++i) {
+      if (!testList[i][0].equals(testList[i][1])) {
+        errln("FAIL: sets unequal; see source code (" + i + ")");
+      }
+    }        
+  }
+  
+  static final Integer 
+  I_ANY = new Integer(SortedSetRelation.ANY),
+  I_CONTAINS = new Integer(SortedSetRelation.CONTAINS),
+  I_DISJOINT = new Integer(SortedSetRelation.DISJOINT),
+  I_NO_B = new Integer(SortedSetRelation.NO_B),
+  I_ISCONTAINED = new Integer(SortedSetRelation.ISCONTAINED),
+  I_EQUALS = new Integer(SortedSetRelation.EQUALS),
+  I_NO_A = new Integer(SortedSetRelation.NO_A),
+  I_NONE = new Integer(SortedSetRelation.NONE);
+  
+  public void TestSetRelation() {
+    
+    String[] choices = {"a", "b", "cd", "ef"};
+    int limit = 1 << choices.length;
+    
+    SortedSet iset = new TreeSet();
+    SortedSet jset = new TreeSet();
+    
+    for (int i = 0; i < limit; ++i) {
+      pick(i, choices, iset);
+      for (int j = 0; j < limit; ++j) {
+        pick(j, choices, jset);
+        checkSetRelation(iset, jset, "(" + i + ")");
+      }
+    }
+  }
+  
+  public void TestSetSpeed() {
+    // skip unless verbose
+    if (!isVerbose()) return;
+    
+    SetSpeed2(100);
+    SetSpeed2(1000);
+  }
+  
+  public void SetSpeed2(int size) {
+    
+    SortedSet iset = new TreeSet();
+    SortedSet jset = new TreeSet();
+    
+    for (int i = 0; i < size*2; i += 2) { // only even values
+      iset.add(new Integer(i));
+      jset.add(new Integer(i));
+    }
+    
+    int iterations = 1000000 / size;
+    
+    logln("Timing comparison of Java vs Utility");
+    logln("For about " + size + " objects that are almost all the same.");
+    
+    CheckSpeed(iset, jset, "when a = b", iterations);
+    
+    iset.add(new Integer(size + 1));    // add odd value in middle
+    
+    CheckSpeed(iset, jset, "when a contains b", iterations);        
+    CheckSpeed(jset, iset, "when b contains a", iterations);
+    
+    jset.add(new Integer(size - 1));    // add different odd value in middle
+    
+    CheckSpeed(jset, iset, "when a, b are disjoint", iterations);        
+  }
+  
+  void CheckSpeed(SortedSet iset, SortedSet jset, String message, int iterations) {
+    CheckSpeed2(iset, jset, message, iterations);
+    CheckSpeed3(iset, jset, message, iterations);
+  }
+  
+  void CheckSpeed2(SortedSet iset, SortedSet jset, String message, int iterations) {
+    boolean x;
+    boolean y;
+    
+    // make sure code is loaded:
+    x = iset.containsAll(jset);
+    y = SortedSetRelation.hasRelation(iset, SortedSetRelation.CONTAINS, jset);
+    if (x != y) errln("FAIL contains comparison");
+    
+    double start = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      x |= iset.containsAll(jset);
+    }
+    double middle = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      y |= SortedSetRelation.hasRelation(iset, SortedSetRelation.CONTAINS, jset);
+    }
+    double end = System.currentTimeMillis();
+    
+    double jtime = (middle - start)/iterations;
+    double utime = (end - middle)/iterations;
+    
+    java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+    logln("Test contains: " + message + ": Java: " + jtime
+        + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+  }
+  
+  void CheckSpeed3(SortedSet iset, SortedSet jset, String message, int iterations) {
+    boolean x;
+    boolean y;
+    
+    // make sure code is loaded:
+    x = iset.equals(jset);
+    y = SortedSetRelation.hasRelation(iset, SortedSetRelation.EQUALS, jset);
+    if (x != y) errln("FAIL equality comparison");
+    
+    
+    double start = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      x |= iset.equals(jset);
+    }
+    double middle = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      y |= SortedSetRelation.hasRelation(iset, SortedSetRelation.EQUALS, jset);
+    }
+    double end = System.currentTimeMillis();
+    
+    double jtime = (middle - start)/iterations;
+    double utime = (end - middle)/iterations;
+    
+    java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+    logln("Test equals:   " + message + ": Java: " + jtime
+        + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+  }
+  
+  void pick(int bits, Object[] examples, SortedSet output) {
+    output.clear();
+    for (int k = 0; k < 32; ++k) {
+      if (((1<<k) & bits) != 0) output.add(examples[k]);
+    }
+  }
+  
+  public static final String[] RELATION_NAME = {
+    "both-are-null",
+    "a-is-null", 
+    "equals", 
+    "is-contained-in",
+    "b-is-null",
+    "is-disjoint_with",
+    "contains", 
+    "any", };
+  
+  boolean dumbHasRelation(Collection A, int filter, Collection B) {
+    Collection ab = new TreeSet(A);
+    ab.retainAll(B);
+    if (ab.size() > 0 && (filter & SortedSetRelation.A_AND_B) == 0) return false; 
+    
+    // A - B size == A.size - A&B.size
+    if (A.size() > ab.size() && (filter & SortedSetRelation.A_NOT_B) == 0) return false; 
+    
+    // B - A size == B.size - A&B.size
+    if (B.size() > ab.size() && (filter & SortedSetRelation.B_NOT_A) == 0) return false; 
+    
+    
+    return true;
+  }    
+  
+  void checkSetRelation(SortedSet a, SortedSet b, String message) {
+    for (int i = 0; i < 8; ++i) {
+      
+      boolean hasRelation = SortedSetRelation.hasRelation(a, i, b);
+      boolean dumbHasRelation = dumbHasRelation(a, i, b);
+      
+      logln(message + " " + hasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+      
+      if (hasRelation != dumbHasRelation) {
+        errln("FAIL: " + 
+            message + " " + dumbHasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+      }
+    }
+    logln("");
+  }
+  
+  /**
+   * Test the [:Latin:] syntax.
+   */
+  public void TestScriptSet() {
+    
+    expectContainment("[:Latin:]", "aA", CharsToUnicodeString("\\u0391\\u03B1"));
+    
+    expectContainment("[:Greek:]", CharsToUnicodeString("\\u0391\\u03B1"), "aA");
+    
+    /* Jitterbug 1423 */
+    expectContainment("[[:Common:][:Inherited:]]", CharsToUnicodeString("\\U00003099\\U0001D169\\u0000"), "aA");
+    
+  }
+  
+  /**
+   * Test the [:Latin:] syntax.
+   */
+  public void TestPropertySet() {
+    String[] DATA = {
+        // Pattern, Chars IN, Chars NOT in
+        
+        "[:Latin:]",
+        "aA",
+        "\u0391\u03B1",
+        
+        "[\\p{Greek}]",
+        "\u0391\u03B1",
+        "aA",
+        
+        "\\P{ GENERAL Category = upper case letter }",
+        "abc",
+        "ABC",
+        
+        // Combining class: @since ICU 2.2
+        // Check both symbolic and numeric
+        "\\p{ccc=Nukta}",
+        "\u0ABC",
+        "abc",
+        
+        "\\p{Canonical Combining Class = 11}",
+        "\u05B1",
+        "\u05B2",
+        
+        "[:c c c = iota subscript :]",
+        "\u0345",
+        "xyz",
+        
+        // Bidi class: @since ICU 2.2
+        "\\p{bidiclass=lefttoright}",
+        "abc",
+        "\u0671\u0672",
+        
+        // Binary properties: @since ICU 2.2
+        "\\p{ideographic}",
+        "\u4E0A",
+        "x",
+        
+        "[:math=false:]",
+        "q)*(", // )(and * were removed from math in Unicode 4.0.1
+        "+<>^",
+        
+        // JB#1767 \N{}, \p{ASCII}
+        "[:Ascii:]",
+        "abc\u0000\u007F",
+        "\u0080\u4E00",
+        
+        "[\\N{ latin small letter  a  }[:name= latin small letter z:]]",
+        "az",
+        "qrs",
+        
+        // JB#2015
+        "[:any:]",
+        "a\\U0010FFFF",
+        "",
+        
+        "[:nv=0.5:]",
+        "\u00BD\u0F2A",
+        "\u00BC",
+        
+        // JB#2653: Age
+        "[:Age=1.1:]",
+        "\u03D6", // 1.1
+        "\u03D8\u03D9", // 3.2
+        
+        "[:Age=3.1:]", 
+        "\\u1800\\u3400\\U0002f800", 
+        "\\u0220\\u034f\\u30ff\\u33ff\\ufe73\\U00010000\\U00050000", 
+        
+        // JB#2350: Case_Sensitive
+        "[:Case Sensitive:]",
+        "A\u1FFC\\U00010410",
+        ";\u00B4\\U00010500",
+        
+        
+        // Regex compatibility test
+        "[-b]", // leading '-' is literal
+        "-b",
+        "ac",
+        
+        "[^-b]", // leading '-' is literal
+        "ac",
+        "-b",
+        
+        "[b-]", // trailing '-' is literal
+        "-b",
+        "ac",
+        
+        "[^b-]", // trailing '-' is literal
+        "ac",
+        "-b",
+        
+        "[a-b-]", // trailing '-' is literal
+        "ab-",
+        "c=",
+        
+        "[[a-q]&[p-z]-]", // trailing '-' is literal
+        "pq-",
+        "or=",
+        
+        "[\\s|\\)|:|$|\\>]", // from regex tests
+        "s|):$>",
+        "\\abc",
+        
+        "[\uDC00cd]", // JB#2906: isolated trail at start
+        "cd\uDC00",
+        "ab\uD800\\U00010000",
+        
+        "[ab\uD800]", // JB#2906: isolated trail at start
+        "ab\uD800",
+        "cd\uDC00\\U00010000",
+        
+        "[ab\uD800cd]", // JB#2906: isolated lead in middle
+        "abcd\uD800",
+        "ef\uDC00\\U00010000",
+        
+        "[ab\uDC00cd]", // JB#2906: isolated trail in middle
+        "abcd\uDC00",
+        "ef\uD800\\U00010000",
+        
+        "[:^lccc=0:]", // Lead canonical class
+        "\u0300\u0301",
+        "abcd\u00c0\u00c5",
+        
+        "[:^tccc=0:]", // Trail canonical class
+        "\u0300\u0301\u00c0\u00c5",
+        "abcd",
+        
+        "[[:^lccc=0:][:^tccc=0:]]", // Lead and trail canonical class
+        "\u0300\u0301\u00c0\u00c5",
+        "abcd",
+        
+        "[[:^lccc=0:]-[:^tccc=0:]]", // Stuff that starts with an accent but ends with a base (none right now)
+        "",
+        "abcd\u0300\u0301\u00c0\u00c5",
+        
+        "[[:ccc=0:]-[:lccc=0:]-[:tccc=0:]]", // Weirdos. Complete canonical class is zero, but both lead and trail are not
+        "\u0F73\u0F75\u0F81",
+        "abcd\u0300\u0301\u00c0\u00c5",
+        
+        "[:Assigned:]",
+        "A\\uE000\\uF8FF\\uFDC7\\U00010000\\U0010FFFD",
+        "\\u0888\\uFDD3\\uFFFE\\U00050005",
+        
+    };
+    
+    for (int i=0; i<DATA.length; i+=3) {  
+      expectContainment(DATA[i], DATA[i+1], DATA[i+2]);
+    }
+  }
+  
+  public void TestUnicodeSetStrings() {
+    UnicodeSet uset = new UnicodeSet("[a{bc}{cd}pqr\u0000]");
+    logln(uset + " ~ " + uset.getRegexEquivalent());
+    String[][] testStrings = {{"x", "none"},
+        {"bc", "all"},
+        {"cdbca", "all"},
+        {"a", "all"},
+        {"bcx", "some"},
+        {"ab", "some"},
+        {"acb", "some"},
+        {"bcda", "some"},
+        {"dccbx", "none"},
+    };
+    for (int i = 0; i < testStrings.length; ++i) {
+      check(uset, testStrings[i][0], testStrings[i][1]);
+    }
+  }
+  
+  
+  private void check(UnicodeSet uset, String string, String desiredStatus) {
+    boolean shouldContainAll = desiredStatus.equals("all");
+    boolean shouldContainNone = desiredStatus.equals("none");
+    if (uset.containsAll(string) != shouldContainAll) {
+      errln("containsAll " +  string + " should be " + shouldContainAll);
+    } else {
+      logln("containsAll " +  string + " = " + shouldContainAll);
+    }
+    if (uset.containsNone(string) != shouldContainNone) {
+      errln("containsNone " +  string + " should be " + shouldContainNone);
+    } else {
+      logln("containsNone " +  string + " = " + shouldContainNone);
+    }
+  }
+  
+  /**
+   * Test cloning of UnicodeSet
+   */
+  public void TestClone() {
+    UnicodeSet s = new UnicodeSet("[abcxyz]");
+    UnicodeSet t = (UnicodeSet) s.clone();
+    expectContainment(t, "abc", "def");
+  }
+  
+  /**
+   * Test the indexOf() and charAt() methods.
+   */
+  public void TestIndexOf() {
+    UnicodeSet set = new UnicodeSet("[a-cx-y3578]");
+    for (int i=0; i<set.size(); ++i) {
+      int c = set.charAt(i);
+      if (set.indexOf(c) != i) {
+        errln("FAIL: charAt(" + i + ") = " + c +
+            " => indexOf() => " + set.indexOf(c));
+      }
+    }
+    int c = set.charAt(set.size());
+    if (c != -1) {
+      errln("FAIL: charAt(<out of range>) = " +
+          Utility.escape(String.valueOf(c)));
+    }
+    int j = set.indexOf('q');
+    if (j != -1) {
+      errln("FAIL: indexOf('q') = " + j);
+    }
+  }
+  
+  public void TestContainsString() {
+    UnicodeSet x = new UnicodeSet("[a{bc}]");
+    if (x.contains("abc")) errln("FAIL");
+  }
+  
+  public void TestExhaustive() {
+    // exhaustive tests. Simulate UnicodeSets with integers.
+    // That gives us very solid tests (except for large memory tests).
+    
+    char limit = (char)128;
+    
+    for (char i = 0; i < limit; ++i) {
+      logln("Testing " + i + ", " + bitsToSet(i));
+      _testComplement(i);
+      
+      // AS LONG AS WE ARE HERE, check roundtrip
+      checkRoundTrip(bitsToSet(i));
+      
+      for (char j = 0; j < limit; ++j) {
+        _testAdd(i,j);
+        _testXor(i,j);
+        _testRetain(i,j);
+        _testRemove(i,j);
+      }
+    }
+  }
+  
+  /**
+   * Make sure each script name and abbreviated name can be used
+   * to construct a UnicodeSet.
+   */
+  public void TestScriptNames() {
+    for (int i=0; i<UScript.CODE_LIMIT; ++i) {
+      for (int j=0; j<2; ++j) {
+        String pat = "";
+        try {
+          String name =
+            (j==0) ? UScript.getName(i) : UScript.getShortName(i);
+            pat = "[:" + name + ":]";
+            UnicodeSet set = new UnicodeSet(pat);
+            logln("Ok: " + pat + " -> " + set.toPattern(false));
+        } catch (IllegalArgumentException e) {
+          if (pat.length() == 0) {
+            errln("FAIL (in UScript): No name for script " + i);
+          } else {
+            errln("FAIL: Couldn't create " + pat);
+          }
+        }
+      }
+    }
+  }
+  
+  /**
+   * Test closure API.
+   */
+  public void TestCloseOver() {
+    String CASE = String.valueOf(UnicodeSet.CASE);
+    String[] DATA = {
+        // selector, input, output
+        CASE,
+        "[aq\u00DF{Bc}{bC}{Fi}]",
+        "[aAqQ\u00DF\u1E9E\uFB01{ss}{bc}{fi}]", // U+1E9E LATIN CAPITAL LETTER SHARP S is new in Unicode 5.1
+        
+        CASE,
+        "[\u01F1]", // 'DZ'
+        "[\u01F1\u01F2\u01F3]",
+        
+        CASE,
+        "[\u1FB4]",
+        "[\u1FB4{\u03AC\u03B9}]",
+        
+        CASE,
+        "[{F\uFB01}]",
+        "[\uFB03{ffi}]",            
+        
+        CASE,
+        "[a-z]","[A-Za-z\u017F\u212A]",
+        CASE,
+        "[abc]","[A-Ca-c]",
+        CASE,
+        "[ABC]","[A-Ca-c]",
+    };
+    
+    UnicodeSet s = new UnicodeSet();
+    UnicodeSet t = new UnicodeSet();
+    for (int i=0; i<DATA.length; i+=3) {
+      int selector = Integer.parseInt(DATA[i]);
+      String pat = DATA[i+1];
+      String exp = DATA[i+2];
+      s.applyPattern(pat);
+      s.closeOver(selector);
+      t.applyPattern(exp);
+      if (s.equals(t)) {
+        logln("Ok: " + pat + ".closeOver(" + selector + ") => " + exp);
+      } else {
+        errln("FAIL: " + pat + ".closeOver(" + selector + ") => " +
+            s.toPattern(true) + ", expected " + exp);
+      }
+    }
+    
+    // Test the pattern API
+    s.applyPattern("[abc]", UnicodeSet.CASE);
+    expectContainment(s, "abcABC", "defDEF");
+    s = new UnicodeSet("[^abc]", UnicodeSet.CASE);
+    expectContainment(s, "defDEF", "abcABC");
+  }
+  
+  public void TestEscapePattern() {
+    // The following pattern must contain at least one range "c-d"
+    // for which isRuleWhiteSpace(c) or isRuleWhiteSpace(d) is true.
+    String pattern =
+      "[\\uFEFF \\u200E-\\u20FF \\uFFF9-\\uFFFC \\U0001D173-\\U0001D17A \\U000F0000-\\U000FFFFD ]";
+    String exp =
+      "[\\u200E-\\u20FF\\uFEFF\\uFFF9-\\uFFFC\\U0001D173-\\U0001D17A\\U000F0000-\\U000FFFFD]";
+    // We test this with two passes; in the second pass we
+    // pre-unescape the pattern.  Since U+200E is rule whitespace,
+    // this fails -- which is what we expect.
+    for (int pass=1; pass<=2; ++pass) {
+      String pat = pattern;
+      if (pass==2) {
+        pat = Utility.unescape(pat);
+      }
+      // Pattern is only good for pass 1
+      boolean isPatternValid = (pass==1);
+      
+      UnicodeSet set = null;
+      try {
+        set = new UnicodeSet(pat);
+      } catch (IllegalArgumentException e) {
+        set = null;
+      }
+      if ((set != null) != isPatternValid){
+        errln("FAIL: applyPattern(" +
+            Utility.escape(pat) + ") => " + set);
+        continue;
+      }
+      if (set == null) {
+        continue;
+      }
+      if (set.contains((char)0x0644)){
+        errln("FAIL: " + Utility.escape(pat) + " contains(U+0664)");
+      }
+      
+      String newpat = set.toPattern(true);
+      if (newpat.equals(exp)) {
+        logln(Utility.escape(pat) + " => " + newpat);
+      } else {
+        errln("FAIL: " + Utility.escape(pat) + " => " + newpat);
+      }
+      
+      for (int i=0; i<set.getRangeCount(); ++i) {
+        StringBuffer str = new StringBuffer("Range ");
+        str.append((char)(0x30 + i))
+        .append(": ");
+        UTF16.append(str, set.getRangeStart(i));
+        str.append(" - ");
+        UTF16.append(str, set.getRangeEnd(i));
+        String s = Utility.escape(str.toString() + " (" + set.getRangeStart(i) + " - " +
+            set.getRangeEnd(i) + ")");
+        if (set.getRangeStart(i) < 0) {
+          errln("FAIL: " + s);
+        } else {
+          logln(s);
+        }
+      }
+    }
+  }
+  
+  public void TestSymbolTable() {
+    // Multiple test cases can be set up here.  Each test case
+    // is terminated by null:
+    // var, value, var, value,..., input pat., exp. output pat., null
+    String DATA[] = {
+        "us", "a-z", "[0-1$us]", "[0-1a-z]", null,
+        "us", "[a-z]", "[0-1$us]", "[0-1[a-z]]", null,
+        "us", "\\[a\\-z\\]", "[0-1$us]", "[-01\\[\\]az]", null
+    };
+    
+    for (int i=0; i<DATA.length; ++i) {
+      TokenSymbolTable sym = new TokenSymbolTable();
+      
+      // Set up variables
+      while (DATA[i+2] != null) {
+        sym.add(DATA[i], DATA[i+1]);
+        i += 2;
+      }
+      
+      // Input pattern and expected output pattern
+      String inpat = DATA[i], exppat = DATA[i+1];
+      i += 2;
+      
+      ParsePosition pos = new ParsePosition(0);
+      UnicodeSet us = new UnicodeSet(inpat, pos, sym);
+      
+      // results
+      if (pos.getIndex() != inpat.length()) {
+        errln("Failed to read to end of string \""
+            + inpat + "\": read to "
+            + pos.getIndex() + ", length is "
+            + inpat.length());
+      }
+      
+      UnicodeSet us2 = new UnicodeSet(exppat);
+      if (!us.equals(us2)) {
+        errln("Failed, got " + us + ", expected " + us2);
+      } else {
+        logln("Ok, got " + us);
+      }
+      
+      //cover Unicode(String,ParsePosition,SymbolTable,int)
+      ParsePosition inpos = new ParsePosition(0);
+      UnicodeSet inSet = new UnicodeSet(inpat, inpos, sym, UnicodeSet.IGNORE_SPACE);
+      UnicodeSet expSet = new UnicodeSet(exppat);
+      if (!inSet.equals(expSet)) {
+        errln("FAIL: Failed, got " + inSet + ", expected " + expSet);
+      } else {
+        logln("OK: got " + inSet);
+      }
+    }
+  }
+  
+  /**
+   * Test that Posix style character classes [:digit:], etc.
+   *   have the Unicode definitions from TR 18.
+   */
+  public void TestPosixClasses() {
+    expectEqual("POSIX alpha", "[:alpha:]", "\\p{Alphabetic}");
+    expectEqual("POSIX lower", "[:lower:]", "\\p{lowercase}");
+    expectEqual("POSIX upper", "[:upper:]", "\\p{Uppercase}");
+    expectEqual("POSIX punct", "[:punct:]", "\\p{gc=Punctuation}");
+    expectEqual("POSIX digit", "[:digit:]", "\\p{gc=DecimalNumber}");
+    expectEqual("POSIX xdigit", "[:xdigit:]", "[\\p{DecimalNumber}\\p{HexDigit}]");
+    expectEqual("POSIX alnum", "[:alnum:]", "[\\p{Alphabetic}\\p{DecimalNumber}]");
+    expectEqual("POSIX space", "[:space:]", "\\p{Whitespace}");
+    expectEqual("POSIX blank", "[:blank:]", "[\\p{Whitespace}-[\\u000a\\u000B\\u000c\\u000d\\u0085\\p{LineSeparator}\\p{ParagraphSeparator}]]");
+    expectEqual("POSIX cntrl", "[:cntrl:]", "\\p{Control}");
+    expectEqual("POSIX graph", "[:graph:]", "[^\\p{Whitespace}\\p{Control}\\p{Surrogate}\\p{Unassigned}]");
+    expectEqual("POSIX print", "[:print:]", "[[:graph:][:blank:]-[\\p{Control}]]");
+  }
+  
+  /**
+   * Test that frozen classes disallow changes. For 4217
+   */
+  public void TestFrozen() {
+    UnicodeSet test = new UnicodeSet("[[:whitespace:]A]");
+    test.freeze();
+    checkModification(test, true);
+    checkModification(test, false);
+  }
+  
+  public void checkModification(UnicodeSet original, boolean isFrozen) {
+    main:
+      for (int i = 0; ;++i) {
+        UnicodeSet test = (UnicodeSet) (isFrozen ? original.clone() : original.cloneAsThawed());
+        boolean gotException = true;
+        boolean checkEquals = true;
+        try {
+          switch(i) {
+            case 0: test.add(0); break;
+            case 1: test.add(0,1); break;
+            case 2: test.add("a"); break;
+            case 3: List a = new ArrayList(); a.add("a"); test.addAll(a); break;
+            case 4: test.addAll("ab"); break;
+            case 5: test.addAll(new UnicodeSet("[ab]")); break;
+            case 6: test.applyIntPropertyValue(0,0); break;
+            case 7: test.applyPattern("[ab]"); break;
+            case 8: test.applyPattern("[ab]", true); break;
+            case 9: test.applyPattern("[ab]", 0); break;
+            case 10: test.applyPropertyAlias("hex","true"); break;
+            case 11: test.applyPropertyAlias("hex", "true", null); break;
+            case 12: test.closeOver(UnicodeSet.CASE); break;
+            case 13: test.compact(); checkEquals = false; break;
+            case 14: test.complement(0); break;
+            case 15: test.complement(0,0); break;
+            case 16: test.complement("ab"); break;
+            case 17: test.complementAll("ab"); break;
+            case 18: test.complementAll(new UnicodeSet("[ab]")); break;
+            case 19: test.remove(' '); break;
+            case 20: test.remove(' ','a'); break;
+            case 21: test.remove(" "); break;
+            case 22: test.removeAll(" a"); break;
+            case 23: test.removeAll(new UnicodeSet("[\\ a]")); break;
+            case 24: test.retain(' '); break;
+            case 25: test.retain(' ','a'); break;
+            case 26: test.retain(" "); break;
+            case 27: test.retainAll(" a"); break;
+            case 28: test.retainAll(new UnicodeSet("[\\ a]")); break;
+            case 29: test.set(0,1); break;
+            case 30: test.set(new UnicodeSet("[ab]")); break;
+            
+            default: continue main; // so we don't keep having to change the endpoint, and gaps are not skipped.
+            case 35: return;
+          }
+          gotException = false;
+        } catch (UnsupportedOperationException e) {
+          // do nothing
+        }
+        if (isFrozen && !gotException) errln(i + ") attempt to modify frozen object didn't result in an exception");
+        if (!isFrozen && gotException) errln(i + ") attempt to modify thawed object did result in an exception");
+        if (checkEquals) {
+          if (test.equals(original)) {
+            if (!isFrozen) errln(i + ") attempt to modify thawed object didn't change the object");
+          } else { // unequal
+            if (isFrozen) errln(i + ") attempt to modify frozen object changed the object");
+          }
+        }
+      }
+  }
+  
+  String[] prettyData = {
+      "[\\uD7DE-\\uD90C \\uDCB5-\\uDD9F]", // special case
+      "[:any:]",
+      "[:whitespace:]",
+      "[:linebreak=AL:]",
+  };
+  
+  public void TestPrettyPrinting() {
+    try{
+      PrettyPrinter pp = new PrettyPrinter();
+      
+      int i = 0;
+      for (; i < prettyData.length; ++i) {
+        UnicodeSet test = new UnicodeSet(prettyData[i]);
+        checkPrettySet(pp, i, test);
+      }
+      Random random = new Random(0);
+      UnicodeSet test = new UnicodeSet();
+      
+      // To keep runtimes under control, make the number of random test cases
+      //   to try depends on the test framework exhaustive setting.
+      //  params.inclusions = 5:   default exhaustive value
+      //  params.inclusions = 10:  max exhaustive value.
+      int iterations = 50;
+      if (params.inclusion > 5) {
+        iterations = (params.inclusion-5) * 200;
+      }
+      for (; i < iterations; ++i) {
+        double start = random.nextGaussian() * 0x10000;
+        if (start < 0) start = - start;
+        if (start > 0x10FFFF) {
+          start = 0x10FFFF;
+        }
+        double end = random.nextGaussian() * 0x100;
+        if (end < 0) end = -end;
+        end = start + end;
+        if (end > 0x10FFFF) {
+          end = 0x10FFFF;
+        }
+        test.complement((int)start, (int)end);
+        checkPrettySet(pp, i, test);
+      }
+    }catch(RuntimeException ex){
+      warnln("Could not load Collator");
+    }
+  }
+  
+  private void checkPrettySet(PrettyPrinter pp, int i, UnicodeSet test) {
+    String pretty = pp.toPattern(test);
+    UnicodeSet retry = new UnicodeSet(pretty);
+    if (!test.equals(retry)) {
+      errln(i + ". Failed test: " + test + " != " + pretty);
+    } else {
+      logln(i + ". Worked for " + truncate(test.toString()) + " => " + truncate(pretty));
+    }
+  }
+  
+  private String truncate(String string) {
+    if (string.length() <= 100) return string;
+    return string.substring(0,97) + "...";
+  }
+  
+  public class TokenSymbolTable implements SymbolTable {
+    HashMap contents = new HashMap();
+    
+    /**
+     * (Non-SymbolTable API) Add the given variable and value to
+     * the table.  Variable should NOT contain leading '$'.
+     */
+    public void add(String var, String value) {
+      char[] buffer = new char[value.length()];
+      value.getChars(0, value.length(), buffer, 0);
+      add(var, buffer);
+    }
+    
+    /**
+     * (Non-SymbolTable API) Add the given variable and value to
+     * the table.  Variable should NOT contain leading '$'.
+     */
+    public void add(String var, char[] body) {
+      logln("TokenSymbolTable: add \"" + var + "\" => \"" +
+          new String(body) + "\"");
+      contents.put(var, body);
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#lookup(java.lang.String)
+     */
+    public char[] lookup(String s) {
+      logln("TokenSymbolTable: lookup \"" + s + "\" => \"" +
+          new String((char[]) contents.get(s)) + "\"");
+      return (char[])contents.get(s);
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#lookupMatcher(int)
+     */
+    public UnicodeMatcher lookupMatcher(int ch) {
+      return null;
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#parseReference(java.lang.String,
+     java.text.ParsePosition, int)
+     */
+    public String parseReference(String text, ParsePosition pos, int
+        limit) {
+      int cp;
+      int start = pos.getIndex();
+      int i;
+      for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+        cp = UTF16.charAt(text, i);
+        if (!com.ibm.icu.lang.UCharacter.isUnicodeIdentifierPart(cp)) {
+          break;
+        }
+      }
+      logln("TokenSymbolTable: parse \"" + text + "\" from " +
+          start + " to " + i +
+          " => \"" + text.substring(start,i) + "\"");
+      pos.setIndex(i);
+      return text.substring(start,i);
+    }
+  }
+  
+  public void TestSurrogate() {
+    String DATA[] = {
+        // These should all behave identically
+        "[abc\\uD800\\uDC00]",
+        "[abc\uD800\uDC00]",
+        "[abc\\U00010000]",
+    };
+    for (int i=0; i<DATA.length; ++i) {
+      logln("Test pattern " + i + " :" + Utility.escape(DATA[i]));
+      UnicodeSet set = new UnicodeSet(DATA[i]);
+      expectContainment(set,
+          CharsToUnicodeString("abc\\U00010000"),
+      "\uD800;\uDC00"); // split apart surrogate-pair
+      if (set.size() != 4) {
+        errln(Utility.escape("FAIL: " + DATA[i] + ".size() == " + 
+            set.size() + ", expected 4"));
+      }
+    }
+  }
+  
+  public void TestContains() {
+    int limit = 256; // combinations to test
+    for (int i = 0; i < limit; ++i) {
+      logln("Trying: " + i);
+      UnicodeSet x = bitsToSet(i);
+      for (int j = 0; j < limit; ++j) {
+        UnicodeSet y = bitsToSet(j);
+        boolean containsNone = (i & j) == 0;
+        boolean containsAll = (i & j) == j;
+        boolean equals = i == j;
+        if (containsNone != x.containsNone(y)) {
+          x.containsNone(y); // repeat for debugging
+          errln("FAILED: " + x +  " containsSome " + y);
+        }
+        if (containsAll != x.containsAll(y)) {
+          x.containsAll(y); // repeat for debugging
+          errln("FAILED: " + x +  " containsAll " + y);
+        }
+        if (equals != x.equals(y)) {
+          x.equals(y); // repeat for debugging
+          errln("FAILED: " + x +  " equals " + y);
+        }
+      }
+    }
+  }
+  
+  void _testComplement(int a) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet z = bitsToSet(a);
+    z.complement();
+    int c = setToBits(z);
+    if (c != (~a)) {
+      errln("FAILED: add: ~" + x +  " != " + z);
+      errln("FAILED: add: ~" + a + " != " + c);
+    }
+    checkCanonicalRep(z, "complement " + a);
+  }
+  
+  void _testAdd(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.addAll(y);
+    int c = setToBits(z);
+    if (c != (a | b)) {
+      errln(Utility.escape("FAILED: add: " + x + " | " + y + " != " + z));
+      errln("FAILED: add: " + a + " | " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "add " + a + "," + b);
+  }
+  
+  void _testRetain(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.retainAll(y);
+    int c = setToBits(z);
+    if (c != (a & b)) {
+      errln("FAILED: retain: " + x + " & " + y + " != " + z);
+      errln("FAILED: retain: " + a + " & " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "retain " + a + "," + b);
+  }
+  
+  void _testRemove(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.removeAll(y);
+    int c = setToBits(z);
+    if (c != (a &~ b)) {
+      errln("FAILED: remove: " + x + " &~ " + y + " != " + z);
+      errln("FAILED: remove: " + a + " &~ " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "remove " + a + "," + b);
+  }
+  
+  void _testXor(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.complementAll(y);
+    int c = setToBits(z);
+    if (c != (a ^ b)) {
+      errln("FAILED: complement: " + x + " ^ " + y + " != " + z);
+      errln("FAILED: complement: " + a + " ^ " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "complement " + a + "," + b);
+  }
+  
+  /**
+   * Check that ranges are monotonically increasing and non-
+   * overlapping.
+   */
+  void checkCanonicalRep(UnicodeSet set, String msg) {
+    int n = set.getRangeCount();
+    if (n < 0) {
+      errln("FAIL result of " + msg +
+          ": range count should be >= 0 but is " +
+          n + " for " + Utility.escape(set.toString()));
+      return;
+    }
+    int last = 0;
+    for (int i=0; i<n; ++i) {
+      int start = set.getRangeStart(i);
+      int end = set.getRangeEnd(i);
+      if (start > end) {
+        errln("FAIL result of " + msg +
+            ": range " + (i+1) +
+            " start > end: " + start + ", " + end +
+            " for " + Utility.escape(set.toString()));
+      }
+      if (i > 0 && start <= last) {
+        errln("FAIL result of " + msg +
+            ": range " + (i+1) +
+            " overlaps previous range: " + start + ", " + end +
+            " for " + Utility.escape(set.toString()));
+      }
+      last = end;
+    }
+  }
+  
+  /**
+   * Convert a bitmask to a UnicodeSet.
+   */
+  UnicodeSet bitsToSet(int a) {
+    UnicodeSet result = new UnicodeSet();
+    for (int i = 0; i < 32; ++i) {
+      if ((a & (1<<i)) != 0) {
+        result.add((char)i,(char)i);
+      }
+    }
+    
+    return result;
+  }
+  
+  /**
+   * Convert a UnicodeSet to a bitmask.  Only the characters
+   * U+0000 to U+0020 are represented in the bitmask.
+   */
+  static int setToBits(UnicodeSet x) {
+    int result = 0;
+    for (int i = 0; i < 32; ++i) {
+      if (x.contains((char)i)) {
+        result |= (1<<i);
+      }
+    }
+    return result;
+  }
+  
+  /**
+   * Return the representation of an inversion list based UnicodeSet
+   * as a pairs list.  Ranges are listed in ascending Unicode order.
+   * For example, the set [a-zA-M3] is represented as "33AMaz".
+   */
+  static String getPairs(UnicodeSet set) {
+    StringBuffer pairs = new StringBuffer();
+    for (int i=0; i<set.getRangeCount(); ++i) {
+      int start = set.getRangeStart(i);
+      int end = set.getRangeEnd(i);
+      if (end > 0xFFFF) {
+        end = 0xFFFF;
+        i = set.getRangeCount(); // Should be unnecessary
+      }
+      pairs.append((char)start).append((char)end);
+    }
+    return pairs.toString();
+  }
+  
+  /**
+   * Test function. Make sure that the sets have the right relation
+   */
+  
+  void expectRelation(Object relationObj, Object set1Obj, Object set2Obj, String message) {
+    int relation = ((Integer) relationObj).intValue();
+    UnicodeSet set1 = (UnicodeSet) set1Obj;
+    UnicodeSet set2 = (UnicodeSet) set2Obj;
+    
+    // by-the-by, check the iterator
+    checkRoundTrip(set1);
+    checkRoundTrip(set2);
+    
+    boolean contains = set1.containsAll(set2);
+    boolean isContained = set2.containsAll(set1);
+    boolean disjoint = set1.containsNone(set2);
+    boolean equals = set1.equals(set2);
+    
+    UnicodeSet intersection = new UnicodeSet(set1).retainAll(set2);
+    UnicodeSet minus12 = new UnicodeSet(set1).removeAll(set2);
+    UnicodeSet minus21 = new UnicodeSet(set2).removeAll(set1);
+    
+    // test basic properties
+    
+    if (contains != (intersection.size() == set2.size())) {
+      errln("FAIL contains1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (contains != (intersection.equals(set2))) {
+      errln("FAIL contains2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (isContained != (intersection.size() == set1.size())) {
+      errln("FAIL isContained1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (isContained != (intersection.equals(set1))) {
+      errln("FAIL isContained2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if ((contains && isContained) != equals) {
+      errln("FAIL equals" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (disjoint != (intersection.size() == 0)) {
+      errln("FAIL disjoint" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    // Now see if the expected relation is true
+    int status = (minus12.size() != 0 ? 4 : 0)
+    | (intersection.size() != 0 ? 2 : 0)
+    | (minus21.size() != 0 ? 1 : 0);
+    
+    if (status != relation) {
+      errln("FAIL relation incorrect" + message
+          + "; desired = " + RELATION_NAME[relation]
+                                           + "; found = " + RELATION_NAME[status]
+                                                                          + "; set1 = " + set1.toPattern(true)
+                                                                          + "; set2 = " + set2.toPattern(true)
+      );
+    }
+  }
+  
+  /**
+   * Basic consistency check for a few items.
+   * That the iterator works, and that we can create a pattern and
+   * get the same thing back
+   */
+  
+  void checkRoundTrip(UnicodeSet s) {
+    String pat = s.toPattern(false);
+    UnicodeSet t = copyWithIterator(s, false);
+    checkEqual(s, t, "iterator roundtrip");
+    
+    t = copyWithIterator(s, true); // try range
+    checkEqual(s, t, "iterator roundtrip");
+    
+    t = new UnicodeSet(pat);
+    checkEqual(s, t, "toPattern(false)");
+    
+    pat = s.toPattern(true);
+    t = new UnicodeSet(pat);
+    checkEqual(s, t, "toPattern(true)");
+  }
+  
+  UnicodeSet copyWithIterator(UnicodeSet s, boolean withRange) {
+    UnicodeSet t = new UnicodeSet();
+    UnicodeSetIterator it = new UnicodeSetIterator(s);
+    if (withRange) {
+      while (it.nextRange()) {
+        if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+          t.add(it.string);
+        } else {
+          t.add(it.codepoint, it.codepointEnd);
+        }
+      }
+    } else {
+      while (it.next()) {
+        if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+          t.add(it.string);
+        } else {
+          t.add(it.codepoint);
+        }
+      }
+    }
+    return t;
+  }
+  
+  boolean checkEqual(UnicodeSet s, UnicodeSet t, String message) {
+    if (!s.equals(t)) {
+      errln("FAIL " + message
+          + "; source = " + s.toPattern(true)
+          + "; result = " + t.toPattern(true)
+      );
+      return false;
+    }
+    return true;
+  }
+  
+  void expectEqual(String name, String pat1, String pat2) {
+    UnicodeSet set1, set2;
+    try {
+      set1 = new UnicodeSet(pat1);
+      set2 = new UnicodeSet(pat2);
+    } catch (IllegalArgumentException e) {
+      errln("FAIL: Couldn't create UnicodeSet from pattern for \"" + name + "\": " + e.getMessage());
+      return;
+    }
+    if(!set1.equals(set2)) {
+      errln("FAIL: Sets built from patterns differ for \"" + name + "\"");
+    }
+  }
+  
+  /**
+   * Expect the given set to contain the characters in charsIn and
+   * to not contain those in charsOut.
+   */
+  void expectContainment(String pat, String charsIn, String charsOut) {
+    UnicodeSet set;
+    try {
+      set = new UnicodeSet(pat);
+    } catch (IllegalArgumentException e) {
+      errln("FAIL: Couldn't create UnicodeSet from pattern \"" +
+          pat + "\": " + e.getMessage());
+      return;
+    }
+    expectContainment(set, charsIn, charsOut);
+  }
+  
+  /**
+   * Expect the given set to contain the characters in charsIn and
+   * to not contain those in charsOut.
+   */
+  void expectContainment(UnicodeSet set, String charsIn, String charsOut) {
+    StringBuffer bad = new StringBuffer();
+    if (charsIn != null) {
+      charsIn = Utility.unescape(charsIn);
+      for (int i=0; i<charsIn.length(); ) {
+        int c = UTF16.charAt(charsIn,i);
+        i += UTF16.getCharCount(c);
+        if (!set.contains(c)) {
+          UTF16.append(bad,c);
+        }
+      }
+      if (bad.length() > 0) {
+        errln(Utility.escape("FAIL: set " + set + " does not contain " + bad +
+            ", expected containment of " + charsIn));
+      } else {
+        logln(Utility.escape("Ok: set " + set + " contains " + charsIn));
+      }
+    }
+    if (charsOut != null) {
+      charsOut = Utility.unescape(charsOut);
+      bad.setLength(0);
+      for (int i=0; i<charsOut.length(); ) {
+        int c = UTF16.charAt(charsOut,i);
+        i += UTF16.getCharCount(c);
+        if (set.contains(c)) {
+          UTF16.append(bad, c);
+        }
+      }
+      if (bad.length() > 0) {
+        errln(Utility.escape("FAIL: set " + set + " contains " + bad +
+            ", expected non-containment of " + charsOut));
+      } else {
+        logln(Utility.escape("Ok: set " + set + " does not contain " + charsOut));
+      }
+    }
+  }
+  
+  void expectPattern(UnicodeSet set,
+      String pattern,
+      String expectedPairs) {
+    set.applyPattern(pattern);
+    if (!getPairs(set).equals(expectedPairs)) {
+      errln("FAIL: applyPattern(\"" + pattern +
+          "\") => pairs \"" +
+          Utility.escape(getPairs(set)) + "\", expected \"" +
+          Utility.escape(expectedPairs) + "\"");
+    } else {
+      logln("Ok:   applyPattern(\"" + pattern +
+          "\") => pairs \"" +
+          Utility.escape(getPairs(set)) + "\"");
+    }
+  }
+  
+  void expectToPattern(UnicodeSet set,
+      String expPat,
+      String[] expStrings) {
+    String pat = set.toPattern(true);
+    if (pat.equals(expPat)) {
+      logln("Ok:   toPattern() => \"" + pat + "\"");
+    } else {
+      errln("FAIL: toPattern() => \"" + pat + "\", expected \"" + expPat + "\"");
+      return;
+    }
+    if (expStrings == null) {
+      return;
+    }
+    boolean in = true;
+    for (int i=0; i<expStrings.length; ++i) {
+      if (expStrings[i] == NOT) { // sic; pointer comparison
+        in = false;
+        continue;
+      }
+      boolean contained = set.contains(expStrings[i]);
+      if (contained == in) {
+        logln("Ok: " + expPat + 
+            (contained ? " contains {" : " does not contain {") +
+            Utility.escape(expStrings[i]) + "}");
+      } else {
+        errln("FAIL: " + expPat + 
+            (contained ? " contains {" : " does not contain {") +
+            Utility.escape(expStrings[i]) + "}");
+      }
+    }
+  }
+  
+  void expectPairs(UnicodeSet set, String expectedPairs) {
+    if (!getPairs(set).equals(expectedPairs)) {
+      errln("FAIL: Expected pair list \"" +
+          Utility.escape(expectedPairs) + "\", got \"" +
+          Utility.escape(getPairs(set)) + "\"");
+    }
+  }
+  static final String CharsToUnicodeString(String s) {
+    return Utility.unescape(s);
+  }
+  
+  
+}
diff --git a/src/com/ibm/icu/dev/test/translit/WriteCharts.java b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
new file mode 100644
index 0000000..9241f83
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
@@ -0,0 +1,378 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+import java.io.*;
+
+public class WriteCharts {
+    public static void main(String[] args) throws IOException {
+        if (false) {
+            printSet("[[\u0000-\u007E \u30A1-\u30FC \uFF61-\uFF9F\u3001\u3002][:Katakana:][:Mark:]]");
+        }
+        String testSet = "";
+        if (args.length == 0) args = getAllScripts();
+        for (int i = 0; i < args.length; ++i) {
+    // Enumeration enum = Transliterator.getAvailableIDs();
+            if (args[i].startsWith("[")) {
+                testSet = args[i];
+            } else {
+                print(testSet, args[i]);
+                testSet = "";
+            }
+        }
+    }
+    
+    public static void printSet(String source) {
+        UnicodeSet s = new UnicodeSet(source);
+        System.out.println("Printout for '" + source + "'");
+        int count = s.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = s.getRangeStart(i);
+            int end = s.getRangeEnd(i);
+            System.out.println(Integer.toString(start,16) + ".." + Integer.toString(end,16));
+        }
+    }
+    
+    public static String[] getAllScripts() {
+        Set set = new TreeSet();
+        int scripts[];
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("[Skipping " + source + "]");
+                continue;
+            }
+            int sourceScript = scripts[0];
+            System.out.println("Source: " + source + ";\tScripts: " + showScripts(scripts));
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                scripts = UScript.getCode(target);
+                if (scripts == null
+                        || priority(scripts[0]) < priority(sourceScript)) {
+                    // skip doing both directions
+                    System.out.println("[Skipping '" + source + "-" + target + "']");
+                    continue;
+                }
+                System.out.println("\tTarget: " + target + ";\tScripts: " + showScripts(scripts));
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target;
+                    if (variant.length() != 0) {
+                        id += "/" + variant;
+                        if (false) {
+                            System.out.println("SKIPPING VARIANT, SINCE IT CURRENTLY BREAKS!\t" + id);
+                            continue;
+                        }
+                    }
+                    System.out.println("\t\t\t\tAdding: '" + id + "'");
+                    set.add(id);
+                }
+            }
+        }
+        String[] results = new String[set.size()];
+        set.toArray(results);
+        return results;
+    }
+    
+    static public int priority(int script) {
+        if (script == UScript.LATIN) return -2;
+        return script;
+    }
+    
+    public static String showScripts(int[] scripts) {
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < scripts.length; ++i) {
+            if (i != 0) results.append(", ");
+            results.append(UScript.getName(scripts[i]));
+        }
+        return results.toString();
+    }
+    
+    public static void print(String testSet, String rawId) throws IOException {
+        System.out.println("Processing " + rawId);
+        Transliterator t = Transliterator.getInstance(rawId);
+        String id = t.getID();
+        
+        // clean up IDs. Ought to be API for getting source, target, variant
+        int minusPos = id.indexOf('-');
+        String source = id.substring(0,minusPos);
+        String target = id.substring(minusPos+1);
+        int slashPos = target.indexOf('/');
+        if (slashPos >= 0) target = target.substring(0,slashPos);
+        
+        // check that the source is a script
+        if (testSet.equals("")) {
+            int[] scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("FAILED: " 
+                    + Transliterator.getDisplayName(id)
+                    + " does not have a script as the source");
+                return;
+            } else {
+                testSet = "[:" + source + ":]";
+                if (source.equalsIgnoreCase("katakana")) {
+                    testSet = "[" + testSet + "\u30FC]";
+                    printSet(testSet);
+                }
+            }
+        }
+        UnicodeSet sourceSet = new UnicodeSet(testSet);
+
+        // check that the target is a script
+        int[] scripts = UScript.getCode(target);
+        if (scripts == null) {
+            target = "[:Latin:]";
+        } else {
+            target = "[:" + target + ":]";
+        }
+        UnicodeSet targetSet = new UnicodeSet(target);        
+        
+        Transliterator inverse = t.getInverse();
+        
+        //Transliterator hex = Transliterator.getInstance("Any-Hex");
+        
+                
+        // iterate through script
+        System.out.println("Transliterating " + sourceSet.toPattern(true) 
+            + " with " + Transliterator.getDisplayName(id));
+                
+        UnicodeSet leftOverSet = new UnicodeSet(targetSet);
+        UnicodeSet privateUse = new UnicodeSet("[:private use:]");
+            
+        Map map = new TreeMap();
+        
+        UnicodeSet targetSetPlusAnyways = new UnicodeSet(targetSet);
+        targetSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSet sourceSetPlusAnyways = new UnicodeSet(sourceSet);
+        sourceSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSetIterator usi = new UnicodeSetIterator(sourceSet);
+        
+        while (usi.next()) {
+            int j = usi.codepoint;
+            /*
+        int count = sourceSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = sourceSet.getRangeEnd(i);
+            for (int j = sourceSet.getRangeStart(i); j <= end; ++j) {
+            */
+               // String flag = "";
+                String ss = UTF16.valueOf(j);
+                String ts = t.transliterate(ss);
+                char group = 0;
+                if (!targetSetPlusAnyways.containsAll(ts)) {
+                    group |= 1;
+                }
+                if (UTF16.countCodePoint(ts) == 1) {
+                    leftOverSet.remove(UTF16.charAt(ts,0));
+                }
+                String rt = inverse.transliterate(ts);
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 2;
+                } else if (!ss.equals(rt)) {
+                    group |= 4;
+                }
+                
+                if (!privateUse.containsNone(ts) || !privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss, Normalizer.NFKD))
+                        + "\u0000" + ss, 
+                    "<td class='s'>" + ss + "<br><tt>" + hex(ss)
+                        + "</tt></td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                        + "</tt></td><td class='r'>" + rt + "<br><tt>" + hex(rt) + "</tt></td>" );
+                
+                // Check Duals
+                /*
+                int maxDual = 200;
+              dual:
+                for (int i2 = 0; i2 < count; ++i2) {
+                    int end2 = sourceSet.getRangeEnd(i2);
+                    for (int j2 = sourceSet.getRangeStart(i2); j2 <= end; ++j2) {
+                        String ss2 = UTF16.valueOf(j2);
+                        String ts2 = t.transliterate(ss2);
+                        String rt2 = inverse.transliterate(ts2);
+                        
+                        String ss12 = ss + ss2;
+                        String ts12 = t.transliterate(ss + ss12);
+                        String rt12 = inverse.transliterate(ts12);
+                        if (ts12.equals(ts + ts2) && rt12.equals(rt + rt2)) continue;   
+                        if (--maxDual < 0) break dual;
+                        
+                        // transliteration of whole differs from that of parts
+                        group = 0x100;
+                        map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss12, Normalizer.DECOMP_COMPAT, 0))
+                                + "\u0000" + ss12, 
+                            "<td class='s'>" + ss12 + "<br><tt>" + hex(ss12)
+                                + "</tt></td><td class='t'>" + ts12 + "<br><tt>" + hex(ts12)
+                                + "</tt></td><td class='r'>" + rt12 + "<br><tt>" + hex(rt12) + "</tt></td>" );
+                    }
+                }
+                */
+            //}
+        }
+        
+        
+        leftOverSet.remove(0x0100,0x02FF); // remove extended & IPA
+        
+        /*int count = leftOverSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = leftOverSet.getRangeEnd(i);
+            for (int j = leftOverSet.getRangeStart(i); j <= end; ++j) {
+            */
+            
+        usi.reset(leftOverSet);
+        while (usi.next()) {
+            int j = usi.codepoint;
+            
+                String ts = UTF16.valueOf(j);
+                // String decomp = Normalizer.normalize(ts, Normalizer.DECOMP_COMPAT, 0);
+                // if (!decomp.equals(ts)) continue;
+                
+                String rt = inverse.transliterate(ts);
+                // String flag = "";
+                char group = 0x80;
+                    
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 8;
+                }
+                if (!privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ts, Normalizer.NFKD)) + ts, 
+                    "<td class='s'>-</td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                    + "</tt></td><td class='r'>"
+                    + rt + "<br><tt>" + hex(rt) + "</tt></td>");
+            //}
+        }
+
+        // make file name and open
+        File f = new File("transliteration/chart_" + id.replace('/', '_') + ".html");
+        String filename = f.getCanonicalFile().toString();
+        PrintWriter out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        //out.print('\uFEFF'); // BOM
+        
+        System.out.println("Writing " + filename);
+        
+        try {
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<link rel='stylesheet' href='http://www.unicode.org/charts/uca/charts.css' type='text/css'>");
+            
+            out.println("<BODY>");
+            out.println("<h1>Transliteration Samples for '" + Transliterator.getDisplayName(id) + "'</h1>");
+            out.println("<p>This file illustrates the transliterations of " + Transliterator.getDisplayName(id) + ".");
+            out.println("The samples are mechanically generated, and only include single characters");
+            out.println("from the source set. Thus it will <i>not</i> contain examples where the transliteration");
+            out.println("depends on the context around the character. For a more detailed -- and interactive -- example, see the");
+            out.println("<a href='http://demo.icu-project.org/icu-bin/translit'>Transliteration Demo</a></p><hr>");
+            
+            // set up the headers
+            int columnCount = 3;
+            String headerBase = "<th>Source</th><th>Target</th><th>Return</th>";
+            String headers = headerBase;
+            for (int i = columnCount - 1; i > 0; --i) {
+                if (i != columnCount - 1) headers += "<th>&nbsp;</th>";
+                headers += headerBase;
+            }
+            
+            String tableHeader = "<p><table border='1'><tr>" + headers + "</tr>";
+            String tableFooter = "</table></p>";
+            out.println("<h2>Round Trip</h2>");
+            out.println(tableHeader);
+            
+            Iterator it = map.keySet().iterator();
+            char lastGroup = 0;
+            int count = 0;
+            int column = 0;
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                char group = key.charAt(0);
+                if (group != lastGroup || count++ > 50) {
+                    lastGroup = group;
+                    count = 0;
+                    if (column != 0) {
+                        out.println("</tr>");
+                        column = 0;
+                    }
+                    out.println(tableFooter);
+                    
+                    // String title = "";
+                    if ((group & 0x100) != 0) out.println("<hr><h2>Duals</h2>");
+                    else if ((group & 0x80) != 0) out.println("<hr><h2>Completeness</h2>");
+                    else out.println("<hr><h2>Round Trip</h2>");
+                    if ((group & 16) != 0) out.println("<h3>Errors: Contains Private Use Characters</h3>");
+                    if ((group & 8) != 0) out.println("<h3>Possible Errors: Return not in Source Set</h3>");
+                    if ((group & 4) != 0) out.println("<h3>One-Way Mapping: Return not equal to Source</h3>");
+                    if ((group & 2) != 0) out.println("<h3>Errors: Return not in Source Set</h3>");
+                    if ((group & 1) != 0) out.println("<h3>Errors: Target not in Target Set</h3>");
+                                        
+                    out.println(tableHeader);
+                    column = 0;
+                }
+                String value = (String) map.get(key);
+                if (column++ == 0) out.print("<tr>");
+                else out.print("<th>&nbsp;</th>");
+                out.println(value);
+                if (column == 3) {
+                    out.println("</tr>");
+                    column = 0;
+                }
+            }
+            if (column != 0) {
+                out.println("</tr>");
+                column = 0;
+            }
+            out.println(tableFooter + "</BODY></HTML>");
+            
+        } finally {
+            out.close();
+        }
+    }
+    
+    public static String hex(String s) {
+        int cp;
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (i != 0) results.append(' ');
+            results.append(Integer.toHexString(cp));
+        }
+        return results.toString().toUpperCase();
+    }
+    
+    static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+    
+    /*
+    // tests whether a string is in a set. Also checks for Common and Inherited
+    public static boolean isIn(String s, UnicodeSet set) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            cp = UTF16.charAt(s, i);
+            if (set.contains(cp)) continue;
+            if (okAnyway.contains(cp)) continue;
+            return false;
+        }
+        return true;
+    }
+    */
+    
+}
+  
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/translit/package.html b/src/com/ibm/icu/dev/test/translit/package.html
new file mode 100644
index 0000000..5fdff1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Transliterator tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/ArrayComparator.java b/src/com/ibm/icu/dev/test/util/ArrayComparator.java
new file mode 100644
index 0000000..bc500d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ArrayComparator.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+import java.util.Comparator;
+
+public class ArrayComparator implements Comparator {
+    public static final Comparator COMPARABLE = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            return ((Comparable)o1).compareTo(o2);
+        } 
+    };
+    private Comparator[] comparators;
+    private int[] reordering;
+    
+    public ArrayComparator (Comparator[] comparators, int[] reordering) {
+        this.comparators = comparators;
+        this.reordering = reordering;
+        if (this.reordering == null) {
+            this.reordering = new int[comparators.length];
+            for (int i = 0; i < this.reordering.length; ++i) {
+                this.reordering[i] = i;
+            }
+        } else {
+            if (this.reordering.length != this.comparators.length) {
+                throw new IllegalArgumentException("comparator and reordering lengths must match");
+            }
+        }
+    }
+    
+    public ArrayComparator (Comparator[] comparators) {
+        this(comparators,null);
+    }
+    
+    /* Lexigraphic compare. Returns the first difference
+     * @return zero if equal. Otherwise +/- (i+1) 
+     * where i is the index of the first comparator finding a difference
+     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+     */
+    public int compare(Object a0, Object a1) {
+        Object[] arg0 = (Object[]) a0;
+        Object[] arg1 = (Object[]) a1;
+        for (int j = 0; j < comparators.length; ++j) {
+            int i = reordering[j];
+            Comparator comp = comparators[i];
+            if (comp == null) continue;
+            int result = comp.compare(arg0[i], arg1[i]);
+            if (result == 0) continue;
+            if (result > 0) return i+1;
+            return -(i+1);
+        }
+        return 0;
+    }
+
+    static class CatchExceptionComparator implements Comparator {
+        private Comparator other;
+        
+        public CatchExceptionComparator(Comparator other) {
+            this.other = other;
+        }
+
+        public int compare(Object arg0, Object arg1) throws RuntimeException {
+            try {
+                return other.compare(arg0, arg1);
+            } catch (RuntimeException e) {
+                System.out.println("Arg0: " + arg0);
+                System.out.println("Arg1: " + arg1);
+                throw e;
+            }
+        }
+    }
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/BNF.java b/src/com/ibm/icu/dev/test/util/BNF.java
new file mode 100644
index 0000000..67ac906
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BNF.java
@@ -0,0 +1,333 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import com.ibm.icu.text.UnicodeSet;
+import java.util.Random;
+
+public class BNF {
+    private Map map = new HashMap();
+    private Set variables = new HashSet();
+    private Pick pick = null;
+    private Pick.Target target = null;
+    private Tokenizer t;
+    private Quoter quoter;
+    private Random random;
+    
+    public String next() {
+        return target.next();
+    }
+    
+    public String getInternal() {
+        return pick.getInternal(0, new HashSet());
+    }
+    
+    /*
+    + "weight = integer '%';"
+    + "range = '{' integer (',' integer?)? '}' weight*;"
+    + "quote = '@';"
+    + "star = '*' weight*;"
+    + "plus = '+' weight*;"
+    + "maybe = '?' weight?;"
+    + "quantifier = range | star | maybe | plus;"
+    + "core = string | unicodeSet | '(' alternation ')';"
+    + "sequence = (core quantifier*)+;"
+    + "alternation = sequence (weight? ('|' sequence weight?)+)?;"
+    + "rule = string '=' alternation;"; 
+    
+    
+    *      Match 0 or more times
+    +      Match 1 or more times
+    ?      Match 1 or 0 times
+    {n}    Match exactly n times
+    {n,}   Match at least n times
+    {n,m}  Match at least n but not more than m times  
+ 
+ 
+
+    */
+    
+    public BNF(Random random, Quoter quoter) {
+        this.random = random;
+        this.quoter = quoter;
+        t = new Tokenizer();
+    }
+    
+    public BNF addRules(String rules) {
+        t.setSource(rules);        
+        while (addRule()) {
+        }
+        return this; // for chaining
+    }
+    
+    public BNF complete() {
+        // check that the rules match the variables, except for $root in rules
+        Set ruleSet = map.keySet();
+        // add also 
+        variables.add("$root");
+        variables.addAll(t.getLookedUpItems());
+        if (!ruleSet.equals(variables)) {
+            String msg = showDiff(variables, ruleSet);
+            if (msg.length() != 0) msg = "Error: Missing definitions for: " + msg;
+            String temp = showDiff(ruleSet, variables);
+            if (temp.length() != 0) temp = "Warning: Defined but not used: " + temp;
+            if (msg.length() == 0) msg = temp;
+            else if (temp.length() != 0) {
+                msg = msg + "; " + temp;           
+            }
+            error(msg);           
+        } 
+        
+        if (!ruleSet.equals(variables)) {
+            String msg = showDiff(variables, ruleSet);
+            if (msg.length() != 0) msg = "Missing definitions for: " + msg;
+            String temp = showDiff(ruleSet, variables);
+            if (temp.length() != 0) temp = "Defined but not used: " + temp;
+            if (msg.length() == 0) msg = temp;
+            else if (temp.length() != 0) {
+                msg = msg + "; " + temp;           
+            }
+            error(msg);           
+        } 
+        
+        // replace variables by definitions
+        Iterator it = ruleSet.iterator();
+        while (it.hasNext()) {
+            String key = (String) it.next();
+            Pick expression = (Pick) map.get(key);
+            Iterator it2 = ruleSet.iterator();  
+            if (false && key.equals("$crlf")) {
+                System.out.println("debug") ;
+            }
+            while (it2.hasNext()) {
+                Object key2 = it2.next();
+                if (key.equals(key2)) continue;
+                Pick expression2 = (Pick) map.get(key2);
+                expression2.replace(key, expression);
+            }
+        }
+        pick = (Pick) map.get("$root");
+        target = Pick.Target.make(pick, random, quoter);
+        // TODO remove temp collections
+        return this;
+    }
+    
+    String showDiff(Set a, Set b) {
+        Set temp = new HashSet();
+        temp.addAll(a);
+        temp.removeAll(b);
+        if (temp.size() == 0) return "";
+        StringBuffer buffer = new StringBuffer();
+        Iterator it = temp.iterator();
+        while (it.hasNext()) {
+            if (buffer.length() != 0) buffer.append(", ");
+            buffer.append(it.next().toString());
+        }
+        return buffer.toString();
+    }
+    
+    void error(String msg) {
+        throw new IllegalArgumentException(msg
+        + "\r\n" + t.toString());
+    }
+ 
+    private boolean addRule() {
+        int type = t.next();
+        if (type == Tokenizer.DONE) return false;
+        if (type != Tokenizer.STRING) error("missing weight");
+        String s = t.getString();
+        if (s.length() == 0 || s.charAt(0) != '$') error("missing $ in variable");
+        if (t.next() != '=') error("missing =");
+        int startBody = t.index;
+        Pick rule = getAlternation();
+        if (rule == null) error("missing expression");
+        t.addSymbol(s, t.getSource(), startBody, t.index);
+        if (t.next() != ';') error("missing ;");       
+        return addPick(s, rule);
+    }
+
+    protected boolean addPick(String s, Pick rule) {
+        Object temp = map.get(s);
+        if (temp != null) error("duplicate variable");
+        if (rule.name == null) rule.name(s);
+        map.put(s, rule);
+        return true;
+    }
+    
+    public BNF addSet(String variable, UnicodeSet set) {
+        if (set != null) {
+            String body = set.toString();
+            t.addSymbol(variable, body, 0, body.length());        
+            addPick(variable, Pick.codePoint(set));
+        }
+        return this;
+    }
+    
+    int maxRepeat = 99;
+    
+    Pick qualify(Pick item) {
+        int[] weights;
+        int type = t.next();
+        switch(type) {
+            case '@': 
+                return new Pick.Quote(item);
+            case '~': 
+                return new Pick.Morph(item);
+            case '?': 
+                int weight = getWeight();
+                if (weight == NO_WEIGHT) weight = 50;
+                weights = new int[] {100-weight, weight};
+                return Pick.repeat(0, 1, weights, item);
+            case '*': 
+                weights = getWeights();
+                return Pick.repeat(1, maxRepeat, weights, item);
+            case '+': 
+                weights = getWeights();
+                return Pick.repeat(1, maxRepeat, weights, item);
+            case '{':
+                if (t.next() != Tokenizer.NUMBER) error("missing number");
+                int start = (int) t.getNumber();
+                int end = start;
+                type = t.next();
+                if (type == ',') {
+                    end = maxRepeat;
+                    type = t.next();
+                    if (type == Tokenizer.NUMBER) {
+                        end = (int)t.getNumber();
+                        type = t.next();
+                    }
+                }
+                if (type != '}') error("missing }");
+                weights = getWeights();
+                return Pick.repeat(start, end, weights, item);
+        }
+        t.backup();
+        return item;
+    }
+    
+    Pick getCore() {
+        int token = t.next();
+        if (token == Tokenizer.STRING) {
+            String s = t.getString();
+            if (s.charAt(0) == '$') variables.add(s);
+            return Pick.string(s);
+        }
+        if (token == Tokenizer.UNICODESET) {
+            return Pick.codePoint(t.getUnicodeSet());            
+        }
+        if (token != '(') {
+            t.backup();
+            return null;
+        }
+        Pick temp = getAlternation();
+        token = t.next();
+        if (token != ')') error("missing )");    
+        return temp;    
+    }
+    
+    Pick getSequence() {
+        Pick.Sequence result = null;
+        Pick last = null;
+        while (true) {
+            Pick item = getCore();
+            if (item == null) {
+                if (result != null) return result;
+                if (last != null) return last;
+                error("missing item");
+            }
+            // qualify it as many times as possible
+            Pick oldItem;
+            do {
+                oldItem = item;
+                item = qualify(item);
+            } while (item != oldItem);
+            // add it in
+            if (last == null) {
+                last = item;
+            } else {
+                if (result == null) result = Pick.makeSequence().and2(last);            
+                result = result.and2(item);
+            }
+        }
+    }
+    
+    // for simplicity, we just use recursive descent
+    Pick getAlternation() {
+        Pick.Alternation result = null;
+        Pick last = null;
+        int lastWeight = NO_WEIGHT;
+        while (true) {
+            Pick temp = getSequence();
+            if (temp == null) error("empty alternation");
+            int weight = getWeight();
+            if (weight == NO_WEIGHT) weight = 1;
+            if (last == null) {
+                last = temp;
+                lastWeight = weight;
+            } else {
+                if (result == null) result = Pick.makeAlternation().or2(lastWeight, last);
+                result = result.or2(weight, temp);   
+            }
+            int token = t.next();
+            if (token != '|') {
+                t.backup();
+                if (result != null) return result;
+                if (last != null) return last;
+            }
+        }        
+    }
+    
+    private static final int NO_WEIGHT = Integer.MIN_VALUE;
+    
+    int getWeight() {       
+        int weight;
+        int token = t.next();
+        if (token != Tokenizer.NUMBER) {
+            t.backup();
+            return NO_WEIGHT;
+        }
+        weight = (int)t.getNumber();
+        token = t.next();
+        if (token != '%') error("missing %");
+        return weight;
+    }
+    
+    int[] getWeights() {
+        ArrayList list = new ArrayList();
+        while (true) {
+            int weight = getWeight();
+            if (weight == NO_WEIGHT) break;
+            list.add(new Integer(weight));
+        }
+        if (list.size() == 0) return null;
+        int[] result = new int[list.size()];
+        for (int i = 0; i < list.size(); ++i) {
+            result[i] = ((Integer)list.get(i)).intValue();
+        }
+        return result;
+    }
+
+    public int getMaxRepeat() {
+      return maxRepeat;
+    }
+
+    public BNF setMaxRepeat(int maxRepeat) {
+      this.maxRepeat = maxRepeat;
+      return this;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/BagFormatter.java b/src/com/ibm/icu/dev/test/util/BagFormatter.java
new file mode 100644
index 0000000..9296e99
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BagFormatter.java
@@ -0,0 +1,1152 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.MessageFormat;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class BagFormatter {
+    static final boolean DEBUG = false;
+    public static final boolean SHOW_FILES;
+    static {
+    boolean showFiles = false;
+    try {
+        showFiles = System.getProperty("SHOW_FILES") != null;
+    }
+    catch (SecurityException e) {
+    }
+    SHOW_FILES = showFiles;
+    }
+
+    public static final PrintWriter CONSOLE = new PrintWriter(System.out,true);
+
+    private static PrintWriter log = CONSOLE;
+
+    private boolean abbreviated = false;
+    private String separator = ",";
+    private String prefix = "[";
+    private String suffix = "]";
+    private UnicodeProperty.Factory source;
+    private UnicodeLabel nameSource;
+    private UnicodeLabel labelSource;
+    private UnicodeLabel rangeBreakSource;
+    private UnicodeLabel valueSource;
+    private String propName = "";
+    private boolean showCount = true;
+    //private boolean suppressReserved = true;
+    private boolean hexValue = false;
+    private static final String NULL_VALUE = "_NULL_VALUE_";
+    private int fullTotal = -1;
+    private boolean showTotal = true;
+    private String lineSeparator = "\r\n";
+    private Tabber tabber = new Tabber.MonoTabber();
+
+    /**
+     * Compare two UnicodeSets, and show the differences
+     * @param name1 name of first set to be compared
+     * @param set1 first set
+     * @param name2 name of second set to be compared
+     * @param set2 second set
+     * @return formatted string
+     */
+    public String showSetDifferences(
+        String name1,
+        UnicodeSet set1,
+        String name2,
+        UnicodeSet set2) {
+
+        StringWriter result = new StringWriter();
+        showSetDifferences(new PrintWriter(result),name1,set1,name2,set2);
+        result.flush();
+        return result.getBuffer().toString();
+    }
+
+    public String showSetDifferences(
+        String name1,
+        Collection set1,
+        String name2,
+        Collection set2) {
+
+        StringWriter result = new StringWriter();
+        showSetDifferences(new PrintWriter(result), name1, set1, name2, set2);
+        result.flush();
+        return result.getBuffer().toString();
+    }
+
+    public void showSetDifferences(
+            PrintWriter pw,
+            String name1,
+            UnicodeSet set1,
+            String name2,
+            UnicodeSet set2) {
+        showSetDifferences(pw, name1, set1, name2, set2, -1);
+    }
+    /**
+     * Compare two UnicodeSets, and show the differences
+     * @param name1 name of first set to be compared
+     * @param set1 first set
+     * @param name2 name of second set to be compared
+     * @param set2 second set
+     */
+    public void showSetDifferences(
+        PrintWriter pw,
+        String name1,
+        UnicodeSet set1,
+        String name2,
+        UnicodeSet set2,
+        int flags) 
+    {
+        if (pw == null) pw = CONSOLE;
+        String[] names = { name1, name2 };
+
+        UnicodeSet temp;
+        
+        if ((flags&1) != 0) {
+            temp = new UnicodeSet(set1).removeAll(set2);
+            pw.print(lineSeparator);
+            pw.print(inOut.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+
+        if ((flags&2) != 0) {
+            temp = new UnicodeSet(set2).removeAll(set1);
+            pw.print(lineSeparator);
+            pw.print(outIn.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+
+        if ((flags&4) != 0) {
+            temp = new UnicodeSet(set2).retainAll(set1);
+            pw.print(lineSeparator);
+            pw.print(inIn.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+        pw.flush();
+    }
+
+    public void showSetDifferences(
+        PrintWriter pw,
+        String name1,
+        Collection set1,
+        String name2,
+        Collection set2) {
+
+        if (pw == null) pw = CONSOLE;
+        String[] names = { name1, name2 };
+        // damn'd collection doesn't have a clone, so
+        // we go with Set, even though that
+        // may not preserve order and duplicates
+        Collection temp = new HashSet(set1);
+        temp.removeAll(set2);
+        pw.println();
+        pw.println(inOut.format(names));
+        showSetNames(pw, temp);
+
+        temp.clear();
+        temp.addAll(set2);
+        temp.removeAll(set1);
+        pw.println();
+        pw.println(outIn.format(names));
+        showSetNames(pw, temp);
+
+        temp.clear();
+        temp.addAll(set1);
+        temp.retainAll(set2);
+        pw.println();
+        pw.println(inIn.format(names));
+        showSetNames(pw, temp);
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param c source collection
+     * @return a String representation of the list
+     * @internal
+     */
+    public String showSetNames(Object c) {
+        StringWriter buffer = new StringWriter();
+        PrintWriter output = new PrintWriter(buffer);
+        showSetNames(output,c);
+        return buffer.toString();
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param output destination to which to write names
+     * @param c source collection
+     * @internal
+     */
+    public void showSetNames(PrintWriter output, Object c) {
+        mainVisitor.doAt(c, output);
+        output.flush();
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param filename destination to which to write names
+     * @param c source collection
+     * @internal
+     */
+    public void showSetNames(String filename, Object c) throws IOException {
+        PrintWriter pw = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename),"utf-8"));
+        showSetNames(log,c);
+        pw.close();
+    }
+
+    public String getAbbreviatedName(
+        String src,
+        String pattern,
+        String substitute) {
+
+        int matchEnd = NameIterator.findMatchingEnd(src, pattern);
+        int sdiv = src.length() - matchEnd;
+        int pdiv = pattern.length() - matchEnd;
+        StringBuffer result = new StringBuffer();
+        addMatching(
+            src.substring(0, sdiv),
+            pattern.substring(0, pdiv),
+            substitute,
+            result);
+        addMatching(
+            src.substring(sdiv),
+            pattern.substring(pdiv),
+            substitute,
+            result);
+        return result.toString();
+    }
+
+    abstract public static class Relation {
+        abstract public String getRelation(String a, String b);
+    }
+
+    static class NullRelation extends Relation {
+        public String getRelation(String a, String b) { return ""; }
+    }
+
+    private Relation r = new NullRelation();
+
+    public BagFormatter setRelation(Relation r) {
+        this.r = r;
+        return this; // for chaining
+    }
+
+    public Relation getRelation() {
+        return r;
+    }
+
+    /*
+     r.getRelati on(last, s) + quote(s) + "\t#" + UnicodeSetFormatter.getResolvedName(s)
+    */
+    /*
+    static final UnicodeSet NO_NAME =
+        new UnicodeSet("[\\u0080\\u0081\\u0084\\u0099\\p{Cn}\\p{Co}]");
+    static final UnicodeSet HAS_NAME = new UnicodeSet(NO_NAME).complement();
+    static final UnicodeSet NAME_CHARACTERS =
+        new UnicodeSet("[A-Za-z0-9\\<\\>\\-\\ ]");
+
+    public UnicodeSet getSetForName(String namePattern) {
+        UnicodeSet result = new UnicodeSet();
+        Matcher m = Pattern.compile(namePattern).matcher("");
+        // check for no-name items, and add in bulk
+        m.reset("<no name>");
+        if (m.matches()) {
+            result.addAll(NO_NAME);
+        }
+        // check all others
+        UnicodeSetIterator usi = new UnicodeSetIterator(HAS_NAME);
+        while (usi.next()) {
+            String name = getName(usi.codepoint);
+            if (name == null)
+                continue;
+            m.reset(name);
+            if (m.matches()) {
+                result.add(usi.codepoint);
+            }
+        }
+        // Note: if Regex had some API so that if we could tell that
+        // an initial substring couldn't match, e.g. "CJK IDEOGRAPH-"
+        // then we could optimize by skipping whole swathes of characters
+        return result;
+    }
+    */
+
+    public BagFormatter setMergeRanges(boolean in) {
+        mergeRanges = in;
+        return this;
+    }
+    public BagFormatter setShowSetAlso(boolean b) {
+        showSetAlso = b;
+        return this;
+    }
+
+    public String getName(int codePoint) {
+        return getName("", codePoint, codePoint);
+    }
+
+    public String getName(String sep, int start, int end) {
+        if (getNameSource() == null || getNameSource() == UnicodeLabel.NULL) return "";
+        String result = getName(start, false);
+        if (start == end) return sep + result;
+        String endString = getName(end, false);
+        if (result.length() == 0 && endString.length() == 0) return sep;
+        if (abbreviated) endString = getAbbreviatedName(endString,result,"~");
+        return sep + result + ".." + endString;
+    }
+
+    public String getName(String s) {
+        return getName(s, false);
+    }
+
+    public static class NameLabel extends UnicodeLabel {
+        UnicodeProperty nameProp;
+        UnicodeSet control;
+        UnicodeSet private_use;
+        UnicodeSet noncharacter;
+        UnicodeSet surrogate;
+
+        public NameLabel(UnicodeProperty.Factory source) {
+            nameProp = source.getProperty("Name");
+            control = source.getSet("gc=Cc");
+            private_use = source.getSet("gc=Co");
+            surrogate = source.getSet("gc=Cs");
+            noncharacter = source.getSet("noncharactercodepoint=yes");
+        }
+
+        public String getValue(int codePoint, boolean isShort) {
+            String hcp = !isShort
+                ? "U+" + Utility.hex(codePoint, 4) + " "
+                : "";
+            String result = nameProp.getValue(codePoint);
+            if (result != null)
+                return hcp + result;
+            if (control.contains(codePoint)) {
+                return "<control-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (private_use.contains(codePoint)) {
+                return "<private-use-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (surrogate.contains(codePoint)) {
+                return "<surrogate-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (noncharacter.contains(codePoint)) {
+                return "<noncharacter-" + Utility.hex(codePoint, 4) + ">";
+            }
+            //if (suppressReserved) return "";
+            return hcp + "<reserved-" + Utility.hex(codePoint, 4) + ">";
+        }
+
+    }
+
+    // refactored
+    public String getName(int codePoint, boolean withCodePoint) {
+        String result = getNameSource().getValue(codePoint, !withCodePoint);
+        return fixName == null ? result : fixName.transliterate(result);
+    }
+
+    public String getName(String s, boolean withCodePoint) {
+           String result = getNameSource().getValue(s, separator, !withCodePoint);
+        return fixName == null ? result : fixName.transliterate(result);
+     }
+
+    public String hex(String s) {
+        return hex(s,separator);
+    }
+
+    public String hex(String s, String sep) {
+        return UnicodeLabel.HEX.getValue(s, sep, true);
+    }
+
+    public String hex(int start, int end) {
+        String s = Utility.hex(start,4);
+        if (start == end) return s;
+        return s + ".." + Utility.hex(end,4);
+    }
+
+    public BagFormatter setUnicodePropertyFactory(UnicodeProperty.Factory source) {
+        this.source = source;
+        return this;
+    }
+
+    public UnicodeProperty.Factory getUnicodePropertyFactory() {
+        if (source == null) source = ICUPropertyFactory.make();
+        return source;
+    }
+
+    public BagFormatter () {
+    }
+
+    public BagFormatter (UnicodeProperty.Factory source) {
+        setUnicodePropertyFactory(source);
+    }
+
+    public String join(Object o) {
+        return labelVisitor.join(o);
+    }
+
+    // ===== PRIVATES =====
+
+    private Join labelVisitor = new Join();
+
+    private boolean mergeRanges = true;
+    private Transliterator showLiteral = null;
+    private Transliterator fixName = null;
+    private boolean showSetAlso = false;
+
+    private RangeFinder rf = new RangeFinder();
+
+    private MessageFormat inOut = new MessageFormat("In {0}, but not in {1}:");
+    private MessageFormat outIn = new MessageFormat("Not in {0}, but in {1}:");
+    private MessageFormat inIn = new MessageFormat("In both {0}, and in {1}:");
+
+    private MyVisitor mainVisitor = new MyVisitor();
+
+    /*
+    private String getLabels(int start, int end) {
+        Set names = new TreeSet();
+        for (int cp = start; cp <= end; ++cp) {
+            names.add(getLabel(cp));
+        }
+        return labelVisitor.join(names);
+    }
+    */
+
+    private void addMatching(
+        String src,
+        String pattern,
+        String substitute,
+        StringBuffer result) {
+        NameIterator n1 = new NameIterator(src);
+        NameIterator n2 = new NameIterator(pattern);
+        boolean first = true;
+        while (true) {
+            String s1 = n1.next();
+            if (s1 == null)
+                break;
+            String s2 = n2.next();
+            if (!first)
+                result.append(" ");
+            first = false;
+            if (s1.equals(s2))
+                result.append(substitute);
+            else
+                result.append(s1);
+        }
+    }
+
+    private static NumberFormat nf =
+        NumberFormat.getIntegerInstance(Locale.ENGLISH);
+    static {
+        nf.setGroupingUsed(false);
+    }
+
+    private class MyVisitor extends Visitor {
+        private PrintWriter output;
+        String commentSeparator;
+        int counter;
+        int valueSize;
+        int labelSize;
+        boolean isHtml;
+        boolean inTable = false;
+        
+        public void toOutput(String s) {
+          if (isHtml) {
+            if (inTable) {
+              output.print("</table>");
+              inTable = false;
+            }
+            output.print("<p>");
+          }
+          output.print(s);
+          if (isHtml)
+            output.println("</p>");
+          else
+            output.print(lineSeparator);
+        }
+        
+        public void toTable(String s) {
+          if (isHtml && !inTable) {
+            output.print("<table>");
+            inTable = true;
+          }
+          output.print(tabber.process(s) +  lineSeparator);
+        }
+
+        public void doAt(Object c, PrintWriter out) {
+            output = out;
+            isHtml = tabber instanceof Tabber.HTMLTabber;
+            counter = 0;
+            
+            tabber.clear();
+            // old:
+            // 0009..000D    ; White_Space # Cc   [5] <control-0009>..<control-000D>
+            // new
+            // 0009..000D    ; White_Space #Cc  [5] <control>..<control>
+            tabber.add(mergeRanges ? 14 : 6,Tabber.LEFT);
+
+            if (propName.length() > 0) {
+                tabber.add(propName.length() + 2,Tabber.LEFT);
+            }
+
+            valueSize = getValueSource().getMaxWidth(shortValue);
+            if (DEBUG) System.out.println("ValueSize: " + valueSize);
+            if (valueSize > 0) {
+                tabber.add(valueSize + 2,Tabber.LEFT); // value
+            }
+
+            tabber.add(3,Tabber.LEFT); // comment character
+
+            labelSize = getLabelSource(true).getMaxWidth(shortLabel);
+            if (labelSize > 0) {
+                tabber.add(labelSize + 1,Tabber.LEFT); // value
+            }
+
+            if (mergeRanges && showCount) {
+                tabber.add(5,Tabber.RIGHT);
+            }
+
+            if (showLiteral != null) {
+                tabber.add(4,Tabber.LEFT);
+            }
+            //myTabber.add(7,Tabber.LEFT);
+
+            commentSeparator = (showCount || showLiteral != null
+              || getLabelSource(true) != UnicodeLabel.NULL
+              || getNameSource() != UnicodeLabel.NULL)
+            ? "\t #" : "";
+
+            if (DEBUG) System.out.println("Tabber: " + tabber.toString());
+            if (DEBUG) System.out.println("Tabber: " + tabber.process(
+                    "200C..200D\t; White_Space\t #\tCf\t [2]\t ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER"));
+            doAt(c);
+        }
+
+        public String format(Object o) {
+            StringWriter sw = new StringWriter();
+            PrintWriter pw = new PrintWriter(sw);
+            doAt(o);
+            pw.flush();
+            String result = sw.getBuffer().toString();
+            pw.close();
+            return result;
+        }
+
+        protected void doBefore(Object container, Object o) {
+            if (showSetAlso && container instanceof UnicodeSet) {
+              toOutput("#" + container);
+            }
+        }
+
+        protected void doBetween(Object container, Object lastItem, Object nextItem) {
+        }
+
+        protected void doAfter(Object container, Object o) {
+            if (fullTotal != -1 && fullTotal != counter) {
+                if (showTotal) {
+                    toOutput("");
+                    toOutput("# The above property value applies to " + nf.format(fullTotal-counter) + " code points not listed here.");
+                    toOutput("# Total code points: " + nf.format(fullTotal));
+                }
+                fullTotal = -1;
+            } else if (showTotal) {
+                toOutput("");
+                toOutput("# Total code points: " + nf.format(counter));
+            }
+        }
+
+        protected void doSimpleAt(Object o) {
+            if (o instanceof Map.Entry) {
+                Map.Entry oo = (Map.Entry)o;
+                Object key = oo.getKey();
+                Object value = oo.getValue();
+                doBefore(o, key);
+                doAt(key);
+                output.println("\u2192");
+                doAt(value);
+                doAfter(o, value);
+                counter++;
+            } else if (o instanceof Visitor.CodePointRange) {
+                doAt((Visitor.CodePointRange) o);
+            } else {
+                String thing = o.toString();
+                String value = getValueSource() == UnicodeLabel.NULL ? "" : getValueSource().getValue(thing, ",", true);
+                if (getValueSource() != UnicodeLabel.NULL) value = "\t; " + value;
+                String label = getLabelSource(true) == UnicodeLabel.NULL ? "" : getLabelSource(true).getValue(thing, ",", true);
+                if (label.length() != 0) label = " " + label;
+                toTable(
+                    hex(thing)
+                    + value
+                    + commentSeparator
+                    + label
+                    + insertLiteral(thing)
+                    + "\t"
+                    + getName(thing));
+                counter++;
+            }
+        }
+
+        protected void doAt(Visitor.CodePointRange usi) {
+            if (!mergeRanges) {
+                for (int cp = usi.codepoint; cp <= usi.codepointEnd; ++cp) {
+                    showLine(cp, cp);
+                }
+            } else {
+                rf.reset(usi.codepoint, usi.codepointEnd + 1);
+                while (rf.next()) {
+                    showLine(rf.start, rf.limit - 1);
+                }
+            }
+        }
+
+        private void showLine(int start, int end) {
+            String label = getLabelSource(true).getValue(start, shortLabel);
+            String value = getValue(start, shortValue);
+            if (value == NULL_VALUE) return;
+
+            counter += end - start + 1;
+            String pn = propName;
+            if (pn.length() != 0) {
+                pn = "\t; " + pn;
+            }
+            if (valueSize > 0) {
+                value = "\t; " + value;
+            } else if (value.length() > 0) {
+                throw new IllegalArgumentException("maxwidth bogus " + value + "," + getValueSource().getMaxWidth(shortValue));
+            }
+            if (labelSize > 0) {
+                label = "\t" + label;
+            } else if (label.length() > 0) {
+                throw new IllegalArgumentException("maxwidth bogus " + label + ", " + getLabelSource(true).getMaxWidth(shortLabel));
+            }
+
+            String count = "";
+            if (mergeRanges && showCount) {
+                if (end == start) count = "\t";
+                else count = "\t ["+ nf.format(end - start + 1)+ "]";
+           }
+
+            toTable(
+                hex(start, end)
+                + pn
+                + value
+                + commentSeparator
+                + label
+                + count
+                + insertLiteral(start, end)
+                + getName("\t ", start, end));
+        }
+
+        private String insertLiteral(String thing) {
+            return (showLiteral == null ? ""
+                :  " \t(" + showLiteral.transliterate(thing) + ") ");
+        }
+
+        private String insertLiteral(int start, int end) {
+            return (showLiteral == null ? "" :
+                " \t(" + showLiteral.transliterate(UTF16.valueOf(start))
+                        + ((start != end)
+                            ? (".." + showLiteral.transliterate(UTF16.valueOf(end)))
+                            : "")
+                + ") ");
+        }
+        /*
+        private String insertLiteral(int cp) {
+            return (showLiteral == null ? ""
+                :  " \t(" + showLiteral.transliterate(UTF16.valueOf(cp)) + ") ");
+        }
+        */
+    }
+
+    /**
+     * Iterate through a string, breaking at words.
+     * @author Davis
+     */
+    private static class NameIterator {
+        String source;
+        int position;
+        int start;
+        int limit;
+
+        NameIterator(String source) {
+            this.source = source;
+            this.start = 0;
+            this.limit = source.length();
+        }
+        /**
+         * Find next word, including trailing spaces
+         * @return the next word
+         */
+        String next() {
+            if (position >= limit)
+                return null;
+            int pos = source.indexOf(' ', position);
+            if (pos < 0 || pos >= limit)
+                pos = limit;
+            String result = source.substring(position, pos);
+            position = pos + 1;
+            return result;
+        }
+
+        static int findMatchingEnd(String s1, String s2) {
+            int i = s1.length();
+            int j = s2.length();
+            try {
+                while (true) {
+                    --i; // decrement both before calling function!
+                    --j;
+                    if (s1.charAt(i) != s2.charAt(j))
+                        break;
+                }
+            } catch (Exception e) {} // run off start
+
+            ++i; // counteract increment
+            i = s1.indexOf(' ', i); // move forward to space
+            if (i < 0)
+                return 0;
+            return s1.length() - i;
+        }
+    }
+
+    private class RangeFinder {
+        int start, limit;
+        private int veryLimit;
+        //String label, value;
+        void reset(int rangeStart, int rangeLimit) {
+            limit = rangeStart;
+            veryLimit = rangeLimit;
+        }
+        boolean next() {
+            if (limit >= veryLimit)
+                return false;
+            start = limit; // set to end of last
+            String label = getLabelSource(false).getValue(limit, true);
+            String value = getValue(limit, true);
+            String breaker = getRangeBreakSource().getValue(limit,true);
+            if (DEBUG && limit < 0x7F) System.out.println("Label: " + label + ", Value: " + value + ", Break: " + breaker);
+            limit++;
+            for (; limit < veryLimit; limit++) {
+                String s = getLabelSource(false).getValue(limit, true);
+                String v = getValue(limit, true);
+                String b = getRangeBreakSource().getValue(limit, true);
+                if (DEBUG && limit < 0x7F) System.out.println("*Label: " + label + ", Value: " + value + ", Break: " + breaker);
+                if (!equalTo(s, label) || !equalTo(v, value) || !equalTo(b, breaker)) break;
+            }
+            // at this point, limit is the first item that has a different label than source
+            // OR, we got to the end, and limit == veryLimit
+            return true;
+        }
+    }
+
+    boolean equalTo(Object a, Object b) {
+        if (a == b) return true;
+        if (a == null) return false;
+        return a.equals(b);
+    }
+
+    boolean shortLabel = true;
+    boolean shortValue = true;
+
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public String getSuffix() {
+        return suffix;
+    }
+
+    public BagFormatter setPrefix(String string) {
+        prefix = string;
+        return this;
+    }
+
+    public BagFormatter setSuffix(String string) {
+        suffix = string;
+        return this;
+    }
+
+    public boolean isAbbreviated() {
+        return abbreviated;
+    }
+
+    public BagFormatter setAbbreviated(boolean b) {
+        abbreviated = b;
+        return this;
+    }
+
+    public UnicodeLabel getLabelSource(boolean visible) {
+        if (labelSource == null) {
+            Map labelMap = new HashMap();
+            //labelMap.put("Lo","L&");
+            labelMap.put("Lu","L&");
+            labelMap.put("Lt","L&");
+            labelMap.put("Ll","L&");
+            labelSource = new UnicodeProperty.FilteredProperty(
+                getUnicodePropertyFactory().getProperty("General_Category"),
+                new UnicodeProperty.MapFilter(labelMap)
+            ).setAllowValueAliasCollisions(true);
+        }
+        return labelSource;
+    }
+
+    /**
+     * @deprecated
+     */
+    public static void addAll(UnicodeSet source, Collection target) {
+        source.addAllTo(target);
+    }
+
+    // UTILITIES
+
+    public static final Transliterator hex = Transliterator.getInstance(
+        "[^\\u0009\\u0020-\\u007E\\u00A0-\\u00FF] hex");
+
+    public static BufferedReader openUTF8Reader(String dir, String filename) throws IOException {
+        return openReader(dir,filename,"UTF-8");
+    }
+
+    public static BufferedReader openReader(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        if (SHOW_FILES && log != null) {
+            log.println("Opening File: "
+                + file.getCanonicalPath());
+        }
+        return new BufferedReader(
+            new InputStreamReader(
+                new FileInputStream(file),
+                encoding),
+            4*1024);
+    }
+
+    public static PrintWriter openUTF8Writer(String dir, String filename) throws IOException {
+        return openWriter(dir,filename,"UTF-8");
+    }
+
+    public static PrintWriter openWriter(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        if (SHOW_FILES && log != null) {
+            log.println("Creating File: "
+                + file.getCanonicalPath());
+        }
+        String parentName = file.getParent();
+        if (parentName != null) {
+            File parent = new File(parentName);
+            parent.mkdirs();
+        }
+        return new PrintWriter(
+            new BufferedWriter(
+                new OutputStreamWriter(
+                    new FileOutputStream(file),
+                    encoding),
+                4*1024));
+    }
+    public static PrintWriter getLog() {
+        return log;
+    }
+    public BagFormatter setLog(PrintWriter writer) {
+        log = writer;
+        return this;
+    }
+    public String getSeparator() {
+        return separator;
+    }
+    public BagFormatter setSeparator(String string) {
+        separator = string;
+        return this;
+    }
+    public Transliterator getShowLiteral() {
+        return showLiteral;
+    }
+    public BagFormatter setShowLiteral(Transliterator transliterator) {
+        showLiteral = transliterator;
+        return this;
+    }
+
+    // ===== CONVENIENCES =====
+    private class Join extends Visitor {
+        StringBuffer output = new StringBuffer();
+        int depth = 0;
+        String join (Object o) {
+            output.setLength(0);
+            doAt(o);
+            return output.toString();
+        }
+        protected void doBefore(Object container, Object item) {
+            ++depth;
+            output.append(prefix);
+        }
+        protected void doAfter(Object container, Object item) {
+            output.append(suffix);
+            --depth;
+        }
+        protected void doBetween(Object container, Object lastItem, Object nextItem) {
+            output.append(separator);
+        }
+        protected void doSimpleAt(Object o) {
+            if (o != null) output.append(o.toString());
+        }
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setLabelSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        labelSource = label;
+        return this;
+    }
+
+    /**
+     * @return the NameLable representing the source
+     */
+    public UnicodeLabel getNameSource() {
+        if (nameSource == null) {
+            nameSource = new NameLabel(getUnicodePropertyFactory());
+        }
+        return nameSource;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setNameSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        nameSource = label;
+        return this;
+    }
+
+    /**
+     * @return the UnicodeLabel representing the value
+     */
+    public UnicodeLabel getValueSource() {
+        if (valueSource == null) valueSource = UnicodeLabel.NULL;
+        return valueSource;
+    }
+
+    private String getValue(int cp, boolean shortVal) {
+        String result = getValueSource().getValue(cp, shortVal);
+        if (result == null) return NULL_VALUE;
+        if (hexValue) result = hex(result, " ");
+        return result;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setValueSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        valueSource = label;
+        return this;
+    }
+
+    public BagFormatter setValueSource(String label) {
+        return setValueSource(new UnicodeLabel.Constant(label));
+    }
+
+    /**
+     * @return true if showCount is true
+     */
+    public boolean isShowCount() {
+        return showCount;
+    }
+
+    /**
+     * @param b true to show the count
+     * @return this (for chaining)
+     */
+    public BagFormatter setShowCount(boolean b) {
+        showCount = b;
+        return this;
+    }
+
+    /**
+     * @return the property name
+     */
+    public String getPropName() {
+        return propName;
+    }
+
+    /**
+     * @param string
+     * @return this (for chaining)
+     */
+    public BagFormatter setPropName(String string) {
+        if (string == null) string = "";
+        propName = string;
+        return this;
+    }
+
+    /**
+     * @return true if this is a hexValue
+     */
+    public boolean isHexValue() {
+        return hexValue;
+    }
+
+    /**
+     * @param b
+     * @return this (for chaining)
+     */
+    public BagFormatter setHexValue(boolean b) {
+        hexValue = b;
+        return this;
+    }
+
+    /**
+     * @return the full total
+     */
+    public int getFullTotal() {
+        return fullTotal;
+    }
+
+    /**
+     * @param i set the full total
+     * @return this (for chaining)
+     */
+    public BagFormatter setFullTotal(int i) {
+        fullTotal = i;
+        return this;
+    }
+
+    /**
+     * @return the line separator
+     */
+    public String getLineSeparator() {
+        return lineSeparator;
+    }
+
+    /**
+     * @param string
+     * @return this (for chaining)
+     */
+    public BagFormatter setLineSeparator(String string) {
+        lineSeparator = string;
+        return this;
+    }
+
+    /**
+     * @return the UnicodeLabel representing the range break source
+     */
+    public UnicodeLabel getRangeBreakSource() {
+        if (rangeBreakSource == null) {
+            Map labelMap = new HashMap();
+            // reflects the code point types on p 25
+            labelMap.put("Lo", "G&");
+            labelMap.put("Lm", "G&");
+            labelMap.put("Lu", "G&");
+            labelMap.put("Lt", "G&");
+            labelMap.put("Ll", "G&");
+            labelMap.put("Mn", "G&");
+            labelMap.put("Me", "G&");
+            labelMap.put("Mc", "G&");
+            labelMap.put("Nd", "G&");
+            labelMap.put("Nl", "G&");
+            labelMap.put("No", "G&");
+            labelMap.put("Zs", "G&");
+            labelMap.put("Pd", "G&");
+            labelMap.put("Ps", "G&");
+            labelMap.put("Pe", "G&");
+            labelMap.put("Pc", "G&");
+            labelMap.put("Po", "G&");
+            labelMap.put("Pi", "G&");
+            labelMap.put("Pf", "G&");
+            labelMap.put("Sm", "G&");
+            labelMap.put("Sc", "G&");
+            labelMap.put("Sk", "G&");
+            labelMap.put("So", "G&");
+
+            labelMap.put("Zl", "Cf");
+            labelMap.put("Zp", "Cf");
+
+            rangeBreakSource =
+                new UnicodeProperty
+                    .FilteredProperty(
+                        getUnicodePropertyFactory().getProperty(
+                            "General_Category"),
+                        new UnicodeProperty.MapFilter(labelMap))
+                    .setAllowValueAliasCollisions(true);
+
+            /*
+            "Cn", // = Other, Not Assigned 0
+            "Cc", // = Other, Control 15
+            "Cf", // = Other, Format 16
+            UnicodeProperty.UNUSED, // missing
+            "Co", // = Other, Private Use 18
+            "Cs", // = Other, Surrogate 19
+            */
+        }
+        return rangeBreakSource;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setRangeBreakSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        rangeBreakSource = label;
+        return this;
+    }
+
+    /**
+     * @return Returns the fixName.
+     */
+    public Transliterator getFixName() {
+        return fixName;
+    }
+    /**
+     * @param fixName The fixName to set.
+     */
+    public void setFixName(Transliterator fixName) {
+        this.fixName = fixName;
+    }
+
+    public Tabber getTabber() {
+        return tabber;
+    }
+
+    public void setTabber(Tabber tabber) {
+        this.tabber = tabber;
+    }
+
+    public boolean isShowTotal() {
+        return showTotal;
+    }
+
+    public void setShowTotal(boolean showTotal) {
+        this.showTotal = showTotal;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java b/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
new file mode 100644
index 0000000..c1a25ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.util.Calendar;
+
+/**
+ * @author srl
+ *
+ */
+public class CalendarFieldsSet extends FieldsSet {
+
+    /**
+     * @param whichEnum
+     * @param fieldsCount
+     */
+    public CalendarFieldsSet() {
+        super(DebugUtilitiesData.UCalendarDateFields,-1);
+    }
+    
+    public boolean  matches(Calendar cal, CalendarFieldsSet diffSet) {
+        boolean match = true;
+        for(int i=0;i<fieldCount();i++) {
+            if(isSet(i)) {
+                int calVal = cal.get(i);
+                if(calVal != get(i)) {
+                    match = false;
+                    diffSet.set(i, calVal);
+                }
+            }
+        }
+        return match;
+    }
+
+    /**
+     * set the specified fields on this calendar. Doesn't clear first. Returns any errors the cale 
+     */
+    public void setOnCalendar(Calendar cal) {
+        for(int i=0;i<fieldCount();i++) {
+            if(isSet(i)) {
+                cal.set(i, get(i));
+            }
+        }
+    }
+
+    protected void handleParseValue(FieldsSet inheritFrom, int field, String substr) {
+        if(field == Calendar.MONTH) {
+            parseValueEnum(DebugUtilitiesData.UCalendarMonths, inheritFrom, field, substr);
+            // will fallback to default.
+        } else {
+            parseValueDefault(inheritFrom, field, substr);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CaseIterator.java b/src/com/ibm/icu/dev/test/util/CaseIterator.java
new file mode 100644
index 0000000..991b463
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CaseIterator.java
@@ -0,0 +1,556 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+// copied from the Transliterator demo
+
+package com.ibm.icu.dev.test.util;
+import java.util.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Incrementally returns the set of all strings that case-fold to the same value.
+ */
+public class CaseIterator {
+    
+    // testing stuff
+    private static Transliterator toName = Transliterator.getInstance("[:^ascii:] Any-Name");
+    private static Transliterator toHex = Transliterator.getInstance("[:^ascii:] Any-Hex");
+    private static Transliterator toHex2 = Transliterator.getInstance("[[^\u0021-\u007F]-[,]] Any-Hex");
+    
+    // global tables (could be precompiled)
+    private static Map fromCaseFold = new HashMap();
+    private static Map toCaseFold = new HashMap();
+    private static int maxLength = 0;
+    
+    // This exception list is generated on the console by turning on the GENERATED flag, 
+    // which MUST be false for normal operation.
+    // Once the list is generated, it is pasted in here.
+    // A bit of a cludge, but this bootstrapping is the easiest way 
+    // to get around certain complications in the data.
+    
+    private static final boolean GENERATE = false;
+
+    private static final boolean DUMP = false;
+    
+    private static String[][] exceptionList = {
+        // a\N{MODIFIER LETTER RIGHT HALF RING}
+        {"a\u02BE","A\u02BE","a\u02BE",},
+        // ff
+        {"ff","FF","Ff","fF","ff",},
+        // ffi
+        {"ffi","FFI","FFi","FfI","Ffi","F\uFB01","fFI","fFi","ffI","ffi","f\uFB01","\uFB00I","\uFB00i",},
+        // ffl
+        {"ffl","FFL","FFl","FfL","Ffl","F\uFB02","fFL","fFl","ffL","ffl","f\uFB02","\uFB00L","\uFB00l",},
+        // fi
+        {"fi","FI","Fi","fI","fi",},
+        // fl
+        {"fl","FL","Fl","fL","fl",},
+        // h\N{COMBINING MACRON BELOW}
+        {"h\u0331","H\u0331","h\u0331",},
+        // i\N{COMBINING DOT ABOVE}
+        {"i\u0307","I\u0307","i\u0307",},
+        // j\N{COMBINING CARON}
+        {"j\u030C","J\u030C","j\u030C",},
+        // ss
+        {"ss","SS","Ss","S\u017F","sS","ss","s\u017F","\u017FS","\u017Fs","\u017F\u017F",},
+        // st
+        {"st","ST","St","sT","st","\u017FT","\u017Ft",},
+        // t\N{COMBINING DIAERESIS}
+        {"t\u0308","T\u0308","t\u0308",},
+        // w\N{COMBINING RING ABOVE}
+        {"w\u030A","W\u030A","w\u030A",},
+        // y\N{COMBINING RING ABOVE}
+        {"y\u030A","Y\u030A","y\u030A",},
+        // \N{MODIFIER LETTER APOSTROPHE}n
+        {"\u02BCn","\u02BCN","\u02BCn",},
+        // \N{GREEK SMALL LETTER ALPHA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AC\u03B9","\u0386\u0345","\u0386\u0399","\u0386\u03B9","\u0386\u1FBE","\u03AC\u0345","\u03AC\u0399","\u03AC\u03B9","\u03AC\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AE\u03B9","\u0389\u0345","\u0389\u0399","\u0389\u03B9","\u0389\u1FBE","\u03AE\u0345","\u03AE\u0399","\u03AE\u03B9","\u03AE\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B1\u0342","\u0391\u0342","\u03B1\u0342",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u0342\u03B9","\u0391\u0342\u0345","\u0391\u0342\u0399","\u0391\u0342\u03B9","\u0391\u0342\u1FBE",
+            "\u03B1\u0342\u0345","\u03B1\u0342\u0399","\u03B1\u0342\u03B9","\u03B1\u0342\u1FBE","\u1FB6\u0345",
+            "\u1FB6\u0399","\u1FB6\u03B9","\u1FB6\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u03B9","\u0391\u0345","\u0391\u0399","\u0391\u03B9","\u0391\u1FBE","\u03B1\u0345","\u03B1\u0399","\u03B1\u03B9","\u03B1\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B7\u0342","\u0397\u0342","\u03B7\u0342",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u0342\u03B9","\u0397\u0342\u0345","\u0397\u0342\u0399","\u0397\u0342\u03B9","\u0397\u0342\u1FBE",
+            "\u03B7\u0342\u0345","\u03B7\u0342\u0399","\u03B7\u0342\u03B9","\u03B7\u0342\u1FBE","\u1FC6\u0345","\u1FC6\u0399",
+            "\u1FC6\u03B9","\u1FC6\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u03B9","\u0397\u0345","\u0397\u0399","\u0397\u03B9","\u0397\u1FBE","\u03B7\u0345","\u03B7\u0399","\u03B7\u03B9","\u03B7\u1FBE",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03B9\u0308\u0300","\u0345\u0308\u0300","\u0399\u0308\u0300","\u03B9\u0308\u0300","\u1FBE\u0308\u0300",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03B9\u0308\u0301","\u0345\u0308\u0301","\u0399\u0308\u0301","\u03B9\u0308\u0301","\u1FBE\u0308\u0301",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0308\u0342","\u0345\u0308\u0342","\u0399\u0308\u0342","\u03B9\u0308\u0342","\u1FBE\u0308\u0342",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0342","\u0345\u0342","\u0399\u0342","\u03B9\u0342","\u1FBE\u0342",},
+        // \N{GREEK SMALL LETTER RHO}\N{COMBINING COMMA ABOVE}
+        {"\u03C1\u0313","\u03A1\u0313","\u03C1\u0313","\u03F1\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0308\u0300","\u03A5\u0308\u0300","\u03C5\u0308\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0308\u0301","\u03A5\u0308\u0301","\u03C5\u0308\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0308\u0342","\u03A5\u0308\u0342","\u03C5\u0308\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}
+        {"\u03C5\u0313","\u03A5\u0313","\u03C5\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0313\u0300","\u03A5\u0313\u0300","\u03C5\u0313\u0300","\u1F50\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0313\u0301","\u03A5\u0313\u0301","\u03C5\u0313\u0301","\u1F50\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0313\u0342","\u03A5\u0313\u0342","\u03C5\u0313\u0342","\u1F50\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0342","\u03A5\u0342","\u03C5\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C9\u0342","\u03A9\u0342","\u03C9\u0342","\u2126\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u0342\u03B9","\u03A9\u0342\u0345","\u03A9\u0342\u0399","\u03A9\u0342\u03B9","\u03A9\u0342\u1FBE","\u03C9\u0342\u0345","\u03C9\u0342\u0399","\u03C9\u0342\u03B9","\u03C9\u0342\u1FBE","\u1FF6\u0345",
+            "\u1FF6\u0399","\u1FF6\u03B9","\u1FF6\u1FBE","\u2126\u0342\u0345","\u2126\u0342\u0399","\u2126\u0342\u03B9","\u2126\u0342\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u03B9","\u03A9\u0345","\u03A9\u0399","\u03A9\u03B9","\u03A9\u1FBE","\u03C9\u0345","\u03C9\u0399","\u03C9\u03B9","\u03C9\u1FBE","\u2126\u0345","\u2126\u0399","\u2126\u03B9","\u2126\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03CE\u03B9","\u038F\u0345","\u038F\u0399","\u038F\u03B9","\u038F\u1FBE","\u03CE\u0345","\u03CE\u0399","\u03CE\u03B9","\u03CE\u1FBE",},
+        // \N{ARMENIAN SMALL LETTER ECH}\N{ARMENIAN SMALL LETTER YIWN}
+        {"\u0565\u0582","\u0535\u0552","\u0535\u0582","\u0565\u0552","\u0565\u0582",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER ECH}
+        {"\u0574\u0565","\u0544\u0535","\u0544\u0565","\u0574\u0535","\u0574\u0565",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER INI}
+        {"\u0574\u056B","\u0544\u053B","\u0544\u056B","\u0574\u053B","\u0574\u056B",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER XEH}
+        {"\u0574\u056D","\u0544\u053D","\u0544\u056D","\u0574\u053D","\u0574\u056D",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u0574\u0576","\u0544\u0546","\u0544\u0576","\u0574\u0546","\u0574\u0576",},
+        // \N{ARMENIAN SMALL LETTER VEW}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u057E\u0576","\u054E\u0546","\u054E\u0576","\u057E\u0546","\u057E\u0576",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F00\u03B9","\u1F00\u0345","\u1F00\u0399","\u1F00\u03B9","\u1F00\u1FBE","\u1F08\u0345","\u1F08\u0399","\u1F08\u03B9","\u1F08\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F01\u03B9","\u1F01\u0345","\u1F01\u0399","\u1F01\u03B9","\u1F01\u1FBE","\u1F09\u0345","\u1F09\u0399","\u1F09\u03B9","\u1F09\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F02\u03B9","\u1F02\u0345","\u1F02\u0399","\u1F02\u03B9","\u1F02\u1FBE","\u1F0A\u0345","\u1F0A\u0399","\u1F0A\u03B9","\u1F0A\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F03\u03B9","\u1F03\u0345","\u1F03\u0399","\u1F03\u03B9","\u1F03\u1FBE","\u1F0B\u0345","\u1F0B\u0399","\u1F0B\u03B9","\u1F0B\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F04\u03B9","\u1F04\u0345","\u1F04\u0399","\u1F04\u03B9","\u1F04\u1FBE","\u1F0C\u0345","\u1F0C\u0399","\u1F0C\u03B9","\u1F0C\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F05\u03B9","\u1F05\u0345","\u1F05\u0399","\u1F05\u03B9","\u1F05\u1FBE","\u1F0D\u0345","\u1F0D\u0399","\u1F0D\u03B9","\u1F0D\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F06\u03B9","\u1F06\u0345","\u1F06\u0399","\u1F06\u03B9","\u1F06\u1FBE","\u1F0E\u0345","\u1F0E\u0399","\u1F0E\u03B9","\u1F0E\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F07\u03B9","\u1F07\u0345","\u1F07\u0399","\u1F07\u03B9","\u1F07\u1FBE","\u1F0F\u0345","\u1F0F\u0399","\u1F0F\u03B9","\u1F0F\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F20\u03B9","\u1F20\u0345","\u1F20\u0399","\u1F20\u03B9","\u1F20\u1FBE","\u1F28\u0345","\u1F28\u0399","\u1F28\u03B9","\u1F28\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F21\u03B9","\u1F21\u0345","\u1F21\u0399","\u1F21\u03B9","\u1F21\u1FBE","\u1F29\u0345","\u1F29\u0399","\u1F29\u03B9","\u1F29\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F22\u03B9","\u1F22\u0345","\u1F22\u0399","\u1F22\u03B9","\u1F22\u1FBE","\u1F2A\u0345","\u1F2A\u0399","\u1F2A\u03B9","\u1F2A\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F23\u03B9","\u1F23\u0345","\u1F23\u0399","\u1F23\u03B9","\u1F23\u1FBE","\u1F2B\u0345","\u1F2B\u0399","\u1F2B\u03B9","\u1F2B\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F24\u03B9","\u1F24\u0345","\u1F24\u0399","\u1F24\u03B9","\u1F24\u1FBE","\u1F2C\u0345","\u1F2C\u0399","\u1F2C\u03B9","\u1F2C\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F25\u03B9","\u1F25\u0345","\u1F25\u0399","\u1F25\u03B9","\u1F25\u1FBE","\u1F2D\u0345","\u1F2D\u0399","\u1F2D\u03B9","\u1F2D\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F26\u03B9","\u1F26\u0345","\u1F26\u0399","\u1F26\u03B9","\u1F26\u1FBE","\u1F2E\u0345","\u1F2E\u0399","\u1F2E\u03B9","\u1F2E\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F27\u03B9","\u1F27\u0345","\u1F27\u0399","\u1F27\u03B9","\u1F27\u1FBE","\u1F2F\u0345","\u1F2F\u0399","\u1F2F\u03B9","\u1F2F\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F60\u03B9","\u1F60\u0345","\u1F60\u0399","\u1F60\u03B9","\u1F60\u1FBE","\u1F68\u0345","\u1F68\u0399","\u1F68\u03B9","\u1F68\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F61\u03B9","\u1F61\u0345","\u1F61\u0399","\u1F61\u03B9","\u1F61\u1FBE","\u1F69\u0345","\u1F69\u0399","\u1F69\u03B9","\u1F69\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F62\u03B9","\u1F62\u0345","\u1F62\u0399","\u1F62\u03B9","\u1F62\u1FBE","\u1F6A\u0345","\u1F6A\u0399","\u1F6A\u03B9","\u1F6A\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F63\u03B9","\u1F63\u0345","\u1F63\u0399","\u1F63\u03B9","\u1F63\u1FBE","\u1F6B\u0345","\u1F6B\u0399","\u1F6B\u03B9","\u1F6B\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F64\u03B9","\u1F64\u0345","\u1F64\u0399","\u1F64\u03B9","\u1F64\u1FBE","\u1F6C\u0345","\u1F6C\u0399","\u1F6C\u03B9","\u1F6C\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F65\u03B9","\u1F65\u0345","\u1F65\u0399","\u1F65\u03B9","\u1F65\u1FBE","\u1F6D\u0345","\u1F6D\u0399","\u1F6D\u03B9","\u1F6D\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F66\u03B9","\u1F66\u0345","\u1F66\u0399","\u1F66\u03B9","\u1F66\u1FBE","\u1F6E\u0345","\u1F6E\u0399","\u1F6E\u03B9","\u1F6E\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F67\u03B9","\u1F67\u0345","\u1F67\u0399","\u1F67\u03B9","\u1F67\u1FBE","\u1F6F\u0345","\u1F6F\u0399","\u1F6F\u03B9","\u1F6F\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F70\u03B9","\u1F70\u0345","\u1F70\u0399","\u1F70\u03B9","\u1F70\u1FBE","\u1FBA\u0345","\u1FBA\u0399","\u1FBA\u03B9","\u1FBA\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F74\u03B9","\u1F74\u0345","\u1F74\u0399","\u1F74\u03B9","\u1F74\u1FBE","\u1FCA\u0345","\u1FCA\u0399","\u1FCA\u03B9","\u1FCA\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F7C\u03B9","\u1F7C\u0345","\u1F7C\u0399","\u1F7C\u03B9","\u1F7C\u1FBE","\u1FFA\u0345","\u1FFA\u0399","\u1FFA\u03B9","\u1FFA\u1FBE",},
+    };
+    
+    // this initializes the data used to generated the case-equivalents
+
+    static {
+        
+        // Gather up the exceptions in a form we can use
+        
+        if (!GENERATE) {
+            for (int i = 0; i < exceptionList.length; ++i) {
+                String[] exception = exceptionList[i];
+                Set s = new HashSet();
+                // there has to be some method to do the following, but I can't find it in the collections
+                for (int j = 0; j < exception.length; ++j) {
+                    s.add(exception[j]);
+                }
+                fromCaseFold.put(exception[0], s);
+            }
+        }
+        
+        // walk through all the characters, and at every case fold result,
+        // put a set of all the characters that map to that result
+
+        boolean defaultmapping = true; // false for turkish
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE) continue;
+            
+            String cp = UTF16.valueOf(i);
+            String mapped = UCharacter.foldCase(cp, defaultmapping);
+            if (mapped.equals(cp)) continue;
+            
+            if (maxLength < mapped.length()) maxLength = mapped.length();
+            
+            // at this point, have different case folding
+            
+            Set s = (Set) fromCaseFold.get(mapped);
+            if (s == null) {
+                s = new HashSet();
+                s.add(mapped); // add the case fold result itself
+                fromCaseFold.put(mapped, s);
+            }
+            s.add(cp);
+            toCaseFold.put(cp, mapped);
+            toCaseFold.put(mapped, mapped); // add mapping to self
+        }
+        
+        // Emit the final data
+
+        if (DUMP) {
+            System.out.println("maxLength = " + maxLength);
+
+            System.out.println("\nfromCaseFold:");
+            Iterator it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                Object key = it.next();
+                System.out.print(" " + toHex2.transliterate((String)key) + ": ");
+                Set s = (Set) fromCaseFold.get(key);
+                Iterator it2 = s.iterator();
+                boolean first = true;
+                while (it2.hasNext()) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        System.out.print(", ");
+                    }
+                    System.out.print(toHex2.transliterate((String)it2.next()));
+                }
+                System.out.println("");
+            }
+
+            System.out.println("\ntoCaseFold:");
+            it = toCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                String value = (String) toCaseFold.get(key);
+                System.out.println(" " + toHex2.transliterate(key) + ": " + toHex2.transliterate(value));
+            }            
+        }
+        
+        // Now convert all those sets into linear arrays
+        // We can't do this in place in Java, so make a temporary target array
+        
+        // Note: This could be transformed into a single array, with offsets into it.
+        // Might be best choice in C.
+        
+        
+        Map fromCaseFold2 = new HashMap();
+        Iterator it = fromCaseFold.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+            Set s = (Set) fromCaseFold.get(key);
+            String[] temp = new String[s.size()];
+            s.toArray(temp);
+            fromCaseFold2.put(key, temp);
+        }
+        fromCaseFold = fromCaseFold2;
+
+        // We have processed everything, so the iterator will now work
+        // The following is normally OFF. 
+        // It is here to generate (under the GENERATE flag) the static exception list.
+        // It must be at the very end of initialization, so that the iterator is functional.
+        // (easiest to do it that way)
+            
+        if (GENERATE) {
+
+            // first get small set of items that have multiple characters
+            
+            Set multichars = new TreeSet();
+            it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                if (UTF16.countCodePoint(key) < 2) continue;
+                multichars.add(key);
+            }            
+            
+            // now we will go through each of them.
+            
+            CaseIterator ci = new CaseIterator();
+            it = multichars.iterator();
+            
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                
+                // here is a nasty complication. Take 'ffi' ligature. We
+                // can't just close it, since we would miss the combination
+                // that includes the 'fi' => "fi" ligature
+                // so first do a pass through, and add substring combinations
+                // we call this a 'partial closure'
+                
+                Set partialClosure = new TreeSet();
+                partialClosure.add(key);
+                
+                if (UTF16.countCodePoint(key) > 2) {
+                    Iterator multiIt2 = multichars.iterator();
+                    while (multiIt2.hasNext()) {
+                        String otherKey = (String) multiIt2.next();
+                        if (otherKey.length() >= key.length()) continue;
+                        int pos = -1;
+                        while (true) {
+                            // The following is not completely general
+                            // but works for the actual cased stuff,
+                            // and should work for future characters, since we won't have
+                            // more ligatures & other oddities.
+                            pos = key.indexOf(otherKey, pos+1);
+                            if (pos < 0) break;
+                            int endPos = pos + otherKey.length();
+                            // we know we have a proper substring,
+                            // so get the combinations
+                            String[] choices = (String[]) fromCaseFold.get(otherKey);
+                            for (int ii = 0; ii < choices.length; ++ii) {
+                                String patchwork = key.substring(0, pos)
+                                    + choices[ii]
+                                    + key.substring(endPos);
+                                partialClosure.add(patchwork);
+                            }
+                        }
+                    }
+                }
+                
+                // now, for each thing in the partial closure, get its
+                // case closure and add it to the final result.
+                
+                Set closure = new TreeSet(); // this will be the real closure
+                Iterator partialIt = partialClosure.iterator();
+                while (partialIt.hasNext()) {
+                    String key2 = (String) partialIt.next();
+                    ci.reset(key2);
+                    for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                        closure.add(temp);
+                    }
+                    // form closure
+                    /*String[] choices = (String[]) fromCaseFold.get(key2);
+                    for (int i = 0; i < choices.length; ++i) {
+                        ci.reset(choices[i]);
+                        String temp;
+                        while (null != (temp = ci.next())) {
+                            closure.add(temp);
+                        }
+                    }
+                    */
+                }
+                
+                // print it out, so that it can be cut and pasted back into this document.
+                
+                Iterator it2 = closure.iterator();
+                System.out.println("\t// " + toName.transliterate(key));
+                System.out.print("\t{\"" + toHex.transliterate(key) + "\",");
+                while (it2.hasNext()) {
+                    String item = (String)it2.next();
+                    System.out.print("\"" + toHex.transliterate(item) + "\",");
+                }
+                System.out.println("},");
+            }
+        }
+    }
+    
+    // ============ PRIVATE CLASS DATA ============ 
+    
+    // pieces that we will put together
+    // is not changed during iteration
+    private int count = 0;
+    private String[][] variants;
+    
+    // state information, changes during iteration
+    private boolean done = false;
+    private int[] counts;
+    
+    // internal buffer for efficiency
+    private StringBuffer nextBuffer = new StringBuffer();
+    
+    // ========================  
+
+    /**
+     * Reset to different source. Once reset, the iteration starts from the beginning.
+     * @param source The string to get case variants for
+     */
+    public void reset(String source) {
+        
+        // allocate arrays to store pieces
+        // using length might be slightly too long, but we don't care much
+        
+        counts = new int[source.length()];
+        variants = new String[source.length()][];
+        
+        // walk through the source, and break up into pieces
+        // each piece becomes an array of equivalent values
+        // TODO: could optimized this later to coalesce all single string pieces
+        
+        String piece = null;
+        count = 0;
+        for (int i = 0; i < source.length(); i += piece.length()) {
+            
+            // find *longest* matching piece
+            String caseFold = null;
+            
+            if (GENERATE) {
+                // do exactly one CP
+                piece = UTF16.valueOf(source, i);
+                caseFold = (String) toCaseFold.get(piece);
+            } else {               
+                int max = i + maxLength;
+                if (max > source.length()) max = source.length();
+                for (int j = max; j > i; --j) {
+                    piece = source.substring(i, j);
+                    caseFold = (String) toCaseFold.get(piece);
+                    if (caseFold != null) break;
+                }
+            }
+            
+            // if we fail, pick one code point
+            if (caseFold == null) {
+                piece = UTF16.valueOf(source, i);
+                variants[count++] = new String[] {piece}; // single item string
+            } else {
+                variants[count++] = (String[])fromCaseFold.get(caseFold);
+            }
+        }
+        reset();
+    }
+    
+    /**
+     * Restart the iteration from the beginning, but with same source
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < count; ++i) {
+            counts[i] = 0;
+        }
+    }
+    
+    /**
+     * Iterates through the case variants.
+     * @return next case variant. Each variant will case-fold to the same value as the source will.
+     * When the iteration is done, null is returned.
+     */
+    public String next() {
+        
+        if (done) return null;
+        int i;
+        
+        // TODO Optimize so we keep the piece before and after the current position
+        // so we don't have so much concatenation
+        
+        // get the result, a concatenation
+        
+        nextBuffer.setLength(0);
+        for (i = 0; i < count; ++i) {
+            nextBuffer.append(variants[i][counts[i]]);
+        }
+        
+        // find the next right set of pieces to concatenate
+        
+        for (i = count-1; i >= 0; --i) {
+            counts[i]++;
+            if (counts[i] < variants[i].length) break;
+            counts[i] = 0;
+        }
+        
+        // if we go too far, bail
+        
+        if (i < 0) {
+            done = true;
+        }
+        
+        return nextBuffer.toString();            
+    }
+        
+        
+    /**
+     * Temporary test, just to see how the stuff works.
+     */
+    static public void main(String[] args) {
+        String[] testCases = {"fiss", "h\u03a3"};
+        CaseIterator ci = new CaseIterator();
+        
+        for (int i = 0; i < testCases.length; ++i) {
+            String item = testCases[i];
+            System.out.println();
+            System.out.println("Testing: " + toName.transliterate(item));
+            System.out.println();
+            ci.reset(item);
+            int count = 0;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                System.out.println(toName.transliterate(temp));
+                count++;
+            }
+            System.out.println("Total: " + count);
+        }
+
+        // generate a list of all caseless characters -- characters whose
+        // case closure is themselves.
+
+        UnicodeSet caseless = new UnicodeSet();
+
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            String cp = UTF16.valueOf(i);
+            ci.reset(cp);
+            int count = 0;
+            String fold = null;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                fold = temp;
+                if (++count > 1) break;
+            }
+            if (count==1 && fold.equals(cp)) {
+                caseless.add(i);
+            }
+        }
+
+        System.out.println("caseless = " + caseless.toPattern(true));
+
+        UnicodeSet not_lc = new UnicodeSet("[:^lc:]");
+        
+        UnicodeSet a = new UnicodeSet();
+        a.set(not_lc);
+        a.removeAll(caseless);
+        System.out.println("[:^lc:] - caseless = " + a.toPattern(true));
+
+        a.set(caseless);
+        a.removeAll(not_lc);
+        System.out.println("caseless - [:^lc:] = " + a.toPattern(true));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CollectionUtilities.java b/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
new file mode 100644
index 0000000..33eb43d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
@@ -0,0 +1,498 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedSet;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.util.regex.Matcher;
+//#endif
+
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * Utilities that ought to be on collections, but aren't
+ */
+public final class CollectionUtilities {
+    
+    public static String join(Object[] array, String separator) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < array.length; ++i) {
+            if (i != 0) result.append(separator);
+            result.append(array[i]);
+        }
+        return result.toString();
+    }
+
+    public static String join(Collection collection, String separator) {
+        StringBuffer result = new StringBuffer();
+        boolean first = true;
+        for (Iterator it = collection.iterator(); it.hasNext();) {
+            if (first) first = false;
+            else result.append(separator);
+            result.append(it.next());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility like Arrays.asList()
+     */
+    public static Map asMap(Object[][] source, Map target, boolean reverse) {
+        int from = 0, to = 1;
+        if (reverse) {
+            from = 1; to = 0;
+        }
+        for (int i = 0; i < source.length; ++i) {
+            target.put(source[i][from], source[i][to]);
+        }
+        return target;
+    }
+    
+    public static Collection addAll(Iterator source, Collection target) {
+        while (source.hasNext()) {
+            target.add(source.next());
+        }
+        return target; // for chaining
+    }
+    
+    public static int size(Iterator source) {
+        int result = 0;
+        while (source.hasNext()) {
+            source.next();
+            ++result;
+        }
+        return result;
+    }
+    
+
+    public static Map asMap(Object[][] source) {
+        return asMap(source, new HashMap(), false);
+    }
+    
+    /**
+     * Utility that ought to be on Map
+     */
+    public static Map removeAll(Map m, Collection itemsToRemove) {
+        for (Iterator it = itemsToRemove.iterator(); it.hasNext();) {
+            Object item = it.next();
+            m.remove(item);
+        }
+        return m;
+    }
+    
+    public Object getFirst(Collection c) {
+        Iterator it = c.iterator();
+        if (!it.hasNext()) return null;
+        return it.next();
+    }
+    
+    public static Object getBest(Collection c, Comparator comp, int direction) {
+        Iterator it = c.iterator();
+        if (!it.hasNext()) return null;
+        Object bestSoFar = it.next();
+        if (direction < 0) {
+            while (it.hasNext()) {
+                Object item = it.next();
+                int compValue = comp.compare(item, bestSoFar);
+                if (compValue < 0) {
+                    bestSoFar = item;
+                }
+            }
+        } else {
+            while (it.hasNext()) {
+                Object item = it.next();
+                int compValue = comp.compare(item, bestSoFar);
+                if (compValue > 0) {
+                    bestSoFar = item;
+                }
+            }
+        }
+        return bestSoFar;
+    }
+    
+    public interface ObjectMatcher {
+        /**
+         * Must handle null, never throw exception
+         */
+        boolean matches(Object o);
+    }
+    
+    public static class InverseMatcher implements ObjectMatcher {
+        ObjectMatcher other;
+        public ObjectMatcher set(ObjectMatcher toInverse) {
+            other = toInverse;
+            return this;
+        }
+        public boolean matches(Object value) {
+            return !other.matches(value);
+        }
+    }
+
+    public static Collection removeAll(Collection c, ObjectMatcher f) {
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (f.matches(item)) it.remove();
+        }
+        return c;
+    }
+    
+    public static Collection retainAll(Collection c, ObjectMatcher f) {
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (!f.matches(item)) it.remove();
+        }
+        return c;
+    }
+    
+    public static boolean containsSome(Collection a, Collection b) {
+        // fast paths
+        if (a.size() == 0 || b.size() == 0) return false;
+        if (a == b) return true; // must test after size test.
+
+        if (a instanceof SortedSet && b instanceof SortedSet) {
+            SortedSet aa = (SortedSet) a;
+            SortedSet bb = (SortedSet) b;
+            aa.containsAll(null);
+            Comparator bbc = bb.comparator();
+            Comparator aac = aa.comparator();
+            if (bbc == null) {
+                if (aac == null) {
+                    Iterator ai = aa.iterator();
+                    Iterator bi = bb.iterator();
+                    Comparable ao = (Comparable) ai.next(); // these are ok, since the sizes are != 0
+                    Comparable bo = (Comparable) bi.next();
+                    while (true) {
+                        int rel = ao.compareTo(bo);
+                        if (rel < 0) {
+                            if (!ai.hasNext()) return false;
+                            ao = (Comparable) ai.next();
+                        } else if (rel > 0) {
+                            if (!bi.hasNext()) return false;
+                            bo = (Comparable) bi.next();
+                        } else {
+                                return true;  
+                        }
+                    }
+                }
+            } else if (bbc.equals(a)) {
+                Iterator ai = aa.iterator();
+                Iterator bi = bb.iterator();
+                Object ao = ai.next(); // these are ok, since the sizes are != 0
+                Object bo = bi.next();
+                while (true) {
+                    int rel = aac.compare(ao, bo);
+                    if (rel < 0) {
+                        if (!ai.hasNext()) return false;
+                        ao = ai.next();
+                    } else if (rel > 0)  {
+                        if (!bi.hasNext()) return false;
+                        bo = bi.next();
+                    } else {
+                        return true;  
+                    }
+                }
+            }           
+        }
+        for (Iterator it = a.iterator(); it.hasNext();) {
+            if (b.contains(it.next())) return true;
+        }
+        return false;
+    }
+    
+    public static boolean containsAll(Collection a, Collection b) {
+        // fast paths
+        if (a == b) return true;
+        if (b.size() == 0) return true;
+        if (a.size() == 0) return false;
+
+        if (a instanceof SortedSet && b instanceof SortedSet) {
+            SortedSet aa = (SortedSet) a;
+            SortedSet bb = (SortedSet) b;
+            Comparator bbc = bb.comparator();
+            Comparator aac = aa.comparator();
+            if (bbc == null) {
+                if (aac == null) {
+                    Iterator ai = aa.iterator();
+                    Iterator bi = bb.iterator();
+                    Comparable ao = (Comparable) ai.next(); // these are ok, since the sizes are != 0
+                    Comparable bo = (Comparable) bi.next();
+                    while (true) {
+                        int rel = ao.compareTo(bo);
+                        if (rel == 0) {
+                            if (!bi.hasNext()) return true;
+                            if (!ai.hasNext()) return false;
+                            bo = (Comparable) bi.next();
+                            ao = (Comparable) ai.next();
+                        } else if (rel < 0) {
+                            if (!ai.hasNext()) return false;
+                            ao = (Comparable) ai.next();
+                        } else {
+                            return false;  
+                        }
+                    }
+                }
+            } else if (bbc.equals(a)) {
+                Iterator ai = aa.iterator();
+                Iterator bi = bb.iterator();
+                Object ao = ai.next(); // these are ok, since the sizes are != 0
+                Object bo = bi.next();
+                while (true) {
+                    int rel = aac.compare(ao, bo);
+                    if (rel == 0) {
+                        if (!bi.hasNext()) return true;
+                        if (!ai.hasNext()) return false;
+                        bo = bi.next();
+                        ao = ai.next();
+                    } else if (rel < 0) {
+                        if (!ai.hasNext()) return false;
+                        ao = ai.next();
+                    } else {
+                        return false;  
+                    }
+                }
+            }           
+        }
+        return a.containsAll(b);
+    }
+    
+    public static boolean containsNone(Collection a, Collection b) {
+        return !containsSome(a, b);
+    }
+    
+    /**
+     * Used for results of getContainmentRelation
+     */
+    public static final int
+        ALL_EMPTY = 0,
+        NOT_A_SUPERSET_B = 1,
+        NOT_A_DISJOINT_B = 2,
+        NOT_A_SUBSET_B = 4,
+        NOT_A_EQUALS_B = NOT_A_SUBSET_B | NOT_A_SUPERSET_B,
+        A_PROPER_SUBSET_OF_B = NOT_A_DISJOINT_B | NOT_A_SUPERSET_B,
+        A_PROPER_SUPERSET_B = NOT_A_SUBSET_B | NOT_A_DISJOINT_B,
+        A_PROPER_OVERLAPS_B = NOT_A_SUBSET_B | NOT_A_DISJOINT_B | NOT_A_SUPERSET_B;
+    
+    /**
+     * Assesses all the possible containment relations between collections A and B with one call.<br>
+     * Returns an int with bits set, according to a "Venn Diagram" view of A vs B.<br>
+     * NOT_A_SUPERSET_B: a - b != {}<br>
+     * NOT_A_DISJOINT_B: a * b != {}  // * is intersects<br>
+     * NOT_A_SUBSET_B: b - a != {}<br>
+     * Thus the bits can be used to get the following relations:<br>
+     * for A_SUPERSET_B, use (x & CollectionUtilities.NOT_A_SUPERSET_B) == 0<br>
+     * for A_SUBSET_B, use (x & CollectionUtilities.NOT_A_SUBSET_B) == 0<br>
+     * for A_EQUALS_B, use (x & CollectionUtilities.NOT_A_EQUALS_B) == 0<br>
+     * for A_DISJOINT_B, use (x & CollectionUtilities.NOT_A_DISJOINT_B) == 0<br>
+     * for A_OVERLAPS_B, use (x & CollectionUtilities.NOT_A_DISJOINT_B) != 0<br>
+     */
+     public static int getContainmentRelation(Collection a, Collection b) {
+        if (a.size() == 0) {
+            return (b.size() == 0) ? ALL_EMPTY : NOT_A_SUPERSET_B;
+        } else if (b.size() == 0) {
+            return NOT_A_SUBSET_B;
+        }
+        int result = 0;
+        // WARNING: one might think that the following can be short-circuited, by looking at
+        // the sizes of a and b. However, this would fail in general, where a different comparator is being
+        // used in the two collections. Unfortunately, there is no failsafe way to test for that.
+        for (Iterator it = a.iterator(); result != 6 && it.hasNext();) {
+            result |= (b.contains(it.next())) ? NOT_A_DISJOINT_B : NOT_A_SUBSET_B;
+        }
+        for (Iterator it = b.iterator(); (result & 3) != 3 && it.hasNext();) {
+            result |= (a.contains(it.next())) ? NOT_A_DISJOINT_B : NOT_A_SUPERSET_B;
+        }
+        return result;
+    }
+
+    public static String remove(String source, UnicodeSet removals) {
+        StringBuffer result = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            if (!removals.contains(cp)) UTF16.append(result, cp);
+        }
+        return result.toString();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+     /**
+      * Does one string contain another, starting at a specific offset?
+      * @param text
+      * @param offset
+      * @param other
+      * @return
+      */
+        public static int matchesAt(CharSequence text, int offset, CharSequence other) {
+            int len = other.length();
+            int i = 0;
+            int j = offset;
+            for (; i < len; ++i, ++j) {
+                char pc = other.charAt(i);
+                char tc = text.charAt(j);
+                if (pc != tc) return -1;
+            }
+            return i;
+        }
+
+        /**
+         * Returns the ending offset found by matching characters with testSet, until a position is found that doen't match
+         * @param string
+         * @param offset
+         * @param testSet
+         * @return
+         */
+        public int span(CharSequence string, int offset, UnicodeSet testSet) {
+            while (true) {
+                int newOffset = testSet.matchesAt(string, offset);
+                if (newOffset < 0) return offset;
+            }
+        }
+
+        /**
+         * Returns the ending offset found by matching characters with testSet, until a position is found that does match
+         * @param string
+         * @param offset
+         * @param testSet
+         * @return
+         */
+        public int spanNot(CharSequence string, int offset, UnicodeSet testSet) {
+            while (true) {
+                int newOffset = testSet.matchesAt(string, offset);
+                if (newOffset >= 0) return offset;
+                ++offset; // try next character position
+                // we don't have to worry about surrogates for this.
+            }
+        }
+//#endif
+
+    public static String prettyPrint(UnicodeSet uset, boolean compressRanges, UnicodeSet toQuote, Transliterator quoter, 
+            Comparator ordering, Comparator spaceComparator) {
+        PrettyPrinter pp = new PrettyPrinter().setCompressRanges(compressRanges);
+        if (toQuote != null) pp.setToQuote(toQuote);
+        if (ordering != null) pp.setOrdering(ordering);
+        if (spaceComparator != null) pp.setSpaceComparator(spaceComparator);
+        return pp.toPattern(uset);
+    }
+    
+    public static class MultiComparator implements Comparator {
+        private Comparator[] comparators;
+    
+        public MultiComparator (Comparator[] comparators) {
+            this.comparators = comparators;
+        }
+    
+        /* Lexigraphic compare. Returns the first difference
+         * @return zero if equal. Otherwise +/- (i+1) 
+         * where i is the index of the first comparator finding a difference
+         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+         */
+        public int compare(Object arg0, Object arg1) {
+            for (int i = 0; i < comparators.length; ++i) {
+                int result = comparators[i].compare(arg0, arg1);
+                if (result == 0) continue;
+                if (result > 0) return i+1;
+                return -(i+1);
+            }
+            return 0;
+        }
+    }
+
+    /**
+     * Modifies Unicode set to flatten the strings. Eg [abc{da}] => [abcd]
+     * Returns the set for chaining.
+     * @param exemplar1
+     * @return
+     */
+    public static UnicodeSet flatten(UnicodeSet exemplar1) {
+        UnicodeSet result = new UnicodeSet();
+        boolean gotString = false;
+        for (UnicodeSetIterator it = new UnicodeSetIterator(exemplar1); it.nextRange();) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.addAll(it.string);
+                gotString = true;
+            } else {
+                result.add(it.codepoint, it.codepointEnd);
+            }
+        }
+        if (gotString) exemplar1.set(result);
+        return exemplar1;
+    }
+
+    /**
+     * For producing filtered iterators
+     */
+    public static abstract class FilteredIterator implements Iterator {
+        private Iterator baseIterator;
+        private static final Object EMPTY = new Object();
+        private static final Object DONE = new Object();
+        private Object nextObject = EMPTY;
+        public FilteredIterator set(Iterator baseIterator) {
+            this.baseIterator = baseIterator;
+            return this;
+        }
+        public void remove() {
+            throw new UnsupportedOperationException("Doesn't support removal");
+        }
+        public Object next() {
+            Object result = nextObject;
+            nextObject = EMPTY;
+            return result;
+        }       
+        public boolean hasNext() {
+            if (nextObject == DONE) return false;
+            if (nextObject != EMPTY) return true;
+            while (baseIterator.hasNext()) {
+                nextObject = baseIterator.next();
+                if (isIncluded(nextObject)) {
+                    return true;
+                }
+            }
+            nextObject = DONE;
+            return false;
+        }
+        abstract public boolean isIncluded(Object item);
+    }
+    
+    public static class PrefixIterator extends FilteredIterator {
+        private String prefix;
+        public PrefixIterator set(Iterator baseIterator, String prefix) {
+            super.set(baseIterator);
+            this.prefix = prefix;
+            return this;
+        }
+        public boolean isIncluded(Object item) {
+            return ((String)item).startsWith(prefix);
+        }
+    }
+    
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class RegexIterator extends FilteredIterator {
+        private Matcher matcher;
+        public RegexIterator set(Iterator baseIterator, Matcher matcher) {
+            super.set(baseIterator);
+            this.matcher = matcher;
+            return this;
+        }
+        public boolean isIncluded(Object item) {
+            return matcher.reset((String)item).matches();
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/util/CompactArrayTest.java b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
new file mode 100644
index 0000000..2c7a763
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
@@ -0,0 +1,160 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.util.CompactCharArray;
+
+/**
+ * @since release 2.2
+ */
+public final class CompactArrayTest extends TestFmwk 
+{ 
+    public static void main(String[] args) throws Exception
+    {
+        new CompactArrayTest().run(args);
+    }
+    
+    public void TestByteArrayCoverage() {
+    CompactByteArray cba = new CompactByteArray();
+    cba.setElementAt((char)0x5, (byte)0xdf);
+    cba.setElementAt((char)0x105, (byte)0xdf);
+    cba.setElementAt((char)0x205, (byte)0xdf);
+    cba.setElementAt((char)0x305, (byte)0xdf);
+    CompactByteArray cba2 = new CompactByteArray((byte)0xdf);
+    if (cba.equals(cba2)) {
+        errln("unequal byte arrays compare equal");
+    }
+    CompactByteArray cba3 = (CompactByteArray)cba.clone();
+
+    logln("equals null: " + cba.equals(null));
+    logln("equals self: " + cba.equals(cba));
+    logln("equals clone: " + cba.equals(cba3));
+    logln("equals bogus: " + cba.equals(new Object()));
+    logln("hash: " + cba.hashCode());
+
+    cba.compact(true);
+    cba.compact(true);
+
+    char[] xa = cba.getIndexArray();
+    byte[] va = cba.getValueArray();
+    CompactByteArray cba4 = new CompactByteArray(xa, va);
+
+    String xs = Utility.arrayToRLEString(xa);
+    String vs = Utility.arrayToRLEString(va);
+    CompactByteArray cba5 = new CompactByteArray(xs, vs);
+
+    logln("equals: " + cba4.equals(cba5));
+    logln("equals: " + cba.equals(cba4));
+    
+      cba4.compact(false);
+    logln("equals: " + cba4.equals(cba5));
+
+    cba5.compact(true);
+    logln("equals: " + cba4.equals(cba5));
+
+    cba.setElementAt((char)0x405, (byte)0xdf); // force expand
+    logln("modified equals clone: " + cba.equals(cba3));
+
+    cba3.setElementAt((char)0x405, (byte)0xdf); // equivalent modification
+    logln("modified equals modified clone: " + cba.equals(cba3));
+
+    cba3.setElementAt((char)0x405, (byte)0xee); // different modification
+    logln("different mod equals: " + cba.equals(cba3));
+
+    cba.compact();
+    CompactByteArray cba6 = (CompactByteArray)cba.clone();
+    logln("cloned compact equals: " + cba.equals(cba6));
+
+    cba6.setElementAt((char)0x405, (byte)0xee);
+    logln("modified clone: " + cba3.equals(cba6));
+
+    cba6.setElementAt((char)0x100, (char)0x104, (byte)0xfe);
+    for (int i = 0x100; i < 0x105; ++i) {
+        cba3.setElementAt((char)i, (byte)0xfe);
+    }
+    logln("double modified: " + cba3.equals(cba6));
+    }
+
+    public void TestCharArrayCoverage() {
+    // v1.8 fails with extensive compaction, so set to false
+    final boolean EXTENSIVE = false;
+
+    CompactCharArray cca = new CompactCharArray();
+    cca.setElementAt((char)0x5, (char)0xdf);
+    cca.setElementAt((char)0x105, (char)0xdf);
+    cca.setElementAt((char)0x205, (char)0xdf);
+    cca.setElementAt((char)0x305, (char)0xdf);
+    CompactCharArray cca2 = new CompactCharArray((char)0xdf);
+    if (cca.equals(cca2)) {
+        errln("unequal char arrays compare equal");
+    }
+    CompactCharArray cca3 = (CompactCharArray)cca.clone();
+
+    logln("equals null: " + cca.equals(null));
+    logln("equals self: " + cca.equals(cca));
+    logln("equals clone: " + cca.equals(cca3));
+    logln("equals bogus: " + cca.equals(new Object()));
+    logln("hash: " + cca.hashCode());
+
+    cca.compact(EXTENSIVE);
+    cca.compact(EXTENSIVE);
+
+    char[] xa = cca.getIndexArray();
+    char[] va = cca.getValueArray();
+    CompactCharArray cca4 = new CompactCharArray(xa, va);
+
+    String xs = Utility.arrayToRLEString(xa);
+    String vs = Utility.arrayToRLEString(va);
+    CompactCharArray cca5 = new CompactCharArray(xs, vs);
+
+    logln("equals: " + cca4.equals(cca5));
+    logln("equals: " + cca.equals(cca4));
+
+    cca4.compact(false);
+    logln("equals: " + cca4.equals(cca5));
+
+    cca5.compact(EXTENSIVE);
+    logln("equals: " + cca4.equals(cca5));
+
+    cca.setElementAt((char)0x405, (char)0xdf); // force expand
+    logln("modified equals clone: " + cca.equals(cca3));
+
+    cca3.setElementAt((char)0x405, (char)0xdf); // equivalent modification
+    logln("modified equals modified clone: " + cca.equals(cca3));
+
+    cca3.setElementAt((char)0x405, (char)0xee); // different modification
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    // after setElementAt isCompact is set to false
+    cca3.compact(true);
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    cca3.setElementAt((char)0x405, (char)0xee); // different modification
+    logln("different mod equals: " + cca.equals(cca3));
+        // after setElementAt isCompact is set to false
+    cca3.compact();
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    // v1.8 fails with extensive compaction, and defaults extensive, so don't compact
+    // cca.compact();
+    CompactCharArray cca6 = (CompactCharArray)cca.clone();
+    logln("cloned compact equals: " + cca.equals(cca6));
+
+    cca6.setElementAt((char)0x405, (char)0xee);
+    logln("modified clone: " + cca3.equals(cca6));
+
+    cca6.setElementAt((char)0x100, (char)0x104, (char)0xfe);
+    for (int i = 0x100; i < 0x105; ++i) {
+        cca3.setElementAt((char)i, (char)0xfe);
+    }
+    logln("double modified: " + cca3.equals(cca6));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CurrencyTest.java b/src/com/ibm/icu/dev/test/util/CurrencyTest.java
new file mode 100644
index 0000000..b7b90c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -0,0 +1,422 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: December 18 2002
+ * Since: ICU 2.4
+ **********************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.*;
+
+import java.util.Locale;
+import java.util.Date;
+
+/**
+ * @test
+ * @summary General test of Currency
+ */
+public class CurrencyTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CurrencyTest().run(args);
+    }
+
+    /**
+     * Test of basic API.
+     */
+    public void TestAPI() {
+        Currency usd = Currency.getInstance("USD");
+        /*int hash = */usd.hashCode();
+        Currency jpy = Currency.getInstance("JPY");
+        if (usd.equals(jpy)) {
+            errln("FAIL: USD == JPY");
+        }
+        if (usd.equals("abc")) {
+            errln("FAIL: USD == (String)");
+        }
+        if (usd.equals(null)) {
+            errln("FAIL: USD == (null)");
+        }
+        if (!usd.equals(usd)) {
+            errln("FAIL: USD != USD");
+        }
+
+        try {
+            Currency nullCurrency = Currency.getInstance((String)null);
+            errln("FAIL: Expected getInstance(null) to throw "
+                    + "a NullPointerException, but returned " + nullCurrency);
+        } catch (NullPointerException npe) {
+            logln("PASS: getInstance(null) threw a NullPointerException");
+        }
+
+        try {
+            Currency bogusCurrency = Currency.getInstance("BOGUS");
+            errln("FAIL: Expected getInstance(\"BOGUS\") to throw "
+                    + "an IllegalArgumentException, but returned " + bogusCurrency);
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: getInstance(\"BOGUS\") threw an IllegalArgumentException");
+        }
+
+        Locale[] avail = Currency.getAvailableLocales();
+        if(avail==null){
+            errln("FAIL: getAvailableLocales returned null");
+        }
+
+        try {
+            usd.getName(ULocale.US, 5, new boolean[1]);
+            errln("expected getName with invalid type parameter to throw exception");
+        }
+        catch (Exception e) {
+            logln("PASS: getName failed as expected");
+        }
+    }
+
+    /**
+     * Test registration.
+     */
+    public void TestRegistration() {
+        final Currency jpy = Currency.getInstance("JPY");
+        final Currency usd = Currency.getInstance(Locale.US);
+
+    try {
+      Currency.unregister(null); // should fail, coverage
+      errln("expected unregister of null to throw exception");
+    }
+    catch (Exception e) {
+        logln("PASS: unregister of null failed as expected");
+    }
+
+    if (Currency.unregister("")) { // coverage
+      errln("unregister before register erroneously succeeded");
+    }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+
+        Object key1 = Currency.registerInstance(jpy, ULocale.US);
+        Object key2 = Currency.registerInstance(jpy, fu_FU);
+
+        Currency nus = Currency.getInstance(Locale.US);
+        if (!nus.equals(jpy)) {
+            errln("expected " + jpy + " but got: " + nus);
+        }
+
+        // converage, make sure default factory works
+        Currency nus1 = Currency.getInstance(Locale.JAPAN);
+        if (!nus1.equals(jpy)) {
+            errln("expected " + jpy + " but got: " + nus1);
+        }
+
+        ULocale[] locales = Currency.getAvailableULocales();
+        boolean found = false;
+        for (int i = 0; i < locales.length; ++i) {
+            if (locales[i].equals(fu_FU)) {
+                found = true;
+                break;
+            }
+        }
+        if (!found) {
+            errln("did not find locale" + fu_FU + " in currency locales");
+        }
+
+        if (!Currency.unregister(key1)) {
+            errln("unable to unregister currency using key1");
+        }
+        if (!Currency.unregister(key2)) {
+            errln("unable to unregister currency using key2");
+        }
+
+        Currency nus2 = Currency.getInstance(Locale.US);
+        if (!nus2.equals(usd)) {
+            errln("expected " + usd + " but got: " + nus2);
+        }
+
+        locales = Currency.getAvailableULocales();
+        found = false;
+        for (int i = 0; i < locales.length; ++i) {
+            if (locales[i].equals(fu_FU)) {
+                found = true;
+                break;
+            }
+        }
+        if (found) {
+            errln("found locale" + fu_FU + " in currency locales after unregister");
+        }
+    }
+
+    /**
+     * Test names.
+     */
+    public void TestNames() {
+        // Do a basic check of getName()
+        // USD { "US$", "US Dollar"            } // 04/04/1792-
+        ULocale en = ULocale.ENGLISH;
+        boolean[] isChoiceFormat = new boolean[1];
+        Currency usd = Currency.getInstance("USD");
+        // Warning: HARD-CODED LOCALE DATA in this test.  If it fails, CHECK
+        // THE LOCALE DATA before diving into the code.
+        if (!noData()) {
+            assertEquals("USD.getName(SYMBOL_NAME)",
+                         "$",
+                         usd.getName(en, Currency.SYMBOL_NAME, isChoiceFormat));
+            assertEquals("USD.getName(LONG_NAME)",
+                         "US Dollar",
+                         usd.getName(en, Currency.LONG_NAME, isChoiceFormat));
+        }
+        // TODO add more tests later
+    }
+
+    public void TestCoverage() {
+        Currency usd = Currency.getInstance("USD");
+        if (!noData()) {
+        assertEquals("USD.getSymbol()",
+                "$",
+                usd.getSymbol());
+        }
+        assertEquals("USD.getLocale()",
+                ULocale.ROOT,
+                usd.getLocale(null));
+    }
+
+    public void TestCurrencyKeyword() {
+        ULocale locale = new ULocale("th_TH@collation=traditional;currency=QQQ");
+        Currency currency = Currency.getInstance(locale);
+        String result = currency.getCurrencyCode();
+        if (!"QQQ".equals(result)) {
+            errln("got unexpected currency: " + result);
+        }
+    }
+
+	public void TestAvailableCurrencyCodes()
+	{
+		// local Variables
+		String[] currency;
+
+		// Cycle through historical currencies 
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(-630720000000L)); // pre 1961
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_AM");
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(0L)); // 1970
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"SUR".equals(currency[0]))
+		{
+			errln("didn't return SUR for eo_AM returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(693792000000L)); // 1992
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"RUR".equals(currency[0]))
+		{
+			errln("didn't return RUR for eo_AM returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(977616000000L)); // post 1993
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"AMD".equals(currency[0]))
+		{
+			errln("didn't return AMD for eo_AM returned: " + currency[0]);
+		}
+
+		// Locale AD has multiple currencies at once
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(977616000000L)); // 2001
+		if (currency.length != 4)
+		{
+			errln("FAIL: didn't return 4 for eo_AD returned: " + currency.length);
+		}
+		if (!"EUR".equals(currency[0]))
+		{
+			errln("didn't return EUR for eo_AD returned: " + currency[0]);
+		}
+		if (!"ESP".equals(currency[1]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[1]);
+		}
+		if (!"FRF".equals(currency[2]))
+		{
+			errln("didn't return FRF for eo_AD returned: " + currency[2]);
+		}
+		if (!"ADP".equals(currency[3]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[3]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(0L)); // 1970
+		if (currency.length != 3)
+		{
+			errln("FAIL: didn't return 3 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+		if (!"FRF".equals(currency[1]))
+		{
+			errln("didn't return FRF for eo_AD returned: " + currency[1]);
+		}
+		if (!"ADP".equals(currency[2]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[2]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(-630720000000L)); // 1950
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+		if (!"ADP".equals(currency[1]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(-2207520000000L)); // 1900
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+
+		// Locale UA has gap between years 1994 - 1996
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_UA"), new Date(788400000000L));
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_UA");
+		}
+
+		// Test for bogus locale
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_QQ"), new Date(0L));
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_QQ");
+		}
+
+		// Cycle through historical currencies
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(977616000000L)); // 2001
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOA".equals(currency[0]))
+		{
+			errln("didn't return AOA for eo_AO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(819936000000L)); // 1996
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOR".equals(currency[0]))
+		{
+			errln("didn't return AOR for eo_AO returned: " + currency[0]);
+		}
+		if (!"AON".equals(currency[1]))
+		{
+			errln("didn't return AON for eo_AO returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(662256000000L)); // 
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AO returned: " + currency.length);
+		}
+		if (!"AON".equals(currency[0]))
+		{
+			errln("didn't return AON for eo_AO returned: " + currency[0]);
+		}
+		if (!"AOK".equals(currency[1]))
+		{
+			errln("didn't return AOK for eo_AO returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(315360000000L)); // 1980
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOK".equals(currency[0]))
+		{
+			errln("didn't return AOK for eo_AO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(0L)); // 1970
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_AO");
+		}
+
+		// Test with currency keyword override
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_DE@currency=DEM"), new Date(977616000000L)); // 2001
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_DE@currency=DEM returned: " + currency.length);
+		}
+		if (!"EUR".equals(currency[0]))
+		{
+			errln("didn't return EUR for eo_DE@currency=DEM returned: " + currency[0]);
+		}
+		if (!"DEM".equals(currency[1]))
+		{
+			errln("didn't return DEM for eo_DE@currency=DEM returned: " + currency[1]);
+		}
+
+		// Test Euro Support
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US_PREEURO"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US_PREEURO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US_Q"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US_Q returned: " + currency[0]);
+		}
+
+	}
+
+    public void TestDeprecatedCurrencyFormat() {
+        // bug 5952
+        Locale locale = new Locale("sr", "QQ");
+        DecimalFormatSymbols icuSymbols = new 
+        com.ibm.icu.text.DecimalFormatSymbols(locale);
+        String symbol = icuSymbols.getCurrencySymbol();
+        Currency currency = icuSymbols.getCurrency();
+        String expectCur = null;
+        String expectSym = "\u00A4";
+        if(!symbol.toString().equals(expectSym) || currency != null) {
+            errln("for " + locale + " expected " + expectSym+"/"+expectCur + " but got " + symbol+"/"+currency);
+        } else {
+            logln("for " + locale + " expected " + expectSym+"/"+expectCur + " and got " + symbol+"/"+currency);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/DataInputCompressor.java b/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
new file mode 100644
index 0000000..9c75b1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
@@ -0,0 +1,236 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.DataInput;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.util.ArrayList;
+import java.util.Collection;
+//import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+//import java.util.Map;
+
+//import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Simple data input compressor. Nothing fancy, but much smaller footprint for
+ * ints and many strings.
+ */
+public final class DataInputCompressor implements ObjectInput {
+    static final boolean SHOW = false;
+
+    private ObjectInput dataInput;
+
+    private transient StringBuffer stringBuffer = new StringBuffer();
+
+    public DataInputCompressor(ObjectInput dataInput) {
+        this.dataInput = dataInput;
+    }
+
+    public DataInput getDataInput() {
+        return dataInput;
+    }
+
+    public void setDataInput(ObjectInput dataInput) {
+        this.dataInput = dataInput;
+    }
+
+    public boolean readBoolean() throws IOException {
+        return dataInput.readBoolean();
+    }
+
+    public byte readByte() throws IOException {
+        return dataInput.readByte();
+    }
+
+    public int readUnsignedByte() throws IOException {
+        return dataInput.readUnsignedByte();
+    }
+
+    public double readDouble() throws IOException {
+        return dataInput.readDouble();
+    }
+
+    public float readFloat() throws IOException {
+        return dataInput.readFloat();
+    }
+
+    public void readFully(byte[] b) throws IOException {
+        dataInput.readFully(b);
+    }
+
+    public void readFully(byte[] b, int off, int len) throws IOException {
+        dataInput.readFully(b, off, len);
+    }
+
+    public int skipBytes(int n) throws IOException {
+        return dataInput.skipBytes(n);
+    }
+
+    public String readLine() throws IOException {
+        return dataInput.readLine();
+    }
+
+    public int available() throws IOException {
+        return dataInput.available();
+    }
+    public void close() throws IOException {
+        dataInput.close();
+    }
+    public int read() throws IOException {
+        return dataInput.read();
+    }
+    public int read(byte[] b) throws IOException {
+        return dataInput.read(b);
+    }
+    public int read(byte[] b, int off, int len) throws IOException {
+        return dataInput.read(b, off, len);
+    }
+    public Object readObject() throws ClassNotFoundException, IOException {
+        return dataInput.readObject();
+    }
+    public long skip(long n) throws IOException {
+        return dataInput.skip(n);
+    }
+    public String toString() {
+        return dataInput.toString();
+    }
+    // ==== New Routines ====
+
+    public char readChar() throws IOException {
+        return (char) readULong();
+    }
+
+    public short readShort() throws IOException {
+        return (short) readLong();
+    }
+
+    public int readUnsignedShort() throws IOException {
+        return (int) readULong();
+    }
+
+    public int readUShort() throws IOException {
+        return (int) readULong();
+    }
+
+    public int readInt() throws IOException {
+        return (int) readLong();
+    }
+
+    public int readUInt() throws IOException {
+        return (int) readULong();
+    }
+
+    public String readChars(int len) throws IOException {
+        stringBuffer.setLength(0);
+        for (int i = 0; i < len; ++i) {
+            int cp = (int) readULong();
+            UTF16.append(stringBuffer, cp);
+        }
+        return stringBuffer.toString();
+    }
+
+    public String readUTF() throws IOException {
+        int len = (int) readULong();
+        return readChars(len);
+    }
+
+    public long readLong() throws IOException {
+        long result = 0;
+        int offset = 0;
+        while (true) {
+            long input = readByte();
+            result |= (input & 0x7F) << offset;
+            if ((input & 0x80) == 0)
+                break;
+            offset += 7;
+        }
+        boolean negative = (result & 1) != 0; // get sign bit from the bottom,
+                                              // and invert
+        result >>>= 1;
+        if (negative)
+            result = ~result;
+        return result;
+    }
+
+    public long readULong() throws IOException {
+        long result = 0;
+        int offset = 0;
+        while (true) { // read sequence of 7 bits, with top bit = 1 for
+                       // continuation
+            int input = readByte();
+            result |= (input & 0x7F) << offset;
+            if ((input & 0x80) == 0)
+                return result;
+            offset += 7;
+        }
+    }
+
+    /**
+     *  
+     */
+    public Object[] readStringSet(Collection availableValues)
+            throws IOException {
+        int size = readUInt();
+        if (SHOW) System.out.println("readStringSet");
+        Object[] valuesList = new Object[size + 1];
+        // first item is null
+        String lastString = "";
+        ReadPool trailingPool = new ReadPool();
+        for (int i = 0; i < size; ++i) {
+            int common = readUInt();
+            boolean inPool = (common & 1) != 0;
+            common >>>= 1;
+            if (SHOW) System.out.println(common);
+            String current;
+            if (inPool) {
+                int poolIndex = readUInt();
+                if (SHOW) System.out.println("\t" + poolIndex);
+                current = (String) trailingPool.get(poolIndex);
+            } else {
+                current = readUTF();
+                trailingPool.add(current);
+            }
+            valuesList[i + 1] = lastString = lastString.substring(0, common)
+                    + current;
+            if (SHOW) System.out.println("\t\t" + lastString);
+            if (availableValues != null) availableValues.add(current);
+        }
+        return valuesList;
+    }
+    
+    public static class ReadPool {
+        private List trailingPool = new ArrayList();
+        public Object get(int index) {
+            return trailingPool.get(index);
+        }
+        public void add(Object o) {
+            trailingPool.add(o);
+        }
+    }
+
+    /**
+     * @throws IOException
+     * @throws ClassNotFoundException
+     * 
+     */
+    public Object[] readCollection(LinkedHashSet availableValues) throws ClassNotFoundException, IOException {
+        int size = readUInt();
+        Object[] valuesList = new Object[size + 1];
+        for (int i = 0; i < size; ++i) {
+            valuesList[i + 1] = readObject();
+        }
+       return valuesList;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java b/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
new file mode 100644
index 0000000..76ef2ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
@@ -0,0 +1,215 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+//import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.SortedSet;
+//import java.util.TreeSet;
+
+//import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Simple data output compressor. Nothing fancy, but much smaller footprint for ints and many strings.
+ */
+public final class DataOutputCompressor implements ObjectOutput {
+    static final boolean SHOW = false;
+
+    private ObjectOutput dataOutput;
+
+    public DataOutputCompressor(ObjectOutput dataOutput) {
+        this.dataOutput = dataOutput;
+    }
+
+    public DataOutput getDataOutput() {
+        return dataOutput;
+    }
+
+    public void setDataOutput(ObjectOutput dataOutput) {
+        this.dataOutput = dataOutput;
+    }
+
+    public void write(byte[] b) throws IOException {
+        dataOutput.write(b);
+    }
+
+    public void write(byte[] b, int off, int len) throws IOException {
+        dataOutput.write(b, off, len);
+    }
+
+    public void write(int b) throws IOException {
+        dataOutput.write(b);
+    }
+
+    public void writeBoolean(boolean v) throws IOException {
+        dataOutput.writeBoolean(v);
+    }
+
+    public void writeByte(int v) throws IOException {
+        dataOutput.writeByte(v);
+    }
+
+    public void writeBytes(String s) throws IOException {
+        dataOutput.writeBytes(s);
+    }
+
+    public void writeDouble(double v) throws IOException {
+        dataOutput.writeDouble(v);
+    }
+
+    public void writeFloat(float v) throws IOException {
+        dataOutput.writeFloat(v);
+    }
+
+    public void close() throws IOException {
+        dataOutput.close();
+    }
+    public void flush() throws IOException {
+        dataOutput.flush();
+    }
+    public String toString() {
+        return dataOutput.toString();
+    }
+    public void writeObject(Object obj) throws IOException {
+        dataOutput.writeObject(obj);
+    }
+    // ==== New Routines ====
+
+    public void writeChar(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeShort(int v) throws IOException {
+        writeLong(v);
+    }
+
+    public void writeUShort(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeInt(int v) throws IOException {
+        writeLong(v);
+    }
+
+    public void writeUInt(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeUTF(String str) throws IOException {
+        writeULong(UTF16.countCodePoint(str));
+        writeChars(str);
+    }
+
+    public void writeChars(String s) throws IOException {
+        int cp = 0;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            writeULong(cp);
+        }
+    }
+
+    public void writeLong(long v) throws IOException {
+        long flag = 0; // put sign bit at the bottom, and invert
+        if (v < 0) {
+            v = ~v;
+            flag = 1;
+        }
+        v <<= 1;
+        v |= flag;
+        while (true) {
+            if ((v & ~0x7FL) == 0) {
+                dataOutput.writeByte((byte) v);
+                break;
+            }
+            dataOutput.writeByte((byte) (0x80L | v));
+            v >>>= 7;
+        }
+    }
+
+    public void writeULong(long v) throws IOException {
+        while (true) { // write sequence of 7 bits, with top bit = 1 for continuation
+            if ((v & ~0x7FL) == 0) {
+                dataOutput.writeByte((byte) v);
+                break;
+            }
+            dataOutput.writeByte((byte) (0x80L | v));
+            v >>>= 7;
+        }
+    }
+
+    /**
+     * 
+     */
+    public void writeStringSet(SortedSet c, Map object_index) throws IOException {
+        if (SHOW) System.out.println("writeStringSet");
+        writeUInt(c.size());
+        int i = 0;
+        object_index.put(null, new Integer(i++));
+        WritePool trailingPool = new WritePool();
+        String lastString = "";
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            String s = (String) it.next();
+            object_index.put(s, new Integer(i++));
+            int common = UnicodeMap.findCommon(lastString, s); // runlength encode
+            lastString = s;
+            String piece = s.substring(common);
+            if (SHOW) System.out.println(common);
+            common <<= 1;
+            int inPool = trailingPool.getIndex(piece);
+            if (inPool < 0) {
+                writeUInt(common);
+                writeUTF(piece);
+                trailingPool.put(piece);
+            } else {
+                writeUInt(common | 1);
+                writeUInt(inPool);
+                if (SHOW) System.out.println("\t" + inPool);
+            }
+            if (SHOW) System.out.println("\t\t" + lastString);
+        }
+    }
+    
+    public static class WritePool {
+        private Map trailingPool = new HashMap();
+        private int poolCount = 0;
+        public int getIndex(Object o) {
+            Integer inPool = (Integer) trailingPool.get(o);
+            if (inPool == null) return -1;
+            return inPool.intValue();
+        }
+        public void put(Object o) {
+            trailingPool.put(o, new Integer(poolCount++));
+        }
+    }
+
+    /**
+     * @throws IOException
+     * 
+     */
+    public void writeCollection(Collection c, Map object_index) throws IOException {
+        writeUInt(c.size());
+        int i = 0;
+        object_index.put(null, new Integer(i++));
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object s = it.next();
+            dataOutput.writeObject(s);
+            if (object_index != null) object_index.put(s, new Integer(i++));
+        }
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java b/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
new file mode 100644
index 0000000..8f86acb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * @author srl
+ *
+ */
+public class DateTimeStyleSet extends FieldsSet {
+
+    private static final int DTS_DATE = 0;
+    private static final String kDATE = "DATE";
+    private static final int DTS_TIME = 1;
+    private static final String kTIME = "TIME";
+    private static final int DTS_COUNT = 2;
+    
+    private static final String kRELATIVE_ = "RELATIVE_";
+    
+    private int getOrNone(int which) {
+        if(!isSet(which)) {
+            return DateFormat.NONE;
+        } else {
+            return get(which);
+        }
+    }
+    
+    public DateTimeStyleSet() {
+        super(FieldsSet.NO_ENUM, DTS_COUNT);
+    }
+    
+    public int getDateStyle() {
+        return getOrNone(DTS_DATE);
+    }
+    
+    public int getTimeStyle() {
+        return getOrNone(DTS_TIME);
+    }
+    
+    protected void handleParseValue(FieldsSet inheritFrom, int field, String substr) {
+        if(substr.startsWith(kRELATIVE_)) {
+            parseValueEnum(DebugUtilitiesData.UDateFormatStyle, inheritFrom, field, substr.substring(kRELATIVE_.length()));
+            if(isSet(field)) {
+                set(field, get(field) | DateFormat.RELATIVE);
+            }
+        } else {
+            parseValueEnum(DebugUtilitiesData.UDateFormatStyle, inheritFrom, field, substr);
+        }
+    }
+    
+    protected int handleParseName(FieldsSet inheritFrom, String name, String substr) {
+        if(name.equals(kDATE)) {
+            return DTS_DATE;
+        } else if(name.equals(kTIME)) {
+            return DTS_TIME;
+        } else {
+            throw new IllegalArgumentException("Bad field: " + name);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilities.java b/src/com/ibm/icu/dev/test/util/DebugUtilities.java
new file mode 100644
index 0000000..e4e2ee4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilities.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+/**
+ * @author srl
+ *
+ */
+
+public class DebugUtilities {
+    
+    /**
+     * Count enum types
+     * @return the number of enum types available, starting at 0
+     */
+    public static int typeCount() {
+        return DebugUtilitiesData.TYPES.length;
+    }
+    
+    /**
+     * Fetch the name of a particular type of enum
+     * @param type the enum type
+     * @return the name of the enum
+     */
+    public static String typeString(int type) {
+        return enumString(DebugUtilitiesData.UDebugEnumType, type);
+    }
+
+    /**
+     * Count the number of available enum values for an item, from 0
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @return the number of available enum values
+     */
+    public static int enumCount(int type) {
+        return DebugUtilitiesData.NAMES[type].length;
+    }
+    
+    /**
+     * Fetch the name of an enum
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @param field which enum value to look up
+     * @return the found name. Will throw an exception on out of bounds.
+     */
+    public static String enumString(int type, int field) {
+        return DebugUtilitiesData.NAMES[type][field];
+    }
+    
+    /**
+     * Lookup an enum by string
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @param string the string to search for
+     * @return the found enum value, or -1 if not found
+     */
+    public static int enumByString(int type, String string) {
+        for(int j=0;j<DebugUtilitiesData.NAMES[type].length;j++) {
+            if(string.equals(DebugUtilitiesData.NAMES[type][j])) {
+                return j;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * for consistency checking
+     * @param type the type of enum
+     * @return the expected ordinal value (should be equal to "field")
+     * @internal
+     */
+    public static int enumArrayValue(int type, int field) {
+        return DebugUtilitiesData.VALUES[type][field];
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
new file mode 100644
index 0000000..57bdf74
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -0,0 +1,138 @@
+/** Copyright (C) 2008, International Business Machines Corporation and Others. All Rights Reserved. **/
+
+/* NOTE: this file is AUTOMATICALLY GENERATED by gentest. */
+
+package com.ibm.icu.dev.test.util;
+
+public class DebugUtilitiesData extends Object {
+    public static final String ICU4C_VERSION="4.1.1";
+    public static final int UDebugEnumType = 0;
+    public static final int UCalendarDateFields = 1;
+    public static final int UCalendarMonths = 2;
+    public static final int UDateFormatStyle = 3;
+    public static final String [] TYPES = { 
+        "UDebugEnumType", /* 0 */
+        "UCalendarDateFields", /* 1 */
+        "UCalendarMonths", /* 2 */
+        "UDateFormatStyle", /* 3 */
+    };
+
+    public static final String [][] NAMES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           "UDebugEnumType", /* 0 */ 
+           "UCalendarDateFields", /* 1 */ 
+           "UCalendarMonths", /* 2 */ 
+           "UDateFormatStyle", /* 3 */ 
+        },
+        /* UCalendarDateFields, 1 */
+        { 
+           "ERA", /* 0 */ 
+           "YEAR", /* 1 */ 
+           "MONTH", /* 2 */ 
+           "WEEK_OF_YEAR", /* 3 */ 
+           "WEEK_OF_MONTH", /* 4 */ 
+           "DATE", /* 5 */ 
+           "DAY_OF_YEAR", /* 6 */ 
+           "DAY_OF_WEEK", /* 7 */ 
+           "DAY_OF_WEEK_IN_MONTH", /* 8 */ 
+           "AM_PM", /* 9 */ 
+           "HOUR", /* 10 */ 
+           "HOUR_OF_DAY", /* 11 */ 
+           "MINUTE", /* 12 */ 
+           "SECOND", /* 13 */ 
+           "MILLISECOND", /* 14 */ 
+           "ZONE_OFFSET", /* 15 */ 
+           "DST_OFFSET", /* 16 */ 
+           "YEAR_WOY", /* 17 */ 
+           "DOW_LOCAL", /* 18 */ 
+           "EXTENDED_YEAR", /* 19 */ 
+           "JULIAN_DAY", /* 20 */ 
+           "MILLISECONDS_IN_DAY", /* 21 */ 
+           "IS_LEAP_MONTH", /* 22 */ 
+        },
+        /* UCalendarMonths, 2 */
+        { 
+           "JANUARY", /* 0 */ 
+           "FEBRUARY", /* 1 */ 
+           "MARCH", /* 2 */ 
+           "APRIL", /* 3 */ 
+           "MAY", /* 4 */ 
+           "JUNE", /* 5 */ 
+           "JULY", /* 6 */ 
+           "AUGUST", /* 7 */ 
+           "SEPTEMBER", /* 8 */ 
+           "OCTOBER", /* 9 */ 
+           "NOVEMBER", /* 10 */ 
+           "DECEMBER", /* 11 */ 
+           "UNDECIMBER", /* 12 */ 
+        },
+        /* UDateFormatStyle, 3 */
+        { 
+           "FULL", /* 0 */ 
+           "LONG", /* 1 */ 
+           "MEDIUM", /* 2 */ 
+           "SHORT", /* 3 */ 
+        },
+    };
+
+    public static final int [][] VALUES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           0, /* UDebugEnumType */
+           1, /* UCalendarDateFields */
+           2, /* UCalendarMonths */
+           3, /* UDateFormatStyle */
+        },
+        /* UCalendarDateFields, 1 */
+        { 
+           com.ibm.icu.util.Calendar.ERA, /* 0 */
+           com.ibm.icu.util.Calendar.YEAR, /* 1 */
+           com.ibm.icu.util.Calendar.MONTH, /* 2 */
+           com.ibm.icu.util.Calendar.WEEK_OF_YEAR, /* 3 */
+           com.ibm.icu.util.Calendar.WEEK_OF_MONTH, /* 4 */
+           com.ibm.icu.util.Calendar.DATE, /* 5 */
+           com.ibm.icu.util.Calendar.DAY_OF_YEAR, /* 6 */
+           com.ibm.icu.util.Calendar.DAY_OF_WEEK, /* 7 */
+           com.ibm.icu.util.Calendar.DAY_OF_WEEK_IN_MONTH, /* 8 */
+           com.ibm.icu.util.Calendar.AM_PM, /* 9 */
+           com.ibm.icu.util.Calendar.HOUR, /* 10 */
+           com.ibm.icu.util.Calendar.HOUR_OF_DAY, /* 11 */
+           com.ibm.icu.util.Calendar.MINUTE, /* 12 */
+           com.ibm.icu.util.Calendar.SECOND, /* 13 */
+           com.ibm.icu.util.Calendar.MILLISECOND, /* 14 */
+           com.ibm.icu.util.Calendar.ZONE_OFFSET, /* 15 */
+           com.ibm.icu.util.Calendar.DST_OFFSET, /* 16 */
+           com.ibm.icu.util.Calendar.YEAR_WOY, /* 17 */
+           com.ibm.icu.util.Calendar.DOW_LOCAL, /* 18 */
+           com.ibm.icu.util.Calendar.EXTENDED_YEAR, /* 19 */
+           com.ibm.icu.util.Calendar.JULIAN_DAY, /* 20 */
+           com.ibm.icu.util.Calendar.MILLISECONDS_IN_DAY, /* 21 */
+           com.ibm.icu.util.ChineseCalendar.IS_LEAP_MONTH, /* 22 */
+        },
+        /* UCalendarMonths, 2 */
+        { 
+           com.ibm.icu.util.Calendar.JANUARY, /* 0 */
+           com.ibm.icu.util.Calendar.FEBRUARY, /* 1 */
+           com.ibm.icu.util.Calendar.MARCH, /* 2 */
+           com.ibm.icu.util.Calendar.APRIL, /* 3 */
+           com.ibm.icu.util.Calendar.MAY, /* 4 */
+           com.ibm.icu.util.Calendar.JUNE, /* 5 */
+           com.ibm.icu.util.Calendar.JULY, /* 6 */
+           com.ibm.icu.util.Calendar.AUGUST, /* 7 */
+           com.ibm.icu.util.Calendar.SEPTEMBER, /* 8 */
+           com.ibm.icu.util.Calendar.OCTOBER, /* 9 */
+           com.ibm.icu.util.Calendar.NOVEMBER, /* 10 */
+           com.ibm.icu.util.Calendar.DECEMBER, /* 11 */
+           com.ibm.icu.util.Calendar.UNDECIMBER, /* 12 */
+        },
+        /* UDateFormatStyle, 3 */
+        { 
+           0, /* FULL */
+           1, /* LONG */
+           2, /* MEDIUM */
+           3, /* SHORT */
+        },
+    };
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java b/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
new file mode 100644
index 0000000..dac8a91
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * @author srl
+ *
+ */
+public class DebugUtilitiesTest extends TestFmwk {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+            new DebugUtilitiesTest().run(args);
+    }
+    
+    public void TestStrings() {
+        logln("ICU4C version was "+DebugUtilitiesData.ICU4C_VERSION);
+        int typeCount = DebugUtilities.typeCount();
+        if(typeCount==0) {
+            errln("typecount is 0!");
+        }
+        for(int j=0;j<typeCount;j++) {
+            int enumCount = DebugUtilities.enumCount(j);
+            logln("Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" - enumCount "+enumCount);
+            for(int k=0;k<enumCount;k++) {
+                String enumString = DebugUtilities.enumString(j,k);
+                int enumValue = DebugUtilities.enumArrayValue(j, k);
+                int enumValueFromString = DebugUtilities.enumByString(j, enumString);
+                logln("     Enum "+k+"/"+enumCount+": "+enumString +" - value "+enumValue+", value from string:"+enumValueFromString);
+                if(enumValue != k) {
+                    errln("FAIL: Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" -    Enum "+k+"/"+enumCount+": "+enumString +" -  ERR: value="+enumValue+" should be "+k);
+                }
+                if(enumValueFromString != k) {
+                    errln("FAIL: Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" -    Enum "+k+"/"+enumCount+": "+enumString +" -  ERR: enumByString returned="+enumValueFromString+" should be "+k);
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Differ.java b/src/com/ibm/icu/dev/test/util/Differ.java
new file mode 100644
index 0000000..4326336
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Differ.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+/** VERY Basic Diff program. Compares two sequences of objects fed into it, and
+ * lets you know where they are different.
+ * @author Mark Davis
+ * @version 1.0
+ */
+
+final public class Differ {
+//    public static final String copyright =
+//      "Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved.";
+
+    /**
+     * @param stackSize The size of the largest difference you expect.
+     * @param matchCount The number of items that have to be the same to count as a match
+     */
+    public Differ(int stackSize, int matchCount) {
+        this.STACKSIZE = stackSize;
+        this.EQUALSIZE = matchCount;
+        a = new Object[stackSize+matchCount];
+        b = new Object[stackSize+matchCount];
+    }
+
+    public void add (Object aStr, Object bStr) {
+        addA(aStr);
+        addB(bStr);
+    }
+
+    public void addA (Object aStr) {
+        flush();
+        a[aCount++] = aStr;
+    }
+
+    public void addB (Object bStr) {
+        flush();
+        b[bCount++] = bStr;
+    }
+
+    public int getALine(int offset) {
+        return aLine + maxSame + offset;
+    }
+
+    public Object getA(int offset) {
+        if (offset < 0) return last;
+        if (offset > aTop-maxSame) return next;
+        return a[offset];
+    }
+
+    public int getACount() {
+        return aTop-maxSame;
+    }
+
+    public int getBCount() {
+        return bTop-maxSame;
+    }
+
+    public int getBLine(int offset) {
+        return bLine + maxSame + offset;
+    }
+
+    public Object getB(int offset) {
+        if (offset < 0) return last;
+        if (offset > bTop-maxSame) return next;
+        return b[offset];
+    }
+
+    public void checkMatch(boolean finalPass) {
+        // find the initial strings that are the same
+        int max = aCount;
+        if (max > bCount) max = bCount;
+        int i;
+        for (i = 0; i < max; ++i) {
+            if (!a[i].equals(b[i])) break;
+        }
+        // at this point, all items up to i are equal
+        maxSame = i;
+        aTop = bTop = maxSame;
+        if (maxSame > 0) last = a[maxSame-1];
+        next = "";
+
+        if (finalPass) {
+            aTop = aCount;
+            bTop = bCount;
+            next = "";
+            return;
+        }
+
+        if (aCount - maxSame < EQUALSIZE || bCount - maxSame < EQUALSIZE) return;
+
+        // now see if the last few a's occur anywhere in the b's, or vice versa
+        int match = find (a, aCount-EQUALSIZE, aCount, b, maxSame, bCount);
+        if (match != -1) {
+            aTop = aCount-EQUALSIZE;
+            bTop = match;
+            next = a[aTop];
+            return;
+        }
+        match = find (b, bCount-EQUALSIZE, bCount, a, maxSame, aCount);
+        if (match != -1) {
+            bTop = bCount-EQUALSIZE;
+            aTop = match;
+            next = b[bTop];
+            return;
+        }
+        if (aCount >= STACKSIZE || bCount >= STACKSIZE) {
+            // flush some of them
+            aCount = (aCount + maxSame) / 2;
+            bCount = (bCount + maxSame) / 2;
+            next = "";
+        }
+    }
+
+    /** Convenient utility
+     * finds a segment of the first array in the second array.
+     * @return -1 if not found, otherwise start position in b
+     */
+
+    public int find (Object[] aArr, int aStart, int aEnd, Object[] bArr, int bStart, int bEnd) {
+        int len = aEnd - aStart;
+        int bEndMinus = bEnd - len;
+        tryA:
+        for (int i = bStart; i <= bEndMinus; ++i) {
+            for (int j = 0; j < len; ++j) {
+                if (!bArr[i + j].equals(aArr[aStart + j])) continue tryA;
+            }
+            return i; // we have a match!
+        }
+        return -1;
+    }
+
+    // ====================== PRIVATES ======================
+
+    private void flush() {
+        if (aTop != 0) {
+            int newCount = aCount-aTop;
+            System.arraycopy(a, aTop, a, 0, newCount);
+            aCount = newCount;
+            aLine += aTop;
+            aTop = 0;
+        }
+
+        if (bTop != 0) {
+            int newCount = bCount-bTop;
+            System.arraycopy(b, bTop, b, 0, newCount);
+            bCount = newCount;
+            bLine += bTop;
+            bTop = 0;
+        }
+    }
+
+    private int STACKSIZE;
+    private int EQUALSIZE;
+
+    private Object [] a;
+    private Object [] b;
+    private Object last = "";
+    private Object next = "";
+    private int aCount = 0;
+    private int bCount = 0;
+    private int aLine = 1;
+    private int bLine = 1;
+    private int maxSame = 0, aTop = 0, bTop = 0;
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DisplayNameTest.java b/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
new file mode 100644
index 0000000..04010a6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
@@ -0,0 +1,399 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+public class DisplayNameTest extends TestFmwk {
+    static final boolean SHOW_ALL = false;
+    
+    public static void main(String[] args) throws Exception {
+        new DisplayNameTest().run(args);
+    }
+        
+    interface DisplayNameGetter {
+        public String get(ULocale locale, String code, Object context);
+    }
+
+    Map[] codeToName = new Map[10];
+    {
+        for (int k = 0; k < codeToName.length; ++k) codeToName[k] = new HashMap();
+    }
+    
+    static final Object[] zoneFormats = {new Integer(0), new Integer(1), new Integer(2),
+        new Integer(3), new Integer(4), new Integer(5), new Integer(6), new Integer(7)};
+    static final Object[] currencyFormats = {new Integer(Currency.SYMBOL_NAME), new Integer(Currency.LONG_NAME)};
+    static final Object[] NO_CONTEXT = {null};
+    
+    static final Date JAN1;
+    static final Date JULY1;
+
+    static {
+        Calendar cal = new GregorianCalendar(2004, Calendar.JANUARY, 1);
+        JAN1 = cal.getTime();
+        cal.set(Calendar.MONTH, Calendar.JULY);
+        JULY1 = cal.getTime();
+    }
+
+    String[] countries = addUnknown(ULocale.getISOCountries(),2);
+    String[] languages = addUnknown(ULocale.getISOLanguages(),2);
+    String[] zones = addUnknown(getRealZoneIDs(),5);
+    String[] scripts = addUnknown(getCodes(new ULocale("en","US",""), "Scripts"),4);
+    // TODO fix once there is a way to get a list of all script codes
+    String[] currencies = addUnknown(getCodes(new ULocale("en","",""), "Currencies"),3);
+    // TODO fix once there is a way to get a list of all currency codes
+
+    public void TestLocales() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            checkLocale(locales[i]);
+        }
+    }
+
+    /**
+     * @return
+     */
+    private String[] getRealZoneIDs() {
+        Set temp = new TreeSet(Arrays.asList(TimeZone.getAvailableIDs()));
+        temp.removeAll(getAliasMap().keySet());
+        return (String[])temp.toArray(new String[temp.size()]);
+    }
+
+    public void TestEnglish() {
+        checkLocale(ULocale.ENGLISH);
+    }
+
+    public void TestFrench() {
+        checkLocale(ULocale.FRENCH);
+    }
+
+    private void checkLocale(ULocale locale) {
+        logln("Checking " + locale);
+        check("Language", locale, languages, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                return ULocale.getDisplayLanguage(code, loc);
+            }
+        });
+        check("Script", locale, scripts, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                // TODO This is kinda a hack; ought to be direct way.
+                return ULocale.getDisplayScript("en_"+code, loc);
+            }
+        });
+        check("Country", locale, countries, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                // TODO This is kinda a hack; ought to be direct way.
+                return ULocale.getDisplayCountry("en_"+code, loc);
+            }
+        });
+        check("Currencies", locale, currencies, currencyFormats, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                Currency s = Currency.getInstance(code);
+                return s.getName(loc, ((Integer)context).intValue(), new boolean[1]);
+            }
+        });
+        // comment this out, because the zone string information is lost
+        // we'd have to access the resources directly to test them
+
+        check("Zones", locale, zones, zoneFormats, new DisplayNameGetter() {
+            // TODO replace once we have real API
+            public String get(ULocale loc, String code, Object context) {
+                return getZoneString(loc, code, ((Integer)context).intValue());
+            }
+        });
+
+    }
+    
+    Map zoneData = new HashMap();
+    
+    private String getZoneString(ULocale locale, String olsonID, int item) {
+        Map data = (Map)zoneData.get(locale);
+        if (data == null) {
+            data = new HashMap();
+            if (SHOW_ALL) System.out.println();
+            if (SHOW_ALL) System.out.println("zones for " + locale);
+            ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(locale);
+            ICUResourceBundle table = bundle.getWithFallback("zoneStrings");
+            for (int i = 0; i < table.getSize(); ++i) {
+                UResourceBundle stringSet = table.get(i);
+                //ICUResourceBundle stringSet = table.getWithFallback(String.valueOf(i));
+                String key = stringSet.getString(0);
+                if (SHOW_ALL) System.out.println("key: " + key);
+                ArrayList list = new ArrayList();
+                for (int j = 1; j < stringSet.getSize(); ++j) {
+                    String entry = stringSet.getString(j);
+                    if (SHOW_ALL) System.out.println("  entry: " + entry);
+                    list.add(entry);
+                }
+                data.put(key, list.toArray(new String[list.size()]));
+            }
+            zoneData.put(locale, data);
+        }
+        String[] strings = (String[]) data.get(olsonID);
+        if (strings == null || item >= strings.length) return olsonID;
+        return strings[item];
+    }
+    
+    static String[][] zonesAliases = {
+        {"America/Atka", "America/Atka"},
+        {"America/Ensenada", "America/Ensenada"},
+        {"America/Fort_Wayne", "America/Fort_Wayne"},
+        {"America/Indiana/Indianapolis", "America/Indiana/Indianapolis"},
+        {"America/Kentucky/Louisville", "America/Kentucky/Louisville"},
+        {"America/Knox_IN", "America/Knox_IN"},
+        {"America/Porto_Acre", "America/Porto_Acre"},
+        {"America/Rosario", "America/Rosario"},
+        {"America/Shiprock", "America/Shiprock"},
+        {"America/Virgin", "America/Virgin"},
+        {"Antarctica/South_Pole", "Antarctica/South_Pole"},
+        {"Arctic/Longyearbyen", "Arctic/Longyearbyen"},
+        {"Asia/Ashkhabad", "Asia/Ashkhabad"},
+        {"Asia/Chungking", "Asia/Chungking"},
+        {"Asia/Dacca", "Asia/Dacca"},
+        {"Asia/Istanbul", "Asia/Istanbul"},
+        {"Asia/Macao", "Asia/Macao"},
+        {"Asia/Tel_Aviv", "Asia/Tel_Aviv"},
+        {"Asia/Thimbu", "Asia/Thimbu"},
+        {"Asia/Ujung_Pandang", "Asia/Ujung_Pandang"},
+        {"Asia/Ulan_Bator", "Asia/Ulan_Bator"},
+        {"Australia/ACT", "Australia/ACT"},
+        {"Australia/Canberra", "Australia/Canberra"},
+        {"Australia/LHI", "Australia/LHI"},
+        {"Australia/NSW", "Australia/NSW"},
+        {"Australia/North", "Australia/North"},
+        {"Australia/Queensland", "Australia/Queensland"},
+        {"Australia/South", "Australia/South"},
+        {"Australia/Tasmania", "Australia/Tasmania"},
+        {"Australia/Victoria", "Australia/Victoria"},
+        {"Australia/West", "Australia/West"},
+        {"Australia/Yancowinna", "Australia/Yancowinna"},
+        {"Brazil/Acre", "Brazil/Acre"},
+        {"Brazil/DeNoronha", "Brazil/DeNoronha"},
+        {"Brazil/East", "Brazil/East"},
+        {"Brazil/West", "Brazil/West"},
+        {"CST6CDT", "CST6CDT"},
+        {"Canada/Atlantic", "Canada/Atlantic"},
+        {"Canada/Central", "Canada/Central"},
+        {"Canada/East-Saskatchewan", "Canada/East-Saskatchewan"},
+        {"Canada/Eastern", "Canada/Eastern"},
+        {"Canada/Mountain", "Canada/Mountain"},
+        {"Canada/Newfoundland", "Canada/Newfoundland"},
+        {"Canada/Pacific", "Canada/Pacific"},
+        {"Canada/Saskatchewan", "Canada/Saskatchewan"},
+        {"Canada/Yukon", "Canada/Yukon"},
+        {"Chile/Continental", "Chile/Continental"},
+        {"Chile/EasterIsland", "Chile/EasterIsland"},
+        {"Cuba", "Cuba"},
+        {"EST", "EST"},
+        {"EST5EDT", "EST5EDT"},
+        {"Egypt", "Egypt"},
+        {"Eire", "Eire"},
+        {"Etc/GMT+0", "Etc/GMT+0"},
+        {"Etc/GMT-0", "Etc/GMT-0"},
+        {"Etc/GMT0", "Etc/GMT0"},
+        {"Etc/Greenwich", "Etc/Greenwich"},
+        {"Etc/Universal", "Etc/Universal"},
+        {"Etc/Zulu", "Etc/Zulu"},
+        {"Europe/Nicosia", "Europe/Nicosia"},
+        {"Europe/Tiraspol", "Europe/Tiraspol"},
+        {"GB", "GB"},
+        {"GB-Eire", "GB-Eire"},
+        {"GMT", "GMT"},
+        {"GMT+0", "GMT+0"},
+        {"GMT-0", "GMT-0"},
+        {"GMT0", "GMT0"},
+        {"Greenwich", "Greenwich"},
+        {"HST", "HST"},
+        {"Hongkong", "Hongkong"},
+        {"Iceland", "Iceland"},
+        {"Iran", "Iran"},
+        {"Israel", "Israel"},
+        {"Jamaica", "Jamaica"},
+        {"Japan", "Japan"},
+        {"Kwajalein", "Kwajalein"},
+        {"Libya", "Libya"},
+        {"MST", "MST"},
+        {"MST7MDT", "MST7MDT"},
+        {"Mexico/BajaNorte", "Mexico/BajaNorte"},
+        {"Mexico/BajaSur", "Mexico/BajaSur"},
+        {"Mexico/General", "Mexico/General"},
+        {"Mideast/Riyadh87", "Mideast/Riyadh87"},
+        {"Mideast/Riyadh88", "Mideast/Riyadh88"},
+        {"Mideast/Riyadh89", "Mideast/Riyadh89"},
+        {"NZ", "NZ"},
+        {"NZ-CHAT", "NZ-CHAT"},
+        {"Navajo", "Navajo"},
+        {"PRC", "PRC"},
+        {"PST8PDT", "PST8PDT"},
+        {"Pacific/Samoa", "Pacific/Samoa"},
+        {"Poland", "Poland"},
+        {"Portugal", "Portugal"},
+        {"ROC", "ROC"},
+        {"ROK", "ROK"},
+        {"Singapore", "Singapore"},
+        {"SystemV/AST4", "SystemV/AST4"},
+        {"SystemV/AST4ADT", "SystemV/AST4ADT"},
+        {"SystemV/CST6", "SystemV/CST6"},
+        {"SystemV/CST6CDT", "SystemV/CST6CDT"},
+        {"SystemV/EST5", "SystemV/EST5"},
+        {"SystemV/EST5EDT", "SystemV/EST5EDT"},
+        {"SystemV/HST10", "SystemV/HST10"},
+        {"SystemV/MST7", "SystemV/MST7"},
+        {"SystemV/MST7MDT", "SystemV/MST7MDT"},
+        {"SystemV/PST8", "SystemV/PST8"},
+        {"SystemV/PST8PDT", "SystemV/PST8PDT"},
+        {"SystemV/YST9", "SystemV/YST9"},
+        {"SystemV/YST9YDT", "SystemV/YST9YDT"},
+        {"Turkey", "Turkey"},
+        {"UCT", "UCT"},
+        {"US/Alaska", "US/Alaska"},
+        {"US/Aleutian", "US/Aleutian"},
+        {"US/Arizona", "US/Arizona"},
+        {"US/Central", "US/Central"},
+        {"US/East-Indiana", "US/East-Indiana"},
+        {"US/Eastern", "US/Eastern"},
+        {"US/Hawaii", "US/Hawaii"},
+        {"US/Indiana-Starke", "US/Indiana-Starke"},
+        {"US/Michigan", "US/Michigan"},
+        {"US/Mountain", "US/Mountain"},
+        {"US/Pacific", "US/Pacific"},
+        {"US/Pacific-New", "US/Pacific-New"},
+        {"US/Samoa", "US/Samoa"},
+        {"UTC", "UTC"},
+        {"Universal", "Universal"},
+        {"W-SU", "W-SU"},
+        {"Zulu", "Zulu"},
+        {"ACT", "ACT"},
+        {"AET", "AET"},
+        {"AGT", "AGT"},
+        {"ART", "ART"},
+        {"AST", "AST"},
+        {"BET", "BET"},
+        {"BST", "BST"},
+        {"CAT", "CAT"},
+        {"CNT", "CNT"},
+        {"CST", "CST"},
+        {"CTT", "CTT"},
+        {"EAT", "EAT"},
+        {"ECT", "ECT"},
+        {"IET", "IET"},
+        {"IST", "IST"},
+        {"JST", "JST"},
+        {"MIT", "MIT"},
+        {"NET", "NET"},
+        {"NST", "NST"},
+        {"PLT", "PLT"},
+        {"PNT", "PNT"},
+        {"PRT", "PRT"},
+        {"PST", "PST"},
+        {"SST", "SST"},
+        {"VST", "VST"},
+    };
+
+    /**
+     * Hack to get code list
+     * @return
+     */
+    private static String[] getCodes(ULocale locale, String tableName) {
+        // TODO remove Ugly Hack
+        // get stuff
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(locale);
+        ICUResourceBundle table = bundle.getWithFallback(tableName);
+        // copy into array
+        ArrayList stuff = new ArrayList();
+        for (Enumeration keys = table.getKeys(); keys.hasMoreElements();) {
+            stuff.add(keys.nextElement());
+        }
+        String[] result = new String[stuff.size()];
+        return (String[]) stuff.toArray(result);
+        //return new String[] {"Latn", "Cyrl"};
+    }
+
+    /**
+     * Add two unknown strings, just to make sure they get passed through without colliding
+     * @param strings
+     * @return
+     */
+    private String[] addUnknown(String[] strings, int len) {
+        String[] result = new String[strings.length + 2];
+        result[0] = "x1unknown".substring(0,len);
+        result[1] = "y1nknown".substring(0,len);
+        System.arraycopy(strings,0,result,2,strings.length);
+        return result;
+    }
+    
+    Map bogusZones = null;
+    
+    private Map getAliasMap() {
+        if (bogusZones == null) {
+            bogusZones = new TreeMap();
+            for (int i = 0; i < zonesAliases.length; ++i) {
+                bogusZones.put(zonesAliases[i][0], zonesAliases[i][1]);
+            }
+        }
+        return bogusZones;
+    }
+
+
+    private void check(String type, ULocale locale, 
+      String[] codes, Object[] contextList, DisplayNameGetter getter) {
+        if (contextList == null) contextList = NO_CONTEXT;
+        for (int k = 0; k < contextList.length; ++k) codeToName[k].clear();
+        for (int j = 0; j < codes.length; ++j) {
+            String code = codes[j];
+            for (int k = 0; k < contextList.length; ++k) {
+                Object context = contextList[k];
+                String name = getter.get(locale, code, context);
+                if (name == null || name.length() == 0) {
+                    errln(
+                        "Null or Zero-Length Display Name\t" + type
+                        + "\t(" + ((context != null) ? context : "") + ")"
+                        + ":\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + " [" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                    );
+                    continue;            
+                }
+                String otherCode = (String) codeToName[k].get(name);
+                if (otherCode != null) {
+                    errln(
+                        "Display Names collide for\t" + type                        + "\t(" + ((context != null) ? context : "") + ")"
+                        + ":\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + " [" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                        + "\t& " + otherCode + " [" + getter.get(ULocale.ENGLISH, otherCode, context) + "]"
+                        + "\t=> " + name
+                    );
+                } else {
+                    codeToName[k].put(name, code);
+                    if (SHOW_ALL) logln(
+                        type 
+                        + " (" + ((context != null) ? context : "") + ")"
+                        + "\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + "[" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                        + "\t=> " + name 
+                    );
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ElapsedTimer.java b/src/com/ibm/icu/dev/test/util/ElapsedTimer.java
new file mode 100644
index 0000000..946c3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ElapsedTimer.java
@@ -0,0 +1,106 @@
+//
+//  ElapsedTimer.java
+//
+//  Created by Steven R. Loomis on 11/11/2005.
+//  Copyright 2005-2006 IBM. All rights reserved.
+//
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.*;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.text.MessageFormat;
+
+
+/**
+ * Simple stopwatch timer.
+ * Usage:   { ElapsedTimer et = new ElapsedTimer(); 
+ *            do_some_stuff;  
+ *            System.out.println("It took " + et + " to do stuff."); }
+ *
+ * Advanced:   { ElapsedTimer et = new ElapsedTimer("Thing2's time: {0}");  // messageformat pattern
+ *            do_thing_2();  
+ *            System.out.println(et.toString()); }
+ *
+ * More advanced:  NumberFormat and/or MessageFormat can be provided in the constructor
+ */
+public final class ElapsedTimer {
+
+    /**
+     * Convenience method to print the elasped time (in milliseconds) 
+     */
+    public static String elapsedTime(long start, long end) {
+        return diffTime(getFormat(), start, end);
+    }
+
+    public static String elapsedTime(long start) {
+        return diffTime(getFormat(), start, System.currentTimeMillis());
+    }
+    
+    // class
+
+    private long startTime = System.currentTimeMillis();
+    private NumberFormat myDurationFormat = null;
+    private MessageFormat myMsgFormat = null;
+
+    public ElapsedTimer() {            
+    }
+    
+    public ElapsedTimer(MessageFormat aMsgFmt) {
+        myMsgFormat = aMsgFmt;
+    }
+
+    public ElapsedTimer(NumberFormat aNumFmt) {
+        myDurationFormat = aNumFmt;
+    }
+    
+    public ElapsedTimer(MessageFormat aMsgFmt, NumberFormat aNumFmt) {
+        myMsgFormat = aMsgFmt;
+        myDurationFormat = aNumFmt;
+    }
+
+    public ElapsedTimer(String pattern) {
+        myMsgFormat = new MessageFormat(pattern);
+    }
+
+    public ElapsedTimer(String pattern, NumberFormat aNumFmt) {
+        myMsgFormat = new MessageFormat(pattern);
+        myDurationFormat = aNumFmt;
+    }
+
+    /**
+     * @return elapsed time in seconds since object creation
+     */
+    public final String toString() { 
+        long endTime = System.currentTimeMillis();
+        String duration = diffTime(myDurationFormat, startTime, endTime);
+        if(myMsgFormat == null) {
+            return duration;
+        } else {
+            return myMsgFormat.format(new Object[] {duration});
+        }
+    }
+
+    private static NumberFormat gFormat = null;
+    
+    private static NumberFormat getFormat() {
+        if(gFormat == null) {
+            gFormat = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+        }
+        return gFormat; 
+    }
+    
+    private static String diffTime(NumberFormat fmt, long start, long end) {
+        if(fmt==null) {
+            fmt = getFormat();
+        }
+        synchronized(fmt) {
+            long age = end - start;
+            double diff = (double)age;
+            diff = diff/(double)1000.0; // millis per second
+            return fmt.format(diff);
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/dev/test/util/Equator.java b/src/com/ibm/icu/dev/test/util/Equator.java
new file mode 100644
index 0000000..e3b0353
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Equator.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+public interface Equator {
+    /**
+      * Comparator function. If overridden, must handle case of null,
+      * and compare any two objects that could be compared.
+      * Must obey normal rules of symmetry: a=b => b=a
+      * and transitivity: a=b & b=c => a=b)
+      * @param a
+      * @param b
+      * @return true if a and b are equal
+      */
+     public boolean isEqual(Object a, Object b);
+
+    /**
+     * Must obey normal rules: a=b => getHashCode(a)=getHashCode(b)
+     * @param object
+     * @return a hash code for the object
+     */
+    public int getHashCode(Object object);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/FieldsSet.java b/src/com/ibm/icu/dev/test/util/FieldsSet.java
new file mode 100644
index 0000000..f60a7d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/FieldsSet.java
@@ -0,0 +1,241 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author srl
+ * 
+ * analog of FieldsSet in C++
+ */
+public class FieldsSet {
+    public static final int NO_ENUM = -1;
+
+    protected FieldsSet(int whichEnum, int fieldsCount) {
+        if (fieldsCount <= 0 && whichEnum != NO_ENUM) {
+            fieldsCount = DebugUtilities.enumCount(whichEnum);
+        }
+        fEnum = whichEnum;
+        fFieldsCount = fieldsCount;
+        if(fieldsCount<0) {
+            throw new InternalError("Preposterous field count " + fieldsCount);
+        }
+        fValues = new int[fFieldsCount];
+        fIsSet = new boolean[fFieldsCount];
+        clear();
+    }
+
+    protected int fEnum = NO_ENUM;
+
+    protected int fFieldsCount = 0;
+
+    protected int fValues[] = null;
+
+    protected boolean fIsSet[] = null;
+
+    public void clear() {
+        for (int i = 0; i < fFieldsCount; i++) {
+            clear(i);
+        }
+    }
+
+    public void clear(int field) {
+        fValues[field] = -1;
+        fIsSet[field] = false;
+    }
+
+    public void set(int field, int amount) {
+        fValues[field] = amount;
+        fIsSet[field] = true;
+    }
+
+    public boolean isSet(int field) {
+        return fIsSet[field];
+    }
+
+    public int get(int field) {
+        if (fIsSet[field]) {
+            return fValues[field];
+        } else {
+            return -1;
+        }
+    }
+
+    public boolean isSameType(FieldsSet other) {
+        return ((other.fEnum == fEnum) && (other.fFieldsCount == fFieldsCount));
+    }
+
+    public int fieldCount() {
+        return fFieldsCount;
+    }
+
+    /**
+     * @param other  "expected" set to match against
+     * @return a formatted string listing which fields are set in this, with the
+     *         comparison made agaainst those fields in other, or, 'null' if there is no difference.
+     */
+    public String diffFrom(FieldsSet other) {
+        StringBuffer str = new StringBuffer();
+        if(!isSameType(other)) {
+            throw new IllegalArgumentException("U_ILLEGAL_ARGUMENT_ERROR: FieldsSet of a different type!");
+        }
+        for (int i=0; i<fieldCount(); i++) {
+            if (isSet(i)) {
+                int myVal = get(i);
+                int theirVal = other.get(i);
+                
+                if(fEnum != NO_ENUM) {
+                    String fieldName = DebugUtilities.enumString(fEnum, i);
+                    
+                    String aval = Integer.toString(myVal);
+                    String bval = Integer.toString(theirVal);
+
+                    str.append(fieldName +"="+aval+" not "+bval+", ");
+                } else {
+                    str.append(Integer.toString(i) + "=" + myVal+" not " + theirVal+", ");
+                }
+            }
+        }
+        if(str.length()==0) {
+            return null;
+        }
+        return str.toString();
+    }
+
+    /**
+     * @param str string to parse
+     * @param status formatted string for status
+     */
+    public int parseFrom(String str) {
+        return parseFrom(str, null);
+    }
+
+    public int parseFrom(String str, FieldsSet inheritFrom) {
+        int goodFields = 0;
+        
+        String[] fields = Utility.split(str, ',');
+        for(int i=0;i<fields.length;i++) {
+            String fieldStr = fields[i];
+            String kv[] = Utility.split(fieldStr, '=');
+            if(kv.length < 1 || kv.length > 2) {
+                throw new InternalError("split around '=' failed: " + fieldStr);
+            }
+            String key = kv[0];
+            String value = "";
+            if(kv.length>1) {
+                value = kv[1];
+            }
+            
+            int field = handleParseName(inheritFrom, key, value);
+            if(field != -1) {
+                handleParseValue(inheritFrom, field, value);
+                goodFields++;
+            }
+        }
+
+        return goodFields;
+    }
+
+    /**
+     * Callback interface for subclass. This function is called when parsing a
+     * field name, such as "MONTH" in "MONTH=4". Base implementation is to
+     * lookup the enum value using udbg_* utilities, or else as an integer if
+     * enum is not available.
+     * 
+     * If there is a special directive, the implementer can catch it here and
+     * return -1 after special processing completes.
+     * 
+     * @param inheritFrom  the set inheriting from - may be null.
+     * @param name  the field name (key side)
+     * @param substr  the string in question (value side)
+     * @param status  error status - set to error for failure.
+     * @return field number, or negative if field should be skipped.
+     */
+    protected int handleParseName(FieldsSet inheritFrom, String name,
+            String substr) {
+        int field = -1;
+        if(fEnum != NO_ENUM) {
+            field = DebugUtilities.enumByString(fEnum, name);
+        }
+        if(field < 0) {
+            field = Integer.parseInt(name);
+        }
+        return field;
+    }
+
+    /**
+     * Callback interface for subclass. Base implementation is to call
+     * parseValueDefault(...)
+     * 
+     * @param inheritFrom  the set inheriting from - may be null.
+     * @param field   which field is being parsed
+     * @param substr  the string in question (value side)
+     * @param status  error status - set to error for failure.
+     * @see parseValueDefault
+     */
+    protected void handleParseValue(FieldsSet inheritFrom, int field,
+            String substr) {
+        parseValueDefault(inheritFrom, field, substr);
+    }
+
+    /**
+     * the default implementation for handleParseValue. Base implementation is
+     * to parse a decimal integer value, or inherit from inheritFrom if the
+     * string is 0-length. Implementations of this function should call
+     * set(field,...) on successful parse.
+     * 
+     * @see handleParseValue
+     */
+    protected void parseValueDefault(FieldsSet inheritFrom, int field,
+            String substr) {
+        if(substr.length()==0) {
+            if(inheritFrom == null) {
+                throw new InternalError("Trying to inherit from field " + field + " but inheritFrom is null");
+            }
+            if(!inheritFrom.isSet(field)) {
+                throw new InternalError("Trying to inherit from field " + field + " but inheritFrom["+field+"] is  not set");
+            }
+            set(field,inheritFrom.get(field));
+        } else {
+            int value = Integer.parseInt(substr);
+            set(field, value);
+        }
+    }
+
+    /**
+     * convenience implementation for handleParseValue attempt to load a value
+     * from an enum value using udbg_enumByString() if fails, will call
+     * parseValueDefault()
+     * 
+     * @see handleParseValue
+     */
+    protected void parseValueEnum(int type, FieldsSet inheritFrom, int field,
+            String substr) {
+        int value = DebugUtilities.enumByString(type, substr);
+        if(value>=0) {
+            set(field,value);
+            return;
+        }
+        parseValueDefault(inheritFrom, field, substr);
+    }
+    
+    public String fieldName(int field) {
+        return (fEnum!=NO_ENUM)?DebugUtilities.enumString(fEnum, field):Integer.toString(field);
+    }
+    
+    public String toString() {
+        String str = getClass().getName()+" ["+fFieldsCount+","
+        +(fEnum!=NO_ENUM?DebugUtilities.typeString(fEnum):Integer.toString(fEnum))+"]: ";
+        for(int i=0;i<fFieldsCount;i++) {
+            if(isSet(i)) {
+                str = str + fieldName(i)+"="+get(i)+",";
+            }
+        }
+        return str; 
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/FileUtilities.java b/src/com/ibm/icu/dev/test/util/FileUtilities.java
new file mode 100644
index 0000000..61aea32
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/FileUtilities.java
@@ -0,0 +1,82 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Locale;
+
+public class FileUtilities {
+    public static void appendFile(String filename, String encoding, PrintWriter output) throws IOException {
+        appendFile(filename, encoding, output, null);
+    }
+    
+    public static void appendFile(String filename, String encoding, PrintWriter output, String[] replacementList) throws IOException {
+        BufferedReader br = BagFormatter.openReader("", filename, encoding);
+        /*
+        FileInputStream fis = new FileInputStream(filename);
+        InputStreamReader isr = (encoding == UTF8_UNIX || encoding == UTF8_WINDOWS) ? new InputStreamReader(fis, "UTF8") :  new InputStreamReader(fis);
+        BufferedReader br = new BufferedReader(isr, 32*1024);
+        */
+        while (true) {
+            String line = br.readLine();
+            if (line == null) break;
+            if (replacementList != null) {
+                for (int i = 0; i < replacementList.length; i += 2) {
+                    line = replace(line, replacementList[i], replacementList[i+1]);
+                }
+            }
+            output.println(line);
+        }
+    }
+
+    /**
+     * Replaces all occurances of piece with replacement, and returns new String
+     */
+    public static String replace(String source, String piece, String replacement) {
+        if (source == null || source.length() < piece.length()) return source;
+        int pos = 0;
+        while (true) {
+            pos = source.indexOf(piece, pos);
+            if (pos < 0) return source;
+            source = source.substring(0,pos) + replacement + source.substring(pos + piece.length());
+            pos += replacement.length();
+        }
+    }
+    
+    public static String replace(String source, String[][] replacements) {
+        return replace(source, replacements, replacements.length);
+    }    
+    
+    public static String replace(String source, String[][] replacements, int count) {
+        for (int i = 0; i < count; ++i) {
+            source = replace(source, replacements[i][0], replacements[i][1]);
+        }
+        return source;
+    }    
+    
+    public static String replace(String source, String[][] replacements, boolean reverse) {
+        if (!reverse) return replace(source, replacements);
+        for (int i = 0; i < replacements.length; ++i) {
+            source = replace(source, replacements[i][1], replacements[i][0]);
+        }
+        return source;
+    }
+    
+    public static String anchorize(String source) {
+        String result = source.toLowerCase(Locale.ENGLISH).replaceAll("[^\\p{L}\\p{N}]+", "_");
+        if (result.endsWith("_")) result = result.substring(0,result.length()-1);
+        if (result.startsWith("_")) result = result.substring(1);
+        return result;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java b/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
new file mode 100644
index 0000000..04213de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
@@ -0,0 +1,114 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUBinary;
+import java.io.IOException;
+import java.io.ByteArrayInputStream;
+
+/**
+* Testing class for Trie. Tests here will be simple, since both CharTrie and 
+* IntTrie are very similar and are heavily used in other parts of ICU4J.
+* Codes using Tries are expected to have detailed tests.
+* @author Syn Wee Quek
+* @since release 2.1 Jan 01 2002
+*/
+public final class ICUBinaryTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public ICUBinaryTest()
+    {
+    }
+      
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        ICUBinaryTest test = new ICUBinaryTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing icubinarytest");
+        }
+    }
+    
+    /**
+     * Testing the constructors of the Tries
+     */
+    public void TestReadHeader() 
+    {
+        byte formatid[] = {1, 2, 3, 4};
+        byte array[] = {
+            // header size
+            0, 0x18, 
+            // magic numbers
+            (byte)0xda, 0x27, 
+            // size
+            0, 0, 
+            // reserved word
+            0, 0, 
+            // bigendian
+            1, 
+            // charset 
+            0,
+            // charsize
+            2, 
+            // reserved byte
+            0, 
+            // data format id
+            1, 2, 3, 4,
+            // dataVersion
+            1, 2, 3, 4,
+            // unicodeVersion
+            3, 2, 0, 0
+        };
+        ByteArrayInputStream inputstream = new ByteArrayInputStream(array);
+        ICUBinary.Authenticate authenticate 
+                = new ICUBinary.Authenticate() {
+                    public boolean isDataVersionAcceptable(byte version[])
+                    {
+                        return version[0] == 1;
+                    }
+                };
+        // check full data version
+        try {
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+        } catch (IOException e) {
+            errln("Failed: Lenient authenticate object should pass ICUBinary.readHeader");
+        }
+        // no restriction to the data version
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, null);
+        } catch (IOException e) {
+            errln("Failed: Null authenticate object should pass ICUBinary.readHeader");
+        }
+        // lenient data version
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+        } catch (IOException e) {
+            errln("Failed: Lenient authenticate object should pass ICUBinary.readHeader");
+        }
+        // changing the version to an incorrect one, expecting failure
+        array[16] = 2;
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+            errln("Failed: Invalid version number should not pass authenticate object");
+        } catch (IOException e) {
+            logln("PASS: ICUBinary.readHeader with invalid version number failed as expected");
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java b/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
new file mode 100644
index 0000000..7bc46be
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
@@ -0,0 +1,418 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+ * Provides a general interface for Unicode Properties, and
+ * extracting sets based on those values.
+ * @author Davis
+ */
+
+public class ICUPropertyFactory extends UnicodeProperty.Factory {
+        
+    static class ICUProperty extends UnicodeProperty {
+            protected int propEnum = Integer.MIN_VALUE;
+            
+            protected ICUProperty(String propName, int propEnum) {
+                setName(propName);
+                this.propEnum = propEnum;
+                setType(internalGetPropertyType(propEnum));
+            }
+
+            boolean shownException = false;
+            
+            public String _getValue(int codePoint) {
+                switch(propEnum) {
+                    case UProperty.AGE: String temp = UCharacter.getAge(codePoint).toString();
+                        if (temp.equals("0.0.0.0")) return "unassigned";
+                        if (temp.endsWith(".0.0")) return temp.substring(0,temp.length()-4);
+                        return temp;
+                    case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(UCharacter.getMirror(codePoint));
+                    case UProperty.CASE_FOLDING: return UCharacter.foldCase(UTF16.valueOf(codePoint),true);
+                    case UProperty.ISO_COMMENT: return UCharacter.getISOComment(codePoint);
+                    case UProperty.LOWERCASE_MAPPING: return UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                    case UProperty.NAME: return UCharacter.getName(codePoint);
+                    case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(UCharacter.foldCase(codePoint,true));
+                    case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(UCharacter.toLowerCase(codePoint));
+                    case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(UCharacter.toTitleCase(codePoint));
+                    case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(UCharacter.toUpperCase(codePoint));
+                    case UProperty.TITLECASE_MAPPING: return UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null);
+                    case UProperty.UNICODE_1_NAME: return UCharacter.getName1_0(codePoint);
+                    case UProperty.UPPERCASE_MAPPING: return UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                    case NFC: return Normalizer.normalize(codePoint, Normalizer.NFC);
+                    case NFD: return Normalizer.normalize(codePoint, Normalizer.NFD);
+                    case NFKC: return Normalizer.normalize(codePoint, Normalizer.NFKC);
+                    case NFKD: return Normalizer.normalize(codePoint, Normalizer.NFKD);
+                    case isNFC: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFC).equals(UTF16.valueOf(codePoint)));
+                    case isNFD: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFD).equals(UTF16.valueOf(codePoint)));
+                    case isNFKC: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFKC).equals(UTF16.valueOf(codePoint)));
+                    case isNFKD: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFKD).equals(UTF16.valueOf(codePoint)));
+                    case isLowercase: return String.valueOf(UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                    case isUppercase: return String.valueOf(UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                    case isTitlecase: return String.valueOf(UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null).equals(UTF16.valueOf(codePoint)));
+                    case isCasefolded: return String.valueOf(UCharacter.foldCase(UTF16.valueOf(codePoint),true).equals(UTF16.valueOf(codePoint)));
+                    case isCased: return String.valueOf(UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                }
+                if (propEnum < UProperty.INT_LIMIT) {
+                    int enumValue = -1;
+                    String value = null;
+                    try {
+                        enumValue = UCharacter.getIntPropertyValue(codePoint, propEnum);
+                        if (enumValue >= 0) value = fixedGetPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+                    } catch (IllegalArgumentException e) {
+                        if (!shownException) {
+                            System.out.println("Fail: " + getName() + ", " + Integer.toHexString(codePoint));
+                            shownException = true;
+                        }
+                    }
+                    return value != null ? value : String.valueOf(enumValue);
+                } else if (propEnum < UProperty.DOUBLE_LIMIT) {
+                    double num = UCharacter.getUnicodeNumericValue(codePoint);
+                    if (num == UCharacter.NO_NUMERIC_VALUE) return null;
+                    return Double.toString(num);
+                    // TODO: Fix HACK -- API deficient
+                }
+                return null;
+            }
+
+            /**
+             * @param valueAlias null if unused.
+             * @param valueEnum -1 if unused
+             * @param nameChoice
+             * @return
+             */
+            private String getFixedValueAlias(String valueAlias, int valueEnum, int nameChoice) {
+                if (propEnum >= UProperty.STRING_START) {
+                    if (nameChoice != UProperty.NameChoice.LONG) return null;
+                    return "<string>";
+                } else if (propEnum >= UProperty.DOUBLE_START) {
+                    if (nameChoice != UProperty.NameChoice.LONG) return null;
+                    return "<number>";
+                }
+                if (valueAlias != null && !valueAlias.equals("<integer>")) {
+                    valueEnum = fixedGetPropertyValueEnum(propEnum,valueAlias);
+                }
+                // because these are defined badly, there may be no normal (long) name.
+                // if there is 
+                String result = fixedGetPropertyValueName(propEnum, valueEnum, nameChoice);
+                if (result != null) return result;
+                // HACK try other namechoice
+                if (nameChoice == UProperty.NameChoice.LONG) {
+                    result = fixedGetPropertyValueName(propEnum,valueEnum, UProperty.NameChoice.SHORT);
+                    if (result != null) return result;
+                    if (propEnum == UProperty.CANONICAL_COMBINING_CLASS) return null;
+                    return "<integer>";
+               }
+               return null;
+            }
+
+            private static int fixedGetPropertyValueEnum(int propEnum, String valueAlias) {
+                try {
+                    return UCharacter.getPropertyValueEnum(propEnum, valueAlias);
+                } catch (Exception e) {
+                    return Integer.parseInt(valueAlias);
+                }
+            }
+    
+            static Map fixSkeleton = new HashMap();
+            private static String fixedGetPropertyValueName(int propEnum, int valueEnum, int nameChoice) {
+                
+                try {
+                    String value = UCharacter.getPropertyValueName(propEnum,valueEnum,nameChoice);
+                    String newValue = (String) fixSkeleton.get(value);
+                    if (newValue == null) {
+                        newValue = value;
+                        if (propEnum == UProperty.JOINING_GROUP) {
+                            newValue = newValue.toLowerCase(Locale.ENGLISH);
+                        } 
+                        newValue = regularize(newValue, true);
+                        fixSkeleton.put(value, newValue);
+                    }
+                    return newValue;
+                } catch (Exception e) {
+                    return null;
+                }
+            }
+
+            public List _getNameAliases(List result) {
+                if (result == null) result = new ArrayList();
+                String alias = String_Extras.get(propEnum);
+                if (alias == null) alias = Binary_Extras.get(propEnum);
+                if (alias != null) {
+                    addUnique(alias, result);
+                } else {
+                    addUnique(getFixedPropertyName(propEnum, UProperty.NameChoice.SHORT), result);
+                    addUnique(getFixedPropertyName(propEnum, UProperty.NameChoice.LONG), result);
+                }
+                return result;
+            }
+            
+            public String getFixedPropertyName(int propName, int nameChoice) {
+                try {
+                    return UCharacter.getPropertyName(propEnum, nameChoice);
+                } catch (IllegalArgumentException e) {
+                    return null;
+                }
+            }
+
+            private Map cccHack = new HashMap();
+            boolean needCccHack = true;
+            
+            public List _getAvailableValues(List result) {
+                if (result == null) result = new ArrayList();
+                if (propEnum == UProperty.AGE) {
+                    addAllUnique(new String[] {
+                        "unassigned","1.1","2.0","2.1","3.0","3.1","3.2","4.0"},
+                        result);
+                    return result;
+                }
+                if (propEnum < UProperty.INT_LIMIT) {
+                    if (Binary_Extras.isInRange(propEnum)) {
+                        propEnum = UProperty.BINARY_START; // HACK
+                    }
+                    int start = UCharacter.getIntPropertyMinValue(propEnum);
+                    int end = UCharacter.getIntPropertyMaxValue(propEnum);
+                    for (int i = start; i <= end; ++i) {
+                        String alias = getFixedValueAlias(null, i, UProperty.NameChoice.LONG);
+                        String alias2 = getFixedValueAlias(null, i, UProperty.NameChoice.SHORT);
+                        if (alias == null) {
+                            alias = alias2;
+                            if (alias == null && propEnum == UProperty.CANONICAL_COMBINING_CLASS) {
+                                alias = String.valueOf(i);
+                            }
+                        }
+                        if (needCccHack && propEnum == UProperty.CANONICAL_COMBINING_CLASS) { // HACK
+                            cccHack.put(alias, String.valueOf(i));
+                        }
+                        //System.out.println(propertyAlias + "\t" + i + ":\t" + alias);
+                        addUnique(alias, result);
+                    }
+                    needCccHack = false;
+                } else {
+                    String alias = getFixedValueAlias(null, -1,UProperty.NameChoice.LONG);
+                    addUnique(alias, result);
+                }
+                return result;
+            }
+
+            public List _getValueAliases(String valueAlias, List result) {
+                if (result == null) result = new ArrayList();
+                if (propEnum == UProperty.AGE) {
+                    addUnique(valueAlias, result);
+                    return result;
+                }
+                if (propEnum == UProperty.CANONICAL_COMBINING_CLASS) {
+                    addUnique(cccHack.get(valueAlias), result); // add number
+                }
+                addUnique(getFixedValueAlias(valueAlias, -1, UProperty.NameChoice.SHORT), result);
+                addUnique(getFixedValueAlias(valueAlias, -1, UProperty.NameChoice.LONG), result);
+                return result;
+            }
+
+
+            /* (non-Javadoc)
+             * @see com.ibm.icu.dev.test.util.UnicodePropertySource#getPropertyType()
+             */
+            private int internalGetPropertyType(int prop) {
+                switch(prop) {
+                    case UProperty.AGE: 
+                    case UProperty.BLOCK: 
+                    case UProperty.SCRIPT: 
+                        return UnicodeProperty.CATALOG;
+                    case UProperty.ISO_COMMENT:
+                    case UProperty.NAME:
+                    case UProperty.UNICODE_1_NAME: 
+                        return UnicodeProperty.MISC;
+                    case UProperty.BIDI_MIRRORING_GLYPH:
+                    case UProperty.CASE_FOLDING:
+                    case UProperty.LOWERCASE_MAPPING:
+                    case UProperty.SIMPLE_CASE_FOLDING: 
+                    case UProperty.SIMPLE_LOWERCASE_MAPPING:
+                    case UProperty.SIMPLE_TITLECASE_MAPPING: 
+                    case UProperty.SIMPLE_UPPERCASE_MAPPING:
+                    case UProperty.TITLECASE_MAPPING: 
+                    case UProperty.UPPERCASE_MAPPING: 
+                        return UnicodeProperty.EXTENDED_STRING;
+                }
+                if (prop < UProperty.BINARY_START) return UnicodeProperty.UNKNOWN;
+                if (prop < UProperty.BINARY_LIMIT) return UnicodeProperty.BINARY;
+                if (prop < UProperty.INT_START) return UnicodeProperty.EXTENDED_BINARY;
+                if (prop < UProperty.INT_LIMIT) return UnicodeProperty.ENUMERATED;
+                if (prop < UProperty.DOUBLE_START) return UnicodeProperty.EXTENDED_ENUMERATED;
+                if (prop < UProperty.DOUBLE_LIMIT) return UnicodeProperty.NUMERIC;
+                if (prop < UProperty.STRING_START) return UnicodeProperty.EXTENDED_NUMERIC;
+                if (prop < UProperty.STRING_LIMIT) return UnicodeProperty.STRING;
+                return UnicodeProperty.EXTENDED_STRING;
+            }
+
+            /* (non-Javadoc)
+             * @see com.ibm.icu.dev.test.util.UnicodeProperty#getVersion()
+             */
+            public String _getVersion() {
+                return VersionInfo.ICU_VERSION.toString();
+            }
+        }
+
+        /*{
+            matchIterator = new UnicodeSetIterator(
+                new UnicodeSet("[^[:Cn:]-[:Default_Ignorable_Code_Point:]]"));
+        }*/
+
+
+        
+        /*
+         * Other Missing Functions:
+            Expands_On_NFC
+            Expands_On_NFD
+            Expands_On_NFKC
+            Expands_On_NFKD
+            Composition_Exclusion
+            Decomposition_Mapping
+            FC_NFKC_Closure
+            ISO_Comment
+            NFC_Quick_Check
+            NFD_Quick_Check
+            NFKC_Quick_Check
+            NFKD_Quick_Check
+            Special_Case_Condition
+            Unicode_Radical_Stroke
+         */
+        
+         static final Names Binary_Extras = new Names(UProperty.BINARY_LIMIT,
+            new String[] {
+            "isNFC", "isNFD", "isNFKC", "isNFKD",
+            "isLowercase", "isUppercase", "isTitlecase", "isCasefolded", "isCased",
+        });
+
+        static final Names String_Extras = new Names(UProperty.STRING_LIMIT,
+            new String[] {
+            "toNFC", "toNFD", "toNFKC", "toNKFD",
+        });
+
+        static final int
+            isNFC = UProperty.BINARY_LIMIT,
+            isNFD = UProperty.BINARY_LIMIT+1,
+            isNFKC = UProperty.BINARY_LIMIT+2,
+            isNFKD = UProperty.BINARY_LIMIT+3,
+            isLowercase = UProperty.BINARY_LIMIT+4,
+            isUppercase = UProperty.BINARY_LIMIT+5,
+            isTitlecase = UProperty.BINARY_LIMIT+6,
+            isCasefolded = UProperty.BINARY_LIMIT+7,
+            isCased = UProperty.BINARY_LIMIT+8,
+
+            NFC  = UProperty.STRING_LIMIT,
+            NFD  = UProperty.STRING_LIMIT+1,
+            NFKC = UProperty.STRING_LIMIT+2,
+            NFKD = UProperty.STRING_LIMIT+3
+            ;
+        
+        private ICUPropertyFactory() {
+            Collection c = getInternalAvailablePropertyAliases(new ArrayList());
+            Iterator it = c.iterator();
+            while (it.hasNext()) {
+                add(getInternalProperty((String)it.next()));
+            }
+        }
+        
+        private static ICUPropertyFactory singleton = null;
+        
+        public static synchronized ICUPropertyFactory make() {
+            if (singleton != null) return singleton;
+            singleton = new ICUPropertyFactory();
+            return singleton;
+        }
+        
+        public List getInternalAvailablePropertyAliases(List result) {
+            int[][] ranges = {
+                {UProperty.BINARY_START,    UProperty.BINARY_LIMIT},
+                {UProperty.INT_START,       UProperty.INT_LIMIT},
+                {UProperty.DOUBLE_START,    UProperty.DOUBLE_LIMIT},
+                {UProperty.STRING_START,    UProperty.STRING_LIMIT},
+            };
+            for (int i = 0; i < ranges.length; ++i) {
+                for (int j = ranges[i][0]; j < ranges[i][1]; ++j) {
+                    String alias = UCharacter.getPropertyName(j, UProperty.NameChoice.LONG);
+                    UnicodeProperty.addUnique(alias, result);
+                    if (!result.contains(alias)) result.add(alias);
+                }
+            }
+            result.addAll(String_Extras.getNames());
+            result.addAll(Binary_Extras.getNames());
+            return result;
+        }
+       
+        public UnicodeProperty getInternalProperty(String propertyAlias) {
+            int propEnum;
+            main:
+            {
+                int possibleItem = Binary_Extras.get(propertyAlias);
+                if (possibleItem >= 0) {
+                    propEnum = possibleItem;
+                    break main;
+                }
+                possibleItem = String_Extras.get(propertyAlias);
+                if (possibleItem >= 0) {
+                    propEnum = possibleItem;
+                    break main;
+                }
+                propEnum = UCharacter.getPropertyEnum(propertyAlias);
+            }
+            return new ICUProperty(propertyAlias, propEnum);
+        }
+ 
+        /* (non-Javadoc)
+         * @see com.ibm.icu.dev.test.util.UnicodePropertySource#getProperty(java.lang.String)
+         */
+    // TODO file bug on getPropertyValueName for Canonical_Combining_Class  
+    
+    public static class Names {
+        private String[] names;
+        private int base;
+        public Names(int base, String[] names) {
+            this.base = base;
+            this.names = names;
+        }
+        public int get(String name) {
+            for (int i = 0; i < names.length; ++i) {
+                if (name.equalsIgnoreCase(names[i])) return base + i;
+            }
+            return -1;
+        }
+        public String get(int number) {
+            number -= base;
+            if (number < 0 || names.length <= number) return null;
+            return names[number];
+        }
+        public boolean isInRange(int number) {
+            number -= base;
+            return (0 <= number && number < names.length);
+        }
+        public List getNames() {
+            return Arrays.asList(names);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java b/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
new file mode 100644
index 0000000..897d938
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -0,0 +1,1111 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.JarURLConnection;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+
+public final class ICUResourceBundleTest extends TestFmwk {
+    private static final ClassLoader testLoader = ICUResourceBundleTest.class.getClassLoader();
+
+    public static void main(String args[]) throws Exception {
+        ICUResourceBundleTest test = new ICUResourceBundleTest();
+        test.run(args);
+
+    }
+    public void TestGetResources(){
+        try{
+            // It does not work well in eclipse plug-in test because of class loader configuration??
+            // For now, specify resource path explicitly in this test case
+            //Enumeration en = testLoader.getResources("META-INF");
+            Enumeration en = testLoader.getResources("com.ibm.icu.dev.data");
+            for(;en.hasMoreElements();) {
+                URL url = (URL)en.nextElement();
+                if (url == null) {
+                    warnln("could not load resource data");
+                    return;
+                }
+                URLConnection c = url.openConnection();
+
+                if (c instanceof JarURLConnection) {
+                    JarURLConnection jc = (JarURLConnection)c;
+                    JarEntry je = jc.getJarEntry();
+                    logln("jar entry: " + je.toString()); 
+                } else {
+                    InputStream is = c.getInputStream();
+                    logln("input stream:");
+                    InputStreamReader r = new InputStreamReader(is);
+                    BufferedReader br = new BufferedReader(r);
+                    String line = null;
+                    int n = 0;
+                    while ((line = br.readLine()) != null) {
+                        logln("  " + ++n + ": " + line);
+                    }
+                }
+            }
+        }catch(SecurityException ex) {
+            warnln("could not load resource data: " + ex);
+            ex.printStackTrace();
+    }catch(NullPointerException ex) {
+        // thrown by ibm 1.4.2 windows jvm security manager
+        warnln("could not load resource data: " + ex);
+        }catch(Exception ex){
+        ex.printStackTrace();
+            errln("Unexpected exception: "+ ex);
+        }
+    }
+    public void TestResourceBundleWrapper(){
+        UResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", "da_DK");
+        Object o = bundle.getObject("holidays");
+        if(o instanceof Holiday[] ){
+            logln("wrapper mechanism works for Weekend data");
+        }else{
+            errln("Did not get the expected output for Weekend data");
+        }
+
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "bogus");
+        if(bundle instanceof UResourceBundle && bundle.getULocale().equals("en_US")){
+            logln("wrapper mechanism works for bogus locale");
+        }else{
+            errln("wrapper mechanism failed for bogus locale.");
+        }
+
+        try{
+            bundle = UResourceBundle.getBundleInstance("bogus", "bogus");
+            if(bundle!=null){
+              errln("Did not get the expected exception");
+            }
+        }catch(MissingResourceException ex){
+            logln("got the expected exception");
+        }
+
+
+    }
+    public void TestJB3879(){
+        // this tests tests loading of root bundle when a resource bundle
+        // for the default locale is requested
+        try {
+            UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", ULocale.getDefault().toString(), testLoader);
+            if(bundle==null){
+                errln("could not create the resource bundle");
+            }
+        }
+        catch (MissingResourceException ex) {
+            warnln("could not load test data: " + ex.getMessage());
+        }
+    }
+    public void TestOpen(){
+        UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "en_US_POSIX");
+
+        if(bundle==null){
+            errln("could not create the resource bundle");
+        }
+
+        UResourceBundle obj =  bundle.get("NumberPatterns");
+
+        int size = obj.getSize();
+        int type = obj.getType();
+        if(type == UResourceBundle.ARRAY){
+            UResourceBundle sub;
+            for(int i=0; i<size; i++){
+                sub = obj.get(i);
+                String temp =sub.getString();
+                if(temp.length()==0){
+                    errln("Failed to get the items from NumberPatterns array in bundle: "+
+                            bundle.getULocale().getBaseName());
+                }
+                //System.out.println("\""+prettify(temp)+"\"");
+            }
+
+        }
+        String[] strings = bundle.getStringArray("NumberPatterns");
+        if(size!=strings.length){
+            errln("Failed to get the items from NumberPatterns array in bundle: "+
+                    bundle.getULocale().getBaseName());
+        }
+        {
+            obj =  bundle.get("NumberElements");
+
+            size = obj.getSize();
+            type = obj.getType();
+            if(type == UResourceBundle.ARRAY){
+                UResourceBundle sub;
+                for(int i=0; i<size; i++){
+                    sub = obj.get(i);
+                    String temp =sub.getString();
+                    if(temp.length()==0){
+                        errln("Failed to get the items from NumberPatterns array in bundle: "+
+                                bundle.getULocale().getBaseName());
+                    }
+                   // System.out.println("\""+prettify(temp)+"\"");
+                }
+
+            }
+        }
+        if(bundle==null){
+            errln("could not create the resource bundle");
+        }
+        bundle = (UResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, "en_US_POSIX");
+        if(bundle==null){
+            errln("could not load the stream");
+        }
+        bundle = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zzz_ZZ_very_very_very_long_bogus_bundle");
+        if(!bundle.getULocale().equals(ULocale.getDefault())){
+            errln("UResourceBundle did not load the default bundle when bundle was not found. Default: " + ULocale.getDefault() + 
+                        ", Bundle locale: " + bundle.getULocale());
+        }
+
+
+    }
+
+    public void TestBasicTypes(){
+        UResourceBundle bundle = null;
+        try {
+            bundle = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes", testLoader);
+        }
+        catch (MissingResourceException e) {
+            warnln("could not load test data: " + e.getMessage());
+            return;
+        }
+        {
+            String expected = "abc\u0000def";
+            UResourceBundle sub = bundle.get("zerotest");
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key zerotest in bundle testtypes");
+            }
+            sub = bundle.get("emptyexplicitstring");
+            expected ="";
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key emptyexplicitstring in bundle testtypes");
+            }
+            sub = bundle.get("emptystring");
+            expected ="";
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key emptystring in bundle testtypes");
+            }
+        }
+        {
+            int expected = 123;
+            UResourceBundle sub = bundle.get("onehundredtwentythree");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key onehundredtwentythree in bundle testtypes");
+            }
+            sub = bundle.get("emptyint");
+            expected=0;
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key emptyint in bundle testtypes");
+            }
+        }
+        {
+            int expected = 1;
+            UResourceBundle sub = bundle.get("one");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key one in bundle testtypes");
+            }
+        }
+        {
+            int expected = -1;
+            UResourceBundle sub = bundle.get("minusone");
+            int got = sub.getInt();
+            if(expected!=got){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+            expected = 0xFFFFFFF;
+            got = sub.getUInt();
+            if(expected!=got){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+        }
+        {
+            int expected = 1;
+            UResourceBundle sub = bundle.get("plusone");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+
+        }
+        {
+            int[] expected = new int[]{ 1, 2, 3, -3, 4, 5, 6, 7 }   ;
+            UResourceBundle sub = bundle.get("integerarray");
+            if(!Utility.arrayEquals(expected,sub.getIntVector())){
+                errln("Did not get the expected int vector value for key integerarray in bundle testtypes");
+            }
+            sub = bundle.get("emptyintv");
+            expected = new int[0];
+            if(!Utility.arrayEquals(expected,sub.getIntVector())){
+                errln("Did not get the expected int vector value for key emptyintv in bundle testtypes");
+            }
+
+        }
+        {
+            UResourceBundle sub = bundle.get("binarytest");
+            ByteBuffer got = sub.getBinary();
+            if(got.remaining()!=15){
+                errln("Did not get the expected length for the binary ByteBuffer");
+            }
+            for(int i=0; i< got.remaining(); i++){
+                byte b = got.get();
+                if(b!=i){
+                    errln("Did not get the expected value for binary buffer at index: "+i);
+                }
+            }
+            sub = bundle.get("emptybin");
+            got = sub.getBinary();
+            if(got.remaining()!=0){
+                errln("Did not get the expected length for the emptybin ByteBuffer");
+            }
+
+        }
+        {
+            UResourceBundle sub = bundle.get("emptyarray");
+            String key = sub.getKey();
+            if(!key.equals("emptyarray")){
+                errln("Did not get the expected key for emptytable item");
+            }
+            if(sub.getSize()!=0){
+                errln("Did not get the expected length for emptytable item");
+            }
+        }
+        {
+            UResourceBundle sub = bundle.get("menu");
+            String key = sub.getKey();
+            if(!key.equals("menu")){
+                errln("Did not get the expected key for menu item");
+            }
+            UResourceBundle sub1 = sub.get("file");
+            key = sub1.getKey();
+            if(!key.equals("file")){
+                errln("Did not get the expected key for file item");
+            }
+            UResourceBundle sub2 = sub1.get("open");
+            key = sub2.getKey();
+            if(!key.equals("open")){
+                errln("Did not get the expected key for file item");
+            }
+            String value = sub2.getString();
+            if(!value.equals("Open")){
+                errln("Did not get the expected value for key for oen item");
+            }
+
+            sub = bundle.get("emptytable");
+            key = sub.getKey();
+            if(!key.equals("emptytable")){
+                errln("Did not get the expected key for emptytable item");
+            }
+            if(sub.getSize()!=0){
+                errln("Did not get the expected length for emptytable item");
+            }
+            sub = bundle.get("menu").get("file");
+            int size = sub.getSize();
+            String expected;
+            for(int i=0; i<size; i++){
+                sub1 = sub.get(i);
+
+                switch(i){
+                    case 0:
+                        expected = "exit";
+                        break;
+                    case 1:
+                        expected = "open";
+                        break;
+                    case 2:
+                        expected = "save";
+                        break;
+                    default:
+                        expected ="";
+                }
+                String got = sub1.getKey();
+                if(!expected.equals(got)){
+                    errln("Did not get the expected key at index"+i+". Expected: "+expected+" Got: "+got);
+                }else{
+                    logln("Got the expected key at index: "+i);
+                }
+            }
+        }
+
+    }
+    private static final class TestCase{
+        String key;
+        int value;
+        TestCase(String key, int value){
+            this.key = key;
+            this.value = value;
+        }
+    }
+    public void TestTable32(){
+        TestCase[] arr = new TestCase[]{
+          new TestCase  ( "ooooooooooooooooo", 0 ),
+          new TestCase  ( "oooooooooooooooo1", 1 ),
+          new TestCase  ( "ooooooooooooooo1o", 2 ),
+          new TestCase  ( "oo11ooo1ooo11111o", 25150 ),
+          new TestCase  ( "oo11ooo1ooo111111", 25151 ),
+          new TestCase  ( "o1111111111111111", 65535 ),
+          new TestCase  ( "1oooooooooooooooo", 65536 ),
+          new TestCase  ( "1ooooooo11o11ooo1", 65969 ),
+          new TestCase  ( "1ooooooo11o11oo1o", 65970 ),
+          new TestCase  ( "1ooooooo111oo1111", 65999 )
+        };
+        UResourceBundle bundle = null;
+        try {
+            bundle = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testtable32", testLoader);
+        }
+        catch (MissingResourceException ex) {
+            warnln("could not load resource data: " + ex.getMessage());
+            return;
+        }
+
+        if(bundle.getType()!= UResourceBundle.TABLE){
+            errln("Could not get the correct type for bundle testtable32");
+        }
+        int size =bundle.getSize();
+        if(size!=66000){
+            errln("Could not get the correct size for bundle testtable32");
+        }
+        for(int i =0; i<size; i++){
+            UResourceBundle item = bundle.get(i);
+            String key = item.getKey();
+            int parsedNumber = parseTable32Key(key);
+            int number=-1;
+            switch(item.getType()){
+                case UResourceBundle.STRING:
+                    String value = item.getString();
+                    number = UTF16.charAt(value,0);
+                    break;
+                case UResourceBundle.INT:
+                    number = item.getInt();
+                    break;
+                default:
+                    errln("Got unexpected resource type in testtable32");
+
+            }
+            if(number!=parsedNumber){
+                errln("Did not get expected value in testtypes32 for key"+
+                      key+". Expected: "+parsedNumber+" Got:"+number);
+            }
+
+        }
+        for(int i=0;i<arr.length; i++){
+            String expected = arr[i].key;
+            UResourceBundle item = bundle.get(expected);
+            int number=0;
+            String key = item.getKey();
+            int parsedNumber = parseTable32Key(key);
+            if(!key.equals(expected)){
+                errln("Did not get the expected key. Expected: "+expected+" Got:"+key);
+            }
+            switch(item.getType()){
+                case UResourceBundle.STRING:
+                    String value = item.getString();
+                    number = UTF16.charAt(value,0);
+                    break;
+                 case UResourceBundle.INT:
+                    number = item.getInt();
+                    break;
+                default:
+                    errln("Got unexpected resource type in testtable32");
+            }
+
+            if(number!=parsedNumber){
+                errln("Did not get expected value in testtypes32 for key"+
+                      key+". Expected: "+parsedNumber+" Got:"+number);
+            }
+        }
+    }
+    private static int  parseTable32Key(String key) {
+        int number;
+        char c;
+
+        number=0;
+        for(int i=0; i<key.length(); i++){
+            c = key.charAt(i);
+            number<<=1;
+            if(c=='1') {
+                number|=1;
+            }
+        }
+        return number;
+    }
+
+    public void TestAliases(){
+/*
+       String simpleAlias   = "Open";
+
+       UResourceBundle rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases", testLoader);
+       if (rb == null) {
+           warnln("could not load testaliases data");
+           return;
+       }
+        UResourceBundle sub = rb.get("simplealias");
+        String s1 = sub.getString("simplealias");
+        if(s1.equals(simpleAlias)){
+            logln("Alias mechanism works for simplealias");
+        }else{
+            errln("Did not get the expected output for simplealias");
+        }
+        {
+            try{
+                rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+                sub = rb.get("nonexisting");
+                errln("Did not get the expected exception for nonexisting");
+            }catch(MissingResourceException ex){
+                logln("Alias mechanism works for nonexisting alias");
+            }
+        }
+        {
+            rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            sub = rb.get("referencingalias");
+            s1 = sub.getString();
+            if(s1.equals("Hani")){
+                logln("Alias mechanism works for referencingalias");
+            }else{
+                errln("Did not get the expected output for referencingalias");
+            }
+        }
+        {
+            rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            sub = rb.get("boundaries");
+            String word = sub.getString("word");
+
+            if(word.equals("word_ja.brk")){
+                logln("Got the expected output for boundaries/word");
+            }else{
+                errln("Did not get the expected type for boundaries/word");
+            }
+
+        }
+        {
+            UResourceBundle rb1 = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            if(rb1!=rb){
+                errln("Caching of the resource bundle failed");
+            }else{
+                logln("Caching of resource bundle passed");
+            }
+            sub = rb1.get("testGetStringByKeyAliasing" );
+
+            s1 = sub.get("KeyAlias0PST").getString();
+            if(s1.equals("America/Los_Angeles")){
+                logln("Alias mechanism works for KeyAlias0PST");
+            }else{
+                errln("Did not get the expected output for KeyAlias0PST");
+            }
+
+            s1 = sub.getString("KeyAlias1PacificStandardTime");
+            if(s1.equals("Pacific Standard Time")){
+                logln("Alias mechanism works for KeyAlias1PacificStandardTime");
+            }else{
+                errln("Did not get the expected output for KeyAlias1PacificStandardTime");
+            }
+            s1 = sub.getString("KeyAlias2PDT");
+            if(s1.equals("PDT")){
+                logln("Alias mechanism works for KeyAlias2PDT");
+            }else{
+                errln("Did not get the expected output for KeyAlias2PDT");
+            }
+
+            s1 = sub.getString("KeyAlias3LosAngeles");
+            if(s1.equals("Los Angeles")){
+                logln("Alias mechanism works for KeyAlias3LosAngeles. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for KeyAlias3LosAngeles. Got: "+s1);
+            }
+        }
+        {
+            sub = rb.get("testGetStringByIndexAliasing" );
+            s1 = sub.getString(0);
+            if(s1.equals("America/Los_Angeles")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/0. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/0. Got: "+s1);
+            }
+            s1 = sub.getString(1);
+            if(s1.equals("Pacific Standard Time")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/1");
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/1");
+            }
+            s1 = sub.getString(2);
+            if(s1.equals("PDT")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/2");
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/2");
+            }
+
+            s1 = sub.getString(3);
+            if(s1.equals("Los Angeles")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/3. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/3. Got: "+s1);
+            }
+        }
+        {
+            sub = rb.get("testAliasToTree" );
+            
+            ByteBuffer buf = sub.get("standard").get("%%CollationBin").getBinary();
+            if(buf==null){
+                errln("Did not get the expected output for %%CollationBin");
+            }
+        }
+        // should not get an exception
+        rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_RBNF_BASE_NAME,"fr_BE");
+        String str = rb.getString("SpelloutRules");
+        if(str !=null && str.length()>0){
+            logln("Alias mechanism works");
+        }else{
+            errln("Alias mechanism failed for fr_BE SpelloutRules");
+        }
+        rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,"zh_TW");
+        UResourceBundle b = (UResourceBundle) rb.getObject("collations");
+        if(b != null){
+            if(b.get(0).getKey().equals( "default")){
+                logln("Alias mechanism works");
+            }else{
+                errln("Alias mechanism failed for zh_TW collations");
+            }
+        }else{
+            errln("Did not get the expected object for collations");
+        }
+*/
+    }
+    public void TestAlias(){
+        logln("Testing %%ALIAS");
+        UResourceBundle rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"iw_IL");
+        UResourceBundle b = rb.get("NumberPatterns");
+        if(b != null){
+            if(b.getSize()>0){
+                logln("%%ALIAS mechanism works");
+            }else{
+                errln("%%ALIAS mechanism failed for iw_IL collations");
+            }
+        }else{
+            errln("%%ALIAS mechanism failed for iw_IL");
+        }
+    }
+    public void TestXPathAlias(){
+        UResourceBundle rb = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","te_IN",testLoader);
+        UResourceBundle b = rb.get("aliasClient");
+        String result = b.getString();
+        String expResult= "correct"; 
+
+        if(!result.equals(expResult)){
+            errln("Did not get the expected result for XPath style alias");
+        }
+        try{
+            UResourceBundle c = rb.get("rootAliasClient");
+            result = c.getString();
+            expResult = "correct"; 
+            if(!result.equals(expResult)){
+                errln("Did not get the expected result for XPath style alias for rootAliasClient");
+            }
+        }catch( MissingResourceException ex){
+            errln("Could not get rootAliasClient");
+        }
+    }
+    public void TestCircularAliases(){
+// Aliases no longer supported
+//        try{
+//            UResourceBundle rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+//            UResourceBundle sub = rb.get("aaa");
+//            String s1 = sub.getString();
+//            if(s1!=null){
+//                errln("Did not get the expected exception");
+//            }
+//        }catch(IllegalArgumentException ex){
+//            logln("got expected exception for circular references");
+//        }
+//        catch (MissingResourceException ex) {
+//            warnln("could not load resource data: " + ex.getMessage());
+//        }
+    }
+
+    public void TestGetWithFallback(){
+        /*
+        UResourceBundle bundle =(UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","te_IN");
+        String key = bundle.getStringWithFallback("Keys/collation");
+        if(!key.equals("COLLATION")){
+            errln("Did not get the expected result from getStringWithFallback method.");
+        }
+        String type = bundle.getStringWithFallback("Types/collation/direct");
+        if(!type.equals("DIRECT")){
+            errln("Did not get the expected result form getStringWithFallback method.");
+        }
+        */
+        ICUResourceBundle bundle = null;
+        String key = null;
+        try{
+            bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,ULocale.canonicalize("de__PHONEBOOK"));
+
+            if(!bundle.getULocale().equals("de")){
+                errln("did not get the expected bundle");
+            }
+            key = bundle.getStringWithFallback("collations/collation/default");
+            if(!key.equals("phonebook")){
+                errln("Did not get the expected result from getStringWithFallback method.");
+            }
+
+        }catch(MissingResourceException ex){
+            logln("got the expected exception");
+        }
+
+
+        bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,"fr_FR");
+        key = bundle.getStringWithFallback("collations/default");
+        if(!key.equals("standard")){
+            errln("Did not get the expected result from getStringWithFallback method.");
+        }
+        bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"fr_FR");
+        ICUResourceBundle b1 = bundle.getWithFallback("calendar");
+        String defaultCal = b1.getStringWithFallback("default");
+        if(!defaultCal.equals("gregorian")){
+            errln("Did not get the expected default calendar string: Expected: gregorian, Got: "+defaultCal);
+        }
+        ICUResourceBundle b2 = b1.getWithFallback(defaultCal);
+        ICUResourceBundle b3 = b2.getWithFallback("monthNames");
+        String defaultContext = b3.getStringWithFallback("default");
+        ICUResourceBundle b4 = b3.getWithFallback(defaultContext);
+        String defaultWidth  = b4.getStringWithFallback("default");
+        ICUResourceBundle b5 = b4.getWithFallback(defaultWidth);
+        if(b5.getSize()!=12){
+            errln("Did not get the expected size for the default monthNames");
+        }
+    }
+
+    private static final String COLLATION_RESNAME = "collations";
+    private static final String COLLATION_KEYWORD = "collation";
+    private static final String DEFAULT_NAME = "default";
+    private static final String STANDARD_NAME = "standard";
+    private static final String CALENDAR_RESNAME = "calendar";
+    private static final String CALENDAR_KEYWORD = "calendar";
+
+    public void TestKeywordValues(){
+        String kwVals[];
+        boolean foundStandard = false;
+        int n;
+
+        logln("Testing getting collation values:");
+        kwVals = ICUResourceBundle.getKeywordValues(ICUResourceBundle.ICU_COLLATION_BASE_NAME,COLLATION_RESNAME);
+        for(n=0;n<kwVals.length;n++) {
+            logln(new Integer(n).toString() + ": " + kwVals[n]);
+            if(DEFAULT_NAME.equals(kwVals[n])) {
+                errln("getKeywordValues for collation returned 'default' in the list.");
+            } else if(STANDARD_NAME.equals(kwVals[n])) {
+                if(foundStandard == false) {
+                    foundStandard = true;
+                    logln("found 'standard'");
+                } else {
+                    errln("Error - 'standard' is in the keyword list twice!");
+                }
+            }
+        }
+
+        if(foundStandard == false) {
+            errln("Error - 'standard' was not in the collation tree as a keyword.");
+        } else {
+            logln("'standard' was found as a collation keyword.");
+        }
+    }
+
+    public void TestLocaleDisplayNames() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            if (!hasLocalizedCountryFor(ULocale.ENGLISH, locales[i])){
+                 errln("Could not get localized country for "+ locales[i]);
+            }
+            if(!hasLocalizedLanguageFor(ULocale.ENGLISH, locales[i])){
+                errln("Could not get localized language for "+ locales[i]);
+            }
+            if(!hasLocalizedCountryFor(locales[i], locales[i])){
+                errln("Could not get localized country for "+ locales[i]);
+                hasLocalizedCountryFor(locales[i], locales[i]);
+            }
+            if(!hasLocalizedLanguageFor(locales[i], locales[i])){
+                errln("Could not get localized language for "+ locales[i]);
+            }
+
+            logln(locales[i] + "\t" + locales[i].getDisplayName(ULocale.ENGLISH) + "\t" + locales[i].getDisplayName(locales[i]));
+        }
+    }
+
+    private static boolean hasLocalizedLanguageFor(ULocale locale, ULocale otherLocale) {
+        String lang = otherLocale.getLanguage();
+        String localizedVersion = otherLocale.getDisplayLanguage(locale);
+        return !lang.equals(localizedVersion);
+    }
+
+    private static boolean hasLocalizedCountryFor(ULocale locale, ULocale otherLocale) {
+        String country = otherLocale.getCountry();
+        if (country.equals("")) return true;
+        String localizedVersion = otherLocale.getDisplayCountry(locale);
+        return !country.equals(localizedVersion);
+    }
+
+    public void TestFunctionalEquivalent(){
+       String[] collCases = {
+       //  avail   locale                               equiv
+           "f",     "de_US_CALIFORNIA",                 "de",
+           "f",     "zh_TW@collation=stroke",           "zh@collation=stroke", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=stroke",      "zh@collation=stroke",
+           "f",     "de_CN@collation=pinyin",           "de",
+           "t",     "zh@collation=pinyin",              "zh",
+           "f",     "zh_CN@collation=pinyin",           "zh", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=pinyin",      "zh",
+           "f",     "zh_HK@collation=pinyin",           "zh", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK@collation=pinyin",      "zh",
+           "f",     "zh_HK@collation=stroke",           "zh@collation=stroke", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK@collation=stroke",      "zh@collation=stroke",
+           "f",     "zh_HK",                            "zh@collation=stroke", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK",                       "zh@collation=stroke",
+           "f",     "zh_MO",                            "zh@collation=stroke", /* alias of zh_Hant_MO */
+           "t",     "zh_Hant_MO",                       "zh@collation=stroke",
+           "f",     "zh_TW_STROKE",                     "zh@collation=stroke",
+           "f",     "zh_TW_STROKE@collation=big5han",   "zh@collation=big5han",
+           "f",     "de_CN@calendar=japanese",          "de",
+           "t",     "de@calendar=japanese",             "de",
+           "f",     "zh_TW@collation=big5han",          "zh@collation=big5han", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=big5han",     "zh@collation=big5han",
+           "f",     "zh_TW@collation=gb2312han",        "zh@collation=gb2312han", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=gb2312han",   "zh@collation=gb2312han",
+           "f",     "zh_CN@collation=big5han",          "zh@collation=big5han", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=big5han",     "zh@collation=big5han",
+           "f",     "zh_CN@collation=gb2312han",        "zh@collation=gb2312han", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=gb2312han",   "zh@collation=gb2312han",
+           "t",     "zh@collation=big5han",             "zh@collation=big5han",
+           "t",     "zh@collation=gb2312han",           "zh@collation=gb2312han",
+           "t",     "hi_IN@collation=direct",           "hi@collation=direct",
+           "t",     "hi@collation=standard",            "hi",
+           "t",     "hi@collation=direct",              "hi@collation=direct",
+           "f",     "hi_AU@collation=direct;currency=CHF;calendar=buddhist",    "hi@collation=direct",
+           "f",     "hi_AU@collation=standard;currency=CHF;calendar=buddhist",  "hi",
+           "t",     "de_DE@collation=pinyin",           "de", /* bug 4582 tests */
+           "f",     "de_DE_BONN@collation=pinyin",      "de",
+           "t",     "nl",                               "root",
+           "t",     "nl_NL",                            "root",
+           "f",     "nl_NL_EEXT",                       "root",
+           "t",     "nl@collation=stroke",              "root",
+           "t",     "nl_NL@collation=stroke",           "root",
+           "f",     "nl_NL_EEXT@collation=stroke",      "root",
+       };
+
+       String[] calCases = {
+       //  avail    locale                              equiv
+           "t",     "en_US_POSIX",                      "en_US@calendar=gregorian",
+           "f",     "ja_JP_TOKYO",                      "ja_JP@calendar=gregorian",
+           "f",     "ja_JP_TOKYO@calendar=japanese",    "ja@calendar=japanese",
+           "t",     "sr@calendar=gregorian",            "sr@calendar=gregorian",
+           "t",     "en",                               "en@calendar=gregorian",
+           "t",     "th_TH",                            "th@calendar=buddhist",
+           "t",     "th_TH@calendar=gregorian",         "th_TH@calendar=gregorian",
+           "f",     "th_TH_Bangkok",                    "th@calendar=buddhist",
+       };
+
+       logln("Testing functional equivalents for collation...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_COLLATION_BASE_NAME,
+               COLLATION_RESNAME, COLLATION_KEYWORD, true, collCases);
+
+       logln("Testing functional equivalents for calenadr...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_BASE_NAME,
+               CALENDAR_RESNAME, CALENDAR_KEYWORD, false, calCases);
+
+       logln("Testing error conditions:");
+       try {
+           ICUResourceBundle.getFunctionalEquivalent(ICUResourceBundle.ICU_COLLATION_BASE_NAME, "calendar",
+              "calendar", new ULocale("ar_EG@calendar=islamic"), new boolean[1], true);
+           errln("Err: expected MissingResourceException");
+       } catch ( MissingResourceException t ) {
+           logln("expected MissingResourceException caught (PASS): " + t.toString());
+       }
+    }
+
+    private void getFunctionalEquivalentTestCases(String path, String resName, String keyword,
+            boolean truncate, String[] testCases) {
+        //String F_STR = "f";
+        String T_STR = "t";
+        boolean isAvail[] = new boolean[1];
+
+        logln("Testing functional equivalents...");
+        for(int i = 0; i < testCases.length ;i+=3) {
+            boolean expectAvail = T_STR.equals(testCases[i+0]);
+            ULocale inLocale = new ULocale(testCases[i+1]);
+            ULocale expectLocale = new ULocale(testCases[i+2]);
+
+            logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
+                    inLocale.toString() + "\t\t" + expectLocale.toString());
+
+            ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, resName, keyword, inLocale, isAvail, truncate);
+            boolean gotAvail = isAvail[0];
+
+            if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
+                errln(new Integer(i/3).toString() + ":  Error, expected  Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
+                        inLocale.toString() + "\t\t--> " + expectLocale.toString() + ",  but got " + new Boolean(gotAvail).toString() + " " +
+                        equivLocale.toString());
+            }
+        }
+    }
+
+    public void TestNorwegian(){
+        try{
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "no_NO_NY");
+            UResourceBundle sub = rb.get("Countries");
+            String s1 = sub.getString("NO");
+            if(s1.equals("Noreg")){
+                logln("got expected output ");
+            }else{
+                errln("did not get the expected result");
+            }
+        }catch(IllegalArgumentException ex){
+            errln("Caught an unexpected expected");
+        }
+    }
+    public void TestJB4102(){
+        try {
+            ICUResourceBundle root =(ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "root");
+            ICUResourceBundle t = null;    
+// AmPmMarkers now exist in root/islamic calendar, so this test is rendered useless.
+//          try{
+//              t = root.getWithFallback("calendar/islamic-civil/AmPmMarkers");
+//              errln("Second resource does not exist. How did it get here?\n");
+//          }catch(MissingResourceException ex){
+//              logln("Got the expected exception");
+//          }
+            try{
+                t = root.getWithFallback("calendar/islamic-civil/eras/abbreviated/0/mikimaus/pera");
+                errln("Second resource does not exist. How did it get here?\n");
+            }catch(MissingResourceException ex){
+                logln("Got the expected exception");
+            }
+            if(t!=null){
+                errln("t is not null!");
+            }
+        } catch (MissingResourceException e) {
+           warnln("Could not load the locale data: " + e.getMessage());
+        }
+    }
+
+    public void TestCLDRStyleAliases() {
+        String result = null;
+        String expected = null;
+        String[]expects = new String[] { "", "a41", "a12", "a03", "ar4" };
+
+        logln("Testing CLDR style aliases......\n");
+
+        UResourceBundle rb = UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "te_IN_REVISED",testLoader);
+        ICUResourceBundle alias = (ICUResourceBundle)rb.get("a");
+
+        for(int i = 1; i < 5 ; i++) {
+          String resource="a"+i;
+          UResourceBundle a = (alias).getWithFallback(resource);
+          result = a.getString();
+          if(result.equals(expected)) {
+              errln("CLDR style aliases failed resource with name "+resource+"resource, exp "+expects[i] +" , got " + result); 
+          }
+        }
+
+    }
+    private String getLSString(int status){
+        switch(status){
+            case ICUResourceBundle.FROM_FALLBACK:
+                return "FROM_FALLBACK";
+            case ICUResourceBundle.FROM_DEFAULT:
+                return "FROM_DEFAULT";
+            case ICUResourceBundle.FROM_ROOT: 
+                return "FROM_ROOT";
+            case ICUResourceBundle.FROM_LOCALE: 
+                return "FROM_LOCALE";
+            default:
+                return "UNKNOWN";
+        }
+    }
+    public void TestLoadingStatus(){
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "yi_IL");
+        int status = bundle.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_DEFAULT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_DEFAULT) 
+                    + " Got: " + getLSString(status));
+        }        
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "eo_DE");
+        status = bundle.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }        
+        
+        logln("Test to verify loading status of get(String)");
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "te_IN");
+        UResourceBundle countries = bundle.get("Countries");
+        status = ((ICUResourceBundle)countries).getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }
+        /*
+        UResourceBundle auxExemplar = bundle.get("AuxExemplarCharacters");
+        status = auxExemplar.getLoadingStatus();
+        if(status != UResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(UResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        } 
+        */
+        logln("Test to verify loading status of get(int)");
+        ICUResourceBundle ms = (ICUResourceBundle)bundle.get("MeasurementSystem");
+        status = ms.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        }
+                
+        logln("Test to verify loading status of getwithFallback");
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "sh_YU",testLoader);
+        ICUResourceBundle temp = (ICUResourceBundle)bundle.getWithFallback("a/a2");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_LOCALE){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_LOCALE) 
+                    + " Got: " + getLSString(status));
+        }
+        temp = bundle.getWithFallback("a/a1");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }
+        temp = bundle.getWithFallback("a/a4");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        }
+    }
+    public void TestCoverage(){
+        UResourceBundle bundle;
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME);
+        if (bundle == null){
+            errln("UResourceBundle.getBundleInstance(String baseName) failed");
+        }
+        bundle = null;
+        bundle = UResourceBundle.getBundleInstance(ULocale.getDefault());
+        if (bundle == null){
+            errln("UResourceBundle.getBundleInstance(ULocale) failed");
+            return;
+        } 
+        if (new UResourceTypeMismatchException("coverage") == null){
+            errln("Create UResourceTypeMismatchException error");
+        }
+        class Stub extends UResourceBundle{
+            public ULocale getULocale() {return ULocale.ROOT;}
+            protected String getLocaleID() {return null;}
+            protected String getBaseName() {return null;}
+            protected UResourceBundle getParent() {return null;}
+            protected void setLoadingStatus(int newStatus) {}
+            public Enumeration getKeys() {return null;}
+            protected Object handleGetObject(String aKey) {return null;}
+        }
+        Stub stub = new Stub();
+        
+        if (!stub.getLocale().equals(ULocale.ROOT.toLocale())){
+            errln("UResourceBundle.getLoclae(Locale) should delegate to (ULocale)");
+        }
+    }
+    public void TestJavaULocaleBundleLoading(){
+        String baseName="com.ibm.icu.dev.data.resources.TestDataElements";
+        String locName = "en_Latn_US";
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(baseName, locName, testLoader);
+        String fromRoot = bundle.getString("from_root");
+        if(!fromRoot.equals("This data comes from root")){
+            errln("Did not get the expected string for from_root");
+        }
+        String fromEn = bundle.getString("from_en");
+        if(!fromEn.equals("This data comes from en")){
+            errln("Did not get the expected string for from_en");
+        }
+        String fromEnLatn = bundle.getString("from_en_Latn");
+        if(!fromEnLatn.equals("This data comes from en_Latn")){
+            errln("Did not get the expected string for from_en_Latn");
+        }
+        String fromEnLatnUs = bundle.getString("from_en_Latn_US");
+        if(!fromEnLatnUs.equals("This data comes from en_Latn_US")){
+            errln("Did not get the expected string for from_en_Latn_US");
+        }
+        UResourceBundle bundle1 = UResourceBundle.getBundleInstance(baseName, new ULocale(locName), testLoader);
+        if(!bundle1.equals(bundle)){
+            errln("Did not get the expected bundle for "+baseName +"."+locName);
+        }
+        if(bundle1!=bundle){
+            errln("Did not load the bundle from cache");
+        }
+        
+        UResourceBundle bundle2 = UResourceBundle.getBundleInstance(baseName, "en_IN", testLoader);
+        if(!bundle2.getLocale().toString().equals("en")){
+            errln("Did not get the expected fallback locale. Expected: en Got: "+bundle2.getLocale().toString());    
+        }
+        UResourceBundle bundle3 = UResourceBundle.getBundleInstance(baseName, "te_IN", testLoader);
+        if(!bundle3.getLocale().toString().equals("te")){
+            errln("Did not get the expected fallback locale. Expected: te Got: "+bundle2.getLocale().toString());    
+        }
+        // non-existent bundle .. should return default
+        UResourceBundle defaultBundle = UResourceBundle.getBundleInstance(baseName, "hi_IN", testLoader);
+        ULocale defaultLocale = ULocale.getDefault();
+        if(!defaultBundle.getULocale().equals(defaultLocale)){
+            errln("Did not get the default bundle for non-existent bundle");
+        }
+        // non-existent bundle, non-existent default locale
+        // so return the root bundle.
+        ULocale.setDefault(ULocale.CANADA_FRENCH);
+        UResourceBundle root = UResourceBundle.getBundleInstance(baseName, "hi_IN", testLoader);
+        if(!root.getULocale().toString().equals("")){
+            errln("Did not get the root bundle for non-existent default bundle for non-existent bundle");
+        }        
+        //reset the default
+        ULocale.setDefault(defaultLocale);
+        Enumeration keys = bundle.getKeys();
+        int i=0;
+        while(keys.hasMoreElements()){
+            logln("key: "+ keys.nextElement());
+            i++;
+        }
+        if(i!=4){
+            errln("Did not get the expected number of keys: got " + i + ", expected 4");
+        }
+        UResourceBundle bundle4 = UResourceBundle.getBundleInstance(baseName,"fr_Latn_FR", testLoader);
+        if(bundle4==null){
+            errln("Could not load bundle fr_Latn_FR");
+        }
+    }
+    public void TestAliasFallback(){
+        try{
+            ULocale loc = new ULocale("en_US");
+            ICUResourceBundle b = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc);
+            ICUResourceBundle b1 = (ICUResourceBundle)b.getWithFallback("calendar/hebrew/monthNames/format/abbreviated");
+            if(b1!=null){
+                logln("loaded data for abbreviated month names: "+ b1.getKey()); 
+            }
+        }catch(MissingResourceException ex){
+            warnln("Failed to load data for abbreviated month names");
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
new file mode 100644
index 0000000..9237087
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -0,0 +1,1008 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUNotifier;
+import com.ibm.icu.impl.ICURWLock;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.ICUService.ServiceListener;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.LocaleUtility;
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICULocaleService.ICUResourceBundleFactory;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceTest extends TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+    ICUServiceTest test = new ICUServiceTest();
+    test.run(args);
+    }
+
+    private String lrmsg(String message, Object lhs, Object rhs) {
+    return message + " lhs: " + lhs + " rhs: " + rhs;
+    }
+
+    public void confirmBoolean(String message, boolean val) {
+    msg(message, val ? LOG : ERR, !val, true);
+    }
+
+    public void confirmEqual(String message, Object lhs, Object rhs) {
+        msg(lrmsg(message, lhs, rhs), (lhs == null ? rhs == null : lhs.equals(rhs)) ? LOG : ERR, true, true);
+    }
+
+    public void confirmIdentical(String message, Object lhs, Object rhs) {
+    msg(lrmsg(message, lhs, rhs), lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    public void confirmIdentical(String message, int lhs, int rhs) {
+    msg(message + " lhs: " + lhs + " rhs: " + rhs, lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the current default ULocale as the locale, the default collator for
+     * the locale as the comparator to sort the display names, and null for
+     * the matchID.
+     */
+    public SortedMap getDisplayNames(ICUService service) {
+        ULocale locale = ULocale.getDefault();
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names, and null for the matchID.
+     */
+    public SortedMap getDisplayNames(ICUService service, ULocale locale) {
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, null);
+    }
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names.
+     */
+    public SortedMap getDisplayNames(ICUService service, ULocale locale, String matchID) {
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, matchID);
+    }
+
+    // use locale keys
+    static final class TestService extends ICUService {
+        public TestService() {
+            super("Test Service");
+        }
+
+    public Key createKey(String id) {
+        return LocaleKey.createWithCanonicalFallback(id, null); // no fallback locale
+    }
+    }
+
+    public void TestAPI() {
+    // create a service using locale keys,
+    ICUService service = new TestService();
+
+        logln("service name:" + service.getName());
+
+    // register an object with one locale,
+    // search for an object with a more specific locale
+    // should return the original object
+    Integer singleton0 = new Integer(0);
+    service.registerObject(singleton0, "en_US");
+    Object result = service.get("en_US_FOO");
+    confirmIdentical("1) en_US_FOO -> en_US", result, singleton0);
+
+    // register a new object with the more specific locale
+    // search for an object with that locale
+    // should return the new object
+    Integer singleton1 = new Integer(1);
+    service.registerObject(singleton1, "en_US_FOO");
+    result = service.get("en_US_FOO");
+    confirmIdentical("2) en_US_FOO -> en_US_FOO", result, singleton1);
+
+    // search for an object that falls back to the first registered locale
+    result = service.get("en_US_BAR");
+    confirmIdentical("3) en_US_BAR -> en_US", result, singleton0);
+
+    // get a list of the factories, should be two
+    List factories = service.factories();
+    confirmIdentical("4) factory size", factories.size(), 2);
+
+    // register a new object with yet another locale
+    // original factory list is unchanged
+    Integer singleton2 = new Integer(2);
+    service.registerObject(singleton2, "en");
+    confirmIdentical("5) factory size", factories.size(), 2);
+
+    // search for an object with the new locale
+    // stack of factories is now en, en_US_FOO, en_US
+    // search for en_US should still find en_US object
+    result = service.get("en_US_BAR");
+    confirmIdentical("6) en_US_BAR -> en_US", result, singleton0);
+
+    // register a new object with an old id, should hide earlier factory using this id, but leave it there
+    Integer singleton3 = new Integer(3);
+    service.registerObject(singleton3, "en_US");
+    factories = service.factories();
+    confirmIdentical("9) factory size", factories.size(), 4);
+
+    // should get data from that new factory
+    result = service.get("en_US_BAR");
+    confirmIdentical("10) en_US_BAR -> (3)", result, singleton3);
+
+    // remove new factory
+    // should have fewer factories again
+    service.unregisterFactory((Factory)factories.get(0));
+    factories = service.factories();
+    confirmIdentical("11) factory size", factories.size(), 3);
+
+    // should get original data again after remove factory
+    result = service.get("en_US_BAR");
+    confirmIdentical("12) en_US_BAR -> 0", result, singleton0);
+
+    // shouldn't find unregistered ids
+    result = service.get("foo");
+    confirmIdentical("13) foo -> null", result, null);
+
+    // should find non-canonical strings
+    String[] resultID = new String[1];
+    result = service.get("EN_us_fOo", resultID);
+    confirmEqual("14) find non-canonical", resultID[0], "en_US_FOO");
+
+    // should be able to register non-canonical strings and get them canonicalized
+    service.registerObject(singleton3, "eN_ca_dUde");
+    result = service.get("En_Ca_DuDe", resultID);
+    confirmEqual("15) register non-canonical", resultID[0], "en_CA_DUDE");
+
+    // should be able to register invisible factories, these will not
+    // be visible by default, but if you know the secret password you
+    // can still access these services...
+    Integer singleton4 = new Integer(4);
+    service.registerObject(singleton4, "en_US_BAR", false);
+    result = service.get("en_US_BAR");
+    confirmIdentical("17) get invisible", result, singleton4);
+
+    // should not be able to locate invisible services
+    Set ids = service.getVisibleIDs();
+    confirmBoolean("18) find invisible", !ids.contains("en_US_BAR"));
+
+    service.reset();
+    // an anonymous factory than handles all ids
+    {
+        Factory factory = new Factory() {
+            public Object create(Key key, ICUService unusedService) {
+                return new ULocale(key.currentID());
+            }
+
+            public void updateVisibleIDs(Map unusedResult) {
+            }
+
+            public String getDisplayName(String id, ULocale l) {
+                return null;
+            }
+        };
+        service.registerFactory(factory);
+
+        // anonymous factory will still handle the id
+        result = service.get(ULocale.US.toString());
+        confirmEqual("21) locale", result, ULocale.US);
+
+        // still normalizes id
+        result = service.get("EN_US_BAR");
+        confirmEqual("22) locale", result, new ULocale("en_US_BAR"));
+
+        // we can override for particular ids
+        service.registerObject(singleton3, "en_US_BAR");
+        result = service.get("en_US_BAR");
+        confirmIdentical("23) override super", result, singleton3);
+
+    }
+
+    // empty service should not recognize anything
+    service.reset();
+    result = service.get("en_US");
+    confirmIdentical("24) empty", result, null);
+
+    // create a custom multiple key factory
+    {
+        String[] xids = { "en_US_VALLEY_GIRL",
+                  "en_US_VALLEY_BOY",
+                  "en_US_SURFER_GAL",
+                  "en_US_SURFER_DUDE"
+        };
+        service.registerFactory(new TestLocaleKeyFactory(xids, "Later"));
+    }
+
+    // iterate over the visual ids returned by the multiple factory
+    {
+        Set vids = service.getVisibleIDs();
+        Iterator iter = vids.iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+                String id = (String)iter.next();
+        logln("  " + id + " --> " + service.get(id));
+        }
+        // four visible ids
+        confirmIdentical("25) visible ids", count, 4);
+    }
+
+    // iterate over the display names
+    {
+        Map dids = getDisplayNames(service, ULocale.GERMANY);
+        Iterator iter = dids.entrySet().iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+        Entry e = (Entry)iter.next();
+        logln("  " + e.getKey() + " -- > " + e.getValue());
+        }
+        // four display names, in german
+        confirmIdentical("26) display names", count, 4);
+    }
+
+    // no valid display name
+    confirmIdentical("27) get display name", service.getDisplayName("en_US_VALLEY_GEEK"), null);
+
+    {
+        String name = service.getDisplayName("en_US_SURFER_DUDE", ULocale.US);
+        confirmEqual("28) get display name", name, "English (United States, SURFER_DUDE)");
+    }
+
+    // register another multiple factory
+    {
+        String[] xids = {
+        "en_US_SURFER", "en_US_SURFER_GAL", "en_US_SILICON", "en_US_SILICON_GEEK"
+        };
+        service.registerFactory(new TestLocaleKeyFactory(xids, "Rad dude"));
+    }
+
+    // this time, we have seven display names
+        // Rad dude's surfer gal 'replaces' later's surfer gal
+    {
+        Map dids = getDisplayNames(service);
+        Iterator iter = dids.entrySet().iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+        Entry e = (Entry)iter.next();
+        logln("  " + e.getKey() + " --> " + e.getValue());
+        }
+        // seven display names, in spanish
+        confirmIdentical("29) display names", count, 7);
+    }
+
+    // we should get the display name corresponding to the actual id
+    // returned by the id we used.
+    {
+        String[] actualID = new String[1];
+        String id = "en_us_surfer_gal";
+        String gal = (String)service.get(id, actualID);
+        if (gal != null) {
+                logln("actual id: " + actualID[0]);
+        String displayName = service.getDisplayName(actualID[0], ULocale.US);
+        logln("found actual: " + gal + " with display name: " + displayName);
+        confirmBoolean("30) found display name for actual", displayName != null);
+
+        displayName = service.getDisplayName(id, ULocale.US);
+        logln("found query: " + gal + " with display name: " + displayName);
+        // this is no longer a bug, we want to return display names for anything
+        // that a factory handles.  since we handle it, we should return a display
+        // name.  see jb3549
+        // confirmBoolean("31) found display name for query", displayName == null);
+        } else {
+        errln("30) service could not find entry for " + id);
+        }
+
+            // this should be handled by the 'dude' factory, since it overrides en_US_SURFER.
+        id = "en_US_SURFER_BOZO";
+        String bozo = (String)service.get(id, actualID);
+        if (bozo != null) {
+        String displayName = service.getDisplayName(actualID[0], ULocale.US);
+        logln("found actual: " + bozo + " with display name: " + displayName);
+        confirmBoolean("32) found display name for actual", displayName != null);
+
+        displayName = service.getDisplayName(id, ULocale.US);
+        logln("found actual: " + bozo + " with display name: " + displayName);
+        // see above and jb3549
+        // confirmBoolean("33) found display name for query", displayName == null);
+        } else {
+        errln("32) service could not find entry for " + id);
+        }
+
+            confirmBoolean("34) is default ", !service.isDefault());
+    }
+
+        /*
+      // disallow hiding for now
+
+      // hiding factory should obscure 'sublocales'
+      {
+      String[] xids = {
+      "en_US_VALLEY", "en_US_SILICON"
+      };
+      service.registerFactory(new TestHidingFactory(xids, "hiding"));
+      }
+
+      {
+      Map dids = service.getDisplayNames();
+      Iterator iter = dids.entrySet().iterator();
+      int count = 0;
+      while (iter.hasNext()) {
+      ++count;
+      Entry e = (Entry)iter.next();
+      logln("  " + e.getKey() + " -- > " + e.getValue());
+      }
+      confirmIdentical("35) hiding factory", count, 5);
+      }
+        */
+
+    {
+        Set xids = service.getVisibleIDs();
+        Iterator iter = xids.iterator();
+        while (iter.hasNext()) {
+        String xid = (String)iter.next();
+        logln(xid + "?  " + service.get(xid));
+        }
+
+        logln("valleygirl?  " + service.get("en_US_VALLEY_GIRL"));
+        logln("valleyboy?   " + service.get("en_US_VALLEY_BOY"));
+        logln("valleydude?  " + service.get("en_US_VALLEY_DUDE"));
+        logln("surfergirl?  " + service.get("en_US_SURFER_GIRL"));
+    }
+
+    // resource bundle factory.
+    service.reset();
+    service.registerFactory(new ICUResourceBundleFactory());
+
+    // list all of the resources
+    {
+            logln("all visible ids: " + service.getVisibleIDs());
+            /*
+          Set xids = service.getVisibleIDs();
+          StringBuffer buf = new StringBuffer("{");
+          boolean notfirst = false;
+          Iterator iter = xids.iterator();
+          while (iter.hasNext()) {
+          String xid = (String)iter.next();
+          if (notfirst) {
+          buf.append(", ");
+          } else {
+          notfirst = true;
+          }
+          buf.append(xid);
+          }
+          buf.append("}");
+          logln(buf.toString());
+            */
+    }
+
+        // list only the resources for es, default locale
+        // since we're using the default Key, only "es" is matched
+        {
+            logln("visible ids for es locale: " + service.getVisibleIDs("es"));
+        }
+
+        // list only the spanish display names for es, spanish collation order
+        // since we're using the default Key, only "es" is matched
+        {
+            logln("display names: " + getDisplayNames(service, new ULocale("es"), "es"));
+        }
+
+        // list the display names in reverse order
+        {
+            logln("display names in reverse order: " +
+                  service.getDisplayNames(ULocale.US, new Comparator() {
+                          public int compare(Object lhs, Object rhs) {
+                              return -String.CASE_INSENSITIVE_ORDER.compare((String)lhs, (String)rhs);
+                          }
+                      }));
+        }
+
+    // get all the display names of these resources
+    // this should be fast since the display names were cached.
+    {
+            logln("service display names for de_DE");
+        Map names = getDisplayNames(service, new ULocale("de_DE"));
+        StringBuffer buf = new StringBuffer("{");
+        Iterator iter = names.entrySet().iterator();
+        while (iter.hasNext()) {
+        Entry e = (Entry)iter.next();
+        String name = (String)e.getKey();
+        String id = (String)e.getValue();
+        buf.append("\n   " + name + " --> " + id);
+        }
+        buf.append("\n}");
+        logln(buf.toString());
+    }
+
+        CalifornioLanguageFactory califactory = new CalifornioLanguageFactory();
+        service.registerFactory(califactory);
+    // get all the display names of these resources
+    {
+            logln("californio language factory");
+        StringBuffer buf = new StringBuffer("{");
+            String[] idNames = {
+                CalifornioLanguageFactory.californio,
+        CalifornioLanguageFactory.valley,
+        CalifornioLanguageFactory.surfer,
+        CalifornioLanguageFactory.geek
+            };
+            for (int i = 0; i < idNames.length; ++i) {
+                String idName = idNames[i];
+                buf.append("\n  --- " + idName + " ---");
+                Map names = getDisplayNames(service, new ULocale(idName));
+                Iterator iter = names.entrySet().iterator();
+                while (iter.hasNext()) {
+                    Entry e = (Entry)iter.next();
+                    String name = (String)e.getKey();
+                    String id = (String)e.getValue();
+                    buf.append("\n    " + name + " --> " + id);
+                }
+        }
+        buf.append("\n}");
+        logln(buf.toString());
+    }
+
+    // test notification
+    // simple registration
+    {
+            logln("simple registration notification");
+        ICULocaleService ls = new ICULocaleService();
+        ServiceListener l1 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 1 report " + n++ + " service changed: " + s);
+            }
+        };
+        ls.addListener(l1);
+        ServiceListener l2 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 2 report " + n++ + " service changed: " + s);
+            }
+        };
+        ls.addListener(l2);
+        logln("registering foo... ");
+        ls.registerObject("Foo", "en_FOO");
+        logln("registering bar... ");
+        ls.registerObject("Bar", "en_BAR");
+        logln("getting foo...");
+        logln((String)ls.get("en_FOO"));
+        logln("removing listener 2...");
+        ls.removeListener(l2);
+        logln("registering baz...");
+        ls.registerObject("Baz", "en_BAZ");
+        logln("removing listener 1");
+        ls.removeListener(l1);
+        logln("registering burp...");
+        ls.registerObject("Burp", "en_BURP");
+
+        // should only get one notification even if register multiple times
+        logln("... trying multiple registration");
+        ls.addListener(l1);
+        ls.addListener(l1);
+        ls.addListener(l1);
+        ls.addListener(l2);
+        ls.registerObject("Foo", "en_FOO");
+        logln("... registered foo");
+
+        // since in a separate thread, we can callback and not deadlock
+        ServiceListener l3 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 3 report " + n++ + " service changed...");
+            if (s.get("en_BOINK") == null) { // don't recurse on ourselves!!!
+                logln("registering boink...");
+                s.registerObject("boink", "en_BOINK");
+            }
+            }
+        };
+        ls.addListener(l3);
+        logln("registering boo...");
+        ls.registerObject("Boo", "en_BOO");
+        logln("...done");
+
+        try {
+        Thread.sleep(100);
+        }
+        catch (InterruptedException e) {
+        }
+    }
+    }
+
+    static class TestLocaleKeyFactory extends LocaleKeyFactory {
+    protected final Set ids;
+    protected final String factoryID;
+
+    public TestLocaleKeyFactory(String[] ids, String factoryID) {
+            super(VISIBLE, factoryID);
+
+        this.ids = Collections.unmodifiableSet(new HashSet(Arrays.asList(ids)));
+            this.factoryID = factoryID + ": ";
+    }
+
+    protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return factoryID + loc.toString();
+    }
+
+    protected Set getSupportedIDs() {
+            return ids;
+    }
+    }
+
+    /*
+      // Disallow hiding for now since it causes gnarly problems, like
+      // how do you localize the hidden (but still exported) names.
+
+      static class TestHidingFactory implements ICUService.Factory {
+      protected final String[] ids;
+      protected final String factoryID;
+
+      public TestHidingFactory(String[] ids) {
+      this(ids, "Hiding");
+      }
+
+      public TestHidingFactory(String[] ids, String factoryID) {
+      this.ids = (String[])ids.clone();
+
+      if (factoryID == null || factoryID.length() == 0) {
+      this.factoryID = "";
+      } else {
+      this.factoryID = factoryID + ": ";
+      }
+      }
+
+      public Object create(Key key, ICUService service) {
+      for (int i = 0; i < ids.length; ++i) {
+      if (LocaleUtility.isFallbackOf(ids[i], key.currentID())) {
+      return factoryID + key.canonicalID();
+      }
+      }
+      return null;
+      }
+
+      public void updateVisibleIDs(Map result) {
+      for (int i = 0; i < ids.length; ++i) {
+      String id = ids[i];
+      Iterator iter = result.keySet().iterator();
+      while (iter.hasNext()) {
+      if (LocaleUtility.isFallbackOf(id, (String)iter.next())) {
+      iter.remove();
+      }
+      }
+      result.put(id, this);
+      }
+      }
+
+      public String getDisplayName(String id, ULocale locale) {
+      return factoryID + new ULocale(id).getDisplayName(locale);
+      }
+      }
+    */
+
+    static class CalifornioLanguageFactory extends ICUResourceBundleFactory {
+    public static String californio = "en_US_CA";
+    public static String valley = californio + "_VALLEY";
+    public static String surfer = californio + "_SURFER";
+    public static String geek = californio + "_GEEK";
+        public static Set supportedIDs;
+        static {
+            HashSet result = new HashSet();
+            result.addAll(ICUResourceBundle.getAvailableLocaleNameSet());
+        result.add(californio);
+        result.add(valley);
+        result.add(surfer);
+        result.add(geek);
+            supportedIDs = Collections.unmodifiableSet(result);
+        }
+
+    public Set getSupportedIDs() {
+            return supportedIDs;
+    }
+
+    public String getDisplayName(String id, ULocale locale) {
+        String prefix = "";
+        String suffix = "";
+        String ls = locale.toString();
+        if (LocaleUtility.isFallbackOf(californio, ls)) {
+        if (ls.equalsIgnoreCase(valley)) {
+            prefix = "Like, you know, it's so totally ";
+        } else if (ls.equalsIgnoreCase(surfer)) {
+            prefix = "Dude, its ";
+        } else if (ls.equalsIgnoreCase(geek)) {
+            prefix = "I'd estimate it's approximately ";
+        } else {
+            prefix = "Huh?  Maybe ";
+        }
+        }
+        if (LocaleUtility.isFallbackOf(californio, id)) {
+        if (id.equalsIgnoreCase(valley)) {
+            suffix = "like the Valley, you know?  Let's go to the mall!";
+        } else if (id.equalsIgnoreCase(surfer)) {
+            suffix = "time to hit those gnarly waves, Dude!!!";
+        } else if (id.equalsIgnoreCase(geek)) {
+            suffix = "all systems go.  T-Minus 9, 8, 7...";
+        } else {
+            suffix = "No Habla Englais";
+        }
+        } else {
+        suffix = super.getDisplayName(id, locale);
+        }
+
+        return prefix + suffix;
+    }
+    }
+
+    public void TestLocale() {
+    ICULocaleService service = new ICULocaleService("test locale");
+    service.registerObject("root", ULocale.ROOT);
+    service.registerObject("german", "de");
+    service.registerObject("german_Germany", ULocale.GERMANY);
+    service.registerObject("japanese", "ja");
+    service.registerObject("japanese_Japan", ULocale.JAPAN);
+
+    Object target = service.get("de_US");
+    confirmEqual("test de_US", "german", target);
+
+        ULocale de = new ULocale("de");
+        ULocale de_US = new ULocale("de_US");
+
+        target = service.get(de_US);
+    confirmEqual("test de_US 2", "german", target);
+
+        target = service.get(de_US, LocaleKey.KIND_ANY);
+    confirmEqual("test de_US 3", "german", target);
+
+        target = service.get(de_US, 1234);
+    confirmEqual("test de_US 4", "german", target);
+
+        ULocale[] actualReturn = new ULocale[1];
+        target = service.get(de_US, actualReturn);
+        confirmEqual("test de_US 5", "german", target);
+        confirmEqual("test de_US 6", actualReturn[0], de);
+
+        actualReturn[0] = null;
+        target = service.get(de_US, LocaleKey.KIND_ANY, actualReturn);
+        confirmEqual("test de_US 7", actualReturn[0], de);
+
+        actualReturn[0] = null;
+        target = service.get(de_US, 1234, actualReturn);
+    confirmEqual("test de_US 8", "german", target);
+        confirmEqual("test de_US 9", actualReturn[0], de);
+
+        service.registerObject("one/de_US", de_US, 1);
+        service.registerObject("two/de_US", de_US, 2);
+
+        target = service.get(de_US, 1);
+        confirmEqual("test de_US kind 1", "one/de_US", target);
+
+        target = service.get(de_US, 2);
+        confirmEqual("test de_US kind 2", "two/de_US", target);
+
+        target = service.get(de_US);
+        confirmEqual("test de_US kind 3", "german", target);
+
+        LocaleKey lkey = LocaleKey.createWithCanonicalFallback("en", null, 1234);
+        logln("lkey prefix: " + lkey.prefix());
+        logln("lkey descriptor: " + lkey.currentDescriptor());
+        logln("lkey current locale: " + lkey.currentLocale());
+
+        lkey.fallback();
+        logln("lkey descriptor 2: " + lkey.currentDescriptor());
+
+        lkey.fallback();
+        logln("lkey descriptor 3: " + lkey.currentDescriptor());
+
+    target = service.get("za_PPP");
+    confirmEqual("test zappp", "root", target);
+
+    ULocale loc = ULocale.getDefault();
+    ULocale.setDefault(ULocale.JAPANESE);
+    target = service.get("za_PPP");
+    confirmEqual("test with ja locale", "japanese", target);
+
+    Set ids = service.getVisibleIDs();
+    for (Iterator iter = ids.iterator(); iter.hasNext();) {
+        logln("id: " + iter.next());
+    }
+
+    ULocale.setDefault(loc);
+    ids = service.getVisibleIDs();
+    for (Iterator iter = ids.iterator(); iter.hasNext();) {
+        logln("id: " + iter.next());
+    }
+
+    target = service.get("za_PPP");
+    confirmEqual("test with en locale", "root", target);
+
+        ULocale[] locales = service.getAvailableULocales();
+        confirmIdentical("test available locales", locales.length, 6);
+        logln("locales: ");
+        for (int i = 0; i < locales.length; ++i) {
+            log("\n  [" + i + "] " + locales[i]);
+        }
+        logln(" ");
+
+        service.registerFactory(new ICUResourceBundleFactory());
+        target = service.get(ULocale.JAPAN);
+
+        {
+            int n = 0;
+            List factories = service.factories();
+            Iterator iter = factories.iterator();
+            while (iter.hasNext()) {
+                logln("[" + n++ + "] " + iter.next());
+            }
+        }
+
+        // list only the english display names for es, in reverse order
+        // since we're using locale keys, we should get all and only the es locales
+        // hmmm, the default toString function doesn't print in sorted order for TreeMap
+        {
+            SortedMap map = service.getDisplayNames(ULocale.US,
+                            new Comparator() {
+                                public int compare(Object lhs, Object rhs) {
+                                return -String.CASE_INSENSITIVE_ORDER.compare((String)lhs, (String)rhs);
+                                }
+                            },
+                            "es");
+
+            logln("es display names in reverse order " + map);
+        }
+    }
+
+    public void TestWrapFactory() {
+        final String greeting = "Hello There";
+        final String greetingID = "greeting";
+
+        ICUService service = new ICUService("wrap");
+        service.registerObject(greeting, greetingID);
+
+        logln("test one: " + service.get(greetingID));
+
+        class WrapFactory implements Factory {
+            public Object create(Key key, ICUService serviceArg) {
+                if (key.currentID().equals(greetingID)) {
+                    Object previous = serviceArg.getKey(key, null, this);
+                    return "A different greeting: \"" + previous + "\"";
+                }
+                return null;
+            }
+
+            public void updateVisibleIDs(Map result) {
+                result.put("greeting", this);
+            }
+
+            public String getDisplayName(String id, ULocale locale) {
+                return "wrap '" + id + "'";
+            }
+        }
+        service.registerFactory(new WrapFactory());
+
+        confirmEqual("wrap test: ", service.get(greetingID), "A different greeting: \"" + greeting + "\"");
+    }
+
+    // misc coverage tests
+    public void TestCoverage() {
+    // Key
+    Key key = new Key("foobar");
+    logln("ID: " + key.id());
+    logln("canonicalID: " + key.canonicalID());
+    logln("currentID: " + key.currentID());
+    logln("has fallback: " + key.fallback());
+
+    // SimpleFactory
+    Object obj = new Object();
+    SimpleFactory sf = new SimpleFactory(obj, "object");
+    try {
+        sf = new SimpleFactory(null, null);
+        errln("didn't throw exception");
+    }
+    catch (IllegalArgumentException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+    logln(sf.getDisplayName("object", null));
+
+    // ICUService
+    ICUService service = new ICUService();
+    service.registerFactory(sf);
+
+    try {
+        service.get(null, null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+        /*
+      catch (Exception e) {
+      errln("threw wrong exception" + e);
+      }
+        */
+    try {
+        service.registerFactory(null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+
+    try {
+        service.unregisterFactory(null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+
+    logln("object is: " + service.get("object"));
+
+    logln("stats: " + service.stats());
+
+    // ICURWLock
+
+    ICURWLock rwlock = new ICURWLock();
+    rwlock.acquireRead();
+    rwlock.releaseRead();
+
+    rwlock.acquireWrite();
+    rwlock.releaseWrite();
+    logln("stats: " + rwlock.getStats());
+    logln("stats: " + rwlock.clearStats());
+    rwlock.acquireRead();
+    rwlock.releaseRead();
+    rwlock.acquireWrite();
+    rwlock.releaseWrite();
+    logln("stats: " + rwlock.getStats());
+
+    try {
+        rwlock.releaseRead();
+        errln("no error thrown");
+    }
+    catch (IllegalStateException e) {
+        logln("OK: " + e.getMessage());
+    }
+
+    try {
+        rwlock.releaseWrite();
+        errln("no error thrown");
+    }
+    catch (IllegalStateException e) {
+        logln("OK: " + e.getMessage());
+    }
+
+        // ICULocaleService
+
+    // LocaleKey
+
+    // LocaleKey lkey = LocaleKey.create("en_US", "ja_JP");
+    // lkey = LocaleKey.create(null, null);
+    LocaleKey lkey = LocaleKey.createWithCanonicalFallback("en_US", "ja_JP");
+        logln("lkey: " + lkey);
+
+        lkey = LocaleKey.createWithCanonicalFallback(null, null);
+        logln("lkey from null,null: " + lkey);
+
+    // LocaleKeyFactory
+    LocaleKeyFactory lkf = new LKFSubclass(false);
+        logln("lkf: " + lkf);
+    logln("obj: " + lkf.create(lkey, null));
+    logln(lkf.getDisplayName("foo", null));
+    logln(lkf.getDisplayName("bar", null));
+    lkf.updateVisibleIDs(new HashMap());
+
+    LocaleKeyFactory invisibleLKF = new LKFSubclass(false);
+    logln("obj: " + invisibleLKF.create(lkey, null));
+    logln(invisibleLKF.getDisplayName("foo", null));
+    logln(invisibleLKF.getDisplayName("bar", null));
+    invisibleLKF.updateVisibleIDs(new HashMap());
+
+    // ResourceBundleFactory
+    ICUResourceBundleFactory rbf = new ICUResourceBundleFactory();
+    logln("RB: " + rbf.create(lkey, null));
+
+    // ICUNotifier
+    ICUNotifier nf = new ICUNSubclass();
+    try {
+        nf.addListener(null);
+        errln("added null listener");
+    }
+    catch (NullPointerException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    try {
+        nf.addListener(new WrongListener());
+        errln("added wrong listener");
+    }
+    catch (IllegalStateException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    try {
+        nf.removeListener(null);
+        errln("removed null listener");
+    }
+    catch (NullPointerException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    nf.removeListener(new MyListener());
+    nf.notifyChanged();
+    nf.addListener(new MyListener());
+    nf.removeListener(new MyListener());
+    }
+
+    static class MyListener implements EventListener {
+    }
+
+    static class WrongListener implements EventListener {
+    }
+
+    static class ICUNSubclass extends ICUNotifier {
+        public boolean acceptsListener(EventListener l) {
+            return l instanceof MyListener;
+        }
+    
+        // not used, just needed to implement abstract base
+        public void notifyListener(EventListener l) {
+        }
+    }
+
+    static class LKFSubclass extends LocaleKeyFactory {
+    LKFSubclass(boolean visible) {
+        super(visible ? VISIBLE : INVISIBLE);
+    }
+
+    protected Set getSupportedIDs() {
+            return Collections.EMPTY_SET;
+    }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
new file mode 100644
index 0000000..baaab7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
@@ -0,0 +1,218 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceTestSample {
+    static public void main(String[] args) {
+        HelloServiceClient client = new HelloServiceClient();
+
+        Thread t = new HelloUpdateThread();
+        t.start();
+        try {
+            t.join();
+        }
+        catch (InterruptedException e) {
+        }
+        System.out.println("done");
+        if(client==null){
+        }
+    }
+
+    /**
+     * A class that displays the current names in the Hello service.
+     * Each time the service changes, it redisplays the names.
+     */
+    static class HelloServiceClient implements HelloService.HelloServiceListener {
+
+        HelloServiceClient() {
+            HelloService.addListener(this);
+            display();
+        }
+
+
+        /**
+         * This will be called in the notification thread of
+         * ICUNotifier.  ICUNotifier could spawn a (non-daemon) thread
+         * for each listener, so that impolite listeners wouldn't hold
+         * up notification, but right now it doesn't.  Instead, all
+         * notifications are delivered on the notification thread.
+         * Since that's a daemon thread, a notification might not
+         * complete before main terminates.  
+         */
+        public void helloServiceChanged() {
+            display();
+        }
+
+        private void display() {
+            Map names = HelloService.getDisplayNames(ULocale.US);
+            System.out.println("displaying " + names.size() + " names.");
+            Iterator iter = names.entrySet().iterator();
+            while (iter.hasNext()) {
+                Entry entry = (Entry)iter.next();
+                String displayName = (String)entry.getKey();
+                HelloService service = HelloService.get((String)entry.getValue());
+                System.out.println(displayName + " says " + service.hello());
+                try {
+                    Thread.sleep(50);
+                }
+                catch (InterruptedException e) {
+                }
+            }
+            System.out.println("----");
+        }
+    }
+
+    /**
+     * A thread to update the service.
+     */
+    static class HelloUpdateThread extends Thread {
+        String[][] updates = {
+            { "Hey", "en_US_INFORMAL" },
+            { "Hallo", "de_DE_INFORMAL" },
+            { "Yo!", "en_US_CALIFORNIA_INFORMAL" },
+            { "Chi Fanle Ma?", "zh__INFORMAL" },
+            { "Munch munch... Burger?", "en" },
+            { "Sniff", "fr" },
+            { "TongZhi! MaoZeDong SiXiang Wan Sui!", "zh_CN" },
+            { "Bier? Ja!", "de" },
+        };
+        public void run() {
+            for (int i = 0; i < updates.length; ++i) {
+                try {
+                    Thread.sleep(500);
+                }
+                catch (InterruptedException e) {
+                }
+                HelloService.register(updates[i][0], new ULocale(updates[i][1]));
+            }
+        }
+    }
+
+    /**
+     * An example service that wraps an ICU service in order to export custom API and
+     * notification. The service just implements 'hello'.
+     */
+    static final class HelloService {
+        private static ICUService registry;
+        private String name;
+    
+        private HelloService(String name) { 
+            this.name = name; 
+        }
+    
+        /**
+         * The hello service...
+         */
+        public String hello() { 
+            return name; 
+        }
+        
+        public String toString() { 
+            return super.toString() + ": " + name; 
+        }
+    
+        /**
+         * Deferred init.
+         */
+        private static ICUService registry() {
+            if (registry == null) {
+                initRegistry();
+            }
+            return registry;
+        }
+    
+        private static void initRegistry() {
+            registry = new ICULocaleService() {
+                    protected boolean acceptsListener(EventListener l) {
+                        return true; // we already verify in our wrapper APIs
+                    }
+                    protected void notifyListener(EventListener l) {
+                        ((HelloServiceListener)l).helloServiceChanged();
+                    }
+                };
+    
+            // initialize
+            doRegister("Hello", "en");
+            doRegister("Bonjour", "fr");
+            doRegister("Ni Hao", "zh_CN");
+            doRegister("Guten Tag", "de");
+        }
+    
+        /**
+         * A custom listener for changes to this service.  We don't need to
+         * point to the service since it is defined by this class and not
+         * an object.
+         */
+        public static interface HelloServiceListener extends EventListener {
+            public void helloServiceChanged();
+        }
+    
+        /**
+         * Type-safe notification for this service.
+         */
+        public static void addListener(HelloServiceListener l) {
+            registry().addListener(l);
+        }
+    
+        /**
+         * Type-safe notification for this service.
+         */
+        public static void removeListener(HelloServiceListener l) {
+            registry().removeListener(l);
+        }
+    
+        /**
+         * Type-safe access to the service.
+         */
+        public static HelloService get(String id) {
+            return (HelloService)registry().get(id);
+        }
+    
+        public static Set getVisibleIDs() {
+            return registry().getVisibleIDs();
+        }
+    
+        public static Map getDisplayNames(ULocale locale) {
+            return getDisplayNames(registry(), locale);
+        }
+    
+        /**
+         * Register a new hello string for this locale.
+         */
+        public static void register(String helloString, ULocale locale) {
+            if (helloString == null || locale == null) {
+                throw new NullPointerException();
+            }
+            doRegister(helloString, locale.toString());
+        }
+    
+        private static void doRegister(String hello, String id) {
+            registry().registerObject(new HelloService(hello), id);
+        }
+        /**
+         * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+         * uses the default collator for the locale as the comparator to
+         * sort the display names, and null for the matchID.
+         */
+        public static SortedMap getDisplayNames(ICUService service, ULocale locale) {
+            Collator col = Collator.getInstance(locale);
+            return service.getDisplayNames(locale, col, null);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
new file mode 100644
index 0000000..2a4e8de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
@@ -0,0 +1,482 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestLog;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.MissingResourceException;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceThreadTest extends TestFmwk
+{    
+    private static final boolean PRINTSTATS = false;
+
+    public static void main(String[] args) throws Exception {
+        ICUServiceThreadTest test = new ICUServiceThreadTest();
+        test.run(args);
+
+        // get
+        // getvisibleids
+        // getdisplayname(locale)
+        // factories
+    
+        // registerFactory
+        // unregisterFactory
+
+        // 1) concurrent access
+        // 2) access while factories change
+        // 3) iteration while factories change
+        // 4) concurrent conflicting access
+    }
+
+    private static final String[] countries = {
+        "ab", "bc", "cd", "de", "ef", "fg", "gh", "ji", "ij", "jk"
+    };
+    private static final String[] languages = {
+        "", "ZY", "YX", "XW", "WV", "VU", "UT", "TS", "SR", "RQ", "QP"
+    };
+    private static final String[] variants = {
+        "", "", "", "GOLD", "SILVER", "BRONZE"
+    };
+
+    private static class TestFactory extends SimpleFactory {
+        TestFactory(String id) {
+            super(new ULocale(id), id, true);
+        }
+
+        public String getDisplayName(String idForDisplay, ULocale locale) {
+            return (visible && idForDisplay.equals(this.id)) ? "(" + locale.toString() + ") " + idForDisplay : null;
+        }
+
+        public String toString() {
+            return "Factory_" + id;
+        }
+    }
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names, and null for the matchID.
+     */
+    public static SortedMap getDisplayNames(ICUService service, ULocale locale) {
+        Collator col;
+        try {
+            col = Collator.getInstance(locale);
+        } 
+        catch (MissingResourceException e) {
+            // if no collator resources, we can't collate
+            col = null;
+        }
+        return service.getDisplayNames(locale, col, null);
+    }
+    private static final Random r = new Random(); // this is a multi thread test, can't 'unrandomize' 
+
+    private static String getCLV() {
+        String c = countries[r.nextInt(countries.length)];
+        String l = languages[r.nextInt(languages.length)];
+        String v = variants[r.nextInt(variants.length)];
+        return new Locale(c, l, v).toString();
+    }
+
+    private static boolean WAIT = true;
+    private static boolean GO = false;
+    private static long TIME = 5000;
+
+    public static void runThreads() {
+        runThreads(TIME);
+    }
+
+    public static void runThreads(long time) {
+        try {
+            GO = true;
+            WAIT = false;
+
+            Thread.sleep(time);
+
+            WAIT = true;
+            GO = false;
+
+            Thread.sleep(300);
+        }
+        catch (InterruptedException e) {
+        }
+    }
+
+    static class TestThread extends Thread {
+        //private final String name;
+        protected ICUService service;
+        private final long delay;
+        protected final TestLog log;
+
+        public TestThread(String name, ICUService service, long delay, TestLog log) {
+            //this.name = name + " ";
+            this.service = service;
+            this.delay = delay;
+            this.log = new DelegatingLog(log);
+            this.setDaemon(true);
+        }
+
+        public void run() {
+            while (WAIT) {
+                Thread.yield();
+            }
+
+            try {
+                while (GO) {
+                    iterate();
+                    if (delay > 0) {
+                        Thread.sleep(delay);
+                    }
+                }
+            }
+            catch (InterruptedException e) {
+            }
+        }
+
+        protected void iterate() {
+        }
+
+        /*
+          public boolean logging() {
+          return log != null;
+          }
+
+          public void log(String msg) {
+          if (logging()) {
+          log.log(name + msg);
+          }
+          }
+
+          public void logln(String msg) {
+          if (logging()) {
+          log.logln(name + msg);
+          }
+          }
+
+          public void err(String msg) {
+          if (logging()) {
+          log.err(name + msg);
+          }
+          }
+
+          public void errln(String msg) {
+          if (logging()) {
+          log.errln(name + msg);
+          }
+          }
+
+          public void warn(String msg) {
+          if (logging()) {
+          log.info(name + msg);
+          }
+          }
+
+          public void warnln(String msg) {
+          if (logging()) {
+          log.infoln(name + msg);
+          }
+          }
+        */
+    }
+
+    static class RegisterFactoryThread extends TestThread {
+        RegisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+            super("REG " + name, service, delay, log);
+        }
+
+        protected void iterate() {
+            Factory f = new TestFactory(getCLV());
+            service.registerFactory(f);
+            log.logln(f.toString());
+        }
+    }
+
+    static class UnregisterFactoryThread extends TestThread {
+        private Random r;
+        List factories;
+
+        UnregisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+            super("UNREG " + name, service, delay, log);
+        
+            r = new Random();
+            factories = service.factories();
+        }
+
+        public void iterate() {
+            int s = factories.size();
+            if (s == 0) {
+                factories = service.factories();
+            } else {
+                int n = r.nextInt(s);
+                Factory f = (Factory)factories.remove(n);
+                boolean success = service.unregisterFactory(f);
+                log.logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+            }
+        }
+    }
+
+    static class UnregisterFactoryListThread extends TestThread {
+        Factory[] factories;
+        int n;
+
+        UnregisterFactoryListThread(String name, ICUService service, long delay, Factory[] factories, TestLog log) {
+            super("UNREG " + name, service, delay, log);
+        
+            this.factories = factories;
+        }
+
+        public void iterate() {
+            if (n < factories.length) {
+                Factory f = factories[n++];
+                boolean success = service.unregisterFactory(f);
+                log.logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+            }
+        }
+    }
+
+
+    static class GetVisibleThread extends TestThread {
+        GetVisibleThread(String name, ICUService service, long delay, TestLog log) {
+            super("VIS " + name, service, delay, log);
+        }
+
+        protected void iterate() {
+            Set ids = service.getVisibleIDs();
+            Iterator iter = ids.iterator();
+            int n = 10;
+            while (--n >= 0 && iter.hasNext()) {
+                String id = (String)iter.next();
+                Object result = service.get(id);
+                log.logln("iter: " + n + " id: " + id + " result: " + result);
+            }
+        }
+    }
+
+    static class GetDisplayThread extends TestThread {
+        ULocale locale;
+
+        GetDisplayThread(String name, ICUService service, long delay, ULocale locale, TestLog log) {
+            super("DIS " + name, service, delay, log);
+
+            this.locale = locale;
+        }
+
+        protected void iterate() {
+            Map names = getDisplayNames(service,locale);
+            Iterator iter = names.entrySet().iterator();
+            int n = 10;
+            while (--n >= 0 && iter.hasNext()) {
+                Entry e = (Entry)iter.next();
+                String dname = (String)e.getKey();
+                String id = (String)e.getValue();
+                Object result = service.get(id);
+
+                // Note: IllegalMonitorStateException is thrown by the code
+                // below on IBM JRE5 for AIX 64bit.  For some reason, converting
+                // int to String out of this statement resolves the issue.
+
+                //log.logln(" iter: " + n + 
+                String num = Integer.toString(n);
+                log.logln(" iter: " + num + 
+                          " dname: " + dname + 
+                          " id: " + id + 
+                          " result: " + result);
+            }
+        }
+    }
+
+    static class GetThread extends TestThread {
+        private String[] actualID;
+
+        GetThread(String name, ICUService service, long delay, TestLog log) {
+            super("GET " + name, service, delay, log);
+
+            actualID = new String[1];
+        }
+
+        protected void iterate() {
+            String id = getCLV();
+            Object o = service.get(id, actualID);
+            if (o != null) {
+                log.logln(" id: " + id + " actual: " + actualID[0] + " result: " + o);
+            }
+        }
+    }
+
+    static class GetListThread extends TestThread {
+        private final String[] list;
+        private int n;
+
+        GetListThread(String name, ICUService service, long delay, String[] list, TestLog log) {
+            super("GETL " + name, service, delay, log);
+
+            this.list = list;
+        }
+
+        protected void iterate() {
+            if (--n < 0) {
+                n = list.length - 1;
+            }
+            String id = list[n];
+            Object o = service.get(id);
+            log.logln(" id: " + id + " result: " + o);
+        }
+    }
+
+    // return a collection of unique factories, might be fewer than requested
+    Collection getFactoryCollection(int requested) {
+        Set locales = new HashSet();
+        for (int i = 0; i < requested; ++i) {
+            locales.add(getCLV());
+        }
+        List factories = new ArrayList(locales.size());
+        Iterator iter = locales.iterator();
+        while (iter.hasNext()) {
+            factories.add(new TestFactory((String)iter.next()));
+        }
+        return factories;
+    }
+
+    void registerFactories(ICUService service, Collection c) {
+        Iterator iter = c.iterator();
+        while (iter.hasNext()) {
+            service.registerFactory((Factory)iter.next());
+        }
+    }
+
+    ICUService stableService() {
+        if (stableService == null) {
+            stableService = new ICULocaleService();
+            registerFactories(stableService, getFactoryCollection(50));
+        }
+        return stableService;
+    }
+    private ICUService stableService;
+
+    // run multiple get on a stable service
+    public void Test00_ConcurrentGet() {
+        for(int i = 0; i < 10; ++i) {
+            new GetThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getVisibleID on a stable service
+    public void Test01_ConcurrentGetVisible() {
+        for(int i = 0; i < 10; ++i) {
+            new GetVisibleThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getDisplayName on a stable service
+    public void Test02_ConcurrentGetDisplay() {
+        String[] localeNames = {
+            "en", "es", "de", "fr", "zh", "it", "no", "sv"
+        };
+        for(int i = 0; i < localeNames.length; ++i) {
+            String locale = localeNames[i];
+            new GetDisplayThread("[" + locale + "]",  
+                                 stableService(), 
+                                 0,
+                                 new ULocale(locale),
+                                 this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run register/unregister on a service
+    public void Test03_ConcurrentRegUnreg() {
+        ICUService service = new ICULocaleService();
+        for (int i = 0; i < 5; ++i) {
+            new RegisterFactoryThread("[" + i + "]", service, 0, this).start();
+        }
+        for (int i = 0; i < 5; ++i) {
+            new UnregisterFactoryThread("[" + i + "]", service, 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+    
+    public void Test04_WitheringService() {
+        ICUService service = new ICULocaleService();
+
+        Collection fc = getFactoryCollection(50);
+        registerFactories(service, fc);
+
+        Factory[] factories = (Factory[])fc.toArray(new Factory[fc.size()]);
+        Comparator comp = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    return lhs.toString().compareTo(rhs.toString());
+                }
+            };
+        Arrays.sort(factories, comp);
+
+        new GetThread("", service, 0, this).start();
+        new UnregisterFactoryListThread("", service, 3, factories, this).start();
+
+        runThreads(2000);
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+    
+    // "all hell breaks loose"
+    // one register and one unregister thread, delay 500ms
+    // two display threads with different locales, delay 500ms;
+    // one visible id thread, delay 50ms
+    // fifteen get threads, delay 0
+    // run for ten seconds
+    public void Test05_ConcurrentEverything() {
+        ICUService service = new ICULocaleService();
+
+        new RegisterFactoryThread("", service, 500, this).start();
+
+        for(int i = 0; i < 15; ++i) {
+            new GetThread("[" + Integer.toString(i) + "]", service, 0, this).start();
+        }
+
+        new GetVisibleThread("",  service, 50, this).start();
+
+        String[] localeNames = {
+            "en", "de"
+        };
+        for(int i = 0; i < localeNames.length; ++i) {
+            String locale = localeNames[i];
+            new GetDisplayThread("[" + locale + "]",  
+                                 stableService(), 
+                                 500,
+                                 new ULocale(locale),
+                                 this).start();
+        }
+
+        new UnregisterFactoryThread("", service, 500, this).start();
+
+        // yoweee!!!
+        runThreads(10000);
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java b/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
new file mode 100644
index 0000000..733fe5c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
@@ -0,0 +1,237 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/*
+ * New added, 2005-5-10 [Terry/SGL]
+ * Major modification by Ram
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.HashMap;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+public class LocaleAliasTest extends com.ibm.icu.dev.test.TestFmwk {
+    private static final ULocale[][] _LOCALES = {
+
+            {new ULocale("en", "RH"), new ULocale("en", "ZW")},
+            {new ULocale("in"), new ULocale("id")},
+            {new ULocale("in", "ID"), new ULocale("id", "ID")},
+            {new ULocale("iw"), new ULocale("he")},
+            {new ULocale("iw", "IL"), new ULocale("he", "IL")},
+            {new ULocale("ji"), new ULocale("yi")},
+            
+            {new ULocale("en", "BU"), new ULocale("en", "MM")},
+            {new ULocale("en", "DY"), new ULocale("en", "BJ")},
+            {new ULocale("en", "HV"), new ULocale("en", "BF")},
+            {new ULocale("en", "NH"), new ULocale("en", "VU")},
+            {new ULocale("en", "TP"), new ULocale("en", "TL")},
+            {new ULocale("en", "ZR"), new ULocale("en", "CD")}
+    };
+    
+    private static final int _LOCALE_NUMBER = _LOCALES.length;
+    private static ULocale[] available = null;
+    private HashMap availableMap = new HashMap();
+    private static final ULocale _DEFAULT_LOCALE = ULocale.US;
+    
+    public LocaleAliasTest(){
+    }
+    protected void init(){
+        available = ULocale.getAvailableLocales();
+        for(int i=0; i<available.length;i++){
+            availableMap.put(available[i].toString(),"");
+        }
+    }
+    public static void main(String[] args) {
+        new LocaleAliasTest().run(args);
+    }
+    public void TestCalendar() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            Calendar c1 = Calendar.getInstance(oldLoc);
+            Calendar c2 = Calendar.getInstance(newLoc);
+            c1.setTime(c2.getTime());
+            //Test function "getFirstDayOfWeek"
+    //        int firstDayOfWeek1 = c1.getFirstDayOfWeek();
+    //        int firstDayOfWeek2 = c2.getFirstDayOfWeek();
+    //        if (firstDayOfWeek1 != firstDayOfWeek2) {
+    //            this.logln("Calendar(getFirstDayOfWeek) old:"
+    //                    +firstDayOfWeek1+"   new:"+firstDayOfWeek2);
+    //            pass = false;
+    //        }
+                    
+            //Test function "getLocale(ULocale.VALID_LOCALE)"
+            ULocale l1 = c1.getLocale(ULocale.VALID_LOCALE);
+            ULocale l2 = c2.getLocale(ULocale.VALID_LOCALE);
+            if (!newLoc.equals(l1)) {
+                errln("CalendarTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("CalendarTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            if(!c1.equals(c2)){
+                errln("CalendarTest: c1!=c2.  newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+            logln("Calendar(getLocale) old:"+l1+"   new:"+l2);    
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void  TestDateFormat() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL, oldLoc);
+            DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, newLoc);
+            
+            //Test function "getLocale"
+            ULocale l1 = df1.getLocale(ULocale.VALID_LOCALE);
+            ULocale l2 = df2.getLocale(ULocale.VALID_LOCALE);
+            if (!newLoc.equals(l1)) {
+                errln("DateFormatTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("DateFormatTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            if (!df1.equals(df2)) {
+                errln("DateFormatTest: df1!=df2: newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+            this.logln("DateFormat(getLocale) old:"+l1+"   new:"+l2);
+            
+            //Test function "format"
+    //        Date d = new Date();
+    //        String d1 = df1.format(d);
+    //        String d2 = df2.format(d);
+    //        if (!d1.equals(d2)) {
+    //            pass = false;
+    //        }
+    //        this.logln("DateFormat(format) old:"+d1+"   new:"+d2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestCollation() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            Collator c1 = Collator.getInstance(oldLoc);
+            Collator c2 = Collator.getInstance(newLoc);
+            
+            if (!c1.equals(c2)) {
+                errln("CollationTest: c1!=c2: newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+ 
+            logln("Collation old:"+oldLoc+"   new:"+newLoc);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestULocale() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            ULocale ul1 = new ULocale(oldLoc.toString());
+            ULocale ul2 = new ULocale(newLoc.toString());
+            
+            String name1 = ul1.getDisplayName();
+            String name2 = ul2.getDisplayName();
+            if (!name1.equals(name2)) {
+                errln("name1!=name2. name1 = " + name1 +" name2 = " +name2);
+            }
+            logln("ULocale(getDisplayName) old:"+name1+"   new:"+name2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestDisplayName() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+
+            for(int j=0; j<available.length; j++){
+               String oldCountry = oldLoc.getDisplayCountry(available[j]);
+               String newCountry = newLoc.getDisplayCountry(available[j]);
+               String oldLang = oldLoc.getDisplayLanguage(available[j]);
+               String newLang = newLoc.getDisplayLanguage(available[j]);
+               
+               // is  there  display name for the current country ID               
+               if(!newCountry.equals(newLoc.getCountry())){
+                   if(!oldCountry.equals(newCountry)){
+                       errln("getCountry() failed for "+ oldLoc +" oldCountry= "+ prettify(oldCountry) +" newCountry = "+prettify(newCountry)+ " in display locale "+ available[j].toString());
+                   }
+               }
+               //there is a display name for the current lang ID               
+               if(!newLang.equals(newLoc.getLanguage())){
+                   if(!oldLang.equals(newLang)){
+                       errln("getLanguage() failed for " + oldLoc + " oldLang = "+ prettify(oldLang) +" newLang = "+prettify(newLang)+ " in display locale "+ available[j].toString());
+                   }
+               }
+            }
+        }
+        ULocale.setDefault(defLoc);
+    }
+    public void TestUResourceBundle() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            UResourceBundle urb1 = null;
+            UResourceBundle urb2 = null;
+            
+            urb1 = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, oldLoc);
+            urb2 = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, newLoc);
+            ULocale l1 = urb1.getULocale();
+            ULocale l2 = urb2.getULocale();        
+            if (!newLoc.equals(l1)) {
+                errln("ResourceBundleTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("ResourceBundleTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            this.logln("UResourceBundle old:"+l1+"   new:"+l2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/LocaleDataTest.java b/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
new file mode 100644
index 0000000..48512b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
@@ -0,0 +1,284 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import java.util.HashSet;
+import java.util.Arrays;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class LocaleDataTest extends TestFmwk{
+
+    public static void main(String[] args) throws Exception{
+        new LocaleDataTest().run(args);
+    }
+    
+    private ULocale[] availableLocales = null;
+    
+    public LocaleDataTest(){
+    }
+    protected void init(){
+        availableLocales = ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+    public void TestPaperSize(){
+        for(int i = 0; i < availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData.PaperSize paperSize = LocaleData.getPaperSize(locale);
+            // skip testing of "in" .. deprecated code for Indonesian
+            String lang = locale.getLanguage();
+            if(lang.equals("in")){
+                continue;
+            }
+            if(locale.toString().indexOf("_US") >= 0 || locale.toString().indexOf("_CA") >= 0 ){
+                if(paperSize.getHeight()!= 279 || paperSize.getWidth() != 216 ){
+                    errln("PaperSize did not return the expected value for locale "+ locale+
+                          " Expected height: 279 width: 216."+
+                          " Got height: "+paperSize.getHeight()+" width: "+paperSize.getWidth()
+                           );
+                }else{
+                    logln("PaperSize returned the expected values for locale " + locale);
+                }
+            }else{
+                if(paperSize.getHeight()!= 297 || paperSize.getWidth() != 210 ){
+                    errln("PaperSize did not return the expected value for locale "+ locale +
+                          " Expected height: 297 width: 210."+
+                          " Got height: "+paperSize.getHeight() +" width: "+paperSize.getWidth() 
+                           );
+                }else{
+                    logln("PaperSize returned the expected values for locale " + locale);
+                }
+            }
+        }
+    }
+    public void TestMeasurementSystem(){
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData.MeasurementSystem ms = LocaleData.getMeasurementSystem(locale);
+            // skip testing of "in" .. deprecated code for Indonesian
+            String lang = locale.getLanguage();
+            if(lang.equals("in")){
+                continue;
+            }           
+            if(locale.toString().indexOf("_US") >= 0){
+                if(ms == LocaleData.MeasurementSystem.US){
+                    logln("Got the expected measurement system for locale: " + locale);
+                }else{
+                    errln("Did not get the expected measurement system for locale: "+ locale);
+                }
+            }else{
+                if(ms == LocaleData.MeasurementSystem.SI){
+                    logln("Got the expected measurement system for locale: " + locale);
+                }else{
+                    errln("Did not get the expected measurement system for locale: "+ locale);
+                } 
+            }
+        }
+    }
+    
+    // Bundle together a UnicodeSet (of expemplars) and ScriptCode combination.
+    //   We keep a set of combinations that have already been tested, to
+    //   avoid repeated (time consuming) retesting of the same data.
+    //   Instances of this class must be well behaved as members of a set.
+    static class ExemplarGroup {
+        private int[] scs;
+        private UnicodeSet set;
+        
+        ExemplarGroup(UnicodeSet s, int[] scriptCodes) {
+            set = s;
+            scs = scriptCodes;
+        }
+        public int hashCode() {
+            int hash = 0;
+            for (int i=0; i<scs.length && i<4; i++) {
+                hash = (hash<<8)+scs[i];
+            }
+            return hash;
+        }        
+        public boolean equals(Object other) {
+            ExemplarGroup o = (ExemplarGroup)other;
+            boolean r = Arrays.equals(scs, o.scs) &&
+                         set.equals(o.set);
+            return r;
+        }
+    }
+    
+    public void TestExemplarSet(){
+        HashSet  testedExemplars = new HashSet();
+        int equalCount = 0;
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            int[] scriptCodes = UScript.getCode(locale);
+            if (scriptCodes==null) {
+                // I hate the JDK's solution for deprecated language codes.
+                // Why does the Locale constructor change the string I passed to it ?
+                // such a broken hack !!!!!
+                // so in effect I can never test the script code for Indonesian :(
+                if(locale.toString().indexOf(("in"))<0){
+                    errln("UScript.getCode returned null for locale: " + locale); 
+                }
+                continue;
+            }
+            UnicodeSet exemplarSets[] = new UnicodeSet[2];
+            for (int k=0; k<2; ++k) {   // for casing option in (normal, caseInsensitive)
+                int option = (k==0) ? 0 : UnicodeSet.CASE;
+                UnicodeSet exemplarSet = LocaleData.getExemplarSet(locale, option);
+                exemplarSets[k] = exemplarSet;
+                ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes);
+                if (!testedExemplars.contains(exGrp)) {
+                    testedExemplars.add(exGrp);
+                    UnicodeSet[] sets = new UnicodeSet[scriptCodes.length];
+                    // create the UnicodeSets for the script
+                    for(int j=0; j < scriptCodes.length; j++){
+                        sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]");
+                    }
+                    boolean existsInScript = false;
+                    UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet);
+                    // iterate over the 
+                    while (!existsInScript && iter.nextRange()) {
+                        if (iter.codepoint != UnicodeSetIterator.IS_STRING) {
+                            for(int j=0; j<sets.length; j++){
+                                if(sets[j].contains(iter.codepoint, iter.codepointEnd)){
+                                    existsInScript = true;
+                                    break;
+                                }
+                            }
+                        } else {
+                            for(int j=0; j<sets.length; j++){
+                                if(sets[j].contains(iter.string)){
+                                    existsInScript = true;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    if(existsInScript == false){
+                        errln("ExemplarSet containment failed for locale : "+ locale);
+                    }
+                }
+            }
+            // This is expensive, so only do it if it will be visible
+            if (isVerbose()) {
+                logln(locale.toString() + " exemplar " + exemplarSets[0]);
+                logln(locale.toString() + " exemplar(case-folded) " + exemplarSets[1]);
+            }
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[1].containsAll(exemplarSets[0]));
+            if (exemplarSets[1].equals(exemplarSets[0])) {
+                ++equalCount;
+            }
+        }
+        // Note: The case-folded set should sometimes be a strict superset
+        // and sometimes be equal.
+        assertTrue("case-folded is sometimes a strict superset, and sometimes equal",
+                   equalCount > 0 && equalCount < availableLocales.length);
+    }
+    public void TestExemplarSet2(){
+        int equalCount = 0;
+        HashSet  testedExemplars = new HashSet();
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData ld = LocaleData.getInstance(locale);
+            int[] scriptCodes = UScript.getCode(locale);
+            if (scriptCodes==null) {
+                if(locale.toString().indexOf(("in"))<0){
+                    errln("UScript.getCode returned null for locale: "+ locale); 
+                }
+                continue;
+            }
+            UnicodeSet exemplarSets[] = new UnicodeSet[4];
+
+            for (int k=0; k<2; ++k) {  // for casing option in (normal, uncased)
+                int option = (k==0) ? 0 : UnicodeSet.CASE;
+                for(int h=0; h<2; ++h){  
+                    int type = (h==0) ? LocaleData.ES_STANDARD : LocaleData.ES_AUXILIARY;
+
+                    UnicodeSet exemplarSet = ld.getExemplarSet(option, type);
+                    exemplarSets[k*2+h] = exemplarSet;
+
+                    ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes);
+                    if (!testedExemplars.contains(exGrp)) {
+                        testedExemplars.add(exGrp);
+                        UnicodeSet[] sets = new UnicodeSet[scriptCodes.length];
+                        // create the UnicodeSets for the script
+                        for(int j=0; j < scriptCodes.length; j++){
+                            sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]");
+                        }
+                        boolean existsInScript = false;
+                        UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet);
+                        // iterate over the 
+                        while (!existsInScript && iter.nextRange()) {
+                            if (iter.codepoint != UnicodeSetIterator.IS_STRING) {
+                                for(int j=0; j<sets.length; j++){
+                                    if(sets[j].contains(iter.codepoint, iter.codepointEnd)){
+                                        existsInScript = true;
+                                        break;
+                                    }
+                                }
+                            } else {
+                                for(int j=0; j<sets.length; j++){
+                                    if(sets[j].contains(iter.string)){
+                                        existsInScript = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // TODO: How to verify LocaleData.ES_AUXILIARY ???
+                        if(existsInScript == false && h == 0){
+                            errln("ExemplarSet containment failed for locale,option,type : "+ locale + ", " + option + ", " + type);
+                        }
+                    }
+                }
+            }
+            // This is expensive, so only do it if it will be visible
+            if (isVerbose()) {
+                logln(locale.toString() + " exemplar(ES_STANDARD)" + exemplarSets[0]);
+                logln(locale.toString() + " exemplar(ES_AUXILIARY) " + exemplarSets[1]);
+                logln(locale.toString() + " exemplar(case-folded,ES_STANDARD) " + exemplarSets[2]);
+                logln(locale.toString() + " exemplar(case-folded,ES_AUXILIARY) " + exemplarSets[3]);
+            }
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[2].containsAll(exemplarSets[0]));
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[3].containsAll(exemplarSets[1]));
+            if (exemplarSets[2].equals(exemplarSets[0])) {
+                ++equalCount;
+            }
+            if (exemplarSets[3].equals(exemplarSets[1])) {
+                ++equalCount;
+            }
+        }
+        // Note: The case-folded set should sometimes be a strict superset
+        // and sometimes be equal.
+        assertTrue("case-folded is sometimes a strict superset, and sometimes equal",
+                equalCount > 0 && equalCount < availableLocales.length * 2);
+    }
+    public void TestCoverage(){
+        LocaleData ld = LocaleData.getInstance();
+        boolean t = ld.getNoSubstitute();
+        ld.setNoSubstitute(t);
+        assertEquals("LocaleData get/set NoSubstitute",
+                t,
+                ld.getNoSubstitute());
+    
+        logln(ld.getDelimiter(LocaleData.QUOTATION_START));
+        logln(ld.getDelimiter(LocaleData.QUOTATION_END));
+        logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_START));
+        logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_END));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Lockable.java b/src/com/ibm/icu/dev/test/util/Lockable.java
new file mode 100644
index 0000000..65eab64
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Lockable.java
@@ -0,0 +1,34 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+/**
+ * Provides a flexible mechanism for controlling access, without requiring that a class be immutable.
+ * Once locked, an object can never be unlocked, so it is thread-safe from that point onward.
+ * The implementation of both methods must be synchronized.
+ * Once the object has been locked, it must guarantee that no changes can be made to it.
+ * Any attempt to alter it must raise an UnsupportedOperationException exception.
+ * This means that when the object returns internal objects,
+ * or if anyone has references to those internal objects, that those internal objects must either be immutable,
+ * or must also raise exceptions if any attempt to modify them is made. Of course, the object can return clones
+ * of internal objects, since those are safe. * @author davis
+ */
+public interface Lockable extends Cloneable {
+    /**
+     * Determines whether the object has been locked or not.
+     */
+    public boolean isLocked();
+    /**
+     * Locks the object.
+     * @return the object itself.
+     */
+    public Object lock();
+    /**
+     * Provides for the clone operation. Any clone is initially unlocked.
+     */
+    public Object clone();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Pick.java b/src/com/ibm/icu/dev/test/util/Pick.java
new file mode 100644
index 0000000..594305e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Pick.java
@@ -0,0 +1,792 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.HashSet;
+
+abstract public class Pick {
+    private static boolean DEBUG = false;
+    
+    // for using to get strings
+    
+    static class Target {
+        private Pick pick;
+        private Random random;
+        private Quoter quoter;
+        
+        public static Target make(Pick pick, Random random, Quoter quoter) {
+            Target result = new Target();
+            result.pick = pick;
+            result.random = random;
+            result.quoter = quoter;
+            return result;
+        }
+        public String next() {
+            quoter.clear();
+            pick.addTo(this);
+            return get();
+        }        
+        public String get() {
+            return quoter.toString();
+        }
+        private void copyState(Target other) {
+            random = other.random;
+        }
+        private void clear() {
+            quoter.clear();
+        }
+        /*private int length() {
+            return quoter.length();
+        }*/
+        private Target append(int codepoint) {
+            quoter.append(codepoint);
+            return this;
+        }
+        private Target append(String s) {
+            quoter.append(s);
+            return this;
+        }
+        // must return value between 0 (inc) and 1 (exc)
+        private double nextDouble() {
+            return random.nextDouble();
+        }
+    }
+
+    // for Building
+    
+    public Pick replace(String toReplace, Pick replacement) {
+       Replacer visitor = new Replacer(toReplace, replacement);
+       return visit(visitor);
+    }
+
+    public Pick name(String nameStr) {
+        name = nameStr;
+        return this;
+    }
+    
+    static public Pick.Sequence makeSequence() {
+        return new Sequence();
+    }
+    static public Pick.Alternation makeAlternation() {
+        return new Alternation();
+    }
+    /*
+    static public Pick.Sequence and(Object item) {
+        return new Sequence().and2(item);
+    }
+    static public Pick.Sequence and(Object[] items) {
+        return new Sequence().and2(items);
+    }
+    static public Pick.Alternation or(int itemWeight, Object item) {
+        return new Alternation().or2(itemWeight, item);
+    }
+    static public Pick.Alternation or(Object[] items) {
+        return new Alternation().or2(1, items);
+    }
+    static public Pick.Alternation or(int itemWeight, Object[] items) {
+        return new Alternation().or2(itemWeight, items);
+    }
+    static public Pick.Alternation or(int[] itemWeights, Object[] items) {
+        return new Alternation().or2(itemWeights, items);
+    }
+    
+    static public Pick maybe(int percent, Object item) {
+        return new Repeat(0, 1, new int[]{100-percent, percent}, item);
+        //return Pick.or(1.0-percent, NOTHING).or2(percent, item);
+    }
+    static public Pick repeat(int minCount, int maxCount, int itemWeights, Object item) {
+        return new Repeat(minCount, maxCount, itemWeights, item);
+    }
+    
+    static public Pick codePoint(String source) {
+        return new CodePoint(new UnicodeSet(source));
+    }
+    */
+    
+    static public Pick repeat(int minCount, int maxCount, int[] itemWeights, Pick item) {
+        return new Repeat(minCount, maxCount, itemWeights, item);
+    }
+    
+    static public Pick codePoint(UnicodeSet source) {
+        return new CodePoint(source);
+    }
+    static public Pick string(String source) {
+        return new Literal(source);
+    }
+    /*
+    static public Pick unquoted(String source) {
+        return new Literal(source);
+    }
+    static public Pick string(int minLength, int maxLength, Pick item) {
+        return new Morph(item, minLength, maxLength);
+    }
+    */
+    
+    public abstract String getInternal(int depth, Set alreadySeen);
+    // Internals
+   
+    protected String name;
+    
+    protected abstract void addTo(Target target);
+    protected abstract boolean match(String input, Position p);
+    
+    public static class Sequence extends ListPick {
+        public Sequence and2 (Pick item) {
+            addInternal(new Pick[] {item}); // we don't care about perf
+            return this; // for chaining
+        }
+        public Sequence and2 (Pick[] itemArray) {
+            addInternal(itemArray);
+            return this; // for chaining
+        }
+        protected void addTo(Target target) {
+            for (int i = 0; i < items.length; ++i) {
+                items[i].addTo(target);
+            }
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "SEQ(";
+            for (int i = 0; i < items.length; ++i) {
+                if (i != 0) result += ", ";
+                result += items[i].getInternal(depth+1, alreadySeen);
+            }
+            result += ")";
+            return result;
+        }
+        // keep private
+        private Sequence() {}
+        protected boolean match(String input, Position p) {
+            int originalIndex = p.index;
+            for (int i = 0; i < items.length; ++i) {
+                if (!items[i].match(input, p)) {
+                    p.index = originalIndex;
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+    
+    String checkName(String nameStr, Set alreadySeen) {
+        if (nameStr == null) return "";
+        if (alreadySeen.contains(nameStr)) return nameStr;
+        alreadySeen.add(nameStr);
+        return "{" + nameStr + "=}";
+    }
+
+    public static class Alternation extends ListPick {
+        private WeightedIndex weightedIndex = new WeightedIndex(0);
+           
+        public Alternation or2 (Pick[] newItems) {
+            return or2(1, newItems);
+        }
+        public Alternation or2 (int itemWeight, Pick item) {
+            return or2(itemWeight, new Pick[] {item}); // we don't care about perf
+        }
+        public Alternation or2 (int itemWeight, Pick[] newItems) {
+            int[] itemWeights = new int[newItems.length];
+            Arrays.fill(itemWeights,itemWeight);
+            return or2(itemWeights, newItems); // we don't care about perf
+        }
+        public Alternation or2 (int[] itemWeights, Pick[] newItems) {
+            if (newItems.length != itemWeights.length) {
+                throw new ArrayIndexOutOfBoundsException(
+                    "or lengths must be equal: " + newItems.length + " != " + itemWeights.length);
+            }
+           // int lastLen = this.items.length;
+            addInternal(newItems);
+            weightedIndex.add(itemWeights);
+            return this; // for chaining
+        }
+        protected void addTo(Target target) {
+            items[weightedIndex.toIndex(target.nextDouble())].addTo(target);
+        }    
+        
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "OR(";
+            for (int i = 0; i < items.length; ++i) {
+                if (i != 0) result += ", ";
+                result += items[i].getInternal(depth+1, alreadySeen) + "/" + weightedIndex.weights[i];
+            }
+            return result + ")";
+        }
+        // keep private
+        private Alternation() {}
+        // take first matching option
+        protected boolean match(String input, Position p) {
+            for (int i = 0; i < weightedIndex.weights.length; ++i) {
+                if (p.isFailure(this,i)) continue;
+                if (items[i].match(input, p)) return true;
+                p.setFailure(this, i);
+            }
+            return false;
+        }
+    }
+    
+    private static String indent(int depth) {
+        String result = "\r\n";
+        for (int i = 0; i < depth; ++i) {
+            result += " ";
+        }
+        return result;
+    }
+    
+    private static class Repeat extends ItemPick {
+        WeightedIndex weightedIndex;
+        int minCount = 0;
+            
+        private Repeat(int minCount, int maxCount, int[] itemWeights, Pick item) {
+            super(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, itemWeights);
+        }
+        /*private Repeat(int minCount, int maxCount, int itemWeight, Pick item) {
+            super(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, itemWeight);
+        }*/
+        /*
+        private Repeat(int minCount, int maxCount, Object item) {
+            this.item = convert(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, 1);
+        }
+        */
+        protected void addTo(Target target) {
+            //int count ;
+            for (int i = weightedIndex.toIndex(target.nextDouble()); i > 0; --i) {
+                item.addTo(target);
+            }
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "REPEAT(" + weightedIndex
+            + "; "+ item.getInternal(depth+1, alreadySeen) 
+            + ")";
+            return result;
+        }
+        
+        // match longest, e.g. up to just before a failure
+        protected boolean match(String input, Position p) {
+            //int bestMatch = p.index;
+            int count = 0;
+            for (int i = 0; i < weightedIndex.weights.length; ++i) {
+                if (p.isFailure(this,i)) break;
+                if (!item.match(input, p)) {
+                    p.setFailure(this,i);
+                    break;
+                } 
+                //bestMatch = p.index;
+                count++;               
+            }
+            if (count >= minCount) {
+                return true;
+            }
+            // TODO fix failure
+            return false;
+        }
+    }
+    
+    private static class CodePoint extends FinalPick {
+        private UnicodeSet source;
+        
+        private CodePoint(UnicodeSet source) {
+            this.source = source;
+        }
+        protected void addTo(Target target) {
+            target.append(source.charAt(pick(target.random,0,source.size()-1)));
+        }
+        protected boolean match(String s, Position p) {
+            int cp = UTF16.charAt(s, p.index);
+            if (source.contains(cp)) {
+                p.index += UTF16.getCharCount(cp);
+                return true;
+            }
+            p.setMax("codePoint");
+            return false;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return source.toString();
+        }
+    }
+
+    static class Morph extends ItemPick {
+        Morph(Pick item) {
+            super(item);
+        }
+    
+        private String lastValue = null;
+        private Target addBuffer = Target.make(this, null, new Quoter.RuleQuoter());
+        private StringBuffer mergeBuffer = new StringBuffer();
+    
+        private static final int COPY_NEW = 0, COPY_BOTH = 1, COPY_LAST = 3, SKIP = 4,
+                                 LEAST_SKIP = 4;
+        // give weights to the above. make sure we delete about the same as we insert
+        private static final WeightedIndex choice = new WeightedIndex(0)
+            .add(new int[] {10, 10, 100, 10});
+        
+        protected void addTo(Target target) {
+            // get contents into separate buffer
+            addBuffer.copyState(target);
+            addBuffer.clear();
+            item.addTo(addBuffer);
+            String newValue = addBuffer.get();
+            if (DEBUG) System.out.println("Old: " + lastValue + ", New:" + newValue);
+
+            // if not first one, merge with old
+            if (lastValue != null) {
+                mergeBuffer.setLength(0);
+                int lastIndex = 0;
+                int newIndex = 0;
+                // the new length is a random value between old and new.
+                int newLenLimit = (int) pick(target.random, lastValue.length(), newValue.length());
+                
+                while (mergeBuffer.length() < newLenLimit
+                  && newIndex < newValue.length()
+                  && lastIndex < lastValue.length()) {
+                    int c = choice.toIndex(target.nextDouble());
+                    if (c == COPY_NEW || c == COPY_BOTH || c == SKIP) {
+                        newIndex = getChar(newValue, newIndex, mergeBuffer, c < LEAST_SKIP);
+                        if (mergeBuffer.length() >= newLenLimit) break;
+                    }
+                    if (c == COPY_LAST || c == COPY_BOTH || c == SKIP) {
+                        lastIndex = getChar(lastValue, lastIndex, mergeBuffer, c < LEAST_SKIP);
+                    }
+                }
+                newValue = mergeBuffer.toString();
+            }
+            lastValue = newValue;
+            target.append(newValue);
+            if (DEBUG) System.out.println("Result: " + newValue);
+        }
+
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return indent(depth) + result + "MORPH("
+                + item.getInternal(depth+1, alreadySeen)
+                + ")";
+        }
+
+        /* (non-Javadoc)
+         * @see Pick#match(java.lang.String, Pick.Position)
+         */
+        protected boolean match(String input, Position p) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+    }
+    
+    /* Add character if we can
+     */
+    static int getChar(String newValue, int newIndex, StringBuffer mergeBuffer, boolean copy) {
+        if (newIndex >= newValue.length()) return newIndex;
+        int cp = UTF16.charAt(newValue,newIndex);
+        if (copy) UTF16.append(mergeBuffer, cp);
+        return newIndex + UTF16.getCharCount(cp);
+    }
+
+    /*   
+            // quoted add
+            appendQuoted(target, addBuffer.toString(), quoteBuffer);
+            // fix buffers
+            StringBuffer swapTemp = addBuffer;
+            addBuffer = source;
+            source = swapTemp;
+        }
+    }
+    */
+
+
+    static class Quote extends ItemPick {
+        Quote(Pick item) {
+            super(item);
+        }
+        protected void addTo(Target target) {
+            target.quoter.setQuoting(true);
+            item.addTo(target);
+            target.quoter.setQuoting(false);
+        }
+        
+        protected boolean match(String s, Position p) {
+            return false;
+        }
+
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return indent(depth) + result + "QUOTE(" + item.getInternal(depth+1, alreadySeen)
+                + ")";
+        }
+    }
+    
+    private static class Literal extends FinalPick {
+        public String toString() {
+            return name;     
+        }        
+        private Literal(String source) {  
+            this.name = source;
+        }
+        protected void addTo(Target target) {
+            target.append(name);
+        }
+        protected boolean match(String input, Position p) {
+            int len = name.length();
+            if (input.regionMatches(p.index, name, 0, len)) {
+                p.index += len;
+                return true;
+            }
+            p.setMax("literal");
+            return false;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            return "'" + name + "'";
+        }
+    }
+    
+    public static class Position {
+        public ArrayList failures = new ArrayList();
+        public int index;
+        public int maxInt;
+        public String maxType;
+        public void setMax(String type) {
+            if (index >= maxInt) {
+                maxType = type;
+            }
+        }
+        public String toString() {
+            return "index; " + index
+                + ", maxInt:" + maxInt
+                + ", maxType: " + maxType;
+        }
+        /*private static final Object BAD = new Object();
+        private static final Object GOOD = new Object();*/
+        
+        public boolean isFailure(Pick pick, int item) {
+            ArrayList val = (ArrayList)failures.get(index);
+            if (val == null) return false;
+            Set set = (Set)val.get(item);
+            if (set == null) return false;
+            return !set.contains(pick);
+        }
+        public void setFailure(Pick pick, int item) {
+            ArrayList val = (ArrayList)failures.get(index);
+            if (val == null) {
+                val = new ArrayList();
+                failures.set(index, val);
+            }
+            Set set = (Set)val.get(item);
+            if (set == null) {
+                set = new HashSet();
+                val.set(item, set);
+            }
+            set.add(pick);
+        }
+    }
+    
+    /*
+    public static final Pick NOTHING = new Nothing();
+    
+
+    private static class Nothing extends FinalPick {
+        protected void addTo(Target target) {}
+        protected boolean match(String input, Position p) {
+            return true;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            return indent(depth) + "\u00F8";
+        }
+    }
+    */
+    
+    // intermediates
+    
+    abstract static class Visitor {
+        Set already = new HashSet();
+        // Note: each visitor should return the Pick that will replace a (or a itself)
+        abstract Pick handle(Pick a);
+        boolean alreadyEntered(Pick item) {
+            boolean result = already.contains(item);
+            already.add(item);
+            return result;
+        }
+        void reset() {
+            already.clear();
+        }
+    }
+    
+    protected abstract Pick visit(Visitor visitor);
+    
+    static class Replacer extends Visitor {
+        String toReplace;
+        Pick replacement;
+        Replacer(String toReplace, Pick replacement) {
+            this.toReplace = toReplace;
+            this.replacement = replacement;
+        }
+        public Pick handle(Pick a) {
+            if (toReplace.equals(a.name)) {
+                a = replacement;
+            } 
+            return a;
+       }
+    }
+
+    abstract private static class FinalPick extends Pick {
+        public Pick visit(Visitor visitor) {
+            return visitor.handle(this);
+       }
+    }
+    
+    private abstract static class ItemPick extends Pick {
+       protected Pick item;
+       
+       ItemPick (Pick item) {
+           this.item = item;
+       }
+       
+       public Pick visit(Visitor visitor) {
+           Pick result = visitor.handle(this);
+           if (visitor.alreadyEntered(this)) return result;
+           if (item != null) item = item.visit(visitor);
+           return result;
+       }
+    }
+   
+    private abstract static class ListPick extends Pick {
+        protected Pick[] items = new Pick[0];
+        
+        Pick simplify() {
+            if (items.length > 1) return this;
+            if (items.length == 1) return items[0];
+            return null;
+        }
+        
+        int size() {
+            return items.length;
+        }
+
+        Pick getLast() {
+            return items[items.length-1];
+        }
+
+        void setLast(Pick newOne) {
+            items[items.length-1] = newOne;
+        }
+
+        protected void addInternal(Pick[] objs) {
+            int lastLen = items.length;
+            items = realloc(items, items.length + objs.length);
+            for (int i = 0; i < objs.length; ++i) {
+                items[lastLen + i] = objs[i];
+            }
+        }
+
+        public Pick visit(Visitor visitor) {
+            Pick result = visitor.handle(this);
+            if (visitor.alreadyEntered(this)) return result;
+            for (int i = 0; i < items.length; ++i) {
+                items[i] = items[i].visit(visitor);
+            }
+            return result;
+        }
+    }
+    
+    /**
+     * Simple class to distribute a number between 0 (inclusive) and 1 (exclusive) among
+     * a number of indices, where each index is weighted.
+     * Item weights may be zero, but cannot be negative.
+     * @author Davis
+     */
+    // As in other case, we use an array for runtime speed; don't care about buildspeed.
+    public static class WeightedIndex {
+        private int[] weights = new int[0];
+        private int minCount = 0;
+        private double total;
+        
+        public WeightedIndex(int minCount) {
+            this.minCount = minCount;
+        }
+        
+        public WeightedIndex add(int count, int itemWeights) {
+            if (count > 0) {
+                int[] newWeights = new int[count];
+                if (itemWeights < 1) itemWeights = 1;
+                Arrays.fill(newWeights, 0, count, itemWeights);
+                add(1, newWeights);
+            }
+            return this; // for chaining
+        }
+
+        public WeightedIndex add(int[] newWeights) {
+            return add(newWeights.length, newWeights);
+        }
+        
+        public WeightedIndex add(int maxCount, int[] newWeights) {
+            if (newWeights == null) newWeights = new int[]{1};
+            int oldLen = weights.length;
+            if (maxCount < newWeights.length) maxCount = newWeights.length;
+            weights = (int[]) realloc(weights, weights.length + maxCount);
+            System.arraycopy(newWeights, 0, weights, oldLen, newWeights.length);
+            int lastWeight = weights[oldLen + newWeights.length-1];
+            for (int i = oldLen + newWeights.length; i < maxCount; ++i) {
+                weights[i] = lastWeight;
+            }
+            total = 0;
+            for (int i = 0; i < weights.length; ++i) {
+                if (weights[i] < 0) {
+                    throw new RuntimeException("only positive weights: " + i);
+                } 
+                total += weights[i];
+            }
+            return this; // for chaining
+        }
+        
+        // TODO, make this more efficient
+        public int toIndex(double zeroToOne) {
+            double weight = zeroToOne*total;
+            int i;
+            for (i = 0; i < weights.length; ++i) {
+                weight -= weights[i];
+                if (weight <= 0) break;
+            }
+            return i + minCount;
+        }
+        public String toString() {
+            String result = "";
+            for (int i = 0; i < minCount; ++i) {
+                if (result.length() != 0) result += ",";
+                result += "0";
+            }
+            for (int i = 0; i < weights.length; ++i) {
+                if (result.length() != 0) result += ",";
+                result += weights[i];
+            }
+            return result;
+        }
+    }
+    /*
+    private static Pick convert(Object obj) {
+        if (obj instanceof Pick) return (Pick)obj;
+        return new Literal(obj.toString(), false);
+    }
+    */
+    // Useful statics
+    
+    static public int pick(Random random, int start, int end) {
+        return start + (int)(random.nextDouble() * (end + 1 - start));
+    }
+    
+    static public double pick(Random random, double start, double end) {
+        return start + (random.nextDouble() * (end + 1 - start));
+    }
+    
+    static public boolean pick(Random random, double percent) {
+        return random.nextDouble() <= percent;
+    }
+    
+    static public int pick(Random random, UnicodeSet s) {
+        return s.charAt(pick(random, 0,s.size()-1));
+    }
+    
+    static public String pick(Random random, String[] source) {
+        return source[pick(random, 0, source.length-1)];
+    }
+    
+    // these utilities really ought to be in Java
+    
+public static double[] realloc(double[] source, int newSize) {
+    double[] temp = new double[newSize];
+    if (newSize > source.length) newSize = source.length;
+    if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+    return temp;
+}
+    
+public static int[] realloc(int[] source, int newSize) {
+    int[] temp = new int[newSize];
+    if (newSize > source.length) newSize = source.length;
+    if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+    return temp;
+}
+    
+    public static Pick[] realloc(Pick[] source, int newSize) {
+        Pick[] temp = new Pick[newSize];
+        if (newSize > source.length) newSize = source.length;
+        if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+        return temp;
+    }
+    
+    // test utilities
+    /*private static void append(StringBuffer target, String toAdd, StringBuffer quoteBuffer) {
+        Utility.appendToRule(target, (int)-1, true, false, quoteBuffer); // close previous quote
+        if (DEBUG) System.out.println("\"" + toAdd + "\"");
+        target.append(toAdd);
+    }
+
+    private static void appendQuoted(StringBuffer target, String toAdd, StringBuffer quoteBuffer) {
+        if (DEBUG) System.out.println("\"" + toAdd + "\"");
+        Utility.appendToRule(target, toAdd, false, false, quoteBuffer);
+    }*/
+
+    /*
+    public static abstract class MatchHandler {
+        public abstract void handleString(String source, int start, int limit);
+        public abstract void handleSequence(String source, int start, int limit);
+        public abstract void handleAlternation(String source, int start, int limit);
+            
+    }
+    */
+    /*
+    // redistributes random value
+    // values are still between 0 and 1, but with a different distribution
+    public interface Spread {
+        public double spread(double value);
+    }
+    
+    // give the weight for the high end.
+    // values are linearly scaled according to the weight.
+    static public class SimpleSpread implements Spread {
+        static final Spread FLAT = new SimpleSpread(1.0);
+        boolean flat = false;
+        double aa, bb, cc;
+        public SimpleSpread(double maxWeight) {   
+            if (maxWeight > 0.999 && maxWeight < 1.001) {
+                flat = true;
+            } else { 
+                double q = (maxWeight - 1.0);
+                aa = -1/q;
+                bb = 1/(q*q);
+                cc = (2.0+q)/q;
+           }                 
+        }
+        public double spread(double value) {
+            if (flat) return value;
+            value = aa + Math.sqrt(bb + cc*value);
+            if (value < 0.0) return 0.0;    // catch math gorp
+            if (value >= 1.0) return 1.0;
+            return value;
+        }
+    }
+    static public int pick(Spread spread, Random random, int start, int end) {
+        return start + (int)(spread.spread(random.nextDouble()) * (end + 1 - start));
+    }
+    
+   */
+    
+
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/PrettyPrinter.java b/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
new file mode 100644
index 0000000..afb5963
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
@@ -0,0 +1,259 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.util.CollectionUtilities.MultiComparator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.ULocale;
+
+/** Provides more flexible formatting of UnicodeSet patterns.
+ */
+public class PrettyPrinter {
+    private static final UnicodeSet patternWhitespace = (UnicodeSet) new UnicodeSet("[[:Cn:][:Default_Ignorable_Code_Point:][:patternwhitespace:]]").freeze();
+    private static final UnicodeSet sortAtEnd = (UnicodeSet) new UnicodeSet("[[:Cn:][:Cs:][:Co:][:Ideographic:]]").freeze();
+    
+    private boolean first = true;
+    private StringBuffer target = new StringBuffer();
+    private int firstCodePoint = -2;
+    private int lastCodePoint = -2;
+    private boolean compressRanges = true;
+    private String lastString = "";
+    private UnicodeSet toQuote = new UnicodeSet(patternWhitespace);
+    private Transliterator quoter = null;
+    
+    private Comparator ordering;
+    private Comparator spaceComp = Collator.getInstance(ULocale.ROOT);
+    {
+        setOrdering(Collator.getInstance(ULocale.ROOT));
+        ((RuleBasedCollator)spaceComp).setStrength(RuleBasedCollator.PRIMARY);
+    }
+    
+    public Transliterator getQuoter() {
+        return quoter;
+    }
+
+    public PrettyPrinter setQuoter(Transliterator quoter) {
+        this.quoter = quoter;
+        return this; // for chaining
+    }
+
+    public boolean isCompressRanges() {
+        return compressRanges;
+    }
+    
+    /**
+     * @param compressRanges if you want abcde instead of a-e, make this false
+     * @return
+     */
+    public PrettyPrinter setCompressRanges(boolean compressRanges) {
+        this.compressRanges = compressRanges;
+        return this;
+    }
+    
+    public Comparator getOrdering() {
+        return ordering;
+    }
+    
+    /**
+     * @param ordering the resulting  ordering of the list of characters in the pattern
+     * @return
+     */
+    public PrettyPrinter setOrdering(Comparator ordering) {
+        this.ordering = new MultiComparator(new Comparator[] {ordering, new UTF16.StringComparator(true,false,0)});
+        return this;
+    }
+    
+    public Comparator getSpaceComparator() {
+        return spaceComp;
+    }
+    
+    /**
+     * @param spaceComp if the comparison returns non-zero, then a space will be inserted between characters
+     * @return this, for chaining
+     */
+    public PrettyPrinter setSpaceComparator(Comparator spaceComp) {
+        this.spaceComp = spaceComp;
+        return this;
+    }
+    
+    public UnicodeSet getToQuote() {
+        return toQuote;
+    }
+    
+    /**
+     * a UnicodeSet of extra characters to quote with \\uXXXX-style escaping (will automatically quote pattern whitespace)
+     * @param toQuote
+     */
+    public PrettyPrinter setToQuote(UnicodeSet toQuote) {
+        toQuote = (UnicodeSet)toQuote.clone();
+        toQuote.addAll(patternWhitespace);
+        this.toQuote = toQuote;
+        return this;
+    }
+        
+    /**
+     * Get the pattern for a particular set.
+     * @param uset
+     * @return formatted UnicodeSet
+     */
+    public String toPattern(UnicodeSet uset) {
+        first = true;
+        UnicodeSet putAtEnd = new UnicodeSet(uset).retainAll(sortAtEnd); // remove all the unassigned gorp for now
+        // make sure that comparison separates all strings, even canonically equivalent ones
+        Set orderedStrings = new TreeSet(ordering);
+        for (UnicodeSetIterator it = new UnicodeSetIterator(uset); it.nextRange();) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                orderedStrings.add(it.string);
+            } else {
+                for (int i = it.codepoint; i <= it.codepointEnd; ++i) {
+                    if (!putAtEnd.contains(i)) {
+                        orderedStrings.add(UTF16.valueOf(i));
+                    }
+                }
+            }
+        }
+        target.setLength(0);
+        target.append("[");
+        for (Iterator it = orderedStrings.iterator(); it.hasNext();) {
+            appendUnicodeSetItem((String) it.next());
+        }
+        for (UnicodeSetIterator it = new UnicodeSetIterator(putAtEnd); it.next();) { // add back the unassigned gorp
+            appendUnicodeSetItem(it.codepoint);
+        }
+        flushLast();
+        target.append("]");
+        String sresult = target.toString();
+        
+        // double check the results. This can be removed once we have more tests.
+//        try {
+//            UnicodeSet  doubleCheck = new UnicodeSet(sresult);
+//            if (!uset.equals(doubleCheck)) {
+//                throw new IllegalStateException("Failure to round-trip in pretty-print " + uset + " => " + sresult + "\r\n source-result: " + new UnicodeSet(uset).removeAll(doubleCheck) +  "\r\n result-source: " + new UnicodeSet(doubleCheck).removeAll(uset));
+//            }
+//        } catch (RuntimeException e) {
+//            throw (RuntimeException) new IllegalStateException("Failure to round-trip in pretty-print " + uset).initCause(e);
+//        }
+        return sresult;
+    }
+    
+    private PrettyPrinter appendUnicodeSetItem(String s) {
+        int cp;
+        if (UTF16.hasMoreCodePointsThan(s, 1)) {
+            flushLast();
+            addSpace(s);
+            target.append("{");
+            for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                appendQuoted(cp = UTF16.charAt(s, i));
+            }
+            target.append("}");
+            lastString = s;
+        } else {
+            appendUnicodeSetItem(UTF16.charAt(s, 0));
+        }
+        return this;
+    }
+
+    private void appendUnicodeSetItem(int cp) {
+        if (!compressRanges)
+            flushLast();
+        if (cp == lastCodePoint + 1) {
+            lastCodePoint = cp; // continue range
+        } else { // start range
+            flushLast();
+            firstCodePoint = lastCodePoint = cp;
+        }
+    }
+    /**
+     * 
+     */
+    private void addSpace(String s) {
+        if (first) {
+            first = false;
+        } else if (spaceComp.compare(s, lastString) != 0) {
+            target.append(' ');
+        } else {
+            int cp = UTF16.charAt(s,0);
+            int type = UCharacter.getType(cp);
+            if (type == UCharacter.NON_SPACING_MARK || type == UCharacter.ENCLOSING_MARK) {
+                target.append(' ');
+            } else if (type == UCharacter.SURROGATE && cp >= UTF16.TRAIL_SURROGATE_MIN_VALUE) {
+                target.append(' '); // make sure we don't accidentally merge two surrogates
+            }
+        }
+    }
+    
+    private void flushLast() {
+        if (lastCodePoint >= 0) {
+            addSpace(UTF16.valueOf(firstCodePoint));
+            if (firstCodePoint != lastCodePoint) {
+                appendQuoted(firstCodePoint);
+                target.append(firstCodePoint + 1 == lastCodePoint ? ' ' : '-');
+            }
+            appendQuoted(lastCodePoint);
+            lastString = UTF16.valueOf(lastCodePoint);
+            firstCodePoint = lastCodePoint = -2;
+        }
+    }
+    PrettyPrinter appendQuoted(int codePoint) {
+        if (toQuote.contains(codePoint)) {
+            if (quoter != null) {
+                target.append(quoter.transliterate(UTF16.valueOf(codePoint)));
+                return this;
+            }
+            if (codePoint > 0xFFFF) {
+                target.append("\\U");
+                target.append(Utility.hex(codePoint,8));
+            } else {
+                target.append("\\u");
+                target.append(Utility.hex(codePoint,4));                    
+            }
+            return this;
+        }
+        switch (codePoint) {
+        case '[': // SET_OPEN:
+        case ']': // SET_CLOSE:
+        case '-': // HYPHEN:
+        case '^': // COMPLEMENT:
+        case '&': // INTERSECTION:
+        case '\\': //BACKSLASH:
+        case '{':
+        case '}':
+        case '$':
+        case ':':
+            target.append('\\');
+            break;
+        default:
+            // Escape whitespace
+            if (patternWhitespace.contains(codePoint)) {
+                target.append('\\');
+            }
+        break;
+        }
+        UTF16.append(target, codePoint);
+        return this;
+    }        
+//  Appender append(String s) {
+//  target.append(s);
+//  return this;
+//  }
+//  public String toString() {
+//  return target.toString();
+//  }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Quoter.java b/src/com/ibm/icu/dev/test/util/Quoter.java
new file mode 100644
index 0000000..d8d6ab2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Quoter.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.Utility;
+
+public abstract class Quoter {
+    private static boolean DEBUG = false;
+    
+    protected boolean quoting = false;
+    protected StringBuffer output = new StringBuffer();
+    
+    public void setQuoting(boolean value) {
+        quoting = value;
+    }
+    public boolean isQuoting() {
+        return quoting;
+    }
+    public void clear() {
+        quoting = false;
+        output.setLength(0);
+    }
+    public int length() {
+        return output.length();
+    }
+    public Quoter append(String string) {
+        output.append(string);
+        return this;
+    }
+    public Quoter append(int codepoint) {
+        return append(UTF16.valueOf(codepoint));
+    }
+    // warning, allows access to internals
+    public String toString() {
+        setQuoting(false); // finish quoting
+        return output.toString();
+    }
+    /**
+     * Implements standard ICU rule quoting
+     */
+    public static class RuleQuoter extends Quoter {
+        private StringBuffer quoteBuffer = new StringBuffer();
+        public void setQuoting(boolean value) {
+            if (quoting == value) return;
+            if (quoting) { // stop quoting
+                Utility.appendToRule(output, (int)-1, true, false, quoteBuffer); // close previous quote
+            }
+            quoting = value;
+        }
+        public Quoter append(String s) {
+            if (DEBUG) System.out.println("\"" + s + "\"");
+            if (quoting) {
+                Utility.appendToRule(output, s, false, false, quoteBuffer);
+            } else {
+                output.append(s);
+            }
+            return this;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Relation.java b/src/com/ibm/icu/dev/test/util/Relation.java
new file mode 100644
index 0000000..a52e8a9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Relation.java
@@ -0,0 +1,122 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * A Relation is a set of mappings from keys to values.
+ * Unlike Map, there is not guaranteed to be a single value per key.
+ * The Map-like APIs return collections for values.
+ * @author medavis
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class Relation {
+    private Map m;
+    private CollectionFactory subcollection;
+
+    public Relation(Map mainMap, CollectionFactory subcollection) {
+        m = mainMap;
+        if (subcollection == null) subcollection = new CollectionMaker(null);
+        this.subcollection = subcollection;
+    }
+
+    public void clear() {
+        m.clear();
+    }
+    public boolean containsKey(Object key) {
+        return m.containsKey(key);
+    }
+    public boolean containsValue(Object value) {
+        return m.containsValue(value);
+    }
+    public Set entrySet() {
+        return m.entrySet();
+    }
+    public boolean equals(Object obj) {
+        return m.equals(obj);
+    }
+    public int hashCode() {
+        return m.hashCode();
+    }
+    public boolean isEmpty() {
+        return m.isEmpty();
+    }
+    public Object remove(Object key) {
+        return m.remove(key);
+    }
+    public int size() {
+        return m.size();
+    }
+    public String toString() {
+        return m.toString();
+    }
+    public Set keySet() {
+        return m.keySet();
+    }
+    /*
+    public void addAll(Relation t) {
+        for (Iterator it = t.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            add(key, t.get(key));
+        }
+    }
+    */
+    public Collection values() {
+        return m.values();
+    }
+    public Collection get(Object key, Collection output) {
+        output.addAll((Collection)m.get(key));
+        return output;
+    }
+    public void add(Object key, Object value) {
+        Collection o = (Collection) m.get(key);
+        if (o == null) m.put(key, o = subcollection.make());
+        o.add(value);
+    }
+    public Iterator iterator() {
+        return m.keySet().iterator();
+    }
+    public interface CollectionFactory {
+        Collection make();
+    }
+
+    /**
+     * This is just temporary, and may change!!
+     * @author medavis
+     *
+     * TODO To change the template for this generated type comment go to
+     * Window - Preferences - Java - Code Style - Code Templates
+     */
+    public static class CollectionMaker implements CollectionFactory {
+        public static final int HASH = 0, TREE = 1;
+        private Comparator comparator = null;
+        private int type = HASH;
+
+        public CollectionMaker(int type) {
+            this.type = type;
+        }
+        public CollectionMaker(Comparator comparator) {
+            this.comparator = comparator;
+        }
+        public Collection make() {
+            if (comparator != null) return new TreeSet(comparator);
+            else if (type == HASH) return new HashSet();
+            else return new TreeSet();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/SortedBag.java b/src/com/ibm/icu/dev/test/util/SortedBag.java
new file mode 100644
index 0000000..170e714
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/SortedBag.java
@@ -0,0 +1,142 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * A collection that is like a sorted set, except that it allows
+ * multiple elements that compare as equal
+ * @author medavis
+ */
+// TODO replace use of Set with a collection that takes an Equator
+public class SortedBag implements Collection {
+    /**
+     * A map of sets, where each corresponds to one sorted element.
+     * The sets are never empty
+     */
+    private Map m;
+    private int size;
+
+    public SortedBag(Comparator c) {
+        m = new TreeMap(c);
+    }
+    public boolean add(Object s) {
+        Set o = (Set)m.get(s);
+        if (o == null) {
+            o = new HashSet(1);
+            m.put(s,o);
+        }
+        boolean result = o.add(s);
+        if (result) size++;
+        return result;
+    }
+    public Iterator iterator() {
+        return new MyIterator();
+    }
+    static Iterator EMPTY_ITERATOR = new HashSet().iterator();
+    private class MyIterator implements Iterator {
+        private Iterator mapIterator = m.keySet().iterator();
+        private Iterator setIterator = null;
+
+        private MyIterator() {
+            mapIterator = m.keySet().iterator();
+            setIterator = getSetIterator();
+        }
+        private Iterator getSetIterator() {
+            if (!mapIterator.hasNext()) return EMPTY_ITERATOR;
+            return ((Set)m.get(mapIterator.next())).iterator();
+        }
+        public boolean hasNext() {
+            return setIterator.hasNext() || mapIterator.hasNext();
+        }
+        public Object next() {
+            if (!setIterator.hasNext()) {
+                setIterator = getSetIterator();
+            }
+            return setIterator.next();
+        }
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+    }
+    /**
+     *
+     */
+    public void clear() {
+        m.clear();
+    }
+    public int size() {
+        return size;
+    }
+    public boolean isEmpty() {
+        return size == 0;
+    }
+    public boolean contains(Object o) {
+        Set set = (Set)m.get(o);
+        if (set == null) return false;
+        return set.contains(o);
+    }
+    public Object[] toArray() {
+        return toArray(new Object[size]);
+    }
+    public Object[] toArray(Object[] a) {
+        int count = 0;
+        for (Iterator it = iterator(); it.hasNext();) {
+            a[count++] = it.next();
+        }
+        return a;
+    }
+    /* (non-Javadoc)
+     * @see java.util.Collection#remove(java.lang.Object)
+     */
+    public boolean remove(Object o) {
+        Set set = (Set)m.get(o);
+        if (set == null) return false;
+        if (!set.remove(o)) return false;
+        if (set.size() == 0) m.remove(o);
+        size--;
+        return true;
+    }
+    public boolean containsAll(Collection c) {
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (!contains(it.next())) return false;
+        }
+        return true;
+    }
+    public boolean addAll(Collection c) {
+        boolean result = false;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (add(it.next())) result = true;
+        }
+        return result;
+    }
+    public boolean removeAll(Collection c) {
+        boolean result = false;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (remove(it.next())) result = true;
+        }
+        return result;
+    }
+    public boolean retainAll(Collection c) {
+        // WARNING: this may not work if the comparator does not distinguish
+        // all items that are equals().
+        Set stuffToRemove = new HashSet(); // have to do this since iterator may not allow removal!
+        for (Iterator it = iterator(); it.hasNext(); ) {
+            Object item = it.next();
+            if (!c.contains(item)) stuffToRemove.add(item);
+        }
+        return removeAll(stuffToRemove);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java b/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
new file mode 100644
index 0000000..ae076ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
@@ -0,0 +1,542 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.StringTokenizer;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+* Testing class for StringTokenizer class
+* @author Syn Wee Quek
+* @since oct 26 2002
+*/
+public final class StringTokenizerTest extends TestFmwk
+{ 
+      // constructor ===================================================
+  
+      /**
+      * Constructor
+      */
+      public StringTokenizerTest()
+      {
+      }
+  
+      // public methods --------------------------------------------------------
+    
+    /**
+     * Testing constructors
+     */
+    public void TestConstructors()
+    {
+        String str = "this\tis\na\rstring\ftesting\tStringTokenizer\nconstructors!";
+        String delimiter = " \t\n\r\f";
+        String expected[] = {"this", "is", "a", "string", "testing", 
+                             "StringTokenizer", "constructors!"};
+        StringTokenizer defaultst = new StringTokenizer(str);
+        StringTokenizer stdelimiter = new StringTokenizer(str, delimiter);
+        StringTokenizer stdelimiterreturn = new StringTokenizer(str, delimiter,
+                                                                false);
+        UnicodeSet delimiterset = new UnicodeSet("[" + delimiter + "]", false);
+        StringTokenizer stdelimiterset = new StringTokenizer(str, delimiterset);
+        StringTokenizer stdelimitersetreturn = new StringTokenizer(str, 
+                                                                delimiterset,
+                                                                false);
+        for (int i = 0; i < expected.length; i ++) {
+            if (!(defaultst.nextElement().equals(expected[i]) 
+                  && stdelimiter.nextElement().equals(expected[i])
+                  && stdelimiterreturn.nextElement().equals(expected[i])
+                  && stdelimiterset.nextElement().equals(expected[i])
+                  && stdelimitersetreturn.nextElement().equals(expected[i]))) {
+                errln("Constructor with default delimiter gives wrong results");
+            }
+        }
+        
+        String expected1[] = {"this", "\t", "is", "\n", "a", "\r", "string", "\f",
+                            "testing", "\t", "StringTokenizer", "\n",
+                            "constructors!"};
+        stdelimiterreturn = new StringTokenizer(str, delimiter, true);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, true);
+        for (int i = 0; i < expected1.length; i ++) {
+            if (!(stdelimiterreturn.nextElement().equals(expected1[i])
+                  && stdelimitersetreturn.nextElement().equals(expected1[i]))) {
+                errln("Constructor with default delimiter and delimiter tokens gives wrong results");
+            }
+        }
+                            
+        stdelimiter = new StringTokenizer(str, (String)null);
+        stdelimiterreturn = new StringTokenizer(str, (String)null, false);
+        delimiterset = null;
+        stdelimiterset = new StringTokenizer(str, delimiterset);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, false);
+        
+        if (!(stdelimiter.nextElement().equals(str)
+              && stdelimiterreturn.nextElement().equals(str)
+              && stdelimiterset.nextElement().equals(str)
+              && stdelimitersetreturn.nextElement().equals(str))) {
+            errln("Constructor with null delimiter gives wrong results");
+        }
+        
+        delimiter = "";
+        stdelimiter = new StringTokenizer(str, delimiter);
+        stdelimiterreturn = new StringTokenizer(str, delimiter, false);
+        delimiterset = new UnicodeSet();
+        stdelimiterset = new StringTokenizer(str, delimiterset);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, false);
+        
+        if (!(stdelimiter.nextElement().equals(str)
+              && stdelimiterreturn.nextElement().equals(str)
+              && stdelimiterset.nextElement().equals(str)
+              && stdelimitersetreturn.nextElement().equals(str))) {
+            errln("Constructor with empty delimiter gives wrong results");
+        }
+        
+        try {
+            defaultst = new StringTokenizer(null);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiter = new StringTokenizer(null, delimiter);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiterreturn = new StringTokenizer(null, delimiter, false);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiterset = new StringTokenizer(null, delimiterset);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimitersetreturn = new StringTokenizer(null, delimiterset,
+                                                       false);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+    }
+    
+    /**
+     * Testing supplementary
+     */
+    public void TestSupplementary()
+    {
+        String str = "bmp string \ud800 with a unmatched surrogate character";
+        String delimiter = "\ud800\udc00";
+        String expected[] = {str};
+            
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter);
+        if (!tokenizer.nextElement().equals(expected[0])) {
+            errln("Error parsing \"" + Utility.hex(str) + "\"");
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        delimiter = "\ud800";
+        String expected1[] = {"bmp string ", 
+                              " with a unmatched surrogate character"};
+        tokenizer = new StringTokenizer(str, delimiter);
+        int i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected1[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        str = "string \ud800\udc00 with supplementary character";
+        delimiter = "\ud800";
+        String expected2[] = {str};
+        tokenizer = new StringTokenizer(str, delimiter);
+        if (!tokenizer.nextElement().equals(expected2[0])) {
+            errln("Error parsing \"" + Utility.hex(str) + "\"");
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+  
+        delimiter = "\ud800\udc00";
+        String expected3[] = {"string ", " with supplementary character"};
+        tokenizer = new StringTokenizer(str, delimiter);
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected3[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        str = "\ud800 \ud800\udc00 \ud800 \ud800\udc00";
+        delimiter = "\ud800";
+        String expected4[] = {" \ud800\udc00 ", " \ud800\udc00"};
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected4[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        delimiter = "\ud800\udc00";
+        String expected5[] = {"\ud800 ", " \ud800 "};
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected5[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+    }
+  
+      /**
+      * Testing next api
+      */
+      public void TestNextNonDelimiterToken()
+      {
+        String str = "  ,  1 2 3  AHHHHH! 5.5 6 7    ,        8\n";
+        String expected[] = {",", "1", "2", "3", "AHHHHH!", "5.5", "6", "7", 
+                             ",", "8\n"};
+        String delimiter = " ";
+                           
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter);
+        int currtoken = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected[currtoken])) {
+                errln("Error token mismatch, expected " + expected[currtoken]);
+            }
+            currtoken ++;
+        }
+
+        if (currtoken != expected.length) {
+            errln("Didn't get correct number of tokens");
+        }
+        
+        tokenizer = new StringTokenizer("", delimiter);
+        if (tokenizer.hasMoreElements()) {
+            errln("Empty string should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("Empty string should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: empty string failed as expected");
+        }
+        
+        tokenizer = new StringTokenizer(", ,", ", ");
+        if (tokenizer.hasMoreElements()) {
+            errln("String with only delimiters should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("String with only delimiters should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: String with only delimiters failed as expected");
+        }
+
+        tokenizer = new StringTokenizer("q, ,", ", ");
+        if (!tokenizer.hasMoreElements()) {
+            errln("String that does not begin with delimiters should have some tokens");
+        }
+        if (!tokenizer.nextElement().equals("q")) {
+            errln("String that does not begin with delimiters should have some tokens");
+        } 
+        try {
+            tokenizer.nextElement();
+            errln("String has only one token");
+        } catch (Exception e) {
+            logln("PASS: String with only one token failed as expected");
+        }
+
+        try {
+            tokenizer = new StringTokenizer(null, delimiter);
+            errln("StringTokenizer constructed with null source should throw a nullpointerexception");
+        } catch (Exception e) {
+            logln("PASS: StringTokenizer constructed with null source failed as expected");
+        }
+
+        tokenizer = new StringTokenizer(str, "q");
+        if (!tokenizer.nextElement().equals(str)) {
+            errln("Should have received the same string when there are no delimiters");
+        }
+    }
+
+    /**
+     * Test java compatibility, except we support surrogates.
+     */
+    public void TestNoCoalesce() {
+        String str = "This is   a test\rto see if\nwhitespace is handled \n\r unusually\r\n by our tokenizer\n\n\n!!!plus some other odd ones like \ttab\ttab\ttab\nand form\ffeed\ffoo.\n";
+        String delims = " \t\n\r\f\ud800\udc00";
+
+        java.util.StringTokenizer jt = new java.util.StringTokenizer(str, delims, true);
+        com.ibm.icu.util.StringTokenizer it = new com.ibm.icu.util.StringTokenizer(str, delims, true);
+        int n = 0;
+        while (jt.hasMoreTokens() && it.hasMoreTokens()) {
+            assertEquals("[" + String.valueOf(n++) + "]", jt.nextToken(), it.nextToken());
+        }
+        assertFalse("java tokenizer has no more tokens", jt.hasMoreTokens());
+        assertFalse("icu tokenizer has no more tokens", it.hasMoreTokens());
+
+        String sur = "Even\ud800\udc00 works.\n\n";
+        it = new com.ibm.icu.util.StringTokenizer(sur, delims, true); // no coalesce
+        assertEquals("sur1", it.nextToken(), "Even");
+        assertEquals("sur2", it.nextToken(), "\ud800\udc00");
+        assertEquals("sur3", it.nextToken(), " ");
+        assertEquals("sur4", it.nextToken(), "works.");
+        assertEquals("sur5", it.nextToken(), "\n");
+        assertEquals("sur6", it.nextToken(), "\n");
+        assertFalse("sur7", it.hasMoreTokens());
+    }
+
+    /**
+    * Testing next api
+    */
+    public void TestNextDelimiterToken()
+    {
+        String str = "  ,  1 2 3  AHHHHH! 5.5 6 7    ,        8\n";
+        String expected[] = {"  ", ",", "  ", "1", " ", "2", " ", "3", "  ",
+                             "AHHHHH!", " ", "5.5", " ", "6", " ", "7", "    ",
+                             ",", "        ", "8\n"};
+        String delimiter = " ";
+                           
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter, true, true);
+
+        int currtoken = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected[currtoken])) {
+                errln("Error token mismatch, expected " + expected[currtoken]);
+            }
+            currtoken ++;
+        }
+
+        if (currtoken != expected.length) {
+            errln("Didn't get correct number of tokens");
+        }
+        
+        tokenizer = new StringTokenizer("", delimiter, true);
+        if (tokenizer.hasMoreElements()) {
+            errln("Empty string should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("Empty string should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: Empty string failed as expected");
+        }
+        
+        tokenizer = new StringTokenizer(", ,", ", ", true, true);
+        if (!tokenizer.hasMoreElements()) {
+            errln("String with only delimiters should have tokens when delimiter is treated as tokens");
+        }
+        if (!tokenizer.nextElement().equals(", ,")) {
+            errln("String with only delimiters should return itself when delimiter is treated as tokens");
+        }
+
+        tokenizer = new StringTokenizer("q, ,", ", ", true, true);
+        
+        if (!tokenizer.hasMoreElements()) {
+            errln("String should have some tokens");
+        }
+        if (!tokenizer.nextElement().equals("q") 
+            || !tokenizer.nextElement().equals(", ,")) {
+            errln("String tokens do not match expected results");
+        } 
+
+        try {
+            tokenizer = new StringTokenizer(null, delimiter, true);
+            errln("StringTokenizer constructed with null source should throw a nullpointerexception");
+        } catch (Exception e) {
+            logln("PASS: StringTokenizer constructed with null source failed as expected");
+        }
+
+        tokenizer = new StringTokenizer(str, "q", true);
+        if (!tokenizer.nextElement().equals(str)) {
+            errln("Should have recieved the same string when there are no delimiters");
+        }
+    }
+    
+    /**
+     * Testing count tokens
+     */
+    public void TestCountTokens()
+    {
+        String str = "this\tis\na\rstring\ftesting\tStringTokenizer\nconstructors!";
+        String delimiter = " \t\n\r\f";
+        String expected[] = {"this", "is", "a", "string", "testing", 
+                             "StringTokenizer", "constructors!"};
+        String expectedreturn[] = {"this", "\t", "is", "\n", "a", "\r", 
+                                   "string", "\f", "testing", "\t", 
+                                   "StringTokenizer", "\n", "constructors!"};
+        StringTokenizer st = new StringTokenizer(str, delimiter);
+        StringTokenizer streturn = new StringTokenizer(str, delimiter, true);
+        if (st.countTokens() != expected.length) {
+            errln("CountTokens failed for non-delimiter tokens");
+        }
+        if (streturn.countTokens() != expectedreturn.length) {
+            errln("CountTokens failed for delimiter tokens");
+        }
+        for (int i = 0; i < expected.length; i ++) {
+            if (!st.nextElement().equals(expected[i])
+                || st.countTokens() != expected.length - i - 1) {
+                errln("CountTokens default delimiter gives wrong results");
+            }
+        }
+        for (int i = 0; i < expectedreturn.length; i ++) {
+            if (!streturn.nextElement().equals(expectedreturn[i])
+                || streturn.countTokens() != expectedreturn.length - i - 1) {
+                errln("CountTokens with default delimiter and delimiter tokens gives wrong results");
+            }
+        }    
+    }
+        
+    /**
+     * Next token with new delimiters
+     */
+    public void TestNextNewDelimiters()
+    {
+        String str = "abc0def1ghi2jkl3mno4pqr0stu1vwx2yza3bcd4efg0hij1klm2nop3qrs4tuv";
+        String delimiter[] = {"0", "1", "2", "3", "4"};
+        String expected[][] = {{"abc", "pqr", "efg"},
+                               {"def", "stu", "hij"},
+                               {"ghi", "vwx", "klm"},
+                               {"jkl", "yza", "nop"},
+                               {"mno", "bcd", "qrs"}
+                              };
+        StringTokenizer st = new StringTokenizer(str);
+        int size = expected[0].length;
+        for (int i = 0; i < size; i ++) {
+            for (int j = 0; j < delimiter.length; j ++) {
+                if (!st.nextToken(delimiter[j]).equals(expected[j][i])) {
+                    errln("nextToken() with delimiters error " + i + " " + j);
+                }
+                if (st.countTokens() != expected[j].length - i) {            
+                    errln("countTokens() after nextToken() with delimiters error"
+                          + i + " " + j);
+                }
+            }
+        }    
+        st = new StringTokenizer(str);
+        String delimiter1[] = {"0", "2", "4"};
+        String expected1[] = {"abc", "def1ghi", "jkl3mno", "pqr", "stu1vwx", 
+                              "yza3bcd", "efg", "hij1klm", "nop3qrs", "tuv"};
+        for (int i = 0; i < expected1.length; i ++) {
+            if (!st.nextToken(delimiter1[i % delimiter1.length]).equals(
+                                                            expected1[i])) {
+                errln("nextToken() with delimiters error " + i);
+            }
+        }
+    }
+    
+    public void TestBug4423()
+    {
+        // bug 4423:  a bad interaction between countTokens() and hasMoreTokens().
+        //
+        String s1 = "This is a test";
+        StringTokenizer tzr = new StringTokenizer(s1);
+        int  tokenCount = 0;
+        
+        int t = tzr.countTokens();
+        if (t!= 4) {
+            errln("tzr.countTokens() returned " + t + ".  Expected 4");
+        }
+        while (tzr.hasMoreTokens()) {
+            String  tok = tzr.nextToken();
+            if (tok.length() == 0) {
+                errln("token with length == 0");
+            }
+            tokenCount++;
+        }
+        if (tokenCount != 4) {
+            errln("Incorrect number of tokens found = " + tokenCount);
+        }
+        
+        // Precomputed tokens arrays can grow.  Check for edge cases around
+        //  boundary where growth is forced.  Array grows in increments of 100 tokens.
+        String s2 = "";
+        for (int i=1; i<250; i++) {
+            s2 = s2 + " " + i;
+            StringTokenizer tzb = new StringTokenizer(s2);
+            int t2 = tzb.countTokens();
+            if (t2 != i) {
+                errln("tzb.countTokens() returned " + t + ".  Expected " + i);
+                break;
+            }
+            int j = 0;
+            while (tzb.hasMoreTokens()) {
+                String tok = tzb.nextToken();
+                j++;
+                if (tok.equals(Integer.toString(j)) == false) {
+                    errln("Wrong token string.  Expected \"" + j + "\", got \""
+                            + tok + "\".");
+                    break;
+                }
+            }
+            if (j != i) {
+                errln("Wrong number of tokens.  Expected " + i + ".  Got " + j
+                        + ".");
+                break;
+            }
+        }
+        
+    }
+
+    public void TestCountTokensNoCoalesce() {
+        // jitterbug 5207
+        String str = "\"\"";
+        String del = "\"";
+        StringTokenizer st = new StringTokenizer(str, del, true);
+        int count = 0;
+        while (st.hasMoreTokens()) {
+            String t = st.nextToken();
+            logln("[" + count + "] '" + t + "'");
+            ++count;
+        }
+        st = new StringTokenizer(str, del, true);
+        int ncount = st.countTokens();
+        int xcount = 0;
+        while (st.hasMoreTokens()) {
+            String t = st.nextToken();
+            logln("[" + xcount + "] '" + t + "'");
+            ++xcount;
+        }
+        if (count != ncount || count != xcount) {
+            errln("inconsistent counts " + count + ", " + ncount + ", " + xcount);
+        }
+    }
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            StringTokenizerTest test = new StringTokenizerTest();
+            test.run(arg);
+            // test.TestCaseCompare();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/Tabber.java b/src/com/ibm/icu/dev/test/util/Tabber.java
new file mode 100644
index 0000000..e87d330
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Tabber.java
@@ -0,0 +1,223 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class Tabber {
+    public static final byte LEFT = 0, CENTER = 1, RIGHT = 2;
+    private static final String[] ALIGNMENT_NAMES = {"Left", "Center", "Right"};
+    
+    /**
+     * Repeats a string n times
+     * @param source
+     * @param times
+     */
+    // TODO - optimize repeats using doubling?
+    public static String repeat(String source, int times) {
+        if (times <= 0) return "";
+        if (times == 1) return source;
+        StringBuffer result = new StringBuffer();
+        for (; times > 0; --times) {
+            result.append(source);
+        }
+        return result.toString();
+    }
+    
+    public String process(String source) {
+        StringBuffer result = new StringBuffer();
+        int lastPos = 0;
+        for (int count = 0; lastPos < source.length(); ++count) {
+            int pos = source.indexOf('\t', lastPos);
+            if (pos < 0) pos = source.length();
+            process_field(count, source, lastPos, pos, result);
+            lastPos = pos+1;
+        }
+        return prefix + result.toString() + postfix;
+    }
+    
+    private String prefix = "";
+    private String postfix = "";
+    
+    public abstract void process_field(int count, String source, int start, int limit, StringBuffer output);
+    
+    public Tabber clear() {
+        return this;
+    }
+
+    public static class MonoTabber extends Tabber {
+        int minGap = 0;
+    
+        private List stops = new ArrayList();
+        private List types = new ArrayList();
+        
+        public Tabber clear() {
+            stops.clear();
+            types.clear();
+            minGap = 0;
+            return this;
+        }
+        
+        public String toString() {
+            StringBuffer buffer = new StringBuffer();
+            for (int i = 0; i < stops.size(); ++i) {
+                if (i != 0) buffer.append("; ");
+                buffer
+                .append(ALIGNMENT_NAMES[((Integer)types.get(i)).intValue()])
+                .append(",")
+                .append(stops.get(i));
+            } 
+            return buffer.toString();
+        }
+    
+        /**
+         * Adds tab stop and how to align the text UP TO that stop
+         * @param tabPos
+         * @param type
+         */
+        public MonoTabber addAbsolute(int tabPos, int type) {
+            stops.add(new Integer(tabPos));
+            types.add(new Integer(type));
+            return this;
+        }
+    
+        /**
+         * Adds relative tab stop and how to align the text UP TO that stop
+         */
+        public Tabber add(int fieldWidth, byte type) {
+            int last = getStop(stops.size()-1);
+            stops.add(new Integer(last + fieldWidth));
+            types.add(new Integer(type));
+            return this;
+        }
+        
+        public int getStop(int fieldNumber) {
+            if (fieldNumber < 0) return 0;
+            if (fieldNumber >= stops.size()) fieldNumber = stops.size() - 1;
+            return ((Integer)stops.get(fieldNumber)).intValue();
+        }
+        public int getType(int fieldNumber) {
+            if (fieldNumber < 0) return LEFT;
+            if (fieldNumber >= stops.size()) return LEFT;
+            return ((Integer)types.get(fieldNumber)).intValue();
+        }
+        /*
+        public String process(String source) {
+            StringBuffer result = new StringBuffer();
+            int lastPos = 0;
+            int count = 0;
+            for (count = 0; lastPos < source.length() && count < stops.size(); count++) {
+                int pos = source.indexOf('\t', lastPos);
+                if (pos < 0) pos = source.length();
+                String piece = source.substring(lastPos, pos);
+                int stopPos = getStop(count);
+                if (result.length() < stopPos) {
+                    result.append(repeat(" ", stopPos - result.length()));
+                    // TODO fix type
+                }
+                result.append(piece);
+                lastPos = pos+1;
+            }
+            if (lastPos < source.length()) {
+                result.append(source.substring(lastPos));
+            }
+            return result.toString();
+        }
+        */
+        
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            String piece = source.substring(start, limit);
+            int startPos = getStop(count-1);
+            int endPos = getStop(count) - minGap;
+            int type = getType(count);
+            switch (type) {
+                case LEFT: 
+                    break;
+                case RIGHT: 
+                    startPos = endPos - piece.length();
+                    break;
+                case CENTER: 
+                    startPos = (startPos + endPos - piece.length() + 1)/2;
+                    break;
+            }
+
+            int gap = startPos - output.length();
+            if (count != 0 && gap < minGap) gap = minGap;
+            if (gap > 0) output.append(repeat(" ", gap));
+            output.append(piece);
+        }
+        
+    }
+    
+    public static Tabber NULL_TABBER = new Tabber() {
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            if (count > 0) output.append( "\t");
+            output.append(source.substring(start, limit));
+        }
+    };
+    
+    public static class HTMLTabber extends Tabber {
+        private List parameters = new ArrayList();
+        {
+            setPrefix("<tr>");
+            setPostfix("</tr>");
+        }
+        public void setParameters(int count, String params) {
+            while (count >= parameters.size()) parameters.add(null);
+            parameters.set(count,params);
+        }
+        
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            output.append("<td");
+            String params = null;
+            if (count < parameters.size()) params = (String) parameters.get(count);
+            if (params != null) {
+                output.append(' ');
+                output.append(params);
+            }
+            output.append(">");
+            output.append(source.substring(start, limit));
+            // TODO Quote string
+            output.append("</td>");            
+        }
+    }
+    /**
+     */
+    public String getPostfix() {
+        return postfix;
+    }
+
+    /**
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * @param string
+     */
+    public Tabber setPostfix(String string) {
+        postfix = string;
+        return this;
+    }
+
+    /**
+     * @param string
+     */
+    public Tabber setPrefix(String string) {
+        prefix = string;
+        return this;
+    }
+
+    public Tabber add(int i, byte left2) {
+        // does nothing unless overridden
+        return this;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestAll.java b/src/com/ibm/icu/dev/test/util/TestAll.java
new file mode 100644
index 0000000..122de7e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestAll.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+            "VersionInfoTest",
+            "ICUResourceBundleTest",
+            "CompactArrayTest",
+            "StringTokenizerTest",
+            "CurrencyTest",
+            "UtilityTest",
+            "TrieTest",
+            "LocaleDataTest",
+            "ULocaleTest",
+            "LocaleAliasTest",
+            "DebugUtilitiesTest"
+        },
+              "Test miscellaneous public utilities");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Util";
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/util/TestBNF.java b/src/com/ibm/icu/dev/test/util/TestBNF.java
new file mode 100644
index 0000000..7e9e739
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBNF.java
@@ -0,0 +1,246 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Random;
+
+//TODO integrate this into the test framework
+
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestBNF {
+    
+    static final String[] testRules = {
+        "$root = [ab]{3};",
+        
+        "$root = [ab]{3,};",
+        
+        "$root = [ab]{3,5};",
+        
+        "$root = [ab]*;",
+        
+        "$root = [ab]?;",
+        
+        "$root = [ab]+;",
+        
+        "$us = [a-z];" +
+        "$root = [0-9$us];",
+        
+        "$root = a $foo b? 25% end 30% | $foo 50%;\r\n" +
+        "$foo = c{1,5} 20%;",
+        
+        "$root = [a-z]{1,5}~;",
+        
+        "$root = [a-z]{5}~;",
+        
+        "$root = '\\' (u | U0010 | U000 $hex) $hex{4} ;\r\n" +
+        "$hex = [0-9A-Fa-f];",
+    };
+        
+    static String unicodeSetBNF = "" +
+    "$root = $leaf | '[' $s $root2 $s ']' ;\r\n" +
+    "$root2 = $leaf | '[' $s $root3 $s ']' | ($root3 $s ($op $root3 $s){0,3}) ;\r\n" +
+    "$root3 = $leaf | '[' $s $root4 $s ']' | ($root4 $s ($op $root4 $s){0,3}) ;\r\n" +
+    "$root4 = $leaf | ($leaf $s ($op $leaf $s){0,3}) ;\r\n" +
+    "$op = (('&' | '-') $s)? 70%;" +
+    "$leaf = '[' $s $list $s ']' | $prop;\r\n" +
+    "$list = ($char $s ('-' $s $char $s)? 30%){1,5} ;\r\n" +
+    "$prop = '\\' (p | P) '{' $s $propName $s '}' | '[:' '^'? $s $propName $s ':]';\r\n" +
+    "$needsQuote = [\\-\\][:whitespace:][:control:]] ;\r\n" +
+    "$char = [[\\u0000-\\U00010FFFF]-$needsQuote] | $quoted ;\r\n" +
+    "$quoted = '\\' ('u' | 'U0010' | 'U000' $hex) $hex{4} ;\r\n" +
+    "$hex = [0-9A-Fa-f];\r\n" +
+    "$s = ' '? 20%;\r\n" +
+    "$propName = (whitespace | ws) | (uppercase | uc) | (lowercase | lc) | $category;\r\n" +
+    "$category = ((general | gc) $s '=' $s)? $catvalue;\r\n" +
+    "$catvalue = (C | Other | Cc | Control | Cf | Format | Cn | Unassigned | L | Letter);\r\n";
+
+    public static void main (String[] args) {
+        testTokenizer();
+        for (int i = 0; i < testRules.length; ++i) {
+            testBNF(testRules[i], null, 20);          
+        }
+        
+        testBNF(unicodeSetBNF, null, 20);
+        //testParser();
+    }
+    
+    static void testBNF(String rules, UnicodeSet chars, int count) {
+        BNF bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addSet("$chars", chars)
+        .addRules(rules)
+        .complete();
+
+        System.out.println("====================================");
+        System.out.println("BNF");
+        System.out.println(rules);
+        System.out.println(bnf.getInternal());
+        for (int i = 0; i < count; ++i) {
+            System.out.println(i + ": " + bnf.next());
+        }
+    }
+    
+    /*
+    public static testManual() {
+        Pick p = Pick.maybe(75,Pick.unquoted("a"));
+        testOr(p, 1);
+        p = Pick.or(new String[]{"", "a", "bb", "ccc"});
+        testOr(p, 3);
+        p = Pick.repeat(3, 5, new int[]{20, 30, 20}, "a");
+        testOr(p, 5);        
+        p = Pick.codePoint("[a-ce]");
+        testCodePoints(p);        
+        p = Pick.codePoint("[a-ce]");
+        testCodePoints(p);        
+        p = Pick.string(2, 8, p);
+        testOr(p,10);
+        
+        p = Pick.or(new String[]{"", "a", "bb", "ccc"});
+        p = Pick.and(p).and2(p).and2("&");
+        testMatch(p, "abb&");
+        testMatch(p, "bba");
+        
+        // testEnglish();        
+    }
+    */
+    
+    static void testMatch(Pick p, String source) {
+        Pick.Position pp = new Pick.Position();
+        boolean value = p.match(source, pp);
+        System.out.println("Match: " + value + ", " + pp);      
+    }
+    /*
+    static void testParser() {
+        try {
+            Pick.Target target = new Pick.Target();
+            for (int i = 0; i < rules.length; ++i) {
+                target.addRule(rules[i]);
+            }
+        } catch (ParseException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+    */
+    
+    static class Counts {
+        int[] counts;       
+        Counts(int max) {
+            counts = new int[max+1];
+        }
+        void inc(int index) {
+            counts[index]++;
+        }
+        void show() {
+            System.out.println("Printing Counts");
+            for (int i = 0; i < counts.length; ++i) {
+                if (counts[i] == 0) continue;
+                System.out.println(i + ": " + counts[i]);
+            }
+            System.out.println();
+        }
+    }
+    
+/*    static final String[] rules = {
+        "$s = ' ';",
+        "$noun = dog | house | government | wall | street | zebra;",
+        "$adjective = red | glorious | simple | nasty | heavy | clean;",
+        "$article = quickly | oddly | silently | boldly;",
+        "$adjectivePhrase = ($adverb $s)? 50% $adjective* 0% 30% 20% 10%;",
+        "$nounPhrase = $articles $s ($adjectivePhrase $s)? 30% $noun;",
+        "$verb = goes | fishes | walks | sleeps;",
+        "$tverb = carries | lifts | overturns | hits | jumps on;",
+        "$copula = is 30% | seems 10%;",
+        "$sentence1 = $nounPhrase $s $verb $s ($s $adverb)? 30%;",
+        "$sentence2 = $nounPhrase $s $tverb $s $nounPhrase ($s $adverb)? 30%;",
+        "$sentence3 = $nounPhrase $s $copula $s $adjectivePhrase;",
+        "$conj = but | and | or;",
+        "$sentence4 = $sentence1 | $sentence2 | $sentence3 20% | $sentence4 $conj $sentence4 20%;",
+        "$sentence = $sentence4 '.';"};
+ */
+    /*
+    private static void testEnglish() {
+        Pick s = Pick.unquoted(" ");
+        Pick verbs = Pick.or(new String[]{"goes", "fishes", "walks", "sleeps"});
+        Pick transitive = Pick.or(new String[]{"carries", "lifts", "overturns", "hits", "jumps on"});
+        Pick nouns = Pick.or(new String[]{"dog", "house", "government", "wall", "street", "zebra"});
+        Pick adjectives = Pick.or(new String[]{"red", "glorious", "simple", "nasty", "heavy", "clean"});
+        Pick articles = Pick.or(new String[]{"the", "a"});
+        Pick adverbs = Pick.or(new String[]{"quickly", "oddly", "silently", "boldly"});
+        Pick adjectivePhrase = Pick.and(0.5, Pick.and(adverbs).and2(s)).and2(adjectives);
+        Pick nounPhrase = Pick.and(articles).and2(s)
+            .and2(0.3, Pick.and(adjectivePhrase).and2(s))
+            .and2(nouns);
+        Pick copula = Pick.or(new String[]{"is", "seems"});
+        Pick sentence1 = Pick.and(nounPhrase).and2(s).and2(verbs)
+            .and2(0.3, Pick.and(s).and2(adverbs)).name("s1");
+        Pick sentence2 = Pick.and(nounPhrase).and2(s).and2(transitive).and2(s).and2(nounPhrase)
+            .and2(0.3, Pick.and(s).and2(adverbs)).name("s2");
+        Pick sentence3 = Pick.and(nounPhrase).and2(s).and2(copula).and2(s).and2(adjectivePhrase).name("s3");
+        Pick conj = Pick.or(new String[]{", but", ", and", ", or"});
+        Pick forward = Pick.unquoted("forward");
+        Pick pair = Pick.and(forward).and2(conj).and2(s).and2(forward).name("part");
+        Pick sentenceBase = Pick.or(sentence1).or2(sentence2).or2(sentence3).or2(0.6666, pair).name("sentence");
+        sentenceBase.replace(forward, sentenceBase);
+        Pick sentence = Pick.and(sentenceBase).and2(Pick.unquoted("."));
+        Pick.Target target = Pick.Target.make(sentence);
+        for (int i = 0; i < 50; ++i) {
+            System.out.println(i + ": " + target.next());
+        }
+    }
+    private static void testOr(Pick p, int count) {
+        Pick.Target target = Pick.Target.make(p);
+        Counts counts = new Counts(count + 10);
+        for (int i = 0; i < 1000; ++i) {
+            String s = target.next();
+            counts.inc(s.length());
+        }
+        counts.show();
+    }
+    private static void testCodePoints(Pick p) {
+        Pick.Target target = Pick.Target.make(p);
+        Counts counts = new Counts(128);
+        for (int i = 0; i < 10000; ++i) {
+            String s = target.next();
+            counts.inc(s.charAt(0));
+        }
+        counts.show();
+    }
+    */
+    public static void printRandoms() {
+        BNF bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addRules("[a-z]{2,5}").complete();
+        System.out.println("Start");
+        for (int i = 0; i < 100; ++i) {
+            String temp = bnf.next();
+            System.out.println(i + ")\t" + temp);
+        }
+    }
+    
+    public static void testTokenizer() {
+        Tokenizer t = new Tokenizer();
+        
+        String[] samples = {"a'b'c d #abc\r e", "'a '123 321", 
+            "\\\\", "a'b", "a'", "abc def%?ghi", "%", "a", "\\ a", "a''''b"};
+        for (int i = 0; i < samples.length; ++i) {
+            t.setSource(samples[i]);
+            System.out.println();
+            System.out.println("Input: " + t.getSource());
+            int type = 0;
+            while (type != Tokenizer.DONE) {
+                type = t.next();
+                System.out.println(t.toString(type, false));
+            }
+        }
+    }
+
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TestBagFormatter.java b/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
new file mode 100644
index 0000000..6fd6e04
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
@@ -0,0 +1,247 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+// TODO integrate this into the test framework
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.Collator;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+// TODO change to use test framework
+public class TestBagFormatter {
+    
+    static final void generatePropertyAliases(boolean showValues) {
+        generatePropertyAliases(showValues, ICUPropertyFactory.make());
+    }
+    
+    static final void generatePropertyAliases(boolean showValues, UnicodeProperty.Factory ups) {
+        Collator order = Collator.getInstance(Locale.ENGLISH);
+        TreeSet props = new TreeSet(order);
+        TreeSet values = new TreeSet(order);
+        BagFormatter bf = new BagFormatter();
+        props.addAll(ups.getAvailableNames());
+        for (int i = UnicodeProperty.BINARY; i < UnicodeProperty.LIMIT_TYPE; ++i) {
+            System.out.println(UnicodeProperty.getTypeName(i));
+            Iterator it = props.iterator();
+            while (it.hasNext()) {
+                String propAlias = (String)it.next();
+                UnicodeProperty up = ups.getProperty(propAlias);
+                int type = up.getType();
+                if (type != i) continue;                
+                System.out.println();
+                System.out.println(propAlias + "\t" + bf.join(up.getNameAliases()));
+                if (!showValues) continue;
+                values.clear();
+                if (type == UnicodeProperty.NUMERIC || type == UnicodeProperty.EXTENDED_NUMERIC) {
+                    UnicodeMap um = new UnicodeMap();
+                    um.putAll(up);
+                    System.out.println(um.toString(new NumberComparator()));
+                    continue;
+                }
+                values.clear();
+                values.addAll(up.getAvailableValues());
+                Iterator it2 = values.iterator();
+                while (it2.hasNext()) {
+                    String valueAlias = (String)it2.next();
+                    System.out.println("\t" + bf.join(valueAlias + "\t" + up.getValueAliases(valueAlias)));
+                }
+            }
+        }
+    }
+    
+    static class NumberComparator implements Comparator {
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return 1;
+            if (o2 == null) return -1;
+            double n1 = Double.parseDouble((String)o1);
+            double n2 = Double.parseDouble((String)o2);
+            return n1 < n2 ? -1 : n1 > n2 ? 1 : 0;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        System.out.println("Start");
+        try {
+            //readCharacters();
+            UnicodeProperty prop = ICUPropertyFactory.make().getProperty("Canonicalcombiningclass");
+            prop.getAvailableValues();
+            
+            generatePropertyAliases(true);
+            
+            BagFormatter bf = new BagFormatter();
+
+            UnicodeSet us = new UnicodeSet("[:gc=nd:]");  
+            BagFormatter.CONSOLE.println("[:gc=nd:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+
+            us = new UnicodeSet("[:numeric_value=2:]");  
+            BagFormatter.CONSOLE.println("[:numeric_value=2:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+            
+            us = new UnicodeSet("[:numeric_type=numeric:]");   
+            BagFormatter.CONSOLE.println("[:numeric_type=numeric:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+            
+            UnicodeProperty.Factory ups = ICUPropertyFactory.make();
+            us = ups.getSet("gc=mn", null, null); 
+            BagFormatter.CONSOLE.println("gc=mn");
+            bf.showSetNames(BagFormatter.CONSOLE, us);
+            
+            if (true) return;
+            //showNames("Name", ".*MARK.*");
+            //showNames("NFD", "a.+");
+            //showNames("NFD", false);
+            //showNames("Lowercase_Mapping", false);
+            //TestUnicodePropertySource.test(true);
+            //showNames(".*\\ \\-.*");
+
+
+            //checkHTML();
+            //testIsRTL();
+           
+            //TestTokenizer.test();
+            //RandomCollator.generate("collationTest.txt", null);
+            
+            //TestPick.test();
+            //printRandoms();
+            //if (true) return;
+            //testLocales();
+            //if (true) return;
+            /*
+            TestCollator tc = new TestCollator();
+            tc.test(RuleBasedCollator.getInstance(),1000);
+            */
+            /*
+            StringBuffer sb = new StringBuffer();
+            for (int i = 0; i < 100; ++i) {
+                sb.setLength(0);
+                rc.nextRule(sb);
+                System.out.println(sb);
+            }
+            */
+        } finally {
+            System.out.println("End");
+       }
+
+    }
+    
+    static void testLocales() throws IOException {
+        Locale[] locales = Collator.getAvailableLocales();
+        Set s = new TreeSet(Collator.getInstance());
+        for (int i = 0; i < locales.length; ++i) {
+            String lang = locales[i].getLanguage();
+            String dlang = locales[i].getDisplayLanguage();
+            String country = locales[i].getCountry();
+            String dcountry = locales[i].getDisplayCountry();
+            if (country.equals("")) continue;
+            s.add(""
+                + "\t" + dcountry 
+                + "\t" + country 
+                + "\t" + dlang
+                + "\t" + lang 
+            );
+        }
+        //CollectionFormatter cf = new CollectionFormatter();
+        PrintWriter pw = BagFormatter.openUTF8Writer("", "countries.txt");
+        Iterator it = s.iterator();
+        while (it.hasNext()) {
+            pw.println(it.next());
+        }
+        pw.close();
+    }
+    
+    
+    /*
+     * Use the number of significant digits to round get a rounding value.
+     */
+/*    static final double LOG10 = Math.log(10);
+    public static void useSignificantDigits(double value, int digits) {
+        double log10 = Math.log(value)/LOG10; // log[e]
+        
+    }*/
+    
+    static final UnicodeSet RTL = new UnicodeSet("[[:L:]&[[:bidi class=R:][:bidi class=AL:]]]");
+    
+    static boolean isRTL(Locale loc) {        
+        // in 2.8 we can use the exemplar characters, but for 2.6 we have to work around it
+        int[] scripts = UScript.getCode(loc);
+        return new UnicodeSet()
+            .applyIntPropertyValue(UProperty.SCRIPT, scripts == null ? UScript.LATIN : scripts[0])
+            .retainAll(RTL).size() != 0;
+    }
+    
+    static void testIsRTL() {
+        Locale[] locales = Locale.getAvailableLocales();
+        Set s = new TreeSet();
+        for (int i = 0; i < locales.length; ++i) {
+            s.add((isRTL(locales[i]) ? "R " : "L ") + locales[i].getDisplayName());
+        }
+        Iterator it = s.iterator();
+        while (it.hasNext()) {
+            System.out.println(it.next());
+        }
+    }
+
+    static final Transliterator toHTML = Transliterator.createFromRules(
+        "any-html",        
+            "'<' > '&lt;' ;" +
+            "'&' > '&amp;' ;" +
+            "'>' > '&gt;' ;" +
+            "'\"' > '&quot;' ; ",
+        Transliterator.FORWARD);
+    static final Transliterator fromHTML = Transliterator.createFromRules(
+        "html-any",        
+            "'<' < '&'[lL][Tt]';' ;" +
+            "'&' < '&'[aA][mM][pP]';' ;" +
+            "'>' < '&'[gG][tT]';' ;" +
+            "'\"' < '&'[qQ][uU][oO][tT]';' ; ",
+        Transliterator.REVERSE);
+        
+    static void checkHTML() {
+        String foo = "& n < b < \"ab\"";
+        String fii = toHTML.transliterate(foo);
+        System.out.println("in: " + foo);
+        System.out.println("out: " + fii);
+        System.out.println("in*: " + fromHTML.transliterate(fii));
+        System.out.println("IN*: " + fromHTML.transliterate(fii.toUpperCase()));
+    }
+    /*
+    static void showNames(String propAlias, boolean matches) {
+        BagFormatter bf = new BagFormatter();
+        UnicodeSet stuff;
+        stuff = new UnicodePropertySource.ICU()
+            .setPropertyAlias(propAlias)
+            .getPropertySet(matches, null);
+        System.out.println(bf.showSetNames(propAlias + " with " + matches, stuff));
+    }
+    
+    static void showNames(String propAlias, String pattern) {
+        BagFormatter bf = new BagFormatter();
+        UnicodeSet stuff;
+        stuff = new UnicodePropertySource.ICU()
+            .setPropertyAlias(propAlias)
+            .getPropertySet(Pattern.compile(pattern).matcher(""), null);
+        System.out.println(bf.showSetNames(propAlias + "with " + pattern, stuff));
+    }
+    */
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TestData_en.jpp b/src/com/ibm/icu/dev/test/util/TestData_en.jpp
new file mode 100644
index 0000000..812f983
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestData_en.jpp
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+import java.util.ListResourceBundle;
+import com.ibm.icu.impl.ICUListResourceBundle;
+/*
+ * Eclipse expects the java files in a package-like directory structure to have a package declaration at the top of the file.
+ * To fool Eclipse this file has an "jpp" extension. The ant build script copies this file to the default package and renames it
+ * before building.
+ */ 
+/**
+ * @author ram
+ */
+
+public class TestData_en extends ListResourceBundle {
+    public TestData_en() {
+        
+  }
+  private static Object[][] data = new Object[][] { 
+              {
+                  "aaa",
+                 "testcircularalias/aab",
+              },
+              {
+                  "aab",
+                  "testcircularalias/aac",
+              },
+              {
+                  "aac",
+                  "testcircularalias/aaa",
+              } 
+  };
+  protected Object[][] getContents(){
+      return data;
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp b/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp
new file mode 100644
index 0000000..3312dd3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.UResourceBundle;
+/*
+ * Eclipse expects the java files in a package-like directory structure to have a package declaration at the top of the file.
+ * To fool Eclipse this file has an "jpp" extension. The ant build script copies this file to the default package and renames it
+ * before building.
+ */ 
+/**
+ * @author ram
+ */
+public class TestDefaultPackageLoading extends TestFmwk{
+    public static void main(String[] args){
+        new TestDefaultPackageLoading().run(args);
+    }
+    public void TestResourceBundleLoading(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("TestData", "en");
+            String aaa = bundle.getString("aaa");
+            if(!aaa.equals("testcircularalias/aab")){
+                errln("Did not get the expected data");
+            }
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    public void TestResFileLoading(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("", "te");
+            String aaa = bundle.getString("string_only_in_te");
+            if(!aaa.equals("TE")){
+                errln("Did not get the expected data");
+            }
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    public void TestJB3767(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.dev.data.TestData", "bge");
+            String aaa = bundle.getString("string_only_in_te");
+            if(!aaa.equals("TE")){
+                errln("Did not get the expected data");
+            }
+            logln("Got : " + bundle.getULocale().getName());
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestUtilities.java b/src/com/ibm/icu/dev/test/util/TestUtilities.java
new file mode 100644
index 0000000..33250fc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestUtilities.java
@@ -0,0 +1,469 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestBoilerplate;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestUtilities extends TestFmwk {
+    static final int LIMIT = 0x15; // limit to make testing more realistic in terms of collisions
+    static final int ITERATIONS = 1000000;
+    static final boolean SHOW_PROGRESS = false;
+    static final boolean DEBUG = false;
+    
+    public static void main(String[] args) throws Exception {
+        new TestUtilities().run(args);
+    }
+    
+    UnicodeMap map1 = new UnicodeMap();
+    Map map2 = new HashMap();
+    Map map3 = new TreeMap();
+    SortedSet log = new TreeSet();
+    static String[] TEST_VALUES = {null, "A", "B", "C", "D", "E", "F"};
+    static Random random = new Random(12345);
+    
+    public void TestUnicodeMap() {
+        random.setSeed(12345);
+        // do random change to both, then compare
+        logln("Comparing against HashMap");
+        for (int counter = 0; counter < ITERATIONS; ++counter) {
+            int start = random.nextInt(LIMIT);
+            String value = TEST_VALUES[random.nextInt(TEST_VALUES.length)];
+            String logline = Utility.hex(start) + "\t" + value;
+            if (SHOW_PROGRESS) logln(counter + "\t" + logline);
+            log.add(logline);
+            if (DEBUG && counter == 144) {
+                System.out.println(" debug");
+            }
+            map1.put(start, value);
+            map2.put(new Integer(start), value);
+            check(counter);
+        }
+        checkNext(LIMIT);
+        
+        logln("Setting General Category");
+        map1 = new UnicodeMap();
+        map2 = new TreeMap();
+        for (int cp = 0; cp <= SET_LIMIT; ++cp) {
+              int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+              //if (enumValue <= 0) continue; // for smaller set
+              String value = UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+              map1.put(cp, value);
+              map2.put(new Integer(cp), value);
+        }       
+        checkNext(Integer.MAX_VALUE);
+
+
+        logln("Comparing General Category");
+        check(-1);
+        logln("Comparing Values");
+        Set values1 = (Set) map1.getAvailableValues(new TreeSet());
+        Set values2 = new TreeSet(map2.values());
+        if (!TestBoilerplate.verifySetsIdentical(this, values1, values2)) {
+            throw new IllegalArgumentException("Halting");
+        }
+        logln("Comparing Sets");
+        for (Iterator it = values1.iterator(); it.hasNext();) {
+            Object value = it.next();
+            logln(value == null ? "null" : value.toString());
+            UnicodeSet set1 = map1.getSet(value);
+            UnicodeSet set2 = TestBoilerplate.getSet(map2, value);
+            if (!TestBoilerplate.verifySetsIdentical(this, set1, set2)) {
+                throw new IllegalArgumentException("Halting");
+            }
+        } 
+        
+        logln("Getting Scripts");
+        UnicodeMap scripts = ICUPropertyFactory.make().getProperty("script").getUnicodeMap_internal();
+        UnicodeMap.Composer composer = new UnicodeMap.Composer() {
+            public Object compose(int codePoint, Object a, Object b) {
+                return a.toString() + "_" + b.toString();
+            }
+        };
+        
+        logln("Trying Compose");
+        UnicodeMap composed = ((UnicodeMap)scripts.cloneAsThawed()).composeWith(map1, composer);
+        Object last = "";
+        for (int i = 0; i < 0x10FFFF; ++i) {
+            Object comp = composed.getValue(i);
+            Object gc = map1.getValue(i);
+            Object sc = scripts.getValue(i);
+            if (!comp.equals(composer.compose(i, gc, sc))) {
+                errln("Failed compose at: " + i);
+            }
+            if (!last.equals(comp)) {
+                logln(Utility.hex(i) + "\t" + comp);
+                last = comp;
+            }
+        }
+
+        // check boilerplate
+        List argList = new ArrayList();
+        argList.add("TestMain");
+        if (params.nothrow) argList.add("-nothrow");
+        if (params.verbose) argList.add("-verbose");
+        String[] args = new String[argList.size()];
+        argList.toArray(args);
+        new UnicodeMapBoilerplate().run(args);
+         // TODO: the following is not being reached
+        new UnicodeSetBoilerplate().run(args);       
+    }
+    
+    public void TestCollectionUtilitySpeed() {
+        HashSet hs1 = new HashSet();
+        HashSet hs2 = new HashSet();
+        int size = 100000;
+        int iterations = 100;
+        String prefix = "abcde";
+        String postfix = "abcde";
+        int start1 = 0; // 1 for some, 0 for all
+        for (int i = 0; i < size; i += 2) hs1.add(prefix + String.valueOf(i) + postfix);
+        for (int i = start1; i < size; i += 2) hs2.add(prefix + String.valueOf(i) + postfix);
+        TreeSet ts1 = new TreeSet(hs1);
+        TreeSet ts2 = new TreeSet(hs2);
+        CollectionUtilities.containsAll(hs1, hs2);
+        CollectionUtilities.containsAll(ts1, ts2);
+        long start, end;
+        boolean temp = false;
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) temp = CollectionUtilities.containsAll(hs1, hs2);
+        end = System.currentTimeMillis();
+        logln(temp + " " + (end - start)/1000.0);
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) temp = CollectionUtilities.containsAll(ts1, ts2);
+        end = System.currentTimeMillis();
+        logln(temp + " " + (end - start)/1000.0);
+    }
+    
+    public void TestCollectionUtilities() {
+        String[][] test = {{"a", "c", "e", "g", "h", "z"}, {"b", "d", "f", "h", "w"}, { "a", "b" }, { "a", "d" }, {"d"}, {}}; // 
+        int resultMask = 0;
+        for (int i = 0; i < test.length; ++i) {
+            Collection a = new TreeSet(Arrays.asList(test[i]));
+            for (int j = 0; j < test.length; ++j) {
+                Collection b = new TreeSet(Arrays.asList(test[j]));
+                int relation = CollectionUtilities.getContainmentRelation(a, b);
+                resultMask |= (1 << relation);
+                switch (relation) {
+                case CollectionUtilities.ALL_EMPTY:
+                    checkContainment(a.size() == 0 && b.size() == 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_SUPERSET_B:
+                    checkContainment(a.size() == 0 && b.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_DISJOINT_B:
+                    checkContainment(a.equals(b) && a.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_SUBSET_B:
+                    checkContainment(a.size() != 0 && b.size() == 0, a, relation, b);
+                    break;
+                case CollectionUtilities.A_PROPER_SUBSET_OF_B:
+                    checkContainment(b.containsAll(a) && !a.equals(b), a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_EQUALS_B:
+                    checkContainment(!CollectionUtilities.containsSome(a, b) && a.size() != 0 && b.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.A_PROPER_SUPERSET_B:
+                    checkContainment(a.containsAll(b) && !a.equals(b), a, relation, b);
+                break;
+                case CollectionUtilities.A_PROPER_OVERLAPS_B:
+                    checkContainment(!b.containsAll(a) && !a.containsAll(b) && CollectionUtilities.containsSome(a, b), a, relation, b);
+                break;
+                }
+            }
+        }
+        if (resultMask != 0xFF) {
+            String missing = "";
+            for (int i = 0; i < 8; ++i) {
+                if ((resultMask & (1 << i)) == 0) {
+                    if (missing.length() != 0) missing += ", ";
+                    missing += RelationName[i];
+                }
+            }
+            errln("Not all ContainmentRelations checked: " + missing);
+        }
+    }
+
+    static final String[] RelationName = {"ALL_EMPTY",
+            "NOT_A_SUPERSET_B",
+            "NOT_A_DISJOINT_B",
+            "NOT_A_SUBSET_B",
+            "A_PROPER_SUBSET_OF_B",
+            "A_PROPER_DISJOINT_B",
+            "A_PROPER_SUPERSET_B",
+            "A_PROPER_OVERLAPS_B"};
+
+    /**
+     *  
+     */
+    private void checkContainment(boolean c, Collection a, int relation, Collection b) {
+        if (!c) {
+            errln("Fails relation: " + a + " \t" + RelationName[relation] + " \t" + b);
+        }
+    }
+
+    private void checkNext(int limit) {
+        logln("Comparing nextRange");
+        UnicodeMap.MapIterator mi = new UnicodeMap.MapIterator(map1);
+        Map localMap = new TreeMap();
+        while (mi.nextRange()) {
+            logln(Utility.hex(mi.codepoint) + ".." + Utility.hex(mi.codepointEnd) + " => " + mi.value);
+            for (int i = mi.codepoint; i <= mi.codepointEnd; ++i) {
+                if (i >= limit) continue;
+                localMap.put(new Integer(i), mi.value);
+            }
+        }
+        checkMap(map2, localMap);
+        
+        logln("Comparing next");
+        mi.reset();
+        localMap = new TreeMap();
+        Object lastValue = new Object();
+        while (mi.next()) {
+            if (!UnicodeMap.areEqual(lastValue, mi.value)) {
+                // System.out.println("Change: " + Utility.hex(mi.codepoint) + " => " + mi.value);
+                lastValue = mi.value;
+            }
+            if (mi.codepoint >= limit) continue;
+            localMap.put(new Integer(mi.codepoint), mi.value);
+        }
+        checkMap(map2, localMap);
+    }
+    
+    public void check(int counter) {
+        for (int i = 0; i < LIMIT; ++i) {
+            Object value1 = map1.getValue(i);
+            Object value2 = map2.get(new Integer(i));
+            if (!UnicodeMap.areEqual(value1, value2)) {
+                errln(counter + " Difference at " + Utility.hex(i)
+                     + "\t UnicodeMap: " + value1
+                     + "\t HashMap: " + value2);
+                errln("UnicodeMap: " + map1);
+                errln("Log: " + TestBoilerplate.show(log));
+                errln("HashMap: " + TestBoilerplate.show(map2));
+            }
+        }
+    }
+    
+    void checkMap(Map m1, Map m2) {
+        if (m1.equals(m2)) return;
+        StringBuffer buffer = new StringBuffer();
+        Set m1entries = m1.entrySet();
+        Set m2entries = m2.entrySet();
+        getEntries("\r\nIn First, and not Second", m1entries, m2entries, buffer, 20);
+        getEntries("\r\nIn Second, and not First", m2entries, m1entries, buffer, 20);
+        errln(buffer.toString());
+    }
+    
+    static Comparator ENTRY_COMPARATOR = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return -1;
+            if (o2 == null) return 1;
+            Map.Entry a = (Map.Entry) o1;
+            Map.Entry b = (Map.Entry) o2;
+            int result = compare2(a.getKey(), b.getKey());
+            if (result != 0) return result;
+            return compare2(a.getValue(), b.getValue());
+        }
+        private int compare2(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return -1;
+            if (o2 == null) return 1;
+            return ((Comparable)o1).compareTo(o2);
+        }
+    };
+
+    private void getEntries(String title, Set m1entries, Set m2entries, StringBuffer buffer, int limit) {
+        Set m1_m2 = new TreeSet(ENTRY_COMPARATOR);
+        m1_m2.addAll(m1entries);
+        m1_m2.removeAll(m2entries);
+        buffer.append(title + ": " + m1_m2.size() + "\r\n");
+        for (Iterator it = m1_m2.iterator(); it.hasNext();) {
+            if (limit-- < 0) return;
+            Map.Entry entry = (Map.Entry) it.next();
+            buffer.append(entry.getKey()).append(" => ")
+             .append(entry.getValue()).append("\r\n");
+        }
+    }
+    
+    static final int SET_LIMIT = 0x10FFFF;
+    static final int CHECK_LIMIT = 0xFFFF;
+    static final NumberFormat pf = NumberFormat.getPercentInstance();
+    static final NumberFormat nf = NumberFormat.getInstance();
+    
+    public void TestTime() {
+        double hashTime, umTime, icuTime, treeTime;
+        umTime = checkSetTime(20, 0);
+        hashTime = checkSetTime(20, 1);
+        logln("Percentage: " + pf.format(hashTime/umTime));
+        treeTime = checkSetTime(20, 3);
+        logln("Percentage: " + pf.format(treeTime/umTime));
+        //logln(map1.toString());
+        
+        umTime = checkGetTime(1000, 0);
+        hashTime = checkGetTime(1000, 1);
+        logln("Percentage: " + pf.format(hashTime/umTime));
+        icuTime = checkGetTime(1000, 2);
+        logln("Percentage: " + pf.format(icuTime/umTime));
+        treeTime = checkGetTime(1000, 3);
+        logln("Percentage: " + pf.format(treeTime/umTime));
+    }
+    
+    int propEnum = UProperty.GENERAL_CATEGORY;
+    
+    double checkSetTime(int iterations, int type) {
+        _checkSetTime(1,type);
+        double result = _checkSetTime(iterations, type);
+        logln((type == 0 ? "UnicodeMap" : type == 1 ? "HashMap" : type == 2 ? "ICU" : "TreeMap") + "\t" + nf.format(result));
+        return result;
+    }
+    double _checkSetTime(int iterations, int type) {
+        map1 = new UnicodeMap();
+        map2 = new HashMap();
+        System.gc();
+        double start = System.currentTimeMillis();
+        for (int j = 0; j < iterations; ++j)
+          for (int cp = 0; cp <= SET_LIMIT; ++cp) {
+            int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+            if (enumValue <= 0) continue; // for smaller set
+            String value = UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+            switch(type) {
+            case 0: map1.put(cp, value); break;
+            case 1: map2.put(new Integer(cp), value); break;
+            case 3: map3.put(new Integer(cp), value); break;
+            }
+        }
+        double end = System.currentTimeMillis();
+        return (end-start)/1000/iterations;
+    }
+    
+    double checkGetTime(int iterations, int type) {
+        _checkGetTime(1,type);
+        double result = _checkGetTime(iterations, type);
+        logln((type == 0 ? "UnicodeMap" : type == 1 ? "HashMap" : type == 2 ? "ICU" : "TreeMap") + "\t" + nf.format(result));
+        return result;
+    }
+    double _checkGetTime(int iterations, int type) {
+        System.gc();
+        double start = System.currentTimeMillis();
+        for (int j = 0; j < iterations; ++j)
+          for (int cp = 0; cp < CHECK_LIMIT; ++cp) {
+            switch (type) {
+            case 0: map1.getValue(cp); break;
+            case 1: map2.get(new Integer(cp)); break;
+            case 2:
+                int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+                //if (enumValue <= 0) continue;
+                UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+                break;                
+            case 3: map3.get(new Integer(cp)); break;
+            }
+        }
+        double end = System.currentTimeMillis();
+        return (end-start)/1000/iterations;
+    }
+    
+    static class UnicodeMapBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 30) return false;
+            UnicodeMap result = new UnicodeMap();
+            for (int i = 0; i < 50; ++i) {
+                int start = random.nextInt(25);
+                String value = TEST_VALUES[random.nextInt(TEST_VALUES.length)];
+                result.put(start, value);
+            }
+            list.add(result);
+            return true;
+        }
+    }
+    
+    static class StringBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 31) return false;
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < 10; ++i) {
+                result.append((char)random.nextInt(0xFF));
+            }
+            list.add(result.toString());
+            return true;
+        }
+    }
+    
+    static class UnicodeSetBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 32) return false;
+            UnicodeSet result = new UnicodeSet();
+            for (int i = 0; i < 50; ++i) {
+                result.add(random.nextInt(100));
+            }
+            list.add(result.toString());
+            return true;
+        }
+    }
+
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java b/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
new file mode 100644
index 0000000..f70a1ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.TextTrieMap;
+
+public class TextTrieMapTest extends TestFmwk {
+
+    private static final Integer SUN = new Integer(1);
+    private static final Integer MON = new Integer(2);
+    private static final Integer TUE = new Integer(3);
+    private static final Integer WED = new Integer(4);
+    private static final Integer THU = new Integer(5);
+    private static final Integer FRI = new Integer(6);
+    private static final Integer SAT = new Integer(7);
+
+    private static final Integer FOO = new Integer(-1);
+    private static final Integer BAR = new Integer(-2);
+    
+    private static final Object[][] TESTDATA = {
+        {"Sunday", SUN},
+        {"Monday", MON},
+        {"Tuesday", TUE},
+        {"Wednesday", WED},
+        {"Thursday", THU},
+        {"Friday", FRI},
+        {"Saturday", SAT},
+        {"Sun", SUN},
+        {"Mon", MON},
+        {"Tue", TUE},
+        {"Wed", WED},
+        {"Thu", THU},
+        {"Fri", FRI},
+        {"Sat", SAT},
+        {"S", SUN},
+        {"M", MON},
+        {"T", TUE},
+        {"W", WED},
+        {"T", THU},
+        {"F", FRI},
+        {"S", SAT}
+    };
+
+    private static final Object[][] TESTCASES = {
+        {"Sunday", SUN, SUN},
+        {"sunday", null, SUN},
+        {"Mo", MON, MON},
+        {"mo", null, MON},
+        {"Thursday Friday", THU, THU},
+        {"T", new Object[]{TUE, THU}, new Object[]{TUE, THU}},
+        {"TEST", new Object[]{TUE, THU}, new Object[]{TUE, THU}},
+        {"SUN", new Object[]{SUN, SAT}, SUN},
+        {"super", null, SUN},
+        {"NO", null, null}
+    };
+    
+    public static void main(String[] args) throws Exception {
+        TextTrieMapTest test = new TextTrieMapTest();
+        test.run(args);
+    }
+
+    public void TestCaseSensitive() {
+        Iterator itr = null;
+        TextTrieMap map = new TextTrieMap(false);
+        for (int i = 0; i < TESTDATA.length; i++) {
+            map.put((String)TESTDATA[i][0], TESTDATA[i][1]);
+        }
+
+        logln("Test for get(String)");
+        for (int i = 0; i < TESTCASES.length; i++) {
+            itr = map.get((String)TESTCASES[i][0]);
+            checkResult(itr, TESTCASES[i][1]);
+        }
+
+        logln("Test for get(String, int)");
+        StringBuffer textBuf = new StringBuffer();
+        for (int i = 0; i < TESTCASES.length; i++) {
+            textBuf.setLength(0);
+            for (int j = 0; j < i; j++) {
+                textBuf.append('X');
+            }
+            textBuf.append(TESTCASES[i][0]);
+            itr = map.get(textBuf.toString(), i);
+            checkResult(itr, TESTCASES[i][1]);
+        }
+
+        // Add duplicated entry
+        map.put("Sunday", FOO);
+        // Add duplicated entry with different casing
+        map.put("sunday", BAR);
+
+        // Make sure the all entries are returned
+        itr = map.get("Sunday");
+        checkResult(itr, new Object[]{FOO, SUN});
+    }
+
+    public void TestCaseInsensitive() {
+        Iterator itr = null;
+        TextTrieMap map = new TextTrieMap(true);
+        for (int i = 0; i < TESTDATA.length; i++) {
+            map.put((String)TESTDATA[i][0], TESTDATA[i][1]);
+        }
+
+        logln("Test for get(String)");
+        for (int i = 0; i < TESTCASES.length; i++) {
+            itr = map.get((String)TESTCASES[i][0]);
+            checkResult(itr, TESTCASES[i][2]);
+        }
+        
+        logln("Test for get(String, int)");
+        StringBuffer textBuf = new StringBuffer();
+        for (int i = 0; i < TESTCASES.length; i++) {
+            textBuf.setLength(0);
+            for (int j = 0; j < i; j++) {
+                textBuf.append('X');
+            }
+            textBuf.append(TESTCASES[i][0]);
+            itr = map.get(textBuf.toString(), i);
+            checkResult(itr, TESTCASES[i][2]);
+        }
+
+        // Add duplicated entry
+        map.put("Sunday", FOO);
+        // Add duplicated entry with different casing
+        map.put("sunday", BAR);
+
+        // Make sure the all entries are returned
+        itr = map.get("Sunday");
+        checkResult(itr, new Object[]{SUN, FOO, BAR});
+    }
+
+    private boolean eql(Object o1, Object o2) {
+        if (o1 == null || o2 == null) {
+            if (o1 == null && o2 == null) {
+                return true;
+            }
+            return false;
+        }
+        return o1.equals(o2);
+    }
+
+    private void checkResult(Iterator itr, Object expected) {
+        if (itr == null) {
+            if (expected != null) {
+                errln("FAIL: Empty results - Expected: " + expected);
+            }
+            return;
+        }
+        if (expected == null && itr != null) {
+            errln("FAIL: Empty result is expected");
+            return;
+        }
+
+        Object[] exp;
+        if (expected instanceof Object[]) {
+            exp = (Object[])expected;
+        } else {
+            exp = new Object[]{expected};
+        }
+
+        boolean[] found = new boolean[exp.length];
+        while (itr.hasNext()) {
+            Object val = itr.next();
+            for (int i = 0; i < exp.length; i++) {
+                if (eql(exp[i], val)) {
+                    found[i] = true;
+                }
+            }
+        }
+        for (int i = 0; i < exp.length; i++) {
+            if (found[i] == false) {
+                errln("FAIL: The search result does not contain " + exp[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Tokenizer.java b/src/com/ibm/icu/dev/test/util/Tokenizer.java
new file mode 100644
index 0000000..265175a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Tokenizer.java
@@ -0,0 +1,323 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.text.ParsePosition;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.lang.*;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Map;
+
+public class Tokenizer {
+    protected String source;
+    
+    protected StringBuffer buffer = new StringBuffer();
+    protected long number;
+    protected UnicodeSet unicodeSet = null;
+    protected int index;
+    boolean backedup = false;
+    protected int lastIndex = -1;
+    protected int nextIndex;
+    int lastValue = BACKEDUP_TOO_FAR;
+    TokenSymbolTable symbolTable = new TokenSymbolTable();
+
+    private static final char
+        QUOTE = '\'',
+        BSLASH = '\\';
+    private static final UnicodeSet QUOTERS = new UnicodeSet().add(QUOTE).add(BSLASH);
+    private static final UnicodeSet WHITESPACE = new UnicodeSet("[" +
+        "\\u0009-\\u000D\\u0020\\u0085\\u200E\\u200F\\u2028\\u2029" +
+        "]");
+    private static final UnicodeSet SYNTAX = new UnicodeSet("[" +
+        "\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E" +
+        "\\u00A1-\\u00A7\\u00A9\\u00AB-\\u00AC\\u00AE" +
+        "\\u00B0-\\u00B1\\u00B6\\u00B7\\u00BB\\u00BF\\u00D7\\u00F7" +
+        "\\u2010-\\u2027\\u2030-\\u205E\\u2190-\\u2BFF" +
+        "\\u3001\\u3003\\u3008-\\u3020\\u3030" +
+        "\\uFD3E\\uFD3F\\uFE45\\uFE46" +
+        "]").removeAll(QUOTERS).remove('$');
+    private static final UnicodeSet NEWLINE = new UnicodeSet("[\\u000A\\u000D\\u0085\\u2028\\u2029]");
+    //private static final UnicodeSet DECIMAL = new UnicodeSet("[:Nd:]");
+    private static final UnicodeSet NON_STRING = new UnicodeSet()
+        .addAll(WHITESPACE)
+        .addAll(SYNTAX);
+           
+    protected UnicodeSet whiteSpace = WHITESPACE;
+    protected UnicodeSet syntax = SYNTAX;
+    private UnicodeSet non_string = NON_STRING;
+
+    private void fixSets() {
+        if (syntax.containsSome(QUOTERS) || syntax.containsSome(whiteSpace)) {
+            syntax = ((UnicodeSet)syntax.clone()).removeAll(QUOTERS).removeAll(whiteSpace);
+        }
+        if (whiteSpace.containsSome(QUOTERS)) {
+            whiteSpace = ((UnicodeSet)whiteSpace.clone()).removeAll(QUOTERS);
+        }
+        non_string = new UnicodeSet(syntax)
+            .addAll(whiteSpace);
+    }
+    
+    public Tokenizer setSource(String source) {
+        this.source = source;
+        this.index = 0;
+        return this; // for chaining
+    }
+    
+    public Tokenizer setIndex(int index) {
+        this.index = index;
+        return this; // for chaining
+    }
+    
+    public static final int 
+        DONE = -1, 
+        NUMBER = -2, 
+        STRING = -3, 
+        UNICODESET = -4, 
+        UNTERMINATED_QUOTE = -5,
+        BACKEDUP_TOO_FAR = -6;
+        
+    private static final int
+        //FIRST = 0,
+        //IN_NUMBER = 1,
+        //IN_SPACE = 2,
+        AFTER_QUOTE = 3,    // warning: order is important for switch statement
+        IN_STRING = 4, 
+        AFTER_BSLASH = 5, 
+        IN_QUOTE = 6;
+   
+    public String toString(int type, boolean backedupBefore) {
+        String s = backedup ? "@" : "*";
+        switch(type) {
+            case DONE: 
+                return s+"Done"+s;
+            case BACKEDUP_TOO_FAR:
+                return s+"Illegal Backup"+s;
+            case UNTERMINATED_QUOTE: 
+                return s+"Unterminated Quote=" + getString() + s;
+            case STRING:
+                return s+"s=" + getString() + s;
+            case NUMBER:
+                return s+"n=" + getNumber() + s;
+            case UNICODESET:
+                return s+"n=" + getUnicodeSet() + s;           
+            default:
+                return s+"c=" + usf.getName(type,true) + s;
+        }
+    }
+    
+    private static final BagFormatter usf = new BagFormatter();
+    
+    public void backup() {
+        if (backedup) throw new IllegalArgumentException("backup too far");
+        backedup = true;
+        nextIndex = index;
+        index = lastIndex;
+    }
+    
+    /*
+    public int next2() {
+        boolean backedupBefore = backedup;
+        int result = next();
+        System.out.println(toString(result, backedupBefore));
+        return result;
+    }    
+    */
+    
+    public int next() {
+        if (backedup) {
+            backedup = false;
+            index = nextIndex;
+            return lastValue;
+        }
+        int cp = 0;
+        boolean inComment = false;
+        // clean off any leading whitespace or comments
+        while (true) {
+            if (index >= source.length()) return lastValue = DONE;
+            cp = nextChar();
+            if (inComment) {
+                if (NEWLINE.contains(cp)) inComment = false;
+            } else {
+                if (cp == '#') inComment = true;
+                else if (!whiteSpace.contains(cp)) break;
+            }
+        }
+        // record the last index in case we have to backup
+        lastIndex = index;
+        
+        if (cp == '[') {
+            ParsePosition pos = new ParsePosition(index-1);
+            unicodeSet = new UnicodeSet(source,pos,symbolTable);
+            index = pos.getIndex();
+            return lastValue = UNICODESET;
+        }
+        // get syntax character
+        if (syntax.contains(cp)) return lastValue = cp;
+        
+        // get number, if there is one
+        if (UCharacter.getType(cp) == Character.DECIMAL_DIGIT_NUMBER) {
+            number = UCharacter.getNumericValue(cp);
+            while (index < source.length()) {
+                cp = nextChar();
+                if (UCharacter.getType(cp) != Character.DECIMAL_DIGIT_NUMBER) {
+                    index -= UTF16.getCharCount(cp); // BACKUP!
+                    break;
+                }
+                number *= 10;
+                number += UCharacter.getNumericValue(cp);
+            }
+            return lastValue =  NUMBER;
+        }
+        buffer.setLength(0);
+        int status = IN_STRING;
+        main:
+        while (true) {
+            switch (status) {
+                case AFTER_QUOTE: // check for double ''?
+                    if (cp == QUOTE) {
+                        UTF16.append(buffer, QUOTE);
+                        status = IN_QUOTE;
+                        break;
+                    }
+                    // OTHERWISE FALL THROUGH!!!
+                case IN_STRING: 
+                    if (cp == QUOTE) status = IN_QUOTE;
+                    else if (cp == BSLASH) status = AFTER_BSLASH;
+                    else if (non_string.contains(cp)) {
+                        index -= UTF16.getCharCount(cp); // BACKUP!
+                        break main;
+                    } else UTF16.append(buffer,cp);
+                    break;
+                case IN_QUOTE:
+                    if (cp == QUOTE) status = AFTER_QUOTE;
+                    else UTF16.append(buffer,cp);
+                    break;
+                case AFTER_BSLASH:
+                    switch(cp) {
+                        case 'n': cp = '\n'; break;
+                        case 'r': cp = '\r'; break;
+                        case 't': cp = '\t'; break;
+                    }
+                    UTF16.append(buffer,cp);
+                    status = IN_STRING;
+                    break;
+                default: throw new IllegalArgumentException("Internal Error");
+            }
+            if (index >= source.length()) break;
+            cp = nextChar();
+        }
+        if (status > IN_STRING) return lastValue = UNTERMINATED_QUOTE;
+        return lastValue =  STRING;
+    }
+    
+    public String getString() {
+        return buffer.toString();
+    }
+    
+    public String toString() {
+        return source.substring(0,index) + "$$$" + source.substring(index);
+    }
+    
+    public long getNumber() {
+        return number;
+    }
+    
+    public UnicodeSet getUnicodeSet() {
+        return unicodeSet;
+    }
+    
+    private int nextChar() {
+        int cp = UTF16.charAt(source,index);
+        index += UTF16.getCharCount(cp);
+        return cp;
+    }
+    public int getIndex() {
+        return index;
+    }
+    public String getSource() {
+        return source;
+    }
+    public UnicodeSet getSyntax() {
+        return syntax;
+    }
+    public UnicodeSet getWhiteSpace() {
+        return whiteSpace;
+    }
+    public void setSyntax(UnicodeSet set) {
+        syntax = set;
+        fixSets();
+    }
+    public void setWhiteSpace(UnicodeSet set) {
+        whiteSpace = set;
+        fixSets();
+    }
+    
+    public Set getLookedUpItems() {
+        return symbolTable.itemsLookedUp;
+    }
+    
+    public void addSymbol(String var, String value, int start, int limit) {
+        // the limit is after the ';', so remove it
+        --limit;
+        char[] body = new char[limit - start];
+        value.getChars(start, limit, body, 0);
+        symbolTable.add(var, body);
+    }
+    
+    public class TokenSymbolTable implements SymbolTable {
+        Map contents = new HashMap();
+        Set itemsLookedUp = new HashSet();
+            
+        public void add(String var, char[] body) {
+            // start from 1 to avoid the $
+            contents.put(var.substring(1), body);
+        }
+            
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#lookup(java.lang.String)
+         */
+        public char[] lookup(String s) {
+            itemsLookedUp.add('$' + s);
+            return (char[])contents.get(s);
+        }
+    
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#lookupMatcher(int)
+         */
+        public UnicodeMatcher lookupMatcher(int ch) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#parseReference(java.lang.String, java.text.ParsePosition, int)
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            int cp;
+            int start = pos.getIndex();
+            int i;
+            for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(text, i);
+                if (!com.ibm.icu.lang.UCharacter.isUnicodeIdentifierPart(cp)) {
+                    break;
+                }
+            }
+            pos.setIndex(i);
+            return text.substring(start,i);
+        }
+        
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java b/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
new file mode 100644
index 0000000..3f76a91
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
@@ -0,0 +1,153 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import com.ibm.icu.text.Transliterator;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.dev.test.TestUtil;
+//#endif
+
+public class TransliteratorUtilities {
+    public static boolean DEBUG = false;
+
+    public static void registerTransliteratorFromFile(String dir, String id) {
+        try {
+            String filename = id.replace('-', '_') +  ".txt";
+            String rules = getFileContents(dir, filename);
+            Transliterator t;
+            int pos = id.indexOf('-');
+            String rid;
+            if (pos < 0) {
+                rid = id + "-Any";
+                id = "Any-" + id;
+            } else {
+                rid = id.substring(pos+1) + "-" + id.substring(0, pos);
+            }
+            t = Transliterator.createFromRules(id, rules, Transliterator.FORWARD);
+            Transliterator.unregister(id);
+            Transliterator.registerInstance(t);
+
+            /*String test = "\u049A\u0430\u0437\u0430\u049B";
+            System.out.println(t.transliterate(test));
+            t = Transliterator.getInstance(id);
+            System.out.println(t.transliterate(test));
+            */
+
+            t = Transliterator.createFromRules(rid, rules, Transliterator.REVERSE);
+            Transliterator.unregister(rid);
+            Transliterator.registerInstance(t);
+            if (DEBUG) System.out.println("Registered new Transliterator: " + id + ", " + rid);
+        } catch (IOException e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        throw (IllegalArgumentException) new IllegalArgumentException("Can't open " + dir + ", " + id+" "+ e.getMessage());
+//#else
+            throw (IllegalArgumentException) new IllegalArgumentException("Can't open " + dir + ", " + id).initCause(e);
+//#endif
+        }
+    }
+
+    /**
+     * 
+     */
+    public static String getFileContents(String dir, String filename) throws IOException {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        BufferedReader br = TestUtil.openUTF8Reader(dir, filename);
+//#else
+        BufferedReader br = BagFormatter.openUTF8Reader(dir, filename);
+//#endif 
+        StringBuffer buffer = new StringBuffer();
+        while (true) {
+            String line = br.readLine();
+            if (line == null) break;
+            if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1);
+            buffer.append(line).append("\r\n");
+        }
+        br.close();
+        return buffer.toString();
+         
+    }
+
+    private static final String BASE_RULES =
+        ":: (hex-any/xml);" +
+        ":: (hex-any/xml10);" + 
+        "'<' > '&lt;' ;" +
+        "'<' < '&'[lL][Tt]';' ;" +
+        "'&' > '&amp;' ;" +
+        "'&' < '&'[aA][mM][pP]';' ;" +
+        "'>' < '&'[gG][tT]';' ;" +
+        "'\"' < '&'[qQ][uU][oO][tT]';' ; " +
+        "'' < '&'[aA][pP][oO][sS]';' ; ";
+
+    private static final String CONTENT_RULES =
+        "'>' > '&gt;' ;";
+
+    private static final String HTML_RULES = BASE_RULES + CONTENT_RULES + 
+        "'\"' > '&quot;' ; ";
+
+    private static final String HTML_RULES_CONTROLS = HTML_RULES + 
+        ":: [[:C:][:Z:][:whitespace:][:Default_Ignorable_Code_Point:]] hex/unicode ; ";
+
+    private static final String HTML_RULES_ASCII = HTML_RULES + 
+        ":: [[:C:][:^ASCII:]] any-hex/xml ; ";
+
+    private static final String XML_RULES = HTML_RULES +
+        "'' > '&apos;' ; "
+;
+    
+    /*
+The ampersand character (&) and the left angle bracket (<) MUST NOT appear 
+
+in their literal form, except when used as markup delimiters, or within a 
+
+comment, a processing instruction, or a CDATA section. If they are needed 
+
+elsewhere, they MUST be escaped using either numeric character references or 
+
+the strings "&amp;" and "&lt;" respectively. The right angle bracket (>) MAY 
+
+be represented using the string "&gt;", and MUST, for compatibility, be 
+
+escaped using either "&gt;" or a character reference when it appears in the string 
+
+"]]>" in content, when that string is not marking the end of a CDATA section.
+
+In the content of elements, character data is any string of characters which does 
+
+not contain the start-delimiter of any markup and does not include the 
+
+CDATA-section-close delimiter, "]]>". In a CDATA section, character data is 
+
+any string of characters not including the CDATA-section-close delimiter, 
+
+"]]>".
+
+To allow attribute values to contain both single and double quotes, the 
+
+apostrophe or single-quote character (') MAY be represented as "&apos;", and 
+
+the double-quote character (") as "&quot;".
+
+
+     */
+    
+    public static final Transliterator toXML = Transliterator.createFromRules(
+            "any-xml", XML_RULES, Transliterator.FORWARD);
+    public static final Transliterator fromXML = Transliterator.createFromRules(
+            "xml-any", XML_RULES, Transliterator.REVERSE);
+    public static final Transliterator toHTML = Transliterator.createFromRules(
+            "any-html", HTML_RULES, Transliterator.FORWARD);
+    public static final Transliterator toHTMLControl = Transliterator.createFromRules(
+            "any-html", HTML_RULES_CONTROLS, Transliterator.FORWARD);
+    public static final Transliterator toHTMLAscii = Transliterator.createFromRules(
+            "any-html", HTML_RULES_ASCII, Transliterator.FORWARD);
+    public static final Transliterator fromHTML = Transliterator.createFromRules(
+            "html-any", HTML_RULES, Transliterator.REVERSE);
+}
diff --git a/src/com/ibm/icu/dev/test/util/TrieTest.java b/src/com/ibm/icu/dev/test/util/TrieTest.java
new file mode 100644
index 0000000..977d40b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TrieTest.java
@@ -0,0 +1,566 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+* Testing class for Trie. Tests here will be simple, since both CharTrie and 
+* IntTrie are very similar and are heavily used in other parts of ICU4J.
+* Codes using Tries are expected to have detailed tests.
+* @author Syn Wee Quek
+* @since release 2.1 Jan 01 2002
+*/
+public final class TrieTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public TrieTest()
+    {
+    }
+      
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        TrieTest test = new TrieTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing trietest");
+        }
+    }
+    
+    /** 
+     * Values for setting possibly overlapping, out-of-order ranges of values
+     */
+    private static final class SetRange 
+    {
+        SetRange(int start, int limit, int value, boolean overwrite)
+        {
+            this.start = start;
+            this.limit = limit;
+            this.value = value;
+            this.overwrite = overwrite;
+        }
+        
+        int start, limit;
+        int value;
+        boolean overwrite;
+    }
+    
+    /**
+     * Values for testing:
+     * value is set from the previous boundary's limit to before
+     * this boundary's limit
+     */
+    private static final class CheckRange 
+    {
+        CheckRange(int limit, int value)
+        {
+            this.limit = limit;
+            this.value = value;
+        }
+        
+        int limit;
+        int value;
+    }
+    
+    private static final class _testFoldedValue 
+                                        implements TrieBuilder.DataManipulate  
+    {
+        public _testFoldedValue(IntTrieBuilder builder)
+        {
+            m_builder_ = builder;
+        }
+        
+        public int getFoldedValue(int start, int offset)
+        {
+            int foldedValue = 0;
+            int limit = start + 0x400;
+            while (start < limit) {
+                int value = m_builder_.getValue(start);
+                if (m_builder_.isInZeroBlock(start)) {
+                    start += TrieBuilder.DATA_BLOCK_LENGTH;
+                } 
+                else {
+                    foldedValue |= value;
+                    ++ start;
+                }
+            }
+        
+            if (foldedValue != 0) {
+                return (offset << 16) | foldedValue;
+            } 
+            return 0;
+        }
+        
+        private IntTrieBuilder m_builder_;
+    }
+    
+    private static final class _testFoldingOffset 
+                                                implements Trie.DataManipulate 
+    {
+        public int getFoldingOffset(int value)
+        {
+            return value >>> 16;
+        }
+    }
+    
+    private static final class _testEnumValue extends TrieIterator
+    {
+        public _testEnumValue(Trie data)
+        {
+            super(data);
+        }
+        
+        protected int extract(int value)
+        {
+            return value ^ 0x5555;
+        }
+    }
+    
+    private void _testTrieIteration(IntTrie trie, CheckRange checkRanges[],
+                                    int countCheckRanges) 
+    {
+        // write a string
+        int countValues = 0;
+        StringBuffer s = new StringBuffer();
+        int values[] = new int[30];
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int c = checkRanges[i].limit;
+            if (c != 0) {
+                -- c;
+                UTF16.append(s, c);
+                values[countValues ++] = checkRanges[i].value;
+            }
+        }
+        int limit = s.length();
+        // try forward
+        int p = 0;
+        int i = 0;
+        while(p < limit) {
+            int c = UTF16.charAt(s, p);
+            p += UTF16.getCharCount(c);
+            int value = trie.getCodePointValue(c);
+            if (value != values[i]) {
+                errln("wrong value from UTRIE_NEXT(U+" 
+                      + Integer.toHexString(c) + "): 0x" 
+                      + Integer.toHexString(value) + " instead of 0x"
+                      + Integer.toHexString(values[i]));
+            }
+            // unlike the c version lead is 0 if c is non-supplementary
+            char lead = UTF16.getLeadSurrogate(c);
+            char trail = UTF16.getTrailSurrogate(c); 
+            if (lead == 0 
+                ? trail != s.charAt(p - 1) 
+                : !UTF16.isLeadSurrogate(lead) 
+                  || !UTF16.isTrailSurrogate(trail) || lead != s.charAt(p - 2) 
+                  || trail != s.charAt(p - 1)) {
+                errln("wrong (lead, trail) from UTRIE_NEXT(U+" 
+                      + Integer.toHexString(c));
+                continue;
+            }
+            if (lead != 0) {
+                value = trie.getLeadValue(lead);
+                value = trie.getTrailValue(value, trail);
+                if (value != trie.getSurrogateValue(lead, trail)
+                    && value != values[i]) {
+                    errln("wrong value from getting supplementary " 
+                          + "values (U+" 
+                          + Integer.toHexString(c) + "): 0x"
+                          + Integer.toHexString(value) + " instead of 0x"
+                          + Integer.toHexString(values[i]));
+                }
+            }
+            ++ i;
+        }
+    }
+    
+    private void _testTrieRanges(SetRange setRanges[], int countSetRanges, 
+                                 CheckRange checkRanges[], int countCheckRanges,
+                                 boolean latin1Linear) 
+    {
+        IntTrieBuilder newTrie = new IntTrieBuilder(null, 2000,
+                                                    checkRanges[0].value, 
+                                                    checkRanges[0].value,
+                                                    latin1Linear);
+    
+        // set values from setRanges[]
+        boolean ok = true;
+        for (int i = 0; i < countSetRanges; ++ i) {
+            int start = setRanges[i].start;
+            int limit = setRanges[i].limit;
+            int value = setRanges[i].value;
+            boolean overwrite = setRanges[i].overwrite;
+            if ((limit - start) == 1 && overwrite) {
+                ok &= newTrie.setValue(start, value);
+            } 
+            else {
+                ok &= newTrie.setRange(start, limit, value, overwrite);
+            }
+        }
+        if (!ok) {
+            errln("setting values into a trie failed");
+            return;
+        }
+    
+        // verify that all these values are in the new Trie
+        int start = 0;
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int limit = checkRanges[i].limit;
+            int value = checkRanges[i].value;
+    
+            while (start < limit) {
+                if (value != newTrie.getValue(start)) {
+                    errln("newTrie [U+" 
+                          + Integer.toHexString(start) + "]==0x" 
+                          + Integer.toHexString(newTrie.getValue(start)) 
+                          + " instead of 0x" + Integer.toHexString(value));
+                }
+                ++ start;
+            }
+        }
+    
+        IntTrie trie = newTrie.serialize(new _testFoldedValue(newTrie), 
+                                         new _testFoldingOffset());
+    
+        // test linear Latin-1 range from utrie_getData()
+        if (latin1Linear) {
+            start = 0;
+            for (int i = 0; i < countCheckRanges && start <= 0xff; ++ i) {
+                int limit = checkRanges[i].limit;
+                int value = checkRanges[i].value;
+    
+                while (start < limit && start <= 0xff) {
+                    if (value != trie.getLatin1LinearValue((char)start)) {
+                        errln("IntTrie.getLatin1LinearValue[U+" 
+                              + Integer.toHexString(start) + "]==0x"
+                              + Integer.toHexString(
+                                        trie.getLatin1LinearValue((char) start)) 
+                              + " instead of 0x" + Integer.toHexString(value));
+                    }
+                    ++ start;
+                }
+            }
+        }
+    
+        if (latin1Linear != trie.isLatin1Linear()) {
+            errln("trie serialization did not preserve "
+                  + "Latin-1-linearity");
+        }
+    
+        // verify that all these values are in the serialized Trie
+        start = 0;
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int limit = checkRanges[i].limit;
+            int value = checkRanges[i].value;
+    
+            if (start == 0xd800) {
+                // skip surrogates
+                start = limit;
+                continue;
+            }
+    
+            while (start < limit) {
+                if (start <= 0xffff) {
+                    int value2 = trie.getBMPValue((char)start);
+                    if (value != value2) {
+                        errln("serialized trie.getBMPValue(U+"
+                              + Integer.toHexString(start) + " == 0x" 
+                              + Integer.toHexString(value2) + " instead of 0x"
+                              + Integer.toHexString(value));
+                    }
+                    if (!UTF16.isLeadSurrogate((char)start)) {
+                        value2 = trie.getLeadValue((char)start);
+                        if (value != value2) {
+                            errln("serialized trie.getLeadValue(U+"
+                              + Integer.toHexString(start) + " == 0x" 
+                              + Integer.toHexString(value2) + " instead of 0x"
+                              + Integer.toHexString(value));
+                        }
+                    }
+                }
+                int value2 = trie.getCodePointValue(start);
+                if (value != value2) {
+                    errln("serialized trie.getCodePointValue(U+"
+                          + Integer.toHexString(start) + ")==0x" 
+                          + Integer.toHexString(value2) + " instead of 0x" 
+                          + Integer.toHexString(value));
+                }
+                ++ start;
+            }
+        }
+    
+        // enumerate and verify all ranges
+        
+        int enumRanges = 1;
+        TrieIterator iter  = new _testEnumValue(trie);
+        RangeValueIterator.Element result = new RangeValueIterator.Element();
+        while (iter.next(result)) {
+            if (result.start != checkRanges[enumRanges -1].limit 
+                || result.limit != checkRanges[enumRanges].limit
+                || (result.value ^ 0x5555) != checkRanges[enumRanges].value) {
+                errln("utrie_enum() delivers wrong range [U+"
+                      + Integer.toHexString(result.start) + "..U+" 
+                      + Integer.toHexString(result.limit) + "].0x" 
+                      + Integer.toHexString(result.value ^ 0x5555) 
+                      + " instead of [U+"
+                      + Integer.toHexString(checkRanges[enumRanges -1].limit) 
+                      + "..U+" 
+                      + Integer.toHexString(checkRanges[enumRanges].limit) 
+                      + "].0x" 
+                      + Integer.toHexString(checkRanges[enumRanges].value));
+            }
+            enumRanges ++;
+        }
+    
+        // test linear Latin-1 range
+        if (trie.isLatin1Linear()) {
+            for (start = 0; start < 0x100; ++ start) {
+                if (trie.getLatin1LinearValue((char)start) 
+                    != trie.getLeadValue((char)start)) {
+                    errln("trie.getLatin1LinearValue[U+"
+                          + Integer.toHexString(start) + "]=0x"
+                          + Integer.toHexString(
+                                        trie.getLatin1LinearValue((char)start))
+                          + " instead of 0x" 
+                          + Integer.toHexString(
+                                        trie.getLeadValue((char)start)));
+                }
+            }
+        }
+    
+        _testTrieIteration(trie, checkRanges, countCheckRanges);
+    }
+    
+    private void _testTrieRanges2(SetRange setRanges[], 
+                                  int countSetRanges, 
+                                  CheckRange checkRanges[], 
+                                  int countCheckRanges) 
+    {
+        _testTrieRanges(setRanges, countSetRanges, checkRanges, countCheckRanges,
+                        false);
+        
+        _testTrieRanges(setRanges, countSetRanges, checkRanges, countCheckRanges,
+                        true);
+    }
+    
+    private void _testTrieRanges4(SetRange setRanges[], int countSetRanges,
+                                  CheckRange checkRanges[], 
+                                  int countCheckRanges) 
+    {
+        _testTrieRanges2(setRanges, countSetRanges, checkRanges, 
+                         countCheckRanges);
+    }
+    
+    // test data ------------------------------------------------------------
+    
+    /** 
+     * set consecutive ranges, even with value 0
+     */
+    private static SetRange setRanges1[]={
+        new SetRange(0,      0x20,       0,      false),
+        new SetRange(0x20,   0xa7,       0x1234, false),
+        new SetRange(0xa7,   0x3400,     0,      false),
+        new SetRange(0x3400, 0x9fa6,     0x6162, false),
+        new SetRange(0x9fa6, 0xda9e,     0x3132, false),
+        // try to disrupt _testFoldingOffset16()
+        new SetRange(0xdada, 0xeeee,     0x87ff, false), 
+        new SetRange(0xeeee, 0x11111,    1,      false),
+        new SetRange(0x11111, 0x44444,   0x6162, false),
+        new SetRange(0x44444, 0x60003,   0,      false),
+        new SetRange(0xf0003, 0xf0004,   0xf,    false),
+        new SetRange(0xf0004, 0xf0006,   0x10,   false),
+        new SetRange(0xf0006, 0xf0007,   0x11,   false),
+        new SetRange(0xf0007, 0xf0020,   0x12,   false),
+        new SetRange(0xf0020, 0x110000,  0,      false)
+    };
+    
+    private static CheckRange checkRanges1[]={
+        new CheckRange(0,      0), // dummy start range to make _testEnumRange() simpler
+        new CheckRange(0x20,   0),
+        new CheckRange(0xa7,   0x1234),
+        new CheckRange(0x3400, 0),
+        new CheckRange(0x9fa6, 0x6162),
+        new CheckRange(0xda9e, 0x3132),
+        new CheckRange(0xdada, 0),
+        new CheckRange(0xeeee, 0x87ff),
+        new CheckRange(0x11111,1),
+        new CheckRange(0x44444,0x6162),
+        new CheckRange(0xf0003,0),
+        new CheckRange(0xf0004,0xf),
+        new CheckRange(0xf0006,0x10),
+        new CheckRange(0xf0007,0x11),
+        new CheckRange(0xf0020,0x12),
+        new CheckRange(0x110000, 0)
+    };
+    
+    /** 
+     * set some interesting overlapping ranges
+     */
+    private static SetRange setRanges2[]={
+        new SetRange(0x21,   0x7f,       0x5555, true),
+        new SetRange(0x2f800,0x2fedc,    0x7a,   true),
+        new SetRange(0x72,   0xdd,       3,      true),
+        new SetRange(0xdd,   0xde,       4,      false),
+        new SetRange(0x2f987,0x2fa98,    5,      true),
+        new SetRange(0x2f777,0x2f833,    0,      true),
+        new SetRange(0x2f900,0x2ffee,    1,      false),
+        new SetRange(0x2ffee,0x2ffef,    2,      true)
+    };
+    
+    private static CheckRange checkRanges2[]={
+        // dummy start range to make _testEnumRange() simpler
+        new CheckRange(0,      0),       
+        new CheckRange(0x21,   0),
+        new CheckRange(0x72,   0x5555),
+        new CheckRange(0xdd,   3),
+        new CheckRange(0xde,   4),
+        new CheckRange(0x2f833,0),
+        new CheckRange(0x2f987,0x7a),
+        new CheckRange(0x2fa98,5),
+        new CheckRange(0x2fedc,0x7a),
+        new CheckRange(0x2ffee,1),
+        new CheckRange(0x2ffef,2),
+        new CheckRange(0x110000, 0)
+    };
+    
+    /** 
+     * use a non-zero initial value
+     */
+    private static SetRange setRanges3[]={
+        new SetRange(0x31,   0xa4,   1,  false),
+        new SetRange(0x3400, 0x6789, 2,  false),
+        new SetRange(0x30000,0x34567,9,  true),
+        new SetRange(0x45678,0x56789,3,  true)
+    };
+    
+    private static CheckRange checkRanges3[]={
+        // dummy start range, also carries the initial value
+        new CheckRange(0,      9),  
+        new CheckRange(0x31,   9),
+        new CheckRange(0xa4,   1),
+        new CheckRange(0x3400, 9),
+        new CheckRange(0x6789, 2),
+        new CheckRange(0x45678,9),
+        new CheckRange(0x56789,3),
+        new CheckRange(0x110000,9)
+    };
+    
+    public void TestIntTrie() 
+    {
+        _testTrieRanges4(setRanges1, setRanges1.length, checkRanges1, 
+                         checkRanges1.length);
+        _testTrieRanges4(setRanges2, setRanges2.length, checkRanges2, 
+                         checkRanges2.length); 
+        _testTrieRanges4(setRanges3, setRanges3.length, checkRanges3, 
+                         checkRanges3.length);
+    }
+    
+    public void TestCharValues()
+    {
+        CharTrie trie = null;
+        try {
+             trie = UCharacterProperty.getInstance().m_trie_;
+        } catch (Exception e) {
+            warnln("Error creating ucharacter trie");
+            return;
+        }
+        
+        for (int i = 0; i < 0xFFFF; i ++) {
+            if (i < 0xFF 
+                && trie.getBMPValue((char)i) 
+                    != trie.getLatin1LinearValue((char)i)) {
+                errln("For latin 1 codepoint, getBMPValue should be the same " +
+                       "as getLatin1LinearValue");
+            }
+            if (trie.getBMPValue((char)i) != trie.getCodePointValue(i)) {
+                errln("For BMP codepoint, getBMPValue should be the same " +
+                       "as getCodepointValue");
+            }
+        }
+        for (int i = 0x10000; i < 0x10ffff; i ++) {
+            char lead = UTF16.getLeadSurrogate(i);
+            char trail = UTF16.getTrailSurrogate(i);
+            char value = trie.getCodePointValue(i);
+            if (value != trie.getSurrogateValue(lead, trail) ||
+                value != trie.getTrailValue(trie.getLeadValue(lead), 
+                                            trail)) {
+                errln("For Non-BMP codepoints, getSurrogateValue should be "
+                      + "the same s getCodepointValue and getTrailValue");
+            }        
+        }
+    }
+
+    private static class DummyGetFoldingOffset implements Trie.DataManipulate {
+        public int getFoldingOffset(int value) {
+            return -1; /* never get non-initialValue data for supplementary code points */
+        }
+    }
+
+    public void TestDummyCharTrie() {
+        CharTrie trie;
+        final int initialValue=0x313, leadUnitValue=0xaffe; 
+        int value;
+        int c;
+        trie=new CharTrie(initialValue, leadUnitValue, new DummyGetFoldingOffset());
+
+        /* test that all code points have initialValue */
+        for(c=0; c<=0x10ffff; ++c) {
+            value=trie.getCodePointValue(c);
+            if(value!=initialValue) {
+                errln("CharTrie/dummy.getCodePointValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(initialValue));
+            }
+        }
+
+        /* test that the lead surrogate code units have leadUnitValue */
+        for(c=0xd800; c<=0xdbff; ++c) {
+            value=trie.getLeadValue((char)c);
+            if(value!=leadUnitValue) {
+                errln("CharTrie/dummy.getLeadValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(leadUnitValue));
+            }
+        }
+    }
+
+    public void TestDummyIntTrie() {
+        IntTrie trie;
+        final int initialValue=0x01234567, leadUnitValue=0x89abcdef; 
+        int value;
+        int c;
+        trie=new IntTrie(initialValue, leadUnitValue, new DummyGetFoldingOffset());
+
+        /* test that all code points have initialValue */
+        for(c=0; c<=0x10ffff; ++c) {
+            value=trie.getCodePointValue(c);
+            if(value!=initialValue) {
+                errln("IntTrie/dummy.getCodePointValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(initialValue));
+            }
+        }
+
+        /* test that the lead surrogate code units have leadUnitValue */
+        for(c=0xd800; c<=0xdbff; ++c) {
+            value=trie.getLeadValue((char)c);
+            if(value!=leadUnitValue) {
+                errln("IntTrie/dummy.getLeadValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(leadUnitValue));
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/src/com/ibm/icu/dev/test/util/ULocaleTest.java
new file mode 100644
index 0000000..8fbe03f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -0,0 +1,3685 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: January 14 2004
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.TreeMap;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.NumberFormat.SimpleNumberFormatFactory;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+public class ULocaleTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new ULocaleTest().run(args);
+    }
+
+    public void TestCalendar() {
+        // TODO The CalendarFactory mechanism is not public,
+        // so we can't test it yet.  If it becomes public,
+        // enable this code.
+
+        // class CFactory implements CalendarFactory {
+        //     Locale loc;
+        //     Calendar proto;
+        //     public CFactory(Locale locale, Calendar prototype) {
+        //         loc = locale;
+        //         proto = prototype;
+        //     }
+        //     public Calendar create(TimeZone tz, Locale locale) {
+        //         // ignore tz -- not relevant to this test
+        //         return locale.equals(loc) ?
+        //             (Calendar) proto.clone() : null;
+        //     }
+        //     public String factoryName() {
+        //         return "CFactory";
+        //     }
+        // };
+
+        checkService("en_US_BROOKLYN", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Calendar.getInstance(req);
+                }
+                // }, null, new Registrar() {
+                //     public Object register(ULocale loc, Object prototype) {
+                //         CFactory f = new CFactory(loc, (Calendar) prototype);
+                //         return Calendar.register(f, loc);
+                //     }
+                //     public boolean unregister(Object key) {
+                //         return Calendar.unregister(key);
+                //     }
+            });
+    }
+
+    // Currency getLocale API is obsolete in 3.2.  Since it now returns ULocale.ROOT,
+    // and this is not equal to the requested locale zh_TW_TAIPEI, the
+    // checkService call would always fail.  So we now omit the test.
+    /*
+    public void TestCurrency() {
+        checkService("zh_TW_TAIPEI", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Currency.getInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return Currency.registerInstance((Currency) prototype, loc);
+                    }
+                    public boolean unregister(Object key) {
+                        return Currency.unregister(key);
+                    }
+                });
+    }
+    */
+
+    public void TestBreakIterator() {
+        checkService("ja_JP_OSAKA", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return BreakIterator.getWordInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return BreakIterator.registerInstance(
+                                                              (BreakIterator) prototype,
+                                                              loc, BreakIterator.KIND_WORD);
+                    }
+                    public boolean unregister(Object key) {
+                        return BreakIterator.unregister(key);
+                    }
+                });
+    }
+
+    public void TestCollator() {
+        checkService("ja_JP_YOKOHAMA", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Collator.getInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return Collator.registerInstance((Collator) prototype, loc);
+                    }
+                    public boolean unregister(Object key) {
+                        return Collator.unregister(key);
+                    }
+                });
+    }
+
+    public void TestDateFormat() {
+        checkService("de_CH_ZURICH", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return DateFormat.getDateInstance(DateFormat.DEFAULT, req);
+                }
+            }, new Subobject() {
+                    public Object get(Object parent) {
+                        return ((SimpleDateFormat) parent).getDateFormatSymbols();
+                    }
+                }, null);
+    }
+
+    public void TestNumberFormat() {
+        class NFactory extends SimpleNumberFormatFactory {
+            NumberFormat proto;
+            ULocale locale;
+            public NFactory(ULocale loc, NumberFormat fmt) {
+                super(loc);
+                this.locale = loc;
+                this.proto = fmt;
+            }
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                return (NumberFormat) (locale.equals(loc) ?
+                                       proto.clone() : null);
+            }
+        }
+
+        checkService("fr_FR_NICE", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return NumberFormat.getInstance(req);
+                }
+            }, new Subobject() {
+                    public Object get(Object parent) {
+                        return ((DecimalFormat) parent).getDecimalFormatSymbols();
+                    }
+                }, new Registrar() {
+                        public Object register(ULocale loc, Object prototype) {
+                            NFactory f = new NFactory(loc, (NumberFormat) prototype);
+                            return NumberFormat.registerFactory(f);
+                        }
+                        public boolean unregister(Object key) {
+                            return NumberFormat.unregister(key);
+                        }
+                    });
+    }
+
+    public void TestSetULocaleKeywords() {
+        ULocale uloc = new ULocale("en_Latn_US");
+        uloc = uloc.setKeywordValue("Foo", "FooValue");
+        if (!"en_Latn_US@foo=FooValue".equals(uloc.getName())) {
+            errln("failed to add foo keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("Bar", "BarValue");
+        if (!"en_Latn_US@bar=BarValue;foo=FooValue".equals(uloc.getName())) {
+            errln("failed to add bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("BAR", "NewBarValue");
+        if (!"en_Latn_US@bar=NewBarValue;foo=FooValue".equals(uloc.getName())) {
+            errln("failed to change bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("BaR", null);
+        if (!"en_Latn_US@foo=FooValue".equals(uloc.getName())) {
+            errln("failed to delete bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue(null, null);
+        if (!"en_Latn_US".equals(uloc.getName())) {
+            errln("failed to delete all keywords, got: " + uloc.getName());
+        }
+    }
+
+    /*
+     * ticket#5060
+     */
+    public void TestJavaLocaleCompatibility() {
+        Locale backupDefault = Locale.getDefault();
+        
+        // Java Locale for ja_JP with Japanese calendar
+        Locale jaJPJP = new Locale("ja", "JP", "JP");
+        Locale jaJP = new Locale("ja", "JP");
+ 
+        Calendar cal = Calendar.getInstance(jaJPJP);
+        String caltype = cal.getType();
+        if (!caltype.equals("japanese")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: japanese");
+        }
+
+        cal = Calendar.getInstance(jaJP);
+        caltype = cal.getType();
+        if (!caltype.equals("gregorian")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: gregorian");
+        }
+
+        // Default locale
+        Locale.setDefault(jaJPJP);
+        ULocale defUloc = ULocale.getDefault();
+        if (!defUloc.toString().equals("ja_JP@calendar=japanese")) {
+            errln("FAIL: Invalid default ULocale: " + defUloc + " /expected: ja_JP@calendar=japanese");
+        }
+        // Check calendar type
+        cal = Calendar.getInstance();
+        caltype = cal.getType();
+        if (!caltype.equals("japanese")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: japanese");
+        }
+        Locale.setDefault(backupDefault);
+
+        // Set default via ULocale
+        ULocale.setDefault(new ULocale("ja_JP@calendar=japanese"));
+        if (!Locale.getDefault().equals(jaJPJP)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale ja_JP_JP /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);
+
+        // We also want to map ICU locale ja@calendar=japanese to Java ja_JP_JP
+        ULocale.setDefault(new ULocale("ja@calendar=japanese"));
+        if (!Locale.getDefault().equals(jaJPJP)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale ja_JP_JP /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);
+
+        // Java no_NO_NY
+        Locale noNONY = new Locale("no", "NO", "NY");
+        Locale.setDefault(noNONY);
+        defUloc = ULocale.getDefault();
+        if (defUloc.toString().equals("nn_NY")) {
+            errln("FAIL: Invalid default ULocale: " + defUloc + " /expected: nn_NY");
+        }
+        Locale.setDefault(backupDefault);
+
+        // Set default via ULocale
+        ULocale.setDefault(new ULocale("nn_NO"));
+        if (!Locale.getDefault().equals(noNONY)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale no_NO_NY /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);        
+
+        // We also want to map ICU locale nn to Java no_NO_NY
+        ULocale.setDefault(new ULocale("nn"));
+        if (!Locale.getDefault().equals(noNONY)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale no_NO_NY /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);
+    }
+    
+    // ================= Infrastructure =================
+
+    /**
+     * Compare two locale IDs.  If they are equal, return 0.  If `string'
+     * starts with `prefix' plus an additional element, that is, string ==
+     * prefix + '_' + x, then return 1.  Otherwise return a value < 0.
+     */
+    static int loccmp(String string, String prefix) {
+        int slen = string.length(),
+            plen = prefix.length();
+        /* 'root' is "less than" everything */
+        if (prefix.equals("root")) {
+            return string.equals("root") ? 0 : 1;
+        }
+        // ON JAVA (only -- not on C -- someone correct me if I'm wrong)
+        // consider "" to be an alternate name for "root".
+        if (plen == 0) {
+            return slen == 0 ? 0 : 1;
+        }
+        if (!string.startsWith(prefix)) return -1; /* mismatch */
+        if (slen == plen) return 0;
+        if (string.charAt(plen) == '_') return 1;
+        return -2; /* false match, e.g. "en_USX" cmp "en_US" */
+    }
+
+    /**
+     * Check the relationship between requested locales, and report problems.
+     * The caller specifies the expected relationships between requested
+     * and valid (expReqValid) and between valid and actual (expValidActual).
+     * Possible values are:
+     * "gt" strictly greater than, e.g., en_US > en
+     * "ge" greater or equal,      e.g., en >= en
+     * "eq" equal,                 e.g., en == en
+     */
+    void checklocs(String label,
+                   String req,
+                   Locale validLoc,
+                   Locale actualLoc,
+                   String expReqValid,
+                   String expValidActual) {
+        String valid = validLoc.toString();
+        String actual = actualLoc.toString();
+        int reqValid = loccmp(req, valid);
+        int validActual = loccmp(valid, actual);
+    boolean reqOK = (expReqValid.equals("gt") && reqValid > 0) ||
+        (expReqValid.equals("ge") && reqValid >= 0) ||
+        (expReqValid.equals("eq") && reqValid == 0);
+    boolean valOK = (expValidActual.equals("gt") && validActual > 0) ||
+        (expValidActual.equals("ge") && validActual >= 0) ||
+        (expValidActual.equals("eq") && validActual == 0);
+        if (reqOK && valOK) {
+            logln("Ok: " + label + "; req=" + req + ", valid=" + valid +
+                  ", actual=" + actual);
+        } else {
+            errln("FAIL: " + label + "; req=" + req + ", valid=" + valid +
+                  ", actual=" + actual +
+          (reqOK ? "" : "\n  req !" + expReqValid + " valid") +
+          (valOK ? "" : "\n  val !" + expValidActual + " actual"));
+        }
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to create an
+     * object, given a requested locale.
+     */
+    interface ServiceFacade {
+        Object create(ULocale requestedLocale);
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to get a
+     * contained subobject, given its parent object.
+     */
+    interface Subobject {
+        Object get(Object parent);
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to register
+     * and unregister a service object prototype.
+     */
+    interface Registrar {
+        Object register(ULocale loc, Object prototype);
+        boolean unregister(Object key);
+    }
+
+    /**
+     * Use reflection to call getLocale() on the given object to
+     * determine both the valid and the actual locale.  Verify these
+     * for correctness.
+     */
+    void checkObject(String requestedLocale, Object obj,
+                     String expReqValid, String expValidActual) {
+        Class[] getLocaleParams = new Class[] { ULocale.Type.class };
+        try {
+            Class cls = obj.getClass();
+            Method getLocale = cls.getMethod("getLocale", getLocaleParams);
+            ULocale valid = (ULocale) getLocale.invoke(obj, new Object[] {
+                ULocale.VALID_LOCALE });
+            ULocale actual = (ULocale) getLocale.invoke(obj, new Object[] {
+                ULocale.ACTUAL_LOCALE });
+            checklocs(cls.getName(), requestedLocale,
+                      valid.toLocale(), actual.toLocale(),
+                      expReqValid, expValidActual);
+        }
+
+        // Make the following exceptions _specific_ -- do not
+        // catch(Exception), since that will catch the exception
+        // that errln throws.
+        catch(NoSuchMethodException e1) {
+        // no longer an error, Currency has no getLocale
+            // errln("FAIL: reflection failed: " + e1);
+        } catch(SecurityException e2) {
+            errln("FAIL: reflection failed: " + e2);
+        } catch(IllegalAccessException e3) {
+            errln("FAIL: reflection failed: " + e3);
+        } catch(IllegalArgumentException e4) {
+            errln("FAIL: reflection failed: " + e4);
+        } catch(InvocationTargetException e5) {
+        // no longer an error, Currency has no getLocale
+            // errln("FAIL: reflection failed: " + e5);
+        }
+    }
+
+    /**
+     * Verify the correct getLocale() behavior for the given service.
+     * @param requestedLocale the locale to request.  This MUST BE
+     * FAKE.  In other words, it should be something like
+     * en_US_FAKEVARIANT so this method can verify correct fallback
+     * behavior.
+     * @param svc a factory object that can create the object to be
+     * tested.  This isn't necessary here (one could just pass in the
+     * object) but is required for the overload of this method that
+     * takes a Registrar.
+     */
+    void checkService(String requestedLocale, ServiceFacade svc) {
+        checkService(requestedLocale, svc, null, null);
+    }
+
+    /**
+     * Verify the correct getLocale() behavior for the given service.
+     * @param requestedLocale the locale to request.  This MUST BE
+     * FAKE.  In other words, it should be something like
+     * en_US_FAKEVARIANT so this method can verify correct fallback
+     * behavior.
+     * @param svc a factory object that can create the object to be
+     * tested.
+     * @param sub an object that can be used to retrieve a subobject
+     * which should also be tested.  May be null.
+     * @param reg an object that supplies the registration and
+     * unregistration functionality to be tested.  May be null.
+     */
+    void checkService(String requestedLocale, ServiceFacade svc,
+                      Subobject sub, Registrar reg) {
+        ULocale req = new ULocale(requestedLocale);
+        Object obj = svc.create(req);
+        checkObject(requestedLocale, obj, "gt", "ge");
+        if (sub != null) {
+            Object subobj = sub.get(obj);
+            checkObject(requestedLocale, subobj, "gt", "ge");
+        }
+        if (reg != null) {
+            logln("Info: Registering service");
+            Object key = reg.register(req, obj);
+            Object objReg = svc.create(req);
+            checkObject(requestedLocale, objReg, "eq", "eq");
+            if (sub != null) {
+                Object subobj = sub.get(obj);
+                // Assume subobjects don't come from services, so
+                // their metadata should be structured normally.
+                checkObject(requestedLocale, subobj, "gt", "ge");
+            }
+            logln("Info: Unregistering service");
+            if (!reg.unregister(key)) {
+                errln("FAIL: unregister failed");
+            }
+            Object objUnreg = svc.create(req);
+            checkObject(requestedLocale, objUnreg, "gt", "ge");
+        }
+    }
+    private static final int LOCALE_SIZE = 9;
+    private static final String[][] rawData2 = new String[][]{
+        /* language code */
+        {   "en",   "fr",   "ca",   "el",   "no",   "zh",   "de",   "es",  "ja"    },
+        /* script code */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""  },
+        /* country code */
+        {   "US",   "FR",   "ES",   "GR",   "NO",   "CN", "DE", "", "JP"    },
+        /* variant code */
+        {   "",     "",     "",     "",     "NY",   "", "", "", ""      },
+        /* full name */
+        {   "en_US",    "fr_FR",    "ca_ES",
+            "el_GR",    "no_NO_NY", "zh_Hans_CN",
+            "de_DE@collation=phonebook", "es@collation=traditional",  "ja_JP@calendar=japanese" },
+        /* ISO-3 language */
+        {   "eng",  "fra",  "cat",  "ell",  "nor",  "zho", "deu", "spa", "jpn"   },
+        /* ISO-3 country */
+        {   "USA",  "FRA",  "ESP",  "GRC",  "NOR",  "CHN", "DEU", "", "JPN"   },
+        /* LCID */
+        {   "409", "40c", "403", "408", "814",  "804", "407", "a", "411"     },
+
+        /* display language (English) */
+        {   "English",  "French",   "Catalan", "Greek",    "Norwegian", "Chinese", "German", "Spanish", "Japanese"    },
+        /* display script code (English) */
+        {   "",     "",     "",     "",     "",     "Simplified Han", "", "", ""       },
+        /* display country (English) */
+        {   "United States",    "France",   "Spain",  "Greece",   "Norway", "China", "Germany", "", "Japan"       },
+        /* display variant (English) */
+        {   "",     "",     "",     "",     "NY",  "", "", "", ""       },
+        /* display name (English) */
+        {   "English (United States)", "French (France)", "Catalan (Spain)",
+            "Greek (Greece)", "Norwegian (Norway, NY)", "Chinese (Simplified Han, China)",
+            "German (Germany, Collation=Phonebook Order)", "Spanish (Collation=Traditional)", "Japanese (Japan, Calendar=Japanese Calendar)" },
+
+        /* display language (French) */
+        {   "anglais",  "fran\\u00E7ais",   "catalan", "grec",    "norv\\u00E9gien",    "chinois", "allemand", "espagnol", "japonais"     },
+        /* display script code (French) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (French) */
+        {   "\\u00C9tats-Unis",    "France",   "Espagne",  "Gr\\u00E8ce",   "Norv\\u00E8ge",    "Chine", "Allemagne", "", "Japon"       },
+        /* display variant (French) */
+        {   "",     "",     "",     "",     "NY",   "", "", "", ""       },
+        /* display name (French) */
+        {   "anglais (\\u00C9tats-Unis)", "fran\\u00E7ais (France)", "catalan (Espagne)",
+            "grec (Gr\\u00E8ce)", "norv\\u00E9gien (Norv\\u00E8ge, NY)",  "chinois (Hans, Chine)",
+            "allemand (Allemagne, Ordonnancement=Ordre de l'annuaire)", "espagnol (Ordonnancement=Ordre traditionnel)", "japonais (Japon, Calendrier=Calendrier japonais)" },
+
+        /* display language (Catalan) */
+        {   "angl\\u00E8s", "franc\\u00E8s", "catal\\u00E0", "grec",  "noruec", "xin\\u00E9s", "alemany", "espanyol", "japon\\u00E8s"    },
+        /* display script code (Catalan) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (Catalan) */
+        {   "Estats Units", "Fran\\u00E7a", "Espanya",  "Gr\\u00E8cia", "Noruega",  "Xina", "Alemanya", "", "Jap\\u00F3"    },
+        /* display variant (Catalan) */
+        {   "", "", "",                    "", "NY",    "", "", "", ""    },
+        /* display name (Catalan) */
+        {   "angl\\u00E8s (Estats Units)", "franc\\u00E8s (Fran\\u00E7a)", "catal\\u00E0 (Espanya)",
+            "grec (Gr\\u00E8cia)", "noruec (Noruega, NY)", "xin\\u00E9s (Hans, Xina)",
+            "alemany (Alemanya, COLLATION=PHONEBOOK)", "espanyol (COLLATION=TRADITIONAL)", "japon\\u00E8s (Jap\\u00F3, CALENDAR=JAPANESE)" },
+
+        /* display language (Greek) */
+        {
+            "\\u0391\\u03b3\\u03b3\\u03bb\\u03b9\\u03ba\\u03ac",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03b9\\u03ba\\u03ac",
+            "\\u039a\\u03b1\\u03c4\\u03b1\\u03bb\\u03b1\\u03bd\\u03b9\\u03ba\\u03ac",
+            "\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03b9\\u03ba\\u03ac",
+            "\\u039A\\u03B9\\u03BD\\u03B5\\u03B6\\u03B9\\u03BA\\u03AC",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC",
+            "\\u0399\\u03C3\\u03C0\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03B9\\u03BA\\u03AC"
+        },
+        /* display script code (Greek) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (Greek) */
+        {
+            "\\u0397\\u03bd\\u03c9\\u03bc\\u03ad\\u03bd\\u03b5\\u03c2 \\u03a0\\u03bf\\u03bb\\u03b9\\u03c4\\u03b5\\u03af\\u03b5\\u03c2",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03af\\u03b1",
+            "\\u0399\\u03c3\\u03c0\\u03b1\\u03bd\\u03af\\u03b1",
+            "\\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03af\\u03b1",
+            "\\u039A\\u03AF\\u03BD\\u03B1",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03AF\\u03B1",
+            "",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03AF\\u03B1"
+        },
+        /* display variant (Greek) */
+        {   "", "", "", "", "NY", "", "", "", ""    }, /* TODO: currently there is no translation for NY in Greek fix this test when we have it */
+        /* display name (Greek) */
+        {
+            "\\u0391\\u03b3\\u03b3\\u03bb\\u03b9\\u03ba\\u03ac (\\u0397\\u03bd\\u03c9\\u03bc\\u03ad\\u03bd\\u03b5\\u03c2 \\u03a0\\u03bf\\u03bb\\u03b9\\u03c4\\u03b5\\u03af\\u03b5\\u03c2)",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03b9\\u03ba\\u03ac (\\u0393\\u03b1\\u03bb\\u03bb\\u03af\\u03b1)",
+            "\\u039a\\u03b1\\u03c4\\u03b1\\u03bb\\u03b1\\u03bd\\u03b9\\u03ba\\u03ac (\\u0399\\u03c3\\u03c0\\u03b1\\u03bd\\u03af\\u03b1)",
+            "\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac (\\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1)",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03b9\\u03ba\\u03ac (\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03af\\u03b1, NY)",
+            "\\u039A\\u03B9\\u03BD\\u03B5\\u03B6\\u03B9\\u03BA\\u03AC (Hans, \\u039A\\u03AF\\u03BD\\u03B1)",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC (\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03AF\\u03B1, COLLATION=PHONEBOOK)",
+            "\\u0399\\u03C3\\u03C0\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC (COLLATION=TRADITIONAL)",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03B9\\u03BA\\u03AC (\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03AF\\u03B1, CALENDAR=JAPANESE)"
+        }
+    };
+//    private static final int ENGLISH = 0;
+//    private static final int FRENCH = 1;
+//    private static final int CATALAN = 2;
+//    private static final int GREEK = 3;
+//    private static final int NORWEGIAN = 4;
+    private static final int LANG = 0;
+    private static final int SCRIPT = 1;
+    private static final int CTRY = 2;
+    private static final int VAR = 3;
+    private static final int NAME = 4;
+//    private static final int LANG3 = 5;
+//    private static final int CTRY3 = 6;
+//    private static final int LCID = 7;
+//    private static final int DLANG_EN = 8;
+//    private static final int DSCRIPT_EN = 9;
+//    private static final int DCTRY_EN = 10;
+//    private static final int DVAR_EN = 11;
+//    private static final int DNAME_EN = 12;
+//    private static final int DLANG_FR = 13;
+//    private static final int DSCRIPT_FR = 14;
+//    private static final int DCTRY_FR = 15;
+//    private static final int DVAR_FR = 16;
+//    private static final int DNAME_FR = 17;
+//    private static final int DLANG_CA = 18;
+//    private static final int DSCRIPT_CA = 19;
+//    private static final int DCTRY_CA = 20;
+//    private static final int DVAR_CA = 21;
+//    private static final int DNAME_CA = 22;
+//    private static final int DLANG_EL = 23;
+//    private static final int DSCRIPT_EL = 24;
+//    private static final int DCTRY_EL = 25;
+//    private static final int DVAR_EL = 26;
+//    private static final int DNAME_EL = 27;
+
+    public void TestBasicGetters() {
+        int i;
+        logln("Testing Basic Getters\n");
+        for (i = 0; i < LOCALE_SIZE; i++) {
+            String testLocale=(rawData2[NAME][i]);
+            logln("Testing "+ testLocale+".....\n");
+
+            String lang =ULocale.getLanguage(testLocale);
+            if (0 !=lang.compareTo(rawData2[LANG][i]))    {
+                errln("  Language code mismatch: "+lang+" versus "+  rawData2[LANG][i]);
+            }
+
+            String ctry=ULocale.getCountry(testLocale);
+            if (0 !=ctry.compareTo(rawData2[CTRY][i]))    {
+                errln("  Country code mismatch: "+ctry+" versus "+  rawData2[CTRY][i]);
+            }
+
+            String var=ULocale.getVariant(testLocale);
+            if (0 !=var.compareTo(rawData2[VAR][i]))    {
+                errln("  Variant code mismatch: "+var+" versus "+  rawData2[VAR][i]);
+            }
+
+            String name = ULocale.getName(testLocale);
+            if (0 !=name.compareTo(rawData2[NAME][i]))    {
+                errln("  Name mismatch: "+name+" versus "+  rawData2[NAME][i]);
+            }
+
+        }
+    }
+
+    public void TestPrefixes() {
+        // POSIX ids are no longer handled by getName, so POSIX failures are ignored
+        final String [][] testData = new String[][]{
+            /* null canonicalize() column means "expect same as getName()" */
+            {"sv", "", "FI", "AL", "sv-fi-al", "sv_FI_AL", null},
+            {"en", "", "GB", "", "en-gb", "en_GB", null},
+            {"i-hakka", "", "MT", "XEMXIJA", "i-hakka_MT_XEMXIJA", "i-hakka_MT_XEMXIJA", null},
+            {"i-hakka", "", "CN", "", "i-hakka_CN", "i-hakka_CN", null},
+            {"i-hakka", "", "MX", "", "I-hakka_MX", "i-hakka_MX", null},
+            {"x-klingon", "", "US", "SANJOSE", "X-KLINGON_us_SANJOSE", "x-klingon_US_SANJOSE", null},
+
+            {"mr", "", "", "", "mr.utf8", "mr.utf8", "mr"},
+            {"de", "", "TV", "", "de-tv.koi8r", "de_TV.koi8r", "de_TV"},
+            {"x-piglatin", "", "ML", "", "x-piglatin_ML.MBE", "x-piglatin_ML.MBE", "x-piglatin_ML"},  /* Multibyte English */
+            {"i-cherokee", "","US", "", "i-Cherokee_US.utf7", "i-cherokee_US.utf7", "i-cherokee_US"},
+            {"x-filfli", "", "MT", "FILFLA", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA"},
+            {"no", "", "NO", "NY_B", "no-no-ny.utf32@B", "no_NO_NY.utf32@B", "no_NO_NY_B"},
+            {"no", "", "NO", "B",  "no-no.utf32@B", "no_NO.utf32@B", "no_NO_B"},
+            {"no", "", "",   "NY", "no__ny", "no__NY", null},
+            {"no", "", "",   "NY", "no@ny", "no@ny", "no__NY"},
+            {"el", "Latn", "", "", "el-latn", "el_Latn", null},
+            {"en", "Cyrl", "RU", "", "en-cyrl-ru", "en_Cyrl_RU", null},
+            {"zh", "Hant", "TW", "STROKE", "zh-hant_TW_STROKE", "zh_Hant_TW_STROKE", "zh_Hant_TW@collation=stroke"},
+            {"zh", "Hant", "CN", "STROKE", "zh-hant_CN_STROKE", "zh_Hant_CN_STROKE", "zh_Hant_CN@collation=stroke"},
+            {"zh", "Hant", "TW", "PINYIN", "zh-hant_TW_PINYIN", "zh_Hant_TW_PINYIN", "zh_Hant_TW@collation=pinyin"},
+            {"qq", "Qqqq", "QQ", "QQ", "qq_Qqqq_QQ_QQ", "qq_Qqqq_QQ_QQ", null},
+            {"qq", "Qqqq", "", "QQ", "qq_Qqqq__QQ", "qq_Qqqq__QQ", null},
+            {"12", "3456", "78", "90", "12_3456_78_90", "12_3456_78_90", null}, /* total garbage */
+
+            // odd cases
+            {"", "", "", "", "@FOO=bar", "@foo=bar", null},
+            {"", "", "", "", "_@FOO=bar", "@foo=bar", null},
+            {"", "", "", "", "__@FOO=bar", "@foo=bar", null},
+            {"", "", "", "FOO", "__foo@FOO=bar", "__FOO@foo=bar", null}, // we have some of these prefixes
+        };
+
+        String loc, buf,buf1;
+        final String [] testTitles = {
+            "ULocale.getLanguage()",
+            "ULocale.getScript()",
+            "ULocale.getCountry()",
+            "ULocale.getVariant()",
+            "name",
+            "ULocale.getName()",
+            "canonicalize()",
+        };
+        ULocale uloc;
+
+        for(int row=0;row<testData.length;row++) {
+            loc = testData[row][NAME];
+            logln("Test #"+row+": "+loc);
+
+            uloc = new ULocale(loc);
+
+            for(int n=0;n<=(NAME+2);n++) {
+                if(n==NAME) continue;
+
+                switch(n) {
+                case LANG:
+                    buf  = ULocale.getLanguage(loc);
+                    buf1 = uloc.getLanguage();
+                    break;
+
+                case SCRIPT:
+                    buf  = ULocale.getScript(loc);
+                    buf1 = uloc.getScript();
+                    break;
+
+                case CTRY:
+                    buf  = ULocale.getCountry(loc);
+                    buf1 = uloc.getCountry();
+                    break;
+
+                case VAR:
+                    buf  = ULocale.getVariant(loc);
+                    buf1 = buf;
+                    break;
+
+                case NAME+1:
+                    buf  = ULocale.getName(loc);
+                    buf1 = uloc.getName();
+                    break;
+
+                case NAME+2:
+                    buf = ULocale.canonicalize(loc);
+                    buf1 = ULocale.createCanonical(loc).getName();
+                    break;
+
+                default:
+                    buf = "**??";
+                    buf1 = buf;
+                }
+
+                logln("#"+row+": "+testTitles[n]+" on "+loc+": -> ["+buf+"]");
+
+                String expected = testData[row][n];
+                if (expected == null && n == (NAME+2)) {
+                    expected = testData[row][NAME+1];
+                }
+
+                // ignore POSIX failures in getName, we don't spec behavior in this case
+                if (n == NAME+1 &&
+                    (expected.indexOf('.') != -1 ||
+                     expected.indexOf('@') != -1)) {
+                    continue;
+                }
+
+                if(buf.compareTo(expected)!=0) {
+                    errln("#"+row+": "+testTitles[n]+" on "+loc+": -> ["+buf+"] (expected '"+expected+"'!)");
+                }
+                if(buf1.compareTo(expected)!=0) {
+                    errln("#"+row+": "+testTitles[n]+" on ULocale object "+loc+": -> ["+buf1+"] (expected '"+expected+"'!)");
+                }
+            }
+        }
+    }
+
+    public void TestObsoleteNames(){
+        final String[][] tests = new String[][]{
+            /* locale, language3, language2, Country3, country2 */
+            { "eng_USA", "eng", "en", "USA", "US" },
+            { "kok",  "kok", "kok", "", "" },
+            { "in",  "ind", "in", "", "" },
+            { "id",  "ind", "id", "", "" }, /* NO aliasing */
+            { "sh",  "srp", "sh", "", "" },
+            { "zz_CS",  "", "zz", "SCG", "CS" },
+            { "zz_FX",  "", "zz", "FXX", "FX" },
+            { "zz_RO",  "", "zz", "ROU", "RO" },
+            { "zz_TP",  "", "zz", "TMP", "TP" },
+            { "zz_TL",  "", "zz", "TLS", "TL" },
+            { "zz_ZR",  "", "zz", "ZAR", "ZR" },
+            { "zz_FXX",  "", "zz", "FXX", "FX" }, /* no aliasing. Doesn't go to PS(PSE). */
+            { "zz_ROM",  "", "zz", "ROU", "RO" },
+            { "zz_ROU",  "", "zz", "ROU", "RO" },
+            { "zz_ZAR",  "", "zz", "ZAR", "ZR" },
+            { "zz_TMP",  "", "zz", "TMP", "TP" },
+            { "zz_TLS",  "", "zz", "TLS", "TL" },
+            { "zz_YUG",  "", "zz", "YUG", "YU" },
+            { "mlt_PSE", "mlt", "mt", "PSE", "PS" },
+            { "iw", "heb", "iw", "", "" },
+            { "ji", "yid", "ji", "", "" },
+            { "jw", "jaw", "jw", "", "" },
+            { "sh", "srp", "sh", "", "" },
+            { "", "", "", "", "" }
+        };
+
+        for(int i=0;i<tests.length;i++){
+            String locale = tests[i][0];
+            logln("** Testing : "+ locale);
+            String buff, buff1;
+            ULocale uloc  = new ULocale(locale);
+
+            buff = ULocale.getISO3Language(locale);
+            if(buff.compareTo(tests[i][1])!=0){
+                errln("FAIL: ULocale.getISO3Language("+locale+")=="+
+                      buff+",\t expected "+tests[i][1]);
+            }else{
+                logln("   ULocale.getISO3Language("+locale+")=="+buff);
+            }
+
+            buff1 = uloc.getISO3Language();
+            if(buff1.compareTo(tests[i][1])!=0){
+                errln("FAIL: ULocale.getISO3Language("+locale+")=="+
+                      buff+",\t expected "+tests[i][1]);
+            }else{
+                logln("   ULocale.getISO3Language("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getLanguage(locale);
+            if(buff.compareTo(tests[i][2])!=0){
+                errln("FAIL: ULocale.getLanguage("+locale+")=="+
+                      buff+",\t expected "+tests[i][2]);
+            }else{
+                logln("   ULocale.getLanguage("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getISO3Country(locale);
+            if(buff.compareTo(tests[i][3])!=0){
+                errln("FAIL: ULocale.getISO3Country("+locale+")=="+
+                      buff+",\t expected "+tests[i][3]);
+            }else{
+                logln("   ULocale.getISO3Country("+locale+")=="+buff);
+            }
+
+            buff1 = uloc.getISO3Country();
+            if(buff1.compareTo(tests[i][3])!=0){
+                errln("FAIL: ULocale.getISO3Country("+locale+")=="+
+                      buff+",\t expected "+tests[i][3]);
+            }else{
+                logln("   ULocale.getISO3Country("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getCountry(locale);
+            if(buff.compareTo(tests[i][4])!=0){
+                errln("FAIL: ULocale.getCountry("+locale+")=="+
+                      buff+",\t expected "+tests[i][4]);
+            }else{
+                logln("   ULocale.getCountry("+locale+")=="+buff);
+            }
+        }
+
+        if (ULocale.getLanguage("iw_IL").compareTo( ULocale.getLanguage("he_IL"))==0) {
+            errln("he,iw ULocale.getLanguage mismatch");
+        }
+
+        String buff = ULocale.getLanguage("kok_IN");
+        if(buff.compareTo("kok")!=0){
+            errln("ULocale.getLanguage(\"kok\") failed. Expected: kok Got: "+buff);
+        }
+    }
+    public void TestCanonicalization(){
+        final String[][]testCases = new String[][]{
+            { "ca_ES_PREEURO", "ca_ES_PREEURO", "ca_ES@currency=ESP" },
+            { "de_AT_PREEURO", "de_AT_PREEURO", "de_AT@currency=ATS" },
+            { "de_DE_PREEURO", "de_DE_PREEURO", "de_DE@currency=DEM" },
+            { "de_LU_PREEURO", "de_LU_PREEURO", "de_LU@currency=EUR" },
+            { "el_GR_PREEURO", "el_GR_PREEURO", "el_GR@currency=GRD" },
+            { "en_BE_PREEURO", "en_BE_PREEURO", "en_BE@currency=BEF" },
+            { "en_IE_PREEURO", "en_IE_PREEURO", "en_IE@currency=IEP" },
+            { "es_ES_PREEURO", "es_ES_PREEURO", "es_ES@currency=ESP" },
+            { "eu_ES_PREEURO", "eu_ES_PREEURO", "eu_ES@currency=ESP" },
+            { "fi_FI_PREEURO", "fi_FI_PREEURO", "fi_FI@currency=FIM" },
+            { "fr_BE_PREEURO", "fr_BE_PREEURO", "fr_BE@currency=BEF" },
+            { "fr_FR_PREEURO", "fr_FR_PREEURO", "fr_FR@currency=FRF" },
+            { "fr_LU_PREEURO", "fr_LU_PREEURO", "fr_LU@currency=LUF" },
+            { "ga_IE_PREEURO", "ga_IE_PREEURO", "ga_IE@currency=IEP" },
+            { "gl_ES_PREEURO", "gl_ES_PREEURO", "gl_ES@currency=ESP" },
+            { "it_IT_PREEURO", "it_IT_PREEURO", "it_IT@currency=ITL" },
+            { "nl_BE_PREEURO", "nl_BE_PREEURO", "nl_BE@currency=BEF" },
+            { "nl_NL_PREEURO", "nl_NL_PREEURO", "nl_NL@currency=NLG" },
+            { "pt_PT_PREEURO", "pt_PT_PREEURO", "pt_PT@currency=PTE" },
+            { "de__PHONEBOOK", "de__PHONEBOOK", "de@collation=phonebook" },
+            { "en_GB_EURO", "en_GB_EURO", "en_GB@currency=EUR" },
+            { "en_GB@EURO", null, "en_GB@currency=EUR" }, /* POSIX ID */
+            { "es__TRADITIONAL", "es__TRADITIONAL", "es@collation=traditional" },
+            { "hi__DIRECT", "hi__DIRECT", "hi@collation=direct" },
+            { "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL", "ja_JP@calendar=japanese" },
+            { "th_TH_TRADITIONAL", "th_TH_TRADITIONAL", "th_TH@calendar=buddhist" },
+            { "zh_TW_STROKE", "zh_TW_STROKE", "zh_TW@collation=stroke" },
+            { "zh__PINYIN", "zh__PINYIN", "zh@collation=pinyin" },
+            { "zh@collation=pinyin", "zh@collation=pinyin", "zh@collation=pinyin" },
+            { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_CN@collation=pinyin" },
+            { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },
+            { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" },
+            { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" },
+            { "no_NO_NY", "no_NO_NY", "no_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },
+            { "no@ny", null, "no__NY" /* not: "nn" [alan ICU3.0] */ }, /* POSIX ID */
+            { "no-no.utf32@B", null, "no_NO_B" /* not: "nb_NO_B" [alan ICU3.0] */ }, /* POSIX ID */
+            { "qz-qz@Euro", null, "qz_QZ@currency=EUR" }, /* qz-qz uses private use iso codes */
+            { "en-BOONT", "en__BOONT", "en__BOONT" }, /* registered name */
+            { "de-1901", "de_1901", "de__1901" }, /* registered name */
+            { "de-1906", "de_1906", "de__1906" }, /* registered name */
+            { "sr-SP-Cyrl", "sr_SP_CYRL", "sr_Cyrl_RS" }, /* .NET name */
+            { "sr-SP-Latn", "sr_SP_LATN", "sr_Latn_RS" }, /* .NET name */
+            { "sr_YU_CYRILLIC", "sr_YU_CYRILLIC", "sr_Cyrl_RS" }, /* Linux name */
+            { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_Cyrl_UZ" }, /* .NET name */
+            { "uz-UZ-Latn", "uz_UZ_LATN", "uz_Latn_UZ" }, /* .NET name */
+            { "zh-CHS", "zh_CHS", "zh_Hans" }, /* .NET name */
+            { "zh-CHT", "zh_CHT", "zh_Hant" }, /* .NET name This may change back to zh_Hant */
+
+            /* posix behavior that used to be performed by getName */
+            { "mr.utf8", null, "mr" },
+            { "de-tv.koi8r", null, "de_TV" },
+            { "x-piglatin_ML.MBE", null, "x-piglatin_ML" },
+            { "i-cherokee_US.utf7", null, "i-cherokee_US" },
+            { "x-filfli_MT_FILFLA.gb-18030", null, "x-filfli_MT_FILFLA" },
+            { "no-no-ny.utf8@B", null, "no_NO_NY_B" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */
+
+            /* fleshing out canonicalization */
+            /* sort keywords, ';' is separator so not present at end in canonical form */
+            { "en_Hant_IL_VALLEY_GIRL@currency=EUR;calendar=Japanese;", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+            /* already-canonical ids are not changed */
+            { "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+            /* PRE_EURO and EURO conversions don't affect other keywords */
+            /* not in spec
+               { "es_ES_PREEURO@CALendar=Japanese", "es_ES_PREEURO@calendar=Japanese", "es_ES@calendar=Japanese;currency=ESP" },
+               { "es_ES_EURO@SHOUT=zipeedeedoodah", "es_ES_EURO@shout=zipeedeedoodah", "es_ES@currency=EUR;shout=zipeedeedoodah" },
+            */
+            /* currency keyword overrides PRE_EURO and EURO currency */
+            /* not in spec
+               { "es_ES_PREEURO@currency=EUR", "es_ES_PREEURO@currency=EUR", "es_ES@currency=EUR" },
+               { "es_ES_EURO@currency=ESP", "es_ES_EURO@currency=ESP", "es_ES@currency=ESP" },
+            */
+            /* norwegian is just too weird, if we handle things in their full generality */
+            /* this is a negative test to show that we DO NOT handle 'lang=no,var=NY' specially. */
+            { "no-Hant-GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$" /* not: "nn_Hant_GB@currency=$$$" [alan ICU3.0] */ },
+
+            /* test cases reflecting internal resource bundle usage */
+            /* root is just a language */
+            { "root@kw=foo", "root@kw=foo", "root@kw=foo" },
+            /* level 2 canonicalization should not touch basename when there are keywords and it is null */
+            { "@calendar=gregorian", "@calendar=gregorian", "@calendar=gregorian" },
+        };
+
+        for(int i = 0; i< testCases.length;i++){
+            String[] testCase = testCases[i];
+            String source = testCase[0];
+            String level1Expected = testCase[1];
+            String level2Expected = testCase[2];
+
+            if (level1Expected != null) { // null means we have no expectations for how this case is handled
+                String level1 = ULocale.getName(source);
+                if (!level1.equals(level1Expected)) {
+                    errln("ULocale.getName error for: '" + source +
+                          "' expected: '" + level1Expected + "' but got: '" + level1 + "'");
+                } else {
+                    logln("Ulocale.getName for: '" + source + "' returned: '" + level1 + "'");
+                }
+            } else {
+                logln("ULocale.getName skipped: '" + source + "'");
+            }
+
+            if (level2Expected != null) {
+                String level2 = ULocale.canonicalize(source);
+                if(!level2.equals(level2Expected)){
+                    errln("ULocale.getName error for: '" + source +
+                          "' expected: '" + level2Expected + "' but got: '" + level2 + "'");
+                } else {
+                    logln("Ulocale.canonicalize for: '" + source + "' returned: '" + level2 + "'");
+                }
+            } else {
+                logln("ULocale.canonicalize skipped: '" + source + "'");
+            }
+        }
+    }
+
+    public void TestGetAvailable(){
+        ULocale[] locales = ULocale.getAvailableLocales();
+        if(locales.length<10){
+            errln("Did not get the correct result from getAvailableLocales");
+        }
+        if(!locales[locales.length-1].equals("zh_Hant_TW")){
+            errln("Did not get the expected result");
+        }
+    }
+
+    public void TestDisplayNames() {
+        // consistency check, also check that all data is available
+        {
+            ULocale[] locales = ULocale.getAvailableLocales();
+            for (int i = 0; i < locales.length; ++i) {
+                ULocale l = locales[i];
+                String name = l.getDisplayName();
+
+                logln(l + " --> " + name +
+                      ", " + l.getDisplayName(ULocale.GERMAN) +
+                      ", " + l.getDisplayName(ULocale.FRANCE));
+
+                String language = l.getDisplayLanguage();
+                String script = l.getDisplayScript();
+                String country = l.getDisplayCountry();
+                String variant = l.getDisplayVariant();
+
+                checkName(name, language, script, country, variant);
+
+                for (int j = 0; j < locales.length; ++j) {
+                    ULocale dl = locales[j];
+
+                    name = l.getDisplayName(dl);
+                    language = l.getDisplayLanguage(dl);
+                    script = l.getDisplayScript(dl);
+                    country = l.getDisplayCountry(dl);
+                    variant = l.getDisplayVariant(dl);
+
+                    if (!checkName(name, language, script, country, variant)) {
+                        break;
+                    }
+                }
+            }
+        }
+        // spot check
+        {
+            ULocale[] locales = {
+                ULocale.US, ULocale.GERMANY, ULocale.FRANCE
+            };
+            String[] names = {
+                "Chinese (China)", "Chinesisch (China)", "chinois (Chine)"
+            };
+            ULocale locale = new ULocale("zh_CN");
+            for (int i = 0; i < locales.length; ++i) {
+                String name = locale.getDisplayName(locales[i]);
+                if (!names[i].equals(name)) {
+                    errln("expected '" + names[i] + "' but got '" + name + "'");
+                }
+            }
+        }
+    }
+
+    private boolean checkName(String name, String language, String script, String country, String variant) {
+        if (language.length() > 0 && name.indexOf(language) == -1) {
+            errln("name '" + name + "' does not contain language '" + language + "'");
+            return false;
+        }
+        if (script.length() > 0 && name.indexOf(script) == -1) {
+            errln("name '" + name + "' does not contain script '" + script + "'");
+            return false;
+        }
+        if (country.length() > 0 && name.indexOf(country) == -1) {
+            errln("name '" + name + "' does not contain country '" + country + "'");
+            return false;
+        }
+        if (variant.length() > 0 && name.indexOf(variant) == -1) {
+            errln("name '" + name + "' does not contain variant '" + variant + "'");
+            return false;
+        }
+        return true;
+    }
+
+    public void TestCoverage() {
+        {
+            //Cover displayXXX
+            int i, j;
+            String localeID="zh_CN";
+            String name, language, script, country, variant;
+            logln("Covering APIs with signature displayXXX(String, String)");
+            for (i = 0; i < LOCALE_SIZE; i++) {
+                //localeID String
+                String testLocale=(rawData2[NAME][i]);
+
+                logln("Testing "+ testLocale+".....");
+                name = ULocale.getDisplayName(localeID, testLocale);
+                language = ULocale.getDisplayLanguage(localeID, testLocale);
+                script = ULocale.getDisplayScript(localeID, testLocale);
+                country = ULocale.getDisplayCountry(localeID, testLocale);
+                variant = ULocale.getDisplayVariant(localeID, testLocale);
+
+                if (!checkName(name, language, script, country, variant)) {
+                    break;
+                }
+            }
+
+            logln("Covering APIs with signature displayXXX(String, ULocale)\n");
+            for (j = 0; j < LOCALE_SIZE; j++) {
+                String testLocale=(rawData2[NAME][j]);
+                ULocale loc = new ULocale(testLocale);
+
+                logln("Testing "+ testLocale+".....");
+                name = ULocale.getDisplayName(localeID, loc);
+                language = ULocale.getDisplayLanguage(localeID, loc);
+                script = ULocale.getDisplayScript(localeID, loc);
+                country = ULocale.getDisplayCountry(localeID, loc);
+                variant = ULocale.getDisplayVariant(localeID, loc);
+
+                if (!checkName(name, language, script, country, variant)) {
+                    break;
+                }
+            }
+        }
+        ULocale loc1 = new ULocale("en_US_BROOKLYN");
+        ULocale loc2 = new ULocale("en","US","BROOKLYN");
+        if (!loc2.equals(loc1)){
+            errln("ULocale.ULocale(String a, String b, String c)");
+        }
+        
+        ULocale loc3 = new ULocale("en_US");
+        ULocale loc4 = new ULocale("en","US");
+        if (!loc4.equals(loc3)){
+            errln("ULocale.ULocale(String a, String b)");
+        }
+        
+        ULocale loc5 = (ULocale) loc4.clone();
+        if (!loc5.equals(loc4)){
+            errln("ULocale.clone should get the same ULocale");
+        }
+        ULocale.getISOCountries(); // To check the result ?!
+    }
+
+    public void TestBamBm() {
+        // "bam" shouldn't be there since the official code is 'bm'
+        String[] isoLanguages = ULocale.getISOLanguages();
+        for (int i = 0; i < isoLanguages.length; ++i) {
+            if ("bam".equals(isoLanguages[i])) {
+                errln("found bam");
+            }
+            if (i > 0 && isoLanguages[i].compareTo(isoLanguages[i-1]) <= 0) {
+                errln("language list out of order: '" + isoLanguages[i] + " <= " + isoLanguages[i-1]);
+            }
+        }
+    }
+
+    public void TestDisplayKeyword() {
+        //prepare testing data
+        initHashtable();
+        String[] data = {"en_US@collation=direct;calendar=islamic-civil",
+             "zh_Hans@collation=pinyin;calendar=chinese",
+             "foo_Bar_BAZ@collation=traditional;calendar=buddhist"};
+
+        for (int i = 0; i < data.length; i++) {
+            String localeID = data[i];
+            logln("");
+            logln("Testing locale " + localeID + " ...");
+            ULocale loc = new ULocale(localeID);
+
+            Iterator it = loc.getKeywords();
+            Iterator it2 = ULocale.getKeywords(localeID);
+            //it and it2 are not equal here. No way to verify their equivalence yet.
+            while(it.hasNext()) {
+                String key = (String)it.next();
+                String key2 = (String)it2.next();
+                if (!key.equals(key2)) {
+                    errln("FAIL: static and non-static getKeywords returned different results.");
+                }
+
+                //To verify display of Keyword
+                // display the above key in English
+                String s0 = ULocale.getDisplayKeyword(key); //display in default locale
+                String s1 = ULocale.getDisplayKeyword(key, ULocale.US);
+                String s2 = ULocale.getDisplayKeyword(key, "en_US");
+                if (!s1.equals(s2)) {
+                    errln ("FAIL: one of the getDisplayKeyword methods failed.");
+                }
+                if (ULocale.getDefault().equals(ULocale.US) && !s1.equals(s0)) {
+                    errln ("FAIL: getDisplayKeyword methods failed for the default locale.");
+                }
+                if (!s1.equals(h[0].get(key))) {
+                    warnln("Locale " + localeID + " getDisplayKeyword for key: " + key +
+                          " in English expected \"" + h[0].get(key) + "\" saw \"" + s1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeyword for key: " + key + " in English got " + s1);
+                }
+
+                // display the key in S-Chinese
+                s1 = ULocale.getDisplayKeyword(key, ULocale.CHINA);
+                s2 = ULocale.getDisplayKeyword(key, "zh_Hans");
+                if (!s1.equals(s2)) {
+                    errln ("one of the getDisplayKeyword methods failed.");
+                }
+                if (!s1.equals(h[1].get(key))) {
+                    warnln("Locale " + localeID + " getDisplayKeyword for key: " + key +
+                          " in Chinese expected \"" + h[1].get(key) + "\" saw \"" + s1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeyword for key: " + key + " in Chinese got " + s1);
+                }
+
+                //To verify display of Keyword values
+                String type = loc.getKeywordValue(key);
+                // display type in English
+                String ss0 = loc.getDisplayKeywordValue(key);
+                String ss1 = loc.getDisplayKeywordValue(key, ULocale.US);
+                String ss2 = ULocale.getDisplayKeywordValue(localeID, key, "en_US");
+                String ss3 = ULocale.getDisplayKeywordValue(localeID, key, ULocale.US);
+                if (!ss1.equals(ss2) || !ss1.equals(ss3)) {
+                    errln ("FAIL: one of the getDisplayKeywordValue methods failed.");
+                }
+                if (ULocale.getDefault().equals(ULocale.US) && !ss1.equals(ss0)) {
+                    errln ("FAIL: getDisplayKeyword methods failed for the default locale.");
+                }
+                if (!ss1.equals(h[0].get(type))) {
+                    warnln(" Locale " + localeID + " getDisplayKeywordValue for key: " + key +
+                          " in English expected \"" + h[0].get(type) + "\" saw \"" + ss1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeywordValue for key: " + key + " in English got " + ss1);
+                }
+
+                // display type in Chinese
+                ss0 = loc.getDisplayKeywordValue(key);
+                ss1 = loc.getDisplayKeywordValue(key, ULocale.CHINA);
+                ss2 = ULocale.getDisplayKeywordValue(localeID, key, "zh_Hans");
+                ss3 = ULocale.getDisplayKeywordValue(localeID, key, ULocale.CHINA);
+                if (!ss1.equals(ss2) || !ss1.equals(ss3)) {
+                    warnln ("one of the getDisplayKeywordValue methods failed.");
+                }
+                if (!ss1.equals(h[1].get(type))) {
+                    warnln("Locale " + localeID + " getDisplayKeywordValue for key: " + key +
+                          " in Chinese expected \"" + h[1].get(type) + "\" saw \"" + ss1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeywordValue for key: " + key + " in Chinese got " + ss1);
+                }
+            }
+        }
+    }
+    private void initHashtable() {
+        h[0] = new Hashtable();
+        h[1] = new Hashtable();
+
+        //display in English
+        h[0].put("collation", "collation");
+        h[0].put("calendar", "calendar");
+        h[0].put("currency", "Currency");
+        h[0].put("phonebook", "Phonebook Order");
+        h[0].put("pinyin", "Pinyin Sort Order");
+        h[0].put("traditional", "Traditional Sort Order");
+        h[0].put("stroke", "Stroke Order");
+        h[0].put("direct", "Direct Sort Order");
+        h[0].put("japanese", "Japanese Calendar");
+        h[0].put("buddhist", "Buddhist Calendar");
+        h[0].put("islamic", "Islamic Calendar");
+        h[0].put("islamic-civil", "Islamic-Civil Calendar" );
+        h[0].put("hebrew", "Hebrew Calendar");
+        h[0].put("chinese", "Chinese Calendar");
+        h[0].put("gregorian", "Gregorian Calendar" );
+
+        //display in S-Chinese
+        h[1].put("collation", "\u5BF9\u7167");
+        h[1].put("calendar", "\u65E5\u5386");
+        h[1].put("currency", "\u8D27\u5E01");
+        h[1].put("direct", "\u987A\u5E8F");
+        h[1].put("phonebook", "\u7535\u8BDD\u7C3F\u987A\u5E8F");
+        h[1].put("pinyin", "\u62FC\u97F3\u987a\u5e8f");
+        h[1].put("stroke", "\u7B14\u5212\u987A\u5E8F");
+        h[1].put("traditional", "\u4F20\u7EDF\u5386\u6CD5");
+        h[1].put("japanese", "\u65E5\u672C\u65E5\u5386");
+        h[1].put("buddhist", "\u4F5B\u6559\u65E5\u5386");
+        h[1].put("islamic", "\u4F0A\u65AF\u5170\u65E5\u5386");
+        h[1].put("islamic-civil", "\u4F0A\u65AF\u5170\u5E0C\u5409\u6765\u5386");
+        h[1].put("hebrew", "\u5E0C\u4F2F\u6765\u65E5\u5386");
+        h[1].put("chinese", "\u519C\u5386");
+        h[1].put("gregorian", "\u516C\u5386");
+    }
+
+    //Hashtables for storing expected display of keys/types of locale in English and Chinese
+    private static Hashtable[] h = new Hashtable[2];
+    
+    private static final String ACCEPT_LANGUAGE_TESTS[][]  =  {
+    /*#      result  fallback? */
+    /*0*/ { "mt_MT", "false" },
+    /*1*/ { "en", "false" },
+    /*2*/ { "en", "true" }, // fell back from en-zzz to en
+    /*3*/ {  null, "true" },
+    /*4*/ {  "es", "false" }, 
+    /*5*/ { "de", "false" }};
+    
+    private static final String ACCEPT_LANGUAGE_HTTP[] = { 
+                    /*0*/ "mt-mt, ja;q=0.76, en-us;q=0.95, en;q=0.92, en-gb;q=0.89, fr;q=0.87, iu-ca;q=0.84, iu;q=0.82, ja-jp;q=0.79, mt;q=0.97, de-de;q=0.74, de;q=0.71, es;q=0.68, it-it;q=0.66, it;q=0.63, vi-vn;q=0.61, vi;q=0.58, nl-nl;q=0.55, nl;q=0.53, th-th-traditional;q=.01",
+                    /*1*/ "ja;q=0.5, en;q=0.8, tlh",
+                    /*2*/ "en-zzz, de-lx;q=0.8",
+                    /*3*/ "mga-ie;q=0.9, tlh",
+                    /*4*/ "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                          "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "es",
+                        /*5*/ "de;q=.9, fr;q=.9, xxx-yyy, sr;q=.8"};
+    
+    
+    public void TestAcceptLanguage() {
+        for(int i = 0 ; i < (ACCEPT_LANGUAGE_HTTP.length); i++) {
+            Boolean expectBoolean = new Boolean(ACCEPT_LANGUAGE_TESTS[i][1]);
+            String expectLocale=ACCEPT_LANGUAGE_TESTS[i][0];
+            
+           logln("#" + i + ": expecting: " + expectLocale + " (" + expectBoolean + ")");
+            
+            boolean r[] = { false };
+            ULocale n = ULocale.acceptLanguage(ACCEPT_LANGUAGE_HTTP[i], r);
+            if((n==null)&&(expectLocale!=null)) {
+                errln("result was null! line #" + i);
+                continue;
+            }
+            if(((n==null)&&(expectLocale==null)) || (n.toString().equals(expectLocale))) {
+                logln(" locale: OK." );
+            } else {
+                errln("expected " + expectLocale + " but got " + n.toString());
+            }
+            if(expectBoolean.equals(new Boolean(r[0]))) {
+                logln(" bool: OK.");
+            } else {
+                errln("bool: not OK, was " + new Boolean(r[0]).toString() + " expected " + expectBoolean.toString());
+            }
+        }
+    }
+    
+    private ULocale[] StringToULocaleArray(String acceptLanguageList){
+        //following code is copied from 
+        //ULocale.acceptLanguage(String acceptLanguageList, ULocale[] availableLocales, boolean[] fallback)
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if(q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if(q < other.q) {
+                    return 1;
+                }
+                if(serial < other.serial) {
+                    return -1;
+                } else if(serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // 1st: parse out the acceptLanguageList into an array
+        
+        TreeMap map = new TreeMap();
+        
+        final int l = acceptLanguageList.length();
+        int n;
+        for(n=0;n<l;n++) {
+            int itemEnd = acceptLanguageList.indexOf(',',n);
+            if(itemEnd == -1) {
+                itemEnd = l;
+            }
+            int paramEnd = acceptLanguageList.indexOf(';',n);
+            double q = 1.0;
+ 
+            if((paramEnd != -1) && (paramEnd < itemEnd)) {
+                /* semicolon (;) is closer than end (,) */
+                int t = paramEnd + 1;
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='q') {
+                    t++;
+                }
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='=') {
+                    t++;
+                }
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                try {
+                    String val = acceptLanguageList.substring(t,itemEnd).trim();
+                    q = Double.parseDouble(val);
+                } catch (NumberFormatException nfe) {
+                    q = 1.0;
+                }
+            } else {
+                q = 1.0; //default
+                paramEnd = itemEnd;
+            }
+
+            String loc = acceptLanguageList.substring(n,paramEnd).trim();
+            int serial = map.size();
+            ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q,serial);
+            map.put(entry, new ULocale(ULocale.canonicalize(loc))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc
+            n = itemEnd; // get next item. (n++ will skip over delimiter)
+        }
+        
+        // 2. pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        return acceptList;
+    }
+    
+    public void TestAcceptLanguage2() {
+        for(int i = 0 ; i < (ACCEPT_LANGUAGE_HTTP.length); i++) {
+            Boolean expectBoolean = new Boolean(ACCEPT_LANGUAGE_TESTS[i][1]);
+            String expectLocale=ACCEPT_LANGUAGE_TESTS[i][0];
+            
+           logln("#" + i + ": expecting: " + expectLocale + " (" + expectBoolean + ")");
+            
+            boolean r[] = { false };
+            ULocale n = ULocale.acceptLanguage(StringToULocaleArray(ACCEPT_LANGUAGE_HTTP[i]), r);
+            if((n==null)&&(expectLocale!=null)) {
+                errln("result was null! line #" + i);
+                continue;
+            }
+            if(((n==null)&&(expectLocale==null)) || (n.toString().equals(expectLocale))) {
+                logln(" locale: OK." );
+            } else {
+                errln("expected " + expectLocale + " but got " + n.toString());
+            }
+            if(expectBoolean.equals(new Boolean(r[0]))) {
+                logln(" bool: OK.");
+            } else {
+                errln("bool: not OK, was " + new Boolean(r[0]).toString() + " expected " + expectBoolean.toString());
+            }
+        }
+    }
+
+    public void TestOrientation() {
+        {
+            String toTest [][] = {
+                { "ar", "right-to-left", "top-to-bottom" },
+                { "ar_Arab", "right-to-left", "top-to-bottom" },
+                { "fa", "right-to-left", "top-to-bottom" },
+                { "he", "right-to-left", "top-to-bottom" },
+                { "ps", "right-to-left", "top-to-bottom" },
+                { "ur", "right-to-left", "top-to-bottom" },
+                { "en", "left-to-right", "top-to-bottom" }
+            };
+
+            for (int i = 0; i < toTest.length; ++i) {
+                ULocale loc = new ULocale(toTest[i][0]);
+                String co = loc.getCharacterOrientation();
+                String lo = loc.getLineOrientation();
+                if (!co.equals(toTest[i][1])) {
+                    errln("Locale \"" + toTest[i][0] + "\" should have \"" + toTest[i][1] + "\" character orientation, but got \'" + co + "\"");
+                }
+                else if (!lo.equals(toTest[i][2])) {
+                    errln("Locale \"" + toTest[i][0] + "\" should have \"" + toTest[i][2] + "\" line orientation, but got \'" + lo + "\"");
+                }
+            }
+        }
+    }
+
+    public void TestJB3962(){
+        ULocale loc = new ULocale("de_CH");
+        String disp = loc.getDisplayName(ULocale.GERMAN);
+        if(!disp.equals("Deutsch (Schweiz)")){
+            errln("Did not get the expected display name for de_CH locale. Got: "+ prettify(disp));
+        }
+    }
+
+    public void TestAddLikelySubtags() {
+        String[][] data = {
+            {"en", "en_Latn_US"},
+            {"en_US_BOSTON", "en_Latn_US_BOSTON"},
+            {"th@calendar=buddhist", "th_Thai_TH@calendar=buddhist"},
+            {"ar_ZZ", "ar_Arab_EG"},
+            {"zh", "zh_Hans_CN"},
+            {"zh_TW", "zh_Hant_TW"},
+            {"zh_HK", "zh_Hant_HK"},
+            {"zh_Hant", "zh_Hant_TW"},
+            {"zh_Zzzz_CN", "zh_Hans_CN"},
+            {"und_US", "en_Latn_US"},
+            {"und_HK", "zh_Hant_HK"},
+            /* Not yet implemented
+            {"art_lojban", "arg_lojban"},
+            {"zh_cmn_Hans", "zh_cmn_Hans"},
+            */
+        };
+        for (int i = 0; i < data.length; i++) {
+            ULocale org = new ULocale(data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            if (!res.toString().equals(data[i][1])) {
+                errln("Original: " + data[i][0] + " Expected: " + data[i][1] + " - but got " + res.toString());
+            }
+        }
+
+        String[][] basic_maximize_data = {
+            {
+                "zu_Zzzz_Zz",
+                "zu_Latn_ZA",
+            }, {
+                "zu_Zz",
+                "zu_Latn_ZA"
+            }, {
+                "en_Zz",
+                "en_Latn_US"
+            }, {
+                "en_Kore",
+                "en_Kore_US"
+            }, {
+                "en_Kore_Zz",
+                "en_Kore_US"
+            }, {
+                "en_Kore_ZA",
+                "en_Kore_ZA"
+            }, {
+                "en_Kore_ZA_POSIX",
+                "en_Kore_ZA_POSIX"
+            }, {
+                "en_Gujr",
+                "en_Gujr_US"
+            }, {
+                "en_ZA",
+                "en_Latn_ZA"
+            }, {
+                "en_Gujr_Zz",
+                "en_Gujr_US"
+            }, {
+                "en_Gujr_ZA",
+                "en_Gujr_ZA"
+            }, {
+                "en_Gujr_ZA_POSIX",
+                "en_Gujr_ZA_POSIX"
+            }, {
+                "en_US_POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "en_Latn__POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "en__POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "de__POSIX_1901",
+                "de_Latn_DE_POSIX_1901"
+            }, {
+                "zzz",
+                ""
+            }
+        };
+
+        for (int i = 0; i < basic_maximize_data.length; i++) {
+            ULocale org = new ULocale(basic_maximize_data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            String exp = basic_maximize_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + basic_maximize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + basic_maximize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        String[][] basic_minimize_data = {
+            {
+                "en_Latn_US",
+                "en"
+            }, {
+                "en_Latn_US_POSIX_1901",
+                "en__POSIX_1901"
+            }, {
+                "en_Zzzz_US_POSIX_1901",
+                "en__POSIX_1901"
+            }, {
+                "de_Latn_DE_POSIX_1901",
+                "de__POSIX_1901"
+            }, {
+                "und",
+                ""
+            }
+        };
+
+        for (int i = 0; i < basic_minimize_data.length; i++) {
+            ULocale org = new ULocale(basic_minimize_data[i][0]);
+            ULocale res = ULocale.minimizeSubtags(org);
+            String exp = basic_minimize_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + basic_minimize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + basic_minimize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        String[][] full_data = {
+            {
+                /*   "FROM", */
+                /*   "ADD-LIKELY", */
+                /*   "REMOVE-LIKELY" */
+                /* }, { */
+                "aa",
+                "aa_Latn_ET",
+                "aa"
+            }, {
+                "af",
+                "af_Latn_ZA",
+                "af"
+            }, {
+                "ak",
+                "ak_Latn_GH",
+                "ak"
+            }, {
+                "am",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "ar",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "as",
+                "as_Beng_IN",
+                "as"
+            }, {
+                "az",
+                "az_Latn_AZ",
+                "az"
+            }, {
+                "be",
+                "be_Cyrl_BY",
+                "be"
+            }, {
+                "bg",
+                "bg_Cyrl_BG",
+                "bg"
+            }, {
+                "bn",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "bo",
+                "bo_Tibt_CN",
+                "bo"
+            }, {
+                "bs",
+                "bs_Latn_BA",
+                "bs"
+            }, {
+                "ca",
+                "ca_Latn_ES",
+                "ca"
+            }, {
+                "ch",
+                "ch_Latn_GU",
+                "ch"
+            }, {
+                "chk",
+                "chk_Latn_FM",
+                "chk"
+            }, {
+                "cs",
+                "cs_Latn_CZ",
+                "cs"
+            }, {
+                "cy",
+                "cy_Latn_GB",
+                "cy"
+            }, {
+                "da",
+                "da_Latn_DK",
+                "da"
+            }, {
+                "de",
+                "de_Latn_DE",
+                "de"
+            }, {
+                "dv",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "dz",
+                "dz_Tibt_BT",
+                "dz"
+            }, {
+                "ee",
+                "ee_Latn_GH",
+                "ee"
+            }, {
+                "el",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "en",
+                "en_Latn_US",
+                "en"
+            }, {
+                "es",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "et",
+                "et_Latn_EE",
+                "et"
+            }, {
+                "eu",
+                "eu_Latn_ES",
+                "eu"
+            }, {
+                "fa",
+                "fa_Arab_IR",
+                "fa"
+            }, {
+                "fi",
+                "fi_Latn_FI",
+                "fi"
+            }, {
+                "fil",
+                "fil_Latn_PH",
+                "fil"
+            }, {
+                "fj",
+                "fj_Latn_FJ",
+                "fj"
+            }, {
+                "fo",
+                "fo_Latn_FO",
+                "fo"
+            }, {
+                "fr",
+                "fr_Latn_FR",
+                "fr"
+            }, {
+                "fur",
+                "fur_Latn_IT",
+                "fur"
+            }, {
+                "ga",
+                "ga_Latn_IE",
+                "ga"
+            }, {
+                "gaa",
+                "gaa_Latn_GH",
+                "gaa"
+            }, {
+                "gl",
+                "gl_Latn_ES",
+                "gl"
+            }, {
+                "gn",
+                "gn_Latn_PY",
+                "gn"
+            }, {
+                "gu",
+                "gu_Gujr_IN",
+                "gu"
+            }, {
+                "ha",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "haw",
+                "haw_Latn_US",
+                "haw"
+            }, {
+                "he",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "hi",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "hr",
+                "hr_Latn_HR",
+                "hr"
+            }, {
+                "ht",
+                "ht_Latn_HT",
+                "ht"
+            }, {
+                "hu",
+                "hu_Latn_HU",
+                "hu"
+            }, {
+                "hy",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "id",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "ig",
+                "ig_Latn_NG",
+                "ig"
+            }, {
+                "ii",
+                "ii_Latn_CN",
+                "ii"
+            }, {
+                "is",
+                "is_Latn_IS",
+                "is"
+            }, {
+                "it",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "iu",
+                "iu_Cans_CA",
+                "iu"
+            }, {
+                "ja",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "ka",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "kaj",
+                "kaj_Latn_NG",
+                "kaj"
+            }, {
+                "kam",
+                "kam_Latn_KE",
+                "kam"
+            }, {
+                "kk",
+                "kk_Cyrl_KZ",
+                "kk"
+            }, {
+                "kl",
+                "kl_Latn_GL",
+                "kl"
+            }, {
+                "km",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "kn",
+                "kn_Knda_IN",
+                "kn"
+            }, {
+                "ko",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "kok",
+                "kok_Deva_IN",
+                "kok"
+            }, {
+                "kpe",
+                "kpe_Latn_LR",
+                "kpe"
+            }, {
+                "ku",
+                "ku_Arab_IQ",
+                "ku"
+            }, {
+                "ky",
+                "ky_Cyrl_KG",
+                "ky"
+            }, {
+                "la",
+                "la_Latn_VA",
+                "la"
+            }, {
+                "ln",
+                "ln_Latn_CD",
+                "ln"
+            }, {
+                "lo",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "lt",
+                "lt_Latn_LT",
+                "lt"
+            }, {
+                "lv",
+                "lv_Latn_LV",
+                "lv"
+            }, {
+                "mg",
+                "mg_Latn_MG",
+                "mg"
+            }, {
+                "mh",
+                "mh_Latn_MH",
+                "mh"
+            }, {
+                "mk",
+                "mk_Cyrl_MK",
+                "mk"
+            }, {
+                "ml",
+                "ml_Mlym_IN",
+                "ml"
+            }, {
+                "mn",
+                "mn_Cyrl_MN",
+                "mn"
+            }, {
+                "mr",
+                "mr_Deva_IN",
+                "mr"
+            }, {
+                "ms",
+                "ms_Latn_MY",
+                "ms"
+            }, {
+                "mt",
+                "mt_Latn_MT",
+                "mt"
+            }, {
+                "my",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "na",
+                "na_Latn_NR",
+                "na"
+            }, {
+                "ne",
+                "ne_Deva_NP",
+                "ne"
+            }, {
+                "niu",
+                "niu_Latn_NU",
+                "niu"
+            }, {
+                "nl",
+                "nl_Latn_NL",
+                "nl"
+            }, {
+                "nn",
+                "nn_Latn_NO",
+                "nn"
+            }, {
+                "nr",
+                "nr_Latn_ZA",
+                "nr"
+            }, {
+                "nso",
+                "nso_Latn_ZA",
+                "nso"
+            }, {
+                "ny",
+                "ny_Latn_MW",
+                "ny"
+            }, {
+                "om",
+                "om_Latn_ET",
+                "om"
+            }, {
+                "or",
+                "or_Orya_IN",
+                "or"
+            }, {
+                "pa",
+                "pa_Guru_IN",
+                "pa"
+            }, {
+                "pa_Arab",
+                "pa_Arab_PK",
+                "pa_PK"
+            }, {
+                "pa_PK",
+                "pa_Arab_PK",
+                "pa_PK"
+            }, {
+                "pap",
+                "pap_Latn_AN",
+                "pap"
+            }, {
+                "pau",
+                "pau_Latn_PW",
+                "pau"
+            }, {
+                "pl",
+                "pl_Latn_PL",
+                "pl"
+            }, {
+                "ps",
+                "ps_Arab_AF",
+                "ps"
+            }, {
+                "pt",
+                "pt_Latn_BR",
+                "pt"
+            }, {
+                "rn",
+                "rn_Latn_BI",
+                "rn"
+            }, {
+                "ro",
+                "ro_Latn_RO",
+                "ro"
+            }, {
+                "ru",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "rw",
+                "rw_Latn_RW",
+                "rw"
+            }, {
+                "sa",
+                "sa_Deva_IN",
+                "sa"
+            }, {
+                "se",
+                "se_Latn_NO",
+                "se"
+            }, {
+                "sg",
+                "sg_Latn_CF",
+                "sg"
+            }, {
+                "si",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "sid",
+                "sid_Latn_ET",
+                "sid"
+            }, {
+                "sk",
+                "sk_Latn_SK",
+                "sk"
+            }, {
+                "sl",
+                "sl_Latn_SI",
+                "sl"
+            }, {
+                "sm",
+                "sm_Latn_WS",
+                "sm"
+            }, {
+                "so",
+                "so_Latn_SO",
+                "so"
+            }, {
+                "sq",
+                "sq_Latn_AL",
+                "sq"
+            }, {
+                "sr",
+                "sr_Cyrl_RS",
+                "sr"
+            }, {
+                "ss",
+                "ss_Latn_ZA",
+                "ss"
+            }, {
+                "st",
+                "st_Latn_ZA",
+                "st"
+            }, {
+                "sv",
+                "sv_Latn_SE",
+                "sv"
+            }, {
+                "sw",
+                "sw_Latn_TZ",
+                "sw"
+            }, {
+                "ta",
+                "ta_Taml_IN",
+                "ta"
+            }, {
+                "te",
+                "te_Telu_IN",
+                "te"
+            }, {
+                "tet",
+                "tet_Latn_TL",
+                "tet"
+            }, {
+                "tg",
+                "tg_Cyrl_TJ",
+                "tg"
+            }, {
+                "th",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "ti",
+                "ti_Ethi_ET",
+                "ti"
+            }, {
+                "tig",
+                "tig_Ethi_ER",
+                "tig"
+            }, {
+                "tk",
+                "tk_Latn_TM",
+                "tk"
+            }, {
+                "tkl",
+                "tkl_Latn_TK",
+                "tkl"
+            }, {
+                "tn",
+                "tn_Latn_ZA",
+                "tn"
+            }, {
+                "to",
+                "to_Latn_TO",
+                "to"
+            }, {
+                "tpi",
+                "tpi_Latn_PG",
+                "tpi"
+            }, {
+                "tr",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "ts",
+                "ts_Latn_ZA",
+                "ts"
+            }, {
+                "tt",
+                "tt_Cyrl_RU",
+                "tt"
+            }, {
+                "tvl",
+                "tvl_Latn_TV",
+                "tvl"
+            }, {
+                "ty",
+                "ty_Latn_PF",
+                "ty"
+            }, {
+                "uk",
+                "uk_Cyrl_UA",
+                "uk"
+            }, {
+                "und",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_AD",
+                "ca_Latn_AD",
+                "ca_AD"
+            }, {
+                "und_AE",
+                "ar_Arab_AE",
+                "ar_AE"
+            }, {
+                "und_AF",
+                "fa_Arab_AF",
+                "fa_AF"
+            }, {
+                "und_AL",
+                "sq_Latn_AL",
+                "sq"
+            }, {
+                "und_AM",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "und_AN",
+                "pap_Latn_AN",
+                "pap"
+            }, {
+                "und_AO",
+                "pt_Latn_AO",
+                "pt_AO"
+            }, {
+                "und_AR",
+                "es_Latn_AR",
+                "es_AR"
+            }, {
+                "und_AS",
+                "sm_Latn_AS",
+                "sm_AS"
+            }, {
+                "und_AT",
+                "de_Latn_AT",
+                "de_AT"
+            }, {
+                "und_AW",
+                "nl_Latn_AW",
+                "nl_AW"
+            }, {
+                "und_AX",
+                "sv_Latn_AX",
+                "sv_AX"
+            }, {
+                "und_AZ",
+                "az_Latn_AZ",
+                "az"
+            }, {
+                "und_Arab",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "und_Arab_IN",
+                "ur_Arab_IN",
+                "ur_IN"
+            }, {
+                "und_Arab_PK",
+                "ur_Arab_PK",
+                "ur"
+            }, {
+                "und_Arab_SN",
+                "ar_Arab_SN",
+                "ar_SN"
+            }, {
+                "und_Armn",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "und_BA",
+                "bs_Latn_BA",
+                "bs"
+            }, {
+                "und_BD",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "und_BE",
+                "nl_Latn_BE",
+                "nl_BE"
+            }, {
+                "und_BF",
+                "fr_Latn_BF",
+                "fr_BF"
+            }, {
+                "und_BG",
+                "bg_Cyrl_BG",
+                "bg"
+            }, {
+                "und_BH",
+                "ar_Arab_BH",
+                "ar_BH"
+            }, {
+                "und_BI",
+                "rn_Latn_BI",
+                "rn"
+            }, {
+                "und_BJ",
+                "fr_Latn_BJ",
+                "fr_BJ"
+            }, {
+                "und_BN",
+                "ms_Latn_BN",
+                "ms_BN"
+            }, {
+                "und_BO",
+                "es_Latn_BO",
+                "es_BO"
+            }, {
+                "und_BR",
+                "pt_Latn_BR",
+                "pt"
+            }, {
+                "und_BT",
+                "dz_Tibt_BT",
+                "dz"
+            }, {
+                "und_BY",
+                "be_Cyrl_BY",
+                "be"
+            }, {
+                "und_Beng",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "und_Beng_IN",
+                "bn_Beng_IN",
+                "bn_IN"
+            }, {
+                "und_CD",
+                "fr_Latn_CD",
+                "fr_CD"
+            }, {
+                "und_CF",
+                "sg_Latn_CF",
+                "sg"
+            }, {
+                "und_CG",
+                "ln_Latn_CG",
+                "ln_CG"
+            }, {
+                "und_CH",
+                "de_Latn_CH",
+                "de_CH"
+            }, {
+                "und_CI",
+                "fr_Latn_CI",
+                "fr_CI"
+            }, {
+                "und_CL",
+                "es_Latn_CL",
+                "es_CL"
+            }, {
+                "und_CM",
+                "fr_Latn_CM",
+                "fr_CM"
+            }, {
+                "und_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_CO",
+                "es_Latn_CO",
+                "es_CO"
+            }, {
+                "und_CR",
+                "es_Latn_CR",
+                "es_CR"
+            }, {
+                "und_CU",
+                "es_Latn_CU",
+                "es_CU"
+            }, {
+                "und_CV",
+                "pt_Latn_CV",
+                "pt_CV"
+            }, {
+                "und_CY",
+                "el_Grek_CY",
+                "el_CY"
+            }, {
+                "und_CZ",
+                "cs_Latn_CZ",
+                "cs"
+            }, {
+                "und_Cans",
+                "cwd_Cans_CA",
+                "cwd"
+            }, {
+                "und_Cyrl",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "und_Cyrl_KZ",
+                "ru_Cyrl_KZ",
+                "ru_KZ"
+            }, {
+                "und_DE",
+                "de_Latn_DE",
+                "de"
+            }, {
+                "und_DJ",
+                "aa_Latn_DJ",
+                "aa_DJ"
+            }, {
+                "und_DK",
+                "da_Latn_DK",
+                "da"
+            }, {
+                "und_DO",
+                "es_Latn_DO",
+                "es_DO"
+            }, {
+                "und_DZ",
+                "ar_Arab_DZ",
+                "ar_DZ"
+            }, {
+                "und_Deva",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "und_EC",
+                "es_Latn_EC",
+                "es_EC"
+            }, {
+                "und_EE",
+                "et_Latn_EE",
+                "et"
+            }, {
+                "und_EG",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "und_EH",
+                "ar_Arab_EH",
+                "ar_EH"
+            }, {
+                "und_ER",
+                "ti_Ethi_ER",
+                "ti_ER"
+            }, {
+                "und_ES",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "und_ET",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "und_Ethi",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "und_Ethi_ER",
+                "am_Ethi_ER",
+                "am_ER"
+            }, {
+                "und_FI",
+                "fi_Latn_FI",
+                "fi"
+            }, {
+                "und_FJ",
+                "fj_Latn_FJ",
+                "fj"
+            }, {
+                "und_FM",
+                "chk_Latn_FM",
+                "chk"
+            }, {
+                "und_FO",
+                "fo_Latn_FO",
+                "fo"
+            }, {
+                "und_FR",
+                "fr_Latn_FR",
+                "fr"
+            }, {
+                "und_GA",
+                "fr_Latn_GA",
+                "fr_GA"
+            }, {
+                "und_GE",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "und_GF",
+                "fr_Latn_GF",
+                "fr_GF"
+            }, {
+                "und_GL",
+                "kl_Latn_GL",
+                "kl"
+            }, {
+                "und_GN",
+                "fr_Latn_GN",
+                "fr_GN"
+            }, {
+                "und_GP",
+                "fr_Latn_GP",
+                "fr_GP"
+            }, {
+                "und_GQ",
+                "fr_Latn_GQ",
+                "fr_GQ"
+            }, {
+                "und_GR",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "und_GT",
+                "es_Latn_GT",
+                "es_GT"
+            }, {
+                "und_GU",
+                "ch_Latn_GU",
+                "ch"
+            }, {
+                "und_GW",
+                "pt_Latn_GW",
+                "pt_GW"
+            }, {
+                "und_Geor",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "und_Grek",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "und_Gujr",
+                "gu_Gujr_IN",
+                "gu"
+            }, {
+                "und_Guru",
+                "pa_Guru_IN",
+                "pa"
+            }, {
+                "und_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_HN",
+                "es_Latn_HN",
+                "es_HN"
+            }, {
+                "und_HR",
+                "hr_Latn_HR",
+                "hr"
+            }, {
+                "und_HT",
+                "ht_Latn_HT",
+                "ht"
+            }, {
+                "und_HU",
+                "hu_Latn_HU",
+                "hu"
+            }, {
+                "und_Hani",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hebr",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "und_ID",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "und_IL",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "und_IN",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "und_IQ",
+                "ar_Arab_IQ",
+                "ar_IQ"
+            }, {
+                "und_IR",
+                "fa_Arab_IR",
+                "fa"
+            }, {
+                "und_IS",
+                "is_Latn_IS",
+                "is"
+            }, {
+                "und_IT",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "und_JO",
+                "ar_Arab_JO",
+                "ar_JO"
+            }, {
+                "und_JP",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "und_Jpan",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "und_KG",
+                "ky_Cyrl_KG",
+                "ky"
+            }, {
+                "und_KH",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "und_KM",
+                "ar_Arab_KM",
+                "ar_KM"
+            }, {
+                "und_KP",
+                "ko_Kore_KP",
+                "ko_KP"
+            }, {
+                "und_KR",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "und_KW",
+                "ar_Arab_KW",
+                "ar_KW"
+            }, {
+                "und_KZ",
+                "ru_Cyrl_KZ",
+                "ru_KZ"
+            }, {
+                "und_Khmr",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "und_Knda",
+                "kn_Knda_IN",
+                "kn"
+            }, {
+                "und_Kore",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "und_LA",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "und_LB",
+                "ar_Arab_LB",
+                "ar_LB"
+            }, {
+                "und_LI",
+                "de_Latn_LI",
+                "de_LI"
+            }, {
+                "und_LK",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "und_LS",
+                "st_Latn_LS",
+                "st_LS"
+            }, {
+                "und_LT",
+                "lt_Latn_LT",
+                "lt"
+            }, {
+                "und_LU",
+                "fr_Latn_LU",
+                "fr_LU"
+            }, {
+                "und_LV",
+                "lv_Latn_LV",
+                "lv"
+            }, {
+                "und_LY",
+                "ar_Arab_LY",
+                "ar_LY"
+            }, {
+                "und_Laoo",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "und_Latn_ES",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "und_Latn_ET",
+                "om_Latn_ET",
+                "om"
+            }, {
+                "und_Latn_GB",
+                "en_Latn_GB",
+                "en_GB"
+            }, {
+                "und_Latn_GH",
+                "ak_Latn_GH",
+                "ak"
+            }, {
+                "und_Latn_ID",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "und_Latn_IT",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "und_Latn_NG",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "und_Latn_TR",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "und_Latn_ZA",
+                "en_Latn_ZA",
+                "en_ZA"
+            }, {
+                "und_MA",
+                "ar_Arab_MA",
+                "ar_MA"
+            }, {
+                "und_MC",
+                "fr_Latn_MC",
+                "fr_MC"
+            }, {
+                "und_MD",
+                "ro_Latn_MD",
+                "ro_MD"
+            }, {
+                "und_ME",
+                "sr_Cyrl_ME",
+                "sr_ME"
+            }, {
+                "und_MG",
+                "mg_Latn_MG",
+                "mg"
+            }, {
+                "und_MH",
+                "mh_Latn_MH",
+                "mh"
+            }, {
+                "und_MK",
+                "mk_Cyrl_MK",
+                "mk"
+            }, {
+                "und_ML",
+                "fr_Latn_ML",
+                "fr_ML"
+            }, {
+                "und_MM",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "und_MN",
+                "mn_Cyrl_MN",
+                "mn"
+            }, {
+                "und_MO",
+                "zh_Hant_MO",
+                "zh_MO"
+            }, {
+                "und_MQ",
+                "fr_Latn_MQ",
+                "fr_MQ"
+            }, {
+                "und_MR",
+                "ar_Arab_MR",
+                "ar_MR"
+            }, {
+                "und_MT",
+                "mt_Latn_MT",
+                "mt"
+            }, {
+                "und_MV",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "und_MW",
+                "ny_Latn_MW",
+                "ny"
+            }, {
+                "und_MX",
+                "es_Latn_MX",
+                "es_MX"
+            }, {
+                "und_MY",
+                "ms_Latn_MY",
+                "ms"
+            }, {
+                "und_MZ",
+                "pt_Latn_MZ",
+                "pt_MZ"
+            }, {
+                "und_Mlym",
+                "ml_Mlym_IN",
+                "ml"
+            }, {
+                "und_Mymr",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "und_NC",
+                "fr_Latn_NC",
+                "fr_NC"
+            }, {
+                "und_NE",
+                "ha_Latn_NE",
+                "ha_NE"
+            }, {
+                "und_NG",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "und_NI",
+                "es_Latn_NI",
+                "es_NI"
+            }, {
+                "und_NL",
+                "nl_Latn_NL",
+                "nl"
+            }, {
+                "und_NO",
+                "nb_Latn_NO",
+                "nb"
+            }, {
+                "und_NP",
+                "ne_Deva_NP",
+                "ne"
+            }, {
+                "und_NR",
+                "na_Latn_NR",
+                "na"
+            }, {
+                "und_NU",
+                "niu_Latn_NU",
+                "niu"
+            }, {
+                "und_OM",
+                "ar_Arab_OM",
+                "ar_OM"
+            }, {
+                "und_Orya",
+                "or_Orya_IN",
+                "or"
+            }, {
+                "und_PA",
+                "es_Latn_PA",
+                "es_PA"
+            }, {
+                "und_PE",
+                "es_Latn_PE",
+                "es_PE"
+            }, {
+                "und_PF",
+                "ty_Latn_PF",
+                "ty"
+            }, {
+                "und_PG",
+                "tpi_Latn_PG",
+                "tpi"
+            }, {
+                "und_PH",
+                "fil_Latn_PH",
+                "fil"
+            }, {
+                "und_PL",
+                "pl_Latn_PL",
+                "pl"
+            }, {
+                "und_PM",
+                "fr_Latn_PM",
+                "fr_PM"
+            }, {
+                "und_PR",
+                "es_Latn_PR",
+                "es_PR"
+            }, {
+                "und_PS",
+                "ar_Arab_PS",
+                "ar_PS"
+            }, {
+                "und_PT",
+                "pt_Latn_PT",
+                "pt_PT"
+            }, {
+                "und_PW",
+                "pau_Latn_PW",
+                "pau"
+            }, {
+                "und_PY",
+                "gn_Latn_PY",
+                "gn"
+            }, {
+                "und_QA",
+                "ar_Arab_QA",
+                "ar_QA"
+            }, {
+                "und_RE",
+                "fr_Latn_RE",
+                "fr_RE"
+            }, {
+                "und_RO",
+                "ro_Latn_RO",
+                "ro"
+            }, {
+                "und_RS",
+                "sr_Cyrl_RS",
+                "sr"
+            }, {
+                "und_RU",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "und_RW",
+                "rw_Latn_RW",
+                "rw"
+            }, {
+                "und_SA",
+                "ar_Arab_SA",
+                "ar_SA"
+            }, {
+                "und_SD",
+                "ar_Arab_SD",
+                "ar_SD"
+            }, {
+                "und_SE",
+                "sv_Latn_SE",
+                "sv"
+            }, {
+                "und_SG",
+                "en_Latn_SG",
+                "en_SG"
+            }, {
+                "und_SI",
+                "sl_Latn_SI",
+                "sl"
+            }, {
+                "und_SJ",
+                "nb_Latn_SJ",
+                "nb_SJ"
+            }, {
+                "und_SK",
+                "sk_Latn_SK",
+                "sk"
+            }, {
+                "und_SM",
+                "it_Latn_SM",
+                "it_SM"
+            }, {
+                "und_SN",
+                "fr_Latn_SN",
+                "fr_SN"
+            }, {
+                "und_SO",
+                "so_Latn_SO",
+                "so"
+            }, {
+                "und_SR",
+                "nl_Latn_SR",
+                "nl_SR"
+            }, {
+                "und_ST",
+                "pt_Latn_ST",
+                "pt_ST"
+            }, {
+                "und_SV",
+                "es_Latn_SV",
+                "es_SV"
+            }, {
+                "und_SY",
+                "ar_Arab_SY",
+                "ar_SY"
+            }, {
+                "und_Sinh",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "und_Syrc",
+                "en_Syrc_US",
+                "en_Syrc"
+            }, {
+                "und_TD",
+                "ar_Arab_TD",
+                "ar_TD"
+            }, {
+                "und_TG",
+                "ee_Latn_TG",
+                "ee_TG"
+            }, {
+                "und_TH",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "und_TJ",
+                "tg_Cyrl_TJ",
+                "tg"
+            }, {
+                "und_TK",
+                "tkl_Latn_TK",
+                "tkl"
+            }, {
+                "und_TL",
+                "tet_Latn_TL",
+                "tet"
+            }, {
+                "und_TM",
+                "tk_Latn_TM",
+                "tk"
+            }, {
+                "und_TN",
+                "ar_Arab_TN",
+                "ar_TN"
+            }, {
+                "und_TO",
+                "to_Latn_TO",
+                "to"
+            }, {
+                "und_TR",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "und_TV",
+                "tvl_Latn_TV",
+                "tvl"
+            }, {
+                "und_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Taml",
+                "ta_Taml_IN",
+                "ta"
+            }, {
+                "und_Telu",
+                "te_Telu_IN",
+                "te"
+            }, {
+                "und_Thaa",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "und_Thai",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "und_Tibt",
+                "bo_Tibt_CN",
+                "bo"
+            }, {
+                "und_UA",
+                "uk_Cyrl_UA",
+                "uk"
+            }, {
+                "und_UY",
+                "es_Latn_UY",
+                "es_UY"
+            }, {
+                "und_UZ",
+                "uz_Cyrl_UZ",
+                "uz"
+            }, {
+                "und_VA",
+                "la_Latn_VA",
+                "la"
+            }, {
+                "und_VE",
+                "es_Latn_VE",
+                "es_VE"
+            }, {
+                "und_VN",
+                "vi_Latn_VN",
+                "vi"
+            }, {
+                "und_VU",
+                "fr_Latn_VU",
+                "fr_VU"
+            }, {
+                "und_WF",
+                "fr_Latn_WF",
+                "fr_WF"
+            }, {
+                "und_WS",
+                "sm_Latn_WS",
+                "sm"
+            }, {
+                "und_YE",
+                "ar_Arab_YE",
+                "ar_YE"
+            }, {
+                "und_YT",
+                "fr_Latn_YT",
+                "fr_YT"
+            }, {
+                "und_Yiii",
+                "en_Yiii_US",
+                "en_Yiii"
+            }, {
+                "ur",
+                "ur_Arab_PK",
+                "ur"
+            }, {
+                "uz",
+                "uz_Cyrl_UZ",
+                "uz"
+            }, {
+                "uz_AF",
+                "uz_Arab_AF",
+                "uz_AF"
+            }, {
+                "uz_Arab",
+                "uz_Arab_AF",
+                "uz_AF"
+            }, {
+                "ve",
+                "ve_Latn_ZA",
+                "ve"
+            }, {
+                "vi",
+                "vi_Latn_VN",
+                "vi"
+            }, {
+                "wal",
+                "wal_Ethi_ET",
+                "wal"
+            }, {
+                "wo",
+                "wo_Latn_SN",
+                "wo"
+            }, {
+                "wo_SN",
+                "wo_Latn_SN",
+                "wo"
+            }, {
+                "xh",
+                "xh_Latn_ZA",
+                "xh"
+            }, {
+                "yo",
+                "yo_Latn_NG",
+                "yo"
+            }, {
+                "zh",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_Hani",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_MO",
+                "zh_Hant_MO",
+                "zh_MO"
+            }, {
+                "zh_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zu",
+                "zu_Latn_ZA",
+                "zu"
+            }, {
+                "und",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Zzzz",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Zzzz_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Zzzz_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Zzzz_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Zzzz_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_Zzzz_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Latn",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Latn_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Latn_CN",
+                "ii_Latn_CN",
+                "ii"
+            }, {
+                "und_Latn_TW",
+                "zh_Latn_TW",
+                "zh_Latn_TW"
+            }, {
+                "und_Latn_HK",
+                "zh_Latn_HK",
+                "zh_Latn_HK"
+            }, {
+                "und_Latn_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_TW",
+                "zh_Hans_TW",
+                "zh_Hans_TW"
+            }, {
+                "und_Hans_HK",
+                "zh_Hans_HK",
+                "zh_Hans_HK"
+            }, {
+                "und_Hans_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "und_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_ZZ",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_CN",
+                "zh_Hant_CN",
+                "zh_Hant_CN"
+            }, {
+                "und_Hant_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_Hant_AQ",
+                "zh_Hant_AQ",
+                "zh_Hant_AQ"
+            }, {
+                "und_Moon",
+                "en_Moon_US",
+                "en_Moon"
+            }, {
+                "und_Moon_ZZ",
+                "en_Moon_US",
+                "en_Moon"
+            }, {
+                "und_Moon_CN",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "und_Moon_TW",
+                "zh_Moon_TW",
+                "zh_Moon_TW"
+            }, {
+                "und_Moon_HK",
+                "zh_Moon_HK",
+                "zh_Moon_HK"
+            }, {
+                "und_Moon_AQ",
+                "en_Moon_AQ",
+                "en_Moon_AQ"
+            }, {
+                "es",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Zzzz",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Zzzz_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Zzzz_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_Zzzz_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_Zzzz_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_Zzzz_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Latn",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Latn_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Latn_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_Latn_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_Latn_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_Latn_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Hans",
+                "es_Hans_ES",
+                "es_Hans"
+            }, {
+                "es_Hans_ZZ",
+                "es_Hans_ES",
+                "es_Hans"
+            }, {
+                "es_Hans_CN",
+                "es_Hans_CN",
+                "es_Hans_CN"
+            }, {
+                "es_Hans_TW",
+                "es_Hans_TW",
+                "es_Hans_TW"
+            }, {
+                "es_Hans_HK",
+                "es_Hans_HK",
+                "es_Hans_HK"
+            }, {
+                "es_Hans_AQ",
+                "es_Hans_AQ",
+                "es_Hans_AQ"
+            }, {
+                "es_Hant",
+                "es_Hant_ES",
+                "es_Hant"
+            }, {
+                "es_Hant_ZZ",
+                "es_Hant_ES",
+                "es_Hant"
+            }, {
+                "es_Hant_CN",
+                "es_Hant_CN",
+                "es_Hant_CN"
+            }, {
+                "es_Hant_TW",
+                "es_Hant_TW",
+                "es_Hant_TW"
+            }, {
+                "es_Hant_HK",
+                "es_Hant_HK",
+                "es_Hant_HK"
+            }, {
+                "es_Hant_AQ",
+                "es_Hant_AQ",
+                "es_Hant_AQ"
+            }, {
+                "es_Moon",
+                "es_Moon_ES",
+                "es_Moon"
+            }, {
+                "es_Moon_ZZ",
+                "es_Moon_ES",
+                "es_Moon"
+            }, {
+                "es_Moon_CN",
+                "es_Moon_CN",
+                "es_Moon_CN"
+            }, {
+                "es_Moon_TW",
+                "es_Moon_TW",
+                "es_Moon_TW"
+            }, {
+                "es_Moon_HK",
+                "es_Moon_HK",
+                "es_Moon_HK"
+            }, {
+                "es_Moon_AQ",
+                "es_Moon_AQ",
+                "es_Moon_AQ"
+            }, {
+                "zh",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Zzzz",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Zzzz_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_Zzzz_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Latn",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_ZZ",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_CN",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_TW",
+                "zh_Latn_TW",
+                "zh_Latn_TW"
+            }, {
+                "zh_Latn_HK",
+                "zh_Latn_HK",
+                "zh_Latn_HK"
+            }, {
+                "zh_Latn_AQ",
+                "zh_Latn_AQ",
+                "zh_Latn_AQ"
+            }, {
+                "zh_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hans_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hans_TW",
+                "zh_Hans_TW",
+                "zh_Hans_TW"
+            }, {
+                "zh_Hans_HK",
+                "zh_Hans_HK",
+                "zh_Hans_HK"
+            }, {
+                "zh_Hans_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Hant_ZZ",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Hant_CN",
+                "zh_Hant_CN",
+                "zh_Hant_CN"
+            }, {
+                "zh_Hant_AQ",
+                "zh_Hant_AQ",
+                "zh_Hant_AQ"
+            }, {
+                "zh_Moon",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_ZZ",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_CN",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_TW",
+                "zh_Moon_TW",
+                "zh_Moon_TW"
+            }, {
+                "zh_Moon_HK",
+                "zh_Moon_HK",
+                "zh_Moon_HK"
+            }, {
+                "zh_Moon_AQ",
+                "zh_Moon_AQ",
+                "zh_Moon_AQ"
+            }, {
+                "art",
+                "",
+                ""
+            }, {
+                "art_ZZ",
+                "",
+                ""
+            }, {
+                "art_CN",
+                "",
+                ""
+            }, {
+                "art_TW",
+                "",
+                ""
+            }, {
+                "art_HK",
+                "",
+                ""
+            }, {
+                "art_AQ",
+                "",
+                ""
+            }, {
+                "art_Zzzz",
+                "",
+                ""
+            }, {
+                "art_Zzzz_ZZ",
+                "",
+                ""
+            }, {
+                "art_Zzzz_CN",
+                "",
+                ""
+            }, {
+                "art_Zzzz_TW",
+                "",
+                ""
+            }, {
+                "art_Zzzz_HK",
+                "",
+                ""
+            }, {
+                "art_Zzzz_AQ",
+                "",
+                ""
+            }, {
+                "art_Latn",
+                "",
+                ""
+            }, {
+                "art_Latn_ZZ",
+                "",
+                ""
+            }, {
+                "art_Latn_CN",
+                "",
+                ""
+            }, {
+                "art_Latn_TW",
+                "",
+                ""
+            }, {
+                "art_Latn_HK",
+                "",
+                ""
+            }, {
+                "art_Latn_AQ",
+                "",
+                ""
+            }, {
+                "art_Hans",
+                "",
+                ""
+            }, {
+                "art_Hans_ZZ",
+                "",
+                ""
+            }, {
+                "art_Hans_CN",
+                "",
+                ""
+            }, {
+                "art_Hans_TW",
+                "",
+                ""
+            }, {
+                "art_Hans_HK",
+                "",
+                ""
+            }, {
+                "art_Hans_AQ",
+                "",
+                ""
+            }, {
+                "art_Hant",
+                "",
+                ""
+            }, {
+                "art_Hant_ZZ",
+                "",
+                ""
+            }, {
+                "art_Hant_CN",
+                "",
+                ""
+            }, {
+                "art_Hant_TW",
+                "",
+                ""
+            }, {
+                "art_Hant_HK",
+                "",
+                ""
+            }, {
+                "art_Hant_AQ",
+                "",
+                ""
+            }, {
+                "art_Moon",
+                "",
+                ""
+            }, {
+                "art_Moon_ZZ",
+                "",
+                ""
+            }, {
+                "art_Moon_CN",
+                "",
+                ""
+            }, {
+                "art_Moon_TW",
+                "",
+                ""
+            }, {
+                "art_Moon_HK",
+                "",
+                ""
+            }, {
+                "art_Moon_AQ",
+                "",
+                ""
+            }
+        };
+
+        for (int i = 0; i < full_data.length; i++) {
+            ULocale org = new ULocale(full_data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            String exp = full_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + full_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + full_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        for (int i = 0; i < full_data.length; i++) {
+            String maximal = full_data[i][1];
+
+            if (maximal.length() > 0) {
+                ULocale org = new ULocale(maximal);
+                ULocale res = ULocale.minimizeSubtags(org);
+                String exp = full_data[i][2];
+                if (exp.length() == 0) {
+                    if (!org.equals(res)) {
+                        errln("Original: " + full_data[i][1] + " expected: " + exp + " - but got " + res.toString());
+                    }
+                }
+                else if (!res.toString().equals(exp)) {
+                    errln("Original: " + full_data[i][1] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeLabel.java b/src/com/ibm/icu/dev/test/util/UnicodeLabel.java
new file mode 100644
index 0000000..cd75d5e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeLabel.java
@@ -0,0 +1,56 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+public abstract class UnicodeLabel {
+    
+    public abstract String getValue(int codepoint, boolean isShort);
+    
+    public String getValue(String s, String separator, boolean withCodePoint) {
+        if (s.length() == 1) { // optimize simple case
+            return getValue(s.charAt(0), withCodePoint); 
+        }
+        StringBuffer sb = new StringBuffer();
+        int cp;
+        for (int i = 0; i < s.length(); i+=UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(getValue(cp, withCodePoint));
+        }
+        return sb.toString();
+    }
+    
+    public int getMaxWidth(boolean isShort) {
+        return 0;
+    }
+    
+    private static class Hex extends UnicodeLabel {
+        public String getValue(int codepoint, boolean isShort) {
+            if (isShort) return Utility.hex(codepoint,4);
+            return "U+" + Utility.hex(codepoint,4);
+        }       
+    }
+    
+    public static class Constant extends UnicodeLabel {
+        private String value;
+        public Constant(String value) {
+            if (value == null) value = "";
+            this.value = value;
+        }
+        public String getValue(int codepoint, boolean isShort) {
+            return value;
+        }
+        public int getMaxWidth(boolean isShort) {
+            return value.length();      
+        }
+    }
+    public static final UnicodeLabel NULL = new Constant("");
+    public static final UnicodeLabel HEX = new Hex();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeMap.java b/src/com/ibm/icu/dev/test/util/UnicodeMap.java
new file mode 100644
index 0000000..715181d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeMap.java
@@ -0,0 +1,897 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.*;
+import java.util.*;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.Freezable;
+/**
+ * Class for mapping Unicode characters to values
+ * Much smaller storage than using HashMap, and much faster and more compact than
+ * a list of UnicodeSets.
+ * @author Davis
+ */
+
+public final class UnicodeMap implements Cloneable, Freezable, Externalizable {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -6540936876295804105L;
+    static final boolean ASSERTIONS = false;
+    static final long GROWTH_PERCENT = 200; // 100 is no growth!
+    static final long GROWTH_GAP = 10; // extra bump!
+
+    private int length;
+    // two parallel arrays to save memory. Wish Java had structs.
+    private int[] transitions;
+    private Object[] values;
+    
+    private LinkedHashSet availableValues = new LinkedHashSet();
+    private transient boolean staleAvailableValues;
+
+    private transient boolean errorOnReset;
+    private transient boolean locked;
+    private int lastIndex;
+    
+    { clear(); }
+    
+    public UnicodeMap clear() {
+        if (locked) throw new UnsupportedOperationException("Attempt to modify locked object");
+        length = 2;
+        transitions = new int[] {0,0x110000,0,0,0,0,0,0,0,0};
+        values = new Object[10];
+        
+        availableValues.clear();
+        staleAvailableValues = false;
+
+        errorOnReset = false;
+        lastIndex = 0;
+        return this;
+    }
+    
+    /* Boilerplate */
+    public boolean equals(Object other) {
+        if (other == null) return false;
+        try {
+            UnicodeMap that = (UnicodeMap) other;
+            if (length != that.length) return false;
+            for (int i = 0; i < length-1; ++i) {
+                if (transitions[i] != that.transitions[i]) return false;
+                if (!areEqual(values[i], that.values[i])) return false;
+            }
+            return true;
+        } catch (ClassCastException e) {
+            return false;
+        }
+    }
+    
+    public int getHashCode(Object o) {
+        return o.hashCode();
+        //equator.getHashCode
+    }
+    
+    public static boolean areEqual(Object a , Object b) {
+        if (a == b) return true;
+        if (a == null || b == null) return false;
+        return a.equals(b);
+    }
+    
+    public int hashCode() {
+        int result = length;
+        // TODO might want to abbreviate this for speed.
+        for (int i = 0; i < length-1; ++i) {
+            result = 37*result + transitions[i];
+            result = 37*result + getHashCode(values[i]);
+        }
+        return result;
+    }
+    
+    /**
+     * Standard clone. Warning, as with Collections, does not do deep clone.
+     */
+    public Object cloneAsThawed() {
+        UnicodeMap that = new UnicodeMap();
+        that.length = length;
+        that.transitions = (int[]) transitions.clone();
+        that.values = (Object[]) values.clone();
+        that.availableValues = new LinkedHashSet(availableValues);
+        that.locked = false;
+        return that;
+    }
+    
+    /* for internal consistency checking */
+    
+    void _checkInvariants() {
+        if (length < 2
+          || length > transitions.length
+          || transitions.length != values.length) {
+              throw new IllegalArgumentException("Invariant failed: Lengths bad");
+          }
+        for (int i = 1; i < length-1; ++i) {
+            if (areEqual(values[i-1], values[i])) {
+                throw new IllegalArgumentException("Invariant failed: values shared at " 
+                    + "\t" + Utility.hex(i-1) + ": <" + values[i-1] + ">"
+                    + "\t" + Utility.hex(i) + ": <" + values[i] + ">"
+                    );
+            }
+        }
+        if (transitions[0] != 0 || transitions[length-1] != 0x110000) {
+            throw new IllegalArgumentException("Invariant failed: bounds set wrong");
+        }
+        for (int i = 1; i < length-1; ++i) {
+            if (transitions[i-1] >= transitions[i]) {
+                throw new IllegalArgumentException("Invariant failed: not monotonic"
+                + "\t" + Utility.hex(i-1) + ": " + transitions[i-1]
+                + "\t" + Utility.hex(i) + ": " + transitions[i]
+                    );
+            }
+        }
+    }
+    
+    /**
+     * Finds an index such that inversionList[i] <= codepoint < inversionList[i+1]
+     * Assumes that 0 <= codepoint <= 0x10FFFF
+     * @param codepoint
+     * @return the index
+     */
+    private int _findIndex(int c) {
+        int lo = 0;
+        int hi = length - 1;
+        int i = (lo + hi) >>> 1;
+        // invariant: c >= list[lo]
+        // invariant: c < list[hi]
+        while (i != lo) {
+            if (c < transitions[i]) {
+                hi = i;
+            } else {
+                lo = i;
+            }
+            i = (lo + hi) >>> 1;
+        }
+        if (ASSERTIONS) _checkFind(c, lo);
+        return lo;
+    }
+    
+    private void _checkFind(int codepoint, int value) {
+        int other = __findIndex(codepoint);
+        if (other != value) {
+            throw new IllegalArgumentException("Invariant failed: binary search"
+                + "\t" + Utility.hex(codepoint) + ": " + value
+                + "\tshould be: " + other);            
+        }
+    }
+    
+    private int __findIndex(int codepoint) {
+        // TODO use binary search
+        for (int i = length-1; i > 0; --i) {
+            if (transitions[i] <= codepoint) return i;
+        }
+        return 0;
+    }
+    
+    /*
+     * Try indexed lookup
+     
+    static final int SHIFT = 8;
+    int[] starts = new int[0x10FFFF>>SHIFT]; // lowest transition index where codepoint>>x can be found
+    boolean startsValid = false;
+    private int findIndex(int codepoint) {
+        if (!startsValid) {
+            int start = 0;
+            for (int i = 1; i < length; ++i) {
+                
+            }
+        }
+        for (int i = length-1; i > 0; --i) {
+           if (transitions[i] <= codepoint) return i;
+       }
+       return 0;
+   }
+   */
+   
+    /**
+     * Remove the items from index through index+count-1.
+     * Logically reduces the size of the internal arrays.
+     * @param index
+     * @param count
+     */
+    private void _removeAt(int index, int count) {
+        for (int i = index + count; i < length; ++i) {
+            transitions[i-count] = transitions[i];
+            values[i-count] = values[i];
+        }
+        length -= count;
+    }
+    /**
+     * Add a gap from index to index+count-1.
+     * The values there are undefined, and must be set.
+     * Logically grows arrays to accomodate. Actual growth is limited
+     * @param index
+     * @param count
+     */
+    private void _insertGapAt(int index, int count) {
+        int newLength = length + count;
+        int[] oldtransitions = transitions;
+        Object[] oldvalues = values;
+        if (newLength > transitions.length) {
+            int allocation = (int) (GROWTH_GAP + (newLength * GROWTH_PERCENT) / 100);
+            transitions = new int[allocation];
+            values = new Object[allocation];
+            for (int i = 0; i < index; ++i) {
+                transitions[i] = oldtransitions[i];
+                values[i] = oldvalues[i];
+            }
+        } 
+        for (int i = length - 1; i >= index; --i) {
+            transitions[i+count] = oldtransitions[i];
+            values[i+count] = oldvalues[i];
+        }
+        length = newLength;
+    }
+    
+    /**
+     * Associates code point with value. Removes any previous association.
+     * @param codepoint
+     * @param value
+     * @return this, for chaining
+     */
+    private UnicodeMap _put(int codepoint, Object value) {
+        // Warning: baseIndex is an invariant; must
+        // be defined such that transitions[baseIndex] < codepoint
+        // at end of this routine.
+        int baseIndex;
+        if (transitions[lastIndex] <= codepoint 
+          && codepoint < transitions[lastIndex+1]) {
+            baseIndex = lastIndex;
+        } else { 
+            baseIndex = _findIndex(codepoint);
+        }
+        int limitIndex = baseIndex + 1;
+        // cases are (a) value is already set
+        if (areEqual(values[baseIndex], value)) return this;
+        if (locked) throw new UnsupportedOperationException("Attempt to modify locked object");
+        if (errorOnReset && values[baseIndex] != null) {
+            throw new IllegalArgumentException("Attempt to reset value for " + Utility.hex(codepoint)
+                    + " when that is disallowed. Old: " + values[baseIndex] + "; New: " + value);
+        }
+
+        // adjust the available values
+        staleAvailableValues = true;
+        availableValues.add(value); // add if not there already      
+
+        int baseCP = transitions[baseIndex];
+        int limitCP = transitions[limitIndex];
+        // we now start walking through the difference case,
+        // based on whether we are at the start or end of range
+        // and whether the range is a single character or multiple
+        
+        if (baseCP == codepoint) {
+            // CASE: At very start of range
+            boolean connectsWithPrevious = 
+                baseIndex != 0 && areEqual(value, values[baseIndex-1]);               
+                
+            if (limitCP == codepoint + 1) {
+                // CASE: Single codepoint range
+                boolean connectsWithFollowing =
+                    baseIndex < length - 1 && areEqual(value, values[limitIndex]);
+                
+                if (connectsWithPrevious) {
+                    // A1a connects with previous & following, so remove index
+                    if (connectsWithFollowing) {
+                        _removeAt(baseIndex, 2);
+                     } else {
+                        _removeAt(baseIndex, 1); // extend previous
+                    }
+                    --baseIndex; // fix up
+                } else if (connectsWithFollowing) {
+                    _removeAt(baseIndex, 1); // extend following backwards
+                    transitions[baseIndex] = codepoint; 
+                } else {
+                    // doesn't connect on either side, just reset
+                    values[baseIndex] = value;
+                }
+            } else if (connectsWithPrevious) {             
+            // A.1: start of multi codepoint range
+            // if connects
+                ++transitions[baseIndex]; // extend previous
+            } else {
+                // otherwise insert new transition
+                transitions[baseIndex] = codepoint+1; // fix following range
+                _insertGapAt(baseIndex, 1);
+                values[baseIndex] = value;
+                transitions[baseIndex] = codepoint;
+            }
+        } else if (limitCP == codepoint + 1) {
+            // CASE: at end of range        
+            // if connects, just back up range
+            boolean connectsWithFollowing =
+                baseIndex < length - 1 && areEqual(value, values[limitIndex]);
+
+            if (connectsWithFollowing) {
+                --transitions[limitIndex]; 
+                return this;                
+            } else {
+                _insertGapAt(limitIndex, 1);
+                transitions[limitIndex] = codepoint;
+                values[limitIndex] = value;
+            }
+        } else {
+            // CASE: in middle of range
+            // insert gap, then set the new range
+            _insertGapAt(++baseIndex,2);
+            transitions[baseIndex] = codepoint;
+            values[baseIndex] = value;
+            transitions[baseIndex+1] = codepoint + 1;
+            values[baseIndex+1] = values[baseIndex-1]; // copy lower range values
+        }
+        lastIndex = baseIndex; // store for next time
+        return this;
+    }
+    private UnicodeMap _putAll(int startCodePoint, int endCodePoint, Object value) {
+        for (int i = startCodePoint; i <= endCodePoint; ++i) {
+            _put(i, value);
+        }
+        return this;
+    }
+    /**
+     * Sets the codepoint value.
+     * @param codepoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap put(int codepoint, Object value) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        _put(codepoint, value);
+        if (ASSERTIONS) _checkInvariants();
+        return this;
+    }
+    /**
+     * Adds bunch o' codepoints; otherwise like put.
+     * @param codepoints
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeSet codepoints, Object value) {
+        // TODO optimize
+        UnicodeSetIterator it = new UnicodeSetIterator(codepoints);
+        while (it.nextRange()) {
+            _putAll(it.codepoint, it.codepointEnd, value);
+        }
+        return this;
+    }
+    
+    /**
+     * Adds bunch o' codepoints; otherwise like add.
+     * @param startCodePoint
+     * @param endCodePoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(int startCodePoint, int endCodePoint, Object value) {
+        if (startCodePoint < 0 || endCodePoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: "
+             + Utility.hex(startCodePoint) + ".." + Utility.hex(endCodePoint));
+        }
+        // TODO optimize
+        for (int i = startCodePoint; i <= endCodePoint; ++i) {
+            _put(i, value);
+        }
+        return this;
+    }
+    /**
+     * Add all the (main) values from a Unicode property
+     * @param prop the property to add to the map
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeProperty prop) {
+        // TODO optimize
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            _put(i, prop.getValue(i));
+        }
+        return this;
+    }
+
+    /**
+     * Add all the (main) values from a Unicode property
+     * @param prop the property to add to the map
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeMap prop) {
+        // TODO optimize
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            _put(i, prop.getValue(i));
+        }
+        return this;
+    }
+
+    /**
+     * Set the currently unmapped Unicode code points to the given value.
+     * @param value the value to set
+     * @return this (for chaining)
+     */
+    public UnicodeMap setMissing(Object value) {
+        // fast path, if value not yet present
+        if (!getAvailableValues().contains(value)) {
+            staleAvailableValues = true;
+            availableValues.add(value);
+            for (int i = 0; i < length; ++i) {
+                if (values[i] == null) values[i] = value;
+            }
+            return this;
+        } else {
+            return putAll(getSet(null), value);
+        }
+    }
+    /**
+     * Returns the set associated with a given value. Deposits into
+     * result if it is not null. Remember to clear if you just want
+     * the new values.
+     * @param value
+     * @param result
+     * @return result
+     */
+    public UnicodeSet getSet(Object value, UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        for (int i = 0; i < length - 1; ++i) {
+            if (areEqual(value, values[i])) {
+                result.add(transitions[i], transitions[i+1]-1);
+            } 
+        }
+        return result;
+    }
+
+    public UnicodeSet getSet(Object value) {
+        return getSet(value,null);
+    }
+
+    public UnicodeSet keySet() {
+        return getSet(null,null).complement();
+    }
+    /**
+     * Returns the list of possible values. Deposits each non-null value into
+     * result. Creates result if it is null. Remember to clear result if
+     * you are not appending to existing collection.
+     * @param result
+     * @return result
+     */
+    public Collection getAvailableValues(Collection result) {
+        if (staleAvailableValues) {
+            // collect all the current values
+            // retain them in the availableValues
+            Set temp = new HashSet();
+            for (int i = 0; i < length - 1; ++i) {
+                if (values[i] != null) temp.add(values[i]);
+            }
+            availableValues.retainAll(temp);
+            staleAvailableValues = false;
+        }
+        if (result == null) result = new ArrayList(availableValues.size());
+        result.addAll(availableValues);
+        return result;
+    }
+    
+    /**
+     * Convenience method
+     */
+    public Collection getAvailableValues() {
+        return getAvailableValues(null);
+    }
+    /**
+     * Gets the value associated with a given code point.
+     * Returns null, if there is no such value.
+     * @param codepoint
+     * @return the value
+     */
+    public Object getValue(int codepoint) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        return values[_findIndex(codepoint)];
+    }
+    
+    /**
+     * Change a new string from the source string according to the mappings. For each code point cp, if getValue(cp) is null, append the character, otherwise append getValue(cp).toString()
+     * @param source
+     * @return
+     */
+    public String fold(String source) {
+        StringBuffer result = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+          cp = UTF16.charAt(source, i);
+          Object mResult = getValue(cp);
+          if (mResult != null) {
+            result.append(mResult);
+          } else {
+            UTF16.append(result, cp);
+          }
+        }
+        return result.toString();
+      }
+    
+    public interface Composer {
+        Object compose(int codePoint, Object a, Object b);
+    }
+    
+    public UnicodeMap composeWith(UnicodeMap other, Composer composer) {
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            Object v1 = getValue(i);
+            Object v2 = other.getValue(i);
+            Object v3 = composer.compose(i, v1, v2);
+            if (v1 != v3 && (v1 == null || !v1.equals(v3))) put(i, v3);
+        }
+        return this;
+    }
+    
+    public UnicodeMap composeWith(UnicodeSet set, Object value, Composer composer) {
+        for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+            int i = it.codepoint;
+            Object v1 = getValue(i);
+            Object v3 = composer.compose(i, v1, value);
+            if (v1 != v3 && (v1 == null || !v1.equals(v3))) put(i, v3);
+        }
+        return this;
+    }
+    
+    /**
+     * Follow the style used by UnicodeSetIterator
+     */
+    public static class MapIterator {
+        public int codepoint;
+        public int codepointEnd;
+        public Object value;
+        
+        private UnicodeMap map;
+        private int index;
+        private int startRange;
+        private int endRange;
+        private Object lastValue;
+        
+        public MapIterator(UnicodeMap map) {
+            reset(map);
+        }
+        // note: length of 2 means {0, 110000}. Only want to index up to 0!
+        public boolean nextRange() {
+            if (index < 0 || index >= map.length - 1) return false;
+            value = map.values[index];
+            codepoint = startRange = map.transitions[index++];
+            codepointEnd = endRange = map.transitions[index] - 1; // -1 to make limit into end
+            return true;
+        }
+        public boolean next() {
+            if (startRange > endRange) {
+                //System.out.println("***" + Utility.hex(startRange) + ".." + Utility.hex(endRange));
+                if (!nextRange()) return false;
+                // index now points AFTER the start of the range
+                lastValue = map.values[index-1];
+                //System.out.println("***" + Utility.hex(codepoint) + ".." + Utility.hex(codepointEnd) + " => " + lastValue);
+            }
+            value = lastValue;
+            codepoint = codepointEnd = startRange++; // set to first, and iterate
+            return true;
+        }
+
+        public MapIterator reset() {
+            index = 0;
+            startRange = 0;
+            endRange = -1;
+            return this;
+        }
+        public MapIterator reset(UnicodeMap newMap) {
+            this.map = newMap;
+            return reset();
+        }
+    }
+    
+    public String toString() {
+        return toString(null);
+    }
+    public String toString(Comparator collected) {
+        StringBuffer result = new StringBuffer();       
+        if (collected == null) {
+            for (int i = 0; i < length-1; ++i) {
+                Object value = values[i];
+                if (value == null) continue;
+                int start = transitions[i];
+                int end = transitions[i+1]-1;
+                result.append(Utility.hex(start));
+                if (start != end) result.append("..")
+                .append(Utility.hex(end));
+                result.append("\t=> ")
+                .append(values[i] == null ? "null" : values[i].toString())
+                .append("\r\n");
+            }
+        } else {
+            Set set = (Set) getAvailableValues(new TreeSet(collected));
+            for (Iterator it = set.iterator(); it.hasNext();) {
+                Object value = it.next();
+                UnicodeSet s = getSet(value);
+                result.append(value)
+                .append("\t=> ")
+                .append(s.toPattern(true))
+                .append("\r\n");
+            }
+        }
+        return result.toString();
+    }
+    /**
+     * @return Returns the errorOnReset.
+     */
+    public boolean getErrorOnReset() {
+        return errorOnReset;
+    }
+    /**
+     * @param errorOnReset The errorOnReset to set.
+     */
+    public void setErrorOnReset(boolean errorOnReset) {
+        this.errorOnReset = errorOnReset;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Lockable#isLocked()
+     */
+    public boolean isFrozen() {
+        // TODO Auto-generated method stub
+        return locked;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Lockable#lock()
+     */
+    public Object freeze() {
+        locked = true;
+        return this;
+    }
+    
+    static final boolean DEBUG_WRITE = false;
+    
+    // TODO Fix to serialize more than just strings.
+    // Only if all the items are strings will we do the following compression
+    // Otherwise we'll just use Java Serialization, bulky as it is
+    public void writeExternal(ObjectOutput out1) throws IOException {
+        DataOutputCompressor sc = new DataOutputCompressor(out1);
+        // if all objects are strings
+        Collection availableVals = getAvailableValues();
+        boolean allStrings = allAreString(availableVals);
+        sc.writeBoolean(allStrings);
+        Map object_index = new LinkedHashMap();
+        if (allAreString(availableVals)) {
+            sc.writeStringSet(new TreeSet(availableVals), object_index);
+        } else {
+            sc.writeCollection(availableVals, object_index);           
+        }
+        sc.writeUInt(length);
+        int lastTransition = -1;
+        int lastValueNumber = 0;
+        if (DEBUG_WRITE) System.out.println("Trans count: " + length);
+        for (int i = 0; i < length; ++i) {
+            int valueNumber = ((Integer)object_index.get(values[i])).intValue();
+            if (DEBUG_WRITE) System.out.println("Trans: " + transitions[i] + ",\t" + valueNumber);
+            
+            int deltaTransition = transitions[i] - lastTransition;
+            lastTransition = transitions[i];
+            int deltaValueNumber = valueNumber - lastValueNumber;
+            lastValueNumber = valueNumber;
+            
+            deltaValueNumber <<= 1; // make room for one bit
+            boolean canCombine = deltaTransition == 1;
+            if (canCombine) deltaValueNumber |= 1;
+            sc.writeInt(deltaValueNumber);
+            if (DEBUG_WRITE) System.out.println("deltaValueNumber: " + deltaValueNumber);
+            if (!canCombine) {
+                sc.writeUInt(deltaTransition);
+                if (DEBUG_WRITE) System.out.println("deltaTransition: " + deltaTransition);
+            }
+        }
+        sc.flush();
+    }
+
+    /**
+     * 
+     */
+    private boolean allAreString(Collection availableValues2) {
+        //if (true) return false;
+        for (Iterator it = availableValues2.iterator(); it.hasNext();) {
+            if (!(it.next() instanceof String)) return false;
+        }
+        return true;
+    }
+
+    public void readExternal(ObjectInput in1) throws IOException, ClassNotFoundException {
+        DataInputCompressor sc = new DataInputCompressor(in1);
+        boolean allStrings = sc.readBoolean();
+        Object[] valuesList;
+        availableValues = new LinkedHashSet();
+        if (allStrings) {
+            valuesList = sc.readStringSet(availableValues);
+        } else {
+            valuesList = sc.readCollection(availableValues);            
+        }
+        length = sc.readUInt();
+        transitions = new int[length];
+        if (DEBUG_WRITE) System.out.println("Trans count: " + length);
+        values = new Object[length];
+        int currentTransition = -1;
+        int currentValue = 0;
+        int deltaTransition;
+        for (int i = 0; i < length; ++i) {
+            int temp = sc.readInt();
+            if (DEBUG_WRITE) System.out.println("deltaValueNumber: " + temp);
+            boolean combined = (temp & 1) != 0;
+            temp >>= 1;
+            values[i] = valuesList[currentValue += temp];
+            if (!combined) {
+                deltaTransition = sc.readUInt();
+                if (DEBUG_WRITE) System.out.println("deltaTransition: " + deltaTransition);
+            } else {
+                deltaTransition = 1;
+            }
+            transitions[i] = currentTransition += deltaTransition; // delta value
+            if (DEBUG_WRITE) System.out.println("Trans: " + transitions[i] + ",\t" + currentValue);
+        }
+    }
+
+    /**
+     * 
+     */
+    static int findCommon(String last, String s) {
+        int minLen = Math.min(last.length(), s.length());
+        for (int i = 0; i < minLen; ++i) {
+            if (last.charAt(i) != s.charAt(i)) return i;
+        }
+        return minLen;
+    }
+
+
+//    /**
+//     * @param sc
+//     * @throws IOException
+//     * 
+//     */
+//    private void showSize(String title, ObjectOutput out, StreamCompressor sc) throws IOException {
+//        sc.showSize(this, title, out);
+//    }
+//    //public void readObject(ObjectInputStream in) throws IOException {
+//    public static class StreamCompressor {
+//        transient byte[] buffer = new byte[1];
+//        transient StringBuffer stringBuffer = new StringBuffer();
+//        
+//        transient byte[] readWriteBuffer = new byte[8];
+//        int position = 0;
+//        DataOutput out;
+//        DataInput in;
+//
+//        /**
+//         * Format is:
+//         * @throws IOException
+//         */
+//        public void writeInt(int i) throws IOException {
+//            while (true) {
+//                if (position == readWriteBuffer.length) {
+//                    out.write(readWriteBuffer);
+//                    position = 0;
+//                }
+//                if ((i & ~0x7F) == 0) {
+//                    readWriteBuffer[position++] = (byte)i;
+//                    break;
+//                }
+//                readWriteBuffer[position++] = (byte)(0x80 | i);
+//                i >>>= 7;
+//            }
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public int readNInt(ObjectInput in) throws IOException {
+//            int result = readInt(in);
+//            boolean negative = (result & 1) != 0;
+//            result >>>= 1;
+//            if (negative) result = ~result;
+//            return result;
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void writeNInt(int input) throws IOException {
+//            int flag = 0;
+//            if (input < 0) {
+//                input = ~input;
+//                flag = 1;
+//            }
+//            input = (input << 1) | flag;
+//            writeInt(out, input);
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void flush() throws IOException {
+//            out.write(readWriteBuffer);
+//            position = 0;
+//        }
+//        
+//        int readPosition = readWriteBuffer.length;
+//        
+//        public int readInt(ObjectInput in) throws IOException {
+//            int result = 0;
+//            int offset = 0;
+//            while (true) {
+//                if (readPosition == readWriteBuffer.length) {
+//                    in.read(readWriteBuffer);
+//                    readPosition = 0;
+//                }
+//                //in.read(buffer);
+//                int input = readWriteBuffer[readPosition++]; // buffer[0];
+//                result |= (input & 0x7F) << offset;
+//                if ((input & 0x80) == 0) {
+//                    return result;
+//                }
+//                offset += 7;
+//            }  
+//        }
+//
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void writeString(String s) throws IOException {
+//            writeInt(UTF16.countCodePoint(s));
+//            writeCodePoints(s);
+//        }
+//        /**
+//         * 
+//         */
+//        private void writeCodePoints(String s) throws IOException {
+//            int cp = 0;
+//            for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+//                cp = UTF16.charAt(s, i);
+//                writeInt(cp);
+//            }
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public String readString() throws IOException {
+//            int len = readInt(in);
+//            return readCodePoints(in, len);
+//        }
+//        /**
+//         * 
+//         */
+//        private String readCodePoints(int len) throws IOException {
+//            stringBuffer.setLength(0);
+//            for (int i = 0; i < len; ++i) {
+//                int cp = readInt(in);
+//                UTF16.append(stringBuffer, cp);
+//            }
+//            return stringBuffer.toString();
+//        }
+//        /**
+//         * @param this
+//         * @throws IOException
+//         * 
+//         */
+//        private void showSize(UnicodeMap map, String title, ObjectOutput out) throws IOException {
+//            out.flush();
+//            System.out.println(title + ": " + (map.debugOut.size() + position));
+//        }
+//    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeProperty.java b/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
new file mode 100644
index 0000000..74b65bb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
@@ -0,0 +1,1240 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.dev.test.util.CollectionUtilities.InverseMatcher;
+import com.ibm.icu.dev.test.util.CollectionUtilities.ObjectMatcher;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+public abstract class UnicodeProperty extends UnicodeLabel {
+
+    public static boolean DEBUG = false;
+
+    public static String CHECK_NAME = "FC_NFKC_Closure";
+
+    public static int CHECK_VALUE = 0x037A;
+
+    private String name;
+
+    private String firstNameAlias = null;
+
+    private int type;
+
+    private Map valueToFirstValueAlias = null;
+
+    /*
+     * Name: Unicode_1_Name Name: ISO_Comment Name: Name Name: Unicode_1_Name
+     * 
+     */
+
+    public static final int UNKNOWN = 0, BINARY = 2, EXTENDED_BINARY = 3,
+            ENUMERATED = 4, EXTENDED_ENUMERATED = 5, CATALOG = 6,
+            EXTENDED_CATALOG = 7, MISC = 8, EXTENDED_MISC = 9, STRING = 10,
+            EXTENDED_STRING = 11, NUMERIC = 12, EXTENDED_NUMERIC = 13,
+            START_TYPE = 2, LIMIT_TYPE = 14, EXTENDED_MASK = 1,
+            CORE_MASK = ~EXTENDED_MASK, BINARY_MASK = (1 << BINARY)
+                    | (1 << EXTENDED_BINARY), STRING_MASK = (1 << STRING)
+                    | (1 << EXTENDED_STRING),
+            STRING_OR_MISC_MASK = (1 << STRING) | (1 << EXTENDED_STRING)
+                    | (1 << MISC) | (1 << EXTENDED_MISC),
+            ENUMERATED_OR_CATALOG_MASK = (1 << ENUMERATED)
+                    | (1 << EXTENDED_ENUMERATED) | (1 << CATALOG)
+                    | (1 << EXTENDED_CATALOG);
+
+    private static final String[] TYPE_NAMES = { "Unknown", "Unknown",
+            "Binary", "Extended Binary", "Enumerated", "Extended Enumerated",
+            "Catalog", "Extended Catalog", "Miscellaneous",
+            "Extended Miscellaneous", "String", "Extended String", "Numeric",
+            "Extended Numeric", };
+
+    public static String getTypeName(int propType) {
+        return TYPE_NAMES[propType];
+    }
+
+    public final String getName() {
+        return name;
+    }
+
+    public final int getType() {
+        return type;
+    }
+
+    public final boolean isType(int mask) {
+        return ((1 << type) & mask) != 0;
+    }
+
+    protected final void setName(String string) {
+        if (string == null)
+            throw new IllegalArgumentException("Name must not be null");
+        name = string;
+    }
+
+    protected final void setType(int i) {
+        type = i;
+    }
+
+    public String getVersion() {
+        return _getVersion();
+    }
+
+    public String getValue(int codepoint) {
+        if (DEBUG && CHECK_VALUE == codepoint && CHECK_NAME.equals(getName())) {
+            String value = _getValue(codepoint);
+            System.out.println(getName() + "(" + Utility.hex(codepoint) + "):"
+                    + (getType() == STRING ? Utility.hex(value) : value));
+            return value;
+        }
+        return _getValue(codepoint);
+    }
+
+    // public String getValue(int codepoint, boolean isShort) {
+    // return getValue(codepoint);
+    // }
+
+    public List getNameAliases(List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        return _getNameAliases(result);
+    }
+
+    public List getValueAliases(String valueAlias, List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        result = _getValueAliases(valueAlias, result);
+        if (!result.contains(valueAlias)) { // FIX && type < NUMERIC
+            result = _getValueAliases(valueAlias, result); // for debugging
+            throw new IllegalArgumentException("Internal error: " + getName()
+                    + " doesn't contain " + valueAlias + ": "
+                    + new BagFormatter().join(result));
+        }
+        return result;
+    }
+
+    public List getAvailableValues(List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        return _getAvailableValues(result);
+    }
+
+    protected abstract String _getVersion();
+
+    protected abstract String _getValue(int codepoint);
+
+    protected abstract List _getNameAliases(List result);
+
+    protected abstract List _getValueAliases(String valueAlias, List result);
+
+    protected abstract List _getAvailableValues(List result);
+
+    // conveniences
+    public final List getNameAliases() {
+        return getNameAliases(null);
+    }
+
+    public final List getValueAliases(String valueAlias) {
+        return getValueAliases(valueAlias, null);
+    }
+
+    public final List getAvailableValues() {
+        return getAvailableValues(null);
+    }
+
+    public final String getValue(int codepoint, boolean getShortest) {
+        String result = getValue(codepoint);
+        if (type >= MISC || result == null || !getShortest)
+            return result;
+        return getFirstValueAlias(result);
+    }
+
+    public final String getFirstNameAlias() {
+        if (firstNameAlias == null) {
+            firstNameAlias = (String) getNameAliases().get(0);
+        }
+        return firstNameAlias;
+    }
+
+    public final String getFirstValueAlias(String value) {
+        if (valueToFirstValueAlias == null)
+            _getFirstValueAliasCache();
+        return (String) valueToFirstValueAlias.get(value);
+    }
+
+    private void _getFirstValueAliasCache() {
+        maxValueWidth = 0;
+        maxFirstValueAliasWidth = 0;
+        valueToFirstValueAlias = new HashMap(1);
+        Iterator it = getAvailableValues().iterator();
+        while (it.hasNext()) {
+            String value = (String) it.next();
+            String first = (String) getValueAliases(value).get(0);
+            if (first == null) { // internal error
+                throw new IllegalArgumentException(
+                        "Value not in value aliases: " + value);
+            }
+            if (DEBUG && CHECK_NAME.equals(getName())) {
+                System.out.println("First Alias: " + getName() + ": " + value
+                        + " => " + first
+                        + new BagFormatter().join(getValueAliases(value)));
+            }
+            valueToFirstValueAlias.put(value, first);
+            if (value.length() > maxValueWidth) {
+                maxValueWidth = value.length();
+            }
+            if (first.length() > maxFirstValueAliasWidth) {
+                maxFirstValueAliasWidth = first.length();
+            }
+        }
+    }
+
+    private int maxValueWidth = -1;
+
+    private int maxFirstValueAliasWidth = -1;
+
+    public int getMaxWidth(boolean getShortest) {
+        if (maxValueWidth < 0)
+            _getFirstValueAliasCache();
+        if (getShortest)
+            return maxFirstValueAliasWidth;
+        return maxValueWidth;
+    }
+
+    public final UnicodeSet getSet(String propertyValue) {
+        return getSet(propertyValue, null);
+    }
+
+    public final UnicodeSet getSet(PatternMatcher matcher) {
+        return getSet(matcher, null);
+    }
+
+    public final UnicodeSet getSet(String propertyValue, UnicodeSet result) {
+        return getSet(new SimpleMatcher(propertyValue,
+                isType(STRING_OR_MISC_MASK) ? null : PROPERTY_COMPARATOR),
+                result);
+    }
+
+    private UnicodeMap unicodeMap = null;
+
+    public static final String UNUSED = "??";
+
+    public final UnicodeSet getSet(PatternMatcher matcher, UnicodeSet result) {
+        if (result == null)
+            result = new UnicodeSet();
+        if (isType(STRING_OR_MISC_MASK)) {
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                String value = getValue(i);
+                if (value != null && matcher.matches(value)) {
+                    result.add(i);
+                }
+            }
+            return result;
+        }
+        List temp = new ArrayList(1); // to avoid reallocating...
+        UnicodeMap um = getUnicodeMap_internal();
+        Iterator it = um.getAvailableValues(null).iterator();
+        main: while (it.hasNext()) {
+            String value = (String) it.next();
+            temp.clear();
+            Iterator it2 = getValueAliases(value, temp).iterator();
+            while (it2.hasNext()) {
+                String value2 = (String) it2.next();
+                // System.out.println("Values:" + value2);
+                if (matcher.matches(value2)
+                        || matcher.matches(toSkeleton(value2))) {
+                    um.getSet(value, result);
+                    continue main;
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * public UnicodeSet getMatchSet(UnicodeSet result) { if (result == null)
+     * result = new UnicodeSet(); addAll(matchIterator, result); return result; }
+     * 
+     * public void setMatchSet(UnicodeSet set) { matchIterator = new
+     * UnicodeSetIterator(set); }
+     */
+
+    /**
+     * Utility for debugging
+     */
+    public static String getStack() {
+        Exception e = new Exception();
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        e.printStackTrace(pw);
+        pw.flush();
+        return "Showing Stack with fake " + sw.getBuffer().toString();
+    }
+
+    // TODO use this instead of plain strings
+    public static class Name implements Comparable {
+        private String skeleton;
+
+        private String pretty;
+
+        public final int RAW = 0, TITLE = 1, NORMAL = 2;
+
+        public Name(String name, int style) {
+            if (name == null)
+                name = "";
+            if (style == RAW) {
+                skeleton = pretty = name;
+            } else {
+                pretty = regularize(name, style == TITLE);
+                skeleton = toSkeleton(pretty);
+            }
+        }
+
+        public int compareTo(Object o) {
+            return skeleton.compareTo(((Name) o).skeleton);
+        }
+
+        public boolean equals(Object o) {
+            return skeleton.equals(((Name) o).skeleton);
+        }
+
+        public int hashCode() {
+            return skeleton.hashCode();
+        }
+
+        public String toString() {
+            return pretty;
+        }
+    }
+
+    /**
+     * @return the unicode map
+     */
+    public UnicodeMap getUnicodeMap() {
+        return getUnicodeMap(false);
+    }
+
+    /**
+     * @return the unicode map
+     */
+    public UnicodeMap getUnicodeMap(boolean getShortest) {
+        if (!getShortest)
+            return (UnicodeMap) getUnicodeMap_internal().cloneAsThawed();
+        UnicodeMap result = new UnicodeMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+            // getValue(i));
+            String value = getValue(i, true);
+            result.put(i, value);
+        }
+        return result;
+    }
+
+    /**
+     * @return the unicode map
+     */
+    protected UnicodeMap getUnicodeMap_internal() {
+        if (unicodeMap == null)
+            unicodeMap = _getUnicodeMap();
+        return unicodeMap;
+    }
+
+    protected UnicodeMap _getUnicodeMap() {
+        UnicodeMap result = new UnicodeMap();
+        HashMap myIntern = new HashMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+            // getValue(i));
+            String value = getValue(i);
+            String iValue = (String) myIntern.get(value);
+            if (iValue == null)
+                myIntern.put(value, iValue = value);
+            result.put(i, iValue);
+        }
+        if (DEBUG) {
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+                // getValue(i));
+                String value = getValue(i);
+                String resultValue = (String) result.getValue(i);
+                if (!value.equals(resultValue)) {
+                    throw new RuntimeException("Value failure at: "
+                            + Utility.hex(i));
+                }
+            }
+        }
+        if (DEBUG && CHECK_NAME.equals(getName())) {
+            System.out.println(getName() + ":\t" + getClass().getName() + "\t"
+                    + getVersion());
+            System.out.println(getStack());
+            System.out.println(result);
+        }
+        return result;
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addUnique(Object obj, Collection result) {
+        if (obj != null && !result.contains(obj))
+            result.add(obj);
+        return result;
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    public static final Comparator PROPERTY_COMPARATOR = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            return compareNames((String) o1, (String) o2);
+        }
+    };
+
+    /**
+     * Utility for managing property & non-string value aliases
+     * 
+     */
+    // TODO optimize
+    public static boolean equalNames(String a, String b) {
+        if (a == b)
+            return true;
+        if (a == null)
+            return false;
+        return toSkeleton(a).equals(toSkeleton(b));
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    // TODO optimize
+    public static int compareNames(String a, String b) {
+        if (a == b)
+            return 0;
+        if (a == null)
+            return -1;
+        if (b == null)
+            return 1;
+        return toSkeleton(a).compareTo(toSkeleton(b));
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    // TODO account for special names, tibetan, hangul
+    public static String toSkeleton(String source) {
+        if (source == null)
+            return null;
+        StringBuffer skeletonBuffer = new StringBuffer();
+        boolean gotOne = false;
+        // remove spaces, '_', '-'
+        // we can do this with char, since no surrogates are involved
+        for (int i = 0; i < source.length(); ++i) {
+            char ch = source.charAt(i);
+            if (i > 0 && (ch == '_' || ch == ' ' || ch == '-')) {
+                gotOne = true;
+            } else {
+                char ch2 = Character.toLowerCase(ch);
+                if (ch2 != ch) {
+                    gotOne = true;
+                    skeletonBuffer.append(ch2);
+                } else {
+                    skeletonBuffer.append(ch);
+                }
+            }
+        }
+        if (!gotOne)
+            return source; // avoid string creation
+        return skeletonBuffer.toString();
+    }
+
+    // get the name skeleton
+    public static String toNameSkeleton(String source) {
+        if (source == null)
+            return null;
+        StringBuffer result = new StringBuffer();
+        // remove spaces, medial '-'
+        // we can do this with char, since no surrogates are involved
+        for (int i = 0; i < source.length(); ++i) {
+            char ch = source.charAt(i);
+            if (('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'Z')
+                    || ch == '<' || ch == '>') {
+                result.append(ch);
+            } else if (ch == ' ') {
+                // don't copy ever
+            } else if (ch == '-') {
+                // only copy non-medials AND trailing O-E
+                if (0 == i
+                        || i == source.length() - 1
+                        || source.charAt(i - 1) == ' '
+                        || source.charAt(i + 1) == ' '
+                        || (i == source.length() - 2
+                                && source.charAt(i - 1) == 'O' && source
+                                .charAt(i + 1) == 'E')) {
+                    System.out.println("****** EXCEPTION " + source);
+                    result.append(ch);
+                }
+                // otherwise don't copy
+            } else {
+                throw new IllegalArgumentException("Illegal Name Char: U+"
+                        + Utility.hex(ch) + ", " + ch);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * These routines use the Java functions, because they only need to act on
+     * ASCII Changes space, - into _, inserts _ between lower and UPPER.
+     */
+    public static String regularize(String source, boolean titlecaseStart) {
+        if (source == null)
+            return source;
+        /*
+         * if (source.equals("noBreak")) { // HACK if (titlecaseStart) return
+         * "NoBreak"; return source; }
+         */
+        StringBuffer result = new StringBuffer();
+        int lastCat = -1;
+        boolean haveFirstCased = true;
+        for (int i = 0; i < source.length(); ++i) {
+            char c = source.charAt(i);
+            if (c == ' ' || c == '-' || c == '_') {
+                c = '_';
+                haveFirstCased = true;
+            }
+            if (c == '=')
+                haveFirstCased = true;
+            int cat = Character.getType(c);
+            if (lastCat == Character.LOWERCASE_LETTER
+                    && cat == Character.UPPERCASE_LETTER) {
+                result.append('_');
+            }
+            if (haveFirstCased
+                    && (cat == Character.LOWERCASE_LETTER
+                            || cat == Character.TITLECASE_LETTER || cat == Character.UPPERCASE_LETTER)) {
+                if (titlecaseStart) {
+                    c = Character.toUpperCase(c);
+                }
+                haveFirstCased = false;
+            }
+            result.append(c);
+            lastCat = cat;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility function for comparing codepoint to string without generating new
+     * string.
+     * 
+     * @param codepoint
+     * @param other
+     * @return true if the codepoint equals the string
+     */
+    public static final boolean equals(int codepoint, String other) {
+        if (other.length() == 1) {
+            return codepoint == other.charAt(0);
+        }
+        if (other.length() == 2) {
+            return other.equals(UTF16.valueOf(codepoint));
+        }
+        return false;
+    }
+
+    /**
+     * Utility that should be on UnicodeSet
+     * 
+     * @param source
+     * @param result
+     */
+    static public void addAll(UnicodeSetIterator source, UnicodeSet result) {
+        while (source.nextRange()) {
+            if (source.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.add(source.string);
+            } else {
+                result.add(source.codepoint, source.codepointEnd);
+            }
+        }
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addAllUnique(Collection source, Collection result) {
+        for (Iterator it = source.iterator(); it.hasNext();) {
+            addUnique(it.next(), result);
+        }
+        return result;
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addAllUnique(Object[] source, Collection result) {
+        for (int i = 0; i < source.length; ++i) {
+            addUnique(source[i], result);
+        }
+        return result;
+    }
+
+    static public class Factory {
+        static boolean DEBUG = false;
+
+        Map canonicalNames = new TreeMap();
+
+        Map skeletonNames = new TreeMap();
+
+        Map propertyCache = new HashMap(1);
+
+        public final Factory add(UnicodeProperty sp) {
+            canonicalNames.put(sp.getName(), sp);
+            List c = sp.getNameAliases(new ArrayList(1));
+            Iterator it = c.iterator();
+            while (it.hasNext()) {
+                skeletonNames.put(toSkeleton((String) it.next()), sp);
+            }
+            return this;
+        }
+
+        public final UnicodeProperty getProperty(String propertyAlias) {
+            return (UnicodeProperty) skeletonNames
+                    .get(toSkeleton(propertyAlias));
+        }
+
+        public final List getAvailableNames() {
+            return getAvailableNames(null);
+        }
+
+        public final List getAvailableNames(List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = canonicalNames.keySet().iterator();
+            while (it.hasNext()) {
+                addUnique(it.next(), result);
+            }
+            return result;
+        }
+
+        public final List getAvailableNames(int propertyTypeMask) {
+            return getAvailableNames(propertyTypeMask, null);
+        }
+
+        public final List getAvailableNames(int propertyTypeMask, List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = canonicalNames.keySet().iterator();
+            while (it.hasNext()) {
+                String item = (String) it.next();
+                UnicodeProperty property = getProperty(item);
+                if (DEBUG)
+                    System.out.println("Properties: " + item + ","
+                            + property.getType());
+                if (!property.isType(propertyTypeMask)) {
+                    // System.out.println("Masking: " + property.getType() + ","
+                    // + propertyTypeMask);
+                    continue;
+                }
+                addUnique(property.getName(), result);
+            }
+            return result;
+        }
+
+        InversePatternMatcher inverseMatcher = new InversePatternMatcher();
+
+        /**
+         * Format is: propname ('=' | '!=') propvalue ( '|' propValue )*
+         */
+        public final UnicodeSet getSet(String propAndValue,
+                PatternMatcher matcher, UnicodeSet result) {
+            int equalPos = propAndValue.indexOf('=');
+            String prop = propAndValue.substring(0, equalPos);
+            String value = propAndValue.substring(equalPos + 1);
+            boolean negative = false;
+            if (prop.endsWith("!")) {
+                prop = prop.substring(0, prop.length() - 1);
+                negative = true;
+            }
+            prop = prop.trim();
+            UnicodeProperty up = getProperty(prop);
+            if (matcher == null) {
+                matcher = new SimpleMatcher(value, up
+                        .isType(STRING_OR_MISC_MASK) ? null
+                        : PROPERTY_COMPARATOR);
+            }
+            if (negative) {
+                inverseMatcher.set(matcher);
+                matcher = inverseMatcher;
+            }
+            return up.getSet(matcher.set(value), result);
+        }
+
+        public final UnicodeSet getSet(String propAndValue,
+                PatternMatcher matcher) {
+            return getSet(propAndValue, matcher, null);
+        }
+
+        public final UnicodeSet getSet(String propAndValue) {
+            return getSet(propAndValue, null, null);
+        }
+
+        public final SymbolTable getSymbolTable(String prefix) {
+            return new PropertySymbolTable(prefix);
+        }
+
+        private class MyXSymbolTable extends UnicodeSet.XSymbolTable {
+            public boolean applyPropertyAlias(String propertyName,
+                    String propertyValue, UnicodeSet result) {
+                if (false)
+                    System.out.println(propertyName + "=" + propertyValue);
+                UnicodeProperty prop = getProperty(propertyName);
+                if (prop == null)
+                    return false;
+                result.clear();
+                UnicodeSet x = prop.getSet(propertyValue, result);
+                return x.size() != 0;
+            }
+        }
+
+        public final UnicodeSet.XSymbolTable getXSymbolTable() {
+            return new MyXSymbolTable();
+        }
+
+        private class PropertySymbolTable implements SymbolTable {
+            static final boolean DEBUG = false;
+
+            private String prefix;
+
+            RegexMatcher regexMatcher = new RegexMatcher();
+
+            PropertySymbolTable(String prefix) {
+                this.prefix = prefix;
+            }
+
+            public char[] lookup(String s) {
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Looking up " + s);
+                // ensure, again, that prefix matches
+                int start = prefix.length();
+                if (!s.regionMatches(true, 0, prefix, 0, start))
+                    return null;
+
+                int pos = s.indexOf(':', start);
+                if (pos < 0) { // should never happen
+                    throw new IllegalArgumentException(
+                            "Internal Error: missing =: " + s + "\r\n");
+                }
+                UnicodeProperty prop = getProperty(s.substring(start, pos));
+                if (prop == null) {
+                    throw new IllegalArgumentException("Invalid Property in: "
+                            + s + "\r\nUse " + showSet(getAvailableNames()));
+                }
+                String value = s.substring(pos + 1);
+                UnicodeSet set;
+                if (value.startsWith("\u00AB")) { // regex!
+                    set = prop.getSet(regexMatcher.set(value.substring(1, value
+                            .length() - 1)));
+                } else {
+                    set = prop.getSet(value);
+                }
+                if (set.size() == 0) {
+                    throw new IllegalArgumentException(
+                            "Empty Property-Value in: " + s + "\r\nUse "
+                                    + showSet(prop.getAvailableValues()));
+                }
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Returning "
+                            + set.toPattern(true));
+                return set.toPattern(true).toCharArray(); // really ugly
+            }
+
+            private String showSet(List list) {
+                StringBuffer result = new StringBuffer("[");
+                boolean first = true;
+                for (Iterator it = list.iterator(); it.hasNext();) {
+                    if (!first)
+                        result.append(", ");
+                    else
+                        first = false;
+                    result.append(it.next().toString());
+                }
+                result.append("]");
+                return result.toString();
+            }
+
+            public UnicodeMatcher lookupMatcher(int ch) {
+                return null;
+            }
+
+            public String parseReference(String text, ParsePosition pos,
+                    int limit) {
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Parsing <"
+                            + text.substring(pos.getIndex(), limit) + ">");
+                int start = pos.getIndex();
+                // ensure that it starts with 'prefix'
+                if (!text
+                        .regionMatches(true, start, prefix, 0, prefix.length()))
+                    return null;
+                start += prefix.length();
+                // now see if it is of the form identifier:identifier
+                int i = getIdentifier(text, start, limit);
+                if (i == start)
+                    return null;
+                String prop = text.substring(start, i);
+                String value = "true";
+                if (i < limit) {
+                    if (text.charAt(i) == ':') {
+                        int j;
+                        if (text.charAt(i + 1) == '\u00AB') { // regular
+                                                                // expression
+                            j = text.indexOf('\u00BB', i + 2) + 1; // include
+                                                                    // last
+                                                                    // character
+                            if (j <= 0)
+                                return null;
+                        } else {
+                            j = getIdentifier(text, i + 1, limit);
+                        }
+                        value = text.substring(i + 1, j);
+                        i = j;
+                    }
+                }
+                pos.setIndex(i);
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Parsed <" + prop
+                            + ">=<" + value + ">");
+                return prefix + prop + ":" + value;
+            }
+
+            private int getIdentifier(String text, int start, int limit) {
+                if (DEBUG)
+                    System.out.println("\tGetID <"
+                            + text.substring(start, limit) + ">");
+                int cp = 0;
+                int i;
+                for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                    cp = UTF16.charAt(text, i);
+                    if (!com.ibm.icu.lang.UCharacter
+                            .isUnicodeIdentifierPart(cp)
+                            && cp != '.') {
+                        break;
+                    }
+                }
+                if (DEBUG)
+                    System.out.println("\tGotID <" + text.substring(start, i)
+                            + ">");
+                return i;
+            }
+        }
+    }
+
+    public static class FilteredProperty extends UnicodeProperty {
+        private UnicodeProperty property;
+
+        protected StringFilter filter;
+
+        protected UnicodeSetIterator matchIterator = new UnicodeSetIterator(
+                new UnicodeSet(0, 0x10FFFF));
+
+        protected HashMap backmap;
+
+        boolean allowValueAliasCollisions = false;
+
+        public FilteredProperty(UnicodeProperty property, StringFilter filter) {
+            this.property = property;
+            this.filter = filter;
+        }
+
+        public StringFilter getFilter() {
+            return filter;
+        }
+
+        public UnicodeProperty setFilter(StringFilter filter) {
+            this.filter = filter;
+            return this;
+        }
+
+        List temp = new ArrayList(1);
+
+        public List _getAvailableValues(List result) {
+            temp.clear();
+            return filter.addUnique(property.getAvailableValues(temp), result);
+        }
+
+        public List _getNameAliases(List result) {
+            temp.clear();
+            return filter.addUnique(property.getNameAliases(temp), result);
+        }
+
+        public String _getValue(int codepoint) {
+            return filter.remap(property.getValue(codepoint));
+        }
+
+        public List _getValueAliases(String valueAlias, List result) {
+            if (backmap == null) {
+                backmap = new HashMap(1);
+                temp.clear();
+                Iterator it = property.getAvailableValues(temp).iterator();
+                while (it.hasNext()) {
+                    String item = (String) it.next();
+                    String mappedItem = filter.remap(item);
+                    if (backmap.get(mappedItem) != null
+                            && !allowValueAliasCollisions) {
+                        throw new IllegalArgumentException(
+                                "Filter makes values collide! " + item + ", "
+                                        + mappedItem);
+                    }
+                    backmap.put(mappedItem, item);
+                }
+            }
+            valueAlias = (String) backmap.get(valueAlias);
+            temp.clear();
+            return filter.addUnique(property.getValueAliases(valueAlias, temp),
+                    result);
+        }
+
+        public String _getVersion() {
+            return property.getVersion();
+        }
+
+        public boolean isAllowValueAliasCollisions() {
+            return allowValueAliasCollisions;
+        }
+
+        public FilteredProperty setAllowValueAliasCollisions(boolean b) {
+            allowValueAliasCollisions = b;
+            return this;
+        }
+
+    }
+
+    public static abstract class StringFilter implements Cloneable {
+        public abstract String remap(String original);
+
+        public final List addUnique(Collection source, List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = source.iterator();
+            while (it.hasNext()) {
+                UnicodeProperty.addUnique(remap((String) it.next()), result);
+            }
+            return result;
+        }
+        /*
+         * public Object clone() { try { return super.clone(); } catch
+         * (CloneNotSupportedException e) { throw new
+         * IllegalStateException("Should never happen."); } }
+         */
+    }
+
+    public static class MapFilter extends StringFilter {
+        private Map valueMap;
+
+        public MapFilter(Map valueMap) {
+            this.valueMap = valueMap;
+        }
+
+        public String remap(String original) {
+            Object changed = valueMap.get(original);
+            return changed == null ? original : (String) changed;
+        }
+
+        public Map getMap() {
+            return valueMap;
+        }
+    }
+
+    public interface PatternMatcher extends ObjectMatcher {
+        public PatternMatcher set(String pattern);
+    }
+
+    public static class InversePatternMatcher extends InverseMatcher implements
+            PatternMatcher {
+        PatternMatcher other;
+
+        public PatternMatcher set(PatternMatcher toInverse) {
+            other = toInverse;
+            return this;
+        }
+
+        public boolean matches(Object value) {
+            return !other.matches(value);
+        }
+
+        public PatternMatcher set(String pattern) {
+            other.set(pattern);
+            return this;
+        }
+    }
+
+    public static class SimpleMatcher implements PatternMatcher {
+        Comparator comparator;
+
+        String pattern;
+
+        public SimpleMatcher(String pattern, Comparator comparator) {
+            this.comparator = comparator;
+            this.pattern = pattern;
+        }
+
+        public boolean matches(Object value) {
+            if (comparator == null)
+                return pattern.equals(value);
+            return comparator.compare(pattern, value) == 0;
+        }
+
+        public PatternMatcher set(String pattern) {
+            this.pattern = pattern;
+            return this;
+        }
+    }
+
+    public static class RegexMatcher implements UnicodeProperty.PatternMatcher {
+        private java.util.regex.Matcher matcher;
+
+        public UnicodeProperty.PatternMatcher set(String pattern) {
+            matcher = Pattern.compile(pattern).matcher("");
+            return this;
+        }
+
+        public boolean matches(Object value) {
+            matcher.reset(value.toString());
+            return matcher.matches();
+        }
+    }
+
+    public static abstract class BaseProperty extends UnicodeProperty {
+        protected List propertyAliases = new ArrayList(1);
+
+        protected Map toValueAliases;
+
+        protected String version;
+
+        public BaseProperty setMain(String alias, String shortAlias,
+                int propertyType, String version) {
+            setName(alias);
+            setType(propertyType);
+            propertyAliases.add(shortAlias);
+            propertyAliases.add(alias);
+            this.version = version;
+            return this;
+        }
+
+        public String _getVersion() {
+            return version;
+        }
+
+        public List _getNameAliases(List result) {
+            addAllUnique(propertyAliases, result);
+            return result;
+        }
+
+        public BaseProperty addValueAliases(String[][] valueAndAlternates,
+                boolean errorIfCant) {
+            if (toValueAliases == null)
+                _fixValueAliases();
+            for (int i = 0; i < valueAndAlternates.length; ++i) {
+                for (int j = 1; j < valueAndAlternates[0].length; ++j) {
+                    addValueAlias(valueAndAlternates[i][0],
+                            valueAndAlternates[i][j], errorIfCant);
+                }
+            }
+            return this;
+        }
+
+        public void addValueAlias(String value, String valueAlias,
+                boolean errorIfCant) {
+            List result = (List) toValueAliases.get(value);
+            if (result == null && !errorIfCant)
+                return;
+            addUnique(value, result);
+            addUnique(valueAlias, result);
+        }
+
+        protected List _getValueAliases(String valueAlias, List result) {
+            if (toValueAliases == null)
+                _fixValueAliases();
+            List a = (List) toValueAliases.get(valueAlias);
+            if (a != null)
+                addAllUnique(a, result);
+            return result;
+        }
+
+        protected void _fixValueAliases() {
+            if (toValueAliases == null)
+                toValueAliases = new HashMap(1);
+            for (Iterator it = getAvailableValues().iterator(); it.hasNext();) {
+                Object value = it.next();
+                _ensureValueInAliases(value);
+            }
+        }
+
+        protected void _ensureValueInAliases(Object value) {
+            List result = (List) toValueAliases.get(value);
+            if (result == null)
+                toValueAliases.put(value, result = new ArrayList(1));
+            addUnique(value, result);
+        }
+
+        public BaseProperty swapFirst2ValueAliases() {
+            for (Iterator it = toValueAliases.keySet().iterator(); it.hasNext();) {
+                List list = (List) toValueAliases.get(it.next());
+                if (list.size() < 2)
+                    continue;
+                Object first = list.get(0);
+                list.set(0, list.get(1));
+                list.set(1, first);
+            }
+            return this;
+        }
+
+        /**
+         * @param string
+         * @return
+         */
+        public UnicodeProperty addName(String string) {
+            throw new UnsupportedOperationException();
+        }
+
+    }
+
+    public static abstract class SimpleProperty extends BaseProperty {
+        List values;
+
+        public UnicodeProperty addName(String alias) {
+            propertyAliases.add(alias);
+            return this;
+        }
+
+        public SimpleProperty setValues(String valueAlias) {
+            _addToValues(valueAlias, null);
+            return this;
+        }
+
+        public SimpleProperty setValues(String[] valueAliases,
+                String[] alternateValueAliases) {
+            for (int i = 0; i < valueAliases.length; ++i) {
+                if (valueAliases[i].equals(UNUSED))
+                    continue;
+                _addToValues(
+                        valueAliases[i],
+                        alternateValueAliases != null ? alternateValueAliases[i]
+                                : null);
+            }
+            return this;
+        }
+
+        public SimpleProperty setValues(List valueAliases) {
+            this.values = new ArrayList(valueAliases);
+            for (Iterator it = this.values.iterator(); it.hasNext();) {
+                _addToValues((String) it.next(), null);
+            }
+            return this;
+        }
+
+        public List _getAvailableValues(List result) {
+            if (values == null)
+                _fillValues();
+            result.addAll(values);
+            return result;
+        }
+
+        protected void _fillValues() {
+            List newvalues = (List) getUnicodeMap_internal()
+                    .getAvailableValues(new ArrayList());
+            for (Iterator it = newvalues.iterator(); it.hasNext();) {
+                _addToValues((String) it.next(), null);
+            }
+        }
+
+        private void _addToValues(String item, String alias) {
+            if (values == null)
+                values = new ArrayList(1);
+            if (toValueAliases == null)
+                _fixValueAliases();
+            addUnique(item, values);
+            _ensureValueInAliases(item);
+            addValueAlias(item, alias, true);
+        }
+        /*        public String _getVersion() {
+         return version;
+         }
+         */
+    }
+
+    public static class UnicodeMapProperty extends BaseProperty {
+        /*
+         * Example of usage:
+         * new UnicodeProperty.UnicodeMapProperty() {
+         {
+         unicodeMap = new UnicodeMap();
+         unicodeMap.setErrorOnReset(true);
+         unicodeMap.put(0xD, "CR");
+         unicodeMap.put(0xA, "LF");
+         UnicodeProperty cat = getProperty("General_Category");
+         UnicodeSet temp = cat.getSet("Line_Separator")
+         .addAll(cat.getSet("Paragraph_Separator"))
+         .addAll(cat.getSet("Control"))
+         .addAll(cat.getSet("Format"))
+         .remove(0xD).remove(0xA).remove(0x200C).remove(0x200D);
+         unicodeMap.putAll(temp, "Control");
+         UnicodeSet graphemeExtend = getProperty("Grapheme_Extend").getSet("true");
+         unicodeMap.putAll(graphemeExtend,"Extend");
+         UnicodeProperty hangul = getProperty("Hangul_Syllable_Type");
+         unicodeMap.putAll(hangul.getSet("L"),"L");
+         unicodeMap.putAll(hangul.getSet("V"),"V");
+         unicodeMap.putAll(hangul.getSet("T"),"T");
+         unicodeMap.putAll(hangul.getSet("LV"),"LV");
+         unicodeMap.putAll(hangul.getSet("LVT"),"LVT");
+         unicodeMap.setMissing("Other");
+         }
+         }.setMain("Grapheme_Cluster_Break", "GCB", UnicodeProperty.ENUMERATED, version)
+         */
+        protected UnicodeMap unicodeMap;
+
+        public UnicodeMapProperty set(UnicodeMap map) {
+            unicodeMap = map;
+            return this;
+        }
+
+        protected String _getValue(int codepoint) {
+            return (String) unicodeMap.getValue(codepoint);
+        }
+
+        /* protected List _getValueAliases(String valueAlias, List result) {
+         if (!unicodeMap.getAvailableValues().contains(valueAlias)) return result;
+         result.add(valueAlias);
+         return result; // no other aliases
+         }
+         */protected List _getAvailableValues(List result) {
+            return (List) unicodeMap.getAvailableValues(result);
+        }
+    }
+}
+//#endif
+
diff --git a/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java b/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java
new file mode 100644
index 0000000..2b4f0cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java
@@ -0,0 +1,321 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Set;
+import java.util.Locale;
+import java.util.Map;
+import java.util.List;
+import java.util.Arrays;
+
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+
+/**
+ * Provides a general interface for Unicode Properties, and
+ * extracting sets based on those values.
+ * @author Davis
+ */
+public abstract class UnicodePropertySource implements Cloneable {
+    
+    protected String propertyAlias;
+    protected int m_nameChoice = UProperty.NameChoice.LONG;
+    protected StringFilter filter = new StringFilter();
+    protected UnicodeSetIterator matchIterator = new UnicodeSetIterator(new UnicodeSet(0,0x10FFFF));
+    
+    abstract public String getPropertyValue(int codepoint);
+    abstract public Set getAvailablePropertyAliases(Set result);
+    abstract public Set getAvailablePropertyValueAliases(Set result);
+
+    abstract public String getPropertyAlias(int nameChoice);
+    abstract public String getPropertyValueAlias(String valueAlias, int nameChoice);
+    
+    /**
+     * Subclasses should override
+     */
+    public Object clone() {
+        try {
+            UnicodePropertySource result = (UnicodePropertySource)super.clone();
+            result.filter = (StringFilter)filter.clone();
+            return result;             
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException("Should never happen.");
+        }
+    }
+    
+    public UnicodePropertySource setPropertyAlias(String propertyAlias) {
+        this.propertyAlias = propertyAlias;
+        return this;
+    }
+    
+    public String getPropertyAlias() {
+        return propertyAlias;
+    }
+    
+    public static final boolean equals(int codepoint, String other) {
+        if (other.length() == 1) {
+            return codepoint == other.charAt(0);
+        }
+        return other.equals(UTF16.valueOf(codepoint));
+    }
+    
+    public UnicodeSet getPropertySet(boolean charEqualsValue, UnicodeSet result){
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (equals(matchIterator.codepoint, value) == charEqualsValue) {
+                result.add(matchIterator.codepoint);
+            }
+        }
+        return result;
+    }
+
+    public UnicodeSet getPropertySet(String propertyValue, UnicodeSet result){
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (propertyValue.equals(value)) {
+                result.add(matchIterator.codepoint);
+            } 
+        }
+        return result;
+    }
+
+    public UnicodeSet getPropertySet(Matcher matcher, UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (value == null)
+                continue;
+            if (matcher.matches(value)) {
+                result.add(matchIterator.codepoint);
+            }
+        }
+        return result;
+    }
+    
+    public interface Matcher {
+        public boolean matches(String value);
+    }
+    
+    public int getNameChoice() {
+        return m_nameChoice;
+    }
+
+    public UnicodePropertySource setNameChoice(int choice) {
+        m_nameChoice = choice;
+        return this;
+    }
+    
+    public static class StringFilter implements Cloneable {
+        public String remap(String original) {
+            return original;
+        }
+        public Object clone() {
+            try {
+                return super.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException("Should never happen.");
+            }
+        }
+    }
+    
+    public static class MapFilter extends StringFilter {
+        Map valueMap;
+        public String remap(String original) {
+            Object changed = valueMap.get(original);
+            return changed == null ? original : (String) changed;
+        }
+        public Map getMap() {
+            return valueMap;
+        }
+
+        public MapFilter setMap(Map map) {
+            valueMap = map;
+            return this;
+        }
+    }
+
+    static public class ICU extends UnicodePropertySource {
+        protected int propEnum = Integer.MIN_VALUE;
+        {
+            matchIterator = new UnicodeSetIterator(
+                new UnicodeSet("[^[:Cn:]-[:Default_Ignorable_Code_Point:]]"));
+        }
+        
+        public UnicodePropertySource setPropertyAlias(String propertyAlias) {
+            super.setPropertyAlias(propertyAlias);
+            int extraPosition = Extras.indexOf(propertyAlias);
+            if (extraPosition >= 0) {
+                propEnum = EXTRA_START + extraPosition;
+            } else {
+                propEnum = UCharacter.getPropertyEnum(propertyAlias);
+            }
+            return this;
+        }
+
+        public String getPropertyValue(int codePoint) {
+            if (propEnum < UProperty.INT_LIMIT) {
+                int enumValue = UCharacter.getIntPropertyValue(codePoint, propEnum);
+                return UCharacter.getPropertyValueName(propEnum,enumValue, (int)m_nameChoice);
+            } else if (propEnum < UProperty.DOUBLE_LIMIT) {
+                return Double.toString(UCharacter.getUnicodeNumericValue(codePoint));
+                // TODO: Fix HACK -- API deficient
+            } else switch(propEnum) {
+                case UProperty.AGE: return UCharacter.getAge(codePoint).toString();
+                case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(UCharacter.getMirror(codePoint));
+                case UProperty.CASE_FOLDING: return UCharacter.foldCase(UTF16.valueOf(codePoint),true);
+                case UProperty.ISO_COMMENT: return UCharacter.getISOComment(codePoint);
+                case UProperty.LOWERCASE_MAPPING: return UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                case UProperty.NAME: return UCharacter.getName(codePoint);
+                case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(UCharacter.foldCase(codePoint,true));
+                case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(UCharacter.toLowerCase(codePoint));
+                case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(UCharacter.toTitleCase(codePoint));
+                case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(UCharacter.toUpperCase(codePoint));
+                case UProperty.TITLECASE_MAPPING: return UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null);
+                case UProperty.UNICODE_1_NAME: return UCharacter.getName1_0(codePoint);
+                case UProperty.UPPERCASE_MAPPING: return UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                case NFC: return Normalizer.normalize(codePoint, Normalizer.NFC);
+                case NFD: return Normalizer.normalize(codePoint, Normalizer.NFD);
+                case NFKC: return Normalizer.normalize(codePoint, Normalizer.NFKC);
+                case NFKD: return Normalizer.normalize(codePoint, Normalizer.NFKD);
+            }
+            return null;
+        }
+        
+        static final List Extras = Arrays.asList(new String[] {
+            "NFC", "NFD", "NFKC", "NKFD"
+        });
+        
+        static final int 
+            NFC  = 0x8000,
+            NFD  = 0x8001,
+            NFKC = 0x8002,
+            NFKD = 0x8003,
+            EXTRA_START = NFC,
+            EXTRA_LIMIT = NFKD+1;
+
+        static final int[][] ranges = {
+            {UProperty.BINARY_START,    UProperty.BINARY_LIMIT},
+            {UProperty.INT_START,       UProperty.INT_LIMIT},
+            {UProperty.DOUBLE_START,    UProperty.DOUBLE_LIMIT},
+            {UProperty.STRING_START,    UProperty.STRING_LIMIT},
+        };
+
+        public Set getAvailablePropertyAliases(Set result) {
+            for (int i = 0; i < ranges.length; ++i) {
+                for (int j = ranges[i][0]; j < ranges[i][1]; ++j) {
+                    result.add(UCharacter.getPropertyName(j, m_nameChoice));
+                }
+            }
+            result.addAll(Extras);
+            return result;
+        }
+
+        public Set getAvailablePropertyValueAliases(Set result) {
+            if (propEnum < UProperty.INT_LIMIT) {
+                int start = UCharacter.getIntPropertyMinValue(propEnum);
+                int end = UCharacter.getIntPropertyMaxValue(propEnum);
+                for (int i = start; i <= end; ++i) {
+                    result.add(getFixedValueAlias(null, i,m_nameChoice));
+                }
+            } else {
+                result.add(getFixedValueAlias(null, -1,m_nameChoice));
+            }
+            return result;
+        }
+        
+        /**
+         * @param valueAlias null if unused.
+         * @param valueEnum -1 if unused
+         * @param nameChoice
+         * @return the alias
+         */
+        private String getFixedValueAlias(String valueAlias, int valueEnum, int nameChoice) {
+            if (propEnum >= UProperty.STRING_START) {
+                return "<string>";
+            } else if (propEnum >= UProperty.DOUBLE_START) {
+                return "<double>";
+            }
+            if (valueAlias != null && !valueAlias.equals("<integer>")) {
+                valueEnum = UCharacter.getPropertyValueEnum(propEnum,valueAlias);
+            }
+            String result = fixedGetPropertyValueName(propEnum, valueEnum, nameChoice);
+            if (result != null) return result;
+            // try other namechoice
+            result = fixedGetPropertyValueName(propEnum,valueEnum,
+                nameChoice == UProperty.NameChoice.LONG ? UProperty.NameChoice.SHORT : UProperty.NameChoice.LONG);
+            if (result != null) return result;
+            return "<integer>";
+        }
+
+        private static String fixedGetPropertyValueName(int propEnum, int valueEnum, int nameChoice) {
+            try {
+                return UCharacter.getPropertyValueName(propEnum,valueEnum,nameChoice);
+            } catch (Exception e) {
+                return null;
+            }
+        }
+
+        public String getPropertyAlias(int nameChoice) {
+            if (propEnum < EXTRA_START) {
+                return UCharacter.getPropertyName(propEnum, nameChoice);
+            }
+            return (String)Extras.get(propEnum-EXTRA_START);
+        }
+
+        public String getPropertyValueAlias(String valueAlias, int nameChoice) {
+            return getFixedValueAlias(valueAlias, -1, nameChoice);
+        }
+    }
+    // TODO file bug on getPropertyValueName for Canonical_Combining_Class
+
+    public StringFilter getFilter() {
+        return filter;
+    }
+
+
+    public UnicodePropertySource setFilter(StringFilter filter) {
+        this.filter = filter;
+        return this;
+    }
+
+    /**
+     */
+    static public void addAll(UnicodeSetIterator source, UnicodeSet result) {
+        while (source.nextRange()) {
+            if (source.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.add(source.string);
+            } else {
+                result.add(source.codepoint, source.codepointEnd);
+            }
+        }
+    }
+    
+    public UnicodeSet getMatchSet(UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        addAll(matchIterator, result);
+        return result;
+    }
+
+    /**
+     * @param set
+     */
+    public void setMatchSet(UnicodeSet set) {
+        matchIterator = new UnicodeSetIterator(set);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/UtilityTest.java b/src/com/ibm/icu/dev/test/util/UtilityTest.java
new file mode 100644
index 0000000..61e1c9a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UtilityTest.java
@@ -0,0 +1,233 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2003-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: March 8 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ByteArrayWrapper;
+import com.ibm.icu.util.CaseInsensitiveString;
+
+/**
+ * @test
+ * @summary Test of internal Utility class
+ */
+public class UtilityTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new UtilityTest().run(args);
+    }
+
+    public void TestUnescape() {
+        final String input =
+            "Sch\\u00f6nes Auto: \\u20ac 11240.\\fPrivates Zeichen: \\U00102345\\e\\cC\\n \\x1b\\x{263a}";
+
+        final String expect = 
+            "Sch\u00F6nes Auto: \u20AC 11240.\u000CPrivates Zeichen: \uDBC8\uDF45\u001B\u0003\012 \u001B\u263A";
+
+        String result = Utility.unescape(input);
+        if (!result.equals(expect)) {
+            errln("FAIL: Utility.unescape() returned " + result + ", exp. " + expect);
+        }
+    }
+    
+    public void TestFormat()
+    {
+        String data[] = {
+            "the quick brown fox jumps over the lazy dog",
+            // result of this conversion will exceed the original length and
+            // cause a newline to be inserted
+            "testing space , quotations \"",
+            "testing weird supplementary characters \ud800\udc00",
+            "testing control characters \u0001 and line breaking!! \n are we done yet?"
+        };
+        String result[] = {
+            "        \"the quick brown fox jumps over the lazy dog\"",
+            "        \"testing space , quotations \\042\"",
+            "        \"testing weird supplementary characters \\uD800\\uDC00\"",
+            "        \"testing control characters \\001 and line breaking!! \\n are we done ye\"+"
+                     + Utility.LINE_SEPARATOR + "        \"t?\""
+        };
+        String result1[] = {
+            "\"the quick brown fox jumps over the lazy dog\"",
+            "\"testing space , quotations \\042\"",
+            "\"testing weird supplementary characters \\uD800\\uDC00\"",
+            "\"testing control characters \\001 and line breaking!! \\n are we done yet?\""
+        };
+        
+        for (int i = 0; i < data.length; i ++) {
+            assertEquals("formatForSource(\"" + data[i] + "\")",
+                         result[i], Utility.formatForSource(data[i]));
+        }
+        for (int i = 0; i < data.length; i ++) {
+            assertEquals("format1ForSource(\"" + data[i] + "\")",
+                         result1[i], Utility.format1ForSource(data[i]));
+        }
+    }
+    
+    public void TestHighBit()
+    {
+        int data[] = {-1, -1276, 0, 0xFFFF, 0x1234};
+        byte result[] = {-1, -1, -1, 15, 12};
+        for (int i = 0; i < data.length; i ++) {
+            if (Utility.highBit(data[i]) != result[i]) {
+                errln("Fail: Highest bit of \\u" 
+                      + Integer.toHexString(data[i]) + " should be "
+                      + result[i]);
+            }
+        }
+    }
+    
+    public void TestCompareUnsigned()
+    {
+        int data[] = {0, 1, 0x8fffffff, -1, Integer.MAX_VALUE, 
+                      Integer.MIN_VALUE, 2342423, -2342423};
+        for (int i = 0; i < data.length; i ++) {
+            for (int j = 0; j < data.length; j ++) {
+                if (Utility.compareUnsigned(data[i], data[j]) 
+                    != compareLongUnsigned(data[i], data[j])) {
+                    errln("Fail: Unsigned comparison failed with " + data[i] 
+                          + " " + data[i + 1]);
+                }
+            }
+        }
+    }
+
+    // This test indends to test the utility class ByteArrayWrapper
+    // Seems that the class is somewhat incomplete, for example
+    //      - getHashCode(Object) is weird
+    //      - PatternMatch feature(search part of array within the whole one) lacks
+    public void TestByteArrayWrapper()
+    {
+        byte[] ba = {0x00, 0x01, 0x02};
+        byte[] bb = {0x00, 0x01, 0x02, -1};
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        com.ibm.icu.impl.ByteBuffer buffer = com.ibm.icu.impl.ByteBuffer.wrap(ba);
+//#else
+        java.nio.ByteBuffer buffer = java.nio.ByteBuffer.wrap(ba);
+//#endif
+        ByteArrayWrapper x = new ByteArrayWrapper(buffer);
+        
+        ByteArrayWrapper y = new ByteArrayWrapper(ba, 3);
+        ByteArrayWrapper z = new ByteArrayWrapper(bb, 3);
+
+        
+        if (!y.toString().equals("00 01 02")){
+            errln("FAIL: test toString : Failed!");
+        }
+        
+        // test equality
+        if (!x.equals(y) || !x.equals(z))
+            errln("FAIL: test (operator ==): Failed!");
+        if (x.hashCode()!=y.hashCode())
+            errln("FAIL: identical objects have different hash codes.");
+
+        // test non-equality
+        y = new ByteArrayWrapper(bb, 4);
+        if (x.equals(y))
+            errln("FAIL: test (operator !=): Failed!");
+
+        // test sign of unequal comparison
+        if ((x.compareTo(y) > 0) != (y.compareTo(x) < 0)) {
+            errln("FAIL: comparisons not opposite sign");
+        }
+    }
+
+    private int compareLongUnsigned(int x, int y)
+    {
+        long x1 = x & 0xFFFFFFFFl;
+        long y1 = y & 0xFFFFFFFFl;
+        if (x1 < y1) {
+            return -1;
+        }
+        else if (x1 > y1) {
+            return 1;
+        }
+        return 0;
+    }
+    public void TestUnicodeSet(){
+        String[] array = new String[]{"a", "b", "c", "{de}"};
+        List list = Arrays.asList(array);
+        Set aset = new HashSet(list);
+        logln(" *** The source set's size is: " + aset.size());
+    //The size reads 4
+        UnicodeSet set = new UnicodeSet();
+        set.clear();
+        set.addAll(aset);
+        logln(" *** After addAll, the UnicodeSet size is: " + set.size());
+    //The size should also read 4, but 0 is seen instead
+
+    }
+
+    public void TestAssert(){
+        try {
+            Assert.assrt(false);
+            errln("FAIL: Assert.assrt(false)");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("assert failed")) {
+                logln("Assert.assrt(false) works");
+            }
+            else {
+                errln("FAIL: Assert.assrt(false) returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.assrt("Assert message", false);
+            errln("FAIL: Assert.assrt(false)");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("assert 'Assert message' failed")) {
+                logln("Assert.assrt(false) works");
+            }
+            else {
+                errln("FAIL: Assert.assrt(false) returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.fail("Assert message");
+            errln("FAIL: Assert.fail");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("failure 'Assert message'")) {
+                logln("Assert.fail works");
+            }
+            else {
+                errln("FAIL: Assert.fail returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.fail(new InvalidFormatException());
+            errln("FAIL: Assert.fail with an exception");
+        }
+        catch (IllegalStateException e) {
+            logln("Assert.fail works");
+        }
+    }
+    
+    public void TestCaseInsensitiveString() {
+        CaseInsensitiveString str1 = new CaseInsensitiveString("ThIs is A tEst");
+        CaseInsensitiveString str2 = new CaseInsensitiveString("This IS a test");
+        if (!str1.equals(str2)
+            || !str1.toString().equals(str1.getString())
+            || str1.toString().equals(str2.toString()))
+        {
+            errln("FAIL: str1("+str1+") != str2("+str2+")");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/VariableReplacer.java b/src/com/ibm/icu/dev/test/util/VariableReplacer.java
new file mode 100644
index 0000000..a3c2558
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/VariableReplacer.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class VariableReplacer {
+    // simple implementation for now
+    private Map m = new TreeMap(Collections.reverseOrder());
+
+    // TODO - fix to do streams also, clean up implementation
+
+    public VariableReplacer add(String variable, String value) {
+        m.put(variable, value);
+        return this;
+    }
+    public String replace(String source) {
+        String oldSource;
+        do {
+            oldSource = source;
+            for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+                String variable = (String) it.next();
+                String value = (String) m.get(variable);
+                source = replaceAll(source, variable, value);
+            }
+        } while (!source.equals(oldSource));
+        return source;
+    }
+    public String replaceAll(String source, String key, String value) {
+        while (true) {
+            int pos = source.indexOf(key);
+            if (pos < 0) return source;
+            source = source.substring(0,pos) + value + source.substring(pos+key.length());
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
new file mode 100644
index 0000000..9c0336c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
@@ -0,0 +1,360 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.util;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+* Testing class for VersionInfo
+* @author Syn Wee Quek
+* @since release 2.1 March 01 2002
+*/
+public final class VersionInfoTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public VersionInfoTest()
+    {
+    }
+
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        VersionInfoTest test = new VersionInfoTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing VersionInfo");
+        }
+    }
+    
+    /**
+     * Test that the instantiation works
+     */
+    public void TestInstance()
+    {
+        for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) {
+            try {
+                VersionInfo.getInstance(INSTANCE_INVALID_STRING_[i]);
+                errln("\"" + INSTANCE_INVALID_STRING_[i] + 
+                      "\" should produce an exception");
+            } catch (RuntimeException e) {
+                logln("PASS: \"" + INSTANCE_INVALID_STRING_[i] + 
+                      "\" failed as expected");
+            }
+        }
+        for (int i = 0; i < INSTANCE_VALID_STRING_.length; i ++) {
+            try {
+                VersionInfo.getInstance(INSTANCE_VALID_STRING_[i]);
+            } catch (RuntimeException e) {
+                errln("\"" + INSTANCE_VALID_STRING_[i] + 
+                      "\" should produce an valid version");
+            }
+        }
+        for (int i = 0; i < INSTANCE_INVALID_INT_.length; i ++) {
+            try {
+                getInstance(INSTANCE_INVALID_INT_[i]);
+                errln("invalid ints should produce an exception");
+            } catch (RuntimeException e) {
+                logln("PASS: \"" + INSTANCE_INVALID_INT_[i] + 
+                      "\" failed as expected");
+            }
+        }
+        for (int i = 0; i < INSTANCE_VALID_INT_.length; i ++) {
+            try {
+                getInstance(INSTANCE_VALID_INT_[i]);
+            } catch (RuntimeException e) {
+                errln("valid ints should not produce an exception");
+            }
+        }
+    }
+    
+    /**
+     * Test that the comparison works
+     */
+    public void TestCompare()
+    {
+        for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
+            VersionInfo v2 = 
+                    VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_NOT_EQUAL_INT_.length; i += 2) {
+            VersionInfo v1 = getInstance(COMPARE_NOT_EQUAL_INT_[i]);
+            VersionInfo v2 = getInstance(COMPARE_NOT_EQUAL_INT_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_INT_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_INT_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
+            VersionInfo v2 = 
+                    VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_STRING_[i] + " should equal " +
+                      COMPARE_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_INT_.length - 1; i ++) {
+            VersionInfo v1 = getInstance(COMPARE_EQUAL_INT_[i]);
+            VersionInfo v2 = getInstance(COMPARE_EQUAL_INT_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_INT_[i] + " should equal " +
+                      COMPARE_EQUAL_INT_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_LESS_.length - 1; i ++) {
+            VersionInfo v1 = VersionInfo.getInstance(COMPARE_LESS_[i]);
+            VersionInfo v2 = VersionInfo.getInstance(COMPARE_LESS_[i + 1]);
+            if (v1.compareTo(v2) >= 0) {
+                errln(COMPARE_LESS_[i] + " should be less than " + 
+                      COMPARE_LESS_[i + 1]);
+            }
+            if (v2.compareTo(v1) <= 0) {
+                errln(COMPARE_LESS_[i + 1] + " should be greater than " + 
+                      COMPARE_LESS_[i]);
+            }
+        }
+    }
+    
+    /**
+     * Test that the getter function works
+     */
+    public void TestGetter()
+    {
+        for (int i = 0; i < GET_STRING_.length; i ++) {
+            VersionInfo v = VersionInfo.getInstance(GET_STRING_[i]);
+            if (v.getMajor() != GET_RESULT_[i << 2] ||
+                v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+                v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+                v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+                errln(GET_STRING_[i] + " should return major=" + 
+                      GET_RESULT_[i << 2] + " minor=" + 
+                      GET_RESULT_[(i << 2) + 1] + " milli=" + 
+                      GET_RESULT_[(i << 2) + 2] + " micro=" +
+                      GET_RESULT_[(i << 2) + 3]);  
+            }
+            v = getInstance(GET_INT_[i]);
+            if (v.getMajor() != GET_RESULT_[i << 2] ||
+                v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+                v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+                v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+                errln(GET_STRING_[i] + " should return major=" + 
+                      GET_RESULT_[i << 2] + " minor=" + 
+                      GET_RESULT_[(i << 2) + 1] + " milli=" + 
+                      GET_RESULT_[(i << 2) + 2] + " micro=" +
+                      GET_RESULT_[(i << 2) + 3]);  
+            }
+        }
+    }
+    
+    /**
+     * Test toString()
+     */
+    public void TesttoString() 
+    {
+        for (int i = 0; i < TOSTRING_STRING_.length; i ++) {
+            VersionInfo v = VersionInfo.getInstance(TOSTRING_STRING_[i]);
+            if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+                errln("toString() for " + TOSTRING_STRING_[i] + 
+                      " should produce " + TOSTRING_RESULT_[i]);
+            }
+            v = getInstance(TOSTRING_INT_[i]);
+            if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+                errln("toString() for " + TOSTRING_INT_[i] + 
+                      " should produce " + TOSTRING_RESULT_[i]);
+            }
+        }
+    }
+    
+    /**
+     * Test Comparable interface
+     */
+    public void TestComparable() {
+        try {
+            VersionInfo v = VersionInfo.ICU_VERSION;
+            String s  = "Some String";
+            if(v.compareTo(s) >0) {
+                errln("VersionInfo.compareTo(String) returned >0, should have thrown exception");
+            } else {
+                errln("VersionInfo.compareTo(String) returned <=0, should have thrown exception");
+            }
+        } catch(ClassCastException cce) {
+            logln("Pass: compareTo(String) returned " + cce.toString());
+        }
+        for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
+            Object v2 = 
+                    VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
+            Object v2 = 
+                    VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_STRING_[i] + " should equal " +
+                      COMPARE_EQUAL_STRING_[i + 1]);
+            }
+        }
+    }
+    // private methods --------------------------------------------------
+    
+    /**
+     * int array versioninfo creation
+     */
+    private static VersionInfo getInstance(int data[])
+    {
+        switch (data.length) {
+            case 1:
+                return VersionInfo.getInstance(data[0]);
+            case 2:
+                return VersionInfo.getInstance(data[0], data[1]);
+            case 3:
+                return VersionInfo.getInstance(data[0], data[1], data[2]);
+            default:
+                return VersionInfo.getInstance(data[0], data[1], data[2], 
+                                               data[3]);
+        }
+    }
+    
+    // private data members --------------------------------------------
+    
+    /**
+     * Test instance data
+     */
+    private static final String INSTANCE_INVALID_STRING_[] = {
+        "a",
+        "-1",
+        "-1.0",
+        "-1.0.0",
+        "-1.0.0.0",
+        "0.-1",
+        "0.0.-1",
+        "0.0.0.-1",
+        "256",
+        "256.0",
+        "256.0.0",
+        "256.0.0.0",
+        "0.256",
+        "0.0.256",
+        "0.0.0.256",
+        "1.2.3.4.5"
+    };
+    private static final String INSTANCE_VALID_STRING_[] = {
+        "255",
+        "255.255",
+        "255.255.255",
+        "255.255.255.255"
+    };
+    private static final int INSTANCE_INVALID_INT_[][] = {
+        {-1},
+        {-1, 0},
+        {-1, 0, 0},
+        {-1, 0, 0, 0},
+        {0, -1},
+        {0, 0, -1},
+        {0, 0, 0, -1},
+        {256},
+        {256, 0},
+        {256, 0, 0},
+        {256, 0, 0, 0},
+        {0, 256},
+        {0, 0, 256},
+        {0, 0, 0, 256},
+    };
+    private static final int INSTANCE_VALID_INT_[][] = {
+        {255},
+        {255, 255},
+        {255, 255, 255},
+        {255, 255, 255, 255}
+    };
+    
+    /**
+     * Test compare data
+     */
+    private static final String COMPARE_NOT_EQUAL_STRING_[] = {
+        "2.0.0.0", "3.0.0.0"
+    };
+    private static final int COMPARE_NOT_EQUAL_INT_[][] = {
+        {2, 0, 0, 0}, {3, 0, 0, 0}
+    };
+    private static final String COMPARE_EQUAL_STRING_[] = {
+        "2.0.0.0", "2.0.0", "2.0", "2"
+    };
+    private static final int COMPARE_EQUAL_INT_[][] = {
+        {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}    
+    };
+    private static final String COMPARE_LESS_[] = {
+        "0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1"
+    };
+    
+    /**
+     * Test Getter data
+     */
+    private static final String GET_STRING_[] = {
+        "0",
+        "1.1",
+        "2.1.255",
+        "3.1.255.100"
+    };
+    private static final int GET_INT_[][] = {
+        {0},
+        {1, 1},
+        {2, 1, 255},
+        {3, 1, 255, 100}
+    };
+    private static final int GET_RESULT_[] = {
+        0, 0, 0, 0,
+        1, 1, 0, 0,
+        2, 1, 255, 0,
+        3, 1, 255, 100
+    };
+    
+    /**
+     * Test toString data
+     */
+    private static final String TOSTRING_STRING_[] = {
+        "0",
+        "1.1",
+        "2.1.255",
+        "3.1.255.100"    
+    };
+    private static final int TOSTRING_INT_[][] = {
+        {0},
+        {1, 1},
+        {2, 1, 255},
+        {3, 1, 255, 100}
+    };
+    private static final String TOSTRING_RESULT_[] = {
+        "0.0.0.0",
+        "1.1.0.0",
+        "2.1.255.0",
+        "3.1.255.100"    
+    };
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Visitor.java b/src/com/ibm/icu/dev/test/util/Visitor.java
new file mode 100644
index 0000000..7bcda0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Visitor.java
@@ -0,0 +1,131 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.*;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+public abstract class Visitor {
+    
+    public void doAt(Object item) {
+        if (item instanceof Collection) {
+            doAt((Collection) item);
+        } else if (item instanceof Map) {
+            doAt((Map) item);
+        } else if (item instanceof Object[]) {
+            doAt((Object[]) item);
+        } else if (item instanceof UnicodeSet) {
+            doAt((UnicodeSet) item);
+        } else {
+            doSimpleAt(item);
+        }
+    }
+
+    public int count(Object item) {
+        if (item instanceof Collection) {
+            return ((Collection) item).size();
+        } else if (item instanceof Map) {
+            return ((Map) item).size();
+        } else if (item instanceof Object[]) {
+            return ((Object[]) item).length;
+        } else if (item instanceof UnicodeSet) {
+            return ((UnicodeSet) item).size();
+        } else {
+            return 1;
+        }
+    }
+
+    // the default implementation boxing
+    
+    public void doAt(int o) {
+        doSimpleAt(new Integer(o));
+    }
+    public void doAt(double o) {
+        doSimpleAt(new Double(o));
+    }
+    public void doAt(char o) {
+        doSimpleAt(new Character(o));
+    }
+    
+    // for subclassing
+    
+    protected void doAt (Collection c) {
+        if (c.size() == 0) doBefore(c, null);
+        Iterator it = c.iterator();
+        boolean first = true;
+        Object last = null;
+        while (it.hasNext()) {
+            Object item = it.next();
+            if (first) {
+                doBefore(c, item);
+                first = false;
+            } else {
+                doBetween(c, last, item);
+            }    
+            doAt(last=item);
+        }
+        doAfter(c, last);
+    }
+
+    protected void doAt (Map c) {
+        doAt(c.entrySet());
+    }
+
+    protected void doAt (UnicodeSet c) {
+        if (c.size() == 0) doBefore(c, null);
+        UnicodeSetIterator it = new UnicodeSetIterator(c);
+        boolean first = true;
+        Object last = null;
+        Object item;
+        CodePointRange cpr0 = new CodePointRange();
+        CodePointRange cpr1 = new CodePointRange();
+        CodePointRange cpr;
+        
+        while(it.nextRange()) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                item = it.string;
+            } else {
+                cpr = last == cpr0 ? cpr1 : cpr0;   // make sure we don't override last
+                cpr.codepoint = it.codepoint;
+                cpr.codepointEnd = it.codepointEnd;
+                item = cpr;
+            }           
+            if (!first) {
+                doBefore(c, item);
+                first = true;
+            } else {
+                doBetween(c, last, item);
+            }
+            doAt(last = item);
+        }
+        doAfter(c, last);
+    }
+    
+    protected void doAt (Object[] c) {
+        doBefore(c, c.length == 0 ? null : c[0]);
+        Object last = null;
+        for (int i = 0; i < c.length; ++i) {
+            if (i != 0) doBetween(c, last, c[i]);
+            doAt(last = c[i]);
+        }
+        doAfter(c, last);
+    }
+    
+    public static class CodePointRange{
+        public int codepoint, codepointEnd;
+    }
+    
+    // ===== MUST BE OVERRIDEN =====
+    
+    abstract protected void doBefore(Object container, Object item);
+    abstract protected void doBetween(Object container, Object lastItem, Object nextItem);
+    abstract protected void doAfter(Object container, Object item);   
+    abstract protected void doSimpleAt(Object o);
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java b/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
new file mode 100644
index 0000000..bada10f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
@@ -0,0 +1,293 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class XEquivalenceClass {
+
+    public SetMaker getSetMaker() {
+        return setMaker;
+    }
+
+    // quick test
+    static public void main(String[] args) {
+        XEquivalenceClass foo1 = new XEquivalenceClass("NONE");
+        String[][] tests = {{"b","a1"}, {"b", "c"}, {"a1", "c"}, {"d", "e"}, {"e", "f"}, {"c", "d"}};
+        for (int i = 0; i < tests.length; ++i) {
+            System.out.println("Adding: " + tests[i][0] + ", " + tests[i][1]);
+            foo1.add(tests[i][0], tests[i][1], new Integer(i));
+            for (Iterator it = foo1.getExplicitItems().iterator(); it.hasNext();) {
+                Object item = it.next();
+                System.out.println("\t" + item  + ";\t" + foo1.getSample(item) + ";\t" + foo1.getEquivalences(item));
+                System.out.println("\t\t" + foo1.getReasons(item, foo1.getSample(item)));
+            }
+        }
+    }
+
+    private Map toPartitionSet = new HashMap();
+    private Map obj_obj_reasons = new HashMap();
+    private Object defaultReason;
+    private SetMaker setMaker;
+    
+    public interface SetMaker {
+        Set make();
+    }
+
+    /**
+     * empty, as if just created
+     */
+    public XEquivalenceClass clear(Object defaultReasonArg) {
+        toPartitionSet.clear();
+        obj_obj_reasons.clear();
+        this.defaultReason = defaultReasonArg;
+        return this;
+    }
+
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(Object defaultReason) {
+        this.defaultReason = defaultReason;
+    }
+    
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(Object defaultReason, SetMaker setMaker) {
+        this.defaultReason = defaultReason;
+        this.setMaker = setMaker;
+    }
+
+    /**
+     * Add two equivalent items, with NO_REASON for the reason.
+     */
+    public XEquivalenceClass add(Object a, Object b) {
+        return add(a,b,null);
+    }
+
+    /**
+     * Add two equivalent items, plus a reason. The reason is only used for getReasons
+     */
+    public XEquivalenceClass add(Object a, Object b, Object reason) {
+        if (a.equals(b)) return this;
+        if (reason == null) reason = defaultReason;
+        addReason(a,b,reason);
+        addReason(b,a,reason);
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        Set bPartitionSet = (Set) toPartitionSet.get(b);
+        if (aPartitionSet == null) {
+            if (bPartitionSet == null) { // both null, set up bSet
+                bPartitionSet = setMaker != null ? setMaker.make() : new HashSet();
+                bPartitionSet.add(b);
+                toPartitionSet.put(b, bPartitionSet);
+            }
+            bPartitionSet.add(a);
+            toPartitionSet.put(a, bPartitionSet);
+        } else if (bPartitionSet == null) { // aSet is not null, bSet null
+            aPartitionSet.add(b);
+            toPartitionSet.put(b, aPartitionSet);
+        } else if (aPartitionSet != bPartitionSet) {  // both non-null, not equal, merge.  Equality check ok here
+            aPartitionSet.addAll(bPartitionSet);
+            // remap every x that had x => bPartitionSet
+            for (Iterator it = bPartitionSet.iterator(); it.hasNext();) {
+                toPartitionSet.put(it.next(), aPartitionSet);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Add all the information from the other class
+     *
+     */
+    public XEquivalenceClass addAll(XEquivalenceClass other) {
+        // For now, does the simple, not optimized version
+        for (Iterator it = other.obj_obj_reasons.keySet().iterator(); it.hasNext();) {
+            Object a = it.next();
+            Map obj_reasons = (Map) other.obj_obj_reasons.get(a);
+            for (Iterator it2 = obj_reasons.keySet().iterator(); it2.hasNext();) {
+                Object b = it2.next();
+                Set reasons = (Set) obj_reasons.get(b);
+                for (Iterator it3 = reasons.iterator(); it3.hasNext();) {
+                    Object reason = it3.next();
+                    add(a, b, reason);
+                }
+            }
+        }
+        return this;
+    }
+
+    /**
+     * 
+     */
+    private void addReason(Object a, Object b, Object reason) {
+        Map obj_reasons = (Map) obj_obj_reasons.get(a);
+        if (obj_reasons == null) obj_obj_reasons.put(a, obj_reasons = new HashMap());
+        Set reasons = (Set) obj_reasons.get(b);
+        if (reasons == null) obj_reasons.put(b, reasons = new HashSet());
+        reasons.add(reason);
+    }
+
+    /**
+     * Returns a set of all the explicit items in the equivalence set. (Any non-explicit items only
+     * have themselves as equivalences.)
+     *
+     */
+    public Set getExplicitItems() {
+        return Collections.unmodifiableSet(toPartitionSet.keySet());
+    }
+
+    /**
+     * Returns an unmodifiable set of all the equivalent objects
+     *
+     */
+    public Set getEquivalences(Object a) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) { // manufacture an equivalence
+            aPartitionSet = new HashSet();
+            aPartitionSet.add(a); 
+        }
+        return Collections.unmodifiableSet(aPartitionSet);
+    }
+
+    public Set getEquivalenceSets() {
+        Set result = new HashSet();
+        for (Iterator it = toPartitionSet.keySet().iterator(); it.hasNext();) {
+            Object item = it.next();
+            Set partition = (Set) toPartitionSet.get(item);
+            result.add(Collections.unmodifiableSet(partition));
+        }
+        return result;
+    }
+    /**
+     * returns true iff a is equivalent to b (or a.equals b)
+     *
+     */
+    public boolean isEquivalent(Object a, Object b) {
+        if (a.equals(b)) return true;
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return false;
+        return aPartitionSet.contains(b);
+    }
+
+    /**
+     * Gets a sample object in the equivalence set for a. 
+     *
+     */
+    public Object getSample(Object a) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        return aPartitionSet.iterator().next();
+    }
+
+    public interface Filter {
+        boolean matches(Object o);
+    }
+
+    public Object getSample(Object a, Filter f) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        for (Iterator it = aPartitionSet.iterator(); it.hasNext();) {
+            Object obj = it.next();
+            if (f.matches(obj)) return obj;
+        }
+        return a;
+    }
+
+    /**
+     * gets the set of all the samples, one from each equivalence class. 
+     *
+     */
+    public Set getSamples() {
+        Set seenAlready = new HashSet();
+        Set result = new HashSet();
+        for (Iterator it = toPartitionSet.keySet().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (seenAlready.contains(item)) continue;
+            Set partition = (Set) toPartitionSet.get(item);
+            result.add(partition.iterator().next());
+            seenAlready.addAll(partition);
+        }
+        return result;
+    }
+
+
+    /**
+     * Returns a list of lists. Each sublist is in the form [reasons, obj, reasons, obj,..., reasons]
+     * where each reasons is a set of reasons to go from one obj to the next.<br>
+     * Returns null if there is no connection.
+     */
+    public List getReasons(Object a, Object b) {
+        // use dumb algorithm for getting shortest path
+        // don't bother with optimization
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        Set bPartitionSet = (Set) toPartitionSet.get(b);
+
+        // see if they connect
+        if (aPartitionSet == null || bPartitionSet == null || aPartitionSet != bPartitionSet || a.equals(b)) return null;
+
+        ArrayList list = new ArrayList();
+        list.add(a);
+        ArrayList lists = new ArrayList();
+        lists.add(list);
+
+        // this will contain the results
+        List foundLists = new ArrayList();
+        Set sawLastTime = new HashSet();
+        sawLastTime.add(a);
+
+        // each time, we extend the lists by one (adding multiple other lists)
+        while (foundLists.size() == 0) {
+            ArrayList extendedList = new ArrayList();
+            Set sawThisTime = new HashSet();
+            for (Iterator it = lists.iterator(); it.hasNext();) {
+                ArrayList lista = (ArrayList) it.next();
+                Object last = lista.get(lista.size()-1);
+                Map obj_reasons = (Map) obj_obj_reasons.get(last);
+                for (Iterator it2 = obj_reasons.keySet().iterator(); it2.hasNext();) {
+                    Object item = it2.next();
+                    if (sawLastTime.contains(item)) {
+                        continue; // skip since we have shorter
+                    }
+                    sawThisTime.add(item);
+                    Set reasons = (Set) obj_reasons.get(item);
+                    ArrayList lista2 = (ArrayList)lista.clone();
+                    lista2.add(reasons);
+                    lista2.add(item);
+                    extendedList.add(lista2);
+                    if (item.equals(b)) {
+                        // remove first and last
+                        ArrayList found = (ArrayList)lista2.clone();
+                        found.remove(0);
+                        found.remove(found.size()-1);
+                        foundLists.add(found);
+                    }
+                }
+            }
+            lists = extendedList;
+            sawLastTime.addAll(sawThisTime);
+        }
+        return foundLists;
+    }
+    
+    /**
+     * For debugging.
+     */
+    public String toString() {
+        return getEquivalenceSets().toString();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java b/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java
new file mode 100644
index 0000000..3f67629
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java
@@ -0,0 +1,81 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Everything that maps to the same value is part of the same equivalence class
+ * @author davis
+ *
+ */
+public class XEquivalenceMap {
+    HashMap source_target = new HashMap();
+    HashMap target_sourceSet = new HashMap();
+    HashMap source_Set = new HashMap();
+    public XEquivalenceMap clear() {
+        source_target.clear();
+        target_sourceSet.clear();
+        source_Set.clear();
+        return this;
+    }
+    public XEquivalenceMap add(Object source, Object target) {
+        Object otherTarget = source_target.get(source);
+        if (otherTarget != null) {
+            if (otherTarget.equals(target)) return this;
+            throw new IllegalArgumentException("Same source mapping to different targets: "
+                    + source + " => " + otherTarget + " & " + target);
+        }
+        source_target.put(source, target);
+        Set s = (Set) target_sourceSet.get(target);
+        if (s == null) target_sourceSet.put(target, s = new HashSet());
+        s.add(source);
+        source_Set.put(source, s);
+        return this;
+    }
+    public Set getEquivalences (Object source) {
+        Set s = (Set) source_Set.get(source);
+        if (s == null) return null;
+        return Collections.unmodifiableSet(s);
+    }
+    public boolean areEquivalent (Object source1, Object source2) {
+        Set s = (Set) source_Set.get(source1);
+        if (s == null) return false;
+        return s.contains(source2);
+    }
+    public Object getTarget(Object source) {
+        return source_target.get(source);
+    }
+    public Set getSources(Object target) {
+        Set s = (Set) target_sourceSet.get(target);
+        return Collections.unmodifiableSet(s);
+    }
+    public Iterator iterator() {
+        MyIterator result = new MyIterator();
+        result.target_sourceSet_iterator = target_sourceSet.keySet().iterator();
+        return result;
+    }
+    public int size() {
+        return target_sourceSet.size();
+    }
+    private class MyIterator implements Iterator {
+        private Iterator target_sourceSet_iterator;
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+        public boolean hasNext() {
+            return target_sourceSet_iterator.hasNext();
+        }
+        public Object next() {
+            return getSources(target_sourceSet_iterator.next());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub b/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub
new file mode 100644
index 0000000..23e7d48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: utilities.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: Utilities for CLDR 
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: Utilities for CLDR
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/tool/UOption.java b/src/com/ibm/icu/dev/tool/UOption.java
new file mode 100644
index 0000000..45a1269
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/UOption.java
@@ -0,0 +1,275 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 15 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool;
+
+/**
+ * A command-line option.  A UOption specifies the name of an option
+ * and whether or not it takes an argument.  It is a mutable object
+ * that later contains the option argument, if any, and a boolean
+ * flag stating whether the option was seen or not.
+ *
+ * The static method parseArgs() takes an array of command-line
+ * arguments and an array of UOptions and parses the command-line
+ * arguments.
+ *
+ * This deliberately resembles the icu4c file uoption.[ch].
+ */
+public class UOption {
+
+    // Deliberated public data members
+    public String  longName;
+    public String  value;
+    public Fn      optionFn;
+    public Object  context;
+    public char    shortName;
+    public int     hasArg;
+    public boolean doesOccur;
+
+    // Values of hasArg
+    public static final int NO_ARG       = 0;
+    public static final int REQUIRES_ARG = 1;
+    public static final int OPTIONAL_ARG = 2;
+
+    // Analog of UOptionFn.  We don't pass in the context because the
+    // functor can get it from the UOption.
+    public interface Fn {
+        int handle(UOption option);
+    }
+
+    /**
+     * Create a UOption with the given attributes.
+     */
+    public static UOption create(String aLongName,
+                                char aShortName,
+                                int hasArgument) {
+        return new UOption(aLongName, aShortName, hasArgument);
+    }
+
+    /**
+     * Create a UOption with the given attributes.
+     * Synonym for create(), for C compatibility.
+     */
+    public static UOption DEF(String aLongName,
+                              char aShortName,
+                              int hasArgument) {
+        return create(aLongName, aShortName, hasArgument);
+    }
+
+    // Standard canned options.  These create a new object when
+    // called.  Since the UOption object is mutable, we cannot use
+    // static final instances.
+    public static UOption HELP_H()             { return create("help", 'h', NO_ARG); }
+    public static UOption HELP_QUESTION_MARK() { return create("help", '?', NO_ARG); }
+    public static UOption VERBOSE()            { return create("verbose", 'v', NO_ARG); }
+    public static UOption QUIET()              { return create("quiet", 'q', NO_ARG); }
+    public static UOption VERSION()            { return create("version", 'V', NO_ARG); }
+    public static UOption COPYRIGHT()          { return create("copyright", 'c', NO_ARG); }
+
+    public static UOption DESTDIR()            { return create("destdir", 'd', REQUIRES_ARG); }
+    public static UOption SOURCEDIR()          { return create("sourcedir", 's', REQUIRES_ARG); }
+    public static UOption ENCODING()           { return create("encoding", 'e', REQUIRES_ARG); }
+    public static UOption ICUDATADIR()         { return create("icudatadir", 'i', REQUIRES_ARG); }
+    public static UOption PACKAGE_NAME()       { return create("package-name", 'p', REQUIRES_ARG); }
+    public static UOption BUNDLE_NAME()        { return create("bundle-name", 'b', REQUIRES_ARG); }
+
+    /**
+     * Java Command line argument parser.
+     *
+     * This function takes the argv[] command line and a description of
+     * the program's options in form of an array of UOption structures.
+     * Each UOption defines a long and a short name (a string and a character)
+     * for options like "--foo" and "-f".
+     *
+     * Each option is marked with whether it does not take an argument,
+     * requires one, or optionally takes one. The argument may follow in
+     * the same argv[] entry for short options, or it may always follow
+     * in the next argv[] entry.
+     *
+     * An argument is in the next argv[] entry for both long and short name
+     * options, except it is taken from directly behind the short name in
+     * its own argv[] entry if there are characters following the option letter.
+     * An argument in its own argv[] entry must not begin with a '-'
+     * unless it is only the '-' itself. There is no restriction of the
+     * argument format if it is part of the short name options's argv[] entry.
+     *
+     * The argument is stored in the value field of the corresponding
+     * UOption entry, and the doesOccur field is set to 1 if the option
+     * is found at all.
+     *
+     * Short name options without arguments can be collapsed into a single
+     * argv[] entry. After an option letter takes an argument, following
+     * letters will be taken as its argument.
+     *
+     * If the same option is found several times, then the last
+     * argument value will be stored in the value field.
+     *
+     * For each option, a function can be called. This could be used
+     * for options that occur multiple times and all arguments are to
+     * be collected.
+     *
+     * All options are removed from the argv[] array itself. If the parser
+     * is successful, then it returns the number of remaining non-option
+     * strings.  (Unlike C, the Java argv[] array does NOT contain
+     * the program name in argv[0].)
+     *
+     * An option "--" ends option processing; everything after this
+     * remains in the argv[] array.
+     *
+     * An option string "-" alone is treated as a non-option.
+     *
+     * If an option is not recognized or an argument missing, then
+     * the parser returns with the negative index of the argv[] entry
+     * where the error was detected.
+     *
+     * @param argv this parameter is modified
+     * @param start the first argument in argv[] to examine.  Must be
+     * 0..argv.length-1.  Arguments from 0..start-1 are ignored.
+     * @param options this parameter is modified
+     * @return the number of unprocessed arguments in argv[], including
+     * arguments 0..start-1.
+     */
+    public static int parseArgs(String argv[], int start, UOption options[]) {
+        String arg;
+        int i=start, remaining=start;
+        char c;
+        boolean stopOptions=false;
+
+        while(i<argv.length) {
+            arg=argv[i];
+            if(!stopOptions && arg.length()>1 && arg.charAt(0)=='-') {
+                /* process an option */
+                c=arg.charAt(1);
+                UOption option=null;
+                arg=arg.substring(2);
+                if(c=='-') {
+                    /* process a long option */
+                    if(arg.length()==0) {
+                        /* stop processing options after "--" */
+                        stopOptions=true;
+                    } else {
+                        /* search for the option string */
+                        int j;
+                        for(j=0; j<options.length; ++j) {
+                            if(options[j].longName != null && arg.equals(options[j].longName)) {
+                                option=options[j];
+                                break;
+                            }
+                        }
+                        if(option==null) {
+                            /* no option matches */
+                            syntaxError("Unknown option " + argv[i]);
+                        }
+                        option.doesOccur=true;
+
+                        if(option.hasArg!=NO_ARG) {
+                            /* parse the argument for the option, if any */
+                            if(i+1<argv.length && !(argv[i+1].length()>1 && argv[i+1].charAt(0)=='-')) {
+                                /* argument in the next argv[], and there is not an option in there */
+                                option.value=argv[++i];
+                            } else if(option.hasArg==REQUIRES_ARG) {
+                                /* there is no argument, but one is required: return with error */
+                                syntaxError("Option " + argv[i] + " lacks required argument");
+                            }
+                        }
+                    }
+                } else {
+                    /* process one or more short options */
+                    for (;;) {
+                        /* search for the option letter */
+                        int j;
+                        for(j=0; j<options.length; ++j) {
+                            if(c==options[j].shortName) {
+                                option=options[j];
+                                break;
+                            }
+                        }
+                        if(option==null) {
+                            /* no option matches */
+                            syntaxError("Unknown option '" + c + "' in " + argv[i]);
+                        }
+                        option.doesOccur=true;
+
+                        if(option.hasArg!=NO_ARG) {
+                            /* parse the argument for the option, if any */
+                            if(arg.length()!=0) {
+                                /* argument following in the same argv[] */
+                                option.value=arg;
+                                /* do not process the rest of this arg as option letters */
+                                break;
+                            } else if(i+1<argv.length && !(argv[i+1].length()>1 && argv[i+1].charAt(0)=='-')) {
+                                /* argument in the next argv[], and there is not an option in there */
+                                option.value=argv[++i];
+                                /* this break is redundant because we know that *arg==0 */
+                                break;
+                            } else if(option.hasArg==REQUIRES_ARG) {
+                                /* there is no argument, but one is required: return with error */
+                                syntaxError("Option -" + c + " lacks required argument");
+                            }
+                        }
+
+                        /* get the next option letter */
+                        option=null;
+                        if (arg.length()==0) break;
+                        c=arg.charAt(0);
+                        arg=arg.substring(1);
+                    }
+                }
+
+                if(option!=null && option.optionFn!=null && option.optionFn.handle(option)<0) {
+                    /* the option function was called and returned an error */
+                    syntaxError("Option handler failed for " + argv[i]);
+                }
+
+                /* go to next argv[] */
+                ++i;
+            } else {
+                /* move a non-option up in argv[] */
+                argv[remaining++]=arg;
+                ++i;
+            }
+        }
+        return remaining;
+    }
+
+    /**
+     * Allows the default to be set in an option list.
+     * @param s
+     * @return this
+     */public UOption setDefault(String s) {
+        value = s;
+        return this;
+    }
+
+    /**
+     * Convenient method.
+     */
+    public static int parseArgs(String argv[], UOption options[]) {
+        return parseArgs(argv, 0, options);
+    }
+
+    /**
+     * Constructor.
+     */
+    private UOption(String aLongName,
+                    char aShortName,
+                    int hasArgument) {
+        longName = aLongName;
+        shortName = aShortName;
+        hasArg = hasArgument;
+    }
+
+    /**
+     * Throw an exception indicating a syntax error.
+     */
+    private static void syntaxError(String message) {
+        throw new IllegalArgumentException("Error in argument list: " + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
new file mode 100644
index 0000000..540e636
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
@@ -0,0 +1,327 @@
+/*
+ ***********************************************************************
+ *
+ * Copyright (C) 2006, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ ***********************************************************************
+ *
+ * BIG5Tool
+ *
+ *    This tool produces the character usage frequency statistics for the Big5
+ *    Chinese charset, for use by the ICU charset detectors.
+ *
+ *    usage:  java BIG5Tool [-d] [directory path]
+ *
+ *        -d:   Produce the data in a form to be exported to the ICU implementation
+ *              Default is to produce an informative dump.
+ *              
+ *        -sjis Do Shift_JIS.  The structure of sjis is very similar to Big5.
+ *
+ *        directory path
+ *              Source directory for the text files to be analyzed.
+ *              All files in the specified directory must be in the Big5 encoding.
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.mbcs;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+
+public class BIG5Tool {
+
+    // The file buffer and file data length need to be out in class member variables
+    //  so that the code lifted from charSet detection for scanning the multi-byte chars
+    //  can see them conveniently.
+    byte []    buf = new byte[1000000];
+    int        fileSize;
+
+    boolean    option_d = false;    // data option.  Produce exportable data
+    boolean    option_v = true;     // verbose informaional output.
+    boolean    sjis     = false;    // True if input text files are Shift_JIS encoded.
+
+
+
+    public static void main(String[] args) {
+        BIG5Tool  This = new BIG5Tool();
+        This.Main(args);
+    }
+
+
+
+    void Main(String[] args) {
+        int i;
+
+        //
+        //   Command Line Option Handling
+        //
+        String     dirName  = null;
+        for (i=0; i<args.length; i++) {
+            if (args[i].equals("-d")) {
+                option_d = true;
+                option_v = false;
+                continue;
+            }
+            if (args[i].equals("-sjis")) {
+                sjis = true;
+                continue;
+            }
+            if (args[i].startsWith("-")) {
+                System.err.println("Unrecognized option: " + args[i]);
+                System.exit(-1);
+            }
+            if (dirName == null) {
+                dirName = args[i];
+            } else {
+                System.err.println("Unrecognized option: " + dirName);
+                System.exit(-1);
+            }
+        }
+        if (dirName == null) {
+            dirName = ".";
+        }
+
+        //
+        //  Verify that the specified directory exists.
+        //
+        File dir = new File(dirName);
+        if (dir.isDirectory() == false) {
+            System.err.println("\"" + dirName + "\" is not a directory");
+            System.exit(-1);
+        }
+        processDir(dir);
+        
+    }
+
+    //
+    // Collect statistics from all ordinary files in a specified directory.
+    //
+    void processDir(File dir) {
+        int      totalMbcsChars  = 0;
+        HashMap  m = new HashMap(10000);
+        int      i;
+
+        System.out.println(dir.getName());
+        File[] files = dir.listFiles();
+        for (i=0; i<files.length; i++) {
+            try {
+                if (files[i].isFile()) {
+                    FileInputStream is = new FileInputStream(files[i]);
+                    fileSize = is.read(buf);
+                    if (option_v) {
+                        System.out.println(files[i].getPath());
+                        System.out.println("  " + fileSize + " bytes.");
+                    }
+                    iteratedChar ichar = new iteratedChar();
+                    int fileChars     = 0;
+                    int fileMbcsChars = 0;
+                    int errs          = 0;
+
+                    while (nextChar(ichar)) {
+                        if (ichar.error == true) {
+                            errs++;
+                            continue;
+                        }
+                        fileChars++;
+                        if (ichar.charValue > 255) {
+                            fileMbcsChars++;
+                            totalMbcsChars++;
+                        }
+                        if (ichar.charValue <= 255) {
+                            // Don't keep occurence statistics for the single byte range
+                            continue;
+                        }
+
+                        //
+                        //  Frequency of occurence statistics are accumulated in a map.
+                        //
+                        ChEl  keyEl = new ChEl(ichar.charValue, 0);
+                        ChEl  valEl = (ChEl)m.get(keyEl);
+                        if (valEl == null) {
+                            m.put(keyEl, keyEl);
+                            valEl = keyEl;
+                        }
+                        valEl.occurences++;
+                    }
+                    if (option_v) {
+                        System.out.println("  " + fileChars     + " Chars");
+                        System.out.println("  " + fileMbcsChars + " mbcs Chars");
+                        System.out.println("  " + errs          + " errors");
+                        System.out.println("\n");
+                    }
+                }
+            }
+            catch (Exception e) {
+                System.err.println("Exception:" + e);
+
+            }
+        }
+
+        //
+        //  We've processed through all of the files.
+        //     sort and dump out the frequency statistics.
+        //
+        Object [] encounteredChars = m.values().toArray();
+        Arrays.sort(encounteredChars);
+        int cumulativeChars = 0;
+        int cumulativePercent = 0;
+        if (option_v) {
+            System.out.println("# <char code> <occurences>  <Cumulative %>");
+            for (i=0; i<encounteredChars.length; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                System.out.println(i + "   " + Integer.toHexString(c.charCode) + "        " 
+                        + c.occurences + "         " + cumulativePercent);
+            }
+        }
+        if (option_d) {
+            //
+            //   Output the list of characters formatted for pasting into a
+            //     Java source code array initializer.
+            //     Resort into order based on the character code value, not
+            //      on frequency of occurence.
+            //
+            List  charList = new ArrayList();
+            
+            for (i=0; i<100 && cumulativePercent<50; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                charList.add(new Integer(c.charCode));
+            }
+            Object [] sortedChars = charList.toArray();
+            Arrays.sort(sortedChars);
+            
+            System.out.print("          {");
+            for (i=0; i<sortedChars.length; i++) {
+                if (i != 0) {
+                    System.out.print(", ");
+                    if ((i)%10 == 0) {
+                        System.out.print("\n           ");
+                    }
+                }
+                int cp = ((Integer)sortedChars[i]).intValue();
+                System.out.print("0x" + Integer.toHexString(cp));
+            }
+            System.out.println("};");
+        }
+    }
+    
+    //
+    //  This is a little class containing a
+    //    multi-byte character value and an occurence count for that char.
+    //  Instances of this class are kept in the collection that accumulates statistics
+    //
+    //  WARNING:  this class's natural ordering (from Comparable) and equals()
+    //            are inconsistent.
+
+    static class ChEl implements Comparable {
+        int charCode;
+        int occurences;
+
+        ChEl(int c, int o) {
+            charCode = c;
+            occurences = o;
+        }
+
+        // Equals needs to work with a map, with the charCode as the key.
+        //   For insertion/lookup, we care about the char code only, not the occurence count.
+        public boolean equals(Object other) {
+            ChEl o = (ChEl)other;
+            return o.charCode == this.charCode;
+        }
+
+        // Hashcode needs to be compatible with equals
+        //   We're using this in a hashMap!
+        public int hashCode() {
+            return charCode;
+        }
+
+        // We want to be able to sort the results by frequency of occurence
+        //   Compare backwards.  We want most frequent chars first.
+        public int compareTo(Object other) {
+            ChEl o = (ChEl)other;
+            return (this.occurences> o.occurences? -1 :
+                   (this.occurences==o.occurences?  0 : 1));
+        }
+
+    }
+
+    //
+    // iteratedChar is copied and slightly hacked from the similar calss in CharsetRecog_mbcs
+    //              Pulls out one logical char according to the rules of EUC encoding.
+    //
+    class iteratedChar {
+        int             charValue = 0;             // The char value is a value from the encoding.
+                                                   //   It's meaning is not well defined, other than
+                                                   //   different encodings
+        int             index     = 0;
+        int             nextIndex = 0;
+        boolean         error     = false;
+        boolean         done      = false;
+
+        void reset() {
+            charValue = 0;
+            index     = -1;
+            nextIndex = 0;
+            error     = false;
+            done      = false;
+        }
+
+        int nextByte() {
+            if (nextIndex >= fileSize) {
+                done = true;
+                return -1;
+            }
+            int byteValue = (int)buf[nextIndex++] & 0x00ff;
+            return byteValue;
+        }
+    }
+
+
+    boolean nextChar(iteratedChar it) {
+        it.index = it.nextIndex;
+        it.error = false;
+        int firstByte  = 0;
+        int secondByte = 0;
+
+        buildChar: {
+            firstByte = it.charValue = it.nextByte();
+            if (firstByte < 0) {
+                // Ran off the end of the input data
+                it.done = true;
+                break buildChar;
+            }
+            if (firstByte <= 0x0080 ||
+                    (sjis && firstByte>=0x00a0 && firstByte< 0x00e0) ||
+                    (sjis && firstByte>=0x00fd && firstByte<=0x00ff)) {
+                // single byte char
+                break buildChar;
+            }
+
+            secondByte = it.nextByte();
+            it.charValue = (it.charValue << 8) | secondByte;
+
+            if (secondByte <  0x40 ||
+                secondByte == 0x007f ||
+                secondByte == 0x00ff ||
+                sjis && secondByte >= 0x00fd) {
+                    it.error = true;
+            }
+            
+            if (it.error) {
+                System.out.println("Error " + Integer.toHexString(firstByte) + " " + Integer.toHexString(secondByte));
+            }
+       }
+
+        return (it.done == false);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
new file mode 100644
index 0000000..b6aff25
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
@@ -0,0 +1,349 @@
+/*
+ ***********************************************************************
+ *
+ * Copyright (C) 2005-2006, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ ***********************************************************************
+ *
+ * euc_tool
+ *
+ *    This tool produces the character usage frequency statistics for the EUC family
+ *    of charsets, for use by the ICU charset detectors.
+ *
+ *    usage:  java euc_tool [-d] [directory path]
+ *
+ *        -d:   Produce the data in a form to be exported to the ICU implementation
+ *              Default is to produce an informative dump.
+ *
+ *        directory path
+ *              Source directory for the files to be analyzed.
+ *              Default is the current directory.
+ *              There should be three subdirectories under the specified directory, one
+ *              each for EUC_JP, EUC_CN and EUC_KR.  Within each of these subdirectories
+ *              should be text files in the specified encoding.
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.mbcs;
+
+import java.util.*;
+import java.io.*;
+
+public class EUCTool {
+
+    // The file buffer and file data length need to be out in class member variables
+    //  so that the code lifted from charSet detection for scanning the multi-byte chars
+    //  can see them conveniently.
+    byte []    buf = new byte[1000000];
+    int        fileSize;
+
+    boolean    option_d = false;    // data option.  Produce exportable data
+    boolean    option_v = true;     // verbose informaional output.
+
+
+
+    public static void main(String[] args) {
+        EUCTool  This = new EUCTool();
+        This.Main(args);
+    }
+
+
+
+    void Main(String[] args) {
+        int i;
+
+        //
+        //   Command Line Option Handling
+        //
+        String     dirName  = ".";
+        for (i=0; i<args.length; i++) {
+            if (args[i].equals("-d")) {
+                option_d = true;
+                option_v = false;
+                continue;
+            }
+            if (args[i].startsWith("-")) {
+                System.err.println("Unrecongized option: " + args[i]);
+                System.exit(-1);
+            }
+            dirName = args[i];
+        }
+
+        //
+        //  Verify that the specified directory exists.
+        //
+        File dir = new File(dirName);
+        if (dir.isDirectory() == false) {
+            System.err.println("\"" + dirName + "\" is not a directory");
+            System.exit(-1);
+        }
+
+        //
+        //  Do each subdirectory of the specified directory.  There should be
+        //    one per each encoding - euc-kr, euc-cn, euc-jp
+        //
+        File[] dirs  = dir.listFiles();
+        for (i=0; i<dirs.length; i++) {
+            if (dirs[i].isDirectory()) {
+                String nam = dirs[i].getName();
+                if (nam.equalsIgnoreCase("CVS")) {
+                    continue;
+                }
+                processDir(dirs[i]);
+            }
+        }
+    }
+
+    //
+    // Collect statistics from all ordinary files in a specified directory.
+    //
+    void processDir(File dir) {
+        int      totalMbcsChars  = 0;
+        HashMap  m = new HashMap(10000);
+        int      i;
+
+        System.out.println(dir.getName());
+        File[] files = dir.listFiles();
+        for (i=0; i<files.length; i++) {
+            try {
+                if (files[i].isFile()) {
+                    FileInputStream is = new FileInputStream(files[i]);
+                    fileSize = is.read(buf);
+                    if (option_v) {
+                        System.out.println(files[i].getPath());
+                        System.out.println("  " + fileSize + " bytes.");
+                    }
+                    iteratedChar ichar = new iteratedChar();
+                    int fileChars     = 0;
+                    int fileMbcsChars = 0;
+                    int errs          = 0;
+
+                    while (nextChar(ichar)) {
+                        if (ichar.error == true) {
+                            errs++;
+                            continue;
+                        }
+                        fileChars++;
+                        if (ichar.charValue > 255) {
+                            fileMbcsChars++;
+                            totalMbcsChars++;
+                        }
+                        if (ichar.charValue <= 255) {
+                            // Don't keep occurence statistics for the single byte range
+                            continue;
+                        }
+
+                        //
+                        //  Frequency of occurence statistics are accumulated in a map.
+                        //
+                        ChEl  keyEl = new ChEl(ichar.charValue, 0);
+                        ChEl  valEl = (ChEl)m.get(keyEl);
+                        if (valEl == null) {
+                            m.put(keyEl, keyEl);
+                            valEl = keyEl;
+                        }
+                        valEl.occurences++;
+                    }
+                    if (option_v) {
+                        System.out.println("  " + fileChars     + " Chars");
+                        System.out.println("  " + fileMbcsChars + " mbcs Chars");
+                        System.out.println("  " + errs          + " errors");
+                        System.out.println("\n");
+                    }
+                }
+            }
+            catch (Exception e) {
+                System.err.println("Exception:" + e);
+
+            }
+        }
+
+        //
+        //  We've processed through all of the files.
+        //     sort and dump out the frequency statistics.
+        //
+        Object [] encounteredChars = m.values().toArray();
+        Arrays.sort(encounteredChars);
+        int cumulativeChars = 0;
+        int cumulativePercent = 0;
+        if (option_v) {
+            System.out.println("# <char code> <occurences>  <Cumulative %>");
+            for (i=0; i<encounteredChars.length; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                System.out.println(i + "   " + Integer.toHexString(c.charCode) + "        " 
+                        + c.occurences + "         " + cumulativePercent);
+            }
+        }
+        if (option_d) {
+            //
+            //   Output the list of characters formatted for pasting into a
+            //     Java source code array initializer.
+            //     Resort into order based on the character code value, not
+            //      on frequency of occurence.
+            //
+            List  charList = new ArrayList();
+            
+            for (i=0; i<100 && cumulativePercent<50; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                charList.add(new Integer(c.charCode));
+            }
+            Object [] sortedChars = charList.toArray();
+            Arrays.sort(sortedChars);
+            
+            System.out.print("          {");
+            for (i=0; i<sortedChars.length; i++) {
+                if (i != 0) {
+                    System.out.print(", ");
+                    if ((i)%10 == 0) {
+                        System.out.print("\n           ");
+                    }
+                }
+                int cp = ((Integer)sortedChars[i]).intValue();
+                System.out.print("0x" + Integer.toHexString(cp));
+            }
+            System.out.println("};");
+        }
+    }
+    
+    //
+    //  This is a little class containing a
+    //    multi-byte character value and an occurence count for that char.
+    //  Instances of this class are kept in the collection that accumulates statistics
+    //
+    //  WARNING:  this class's natural ordering (from Comparable) and equals()
+    //            are inconsistent.
+
+    static class ChEl implements Comparable {
+        int charCode;
+        int occurences;
+
+        ChEl(int c, int o) {
+            charCode = c;
+            occurences = o;
+        }
+
+        // Equals needs to work with a map, with the charCode as the key.
+        //   For insertion/lookup, we care about the char code only, not the occurence count.
+        public boolean equals(Object other) {
+            ChEl o = (ChEl)other;
+            return o.charCode == this.charCode;
+        }
+
+        // Hashcode needs to be compatible with equals
+        //   We're using this in a hashMap!
+        public int hashCode() {
+            return charCode;
+        }
+
+        // We want to be able to sort the results by frequency of occurence
+        //   Compare backwards.  We want most frequent chars first.
+        public int compareTo(Object other) {
+            ChEl o = (ChEl)other;
+            return (this.occurences> o.occurences? -1 :
+                   (this.occurences==o.occurences?  0 : 1));
+        }
+
+    }
+
+    //
+    // iteratedChar is copied and slightly hacked from the similar calss in CharsetRecog_mbcs
+    //              Pulls out one logical char according to the rules of EUC encoding.
+    //
+    class iteratedChar {
+        int             charValue = 0;             // The char value is a value from the encoding.
+                                                   //   It's meaning is not well defined, other than
+                                                   //   different encodings
+        int             index     = 0;
+        int             nextIndex = 0;
+        boolean         error     = false;
+        boolean         done      = false;
+
+        void reset() {
+            charValue = 0;
+            index     = -1;
+            nextIndex = 0;
+            error     = false;
+            done      = false;
+        }
+
+        int nextByte() {
+            if (nextIndex >= fileSize) {
+                done = true;
+                return -1;
+            }
+            int byteValue = (int)buf[nextIndex++] & 0x00ff;
+            return byteValue;
+        }
+    }
+
+
+    boolean nextChar(iteratedChar it) {
+        it.index = it.nextIndex;
+        it.error = false;
+        int firstByte  = 0;
+        int secondByte = 0;
+        int thirdByte  = 0;
+        int fourthByte = 0;
+
+        buildChar: {
+            firstByte = it.charValue = it.nextByte();
+            if (firstByte < 0) {
+                // Ran off the end of the input data
+                it.done = true;
+                break buildChar;
+            }
+            if (firstByte <= 0x8d) {
+                // single byte char
+                break buildChar;
+            }
+
+            secondByte = it.nextByte();
+            it.charValue = (it.charValue << 8) | secondByte;
+
+            if (firstByte >= 0xA1 && firstByte <= 0xfe) {
+                // Two byte Char
+                if (secondByte < 0xa1) {
+                    it.error = true;
+                }
+                break buildChar;
+            }
+            if (firstByte == 0x8e) {
+                // Code Set 2.
+                //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.
+                //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
+                // We don't know which we've got.
+                // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
+                //   bytes will look like a well formed 2 byte char.
+                if (secondByte < 0xa1) {
+                    it.error = true;
+                }
+                break buildChar;
+            }
+
+            if (firstByte == 0x8f) {
+                // Code set 3.
+                // Three byte total char size, two bytes of actual char value.
+                thirdByte    = it.nextByte();
+                it.charValue = (it.charValue << 8) | thirdByte;
+                if (thirdByte < 0xa1) {
+                    it.error = true;
+                }
+            }
+            
+        }
+        if (it.error) {
+            System.out.println("Error " + Integer.toHexString(firstByte) + " " + Integer.toHexString(secondByte)
+                    + " " +  Integer.toHexString(thirdByte) + " " + Integer.toHexString(fourthByte));
+        }
+        return (it.done == false);
+    }
+}
+
+
+
+
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
new file mode 100644
index 0000000..d3a30bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
@@ -0,0 +1,184 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2006, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class Checker implements NGramParser.NGramParserClient
+{
+    private NGramList ngrams;
+    private int totalNGrams;
+    private int totalHits;
+    
+    private String language;
+    private String encoding;
+    
+    private int[] histogram;
+
+    private static final int BUFFER_SIZE = 1024;
+    
+    private char[] buffer;
+    private int bufIndex;
+    private int bufMax;
+
+    private NGramParser parser;
+
+    /**
+     * TODO This should take cumulative percent and the name...
+     */
+    public Checker(NGramList list, InputFile dataFile)
+    {
+        ngrams = list;
+        ngrams.setMapper(dataFile);
+        
+        language = languageName(dataFile.getFilename());
+        encoding = dataFile.getEncoding();
+        
+        buffer = new char[BUFFER_SIZE];
+        parser = new NGramParser(this);
+        resetCounts();
+        
+        histogram = new int[100];
+        resetHistogram();
+   }
+    
+    public void handleNGram(String key)
+    {
+        NGramList.NGram ngram = ngrams.get(key);
+        
+        totalNGrams += 1;
+        
+        if (ngram != null) {
+            totalHits += 1;
+            //ngram.incrementRefCount();
+        }
+    }
+    
+    private void resetCounts()
+    {
+        bufIndex = 0;
+        totalNGrams = totalHits = 0;
+    }
+    
+    private void resetHistogram()
+    {
+        for(int i = 0; i < 100; i += 1) {
+            histogram[i] = 0;
+        }
+        
+    }
+    
+    private static void exceptionError(Exception e)
+    {
+        System.err.println("ioError: " + e.toString());
+    }
+
+    private static String languageName(String filename)
+    {
+        return filename.substring(0, filename.indexOf('.'));
+    }
+    
+    private boolean nextBuffer(InputFile inputFile)
+    {
+        try {
+            bufMax = inputFile.read(buffer);
+        } catch (Exception e) {
+            bufMax = -1;
+            exceptionError(e);
+            
+            return false;
+        }
+        
+        bufIndex = 0;
+        
+        return bufMax >= 0;
+    }
+    
+    private void parseBuffer()
+    {
+        resetCounts();
+        parser.reset();
+        parser.parse();
+    }
+    
+    public char nextChar()
+    {
+        if (bufIndex >= bufMax) {
+            return 0;
+        }
+        
+        return buffer[bufIndex++];
+    }
+    
+    public String getLanguage()
+    {
+        return language;
+    }
+    
+    public void setMapper(InputFile file)
+    {
+        ngrams.setMapper(file);
+    }
+    
+    public int checkBuffer(char[] theBuffer, int charCount)
+    {
+        buffer = theBuffer;
+        bufMax = charCount;
+        
+        parseBuffer();
+        
+        return totalHits;
+    }
+    
+    public void check(InputFile dataFile)
+    {
+        int minHist = 101, maxHist = -1;
+        
+        dataFile.open();
+        
+        String dataFilename = dataFile.getFilename();
+        String fileEncoding = dataFile.getEncoding();
+        
+        System.out.println(language + "(" + encoding + ") stats, " + languageName(dataFilename) + "(" + fileEncoding + ") data:");
+        
+        setMapper(dataFile);
+        resetHistogram();
+
+        while (nextBuffer(dataFile)) {
+            parseBuffer();
+            
+            double percentHits = (double) totalHits / totalNGrams * 100.0;
+            int ph = (int) percentHits;
+            
+            if (ph < minHist) {
+                minHist = ph;
+            }
+            
+            if (ph > maxHist) {
+                maxHist = ph;
+            }
+            
+            histogram[ph] += 1;
+        }
+        
+        for(int ph = minHist; ph <= maxHist; ph += 1) {
+            System.out.println(ph + "\t" + histogram[ph]);
+        }
+        
+        System.out.println();
+        
+        dataFile.close();
+        
+        return;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
new file mode 100644
index 0000000..1258f58
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
@@ -0,0 +1,173 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class InputFile implements NGramList.NGramKeyMapper
+{
+
+    private File file;
+    private FileInputStream fileStream;
+    private InputStreamReader inputStream;
+
+    private Charset charset;
+    private CharsetDecoder decoder;
+    private CharsetEncoder encoder;
+    
+    private boolean visualOrder;
+
+    private static void exceptionError(Exception e)
+    {
+        System.err.println("ioError: " + e.toString());
+    }
+
+    /**
+     * 
+     */
+    public InputFile(String filename, String encoding, boolean visual)
+    {
+        file = new File(filename);
+        setEncoding(encoding);
+        visualOrder = visual;
+    }
+    
+    public boolean open()
+    {
+        try {
+            fileStream = new FileInputStream(file);          
+            inputStream = new InputStreamReader(fileStream, "UTF8");
+        } catch (Exception e) {
+            exceptionError(e);
+            return false;
+        }
+        
+        return true;
+    }
+    
+    public void close()
+    {
+        try {
+            inputStream.close();
+            fileStream.close();
+        } catch (Exception e) {
+            // don't really care if this fails...
+        }
+    }
+    
+    public String getFilename()
+    {
+        return file.getName();
+    }
+    
+    public String getParent()
+    {
+        return file.getParent();
+    }
+    
+    public String getPath()
+    {
+        return file.getPath();
+    }
+    
+    public int read(char[] buffer)
+    {
+        int charsRead = -1;
+        
+        try {
+            charsRead = inputStream.read(buffer, 0, buffer.length);
+        } catch (Exception e) {
+            exceptionError(e);
+        }
+        
+        return charsRead;
+    }
+    
+    public void setEncoding(String encoding)
+    {
+        charset = Charset.forName(encoding);
+        decoder = charset.newDecoder();
+        encoder = charset.newEncoder();
+        
+        encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+        encoder.onMalformedInput(CodingErrorAction.REPLACE);
+        
+        decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+        decoder.onMalformedInput(CodingErrorAction.REPLACE);
+    }
+    
+    public String getEncoding()
+    {
+        return charset.displayName();
+    }
+    
+    public boolean getVisualOrder()
+    {
+        return visualOrder;
+    }
+    
+    public Object mapKey(String key)
+    {
+        byte[] bytes = encode(key.toCharArray());
+        int length   = key.length();
+        int value    = 0;
+        
+        for(int b = 0; b < length; b += 1) {
+            value <<= 8;
+            value += (bytes[b] & 0xFF);
+        }
+
+        return new Integer(value);
+    }
+    
+    public byte[] encode(char[] chars)
+    {
+        CharBuffer cb = CharBuffer.wrap(chars);
+        ByteBuffer bb;
+        
+        try {
+            bb = encoder.encode(cb);
+        } catch (CharacterCodingException e) {
+            // don't expect to get any exceptions in normal usage...
+            return null;
+        }
+
+        return bb.array();
+    }
+    
+    public char[] decode(byte[] bytes)
+    {
+        ByteBuffer bb = ByteBuffer.wrap(bytes);
+        CharBuffer cb;
+        
+        try {
+            cb = decoder.decode(bb);
+        } catch (CharacterCodingException e) {
+            // don't expect to get any exceptions in normal usage...
+            return null;
+        }
+        
+        return cb.array();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
new file mode 100644
index 0000000..e285841
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
@@ -0,0 +1,142 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2006, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import java.util.Collection;
+import java.util.TreeMap;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class NGramList
+{
+    public interface NGramKeyMapper
+    {
+        Object mapKey(String key);
+    }
+    
+    public static final class NGram implements Comparable
+    {
+        private String value;
+        private int refCount;
+        
+        public NGram(String theValue, int theRefCount)
+        {
+            value    = theValue;
+            refCount = theRefCount;
+        }
+        
+        public NGram(String theValue)
+        {
+            this(theValue, 1);
+        }
+        
+        public NGram(NGram other)
+        {
+            this(other.getValue(), other.getRefCount());
+        }
+        
+        public final String getValue()
+        {
+            return value;
+        }
+        
+        public final int getRefCount()
+        {
+            return refCount;
+        }
+        
+        public final void incrementRefCount()
+        {
+            refCount += 1;
+        }
+        
+        // Note: This makes higher refCounts come *before* lower refCounts...
+        public int compareTo(Object o)
+        {
+            NGram ng = (NGram) o;
+            
+            return ng.getRefCount() - refCount;
+        }
+    }
+    
+    protected TreeMap ngrams;
+    protected int totalNGrams;
+    protected int uniqueNGrams;
+
+    protected final int N_GRAM_SIZE = 3;
+    
+    private NGramKeyMapper keyMapper;
+
+    /**
+     * 
+     */
+    public NGramList(NGramKeyMapper theMapper)
+    {
+        keyMapper = theMapper;
+        
+        ngrams = new TreeMap();
+        totalNGrams = uniqueNGrams = 0;
+    }
+    
+    public void setMapper(NGramKeyMapper nGramKeyMapper)
+    {
+        keyMapper = nGramKeyMapper;
+    }
+    
+    public NGram get(Object mappedKey)
+    {
+        return (NGram) ngrams.get(mappedKey);
+    }
+    
+    public NGram get(String key)
+    {
+        Object mappedKey = keyMapper.mapKey(key);
+        
+        return get(mappedKey);
+    }
+    
+    public void put(String key)
+    {
+        Object mappedKey = keyMapper.mapKey(key);
+        NGram ngram = get(mappedKey);
+        
+        totalNGrams += 1;
+        
+        if (ngram == null) {
+            uniqueNGrams += 1;
+            ngrams.put(mappedKey, new NGram(key));
+        } else {
+            ngram.incrementRefCount();
+        }
+    }
+    
+    public Collection values()
+    {
+        return ngrams.values();
+    }
+    
+    public Collection keys()
+    {
+        return ngrams.keySet();
+    }
+    
+    public int getTotalNGrams()
+    {
+        return totalNGrams;
+    }
+    
+    public int getUniqueNGrams()
+    {
+        return uniqueNGrams;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
new file mode 100644
index 0000000..d0f7b31
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
@@ -0,0 +1,161 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class NGramParser
+{
+
+    public interface NGramParserClient
+    {
+        char nextChar();
+        void handleNGram(String key);
+    }
+    
+    private static final int A_NULL = 0;
+    private static final int A_ADDC = 1;
+    private static final int A_ADDS = 2;
+    
+    /*
+     * Character classes
+     */
+    public static final int C_IGNORE = 0;
+    public static final int C_LETTER = 1;
+    public static final int C_PUNCT  = 2;
+    
+    private static final int S_START  = 0;
+    private static final int S_LETTER = 1;
+    private static final int S_PUNCT  = 2;
+
+    static final class StateEntry
+    {
+        private int newState;
+        private int action;
+        
+        StateEntry(int theState, int theAction)
+        {
+            newState = theState;
+            action   = theAction;
+        }
+        
+        public int getNewState()
+        {
+            return newState;
+        }
+        
+        public int getAction()
+        {
+            return action;
+        }
+    }
+    
+    private StateEntry[][] stateTable = {
+            {new StateEntry(S_START,  A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_ADDS)},
+            {new StateEntry(S_LETTER, A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_ADDS)},
+            {new StateEntry(S_PUNCT,  A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_NULL)}
+    };
+
+    protected final int N_GRAM_SIZE = 3;
+    
+    private char[] letters = new char[N_GRAM_SIZE];
+    private int letterCount;
+    
+    private static UnicodeSet letterSet = new UnicodeSet("[:letter:]");
+
+    private NGramParserClient client;
+
+    /**
+     * 
+     */
+    public NGramParser(NGramParserClient theClient)
+    {
+        client = theClient;
+        letterCount = 0;
+    }
+    
+    public void setClient(NGramParserClient theClient)
+    {
+        client = theClient;
+    }
+    
+    // TODO Is this good enough, or are there other C_IGNORE characters?
+    // TODO Could this make Latin letters C_PUNCT for non-Latin scripts?
+    public static int getCharClass(char ch)
+    {
+        if (ch == '\'' || ch == '\uFEFF') {
+            return C_IGNORE;
+        }
+        
+        if (letterSet.contains(ch)) {
+            return C_LETTER;
+        }
+        
+        return C_PUNCT;
+    }
+    
+    public void reset()
+    {
+        letterCount = 0;
+    }
+    
+    public void addLetter(char letter)
+    {
+        // somewhat clever stuff goes here...        
+        letters[letterCount++] = letter;
+        
+        if (letterCount >= N_GRAM_SIZE) {
+            String key = new String(letters);
+            
+            client.handleNGram(key);
+            
+            letterCount = N_GRAM_SIZE - 1;
+            for (int i = 0; i < letterCount; i += 1) {
+                letters[i] = letters[i + 1];
+            }
+        }
+    }
+    
+    public void parse()
+    {
+        char ch;
+        int state = 0;
+
+        // this is where the clever stuff goes...
+        while ((ch = client.nextChar()) != 0) {
+            int charClass = getCharClass(ch);
+            StateEntry entry = stateTable[state][charClass];
+            
+            state = entry.getNewState();
+            
+            switch (entry.getAction())
+            {
+            case A_ADDC:
+                addLetter(Character.toLowerCase(ch));
+                break;
+                
+            case A_ADDS:
+                addLetter(' ');
+                break;
+ 
+            case A_NULL:
+            default:
+                break;
+            }
+        }
+        
+        addLetter(' ');
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
new file mode 100644
index 0000000..26ffe1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
@@ -0,0 +1,432 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2007, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class StatisticsTool implements NGramParser.NGramParserClient, NGramList.NGramKeyMapper
+{
+    /* TODO Make this usage string more sane. */
+    private static final String usageString = 
+        "\nUsage: StatisticsTool [OPTIONS] [FILES]\n\n" +
+        "This program will read in a Unicode text file of text in a particular language\n" +
+        "and compute the statistics needed to detected that language and character set.\n " +
+        "Options:\n" +
+        "-e       specify the target encoding\n" +
+        "-h or -? print this usage text.\n" +
+        "-v       also generate statistics for visual order.\n" +
+        "-l       only generate statistics for logical order (cancel -v)." +
+        "-c       run the checker.\n" +
+        "-t       run the encoding test.\n" +
+        "example: com.ibm.icu.dev.tool.charset.StatisticsTool -e 8859-1 Spanish.txt";
+
+    private static final int BUFFER_SIZE = 1024;
+    
+    private char[] buffer;
+    private int bufIndex;
+    private int bufMax;
+
+    private InputFile inputFile;
+    
+    private NGramList ngrams;
+    
+    private static byte[] allBytes = {
+            (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
+            (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B, (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F,
+            (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+            (byte) 0x18, (byte) 0x19, (byte) 0x1A, (byte) 0x1B, (byte) 0x1C, (byte) 0x1D, (byte) 0x1E, (byte) 0x1F,
+            (byte) 0x20, (byte) 0x21, (byte) 0x22, (byte) 0x23, (byte) 0x24, (byte) 0x25, (byte) 0x26, (byte) 0x27,
+            (byte) 0x28, (byte) 0x29, (byte) 0x2A, (byte) 0x2B, (byte) 0x2C, (byte) 0x2D, (byte) 0x2E, (byte) 0x2F,
+            (byte) 0x30, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x34, (byte) 0x35, (byte) 0x36, (byte) 0x37,
+            (byte) 0x38, (byte) 0x39, (byte) 0x3A, (byte) 0x3B, (byte) 0x3C, (byte) 0x3D, (byte) 0x3E, (byte) 0x3F,
+            (byte) 0x40, (byte) 0x41, (byte) 0x42, (byte) 0x43, (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47,
+            (byte) 0x48, (byte) 0x49, (byte) 0x4A, (byte) 0x4B, (byte) 0x4C, (byte) 0x4D, (byte) 0x4E, (byte) 0x4F,
+            (byte) 0x50, (byte) 0x51, (byte) 0x52, (byte) 0x53, (byte) 0x54, (byte) 0x55, (byte) 0x56, (byte) 0x57,
+            (byte) 0x58, (byte) 0x59, (byte) 0x5A, (byte) 0x5B, (byte) 0x5C, (byte) 0x5D, (byte) 0x5E, (byte) 0x5F,
+            (byte) 0x60, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67,
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F,
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77,
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x7B, (byte) 0x7C, (byte) 0x7D, (byte) 0x7E, (byte) 0x7F,
+            (byte) 0x80, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87,
+            (byte) 0x88, (byte) 0x89, (byte) 0x8A, (byte) 0x8B, (byte) 0x8C, (byte) 0x8D, (byte) 0x8E, (byte) 0x8F,
+            (byte) 0x90, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97,
+            (byte) 0x98, (byte) 0x99, (byte) 0x9A, (byte) 0x9B, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F,
+            (byte) 0xA0, (byte) 0xA1, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7,
+            (byte) 0xA8, (byte) 0xA9, (byte) 0xAA, (byte) 0xAB, (byte) 0xAC, (byte) 0xAD, (byte) 0xAE, (byte) 0xAF,
+            (byte) 0xB0, (byte) 0xB1, (byte) 0xB2, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0xB6, (byte) 0xB7,
+            (byte) 0xB8, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0xBD, (byte) 0xBE, (byte) 0xBF,
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7,
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF,
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7,
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF,
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7,
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF,
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7,
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF
+    };
+    
+    /**
+     * 
+     */
+    public StatisticsTool()
+    {
+        buffer = new char[BUFFER_SIZE];
+        
+        buffer[0] = ' ';
+        bufIndex = 0;
+        bufMax = 1;
+    }
+    
+    private static void usage()
+    {
+        System.out.println(usageString);
+    }
+    
+//    private static void exceptionError(Exception e)
+//    {
+//        System.err.println("ioError: " + e.toString());
+//    }
+
+    private int nextBuffer(InputFile inputFileArg)
+    {
+        bufIndex = 0;
+        
+        return inputFileArg.read(buffer);
+    }
+    
+    public char nextChar()
+    {
+        if (bufIndex >= bufMax) {
+            bufMax = nextBuffer(inputFile);
+        }
+        
+        if (bufMax < 0) {
+            return 0;
+        }
+        
+        return buffer[bufIndex++];
+    }
+    
+    public void handleNGram(String key)
+    {
+        ngrams.put(key);
+    }
+    
+    public Object mapKey(String key)
+    {
+        return key;
+    }
+    
+    private NGramList dumpNGrams()
+    {
+        String filename = inputFile.getPath();
+        int extension = filename.lastIndexOf(".");
+        String outputFileName = filename.substring(0, extension) + ".raw" + filename.substring(extension);
+        PrintStream output;
+        double cumulative = 0;
+        
+        try {
+            output = new PrintStream(
+                new FileOutputStream(outputFileName), true, "UTF8");
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return null;
+        }
+        
+        System.out.println(inputFile.getFilename() + ": " + ngrams.getUniqueNGrams() + "/" + ngrams.getTotalNGrams());
+        
+        ArrayList array = new ArrayList(ngrams.values());
+        
+        Collections.sort(array);
+        
+        NGramList stats = new NGramList(inputFile);
+        int count = 0;
+        int totalNGrams = ngrams.getTotalNGrams();
+        
+        for (Iterator it = array.iterator(); it.hasNext(); count += 1) {
+            NGramList.NGram ngram  = (NGramList.NGram) it.next();
+            String value = ngram.getValue();
+            int refCount = ngram.getRefCount();
+            double ratio  = (double) refCount / totalNGrams * 100.0;
+            
+            cumulative += ratio;
+            
+            // TODO check should be count < max && cumulative < maxPercent
+            if (count < 64) {
+                stats.put(value);
+            }
+            
+            output.println(value + "\t" + refCount + "\t" + ratio + "%\t" + cumulative + "%");
+        }
+        
+        output.close();
+        
+        return stats;
+    }
+    
+    private void writeStatistics(ArrayList keyList, boolean visual)
+    {
+        String filename = inputFile.getPath();
+        int extension = filename.lastIndexOf(".");
+        String outputFileName = filename.substring(0, extension) + "-" + inputFile.getEncoding() +
+                                    (visual? "-visual.dat" : ".dat");
+        PrintStream output;
+        
+        try {
+            output = new PrintStream(
+                new FileOutputStream(outputFileName), true, "ASCII");
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return;
+        }
+        
+        int i = 0;
+        
+        output.print("    private static int[] ngrams = {");
+        
+        for (Iterator it = keyList.iterator(); it.hasNext(); i += 1) {
+            Integer ngram = (Integer) it.next();
+        
+            if (i % 16 == 0) {
+                output.print("\n        ");
+            }
+            
+            output.print("0x" + Utility.hex(ngram.intValue(), 6) + ", ");
+        }
+        
+        output.println("\n    };\n");
+        
+        /*
+         * Generate the byte map
+         */
+        char[] unicodes = inputFile.decode(allBytes);
+        
+        for (int b = 0; b < 256; b += 1) {
+            char unicode  = unicodes[b];
+            int charClass = NGramParser.getCharClass(unicode);
+        
+            switch (charClass) {
+            case NGramParser.C_LETTER:
+                unicodes[b] = Character.toLowerCase(unicode);
+                break;
+        
+            case NGramParser.C_PUNCT:
+                unicodes[b] = ' ';
+                break;
+        
+            case NGramParser.C_IGNORE:
+            default:
+                unicodes[b] = '\0';
+            }
+        }
+        
+        byte[] byteMap = inputFile.encode(unicodes);
+        
+        output.print("    private static byte[] byteMap = {");
+        
+        for (int b = 0; b < 256; b += 1) {
+            if (b % 8 == 0) {
+                output.print("\n        ");
+            }
+            
+            output.print("(byte) 0x" + Utility.hex(byteMap[b] & 0xFF, 2) + ", ");
+        }
+        
+        output.println("\n    };");
+    }
+    
+    public NGramList collectStatistics(InputFile file)
+    {
+        if (!file.open()) {
+            return null;
+        }
+        
+        inputFile = file;
+        
+        NGramParser parser = new NGramParser(this);
+        
+        ngrams = new NGramList(this);
+        parser.parse();
+        
+        file.close();
+        
+        NGramList stats    = dumpNGrams();
+        ArrayList statKeys = new ArrayList(stats.keys());
+        
+        Collections.sort(statKeys);
+        writeStatistics(statKeys, false);
+        
+        if (inputFile.getVisualOrder()) {
+            ArrayList reversed = new ArrayList(statKeys.size());
+            
+            for (Iterator it = statKeys.iterator(); it.hasNext();) {
+                Integer key = (Integer) it.next();
+                int k = key.intValue();
+                int r = 0;
+                
+                while (k != 0) {
+                    r = (r << 8) | (k & 0xFF);
+                    k >>= 8;
+                }
+                
+                reversed.add(new Integer(r));
+            }
+            
+            Collections.sort(reversed);
+            writeStatistics(reversed, true);
+        }
+        
+        return stats;
+    }
+    
+    public static void main(String[] args)
+    {
+        List list = Arrays.asList(args);
+        InputFile[] input_files = new InputFile[args.length];
+        int file_count = 0;
+        String encoding = null;
+        boolean run_checker = false;
+        boolean encoding_test = false;
+        boolean visual_order = false;
+        
+        for (Iterator it = list.iterator(); it.hasNext(); /*anything?*/) {
+            String arg = (String) it.next();
+            
+            if (arg.equals("-v")) {
+                visual_order = true;
+            } else if (arg.equals("-l")) {
+                visual_order = false;
+            } else if (arg.equals("-c")) {
+                run_checker = true;
+            } else if (arg.equals("-t")) {
+                encoding_test = true;
+            } else if (arg.equals("-e")) {
+                if (it.hasNext()) {
+                    encoding = (String) it.next();
+                } else {
+                    System.err.println("Error: missing encoding.");
+                }
+            } else if (arg.startsWith("-")) {
+                if (! (arg.equals("-h") || arg.equals("-?"))) {
+                    System.err.println("Error: unknown option " + arg);
+                }
+                
+                usage();
+            } else {
+                input_files[file_count++] = new InputFile(arg, encoding, visual_order);
+            }
+        }
+
+        if(file_count == 0){
+            System.err.println("Error: there are no files to process.");
+            usage();
+        }
+        
+        StatisticsTool tool = new StatisticsTool();
+        Checker[] checkers  = new Checker[file_count];
+        
+        for(int i = 0; i < file_count; i += 1) {
+            InputFile file = input_files[i];
+            
+            checkers[i] = new Checker(tool.collectStatistics(file), file);
+        }
+        
+        System.out.println();
+        
+        /**
+         * Checkers
+         */
+        if (run_checker) {
+            for(int c = 0; c < file_count; c += 1) {
+                Checker checker = checkers[c];
+                
+                for(int f = 0; f < file_count; f += 1) {
+                    checker.check(input_files[f]);
+                }
+            }
+            
+        }
+
+        /*
+         * Detection test
+         */
+        if (encoding_test) {
+            char[] buffer   = new char[128];
+            
+            System.out.println("Detection test");
+            
+            for (int f = 0; f < file_count; f += 1) {
+                InputFile file = input_files[f];
+                int[] histogram = new int[file_count];
+                int charCount, misses = 0;
+                
+                System.out.println(file.getFilename() + "(" + file.getEncoding() + "):");
+                file.open();
+                
+                for (int c = 0; c < file_count; c += 1) {
+                    checkers[c].setMapper(file);                
+                }
+                
+                // for each buffer
+                //     for each checker
+                //         call checkBuffer, save score
+                //     find highest score, update histogram for that checker
+                // show checker histogram
+                
+                while ((charCount = file.read(buffer)) > 0) {
+                    int[] scores = new int[file_count];
+                    int bestFit = -1, maxScore = 0;
+                    
+                    for (int c = 0; c < file_count; c += 1) {
+                        scores[c] = checkers[c].checkBuffer(buffer, charCount);
+                    }
+                    
+                    for (int c = 0; c < file_count; c += 1) {
+                        int score = scores[c];
+                        
+                        if (score > maxScore) {
+                            maxScore = score;
+                            bestFit = c;
+                        }
+                    }
+                    
+                    if (bestFit >= 0) {
+                        histogram[bestFit] += 1;                    
+                    } else {
+                        misses += 1;
+                    }
+                }
+                
+                for (int c = 0; c < file_count; c += 1) {
+                    System.out.println("    " + checkers[c].getLanguage() + ": " + histogram[c]);
+                }
+                
+                if (misses > 0) {
+                    System.out.println("    NONE: " + misses);
+                }
+                
+                System.out.println();
+            }            
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
new file mode 100644
index 0000000..0f4fd7f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.compression;
+
+
+/**
+ * Utility class to generate the tables used by the SCSU interface and
+ * the UnicodeCompressor class.
+ *
+ * @author Stephen F. Booth
+ * @version 1.0 08 Mar 99
+ */
+class CompressionTableGenerator
+{
+    // duplicate of constants in SCSU
+
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+    final static int BLOCKSIZE = 0xFF;
+    
+    /**
+     * Generate the table used as sOffsetTable in SCSU.
+     * This table contains preformed indices so we can do array lookups 
+     * instead of calculations for speed during decompression.
+     */
+    static void printOffsetTable()
+    {
+        int     i           = 0;
+    int []    offsetTable = new int [ BLOCKSIZE + 1 ];
+
+        // 0x00 is reserved
+
+        // half blocks from U+0080 to U+3380
+        for( i = 0x01; i < 0x68; i++ )
+            offsetTable[i] = i * 0x80;
+    
+        // half blocks from U+E000 to U+FF80
+        for( i = 0x68; i < 0xA8; i++ )
+            offsetTable[i] = (i * 0x80) + 0xAC00;
+    
+        // 0xA8..0xF8 is reserved
+ 
+        offsetTable[ LATININDEX ] = 0x00C0;
+        offsetTable[ IPAEXTENSIONINDEX ] = 0x0250;
+        offsetTable[ GREEKINDEX ] = 0x0370;
+        offsetTable[ ARMENIANINDEX ] = 0x0530;
+        offsetTable[ HIRAGANAINDEX ] = 0x3040;
+        offsetTable[ KATAKANAINDEX ] = 0x30A0;
+        offsetTable[ HALFWIDTHKATAKANAINDEX ] = 0xFF60;
+
+        // dump the generated table
+    System.out.println("static int [] sOffsetTable = {");
+        for(i = 0; i < offsetTable.length - 1; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i])
+                 + ", ");
+        for(i = offsetTable.length - 1; i < offsetTable.length; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i]));
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    /**
+     * Generate the table used as sSingleTagTable in UnicodeCompressor.
+     * This table contains boolean values indicating if a byte is a
+     * single-byte mode tag.
+     */
+    static void printSingleTagTable()
+    {
+        int        i              = 0;
+    boolean [] singleTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+        
+        case SQUOTEU:  case SCHANGEU: 
+        case SDEFINEX: case SRESERVED:
+        case SQUOTE0:  case SQUOTE1:  
+        case SQUOTE2:  case SQUOTE3:
+        case SQUOTE4:  case SQUOTE5:  
+        case SQUOTE6:  case SQUOTE7:
+        case SCHANGE0: case SCHANGE1: 
+        case SCHANGE2: case SCHANGE3:
+        case SCHANGE4: case SCHANGE5: 
+        case SCHANGE6: case SCHANGE7:
+        case SDEFINE0: case SDEFINE1: 
+        case SDEFINE2: case SDEFINE3:
+        case SDEFINE4: case SDEFINE5: 
+        case SDEFINE6: case SDEFINE7:
+        singleTagTable[i] = true;
+                break;
+        
+        default:
+        singleTagTable[i] = false;
+                break;
+            }
+        }
+    
+        // dump the generated table
+        System.out.println("private static boolean [] sSingleTagTable = {");
+        for(i = 0; i < singleTagTable.length - 1; i++)
+            System.out.print(singleTagTable[i] + ", ");
+        for(i = singleTagTable.length - 1; i < singleTagTable.length; i++)
+            System.out.print(singleTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    
+    /**
+     * Generate the table used as sUnicodeTagTable in 
+     * This table contains boolean values indicating if a byte is a
+     * unicode mode tag.
+     */
+    static void printUnicodeTagTable()
+    {
+        int        i               = 0;
+    boolean [] unicodeTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+        case UQUOTEU:  case UDEFINEX: 
+        case URESERVED:
+        case UCHANGE0: case UCHANGE1: 
+        case UCHANGE2: case UCHANGE3:
+        case UCHANGE4: case UCHANGE5: 
+        case UCHANGE6: case UCHANGE7:
+        case UDEFINE0: case UDEFINE1: 
+        case UDEFINE2: case UDEFINE3:
+        case UDEFINE4: case UDEFINE5: 
+        case UDEFINE6: case UDEFINE7:
+        unicodeTagTable[i] = true;
+                break;
+        
+        default:
+        unicodeTagTable[i] = false;
+                break;
+            }
+        }
+    
+        // dump the generated table
+        System.out.println("private static boolean [] sUnicodeTagTable = {");
+        for(i = 0; i < unicodeTagTable.length - 1; i++)
+            System.out.print(unicodeTagTable[i] + ", ");
+        for(i = unicodeTagTable.length - 1; i < unicodeTagTable.length; i++)
+            System.out.print(unicodeTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    public static void main(String[] argv)
+    {
+        printOffsetTable();
+        printSingleTagTable();
+        printUnicodeTagTable();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/compression/package.html b/src/com/ibm/icu/dev/tool/compression/package.html
new file mode 100644
index 0000000..b4a3ec9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tool used to rebuild tables used by the Unicode compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/docs/APIData.java b/src/com/ibm/icu/dev/tool/docs/APIData.java
new file mode 100644
index 0000000..44165b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/APIData.java
@@ -0,0 +1,148 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Represent a file of APIInfo records.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+import java.util.zip.*;
+
+public final class APIData {
+    int version;
+    String name;
+    String base;
+    TreeSet set;
+
+    static APIData read(BufferedReader br, boolean internal) {
+        try {
+            APIData data = new APIData();
+
+            data.version = Integer.parseInt(APIInfo.readToken(br)); // version
+            if (data.version > APIInfo.VERSION) {
+                throw new IllegalArgumentException("data version " + data.version + " is newer than current version (" + APIInfo.VERSION + ")");
+            }
+            data.name = APIInfo.readToken(br);
+            data.base = APIInfo.readToken(br); // base
+            br.readLine();
+
+            data.set = new TreeSet(APIInfo.defaultComparator());
+            for (APIInfo info = new APIInfo(); info.read(br); info = new APIInfo()) {
+                if (internal || !info.isInternal()) {
+                    data.set.add(info);
+                }
+            }
+            // System.out.println("read " + data.set.size() + " record(s)");
+            return data;
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("error reading api data");
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    static APIData read(File file, boolean internal) {
+        String fileName = file.getName();
+        try {
+            InputStream is;
+            if (fileName.endsWith(".zip")) {
+                ZipFile zf = new ZipFile(file);
+                Enumeration entryEnum = zf.entries();
+                if (entryEnum.hasMoreElements()) {
+                    ZipEntry entry = (ZipEntry)entryEnum.nextElement();
+                    is = zf.getInputStream(entry);
+                    // we only handle one!!!
+                } else {
+                    throw new IOException("zip file is empty");
+                }
+            } else {
+                is = new FileInputStream(file);
+                if (fileName.endsWith(".gz")) {
+                    is = new GZIPInputStream(is);
+                }
+            }
+            InputStreamReader isr = new InputStreamReader(is);
+            return read(new BufferedReader(isr), internal);
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("error getting info stream: " + fileName);
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    static APIData read(String fileName, boolean internal) {
+        return read(new File(fileName), internal);
+    }
+
+    private static final String[] stanames = { "draft", "stable", "deprecated", "obsolete", "internal" };
+    private static final String[] catnames = { "classes", "fields", "constructors", "methods" };
+
+    public void printStats(PrintWriter pw) {
+        // classes, methods, fields
+        // draft, stable, other
+
+        int[] stats = new int[catnames.length * stanames.length];
+
+        Iterator iter = set.iterator();
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+
+            if (info.isPublic() || info.isProtected()) {
+                int sta = info.getVal(APIInfo.STA);
+                int cat = info.getVal(APIInfo.CAT);
+                stats[cat * stanames.length + sta] += 1;
+            }
+        }
+
+        int tt = 0;
+        for (int cat = 0; cat < catnames.length; ++cat) {
+            pw.println(catnames[cat]);
+            int t = 0;
+            for (int sta = 0; sta < stanames.length; ++sta) {
+                int v = stats[cat * stanames.length + sta];
+                t += v;
+                pw.println("   " + stanames[sta] + ": " + v);
+            }
+            tt += t;
+            pw.println("total: " + t);
+            pw.println();
+        }
+        pw.println("total apis: " + tt);
+    }
+
+    public static void main(String[] args) {
+        PrintWriter pw = new PrintWriter(System.out);
+
+        boolean internal = false;
+        String path = "src/com/ibm/icu/dev/tool/docs/";
+
+        String fn = "icu4j341.api.gz";
+        if (args.length == 0) {
+            args = new String[] { "-file", fn };
+        }
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-path:")) {
+                path = args[++i];
+            } else if (arg.equals("-internal:")) {
+                internal = args[++i].toLowerCase().charAt(0) == 't';
+            } else if (arg.equals("-file")) {
+                fn = args[++i];
+
+                File f = new File(path, fn);
+                read(f,internal).printStats(pw);
+                pw.flush();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/APIInfo.java b/src/com/ibm/icu/dev/tool/docs/APIInfo.java
new file mode 100644
index 0000000..fde36e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/APIInfo.java
@@ -0,0 +1,544 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Represents the API information on a doc element.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+
+class APIInfo {
+    // version id for the format of the APIInfo data
+
+    public static final int VERSION = 2;
+
+    // public keys and values for queries on info
+
+    public static final int STA = 0, STA_DRAFT = 0, STA_STABLE = 1, STA_DEPRECATED = 2, STA_OBSOLETE = 3, STA_INTERNAL = 4;
+    public static final int VIS = 1, VIS_PACKAGE = 0, VIS_PUBLIC= 1, VIS_PROTECTED = 2, VIS_PRIVATE = 3;
+    public static final int STK = 2, STK_STATIC = 1;
+    public static final int FIN = 3, FIN_FINAL = 1;
+    public static final int SYN = 4, SYN_SYNCHRONIZED = 1;
+    public static final int ABS = 5, ABS_ABSTRACT = 1;
+    public static final int CAT = 6, CAT_CLASS = 0, CAT_FIELD = 1, CAT_CONSTRUCTOR = 2, CAT_METHOD = 3;
+    public static final int PAK = 7;
+    public static final int CLS = 8;
+    public static final int NAM = 9;
+    public static final int SIG = 10;
+    public static final int EXC = 11;
+    public static final int NUM_TYPES = 11;
+
+    // the separator between tokens in the data file
+    public int[] masks = { 0x7, 0x3, 0x1, 0x1, 0x1, 0x1, 0x3 };
+    public int[] shifts = { 0, 3, 5, 6, 7, 8, 9 };
+
+    public static final char SEP = ';';
+
+    // Internal State
+    private int    info; // information about numeric values packed into an int as variable-length nibbles
+    private String pack = ""; // package
+    private String cls  = "";  // enclosing class
+    private String name = ""; // name
+    private String sig  = "";  // signature, class: inheritance, method: signature, field: type, const: signature
+    private String exc  = "";  // throws
+    private String stver = ""; // status version
+
+    private boolean includeStatusVer = false;
+
+    public int hashCode() {
+        return (((pack.hashCode() << 3) ^ cls.hashCode()) << 3) ^ name.hashCode();
+    }
+
+    public boolean equals(Object rhs) {
+        if (rhs == this) return true;
+        if (rhs == null) return false;
+        try {
+            APIInfo that = (APIInfo)rhs;
+            return this.info == that.info &&
+                this.pack.equals(that.pack) &&
+                this.cls.equals(that.cls) &&
+                this.name.equals(that.name) &&
+                this.sig.equals(that.sig) &&
+                this.exc.equals(that.exc) &&
+                this.stver.equals(this.stver);
+        }
+        catch (ClassCastException e) {
+            return false;
+        }
+    }
+
+    public void setDraft() { setType(STA, STA_DRAFT); }
+    public void setStable() { setType(STA, STA_STABLE); }
+    public void setDeprecated() { setType(STA, STA_DEPRECATED); }
+    public void setObsolete() { setType(STA, STA_OBSOLETE); }
+    public void setInternal() { setType(STA, STA_INTERNAL); }
+    public void setPackage() { setType(VIS, VIS_PACKAGE); }
+    public void setPublic() { setType(VIS, VIS_PUBLIC); }
+    public void setProtected() { setType(VIS, VIS_PROTECTED); }
+    public void setPrivate() { setType(VIS, VIS_PRIVATE); }
+    public void setStatic() { setType(STK, STK_STATIC); }
+    public void setFinal() { setType(FIN, FIN_FINAL); }
+    public void setSynchronized() { setType(SYN, SYN_SYNCHRONIZED); }
+    public void setAbstract() { setType(ABS, ABS_ABSTRACT); }
+    public void setClass() { setType(CAT, CAT_CLASS); }
+    public void setField() { setType(CAT, CAT_FIELD); }
+    public void setConstructor() { setType(CAT, CAT_CONSTRUCTOR); }
+    public void setMethod() { setType(CAT, CAT_METHOD); }
+
+    public void setPackage(String val) { setType(PAK, val); }
+    public void setClassName(String val) { setType(CLS, val); }
+    public void setName(String val) { setType(NAM, val); }
+    public void setSignature(String val) { setType(SIG, val); }
+    public void setExceptions(String val) { setType(EXC, val); }
+
+    public boolean isDraft() { return getVal(STA) == STA_DRAFT; }
+    public boolean isStable() { return getVal(STA) == STA_STABLE; }
+    public boolean isDeprecated() { return getVal(STA) == STA_DEPRECATED; }
+    public boolean isObsolete() { return getVal(STA) == STA_OBSOLETE; }
+    public boolean isInternal() { return getVal(STA) == STA_INTERNAL; }
+    public boolean isPackage() { return getVal(VIS) == VIS_PACKAGE; }
+    public boolean isPublic() { return getVal(VIS) == VIS_PUBLIC; }
+    public boolean isProtected() { return getVal(VIS) == VIS_PROTECTED; }
+    public boolean isPrivate() { return getVal(VIS) == VIS_PRIVATE; }
+    public boolean isStatic() { return getVal(STK) == STK_STATIC; }
+    public boolean isFinal() { return getVal(FIN) == FIN_FINAL; }
+    public boolean isSynchronized() { return getVal(SYN) == SYN_SYNCHRONIZED; }
+    public boolean isAbstract() { return getVal(ABS) == ABS_ABSTRACT; }
+    public boolean isClass() { return getVal(CAT) == CAT_CLASS; }
+    public boolean isField() { return getVal(CAT) == CAT_FIELD; }
+    public boolean isConstructor() { return getVal(CAT) == CAT_CONSTRUCTOR; }
+    public boolean isMethod() { return getVal(CAT) == CAT_METHOD; }
+
+    public String getPackageName() { return get(PAK, true); }
+    public String getClassName() { return get(CLS, true); }
+    public String getName() { return get(NAM, true); }
+    public String getSignature() { return get(SIG, true); }
+    public String getExceptions() { return get(EXC, true); }
+
+    public void setStatusVersion(String v) { stver = v; }
+    public String getStatusVersion() { return stver; }
+
+    /**
+     * Return the integer value for the provided type.  The type
+     * must be one of the defined type names.  The return value
+     * will be one of corresponding values for that type.
+     */
+    public int getVal(int typ) {
+        validateType(typ);
+        if (typ >= shifts.length) {
+            return 0;
+        }
+        return (info >>> shifts[typ]) & masks[typ];
+    }
+
+    /**
+     * Return the string value for the provided type.  The type
+     * must be one of the defined type names.  The return value
+     * will be one of corresponding values for that type.  Brief
+     * should be true for writing data files, false for presenting
+     * information to the user.
+     */
+    public String get(int typ, boolean brief) {
+        validateType(typ);
+        String[] vals = brief ? shortNames[typ] : names[typ];
+        if (vals == null) {
+            switch (typ) {
+            case PAK: return pack;
+            case CLS: return cls;
+            case NAM: return name;
+            case SIG: return sig;
+            case EXC: return exc;
+            }
+        }
+        int val = (info >>> shifts[typ]) & masks[typ];
+        return vals[val];
+    }
+
+    /**
+     * Set the numeric value for the type.  The value should be a
+     * value corresponding to the type.  Only the lower two bits
+     * of the value are used.
+     */
+    public void setType(int typ, int val) {
+        validateType(typ);
+        if (typ < masks.length) {
+            info &= ~(masks[typ] << shifts[typ]);
+            info |= (val&masks[typ]) << shifts[typ];
+        }
+    }
+
+    /**
+     * Set the string value for the type.  For numeric types,
+     * the value should be a string in 'brief' format.  For
+     * non-numeric types, the value can be any
+     * string.
+     */
+    private void setType(int typ, String val) {
+        validateType(typ);
+        String[] vals = shortNames[typ];
+        if (vals == null) {
+            if (val == null) {
+                val = "";
+            }
+            switch (typ) {
+            case PAK: pack = val; break;
+            case CLS: cls = val; break;
+            case NAM: name = val; break;
+            case SIG: sig = val; break;
+            case EXC: exc = val; break;
+            }
+            return;
+        }
+
+        for (int i = 0; i < vals.length; ++i) {
+            if (val.equalsIgnoreCase(vals[i])) {
+                info &= ~(masks[typ] << shifts[typ]);
+                info |= i << shifts[typ];
+                return;
+            }
+        }
+
+        throw new IllegalArgumentException("unrecognized value '" + val + "' for type '" + typeNames[typ] + "'");
+    }
+
+    /**
+     * Enable status version included in input/output
+     */
+    public void includeStatusVersion(boolean include) {
+        includeStatusVer = include;
+    }
+
+    /**
+     * Write the information out as a single line in brief format.
+     * If there are IO errors, throws a RuntimeException.
+     */
+    public void writeln(BufferedWriter w) {
+        try {
+            for (int i = 0; i < NUM_TYPES; ++i) {
+                String s = get(i, true);
+                if (s != null) {
+                    w.write(s);
+                }
+                if (includeStatusVer && i == STA) {
+                    String ver = getStatusVersion();
+                    if (ver.length() > 0) {
+                        w.write("@");
+                        w.write(getStatusVersion());
+                    }
+                }
+                w.write(SEP);
+            }
+            w.newLine();
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("IO Error");
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    /**
+     * Read a record from the input and initialize this APIInfo.
+     * Return true if successful, false if EOF, otherwise throw
+     * a RuntimeException.
+     */
+    public boolean read(BufferedReader r) {
+        int i = 0;
+        try {
+            for (; i < NUM_TYPES; ++i) {
+                setType(i, readToken(r));
+            }
+            r.readLine(); // swallow line end sequence
+        }
+        catch (IOException e) {
+            if (i == 0) { // assume if first read returns error, we have reached end of input
+                return false;
+            }
+            RuntimeException re = new RuntimeException("IO Error");
+            re.initCause(e);
+            throw re;
+        }
+
+        return true;
+    }
+
+    /**
+     * Read one token from input, which should have been written by
+     * APIInfo.  Throws IOException if EOF is encountered before the
+     * token is complete (i.e. before the separator character is
+     * encountered) or if the token exceeds the maximum length of
+     * 255 chars.
+     */
+    public static String readToken(BufferedReader r) throws IOException {
+        char[] buf = new char[256];
+        int i = 0;
+        for (; i < buf.length; ++i) {
+            int c = r.read();
+            if (c == -1) {
+                throw new IOException("unexpected EOF");
+            } else if (c == SEP) {
+                break;
+            }
+            buf[i] = (char)c;
+        }
+        if (i == buf.length) {
+            throw new IOException("unterminated token" + new String(buf));
+        }
+
+        return new String(buf, 0, i);
+    }
+
+    /**
+     * The default comparator for APIInfo.  This compares packages, class/name
+     * (as the info represents a class or other object), category, name,
+     * and signature.
+     */
+    public static Comparator defaultComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                            .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                        if (result == 0) {
+                            result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                            if (result == 0) {
+                                result = lhi.name.compareTo(rhi.name);
+                                if (result == 0) {
+                                    result = lhi.sig.compareTo(rhi.sig);
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * This compares two APIInfos by package, class/name, category, name, and then if
+     * the APIInfo does not represent a class, by signature.  The difference between
+     * this and the default comparator is that APIInfos representing classes are considered
+     * equal regardless of their signatures (which represent inheritance for classes).
+     */
+    public static Comparator changedComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                            .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                        if (result == 0) {
+                            result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                            if (result == 0) {
+                                result = lhi.name.compareTo(rhi.name);
+                                if (result == 0 && lhi.getVal(CAT) != CAT_CLASS) {
+                                    // signature change on fields ignored
+                                    if (lhi.getVal(CAT) != CAT_FIELD) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * This compares two APIInfos by package, then sorts classes before non-classes, then
+     * by class/name, category, name, and signature.
+     */
+    public static Comparator classFirstComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        boolean lcls = lhi.getVal(CAT) == CAT_CLASS;
+                        boolean rcls = rhi.getVal(CAT) == CAT_CLASS;
+                        result = lcls == rcls ? 0 : (lcls ? -1 : 1);
+                        if (result == 0) {
+                            result = (lcls ? lhi.name : lhi.cls).compareTo(rcls ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0 && !lcls) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * Write the data in report format.
+     */
+    public void print(PrintWriter pw, boolean detail, boolean html) {
+        StringBuffer buf = new StringBuffer();
+
+        // remove all occurrences of icu packages from the param string
+        // fortunately, all the packages have 4 chars (lang, math, text, util).
+        String xsig = sig;
+        if (!detail) {
+            final String ICUPACK = "com.ibm.icu.";
+            StringBuffer tbuf = new StringBuffer();
+            for (int i = 0; i < sig.length();) {
+                int n = sig.indexOf(ICUPACK, i);
+                if (n == -1) {
+                    tbuf.append(sig.substring(i));
+                    break;
+                }
+                tbuf.append(sig.substring(i, n));
+                i = n + ICUPACK.length() + 5; // trailing 'xxxx.'
+            }
+            xsig = tbuf.toString();
+        }
+
+        // construct signature
+        for (int i = STA; i < CAT; ++i) { // include status
+            String s = get(i, false);
+            if (s != null && s.length() > 0) {
+                if (html && s.indexOf("internal") != -1) {
+                    buf.append("<span style='color:red'>");
+                    buf.append(s);
+                    buf.append("</span>");
+                } else {
+                    buf.append(s);
+                    buf.append(' ');
+                }
+            }
+        }
+
+        int val = getVal(CAT);
+        switch (val) {
+        case CAT_CLASS:
+            if (sig.indexOf("extends") == -1) {
+                buf.append("interface ");
+            } else {
+                buf.append("class ");
+            }
+        if (html) {
+        buf.append("<i>");
+        }
+            if (cls.length() > 0) {
+                buf.append(cls);
+                buf.append('.');
+            }
+            buf.append(name);
+        if (html) {
+        buf.append("</i>");
+        }
+            if (detail) {
+                buf.append(' ');
+                buf.append(sig);
+            }
+            break;
+
+        case CAT_FIELD:
+            buf.append(xsig);
+            buf.append(' ');
+            buf.append(name);
+            break;
+
+        case CAT_METHOD:
+        case CAT_CONSTRUCTOR:
+            int n = xsig.indexOf('(');
+            if (n > 0) {
+                buf.append(xsig.substring(0, n));
+                buf.append(' ');
+            } else {
+                n = 0;
+            }
+        if (html) {
+        buf.append("<i>" + name + "</i>");
+        } else {
+        buf.append(name);
+        }
+            buf.append(xsig.substring(n));
+            break;
+        }
+
+        pw.print(buf.toString());
+    }
+
+    public void println(PrintWriter pw, boolean detail, boolean html) {
+        print(pw, detail, html);
+        pw.println();
+    }
+
+    private static final String[] typeNames = {
+        "status", "visibility", "static", "final", "synchronized",
+        "abstract", "category", "package", "class", "name", "signature"
+    };
+
+    public static final String getTypeValName(int typ, int val) {
+        try {
+            return names[typ][val];
+        }
+        catch (Exception e) {
+            return "";
+        }
+    }
+
+    private static final String[][] names = {
+        { "(draft)     ", "(stable)    ", "(deprecated)", "(obsolete)  ", "*internal*  " },
+        { "package", "public", "protected", "private" },
+        { "", "static" },
+        { "", "final" },
+        { "", "synchronized" },
+        { "", "abstract" },
+        { "class", "field", "constructor", "method"  },
+        null,
+        null,
+        null,
+        null,
+        null
+    };
+
+    private static final String[][] shortNames = {
+        { "DR", "ST", "DP", "OB", "IN" },
+        { "PK", "PB", "PT", "PR" },
+        { "NS", "ST" },
+        { "NF", "FN" },
+        { "NS", "SY" },
+        { "NA", "AB" },
+        { "L", "F", "C", "M" },
+        null,
+        null,
+        null,
+        null,
+        null
+    };
+
+    private static void validateType(int typ) {
+        if (typ < 0 || typ > NUM_TYPES) {
+            throw new IllegalArgumentException("bad type index: " + typ);
+        }
+    }
+
+    public String toString() {
+        return get(NAM, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CheckAPI.java b/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
new file mode 100644
index 0000000..6db3c34
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
@@ -0,0 +1,1027 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Generate a list of ICU's public APIs, sorted by qualified name and signature
+ * public APIs are all non-internal, non-package apis in com.ibm.icu.[lang|math|text|util].
+ * For each API, list
+ * - public, package, protected, or private (PB PK PT PR)
+ * - static or non-static (STK NST)
+ * - final or non-final (FN NF)
+ * - synchronized or non-synchronized (SYN NSY)
+ * - stable, draft, deprecated, obsolete (ST DR DP OB)
+ * - abstract or non-abstract (AB NA)
+ * - constructor, member, field (C M F)
+ *
+ * Requires JDK 1.4.2 or later
+ * 
+ * Sample invocation:
+ * c:/j2sdk1.4.2/bin/javadoc 
+ *   -classpath c:/jd2sk1.4.2/lib/tools.jar 
+ *   -doclet com.ibm.icu.dev.tool.docs.CheckAPI 
+ *   -docletpath c:/doug/cvsproj/icu4j/src 
+ *   -sourcepath c:/eclipse2.1/workspace2/icu4j/src 
+ *   -compare c:/doug/cvsproj/icu4j/src/com/ibm/icu/dev/tool/docs/api2_6_1.txt 
+ *   -output foo 
+ *   com.ibm.icu.text
+ *
+ * todo: separate generation of data files (which requires taglet) from 
+ * comparison and report generation (which does not require it)
+ * todo: provide command-line control of filters of which subclasses/packages to process
+ * todo: record full inheritance heirarchy, not just immediate inheritance 
+ * todo: allow for aliasing comparisons (force (pkg.)*class to be treated as though it 
+ * were in a different pkg/class heirarchy (facilitates comparison of icu4j and java)
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+import java.io.*;
+import java.util.*;
+
+public class CheckAPI {
+    RootDoc root;
+    String compare; // file
+    String compareName;
+    TreeSet compareSet;
+    TreeSet results;
+    boolean html;
+    String srcName = "Current"; // default source name
+    String output;
+    
+    private static final int DATA_FILE_VERSION = 1;
+    private static final char SEP = ';';
+
+    private static final int STA = 0, STA_DRAFT = 0, STA_STABLE = 1, STA_DEPRECATED = 2, STA_OBSOLETE = 3;
+    private static final int VIS = 1, VIS_PACKAGE = 0, VIS_PUBLIC= 1, VIS_PROTECTED = 2, VIS_PRIVATE = 3;
+    private static final int STK = 2, STK_STATIC = 1;
+    private static final int FIN = 3, FIN_FINAL = 1;
+    private static final int SYN = 4, SYN_SYNCHRONIZED = 1;
+    private static final int ABS = 5, ABS_ABSTRACT = 1;
+    private static final int CAT = 6, CAT_CLASS = 0, CAT_FIELD = 1, CAT_CONSTRUCTOR = 2, CAT_METHOD = 3;
+    private static final int PAK = 7;
+    private static final int CLS = 8;
+    private static final int NAM = 9;
+    private static final int SIG = 10;
+    private static final int EXC = 11;
+    private static final int NUM_TYPES = 11;
+
+    static abstract class APIInfo {
+        public abstract int getVal(int typ);
+        public abstract String get(int typ, boolean brief);
+        public abstract void write(BufferedWriter w, boolean brief, boolean html, boolean detail);
+    }
+        
+    final static class Info extends APIInfo {
+        private int    info;
+        private String pack; // package
+        private String cls; // enclosing class
+        private String name; // name
+        private String sig;  // signature, class: inheritance, method: signature, field: type, const: signature
+        private String exc;  // throws 
+        
+        public int getVal(int typ) {
+            validateType(typ);
+            return (info >> (typ*2)) & 0x3;
+        }
+
+        public String get(int typ, boolean brief) {
+            validateType(typ);
+            String[] vals = brief ? shortNames[typ] : names[typ];
+            if (vals == null) {
+                switch (typ) {
+                case PAK: return pack;
+                case CLS: return cls;
+                case NAM: return name;
+                case SIG: return sig;
+                case EXC: return exc;
+                }
+            }
+            int val = (info >> (typ*2)) & 0x3;
+            return vals[val];
+        }
+
+        private void setType(int typ, int val) {
+            validateType(typ);
+            info &= ~(0x3 << (typ*2));
+            info |= (val&0x3) << (typ * 2);
+        }
+
+        private void setType(int typ, String val) {
+            validateType(typ);
+            String[] vals = shortNames[typ];
+            if (vals == null) {
+                switch (typ) {
+                case PAK: pack = val; break;
+                case CLS: cls = val; break;
+                case NAM: name = val; break;
+                case SIG: sig = val; break;
+                case EXC: exc = val; break;
+                }
+                return;
+            }
+
+            for (int i = 0; i < vals.length; ++i) {
+                if (val.equalsIgnoreCase(vals[i])) {
+                    info &= ~(0x3 << (typ*2));
+                    info |= i << (typ*2);
+                    return;
+                }
+            }
+
+            throw new IllegalArgumentException("unrecognized value '" + val + "' for type '" + typeNames[typ] + "'");
+        }
+
+        public void write(BufferedWriter w, boolean brief, boolean html, boolean detail) {
+            try {
+                if (brief) {
+                    for (int i = 0; i < NUM_TYPES; ++i) {
+                        String s = get(i, true);
+                        if (s != null) {
+                            w.write(s);
+                        }
+                        w.write(SEP);
+                    }
+                } else {
+                    // remove all occurrences of icu packages from the param string
+                    // fortunately, all the packages have 4 chars (lang, math, text, util).
+                    String xsig = sig;
+                    if (!detail) {
+                        final String ICUPACK = "com.ibm.icu.";
+                        StringBuffer buf = new StringBuffer();
+                        for (int i = 0; i < sig.length();) {
+                            int n = sig.indexOf(ICUPACK, i);
+                            if (n == -1) {
+                                buf.append(sig.substring(i));
+                                break;
+                            }
+                            buf.append(sig.substring(i, n));
+                            i = n + ICUPACK.length() + 5; // trailing 'xxxx.'
+                        }
+                        xsig = buf.toString();
+                    }
+
+                    // construct signature
+                    for (int i = STA; i < CAT; ++i) { // include status
+                        String s = get(i, false);
+                        if (s != null && s.length() > 0) {
+                            if (i == STA) {
+                                w.write('(');
+                                w.write(s);
+                                w.write(')');
+                            } else {
+                                w.write(s);
+                            }
+                            w.write(' ');
+                        }
+                    }
+
+                    int val = getVal(CAT);
+                    switch (val) {
+                    case CAT_CLASS:
+                        if (sig.indexOf("extends") == -1) {
+                            w.write("interface ");
+                        } else {
+                            w.write("class ");
+                        }
+                        if (cls.length() > 0) {
+                            w.write(cls);
+                            w.write('.');
+                        }
+                        w.write(name);
+                        if (detail) {
+                            w.write(' ');
+                            w.write(sig);
+                        }
+                        break;
+
+                    case CAT_FIELD:
+                        w.write(xsig);
+                        w.write(' ');
+                        w.write(name);
+                        break;
+
+                    case CAT_METHOD:
+                    case CAT_CONSTRUCTOR:
+                        int n = xsig.indexOf('(');
+                        if (n > 0) {
+                            w.write(xsig.substring(0, n));
+                            w.write(' ');
+                        } else {
+                            n = 0;
+                        }
+                        w.write(name);
+                        w.write(xsig.substring(n));
+                        break;
+                    }
+                }
+                w.newLine();
+            }
+            catch (IOException e) {
+                RuntimeException re = new RuntimeException("IO Error");
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        public boolean read(BufferedReader r) {
+            int i = 0;
+            try {
+                for (; i < NUM_TYPES; ++i) {
+                    setType(i, readToken(r));
+                }
+                r.readLine(); // swallow line end sequence
+            }
+            catch (IOException e) {
+                if (i == 0) { // assume if first read returns error, we have reached end of input
+                    return false;
+                }
+                RuntimeException re = new RuntimeException("IO Error");
+                re.initCause(e);
+                throw re;
+            }
+
+            return true;
+        }
+
+        public boolean read(ProgramElementDoc doc) {
+
+            // Doc. name
+            // Doc. isField, isMethod, isConstructor, isClass, isInterface
+            // ProgramElementDoc. containingClass, containingPackage
+            // ProgramElementDoc. isPublic, isProtected, isPrivate, isPackagePrivate
+            // ProgramElementDoc. isStatic, isFinal
+            // MemberDoc.isSynthetic
+            // ExecutableMemberDoc isSynchronized, signature
+            // Type.toString() // e.g. "String[][]"
+            // ClassDoc.isAbstract, superClass, interfaces, fields, methods, constructors, innerClasses
+            // FieldDoc type
+            // ConstructorDoc qualifiedName
+            // MethodDoc isAbstract, returnType
+
+            
+            // status
+            setType(STA, tagStatus(doc));
+
+            // visibility
+            if (doc.isPublic()) {
+                setType(VIS, VIS_PUBLIC);
+            } else if (doc.isProtected()) {
+                setType(VIS, VIS_PROTECTED);
+            } else if (doc.isPrivate()) {
+                setType(VIS, VIS_PRIVATE);
+            } else {
+                // default is package
+            }
+
+            // static
+            if (doc.isStatic()) {
+                setType(STK, STK_STATIC);
+            } else {
+                // default is non-static
+            }
+
+            // final
+            if (doc.isFinal()) {
+                setType(FIN, FIN_FINAL);
+            } else {
+                // default is non-final
+            }
+
+            // type
+            if (doc.isField()) {
+                setType(CAT, CAT_FIELD);
+            } else if (doc.isMethod()) {
+                setType(CAT, CAT_METHOD);
+            } else if (doc.isConstructor()) {
+                setType(CAT, CAT_CONSTRUCTOR);
+            } else if (doc.isClass() || doc.isInterface()) {
+                setType(CAT, CAT_CLASS);
+            }
+
+            setType(PAK, doc.containingPackage().name());
+            setType(CLS, (doc.isClass() || doc.isInterface() || (doc.containingClass() == null)) ? "" : doc.containingClass().name());
+            setType(NAM, doc.name());
+
+            if (doc instanceof FieldDoc) {
+                FieldDoc fdoc = (FieldDoc)doc;
+                setType(SIG, fdoc.type().toString());
+            } else if (doc instanceof ClassDoc) {
+                ClassDoc cdoc = (ClassDoc)doc;
+
+                if (cdoc.isClass() && cdoc.isAbstract()) { // interfaces are abstract by default, don't mark them as abstract
+                    setType(ABS, ABS_ABSTRACT);
+                }
+
+                StringBuffer buf = new StringBuffer();
+                if (cdoc.isClass()) {
+                    buf.append("extends ");
+                    buf.append(cdoc.superclass().qualifiedName());
+                }
+                ClassDoc[] imp = cdoc.interfaces();
+                if (imp != null && imp.length > 0) {
+                    if (buf.length() > 0) {
+                        buf.append(" ");
+                    }
+                    buf.append("implements");
+                    for (int i = 0; i < imp.length; ++i) {
+                        if (i != 0) {
+                            buf.append(",");
+                        }
+                        buf.append(" ");
+                        buf.append(imp[i].qualifiedName());
+                    }
+                }
+                setType(SIG, buf.toString());
+            } else {
+                ExecutableMemberDoc emdoc = (ExecutableMemberDoc)doc;
+                if (emdoc.isSynchronized()) {
+                    setType(SYN, SYN_SYNCHRONIZED);
+                }
+
+                if (doc instanceof MethodDoc) {
+                    MethodDoc mdoc = (MethodDoc)doc;
+                    if (mdoc.isAbstract()) {
+                        setType(ABS, ABS_ABSTRACT);
+                    }
+                    setType(SIG, mdoc.returnType().toString() + emdoc.signature());
+                } else {
+                    // constructor
+                    setType(SIG, emdoc.signature());
+                }
+            }
+
+            return true;
+        }
+
+        public static Comparator defaultComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                                .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        public static Comparator changedComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                                .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0 && lhi.getVal(CAT) != CAT_CLASS) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        public static Comparator classFirstComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            boolean lcls = lhi.getVal(CAT) == CAT_CLASS;
+                            boolean rcls = rhi.getVal(CAT) == CAT_CLASS;
+                            result = lcls == rcls ? 0 : (lcls ? -1 : 1);
+                            if (result == 0) {
+                                result = (lcls ? lhi.name : lhi.cls).compareTo(rcls ? rhi.name : rhi.cls);
+                                if (result == 0) {
+                                    result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                    if (result == 0) {
+                                        result = lhi.name.compareTo(rhi.name);
+                                        if (result == 0 && !lcls) {
+                                            result = lhi.sig.compareTo(rhi.sig);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        private static final String[] typeNames = {
+            "status", "visibility", "static", "final", "synchronized", 
+            "abstract", "category", "package", "class", "name", "signature"
+        };
+
+        private static final String[][] names = {
+            { "draft     ", "stable    ", "deprecated", "obsolete  " },
+            { "package", "public", "protected", "private" },
+            { "", "static" },
+            { "", "final" },
+            { "", "synchronized" },
+            { "", "abstract" },
+            { "class", "field", "constructor", "method"  },
+            null,
+            null,
+            null,
+            null,
+            null
+        };
+
+        private static final String[][] shortNames = {
+            { "DR", "ST", "DP", "OB" },
+            { "PK", "PB", "PT", "PR" },
+            { "NS", "ST" },
+            { "NF", "FN" },
+            { "NS", "SY" },
+            { "NA", "AB" },
+            { "L", "F", "C", "M" },
+            null,
+            null,
+            null,
+            null,
+            null
+        };
+
+        private static void validateType(int typ) {
+            if (typ < 0 || typ > NUM_TYPES) {
+                throw new IllegalArgumentException("bad type index: " + typ);
+            }
+        }
+
+        public String toString() {
+            return get(NAM, true);
+        }
+    }
+
+    static final class DeltaInfo extends APIInfo {
+        private Info a;
+        private Info b;
+
+        DeltaInfo(Info a, Info b) {
+            this.a = a;
+            this.b = b;
+        }
+
+        public int getVal(int typ) {
+            return a.getVal(typ);
+        }
+
+        public String get(int typ, boolean brief) {
+            return a.get(typ, brief);
+        }
+
+        public void write(BufferedWriter w, boolean brief, boolean html, boolean detail) {
+            a.write(w, brief, html, detail);
+            try {
+                if (html) {
+                    w.write("<br>");
+                }
+                w.newLine();
+            } 
+            catch (Exception e) {
+            }
+            b.write(w, brief, html, detail);
+        }
+
+        public String toString() {
+            return a.get(NAM, true);
+        }
+    }
+
+    public static int optionLength(String option) {
+        if (option.equals("-html")) {
+            return 1;
+        } else if (option.equals("-name")) {
+            return 2;
+        } else if (option.equals("-output")) {
+            return 2;
+        } else if (option.equals("-compare")) {
+            return 2;
+        }
+        return 0;
+    }
+
+    public static boolean start(RootDoc root) {
+        return new CheckAPI(root).run();
+    }
+
+    CheckAPI(RootDoc root) {
+        this.root = root;
+
+        //      this.compare = "c:/doug/cvsproj/icu4j/src/com/ibm/icu/dev/tool/docs/api2_8.txt";
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-html")) {
+                this.html = true;
+            } else if (opt.equals("-name")) {
+                this.srcName = options[i][1];
+            } else if (opt.equals("-output")) {
+                this.output = options[i][1];
+            } else if (opt.equals("-compare")) {
+                this.compare = options[i][1];
+            }
+        }
+
+        if (compare != null) {
+            try {
+                // URL url = new URL(compare);
+                File f = new File(compare);
+                InputStream is = new FileInputStream(f);
+                InputStreamReader isr = new InputStreamReader(is);
+                BufferedReader br = new BufferedReader(isr);
+
+                // read header line
+                /*int version = */Integer.parseInt(readToken(br));
+                // check version if we change it later, probably can just rebuild though
+                this.compareName = readToken(br);
+                br.readLine();
+
+                // read data
+                this.compareSet = new TreeSet(Info.defaultComparator());
+                for (Info info = new Info(); info.read(br); info = new Info()) {
+                    compareSet.add(info);
+                }
+            }
+            catch (Exception e) {
+                RuntimeException re = new RuntimeException("error reading " + compare);
+                re.initCause(e);
+                throw re;
+            }
+        }
+            
+        results = new TreeSet(Info.defaultComparator());
+    }
+
+    private boolean run() {
+        doDocs(root.classes());
+
+        OutputStream os = System.out;
+        if (output != null) {
+            try {
+                os = new FileOutputStream(output);
+            }
+            catch (FileNotFoundException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        BufferedWriter bw = null;
+        try {
+            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
+            bw = new BufferedWriter(osw);
+
+            if (compareSet == null) {
+                // writing data file
+                bw.write(String.valueOf(DATA_FILE_VERSION) + SEP); // header version
+                bw.write(srcName + SEP); // source name
+                bw.newLine();
+                writeResults(results, bw, true, false, false);
+            } else {
+                // writing comparison info
+                TreeSet removed = (TreeSet)compareSet.clone();
+                removed.removeAll(results);
+
+                TreeSet added = (TreeSet)results.clone();
+                added.removeAll(compareSet);
+
+                Iterator ai = added.iterator();
+                Iterator ri = removed.iterator();
+                ArrayList changed = new ArrayList();
+                Comparator c = Info.changedComparator();
+                Info a = null, r = null;
+                while (ai.hasNext() && ri.hasNext()) {
+                    if (a == null) a = (Info)ai.next();
+                    if (r == null) r = (Info)ri.next();
+                    int result = c.compare(a, r);
+                    if (result < 0) {
+                        a = null;
+                    } else if (result > 0) {
+                        r = null;
+                    } else {
+                        changed.add(new DeltaInfo(a, r));
+                        a = null; ai.remove();
+                        r = null; ri.remove();
+                    }
+                }
+
+                added = stripAndResort(added);
+                removed = stripAndResort(removed);
+
+                if (html) {
+                    String title = "ICU4J API Comparison: " + srcName + " with " + compareName;
+
+                    bw.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
+                    bw.newLine();
+                    bw.write("<html>");
+                    bw.newLine();
+                    bw.write("<head>");
+                    bw.newLine();
+                    bw.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
+                    bw.newLine();
+                    bw.write("<title>");
+                    bw.write(title);
+                    bw.write("</title>");
+                    bw.newLine();
+                    bw.write("<body>");
+                    bw.newLine();
+
+                    bw.write("<h1>");
+                    bw.write(title);
+                    bw.write("</h1>");
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Removed from " + compareName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (removed.size() > 0) {
+                        writeResults(removed, bw, false, true, false);
+                    } else {
+                        bw.write("<p>(no API removed)</p>");
+                    }
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Changed in " + srcName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (changed.size() > 0) {
+                        writeResults(changed, bw, false, true, true);
+                    } else {
+                        bw.write("<p>(no API changed)</p>");
+                    }
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Added in " + srcName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (added.size() > 0) {
+                        writeResults(added, bw, false, true, false);
+                    } else {
+                        bw.write("<p>(no API added)</p>");
+                    }
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<p><i>Contents generated by CheckAPI tool.<br/>Copyright (C) 2004, International Business Machines Corporation, All Rights Reserved.</i></p>");
+                    bw.newLine();
+                    bw.write("</body>");
+                    bw.newLine();
+                    bw.write("</html>");
+                    bw.newLine();
+                } else {
+                    bw.write("Comparing " + srcName + " with " + compareName);
+                    bw.newLine();
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Removed from " + compareName + " ===");
+                    bw.newLine();
+                    if (removed.size() > 0) {
+                        writeResults(removed, bw, false, false, false);
+                    } else {
+                        bw.write("(no API removed)");
+                    }
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Changed in " + srcName + " ===");
+                    bw.newLine();
+                    if (changed.size() > 0) {
+                        writeResults(changed, bw, false, false, true);
+                    } else {
+                        bw.write("(no API changed)");
+                    }
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Added in " + srcName + " ===");
+                    bw.newLine();
+                    if (added.size() > 0) {
+                        writeResults(added, bw, false, false, false);
+                    } else {
+                        bw.write("(no API added)");
+                    }
+                    bw.newLine();
+                }
+            }
+
+            bw.close();
+        } catch (IOException e) {
+            try { bw.close(); } catch (IOException e2) {}
+            RuntimeException re = new RuntimeException("write error: " + e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        return false;
+    }
+
+    private void doDocs(ProgramElementDoc[] docs) {
+        if (docs != null && docs.length > 0) {
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+        }
+    }
+
+    private void doDoc(ProgramElementDoc doc) {
+        if (ignore(doc)) return;
+
+        if (doc.isClass() || doc.isInterface()) {
+            ClassDoc cdoc = (ClassDoc)doc;
+            doDocs(cdoc.fields());
+            doDocs(cdoc.constructors());
+            doDocs(cdoc.methods());
+            doDocs(cdoc.innerClasses());
+        }
+
+        Info info = new Info();
+        if (info.read(doc)) {
+            results.add(info);
+        }
+    }
+
+    private boolean ignore(ProgramElementDoc doc) {
+        if (doc == null) return true;
+        if (doc.isPrivate() || doc.isPackagePrivate()) return true;
+        if (doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic()) return true;
+        if (doc.qualifiedName().indexOf(".misc") != -1) return true;
+        Tag[] tags = doc.tags();
+        for (int i = 0; i < tags.length; ++i) {
+            if (tagKindIndex(tags[i].kind()) == INTERNAL) return true;
+        }
+
+        return false;
+    }
+
+    private static void writeResults(Collection c, BufferedWriter w, boolean brief, boolean html, boolean detail) {
+        Iterator iter = c.iterator();
+        String pack = null;
+        String clas = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            if (brief) {
+                info.write(w, brief, false, detail);
+            } else {
+                try {
+                    String p = info.get(PAK, true);
+                    if (!p.equals(pack)) {
+                        w.newLine();
+                        if (html) {
+                            if (clas != null) {
+                                w.write("</ul>");
+                                w.newLine();
+                            }
+                            if (pack != null) {
+                                w.write("</ul>");
+                                w.newLine();
+                            }
+                            
+                            w.write("<h3>Package ");
+                            w.write(p);
+                            w.write("</h3>");
+                            w.newLine();
+                            w.write("<ul>");
+                            w.newLine();
+                        } else {
+                            w.write("Package ");
+                            w.write(p);
+                            w.write(':');
+                        }
+                        w.newLine();
+                        w.newLine();
+                        
+                        pack = p;
+                        clas = null;
+                    }
+
+                    if (info.getVal(CAT) != CAT_CLASS) {
+                        String name = info.get(CLS, true);
+                        if (!name.equals(clas)) {
+                            if (html) {
+                                if (clas != null) {
+                                    w.write("</ul>");
+                                }
+                                w.write("<li>");
+                                w.write(name);
+                                w.newLine();
+                                w.write("<ul>");
+                            } else {
+                                w.write(name);
+                                w.newLine();
+                            }
+                            clas = name;
+                        }
+                        w.write("    ");
+                    }
+                    if (html) {
+                        w.write("<li>");
+                        info.write(w, brief, html, detail);
+                        w.write("</li>");
+                    } else {
+                        info.write(w, brief, html, detail);
+                    }
+                }
+                catch (IOException e) {
+                    System.err.println("IOException " + e.getMessage() + " writing " + info);
+                }
+            }
+        }
+        if (html) {
+            try {
+                if (clas != null) {
+                    w.write("</ul>");
+                    w.newLine();
+                }
+                if (pack != null) {
+                    w.write("</ul>");
+                    w.newLine();
+                }
+            } 
+            catch (IOException e) {
+            }
+        }
+    }
+
+    private static String readToken(BufferedReader r) throws IOException {
+        char[] buf = new char[256];
+        int i = 0;
+        for (; i < buf.length; ++i) {
+            int c = r.read();
+            if (c == -1) {
+                throw new IOException("unexpected EOF");
+            } else if (c == SEP) {
+                break;
+            }
+            buf[i] = (char)c;
+        }
+        if (i == buf.length) {
+            throw new IOException("unterminated token" + new String(buf));
+        }
+            
+        return new String(buf, 0, i);
+    }
+
+    private static TreeSet stripAndResort(TreeSet t) {
+        stripClassInfo(t);
+        TreeSet r = new TreeSet(Info.classFirstComparator());
+        r.addAll(t);
+        return r;
+    }
+
+    private static void stripClassInfo(Collection c) {
+        // c is sorted with class info first
+        Iterator iter = c.iterator();
+        String cname = null;
+        while (iter.hasNext()) {
+            Info info = (Info)iter.next();
+            String cls = info.get(CLS, true);
+            if (cname != null) {
+                if (cname.equals(cls)) {
+                    iter.remove();
+                    continue;
+                }
+                cname = null;
+            } 
+            if (info.getVal(CAT) == CAT_CLASS) {
+                cname = info.get(NAM, true);
+            }
+        }
+    }
+
+    private static int tagStatus(final Doc doc) {
+        class Result {
+            int res = -1;
+            void set(int val) { if (res != -1) throw new RuntimeException("bad doc: " + doc); res = val; }
+            int get() {
+                if (res == -1) {
+                    System.err.println("warning: no tag for " + doc);
+                    return 0;
+                }
+                return res;
+            }
+        }
+
+        Tag[] tags = doc.tags();
+        Result result = new Result();
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case INTERNAL:
+                result.set(-2);
+                break;
+
+            case DRAFT:
+                result.set(STA_DRAFT);
+                break;
+
+            case STABLE:
+                result.set(STA_STABLE);
+                break;
+
+            case DEPRECATED:
+                result.set(STA_DEPRECATED);
+                break;
+
+            case OBSOLETE:
+                result.set(STA_OBSOLETE);
+                break;
+
+            case SINCE:
+            case EXCEPTION:
+            case VERSION:
+            case UNKNOWN:
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            default:
+                throw new RuntimeException("unknown index " + ix + " for tag: " + kind);
+            }
+        }
+
+        return result.get();
+    }
+
+    private static final int UNKNOWN = -1;
+    private static final int INTERNAL = 0;
+    private static final int DRAFT = 1;
+    private static final int STABLE = 2;
+    private static final int SINCE = 3;
+    private static final int DEPRECATED = 4;
+    private static final int AUTHOR = 5;
+    private static final int SEE = 6;
+    private static final int VERSION = 7;
+    private static final int PARAM = 8;
+    private static final int RETURN = 9;
+    private static final int THROWS = 10;
+    private static final int OBSOLETE = 11;
+    private static final int EXCEPTION = 12;
+    private static final int SERIAL = 13;
+
+    private static int tagKindIndex(String kind) {
+        final String[] tagKinds = {
+            "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+            "@param", "@return", "@throws", "@obsolete", "@exception", "@serial"
+        };
+
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CheckTags.java b/src/com/ibm/icu/dev/tool/docs/CheckTags.java
new file mode 100644
index 0000000..1dc9414
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CheckTags.java
@@ -0,0 +1,421 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+/**
+ * This is a tool to check the tags on ICU4J files.  In particular, we're looking for:
+ *
+ * - methods that have no tags
+ * - custom tags: @draft, @stable, @internal?
+ * - standard tags: @since, @deprecated
+ *
+ * Syntax of tags:
+ * '@draft ICU X.X.X'
+ * '@stable ICU X.X.X'
+ * '@internal'
+ * '@since  (don't use)'
+ * '@obsolete ICU X.X.X'
+ * '@deprecated to be removed in ICU X.X. [Use ...]'
+ *
+ * flags names of classes and their members that have no tags or incorrect syntax.
+ *
+ * Requires JDK 1.4 or later
+ *
+ * Use build.xml 'checktags' ant target, or
+ * run from directory containing CheckTags.class as follows:
+ * javadoc -classpath ${JAVA_HOME}/lib/tools.jar -doclet CheckTags -sourcepath ${ICU4J_src} [packagenames]
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+
+public class CheckTags {
+    RootDoc root;
+    boolean log;
+    boolean brief;
+    boolean isShort;
+    DocStack stack = new DocStack();
+
+    class DocNode {
+        private String header;
+        private boolean printed;
+        private boolean reportError;
+        private int errorCount;
+
+        public void reset(String header, boolean reportError) {
+            this.header = header;
+            this.printed = false;
+            this.errorCount = 0;
+            this.reportError = reportError;
+        }
+        public String toString() {
+            return header +
+                " printed: " + printed +
+                " reportError: " + reportError +
+                " errorCount: " + errorCount;
+        }
+    }
+
+    class DocStack {
+        private DocNode[] stack;
+        private int index;
+        private boolean newline;
+
+        public void push(String header, boolean reportError) {
+            if (stack == null) {
+                stack = new DocNode[5];
+            } else {
+                if (index == stack.length) {
+                    DocNode[] temp = new DocNode[stack.length * 2];
+                    System.arraycopy(stack, 0, temp, 0, index);
+                    stack = temp;
+                }
+            }
+            if (stack[index] == null) {
+                stack[index] = new DocNode();
+            }
+            //  System.out.println("reset [" + index + "] header: " + header + " report: " + reportError);
+            stack[index++].reset(header, reportError);
+        }
+
+        public void pop() {
+            if (index == 0) {
+                throw new IndexOutOfBoundsException();
+            }
+            --index;
+
+            int ec = stack[index].errorCount; // index already decremented
+            if (ec > 0 || index == 0) { // always report for outermost element
+                if (stack[index].reportError) {
+                    output("(" + ec + (ec == 1 ? " error" : " errors") + ")", false, true, index);
+                }
+
+                // propagate to parent
+                if (index > 0) {
+                    stack[index-1].errorCount += ec;
+                }
+            }
+            if (index == 0) {
+                System.out.println(); // always since we always report number of errors
+            }
+        }
+
+        public void output(String msg, boolean error, boolean newline) {
+            output(msg, error, newline, index-1);
+        }
+
+        void output(String msg, boolean error, boolean newline, int ix) {
+            DocNode last = stack[ix];
+            if (error) {
+                last.errorCount += 1;
+        }
+
+            boolean show = !brief || last.reportError;
+            // boolean nomsg = show && brief && error;
+            //            System.out.println(">>> " + last + " error: " + error + " show: " + show + " nomsg: " + nomsg);
+
+            if (show) {
+                if (isShort || (brief && error)) {
+                    msg = null; // nuke error messages if we're brief, just report headers and totals
+                }
+                for (int i = 0; i <= ix;) {
+                    DocNode n = stack[i];
+                    if (n.printed) {
+                        if (msg != null || !last.printed) { // since index > 0 last is not null
+                            if (this.newline && i == 0) {
+                                System.out.println();
+                                this.newline = false;
+                            }
+                            System.out.print("  ");
+                        }
+                        ++i;
+                    } else {
+                        System.out.print(n.header);
+                        n.printed = true;
+                        this.newline = true;
+                        i = 0;
+                    }
+                }
+
+                if (msg != null) {
+                    if (index == 0 && this.newline) {
+                        System.out.println();
+                    }
+                    if (error) {
+                        System.out.print("*** ");
+                    }
+                    System.out.print(msg);
+                }
+            }
+
+            this.newline = newline;
+        }
+    }
+
+    public static boolean start(RootDoc root) {
+        return new CheckTags(root).run();
+    }
+
+    public static int optionLength(String option) {
+        if (option.equals("-log")) {
+            return 1;
+        } else if (option.equals("-brief")) {
+            return 1;
+        } else if (option.equals("-short")) {
+            return 1;
+        }
+        return 0;
+    }
+
+    CheckTags(RootDoc root) {
+        this.root = root;
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-log")) {
+                this.log = true;
+            } else if (opt.equals("-brief")) {
+                this.brief = true;
+            } else if (opt.equals("-short")) {
+                this.isShort = true;
+            }
+        }
+    }
+
+    boolean run() {
+        doDocs(root.classes(), "Package", true);
+        return false;
+    }
+
+    static final String[] tagKinds = {
+        "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+        "@param", "@return", "@throws", "@obsolete", "@exception", "@serial", "@provisional"
+    };
+
+    static final int UNKNOWN = -1;
+    static final int INTERNAL = 0;
+    static final int DRAFT = 1;
+    static final int STABLE = 2;
+    static final int SINCE = 3;
+    static final int DEPRECATED = 4;
+    static final int AUTHOR = 5;
+    static final int SEE = 6;
+    static final int VERSION = 7;
+    static final int PARAM = 8;
+    static final int RETURN = 9;
+    static final int THROWS = 10;
+    static final int OBSOLETE = 11;
+    static final int EXCEPTION = 12;
+    static final int SERIAL = 13;
+    static final int PROVISIONAL = 14;
+
+    static int tagKindIndex(String kind) {
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+
+    boolean newline = false;
+
+    void output(String msg, boolean error, boolean newline) {
+        stack.output(msg, error, newline);
+    }
+
+    void log() {
+        output(null, false, false);
+    }
+
+    void logln() {
+        output(null, false, true);
+    }
+
+    void log(String msg) {
+        output(msg, false, false);
+    }
+
+    void logln(String msg) {
+        output(msg, false, true);
+    }
+
+    void err(String msg) {
+        output(msg, true, false);
+    }
+
+    void errln(String msg) {
+        output(msg, true, true);
+    }
+
+    void tagErr(Tag tag) {
+        // Tag.position() requires JDK 1.4, build.xml tests for this
+        errln(tag.toString() + " [" + tag.position() + "]");
+    }
+
+    void doDocs(ProgramElementDoc[] docs, String header, boolean reportError) {
+        if (docs != null && docs.length > 0) {
+            stack.push(header, reportError);
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+            stack.pop();
+        }
+    }
+
+    void doDoc(ProgramElementDoc doc) {
+        if (doc != null && (doc.isPublic() || doc.isProtected())
+            && !(doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic())) {
+
+            // unfortunately, in JDK 1.4.1 MemberDoc.isSynthetic is not properly implemented for
+            // synthetic constructors.  So you'll have to live with spurious errors or 'implement'
+            // the synthetic constructors...
+
+            boolean isClass = doc.isClass() || doc.isInterface();
+            String header;
+            if (!isShort || isClass) {
+                header = "--- ";
+            } else {
+                header = "";
+            }
+            header += (isClass ? doc.qualifiedName() : doc.name());
+            if (doc instanceof ExecutableMemberDoc) {
+                header += ((ExecutableMemberDoc)doc).flatSignature();
+            }
+            if (!isShort || isClass) {
+                header += " ---";
+            }
+            stack.push(header, isClass);
+            if (log) {
+                logln();
+            }
+            boolean recurse = doTags(doc);
+            if (recurse && isClass) {
+                ClassDoc cdoc = (ClassDoc)doc;
+                doDocs(cdoc.fields(), "Fields", !brief);
+                doDocs(cdoc.constructors(), "Constructors", !brief);
+                doDocs(cdoc.methods(), "Methods", !brief);
+            }
+            stack.pop();
+        }
+    }
+
+    /** Return true if subelements of this doc should be checked */
+    boolean doTags(ProgramElementDoc doc) {
+        Tag[] tags = doc.tags();
+        boolean foundRequiredTag = false;
+        boolean foundDraftTag = false;
+        boolean foundProvisionalTag = false;
+        boolean foundDeprecatedTag = false;
+        boolean foundObsoleteTag = false;
+        boolean foundInternalTag = false;
+        boolean foundStableTag = false;
+        boolean retainAll = false;
+
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case UNKNOWN:
+                errln("unknown kind: " + kind);
+                break;
+
+            case INTERNAL:
+                foundRequiredTag = true;
+                foundInternalTag = true;
+                break;
+
+            case DRAFT:
+                foundRequiredTag = true;
+                foundDraftTag = true;
+                if (tag.text().indexOf("ICU 2.8") != -1 &&
+                    tag.text().indexOf("(retain") == -1) { // catch both retain and retainAll
+                    tagErr(tag);
+                    break;
+                }
+                if (tag.text().indexOf("ICU") != 0) {
+                    tagErr(tag);
+                    break;
+                }
+                retainAll |= (tag.text().indexOf("(retainAll)") != -1);
+                break;
+
+            case PROVISIONAL:
+                foundProvisionalTag = true;
+                break;
+
+            case DEPRECATED:
+                foundDeprecatedTag = true;
+                if (tag.text().indexOf("ICU") == 0) {
+                    foundRequiredTag = true;
+                }
+                break;
+
+            case OBSOLETE:
+                if (tag.text().indexOf("ICU") != 0) {
+                    tagErr(tag);
+                }
+                foundObsoleteTag = true;
+                foundRequiredTag = true;
+                break;
+
+            case STABLE:
+                {
+                    String text = tag.text();
+                    if (text.length() != 0 && text.indexOf("ICU") != 0) {
+                        tagErr(tag);
+                    }
+                    foundRequiredTag = true;
+                    foundStableTag = true;
+                }
+                break;
+
+            case SINCE:
+                tagErr(tag);
+                break;
+
+            case EXCEPTION:
+                logln("You really ought to use @throws, you know... :-)");
+
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            case VERSION:
+                tagErr(tag);
+                break;
+
+            default:
+                errln("unknown index: " + ix);
+            }
+        }
+        if (!foundRequiredTag) {
+            errln("missing required tag [" + doc.position() + "]");
+        }
+        if (foundInternalTag && !foundDeprecatedTag) {
+            errln("internal tag missing deprecated");
+        }
+        if (foundDraftTag && !(foundDeprecatedTag || foundProvisionalTag)) {
+            errln("draft tag missing deprecated or provisional");
+        }
+        if (foundObsoleteTag && !foundDeprecatedTag) {
+            errln("obsolete tag missing deprecated");
+        }
+        if (foundStableTag && foundDeprecatedTag) {
+            logln("stable deprecated");
+        }
+
+        return !retainAll;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CodeMangler.java b/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
new file mode 100644
index 0000000..7a61844
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
@@ -0,0 +1,765 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.TreeMap;
+
+
+/**
+ * A simple facility for adding C-like preprocessing to .java files.
+ * This only understands a subset of the C preprocessing syntax.
+ * Its used to manage files that with only small differences can be
+ * compiled for different JVMs.  This changes files in place, 
+ * commenting out lines based on the current flag settings.
+ */
+public class CodeMangler {
+    private File indir;        // root of input
+    private File outdir;       // root of output
+    private String suffix;     // suffix to process, default '.jpp'
+    private boolean recurse;   // true if recurse on directories
+    private boolean force;     // true if force reprocess of files
+    private boolean clean;     // true if output is to be cleaned
+    private boolean timestamp; // true if we read/write timestamp
+    private HashMap map;       // defines
+    private ArrayList names;   // files/directories to process
+    private String header;     // sorted list of defines passed in
+
+    private boolean verbose; // true if we emit debug output
+
+    private static final String IGNORE_PREFIX = "//##";
+    private static final String HEADER_PREFIX = "//##header";
+
+    public static void main(String[] args) {
+        new CodeMangler(args).run();
+    }
+
+    private static final String usage = "Usage:\n" +
+        "    CodeMangler [flags] file... dir... @argfile... \n" +
+        "-in[dir] path          - root directory of input files, otherwise use current directory\n" +
+        "-out[dir] path         - root directory of output files, otherwise use input directory\n" +
+        "-s[uffix] string       - suffix of inputfiles to process, otherwise use '.java' (directories only)\n" +
+        "-c[lean]               - remove all control flags from code on output (does not proceed if overwriting)\n" +
+        "-r[ecurse]             - if present, recursively process subdirectories\n" +
+        "-f[orce]               - force reprocessing of files even if timestamp and headers match\n" +
+        "-t[imestamp]           - expect/write timestamp in header\n" +
+        "-dNAME[=VALUE]         - define NAME with optional value VALUE\n" +
+        "  (or -d NAME[=VALUE])\n" +
+        "-help                  - print this usage message and exit.\n" +
+        "\n" +
+        "For file arguments, output '.java' files using the same path/name under the output directory.\n" +
+        "For directory arguments, process all files with the defined suffix in the directory.\n" +
+        "  (if recursing, do the same for all files recursively under each directory)\n" +
+        "For @argfile arguments, read the specified text file (strip the '@'), and process each line of that file as \n" +
+        "an argument.\n" +
+        "\n" +
+        "Directives are one of the following:\n" +
+        "  #ifdef, #ifndef, #else, #endif, #if, #elif, #define, #undef\n" +
+        "These may optionally be preceeded by whitespace or //.\n" +
+        "#if, #elif args are of the form 'key == value' or 'key != value'.\n" +
+        "Only exact character match key with value is performed.\n" +
+        "#define args are 'key [==] value', the '==' is optional.\n";
+
+    CodeMangler(String[] args) {
+        map = new HashMap();
+        names = new ArrayList();
+        suffix = ".java";
+        clean = false;
+        timestamp = false;
+
+        String inname = null;
+        String outname = null;
+        boolean processArgs = true;
+        String arg = null;
+        try {
+            for (int i = 0; i < args.length; ++i) {
+                arg = args[i];
+                if ("--".equals(arg)) {
+                    processArgs = false;
+                } else if (processArgs && arg.charAt(0) == '-') {
+                    if (arg.startsWith("-in")) {
+                        inname = args[++i];
+                    } else if (arg.startsWith("-out")) {
+                        outname = args[++i];
+                    } else if (arg.startsWith("-d")) {
+                        String id = arg.substring(2);
+                        if (id.length() == 0) {
+                            id = args[++i];
+                        }
+                        String val = "";
+                        int ix = id.indexOf('=');
+                        if (ix >= 0) {
+                            val = id.substring(ix+1);
+                            id = id.substring(0,ix);
+                        }
+                        map.put(id, val);
+                    } else if (arg.startsWith("-s")) {
+                        suffix = args[++i];
+                    } else if (arg.startsWith("-r")) {
+                        recurse = true;
+                    } else if (arg.startsWith("-f")) {
+                        force = true;
+                    } else if (arg.startsWith("-c")) {
+                        clean = true;
+                    } else if (arg.startsWith("-t")) {
+                        timestamp = true;
+                    } else if (arg.startsWith("-h")) {
+                        System.out.print(usage);
+                        break; // stop before processing arguments, so we will do nothing
+                    } else if (arg.startsWith("-v")) {
+                        verbose = true;
+                    } else {
+                        System.err.println("Error: unrecognized argument '" + arg + "'");
+                        System.err.println(usage);
+                        throw new IllegalArgumentException(arg);
+                    }
+                } else {
+                    if (arg.charAt(0) == '@') {
+                        File argfile = new File(arg.substring(1));
+                        if (argfile.exists() && !argfile.isDirectory()) {
+                            try {
+                                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(argfile)));
+                                ArrayList list = new ArrayList();
+                                for (int x = 0; x < args.length; ++x) {
+                                    list.add(args[x]);
+                                }
+                                String line;
+                                while (null != (line = br.readLine())) {
+                                    line = line.trim();
+                                    if (line.length() > 0 && line.charAt(0) != '#') {
+                                        if (verbose) System.out.println("adding argument: " + line);
+                                        list.add(line);
+                                    }
+                                }
+                                args = (String[])list.toArray(new String[list.size()]);
+                            }
+                            catch (IOException e) {
+                                System.err.println("error reading arg file: " + e);
+                            }
+                        }
+                    } else {
+                        names.add(arg);
+                    }
+                }
+            }
+        } catch (IndexOutOfBoundsException e) {
+            String msg = "Error: argument '" + arg + "' missing value";
+            System.err.println(msg);
+            System.err.println(usage);
+            throw new IllegalArgumentException(msg);
+        }
+
+        String username = System.getProperty("user.dir");
+        if (inname == null) {
+            inname = username;
+        } else if (!(inname.startsWith("\\") || inname.startsWith("/"))) {
+            inname = username + File.separator + inname;
+        }
+        indir = new File(inname);
+        try {
+            indir = indir.getCanonicalFile();
+        }
+        catch (IOException e) {
+            // continue, but most likely we'll fail later
+        }
+        if (!indir.exists()) {
+            throw new IllegalArgumentException("Input directory '" + indir.getAbsolutePath() + "' does not exist.");
+        } else if (!indir.isDirectory()) {
+            throw new IllegalArgumentException("Input path '" + indir.getAbsolutePath() + "' is not a directory.");
+        }
+        if (verbose) System.out.println("indir: " + indir.getAbsolutePath());
+
+        if (outname == null) {
+            outname = inname;
+        } else if (!(outname.startsWith("\\") || outname.startsWith("/"))) {
+            outname = username + File.separator + outname;
+        }
+        outdir = new File(outname);
+        try {
+            outdir = outdir.getCanonicalFile();
+        }
+        catch (IOException e) {
+            // continue, but most likely we'll fail later
+        }
+        if (!outdir.exists()) {
+            throw new IllegalArgumentException("Output directory '" + outdir.getAbsolutePath() + "' does not exist.");
+        } else if (!outdir.isDirectory()) {
+            throw new IllegalArgumentException("Output path '" + outdir.getAbsolutePath() + "' is not a directory.");
+        }
+        if (verbose) System.out.println("outdir: " + outdir.getAbsolutePath());
+
+        if (clean && suffix.equals(".java")) {
+            try {
+                if (outdir.getCanonicalPath().equals(indir.getCanonicalPath())) {
+                    throw new IllegalArgumentException("Cannot use 'clean' to overwrite .java files in same directory tree");
+                }
+            }
+            catch (IOException e) {
+                System.err.println("possible overwrite, error: " + e.getMessage());
+                throw new IllegalArgumentException("Cannot use 'clean' to overrwrite .java files");
+            }
+        }
+
+        if (names.isEmpty()) {
+            names.add(".");
+        }
+
+        TreeMap sort = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+        sort.putAll(map);
+        Iterator iter = sort.entrySet().iterator();
+        StringBuffer buf = new StringBuffer();
+        while (iter.hasNext()) {
+            Map.Entry e = (Map.Entry)iter.next();
+            if (buf.length() > 0) {
+                buf.append(", ");
+            }
+            buf.append(e.getKey());
+            String v = (String)e.getValue();
+            if (v != null && v.length() > 0) {
+                buf.append('=');
+                buf.append(v);
+            }
+        }
+        header = buf.toString();
+    }
+
+    public int run() {
+        return process("", (String[])names.toArray(new String[names.size()]));
+    }
+
+    public int process(String path, String[] filenames) {
+        if (verbose) System.out.println("path: '" + path + "'");
+        int count = 0;
+        for (int i = 0; i < filenames.length; ++i) {
+            if (verbose) System.out.println("name " + i + " of " + filenames.length + ": '" + filenames[i] + "'");
+            String name = path + filenames[i];
+            File fin = new File(indir, name);
+            try {
+                fin = fin.getCanonicalFile();
+            }
+            catch (IOException e) {
+            }
+            if (!fin.exists()) {
+                System.err.println("File " + fin.getAbsolutePath() + " does not exist.");
+                continue;
+            }
+            if (fin.isFile()) {
+                if (verbose) System.out.println("processing file: '" + fin.getAbsolutePath() + "'");
+                String oname;
+                int ix = name.lastIndexOf(".");
+                if (ix != -1) {
+                    oname = name.substring(0, ix);
+                } else {
+                    oname = name;
+                }
+                oname += ".java";
+                File fout = new File(outdir, oname);
+                if (processFile(fin, fout)) {
+                    ++count;
+                }
+            } else if (fin.isDirectory()) {
+                if (verbose) System.out.println("recursing on directory '" + fin.getAbsolutePath() + "'");
+                String npath = ".".equals(name) ? path : path + fin.getName() + File.separator;
+                count += process(npath, fin.list(filter)); // recursive call
+            }
+        }
+        return count;
+    }
+
+                
+    private final FilenameFilter filter = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                File f = new File(dir, name);
+                return (f.isFile() && name.endsWith(suffix)) || (f.isDirectory() && recurse);
+            }
+        };
+
+    public boolean processFile(File infile, File outfile) {
+        File backup = null;
+
+        class State {
+            int lc;
+            String line;
+            boolean emit = true;
+            boolean tripped;
+            private State next;
+
+            public String toString() {
+                return "line " + lc 
+                    + ": '" + line 
+                    + "' (emit: " + emit 
+                    + " tripped: " + tripped 
+                    + ")";
+            }
+
+            void trip(boolean trip) {
+                if (!tripped & trip) {
+                    tripped = true;
+                    emit = next != null ? next.emit : true;
+                } else {
+                    emit = false;
+                }
+            }
+                        
+            State push(int lc, String line, boolean trip) {
+                this.lc = lc;
+                this.line = line;
+                State ret = new State();
+                ret.next = this;
+                ret.emit = this.emit & trip;
+                ret.tripped = trip;
+                return ret;
+            }
+
+            State pop() {
+                return next;
+            }
+        }
+          
+        HashMap oldMap = null;
+        
+        long outModTime = 0;
+
+        try {
+            PrintStream outstream = null;
+            InputStream instream = new FileInputStream(infile);
+
+            BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
+            int lc = 0;
+            State state = new State();
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (lc == 0) { // check and write header for output file if needed
+                    boolean hasHeader = line.startsWith(HEADER_PREFIX);
+                    if (hasHeader && !force) {
+                        long expectLastModified = ((infile.lastModified() + 999)/1000)*1000;
+                        String headerline = HEADER_PREFIX + ' ' + header + ' ' +
+                            (timestamp ? String.valueOf(expectLastModified) : ""); 
+                        headerline = headerline.trim();
+                        if (line.equals(headerline)) {
+                            if (verbose) System.out.println("no changes necessary to " + infile.getCanonicalPath());
+                            instream.close();
+                            return false; // nothing to do
+                        }
+                        if (verbose) {
+                            System.out.println("  old header:  " + line);
+                            System.out.println("  != expected: " + headerline);
+                        }
+                    }
+
+                    // create output file directory structure
+                    String outpname = outfile.getParent();
+                    if (outpname != null) {
+                        File outp = new File(outpname);
+                        if (!(outp.exists() || outp.mkdirs())) {
+                            System.err.println("could not create directory: '" + outpname + "'");
+                            return false;
+                        }
+                    }
+
+                    // if we're overwriting, use a temporary file
+                    if (suffix.equals(".java")) {
+                        backup = outfile;
+                        try {
+                            outfile = File.createTempFile(outfile.getName(), null, outfile.getParentFile());
+                        }
+                        catch (IOException ex) {
+                            System.err.println(ex.getMessage());
+                            return false;
+                        }
+                    }
+
+                    outModTime = ((outfile.lastModified()+999)/1000)*1000; // round up
+                    outstream = new PrintStream(new FileOutputStream(outfile));
+                    String headerline = HEADER_PREFIX + ' ' + header + ' ' +
+                        (timestamp ? String.valueOf(outModTime) : "");
+                    headerline = headerline.trim();
+                    outstream.println(headerline);
+                    if (verbose) System.out.println("header: " + headerline);
+
+                    // discard the old header if we had one, otherwise match this line like any other
+                    if (hasHeader) {
+                        ++lc; // mark as having read a line so we never reexecute this block
+                        continue;
+                    }
+                }
+                
+                String[] res = new String[3];
+                if (patMatch(line, res)) {
+                    String lead = res[0];
+                    String key = res[1];
+                    String val = res[2];
+
+                    if (verbose) System.out.println("directive: " + line
+                                                    + " key: '" + key
+                                                    + "' val: '" + val 
+                                                    + "' " + state);
+                    if (key.equals("ifdef")) {
+                        state = state.push(lc, line, map.get(val) != null);
+                    } else if (key.equals("ifndef")) {
+                        state = state.push(lc, line, map.get(val) == null);
+                    } else if (key.equals("else")) {
+                        state.trip(true);
+                    } else if (key.equals("endif")) {
+                        state = state.pop();
+                    } else if (key.equals("undef")) {
+                        if (state.emit) {
+                            if (oldMap == null) {
+                                oldMap = (HashMap)map.clone();
+                            }
+                            map.remove(val);
+                        }
+                    } else if (key.equals("define")) {
+                        if (pat2Match(val, res)) {
+                            String key2 = res[0];
+                            String val2 = res[2];
+
+                            if (verbose) System.out.println("val2: '" + val2 
+                                                            + "' key2: '" + key2 
+                                                            + "'");
+                            if (state.emit) {
+                                if (oldMap == null) {
+                                    oldMap = (HashMap)map.clone();
+                                }
+                                map.put(key2, val2);
+                            }
+                        }
+                    } else { // #if, #elif
+                        // only top level OR (||) operator is supported for now
+                        int count = 1;
+                        int index = 0;
+                        while ((index = val.indexOf("||", index)) > 0) {
+                            count++;
+                            index++;
+                        }
+                        String[] expressions = new String[count];
+                        if (count == 1) {
+                            expressions[0] = val;
+                        } else {
+                            int start = 0;
+                            index = 0;
+                            count = 0;
+                            while (true) {
+                                index = val.indexOf("||", start);
+                                if (index > 0) {
+                                    expressions[count++] = val.substring(start, index);
+                                    start = index + 2;
+                                } else {
+                                    expressions[count++] = val.substring(start);
+                                    break;
+                                }
+                            }
+                        }
+                        boolean eval = false;
+                        for (count = 0; count < expressions.length && !eval; count++) {
+                            if (pat2Match(expressions[count], res)) {
+                                String key2 = res[0];
+                                String val2 = res[2];
+
+                                if (key2.equals("defined")) {
+                                    // defined command
+                                    if (verbose) System.out.println(
+                                            "index: '" + count
+                                            + "' val2: '" + val2 
+                                            + "' key2: '" + key2 
+                                            + "'");
+                                    eval = map.containsKey(val2);
+                                } else {
+                                    boolean neq = false;
+                                    if (res[1].equals("!=")) {
+                                        neq = true;
+                                    } else if (!res[1].equals("==")) {
+                                        System.err.println("Invalid expression: '" + val);
+                                    }
+                                    if (verbose) System.out.println(
+                                            "index: '" + count
+                                            + "' val2: '" + val2 
+                                            + "' neq: '" + neq 
+                                            + "' key2: '" + key2 
+                                            + "'");
+                                    eval = (val2.equals(map.get(key2)) != neq);
+                                }
+                            }
+                        }
+                        if (key.equals("if")) {
+                            state = state.push(lc, line, eval);
+                        } else if (key.equals("elif")) {
+                            state.trip(eval);
+                        }
+                    }
+                    if (!clean) {
+                        lc++;
+                        if (!lead.equals("//")) {
+                            outstream.print("//");
+                            line = line.substring(lead.length());
+                        }
+                        outstream.println(line);
+                    }
+                    continue;
+                }
+
+                lc++;
+                String found = pat3Match(line);
+                boolean hasIgnore = found != null;
+                if (state.emit == hasIgnore) {
+                    if (state.emit) {
+                        line = line.substring(found.length());
+                    } else {
+                        line = IGNORE_PREFIX + line;
+                    }
+                } else if (hasIgnore && !found.equals(IGNORE_PREFIX)) {
+                    line = IGNORE_PREFIX + line.substring(found.length());
+                }
+                if (!clean || state.emit) {
+                    outstream.println(line);
+                }
+            }
+
+            state = state.pop();
+            if (state != null) {
+                System.err.println("Error: unclosed directive(s):");
+                do {
+                    System.err.println(state);
+                } while ((state = state.pop()) != null);
+                System.err.println(" in file: " + outfile.getCanonicalPath());
+                if (oldMap != null) {
+                    map = oldMap;
+                }
+                outstream.close();
+                return false;
+            }
+                
+            outstream.close();
+            instream.close();
+
+            if (backup != null) {
+                if (backup.exists()) {
+                    backup.delete();
+                }
+                outfile.renameTo(backup);
+            }
+
+            if (timestamp) {
+                outfile.setLastModified(outModTime); // synch with timestamp
+            }
+
+            if (oldMap != null) {
+                map = oldMap;
+            }
+        }
+        catch (IOException e) {
+            System.err.println(e);
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * Perform same operation as matching on pat.  on exit
+     * leadKeyValue contains the three strings lead, key, and value.
+     * 'lead' is the portion before the #ifdef directive.  'key' is
+     * the directive.  'value' is the portion after the directive.  if
+     * there is a match, return true, else return false.
+     */
+    static boolean patMatch(String line, String[] leadKeyValue) {
+        if (line.length() == 0) {
+            return false;
+        }
+        if (!line.endsWith("\n")) {
+            line = line + '\n';
+        }
+        int mark = 0;
+        int state = 0;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch (state) {
+            case 0: // at start of line, haven't seen anything but whitespace yet
+                if (c == ' ' || c == '\t' || c == '\r') continue;
+                if (c == '/') { state = 1; continue; }
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 1: // have seen a single slash after start of line
+                if (c == '/') { state = 2; continue; }
+                return false;
+            case 2: // have seen two or more slashes
+                if (c == '/') continue;
+                if (c == ' ' || c == '\t' || c == '\r') { state = 3; continue; }
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 3: // have seen a space after two or more slashes
+                if (c == ' ' || c == '\t' || c == '\r') continue;
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 4: // have seen a '#' 
+                leadKeyValue[0] = line.substring(mark, i-1);
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { mark = i; state = 5; continue; }
+                return false;
+            case 5: // an ascii char followed the '#'
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) continue;
+                if (c == ' ' || c == '\t' || c == '\n') {
+                    String key = line.substring(mark, i).toLowerCase();
+                    if (key.equals("ifdef") ||
+                        key.equals("ifndef") ||
+                        key.equals("else") ||
+                        key.equals("endif") ||
+                        key.equals("undef") ||
+                        key.equals("define") ||
+                        key.equals("if") ||
+                        key.equals("elif")) {
+                        leadKeyValue[1] = key;
+                        mark = i;
+                        state = 6;
+                        break loop;
+                    }
+                }
+                return false;
+            default:
+                throw new IllegalStateException();
+            }
+        }
+        if (state == 6) {
+            leadKeyValue[2] = line.substring(mark, line.length()).trim();
+            return true;
+        }
+        return false; // never reached, does the compiler know this?
+    }
+
+    /**
+     * Perform same operation as matching on pat2.  on exit
+     * keyRelValue contains the three strings key, rel, and value.
+     * 'key' is the portion before the relation (or final word).  'rel' is
+     * the relation, if present, either == or !=.  'value' is the final
+     * word.  if there is a match, return true, else return false.
+     */
+    static boolean pat2Match(String line, String[] keyRelVal) {
+
+        if (line.length() == 0) {
+            return false;
+        }
+        keyRelVal[0] = keyRelVal[1] = keyRelVal[2] = "";
+        int mark = 0;
+        int state = 0;
+        String command = null;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch (state) {
+            case 0: // saw beginning or space, no rel yet
+                if (c == ' ' || c == '\t' || c == '\n') {
+                    continue;
+                }
+                if ((c == '!' || c == '=')) {
+                    return false;
+                }
+                state = 1;
+                continue;
+            case 1: // saw start of a word
+                if (c == ' ' || c == '\t') {
+                    state = 2;
+                }
+                else if (c == '(') {
+                    command = line.substring(0, i).trim();
+                    if (!command.equals("defined")) {
+                        return false;
+                    }
+                    keyRelVal[0] = command;
+                    state = 2;
+                }
+                else if (c == '!' || c == '=') {
+                    state = 3;
+                }
+                continue;
+            case 2: // saw end of word, and space
+                if (c == ' ' || c == '\t') {
+                    continue;
+                }
+                else if (command == null && c == '(') {
+                    continue;
+                }
+                else if (c == '!' || c == '=') {
+                    state = 3;
+                    continue;
+                }
+                keyRelVal[0] = line.substring(0, i-1).trim();
+                mark = i;
+                state = 4;
+                break loop;
+            case 3: // saw end of word, and '!' or '='
+                if (c == '=') {
+                    keyRelVal[0] = line.substring(0, i-1).trim();
+                    keyRelVal[1] = line.substring(i-1, i+1);
+                    mark = i+1;
+                    state = 4;
+                    break loop;
+                }
+                return false;
+            default:
+                break;
+            }
+        }
+        switch (state) {
+        case 0: 
+            return false; // found nothing
+        case 1: 
+        case 2:
+            keyRelVal[0] = line.trim(); break; // found only a word
+        case 3:
+            return false; // found a word and '!' or '=" then end of line, incomplete
+        case 4:
+            keyRelVal[2] = line.substring(mark).trim(); // found a word, possible rel, and who knows what
+            if (command != null) {
+                int len = keyRelVal[2].length();
+                if (keyRelVal[2].charAt(len - 1) != ')') {
+                    // closing parenthesis is missing
+                    return false;
+                }
+                keyRelVal[2] = keyRelVal[2].substring(0, len - 1).trim();
+            }
+            break;
+        default: 
+            throw new IllegalStateException();
+        }
+        return true;
+    }
+
+    static String pat3Match(String line) {
+        int state = 0;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch(state) {
+            case 0: if (c == ' ' || c == '\t') continue;
+                if (c == '/') { state = 1; continue; }
+                break loop;
+            case 1:
+                if (c == '/') { state = 2; continue; }
+                break loop;
+            case 2:
+                if (c == '#') { state = 3; continue; }
+                break loop;
+            case 3:
+                if (c == '#') return line.substring(0, i+1);
+                break loop;
+            default:
+                break loop;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/Deprecator.java b/src/com/ibm/icu/dev/tool/docs/Deprecator.java
new file mode 100644
index 0000000..330f7ff
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/Deprecator.java
@@ -0,0 +1,193 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.PrintWriter;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.FileInputStream;
+import java.util.regex.*;
+
+public final class Deprecator {
+    private boolean undep;
+    private int log;
+
+    Deprecator(boolean undep, int log) {
+        this.undep = undep;
+        this.log = log;
+    }
+
+    public static void main(String[] args) {
+        String srcPath = null;
+        String dstPath = null;
+        boolean undep = false;
+
+        int log = 1;
+        boolean help = false;
+        StringBuffer err = new StringBuffer();
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-src")) {
+                srcPath = args[++i];
+            } else if (arg.equals("-dst")) {
+                dstPath = args[++i];
+            } else if (arg.equals("-undep")) {
+                undep = true;
+            } else if (arg.equals("-help")) {
+                help = true;
+            } else if (arg.equals("-silent")) {
+                log = 0;
+            } else if (arg.equals("-log")) {
+                log = 2;
+            } else if (arg.equals("-logfiles")) {
+                log = 3;
+            } else if (arg.equals("-verbose")) {
+                log = 4;
+            } else {
+                err.append("\nunrecognized argument: " + arg);
+            }
+        }
+
+        File srcDir = null;
+        File dstDir = null;
+
+        if (srcPath == null) {
+            err.append("\nsrc must be defined");
+        } else {
+            srcDir = new File(srcPath);
+            if (!(srcDir.exists() && srcDir.isDirectory())) {
+                err.append("\nsrc must be an existing directory: '" + srcPath + "'");
+            }
+        }
+        if (dstPath == null) {
+            err.append("\ndst must be defined");
+        } else {
+            dstDir = new File(dstPath);
+            if (!dstDir.exists()) {
+                if (!dstDir.mkdirs()) {
+                    err.append("\nunable to create dst: '" + dstPath + "'");
+                }
+            } else if (!dstDir.isDirectory()) {
+                err.append("\ndst exists but is not directory: '" + dstPath + "'");
+            }
+        }
+
+        if (help || err.length() > 0) {
+            if (!help) {
+                System.err.println("Error: " + err.toString());
+            }
+            usage();
+            return;
+        }
+
+        try {
+            if (log > 0) {
+                System.out.println("src: " + srcDir.getCanonicalPath());
+                System.out.println("dst: " + dstDir.getCanonicalPath());
+                System.out.println("undep: " + undep);
+                System.out.flush();
+            }
+
+            new Deprecator(undep, log).process(srcDir, dstDir);
+
+            if (log > 0) {
+                System.out.println("done");
+                System.out.flush();
+            }
+        }
+        catch(Exception e) {
+            System.err.println("Unexpected error: " + e);
+        }
+    }
+
+    static void usage() {
+        PrintWriter pw = new PrintWriter(System.out);
+        pw.println("Usage: Deprecator -src path -dst path [-help]");
+        pw.println("  -src path : the root of the tree of files to work on");
+        pw.println("  -dst path : the root of the tree to put the resulting files");
+        pw.println("  -help     : print this usage message and exit, doing nothing");
+        pw.println("  -undep    : remove deprecation tags if present (default false)");
+        pw.println();
+        pw.println("  Add or remove warning deprecations for ICU @draft and @internal APIs");
+        pw.flush();
+    }
+
+    static final String stoplist = "!CVS";
+    static final FilenameFilter ff = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                if (name.endsWith(".java")) return true;
+                if (new File(dir, name).isDirectory()) {
+                    if (stoplist.indexOf("!"+name) == -1) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        };
+            
+    void process(File srcDir, File dstDir) {
+        File[] files = srcDir.listFiles(ff);
+        for (int i = 0; i < files.length; ++i) {
+            File f = files[i];
+            File d = new File(dstDir, f.getName());
+            if (f.isDirectory()) {
+                if (!d.exists()) {
+                    if (!d.mkdir()) {
+                        System.err.println("cannot create directory: " + d.getPath());
+                        continue;
+                    }
+                } else if (!d.isDirectory()) {
+                    System.err.println("file already exists but is not directory: " + d.getPath());
+                    continue;
+                }
+                if (log > 1) {
+                    System.out.println("process dir: " + f.getPath());
+                }
+                process(f, d);
+            } else {
+                processFile(f, d);
+            }
+        }
+    }
+
+    /*
+ @ deprecated
+ *** @deprecated
+ ** ** ** @deprecated
+    */
+    static final Pattern pat = Pattern.compile("^[\\s*]*@\\s*deprecated.*");
+
+    void processFile(File srcFile, File dstFile) {
+        if (log > 2) {
+            System.out.println("process '" + srcFile.getPath() + "'");
+        }
+
+        try {
+            BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile)));
+            int n = 0;
+            String line = null;
+            while (null != (line = r.readLine())) {
+                ++n;
+                Matcher m = pat.matcher(line);
+                if (m.matches()) {
+                    if (log > 3) {
+                        System.out.println(String.valueOf(n) + ": " + line);
+                    }
+                }
+            }
+            r.close();
+        }
+        catch (Exception e) {
+            System.out.flush();
+            System.err.println("caught exception: " + e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java b/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
new file mode 100644
index 0000000..418ffa5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
@@ -0,0 +1,482 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Generate a list of ICU's public APIs, sorted by qualified name and signature
+ * public APIs are all non-internal, non-package apis in com.ibm.icu.[lang|math|text|util].
+ * For each API, list
+ * - public, package, protected, or private (PB PK PT PR)
+ * - static or non-static (STK NST)
+ * - final or non-final (FN NF)
+ * - synchronized or non-synchronized (SYN NSY)
+ * - stable, draft, deprecated, obsolete (ST DR DP OB)
+ * - abstract or non-abstract (AB NA)
+ * - constructor, member, field (C M F)
+ *
+ * Requires JDK 1.4.2 or later
+ * 
+ * Sample compilation:
+ * c:/doug/java/jdk1.4.2/build/windows-i586/bin/javac *.java
+ *
+ * Sample execution
+ * c:/j2sdk1.4.2/bin/javadoc
+ *   -classpath c:/jd2sk1.4.2/lib/tools.jar 
+ *   -doclet com.ibm.icu.dev.tool.docs.GatherAPIData
+ *   -docletpath c:/doug/cvsproj/icu4j/src 
+ *   -sourcepath c:/doug/cvsproj/icu4j/src 
+ *   -name "ICU4J 3.0"
+ *   -output icu4j30.api
+ *   -gzip
+ *   -source 1.4
+ *   com.ibm.icu.lang com.ibm.icu.math com.ibm.icu.text com.ibm.icu.util
+ *
+ * todo: provide command-line control of filters of which subclasses/packages to process
+ * todo: record full inheritance heirarchy, not just immediate inheritance 
+ * todo: allow for aliasing comparisons (force (pkg.)*class to be treated as though it 
+ *       were in a different pkg/class heirarchy (facilitates comparison of icu4j and java)
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+// standard release sdk won't work, need internal build to get access to javadoc
+import com.sun.javadoc.*;
+import java.io.*;
+import java.util.*;
+import java.util.regex.*;
+import java.util.zip.GZIPOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+public class GatherAPIData {
+    RootDoc root;
+    TreeSet results;
+    String srcName = "Current"; // default source name
+    String output; // name of output file to write
+    String base; // strip this prefix
+    Pattern pat;
+    boolean zip;
+    boolean gzip;
+    boolean internal;
+    boolean version;
+
+    public static int optionLength(String option) {
+        if (option.equals("-name")) {
+            return 2;
+        } else if (option.equals("-output")) {
+            return 2;
+        } else if (option.equals("-base")) {
+            return 2;
+        } else if (option.equals("-filter")) {
+            return 2;
+        } else if (option.equals("-zip")) {
+            return 1;
+        } else if (option.equals("-gzip")) {
+            return 1;
+        } else if (option.equals("-internal")) {
+            return 1;
+        } else if (option.equals("-version")) {
+            return 1;
+        }
+        return 0;
+    }
+
+    public static boolean start(RootDoc root) {
+        return new GatherAPIData(root).run();
+    }
+
+    GatherAPIData(RootDoc root) {
+        this.root = root;
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-name")) {
+                this.srcName = options[i][1];
+            } else if (opt.equals("-output")) {
+                this.output = options[i][1];
+            } else if (opt.equals("-base")) {
+                this.base = options[i][1]; // should not include '.'
+            } else if (opt.equals("-filter")) {
+                this.pat = Pattern.compile(options[i][1], Pattern.CASE_INSENSITIVE);
+            } else if (opt.equals("-zip")) {
+                this.zip = true;
+            } else if (opt.equals("-gzip")) {
+                this.gzip = true;
+            } else if (opt.equals("-internal")) {
+                this.internal = true;
+            } else if (opt.equals("-version")) {
+                this.version = true;
+            }
+        }
+
+        results = new TreeSet(APIInfo.defaultComparator());
+    }
+
+    private boolean run() {
+        doDocs(root.classes());
+
+        OutputStream os = System.out;
+        if (output != null) {
+            try {
+                if (zip) {
+                    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(output + ".zip"));
+                    zos.putNextEntry(new ZipEntry(output));
+                    os = zos;
+                } else if (gzip) {
+                    os = new GZIPOutputStream(new FileOutputStream(output + ".gz"));
+                } else {
+                    os = new FileOutputStream(output);
+                }
+            }
+            catch (IOException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        BufferedWriter bw = null;
+        try {
+            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
+            bw = new BufferedWriter(osw);
+
+            // writing data file
+            bw.write(String.valueOf(APIInfo.VERSION) + APIInfo.SEP); // header version
+            bw.write(srcName + APIInfo.SEP); // source name
+            bw.write((base == null ? "" : base) + APIInfo.SEP); // base
+            bw.newLine();
+            writeResults(results, bw);
+            bw.close(); // should flush, close all, etc
+        } catch (IOException e) {
+            try { bw.close(); } catch (IOException e2) {}
+            RuntimeException re = new RuntimeException("write error: " + e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        return false;
+    }
+
+    private void doDocs(ProgramElementDoc[] docs) {
+        if (docs != null && docs.length > 0) {
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+        }
+    }
+
+    private void doDoc(ProgramElementDoc doc) {
+        if (ignore(doc)) return;
+
+        if (doc.isClass() || doc.isInterface()) {
+            ClassDoc cdoc = (ClassDoc)doc;
+            doDocs(cdoc.fields());
+            doDocs(cdoc.constructors());
+            doDocs(cdoc.methods());
+            doDocs(cdoc.innerClasses());
+        }
+
+        APIInfo info = createInfo(doc);
+        if (info != null) {
+            results.add(info);
+        }
+    }
+
+    private boolean ignore(ProgramElementDoc doc) {
+        if (doc == null) return true;
+        if (doc.isPrivate() || doc.isPackagePrivate()) return true;
+        if (doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic()) return true;
+        if (doc.qualifiedName().indexOf(".misc") != -1) { 
+            System.out.println("misc: " + doc.qualifiedName()); return true; 
+        }
+        if (!internal) { // debug
+            Tag[] tags = doc.tags();
+            for (int i = 0; i < tags.length; ++i) {
+                if (tagKindIndex(tags[i].kind()) == INTERNAL) { return true; }
+            }
+        }
+        if (pat != null && (doc.isClass() || doc.isInterface())) {
+            if (!pat.matcher(doc.name()).matches()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static void writeResults(Collection c, BufferedWriter w) {
+        Iterator iter = c.iterator();
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            info.writeln(w);
+        }
+    }
+
+    private String trimBase(String arg) {
+        if (base != null) {
+            for (int n = arg.indexOf(base); n != -1; n = arg.indexOf(base, n)) {
+                arg = arg.substring(0, n) + arg.substring(n+base.length());
+            }
+        }
+        return arg;
+    }
+
+    public APIInfo createInfo(ProgramElementDoc doc) {
+
+        // Doc. name
+        // Doc. isField, isMethod, isConstructor, isClass, isInterface
+        // ProgramElementDoc. containingClass, containingPackage
+        // ProgramElementDoc. isPublic, isProtected, isPrivate, isPackagePrivate
+        // ProgramElementDoc. isStatic, isFinal
+        // MemberDoc.isSynthetic
+        // ExecutableMemberDoc isSynchronized, signature
+        // Type.toString() // e.g. "String[][]"
+        // ClassDoc.isAbstract, superClass, interfaces, fields, methods, constructors, innerClasses
+        // FieldDoc type
+        // ConstructorDoc qualifiedName
+        // MethodDoc isAbstract, returnType
+
+        APIInfo info = new APIInfo();
+        if (version) {
+            info.includeStatusVersion(true);
+        }
+            
+        // status
+        String[] version = new String[1];
+        info.setType(APIInfo.STA, tagStatus(doc, version));
+        info.setStatusVersion(version[0]);
+
+        // visibility
+        if (doc.isPublic()) {
+            info.setPublic();
+        } else if (doc.isProtected()) {
+            info.setProtected();
+        } else if (doc.isPrivate()) {
+            info.setPrivate();
+        } else {
+            // default is package
+        }
+
+        // static
+        if (doc.isStatic()) {
+            info.setStatic();
+        } else {
+            // default is non-static
+        }
+
+        // final
+        if (doc.isFinal()) {
+            info.setFinal();
+        } else {
+            // default is non-final
+        }
+
+        // type
+        if (doc.isField()) {
+            info.setField();
+        } else if (doc.isMethod()) {
+            info.setMethod();
+        } else if (doc.isConstructor()) {
+            info.setConstructor();
+        } else if (doc.isClass() || doc.isInterface()) {
+            info.setClass();
+        }
+
+        info.setPackage(trimBase(doc.containingPackage().name()));
+        info.setClassName((doc.isClass() || doc.isInterface() || (doc.containingClass() == null)) 
+                          ? "" 
+                          : trimBase(doc.containingClass().name()));
+        info.setName(trimBase(doc.name()));
+
+        if (doc instanceof FieldDoc) {
+            FieldDoc fdoc = (FieldDoc)doc;
+            info.setSignature(trimBase(fdoc.type().toString()));
+        } else if (doc instanceof ClassDoc) {
+            ClassDoc cdoc = (ClassDoc)doc;
+
+            if (cdoc.isClass() && cdoc.isAbstract()) { 
+                // interfaces are abstract by default, don't mark them as abstract
+                info.setAbstract();
+            }
+
+            StringBuffer buf = new StringBuffer();
+            if (cdoc.isClass()) {
+                buf.append("extends ");
+                buf.append(cdoc.superclass().qualifiedName());
+            }
+            ClassDoc[] imp = cdoc.interfaces();
+            if (imp != null && imp.length > 0) {
+                if (buf.length() > 0) {
+                    buf.append(" ");
+                }
+                buf.append("implements");
+                for (int i = 0; i < imp.length; ++i) {
+                    if (i != 0) {
+                        buf.append(",");
+                    }
+                    buf.append(" ");
+                    buf.append(imp[i].qualifiedName());
+                }
+            }
+            info.setSignature(trimBase(buf.toString()));
+        } else {
+            ExecutableMemberDoc emdoc = (ExecutableMemberDoc)doc;
+            if (emdoc.isSynchronized()) {
+                info.setSynchronized();
+            }
+
+            if (doc instanceof MethodDoc) {
+                MethodDoc mdoc = (MethodDoc)doc;
+                if (mdoc.isAbstract()) {
+                    info.setAbstract();
+                }
+                info.setSignature(trimBase(mdoc.returnType().toString() + emdoc.signature()));
+            } else {
+                // constructor
+                info.setSignature(trimBase(emdoc.signature()));
+            }
+        }
+
+        return info;
+    }
+
+    private int tagStatus(final Doc doc, String[] version) {
+        class Result {
+            int res = -1;
+            void set(int val) { 
+                if (res != -1) {
+                    if (val == APIInfo.STA_DEPRECATED) {
+                        // ok to have both a 'standard' tag and deprecated
+                        return;
+                    } else if (res != APIInfo.STA_DEPRECATED) {
+                        // if already not deprecated, this is an error
+                        System.err.println("bad doc: " + doc + " both: " + APIInfo.getTypeValName(APIInfo.STA, res) + " and: " + APIInfo.getTypeValName(APIInfo.STA, val)); 
+                        return;
+                    }
+                }
+                // ok to replace with new tag
+                res = val;
+            }
+            int get() {
+                if (res == -1) {
+                    System.err.println("warning: no tag for " + doc);
+                    return 0;
+                }
+                return res;
+            }
+        }
+
+        Tag[] tags = doc.tags();
+        Result result = new Result();
+        String statusVer = "";
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case INTERNAL:
+                result.set(internal ? APIInfo.STA_INTERNAL : -2); // -2 for legacy compatibility
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case DRAFT:
+                result.set(APIInfo.STA_DRAFT);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case STABLE:
+                result.set(APIInfo.STA_STABLE);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case DEPRECATED:
+                result.set(APIInfo.STA_DEPRECATED);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case OBSOLETE:
+                result.set(APIInfo.STA_OBSOLETE);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case SINCE:
+            case EXCEPTION:
+            case VERSION:
+            case UNKNOWN:
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            default:
+                throw new RuntimeException("unknown index " + ix + " for tag: " + kind);
+            }
+        }
+
+        if (version != null) {
+            version[0] = statusVer;
+        }
+        return result.get();
+    }
+
+    private String getStatusVersion(Tag tag) {
+        String text = tag.text();
+        if (text != null && text.length() > 0) {
+            // Extract version string
+            int start = -1;
+            int i = 0;
+            for (; i < text.length(); i++) {
+                char ch = text.charAt(i);
+                if (ch == '.' || (ch >= '0' && ch <= '9')) {
+                    if (start == -1) {
+                        start = i;
+                    }
+                } else if (start != -1) {
+                    break;
+                }
+            }
+            if (start != -1) {
+                return text.substring(start, i);
+            }
+        }
+        return "";
+    }
+
+    private static final int UNKNOWN = -1;
+    private static final int INTERNAL = 0;
+    private static final int DRAFT = 1;
+    private static final int STABLE = 2;
+    private static final int SINCE = 3;
+    private static final int DEPRECATED = 4;
+    private static final int AUTHOR = 5;
+    private static final int SEE = 6;
+    private static final int VERSION = 7;
+    private static final int PARAM = 8;
+    private static final int RETURN = 9;
+    private static final int THROWS = 10;
+    private static final int OBSOLETE = 11;
+    private static final int EXCEPTION = 12;
+    private static final int SERIAL = 13;
+
+    private static int tagKindIndex(String kind) {
+        final String[] tagKinds = {
+            "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+            "@param", "@return", "@throws", "@obsolete", "@exception", "@serial"
+        };
+
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java b/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
new file mode 100644
index 0000000..c39ae77
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
@@ -0,0 +1,785 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.*;
+
+/**
+ * Compare ICU4J and JDK APIS.
+ *
+ * TODO: compare protected APIs.  Reflection on Class allows you
+ * to either get all inherited methods with public access, or get methods
+ * on the particular class with any access, but no way to get all
+ * inherited methods with any access.  Go figure.
+ */
+public class ICUJDKCompare {
+    static final boolean DEBUG = false;
+
+    // set up defaults
+    private static final String kSrcPrefix = "java.";
+    private static final String kTrgPrefix = "com.ibm.icu.";
+    private static final String[] kPairInfo = {
+        "lang.Character/UCharacter",
+        "lang.Character$UnicodeBlock/UCharacter$UnicodeBlock",
+        "text.BreakIterator",
+        "text.Collator",
+        "text.DateFormat",
+        "text.DateFormatSymbols",
+        "text.DecimalFormat",
+        "text.DecimalFormatSymbols",
+        "text.Format/UFormat",
+        "text.MessageFormat",
+        "text.NumberFormat",
+        "text.SimpleDateFormat",
+        "util.Calendar",
+        "util.Currency",
+        "util.GregorianCalendar",
+        "util.SimpleTimeZone",
+        "util.TimeZone",
+        "util.Locale/ULocale",
+        "util.ResourceBundle/UResourceBundle",
+    };
+
+    private static final String[] kIgnore = new String[] {
+        "lang.Character <init> charValue compareTo MAX_VALUE MIN_VALUE TYPE",
+        "lang.Character$UnicodeBlock SURROGATES_AREA",
+        "util.Calendar FIELD_COUNT",
+        "util.GregorianCalendar FIELD_COUNT",
+        "util.SimpleTimeZone STANDARD_TIME UTC_TIME WALL_TIME",
+    };
+
+    private PrintWriter pw;
+    private String srcPrefix;
+    private String trgPrefix;
+    private Class[] classPairs;
+    private String[] namePairs;
+    private String[] ignore;
+    private boolean swap;
+    //private boolean signature;
+
+    // call System.exit with non-zero if there were some missing APIs
+    public static void main(String[] args) {
+        System.exit(doMain(args));
+    }
+
+    // return non-zero if there were some missing APIs
+    public static int doMain(String[] args) {
+        ICUJDKCompare p = new ICUJDKCompare();
+        p.setOutputWriter(new PrintWriter(System.out));
+        p.setup(args);
+        return p.process();
+    }
+
+    // setters
+    public ICUJDKCompare setOutputWriter(PrintWriter pw) {
+        this.pw = pw;
+        return this;
+    }
+
+    public ICUJDKCompare setSrcPrefix(String srcPrefix) {
+        this.srcPrefix = srcPrefix;
+        return this;
+    }
+
+    public ICUJDKCompare setTrgPrefix(String trgPrefix) {
+        this.trgPrefix = trgPrefix;
+        return this;
+    }
+
+    public ICUJDKCompare setClassPairs(Class[] classPairs) {
+        this.classPairs = classPairs;
+        return this;
+    }
+
+    public ICUJDKCompare setNamePairs(String[] namePairs) {
+        this.namePairs = namePairs;
+        return this;
+    }
+
+    public ICUJDKCompare setIgnore(String[] ignore) {
+        this.ignore = ignore;
+        return this;
+    }
+
+    public ICUJDKCompare setSwap(boolean swap) {
+        this.swap = swap;
+        return this;
+    }
+
+    public ICUJDKCompare setup(String[] args) {
+        String namelist = null;
+        String ignorelist = null;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-swap")) {
+                swap = true;
+            } else if (arg.equals("-srcPrefix:")) {
+                srcPrefix = args[++i];
+                if (!srcPrefix.endsWith(".")) {
+                    srcPrefix += '.';
+                }
+            } else if (arg.equals("-trgPrefix:")) {
+                trgPrefix = args[++i];
+                if (!trgPrefix.endsWith(".")) {
+                    trgPrefix += '.';
+                }
+            } else if (arg.equals("-names:")) {
+                namelist = args[++i];
+            } else if (arg.equals("-ignore:")) {
+                ignorelist = args[++i];
+            } else {
+                System.err.println("unrecognized argument: " + arg);
+                throw new IllegalStateException();
+            }
+        }
+
+        if (ignorelist != null) {
+            if (ignorelist.charAt(0) == '@') { // a file containing ignoreinfo
+                try {
+                    ArrayList nl = new ArrayList();
+                    File f = new File(namelist.substring(1));
+                    FileInputStream fis = new FileInputStream(f);
+                    InputStreamReader isr = new InputStreamReader(fis);
+                    BufferedReader br = new BufferedReader(isr);
+                    String line = null;
+                    while (null != (line = br.readLine())) {
+                        nl.add(line);
+                    }
+                    ignore = (String[])nl.toArray(new String[nl.size()]);
+                }
+                catch (Exception e) {
+                    System.err.println(e);
+                    throw new IllegalStateException();
+                }
+            } else { // a list of ignoreinfo separated by semicolons
+                ignore = ignorelist.split("\\s*;\\s*");
+            }
+        }
+
+        if (namelist != null) {
+            String[] names = null;
+            if (namelist.charAt(0) == '@') { // a file
+                try {
+                    ArrayList nl = new ArrayList();
+                    File f = new File(namelist.substring(1));
+                    FileInputStream fis = new FileInputStream(f);
+                    InputStreamReader isr = new InputStreamReader(fis);
+                    BufferedReader br = new BufferedReader(isr);
+                    String line = null;
+                    while (null != (line = br.readLine())) {
+                        nl.add(line);
+                    }
+                    names = (String[])nl.toArray(new String[nl.size()]);
+                }
+                catch (Exception e) {
+                    System.err.println(e);
+                    throw new IllegalStateException();
+                }
+            } else { // a list of names separated by semicolons
+                names = namelist.split("\\s*;\\s*");
+            }
+
+            processPairInfo(names);
+        }
+
+        pw.flush();
+
+        return this;
+    }
+
+    private void processPairInfo(String[] names) {
+        ArrayList cl = new ArrayList();
+        ArrayList nl = new ArrayList();
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            String srcName = srcPrefix;
+            String trgName = trgPrefix;
+
+            int n = name.indexOf('/');
+            if (n == -1) {
+                srcName += name;
+                trgName += name;
+            } else {
+                String srcSuffix = name.substring(0, n).trim();
+                String trgSuffix = name.substring(n+1).trim();
+                int jx = srcSuffix.length()+1;
+                int ix = trgSuffix.length()+1;
+                while (ix != -1) {
+                    jx = srcSuffix.lastIndexOf('.', jx-1);
+                    ix = trgSuffix.lastIndexOf('.', ix-1);
+                }
+                srcName += srcSuffix;
+                trgName += srcSuffix.substring(0, jx+1) + trgSuffix;
+            }
+
+            try {
+                Class jc = Class.forName(srcName);
+                Class ic = Class.forName(trgName);
+                cl.add(ic);
+                cl.add(jc);
+                nl.add(ic.getName());
+                nl.add(jc.getName());
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("can't load class: " + e.getMessage());
+            }
+        }
+        classPairs = (Class[])cl.toArray(new Class[cl.size()]);
+        namePairs = (String[])nl.toArray(new String[nl.size()]);
+    }
+
+    private void println(String s) {
+        if (pw != null) pw.println(s);
+    }
+
+    private void flush() {
+        if (pw != null) pw.flush();
+    }
+
+    public int process() {
+        // set defaults
+        if (srcPrefix == null) {
+            srcPrefix = kSrcPrefix;
+        }
+
+        if (trgPrefix == null) {
+            trgPrefix = kTrgPrefix;
+        }
+        
+        if (classPairs == null) {
+            processPairInfo(kPairInfo);
+        }
+
+        if (ignore == null) {
+            ignore = kIgnore;
+        }
+
+        println("ICU and Java API Comparison");
+        String ICU_VERSION = "unknown";
+        try {
+            Class cls = Class.forName("com.ibm.icu.util.VersionInfo");
+            Field fld = cls.getField("ICU_VERSION");
+            ICU_VERSION = fld.get(null).toString();
+        }
+        catch (Exception e) {
+            if (DEBUG) System.err.println("can't get VersionInfo: " + e.getMessage());
+        }
+        println("ICU Version " + ICU_VERSION);
+        println("JDK Version " + System.getProperty("java.version"));
+
+        int errorCount = 0;
+        for (int i = 0; i < classPairs.length; i += 2) {
+            try {
+                if (swap) {
+                    errorCount += compare(classPairs[i+1], classPairs[i]);
+                } else {
+                    errorCount += compare(classPairs[i], classPairs[i+1]);
+                }
+            }
+            catch (Exception e) {
+                System.err.println("exception: " + e);
+                System.err.println("between " + namePairs[i] + " and " + namePairs[i+1]);
+                e.printStackTrace();
+                errorCount += 1;
+            }
+        }
+        return errorCount;
+    }
+
+    static class MorC {
+        private Method mref;
+        private Constructor cref;
+
+        MorC(Method m) {
+            mref = m;
+        }
+
+        MorC(Constructor c) {
+            cref = c;
+        }
+
+        int getModifiers() {
+            return mref == null ? cref.getModifiers() : mref.getModifiers();
+        }
+
+        Class getReturnType() {
+            return mref == null ? void.class : mref.getReturnType();
+        }
+
+        Class[] getParameterTypes() {
+            return mref == null ? cref.getParameterTypes() : mref.getParameterTypes();
+        }
+
+        String getName() {
+            return mref == null ? "<init>" : mref.getName();
+        }
+
+        String getSignature() {
+            return mref == null ? cref.toString() : mref.toString();
+        }
+    }
+
+    private int compare(Class class1, Class class2) throws Exception {
+        String n1 = class1.getName();
+        String n2 = class2.getName();
+
+        println("\ncompare " + n1 + " <> " + n2);
+
+        MorC[] conss1 = getMorCArray(class1.getConstructors());
+        MorC[] conss2 = getMorCArray(class2.getConstructors());
+
+        Map cmap1 = getMethodMap(conss1);
+        Map cmap2 = getMethodMap(conss2);
+
+        MorC[] meths1 = getMorCArray(class1.getMethods());
+        MorC[] meths2 = getMorCArray(class2.getMethods());
+
+        Map map1 = getMethodMap(meths1);
+        Map map2 = getMethodMap(meths2);
+
+        Field[] fields1 = class1.getFields();
+        Field[] fields2 = class2.getFields();
+
+        Set set1 = getFieldSet(fields1);
+        Set set2 = getFieldSet(fields2);
+
+        Map diffConss = diffMethodMaps(cmap2, cmap1);
+        Map diffMeths = diffMethodMaps(map2, map1);
+        Set diffFields = diffFieldSets(set2, set1);
+
+        diffConss = removeIgnored(n2, diffConss);
+        diffMeths = removeIgnored(n2, diffMeths);
+        diffFields = removeIgnored(n2, diffFields);
+
+        int result = diffConss.size() + diffMeths.size() + diffFields.size();
+        if (result > 0 && pw != null) {
+            pw.println("Public API in " + n2 + " but not in " + n1);
+            if (diffConss.size() > 0) {
+                pw.println("CONSTRUCTORS");
+                dumpMethodMap(diffConss, pw);
+            }
+            if (diffMeths.size() > 0) {
+                pw.println("METHODS");
+                dumpMethodMap(diffMeths, pw);
+            }
+            if (diffFields.size() > 0) {
+                pw.println("FIELDS");
+                dumpFieldSet(diffFields, pw);
+            }
+        }
+
+        flush();
+
+        return result;
+    }
+
+    final class MethodRecord {
+        MorC[] overrides;
+
+        MethodRecord(MorC m) {
+            overrides = new MorC[] { m };
+        }
+
+        MethodRecord(MorC[] ms) {
+            overrides = ms;
+        }
+
+        MethodRecord copy() {
+            return new MethodRecord((MorC[])overrides.clone());
+        }
+
+        int count() {
+            for (int i = 0; i < overrides.length; ++i) {
+                if (overrides[i] == null) {
+                    return i;
+                }
+            }
+            return overrides.length;
+        }
+
+        void add(MorC m) {
+            MorC[] temp = new MorC[overrides.length + 1];
+            for (int i = 0; i < overrides.length; ++i) {
+                temp[i] = overrides[i];
+            }
+            temp[overrides.length] = m;
+            overrides = temp;
+        }
+
+        void remove(int index) {
+            int i = index;
+            while (overrides[i] != null && i < overrides.length-1) {
+                overrides[i] = overrides[i+1];
+                ++i;
+            }
+            overrides[i] = null;
+        }
+
+        // if a call to a method can be handled by a call to t, remove the
+        // method from our list, and return true
+        boolean removeOverridden(MorC t) {
+            boolean result = false;
+            int i = 0;
+            while (i < overrides.length) {
+                MorC m = overrides[i];
+                if (m == null) {
+                    break;
+                }
+                if (handles(t, m)) {
+                    remove(i);
+                    result = true;
+                } else {
+                    ++i;
+                }
+            }
+            return result;
+        }
+
+        // remove all methods handled by any method of mr
+        boolean removeOverridden(MethodRecord mr) {
+            boolean result = false;
+            for (int i = 0; i < mr.overrides.length; ++i) {
+                MorC t = mr.overrides[i];
+                if (t == null) {
+                    // this shouldn't happen, as the target record should not have been modified
+                    throw new IllegalStateException();
+                }
+                if (removeOverridden(t)) {
+                    result = true;
+                }
+            }
+            return result;
+        }
+
+        void debugmsg(MorC t, MorC m, String msg) {
+            StringBuffer buf = new StringBuffer();
+            buf.append(t.getName());
+            buf.append(" ");
+            buf.append(msg);
+            buf.append("\n   ");
+            toString(t, buf);
+            buf.append("\n   ");
+            toString(m, buf);
+            System.out.println(buf.toString());
+        }
+
+        boolean handles(MorC t, MorC m) {
+            // relevant modifiers must match
+            if ((t.getModifiers() & MOD_MASK) != (m.getModifiers() & MOD_MASK)) {
+                if (DEBUG) debugmsg(t, m, "modifier mismatch");
+                return false;
+            }
+
+            Class tr = pairClassEquivalent(t.getReturnType());
+            Class mr = pairClassEquivalent(m.getReturnType());
+            if (!assignableFrom(mr, tr)) { // t return type must be same or narrower than m
+                if (DEBUG) debugmsg(t, m, "return value mismatch");
+                return false;
+            }
+            Class[] tts = t.getParameterTypes();
+            Class[] mts = m.getParameterTypes();
+            if (tts.length != mts.length) {
+                if (DEBUG) debugmsg(t, m, "param count mismatch");
+                return false;
+            }
+
+            for (int i = 0; i < tts.length; ++i) {
+                Class tc = pairClassEquivalent(tts[i]);
+                Class mc = pairClassEquivalent(mts[i]);
+                if (!assignableFrom(tc, mc)) { // m param must be same or narrower than t
+                    if (DEBUG) debugmsg(t, m, "parameter " + i + " mismatch, " +
+                                   tts[i].getName() + " not assignable from " + mts[i].getName());
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public void toString(MorC m, StringBuffer buf) {
+            int mod = m.getModifiers();
+            if (mod != 0) {
+                buf.append(Modifier.toString(mod) + " ");
+            }
+            buf.append(nameOf(m.getReturnType()));
+            buf.append(" ");
+            buf.append(m.getName());
+            buf.append("(");
+            Class[] ptypes = m.getParameterTypes();
+            for (int j = 0; j < ptypes.length; ++j) {
+                if (j > 0) {
+                    buf.append(", ");
+                }
+                buf.append(nameOf(ptypes[j]));
+            }
+            buf.append(')');
+        }
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer();
+            buf.append(overrides[0].getName());
+            for (int i = 0; i < overrides.length; ++i) {
+                MorC m = overrides[i];
+                if (m == null) {
+                    break;
+                }
+                buf.append("\n   ");
+                toString(m, buf);
+            }
+            return buf.toString();
+        }
+    }
+
+    public static String nameOf(Class c) {
+        if (c.isArray()) {
+            return nameOf(c.getComponentType()) + "[]";
+        }
+        String name = c.getName();
+        return name.substring(name.lastIndexOf('.') + 1);
+    }
+
+    static MorC[] getMorCArray(Constructor[] cons) {
+        MorC[] result = new MorC[cons.length];
+        for (int i = 0 ; i < cons.length; ++i) {
+            result[i] = new MorC(cons[i]);
+        }
+        return result;
+    }
+
+    static MorC[] getMorCArray(Method[] meths) {
+        MorC[] result = new MorC[meths.length];
+        for (int i = 0 ; i < meths.length; ++i) {
+            result[i] = new MorC(meths[i]);
+        }
+        return result;
+    }
+
+    private Map getMethodMap(MorC[] meths) {
+        Map result = new TreeMap();
+        for (int i = 0; i < meths.length; ++i) {
+            MorC m = meths[i];
+            String key = m.getName();
+            MethodRecord mr = (MethodRecord)result.get(key);
+            if (mr == null) {
+                mr = new MethodRecord(m);
+                result.put(key, mr);
+            } else {
+                mr.add(m);
+            }
+        }
+        return result;
+    }
+
+    private void dumpMethodMap(Map m, PrintWriter pw) {
+        Iterator iter = m.entrySet().iterator();
+        while (iter.hasNext()) {
+            dumpMethodRecord((MethodRecord)((Map.Entry)iter.next()).getValue());
+        }
+        pw.flush();
+    }
+
+    private void dumpMethodRecord(MethodRecord mr) {
+        pw.println(mr.toString());
+    }
+
+    static Map diffMethodMaps(Map m1, Map m2) {
+        // get all the methods in m1 that aren't mentioned in m2 at all
+        Map result = (Map)((TreeMap)m1).clone();
+        result.keySet().removeAll(m2.keySet());
+        return result;
+    }
+
+    private Map removeIgnored(String name, Map m1) {
+        if (ignore == null) {
+            return m1;
+        }
+        if (name.startsWith(srcPrefix)) {
+            name = name.substring(srcPrefix.length());
+        }
+        name += " "; // to avoid accidental prefix of nested class name
+
+        // prune ignore list to relevant items
+        ArrayList il = null;
+        for (int i = 0; i < ignore.length; ++i) {
+            String s = ignore[i];
+            if (s.startsWith(name)) {
+                if (il == null) {
+                    il = new ArrayList();
+                }
+                il.add(s);
+            }
+        }
+        if (il == null) {
+            return m1;
+        }
+            
+        Map result = new TreeMap(((TreeMap)m1).comparator());
+        result.putAll(m1);
+        Iterator iter = result.entrySet().iterator();
+        loop: while (iter.hasNext()) {
+            Map.Entry e = (Map.Entry)iter.next();
+            String key = (String)e.getKey();
+            for (int i = 0; i < il.size(); ++i) {
+                String ig = (String)il.get(i);
+                if (ig.indexOf(" " + key) != 0) {
+                    iter.remove();
+                    continue loop;
+                }
+            }
+        }            
+        return result;
+    }
+
+    private Set removeIgnored(String name, Set s1) {
+        if (ignore == null) {
+            return s1;
+        }
+        if (name.startsWith(srcPrefix)) {
+            name = name.substring(srcPrefix.length());
+        }
+        name += " "; // to avoid accidental prefix of nested class name
+
+        // prune ignore list to relevant items
+        ArrayList il = null;
+        for (int i = 0; i < ignore.length; ++i) {
+            String s = ignore[i];
+            if (s.startsWith(name)) {
+                if (il == null) {
+                    il = new ArrayList();
+                }
+                il.add(s);
+            }
+        }
+        if (il == null) {
+            return s1;
+        }
+            
+        Set result = (Set)((TreeSet)s1).clone();
+        Iterator iter = result.iterator();
+        loop: while (iter.hasNext()) {
+            String key = (String)iter.next();
+            String fieldname = key.substring(0, key.indexOf(' '));
+            for (int i = 0; i < il.size(); ++i) {
+                String ig = (String)il.get(i);
+                if (ig.indexOf(" " + fieldname) != 0) {
+                    iter.remove();
+                    continue loop;
+                }
+            }
+        }            
+        return result;
+    }
+
+    static final boolean[][] assignmentMap = {
+        // bool   char   byte  short    int   long  float double   void
+        {  true, false, false, false, false, false, false, false, false }, // boolean
+        { false,  true,  true,  true, false, false, false, false, false }, // char
+        { false, false,  true, false, false, false, false, false, false }, // byte
+        { false, false,  true,  true, false, false, false, false, false }, // short
+        { false,  true,  true,  true,  true, false, false, false, false }, // int
+        { false,  true,  true,  true,  true,  true, false, false, false }, // long
+        { false,  true,  true,  true,  true, false,  true, false, false }, // float
+        { false,  true,  true,  true,  true, false,  true,  true, false }, // double
+        { false, false, false, false, false, false, false, false,  true }, // void
+    };
+
+    static final Class[] prims = {
+        boolean.class, char.class, byte.class, short.class,
+        int.class, long.class, float.class, double.class, void.class
+    };
+
+    static int primIndex(Class cls) {
+        for (int i = 0; i < prims.length; ++i) {
+            if (cls == prims[i]) {
+                return i;
+            }
+        }
+        throw new IllegalStateException("could not find primitive class: " + cls);
+    }
+
+    static boolean assignableFrom(Class lhs, Class rhs) {
+        if (lhs == rhs) {
+            return true;
+        }
+        if (lhs.isPrimitive()) {
+            if (!rhs.isPrimitive()) {
+                return false;
+            }
+            int lhsx = primIndex(lhs);
+            int rhsx = primIndex(rhs);
+            return assignmentMap[lhsx][rhsx];
+        }
+        return lhs.isAssignableFrom(rhs);
+    }
+
+    private String toString(Field f) {
+        StringBuffer buf = new StringBuffer(f.getName());
+        int mod = f.getModifiers() & MOD_MASK;
+        if (mod != 0) {
+            buf.append(" " + Modifier.toString(mod));
+        }
+        buf.append(" ");
+        String n = pairEquivalent(f.getType().getName());
+        n = n.substring(n.lastIndexOf('.') + 1);
+        buf.append(n);
+        return buf.toString();
+    }
+
+    private Set getFieldSet(Field[] fs) {
+        Set set = new TreeSet();
+        for (int i = 0; i < fs.length; ++i) {
+            set.add(toString(fs[i]));
+        }
+        return set;
+    }
+
+    static Set diffFieldSets(Set s1, Set s2) {
+        Set result = (Set)((TreeSet)s1).clone();
+        result.removeAll(s2);
+        return result;
+    }
+
+    private void dumpFieldSet(Set s, PrintWriter pw) {
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            pw.println(iter.next());
+        }
+        pw.flush();
+    }
+
+    // given a target string, if it matches the first of one of our pairs, return the second
+    // or vice-versa if swap is true
+    private String pairEquivalent(String target) {
+        for (int i = 0; i < namePairs.length; i += 2) {
+            if (swap) {
+                if (target.equals(namePairs[i+1])) {
+                    return namePairs[i];
+                }
+            } else {
+                if (target.equals(namePairs[i])) {
+                    return namePairs[i+1];
+                }
+            }
+        }
+        return target;
+    }
+
+    private Class pairClassEquivalent(Class target) {
+        for (int i = 0; i < classPairs.length; i += 2) {
+            if (target.equals(classPairs[i])) {
+                return classPairs[i+1];
+            }
+        }
+        return target;
+    }
+
+    static final int MOD_MASK = ~(Modifier.FINAL|Modifier.SYNCHRONIZED|
+                                  Modifier.VOLATILE|Modifier.TRANSIENT|Modifier.NATIVE);
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java b/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
new file mode 100644
index 0000000..7d5045a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -0,0 +1,292 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 2002-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Preprocess with com.ibm.icu.dev.tool.docs.CodeMangler to generate
+ * either a JDK 1.4 or JDK 1.5 version.  For the 1.5 version, define
+ * VERSION_1.5.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+//#if defined(J2SE13) || defined(J2SE14)
+//##import com.sun.tools.doclets.*;
+//#else
+// jdk 1.5 contains both com.sun.tools.doclets.Taglet and
+// com.sun.tools.doclets.internal.toolkit.taglets.Taglet.
+// Their registration code casts to the second, not the first, and the
+// second doesn't implement the first, so if you just implement the
+// first, you die.
+import com.sun.tools.doclets.internal.toolkit.taglets.*;
+import com.sun.tools.doclets.internal.toolkit.taglets.Taglet;
+//#endif
+
+import java.text.BreakIterator;
+import java.util.Locale;
+import java.util.Map;
+
+public abstract class ICUTaglet implements Taglet {
+    protected final String name;
+    protected final int mask;
+
+    protected static final int MASK_FIELD = 1;
+    protected static final int MASK_CONSTRUCTOR = 2;
+    protected static final int MASK_METHOD = 4;
+    protected static final int MASK_OVERVIEW = 8;
+    protected static final int MASK_PACKAGE = 16;
+    protected static final int MASK_TYPE = 32;
+    protected static final int MASK_INLINE = 64;
+
+    protected static final int MASK_DEFAULT = 0x003f; // no inline
+    protected static final int MASK_VALID = 0x007f; // includes inline
+
+    public static void register(Map taglets) {
+        ICUInternalTaglet.register(taglets);
+        ICUDraftTaglet.register(taglets);
+        ICUStableTaglet.register(taglets);
+//#if defined(J2SE13) || defined(J2SE14)
+//##        ICUDeprecatedTaglet.register(taglets);
+//#endif
+        ICUProvisionalTaglet.register(taglets);
+        ICUObsoleteTaglet.register(taglets);
+        ICUIgnoreTaglet.register(taglets);
+    }
+
+    protected ICUTaglet(String name, int mask) {
+        this.name = name;
+        this.mask = mask & MASK_VALID;
+    }
+
+    public boolean inField() {
+        return (mask & MASK_FIELD) != 0;
+    }
+
+    public boolean inConstructor() {
+        return (mask & MASK_CONSTRUCTOR) != 0;
+    }
+
+    public boolean inMethod() {
+        return (mask & MASK_METHOD) != 0;
+    }
+
+    public boolean inOverview() {
+        return (mask & MASK_OVERVIEW) != 0;
+    }
+
+    public boolean inPackage() {
+        return (mask & MASK_PACKAGE) != 0;
+    }
+
+    public boolean inType() {
+        return (mask & MASK_TYPE) != 0;
+    }
+
+    public boolean isInlineTag() {
+        return (mask & MASK_INLINE) != 0;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String toString(Tag tag) {
+        return tag.text();
+    }
+
+    public String toString(Tag[] tags) {
+        if (tags != null) {
+            if (tags.length > 1) {
+                String msg = "Should not have more than one ICU tag per element:\n";
+                for (int i = 0; i < tags.length; ++i) {
+                    msg += "  [" + i + "] " + tags[i] + "\n";
+                }
+                throw new IllegalStateException(msg);
+            } else if (tags.length > 0) {
+                return toString(tags[0]);
+            }
+        }
+        return null;
+    }
+
+//#if defined(J2SE13) || defined(J2SE14)
+//#else
+    public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) throws IllegalArgumentException {
+        TagletOutput out = writer.getTagletOutputInstance();
+        out.setOutput(toString(tag));
+        return out;
+    }
+
+    public TagletOutput getTagletOutput(Doc holder, TagletWriter writer) throws IllegalArgumentException {
+        TagletOutput out = writer.getTagletOutputInstance();
+        Tag[] tags = holder.tags(getName());
+        if (tags.length == 0) {
+            return null;
+        }
+        out.setOutput(toString(tags[0]));
+        return out;
+    }
+//#endif
+
+    protected static final String STATUS = "<dt><b>Status:</b></dt>";
+
+    public static class ICUInternalTaglet extends ICUTaglet {
+        private static final String NAME = "internal";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUInternalTaglet());
+        }
+
+        private ICUInternalTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return STATUS + "<dd><em>Internal</em>. <font color='red'>This API is <em>ICU internal only</em>.</font></dd>";
+        }
+    }
+
+    public static class ICUDraftTaglet extends ICUTaglet {
+        private static final String NAME = "draft";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUDraftTaglet());
+        }
+
+        private ICUDraftTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            String text = tag.text();
+            if (text.length() == 0) {
+                System.err.println("Warning: empty draft tag");
+            }
+            return STATUS + "<dd>Draft " + tag.text() + ".</dd>";
+        }
+    }
+
+    public static class ICUStableTaglet extends ICUTaglet {
+        private static final String NAME = "stable";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUStableTaglet());
+        }
+
+        private ICUStableTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            String text = tag.text();
+            if (text.length() > 0) {
+                return STATUS + "<dd>Stable " + text + ".</dd>";
+            } else {
+                return STATUS + "<dd>Stable.</dd>";
+            }
+        }
+    }
+//#if defined(J2SE13) || defined(J2SE14)
+//##    /*
+//##     * sigh, in JDK 1.5 we can't override the standard deprecated taglet
+//##     * so easily.  I'm not impressed with the javadoc code.
+//##     */
+//##    public static class ICUDeprecatedTaglet extends ICUTaglet {
+//##        private static final String NAME = "deprecated";
+//##
+//##        public static void register(Map taglets) {
+//##            taglets.remove(NAME); // override standard deprecated taglet
+//##            taglets.put(NAME, new ICUDeprecatedTaglet());
+//##        }
+//##
+//##        private ICUDeprecatedTaglet() {
+//##            super(NAME, MASK_DEFAULT);
+//##        }
+//##
+//##        public String toString(Tag tag) {
+//##            BreakIterator bi = BreakIterator.getSentenceInstance(Locale.US);
+//##            String text = tag.text();
+//##            bi.setText(text);
+//##            int first = bi.first();
+//##            int next = bi.next();
+//##            if (first == -1 || next == -1) {
+//##                System.err.println("Warning: bad deprecated tag '" + text + "'");
+//##                return "<dd><em>Note</em>. " + text + "</dd>";
+//##            } else {
+//##                if ("This API is ICU internal only.".equals(text)) {
+//##                    return null;
+//##                }
+//##                return "<dd><em>Note, " + text.substring(first, next) + "</em>. " + text.substring(next) + "</dd>";
+//##            }
+//##        }
+//##    }
+//#endif
+
+    public static class ICUProvisionalTaglet extends ICUTaglet {
+        private static final String NAME = "provisional";
+
+        public static void register(Map taglets) {
+            taglets.remove(NAME); // override standard deprecated taglet
+            taglets.put(NAME, new ICUProvisionalTaglet());
+        }
+
+        private ICUProvisionalTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return null;
+        }
+    }
+
+    public static class ICUObsoleteTaglet extends ICUTaglet {
+        private static final String NAME = "obsolete";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUObsoleteTaglet());
+        }
+
+        private ICUObsoleteTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            BreakIterator bi = BreakIterator.getSentenceInstance(Locale.US);
+            String text = tag.text();
+            bi.setText(text);
+            int first = bi.first();
+            int next = bi.next();
+            if (text.length() == 0) {
+                first = next = 0;
+            }
+            return STATUS + "<dd><em>Obsolete.</em> <font color='red'>Will be removed in " + text.substring(first, next) + "</font>. " + text.substring(next) + "</dd>";
+
+        }
+    }
+
+    public static class ICUIgnoreTaglet extends ICUTaglet {
+        private static ICUTaglet singleton;
+
+        public static void register(Map taglets) {
+            if (singleton == null) {
+                singleton = new ICUIgnoreTaglet();
+            }
+            taglets.put("bug", singleton);
+            taglets.put("test", singleton);
+            taglets.put("summary", singleton);
+        }
+
+        private ICUIgnoreTaglet() {
+            super(".ignore", MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/README.txt b/src/com/ibm/icu/dev/tool/docs/README.txt
new file mode 100644
index 0000000..337f16b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/README.txt
@@ -0,0 +1,95 @@
+Copyright (C) 1996-2004, International Business Machines Corporation and
+others. All Rights Reserved.
+
+-------------------------------------------
+Using the GatherAPIData and ReportAPI tools
+-------------------------------------------
+
+These two tools are used together to generate reports about changes in
+supported API between versions of ICU4J.
+
+
+GatherAPIData 
+
+GatherAPIData uses javadoc to process the ICU4J source files and
+generate a file listing information about the public API, including
+the ICU4J status (draft, stable, deprecated, obsolete).  It excludes
+private API, API marked @internal.  The file is written as text, so it
+is human-readable, but it is a bit verbose.  To save space, the file
+can be zip'd or gzip'd (using flags passed to the tool), which will
+reduce the size by about a factor of 10.
+
+GatherAPIData requires javadoc and is currently based on sun jdk
+1.4.2.  JavaDoc is internal (I believe) so you need a reference jvm
+from Sun to compile the tool, but it can be run against any 1.4 JDK
+(at least, those from Sun).  Instructions in the source file show how
+it can be invoked.
+
+GatherAPIData should be passed all the packages that need reporting.
+Currently, public api is only in the lang, math, text, and util
+subpackages of com.ibm.icu.
+
+
+ReportAPI 
+
+ReportAPI takes two api files generated by GatherAPIData and reports
+on removals, changes, and additions to the API.  It does this by
+comparing the API information in the two API files.  When new classes
+are added, only the class is listed, not its entire API, and similarly
+when a class is deleted.  When APIs with the same name and signature
+are changed (visibility, status, inheritance) these changes are listed
+by showing the old and new versions of the API.
+
+ReportAPI is not particularly smart, and in particular, does not know
+about inherited API.  So for example, moving public API from a class
+to a base class is reported as a deletion of API from the original
+class, even though the effective API on the original class is
+unchanged by this.
+
+ReportAPI also does not know about Java class files, so for example it
+cannot be used to compare com.ibm.icu.lang.UCharacter against
+java.lang.Character.  This might be provided in a later release.
+
+For these reasons, in general it is best to compare two successive
+versions of ICU4J against each other, rather than radically different
+versions.  A large number of changes can show up, many of which might
+fall into these 'innocuous' categories.
+
+ReportAPI can generate either plain text or html reports.  Since it
+only requires the data files and does not rely on JavaDoc, it is more
+straightforward to invoke.
+
+ReportAPI uses the file extension to determine how to uncompress the
+api data files.  It expects '.zip' for files that have been compressed
+using zip, and '.gz' for files that have been compressed using gzip.
+The GatherAPIData utility automatically appends these extensions when
+compression is used.
+
+API Data Files
+
+API Data files for ICU4J 2.8 and 3.0 are in this directory.  The
+intent is to store data files for each release version of ICU4J, to
+facilitate comparison using the ReportAPI tool.  Of course, they can
+always be regenerated using the GenerateAPI and the sources of a
+particular ICU4J release.
+
+The format of the API data file is straightforward.  The first line of
+the file is the header, successive lines are the api information.
+Each line consists of a number of tokens, each followed by a
+semi-colon (incuding the last token on the line).
+
+The header line contains the version number, the 'name' of the version
+of ICU4J represented by the file, and a 'base directory' field
+(currently not fully implemented).
+
+The following lines contain data generated by the APIInfo class, one
+line per class or method.  The tokens are status, visibility, static,
+final, synchronized, abstract, type, package, containing class, name,
+and 'signature' (which varies by the type of object).  For classes,
+the 'signature' is the immediate inheritance of the class.  For
+fields, the 'signature' is the type of the field.  For methods, the
+'signature' is the function signature. All fields are always present.
+
+For more information, please see APIInfo.java.
+
+-------
diff --git a/src/com/ibm/icu/dev/tool/docs/ReportAPI.java b/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
new file mode 100644
index 0000000..26fe8e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
@@ -0,0 +1,486 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Compare two API files (generated by GatherAPIData) and generate a report
+ * on the differences.
+ *
+ * Sample invocation:
+ * java -old: icu4j28.api.zip -new: icu4j30.api -html -out: icu4j_compare_28_30.html
+ *
+ * TODO:
+ * - make 'changed apis' smarter - detect method parameter or return type change
+ *   for this, the sequential search through methods ordered by signature won't do.
+ *     We need to gather all added and removed overloads for a method, and then
+ *     compare all added against all removed in order to identify this kind of
+ *     change.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+import java.text.*;
+
+public class ReportAPI {
+    APIData oldData;
+    APIData newData;
+    boolean html;
+    String outputFile;
+
+    TreeSet added;
+    TreeSet removed;
+    TreeSet promoted;
+    TreeSet obsoleted;
+    ArrayList changed;
+
+    static final class DeltaInfo extends APIInfo {
+        APIInfo added;
+        APIInfo removed;
+
+        DeltaInfo(APIInfo added, APIInfo removed) {
+            this.added = added;
+            this.removed = removed;
+        }
+
+        public int getVal(int typ) {
+            return added.getVal(typ);
+        }
+
+        public String get(int typ, boolean brief) {
+            return added.get(typ, brief);
+        }
+
+        public void print(PrintWriter pw, boolean detail, boolean html) {
+            pw.print("    ");
+            removed.print(pw, detail, html);
+            if (html) {
+                pw.println("</br>");
+            } else {
+                pw.println();
+                pw.print("--> ");
+            }
+            added.print(pw, detail, html);
+        }
+    }
+
+    public static void main(String[] args) {
+        String oldFile = null;
+        String newFile = null;
+        String outFile = null;
+        boolean html = false;
+        boolean internal = false;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-old:")) {
+                oldFile = args[++i];
+            } else if (arg.equals("-new:")) {
+                newFile = args[++i];
+            } else if (arg.equals("-out:")) {
+                outFile = args[++i];
+            } else if (arg.equals("-html")) {
+                html = true;
+            } else if (arg.equals("-internal")) {
+                internal = true;
+            }
+        }
+
+        new ReportAPI(oldFile, newFile, internal).writeReport(outFile, html, internal);
+    }
+
+    /*
+      while the both are methods and the class and method names are the same, collect
+      overloads.  when you hit a new method or class, compare the overloads
+      looking for the same # of params and simple param changes.  ideally
+      there are just a few.
+
+      String oldA = null;
+      String oldR = null;
+      if (!a.isMethod()) {
+      remove and continue
+      }
+      String am = a.getClassName() + "." + a.getName();
+      String rm = r.getClassName() + "." + r.getName();
+      int comp = am.compare(rm);
+      if (comp == 0 && a.isMethod() && r.isMethod())
+
+    */
+
+    ReportAPI(String oldFile, String newFile, boolean internal) {
+        this(APIData.read(oldFile, internal), APIData.read(newFile, internal));
+    }
+
+    ReportAPI(APIData oldData, APIData newData) {
+        this.oldData = oldData;
+        this.newData = newData;
+
+        removed = (TreeSet)oldData.set.clone();
+        removed.removeAll(newData.set);
+
+        added = (TreeSet)newData.set.clone();
+        added.removeAll(oldData.set);
+
+        changed = new ArrayList();
+        Iterator ai = added.iterator();
+        Iterator ri = removed.iterator();
+        Comparator c = APIInfo.changedComparator();
+
+        ArrayList ams = new ArrayList();
+        ArrayList rms = new ArrayList();
+        //PrintWriter outpw = new PrintWriter(System.out);
+
+        APIInfo a = null, r = null;
+        while ((a != null || ai.hasNext()) && (r != null || ri.hasNext())) {
+            if (a == null) a = (APIInfo)ai.next();
+            if (r == null) r = (APIInfo)ri.next();
+
+            String am = a.getClassName() + "." + a.getName();
+            String rm = r.getClassName() + "." + r.getName();
+            int comp = am.compareTo(rm);
+            if (comp == 0 && a.isMethod() && r.isMethod()) { // collect overloads
+                ams.add(a); a = null;
+                rms.add(r); r = null;
+                continue;
+            }
+
+            if (!ams.isEmpty()) {
+                // simplest case first
+                if (ams.size() == 1 && rms.size() == 1) {
+                    changed.add(new DeltaInfo((APIInfo)ams.get(0), (APIInfo)rms.get(0)));
+                } else {
+                    // dang, what to do now?
+                    // TODO: modify deltainfo to deal with lists of added and removed
+                }
+                ams.clear();
+                rms.clear();
+            }
+
+            int result = c.compare(a, r);
+            if (result < 0) {
+                a = null;
+            } else if (result > 0) {
+                r = null;
+            } else {
+                changed.add(new DeltaInfo(a, r));
+                a = null;
+                r = null;
+            }
+        }
+
+        // now clean up added and removed by cleaning out the changed members
+        Iterator ci = changed.iterator();
+        while (ci.hasNext()) {
+            DeltaInfo di = (DeltaInfo)ci.next();
+            added.remove(di.added);
+            removed.remove(di.removed);
+        }
+
+        Set tempAdded = new HashSet();
+        tempAdded.addAll(newData.set);
+        tempAdded.removeAll(removed);
+        TreeSet changedAdded = new TreeSet(APIInfo.defaultComparator());
+        changedAdded.addAll(tempAdded);
+
+        Set tempRemoved = new HashSet();
+        tempRemoved.addAll(oldData.set);
+        tempRemoved.removeAll(added);
+        TreeSet changedRemoved = new TreeSet(APIInfo.defaultComparator());
+        changedRemoved.addAll(tempRemoved);
+
+        promoted = new TreeSet(APIInfo.defaultComparator());
+        obsoleted = new TreeSet(APIInfo.defaultComparator());
+        ai = changedAdded.iterator();
+        ri = changedRemoved.iterator();
+        a = r = null;
+        while ((a != null || ai.hasNext()) && (r != null || ri.hasNext())) {
+            if (a == null) a = (APIInfo)ai.next();
+            if (r == null) r = (APIInfo)ri.next();
+            int result = c.compare(a, r);
+            if (result < 0) {
+                a = null;
+            } else if (result > 0) {
+                r = null;
+            } else {
+                int change = statusChange(a, r);
+                if (change > 0) {
+                    promoted.add(a);
+                } else if (change < 0) {
+                    obsoleted.add(a);
+                }
+                a = null;
+                r = null;
+            }
+        }
+
+        added = stripAndResort(added);
+        removed = stripAndResort(removed);
+        promoted = stripAndResort(promoted);
+        obsoleted = stripAndResort(obsoleted);
+    }
+
+    private int statusChange(APIInfo lhs, APIInfo rhs) { // new. old
+        for (int i = 0; i < APIInfo.NUM_TYPES; ++i) {
+            if (lhs.get(i, true).equals(rhs.get(i, true)) == (i == APIInfo.STA)) {
+                return 0;
+            }
+        }
+        int lstatus = lhs.getVal(APIInfo.STA);
+        if (lstatus == APIInfo.STA_OBSOLETE || lstatus == APIInfo.STA_DEPRECATED || lstatus == APIInfo.STA_INTERNAL) {
+            return -1;
+        }
+        return 1;
+    }
+
+    private boolean writeReport(String outFile, boolean html, boolean internal) {
+        OutputStream os = System.out;
+        if (outFile != null) {
+            try {
+                os = new FileOutputStream(outFile);
+            }
+            catch (FileNotFoundException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        PrintWriter pw = null;
+        try {
+            pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os, "UTF-8")));
+        }
+        catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException(); // UTF-8 should always be supported
+        }
+
+        DateFormat fmt = new SimpleDateFormat("yyyy");
+        String year = fmt.format(new Date());
+        String title = "ICU4J API Comparison: " + oldData.name + " with " + newData.name;
+        String info = "Contents generated by ReportAPI tool on " + new Date().toString();
+        String copyright = "Copyright (C) " + year + ", International Business Machines Corporation, All Rights Reserved.";
+
+        if (html) {
+            pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
+            pw.println("<html>");
+            pw.println("<head>");
+            pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
+            pw.println("<title>" + title + "</title>");
+            pw.println("<!-- Copyright " + year + ", IBM, All Rights Reserved. -->");
+            pw.println("</head>");
+            pw.println("<body>");
+
+            pw.println("<h1>" + title + "</h1>");
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Removed from " + oldData.name +"</h2>");
+            if (removed.size() > 0) {
+                printResults(removed, pw, true, false);
+            } else {
+                pw.println("<p>(no API removed)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            if (internal) {
+                pw.println("<h2>Withdrawn, Deprecated, or Obsoleted in " + newData.name + "</h2>");
+            } else {
+                pw.println("<h2>Deprecated or Obsoleted in " + newData.name + "</h2>");
+            }
+            if (obsoleted.size() > 0) {
+                printResults(obsoleted, pw, true, false);
+            } else {
+                pw.println("<p>(no API obsoleted)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Changed in " + newData.name + " (old, new)</h2>");
+            if (changed.size() > 0) {
+                printResults(changed, pw, true, true);
+            } else {
+                pw.println("<p>(no API changed)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Promoted to stable in " + newData.name + "</h2>");
+            if (promoted.size() > 0) {
+                printResults(promoted, pw, true, false);
+            } else {
+                pw.println("<p>(no API promoted)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Added in " + newData.name + "</h2>");
+            if (added.size() > 0) {
+                printResults(added, pw, true, false);
+            } else {
+                pw.println("<p>(no API added)</p>");
+            }
+
+            pw.println("<hr/>");
+            pw.println("<p><i><font size=\"-1\">" + info + "<br/>" + copyright + "</font></i></p>");
+            pw.println("</body>");
+            pw.println("</html>");
+        } else {
+            pw.println(title);
+            pw.println();
+            pw.println();
+
+            pw.println("=== Removed from " + oldData.name + " ===");
+            if (removed.size() > 0) {
+                printResults(removed, pw, false, false);
+            } else {
+                pw.println("(no API removed)");
+            }
+
+            pw.println();
+            pw.println();
+            if (internal) {
+                pw.println("=== Withdrawn, Deprecated, or Obsoleted in " + newData.name + " ===");
+            } else {
+                pw.println("=== Deprecated or Obsoleted in " + newData.name + " ===");
+            }
+            if (obsoleted.size() > 0) {
+                printResults(obsoleted, pw, false, false);
+            } else {
+                pw.println("(no API obsoleted)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Changed in " + newData.name + " (old, new) ===");
+            if (changed.size() > 0) {
+                printResults(changed, pw, false, true);
+            } else {
+                pw.println("(no API changed)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Promoted to stable in " + newData.name + " ===");
+            if (promoted.size() > 0) {
+                printResults(promoted, pw, false, false);
+            } else {
+                pw.println("(no API promoted)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Added in " + newData.name + " ===");
+            if (added.size() > 0) {
+                printResults(added, pw, false, false);
+            } else {
+                pw.println("(no API added)");
+            }
+
+            pw.println();
+            pw.println("================");
+            pw.println(info);
+            pw.println(copyright);
+        }
+        pw.close();
+
+        return false;
+    }
+
+    private static void printResults(Collection c, PrintWriter pw, boolean html, boolean isChangedAPIs) {
+        Iterator iter = c.iterator();
+        String pack = null;
+        String clas = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+
+            String packageName = info.getPackageName();
+            if (!packageName.equals(pack)) {
+                if (html) {
+                    if (clas != null) {
+                        pw.println("</ul>");
+                    }
+                    if (pack != null) {
+                        pw.println("</ul>");
+                    }
+                    pw.println();
+                    pw.println("<h3>Package " + packageName + "</h3>");
+                    pw.print("<ul>");
+                } else {
+                    if (pack != null) {
+                        pw.println();
+                    }
+                    pw.println();
+                    pw.println("Package " + packageName + ":");
+                }
+                pw.println();
+
+                pack = packageName;
+                clas = null;
+            }
+
+            if (!info.isClass()) {
+                String className = info.getClassName();
+                if (!className.equals(clas)) {
+                    if (html) {
+                        if (clas != null) {
+                            pw.println("</ul>");
+                        }
+                        pw.println(className);
+                        pw.println("<ul>");
+                    } else {
+                        pw.println(className);
+                    }
+                    clas = className;
+                }
+            }
+
+            if (html) {
+                pw.print("<li>");
+                info.print(pw, isChangedAPIs, html);
+                pw.println("</li>");
+            } else {
+                info.println(pw, isChangedAPIs, html);
+            }
+        }
+
+        if (html) {
+            if (clas != null) {
+                pw.println("</ul>");
+            }
+            if (pack != null) {
+                pw.println("</ul>");
+            }
+        }
+        pw.println();
+    }
+
+    private static TreeSet stripAndResort(TreeSet t) {
+        stripClassInfo(t);
+        TreeSet r = new TreeSet(APIInfo.classFirstComparator());
+        r.addAll(t);
+        return r;
+    }
+
+    private static void stripClassInfo(Collection c) {
+        // c is sorted with class info first
+        Iterator iter = c.iterator();
+        String cname = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            String className = info.getClassName();
+            if (cname != null) {
+                if (cname.equals(className)) {
+                    iter.remove();
+                    continue;
+                }
+                cname = null;
+            }
+            if (info.isClass()) {
+                cname = info.getName();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java b/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
new file mode 100644
index 0000000..c45c4ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
@@ -0,0 +1,335 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class SwatDeprecated {
+    private File srcFile;
+    private File dstFile;
+    private int maxLength = 85;
+    private String srcPrefix;
+    private String dstPrefix;
+    private String srcTag;
+    private String trgTag;
+    private boolean overwrite;
+    private int verbosity;
+    private int cc; // changed file count
+    //private boolean inPlace;
+    private String copyYear;
+
+    private PrintWriter pw = new PrintWriter(System.out);
+
+    private static FilenameFilter ff = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                return (new File(dir, name).isDirectory() && !"CVS".equals(name)) ||
+                    (!name.equals("SwatDeprecated.java") && name.endsWith(".java"));
+            }
+        };
+
+    public static void main(String[] args) {
+        String src = System.getProperty("user.dir");
+        String dst = src;
+        boolean dep = true;
+        boolean ovr = false;
+        int vrb = 1;
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i].toLowerCase();
+            if (arg.charAt(0) == '-') {
+                if (arg.equals("-src")) {
+                    src = args[++i];
+                }
+                else if (arg.equals("-dst")) {
+                    dst = args[++i];
+                }
+                else if (arg.equals("-dep")) {
+                    dep = true;
+                } 
+                else if (arg.equals("-prov")) {
+                    dep = false;
+                }
+                else if (arg.equals("-overwrite")) {
+                    ovr = true;
+                }
+                else if (arg.equals("-silent")) { // no output
+                    vrb = 0;
+                }
+                else if (arg.equals("-quiet")) { // output parameters and count of changed files (default)
+                    vrb = 1;
+                } 
+                else if (arg.equals("-verbose")) { // output names of modified files
+                    vrb = 2;
+                } 
+                else if (arg.equals("-noisy")) { // output names of files not modified
+                    vrb = 3;
+                } 
+                else if (arg.equals("-copydebug")) { // output copyright debugging
+                    vrb = 4;
+                }
+                else if (arg.equals("-debug")) { // output all debugging
+                    vrb = 5;
+                }
+            }
+        }
+
+        new SwatDeprecated(src, dst, dep, ovr, vrb).run();
+    }
+
+    public SwatDeprecated(String src, String dst, boolean dep, boolean overwrite, int verbosity) {
+        this.srcFile = new File(src);
+        this.dstFile = new File(dst);
+        this.overwrite = overwrite;
+        this.verbosity = verbosity;
+        this.copyYear = new SimpleDateFormat("yyyy").format(new Date());
+
+        this.srcTag = "@deprecated This is a draft API and might change in a future release of ICU.";
+        this.trgTag = "@provisional This API might change or be removed in a future release.";
+        if (!dep) {
+            String temp = srcTag;
+            srcTag = trgTag;
+            trgTag = temp;
+        }
+        try {
+            this.srcPrefix = srcFile.getCanonicalPath();
+            this.dstPrefix = dstFile.getCanonicalPath();
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException(e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        //this.inPlace = srcPrefix.equals(dstPrefix);
+        this.cc = 0;
+
+        if (verbosity >= 1) {
+            pw.println("replacing '" + srcTag + "'");
+            pw.println("     with '" + trgTag + "'");
+            pw.println();
+            pw.println("     source: '" + srcPrefix + "'");
+            pw.println("destination: '" + dstPrefix + "'");
+            pw.println("  overwrite: " + overwrite);
+            pw.println("  verbosity: " + verbosity);
+            pw.flush();
+        }
+    }
+
+    public void run() {
+        if (!srcFile.exists()) {
+            throw new RuntimeException("file " + srcFile.getPath() + " does not exist.");
+        }
+        doList(srcFile);
+        if (verbosity >= 1) {
+            pw.println("changed " + cc + " file(s)");
+            pw.flush();
+        }
+    }
+
+    public void doList(File file) {
+        String[] filenames = file.list(ff);
+        if (verbosity >= 5) {
+            pw.println(file.getPath());
+            dumpList(filenames);
+            pw.flush();
+        }
+        for (int i = 0; i < filenames.length; ++i) {
+            File f = new File(file, filenames[i]);
+            if (f.isDirectory()) {
+                doList(f);
+            } else {
+                processFile(f);
+            }
+        }
+    }
+
+    public void processFile(File inFile) {
+        File bakFile = null;
+        try {
+            String inPath = inFile.getCanonicalPath();
+            if (verbosity >= 5) {
+                pw.println("processFile: " + inPath);
+            }
+
+            String outPath = dstPrefix + inPath.substring(srcPrefix.length());
+            File outFile = new File(outPath);
+
+            File tmpFile = null;
+            if (outFile.exists()) {
+                if (!overwrite) {
+                    throw new RuntimeException("no permission to overwrite file: " + outPath);
+                } else {
+                    bakFile = outFile;
+                    tmpFile = File.createTempFile(inFile.getName(), null, inFile.getParentFile());
+                }
+            } else {
+                tmpFile = outFile;
+                File parent = tmpFile.getParentFile();
+                parent.mkdirs();
+                tmpFile.createNewFile();
+            }
+
+            String tmpPath = tmpFile.getPath();
+            if (verbosity >= 5) {
+                pw.println("tmpFile: " + tmpPath);
+            }
+
+            InputStream is = new FileInputStream(inFile);
+            OutputStream os = new FileOutputStream(tmpFile);
+
+            PrintStream ps = new PrintStream(os);
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+
+            String line;
+            int n = 0;
+            int tc = 0;
+//            boolean debug = false;
+            while (null != (line = br.readLine())) {
+                // int temp = line.indexOf("@deprecated");
+                int ix = line.indexOf(srcTag);
+//                 if (temp != -1 && ix == -1) {
+//                     if (debug == false) {
+//                         debug = true;
+//                         pw.println("file: " + name);
+//                     }
+//                     pw.println("[" + n + "] " + line);
+//                     pw.flush();
+//                 }
+                if (ix != -1) {
+                    if (verbosity >= 5) {
+                        pw.println("[" + n + "] " + line);
+                    }
+
+                    line = line.substring(0,ix) + trgTag;
+                    
+                    ++tc;
+                } else if (n < 20) {
+                    // swat copyrights in the first 20 lines while we're at it
+                    ix = line.indexOf("opyright");
+                    if (ix != -1) {
+                        String nline = null;
+                        do {
+                            if (verbosity == 4) {
+                                pw.println("[" + n + "] " + line);
+                            }
+                            ix = line.indexOf("-200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+5);
+                                break;
+                            }
+                            ix = line.indexOf("- 200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+6);
+                                break;
+                            }
+                            ix = line.indexOf("-199");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+5);
+                                break;
+                            }
+                            ix = line.indexOf(copyYear);
+                            if (ix != -1) {
+                                break; // nothing needs changing
+                            }
+                            ix = line.indexOf("200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix+4) + "-" + copyYear + line.substring(ix+4);
+                                break;
+                            }
+                            ix = line.indexOf("199");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix+4) + "-" + copyYear + line.substring(ix+4);
+                                break;
+                            }
+                        } while (false);
+
+                        if (nline != null) {
+                            if (verbosity >= 4) {
+                                pw.println("  --> " + nline);
+                            }
+                            line = nline;
+                        }
+                    }
+                }
+                ps.println(line);
+                ++n;
+            }
+            ps.flush();
+            is.close();
+            os.close();
+
+            if (tc == 0) { // nothing changed, forget this file
+                if (verbosity >= 3) {
+                    pw.println("no changes in file: " + inPath);
+                }
+                if (!tmpFile.delete()) {
+                    throw new RuntimeException("unable to delete unneeded temporary file: " + tmpPath);
+                }
+
+                return;
+            }
+
+            if (bakFile != null) {
+                if (bakFile.exists()) {
+                    bakFile.delete();
+                }
+                if (!tmpFile.renameTo(bakFile)) {
+                    pw.println("warning: couldn't rename temp file to: " + outPath);
+                }
+            }
+
+            outFile.setLastModified(inFile.lastModified());
+
+            if (verbosity >= 2) {
+                pw.println(inPath);
+                pw.flush();
+            }
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException(e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+        finally {
+            pw.flush();
+        }
+
+        ++cc;
+    }
+
+    public void dumpList(String[] names) {
+        if (names == null) {
+            pw.print("null");
+        } else {
+            pw.print("{");
+            int lc = 0;
+            if (names.length > 0) {
+                pw.println();
+                pw.print("    ");
+                lc = 4;
+            }
+            for (int i = 0; i < names.length; ++i) {
+                String name = names[i];
+                int nl = name.length();
+                if (lc + nl > maxLength) {
+                    pw.println();
+                    pw.print("    ");
+                    lc = 4;
+                }
+                pw.print(name);
+                pw.print(", ");
+                lc += nl + 2;
+            }
+            if (names.length > 0) {
+                pw.println();
+            }
+            pw.print("} ");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz
new file mode 100644
index 0000000..d95f52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:772a1e5195bbdcd2ac5fdf7153af71ca0a9dd934118bfbdb17a4388c4e3af6da
+size 19566
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz
new file mode 100644
index 0000000..e99db1a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d79fcac17e325a019a52ffdfb8e1fdd8eca4079faf05149a8710751d77934a73
+size 20672
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz
new file mode 100644
index 0000000..9099c01
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:535e05f6624f372fd241b1f2e5d4feb90ccff5fdaf732eb0df52acac9f5d1f29
+size 21416
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz
new file mode 100644
index 0000000..dec27d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f807843ac5fb8b32a9b7f13a89779d3aa712521a9c35d23c2352bc7835ee9050
+size 23103
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz
new file mode 100644
index 0000000..d472615
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:044f24883f55361bf4d78e63191f1600d64453b7405f93978fbe63a5722fe1b3
+size 23106
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz
new file mode 100644
index 0000000..e7c9741
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f76f514fd1344a4216b240345dbf1e93625e7a3c9f40c9e75939954c19526462
+size 23134
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz
new file mode 100644
index 0000000..d0dad8f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3af60a55b9cdc943952832f7a142eaeac21c51d4b16fb2cf977244553248fd08
+size 23132
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz
new file mode 100644
index 0000000..e6e60dd
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03d0d6ee2b586d113eb14af1a15dd2e09fd18a807258b3551a7daa9ebdbfade0
+size 26535
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz
new file mode 100644
index 0000000..a334643
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a57af4b4e36cb929fd0630fd1db5c08ffe9a367be05abb44bc0cfbe6f1bdcd2
+size 30164
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz
new file mode 100644
index 0000000..2b4b302
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:546dfc5bf2f2872d7804fbba61be67ee893b8a1ff082eb122f81bfd361a948b1
+size 30281
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz
new file mode 100644
index 0000000..d655870
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75ece13e19c149456a6b86a13a0eab9bb851f2adb7119383c72e2ae3161c00c1
+size 31554
diff --git a/src/com/ibm/icu/dev/tool/ime/IMETest.java b/src/com/ibm/icu/dev/tool/ime/IMETest.java
new file mode 100644
index 0000000..3612353
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/IMETest.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime;
+
+import java.awt.Rectangle;
+import javax.swing.Box;
+import javax.swing.JFrame;
+import javax.swing.JTextField;
+import javax.swing.WindowConstants;
+
+public class IMETest {
+    public static void main(String[] args) {
+    String sampleText = "This is a sample\nto put into the field.";
+    Rectangle loc = new Rectangle(100, 100, 300, 300);
+    for (int i = 0; i < 2; ++i) {
+        JFrame jf = new JFrame("Test Window " + i);
+        jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        Box box = Box.createVerticalBox();
+        box.add(new JTextField(sampleText));
+        box.add(new JTextField(sampleText));
+        jf.getContentPane().add(box);
+        jf.setBounds(loc);
+        
+        jf.setVisible(true);
+        
+        loc.x += 50;
+        loc.y += 50;
+    }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
new file mode 100644
index 0000000..9ebaa43
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
@@ -0,0 +1,216 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class BengaliInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale BENGALI = new Locale("bn", "IN");
+
+    public BengaliInputMethodDescriptor() {
+    super(BENGALI, "Bengali");
+    }
+    
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl()  {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u09A0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u099F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u098B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u09DF',   // '/'
+        /* 30 */ '\u09E6',   // '0'
+        /* 31 */ '\u09E7',   // '1'
+        /* 32 */ '\u09E8',   // '2'
+        /* 33 */ '\u09E9',   // '3'
+        /* 34 */ '\u09EA',   // '4'
+        /* 35 */ '\u09EB',   // '5'
+        /* 36 */ '\u09EC',   // '6'
+        /* 37 */ '\u09ED',   // '7'
+        /* 38 */ '\u09EE',   // '8'
+        /* 39 */ '\u09EF',   // '9'
+        /* 3A */ '\u099B',   // ':'
+        /* 3B */ '\u099A',   // ';'
+        /* 3C */ '\u09B7',   // '<'
+        /* 3D */ '\u09C3',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\u09AF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0993',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u09A3',   // 'C'
+        /* 44 */ '\u0985',   // 'D'
+        /* 45 */ '\u0986',   // 'E'
+        /* 46 */ '\u0987',   // 'F'
+        /* 47 */ '\u0989',   // 'G'
+        /* 48 */ '\u09AB',   // 'H'
+        /* 49 */ '\u0998',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0996',   // 'K'
+        /* 4C */ '\u09A5',   // 'L'
+        /* 4D */ '\u09B6',   // 'M'
+        /* 4E */ '\uFFFF',   // 'N'
+        /* 4F */ '\u09A7',   // 'O'
+        /* 50 */ '\u099D',   // 'P'
+        /* 51 */ '\u0994',   // 'Q'
+        /* 52 */ '\u0988',   // 'R'
+        /* 53 */ '\u098F',   // 'S'
+        /* 54 */ '\u098A',   // 'T'
+        /* 55 */ '\u0999',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0990',   // 'W'
+        /* 58 */ '\u0981',   // 'X'
+        /* 59 */ '\u09AD',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u09A1',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\u09BC',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0983',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u09CB',   // 'a'
+        /* 62 */ '\u09AC',   // 'b' (this is a BA instead of a VA)
+        /* 63 */ '\u09AE',   // 'c'
+        /* 64 */ '\u09CD',   // 'd'
+        /* 65 */ '\u09BE',   // 'e'
+        /* 66 */ '\u09BF',   // 'f'
+        /* 67 */ '\u09C1',   // 'g'
+        /* 68 */ '\u09AA',   // 'h'
+        /* 69 */ '\u0997',   // 'i'
+        /* 6A */ '\u09B0',   // 'j'
+        /* 6B */ '\u0995',   // 'k'
+        /* 6C */ '\u09A4',   // 'l'
+        /* 6D */ '\u09B8',   // 'm'
+        /* 6E */ '\u09B2',   // 'n'
+        /* 6F */ '\u09A6',   // 'o'
+        /* 70 */ '\u099C',   // 'p'
+        /* 71 */ '\u09CC',   // 'q'
+        /* 72 */ '\u09C0',   // 'r'
+        /* 73 */ '\u09C7',   // 's'
+        /* 74 */ '\u09C2',   // 't'
+        /* 75 */ '\u09B9',   // 'u'
+        /* 76 */ '\u09A8',   // 'v'
+        /* 77 */ '\u09C8',   // 'w'
+        /* 78 */ '\u0982',   // 'x'
+        /* 79 */ '\u09AC',   // 'y' (this is also a BA...)
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u09A2',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u099E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u09CD', '\u09B0'};
+        char[] RA_SUP = {'\u09B0', '\u09CD'};
+        char[] CONJ_JA_NYA = {'\u099C', '\u09CD', '\u099E'};
+        char[] CONJ_TA_RA = {'\u09A4', '\u09CD', '\u09B0'};
+        char[] CONJ_KA_SSA = {'\u0995', '\u09CD', '\u09B7'};
+        char[] CONJ_SHA_RA = {'\u09B6', '\u09CD', '\u09B0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_I              = '\u0987';
+        char LETTER_II             = '\u0988';
+        char LETTER_VOCALIC_R      = '\u098B';
+        char LETTER_DDA            = '\u09A1';
+        char LETTER_DDHA           = '\u09A2';
+        char VOWEL_SIGN_I          = '\u09BF';
+        char VOWEL_SIGN_II         = '\u09C0';
+        char VOWEL_SIGN_VOCALIC_R  = '\u09C3';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char LETTER_VOCALIC_L      = '\u098C';
+        char LETTER_VOCALIC_LL     = '\u09E1';
+        char LETTER_VOCALIC_RR     = '\u09E0';
+        char LETTER_DDDHA          = '\u09DC';
+        char LETTER_RHA            = '\u09DD';
+        char VOWEL_SIGN_VOCALIC_L  = '\u09E2';
+        char VOWEL_SIGN_VOCALIC_LL = '\u09E3';
+        char VOWEL_SIGN_VOCALIC_RR = '\u09C4';
+
+        joinWithNukta = new char[] {
+        LETTER_I,
+        LETTER_II,
+        LETTER_VOCALIC_R,
+        LETTER_DDA,
+        LETTER_DDHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II,
+        VOWEL_SIGN_VOCALIC_R
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_VOCALIC_RR,
+        LETTER_DDDHA,
+        LETTER_RHA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL,
+        VOWEL_SIGN_VOCALIC_RR
+        };
+    }
+
+    return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
new file mode 100644
index 0000000..8751e59
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
@@ -0,0 +1,246 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class DevanagariInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale DEVANAGARI = new Locale("hi", "IN");
+
+    public DevanagariInputMethodDescriptor() {
+    super(DEVANAGARI, "Devanagari");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl()  {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u090D',   // '!'
+        /* 22 */ '\u0920',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u091F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u090B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u092F',   // '/'
+        /* 30 */ '\u0966',   // '0'
+        /* 31 */ '\u0967',   // '1'
+        /* 32 */ '\u0968',   // '2'
+        /* 33 */ '\u0969',   // '3'
+        /* 34 */ '\u096A',   // '4'
+        /* 35 */ '\u096B',   // '5'
+        /* 36 */ '\u096C',   // '6'
+        /* 37 */ '\u096D',   // '7'
+        /* 38 */ '\u096E',   // '8'
+        /* 39 */ '\u096F',   // '9'
+        /* 3A */ '\u091B',   // ':'
+        /* 3B */ '\u091A',   // ';'
+        /* 3C */ '\u0937',   // '<'
+        /* 3D */ '\u0943',   // '='
+        /* 3E */ '\u0964',   // '>'
+        /* 3F */ '\u095F',   // '?'
+        /* 40 */ '\u0945',   // '@'
+        /* 41 */ '\u0913',   // 'A'
+        /* 42 */ '\u0934',   // 'B'
+        /* 43 */ '\u0923',   // 'C'
+        /* 44 */ '\u0905',   // 'D'
+        /* 45 */ '\u0906',   // 'E'
+        /* 46 */ '\u0907',   // 'F'
+        /* 47 */ '\u0909',   // 'G'
+        /* 48 */ '\u092B',   // 'H'
+        /* 49 */ '\u0918',   // 'I'
+        /* 4A */ '\u0931',   // 'J'
+        /* 4B */ '\u0916',   // 'K'
+        /* 4C */ '\u0925',   // 'L'
+        /* 4D */ '\u0936',   // 'M'
+        /* 4E */ '\u0933',   // 'N'
+        /* 4F */ '\u0927',   // 'O'
+        /* 50 */ '\u091D',   // 'P'
+        /* 51 */ '\u0914',   // 'Q'
+        /* 52 */ '\u0908',   // 'R'
+        /* 53 */ '\u090F',   // 'S'
+        /* 54 */ '\u090A',   // 'T'
+        /* 55 */ '\u0919',   // 'U'
+        /* 56 */ '\u0929',   // 'V'
+        /* 57 */ '\u0910',   // 'W'
+        /* 58 */ '\u0901',   // 'X'
+        /* 59 */ '\u092D',   // 'Y'
+        /* 5A */ '\u090E',   // 'Z'
+        /* 5B */ '\u0921',   // '['
+        /* 5C */ '\u0949',   // '\'
+        /* 5D */ '\u093C',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0903',   // '_'
+        /* 60 */ '\u094A',   // '`'
+        /* 61 */ '\u094B',   // 'a'
+        /* 62 */ '\u0935',   // 'b'
+        /* 63 */ '\u092E',   // 'c'
+        /* 64 */ '\u094D',   // 'd'
+        /* 65 */ '\u093E',   // 'e'
+        /* 66 */ '\u093F',   // 'f'
+        /* 67 */ '\u0941',   // 'g'
+        /* 68 */ '\u092A',   // 'h'
+        /* 69 */ '\u0917',   // 'i'
+        /* 6A */ '\u0930',   // 'j'
+        /* 6B */ '\u0915',   // 'k'
+        /* 6C */ '\u0924',   // 'l'
+        /* 6D */ '\u0938',   // 'm'
+        /* 6E */ '\u0932',   // 'n'
+        /* 6F */ '\u0926',   // 'o'
+        /* 70 */ '\u091C',   // 'p'
+        /* 71 */ '\u094C',   // 'q'
+        /* 72 */ '\u0940',   // 'r'
+        /* 73 */ '\u0947',   // 's'
+        /* 74 */ '\u0942',   // 't'
+        /* 75 */ '\u0939',   // 'u'
+        /* 76 */ '\u0928',   // 'v'
+        /* 77 */ '\u0948',   // 'w'
+        /* 78 */ '\u0902',   // 'x'
+        /* 79 */ '\u092C',   // 'y'
+        /* 7A */ '\u0946',   // 'z'
+        /* 7B */ '\u0922',   // '{'
+        /* 7C */ '\u0911',   // '|'
+        /* 7D */ '\u091E',   // '}'
+        /* 7E */ '\u0912',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+    
+        // the character substitutions for the meta characters.
+        char[] RA_SUB = {'\u094D', '\u0930'};
+        char[] RA_SUP = {'\u0930', '\u094D'};
+        char[] CONJ_JA_NYA = {'\u091C', '\u094D', '\u091E'};
+        char[] CONJ_TA_RA = {'\u0924', '\u094D', '\u0930'};
+        char[] CONJ_KA_SSA = {'\u0915', '\u094D', '\u0937'};
+        char[] CONJ_SHA_RA = {'\u0936', '\u094D', '\u0930'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char SIGN_CANDRABINDU      = '\u0901';
+        char LETTER_I              = '\u0907';
+        char LETTER_II             = '\u0908';
+        char LETTER_VOCALIC_R      = '\u090B';
+        char LETTER_KA             = '\u0915';
+        char LETTER_KHA            = '\u0916';
+        char LETTER_GA             = '\u0917';
+        char LETTER_JA             = '\u091C';
+        char LETTER_DDA            = '\u0921';
+        char LETTER_DDHA           = '\u0922';
+        char LETTER_PHA            = '\u092B';
+        char VOWEL_SIGN_I          = '\u093F';
+        char VOWEL_SIGN_II         = '\u0940';
+        char VOWEL_SIGN_VOCALIC_R  = '\u0943';
+        char DANDA                 = '\u0964';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char SIGN_OM               = '\u0950';
+        char LETTER_VOCALIC_L      = '\u090C';
+        char LETTER_VOCALIC_LL     = '\u0961';
+        char LETTER_VOCALIC_RR     = '\u0960';
+        char LETTER_QA             = '\u0958';
+        char LETTER_KHHA           = '\u0959';
+        char LETTER_GHHA           = '\u095A';
+        char LETTER_ZA             = '\u095B';
+        char LETTER_DDDHA          = '\u095C';
+        char LETTER_RHA            = '\u095D';
+        char LETTER_FA             = '\u095E';
+        char VOWEL_SIGN_VOCALIC_L  = '\u0962';
+        char VOWEL_SIGN_VOCALIC_LL = '\u0963';
+        char VOWEL_SIGN_VOCALIC_RR = '\u0944';
+        char SIGN_AVAGRAHA         = '\u093D';
+
+        joinWithNukta = new char[] {
+        SIGN_CANDRABINDU,
+        LETTER_I,
+        LETTER_II,
+        LETTER_VOCALIC_R ,
+        LETTER_KA,
+        LETTER_KHA,
+        LETTER_GA,
+        LETTER_JA,
+        LETTER_DDA,
+        LETTER_DDHA,
+        LETTER_PHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II,
+        VOWEL_SIGN_VOCALIC_R,
+        DANDA
+        };
+    
+        nuktaForm = new char[] {
+        SIGN_OM,
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_VOCALIC_RR,
+        LETTER_QA,
+        LETTER_KHHA,
+        LETTER_GHHA,
+        LETTER_ZA,
+        LETTER_DDDHA,
+        LETTER_RHA,
+        LETTER_FA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL,
+        VOWEL_SIGN_VOCALIC_RR,
+        SIGN_AVAGRAHA
+        };
+        }
+
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties b/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
new file mode 100644
index 0000000..40e5b1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
@@ -0,0 +1,18 @@
+#
+#*******************************************************************************
+#* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#
+# Default Input method display names for Indic input methods
+#
+
+DisplayName.Bengali     = Bengali Input Method
+DisplayName.Devanagari  = Devanagari Input Method
+DisplayName.Gujarati    = Gujarati Input Method
+DisplayName.Gurmukhi    = Gurmukhi Input Method
+DisplayName.Kannada     = Kannada Input Method
+DisplayName.Malayalam   = Malayalam Input Method
+DisplayName.Oriya       = Oriya Input Method
+DisplayName.Tamil       = Tamil Input Method
+DisplayName.Telugu      = Telugu Input Method
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
new file mode 100644
index 0000000..b031e78
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class GujaratiInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale GUJARATI = new Locale("gu", "IN");
+
+    public GujaratiInputMethodDescriptor() {
+    super(GUJARATI, "Gujarati");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u0A8D',   // '!'
+        /* 22 */ '\u0AA0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u0A9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u0A8B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0AAF',   // '/'
+        /* 30 */ '\u0AE6',   // '0'
+        /* 31 */ '\u0AE7',   // '1'
+        /* 32 */ '\u0AE8',   // '2'
+        /* 33 */ '\u0AE9',   // '3'
+        /* 34 */ '\u0AEA',   // '4'
+        /* 35 */ '\u0AEB',   // '5'
+        /* 36 */ '\u0AEC',   // '6'
+        /* 37 */ '\u0AED',   // '7'
+        /* 38 */ '\u0AEE',   // '8'
+        /* 39 */ '\u0AEF',   // '9'
+        /* 3A */ '\u0A9B',   // ':'
+        /* 3B */ '\u0A9A',   // ';'
+        /* 3C */ '\u0AB7',   // '<'
+        /* 3D */ '\u0AC3',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\u0AC5',   // '@'
+        /* 41 */ '\u0A93',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0AA3',   // 'C'
+        /* 44 */ '\u0A85',   // 'D'
+        /* 45 */ '\u0A86',   // 'E'
+        /* 46 */ '\u0A87',   // 'F'
+        /* 47 */ '\u0A89',   // 'G'
+        /* 48 */ '\u0AAB',   // 'H'
+        /* 49 */ '\u0A98',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0A96',   // 'K'
+        /* 4C */ '\u0AA5',   // 'L'
+        /* 4D */ '\u0AB6',   // 'M'
+        /* 4E */ '\u0AB3',   // 'N'
+        /* 4F */ '\u0AA7',   // 'O'
+        /* 50 */ '\u0A9D',   // 'P'
+        /* 51 */ '\u0A94',   // 'Q'
+        /* 52 */ '\u0A88',   // 'R'
+        /* 53 */ '\u0A8F',   // 'S'
+        /* 54 */ '\u0A8A',   // 'T'
+        /* 55 */ '\u0A99',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0A90',   // 'W'
+        /* 58 */ '\u0A81',   // 'X'
+        /* 59 */ '\u0AAD',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u0AA1',   // '['
+        /* 5C */ '\u0AC9',   // '\'
+        /* 5D */ '\u0ABC',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0A83',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u0ACB',   // 'a'
+        /* 62 */ '\u0AB5',   // 'b'
+        /* 63 */ '\u0AAE',   // 'c'
+        /* 64 */ '\u0ACD',   // 'd'
+        /* 65 */ '\u0ABE',   // 'e'
+        /* 66 */ '\u0ABF',   // 'f'
+        /* 67 */ '\u0AC1',   // 'g'
+        /* 68 */ '\u0AAA',   // 'h'
+        /* 69 */ '\u0A97',   // 'i'
+        /* 6A */ '\u0AB0',   // 'j'
+        /* 6B */ '\u0A95',   // 'k'
+        /* 6C */ '\u0AA4',   // 'l'
+        /* 6D */ '\u0AB8',   // 'm'
+        /* 6E */ '\u0AB2',   // 'n'
+        /* 6F */ '\u0AA6',   // 'o'
+        /* 70 */ '\u0A9C',   // 'p'
+        /* 71 */ '\u0ACC',   // 'q'
+        /* 72 */ '\u0AC0',   // 'r'
+        /* 73 */ '\u0AC7',   // 's'
+        /* 74 */ '\u0AC2',   // 't'
+        /* 75 */ '\u0AB9',   // 'u'
+        /* 76 */ '\u0AA8',   // 'v'
+        /* 77 */ '\u0AC8',   // 'w'
+        /* 78 */ '\u0A82',   // 'x'
+        /* 79 */ '\u0AAC',   // 'y'
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u0AA2',   // '{'
+        /* 7C */ '\u0A91',   // '|'
+        /* 7D */ '\u0A9E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0ACD', '\u0AB0'};
+        char[] RA_SUP = {'\u0AB0', '\u0ACD'};
+        char[] CONJ_JA_NYA = {'\u0A9C', '\u0ACD', '\u0A9E'};
+        char[] CONJ_TA_RA = {'\u0AA4', '\u0ACD', '\u0AB0'};
+        char[] CONJ_KA_SSA = {'\u0A95', '\u0ACD', '\u0AB7'};
+        char[] CONJ_SHA_RA = {'\u0AB6', '\u0ACD', '\u0AB0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
new file mode 100644
index 0000000..910b3ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class GurmukhiInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale GURMUKHI = new Locale("pa", "IN"); // pa = Punjabi
+
+    public GurmukhiInputMethodDescriptor() {
+    super(GURMUKHI, "Gurmukhi"); 
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u0A0D',   // '!'
+        /* 22 */ '\u0A20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFFFF',   // '&'
+        /* 27 */ '\u0A1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFFFF',   // '*'
+        /* 2B */ '\u0A0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0A2F',   // '/'
+        /* 30 */ '\u0A66',   // '0'
+        /* 31 */ '\u0A67',   // '1'
+        /* 32 */ '\u0A68',   // '2'
+        /* 33 */ '\u0A69',   // '3'
+        /* 34 */ '\u0A6A',   // '4'
+        /* 35 */ '\u0A6B',   // '5'
+        /* 36 */ '\u0A6C',   // '6'
+        /* 37 */ '\u0A6D',   // '7'
+        /* 38 */ '\u0A6E',   // '8'
+        /* 39 */ '\u0A6F',   // '9'
+        /* 3A */ '\u0A1B',   // ':'
+        /* 3B */ '\u0A1A',   // ';'
+        /* 3C */ '\u0A37',   // '<'
+        /* 3D */ '\u0A43',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\u0A5F',   // '?'
+        /* 40 */ '\u0A45',   // '@'
+        /* 41 */ '\u0A13',   // 'A'
+        /* 42 */ '\u0A34',   // 'B'
+        /* 43 */ '\u0A23',   // 'C'
+        /* 44 */ '\u0A05',   // 'D'
+        /* 45 */ '\u0A06',   // 'E'
+        /* 46 */ '\u0A07',   // 'F'
+        /* 47 */ '\u0A09',   // 'G'
+        /* 48 */ '\u0A2B',   // 'H'
+        /* 49 */ '\u0A18',   // 'I'
+        /* 4A */ '\u0A31',   // 'J'
+        /* 4B */ '\u0A16',   // 'K'
+        /* 4C */ '\u0A25',   // 'L'
+        /* 4D */ '\u0A36',   // 'M'
+        /* 4E */ '\u0A33',   // 'N'
+        /* 4F */ '\u0A27',   // 'O'
+        /* 50 */ '\u0A1D',   // 'P'
+        /* 51 */ '\u0A14',   // 'Q'
+        /* 52 */ '\u0A08',   // 'R'
+        /* 53 */ '\u0A0F',   // 'S'
+        /* 54 */ '\u0A0A',   // 'T'
+        /* 55 */ '\u0A19',   // 'U'
+        /* 56 */ '\u0A29',   // 'V'
+        /* 57 */ '\u0A10',   // 'W'
+        /* 58 */ '\u0A01',   // 'X'
+        /* 59 */ '\u0A2D',   // 'Y'
+        /* 5A */ '\u0A0E',   // 'Z'
+        /* 5B */ '\u0A21',   // '['
+        /* 5C */ '\u0A49',   // '\'
+        /* 5D */ '\u0A3C',   // ']'
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0A03',   // '_'
+        /* 60 */ '\u0A4A',   // '`'
+        /* 61 */ '\u0A4B',   // 'a'
+        /* 62 */ '\u0A35',   // 'b'
+        /* 63 */ '\u0A2E',   // 'c'
+        /* 64 */ '\u0A4D',   // 'd'
+        /* 65 */ '\u0A3E',   // 'e'
+        /* 66 */ '\u0A3F',   // 'f'
+        /* 67 */ '\u0A41',   // 'g'
+        /* 68 */ '\u0A2A',   // 'h'
+        /* 69 */ '\u0A17',   // 'i'
+        /* 6A */ '\u0A30',   // 'j'
+        /* 6B */ '\u0A15',   // 'k'
+        /* 6C */ '\u0A24',   // 'l'
+        /* 6D */ '\u0A38',   // 'm'
+        /* 6E */ '\u0A32',   // 'n'
+        /* 6F */ '\u0A26',   // 'o'
+        /* 70 */ '\u0A1C',   // 'p'
+        /* 71 */ '\u0A4C',   // 'q'
+        /* 72 */ '\u0A40',   // 'r'
+        /* 73 */ '\u0A47',   // 's'
+        /* 74 */ '\u0A42',   // 't'
+        /* 75 */ '\u0A39',   // 'u'
+        /* 76 */ '\u0A28',   // 'v'
+        /* 77 */ '\u0A48',   // 'w'
+        /* 78 */ '\u0A70',   // 'x' (Gurmukhi TIPPI rather than BINDI)
+        /* 79 */ '\u0A2C',   // 'y'
+        /* 7A */ '\u0A46',   // 'z'
+        /* 7B */ '\u0A22',   // '{'
+        /* 7C */ '\u0A11',   // '|'
+        /* 7D */ '\u0A1E',   // '}'
+        /* 7E */ '\u0A12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0A4D', '\u0A30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_KHA            = '\u0A16';
+        char LETTER_GA             = '\u0A17';
+        char LETTER_JA             = '\u0A1C';
+        char LETTER_DDA            = '\u0A21';
+        char LETTER_PHA            = '\u0A2B';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        // NOTE: the inscript keyboard doc. lists a KA + NUKTA and a DDHA + NUKTA
+        // neither of which seem to have Unicode code points...
+        char LETTER_KHHA           = '\u0A59';
+        char LETTER_GHHA           = '\u0A5A';
+        char LETTER_ZA             = '\u0A5B';
+        char LETTER_RRA            = '\u0A5C';
+        char LETTER_FA             = '\u0A5E';
+
+        joinWithNukta = new char[] {
+        LETTER_KHA,
+        LETTER_GA,
+        LETTER_JA,
+        LETTER_DDA,
+        LETTER_PHA
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_KHHA,
+        LETTER_GHHA,
+        LETTER_ZA,
+        LETTER_RRA,
+        LETTER_FA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
new file mode 100644
index 0000000..4c380b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.Image;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodDescriptor;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public abstract class IndicIMDescriptor implements InputMethodDescriptor {
+    private final Locale locale;
+    private final String name;
+
+    protected IndicIMDescriptor(Locale locale, String name) {
+    this.locale = locale;
+    this.name = name;
+    }
+
+    protected abstract IndicInputMethodImpl getImpl();
+
+    public Locale[] getAvailableLocales() {
+        return new Locale[] { locale };
+    }
+
+    public boolean hasDynamicLocaleList() {
+        return false;
+    }
+
+    public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
+    try {
+        ResourceBundle rb = ResourceBundle.getBundle("com.ibm.icu.dev.tool.ime.indic.DisplayNames", 
+                             displayLanguage);
+        return rb.getString("DisplayName." + name);
+    }
+    catch (Throwable t) {
+        return name;
+    }
+    }
+
+    public Image getInputMethodIcon(Locale inputLocale) {
+        return null;
+    }
+
+    public InputMethod createInputMethod() throws Exception {
+        return new IndicInputMethod(locale, getImpl());
+    }
+
+    public String toString() {
+    return name;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
new file mode 100644
index 0000000..333aa21
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
@@ -0,0 +1,92 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.AWTEvent;
+import java.awt.Rectangle;
+import java.awt.event.KeyEvent;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodContext;
+import java.lang.Character.Subset;
+import java.util.Locale;
+
+/**
+ * This stub delegates to the simpler IndicInputMethodImpl.
+ */
+class IndicInputMethod implements InputMethod {
+    private IndicInputMethodImpl impl;
+    private Locale locale;
+    
+    IndicInputMethod(Locale theLocale, IndicInputMethodImpl theImplementation) {
+        locale = theLocale;
+        impl = theImplementation;
+    }
+    
+    public void setInputMethodContext(InputMethodContext context) {
+        impl.setInputMethodContext(context);
+    }
+
+    public boolean setLocale(Locale locale) {
+        return locale.getLanguage().equals(this.locale.getLanguage());
+    }
+
+    public Locale getLocale() {
+        return locale;
+    }
+    
+    public void setCharacterSubsets(Subset[] subsets) {
+    }
+
+    public void setCompositionEnabled(boolean enable) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isCompositionEnabled() {
+        return true;
+    }
+
+    public void reconvert() {
+        throw new UnsupportedOperationException("This input method does not reconvert.");
+    }
+
+    public void dispatchEvent(AWTEvent event) {
+        if (event instanceof KeyEvent) {
+            KeyEvent keyEvent = (KeyEvent) event;
+            if (event.getID() == KeyEvent.KEY_TYPED) {
+                impl.handleKeyTyped(keyEvent);
+            }
+
+        }
+    }
+
+    public void notifyClientWindowChange(Rectangle bounds) {
+    }
+
+    public void activate() {
+    }
+
+    public void deactivate(boolean isTemporary) {
+    }
+
+    public void hideWindows() {
+    }
+  
+    public void removeNotify() {
+    }
+
+    public void endComposition() {
+        impl.endComposition();
+    }
+
+    public void dispose() {
+    }
+
+    public Object getControlObject() {
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
new file mode 100644
index 0000000..1ceb6d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
@@ -0,0 +1,439 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.im.spi.InputMethodContext;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.InputMethodEvent;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextHitInfo;
+import java.text.AttributedCharacterIterator;
+import java.util.Hashtable;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+class IndicInputMethodImpl {
+    
+    protected char[] KBD_MAP;
+    
+    private static final char SUBSTITUTION_BASE = '\uff00';
+
+    // Indexed by map value - SUBSTITUTION_BASE
+    protected char[][] SUBSTITUTION_TABLE;
+
+    // Invalid character.
+    private static final char INVALID_CHAR              = '\uffff';
+
+    // Unmapped versions of some interesting characters.
+    private static final char KEY_SIGN_VIRAMA           = '\u0064'; // or just 'd'??
+    private static final char KEY_SIGN_NUKTA            = '\u005d';  // or just ']'??
+
+    // Two succeeding viramas are replaced by one virama and one ZWNJ.
+    // Viram followed by Nukta is replaced by one VIRAMA and one ZWJ
+    private static final char ZWJ                       = '\u200d';
+    private static final char ZWNJ                      = '\u200c';
+    
+    // Backspace
+    private static final char BACKSPACE                 = '\u0008';
+
+    // Sorted list of characters which can be followed by Nukta
+    protected char[] JOIN_WITH_NUKTA;
+    
+    // Nukta form of the above characters
+    protected char[] NUKTA_FORM;
+        
+    //private int log2;
+    private int power;
+    private int extra;
+
+    // cached TextHitInfo. Only one type of TextHitInfo is required.
+    private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
+
+    /**
+     * Returns the index of the given character in the JOIN_WITH_NUKTA array.
+     * If character is not found, -1 is returned.
+     */
+    private int nuktaIndex(char ch) {
+        if (JOIN_WITH_NUKTA == null) {
+            return -1;
+        }
+        
+        int probe = power;
+        int index = 0;
+
+        if (JOIN_WITH_NUKTA[extra] <= ch) {
+            index = extra;
+        }
+         
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (JOIN_WITH_NUKTA[index + probe] <= ch) {
+                index += probe;
+            }
+        }
+
+        if (JOIN_WITH_NUKTA[index] != ch) {
+            index = -1;
+        }
+
+        return index;
+    }
+    
+    /**
+     * Returns the equivalent character for hindi locale.
+     * @param originalChar The original character.
+     */
+    private char getMappedChar(char originalChar) {
+        if (originalChar <= KBD_MAP.length) {
+            return KBD_MAP[originalChar];
+        }
+        
+        return originalChar;
+    }
+    
+    // Array used to hold the text to be sent.
+    // If the last character was not committed it is stored in text[0].
+    // The variable totalChars give an indication of whether the last
+    // character was committed or not. If at any time ( but not within a
+    // a call to dispatchEvent ) totalChars is not equal to 0 ( it can
+    // only be 1 otherwise ) the last character was not committed.
+    private char [] text = new char[4];
+
+    // this is always 0 before and after call to dispatchEvent. This character assumes
+    // significance only within a call to dispatchEvent.
+    private int committedChars = 0;// number of committed characters
+
+    // the total valid characters in variable text currently.
+    private int totalChars = 0;//number of total characters ( committed + composed )
+
+    private boolean lastCharWasVirama = false;
+    
+    private InputMethodContext context;
+
+    //
+    // Finds the high bit by binary searching
+    // through the bits in n.
+    //
+    private static byte highBit(int n) {
+        if (n <= 0) {
+            return -32;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+
+    IndicInputMethodImpl(char[] keyboardMap, char[] joinWithNukta, char[] nuktaForm, 
+                         char[][] substitutionTable) {
+        KBD_MAP = keyboardMap;
+        JOIN_WITH_NUKTA = joinWithNukta;
+        NUKTA_FORM = nuktaForm;
+        SUBSTITUTION_TABLE = substitutionTable;
+        
+        if (JOIN_WITH_NUKTA != null) {
+            int log2 = highBit(JOIN_WITH_NUKTA.length);
+            
+            power = 1 << log2;
+            extra = JOIN_WITH_NUKTA.length - power;
+        } else {
+            power = extra = 0;
+        }
+        
+    }
+    
+    void setInputMethodContext(InputMethodContext context) {
+        this.context = context;
+    }
+    
+    void handleKeyTyped(KeyEvent kevent) {
+        char keyChar = kevent.getKeyChar();
+        char currentChar = getMappedChar(keyChar);
+        
+        // The Explicit and Soft Halanta case.
+        if ( lastCharWasVirama ) {
+            switch (keyChar) {
+            case KEY_SIGN_NUKTA:
+                currentChar = ZWJ;
+                break;
+            case KEY_SIGN_VIRAMA:
+                currentChar = ZWNJ;
+                break;
+            default:
+            }//endSwitch
+        }//endif
+
+        if (currentChar == INVALID_CHAR) {
+            kevent.consume();
+            return;
+        }
+
+        if (currentChar == BACKSPACE) {
+            lastCharWasVirama = false;
+            
+            if (totalChars > 0) {
+                totalChars = committedChars = 0;
+            } else {
+                return;
+            }                            
+        }
+        else if (keyChar == KEY_SIGN_NUKTA) {
+            int nuktaIndex = nuktaIndex(text[0]);
+            
+            if (nuktaIndex != -1) {
+                text[0] = NUKTA_FORM[nuktaIndex];
+            } else {
+                // the last character was committed, commit just Nukta.
+                // Note : the lastChar must have been committed if it is not one of
+                // the characters which combine with nukta.
+                // the state must be totalChars = committedChars = 0;
+                text[totalChars++] = currentChar;
+            }
+            
+            committedChars += 1;
+        }
+        else {
+            int nuktaIndex = nuktaIndex(currentChar);
+            
+            if (nuktaIndex != -1) {
+                // Commit everything but currentChar
+                text[totalChars++] = currentChar;
+                committedChars = totalChars-1;
+            } else {
+                if (currentChar >= SUBSTITUTION_BASE) {
+                    char[] sub = SUBSTITUTION_TABLE[currentChar - SUBSTITUTION_BASE];
+                    
+                    System.arraycopy(sub, 0, text, totalChars, sub.length);
+                    totalChars += sub.length;
+                } else {
+                    text[totalChars++] = currentChar;
+                }
+                
+                committedChars = totalChars;
+            }
+        }
+        
+        ACIText aText = new ACIText( text, 0, totalChars, committedChars );
+        int composedCharLength = totalChars - committedChars;
+        TextHitInfo caret=null,visiblePosition=null;
+        switch( composedCharLength ) {
+            case 0:
+                break;
+            case 1:
+                visiblePosition = caret = ZERO_TRAILING_HIT_INFO;
+                break;
+            default:
+                // The code should not reach here. There is no case where there can be
+                // more than one character pending.
+        }
+                        
+        context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                                         aText,
+                                         committedChars,
+                                         caret,
+                                         visiblePosition);
+                                        
+        if (totalChars == 0) {
+            text[0] = INVALID_CHAR;
+        } else {
+            text[0] = text[totalChars - 1];// make text[0] hold the last character
+        }
+        
+        lastCharWasVirama =  keyChar == KEY_SIGN_VIRAMA && !lastCharWasVirama;
+                    
+        totalChars -= committedChars;
+        committedChars = 0;
+        // state now text[0] = last character
+        // totalChars = ( last character committed )? 0 : 1;
+        // committedChars = 0;
+
+        kevent.consume();// prevent client from getting this event.
+    }
+
+    void endComposition() {
+        if( totalChars != 0 ) {// if some character is not committed.
+            ACIText aText = new ACIText( text, 0, totalChars, totalChars );
+            context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                                aText, totalChars, null, null );
+            totalChars = committedChars = 0;
+            text[0] = INVALID_CHAR;
+            lastCharWasVirama = false;
+        }
+    }
+    
+    // custom AttributedCharacterIterator -- much lightweight since currently there is no
+    // attribute defined on the text being generated by the input method.
+    private class ACIText implements AttributedCharacterIterator {
+        private char [] text = null;
+        private int committed = 0;
+        private int index = 0;
+
+        ACIText( char [] chArray, int offset, int length, int committed ) {
+            this.text = new char[length];
+            this.committed = committed;
+            System.arraycopy( chArray, offset, text, 0, length );
+        }
+
+        // CharacterIterator methods.
+        public char first() {
+            return _setIndex( 0 );
+        }
+
+        public char last() {
+            if( text.length == 0 ) {
+                return _setIndex( text.length );
+            }
+            return _setIndex( text.length - 1 );
+        }
+
+        public char current() {
+            if( index == text.length )
+                return DONE;
+            return text[index];
+        }
+
+        public char next() {
+            if( index == text.length ) {
+                return DONE;
+            }
+            return _setIndex( index + 1 );
+        }
+
+        public char previous() {
+            if( index == 0 )
+                return DONE;
+            return _setIndex( index - 1 );
+        }
+
+        public char setIndex(int position) {
+            if( position < 0 || position > text.length ) {
+                throw new IllegalArgumentException();
+            }
+            return _setIndex( position );
+        }
+
+        public int getBeginIndex() {
+            return 0;
+        }
+
+        public int getEndIndex() {
+            return text.length;
+        }
+
+        public int getIndex() {
+            return index;
+        }
+
+        public Object clone() {
+            try {
+                ACIText clone = (ACIText) super.clone();
+                return clone;
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException();
+            }
+        }
+
+        // AttributedCharacterIterator methods.
+        public int getRunStart() {
+            return index >= committed ? committed : 0;
+        }
+
+        public int getRunStart(AttributedCharacterIterator.Attribute attribute) {
+            return (index >= committed &&
+                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : 0;
+        }
+
+        public int getRunStart(Set attributes) {
+            return (index >= committed &&
+                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : 0;
+        }
+
+        public int getRunLimit() {
+            return index < committed ? committed : text.length;
+        }
+
+        public int getRunLimit(AttributedCharacterIterator.Attribute attribute) {
+            return (index < committed && 
+                    attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : text.length;
+        }
+
+        public int getRunLimit(Set attributes) {
+            return (index < committed &&
+                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : text.length;
+        }
+
+        public Map getAttributes() {
+            Hashtable result = new Hashtable();
+            if (index >= committed && committed < text.length) {
+                result.put(TextAttribute.INPUT_METHOD_UNDERLINE, 
+                           TextAttribute.UNDERLINE_LOW_ONE_PIXEL);
+            }
+            return result;
+        }
+
+        public Object getAttribute(AttributedCharacterIterator.Attribute attribute) {
+            if (index >= committed && 
+                committed < text.length &&
+                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) {
+
+                return TextAttribute.UNDERLINE_LOW_ONE_PIXEL;
+            }
+            return null;
+        }
+
+        public Set getAllAttributeKeys() {
+            HashSet result = new HashSet();
+            if (committed < text.length) {
+                result.add(TextAttribute.INPUT_METHOD_UNDERLINE);
+            }
+            return result;
+        }
+
+        // private methods
+
+        /**
+         * This is always called with valid i ( 0 < i <= text.length )
+         */
+        private char _setIndex( int i ) {
+            index = i;
+            if( i == text.length ) {
+                return DONE;
+            }
+            return text[i];
+        }
+
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
new file mode 100644
index 0000000..8d81126
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class KannadaInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale KANNADA = new Locale("kn", "IN");
+
+    public KannadaInputMethodDescriptor() {
+    super(KANNADA, "Kannada");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0CA0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFF01',   // '%'
+        /* 26 */ '\uFF03',   // '&'
+        /* 27 */ '\u0C9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF04',   // '*'
+        /* 2B */ '\u0C8B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0CAF',   // '/'
+        /* 30 */ '\u0CE6',   // '0'
+        /* 31 */ '\u0CE7',   // '1'
+        /* 32 */ '\u0CE8',   // '2'
+        /* 33 */ '\u0CE9',   // '3'
+        /* 34 */ '\u0CEA',   // '4'
+        /* 35 */ '\u0CEB',   // '5'
+        /* 36 */ '\u0CEC',   // '6'
+        /* 37 */ '\u0CED',   // '7'
+        /* 38 */ '\u0CEE',   // '8'
+        /* 39 */ '\u0CEF',   // '9'
+        /* 3A */ '\u0C9B',   // ':'
+        /* 3B */ '\u0C9A',   // ';'
+        /* 3C */ '\u0CB7',   // '<'
+        /* 3D */ '\u0CC3',   // '='
+        /* 3E */ '\uFFFF',   // '>'
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0C93',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0CA3',   // 'C'
+        /* 44 */ '\u0C85',   // 'D'
+        /* 45 */ '\u0C86',   // 'E'
+        /* 46 */ '\u0C87',   // 'F'
+        /* 47 */ '\u0C89',   // 'G'
+        /* 48 */ '\u0CAB',   // 'H'
+        /* 49 */ '\u0C98',   // 'I'
+        /* 4A */ '\u0CB1',   // 'J'
+        /* 4B */ '\u0C96',   // 'K'
+        /* 4C */ '\u0CA5',   // 'L'
+        /* 4D */ '\u0CB6',   // 'M'
+        /* 4E */ '\u0CB3',   // 'N'
+        /* 4F */ '\u0CA7',   // 'O'
+        /* 50 */ '\u0C9D',   // 'P'
+        /* 51 */ '\u0C94',   // 'Q'
+        /* 52 */ '\u0C88',   // 'R'
+        /* 53 */ '\u0C8F',   // 'S'
+        /* 54 */ '\u0C8A',   // 'T'
+        /* 55 */ '\u0C99',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0C90',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\u0CAD',   // 'Y'
+        /* 5A */ '\u0C8E',   // 'Z'
+        /* 5B */ '\u0CA1',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'  (danda - not shown on INSCRIPT chart)
+        /* 5E */ '\uFF02',   // '^'
+        /* 5F */ '\u0C83',   // '_'
+        /* 60 */ '\u0CCA',   // '`'
+        /* 61 */ '\u0CCB',   // 'a'
+        /* 62 */ '\u0CB5',   // 'b'
+        /* 63 */ '\u0CAE',   // 'c'
+        /* 64 */ '\u0CCD',   // 'd'
+        /* 65 */ '\u0CBE',   // 'e'
+        /* 66 */ '\u0CBF',   // 'f'
+        /* 67 */ '\u0CC1',   // 'g'
+        /* 68 */ '\u0CAA',   // 'h'
+        /* 69 */ '\u0C97',   // 'i'
+        /* 6A */ '\u0CB0',   // 'j'
+        /* 6B */ '\u0C95',   // 'k'
+        /* 6C */ '\u0CA4',   // 'l'
+        /* 6D */ '\u0CB8',   // 'm'
+        /* 6E */ '\u0CB2',   // 'n'
+        /* 6F */ '\u0CA6',   // 'o'
+        /* 70 */ '\u0C9C',   // 'p'
+        /* 71 */ '\u0CCC',   // 'q'
+        /* 72 */ '\u0CC0',   // 'r'
+        /* 73 */ '\u0CC7',   // 's'
+        /* 74 */ '\u0CC2',   // 't'
+        /* 75 */ '\u0CB9',   // 'u'
+        /* 76 */ '\u0CA8',   // 'v'
+        /* 77 */ '\u0CC8',   // 'w'
+        /* 78 */ '\u0C82',   // 'x'
+        /* 79 */ '\u0CAC',   // 'y'
+        /* 7A */ '\u0CC6',   // 'z'
+        /* 7B */ '\u0CA2',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0C9E',   // '}'
+        /* 7E */ '\u0C92',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0CCD', '\u0CB0'};
+        char[] CONJ_JA_NYA = {'\u0C9C', '\u0CCD', '\u0C9E'};
+        char[] CONJ_TA_RA = {'\u0CA4', '\u0CCD', '\u0CB0'};
+        char[] CONJ_KA_SSA = {'\u0C95', '\u0CCD', '\u0CB7'};
+        char[] CONJ_SHA_RA = {'\u0CB6', '\u0CCD', '\u0CB0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
new file mode 100644
index 0000000..9d9342f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
@@ -0,0 +1,166 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class MalayalamInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale MALAYALAM = new Locale("ml", "IN");
+
+    public MalayalamInputMethodDescriptor() {
+    super(MALAYALAM, "Malayalam");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0D20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFFFF',   // '&'
+        /* 27 */ '\u0D1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF01',   // '*'
+        /* 2B */ '\u0D0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0D2F',   // '/'
+        /* 30 */ '\u0D66',   // '0'
+        /* 31 */ '\u0D67',   // '1'
+        /* 32 */ '\u0D68',   // '2'
+        /* 33 */ '\u0D69',   // '3'
+        /* 34 */ '\u0D6A',   // '4'
+        /* 35 */ '\u0D6B',   // '5'
+        /* 36 */ '\u0D6C',   // '6'
+        /* 37 */ '\u0D6D',   // '7'
+        /* 38 */ '\u0D6E',   // '8'
+        /* 39 */ '\u0D6F',   // '9'
+        /* 3A */ '\u0D1B',   // ':'
+        /* 3B */ '\u0D1A',   // ';'
+        /* 3C */ '\u0D37',   // '<'
+        /* 3D */ '\u0D43',   // '='
+        /* 3E */ '\uFFFF',   // '>'
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0D13',   // 'A'
+        /* 42 */ '\u0D34',   // 'B'
+        /* 43 */ '\u0D23',   // 'C'
+        /* 44 */ '\u0D05',   // 'D'
+        /* 45 */ '\u0D06',   // 'E'
+        /* 46 */ '\u0D07',   // 'F'
+        /* 47 */ '\u0D09',   // 'G'
+        /* 48 */ '\u0D2B',   // 'H'
+        /* 49 */ '\u0D18',   // 'I'
+        /* 4A */ '\u0D31',   // 'J'
+        /* 4B */ '\u0D16',   // 'K'
+        /* 4C */ '\u0D25',   // 'L'
+        /* 4D */ '\u0D36',   // 'M'
+        /* 4E */ '\u0D33',   // 'N'
+        /* 4F */ '\u0D27',   // 'O'
+        /* 50 */ '\u0D1D',   // 'P'
+        /* 51 */ '\u0D14',   // 'Q'
+        /* 52 */ '\u0D08',   // 'R'
+        /* 53 */ '\u0D0F',   // 'S'
+        /* 54 */ '\u0D0A',   // 'T'
+        /* 55 */ '\u0D19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0D10',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\u0D2D',   // 'Y'
+        /* 5A */ '\u0D0E',   // 'Z'
+        /* 5B */ '\u0D21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']' (nukta - no Unicode code value)
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0D03',   // '_'
+        /* 60 */ '\u0D4A',   // '`'
+        /* 61 */ '\u0D4B',   // 'a'
+        /* 62 */ '\u0D35',   // 'b'
+        /* 63 */ '\u0D2E',   // 'c'
+        /* 64 */ '\u0D4D',   // 'd'
+        /* 65 */ '\u0D3E',   // 'e'
+        /* 66 */ '\u0D3F',   // 'f'
+        /* 67 */ '\u0D41',   // 'g'
+        /* 68 */ '\u0D2A',   // 'h'
+        /* 69 */ '\u0D17',   // 'i'
+        /* 6A */ '\u0D30',   // 'j'
+        /* 6B */ '\u0D15',   // 'k'
+        /* 6C */ '\u0D24',   // 'l'
+        /* 6D */ '\u0D38',   // 'm'
+        /* 6E */ '\u0D32',   // 'n'
+        /* 6F */ '\u0D26',   // 'o'
+        /* 70 */ '\u0D1C',   // 'p'
+        /* 71 */ '\u0D4C',   // 'q'
+        /* 72 */ '\u0D40',   // 'r'
+        /* 73 */ '\u0D47',   // 's'
+        /* 74 */ '\u0D42',   // 't'
+        /* 75 */ '\u0D39',   // 'u'
+        /* 76 */ '\u0D28',   // 'v'
+        /* 77 */ '\u0D48',   // 'w'
+        /* 78 */ '\u0D02',   // 'x'
+        /* 79 */ '\u0D2C',   // 'y'
+        /* 7A */ '\u0D46',   // 'z'
+        /* 7B */ '\u0D22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0D1E',   // '}'
+        /* 7E */ '\u0D12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0D4D', '\u0D30'};
+        char[] CONJ_KA_SSA = {'\u0D15', '\u0D4D', '\u0D37'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_KA_SSA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
new file mode 100644
index 0000000..3fbaa1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
@@ -0,0 +1,213 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class OriyaInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale ORIYA = new Locale("or", "IN");
+
+    public OriyaInputMethodDescriptor() {
+    super(ORIYA, "Oriya");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0B20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u0B1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u0B0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0B5F',   // '/'
+        /* 30 */ '\u0B66',   // '0'
+        /* 31 */ '\u0B67',   // '1'
+        /* 32 */ '\u0B68',   // '2'
+        /* 33 */ '\u0B69',   // '3'
+        /* 34 */ '\u0B6A',   // '4'
+        /* 35 */ '\u0B6B',   // '5'
+        /* 36 */ '\u0B6C',   // '6'
+        /* 37 */ '\u0B6D',   // '7'
+        /* 38 */ '\u0B6E',   // '8'
+        /* 39 */ '\u0B6F',   // '9'
+        /* 3A */ '\u0B1B',   // ':'
+        /* 3B */ '\u0B1A',   // ';'
+        /* 3C */ '\u0B37',   // '<'
+        /* 3D */ '\u0B43',   // '='
+        /* 3E */ '\u0964',   // '>' (Devanagari danda)
+        /* 3F */ '\u0B2F',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0B13',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0B23',   // 'C'
+        /* 44 */ '\u0B05',   // 'D'
+        /* 45 */ '\u0B06',   // 'E'
+        /* 46 */ '\u0B07',   // 'F'
+        /* 47 */ '\u0B09',   // 'G'
+        /* 48 */ '\u0B2B',   // 'H'
+        /* 49 */ '\u0B18',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0B16',   // 'K'
+        /* 4C */ '\u0B25',   // 'L'
+        /* 4D */ '\u0B36',   // 'M'
+        /* 4E */ '\u0B33',   // 'N'
+        /* 4F */ '\u0B27',   // 'O'
+        /* 50 */ '\u0B1D',   // 'P'
+        /* 51 */ '\u0B14',   // 'Q'
+        /* 52 */ '\u0B08',   // 'R'
+        /* 53 */ '\u0B0F',   // 'S'
+        /* 54 */ '\u0B0A',   // 'T'
+        /* 55 */ '\u0B19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0B10',   // 'W'
+        /* 58 */ '\u0B01',   // 'X'
+        /* 59 */ '\u0B2D',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u0B21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\u0B3C',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0B03',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u0B4B',   // 'a'
+        /* 62 */ '\u0B2C',   // 'b' (va, but no Unicode code point, used ba instead)
+        /* 63 */ '\u0B2E',   // 'c'
+        /* 64 */ '\u0B4D',   // 'd'
+        /* 65 */ '\u0B3E',   // 'e'
+        /* 66 */ '\u0B3F',   // 'f'
+        /* 67 */ '\u0B41',   // 'g'
+        /* 68 */ '\u0B2A',   // 'h'
+        /* 69 */ '\u0B17',   // 'i'
+        /* 6A */ '\u0B30',   // 'j'
+        /* 6B */ '\u0B15',   // 'k'
+        /* 6C */ '\u0B24',   // 'l'
+        /* 6D */ '\u0B38',   // 'm'
+        /* 6E */ '\u0B32',   // 'n'
+        /* 6F */ '\u0B26',   // 'o'
+        /* 70 */ '\u0B1C',   // 'p'
+        /* 71 */ '\u0B4C',   // 'q'
+        /* 72 */ '\u0B40',   // 'r'
+        /* 73 */ '\u0B47',   // 's'
+        /* 74 */ '\u0B42',   // 't'
+        /* 75 */ '\u0B39',   // 'u'
+        /* 76 */ '\u0B28',   // 'v'
+        /* 77 */ '\u0B48',   // 'w'
+        /* 78 */ '\u0B02',   // 'x'
+        /* 79 */ '\u0B2C',   // 'y'
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u0B22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0B1E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0B4D', '\u0B30'};
+        char[] RA_SUP = {'\u0B30', '\u0B4D'};
+        char[] CONJ_JA_NYA = {'\u0B1C', '\u0B4D', '\u0B1E'};
+        char[] CONJ_TA_RA = {'\u0B24', '\u0B4D', '\u0B30'};
+        char[] CONJ_KA_SSA = {'\u0B15', '\u0B4D', '\u0B37'};
+        char[] CONJ_SHA_RA = {'\u0B36', '\u0B4D', '\u0B30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_I              = '\u0B07';
+        char LETTER_II             = '\u0B08';
+        char LETTER_VOCALIC_R      = '\u0B0B';
+        char LETTER_DDA            = '\u0B21';
+        char LETTER_DDHA           = '\u0B22';
+        char VOWEL_SIGN_I          = '\u0B3F';
+        char VOWEL_SIGN_II         = '\u0B40';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char LETTER_VOCALIC_L      = '\u0B0C';
+        char LETTER_VOCALIC_LL     = '\u0B61';
+        char LETTER_VOCALIC_RR     = '\u0B60';
+        char LETTER_RRA            = '\u0B5C';
+        char LETTER_RHA            = '\u0B5D';
+        char VOWEL_SIGN_VOCALIC_L  = '\u0B62';
+        char VOWEL_SIGN_VOCALIC_LL = '\u0B63';
+
+        joinWithNukta = new char[] {
+        LETTER_VOCALIC_R ,
+        LETTER_I,
+        LETTER_II,
+        LETTER_DDA,
+        LETTER_DDHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_VOCALIC_RR,
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_RRA,
+        LETTER_RHA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL
+        };
+    }
+        
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
new file mode 100644
index 0000000..11fa124
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class TamilInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale TAMIL = new Locale("ta", "IN");
+
+    public TamilInputMethodDescriptor() {
+    super(TAMIL, "Tamil");
+    }
+    
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\uFFFF',   // '"'
+        /* 23 */ '\uFFFF',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFF00',   // '&'
+        /* 27 */ '\u0B9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF01',   // '*'
+        /* 2B */ '\uFFFF',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0BAF',   // '/'
+        /* 30 */ '\u0BE6',   // '0'
+        /* 31 */ '\u0BE7',   // '1'
+        /* 32 */ '\u0BE8',   // '2'
+        /* 33 */ '\u0BE9',   // '3'
+        /* 34 */ '\u0BEA',   // '4'
+        /* 35 */ '\u0BEB',   // '5'
+        /* 36 */ '\u0BEC',   // '6'
+        /* 37 */ '\u0BED',   // '7'
+        /* 38 */ '\u0BEE',   // '8'
+        /* 39 */ '\u0BEF',   // '9'
+        /* 3A */ '\uFFFF',   // ':'
+        /* 3B */ '\u0B9A',   // ';'
+        /* 3C */ '\u0BB7',   // '<'
+        /* 3D */ '\uFFFF',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0B93',   // 'A'
+        /* 42 */ '\u0BB4',   // 'B'
+        /* 43 */ '\u0BA3',   // 'C'
+        /* 44 */ '\u0B85',   // 'D'
+        /* 45 */ '\u0B86',   // 'E'
+        /* 46 */ '\u0B87',   // 'F'
+        /* 47 */ '\u0B89',   // 'G'
+        /* 48 */ '\uFFFF',   // 'H'
+        /* 49 */ '\uFFFF',   // 'I'
+        /* 4A */ '\u0BB1',   // 'J'
+        /* 4B */ '\uFFFF',   // 'K'
+        /* 4C */ '\uFFFF',   // 'L'
+        /* 4D */ '\uFFFF',   // 'M'
+        /* 4E */ '\u0BB3',   // 'N'
+        /* 4F */ '\uFFFF',   // 'O'
+        /* 50 */ '\uFFFF',   // 'P'
+        /* 51 */ '\u0B94',   // 'Q'
+        /* 52 */ '\u0B88',   // 'R'
+        /* 53 */ '\u0B8F',   // 'S'
+        /* 54 */ '\u0B8A',   // 'T'
+        /* 55 */ '\u0B99',   // 'U'
+        /* 56 */ '\u0BA9',   // 'V'
+        /* 57 */ '\u0B90',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\uFFFF',   // 'Y'
+        /* 5A */ '\u0B8E',   // 'Z'
+        /* 5B */ '\uFFFF',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0B83',   // '_'
+        /* 60 */ '\u0BCA',   // '`'
+        /* 61 */ '\u0BCB',   // 'a'
+        /* 62 */ '\u0BB5',   // 'b'
+        /* 63 */ '\u0BAE',   // 'c'
+        /* 64 */ '\u0BCD',   // 'd'
+        /* 65 */ '\u0BBE',   // 'e'
+        /* 66 */ '\u0BBF',   // 'f'
+        /* 67 */ '\u0BC1',   // 'g'
+        /* 68 */ '\u0BAA',   // 'h'
+        /* 69 */ '\uFFFF',   // 'i'
+        /* 6A */ '\u0BB0',   // 'j'
+        /* 6B */ '\u0B95',   // 'k'
+        /* 6C */ '\u0BA4',   // 'l'
+        /* 6D */ '\u0BB8',   // 'm'
+        /* 6E */ '\u0BB2',   // 'n'
+        /* 6F */ '\uFFFF',   // 'o'
+        /* 70 */ '\u0B9C',   // 'p'
+        /* 71 */ '\u0BCC',   // 'q'
+        /* 72 */ '\u0BC0',   // 'r'
+        /* 73 */ '\u0BC7',   // 's'
+        /* 74 */ '\u0BC2',   // 't'
+        /* 75 */ '\u0BB9',   // 'u'
+        /* 76 */ '\u0BA8',   // 'v'
+        /* 77 */ '\u0BC8',   // 'w'
+        /* 78 */ '\u0B82',   // 'x'
+        /* 79 */ '\uFFFF',   // 'y'
+        /* 7A */ '\u0BC6',   // 'z'
+        /* 7B */ '\uFFFF',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0B9E',   // '}'
+        /* 7E */ '\u0B92',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] CONJ_KA_SSA = {'\u0B95', '\u0BCD', '\u0BB7'};
+        char[] CONJ_SSA_RA = {'\u0BB7', '\u0BCD', '\u0BB0'};
+
+        substitutionTable = new char[][] {
+        CONJ_KA_SSA, CONJ_SSA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
new file mode 100644
index 0000000..e1f26be
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
@@ -0,0 +1,169 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class TeluguInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale TELUGU = new Locale("te", "IN");
+
+    public TeluguInputMethodDescriptor() {
+    super(TELUGU, "Telugu");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0C20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFF01',   // '%'
+        /* 26 */ '\uFF03',   // '&'
+        /* 27 */ '\u0C1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF04',   // '*'
+        /* 2B */ '\u0C0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0C2F',   // '/'
+        /* 30 */ '\u0C66',   // '0'
+        /* 31 */ '\u0C67',   // '1'
+        /* 32 */ '\u0C68',   // '2'
+        /* 33 */ '\u0C69',   // '3'
+        /* 34 */ '\u0C6A',   // '4'
+        /* 35 */ '\u0C6B',   // '5'
+        /* 36 */ '\u0C6C',   // '6'
+        /* 37 */ '\u0C6D',   // '7'
+        /* 38 */ '\u0C6E',   // '8'
+        /* 39 */ '\u0C6F',   // '9'
+        /* 3A */ '\u0C1B',   // ':'
+        /* 3B */ '\u0C1A',   // ';'
+        /* 3C */ '\u0C37',   // '<'
+        /* 3D */ '\u0C43',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda - not shown on INSCRIPT chart)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0C13',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0C23',   // 'C'
+        /* 44 */ '\u0C05',   // 'D'
+        /* 45 */ '\u0C06',   // 'E'
+        /* 46 */ '\u0C07',   // 'F'
+        /* 47 */ '\u0C09',   // 'G'
+        /* 48 */ '\u0C2B',   // 'H'
+        /* 49 */ '\u0C18',   // 'I'
+        /* 4A */ '\u0C31',   // 'J'
+        /* 4B */ '\u0C16',   // 'K'
+        /* 4C */ '\u0C25',   // 'L'
+        /* 4D */ '\u0C36',   // 'M'
+        /* 4E */ '\u0C33',   // 'N'
+        /* 4F */ '\u0C27',   // 'O'
+        /* 50 */ '\u0C1D',   // 'P'
+        /* 51 */ '\u0C14',   // 'Q'
+        /* 52 */ '\u0C08',   // 'R'
+        /* 53 */ '\u0C0F',   // 'S'
+        /* 54 */ '\u0C0A',   // 'T'
+        /* 55 */ '\u0C19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0C10',   // 'W'
+        /* 58 */ '\u0C01',   // 'X'
+        /* 59 */ '\u0C2D',   // 'Y'
+        /* 5A */ '\u0C0E',   // 'Z'
+        /* 5B */ '\u0C21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'
+        /* 5E */ '\uFF02',   // '^'
+        /* 5F */ '\u0C03',   // '_'
+        /* 60 */ '\u0C4A',   // '`'
+        /* 61 */ '\u0C4B',   // 'a'
+        /* 62 */ '\u0C35',   // 'b'
+        /* 63 */ '\u0C2E',   // 'c'
+        /* 64 */ '\u0C4D',   // 'd'
+        /* 65 */ '\u0C3E',   // 'e'
+        /* 66 */ '\u0C3F',   // 'f'
+        /* 67 */ '\u0C41',   // 'g'
+        /* 68 */ '\u0C2A',   // 'h'
+        /* 69 */ '\u0C17',   // 'i'
+        /* 6A */ '\u0C30',   // 'j'
+        /* 6B */ '\u0C15',   // 'k'
+        /* 6C */ '\u0C24',   // 'l'
+        /* 6D */ '\u0C38',   // 'm'
+        /* 6E */ '\u0C32',   // 'n'
+        /* 6F */ '\u0C26',   // 'o'
+        /* 70 */ '\u0C1C',   // 'p'
+        /* 71 */ '\u0C4C',   // 'q'
+        /* 72 */ '\u0C40',   // 'r'
+        /* 73 */ '\u0C47',   // 's'
+        /* 74 */ '\u0C42',   // 't'
+        /* 75 */ '\u0C39',   // 'u'
+        /* 76 */ '\u0C28',   // 'v'
+        /* 77 */ '\u0C48',   // 'w'
+        /* 78 */ '\u0C02',   // 'x'
+        /* 79 */ '\u0C2C',   // 'y'
+        /* 7A */ '\u0C46',   // 'z'
+        /* 7B */ '\u0C22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0C1E',   // '}'
+        /* 7E */ '\u0C12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0C4D', '\u0C30'};
+        char[] CONJ_JA_NYA = {'\u0C1C', '\u0C4D', '\u0C1E'};
+        char[] CONJ_TA_RA = {'\u0C24', '\u0C4D', '\u0C30'};
+        char[] CONJ_KA_SSA = {'\u0C15', '\u0C4D', '\u0C37'};
+        char[] CONJ_SHA_RA = {'\u0C36', '\u0C4D', '\u0C30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+    return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub b/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub
new file mode 100644
index 0000000..705ccf0
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/tool/ime/indic
+Specification-Title: ICU Indic IME
+Specification-Version: 1.0
+Specification-Vendor: IBM
+Implementation-Title: ICU Indic IME
+Implementation-Version: 1.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2000-2004, International Business Machines Corporation and others.  All Rights Reserved.
+Extension-Name: com.ibm.icu.dev.tool.ime.indic
+
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor b/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..2ae5b1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
@@ -0,0 +1,9 @@
+com.ibm.icu.dev.tool.ime.indic.BengaliInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.DevanagariInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.GujaratiInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.GurmukhiInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.KannadaInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.MalayalamInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.OriyaInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.TamilInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.TeluguInputMethodDescriptor
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties b/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
new file mode 100644
index 0000000..d1fa411
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
@@ -0,0 +1,20 @@
+#
+#*******************************************************************************
+#* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#
+# Default messages for the ICU transliterator input method.
+#
+
+name=ICU Transliterator
+title=ICU Transliterator Input Method
+start=Please wait, loading transliterators
+activeError=Dispatch method called while the IME was inactive
+disposedError=Dispatch called after IME was disposed
+inputError=Dispatch called without an InputEvent
+activateError=IME is already active
+deactivateError=IME is already deactivated
+hideError=Cannot hide IME while active
+disposeError=Cannot dispose IME while active
+multipleDisposeError=IME is already disposed
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
new file mode 100644
index 0000000..80d6a0d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
@@ -0,0 +1,720 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.translit;
+
+import java.awt.AWTEvent;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.InputMethodEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextHitInfo;
+import java.awt.im.InputMethodHighlight;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodContext;
+import java.text.AttributedString;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.TreeSet;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.Transliterator;
+
+public class TransliteratorInputMethod implements InputMethod {
+
+    private static boolean usesAttachedIME() {
+        // we're in the ext directory so permissions are not an issue
+        String os = System.getProperty("os.name");
+        if (os != null) {
+            return os.indexOf("Windows") == -1;
+        }
+        return false;
+    }
+
+    // true if Solaris style; false if PC style, assume Apple uses PC style for now
+    private static final boolean attachedStatusWindow = usesAttachedIME();
+
+    // the shared status window
+    private static Window statusWindow;
+
+    // current or last owner
+    private static TransliteratorInputMethod statusWindowOwner;
+
+    // cache location limits for attached
+    private static Rectangle attachedLimits;
+
+    // convenience of access, to reflect the current state
+    private static JComboBox choices;
+
+    //
+    // per-instance state
+    //
+
+    // if we're attached, the status window follows the client window
+    private Point attachedLocation;
+
+    private static int gid;
+
+    private int id = gid++;
+
+    InputMethodContext imc;
+    private boolean enabled = true;
+
+    private int selectedIndex = -1; // index in JComboBox corresponding to our transliterator
+    private Transliterator transliterator;
+    private int desiredContext;
+    private StringBuffer buffer;
+    private ReplaceableString replaceableText;
+    private Transliterator.Position index;
+
+    // debugging
+    private static boolean TRACE_EVENT = false;
+    private static boolean TRACE_MESSAGES = false;
+    private static boolean TRACE_BUFFER = false;
+
+    public TransliteratorInputMethod() {
+        if (TRACE_MESSAGES)
+            dumpStatus("<constructor>");
+
+        buffer = new StringBuffer();
+        replaceableText = new ReplaceableString(buffer);
+        index = new Transliterator.Position();
+    }
+
+    public void dumpStatus(String msg) {
+        System.out.println("(" + this + ") " + msg);
+    }
+
+    public void setInputMethodContext(InputMethodContext context) {
+        initStatusWindow(context);
+
+        imc = context;
+        imc.enableClientWindowNotification(this, attachedStatusWindow);
+    }
+
+    private static void initStatusWindow(InputMethodContext context) {
+        if (statusWindow == null) {
+            String title;
+            try {
+                ResourceBundle rb = ResourceBundle
+                        .getBundle("com.ibm.icu.dev.tool.ime.translit.Transliterator");
+                title = rb.getString("title");
+            } catch (MissingResourceException m) {
+                System.out.println("Transliterator resources missing: " + m);
+                title = "Transliterator Input Method";
+            }
+
+            Window sw = context.createInputMethodWindow(title, false);
+
+            // get all the ICU Transliterators
+            Enumeration en = Transliterator.getAvailableIDs();
+            TreeSet types = new TreeSet(new LabelComparator());
+
+            while (en.hasMoreElements()) {
+                String id = (String) en.nextElement();
+                String name = Transliterator.getDisplayName(id);
+                JLabel label = new JLabel(name);
+                label.setName(id);
+                types.add(label);
+            }
+
+            // add the transliterators to the combo box
+
+            choices = new JComboBox(types.toArray());
+
+            choices.setEditable(false);
+            choices.setSelectedIndex(0);
+            choices.setRenderer(new NameRenderer());
+            choices.setActionCommand("transliterator");
+
+            choices.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    if (statusWindowOwner != null) {
+                        statusWindowOwner.statusWindowAction(e);
+                    }
+                }
+            });
+
+            sw.add(choices);
+            sw.pack();
+
+            Dimension sd = Toolkit.getDefaultToolkit().getScreenSize();
+            Dimension wd = sw.getSize();
+            if (attachedStatusWindow) {
+                attachedLimits = new Rectangle(0, 0, sd.width - wd.width,
+                        sd.height - wd.height);
+            } else {
+                sw.setLocation(sd.width - wd.width, sd.height - wd.height - 25);
+            }
+
+            synchronized (TransliteratorInputMethod.class) {
+                if (statusWindow == null) {
+                    statusWindow = sw;
+                }
+            }
+        }
+    }
+
+    private void statusWindowAction(ActionEvent e) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>status window action");
+        JComboBox cb = (JComboBox) e.getSource();
+        int si = cb.getSelectedIndex();
+        if (si != selectedIndex) { // otherwise, we don't need to change
+            if (TRACE_MESSAGES)
+                dumpStatus("status window action oldIndex: " + selectedIndex
+                        + " newIndex: " + si);
+
+            selectedIndex = si;
+
+            JLabel item = (JLabel) cb.getSelectedItem();
+
+            // construct the actual transliterator
+            // commit any text that may be present first
+            commitAll();
+
+            transliterator = Transliterator.getInstance(item.getName());
+            desiredContext = transliterator.getMaximumContextLength();
+
+            reset();
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<status window action");
+    }
+
+    // java has no pin to rectangle function?
+    private static void pin(Point p, Rectangle r) {
+        if (p.x < r.x) {
+            p.x = r.x;
+        } else if (p.x > r.x + r.width) {
+            p.x = r.x + r.width;
+        }
+        if (p.y < r.y) {
+            p.y = r.y;
+        } else if (p.y > r.y + r.height) {
+            p.y = r.y + r.height;
+        }
+    }
+
+    public void notifyClientWindowChange(Rectangle location) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>notify client window change: " + location);
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner == this) {
+                if (location == null) {
+                    statusWindow.setVisible(false);
+                } else {
+                    attachedLocation = new Point(location.x, location.y
+                            + location.height);
+                    pin(attachedLocation, attachedLimits);
+                    statusWindow.setLocation(attachedLocation);
+                    statusWindow.setVisible(true);
+                }
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<notify client window change: " + location);
+    }
+
+    public void activate() {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>activate");
+
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner != this) {
+                if (TRACE_MESSAGES)
+                    dumpStatus("setStatusWindowOwner from: " + statusWindowOwner + " to: " + this);
+
+                statusWindowOwner = this;
+                // will be null before first change notification
+                if (attachedStatusWindow && attachedLocation != null) {
+                    statusWindow.setLocation(attachedLocation);
+                }
+                choices.setSelectedIndex(selectedIndex == -1 ? choices
+                        .getSelectedIndex() : selectedIndex);
+            }
+
+            choices.setForeground(Color.BLACK);
+            statusWindow.setVisible(true);
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<activate");
+    }
+    
+    public void deactivate(boolean isTemporary) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>deactivate" + (isTemporary ? " (temporary)" : ""));
+        if (!isTemporary) {
+            synchronized (TransliteratorInputMethod.class) {
+                choices.setForeground(Color.LIGHT_GRAY);
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<deactivate" + (isTemporary ? " (temporary)" : ""));
+    }
+    
+    public void hideWindows() {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>hideWindows");
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner == this) {
+                if (TRACE_MESSAGES)
+                    dumpStatus("hiding");
+                statusWindow.setVisible(false);
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<hideWindows");
+    }
+    
+    public boolean setLocale(Locale locale) {
+        return false;
+    }
+    
+    public Locale getLocale() {
+        return Locale.getDefault();
+    }
+    
+    public void setCharacterSubsets(Character.Subset[] subsets) {
+    }
+
+    public void reconvert() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeNotify() {
+        if (TRACE_MESSAGES)
+            dumpStatus("**removeNotify");
+    }
+
+    public void endComposition() {
+        commitAll();
+    }
+
+    public void dispose() {
+        if (TRACE_MESSAGES)
+            dumpStatus("**dispose");
+    }
+    
+    public Object getControlObject() {
+        return null;
+    }
+    
+    public void setCompositionEnabled(boolean enable) {
+        enabled = enable;
+    }
+
+    public boolean isCompositionEnabled() {
+        return enabled;
+    }
+
+    // debugging
+    private String eventInfo(AWTEvent event) {
+        String info = event.toString();
+        StringBuffer buf = new StringBuffer();
+        int index1 = info.indexOf("[");
+        int index2 = info.indexOf(",", index1);
+        buf.append(info.substring(index1 + 1, index2));
+
+        index1 = info.indexOf("] on ");
+        index2 = info.indexOf("[", index1);
+        if (index2 != -1) {
+            int index3 = info.lastIndexOf(".", index2);
+            if (index3 < index1 + 4) {
+                index3 = index1 + 4;
+            }
+            buf.append(" on ");
+            buf.append(info.substring(index3 + 1, index2));
+        }
+        return buf.toString();
+    }
+
+    public void dispatchEvent(AWTEvent event) {
+        final int MODIFIERS = 
+            InputEvent.CTRL_MASK | 
+            InputEvent.META_MASK | 
+            InputEvent.ALT_MASK | 
+            InputEvent.ALT_GRAPH_MASK;
+    
+        switch (event.getID()) {
+        case MouseEvent.MOUSE_PRESSED:
+            if (enabled) {
+                if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(event));
+                // we'll get this even if the user is scrolling, can we rely on the component?
+                // commitAll(); // don't allow even clicks within our own edit area
+            }
+            break;
+    
+        case KeyEvent.KEY_TYPED: {
+            if (enabled) {
+                KeyEvent ke = (KeyEvent)event;
+                if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(ke));
+                if ((ke.getModifiers() & MODIFIERS) != 0) {
+                    commitAll(); // assume a command, let it go through
+                } else {
+                    if (handleTyped(ke.getKeyChar())) {
+                        ke.consume();
+                    }
+                }
+            }
+        } break;
+    
+        case KeyEvent.KEY_PRESSED: {
+            if (enabled) {
+            KeyEvent ke = (KeyEvent)event;
+            if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(ke));
+                if (handlePressed(ke.getKeyCode())) {
+                    ke.consume();
+                }
+            }
+        } break;
+    
+        case KeyEvent.KEY_RELEASED: {
+            // this won't autorepeat, which is better for toggle actions
+            KeyEvent ke = (KeyEvent)event;
+            if (ke.getKeyCode() == KeyEvent.VK_SPACE && ke.isControlDown()) {
+                setCompositionEnabled(!enabled);
+            }
+        } break;
+    
+        default:
+            break;
+        }
+    }
+
+    /** Wipe clean */
+    private void reset() {
+        buffer.delete(0, buffer.length());
+        index.contextStart = index.contextLimit = index.start = index.limit = 0;
+    }
+
+    // committed}context-composed|composed
+    //          ^       ^        ^
+    //         cc     start    ctxLim
+
+    private void traceBuffer(String msg, int cc, int off) {
+        if (TRACE_BUFFER)
+            System.out.println(Utility.escape(msg + ": '"
+                    + buffer.substring(0, cc) + '}'
+                    + buffer.substring(cc, index.start) + '-'
+                    + buffer.substring(index.start, index.contextLimit) + '|'
+                    + buffer.substring(index.contextLimit) + '\''));
+    }
+
+    private void update(boolean flush) {
+        int len = buffer.length();
+        String text = buffer.toString();
+        AttributedString as = new AttributedString(text);
+
+        int cc, off;
+        if (flush) {
+            off = index.contextLimit - len; // will be negative
+            cc = index.start = index.limit = index.contextLimit = len;
+        } else {
+            cc = index.start > desiredContext ? index.start - desiredContext
+                    : 0;
+            off = index.contextLimit - cc;
+        }
+
+        if (index.start < len) {
+            as.addAttribute(TextAttribute.INPUT_METHOD_HIGHLIGHT,
+                    InputMethodHighlight.SELECTED_RAW_TEXT_HIGHLIGHT,
+                    index.start, len);
+        }
+
+        imc.dispatchInputMethodEvent(
+                InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, as.getIterator(),
+                cc, TextHitInfo.leading(off), null);
+
+        traceBuffer("update", cc, off);
+
+        if (cc > 0) {
+            buffer.delete(0, cc);
+            index.start -= cc;
+            index.limit -= cc;
+            index.contextLimit -= cc;
+        }
+    }
+
+    private void updateCaret() {
+        imc.dispatchInputMethodEvent(InputMethodEvent.CARET_POSITION_CHANGED,
+                null, 0, TextHitInfo.leading(index.contextLimit), null);
+        traceBuffer("updateCaret", 0, index.contextLimit);
+    }
+    
+    private void caretToStart() {
+        if (index.contextLimit > index.start) {
+            index.contextLimit = index.limit = index.start;
+            updateCaret();
+        }
+    }
+
+    private void caretToLimit() {
+        if (index.contextLimit < buffer.length()) {
+            index.contextLimit = index.limit = buffer.length();
+            updateCaret();
+        }
+    }
+
+    private boolean caretTowardsStart() {
+        int bufpos = index.contextLimit;
+        if (bufpos > index.start) {
+            --bufpos;
+            if (bufpos > index.start
+                    && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                --bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            updateCaret();
+            return true;
+        }
+        return commitAll();
+    }
+
+    private boolean caretTowardsLimit() {
+        int bufpos = index.contextLimit;
+        if (bufpos < buffer.length()) {
+            ++bufpos;
+            if (bufpos < buffer.length()
+                    && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                ++bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            updateCaret();
+            return true;
+        }
+        return commitAll();
+    }
+
+    private boolean canBackspace() {
+        return index.contextLimit > 0;
+    }
+
+    private boolean backspace() {
+        int bufpos = index.contextLimit;
+        if (bufpos > 0) {
+            int limit = bufpos;
+            --bufpos;
+            if (bufpos > 0 && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                --bufpos;
+            }
+            if (bufpos < index.start) {
+                index.start = bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            doDelete(bufpos, limit);
+            return true;
+        }
+        return false;
+    }
+
+    private boolean canDelete() {
+        return index.contextLimit < buffer.length();
+    }
+
+    private boolean delete() {
+        int bufpos = index.contextLimit;
+        if (bufpos < buffer.length()) {
+            int limit = bufpos + 1;
+            if (limit < buffer.length()
+                    && UCharacter.isHighSurrogate(buffer.charAt(limit - 1))
+                    && UCharacter.isLowSurrogate(buffer.charAt(limit))) {
+                ++limit;
+            }
+            doDelete(bufpos, limit);
+            return true;
+        }
+        return false;
+    }
+
+    private void doDelete(int start, int limit) {
+        buffer.delete(start, limit);
+        update(false);
+    }
+
+    private boolean commitAll() {
+        if (buffer.length() > 0) {
+            boolean atStart = index.start == index.contextLimit;
+            boolean didConvert = buffer.length() > index.start;
+            index.contextLimit = index.limit = buffer.length();
+            transliterator.finishTransliteration(replaceableText, index);
+            if (atStart) {
+                index.start = index.limit = index.contextLimit = 0;
+            }
+            update(true);
+            return didConvert;
+        }
+        return false;
+    }
+
+    private void clearAll() {
+        int len = buffer.length();
+        if (len > 0) {
+            if (len > index.start) {
+                buffer.delete(index.start, len);
+            }
+            update(true);
+        }
+    }
+
+    private boolean insert(char c) {
+        transliterator.transliterate(replaceableText, index, c);
+        update(false);
+        return true;
+    }
+
+    private boolean editing() {
+        return buffer.length() > 0;
+    }
+
+    /**
+     * The big problem is that from release to release swing changes how it
+     * handles some characters like tab and backspace.  Sometimes it handles
+     * them as keyTyped events, and sometimes it handles them as keyPressed
+     * events.  If you want to allow the event to go through so swing handles
+     * it, you have to allow one or the other to go through.  If you don't want
+     * the event to go through so you can handle it, you have to stop the
+     * event both places.
+     * @return whether the character was handled
+     */
+    private boolean handleTyped(char ch) {
+        if (enabled) {
+            switch (ch) {
+            case '\b': if (editing()) return backspace(); break;
+            case '\t': if (editing()) { return commitAll(); } break;
+            case '\u001b': if (editing()) { clearAll(); return true; } break;
+            case '\u007f': if (editing()) return delete(); break;
+            default: return insert(ch);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Handle keyPressed events.
+     */
+    private boolean handlePressed(int code) {
+        if (enabled && editing()) {
+            switch (code) {
+            case KeyEvent.VK_PAGE_UP:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_KP_UP:
+            case KeyEvent.VK_HOME:
+            caretToStart(); return true;
+            case KeyEvent.VK_PAGE_DOWN:
+            case KeyEvent.VK_DOWN:
+            case KeyEvent.VK_KP_DOWN:
+            case KeyEvent.VK_END:
+            caretToLimit(); return true;
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_KP_LEFT:
+            return caretTowardsStart();
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_KP_RIGHT:
+            return caretTowardsLimit();
+            case KeyEvent.VK_BACK_SPACE: 
+            return canBackspace(); // unfortunately, in 1.5 swing handles this in keyPressed instead of keyTyped
+            case KeyEvent.VK_DELETE: 
+            return canDelete(); // this too?
+            case KeyEvent.VK_TAB:
+            case KeyEvent.VK_ENTER:
+            return commitAll(); // so we'll never handle VK_TAB in keyTyped
+            
+            case KeyEvent.VK_SHIFT:
+            case KeyEvent.VK_CONTROL:
+            case KeyEvent.VK_ALT:
+            return false; // ignore these unless a key typed event gets generated
+            default: 
+            // by default, let editor handle it, and we'll assume that it will tell us
+            // to endComposition if it does anything funky with, e.g., function keys.
+            return false;
+            }
+        }
+        return false;
+    }
+
+    public String toString() {
+        final String[] names = { 
+            "alice", "bill", "carrie", "doug", "elena", "frank", "gertie", "howie", "ingrid", "john" 
+        };
+    
+        if (id < names.length) {
+            return names[id];
+        } else {
+            return names[id] + "-" + (id/names.length);
+        }
+    }
+}
+
+class NameRenderer extends JLabel implements ListCellRenderer {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -210152863798631747L;
+
+    public Component getListCellRendererComponent(
+        JList list,
+        Object value,
+        int index,
+        boolean isSelected,
+        boolean cellHasFocus) {
+
+        String s = ((JLabel)value).getText();
+        setText(s);
+
+        if (isSelected) {
+            setBackground(list.getSelectionBackground());
+            setForeground(list.getSelectionForeground());
+        } else {
+            setBackground(list.getBackground());
+            setForeground(list.getForeground());
+        }
+
+        setEnabled(list.isEnabled());
+        setFont(list.getFont());
+        setOpaque(true);
+        return this;
+    }
+}
+
+class LabelComparator implements Comparator {
+    public int compare(Object obj1, Object obj2) {
+        Collator collator = Collator.getInstance();
+        return collator.compare(((JLabel)obj1).getText(), ((JLabel)obj2).getText());
+    }
+
+    public boolean equals(Object obj1) {
+        return this.equals(obj1);
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
new file mode 100644
index 0000000..d2575ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
@@ -0,0 +1,91 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.translit;
+
+import java.awt.Image;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodDescriptor;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+/**
+* The TransliteratorInputMethodDescriptor class is used to identify this package
+* as an input method editor.
+*/
+
+public class TransliteratorInputMethodDescriptor implements InputMethodDescriptor {
+
+    private ResourceBundle rb = null;
+
+    /**
+    * Creates the Transliterator IME this is automatically callled by the
+    * JVM when the Transliterator IME is selected from the input method list.
+    *
+    * @return InputMethod The Transliterator IME object.
+    */
+    public InputMethod createInputMethod() throws Exception {
+        return new TransliteratorInputMethod();
+    }
+  
+    /**
+    * Get the list of locales that this IME supports.
+    *
+    * @return Locale[] This will always have one locale. By default
+    *                  we just return the current locale. Therefore
+    *                  the Transliterator IME works in all locales.
+    */
+    // use the current active locale
+    public Locale[] getAvailableLocales() {
+        return new Locale[] {Locale.getDefault()};
+    }
+
+    /**
+    * The Transliterator IME does not support dynamic locales. The Transliterator
+    * IME's functionality does not depend upon any locale.
+    *
+    * @return boolean This will always be false.
+    */
+    public boolean hasDynamicLocaleList() {
+        return false;
+    }
+
+    /**
+    * Obtain the localized name of the Transliterator IME
+    *
+    * @param inputLocale the requested input method locale
+    * @param displayLanguage The requested translation of the Transliterator IME
+    * @return the localized name for the Transliterator IME
+    */
+    public String getInputMethodDisplayName(Locale inputLocale,
+                                            Locale displayLanguage) {
+        String name = null;
+
+        try {
+            rb = ResourceBundle.getBundle("com.ibm.icu.dev.tool.ime.translit.Transliterator", displayLanguage);
+            name = rb.getString("name");
+        }
+        catch (MissingResourceException m) {
+            // use a hardcoded value
+            name = "Transliterator";
+        }
+        return name;
+    }
+
+    /**
+    * Get the icon for the Transliterator IME. This is not supported.
+    *
+    * @param inputLocale (This is ignored).
+    *
+    * @return Image This will always be null.
+    */
+    public Image getInputMethodIcon(Locale inputLocale) {
+       return null;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub b/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub
new file mode 100644
index 0000000..47e3197
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Created-By: 1.0 (IBM Corporation)
+Extension-Name: com.ibm.icu.dev.tool.ime.translit
+Implementation-Vendor: IBM Corporation
+Implementation-Version: 1.0
+Implementation-Title: ICU Transliterator IME
+Specification-Vendor: IBM
+Specification-Version: 1.0
+Specification-Title: ICU Transliterator IME
+
+Name: com/ibm/icu/dev/tool/ime/translit
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor b/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..1035973
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor
@@ -0,0 +1,7 @@
+#
+#
+# fully-qualified name of the java.awt.im.spi.InputMethodDescriptor
+# implementation class
+#
+
+com.ibm.icu.dev.tool.ime.translit.TransliteratorInputMethodDescriptor
diff --git a/src/com/ibm/icu/dev/tool/index/IndexGenerator.java b/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
new file mode 100644
index 0000000..5bf09b7
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
@@ -0,0 +1,90 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.tool.index;
+
+import java.io.*;
+import java.text.*;
+import java.util.*;
+
+public class IndexGenerator {
+    
+    private final static String stoplist = ",char.res,CurrencyData.res,invuca.res,line.res,line_th.res,pnames.res,res_index.res,sent.res,title.res,ucadata.res,ucase.res,uidna.res,unames.res,unorm.res,uprops.res,word.res,word_ja.res,word_POSIX.res,word_th.res";
+
+    public static void main(String[] args) {
+        if (args.length < 1) {
+            usage("too few arguments");
+        }
+
+        File inDir = new File(args[0]);
+        if (!inDir.exists()) {
+            System.out.println("skipping nonexistent directory " + inDir);
+            return;
+        }
+
+        if (!inDir.isDirectory()) {
+            usage("first argument '" + inDir + "' must be a directory");
+        }
+
+        File outDir = inDir;
+        if (args.length > 1) {
+            outDir = new File(args[1]);
+            if (!outDir.isDirectory() || !outDir.exists()) {
+                usage("second argument must be existing directory");
+            }
+        }
+
+        Set names = new TreeSet();
+        File[] files = inDir.listFiles();
+        if (files != null) {
+            for (int i = 0; i < files.length; i++){
+                if (!files[i].isDirectory()) {
+                    String name = "," + files[i].getName(); // add ',' to get exact match
+                    if (name.endsWith(".res") && stoplist.indexOf(name) == -1) {
+                        names.add(name.substring(1, name.lastIndexOf('.'))); // 1 to trim off ','
+                    }
+                }
+            }
+        }
+
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US);
+        DateFormat copyfmt = new SimpleDateFormat("'# Copyright (C) 'yyyy' IBM Inc.  All Rights Reserved.'");
+
+        try {
+            File outFile = new File(outDir, "res_index.txt");
+            PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
+            Date now = new Date();
+            pw.println("# Generated by " + IndexGenerator.class.getName() + " on " + fmt.format(now));
+            pw.println("# from contents of " + inDir.getCanonicalPath());
+            pw.println(copyfmt.format(now));
+            Iterator i = names.iterator();
+            while (i.hasNext()) {
+                pw.println(i.next());
+            }
+            int count = names.size();
+            pw.println("# Found " + count + " files");
+            pw.println("# End of file");
+            if (count == 0) {
+                System.err.println("Warning: matched no files");
+            } 
+            pw.close();
+        }
+        catch (IOException e) {
+            usage(e.getMessage());
+        }
+    }
+
+    private static void usage(String msg) {
+        if (msg != null) {
+            System.err.println("Error: " + msg);
+        }
+        System.out.println("Usage: IndexGenerator inDir outDir");
+        System.out.println("  inDir is an existing directory whose locale-based resources are to be enumerated");
+        System.out.println("  outDir is an existing directory in which the res_index.txt file will be placed");
+        throw new IllegalStateException("Usage");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java b/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
new file mode 100644
index 0000000..35dbc3f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UnicodeSet;
+
+public class ArabicCharacterData
+{
+    public class Record
+    {
+        public int getCodePoint()
+        {
+            return codePoint;
+        }
+        
+        public int getGeneralCategory()
+        {
+            return generalCategory;
+        }
+        
+        public int getDecompositionType()
+        {
+            return decompositionType;
+        }
+        
+        public String getDecomposition()
+        {
+            return decomposition;
+        }
+        
+        private Record(int character)
+        {
+            codePoint         = character;
+            generalCategory   = UCharacter.getType(character);
+            decompositionType = UCharacter.getIntPropertyValue(character, UProperty.DECOMPOSITION_TYPE);
+            
+            switch (decompositionType) {
+            case UCharacter.DecompositionType.FINAL:
+            case UCharacter.DecompositionType.INITIAL:
+            case UCharacter.DecompositionType.ISOLATED:
+            case UCharacter.DecompositionType.MEDIAL:
+                decomposition = Normalizer.compose(UCharacter.toString(character), true);
+                break;
+                
+            case UCharacter.DecompositionType.CANONICAL:
+                decomposition = Normalizer.decompose(UCharacter.toString(character), true);
+                break;
+                
+            default:
+                decomposition = null;
+            }
+        }
+        
+        private int codePoint;
+        private int generalCategory;
+        private int decompositionType;
+        private String decomposition;
+    }
+    
+    private ArabicCharacterData(int charCount)
+    {
+        records = new Record[charCount];
+    }
+    
+    private void add(int character)
+    {
+        records[recordIndex++] = new Record(character);
+    }
+    
+    public Record getRecord(int index)
+    {
+        if (index < 0 || index >= records.length) {
+            return null;
+        }
+        
+        return records[index];
+    }
+    
+    public int countRecords()
+    {
+        return records.length;
+    }
+ 
+    // TODO: do we need to change this to use UnicodeSetIterator?
+    // That will mean not knowing the number of characters until
+    // after the iteration is done, so we'd have to use a vector
+    // to hold the Records at first and copy it to an array
+    // when we're done...   
+    public static ArabicCharacterData factory(UnicodeSet characterSet)
+    {
+        int charCount = characterSet.size();
+        ArabicCharacterData data = new ArabicCharacterData(charCount);
+        
+        for (int i = 0; i < charCount; i += 1) {
+            data.add(characterSet.charAt(i));
+        }
+        
+        return data;
+    }
+    
+    private Record[] records;
+    private int recordIndex = 0;
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java b/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
new file mode 100644
index 0000000..34d65e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+public class ArabicShaping {
+
+    // arabic   shaping type code
+
+    // shaping bit masks
+    static final int MASK_SHAPE_RIGHT   = 1; // if this bit set, shapes to right
+    static final int MASK_SHAPE_LEFT = 2;   // if this bit set, shapes to left
+    static final int MASK_TRANSPARENT   = 4; // if this bit set, is transparent (ignore other bits)
+    static final int MASK_NOSHAPE   = 8; // if this bit set, don't shape this char, i.e. tatweel
+
+    // shaping values
+    public static final int VALUE_NONE = 0;
+    public static final int VALUE_RIGHT = MASK_SHAPE_RIGHT;
+    public static final int VALUE_LEFT = MASK_SHAPE_LEFT;
+    public static final int VALUE_DUAL = MASK_SHAPE_RIGHT | MASK_SHAPE_LEFT;
+    public static final int VALUE_TRANSPARENT = MASK_TRANSPARENT;
+    public static final int VALUE_NOSHAPE_DUAL = MASK_NOSHAPE | VALUE_DUAL;
+    public static final int VALUE_NOSHAPE_NONE = MASK_NOSHAPE;
+
+    public static int getShapeType(char ch)
+    {
+        int tt = UCharacter.getIntPropertyValue(ch, UProperty.JOINING_TYPE);
+        
+        switch(tt) {
+            case UCharacter.JoiningType.JOIN_CAUSING:
+                return VALUE_NOSHAPE_DUAL;
+                
+            case UCharacter.JoiningType.LEFT_JOINING:
+                return VALUE_LEFT;
+            
+            case UCharacter.JoiningType.RIGHT_JOINING:
+                return VALUE_RIGHT;
+            
+            case UCharacter.JoiningType.DUAL_JOINING:
+                return VALUE_DUAL;
+            
+            case UCharacter.JoiningType.TRANSPARENT:
+                return VALUE_TRANSPARENT;
+                
+            case UCharacter.JoiningType.NON_JOINING:
+            default:
+                return VALUE_NOSHAPE_NONE;                
+        }
+    }
+
+    /*
+     * Chars in logical order.
+     * leftType is shaping code of char to logical left of range
+     * rightType is shaping code of char to logical right of range
+     */
+
+    public static void shape(char[] chars, int leftType, int rightType, ClassTable isolClassTable) {
+        // iterate in logical order from left to right
+        //
+        // the effective right char is the most recently encountered
+        // non-transparent char
+        //
+        // four boolean states:
+        //   the effective right char shapes
+        //   the effective right char causes right shaping
+        //   the current char shapes
+        //   the current char causes left shaping
+        //
+        // if both cause shaping, then
+        //   right += 2 (isolate to initial, or final to medial)
+        //   cur += 1 (isolate to final)
+
+        // ern is effective right logical index
+        int ern = -1;
+
+        boolean rightShapes = false;
+        boolean rightCauses = (rightType & MASK_SHAPE_LEFT) != 0;
+
+        for (int n = 0; n < chars.length; n++) {
+            char c = chars[n];
+            int t = getShapeType(c);
+
+            if ((t & MASK_TRANSPARENT) != 0) {
+                continue;
+            }
+
+            boolean curShapes = (t & MASK_NOSHAPE) == 0;
+            boolean curCauses = (t & MASK_SHAPE_RIGHT) != 0;
+
+            if (rightCauses && curCauses) {
+                if (rightShapes) {
+                    chars[ern] += 2;
+                }
+
+                if (curShapes) {
+                    chars[n] = (char) (isolClassTable.getGlyphClassID(c) + 1);
+                }
+            } else {
+                if (curShapes) {
+                    chars[n] = (char) isolClassTable.getGlyphClassID(c);
+                }
+            }
+
+            rightShapes = curShapes;
+            rightCauses = (t & MASK_SHAPE_LEFT) != 0;
+            ern = n;
+        }
+
+        if (rightShapes && rightCauses && (leftType & MASK_SHAPE_RIGHT) != 0) {
+            chars[ern] += 2;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java b/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
new file mode 100644
index 0000000..665c188
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
@@ -0,0 +1,97 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class BuildMirroringTables extends ModuleWriter
+{
+    public BuildMirroringTables()
+    {
+        super();
+    }
+    
+    public void dump(String name, int[] array, int length, int valuesPerLine)
+    {
+        StringBuffer line = new StringBuffer("    ");
+        
+        output.println("const LEUnicode32 DefaultCharMapper::" + name + "[] = {");
+        
+        for (int i = 0; i < length; i += 1) {
+            
+            if (i > 0 && i % valuesPerLine == 0) {
+                output.println(line.toString());
+                line.setLength(4);
+            }
+    
+            line.append("0x" + Utility.hex(array[i], 4));
+            line.append(", ");
+        }
+    
+        line.setLength(line.length() - 2);
+    
+        output.println(line.toString());
+        output.println("};\n");
+    }
+    
+    public void writeMirroredDataFile(String filename)
+    {
+        UnicodeSet mirrored = new UnicodeSet("[\\p{Bidi_Mirrored}]");
+        int count = mirrored.size();
+        int[] chars   = new int[count];
+        int[] mirrors = new int[count];
+        int total = 0;
+        
+        System.out.println("There are " + count + " mirrored characters.");
+        
+        for(int i = 0; i < count; i += 1) {
+            int ch = mirrored.charAt(i);
+            int m  = UCharacter.getMirror(ch);
+            
+            if (ch != m) {
+                chars[total] = ch & 0xFFFF;
+                mirrors[total++] = m & 0xFFFF;
+            }
+        }
+        
+        System.out.println("There are " + total + " characters with a different mirror.\n");
+        
+        openFile(filename);
+        writeHeader(null, includeFiles);
+        
+        
+        dump("mirroredChars", chars, total, 8);
+        
+        System.out.println();
+        
+        dump("srahCderorrim", mirrors, total, 8);
+        
+        output.println("const le_int32 DefaultCharMapper::mirroredCharsCount = " + total + ";\n");
+
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static String includeFiles[] = {"LETypes.h", "DefaultCharMapper.h"};
+    
+    public static void main(String[] args)
+    {
+        BuildMirroringTables bmt = new BuildMirroringTables();
+        
+        bmt.writeMirroredDataFile("MirroredCharData.cpp");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java b/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
new file mode 100644
index 0000000..cef1b69
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
@@ -0,0 +1,523 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @author Eric Mader
+ *
+ * Notes:
+ * 
+ * The property \p{Decomposition_Type=Canonical} will match all characters with a canonical
+ * decomposition.
+ *
+ * So "[[\\p{Latin}\\p{Greek}\\p{Cyrillic}] & [\\p{Decomposition_Type=Canonical}]]"
+ * will match all Latin, Greek and Cyrillic characters with a canonical decomposition.
+ * 
+ * Are these three scripts enough? Do we want to collect them all at once and distribute by script,
+ * or process them one script at a time. It's probably a good idea to build a single table for
+ * however many scripts there are.
+ * 
+ * It might be better to collect all the characters that have a canonical decomposition and just
+ * sort them into however many scripts there are... unless we'll get characters in COMMON???
+ */
+public class CanonGSUBBuilder
+{
+    static public String convertArabicString(int type, int ligature, String decomp, ClassTable isolClassTable)
+    {
+        int leftType  = ArabicShaping.VALUE_NONE;
+        int rightType = ArabicShaping.VALUE_NONE;
+        
+        switch (type) {
+            case UCharacter.DecompositionType.ISOLATED:
+                break;
+                
+            case UCharacter.DecompositionType.FINAL:
+                rightType = ArabicShaping.VALUE_LEFT;
+                break;
+            
+            case UCharacter.DecompositionType.INITIAL:
+                leftType = ArabicShaping.VALUE_RIGHT;
+                break;
+            
+            case UCharacter.DecompositionType.MEDIAL:
+               rightType = ArabicShaping.VALUE_LEFT;
+               leftType  = ArabicShaping.VALUE_RIGHT;
+               break;
+               
+           default:
+               return decomp + UCharacter.toString(ligature);
+        }
+        
+        char[] chars = decomp.toCharArray();
+              
+        ArabicShaping.shape(chars, leftType, rightType, isolClassTable);
+  
+        return new String(chars) + UCharacter.toString(ligature);
+    }
+    
+    static void buildArabicContextualForms(ArabicCharacterData data, ClassTable initClassTable, ClassTable mediClassTable,
+                                     ClassTable finaClassTable, ClassTable isolClassTable)
+    {
+        System.out.print("Finding Arabic contextual forms... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            String decomposition = record.getDecomposition();
+            
+            if (decomposition != null && decomposition.length() == 1) {
+                int contextual = record.getCodePoint();
+                int isolated   = UTF16.charAt(record.getDecomposition(), 0);
+            
+                switch (record.getDecompositionType()) {
+                case UCharacter.DecompositionType.INITIAL:
+                    initClassTable.addMapping(isolated, contextual);
+                    break;
+                
+                case UCharacter.DecompositionType.MEDIAL:
+                    mediClassTable.addMapping(isolated, contextual);
+                    break;
+                
+               case UCharacter.DecompositionType.FINAL:
+                   finaClassTable.addMapping(isolated, contextual);
+                   break;
+                   
+               case UCharacter.DecompositionType.ISOLATED:
+                   isolClassTable.addMapping(isolated, contextual);
+                   break;
+               
+               default:
+                   // issue some error message?
+                   break;
+                }
+            }
+        }
+        
+        System.out.println("Done.");
+    }
+
+    static LigatureTree buildArabicLigatureTree(ArabicCharacterData data, ClassTable isolClassTable)
+    {
+        LigatureTree contextualTree = new LigatureTree();
+        int ligatureCount = 0;
+        
+        System.out.print("Building Arabic ligature tree... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            String decomposition = record.getDecomposition();
+            
+            if (decomposition != null && decomposition.length() > 1) {
+                int ligature   = record.getCodePoint();
+                int decompType = record.getDecompositionType();
+                
+                switch (decompType) {
+                case UCharacter.DecompositionType.FINAL:
+                case UCharacter.DecompositionType.INITIAL:
+                case UCharacter.DecompositionType.MEDIAL:
+                case UCharacter.DecompositionType.ISOLATED:
+                    contextualTree.insert(convertArabicString(decompType, ligature, decomposition, isolClassTable));
+                    ligatureCount += 1;
+                    break;
+                    
+                case UCharacter.DecompositionType.CANONICAL:
+                    //cannonicalTree.insert(decomposition + UCharacter.toString(ligature));
+                    break;
+                }
+            }
+        }
+        
+        System.out.println(ligatureCount + " ligatures.");
+        
+        return contextualTree;
+    }
+    
+    static final int SIMPLE_GLYPH = 1;
+    static final int LIGATURE_GLYPH = 2;
+    static final int MARK_GLYPH = 3;
+    static final int COMPONENT_GLYPH = 4;
+    
+    static final int categoryClassMap[] = {
+    0,              // UNASSIGNED
+    SIMPLE_GLYPH,   // UPPERCASE_LETTER
+    SIMPLE_GLYPH,   // LOWERCASE_LETTER
+    SIMPLE_GLYPH,   // TITLECASE_LETTER
+    SIMPLE_GLYPH,   // MODIFIER_LETTER
+    SIMPLE_GLYPH,   // OTHER_LETTER
+    MARK_GLYPH,     // NON_SPACING_MARK
+    MARK_GLYPH,     // ENCLOSING_MARK ??
+    MARK_GLYPH,     // COMBINING_SPACING_MARK ??
+    SIMPLE_GLYPH,   // DECIMAL_NUMBER
+    SIMPLE_GLYPH,   // LETTER_NUMBER
+    SIMPLE_GLYPH,   // OTHER_NUMBER;
+    0,              // SPACE_SEPARATOR
+    0,              // LINE_SEPARATOR
+    0,              // PARAGRAPH_SEPARATOR
+    0,              // CONTROL
+    0,              // FORMAT
+    0,              // PRIVATE_USE
+    0,              // SURROGATE
+    SIMPLE_GLYPH,   // DASH_PUNCTUATION
+    SIMPLE_GLYPH,   // START_PUNCTUATION
+    SIMPLE_GLYPH,   // END_PUNCTUATION
+    SIMPLE_GLYPH,   // CONNECTOR_PUNCTUATION
+    SIMPLE_GLYPH,   // OTHER_PUNCTUATION
+    SIMPLE_GLYPH,   // MATH_SYMBOL;
+    SIMPLE_GLYPH,   // CURRENCY_SYMBOL
+    SIMPLE_GLYPH,   // MODIFIER_SYMBOL
+    SIMPLE_GLYPH,   // OTHER_SYMBOL
+    SIMPLE_GLYPH,   // INITIAL_PUNCTUATION
+    SIMPLE_GLYPH    // FINAL_PUNCTUATION
+    };
+
+    static int getGlyphClass(ArabicCharacterData.Record record)
+    {
+        String decomp = record.getDecomposition();
+        
+        if (decomp != null && decomp.length() > 1) {
+            return LIGATURE_GLYPH;
+        }
+        
+        return categoryClassMap[record.getGeneralCategory()];
+    }
+    
+    static void addArabicGlyphClasses(ArabicCharacterData data, ClassTable classTable)
+    {
+        System.out.print("Adding Arabic glyph classes... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            classTable.addMapping(record.getCodePoint(), getGlyphClass(record));
+        }
+        
+        System.out.println("Done.");
+    }
+    
+    private static void buildArabicTables(ScriptList scriptList, FeatureList featureList,
+                                                LookupList lookupList, ClassTable classTable) {
+        // TODO: Might want to have the ligature table builder explicitly check for ligatures
+        // which start with space and tatweel rather than pulling them out here...
+        UnicodeSet arabicBlock   = new UnicodeSet("[[\\p{block=Arabic}] & [[:Cf:][:Po:][:So:][:Mn:][:Nd:][:Lm:]]]");
+        UnicodeSet oddLigatures  = new UnicodeSet("[\\uFC5E-\\uFC63\\uFCF2-\\uFCF4\\uFE70-\\uFE7F]");
+        UnicodeSet arabicLetters = new UnicodeSet("[\\p{Arabic}]");
+        ArabicCharacterData arabicData = ArabicCharacterData.factory(arabicLetters.addAll(arabicBlock).removeAll(oddLigatures));
+
+        addArabicGlyphClasses(arabicData, classTable);
+        
+        ClassTable initClassTable = new ClassTable();
+        ClassTable mediClassTable = new ClassTable();
+        ClassTable finaClassTable = new ClassTable();
+        ClassTable isolClassTable = new ClassTable();
+        
+        buildArabicContextualForms(arabicData, initClassTable, mediClassTable, finaClassTable, isolClassTable);
+        isolClassTable.snapshot();
+        LigatureTree ligaTree = buildArabicLigatureTree(arabicData, isolClassTable);
+
+        LigatureTreeWalker ligaWalker = new LigatureTreeWalker();
+
+        ligaTree.walk(ligaWalker);
+        
+        Lookup initLookup, mediLookup, finaLookup, ligaLookup;
+        
+        initLookup = new Lookup(Lookup.GSST_Single, 0);
+        initLookup.addSubtable(initClassTable);
+        
+        mediLookup = new Lookup(Lookup.GSST_Single, 0);
+        mediLookup.addSubtable(mediClassTable);
+        
+        finaLookup = new Lookup(Lookup.GSST_Single, 0);
+        finaLookup.addSubtable(finaClassTable);
+        
+        ligaLookup = new Lookup(Lookup.GSST_Ligature, Lookup.LF_IgnoreMarks);
+        ligaLookup.addSubtable(ligaWalker);
+        
+        Feature init = new Feature("init");
+        Feature medi = new Feature("medi");
+        Feature fina = new Feature("fina");
+        Feature liga = new Feature("liga");
+        
+        init.addLookup(lookupList.addLookup(initLookup));
+        medi.addLookup(lookupList.addLookup(mediLookup));
+        fina.addLookup(lookupList.addLookup(finaLookup));
+        liga.addLookup(lookupList.addLookup(ligaLookup));
+        
+        featureList.addFeature(init);
+        featureList.addFeature(medi);
+        featureList.addFeature(fina);
+        featureList.addFeature(liga);
+        
+        scriptList.addFeature("arab", "(default)", init);
+        scriptList.addFeature("arab", "(default)", medi);
+        scriptList.addFeature("arab", "(default)", fina);
+        scriptList.addFeature("arab", "(default)", liga);
+        
+        System.out.println();
+    }
+
+    public static void buildLigatureTree(CanonicalCharacterData data, int script, LigatureTree ligatureTree)
+    {
+        int ligatureCount = 0;
+        
+        System.out.print("building composition ligature tree for " + UScript.getName(script) + "... ");
+        
+        for (int i = 0; i < data.countRecords(script); i += 1) {
+            CanonicalCharacterData.Record record = data.getRecord(script, i);
+            String composed = UCharacter.toString(record.getComposedCharacter());
+            
+            for (int e = 0; e < record.countEquivalents(); e += 1) {
+                String equivalent = record.getEquivalent(e);
+                
+                ligatureTree.insert(equivalent + composed);
+                ligatureCount += 1;
+            }
+        }
+        
+        System.out.println(ligatureCount + " ligatures.");
+    }
+    
+    public static DecompTable[] buildDecompTables(CanonicalCharacterData data, int script)
+    {
+        int maxDecompCount = data.getMaxEquivalents(script);
+        DecompTable[] decompTables = new DecompTable[maxDecompCount];
+        
+        System.out.print("Building decompositon tables for " + UScript.getName(script) +
+                         "... total decompositions: " + data.countRecords(script) + 
+                         ", max: " + maxDecompCount + "...");
+        
+        for (int i = 0; i < maxDecompCount; i += 1) {
+            DecompTable table = new DecompTable();
+            
+            for (int r = 0; r < data.countRecords(script); r += 1) {
+                CanonicalCharacterData.Record record = data.getRecord(script, r);
+                
+                if (record.countEquivalents() > i) {
+                    table.add(record.getComposedCharacter(), record.getEquivalent(i));
+                }
+            }
+            
+            decompTables[i] = table;
+        }
+        
+        System.out.println(" Done.");
+        
+        return decompTables;
+    }
+    
+    public static int[] buildLookups(CanonicalCharacterData data, LookupList lookupList, int script)
+    {
+        int[] lookups = new int[2];
+        
+        DecompTable[] decompTables = buildDecompTables(data, script);
+        
+        LigatureTree compTree = new LigatureTree();
+        
+        buildLigatureTree(data, script, compTree);
+        
+        System.out.println();
+        
+        LigatureTreeWalker compWalker = new LigatureTreeWalker();
+        
+        compTree.walk(compWalker);
+        
+        Lookup compLookup, dcmpLookup;
+        //int compLookupIndex, dcmpLookupIndex;
+        
+        compLookup = new Lookup(Lookup.GSST_Ligature, 0);
+        compLookup.addSubtable(compWalker);
+        
+        dcmpLookup = new Lookup(Lookup.GSST_Multiple, 0);
+        for (int i = 0; i < decompTables.length; i += 1) {
+            dcmpLookup.addSubtable(decompTables[i]);
+        }
+        
+        lookups[0] = lookupList.addLookup(compLookup);
+        lookups[1] = lookupList.addLookup(dcmpLookup);
+        
+        return lookups;
+    }
+    
+    public static void addLookups(Feature feature, int[] lookups)
+    {
+        for (int i = 0; i < lookups.length; i += 1) {
+            feature.addLookup(lookups[i]);
+        }
+    }
+    
+    /*
+     * Hebrew mark order taken from the SBL Hebrew Font manual
+     * Arabic mark order per Thomas Milo: hamza < shadda < combining_alef < sukun, vowel_marks < madda < qur'anic_marks
+     */
+    public static ClassTable buildCombiningClassTable()
+    {
+        UnicodeSet markSet = new UnicodeSet("[\\P{CanonicalCombiningClass=0}]");
+        ClassTable exceptions = new ClassTable();
+        ClassTable combiningClasses = new ClassTable();
+        int markCount = markSet.size();
+        
+        exceptions.addMapping(0x05C1,  10); // Point Shin Dot
+        exceptions.addMapping(0x05C2,  11); // Point Sin Dot
+        exceptions.addMapping(0x05BC,  21); // Point Dagesh or Mapiq
+        exceptions.addMapping(0x05BF,  23); // Point Rafe
+        exceptions.addMapping(0x05B9,  27); // Point Holam
+        exceptions.addMapping(0x0323, 220); // Comb. Dot Below (low punctum)
+        exceptions.addMapping(0x0591, 220); // Accent Etnahta
+        exceptions.addMapping(0x0596, 220); // Accent Tipeha
+        exceptions.addMapping(0x059B, 220); // Accent Tevir
+        exceptions.addMapping(0x05A3, 220); // Accent Munah
+        exceptions.addMapping(0x05A4, 220); // Accent Mahapakh
+        exceptions.addMapping(0x05A5, 220); // Accent Merkha
+        exceptions.addMapping(0x05A6, 220); // Accent Merkha Kefula
+        exceptions.addMapping(0x05A7, 220); // Accent Darga
+        exceptions.addMapping(0x05AA, 220); // Accent Yerah Ben Yomo
+        exceptions.addMapping(0x05B0, 220); // Point Sheva
+        exceptions.addMapping(0x05B1, 220); // Point Hataf Segol
+        exceptions.addMapping(0x05B2, 220); // Point Hataf Patah
+        exceptions.addMapping(0x05B3, 220); // Point Hataf Qamats
+        exceptions.addMapping(0x05B4, 220); // Point Hiriq
+        exceptions.addMapping(0x05B5, 220); // Point Tsere
+        exceptions.addMapping(0x05B6, 220); // Point Segol
+        exceptions.addMapping(0x05B7, 220); // Point Patah
+        exceptions.addMapping(0x05B8, 220); // Point Qamats
+        exceptions.addMapping(0x05BB, 220); // Point Qubuts
+        exceptions.addMapping(0x05BD, 220); // Point Meteg
+        exceptions.addMapping(0x059A, 222); // Accent Yetiv
+        exceptions.addMapping(0x05AD, 222); // Accent Dehi
+        exceptions.addMapping(0x05C4, 230); // Mark Upper Dot (high punctum)
+        exceptions.addMapping(0x0593, 230); // Accent Shalshelet
+        exceptions.addMapping(0x0594, 230); // Accent Zaqef Qatan
+        exceptions.addMapping(0x0595, 230); // Accent Zaqef Gadol
+        exceptions.addMapping(0x0597, 230); // Accent Revia
+        exceptions.addMapping(0x0598, 230); // Accent Zarqa
+        exceptions.addMapping(0x059F, 230); // Accent Qarney Para
+        exceptions.addMapping(0x059E, 230); // Accent Gershayim
+        exceptions.addMapping(0x059D, 230); // Accent Geresh Muqdam
+        exceptions.addMapping(0x059C, 230); // Accent Geresh
+        exceptions.addMapping(0x0592, 230); // Accent Segolta
+        exceptions.addMapping(0x05A0, 230); // Accent Telisha Gedola
+        exceptions.addMapping(0x05AC, 230); // Accent Iluy
+        exceptions.addMapping(0x05A8, 230); // Accent Qadma
+        exceptions.addMapping(0x05AB, 230); // Accent Ole
+        exceptions.addMapping(0x05AF, 230); // Mark Masora Circle
+        exceptions.addMapping(0x05A1, 230); // Accent Pazer
+      //exceptions.addMapping(0x0307, 230); // Mark Number/Masora Dot
+        exceptions.addMapping(0x05AE, 232); // Accent Zinor
+        exceptions.addMapping(0x05A9, 232); // Accent Telisha Qetana
+        exceptions.addMapping(0x0599, 232); // Accent Pashta
+        
+        exceptions.addMapping(0x0655,  27); // ARABIC HAMZA BELOW
+        exceptions.addMapping(0x0654,  27); // ARABIC HAMZA ABOVE
+
+        exceptions.addMapping(0x0651,  28); // ARABIC SHADDA
+
+        exceptions.addMapping(0x0656,  29); // ARABIC SUBSCRIPT ALEF
+        exceptions.addMapping(0x0670,  29); // ARABIC LETTER SUPERSCRIPT ALEF
+
+        exceptions.addMapping(0x064D,  30); // ARABIC KASRATAN
+        exceptions.addMapping(0x0650,  30); // ARABIC KASRA
+
+        exceptions.addMapping(0x0652,  31); // ARABIC SUKUN
+        exceptions.addMapping(0x06E1,  31); // ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+
+        exceptions.addMapping(0x064B,  31); // ARABIC FATHATAN
+        exceptions.addMapping(0x064C,  31); // ARABIC DAMMATAN
+        exceptions.addMapping(0x064E,  31); // ARABIC FATHA
+        exceptions.addMapping(0x064F,  31); // ARABIC DAMMA
+        exceptions.addMapping(0x0657,  31); // ARABIC INVERTED DAMMA
+        exceptions.addMapping(0x0658,  31); // ARABIC MARK NOON GHUNNA
+
+        exceptions.addMapping(0x0653,  32); // ARABIC MADDAH ABOVE
+        
+        exceptions.snapshot();
+        
+        for (int i = 0; i < markCount; i += 1) {
+            int mark = markSet.charAt(i);
+            int markClass = exceptions.getGlyphClassID(mark);
+            
+            if (markClass == 0) {
+                markClass = UCharacter.getCombiningClass(mark);
+            }
+            
+            combiningClasses.addMapping(mark, markClass);
+        }
+        
+        combiningClasses.snapshot();
+        return combiningClasses;
+    }
+    
+    public static void buildDecompTables(String fileName)
+    {
+        // F900 - FAFF are compatibility ideographs. They all decompose to a single other character, and can be ignored.
+      //UnicodeSet decompSet = new UnicodeSet("[[[\\P{Hangul}] & [\\p{DecompositionType=Canonical}]] - [\uF900-\uFAFF]]");
+        UnicodeSet decompSet = new UnicodeSet("[[\\p{DecompositionType=Canonical}] & [\\P{FullCompositionExclusion}] & [\\P{Hangul}]]");
+        CanonicalCharacterData data = CanonicalCharacterData.factory(decompSet);
+        ClassTable classTable = new ClassTable();
+        
+        LookupList  lookupList  = new LookupList();
+        FeatureList featureList = new FeatureList();
+        ScriptList  scriptList  = new ScriptList();
+
+        // build common, inherited lookups...
+//        int[] commonLookups = buildLookups(data, lookupList, UScript.COMMON);
+//        int[] inheritedLookups = buildLookups(data, lookupList, UScript.INHERITED);
+        
+        for (int script = 0; script < UScript.CODE_LIMIT; script += 1) {
+            
+            // This is a bit lame, but it's the only way I can think of
+            // to make this work w/o knowing the values of COMMON and INHERITED...
+            if (script == UScript.COMMON || script == UScript.INHERITED ||
+                data.getMaxEquivalents(script) == 0) {
+                continue;
+            }
+            
+            int[] lookups = buildLookups(data, lookupList, script);
+
+            Feature ccmp = new Feature("ccmp");
+            
+            addLookups(ccmp, lookups);
+//            addLookups(ccmp, commonLookups);
+//            addLookups(ccmp, inheritedLookups);
+            
+            featureList.addFeature(ccmp);
+        
+            String scriptTag = TagUtilities.tagLabel(UScript.getShortName(script));
+            
+            scriptList.addFeature(scriptTag, "(default)", ccmp);
+            
+            if (script == UScript.ARABIC) {
+                buildArabicTables(scriptList, featureList, lookupList, classTable);
+            }
+        }
+        
+        featureList.finalizeFeatureList();
+        
+        ClassTable markClassTable = buildCombiningClassTable();
+        
+        GSUBWriter gsubWriter = new GSUBWriter("Canon", scriptList, featureList, lookupList);
+        GDEFWriter gdefWriter = new GDEFWriter("Canon", classTable, markClassTable);
+        String[] includeFiles = {"LETypes.h", "CanonShaping.h"};        
+        
+        LigatureModuleWriter writer = new LigatureModuleWriter();
+        
+        writer.openFile(fileName);
+        writer.writeHeader(null, includeFiles);
+        writer.writeTable(gsubWriter);
+        writer.writeTable(gdefWriter);
+        writer.writeTrailer();
+        writer.closeFile();
+    }
+    
+    public static void main(String[] args)
+    {
+        buildDecompTables(args[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java b/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
new file mode 100644
index 0000000..3cd87f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
@@ -0,0 +1,216 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.CanonicalIterator;
+import com.ibm.icu.text.UTF16;
+import java.util.Vector;
+
+public class CanonicalCharacterData
+{
+    private static int THRESHOLD = 4;
+    
+    public class Record
+    {
+        // TODO: might want to save arrays of Char32's rather than UTF16 strings...
+        Record(int character, int script)
+        {
+            String char32 = UCharacter.toString(character);
+            CanonicalIterator iterator = new CanonicalIterator(char32);
+            Vector equivs = new Vector();
+            
+            composed = character;
+            
+            for (String equiv = iterator.next(); equiv != null; equiv = iterator.next()) {
+                // Skip all equivalents of length 1; it's either the original
+                // characeter or something like Angstrom for A-Ring, which we don't care about
+                if (UTF16.countCodePoint(equiv) > 1) {
+                    equivs.add(equiv);
+                }
+            }
+            
+            int nEquivalents = equivs.size();
+            
+            if (nEquivalents > maxEquivalents[script]) {
+                maxEquivalents[script] = nEquivalents;
+            }
+            
+            if (nEquivalents > 0) {
+                equivalents = new String[nEquivalents];
+                
+                if (nEquivalents > THRESHOLD) {
+                    dumpEquivalents(character, equivs);
+                }
+                
+                sortEquivalents(equivalents, equivs);
+            }
+        }
+        
+        public int getComposedCharacter()
+        {
+            return composed;
+        }
+        
+        public int countEquivalents()
+        {
+            if (equivalents == null) {
+                return 0;
+            }
+            
+            return equivalents.length;
+        }
+        
+        public String[] getEquivalents()
+        {
+            return equivalents;
+        }
+        
+        public String getEquivalent(int index)
+        {
+            if (equivalents == null || index < 0 || index >= equivalents.length) {
+                return null;
+            }
+            
+            return equivalents[index];
+        }
+        
+        private void dumpEquivalents(int character, Vector equivs)
+        {
+            int count = equivs.size();
+            
+            System.out.println(Utility.hex(character, 6) + " - " + count + ":");
+            
+            for (int i = 0; i < count; i += 1) {
+                String equiv = (String) equivs.elementAt(i);
+                int codePoints = UTF16.countCodePoint(equiv);
+                
+                for (int c = 0; c < codePoints; c += 1) {
+                    if (c > 0) {
+                        System.out.print(" ");
+                    }
+                    
+                    System.out.print(Utility.hex(UTF16.charAt(equiv, c), 6));
+                }
+                
+                System.out.println();
+            }
+            
+            System.out.println();
+        }
+        
+        private int composed;
+        private String[] equivalents = null;
+    }
+    
+    public CanonicalCharacterData()
+    {
+        // nothing to do...
+    }
+    
+    public void add(int character)
+    {
+        int script = UScript.getScript(character);
+        Vector recordVector = recordVectors[script];
+        
+        if (recordVector == null) {
+            recordVector = recordVectors[script] = new Vector();
+        }
+        
+        recordVector.add(new Record(character, script));
+    }
+    
+    public int getMaxEquivalents(int script)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT) {
+            return 0;
+        }
+        
+        return maxEquivalents[script];
+    }
+    
+    public Record getRecord(int script, int index)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT) {
+            return null;
+        }
+        
+        Vector recordVector = recordVectors[script];
+        
+        if (recordVector == null || index < 0 || index >= recordVector.size()) {
+            return null;
+        }
+        
+        return (Record) recordVector.elementAt(index);
+    }
+    
+    public int countRecords(int script)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT ||
+            recordVectors[script] == null) {
+            return 0;
+        }
+        
+        return recordVectors[script].size();
+    }
+ 
+    public static CanonicalCharacterData factory(UnicodeSet characterSet)
+    {
+        int charCount = characterSet.size();
+        CanonicalCharacterData data = new CanonicalCharacterData();
+        
+        System.out.println("There are " + charCount + " characters with a canonical decomposition.");
+        
+        for (int i = 0; i < charCount; i += 1) {
+            data.add(characterSet.charAt(i));
+        }
+        
+        return data;
+    }
+
+    private static int compareEquivalents(String a, String b)
+    {
+        int result = UTF16.countCodePoint(a) - UTF16.countCodePoint(b);
+            
+        if (result == 0) {
+            return a.compareTo(b);
+        }
+            
+        return result;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    private static void sortEquivalents(String[] equivalents, Vector unsorted)
+    {
+        int nEquivalents = equivalents.length;
+        
+        for (int e = 0; e < nEquivalents; e += 1) {
+            String v = (String) unsorted.elementAt(e);
+            int i;
+            
+            for (i = e - 1; i >= 0; i -= 1) {
+                if (compareEquivalents(v, equivalents[i]) >= 0) {
+                  break;
+                }
+
+                equivalents[i + 1] = equivalents[i];
+            }
+
+            equivalents[i + 1] = v;
+       }
+    }
+            
+    private Vector recordVectors[] = new Vector[UScript.CODE_LIMIT];
+    private int maxEquivalents[] = new int[UScript.CODE_LIMIT];
+
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ClassTable.java b/src/com/ibm/icu/dev/tool/layout/ClassTable.java
new file mode 100644
index 0000000..68bae04
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ClassTable.java
@@ -0,0 +1,237 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+
+import com.ibm.icu.impl.Utility;
+
+public class ClassTable implements LookupSubtable
+{
+    static class ClassEntry
+    {
+        private int glyphID;
+        private int classID;
+        
+        public ClassEntry(int glyphID, int classID)
+        {
+            this.glyphID = glyphID;
+            this.classID = classID;
+        }
+        
+        public int getGlyphID()
+        {
+            return glyphID;
+        }
+        
+        public int getClassID()
+        {
+            return classID;
+        }
+        
+        public int compareTo(ClassEntry that)
+        {
+            return this.glyphID - that.glyphID;
+        }
+        
+        //
+        // Straight insertion sort from Knuth vol. III, pg. 81
+        //
+        public static void sort(ClassEntry[] table, Vector unsorted)
+        {
+            for (int e = 0; e < table.length; e += 1) {
+                int i;
+                ClassEntry v = (ClassEntry) unsorted.elementAt(e);
+
+                for (i = e - 1; i >= 0; i -= 1) {
+                    if (v.compareTo(table[i]) >= 0) {
+                      break;
+                    }
+
+                    table[i + 1] = table[i];
+                }
+
+                table[i + 1] = v;
+            }
+        }
+        
+        public static int search(ClassEntry[] table, int glyphID)
+        {
+            int log2 = Utility.highBit(table.length);
+            int power = 1 << log2;
+            int extra = table.length - power;
+            int probe = power;
+            int index = 0;
+
+            if (table[extra].glyphID <= glyphID) {
+              index = extra;
+            }
+
+            while (probe > (1 << 0)) {
+                probe >>= 1;
+
+                if (table[index + probe].glyphID <= glyphID) {
+                    index += probe;
+                }
+            }
+
+            if (table[index].glyphID == glyphID) {
+                return index;
+            }
+
+            return -1;
+        }
+    }
+    
+    static class ClassRangeRecord
+    {
+        private int startGlyphID;
+        private int endGlyphID;
+        private int classID;
+        
+        public ClassRangeRecord(int startGlyphID, int endGlyphID, int classID)
+        {
+            this.startGlyphID = startGlyphID;
+            this.endGlyphID = endGlyphID;
+            this.classID = classID;
+        }
+        
+        public void write(OpenTypeTableWriter writer)
+        {
+            System.out.print(Utility.hex(startGlyphID, 6));
+            System.out.print(" - ");
+            System.out.print(Utility.hex(endGlyphID, 6));
+            System.out.print(": ");
+            System.out.println(classID);
+            
+            writer.writeData(startGlyphID);
+            writer.writeData(endGlyphID);
+            writer.writeData(classID);
+        }
+    }
+    
+    private Vector classMap;
+    private ClassEntry[] classTable;
+    private int snapshotSize;
+    
+    public ClassTable()
+    {
+        this.classMap = new Vector();
+        this.classTable = null;
+        this.snapshotSize = -1;
+        
+    }
+    
+    public void addMapping(int charID, int classID)
+    {
+        ClassEntry entry = new ClassEntry(charID, classID);
+        
+        classMap.addElement(entry);
+    }
+    
+    public void addMapping(int startCharID, int endCharID, int classID)
+    {
+        for (int charID = startCharID; charID <= endCharID; charID += 1) {
+            addMapping(charID, classID);
+        }
+    }
+    
+    public int getGlyphClassID(int glyphID)
+    {
+        int index = ClassEntry.search(classTable, glyphID);
+        
+        if (index >= 0) {
+            return classTable[index].getClassID();
+        }
+        
+        return 0;
+    }
+    
+    public void snapshot()
+    {
+        if (snapshotSize != classMap.size()) {
+            snapshotSize = classMap.size();
+            classTable = new ClassEntry[snapshotSize];
+
+            ClassEntry.sort(classTable, classMap);
+        }
+    }
+    
+    public void writeClassTable(OpenTypeTableWriter writer)
+    {
+        snapshot();
+        
+        Vector classRanges = new Vector();
+        int startIndex = 0;
+        
+        while (startIndex < classTable.length) {
+            int startID = classTable[startIndex].getGlyphID();
+            int classID = classTable[startIndex].getClassID();
+            int nextID = startID;
+            int endID = startID;
+            int endIndex;
+            
+            for (endIndex = startIndex; endIndex < classTable.length; endIndex += 1) {
+                if (classTable[endIndex].getGlyphID() != nextID ||
+                    classTable[endIndex].getClassID() != classID) {
+                    break;
+                }
+                
+                endID = nextID;
+                nextID += 1;
+            }
+            
+            if (classID != 0) {
+                ClassRangeRecord range = new ClassRangeRecord(startID, endID, classID);
+                
+                classRanges.addElement(range);
+            }
+            
+            startIndex = endIndex;
+        }
+        
+        writer.writeData(2);                    // table format = 2 (class ranges)
+        writer.writeData(classRanges.size());   // class range count
+        
+        for (int i = 0; i < classRanges.size(); i += 1) {
+            ClassRangeRecord range = (ClassRangeRecord) classRanges.elementAt(i);
+            
+            range.write(writer);
+        }
+    }
+
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        int singleSubstitutionsBase = writer.getOutputIndex();
+        int coverageTableIndex;
+        
+        snapshot();
+        
+        writer.writeData(2); // format 2: Specified output glyph indices
+        coverageTableIndex = writer.getOutputIndex();
+        writer.writeData(0); // offset to coverage table (fixed later)
+        writer.writeData(classTable.length); // number of glyphIDs in substitution array
+        
+        for (int i = 0; i < classTable.length; i += 1) {
+            writer.writeData(classTable[i].getClassID());
+        }
+        
+        writer.fixOffset(coverageTableIndex, singleSubstitutionsBase);
+        writer.writeData(1);
+        writer.writeData(classTable.length);
+        
+        for (int i = 0; i < classTable.length; i += 1) {
+            writer.writeData(classTable[i].getGlyphID());
+        }
+    }
+}
+    
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/DecompTable.java b/src/com/ibm/icu/dev/tool/layout/DecompTable.java
new file mode 100644
index 0000000..4ef51db
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/DecompTable.java
@@ -0,0 +1,184 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.text.UTF16;
+import java.util.Vector;
+
+/**
+ * @author Owner
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class DecompTable implements LookupSubtable
+{
+    static class DecompEntry
+    {
+        private int composed;
+        private int[] decomp;
+        
+        DecompEntry(int composedChar, String decomposition)
+        {
+            int decompCount = UTF16.countCodePoint(decomposition);
+            
+            composed = composedChar;
+            decomp = new int[decompCount];
+            
+            int out = 0, cp;
+            
+            for (int in = 0; in < decomposition.length(); in += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(decomposition, in);
+                decomp[out++] = cp;
+            }
+        }
+        
+        public int getComposedCharacter()
+        {
+            return composed;
+        }
+        
+        public int[] getDecomposition()
+        {
+            return decomp;
+        }
+        
+        public int getDecompositionCount()
+        {
+            return decomp.length;
+        }
+        
+        public int getDecomposedCharacter(int i)
+        {
+            if (i >= 0 && i < decomp.length) {
+                return decomp[i];
+            }
+            
+            return -1;
+        }
+        
+        public int compareTo(DecompEntry that)
+        {
+            return this.composed - that.composed;
+        }
+        
+        //
+        // Straight insertion sort from Knuth vol. III, pg. 81
+        //
+        public static void sort(DecompEntry[] table, Vector decompVector)
+        {
+            for (int j = 0; j < table.length; j += 1) {
+                int i;
+                DecompEntry v = (DecompEntry) decompVector.elementAt(j);
+
+                for (i = j - 1; i >= 0; i -= 1) {
+                    if (v.compareTo(table[i]) >= 0) {
+                      break;
+                    }
+
+                    table[i + 1] = table[i];
+                }
+
+                table[i + 1] = v;
+            }
+        }
+    }
+    
+    private Vector decompVector;
+    private DecompEntry[] decompEntries;
+    private int snapshotSize;
+    
+    public DecompTable()
+    {
+        decompVector = new Vector();
+        decompEntries = null;
+        snapshotSize = -1;
+    }
+    
+    public void add(int composed, String decomposition)
+    {
+        DecompEntry entry = new DecompEntry(composed, decomposition);
+        
+        decompVector.addElement(entry);
+    }
+    
+    public int getComposedCharacter(int i)
+    {
+        if (i < 0 || i > decompEntries.length) {
+            return -1;
+        }
+        
+        return decompEntries[i].getComposedCharacter();
+    }
+    
+    public int getDecompositionCount(int i)
+    {
+        if (i < 0 || i > decompEntries.length) {
+            return -1;
+        }
+        
+        return decompEntries[i].getDecompositionCount();
+    }
+    
+    public boolean hasEntries()
+    {
+        return decompVector.size() > 0;
+    }
+    
+    private void snapshot()
+    {
+        if (snapshotSize != decompVector.size()) {
+            snapshotSize = decompVector.size();
+            decompEntries = new DecompEntry[snapshotSize];
+            DecompEntry.sort(decompEntries, decompVector);
+        }
+    }
+
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        snapshot();
+        
+        int multipleSubstitutionsBase = writer.getOutputIndex();
+        int coverageTableIndex, sequenceOffsetIndex;
+        int sequenceCount = decompEntries.length;
+        
+        writer.writeData(1); // format = 1
+        
+        coverageTableIndex = writer.getOutputIndex();
+        writer.writeData(0); // coverage table offset (fixed later)
+        
+        writer.writeData(sequenceCount);
+        
+        sequenceOffsetIndex = writer.getOutputIndex();
+        for (int s = 0; s < sequenceCount; s += 1) {
+            writer.writeData(0); // offset to sequence table (fixed later);
+        }
+        
+        for (int s = 0; s < sequenceCount; s += 1) {
+            DecompEntry entry = decompEntries[s];
+            int decompCount = entry.getDecompositionCount();
+            
+            writer.fixOffset(sequenceOffsetIndex++, multipleSubstitutionsBase);
+            
+            writer.writeData(decompCount); // glyphCount
+            
+            for (int g = 0; g < decompCount; g += 1) {
+                writer.writeData(entry.getDecomposedCharacter(g));
+            }
+        }
+        
+        // write a format 1 coverage table
+        writer.fixOffset(coverageTableIndex, multipleSubstitutionsBase);
+        writer.writeData(1); // format = 1
+        writer.writeData(sequenceCount);  // glyphCount
+        
+        for (int i = 0; i < sequenceCount; i += 1) {
+            writer.writeData(decompEntries[i].getComposedCharacter());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/Feature.java b/src/com/ibm/icu/dev/tool/layout/Feature.java
new file mode 100644
index 0000000..7acf87d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/Feature.java
@@ -0,0 +1,59 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+
+class Feature extends TaggedRecord
+{
+    private int[] lookupIndices;
+    private int lookupCount;
+    private int featureIndex;
+    
+    public Feature(String theFeatureTag)
+    {
+        super(theFeatureTag);
+        
+        lookupIndices = new int[10];
+        lookupCount = 0;
+        featureIndex = -1;
+    }
+    
+    public void addLookup(int theLookupIndex)
+    {
+        if (lookupCount >= lookupIndices.length) {
+            int[] newLookupIndices = new int[lookupIndices.length + 5];
+            
+            System.arraycopy(lookupIndices, 0, newLookupIndices, 0, lookupIndices.length);
+            lookupIndices = newLookupIndices;
+        }
+        
+        lookupIndices[lookupCount] = theLookupIndex;
+        lookupCount += 1;
+    }
+    
+    public void writeFeature(OpenTypeTableWriter writer)
+    {
+        writer.writeData(0);      // featureParams (must be NULL)
+        
+        writer.writeData(lookupCount);
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.writeData(lookupIndices[i]);
+        }
+    }
+    
+    public int getFeatureIndex()
+    {
+        return featureIndex;
+    }
+    
+    public void setFeatureIndex(int index)
+    {
+        featureIndex = index;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/FeatureList.java b/src/com/ibm/icu/dev/tool/layout/FeatureList.java
new file mode 100644
index 0000000..e7e61d5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/FeatureList.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class FeatureList
+{
+    
+    private Feature[] features;
+    private int featureCount;
+    
+    public FeatureList()
+    {
+        features = new Feature[10];
+        featureCount = 0;
+    }
+        
+    public void addFeature(Feature feature)
+    {
+        if (featureCount >= features.length) {
+            Feature[] newFeatures = new Feature[features.length + 5];
+            
+            System.arraycopy(features, 0, newFeatures, 0, features.length);
+            features = newFeatures;
+        }
+        
+        features[featureCount++] = feature;
+    }
+    
+    public void finalizeFeatureList()
+    {
+        TaggedRecord.sort(features, featureCount);
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            features[i].setFeatureIndex(i);
+        }
+    }
+    
+    public void writeFeaturetList(OpenTypeTableWriter writer)
+    {
+        System.out.print("writing feature list...");
+        
+        int featureListBase = writer.getOutputIndex();
+        
+        writer.writeData(featureCount);
+        
+        int featureRecordOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            String tag = features[i].getTag();
+            
+            System.out.print(" '" + tag + "'");
+            writer.writeTag(tag);
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            // fix the offset in the featureRecordArray.
+            // The "+2" skips over the tag and the "+3"
+            // skips to the next featureRecord entry
+            writer.fixOffset(featureRecordOffset + 2, featureListBase);
+            featureRecordOffset += 3;
+            
+            features[i].writeFeature(writer);
+        }
+        
+        System.out.println();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java b/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
new file mode 100644
index 0000000..e9c13f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
@@ -0,0 +1,67 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+
+
+class GDEFWriter extends OpenTypeTableWriter
+{
+    ClassTable classTable;
+    ClassTable markClassTable;
+    String scriptName;
+    
+    public GDEFWriter(String scriptName, ClassTable classTable, ClassTable markClassTable)
+    {
+        super(1024);
+        this.classTable     = classTable;
+        this.markClassTable = markClassTable;
+        this.scriptName     = scriptName;
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        System.out.println("Writing " + scriptName + " GDEF table...");
+        
+        // 0x0001000 (fixed1) version number
+        writeData(0x0001);
+        writeData(0x0000);
+        
+        int classDefOffset = getOutputIndex();
+        writeData(0); // glyphClassDefOffset (will fix later);
+        writeData(0); // attachListOffset
+        writeData(0); // ligCaretListOffset
+        writeData(0); // markAttachClassDefOffset
+        
+        fixOffset(classDefOffset++, 0);
+        
+        System.out.println("Writing glyph class definition table...");
+        classTable.writeClassTable(this);
+        
+        // skip over attachListOffset, ligCaretListOffset
+        classDefOffset += 2;
+        
+        if (markClassTable != null) {
+            fixOffset(classDefOffset, 0);
+            
+            System.out.println("Writing mark attach class definition table...");
+            markClassTable.writeClassTable(this);
+        }
+
+        output.print("const le_uint8 ");
+        output.print(scriptName);
+        output.println("Shaping::glyphDefinitionTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java b/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
new file mode 100644
index 0000000..c6fcf37
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
@@ -0,0 +1,64 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+
+public class GSUBWriter extends OpenTypeTableWriter
+{
+    private ScriptList scriptList;
+    private FeatureList featureList;
+    private LookupList lookupList;
+    private String scriptName;
+    
+    public GSUBWriter(String theScriptName, ScriptList theScriptList, FeatureList theFeatureList,
+                      LookupList theLookupList)
+    {
+        super(1024);
+        
+        scriptList  = theScriptList;
+        featureList = theFeatureList;
+        lookupList  = theLookupList;
+        scriptName  = theScriptName;
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        System.out.println("writing " + scriptName + " GSUB table...");
+        
+        // 0x00010000 (fixed1) version number
+        writeData(0x0001);
+        writeData(0x0000);
+        
+        int listOffset = getOutputIndex();
+        
+        writeData(0); // script list offset (fixed later)
+        writeData(0); // feature list offset (fixed later)
+        writeData(0); // lookup list offset (fixed later)
+        
+        fixOffset(listOffset++, 0);
+        scriptList.writeScriptList(this);
+        
+        fixOffset(listOffset++, 0);
+        featureList.writeFeaturetList(this);
+        
+        fixOffset(listOffset++, 0);
+        lookupList.writeLookupList(this);
+
+        output.print("const le_uint8 ");
+        output.print(scriptName);
+        output.println("Shaping::glyphSubstitutionTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LanguageData.java b/src/com/ibm/icu/dev/tool/layout/LanguageData.java
new file mode 100644
index 0000000..7895a31
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LanguageData.java
@@ -0,0 +1,186 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Apr 4, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+/**
+ * This class holds the list of languages.
+ * 
+ * @author emader
+ *
+ */
+public class LanguageData extends TagValueData
+{
+    public static class Record
+    {
+        private String tag;
+        private String name;
+        
+        public Record(String tag, String name)
+        {
+            this.tag = tag;
+            this.name = name;
+        }
+        
+        public String tag()
+        {
+            return tag;
+        }
+        
+        public String name()
+        {
+            return name;
+        }
+        
+        public String label()
+        {
+            return TagUtilities.tagLabel(tag);
+        }
+        
+        public String makeTag()
+        {
+            return TagUtilities.makeTag(tag);
+        }
+    }
+        
+    /*
+     * This is temporary data until there is some resolution between
+     * the OpenType language system tags and the ISO and RFC standards...
+     */
+    private Record[] languages =
+    {
+        new Record("",    "null"),
+        new Record("ARA", "Arabic"),
+        new Record("ASM", "Assamese"),
+        new Record("BEN", "Bengali"),
+        new Record("FAR", "Farsi"),
+        new Record("GUJ", "Gujarati"),
+        new Record("HIN", "Hindi"),
+        new Record("IWR", "Hebrew"),
+        new Record("JII", "Yiddish"),
+        new Record("JAN", "Japanese"),
+        new Record("KAN", "Kannada"),
+        new Record("KOK", "Konkani"),
+        new Record("KOR", "Korean"),
+        new Record("KSH", "Kashmiri"),
+        new Record("MAL", "Malayalam (Traditional)"),
+        new Record("MAR", "Marathi"),
+        new Record("MLR", "Malayalam (Reformed)"),
+        new Record("MNI", "Manipuri"),
+        new Record("ORI", "Oriya"),
+        new Record("SAN", "Sanscrit"),
+        new Record("SND", "Sindhi"),
+        new Record("SNH", "Sinhalese"),
+        new Record("SYR", "Syriac"),
+        new Record("TAM", "Tamil"),
+        new Record("TEL", "Telugu"),
+        new Record("THA", "Thai"),
+        new Record("URD", "Urdu"),
+        new Record("ZHP", "Chinese (Phonetic)"),
+        new Record("ZHS", "Chinese (Simplified)"),
+        new Record("ZHT", "Chinese (Traditional)"),
+        
+        // languages added on 03/13/2008
+        // TODO: need to deal with the fact that
+        // these codes should be @draft, and the above
+        // codes should be @final.
+        new Record("AFK", "Afrikaans"),
+        new Record("BEL", "Belarussian"),
+        new Record("BGR", "Bulgarian"),
+        new Record("CAT", "Catalan"),
+        new Record("CHE", "Chechen"),
+        new Record("COP", "Coptic"),
+        new Record("CSY", "Czech"),
+        new Record("DAN", "Danish"),
+        new Record("DEU", "German"),
+        new Record("DZN", "Dzongkha"),
+        new Record("ELL", "Greek"),
+        new Record("ENG", "English"),
+        new Record("ESP", "Spanish"),
+        new Record("ETI", "Estonian"),
+        new Record("EUQ", "Basque"),
+        new Record("FIN", "Finnish"),
+      //new Record("FLE", "Flemish"), // Flemish has the same ISO 639-2 code as Dutch (NLD)
+        new Record("FRA", "French"),
+        new Record("GAE", "Gaelic"),
+        new Record("HAU", "Hausa"),
+        new Record("HRV", "Croation"),
+        new Record("HUN", "Hungarian"),
+        new Record("HYE", "Armenian"),
+        new Record("IND", "Indonesian"),
+        new Record("ITA", "Italian"),
+        new Record("KHM", "Khmer"),
+        new Record("MNG", "Mongolian"),
+        new Record("MTS", "Maltese"),
+        new Record("NEP", "Nepali"),
+        new Record("NLD", "Dutch"),
+        new Record("PAS", "Pashto"),
+        new Record("PLK", "Polish"),
+        new Record("PTG", "Portuguese"),
+        new Record("ROM", "Romanian"),
+        new Record("RUS", "Russian"),
+        new Record("SKY", "Slovak"),
+        new Record("SLV", "Slovenian"),
+        new Record("SQI", "Albanian"),
+        new Record("SRB", "Serbian"),
+        new Record("SVE", "Swedish"),
+        new Record("TIB", "Tibetan"),
+        new Record("TRK", "Turkish"),
+        new Record("WEL", "Welsh")
+    };
+    
+    private int minLanguage = 0;
+    private int maxLanguage = minLanguage + languages.length - 1;
+    
+    public int getMinValue()
+    {
+        return minLanguage;
+    }
+    
+    public int getMaxValue()
+    {
+        return maxLanguage;
+    }
+    
+    public String getTag(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].tag();
+    }
+    
+    public String getTagLabel(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].label();
+    }
+    
+    public String makeTag(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].makeTag();
+    }
+    
+    public String getName(int value) {
+        if (value < minLanguage || value > maxLanguage) {
+            return "(UNKNOWN)";
+        }
+        
+        return languages[value - minLanguage].name();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java b/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
new file mode 100644
index 0000000..ce06a34
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class LigatureEntry
+{
+    private int[] componentChars;
+    private int ligature;
+    
+    public LigatureEntry(int ligature, int[] componentChars, int componentCount)
+    {
+        this.componentChars = new int[componentCount];
+        this.ligature = ligature;
+        System.arraycopy(componentChars, 0, this.componentChars, 0, componentCount);
+}
+    
+    public int getComponentCount()
+    {
+        return componentChars.length;
+    }
+    
+    public int getComponentChar(int componentIndex)
+    {
+        return componentChars[componentIndex];
+    }
+    
+    public int getLigature()
+    {
+        return ligature;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
new file mode 100644
index 0000000..c15209f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
@@ -0,0 +1,25 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class LigatureModuleWriter extends ModuleWriter
+{
+    public LigatureModuleWriter()
+    {
+        super();
+    }
+
+    public void writeTable(OpenTypeTableWriter tableWriter)
+    {
+        tableWriter.writeTable(output);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureTree.java b/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
new file mode 100644
index 0000000..f6f2604
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
@@ -0,0 +1,247 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.Utility;
+
+public class LigatureTree
+{
+    static class Lignode
+    {
+        int target;
+        int ligature = -1;
+        Lignode[] subnodes = null;
+
+        Lignode()
+        {
+            target = -1;
+        }
+
+        Lignode(int target)
+        {
+            this.target = target;
+        }
+
+        boolean isMatch()
+        {
+            return ligature != -1;
+        }
+
+        int getLigature()
+        {
+            return ligature;
+        }
+
+        Lignode subnode(int c)
+        {
+            if (subnodes != null) {
+                int len = subnodes.length;
+
+                if (c <= subnodes[len - 1].target) {
+                    for (int i = 0; i < len; i+= 1) {
+                        int t = subnodes[i].target;
+
+                        if (t > c) {
+                            return null;
+                        }
+
+                        if (t == c) {
+                            return subnodes[i];
+                        }
+                    }
+                }
+            }
+
+            return null;
+        }
+
+        String ligatureString(int[] chars)
+        {
+            StringBuffer result = new StringBuffer();
+            int len = chars.length - 1;
+            
+            for (int i = 0; i < len; i += 1) {
+                if (i > 0) {
+                    result.append(" + ");
+                }
+                
+                result.append(Utility.hex(chars[i], 6));
+           }
+            
+            result.append(" => " + Utility.hex(chars[len], 6));
+            
+            return result.toString();
+        }
+        
+        void insert(int[] chars, int index)
+        {
+            int c = chars[index];
+            int len = chars.length;
+
+            if (len == index + 1) {
+                if (ligature != -1) {
+                    System.out.println("ignoring ligature " + ligatureString(chars) +
+                                       ": already have " + Utility.hex(ligature, 6));
+                } else {
+                    ligature = c;
+                }
+
+                return;
+            }
+
+            if (subnodes == null) {
+                subnodes = new Lignode[1];
+                subnodes[0] = new Lignode(c);
+                subnodes[0].insert(chars, index + 1);
+            } else {
+                int i;
+
+                for (i = 0; i < subnodes.length; i += 1)
+                {
+                    int t = subnodes[i].target;
+
+                    if (t == c) {
+                        subnodes[i].insert(chars, index + 1);
+                        return;
+                    } else if (t > c) {
+                        break;
+                    }
+                }
+
+                Lignode[] nnodes = new Lignode[subnodes.length + 1];
+
+                if (i > 0) {
+                    System.arraycopy(subnodes, 0, nnodes, 0, i);
+                }
+
+                nnodes[i] = new Lignode(c);
+
+                if (i < subnodes.length) {
+                    System.arraycopy(subnodes, i, nnodes, i + 1, subnodes.length - i);
+                }
+
+                subnodes = nnodes;
+
+                subnodes[i].insert(chars, index + 1);
+            }
+        }
+        
+        public void walk(TreeWalker walker)
+        {
+            if (target != -1) {
+                walker.down(target);
+            }
+            
+            if (subnodes != null) {
+                for (int i = 0; i < subnodes.length; i += 1)
+                {
+                    subnodes[i].walk(walker);
+                }
+            }
+            
+            if (ligature != -1) {
+                walker.ligature(ligature);
+            }
+                
+            walker.up();
+        }
+
+        static final String ind = "                                      ";
+
+        /*
+         * Write debugging information to w, starting at the provided indentation level.
+         */
+        public void dump(Writer w, int indent)
+        {
+            String tab = ind.substring(0, Math.min(indent, ind.length()));
+
+            try {
+                w.write(tab);
+                if (target != -1) {
+                    w.write(Utility.hex(target, 6));
+                }
+                
+                if (ligature != -1)
+                {
+                    w.write(" --> ");
+                    w.write(Utility.hex(ligature, 6));
+                }
+                
+                w.write("\n");
+                
+                if (subnodes != null) {
+                    w.write(tab);
+                    w.write("{\n");
+                    indent += 4;
+                    
+                    for (int i = 0; i < subnodes.length; i += 1) {
+                        subnodes[i].dump(w, indent);
+                    }
+                    
+                    w.write(tab);
+                    w.write("}\n");
+                }
+            } catch (IOException e) {
+                System.out.println(e);
+            }
+        }
+
+    }
+
+    private Lignode root = new Lignode();
+    
+    public LigatureTree()
+    {
+        // anything?
+    }
+
+    private int[] toIntArray(String s)
+    {
+        int count = UTF16.countCodePoint(s);
+        int[] result = new int[count];
+        
+        for (int i = 0; i < count; i += 1) {
+            result[i] = UTF16.charAt(s, i);
+        }
+        
+        return result;
+    }
+
+    public void insert(String string)
+    {
+        root.insert(toIntArray(string), 0);
+    }
+    
+    public void insert(int[] chars)
+    {
+        root.insert(chars, 0);
+    }
+    
+    public void walk(TreeWalker walker)
+    {
+        root.walk(walker);
+        walker.done();
+    }
+    
+    public void dump()
+    {
+        PrintWriter pw = new PrintWriter(System.out);
+        
+        root.dump(pw, 0);
+        pw.flush();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java b/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
new file mode 100644
index 0000000..f687e4f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.Vector;
+
+import com.ibm.icu.impl.Utility;
+
+public class LigatureTreeWalker extends TreeWalker implements LookupSubtable
+{
+    protected int[] componentChars;
+    protected int componentCount;
+    protected int lastFirstComponent;
+
+    protected Vector ligatureSets;
+    protected Vector ligatureSet;
+    
+    public LigatureTreeWalker()
+    {
+        componentChars = new int[30];
+        componentCount = 0;
+        lastFirstComponent = -1;
+        ligatureSet = null;
+        ligatureSets = new Vector();
+    }
+
+    public void down(int ch)
+    {
+        componentChars[componentCount] = ch;
+        componentCount += 1;
+    }
+
+    public void up()
+    {
+        if (componentCount > 0) {
+            componentCount -= 1;
+        }
+    }
+
+    public void ligature(int lig)
+    {
+        int firstComponent = componentChars[0];
+
+        if (lastFirstComponent != firstComponent) {
+            if (ligatureSet != null) {
+                ligatureSets.addElement(ligatureSet);
+            }
+
+            ligatureSet = new Vector();
+            lastFirstComponent = firstComponent;
+        }
+
+        ligatureSet.addElement(new LigatureEntry(lig, componentChars, componentCount));
+    }
+
+    public void done()
+    {
+        if (ligatureSet != null) {
+            ligatureSets.addElement(ligatureSet);
+        }
+    }
+    protected int firstComponentChar(int ligatureSetIndex)
+    {
+        Vector aLigatureSet = (Vector) ligatureSets.elementAt(ligatureSetIndex);
+        LigatureEntry firstEntry = (LigatureEntry) aLigatureSet.elementAt(0);
+
+        return firstEntry.getComponentChar(0);
+    }
+
+    protected void writeCoverageTable(OpenTypeTableWriter writer)
+    {
+        int ligatureSetCount = ligatureSets.size();
+
+        writer.writeData(1);
+        writer.writeData(ligatureSetCount);
+
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            writer.writeData(firstComponentChar(set));
+        }
+    }
+    
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        int coverageOffset, ligatureSetOffset, ligatureTableOffset;
+        int ligatureSubstitutionBase = writer.getOutputIndex();
+        int ligatureSetCount = ligatureSets.size();
+        
+        //System.out.println("Writing " + tableName + "...");
+
+        writer.writeData(1);   // substFormat
+        
+        coverageOffset = writer.getOutputIndex();
+        writer.writeData(0);   // coverageTableOffset (will fix later)
+        
+        writer.writeData(ligatureSetCount);
+
+        ligatureSetOffset = writer.getOutputIndex();
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            writer.writeData(0);  // ligatureSet offset - will fix later
+        }
+        
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            System.out.print(Utility.hex(firstComponentChar(set), 6) + ": ");
+            
+            Vector aLigatureSet = (Vector) ligatureSets.elementAt(set);
+            int ligatureCount = aLigatureSet.size();
+            int ligatureSetAddress = writer.getOutputIndex();
+            
+            System.out.println(ligatureCount + " ligatures.");
+            
+            writer.fixOffset(ligatureSetOffset++, ligatureSubstitutionBase);
+            writer.writeData(ligatureCount);
+            
+            ligatureTableOffset = writer.getOutputIndex();
+            for (int lig = 0; lig < ligatureCount; lig += 1) {
+                writer.writeData(0);  // ligatureTableOffset (will fix later)
+            }
+            
+            for (int lig = 0; lig < ligatureCount; lig += 1) {
+                LigatureEntry entry = (LigatureEntry) aLigatureSet.elementAt(lig);
+                int compCount = entry.getComponentCount();
+                
+                writer.fixOffset(ligatureTableOffset++, ligatureSetAddress);
+                writer.writeData(entry.getLigature());
+                writer.writeData(compCount);
+                
+                for (int comp = 1; comp < compCount; comp += 1) {
+                    writer.writeData(entry.getComponentChar(comp));
+                }
+            }
+        }
+        
+        writer.fixOffset(coverageOffset, ligatureSubstitutionBase); 
+        writeCoverageTable(writer);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/Lookup.java b/src/com/ibm/icu/dev/tool/layout/Lookup.java
new file mode 100644
index 0000000..cfca302
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/Lookup.java
@@ -0,0 +1,89 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public /*abstract*/ class Lookup
+{
+    private int lookupType;
+    private int lookupFlags;
+    private LookupSubtable[] subtables;
+    private int subtableCount;
+    
+    // Lookup flags
+    public final static int LF_ReservedBit          = 0x0001;
+    public final static int LF_IgnoreBaseGlyphs     = 0x0002;
+    public final static int LF_IgnoreLigatures      = 0x0004;
+    public final static int LF_IgnoreMarks          = 0x0008;
+    public final static int LF_ReservedMask         = 0x00F0;
+    public final static int LF_MarkAttachTypeMask   = 0xFF00;
+    public final static int LF_MarkAttachTypeShift  = 8;
+    
+    // GSUB lookup types
+    public final static int GSST_Single          = 1;
+    public final static int GSST_Multiple        = 2;
+    public final static int GSST_Alternate       = 3;
+    public final static int GSST_Ligature        = 4;
+    public final static int GSST_Context         = 5;
+    public final static int GSST_ChainingContext = 6;
+
+    // GPOS lookup types
+    public final static int GPST_Single          = 1;
+    public final static int GPST_Pair            = 2;
+    public final static int GPST_Cursive         = 3;
+    public final static int GPST_MarkToBase      = 4;
+    public final static int GPST_MarkToLigature  = 5;
+    public final static int GPST_MarkToMark      = 6;
+    public final static int GPST_Context         = 7;
+    public final static int GPST_ChainingContext = 8;
+    
+    public Lookup(int theLookupType, int theLookupFlags)
+    {
+        lookupType = theLookupType;
+        lookupFlags = theLookupFlags;
+        
+        subtables = new LookupSubtable[10];
+        subtableCount = 0;
+    }
+    
+    public void addSubtable(LookupSubtable subtable)
+    {
+        if (subtableCount >= subtables.length) {
+            LookupSubtable[] newSubtables = new LookupSubtable[subtables.length + 5];
+            
+            System.arraycopy(subtables, 0, newSubtables, 0, subtables.length);
+            subtables = newSubtables;
+        }
+        
+        subtables[subtableCount] = subtable;
+        subtableCount += 1;
+    }
+    
+    public void writeLookup(OpenTypeTableWriter writer)
+    {
+        int lookupBase = writer.getOutputIndex();
+        
+        writer.writeData(lookupType);
+        writer.writeData(lookupFlags);
+        writer.writeData(subtableCount);
+        
+        int subtableOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < subtableCount; i += 1) {
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < subtableCount; i += 1) {
+            writer.fixOffset(subtableOffset++, lookupBase);
+            subtables[i].writeLookupSubtable(writer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LookupList.java b/src/com/ibm/icu/dev/tool/layout/LookupList.java
new file mode 100644
index 0000000..7de5711
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LookupList.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class LookupList
+{
+    private Lookup[] lookups;
+    private int lookupCount;
+    
+    public LookupList()
+    {
+        lookups = new Lookup[10];
+        lookupCount = 0;
+    }
+    
+    public int addLookup(Lookup lookup)
+    {
+        if (lookupCount >= lookups.length) {
+            Lookup[] newLookups = new Lookup[lookups.length + 5];
+            
+            System.arraycopy(lookups, 0, newLookups, 0, lookups.length);
+            lookups = newLookups;
+        }
+        
+        lookups[lookupCount] = lookup;
+        
+        return lookupCount++;
+    }
+    
+    public void writeLookupList(OpenTypeTableWriter writer)
+    {
+        System.out.println("writing lookup list...");
+        
+        int lookupListBase = writer.getOutputIndex();
+        
+        writer.writeData(lookupCount);
+        
+        int lookupOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.writeData(0); // Offset to lookup (fixed later);
+        }
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.fixOffset(lookupOffset++, lookupListBase);
+            lookups[i].writeLookup(writer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java b/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
new file mode 100644
index 0000000..1ab0143
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
@@ -0,0 +1,16 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public interface LookupSubtable
+{
+    void writeLookupSubtable(OpenTypeTableWriter writer);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
new file mode 100644
index 0000000..476e076
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.BufferedReader;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Date;
+
+import com.ibm.icu.text.MessageFormat;
+
+public class ModuleWriter
+{
+    private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/"; 
+        
+    public ModuleWriter()
+    {
+        wroteDefine = false;
+        output = null;
+    }
+
+    public void openFile(String outputFileName) {
+        try
+        {
+            output = new PrintStream(
+                new FileOutputStream(BUILDER_FILE_PATH+outputFileName));
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return;
+        }
+    
+        wroteDefine = false;
+        System.out.println("Writing module " + outputFileName + "...");
+    }
+
+    public void writeHeader(String define, String[] includeFiles)
+    {
+        writeHeader(define, includeFiles, null);
+    }
+    
+    public void writeHeader(String define, String[] includeFiles, String brief)
+    {
+        MessageFormat format = new MessageFormat(moduleHeader);
+        Object args[] = {new Date(System.currentTimeMillis())};
+
+        output.print(format.format(args));
+        
+        if (define != null) {
+            wroteDefine = true;
+            output.print("#ifndef ");
+            output.println(define);
+            
+            output.print("#define ");
+            output.println(define);
+            
+            output.println();
+        }
+        
+        if (includeFiles != null) {
+            for (int i = 0; i < includeFiles.length; i += 1) {
+                output.print("#include \"");
+                output.print(includeFiles[i]);
+                output.println("\"");
+            }
+            
+            output.println();
+        }
+        
+        if (brief != null) {
+            output.print(brief);
+        }
+        
+        output.println(moduleBegin);
+    }
+
+    public void writeTrailer() {
+        output.print(moduleTrailer);
+        
+        if (wroteDefine) {
+            output.println("#endif");
+            
+        }
+    }
+
+    public void closeFile() {
+        System.out.println("Done.");
+        output.close();
+    }
+
+    protected boolean wroteDefine;
+    
+    protected PrintStream output;
+    
+    protected BufferedReader reader;
+    protected PrintStream updateFile;
+    protected int previousTotalScripts;
+    protected int previousTotalLanguages;
+    protected ArrayList scriptVersionNumber = new ArrayList();
+    protected ArrayList languageVersionNumber = new ArrayList();
+    
+    public void openScriptAndLanguages(String name){
+        try
+        {
+            updateFile = new PrintStream(new FileOutputStream(BUILDER_FILE_PATH+name));
+        } catch (IOException e) {
+            System.out.println("? Could not open " + name + " for writing.");
+            return;
+        }
+    }
+    
+    public void readFile(String file, String what){
+        try
+        {
+           reader = new BufferedReader(new FileReader(BUILDER_FILE_PATH+file));
+           String inputText = "";
+           String versionToAdd = "";
+           while((inputText=reader.readLine())!=null){
+               if(what.equals("script") && inputText.indexOf("Script=") >= 0){
+                   previousTotalScripts = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
+               }else if(what.equals("languages") && inputText.indexOf("Language=") >= 0){
+                   previousTotalLanguages = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
+               }else if(what.equals("script") && inputText.indexOf("Scripts={") >= 0){
+                   while((versionToAdd=reader.readLine()).indexOf("}") == -1){
+                       scriptVersionNumber.add(versionToAdd);
+                   }
+               }else if(what.equals("languages") && inputText.indexOf("Languages={") >= 0){
+                   while((versionToAdd=reader.readLine()).indexOf("}") == -1){
+                       languageVersionNumber.add(versionToAdd);
+                   }
+               }
+           }
+           reader.close();
+           
+        } catch (IOException e) {
+            System.out.println("? Could not open " + file + " for reading.");
+            return;
+        }
+    }
+    
+    
+    
+    protected static final String moduleHeader =
+        "/*\n" +
+        " *\n" +
+        " * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +
+        " *\n" +
+        " * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS\n" +
+        " * YOU REALLY KNOW WHAT YOU''RE DOING.\n" +
+        " *\n" +
+        " * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +
+        " */\n" +
+        "\n";
+
+    protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";
+
+    protected static final String moduleTrailer = "U_NAMESPACE_END\n";
+
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java b/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
new file mode 100644
index 0000000..a16d831
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
@@ -0,0 +1,128 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import java.io.PrintStream;
+
+import com.ibm.icu.impl.Utility;
+
+abstract class OpenTypeTableWriter
+{
+    static class OpenTypeTableDumper
+    {
+        private short[] table;
+        private int tableLength;
+        
+        OpenTypeTableDumper(short[] data, int outputIndex)
+        {
+            table = data;
+            tableLength = outputIndex;
+        }
+        
+        int length()
+        {
+            return tableLength;
+        }
+        
+        void appendValue(StringBuffer line, int index)
+        {
+            short value = table[index];
+            
+            line.append("0x");
+            line.append(Utility.hex((value >> 8) & 0xFF, 2));
+            line.append(", ");
+
+            line.append("0x");
+            line.append(Utility.hex(value & 0xFF, 2));
+        }
+
+        void dumpTable(PrintStream output, int valuesPerLine) {
+            StringBuffer line = new StringBuffer("    "); // four spaces
+            int maxIndex = length();
+        
+            for (int i = 0; i < maxIndex; i += 1) {
+                
+                if (i > 0 && i % valuesPerLine == 0) {
+                    output.println(line.toString());
+                    line.setLength(4);
+                }
+        
+                appendValue(line, i);
+                line.append(", ");
+            }
+        
+            line.setLength(line.length() - 2);
+        
+            output.println(line.toString());
+        }
+    }
+            
+    protected short[] data;
+    protected int outputIndex;
+
+    public OpenTypeTableWriter(int initialBufferSize)
+    {
+        data = new short[initialBufferSize];
+        outputIndex = 0;
+    }
+    
+    public OpenTypeTableWriter()
+    {
+        this(1024);
+    }
+    
+    public int getOutputIndex()
+    {
+        return outputIndex;
+    }
+    
+    public void writeData(int value)
+    {
+        if (outputIndex >= data.length)
+        {
+            short[] newData = new short[data.length + 512];
+            
+            System.arraycopy(data, 0, newData, 0, data.length);
+            
+            data = newData;
+        }
+        
+        data[outputIndex] = (short) value;
+        outputIndex += 1;
+    }
+    
+    public void writeTag(String tag)
+    {
+        char[] charArray = {'\0', '\0', '\0', '\0'};
+        int max = Math.min(tag.length(), 4);
+        
+        tag.getChars(0, max, charArray, 0);
+        
+        writeData(((charArray[0] & 0xFF) << 8) + (charArray[1] & 0xFF));
+        writeData(((charArray[2] & 0xFF) << 8) + (charArray[3] & 0xFF));
+    }
+    
+    public void fixOffset(int offset, int base)
+    {
+        // * 2 to convert from short to byte index
+        data[offset] = (short) ((outputIndex - base) * 2);
+    }
+    
+    public void dumpTable(PrintStream output, int valuesPerLine)
+    {
+        OpenTypeTableDumper dumper = new OpenTypeTableDumper(data, outputIndex);
+        
+        dumper.dumpTable(output, valuesPerLine);
+    }
+    
+    abstract public void writeTable(PrintStream output);
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java b/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
new file mode 100644
index 0000000..93e111a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+/**
+ * @author emader
+ *
+ */
+public class OpenTypeTagBuilder
+{
+    private static String[] tableTags = {
+        "acnt",
+        "avar",
+        "BASE",
+        "bdat",
+        "bhed",
+        "bloc",
+        "bsln",
+        "CFF ",
+        "cmap",
+        "cvar",
+        "cvt ",
+        "DSIG",
+        "EBDT",
+        "EBLC",
+        "EBSC",
+        "fdsc",
+        "feat",
+        "fmtx",
+        "fpgm",
+        "fvar",
+        "gasp",
+        "GDEF",
+        "glyf",
+        "GPOS",
+        "GSUB",
+        "gvar",
+        "hdmx",
+        "head",
+        "hhea",
+        "hmtx",
+        "hsty",
+        "just",
+        "JSTF",
+        "kern",
+        "lcar",
+        "loca",
+        "LTSH",
+        "maxp",
+        "mort",
+        "morx",
+        "name",
+        "opbd",
+        "OS/2",
+        "PCLT",
+        "post",
+        "prep",
+        "prop",
+        "trak",
+        "VDMX",
+        "vhea",
+        "vmtx",
+        "VORG",
+        "Zapf"
+    };
+
+    private static String[] featureTags = {
+        "aalt",
+        "abvf",
+        "abvm",
+        "abvs",
+        "afrc",
+        "akhn",
+        "blwf",
+        "blwm",
+        "blws",
+        "calt",
+        "case",
+        "ccmp",
+        "clig",
+        "cpsp",
+        "cswh",
+        "curs",
+        "c2sc",
+        "c2pc",
+        "dist",
+        "dlig",
+        "dnom",
+        "expt",
+        "falt",
+        "fin2",
+        "fin3",
+        "fina",
+        "frac",
+        "fwid",
+        "half",
+        "haln",
+        "halt",
+        "hist",
+        "hkna",
+        "hlig",
+        "hngl",
+        "hwid",
+        "init",
+        "isol",
+        "ital",
+        "jalt",
+        "jp78",
+        "jp83",
+        "jp90",
+        "kern",
+        "lfbd",
+        "liga",
+        "ljmo",
+        "lnum",
+        "locl",
+        "mark",
+        "med2",
+        "medi",
+        "mgrk",
+        "mkmk",
+        "mset",
+        "nalt",
+        "nlck",
+        "nukt",
+        "numr",
+        "onum",
+        "opbd",
+        "ordn",
+        "ornm",
+        "palt",
+        "pcap",
+        "pnum",
+        "pref",
+        "pres",
+        "pstf",
+        "psts",
+        "pwid",
+        "qwid",
+        "rand",
+        "rlig",
+        "rphf",
+        "rtbd",
+        "rtla",
+        "ruby",
+        "salt",
+        "sinf",
+        "size",
+        "smcp",
+        "smpl",
+        "ss01",
+        "ss02",
+        "ss03",
+        "ss04",
+        "ss05",
+        "ss06",
+        "ss07",
+        "ss08",
+        "ss09",
+        "ss10",
+        "ss11",
+        "ss12",
+        "ss13",
+        "ss14",
+        "ss15",
+        "ss16",
+        "ss17",
+        "ss18",
+        "ss19",
+        "ss20",
+        "subs",
+        "sups",
+        "swsh",
+        "titl",
+        "tjmo",
+        "tnam",
+        "tnum",
+        "trad",
+        "twid",
+        "unic",
+        "valt",
+        "vatu",
+        "vert",
+        "vhal",
+        "vjmo",
+        "vkna",
+        "vkrn",
+        "vpal",
+        "vrt2",
+        "zero"
+    };
+    
+    private static String tagLabel(String tag)
+    {
+        StringBuffer result = new StringBuffer();
+        String upperTag = tag.toUpperCase();
+        
+        for (int i = 0; i < upperTag.length(); i += 1) {
+            char ch = upperTag.charAt(i);
+            
+            if ((ch < 'A' || ch > 'Z') && (ch < '0' || ch > '9')) {
+                ch = '_';
+            }
+            
+            result.append(ch);
+        }
+        
+        return result.toString();
+    }
+    
+    private static void dumpTags(String enumName, String[] tags)
+    {
+        System.out.println("enum LE" + enumName + "Tags {");
+        
+        for (int i = 0; i < tags.length; i += 1) {
+            String tag = tags[i];
+            
+            System.out.println("    LE_" + tagLabel(tag) + "_" + enumName.toUpperCase() +
+                "_TAG = " + TagUtilities.makeTag(tag) + "UL" +
+                (i == tags.length - 1? " " : ",") + " /* '" + tag + "' */");
+        }
+        
+        System.out.println("};");
+    }
+    
+    public static void main(String[] args)
+    {
+        dumpTags("Table", tableTags);
+        dumpTags("Feature", featureTags);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages b/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
new file mode 100644
index 0000000..d246813
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
@@ -0,0 +1,28 @@
+/*
+ *
+ * (C) Copyright IBM Corp. 1998-2008. All Rights Reserved.
+ *
+ * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
+ * YOU REALLY KNOW WHAT YOU'RE DOING.
+ *
+ * Generated on: 09/24/2008 01:17:42 PM PDT
+ */
+
+ICU Version=4.1
+Total Script=129
+Total Language=71
+Scripts={
+	 ICU_2.2=40
+	 ICUCanadian_2.6=1
+	 ICUCanadian_2.2=5
+	 ICU_2.6=8
+	 ICU_3.0=1
+	 ICU_3.4=7
+	 ICU_3.6=42
+	 ICU_3.8=12
+	 ICU_4.0=14
+        }
+Languages={
+	   ICU_2.6=30
+	   ICU_4.0=42
+          }
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptData.java b/src/com/ibm/icu/dev/tool/layout/ScriptData.java
new file mode 100644
index 0000000..d86aad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptData.java
@@ -0,0 +1,246 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.impl.Utility;
+
+public class ScriptData extends TagValueData
+{
+    public static class Record
+    {
+        private int startChar;
+        private int endChar;
+        private int scriptCode;
+        
+        Record()
+        {
+            // nothing?
+        }
+        
+        Record(int theChar, int theScriptCode)
+        {
+            this(theChar, theChar, theScriptCode);
+        }
+        
+        Record(int theStartChar, int theEndChar, int theScriptCode)
+        {
+            startChar = theStartChar;
+            endChar = theEndChar;
+            scriptCode = theScriptCode;
+        }
+        
+        public int startChar()
+        {
+            return startChar;
+        }
+        
+        public int endChar()
+        {
+            return endChar;
+        }
+        
+        public int scriptCode()
+        {
+            return scriptCode;
+        }
+        
+        public int compareTo(Record that)
+        {
+            return this.startChar - that.startChar;
+        }
+        
+        public String toString()
+        {
+            return "[" +  Utility.hex(startChar, 6) + ".." +
+                   Utility.hex(endChar, 6) + ", " +
+                   UScript.getShortName(scriptCode).toLowerCase() + "ScriptCode]";
+        }
+    }
+    
+    // TODO: Exceptions could be generated algorithmically
+    private static class TagException
+    {
+        private String icuTag;
+        private String otTag;
+        
+        public TagException(String icu, String ot)
+        {
+            icuTag = icu;
+            otTag  = ot;
+        }
+        
+        public String getICUTag()
+        {
+            return icuTag;
+        }
+        
+        public String getOTTag()
+        {
+            return otTag;
+        }
+    }
+    
+    // TODO: short name longer than long name, replace repeated chars w/ space...
+    private ScriptData.TagException exceptions[] = {
+            new ScriptData.TagException("laoo", "lao "),
+            new ScriptData.TagException("nkoo", "nko "), // New code from ISO 15924, not sure this will be OT tag
+            new ScriptData.TagException("vaii", "vai "), // New code from ISO 15924, not sure this will be OT tag
+            new ScriptData.TagException("yiii", "yi  ")
+        };
+        
+    
+    // TODO: binary search the exceptions list?
+    private String getException(String icu)
+    {
+        for(int i = 0; i < exceptions.length; i += 1) {
+            if (exceptions[i].getICUTag().equals(icu)) {
+                return exceptions[i].getOTTag();
+            }
+        }
+        
+        return icu;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    private void sort()
+    {
+        for (int j = 1; j < fRecords.length; j += 1) {
+            int i;
+            Record v = fRecords[j];
+
+            for (i = j - 1; i >= 0; i -= 1) {
+                if (v.compareTo(fRecords[i]) >= 0) {
+                    break;
+                }
+
+                fRecords[i + 1] = fRecords[i];
+            }
+
+            fRecords[i + 1] = v;
+        }
+    }
+
+    ScriptData()
+    {
+        int commonScript = UCharacter.getPropertyValueEnum(UProperty.SCRIPT, "COMMON");
+        int scriptCount;
+        Vector rv = new Vector();
+        
+        fMinScript  = UCharacter.getIntPropertyMinValue(UProperty.SCRIPT);
+        fMaxScript  = UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT);
+        scriptCount = fMaxScript - fMinScript + 1;
+        
+        System.out.println("Collecting script data for " + scriptCount + " scripts...");
+        
+        fScriptNames = new String[scriptCount];
+        fScriptTags  = new String[scriptCount];
+        
+        for (int script = fMinScript; script <= fMaxScript; script += 1) {
+            fScriptNames[script - fMinScript] = UScript.getName(script).toUpperCase();
+            fScriptTags[script - fMinScript]  = UScript.getShortName(script).toLowerCase();
+            
+            if (script != commonScript) {
+                UnicodeSet scriptSet  = new UnicodeSet("\\p{" + fScriptTags[script - fMinScript] + "}");
+                UnicodeSetIterator it = new UnicodeSetIterator(scriptSet);
+            
+                while (it.nextRange()) {
+                    Record record = new Record(it.codepoint, it.codepointEnd, script);
+                    
+                    rv.addElement(record);
+                }
+            }
+        }
+        
+        fRecords = new Record[rv.size()];
+        
+        for (int i = 0; i < rv.size(); i += 1) {
+            fRecords[i] = (Record) rv.elementAt(i);
+        }
+        
+        System.out.println("Collected " + rv.size() + " records. Sorting...");
+        sort();
+        
+        System.out.println("Done.");
+    }
+    
+    public int getMinValue()
+    {
+        return fMinScript;
+    }
+    
+    public int getMaxValue()
+    {
+        return fMaxScript;
+    }
+    
+    public int getRecordCount()
+    {
+        return fRecords.length;
+    }
+    
+    public String getTag(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return getException(fScriptTags[value - fMinScript]);
+        }
+        
+        return "zyyx";
+    }
+    
+    public String getTagLabel(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return fScriptTags[value - fMinScript];
+        }
+        
+        return "zyyx";
+    }
+    
+    public String makeTag(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            String tag = getException(fScriptTags[value - fMinScript]);
+            
+            return TagUtilities.makeTag(tag);
+        } else {
+            return "0x00000000";
+        }
+    }
+    
+    public String getName(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return fScriptNames[value - fMinScript];
+        }
+        
+        return "COMMON";
+    }
+    
+    public Record getRecord(int index)
+    {
+        if (fRecords != null && index < fRecords.length) {
+            return fRecords[index];
+        }
+        
+        return null;
+    }
+    
+    private int fMinScript;
+    private int fMaxScript;
+    private String fScriptNames[];
+    private String fScriptTags[];
+    private Record fRecords[];
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
new file mode 100644
index 0000000..0df79a7
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
@@ -0,0 +1,381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.Date;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.VersionInfo;
+
+public class ScriptIDModuleWriter extends ScriptModuleWriter
+{
+    public ScriptIDModuleWriter(ScriptData scriptData, LanguageData languageData)
+    {
+        super(scriptData, languageData);
+    }
+
+    public void writeScriptHeader(String fileName)
+    {
+        int minScript = scriptData.getMinValue();
+        int maxScript = scriptData.getMaxValue();
+        int verMajor  = VersionInfo.ICU_VERSION.getMajor();
+        int verMinor  = VersionInfo.ICU_VERSION.getMinor();
+        
+        openFile(fileName);
+        writeHeader("__LESCRIPTS_H", includeFiles, scriptBrief);
+        
+        totalScript = maxScript;
+        what = "script";
+        readFile(ScriptAndLanguages, what);
+        String checkICUVersion, previousVersion;
+        int previousMajor, previousMinor, arrayListIndex=0, numberOfScripts;
+        boolean initialheader = false;
+        if(totalScript==previousTotalScripts){ // No new scripts have been added
+           MessageFormat format = new MessageFormat(scriptPreamble); 
+           for(int script=minScript;script<=maxScript;){
+                checkICUVersion = (String)scriptVersionNumber.get(arrayListIndex);
+                checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+                previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+                previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+                previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+                numberOfScripts = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+                
+                Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+                //Check for the initial header. It should be written only one time
+                if(!initialheader){
+                    output.println(format.format(args));
+                    initialheader = true;
+                }else{
+                    if((verMajor-previousMajor)>=1){
+                        format = new MessageFormat(scriptPreambleStable); 
+                        output.println(format.format(args));
+                    }else{
+                        format = new MessageFormat(scriptPreambleDraft); 
+                        output.println(format.format(args));
+                    }
+                }
+                
+                for(int i=0;i<numberOfScripts;i++){
+                    output.print("    ");
+                    output.print(scriptData.getTagLabel(script));
+                    output.print("ScriptCode = ");
+                    
+                    if (script < 10) {
+                        output.print(" ");
+                    }
+                    
+                    output.print(script);
+                    output.println(",");
+                    script++;
+                }
+                arrayListIndex++;
+           }
+        }else{ 
+            // New scripts have been added
+            MessageFormat format = new MessageFormat(scriptPreamble); 
+            //Processing old scripts
+            for(int script=minScript;script<=previousTotalScripts;){
+                checkICUVersion = (String)scriptVersionNumber.get(arrayListIndex);
+                checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+                previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+                previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+                previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+                numberOfScripts = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+                
+                Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+                
+                //Check for the initial header. It should be written only one time
+                if(!initialheader){
+                    output.println(format.format(args));
+                    initialheader = true;
+                }else{
+                    if((verMajor-previousMajor)>=1){
+                        format = new MessageFormat(scriptPreambleStable); 
+                        output.println(format.format(args));
+                    }else{
+                        format = new MessageFormat(scriptPreambleDraft); 
+                        output.println(format.format(args));
+                    }
+                }
+                
+                for(int i=0;i<numberOfScripts;i++){
+                    output.print("    ");
+                    output.print(scriptData.getTagLabel(script));
+                    output.print("ScriptCode = ");
+                    
+                    if (script < 10) {
+                        output.print(" ");
+                    }
+                    
+                    output.print(script);
+                    output.println(",");
+                    script++;
+                }
+                arrayListIndex++;
+           }
+          
+            //Processing newly added scripts
+            format = new MessageFormat(scriptPreambleDraft); 
+            Object args[] = {new Integer(verMajor), new Integer(verMinor)};
+            output.println(format.format(args));
+            
+            for (int script = previousTotalScripts+1; script <= maxScript; script += 1) {
+                output.print("    ");
+                output.print(scriptData.getTagLabel(script));
+                output.print("ScriptCode = ");
+                
+                if (script < 10) {
+                    output.print(" ");
+                }
+                
+                output.print(script);
+                output.println(",");
+            }
+        }
+        output.println();
+        output.print("    scriptCodeCount = ");
+        output.println(maxScript - minScript + 1);
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+        
+    }
+    
+    public void writeLanguageHeader(String fileName)
+    {
+        int minLanguage = languageData.getMinValue();
+        int maxLanguage = languageData.getMaxValue();
+        int verMajor    = VersionInfo.ICU_VERSION.getMajor();
+        int verMinor    = VersionInfo.ICU_VERSION.getMinor();
+        
+        openFile(fileName);
+        writeHeader("__LELANGUAGES_H", includeFiles, languageBrief);
+
+        totalLanguage = maxLanguage;
+        what = "languages";
+        readFile(ScriptAndLanguages, what);
+        String checkICUVersion, previousVersion;
+        int previousMajor, previousMinor, arrayListIndex=0, numberOfLanguages;
+        boolean initialheader = false;
+        if(totalLanguage==previousTotalLanguages){ // No new language have been added
+           MessageFormat format = new MessageFormat(languagePreamble); 
+           for(int language=minLanguage;language<=maxLanguage;){
+                checkICUVersion = (String)languageVersionNumber.get(arrayListIndex);
+                checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+                previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+                previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+                previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+                numberOfLanguages = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+                
+                Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+               
+                //Check for the initial header. It should be written only one time
+                if(!initialheader){
+                    output.println(format.format(args));
+                    initialheader = true;
+                }else{
+                    if((verMajor-previousMajor)>=1){
+                        format = new MessageFormat(languagePreambleStable); 
+                        output.println(format.format(args));
+                    }else{
+                        format = new MessageFormat(languagePreambleDraft); 
+                        output.println(format.format(args));
+                    }
+                }
+                
+                for(int i=0;i<numberOfLanguages;i++){
+                    output.print("    ");
+                    output.print(languageData.getTagLabel(language).toLowerCase());
+                    output.print("LanguageCode = ");
+                    
+                    if (language < 10) {
+                        output.print(" ");
+                    }
+                    
+                    output.print(language);
+                    output.println(",");
+                    language++;
+                }
+                arrayListIndex++;
+           }
+        }else{ 
+            // New languages have been added
+            MessageFormat format = new MessageFormat(languagePreamble); 
+            
+            //Processing old language
+            for(int language=minLanguage;language<=previousTotalLanguages;){
+                checkICUVersion = (String)languageVersionNumber.get(arrayListIndex);
+                checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+                previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+                previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+                previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+                numberOfLanguages = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+                
+                Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+               
+                //Check for the initial header. It should be written only one time
+                if(!initialheader){
+                    output.println(format.format(args));
+                    initialheader = true;
+                }else{
+                    if((verMajor-previousMajor)>=1){
+                        format = new MessageFormat(languagePreambleStable); 
+                        output.println(format.format(args));
+                    }else{
+                        format = new MessageFormat(languagePreambleDraft); 
+                        output.println(format.format(args));
+                    }
+                }
+                
+                for(int i=0;i<=numberOfLanguages;i++){
+                    output.print("    ");
+                    output.print(languageData.getTagLabel(language).toLowerCase());
+                    output.print("LanguageCode = ");
+                    
+                    if (language < 10) {
+                        output.print(" ");
+                    }
+                    
+                    output.print(language);
+                    output.println(",");
+                    language++;
+                }
+                arrayListIndex++;
+           }
+            
+          //Processing newly added languages
+            format = new MessageFormat(languagePreambleDraft); 
+            Object args[] = {new Integer(verMajor), new Integer(verMinor)};
+            output.println(format.format(args));
+            
+            for (int langauge = previousTotalLanguages+1; langauge <= maxLanguage; langauge += 1) {
+                output.print("    ");
+                output.print(languageData.getTagLabel(langauge).toLowerCase());
+                output.print("ScriptCode = ");
+                
+                if (langauge < 10) {
+                    output.print(" ");
+                }
+                
+                output.print(langauge);
+                output.println(",");
+            }  
+        }
+        output.println();
+        output.print("    languageCodeCount = ");
+        output.println(maxLanguage - minLanguage + 1);
+        
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static final String[] includeFiles = {"LETypes.h"};
+    
+    private static final String scriptPreamble = 
+    "/**\n" +
+    " * Constants for Unicode script values, generated using\n" +
+    " * ICU4J''s <code>UScript</code> class.\n" +
+    " *\n" +
+    " * @stable ICU {0}.{1}\n" +
+    " */\n" +
+    "\n" +
+    "enum ScriptCodes '{'";
+    
+    private static final String scriptBrief =
+    "/**\n" +
+    " * \\file\n" + 
+    " * \\brief C++ API: Constants for Unicode script values\n" +
+    " */\n" +
+    "\n";
+
+    
+    private static final String languagePreamble = 
+    "/**\n" +
+    " * A provisional list of language codes. For now,\n" +
+    " * this is just a list of languages which the LayoutEngine\n" +
+    " * supports.\n" +
+    " *\n" +
+    " * @stable ICU {0}.{1}\n" +
+    " */\n" +
+    "\n" +
+    "enum LanguageCodes '{'";
+    
+    private static final String languageBrief =
+        "/**\n" +
+        " * \\file\n" + 
+        " * \\brief C++ API: List of language codes for LayoutEngine\n" +
+        " */\n" +
+        "\n";
+
+    private static final String postamble =
+    "};\n";
+    
+    private static final String ScriptAndLanguages = "ScriptAndLanguages";
+    private static String ICUVersion = "ICU Version="+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor();
+    private static int totalScript;
+    private static int totalLanguage;
+    private static String what;
+    
+    public void updateScriptAndLanguages(){
+        openScriptAndLanguages(ScriptAndLanguages);
+        MessageFormat format = new MessageFormat(moduleHeader);
+        Object args[] = {new Date(System.currentTimeMillis())};
+
+        System.out.print("Updating file "+ScriptAndLanguages);
+        
+        updateFile.print(format.format(args));
+        updateFile.println(ICUVersion);
+        updateFile.println("Total Script="+totalScript);
+        updateFile.println("Total Language="+totalLanguage);
+        updateFile.println("Scripts={");
+        for(int i=0;i<scriptVersionNumber.size();i++){
+            updateFile.println(scriptVersionNumber.get(i));
+        }
+        if(totalScript>previousTotalScripts){
+            updateFile.println("         ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalScript-previousTotalScripts));
+            
+        }
+        updateFile.println("        }");
+        updateFile.println("Languages={");
+        for(int i=0;i<languageVersionNumber.size();i++){
+            updateFile.println(languageVersionNumber.get(i));
+        }
+        if(totalLanguage>previousTotalLanguages){
+            updateFile.println("           ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalLanguage-previousTotalLanguages));
+        }
+        updateFile.println("          }");
+        scriptVersionNumber.clear();
+        languageVersionNumber.clear();
+        updateFile.close();
+        
+        System.out.println("Done");
+    }
+    
+    private static final String scriptPreambleDraft = 
+        "/**\n" +
+        " * @draft ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String scriptPreambleStable = 
+        "/**\n" +
+        " * @stable ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String languagePreambleDraft = 
+        "/**\n" +
+        " * @draft ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String languagePreambleStable = 
+        "/**\n" +
+        " * @stable ICU {0}.{1}\n" +
+        " */\n";// +
+        
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptList.java b/src/com/ibm/icu/dev/tool/layout/ScriptList.java
new file mode 100644
index 0000000..6a626e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptList.java
@@ -0,0 +1,200 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ScriptList
+{
+    static class LangSysRecord extends TaggedRecord
+    {
+        private Feature[] features;
+        private int featureCount;
+        
+        public LangSysRecord(String theLanguageTag)
+        {
+            super(theLanguageTag);
+            
+            features = new Feature[10];
+            featureCount = 0;
+        }
+        
+        public void addFeature(Feature feature)
+        {
+            if (featureCount > features.length) {
+                Feature[] newFeatures = new Feature[features.length + 5];
+                
+                System.arraycopy(features, 0, newFeatures, 0, features.length);
+                features = newFeatures;
+            }
+            
+            features[featureCount++] = feature;
+        }
+        
+         public void writeLangSysRecord(OpenTypeTableWriter writer)
+        {
+            writer.writeData(0);      // lookupOrder (must be NULL)
+            writer.writeData(0xFFFF); // reqFeatureIndex (0xFFFF means none)
+            
+            writer.writeData(featureCount);
+            
+            for (int i = 0; i < featureCount; i += 1) {
+                writer.writeData(features[i].getFeatureIndex());
+            }
+        }
+    }
+    
+    static class ScriptRecord extends TaggedRecord
+    {
+        private LangSysRecord[] langSysRecords;
+        private int langSysCount;
+        
+        public ScriptRecord(String theScriptTag)
+        {
+            super(theScriptTag);
+            langSysRecords = new LangSysRecord[10];
+            langSysCount = 0;
+        }
+        
+        public LangSysRecord findLangSysRecord(String languageTag)
+        {
+            for (int i = 0; i < langSysCount; i += 1) {
+                LangSysRecord langSysRecord = langSysRecords[i];
+                
+                if (langSysRecord.getTag().equals(languageTag)) {
+                    return langSysRecord;
+                }
+            }
+            
+            if (langSysCount >= langSysRecords.length) {
+                LangSysRecord[] newLangSysRecords = new LangSysRecord[langSysCount + 5];
+                
+                System.arraycopy(langSysRecords, 0, newLangSysRecords, 0, langSysRecords.length);
+                langSysRecords = newLangSysRecords;
+            }
+            
+            LangSysRecord newLangSysRecord = new LangSysRecord(languageTag);
+            langSysRecords[langSysCount] = newLangSysRecord;
+            
+            langSysCount += 1;
+            return newLangSysRecord;
+        }
+        
+        public void writeScriptRecord(OpenTypeTableWriter writer)
+        {
+            TaggedRecord.sort(langSysRecords, langSysCount);
+            
+            int scriptTableBase = writer.getOutputIndex();
+            int firstLangSys = 0;
+            
+            writer.writeData(0); // default langSys offset (fixed later)
+            
+            if (langSysRecords[0].getTag().equals("(default)")) {
+                firstLangSys = 1;
+            }
+            
+            writer.writeData(langSysCount - firstLangSys);
+            
+            int langSysOffset = writer.getOutputIndex();
+            
+            for (int i = firstLangSys; i < langSysCount; i += 1) {
+                writer.writeTag(langSysRecords[i].getTag());
+                writer.writeData(0);
+            }
+            
+            if (firstLangSys > 0) {
+                System.out.print(" (default)");
+                writer.fixOffset(scriptTableBase, scriptTableBase);
+                langSysRecords[0].writeLangSysRecord(writer);
+            }
+            
+            for (int i = firstLangSys; i < langSysCount; i += 1) {
+                // fix the offset in the langSysRecordArray.
+                // The "+2" skips over the tag and the "+3"
+                // skips to the next langSysRecord entry
+                writer.fixOffset(langSysOffset + 2, scriptTableBase);
+                langSysOffset += 3;
+                
+                System.out.print(" '" + langSysRecords[i].getTag() + "'");
+                langSysRecords[i].writeLangSysRecord(writer);
+            }
+        }
+    }
+    
+    private ScriptRecord[] scriptRecords;
+    private int scriptCount;
+    
+    public ScriptList()
+    {
+        scriptRecords = new ScriptRecord[10];
+        scriptCount = 0;
+    }
+    
+    private LangSysRecord findLangSysRecord(String scriptTag, String languageTag)
+    {
+        for (int i = 0; i < scriptCount; i += 1) {
+            ScriptRecord scriptRecord = scriptRecords[i];
+            
+            if (scriptRecord.getTag().equals(scriptTag)) {
+                 return scriptRecord.findLangSysRecord(languageTag);
+            }
+        }
+        
+        if (scriptCount >= scriptRecords.length) {
+            ScriptRecord[] newScriptRecords = new ScriptRecord[scriptCount + 5];
+            
+            System.arraycopy(scriptRecords, 0, newScriptRecords, 0, scriptRecords.length);
+            scriptRecords = newScriptRecords;
+        }
+        
+        ScriptRecord newScriptRecord = new ScriptRecord(scriptTag);
+        scriptRecords[scriptCount] = newScriptRecord;
+        
+        scriptCount += 1;
+        return newScriptRecord.findLangSysRecord(languageTag);
+    }
+    
+    public void addFeature(String scriptTag, String languageTag, Feature feature)
+    {
+        LangSysRecord langSysRecord = findLangSysRecord(scriptTag, languageTag);
+        
+        langSysRecord.addFeature(feature);
+    }
+    
+    public void writeScriptList(OpenTypeTableWriter writer)
+    {
+        System.out.println("writing script list...");
+        
+        int scriptListBase = writer.getOutputIndex();
+        
+        TaggedRecord.sort(scriptRecords, scriptCount);
+        writer.writeData(scriptCount);
+        
+        int scriptRecordOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < scriptCount; i += 1) {
+            writer.writeTag(scriptRecords[i].getTag());
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < scriptCount; i += 1) {
+            // fix the offset in the scriptRecordArray.
+            // The "+2" skips over the tag and the "+3"
+            // skips to the next scriptRecord entry
+            writer.fixOffset(scriptRecordOffset + 2, scriptListBase);
+            scriptRecordOffset += 3;
+            
+            System.out.print("  script '" + scriptRecords[i].getTag() + "':");
+            scriptRecords[i].writeScriptRecord(writer);
+            System.out.println();
+        }
+    }
+}
+        
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
new file mode 100644
index 0000000..b1cad78
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
@@ -0,0 +1,22 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ScriptModuleWriter extends ModuleWriter
+{
+    public ScriptModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
+    {
+        super();
+        
+        scriptData = theScriptData;
+        languageData = theLanguageData;
+    }
+
+    protected ScriptData scriptData;
+    protected LanguageData languageData;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java b/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
new file mode 100644
index 0000000..991153b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ScriptNameBuilder
+{
+    /*
+     * This tool builds the script related header files and data tables needed by
+     * the ICU LayoutEngine. By using the ICU4J interfaces to access the script
+     * information, we can be sure that the data written by this tool is in synch
+     * with ICU.
+     */
+    public static void main(String[] args)
+    {
+        ScriptData scriptData = new ScriptData();
+        LanguageData languageData = new LanguageData();
+        
+        ScriptIDModuleWriter scriptIDModuleWriter = new ScriptIDModuleWriter(scriptData, languageData);
+        
+        scriptIDModuleWriter.writeScriptHeader("LEScripts.h");
+        scriptIDModuleWriter.writeLanguageHeader("LELanguages.h");
+        
+        scriptIDModuleWriter.updateScriptAndLanguages();
+        
+        ScriptTagModuleWriter scriptTagModuleWriter = new ScriptTagModuleWriter(scriptData, languageData);
+        
+        scriptTagModuleWriter.writeScriptTags("ScriptAndLanguageTags");
+        
+        ScriptRunModuleWriter scriptRunModuleWriter = new ScriptRunModuleWriter(scriptData);
+        
+        scriptRunModuleWriter.writeScriptRuns("ScriptRunData.cpp");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
new file mode 100644
index 0000000..5aa96e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+public class ScriptRunModuleWriter extends ScriptModuleWriter
+{
+    public ScriptRunModuleWriter(ScriptData theScriptData)
+    {
+        super(theScriptData, null);
+    }
+    
+    public void writeScriptRuns(String fileName)
+    {
+        int minScript   = scriptData.getMinValue();
+        int maxScript   = scriptData.getMaxValue();
+        int recordCount = scriptData.getRecordCount();
+        
+        openFile(fileName);
+        writeHeader(null, includeFiles);
+        output.println(preamble);
+        
+        for (int record = 0; record < recordCount; record += 1) {
+            int script = scriptData.getRecord(record).scriptCode();
+            
+            output.print("    {0x");
+            output.print(Utility.hex(scriptData.getRecord(record).startChar(), 6));
+            output.print(", 0x");
+            output.print(Utility.hex(scriptData.getRecord(record).endChar(), 6));
+            output.print(", ");
+            output.print(scriptData.getTag(script));
+            output.print("ScriptCode}");
+            output.print((record == recordCount - 1) ? " " : ",");
+            output.print(" // ");
+            output.println(scriptData.getName(script));
+        }
+        
+        output.println(postamble);
+        
+        int power = 1 << Utility.highBit(recordCount);
+        int extra = recordCount - power;
+        
+        output.print("le_int32 ScriptRun::scriptRecordsPower = 0x");
+        output.print(Utility.hex(power, 4));
+        output.println(";");
+        
+        
+        output.print("le_int32 ScriptRun::scriptRecordsExtra = 0x");
+        output.print(Utility.hex(extra, 4));
+        output.println(";");
+
+        Vector[] scriptRangeOffsets = new Vector[maxScript - minScript + 1];
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            scriptRangeOffsets[script - minScript] = new Vector();
+        }
+        
+        for (int record = 0; record < recordCount; record += 1) {
+            scriptRangeOffsets[scriptData.getRecord(record).scriptCode() - minScript].addElement(new Integer(record));
+        }
+        
+        output.println();
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            Vector offsets = scriptRangeOffsets[script - minScript];
+            
+            output.print("le_int16 ");
+            output.print(scriptData.getTag(script));
+            output.println("ScriptRanges[] = {");
+            output.print("    ");
+            
+            for (int offset = 0; offset < offsets.size(); offset += 1) {
+                Integer i = (Integer) offsets.elementAt(offset);
+                
+                output.print(i.intValue());
+                output.print(", ");
+            }
+            
+            output.println("-1");
+            output.println(postamble);
+        }
+        
+        output.println("le_int16 *ScriptRun::scriptRangeOffsets[] = {");
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            output.print("    ");
+            output.print(scriptData.getTag(script));
+            output.print("ScriptRanges");
+            output.print(script == maxScript? "  " : ", ");
+            output.print("// ");
+            output.println(scriptData.getName(script));
+        }
+        
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static final String[] includeFiles = {"LETypes.h", "LEScripts.h", "ScriptRun.h"};
+    
+    private static final String preamble = 
+    "\n" +
+    "ScriptRecord ScriptRun::scriptRecords[] = {";
+    
+    private static final String postamble =
+    "};\n";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
new file mode 100644
index 0000000..6d77f70
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
@@ -0,0 +1,126 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ScriptTagModuleWriter extends ScriptModuleWriter
+{
+    public ScriptTagModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
+    {
+        super(theScriptData, theLanguageData);
+    }
+    
+    private void writeTagValueHeader(TagValueData data, String kind)
+    {
+        int min = data.getMinValue();
+        int max = data.getMaxValue();
+
+        for (int value = min; value <= max; value += 1) {
+            output.print("const LETag ");
+            output.print(data.getTagLabel(value));
+            output.print(kind);
+            output.print("Tag = ");
+            output.print(data.makeTag(value));
+            output.print("; /* '");
+            output.print(data.getTag(value));
+            output.print("' (");
+            output.print(data.getName(value));
+            output.println(") */");
+        }
+    }
+    
+    public void writeHeaderFile(String fileName)
+    {
+        openFile(fileName);
+        writeHeader("__SCRIPTANDLANGUAGES_H", hIncludes, hPreamble);
+        
+        writeTagValueHeader(scriptData, "Script");
+        
+        output.println(hScriptPostamble);
+        
+        writeTagValueHeader(languageData, "Language");
+        
+        output.println(hPostamble);
+        closeFile();
+    }
+    
+    private void writeTagValueCPP(TagValueData data, String kind)
+    {
+        int min = data.getMinValue();
+        int max = data.getMaxValue();
+        
+        for (int value = min; value <= max; value += 1) {
+            output.print("    ");
+            output.print(data.getTagLabel(value));
+            output.print(kind);
+            output.print("Tag");
+            output.print((value == max? " " : ","));
+            output.print(" /* '");
+            output.print(data.getTag(value));
+            output.print("' (");
+            output.print(data.getName(value));
+            output.println(") */");
+        }
+    }
+    
+    public void writeCPPFile(String fileName)
+    {
+        openFile(fileName);
+        writeHeader(null, cppIncludes);
+        output.println(cppPreamble);
+        
+        writeTagValueCPP(scriptData, "Script");
+        
+        output.println(cppScriptPostamble);
+        
+        writeTagValueCPP(languageData, "Language");
+        
+        output.println(cppPostamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    public void writeScriptTags(String fileName)
+    {
+        writeHeaderFile(fileName + ".h");
+        writeCPPFile(fileName + ".cpp");
+    }
+
+    private static final String[] hIncludes = {"LETypes.h"};
+
+    private static final String hPreamble = 
+    "/**\n" +
+    " * \\file\n" +
+    " * \\internal\n" +
+    " */\n" +
+    "\n";
+    
+    private static final String hScriptPostamble =
+    "\n" +
+    "const LETag nullScriptTag = 0x00000000; /* ''     (NULL) */\n" +
+    "\n";
+    
+    private static final String hPostamble =
+    "\n" +
+    "\n" +
+    "U_NAMESPACE_END\n" +
+    "#endif";
+    
+    private static final String[] cppIncludes =
+        {"LETypes.h", "ScriptAndLanguageTags.h", "OpenTypeLayoutEngine.h"};
+    
+    private static final String cppPreamble = 
+    "const LETag OpenTypeLayoutEngine::scriptTags[] = {";
+    
+    private static final String cppScriptPostamble =
+    "};\n" +
+    "\n" +
+    "const LETag OpenTypeLayoutEngine::languageTags[] = {";
+    
+    private static final String cppPostamble =
+    "};\n";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java b/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
new file mode 100644
index 0000000..b6d427a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class ShapingTypeBuilder extends OpenTypeTableWriter
+{
+    private ClassTable classTable;
+    
+    public ShapingTypeBuilder()
+    {
+        classTable = new ClassTable();
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        classTable.writeClassTable(this);
+        output.println("const le_uint8 ArabicShaping::shapingTypeTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+    
+    // TODO: The UnicodeSet is constrained to the BMP because the ClassTable data structure can
+    // only handle 16-bit entries. This is probably OK as long as there aren't any joining scripts
+    // outside of the BMP...
+    public void buildShapingTypes(String filename)
+    {
+        UnicodeSet shapingTypes = new UnicodeSet("[[\\P{Joining_Type=Non_Joining}] & [\\u0000-\\uFFFF]]");
+        int count = shapingTypes.size();
+        
+        System.out.println("There are " + count + " characters with a joining type.");
+        
+        for(int i = 0; i < count; i += 1) {
+            int ch = shapingTypes.charAt(i);
+            
+            classTable.addMapping(ch, UCharacter.getIntPropertyValue(ch, UProperty.JOINING_TYPE));
+        }
+        
+        LigatureModuleWriter writer = new LigatureModuleWriter();
+        String[] includeFiles = {"LETypes.h", "ArabicShaping.h"};        
+        
+        writer.openFile(filename);
+        writer.writeHeader(null, includeFiles);
+        writer.writeTable(this);
+        writer.writeTrailer();
+        writer.closeFile();
+    }
+    
+    public static void main(String[] args)
+    {
+        ShapingTypeBuilder stb = new ShapingTypeBuilder();
+        
+        stb.buildShapingTypes(args[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TagUtilities.java b/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
new file mode 100644
index 0000000..2841668
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Apr 14, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ *  This class contains utility methods for dealing with
+ * four-letter tags.
+ * 
+ * @author emader
+ *
+ */
+public class TagUtilities
+{
+    public static String makeTag(String tag)
+    {
+        if (tag == null || tag.length() == 0) {
+            return "0x00000000";
+        }
+        
+        int tagValue = 0;
+        
+        for (int i = 0; i < 4; i += 1) {
+            tagValue <<= 8;
+            tagValue += (int) ((i < tag.length()? tag.charAt(i) : ' ') & 0xFF);
+        }
+        
+        return "0x" + Utility.hex(tagValue, 8);
+    }
+    
+//    public static String makeTagOld(String tag)
+//    {
+//        if (tag == null || tag.length() == 0) {
+//            return "0x00000000";
+//        }
+//        
+//        StringBuffer result = new StringBuffer("LE_MAKE_TAG(");
+//        
+//        for (int i = 0; i < 4; i += 1) {
+//            if (i > 0) {
+//                result.append(", ");
+//            }
+//            
+//            result.append('\'');
+//            result.append(i < tag.length()? tag.charAt(i) : ' ');
+//            result.append('\'');
+//        }
+//        
+//        result.append(")");
+//        
+//        return result.toString(); 
+//    }
+    
+    public static String tagLabel(String tag)
+    {
+        if (tag == null || tag.length() == 0) {
+            return "null";
+        } else {
+            return tag.toLowerCase();
+        }
+    }
+        
+}
+
diff --git a/src/com/ibm/icu/dev/tool/layout/TagValueData.java b/src/com/ibm/icu/dev/tool/layout/TagValueData.java
new file mode 100644
index 0000000..04175cb
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TagValueData.java
@@ -0,0 +1,23 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+public abstract class TagValueData
+{
+    abstract public int getMinValue();
+    abstract public int getMaxValue();
+    
+    abstract public String getName(int value);
+    abstract public String getTag(int value);
+    abstract public String getTagLabel(int value);
+    abstract public String makeTag(int value);
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java b/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
new file mode 100644
index 0000000..b18c07f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
@@ -0,0 +1,79 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import com.ibm.icu.impl.Utility;
+
+public class TaggedRecord
+{
+    private String tag;
+        
+    public TaggedRecord(String theTag)
+    {
+        tag = theTag;
+    }
+        
+    public String getTag()
+    {
+        return tag;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    public static void sort(TaggedRecord[] table, int count)
+    {
+        for (int j = 1; j < count; j += 1) {
+            int i;
+            TaggedRecord v = table[j];
+            String vTag = v.getTag();
+
+            for (i = j - 1; i >= 0; i -= 1) {
+                if (vTag.compareTo(table[i].getTag()) >= 0) {
+                    break;
+                }
+
+                table[i + 1] = table[i];
+            }
+
+            table[i + 1] = v;
+        }
+    }
+    
+    public static int search(TaggedRecord[] table, int count, String tag)
+    {
+        int log2 = Utility.highBit(count);
+        int power = 1 << log2;
+        int extra = count - power;
+        int probe = power;
+        int index = 0;
+
+        if (table[extra].getTag().compareTo(tag) <= 0) {
+            index = extra;
+        }
+
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (table[index + probe].getTag().compareTo(tag) <= 0) {
+                index += probe;
+            }
+        }
+
+        if (table[index].getTag().equals(tag)) {
+            return index;
+        }
+
+        return -1;
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java b/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
new file mode 100644
index 0000000..949937b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import java.io.PrintStream;
+
+public class ThaiCharacterClasses
+{
+    public static final int NON    =  0;
+    public static final int CON    =  1;
+    public static final int COA    =  2;
+    public static final int COD    =  3;
+    public static final int LVO =  4;
+    public static final int FV1    =  5;
+    public static final int FV2    =  6;
+    public static final int FV3    =  7;
+    public static final int BV1    =  8;
+    public static final int BV2    =  9;
+    public static final int BDI = 10;
+    public static final int TON    = 11;
+    public static final int AD1    = 12;
+    public static final int AD2    = 13;
+    public static final int AD3    = 14;
+    public static final int NIK    = 15;
+    public static final int AV1    = 16;
+    public static final int AV2    = 17;
+    public static final int AV3    = 18;
+    public static final int cCount = 19;
+
+    // Indexed by unicode - '\u0E00'
+    // FIXME: MS Fonts - Should 0E2E has no ascender (it does in WT font)
+    // FIXME: MS Fonts - 0E47 (MAITAIKHU) and 0E4D (NIKHAHIT) only have vowel forms
+    // FIXME: MS Fonts - 0E4E (YAMAKKAN) only has one form
+    private static final int classTable[] = {
+    //       0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
+    //       -------------------------------------------------------------------------------
+    /*0E00*/ NON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, COD, COD, COD, 
+    /*0E10*/ COD, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, COA, CON, COA, CON, COA, 
+    /*0E20*/ CON, CON, CON, CON, FV3, CON, FV3, CON, CON, CON, CON, CON, CON, CON, CON, NON, 
+    /*0E30*/ FV1, AV2, FV1, FV1, AV1, AV3, AV2, AV3, BV1, BV2, BDI, NON, NON, NON, NON, NON, 
+    /*0E40*/ LVO, LVO, LVO, LVO, LVO, FV2, NON, AD2, TON, TON, TON, TON, AD1, NIK, AD3, NON, 
+    /*0E50*/ NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, NON
+    };
+
+    private static String[] classNames =
+    {
+        "NON",
+        "CON",
+        "COA",
+        "COD",
+        "LVO",
+        "FV1",
+        "FV2",
+        "FV3",
+        "BV1",
+        "BV2",
+        "BDI",
+        "TON",
+        "AD1",
+        "AD2",
+        "AD3",
+        "NIK",
+        "AV1",
+        "AV2",
+        "AV3"
+    };
+
+    private static final char pairTable[][] = {
+      //------------------------------------------------------------------------------------------------
+      //  N    C    C    C    L    F    F    F    B    B    B    T    A    A    A    N    A    A    A
+      //  O    O    O    O    V    V    V    V    V    V    D    O    D    D    D    I    V    V    V
+      //  N    N    A    D    O    1    2    3    1    2    I    N    1    2    3    K    1    2    3
+      //------------------------------------------------------------------------------------------------
+/*NON*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*CON*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'C', 'C', 'C', 'E', 'E', 'E', 'C', 'E', 'C', 'C', 'C'},
+/*COA*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'C', 'C', 'C', 'F', 'F', 'F', 'D', 'F', 'D', 'D', 'D'},
+/*COD*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'H', 'H', 'H', 'E', 'E', 'E', 'C', 'E', 'C', 'C', 'C'},
+/*LVO*/ {'S', 'A', 'A', 'A', 'S', 'S', 'S', 'S', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV1*/ {'S', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV2*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'A', 'S', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*BV1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'E', 'E', 'R', 'R', 'E', 'R', 'R', 'R'},
+/*BV2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'E', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*BDI*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*TON*/ {'A', 'A', 'A', 'A', 'A', 'I', 'A', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*NIK*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'G', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AV1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'G', 'R', 'R', 'G', 'R', 'R', 'R'},
+/*AV2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AV3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'R', 'G', 'R', 'R', 'R', 'R', 'R'}
+    };
+
+    public static int getCharClass(char ch)
+    {
+        int charClass = NON;
+        
+        if (ch >= '\u0E00' && ch <= '\u0E5B') {
+            charClass = classTable[ch - '\u0E00'];
+        }
+        
+        return charClass;
+    }
+    
+    public static String getClassName(int classID)
+    {
+        if (classID < 0 || classID >= cCount) {
+            return "***";
+        }
+        
+        return classNames[classID];
+    }
+    
+    public static char getPairAction(int prevClass, int currClass)
+    {
+        if (prevClass < 0 || prevClass >= cCount |
+            currClass < 0 || currClass >= cCount) {
+            return 'A';
+        }
+            
+        return pairTable[prevClass][currClass];
+    }
+    
+    private static String classTableHeader =
+"const le_uint8 ThaiShaping::classTable[] = {\n" +
+"    //       0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F\n" +
+"    //       -------------------------------------------------------------------------------";
+    
+    public static void writeClassTable(PrintStream output)
+    {
+        System.out.print("Writing class table...");
+        
+        output.print(classTableHeader);
+        
+        for (char ch = '\u0E00'; ch <= '\u0E5B'; ch += 1) {
+            int charClass = getCharClass(ch);
+            
+            if ((ch & 0x000F) == 0) {
+                output.print("\n    /*" + Utility.hex(ch, 4) + "*/ ");
+            }
+            
+            output.print(getClassName(charClass));
+            
+            if (ch < '\u0E5B') {
+                output.print(", ");
+            } else {
+                output.print("\n};\n\n");
+            }
+        }
+        
+        System.out.println(" done.");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
new file mode 100644
index 0000000..935f1c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
@@ -0,0 +1,205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+import java.util.Vector;
+
+public class ThaiStateTable
+{
+    static Vector stateTable = null;
+    static int nextState = 0;
+    
+    private final static int newState()
+    {
+        ThaiStateTransition[] stateRow = new ThaiStateTransition[ThaiCharacterClasses.cCount];
+        
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            stateRow[c] = null;
+        }
+        
+        stateTable.addElement(stateRow);
+        
+        return nextState++;
+    }
+    
+    private final static boolean isLegalHere(int state, char pairAction)
+    {
+        switch (pairAction) {
+        case 'A':
+            return state == 0;
+            
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+            return true;
+        
+        case 'R':
+        case 'S':
+            return false;
+        }
+        
+        return false;
+    }
+    
+    private final static boolean composesWithAnything(int charClass)
+    {
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            char action = ThaiCharacterClasses.getPairAction(charClass, c);
+            
+            if (action >= 'C' && action <= 'I') {
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
+    private final static void fixNextStates()
+    {
+        ThaiStateTransition[] groundState = (ThaiStateTransition[]) stateTable.elementAt(0);
+        
+        for (int s = 1; s < stateTable.size(); s += 1) {
+            ThaiStateTransition[] state = (ThaiStateTransition[]) stateTable.elementAt(s);
+            
+            for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+                ThaiStateTransition transition = state[c];
+                
+                if (transition.getNextState() == 0) {
+                    transition.setNextState(groundState[c].getNextState());
+                }
+            }
+        }
+    }
+    
+    private final static int addState(int prevClass, int prevPrevClass)
+    {
+        int state = newState();
+        ThaiStateTransition[] stateRow = (ThaiStateTransition[]) stateTable.elementAt(state);
+        
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            char pairAction = ThaiCharacterClasses.getPairAction(prevClass, c);
+            int nextSt = 0;
+            
+            switch (pairAction) {
+            case 'G':
+                if (prevClass == ThaiCharacterClasses.NIK &&
+                    prevPrevClass == ThaiCharacterClasses.AV1) {
+                    pairAction = 'R';
+                } else if (prevPrevClass != ThaiCharacterClasses.COA) {
+                    pairAction = 'C';
+                }
+                break;
+                
+            case 'E':
+                if (prevPrevClass == ThaiCharacterClasses.COA) {
+                    pairAction = 'F';
+                }
+                break;
+                
+            case 'I':
+                if (prevClass == ThaiCharacterClasses.TON &&
+                    (prevPrevClass < ThaiCharacterClasses.CON ||
+                     prevPrevClass > ThaiCharacterClasses.COD)) {
+                    pairAction = 'S';
+                } else {
+                    pairAction = 'A';
+                }
+                break;
+                
+            default:
+                break;
+            }
+            
+            if (c != prevClass && isLegalHere(state, pairAction) && composesWithAnything(c)) {
+                nextSt = addState(c, prevClass);
+            }
+            
+            stateRow[c] = new ThaiStateTransition(nextSt, pairAction);
+        }
+        
+        return state;
+    }
+    
+    static
+    {
+        stateTable = new Vector();
+            
+        addState(ThaiCharacterClasses.NON, ThaiCharacterClasses.NON);
+            
+        fixNextStates();
+    }
+    
+    public static ThaiStateTransition getTransition(int state, int currClass)
+    {
+        ThaiStateTransition[] row = (ThaiStateTransition[]) stateTable.elementAt(state);
+        
+        return row[currClass];
+    }
+
+    private static String header0 =
+"const ThaiShaping::StateTransition ThaiShaping::thaiStateTable[][ThaiShaping::classCount] = {";
+
+    private static String header1 =
+"    //+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+";
+
+    private static String header2 =
+"    //|         N         C         C         C         L         F         F         F         B         B         B         T         A         A         A         N         A         A         A    |\n" +
+"    //|         O         O         O         O         V         V         V         V         V         V         D         O         D         D         D         I         V         V         V    |\n" +
+"    //|         N         N         A         D         O         1         2         3         1         2         I         N         1         2         3         K         1         2         3    |";
+    
+    public static void writeStateTable(PrintStream output)
+    {
+        System.out.print("Writing state table...");
+        
+        output.println(header0);
+        output.println(header1);
+        output.println(header2);
+        output.println(header1);
+        
+        for (int state = 0; state < stateTable.size(); state += 1) {
+            ThaiStateTransition[] row = (ThaiStateTransition[]) stateTable.elementAt(state);
+            
+            output.print("    /*");
+            
+            if (state < 10) {
+                output.print("0");
+            }
+            
+            output.print(state);
+            
+            output.print("*/ {");
+            
+            for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+                row[c].write(output);
+                
+                if (c < ThaiCharacterClasses.cCount - 1) {
+                    output.print(", ");
+                }
+            }
+            
+            output.print("}");
+                    
+            if (state < stateTable.size() - 1) {
+                output.print(",");
+            }
+                    
+            output.println();
+        }
+        
+        output.println("};\n");
+        
+        System.out.println(" done.");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
new file mode 100644
index 0000000..88d04e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
@@ -0,0 +1,26 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ThaiStateTableBuilder
+{
+    public static void main(String args[])
+    {
+        ThaiStateTableModuleWriter writer = new ThaiStateTableModuleWriter();
+        
+        writer.openFile(args[0]);
+        writer.writeTables();
+        writer.closeFile();
+        
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
new file mode 100644
index 0000000..3ff9a0b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ThaiStateTableModuleWriter extends ModuleWriter
+{
+    public ThaiStateTableModuleWriter()
+    {
+        super();
+    }
+
+    public void writeTables()
+    {
+        writeHeader(null, includeFiles);
+        
+        ThaiCharacterClasses.writeClassTable(output);
+        ThaiStateTable.writeStateTable(output);
+        
+        writeTrailer();
+    }
+
+    private static final String[] includeFiles = {"LETypes.h", "ThaiShaping.h"};
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
new file mode 100644
index 0000000..2d05eb1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
@@ -0,0 +1,66 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+public class ThaiStateTransition
+{
+    int nextState;
+    char action;
+        
+    public ThaiStateTransition(int nextState, char action)
+    {
+        this.nextState = nextState;
+        this.action = action;
+    }
+        
+    public final int getNextState()
+    {
+        return nextState;
+    }
+        
+    public final char getAction()
+    {
+        return action;
+    }
+        
+    public final void setNextState(int newNextState)
+    {
+        nextState = newNextState;
+    }
+        
+    public final void setAction(char newAction)
+    {
+        action = newAction;
+    }
+
+    public String toString()
+    {
+        return ((nextState < 10) ? "0" : "") + nextState + "/" + action + " ";
+    }
+    
+    public void write(PrintStream output)
+    {
+        output.print("{");
+        
+        if (nextState < 10) {
+            output.print(" ");
+        }
+        
+        output.print(nextState);
+        
+        output.print(", t");
+        output.print(action);
+        output.print("}");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TreeWalker.java b/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
new file mode 100644
index 0000000..9ec4471
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
@@ -0,0 +1,19 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public abstract class TreeWalker
+{
+    abstract void down(int ch);
+    abstract void up();
+    abstract void ligature(int lig);
+    abstract void done();
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java b/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
new file mode 100644
index 0000000..59b46b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
@@ -0,0 +1,86 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.math.*;
+
+/*
+ *  The code is from  http://www.theorem.com/java/CRC32.java
+ * Calculates the CRC32 - 32 bit Cyclical Redundancy Check
+ * <P> This check is used in numerous systems to verify the integrity
+ * of information.  It's also used as a hashing function.  Unlike a regular
+ * checksum, it's sensitive to the order of the characters.
+ * It produces a 32 bit
+ * 
+ * @author Michael Lecuyer (mjl@theorem.com)
+ * @version 1.1 August 11, 1998
+ */
+ 
+/* ICU is not endian portable, because ICU data generated on big endian machines can be
+ * ported to big endian machines but not to little endian machines and vice versa. The 
+ * conversion is not portable across platforms with different endianess. 
+ */
+ 
+public class CalculateCRC32 {
+    static int CRCTable[];
+    static int cachedCRC;
+
+    static void buildCRCTable() {
+        final int CRC32_POLYNOMIAL = 0xEDB88320;
+        int i, j;
+        int crc;
+        CRCTable = new int[256];
+
+        for (i = 0; i <= 255; i++) {
+            crc = i;
+            for (j = 8; j > 0; j--) {
+                if ((crc & 1) == 1) {
+                    crc = (crc >>> 1) ^ CRC32_POLYNOMIAL;
+                } else {
+                    crc >>>= 1;
+                }
+            }
+            CRCTable[i] = crc;
+        }
+    }
+
+    public static int computeCRC32(String buffer) {
+        return computeCRC32(buffer, 0xFFFFFFFF);
+    }
+
+    public static int computeCRC32(byte buffer[]) {
+        return computeCRC32(buffer, 0xFFFFFFFF);
+    }
+   
+    public static int computeCRC32(String buffer, int crc){
+        return computeCRC32(buffer.getBytes(), crc);
+    }
+
+    public static int computeCRC32(byte buffer[], int crc) {
+        return computeCRC32(buffer, 0, buffer.length, crc);
+    }
+
+    public static int computeCRC32(byte buffer[], int start, int count, int lastcrc){
+        buildCRCTable();  
+        int temp1, temp2;
+        int i = start;
+        cachedCRC = lastcrc;
+      
+        while (count-- != 0){
+            temp1 = cachedCRC >>> 8;
+            byte s = buffer[i++];
+            temp2 = CRCTable[(cachedCRC ^s) & 0xFF];
+            cachedCRC = temp1 ^ temp2;
+        }
+        return cachedCRC;
+    }
+
+    public byte [] toBytes() {
+        return new BigInteger(new Integer(cachedCRC).toString()).toByteArray();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java b/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
new file mode 100644
index 0000000..553a21b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
@@ -0,0 +1,1249 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.localeconverter;
+
+import com.ibm.icu.dev.tool.UOption;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.XMLConstants;
+
+import java.io.*;
+import java.util.*;
+import java.text.*;
+
+public final class XLIFF2ICUConverter {
+    
+    /**
+     * These must be kept in sync with getOptions().
+     */
+    private static final int HELP1 = 0;
+    private static final int HELP2 = 1;
+    private static final int SOURCEDIR = 2;
+    private static final int DESTDIR = 3;
+    private static final int TARGETONLY = 4;
+    private static final int SOURCEONLY = 5;
+    private static final int MAKE_SOURCE_ROOT = 6;
+    private static final int XLIFF_1_0 = 7;
+       
+    private static final UOption[] options = new UOption[] {
+        UOption.HELP_H(),
+        UOption.HELP_QUESTION_MARK(),
+        UOption.SOURCEDIR(),
+        UOption.DESTDIR(),
+        UOption.create("target-only", 't', UOption.OPTIONAL_ARG),
+        UOption.create("source-only", 'c', UOption.OPTIONAL_ARG),
+        UOption.create("make-source-root", 'r', UOption.NO_ARG),
+        UOption.create("xliff-1.0", 'x', UOption.NO_ARG)
+    };
+    
+    private static final int ARRAY_RESOURCE     = 0;
+    private static final int ALIAS_RESOURCE     = 1;
+    private static final int BINARY_RESOURCE    = 2;
+    private static final int INTEGER_RESOURCE   = 3;
+    private static final int INTVECTOR_RESOURCE = 4;
+    private static final int TABLE_RESOURCE     = 5;
+    
+    private static final String NEW_RESOURCES[] = {
+        "x-icu-array",
+        "x-icu-alias",
+        "x-icu-binary",
+        "x-icu-integer",
+        "x-icu-intvector",
+        "x-icu-table"
+    };
+    
+    private static final String OLD_RESOURCES[] = {
+        "array",
+        "alias",
+        "bin",
+        "int",
+        "intvector",
+        "table"
+    };
+    
+    private String resources[];
+    
+    private static final String ROOT            = "root";
+    private static final String RESTYPE         = "restype";
+    private static final String RESNAME         = "resname";
+    //private static final String YES             = "yes";
+    //private static final String NO              = "no";
+    private static final String TRANSLATE       = "translate";
+    //private static final String BODY            = "body";
+    private static final String GROUPS          = "group";
+    private static final String FILES           = "file";
+    private static final String TRANSUNIT       = "trans-unit";
+    private static final String BINUNIT         = "bin-unit";
+    private static final String BINSOURCE       = "bin-source";
+    //private static final String TS              = "ts";
+    //private static final String ORIGINAL        = "original";
+    private static final String SOURCELANGUAGE  = "source-language";
+    private static final String TARGETLANGUAGE  = "target-language";
+    private static final String TARGET          = "target";
+    private static final String SOURCE          = "source";
+    private static final String NOTE            = "note";
+    private static final String XMLLANG         = "xml:lang";
+    private static final String FILE            = "file";
+    private static final String INTVECTOR       = "intvector";
+    private static final String ARRAYS          = "array";
+    private static final String STRINGS         = "string";
+    private static final String BIN             = "bin";
+    private static final String INTS            = "int";
+    private static final String TABLE           = "table";
+    private static final String IMPORT          = "import";
+    private static final String HREF            = "href";
+    private static final String EXTERNALFILE    = "external-file";
+    private static final String INTERNALFILE    = "internal-file";
+    private static final String ALTTRANS        = "alt-trans";
+    private static final String CRC             = "crc";
+    private static final String ALIAS           = "alias";
+    private static final String LINESEP         = System.getProperty("line.separator");
+    private static final String BOM             = "\uFEFF";
+    private static final String CHARSET         = "UTF-8";
+    private static final String OPENBRACE       = "{";
+    private static final String CLOSEBRACE      = "}";
+    private static final String COLON           = ":";
+    private static final String COMMA           = ",";
+    private static final String QUOTE           = "\"";
+    private static final String COMMENTSTART    = "/**";
+    private static final String COMMENTEND      = " */";
+    private static final String TAG             = " * @";
+    private static final String COMMENTMIDDLE   = " * ";
+    private static final String SPACE           = " ";
+    private static final String INDENT          = "    ";
+    private static final String EMPTY           = "";
+    private static final String ID              = "id";
+    
+    public static void main(String[] args) {
+        XLIFF2ICUConverter cnv = new XLIFF2ICUConverter();
+        cnv.processArgs(args);
+    }
+    private String    sourceDir      = null;
+    //private String    fileName       = null;
+    private String    destDir        = null;
+    private boolean   targetOnly     = false;
+    private String    targetFileName = null; 
+    private boolean   makeSourceRoot = false;
+    private String    sourceFileName = null;
+    private boolean   sourceOnly     = false;
+    private boolean   xliff10        = false;
+    
+    private void processArgs(String[] args) {
+        int remainingArgc = 0;
+        try{
+            remainingArgc = UOption.parseArgs(args, options);
+        }catch (Exception e){
+            System.err.println("ERROR: "+ e.toString());
+            usage();
+        }
+        if(args.length==0 || options[HELP1].doesOccur || options[HELP2].doesOccur) {
+            usage();
+        }
+        if(remainingArgc==0){
+            System.err.println("ERROR: Either the file name to be processed is not "+
+                               "specified or the it is specified after the -t/-c \n"+
+                               "option which has an optional argument. Try rearranging "+
+                               "the options.");
+            usage();
+        }
+        if(options[SOURCEDIR].doesOccur) {
+            sourceDir = options[SOURCEDIR].value;
+        }
+        
+        if(options[DESTDIR].doesOccur) {
+            destDir = options[DESTDIR].value;
+        }
+        
+        if(options[TARGETONLY].doesOccur){
+            targetOnly = true;
+            targetFileName = options[TARGETONLY].value;
+        }
+        
+        if(options[SOURCEONLY].doesOccur){
+            sourceOnly = true;
+            sourceFileName = options[SOURCEONLY].value;
+        }
+        
+        if(options[MAKE_SOURCE_ROOT].doesOccur){
+            makeSourceRoot = true;
+        }
+        
+        if(options[XLIFF_1_0].doesOccur) {
+            xliff10 = true;
+        }
+        
+        if(destDir==null){
+            destDir = ".";
+        }
+        
+        if(sourceOnly == true && targetOnly == true){
+            System.err.println("--source-only and --target-only are specified. Please check the arguments and try again.");
+            usage();
+        }
+        
+        for (int i = 0; i < remainingArgc; i++) {
+            //int lastIndex = args[i].lastIndexOf(File.separator, args[i].length()) + 1; /* add 1 to skip past the separator */
+            //fileName = args[i].substring(lastIndex, args[i].length());
+            String xmlfileName = getFullPath(false,args[i]);
+            System.out.println("Processing file: "+xmlfileName);
+            createRB(xmlfileName);
+        }
+    }
+    
+    private void usage() {
+        System.out.println("\nUsage: XLIFF2ICUConverter [OPTIONS] [FILES]\n\n"+
+            "This program is used to convert XLIFF files to ICU ResourceBundle TXT files.\n"+
+            "Please refer to the following options. Options are not case sensitive.\n"+
+            "Options:\n"+
+            "-s or --sourcedir          source directory for files followed by path, default is current directory.\n" +
+            "-d or --destdir            destination directory, followed by the path, default is current directory.\n" +
+            "-h or -? or --help         this usage text.\n"+
+            "-t or --target-only        only generate the target language txt file, followed by optional output file name.\n" +
+            "                           Cannot be used in conjunction with --source-only.\n"+
+            "-c or --source-only        only generate the source language bundle followed by optional output file name.\n"+
+            "                           Cannot be used in conjunction with --target-only.\n"+
+            "-r or --make-source-root   produce root bundle from source elements.\n" +
+            "-x or --xliff-1.0          source file is XLIFF 1.0" +
+            "example: com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter -t <optional argument> -s xxx -d yyy myResources.xlf");
+        System.exit(-1);
+    }
+    
+    private String getFullPath(boolean fileType, String fName){
+        String str;
+        int lastIndex1 = fName.lastIndexOf(File.separator, fName.length()) + 1; /*add 1 to skip past the separator*/
+        int lastIndex2 = fName.lastIndexOf('.', fName.length());
+        if (fileType == true) {
+            if(lastIndex2 == -1){
+                fName = fName.trim() + ".txt";
+            }else{
+                if(!fName.substring(lastIndex2).equalsIgnoreCase(".txt")){
+                    fName =  fName.substring(lastIndex1,lastIndex2) + ".txt";
+                }
+            }
+            if (destDir != null && fName != null) {
+                str = destDir + File.separator + fName.trim();                   
+            } else {
+                str = System.getProperty("user.dir") + File.separator + fName.trim();
+            }
+        } else {
+            if(lastIndex2 == -1){
+                fName = fName.trim() + ".xlf";
+            }else{
+                if(!fName.substring(lastIndex2).equalsIgnoreCase(".xml") && fName.substring(lastIndex2).equalsIgnoreCase(".xlf")){
+                    fName = fName.substring(lastIndex1,lastIndex2) + ".xlf";
+                }
+            }
+            if(sourceDir != null && fName != null) {
+                str = sourceDir + File.separator + fName;
+            } else if (lastIndex1 > 0) {
+                str = fName;
+            } else {
+                str = System.getProperty("user.dir") + File.separator + fName;
+            }
+        }
+        return str;
+    }   
+
+    /*
+     * Utility method to translate a String filename to URL.  
+     *
+     * Note: This method is not necessarily proven to get the 
+     * correct URL for every possible kind of filename; it should 
+     * be improved.  It handles the most common cases that we've 
+     * encountered when running Conformance tests on Xalan.
+     * Also note, this method does not handle other non-file:
+     * flavors of URLs at all.
+     *
+     * If the name is null, return null.
+     * If the name starts with a common URI scheme (namely the ones 
+     * found in the examples of RFC2396), then simply return the 
+     * name as-is (the assumption is that it's already a URL)
+     * Otherwise we attempt (cheaply) to convert to a file:/// URL.
+     */
+    private static String filenameToURL(String filename){
+        // null begets null - something like the commutative property
+        if (null == filename){
+            return null;
+        }
+
+        // Don't translate a string that already looks like a URL
+        if (filename.startsWith("file:")
+            || filename.startsWith("http:")
+            || filename.startsWith("ftp:")
+            || filename.startsWith("gopher:")
+            || filename.startsWith("mailto:")
+            || filename.startsWith("news:")
+            || filename.startsWith("telnet:")
+           ){
+               return filename;
+           }
+        
+
+        File f = new File(filename);
+        String tmp = null;
+        try{
+            // This normally gives a better path
+            tmp = f.getCanonicalPath();
+        }catch (IOException ioe){
+            // But this can be used as a backup, for cases 
+            //  where the file does not exist, etc.
+            tmp = f.getAbsolutePath();
+        }
+
+        // URLs must explicitly use only forward slashes
+        if (File.separatorChar == '\\') {
+            tmp = tmp.replace('\\', '/');
+        }
+        // Note the presumption that it's a file reference
+        // Ensure we have the correct number of slashes at the 
+        //  start: we always want 3 /// if it's absolute
+        //  (which we should have forced above)
+        if (tmp.startsWith("/")){
+            return "file://" + tmp;
+        }
+        else{
+            return "file:///" + tmp;
+        }
+    }
+    private boolean isXmlLang (String lang){
+
+        int suffix;
+        char c;
+        
+        if (lang.length () < 2){
+            return false;
+        }
+
+        c = lang.charAt(1);
+        if (c == '-') {        
+            c = lang.charAt(0);
+            if (!(c == 'i' || c == 'I' || c == 'x' || c == 'X')){
+                return false;
+            }
+            suffix = 1;
+        } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+            c = lang.charAt(0);
+            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))){
+                return false;
+            }
+            suffix = 2;
+        } else{
+            return false;
+        }
+        while (suffix < lang.length ()) {
+            c = lang.charAt(suffix);
+            if (c != '-'){
+                break;
+            }
+            while (++suffix < lang.length ()) {
+                c = lang.charAt(suffix);
+                if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))){
+                    break;
+                }
+            }
+        }
+        return  ((lang.length() == suffix) && (c != '-'));
+    }
+    
+    private void createRB(String xmlfileName) {
+       
+        String urls = filenameToURL(xmlfileName);
+        DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+        dfactory.setNamespaceAware(true);
+        Document doc = null;
+        
+        if (xliff10) {
+            dfactory.setValidating(true);
+            resources = OLD_RESOURCES;
+        } else {
+            try {
+                SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                Schema schema = schemaFactory.newSchema();
+                
+                dfactory.setSchema(schema);
+            } catch (SAXException e) {
+                System.err.println("Can't create the schema...");
+                System.exit(-1);
+            }
+            
+            resources = NEW_RESOURCES;
+        }
+        
+        ErrorHandler nullHandler = new ErrorHandler() {
+            public void warning(SAXParseException e) throws SAXException {
+                            
+            }
+            public void error(SAXParseException e) throws SAXException {
+                System.err.println("The XLIFF document is invalid, please check it first: ");
+                System.err.println("Line "+e.getLineNumber()+", Column "+e.getColumnNumber());
+                System.err.println("Error: " + e.getMessage());
+                System.exit(-1);
+            }
+            public void fatalError(SAXParseException e) throws SAXException {
+                throw e;
+            }
+        };
+        
+        try {
+            DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
+            docBuilder.setErrorHandler(nullHandler);
+            doc = docBuilder.parse(new InputSource(urls));
+            
+            NodeList nlist = doc.getElementsByTagName(FILES);
+            if(nlist.getLength()>1){
+                throw new RuntimeException("Multiple <file> elements in the XLIFF file not supported.");
+            }
+                        
+            // get the value of source-language attribute
+            String sourceLang = getLanguageName(doc, SOURCELANGUAGE);
+            // get the value of target-language attribute
+            String targetLang = getLanguageName(doc, TARGETLANGUAGE);
+            
+            // get the list of <source> elements
+            NodeList sourceList = doc.getElementsByTagName(SOURCE);
+            // get the list of target elements
+            NodeList targetList = doc.getElementsByTagName(TARGET);
+            
+            // check if the xliff file has source elements in multiple languages
+            // the source-language value should be the same as xml:lang values
+            // of all the source elements.
+            String xmlSrcLang = checkLangAttribute(sourceList, sourceLang);
+            
+            // check if the xliff file has target elements in multiple languages
+            // the target-language value should be the same as xml:lang values
+            // of all the target elements.
+            String xmlTargetLang = checkLangAttribute(targetList, targetLang);
+            
+            // Create the Resource linked list which will hold the
+            // source and target bundles after parsing
+            Resource[] set = new Resource[2];
+            set[0] = new ResourceTable();
+            set[1] = new ResourceTable();
+            
+            // lenient extraction of source language
+            if(makeSourceRoot == true){ 
+                set[0].name = ROOT;
+            }else if(sourceLang!=null){
+                set[0].name = sourceLang.replace('-','_');
+            }else{
+                if(xmlSrcLang != null){
+                    set[0].name = xmlSrcLang.replace('-','_');
+                }else{
+                    System.err.println("ERROR: Could not figure out the source language of the file. Please check the XLIFF file.");
+                    System.exit(-1);
+                }
+            }
+            
+            // lenient extraction of the target language
+            if(targetLang!=null){
+                set[1].name = targetLang.replace('-','_');
+            }else{
+                if(xmlTargetLang!=null){
+                    set[1].name = xmlTargetLang.replace('-','_');
+                }else{
+                    System.err.println("WARNING: Could not figure out the target language of the file. Producing source bundle only.");
+                }
+            }
+   
+            
+            // check if any <alt-trans> elements are present
+            NodeList altTrans = doc.getElementsByTagName(ALTTRANS);
+            if(altTrans.getLength()>0){
+                System.err.println("WARNING: <alt-trans> elements in found. Ignoring all <alt-trans> elements.");
+            }
+            
+            // get all the group elements
+            NodeList list = doc.getElementsByTagName(GROUPS);
+            
+            // process the first group element. The first group element is 
+            // the base table that must be parsed recursively
+            parseTable(list.item(0), set);
+            
+            // write out the bundle
+            writeResource(set, xmlfileName);
+         }
+        catch (Throwable se) {
+            System.err.println("ERROR: " + se.toString());
+            System.exit(1);
+        }        
+    }
+    
+    private void writeResource(Resource[] set, String xmlfileName){
+        if(targetOnly==false){
+            writeResource(set[0], xmlfileName, sourceFileName);
+        }
+        if(sourceOnly == false){
+            if(targetOnly==true && set[1].name == null){
+                throw new RuntimeException("The "+ xmlfileName +" does not contain translation\n");
+            }
+            if(set[1].name != null){
+                writeResource(set[1], xmlfileName, targetFileName);
+            }
+        }
+    }
+    
+    private void writeResource(Resource set, String sourceFilename, String targetFilename){
+        try {
+            String outputFileName = null;
+            if(targetFilename != null){
+                outputFileName = destDir+File.separator+targetFilename+".txt";
+            }else{
+                outputFileName = destDir+File.separator+set.name+".txt";
+            }
+            FileOutputStream file = new FileOutputStream(outputFileName);
+            BufferedOutputStream writer = new BufferedOutputStream(file);
+
+            writeHeader(writer,sourceFilename);
+            
+            //Now start writing the resource;
+            Resource current = set;
+            while(current!=null){
+                current.write(writer, 0, false);
+                current = current.next;
+            }
+            writer.flush();
+            writer.close();
+        } catch (Exception ie) {
+            System.err.println("ERROR :" + ie.toString());
+            return;
+        }
+    }
+    
+    private String getLanguageName(Document doc, String lang){
+        if(doc!=null){
+            NodeList list = doc.getElementsByTagName(FILE);
+            Node node = list.item(0);
+            NamedNodeMap attr = node.getAttributes();
+            Node orig = attr.getNamedItem(lang);
+            
+            if(orig != null){
+                String name = orig.getNodeValue();
+                NodeList groupList = doc.getElementsByTagName(GROUPS);
+                Node group = groupList.item(0);
+                NamedNodeMap groupAtt = group.getAttributes();
+                Node id = groupAtt.getNamedItem(ID);
+                if(id!=null){
+                    String idVal = id.getNodeValue();
+                    
+                    if(!name.equals(idVal)){
+                        System.out.println("WARNING: The id value != language name. " +
+                                           "Please compare the output with the orignal " +
+                                           "ICU ResourceBundle before proceeding.");
+                    }
+                }
+                if(!isXmlLang(name)){
+                    System.err.println("The attribute "+ lang + "=\""+ name +
+                                       "\" of <file> element does not satisfy RFC 1766 conditions.");
+                    System.exit(-1);
+                }
+                return name;
+            }
+        }
+        return null;
+    }
+    
+    // check if the xliff file is translated into multiple languages
+    // The XLIFF specification allows for single <target> element
+    // as the child of <trans-unit> but the attributes of the 
+    // <target> element may different across <trans-unit> elements
+    // check for it. Similar is the case with <source> elements
+    private String checkLangAttribute(NodeList list, String origName){
+        String oldLangName=origName;
+        for(int i = 0 ;i<list.getLength(); i++){
+            Node node = list.item(i);
+            NamedNodeMap attr = node.getAttributes();
+            Node lang = attr.getNamedItem(XMLLANG);
+            String langName = null;
+            // the target element should always contain xml:lang attribute
+            if(lang==null ){
+                if(origName==null){
+                    System.err.println("Encountered <target> element without xml:lang attribute. Please fix the below element in the XLIFF file.\n"+ node.toString());
+                    System.exit(-1);
+                }else{
+                    langName = origName;
+                }
+            }else{
+                langName = lang.getNodeValue();
+            }
+
+            if(oldLangName!=null && langName!=null && !langName.equals(oldLangName)){
+                throw new RuntimeException("The <trans-unit> elements must be bilingual, multilingual tranlations not supported. xml:lang = " + oldLangName + 
+                                           " and xml:lang = " + langName);
+            }
+            oldLangName = langName;
+        }
+        return oldLangName;
+    }
+    
+    private class Resource{
+        String[] note = new String[20];
+        int noteLen = 0;
+        String translate;
+        String comment;
+        String name;
+        Resource next;
+        public String escapeSyntaxChars(String val){
+            // escape the embedded quotes
+            char[] str = val.toCharArray();
+            StringBuffer result = new StringBuffer();
+            for(int i=0; i<str.length; i++){
+                switch (str[i]){
+                    case '\u0022':
+                        result.append('\\'); //append backslash
+                    default:
+                        result.append(str[i]);
+                }      
+            }
+            return result.toString();
+        }
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            while(next!=null){
+                next.write(writer, numIndent+1, false);
+            }
+        }
+        public void writeIndent(OutputStream writer, int numIndent){
+            for(int i=0; i< numIndent; i++){
+                write(writer,INDENT);
+            }
+        }
+        public void write(OutputStream writer, String value){
+            try {
+                byte[] bytes = value.getBytes(CHARSET);
+                writer.write(bytes, 0, bytes.length);
+            } catch(Exception e) {
+                System.err.println(e);
+                System.exit(1);
+            }
+        }
+        public void writeComments(OutputStream writer, int numIndent){
+            boolean translateIsDefault = translate == null || translate.equals("yes");
+            
+            if(comment!=null || ! translateIsDefault || noteLen > 0){
+                // print the start of the comment
+                writeIndent(writer, numIndent);
+                write(writer, COMMENTSTART+LINESEP);
+                
+                // print comment if any
+                if(comment!=null){
+                    writeIndent(writer, numIndent);
+                    write(writer, COMMENTMIDDLE);
+                    write(writer, comment);
+                    write(writer, LINESEP);
+                }
+                
+                // print the translate attribute if any
+                if(! translateIsDefault){
+                    writeIndent(writer, numIndent);
+                    write(writer, TAG+TRANSLATE+SPACE);
+                    write(writer, translate);
+                    write(writer, LINESEP);
+                }
+                
+                // print note elements if any
+                for(int i=0; i<noteLen; i++){
+                    if(note[i]!=null){
+                        writeIndent(writer, numIndent);
+                        write(writer, TAG+NOTE+SPACE+note[i]);
+                        write(writer, LINESEP);
+                    }
+                }
+                
+                // terminate the comment
+                writeIndent(writer, numIndent);
+                write(writer, COMMENTEND+LINESEP);
+            }          
+        }
+    }
+
+    private class ResourceString extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                
+                write(writer,QUOTE+escapeSyntaxChars(val)+QUOTE); 
+            }else{
+                write(writer, name+COLON+STRINGS+ OPENBRACE + QUOTE + escapeSyntaxChars(val) + QUOTE+ CLOSEBRACE + LINESEP);
+            }
+        }
+    }
+    private class ResourceAlias extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            String line =  ((name==null)? EMPTY: name)+COLON+ALIAS+ OPENBRACE+QUOTE+escapeSyntaxChars(val)+QUOTE+CLOSEBRACE;
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                write(writer,line); 
+            }else{
+                write(writer, line+LINESEP);
+            }
+        }
+    }
+    private class ResourceInt extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            String line =  ((name==null)? EMPTY: name)+COLON+INTS+ OPENBRACE + val +CLOSEBRACE;
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                write(writer,line); 
+            }else{
+                write(writer, line+LINESEP);
+            }
+        }
+    }
+    private class ResourceBinary extends Resource{
+        String internal;
+        String external;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            if(internal==null){
+                String line = ((name==null) ? EMPTY : name)+COLON+IMPORT+ OPENBRACE+QUOTE+external+QUOTE+CLOSEBRACE + ((bare==true) ?  EMPTY : LINESEP);
+                write(writer, line);
+            }else{
+                String line = ((name==null) ? EMPTY : name)+COLON+BIN+ OPENBRACE+internal+CLOSEBRACE+ ((bare==true) ?  EMPTY : LINESEP);
+                write(writer,line);
+            }
+            
+        }
+    }
+    private class ResourceIntVector extends Resource{
+        ResourceInt first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+INTVECTOR+OPENBRACE+LINESEP);
+            numIndent++;
+            ResourceInt current = (ResourceInt) first;
+            while(current != null){
+                //current.write(writer, numIndent, true);
+                writeIndent(writer, numIndent);
+                write(writer, current.val);
+                write(writer, COMMA+LINESEP);
+                current = (ResourceInt) current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    private class ResourceTable extends Resource{
+        Resource first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+TABLE+OPENBRACE+LINESEP);
+            numIndent++;
+            Resource current = first;
+            while(current != null){
+                current.write(writer, numIndent, false);
+                current = current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    private class ResourceArray extends Resource{
+        Resource first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+ARRAYS+OPENBRACE+LINESEP);
+            numIndent++;
+            Resource current = first;
+            while(current != null){
+                current.write(writer, numIndent, true);
+                write(writer, COMMA+LINESEP);
+                current = current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    
+    private String getAttributeValue(Node sNode, String attribName){
+        String value=null;
+        Node node = sNode;
+
+        NamedNodeMap attributes = node.getAttributes();
+        Node attr = attributes.getNamedItem(attribName);
+        if(attr!=null){
+            value = attr.getNodeValue();
+        }
+
+        return value;
+    }
+    
+    private void parseResourceString(Node node, ResourceString[] set){
+        ResourceString currentSource;
+        ResourceString currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                    currentSource.translate = currentTarget.translate = translate;
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+
+    private void parseResourceInt(Node node, ResourceInt[] set){
+        ResourceInt currentSource;
+        ResourceInt currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.translate = currentTarget.translate = translate;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+    
+    private void parseResourceAlias(Node node, ResourceAlias[] set){
+        ResourceAlias currentSource;
+        ResourceAlias currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.translate = currentTarget.translate = translate;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+    private void parseResourceBinary(Node node, ResourceBinary[] set){
+        ResourceBinary currentSource;
+        ResourceBinary currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(BINSOURCE)){
+                    // loop to pickup internal-file/extenal-file element
+                    continue;
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(INTERNALFILE)){
+                    // if there is a target element replace it
+                    String crc = getAttributeValue(transUnit, CRC);
+                    String value = transUnit.getFirstChild().getNodeValue();
+                    
+                    //verify that the binary value conforms to the CRC
+                    if(Integer.parseInt(crc, 10) != CalculateCRC32.computeCRC32(value)) {
+                        System.err.println("ERROR: CRC value incorrect! Please check.");
+                        System.exit(1);
+                    }
+                    
+                    currentTarget.internal = currentSource.internal= value;
+                    
+                }else if(name.equals(EXTERNALFILE)){
+                    currentSource.external = getAttributeValue(transUnit, HREF);
+                    currentTarget.external = currentSource.external;
+                }
+            }
+            
+        }
+    }
+    private void parseTransUnit(Node node, Resource[] set){
+
+        String attrType = getAttributeValue(node, RESTYPE);
+        String translate = getAttributeValue(node, TRANSLATE);
+        if(attrType==null || attrType.equals(STRINGS)){
+            ResourceString[] strings = new ResourceString[2];
+            strings[0] = new ResourceString();
+            strings[1] = new ResourceString();
+            parseResourceString(node, strings);
+            strings[0].translate = strings[1].translate = translate;
+            set[0] = strings[0];
+            set[1] = strings[1];
+        }else if(attrType.equals(resources[INTEGER_RESOURCE])){
+            ResourceInt[] ints = new ResourceInt[2];
+            ints[0] = new ResourceInt();
+            ints[1] = new ResourceInt();
+            parseResourceInt(node, ints);
+            ints[0].translate = ints[1].translate = translate;
+            set[0] = ints[0];
+            set[1] = ints[1];
+        }else if(attrType.equals(resources[ALIAS_RESOURCE])){
+            ResourceAlias[] ints = new ResourceAlias[2];
+            ints[0] = new ResourceAlias();
+            ints[1] = new ResourceAlias();
+            parseResourceAlias(node, ints);
+            ints[0].translate = ints[1].translate = translate;
+            set[0] = ints[0];
+            set[1] = ints[1];
+        }
+    }
+
+    private void parseBinUnit(Node node, Resource[] set){
+        if (getAttributeValue(node, RESTYPE).equals(resources[BINARY_RESOURCE])) {
+            ResourceBinary[] bins = new ResourceBinary[2];
+            
+            bins[0] = new ResourceBinary();
+            bins[1] = new ResourceBinary();
+            
+            Resource currentSource = bins[0];
+            Resource currentTarget = bins[1];
+            String resName   = getAttributeValue(node, RESNAME);
+            String translate = getAttributeValue(node, TRANSLATE);
+            
+            currentTarget.name = currentSource.name = resName;
+            currentSource.translate = currentTarget.translate = translate;
+            
+            for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+                short type = child.getNodeType();
+                String name = child.getNodeName();
+                
+                if(type == Node.COMMENT_NODE){
+                    currentSource.comment = currentTarget.comment = child.getNodeValue();
+                }else if(type == Node.ELEMENT_NODE){
+                    if(name.equals(BINSOURCE)){
+                        parseResourceBinary(child, bins);
+                    }else if(name.equals(NOTE)){
+                        String note =  child.getFirstChild().getNodeValue();
+                        
+                        currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                    }
+                }
+            }
+            
+            set[0] = bins[0];
+            set[1] = bins[1];
+        }
+    }
+    
+    private void parseArray(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceArray();
+            set[1] = new ResourceArray();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        String resName = getAttributeValue(node, RESNAME);
+        currentSource.name = currentTarget.name = resName;
+        boolean isFirst = true;
+        
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                       ((ResourceArray) currentSource).first = next[0];
+                       ((ResourceArray) currentTarget).first = next[1];
+                       currentSource = ((ResourceArray) currentSource).first;
+                       currentTarget = ((ResourceArray) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }else if(name.equals(BINUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseBinUnit(child, next);
+                    if(isFirst==true){
+                       ((ResourceArray) currentSource).first = next[0];
+                       ((ResourceArray) currentTarget).first = next[1];
+                       currentSource = ((ResourceArray) currentSource).first.next;
+                       currentTarget = ((ResourceArray) currentTarget).first.next;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }
+            }
+        }
+    }
+    private void parseIntVector(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceIntVector();
+            set[1] = new ResourceIntVector();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        String resName = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node,TRANSLATE);
+        currentSource.name = currentTarget.name = resName;
+        currentSource.translate = translate;
+        boolean isFirst = true;
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceIntVector) currentSource).first = (ResourceInt)next[0];
+                       ((ResourceIntVector) currentTarget).first = (ResourceInt) next[1];
+                       currentSource = ((ResourceIntVector) currentSource).first;
+                       currentTarget = ((ResourceIntVector) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }
+            }
+        }
+    }
+    private void parseTable(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceTable();
+            set[1] = new ResourceTable();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        
+        String resName = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node,TRANSLATE);
+        if(resName!=null && currentSource.name==null && currentTarget.name==null){
+            currentSource.name = currentTarget.name = resName;
+        }
+        currentTarget.translate = currentSource.translate = translate;
+        
+        boolean isFirst = true;
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(GROUPS)){
+                    Resource[] next = new Resource[2];
+                    parseGroup(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }else if(name.equals(BINUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseBinUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }
+            }
+        }
+    }
+    
+    private void parseGroup(Node node, Resource[] set){
+
+        // figure out what kind of group this is
+        String resType = getAttributeValue(node, RESTYPE);
+        if(resType.equals(resources[ARRAY_RESOURCE])){
+            parseArray(node, set);
+        }else if( resType.equals(resources[TABLE_RESOURCE])){
+            parseTable(node, set);
+        }else if( resType.equals(resources[INTVECTOR_RESOURCE])){
+            parseIntVector(node, set);
+        }
+    }
+    
+
+    private void writeLine(OutputStream writer, String line) {
+        try {
+            byte[] bytes = line.getBytes(CHARSET);
+            writer.write(bytes, 0, bytes.length);
+        } catch (Exception e) {
+            System.err.println(e);
+            System.exit(1);
+        }
+    }
+    
+    private void writeHeader(OutputStream writer, String fileName){
+        final String header = 
+            "// ***************************************************************************" + LINESEP +
+            "// *" + LINESEP +
+            "// * Tool: com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter.java" + LINESEP +
+            "// * Date & Time: {0,date,MM/dd/yyyy hh:mm:ss a z}"+ LINESEP +
+            "// * Source File: {1}" + LINESEP +
+            "// *" + LINESEP +                    
+            "// ***************************************************************************" + LINESEP;
+            
+        writeBOM(writer);
+        MessageFormat format = new MessageFormat(header);
+        Object args[] = {new Date(System.currentTimeMillis()), fileName};
+
+        writeLine(writer, format.format(args));
+    }
+    
+    private  void writeBOM(OutputStream buffer) {
+        try {
+            byte[] bytes = BOM.getBytes(CHARSET);
+            buffer.write(bytes, 0, bytes.length);
+        } catch(Exception e) {
+            System.err.println(e);
+            System.exit(1);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub b/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub
new file mode 100644
index 0000000..2aff183
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: icu4j.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: XLIFF to ICU conversion tool
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: XLIFF to ICU Converter
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
new file mode 100644
index 0000000..c1e3c45
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
@@ -0,0 +1,870 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.rbbi;
+
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.util.Vector;
+
+public class BuildDictionaryFile {
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+        String encoding = "";
+        String outputFile = "";
+        String listingFile = "";
+
+        if (args.length >= 2)
+            encoding = args[1];
+
+        if(args.length >= 3)
+            outputFile = args[2];
+
+        if (args.length >= 4)
+            listingFile = args[3];
+
+        BuildDictionaryFile dictionary = new BuildDictionaryFile();
+        dictionary.build(filename, encoding);
+
+        DataOutputStream out = null;
+        if (outputFile.length() != 0) {
+            out = new DataOutputStream(new FileOutputStream(outputFile));
+            dictionary.writeDictionaryFile(out);
+        }
+
+        PrintWriter listing = null;
+        if (listingFile.length() != 0) {
+            listing = new PrintWriter(new OutputStreamWriter(new FileOutputStream(listingFile), "UnicodeLittle"));
+            dictionary.printWordList("", 0, listing);
+            listing.close();
+        }
+    }
+
+    public BuildDictionaryFile() {
+    }
+
+    public void build(String filename, String encoding)
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        FileInputStream file = new FileInputStream(filename);
+        InputStreamReader in;
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildColumnMap(in);
+
+        file = new FileInputStream(filename);
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildStateTable(in);
+//printTable();
+    }
+
+    public void buildColumnMap(InputStreamReader in) throws IOException {
+System.out.println("Building column map...");
+        UnicodeSet charsInFile = new UnicodeSet();
+        int c = in.read();
+int totalChars = 0;
+        while (c >= 0) {
+++totalChars; if (totalChars > 0 && totalChars % 5000 == 0) System.out.println("Read " + totalChars + " characters...");
+            if (c > ' ')
+                charsInFile.add((char)c);
+            c = in.read();
+        }
+//        Test.debugPrintln(charsInFile.toString());
+
+        StringBuffer tempReverseMap = new StringBuffer();
+        tempReverseMap.append(' ');
+
+        columnMap = new CompactByteArray();
+        int n = charsInFile.getRangeCount();
+        byte p = 1;
+        for (int i=0; i<n; ++i) {
+            char start = (char) charsInFile.getRangeStart(i);
+            char end = (char) charsInFile.getRangeEnd(i);
+            for (char ch = start; ch <= end; ch++) {
+                if (columnMap.elementAt(Character.toLowerCase(ch)) == 0) {
+                    columnMap.setElementAt(Character.toUpperCase(ch), Character.toUpperCase(ch),
+                                        p);
+                    columnMap.setElementAt(Character.toLowerCase(ch), Character.toLowerCase(ch),
+                                        p);
+                    ++p;
+                    tempReverseMap.append(ch);
+                }
+            }
+        }
+//System.out.println("Compacting...");
+        columnMap.compact();
+
+//System.out.println(tempReverseMap.toString());
+        reverseColumnMap = new char[p];
+        Utility.getChars(tempReverseMap, 0, p, reverseColumnMap, 0);
+
+        System.out.println("total columns = " + p);
+        numCols = p;
+        numColGroups = (numCols >> 5) + 1;
+
+/*
+short[] index = columnMap.getIndexArray();
+System.out.println("Index:");
+for (int i = 0; i < index.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i * 128) + ":");
+}
+System.out.print("\t" + Integer.toHexString(index[i]));
+}
+System.out.println();
+byte[] data = columnMap.getStringArray();
+System.out.print("Values:");
+for (int i = 0; i < data.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i) + ":");
+}
+if (data[i] == 0)
+System.out.print("\t.");
+else
+System.out.print("\t" + Integer.toString(data[i]));
+}
+System.out.println();
+*/
+    }
+
+    public void buildStateTable(InputStreamReader in) throws IOException {
+        Vector tempTable = new Vector();
+        tempTable.addElement(new int[numCols + 1]);
+        int state = 0;
+
+        int c = in.read();
+        int[] row = null;
+        int charsInWord = 0;
+        while (c >= 0) {
+            charsInWord++;
+            short column = columnMap.elementAt((char)c);
+
+            row = (int[])(tempTable.elementAt(state));
+            if (column != 0) {
+                if (row[column] == 0) {
+                    row[column] = tempTable.size();
+                    ++row[numCols];
+                    state = (tempTable.size());
+                    tempTable.addElement(new int[numCols + 1]);
+                }
+                else
+                    state = row[column];
+            }
+            else if (state != 0) {
+                if (row[0] != -1) {
+                    row[0] = -1;
+                    ++row[numCols];
+                    uniqueWords++;
+                    totalUniqueWordChars += charsInWord;
+                }
+                totalWords++;
+if (totalWords % 5000 == 0) System.out.println("Read " + totalWords + " words, " + tempTable.size() + " rows...");
+                charsInWord = 0;
+                state = 0;
+            }
+            c = in.read();
+        }
+        if (state != 0) {
+            row = (int[])(tempTable.elementAt(state));
+            if (row[0] != -1) {
+                row[0] = -1;
+                uniqueWords++;
+                totalUniqueWordChars += charsInWord;
+            }
+            totalWords++;
+        }
+
+        compress(tempTable);
+
+        table = new short[numCols * tempTable.size()];
+        for (int i = 0; i < tempTable.size(); i++) {
+            row = (int[])tempTable.elementAt(i);
+            for (int j = 0; j < numCols; j++)
+                table[i * numCols + j] = (short)row[j];
+        }
+    }
+
+    private void compress(Vector tempTable) {
+System.out.println("Before compression:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        deleteDuplicateRows(tempTable);
+System.out.println("After removing duplicate rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        stackRows(tempTable);
+if (tempTable.size() > 32767) throw new IllegalArgumentException("Too many rows in table!");
+System.out.println("After doubling up on rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+    }
+
+/*
+experimental...
+    private void deleteDuplicateRows(Vector tempTable) {
+        int[] rowNumMap = new int[tempTable.size()];
+        for (int i = 0; i < rowNumMap.length; i++)
+            rowNumMap[i] = i;
+
+        int nextClass = numCols;
+        int currentClass;
+        int lastClass;
+        boolean split;
+        int[] row1, row2, tempRow;
+        int tempCat;
+
+        do {
+System.out.println("Making a pass (" + nextClass + " classes)...");
+            currentClass = 0;
+            lastClass = nextClass;
+            while (currentClass < nextClass) {
+System.out.println("   currentClass = " + currentClass);
+                split = false;
+                row1 = row2 = null;
+                for (int i = 0; i < tempTable.size(); i++) {
+                    tempRow = (int[])tempTable.elementAt(i);
+                    if (tempRow[numCols] == currentClass) {
+                        if (row1 == null) {
+                            row1 = (int[])tempTable.elementAt(i);
+                        }
+                        else {
+                            row2 = (int[])tempTable.elementAt(i);
+                            for (int j = 0; j < numCols; j++) {
+                                if ((row1[j] == 0) != (row2[j] == 0) ||
+                                            (row1[j] == -1) != (row2[j] == -1)) {
+                                    row2[numCols] = nextClass;
+                                    split = true;
+                                    break;
+                                }
+                                else if (row1[j] != 0 && row2[j] != 0 && row1[j] != -1
+                                                && row2[j] != -1) {
+                                    tempRow = (int[])tempTable.elementAt(row1[j]);
+                                    tempCat = tempRow[numCols];
+                                    tempRow = (int[])tempTable.elementAt(row2[j]);
+                                    if (tempCat != tempRow[numCols]) {
+                                        row2[numCols] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                if (split)
+                    ++nextClass;
+                ++currentClass;
+//System.out.println();
+            }
+        } while (lastClass != nextClass);
+
+        int[] representatives = new int[nextClass];
+        for (int i = 1; i < tempTable.size(); i++) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (representatives[tempRow[numCols]] == 0)
+                representatives[tempRow[numCols]] = i;
+            else
+                rowNumMap[i] = representatives[tempRow[numCols]];
+        }
+System.out.println("Renumbering...");
+
+        // renumber all remaining rows
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (rowNumMap[i] != i)
+                tempTable.setElementAt(null, i);
+        int newRowNum = 0;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) != null)
+                rowNumMap[i] = newRowNum++;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) == null)
+                rowNumMap[i] = rowNumMap[rowNumMap[i]];
+
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (tempRow == null)
+                tempTable.removeElementAt(i);
+            else {
+                for (int j = 0; j < numCols; j++)
+                    if (tempRow[j] != -1)
+                        tempRow[j] = rowNumMap[j];
+            }
+        }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+    }
+*/
+
+    private void deleteDuplicateRows(Vector tempTable) {
+        Vector work = (Vector)(tempTable.clone());
+        boolean didDeleteRow = true;
+
+        Vector tempMapping = new Vector(work.size());
+        int[] mapping = new int[work.size()];
+        for (int i = 0; i < mapping.length; i++) {
+            mapping[i] = i;
+            tempMapping.addElement(new Integer(i));
+        }
+        boolean[] tbd = new boolean[work.size()];
+
+        while (didDeleteRow) {
+System.out.println(" " + work.size() + " rows...");
+int deletedRows = 0;
+            didDeleteRow = false;
+
+            sortTable(work, tempMapping, mapping, 1, work.size());
+            for (int i = 0; i < work.size() - 1; ) {
+System.out.print("Deleting, inspecting row " + i + ", deleted " + deletedRows + " rows...\r");
+                int rowToDelete = ((Integer)(tempMapping.elementAt(i + 1))).intValue();
+                int rowToMapTo = ((Integer)(tempMapping.elementAt(i))).intValue();
+                if (compareRows((int[])work.elementAt(i), (int[])work.elementAt(i + 1),
+                                mapping) == 0) {
+                    tbd[rowToDelete] = true;
+                    tempTable.setElementAt(null, rowToDelete);
+                    while (tbd[mapping[rowToMapTo]])
+                        mapping[rowToMapTo] = mapping[mapping[rowToMapTo]];
+                    mapping[rowToDelete] = mapping[rowToMapTo];
+                    didDeleteRow = true;
+deletedRows++;
+                    work.removeElementAt(i + 1);
+                    tempMapping.removeElementAt(i + 1);
+                }
+                else
+                    i++;
+            }
+            for (int i = 0; i < mapping.length; i++) {
+                if (tbd[i] && tbd[mapping[i]])
+                    mapping[i] = mapping[mapping[i]];
+            }
+        }
+
+        int decrementBy = 0;
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                decrementBy++;
+            else
+                mapping[i] -= decrementBy;
+        }
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                mapping[i] = mapping[mapping[i]];
+        }
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            if (tbd[i])
+                tempTable.removeElementAt(i);
+            else {
+                int[] row = (int[])tempTable.elementAt(i);
+                for (int j = 0; j < numCols; j++)
+                    row[j] = (row[j] == -1) ? -1 : mapping[row[j]];
+            }
+        }
+    }
+
+    private void sortTable(Vector tbl, Vector tempMapping, int[] mapping, int start, int end) {
+System.out.print("Sorting (" + start + ", " + end + ")...\r");
+        if (start + 1 >= end)
+            return;
+        else if (start + 10 >= end) {
+            for (int i = start + 1; i < end; i++) {
+                int[] row = (int[])tbl.elementAt(i);
+                Integer tempMap = (Integer)tempMapping.elementAt(i);
+                int j;
+                for (j = i - 1; j >= start; j--) {
+                    if (compareRows((int[])tbl.elementAt(j), row, mapping) > 0) {
+                        tbl.setElementAt((int[])tbl.elementAt(j), j + 1);
+                        tempMapping.setElementAt((Integer)tempMapping.elementAt(j), j + 1);
+                    }
+                    else {
+                        tbl.setElementAt(row, j + 1);
+                        tempMapping.setElementAt(tempMap, j + 1);
+                        break;
+                    }
+                }
+                if (j < start) {
+                    tbl.setElementAt(row, start);
+                    tempMapping.setElementAt(tempMap, start);
+                }
+            }
+        }
+        else {
+            int boundaryPos = (start + end) / 2;
+            int i;
+            boolean allTheSame = true;
+            int firstDifferent = 0;
+
+            do {
+                int[] boundary = (int[])tbl.elementAt(boundaryPos);
+                i = start;
+                int j = end - 1;
+                int[] row = null;
+                byte compResult;
+                while (i < j) {
+                    row = (int[])tbl.elementAt(i);
+                    while (i <= j && compareRows(row, boundary, mapping) < 0) {
+                        i++;
+                        row = (int[])tbl.elementAt(i);
+                    }
+
+                    row = (int[])tbl.elementAt(j);
+                    compResult = compareRows(row, boundary, mapping);
+                    while (i <= j && (compResult >= 0)) {
+                        if (compResult != 0) {
+                            allTheSame = false;
+                            firstDifferent = j;
+                        }
+                        j--;
+                        row = (int[])tbl.elementAt(j);
+                        compResult = compareRows(row, boundary, mapping);
+                    }
+                    if (i <= j) {
+                        row = (int[])tbl.elementAt(j);
+                        tbl.setElementAt(tbl.elementAt(i), j);
+                        tbl.setElementAt(row, i);
+                        Object temp = tempMapping.elementAt(j);
+                        tempMapping.setElementAt(tempMapping.elementAt(i), j);
+                        tempMapping.setElementAt(temp, i);
+                    }
+                }
+                if (i <= start) {
+                    if (allTheSame)
+                        return;
+                    else
+                        boundaryPos = firstDifferent;
+                }
+            } while (i <= start);
+            sortTable(tbl, tempMapping, mapping, start, i);
+            sortTable(tbl, tempMapping, mapping, i, end);
+        }
+    }
+
+    private byte compareRows(int[] row1, int[] row2, int[] mapping) {
+        for (int i = 0; i < numCols; i++) {
+            int c1 = (row1[i] == -1) ? -1 : mapping[row1[i]];
+            int c2 = (row2[i] == -1) ? -1 : mapping[row2[i]];
+            if (c1 < c2)
+                return -1;
+            else if (c1 > c2)
+                return 1;
+        }
+        return 0;
+    }
+
+    private int[] buildRowIndex(Vector tempTable) {
+        int[] tempRowIndex = new int[tempTable.size()];
+        rowIndexFlagsIndex = new short[tempTable.size()];
+        Vector tempRowIndexFlags = new Vector();
+        rowIndexShifts = new byte[tempTable.size()];
+
+        // build the row index.  Each entry in the row index starts out referring
+        // to the original row (so it doesn't actually do any mapping), and we set
+        // up the index flags to show which cells in the row are populated
+        for (int i = 0; i < tempTable.size(); i++) {
+            tempRowIndex[i] = i;
+
+            int[] row = (int[])tempTable.elementAt(i);
+            if (row[numCols] == 1 && row[0] == 0) {
+                int j = 0;
+                while (row[j] == 0)
+                    ++j;
+                rowIndexFlagsIndex[i] = (short)(-j);
+            }
+            else {
+                int[] flags = new int[numColGroups];
+                int nextFlag = 1;
+                int colGroup = 0;
+                for (int j = 0; j < numCols; j++) {
+                    if (row[j] != 0)
+                        flags[colGroup] |= nextFlag;
+                    nextFlag <<= 1;
+                    if (nextFlag == 0) {
+                        ++colGroup;
+                        nextFlag = 1;
+                    }
+                }
+                colGroup = 0;
+                int j = 0;
+                while (j < tempRowIndexFlags.size()) {
+                    if (((Integer)tempRowIndexFlags.elementAt(j)).intValue() ==
+                                    flags[colGroup]) {
+                        ++colGroup;
+                        ++j;
+                        if (colGroup >= numColGroups)
+                            break;
+                    }
+                    else if (colGroup != 0)
+                        colGroup = 0;
+                    else
+                        ++j;
+                }
+                rowIndexFlagsIndex[i] = (short)(j - colGroup);
+                while (colGroup < numColGroups) {
+                    tempRowIndexFlags.addElement(new Integer(flags[colGroup]));
+                    ++colGroup;
+                }
+            }
+        }
+        rowIndexFlags = new int[tempRowIndexFlags.size()];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = ((Integer)tempRowIndexFlags.elementAt(i)).intValue();
+System.out.println("Number of column groups = " + numColGroups);
+System.out.println("Size of rowIndexFlags = " + rowIndexFlags.length);
+
+        return tempRowIndex;
+    }
+
+    private void stackRows(Vector tempTable) {
+/*
+System.out.print("Row:\t");
+for (int i = 0; i < numCols; i++)
+System.out.print(reverseColumnMap[i] + "\t");
+System.out.println();
+for (int i = 0; i < tempTable.size(); i++) {
+System.out.print(Integer.toString(i) + ":\t");
+int[] row = (int[])tempTable.elementAt(i);
+for (int j = 0; j < row.length; j++)
+if (row[j] != 0) System.out.print(Integer.toString(row[j]) + "\t");
+else System.out.print(".\t");
+System.out.println();
+}
+*/
+
+        int[] tempRowIndex = buildRowIndex(tempTable);
+        boolean[] tbd = new boolean[tempTable.size()];
+
+        // now we actually go through and stack rows together
+        for (int i = 0; i < tempTable.size(); i++) {
+            if (tbd[i])
+                continue;
+System.out.print("Stacking, inspecting row " + i + "...\r");
+//System.out.println("Stacking, inspecting row " + i + "...");
+
+            int[] destRow = (int[])tempTable.elementAt(i);
+
+            boolean[] tempFlags = new boolean[numCols];
+            boolean[] filledCells = new boolean[numCols];
+            for (int j = 0; j < numCols; j++)
+                filledCells[j] = destRow[j] != 0;
+
+            for (int j = i + 1; destRow[numCols] < numCols && j < tempTable.size(); j++) {
+                if (tbd[j])
+                    continue;
+
+                int[] srcRow = (int[])tempTable.elementAt(j);
+                if (srcRow[numCols] + destRow[numCols] > numCols)
+                    continue;
+
+                int maxLeftShift = -999;
+                int maxRightShift = 0;
+                for (int k = 0; k < numCols; k++) {
+                    tempFlags[k] = srcRow[k] != 0;
+                    if (tempFlags[k]) {
+                        if (maxLeftShift == -999)
+                            maxLeftShift = -k;
+                        maxRightShift = (numCols - 1) - k;
+                    }
+                }
+
+                int shift;
+                for (shift = maxLeftShift; shift <= maxRightShift; shift++) {
+                    int k;
+                    for (k = 0; k < numCols; k++) {
+                        if (tempFlags[k] && filledCells[k + shift])
+                            break;
+                    }
+                    if (k >= numCols)
+                        break;
+                }
+                if (shift <= maxRightShift) {
+//System.out.println("Packing row " + j + " into row " + i + " with shift = " + shift);
+                    for (int k = 0; k < numCols; k++) {
+                        if (tempFlags[k]) {
+                            filledCells[k + shift] = true;
+                            destRow[k + shift] = srcRow[k];
+                            ++destRow[numCols];
+                        }
+                    }
+                    tbd[j] = true;
+                    tempRowIndex[j] = i;
+                    rowIndexShifts[j] = (byte)shift;
+                }
+            }
+        }
+
+        // finally, we squeeze out all the deleted rows
+        int decrementBy = 0;
+        for (int i = 0; i < tempRowIndex.length; i++) {
+            if (!tbd[i])
+                tempRowIndex[i] -= decrementBy;
+            else
+                ++decrementBy;
+        }
+        rowIndex = new short[tempRowIndex.length];
+        for (int i = tempRowIndex.length - 1; i >= 0; i--) {
+            if (tbd[i]) {
+                rowIndex[i] = (short)(tempRowIndex[tempRowIndex[i]]);
+                tempTable.removeElementAt(i);
+            }
+            else
+                rowIndex[i] = (short)tempRowIndex[i];
+        }
+    }
+
+//    private void printTable() {
+//        short cell;
+//        int populatedCells = 0;
+///*
+//        System.out.println("Conceptual table:");
+//        System.out.println(" Row:   a   b   c   d   e   f   g   h   i   j   k   l   m   n"
+//                + "   o   p   q   r   s   t   u   v   w   x   y   z   '   #");
+//
+//        boolean[] rowPrintFlags = new boolean[rowIndex.length];
+//        printConceptualTable("", 0, rowPrintFlags);
+//*/
+//
+//        System.out.println();
+//        System.out.println("Conceptual table:");
+//        System.out.print(" Row:");
+//        for (int i = 0; i < reverseColumnMap.length; i++) {
+//                System.out.print("   " + reverseColumnMap[i]);
+//        }
+//        for (int i = 0; i < rowIndex.length; i++) {
+//            System.out.println();
+//            printNumber(i, 4);
+//            System.out.print(":");
+//            for (int j = 0; j < numCols; j++)
+//                printNumber(at(i, j), 4);
+//        }
+//        System.out.println('\n');
+//
+//        System.out.println();
+//        System.out.println("Internally stored table:");
+//        System.out.print(" Row:");
+//        for (int i = 0; i < reverseColumnMap.length; i++) {
+//                System.out.print("   " + reverseColumnMap[i]);
+//        }
+//        for (int i = 0; i < table.length; i++) {
+//            if (i % numCols == 0) {
+//                System.out.println();
+//                printNumber(i / numCols, 4);
+//                System.out.print(":");
+//            }
+//            cell = table[i];
+//            if (cell != 0)
+//                populatedCells++;
+//            printNumber(cell, 4);
+//        }
+//        System.out.println('\n');
+//
+//System.out.println("Row index:");
+//for (int i = 0; i < rowIndex.length; i++) {
+//    System.out.print("   " + i + " -> " + rowIndex[i]);
+//    if (rowIndexFlagsIndex[i] < 0)
+//        System.out.print(", flags = " + Integer.toBinaryString((1 << (-rowIndexFlagsIndex[i]))) + " (" + rowIndexFlagsIndex[i]);
+//    else
+//        System.out.print(", flags = " + Integer.toBinaryString(rowIndexFlags[rowIndexFlagsIndex[i]]) + " (" + rowIndexFlagsIndex[i]);
+//    System.out.println("), shift = " + rowIndexShifts[i]);
+//}
+///*
+//        int theoreticalMinRows = populatedCells / numCols;
+//        if (populatedCells % numCols != 0)
+//            theoreticalMinRows++;
+//        int oneCellRows = 0;
+//        for (int i = 0; i < rowIndexFlags.length; i++) {
+//            double temp = Math.log(rowIndexFlags[i]) / Math.log(2);
+//            if (temp == (int)temp)
+//                oneCellRows++;
+//        }
+//
+//        System.out.println('\n');
+//        System.out.println("Total words in input = " + totalWords);
+//        System.out.println("Total unique words = " + uniqueWords + ", comprising " +
+//                        totalUniqueWordChars + " characters\n");
+//        System.out.println("Number of populated cells = " + populatedCells);
+//        System.out.println("Total number of cells = " + (table.length));
+//        System.out.println("Residency = " + ((float)populatedCells / table.length * 100) + '%');
+//        System.out.println("Ratio of populated cells to unique-word characters = " +
+//                        ((float)populatedCells / totalUniqueWordChars * 100) + '%');
+//        System.out.println("Ratio of total cells to unique-word characters = " +
+//                        ((float)table.length / totalUniqueWordChars * 100) + '%');
+//        System.out.println("Number of rows = " + (table.length / numCols));
+//        System.out.println("Theoretical minimum number of rows = " + theoreticalMinRows);
+//        System.out.println("Ratio of number of rows to theoretical minimum = " +
+//                        ((float)(table.length / numCols) / theoreticalMinRows * 100) + '%');
+//        System.out.println("Number of conceptual rows = " + rowIndex.length);
+//        System.out.println("Conceptual rows with only one populated cell = " + oneCellRows);
+//        System.out.println("Ratio of one-cell rows to total conceptual rows = " + (((float)oneCellRows)
+//                        / rowIndex.length * 100) + '%');
+//        System.out.println("Average number of populated cells in multi-cell rows = " +
+//                        ((float)(populatedCells - oneCellRows) / (rowIndex.length - oneCellRows)));
+//
+//        int storageUsed = table.length * 2 + rowIndex.length * 2
+//                        + rowIndexFlags.length * 4 + rowIndexShifts.length;
+//        System.out.println("Total number of bytes in table (including indexes) = " +
+//                        storageUsed);
+//        System.out.println("Bytes of overhead per unique-word character = " + ((double)(storageUsed
+//                        - (totalUniqueWordChars * 2)) / totalUniqueWordChars));
+//*/
+//    }
+
+//    private void printConceptualTable(String initialString, int state, boolean[] flags) {
+//        if (initialString.length() == 0)
+//            System.out.println("root:");
+//        else
+//            System.out.println(initialString + ':');
+//
+//        if (!flags[state]) {
+//            flags[state] = true;
+//            printNumber(state, 4);
+//            System.out.print(":");
+//            for (int i = 0; i < numCols; i++)
+//                printNumber(at(state, i), 4);
+//            System.out.println();
+//        }
+//
+//        int nextState;
+//        for (int i = 0; i < numCols; i++) {
+//            nextState = at(state, i);
+//            if (nextState > 0 && !flags[nextState]) {
+//                printNumber(nextState, 4);
+//                System.out.print(":");
+//                for (int j = 0; j < numCols; j++)
+//                    printNumber(at(nextState, j), 4);
+//                System.out.println();
+//            }
+//        }
+//        for (int i = 0; i < numCols; i++) {
+//            nextState = at(state, i);
+//            if (nextState > 0 && !flags[nextState]) {
+//                char nextChar;
+//                if (nextState == 27)
+//                    nextChar = ' ';
+//                else if (nextState == 26)
+//                    nextChar = '\'';
+//                else
+//                    nextChar = (char)(i + 'a');
+//                flags[nextState] = true;
+//                printConceptualTable(initialString + nextChar, nextState, flags);
+//            }
+//        }
+//    }
+
+    private void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == -1) {
+            System.out.println(partialWord);
+            if (out != null)
+                out.println(partialWord);
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                if (at(state, i) != 0)
+                    printWordList(partialWord + reverseColumnMap[i], at(state, i), out);
+            }
+        }
+    }
+
+    private void writeDictionaryFile(DataOutputStream out) throws IOException {
+        out.writeInt(0);    // version number
+
+        char[] columnMapIndexes = columnMap.getIndexArray();
+        out.writeInt(columnMapIndexes.length);
+        for (int i = 0; i < columnMapIndexes.length; i++)
+            out.writeShort((short)columnMapIndexes[i]);
+        byte[] columnMapValues = columnMap.getValueArray();
+        out.writeInt(columnMapValues.length);
+        for (int i = 0; i < columnMapValues.length; i++)
+            out.writeByte((byte)columnMapValues[i]);
+
+        out.writeInt(numCols);
+        out.writeInt(numColGroups);
+
+        out.writeInt(rowIndex.length);
+        for (int i = 0; i < rowIndex.length; i++)
+            out.writeShort(rowIndex[i]);
+
+        out.writeInt(rowIndexFlagsIndex.length);
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            out.writeShort(rowIndexFlagsIndex[i]);
+        out.writeInt(rowIndexFlags.length);
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            out.writeInt(rowIndexFlags[i]);
+
+        out.writeInt(rowIndexShifts.length);
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            out.writeByte(rowIndexShifts[i]);
+
+        out.writeInt(table.length);
+        for (int i = 0; i < table.length; i++)
+            out.writeShort(table[i]);
+
+        out.close();
+    }
+
+//    private void printNumber(int x, int width) {
+//        String s = String.valueOf(x);
+//        if (width > s.length())
+//            System.out.print(spaces.substring(0, width - s.length()));
+//        if (x != 0)
+//            System.out.print(s);
+//        else
+//            System.out.print('.');
+//    }
+
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col))
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        else
+            return 0;
+    }
+
+    private final boolean cellIsPopulated(int row, int col) {
+        if (rowIndexFlagsIndex[row] < 0)
+            return col == -rowIndexFlagsIndex[row];
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    private final short internalAt(int row, int col) {
+        return table[row * numCols + col];
+    }
+
+    private CompactByteArray columnMap = null;
+    private char[] reverseColumnMap = null;
+    private int numCols;
+    private int numColGroups;
+    private short[] table = null;
+    private short[] rowIndex = null;
+    private int[] rowIndexFlags = null;
+    private short[] rowIndexFlagsIndex = null;
+    private byte[] rowIndexShifts = null;
+
+    private int totalWords = 0;
+    private int uniqueWords = 0;
+    private int totalUniqueWordChars = 0;
+
+    //private static final String spaces = "      ";
+}
+
diff --git a/src/com/ibm/icu/dev/tool/rbbi/readme.html b/src/com/ibm/icu/dev/tool/rbbi/readme.html
new file mode 100644
index 0000000..5f62a98
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/readme.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+  <title>README For RBBI Tools</title>
+<!-- Copyright (C) 2003-2004, International Business Machines Corporation and
+     others. All Rights Reserved.
+-->
+</head>
+<body>
+<h3>What Are These Tools?</h3>
+This directory contains two tools, WriteTablesToFiles, which converts
+the Java&nbsp; BreakIterators into .brk files for ICU4C, and
+BuildDictionaryFile, which builds the binary the Thai word break
+dictionary from a Unicode text file containing a list of Thai words.
+The rest of this document describes how to use these tools.<br>
+<h3>How To Build The ICU4C BreakIterator Files</h3>
+The RuleBasedBreakIterator code was originally developed for ICU4J, and
+then ported to ICU4C. For various reasons, the code which compiled the
+state tables from the rule text was hard to port. Instead the
+WriteTablesToFiles tool was wirtten to read in the Java data and write
+the .brk files which ICU4C reads. Later the RBBI code was re-written
+for ICU4C, including the ability to compile the state tables from rules
+stored in text files. This means that the WriteTablesToFiles tool is
+now obsolete.<br>
+<br>
+<h3>How To Build The Thai Word Break Dictionary</h3>
+The Thai word berak code was developed originally for ICU4J, and then
+ported to ICU4C - the dictionary builder tool was never ported, so you
+have to use the Java tool to build the dictionary file for ICU4C. On
+the other hand, all of the rest of the ICU locale data was developed
+originally for
+ICU4C, and a tool was written to covert the ICU4C locale data to Java
+resource bundles for use by ICU4J. Consequently, the process of
+building the Thai
+word break dictionary for ICU4C and
+ICU4J is a bit convoluted. Here are the steps:<br>
+<div style="margin-left: 40px;">
+<ol>
+  <li>Download and build both ICU4C and ICU4J on a <span
+ style="font-weight: bold;">Big Endian</span> machine.<br>
+  </li>
+  <li>Run the following command line to build the Thai dictionary file:<br>
+java -classpath $icu4j_root/classes
+com.ibm.icu.dev.tool.rbbi.BuildDictionaryFile
+$icu4j_root/src/com/ibm/icu/dev/data/thai6.ucs Unicode
+$icu_root/soruce/data/brkitr/thai_dict.brk</li>
+  <li>Rebuild the ICU4C resources.</li>
+  <li>Rebuild the ICU4J ICULocaleData.jar file. (See <a
+ href="../../../../../../../readme.html">the ICU4J readme file</a> for
+instructions)</li>
+  <li>Move ICULocaleData.jar from $icu_root/source/data/locales/java to
+$icu4j_root/src/com/ibm/icu/impl/data</li>
+  <li>Build ICU4J's _resources target to unjar the new files.<br>
+  </li>
+</ol>
+</div>
+In the above, $icu_root is the root of your ICU4C source tree, for
+example
+"~/dev/icu" and $icu4j_root is the root of your ICU4J source tree, for
+example "~/dev/icu4j".<br>
+<br>
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java b/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java
new file mode 100644
index 0000000..755fa83
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java
@@ -0,0 +1,206 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.serializable;
+
+import com.ibm.icu.impl.URLHandler;
+import com.ibm.icu.dev.test.serializable.SerializableTest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.Class;
+import java.lang.reflect.*;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class examines all the classes in a Jar file or a directory
+ * and lists all those classes that implement <code>Serializable</code>. It also checks
+ * to make sure that those classes have the <code>serialVersionUID</code>
+ * field define.
+ * 
+ */
+public class SerializableChecker implements URLHandler.URLVisitor
+{
+    private static Class serializable;
+    //private static Class throwable;
+    
+    private String path = null;
+    
+    //private boolean write;
+    
+    public SerializableChecker(String path)
+    {
+        this.path = path;
+        
+        if (path != null) {
+            File dir = new File(path);
+            
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+        }
+    }
+    
+    static {
+        try {    
+            serializable = Class.forName("java.io.Serializable");
+            //throwable    = Class.forName("java.lang.Throwable");
+        } catch (Exception e) {
+            // we're in deep trouble...
+            System.out.println("Woops! Can't get class info for Serializable and Throwable.");
+        }
+    }
+    
+    private void writeFile(String className, byte bytes[])
+    {
+        File file = new File(path + File.separator + className + ".dat");
+        FileOutputStream stream;
+        
+        try {
+            stream = new FileOutputStream(file);
+            
+            stream.write(bytes);
+            stream.close();
+        } catch (Exception e) {
+            System.out.print(" - can't write file!");
+        }
+    }
+    
+    public void visit(String str)
+    {
+        int ix = str.lastIndexOf(".class");
+        
+        if (ix >= 0) {
+            String className = "com.ibm.icu" + str.substring(0, ix).replace('/', '.');
+            
+            // Skip things in com.ibm.icu.dev; they're not relevant.
+            if (className.startsWith("com.ibm.icu.dev.")) {
+                return;
+            }
+            
+            try {
+                Class c = Class.forName(className);
+                int   m = c.getModifiers();
+                
+                if (serializable.isAssignableFrom(c) /*&&
+                    (! throwable.isAssignableFrom(c) || c.getDeclaredFields().length > 0)*/) {
+                    //Field uid;
+                    
+                    System.out.print(className + " (" + Modifier.toString(m) + ") - ");
+                    
+                    if(!Modifier.isInterface(m)){ 
+                        try {
+                            /* uid = */
+                            c.getDeclaredField("serialVersionUID");
+                        } catch (Exception e) {
+                            System.out.print("no serialVersionUID - ");
+                        }
+                    }
+                    
+                    if (Modifier.isPublic(m)) {
+                        SerializableTest.Handler handler = SerializableTest.getHandler(className);
+                        
+                        if (!Modifier.isInterface(m) && handler != null) {
+                            Object objectsOut[] = handler.getTestObjects();
+                            Object objectsIn[];
+                            boolean passed = true;
+                            
+                            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+                            ObjectOutputStream out = new ObjectOutputStream(byteOut);
+                            
+                            try {
+                                out.writeObject(objectsOut);
+                                out.close();
+                                byteOut.close();
+                            } catch (IOException e) {
+                                System.out.println("Eror writing test objects:" + e.toString());
+                                return;
+                            }
+                            
+                            if (path != null) {
+                                writeFile(className, byteOut.toByteArray());
+                            }
+                            
+                            ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+                            ObjectInputStream in = new ObjectInputStream(byteIn);
+                            
+                            try {
+                                objectsIn = (Object[]) in.readObject();
+                                in.close();
+                                byteIn.close();
+                            } catch (Exception e) {
+                                System.out.println("Error reading test objects:" + e.toString());
+                                return;
+                            }
+
+                            for(int i = 0; i < objectsIn.length; i += 1) {
+                                if (! handler.hasSameBehavior(objectsIn[i], objectsOut[i])) {
+                                    passed = false;
+                                    System.out.println("Object " + i + " failed behavior test.");
+                                }
+                            }
+                            
+                            if (passed) {
+                                System.out.print("test passed.");
+                            }
+                        } else {
+                            // it's OK to not have tests for abstract classes...
+                            if (! Modifier.isAbstract(m)) {
+                                System.out.print("no test.");
+                            }
+                        }
+                    }
+                    
+                    System.out.println();
+                }
+           } catch (Exception e) {
+                System.out.println("Error processing " + className + ": " + e.toString());
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        List argList = Arrays.asList(args);
+        String path = null;
+        
+        for (Iterator it = argList.iterator(); it.hasNext(); /*anything?*/) {
+            String arg = (String) it.next();
+            
+            if (arg.equals("-w")) {
+                if (it.hasNext()) {
+                    path = (String) it.next();
+                } else {
+                    System.out.println("Missing directory name on -w command.");
+                }
+            } else {
+                
+    
+                try {
+                    //URL jarURL  = new URL("jar:file:/dev/eclipse/workspace/icu4j/icu4j.jar!/com/ibm/icu");
+                    //URL fileURL = new URL("file:/dev/eclipse/workspace/icu4j/classes/com/ibm/icu");
+                    URL url = new URL(arg);
+                    URLHandler handler  = URLHandler.get(url);
+                    SerializableChecker checker = new SerializableChecker(path);
+                    
+                    System.out.println("Checking classes from " + arg + ":");
+                    handler.guide(checker, true, false);
+                } catch (Exception e) {
+                    System.out.println("Error processing URL \"" + arg + "\" - " + e.getMessage());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java b/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
new file mode 100644
index 0000000..16ce321
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class calculates the minimum and maximum values which can be
+ * used as arguments to <code>toLong</code> and <code>from</code>.
+ * 
+ * NOTE: If you change the way in which these values are calculated, it
+ * may be necessary to disable to <code>toRangeCheck()</code> and
+ * <code>fromRangeCheck()</code> methods in the <code>UniversalTimeScale</code>
+ * for all of the calculations to run without throwing an error.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class CalculateLimits {
+
+    /**
+     * The default constructor.
+     */
+    public CalculateLimits()
+    {
+    }
+
+    /**
+     * This method first calculates the <code>from</code> limits by
+     * passing <code>Long.MIN_VALUE</code> and <code>Long.MAX_VALUE</code> to
+     * the (internal) <code>toBigDecimalTrunc()</code> method. Any values outside
+     * of the range of a <code>long</code> are pinned.
+     * 
+     * The mimimum and maximum values for <code>toLong</code> are calulated by passing
+     * the min and max values calculated above to <code>BigDecimalFrom()</code>. Because
+     * this method will round, the returned values are adjusted to take this into account.
+     * 
+     * @see com.ibm.icu.util.UniversalTimeScale
+     * 
+     * @param args - the command line arugments
+     */
+    public static void main(String[] args)
+    {
+        MessageFormat fmt = new MessageFormat("{0}L, {1}L, {2}L, {3}L");        
+        BigDecimal universalMin = new BigDecimal(Long.MIN_VALUE);
+        BigDecimal universalMax = new BigDecimal(Long.MAX_VALUE);
+        Object limitArgs[] = {null, null, null, null};
+        
+        System.out.println("\nTo, From limits:");
+        
+        // from limits
+        for(int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            BigDecimal min = UniversalTimeScale.toBigDecimalTrunc(universalMin, scale).max(universalMin);
+            BigDecimal max = UniversalTimeScale.toBigDecimalTrunc(universalMax, scale).min(universalMax);
+            long minLong   = min.longValue();
+            long maxLong   = max.longValue();
+            
+            limitArgs[2] = min.toString();
+            limitArgs[3] = max.toString();
+
+            // to limits
+            BigDecimal minTrunc   = UniversalTimeScale.bigDecimalFrom(min, scale);
+            BigDecimal maxTrunc   = UniversalTimeScale.bigDecimalFrom(max, scale);
+            BigDecimal minResidue = minTrunc.subtract(universalMin);
+            BigDecimal maxResidue = universalMax.subtract(maxTrunc);
+            long units            = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            BigDecimal half       = new BigDecimal(units == 1? 0: units / 2 - 1);
+            
+            min = minTrunc.subtract(minResidue.min(half));
+            max = maxTrunc.add(maxResidue.min(half));
+            limitArgs[0] = min.toString();
+            limitArgs[1] = max.toString();
+            
+            System.out.println(fmt.format(limitArgs));
+            
+            // round-trip test the from limits
+            if(UniversalTimeScale.toLong(UniversalTimeScale.from(minLong, scale), scale) != minLong) {
+                System.out.println("OOPS: min didn't round trip!");
+            }
+            
+            if(UniversalTimeScale.toLong(UniversalTimeScale.from(maxLong, scale), scale) != maxLong) {
+                System.out.println("OOPS: max didn't round trip!");
+            }
+            
+            // make sure that the to limits convert to the from limits
+            if(UniversalTimeScale.toLong(min.longValue(), scale) != minLong) {
+                System.out.println("OOPS: toLong(toMin) != fromMin");
+            }
+            
+            if(UniversalTimeScale.toLong(max.longValue(), scale) != maxLong) {
+                System.out.println("OOPS: toLong(toMax) != fromMax");
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java b/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
new file mode 100644
index 0000000..952fee6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
@@ -0,0 +1,104 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * This tool calculates the numeric values of the epoch offsets
+ * used in UniversalTimeScale.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class EpochOffsets
+{
+
+    /**
+     * The default constructor.
+     */
+    public EpochOffsets()
+    {
+    }
+
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+    // Java measures time in milliseconds, not in 100ns ticks.
+    private static final long javaDays     = days / milliseconds;
+
+    private static int[][] epochDates = {
+            {   1, Calendar.JANUARY,   1},
+            {1970, Calendar.JANUARY,   1},
+            {1601, Calendar.JANUARY,   1},
+            {1904, Calendar.JANUARY,   1},
+            {2001, Calendar.JANUARY,   1},
+            {1899, Calendar.DECEMBER, 31},
+            {1900, Calendar.MARCH,     1}
+    };
+    
+    /**
+     * The <code>main()</code> method calculates the epoch offsets used by the
+     * <code>UniversalTimeScale</code> class.
+     * 
+     * The calculations are done using an ICU <code>Calendar</code> object. The first step is
+     * to calculate the Universal Time Scale's epoch date. Then the epoch offsets are calculated
+     * by calculating each epoch date, subtracting the universal epoch date from it, and converting
+     * that value to ticks.
+     * 
+     * @param args - the command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        TimeZone utc = new SimpleTimeZone(0, "UTC");
+
+        // Jitterbug 5211: .Net System.DateTime uses the proleptic calendar,
+        // while ICU by default uses the Julian calendar before 1582.
+        // Original code: Calendar cal = Calendar.getInstance(utc, Locale.ENGLISH);
+        // Use a proleptic Gregorian calendar for 0001AD and later by setting
+        // the Gregorian change date before 0001AD with a value
+        // that is safely before that date by any measure, i.e.,
+        // more than 719164 days before 1970.
+        long before0001AD = -1000000 * javaDays;
+        GregorianCalendar cal = new GregorianCalendar(utc, Locale.ENGLISH);
+        cal.setGregorianChange(new Date(before0001AD));
+
+        MessageFormat fmt = new MessageFormat("{0, date, full} {0, time, full} = {1}");
+        Object arguments[] = {cal, null};
+        
+        System.out.println("Epoch offsets:");
+        
+        // January 1, 0001 00:00:00 is the universal epoch date...
+        cal.set(1, Calendar.JANUARY, 1, 0, 0, 0);
+
+        long universalEpoch = cal.getTimeInMillis();
+        
+        for (int i = 0; i < epochDates.length; i += 1) {
+            int[] date = epochDates[i];
+            
+            cal.set(date[0], date[1], date[2]);
+            
+            long millis = cal.getTimeInMillis();
+            
+            arguments[1] = Long.toString((millis - universalEpoch) * milliseconds);
+            
+            System.out.println(fmt.format(arguments));
+         }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java b/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
new file mode 100644
index 0000000..7c7cec8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
@@ -0,0 +1,108 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class prints out the initializers needed to initialize
+ * the time scale data in the C version of <code>UniversalTimeScale</code>.
+ * 
+ * It just calls <code>getTimeScaleValue()</code> for all fields and prints
+ * the initializers. Because some C compilers can't compile a literal constant for
+ * the minimum and / or maximum values of an <code>int64_t</code>, this code will
+ * print <code>U_INT64_MIN</code> or <code>U_INT64_MAX</code> for these values.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class GenerateCTimeScaleData
+{
+
+    /**
+     * The default constructor.
+     */
+    public GenerateCTimeScaleData()
+    {
+    }
+
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+
+    /*
+     * Returns <code>String</code> that is a literal representation of the given value.
+     * This will either be a call to the <code>INT64_C()</code> macro, or the constant
+     * <code>U_INT64_MIN</code> or <U_INT64_MAX>.
+     */
+    private static String minMaxFilter(long value)
+    {
+        if (value == Long.MIN_VALUE) {
+            return "U_INT64_MIN";
+        } else if (value == Long.MAX_VALUE) {
+            return "U_INT64_MAX";
+        }
+        
+        return "INT64_C(" + Long.toString(value) + ")";
+    }
+    
+    /**
+     * This method prints the C initializers for the time scale data.
+     * 
+     * @param args - the command line arguments
+     * 
+     * @see com.ibm.icu.util.UniversalTimeScale
+     */
+    public static void main(String[] args)
+    {
+        MessageFormat fmt = new MessageFormat("'{'{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}},");
+        Object cargs[] = {null, null, null, null, null, null, null, null, null, null, null};
+        
+        System.out.println("\nC data:");
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long units = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            
+            if (units == ticks) {
+                cargs[0] = "ticks";
+            } else if (units == microseconds) {
+                cargs[0] = "microseconds";
+            } else if (units == milliseconds) {
+                cargs[0] = "milliseconds";
+            } else if (units == seconds) {
+                cargs[0] = "seconds";
+            } else if (units == minutes) {
+                cargs[0] = "minutes";
+            } else if (units == hours) {
+                cargs[0] = "hours";
+            } else if (units == days) {
+                cargs[0] = "days";
+            } else {
+                cargs[0] = "INT64_C(" + Long.toString(units) + ")";
+            }
+            
+            cargs[1]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_VALUE));
+            cargs[2]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE));
+            cargs[3]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE));
+            cargs[4]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE));
+            cargs[5]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE));
+            cargs[6]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_PLUS_1_VALUE));
+            cargs[7]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_MINUS_1_VALUE));
+            cargs[8]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_ROUND_VALUE));
+            cargs[9]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.MIN_ROUND_VALUE));
+            cargs[10] = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.MAX_ROUND_VALUE));
+            
+            System.out.println(fmt.format(cargs));
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java b/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
new file mode 100644
index 0000000..a011aa9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
@@ -0,0 +1,361 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2007, International Business Machines                 *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timezone;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * TimeZone transition dump tool.
+ */
+public class ICUZDump {
+    private static final String DEFAULT_LINE_SEP;
+
+    static {
+        String sep = System.getProperty("line.separator");
+        DEFAULT_LINE_SEP = (sep == null) ? "\n" : sep;
+    }
+
+    private TimeZoneImpl tz = null;
+
+    private int loyear = 1900;
+    private int hiyear = 2050;
+    private long tick = 1000;
+    private DumpFormatter formatter;
+    private String linesep = DEFAULT_LINE_SEP;
+
+    public ICUZDump() {
+    }
+    
+    public void setLowYear(int loyear) {
+        this.loyear = loyear;
+    }
+    
+    public void setHighYear(int hiyear) {
+        this.hiyear = hiyear;
+    }
+
+    public void setTick(int tick) {
+        if (tick <= 0) {
+            throw new IllegalArgumentException("tick must be positive");
+        }
+        this.tick = tick;
+    }
+    
+    public void setTimeZone(Object tzimpl) {
+        this.tz = new TimeZoneImpl(tzimpl);
+    }
+
+    public void setDumpFormatter(DumpFormatter formatter) {
+        this.formatter = formatter;
+    }
+    
+    public void setLineSeparator(String sep) {
+        this.linesep = sep;
+    }
+    
+    public void dump(Writer w) throws IOException {
+        if (tz == null) {
+            throw new IllegalStateException("timezone is not initialized");
+        }
+
+        if (formatter == null) {
+            formatter = new DumpFormatter();
+        }
+        
+        final long SEARCH_INCREMENT = 12 * 60 * 60 * 1000; // half day
+        long cutovers[] = getCutOverTimes();
+        long t = cutovers[0];
+        int offset = tz.getOffset(t);
+        boolean inDst = tz.inDaylightTime(t);
+        while (t < cutovers[1]) {
+            long newt = t + SEARCH_INCREMENT;
+            int newOffset = tz.getOffset(newt);
+            boolean newInDst = tz.inDaylightTime(newt);
+            if (offset != newOffset || inDst != newInDst) {
+                // find the boundary
+                long lot = t;
+                long hit = newt;
+                while (true) {
+                    long diff = hit - lot;
+                    if (diff <= tick) {
+                        break;
+                    }
+                    long medt = lot + ((diff / 2) / tick) * tick;
+                    int medOffset = tz.getOffset(medt);
+                    boolean medInDst = tz.inDaylightTime(medt);
+                    if (medOffset != offset || medInDst != inDst) {
+                        hit = medt;
+                    } else {
+                        lot = medt;
+                    }
+                }
+                w.write(formatter.format(lot, offset, tz.inDaylightTime(lot)));
+                w.write(" > ");
+                w.write(formatter.format(hit, newOffset, tz.inDaylightTime(hit)));
+                w.write(linesep);
+                offset = newOffset;
+                inDst = newInDst;
+            }
+            t = newt;
+        }
+
+    }
+    
+    private long[] getCutOverTimes() {
+        long[] cutovers = new long[2];
+        cutovers[0] = tz.getTime(loyear, 0, 1, 0, 0, 0);
+        cutovers[1] = tz.getTime(hiyear, 0, 1, 0, 0, 0);
+        return cutovers;
+    }
+
+    private class TimeZoneImpl {
+        private Object tzobj;
+        
+        public TimeZoneImpl(Object tzobj) {
+            this.tzobj = tzobj;
+        }
+
+        public int getOffset(long time) {
+            try {
+                Method method = tzobj.getClass().getMethod("getOffset", new Class[] {long.class});
+                Object result = method.invoke(tzobj, new Object[] {new Long(time)});
+                return ((Integer)result).intValue();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return 0;
+        }
+
+        public boolean inDaylightTime(long time) {
+            try {
+                Method method = tzobj.getClass().getMethod("inDaylightTime", new Class[] {Date.class});
+                Object result = method.invoke(tzobj, new Object[] {new Date(time)});
+                return ((Boolean)result).booleanValue();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return false;
+        }
+
+        public long getTime(int year, int month, int dayOfMonth, int hour, int minute, int second) {
+            long time;
+            if (tzobj instanceof com.ibm.icu.util.TimeZone) {
+                GregorianCalendar cal = new GregorianCalendar();
+                cal.setTimeZone((com.ibm.icu.util.TimeZone)tzobj);
+                cal.clear();
+                cal.set(year, month, dayOfMonth, hour, minute, second);
+                time = cal.getTimeInMillis();
+            } else if (tzobj instanceof java.util.TimeZone) {
+                java.util.GregorianCalendar cal = new java.util.GregorianCalendar();
+                cal.setTimeZone((java.util.TimeZone)tzobj);
+                cal.clear();
+                cal.set(year, month, dayOfMonth, hour, minute, second);
+                time = cal.getTimeInMillis();
+            } else {
+                throw new IllegalStateException("Unsupported TimeZone implementation");
+            }
+            return time;
+        }
+    }
+
+    public class DumpFormatter {
+        private SimpleTimeZone stz = new SimpleTimeZone(0, "");
+        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd EEE HH:mm:ss", ULocale.US);
+        private DecimalFormat decf;
+
+        public DumpFormatter() {
+            DecimalFormatSymbols decfs = new DecimalFormatSymbols(ULocale.US);
+            decf = new DecimalFormat("00", decfs);
+        }
+
+        public String format(long time, int offset, boolean isDst) {
+            StringBuffer buf = new StringBuffer();
+            stz.setRawOffset(offset);
+            sdf.setTimeZone(stz);
+            buf.append(sdf.format(new Date(time)));
+            if (offset < 0) {
+                buf.append("-");
+                offset = -offset;
+            } else {
+                buf.append("+");
+            }
+
+            int hour, min, sec;
+
+            offset /= 1000;
+            sec = offset % 60;
+            offset = (offset - sec) / 60;
+            min = offset % 60;
+            hour = offset / 60;
+
+            buf.append(decf.format(hour));
+            buf.append(decf.format(min));
+            buf.append(decf.format(sec));
+
+            buf.append("[DST=");
+            buf.append(isDst ? "1" : "0");
+            buf.append("]");
+            return buf.toString();
+        }
+    }
+
+    /*
+     * Usage:
+     * 
+     * java -cp icu4j.jar com.ibm.icu.dev.tool.timezone [-j] [-a] [-c[<low_year>,]<high_year>] [-d<dir>] [-l<sep>] [<zone_name> [<zone_name>]]
+     * 
+     * Options:
+     *      -j      : Use JDK TimeZone.  By default, ICU TimeZone is used.
+     *      -a      : Dump all available zones.
+     *      -c[<low_year>,]<high_year>
+     *              : When specified, dump transitions starting <low_year> (inclusive) up to
+     *                <high_year> (exclusive).  The default values are 1902(low) and 2038(high).
+     *      -d<dir> : When specified, write transitions in a file under the directory for each zone.
+     *      -l<sep> : New line code type CR/LF/CRLF.
+     */
+    public static void main(String[] args) {
+        boolean jdk = false;
+        int low = 1902;
+        int high = 2038;
+        List idlist = new ArrayList();
+        boolean all = false;
+        String dir = null;
+        String newLineMode = null;
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("-j")) {
+                jdk = true;
+            } else if (args[i].startsWith("-c")) {
+                String val = args[i].substring(2);
+                String[] years = val.split(",");
+                if (years.length == 1) {
+                    high = Integer.parseInt(years[0]);
+                } else if (years.length == 2) {
+                    low = Integer.parseInt(years[0]);
+                    high = Integer.parseInt(years[1]);
+                }
+            } else if (args[i].equals("-a")) {
+                all = true;
+            } else if (args[i].startsWith("-d")) {
+                dir = args[i].substring(2);
+            } else if (args[i].startsWith("-l")) {
+                newLineMode = args[i].substring(2);
+            } else if (!args[i].startsWith("-")){
+                idlist.add(args[i].trim());
+            }
+        }
+
+        String lineSep = System.getProperty("line.separator");
+        if (newLineMode != null && newLineMode.length() > 0) {
+            if (newLineMode.equalsIgnoreCase("CR")) {
+                lineSep = "\r";
+            } else if (newLineMode.equalsIgnoreCase("LF")) {
+                lineSep = "\n";
+            } else if (newLineMode.equalsIgnoreCase("CRLF")) {
+                lineSep = "\r\n";            
+            }
+        }
+        
+        String[] tzids = null;
+
+        if (all) {
+            if (jdk) {
+                tzids = java.util.TimeZone.getAvailableIDs();
+            } else {
+                tzids = com.ibm.icu.util.TimeZone.getAvailableIDs();
+            }
+
+            // sort tzids
+            TreeSet set = new TreeSet();
+            for (int i = 0; i < tzids.length; i++) {
+                set.add(tzids[i]);
+            }
+            Iterator it = set.iterator();
+            int i = 0;
+            while (it.hasNext()) {
+                tzids[i++] = (String)it.next();
+            }
+        } else {
+            int len = idlist.size();
+            if (len == 0) {
+                tzids = new String[1];
+                tzids[0] = java.util.TimeZone.getDefault().getID();
+            } else {
+                tzids = new String[idlist.size()];
+                idlist.toArray(tzids);
+            }            
+        }
+
+        File dirfile = null;
+        if (dir == null || dir.length() == 0) {
+            PrintWriter pw = new PrintWriter(System.out);
+            try {
+                for (int i = 0; i < tzids.length; i++) {
+                    if (i != 0) {
+                        pw.println();
+                    }
+                    pw.write("ZONE: ");
+                    pw.write(tzids[i]);
+                    pw.println();
+                    dumpZone(pw, lineSep, tzids[i], low, high, jdk);
+                }
+                pw.flush();
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+            }
+        } else {
+            dirfile = new File(dir);
+            dirfile.mkdirs();
+
+            try {
+                for (int i = 0; i < tzids.length; i++) {
+                    FileOutputStream fos = new FileOutputStream(new File(dirfile, tzids[i].replace('/', '-')));
+                    Writer w = new BufferedWriter(new OutputStreamWriter(fos));
+                    dumpZone(w, lineSep, tzids[i], low, high, jdk);
+                    w.close();
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+            }
+        }
+    }
+
+    private static void dumpZone(Writer w, String lineSep, String tzid, int low, int high, boolean isJdk) throws IOException {
+        ICUZDump dumper = new ICUZDump();
+        Object tzimpl;
+        if (isJdk) {
+            tzimpl = java.util.TimeZone.getTimeZone(tzid);
+        } else {
+            tzimpl = com.ibm.icu.util.TimeZone.getTimeZone(tzid);
+        }
+        dumper.setTimeZone(tzimpl);
+        dumper.setLowYear(low);
+        dumper.setHighYear(high);
+        dumper.setLineSeparator(lineSep);
+        dumper.dump(w);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/SourceSet.java b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
new file mode 100644
index 0000000..cef0a6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
@@ -0,0 +1,109 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+*   06/26/2002  aliu        Moved to com.ibm.icu.dev.tool.translit
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import java.util.*;
+import com.ibm.icu.dev.tool.translit.UnicodeSetClosure;
+import java.io.*;
+import com.ibm.icu.text.*;
+
+/**
+ * Class that generates source set information for a transliterator.
+ * 
+ * To run, use:
+ * 
+ *   java com.ibm.icu.dev.tool.translit.SourceSet Latin-Katakana NFD lower
+ * 
+ * Output is produced in the command console, and a file with more detail is also written.
+ * 
+ * To see if it works, use:
+ * 
+ *   java com.ibm.icu.dev.test.translit.TransliteratorTest -v -nothrow TestIncrementalProgress
+ * 
+ * and
+ *  
+ *   java com.ibm.icu.dev.demo.translit.Demo
+ */
+public class SourceSet {
+
+    public static void main(String[] args) throws IOException {
+        if (args.length == 0) {
+            // Compute and display the source sets for all system
+            // transliterators.
+            for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+                String ID = (String) e.nextElement();
+                showSourceSet(ID, Normalizer.NONE, false);
+            }
+        } else {
+            // Usage: ID [NFKD | NFD] [lower]
+            Normalizer.Mode m = Normalizer.NONE;
+            boolean lowerFirst = false;
+            if (args.length >= 2) {
+                if (args[1].equalsIgnoreCase("NFD")) {
+                    m = Normalizer.NFD;
+                } else if (args[1].equalsIgnoreCase("NFKD")) {
+                    m = Normalizer.NFKD;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length >= 3) {
+                if (args[2].equalsIgnoreCase("lower")) {
+                    lowerFirst = true;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length > 3) {
+                usage();
+            }
+            showSourceSet(args[0], m, lowerFirst);
+        }
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) throws IOException {
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        out.print('\uFEFF'); // BOM
+        System.out.println();
+        System.out.println("Writing " + filename);
+        Transliterator t = Transliterator.getInstance(ID);
+        showSourceSetAux(t, m, lowerFirst, true);
+        showSourceSetAux(t.getInverse(), m, lowerFirst, false);
+        out.close();
+    }
+    
+    static PrintWriter out;
+    
+    static void showSourceSetAux(Transliterator t, Normalizer.Mode m, boolean lowerFirst, boolean forward) {
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(t.getID() + ": " +
+                           sourceSet.toPattern(true));
+        out.println("# MINIMAL FILTER GENERATED FOR: " + t.getID() + (forward ? "" : " REVERSE"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + sourceSet.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println("# Unicode: " + sourceSet.toPattern(false));
+        out.println();
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/Trans.java b/src/com/ibm/icu/dev/tool/translit/Trans.java
new file mode 100644
index 0000000..04d43d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/Trans.java
@@ -0,0 +1,140 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.text.*;
+import java.io.*;
+
+/**
+ * A command-line interface to the ICU4J transliterators.
+ * @author Alan Liu
+ */
+public class Trans {
+
+    public static void main(String[] args) throws Exception {
+        boolean isHTML = false;
+        int pos = 0;
+
+        String transName = null; // first untagged string is this
+        String inText = null; // all other untagged strings are this
+        String inName = null;
+        String outName = null;
+
+        while (pos < args.length) {
+            if (args[pos].equals("-html")) {
+                isHTML = true;
+            } else if (args[pos].equals("-i")) {
+                if (++pos == args.length) usage();
+                inName = args[pos];
+            } else if (args[pos].equals("-o")) {
+                if (++pos == args.length) usage();
+                outName = args[pos];
+            } else if (transName == null) {
+                transName = args[pos];
+            } else {
+                if (inText == null) {
+                    inText = args[pos];
+                } else {
+                    inText = inText + " " + args[pos];
+                }
+            }
+            ++pos;
+        }
+
+        if (inText != null && inName != null) {
+            usage();
+        }
+
+        Transliterator trans = Transliterator.getInstance(transName);
+        BufferedReader in = null;
+        if (inName != null) {
+            in = new BufferedReader(new InputStreamReader(new FileInputStream(inName), "UTF8"));
+        }
+        PrintWriter out = null;
+        if (outName != null) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outName), "UTF8"));
+        } else {
+            out = new PrintWriter(System.out);
+        }
+        trans(trans, inText, in, out, isHTML);
+        out.close();
+    }
+
+    static void trans(Transliterator trans, String inText,
+                      BufferedReader in, PrintWriter out, boolean isHTML) throws IOException {
+        boolean inTag = false; // If true, we are within a <tag>
+        for (;;) {
+            String line = null;
+            if (inText != null) {
+                line = inText;
+                inText = null;
+            } else if (in != null) {
+                line = in.readLine();
+            }
+            if (line == null) {
+                break;
+            }
+            if (isHTML) {
+                // Pass tags between < and > unchanged
+                StringBuffer buf = new StringBuffer();
+                int right = -1;
+                if (inTag) {
+                    right = line.indexOf('>');
+                    if (right < 0) {
+                        right = line.length()-1;
+                    }
+                    buf.append(line.substring(0, right+1));
+                    if (DEBUG) System.out.println("*S:" + line.substring(0, right+1));
+                    inTag = false;
+                }
+                for (;;) {
+                    int left = line.indexOf('<', right+1);
+                    if (left < 0) {
+                        if (right < line.length()-1) {
+                            buf.append(trans.transliterate(line.substring(right+1)));
+                            if (DEBUG) System.out.println("T:" + line.substring(right+1));
+                        }
+                        break;
+                    }
+                    // Append transliterated segment right+1..left-1
+                    buf.append(trans.transliterate(line.substring(right+1, left)));
+                    if (DEBUG) System.out.println("T:" + line.substring(right+1, left));
+                    right = line.indexOf('>', left+1);
+                    if (right < 0) {
+                        inTag = true;
+                        buf.append(line.substring(left));
+                        if (DEBUG) System.out.println("S:" + line.substring(left));
+                        break;
+                    }
+                    buf.append(line.substring(left, right+1));
+                    if (DEBUG) System.out.println("S:" + line.substring(left, right+1));
+                }
+                line = buf.toString();
+            } else {
+                line = trans.transliterate(line);
+            }
+            out.println(line);
+        }
+    }
+
+    static final boolean DEBUG = false;
+
+    /**
+     * Emit usage and die.
+     */
+    static void usage() {
+        System.out.println("Usage: java com.ibm.icu.dev.tool.translit.Trans [-html] <trans> ( <input> | -i <infile>) [ -o <outfile> ]");
+        System.out.println("<trans>   Name of transliterator");
+        System.out.println("<input>   Text to transliterate");
+        System.out.println("<infile>  Name of input file");
+        System.out.println("<outfile> Name of output file");
+        System.out.println("-html     Only transliterate text outside of <tags>");
+        System.out.println("Input may come from the command line or a file.\n");
+        System.out.println("Ouput may go to stdout or a file.\n");
+        System.exit(0);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java b/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
new file mode 100644
index 0000000..489b4a6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
@@ -0,0 +1,466 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: February 11 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Vector;
+import java.util.Locale;
+import java.io.*;
+
+/**
+ * This class produces the data tables used by the closeOver() method
+ * of UnicodeSet.
+ *
+ * Whenever the Unicode database changes, this tool must be re-run
+ * (AFTER the data file(s) underlying ICU4J are udpated).
+ *
+ * The output of this tool should then be pasted into the appropriate
+ * files:
+ *
+ * ICU4J: com.ibm.icu.text.UnicodeSet.java
+ * ICU4C: /icu/source/common/uniset.cpp
+ */
+class UnicodeSetCloseOver {
+
+    // Our output files
+    static final String JAVA_OUT          = "to_UnicodeSet.java";
+    static final String JAVA_CHARPROP_OUT = "to_UCharacterProperty.java";
+    static final String C_SET_OUT         = "to_uniset.cpp";
+    static final String C_UCHAR_OUT       = "to_uchar.c";
+
+    // Source code "do not edit" warning
+    static final String WARNING = "MACHINE-GENERATED; Unicode version " +
+        UCharacter.getUnicodeVersion() +
+        "; DO NOT EDIT; See " +
+        UnicodeSetCloseOver.class.getName();
+
+    // Case folding options flag.  This must correspond to the options
+    // used in UnicodeSet.closeOver() in Java and C++.
+    static final boolean DEFAULT_CASE_MAP = true; // false for Turkish
+
+    public static void main(String[] args) throws IOException {
+        System.out.println("This tool will generate several output files.  Each is named according");
+        System.out.println("the target file.  For example, the contents of to_UnicodeSet.java should");
+        System.out.println("be pasted into UnicodeSet.java.");
+        System.out.println();
+
+        generateCaseData();
+    }
+
+    /**
+     * Create a map of String => Set.  The String in this case is a
+     * folded string for which
+     * UCharacter.foldCase(folded. DEFAULT_CASE_MAP).equals(folded).
+     * The Set contains all single-character strings x for which
+     * UCharacter.foldCase(x, DEFAULT_CASE_MAP).equals(folded), as
+     * well as folded itself.
+     */
+    static Map createCaseFoldEquivalencyClasses() {
+        Map equivClasses = new HashMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE)
+                continue;
+
+            String cp = UTF16.valueOf(i);
+            String folded = UCharacter.foldCase(cp, DEFAULT_CASE_MAP);
+            if (folded.equals(cp)) continue;
+
+            // At this point, have different case folding.  Add
+            // the code point and its folded equivalent into the
+            // equivalency class.
+            TreeSet s = (TreeSet) equivClasses.get(folded);
+            if (s == null) {
+                s = new TreeSet();
+                s.add(folded); // add the case fold result itself
+                equivClasses.put(folded, s);
+            }
+            s.add(cp);
+        }
+        return equivClasses;
+    }
+
+    /**
+     * Analyze the case fold equivalency classes.  Break them into two
+     * groups: 'pairs', and 'nonpairs'.  Create a tally of the length
+     * configurations of the nonpairs.
+     *
+     * Length configurations of equivalency classes, as of Unicode
+     * 3.2.  Most of the classes (83%) have two single codepoints.
+     * Here "112:28" means there are 28 equivalency classes with 2
+     * single codepoints and one string of length 2.
+     *
+     * 11:656
+     * 111:16
+     * 1111:3
+     * 112:28
+     * 113:2
+     * 12:31
+     * 13:12
+     * 22:38
+     *
+     * Note: This method does not count the frequencies of the
+     * different length configurations (as shown above after ':'); it
+     * merely records which configurations occur.
+     *
+     * @param pairs Accumulate equivalency classes that consist of
+     * exactly two codepoints here.  This is 83+% of the classes.
+     * E.g., {"a", "A"}.
+     * @param nonpairs Accumulate other equivalency classes here, as
+     * lists of strings.  E,g, {"st", "\uFB05", "\uFB06"}.
+     * @param lengths Accumulate a list of unique length structures,
+     * not including pairs.  Each length structure is represented by a
+     * string of digits.  The digit string "12" means the equivalency
+     * class contains a single code point and a string of length 2.
+     * Typical contents of 'lengths': { "111", "1111", "112",
+     * "113", "12", "13", "22" }.  Note the absence of "11".
+     */
+    static void analyzeCaseData(Map equivClasses,
+                                StringBuffer pairs,
+                                Vector nonpairs,
+                                Vector lengths) {
+        Iterator i = new TreeSet(equivClasses.keySet()).iterator();
+        StringBuffer buf = new StringBuffer();
+        while (i.hasNext()) {
+            Object key = i.next();
+            Vector v = new Vector((Set) equivClasses.get(key));
+            if (v.size() == 2) {
+                String a = (String) v.elementAt(0);
+                String b = (String) v.elementAt(1);
+                if (a.length() == 1 && b.length() == 1) {
+                    pairs.append(a).append(b);
+                    continue;
+                    // Note that pairs are included in 'lengths'
+                }
+            }
+            String[] a = new String[v.size()];
+            v.toArray(a);
+            nonpairs.add(a);
+            //int singleCount = 0;
+            //int stringCount = 0;
+            // Make a string of the lengths, e.g., "111" means 3
+            // single code points; "13" means a single code point
+            // and a string of length 3.
+            v.clear();
+            for (int j=0; j<a.length; ++j) {
+                v.add(new Integer(a[j].length()));
+            }
+            Collections.sort(v);
+            buf.setLength(0);
+            for (int j=0; j<v.size(); ++j) {
+                buf.append(String.valueOf(v.elementAt(j)));
+            }
+            if (!lengths.contains(buf.toString())) {
+                lengths.add(buf.toString());
+            }
+        }
+    }
+
+    static void generateCaseData() throws IOException {
+
+        Map equivClasses = createCaseFoldEquivalencyClasses();
+
+        // Accumulate equivalency classes that consist of exactly
+        // two codepoints here.  This is 83+% of the classes.
+        // E.g., {"a", "A"}.
+        StringBuffer pairs = new StringBuffer();
+
+        // Accumulate other equivalency classes here, as lists
+        // of strings.  E,g, {"st", "\uFB05", "\uFB06"}.
+        Vector nonpairs = new Vector(); // contains String[]
+        Vector lengths = new Vector(); // "111", "12", "22", etc.
+
+        analyzeCaseData(equivClasses, pairs, nonpairs, lengths);
+
+        //-------------------------------------------------------------
+        // Emit Java source
+        PrintStream out = new PrintStream(new FileOutputStream(JAVA_OUT));
+        System.out.println("Writing " + JAVA_OUT);
+
+        out.println("    // " + WARNING);
+        out.println("    private static final String CASE_PAIRS =");
+        out.println(Utility.formatForSource(pairs.toString()) + ";");
+        out.println();
+        out.println("    // " + WARNING);
+        out.println("    private static final String[][] CASE_NONPAIRS = {");
+        for (int j=0; j<nonpairs.size(); ++j) {
+            String[] a = (String[]) nonpairs.elementAt(j);
+            out.print("        {");
+            for (int k=0; k<a.length; ++k) {
+                if (k != 0) out.print(", ");
+                out.print(Utility.format1ForSource(a[k]));
+            }
+            out.println("},");
+        }
+        out.println("    };");
+
+        //-------------------------------------------------------------
+        // Emit C++ source
+
+        // In C++, the pairs are again emitted in an array, but this
+        // array is the final representation form -- it will not be
+        // reprocessed into a hash.  It will be binary searched by
+        // looking at the even elements [0], [2], [4], etc., and
+        // ignoring the odd elements.  The even elements must contain
+        // the folded members of the pairs.  That is, in the pair
+        // {'A', 'a'}, the even element must be 'a', not 'A'.  Then a
+        // code point to be located is first folded ('Y' => 'y') then
+        // it binary searched against [0]='A', [2]='B', etc.  When a
+        // match is found at k, the pair is [k], [k+1].
+
+        out = new PrintStream(new FileOutputStream(C_SET_OUT));
+        System.out.println("Writing " + C_SET_OUT);
+
+        // Sort the pairs.  They must be ordered by the folded element.
+        // Store these as two-character strings, with charAt(0) being
+        // the folded member of the pair.
+        TreeSet sortPairs = new TreeSet(new Comparator() {
+            public int compare(Object a, Object b) {
+                return ((int) ((String) a).charAt(0)) -
+                       ((int) ((String) b).charAt(0));
+            }
+            public boolean equals(Object obj) {
+                return false;
+            }
+        });
+        for (int i=0; i<pairs.length(); i+=2) {
+            String a = String.valueOf(pairs.charAt(i));
+            String b = String.valueOf(pairs.charAt(i+1));
+            String folded = UCharacter.foldCase(a, DEFAULT_CASE_MAP);
+            if (a.equals(folded)) {
+                sortPairs.add(a + b);
+            } else {
+                sortPairs.add(b + a);
+            }
+        }
+
+        // Emit the pairs
+        out.println("// " + WARNING);
+        out.println("static const UChar CASE_PAIRS[] = {");
+        Iterator it = sortPairs.iterator();
+        while (it.hasNext()) {
+            out.print("    ");
+            int n = 0;
+            while (n++ < 5 && it.hasNext()) {
+                String s = (String) it.next();
+                //out.print((int) s.charAt(0) + "," +
+                //                 (int) s.charAt(1) + ",");
+                out.print("0x" + Utility.hex(s.charAt(0)) + ",0x" +
+                                 Utility.hex(s.charAt(1)) + ",");
+            }
+            out.println();
+        }
+        out.println("};");
+        out.println();
+
+        // The non-pairs are encoded in the following way.  All the
+        // single codepoints in each class are grouped together
+        // followed by a zero.  Then each multi-character string is
+        // added, followed by a zero.  Finally, another zero is added.
+        // Some examples:
+        //  {"iQ", "R"}           =>  [ 'R', 0, 'i', 'Q', 0, 0 ]
+        //  {"S", "D", "F", "G"}  =>  [ 'S', 'D', 'F', 'G', 0, 0 ]
+        //  {"jW", "jY"}          =>  [ 0, 'j', 'W', 0, 'j', 'Y', 0, 0 ]
+        // The end-result is a short, flat array of UChar values that
+        // can be used to initialize a UChar[] array in C.
+        
+        int maxLen = 0; // Maximum encoded length of any class, including zeros
+        out.println("// " + WARNING);
+        out.println("static const CaseEquivClass CASE_NONPAIRS[] = {");
+        for (int j=0; j<nonpairs.size(); ++j) {
+            int len = 0;
+            String[] a = (String[]) nonpairs.elementAt(j);
+            out.print("    {");
+            // Emit single code points
+            for (int k=0; k<a.length; ++k) {
+                if (a[k].length() != 1) continue;
+                //out.print((int) a[k].charAt(0) + ",");
+                out.print("0x"+Utility.hex(a[k].charAt(0)) + ",");
+                ++len;
+            }
+            out.print("0,  "); // End of single code points
+            ++len;
+            // Emit multi-character strings
+            for (int k=0; k<a.length; ++k) {
+                if (a[k].length() == 1) continue;
+                for (int m=0; m<a[k].length(); ++m) {
+                    //out.print((int) a[k].charAt(m) + ",");
+                    out.print("0x"+Utility.hex(a[k].charAt(m)) + ",");
+                    ++len;
+                }
+                out.print("0, "); // End of string
+                ++len;
+            }
+            out.println("0},"); // End of equivalency class
+            ++len;
+            if (len > maxLen) maxLen = len;
+        }
+        out.println("};");
+
+        // Make sure the CaseEquivClass data can fit.
+        if (maxLen > 8) {
+            throw new RuntimeException("Must adjust CaseEquivClass to accomodate " + maxLen + " UChars");
+        }
+
+        // Also make sure that we can map into this array using a
+        // CompactByteArray.  We could do this check above, but we
+        // keep it here, adjacent to the maxLen check.  We use one
+        // value (-1 == 255) to indicate "no value."
+        if (nonpairs.size() > 255) {
+            throw new RuntimeException("Too many CASE_NONPAIRS array elements to be indexed by a CompactByteArray");
+        }
+
+        //-------------------------------------------------------------
+        // Case-unique set:  All characters c for which closeOver(c)==c.
+
+        // UPDATE: Instead of using this, we're using the related
+        // notion of Case_Sensitive.  See below.  Note that
+        // Case_Sensitive != ^Case_Unique.
+
+        if (false) {
+            UnicodeSet caseUnique = new UnicodeSet();
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                String cp = UTF16.valueOf(i);
+                if (equivClasses.get(UCharacter.foldCase(cp, DEFAULT_CASE_MAP)) == null) {
+                    caseUnique.add(i);
+                }
+            }
+            // out.println("caseUnique = " + caseUnique.toPattern(true));
+        }
+
+        UnicodeSet caseSensitive = getCaseSensitive();
+        //System.out.println("caseSensitive = " + caseSensitive.toPattern(true));
+
+        // Now for C, emit an array of ranges
+        out = new PrintStream(new FileOutputStream(C_UCHAR_OUT));
+        System.out.println("Writing " + C_UCHAR_OUT);
+
+        out.println("/* " + WARNING + " */");
+        emitUCharRangesArray(out, caseSensitive, "CASE_SENSITIVE_RANGES");
+
+        // For Java, emit a string with the ranges (each pair of chars
+        // in the string is a range).
+        out = new PrintStream(new FileOutputStream(JAVA_CHARPROP_OUT));
+        System.out.println("Writing " + JAVA_CHARPROP_OUT);
+        out.println("    // " + WARNING);
+        emitRangesString(out, caseSensitive, "CASE_SENSITIVE_RANGES");
+    }
+
+    /**
+     * Create the set of case-sensitive characters.  These are characters
+     * that participate in any case mapping operation as a source or
+     * as a member of a target string.
+     */
+    static UnicodeSet getCaseSensitive() {
+        UnicodeSet caseSensitive = new UnicodeSet();
+        Locale loc = Locale.US;
+        BreakIterator bi = BreakIterator.getTitleInstance(loc);
+        for (int c = 0; c <= 0x10FFFF; ++c) {
+            String cp = UTF16.valueOf(c);
+            for (int j=0; j<4; ++j) {
+                String s = null;
+                switch (j) {
+                case 0: s = UCharacter.toUpperCase(loc, cp); break;
+                case 1: s = UCharacter.toLowerCase(loc, cp); break;
+                case 2: s = UCharacter.toTitleCase(loc, cp, bi); break;
+                case 3: s = UCharacter.foldCase(cp, DEFAULT_CASE_MAP); break;
+                }
+                if (!s.equals(cp)) {
+                    int cc;
+                    for (int k=0; k<s.length(); k+=UTF16.getCharCount(cc)) {
+                        cc = UTF16.charAt(s, k);
+                        caseSensitive.add(cc);
+                    }
+                    for (int k=0; k<cp.length(); k+=UTF16.getCharCount(cc)) {
+                        cc = UTF16.charAt(cp, k);
+                        caseSensitive.add(cc);
+                    }
+                }
+            }
+            // Also do the single-codepoint API.  This shouldn't add any
+            // code points, but we do it for completeness.
+            for (int j=0; j<4; ++j) {
+                int d = 0;
+                switch (j) {
+                case 0: d = UCharacter.toUpperCase(c); break;
+                case 1: d = UCharacter.toLowerCase(c); break;
+                case 2: d = UCharacter.toTitleCase(c); break;
+                case 3: d = UCharacter.foldCase(c, DEFAULT_CASE_MAP); break;
+                }
+                if (d != c) {
+                    if (!caseSensitive.contains(c) ||
+                        !caseSensitive.contains(d)) {
+                        System.out.println("Warning: code point " + c +
+                                           " => " + d + " created NEW MAPPING"+
+                                           " for Case_Sensitive");
+                    }
+                    caseSensitive.add(c);
+                    caseSensitive.add(d);
+                }
+            }
+        }
+        return caseSensitive;
+    }
+
+    /**
+     * Given a UnicodeSet, emit it as an array of UChar pairs.  Each
+     * pair will be the start/end of a range.  Code points >= U+10000
+     * will be represented as surrogate pairs.
+     */
+    static void emitUCharRangesArray(PrintStream out, UnicodeSet set, String id) {
+        // Store the pairs in a StringBuffer.  This handles surrogate
+        // representation.
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<set.getRangeCount(); ++i) {
+            UTF16.append(buf, set.getRangeStart(i));
+            UTF16.append(buf, set.getRangeEnd(i));
+        }
+        // Emit the pairs
+        out.println("static const UChar " + id + "[] = {");
+        for (int i=0; i<buf.length(); ) {
+            out.print("    ");
+            for (int n=0; n++<10 && i<buf.length(); ++i) {
+                out.print("0x" + Utility.hex(buf.charAt(i), 4) + ',');
+            }
+            out.println();
+        }
+        out.println("};");
+        out.println("#define " + id + "_LENGTH (sizeof(" + id +
+                    ")/sizeof(" + id + "[0]))");
+    }
+
+    /**
+     * Given a UnicodeSet, emit it as a Java string.  The most economical
+     * format is not the pattern, but instead a pairs list, with each
+     * range pair represented as two adjacent characters.
+     */
+    static void emitRangesString(PrintStream out, UnicodeSet set, String id) {
+        // Store the pairs in a StringBuffer.  This handles surrogate
+        // representation.
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<set.getRangeCount(); ++i) {
+            UTF16.append(buf, set.getRangeStart(i));
+            UTF16.append(buf, set.getRangeEnd(i));
+        }
+        // Emit the pairs
+        out.println("    private static final String " + id + " =");
+        out.println(Utility.formatForSource(buf.toString()) + ";");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
new file mode 100644
index 0000000..5e19200
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
@@ -0,0 +1,300 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+//import java.text.*;
+import java.io.*;
+import java.util.Locale;
+
+// com.ibm.icu.dev.tool.translit.UnicodeSetClosure
+// com.ibm.icu.dev.test.translit.TransliteratorTest
+
+public class UnicodeSetClosure {
+    public static void main(String[] args) throws Exception {
+        
+        UnicodeSet foo =         new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]");
+        
+        test();
+        if(foo==null){}
+        
+        /* The following is superceded by Alan's tool
+        
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        generateSets("Latin-Katakana", true, Normalizer.DECOMP_COMPAT, true,
+"[',.a-z~\u00DF\u00E6\u00F0\u00F8\u00FE\u02BE\u0300-\u034E\u0360-\u0362\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1-\u05C2\u05C4\u064B-\u0655\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u0901-\u0902\u093C\u0941-\u0948\u094D\u0951-\u0954\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A70-\u0A71\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0B01\u0B3C\u0B3F\u0B41-\u0B43\u0B4D\u0B56\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0CBF\u0CC6\u0CCC-\u0CCD\u0D41-\u0D43\u0D4D\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032\u1036-\u1037\u1039\u1058-\u1059\u17B7-\u17BD\u17C6\u17C9-\u17D3\u18A9\u20D0-\u20DC\u20E1\u302A-\u302F\uFB1E\uFE20-\uFE23\\U0001D167-\\U0001D169\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD]"
+        );
+        generateSets("Latin-Katakana", false, Normalizer.DECOMP_COMPAT, false,
+"[~\u3001-\u3002\u30A1-\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C3-\u30C4\u30C6\u30C8\u30CA-\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE-\u30F3\u30F5-\u30F6\u30FC-\u30FD]"
+        );
+        
+        out.close();
+        
+        /////////////////////////////////////////////////
+        if (true) return; // skip the stuff we've done already
+        
+        generateSets("Cyrillic-Latin", true, Normalizer.DECOMP, false,
+            "[\u0402\u0404-\u0406\u0408-\u040B\u040F-\u0418\u041A-\u0438\u043A-\u044F\u0452\u0454-\u0456\u0458-\u045B\u045F\u0490-\u0495\u0498-\u0499\u04D4-\u04D5\u04D8-\u04D9]"
+        );
+        generateSets("Latin-Cyrillic", false, Normalizer.DECOMP, false,
+            "[A-Za-z\u00C6\u00E6\u0110-\u0111\u018F\u0259\u02B9-\u02BA]"
+        );
+        */
+    }
+    
+    public static void generateSets(String label, boolean forward, 
+            Normalizer.Mode m, boolean lowerFirst, String rules) {
+        UnicodeSet s = new UnicodeSet(rules);
+        System.out.println("Generating " + label + (forward ? "" : " BACKWARD"));
+        close(s, m, lowerFirst);
+        out.println("# MINIMAL FILTER GENERATED FOR: " + label + (forward ? "" : " BACKWARD"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + s.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println();
+        out.println("Unicode: " + s.toPattern(false));
+    }
+    
+    static boolean GENERATE = false;
+    
+    public static void test() throws Exception {
+        File f = new File("TestUnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        GENERATE = true;
+        test("[:Devanagari:]");
+        /*
+        test("[\u00E0Bc]");
+        test("[m]");
+        */
+        
+        out.close();
+    }
+    
+    static final Normalizer.Mode[] testModes = {
+        Normalizer.NONE, Normalizer.NFD, Normalizer.NFC, Normalizer.NFKD, Normalizer.NFKC};
+    static final String[] modeNames = {
+        "NoNF", "NFD", "NFC", "NFKD", "NFKC"};
+        
+    static final boolean[] testCases = {
+        false, true};
+    static final String[] caseNames = {
+        "noLower", "lower"};
+    
+    public static void test(String testStr) throws Exception {
+        UnicodeSet original = new UnicodeSet(testStr);
+        
+        System.out.println("Testing Closure of: " + original.toPattern(true));
+        out.println("Testing Closure of: " + original.toPattern(false));
+        UnicodeSet raw = new UnicodeSet(original);
+        original.complement();
+        original.complement();
+        if (!raw.equals(original)) {
+            out.println("Equals:" + original.toPattern(false));
+        }
+        StringWriter swLog = null;
+        PrintWriter log = null;
+        
+        if (GENERATE) {
+            swLog = new StringWriter();
+            log = new PrintWriter(swLog);
+            log.println("static UnicodeSet[][] UNCHANGED = {");
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            if (GENERATE) log.println("    {");
+            for (int j = 0; j < testModes.length; ++j) {
+                UnicodeSet test = new UnicodeSet(original);
+                close(test, testModes[j], testCases[i]);
+                if (GENERATE) {
+                    log.println("\tnew UnicodeSet(\"" + generatedSet.toPattern(true) + "\"),");
+                }
+                String label = caseNames[i]  + ", " + modeNames[j] ;
+                System.out.println(label);
+                out.println(label + ": " + test.toPattern(false));
+                test.removeAll(original);
+                if (test.isEmpty()) {
+                    out.println("\tNo Difference from original");
+                } else {
+                    out.println("\tDifference = " + test.toPattern(false));
+                }
+                out.flush();
+            }
+            if (GENERATE) log.println("    },");
+            out.println();
+        }
+        
+        if (GENERATE) {
+            log.println("};");
+            out.print(swLog.getBuffer().toString());
+        }
+        
+        /*
+            close(test, Normalizer.DECOMP, false);
+            print("NFD", test);
+            
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.NO_OP, true);
+            print("Lower", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE, false);
+            print("NFC", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.DECOMP_COMPAT, false);
+            print("NFKD", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE_COMPAT, false);
+            print("NFKC", test);
+        */
+    }
+    
+    static PrintWriter out;
+    
+    /*
+    public static void print(String label, UnicodeSet test) {
+        System.out.println(label);
+        out.println(label + ": " + test.toPattern(false));
+        out.println();
+    }
+    */
+    
+    // dumb, slow implementations
+    public static class NFToString implements Char32ToString {
+        Normalizer.Mode mode;
+        boolean lowerFirst;
+        
+        NFToString(Normalizer.Mode m, boolean lowerFirst) {
+            mode = m;
+            this.lowerFirst = lowerFirst;
+        }
+        
+        public String get(int cp) {
+            String source = UTF16.valueOf(cp);
+            String result = source;
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            result = Normalizer.normalize(result, mode);
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            if (result.equals(source)) return null;
+            return result;
+        }
+    }
+        
+    
+    /** Returns a mapping from char32 to a string. If there is no change,
+     * null is returned.
+     */
+     
+    interface Char32ToString {
+        public String get(int cp);
+    }
+    
+    static boolean FAST = true;
+    
+    public static void close(UnicodeSet s, Normalizer.Mode m, boolean lowerFirst) {
+        Char32ToString f = new NFToString(m, lowerFirst);
+        if (FAST) {
+            int mm;
+            for (mm = 0; ; ++mm) if (m == testModes[mm]) break; // find mode
+            close2(s, f, lowerFirst ? 1 : 0, mm);
+            return;
+        }
+        close(s, f);
+    }
+    
+    public static void close(UnicodeSet s, Char32ToString f) {
+        if (GENERATE) generatedSet = new UnicodeSet();
+        
+        for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+            int type = UCharacter.getType(cp);
+            if (type == Character.UNASSIGNED) continue;
+            
+            //if (cp == '\u00e7') {
+              //  System.out.println("debug");
+            //}
+            String result = f.get(cp);
+            if (result == null) continue;
+            if (GENERATE) {
+                generatedSet.add(cp);
+            }
+            if (!containsSome(s, result)) continue;
+            s.add(cp);
+        }
+    }
+    
+    public static void close2(UnicodeSet s, Char32ToString f, int lc, int mode) {
+        UnicodeSet unchanged = new UnicodeSet(); // UNCHANGED[lc][mode];
+        int count = unchanged.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = unchanged.getRangeStart(i);
+            int end = unchanged.getRangeEnd(i);
+            for (int cp = start; cp <= end; ++cp) {
+                String result = f.get(cp);
+                if (result == null) throw new IllegalArgumentException("Something wrong -- should never happen");
+                if (!containsSome(s, result)) continue;
+                s.add(cp);
+            }
+        }
+    }
+    
+    /*
+    static final UnicodeSet[][] UNCHANGED = {
+        { // \u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4
+        new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]"),
+        // \u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278
+        new UnicodeSet("[\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0340-\u0341\u0343-\u0344\u0374\u037E\u0385-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D3-\u03D4\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+        new UnicodeSet("[\u0340-\u0341\u0343-\u0344\u0374\u037E\u0387\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB\u1FE3\u1FEB\u1FEE-\u1FEF\u1FF9\u1FFB\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u2329-\u232A\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+        new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0132-\u0137\u0139-\u0140\u0143-\u0149\u014C-\u0151\u0154-\u0165\u0168-\u017F\u01A0-\u01A1\u01AF-\u01B0\u01C4-\u01DC\u01DE-\u01E3\u01E6-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D0-\u03D6\u03F0-\u03F2\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+        new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u0132-\u0133\u013F-\u0140\u0149\u017F\u01C4-\u01CC\u01F1-\u01F3\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u0385\u0387\u03D0-\u03D6\u03F0-\u03F2\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1E9A-\u1E9B\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBD-\u1FC1\u1FC9\u1FCB\u1FCD-\u1FCF\u1FD3\u1FDB\u1FDD-\u1FDF\u1FE3\u1FEB\u1FED-\u1FEF\u1FF9\u1FFB\u1FFD-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+        },
+        {
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0345\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u09F8\u0F2A-\u0F33\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFC\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0132\u0134-\u0137\u0139-\u013F\u0141\u0143-\u0148\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u0340-\u0341\u0343-\u0345\u0374\u037E\u0385-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D1\u03D3-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0340-\u0341\u0343-\u0345\u0374\u037E\u0386-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD3\u1FD8-\u1FDB\u1FE3\u1FE8-\u1FEC\u1FEE-\u1FEF\u1FF8-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0137\u0139-\u0141\u0143-\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0134\u0136\u0139\u013B\u013D\u013F-\u0141\u0143\u0145\u0147\u0149-\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9A-\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FC1\u1FC8-\u1FCF\u1FD3\u1FD8-\u1FDB\u1FDD-\u1FDF\u1FE3\u1FE8-\u1FEF\u1FF8-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        },
+    };
+    */
+
+    
+    static UnicodeSet generatedSet;
+    
+    // These should both be public, and on the respective classes
+    
+    public static void addAll(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            s.add(cp);
+        }
+    }
+    
+    public static boolean containsSome(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            if (s.contains(cp)) return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java b/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
new file mode 100644
index 0000000..d87fd4e
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
@@ -0,0 +1,357 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2005, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.text.*;
+import java.util.Hashtable;
+import java.io.*;
+import com.ibm.icu.impl.*;
+import com.ibm.icu.lang.*;
+/**
+ * @author ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.7F
+ */
+public class WriteIndicCharts {
+    
+    public static void main(String[] args){
+        writeIICharts();
+    }
+   
+    
+    static String header =  "<html>\n" +
+                            "    <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"+
+                            "           Inter-Indic Transliteration Comparison chart"+
+                            "    </head>\n"+
+                            "    <body bgcolor=#FFFFFF>\n"+
+                            "         <table border=1 width=100% >\n"+
+                            "            <tr>\n"+
+                            "            <th width=9%>Inter-Indic</th>\n"+
+                            "            <th width=9%>Latin</th>\n"+
+                            "            <th width=9%>Devanagari</th>\n"+
+                            "            <th width=9%>Bengali</th>\n"+
+                            "            <th width=9%>Gurmukhi</th>\n"+
+                            "            <th width=9%>Gujarati</th>\n"+
+                            "            <th width=9%>Oriya</th>\n"+
+                            "            <th width=9%>Tamil</th>\n"+
+                            "            <th width=9%>Telugu</th>\n"+
+                            "            <th width=9%>Kannada</th>\n"+
+                            "            <th width=9%>Malayalam</th>\n"+
+                            "            </tr>\n";
+    static String footer =  "          </table>\n"+
+                            "    </body>\n" +
+                            "</html>\n";
+                   
+    static UnicodeSet deva = new UnicodeSet("[:deva:]"); 
+    static UnicodeSet beng = new UnicodeSet("[:beng:]");
+    static UnicodeSet gujr = new UnicodeSet("[:gujr:]");
+    static UnicodeSet guru = new UnicodeSet("[:guru:]");
+    static UnicodeSet orya = new UnicodeSet("[:orya:]");
+    static UnicodeSet taml = new UnicodeSet("[:taml:]");
+    static UnicodeSet telu = new UnicodeSet("[:telu:]");
+    static UnicodeSet knda = new UnicodeSet("[:knda:]"); 
+    static UnicodeSet mlym = new UnicodeSet("[:mlym:]");                      
+    static UnicodeSet inter= new UnicodeSet("[\uE000-\uE082]");
+    
+    public static void writeIICharts(){
+        try{
+            Transliterator t1 = Transliterator.getInstance("InterIndic-Bengali");    
+            Transliterator t2 = Transliterator.getInstance("InterIndic-Gurmukhi");
+            Transliterator t3 = Transliterator.getInstance("InterIndic-Gujarati");
+            Transliterator t4 = Transliterator.getInstance("InterIndic-Oriya");
+            Transliterator t5 = Transliterator.getInstance("InterIndic-Tamil");
+            Transliterator t6 = Transliterator.getInstance("InterIndic-Telugu");
+            Transliterator t7 = Transliterator.getInstance("InterIndic-Kannada");
+            Transliterator t8 = Transliterator.getInstance("InterIndic-Malayalam");
+            Transliterator t9 = Transliterator.getInstance("InterIndic-Devanagari");
+            Transliterator t10 = Transliterator.getInstance("InterIndic-Latin");
+            //UnicodeSetIterator sIter = new UnicodeSetIterator(deva);
+            
+            for(int i=0x00;i<=0x80;i++){
+               String[] arr =  new String[10];
+               arr[0]=UTF16.valueOf(i+ 0xE000);
+               table.put(UTF16.valueOf(i),arr);
+            }
+            
+            OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("comparison-chart.html"),"UTF-8");
+            
+            os.write(header);
+
+            writeIICharts(t9,0x0900,1);
+            writeIICharts(t1,0x0980,2);        
+            writeIICharts(t2,0x0A00,3); 
+            writeIICharts(t3,0x0A80,4); 
+            writeIICharts(t4,0x0B00,5); 
+            writeIICharts(t5,0x0B80,6); 
+            writeIICharts(t6,0x0c00,7); 
+            writeIICharts(t7,0x0C80,8); 
+            writeIICharts(t8,0x0D00,9); 
+
+            for(int i=0x00;i<=0x80;i++){
+                String[] temp = (String[])table.get(UTF16.valueOf(i));
+                boolean write = false;
+                for(int k=1;k<temp.length && temp[k]!=null;k++){
+                    if(UCharacter.getExtendedName(UTF16.charAt(temp[k],0)).indexOf("unassigned")<0 ||
+                       temp[k].indexOf(":UNASSIGNED")<0){
+                        write = true;
+                    }
+                }
+                if(write){
+                    os.write("        <tr>\n");
+                    for(int j=0; j<temp.length;j++){
+                        if(temp[j]!=null){
+                            boolean fallback=false;
+                            boolean unassigned=false;
+                            boolean unmapped = false;
+                            boolean consumed =false;
+                            String str = temp[j];
+                                                        
+                            if(temp[j].indexOf(":FALLBACK")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                fallback=true;
+                               // os.write("            <td bgcolor=#FFFF00 align=center title=\""++"\">"+str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }
+                            if(temp[j].indexOf(":UNASSIGNED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                unassigned=true;
+                            }
+                            
+                            if(temp[j].indexOf(":UNMAPPED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                unmapped=true;
+                            }
+                            if(temp[j].indexOf(":CONSUMED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                consumed=true;
+                            }
+                            
+                            String name;
+                            StringBuffer nameBuf=new StringBuffer(); 
+                            for(int f=0; f<str.length();f++){
+                                if(f>0){ nameBuf.append("+");}
+                                nameBuf.append(UCharacter.getExtendedName(UTF16.charAt(str,f)));
+                            }
+                            name = nameBuf.toString();   
+                            if(fallback){
+
+                                if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td  width=9% bgcolor=#BBBBFF align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#BBBBFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(unmapped){
+                                os.write("            <td bgcolor=#FF9999 align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(unassigned){
+                                if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td width=9% bgcolor=#00FFFF align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#00FFFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(consumed){
+                                 if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td width=9% bgcolor=#FFFF55 align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#FFFF55 align=center title=\""+""+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(name.indexOf("private")!=-1){
+                                String s = t10.transliterate(str);
+                                os.write("            <td width=9% bgcolor=#FFBBBB  align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                if(!s.equals(str)){
+                                    os.write("            <td width=9%  bgcolor=#CCEEDD align=center>"+s +"</td>");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#CCEEDD align=center>&nbsp;</td>");
+                                }
+                            }else{
+                               os.write("            <td width=9% align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            } 
+                        }else{
+                             os.write("           <td width=9% >&nbsp</td>\n");
+                        }
+                    }
+                    os.write("        </tr>\n");
+                }
+            }
+            os.write(footer);
+            os.close();
+        }catch( Exception e){
+            e.printStackTrace();
+        }
+    }
+    public static void writeCharts(){
+        try{
+            Transliterator t1 = Transliterator.getInstance("InterIndic-Bengali");    
+            Transliterator t2 = Transliterator.getInstance("InterIndic-Gurmukhi");
+            Transliterator t3 = Transliterator.getInstance("InterIndic-Gujarati");
+            Transliterator t4 = Transliterator.getInstance("InterIndic-Oriya");
+            Transliterator t5 = Transliterator.getInstance("InterIndic-Tamil");
+            Transliterator t6 = Transliterator.getInstance("InterIndic-Telugu");
+            Transliterator t7 = Transliterator.getInstance("InterIndic-Kannada");
+            Transliterator t8 = Transliterator.getInstance("InterIndic-Malayalam");
+            Transliterator t9 = Transliterator.getInstance("InterIndic-Devanagari");
+            
+            //UnicodeSetIterator sIter = new UnicodeSetIterator(deva);
+            
+            for(int i=0x0900;i<=0x097F;i++){
+               String[] arr =  new String[10];
+               arr[0]=UTF16.valueOf((i&0xFF) + 0xE000);
+               table.put(UTF16.valueOf(i),arr);
+            }
+            
+            OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("comparison-chart.html"),"UTF-8");
+            
+            os.write(header);
+            /*
+            writeCharts(t1,beng,1);        
+            writeCharts(t2,guru,2); 
+            writeCharts(t3,gujr,3); 
+            writeCharts(t4,orya,4); 
+            writeCharts(t5,taml,5); 
+            writeCharts(t6,telu,6); 
+            writeCharts(t7,knda,7); 
+            writeCharts(t8,mlym,8); 
+            */
+            /*
+            writeCharts(t9,0x0900,1);
+            writeCharts(t1,0x0980,2);        
+            writeCharts(t2,0x0A00,3); 
+            writeCharts(t3,0x0A80,4); 
+            writeCharts(t4,0x0B00,5); 
+            writeCharts(t5,0x0B80,6); 
+            writeCharts(t6,0x0c00,7); 
+            writeCharts(t7,0x0C80,8); 
+            writeCharts(t8,0x0D00,9); 
+            */
+            writeIICharts(t9,0x0900,1);
+            writeIICharts(t1,0x0980,2);        
+            writeIICharts(t2,0x0A00,3); 
+            writeIICharts(t3,0x0A80,4); 
+            writeIICharts(t4,0x0B00,5); 
+            writeIICharts(t5,0x0B80,6); 
+            writeIICharts(t6,0x0c00,7); 
+            writeIICharts(t7,0x0C80,8); 
+            writeIICharts(t8,0x0D00,9); 
+            for(int i=0x0900;i<=0x097F;i++){
+                String[] temp = (String[])table.get(UTF16.valueOf(i));
+                boolean write = false;
+                for(int k=1;k<temp.length;k++){
+                    if(UCharacter.getExtendedName(UTF16.charAt(temp[k],0)).indexOf("unassigned")<0){
+                        write = true;
+                    }
+                }
+                if(write){
+                    os.write("        <tr>\n");
+                    for(int j=0; j<temp.length;j++){
+                        if(temp[j]!=null){
+                            boolean fallback=false;
+                            String str = temp[j];
+                            
+                            if(temp[j].indexOf(":FALLBACK")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                fallback=true;
+                               // os.write("            <td bgcolor=#FFFF00 align=center title=\""++"\">"+str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }
+                            String name = UCharacter.getExtendedName(UTF16.charAt(str,0));
+                            if(fallback){
+                                os.write("            <td bgcolor=#BBBBFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(name.indexOf("unassigned")!=-1){
+                                os.write("            <td bgcolor=#CCCCCC align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(name.indexOf("private")!=-1){
+
+                                
+                                os.write("            <td bgcolor=#FFBBBB align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+
+                            }else{
+                               os.write("            <td align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            } 
+                        }else{
+                             os.write("           <td>&nbsp</td>\n");
+                        }
+                    }
+                    os.write("        </tr>\n");
+                }
+            }
+            os.write(footer);
+            os.close();
+        }catch( Exception e){
+            e.printStackTrace();
+        }
+    }
+    static Hashtable table = new Hashtable();
+    static String getKey(int cp){
+        int delta = cp & 0xFF;
+        delta-= (delta>0x7f)? 0x80 : 0;
+        //delta+=0x0900;
+        return UTF16.valueOf(delta);
+    }
+    
+    public static void writeCharts(Transliterator trans, int start, int index){
+        
+        Transliterator inverse = trans.getInverse();
+        for(int i=0;i<=0x7f;i++){
+            String cp = UTF16.valueOf(start+i);
+            String s1 = inverse.transliterate(cp);
+            String s2 = trans.transliterate(s1);
+            
+            String[] arr = (String[])table.get(getKey(start+i));
+            if(cp.equals(s2)){
+                arr[index] = s1;
+            }else{
+                arr[index] = s1 + ":FALLBACK";
+            }
+        }
+    }
+    
+    public static void writeIICharts(Transliterator trans,int start, int index){
+        
+        Transliterator inverse = trans.getInverse();
+        UnicodeSetIterator iter = new UnicodeSetIterator(inter);
+        
+        while(iter.next()){
+            String cp =UTF16.valueOf(iter.codepoint);
+            String s1 = trans.transliterate(cp);
+            String s2 = inverse.transliterate(s1);
+            String[] arr = (String[])table.get(UTF16.valueOf(iter.codepoint&0xFF));
+            if(cp.equals(s1)){
+                arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":UNASSIGNED";
+            }else if(cp.equals(s2)){
+                arr[index] = s1;
+            }else if(s1.equals(s2)){
+                if(s1.equals("")){
+                    arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":CONSUMED";
+                }else{
+                    arr[index] = s1+ ":FALLBACK";
+                }
+            } else{
+                if(s2.equals("")){
+                    arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":CONSUMED";
+                }else{
+                    arr[index] = s1+ ":FALLBACK";
+                }
+            }
+        }
+    }
+    public static void writeCharts(Transliterator trans, UnicodeSet target, int index){
+        UnicodeSetIterator tIter = new UnicodeSetIterator(target);
+        Transliterator inverse = trans.getInverse();
+        while(tIter.next()){
+            String cp = UTF16.valueOf(tIter.codepoint);
+            String s1 = inverse.transliterate(cp);
+            String s2 = trans.transliterate(s1);
+            
+            String[] arr = (String[])table.get(getKey(tIter.codepoint));
+            if(cp.equals(s2)){
+                arr[index] = cp;
+            }else{
+                arr[index] = cp + ":FALLBACK";
+            }
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
new file mode 100755
index 0000000..4bfd5eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
@@ -0,0 +1,483 @@
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+# ************************************************************************
+# Copyright (C) 2000-2004, International Business Machines Corporation and
+# others. All Rights Reserved.
+# ************************************************************************
+
+# This perl script creates ICU transliterator data files, that live
+# in icu/data, from ICU4J UTF8 transliterator data files, in
+# icu4j/src/com/ibm/icu/impl/data/.
+#
+# The transformation that is done is very minimal.  The script assumes
+# that the input files use only # comments
+# and that they follow a rigid format.
+#
+# The output files are named according to ICU conventions (see NAME_MAP
+# below) and created in the current directory.  They should be manually
+# checked and then copied into the icu/data/tranlit directory.
+# An ICU build must
+# then be initiated, and the standard suite of ICU transliterator tests
+# should be run after that.
+#
+# Alan Liu 5/19/00 2/27/01
+
+use Getopt::Long;
+use strict;
+
+use vars qw(%USED_FILES);
+
+my $DIR = "../../../impl/data";
+my $ID = '';
+
+GetOptions('dir=s' => \$DIR,
+           'id=s' => \$ID,
+           '<>' => \&usage) || die;
+
+usage() if (@ARGV);
+
+my $ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+sub usage {
+    my $me = $0;
+    $me =~ s|.+[/\\]||;
+    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+    print " --dir <dir> Specify the directory containing the\n";
+    print "             Transliterator_*.txt files\n";
+    print " --id <id>   Specify a single ID to transform, e.g.\n";
+    print "             Fullwidth-Halfwidth\n";
+    exit(1);
+}
+
+my $JAVA_ONLY = '-';
+
+my $OUTDIR = "icu4c";
+mkdir($OUTDIR,0777);
+
+# Mapping from Java file names to ICU file names
+# Constraints on ICU4C file name: icudt20b_
+# |--9 (prefix)---|---18(name with distinguisher,e.g. "t_" )----|
+#  --4 ("."+extn)--| = 31 characters total.
+# That is, must have length(%NAME_MAP{x}) <= 16
+
+my $MAX_ICU4C_FILENAME_LEN = 18;
+
+# -- HISTORY -- If not marked, then pre 2.2.
+#               All InterIndic are pre 2.2.
+# Any_Accents
+# Any_Publishing
+# Arabic_Latin           * 2.2
+# Cyrillic_Latin
+# Fullwidth_Halfwidth
+# Greek_Latin
+# Greek_Latin_UNGEGN     * 2.2 (moved from el.txt)
+# Han_Latin              * 2.2
+# Han_Latin_Definition   * 2.2
+# Han_Latin_EDICT        * 2.2 J only
+# Hebrew_Latin           * 2.2
+# Hiragana_Katakana
+# Hiragana_Latin
+# Latin_Jamo
+# Latin_Katakana
+# ThaiLogical_Latin      * 2.2 J only
+# Thai_ThaiLogical       * 2.2 J only
+# Thai_ThaiSemi          * 2.2 J only
+
+my %NAME_MAP = (
+     # An ICU name of "" means the ICU name == the ID
+
+     # We filter names based on what is in use in the index file.
+
+     # Flag a rule as JAVA_ONLY if it exists and we use it in Java,
+     # but we don't use it in C.
+
+     # Use official script abbreviations where possible.
+
+   # |..............|           |..............|             
+   # 1234567890123456           1234567890123456
+     Any_Accents            => "",
+     Any_Publishing         => "",
+     Cyrillic_Latin         => "Cyrl_Latn",
+     Fullwidth_Halfwidth    => "FWidth_HWidth",
+     Greek_Latin            => "Grek_Latn",
+     Hiragana_Katakana      => "Hira_Kana",
+     Hiragana_Latin         => "Hira_Latn",
+     Latin_Jamo             => "Latn_Jamo",
+     Latin_Katakana         => "Latn_Kana",
+
+     Arabic_Latin           => "Arab_Latn",
+     Greek_Latin_UNGEGN     => "Grek_Latn_UNGEGN",
+     Han_Latin              => "Hani_Latn",
+     Han_Latin_Definition   => "Hani_Latn_Def",
+     Han_Latin_EDICT        => "Hani_Latn_EDICT",
+     Hebrew_Latin           => "Hebr_Latn",
+     ThaiLogical_Latin      => $JAVA_ONLY, # "ThaiLog_Latn",
+     Thai_ThaiLogical       => $JAVA_ONLY, # "Thai_ThaiLog",
+     Thai_ThaiSemi          => $JAVA_ONLY, # "Thai_ThaiSemi",
+
+     InterIndic_Bengali     => "InterIndic_Beng",
+     InterIndic_Devanagari  => "InterIndic_Deva",
+     InterIndic_Gujarati    => "InterIndic_Gujr",
+     InterIndic_Gurmukhi    => "InterIndic_Guru",
+     InterIndic_Kannada     => "InterIndic_Knda",
+     InterIndic_Latin       => "InterIndic_Latn",
+     InterIndic_Malayalam   => "InterIndic_Mlym",
+     InterIndic_Oriya       => "InterIndic_Orya",
+     InterIndic_Tamil       => "InterIndic_Taml",
+     InterIndic_Telugu      => "InterIndic_Telu",
+
+     Bengali_InterIndic     => "Beng_InterIndic",
+     Devanagari_InterIndic  => "Deva_InterIndic",
+     Gujarati_InterIndic    => "Gujr_InterIndic",
+     Gurmukhi_InterIndic    => "Guru_InterIndic",
+     Kannada_InterIndic     => "Knda_InterIndic",
+     Latin_InterIndic       => "Latn_InterIndic",
+     Malayalam_InterIndic   => "Mlym_InterIndic",
+     Oriya_InterIndic       => "Orya_InterIndic",
+     Tamil_InterIndic       => "Taml_InterIndic",
+     Telugu_InterIndic      => "Telu_InterIndic",
+     
+     Han_Pinyin             => $JAVA_ONLY,
+     Kanji_English          => $JAVA_ONLY,
+     Kanji_OnRomaji         => $JAVA_ONLY,
+     
+     Latin_NumericPinyin    => "Latn_NPinyn",
+     Tone_Digit             => "Tone_Digit",
+     Han_Spacedhan          => "Hani_SpHan",
+     );
+
+my ($x,$x,$x,$x,$x,$THIS_YEAR) = localtime();
+$THIS_YEAR += 1900;
+
+# Header blocks of text written at start of ICU output files
+my $HEADER1 = <<END;
+//--------------------------------------------------------------------
+// Copyright (c) 1999-$THIS_YEAR, International Business Machines
+// Corporation and others.  All Rights Reserved.
+//--------------------------------------------------------------------
+// THIS IS A MACHINE-GENERATED FILE
+END
+my $HEADER2 = <<END;
+//--------------------------------------------------------------------
+END
+
+my $TOOL = $0;
+
+# Convert the index first; this tells us which rule files are in use.
+convertIndex();
+
+# print "In use:\n", join("\n", sort keys(%USED_FILES)), "\n";
+
+# Iterate over all Java RBT rule files
+foreach (<$DIR/Transliterator_*.txt>) {
+    next if (/~$/); # Ignore emacs backups
+    next if (/_index\.txt$/); # The index file was processed above
+    # Select either the command-line arg, if there was one, or
+    # any files mentioned in the index.
+    my $leaf = $_;
+    $leaf =~ s|.+[/\\]||;
+    if (($ID && $leaf =~ /$ID/) || exists $USED_FILES{$leaf}) {
+        my ($out, $id) = convertFileName($_);
+        if ($out) {
+            if ($out eq $JAVA_ONLY) {
+                print STDERR "*** $id skipped: Java only ***\n";
+                next;
+            }
+            file($id, $_, $out);
+        }
+    } elsif (!$ID) {
+        print "*** $leaf skipped: not in use ***\n";
+    }
+}
+
+######################################################################
+# Convert a Java file name to C
+# Param: Java file name of the form m|Transliterator_(.+)\.utf8\.txt$|
+# Return: A C file name (e.g., ldevan.txt) or the empty string,
+#  if there is no mapping, or $JAVA_ONLY if the given file isn't
+#  intended to be incorporated into C.
+sub convertFileName {
+    local $_ = shift;
+    my $id;
+    if (m|Transliterator_(.+)\.utf8\.txt$| ||
+        m|Transliterator_(.+)\.txt$|) {
+        $id = $1;
+    } else { die "Can't parse Java file name $_"; }
+    if (!exists $NAME_MAP{$id}) {
+        print STDERR "ERROR: $id not in map; please update $0\n";
+        return '';
+    }
+    my $out = $NAME_MAP{$id};
+    if ($out eq '') {
+        $out = $id;
+    }
+    if ($out ne $JAVA_ONLY) {
+        $out = 't_' . $out;
+    }
+    if (length($out) > $MAX_ICU4C_FILENAME_LEN) {
+        print STDERR "ERROR: ICU4C file name \"$out\" too long; please update $0\n";
+        return '';
+    }
+    return ($out, $id);
+}
+
+######################################################################
+# Convert the index file from Java to C format
+sub convertIndex {
+    my $JAVA_INDEX = "Transliterator_index.txt";
+    my $C_INDEX = "translit_index.txt";
+    open(JAVA_INDEX, "$DIR/$JAVA_INDEX") or die;
+    open(C_INDEX, ">$OUTDIR/$C_INDEX") or die;
+    
+    header(\*C_INDEX, $JAVA_INDEX);
+    
+    print C_INDEX <<END;
+//--------------------------------------------------------------------
+// N.B.: This file has been generated mechanically from the
+// corresponding ICU4J file, which is the master file that receives
+// primary updates.  The colon-delimited fields have been split into
+// separate strings.  For 'file' and 'internal' lines, the encoding
+// field has been deleted, since the encoding is processed at build
+// time in ICU4C.  Certain large rule sets not intended for general
+// use have been commented out with the notation "Java only".
+//--------------------------------------------------------------------
+
+translit_index {
+  RuleBasedTransliteratorIDs {
+END
+        
+    while (<JAVA_INDEX>) {
+        # ignore CVS keyword substitutions
+        next if /\$(Source|Revision|Date)/;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Comments; change # to //
+        if (s|^(\s*)\#|$1//|) {
+            print C_INDEX;
+            next;
+        }
+        # Blank lines
+        if (!/\S/) {
+            print C_INDEX;
+            next;
+        }
+        # Content lines
+        chomp;
+        my $prefix = '';
+        #replace \p with \\p
+        $_=~ s/\\p/\\\\p/g;
+        my @a = split(':', $_);
+        if ($a[1] eq 'file' || $a[1] eq 'internal') {
+            # Convert the file name
+            my $id;
+            # Record file names in use
+            $USED_FILES{$a[2]} = 1;
+            ($a[2], $id) = convertFileName($a[2]);
+            if ($a[2] eq $JAVA_ONLY) {
+                $prefix = '// Java only: ';
+            }
+
+            # Delete the encoding field
+            splice(@a, 3, 1);
+        } elsif ($a[1] eq 'alias') {
+            # Pad out with extra blank fields to make the
+            # 2-d array square
+            push @a, "";
+        } else {
+            die "Can't parse $_";
+        }
+        print C_INDEX
+            $prefix, "{ ",
+            join(", ", map("\"$_\"", @a)),
+            " },\n";
+    }
+
+    print C_INDEX <<END;
+  }
+}
+END
+
+    close(C_INDEX);
+    close(JAVA_INDEX);
+    print STDERR "$JAVA_INDEX -> $C_INDEX\n";
+}
+
+######################################################################
+# Output a header
+# Param: Filehandle
+sub header {
+    my $out = shift;
+    my $in = shift;
+    print $out $HEADER1;
+    print $out "// Tool: $TOOL\n// Source: $in\n";
+    print $out "// Date: ", scalar localtime, "\n";
+    print $out $HEADER2;
+    print $out "\n";
+}
+
+######################################################################
+# Process one file
+# Param: ID, e.g. Fullwidth-Halfwidth
+# Param: Java input file name, e.g.
+#  f:/icu4j/src/com/ibm/text/resources/Transliterator_Fullwidth_Halfwidth.utf8.txt
+# Param: ICU output file name, e.g. fullhalf
+sub file {
+    my $id = shift;
+    my $IN = shift;
+    my $out = shift;
+
+    my $OUT = "$out.txt";
+
+    # Show input size. Show output size later -- useful for quick sanity check.
+    print "$id (", -s $IN, ") -> $OUT (";
+
+    # Open file, write UTF8 marker, close it, and reopen in text mode
+    open(OUT, ">$OUTDIR/$OUT") or die;
+    binmode OUT;        # Must do this so we can write our UTF8 marker
+    print OUT pack("C3", 0xEF, 0xBB, 0xBF); # Write UTF8 marker
+    close(OUT);
+
+    open(OUT, ">>$OUTDIR/$OUT") or die;
+    print OUT " // -*- Coding: utf-8; -*-\n";
+
+    header(\*OUT, $IN);
+    print OUT "// $id\n";
+    print OUT "\n";
+    print OUT "$out {\n";
+    print OUT "  Rule {\n";
+
+    open(IN, $IN) or die;
+    binmode IN;                 # IN is a UTF8 file
+
+    my $first = 1;
+    my $BOM = pack("C3", 239, 187, 191); # a UTF8 byte order mark
+
+    # Process each line by changing # comments to // comments
+    # and taking other text and enclosing it in double quotes
+    while (<IN>) {
+        my $raw = $_;
+        # ignore CVS keyword substitutions
+        next if /\$(Source|Revision|Date)/;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Look for and delete BOM
+        if ($first) {
+            s/^$BOM//;
+            $first = 0;
+        }
+
+        # Clean the eol junk up
+        s/[\x0D\x0A]+$//;
+
+        # If there is a trailing backslash, then delete it -- we don't
+        # need line continuation in C, since adjacent strings are
+        # concatenated.  Count trailing backslashes; if they are odd,
+        # one is trailing.
+        if (m|(\\+)$|) {
+            if ((length($1) % 2) == 1) {
+                s|\\$||;
+            }
+        }
+
+        # Transform escaped characters
+        hideEscapes();
+
+        if (/^(\s*)(\#.*)$/) {
+            # Comment-only line
+            my ($white, $cmt) = ($1, $2);
+            $cmt =~ s|\#|//|;
+            $_ = $white . $cmt;
+
+        } elsif (!/\S/) {
+            # Blank line -- leave as-is
+
+        } else {
+            # Remove single-quoted matter 
+            my @quotes;
+            my $nquotes = 0;
+            my $x = $_;
+            while (s/^([^\']*)(\'[^\']*\')/$1<<x$nquotes>>/) {
+                push @quotes, $2;
+                ++$nquotes;
+            }
+
+            # Extract comment
+            my $cmt = '';
+            if (s|\#(.*)||) {
+                $cmt = '//' . $1;
+            }
+
+            # Add quotes
+            s|^(\s*)(\S.*?)(\s*)$|$1\"$2\"$3|;
+
+            # Restore single-quoted matter
+            for (my $i=0; $i<$nquotes; ++$i) {
+                s|<<x$i>>|$quotes[$i]|;
+            }
+
+            # Restore comment
+            $_ .= $cmt;
+        }
+
+        # Restore escaped characters
+        restoreEscapes();
+
+        print OUT $_, "\n";
+    }
+
+    # Finish up
+    close(IN);
+    print OUT "  }\n";
+    print OUT "}\n";
+    close(OUT);
+
+    # Write output file size for sanity check
+    print -s "$OUTDIR/$OUT", ")\n";
+}
+
+######################################################################
+sub hideEscapes {
+    # Transform escaped characters
+    s|\\\\|<<bs>>|g; # DO THIS FIRST Transform backslashes
+    s|\\u([a-zA-Z0-9]{4})|<<u$1>>|g; # Transform Unicode escapes
+    s|\\\"|<<dq>>|g; # Transform backslash double quote
+    s|\\\'|<<sq>>|g; # Transform backslash single quote
+    s|\\\#|<<lb>>|g; # Transform backslash pound
+    s|\\(.)|<<q$1>>|g; # Transform backslash escapes
+}
+
+######################################################################
+sub restoreEscapes {
+    # Restore escaped characters
+    s|<<bs>>|\\\\|g;
+    s|<<dq>>|\\\\\\\"|g;
+    s|<<sq>>|\\\\\\\'|g;
+    s|<<lb>>|\\\\\\\#|g;
+    s|<<q(.)>>|\\\\\\$1|g;
+    s|<<u0000>>|\\\\u0000|g; # Double escape U+0000
+    s|<<u(....)>>|\\u$1|g;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
new file mode 100755
index 0000000..6811313
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
@@ -0,0 +1,121 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -W -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -W -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# This perl script updates the filters in the transliterator index file.
+# It does so in a dumb way:
+#
+#  Latin-X   NFD lower
+#  X-Latin   NFD
+#
+# For transliterators using NFKD, or not using Lower in this way, you
+# will have to hand-edit the index file.
+#
+# This script writes a new index file.  The new file has to then be
+# hand-edited and checked before use; it contains comments indicating
+# old lines that were replaced.
+#
+# Alan Liu 11/29/01
+
+use Getopt::Long;
+
+my $DIR = "../../text/resources";
+my $CLASSES = "../../../../../classes";
+
+#GetOptions('dir=s' => \$DIR,
+#           'id=s' => \$ID,
+#           '<>' => \&usage) || die;
+
+#usage() if (@ARGV);
+
+#$ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+#sub usage {
+#    my $me = $0;
+#    $me =~ s|.+[/\\]||;
+#    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+#    print " --dir <dir> Specify the directory containing the\n";
+#    print "             Transliterator_*.txt files\n";
+#    print " --id <id>   Specify a single ID to transform, e.g.\n";
+#    print "             Fullwidth-Halfwidth\n";
+#    die;
+#}
+
+convertIndex();
+
+######################################################################
+# Convert the index file from Java to C format
+# Assume lines are of the form:
+#   <ID>:alias:<FILTER>;<REMAINDER>
+# <REMAINDER> can be
+#   Lower;NFX;...
+#   NFX;Lower;...
+#   NFX;...
+sub convertIndex {
+    $IN = "Transliterator_index.txt";
+    $OUT = "$IN.new";
+    open(IN, "$DIR/$IN") or die;
+    open(OUT, ">$DIR/$OUT") or die;
+    
+    while (<IN>) {
+        # Look for lines that are aliases with NF*
+        if (/^([^:]+):alias:(\[.+?);\s*((NF[^\s]*?)\s*;.+)$/i) {
+            my $id = $1;
+            my $oldset = $2;
+            my $remainder = $3;
+            my $NFXD = $4;
+            my $lower = '';
+            # Check for Lower
+            # If it comes before NF* then adjust accordingly
+            if (/^([^:]+):alias:(\[.+?);\s*(Lower\s*;.+)$/i) {
+                $lower = 'lower';
+                if (length($2) < length($oldset)) {
+                    $oldset = $2;
+                    $remainder = $3;
+                }
+            }
+            print STDERR "$id $NFXD $lower\n";
+            my $set = getSourceSet($id, $NFXD, $lower);
+            $_ = "$id:alias:$set;$remainder\n";
+        }
+        print OUT;
+    }
+
+    close(IN);
+    close(OUT);
+    print STDERR "Wrote $DIR/$OUT\n";
+}
+
+######################################################################
+# Get the source set (call out to Java), optionally with a closure.
+sub getSourceSet {
+    my $ID = shift;
+    my $NFXD = shift;
+    my $lower = shift;
+    my $set = `java -classpath $CLASSES com.ibm.tools.translit.genIndexFilters $ID $NFXD $lower`;
+    chomp($set);
+    $set;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
new file mode 100644
index 0000000..de7e397
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
@@ -0,0 +1,68 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.text.*;
+
+/**
+ * Adjunct class to getIndexFilters.bat.  Just generates source sets
+ * and their closures.
+ *
+ * Usage: ID [ NFD|NFKD [lower] ]
+ *
+ *   java -classpath classes com.ibm.icu.dev.tool.translit.genIndexFilters
+ *                              Latin-Greek NFD lower
+ *
+ * The 'NFD'|'NFKD' and 'lower' args are optional, but 'lower' can
+ * only be specified if 'NFD' or 'NFKD' is.
+ *
+ * DO NOT CHANGE OUTPUT FORMAT.  This tool's output is read by a Perl
+ * script.
+ */
+public class genIndexFilters {
+
+    public static void main(String[] args) {
+        Normalizer.Mode m = Normalizer.NONE;
+        boolean lowerFirst = false;
+        if (args.length >= 2) {
+            if (args[1].equalsIgnoreCase("NFD")) {
+                m = Normalizer.NFD;
+            } else if (args[1].equalsIgnoreCase("NFKD")) {
+                m = Normalizer.NFKD;
+            } else {
+                usage();
+            }
+        }
+        if (args.length >= 3) {
+            if (args[2].equalsIgnoreCase("lower")) {
+                lowerFirst = true;
+            } else {
+                usage();
+            }
+        }
+        if (args.length > 3) {
+            usage();
+        }
+        showSourceSet(args[0], m, lowerFirst);
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) {
+        Transliterator t = Transliterator.getInstance(ID);
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(sourceSet.toPattern(true));
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.bat b/src/com/ibm/icu/dev/tool/translit/indic.bat
new file mode 100755
index 0000000..57293b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.bat
@@ -0,0 +1,21 @@
+REM /**
+REM *******************************************************************************
+REM * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+REM * others. All Rights Reserved.                                                *
+REM *******************************************************************************
+REM */
+
+@echo off
+REM This script is a Windows launcher for the indic.pl script.  For this
+REM to work, the perl executable must be on the path.  We recommend
+REM the ActiveState build; see http://www.activestate.com.  See the
+REM tz.pl script itself for more documentation.
+
+if "%OS%" == "Windows_NT" goto WinNT
+perl -w -x indic.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto end
+:WinNT
+perl -w -x indic.pl %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto end
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+:end
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.pl b/src/com/ibm/icu/dev/tool/translit/indic.pl
new file mode 100755
index 0000000..4d614ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.pl
@@ -0,0 +1,662 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+#!perl
+
+# Usage - $0 <remap file>
+#  e.g. - indic indic.txt
+# The input file should be a subset of the Unicode data file containing
+# the blocks of interest.
+#
+# The remap file should have lines of the form
+# "\u0D01>\u0D02;"
+# including the quotes.  These will be interpreted as saying that the
+# undefined code point U+D01 (derived via mapping from InterIndic)
+# can be remapped to U+D02.
+# 
+# The purpose of this script is to process the Indic script data into
+# a form usable by the IndicTransliterator, that is, the Indic-Indic
+# transliterator.  The transliterator needs two things: A mapping of
+# the code points in common, and a list of the exceptions.
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want the Unicode DB in icu4j/src/data/unicode/.
+$UNICODE_DB = "../../../../data/unicode/UnicodeData.txt";
+$EXCEPTIONS_FILE = shift;
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want to output files to icu4j/src/com/ibm/text/resources/.
+# Output directory
+$OUTDIR = "../../text/resources";
+
+# The template file should contain java code that can be used
+# to generate RuleBasedTransliterator resource files.  The template
+# should contain the following embedded symbols, which this script
+# will replace:
+# $TOOL - name of generating tool
+# $DATE - date of generation
+# $SCRIPTFROM - name of source script
+# $SCRIPTTO - name of target script
+# $RULES - rules
+$RBT_TEMPLATE = 'rbtTemplate.txt';
+
+# Name of this tool in generated RBT files
+$RBT_GEN_TOOL = 'icu4j/src/com/ibm/tools/translit/indic.pl';
+
+$DUMP = 0; # If 1, dump out internal data
+
+$DO_HEURISTIC_REMAP = 0; # If 1, do automatic heuristic remapping
+$DO_DECOMP_REMAP = 0; # If 1, do decomp remapping
+
+open(UNICODE_DB);
+while (<UNICODE_DB>) {
+    next if (m|^0[0-8]|); # Skip up to Devanagari block (0900)
+    last if (m|^0D[8-F]|i); # Bail out after Malayam block (0D00)
+    # 0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+    my @data = split(/;/);
+    my $fullCode = hex($data[0]); # e.g., 0x093F
+    my $code = $fullCode & 0x7F; # e.g., 0x3F
+    my ($script, $name) = ($data[1] =~ /(\w+)\s+(.+)/);
+    die "Can't parse $_" unless ($name);
+    # e.g., $code/$script/$name = 3F/MALAYALAM/VOWEL SIGN I
+
+    # Titlecase the script
+    $script = ucfirst(lc($script));
+
+    # Fix a couple inconsistencies in the 3.0 data
+    # REVISIT: Is this okay to do?
+    if ($DO_HEURISTIC_REMAP) {
+        if ($script eq 'Gujarati' && $code >= 5 && $code <= 0x14) {
+            $name =~ s/^VOWEL/LETTER/;
+        }
+    }
+
+    # Keep track of all script names we encounter.  We also note the
+    # base of the block.
+    my $base = $fullCode & ~0x7F; # e.g., 0x900;
+    if (exists $SCRIPT_TO_BASE{$script}) {
+        die "Script base mismatch for $script: $base vs. $SCRIPT_TO_BASE{$script}"
+            if ($SCRIPT_TO_BASE{$script} ne $base);
+    } else {
+        $SCRIPT_TO_BASE{$script} = $base;
+    }
+
+    # Build up a mapping by name.  For each name, keep a hash keyed by
+    # code point.  For each code point, keep an array of script names.
+    # Also keep a total use count for each name.
+    push @{$NAME_CODE_TO_SCRIPTS{$name}{$code}}, $script;
+    ++$NAME_CODE_TO_SCRIPTS{$name}{count};
+
+    # Build a map that looks like this:
+    # $SCRIPT_NAME_TO_CODE{<script>}{<name>} = <code>
+    # or undef if there is no mapping.
+    $SCRIPT_NAME_TO_CODE{$script}{$name} = $code;
+
+    # Build a map that looks like this:
+    $SCRIPT_CODE_TO_NAME{$script}{$code} = $name;
+
+    # And a map from the fullCode point to the name
+    $FULLCODE_TO_NAME{$fullCode} = $name;
+
+    # Map code (0..7F) to name.  This is usually a 1-1 mapping, but
+    # is 1-n in a few cases.
+    if (exists $CODE_TO_NAME{$code}) {
+        if ($name ne $CODE_TO_NAME{$code}) {
+            # For multiple names on a code offset, use the format
+            # (a/b), (a/b/c), etc.
+            local $_ = $CODE_TO_NAME{$code};
+            if (m|^\(|) {
+                if (!m|[\(\)/]$name[\(\)/]|) {
+                    s|\)$|/$name\)|;
+                }
+            } else {
+                $_ = "($_/$name)";
+            }
+            $CODE_TO_NAME{$code} = $_;
+        }
+    } else {
+        $CODE_TO_NAME{$code} = $name;
+    }
+}
+close(UNICODE_DB);
+
+# Read and parse the manual remapping file.  This contains lines
+# of the form:
+
+# |"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI 
+
+# The left hand side contains a non-existent full code value.  It
+# should be a single value.  The right hand side contains one or more
+# real full code values.  The idea is that when a mapping from another
+# script ends up at the non-existent code point on the left, the
+# sequence on the right should be substituted.  In this example,
+# Devanagari has no AI Length Mark.  So, if transliterating from
+# Oriya, then the character 0B56 (Oriya AI Length Mark) will remap to
+# the non-existent 0956, and that remaps to 0948, our chosen
+# Devanagari equivalent.  For our purposes, the left hand side should
+# be taken to mean its equivalent point in the InterIndic range.  In
+# this example, what it really says is E056>0948 in the
+# InterIndic-Devanagari transliterator.
+
+if ($EXCEPTIONS_FILE) {
+    open(EXCEPTIONS_FILE) or die;
+    while (<EXCEPTIONS_FILE>) {
+        if (m|^\s*\"([^\"]*?)\"|) {
+            my $line = $_;
+            $_ = $1;
+            if (/^(.*)>(.*);$/) {
+                my ($rawFrom, $rawTo) = ($1, $2);
+                my @from = parseUnicodeEscape($rawFrom);
+                my @to = parseUnicodeEscape($rawTo);
+                my $from = hexArray(@from);
+                # Some entries look like this:
+                # |"\u0955>\u0955;"
+                # these do nothing; ignore them.
+                if (intArraysEqual(\@from, \@to)) {
+                    #print STDERR "Ignoring NOOP remap of $from\n";
+                } elsif (exists $EXCEPTIONS{$from}) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Duplicate remap entries for $from\n";
+                } elsif (scalar @from > 1) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Ignoring multichar remap: ", hexArray(@from), "->", hexArray(@to), "\n";                    
+                } else {
+                    # Check this for validity.  Full code on the left
+                    # should NOT exist.  Full code seq on the right should.
+                    if (exists $FULLCODE_TO_NAME{$from[0]}) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; left side defined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } elsif (grep(! exists $FULLCODE_TO_NAME{$_}, @to)) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; right side undefined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } else {
+                        $EXCEPTIONS{$from[0]} = \@to;
+                    }
+                }
+            } else { die "ERROR in $EXCEPTIONS_FILE - Can't parse \"$_\" in line $line"; }
+        }
+    }
+    close(EXCEPTIONS_FILE);
+    print STDERR "$EXCEPTIONS_FILE: Loaded ", scalar keys %EXCEPTIONS, " remappings\n";
+}
+
+if ($DO_DECOMP_REMAP) {
+    # Read the NamesList.txt file.  This contains decomposition data.
+    # Gather these into %DECOMP, which maps a name to n1.n2..., where n1
+    # etc. are decomposed names.  E.g. $DECOMP{'LETTER RRA'} -> 'LETTER
+    # RA.SIGN NUKTA'.  There may be different mappings in different script
+    # blocks (LETTER RRA is mapped differently in Devanagari and Bengali),
+    # in which case the name goes into %DECOMP_MISMATCH, and is removed
+    # from %DECOMP.
+    $NAMES = "NamesList.txt";
+    open(NAMES);
+    while (<NAMES>) {
+        # Skip to start of DEVANAGARI block
+        last if (/^\@\@\s+0900/);
+    }
+    while (<NAMES>) {
+        # Continue until start of SINHALA block
+        last if (/^\@\@\s+0D80/);
+        if (/^([0-9A-Z]{4})/i) {
+            $code = $1;
+        } elsif (/^\s+:\s*(.+)/) {
+            # We've found a mapping of the form:
+            # 0929    DEVANAGARI LETTER NNNA
+            #     * for transcribing Dravidian alveolar n
+            #     : 0928 093C
+            my $from = $FULLCODE_TO_NAME{hex($code)};
+            my @to = map($FULLCODE_TO_NAME{hex($_)}, split(/\s+/, $1));
+            if (exists $DECOMP{$from}) {
+                my $aref = $DECOMP{$from};
+                if (join(".", @$aref) ne join(".", @to)) {
+                    print STDERR "ERROR: Decomp mismatch for $from\n";
+                    print STDERR "     : $from = ", join(".", @$aref), "\n";
+                    print STDERR "     : $from = ", join(".", @to), "\n";
+                    $DECOMP_MISMATCH{$from} = 1;
+                }
+            } else {
+                $DECOMP{$from} = \@to;
+            }
+        }
+    }
+    close(NAMES);
+    # Remove mismatches
+    foreach (keys %DECOMP_MISMATCH) {
+        delete $DECOMP{$_};
+    }
+    if ($DUMP) {
+        foreach (keys %DECOMP) {
+            print "$_ = ", join(" + ", @{$DECOMP{$_}}), "\n";
+        }
+    }
+}
+
+# Count the total number of scripts
+
+$SCRIPT_COUNT = scalar keys %SCRIPT_TO_BASE;
+#print join("\n", sort keys %SCRIPT_TO_BASE), "\n";
+
+# Dump out the %NAME_CODE_TO_SCRIPTS map.
+
+if ($DUMP) {
+    print "\nBY NAME:\n";
+    foreach my $pass ((1, 2)) {
+        print "\nBY NAME - SINGLETONS:\n" if ($pass eq 2);
+        foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+            if ($pass eq 1) {
+                next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+            } else {
+                next if (1 < $NAME_CODE_TO_SCRIPTS{$name}{count});
+            }
+            print "$name:";
+            my $href = $NAME_CODE_TO_SCRIPTS{$name};
+            foreach my $code (sort {$a <=> $b} keys %$href) {
+                next if ($code eq 'count');
+                my $aref = $href->{$code};
+                print " ", hex2($code), " (", formatScriptList($aref), ")";
+            }
+            print "\n";
+        }
+    }
+}
+
+# Create some transliterators, based on the scripts and the %NAME_CODE_TO_SCRIPTS
+# map.  Only use %NAME_CODE_TO_SCRIPTS entries with a count of 2 or more, that is,
+# names that occur in two or more scripts.  For those scripts where
+# the names occur, map both up to the InterIndic range, and down to
+# the target script.
+
+$INTERINDIC = 0xE000;
+$INTERINDIC_EXTRA = 0xE080;
+$INTERINDIC_EXTRA_NEXT = $INTERINDIC_EXTRA;
+
+# For each script, create a hash.  The hash has a key for each
+# code point, either within its block, or in the InterIndic block.
+# the value of the key is the mapping.
+
+# The script hashes are named %DEVANAGARI, etc., and referenced
+# with symbolic refs.
+
+@REMAP = ('s/\bSHORT\s+//i',
+          's/\bCANDRA\s+//i',
+          's/\bQA$/KA/i',
+          's/\bKHHA$/KHA/i',
+          's/\bGHHA$/GA/i',
+          's/\bZA$/JA/i',
+          's/\bFA$/PHA/i',
+          's/\bVA$/BA/i',
+          's/\bNNNA$/NA/i',
+          's/\bRRA$/RA/i',
+          's/\bLLLA$/LLA/i',
+          's/\bLLLA$/LA/i',
+          's/\bLLA$/LA/i',
+          's/^A(.) LENGTH MARK$/VOWEL SIGN A$1/i',
+          's/CANDRABINDU/BINDI/i',
+          's/BINDI/CANDRABINDU/i',
+          );
+
+# Do this so we see zero counts:
+foreach my $remap (@REMAP) { $REMAP{$remap} = 0; }
+
+# This loop iterates over the names in the NAME_CODE_TO_SCRIPTS hash.
+# These names are things like "LETTER NNNA".  For each name, it then
+# creates script mappings up to the InterIndic area, and back down
+# to the script areas.  If a name maps to more than one offset,
+# then it uses the InterIndic extra range.  Either way, it picks
+# a single InterIndic point, either an offset point or something in
+# the extra range, and maps up and down from that point.
+foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+    next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+    my $href = $NAME_CODE_TO_SCRIPTS{$name};
+    # Count the number of different codes assigned to this name.
+    # Usually 1, but 2 for a handful of names.
+    my $codeCount = (keys %{$NAME_CODE_TO_SCRIPTS{$name}}) - 1; # less 1: {count}
+    # If $codeCount is 1, then map directly up to the $INTERINDIC
+    # base.  If $codeCount is 2, then map into unused spots starting
+    # at $INTERINDIC_EXTRA.
+    my $interIndicCode;
+    if ($codeCount > 1) {
+        # Map into the InterIndic extra range
+        $interIndicCode = $INTERINDIC_EXTRA_NEXT++;
+    }
+    my %seen;
+    foreach my $code (sort {$a ne 'count' && $b ne 'count' && $a <=> $b} keys %$href) {
+        next if ($code eq 'count');
+        my $aref = $href->{$code}; # Ref to array of scripts
+        if ($codeCount == 1) {
+            # Map directly
+            $interIndicCode = $INTERINDIC + $code;
+        }
+        # Keep track of the names of the extra InterIndic points
+        $INTERINDIC_NAME_TO_FULLCODE{$name} = $interIndicCode;
+
+        foreach my $scr (@$aref) {
+            $seen{$scr} = 1;
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            $ {$scr}{$fullCode} = hex4($interIndicCode) . "; // $name";
+            $ {$scr}{$interIndicCode} = hex4($fullCode) . "; // $name";
+        }
+    }
+    # Now handle InterIndic->Script unmapped points.  For each name,
+    # some of the scripts will be left out -- will have no mappings
+    # to that name.  For these scripts, we can either leave them
+    # unmapped (so the InterIndic->Local mapping is empty), or
+    # try to remap.
+ unmappedScript:
+    foreach my $scr (keys %SCRIPT_TO_BASE) {
+        next if ($seen{$scr});
+
+        if ($DO_HEURISTIC_REMAP) {
+            # Try to remap through the known equivalences in our
+            # remapping table
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $SCRIPT_NAME_TO_CODE{$scr}{$_}) {
+                        $ {$scr}{$interIndicCode} =
+                            hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedScript;
+                    }
+                }
+            }
+        }
+
+        # Try to remap through the file.  This contains remappings of
+        # the form 0991->0993.  That is, it contains local remappings
+        # that we can substitute and try again with.
+        #|GURMUKHI-InterIndic ------------------------------
+        #|// 0A02>; // UNMAPPED INTERNAL: SIGN BINDI
+        #|InterIndic-GURMUKHI ------------------------------
+        #|// E001>; // UNMAPPED EXTERNAL: SIGN CANDRABINDU
+        #|"\u0A01>\u0A02;"
+        # In this example, the remapping tells us that the non-existent
+        # character A01 should be considered equivalent to the real
+        # character A02.
+        # We implement this by adding two mappings; one from
+        # the InterIndic equivalent of A01, that is, E001, to A02,
+        # and one from A02, which otherwise has no mapping, to E001.
+        if ($EXCEPTIONS_FILE && $interIndicCode < $INTERINDIC_EXTRA) {
+            # Try to map this InterIndic character back to a the spot
+            # it would occupy in this script if it had a mapping.
+            my $code = $interIndicCode & 0x7F;
+            my $pseudoFullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            if (exists $EXCEPTIONS{$pseudoFullCode}) {
+                my $fullCodeArray = $EXCEPTIONS{$pseudoFullCode};
+                my $comment;
+                foreach my $c (@$fullCodeArray) {
+                    $comment .= "." if ($comment);
+                    $comment .= $FULLCODE_TO_NAME{$c};
+                }
+                $comment = "; // REMAP ($EXCEPTIONS_FILE): " .
+                    hex4($pseudoFullCode) . ">" . hexArray(@$fullCodeArray) . " = " .
+                    $CODE_TO_NAME{$code} . ">" . $comment;
+                $ {$scr}{$interIndicCode} = hexArray(@$fullCodeArray) . $comment;
+                if (scalar @$fullCodeArray == 1) {
+                    if (exists $ {$scr}{$fullCodeArray->[0]}) {
+                        # There's already a proper mapping; no need to fill
+                        # in reverse
+                    } else {
+                        $ {$scr}{$fullCodeArray->[0]} = hex4($interIndicCode) . $comment;
+                    }
+                }
+                next unmappedScript;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$interIndicCode} = 1;
+        local $_ = "; // UNMAPPED InterIndic-$scr: $name";
+        if (exists $SCRIPT_CODE_TO_NAME{$scr}{$interIndicCode & 0x7F}) {
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + ($interIndicCode & 0x7F);
+            $_ .= " (" . hex4($fullCode) . " = " . $FULLCODE_TO_NAME{$fullCode} . ")";
+        }
+        $ {$scr}{$interIndicCode} = $_;
+    }
+}
+
+# Add in unmapped entries for each script
+foreach my $scr (keys %SCRIPT_TO_BASE) {
+    my $base = $SCRIPT_TO_BASE{$scr};
+ unmappedInt:
+    foreach my $code (keys %{$SCRIPT_CODE_TO_NAME{$scr}}) {
+        my $fullCode = $code + $base;
+        next if (exists $ {$scr}{$fullCode});
+        my $name = $SCRIPT_CODE_TO_NAME{$scr}{$code};
+
+        if ($DO_HEURISTIC_REMAP) {
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $INTERINDIC_NAME_TO_FULLCODE{$_}) {
+                        $ {$scr}{$fullCode} =
+                            hex4($INTERINDIC_NAME_TO_FULLCODE{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedInt;
+                    }
+                }
+            }
+        }
+
+        # Now try the decomp table
+        if ($DO_DECOMP_REMAP && exists $DECOMP{$name}) {
+            my $x;
+            my $cmt = "; // DECOMP: $name -> ";
+            foreach my $n (@{$DECOMP{$name}}) {
+                if (exists $SCRIPT_NAME_TO_CODE{$scr}{$n}) {
+                    $x .= hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$n});
+                    $cmt .= $n . " + ";
+                } else {
+                    $cmt = 0;
+                    last;
+                }
+            }
+            if ($cmt) {
+                $ {$scr}{$fullCode} = $x . $cmt;
+                next unmappedInt;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode} = 1;
+        $ {$scr}{$fullCode} = "; // UNMAPPED $scr-InterIndic: $name";
+    }
+}
+
+# GUR
+# E00B>; // UNMAPPED EXTERNAL: LETTER VOCALIC R "\u0A0B>\u0A30\u0A3F;"
+# E00C>; // UNMAPPED EXTERNAL: LETTER VOCALIC L "\u0A0C>\u0A07;"
+# E00D>; // UNMAPPED EXTERNAL: LETTER CANDRA E "\u0A0D>\u0A10;"
+# E011>; // UNMAPPED EXTERNAL: LETTER CANDRA O "\u0A11>\u0A14;"
+# E037>; // UNMAPPED EXTERNAL: LETTER SSA "\u0A37>\u0A36;"
+# E045>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA E "\u0A45>\u0A48;"
+# E049>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA O "\u0A49>\u0A4C;"
+# Fix QA too
+
+# Dump out script maps
+foreach my $scr (sort keys %SCRIPT_TO_BASE) {
+    ## next unless ($scr eq 'TELUGU'); # Debugging
+    my @rules;
+    my $flag = 1;
+    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+        if ($flag && $fullCode >= $INTERINDIC) {
+            # We have the complete <scr>-InterIndic rules; dump
+            # them out.
+            generateRBT($scr, "InterIndic", \@rules, $OUTDIR);
+            @rules = ();
+            $flag = 0;
+        }
+        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+            push @rules, "// " . hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        } else {
+            push @rules, hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        }
+    }
+    # Now generate the InterIndic-<scr> rules.
+    generateRBT("InterIndic", $scr, \@rules, $OUTDIR);
+
+#    print "$scr-InterIndic ------------------------------\n";
+#    my $flag = 1;
+#    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+#        if ($flag && $fullCode >= $INTERINDIC) {
+#            print "InterIndic-$scr ------------------------------\n";
+#            $flag = 0;
+#        }
+#        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+#            print "// ", hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        } else {
+#            print hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        }
+#    }
+}
+
+# List successful remappings
+if ($DO_HEURISTIC_REMAP) {
+    foreach my $remap (sort keys %REMAP) {
+        print STDERR "REMAP ", $REMAP{$remap}, " x $remap\n";
+    }
+}
+
+#----------------------------------------------------------------------
+# SUBROUTINES
+
+# Return a listing of an array of scripts
+# Param: array ref
+sub formatScriptList {
+    my $aref = shift;
+    if ($SCRIPT_COUNT == @$aref) {
+        return "all";
+    } elsif (($SCRIPT_COUNT - 3) <= @$aref) {
+        my $s = "all but";
+        my %temp;
+        foreach (@$aref) { $temp{$_} = 1; }
+        foreach (sort keys %SCRIPT_TO_BASE) {
+            $s .= " $_" unless exists $temp{$_};
+        }
+        return $s;
+    } else {
+        return join(" ", @$aref);
+    }
+}
+
+# Format as %02X hex
+sub hex2 {
+    sprintf("%02X", $_[0]);
+}
+
+# Format as %04X hex
+sub hex4 {
+    sprintf("\\u%04X", $_[0]);
+}
+
+# Format an array as %04X hex, delimited by "."s
+sub hexArray {
+    join("", map { hex4($_); } @_);
+}
+
+# Parse a string of the form "\u0D01" to an array of integers.
+# Must ONLY contain escapes.
+# Return the array.
+sub parseUnicodeEscape {
+    local $_ = shift;
+    my $orig = $_;
+    my @result;
+    while (length($_)) {
+        if (/^\\u([0-9a-f]{4})(.*)/i) {
+            push @result, hex($1);
+            $_ = $2;
+        } else {
+            die "Can't parse Unicode escape $orig\n";
+        }
+    }
+    if (0 == @result) {
+        die "Can't parse Unicode escape $orig\n";        
+    }
+    @result;
+}
+
+# Return 1 if the two arrays of ints are equal.
+# Param: ref to array of ints
+# Param: ref to array of ints
+sub intArraysEqual {
+    my $a = shift;
+    my $b = shift;
+    if (scalar @$a == scalar @$b) {
+        for (my $i=0; $i<@$a; ++$i) {
+            if ($a->[$i] != $b->[$i]) {
+                return 0;
+            }
+        }
+        return 1;
+    }
+    return 0;
+}
+
+# Given a rule, possibly with trailing // comment,
+# quote the rule part and add a trailing "+" after
+# it.
+sub quoteRule {
+    my $cmt;
+    $cmt = $1 if (s|(\s*//.*)||); # isolate trailing // comment
+    s/^(.*;)/\"$1\"+/;
+    s/$/$cmt/;
+    $_;
+}
+
+# Given the name of the source script, name of the target script,
+# and array of rule strings, return a string containing the source
+# for a RuleBasedTransliterator file.
+# Param: source script name
+# Param: target script name
+# Param: ref to array of rules.  These rules are unquoted, without
+#  concatenators between them, but do have trailing ';' separators.
+# Param: name of output directory
+sub generateRBT {
+    # $TOOL - name of generating tool
+    # $DATE - date of generation
+    # $SCRIPTFROM - name of source script
+    # $SCRIPTTO - name of target script
+    # $RULES - rules
+    my ($source, $target, $rules, $outdir) = @_;
+    my $text;
+    $outdir =~ s|[/\\]$||; # Delete trailing / or \
+    my $OUT = "$outdir/TransliterationRule_${source}_$target.java";
+    open(RBT_TEMPLATE) or die;
+    open(OUT, ">$OUT") or die;
+    while (<RBT_TEMPLATE>) {
+        while (/\$([A-Za-z0-9]+)/) {
+            my $tag = $1;
+            my $sub;
+            if ($tag eq 'TOOL') {
+                $sub = $RBT_GEN_TOOL;
+            } elsif ($tag eq 'DATE') {
+                $sub = localtime;
+            } elsif ($tag eq 'SCRIPTFROM') {
+                $sub = $source;
+            } elsif ($tag eq 'SCRIPTTO') {
+                $sub = $target;
+            } elsif ($tag eq 'RULES') {
+                # Get any whitespace-only indent off the front of this tag
+                my $indent;
+                $indent = $1 if (/^(\s+)\$$tag/);
+
+                # The rules in the array are not quoted.  We need to quote
+                # them and add '+' operators between them.  We do NOT need
+                # to add ';' separators.  We DO need to separate trailing
+                # // comments and handle them.
+                $sub = join("\n$indent", map(&quoteRule, @$rules)) .
+                    "\n$indent\"\"";
+            } else {
+                print STDERR "ERROR in $RBT_TEMPLATE: Unknown tag $tag\n";
+                $sub = "[ERROR:Unknown tag \$$tag]";
+            }
+            s/\$$tag/$sub/;
+        }
+        print OUT;
+    }
+    close(OUT);
+    close(RBT_TEMPLATE);
+    print STDERR "Written: $OUT\n";
+}
+
+__END__
diff --git a/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
new file mode 100644
index 0000000..fd26dd2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
@@ -0,0 +1,377 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/* Reserved in all 9 scripts */
+
+/*
+   These codepoints are marked RESERVED in all 9 indic scripts.
+   There should not be any transliteration work on these codepoints, 
+   if they are ever encountered.  Ignore these codepoints.
+
+   Common reserved codepoints in ALL 9 scripts : (offset)
+   00, 04, 
+   3A, 3B, 
+   4E, 4F, 
+   7B, 7C, 7D, 7E, 7F
+*/
+
+/* Script-specific */
+/*
+   These codepoints are specific to their respective script.
+   Transliteration of these codepoints from one script to another is meaningless.
+
+   For example,
+      \u0B70 (Oriya) and \u0BF0 (Tamil) are non-reserved codepoints within each script.
+      On transliterating \u0B70 from Oriya to Tamil, we will get \u0BF0.
+      But \u0B70 in Oriya represents ISSHAR, whereas \u0BF0 in Tamil represents NUMBER TEN.
+
+   \u0970 Devanagari abbreviation sign
+
+   \u09F0 Bengali letter RA with middle diagonal (Assamese)
+   \u09F1 Bengali letter RA with lower diagonal 
+          (=Bengali letter VA with lower diagonal, Assamese)
+   \u09F2 Bengali rupee mark
+   \u09F3 Bengali rupee sign
+   \u09F4 Bengali currency numerator one
+   \u09F5 Bengali currency numerator two
+   \u09F6 Bengali currency numerator three
+   \u09F7 Bengali currency numerator four
+   \u09F8 Bengali currency numerator one less than the denominator
+   \u09F9 Bengali currency denominator sixteen
+   \u09FA Bengali isshar
+
+   \u0A70 Gurmukhi tippi (nasalization)
+   \u0A71 Gurmukhi addak (doubles following consonant)
+   \u0A72 Gurmukhi iri (base for vowels)
+   \u0A73 Gurmukhi ura (base for vowels)
+   \u0A74 Gurmukhi ek onkar (God is One)
+
+   \u0B70 Oriya isshar
+
+   \u0BF0 Tamil number ten
+   \u0BF1 Tamil number one hundred
+   \u0BF2 Tamil number one thousand
+*/
+
+
+
+/*****************************************************************************/
+/*  NOTE : <unknown> code will map back to itself                            */
+/*         till we find a good match                                         */
+/*****************************************************************************/
+
+
+
+/*****************************************************************************/
+/* Devanagari                                                                */
+/*****************************************************************************/
+
+"\u0955>\u0955;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI
+"\u0957>\u094C;"  // AU Length Mark -> Devanagari Vowel Sign AU
+
+
+
+/*****************************************************************************/
+/* Bengali                                                                   */
+/*****************************************************************************/
+
+"\u098D>\u098D;"  // <unknown> independent vowel Candra E
+"\u098E>\u098F;"  // Letter Short E -> Letter E
+"\u0991>\u0993;"  // Letter Candra O -> Letter O
+"\u0992>\u0993;"  // Letter Short O -> Letter O
+"\u09A9>\u09A8;"  // Letter NNNA -> Letter NA
+"\u09B1>\u09B0;"  // Letter RRA -> Letter RA
+"\u09B3>\u09B2;"  // Letter LLA -> Letter LA
+"\u09B4>\u09B2;"  // Letter LLLA -> Letter LA
+"\u09B5>\u09AC;"  // Letter VA -> Letter BA
+"\u09BD>\u09BD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u09C5>\u09C7;"  // Vowel Candra E -> Vowel E
+"\u09C6>\u09C7;"  // Vowel Short E -> Vowel E
+"\u09C9>\u09CB;"  // Vowel Candra O -> Vowel O
+"\u09CA>\u09CB;"  // Vowel Short O -> Vowel O
+"\u09D0>\u09D0;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u09D1>\u09D1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u09D2>\u09D2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u09D3>\u09D3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u09D4>\u09D4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u09D5>\u09D5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u09D6>\u09C8;"  // AI Length Mark -> Bengali Vowel Sign AI
+"\u09D8>\u0995;"  // Letter QA -> Letter KA
+"\u09D9>\u0996;"  // Letter KHHA -> Letter KHA
+"\u09DA>\u0997;"  // Letter GHHA -> Letter GA
+"\u09DB>\u099C;"  // Letter ZA -> Letter JA
+"\u09DE>\u09AB;"  // Letter FA -> Letter PHA
+"\u09E4>\u09E4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u09E5>\u09E5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gurmukhi                                                                  */
+/*****************************************************************************/
+
+"\u0A01>\u0A02;"
+"\u0A03>\u0A03;"  // <unknown> Sign Visarga - Devanagari (\u0903) & the rest
+"\u0A0B>\u0A30\u0A3F;"
+"\u0A0C>\u0A07;"
+"\u0A0D>\u0A10;"
+"\u0A0E>\u0A0F;"
+"\u0A11>\u0A14;"
+"\u0A12>\u0A13;"
+"\u0A29>\u0A28;"
+"\u0A31>\u0A30;"
+"\u0A34>\u0A33;"
+"\u0A37>\u0A36;"
+"\u0A3D>\u0A3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0A43>\u0A43;"  // <unknown> Vocalic R - Devanagari (\u0943)
+"\u0A44>\u0A44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0A45>\u0A48;"
+"\u0A46>\u0A47;"
+"\u0A49>\u0A4C;"
+"\u0A4A>\u0A4B;"
+"\u0A50>\u0A50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0A51>\u0A51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0A52>\u0A52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0A53>\u0A53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0A54>\u0A54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0A55>\u0A55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0A56>\u0A48;"  // AI Length Mark -> Gurmukhi Vowel Sign AI
+"\u0A57>\u0A4C;"  // AU Length Mark -> Gurmukhi Vowel Sign AU
+"\u0A58>\u0A15\u0A3C;"
+"\u0A5D>\u0A22\u0A3C;"  // Letter RHA -> Gurmukhi letter ddha (\u0A22) + nukta (\u0A3C)
+"\u0A5F>\u0A2F;"
+"\u0A60>\u0A30\u0A3F;"
+"\u0A61>\u0A08\u0A3C;"
+"\u0A62>\u0A3F\u0A3C;"
+"\u0A63>\u0A40\u0A3C;"
+"\u0A64>\u0A64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0A65>\u0A65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gujarati                                                                  */
+/*****************************************************************************/
+"\u0A8C>\u0AB2\u0AC3;"
+"\u0A8E>\u0A8D;"
+"\u0A92>\u0A91;"
+"\u0AA9>\u0AA8;"
+"\u0AB1>\u0AB0;"
+"\u0AB4>\u0AB3;"
+"\u0AC6>\u0AC5;"
+"\u0ACA>\u0AC9;"
+"\u0AD1>\u0AD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0AD2>\u0AD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0AD3>\u0AD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0AD4>\u0AD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0AD5>\u0AD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0AD6>\u0AC8;"  // AI Length Mark -> Gujarati Vowel Sign AI
+"\u0AD7>\u0ACC;"  // AU Length Mark -> Gujarati Vowel Sign AU
+"\u0AD8>\u0A95\u0ABC;"
+"\u0AD9>\u0A96\u0ABC;"
+"\u0ADA>\u0A97\u0ABC;"
+"\u0ADB>\u0A9C\u0ABC;"
+"\u0ADC>\u0AA1\u0ABC;"
+"\u0ADD>\u0AA2\u0ABC;"
+"\u0ADE>\u0AAB\u0ABC;"
+"\u0ADF>\u0AAF\u0ABC;"
+"\u0AE1>\u0AB2\u0AC3;"
+"\u0AE2>\u0ABF\u0ABC;"
+"\u0AE3>\u0AC0\u0ABC;"
+"\u0AE4>\u0AE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0AE5>\u0AE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Oriya                                                                     */
+/*****************************************************************************/
+"\u0B0D>\u0B0F;"
+"\u0B0E>\u0B0F;"
+"\u0B11>\u0B13;"
+"\u0B12>\u0B13;"
+"\u0B29>\u0B28;"
+"\u0B31>\u0B30;"
+"\u0B34>\u0B33;"
+"\u0B35>\u0B2C;"  // Letter VA -> Oriya Letter BA
+"\u0B44>\u0B43\u0B3C;"
+"\u0B45>\u0B47;"
+"\u0B46>\u0B47;"
+"\u0B49>\u0B4B;"
+"\u0B4A>\u0B4B;"
+"\u0B50>\u0B13\u0B01;"
+"\u0B51>\u0B51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0B52>\u0B52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0B53>\u0B53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0B54>\u0B54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0B55>\u0B55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0B58>\u0B15\u0B3C;"
+"\u0B59>\u0B16\u0B3C;"
+"\u0B5A>\u0B17\u0B3C;"
+"\u0B5B>\u0B1C\u0B3C;"
+"\u0B5E>\u0B2B\u0B3C;"
+"\u0B62>\u0B56\u0B3C;"
+"\u0B63>\u0B57\u0B3C;"
+"\u0B64>\u0B64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0B65>\u0B65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Tamil                                                                     */
+/*****************************************************************************/
+
+"\u0B81>\u0B81;"  // <unknown> Candrabindu - Devanagari (\u0901) ,etc
+"\u0B8B>\u0BB0\u0BBF;"
+"\u0B8C>\u0B87;"
+"\u0B8D>\u0B86;"
+"\u0B91>\u0B86;"
+"\u0B96>\u0B95;"
+"\u0B97>\u0B95;"
+"\u0B98>\u0B95;"
+"\u0B9B>\u0B9A;"
+"\u0B9D>\u0B9A;"
+"\u0BA0>\u0B9F;"
+"\u0BA1>\u0B9F;"
+"\u0BA2>\u0B9F;"
+"\u0BA5>\u0BA4;"
+"\u0BA6>\u0BA4;"
+"\u0BA7>\u0BA4;"
+"\u0BAB>\u0BAA;"
+"\u0BAC>\u0BAA;"
+"\u0BAD>\u0BAA;"
+"\u0BB6>\u0BB7;"
+"\u0BBC>\u0BBC;"  // <unknown> Nukta
+"\u0BBD>\u0BBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0BC3>\u0BCD\u0BB0\u0BBF;"
+"\u0BC4>\u0BCD\u0BB0\u0BBF;"
+"\u0BC5>\u0BBE;"
+"\u0BC9>\u0BBE;"
+"\u0BD0>\u0B93\u0BAE\u0BCD;"
+"\u0BD1>\u0BD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0BD2>\u0BD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0BD3>\u0BD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0BD4>\u0BD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0BD5>\u0BD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0BD6>\u0BC8;"  // AI Length Mark -> Tamil Vowel Sign AI
+"\u0BD8>\u0B95;"
+"\u0BD9>\u0B95;"
+"\u0BDA>\u0B95;"
+"\u0BDB>\u0B9C;"
+"\u0BDC>\u0B9F;"
+"\u0BDD>\u0B9F;"
+"\u0BDE>\u0BAA;"
+"\u0BDF>\u0BAF;"
+"\u0BE0>\u0BB0\u0BBF;"
+"\u0BE1>\u0B88;"
+"\u0BE2>\u0BE2;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0BE3>\u0BE3;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0BE4>\u0BE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0BE5>\u0BE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+"\u0BE6>\u0030;"  // ZERO - Digit ZERO
+
+
+
+/*****************************************************************************/
+/* Telugu                                                                    */
+/*****************************************************************************/
+
+"\u0C0D>\u0C0E;"
+"\u0C11>\u0C12;"
+"\u0C29>\u0C28;"
+"\u0C34>\u0C33;"
+"\u0C3C>\u0C3C;"  // <unknown> Nukta
+"\u0C3D>\u0C3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0C45>\u0C46;"
+"\u0C49>\u0C4A;"
+"\u0C50>\u0C13\u0C02;"
+"\u0C51>\u0C51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0C52>\u0C52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0C53>\u0C53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0C54>\u0C54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0C57>\u0C4C;"
+"\u0C58>\u0C15;"
+"\u0C59>\u0C16;"
+"\u0C5A>\u0C17;"
+"\u0C5B>\u0C1C;"
+"\u0C5C>\u0C21;"
+"\u0C5D>\u0C22;"
+"\u0C5E>\u0C2B;"
+"\u0C5F>\u0C2F;"
+"\u0C62>\u0C3F;"
+"\u0C63>\u0C40;"
+"\u0C64>\u0C64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0C65>\u0C65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Kannada                                                                   */
+/*****************************************************************************/
+
+"\u0C81>\u0C82;"
+"\u0C8D>\u0C8E;"
+"\u0C91>\u0C92;"
+"\u0CA9>\u0CA8;"
+"\u0CB4>\u0CB3;"
+"\u0CBC>\u0CBC;"  // <unknown> Nukta
+"\u0CBD>\u0CBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0CC5>\u0CC6;"
+"\u0CC9>\u0CCA;"
+"\u0CD0>\u0C93\u0C82;"
+"\u0CD1>\u0CD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0CD2>\u0CD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0CD3>\u0CD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0CD4>\u0CD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0CD7>\u0CCC;"
+"\u0CD8>\u0C95;"
+"\u0CD9>\u0C96;"
+"\u0CDA>\u0C97;"
+"\u0CDB>\u0C9C;"
+"\u0CDC>\u0CA1;"
+"\u0CDD>\u0CA2;"
+"\u0CDF>\u0CAF;"
+"\u0CE2>\u0CBF;"
+"\u0CE3>\u0CC0;"
+"\u0CE4>\u0CE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0CE5>\u0CE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Malayalam                                                                 */
+/*****************************************************************************/
+
+"\u0D01>\u0D02;"
+"\u0D0D>\u0D06;"
+"\u0D11>\u0D13;"
+"\u0D29>\u0D28;"
+"\u0D3C>\u0D3C;"  // <unknown> Nukta
+"\u0D3D>\u0D3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0D44>\u0D44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0D45>\u0D3E;"
+"\u0D49>\u0D4B;"
+"\u0D50>\u0D50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0D51>\u0D51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0D52>\u0D52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0D53>\u0D53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0D54>\u0D54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0D55>\u0D55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0D56>\u0D48;"  // AI Length Mark -> Malayalam Vowel Sign AI
+"\u0D58>\u0D15;"
+"\u0D59>\u0D16;"
+"\u0D5A>\u0D17;"
+"\u0D5B>\u0D1C;"
+"\u0D5C>\u0D21;"
+"\u0D5D>\u0D22;"
+"\u0D5E>\u0D2B;"
+"\u0D5F>\u0D2F;"
+"\u0D62>\u0D62;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0D63>\u0D63;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0D64>\u0D64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0D65>\u0D65;"  // <unknown> Double Danda - Devanagari (\u0965)
diff --git a/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
new file mode 100644
index 0000000..0549bbd
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
@@ -0,0 +1,26 @@
+/***********************************************************************
+* Copyright (c) 2000, International Business Machines Corporation
+* and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: $TOOL
+* Creation date: $DATE
+*/
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_$SCRIPTFROM_$SCRIPTTO extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+              $RULES
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/varsub.bat b/src/com/ibm/icu/dev/tool/translit/varsub.bat
new file mode 100755
index 0000000..cd342c9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/varsub.bat
@@ -0,0 +1,81 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# Usage: perl varsub.bat [-n|-nr] <infile> <outfile>
+#
+# Substitutes variables into rules and deletes variable definition
+# statements.  Variables that expand to UnicodeSets are NOT
+# substituted.
+#
+#  -n   Afterwards, run native2ascii -encoding UTF8
+#  -nr  Afterwards, run native2ascii -encoding UTF8 -reverse
+
+$N2A = 0;
+
+$IN = shift;
+if ($IN =~ /^-n/) {
+    $N2A = 1;
+    $N2Aoption = ($IN eq '-nr') ? " -reverse " : "";
+    $IN = shift;
+}
+$OUT = shift;
+
+if (!($IN && $OUT)) {
+    die "Usage: $0 [-n|-nr] <infile> <outfile>";
+}
+
+open(IN) or die "Can't open $IN: $!";
+open(OUT, ">$OUT") or die "Can't open $OUT: $!";
+
+while (<IN>) {
+    if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) {
+        # This looks like a variable definition
+        my ($var, $def) = ($1, $2);
+        # Don't substitute UnicodeSet vars
+        if ($def !~ /^\[/) {
+            if (exists $VAR{$var}) {
+                print STDERR "Error: Duplicate definition of $var\n";
+            } else {
+                $VAR{$var} = $def;
+            }
+            next;
+        }
+    }
+    
+    # Do variable substitutions, and output line
+    foreach my $var (keys %VAR) {
+        my $def = $VAR{$var};
+        s/\$$var\b/$def/g;
+    }
+    print OUT;
+}
+
+close(OUT);
+close(IN);
+
+if ($N2A) {
+    `native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`;
+    unlink $OUT;
+    rename "$OUT.native2ascii", $OUT;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/tzu/CLILoader.java b/src/com/ibm/icu/dev/tool/tzu/CLILoader.java
new file mode 100644
index 0000000..6c040e8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/CLILoader.java
@@ -0,0 +1,210 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * Loads the ICUTZU tool, command-line version.
+ */
+public class CLILoader {
+    /**
+     * The filename of the log file in patch mode.
+     */
+    public static final String LOG_FILENAME_PATCH = "icutzu_patch.log";
+
+    /**
+     * The filename of the log file in discovery only mode.
+     */
+    public static final String LOG_FILENAME_DISCOVERYONLY = "icutzu_discovery.log";
+
+    /**
+     * The backup directory to use in patch mode, or null if there should be no backups.
+     */
+    private File backupDir = null;
+
+    /**
+     * The current directory.
+     */
+    private File curDir = null;
+
+    /**
+     * A logger that manages both output to the screen and to the log file.
+     */
+    private Logger logger;
+
+    /**
+     * The file that stores the path list.
+     */
+    private File pathFile = null;
+
+    /**
+     * A glorified list of IncludePath objects representing the list of directories used in
+     * discovery mode.
+     */
+    private PathModel pathModel;
+
+    /**
+     * The file that stores the result list.
+     */
+    private File resultFile = null;
+
+    /**
+     * A glorified list of ICUFile objects representing the ICU4J jars found in discovery mode and
+     * used in patch mode.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * A glorified map of Strings to URLs populated by parsing the directory structure in the ICU
+     * Time Zone repository online and used in patch mode.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The local timezone resource file.
+     */
+    private File tzFile = null;
+
+    /**
+     * Entry point for the command-line version of the tool.
+     * 
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The location to store backups.
+     * @param pathFile
+     *            The file to load paths from.
+     * @param resultFile
+     *            The file to load/save results to/from.
+     * @param tzFile
+     *            The local timezone resource file.
+     */
+    public CLILoader(File curDir, File backupDir, File pathFile, File resultFile, File tzFile) {
+        // determine whether we are running in discover only mode or patch mode
+        boolean discoverOnly = "true".equalsIgnoreCase(System.getProperty("discoveronly"));
+        boolean silentPatch = "true".equalsIgnoreCase(System.getProperty("silentpatch"));
+        File logFile = new File(curDir.getPath(), (discoverOnly ? "icutzu_discover.log"
+                : "icutzu_patch.log"));
+
+        // create the logger based on the silentpatch option
+        try {
+            this.logger = Logger.getInstance(logFile, silentPatch ? Logger.QUIET : Logger.NORMAL);
+        } catch (FileNotFoundException ex) {
+            System.out.println("Could not open " + logFile.getPath() + " for writing.");
+            System.exit(-1);
+        }
+
+        this.pathFile = pathFile;
+        this.resultFile = resultFile;
+        this.tzFile = tzFile;
+        this.backupDir = backupDir;
+        this.curDir = curDir;
+
+        // if discoveryonly is enabled, call the search method
+        // otherwise, call the update method
+        try {
+            if (discoverOnly)
+                search();
+            else
+                update();
+        } catch (IllegalArgumentException ex) {
+            logger.errorln(ex.getMessage());
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+        } catch (InterruptedException ex) {
+            logger.errorln(ex.getMessage());
+        }
+    }
+
+    /**
+     * Discover Only Mode. Load the path list from the path file and save the path of each updatable
+     * ICU jar files it finds to the result list
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     * @throws InterruptedException
+     */
+    private void search() throws IOException, IllegalArgumentException, InterruptedException {
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Discover Only\'"
+                + " Mode Started ***********");
+        logger.printlnToScreen("");
+        logger.printlnToScreen("\'Discover Only\' Mode:");
+        logger.printlnToScreen("In this mode, " + "the tool will search for ICU4J jars"
+                + " in the directories specified in DirectorySearch.txt"
+                + " and print the ICU4J jars detected and their respective"
+                + " time zone version to the file ICUList.txt");
+        logger.printlnToScreen("");
+
+        // initialize the result model and the path model
+        resultModel = new ResultModel(logger, resultFile);
+        pathModel = new PathModel(logger, pathFile);
+
+        // load paths stored in PathModel.PATHLIST_FILENAME
+        pathModel.loadPaths();
+
+        // perform the search, putting the the results in the result model,
+        // searching all subdirectories of the included path, using the backup
+        // directory specified, and without using a status bar (since this is
+        // command-line)
+        logger.printlnToScreen("");
+        logger.printlnToScreen("Search started.");
+        pathModel.searchAll(resultModel, true, curDir, backupDir);
+        logger.printlnToScreen("Search ended.");
+        logger.printlnToScreen("");
+
+        // save the results in PathModel.RESULTLIST_FILENAME
+        resultModel.saveResults();
+
+        logger.printlnToScreen("");
+        logger.printlnToScreen("Please run with DISCOVERYONLY=false"
+                + " in order to update ICU4J jars listed in ICUList.txt");
+        logger.printlnToScreen("*********** Command-Line \'Discover Only\'"
+                + " Mode Ended ***********");
+        logger.printlnToScreen("");
+    }
+
+    /**
+     * Patch Mode. Load all the results from resultFile, populate the tz version list via the web,
+     * and update all the results with the best available Time Zone data.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     * @throws InterruptedException
+     */
+    private void update() throws IOException, IllegalArgumentException, InterruptedException {
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Patch\'" + " Mode Started ***********");
+        logger.printlnToScreen("");
+        logger.printlnToScreen("\'Patch\' Mode:");
+        logger.printlnToScreen("In this mode, the tool patches each of the"
+                + " ICU4J jars listed in ICUList.txt with the new time zone" + " information.");
+        logger.printlnToScreen("");
+
+        // initialize the result model and the source model
+        resultModel = new ResultModel(logger, resultFile);
+        sourceModel = new SourceModel(logger, tzFile);
+
+        // load the results from the result list file
+        resultModel.loadResults();
+
+        // if the offline is not set to true, populate the list of available
+        // timezone resource versions
+        if (!"true".equalsIgnoreCase(System.getProperty("offline")))
+            sourceModel.findSources();
+
+        // perform the updates using the best tz version available
+        resultModel.updateAll(sourceModel.getURL(sourceModel.getSelectedItem()), backupDir);
+
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Patch\'" + " Mode Ended ***********");
+        logger.printlnToScreen("");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt b/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt
new file mode 100644
index 0000000..7d8f12d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt
@@ -0,0 +1,33 @@
+﻿# *******************************************************************************
+# * Copyright (C) 2007, International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+#
+# This file contains the list of directories in the file system that ICUTZU will
+# use to search for updatable icu4j jar files. It must be saved in UTF-8 (with
+# or without the BOM).
+#
+# To include all roots of the file system (ie. 'c:\', 'd:\', 'e:\', etc. in Windows
+# or '/' in Unix-based systems), insert the following:
+#   all
+#
+# To include a directory in the search or to directly include a specific icu4j file,
+# insert the directory in the native format with a leading '+'. For example in Windows:
+#   +C:\ICU4J
+#   +C:\ICU4J\icu4j.jar
+# Or in Unix-based systems:
+#   +/usr/icu4j
+#   +/usr/icu4j/icu4j.jar
+#
+# To exclude a directory or file from the search, do the same as above but with a
+# leading '-' instead:
+#   -C:\ICU4J
+#   -/usr/icu4j
+
+all
+
+# If you are not using a Unix-based platform, the following lines should be removed:
+
+-/proc
+-/dev
+-/sys
diff --git a/src/com/ibm/icu/dev/tool/tzu/GUILoader.java b/src/com/ibm/icu/dev/tool/tzu/GUILoader.java
new file mode 100644
index 0000000..a11c24a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/GUILoader.java
@@ -0,0 +1,411 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Image;
+import java.awt.Toolkit;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
+
+/**
+ * Loads the ICUTZU tool, GUI version.
+ */
+public class GUILoader {
+    /**
+     * The title for the application.
+     */
+    public static final String TITLE = "ICU4J Time Zone Update Utility (ICUTZU)";
+
+    /**
+     * The backup directory to store files.
+     */
+    private File backupDir;
+
+    /**
+     * The tool's home directory.
+     */
+    private File curDir;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * Whether the paths frame has been closed or not.
+     */
+    private boolean pathClosed = false;
+
+    /**
+     * The frame that displays the path model component (<code>pathGUI</code>).
+     */
+    private JFrame pathFrame;
+
+    /**
+     * The component that allows the user to interact with the path model.
+     */
+    private PathComponent pathGUI;
+
+    /**
+     * The path model that stores all the paths and takes care of searching.
+     */
+    private PathModel pathModel;
+
+    /**
+     * Whether the results frame has been closed or not.
+     */
+    private boolean resultClosed = true;
+
+    /**
+     * The frame that displays the result model component (<code>resultGUI</code>).
+     */
+    private JFrame resultFrame;
+
+    /**
+     * The component that allows the user to interact with the result model.
+     */
+    private ResultComponent resultGUI;
+
+    /**
+     * The result model that stores all the results and takes care of updating.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * The source model that stores all the update sources and accesses the repository for more
+     * sources.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The thread that partakes in the searching and updating.
+     */
+    private Thread workerThread = null;
+
+    /**
+     * Entry point for the GUI version of the tool.
+     * 
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The location to store backups.
+     * @param pathFile
+     *            The file to load paths from.
+     * @param resultFile
+     *            The file to load/save results to/from.
+     * @param tzFile
+     *            The local timezone resource file.
+     * @param iconFile
+     *            The icon file.
+     */
+    public GUILoader(File curDir, File backupDir, File pathFile, File resultFile, File tzFile,
+            File iconFile) {
+        // set the backup dir
+        this.backupDir = backupDir;
+        this.curDir = curDir;
+
+        // get the icon
+        Image icon = Toolkit.getDefaultToolkit().getImage(iconFile.getAbsolutePath());
+
+        // initialize the path list gui
+        pathGUI = new PathComponent(this);
+        pathFrame = new JFrame(TITLE + " - Directories to Search");
+        pathFrame.getContentPane().add(pathGUI);
+        pathFrame.pack();
+        pathFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+        pathFrame.setIconImage(icon);
+        pathFrame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent event) {
+                if (resultClosed)
+                    System.exit(0);
+                pathClosed = true;
+            }
+        });
+
+        // initialize the result list gui
+        resultGUI = new ResultComponent(this);
+        resultFrame = new JFrame(TITLE + " - ICU4J Jar Files to Update");
+        resultFrame.getContentPane().add(resultGUI);
+        resultFrame.pack();
+        resultFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+        resultFrame.setIconImage(icon);
+        resultFrame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent event) {
+                if (pathClosed)
+                    System.exit(0);
+                resultClosed = true;
+                makeThreadDead();
+            }
+        });
+
+        // get the logger instance
+        try {
+            File logFile = new File(curDir.getPath(), "icutzugui.log");
+            logger = Logger.getInstance(logFile, Logger.NORMAL, resultGUI, pathFrame);
+        } catch (FileNotFoundException ex) {
+            String error = "Could not open " + Logger.DEFAULT_FILENAME + " for writing.";
+            System.out.println(error);
+            JOptionPane.showMessageDialog(null, error, TITLE, JOptionPane.ERROR_MESSAGE);
+            System.exit(-1);
+        }
+
+        // initialize the models
+        resultModel = new ResultModel(logger, resultFile);
+        pathModel = new PathModel(logger, pathFile);
+        sourceModel = new SourceModel(logger, tzFile);
+
+        // attach the models to the guis
+        resultGUI.setResultModel(resultModel);
+        pathGUI.setPathModel(pathModel);
+        resultGUI.setSourceModel(sourceModel);
+
+        // load all the paths into the path model
+        try {
+            // do it quietly
+            int verb = logger.getVerbosity();
+            logger.setVerbosity(Logger.QUIET);
+            pathModel.loadPaths();
+            logger.setVerbosity(verb);
+        } catch (IOException ex) {
+            // failed to load the directory search file
+            pathModel.addAllDrives();
+        } catch (IllegalArgumentException ex) {
+            // failed to load the directory search file
+            pathModel.addAllDrives();
+        }
+
+        // if the offline is not set to true, populate the list of available
+        // timezone resource versions
+        if (!"true".equalsIgnoreCase(System.getProperty("offline")))
+            sourceModel.findSources();
+
+        // make sure that search and update cancelation is disabled (since we
+        // are initially neither updating nor searching, so there is nothing to
+        // cancel)
+        setCancelSearchEnabled(false);
+        setCancelUpdateEnabled(false);
+
+        // show the path list gui
+        pathFrame.setVisible(true);
+    }
+
+    /**
+     * Cancels a search.
+     */
+    public void cancelSearch() {
+        makeThreadDead();
+    }
+
+    /**
+     * Cancels an update.
+     */
+    public void cancelUpdate() {
+        makeThreadDead();
+    }
+
+    /**
+     * Searchs the selected paths in the path model.
+     * 
+     * @param indices
+     *            Which paths in the path models to be used in the search.
+     * @param subdirs
+     *            Whether to search subdirectories.
+     */
+    public void search(final int[] indices, final boolean subdirs) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Search started ...");
+                    setCancelSearchEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultFrame.setVisible(true);
+                    resultClosed = false;
+                    pathModel.search(resultModel, indices, subdirs, curDir, backupDir);
+                    logger.printlnToBoth("Search ended.");
+                } catch (InterruptedException ex) {
+                    logger.printlnToBoth("Search interrupted.");
+                }
+                setSearchEnabled(true);
+                setUpdateEnabled(true);
+                setCancelSearchEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Searchs all the paths in the path model.
+     * 
+     * @param subdirs
+     *            Whether to search subdirectories.
+     */
+    public void searchAll(final boolean subdirs) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Search started ...");
+                    setCancelSearchEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultFrame.setVisible(true);
+                    resultClosed = false;
+                    pathModel.searchAll(resultModel, subdirs, curDir, backupDir);
+                    logger.printlnToBoth("Search ended.");
+                } catch (InterruptedException ex) {
+                    logger.printlnToBoth("Search interrupted.");
+                }
+                setSearchEnabled(true);
+                setUpdateEnabled(true);
+                setCancelSearchEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Updates the selected results in the result model.
+     * 
+     * @param indices
+     *            Which ICU4J jars in the result model to be used in the update.
+     * @param updateURL
+     *            The URL to use as the update for each ICU4J jar.
+     */
+    public void update(final int[] indices, final URL updateURL) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Update started ...");
+                    setCancelUpdateEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultModel.update(indices, updateURL, backupDir);
+                    logger.printlnToBoth("Update ended.");
+                } catch (InterruptedException ex) {
+                    // we want to know what was last being updated, so do not
+                    // change the status bar message
+                    // try {
+                    // logger.setStatus("Update interrupted.");
+                    // } catch (InterruptedException e) {
+                    // // once is enough
+                    // }
+                }
+                setUpdateEnabled(true);
+                setSearchEnabled(true);
+                setCancelUpdateEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Updates all the results in the result model.
+     * 
+     * @param updateURL
+     *            The URL to use as the update for each ICU4J jar.
+     */
+    public void updateAll(final URL updateURL) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Update started ...");
+                    setCancelUpdateEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultModel.updateAll(updateURL, backupDir);
+                    logger.printlnToBoth("Update ended.");
+                } catch (InterruptedException ex) {
+                    // we want to know what was last being updated, so do not
+                    // change the status bar message
+                    // try {
+                    // logger.setStatus("Update interrupted.");
+                    // } catch (InterruptedException e) {
+                    // // once is enough
+                    // }
+                }
+                setUpdateEnabled(true);
+                setSearchEnabled(true);
+                setCancelUpdateEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Interrupts the worker thread and waits for it to finish.
+     */
+    private void makeThreadDead() {
+        if (workerThread != null)
+            try {
+                workerThread.interrupt();
+                workerThread.join();
+            } catch (Exception ex) {
+                // do nothing -- if an exception was thrown, the worker thread
+                // must have already been dead, which is perfectly fine
+            }
+    }
+
+    /**
+     * Sets whether the cancel search button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel search button should be enabled.
+     */
+    private void setCancelSearchEnabled(boolean value) {
+        resultGUI.setCancelSearchEnabled(value);
+    }
+
+    /**
+     * Sets whether the cancel update button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel update button should be enabled.
+     */
+    private void setCancelUpdateEnabled(boolean value) {
+        resultGUI.setCancelUpdateEnabled(value);
+    }
+
+    /**
+     * Sets whether the search button should be enabled.
+     * 
+     * @param value
+     *            Whether the search button should be enabled.
+     */
+    private void setSearchEnabled(boolean value) {
+        pathGUI.setSearchEnabled(value);
+    }
+
+    /**
+     * Sets whether the update button should be enabled.
+     * 
+     * @param value
+     *            Whether the update button should be enabled.
+     */
+    private void setUpdateEnabled(boolean value) {
+        resultGUI.setUpdateEnabled(value);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUFile.java b/src/com/ibm/icu/dev/tool/tzu/ICUFile.java
new file mode 100644
index 0000000..52b3015
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUFile.java
@@ -0,0 +1,924 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLConnection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
+/**
+ * A class that represents an updatable ICU4J jar file. A file is an updatable ICU4J jar file if it
+ * <ul>
+ * <li>exists</li>
+ * <li>is a file (ie. not a directory)</li>
+ * <li>does not end with .ear or .war (these file types are unsupported)</li>
+ * <li>ends with .jar</li>
+ * <li>is updatable according the <code>isUpdatable</code></li>
+ * <li>is not signed.</li>
+ * </ul>
+ */
+public class ICUFile {
+    /**
+     * ICU version to use if one cannot be found.
+     */
+    public static final String ICU_VERSION_UNKNOWN = "Unknown";
+
+    /**
+     * A directory entry that is found in every updatable ICU4J jar file.
+     */
+    public static final String TZ_ENTRY_DIR = "com/ibm/icu/impl";
+
+    /**
+     * The timezone resource filename.
+     */
+    public static final String TZ_ENTRY_FILENAME = "zoneinfo.res";
+
+    /**
+     * The metazone resource filename.
+     */
+    private static final String MZ_ENTRY_FILENAME = "metazoneInfo.res";
+
+    /**
+     * Key to use when getting the version of a timezone resource.
+     */
+    public static final String TZ_VERSION_KEY = "TZVersion";
+
+    /**
+     * Timezone version to use if one cannot be found.
+     */
+    public static final String TZ_VERSION_UNKNOWN = "Unknown";
+
+    /**
+     * Jar entry path where some files are duplicated. This is an issue with icu4j 3.8.0.
+     */
+    public static final String DUPLICATE_ENTRY_PATH = "com/ibm/icu/impl/duration/impl/data";
+
+    /**
+     * The buffer size to use for copying data.
+     */
+    private static final int BUFFER_SIZE = 1024;
+
+    /**
+     * A map that caches links from URLs to time zone data to their downloaded File counterparts.
+     */
+    private static final Map cacheMap = new HashMap();
+
+    /**
+     * Determines the version of a timezone resource as a standard file without locking the file.
+     * 
+     * @param tzFile
+     *            The file representing the timezone resource.
+     * @param logger
+     *            The current logger.
+     * @return The version of the timezone resource.
+     */
+    public static String findFileTZVersion(File tzFile, Logger logger) {
+        ICUFile rawTZFile = new ICUFile(logger);
+
+        try {
+            File temp = File.createTempFile("zoneinfo", ".res");
+            temp.deleteOnExit();
+            rawTZFile.copyFile(tzFile, temp);
+            return findTZVersion(temp, logger);
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return null;
+        }
+    }
+
+    /**
+     * Determines the version of a timezone resource as a standard file, but locks the file for the
+     * duration of the program.
+     * 
+     * @param tzFile
+     *            The file representing the timezone resource.
+     * @param logger
+     *            The current logger.
+     * @return The version of the timezone resource.
+     */
+    private static String findTZVersion(File tzFile, Logger logger) {
+        try {
+            String filename = tzFile.getName();
+            String entryname = filename.substring(0, filename.length() - ".res".length());
+
+            URL url = new URL(tzFile.getAbsoluteFile().getParentFile().toURL().toString());
+            ClassLoader loader = new URLClassLoader(new URL[] { url });
+
+            // UResourceBundle bundle = UResourceBundle.getBundleInstance("",
+            // entryname, loader);
+
+            URL bundleURL = new URL(new File("icu4j.jar").toURL().toString());
+            URLClassLoader bundleLoader = new URLClassLoader(new URL[] { bundleURL });
+            Class bundleClass = bundleLoader.loadClass("com.ibm.icu.util.UResourceBundle");
+            Method bundleGetInstance = bundleClass.getMethod("getBundleInstance", new Class[] {
+                    String.class, String.class, ClassLoader.class });
+            Object bundle = bundleGetInstance.invoke(null, new Object[] { "", entryname, loader });
+
+            if (bundle != null) {
+                Method bundleGetString = bundleClass.getMethod("getString",
+                        new Class[] { String.class });
+                String tzVersion = (String) bundleGetString.invoke(bundle,
+                        new Object[] { TZ_VERSION_KEY });
+                if (tzVersion != null)
+                    return tzVersion;
+            }
+        } catch (MalformedURLException ex) {
+            // this should never happen
+            logger.errorln("Internal program error.");
+            logger.logStackTraceToBoth(ex);
+        } catch (ClassNotFoundException ex) {
+            // this would most likely happen when UResourceBundle cannot be
+            // resolved, which is when icu4j.jar is not where it should be
+            logger.errorln("icu4j.jar not found");
+            logger.logStackTraceToBoth(ex);
+        } catch (NoSuchMethodException ex) {
+            // this can only be caused by a very unlikely scenario
+            logger.errorln("icu4j.jar not correct");
+            logger.logStackTraceToBoth(ex);
+        } catch (IllegalAccessException ex) {
+            // this can only be caused by a very unlikely scenario
+            logger.errorln("icu4j.jar not correct");
+            logger.logStackTraceToBoth(ex);
+        } catch (InvocationTargetException ex) {
+            // if this is holding a MissingResourceException, then this is not
+            // an error -- some zoneinfo files are missing version numbers
+            if (!(ex.getTargetException() instanceof MissingResourceException)) {
+                logger.errorln("icu4j.jar not correct");
+                logger.logStackTraceToBoth(ex);
+            }
+        }
+
+        return TZ_VERSION_UNKNOWN;
+    }
+
+    /**
+     * Finds the jar entry in the jar file that represents a timezone resource and returns it, or
+     * null if none is found.
+     * 
+     * @param jar       The jar file to search.
+     * @param entryName The target entry name
+     *              
+     * @return The jar entry representing the timezone resource in the jar file, or null if none is
+     *         found.
+     */
+    private static JarEntry getTZEntry(JarFile jar, String entryName) {
+        JarEntry tzEntry = null;
+        Enumeration e = jar.entries();
+        while (e.hasMoreElements()) {
+            tzEntry = (JarEntry) e.nextElement();
+            if (tzEntry.getName().endsWith(entryName))
+                return tzEntry;
+        }
+        return null;
+    }
+
+    /**
+     * The ICU4J jar file represented by this ICUFile.
+     */
+    private File icuFile;
+
+    /**
+     * The ICU version of the ICU4J jar.
+     */
+    private String icuVersion;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The entry for the timezone resource inside the ICU4J jar.
+     */
+    private JarEntry tzEntry;
+
+    /**
+     * The entry for the metazone resource inside the ICU4J jar.
+     */
+    private JarEntry mzEntry;
+
+    /**
+     * The version of the timezone resource inside the ICU4J jar.
+     */
+    private String tzVersion;
+
+    /**
+     * Constructs an ICUFile around a file. See <code>initialize</code> for details.
+     * 
+     * @param file
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    public ICUFile(File file, Logger logger) throws IOException {
+        initialize(file, logger);
+    }
+
+    /**
+     * Constructs an ICUFile around a file. See <code>initialize</code> for details.
+     * 
+     * @param filename
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    public ICUFile(String filename, Logger logger) throws IOException {
+        if (filename == null || filename.trim().length() == 0)
+            throw new IOException("cannot be blank");
+
+        initialize(new File(filename), logger);
+    }
+
+    /**
+     * Constructs a blank ICUFile. Used internally for timezone resource files that are not
+     * contained within a jar.
+     * 
+     * @param logger
+     *            The current logger.
+     */
+    private ICUFile(Logger logger) {
+        this.logger = logger;
+    }
+
+    /**
+     * Compares two ICUFiles by the file they represent.
+     * 
+     * @param other
+     *            The other ICUFile to compare to.
+     * @return Whether the files represented by the two ICUFiles are equal.
+     */
+    public boolean equals(Object other) {
+        return (!(other instanceof ICUFile)) ? false : icuFile.getAbsoluteFile().equals(
+                ((ICUFile) other).icuFile.getAbsoluteFile());
+    }
+
+    /**
+     * Determines the version of a timezone resource in a jar file without locking the jar file.
+     * 
+     * @return The version of the timezone resource.
+     */
+    public String findEntryTZVersion() {
+        try {
+            File temp = File.createTempFile("zoneinfo", ".res");
+            temp.deleteOnExit();
+            copyEntry(icuFile, tzEntry, temp);
+            return findTZVersion(temp, logger);
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return null;
+        }
+    }
+
+    /**
+     * Returns the File object represented by this ICUFile object.
+     * 
+     * @return The File object represented by this ICUFile object.
+     */
+    public File getFile() {
+        return icuFile;
+    }
+
+    /**
+     * Returns the filename of this ICUFile object, without the path.
+     * 
+     * @return The filename of this ICUFile object, without the path.
+     */
+    public String getFilename() {
+        return icuFile.getName();
+    }
+
+    /**
+     * Returns the ICU version of this ICU4J jar.
+     * 
+     * @return The ICU version of this ICU4J jar.
+     */
+    public String getICUVersion() {
+        return icuVersion;
+    }
+
+    /**
+     * Returns the path of this ICUFile object, without the filename.
+     * 
+     * @return The path of this ICUFile object, without the filename.
+     */
+    public String getPath() {
+        return icuFile.getAbsoluteFile().getParent();
+    }
+
+    // public static String findURLTZVersion(File tzFile) {
+    // try {
+    // File temp = File.createTempFile("zoneinfo", ".res");
+    // temp.deleteOnExit();
+    // copyFile(tzFile, temp);
+    // return findTZVersion(temp);
+    // } catch (IOException ex) {
+    // ex.printStackTrace();
+    // return null;
+    // }
+    // }
+
+    /**
+     * Returns the timezone resource version.
+     * 
+     * @return The timezone resource version.
+     */
+    public String getTZVersion() {
+        return tzVersion;
+    }
+
+    /**
+     * Returns the result of getFile().toString().
+     * 
+     * @return The result of getFile().toString().
+     */
+    public String toString() {
+        return getFile().toString();
+    }
+
+    /**
+     * Updates the timezone resource in this ICUFile using <code>insertURL</code> as the source of
+     * the new timezone resource and the backup directory <code>backupDir</code> to store a copy
+     * of the ICUFile.
+     * 
+     * @param insertURL
+     *            The url location of the timezone resource to use.
+     * @param backupDir
+     *            The directory to store a backup for this ICUFile, or null if no backup.
+     * @throws IOException
+     * @throws InterruptedException
+     */
+    public void update(URL insertURL, File backupDir) throws IOException, InterruptedException {
+        String message = "Updating " + icuFile.getPath() + " ...";
+        logger.printlnToBoth("");
+        logger.printlnToBoth(message);
+
+        if (!icuFile.canRead() || !icuFile.canWrite())
+            throw new IOException("Missing permissions for " + icuFile.getPath());
+
+        JarEntry[] jarEntries = new JarEntry[2];
+        URL[] insertURLs = new URL[2];
+
+        jarEntries[0] = tzEntry;
+        insertURLs[0] = getCachedURL(insertURL);
+
+        if (insertURLs[0] == null)
+            throw new IOException(
+                    "Could not download the Time Zone data, skipping update for this jar.");
+
+        // Check if metazoneInfo.res is available
+        String tzURLStr = insertURL.toString();
+        int lastSlashIdx = tzURLStr.lastIndexOf('/');
+        if (lastSlashIdx >= 0) {
+            String mzURLStr = tzURLStr.substring(0, lastSlashIdx + 1) + MZ_ENTRY_FILENAME;
+            insertURLs[1] = getCachedURL(new URL(mzURLStr));
+            if (insertURLs[1] != null) {
+                jarEntries[1] = mzEntry;
+            }
+        }
+
+        File backupFile = null;
+        if ((backupFile = createBackupFile(icuFile, backupDir)) == null)
+            throw new IOException(
+                    "Could not create an empty backup file (the original jar file remains unchanged).");
+        if (!copyFile(icuFile, backupFile))
+            throw new IOException(
+                    "Could not copy the original jar file to the backup location (the original jar file remains unchanged).");
+        logger.printlnToBoth("Backup location: " + backupFile.getPath());
+        if (!createUpdatedJar(backupFile, icuFile, jarEntries, insertURLs))
+            throw new IOException(
+                    "Could not create an updated jar file at the original location (the original jar file is at the backup location).");
+
+        // get the new timezone resource version
+        tzVersion = findEntryTZVersion();
+
+        message = "Successfully updated " + icuFile.getPath();
+        logger.printlnToBoth(message);
+    }
+
+    /**
+     * Copies the jar entry <code>insertEntry</code> in <code>inputFile</code> to
+     * <code>outputFile</code>.
+     * 
+     * @param inputFile
+     *            The jar file containing <code>insertEntry</code>.
+     * @param inputEntry
+     *            The entry to copy.
+     * @param outputFile
+     *            The output file.
+     * @return Whether the operation was successful.
+     */
+    private boolean copyEntry(File inputFile, JarEntry inputEntry, File outputFile) {
+        logger.loglnToBoth("Copying from " + inputFile + "!/" + inputEntry + " to " + outputFile
+                + ".");
+        JarFile jar = null;
+        InputStream istream = null;
+        OutputStream ostream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+
+        try {
+            jar = new JarFile(inputFile);
+            istream = jar.getInputStream(inputEntry);
+            ostream = new FileOutputStream(outputFile);
+
+            while ((bytesRead = istream.read(buffer)) != -1)
+                ostream.write(buffer, 0, bytesRead);
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed.");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(jar);
+            tryClose(istream);
+            tryClose(ostream);
+        }
+        return success;
+    }
+
+    /**
+     * Copies <code>inputFile</code> to <code>outputFile</code>.
+     * 
+     * @param inputFile
+     *            The input file.
+     * @param outputFile
+     *            The output file.
+     * @return Whether the operation was successful.
+     */
+    private boolean copyFile(File inputFile, File outputFile) {
+        logger.loglnToBoth("Copying from " + inputFile + " to " + outputFile + ".");
+        InputStream istream = null;
+        OutputStream ostream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+
+        try {
+            istream = new FileInputStream(inputFile);
+            ostream = new FileOutputStream(outputFile);
+
+            while ((bytesRead = istream.read(buffer)) != -1)
+                ostream.write(buffer, 0, bytesRead);
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed.");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(istream);
+            tryClose(ostream);
+        }
+        return success;
+    }
+
+    /**
+     * Creates a temporary file for the jar file <code>inputFile</code> under the directory
+     * <code>backupBase</code> and returns it, or returns null if a temporary file could not be
+     * created. Does not put any data in the newly created file yet.
+     * 
+     * @param inputFile
+     *            The file to backup.
+     * @param backupBase
+     *            The directory where backups are to be stored.
+     * @return The temporary file that was created.
+     */
+    private File createBackupFile(File inputFile, File backupBase) {
+        logger.loglnToBoth("Creating backup file for " + inputFile + " at " + backupBase + ".");
+        String filename = inputFile.getName();
+        String suffix = ".jar";
+        String prefix = filename.substring(0, filename.length() - suffix.length());
+
+        if (backupBase == null) {
+            try {
+                // no backup directory means we need to create a temporary file
+                // that will be deleted on exit
+                File backupFile = File.createTempFile(prefix + "~", suffix);
+                backupFile.deleteOnExit();
+                return backupFile;
+            } catch (IOException ex) {
+                return null;
+            }
+        }
+
+        File backupFile = null;
+        File backupDesc = null;
+        File backupDir = new File(backupBase.getPath(), prefix);
+        PrintStream ostream = null;
+
+        try {
+            backupBase.mkdir();
+            backupDir.mkdir();
+            backupFile = File.createTempFile(prefix + "~", suffix, backupDir);
+            backupDesc = new File(backupDir.getPath(), backupFile.getName().substring(0,
+                    backupFile.getName().length() - suffix.length())
+                    + ".txt");
+            backupDesc.createNewFile();
+            ostream = new PrintStream(new FileOutputStream(backupDesc));
+            ostream.println(inputFile.getPath());
+            logger.loglnToBoth("Successfully created backup file at " + backupFile + ".");
+        } catch (IOException ex) {
+            logger.loglnToBoth("Failed to create backup file.");
+            logger.logStackTraceToBoth(ex);
+            if (backupFile != null)
+                backupFile.delete();
+            if (backupDesc != null)
+                backupDesc.delete();
+            backupDir.delete();
+            backupFile = null;
+        } finally {
+            tryClose(ostream);
+        }
+
+        return backupFile;
+    }
+
+    /**
+     * Copies <code>inputFile</code> to <code>outputFile</code>, replacing
+     * <code>insertEntry</code> with <code>inputURL</code>.
+     * 
+     * @param inputFile
+     *            The input jar file.
+     * @param outputFile
+     *            The output jar file.
+     * @param insertEntry
+     *            The entry to be replaced.
+     * @param inputURL
+     *            The URL to use in replacing the entry.
+     * @return Whether the operation was successful.
+     */
+    private boolean createUpdatedJar(File inputFile, File outputFile, JarEntry[] insertEntries,
+            URL[] inputURLs) {
+        logger.loglnToBoth("Copying " + inputFile + " to " + outputFile + ",");
+        for (int i = 0; i < insertEntries.length; i++) {
+            if (insertEntries[i] != null) {
+                logger.loglnToBoth("    replacing " + insertEntries[i] + " with " + inputURLs[i]);
+            }
+        }
+
+        JarFile jar = null;
+        JarOutputStream ostream = null;
+        InputStream istream = null;
+        InputStream jstream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+        Set possibleDuplicates = new HashSet();
+
+        try {
+            jar = new JarFile(inputFile);
+            ostream = new JarOutputStream(new FileOutputStream(outputFile));
+
+            Enumeration e = jar.entries();
+            while (e.hasMoreElements()) {
+                JarEntry currentEntry = (JarEntry) e.nextElement();
+                String entryName = currentEntry.getName();
+                if (entryName.startsWith(DUPLICATE_ENTRY_PATH)) {
+                    if (!possibleDuplicates.contains(entryName)) {
+                        possibleDuplicates.add(entryName);
+                    } else {
+                        // ruh roh, we have a duplicate entry!
+                        // (just ignore it and continue)
+                        logger.printlnToBoth("Warning: Duplicate " + entryName
+                                + " found. Ignoring the duplicate.");
+                        continue;
+                    }
+                }
+
+                boolean isReplaced = false;
+                for (int i = 0; i < insertEntries.length; i++) {
+                    if (insertEntries[i] != null) {
+                        if (entryName.equals(insertEntries[i].getName())) {
+                            // if the current entry *is* the one that needs updating write a new entry based
+                            // on the input stream (from the URL)
+                            // currentEntry.setTime(System.currentTimeMillis());
+                            ostream.putNextEntry(new JarEntry(entryName));
+
+                            URLConnection con = inputURLs[i].openConnection();
+                            con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+                            istream = con.getInputStream();
+
+                            while ((bytesRead = istream.read(buffer)) != -1) {
+                                ostream.write(buffer, 0, bytesRead);
+                            }
+                            istream.close();
+                            isReplaced = true;
+                            break;
+                        }
+                    }
+                }
+                if (!isReplaced) {
+                    // if the current entry isn't the one that needs updating write a copy of the
+                    // old entry from the old file
+                    ostream.putNextEntry(new JarEntry(entryName));
+
+                    jstream = jar.getInputStream(currentEntry);
+                    while ((bytesRead = jstream.read(buffer)) != -1)
+                        ostream.write(buffer, 0, bytesRead);
+                    jstream.close();
+                }
+            }
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed:");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(istream);
+            tryClose(ostream);
+            tryClose(jstream);
+            tryClose(jar);
+        }
+        return success;
+    }
+
+    /**
+     * Performs the shared work of the constructors. Throws an IOException if <code>file</code>...
+     * <ul>
+     * <li>does not exist</li>
+     * <li>is not a file</li>
+     * <li>ends with .ear or .war (these file types are unsupported)</li>
+     * <li>does not end with .jar</li>
+     * <li>is not updatable according the <code>isUpdatable</code></li>
+     * <li>is signed.</li>
+     * </ul>
+     * If an exception is not thrown, the ICUFile is fully initialized.
+     * 
+     * @param file
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    private void initialize(File file, Logger log) throws IOException {
+        this.icuFile = file;
+        this.logger = log;
+        String message = null;
+
+        if (!file.exists()) {
+            message = "Skipped " + file.getPath() + " (does not exist).";
+        } else if (!file.isFile()) {
+            message = "Skipped " + file.getPath() + " (not a file).";
+        } else if (file.getName().endsWith(".ear") || file.getName().endsWith(".war")) {
+            message = "Skipped " + file.getPath()
+                    + " (this tool does not support .ear and .war files).";
+            logger.loglnToBoth(message);
+        } else if (!file.canRead() || !file.canWrite()) {
+            message = "Skipped " + file.getPath() + " (missing permissions).";
+        } else if (!file.getName().endsWith(".jar")) {
+            message = "Skipped " + file.getPath() + " (not a jar file).";
+        } else if (!isUpdatable()) {
+            message = "Skipped " + file.getPath() + " (not an updatable ICU4J jar).";
+        } else if (isSigned()) {
+            message = "Skipped " + file.getPath() + " (cannot update signed jars).";
+            logger.loglnToBoth(message);
+        } else if (isEclipseFragment()) {
+            message = "Skipped " + file.getPath()
+                    + " (eclipse fragments must be updated through ICU).";
+            logger.loglnToBoth(message);
+        }
+
+        if (message != null)
+            throw new IOException(message);
+
+        tzVersion = findEntryTZVersion();
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Data Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseDataFragment() {
+        return (icuFile.getPath().indexOf("plugins" + File.separator + "com.ibm.icu.data.update") >= 0 && icuFile
+                .getName().equalsIgnoreCase("icu-data.jar"));
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseFragment() {
+        return (isEclipseDataFragment() || isEclipseMainFragment());
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Main Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseMainFragment() {
+        return (icuFile.getPath().indexOf("plugins") >= 0 && icuFile.getName().startsWith(
+                "com.ibm.icu_"));
+    }
+
+    /**
+     * Determines whether a timezone resource in a jar file is signed.
+     * 
+     * @return Whether a timezone resource in a jar file is signed.
+     */
+    private boolean isSigned() {
+        return tzEntry.getCertificates() != null;
+    }
+
+    /**
+     * Gathers information on the jar file represented by this ICUFile object and returns whether it
+     * is an updatable ICU4J jar file.
+     * 
+     * @return Whether the jar file represented by this ICUFile object is an updatable ICU4J jar
+     *         file.
+     */
+    private boolean isUpdatable() {
+        JarFile jar = null;
+        boolean success = false;
+
+        try {
+            // open icuFile as a jar file
+            jar = new JarFile(icuFile);
+
+            // get its manifest to determine the ICU version
+            Manifest manifest = jar.getManifest();
+            icuVersion = ICU_VERSION_UNKNOWN;
+            if (manifest != null) {
+                Iterator iter = manifest.getEntries().values().iterator();
+                while (iter.hasNext()) {
+                    Attributes attr = (Attributes) iter.next();
+                    String ver = attr.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
+                    if (ver != null) {
+                        icuVersion = ver;
+                        break;
+                    }
+                }
+            }
+
+            // if the jar's directory structure contains TZ_ENTRY_DIR and there
+            // is a timezone resource in the jar, then the jar is updatable
+            success = (jar.getJarEntry(TZ_ENTRY_DIR) != null)
+                    && ((this.tzEntry = getTZEntry(jar, TZ_ENTRY_FILENAME)) != null);
+
+            // if the jar file contains metazoneInfo.res, initialize mzEntry -
+            // this is true for ICU4J 3.8.1 or later releases
+            if (success) {
+                mzEntry = getTZEntry(jar, MZ_ENTRY_FILENAME);
+            }
+        } catch (IOException ex) {
+            // unable to create the JarFile or unable to get the Manifest
+            // log the unexplained i/o error, but we must drudge on
+            logger.loglnToBoth("Error reading " + icuFile.getPath() + ".");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // close the jar gracefully
+            if (!tryClose(jar))
+                logger.errorln("Could not properly close the jar file " + icuFile + ".");
+        }
+
+        // return whether the jar is updatable or not
+        return success;
+    }
+
+    private URL getCachedURL(URL url) {
+        File outputFile = (File) cacheMap.get(url);
+        if (outputFile != null) {
+            try {
+                return outputFile.toURL();
+            } catch (MalformedURLException ex) {
+                return null;
+            }
+        } else {
+            InputStream istream = null;
+            OutputStream ostream = null;
+            byte[] buffer = new byte[BUFFER_SIZE];
+            int bytesRead;
+            boolean success = false;
+
+            try {
+                String urlStr = url.toString();
+                int lastSlash = urlStr.lastIndexOf('/');
+                String fileName = lastSlash >= 0 ? urlStr.substring(lastSlash + 1) : urlStr;
+                outputFile = File.createTempFile(fileName, null);
+                outputFile.deleteOnExit();
+
+                logger.loglnToBoth("Downloading from " + url + " to " + outputFile.getPath() + ".");
+
+                URLConnection con = url.openConnection();
+                con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+                istream = con.getInputStream();
+                ostream = new FileOutputStream(outputFile);
+
+                while ((bytesRead = istream.read(buffer)) != -1)
+                    ostream.write(buffer, 0, bytesRead);
+
+                success = true;
+                logger.loglnToBoth("Download successful.");
+            } catch (IOException ex) {
+                outputFile.delete();
+                logger.loglnToBoth("Download failed.");
+                logger.logStackTraceToBoth(ex);
+            } finally {
+                // safely close the streams
+                tryClose(istream);
+                tryClose(ostream);
+            }
+            try {
+                return (success && outputFile != null) ? outputFile.toURL() : null;
+            } catch (MalformedURLException ex) {
+                return null;
+            }
+        }
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(InputStream closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(OutputStream closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(JarFile closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java b/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java
new file mode 100644
index 0000000..c06140b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java
@@ -0,0 +1,214 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Finds all updatable ICU4J jars in a set of specified directories.
+ */
+public class ICUJarFinder {
+
+    /**
+     * The delay in milliseconds between showing directories to the command line user.
+     */
+    public static final long DELAY = 5000; // 5 seconds
+
+    /**
+     * The delay in milliseconds between showing directories to the command line user.
+     */
+    public static long lastShowtime = 0; // 5 seconds
+
+    /**
+     * Searchs the directories / files represented in <code>paths</code> for valid ICU4J jars. The
+     * logic for determining if a file is an ICU4J jar is taken care of by the constructor of
+     * ICUFile. The resulting ICUFile's are then added to the result model.
+     * 
+     * @param resultModel
+     *            The result model to add any discovered ICU4J jars to.
+     * @param logger
+     *            The current logger.
+     * @param paths
+     *            The list of paths to include to and exclude from the search.
+     * @param subdirs
+     *            Whether to include subdirectories in the search.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The backup directory, or null if none. The backup directory is excluded from the
+     *            search
+     * @return The same result model as given.
+     * @throws InterruptedException
+     */
+    public static ResultModel search(ResultModel resultModel, Logger logger, IncludePath[] paths,
+            boolean subdirs, File curDir, File backupDir) throws InterruptedException {
+        // sift the included / excluded paths into two seperate arraylists
+        List included = new ArrayList();
+        List excluded = new ArrayList();
+        for (int i = 0; i < paths.length; i++) {
+            IncludePath path = paths[i];
+            File file = path.getPath();
+            try {
+                file = file.getCanonicalFile();
+            } catch (IOException ex) {
+                // recover in the simplest way, but report the error
+                file = file.getAbsoluteFile();
+                logger.errorln(ex.getMessage());
+            }
+            if (path.isIncluded())
+                included.add(file);
+            else
+                excluded.add(file);
+        }
+
+        // if the backup dir is specified, don't search it
+        if (backupDir != null) {
+            File file = backupDir;
+            try {
+                file = file.getCanonicalFile();
+            } catch (IOException ex) {
+                // recover in the simplest way, but report the error
+                file = file.getAbsoluteFile();
+                logger.errorln(ex.getMessage());
+            }
+            excluded.add(file);
+        }
+
+        // exclude the icu4j.jar that comes with this tool
+        File file = new File(curDir.getPath(), "icu4j.jar");
+        try {
+            file = file.getCanonicalFile();
+        } catch (IOException ex) {
+            // recover in the simplest way, but report the error
+            file = file.getAbsoluteFile();
+            logger.errorln(ex.getMessage());
+        }
+        excluded.add(file);
+
+        // search each of the included files/directories
+        for (int i = 0; i < included.size(); i++)
+            search(resultModel, logger, (File) included.get(i), excluded, subdirs, 0);
+
+        // chain the result model
+        return resultModel;
+    }
+
+    /**
+     * Checks a specific file. If the file is an ICU4J jar that can be updated, then the ICUFile
+     * representing that file is added to the result model. If the file is a directory, the
+     * directory is then recursed.
+     * 
+     * @param resultModel
+     *            The result model to add any discovered ICU4J jars to.
+     * @param logger
+     *            The current logger.
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param file
+     *            The current file to check or directory to search.
+     * @param excluded
+     *            The list of all directories excluded in the search.
+     * @param subdirs
+     *            Whether to include subdirectories in the search.
+     * @param depth
+     *            The current depth of the search.
+     * @return The same result model as given.
+     * @throws InterruptedException
+     */
+    private static ResultModel search(ResultModel resultModel, Logger logger, File file,
+            List excluded, boolean subdirs, int depth) throws InterruptedException {
+        // ensure we are not following a symbolic link
+        if (isSymbolic(file))
+            return resultModel;
+
+        // ensure that the file is in canonical form
+        try {
+            file = file.getCanonicalFile();
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return resultModel;
+        }
+
+        // check for interruptions
+        if (Thread.currentThread().isInterrupted())
+            throw new InterruptedException();
+
+        // make sure the current file/directory isn't excluded
+        Iterator iter = excluded.iterator();
+        while (iter.hasNext())
+            if (file.equals(((File) iter.next())))
+                return resultModel;
+
+        if ((subdirs || depth == 0) && file.isDirectory()) {
+            // recurse through each file/directory inside this directory
+            File[] dirlist = file.listFiles();
+            if (dirlist != null && dirlist.length > 0) {
+                // notify the user that something is happening
+                long curTime = System.currentTimeMillis();
+                if (depth <= 1 || curTime - lastShowtime > DELAY) {
+                    lastShowtime = curTime;
+                    logger.printlnToScreen(file.getPath());
+
+                    // give a chance for the UI to display the message
+                    if (Thread.currentThread().isInterrupted())
+                        throw new InterruptedException();
+                    Thread.sleep(0);
+                }
+
+                // recurse
+                for (int i = 0; i < dirlist.length; i++)
+                    search(resultModel, logger, dirlist[i], excluded, subdirs, depth + 1);
+            }
+        } else {
+            // attempt to create an ICUFile object on the current file and add
+            // it to the result model if possible
+            try {
+                // if the file/directory is an ICU jar file that we can
+                // update, add it to the results
+                resultModel.add(new ICUFile(file, logger));
+                logger.printlnToBoth("Added " + file.getPath());
+            } catch (IOException ex) {
+                // if it's not an ICU jar file that we can update, ignore it
+            }
+        }
+
+        // chain the result model
+        return resultModel;
+    }
+
+    /**
+     * Tests whether a file is a symbolic link by comparing the absolute path with the canonical
+     * path.
+     * 
+     * @param file
+     *            The file to check.
+     * @return Whether the file is a symbolic link.
+     */
+    private static boolean isSymbolic(File file) {
+        try {
+            File parent = file.getParentFile();
+            if (parent == null)
+                parent = new File(".");
+            File betterFile = new File(parent.getCanonicalPath(), file.getName());
+            return !betterFile.getAbsoluteFile().equals(betterFile.getCanonicalFile());
+        } catch (IOException ex) {
+            // if getCanonicalFile throws an IOException for this file, we won't
+            // want to dig into this path
+            return false;
+        }
+    }
+
+    /**
+     * An empty constructor that restricts construction.
+     */
+    private ICUJarFinder() {
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java b/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java
new file mode 100644
index 0000000..41a02ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java
@@ -0,0 +1,121 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Entry point for the ICUTZU tool.
+ */
+public class ICUTZUMain {
+    /**
+     * Argument number for the backup directory.
+     */
+    public static final int BACKUP_DIR = 4;
+
+    /**
+     * Argument number for the current directory.
+     */
+    public static final int CUR_DIR = 0;
+
+    /**
+     * Argument number for the icon file.
+     */
+    public static final int ICON_FILE = 5;
+
+    /**
+     * Number of arguments.
+     */
+    public static final int NUM_ARGS = 6;
+
+    /**
+     * Argument number for the path list file.
+     */
+    public static final int PATH_FILE = 1;
+
+    /**
+     * Argument number for the result list file.
+     */
+    public static final int RESULT_FILE = 2;
+
+    /**
+     * Argument number for the timezone resource file.
+     */
+    public static final int TZ_FILE = 3;
+
+    /**
+     * Entry point for the ICUTZU tool.
+     * 
+     * @param args
+     *            The list of arguments. Should be in the following order:
+     *            <ul>
+     *            <li>Current directory</li>
+     *            <li>Path list file</li>
+     *            <li>Result list file</li>
+     *            <li>Timezone resource file</li>
+     *            <li>Backup directory</li>
+     *            </ul>
+     *            All directories and paths should be relative to the given current directory.
+     */
+    public static void main(String[] args) {
+        try {
+            // TODO: fix this to properly set the user agent
+            String agent = "ICUTZU/1.2 (" + System.getProperty("os.name") + " "
+                    + System.getProperty("os.version") + "; " + Locale.getDefault().toString()
+                    + ")";
+            System.setProperty("http.agent", agent);
+
+            if (args.length == 0) {
+                // in the case of running without commandline options
+                File curDir = new File(".");
+                try {
+                    curDir = curDir.getCanonicalFile();
+                } catch (IOException ex) {
+                    curDir = curDir.getAbsoluteFile();
+                }
+
+                new GUILoader(curDir, new File("Temp").getAbsoluteFile(), new File(
+                        "DirectorySearch.txt").getAbsoluteFile(), new File("ICUList.txt")
+                        .getAbsoluteFile(), new File("zoneinfo.res").getAbsoluteFile(), new File(
+                        "icu.gif").getAbsoluteFile());
+                return;
+            } else if (args.length != NUM_ARGS) {
+                System.err.println("Incorrect number of arguments.");
+                System.err
+                        .println("Syntax: ICUTZUMain <cur dir> <path file> <result file> <tz file> <backup dir>");
+                System.exit(-1);
+            } else {
+
+                File curDir = new File(args[CUR_DIR]);
+                try {
+                    curDir = curDir.getCanonicalFile();
+                } catch (IOException ex) {
+                    curDir = curDir.getAbsoluteFile();
+                }
+
+                File backupDir = new File(curDir, args[BACKUP_DIR]).getAbsoluteFile();
+                File pathFile = new File(curDir, args[PATH_FILE]).getAbsoluteFile();
+                File resultFile = new File(curDir, args[RESULT_FILE]).getAbsoluteFile();
+                File tzFile = new File(curDir, args[TZ_FILE]).getAbsoluteFile();
+                File iconFile = new File(curDir, args[ICON_FILE]).getAbsoluteFile();
+
+                if ("true".equalsIgnoreCase(System.getProperty("nogui")))
+                    new CLILoader(curDir, backupDir, pathFile, resultFile, tzFile);
+                else
+                    new GUILoader(curDir, backupDir, pathFile, resultFile, tzFile, iconFile);
+            }
+        } catch (Throwable ex) {
+            // should any unexplained exception occur, we should exit
+            // abnormally. ideally, this should never happen.
+            System.err.println("Internal program error.");
+            ex.printStackTrace();
+            System.exit(-1);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/IncludePath.java b/src/com/ibm/icu/dev/tool/tzu/IncludePath.java
new file mode 100644
index 0000000..ed14a22
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/IncludePath.java
@@ -0,0 +1,78 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+
+/**
+ * Represents a path and whether it should be included or excluded.
+ */
+public class IncludePath {
+    /**
+     * Whether to include or exclude the path represented by this IncludePath.
+     */
+    private boolean include;
+
+    /**
+     * The path represented by this IncludePath.
+     */
+    private File path;
+
+    /**
+     * Constructs an IncludePath around a file or directory and whether it should be included or
+     * excluded.
+     * 
+     * @param path
+     *            The file / directory to be used.
+     * @param include
+     *            Whether the file should be included / excluded.
+     */
+    public IncludePath(File path, boolean include) {
+        this.path = path;
+        this.include = include;
+    }
+
+    /**
+     * Returns true if the other object is an IncludePath and the path that both objects represent
+     * are the same. It is not required for both IncludePaths to be included or excluded.
+     * 
+     * @param other
+     *            The other IncludePath to compare this one to.
+     * @return Whether the two IncludePaths are considered equal by the criteria above.
+     */
+    public boolean equals(Object other) {
+        return !(other instanceof IncludePath) ? false : path.getAbsoluteFile().equals(
+                ((IncludePath) other).path.getAbsoluteFile());
+    }
+
+    /**
+     * Returns the path of this IncludePath.
+     * 
+     * @return The path of this IncludePath.
+     */
+    public File getPath() {
+        return path;
+    }
+
+    /**
+     * Returns whether the path is included or not.
+     * 
+     * @return Whether the path is included or not.
+     */
+    public boolean isIncluded() {
+        return include;
+    }
+
+    /**
+     * Outputs this IncludePath in the form (<b>+</b>|<b>-</b>)<i>pathstring</i>.
+     * 
+     * @return The IncludePath as a string.
+     */
+    public String toString() {
+        return (include ? '+' : '-') + path.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/Logger.java b/src/com/ibm/icu/dev/tool/tzu/Logger.java
new file mode 100644
index 0000000..05614d6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/Logger.java
@@ -0,0 +1,319 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.Date;
+
+import javax.swing.JOptionPane;
+
+/**
+ * A singleton object that handles output to the screen and to a log file. Get the current instance
+ * of the logger with <code>getInstance</code> and use the output functions to output to the
+ * screen, the log file, the status bar, and in dialog messages.
+ */
+public class Logger {
+
+    /**
+     * A default name to use for creating a log file.
+     */
+    public static final String DEFAULT_FILENAME = "icutzu.log";
+
+    /**
+     * The single instance of the logger.
+     */
+    private static Logger logger = null;
+
+    /**
+     * Normal mode.
+     */
+    public static final int NORMAL = 0;
+
+    /**
+     * Quiet mode.
+     */
+    public static final int QUIET = -1;
+
+    /**
+     * Verbose mode.
+     */
+    public static final int VERBOSE = 1;
+
+    /**
+     * Gets the instance of the logger, constructing a new one with <code>filename</code> and
+     * <code>verbosity</code> if one is not already constructed.
+     * 
+     * @param logFile
+     *            The file to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen. Should be one of the following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     * @return The instance of the logger.
+     * @throws FileNotFoundException
+     */
+    public static synchronized Logger getInstance(File logFile, int verbosity)
+            throws FileNotFoundException {
+        if (logger == null) {
+            logger = new Logger(logFile, verbosity, null, null);
+        }
+        return logger;
+    }
+
+    /**
+     * Gets the instance of the logger, constructing a new one with <code>filename</code> and
+     * <code>verbosity</code> if one is not already constructed. If a statusbar is given, status
+     * messages will be sent to it. If a dialogParent is specified, dialog messages will be
+     * displayed.
+     * 
+     * @param logFile
+     *            The file to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen. Should be one of the following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param dialogParent
+     *            The parent for dialog messages, or null if no dialog messages are wanted.
+     * @return The instance of the logger.
+     * @throws FileNotFoundException
+     */
+    public static synchronized Logger getInstance(File logFile, int verbosity,
+            ResultComponent statusComponent, Component dialogParent) throws FileNotFoundException {
+        if (logger == null) {
+            logger = new Logger(logFile, verbosity, statusComponent, dialogParent);
+        }
+        return logger;
+    }
+
+    /**
+     * The parent to use when displaying a dialog.
+     */
+    private Component dialogParent = null;
+
+    /**
+     * The means of output to the log file.
+     */
+    private PrintStream fileStream = null;
+
+    /**
+     * The status bar to display status messages.
+     */
+    private ResultComponent statusComponent = null;
+
+    /**
+     * The verbosity of the logger.
+     */
+    private int verbosity = NORMAL;
+
+    /**
+     * Constructs a logger that outputs to the filename specified and outputs to the screen with the
+     * specified verbosity. Used internally.
+     * 
+     * @param filename
+     *            The filename to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen.
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param dialogParent
+     *            The parent for dialog messages, or null if no dialog messages are wanted.
+     * @throws FileNotFoundException
+     */
+    private Logger(File logFile, int verbosity, ResultComponent statusComponent,
+            Component dialogParent) throws FileNotFoundException {
+        if (this.fileStream != null)
+            this.fileStream.close();
+        this.fileStream = new PrintStream(new FileOutputStream(logFile.toString(), true));
+        this.verbosity = verbosity;
+        this.statusComponent = statusComponent;
+        this.dialogParent = dialogParent;
+
+        this.fileStream.println();
+        this.fileStream.println("##### " + new Date() + " #####");
+        this.fileStream.println();
+    }
+
+    /**
+     * Prints an error message to the screen and to the log.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void error(String message) {
+        if (statusComponent != null)
+            statusComponent.addStatusMessage(message);
+        System.err.print(message);
+        if (fileStream != null)
+            fileStream.print(message);
+    }
+
+    /**
+     * Prints an error message to the screen and to the log, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void errorln(String message) {
+        if (statusComponent != null)
+            statusComponent.addStatusMessage(message);
+        System.err.println(message);
+        if (fileStream != null)
+            fileStream.println(message);
+    }
+
+    /**
+     * Returns the current allowed verbosity.
+     * 
+     * @return The current allowed verbosity for output to the screen. Should be one of the
+     *         following:
+     *         <ul>
+     *         <li>QUIET</li>
+     *         <li>NORMAL</li>
+     *         <li>VERBOSE</li>
+     *         </ul>
+     */
+    public int getVerbosity() {
+        return verbosity;
+    }
+
+    /**
+     * Sets the allowed verbosity.
+     * 
+     * @param verbosity
+     *            The desired allowed verbosity for output to the screen. Should be one of the
+     *            following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     */
+    public void setVerbosity(int verbosity) {
+        this.verbosity = verbosity;
+    }
+
+    /**
+     * Logs a message to the screen if the logger is in a mode higher than normal mode (ie.
+     * VERBOSE), and always logs the message to the file.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToBoth(String message) {
+        loglnToScreen(message);
+        loglnToFile(message);
+    }
+
+    /**
+     * Logs a message to the file used by this logger, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToFile(String message) {
+        if (fileStream != null)
+            fileStream.println(message);
+    }
+
+    /**
+     * Logs a message to the screen if the logger is in a mode higher than normal mode (ie.
+     * VERBOSE), and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToScreen(String message) {
+        if (verbosity > NORMAL) {
+            if (statusComponent != null)
+                statusComponent.addStatusMessage(message);
+            System.out.println(message);
+        }
+    }
+
+    /**
+     * Prints a message to the screen and to the log.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void logStackTraceToBoth(Exception ex) {
+        logStackTraceToScreen(ex);
+        logStackTraceToFile(ex);
+    }
+
+    /**
+     * Logs the stack trace to the file.
+     * 
+     * @param ex
+     *            The exception
+     */
+    public void logStackTraceToFile(Exception ex) {
+        if (fileStream != null)
+            ex.printStackTrace(fileStream);
+    }
+
+    /**
+     * Logs the stack trace to the file.
+     * 
+     * @param ex
+     *            The exception
+     */
+    public void logStackTraceToScreen(Exception ex) {
+        if (verbosity > NORMAL)
+            ex.printStackTrace(System.out);
+    }
+
+    /**
+     * Prints a message to the screen and to the log, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void printlnToBoth(String message) {
+        printlnToScreen(message);
+        loglnToFile(message);
+    }
+
+    /**
+     * Prints a message to the screen, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void printlnToScreen(String message) {
+        if (verbosity >= NORMAL) {
+            if (statusComponent != null)
+                statusComponent.addStatusMessage(message);
+            System.out.println(message);
+        }
+    }
+
+    /**
+     * If dialogParent is not null, brings up an informative dialog about something the user should
+     * be aware of.
+     * 
+     * @param message
+     *            The message to the user.
+     */
+    public void showInformationDialog(String message) {
+        if (dialogParent != null)
+            JOptionPane.showMessageDialog(dialogParent, message, "INFORMATION MESSAGE",
+                    JOptionPane.INFORMATION_MESSAGE);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/PathComponent.java b/src/com/ibm/icu/dev/tool/tzu/PathComponent.java
new file mode 100644
index 0000000..db7b650
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/PathComponent.java
@@ -0,0 +1,349 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JTextField;
+
+/**
+ * The path list GUI component.
+ */
+public class PathComponent extends JComponent {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1340;
+
+    /**
+     * A menu item for <code>pathPopup</code> to add all drives to the path model.
+     */
+    private JMenuItem pathAddAllDrivesItem = new JMenuItem("Add All Drives to List");
+
+    /**
+     * The browse button where the user can browse for a particular path.
+     */
+    private JButton pathBrowseButton = new JButton("Browse...");
+
+    /**
+     * A menu item that copies the selected filenames to the clipboard.
+     */
+    private JMenuItem pathCopyItem = new JMenuItem("Copy selected");
+
+    /**
+     * The browse dialog that pops up when the browse button is clicked.
+     */
+    private JFileChooser pathChooser = new JFileChooser();
+
+    /**
+     * The field where the user can enter a path.
+     */
+    private JTextField pathField = new JTextField(30);
+
+    /**
+     * The label for path input field.
+     */
+    private JLabel pathInputLabel = new JLabel("Include/exclude a directory or a file:");
+
+    /**
+     * The label for the path list.
+     */
+    private JLabel pathListLabel = new JLabel("Directories to search and ICU4J jar files to check:");
+
+    /**
+     * The panel to hold the input components.
+     */
+    private JPanel pathInputPanel = new JPanel();
+
+    /**
+     * The JList that holds the path model.
+     */
+    private JList pathList = new JList();
+
+    /**
+     * The path model that stores all the paths.
+     */
+    private PathModel pathModel;
+
+    /**
+     * The panel to hold the output components.
+     */
+    private JPanel pathOptionPanel = new JPanel();
+
+    /**
+     * The context menu for extra options.
+     */
+    private JPopupMenu pathPopup = new JPopupMenu();
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove all paths from the path model.
+     */
+    private JMenuItem pathRemoveAllItem = new JMenuItem("Remove All");
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove the selected paths from the path model.
+     */
+    private JMenuItem pathRemoveSelectedItem = new JMenuItem("Remove Selected Items");
+
+    /**
+     * A menu item for <code>pathPopup</code> to begin a search on the selected paths in the path
+     * model.
+     */
+    private JMenuItem pathSearchAllItem = new JMenuItem("Search All");
+
+    /**
+     * The search button that starts the search on the selected paths (or all the paths if none are
+     * selected).
+     */
+    private JButton pathSearchAllButton = new JButton("Search All");
+
+    /**
+     * The panel to hold the search components.
+     */
+    private JPanel pathSearchPanel = new JPanel();
+
+    /**
+     * A menu item for <code>pathPopup</code> to begin a search on all paths in the path model.
+     */
+    private JMenuItem pathSearchSelectedItem = new JMenuItem("Search Selected Items");
+
+    /**
+     * The combobox where a user specifies whether to include or to exclude an entered path.
+     */
+    private JComboBox pathSignBox = new JComboBox(new Object[] { "Include", "Exclude" });
+
+    /**
+     * The checkbox where the user can specify whether or not to search subdirectories. Set to true
+     * by default.
+     */
+    private JCheckBox pathSubdirOption = new JCheckBox("Search Subdirectories", true);
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int PATH_LIST_ROWS_PREFERRED = 5;
+
+    /**
+     * Constructs the path list GUI component.
+     * 
+     * @param owner
+     *            The GUILoader object that ownes this component.
+     */
+    public PathComponent(final GUILoader owner) {
+        pathList.setVisibleRowCount(PATH_LIST_ROWS_PREFERRED);
+
+        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+        add(pathInputPanel);
+        add(pathListLabel);
+        add(new JScrollPane(pathList));
+        add(pathOptionPanel);
+        add(pathSearchPanel);
+
+        JPanel pathInputSubPanel = new JPanel();
+        pathInputPanel.setLayout(new BoxLayout(pathInputPanel, BoxLayout.Y_AXIS));
+        pathInputPanel.add(pathInputLabel);
+        pathInputPanel.add(pathInputSubPanel);
+        pathInputSubPanel.add(pathSignBox);
+        pathInputSubPanel.add(pathField);
+        pathInputSubPanel.add(pathBrowseButton);
+
+        pathOptionPanel.add(pathSubdirOption);
+        pathSearchPanel.add(pathSearchAllButton);
+
+        pathChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+
+        pathPopup.add(pathCopyItem);
+        pathPopup.add(new JSeparator());
+        pathPopup.add(pathAddAllDrivesItem);
+        pathPopup.add(pathRemoveSelectedItem);
+        pathPopup.add(pathRemoveAllItem);
+        pathPopup.add(new JSeparator());
+        pathPopup.add(pathSearchSelectedItem);
+        pathPopup.add(pathSearchAllItem);
+
+        pathField.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                addFile(new File(pathField.getText().trim()));
+                pathField.selectAll();
+            }
+        });
+
+        pathList.addMouseListener(new MouseListener() {
+            public void mouseClicked(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseEntered(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseExited(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mousePressed(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseReleased(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            private void checkPopup(MouseEvent event) {
+                if (event.isPopupTrigger())
+                    pathPopup.show((Component) event.getSource(), event.getX(), event.getY());
+            }
+        });
+
+        pathList.addKeyListener(new KeyAdapter() {
+            public void keyPressed(KeyEvent event) {
+                int code = event.getKeyCode();
+                if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_BACK_SPACE)
+                    pathModel.remove(pathList.getSelectedIndices());
+            }
+        });
+
+        pathCopyItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                String selection = "";
+                int[] rows = pathList.getSelectedIndices();
+                for (int i = 0; i < rows.length; i++) {
+                    String includePathString = pathModel.getElementAt(rows[i]).toString();
+                    // get rid of a + or - at the begining of includePathString
+                    // if one exists
+                    if (includePathString.length() > 0
+                            && (includePathString.charAt(0) == '+' || includePathString.charAt(0) == '-'))
+                        includePathString = includePathString.substring(1);
+                    selection += includePathString + "\n";
+                }
+                getToolkit().getSystemClipboard().setContents(new StringSelection(selection), null);
+            }
+        });
+
+        pathRemoveSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.remove(pathList.getSelectedIndices());
+            }
+        });
+
+        pathRemoveAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.removeAll();
+            }
+        });
+
+        pathSearchSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.search(pathList.getSelectedIndices(), pathSubdirOption.isSelected());
+            }
+        });
+
+        pathSearchAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.searchAll(pathSubdirOption.isSelected());
+            }
+        });
+
+        pathSearchAllButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.searchAll(pathSubdirOption.isSelected());
+            }
+        });
+
+        pathAddAllDrivesItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.addAllDrives();
+            }
+        });
+
+        pathBrowseButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                // set the chooser's intial path to be whatever is in the text
+                // field
+                File path = new File(pathField.getText().trim());
+                if (path.exists())
+                    pathChooser.setSelectedFile(path);
+
+                // run the chooser dialog
+                int returnVal = pathChooser.showOpenDialog(PathComponent.this);
+
+                // on an accept, add the path to the model and set the text
+                // field to it
+                if (returnVal == JFileChooser.APPROVE_OPTION) {
+                    path = pathChooser.getSelectedFile();
+                    addFile(path);
+                    pathField.setText(path.getPath());
+                }
+            }
+        });
+    }
+
+    /**
+     * Sets the path model.
+     * 
+     * @param pathModel
+     *            The path model.
+     */
+    public void setPathModel(PathModel pathModel) {
+        this.pathModel = pathModel;
+        pathList.setModel(pathModel);
+    }
+
+    /**
+     * Sets whether the search button should be enabled.
+     * 
+     * @param value
+     *            Whether the search button should be enabled.
+     */
+    public void setSearchEnabled(boolean value) {
+        pathSearchAllButton.setEnabled(value);
+    }
+
+    /**
+     * Attempts to add a path to the path model.
+     * 
+     * @param file
+     *            The path to add.
+     */
+    private void addFile(File file) {
+        if (!pathModel.add(new IncludePath(file, isIncluded())))
+            JOptionPane.showMessageDialog(PathComponent.this, "\"" + file.getPath()
+                    + "\" is not a valid file or path.", "Cannot add path/file",
+                    JOptionPane.ERROR_MESSAGE);
+    }
+
+    /**
+     * Returns whether the user has specified to include or to exclude the entered path.
+     * 
+     * @return Whether the user has specified to include or to exclude the entered path.
+     */
+    private boolean isIncluded() {
+        return ((String) pathSignBox.getSelectedItem()).equals("Include");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/PathModel.java b/src/com/ibm/icu/dev/tool/tzu/PathModel.java
new file mode 100644
index 0000000..785093c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/PathModel.java
@@ -0,0 +1,328 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.AbstractListModel;
+
+/**
+ * Represents a list of IncludePaths that is usable by any class that uses AbstractListModels (such
+ * as a JList in swing). Also contains methods to begin a search on those paths using ICUJarFinder
+ * and placing the results in a ResultModel, and methods to load a path list from a file.
+ */
+class PathModel extends AbstractListModel {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1337;
+
+    /**
+     * The list of paths as IncludePaths.
+     */
+    private List list = new ArrayList();
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The paths file where the paths are stored.
+     */
+    private File pathListFile;
+
+    /**
+     * The filename of the paths file where the paths are stored.
+     */
+    private String pathListFilename;
+
+    /**
+     * Constructs an empty path model.
+     * 
+     * @param pathFile
+     *            The file to load the path list from.
+     * @param logger
+     *            The current logger.
+     */
+    public PathModel(Logger logger, File pathFile) {
+        this.logger = logger;
+        this.pathListFile = pathFile;
+        this.pathListFilename = pathFile.getName();
+    }
+
+    /**
+     * Adds an IncludePath to the path list if it exists and is unique.
+     * 
+     * @param path
+     *            An existing path.
+     * @return Whether or not the given IncludePath exists.
+     */
+    public boolean add(IncludePath path) {
+        remove(path);
+
+        if (path.getPath().exists()) {
+            list.add(path);
+            int index = list.size() - 1;
+            fireIntervalAdded(this, index, index);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Adds a filename to the path list if it is valid and unique. The filename must either be of
+     * the form (<b>+</b>|<b>-</b>)<i>pathstring</i> and exist, or of the form <b>all</b>. In
+     * the case of the latter, all drives are added to the path list.
+     * 
+     * @param includeFilename
+     *            A filename in the form above.
+     * @return Whether or not <code>includeFilename</code> is both of the form detailed above and
+     *         exists.
+     */
+    public boolean add(String includeFilename) {
+        if ("all".equalsIgnoreCase(includeFilename)) {
+            logger
+                    .printlnToScreen("The tool will search all drives for ICU4J jars except any excluded directories specified");
+            addAllDrives();
+            return true;
+        }
+
+        return add(new IncludePath(new File(includeFilename.substring(1).trim()), includeFilename
+                .charAt(0) == '+'));
+    }
+
+    /**
+     * Adds all drives to the path list.
+     */
+    public void addAllDrives() {
+        File[] roots = File.listRoots();
+        for (int i = 0; i < roots.length; i++)
+            add(new IncludePath(roots[i], true));
+    }
+
+    /**
+     * Returns the path at the element at a particular index of the path list.
+     * 
+     * @param index
+     *            The index of the element of the path list to return.
+     * @return The path at the specified index of the path list. Guaranteed to always be an
+     *         IncludePath.
+     */
+    public Object getElementAt(int index) {
+        return list.get(index);
+    }
+
+    /**
+     * Returns the size of the path list.
+     * 
+     * @return The size of the path list.
+     */
+    public int getSize() {
+        return (list == null) ? 0 : list.size();
+    }
+
+    /**
+     * Returns an iterator of the path list.
+     * 
+     * @return An iterator of the path list.
+     */
+    public Iterator iterator() {
+        return list.iterator();
+    }
+
+    /**
+     * Loads a list of paths from the given path list file. Each path must be of the form
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void loadPaths() throws IOException, IllegalArgumentException {
+        logger.printlnToBoth("Scanning " + pathListFilename + " file...");
+        logger.loglnToBoth(pathListFilename + " file contains");
+
+        BufferedReader reader = null;
+        int lineNumber = 0;
+        String line;
+        char sign;
+
+        try {
+            reader = new BufferedReader(new InputStreamReader(new FileInputStream(pathListFile),
+                    "UTF-8"), 4 * 1024);
+            while ((line = reader.readLine()) != null) {
+                if (line.length() >= 1 && line.charAt(0) == '\ufeff')
+                    line = line.substring(1);
+                line = line.trim();
+                lineNumber++;
+
+                if (line.length() >= 1 && (sign = line.charAt(0)) != '#') {
+                    if (sign != '+' && sign != '-' && !"all".equalsIgnoreCase(line)) {
+                        String error = "Each path entry must start with a + or - to denote inclusion/exclusion";
+                        pathListError(error, lineNumber);
+                        continue;
+                    }
+                    if (!add(line)) {
+                        String error = line.substring(1).trim()
+                                + " is not a valid file or directory (perhaps it does not exist?)";
+                        pathListError(error, lineNumber);
+                        continue;
+                    }
+                    logger.printlnToBoth(line);
+                }
+            }
+            logger.printlnToBoth("Scanning " + pathListFilename + " complete.");
+        } catch (FileNotFoundException ex) {
+            pathListError("The " + pathListFilename + " file doesn't exist.");
+        } catch (IOException ex) {
+            pathListError("Could not read the " + pathListFilename + " file.");
+        } finally {
+            try {
+                if (reader != null)
+                    reader.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Removes a path from the path list. Since there are no duplicates in the path list, this
+     * method either removes a single path or removes none.
+     * 
+     * @param path
+     *            The path to remove from the path list.
+     */
+    public void remove(IncludePath path) {
+        int index = list.indexOf(path);
+        if (index != -1) {
+            list.remove(index);
+            fireIntervalRemoved(this, index, index);
+        }
+    }
+
+    /**
+     * Removes a selection of paths from the path list by index.
+     * 
+     * @param indices
+     *            The indices of the path list to remove.
+     */
+    public void remove(int[] indices) {
+        if (list.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int max = indices[indices.length - 1];
+            int min = indices[0];
+            for (int i = indices.length - 1; i >= 0; i--)
+                list.remove(indices[i]);
+            fireIntervalRemoved(this, min, max);
+        }
+    }
+
+    /**
+     * Clears the path list.
+     */
+    public void removeAll() {
+        if (list.size() > 0) {
+            int index = list.size() - 1;
+            list.clear();
+            fireIntervalRemoved(this, 0, index);
+        }
+    }
+
+    /**
+     * Searches a selection of paths in the path list for updatable ICU4J jars. Results are added to
+     * the result model. The indices provided are the indices of the path list to search.
+     * 
+     * @param resultModel
+     *            The result model to store the results of the search.
+     * @param indices
+     *            The indices of the path list to use in the search.
+     * @param subdirs
+     *            Whether to search subdiretories.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            Where to store backup files.
+     * @throws InterruptedException
+     */
+    public void search(ResultModel resultModel, int[] indices, boolean subdirs, File curDir,
+            File backupDir) throws InterruptedException {
+        if (list.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int n = indices.length;
+            IncludePath[] paths = new IncludePath[n];
+
+            int k = 0;
+            Iterator iter = iterator();
+            for (int i = 0; k < n && iter.hasNext(); i++)
+                if (i == indices[k])
+                    paths[k++] = (IncludePath) iter.next();
+                else
+                    iter.next();
+
+            ICUJarFinder.search(resultModel, logger, paths, subdirs, curDir, backupDir);
+        }
+    }
+
+    /**
+     * Searches each path in the path list for updatable ICU4J jars. Results are added to the result
+     * model.
+     * 
+     * @param resultModel
+     *            The result model to store the results of the search.
+     * @param subdirs
+     *            Whether to search subdiretories.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            Where to store backup files.
+     * @throws InterruptedException
+     */
+    public void searchAll(ResultModel resultModel, boolean subdirs, File curDir, File backupDir)
+            throws InterruptedException {
+        if (list.size() > 0) {
+            int n = list.size();
+            IncludePath[] paths = new IncludePath[n];
+            Iterator iter = iterator();
+            for (int i = 0; i < n; i++)
+                paths[i] = (IncludePath) iter.next();
+            ICUJarFinder.search(resultModel, logger, paths, subdirs, curDir, backupDir);
+        }
+    }
+
+    /**
+     * Throws an IOException with the specified message.
+     * 
+     * @param message
+     *            The message to put in the exception.
+     * @throws IOException
+     */
+    private void pathListError(String message) throws IOException {
+        throw new IOException("Error in " + pathListFilename + ": " + message);
+    }
+
+    /**
+     * Logs as an error a specified message and line number.
+     * 
+     * @param message
+     *            The message to put in the exception.
+     * @param lineNumber
+     *            The line number to put in the exception.
+     */
+    private void pathListError(String message, int lineNumber) {
+        logger.printlnToBoth("Error in " + pathListFilename + " (line " + lineNumber + "): "
+                + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java b/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java
new file mode 100644
index 0000000..3da8c83
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java
@@ -0,0 +1,358 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+import java.net.URL;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.ScrollPaneConstants;
+
+/**
+ * The path list GUI component.
+ */
+public class ResultComponent extends JComponent {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1341;
+
+    /**
+     * A cancel search button to cancel a search if one is currently occuring.
+     */
+    private JButton resultCancelSearchButton = new JButton("Stop Search");
+
+    /**
+     * A cancel update button to cancel an update if one is currently occuring.
+     */
+    private JButton resultCancelUpdateButton = new JButton("Stop Update");
+
+    /**
+     * The dialog that comes up when the browse button is clicked.
+     */
+    private JFileChooser resultChooser = new JFileChooser();
+
+    /**
+     * A menu item for copying a filename to the clipboard.
+     */
+    private JMenuItem resultCopyItem = new JMenuItem("Copy Selected");
+
+    /**
+     * The model for all the results from a search.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * The panel where option components are shown.
+     */
+    private JPanel resultOptionPanel = new JPanel();
+
+    /**
+     * The context menu that pops up with more options.
+     */
+    private JPopupMenu resultPopup = new JPopupMenu();
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove all files from the result model.
+     */
+    private JMenuItem resultRemoveAllItem = new JMenuItem("Remove All");
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove the selected files from the result model.
+     */
+    private JMenuItem resultRemoveSelectedItem = new JMenuItem("Remove Selected Items");
+
+    /**
+     * The label for the result source list.
+     */
+    private JLabel resultSourceLabel = new JLabel("New Time Zone Version: ");
+
+    /**
+     * The combobox for choosing which timezone resource on the web to use in an update.
+     */
+    private JComboBox resultSourceList = new JComboBox();
+
+    /**
+     * The label for the path list.
+     */
+    private JLabel resultTableLabel = new JLabel("ICU4J Jar Files found:");
+
+    /**
+     * The table where the result model is shown.
+     */
+    private JTable resultTable = new JTable();
+
+    /**
+     * A menu item for <code>pathPopup</code> to update all files in the result model.
+     */
+    private JMenuItem resultUpdateAllItem = new JMenuItem("Update All");
+
+    /**
+     * An update button to update the selected files, or all files if none are selected.
+     */
+    private JButton resultUpdateSelectedButton = new JButton("Update Selected");
+
+    /**
+     * The panel where update components are shown.
+     */
+    private JPanel resultUpdatePanel = new JPanel();
+
+    /**
+     * A menu item for <code>pathPopup</code> to update the selected files in the result model.
+     */
+    private JMenuItem resultUpdateSelectedItem = new JMenuItem("Update Selected Items");
+
+    /**
+     * The model for all the timezone resources on the web.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The status bar for status messages.
+     */
+    private JTextArea statusLog = new JTextArea(STATUS_BAR_ROWS_PREFERRED,
+            STATUS_BAR_COLUMNS_PREFERRED);
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int RESULT_TABLE_ROWS_PREFERRED = 4;
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int STATUS_BAR_ROWS_PREFERRED = 4;
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int STATUS_BAR_COLUMNS_PREFERRED = 48;
+
+    /**
+     * @param owner
+     *            The GUILoader object that ownes this component.
+     */
+    public ResultComponent(final GUILoader owner) {
+        java.awt.Dimension tableSize = resultTable.getPreferredScrollableViewportSize();
+        tableSize.height = RESULT_TABLE_ROWS_PREFERRED * resultTable.getRowHeight();
+        resultTable.setPreferredScrollableViewportSize(tableSize);
+
+        statusLog.setEditable(false);
+
+        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+        add(resultTableLabel);
+        add(new JScrollPane(resultTable));
+        add(new JScrollPane(statusLog, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
+                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
+        add(resultOptionPanel);
+        add(resultUpdatePanel);
+
+        resultOptionPanel.add(resultSourceLabel);
+        resultOptionPanel.add(resultSourceList);
+        resultUpdatePanel.add(resultCancelSearchButton);
+        resultUpdatePanel.add(resultUpdateSelectedButton);
+        resultUpdatePanel.add(resultCancelUpdateButton);
+
+        resultChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+
+        resultPopup.add(resultCopyItem);
+        resultPopup.add(new JSeparator());
+        resultPopup.add(resultRemoveSelectedItem);
+        resultPopup.add(resultRemoveAllItem);
+        resultPopup.add(new JSeparator());
+        resultPopup.add(resultUpdateSelectedItem);
+        resultPopup.add(resultUpdateAllItem);
+
+        resultTable.addMouseListener(new MouseListener() {
+            public void mouseClicked(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseEntered(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseExited(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mousePressed(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseReleased(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            private void checkPopup(MouseEvent event) {
+                if (event.isPopupTrigger())
+                    resultPopup.show((Component) event.getSource(), event.getX(), event.getY());
+            }
+        });
+
+        resultTable.addKeyListener(new KeyAdapter() {
+            public void keyPressed(KeyEvent event) {
+                int code = event.getKeyCode();
+                if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_BACK_SPACE)
+                    resultModel.remove(resultTable.getSelectedRows());
+            }
+        });
+
+        resultCopyItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                String selection = "";
+                int[] rows = resultTable.getSelectedRows();
+                for (int i = 0; i < rows.length; i++)
+                    selection += new File(resultModel.getValueAt(rows[i],
+                            ResultModel.COLUMN_FILE_PATH).toString(), resultModel.getValueAt(
+                            rows[i], ResultModel.COLUMN_FILE_NAME).toString()).toString()
+                            + "\n";
+                getToolkit().getSystemClipboard().setContents(new StringSelection(selection), null);
+            }
+        });
+
+        resultRemoveSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                resultModel.remove(resultTable.getSelectedRows());
+            }
+        });
+
+        resultRemoveAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                resultModel.removeAll();
+            }
+        });
+
+        resultUpdateSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.update(resultTable.getSelectedRows(), getSelectedSource());
+            }
+        });
+
+        resultUpdateAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.updateAll(getSelectedSource());
+            }
+        });
+
+        resultUpdateSelectedButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                int[] indices = resultTable.getSelectedRows();
+                if (indices.length > 0)
+                    owner.update(indices, getSelectedSource());
+            }
+        });
+
+        resultCancelSearchButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.cancelSearch();
+            }
+        });
+
+        resultCancelUpdateButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.cancelUpdate();
+            }
+        });
+    }
+
+    /**
+     * Adds the status to the statusbar.
+     * 
+     * @param status
+     *            The current status.
+     */
+    public void addStatusMessage(String status) {
+        String text = statusLog.getText();
+        if (text == null || text.trim().length() == 0)
+            statusLog.setText(status);
+        else
+            statusLog.append("\n" + status);
+        statusLog.setCaretPosition(statusLog.getText().length());
+    }
+
+    /**
+     * Sets whether the cancel search button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel search button should be enabled.
+     */
+    public void setCancelSearchEnabled(boolean value) {
+        resultCancelSearchButton.setEnabled(value);
+    }
+
+    /**
+     * Sets whether the cancel update button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel update button should be enabled.
+     */
+    public void setCancelUpdateEnabled(boolean value) {
+        resultCancelUpdateButton.setEnabled(value);
+    }
+
+    /**
+     * Sets the result model.
+     * 
+     * @param resultModel
+     *            The result model.
+     */
+    public void setResultModel(ResultModel resultModel) {
+        this.resultModel = resultModel;
+        resultTable.setModel(resultModel);
+    }
+
+    /**
+     * Sets the source model.
+     * 
+     * @param sourceModel
+     *            The source model.
+     */
+    public void setSourceModel(SourceModel sourceModel) {
+        this.sourceModel = sourceModel;
+        resultSourceList.setModel(sourceModel);
+    }
+
+    /**
+     * Sets whether the update button should be enabled.
+     * 
+     * @param value
+     *            Whether the update button should be enabled.
+     */
+    public void setUpdateEnabled(boolean value) {
+        resultUpdateSelectedButton.setEnabled(value);
+    }
+
+    /**
+     * Returns the URL of the currently selected item in the result source list.
+     * 
+     * @return The URL of the currently selected item in the result source list.
+     */
+    private URL getSelectedSource() {
+        return sourceModel.getURL(resultSourceList.getSelectedItem());
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ResultModel.java b/src/com/ibm/icu/dev/tool/tzu/ResultModel.java
new file mode 100644
index 0000000..fec3d87
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ResultModel.java
@@ -0,0 +1,430 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+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.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Represents a list of ICUFiles that is usable by any class that uses AbstractTableModels (such as
+ * a JTable in swing). Also contains methods to begin updates on those ICUFiles and methods to load
+ * and save a result list from and to a file.
+ */
+class ResultModel extends AbstractTableModel {
+    /**
+     * The column designating filenames.
+     */
+    public static final int COLUMN_FILE_NAME = 0;
+
+    /**
+     * The column designating file paths.
+     */
+    public static final int COLUMN_FILE_PATH = 1;
+
+    /**
+     * The column designating ICU versions.
+     */
+    public static final int COLUMN_ICU_VERSION = 2;
+
+    /**
+     * The column designating timezone verisons.
+     */
+    public static final int COLUMN_TZ_VERSION = 3;
+
+    /**
+     * A list of names of the columns in a result model.
+     */
+    public static final String[] COLUMN_NAMES = new String[] { "Filename", "Path", "ICU Version",
+            "TZ Version" };
+
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1338;
+
+    /**
+     * The list of ICUFiles represented by this result model.
+     */
+    private List icuFileList = new ArrayList();
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The result list file where results are saved and stored.
+     */
+    private File resultListFile;
+
+    /**
+     * The filename of the result list file where results are saved and stored.
+     */
+    private String resultListFilename;
+
+    /**
+     * Constructs an empty result list.
+     * 
+     * @param resultFile
+     *            The file to load and save results from and to.
+     * @param logger
+     *            The current logger.
+     */
+    public ResultModel(Logger logger, File resultFile) {
+        this.logger = logger;
+        this.resultListFile = resultFile;
+        this.resultListFilename = resultFile.getName();
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param file
+     *            The file.
+     * @return Whether the file was added successfully (which is determined by if it is an updatable
+     *         ICU4J jar).
+     */
+    public boolean add(File file) {
+        try {
+            ICUFile icuFile = new ICUFile(file, logger);
+            add(icuFile);
+            return true;
+        } catch (IOException ex) {
+            return false;
+        }
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param icuFile
+     *            The file.
+     */
+    public void add(ICUFile icuFile) {
+        remove(icuFile.getFile());
+        icuFileList.add(icuFile);
+        int index = icuFileList.size() - 1;
+        fireTableRowsInserted(index, index);
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param filename
+     *            The name of the file.
+     * @return Whether the file was added successfully (which is determined by if it is an updatable
+     *         ICU4J jar).
+     */
+    public boolean add(String filename) {
+        return add(new File(filename));
+    }
+
+    /**
+     * Returns the number of columns for each represented ICUFile.
+     * 
+     * @return The number of columns for each represented ICUFile.
+     */
+    public int getColumnCount() {
+        return COLUMN_NAMES.length;
+    }
+
+    /**
+     * Returns the column names as stored in COLUMN_NAMES.
+     * 
+     * @param col
+     *            The index of the column.
+     * @return <code>COLUMN_NAMES[col]</code>
+     */
+    public String getColumnName(int col) {
+        return COLUMN_NAMES[col];
+    }
+
+    /**
+     * Returns the number of ICUFiles represented.
+     * 
+     * @return The number of ICUFiles represented.
+     */
+    public int getRowCount() {
+        return (icuFileList == null) ? 0 : icuFileList.size();
+    }
+
+    /**
+     * Returns the item at the given row and column. The row determines which ICUFile is used, and
+     * the column determines which piece of data should be used.
+     * 
+     * @param row
+     *            Which ICU file to use.
+     * @param col
+     *            Which piece of data to use. Should be one of the following:
+     *            <ul>
+     *            <li>COLUMN_FILE_PATH</li>
+     *            <li>COLUMN_ICU_VERSION</li>
+     *            <li>COLUMN_TZ_VERSION</li>
+     *            </ul>
+     * @return The item at the given row and column. Will always be a String.
+     */
+    public Object getValueAt(int row, int col) {
+        ICUFile icuFile = ((ICUFile) icuFileList.get(row));
+        switch (col) {
+        case COLUMN_FILE_NAME:
+            return icuFile.getFilename();
+        case COLUMN_FILE_PATH:
+            return icuFile.getPath();
+        case COLUMN_ICU_VERSION:
+            return icuFile.getICUVersion();
+        case COLUMN_TZ_VERSION:
+            return icuFile.getTZVersion();
+        default:
+            return null;
+        }
+    }
+
+    /**
+     * Returns an iterator on the list of ICUFiles.
+     * 
+     * @return An iterator on the list of ICUFiles.
+     */
+    public Iterator iterator() {
+        return icuFileList.iterator();
+    }
+
+    /**
+     * Loads a list of ICUFiles from the given result list file. Lines should be of the form <b><i>pathstring</i><tab><i>tzversion</i></b>.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void loadResults() throws IOException, IllegalArgumentException {
+        logger.printlnToScreen("Scanning " + resultListFilename + " file...");
+        logger.printlnToScreen(resultListFilename + " file contains");
+
+        BufferedReader reader = null;
+        int lineNumber = 1;
+        String line;
+        int tab;
+        String filename;
+
+        try {
+            reader = new BufferedReader(new InputStreamReader(new FileInputStream(resultListFile),
+                    "UTF-8"), 4 * 1024);
+            while ((line = reader.readLine()) != null) {
+                if (line.length() >= 1 && line.charAt(0) == '\ufeff')
+                    line = line.substring(1);
+                line = line.trim();
+                logger.printlnToScreen(line);
+
+                if (line.length() >= 1 && (tab = line.lastIndexOf('\t')) >= 0) {
+                    if (!add(filename = line.substring(0, tab)))
+                        resultListError(filename + " is not an updatable ICU4J file", lineNumber);
+                }
+
+                lineNumber++;
+            }
+        } catch (FileNotFoundException ex) {
+            resultListError("The "
+                    + resultListFilename
+                    + " file doesn't exist. Please re-run the tool with -Ddiscoveronly=true option to generate the list of ICU4J jars.");
+        } catch (IOException ex) {
+            resultListError("Could not read the "
+                    + resultListFilename
+                    + " file. Please re-run the tool with -Ddiscoveronly=true option to generate the list of ICU4J jars.");
+        } finally {
+            try {
+                if (reader != null)
+                    reader.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Removes a file from the ICUFile list.
+     * 
+     * @param file
+     *            The file to remove.
+     */
+    public void remove(File file) {
+        if (icuFileList.size() > 0) {
+            Iterator iter = iterator();
+            int i = 0;
+            while (iter.hasNext()) {
+                ICUFile icuFile = (ICUFile) iter.next();
+                if (icuFile.getFile().getAbsoluteFile().equals(file.getAbsoluteFile())) {
+                    icuFileList.remove(icuFile);
+                    fireTableRowsDeleted(i, i);
+                    return;
+                }
+                i++;
+            }
+        }
+    }
+
+    /**
+     * Removes a selection of files from the ICUFile list.
+     * 
+     * @param indices
+     *            The indices of the files to remove.
+     */
+    public void remove(int[] indices) {
+        if (icuFileList.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            for (int i = indices.length - 1; i >= 0; i--) {
+                icuFileList.remove(indices[i]);
+                fireTableRowsDeleted(indices[i], indices[i]);
+            }
+        }
+    }
+
+    /**
+     * Clears the ICUFile list.
+     */
+    public void removeAll() {
+        if (icuFileList.size() > 0) {
+            int lastIndex = icuFileList.size() - 1;
+            icuFileList.clear();
+            fireTableRowsDeleted(0, lastIndex);
+        }
+    }
+
+    /**
+     * Saves a list of ICUFiles to the given result list file. Lines will be of the form <b><i>pathstring</i><tab><i>tzversion</i></b>.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void saveResults() throws IOException, IllegalArgumentException {
+        logger.printlnToScreen("Saving to file " + resultListFilename + " ...");
+        BufferedWriter writer = null;
+        ICUFile icuFile = null;
+
+        try {
+            writer = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(resultListFile), "UTF-8"), 4 * 1024);
+            Iterator iter = iterator();
+            while (iter.hasNext()) {
+                icuFile = (ICUFile) iter.next();
+                String line = icuFile.getFile().getPath() + '\t' + icuFile.getTZVersion();
+                logger.printlnToScreen(line);
+                writer.write(line);
+            }
+        } catch (FileNotFoundException ex) {
+            resultListError("Could not create the " + resultListFilename + " file.");
+        } catch (IOException ex) {
+            resultListError("Could not write to the " + resultListFilename + " file.");
+        } finally {
+            try {
+                if (writer != null)
+                    writer.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Updates a selection of the ICUFiles given a URL as the source of the update and a backup
+     * directory as a place to store a copy of the un-updated file.
+     * 
+     * @param indices
+     *            The indices of the ICUFiles to update.
+     * @param updateURL
+     *            The URL to use a source of the update.
+     * @param backupDir
+     *            The directory in which to store backups.
+     * @throws InterruptedException
+     */
+    public int update(int[] indices, URL updateURL, File backupDir) throws InterruptedException {
+        int numberFailed = 0;
+        if (icuFileList.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int n = indices.length;
+
+            int k = 0;
+            Iterator iter = iterator();
+            for (int i = 0; k < n && iter.hasNext(); i++)
+                if (i == indices[k])
+                    try {
+                        // update the file
+                        ((ICUFile) iter.next()).update(updateURL, backupDir);
+                        fireTableRowsUpdated(i, i);
+                        k++;
+                    } catch (IOException ex) {
+                        // could not update the jar
+                        logger.errorln(ex.getMessage());
+                        numberFailed++;
+                    }
+                else
+                    iter.next();
+        }
+
+        return numberFailed;
+    }
+
+    /**
+     * Updates all of the ICUFiles given a URL as the source of the update and a backup directory as
+     * a place to store a copy of the un-updated file.
+     * 
+     * @param updateURL
+     *            The URL to use a source of the update.
+     * @param backupDir
+     *            The directory in which to store backups.
+     * @throws InterruptedException
+     */
+    public int updateAll(URL updateURL, File backupDir) throws InterruptedException {
+        int numberFailed = 0;
+        if (icuFileList.size() > 0) {
+            int n = icuFileList.size();
+            Iterator iter = iterator();
+            for (int i = 0; i < n; i++)
+                try {
+                    ((ICUFile) iter.next()).update(updateURL, backupDir);
+                    fireTableRowsUpdated(i, i);
+                } catch (IOException ex) {
+                    // could not update the jar
+                    logger.errorln(ex.getMessage());
+                    numberFailed++;
+                }
+        }
+        return numberFailed;
+    }
+
+    /**
+     * Throws an IllegalArgumentException with the given message.
+     * 
+     * @param message
+     *            The message.
+     * @throws IllegalArgumentException
+     */
+    private void resultListError(String message) throws IOException {
+        throw new IOException("Error in " + resultListFilename + ": " + message);
+    }
+
+    /**
+     * Logs as an error a given message and line number.
+     * 
+     * @param message
+     *            The message.
+     * @param lineNumber
+     *            The line number.
+     */
+    private void resultListError(String message, int lineNumber) {
+        logger.errorln("Error in " + resultListFilename + " (line " + lineNumber + "): " + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/SourceModel.java b/src/com/ibm/icu/dev/tool/tzu/SourceModel.java
new file mode 100644
index 0000000..f4a06ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/SourceModel.java
@@ -0,0 +1,304 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Iterator;
+import java.util.TreeMap;
+
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * Represents a map of timezone version names to urls where they can be found that is usable by any
+ * class that uses AbstractListModels (such as a JList or JCombobox in swing). Also contains methods
+ * to begin a search for sources on the ICU Timezone Repository.
+ */
+class SourceModel extends AbstractListModel implements ComboBoxModel {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1339;
+
+    /**
+     * The URL of the ICU Timezone Repository. In order to catch a MalformedURLException, this field
+     * must be initialized by the constructor.
+     */
+    public static URL TZ_BASE_URL = null;
+
+    /**
+     * The end of a URL string to any timezone resource in the ICU Timezone Repository meant for
+     * ICU4J.
+     */
+    public static final String TZ_BASE_URLSTRING_END = "/be/zoneinfo.res";
+
+    /**
+     * The URL string of the ICU Timezone Repository.
+     */
+    public static final String TZ_BASE_URLSTRING_START = "http://icu-project.org/tzdata/";
+
+    /**
+     * The readable name of the local timezone resource file, ie. "Local Copy" or "Local Copy
+     * (2007c)". Since the version is determined by a <code>ICUFile.findFileTZVersion</code>,
+     * this field must be initialized by the constructor.
+     */
+    public static String TZ_LOCAL_CHOICE = null;
+
+    /**
+     * The URL of the local timezone resource file. In order to catch a MalformedURLException, this
+     * field must be initialized by the constructor.
+     */
+    public static URL TZ_LOCAL_URL = null;
+
+    /**
+     * The version of the local timezone resource file, ie. "2007c". Since the version is determined
+     * by a <code>ICUFile.findFileTZVersion</code>, this field must be initialized by the
+     * constructor.
+     */
+    public static String TZ_LOCAL_VERSION = null;
+
+    /**
+     * The local timezone resource file.
+     */
+    public static File tzLocalFile = null;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The currently selected timezone resource name. Initially set to <code>TZ_LOCAL_CHOICE</code>.
+     */
+    private Object selected = TZ_LOCAL_CHOICE;
+
+    /**
+     * The map of timezone resource names to their respective URL locations.
+     */
+    private TreeMap urlMap = new TreeMap();
+
+    /**
+     * Constructs a source model.
+     * 
+     * @param logger
+     *            The current logger.
+     * @param tzLocalFile
+     *            The local timezone resource file.
+     */
+    public SourceModel(Logger logger, File tzLocalFile) {
+        this.logger = logger;
+
+        // if all constants are not yet initialized
+        // (this is where they get initialized)
+        if (TZ_BASE_URL == null) {
+            try {
+                TZ_BASE_URL = new URL(TZ_BASE_URLSTRING_START);
+
+                SourceModel.tzLocalFile = tzLocalFile;
+                if (!tzLocalFile.exists()) {
+                    // not a critical error, but we won't be able to use the
+                    // local tz file
+                    logger.errorln("Local copy (zoneinfo.res) does not exist (perhaps you are not running icutzu from the correct directory?)");
+                } else {
+                    TZ_LOCAL_URL = tzLocalFile.toURL();
+                    TZ_LOCAL_VERSION = ICUFile.findFileTZVersion(tzLocalFile, logger);
+                    if (TZ_LOCAL_VERSION == null) {
+                        logger.errorln("Failed to determine version of local copy");
+                        TZ_LOCAL_CHOICE = "Local Copy";
+                    } else {
+                        TZ_LOCAL_CHOICE = "Local Copy (" + TZ_LOCAL_VERSION + ")";
+                    }
+                    selected = TZ_LOCAL_CHOICE;
+                }
+            } catch (MalformedURLException ex) {
+                // this shouldn't happen
+                logger.errorln("Internal program error.");
+                ex.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Gathers all the names and urls of timezone resources available on the ICU Timezone
+     * Repository. Also sets the selected item in this list to be the best timezone version
+     * available.
+     */
+    public void findSources() {
+        BufferedReader reader = null;
+        try {
+            URLConnection con = TZ_BASE_URL.openConnection();
+            con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
+
+            // create an html callback function to parse through every list item
+            // (every list item
+            HTMLEditorKit.ParserCallback htmlCallback = new HTMLEditorKit.ParserCallback() {
+                private boolean listItem = false;
+
+                public void handleEndTag(HTML.Tag tag, int pos) {
+                    if (tag == HTML.Tag.LI)
+                        listItem = false;
+                }
+
+                public void handleStartTag(HTML.Tag tag, MutableAttributeSet attr, int pos) {
+                    if (tag == HTML.Tag.LI)
+                        listItem = true;
+                }
+
+                public void handleText(char[] data, int pos) {
+                    if (listItem) {
+                        String str = new String(data);
+                        if (str.charAt(str.length() - 1) == '/')
+                            str = str.substring(0, str.length() - 1);
+                        if (!"..".equals(str))
+                            try {
+                                // add the new item to the map
+                                urlMap.put(str, new URL(TZ_BASE_URLSTRING_START + str
+                                        + TZ_BASE_URLSTRING_END));
+
+                                // update the selected item and fire off an
+                                // event
+                                selected = urlMap.lastKey();
+                                int index = 0;
+                                for (Iterator iter = urlMap.keySet().iterator(); iter.hasNext();) {
+                                    if (iter.next().equals(str))
+                                        index++;
+                                }
+                                fireIntervalAdded(this, index, index);
+                            } catch (MalformedURLException ex) {
+                                logger.errorln("Internal program error.");
+                                ex.printStackTrace();
+                            }
+                    }
+                }
+            };
+
+            new ParserDelegator().parse(reader, htmlCallback, false);
+        } catch (IOException ex) {
+            // cannot connect to the repository -- use local version only.
+            String message = "Failed to connect to the ICU Timezone Repository at "
+                    + TZ_BASE_URL.toString()
+                    + " .\n\n"
+                    + "Check your connection and re-run ICUTZU or continue using the local copy of the timezone update (version "
+                    + TZ_LOCAL_VERSION + ").";
+            logger.showInformationDialog(message);
+        } finally {
+            // close the reader gracefully
+            if (reader != null)
+                try {
+                    reader.close();
+                } catch (IOException ex) {
+                }
+        }
+    }
+
+    /**
+     * Returns the name of the timezone resource at the given index.
+     * 
+     * @param index
+     *            The given index.
+     * @return The name of the timezone resource at the given index.
+     */
+    public Object getElementAt(int index) {
+        if (index == 0)
+            return TZ_LOCAL_CHOICE;
+        else if (index < 0 || index > urlMap.size())
+            return null;
+        else {
+            Iterator iter = urlMap.keySet().iterator();
+            for (int i = 1; i < index; i++)
+                iter.next();
+            return iter.next();
+        }
+    }
+
+    /**
+     * Returns the selected timezone resource name. If <code>setSelectedItem</code> is never
+     * called externally, then this is also the best available timezone resource (the most recent
+     * version).
+     * 
+     * @return The selected timezone resource name.
+     */
+    public Object getSelectedItem() {
+        return selected;
+    }
+
+    /**
+     * Gets the number of timezone resources currently stored by the source model. There will always
+     * be at least one.
+     * 
+     * @return The number of timezone resources.
+     */
+    public int getSize() {
+        // the added size (+1) is due to the local copy not being inside the map
+        return urlMap.size() + 1;
+    }
+
+    /**
+     * Returns the URL mapped to by the given timezone resource name.
+     * 
+     * @param choice
+     *            The version name, which should be a String.
+     * @return The URL mapped to by the given timezone resource name.
+     */
+    public URL getURL(Object choice) {
+        if (choice == null || !(choice instanceof String))
+            return null;
+        else if (TZ_LOCAL_CHOICE.equalsIgnoreCase((String) choice))
+            return TZ_LOCAL_URL;
+        else
+            return (URL) urlMap.get(choice);
+    }
+
+    /**
+     * Returns the version of a timezone resource with the given name. Usually this is exactly the
+     * same as the name, but if the name is <code>TZ_LOCAL_CHOICE</code> (ignoring case), then the
+     * version is <code>TZ_LOCAL_VERSION</code>.
+     * 
+     * @param choice
+     *            The version name, which should be a String.
+     * @return The URL mapped to by the given version name.
+     */
+    public String getVersion(Object choice) {
+        if (choice == null || !(choice instanceof String))
+            return null;
+        else if (TZ_LOCAL_CHOICE.equalsIgnoreCase((String) choice))
+            return TZ_LOCAL_VERSION;
+        else
+            return (String) choice;
+    }
+
+    /**
+     * Returns an iterator on the entry set of the url map. Each item iterated will be of type
+     * Map.Entry, whos key is a String and value is a URL.
+     * 
+     * @return An iterator as described above.
+     */
+    public Iterator iterator() {
+        return urlMap.entrySet().iterator();
+    }
+
+    /**
+     * Sets the selected timezone resource name.
+     * 
+     * @param selected
+     *            The timezone resource name to be selected.
+     */
+    public void setSelectedItem(Object selected) {
+        this.selected = selected;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/icu.css b/src/com/ibm/icu/dev/tool/tzu/icu.css
new file mode 100644
index 0000000..bee7cf3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/icu.css
@@ -0,0 +1,214 @@
+/* @override http://icu-project.org/icu.css */
+
+/*
+ * Default CSS style sheet for the ICU Open Source site
+ * Copyright (C) 2005-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+/* Global styles */
+body,p,li,ol,ul,th,td {
+  font-size: 10pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+body {
+  margin: 10;
+}
+.mainbody {
+  padding: 1em;
+}
+
+/*
+ * Customize the headers to have less space around them than usual
+ */
+h1 {
+  margin-bottom: 5pt;
+  margin-top: 5pt;
+  font-weight: 700;
+  font-size: 20pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h2 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  font-weight: 700;
+  font-size: 14pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h3 {
+  background-color: #666666;
+  color: White;
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  padding-left: 0.75em;
+  font-size: 1em;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h4 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  font-size: 1em;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h5, h6 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  padding-left: 0.75em;
+  font-size: x-small;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+/*
+ * Navigation sidebar on the left hand of most pages
+ */
+td.sidebar1 { 
+  background-color: #99CCFF;
+  font-weight: 700;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  padding-top: 1em;
+  padding-left: 0.2em;
+  white-space: nowrap;
+}
+
+td.sidebar2 { 
+  background-color: #99CCFF;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  margin-left: 0px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  padding-left: 1px;
+  padding-right: 0.5em;
+  white-space: nowrap;
+  text-decoration: none;
+  display: block;
+}
+td.sidebar2:hover { 
+  background-color: #EEEEFF;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  padding-left: 1px;
+  padding-right: 0.5em;
+}
+
+a.sidebar2 {
+  text-decoration: none;
+  display: block;
+  width: 100%;
+}
+a.sidebar2:link {
+  color: #000099;
+  display: block;
+}
+a.sidebar2:hover {
+  background-color: #EEEEFF;
+  display: block;
+}
+.underlinehover:hover {
+  background-color: #EEEEFF;
+  text-decoration: underline;
+}
+
+/* This is the faded header at the top */
+td.fadedtop {
+  background-color: #006699;
+  background-image: url(http://www.icu-project.org/images/gr100.gif);
+}
+
+/* Related site on the left */
+p.relatedsite {
+  color: White;
+  font-weight: 700;
+  font-size: 10pt;
+  margin-top: 1em;
+  margin-bottom: 0;
+  padding-left: 0.2em;
+  white-space: nowrap;
+}
+
+/* Related site on the left */
+p.sidebar3 {
+  margin-top: 0.75em;
+  margin-bottom: 0;
+  padding-left: 0.8em;
+}
+a.sidebar3 {
+  font-size: 0.9em;
+  text-decoration: none;
+}
+a.sidebar3:link {
+  text-decoration: none;
+  color: White;
+}
+a.sidebar3:hover {
+  text-decoration: underline;
+}
+
+/* FAQ */
+li.faq_contents {
+  font-weight: 500;
+}
+p.faq_q {
+  font-weight: 700; 
+  margin-bottom: 0px;
+}
+p.faq_a {
+  margin-top: 0px;
+}
+
+/* News items */
+table.newsItem {
+  padding-left: 1em;
+  padding-right: 1em;
+  border-width: medium;
+}
+th.newsItem {
+  background-color: #666666;
+  color: White;
+}
+td.newsItem {
+  background-color: #CCCCCC;
+}
+
+td.release-line,th.release-line {
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+  white-space: nowrap;
+  border:1px;
+}
+.note {
+  font-style: italic;
+  font-size: small;
+  margin-left: 1em;
+}
+samp {
+  margin-left: 1em;
+  margin-right: 2em;
+  border-style: groove;
+  padding: 1em;
+  display: block;
+  background-color: #EEEEEE
+}
+table.rtable caption {
+  margin-left: 2px;
+  margin-right: 2px;
+  padding: 3px;
+  font-weight: bold;
+  background-color: #dee2ff;
+  text-align: left;
+}
+table.rtable tr th {
+  background-color: #dee2ff;
+  text-align: left;
+}
+table.rtable tr td {
+  background-color: #c0c0fd;
+  padding: 3px;
+}
+
diff --git a/src/com/ibm/icu/dev/tool/tzu/icu.gif b/src/com/ibm/icu/dev/tool/tzu/icu.gif
new file mode 100644
index 0000000..3e74690
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/icu.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7c1a60446893053907f57b52da6ca5792ebc455f487671879ce26acd0d3d30c
+size 888
diff --git a/src/com/ibm/icu/dev/tool/tzu/readme.html b/src/com/ibm/icu/dev/tool/tzu/readme.html
new file mode 100644
index 0000000..fa310ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/readme.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+*******************************************************************************
+* Copyright (C) 2000-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta name="COPYRIGHT" content="Copyright (c) 2007 IBM Corporation and others. All Rights Reserved.">
+    <meta name="keywords" content="ICUTZU, ICU4J Time Zone Update Utility" />
+
+    <title>ICU4J Time Zone Update Utility (ICUTZU)</title>
+    <link rel="stylesheet" href="icu.css" type="text/css">
+  </head>
+
+
+  <body>
+
+    <h2>ICU4J Time Zone Update Utility (ICUTZU)</h2>
+
+
+    <h3>Contents</h3>
+
+    <ul>
+      <li><a href="#intro">Introduction</a></li>
+      <li><a href="#sysreq">System Requirements</a></li>
+      <li><a href="#install">Installation</a></li>
+      <li><a href="#run">Running ICUTZU</a>
+        <ul>
+          <li><a href="#gui">Running in GUI Mode</a></li>
+          <li><a href="#cmd">Running in Command-line Mode</a></li>
+        </ul>
+      </li>
+      <li><a href="#restore">Restoring Changes</a></li>
+    </ul>
+
+
+    <a name="intro"><h3>Introduction</h3></a>
+    <!-- any changes to the introduction should also be done in /repos/icuproj/trunk/htdocs/download/icutzu.html -->
+
+    <p>ICU4J Time Zone Update Utility (ICUTZU) is a utility that supplies ICU4J jar files with the latest time zone information and daylight savings time changeover dates.</p>
+    <p>The time zone data is stored in zoneinfo.res files which are generated by the ICU team using the Olson Time Zone Database (<a href="http://www.twinsun.com/tz/tz-link.htm">http://www.twinsun.com/tz/tz-link.htm</a>). Every version of the time zone data corresponds directly to a version of the Olson database. For example "2006a" refers to the first refresh of the Olson database in 2006.</p>
+    <p>ICUTZU works by searching the file system for ICU4J jar files containing old time zone data, checking online for the newest time zone data and updating the ICU4J jar files accordingly. The user can choose to update from a copy of the time zone data that comes bundled with ICUTZU or from an online copy on the ICU servers.</p>
+
+    <a name="sysreq"><h3>System Requirements</h3></a>
+
+    <p>ICUTZU will run on any system that ICU4J runs on: Solaris 5.9, 5.10, AIX 5.2, 5.3, RHEL 4, 5, Windows XP, Vista, HP-UX 9000.</p>
+    <p>ICUTZU also requires Java 1.3 or higher to be installed.</p>
+
+    <a name="install"><h3>Installation</h3></a>
+    <!-- any changes to the installation should also be done in /repos/icuproj/trunk/htdocs/download/icutzu.html -->
+
+    <p>Unpack the archive into a directory of your choosing. For Unix-based systems, you will need to set permissions on runicutzu.sh:</p>
+    <p><code>chmod 755 runicutzu.sh</code></p>
+
+    <a name="run"><h3>Running ICUTZU</h3></a>
+
+    <a name="gui"><h4>Running in GUI Mode</h4></a>
+    <ol>
+      <li><p>To start ICUTZU, double-click <b>icutzu.jar</b> or open a console and type <code>java -jar icutzu.jar</code> .</p></li>
+      <li>
+        <p>Specify which paths to search and which paths to exclude from the search. By default, all drives are included in the search.</p>
+        <ul>
+          <li><p>To include a path in the search, select <b>Include</b> from the drop-down menu, and either type the path in the text field and press enter, or simply browse for the path.</p></li>
+          <li><p>To exclude a path from the search, do the same as above, but select <b>Exclude</b> from the drop-down menu.</p></li>
+          <li><p>To specify whether to search subdirectories, check or uncheck the "Search Subdirectories" option.</p></li>
+          <li><p>For additional options, right-click the directory list for a context-menu.</p></li>
+        </ul>
+      </li>
+      <li><p>Click <b>Search</b> to begin searching for updatable ICU4J jar files in the directories specified. A new window will pop up during the search with a list of updatable ICU4J jar files found.</p></li>
+      <li>
+        <p>Select which ICU4J jar files you wish to update.</p>
+        <ul><li><p><b>ICU Version</b> refers to the version of the ICU4J jar file itself, and <b>TZ Version</b> refers to version of the time zone data within the jar file.</p></li></ul>
+      </li>
+      <li><p>Choose the version of time zone data to update with from the drop down list.</p></li>
+      <li><p>Click <b>Update</b> to begin updating the selected ICU4J jar files.</p></li>
+    </ol>
+
+    <a name="cmd"><h4>Running in Command-line Mode</h4></a>
+
+    <ol>
+      <li>
+        <p>Edit the <b>DirectorySearch.txt</b> file and specify which paths ICUTZU will include and exclude in its search. ICUTZU searches directories recursively.</p>
+        <ul>
+          <li><p><i>all</i> means include all file system roots in the search (for Windows this will include all drives, for Unix-based systems this will include the root directory).</p></li>
+          <li><p><i>+path</i> means to include <i>path</i> in the search.</p></li>
+          <li><p><i>-path</i> means to exclude <i>path</i> in the search.</p></li>
+        </ul>
+      </li>
+      <li>
+        <p>Edit the <b>runicutzuenv.X</b> file, where X depends on your system (<b>.sh</b> for Unix-based systems, <b>.bat</b> for Windows, <b>.cmd</b> for Windows NT):</p>
+        <ul><table>
+          <tr><td valign=top><li><p><b>JAVA_HOME</b>:</td><td>Set this to the path where java is installed on your machine (ie. C:\Program Files\Java\jdk1.5.0 for Windows or /usr/jdk1.5.0 for Unix).</p></li></td></tr>
+          <tr><td valign=top><li><p><b>NOGUI</b>:</td><td>Set this to <b>true</b> to run in command-line mode. If set to <b>false</b>, ICUTZU will run in <a href="#gui">GUI mode</a> and the DISCOVERONLY option will be ignored.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>DISCOVERONLY</b>:</td><td>Set this to <b>true</b> the first time ICUTZU is run. When true, ICUTZU will build a list of updatable ICU4J jar files and save it to ICUList.txt. When false, ICUTZU will procede to update the files listed in ICUList.txt.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>SILENTPATCH</b>:</td><td>Set this to <b>false</b> for normal running, or true to give no output except in the case of an error. This option does not effect the content of the log file.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>OFFLINE</b>:</td><td>Set this to <b>false</b> for normal running, or true to keep ICUTZU from checking online for the latest time zone data and to use the local copy bundled with ICUTZU instead.</p></li></td></tr>
+        </table></ul>
+      </li>
+      <li><p>Run <b>runicutzu.X</b> where X depends on your system (as above). This will build a list of updatable ICU4J files and save it to ICUList.txt.</p></li>
+      <li><p>Edit the <b>runicutzuenv.X</b> file again, and set DISCOVERONLY to <b>false</b>..</p></li>
+      <li><p>Run <b>runicutzu.X</b> again. This will update the files listed in ICUList.txt.</p></li>
+    </ol>
+
+    <a name="restore"><h3>Restoring Changes</h3></a>
+
+    <p>
+      When updating an icu4j jar file, the original file is copied to a backup location which is reported during runtime in the console output (which can also be found in the log file).
+      <ul>
+        <li><p>The backup location is of the form <i>[icutzu home]<b>/Temp/</b>[prefix]<b>/</b>[prefix]~[unique id]<b>.jar</b></i>, where <i>[prefix]</i> is the filename of the original icu4j jar file without the .jar at the end.</p></li>
+        <li><p>The txt file in the same directory that shares the same <i>[unique id]</i> specifies the original location.</p></li>
+        <li>
+          <p>Example: If ICUTZU is running from <b>c:\icutzu</b> and updates <b>c:\icu4j_3-6.jar</b>, the backup will be stored in <b>c:\icutzu\icu4j\icu4j_3-6~</b><i>[unique id]</i><b>.jar</b>.</p>
+          <p>The file <b>c:\icutzu\icu4j\icu4j_3-6~</b><i>[unique id]</i><b>.txt</b> will contain the original path of icu4j_3-6.jar.</p>
+        </li>
+      </ul>
+    </p>
+
+
+  </body>
+</html>
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat b/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat
new file mode 100755
index 0000000..8422778
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007, International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+@echo.
+@echo *********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********
+
+rem Set ICUTZU_HOME to the current directory.
+set ICUTZU_HOME=%~dp0
+@echo ICUTZU Home: %ICUTZU_HOME%
+@echo.
+
+rem Make sure certain files are present.
+IF NOT EXIST "%ICUTZU_HOME%icutzu.jar" GOTO MissingICUTZUJAR
+IF NOT EXIST "%ICUTZU_HOME%icu4j.jar" GOTO MissingICU4JJAR
+IF NOT EXIST "%ICUTZU_HOME%runicutzuenv.bat" GOTO MissingICUTZUENV
+
+rem Set environmental variables.
+call "%ICUTZU_HOME%runicutzuenv.bat"
+IF NOT EXIST "%JAVA_HOME%\bin\java.exe" GOTO MissingJAVAHOME
+
+rem Create a temporary directory if one doesn't exit already.
+IF EXIST "%ICUTZU_HOME%Temp" GOTO TempAlreadyExists
+mkdir "%ICUTZU_HOME%Temp"
+:TempAlreadyExists
+
+
+
+rem Run the ICUTZU tool.
+@echo.
+@echo Launching the ICU4J Time Zone Update Utility (ICUTZU)...
+@echo "%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+@echo.
+"%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+IF ERRORLEVEL==0 GOTO Success
+GOTO Failure
+
+
+
+:MissingICUTZUJAR
+@echo The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICU4JJAR
+@echo ICU for Java (icu4j.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICUTZUENV
+@echo runicutzuenv.bat file doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingJAVAHOME
+@echo java.exe does not exist in %JAVA_HOME%\bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.bat
+GOTO Failure
+
+:Success
+@echo.
+@echo End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully.
+GOTO Exit
+
+:Failure
+@echo.
+@echo ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully.
+GOTO Exit
+
+:Exit
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd b/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd
new file mode 100755
index 0000000..5cf5717
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007, International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+@echo.
+@echo *********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********
+
+rem Set ICUTZU_HOME to the current directory.
+set ICUTZU_HOME=/* ENTER YOUR ICUTZU HOME PATH LIKE C:\DESKTOP\ICUTZU\ */
+@echo ICUTZU Home: %ICUTZU_HOME%
+@echo.
+
+rem Make sure certain files are present.
+IF NOT EXIST "%ICUTZU_HOME%icutzu.jar" GOTO MissingICUTZUJAR
+IF NOT EXIST "%ICUTZU_HOME%icu4j.jar" GOTO MissingICU4JJAR
+IF NOT EXIST "%ICUTZU_HOME%runicutzuenv.cmd" GOTO MissingICUTZUENV
+
+rem Set environmental variables.
+call "%ICUTZU_HOME%runicutzuenv.cmd"
+IF NOT EXIST "%JAVA_HOME%\bin\java.exe" GOTO MissingJAVAHOME
+
+rem Create a temporary directory if one doesn't exit already.
+IF EXIST "%ICUTZU_HOME%Temp" GOTO TempAlreadyExists
+mkdir "%ICUTZU_HOME%Temp"
+:TempAlreadyExists
+
+
+
+rem Run the ICUTZU tool.
+@echo.
+@echo Launching the ICU4J Time Zone Update Utility (ICUTZU)...
+@echo "%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+@echo.
+"%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+IF ERRORLEVEL==0 GOTO Success
+GOTO Failure
+
+
+
+:MissingICUTZUJAR
+@echo The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICU4JJAR
+@echo ICU for Java (icu4j.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICUTZUENV
+@echo runicutzuenv.cmd file doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingJAVAHOME
+@echo java.exe does not exist in %JAVA_HOME%\bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.cmd
+GOTO Failure
+
+:Success
+@echo.
+@echo End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully.
+GOTO Exit
+
+:Failure
+@echo.
+@echo ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully.
+GOTO Exit
+
+:Exit
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh b/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh
new file mode 100755
index 0000000..d781abe
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# Copyright (c) 2007 International Business Machines Corporation and others.
+# All rights reserved
+
+MissingICUTZUJAR() {
+  echo "The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingICU4JJAR() {
+  echo "ICU for Java (icu4j.jar) doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingICUTZUENV() {
+  echo "runicutzuenv.sh file doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingJAVAHOME() {
+  echo "java does not exist in $JAVA_HOME/bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.sh"
+  Failure
+}
+
+Success() {
+  echo
+  echo "End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully."
+  exit 0
+}
+
+Failure() {
+  echo
+  echo "ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully."
+  exit -1
+}
+
+
+echo ""
+echo "*********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********"
+
+# Set ICUTZU_HOME to the current directory.
+ICUTZU_HOME=`pwd`
+echo "ICUTZU Home: $ICUTZU_HOME"
+echo
+
+# Make sure certain files are present.
+if [ ! -f "$ICUTZU_HOME/icutzu.jar" ] ; then MissingICUTZUJAR ; fi
+if [ ! -f "$ICUTZU_HOME/icu4j.jar" ] ; then MissingICU4JJAR ; fi
+if [ ! -f "$ICUTZU_HOME/runicutzuenv.sh" ] ; then MissingICUTZUENV ; fi
+
+# Set environmental variables.
+. "$ICUTZU_HOME/runicutzuenv.sh"
+if [ ! -f "$JAVA_HOME/bin/java" ] ; then MissingJAVAHOME ; fi
+
+
+# Create a temporary directory if one doesn't exit already.
+if [ ! -d "$ICUTZU_HOME/Temp" ] ; then mkdir "$ICUTZU_HOME/Temp" ; fi
+
+# Run the ICUTZU tool.
+echo
+echo "Launching the ICU4J Time Zone Update Utility (ICUTZU)..."
+echo "\"$JAVA_HOME/bin/java\" -cp \"$ICUTZU_HOME/icutzu.jar\" -Dnogui=$NOGUI -Ddiscoveronly=$DISCOVERONLY -Dsilentpatch=$SILENTPATCH -Doffline=$OFFLINE com.ibm.icu.dev.tool.tzu.ICUTZUMain \"$ICUTZU_HOME/\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif"
+echo
+
+"$JAVA_HOME/bin/java" -cp "$ICUTZU_HOME/icutzu.jar" -Dnogui=$NOGUI -Ddiscoveronly=$DISCOVERONLY -Dsilentpatch=$SILENTPATCH -Doffline=$OFFLINE com.ibm.icu.dev.tool.tzu.ICUTZUMain "$ICUTZU_HOME/" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+
+# Test the exit code.
+if [ $? -eq "0" ] ; then
+  Success
+else
+  Failure
+fi
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat
new file mode 100755
index 0000000..7c51357
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007, International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+
+rem Set JAVA_HOME to the Java installation directory.
+IF  EXIST "%JAVA_HOME%" GOTO Next
+set JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/
+:Next
+@echo JAVA_HOME=%JAVA_HOME%
+
+rem Set whether the GUI will be run or not.
+set NOGUI=true
+@echo NOGUI=%NOGUI%
+
+rem Set whether the cmd-line utility will only discover update icu4j files.
+set DISCOVERONLY=true
+@echo DISCOVERONLY=%DISCOVERONLY%
+
+rem Set whether the cmd-line utility will run silently.
+set SILENTPATCH=false
+@echo SILENTPATCH=%SILENTPATCH%
+
+rem Set whether the cmd-line utility will not use online sources.
+set OFFLINE=false
+@echo OFFLINE=%OFFLINE%
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd
new file mode 100755
index 0000000..7c51357
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007, International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+
+rem Set JAVA_HOME to the Java installation directory.
+IF  EXIST "%JAVA_HOME%" GOTO Next
+set JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/
+:Next
+@echo JAVA_HOME=%JAVA_HOME%
+
+rem Set whether the GUI will be run or not.
+set NOGUI=true
+@echo NOGUI=%NOGUI%
+
+rem Set whether the cmd-line utility will only discover update icu4j files.
+set DISCOVERONLY=true
+@echo DISCOVERONLY=%DISCOVERONLY%
+
+rem Set whether the cmd-line utility will run silently.
+set SILENTPATCH=false
+@echo SILENTPATCH=%SILENTPATCH%
+
+rem Set whether the cmd-line utility will not use online sources.
+set OFFLINE=false
+@echo OFFLINE=%OFFLINE%
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh
new file mode 100755
index 0000000..9177e1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh
@@ -0,0 +1,24 @@
+# *******************************************************************************
+# * Copyright (C) 2007, International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+#set java path in JAVA_HOME
+JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/ 
+echo "JAVA_HOME=$JAVA_HOME"
+
+#set NOGUI
+NOGUI=true 
+echo "NOGUI=$NOGUI"
+
+#set DISCOVERONLY
+DISCOVERONLY=true    
+echo "DISCOVERONLY=$DISCOVERONLY"
+
+#set SILENTPATCH
+SILENTPATCH=false
+echo "SILENTPATCH=$SILENTPATCH"
+
+#set OFFLINE
+OFFLINE=false
+echo "OFFLINE=$OFFLINE"
diff --git a/src/com/ibm/icu/impl/Assert.java b/src/com/ibm/icu/impl/Assert.java
new file mode 100644
index 0000000..7d8b113
--- /dev/null
+++ b/src/com/ibm/icu/impl/Assert.java
@@ -0,0 +1,23 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2005-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+// 1.3 compatibility layer
+public class Assert {
+    public static void fail(Exception e) {
+        fail(e.toString()); // can't wrap exceptions in jdk 1.3
+    }
+    public static void fail(String msg) {
+        throw new IllegalStateException("failure '" + msg + "'");
+    }
+    public static void assrt(boolean val) {
+        if (!val) throw new IllegalStateException("assert failed");
+    }
+    public static void assrt(String msg, boolean val) {
+        if (!val) throw new IllegalStateException("assert '" + msg + "' failed");
+    }
+}
diff --git a/src/com/ibm/icu/impl/BOCU.java b/src/com/ibm/icu/impl/BOCU.java
new file mode 100644
index 0000000..62ffad0
--- /dev/null
+++ b/src/com/ibm/icu/impl/BOCU.java
@@ -0,0 +1,378 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * <p>Binary Ordered Compression for Unicode</p>
+ * 
+ * <p>Users are strongly encouraged to read the ICU paper on 
+ * <a href="http://www.icu-project.org/docs/papers/binary_ordered_compression_for_unicode.html">
+ * BOCU</a> before attempting to use this class.</p>
+ * 
+ * <p>BOCU is used to compress unicode text into a stream of unsigned
+ * bytes.  For many kinds of text the compression compares favorably
+ * to UTF-8, and for some kinds of text (such as CJK) it does better.
+ * The resulting bytes will compare in the same order as the original
+ * code points.  The byte stream does not contain the values 0, 1, or
+ * 2.</p>
+ * 
+ * <p>One example of a use of BOCU is in {@link 
+ * com.ibm.icu.text.Collator#getCollationKey(String)} for a RuleBasedCollator object with 
+ * collation strength IDENTICAL. The result CollationKey will consist of the 
+ * collation order of the source string followed by the BOCU result of the 
+ * source string. 
+ * </p> 
+ *
+ * <p>Unlike a UTF encoding, BOCU-compressed text is not suitable for
+ * random access.</p>
+ * 
+ * <p>Method: Slope Detection<br> Remember the previous code point
+ * (initial 0).  For each code point in the string, encode the
+ * difference with the previous one.  Similar to a UTF, the length of
+ * the byte sequence is encoded in the lead bytes.  Unlike a UTF, the
+ * trail byte values may overlap with lead/single byte values.  The
+ * signedness of the difference must be encoded as the most
+ * significant part.</p>
+ *
+ * <p>We encode differences with few bytes if their absolute values
+ * are small.  For correct ordering, we must treat the entire value
+ * range -10ffff..+10ffff in ascending order, which forbids encoding
+ * the sign and the absolute value separately. Instead, we split the
+ * lead byte range in the middle and encode non-negative values going
+ * up and negative values going down.</p>
+ *
+ * <p>For very small absolute values, the difference is added to a
+ * middle byte value for single-byte encoded differences.  For
+ * somewhat larger absolute values, the difference is divided by the
+ * number of byte values available, the modulo is used for one trail
+ * byte, and the remainder is added to a lead byte avoiding the
+ * single-byte range.  For large absolute values, the difference is
+ * similarly encoded in three bytes. (Syn Wee, I need examples
+ * here.)</p>
+ *
+ * <p>BOCU does not use byte values 0, 1, or 2, but uses all other
+ * byte values for lead and single bytes, so that the middle range of
+ * single bytes is as large as possible.</p>
+ *
+ * <p>Note that the lead byte ranges overlap some, but that the
+ * sequences as a whole are well ordered. I.e., even if the lead byte
+ * is the same for sequences of different lengths, the trail bytes
+ * establish correct order.  It would be possible to encode slightly
+ * larger ranges for each length (>1) by subtracting the lower bound
+ * of the range. However, that would also slow down the calculation.
+ * (Syn Wee, need an example).</p>
+ *
+ * <p>For the actual string encoding, an optimization moves the
+ * previous code point value to the middle of its Unicode script block
+ * to minimize the differences in same-script text runs.  (Syn Wee,
+ * need an example.)</p>
+ *
+ * @author Syn Wee Quek
+ * @since release 2.2, May 3rd 2002
+ */
+public class BOCU 
+{      
+    // public constructors --------------------------------------------------
+    
+    // public methods -------------------------------------------------------
+        
+    /**
+     * <p>Encode the code points of a string as a sequence of bytes,
+     * preserving lexical order.</p>
+     * <p>The minimum size of buffer required for the compression can be 
+     * preflighted by getCompressionLength(String).</p>
+     * @param source text source
+     * @param buffer output buffer
+     * @param offset to start writing to
+     * @return end offset where the writing stopped
+     * @see #getCompressionLength(String)
+     * @exception ArrayIndexOutOfBoundsException thrown if size of buffer is 
+     *            too small for the output.
+     */
+    public static int compress(String source, byte buffer[], int offset) 
+    {
+        int prev = 0;
+        UCharacterIterator iterator = UCharacterIterator.getInstance(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UCharacterIterator.DONE) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            offset = writeDiff(codepoint - prev, buffer, offset);
+            prev = codepoint;
+            codepoint = iterator.nextCodePoint();
+        }
+        return offset;
+    }
+        
+    /** 
+     * Return the number of  bytes that compress() would write.
+     * @param source text source string
+     * @return the length of the BOCU result 
+     * @see #compress(String, byte[], int)
+     */
+    public static int getCompressionLength(String source) 
+    {
+        int prev = 0;
+        int result = 0;
+        UCharacterIterator iterator =  UCharacterIterator.getInstance(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UCharacterIterator.DONE) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            codepoint = iterator.nextCodePoint();
+            result += lengthOfDiff(codepoint - prev);
+            prev = codepoint;
+        }
+        return result;
+    }
+
+    // public setter methods -------------------------------------------------
+        
+    // public getter methods ------------------------------------------------
+            
+    // public other methods -------------------------------------------------
+    
+    // protected constructor ------------------------------------------------
+      
+    // protected data members ------------------------------------------------
+    
+    // protected methods -----------------------------------------------------
+ 
+    // private data members --------------------------------------------------
+    
+    /** 
+     * Do not use byte values 0, 1, 2 because they are separators in sort keys.
+     */
+    private static final int SLOPE_MIN_ = 3;
+    private static final int SLOPE_MAX_ = 0xff;
+    private static final int SLOPE_MIDDLE_ = 0x81;
+    private static final int SLOPE_TAIL_COUNT_ = SLOPE_MAX_ - SLOPE_MIN_ + 1;
+    //private static final int SLOPE_MAX_BYTES_ = 4;
+
+    /**
+     * Number of lead bytes:
+     * 1        middle byte for 0
+     * 2*80=160 single bytes for !=0
+     * 2*42=84  for double-byte values
+     * 2*3=6    for 3-byte values
+     * 2*1=2    for 4-byte values
+     *
+     * The sum must be <=SLOPE_TAIL_COUNT.
+     *
+     * Why these numbers?
+     * - There should be >=128 single-byte values to cover 128-blocks
+     *   with small scripts.
+     * - There should be >=20902 single/double-byte values to cover Unihan.
+     * - It helps CJK Extension B some if there are 3-byte values that cover
+     *   the distance between them and Unihan.
+     *   This also helps to jump among distant places in the BMP.
+     * - Four-byte values are necessary to cover the rest of Unicode.
+     *
+     * Symmetrical lead byte counts are for convenience.
+     * With an equal distribution of even and odd differences there is also
+     * no advantage to asymmetrical lead byte counts.
+     */
+    private static final int SLOPE_SINGLE_ = 80;
+    private static final int SLOPE_LEAD_2_ = 42;
+    private static final int SLOPE_LEAD_3_ = 3;
+    //private static final int SLOPE_LEAD_4_ = 1;
+
+    /** 
+     * The difference value range for single-byters.
+     */
+    private static final int SLOPE_REACH_POS_1_ = SLOPE_SINGLE_;
+    private static final int SLOPE_REACH_NEG_1_ = (-SLOPE_SINGLE_);
+
+    /** 
+     * The difference value range for double-byters.
+     */
+    private static final int SLOPE_REACH_POS_2_ = 
+        SLOPE_LEAD_2_ * SLOPE_TAIL_COUNT_ + SLOPE_LEAD_2_ - 1;
+    private static final int SLOPE_REACH_NEG_2_ = (-SLOPE_REACH_POS_2_ - 1);
+
+    /** 
+     * The difference value range for 3-byters.
+     */
+    private static final int SLOPE_REACH_POS_3_ = SLOPE_LEAD_3_ 
+        * SLOPE_TAIL_COUNT_ 
+        * SLOPE_TAIL_COUNT_ 
+        + (SLOPE_LEAD_3_ - 1)
+        * SLOPE_TAIL_COUNT_ +
+        (SLOPE_TAIL_COUNT_ - 1);
+    private static final int SLOPE_REACH_NEG_3_ = (-SLOPE_REACH_POS_3_ - 1);
+
+    /** 
+     * The lead byte start values.
+     */
+    private static final int SLOPE_START_POS_2_ = SLOPE_MIDDLE_ 
+        + SLOPE_SINGLE_ + 1;
+    private static final int SLOPE_START_POS_3_ = SLOPE_START_POS_2_ 
+        + SLOPE_LEAD_2_;
+    private static final int SLOPE_START_NEG_2_ = SLOPE_MIDDLE_ + 
+        SLOPE_REACH_NEG_1_;
+    private static final int SLOPE_START_NEG_3_ = SLOPE_START_NEG_2_
+        - SLOPE_LEAD_2_;
+                                                                                                        
+    // private constructor ---------------------------------------------------
+        
+    /**
+     * Constructor private to prevent initialization
+     */
+    ///CLOVER:OFF
+    private BOCU()
+    {
+    }            
+    ///CLOVER:ON                                                                                       
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * Integer division and modulo with negative numerators
+     * yields negative modulo results and quotients that are one more than
+     * what we need here.
+     * @param number which operations are to be performed on
+     * @param factor the factor to use for division
+     * @return (result of division) << 32 | modulo 
+     */
+    private static final long getNegDivMod(int number, int factor) 
+    {
+        int modulo = number % factor; 
+        long result = number / factor;
+        if (modulo < 0) { 
+            -- result; 
+            modulo += factor; 
+        } 
+        return (result << 32) | modulo;
+    }
+        
+    /**
+     * Encode one difference value -0x10ffff..+0x10ffff in 1..3 bytes,
+     * preserving lexical order
+     * @param diff
+     * @param buffer byte buffer to append to
+     * @param offset to the byte buffer to start appending
+     * @return end offset where the appending stops
+     */
+    private static final int writeDiff(int diff, byte buffer[], int offset) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                buffer[offset ++] = (byte)(SLOPE_MIDDLE_ + diff);
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                buffer[offset ++] = (byte)(SLOPE_START_POS_2_ 
+                                           + (diff / SLOPE_TAIL_COUNT_));
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + 
+                                           (diff % SLOPE_TAIL_COUNT_));
+            } 
+            else if (diff <= SLOPE_REACH_POS_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                buffer[offset] = (byte)(SLOPE_START_POS_3_ 
+                                        + (diff / SLOPE_TAIL_COUNT_));
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset] = (byte)(SLOPE_MIN_ 
+                                        + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                buffer[offset] = (byte)SLOPE_MAX_;
+                offset += 4;
+            }
+        } 
+        else {
+            long division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+            int modulo = (int)division;
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                diff = (int)(division >> 32);
+                buffer[offset ++] = (byte)(SLOPE_START_NEG_2_ + diff);
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + modulo);
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = (byte)(SLOPE_START_NEG_3_ + diff);
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = SLOPE_MIN_;
+                offset += 4;
+            }
+        }
+        return offset;
+    }
+        
+    /**
+     * How many bytes would writeDiff() write? 
+     * @param diff
+     */
+    private static final int lengthOfDiff(int diff) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                return 1;
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                return 2;
+            } 
+            else if(diff <= SLOPE_REACH_POS_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        } 
+        else {
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                return 2;
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ByteBuffer.java b/src/com/ibm/icu/impl/ByteBuffer.java
new file mode 100644
index 0000000..085db62
--- /dev/null
+++ b/src/com/ibm/icu/impl/ByteBuffer.java
@@ -0,0 +1,72 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##/*
+//## * *****************************************************************************
+//## * Copyright (C) 2006-2007, International Business Machines
+//## * Corporation and others. All Rights Reserved.
+//## * *****************************************************************************
+//## */
+//##// dlf13 internal 1.3 compatibility only
+//##
+//##package com.ibm.icu.impl;
+//##
+//##/**
+//## * @internal
+//## */
+//##public final class ByteBuffer {
+//##    private byte[] data;
+//##
+//##    private int pos;
+//##
+//##    private int limit;
+//##
+//##    private ByteBuffer() {
+//##    }
+//##
+//##    public byte[] array() {
+//##        byte[] result = new byte[limit];
+//##        for (int i = 0; i < limit; ++i) {
+//##            result[i] = data[i];
+//##        }
+//##        return result;
+//##    }
+//##
+//##    public static ByteBuffer wrap(byte[] data) {
+//##        if (data == null)
+//##            throw new NullPointerException();
+//##        ByteBuffer result = new ByteBuffer();
+//##        result.data = data;
+//##        result.pos = 0;
+//##        result.limit = data.length;
+//##        return result;
+//##    }
+//##
+//##    public int limit() {
+//##        return limit;
+//##    }
+//##
+//##    public int remaining() {
+//##        return limit - pos;
+//##    }
+//##
+//##    public byte get() {
+//##        if (pos < limit)
+//##            return data[pos++];
+//##        throw new IndexOutOfBoundsException();
+//##    }
+//##
+//##    public void get(byte[] dst, int offset, int length) {
+//##        if (offset < 0 || offset + length > dst.length || pos + length > limit) {
+//##            throw new IndexOutOfBoundsException();
+//##        }
+//##        for (int i = 0; i < length; ++i) {
+//##            dst[offset++] = data[pos++];
+//##        }
+//##    }
+//##    public static final ByteBuffer allocate(int size){
+//##        ByteBuffer ret = new ByteBuffer();
+//##        ret.data = new byte[size];
+//##        return ret;
+//##    }
+//##}
+//#endif
diff --git a/src/com/ibm/icu/impl/CalendarAstronomer.java b/src/com/ibm/icu/impl/CalendarAstronomer.java
new file mode 100644
index 0000000..21af6f3
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarAstronomer.java
@@ -0,0 +1,1665 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.*;
+
+/**
+ * <code>CalendarAstronomer</code> is a class that can perform the calculations to
+ * determine the positions of the sun and moon, the time of sunrise and
+ * sunset, and other astronomy-related data.  The calculations it performs
+ * are in some cases quite complicated, and this utility class saves you
+ * the trouble of worrying about them.
+ * <p>
+ * The measurement of time is a very important part of astronomy.  Because
+ * astronomical bodies are constantly in motion, observations are only valid
+ * at a given moment in time.  Accordingly, each <code>CalendarAstronomer</code>
+ * object has a <code>time</code> property that determines the date
+ * and time for which its calculations are performed.  You can set and
+ * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * and related methods.
+ * <p>
+ * Almost all of the calculations performed by this class, or by any
+ * astronomer, are approximations to various degrees of accuracy.  The
+ * calculations in this class are mostly modelled after those described
+ * in the book
+ * <a href="http://www.amazon.com/exec/obidos/ISBN=0521356997" target="_top">
+ * Practical Astronomy With Your Calculator</a>, by Peter J.
+ * Duffett-Smith, Cambridge University Press, 1990.  This is an excellent
+ * book, and if you want a greater understanding of how these calculations
+ * are performed it a very good, readable starting point.
+ * <p>
+ * <strong>WARNING:</strong> This class is very early in its development, and
+ * it is highly likely that its API will change to some degree in the future.
+ * At the moment, it basically does just enough to support {@link com.ibm.icu.util.IslamicCalendar}
+ * and {@link com.ibm.icu.util.ChineseCalendar}.
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @internal
+ */
+public class CalendarAstronomer {
+    
+    //-------------------------------------------------------------------------
+    // Astronomical constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * The number of standard hours in one sidereal day.
+     * Approximately 24.93.
+     * @internal
+     */
+    public static final double SIDEREAL_DAY = 23.93446960027;
+    
+    /**
+     * The number of sidereal hours in one mean solar day.
+     * Approximately 24.07.
+     * @internal
+     */
+    public static final double SOLAR_DAY =  24.065709816;
+    
+    /**
+     * The average number of solar days from one new moon to the next.  This is the time
+     * it takes for the moon to return the same ecliptic longitude as the sun.
+     * It is longer than the sidereal month because the sun's longitude increases
+     * during the year due to the revolution of the earth around the sun.
+     * Approximately 29.53.
+     *
+     * @see #SIDEREAL_MONTH
+     * @internal
+     */
+    public static final double SYNODIC_MONTH = 29.530588853;
+    
+    /**
+     * The average number of days it takes
+     * for the moon to return to the same ecliptic longitude relative to the
+     * stellar background.  This is referred to as the sidereal month.
+     * It is shorter than the synodic month due to
+     * the revolution of the earth around the sun.
+     * Approximately 27.32.
+     *
+     * @see #SYNODIC_MONTH
+     * @internal
+     */
+    public static final double SIDEREAL_MONTH = 27.32166;
+    
+    /**
+     * The average number number of days between successive vernal equinoxes.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the sidereal year.
+     * Approximately 365.24
+     *
+     * @see #SIDEREAL_YEAR
+     * @internal
+     */
+    public static final double TROPICAL_YEAR = 365.242191;
+    
+    /**
+     * The average number of days it takes
+     * for the sun to return to the same position against the fixed stellar
+     * background.  This is the duration of one orbit of the earth about the sun
+     * as it would appear to an outside observer.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the tropical year.
+     * Approximately 365.25.
+     *
+     * @see #TROPICAL_YEAR
+     * @internal
+     */
+    public static final double SIDEREAL_YEAR = 365.25636;
+
+    //-------------------------------------------------------------------------
+    // Time-related constants
+    //-------------------------------------------------------------------------
+
+    /** 
+     * The number of milliseconds in one second. 
+     * @internal
+     */
+    public static final int  SECOND_MS = 1000;
+
+    /** 
+     * The number of milliseconds in one minute. 
+     * @internal
+     */
+    public static final int  MINUTE_MS = 60*SECOND_MS;
+
+    /** 
+     * The number of milliseconds in one hour. 
+     * @internal
+     */
+    public static final int  HOUR_MS   = 60*MINUTE_MS;
+
+    /** 
+     * The number of milliseconds in one day. 
+     * @internal
+     */
+    public static final long DAY_MS    = 24*HOUR_MS;
+
+    /**
+     * The start of the julian day numbering scheme used by astronomers, which
+     * is 1/1/4713 BC (Julian), 12:00 GMT.  This is given as the number of milliseconds
+     * since 1/1/1970 AD (Gregorian), a negative number.
+     * Note that julian day numbers and
+     * the Julian calendar are <em>not</em> the same thing.  Also note that
+     * julian days start at <em>noon</em>, not midnight.
+     * @internal
+     */
+    public static final long JULIAN_EPOCH_MS = -210866760000000L;
+    
+//  static {
+//      Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+//      cal.clear();
+//      cal.set(cal.ERA, 0);
+//      cal.set(cal.YEAR, 4713);
+//      cal.set(cal.MONTH, cal.JANUARY);
+//      cal.set(cal.DATE, 1);
+//      cal.set(cal.HOUR_OF_DAY, 12);
+//      System.out.println("1.5 Jan 4713 BC = " + cal.getTime().getTime());
+
+//      cal.clear();
+//      cal.set(cal.YEAR, 2000);
+//      cal.set(cal.MONTH, cal.JANUARY);
+//      cal.set(cal.DATE, 1);
+//      cal.add(cal.DATE, -1);
+//      System.out.println("0.0 Jan 2000 = " + cal.getTime().getTime());
+//  }
+    
+    /**
+     * Milliseconds value for 0.0 January 2000 AD.
+     */
+    static final long EPOCH_2000_MS = 946598400000L;
+
+    //-------------------------------------------------------------------------
+    // Assorted private data used for conversions
+    //-------------------------------------------------------------------------
+
+    // My own copies of these so compilers are more likely to optimize them away
+    static private final double PI = 3.14159265358979323846;
+    static private final double PI2 = PI * 2.0;
+
+    static private final double RAD_HOUR = 12 / PI;        // radians -> hours
+    static private final double DEG_RAD  = PI / 180;        // degrees -> radians
+    static private final double RAD_DEG  = 180 / PI;        // radians -> degrees
+    
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the current date and time.
+     * @internal
+     */
+    public CalendarAstronomer() {
+        this(System.currentTimeMillis());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified date and time.
+     * @internal
+     */
+    public CalendarAstronomer(Date d) {
+        this(d.getTime());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified time.  The time is expressed as a number of milliseconds since
+     * January 1, 1970 AD (Gregorian).
+     *
+     * @see java.util.Date#getTime()
+     * @internal
+     */
+    public CalendarAstronomer(long aTime) {
+        time = aTime;
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object with the given
+     * latitude and longitude.  The object's time is set to the current
+     * date and time.
+     * <p>
+     * @param longitude The desired longitude, in <em>degrees</em> east of
+     *                  the Greenwich meridian.
+     *
+     * @param latitude  The desired latitude, in <em>degrees</em>.  Positive
+     *                  values signify North, negative South.
+     *
+     * @see java.util.Date#getTime()
+     * @internal
+     */
+    public CalendarAstronomer(double longitude, double latitude) {
+        this();
+        fLongitude = normPI(longitude * DEG_RAD);
+        fLatitude  = normPI(latitude  * DEG_RAD);
+        fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Time and date getters and setters
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the date and time, expressed as the number of milliseconds since
+     *              1/1/1970 0:00 GMT (Gregorian).
+     *
+     * @see #setDate
+     * @see #getTime
+     * @internal
+     */
+    public void setTime(long aTime) {
+        time = aTime;
+        clearCache();
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param date the time and date, expressed as a <code>Date</code> object.
+     *
+     * @see #setTime
+     * @see #getDate
+     * @internal
+     */
+    public void setDate(Date date) {
+        setTime(date.getTime());
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param jdn   the desired time, expressed as a "julian day number",
+     *              which is the number of elapsed days since 
+     *              1/1/4713 BC (Julian), 12:00 GMT.  Note that julian day
+     *              numbers start at <em>noon</em>.  To get the jdn for
+     *              the corresponding midnight, subtract 0.5.
+     *
+     * @see #getJulianDay
+     * @see #JULIAN_EPOCH_MS
+     * @internal
+     */
+    public void setJulianDay(double jdn) {
+        time = (long)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+        clearCache();
+        julianDay = jdn;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as the number of milliseconds since
+     * 1/1/1970 AD 0:00 GMT (Gregorian).
+     *
+     * @see #setTime
+     * @see #getDate
+     * @internal
+     */
+    public long getTime() {
+        return time;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as a <code>Date</code> object.
+     *
+     * @see #setDate
+     * @see #getTime
+     * @internal
+     */
+    public Date getDate() {
+        return new Date(time);
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * expressed as a "julian day number", which is the number of elapsed
+     * days since 1/1/4713 BC (Julian), 12:00 GMT.
+     *
+     * @see #setJulianDay
+     * @see #JULIAN_EPOCH_MS
+     * @internal
+     */
+    public double getJulianDay() {
+        if (julianDay == INVALID) {
+            julianDay = (double)(time - JULIAN_EPOCH_MS) / (double)DAY_MS;
+        }
+        return julianDay;
+    }
+    
+    /**
+     * Return this object's time expressed in julian centuries:
+     * the number of centuries after 1/1/1900 AD, 12:00 GMT
+     *
+     * @see #getJulianDay
+     * @internal
+     */
+    public double getJulianCentury() {
+        if (julianCentury == INVALID) {
+            julianCentury = (getJulianDay() - 2415020.0) / 36525;
+        }
+        return julianCentury;
+    }
+
+    /**
+     * Returns the current Greenwich sidereal time, measured in hours
+     * @internal
+     */
+    public double getGreenwichSidereal() {
+        if (siderealTime == INVALID) {
+            // See page 86 of "Practial Astronomy with your Calculator",
+            // by Peter Duffet-Smith, for details on the algorithm.
+                
+            double UT = normalize((double)time/HOUR_MS, 24);
+        
+            siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
+        }
+        return siderealTime;
+    }
+    
+    private double getSiderealOffset() {
+        if (siderealT0 == INVALID) {
+            double JD  = Math.floor(getJulianDay() - 0.5) + 0.5;
+            double S   = JD - 2451545.0;
+            double T   = S / 36525.0;
+            siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+        }
+        return siderealT0;
+    }
+    
+    /**
+     * Returns the current local sidereal time, measured in hours
+     * @internal
+     */
+    public double getLocalSidereal() {
+        return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
+    }
+    
+    /**
+     * Converts local sidereal time to Universal Time.
+     *
+     * @param lst   The Local Sidereal Time, in hours since sidereal midnight
+     *              on this object's current date.
+     *
+     * @return      The corresponding Universal Time, in milliseconds since
+     *              1 Jan 1970, GMT.  
+     */
+    private long lstToUT(double lst) {
+        // Convert to local mean time
+        double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+        
+        // Then find local midnight on this day
+        long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
+        
+        //out("    lt  =" + lt + " hours");
+        //out("    base=" + new Date(base));
+        
+        return base + (long)(lt * HOUR_MS);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Coordinate transformations, all based on the current time of this object
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param ecliptic  A point in the sky in ecliptic coordinates.
+     * @return          The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
+    {
+        return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
+    }
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     * @param eclipLat      The ecliptic latitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong, double eclipLat)
+    {
+        // See page 42 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+
+        double obliq = eclipticObliquity();
+        double sinE = Math.sin(obliq);
+        double cosE = Math.cos(obliq);
+        
+        double sinL = Math.sin(eclipLong);
+        double cosL = Math.cos(eclipLong);
+        
+        double sinB = Math.sin(eclipLat);
+        double cosB = Math.cos(eclipLat);
+        double tanB = Math.tan(eclipLat);
+        
+        return new Equatorial(Math.atan2(sinL*cosE - tanB*sinE, cosL),
+                               Math.asin(sinB*cosE + cosB*sinE*sinL) );
+    }
+
+    /**
+     * Convert from ecliptic longitude to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong)
+    {
+        return eclipticToEquatorial(eclipLong, 0);  // TODO: optimize
+    }
+
+    /**
+     * @internal
+     */
+    public Horizon eclipticToHorizon(double eclipLong)
+    {
+        Equatorial equatorial = eclipticToEquatorial(eclipLong);
+        
+        double H = getLocalSidereal()*PI/12 - equatorial.ascension;     // Hour-angle
+        
+        double sinH = Math.sin(H);
+        double cosH = Math.cos(H);
+        double sinD = Math.sin(equatorial.declination);
+        double cosD = Math.cos(equatorial.declination);
+        double sinL = Math.sin(fLatitude);
+        double cosL = Math.cos(fLatitude);
+        
+        double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
+        double azimuth  = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
+
+        return new Horizon(azimuth, altitude);
+    }
+
+    
+    //-------------------------------------------------------------------------
+    // The Sun
+    //-------------------------------------------------------------------------
+
+    //
+    // Parameters of the Sun's orbit as of the epoch Jan 0.0 1990
+    // Angles are in radians (after multiplying by PI/180)
+    //
+    static final double JD_EPOCH = 2447891.5; // Julian day of epoch
+
+    static final double SUN_ETA_G   = 279.403303 * PI/180; // Ecliptic longitude at epoch
+    static final double SUN_OMEGA_G = 282.768422 * PI/180; // Ecliptic longitude of perigee
+    static final double SUN_E      =   0.016713;          // Eccentricity of orbit
+    //double sunR0     =   1.495585e8;        // Semi-major axis in KM
+    //double sunTheta0 =   0.533128 * PI/180; // Angular diameter at R0
+
+    // The following three methods, which compute the sun parameters
+    // given above for an arbitrary epoch (whatever time the object is
+    // set to), make only a small difference as compared to using the
+    // above constants.  E.g., Sunset times might differ by ~12
+    // seconds.  Furthermore, the eta-g computation is befuddled by
+    // Duffet-Smith's incorrect coefficients (p.86).  I've corrected
+    // the first-order coefficient but the others may be off too - no
+    // way of knowing without consulting another source.
+
+//  /**
+//   * Return the sun's ecliptic longitude at perigee for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return radians
+//   */
+//  private double getSunOmegaG() {
+//      double T = getJulianCentury();
+//      return (281.2208444 + (1.719175 + 0.000452778*T)*T) * DEG_RAD;
+//  }
+
+//  /**
+//   * Return the sun's ecliptic longitude for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return radians
+//   */
+//  private double getSunEtaG() {
+//      double T = getJulianCentury();
+//      //return (279.6966778 + (36000.76892 + 0.0003025*T)*T) * DEG_RAD;
+//      //
+//      // The above line is from Duffett-Smith, and yields manifestly wrong
+//      // results.  The below constant is derived empirically to match the
+//      // constant he gives for the 1990 EPOCH.
+//      //
+//      return (279.6966778 + (-0.3262541582718024 + 0.0003025*T)*T) * DEG_RAD;
+//  }
+
+//  /**
+//   * Return the sun's eccentricity of orbit for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return double
+//   */
+//  private double getSunE() {
+//      double T = getJulianCentury();
+//      return 0.01675104 - (0.0000418 + 0.000000126*T)*T;
+//  }
+
+    /**
+     * The longitude of the sun at the time specified by this object.
+     * The longitude is measured in radians along the ecliptic
+     * from the "first point of Aries," the point at which the ecliptic
+     * crosses the earth's equatorial plane at the vernal equinox.
+     * <p>
+     * Currently, this method uses an approximation of the two-body Kepler's
+     * equation for the earth and the sun.  It does not take into account the
+     * perturbations caused by the other planets, the moon, etc.
+     * @internal
+     */
+    public double getSunLongitude()
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        if (sunLongitude == INVALID) {
+            double[] result = getSunLongitude(getJulianDay());
+            sunLongitude = result[0];
+            meanAnomalySun = result[1];
+        }
+        return sunLongitude;
+    }
+  
+    /**
+     * TODO Make this public when the entire class is package-private.
+     */
+    /*public*/ double[] getSunLongitude(double julian)
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        double day = julian - JD_EPOCH;       // Days since epoch
+        
+        // Find the angular distance the sun in a fictitious
+        // circular orbit has travelled since the epoch.
+        double epochAngle = norm2PI(PI2/TROPICAL_YEAR*day);
+        
+        // The epoch wasn't at the sun's perigee; find the angular distance
+        // since perigee, which is called the "mean anomaly"
+        double meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
+        
+        // Now find the "true anomaly", e.g. the real solar longitude
+        // by solving Kepler's equation for an elliptical orbit
+        // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
+        // equations; omega_g is to be correct.
+        return new double[] {
+            norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G),
+            meanAnomaly
+        };
+    }
+
+    /**
+     * The position of the sun at this object's current date and time,
+     * in equatorial coordinates.
+     * @internal
+     */
+    public Equatorial getSunPosition() {
+        return eclipticToEquatorial(getSunLongitude(), 0);
+    }
+    
+    private static class SolarLongitude {
+        double value;
+        SolarLongitude(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing the vernal equinox.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}. 
+     * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude VERNAL_EQUINOX  = new SolarLongitude(0);
+    
+    /**
+     * Constant representing the summer solstice.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "summer" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
+    
+    /**
+     * Constant representing the autumnal equinox.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude AUTUMN_EQUINOX  = new SolarLongitude(PI);
+    
+    /**
+     * Constant representing the winter solstice.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "winter" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude WINTER_SOLSTICE = new SolarLongitude((PI*3)/2);
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     * @internal
+     */
+    public long getSunTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() { public double eval() { return getSunLongitude(); } },
+                            desired,
+                            TROPICAL_YEAR,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     * @internal
+     */
+    public long getSunTime(SolarLongitude desired, boolean next) {
+        return getSunTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     *
+     * NOTE: This method only works well if this object is set to a
+     * time near local noon.  Because of variations between the local
+     * official time zone and the geographic longitude, the
+     * computation can flop over into an adjacent day if this object
+     * is set to a time near local midnight.
+     * 
+     * @internal
+     */
+    public long getSunRiseSet(boolean rise)
+    {
+        long t0 = time;
+
+        // Make a rough guess: 6am or 6pm local time on the current day
+        long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
+        
+        setTime(noon + (long)((rise ? -6 : 6) * HOUR_MS));
+        
+        long t = riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getSunPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS / 12);       // Desired accuracy
+
+        setTime(t0);
+        return t;
+    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    //-------------------------------------------------------------------------
+//    // Alternate Sun Rise/Set
+//    // See Duffett-Smith p.93
+//    //-------------------------------------------------------------------------
+//
+//    // This yields worse results (as compared to USNO data) than getSunRiseSet().
+//    /**
+//     * TODO Make this public when the entire class is package-private.
+//     */
+//    /*public*/ long getSunRiseSet2(boolean rise) {
+//        // 1. Calculate coordinates of the sun's center for midnight
+//        double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+//        double[] sl = getSunLongitude(jd);
+//        double lambda1 = sl[0];
+//        Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
+//
+//        // 2. Add ... to lambda to get position 24 hours later
+//        double lambda2 = lambda1 + 0.985647*DEG_RAD;
+//        Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
+//
+//        // 3. Calculate LSTs of rising and setting for these two positions
+//        double tanL = Math.tan(fLatitude);
+//        double H = Math.acos(-tanL * Math.tan(pos1.declination));
+//        double lst1r = (PI2 + pos1.ascension - H) * 24 / PI2;
+//        double lst1s = (pos1.ascension + H) * 24 / PI2;
+//               H = Math.acos(-tanL * Math.tan(pos2.declination));
+//        double lst2r = (PI2-H + pos2.ascension ) * 24 / PI2;
+//        double lst2s = (H + pos2.ascension ) * 24 / PI2;
+//        if (lst1r > 24) lst1r -= 24;
+//        if (lst1s > 24) lst1s -= 24;
+//        if (lst2r > 24) lst2r -= 24;
+//        if (lst2s > 24) lst2s -= 24;
+//        
+//        // 4. Convert LSTs to GSTs.  If GST1 > GST2, add 24 to GST2.
+//        double gst1r = lstToGst(lst1r);
+//        double gst1s = lstToGst(lst1s);
+//        double gst2r = lstToGst(lst2r);
+//        double gst2s = lstToGst(lst2s);
+//        if (gst1r > gst2r) gst2r += 24;
+//        if (gst1s > gst2s) gst2s += 24;
+//
+//        // 5. Calculate GST at 0h UT of this date
+//        double t00 = utToGst(0);
+//        
+//        // 6. Calculate GST at 0h on the observer's longitude
+//        double offset = Math.round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
+//        double t00p = t00 - offset*1.002737909;
+//        if (t00p < 0) t00p += 24; // do NOT normalize
+//        
+//        // 7. Adjust
+//        if (gst1r < t00p) {
+//            gst1r += 24;
+//            gst2r += 24;
+//        }
+//        if (gst1s < t00p) {
+//            gst1s += 24;
+//            gst2s += 24;
+//        }
+//
+//        // 8.
+//        double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
+//        double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
+//
+//        // 9. Correct for parallax, refraction, and sun's diameter
+//        double dec = (pos1.declination + pos2.declination) / 2;
+//        double psi = Math.acos(Math.sin(fLatitude) / Math.cos(dec));
+//        double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
+//        double y = Math.asin(Math.sin(x) / Math.sin(psi)) * RAD_DEG;
+//        double delta_t = 240 * y / Math.cos(dec) / 3600; // hours
+//
+//        // 10. Add correction to GSTs, subtract from GSTr
+//        gstr -= delta_t;
+//        gsts += delta_t;
+//
+//        // 11. Convert GST to UT and then to local civil time
+//        double ut = gstToUt(rise ? gstr : gsts);
+//        //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
+//        long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
+//        return midnight + (long) (ut * 3600000);
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert local sidereal time to Greenwich sidereal time.
+//     * Section 15.  Duffett-Smith p.21
+//     * @param lst in hours (0..24)
+//     * @return GST in hours (0..24)
+//     */
+//    double lstToGst(double lst) {
+//        double delta = fLongitude * 24 / PI2;
+//        return normalize(lst - delta, 24);
+//    }
+ 
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert UT to GST on this date.
+//     * Section 12.  Duffett-Smith p.17
+//     * @param ut in hours
+//     * @return GST in hours
+//     */
+//    double utToGst(double ut) {
+//        return normalize(getT0() + ut*1.002737909, 24);
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert GST to UT on this date.
+//     * Section 13.  Duffett-Smith p.18
+//     * @param gst in hours
+//     * @return UT in hours
+//     */
+//    double gstToUt(double gst) {
+//        return normalize(gst - getT0(), 24) * 0.9972695663;
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    double getT0() {
+//        // Common computation for UT <=> GST
+//
+//        // Find JD for 0h UT
+//        double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+//
+//        double s = jd - 2451545.0;
+//        double t = s / 36525.0;
+//        double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
+//        return t0;
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    //-------------------------------------------------------------------------
+//    // Alternate Sun Rise/Set
+//    // See sci.astro FAQ
+//    // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
+//    //-------------------------------------------------------------------------
+//
+//    // Note: This method appears to produce inferior accuracy as
+//    // compared to getSunRiseSet(). 
+//
+//    /**
+//     * TODO Make this public when the entire class is package-private.
+//     */
+//    /*public*/ long getSunRiseSet3(boolean rise) {
+//
+//        // Compute day number for 0.0 Jan 2000 epoch
+//        double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
+//
+//        // Now compute the Local Sidereal Time, LST:
+//        // 
+//        double LST  =  98.9818  +  0.985647352 * d  +  /*UT*15  +  long*/
+//            fLongitude*RAD_DEG;
+//        // 
+//        // (east long. positive).  Note that LST is here expressed in degrees,
+//        // where 15 degrees corresponds to one hour.  Since LST really is an angle,
+//        // it's convenient to use one unit---degrees---throughout.
+//
+//        //     COMPUTING THE SUN'S POSITION
+//        //     ----------------------------
+//        // 
+//        // To be able to compute the Sun's rise/set times, you need to be able to
+//        // compute the Sun's position at any time.  First compute the "day
+//        // number" d as outlined above, for the desired moment.  Next compute:
+//        // 
+//        double oblecl = 23.4393 - 3.563E-7 * d;
+//        // 
+//        double w  =  282.9404  +  4.70935E-5   * d;
+//        double M  =  356.0470  +  0.9856002585 * d;
+//        double e  =  0.016709  -  1.151E-9     * d;
+//        // 
+//        // This is the obliquity of the ecliptic, plus some of the elements of
+//        // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
+//        // argument of perihelion, M = mean anomaly, e = eccentricity.
+//        // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
+//        // true, this is still an accurate approximation).  Next compute E, the
+//        // eccentric anomaly:
+//        // 
+//        double E = M + e*(180/PI) * Math.sin(M*DEG_RAD) * ( 1.0 + e*Math.cos(M*DEG_RAD) );
+//        // 
+//        // where E and M are in degrees.  This is it---no further iterations are
+//        // needed because we know e has a sufficiently small value.  Next compute
+//        // the true anomaly, v, and the distance, r:
+//        // 
+//        /*      r * cos(v)  =  */ double A  =  Math.cos(E*DEG_RAD) - e;
+//        /*      r * sin(v)  =  */ double B  =  Math.sqrt(1 - e*e) * Math.sin(E*DEG_RAD);
+//        // 
+//        // and
+//        // 
+//        //      r  =  sqrt( A*A + B*B )
+//        double v  =  Math.atan2( B, A )*RAD_DEG;
+//        // 
+//        // The Sun's true longitude, slon, can now be computed:
+//        // 
+//        double slon  =  v + w;
+//        // 
+//        // Since the Sun is always at the ecliptic (or at least very very close to
+//        // it), we can use simplified formulae to convert slon (the Sun's ecliptic
+//        // longitude) to sRA and sDec (the Sun's RA and Dec):
+//        // 
+//        //                   sin(slon) * cos(oblecl)
+//        //     tan(sRA)  =  -------------------------
+//        //             cos(slon)
+//        // 
+//        //     sin(sDec) =  sin(oblecl) * sin(slon)
+//        // 
+//        // As was the case when computing az, the Azimuth, if possible use an
+//        // atan2() function to compute sRA.
+//
+//        double sRA = Math.atan2(Math.sin(slon*DEG_RAD) * Math.cos(oblecl*DEG_RAD), Math.cos(slon*DEG_RAD))*RAD_DEG;
+//
+//        double sin_sDec = Math.sin(oblecl*DEG_RAD) * Math.sin(slon*DEG_RAD);
+//        double sDec = Math.asin(sin_sDec)*RAD_DEG;
+//
+//        //     COMPUTING RISE AND SET TIMES
+//        //     ----------------------------
+//        // 
+//        // To compute when an object rises or sets, you must compute when it
+//        // passes the meridian and the HA of rise/set.  Then the rise time is
+//        // the meridian time minus HA for rise/set, and the set time is the
+//        // meridian time plus the HA for rise/set.
+//        // 
+//        // To find the meridian time, compute the Local Sidereal Time at 0h local
+//        // time (or 0h UT if you prefer to work in UT) as outlined above---name
+//        // that quantity LST0.  The Meridian Time, MT, will now be:
+//        // 
+//        //     MT  =  RA - LST0
+//        double MT = normalize(sRA - LST, 360);
+//        // 
+//        // where "RA" is the object's Right Ascension (in degrees!).  If negative,
+//        // add 360 deg to MT.  If the object is the Sun, leave the time as it is,
+//        // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
+//        // sidereal to solar time.  Now, compute HA for rise/set, name that
+//        // quantity HA0:
+//        // 
+//        //                 sin(h0)  -  sin(lat) * sin(Dec)
+//        // cos(HA0)  =  ---------------------------------
+//        //                      cos(lat) * cos(Dec)
+//        // 
+//        // where h0 is the altitude selected to represent rise/set.  For a purely
+//        // mathematical horizon, set h0 = 0 and simplify to:
+//        // 
+//        //     cos(HA0)  =  - tan(lat) * tan(Dec)
+//        // 
+//        // If you want to account for refraction on the atmosphere, set h0 = -35/60
+//        // degrees (-35 arc minutes), and if you want to compute the rise/set times
+//        // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
+//        // 
+//        double h0 = -50/60 * DEG_RAD;
+//
+//        double HA0 = Math.acos(
+//          (Math.sin(h0) - Math.sin(fLatitude) * sin_sDec) /
+//          (Math.cos(fLatitude) * Math.cos(sDec*DEG_RAD)))*RAD_DEG;
+//
+//        // When HA0 has been computed, leave it as it is for the Sun but multiply
+//        // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
+//        // solar time.  Finally compute:
+//        // 
+//        //    Rise time  =  MT - HA0
+//        //    Set  time  =  MT + HA0
+//        // 
+//        // convert the times from degrees to hours by dividing by 15.
+//        // 
+//        // If you'd like to check that your calculations are accurate or just
+//        // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
+//        // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
+//
+//        double result = MT + (rise ? -HA0 : HA0); // in degrees
+//
+//        // Find UT midnight on this day
+//        long midnight = DAY_MS * (time / DAY_MS);
+//
+//        return midnight + (long) (result * 3600000 / 15);
+//    }
+
+    //-------------------------------------------------------------------------
+    // The Moon
+    //-------------------------------------------------------------------------
+    
+    static final double moonL0 = 318.351648 * PI/180;   // Mean long. at epoch
+    static final double moonP0 =  36.340410 * PI/180;   // Mean long. of perigee
+    static final double moonN0 = 318.510107 * PI/180;   // Mean long. of node
+    static final double moonI  =   5.145366 * PI/180;   // Inclination of orbit
+    static final double moonE  =   0.054900;            // Eccentricity of orbit
+    
+    // These aren't used right now
+    static final double moonA  =   3.84401e5;           // semi-major axis (km)
+    static final double moonT0 =   0.5181 * PI/180;     // Angular size at distance A
+    static final double moonPi =   0.9507 * PI/180;     // Parallax at distance A
+    
+    /**
+     * The position of the moon at the time set on this
+     * object, in equatorial coordinates.
+     * @internal
+     */
+    public Equatorial getMoonPosition()
+    {
+        //
+        // See page 142 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        if (moonPosition == null) {
+            // Calculate the solar longitude.  Has the side effect of
+            // filling in "meanAnomalySun" as well.
+            double sunLong = getSunLongitude();
+            
+            //
+            // Find the # of days since the epoch of our orbital parameters.
+            // TODO: Convert the time of day portion into ephemeris time
+            //
+            double day = getJulianDay() - JD_EPOCH;       // Days since epoch
+            
+            // Calculate the mean longitude and anomaly of the moon, based on
+            // a circular orbit.  Similar to the corresponding solar calculation.
+            double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+            double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+            
+            //
+            // Calculate the following corrections:
+            //  Evection:   the sun's gravity affects the moon's eccentricity
+            //  Annual Eqn: variation in the effect due to earth-sun distance
+            //  A3:         correction factor (for ???)
+            //
+            double evection = 1.2739*PI/180 * Math.sin(2 * (meanLongitude - sunLong)
+                                                - meanAnomalyMoon);
+            double annual   = 0.1858*PI/180 * Math.sin(meanAnomalySun);
+            double a3       = 0.3700*PI/180 * Math.sin(meanAnomalySun);
+
+            meanAnomalyMoon += evection - annual - a3;
+            
+            //
+            // More correction factors:
+            //  center  equation of the center correction
+            //  a4      yet another error correction (???)
+            //
+            // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+            //
+            double center = 6.2886*PI/180 * Math.sin(meanAnomalyMoon);
+            double a4 =     0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
+            
+            // Now find the moon's corrected longitude
+            moonLongitude = meanLongitude + evection + center - annual + a4;
+
+            //
+            // And finally, find the variation, caused by the fact that the sun's
+            // gravitational pull on the moon varies depending on which side of
+            // the earth the moon is on
+            //
+            double variation = 0.6583*PI/180 * Math.sin(2*(moonLongitude - sunLong));
+            
+            moonLongitude += variation;
+            
+            //
+            // What we've calculated so far is the moon's longitude in the plane
+            // of its own orbit.  Now map to the ecliptic to get the latitude
+            // and longitude.  First we need to find the longitude of the ascending
+            // node, the position on the ecliptic where it is crossed by the moon's
+            // orbit as it crosses from the southern to the northern hemisphere.
+            //
+            double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+            nodeLongitude -= 0.16*PI/180 * Math.sin(meanAnomalySun);
+
+            double y = Math.sin(moonLongitude - nodeLongitude);
+            double x = Math.cos(moonLongitude - nodeLongitude);
+            
+            moonEclipLong = Math.atan2(y*Math.cos(moonI), x) + nodeLongitude;
+            double moonEclipLat = Math.asin(y * Math.sin(moonI));
+
+            moonPosition = eclipticToEquatorial(moonEclipLong, moonEclipLat);
+        }
+        return moonPosition;
+    }
+    
+    /**
+     * The "age" of the moon at the time specified in this object.
+     * This is really the angle between the
+     * current ecliptic longitudes of the sun and the moon,
+     * measured in radians.
+     *
+     * @see #getMoonPhase
+     * @internal
+     */
+    public double getMoonAge() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        // Force the moon's position to be calculated.  We're going to use
+        // some the intermediate results cached during that calculation.
+        //
+        getMoonPosition();
+        
+        return norm2PI(moonEclipLong - sunLongitude);
+    }
+    
+    /**
+     * Calculate the phase of the moon at the time set in this object.
+     * The returned phase is a <code>double</code> in the range
+     * <code>0 <= phase < 1</code>, interpreted as follows:
+     * <ul>
+     * <li>0.00: New moon
+     * <li>0.25: First quarter
+     * <li>0.50: Full moon
+     * <li>0.75: Last quarter
+     * </ul>
+     *
+     * @see #getMoonAge
+     * @internal
+     */
+    public double getMoonPhase() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        return 0.5 * (1 - Math.cos(getMoonAge()));
+    }
+    
+    private static class MoonAge {
+        double value;
+        MoonAge(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing a new moon.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge NEW_MOON      = new MoonAge(0);
+
+    /**
+     * Constant representing the moon's first quarter.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
+    
+    /**
+     * Constant representing a full moon.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge FULL_MOON     = new MoonAge(PI);
+    
+    /**
+     * Constant representing the moon's last quarter.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge LAST_QUARTER  = new MoonAge((PI*3)/2);
+    
+    /**
+     * Find the next or previous time at which the Moon's ecliptic
+     * longitude will have the desired value.  
+     * <p>
+     * @param desired   The desired longitude.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     * @internal
+     */
+    public long getMoonTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() {
+                            public double eval() { return getMoonAge(); } },
+                            desired,
+                            SYNODIC_MONTH,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next or previous time at which the moon will be in the
+     * desired phase.
+     * <p>
+     * @param desired   The desired phase of the moon.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     * @internal
+     */
+    public long getMoonTime(MoonAge desired, boolean next) {
+        return getMoonTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     * @internal
+     */
+    public long getMoonRiseSet(boolean rise)
+    {
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getMoonPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // Interpolation methods for finding the time at which a given event occurs
+    //-------------------------------------------------------------------------
+    
+    private interface AngleFunc {
+        public double eval();
+    }
+    
+    private long timeOfAngle(AngleFunc func, double desired,
+                             double periodDays, long epsilon, boolean next)
+    {
+        // Find the value of the function at the current time
+        double lastAngle = func.eval();
+        
+        // Find out how far we are from the desired angle
+        double deltaAngle = norm2PI(desired - lastAngle) ;
+        
+        // Using the average period, estimate the next (or previous) time at
+        // which the desired angle occurs.
+        double deltaT =  (deltaAngle + (next ? 0 : -PI2)) * (periodDays*DAY_MS) / PI2;
+        
+        double lastDeltaT = deltaT; // Liu
+        long startTime = time; // Liu
+        
+        setTime(time + (long)deltaT);
+
+        // Now iterate until we get the error below epsilon.  Throughout
+        // this loop we use normPI to get values in the range -Pi to Pi,
+        // since we're using them as correction factors rather than absolute angles.
+        do {
+            // Evaluate the function at the time we've estimated
+            double angle = func.eval();
+
+            // Find the # of milliseconds per radian at this point on the curve
+            double factor = Math.abs(deltaT / normPI(angle-lastAngle));
+
+            // Correct the time estimate based on how far off the angle is
+            deltaT = normPI(desired - angle) * factor;
+            
+            // HACK:
+            // 
+            // If abs(deltaT) begins to diverge we need to quit this loop.
+            // This only appears to happen when attempting to locate, for
+            // example, a new moon on the day of the new moon.  E.g.:
+            // 
+            // This result is correct:
+            // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
+            //   Sun Jul 22 10:57:41 CST 1990
+            // 
+            // But attempting to make the same call a day earlier causes deltaT
+            // to diverge:
+            // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
+            //   1.3649828540224032E9
+            // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
+            //   Sun Jul 08 13:56:15 CST 1990
+            //
+            // As a temporary solution, we catch this specific condition and
+            // adjust our start time by one eighth period days (either forward
+            // or backward) and try again.
+            // Liu 11/9/00
+            if (Math.abs(deltaT) > Math.abs(lastDeltaT)) {
+                long delta = (long) (periodDays * DAY_MS / 8);
+                setTime(startTime + (next ? delta : -delta));
+                return timeOfAngle(func, desired, periodDays, epsilon, next);
+            }
+
+            lastDeltaT = deltaT;
+            lastAngle = angle;
+
+            setTime(time + (long)deltaT);
+        }
+        while (Math.abs(deltaT) > epsilon);
+        
+        return time;
+    }
+    
+    private interface CoordFunc {
+        public Equatorial eval();
+    }
+    
+    private long riseOrSet(CoordFunc func, boolean rise,
+                           double diameter, double refraction, 
+                           long epsilon)
+    {        
+        Equatorial  pos = null;
+        double      tanL   = Math.tan(fLatitude);
+        long        deltaT = Long.MAX_VALUE;
+        int         count = 0;
+        
+        //
+        // Calculate the object's position at the current time, then use that
+        // position to calculate the time of rising or setting.  The position
+        // will be different at that time, so iterate until the error is allowable.
+        //
+        do {
+            // See "Practical Astronomy With Your Calculator, section 33.
+            pos = func.eval();
+            double angle = Math.acos(-tanL * Math.tan(pos.declination));
+            double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
+                         
+            // Convert from LST to Universal Time.
+            long newTime = lstToUT( lst );
+            
+            deltaT = newTime - time;
+            setTime(newTime);
+        }
+        while (++ count < 5 && Math.abs(deltaT) > epsilon);
+
+        // Calculate the correction due to refraction and the object's angular diameter
+        double cosD  = Math.cos(pos.declination);
+        double psi   = Math.acos(Math.sin(fLatitude) / cosD);
+        double x     = diameter / 2 + refraction;
+        double y     = Math.asin(Math.sin(x) / Math.sin(psi));
+        long  delta  = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
+        
+        return time + (rise ? -delta : delta);
+    }
+    
+    //-------------------------------------------------------------------------
+    // Other utility methods
+    //-------------------------------------------------------------------------
+
+    /***
+     * Given 'value', add or subtract 'range' until 0 <= 'value' < range.
+     * The modulus operator.
+     */
+    private static final double normalize(double value, double range) {
+        return value - range * Math.floor(value / range);
+    }
+    
+    /**
+     * Normalize an angle so that it's in the range 0 - 2pi.
+     * For positive angles this is just (angle % 2pi), but the Java
+     * mod operator doesn't work that way for negative numbers....
+     */
+    private static final double norm2PI(double angle) {
+        return normalize(angle, PI2);
+    }
+    
+    /**
+     * Normalize an angle into the range -PI - PI
+     */
+    private static final double normPI(double angle) {
+        return normalize(angle + PI, PI2) - PI;
+    }
+    
+    /**
+     * Find the "true anomaly" (longitude) of an object from
+     * its mean anomaly and the eccentricity of its orbit.  This uses
+     * an iterative solution to Kepler's equation.
+     *
+     * @param meanAnomaly   The object's longitude calculated as if it were in
+     *                      a regular, circular orbit, measured in radians
+     *                      from the point of perigee.  
+     *
+     * @param eccentricity  The eccentricity of the orbit
+     *
+     * @return The true anomaly (longitude) measured in radians
+     */
+    private double trueAnomaly(double meanAnomaly, double eccentricity)
+    {
+        // First, solve Kepler's equation iteratively
+        // Duffett-Smith, p.90
+        double delta;
+        double E = meanAnomaly;
+        do {
+            delta = E - eccentricity * Math.sin(E) - meanAnomaly;
+            E = E - delta / (1 - eccentricity * Math.cos(E));
+        } 
+        while (Math.abs(delta) > 1e-5); // epsilon = 1e-5 rad
+
+        return 2.0 * Math.atan( Math.tan(E/2) * Math.sqrt( (1+eccentricity)
+                                                          /(1-eccentricity) ) );
+    }
+    
+    /**
+     * Return the obliquity of the ecliptic (the angle between the ecliptic
+     * and the earth's equator) at the current time.  This varies due to
+     * the precession of the earth's axis.
+     *
+     * @return  the obliquity of the ecliptic relative to the equator,
+     *          measured in radians.
+     */
+    private double eclipticObliquity() {
+        if (eclipObliquity == INVALID) {
+            final double epoch = 2451545.0;     // 2000 AD, January 1.5
+
+            double T = (getJulianDay() - epoch) / 36525;
+            
+            eclipObliquity = 23.439292
+                           - 46.815/3600 * T
+                           - 0.0006/3600 * T*T
+                           + 0.00181/3600 * T*T*T;
+                           
+            eclipObliquity *= DEG_RAD;
+        }
+        return eclipObliquity;
+    }
+    
+     
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Current time in milliseconds since 1/1/1970 AD
+     * @see java.util.Date#getTime
+     */
+    private long time;
+    
+    /* These aren't used yet, but they'll be needed for sunset calculations
+     * and equatorial to horizon coordinate conversions
+     */
+    private double fLongitude = 0.0;
+    private double fLatitude  = 0.0;
+    private long   fGmtOffset = 0;
+    
+    //
+    // The following fields are used to cache calculated results for improved
+    // performance.  These values all depend on the current time setting
+    // of this object, so the clearCache method is provided.
+    //
+    static final private double INVALID = Double.MIN_VALUE;
+    
+    private transient double    julianDay       = INVALID;
+    private transient double    julianCentury   = INVALID;
+    private transient double    sunLongitude    = INVALID;
+    private transient double    meanAnomalySun  = INVALID;
+    private transient double    moonLongitude   = INVALID;
+    private transient double    moonEclipLong   = INVALID;
+    //private transient double    meanAnomalyMoon = INVALID;
+    private transient double    eclipObliquity  = INVALID;
+    private transient double    siderealT0      = INVALID;
+    private transient double    siderealTime    = INVALID;
+    
+    private transient Equatorial  moonPosition = null;
+
+    private void clearCache() {
+        julianDay       = INVALID;
+        julianCentury   = INVALID;
+        sunLongitude    = INVALID;
+        meanAnomalySun  = INVALID;
+        moonLongitude   = INVALID;
+        moonEclipLong   = INVALID;
+        //meanAnomalyMoon = INVALID;
+        eclipObliquity  = INVALID;
+        siderealTime    = INVALID;
+        siderealT0      = INVALID;
+        moonPosition    = null;
+    }
+    
+    //private static void out(String s) {
+    //    System.out.println(s);
+    //}
+    
+    //private static String deg(double rad) {
+    //    return Double.toString(rad * RAD_DEG);
+    //}
+    
+    //private static String hours(long ms) {
+    //    return Double.toString((double)ms / HOUR_MS) + " hours";
+    //}
+
+    /**
+     * @internal
+     */
+    public String local(long localMillis) {
+        return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
+    }
+    
+    
+    /**
+     * Represents the position of an object in the sky relative to the ecliptic,
+     * the plane of the earth's orbit around the Sun. 
+     * This is a spherical coordinate system in which the latitude
+     * specifies the position north or south of the plane of the ecliptic.
+     * The longitude specifies the position along the ecliptic plane
+     * relative to the "First Point of Aries", which is the Sun's position in the sky
+     * at the Vernal Equinox.
+     * <p>
+     * Note that Ecliptic objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Equatorial
+     * @see CalendarAstronomer.Horizon
+     * @internal
+     */
+    public static final class Ecliptic {
+        /**
+         * Constructs an Ecliptic coordinate object.
+         * <p>
+         * @param lat The ecliptic latitude, measured in radians.
+         * @param lon The ecliptic longitude, measured in radians.
+         * @internal
+         */
+        public Ecliptic(double lat, double lon) {
+            latitude = lat;
+            longitude = lon;
+        }
+
+        /**
+         * Return a string representation of this object
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(longitude*RAD_DEG) + "," + (latitude*RAD_DEG);
+        }
+        
+        /**
+         * The ecliptic latitude, in radians.  This specifies an object's
+         * position north or south of the plane of the ecliptic,
+         * with positive angles representing north.
+         * @internal
+         */
+        public final double latitude;
+        
+        /**
+         * The ecliptic longitude, in radians.
+         * This specifies an object's position along the ecliptic plane
+         * relative to the "First Point of Aries", which is the Sun's position
+         * in the sky at the Vernal Equinox,
+         * with positive angles representing east.
+         * <p>
+         * A bit of trivia: the first point of Aries is currently in the
+         * constellation Pisces, due to the precession of the earth's axis.
+         * @internal
+         */
+        public final double longitude;
+    }
+
+    /**
+     * Represents the position of an 
+     * object in the sky relative to the plane of the earth's equator. 
+     * The <i>Right Ascension</i> specifies the position east or west
+     * along the equator, relative to the sun's position at the vernal
+     * equinox.  The <i>Declination</i> is the position north or south
+     * of the equatorial plane.
+     * <p>
+     * Note that Equatorial objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Horizon
+     * @internal
+     */
+    public static final class Equatorial {
+        /**
+         * Constructs an Equatorial coordinate object.
+         * <p>
+         * @param asc The right ascension, measured in radians.
+         * @param dec The declination, measured in radians.
+         * @internal
+         */
+        public Equatorial(double asc, double dec) {
+            ascension = asc;
+            declination = dec;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(ascension*RAD_DEG) + "," + (declination*RAD_DEG);
+        }
+        
+        /**
+         * Return a string representation of this object with the right ascension
+         * measured in hours, minutes, and seconds.
+         * @internal
+         */
+        public String toHmsString() {
+            return radToHms(ascension) + "," + radToDms(declination);
+        }
+        
+        /**
+         * The right ascension, in radians. 
+         * This is the position east or west along the equator
+         * relative to the sun's position at the vernal equinox,
+         * with positive angles representing East.
+         * @internal
+         */
+        public final double ascension;
+        
+        /**
+         * The declination, in radians.
+         * This is the position north or south of the equatorial plane,
+         * with positive angles representing north.
+         * @internal
+         */
+        public final double declination;
+    }
+
+    /**
+     * Represents the position of an  object in the sky relative to 
+     * the local horizon.
+     * The <i>Altitude</i> represents the object's elevation above the horizon,
+     * with objects below the horizon having a negative altitude.
+     * The <i>Azimuth</i> is the geographic direction of the object from the
+     * observer's position, with 0 representing north.  The azimuth increases
+     * clockwise from north.
+     * <p>
+     * Note that Horizon objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Equatorial
+     * @internal
+     */
+    public static final class Horizon {
+        /**
+         * Constructs a Horizon coordinate object.
+         * <p>
+         * @param alt  The altitude, measured in radians above the horizon.
+         * @param azim The azimuth, measured in radians clockwise from north.
+         * @internal
+         */
+        public Horizon(double alt, double azim) {
+            altitude = alt;
+            azimuth = azim;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
+        }
+        
+        /** 
+         * The object's altitude above the horizon, in radians. 
+         * @internal
+         */
+        public final double altitude;
+        
+        /** 
+         * The object's direction, in radians clockwise from north. 
+         * @internal
+         */
+        public final double azimuth;
+    }
+
+    static private String radToHms(double angle) {
+        int hrs = (int) (angle*RAD_HOUR);
+        int min = (int)((angle*RAD_HOUR - hrs) * 60);
+        int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
+        
+        return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
+    }
+    
+    static private String radToDms(double angle) {
+        int deg = (int) (angle*RAD_DEG);
+        int min = (int)((angle*RAD_DEG - deg) * 60);
+        int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
+        
+        return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
+    }
+}
diff --git a/src/com/ibm/icu/impl/CalendarCache.java b/src/com/ibm/icu/impl/CalendarCache.java
new file mode 100644
index 0000000..c83562a
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarCache.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * @internal
+ */
+public class CalendarCache
+{
+    /**
+     * @internal
+     */
+    public CalendarCache() {
+        makeArrays(arraySize);
+    }
+    
+    private void makeArrays(int newSize) {
+        keys    = new long[newSize];
+        values  = new long[newSize];
+        
+        for (int i = 0; i < newSize; i++) {
+            values[i] = EMPTY;
+        }
+        arraySize = newSize;
+        threshold = (int)(arraySize * 0.75);
+        size = 0;
+    }
+    
+    /**
+     * @internal
+     */
+    public synchronized long get(long key) {
+        return values[findIndex(key)];
+    }
+    
+    /**
+     * @internal
+     */
+    public synchronized void put(long key, long value)
+    {
+        if (size >= threshold) {
+            rehash();
+        }
+        int index = findIndex(key);
+        
+        keys[index] = key;
+        values[index] = value;
+        size++;
+    }
+    
+    private final int findIndex(long key) {
+        int index = hash(key);
+        int delta = 0;
+        
+        while (values[index] != EMPTY && keys[index] != key)
+        {
+            if (delta == 0) {
+                delta = hash2(key);
+            }
+            index = (index + delta) % arraySize;
+        }
+        return index;
+    }
+    
+    private void rehash()
+    {
+        int oldSize = arraySize;
+        long[] oldKeys = keys;
+        long[] oldValues = values;
+        
+        if (pIndex < primes.length - 1) {
+            arraySize = primes[++pIndex];
+        } else {
+            arraySize = arraySize * 2 + 1;
+        }
+        size = 0;
+        
+        makeArrays(arraySize);
+        for (int i = 0; i < oldSize; i++) {
+            if (oldValues[i] != EMPTY) {
+                put(oldKeys[i], oldValues[i]);
+            }
+        }
+        oldKeys = oldValues = null; // Help out the garbage collector
+    }
+    
+    
+    /**
+     * Produce a uniformly-distributed hash value from an integer key.
+     * This is essentially a linear congruential random number generator
+     * that uses the key as its seed value.
+     */
+    private final int hash(long key)
+    {
+        int h = (int)((key * 15821 + 1) % arraySize);
+        if (h < 0) {
+            h += arraySize;
+        }
+        return h;
+    }
+    
+    private final int hash2(long key) {
+        return arraySize - 2 - (int)(key % (arraySize-2) );
+    }
+    
+    static private final int primes[] = {  // 5, 17, 31, 47, // for testing
+        61, 127, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521,
+        131071, 262139, 
+    };
+
+    private int     pIndex      = 0;
+    private int     size        = 0;
+    private int     arraySize   = primes[pIndex];
+    private int     threshold   = (arraySize * 3) / 4;
+    
+    private long[]  keys        = new long[arraySize];
+    private long[]  values      = new long[arraySize];
+
+    /**
+     * @internal
+     */
+    static public  long EMPTY   = Long.MIN_VALUE;
+}
diff --git a/src/com/ibm/icu/impl/CalendarData.java b/src/com/ibm/icu/impl/CalendarData.java
new file mode 100644
index 0000000..e51133b
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarData.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+
+
+/**
+ * This class abstracts access to calendar (Calendar and DateFormat) data.
+ * @internal ICU 3.0
+ */
+public class CalendarData {
+    /**
+     * Construct a CalendarData from the given locale.
+     * @param loc locale to use. The 'calendar' keyword will be ignored.
+     * @param type calendar type. NULL indicates the gregorian calendar. 
+     * No default lookup is done.
+     */
+    public CalendarData(ULocale loc, String type) {
+        this((ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc), type);
+    }
+    
+    public CalendarData(ICUResourceBundle b, String type) {
+        fBundle = b;
+        if((type == null) || (type.equals("")) || (type.equals("gregorian"))) {
+            fMainType = "gregorian";
+            fFallbackType = null;
+        } else {
+            fMainType = type;
+            fFallbackType ="gregorian";
+        }
+    }
+    
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     *
+     * @param key Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key);
+            }
+            throw m;
+            
+        }       
+    }
+
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     * There is an implicit key of 'format'
+     * data is located in:   "calendar/key/format/subKey"
+     * for example,  calendar/dayNames/format/abbreviated
+     *
+     * @param key Resource key to data
+     * @param subKey Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key, String subKey) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/format/" + subKey);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/format/" + subKey);
+            }
+            throw m;
+            
+        }       
+    }
+
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     * data is located in:   "calendar/key/contextKey/subKey"
+     * for example,  calendar/dayNames/stand-alone/narrow
+     *
+     * @param key Resource key to data
+     * @param contextKey Resource key to data
+     * @param subKey Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key, String contextKey, String subKey) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/" + contextKey + "/" + subKey);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/" + contextKey + "/" + subKey);
+            }
+            throw m;
+            
+        }       
+    }
+    
+    public String[] getStringArray(String key) {
+        return get(key).getStringArray();
+    }
+
+    public String[] getStringArray(String key, String subKey) {
+        return get(key, subKey).getStringArray();
+    }
+
+    public String[] getStringArray(String key, String contextKey, String subKey) {
+        return get(key, contextKey, subKey).getStringArray();
+    }
+    public String[] getEras(String subkey){
+        ICUResourceBundle bundle = get("eras/"+subkey);
+        return bundle.getStringArray();
+    }
+    public ULocale getULocale() {
+        return fBundle.getULocale();
+    }
+
+    private ICUResourceBundle fBundle;
+    private String fMainType;
+    private String fFallbackType;
+}
diff --git a/src/com/ibm/icu/impl/CharTrie.java b/src/com/ibm/icu/impl/CharTrie.java
new file mode 100644
index 0000000..1f4a98e
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharTrie.java
@@ -0,0 +1,356 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Trie implementation which stores data in char, 16 bits.
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+
+ // note that i need to handle the block calculations later, since chartrie
+ // in icu4c uses the same index array.
+public class CharTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate object which provides methods to parse the char 
+    *                        data
+    * @throws IOException thrown when data reading fails
+    */
+    public CharTrie(InputStream inputStream, 
+                    DataManipulate dataManipulate) throws IOException
+    {
+        super(inputStream, dataManipulate);
+        
+        if (!isCharTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a char trie.");
+        }
+        m_friendAgent_ = new FriendAgent();
+    }
+
+    /**
+     * Make a dummy CharTrie.
+     * A dummy trie is an empty runtime trie, used when a real data trie cannot
+     * be loaded.
+     *
+     * The trie always returns the initialValue,
+     * or the leadUnitValue for lead surrogate code points.
+     * The Latin-1 part is always set up to be linear.
+     *
+     * @param initialValue the initial value that is set for all code points
+     * @param leadUnitValue the value for lead surrogate code _units_ that do not
+     *                      have associated supplementary data
+     * @param dataManipulate object which provides methods to parse the char data
+     */
+    public CharTrie(int initialValue, int leadUnitValue, DataManipulate dataManipulate) {
+        super(new char[BMP_INDEX_LENGTH+SURROGATE_BLOCK_COUNT], HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_, dataManipulate);
+
+        int dataLength, latin1Length, i, limit;
+        char block;
+
+        /* calculate the actual size of the dummy trie data */
+
+        /* max(Latin-1, block 0) */
+        dataLength=latin1Length= INDEX_STAGE_1_SHIFT_<=8 ? 256 : DATA_BLOCK_LENGTH;
+        if(leadUnitValue!=initialValue) {
+            dataLength+=DATA_BLOCK_LENGTH;
+        }
+        m_data_=new char[dataLength];
+        m_dataLength_=dataLength;
+
+        m_initialValue_=(char)initialValue;
+
+        /* fill the index and data arrays */
+
+        /* indexes are preset to 0 (block 0) */
+
+        /* Latin-1 data */
+        for(i=0; i<latin1Length; ++i) {
+            m_data_[i]=(char)initialValue;
+        }
+
+        if(leadUnitValue!=initialValue) {
+            /* indexes for lead surrogate code units to the block after Latin-1 */
+            block=(char)(latin1Length>>INDEX_STAGE_2_SHIFT_);
+            i=0xd800>>INDEX_STAGE_1_SHIFT_;
+            limit=0xdc00>>INDEX_STAGE_1_SHIFT_;
+            for(; i<limit; ++i) {
+                m_index_[i]=block;
+            }
+
+            /* data for lead surrogate code units */
+            limit=latin1Length+DATA_BLOCK_LENGTH;
+            for(i=latin1Length; i<limit; ++i) {
+                m_data_[i]=(char)leadUnitValue;
+            }
+        }
+
+        m_friendAgent_ = new FriendAgent();
+    }
+
+    /**
+     * Java friend implementation
+     */
+    public class FriendAgent
+    {
+        /**
+         * Gives out the index array of the trie
+         * @return index array of trie
+         */ 
+        public char[] getPrivateIndex() 
+        {
+            return m_index_;
+        }
+        /**
+         * Gives out the data array of the trie
+         * @return data array of trie
+         */ 
+        public char[] getPrivateData() 
+        {
+            return m_data_;
+        }
+        /**
+         * Gives out the data offset in the trie
+         * @return data offset in the trie
+         */ 
+        public int getPrivateInitialValue() 
+        {
+            return m_initialValue_;
+        }
+    }
+    
+    // public methods --------------------------------------------------
+    
+    /**
+     * Java friend implementation
+     * To store the index and data array into the argument.
+     * @param friend java friend UCharacterProperty object to store the array
+     */
+    public void putIndexData(UCharacterProperty friend) 
+    {
+        friend.setIndexData(m_friendAgent_);
+    }
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    */
+    public final char getCodePointValue(int ch)
+    {
+        int offset;
+
+        // fastpath for U+0000..U+D7FF
+        if(0 <= ch && ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // copy of getRawOffset()
+            offset = (m_index_[ch >> INDEX_STAGE_1_SHIFT_] << INDEX_STAGE_2_SHIFT_) 
+                    + (ch & INDEX_STAGE_3_MASK_);
+            return m_data_[offset];
+        }
+
+        // handle U+D800..U+10FFFF
+        offset = getCodePointOffset(ch);
+        
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return (offset >= 0) ? m_data_[offset] : m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    */
+    public final char getLeadValue(char ch)
+    {
+       return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    */
+    public final char getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    */
+    public final char getSurrogateValue(char lead, char trail)
+    {
+        int offset = getSurrogateOffset(lead, trail);
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+        return m_initialValue_;
+    }
+
+    /**
+    * <p>Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.</p>
+    * <p>If the 
+    * @param leadvalue value associated with the lead surrogate which contains
+    *        the folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    */
+    public final char getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+            return m_data_[getRawOffset(offset, 
+                                        (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+    /**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final char getLatin1LinearValue(char ch) 
+    {
+        return m_data_[INDEX_STAGE_3_MASK_ + 1 + m_dataOffset_ + ch];
+    }
+    
+    /**
+     * Checks if the argument Trie has the same data as this Trie
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        boolean result = super.equals(other);
+        if (result && other instanceof CharTrie) {
+            CharTrie othertrie = (CharTrie)other;
+            return m_initialValue_ == othertrie.m_initialValue_;
+        }
+        return false;
+    }
+    ///CLOVER:ON
+
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        int indexDataLength = m_dataOffset_ + m_dataLength_;
+        m_index_ = new char[indexDataLength];
+        for (int i = 0; i < indexDataLength; i ++) {
+            m_index_[i] = input.readChar();
+        }
+        m_data_           = m_index_;
+        m_initialValue_   = m_data_[m_dataOffset_];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in TrieIterator.
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.impl.TrieIterator
+    */
+    protected final int getValue(int index)
+    {
+        return m_data_[index];
+    }
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+  
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private char m_initialValue_;
+    /**
+    * Array of char data
+    */
+    private char m_data_[];
+    /**
+     * Agent for friends
+     */
+    private FriendAgent m_friendAgent_;
+}
diff --git a/src/com/ibm/icu/impl/CharacterIteratorWrapper.java b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
new file mode 100644
index 0000000..34c4a57
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This class is a wrapper around CharacterIterator and implements the 
+ * UCharacterIterator protocol
+ * @author ram
+ */
+
+public class CharacterIteratorWrapper extends UCharacterIterator {
+    
+    private CharacterIterator iterator;
+    
+    
+    public CharacterIteratorWrapper(CharacterIterator iter){
+        if(iter==null){
+            throw new IllegalArgumentException();
+        }
+        iterator     = iter;   
+    }
+
+    /**
+     * @see UCharacterIterator#current()
+     */
+    public int current() {
+        int c = iterator.current();
+        if(c==CharacterIterator.DONE){
+          return DONE;
+        }
+        return c;
+    }
+
+    /**
+     * @see UCharacterIterator#getLength()
+     */
+    public int getLength() {
+        return (iterator.getEndIndex() - iterator.getBeginIndex());
+    }
+
+    /**
+     * @see UCharacterIterator#getIndex()
+     */
+    public int getIndex() {
+        return iterator.getIndex();
+    }
+
+    /**
+     * @see UCharacterIterator#next()
+     */
+    public int next() {
+        int i = iterator.current();
+        iterator.next();
+        if(i==CharacterIterator.DONE){  
+          return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#previous()
+     */
+    public int previous() {
+        int i = iterator.previous();
+        if(i==CharacterIterator.DONE){
+            return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#setIndex(int)
+     */
+    public void setIndex(int index) {
+        try{
+            iterator.setIndex(index);
+        }catch(IllegalArgumentException e){
+            throw new IndexOutOfBoundsException();
+        }
+    }
+
+    /**
+     * @see UCharacterIterator#setToLimit()
+     */
+    public void setToLimit() {
+        iterator.setIndex(iterator.getEndIndex());
+    }
+
+    /**
+     * @see UCharacterIterator#getText(char[])
+     */
+    public int getText(char[] fillIn, int offset){
+        int length =iterator.getEndIndex() - iterator.getBeginIndex(); 
+        int currentIndex = iterator.getIndex();
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+    
+        for (char ch = iterator.first(); ch != CharacterIterator.DONE; ch = iterator.next()) {
+            fillIn[offset++] = ch;
+        }
+        iterator.setIndex(currentIndex);
+
+        return length;
+    }
+
+    /**
+     * Creates a clone of this iterator.  Clones the underlying character iterator.
+     * @see UCharacterIterator#clone()
+     */
+    public Object clone(){
+        try {
+            CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone();
+            result.iterator = (CharacterIterator)this.iterator.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+        }
+    }
+    
+
+    public int moveIndex(int delta){
+        int length = iterator.getEndIndex() - iterator.getBeginIndex(); 
+        int idx = iterator.getIndex()+delta;
+        
+        if(idx < 0) {
+            idx = 0;
+        } else if(idx > length) {
+            idx = length;
+        }
+        return iterator.setIndex(idx);
+    }
+    
+    /**
+     * @see UCharacterIterator#getCharacterIterator()
+     */
+    public CharacterIterator getCharacterIterator(){
+        return (CharacterIterator)iterator.clone();
+    } 
+}
diff --git a/src/com/ibm/icu/impl/CollectionUtilities.java b/src/com/ibm/icu/impl/CollectionUtilities.java
new file mode 100644
index 0000000..a5783da
--- /dev/null
+++ b/src/com/ibm/icu/impl/CollectionUtilities.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google Inc, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Comparator;
+
+/**
+ * @author markdavis
+ *
+ */
+public class CollectionUtilities {
+    
+    public static class MultiComparator implements Comparator {
+        private Comparator[] comparators;
+    
+        public MultiComparator (Comparator[] comparators) {
+            this.comparators = comparators;
+        }
+    
+        /* Lexigraphic compare. Returns the first difference
+         * @return zero if equal. Otherwise +/- (i+1) 
+         * where i is the index of the first comparator finding a difference
+         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+         */
+        public int compare(Object arg0, Object arg1) {
+            for (int i = 0; i < comparators.length; ++i) {
+                int result = comparators[i].compare(arg0, arg1);
+                if (result == 0) continue;
+                if (result > 0) return i+1;
+                return -(i+1);
+            }
+            return 0;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/DateNumberFormat.java b/src/com/ibm/icu/impl/DateNumberFormat.java
new file mode 100644
index 0000000..63fc8e7
--- /dev/null
+++ b/src/com/ibm/icu/impl/DateNumberFormat.java
@@ -0,0 +1,213 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/*
+ * NumberFormat implementation dedicated/optimized for DateFormat,
+ * used by SimpleDateFormat implementation.
+ */
+public final class DateNumberFormat extends NumberFormat {
+
+    private static final long serialVersionUID = -6315692826916346953L;
+
+    private char zeroDigit;
+    private char minusSign;
+    private boolean positiveOnly = false;
+
+    private transient char[] decimalBuf = new char[20]; // 20 digits is good enough to store Long.MAX_VALUE
+
+    private static SimpleCache CACHE = new SimpleCache();
+
+    private int maxIntDigits;
+    private int minIntDigits;
+ 
+    public DateNumberFormat(ULocale loc) {
+        initialize(loc);
+    }
+
+/*    public DateNumberFormat(char zeroDigit, char minusSign) {
+        this.zeroDigit = zeroDigit;
+        this.minusSign = minusSign;
+    }
+*/
+
+    private void initialize(ULocale loc) {
+        char[] elems = (char[])CACHE.get(loc);
+        if (elems == null) {
+            // Missed cache
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc);
+            String[] numberElements = rb.getStringArray("NumberElements");
+            elems = new char[2];
+            elems[0] = numberElements[4].charAt(0);
+            elems[1] = numberElements[6].charAt(0);
+            CACHE.put(loc, elems);
+        }
+        zeroDigit = elems[0];
+        minusSign = elems[1];
+    }
+
+    public void setMaximumIntegerDigits(int newValue) {
+        maxIntDigits = newValue;
+    }
+
+    public int getMaximumIntegerDigits() {
+        return maxIntDigits;
+    }
+
+    public void setMinimumIntegerDigits(int newValue) {
+        minIntDigits = newValue;
+    }
+
+    public int getMinimumIntegerDigits() {
+        return minIntDigits;
+    }
+
+    /* For supporting SimpleDateFormat.parseInt */
+    public void setParsePositiveOnly(boolean isPositiveOnly) {
+        positiveOnly = isPositiveOnly;
+    }
+
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    public void setZeroDigit(char zero) {
+        zeroDigit = zero;
+    }
+
+    public StringBuffer format(double number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(double, StringBuffer, FieldPostion) is not implemented");
+    }
+
+    public StringBuffer format(long numberL, StringBuffer toAppendTo,
+            FieldPosition pos) {
+
+        if (numberL < 0) {
+            // negative
+            toAppendTo.append(minusSign);
+        }
+
+        // Note: NumberFormat used by DateFormat only uses int numbers.
+        // Remainder operation on 32bit platform using long is significantly slower
+        // than int.  So, this method casts long number into int.
+        int number = (int)numberL;
+
+        int limit = decimalBuf.length < maxIntDigits ? decimalBuf.length : maxIntDigits;
+        int index = limit - 1;
+        while (true) {
+            decimalBuf[index] = (char)((number % 10) + zeroDigit);
+            number /= 10;
+            if (index == 0 || number == 0) {
+                break;
+            }
+            index--;
+        }
+        int padding = minIntDigits - (limit - index);
+        for (; padding > 0; padding--) {
+            decimalBuf[--index] = zeroDigit;
+        }
+        int length = limit - index;
+        toAppendTo.append(decimalBuf, index, length);
+        pos.setBeginIndex(0);
+        if (pos.getField() == NumberFormat.INTEGER_FIELD) {
+            pos.setEndIndex(length);
+        } else {
+            pos.setEndIndex(0);
+        }
+        return toAppendTo;
+    }
+    
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigInteger, StringBuffer, FieldPostion) is not implemented");
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigDecimal, StringBuffer, FieldPostion) is not implemented");
+    }
+//#endif
+
+    public StringBuffer format(BigDecimal number,
+            StringBuffer toAppendTo, FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigDecimal, StringBuffer, FieldPostion) is not implemented");
+    }
+
+    /*
+     * Note: This method only parse integer numbers which can be represented by long
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        long num = 0;
+        boolean sawNumber = false;
+        boolean negative = false;
+        int base = parsePosition.getIndex();
+        int offset = 0;
+        for (; base + offset < text.length(); offset++) {
+            char ch = text.charAt(base + offset);
+            if (offset == 0 && ch == minusSign) {
+                if (positiveOnly) {
+                    break;
+                }
+                negative = true;
+            } else {
+                int digit = ch - zeroDigit;
+                if (digit < 0 || 9 < digit) {
+                    digit = UCharacter.digit(ch);
+                }
+                if (0 <= digit && digit <= 9) {
+                    sawNumber = true;
+                    num = num * 10 + digit;
+                } else {
+                    break;
+                }
+            }
+        }
+        Number result = null;
+        if (sawNumber) {
+            num = negative ? num * (-1) : num;
+            result = new Long(num);
+            parsePosition.setIndex(base + offset);
+        }
+        return result;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj == null || !super.equals(obj) || !(obj instanceof DateNumberFormat)) {
+            return false;
+        }
+        DateNumberFormat other = (DateNumberFormat)obj;
+        return (this.maxIntDigits == other.maxIntDigits
+                && this.minIntDigits == other.minIntDigits
+                && this.zeroDigit == other.zeroDigit
+                && this.minusSign == other.minusSign
+                && this.positiveOnly == other.positiveOnly);
+    }
+
+    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        // re-allocate the work buffer
+        decimalBuf = new char[20];
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/impl/Grego.java b/src/com/ibm/icu/impl/Grego.java
new file mode 100644
index 0000000..e5fbacc
--- /dev/null
+++ b/src/com/ibm/icu/impl/Grego.java
@@ -0,0 +1,213 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *******************************************************************************
+ * Partial port from ICU4C's Grego class in i18n/gregoimp.h.
+ *
+ * Methods ported, or moved here from OlsonTimeZone, initially
+ * for work on Jitterbug 5470:
+ *   tzdata2006n Brazil incorrect fall-back date 2009-mar-01
+ * Only the methods necessary for that work are provided - this is not a full
+ * port of ICU4C's Grego class (yet).
+ *
+ * These utilities are used by both OlsonTimeZone and SimpleTimeZone.
+ */
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.Calendar;
+
+/**
+ * A utility class providing proleptic Gregorian calendar functions
+ * used by time zone and calendar code.  Do not instantiate.
+ *
+ * Note:  Unlike GregorianCalendar, all computations performed by this
+ * class occur in the pure proleptic GregorianCalendar.
+ */
+public class Grego {
+
+    // Max/min milliseconds 
+    public static final long MIN_MILLIS = -184303902528000000L;
+    public static final long MAX_MILLIS = 183882168921600000L;
+
+    public static final int MILLIS_PER_SECOND = 1000;
+    public static final int MILLIS_PER_MINUTE = 60*MILLIS_PER_SECOND;
+    public static final int MILLIS_PER_HOUR = 60*MILLIS_PER_MINUTE;
+    public static final int MILLIS_PER_DAY = 24*MILLIS_PER_HOUR;
+    
+    //  January 1, 1 CE Gregorian
+    private static final int JULIAN_1_CE = 1721426;
+
+    //  January 1, 1970 CE Gregorian
+    private static final int JULIAN_1970_CE = 2440588;
+
+    private static final int[] MONTH_LENGTH = new int[] {
+        31,28,31,30,31,30,31,31,30,31,30,31,
+        31,29,31,30,31,30,31,31,30,31,30,31
+    };
+
+    private static final int[] DAYS_BEFORE = new int[] {
+        0,31,59,90,120,151,181,212,243,273,304,334,
+        0,31,60,91,121,152,182,213,244,274,305,335 };
+
+    /**
+     * Return true if the given year is a leap year.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @return true if the year is a leap year
+     */
+    public static final boolean isLeapYear(int year) {
+        // year&0x3 == year%4
+        return ((year&0x3) == 0) && ((year%100 != 0) || (year%400 == 0));
+    }
+
+    /**
+     * Return the number of days in the given month.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @return the number of days in the given month
+     */
+    public static final int monthLength(int year, int month) {
+        return MONTH_LENGTH[month + (isLeapYear(year) ? 12 : 0)];
+    }
+
+    /**
+     * Return the length of a previous month of the Gregorian calendar.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @return the number of days in the month previous to the given month
+     */
+    public static final int previousMonthLength(int year, int month) {
+        return (month > 0) ? monthLength(year, month-1) : 31;
+    }
+
+    /**
+     * Convert a year, month, and day-of-month, given in the proleptic
+     * Gregorian calendar, to 1970 epoch days.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @param dom 1-based day of month
+     * @return the day number, with day 0 == Jan 1 1970
+     */
+    public static long fieldsToDay(int year, int month, int dom) {
+        int y = year - 1;
+        long julian =
+            365 * y + floorDivide(y, 4) + (JULIAN_1_CE - 3) +    // Julian cal
+            floorDivide(y, 400) - floorDivide(y, 100) + 2 +   // => Gregorian cal
+            DAYS_BEFORE[month + (isLeapYear(year) ? 12 : 0)] + dom; // => month/dom
+        return julian - JULIAN_1970_CE; // JD => epoch day
+    }
+
+    /**
+     * Return the day of week on the 1970-epoch day
+     * @param day the 1970-epoch day (integral value)
+     * @return the day of week
+     */
+    public static int dayOfWeek(long day) {
+        long[] remainder = new long[1];
+        floorDivide(day + Calendar.THURSDAY, 7, remainder);
+        int dayOfWeek = (int)remainder[0];
+        dayOfWeek = (dayOfWeek == 0) ? 7 : dayOfWeek;
+        return dayOfWeek;
+    }
+
+    public static int[] dayToFields(long day, int[] fields) {
+        if (fields == null || fields.length < 5) {
+            fields = new int[5];
+        }
+        // Convert from 1970 CE epoch to 1 CE epoch (Gregorian calendar)
+        day += JULIAN_1970_CE - JULIAN_1_CE;
+
+        long[] rem = new long[1];
+        long n400 = floorDivide(day, 146097, rem);
+        long n100 = floorDivide(rem[0], 36524, rem);
+        long n4 = floorDivide(rem[0], 1461, rem);
+        long n1 = floorDivide(rem[0], 365, rem);
+
+        int year = (int)(400 * n400 + 100 * n100 + 4 * n4 + n1);
+        int dayOfYear = (int)rem[0];
+        if (n100 == 4 || n1 == 4) {
+            dayOfYear = 365;    // Dec 31 at end of 4- or 400-yr cycle
+        }
+        else {
+            ++year;
+        }
+
+        boolean isLeap = isLeapYear(year);
+        int correction = 0;
+        int march1 = isLeap ? 60 : 59;  // zero-based DOY for March 1
+        if (dayOfYear >= march1) {
+            correction = isLeap ? 1 : 2;
+        }
+        int month = (12 * (dayOfYear + correction) + 6) / 367;  // zero-based month
+        int dayOfMonth = dayOfYear - DAYS_BEFORE[isLeap ? month + 12 : month] + 1; // one-based DOM
+        int dayOfWeek = (int)((day + 2) % 7);  // day 0 is Monday(2)
+        if (dayOfWeek < 1 /* Sunday */) {
+            dayOfWeek += 7;
+        }
+        dayOfYear++; // 1-based day of year
+
+        fields[0] = year;
+        fields[1] = month;
+        fields[2] = dayOfMonth;
+        fields[3] = dayOfWeek;
+        fields[4] = dayOfYear;
+
+        return fields;
+    }
+
+    /*
+     * Convert long time to date/time fields
+     * 
+     * result[0] : year
+     * result[1] : month
+     * result[2] : dayOfMonth
+     * result[3] : dayOfWeek
+     * result[4] : dayOfYear
+     * result[5] : millisecond in day
+     */
+    public static int[] timeToFields(long time, int[] fields) {
+        if (fields == null || fields.length < 6) {
+            fields = new int[6];
+        }
+        long[] remainder = new long[1];
+        long day = floorDivide(time, 24*60*60*1000 /* milliseconds per day */, remainder);
+        dayToFields(day, fields);
+        fields[5] = (int)remainder[0];
+        return fields;
+    }
+
+    public static long floorDivide(long numerator, long denominator) {
+        // We do this computation in order to handle
+        // a numerator of Long.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    private static long floorDivide(long numerator, long denominator, long[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = numerator % denominator;
+            return numerator / denominator;
+        }
+        long quotient = ((numerator + 1) / denominator) - 1;
+        remainder[0] = numerator - (quotient * denominator);
+        return quotient;
+    }
+
+    /*
+     * Returns the ordinal number for the specified day of week in the month.
+     * The valid return value is 1, 2, 3, 4 or -1.
+     */
+    public static int getDayOfWeekInMonth(int year, int month, int dayOfMonth) {
+        int weekInMonth = (dayOfMonth + 6)/7;
+        if (weekInMonth == 4) {
+            if (dayOfMonth + 7 > monthLength(year, month)) {
+                weekInMonth = -1;
+            }
+        } else if (weekInMonth == 5) {
+            weekInMonth = -1;
+        }
+        return weekInMonth;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUBinary.java b/src/com/ibm/icu/impl/ICUBinary.java
new file mode 100644
index 0000000..72f9cc4
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUBinary.java
@@ -0,0 +1,157 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+public final class ICUBinary 
+{    
+    // public inner interface ------------------------------------------------
+    
+    /**
+     * Special interface for data authentication
+     */
+    public static interface Authenticate
+    {
+        /**
+         * Method used in ICUBinary.readHeader() to provide data format
+         * authentication. 
+         * @param version version of the current data
+         * @return true if dataformat is an acceptable version, false otherwise
+         */
+        public boolean isDataVersionAcceptable(byte version[]);
+    }
+    
+    // public methods --------------------------------------------------------
+    
+    /**
+    * <p>ICU data header reader method. 
+    * Takes a ICU generated big-endian input stream, parse the ICU standard 
+    * file header and authenticates them.</p>
+    * <p>Header format: 
+    * <ul>
+    *     <li> Header size (char)
+    *     <li> Magic number 1 (byte)
+    *     <li> Magic number 2 (byte)
+    *     <li> Rest of the header size (char)
+    *     <li> Reserved word (char)
+    *     <li> Big endian indicator (byte)
+    *     <li> Character set family indicator (byte)
+    *     <li> Size of a char (byte) for c++ and c use
+    *     <li> Reserved byte (byte)
+    *     <li> Data format identifier (4 bytes), each ICU data has its own
+    *          identifier to distinguish them. [0] major [1] minor 
+    *                                          [2] milli [3] micro 
+    *     <li> Data version (4 bytes), the change version of the ICU data
+    *                             [0] major [1] minor [2] milli [3] micro 
+    *     <li> Unicode version (4 bytes) this ICU is based on.
+    * </ul>
+    * </p>
+    * <p>
+    * Example of use:<br>
+    * <pre>
+    * try {
+    *    FileInputStream input = new FileInputStream(filename);
+    *    If (Utility.readICUDataHeader(input, dataformat, dataversion, 
+    *                                  unicode) {
+    *        System.out.println("Verified file header, this is a ICU data file");
+    *    }
+    * } catch (IOException e) {
+    *    System.out.println("This is not a ICU data file");
+    * }
+    * </pre>
+    * </p>
+    * @param inputStream input stream that contains the ICU data header
+    * @param dataFormatIDExpected Data format expected. An array of 4 bytes 
+    *                     information about the data format.
+    *                     E.g. data format ID 1.2.3.4. will became an array of 
+    *                     {1, 2, 3, 4}
+    * @param authenticate user defined extra data authentication. This value
+    *                     can be null, if no extra authentication is needed.
+    * @exception IOException thrown if there is a read error or 
+    *            when header authentication fails.
+    */
+    public static final byte[] readHeader(InputStream inputStream,
+                                        byte dataFormatIDExpected[],
+                                        Authenticate authenticate) 
+                                                          throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        char headersize = input.readChar();
+        int readcount = 2;
+        //reading the header format
+        byte magic1 = input.readByte();
+        readcount ++;
+        byte magic2 = input.readByte();
+        readcount ++;
+        if (magic1 != MAGIC1 || magic2 != MAGIC2) {
+            throw new IOException(MAGIC_NUMBER_AUTHENTICATION_FAILED_);
+        }
+        
+        input.readChar(); // reading size
+        readcount += 2;
+        input.readChar(); // reading reserved word
+        readcount += 2;
+        byte bigendian    = input.readByte();
+        readcount ++;
+        byte charset      = input.readByte();
+        readcount ++;
+        byte charsize     = input.readByte();
+        readcount ++;
+        input.readByte(); // reading reserved byte
+        readcount ++;
+                
+        byte dataFormatID[] = new byte[4];
+        input.readFully(dataFormatID);
+        readcount += 4;
+        byte dataVersion[] = new byte[4];
+        input.readFully(dataVersion);
+        readcount += 4;
+        byte unicodeVersion[] = new byte[4];
+        input.readFully(unicodeVersion);
+        readcount += 4;
+        if (headersize < readcount) {
+            throw new IOException("Internal Error: Header size error");
+        }
+        input.skipBytes(headersize - readcount);
+
+        if (bigendian != BIG_ENDIAN_ || charset != CHAR_SET_
+            || charsize != CHAR_SIZE_
+            || !Arrays.equals(dataFormatIDExpected, dataFormatID)
+            || (authenticate != null 
+                && !authenticate.isDataVersionAcceptable(dataVersion))) {
+            throw new IOException(HEADER_AUTHENTICATION_FAILED_);
+        }
+        return unicodeVersion;
+    }
+     
+    // private variables -------------------------------------------------
+  
+    /**
+    * Magic numbers to authenticate the data file
+    */
+    private static final byte MAGIC1 = (byte)0xda;
+    private static final byte MAGIC2 = (byte)0x27;
+      
+    /**
+    * File format authentication values
+    */
+    private static final byte BIG_ENDIAN_ = 1;
+    private static final byte CHAR_SET_ = 0;
+    private static final byte CHAR_SIZE_ = 2;
+                                                    
+    /**
+    * Error messages
+    */
+    private static final String MAGIC_NUMBER_AUTHENTICATION_FAILED_ = 
+                       "ICU data file error: Not an ICU data file";
+    private static final String HEADER_AUTHENTICATION_FAILED_ =
+        "ICU data file error: Header authentication failed, please check if you have a valid ICU data file";
+}
diff --git a/src/com/ibm/icu/impl/ICUBinaryStream.java b/src/com/ibm/icu/impl/ICUBinaryStream.java
new file mode 100644
index 0000000..ad49251
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUBinaryStream.java
@@ -0,0 +1,59 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 5 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.*;
+
+/**
+ * A DataInputStream that implements random-access seeking.  For this
+ * to work, the size of the data stream must be known in advance, or
+ * the data must be supplied as a raw byte[] array.
+ *
+ * Seeking doesn't work directly on all streams.  If a given stream
+ * doesn't support seeking, extract the bytes into a byte[] array and
+ * use the byte[] constructor.
+ */
+class ICUBinaryStream extends DataInputStream {
+
+    /**
+     * Construct a stream from the given stream and size.
+     * @param stream the stream of data
+     * @param size the number of bytes that should be made available
+     * for seeking.  Bytes beyond this may be read, but seeking will
+     * not work for offset >= size.
+     */
+    public ICUBinaryStream(InputStream stream, int size) {
+        super(stream);
+        mark(size);
+    }
+
+    /**
+     * Construct a stream from the given raw bytes.
+     */
+    public ICUBinaryStream(byte[] raw) {
+        this(new ByteArrayInputStream(raw), raw.length);
+    }
+
+    /**
+     * Seek to the given offset.  Offset is from the position of the
+     * stream passed to the constructor, or from the start of the
+     * byte[] array.
+     */
+    public void seek(int offset) throws IOException {
+        reset();
+        int actual = skipBytes(offset);
+        if (actual != offset) {
+            throw new IllegalStateException("Skip(" + offset + ") only skipped " +
+                                       actual + " bytes");
+        }
+        if (false) System.out.println("(seek " + offset + ")");
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUCache.java b/src/com/ibm/icu/impl/ICUCache.java
new file mode 100644
index 0000000..cf4d476
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUCache.java
@@ -0,0 +1,21 @@
+/*
+ ***************************************************************************
+ * Copyright (c) 2007-2008 International Business Machines Corporation and *
+ * others.  All rights reserved.                                           *
+ ***************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+public interface ICUCache {
+    // Type of reference holding the Map instance
+    public static final int SOFT = 0;
+    public static final int WEAK = 1;
+
+    // NULL object, which may be used for a cache key
+    public static final Object NULL = new Object();
+
+    public void clear();
+    public void put(Object key, Object value);
+    public Object get(Object key);
+}
diff --git a/src/com/ibm/icu/impl/ICUConfig.java b/src/com/ibm/icu/impl/ICUConfig.java
new file mode 100644
index 0000000..4b3051f
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUConfig.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+import java.util.Properties;
+
+/**
+ * ICUConfig is a class used for accessing ICU4J runtime configuration.
+ */
+public class ICUConfig {
+    public static final String CONFIG_PROPS_FILE = "/com/ibm/icu/ICUConfig.properties";
+    private static final Properties CONFIG_PROPS;
+
+    static {
+        CONFIG_PROPS = new Properties();
+        try {
+            InputStream is = ICUData.getStream(CONFIG_PROPS_FILE);
+            if (is != null) {
+                CONFIG_PROPS.load(is);
+            }
+        } catch (MissingResourceException mre) {
+            // If it does not exist, ignore.
+        } catch (IOException ioe) {
+            // Any IO errors, ignore
+        }
+    }
+
+    /**
+     * Get ICU configuration property value for the given name.
+     * @param name The configuration property name
+     * @return The configuration property value, or null if it does not exist.
+     */
+    public static String get(String name) {
+        return get(name, null);
+    }
+
+    /**
+     * Get ICU configuration property value for the given name.
+     * @param name The configuration property name
+     * @param def The default value
+     * @return The configuration property value.  If the property does not
+     * exist, <code>def</code> is returned.
+     */
+    public static String get(String name, String def) {
+        String val = null;
+        // Try the system property first
+        try {
+            val = System.getProperty(name);
+        } catch (SecurityException e) {
+            // Ignore and fall through
+        }
+
+        if (val == null) {
+            val = CONFIG_PROPS.getProperty(name, def);
+        }
+        return val;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUData.java b/src/com/ibm/icu/impl/ICUData.java
new file mode 100644
index 0000000..5cb1cf1
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUData.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Feb 4, 2004
+ *
+ */
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.MissingResourceException;
+
+/**
+ * Provides access to ICU data files as InputStreams.  Implements security checking.
+ */
+public final class ICUData {
+    /*
+     * Return a URL to the ICU resource names resourceName.  The
+     * resource name should either be an absolute path, or a path relative to
+     * com.ibm.icu.impl (e.g., most likely it is 'data/foo').  If required
+     * is true, throw an MissingResourceException instead of returning a null result.
+     */
+    public static boolean exists(final String resourceName) {
+        URL i = null;
+        if (System.getSecurityManager() != null) {
+            i = (URL)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return ICUData.class.getResource(resourceName);
+                    }
+                });
+        } else {
+            i = ICUData.class.getResource(resourceName);
+        }
+        return i != null;
+    }
+        
+    private static InputStream getStream(final Class root, final String resourceName, boolean required) {
+        InputStream i = null;
+        
+        if (System.getSecurityManager() != null) {
+            i = (InputStream)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return root.getResourceAsStream(resourceName);
+                    }
+                });
+        } else {
+            i = root.getResourceAsStream(resourceName);
+        }
+
+        if (i == null && required) {
+            throw new MissingResourceException("could not locate data " +resourceName, root.getPackage().getName(), resourceName);
+        }
+        return i;
+    }
+
+    private static InputStream getStream(final ClassLoader loader, final String resourceName, boolean required) {
+        InputStream i = null;
+        if (System.getSecurityManager() != null) {
+            i = (InputStream)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return loader.getResourceAsStream(resourceName);
+                    }
+                });
+        } else {
+            i = loader.getResourceAsStream(resourceName);
+        }
+        if (i == null && required) {
+            throw new MissingResourceException("could not locate data", loader.toString(), resourceName);
+        }
+        return i;
+    }
+    
+    public static InputStream getStream(ClassLoader loader, String resourceName){
+        return getStream(loader,resourceName, false);   
+    }
+
+    public static InputStream getRequiredStream(ClassLoader loader, String resourceName){
+        return getStream(loader, resourceName, true);
+    }
+
+    /*
+     * Convenience override that calls getStream(ICUData.class, resourceName, false);
+     */
+    public static InputStream getStream(String resourceName) {
+        return getStream(ICUData.class, resourceName, false);
+    }
+        
+    /*
+     * Convenience method that calls getStream(ICUData.class, resourceName, true).
+     */
+    public static InputStream getRequiredStream(String resourceName) {
+        return getStream(ICUData.class, resourceName, true);
+    }
+
+    /*
+     * Convenience override that calls getStream(root, resourceName, false);
+     */
+    public static InputStream getStream(Class root, String resourceName) {
+        return getStream(root, resourceName, false);
+    }
+    
+    /*
+     * Convenience method that calls getStream(root, resourceName, true).
+     */
+    public static InputStream getRequiredStream(Class root, String resourceName) {
+        return getStream(root, resourceName, true);
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/ICUDebug.java b/src/com/ibm/icu/impl/ICUDebug.java
new file mode 100644
index 0000000..3b5fd90
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUDebug.java
@@ -0,0 +1,123 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.VersionInfo;
+
+public final class ICUDebug {
+    private static String params;
+    static {
+        try {
+            params = System.getProperty("ICUDebug");
+        }
+        catch (SecurityException e) {
+        }
+    }
+    private static boolean debug = params != null;
+    private static boolean help = debug && (params.equals("") || params.indexOf("help") != -1);
+
+    static {
+        if (debug) {
+            System.out.println("\nICUDebug=" + params);
+        }
+    }
+
+    public static final String javaVersionString = System.getProperty("java.version");
+    public static final boolean isJDK14OrHigher;
+    public static final VersionInfo javaVersion;
+
+    public static VersionInfo getInstanceLenient(String s) {
+        // clean string
+        // preserve only digits, separated by single '.' 
+        // ignore over 4 digit sequences
+        // does not test < 255, very odd...
+
+        char[] chars = s.toCharArray();
+        int r = 0, w = 0, count = 0;
+        boolean numeric = false; // ignore leading non-numerics
+        while (r < chars.length) {
+            char c = chars[r++];
+            if (c < '0' || c > '9') {
+                if (numeric) {
+                    if (count == 3) {
+                        // only four digit strings allowed
+                        break;
+                    }
+                    numeric = false;
+                    chars[w++] = '.';
+                    ++count;
+                }
+            } else {
+                numeric = true;
+                chars[w++] = c;
+            }
+        }
+        while (w > 0 && chars[w-1] == '.') {
+            --w;
+        }
+    
+        String vs = new String(chars, 0, w);
+
+        return VersionInfo.getInstance(vs);
+    }
+
+    static {
+        javaVersion = getInstanceLenient(javaVersionString);
+
+        VersionInfo java14Version = VersionInfo.getInstance("1.4.0");
+
+        isJDK14OrHigher = javaVersion.compareTo(java14Version) >= 0;
+    }
+
+    public static boolean enabled() {
+        return debug;
+    }
+
+    public static boolean enabled(String arg) {
+        if (debug) {
+            boolean result = params.indexOf(arg) != -1;
+            if (help) System.out.println("\nICUDebug.enabled(" + arg + ") = " + result);
+            return result;
+        }
+        return false;
+    }
+
+    public static String value(String arg) {
+        String result = "false";
+        if (debug) {
+            int index = params.indexOf(arg);
+            if (index != -1) {
+                index += arg.length();
+                if (params.length() > index && params.charAt(index) == '=') {
+                    index += 1;
+                    int limit = params.indexOf(",", index);
+                    result = params.substring(index, limit == -1 ? params.length() : limit);
+                } else {
+                    result = "true";
+                }
+            }
+
+            if (help) System.out.println("\nICUDebug.value(" + arg + ") = " + result);
+        }
+        return result;
+    }
+
+/*    static public void main(String[] args) {
+        // test
+        String[] tests = {
+            "1.3.0",
+            "1.3.0_02",
+            "1.3.1ea",
+            "1.4.1b43",
+            "___41___5",
+            "x1.4.51xx89ea.7f"
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            System.out.println(tests[i] + " => " + getInstanceLenient(tests[i]));
+        }
+    }*/
+}
diff --git a/src/com/ibm/icu/impl/ICULocaleService.java b/src/com/ibm/icu/impl/ICULocaleService.java
new file mode 100644
index 0000000..9aadcff
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICULocaleService.java
@@ -0,0 +1,614 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.util.ULocale;
+
+public class ICULocaleService extends ICUService {
+    private ULocale fallbackLocale;
+    private String fallbackLocaleName;
+
+    /**
+     * Construct an ICULocaleService.
+     */
+    public ICULocaleService() {
+    }
+
+    /**
+     * Construct an ICULocaleService with a name (useful for debugging).
+     */
+    public ICULocaleService(String name) {
+        super(name);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with KIND_ANY for kind and null for
+     * actualReturn.
+     */
+    public Object get(ULocale locale) {
+        return get(locale, LocaleKey.KIND_ANY, null);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with a null actualReturn.
+     */
+    public Object get(ULocale locale, int kind) {
+        return get(locale, kind, null);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with KIND_ANY for kind.
+     */
+    public Object get(ULocale locale, ULocale[] actualReturn) {
+        return get(locale, LocaleKey.KIND_ANY, actualReturn);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This uses
+     * createKey(ULocale.toString(), kind) to create a key, calls getKey, and then
+     * if actualReturn is not null, returns the actualResult from
+     * getKey (stripping any prefix) into a ULocale.  
+     */
+    public Object get(ULocale locale, int kind, ULocale[] actualReturn) {
+        Key key = createKey(locale, kind);
+        if (actualReturn == null) {
+            return getKey(key);
+        }
+
+        String[] temp = new String[1];
+        Object result = getKey(key, temp);
+        if (result != null) {
+            int n = temp[0].indexOf("/");
+            if (n >= 0) {
+                temp[0] = temp[0].substring(n+1);
+            }
+            actualReturn[0] = new ULocale(temp[0]);
+        }
+        return result;
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing KIND_ANY for the kind, and true for the visibility.
+     */
+    public Factory registerObject(Object obj, ULocale locale) {
+        return registerObject(obj, locale, LocaleKey.KIND_ANY, true);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing KIND_ANY for the kind.
+     */
+    public Factory registerObject(Object obj, ULocale locale, boolean visible) {
+        return registerObject(obj, locale, LocaleKey.KIND_ANY, visible);
+    }
+
+    /**
+     * Convenience function for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing true for the visibility.
+     */
+    public Factory registerObject(Object obj, ULocale locale, int kind) {
+        return registerObject(obj, locale, kind, true);
+    }
+
+    /**
+     * Convenience function for callers using locales.  This  instantiates
+     * a SimpleLocaleKeyFactory, and registers the factory.
+     */
+    public Factory registerObject(Object obj, ULocale locale, int kind, boolean visible) {
+        Factory factory = new SimpleLocaleKeyFactory(obj, locale, kind, visible);
+        return registerFactory(factory);
+    }
+
+    /**
+     * Convenience method for callers using locales.  This returns the standard
+     * Locale list, built from the Set of visible ids.
+     */
+    public Locale[] getAvailableLocales() {
+        // TODO make this wrap getAvailableULocales later
+        Set visIDs = getVisibleIDs();
+        Iterator iter = visIDs.iterator();
+        Locale[] locales = new Locale[visIDs.size()];
+        int n = 0;
+        while (iter.hasNext()) {
+            Locale loc = LocaleUtility.getLocaleFromName((String)iter.next());
+            locales[n++] = loc;
+        }
+        return locales;
+    }
+
+    /**
+     * Convenience method for callers using locales.  This returns the standard
+     * ULocale list, built from the Set of visible ids.
+     */
+    public ULocale[] getAvailableULocales() {
+        Set visIDs = getVisibleIDs();
+        Iterator iter = visIDs.iterator();
+        ULocale[] locales = new ULocale[visIDs.size()];
+        int n = 0;
+        while (iter.hasNext()) {
+            locales[n++] = new ULocale((String)iter.next());
+        }
+        return locales;
+    }
+        
+    /**
+     * A subclass of Key that implements a locale fallback mechanism.
+     * The first locale to search for is the locale provided by the
+     * client, and the fallback locale to search for is the current
+     * default locale.  If a prefix is present, the currentDescriptor
+     * includes it before the locale proper, separated by "/".  This
+     * is the default key instantiated by ICULocaleService.</p>
+     *
+     * <p>Canonicalization adjusts the locale string so that the
+     * section before the first understore is in lower case, and the rest
+     * is in upper case, with no trailing underscores.</p> 
+     */
+    public static class LocaleKey extends ICUService.Key {
+        private int kind;
+        private int varstart;
+        private String primaryID;
+        private String fallbackID;
+        private String currentID;
+
+        public static final int KIND_ANY = -1;
+
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonicalFallback(String primaryID, String canonicalFallbackID) {
+            return createWithCanonicalFallback(primaryID, canonicalFallbackID, KIND_ANY);
+        }
+            
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonicalFallback(String primaryID, String canonicalFallbackID, int kind) {
+            if (primaryID == null) {
+                return null;
+            }
+            if (primaryID.length() == 0) {
+                primaryID = "root";
+            }
+            String canonicalPrimaryID = ULocale.getName(primaryID);
+            return new LocaleKey(primaryID, canonicalPrimaryID, canonicalFallbackID, kind);
+        }
+            
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonical(ULocale locale, String canonicalFallbackID, int kind) {
+            if (locale == null) {
+                return null;
+            }
+            String canonicalPrimaryID = locale.getName();
+            return new LocaleKey(canonicalPrimaryID, canonicalPrimaryID, canonicalFallbackID, kind);
+        }
+            
+        /**
+         * PrimaryID is the user's requested locale string,
+         * canonicalPrimaryID is this string in canonical form,
+         * fallbackID is the current default locale's string in
+         * canonical form.
+         */
+        protected LocaleKey(String primaryID, String canonicalPrimaryID, String canonicalFallbackID, int kind) {
+            super(primaryID);
+
+            this.kind = kind;
+            if (canonicalPrimaryID == null) {
+                this.primaryID = "";
+            } else {
+                this.primaryID = canonicalPrimaryID;
+                this.varstart = this.primaryID.indexOf('@');
+            }
+            if (this.primaryID == "") {
+                this.fallbackID = null;
+            } else {
+                if (canonicalFallbackID == null || this.primaryID.equals(canonicalFallbackID)) {
+                    this.fallbackID = "";
+                } else {
+                    this.fallbackID = canonicalFallbackID;
+                }
+            }
+
+            this.currentID = varstart == -1 ? this.primaryID : this.primaryID.substring(0, varstart);
+        }
+
+        /**
+         * Return the prefix associated with the kind, or null if the kind is KIND_ANY.
+         */
+        public String prefix() {
+            return kind == KIND_ANY ? null : Integer.toString(kind());
+        }
+
+        /**
+         * Return the kind code associated with this key.
+         */
+        public int kind() {
+            return kind;
+        }
+
+        /**
+         * Return the (canonical) original ID.
+         */
+        public String canonicalID() {
+            return primaryID;
+        }
+
+        /**
+         * Return the (canonical) current ID, or null if no current id.
+         */
+        public String currentID() {
+            return currentID;
+        }
+
+        /**
+         * Return the (canonical) current descriptor, or null if no current id.
+         * Includes the keywords, whereas the ID does not include keywords.
+         */
+        public String currentDescriptor() {
+            String result = currentID();
+            if (result != null) {
+                StringBuffer buf = new StringBuffer(); // default capacity 16 is usually good enough
+                if (kind != KIND_ANY) {
+                    buf.append(prefix());
+                }
+                buf.append('/');
+                buf.append(result);
+                if (varstart != -1) {
+                    buf.append(primaryID.substring(varstart, primaryID.length()));
+                }
+                result = buf.toString();
+            }
+            return result;
+        }
+
+        /**
+         * Convenience method to return the locale corresponding to the (canonical) original ID.
+         */
+        public ULocale canonicalLocale() {
+            return new ULocale(primaryID);
+        }
+
+        /**
+         * Convenience method to return the ulocale corresponding to the (canonical) currentID.
+         */
+        public ULocale currentLocale() {
+            if (varstart == -1) {
+                return new ULocale(currentID);
+            } else {
+                return new ULocale(currentID + primaryID.substring(varstart));
+            }
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.</p>
+         *
+         * <p>First falls back through the primary ID, then through
+         * the fallbackID.  The final fallback is "root"
+         * unless the primary id was "root", in which case
+         * there is no fallback.  
+         */
+        public boolean fallback() {
+            int x = currentID.lastIndexOf('_');
+            if (x != -1) {
+                while (--x >= 0 && currentID.charAt(x) == '_') { // handle zh__PINYIN
+                }
+                currentID = currentID.substring(0, x+1);
+                return true;
+            }
+            if (fallbackID != null) {
+                if (fallbackID.length() == 0) {
+                    currentID = "root";
+                    fallbackID = null;
+                } else {
+                    currentID = fallbackID;
+                    fallbackID = "";
+                }
+                return true;
+            }
+            currentID = null;
+            return false;
+        }
+
+        /**
+         * If a key created from id would eventually fallback to match the 
+         * canonical ID of this key, return true.
+         */
+        public boolean isFallbackOf(String id) {
+            return LocaleUtility.isFallbackOf(canonicalID(), id);
+        }
+    }
+
+    /**
+     * A subclass of Factory that uses LocaleKeys.  If 'visible' the
+     * factory reports its IDs.
+     */
+    public static abstract class LocaleKeyFactory implements Factory {
+        protected final String name;
+        protected final boolean visible;
+
+        public static final boolean VISIBLE = true;
+        public static final boolean INVISIBLE = false;
+
+        /**
+         * Constructor used by subclasses.
+         */
+        protected LocaleKeyFactory(boolean visible) {
+            this.visible = visible;
+            this.name = null;
+        }
+
+        /**
+         * Constructor used by subclasses.
+         */
+        protected LocaleKeyFactory(boolean visible, String name) {
+            this.visible = visible;
+            this.name = name;
+        }
+
+        /**
+         * Implement superclass abstract method.  This checks the currentID of
+         * the key against the supported IDs, and passes the canonicalLocale and
+         * kind off to handleCreate (which subclasses must implement).
+         */
+        public Object create(Key key, ICUService service) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                int kind = lkey.kind();
+                
+                ULocale uloc = lkey.currentLocale();
+                return handleCreate(uloc, kind, service);
+            } else {
+                // System.out.println("factory: " + this + " did not support id: " + key.currentID());
+                // System.out.println("supported ids: " + getSupportedIDs());
+            }
+            return null;
+        }
+
+        protected boolean handlesKey(Key key) {
+            if (key != null) {
+                String id = key.currentID();
+                Set supported = getSupportedIDs();
+                return supported.contains(id);
+            }
+            return false;
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map result) {
+            Set cache = getSupportedIDs();
+            Iterator iter = cache.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                if (visible) {
+                    result.put(id, this);
+                } else {
+                    result.remove(id);
+                }
+            }
+        }
+
+        /**
+         * Return a localized name for the locale represented by id.
+         */
+        public String getDisplayName(String id, ULocale locale) {
+            // assume if the user called this on us, we must have handled some fallback of this id
+            //          if (isSupportedID(id)) {
+            if (locale == null) {
+                return id;
+            }
+            ULocale loc = new ULocale(id);
+            return loc.getDisplayName(locale);
+            //              }
+            //          return null;
+        }
+
+        ///CLOVER:OFF
+        /**
+         * Utility method used by create(Key, ICUService).  Subclasses can
+         * implement this instead of create.
+         */
+        protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return null;
+        }
+        ///CLOVER:ON
+
+        /**
+         * Return true if this id is one the factory supports (visible or 
+         * otherwise).
+         */
+        protected boolean isSupportedID(String id) {
+            return getSupportedIDs().contains(id);
+        }
+        
+        /**
+         * Return the set of ids that this factory supports (visible or 
+         * otherwise).  This can be called often and might need to be
+         * cached if it is expensive to create.
+         */
+        protected Set getSupportedIDs() {
+            return Collections.EMPTY_SET;
+        }
+
+        /**
+         * For debugging.
+         */
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            if (name != null) {
+                buf.append(", name: ");
+                buf.append(name);
+            }
+            buf.append(", visible: ");
+            buf.append(visible);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * A LocaleKeyFactory that just returns a single object for a kind/locale.
+     */
+    public static class SimpleLocaleKeyFactory extends LocaleKeyFactory {
+        private final Object obj;
+        private final String id;
+        private final int kind;
+
+        // TODO: remove when we no longer need this
+        public SimpleLocaleKeyFactory(Object obj, ULocale locale, int kind, boolean visible) {
+            this(obj, locale, kind, visible, null);
+        }
+
+        public SimpleLocaleKeyFactory(Object obj, ULocale locale, int kind, boolean visible, String name) {
+            super(visible, name);
+            
+            this.obj = obj;
+            this.id = locale.getBaseName();
+            this.kind = kind;
+        }
+
+        /**
+         * Returns the service object if kind/locale match.  Service is not used.
+         */
+        public Object create(Key key, ICUService service) {
+            LocaleKey lkey = (LocaleKey)key;
+            if (kind == LocaleKey.KIND_ANY || kind == lkey.kind()) {
+                String keyID = lkey.currentID();
+                if (id.equals(keyID)) {
+                    return obj;
+                }
+            }
+            return null;
+        }
+
+        protected boolean isSupportedID(String idToCheck) {
+            return this.id.equals(idToCheck);
+        }
+
+        public void updateVisibleIDs(Map result) {
+            if (visible) {
+                result.put(id, this);
+            } else {
+                result.remove(id);
+            }
+        }
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append(", id: ");
+            buf.append(id);
+            buf.append(", kind: ");
+            buf.append(kind);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * A LocaleKeyFactory that creates a service based on the ICU locale data.
+     * This is a base class for most ICU factories.  Subclasses instantiate it
+     * with a constructor that takes a bundle name, which determines the supported
+     * IDs.  Subclasses then override handleCreate to create the actual service
+     * object.  The default implementation returns a resource bundle.
+     */
+    public static class ICUResourceBundleFactory extends LocaleKeyFactory {
+        protected final String bundleName;
+
+        /**
+         * Convenience constructor that uses the main ICU bundle name.
+         */
+        public ICUResourceBundleFactory() {
+            this(ICUResourceBundle.ICU_BASE_NAME);
+        }
+
+        /**
+         * A service factory based on ICU resource data in resources
+         * with the given name.
+         */
+        public ICUResourceBundleFactory(String bundleName) {
+            super(true);
+
+            this.bundleName = bundleName;
+        }
+
+        /**
+         * Return the supported IDs.  This is the set of all locale names for the bundleName.
+         */
+        protected Set getSupportedIDs() {
+            // note: "root" is one of the ids, but "" is not.  Must convert ULocale.ROOT.
+            return ICUResourceBundle.getFullLocaleNameSet(bundleName); 
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map result) {
+            Set visibleIDs = ICUResourceBundle.getAvailableLocaleNameSet(bundleName); // only visible ids
+            Iterator iter = visibleIDs.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                result.put(id, this);
+            }
+        }
+
+        /**
+         * Create the service.  The default implementation returns the resource bundle
+         * for the locale, ignoring kind, and service.
+         */
+        protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return ICUResourceBundle.getBundleInstance(bundleName, loc);
+        }
+
+        public String toString() {
+            return super.toString() + ", bundle: " + bundleName;
+        }
+    }
+
+    /**
+     * Return the name of the current fallback locale.  If it has changed since this was
+     * last accessed, the service cache is cleared.
+     */
+    public String validateFallbackLocale() {
+        ULocale loc = ULocale.getDefault();
+        if (loc != fallbackLocale) {
+            synchronized (this) {
+                if (loc != fallbackLocale) {
+                    fallbackLocale = loc;
+                    fallbackLocaleName = loc.getBaseName();
+                    clearServiceCache();
+                }
+            }
+        }
+        return fallbackLocaleName;
+    }
+
+    public Key createKey(String id) {
+        return LocaleKey.createWithCanonicalFallback(id, validateFallbackLocale());
+    }
+
+    public Key createKey(String id, int kind) {
+        return LocaleKey.createWithCanonicalFallback(id, validateFallbackLocale(), kind);
+    }
+
+    public Key createKey(ULocale l, int kind) {
+        return LocaleKey.createWithCanonical(l, validateFallbackLocale(), kind);
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUNotifier.java b/src/com/ibm/icu/impl/ICUNotifier.java
new file mode 100644
index 0000000..b49b2a8
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUNotifier.java
@@ -0,0 +1,171 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * <p>Abstract implementation of a notification facility.  Clients add
+ * EventListeners with addListener and remove them with removeListener.
+ * Notifiers call notifyChanged when they wish to notify listeners.
+ * This queues the listener list on the notification thread, which
+ * eventually dequeues the list and calls notifyListener on each
+ * listener in the list.</p>
+ *
+ * <p>Subclasses override acceptsListener and notifyListener 
+ * to add type-safe notification.  AcceptsListener should return
+ * true if the listener is of the appropriate type; ICUNotifier
+ * itself will ensure the listener is non-null and that the
+ * identical listener is not already registered with the Notifier.
+ * NotifyListener should cast the listener to the appropriate 
+ * type and call the appropriate method on the listener.
+ */
+public abstract class ICUNotifier {
+    private final Object notifyLock = new Object();
+    private NotifyThread notifyThread;
+    private List listeners;
+
+    /**
+     * Add a listener to be notified when notifyChanged is called.
+     * The listener must not be null. AcceptsListener must return
+     * true for the listener.  Attempts to concurrently
+     * register the identical listener more than once will be
+     * silently ignored.  
+     */
+    public void addListener(EventListener l) {
+        if (l == null) {
+            throw new NullPointerException();
+        }
+
+        if (acceptsListener(l)) {
+            synchronized (notifyLock) {
+                if (listeners == null) {
+                    listeners = new ArrayList(5);
+                } else {
+                    // identity equality check
+                    Iterator iter = listeners.iterator();
+                    while (iter.hasNext()) {
+                        if (iter.next() == l) {
+                            return;
+                        }
+                    }
+                }
+
+                listeners.add(l);
+            }
+        } else {
+            throw new IllegalStateException("Listener invalid for this notifier.");
+        }
+    }
+
+    /**
+     * Stop notifying this listener.  The listener must
+     * not be null.  Attemps to remove a listener that is
+     * not registered will be silently ignored.
+     */
+    public void removeListener(EventListener l) {
+        if (l == null) {
+            throw new NullPointerException();
+        }
+        synchronized (notifyLock) {
+            if (listeners != null) {
+                // identity equality check
+                Iterator iter = listeners.iterator();
+                while (iter.hasNext()) {
+                    if (iter.next() == l) {
+                        iter.remove();
+                        if (listeners.size() == 0) {
+                            listeners = null;
+                        }
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Queue a notification on the notification thread for the current
+     * listeners.  When the thread unqueues the notification, notifyListener
+     * is called on each listener from the notification thread.
+     */
+    public void notifyChanged() {
+        if (listeners != null) {
+            synchronized (notifyLock) {
+                if (listeners != null) {
+                    if (notifyThread == null) {
+                        notifyThread = new NotifyThread(this);
+                        notifyThread.setDaemon(true);
+                        notifyThread.start();
+                    }
+                    notifyThread.queue(listeners.toArray());
+                }
+            }
+        }
+    }
+
+    /**
+     * The notification thread.
+     */
+    private static class NotifyThread extends Thread {
+        private final ICUNotifier notifier;
+        private final List queue = new LinkedList();
+
+        NotifyThread(ICUNotifier notifier) {
+            this.notifier = notifier;
+        }
+
+        /**
+         * Queue the notification on the thread.
+         */
+        public void queue(Object[] list) {
+            synchronized (this) {
+                queue.add(list);
+                notify();
+            }
+        }
+
+        /**
+         * Wait for a notification to be queued, then notify all
+         * listeners listed in the notification.
+         */
+        public void run() {
+            Object[] list;
+            while (true) {
+                try {
+                    synchronized (this) {
+                        while (queue.isEmpty()) {
+                            wait();
+                        }
+                        list = (Object[])queue.remove(0);
+                    }
+
+                    for (int i = 0; i < list.length; ++i) {
+                        notifier.notifyListener((EventListener)list[i]);
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * Subclasses implement this to return true if the listener is
+     * of the appropriate type.
+     */
+    protected abstract boolean acceptsListener(EventListener l);
+
+    /**
+     * Subclasses implement this to notify the listener.
+     */
+    protected abstract void notifyListener(EventListener l);
+}
diff --git a/src/com/ibm/icu/impl/ICURWLock.java b/src/com/ibm/icu/impl/ICURWLock.java
new file mode 100644
index 0000000..ec15070
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICURWLock.java
@@ -0,0 +1,297 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+// See Allan Holub's 1999 column in JavaWorld, and Doug Lea's code for RWLocks with writer preference.
+
+
+/**
+ * <p>A simple Reader/Writer lock.  This assumes that there will
+ * be little writing contention.  It also doesn't allow 
+ * active readers to acquire and release a write lock, or
+ * deal with priority inversion issues.</p>
+ *
+ * <p>Access to the lock should be enclosed in a try/finally block
+ * in order to ensure that the lock is always released in case of
+ * exceptions:<br><pre>
+ * try {
+ *     lock.acquireRead();
+ *     // use service protected by the lock
+ * }
+ * finally {
+ *     lock.releaseRead();
+ * }
+ * </pre></p>
+ *
+ * <p>The lock provides utility methods getStats and clearStats
+ * to return statistics on the use of the lock.</p>
+ */
+public class ICURWLock {
+    private Object writeLock = new Object();
+    private Object readLock = new Object();
+    private int wwc; // waiting writers
+    private int rc; // active readers, -1 if there's an active writer
+    private int wrc; // waiting readers
+
+    private Stats stats = new Stats(); // maybe don't init to start...
+
+    /**
+     * Internal class used to gather statistics on the RWLock.
+     */
+    public final static class Stats {
+        /**
+         * Number of times read access granted (read count).
+         */
+        public int _rc;
+
+        /**
+         * Number of times concurrent read access granted (multiple read count).
+         */
+        public int _mrc;
+
+        /**
+         * Number of times blocked for read (waiting reader count).
+         */
+        public int _wrc; // wait for read
+
+        /**
+         * Number of times write access granted (writer count).
+         */
+        public int _wc;
+
+        /**
+         * Number of times blocked for write (waiting writer count).
+         */
+        public int _wwc;
+
+        private Stats() {
+        }
+
+        private Stats(int rc, int mrc, int wrc, int wc, int wwc) {
+            this._rc = rc;
+            this._mrc = mrc;
+            this._wrc = wrc;
+            this._wc = wc;
+            this._wwc = wwc;
+        }
+
+        private Stats(Stats rhs) {
+            this(rhs._rc, rhs._mrc, rhs._wrc, rhs._wc, rhs._wwc);
+        }
+
+        /**
+         * Return a string listing all the stats.
+         */
+        public String toString() {
+            return " rc: " + _rc +
+                " mrc: " + _mrc + 
+                " wrc: " + _wrc +
+                " wc: " + _wc +
+                " wwc: " + _wwc;
+        }
+    }
+
+    /**
+     * Reset the stats.  Returns existing stats, if any.
+     */
+    public synchronized Stats resetStats() {
+        Stats result = stats;
+        stats = new Stats();
+        return result;
+    }
+
+    /**
+     * Clear the stats (stop collecting stats).  Returns existing stats, if any.
+     */
+    public synchronized Stats clearStats() {
+        Stats result = stats;
+        stats = null;
+        return result;
+    }
+    
+    /**
+     * Return a snapshot of the current stats.  This does not reset the stats.
+     */
+    public synchronized Stats getStats() {
+        return stats == null ? null : new Stats(stats);
+    }
+
+    // utilities
+
+    private synchronized boolean gotRead() {
+        ++rc;
+        if (stats != null) {
+            ++stats._rc;
+            if (rc > 1) ++stats._mrc;
+        }
+        return true;
+    }
+
+    private synchronized boolean getRead() {
+        if (rc >= 0 && wwc == 0) {
+            return gotRead();
+        }
+        ++wrc;
+        return false;
+    }
+
+    private synchronized boolean retryRead() {
+        if (stats != null) ++stats._wrc;
+        if (rc >= 0 && wwc == 0) {
+            --wrc;
+            return gotRead();
+        }
+        return false;
+    }
+
+    private synchronized boolean finishRead() {
+        if (rc > 0) {
+            return (0 == --rc && wwc > 0);
+        }
+        throw new IllegalStateException("no current reader to release");
+    }
+    
+    private synchronized boolean gotWrite() {
+        rc = -1;
+        if (stats != null) {
+            ++stats._wc;
+        }
+        return true;
+    }
+
+    private synchronized boolean getWrite() {
+        if (rc == 0) {
+            return gotWrite();
+        }
+        ++wwc;
+        return false;
+    }
+
+    private synchronized boolean retryWrite() {
+        if (stats != null) ++stats._wwc;
+        if (rc == 0) {
+            --wwc;
+            return gotWrite();
+        }
+        return false;
+    }
+
+    private static final int NOTIFY_NONE = 0;
+    private static final int NOTIFY_WRITERS = 1;
+    private static final int NOTIFY_READERS = 2;
+
+    private synchronized int finishWrite() {
+        if (rc < 0) {
+            rc = 0;
+            if (wwc > 0) {
+                return NOTIFY_WRITERS;
+            } else if (wrc > 0) {
+                return NOTIFY_READERS;
+            } else {
+                return NOTIFY_NONE;
+            }
+        }
+        throw new IllegalStateException("no current writer to release");
+    }
+    
+    /**
+     * <p>Acquire a read lock, blocking until a read lock is
+     * available.  Multiple readers can concurrently hold the read
+     * lock.</p>
+     *
+     * <p>If there's a writer, or a waiting writer, increment the
+     * waiting reader count and block on this.  Otherwise
+     * increment the active reader count and return.  Caller must call
+     * releaseRead when done (for example, in a finally block).</p> 
+     */
+    public void acquireRead() {
+        if (!getRead()) {
+            for (;;) {
+                try {
+                    synchronized (readLock) {
+                        readLock.wait();
+                    }
+                    if (retryRead()) {
+                        return;
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Release a read lock and return.  An error will be thrown
+     * if a read lock is not currently held.</p>
+     *
+     * <p>If this is the last active reader, notify the oldest
+     * waiting writer.  Call when finished with work
+     * controlled by acquireRead.</p>
+     */
+    public void releaseRead() {
+        if (finishRead()) {
+            synchronized (writeLock) {
+                writeLock.notify();
+            }
+        }
+    }
+
+    /**
+     * <p>Acquire the write lock, blocking until the write lock is
+     * available.  Only one writer can acquire the write lock, and
+     * when held, no readers can acquire the read lock.</p>
+     *
+     * <p>If there are no readers and no waiting writers, mark as
+     * having an active writer and return.  Otherwise, add a lock to the
+     * end of the waiting writer list, and block on it.  Caller
+     * must call releaseWrite when done (for example, in a finally
+     * block).<p> 
+     */
+    public void acquireWrite() {
+        if (!getWrite()) {
+            for (;;) {
+                try {
+                    synchronized (writeLock) {
+                        writeLock.wait();
+                    }
+                    if (retryWrite()) {
+                        return;
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Release the write lock and return.  An error will be thrown
+     * if the write lock is not currently held.</p>
+     *
+     * <p>If there are waiting readers, make them all active and
+     * notify all of them.  Otherwise, notify the oldest waiting
+     * writer, if any.  Call when finished with work controlled by
+     * acquireWrite.</p> 
+     */
+    public void releaseWrite() {
+        switch (finishWrite()) {
+        case NOTIFY_WRITERS:
+            synchronized (writeLock) {
+                writeLock.notify();
+            }
+            break;
+        case NOTIFY_READERS:
+            synchronized (readLock) {
+                readLock.notifyAll();
+            }
+            break;
+        case NOTIFY_NONE:
+            break;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundle.java b/src/com/ibm/icu/impl/ICUResourceBundle.java
new file mode 100644
index 0000000..e60444e
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundle.java
@@ -0,0 +1,1451 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ * *****************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.ref.SoftReference;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.Vector;
+
+import com.ibm.icu.impl.URLHandler.URLVisitor;
+import com.ibm.icu.util.StringTokenizer;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.VersionInfo;
+
+public  class ICUResourceBundle extends UResourceBundle {
+    /**
+     * The data path to be used with getBundleInstance API
+     */
+    protected static final String ICU_DATA_PATH = "com/ibm/icu/impl/";
+    /**
+     * The data path to be used with getBundleInstance API
+     */
+    public static final String ICU_BUNDLE = "data/icudt" + VersionInfo.ICU_DATA_VERSION;
+
+    /**
+     * The base name of ICU data to be used with getBundleInstance API
+     */
+    public static final String ICU_BASE_NAME = ICU_DATA_PATH + ICU_BUNDLE;
+
+    /**
+     * The base name of collation data to be used with getBundleInstance API
+     */
+    public static final String ICU_COLLATION_BASE_NAME = ICU_BASE_NAME + "/coll";
+
+    /**
+     * The base name of rbbi data to be used with getData API
+     */
+    public static final String ICU_BRKITR_NAME = "/brkitr";
+
+    /**
+     * The base name of rbbi data to be used with getBundleInstance API
+     */
+    public static final String ICU_BRKITR_BASE_NAME = ICU_BASE_NAME + ICU_BRKITR_NAME;
+
+    /**
+     * The base name of rbnf data to be used with getBundleInstance API
+     */
+    public static final String ICU_RBNF_BASE_NAME = ICU_BASE_NAME + "/rbnf";
+
+    /**
+     * The base name of transliterator data to be used with getBundleInstance API
+     */
+    public static final String ICU_TRANSLIT_BASE_NAME = ICU_BASE_NAME + "/translit";
+
+    /**
+     * The actual path of the resource
+     */
+    protected String resPath;
+
+    protected static final long UNSIGNED_INT_MASK = 0xffffffffL;
+
+    /**
+     * The class loader constant to be used with getBundleInstance API
+     */
+    public static final ClassLoader ICU_DATA_CLASS_LOADER;
+    static {
+        ClassLoader loader = ICUData.class.getClassLoader();
+        if (loader == null) { // boot class loader
+            loader = ClassLoader.getSystemClassLoader();
+        }
+        ICU_DATA_CLASS_LOADER = loader;
+    }
+
+    /**
+     * The name of the resource containing the installed locales
+     */
+    protected static final String INSTALLED_LOCALES = "InstalledLocales";
+
+    public static final int FROM_FALLBACK = 1, FROM_ROOT = 2, FROM_DEFAULT = 3, FROM_LOCALE = 4;
+
+    private int loadingStatus = -1;
+
+    public void setLoadingStatus(int newStatus) {
+        loadingStatus = newStatus;
+    }
+    /**
+     * Returns the loading status of a particular resource.
+     *
+     * @return FROM_FALLBACK if the resource is fetched from fallback bundle
+     *         FROM_ROOT if the resource is fetched from root bundle.
+     *         FROM_DEFAULT if the resource is fetched from the default locale.
+     */
+    public int getLoadingStatus() {
+        return loadingStatus;
+    }
+
+    public void setLoadingStatus(String requestedLocale){
+        String locale = getLocaleID();
+        if(locale.equals("root")) {
+            setLoadingStatus(FROM_ROOT);
+        } else if(locale.equals(requestedLocale)) {
+            setLoadingStatus(FROM_LOCALE);
+        } else {
+            setLoadingStatus(FROM_FALLBACK);
+        }
+     }
+
+
+    /**
+     * Returns the respath of this bundle
+     * @return
+     */
+    public String getResPath(){
+        return resPath;
+    }
+
+    /**
+     * Returns a functionally equivalent locale, considering keywords as well, for the specified keyword.
+     * @param baseName resource specifier
+     * @param resName top level resource to consider (such as "collations")
+     * @param keyword a particular keyword to consider (such as "collation" )
+     * @param locID The requested locale
+     * @param isAvailable If non-null, 1-element array of fillin parameter that indicates whether the
+     * requested locale was available. The locale is defined as 'available' if it physically
+     * exists within the specified tree and included in 'InstalledLocales'.
+     * @param omitDefault  if true, omit keyword and value if default.
+     * 'de_DE\@collation=standard' -> 'de_DE'
+     * @return the locale
+     * @internal ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String baseName,
+            String resName, String keyword, ULocale locID,
+            boolean isAvailable[], boolean omitDefault) {
+        String kwVal = locID.getKeywordValue(keyword);
+        String baseLoc = locID.getBaseName();
+        String defStr = null;
+        ULocale parent = new ULocale(baseLoc);
+        ULocale defLoc = null; // locale where default (found) resource is
+        boolean lookForDefault = false; // true if kwVal needs to be set
+        ULocale fullBase = null; // base locale of found (target) resource
+        int defDepth = 0; // depth of 'default' marker
+        int resDepth = 0; // depth of found resource;
+
+        if ((kwVal == null) || (kwVal.length() == 0)
+                || kwVal.equals(DEFAULT_TAG)) {
+            kwVal = ""; // default tag is treated as no keyword
+            lookForDefault = true;
+        }
+
+        // Check top level locale first
+        ICUResourceBundle r = null;
+
+        r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+        if (isAvailable != null) {
+            isAvailable[0] = false;
+            ULocale[] availableULocales = getAvailEntry(baseName).getULocaleList();
+            for (int i = 0; i < availableULocales.length; i++) {
+                if (parent.equals(availableULocales[i])) {
+                    isAvailable[0] = true;
+                    break;
+                }
+            }
+        }
+        // determine in which locale (if any) the currently relevant 'default' is
+        do {
+            try {
+                ICUResourceBundle irb = (ICUResourceBundle) r.get(resName);
+                defStr = irb.getString(DEFAULT_TAG);
+                if (lookForDefault == true) {
+                    kwVal = defStr;
+                    lookForDefault = false;
+                }
+                defLoc = r.getULocale();
+            } catch (MissingResourceException t) {
+                // Ignore error and continue search.
+            }
+            if (defLoc == null) {
+                r = (ICUResourceBundle) r.getParent();
+                defDepth++;
+            }
+        } while ((r != null) && (defLoc == null));
+
+        // Now, search for the named resource
+        parent = new ULocale(baseLoc);
+        r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+        // determine in which locale (if any) the named resource is located
+        do {
+            try {
+                ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+                /* UResourceBundle urb = */irb.get(kwVal);
+                fullBase = irb.getULocale();
+                // If the get() completed, we have the full base locale
+                // If we fell back to an ancestor of the old 'default',
+                // we need to re calculate the "default" keyword.
+                if ((fullBase != null) && ((resDepth) > defDepth)) {
+                    defStr = irb.getString(DEFAULT_TAG);
+                    defLoc = r.getULocale();
+                    defDepth = resDepth;
+                }
+            } catch (MissingResourceException t) {
+                // Ignore error,
+            }
+            if (fullBase == null) {
+                r = (ICUResourceBundle) r.getParent();
+                resDepth++;
+            }
+        } while ((r != null) && (fullBase == null));
+
+        if (fullBase == null && // Could not find resource 'kwVal'
+                (defStr != null) && // default was defined
+                !defStr.equals(kwVal)) { // kwVal is not default
+            // couldn't find requested resource. Fall back to default.
+            kwVal = defStr; // Fall back to default.
+            parent = new ULocale(baseLoc);
+            r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+            resDepth = 0;
+            // determine in which locale (if any) the named resource is located
+            do {
+                try {
+                    ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+                    UResourceBundle urb = irb.get(kwVal);
+
+                    // if we didn't fail before this..
+                    fullBase = r.getULocale();
+
+                    // If the fetched item (urb) is in a different locale than our outer locale (r/fullBase)
+                    // then we are in a 'fallback' situation. treat as a missing resource situation.
+                    if(!fullBase.toString().equals(urb.getLocale().toString())) {
+                        fullBase = null; // fallback condition. Loop and try again.
+                    }
+
+                    // If we fell back to an ancestor of the old 'default',
+                    // we need to re calculate the "default" keyword.
+                    if ((fullBase != null) && ((resDepth) > defDepth)) {
+                        defStr = irb.getString(DEFAULT_TAG);
+                        defLoc = r.getULocale();
+                        defDepth = resDepth;
+                    }
+                } catch (MissingResourceException t) {
+                    // Ignore error, continue search.
+                }
+                if (fullBase == null) {
+                    r = (ICUResourceBundle) r.getParent();
+                    resDepth++;
+                }
+            } while ((r != null) && (fullBase == null));
+        }
+
+        if (fullBase == null) {
+            throw new MissingResourceException(
+                "Could not find locale containing requested or default keyword.",
+                baseName, keyword + "=" + kwVal);
+        }
+
+        if (omitDefault
+            && defStr.equals(kwVal) // if default was requested and
+            && resDepth <= defDepth) { // default was set in same locale or child
+            return fullBase; // Keyword value is default - no keyword needed in locale
+        } else {
+            return new ULocale(fullBase.toString() + "@" + keyword + "=" + kwVal);
+        }
+    }
+
+    /**
+     * Given a tree path and keyword, return a string enumeration of all possible values for that keyword.
+     * @param baseName resource specifier
+     * @param keyword a particular keyword to consider, must match a top level resource name
+     * within the tree. (i.e. "collations")
+     * @internal ICU 3.0
+     */
+    public static final String[] getKeywordValues(String baseName, String keyword) {
+        Set keywords = new HashSet();
+        ULocale locales[] = createULocaleList(baseName, ICU_DATA_CLASS_LOADER);
+        int i;
+
+        for (i = 0; i < locales.length; i++) {
+            try {
+                UResourceBundle b = UResourceBundle.getBundleInstance(baseName, locales[i]);
+                // downcast to ICUResourceBundle?
+                ICUResourceBundle irb = (ICUResourceBundle) (b.getObject(keyword));
+                Enumeration e = irb.getKeys();
+                Object s;
+                while (e.hasMoreElements()) {
+                    s = e.nextElement();
+                    if ((s instanceof String) && !DEFAULT_TAG.equals(s)) {
+                        // don't add 'default' items
+                        keywords.add(s);
+                    }
+                }
+            } catch (Throwable t) {
+                //System.err.println("Error in - " + new Integer(i).toString()
+                // + " - " + t.toString());
+                // ignore the err - just skip that resource
+            }
+        }
+        return (String[])keywords.toArray(new String[0]);
+    }
+
+    /**
+     * This method performs multilevel fallback for fetching items from the
+     * bundle e.g: If resource is in the form de__PHONEBOOK{ collations{
+     * default{ "phonebook"} } } If the value of "default" key needs to be
+     * accessed, then do: <code>
+     *  UResourceBundle bundle = UResourceBundle.getBundleInstance("de__PHONEBOOK");
+     *  ICUResourceBundle result = null;
+     *  if(bundle instanceof ICUResourceBundle){
+     *      result = ((ICUResourceBundle) bundle).getWithFallback("collations/default");
+     *  }
+     * </code>
+     *
+     * @param path
+     *            The path to the required resource key
+     * @return resource represented by the key
+     * @exception MissingResourceException
+     */
+    public ICUResourceBundle getWithFallback(String path)
+            throws MissingResourceException {
+        ICUResourceBundle result = null;
+        ICUResourceBundle actualBundle = this;
+
+        // now recuse to pick up sub levels of the items
+        result = findResourceWithFallback(path, actualBundle, null);
+
+        if (result == null) {
+            throw new MissingResourceException(
+                "Can't find resource for bundle "
+                + this.getClass().getName() + ", key " + getType(),
+                path, getKey());
+        }
+        return result;
+    }
+
+    // will throw type mismatch exception if the resource is not a string
+    public String getStringWithFallback(String path) throws MissingResourceException {
+        return getWithFallback(path).getString();
+    }
+
+    /**
+     * Return a set of the locale names supported by a collection of resource
+     * bundles.
+     *
+     * @param bundlePrefix the prefix of the resource bundles to use.
+     */
+    public static Set getAvailableLocaleNameSet(String bundlePrefix) {
+        return getAvailEntry(bundlePrefix).getLocaleNameSet();
+    }
+
+    /**
+     * Return a set of all the locale names supported by a collection of
+     * resource bundles.
+     */
+    public static Set getFullLocaleNameSet() {
+        return getFullLocaleNameSet(ICU_BASE_NAME);
+    }
+
+    /**
+     * Return a set of all the locale names supported by a collection of
+     * resource bundles.
+     *
+     * @param bundlePrefix the prefix of the resource bundles to use.
+     */
+    public static Set getFullLocaleNameSet(String bundlePrefix) {
+        return getAvailEntry(bundlePrefix).getFullLocaleNameSet();
+    }
+
+    /**
+     * Return a set of the locale names supported by a collection of resource
+     * bundles.
+     */
+    public static Set getAvailableLocaleNameSet() {
+        return getAvailableLocaleNameSet(ICU_BASE_NAME);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final ULocale[] getAvailableULocales(String baseName) {
+        return getAvailEntry(baseName).getULocaleList();
+    }
+
+    /**
+     * Get the set of ULocales installed the base bundle.
+     * @return the list of available locales
+     */
+    public static final ULocale[] getAvailableULocales() {
+        return getAvailableULocales(ICU_BASE_NAME);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final Locale[] getAvailableLocales(String baseName) {
+        return getAvailEntry(baseName).getLocaleList();
+    }
+
+   /**
+     * Get the set of Locales installed the base bundle.
+     * @return the list of available locales
+     */
+    public static final Locale[] getAvailableLocales() {
+        return getAvailEntry(ICU_BASE_NAME).getLocaleList();
+    }
+
+    /**
+     * Convert a list of ULocales to a list of Locales.  ULocales with a script code will not be converted
+     * since they cannot be represented as a Locale.  This means that the two lists will <b>not</b> match
+     * one-to-one, and that the returned list might be shorter than the input list.
+     * @param ulocales a list of ULocales to convert to a list of Locales.
+     * @return the list of converted ULocales
+     */
+    public static final Locale[] getLocaleList(ULocale[] ulocales) {
+        ArrayList list = new ArrayList();
+        HashSet uniqueSet = new HashSet();
+        for (int i = 0; i < ulocales.length; i++) {
+            Locale loc = ulocales[i].toLocale();
+            if (!uniqueSet.contains(loc)) {
+                list.add(loc);
+                uniqueSet.add(loc);
+            }
+        }
+        return (Locale[]) list.toArray(new Locale[list.size()]);
+    }
+
+    /**
+     * Returns the locale of this resource bundle. This method can be used after
+     * a call to getBundle() to determine whether the resource bundle returned
+     * really corresponds to the requested locale or is a fallback.
+     *
+     * @return the locale of this resource bundle
+     */
+    public Locale getLocale() {
+        return getULocale().toLocale();
+    }
+
+
+    // ========== privates ==========
+    private static final String ICU_RESOURCE_INDEX = "res_index";
+
+    private static final String DEFAULT_TAG = "default";
+
+    // Flag for enabling/disabling debugging code
+    private static final boolean DEBUG = ICUDebug.enabled("localedata");
+
+    // Cache for getAvailableLocales
+    private static SoftReference GET_AVAILABLE_CACHE;
+    private static final ULocale[] createULocaleList(String baseName,
+            ClassLoader root) {
+        // the canned list is a subset of all the available .res files, the idea
+        // is we don't export them
+        // all. gotta be a better way to do this, since to add a locale you have
+        // to update this list,
+        // and it's embedded in our binary resources.
+        ICUResourceBundle bundle = (ICUResourceBundle) UResourceBundle.instantiateBundle(baseName, ICU_RESOURCE_INDEX, root, true);
+
+        bundle = (ICUResourceBundle)bundle.get(INSTALLED_LOCALES);
+        int length = bundle.getSize();
+        int i = 0;
+        ULocale[] locales = new ULocale[length];
+        UResourceBundleIterator iter = bundle.getIterator();
+        iter.reset();
+        while (iter.hasNext()) {
+            locales[i++] = new ULocale(iter.next().getKey());
+        }
+        bundle = null;
+        return locales;
+    }
+
+    private static final Locale[] createLocaleList(String baseName) {
+        ULocale[] ulocales = getAvailEntry(baseName).getULocaleList();
+        return getLocaleList(ulocales);
+    }
+
+    private static final String[] createLocaleNameArray(String baseName,
+            ClassLoader root) {
+        ICUResourceBundle bundle = (ICUResourceBundle) UResourceBundle.instantiateBundle( baseName, ICU_RESOURCE_INDEX, root, true);
+        bundle = (ICUResourceBundle)bundle.get(INSTALLED_LOCALES);
+        int length = bundle.getSize();
+        int i = 0;
+        String[] locales = new String[length];
+        UResourceBundleIterator iter = bundle.getIterator();
+        iter.reset();
+        while (iter.hasNext()) {
+            locales[i++] = iter.next().getKey();
+        }
+        bundle = null;
+        return locales;
+    }
+
+    private static final ArrayList createFullLocaleNameArray(
+            final String baseName, final ClassLoader root) {
+
+        ArrayList list = (ArrayList) java.security.AccessController
+            .doPrivileged(new java.security.PrivilegedAction() {
+                public Object run() {
+                    // WebSphere class loader will return null for a raw
+                    // directory name without trailing slash
+                    String bn = baseName.endsWith("/")
+                        ? baseName
+                        : baseName + "/";
+
+                    // look for prebuilt indices first
+                    try {
+                        InputStream s = root.getResourceAsStream(bn + ICU_RESOURCE_INDEX + ".txt");
+                        if (s != null) {
+                            ArrayList lst = new ArrayList();
+                            BufferedReader br = new BufferedReader(new InputStreamReader(s, "ASCII"));
+                            String line;
+                            while ((line = br.readLine()) != null) {
+                                if (line.length() != 0 && !line.startsWith("#")) {
+                                    lst.add(line);
+                                }
+                            }
+                            return lst;
+                        }
+                    } catch (IOException e) {
+                        // swallow it
+                    }
+
+                    URL url = root.getResource(bn);
+                    URLHandler handler = URLHandler.get(url);
+                    if (handler != null) {
+                        final ArrayList lst = new ArrayList();
+                        URLVisitor v = new URLVisitor() {
+                            public void visit(String s) {
+                                if (s.endsWith(".res") && !"res_index.res".equals(s)) {
+                                    lst.add(s.substring(0, s.length() - 4)); // strip '.res'
+                                }
+                            }
+                        };
+                        handler.guide(v, false);
+                        return lst;
+                    }
+
+                    return null;
+                }
+            });
+
+        return list;
+    }
+
+    private static Set createFullLocaleNameSet(String baseName) {
+        ArrayList list = createFullLocaleNameArray(baseName,ICU_DATA_CLASS_LOADER);
+        HashSet set = new HashSet();
+        if(list==null){
+            throw new MissingResourceException("Could not find "+  ICU_RESOURCE_INDEX, "", "");
+        }
+        set.addAll(list);
+        return Collections.unmodifiableSet(set);
+    }
+
+    private static Set createLocaleNameSet(String baseName) {
+        try {
+            String[] locales = createLocaleNameArray(baseName, ICU_DATA_CLASS_LOADER);
+
+            HashSet set = new HashSet();
+            set.addAll(Arrays.asList(locales));
+            return Collections.unmodifiableSet(set);
+        } catch (MissingResourceException e) {
+            if (DEBUG) {
+                System.out.println("couldn't find index for bundleName: " + baseName);
+                Thread.dumpStack();
+            }
+        }
+        return Collections.EMPTY_SET;
+    }
+
+    /**
+     * Holds the prefix, and lazily creates the Locale[] list or the locale name
+     * Set as needed.
+     */
+    private static final class AvailEntry {
+        private String prefix;
+        private ULocale[] ulocales;
+        private Locale[] locales;
+        private Set nameSet;
+        private Set fullNameSet;
+
+        AvailEntry(String prefix) {
+            this.prefix = prefix;
+        }
+
+        ULocale[] getULocaleList() {
+            if (ulocales == null) {
+                ulocales = createULocaleList(prefix, ICU_DATA_CLASS_LOADER);
+            }
+            return ulocales;
+        }
+        Locale[] getLocaleList() {
+            if (locales == null) {
+                locales = createLocaleList(prefix);
+            }
+            return locales;
+        }
+        Set getLocaleNameSet() {
+            if (nameSet == null) {
+                nameSet = createLocaleNameSet(prefix);
+            }
+            return nameSet;
+        }
+        Set getFullLocaleNameSet() {
+            if (fullNameSet == null) {
+                fullNameSet = createFullLocaleNameSet(prefix);
+            }
+            return fullNameSet;
+        }
+    }
+
+    /**
+     * Stores the locale information in a cache accessed by key (bundle prefix).
+     * The cached objects are AvailEntries. The cache is held by a SoftReference
+     * so it can be GC'd.
+     */
+    private static AvailEntry getAvailEntry(String key) {
+        AvailEntry ae = null;
+        Map lcache = null;
+        if (GET_AVAILABLE_CACHE != null) {
+            lcache = (Map) GET_AVAILABLE_CACHE.get();
+            if (lcache != null) {
+                ae = (AvailEntry) lcache.get(key);
+            }
+        }
+
+        if (ae == null) {
+            ae = new AvailEntry(key);
+            if (lcache == null) {
+                lcache = new HashMap();
+                lcache.put(key, ae);
+                GET_AVAILABLE_CACHE = new SoftReference(lcache);
+            } else {
+                lcache.put(key, ae);
+            }
+        }
+
+        return ae;
+    }
+
+    protected static final ICUResourceBundle findResourceWithFallback(String path,
+            UResourceBundle actualBundle, UResourceBundle requested) {
+        ICUResourceBundle sub = null;
+        if (requested == null) {
+            requested = actualBundle;
+        }
+        while (actualBundle != null) {
+            StringTokenizer st = new StringTokenizer(path, "/");
+            ICUResourceBundle current = (ICUResourceBundle) actualBundle;
+            while (st.hasMoreTokens()) {
+                String subKey = st.nextToken();
+                sub =  (ICUResourceBundle)current.handleGet(subKey, null, requested);
+                if (sub == null) {
+                    break;
+                }
+                current = sub;
+            }
+            if (sub != null) {
+                //we found it
+                break;
+            }
+            if (((ICUResourceBundle)actualBundle).resPath.length() != 0) {
+                path = ((ICUResourceBundle)actualBundle).resPath + "/" + path;
+            }
+            // if not try the parent bundle
+            actualBundle = ((ICUResourceBundle) actualBundle).getParent();
+
+        }
+        if(sub != null){
+            sub.setLoadingStatus(((ICUResourceBundle)requested).getLocaleID());
+        }
+        return sub;
+    }
+    public boolean equals(Object other) {
+        if (other instanceof ICUResourceBundle) {
+            ICUResourceBundle o = (ICUResourceBundle) other;
+            if (getBaseName().equals(o.getBaseName())
+                    && getLocaleID().equals(o.getLocaleID())) {
+                return true;
+            }
+        }
+        return false;
+    }
+    // This method is for super class's instantiateBundle method
+    public static UResourceBundle getBundleInstance(String baseName, String localeID,
+                                                    ClassLoader root, boolean disableFallback){
+        UResourceBundle b = instantiateBundle(baseName, localeID, root, disableFallback);
+        if(b==null){
+            throw new MissingResourceException("Could not find the bundle "+ baseName+"/"+ localeID+".res","","");
+        }
+        return b;
+    }
+    //  recursively build bundle .. over-ride super class method.
+    protected synchronized static UResourceBundle instantiateBundle(String baseName, String localeID,
+                                                                    ClassLoader root, boolean disableFallback){
+        ULocale defaultLocale = ULocale.getDefault();
+        String localeName = localeID;
+        if(localeName.indexOf('@')>0){
+            localeName = ULocale.getBaseName(localeID);
+        }
+        String fullName = ICUResourceBundleReader.getFullName(baseName, localeName);
+        ICUResourceBundle b = (ICUResourceBundle)loadFromCache(root, fullName, defaultLocale);
+
+        // here we assume that java type resource bundle organization
+        // is required then the base name contains '.' else
+        // the resource organization is of ICU type
+        // so clients can instantiate resources of the type
+        // com.mycompany.data.MyLocaleElements_en.res and
+        // com.mycompany.data.MyLocaleElements.res
+        //
+        final String rootLocale = (baseName.indexOf('.')==-1) ? "root" : "";
+        final String defaultID = ULocale.getDefault().toString();
+
+        if(localeName.equals("")){
+            localeName = rootLocale;
+        }
+        if(DEBUG) System.out.println("Creating "+fullName+ " currently b is "+b);
+        if (b == null) {
+            b = ICUResourceBundle.createBundle(baseName, localeName, root);
+
+            if(DEBUG)System.out.println("The bundle created is: "+b+" and disableFallback="+disableFallback+" and bundle.getNoFallback="+(b!=null && b.getNoFallback()));
+            if(disableFallback || (b!=null && b.getNoFallback())){
+                addToCache(root, fullName, defaultLocale, b);
+                // no fallback because the caller said so or because the bundle says so
+                return b;
+            }
+
+            // fallback to locale ID parent
+            if(b == null){
+                int i = localeName.lastIndexOf('_');
+                if (i != -1) {
+                    String temp = localeName.substring(0, i);
+                    b = (ICUResourceBundle)instantiateBundle(baseName, temp, root, disableFallback);
+                    if(b!=null && b.getULocale().equals(temp)){
+                        b.setLoadingStatus(ICUResourceBundle.FROM_FALLBACK);
+                    }
+                }else{
+                    if(defaultID.indexOf(localeName)==-1){
+                        b = (ICUResourceBundle)instantiateBundle(baseName, defaultID, root, disableFallback);
+                        if(b!=null){
+                            b.setLoadingStatus(ICUResourceBundle.FROM_DEFAULT);
+                        }
+                    }else if(rootLocale.length()!=0){
+                        b = ICUResourceBundle.createBundle(baseName, rootLocale, root);
+                        if(b!=null){
+                            b.setLoadingStatus(ICUResourceBundle.FROM_ROOT);
+                        }
+                    }
+                }
+            }else{
+                UResourceBundle parent = null;
+                localeName = b.getLocaleID();
+                int i = localeName.lastIndexOf('_');
+
+                addToCache(root, fullName, defaultLocale, b);
+
+                if (i != -1) {
+                    parent = instantiateBundle(baseName, localeName.substring(0, i), root, disableFallback);
+                }else if(!localeName.equals(rootLocale)){
+                    parent = instantiateBundle(baseName, rootLocale, root, true);
+                }
+
+                if(!b.equals(parent)){
+                    b.setParent(parent);
+                }
+            }
+        }
+        return b;
+    }
+    UResourceBundle get(String aKey, HashMap table, UResourceBundle requested) {
+        ICUResourceBundle obj = (ICUResourceBundle)handleGet(aKey, table, requested);
+        if (obj == null) {
+            obj = (ICUResourceBundle)getParent();
+            if (obj != null) {
+                //call the get method to recursively fetch the resource
+                obj = (ICUResourceBundle)obj.get(aKey, table, requested);
+            }
+            if (obj == null) {
+                String fullName = ICUResourceBundleReader.getFullName(
+                        getBaseName(), getLocaleID());
+                throw new MissingResourceException(
+                        "Can't find resource for bundle " + fullName + ", key "
+                                + aKey, this.getClass().getName(), aKey);
+            }
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(((ICUResourceBundle)requested).getLocaleID());
+        return obj;
+    }
+    //protected byte[] version;
+    protected byte[] rawData;
+    protected long rootResource;
+    protected boolean noFallback;
+
+    protected String localeID;
+    protected String baseName;
+    protected ULocale ulocale;
+    protected ClassLoader loader;
+
+    //protected static final boolean ASSERT = false;
+
+    /**
+     *
+     * @param baseName
+     * @param localeID
+     * @param root
+     * @return the new bundle
+     */
+    public static ICUResourceBundle createBundle(String baseName,
+            String localeID, ClassLoader root) {
+
+        ICUResourceBundleReader reader = ICUResourceBundleReader.getReader( baseName, localeID, root);
+        // could not open the .res file so return null
+        if (reader == null) {
+            return null;
+        }
+        return getBundle(reader, baseName, localeID, root);
+    }
+
+    protected String getLocaleID() {
+        return localeID;
+    }
+
+    protected String getBaseName() {
+        return baseName;
+    }
+
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    public UResourceBundle getParent() {
+        return (UResourceBundle) parent;
+    }
+
+    protected void setParent(ResourceBundle parent) {
+        this.parent = parent;
+    }
+
+    /**
+     * Get the noFallback flag specified in the loaded bundle.
+     * @return The noFallback flag.
+     */
+    protected boolean getNoFallback() {
+        return noFallback;
+    }
+
+    private static ICUResourceBundle getBundle(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+        long rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+
+        int type = RES_GET_TYPE(rootResource);
+        if (type == TABLE) {
+            ICUResourceBundleImpl.ResourceTable table = new ICUResourceBundleImpl.ResourceTable(reader, baseName, localeID, loader);
+            if(table.getSize()>=1){ // ticket#5683 ICU4J 3.6 data for zh_xx contains an entry other than %%ALIAS
+                UResourceBundle b = table.handleGetImpl(0, null, table, null); // handleGet will cache the bundle with no parent set
+                String itemKey = b.getKey();
+
+                // %%ALIAS is such a hack!
+                if (itemKey.equals("%%ALIAS")) {
+                	String locale = b.getString();
+                    UResourceBundle actual =  UResourceBundle.getBundleInstance(baseName, locale);
+                    return (ICUResourceBundleImpl.ResourceTable) actual;
+                }else{
+                    return table;
+                }
+            }else {
+                return table;
+            }
+        } else if (type == TABLE32) {
+
+            // genrb does not generate Table32 with %%ALIAS
+            return new ICUResourceBundleImpl.ResourceTable32(reader, baseName, localeID, loader);
+        } else {
+            throw new IllegalStateException("Invalid format error");
+        }
+    }
+    // private constructor for inner classes
+    protected ICUResourceBundle(){}
+
+    public static final int RES_GET_TYPE(long res) {
+        return (int) ((res) >> 28L);
+    }
+    protected static final int RES_GET_OFFSET(long res) {
+        return (int) ((res & 0x0fffffff) << 2); // * 4
+    }
+    /* get signed and unsigned integer values directly from the Resource handle */
+    protected static final int RES_GET_INT(long res) {
+        return (((int) ((res) << 4)) >> 4);
+    }
+    static final long RES_GET_UINT(long res) {
+        long t = ((res) & 0x0fffffffL);
+        return t;
+    }
+    static final StringBuffer RES_GET_KEY(byte[] rawData,
+            int keyOffset) {
+        char ch;
+        StringBuffer key = new StringBuffer();
+        while ((ch = (char) rawData[keyOffset]) != 0) {
+            key.append(ch);
+            keyOffset++;
+        }
+        return key;
+    }
+    protected static final int getIntOffset(int offset) {
+        return (offset << 2); // * 4
+    }
+    static final int getCharOffset(int offset) {
+        return (offset << 1); // * 2
+    }
+    protected final ICUResourceBundle createBundleObject(String _key,
+            long _resource, String _resPath, HashMap table,
+            UResourceBundle requested, ICUResourceBundle bundle, boolean[] isAlias) {
+        if (isAlias != null) {
+            isAlias[0] = false;
+        }
+        //if (resource != RES_BOGUS) {
+        switch (RES_GET_TYPE(_resource)) {
+            case STRING : {
+                return new ICUResourceBundleImpl.ResourceString(_key, _resPath, _resource, this);
+            }
+            case BINARY : {
+                return new ICUResourceBundleImpl.ResourceBinary(_key, _resPath, _resource, this);
+            }
+            case ALIAS : {
+                if (isAlias != null) {
+                    isAlias[0] = true;
+                }
+                return findResource(_key, _resource, table, requested);
+            }
+            case INT : {
+                return new ICUResourceBundleImpl.ResourceInt(_key, _resPath, _resource, this);
+            }
+            case INT_VECTOR : {
+                return new ICUResourceBundleImpl.ResourceIntVector(_key, _resPath, _resource, this);
+            }
+            case ARRAY : {
+                return new ICUResourceBundleImpl.ResourceArray(_key, _resPath, _resource, this);
+            }
+            case TABLE32 : {
+                return new ICUResourceBundleImpl.ResourceTable32(_key, _resPath, _resource, this);
+            }
+            case TABLE : {
+                return new ICUResourceBundleImpl.ResourceTable(_key, _resPath, _resource, this);
+            }
+            default :
+                throw new IllegalStateException("The resource type is unknown");
+        }
+        //}
+        //return null;
+    }
+
+    static final void assign(ICUResourceBundle b1, ICUResourceBundle b2){
+        b1.rawData = b2.rawData;
+        b1.rootResource = b2.rootResource;
+        b1.noFallback = b2.noFallback;
+        b1.baseName = b2.baseName;
+        b1.localeID = b2.localeID;
+        b1.ulocale = b2.ulocale;
+        b1.loader = b2.loader;
+        b1.parent = b2.parent;
+    }
+
+    int findKey(int siz, int currentOffset, ICUResourceBundle res, String target) {
+        int mid = 0, start = 0, limit = siz;
+        int lastMid = -1;
+
+        int targetLength = target.length();
+        char targetChar;
+        char actualChar;
+        int offset;
+
+        //int myCharOffset = 0, keyOffset = 0;
+        outer: for (;;) {
+            mid = ((start + limit) >> 1); // compute average
+            if (lastMid == mid) { /* Have we moved? */
+                break; /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+
+            offset = res.getOffset(currentOffset, mid);
+
+            // compare a segment of rawData with targetArray
+            for (int i=0; i<targetLength; i++) {
+                targetChar = target.charAt(i);
+                actualChar = (char)rawData[offset];
+                if (actualChar == 0 || targetChar > actualChar ) {
+                    // target > data
+                    start = mid;
+                    continue outer;
+                }
+                if (targetChar < actualChar) {
+                    // target < data
+                    limit = mid;
+                    continue outer;
+                }
+                // target == data so far...
+                offset++;
+            }
+            actualChar = (char)rawData[offset];
+            if (actualChar != 0) {
+                // target < data
+                limit = mid;
+                continue outer;
+            }
+            // target == data, we're sure now
+            return mid;
+        }
+        return -1;
+    }
+
+    public int getOffset(int currentOfset, int index){
+        return -1;
+    }
+
+    private static final char makeChar(byte[] data, int offset) {
+        return (char)((data[offset++] << 8) | (data[offset] & 0xff));
+    }
+    static char getChar(byte[]data, int offset){
+        return makeChar(data, offset);
+    }
+    private static final int makeInt(byte[] data, int offset) {
+        // | is left-associative
+        return (int) ((data[offset++] << 24) | ((data[offset++] & 0xff) << 16) | ((data[offset++] & 0xff) << 8) | ((data[offset] & 0xff)));
+    }
+
+    protected static int getInt(byte[] data, int offset){
+        //if (ASSERT) Assert.assrt("offset < data.length", offset < data.length);
+        return makeInt(data, offset);
+    }
+
+    String getStringValue(long res) {
+        if (res == 0) {
+            /*
+             * The data structure is documented as supporting resource==0 for empty strings.
+             * Return a fixed pointer in such a case.
+             * This was dropped in uresdata.c 1.17 as part of Jitterbug 1005 work
+             * on code coverage for ICU 2.0.
+             * Re-added for consistency with the design and with other code.
+             */
+            return "";
+        }
+        int offset = RES_GET_OFFSET(res);
+        int length = getInt(rawData,offset);
+        int stringOffset = offset + getIntOffset(1);
+        char[] dst = new char[length];
+        //if (ASSERT) Assert.assrt("(stringOffset+getCharOffset(length)) < rawData.length", (stringOffset+getCharOffset(length)) < rawData.length);
+        for(int i=0; i<length; i++){
+            dst[i]=getChar(rawData, stringOffset+getCharOffset(i));
+        }
+        return new String(dst);
+    }
+    private static final char RES_PATH_SEP_CHAR = '/';
+    private static final String RES_PATH_SEP_STR = "/";
+    private static final String ICUDATA = "ICUDATA";
+    private static final char HYPHEN = '-';
+    private static final String LOCALE = "LOCALE";
+
+    protected static final int getIndex(String s) {
+        if (s.length() >= 1) {
+            return Integer.valueOf(s).intValue();
+        }
+        return -1;
+    }
+    private ICUResourceBundle findResource(String _key, long _resource,
+                                            HashMap table,
+                                            UResourceBundle requested) {
+        ClassLoader loaderToUse = loader;
+        String locale = null, keyPath = null;
+        String bundleName;
+        String rpath = getStringValue(_resource);
+        if (table == null) {
+            table = new HashMap();
+        }
+        if (table.get(rpath) != null) {
+            throw new IllegalArgumentException(
+                    "Circular references in the resource bundles");
+        }
+        table.put(rpath, "");
+        if (rpath.indexOf(RES_PATH_SEP_CHAR) == 0) {
+            int i = rpath.indexOf(RES_PATH_SEP_CHAR, 1);
+            int j = rpath.indexOf(RES_PATH_SEP_CHAR, i + 1);
+            bundleName = rpath.substring(1, i);
+            locale = rpath.substring(i + 1);
+            if (j != -1) {
+                locale = rpath.substring(i + 1, j);
+                keyPath = rpath.substring(j + 1, rpath.length());
+            }
+            //there is a path included
+            if (bundleName.equals(ICUDATA)) {
+                bundleName = ICU_BASE_NAME;
+                loaderToUse = ICU_DATA_CLASS_LOADER;
+            }else if(bundleName.indexOf(ICUDATA)>-1){
+                int idx = bundleName.indexOf(HYPHEN);
+                if(idx>-1){
+                    bundleName = ICU_BASE_NAME+RES_PATH_SEP_STR+bundleName.substring(idx+1,bundleName.length());
+                    loaderToUse = ICU_DATA_CLASS_LOADER;
+                }
+            }
+        } else {
+            //no path start with locale
+            int i = rpath.indexOf(RES_PATH_SEP_CHAR);
+            keyPath = rpath.substring(i + 1);
+            if (i != -1) {
+                locale = rpath.substring(0, i);
+            } else {
+                locale = keyPath;
+                keyPath = null;//keyPath.substring(i, keyPath.length());
+            }
+            bundleName = baseName;
+        }
+        ICUResourceBundle bundle = null;
+        ICUResourceBundle sub = null;
+        if(bundleName.equals(LOCALE)){
+            bundleName = baseName;
+            bundle = (ICUResourceBundle)requested;
+            keyPath = rpath.substring(LOCALE.length() + 2/* prepending and appending / */, rpath.length());
+            locale = ((ICUResourceBundle)requested).getLocaleID();
+            sub = ICUResourceBundle.findResourceWithFallback(keyPath, requested, null);
+            sub.resPath = "/" + sub.getLocaleID() + "/" + keyPath;
+        }else{
+            if (locale == null) {
+                // {dlf} must use requestor's class loader to get resources from same jar
+                bundle = (ICUResourceBundle) getBundleInstance(bundleName, "",
+                         loaderToUse, false);
+            } else {
+                bundle = (ICUResourceBundle) getBundleInstance(bundleName, locale,
+                         loaderToUse, false);
+            }
+            if (keyPath != null) {
+                StringTokenizer st = new StringTokenizer(keyPath, "/");
+                ICUResourceBundle current = bundle;
+                while (st.hasMoreTokens()) {
+                    String subKey = st.nextToken();
+                    sub = (ICUResourceBundle)((ICUResourceBundle) current).get(subKey, table, requested);
+                    if (sub == null) {
+                        break;
+                    }
+                    current = sub;
+                }
+            } else {
+                // if the sub resource is not found
+                // try fetching the sub resource with
+                // the key of this alias resource
+                sub = (ICUResourceBundle)bundle.get(_key);
+            }
+            sub.resPath = rpath;
+        }
+        if (sub == null) {
+            throw new MissingResourceException(localeID, baseName, _key);
+        }
+        return sub;
+    }
+
+    // Resource bundle lookup cache, which may be used by subclasses
+    // which have nested resources
+    protected ICUCache lookup;
+    private static final int MAX_INITIAL_LOOKUP_SIZE = 64;
+
+    protected void createLookupCache() {
+        lookup = new SimpleCache(ICUCache.WEAK, Math.max(size*2, MAX_INITIAL_LOOKUP_SIZE));
+    }
+
+    protected UResourceBundle handleGet(String resKey, HashMap table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        if (lookup != null) {
+            res = (UResourceBundle)lookup.get(resKey);
+        }
+        if (res == null) {
+            int[] index = new int[1];
+            boolean[] alias = new boolean[1];
+            res = handleGetImpl(resKey, table, requested, index, alias);
+            if (res != null && lookup != null && !alias[0]) {
+                // We do not want to cache a result from alias entry
+                lookup.put(resKey, res);
+                lookup.put(Utility.integerValueOf(index[0]), res);
+            }
+        }
+        return res;
+    }
+
+    protected UResourceBundle handleGet(int index, HashMap table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        Integer indexKey = null;
+        if (lookup != null) {
+            indexKey = Utility.integerValueOf(index);
+            res = (UResourceBundle)lookup.get(indexKey);
+        }
+        if (res == null) {
+            boolean[] alias = new boolean[1];
+            res = handleGetImpl(index, table, requested, alias);
+            if (res != null && lookup != null && !alias[0]) {
+                // We do not want to cache a result from alias entry
+                lookup.put(res.getKey(), res);
+                lookup.put(indexKey, res);
+            }
+        }
+        return res;
+    }
+
+    // Subclass which supports key based resource access to implement this method
+    protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+            int[] index, boolean[] isAlias) {
+        return null;
+    }
+
+    // Subclass which supports index based resource access to implement this method
+    protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+            boolean[] isAlias) {
+        return null;
+    }
+    
+    
+     // TODO Below is a set of workarounds created for org.unicode.cldr.icu.ICU2LDMLWriter
+     /* 
+      * Calling getKeys() on a table that has alias's can throw a NullPointerException if parent is not set, 
+      * see trac bug: 6514
+      * -Brian Rower - IBM - Sept. 2008
+      */
+    
+    /**
+     * Returns the resource handle for the given index within the calling resource table.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    private long getResourceHandle(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//if it's out of range, return -1
+    	if(index > this.size)
+    	{
+    		return -1;
+    	}
+    	//get the offset of the calling tables resource
+    	int offset = RES_GET_OFFSET(resource);
+    	
+    	//move past the 2 byte count number
+    	offset += getCharOffset(1);
+    	//move past the array of 2 byte key string offsets
+    	offset += getCharOffset(size);
+    	//move past the padding if it exists...it's either 2 bytes or no bytes
+    	offset += getCharOffset(~size & 1);
+		
+    	//and then to the proper int in the array of resources
+    	offset += getIntOffset(index);
+		return (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData, offset);
+    }
+    
+    /**
+     * Determines if the object at the specified index of the calling resource table
+     * is an alias. If it is, returns true
+     * 
+     * @param index The index of the resource to check
+     * @returns True if the resource at 'index' is an alias, false otherwise.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and part of a work around see ticket #6514
+     * @author Brian Rower
+     */
+    public boolean isAlias(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//if index is out of the resource, return false.
+    	if(index > size)
+    	{
+    		return false;
+    	}
+    	//parent resource must be a table to call this
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return false;
+    	}
+    	long res = getResourceHandle(index);
+		return RES_GET_TYPE(res) == ALIAS ? true : false;
+    }
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and part of a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public boolean isAlias()
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	return RES_GET_TYPE(this.resource) == ALIAS;
+    }
+    
+    /**
+     * Determines if the object with the specified key 
+     * is an alias. If it is, returns true
+     * 
+     * @param key The key of the resource to check
+     * @returns True if the resource with 'key' is an alias, false otherwise.
+     * 
+      * @internal
+     * @deprecated This API is ICU internal only and part of a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public boolean isAlias(String k)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//this only applies to tables
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return false;
+    	}
+    	int i = getIndexOfKey(k);
+    	if(i > size || i < 0)
+    	{
+    		return false;	
+    	}
+    	return isAlias(i);
+    }
+    
+    private int getIndexOfKey(String k)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return -1;
+    	}
+    	int index;
+        for(index = 0; index < size; index++)
+        {
+        	String curKey = getKey(index); 
+			if(k.equals(curKey))
+			{
+				return index;
+			}
+        }
+        return -1;
+    }
+    
+    /**
+     * This method can be used to retrieve the underlying alias path (aka where the alias points to)
+     * This method was written to allow conversion from ICU back to LDML format.
+     * 
+     * @param index
+     * @return
+     * @author Brian Rower
+     * @internal
+     * @deprecated This API is ICU internal only.
+     * @author Brian Rower
+     */
+    public String getAliasPath(int index)
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	if(!isAlias(index) || index > this.size)
+    	{
+    		return "";
+    	}
+    	
+    	return getStringValue(getResourceHandle(index));
+    }
+    
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath()
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	return getStringValue(resource);
+    }
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath(String k)
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	return getAliasPath(getIndexOfKey(k));
+    }
+    
+    /*
+     * Helper method for getKeysSafe
+     */
+    private String getKey(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	if(index > this.size)
+    	{
+    		return "";
+    	}
+    	//the offset of the table
+    	int offset = RES_GET_OFFSET(resource);
+    	
+    	//move past the 2 byte number for the count
+    	offset += getCharOffset(1);
+    	
+    	//grab the key string offset from the array
+        offset = getOffset(offset, index);
+        
+        return RES_GET_KEY(rawData, offset).toString();
+    }
+    
+    /**
+     * Returns an Enumeration of the keys belonging to this table or array.
+     * This method differs from the getKeys() method by not following alias paths. This method exposes 
+     * underlying alias's. For all general purposes of the ICU resource bundle please use getKeys().
+     * 
+     * @return Keys in this table or array.
+     * @internal
+     * @deprecated This API is ICU internal only and a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public Enumeration getKeysSafe()
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//the safeness only applies to tables, so use the other method if it's not a table
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return getKeys();
+    	}
+    	Vector v = new Vector();
+    	int index;
+        for(index = 0; index < size; index++)
+        {
+        	String curKey = getKey(index); 
+			v.add(curKey);
+        }
+    	return v.elements();
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundleImpl.java b/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
new file mode 100644
index 0000000..52c48fb
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
@@ -0,0 +1,331 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.HashMap;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+class ICUResourceBundleImpl {
+
+    static final class ResourceArray extends ICUResourceBundle {
+        protected String[] handleGetStringArray() {
+            String[] strings = new String[size];
+            UResourceBundleIterator iter = getIterator();
+            int i = 0;
+            while (iter.hasNext()) {
+                strings[i++] = iter.next().getString();
+            }
+            return strings;
+        }
+        /**
+         * @internal ICU 3.0
+         */
+        public String[] getStringArray() {
+            return handleGetStringArray();
+        }
+
+        protected UResourceBundle handleGetImpl(String indexStr, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            index[0] = getIndex(indexStr);
+            if (index[0] > -1) {
+                return handleGetImpl(index[0], table, requested, isAlias);
+            }
+            throw new UResourceTypeMismatchException("Could not get the correct value for index: "+ index);
+        }
+
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            int itemOffset = offset + getIntOffset(index + 1);
+            long itemResource = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,itemOffset);
+            String path = (isTopLevel == true) ? Integer.toString(index) : resPath + "/" + index;
+
+            return createBundleObject(Integer.toString(index), itemResource, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = getInt(rawData,offset);
+            return value;
+        }
+        ResourceArray(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.resource = resource;
+            this.key = key;
+            this.size = countItems();
+            this.resPath = resPath;
+            createLookupCache(); // Use bundle cache to access array entries
+        }
+    }
+    static final class ResourceBinary extends ICUResourceBundle {
+        private byte[] value;
+        public ByteBuffer getBinary() {
+            return ByteBuffer.wrap(value);
+        }
+        public byte [] getBinary(byte []ba) {
+            return value;
+        }
+        private byte[] getValue() {
+            int offset = RES_GET_OFFSET(resource);
+            int length = ICUResourceBundle.getInt(rawData,offset);
+            int byteOffset = offset + getIntOffset(1);
+            byte[] dst = new byte[length];
+            //if (ASSERT) Assert.assrt("byteOffset+length < rawData.length", byteOffset+length < rawData.length);
+            System.arraycopy(rawData, byteOffset, dst, 0, length);
+            return dst;
+        }
+        ResourceBinary(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.resource = resource;
+            this.key = key;
+            this.resPath = resPath;
+            value = getValue();
+
+        }
+    }
+    static final class ResourceInt extends ICUResourceBundle {
+        public int getInt() {
+            return RES_GET_INT(resource);
+        }
+        public int getUInt() {
+            long ret = RES_GET_UINT(resource);
+            return (int) ret;
+        }
+        ResourceInt(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.key = key;
+            this.resource = resource;
+            this.resPath = resPath;
+        }
+    }
+
+    static final class ResourceString extends ICUResourceBundle {
+        private String value;
+        public String getString() {
+            return value;
+        }
+        ResourceString(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            value = getStringValue(resource);
+            this.key = key;
+            this.resource = resource;
+            this.resPath = resPath;
+        }
+    }
+
+    static final class ResourceIntVector extends ICUResourceBundle {
+        private int[] value;
+        public int[] getIntVector() {
+            return value;
+        }
+        private int[] getValue() {
+            int offset = RES_GET_OFFSET(resource);
+            int length = ICUResourceBundle.getInt(rawData,offset);
+            int intOffset = offset + getIntOffset(1);
+            int[] val = new int[length];
+            //int byteLength = getIntOffset(length);
+
+            //if (ASSERT) Assert.assrt("(intOffset+byteLength)<rawData.length", (intOffset+byteLength)<rawData.length);
+
+            for(int i=0; i<length;i++){
+                val[i]=ICUResourceBundle.getInt(rawData, intOffset+getIntOffset(i));
+            }
+            return val;
+        }
+        ResourceIntVector(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.key = key;
+            this.resource = resource;
+            this.size = 1;
+            this.resPath = resPath;
+            value = getValue();
+        }
+    }
+
+    static final class ResourceTable extends ICUResourceBundle {
+
+        protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            if(size<=0){
+                return null;
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getCharOffset(1);
+            //int keyOffset = rawData.getChar(currentOffset);
+            /* do a binary search for the key */
+            index[0] = findKey(size, currentOffset, this, resKey);
+            if (index[0] == -1) {
+                //throw new MissingResourceException(ICUResourceBundleReader.getFullName(baseName, localeID),
+                //                                    localeID,
+                //                                    key);
+                return null;
+            }
+            currentOffset += getCharOffset(size + (~size & 1))
+                    + getIntOffset(index[0]);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData, currentOffset);
+            String path = (isTopLevel == true) ? resKey : resPath + "/" + resKey;
+
+            return createBundleObject(resKey, resOffset, path, table, requested, this, isAlias);
+        }
+
+        public int getOffset(int currentOffset, int index) {
+            return getChar(rawData, currentOffset + getCharOffset(index));
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getCharOffset(1);
+            int betterOffset = getOffset(currentOffset, index);
+            String itemKey = RES_GET_KEY(rawData, betterOffset).toString();
+            currentOffset += getCharOffset(size + (~size & 1))
+                    + getIntOffset(index);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? itemKey : resPath + "/" + itemKey;
+
+            return createBundleObject(itemKey, resOffset, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = getChar(rawData,offset);
+            return value;
+        }
+        ResourceTable(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            this(key, resPath, resource, bundle, false);
+        }
+        ResourceTable(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+            this.rawData = reader.getData();
+            this.rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+            this.noFallback = reader.getNoFallback();
+            this.baseName = baseName;
+            this.localeID = localeID;
+            this.ulocale = new ULocale(localeID);
+            this.loader = loader;
+            initialize(null, "", rootResource, null, isTopLevel);
+        }
+        void initialize(String resKey, String resourcePath, long resOffset,
+                ICUResourceBundle bundle, boolean topLevel){
+            if(bundle!=null){
+                assign(this, bundle);
+            }
+            key = resKey;
+            resource = resOffset;
+            isTopLevel = topLevel;
+            size = countItems();
+            resPath = resourcePath;
+            createLookupCache(); // Use bundle cache to access nested resources
+        }
+        ResourceTable(String key, String resPath, long resource,
+                ICUResourceBundle bundle, boolean isTopLevel) {
+            initialize(key, resPath, resource, bundle, isTopLevel);
+        }
+    }
+    static final class ResourceTable32 extends ICUResourceBundle{
+
+        protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getIntOffset(1);
+            //int keyOffset = rawData.getChar(currentOffset);
+            /* do a binary search for the key */
+            index[0] = findKey(size, currentOffset, this, resKey);
+            if (index[0] == -1) {
+                throw new MissingResourceException(
+                        "Could not find resource ",
+                        ICUResourceBundleReader.getFullName(baseName, localeID),
+                        resKey);
+            }
+            currentOffset += getIntOffset(size) + getIntOffset(index[0]);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? resKey : resPath + "/" + resKey;
+
+            return createBundleObject(resKey, resOffset, path, table, requested, this, isAlias);
+        }
+
+        public int getOffset(int currentOffset, int index) {
+            return ICUResourceBundle.getInt(rawData, currentOffset + getIntOffset(index));
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if(size<=0){
+                return null;
+            }
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getIntOffset(1)
+                    + getIntOffset(index);
+            int betterOffset = getOffset(currentOffset, 0);
+            String itemKey = RES_GET_KEY(rawData, betterOffset).toString();
+            currentOffset += getIntOffset(size);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? Integer.toString(index) : resPath + "/" + index;
+
+            return createBundleObject(itemKey, resOffset, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = ICUResourceBundle.getInt(rawData, offset);
+            return value;
+        }
+        ResourceTable32(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            this(key, resPath, resource, bundle, false);
+        }
+        ResourceTable32(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+            this.rawData = reader.getData();
+            this.rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+            this.noFallback = reader.getNoFallback();
+            this.baseName = baseName;
+            this.localeID = localeID;
+            this.ulocale = new ULocale(localeID);
+            this.loader = loader;
+            initialize(null, "", rootResource, null, isTopLevel);
+        }
+        void initialize(String resKey, String resourcePath, long resOffset,
+                ICUResourceBundle bundle, boolean topLevel){
+            if(bundle!=null){
+                assign(this, bundle);
+            }
+            key = resKey;
+            resource = resOffset;
+            isTopLevel = topLevel;
+            size = countItems();
+            resPath = resourcePath;
+            createLookupCache(); // Use bundle cache to access nested resources
+        }
+        ResourceTable32(String key, String resPath, long resource,
+                ICUResourceBundle bundle, boolean isTopLevel) {
+            initialize(key, resPath, resource, bundle, isTopLevel);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundleReader.java b/src/com/ibm/icu/impl/ICUResourceBundleReader.java
new file mode 100644
index 0000000..677dbb9
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundleReader.java
@@ -0,0 +1,298 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+
+
+/**
+ * This class reads the *.res resource bundle format
+ *
+ * (For the latest version of the file format documentation see
+ * ICU4C's source/common/uresdata.h file.)
+ *
+ * File format for .res resource bundle files (formatVersion=1.2)
+ *
+ * An ICU4C resource bundle file (.res) is a binary, memory-mappable file
+ * with nested, hierarchical data structures.
+ * It physically contains the following:
+ *
+ *   Resource root; -- 32-bit Resource item, root item for this bundle's tree;
+ *                     currently, the root item must be a table or table32 resource item
+ *   int32_t indexes[indexes[0]]; -- array of indexes for friendly
+ *                                   reading and swapping; see URES_INDEX_* above
+ *                                   new in formatVersion 1.1 (ICU 2.8)
+ *   char keys[]; -- characters for key strings
+ *                   (formatVersion 1.0: up to 65k of characters; 1.1: <2G)
+ *                   (minus the space for root and indexes[]),
+ *                   which consist of invariant characters (ASCII/EBCDIC) and are NUL-terminated;
+ *                   padded to multiple of 4 bytes for 4-alignment of the following data
+ *   data; -- data directly and indirectly indexed by the root item;
+ *            the structure is determined by walking the tree
+ *
+ * Each resource bundle item has a 32-bit Resource handle (see typedef above)
+ * which contains the item type number in its upper 4 bits (31..28) and either
+ * an offset or a direct value in its lower 28 bits (27..0).
+ * The order of items is undefined and only determined by walking the tree.
+ * Leaves of the tree may be stored first or last or anywhere in between,
+ * and it is in theory possible to have unreferenced holes in the file.
+ *
+ * Direct values:
+ * - Empty Unicode strings have an offset value of 0 in the Resource handle itself.
+ * - Integer values are 28-bit values stored in the Resource handle itself;
+ *   the interpretation of unsigned vs. signed integers is up to the application.
+ *
+ * All other types and values use 28-bit offsets to point to the item's data.
+ * The offset is an index to the first 32-bit word of the value, relative to the
+ * start of the resource data (i.e., the root item handle is at offset 0).
+ * To get byte offsets, the offset is multiplied by 4 (or shifted left by 2 bits).
+ * All resource item values are 4-aligned.
+ *
+ * The structures (memory layouts) for the values for each item type are listed
+ * in the table above.
+ *
+ * Nested, hierarchical structures: -------------
+ *
+ * Table items contain key-value pairs where the keys are 16-bit offsets to char * key strings.
+ * Key string offsets are also relative to the start of the resource data (of the root handle),
+ * i.e., the first string has an offset of 4 (after the 4-byte root handle).
+ *
+ * The values of these pairs are Resource handles.
+ *
+ * Array items are simple vectors of Resource handles.
+ *
+ * An alias item is special (and new in ICU 2.4): --------------
+ *
+ * Its memory layout is just like for a UnicodeString, but at runtime it resolves to
+ * another resource bundle's item according to the path in the string.
+ * This is used to share items across bundles that are in different lookup/fallback
+ * chains (e.g., large collation data among zh_TW and zh_HK).
+ * This saves space (for large items) and maintenance effort (less duplication of data).
+ *
+ * --------------------------------------------------------------------------
+ *
+ * Resource types:
+ *
+ * Most resources have their values stored at four-byte offsets from the start
+ * of the resource data. These values are at least 4-aligned.
+ * Some resource values are stored directly in the offset field of the Resource itself.
+ * See UResType in unicode/ures.h for enumeration constants for Resource types.
+ *
+ * Type Name            Memory layout of values
+ *                      (in parentheses: scalar, non-offset values)
+ *
+ * 0  Unicode String:   int32_t length, UChar[length], (UChar)0, (padding)
+ *                  or  (empty string ("") if offset==0)
+ * 1  Binary:           int32_t length, uint8_t[length], (padding)
+ *                      - this value should be 32-aligned -
+ * 2  Table:            uint16_t count, uint16_t keyStringOffsets[count], (uint16_t padding), Resource[count]
+ * 3  Alias:            (physically same value layout as string, new in ICU 2.4)
+ * 4  Table32:          int32_t count, int32_t keyStringOffsets[count], Resource[count]
+ *                      (new in formatVersion 1.1/ICU 2.8)
+ *
+ * 7  Integer:          (28-bit offset is integer value)
+ * 8  Array:            int32_t count, Resource[count]
+ *
+ * 14 Integer Vector:   int32_t length, int32_t[length]
+ * 15 Reserved:         This value denotes special purpose resources and is for internal use.
+ *
+ * Note that there are 3 types with data vector values:
+ * - Vectors of 8-bit bytes stored as type Binary.
+ * - Vectors of 16-bit words stored as type Unicode String
+ *                     (no value restrictions, all values 0..ffff allowed!).
+ * - Vectors of 32-bit words stored as type Integer Vector.
+ *
+ *
+ */
+public final class ICUResourceBundleReader implements ICUBinary.Authenticate{
+
+    /**
+     * File format version that this class understands.
+     * "ResB"
+     */
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x52, (byte)0x65, 
+                                                     (byte)0x73, (byte)0x42};
+
+    private static final String ICU_RESOURCE_SUFFIX = ".res";
+    
+    /* indexes[] value names; indexes are generally 32-bit (Resource) indexes */
+    private static final int    URES_INDEX_LENGTH           = 0;        /* [0] contains URES_INDEX_TOP==the length of indexes[] */
+    //private static final int    URES_INDEX_STRINGS_TOP      = 1;        /* [1] contains the top of the strings, */
+                                                                        /*     same as the bottom of resources, rounded up */
+    //private static final int    URES_INDEX_RESOURCES_TOP    = 2;        /* [2] contains the top of all resources */
+    private static final int    URES_INDEX_BUNDLE_TOP       = 3;        /* [3] contains the top of the bundle, */
+                                                                        /*     in case it were ever different from [2] */
+    //private static final int    URES_INDEX_MAX_TABLE_LENGTH = 4;        /* [4] max. length of any table */
+    private static final int    URES_INDEX_ATTRIBUTES       = 5;        /* [5] attributes bit set, see URES_ATT_* (new in formatVersion 1.2) */
+    //private static final int    URES_INDEX_TOP              = 6;
+
+    //private static final int    URES_STRINGS_BOTTOM=(1+URES_INDEX_TOP)*4;
+
+    /*
+     * Nofallback attribute, attribute bit 0 in indexes[URES_INDEX_ATTRIBUTES].
+     * New in formatVersion 1.2 (ICU 3.6).
+     *
+     * If set, then this resource bundle is a standalone bundle.
+     * If not set, then the bundle participates in locale fallback, eventually
+     * all the way to the root bundle.
+     * If indexes[] is missing or too short, then the attribute cannot be determined
+     * reliably. Dependency checking should ignore such bundles, and loading should
+     * use fallbacks.
+     */
+    private static final int URES_ATT_NO_FALLBACK = 1;
+
+    private static final boolean DEBUG = false;
+    
+    private byte[] /* formatVersion, */ dataVersion;
+
+    private int rootRes;
+    private int[] indexes;
+    private boolean noFallback; /* see URES_ATT_NO_FALLBACK */
+
+    private byte[] data;
+
+    private ICUResourceBundleReader(InputStream stream, String resolvedName){
+
+        BufferedInputStream bs = new BufferedInputStream(stream);
+        try{
+            if(DEBUG) System.out.println("The InputStream class is: " + stream.getClass().getName());
+            if(DEBUG) System.out.println("The BufferedInputStream class is: " + bs.getClass().getName());
+            if(DEBUG) System.out.println("The bytes avialable in stream before reading the header: " + bs.available());
+            
+            dataVersion = ICUBinary.readHeader(bs,DATA_FORMAT_ID,this);
+
+            if(DEBUG) System.out.println("The bytes available in stream after reading the header: " + bs.available());
+                 
+            readData(bs);
+            stream.close();
+        }catch(IOException ex){
+            throw new RuntimeException("Data file "+ resolvedName+ " is corrupt - " + ex.getMessage());   
+        }
+    }
+    public static ICUResourceBundleReader getReader(String baseName, String localeName, ClassLoader root){
+        String resolvedName = getFullName(baseName, localeName);
+        InputStream stream = ICUData.getStream(root,resolvedName);
+        
+        if(stream==null){
+            return null;
+        }
+        ICUResourceBundleReader reader = new ICUResourceBundleReader(stream, resolvedName);
+        return reader;
+    }
+
+    private static void writeInt(int i, byte[] bytes, int offset) {
+        bytes[offset++]=(byte)(i>>24);
+        bytes[offset++]=(byte)(i>>16);
+        bytes[offset++]=(byte)(i>>8);
+        bytes[offset]=(byte)i;
+    }
+
+    private void readData(InputStream stream)
+            throws IOException{
+        
+        DataInputStream ds = new DataInputStream(stream);
+
+        if(DEBUG) System.out.println("The DataInputStream class is: " + ds.getClass().getName());
+        if(DEBUG) System.out.println("The available bytes in the stream before reading the data: "+ds.available());
+
+        /*
+         * The following will read two integers before ds.mark().
+         * Later, the two integers need to be placed into data[],
+         * then ds.reset(), then ds.readFully(into rest of data[]).
+         *
+         * This is necessary because we don't know the readLimit for ds.mark()
+         * until we have read the second integer (indexLength).
+         */
+        rootRes = ds.readInt();
+
+        // read the variable-length indexes[] array
+        int indexLength = ds.readInt();
+        ds.mark((indexLength-1)*4);
+
+        indexes = new int[indexLength];
+        indexes[URES_INDEX_LENGTH] = indexLength;
+
+        for(int i=1; i<indexLength; i++){
+            indexes[i] = ds.readInt();   
+        }
+
+        // determine if this resource bundle falls back to a parent bundle
+        // along normal locale ID fallback
+        noFallback =
+            indexLength > URES_INDEX_ATTRIBUTES &&
+            (indexes[URES_INDEX_ATTRIBUTES]&URES_ATT_NO_FALLBACK)!=0;
+
+        // read the entire bundle (after the header) into data[]
+        // put rootRes and indexLength into data[0..7]
+        // and the rest of the data into data[8..length-1]
+        int length = indexes[URES_INDEX_BUNDLE_TOP]*4;
+        if(DEBUG) System.out.println("The number of bytes in the bundle: "+length);
+    
+        data = new byte[length];
+        writeInt(rootRes, data, 0);
+        writeInt(indexLength, data, 4);
+
+        // now reset to the mark, which was set after reading rootRes and indexLength
+        ds.reset();
+        ds.readFully(data, 8, length-8);
+    }
+
+    /**
+     * Gets the full name of the resource with suffix.
+     */
+    public static String getFullName(String baseName, String localeName){
+        if(baseName==null || baseName.length()==0){
+            if(localeName.length()==0){
+                return ULocale.getDefault().toString()+ICU_RESOURCE_SUFFIX;   
+            }else{
+                return localeName+ICU_RESOURCE_SUFFIX;
+            }
+        }else{
+            if(baseName.indexOf('.')==-1){
+                if(baseName.charAt(baseName.length()-1)!= '/'){
+                    return baseName+"/"+localeName+ICU_RESOURCE_SUFFIX;
+                }else{
+                    return baseName+localeName+ICU_RESOURCE_SUFFIX;   
+                }
+            }else{
+                baseName = baseName.replace('.','/');
+                if(localeName.length()==0){
+                    return baseName+ICU_RESOURCE_SUFFIX;   
+                }else{
+                    return baseName+"_"+localeName+ICU_RESOURCE_SUFFIX;
+                }
+            }
+        }
+    }
+    
+    public VersionInfo getVersion(){
+        return VersionInfo.getInstance(dataVersion[0],dataVersion[1],dataVersion[2],dataVersion[3]);   
+    }
+    public boolean isDataVersionAcceptable(byte version[]){
+        // while ICU4C can read formatVersion 1.0 and up,
+        // ICU4J requires 1.1 as a minimum
+        // formatVersion = version;
+        return version[0] == 1 && version[1] >= 1;
+    }
+    
+    public byte[] getData(){
+        return data;   
+    }
+    public int getRootResource() {
+        return rootRes;
+    }
+    public boolean getNoFallback() {
+        return noFallback;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUService.java b/src/com/ibm/icu/impl/ICUService.java
new file mode 100644
index 0000000..f43ff15
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUService.java
@@ -0,0 +1,989 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <p>A Service provides access to service objects that implement a
+ * particular service, e.g. transliterators.  Users provide a String
+ * id (for example, a locale string) to the service, and get back an
+ * object for that id.  Service objects can be any kind of object.
+ * The service object is cached and returned for later queries, so
+ * generally it should not be mutable, or the caller should clone the
+ * object before modifying it.</p>
+ *
+ * <p>Services 'canonicalize' the query id and use the canonical id to
+ * query for the service.  The service also defines a mechanism to
+ * 'fallback' the id multiple times.  Clients can optionally request
+ * the actual id that was matched by a query when they use an id to
+ * retrieve a service object.</p>
+ *
+ * <p>Service objects are instantiated by Factory objects registered with
+ * the service.  The service queries each Factory in turn, from most recently
+ * registered to earliest registered, until one returns a service object.
+ * If none responds with a service object, a fallback id is generated,
+ * and the process repeats until a service object is returned or until
+ * the id has no further fallbacks.</p>
+ *
+ * <p>Factories can be dynamically registered and unregistered with the
+ * service.  When registered, a Factory is installed at the head of
+ * the factory list, and so gets 'first crack' at any keys or fallback
+ * keys.  When unregistered, it is removed from the service and can no
+ * longer be located through it.  Service objects generated by this
+ * factory and held by the client are unaffected.</p>
+ *
+ * <p>ICUService uses Keys to query factories and perform
+ * fallback.  The Key defines the canonical form of the id, and
+ * implements the fallback strategy.  Custom Keys can be defined that
+ * parse complex IDs into components that Factories can more easily
+ * use.  The Key can cache the results of this parsing to save
+ * repeated effort.  ICUService provides convenience APIs that
+ * take Strings and generate default Keys for use in querying.</p>
+ *
+ * <p>ICUService provides API to get the list of ids publicly
+ * supported by the service (although queries aren't restricted to
+ * this list).  This list contains only 'simple' IDs, and not fully
+ * unique ids.  Factories are associated with each simple ID and
+ * the responsible factory can also return a human-readable localized
+ * version of the simple ID, for use in user interfaces.  ICUService
+ * can also provide a sorted collection of the all the localized visible
+ * ids.</p>
+ *
+ * <p>ICUService implements ICUNotifier, so that clients can register
+ * to receive notification when factories are added or removed from
+ * the service.  ICUService provides a default EventListener subinterface,
+ * ServiceListener, which can be registered with the service.  When
+ * the service changes, the ServiceListener's serviceChanged method
+ * is called, with the service as the only argument.</p>
+ *
+ * <p>The ICUService API is both rich and generic, and it is expected
+ * that most implementations will statically 'wrap' ICUService to
+ * present a more appropriate API-- for example, to declare the type
+ * of the objects returned from get, to limit the factories that can
+ * be registered with the service, or to define their own listener
+ * interface with a custom callback method.  They might also customize
+ * ICUService by overriding it, for example, to customize the Key and
+ * fallback strategy.  ICULocaleService is a customized service that
+ * uses Locale names as ids and uses Keys that implement the standard
+ * resource bundle fallback strategy.<p>
+ */
+public class ICUService extends ICUNotifier {
+    /**
+     * Name used for debugging.
+     */
+    protected final String name;
+
+    /**
+     * Constructor.
+     */
+    public ICUService() {
+        name = "";
+    }
+
+    private static final boolean DEBUG = ICUDebug.enabled("service");
+    /**
+     * Construct with a name (useful for debugging).
+     */
+    public ICUService(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Access to factories is protected by a read-write lock.  This is
+     * to allow multiple threads to read concurrently, but keep
+     * changes to the factory list atomic with respect to all readers.
+     */
+    private final ICURWLock factoryLock = new ICURWLock();
+
+    /**
+     * All the factories registered with this service.
+     */
+    private final List factories = new ArrayList();
+
+    /**
+     * Record the default number of factories for this service.
+     * Can be set by markDefault.
+     */
+    private int defaultSize = 0;
+
+    /**
+     * Keys are used to communicate with factories to generate an
+     * instance of the service.  Keys define how ids are
+     * canonicalized, provide both a current id and a current
+     * descriptor to use in querying the cache and factories, and
+     * determine the fallback strategy.</p>
+     *
+     * <p>Keys provide both a currentDescriptor and a currentID.
+     * The descriptor contains an optional prefix, followed by '/'
+     * and the currentID.  Factories that handle complex keys,
+     * for example number format factories that generate multiple
+     * kinds of formatters for the same locale, use the descriptor
+     * to provide a fully unique identifier for the service object,
+     * while using the currentID (in this case, the locale string),
+     * as the visible IDs that can be localized.
+     *
+     * <p> The default implementation of Key has no fallbacks and
+     * has no custom descriptors.</p>
+     */
+    public static class Key {
+        private final String id;
+
+        /**
+         * Construct a key from an id.
+         */
+        public Key(String id) {
+            this.id = id;
+        }
+
+        /**
+         * Return the original ID used to construct this key.
+         */
+        public final String id() {
+            return id;
+        }
+
+        /**
+         * Return the canonical version of the original ID.  This implementation
+         * returns the original ID unchanged.
+         */
+        public String canonicalID() {
+            return id;
+        }
+
+        /**
+         * Return the (canonical) current ID.  This implementation
+         * returns the canonical ID.
+         */
+        public String currentID() {
+            return canonicalID();
+        }
+
+        /**
+         * Return the current descriptor.  This implementation returns
+         * the current ID.  The current descriptor is used to fully
+         * identify an instance of the service in the cache.  A
+         * factory may handle all descriptors for an ID, or just a
+         * particular descriptor.  The factory can either parse the
+         * descriptor or use custom API on the key in order to
+         * instantiate the service.
+         */
+        public String currentDescriptor() {
+            return "/" + currentID();
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.  The current ID will change if there
+         * is a fallback.  No currentIDs should be repeated, and fallback
+         * must eventually return false.  This implmentation has no fallbacks
+         * and always returns false.
+         */
+        public boolean fallback() {
+            return false;
+        }
+
+        /**
+         * If a key created from id would eventually fallback to match the
+         * canonical ID of this key, return true.
+         */
+        public boolean isFallbackOf(String idToCheck) {
+            return canonicalID().equals(idToCheck);
+        }
+    }
+
+    /**
+     * Factories generate the service objects maintained by the
+     * service.  A factory generates a service object from a key,
+     * updates id->factory mappings, and returns the display name for
+     * a supported id.
+     */
+    public static interface Factory {
+
+        /**
+         * Create a service object from the key, if this factory
+         * supports the key.  Otherwise, return null.
+         *
+         * <p>If the factory supports the key, then it can call
+         * the service's getKey(Key, String[], Factory) method
+         * passing itself as the factory to get the object that
+         * the service would have created prior to the factory's
+         * registration with the service.  This can change the
+         * key, so any information required from the key should
+         * be extracted before making such a callback.
+         */
+        public Object create(Key key, ICUService service);
+
+        /**
+         * Update the result IDs (not descriptors) to reflect the IDs
+         * this factory handles.  This function and getDisplayName are
+         * used to support ICUService.getDisplayNames.  Basically, the
+         * factory has to determine which IDs it will permit to be
+         * available, and of those, which it will provide localized
+         * display names for.  In most cases this reflects the IDs that
+         * the factory directly supports.
+         */
+        public void updateVisibleIDs(Map result);
+
+        /**
+         * Return the display name for this id in the provided locale.
+         * This is an localized id, not a descriptor.  If the id is
+         * not visible or not defined by the factory, return null.
+         * If locale is null, return id unchanged.
+         */
+        public String getDisplayName(String id, ULocale locale);
+    }
+
+    /**
+     * A default implementation of factory.  This provides default
+     * implementations for subclasses, and implements a singleton
+     * factory that matches a single id  and returns a single
+     * (possibly deferred-initialized) instance.  This implements
+     * updateVisibleIDs to add a mapping from its ID to itself
+     * if visible is true, or to remove any existing mapping
+     * for its ID if visible is false.
+     */
+    public static class SimpleFactory implements Factory {
+        protected Object instance;
+        protected String id;
+        protected boolean visible;
+
+        /**
+         * Convenience constructor that calls SimpleFactory(Object, String, boolean)
+         * with visible true.
+         */
+        public SimpleFactory(Object instance, String id) {
+            this(instance, id, true);
+        }
+
+        /**
+         * Construct a simple factory that maps a single id to a single
+         * service instance.  If visible is true, the id will be visible.
+         * Neither the instance nor the id can be null.
+         */
+        public SimpleFactory(Object instance, String id, boolean visible) {
+            if (instance == null || id == null) {
+                throw new IllegalArgumentException("Instance or id is null");
+            }
+            this.instance = instance;
+            this.id = id;
+            this.visible = visible;
+        }
+
+        /**
+         * Return the service instance if the factory's id is equal to
+         * the key's currentID.  Service is ignored.
+         */
+        public Object create(Key key, ICUService service) {
+            if (id.equals(key.currentID())) {
+                return instance;
+            }
+            return null;
+        }
+
+        /**
+         * If visible, adds a mapping from id -> this to the result,
+         * otherwise removes id from result.
+         */
+        public void updateVisibleIDs(Map result) {
+            if (visible) {
+                result.put(id, this);
+            } else {
+                result.remove(id);
+            }
+        }
+
+        /**
+         * If this.id equals id, returns id regardless of locale,
+         * otherwise returns null.  (This default implementation has
+         * no localized id information.)
+         */
+        public String getDisplayName(String identifier, ULocale locale) {
+            return (visible && id.equals(identifier)) ? identifier : null;
+        }
+
+        /**
+         * For debugging.
+         */
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append(", id: ");
+            buf.append(id);
+            buf.append(", visible: ");
+            buf.append(visible);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * Convenience override for get(String, String[]). This uses
+     * createKey to create a key for the provided descriptor.
+     */
+    public Object get(String descriptor) {
+        return getKey(createKey(descriptor), null);
+    }
+
+    /**
+     * Convenience override for get(Key, String[]).  This uses
+     * createKey to create a key from the provided descriptor.
+     */
+    public Object get(String descriptor, String[] actualReturn) {
+        if (descriptor == null) {
+            throw new NullPointerException("descriptor must not be null");
+        }
+        return getKey(createKey(descriptor), actualReturn);
+    }
+
+    /**
+     * Convenience override for get(Key, String[]).
+     */
+    public Object getKey(Key key) {
+        return getKey(key, null);
+    }
+
+    /**
+     * <p>Given a key, return a service object, and, if actualReturn
+     * is not null, the descriptor with which it was found in the
+     * first element of actualReturn.  If no service object matches
+     * this key, return null, and leave actualReturn unchanged.</p>
+     *
+     * <p>This queries the cache using the key's descriptor, and if no
+     * object in the cache matches it, tries the key on each
+     * registered factory, in order.  If none generates a service
+     * object for the key, repeats the process with each fallback of
+     * the key, until either one returns a service object, or the key
+     * has no fallback.</p>
+     *
+     * <p>If key is null, just returns null.</p>
+     */
+    public Object getKey(Key key, String[] actualReturn) {
+        return getKey(key, actualReturn, null);
+    }
+
+    // debugging
+    // Map hardRef;
+
+    public Object getKey(Key key, String[] actualReturn, Factory factory) {
+        if (factories.size() == 0) {
+            return handleDefault(key, actualReturn);
+        }
+
+        if (DEBUG) System.out.println("Service: " + name + " key: " + key.canonicalID());
+
+        CacheEntry result = null;
+        if (key != null) {
+            try {
+                // The factory list can't be modified until we're done,
+                // otherwise we might update the cache with an invalid result.
+                // The cache has to stay in synch with the factory list.
+                factoryLock.acquireRead();
+
+                Map cache = null;
+                SoftReference cref = cacheref; // copy so we don't need to sync on this
+                if (cref != null) {
+                    if (DEBUG) System.out.println("Service " + name + " ref exists");
+                    cache = (Map)cref.get();
+                }
+                if (cache == null) {
+                    if (DEBUG) System.out.println("Service " + name + " cache was empty");
+                    // synchronized since additions and queries on the cache must be atomic
+                    // they can be interleaved, though
+                    cache = Collections.synchronizedMap(new HashMap());
+//                  hardRef = cache; // debug
+                    cref = new SoftReference(cache);
+                }
+
+                String currentDescriptor = null;
+                ArrayList cacheDescriptorList = null;
+                boolean putInCache = false;
+
+                int NDebug = 0;
+
+                int startIndex = 0;
+                int limit = factories.size();
+                boolean cacheResult = true;
+                if (factory != null) {
+                    for (int i = 0; i < limit; ++i) {
+                        if (factory == factories.get(i)) {
+                            startIndex = i + 1;
+                            break;
+                        }
+                    }
+                    if (startIndex == 0) {
+                        throw new IllegalStateException("Factory " + factory + "not registered with service: " + this);
+                    }
+                    cacheResult = false;
+                }
+
+            outer:
+                do {
+                    currentDescriptor = key.currentDescriptor();
+                    if (DEBUG) System.out.println(name + "[" + NDebug++ + "] looking for: " + currentDescriptor);
+                    result = (CacheEntry)cache.get(currentDescriptor);
+                    if (result != null) {
+                        if (DEBUG) System.out.println(name + " found with descriptor: " + currentDescriptor);
+                        break outer;
+                    } else {
+                        if (DEBUG) System.out.println("did not find: " + currentDescriptor + " in cache");
+                    }
+
+                    // first test of cache failed, so we'll have to update
+                    // the cache if we eventually succeed-- that is, if we're
+                    // going to update the cache at all.
+                    putInCache = cacheResult;
+
+                    //  int n = 0;
+                    int index = startIndex;
+                    while (index < limit) {
+                        Factory f = (Factory)factories.get(index++);
+                        if (DEBUG) System.out.println("trying factory[" + (index-1) + "] " + f.toString());
+                        Object service = f.create(key, this);
+                        if (service != null) {
+                            result = new CacheEntry(currentDescriptor, service);
+                            if (DEBUG) System.out.println(name + " factory supported: " + currentDescriptor + ", caching");
+                            break outer;
+                        } else {
+                            if (DEBUG) System.out.println("factory did not support: " + currentDescriptor);
+                        }
+                    }
+
+                    // prepare to load the cache with all additional ids that
+                    // will resolve to result, assuming we'll succeed.  We
+                    // don't want to keep querying on an id that's going to
+                    // fallback to the one that succeeded, we want to hit the
+                    // cache the first time next goaround.
+                    if (cacheDescriptorList == null) {
+                        cacheDescriptorList = new ArrayList(5);
+                    }
+                    cacheDescriptorList.add(currentDescriptor);
+
+                } while (key.fallback());
+
+                if (result != null) {
+                    if (putInCache) {
+                        if (DEBUG) System.out.println("caching '" + result.actualDescriptor + "'");
+                        cache.put(result.actualDescriptor, result);
+                        if (cacheDescriptorList != null) {
+                            Iterator iter = cacheDescriptorList.iterator();
+                            while (iter.hasNext()) {
+                                String desc = (String)iter.next();
+                                if (DEBUG) System.out.println(name + " adding descriptor: '" + desc + "' for actual: '" + result.actualDescriptor + "'");
+
+                                cache.put(desc, result);
+                            }
+                        }
+                        // Atomic update.  We held the read lock all this time
+                        // so we know our cache is consistent with the factory list.
+                        // We might stomp over a cache that some other thread
+                        // rebuilt, but that's the breaks.  They're both good.
+                        cacheref = cref;
+                    }
+
+                    if (actualReturn != null) {
+                        // strip null prefix
+                        if (result.actualDescriptor.indexOf("/") == 0) {
+                            actualReturn[0] = result.actualDescriptor.substring(1);
+                        } else {
+                            actualReturn[0] = result.actualDescriptor;
+                        }
+                    }
+
+                    if (DEBUG) System.out.println("found in service: " + name);
+
+                    return result.service;
+                }
+            }
+            finally {
+                factoryLock.releaseRead();
+            }
+        }
+
+        if (DEBUG) System.out.println("not found in service: " + name);
+
+        return handleDefault(key, actualReturn);
+    }
+    private SoftReference cacheref;
+
+    // Record the actual id for this service in the cache, so we can return it
+    // even if we succeed later with a different id.
+    private static final class CacheEntry {
+        final String actualDescriptor;
+        final Object service;
+        CacheEntry(String actualDescriptor, Object service) {
+            this.actualDescriptor = actualDescriptor;
+            this.service = service;
+        }
+    }
+
+
+    /**
+     * Default handler for this service if no factory in the list
+     * handled the key.
+     */
+    protected Object handleDefault(Key key, String[] actualIDReturn) {
+        return null;
+    }
+
+    /**
+     * Convenience override for getVisibleIDs(String) that passes null
+     * as the fallback, thus returning all visible IDs.
+     */
+    public Set getVisibleIDs() {
+        return getVisibleIDs(null);
+    }
+
+    /**
+     * <p>Return a snapshot of the visible IDs for this service.  This
+     * set will not change as Factories are added or removed, but the
+     * supported ids will, so there is no guarantee that all and only
+     * the ids in the returned set are visible and supported by the
+     * service in subsequent calls.</p>
+     *
+     * <p>matchID is passed to createKey to create a key.  If the
+     * key is not null, it is used to filter out ids that don't have
+     * the key as a fallback.
+     */
+    public Set getVisibleIDs(String matchID) {
+        Set result = getVisibleIDMap().keySet();
+
+        Key fallbackKey = createKey(matchID);
+
+        if (fallbackKey != null) {
+            Set temp = new HashSet(result.size());
+            Iterator iter = result.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                if (fallbackKey.isFallbackOf(id)) {
+                    temp.add(id);
+                }
+            }
+            result = temp;
+        }
+        return result;
+    }
+
+    /**
+     * Return a map from visible ids to factories.
+     */
+    private Map getVisibleIDMap() {
+        Map idcache = null;
+        SoftReference ref = idref;
+        if (ref != null) {
+            idcache = (Map)ref.get();
+        }
+        while (idcache == null) {
+            synchronized (this) { // or idref-only lock?
+                if (ref == idref || idref == null) {
+                    // no other thread updated idref before we got the lock, so
+                    // grab the factory list and update it ourselves
+                    try {
+                        factoryLock.acquireRead();
+                        idcache = new HashMap();
+                        ListIterator lIter = factories.listIterator(factories.size());
+                        while (lIter.hasPrevious()) {
+                            Factory f = (Factory)lIter.previous();
+                            f.updateVisibleIDs(idcache);
+                        }
+                        idcache = Collections.unmodifiableMap(idcache);
+                        idref = new SoftReference(idcache);
+                    }
+                    finally {
+                        factoryLock.releaseRead();
+                    }
+                } else {
+                    // another thread updated idref, but gc may have stepped
+                    // in and undone its work, leaving idcache null.  If so,
+                    // retry.
+                    ref = idref;
+                    idcache = (Map)ref.get();
+                }
+            }
+        }
+
+        return idcache;
+    }
+    private SoftReference idref;
+
+    /**
+     * Convenience override for getDisplayName(String, ULocale) that
+     * uses the current default locale.
+     */
+    public String getDisplayName(String id) {
+        return getDisplayName(id, ULocale.getDefault());
+    }
+
+    /**
+     * Given a visible id, return the display name in the requested locale.
+     * If there is no directly supported id corresponding to this id, return
+     * null.
+     */
+    public String getDisplayName(String id, ULocale locale) {
+        Map m = getVisibleIDMap();
+        Factory f = (Factory)m.get(id);
+        if (f != null) {
+            return f.getDisplayName(id, locale);
+        }
+
+        Key key = createKey(id);
+        while (key.fallback()) {
+            f = (Factory)m.get(key.currentID());
+            if (f != null) {
+                return f.getDisplayName(id, locale);
+            }
+        }
+        
+        return null;
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that 
+     * uses the current default Locale as the locale, null as
+     * the comparator, and null for the matchID.
+     */
+    public SortedMap getDisplayNames() {
+        ULocale locale = ULocale.getDefault();
+        return getDisplayNames(locale, null, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the comparator, and null for the matchID.
+     */
+    public SortedMap getDisplayNames(ULocale locale) {
+        return getDisplayNames(locale, null, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the matchID, thus returning all display names.
+     */
+    public SortedMap getDisplayNames(ULocale locale, Comparator com) {
+        return getDisplayNames(locale, com, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the comparator.
+     */
+    public SortedMap getDisplayNames(ULocale locale, String matchID) {
+        return getDisplayNames(locale, null, matchID);
+    }
+
+    /**
+     * Return a snapshot of the mapping from display names to visible
+     * IDs for this service.  This set will not change as factories
+     * are added or removed, but the supported ids will, so there is
+     * no guarantee that all and only the ids in the returned map will
+     * be visible and supported by the service in subsequent calls,
+     * nor is there any guarantee that the current display names match
+     * those in the set.  The display names are sorted based on the
+     * comparator provided.
+     */
+    public SortedMap getDisplayNames(ULocale locale, Comparator com, String matchID) {
+        SortedMap dncache = null;
+        LocaleRef ref = dnref;
+
+        if (ref != null) {
+            dncache = ref.get(locale, com);
+        }
+
+        while (dncache == null) {
+            synchronized (this) {
+                if (ref == dnref || dnref == null) {
+                    dncache = new TreeMap(com); // sorted
+                    
+                    Map m = getVisibleIDMap();
+                    Iterator ei = m.entrySet().iterator();
+                    while (ei.hasNext()) {
+                        Entry e = (Entry)ei.next();
+                        String id = (String)e.getKey();
+                        Factory f = (Factory)e.getValue();
+                        dncache.put(f.getDisplayName(id, locale), id);
+                    }
+
+                    dncache = Collections.unmodifiableSortedMap(dncache);
+                    dnref = new LocaleRef(dncache, locale, com);
+                } else {
+                    ref = dnref;
+                    dncache = ref.get(locale, com);
+                }
+            }
+        }
+
+        Key matchKey = createKey(matchID);
+        if (matchKey == null) {
+            return dncache;
+        }
+
+        SortedMap result = new TreeMap(dncache);
+        Iterator iter = result.entrySet().iterator();
+        while (iter.hasNext()) {
+            Entry e = (Entry)iter.next();
+            if (!matchKey.isFallbackOf((String)e.getValue())) {
+                iter.remove();
+            }
+        }
+        return result;
+    }
+
+    // we define a class so we get atomic simultaneous access to the
+    // locale, comparator, and corresponding map.
+    private static class LocaleRef {
+        private final ULocale locale;
+        private SoftReference ref;
+        private Comparator com;
+
+        LocaleRef(Map dnCache, ULocale locale, Comparator com) {
+            this.locale = locale;
+            this.com = com;
+            this.ref = new SoftReference(dnCache);
+        }
+
+
+        SortedMap get(ULocale loc, Comparator comp) {
+            SortedMap m = (SortedMap)ref.get();
+            if (m != null &&
+                this.locale.equals(loc) &&
+                (this.com == comp || (this.com != null && this.com.equals(comp)))) {
+
+                return m;
+            }
+            return null;
+        }
+    }
+    private LocaleRef dnref;
+
+    /**
+     * Return a snapshot of the currently registered factories.  There
+     * is no guarantee that the list will still match the current
+     * factory list of the service subsequent to this call.
+     */
+    public final List factories() {
+        try {
+            factoryLock.acquireRead();
+            return new ArrayList(factories);
+        }
+        finally{
+            factoryLock.releaseRead();
+        }
+    }
+
+    /**
+     * A convenience override of registerObject(Object, String, boolean)
+     * that defaults visible to true.
+     */
+    public Factory registerObject(Object obj, String id) {
+        return registerObject(obj, id, true);
+    }
+
+    /**
+     * Register an object with the provided id.  The id will be
+     * canonicalized.  The canonicalized ID will be returned by
+     * getVisibleIDs if visible is true.
+     */
+    public Factory registerObject(Object obj, String id, boolean visible) {
+        String canonicalID = createKey(id).canonicalID();
+        return registerFactory(new SimpleFactory(obj, canonicalID, visible));
+    }
+
+    /**
+     * Register a Factory.  Returns the factory if the service accepts
+     * the factory, otherwise returns null.  The default implementation
+     * accepts all factories.
+     */
+    public final Factory registerFactory(Factory factory) {
+        if (factory == null) {
+            throw new NullPointerException();
+        }
+        try {
+            factoryLock.acquireWrite();
+            factories.add(0, factory);
+            clearCaches();
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+        notifyChanged();
+        return factory;
+    }
+
+    /**
+     * Unregister a factory.  The first matching registered factory will
+     * be removed from the list.  Returns true if a matching factory was
+     * removed.
+     */
+    public final boolean unregisterFactory(Factory factory) {
+        if (factory == null) {
+            throw new NullPointerException();
+        }
+
+        boolean result = false;
+        try {
+            factoryLock.acquireWrite();
+            if (factories.remove(factory)) {
+                result = true;
+                clearCaches();
+            }
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+
+        if (result) {
+            notifyChanged();
+        }
+        return result;
+    }
+
+    /**
+     * Reset the service to the default factories.  The factory
+     * lock is acquired and then reInitializeFactories is called.
+     */
+    public final void reset() {
+        try {
+            factoryLock.acquireWrite();
+            reInitializeFactories();
+            clearCaches();
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+        notifyChanged();
+    }
+
+    /**
+     * Reinitialize the factory list to its default state.  By default
+     * this clears the list.  Subclasses can override to provide other
+     * default initialization of the factory list.  Subclasses must
+     * not call this method directly, as it must only be called while
+     * holding write access to the factory list.
+     */
+    protected void reInitializeFactories() {
+        factories.clear();
+    }
+
+    /**
+     * Return true if the service is in its default state.  The default
+     * implementation returns true if there are no factories registered.
+     */
+    public boolean isDefault() {
+        return factories.size() == defaultSize;
+    }
+
+    /**
+     * Set the default size to the current number of registered factories.
+     * Used by subclasses to customize the behavior of isDefault.
+     */
+    protected void markDefault() {
+        defaultSize = factories.size();
+    }
+
+    /**
+     * Create a key from an id.  This creates a Key instance.
+     * Subclasses can override to define more useful keys appropriate
+     * to the factories they accept.  If id is null, returns null.
+     */
+    public Key createKey(String id) {
+        return id == null ? null : new Key(id);
+    }
+
+    /**
+     * Clear caches maintained by this service.  Subclasses can
+     * override if they implement additional that need to be cleared
+     * when the service changes. Subclasses should generally not call
+     * this method directly, as it must only be called while
+     * synchronized on this.
+     */
+    protected void clearCaches() {
+        // we don't synchronize on these because methods that use them
+        // copy before use, and check for changes if they modify the
+        // caches.
+        cacheref = null;
+        idref = null;
+        dnref = null;
+    }
+
+    /**
+     * Clears only the service cache.
+     * This can be called by subclasses when a change affects the service
+     * cache but not the id caches, e.g., when the default locale changes
+     * the resolution of ids changes, but not the visible ids themselves.
+     */
+    protected void clearServiceCache() {
+        cacheref = null;
+    }
+
+    /**
+     * ServiceListener is the listener that ICUService provides by default.
+     * ICUService will notifiy this listener when factories are added to
+     * or removed from the service.  Subclasses can provide
+     * different listener interfaces that extend EventListener, and modify
+     * acceptsListener and notifyListener as appropriate.
+     */
+    public static interface ServiceListener extends EventListener {
+        public void serviceChanged(ICUService service);
+    }
+
+    /**
+     * Return true if the listener is accepted; by default this
+     * requires a ServiceListener.  Subclasses can override to accept
+     * different listeners.
+     */
+    protected boolean acceptsListener(EventListener l) {
+        return l instanceof ServiceListener;
+    }
+
+    /**
+     * Notify the listener, which by default is a ServiceListener.
+     * Subclasses can override to use a different listener.
+     */
+    protected void notifyListener(EventListener l) {
+        ((ServiceListener)l).serviceChanged(this);
+    }
+
+    /**
+     * Return a string describing the statistics for this service.
+     * This also resets the statistics. Used for debugging purposes.
+     */
+    public String stats() {
+        ICURWLock.Stats stats = factoryLock.resetStats();
+        if (stats != null) {
+            return stats.toString();
+        }
+        return "no stats";
+    }
+
+    /**
+     * Return the name of this service. This will be the empty string if none was assigned.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns the result of super.toString, appending the name in curly braces.
+     */
+    public String toString() {
+        return super.toString() + "{" + name + "}";
+    }
+}
diff --git a/src/com/ibm/icu/impl/ImplicitCEGenerator.java b/src/com/ibm/icu/impl/ImplicitCEGenerator.java
new file mode 100644
index 0000000..80b5926
--- /dev/null
+++ b/src/com/ibm/icu/impl/ImplicitCEGenerator.java
@@ -0,0 +1,389 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * For generation of Implicit CEs
+ * @author Mark Davis
+ *
+ * Cleaned up so that changes can be made more easily.
+ * Old values:
+# First Implicit: E26A792D
+# Last Implicit: E3DC70C0
+# First CJK: E0030300
+# Last CJK: E0A9DD00
+# First CJK_A: E0A9DF00
+# Last CJK_A: E0DE3100
+@internal
+ */
+public class ImplicitCEGenerator {
+    
+    /**
+     * constants
+     */
+    static final boolean DEBUG = false;
+    
+    static final long topByte = 0xFF000000L;
+    static final long bottomByte = 0xFFL;
+    static final long fourBytes = 0xFFFFFFFFL;
+    
+    static final int MAX_INPUT = 0x220001; // 2 * Unicode range + 2
+
+    public static final int CJK_BASE = 0x4E00;
+    public static final int CJK_LIMIT = 0x9FFF+1;
+    public static final int CJK_COMPAT_USED_BASE = 0xFA0E;
+    public static final int CJK_COMPAT_USED_LIMIT = 0xFA2F+1;
+    public static final int CJK_A_BASE = 0x3400;
+    public static final int CJK_A_LIMIT = 0x4DBF+1;
+    public static final int CJK_B_BASE = 0x20000;
+    public static final int CJK_B_LIMIT = 0x2A6DF+1;
+    
+//    private void throwError(String title, int cp) {
+//        throw new IllegalArgumentException(title + "\t" + Utility.hex(cp, 6) + "\t" + 
+//                                           Utility.hex(getImplicitFromRaw(cp) & fourBytes));
+//    }
+//
+//    private void throwError(String title, long ce) {
+//        throw new IllegalArgumentException(title + "\t" + Utility.hex(ce & fourBytes));
+//    }
+//
+//    private void show(int i) {
+//        if (i >= 0 && i <= MAX_INPUT) {
+//            System.out.println(Utility.hex(i) + "\t" + Utility.hex(getImplicitFromRaw(i) & fourBytes));
+//        } 
+//    }
+    
+    /**
+     * Precomputed by constructor
+     */
+    int final3Multiplier;
+    int final4Multiplier;
+    int final3Count;
+    int final4Count;
+    int medialCount;
+    int min3Primary;
+    int min4Primary;
+    int max4Primary;
+    int minTrail;
+    int maxTrail;
+    int max3Trail;
+    int max4Trail;
+    int min4Boundary;
+    
+    public int getGap4() {
+        return final4Multiplier - 1;
+    }
+    
+    public int getGap3() {
+        return final3Multiplier - 1;
+    }
+    
+    // old comment
+    // we must skip all 00, 01, 02, FF bytes, so most bytes have 252 values
+    // we must leave a gap of 01 between all values of the last byte, so the last byte has 126 values (3 byte case)
+    // we shift so that HAN all has the same first primary, for compression.
+    // for the 4 byte case, we make the gap as large as we can fit.
+
+    /**
+     * Supply parameters for generating implicit CEs
+     */
+    public ImplicitCEGenerator(int minPrimary, int maxPrimary) {
+        // 13 is the largest 4-byte gap we can use without getting 2 four-byte forms.
+        this(minPrimary, maxPrimary, 0x04, 0xFE, 1, 1);
+    }
+    
+    /**
+     * Set up to generate implicits.
+     * @param minPrimary
+     * @param maxPrimary
+     * @param minTrail final byte
+     * @param maxTrail final byte
+     * @param gap3 the gap we leave for tailoring for 3-byte forms
+     * @param primaries3count number of 3-byte primarys we can use (normally 1)
+     */
+    public ImplicitCEGenerator(int minPrimary, int maxPrimary, int minTrail, int maxTrail, int gap3, int primaries3count) {
+        // some simple parameter checks
+        if (minPrimary < 0 || minPrimary >= maxPrimary || maxPrimary > 0xFF) {
+            throw new IllegalArgumentException("bad lead bytes");
+        }
+        if (minTrail < 0 || minTrail >= maxTrail || maxTrail > 0xFF) {
+            throw new IllegalArgumentException("bad trail bytes");
+        }
+        if (primaries3count < 1) {
+            throw new IllegalArgumentException("bad three-byte primaries");
+        }
+        
+        this.minTrail = minTrail;
+        this.maxTrail = maxTrail;
+        
+        min3Primary = minPrimary;
+        max4Primary = maxPrimary;
+        // compute constants for use later.
+        // number of values we can use in trailing bytes
+        // leave room for empty values between AND above, e.g. if gap = 2
+        // range 3..7 => +3 -4 -5 -6 -7: so 1 value
+        // range 3..8 => +3 -4 -5 +6 -7 -8: so 2 values
+        // range 3..9 => +3 -4 -5 +6 -7 -8 -9: so 2 values
+        final3Multiplier = gap3 + 1;
+        final3Count = (maxTrail - minTrail + 1) / final3Multiplier;
+        max3Trail = minTrail + (final3Count - 1) * final3Multiplier;
+        
+        // medials can use full range
+        medialCount = (maxTrail - minTrail + 1);
+        // find out how many values fit in each form
+        int threeByteCount = medialCount * final3Count;
+        // now determine where the 3/4 boundary is.
+        // we use 3 bytes below the boundary, and 4 above
+        int primariesAvailable = maxPrimary - minPrimary + 1;
+        int primaries4count = primariesAvailable - primaries3count;        
+        
+        int min3ByteCoverage = primaries3count * threeByteCount;
+        min4Primary = minPrimary + primaries3count;
+        min4Boundary = min3ByteCoverage;
+        // Now expand out the multiplier for the 4 bytes, and redo.
+ 
+        int totalNeeded = MAX_INPUT - min4Boundary;
+        int neededPerPrimaryByte = divideAndRoundUp(totalNeeded, primaries4count);
+        if (DEBUG) System.out.println("neededPerPrimaryByte: " + neededPerPrimaryByte);
+        
+        int neededPerFinalByte = divideAndRoundUp(neededPerPrimaryByte, medialCount * medialCount);
+        if (DEBUG) System.out.println("neededPerFinalByte: " + neededPerFinalByte);
+        
+        int gap4 = (maxTrail - minTrail - 1) / neededPerFinalByte;
+        if (DEBUG) System.out.println("expandedGap: " + gap4);
+        if (gap4 < 1) throw new IllegalArgumentException("must have larger gap4s");
+        
+        final4Multiplier = gap4 + 1;
+        final4Count = neededPerFinalByte;
+        max4Trail = minTrail + (final4Count - 1) * final4Multiplier;
+        
+        if (primaries4count * medialCount * medialCount * final4Count < MAX_INPUT) {
+            throw new IllegalArgumentException("internal error");
+        } 
+        if (DEBUG) {
+            System.out.println("final4Count: " + final4Count);
+            for (int counter = 0; counter < final4Count; ++counter) {
+                int value = minTrail + (1 + counter)*final4Multiplier;
+                System.out.println(counter + "\t" + value + "\t" + Utility.hex(value));
+            }
+        }
+    }
+    
+    static public int divideAndRoundUp(int a, int b) {
+        return 1 + (a-1)/b;
+    }
+
+    /**
+     * Converts implicit CE into raw integer
+     * @param implicit
+     * @return -1 if illegal format
+     */
+    public int getRawFromImplicit(int implicit) {
+        int result;
+        int b3 = implicit & 0xFF;
+        implicit >>= 8;
+        int b2 = implicit & 0xFF;
+        implicit >>= 8;
+        int b1 = implicit & 0xFF;
+        implicit >>= 8;
+        int b0 = implicit & 0xFF;
+
+        // simple parameter checks
+        if (b0 < min3Primary || b0 > max4Primary
+            || b1 < minTrail || b1 > maxTrail) return -1;
+        // normal offsets
+        b1 -= minTrail;
+
+        // take care of the final values, and compose
+        if (b0 < min4Primary) {
+            if (b2 < minTrail || b2 > max3Trail || b3 != 0) return -1;
+            b2 -= minTrail;
+            int remainder = b2 % final3Multiplier;
+            if (remainder != 0) return -1;
+            b0 -= min3Primary;
+            b2 /= final3Multiplier;
+            result = ((b0 * medialCount) + b1) * final3Count + b2;
+        } else {
+            if (b2 < minTrail || b2 > maxTrail
+                || b3 < minTrail || b3 > max4Trail) return -1;
+            b2 -= minTrail;
+            b3 -= minTrail;
+            int remainder = b3 % final4Multiplier;
+            if (remainder != 0) return -1;
+            b3 /= final4Multiplier;
+            b0 -= min4Primary;
+            result = (((b0 * medialCount) + b1) * medialCount + b2) * final4Count + b3 + min4Boundary;
+        }
+        // final check
+        if (result < 0 || result > MAX_INPUT) return -1;
+        return result;
+    }
+    
+    /**
+     * Generate the implicit CE, from raw integer.
+     * Left shifted to put the first byte at the top of an int.
+     * @param cp code point
+     * @return Primary implicit weight
+     */
+    public int getImplicitFromRaw(int cp) {
+        if (cp < 0 || cp > MAX_INPUT) {
+            throw new IllegalArgumentException("Code point out of range " + Utility.hex(cp));
+        }
+        int last0 = cp - min4Boundary;
+        if (last0 < 0) {
+            int last1 = cp / final3Count;
+            last0 = cp % final3Count;
+                        
+            int last2 = last1 / medialCount;
+            last1 %= medialCount;
+            
+            last0 = minTrail + last0*final3Multiplier; // spread out, leaving gap at start
+            last1 = minTrail + last1; // offset
+            last2 = min3Primary + last2; // offset
+            
+            if (last2 >= min4Primary) {
+                throw new IllegalArgumentException("4-byte out of range: " + 
+                                                   Utility.hex(cp) + ", " + Utility.hex(last2));
+            } 
+            
+            return (last2 << 24) + (last1 << 16) + (last0 << 8);
+        } else {
+            int last1 = last0 / final4Count;
+            last0 %= final4Count;
+            
+            int last2 = last1 / medialCount;
+            last1 %= medialCount;
+            
+            int last3 = last2 / medialCount;
+            last2 %= medialCount;
+            
+            last0 = minTrail + last0*final4Multiplier; // spread out, leaving gap at start           
+            last1 = minTrail + last1; // offset
+            last2 = minTrail + last2; // offset
+            last3 = min4Primary + last3; // offset
+            
+            if (last3 > max4Primary) {
+                throw new IllegalArgumentException("4-byte out of range: " + 
+                                                   Utility.hex(cp) + ", " + Utility.hex(last3));
+            } 
+            
+            return (last3 << 24) + (last2 << 16) + (last1 << 8) + last0;
+        }
+    }
+
+    /**
+     * Gets an Implicit from a code point. Internally, 
+     * swaps (which produces a raw value 0..220000, 
+     * then converts raw to implicit.
+     * @param cp
+     * @return Primary implicit weight
+     */
+    public int getImplicitFromCodePoint(int cp) {
+        if (DEBUG) System.out.println("Incoming: " + Utility.hex(cp));
+        
+        // Produce Raw value
+        // note, we add 1 so that the first value is always empty!!
+        cp = ImplicitCEGenerator.swapCJK(cp) + 1;
+        // we now have a range of numbers from 0 to 220000.
+            
+        if (DEBUG) System.out.println("CJK swapped: " + Utility.hex(cp));
+            
+        return getImplicitFromRaw(cp);
+    }
+
+    /**
+     * Function used to: 
+     * a) collapse the 2 different Han ranges from UCA into one (in the right order), and
+     * b) bump any non-CJK characters by 10FFFF.
+     * The relevant blocks are:
+     * A:    4E00..9FFF; CJK Unified Ideographs
+     *       F900..FAFF; CJK Compatibility Ideographs
+     * B:    3400..4DBF; CJK Unified Ideographs Extension A
+     *       20000..XX;  CJK Unified Ideographs Extension B (and others later on)
+     * As long as
+     *   no new B characters are allocated between 4E00 and FAFF, and
+     *   no new A characters are outside of this range,
+     * (very high probability) this simple code will work.
+     * The reordered blocks are:
+     * Block1 is CJK
+     * Block2 is CJK_COMPAT_USED
+     * Block3 is CJK_A
+     * (all contiguous)
+     * Any other CJK gets its normal code point
+     * Any non-CJK gets +10FFFF
+     * When we reorder Block1, we make sure that it is at the very start,
+     * so that it will use a 3-byte form.
+     * Warning: the we only pick up the compatibility characters that are
+     * NOT decomposed, so that block is smaller!
+     */
+    
+    static int NON_CJK_OFFSET = 0x110000;
+        
+    static int swapCJK(int i) {
+        
+        if (i >= CJK_BASE) {
+            if (i < CJK_LIMIT)              return i - CJK_BASE;
+            
+            if (i < CJK_COMPAT_USED_BASE)   return i + NON_CJK_OFFSET;
+            
+            if (i < CJK_COMPAT_USED_LIMIT)  return i - CJK_COMPAT_USED_BASE
+                                                + (CJK_LIMIT - CJK_BASE);
+            if (i < CJK_B_BASE)             return i + NON_CJK_OFFSET;
+            
+            if (i < CJK_B_LIMIT)            return i; // non-BMP-CJK
+            
+            return i + NON_CJK_OFFSET;  // non-CJK
+        }
+        if (i < CJK_A_BASE)                 return i + NON_CJK_OFFSET;
+        
+        if (i < CJK_A_LIMIT)                return i - CJK_A_BASE
+                                                + (CJK_LIMIT - CJK_BASE) 
+                                                + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE);
+        return i + NON_CJK_OFFSET; // non-CJK
+    }
+    
+
+    /**
+     * @return Minimal trail value
+     */
+    public int getMinTrail() {
+        return minTrail;
+    }
+
+    /**
+     * @return Maximal trail value
+     */
+    public int getMaxTrail() {
+        return maxTrail;
+    }
+    
+    public int getCodePointFromRaw(int i) {
+        i--;
+        int result = 0;
+        if(i >= NON_CJK_OFFSET) {
+            result = i - NON_CJK_OFFSET;
+        } else if(i >= CJK_B_BASE) {
+            result = i;
+        } else if(i < CJK_A_LIMIT + (CJK_LIMIT - CJK_BASE) + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE)) { 
+            // rest of CJKs, compacted
+            if(i < CJK_LIMIT - CJK_BASE) {
+                result = i + CJK_BASE;
+            } else if(i < (CJK_LIMIT - CJK_BASE) + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE)) {
+                result = i + CJK_COMPAT_USED_BASE - (CJK_LIMIT - CJK_BASE);
+            } else {
+                result = i + CJK_A_BASE - (CJK_LIMIT - CJK_BASE) - (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE);
+            }
+        } else {
+            result = -1;
+        }
+        return result;
+    }
+
+    public int getRawFromCodePoint(int i) {
+        return swapCJK(i)+1;
+    }
+}
diff --git a/src/com/ibm/icu/impl/IntTrie.java b/src/com/ibm/icu/impl/IntTrie.java
new file mode 100644
index 0000000..d0ee7ca
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrie.java
@@ -0,0 +1,331 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Trie implementation which stores data in int, 32 bits.
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+public class IntTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate object which provides methods to parse the char 
+    *                        data
+    * @throws IOException thrown when data reading fails
+    */
+    public IntTrie(InputStream inputStream, DataManipulate dataManipulate)
+                                                    throws IOException
+    {
+        super(inputStream, dataManipulate);
+        if (!isIntTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a int trie.");
+        }
+    }
+
+    /**
+     * Make a dummy IntTrie.
+     * A dummy trie is an empty runtime trie, used when a real data trie cannot
+     * be loaded.
+     *
+     * The trie always returns the initialValue,
+     * or the leadUnitValue for lead surrogate code points.
+     * The Latin-1 part is always set up to be linear.
+     *
+     * @param initialValue the initial value that is set for all code points
+     * @param leadUnitValue the value for lead surrogate code _units_ that do not
+     *                      have associated supplementary data
+     * @param dataManipulate object which provides methods to parse the char data
+     */
+    public IntTrie(int initialValue, int leadUnitValue, DataManipulate dataManipulate) {
+        super(new char[BMP_INDEX_LENGTH+SURROGATE_BLOCK_COUNT], HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_, dataManipulate);
+
+        int dataLength, latin1Length, i, limit;
+        char block;
+
+        /* calculate the actual size of the dummy trie data */
+
+        /* max(Latin-1, block 0) */
+        dataLength=latin1Length= INDEX_STAGE_1_SHIFT_<=8 ? 256 : DATA_BLOCK_LENGTH;
+        if(leadUnitValue!=initialValue) {
+            dataLength+=DATA_BLOCK_LENGTH;
+        }
+        m_data_=new int[dataLength];
+        m_dataLength_=dataLength;
+
+        m_initialValue_=initialValue;
+
+        /* fill the index and data arrays */
+
+        /* indexes are preset to 0 (block 0) */
+
+        /* Latin-1 data */
+        for(i=0; i<latin1Length; ++i) {
+            m_data_[i]=initialValue;
+        }
+
+        if(leadUnitValue!=initialValue) {
+            /* indexes for lead surrogate code units to the block after Latin-1 */
+            block=(char)(latin1Length>>INDEX_STAGE_2_SHIFT_);
+            i=0xd800>>INDEX_STAGE_1_SHIFT_;
+            limit=0xdc00>>INDEX_STAGE_1_SHIFT_;
+            for(; i<limit; ++i) {
+                m_index_[i]=block;
+            }
+
+            /* data for lead surrogate code units */
+            limit=latin1Length+DATA_BLOCK_LENGTH;
+            for(i=latin1Length; i<limit; ++i) {
+                m_data_[i]=leadUnitValue;
+            }
+        }
+    }
+
+    // public methods --------------------------------------------------
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    */
+    public final int getCodePointValue(int ch)
+    {
+        int offset;
+
+        // fastpath for U+0000..U+D7FF
+        if(0 <= ch && ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // copy of getRawOffset()
+            offset = (m_index_[ch >> INDEX_STAGE_1_SHIFT_] << INDEX_STAGE_2_SHIFT_) 
+                    + (ch & INDEX_STAGE_3_MASK_);
+            return m_data_[offset];
+        }
+
+        // handle U+D800..U+10FFFF
+        offset = getCodePointOffset(ch);
+        return (offset >= 0) ? m_data_[offset] : m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    */
+    public final int getLeadValue(char ch)
+    {
+        return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    */
+    public final int getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    */
+    public final int getSurrogateValue(char lead, char trail)
+    {
+        if (!UTF16.isLeadSurrogate(lead) || !UTF16.isTrailSurrogate(trail)) {
+            throw new IllegalArgumentException(
+                "Argument characters do not form a supplementary character");
+        }
+        // get fold position for the next trail surrogate
+        int offset = getSurrogateOffset(lead, trail);
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+
+        // return m_initialValue_ if there is an error
+        return m_initialValue_;
+    }
+
+    /**
+    * Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.
+    * @param leadvalue the value of a lead surrogate that contains the
+    *        folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    */
+    public final int getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+            return m_data_[getRawOffset(offset,
+                                         (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+    /**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final int getLatin1LinearValue(char ch) 
+    {
+        return m_data_[INDEX_STAGE_3_MASK_ + 1 + ch];
+    }
+
+    /**
+     * Checks if the argument Trie has the same data as this Trie
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        boolean result = super.equals(other);
+        if (result && other instanceof IntTrie) {
+            IntTrie othertrie = (IntTrie)other;
+            if (m_initialValue_ != othertrie.m_initialValue_
+                || !Arrays.equals(m_data_, othertrie.m_data_)) {
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+    ///CLOVER:ON
+    
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                    throws IOException
+    {
+        super.unserialize(inputStream);
+        // one used for initial value
+        m_data_               = new int[m_dataLength_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataLength_; i ++) {
+            m_data_[i] = input.readInt();
+        }
+        m_initialValue_ = m_data_[0];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in TrieIterator
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.impl.TrieIterator
+    */
+    protected final int getValue(int index)
+    {
+      return m_data_[index];
+    }
+    
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+
+    // package private methods -----------------------------------------
+    
+    /**
+     * Internal constructor for builder use
+     * @param index the index array to be slotted into this trie
+     * @param data the data array to be slotted into this trie
+     * @param initialvalue the initial value for this trie
+     * @param options trie options to use
+     * @param datamanipulate folding implementation
+     */
+    IntTrie(char index[], int data[], int initialvalue, int options,
+            DataManipulate datamanipulate)
+    {
+        super(index, options, datamanipulate);
+        m_data_ = data;
+        m_dataLength_ = m_data_.length;
+        m_initialValue_ = initialvalue;
+    }
+    
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private int m_initialValue_;
+    /**
+    * Array of char data
+    */
+    private int m_data_[];
+}
diff --git a/src/com/ibm/icu/impl/IntTrieBuilder.java b/src/com/ibm/icu/impl/IntTrieBuilder.java
new file mode 100644
index 0000000..25fc349
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrieBuilder.java
@@ -0,0 +1,791 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import java.util.Arrays;
+import java.io.OutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+/**
+ * Builder class to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @author             Syn Wee Quek
+ */
+public class IntTrieBuilder extends TrieBuilder
+{
+    // public constructor ----------------------------------------------
+                
+    /**
+     * Copy constructor
+     */
+    public IntTrieBuilder(IntTrieBuilder table)
+    {
+        super(table);
+        m_data_ = new int[m_dataCapacity_];
+        System.arraycopy(table.m_data_, 0, m_data_, 0, m_dataLength_);
+        m_initialValue_ = table.m_initialValue_;
+        m_leadUnitValue_ = table.m_leadUnitValue_;
+    }
+    
+    /**
+     * Constructs a build table
+     * @param aliasdata data to be filled into table
+     * @param maxdatalength maximum data length allowed in table
+     * @param initialvalue inital data value
+     * @param latin1linear is latin 1 to be linear
+     */
+    public IntTrieBuilder(int aliasdata[], int maxdatalength, 
+                          int initialvalue, int leadunitvalue, 
+                          boolean latin1linear) 
+    {
+        super();
+        if (maxdatalength < DATA_BLOCK_LENGTH || (latin1linear 
+                                                  && maxdatalength < 1024)) {
+            throw new IllegalArgumentException(
+                                               "Argument maxdatalength is too small");
+        }
+            
+        if (aliasdata != null) {
+            m_data_ = aliasdata;
+        } 
+        else {
+            m_data_ = new int[maxdatalength];
+        }
+        
+        // preallocate and reset the first data block (block index 0)
+        int j = DATA_BLOCK_LENGTH;
+        
+        if (latin1linear) {
+            // preallocate and reset the first block (number 0) and Latin-1 
+            // (U+0000..U+00ff) after that made sure above that 
+            // maxDataLength >= 1024
+            // set indexes to point to consecutive data blocks
+            int i = 0;
+            do {
+                // do this at least for trie->index[0] even if that block is 
+                // only partly used for Latin-1
+                m_index_[i ++] = j;
+                j += DATA_BLOCK_LENGTH;
+            } while (i < (256 >> SHIFT_));
+        }
+        
+        m_dataLength_ = j;
+        // reset the initially allocated blocks to the initial value
+        Arrays.fill(m_data_, 0, m_dataLength_, initialvalue);
+        m_initialValue_ = initialvalue;
+        m_leadUnitValue_ = leadunitvalue;
+        m_dataCapacity_ = maxdatalength;
+        m_isLatin1Linear_ = latin1linear;
+        m_isCompacted_ = false;
+    }
+
+    // public methods -------------------------------------------------------
+     
+    /*public final void print()
+      {
+      int i = 0;
+      int oldvalue = m_index_[i];
+      int count = 0;
+      System.out.println("index length " + m_indexLength_ 
+      + " --------------------------");
+      while (i < m_indexLength_) {
+      if (m_index_[i] != oldvalue) {
+      System.out.println("index has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      count = 0;
+      oldvalue = m_index_[i];
+      }
+      count ++;
+      i ++;
+      }
+      System.out.println("index has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      i = 0;
+      oldvalue = m_data_[i];
+      count = 0;
+      System.out.println("data length " + m_dataLength_ 
+      + " --------------------------");
+      while (i < m_dataLength_) {
+      if (m_data_[i] != oldvalue) {
+      if ((oldvalue & 0xf1000000) == 0xf1000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x320;
+      oldvalue = 0xf1000000 | temp;
+      }
+      if ((oldvalue & 0xf2000000) == 0xf2000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x14a;
+      oldvalue = 0xf2000000 | temp;
+      }
+      System.out.println("data has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      count = 0;
+      oldvalue = m_data_[i];
+      }
+      count ++;
+      i ++;
+      }
+      if ((oldvalue & 0xf1000000) == 0xf1000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x320;
+      oldvalue = 0xf1000000 | temp;
+      }
+      if ((oldvalue & 0xf2000000) == 0xf2000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x14a;
+      oldvalue = 0xf2000000 | temp;
+      }
+      System.out.println("data has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      }
+    */   
+    /**
+     * Gets a 32 bit data from the table data
+     * @param ch codepoint which data is to be retrieved
+     * @return the 32 bit data
+     */
+    public int getValue(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return 0;
+        }
+    
+        int block = m_index_[ch >> SHIFT_];
+        return m_data_[Math.abs(block) + (ch & MASK_)];
+    }
+    
+    /**
+     * Get a 32 bit data from the table data
+     * @param ch  code point for which data is to be retrieved.
+     * @param inBlockZero  Output parameter, inBlockZero[0] returns true if the
+     *                      char maps into block zero, otherwise false.
+     * @return the 32 bit data value.
+     */
+    public int getValue(int ch, boolean [] inBlockZero) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            if (inBlockZero != null) {
+                inBlockZero[0] = true;
+            }
+            return 0;
+        }
+    
+        int block = m_index_[ch >> SHIFT_];
+        if (inBlockZero != null) {
+            inBlockZero[0] = (block == 0);
+        }
+        return m_data_[Math.abs(block) + (ch & MASK_)];
+    }
+    
+    
+    /**
+     * Sets a 32 bit data in the table data
+     * @param ch codepoint which data is to be set
+     * @param value to set
+     * @return true if the set is successful, otherwise 
+     *              if the table has been compacted return false
+     */
+    public boolean setValue(int ch, int value) 
+    {
+        // valid, uncompacted trie and valid c? 
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return false;
+        }
+    
+        int block = getDataBlock(ch);
+        if (block < 0) {
+            return false;
+        }
+    
+        m_data_[block + (ch & MASK_)] = value;
+        return true;
+    }
+    
+    /**
+     * Serializes the build table with 32 bit data
+     * @param datamanipulate builder raw fold method implementation
+     * @param triedatamanipulate result trie fold method
+     * @return a new trie
+     */
+    public IntTrie serialize(TrieBuilder.DataManipulate datamanipulate, 
+                             Trie.DataManipulate triedatamanipulate)
+    {
+        if (datamanipulate == null) {
+            throw new IllegalArgumentException("Parameters can not be null");
+        }
+        // fold and compact if necessary, also checks that indexLength is 
+        // within limits 
+        if (!m_isCompacted_) {
+            // compact once without overlap to improve folding
+            compact(false);
+            // fold the supplementary part of the index array
+            fold(datamanipulate);
+            // compact again with overlap for minimum data array length
+            compact(true);
+            m_isCompacted_ = true;
+        }
+        // is dataLength within limits? 
+        if (m_dataLength_ >= MAX_DATA_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Data length too small");
+        }
+    
+        char index[] = new char[m_indexLength_];
+        int data[] = new int[m_dataLength_];
+        // write the index (stage 1) array and the 32-bit data (stage 2) array
+        // write 16-bit index values shifted right by INDEX_SHIFT_ 
+        for (int i = 0; i < m_indexLength_; i ++) {
+            index[i] = (char)(m_index_[i] >>> INDEX_SHIFT_);
+        }
+        // write 32-bit data values
+        System.arraycopy(m_data_, 0, data, 0, m_dataLength_);
+        
+        int options = SHIFT_ | (INDEX_SHIFT_ << OPTIONS_INDEX_SHIFT_);
+        options |= OPTIONS_DATA_IS_32_BIT_;
+        if (m_isLatin1Linear_) {
+            options |= OPTIONS_LATIN1_IS_LINEAR_;
+        }
+        return new IntTrie(index, data, m_initialValue_, options, 
+                           triedatamanipulate);
+    }
+    
+    
+    /**
+     * Serializes the build table to an output stream.
+     * 
+     * Compacts the build-time trie after all values are set, and then
+     * writes the serialized form onto an output stream.
+     * 
+     * After this, this build-time Trie can only be serialized again and/or closed;
+     * no further values can be added.
+     * 
+     * This function is the rough equivalent of utrie_seriaize() in ICU4C.
+     * 
+     * @param os the output stream to which the seriaized trie will be written.
+     *         If nul, the function still returns the size of the serialized Trie.
+     * @param reduceTo16Bits If true, reduce the data size to 16 bits.  The resulting
+     *         serialized form can then be used to create a CharTrie.
+     * @param datamanipulate builder raw fold method implementation
+     * @return the number of bytes written to the output stream.
+     */
+     public int serialize(OutputStream os, boolean reduceTo16Bits,
+            TrieBuilder.DataManipulate datamanipulate)  throws IOException {
+         if (datamanipulate == null) {
+             throw new IllegalArgumentException("Parameters can not be null");
+         }
+
+         // fold and compact if necessary, also checks that indexLength is 
+         // within limits 
+         if (!m_isCompacted_) {
+             // compact once without overlap to improve folding
+             compact(false);
+             // fold the supplementary part of the index array
+             fold(datamanipulate);
+             // compact again with overlap for minimum data array length
+             compact(true);
+             m_isCompacted_ = true;
+         }
+         
+         // is dataLength within limits? 
+         int length;
+         if (reduceTo16Bits) {
+             length = m_dataLength_ + m_indexLength_;
+         } else {
+             length = m_dataLength_;
+         }
+         if (length >= MAX_DATA_LENGTH_) {
+             throw new ArrayIndexOutOfBoundsException("Data length too small");
+         }
+         
+         //  struct UTrieHeader {
+         //      int32_t   signature;
+         //      int32_t   options  (a bit field)
+         //      int32_t   indexLength
+         //      int32_t   dataLength
+         length = Trie.HEADER_LENGTH_ + 2*m_indexLength_;
+         if(reduceTo16Bits) {
+             length+=2*m_dataLength_;
+         } else {
+             length+=4*m_dataLength_;
+         }
+         
+         if (os == null) {
+             // No output stream.  Just return the length of the serialized Trie, in bytes.
+             return length;
+         }
+
+         DataOutputStream dos = new DataOutputStream(os);
+         dos.writeInt(Trie.HEADER_SIGNATURE_);  
+         
+         int options = Trie.INDEX_STAGE_1_SHIFT_ | (Trie.INDEX_STAGE_2_SHIFT_<<Trie.HEADER_OPTIONS_INDEX_SHIFT_);
+         if(!reduceTo16Bits) {
+             options |= Trie.HEADER_OPTIONS_DATA_IS_32_BIT_;
+         }
+         if(m_isLatin1Linear_) {
+             options |= Trie.HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_;
+         }
+         dos.writeInt(options);
+         
+         dos.writeInt(m_indexLength_);
+         dos.writeInt(m_dataLength_);
+         
+         /* write the index (stage 1) array and the 16/32-bit data (stage 2) array */
+         if(reduceTo16Bits) {
+             /* write 16-bit index values shifted right by UTRIE_INDEX_SHIFT, after adding indexLength */
+             for (int i=0; i<m_indexLength_; i++) {
+                 int v = (m_index_[i] + m_indexLength_) >>> Trie.INDEX_STAGE_2_SHIFT_;
+                 dos.writeChar(v);
+             }
+             
+             /* write 16-bit data values */
+             for(int i=0; i<m_dataLength_; i++) {
+                 int v = m_data_[i] & 0x0000ffff;
+                 dos.writeChar(v);
+             }
+         } else {
+             /* write 16-bit index values shifted right by UTRIE_INDEX_SHIFT */
+             for (int i=0; i<m_indexLength_; i++) {
+                 int v = (m_index_[i]) >>> Trie.INDEX_STAGE_2_SHIFT_;
+                 dos.writeChar(v);
+             }
+             
+             /* write 32-bit data values */
+             for(int i=0; i<m_dataLength_; i++) {
+                 dos.writeInt(m_data_[i]);
+             }
+        }
+
+         return length;
+
+    }
+    
+    
+    /**
+     * Set a value in a range of code points [start..limit].
+     * All code points c with start &lt;= c &lt; limit will get the value if
+     * overwrite is true or if the old value is 0.
+     * @param start the first code point to get the value
+     * @param limit one past the last code point to get the value
+     * @param value the value
+     * @param overwrite flag for whether old non-initial values are to be 
+     *        overwritten
+     * @return false if a failure occurred (illegal argument or data array 
+     *               overrun)
+     */
+    public boolean setRange(int start, int limit, int value, 
+                            boolean overwrite) 
+    {
+        // repeat value in [start..limit[
+        // mark index values for repeat-data blocks by setting bit 31 of the 
+        // index values fill around existing values if any, if(overwrite)
+            
+        // valid, uncompacted trie and valid indexes?
+        if (m_isCompacted_ || start < UCharacter.MIN_VALUE 
+            || start > UCharacter.MAX_VALUE || limit < UCharacter.MIN_VALUE
+            || limit > (UCharacter.MAX_VALUE + 1) || start > limit) {
+            return false;
+        }
+            
+        if (start == limit) {
+            return true; // nothing to do
+        }
+        
+        if ((start & MASK_) != 0) {
+            // set partial block at [start..following block boundary[
+            int block = getDataBlock(start);
+            if (block < 0) {
+                return false;
+            }
+        
+            int nextStart = (start + DATA_BLOCK_LENGTH) & ~MASK_;
+            if (nextStart <= limit) {
+                fillBlock(block, start & MASK_, DATA_BLOCK_LENGTH,
+                          value, overwrite);
+                start = nextStart;
+            } 
+            else {
+                fillBlock(block, start & MASK_, limit & MASK_,
+                          value, overwrite);
+                return true;
+            }
+        }
+        
+        // number of positions in the last, partial block
+        int rest = limit & MASK_;
+        
+        // round down limit to a block boundary 
+        limit &= ~MASK_;
+        
+        // iterate over all-value blocks 
+        int repeatBlock = 0;
+        if (value == m_initialValue_) {
+            // repeatBlock = 0; assigned above
+        } 
+        else {
+            repeatBlock = -1;
+        }
+        while (start < limit) {
+            // get index value 
+            int block = m_index_[start >> SHIFT_];
+            if (block > 0) {
+                // already allocated, fill in value
+                fillBlock(block, 0, DATA_BLOCK_LENGTH, value, overwrite);
+            } 
+            else if (m_data_[-block] != value && (block == 0 || overwrite)) {
+                // set the repeatBlock instead of the current block 0 or range 
+                // block 
+                if (repeatBlock >= 0) {
+                    m_index_[start >> SHIFT_] = -repeatBlock;
+                } 
+                else {
+                    // create and set and fill the repeatBlock
+                    repeatBlock = getDataBlock(start);
+                    if (repeatBlock < 0) {
+                        return false;
+                    }
+        
+                    // set the negative block number to indicate that it is a 
+                    // repeat block
+                    m_index_[start >> SHIFT_] = -repeatBlock;
+                    fillBlock(repeatBlock, 0, DATA_BLOCK_LENGTH, value, true);
+                }
+            }
+        
+            start += DATA_BLOCK_LENGTH;
+        }
+        
+        if (rest > 0) {
+            // set partial block at [last block boundary..limit[
+            int block = getDataBlock(start);
+            if (block < 0) {
+                return false;
+            }
+            fillBlock(block, 0, rest, value, overwrite);
+        }
+        
+        return true;
+    }
+    
+    // protected data member ------------------------------------------------
+                
+    protected int m_data_[];
+    protected int m_initialValue_;  
+    
+    //  private data member ------------------------------------------------
+        
+    private int m_leadUnitValue_;  
+     
+    // private methods ------------------------------------------------------
+   
+    private int allocDataBlock() 
+    {
+        int newBlock = m_dataLength_;
+        int newTop = newBlock + DATA_BLOCK_LENGTH;
+        if (newTop > m_dataCapacity_) {
+            // out of memory in the data array
+            return -1;
+        }
+        m_dataLength_ = newTop;
+        return newBlock;
+    }
+
+    /**
+     * No error checking for illegal arguments.
+     * @param ch codepoint to look for
+     * @return -1 if no new data block available (out of memory in data array)
+     */
+    private int getDataBlock(int ch) 
+    {
+        ch >>= SHIFT_;
+        int indexValue = m_index_[ch];
+        if (indexValue > 0) {
+            return indexValue;
+        }
+    
+        // allocate a new data block
+        int newBlock = allocDataBlock();
+        if (newBlock < 0) {
+            // out of memory in the data array 
+            return -1;
+        }
+        m_index_[ch] = newBlock;
+    
+        // copy-on-write for a block from a setRange()
+        System.arraycopy(m_data_, Math.abs(indexValue), m_data_, newBlock,  
+                         DATA_BLOCK_LENGTH << 2);
+        return newBlock;
+    }
+    
+    /**
+     * Compact a folded build-time trie.
+     * The compaction
+     * - removes blocks that are identical with earlier ones
+     * - overlaps adjacent blocks as much as possible (if overlap == true)
+     * - moves blocks in steps of the data granularity
+     * - moves and overlaps blocks that overlap with multiple values in the overlap region
+     *
+     * It does not
+     * - try to move and overlap blocks that are not already adjacent
+     * @param overlap flag
+     */
+    private void compact(boolean overlap) 
+    {
+        if (m_isCompacted_) {
+            return; // nothing left to do
+        }
+    
+        // compaction
+        // initialize the index map with "block is used/unused" flags
+        findUnusedBlocks();
+        
+        // if Latin-1 is preallocated and linear, then do not compact Latin-1 
+        // data
+        int overlapStart = DATA_BLOCK_LENGTH;
+        if (m_isLatin1Linear_ && SHIFT_ <= 8) {
+            overlapStart += 256;
+        }
+       
+        int newStart = DATA_BLOCK_LENGTH;
+        int i;
+        for (int start = newStart; start < m_dataLength_;) {
+            // start: index of first entry of current block
+            // newStart: index where the current block is to be moved
+            //           (right after current end of already-compacted data)
+            // skip blocks that are not used 
+            if (m_map_[start >>> SHIFT_] < 0) {
+                // advance start to the next block 
+                start += DATA_BLOCK_LENGTH;
+                // leave newStart with the previous block!
+                continue;
+            }
+            // search for an identical block
+            if (start >= overlapStart) {
+                i = findSameDataBlock(m_data_, newStart, start,
+                                          overlap ? DATA_GRANULARITY_ : DATA_BLOCK_LENGTH);
+                if (i >= 0) {
+                    // found an identical block, set the other block's index 
+                    // value for the current block
+                    m_map_[start >>> SHIFT_] = i;
+                    // advance start to the next block
+                    start += DATA_BLOCK_LENGTH;
+                    // leave newStart with the previous block!
+                    continue;
+                }
+            }
+            // see if the beginning of this block can be overlapped with the 
+            // end of the previous block
+            if(overlap && start>=overlapStart) {
+                /* look for maximum overlap (modulo granularity) with the previous, adjacent block */
+                for(i=DATA_BLOCK_LENGTH-DATA_GRANULARITY_;
+                    i>0 && !equal_int(m_data_, newStart-i, start, i);
+                    i-=DATA_GRANULARITY_) {}
+            } else {
+                i=0;
+            }
+            if (i > 0) {
+                // some overlap
+                m_map_[start >>> SHIFT_] = newStart - i;
+                // move the non-overlapping indexes to their new positions
+                start += i;
+                for (i = DATA_BLOCK_LENGTH - i; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else if (newStart < start) {
+                // no overlap, just move the indexes to their new positions
+                m_map_[start >>> SHIFT_] = newStart;
+                for (i = DATA_BLOCK_LENGTH; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else { // no overlap && newStart==start
+                m_map_[start >>> SHIFT_] = start;
+                newStart += DATA_BLOCK_LENGTH;
+                start = newStart;
+            }
+        }
+        // now adjust the index (stage 1) table
+        for (i = 0; i < m_indexLength_; ++ i) {
+            m_index_[i] = m_map_[Math.abs(m_index_[i]) >>> SHIFT_];
+        }
+        m_dataLength_ = newStart;
+    }
+
+    /**
+     * Find the same data block
+     * @param data array
+     * @param dataLength
+     * @param otherBlock
+     * @param step
+     */
+    private static final int findSameDataBlock(int data[], int dataLength,
+                                               int otherBlock, int step) 
+    {
+        // ensure that we do not even partially get past dataLength
+        dataLength -= DATA_BLOCK_LENGTH;
+
+        for (int block = 0; block <= dataLength; block += step) {
+            if(equal_int(data, block, otherBlock, DATA_BLOCK_LENGTH)) {
+                return block;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Fold the normalization data for supplementary code points into
+     * a compact area on top of the BMP-part of the trie index,
+     * with the lead surrogates indexing this compact area.
+     *
+     * Duplicate the index values for lead surrogates:
+     * From inside the BMP area, where some may be overridden with folded values,
+     * to just after the BMP area, where they can be retrieved for
+     * code point lookups.
+     * @param manipulate fold implementation
+     */
+    private final void fold(DataManipulate manipulate) 
+    {
+        int leadIndexes[] = new int[SURROGATE_BLOCK_COUNT_];
+        int index[] = m_index_;
+        // copy the lead surrogate indexes into a temporary array
+        System.arraycopy(index, 0xd800 >> SHIFT_, leadIndexes, 0, 
+                         SURROGATE_BLOCK_COUNT_);
+        
+        // set all values for lead surrogate code *units* to leadUnitValue
+        // so that by default runtime lookups will find no data for associated
+        // supplementary code points, unless there is data for such code points
+        // which will result in a non-zero folding value below that is set for
+        // the respective lead units
+        // the above saved the indexes for surrogate code *points*
+        // fill the indexes with simplified code from utrie_setRange32()
+        int block = 0;
+        if (m_leadUnitValue_ == m_initialValue_) {
+            // leadUnitValue == initialValue, use all-initial-value block
+            // block = 0; if block here left empty
+        } 
+        else {
+            // create and fill the repeatBlock
+            block = allocDataBlock();
+            if (block < 0) {
+                // data table overflow
+                throw new IllegalStateException("Internal error: Out of memory space");
+            }
+            fillBlock(block, 0, DATA_BLOCK_LENGTH, m_leadUnitValue_, true);
+            // negative block number to indicate that it is a repeat block
+            block = -block; 
+        }
+        for (int c = (0xd800 >> SHIFT_); c < (0xdc00 >> SHIFT_); ++ c) {
+            m_index_[c] = block;
+        }
+
+        // Fold significant index values into the area just after the BMP 
+        // indexes.
+        // In case the first lead surrogate has significant data,
+        // its index block must be used first (in which case the folding is a 
+        // no-op).
+        // Later all folded index blocks are moved up one to insert the copied
+        // lead surrogate indexes.
+        int indexLength = BMP_INDEX_LENGTH_;
+        // search for any index (stage 1) entries for supplementary code points 
+        for (int c = 0x10000; c < 0x110000;) {
+            if (index[c >> SHIFT_] != 0) {
+                // there is data, treat the full block for a lead surrogate
+                c &= ~0x3ff;
+                // is there an identical index block?
+                block = findSameIndexBlock(index, indexLength, c >> SHIFT_);
+                
+                // get a folded value for [c..c+0x400[ and,
+                // if different from the value for the lead surrogate code 
+                // point, set it for the lead surrogate code unit
+
+                int value = manipulate.getFoldedValue(c, 
+                                                      block + SURROGATE_BLOCK_COUNT_);
+                if (value != getValue(UTF16.getLeadSurrogate(c))) {
+                    if (!setValue(UTF16.getLeadSurrogate(c), value)) {
+                        // data table overflow 
+                        throw new ArrayIndexOutOfBoundsException(
+                                                                 "Data table overflow");
+                    }
+                    // if we did not find an identical index block...
+                    if (block == indexLength) {
+                        // move the actual index (stage 1) entries from the 
+                        // supplementary position to the new one
+                        System.arraycopy(index, c >> SHIFT_, index, indexLength,
+                                         SURROGATE_BLOCK_COUNT_);
+                        indexLength += SURROGATE_BLOCK_COUNT_;
+                    }
+                }
+                c += 0x400;
+            } 
+            else {
+                c += DATA_BLOCK_LENGTH;
+            }
+        }
+        
+        // index array overflow?
+        // This is to guarantee that a folding offset is of the form
+        // UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT with n=0..1023.
+        // If the index is too large, then n>=1024 and more than 10 bits are 
+        // necessary.
+        // In fact, it can only ever become n==1024 with completely unfoldable 
+        // data and the additional block of duplicated values for lead 
+        // surrogates.
+        if (indexLength >= MAX_INDEX_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Index table overflow");
+        }
+        // make space for the lead surrogate index block and insert it between 
+        // the BMP indexes and the folded ones
+        System.arraycopy(index, BMP_INDEX_LENGTH_, index, 
+                         BMP_INDEX_LENGTH_ + SURROGATE_BLOCK_COUNT_,
+                         indexLength - BMP_INDEX_LENGTH_);
+        System.arraycopy(leadIndexes, 0, index, BMP_INDEX_LENGTH_,
+                         SURROGATE_BLOCK_COUNT_);
+        indexLength += SURROGATE_BLOCK_COUNT_;
+        m_indexLength_ = indexLength;
+    }
+    
+    /**
+     * @internal
+     */
+    private void fillBlock(int block, int start, int limit, int value, 
+                           boolean overwrite) 
+    {
+        limit += block;
+        block += start;
+        if (overwrite) {
+            while (block < limit) {
+                m_data_[block ++] = value;
+            }
+        } 
+        else {
+            while (block < limit) {
+                if (m_data_[block] == m_initialValue_) {
+                    m_data_[block] = value;
+                }
+                ++ block;
+            }
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/InvalidFormatException.java b/src/com/ibm/icu/impl/InvalidFormatException.java
new file mode 100644
index 0000000..6f7c2a9
--- /dev/null
+++ b/src/com/ibm/icu/impl/InvalidFormatException.java
@@ -0,0 +1,21 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.impl;
+
+public class InvalidFormatException extends Exception {
+    
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 8883328905089345791L;
+    
+    public InvalidFormatException(){}
+    
+    public InvalidFormatException(String message){
+        super(message);
+    }
+}
diff --git a/src/com/ibm/icu/impl/JavaTimeZone.java b/src/com/ibm/icu/impl/JavaTimeZone.java
new file mode 100644
index 0000000..1b21ce1
--- /dev/null
+++ b/src/com/ibm/icu/impl/JavaTimeZone.java
@@ -0,0 +1,219 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Date;
+import java.util.TreeSet;
+
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * JavaTimeZone inherits com.ibm.icu.util.TimeZone and wraps java.util.TimeZone.
+ * We used to have JDKTimeZone which wrapped Java TimeZone and used it as primary
+ * TimeZone implementation until ICU4J 3.4.1.  This class works exactly like
+ * JDKTimeZone and allows ICU users who use ICU4J and JDK date/time/calendar
+ * services in mix to maintain only JDK timezone rules.
+ *
+ * This TimeZone subclass is returned by the TimeZone factory method getTimeZone(String)
+ * when the default timezone type in TimeZone class is TimeZone.TIMEZONE_JDK.
+ */
+public class JavaTimeZone extends TimeZone {
+
+    private static final long serialVersionUID = 6977448185543929364L;
+
+    private static final TreeSet AVAILABLESET;
+
+    private java.util.TimeZone javatz;
+    private transient java.util.Calendar javacal;
+
+    static {
+        AVAILABLESET = new TreeSet();
+        String[] availableIds = java.util.TimeZone.getAvailableIDs();
+        for (int i = 0; i < availableIds.length; i++) {
+            AVAILABLESET.add(availableIds[i]);
+        }
+    }
+
+    /**
+     * Constructs a JavaTimeZone with the default Java TimeZone
+     */
+    public JavaTimeZone() {
+        javatz = java.util.TimeZone.getDefault();
+        setID(javatz.getID());
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+    /**
+     * Constructs a JavaTimeZone with the given timezone ID.
+     * @param id A timezone ID, either a system ID or a custom ID.
+     */
+    public JavaTimeZone(String id) {
+        if (AVAILABLESET.contains(id)) {
+            javatz = java.util.TimeZone.getTimeZone(id);
+        }
+        if (javatz == null) {
+            // Use ICU's canonical ID mapping
+            boolean[] isSystemID = new boolean[1];
+            String canonicalID = TimeZone.getCanonicalID(id, isSystemID);
+            if (isSystemID[0] && AVAILABLESET.contains(canonicalID)) {
+                javatz = java.util.TimeZone.getTimeZone(canonicalID);
+            }
+        }
+
+        if (javatz == null){
+            int[] fields = new int[4];
+            if (ZoneMeta.parseCustomID(id, fields)) {
+                // JDK does not support offset seconds.
+                // If custom ID, we create java.util.SimpleTimeZone here.
+                id = ZoneMeta.formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+                int offset = fields[0] * ((fields[1] * 60 + fields[2]) * 60 + fields[3]) * 1000;
+                javatz = new java.util.SimpleTimeZone(offset, id);
+            }
+        }
+        if (javatz == null) {
+            // Final fallback
+            id = "GMT";
+            javatz = java.util.TimeZone.getTimeZone(id);
+        }
+        setID(id);
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(int, int, int, int, int, int)
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return javatz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(long, boolean, int[])
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        synchronized (javacal) {
+            if (local) {
+                int fields[] = new int[6];
+                Grego.timeToFields(date, fields);
+                int hour, min, sec, mil;
+                int tmp = fields[5];
+                mil = tmp % 1000;
+                tmp /= 1000;
+                sec = tmp % 60;
+                tmp /= 60;
+                min = tmp % 60;
+                hour = tmp / 60;
+                javacal.clear();
+                javacal.set(fields[0], fields[1], fields[2], hour, min, sec);
+                javacal.set(java.util.Calendar.MILLISECOND, mil);
+
+                int doy1, hour1, min1, sec1, mil1;
+                doy1 = javacal.get(java.util.Calendar.DAY_OF_YEAR);
+                hour1 = javacal.get(java.util.Calendar.HOUR_OF_DAY);
+                min1 = javacal.get(java.util.Calendar.MINUTE);
+                sec1 = javacal.get(java.util.Calendar.SECOND);
+                mil1 = javacal.get(java.util.Calendar.MILLISECOND);
+
+                if (fields[4] != doy1 || hour != hour1 || min != min1 || sec != sec1 || mil != mil1) {
+                    // Calendar field(s) were changed due to the adjustment for non-existing time
+                    // Note: This code does not support non-existing local time at year boundary properly.
+                    // But, it should work fine for real timezones.
+                    int dayDelta = Math.abs(doy1 - fields[4]) > 1 ? 1 : doy1 - fields[4];
+                    int delta = ((((dayDelta * 24) + hour1 - hour) * 60 + min1 - min) * 60 + sec1 - sec) * 1000 + mil1 - mil;
+
+                    // In this case, we use the offsets before the transition
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                    javacal.setTime(new Date(javacal.getTime().getTime() - delta - 1));
+//#else
+                   javacal.setTimeInMillis(javacal.getTimeInMillis() - delta - 1);
+//#endif
+                }
+            } else {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                javacal.setTime(new Date(date));
+//#else
+                javacal.setTimeInMillis(date);
+//#endif
+            }
+            offsets[0] = javacal.get(java.util.Calendar.ZONE_OFFSET);
+            offsets[1] = javacal.get(java.util.Calendar.DST_OFFSET);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getRawOffset()
+     */
+    public int getRawOffset() {
+        return javatz.getRawOffset();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#inDaylightTime(java.util.Date)
+     */
+    public boolean inDaylightTime(Date date) {
+        return javatz.inDaylightTime(date);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#setRawOffset(int)
+     */
+    public void setRawOffset(int offsetMillis) {
+        javatz.setRawOffset(offsetMillis);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#useDaylightTime()
+     */
+    public boolean useDaylightTime() {
+        return javatz.useDaylightTime();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getDSTSavings()
+     */
+    public int getDSTSavings() {
+        int dstSavings = super.getDSTSavings();
+        try {
+            // hack so test compiles and runs in both JDK 1.3 and JDK 1.4+
+            final Object[] args = new Object[0];
+            final Class[] argtypes = new Class[0];
+            java.lang.reflect.Method m = javatz.getClass().getMethod("getDSTSavings", argtypes); 
+            dstSavings = ((Integer) m.invoke(javatz, args)).intValue();
+        } catch (Exception e) {
+            // just use the result returned by super.getDSTSavings()
+        }
+        return dstSavings;
+    }
+
+    public java.util.TimeZone unwrap() {
+        return javatz;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#clone()
+     */
+    public Object clone() {
+        JavaTimeZone other = (JavaTimeZone)super.clone();
+        other.javatz = (java.util.TimeZone)javatz.clone();
+        return other;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#hashCode()
+     */
+    public int hashCode() {
+        return super.hashCode() + javatz.hashCode();
+    }
+
+    private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
+        s.defaultReadObject();
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+}
diff --git a/src/com/ibm/icu/impl/LocaleUtility.java b/src/com/ibm/icu/impl/LocaleUtility.java
new file mode 100644
index 0000000..0633738
--- /dev/null
+++ b/src/com/ibm/icu/impl/LocaleUtility.java
@@ -0,0 +1,132 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ *
+ ******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.util.Locale;
+
+/**
+ * A class to hold utility functions missing from java.util.Locale.
+ */
+public class LocaleUtility {
+
+    /**
+     * A helper function to convert a string of the form
+     * aa_BB_CC to a locale object.  Why isn't this in Locale?
+     */
+    public static Locale getLocaleFromName(String name) {
+        String language = "";
+        String country = "";
+        String variant = "";
+
+        int i1 = name.indexOf('_');
+        if (i1 < 0) {
+            language = name;
+        } else {
+            language = name.substring(0, i1);
+            ++i1;
+            int i2 = name.indexOf('_', i1);
+            if (i2 < 0) {
+                country = name.substring(i1);
+            } else {
+                country = name.substring(i1, i2);
+                variant = name.substring(i2+1);
+            }
+        }
+
+        return new Locale(language, country, variant);
+    }
+
+    /**
+     * Compare two locale strings of the form aa_BB_CC, and
+     * return true if parent is a 'strict' fallback of child, that is,
+     * if child =~ "^parent(_.+)*" (roughly).
+     */
+    public static boolean isFallbackOf(String parent, String child) {
+        if (!child.startsWith(parent)) {
+            return false;
+        }
+        int i = parent.length();
+        return (i == child.length() ||
+                child.charAt(i) == '_');
+    }
+
+    /**
+     * Compare two locales, and return true if the parent is a
+     * 'strict' fallback of the child (parent string is a fallback
+     * of child string).
+     */
+    public static boolean isFallbackOf(Locale parent, Locale child) {
+        return isFallbackOf(parent.toString(), child.toString());
+    }
+
+
+    /*
+     * Convenience method that calls canonicalLocaleString(String) with
+     * locale.toString();
+     */
+    /*public static String canonicalLocaleString(Locale locale) {
+        return canonicalLocaleString(locale.toString());
+    }*/
+
+    /*
+     * You'd think that Locale canonicalizes, since it munges the
+     * renamed languages, but it doesn't quite.  It forces the region
+     * to be upper case but doesn't do anything about the language or
+     * variant.  Our canonical form is 'lower_UPPER_UPPER'.  
+     */
+    /*public static String canonicalLocaleString(String id) {
+        if (id != null) {
+            int x = id.indexOf("_");
+            if (x == -1) {
+                id = id.toLowerCase(Locale.ENGLISH);
+            } else {
+                StringBuffer buf = new StringBuffer();
+                buf.append(id.substring(0, x).toLowerCase(Locale.ENGLISH));
+                buf.append(id.substring(x).toUpperCase(Locale.ENGLISH));
+
+                int len = buf.length();
+                int n = len;
+                while (--n >= 0 && buf.charAt(n) == '_') {
+                }
+                if (++n != len) {
+                    buf.delete(n, len);
+                }
+                id = buf.toString();
+            }
+        }
+        return id;
+    }*/
+
+    /**
+     * Fallback from the given locale name by removing the rightmost _-delimited
+     * element. If there is none, return the root locale ("", "", ""). If this
+     * is the root locale, return null. NOTE: The string "root" is not
+     * recognized; do not use it.
+     * 
+     * @return a new Locale that is a fallback from the given locale, or null.
+     */
+    public static Locale fallback(Locale loc) {
+
+        // Split the locale into parts and remove the rightmost part
+        String[] parts = new String[]
+            { loc.getLanguage(), loc.getCountry(), loc.getVariant() };
+        int i;
+        for (i=2; i>=0; --i) {
+            if (parts[i].length() != 0) {
+                parts[i] = "";
+                break;
+            }
+        }
+        if (i<0) {
+            return null; // All parts were empty
+        }
+        return new Locale(parts[0], parts[1], parts[2]);
+    }
+}
diff --git a/src/com/ibm/icu/impl/NormalizerDataReader.java b/src/com/ibm/icu/impl/NormalizerDataReader.java
new file mode 100644
index 0000000..e677e96
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerDataReader.java
@@ -0,0 +1,427 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.*;
+import com.ibm.icu.impl.ICUDebug;
+
+/**
+ * @version     1.0
+ * @author        Ram Viswanadha
+ */
+
+/*
+ * Description of the format of unorm.icu version 2.1.
+ *
+ * Main change from version 1 to version 2:
+ * Use of new, common Trie instead of normalization-specific tries.
+ * Change to version 2.1: add third/auxiliary trie with associated data.
+ *
+ * For more details of how to use the data structures see the code
+ * in unorm.cpp (runtime normalization code) and
+ * in gennorm.c and gennorm/store.c (build-time data generation).
+ *
+ * For the serialized format of Trie see Trie.c/TrieHeader.
+ *
+ * - Overall partition
+ *
+ * unorm.icu customarily begins with a UDataInfo structure, see udata.h and .c.
+ * After that there are the following structures:
+ *
+ * char indexes[INDEX_TOP];                   -- INDEX_TOP=32, see enum in this file
+ *
+ * Trie normTrie;                           -- size in bytes=indexes[INDEX_TRIE_SIZE]
+ * 
+ * char extraData[extraDataTop];            -- extraDataTop=indexes[INDEX_UCHAR_COUNT]
+ *                                                 extraData[0] contains the number of units for
+ *                                                 FC_NFKC_Closure (formatVersion>=2.1)
+ *
+ * char combiningTable[combiningTableTop];  -- combiningTableTop=indexes[INDEX_COMBINE_DATA_COUNT]
+ *                                                 combiningTableTop may include one 16-bit padding unit
+ *                                                 to make sure that fcdTrie is 32-bit-aligned
+ *
+ * Trie fcdTrie;                            -- size in bytes=indexes[INDEX_FCD_TRIE_SIZE]
+ *
+ * Trie auxTrie;                            -- size in bytes=indexes[INDEX_AUX_TRIE_SIZE]
+ *
+ * char canonStartSets[canonStartSetsTop]   -- canonStartSetsTop=indexes[INDEX_CANON_SET_COUNT]
+ *                                                 serialized USets, see uset.c
+ *
+ *
+ * The indexes array contains lengths and sizes of the following arrays and structures
+ * as well as the following values:
+ *  indexes[INDEX_COMBINE_FWD_COUNT]=combineFwdTop
+ *      -- one more than the highest combining index computed for forward-only-combining characters
+ *  indexes[INDEX_COMBINE_BOTH_COUNT]=combineBothTop-combineFwdTop
+ *      -- number of combining indexes computed for both-ways-combining characters
+ *  indexes[INDEX_COMBINE_BACK_COUNT]=combineBackTop-combineBothTop
+ *      -- number of combining indexes computed for backward-only-combining characters
+ *
+ *  indexes[INDEX_MIN_NF*_NO_MAYBE] (where *={ C, D, KC, KD })
+ *      -- first code point with a quick check NF* value of NO/MAYBE
+ *
+ *
+ * - Tries
+ *
+ * The main structures are two Trie tables ("compact arrays"),
+ * each with one index array and one data array.
+ * See Trie.h and Trie.c.
+ *
+ *
+ * - Tries in unorm.icu
+ *
+ * The first trie (normTrie above)
+ * provides data for the NF* quick checks and normalization.
+ * The second trie (fcdTrie above) provides data just for FCD checks.
+ *
+ *
+ * - norm32 data words from the first trie
+ *
+ * The norm32Table contains one 32-bit word "norm32" per code point.
+ * It contains the following bit fields:
+ * 31..16   extra data index, EXTRA_SHIFT is used to shift this field down
+ *          if this index is <EXTRA_INDEX_TOP then it is an index into
+ *              extraData[] where variable-length normalization data for this
+ *              code point is found
+ *          if this index is <EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+ *              then this is a norm32 for a leading surrogate, and the index
+ *              value is used together with the following trailing surrogate
+ *              code unit in the second trie access
+ *          if this index is >=EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+ *              then this is a norm32 for a "special" character,
+ *              i.e., the character is a Hangul syllable or a Jamo
+ *              see EXTRA_HANGUL etc.
+ *          generally, instead of extracting this index from the norm32 and
+ *              comparing it with the above constants,
+ *              the normalization code compares the entire norm32 value
+ *              with MIN_SPECIAL, SURROGATES_TOP, MIN_HANGUL etc.
+ *
+ * 15..8    combining class (cc) according to UnicodeData.txt
+ *
+ *  7..6    COMBINES_ANY flags, used in composition to see if a character
+ *              combines with any following or preceding character(s)
+ *              at all
+ *     7    COMBINES_BACK
+ *     6    COMBINES_FWD
+ *
+ *  5..0    quick check flags, set for "no" or "maybe", with separate flags for
+ *              each normalization form
+ *              the higher bits are "maybe" flags; for NF*D there are no such flags
+ *              the lower bits are "no" flags for all forms, in the same order
+ *              as the "maybe" flags,
+ *              which is (MSB to LSB): NFKD NFD NFKC NFC
+ *  5..4    QC_ANY_MAYBE
+ *  3..0    QC_ANY_NO
+ *              see further related constants
+ *
+ *
+ * - Extra data per code point
+ *
+ * "Extra data" is referenced by the index in norm32.
+ * It is variable-length data. It is only present, and only those parts
+ * of it are, as needed for a given character.
+ * The norm32 extra data index is added to the beginning of extraData[]
+ * to get to a vector of 16-bit words with data at the following offsets:
+ *
+ * [-1]     Combining index for composition.
+ *              Stored only if norm32&COMBINES_ANY .
+ * [0]      Lengths of the canonical and compatibility decomposition strings.
+ *              Stored only if there are decompositions, i.e.,
+ *              if norm32&(QC_NFD|QC_NFKD)
+ *          High byte: length of NFKD, or 0 if none
+ *          Low byte: length of NFD, or 0 if none
+ *          Each length byte also has another flag:
+ *              Bit 7 of a length byte is set if there are non-zero
+ *              combining classes (cc's) associated with the respective
+ *              decomposition. If this flag is set, then the decomposition
+ *              is preceded by a 16-bit word that contains the
+ *              leading and trailing cc's.
+ *              Bits 6..0 of a length byte are the length of the
+ *              decomposition string, not counting the cc word.
+ * [1..n]   NFD
+ * [n+1..]  NFKD
+ *
+ * Each of the two decompositions consists of up to two parts:
+ * - The 16-bit words with the leading and trailing cc's.
+ *   This is only stored if bit 7 of the corresponding length byte
+ *   is set. In this case, at least one of the cc's is not zero.
+ *   High byte: leading cc==cc of the first code point in the decomposition string
+ *   Low byte: trailing cc==cc of the last code point in the decomposition string
+ * - The decomposition string in UTF-16, with length code units.
+ *
+ *
+ * - Combining indexes and combiningTable[]
+ *
+ * Combining indexes are stored at the [-1] offset of the extra data
+ * if the character combines forward or backward with any other characters.
+ * They are used for (re)composition in NF*C.
+ * Values of combining indexes are arranged according to whether a character
+ * combines forward, backward, or both ways:
+ *    forward-only < both ways < backward-only
+ *
+ * The index values for forward-only and both-ways combining characters
+ * are indexes into the combiningTable[].
+ * The index values for backward-only combining characters are simply
+ * incremented from the preceding index values to be unique.
+ *
+ * In the combiningTable[], a variable-length list
+ * of variable-length (back-index, code point) pair entries is stored
+ * for each forward-combining character.
+ *
+ * These back-indexes are the combining indexes of both-ways or backward-only
+ * combining characters that the forward-combining character combines with.
+ *
+ * Each list is sorted in ascending order of back-indexes.
+ * Each list is terminated with the last back-index having bit 15 set.
+ *
+ * Each pair (back-index, code point) takes up either 2 or 3
+ * 16-bit words.
+ * The first word of a list entry is the back-index, with its bit 15 set if
+ * this is the last pair in the list.
+ *
+ * The second word contains flags in bits 15..13 that determine
+ * if there is a third word and how the combined character is encoded:
+ * 15   set if there is a third word in this list entry
+ * 14   set if the result is a supplementary character
+ * 13   set if the result itself combines forward
+ *
+ * According to these bits 15..14 of the second word,
+ * the result character is encoded as follows:
+ * 00 or 01 The result is <=0x1fff and stored in bits 12..0 of
+ *          the second word.
+ * 10       The result is 0x2000..0xffff and stored in the third word.
+ *          Bits 12..0 of the second word are not used.
+ * 11       The result is a supplementary character.
+ *          Bits 9..0 of the leading surrogate are in bits 9..0 of
+ *          the second word.
+ *          Add 0xd800 to these bits to get the complete surrogate.
+ *          Bits 12..10 of the second word are not used.
+ *          The trailing surrogate is stored in the third word.
+ *
+ *
+ * - FCD trie
+ *
+ * The FCD trie is very simple.
+ * It is a folded trie with 16-bit data words.
+ * In each word, the high byte contains the leading cc of the character,
+ * and the low byte contains the trailing cc of the character.
+ * These cc's are the cc's of the first and last code points in the
+ * canonical decomposition of the character.
+ *
+ * Since all 16 bits are used for cc's, lead surrogates must be tested
+ * by checking the code unit instead of the trie data.
+ * This is done only if the 16-bit data word is not zero.
+ * If the code unit is a leading surrogate and the data word is not zero,
+ * then instead of cc's it contains the offset for the second trie lookup.
+ *
+ *
+ * - Auxiliary trie and data
+ *
+ *
+ * The auxiliary 16-bit trie contains data for additional properties.
+ * Bits
+ * 15..13   reserved
+ *     12   not NFC_Skippable (f) (formatVersion>=2.2)
+ *     11   flag: not a safe starter for canonical closure
+ *     10   composition exclusion
+ *  9.. 0   index into extraData[] to FC_NFKC_Closure string
+ *          (not for lead surrogate),
+ *          or lead surrogate offset (for lead surrogate, if 9..0 not zero)
+ * 
+ * Conditions for "NF* Skippable" from Mark Davis' com.ibm.text.UCD.NFSkippable:
+ * (used in NormalizerTransliterator)
+ *
+ * A skippable character is
+ * a) unassigned, or ALL of the following:
+ * b) of combining class 0.
+ * c) not decomposed by this normalization form.
+ * AND if NFC or NFKC,
+ * d) can never compose with a previous character.
+ * e) can never compose with a following character.
+ * f) can never change if another character is added.
+ *    Example: a-breve might satisfy all but f, but if you
+ *    add an ogonek it changes to a-ogonek + breve
+ *
+ * a)..e) must be tested from norm32.
+ * Since f) is more complicated, the (not-)NFC_Skippable flag (f) is built
+ * into the auxiliary trie.
+ * The same bit is used for NFC and NFKC; (c) differs for them.
+ * As usual, we build the "not skippable" flags so that unassigned
+ * code points get a 0 bit.
+ * This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
+ * Test Hangul LV syllables entirely in code.
+ *   
+ * 
+ * - FC_NFKC_Closure strings in extraData[]
+ *
+ * Strings are either stored as a single code unit or as the length
+ * followed by that many units.
+ * 
+ * - structure inside canonStartSets[]
+ *
+ * This array maps from code points c to sets of code points (USerializedSet).
+ * The result sets are the code points whose canonical decompositions start
+ * with c.
+ *
+ * canonStartSets[] contains the following sub-arrays:
+ *
+ * indexes[_NORM_SET_INDEX_TOP]
+ *   - contains lengths of sub-arrays etc.
+ *
+ * startSets[indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH]-_NORM_SET_INDEX_TOP]
+ *   - contains serialized sets (USerializedSet) of canonical starters for
+ *     enumerating canonically equivalent strings
+ *     indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH] includes _NORM_SET_INDEX_TOP
+ *     for details about the structure see uset.c
+ *
+ * bmpTable[indexes[_NORM_SET_INDEX_CANON_BMP_TABLE_LENGTH]]
+ *   - a sorted search table for BMP code points whose results are
+ *     either indexes to USerializedSets or single code points for
+ *     single-code point sets;
+ *     each entry is a pair of { code point, result } with result=(binary) yy xxxxxx xxxxxxxx
+ *     if yy==01 then there is a USerializedSet at canonStartSets+x
+ *     else build a USerializedSet with result as the single code point
+ *
+ * suppTable[indexes[_NORM_SET_INDEX_CANON_SUPP_TABLE_LENGTH]]
+ *   - a sorted search table for supplementary code points whose results are
+ *     either indexes to USerializedSets or single code points for
+ *     single-code point sets;
+ *     each entry is a triplet of { high16(cp), low16(cp), result }
+ *     each code point's high-word may contain extra data in bits 15..5:
+ *     if the high word has bit 15 set, then build a set with a single code point
+ *     which is (((high16(cp)&0x1f00)<<8)|result;
+ *     else there is a USerializedSet at canonStartSets+result
+ */
+final class NormalizerDataReader implements ICUBinary.Authenticate {
+    private final static boolean debug = ICUDebug.enabled("NormalizerDataReader");
+    
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected NormalizerDataReader(InputStream inputStream) 
+                                        throws IOException{
+        if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected int[] readIndexes(int length)throws IOException{
+        int[] indexes = new int[length];
+        //Read the indexes
+        for (int i = 0; i <length ; i++) {
+             indexes[i] = dataInputStream.readInt();
+        }
+        return indexes;
+    } 
+    /**
+    * <p>Reads unorm.icu, parse it into blocks of data to be stored in
+    * NormalizerImpl.</P
+    * @param normBytes
+    * @param fcdBytes
+    * @param auxBytes
+    * @param extraData
+    * @param combiningTable
+    * @param canonStartSets
+    * @exception IOException thrown when data reading fails
+    */
+    protected void read(byte[] normBytes, byte[] fcdBytes, byte[] auxBytes,
+                        char[] extraData, char[] combiningTable, 
+                        Object[] canonStartSets) 
+                        throws IOException
+    {
+         // Read the bytes that make up the normTrie
+        dataInputStream.readFully(normBytes);
+
+        // normTrieStream= new ByteArrayInputStream(normBytes);
+
+        // Read the extra data
+        for (int i = 0; i < extraData.length; i++) {
+            extraData[i] = dataInputStream.readChar();
+        }
+
+        // Read the combining class table
+        for (int i = 0; i < combiningTable.length; i++) {
+            combiningTable[i] = dataInputStream.readChar();
+        }
+
+        // Read the fcdTrie
+        dataInputStream.readFully(fcdBytes);
+
+        // Read the AuxTrie
+        dataInputStream.readFully(auxBytes);
+
+        // Read the canonical start sets
+        int[] canonStartSetsIndexes = new int[NormalizerImpl.SET_INDEX_TOP];
+
+        for (int i = 0; i < canonStartSetsIndexes.length; i++) {
+            canonStartSetsIndexes[i] = dataInputStream.readChar();
+        }
+
+        char[] startSets = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SETS_LENGTH] - NormalizerImpl.SET_INDEX_TOP];
+
+        for (int i = 0; i < startSets.length; i++) {
+            startSets[i] = dataInputStream.readChar();
+        }
+        char[] bmpTable = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_BMP_TABLE_LENGTH]];
+        for (int i = 0; i < bmpTable.length; i++) {
+            bmpTable[i] = dataInputStream.readChar();
+        }
+        char[] suppTable = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SUPP_TABLE_LENGTH]];
+        for (int i = 0; i < suppTable.length; i++) {
+            suppTable[i] = dataInputStream.readChar();
+        }
+        canonStartSets[NormalizerImpl.CANON_SET_INDICIES_INDEX] = canonStartSetsIndexes;
+        canonStartSets[NormalizerImpl.CANON_SET_START_SETS_INDEX] = startSets;
+        canonStartSets[NormalizerImpl.CANON_SET_BMP_TABLE_INDEX] = bmpTable;
+        canonStartSets[NormalizerImpl.CANON_SET_SUPP_TABLE_INDEX] = suppTable;         
+    }
+    
+    public byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION[0] 
+               && version[2] == DATA_FORMAT_VERSION[2] 
+               && version[3] == DATA_FORMAT_VERSION[3];
+    }
+    
+    public byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    
+    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x4E, (byte)0x6F, 
+                                                    (byte)0x72, (byte)0x6D};
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x2, 
+                                                        (byte)0x5, (byte)0x2};
+    
+}
diff --git a/src/com/ibm/icu/impl/NormalizerImpl.java b/src/com/ibm/icu/impl/NormalizerImpl.java
new file mode 100644
index 0000000..c2dab93
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerImpl.java
@@ -0,0 +1,3852 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;    
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @version     1.0
+ * @author  Ram Viswanadha
+ */
+public final class NormalizerImpl {
+    // Static block for the class to initialize its own self 
+    static final NormalizerImpl IMPL;
+    
+    static
+    {
+        try
+        {
+            IMPL = new NormalizerImpl();
+        }
+        catch (Exception e)
+        {
+            throw new MissingResourceException(e.getMessage(), "", "");
+        }
+    }
+    
+    static final int UNSIGNED_BYTE_MASK =0xFF;
+    static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    /*
+     * This new implementation of the normalization code loads its data from
+     * unorm.icu, which is generated with the gennorm tool.
+     * The format of that file is described at the end of this file.
+     */
+    private static final String DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE+"/unorm.icu";
+    
+    // norm32 value constants 
+    
+    // quick check flags 0..3 set mean "no" for their forms 
+    public static final int QC_NFC=0x11;          /* no|maybe */
+    public static final int QC_NFKC=0x22;         /* no|maybe */
+    public static final int QC_NFD=4;             /* no */
+    public static final int QC_NFKD=8;            /* no */
+    
+    public static final int QC_ANY_NO=0xf;
+
+    /* quick check flags 4..5 mean "maybe" for their forms; 
+     * test flags>=QC_MAYBE 
+     */
+    public static final int QC_MAYBE=0x10;
+    public static final int QC_ANY_MAYBE=0x30;
+
+    public static final int QC_MASK=0x3f;
+
+    private static final int COMBINES_FWD=0x40;
+    private static final int COMBINES_BACK=0x80;
+    public  static final int COMBINES_ANY=0xc0;
+    // UnicodeData.txt combining class in bits 15.
+    private static final int CC_SHIFT=8;                     
+    public  static final int CC_MASK=0xff00;
+    // 16 bits for the index to UChars and other extra data
+    private static final int EXTRA_SHIFT=16;
+    // start of surrogate specials after shift                
+    //private static final int EXTRA_INDEX_TOP=0xfc00;       
+
+    //private static final int EXTRA_SURROGATE_MASK=0x3ff;
+    //private static final int EXTRA_SURROGATE_TOP=0x3f0;    /* hangul etc. */
+
+    //private static final int EXTRA_HANGUL=EXTRA_SURROGATE_TOP;
+    //private static final int EXTRA_JAMO_L=EXTRA_SURROGATE_TOP+1;/* ### not used */
+    //private static final int EXTRA_JAMO_V=EXTRA_SURROGATE_TOP+2;
+    //private static final int EXTRA_JAMO_T=EXTRA_SURROGATE_TOP+3;
+    
+    /* norm32 value constants using >16 bits */
+    private static final long  MIN_SPECIAL    =  (long)(0xfc000000 & UNSIGNED_INT_MASK);
+    private static final long  SURROGATES_TOP =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+    private static final long  MIN_HANGUL     =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+    //private static final long  MIN_JAMO_V     =  (long)(0xfff20000 & UNSIGNED_INT_MASK);
+    private static final long  JAMO_V_TOP     =  (long)(0xfff30000 & UNSIGNED_INT_MASK);
+    
+    
+    /* indexes[] value names */
+    /* number of bytes in normalization trie */
+    static final int INDEX_TRIE_SIZE           = 0;
+     /* number of chars in extra data */     
+    static final int INDEX_CHAR_COUNT           = 1;    
+    /* number of uint16_t words for combining data */
+    static final int INDEX_COMBINE_DATA_COUNT = 2;
+    /* number of code points that combine forward */     
+    static final int INDEX_COMBINE_FWD_COUNT  = 3;
+    /* number of code points that combine forward and backward */     
+    static final int INDEX_COMBINE_BOTH_COUNT = 4;
+    /* number of code points that combine backward */     
+    static final int INDEX_COMBINE_BACK_COUNT = 5;     
+     /* first code point with quick check NFC NO/MAYBE */
+    public static final int INDEX_MIN_NFC_NO_MAYBE   = 6;
+    /* first code point with quick check NFKC NO/MAYBE */    
+    public static final int INDEX_MIN_NFKC_NO_MAYBE  = 7;
+     /* first code point with quick check NFD NO/MAYBE */     
+    public static final int INDEX_MIN_NFD_NO_MAYBE   = 8;
+    /* first code point with quick check NFKD NO/MAYBE */    
+    public static final int INDEX_MIN_NFKD_NO_MAYBE  = 9;     
+    /* number of bytes in FCD trie */
+    static final int INDEX_FCD_TRIE_SIZE      = 10;
+    /* number of bytes in the auxiliary trie */    
+    static final int INDEX_AUX_TRIE_SIZE      = 11;
+    /* number of uint16_t in the array of serialized USet */    
+    static final int INDEX_CANON_SET_COUNT    = 12;    
+    /* changing this requires a new formatVersion */
+    static final int INDEX_TOP                = 32;    
+    
+    
+    /* AUX constants */
+    /* value constants for auxTrie */    
+    private static final int AUX_UNSAFE_SHIFT           = 11;
+    private static final int AUX_COMP_EX_SHIFT           = 10;
+    private static final int AUX_NFC_SKIPPABLE_F_SHIFT = 12;
+    
+    private static final int AUX_MAX_FNC          =   ((int)1<<AUX_COMP_EX_SHIFT);
+    private static final int AUX_UNSAFE_MASK      =   (int)((1<<AUX_UNSAFE_SHIFT) & UNSIGNED_INT_MASK);
+    private static final int AUX_FNC_MASK         =   (int)((AUX_MAX_FNC-1) & UNSIGNED_INT_MASK);
+    private static final int AUX_COMP_EX_MASK     =   (int)((1<<AUX_COMP_EX_SHIFT) & UNSIGNED_INT_MASK);
+    private static final long AUX_NFC_SKIP_F_MASK =   ((UNSIGNED_INT_MASK&1)<<AUX_NFC_SKIPPABLE_F_SHIFT);
+    
+    /* canonStartSets[0..31] contains indexes for what is in the array */
+    /* number of uint16_t in canonical starter sets */
+    static final int SET_INDEX_CANON_SETS_LENGTH        = 0;
+    /* number of uint16_t in the BMP search table (contains pairs) */ 
+    static final int SET_INDEX_CANON_BMP_TABLE_LENGTH    = 1;
+    /* number of uint16_t in the supplementary search table(contains triplets)*/ 
+    static final int SET_INDEX_CANON_SUPP_TABLE_LENGTH  = 2;
+    /* changing this requires a new formatVersion */ 
+    static final int SET_INDEX_TOP                        = 32;
+    
+    static final int CANON_SET_INDICIES_INDEX              = 0;
+    static final int CANON_SET_START_SETS_INDEX            = 1;
+    static final int CANON_SET_BMP_TABLE_INDEX            = 2;
+    static final int CANON_SET_SUPP_TABLE_INDEX            = 3;
+    /* 14 bit indexes to canonical USerializedSets */
+    static final int CANON_SET_MAX_CANON_SETS             = 0x4000; 
+    /* single-code point BMP sets are encoded directly in the search table 
+     * except if result=0x4000..0x7fff 
+     */
+    static final int CANON_SET_BMP_MASK                    = 0xc000;
+    static final int CANON_SET_BMP_IS_INDEX                = 0x4000;
+    
+    private static final int MAX_BUFFER_SIZE                    = 20;
+    
+    /**
+     * Internal option for cmpEquivFold() for decomposing.
+     * If not set, just do strcasecmp().
+     * @internal
+     */
+     public static final int COMPARE_EQUIV = 0x80000;
+    
+    /*******************************/
+
+    /* Wrappers for Trie implementations */ 
+    static final class NormTrieImpl implements Trie.DataManipulate{
+        static IntTrie normTrie= null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including 
+        *         the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* normTrie: 32-bit trie result may contain a special extraData index with the folding offset */
+        public int getFoldingOffset(int value){
+            return  BMP_INDEX_LENGTH+
+                    ((value>>(EXTRA_SHIFT-SURROGATE_BLOCK_BITS))&
+                    (0x3ff<<SURROGATE_BLOCK_BITS)); 
+        }
+        
+    }
+    static final class FCDTrieImpl implements Trie.DataManipulate{
+        static CharTrie fcdTrie=null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including
+        *         the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* fcdTrie: the folding offset is the lead FCD value itself */
+        public int getFoldingOffset(int value){
+            return value;
+        }
+    }
+    
+    static final class AuxTrieImpl implements Trie.DataManipulate{
+        static CharTrie auxTrie = null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including 
+        *        the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* auxTrie: the folding offset is in bits 9..0 of the 16-bit trie result */
+        public int getFoldingOffset(int value){
+            return (int)(value &AUX_FNC_MASK)<<SURROGATE_BLOCK_BITS;
+        }
+    }
+         
+    /****************************************************/
+    
+    
+    private static FCDTrieImpl fcdTrieImpl;
+    private static NormTrieImpl normTrieImpl;
+    private static AuxTrieImpl auxTrieImpl;
+    private static int[] indexes;
+    private static char[] combiningTable;
+    private static char[] extraData;
+    private static Object[] canonStartSets;
+    
+    private static boolean isDataLoaded;
+    private static boolean isFormatVersion_2_1;
+    private static boolean isFormatVersion_2_2;
+    private static byte[] unicodeVersion;
+    
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int DATA_BUFFER_SIZE = 25000;
+    
+    /**
+     * FCD check: everything below this code point is known to have a 0 
+     * lead combining class 
+     */
+    public static final int MIN_WITH_LEAD_CC=0x300;
+
+
+    /**
+     * Bit 7 of the length byte for a decomposition string in extra data is
+     * a flag indicating whether the decomposition string is
+     * preceded by a 16-bit word with the leading and trailing cc
+     * of the decomposition (like for A-umlaut);
+     * if not, then both cc's are zero (like for compatibility ideographs).
+     */
+    private static final int DECOMP_FLAG_LENGTH_HAS_CC=0x80;
+    /**
+     * Bits 6..0 of the length byte contain the actual length.
+     */
+    private static final int DECOMP_LENGTH_MASK=0x7f;   
+    
+    /** Length of the BMP portion of the index (stage 1) array. */
+    private static final int BMP_INDEX_LENGTH=0x10000>>Trie.INDEX_STAGE_1_SHIFT_;
+    /** Number of bits of a trail surrogate that are used in index table 
+     * lookups. 
+     */
+    private static final int SURROGATE_BLOCK_BITS=10-Trie.INDEX_STAGE_1_SHIFT_;
+
+
+   // public utility
+   public static int getFromIndexesArr(int index){
+        return indexes[index];
+   }
+   
+   // protected constructor ---------------------------------------------
+    
+    /**
+    * Constructor
+    * @exception thrown when data reading fails or data corrupted
+    */
+    private NormalizerImpl() throws IOException {
+        //data should be loaded only once
+        if(!isDataLoaded){
+            
+            // jar access
+            InputStream i = ICUData.getRequiredStream(DATA_FILE_NAME);
+            BufferedInputStream b = new BufferedInputStream(i,DATA_BUFFER_SIZE);
+            NormalizerDataReader reader = new NormalizerDataReader(b);
+            
+            // read the indexes            
+            indexes = reader.readIndexes(NormalizerImpl.INDEX_TOP);
+            
+            byte[] normBytes = new byte[indexes[NormalizerImpl.INDEX_TRIE_SIZE]];
+            
+            int combiningTableTop = indexes[NormalizerImpl.INDEX_COMBINE_DATA_COUNT];
+            combiningTable = new char[combiningTableTop];
+            
+            int extraDataTop = indexes[NormalizerImpl.INDEX_CHAR_COUNT];
+            extraData = new char[extraDataTop];
+
+            byte[] fcdBytes = new byte[indexes[NormalizerImpl.INDEX_FCD_TRIE_SIZE]];
+            byte[] auxBytes = new byte[indexes[NormalizerImpl.INDEX_AUX_TRIE_SIZE]];
+            canonStartSets=new Object[NormalizerImpl.CANON_SET_MAX_CANON_SETS];
+            
+            fcdTrieImpl = new FCDTrieImpl();
+            normTrieImpl = new NormTrieImpl();
+            auxTrieImpl = new AuxTrieImpl();
+                        
+            // load the rest of the data data and initialize the data members
+            reader.read(normBytes, fcdBytes,auxBytes, extraData, combiningTable, 
+                        canonStartSets);
+                                       
+            NormTrieImpl.normTrie = new IntTrie( new ByteArrayInputStream(normBytes),normTrieImpl );
+            FCDTrieImpl.fcdTrie   = new CharTrie( new ByteArrayInputStream(fcdBytes),fcdTrieImpl  );
+            AuxTrieImpl.auxTrie   = new CharTrie( new ByteArrayInputStream(auxBytes),auxTrieImpl  );
+            
+            // we reached here without any exceptions so the data is fully 
+            // loaded set the variable to true
+            isDataLoaded = true;
+            
+            // get the data format version                           
+            byte[] formatVersion = reader.getDataFormatVersion();
+            
+            isFormatVersion_2_1 =( formatVersion[0]>2 
+                                    ||
+                                   (formatVersion[0]==2 && formatVersion[1]>=1)
+                                 );
+            isFormatVersion_2_2 =( formatVersion[0]>2 
+                                    ||
+                                   (formatVersion[0]==2 && formatVersion[1]>=2)
+                                 );
+            unicodeVersion = reader.getUnicodeVersion();
+            b.close();
+        }
+    }
+        
+    /* ---------------------------------------------------------------------- */
+    
+    /* Korean Hangul and Jamo constants */
+    
+    public static final int JAMO_L_BASE=0x1100;     /* "lead" jamo */
+    public static final int JAMO_V_BASE=0x1161;     /* "vowel" jamo */
+    public static final int JAMO_T_BASE=0x11a7;     /* "trail" jamo */
+    
+    public static final int HANGUL_BASE=0xac00;
+    
+    public static final int JAMO_L_COUNT=19;
+    public static final int JAMO_V_COUNT=21;
+    public static final int JAMO_T_COUNT=28;
+    public  static final int HANGUL_COUNT=JAMO_L_COUNT*JAMO_V_COUNT*JAMO_T_COUNT;
+    
+    private static boolean isHangulWithoutJamoT(char c) {
+        c-=HANGUL_BASE;
+        return c<HANGUL_COUNT && c%JAMO_T_COUNT==0;
+    }
+    
+    /* norm32 helpers */
+    
+    /* is this a norm32 with a regular index? */
+    private static boolean isNorm32Regular(long norm32) {
+        return norm32<MIN_SPECIAL;
+    }
+    
+    /* is this a norm32 with a special index for a lead surrogate? */
+    private static boolean isNorm32LeadSurrogate(long norm32) {
+        return MIN_SPECIAL<=norm32 && norm32<SURROGATES_TOP;
+    }
+    
+    /* is this a norm32 with a special index for a Hangul syllable or a Jamo? */
+    private static boolean isNorm32HangulOrJamo(long norm32) {
+        return norm32>=MIN_HANGUL;
+    }
+    
+    /*
+     * Given isNorm32HangulOrJamo(),
+     * is this a Hangul syllable or a Jamo?
+     */
+//    private static  boolean isHangulJamoNorm32HangulOrJamoL(long norm32) {
+//        return norm32<MIN_JAMO_V;
+//    }
+    
+    /*
+     * Given norm32 for Jamo V or T,
+     * is this a Jamo V?
+     */
+    private static boolean isJamoVTNorm32JamoV(long norm32) {
+        return norm32<JAMO_V_TOP;
+    }
+    
+    /* data access primitives ----------------------------------------------- */
+    
+    public static long/*unsigned*/ getNorm32(char c) {
+        return ((UNSIGNED_INT_MASK) & (NormTrieImpl.normTrie.getLeadValue(c)));
+    }
+    
+    public static long/*unsigned*/ getNorm32FromSurrogatePair(long norm32, 
+                                                               char c2) {
+        /*
+         * the surrogate index in norm32 stores only the number of the surrogate
+         * index block see gennorm/store.c/getFoldedNormValue()
+         */
+        return ((UNSIGNED_INT_MASK) & 
+                    NormTrieImpl.normTrie.getTrailValue((int)norm32, c2));
+    }
+    private static long getNorm32(int c){
+        return (UNSIGNED_INT_MASK&(NormTrieImpl.normTrie.getCodePointValue(c)));
+    }
+    
+//    private static long getNorm32(int c,int mask){
+//        long/*unsigned*/ norm32= getNorm32(UTF16.getLeadSurrogate(c));
+//        if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+//            /* c is a lead surrogate, get the real norm32 */
+//            norm32=getNorm32FromSurrogatePair(norm32,UTF16.getTrailSurrogate(c));
+//        }
+//        return norm32; 
+//    }
+    
+    /*
+     * get a norm32 from text with complete code points
+     * (like from decompositions)
+     */
+    private static long/*unsigned*/ getNorm32(char[] p,int start,
+                                              int/*unsigned*/ mask) {
+        long/*unsigned*/ norm32= getNorm32(p[start]);
+        if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+            /* *p is a lead surrogate, get the real norm32 */
+            norm32=getNorm32FromSurrogatePair(norm32, p[start+1]);
+        }
+        return norm32;
+    }
+    public static VersionInfo getUnicodeVersion(){
+        return VersionInfo.getInstance(unicodeVersion[0], unicodeVersion[1],
+                                       unicodeVersion[2], unicodeVersion[3]);
+    }
+    public static char    getFCD16(char c) {
+        return  FCDTrieImpl.fcdTrie.getLeadValue(c);
+    }
+    
+    public static char getFCD16FromSurrogatePair(char fcd16, char c2) {
+        /* the surrogate index in fcd16 is an absolute offset over the 
+         * start of stage 1 
+         * */
+        return FCDTrieImpl.fcdTrie.getTrailValue(fcd16, c2);
+    }
+    public static int getFCD16(int c) {
+        return  FCDTrieImpl.fcdTrie.getCodePointValue(c);
+    }
+        
+    private static int getExtraDataIndex(long norm32) {
+        return (int)(norm32>>EXTRA_SHIFT);
+    }
+    
+    private static final class DecomposeArgs{
+        int /*unsigned byte*/ cc;
+        int /*unsigned byte*/ trailCC;
+        int length;
+    }
+    /**
+     * 
+     * get the canonical or compatibility decomposition for one character 
+     * 
+     * @return index into the extraData array
+     */
+    private static int/*index*/ decompose(long/*unsigned*/ norm32, 
+                                          int/*unsigned*/ qcMask, 
+                                          DecomposeArgs args) {
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((norm32&qcMask&QC_NFKD)!=0 && args.length>=0x100) {
+            /* use compatibility decomposition, skip canonical data */
+            p+=((args.length>>7)&1)+(args.length&DECOMP_LENGTH_MASK);
+            args.length>>=8;
+        }
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+       
+    /**
+     * get the canonical decomposition for one character 
+     * @return index into the extraData array
+     */
+    private static int decompose(long/*unsigned*/ norm32, 
+                                 DecomposeArgs args) {
+                             
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+    
+    private static final class NextCCArgs{
+        char[] source;
+        int next;
+        int limit;
+        char c;
+        char c2;
+    }
+    
+    /*
+     * get the combining class of (c, c2)= args.source[args.next++]
+     * before: args.next<args.limit  after: args.next<=args.limit
+     * if only one code unit is used, then c2==0
+     */
+    private static int /*unsigned byte*/ getNextCC(NextCCArgs args) {
+        long /*unsigned*/ norm32;
+    
+        args.c=args.source[args.next++];
+        
+        norm32= getNorm32(args.c);
+        if((norm32 & CC_MASK)==0) {
+            args.c2=0;
+            return 0;
+        } else {
+            if(!isNorm32LeadSurrogate(norm32)) {
+                args.c2=0;
+            } else {
+                /* c is a lead surrogate, get the real norm32 */
+                if(args.next!=args.limit && 
+                        UTF16.isTrailSurrogate(args.c2=args.source[args.next])){
+                    ++args.next;
+                    norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+                } else {
+                    args.c2=0;
+                    return 0;
+                }
+            }
+    
+            return (int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+        }
+    }
+
+    private static final class PrevArgs{
+        char[] src;
+        int start;
+        int current;
+        char c;
+        char c2;
+    }
+    
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+    private static long /*unsigned*/ getPrevNorm32(PrevArgs args,
+                                                      int/*unsigned*/ minC, 
+                                                      int/*unsigned*/ mask) {
+        long/*unsigned*/ norm32;
+    
+        args.c=args.src[--args.current];
+        args.c2=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further 
+         */
+        if(args.c<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(args.c)) {
+            return getNorm32(args.c);
+        } else if(UTF16.isLeadSurrogate(args.c)) {
+            /* unpaired first surrogate */
+            return 0;
+        } else if(args.current!=args.start && 
+                    UTF16.isLeadSurrogate(args.c2=args.src[args.current-1])) {
+            --args.current;
+            norm32=getNorm32(args.c2);
+    
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have 
+                 * only irrelevant data 
+                 */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return getNorm32FromSurrogatePair(norm32, args.c);
+            }
+        } else {
+            /* unpaired second surrogate */
+            args.c2=0;
+            return 0;
+        }
+    }
+    
+    /*
+     * get the combining class of (c, c2)=*--p
+     * before: start<p  after: start<=p
+     */
+    private static int /*unsigned byte*/ getPrevCC(PrevArgs args) {
+
+        return (int)((UNSIGNED_BYTE_MASK)&(getPrevNorm32(args, MIN_WITH_LEAD_CC,
+                                                         CC_MASK)>>CC_SHIFT));
+    }
+
+    /*
+     * is this a safe boundary character for NF*D?
+     * (lead cc==0)
+     */
+    public static boolean isNFDSafe(long/*unsigned*/ norm32, 
+                                     int/*unsigned*/ccOrQCMask, 
+                                     int/*unsigned*/ decompQCMask) {
+        if((norm32&ccOrQCMask)==0) {
+            return true; /* cc==0 and no decomposition: this is NF*D safe */
+        }
+    
+        /* inspect its decomposition - maybe a Hangul but not a surrogate here*/
+        if(isNorm32Regular(norm32) && (norm32&decompQCMask)!=0) {
+            DecomposeArgs args=new DecomposeArgs();
+            /* decomposes, get everything from the variable-length extra data */
+            decompose(norm32, decompQCMask, args);
+            return args.cc==0;
+        } else {
+            /* no decomposition (or Hangul), test the cc directly */
+            return (norm32&CC_MASK)==0;
+        }
+    }
+    
+    /*
+     * is this (or does its decomposition begin with) a "true starter"?
+     * (cc==0 and NF*C_YES)
+     */
+    public static boolean isTrueStarter(long/*unsigned*/ norm32, 
+                                          int/*unsigned*/ ccOrQCMask, 
+                                          int/*unsigned*/ decompQCMask) {
+        if((norm32&ccOrQCMask)==0) {
+            return true; /* this is a true starter (could be Hangul or Jamo L)*/
+        }
+    
+        /* inspect its decomposition - not a Hangul or a surrogate here */
+        if((norm32&decompQCMask)!=0) {
+            int p; /* index into extra data array */
+            DecomposeArgs args=new DecomposeArgs();
+            /* decomposes, get everything from the variable-length extra data */
+            p=decompose(norm32, decompQCMask, args);
+          
+            if(args.cc==0) {
+                int/*unsigned*/ qcMask=ccOrQCMask&QC_MASK;
+    
+                /* does it begin with NFC_YES? */
+                if((getNorm32(extraData,p, qcMask)&qcMask)==0) {
+                    /* yes, the decomposition begins with a true starter */
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /* reorder UTF-16 in-place ---------------------------------------------- */
+    
+    /**
+     * simpler, single-character version of mergeOrdered() -
+     * bubble-insert one single code point into the preceding string
+     * which is already canonically ordered
+     * (c, c2) may or may not yet have been inserted at src[current]..src[p]
+     *
+     * it must be p=current+lengthof(c, c2) i.e. p=current+(c2==0 ? 1 : 2)
+     *
+     * before: src[start]..src[current] is already ordered, and
+     *         src[current]..src[p]     may or may not hold (c, c2) but
+     *                          must be exactly the same length as (c, c2)
+     * after: src[start]..src[p] is ordered
+     *
+     * @return the trailing combining class
+     */
+    private static int/*unsigned byte*/ insertOrdered(char[] source, 
+                                                      int start, 
+                                                      int current, int p,
+                                                         char c, char c2, 
+                                                         int/*unsigned byte*/ cc) {
+        int back, preBack;
+        int r;
+        int prevCC, trailCC=cc;
+    
+        if(start<current && cc!=0) {
+            // search for the insertion point where cc>=prevCC 
+            preBack=back=current;
+            PrevArgs prevArgs = new PrevArgs();
+            prevArgs.current  = current;
+            prevArgs.start    = start;
+            prevArgs.src      = source;
+            // get the prevCC 
+            prevCC=getPrevCC(prevArgs);
+            preBack = prevArgs.current;
+            
+            if(cc<prevCC) {
+                // this will be the last code point, so keep its cc 
+                trailCC=prevCC;
+                back=preBack;
+                while(start<preBack) {
+                    prevCC=getPrevCC(prevArgs);
+                    preBack=prevArgs.current;
+                    if(cc>=prevCC) {
+                        break;
+                    }
+                    back=preBack;
+                }
+    
+                
+                // this is where we are right now with all these indicies:
+                // [start]..[pPreBack] 0..? code points that we can ignore
+                // [pPreBack]..[pBack] 0..1 code points with prevCC<=cc
+                // [pBack]..[current] 0..n code points with >cc, move up to insert (c, c2)
+                // [current]..[p]         1 code point (c, c2) with cc
+                 
+                // move the code units in between up 
+                r=p;
+                do {
+                    source[--r]=source[--current];
+                } while(back!=current);
+            }
+        }
+    
+        // insert (c, c2) 
+        source[current]=c;
+        if(c2!=0) {
+            source[(current+1)]=c2;
+        }
+    
+        // we know the cc of the last code point 
+        return trailCC;
+    }
+    
+    /**
+     * merge two UTF-16 string parts together
+     * to canonically order (order by combining classes) their concatenation
+     *
+     * the two strings may already be adjacent, so that the merging is done 
+     * in-place if the two strings are not adjacent, then the buffer holding the
+     * first one must be large enough
+     * the second string may or may not be ordered in itself
+     *
+     * before: [start]..[current] is already ordered, and
+     *         [next]..[limit]    may be ordered in itself, but
+     *                          is not in relation to [start..current[
+     * after: [start..current+(limit-next)[ is ordered
+     *
+     * the algorithm is a simple bubble-sort that takes the characters from 
+     * src[next++] and inserts them in correct combining class order into the 
+     * preceding part of the string
+     *
+     * since this function is called much less often than the single-code point
+     * insertOrdered(), it just uses that for easier maintenance
+     *
+     * @return the trailing combining class
+     */
+    private static int /*unsigned byte*/ mergeOrdered(char[] source,
+                                                      int start, 
+                                                      int current,
+                                                      char[] data,
+                                                        int next, 
+                                                        int limit, 
+                                                        boolean isOrdered) {
+            int r;
+            int /*unsigned byte*/ cc, trailCC=0;
+            boolean adjacent;
+        
+            adjacent= current==next;
+            NextCCArgs ncArgs = new NextCCArgs();
+            ncArgs.source = data;
+            ncArgs.next   = next;
+            ncArgs.limit  = limit;
+            
+            if(start!=current || !isOrdered) {
+                    
+                while(ncArgs.next<ncArgs.limit) {
+                    cc=getNextCC(ncArgs);
+                    if(cc==0) {
+                        // does not bubble back 
+                        trailCC=0;
+                        if(adjacent) {
+                            current=ncArgs.next;
+                        } else {
+                            data[current++]=ncArgs.c;
+                            if(ncArgs.c2!=0) {
+                                data[current++]=ncArgs.c2;
+                            }
+                        }
+                        if(isOrdered) {
+                            break;
+                        } else {
+                            start=current;
+                        }
+                    } else {
+                        r=current+(ncArgs.c2==0 ? 1 : 2);
+                        trailCC=insertOrdered(source,start, current, r, 
+                                              ncArgs.c, ncArgs.c2, cc);
+                        current=r;
+                    }
+                }
+            }
+        
+            if(ncArgs.next==ncArgs.limit) {
+                // we know the cc of the last code point 
+                return trailCC;
+            } else {
+                if(!adjacent) {
+                    // copy the second string part 
+                    do {
+                        source[current++]=data[ncArgs.next++];
+                    } while(ncArgs.next!=ncArgs.limit);
+                    ncArgs.limit=current;
+                }
+                PrevArgs prevArgs = new PrevArgs();
+                prevArgs.src   = data;
+                prevArgs.start = start;
+                prevArgs.current =  ncArgs.limit;
+                return getPrevCC(prevArgs);
+            }
+
+    }
+    private static int /*unsigned byte*/ mergeOrdered(char[] source,
+                                                      int start, 
+                                                      int current,
+                                                      char[] data,
+                                                        final int next, 
+                                                        final int limit) {
+        return mergeOrdered(source,start,current,data,next,limit,true);
+    } 
+
+    
+      
+    public static boolean checkFCD(char[] src,int srcStart, int srcLimit,
+                                   UnicodeSet nx) {
+
+        char fcd16,c,c2;
+        int prevCC=0, cc;
+        int i =srcStart, length = srcLimit;
+    
+        for(;;) {
+            for(;;) {
+                if(i==length) {
+                    return true;
+                } else if((c=src[i++])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+            }
+
+            // check one above-minimum, relevant code unit 
+            if(UTF16.isLeadSurrogate(c)) {
+                // c is a lead surrogate, get the real fcd16 
+                if(i!=length && UTF16.isTrailSurrogate(c2=src[i])) {
+                    ++i;
+                    fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+                } else {
+                    c2=0;
+                    fcd16=0;
+                }
+            }else{
+                c2=0;
+            }
+            
+            if(nx_contains(nx, c, c2)) {
+                prevCC=0; /* excluded: fcd16==0 */
+                continue;
+            }
+
+            // prevCC has values from the following ranges:
+            // 0..0xff -the previous trail combining class
+            // <0      -the negative value of the previous code unit;
+            //          that code unit was <MIN_WITH_LEAD_CC and its getFCD16()
+            //          was deferred so that average text is checked faster
+            //
+    
+            // check the combining order 
+            cc=(int)(fcd16>>8);
+            if(cc!=0) {
+                if(prevCC<0) {
+                    // the previous character was <_NORM_MIN_WITH_LEAD_CC, 
+                    // we need to get its trail cc 
+                    //
+                    if(!nx_contains(nx, (int)-prevCC)) {
+                        prevCC=(int)(FCDTrieImpl.fcdTrie.getBMPValue(
+                                             (char)-prevCC)&0xff
+                                             ); 
+                    } else {
+                        prevCC=0; /* excluded: fcd16==0 */
+                    }
+                                      
+                }
+    
+                if(cc<prevCC) {
+                    return false;
+                }
+            }
+            prevCC=(int)(fcd16&0xff);
+        }
+    }
+    
+    public static Normalizer.QuickCheckResult quickCheck(char[] src,
+                                                            int srcStart, 
+                                                            int srcLimit,
+                                                            int minNoMaybe,
+                                                            int qcMask,
+                                                            int options,
+                                                            boolean allowMaybe,
+                                                            UnicodeSet nx){
+
+        int ccOrQCMask;
+        long norm32;
+        char c, c2;
+        char cc, prevCC;
+        long qcNorm32;
+        Normalizer.QuickCheckResult result;
+        ComposePartArgs args = new ComposePartArgs();
+        char[] buffer ;
+        int start = srcStart;
+        
+        if(!isDataLoaded) {
+            return Normalizer.MAYBE;
+        }
+        // initialize 
+        ccOrQCMask=CC_MASK|qcMask;
+        result=Normalizer.YES;
+        prevCC=0;
+                
+        for(;;) {
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    return result;
+                } else if((c=src[srcStart++])>=minNoMaybe && 
+                                  (( norm32=getNorm32(c)) & ccOrQCMask)!=0) {
+                    break;
+                }
+                prevCC=0;
+            }
+            
+    
+            // check one above-minimum, relevant code unit 
+            if(isNorm32LeadSurrogate(norm32)) {
+                // c is a lead surrogate, get the real norm32 
+                if(srcStart!=srcLimit&& UTF16.isTrailSurrogate(c2=src[srcStart])) {
+                    ++srcStart;
+                    norm32=getNorm32FromSurrogatePair(norm32,c2);
+                } else {
+                    norm32=0;
+                    c2=0;
+                }
+            }else{
+                c2=0;
+            }
+            if(nx_contains(nx, c, c2)) {
+                /* excluded: norm32==0 */
+                norm32=0;
+            }
+    
+            // check the combining order 
+            cc=(char)((norm32>>CC_SHIFT)&0xFF);
+            if(cc!=0 && cc<prevCC) {
+                return Normalizer.NO;
+            }
+            prevCC=cc;
+    
+            // check for "no" or "maybe" quick check flags 
+            qcNorm32 = norm32 & qcMask;
+            if((qcNorm32& QC_ANY_NO)>=1) {
+                result= Normalizer.NO;
+                break;
+            } else if(qcNorm32!=0) {
+                // "maybe" can only occur for NFC and NFKC 
+                if(allowMaybe){
+                    result=Normalizer.MAYBE;
+                }else{
+                    // normalize a section around here to see if it is really 
+                    // normalized or not 
+                    int prevStarter;
+                    int/*unsigned*/ decompQCMask;
+    
+                    decompQCMask=(qcMask<<2)&0xf; // decomposition quick check mask 
+    
+                    // find the previous starter 
+
+                    // set prevStarter to the beginning of the current character 
+                    prevStarter=srcStart-1; 
+                    if(UTF16.isTrailSurrogate(src[prevStarter])) {
+                        // safe because unpaired surrogates do not result 
+                        // in "maybe"
+                        --prevStarter; 
+                    }
+
+                    prevStarter=findPreviousStarter(src, start, prevStarter,
+                                                    ccOrQCMask, decompQCMask,
+                                                    (char)minNoMaybe);
+    
+                    // find the next true starter in [src..limit[ - modifies 
+                    // src to point to the next starter 
+                    srcStart=findNextStarter(src,srcStart, srcLimit, qcMask, 
+                                             decompQCMask,(char) minNoMaybe);
+                    
+                    //set the args for compose part
+                    args.prevCC = prevCC;
+                       
+                    // decompose and recompose [prevStarter..src[ 
+                    buffer = composePart(args,prevStarter,src,srcStart,srcLimit,options,nx);
+    
+                    // compare the normalized version with the original 
+                    if(0!=strCompare(buffer,0,args.length,src,prevStarter,srcStart, false)) {
+                        result=Normalizer.NO; // normalization differs 
+                        break;
+                    }
+    
+                    // continue after the next starter 
+                }
+            }
+        }
+        return result;
+    } 
+ 
+       
+    //------------------------------------------------------ 
+    // make NFD & NFKD 
+    //------------------------------------------------------
+    public static int getDecomposition(int c /*UTF-32*/ , 
+                                        boolean compat,
+                                           char[] dest,
+                                           int destStart, 
+                                           int destCapacity) {
+            
+        if( (UNSIGNED_INT_MASK & c)<=0x10ffff) {
+            long /*unsigned*/ norm32;
+            int qcMask;
+            int minNoMaybe;
+            int length;
+    
+            // initialize 
+            if(!compat) {
+                minNoMaybe=(int)indexes[INDEX_MIN_NFD_NO_MAYBE];
+                qcMask=QC_NFD;
+            } else {
+                minNoMaybe=(int)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+                qcMask=QC_NFKD;
+            }
+    
+            if(c<minNoMaybe) {
+                // trivial case 
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+                return -1;
+            }
+    
+            /* data lookup */
+            norm32=getNorm32(c);
+            if((norm32&qcMask)==0) {
+                /* simple case: no decomposition */
+                if(c<=0xffff) {
+                    if(destCapacity>0) {
+                        dest[0]=(char)c;
+                    }
+                    return -1;
+                } else {
+                    if(destCapacity>=2) {
+                        dest[0]=UTF16.getLeadSurrogate(c);
+                        dest[1]=UTF16.getTrailSurrogate(c);
+                    }
+                    return -2;
+                }
+            } else if(isNorm32HangulOrJamo(norm32)) {
+                /* Hangul syllable: decompose algorithmically */
+                char c2;
+    
+                c-=HANGUL_BASE;
+    
+                c2=(char)(c%JAMO_T_COUNT);
+                c/=JAMO_T_COUNT;
+                if(c2>0) {
+                    if(destCapacity>=3) {
+                        dest[2]=(char)(JAMO_T_BASE+c2);
+                    }
+                    length=3;
+                } else {
+                    length=2;
+                }
+    
+                if(destCapacity>=2) {
+                    dest[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                    dest[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                }
+                return length;
+            } else {
+                /* c decomposes, get everything from the variable-length extra 
+                 * data 
+                 */
+                int p, limit;
+                DecomposeArgs args = new DecomposeArgs();
+                /* the index into extra data array*/                 
+                p=decompose(norm32, qcMask, args);
+                if(args.length<=destCapacity) {
+                    limit=p+args.length;
+                    do {
+                        dest[destStart++]=extraData[p++];
+                    } while(p<limit);
+                }
+                return args.length;
+            }
+        } else {
+            return 0;
+        }
+    }
+
+    
+    public static int decompose(char[] src,int srcStart,int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                 boolean compat,int[] outTrailCC,
+                                 UnicodeSet nx) {
+                                
+        char[] buffer = new char[3];
+        int prevSrc;
+        long norm32;
+        int ccOrQCMask, qcMask;
+        int reorderStartIndex, length;
+        char c, c2, minNoMaybe;
+        int/*unsigned byte*/ cc, prevCC, trailCC;
+        char[] p;
+        int pStart;
+        int destIndex = destStart;
+        int srcIndex = srcStart;
+        if(!compat) {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFD_NO_MAYBE];
+            qcMask=QC_NFD;
+        } else {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+            qcMask=QC_NFKD;
+        }
+    
+        /* initialize */
+        ccOrQCMask=CC_MASK|qcMask;
+        reorderStartIndex=0;
+        prevCC=0;
+        norm32=0;
+        c=0;
+        pStart=0;
+        
+        cc=trailCC=-1;//initialize to bogus value
+        
+        for(;;) {
+            /* count code units below the minimum or with irrelevant data for 
+             * the quick check 
+             */
+            prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit &&((c=src[srcIndex])<minNoMaybe || 
+                                        ((norm32=getNorm32(c))&ccOrQCMask)==0)){
+                prevCC=0;
+                ++srcIndex;
+            }
+
+            /* copy these code units all at once */
+            if(srcIndex!=prevSrc) {
+                length=(int)(srcIndex-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+              
+                destIndex+=length;
+                reorderStartIndex=destIndex;
+            }
+    
+            /* end of source reached? */
+            if(srcIndex==srcLimit) {
+                break;
+            }
+    
+            /* c already contains *src and norm32 is set for it, increment src*/
+            ++srcIndex;
+    
+            /* check one above-minimum, relevant code unit */
+            /*
+             * generally, set p and length to the decomposition string
+             * in simple cases, p==NULL and (c, c2) will hold the length code 
+             * units to append in all cases, set cc to the lead and trailCC to 
+             * the trail combining class
+             *
+             * the following merge-sort of the current character into the 
+             * preceding, canonically ordered result text will use the 
+             * optimized insertOrdered()
+             * if there is only one single code point to process;
+             * this is indicated with p==NULL, and (c, c2) is the character to 
+             * insert
+             * ((c, 0) for a BMP character and (lead surrogate, trail surrogate)
+             * for a supplementary character)
+             * otherwise, p[length] is merged in with _mergeOrdered()
+             */
+            if(isNorm32HangulOrJamo(norm32)) {
+                if(nx_contains(nx, c)) {
+                    c2=0;
+                    p=null;
+                    length=1;
+                } else {
+                    // Hangul syllable: decompose algorithmically 
+                    p=buffer;
+                    pStart=0;
+                    cc=trailCC=0;
+    
+                    c-=HANGUL_BASE;
+    
+                    c2=(char)(c%JAMO_T_COUNT);
+                    c/=JAMO_T_COUNT;
+                    if(c2>0) {
+                        buffer[2]=(char)(JAMO_T_BASE+c2);
+                        length=3;
+                    } else {
+                        length=2;
+                    }
+    
+                    buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                    buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                }
+            } else {
+                if(isNorm32Regular(norm32)) {
+                    c2=0;
+                    length=1;
+                } else {
+                    // c is a lead surrogate, get the real norm32 
+                    if(srcIndex!=srcLimit && 
+                                    UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+                        ++srcIndex;
+                        length=2;
+                        norm32=getNorm32FromSurrogatePair(norm32, c2);
+                    } else {
+                        c2=0;
+                        length=1;
+                        norm32=0;
+                    }
+                }
+    
+                /* get the decomposition and the lead and trail cc's */
+                if(nx_contains(nx, c, c2)) {
+                    /* excluded: norm32==0 */
+                    cc=trailCC=0;
+                    p=null;
+                } else if((norm32&qcMask)==0) {
+                    /* c does not decompose */
+                    cc=trailCC=(int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+                    p=null;
+                    pStart=-1;
+                } else {
+                    DecomposeArgs arg = new DecomposeArgs();
+                    /* c decomposes, get everything from the variable-length 
+                     * extra data 
+                     */
+                    pStart=decompose(norm32, qcMask, arg);
+                    p=extraData;
+                    length=arg.length;
+                    cc=arg.cc;
+                    trailCC=arg.trailCC;
+                    if(length==1) {
+                        /* fastpath a single code unit from decomposition */
+                        c=p[pStart];
+                        c2=0;
+                        p=null;
+                        pStart=-1;
+                    }
+                }
+            }
+    
+            /* append the decomposition to the destination buffer, assume 
+             * length>0 
+             */
+            if((destIndex+length)<=destLimit) {
+                int reorderSplit=destIndex;
+                if(p==null) {
+                    /* fastpath: single code point */
+                    if(cc!=0 && cc<prevCC) {
+                        /* (c, c2) is out of order with respect to the preceding
+                         *  text 
+                         */
+                        destIndex+=length;
+                        trailCC=insertOrdered(dest,reorderStartIndex, 
+                                            reorderSplit, destIndex, c, c2, cc);
+                    } else {
+                        /* just append (c, c2) */
+                        dest[destIndex++]=c;
+                        if(c2!=0) {
+                            dest[destIndex++]=c2;
+                        }
+                    }
+                } else {
+                    /* general: multiple code points (ordered by themselves) 
+                     * from decomposition 
+                     */
+                    if(cc!=0 && cc<prevCC) {
+                        /* the decomposition is out of order with respect to the
+                         *  preceding text 
+                         */
+                        destIndex+=length;
+                        trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                          reorderSplit,p, pStart,pStart+length);
+                    } else {
+                        /* just append the decomposition */
+                        do {
+                            dest[destIndex++]=p[pStart++];
+                        } while(--length>0);
+                    }
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=length;
+            }
+    
+            prevCC=trailCC;
+            if(prevCC==0) {
+                reorderStartIndex=destIndex;
+            }
+        }
+    
+        outTrailCC[0]=prevCC;
+
+        return destIndex - destStart;
+    }
+    
+    /* make NFC & NFKC ------------------------------------------------------ */
+    private static final class NextCombiningArgs{
+        char[] source;
+        int start;
+        //int limit;
+        char c;
+        char c2;
+        int/*unsigned*/ combiningIndex;
+        char /*unsigned byte*/ cc;
+    }
+    
+    /* get the composition properties of the next character */
+    private static int /*unsigned*/    getNextCombining(NextCombiningArgs args,
+                                                    int limit,
+                                                    UnicodeSet nx) {
+        long/*unsigned*/ norm32; 
+        int combineFlags;
+        /* get properties */
+        args.c=args.source[args.start++];
+        norm32=getNorm32(args.c);
+        
+        /* preset output values for most characters */
+        args.c2=0;
+        args.combiningIndex=0;
+        args.cc=0;
+        
+        if((norm32&(CC_MASK|COMBINES_ANY))==0) {
+            return 0;
+        } else {
+            if(isNorm32Regular(norm32)) {
+                /* set cc etc. below */
+            } else if(isNorm32HangulOrJamo(norm32)) {
+                /* a compatibility decomposition contained Jamos */
+                args.combiningIndex=(int)((UNSIGNED_INT_MASK)&(0xfff0|
+                                                        (norm32>>EXTRA_SHIFT)));
+                return (int)(norm32&COMBINES_ANY);
+            } else {
+                /* c is a lead surrogate, get the real norm32 */
+                if(args.start!=limit && UTF16.isTrailSurrogate(args.c2=
+                                                     args.source[args.start])) {
+                    ++args.start;
+                    norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+                } else {
+                    args.c2=0;
+                    return 0;
+                }
+            }
+            
+            if(nx_contains(nx, args.c, args.c2)) {
+                return 0; /* excluded: norm32==0 */
+            }
+    
+            args.cc= (char)((norm32>>CC_SHIFT)&0xff);
+        
+            combineFlags=(int)(norm32&COMBINES_ANY);
+            if(combineFlags!=0) {
+                int index = getExtraDataIndex(norm32);
+                args.combiningIndex=index>0 ? extraData[(index-1)] :0;
+            }
+    
+            return combineFlags;
+        }
+    }
+    
+    /*
+     * given a composition-result starter (c, c2) - which means its cc==0,
+     * it combines forward, it has extra data, its norm32!=0,
+     * it is not a Hangul or Jamo,
+     * get just its combineFwdIndex
+     *
+     * norm32(c) is special if and only if c2!=0
+     */
+    private static int/*unsigned*/ getCombiningIndexFromStarter(char c,char c2){
+        long/*unsigned*/ norm32;
+    
+        norm32=getNorm32(c);
+        if(c2!=0) {
+            norm32=getNorm32FromSurrogatePair(norm32, c2);
+        }
+        return extraData[(getExtraDataIndex(norm32)-1)];
+    }
+    
+    /*
+     * Find the recomposition result for
+     * a forward-combining character
+     * (specified with a pointer to its part of the combiningTable[])
+     * and a backward-combining character
+     * (specified with its combineBackIndex).
+     *
+     * If these two characters combine, then set (value, value2)
+     * with the code unit(s) of the composition character.
+     *
+     * Return value:
+     * 0    do not combine
+     * 1    combine
+     * >1   combine, and the composition is a forward-combining starter
+     *
+     * See unormimp.h for a description of the composition table format.
+     */
+    private static int/*unsigned*/ combine(char[]table,int tableStart, 
+                                   int/*unsinged*/ combineBackIndex,
+                                    int[] outValues) {
+        int/*unsigned*/ key;
+        int value,value2;
+        
+        if(outValues.length<2){
+            throw new IllegalArgumentException();
+        }
+        
+        /* search in the starter's composition table */
+        for(;;) {
+            key=table[tableStart++];
+            if(key>=combineBackIndex) {
+                break;
+            }
+            tableStart+= ((table[tableStart]&0x8000) != 0)? 2 : 1;
+        }
+    
+        /* mask off bit 15, the last-entry-in-the-list flag */
+        if((key&0x7fff)==combineBackIndex) {
+            /* found! combine! */
+            value=table[tableStart];
+    
+            /* is the composition a starter that combines forward? */
+            key=(int)((UNSIGNED_INT_MASK)&((value&0x2000)+1));
+    
+            /* get the composition result code point from the variable-length 
+             * result value 
+             */
+            if((value&0x8000) != 0) {
+                if((value&0x4000) != 0) {
+                    /* surrogate pair composition result */
+                    value=(int)((UNSIGNED_INT_MASK)&((value&0x3ff)|0xd800));
+                    value2=table[tableStart+1];
+                } else {
+                    /* BMP composition result U+2000..U+ffff */
+                    value=table[tableStart+1];
+                    value2=0;
+                }
+            } else {
+                /* BMP composition result U+0000..U+1fff */
+                value&=0x1fff;
+                value2=0;
+            }
+            outValues[0]=value;
+            outValues[1]=value2;    
+            return key;
+        } else {
+            /* not found */
+            return 0;
+        }
+    }
+    
+    
+    private static final class RecomposeArgs{
+        char[] source;
+        int start;
+        int limit;
+    }
+    /*
+     * recompose the characters in [p..limit[
+     * (which is in NFD - decomposed and canonically ordered),
+     * adjust limit, and return the trailing cc
+     *
+     * since for NFKC we may get Jamos in decompositions, we need to
+     * recompose those too
+     *
+     * note that recomposition never lengthens the text:
+     * any character consists of either one or two code units;
+     * a composition may contain at most one more code unit than the original 
+     * starter, while the combining mark that is removed has at least one code 
+     * unit
+     */
+    private static char/*unsigned byte*/ recompose(RecomposeArgs args, int options, UnicodeSet nx) {
+        int  remove, q, r;
+        int /*unsigned*/ combineFlags;
+        int /*unsigned*/ combineFwdIndex, combineBackIndex;
+        int /*unsigned*/ result, value=0, value2=0;
+        int /*unsigned byte*/  prevCC;
+        boolean starterIsSupplementary;
+        int starter;
+        int[] outValues = new int[2];
+        starter=-1;                   /* no starter */
+        combineFwdIndex=0;            /* will not be used until starter!=NULL */
+        starterIsSupplementary=false; /* will not be used until starter!=NULL */
+        prevCC=0;
+        
+        NextCombiningArgs ncArg = new NextCombiningArgs();
+        ncArg.source  = args.source;
+        
+        ncArg.cc      =0;
+        ncArg.c2      =0;    
+
+        for(;;) {
+            ncArg.start = args.start;
+            combineFlags=getNextCombining(ncArg,args.limit,nx);
+            combineBackIndex=ncArg.combiningIndex;
+            args.start = ncArg.start;
+                        
+            if(((combineFlags&COMBINES_BACK)!=0) && starter!=-1) {
+                if((combineBackIndex&0x8000)!=0) {
+                    /* c is a Jamo V/T, see if we can compose it with the 
+                     * previous character 
+                     */
+                    /* for the PRI #29 fix, check that there is no intervening combining mark */
+                    if((options&BEFORE_PRI_29)!=0 || prevCC==0) {
+                        remove=-1; /* NULL while no Hangul composition */
+                        combineFlags=0;
+                        ncArg.c2=args.source[starter];
+                        if(combineBackIndex==0xfff2) {
+                            /* Jamo V, compose with previous Jamo L and following 
+                             * Jamo T 
+                             */
+                            ncArg.c2=(char)(ncArg.c2-JAMO_L_BASE);
+                            if(ncArg.c2<JAMO_L_COUNT) {
+                                remove=args.start-1;
+                                ncArg.c=(char)(HANGUL_BASE+(ncArg.c2*JAMO_V_COUNT+
+                                               (ncArg.c-JAMO_V_BASE))*JAMO_T_COUNT);
+                                if(args.start!=args.limit && 
+                                            (ncArg.c2=(char)(args.source[args.start]
+                                             -JAMO_T_BASE))<JAMO_T_COUNT) {
+                                    ++args.start;
+                                    ncArg.c+=ncArg.c2;
+                                 } else {
+                                     /* the result is an LV syllable, which is a starter (unlike LVT) */
+                                     combineFlags=COMBINES_FWD;
+                                }
+                                if(!nx_contains(nx, ncArg.c)) {
+                                    args.source[starter]=ncArg.c;
+                                   } else {
+                                    /* excluded */
+                                    if(!isHangulWithoutJamoT(ncArg.c)) {
+                                        --args.start; /* undo the ++args.start from reading the Jamo T */
+                                    }
+                                    /* c is modified but not used any more -- c=*(p-1); -- re-read the Jamo V/T */
+                                    remove=args.start;
+                                }
+                            }
+
+                        /*
+                         * Normally, the following can not occur:
+                         * Since the input is in NFD, there are no Hangul LV syllables that
+                         * a Jamo T could combine with.
+                         * All Jamo Ts are combined above when handling Jamo Vs.
+                         *
+                         * However, before the PRI #29 fix, this can occur due to
+                         * an intervening combining mark between the Hangul LV and the Jamo T.
+                         */
+                        } else {
+                            /* Jamo T, compose with previous Hangul that does not have a Jamo T */
+                            if(isHangulWithoutJamoT(ncArg.c2)) {
+                                ncArg.c2+=ncArg.c-JAMO_T_BASE;
+                                if(!nx_contains(nx, ncArg.c2)) {
+                                    remove=args.start-1;
+                                    args.source[starter]=ncArg.c2;
+                                }
+                            }
+                        }
+        
+                        if(remove!=-1) {
+                            /* remove the Jamo(s) */
+                            q=remove;
+                            r=args.start;
+                            while(r<args.limit) {
+                                args.source[q++]=args.source[r++];
+                            }
+                            args.start=remove;
+                            args.limit=q;
+                        }
+        
+                        ncArg.c2=0; /* c2 held *starter temporarily */
+
+                        if(combineFlags!=0) {
+                            /*
+                             * not starter=NULL because the composition is a Hangul LV syllable
+                             * and might combine once more (but only before the PRI #29 fix)
+                             */
+
+                            /* done? */
+                            if(args.start==args.limit) {
+                                return (char)prevCC;
+                            }
+
+                            /* the composition is a Hangul LV syllable which is a starter that combines forward */
+                            combineFwdIndex=0xfff0;
+
+                            /* we combined; continue with looking for compositions */
+                            continue;
+                        }
+                    }
+
+                    /*
+                     * now: cc==0 and the combining index does not include 
+                     * "forward" -> the rest of the loop body will reset starter
+                     * to NULL; technically, a composed Hangul syllable is a 
+                     * starter, but it does not combine forward now that we have
+                     * consumed all eligible Jamos; for Jamo V/T, combineFlags 
+                     * does not contain _NORM_COMBINES_FWD
+                     */
+    
+                } else if(
+                    /* the starter is not a Hangul LV or Jamo V/T and */
+                    !((combineFwdIndex&0x8000)!=0) &&
+                    /* the combining mark is not blocked and */
+                    ((options&BEFORE_PRI_29)!=0 ?
+                        (prevCC!=ncArg.cc || prevCC==0) :
+                        (prevCC<ncArg.cc || prevCC==0)) &&
+                    /* the starter and the combining mark (c, c2) do combine */
+                    0!=(result=combine(combiningTable,combineFwdIndex, 
+                                       combineBackIndex, outValues)) &&
+                    /* the composition result is not excluded */
+                    !nx_contains(nx, (char)value, (char)value2)
+                ) {
+                    value=outValues[0];
+                    value2=outValues[1];
+                    /* replace the starter with the composition, remove the 
+                     * combining mark 
+                     */
+                    remove= ncArg.c2==0 ? args.start-1 : args.start-2; /* index to the combining mark */
+    
+                    /* replace the starter with the composition */
+                    args.source[starter]=(char)value;
+                    if(starterIsSupplementary) {
+                        if(value2!=0) {
+                            /* both are supplementary */
+                            args.source[starter+1]=(char)value2;
+                        } else {
+                            /* the composition is shorter than the starter, 
+                             * move the intermediate characters forward one */
+                            starterIsSupplementary=false;
+                            q=starter+1;
+                            r=q+1;
+                            while(r<remove) {
+                                args.source[q++]=args.source[r++];
+                            }
+                            --remove;
+                        }
+                    } else if(value2!=0) {
+                        /* the composition is longer than the starter, 
+                         * move the intermediate characters back one */
+                        starterIsSupplementary=true;
+                        /* temporarily increment for the loop boundary */
+                        ++starter; 
+                        q=remove;
+                        r=++remove;
+                        while(starter<q) {
+                            args.source[--r]=args.source[--q];
+                        }
+                        args.source[starter]=(char)value2;
+                        --starter; /* undo the temporary increment */
+                    /* } else { both are on the BMP, nothing more to do */
+                    }
+    
+                    /* remove the combining mark by moving the following text 
+                     * over it */
+                    if(remove<args.start) {
+                        q=remove;
+                        r=args.start;
+                        while(r<args.limit) {
+                            args.source[q++]=args.source[r++];
+                        }
+                        args.start=remove;
+                        args.limit=q;
+                    }
+    
+                    /* keep prevCC because we removed the combining mark */
+    
+                    /* done? */
+                    if(args.start==args.limit) {
+                        return (char)prevCC;
+                    }
+    
+                    /* is the composition a starter that combines forward? */
+                    if(result>1) {
+                       combineFwdIndex=getCombiningIndexFromStarter((char)value,
+                                                                  (char)value2);
+                    } else {
+                       starter=-1;
+                    }
+    
+                    /* we combined; continue with looking for compositions */
+                    continue;
+                }
+            }
+    
+            /* no combination this time */
+            prevCC=ncArg.cc;
+            if(args.start==args.limit) {
+                return (char)prevCC;
+            }
+    
+            /* if (c, c2) did not combine, then check if it is a starter */
+            if(ncArg.cc==0) {
+                /* found a new starter; combineFlags==0 if (c, c2) is excluded */
+                if((combineFlags&COMBINES_FWD)!=0) {
+                    /* it may combine with something, prepare for it */
+                    if(ncArg.c2==0) {
+                        starterIsSupplementary=false;
+                        starter=args.start-1;
+                    } else {
+                        starterIsSupplementary=false;
+                        starter=args.start-2;
+                    }
+                    combineFwdIndex=combineBackIndex;
+                } else {
+                    /* it will not combine with anything */
+                    starter=-1;
+                }
+            } else if((options&OPTIONS_COMPOSE_CONTIGUOUS)!=0) {
+                /* FCC: no discontiguous compositions; any intervening character blocks */
+                starter=-1;
+            }
+        }
+    }
+   
+    // find the last true starter between src[start]....src[current] going 
+    // backwards and return its index
+    private static int findPreviousStarter(char[]src, int srcStart, int current, 
+                                          int/*unsigned*/ ccOrQCMask, 
+                                          int/*unsigned*/ decompQCMask,
+                                          char minNoMaybe) { 
+       long norm32; 
+       PrevArgs args = new PrevArgs();
+       args.src = src;
+       args.start = srcStart;
+       args.current = current;
+       
+       while(args.start<args.current) { 
+           norm32= getPrevNorm32(args, minNoMaybe, ccOrQCMask|decompQCMask); 
+           if(isTrueStarter(norm32, ccOrQCMask, decompQCMask)) { 
+               break; 
+           } 
+       } 
+       return args.current; 
+    }
+    
+    /* find the first true starter in [src..limit[ and return the 
+     * pointer to it 
+     */
+    private static int/*index*/    findNextStarter(char[] src,int start,int limit,
+                                                 int/*unsigned*/ qcMask, 
+                                                 int/*unsigned*/ decompQCMask, 
+                                                 char minNoMaybe) {
+        int p;
+        long/*unsigned*/ norm32; 
+        int ccOrQCMask;
+        char c, c2;
+    
+        ccOrQCMask=CC_MASK|qcMask;
+        
+        DecomposeArgs decompArgs = new DecomposeArgs();
+
+        for(;;) {
+            if(start==limit) {
+                break; /* end of string */
+            }
+            c=src[start];
+            if(c<minNoMaybe) {
+                break; /* catches NUL terminater, too */
+            }
+    
+            norm32=getNorm32(c);
+            if((norm32&ccOrQCMask)==0) {
+                break; /* true starter */
+            }
+    
+            if(isNorm32LeadSurrogate(norm32)) {
+                /* c is a lead surrogate, get the real norm32 */
+                if((start+1)==limit || 
+                                   !UTF16.isTrailSurrogate(c2=(src[start+1]))){
+                    /* unmatched first surrogate: counts as a true starter */                  
+                    break; 
+                }
+                norm32=getNorm32FromSurrogatePair(norm32, c2);
+    
+                if((norm32&ccOrQCMask)==0) {
+                    break; /* true starter */
+                }
+            } else {
+                c2=0;
+            }
+    
+            /* (c, c2) is not a true starter but its decomposition may be */
+            if((norm32&decompQCMask)!=0) {
+                /* (c, c2) decomposes, get everything from the variable-length
+                 *  extra data */
+                p=decompose(norm32, decompQCMask, decompArgs);
+    
+                /* get the first character's norm32 to check if it is a true 
+                 * starter */
+                if(decompArgs.cc==0 && (getNorm32(extraData,p, qcMask)&qcMask)==0) {
+                    break; /* true starter */
+                }
+            }
+    
+            start+= c2==0 ? 1 : 2; /* not a true starter, continue */
+        }
+    
+        return start;
+    }
+    
+    
+    private static final class ComposePartArgs{
+        int prevCC;
+        int length;   /* length of decomposed part */
+    }
+        
+     /* decompose and recompose [prevStarter..src[ */
+    private static char[] composePart(ComposePartArgs args, 
+                                      int prevStarter, 
+                                         char[] src, int start, int limit,
+                                       int options,
+                                       UnicodeSet nx) {
+        int recomposeLimit;
+        boolean compat =((options&OPTIONS_COMPAT)!=0);
+        
+        /* decompose [prevStarter..src[ */
+        int[] outTrailCC = new int[1];
+        char[] buffer = new char[(limit-prevStarter)*MAX_BUFFER_SIZE];
+
+        for(;;){
+            args.length=decompose(src,prevStarter,(start),
+                                      buffer,0,buffer.length, 
+                                      compat,outTrailCC,nx);
+            if(args.length<=buffer.length){
+                break;
+            }else{
+                buffer = new char[args.length];
+            }
+        } 
+    
+        /* recompose the decomposition */
+        recomposeLimit=args.length;
+          
+        if(args.length>=2) {
+            RecomposeArgs rcArgs = new RecomposeArgs();
+            rcArgs.source    = buffer;
+            rcArgs.start    = 0;
+            rcArgs.limit    = recomposeLimit; 
+            args.prevCC=recompose(rcArgs, options, nx);
+            recomposeLimit = rcArgs.limit;
+        }
+        
+        /* return with a pointer to the recomposition and its length */
+        args.length=recomposeLimit;
+        return buffer;
+    }
+    
+    private static boolean composeHangul(char prev, char c,
+                                         long/*unsigned*/ norm32, 
+                                         char[] src,int[] srcIndex, int limit,
+                                            boolean compat, 
+                                         char[] dest,int destIndex,
+                                         UnicodeSet nx) {
+        int start=srcIndex[0];
+        if(isJamoVTNorm32JamoV(norm32)) {
+            /* c is a Jamo V, compose with previous Jamo L and 
+             * following Jamo T */
+            prev=(char)(prev-JAMO_L_BASE);
+            if(prev<JAMO_L_COUNT) {
+                c=(char)(HANGUL_BASE+(prev*JAMO_V_COUNT+
+                                                 (c-JAMO_V_BASE))*JAMO_T_COUNT);
+    
+                /* check if the next character is a Jamo T (normal or 
+                 * compatibility) */
+                if(start!=limit) {
+                    char next, t;
+    
+                    next=src[start];
+                    if((t=(char)(next-JAMO_T_BASE))<JAMO_T_COUNT) {
+                        /* normal Jamo T */
+                        ++start;
+                        c+=t;
+                    } else if(compat) {
+                        /* if NFKC, then check for compatibility Jamo T 
+                         * (BMP only) */
+                        norm32=getNorm32(next);
+                        if(isNorm32Regular(norm32) && ((norm32&QC_NFKD)!=0)) {
+                            int p /*index into extra data array*/;
+                            DecomposeArgs dcArgs = new DecomposeArgs();
+                            p=decompose(norm32, QC_NFKD, dcArgs);
+                            if(dcArgs.length==1 && 
+                                   (t=(char)(extraData[p]-JAMO_T_BASE))
+                                                   <JAMO_T_COUNT) {
+                                /* compatibility Jamo T */
+                                ++start;
+                                c+=t;
+                            }
+                        }
+                    }
+                }
+                if(nx_contains(nx, c)) {
+                    if(!isHangulWithoutJamoT(c)) {
+                        --start; /* undo ++start from reading the Jamo T */
+                    }
+                    return false;
+                }
+                dest[destIndex]=c;
+                srcIndex[0]=start;
+                return true;
+            }
+        } else if(isHangulWithoutJamoT(prev)) {
+            /* c is a Jamo T, compose with previous Hangul LV that does not 
+             * contain a Jamo T */
+            c=(char)(prev+(c-JAMO_T_BASE));
+            if(nx_contains(nx, c)) {
+                return false;
+            }
+            dest[destIndex]=c;
+            srcIndex[0]=start;
+            return true;
+        }
+        return false;
+    }
+    /*
+    public static int compose(char[] src, char[] dest,boolean compat, UnicodeSet nx){
+        return compose(src,0,src.length,dest,0,dest.length,compat, nx);
+    }
+    */
+    
+    public static int compose(char[] src, int srcStart, int srcLimit,
+                              char[] dest,int destStart,int destLimit,
+                              int options,UnicodeSet nx) {
+        
+        int prevSrc, prevStarter;
+        long/*unsigned*/ norm32; 
+        int ccOrQCMask, qcMask;
+        int  reorderStartIndex, length;
+        char c, c2, minNoMaybe;
+        int/*unsigned byte*/ cc, prevCC;
+        int[] ioIndex = new int[1];
+        int destIndex = destStart;
+        int srcIndex = srcStart;
+        
+        if((options&OPTIONS_COMPAT)!=0) {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFKC_NO_MAYBE];
+            qcMask=QC_NFKC;
+        } else {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFC_NO_MAYBE];
+            qcMask=QC_NFC;
+        }
+    
+        /*
+         * prevStarter points to the last character before the current one
+         * that is a "true" starter with cc==0 and quick check "yes".
+         *
+         * prevStarter will be used instead of looking for a true starter
+         * while incrementally decomposing [prevStarter..prevSrc[
+         * in _composePart(). Having a good prevStarter allows to just decompose
+         * the entire [prevStarter..prevSrc[.
+         *
+         * When _composePart() backs out from prevSrc back to prevStarter,
+         * then it also backs out destIndex by the same amount.
+         * Therefore, at all times, the (prevSrc-prevStarter) source units
+         * must correspond 1:1 to destination units counted with destIndex,
+         * except for reordering.
+         * This is true for the qc "yes" characters copied in the fast loop,
+         * and for pure reordering.
+         * prevStarter must be set forward to src when this is not true:
+         * In _composePart() and after composing a Hangul syllable.
+         *
+         * This mechanism relies on the assumption that the decomposition of a 
+         * true starter also begins with a true starter. gennorm/store.c checks 
+         * for this.
+         */
+        prevStarter=srcIndex;
+    
+        ccOrQCMask=CC_MASK|qcMask;
+        /*destIndex=*/reorderStartIndex=0;/* ####TODO#### check this **/
+        prevCC=0;
+    
+        /* avoid compiler warnings */
+        norm32=0;
+        c=0;
+    
+        for(;;) {
+            /* count code units below the minimum or with irrelevant data for 
+             * the quick check */
+            prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit && ((c=src[srcIndex])<minNoMaybe || 
+                     ((norm32=getNorm32(c))&ccOrQCMask)==0)) {
+                prevCC=0;
+                ++srcIndex;
+            }
+
+    
+            /* copy these code units all at once */
+            if(srcIndex!=prevSrc) {
+                length=(int)(srcIndex-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+                destIndex+=length;
+                reorderStartIndex=destIndex;
+    
+                /* set prevStarter to the last character in the quick check 
+                 * loop */
+                prevStarter=srcIndex-1;
+                if(UTF16.isTrailSurrogate(src[prevStarter]) && 
+                    prevSrc<prevStarter && 
+                    UTF16.isLeadSurrogate(src[(prevStarter-1)])) {
+                    --prevStarter;
+                }
+    
+                prevSrc=srcIndex;
+            }
+    
+            /* end of source reached? */
+            if(srcIndex==srcLimit) {
+                break;
+            }
+    
+            /* c already contains *src and norm32 is set for it, increment src*/
+            ++srcIndex;
+    
+            /*
+             * source buffer pointers:
+             *
+             *  all done      quick check   current char  not yet
+             *                "yes" but     (c, c2)       processed
+             *                may combine
+             *                forward
+             * [-------------[-------------[-------------[-------------[
+             * |             |             |             |             |
+             * start         prevStarter   prevSrc       src           limit
+             *
+             *
+             * destination buffer pointers and indexes:
+             *
+             *  all done      might take    not filled yet
+             *                characters for
+             *                reordering
+             * [-------------[-------------[-------------[
+             * |             |             |             |
+             * dest      reorderStartIndex destIndex     destCapacity
+             */
+    
+            /* check one above-minimum, relevant code unit */
+            /*
+             * norm32 is for c=*(src-1), and the quick check flag is "no" or 
+             * "maybe", and/or cc!=0
+             * check for Jamo V/T, then for surrogates and regular characters
+             * c is not a Hangul syllable or Jamo L because
+             * they are not marked with no/maybe for NFC & NFKC(and their cc==0)
+             */
+            if(isNorm32HangulOrJamo(norm32)) {
+                /*
+                 * c is a Jamo V/T:
+                 * try to compose with the previous character, Jamo V also with 
+                 * a following Jamo T, and set values here right now in case we 
+                 * just continue with the main loop
+                 */
+                prevCC=cc=0;
+                reorderStartIndex=destIndex;
+                ioIndex[0]=srcIndex;
+                if( 
+                    destIndex>0 &&
+                    composeHangul(src[(prevSrc-1)], c, norm32,src, ioIndex,
+                                  srcLimit, (options&OPTIONS_COMPAT)!=0, dest,
+                                  destIndex<=destLimit ? destIndex-1: 0,
+                                  nx)
+                ) {
+                    srcIndex=ioIndex[0];
+                    prevStarter=srcIndex;
+                    continue;
+                }
+                
+                srcIndex = ioIndex[0];
+    
+                /* the Jamo V/T did not compose into a Hangul syllable, just 
+                 * append to dest */
+                c2=0;
+                length=1;
+                prevStarter=prevSrc;
+            } else {
+                if(isNorm32Regular(norm32)) {
+                    c2=0;
+                    length=1;
+                } else {
+                    /* c is a lead surrogate, get the real norm32 */
+                    if(srcIndex!=srcLimit &&
+                                     UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+                        ++srcIndex;
+                        length=2;
+                        norm32=getNorm32FromSurrogatePair(norm32, c2);
+                    } else {
+                        /* c is an unpaired lead surrogate, nothing to do */
+                        c2=0;
+                        length=1;
+                        norm32=0;
+                    }
+                }
+                ComposePartArgs args =new ComposePartArgs();
+                
+                /* we are looking at the character (c, c2) at [prevSrc..src[ */
+                if(nx_contains(nx, c, c2)) {
+                    /* excluded: norm32==0 */
+                    cc=0;
+                } else if((norm32&qcMask)==0) {
+                    cc=(int)((UNSIGNED_BYTE_MASK)&(norm32>>CC_SHIFT));
+                } else {
+                    char[] p;
+    
+                    /*
+                     * find appropriate boundaries around this character,
+                     * decompose the source text from between the boundaries,
+                     * and recompose it
+                     *
+                     * this puts the intermediate text into the side buffer because
+                     * it might be longer than the recomposition end result,
+                     * or the destination buffer may be too short or missing
+                     *
+                     * note that destIndex may be adjusted backwards to account
+                     * for source text that passed the quick check but needed to
+                     * take part in the recomposition
+                     */
+                    int decompQCMask=(qcMask<<2)&0xf; /* decomposition quick check mask */
+                    /*
+                     * find the last true starter in [prevStarter..src[
+                     * it is either the decomposition of the current character (at prevSrc),
+                     * or prevStarter
+                     */
+                    if(isTrueStarter(norm32, CC_MASK|qcMask, decompQCMask)) {
+                        prevStarter=prevSrc;
+                    } else {
+                        /* adjust destIndex: back out what had been copied with qc "yes" */
+                        destIndex-=prevSrc-prevStarter;
+                    }
+                
+                    /* find the next true starter in [src..limit[ */
+                    srcIndex=findNextStarter(src, srcIndex,srcLimit, qcMask, 
+                                               decompQCMask, minNoMaybe);
+                    //args.prevStarter = prevStarter;
+                    args.prevCC    = prevCC;                    
+                    //args.destIndex = destIndex;
+                    args.length = length;
+                    p=composePart(args,prevStarter,src,srcIndex,srcLimit,options,nx);
+                        
+                    if(p==null) {
+                        /* an error occurred (out of memory) */
+                        break;
+                    }
+                    
+                    prevCC      = args.prevCC;
+                    length      = args.length;
+                    
+                    /* append the recomposed buffer contents to the destination 
+                     * buffer */
+                    if((destIndex+args.length)<=destLimit) {
+                        int i=0;
+                        while(i<args.length) {
+                            dest[destIndex++]=p[i++];
+                            --length;
+                        }
+                    } else {
+                        /* buffer overflow */
+                        /* keep incrementing the destIndex for preflighting */
+                        destIndex+=length;
+                    }
+    
+                    prevStarter=srcIndex;
+                    continue;
+                }
+            }
+    
+            /* append the single code point (c, c2) to the destination buffer */
+            if((destIndex+length)<=destLimit) {
+                if(cc!=0 && cc<prevCC) {
+                    /* (c, c2) is out of order with respect to the preceding 
+                     * text */
+                    int reorderSplit= destIndex;
+                    destIndex+=length;
+                    prevCC=insertOrdered(dest,reorderStartIndex, reorderSplit, 
+                                         destIndex, c, c2, cc);
+                } else {
+                    /* just append (c, c2) */
+                    dest[destIndex++]=c;
+                    if(c2!=0) {
+                        dest[destIndex++]=c2;
+                    }
+                    prevCC=cc;
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=length;
+                prevCC=cc;
+            }
+        }
+
+        return destIndex - destStart;
+    }
+    /* make FCD --------------------------------------------------------------*/
+    
+    private static int/*index*/ findSafeFCD(char[] src, int start, int limit, 
+                                            char fcd16) {
+        char c, c2;
+    
+        /*
+         * find the first position in [src..limit[ after some cc==0 according 
+         * to FCD data
+         *
+         * at the beginning of the loop, we have fcd16 from before src
+         *
+         * stop at positions:
+         * - after trail cc==0
+         * - at the end of the source
+         * - before lead cc==0
+         */
+        for(;;) {
+            /* stop if trail cc==0 for the previous character */
+            if((fcd16&0xff)==0) {
+                break;
+            }
+    
+            /* get c=*src - stop at end of string */
+            if(start==limit) {
+                break;
+            }
+            c=src[start];
+    
+            /* stop if lead cc==0 for this character */
+            if(c<MIN_WITH_LEAD_CC || (fcd16=getFCD16(c))==0) {
+                break; /* catches terminating NUL, too */
+            }
+    
+            if(!UTF16.isLeadSurrogate(c)) {
+                if(fcd16<=0xff) {
+                    break;
+                }
+                ++start;
+            } else if(start+1!=limit && 
+                                    (UTF16.isTrailSurrogate(c2=src[start+1]))) {
+                /* c is a lead surrogate, get the real fcd16 */
+                fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+                if(fcd16<=0xff) {
+                    break;
+                }
+                start+=2;
+            } else {
+                /* c is an unpaired first surrogate, lead cc==0 */
+                break;
+            }
+        }
+    
+        return start;
+    }
+    
+    private static int/*unsigned byte*/ decomposeFCD(char[] src, 
+                                                     int start,int decompLimit,
+                                                     char[] dest, 
+                                                     int[] destIndexArr,
+                                                     UnicodeSet nx) {
+        char[] p=null;
+        int pStart=-1;
+        
+        long /*unsigned int*/ norm32;
+        int reorderStartIndex;
+        char c, c2;
+        int/*unsigned byte*/ prevCC;
+        DecomposeArgs args = new DecomposeArgs();
+        int destIndex = destIndexArr[0];
+        /*
+         * canonically decompose [src..decompLimit[
+         *
+         * all characters in this range have some non-zero cc,
+         * directly or in decomposition,
+         * so that we do not need to check in the following for quick-check 
+         * limits etc.
+         *
+         * there _are_ _no_ Hangul syllables or Jamos in here because they are 
+         * FCD-safe (cc==0)!
+         *
+         * we also do not need to check for c==0 because we have an established 
+         * decompLimit
+         */
+        reorderStartIndex=destIndex;
+        prevCC=0;
+
+        while(start<decompLimit) {
+            c=src[start++];
+            norm32=getNorm32(c);
+            if(isNorm32Regular(norm32)) {
+                c2=0;
+                args.length=1;
+            } else {
+                /*
+                 * reminder: this function is called with [src..decompLimit[
+                 * not containing any Hangul/Jamo characters,
+                 * therefore the only specials are lead surrogates
+                 */
+                /* c is a lead surrogate, get the real norm32 */
+                if(start!=decompLimit && UTF16.isTrailSurrogate(c2=src[start])){
+                    ++start;
+                    args.length=2;
+                    norm32=getNorm32FromSurrogatePair(norm32, c2);
+                } else {
+                    c2=0;
+                    args.length=1;
+                    norm32=0;
+                }
+            }
+    
+            /* get the decomposition and the lead and trail cc's */
+            if(nx_contains(nx, c, c2)) {
+                /* excluded: norm32==0 */
+                args.cc=args.trailCC=0;
+                p=null;
+            } else if((norm32&QC_NFD)==0) {
+                /* c does not decompose */
+                args.cc=args.trailCC=(int)((UNSIGNED_BYTE_MASK)&
+                                                            (norm32>>CC_SHIFT));
+                p=null;
+            } else {
+                /* c decomposes, get everything from the variable-length extra 
+                 * data */
+                pStart=decompose(norm32, args);
+                p=extraData;
+                if(args.length==1) {
+                    /* fastpath a single code unit from decomposition */
+                    c=p[pStart];
+                    c2=0;
+                    p=null;
+                }
+            }
+    
+            /* append the decomposition to the destination buffer, assume 
+             * length>0 */
+            if((destIndex+args.length)<=dest.length) {
+                int reorderSplit=destIndex;
+                if(p==null) {
+                    /* fastpath: single code point */
+                    if(args.cc!=0 && args.cc<prevCC) {
+                        /* (c, c2) is out of order with respect to the preceding
+                         *  text */
+                        destIndex+=args.length;
+                        args.trailCC=insertOrdered(dest,reorderStartIndex, 
+                                                   reorderSplit, destIndex, 
+                                                   c, c2, args.cc);
+                    } else {
+                        /* just append (c, c2) */
+                        dest[destIndex++]=c;
+                        if(c2!=0) {
+                            dest[destIndex++]=c2;
+                        }
+                    }
+                } else {
+                    /* general: multiple code points (ordered by themselves) 
+                     * from decomposition */
+                    if(args.cc!=0 && args.cc<prevCC) {
+                        /* the decomposition is out of order with respect to 
+                         * the preceding text */
+                        destIndex+=args.length;
+                        args.trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                                  reorderSplit, p, pStart,
+                                                  pStart+args.length);
+                    } else {
+                        /* just append the decomposition */
+                        do {
+                            dest[destIndex++]=p[pStart++];
+                        } while(--args.length>0);
+                    }
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=args.length;
+            }
+    
+            prevCC=args.trailCC;
+            if(prevCC==0) {
+                reorderStartIndex=destIndex;
+            }
+        }
+        destIndexArr[0]=destIndex;
+        return prevCC;
+    }
+    
+    public static int makeFCD(char[] src,  int srcStart,  int srcLimit,
+                              char[] dest, int destStart, int destLimit,
+                              UnicodeSet nx) {
+                           
+        int prevSrc, decompStart;
+        int destIndex, length;
+        char c, c2;
+        int /* unsigned int*/ fcd16;
+        int prevCC, cc;
+    
+        /* initialize */
+        decompStart=srcStart;
+        destIndex=destStart;
+        prevCC=0;
+        c=0;
+        fcd16=0;
+        int[] destIndexArr = new int[1];
+        destIndexArr[0]=destIndex;
+        
+        for(;;) {
+            /* skip a run of code units below the minimum or with irrelevant 
+             * data for the FCD check */
+            prevSrc=srcStart;
+
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    break;
+                } else if((c=src[srcStart])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+                ++srcStart;
+            }
+
+    
+            /*
+             * prevCC has values from the following ranges:
+             * 0..0xff - the previous trail combining class
+             * <0      - the negative value of the previous code unit;
+             *           that code unit was <_NORM_MIN_WITH_LEAD_CC and its 
+             *           getFCD16()
+             *           was deferred so that average text is checked faster
+             */
+    
+            /* copy these code units all at once */
+            if(srcStart!=prevSrc) {
+                length=(int)(srcStart-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+                destIndex+=length;
+                prevSrc=srcStart;
+    
+                /* prevCC<0 is only possible from the above loop, i.e., only if
+                 *  prevSrc<src */
+                if(prevCC<0) {
+                    /* the previous character was <_NORM_MIN_WITH_LEAD_CC, we 
+                     * need to get its trail cc */
+                    if(!nx_contains(nx, (int)-prevCC)) {
+                        prevCC=(int)(getFCD16((int)-prevCC)&0xff);
+                    } else {
+                        prevCC=0; /* excluded: fcd16==0 */
+                    }
+                    /*
+                     * set a pointer to this below-U+0300 character;
+                     * if prevCC==0 then it will moved to after this character 
+                     * below
+                     */
+                    decompStart=prevSrc-1;
+                }
+            }
+            /*
+             * now:
+             * prevSrc==src - used later to adjust destIndex before 
+             *          decomposition
+             * prevCC>=0
+             */
+    
+            /* end of source reached? */
+            if(srcStart==srcLimit) {
+                break;
+            }
+    
+            /* set a pointer to after the last source position where prevCC==0*/
+            if(prevCC==0) {
+                decompStart=prevSrc;
+            }
+    
+            /* c already contains *src and fcd16 is set for it, increment src */
+            ++srcStart;
+    
+            /* check one above-minimum, relevant code unit */
+            if(UTF16.isLeadSurrogate(c)) {
+                /* c is a lead surrogate, get the real fcd16 */
+                if(srcStart!=srcLimit && 
+                                     UTF16.isTrailSurrogate(c2=src[srcStart])) {
+                    ++srcStart;
+                    fcd16=getFCD16FromSurrogatePair((char)fcd16, c2);
+                } else {
+                    c2=0;
+                    fcd16=0;
+                }
+            } else {
+                c2=0;
+            }
+    
+            /* we are looking at the character (c, c2) at [prevSrc..src[ */
+            if(nx_contains(nx, c, c2)) {
+                fcd16=0; /* excluded: fcd16==0 */
+            }
+            /* check the combining order, get the lead cc */
+            cc=(int)(fcd16>>8);
+            if(cc==0 || cc>=prevCC) {
+                /* the order is ok */
+                if(cc==0) {
+                    decompStart=prevSrc;
+                }
+                prevCC=(int)(fcd16&0xff);
+    
+                /* just append (c, c2) */
+                length= c2==0 ? 1 : 2;
+                if((destIndex+length)<=destLimit) {
+                    dest[destIndex++]=c;
+                    if(c2!=0) {
+                        dest[destIndex++]=c2;
+                    }
+                } else {
+                    destIndex+=length;
+                }
+            } else {
+                /*
+                 * back out the part of the source that we copied already but
+                 * is now going to be decomposed;
+                 * prevSrc is set to after what was copied
+                 */
+                destIndex-=(int)(prevSrc-decompStart);
+    
+                /*
+                 * find the part of the source that needs to be decomposed;
+                 * to be safe and simple, decompose to before the next character
+                 * with lead cc==0
+                 */
+                srcStart=findSafeFCD(src,srcStart, srcLimit, (char)fcd16);
+    
+                /*
+                 * the source text does not fulfill the conditions for FCD;
+                 * decompose and reorder a limited piece of the text
+                 */
+                destIndexArr[0] = destIndex;
+                prevCC=decomposeFCD(src,decompStart, srcStart,dest, 
+                                    destIndexArr,nx);
+                decompStart=srcStart;
+                destIndex=destIndexArr[0];
+            }
+        }
+        
+        return destIndex - destStart;
+    
+    }
+
+    public static int getCombiningClass(int c) {
+        long norm32;
+        norm32=getNorm32(c);
+        return (char)((norm32>>CC_SHIFT)&0xFF);
+    }
+    
+    public static boolean isFullCompositionExclusion(int c) {
+        if(isFormatVersion_2_1) {
+            int aux =AuxTrieImpl.auxTrie.getCodePointValue(c);
+            return (boolean)((aux & AUX_COMP_EX_MASK)!=0);
+        } else {
+            return false;
+        }
+    }
+    
+    public static boolean isCanonSafeStart(int c) {
+        if(isFormatVersion_2_1) {
+            int aux = AuxTrieImpl.auxTrie.getCodePointValue(c);
+            return (boolean)((aux & AUX_UNSAFE_MASK)==0);
+        } else {
+            return false;
+        }
+    }
+    
+    public static boolean getCanonStartSet(int c, USerializedSet fillSet) {
+
+        if(fillSet!=null && canonStartSets!=null) {
+             /*
+             * binary search for c
+             *
+             * There are two search tables,
+             * one for BMP code points and one for supplementary ones.
+             * See unormimp.h for details.
+             */
+            char[] table;
+            int i=0, start, limit;
+            
+            int[] idxs = (int[]) canonStartSets[CANON_SET_INDICIES_INDEX];
+            char[] startSets = (char[]) canonStartSets[CANON_SET_START_SETS_INDEX];
+            
+            if(c<=0xffff) {
+                table=(char[]) canonStartSets[CANON_SET_BMP_TABLE_INDEX];
+                start=0;
+                limit=table.length;
+    
+                /* each entry is a pair { c, result } */
+                while(start<limit-2) {
+                    i=(char)(((start+limit)/4)*2); 
+                    if(c<table[i]) {
+                        limit=i;
+                    } else {
+                        start=i;
+                    }
+                }
+                //System.out.println(i);
+                /* found? */
+                if(c==table[start]) {
+                    i=table[start+1];
+                    if((i & CANON_SET_BMP_MASK)==CANON_SET_BMP_IS_INDEX) {
+                        /* result 01xxxxxx xxxxxx contains index x to a 
+                         * USerializedSet */
+                        i&=(CANON_SET_MAX_CANON_SETS-1);
+                        return fillSet.getSet(startSets,(i-idxs.length));
+                    } else {
+                        /* other result values are BMP code points for 
+                         * single-code point sets */
+                        fillSet.setToOne(i);
+                        return true;
+                    }
+                }
+            } else {
+                char high, low, h,j=0;
+    
+                table=(char[]) canonStartSets[CANON_SET_SUPP_TABLE_INDEX];
+                start=0;
+                limit=table.length;
+    
+                high=(char)(c>>16);
+                low=(char)c;
+    
+                /* each entry is a triplet { high(c), low(c), result } */
+                while(start<limit-3) {
+                    /* (start+limit)/2 and address triplets */
+                    i=(char)(((start+limit)/6)*3);
+                    j=(char)(table[i]&0x1f); /* high word */
+                    int tableVal = table[i+1];
+                    int lowInt = low;
+                    if(high<j || ((tableVal>lowInt) && (high==j))) {
+                        limit=i;
+                    } else {
+                        start=i;
+                    }
+                    
+                    //System.err.println("\t((high==j) && (table[i+1]>low)) == " + ((high==j) && (tableVal>lowInt)) );
+                    
+                    // KLUDGE: IBM JIT in 1.4.0 is sooo broken
+                    // The below lines make TestExhaustive pass
+                    if(ICUDebug.enabled()){
+                        System.err.println("\t\t j = " + Utility.hex(j,4) +
+                                           "\t i = " + Utility.hex(i,4) +
+                                           "\t high = "+ Utility.hex(high)  +
+                                           "\t low = "  + Utility.hex(lowInt,4)   +
+                                           "\t table[i+1]: "+ Utility.hex(tableVal,4) 
+                                           );
+                    }
+                   
+                }
+
+                /* found? */
+                h=table[start];
+
+                //System.err.println("c: \\U"+ Integer.toHexString(c)+" i : "+Integer.toHexString(i) +" h : " + Integer.toHexString(h));
+                int tableVal1 = table[start+1];
+                int lowInt = low;
+
+                if(high==(h&0x1f) && lowInt==tableVal1) {
+                    int tableVal2 = table[start+2];
+                    i=tableVal2;
+                    if((h&0x8000)==0) {
+                        /* the result is an index to a USerializedSet */
+                        return fillSet.getSet(startSets,(i-idxs.length));
+                    } else {
+                        /*
+                         * single-code point set {x} in
+                         * triplet { 100xxxxx 000hhhhh  llllllll llllllll  xxxxxxxx xxxxxxxx }
+                         */
+                        //i|=((int)h & 0x1f00)<<8; /* add high bits from high(c) */
+                        int temp = ((int)h & 0x1f00)<<8;
+                        i|=temp; /* add high bits from high(c) */
+                        fillSet.setToOne((int)i);
+                        return true;
+                    }
+                }
+            }
+        }
+    
+        return false; /* not found */
+    }
+    
+    public static int getFC_NFKC_Closure(int c, char[] dest) {
+        
+        int destCapacity;
+         
+        if(dest==null ) {
+            destCapacity=0;
+        }else{
+            destCapacity = dest.length;
+        }
+        
+        int aux =AuxTrieImpl.auxTrie.getCodePointValue(c);
+
+        aux&= AUX_FNC_MASK;
+        if(aux!=0) {
+            int s;
+            int index=aux; 
+            int length;
+            
+            s =extraData[index];
+            if(s<0xff00) {
+                /* s points to the single-unit string */
+                length=1;
+            } else {
+                length=s&0xff;
+                ++index;
+            }
+            if(0<length && length<=destCapacity) {
+                System.arraycopy(extraData,index,dest,0,length);
+            }
+            return length;
+        } else {
+            return 0;
+        }
+    }
+
+
+    /* Is c an NF<mode>-skippable code point? See unormimp.h. */
+    public static boolean isNFSkippable(int c, Normalizer.Mode mode, long mask) {
+        long /*unsigned int*/ norm32;
+        mask = mask & UNSIGNED_INT_MASK;
+        char aux;
+   
+        /* check conditions (a)..(e), see unormimp.h */
+        norm32 = getNorm32(c);
+
+        if((norm32&mask)!=0) {
+            return false; /* fails (a)..(e), not skippable */
+        }
+    
+        if(mode == Normalizer.NFD || mode == Normalizer.NFKD || mode == Normalizer.NONE){
+            return true; /* NF*D, passed (a)..(c), is skippable */
+        }
+        /* check conditions (a)..(e), see unormimp.h */
+
+        /* NF*C/FCC, passed (a)..(e) */
+        if((norm32& QC_NFD)==0) {
+            return true; /* no canonical decomposition, is skippable */
+        }
+    
+        /* check Hangul syllables algorithmically */
+        if(isNorm32HangulOrJamo(norm32)) {
+            /* Jamo passed (a)..(e) above, must be Hangul */
+            return !isHangulWithoutJamoT((char)c); /* LVT are skippable, LV are not */
+        }
+    
+        /* if(mode<=UNORM_NFKC) { -- enable when implementing FCC */
+        /* NF*C, test (f) flag */
+        if(!isFormatVersion_2_2) {
+            return false; /* no (f) data, say not skippable to be safe */
+        }
+    
+
+        aux = AuxTrieImpl.auxTrie.getCodePointValue(c);
+        return (aux&AUX_NFC_SKIP_F_MASK)==0; /* TRUE=skippable if the (f) flag is not set */
+    
+        /* } else { FCC, test fcd<=1 instead of the above } */
+    }
+    
+    /*
+        private static final boolean
+    _enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) {
+        // add the start code point to the USet 
+        uset_add((USet *)context, start);
+        return TRUE;
+    }
+    */
+
+    public static UnicodeSet addPropertyStarts(UnicodeSet set) {
+        int c;
+       
+        /* add the start code point of each same-value range of each trie */
+        //utrie_enum(&normTrie, NULL, _enumPropertyStartsRange, set);
+        TrieIterator normIter = new TrieIterator(NormTrieImpl.normTrie);
+        RangeValueIterator.Element normResult = new RangeValueIterator.Element();
+        
+        while(normIter.next(normResult)){
+            set.add(normResult.start);
+        }
+        
+        //utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
+        TrieIterator fcdIter  = new TrieIterator(FCDTrieImpl.fcdTrie);
+        RangeValueIterator.Element fcdResult = new RangeValueIterator.Element();
+
+        while(fcdIter.next(fcdResult)){
+            set.add(fcdResult.start);
+        }
+        
+        if(isFormatVersion_2_1){
+            //utrie_enum(&auxTrie, NULL, _enumPropertyStartsRange, set);
+            TrieIterator auxIter  = new TrieIterator(AuxTrieImpl.auxTrie);
+            RangeValueIterator.Element auxResult = new RangeValueIterator.Element();
+            while(auxIter.next(auxResult)){
+                set.add(auxResult.start);
+            }
+        }
+        /* add Hangul LV syllables and LV+1 because of skippables */
+        for(c=HANGUL_BASE; c<HANGUL_BASE+HANGUL_COUNT; c+=JAMO_T_COUNT) {
+            set.add(c);
+            set.add(c+1);
+        }
+        set.add(HANGUL_BASE+HANGUL_COUNT); /* add Hangul+1 to continue with other properties */
+        return set; // for chaining
+    }
+
+    /**
+     * Internal API, used in UCharacter.getIntPropertyValue().
+     * @internal
+     * @param c code point
+     * @param modeValue numeric value compatible with Mode
+     * @return numeric value compatible with QuickCheck
+     */
+    public static final int quickCheck(int c, int modeValue) {
+        final int qcMask[/*UNORM_MODE_COUNT*/]={
+            0, 0, QC_NFD, QC_NFKD, QC_NFC, QC_NFKC
+        };
+
+        int norm32=(int)getNorm32(c)&qcMask[modeValue];
+
+        if(norm32==0) {
+            return 1; // YES
+        } else if((norm32&QC_ANY_NO)!=0) {
+            return 0; // NO
+        } else /* _NORM_QC_ANY_MAYBE */ {
+            return 2; // MAYBE;
+        }
+    }
+
+    /**
+     * Internal API, used by collation code.
+     * Get access to the internal FCD trie table to be able to perform
+     * incremental, per-code unit, FCD checks in collation.
+     * One pointer is sufficient because the trie index values are offset
+     * by the index size, so that the same pointer is used to access the trie 
+     * data.
+     * @internal
+     */
+    ///CLOVER:OFF
+    public CharTrie getFCDTrie(){
+        return FCDTrieImpl.fcdTrie;
+    }
+    ///CLOVER:ON
+
+
+    
+   /* compare canonically equivalent ---------------------------------------- */
+
+    /*
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     *
+     * In this function, canonical equivalence is optional as well.
+     * If canonical equivalence is tested, then both strings must fulfill
+     * the FCD check.
+     *
+     * Semantically, this is equivalent to
+     *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+     * where code point order, NFD and foldCase are all optional.
+     *
+     * String comparisons almost always yield results before processing both 
+     * strings completely.
+     * They are generally more efficient working incrementally instead of
+     * performing the sub-processing (strlen, normalization, case-folding)
+     * on the entire strings first.
+     *
+     * It is also unnecessary to not normalize identical characters.
+     *
+     * This function works in principle as follows:
+     *
+     * loop {
+     *   get one code unit c1 from s1 (-1 if end of source)
+     *   get one code unit c2 from s2 (-1 if end of source)
+     *
+     *   if(either string finished) {
+     *     return result;
+     *   }
+     *   if(c1==c2) {
+     *     continue;
+     *   }
+     *
+     *   // c1!=c2
+     *   try to decompose/case-fold c1/c2, and continue if one does;
+     *
+     *   // still c1!=c2 and neither decomposes/case-folds, return result
+     *   return c1-c2;
+     * }
+     *
+     * When a character decomposes, then the pointer for that source changes to
+     * the decomposition, pushing the previous pointer onto a stack.
+     * When the end of the decomposition is reached, then the code unit reader
+     * pops the previous source from the stack.
+     * (Same for case-folding.)
+     *
+     * This is complicated further by operating on variable-width UTF-16.
+     * The top part of the loop works on code units, while lookups for decomposition
+     * and case-folding need code points.
+     * Code points are assembled after the equality/end-of-source part.
+     * The source pointer is only advanced beyond all code units when the code point
+     * actually decomposes/case-folds.
+     *
+     * If we were on a trail surrogate unit when assembling a code point,
+     * and the code point decomposes/case-folds, then the decomposition/folding
+     * result must be compared with the part of the other string that corresponds to
+     * this string's lead surrogate.
+     * Since we only assemble a code point when hitting a trail unit when the
+     * preceding lead units were identical, we back up the other string by one unit
+     * in such a case.
+     *
+     * The optional code point order comparison at the end works with
+     * the same fix-up as the other code point order comparison functions.
+     * See ustring.c and the comment near the end of this function.
+     *
+     * Assumption: A decomposition or case-folding result string never contains
+     * a single surrogate. This is a safe assumption in the Unicode Standard.
+     * Therefore, we do not need to check for surrogate pairs across
+     * decomposition/case-folding boundaries.
+     * Further assumptions (see verifications tstnorm.cpp):
+     * The API function checks for FCD first, while the core function
+     * first case-folds and then decomposes. This requires that case-folding does not
+     * un-FCD any strings.
+     *
+     * The API function may also NFD the input and turn off decomposition.
+     * This requires that case-folding does not un-NFD strings either.
+     *
+     * TODO If any of the above two assumptions is violated,
+     * then this entire code must be re-thought.
+     * If this happens, then a simple solution is to case-fold both strings up front
+     * and to turn off UNORM_INPUT_IS_FCD.
+     * We already do this when not both strings are in FCD because makeFCD
+     * would be a partial NFD before the case folding, which does not work.
+     * Note that all of this is only a problem when case-folding _and_
+     * canonical equivalence come together.
+     * 
+     * This function could be moved to a different source file, at increased cost
+     * for calling the decomposition access function.
+     */
+    
+    // stack element for previous-level source/decomposition pointers
+    private static class CmpEquivLevel {
+        char[] source;
+        int start;
+        int s;
+        int limit;
+    }
+    
+    /**
+     * Get the canonical decomposition for one code point.
+     * @param c code point
+     * @param buffer out-only buffer for algorithmic decompositions of Hangul
+     * @param length out-only, takes the length of the decomposition, if any
+     * @return index into the extraData array, or 0 if none
+     * @internal
+     */
+     private static int decompose(int c, char[] buffer) {
+        
+        long norm32;
+        int length=0;
+        norm32 = (long) ((UNSIGNED_INT_MASK) & NormTrieImpl.normTrie.getCodePointValue(c));
+        if((norm32 & QC_NFD)!=0) {
+            if(isNorm32HangulOrJamo(norm32)) {
+                /* Hangul syllable: decompose algorithmically */
+                char c2;
+    
+                c-=HANGUL_BASE;
+    
+                c2=(char)(c%JAMO_T_COUNT);
+                c/=JAMO_T_COUNT;
+                if(c2>0) {
+                    buffer[2]=(char)(JAMO_T_BASE+c2);
+                    length=3;
+                } else {
+                    length=2;
+                }
+                buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                return length;
+            } else {
+                /* normal decomposition */
+                DecomposeArgs  args = new DecomposeArgs();
+                int index = decompose(norm32, args);
+                System.arraycopy(extraData,index,buffer,0,args.length);
+                return args.length ;
+            }
+        } else {
+            return 0;
+        }
+    }
+
+    private static int foldCase(int c, char[] dest, int destStart, int destLimit,
+                                 int options){
+        String src = UTF16.valueOf(c);
+        String foldedStr = UCharacter.foldCase(src,options);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+        }
+        return (c==UTF16.charAt(foldedStr,0)) ? -destStart : destStart;
+    }
+    
+    /*
+     private static int foldCase(char[] src,int srcStart,int srcLimit,
+                                char[] dest, int destStart, int destLimit,
+                                int options){
+        String source =new String(src,srcStart,(srcLimit-srcStart));
+        String foldedStr = UCharacter.foldCase(source,options);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+            
+        }
+        return destStart;
+    }
+    */
+    public static int cmpEquivFold(String s1, String s2,int options){
+        if ((options & Normalizer.COMPARE_IGNORE_CASE) !=0) {
+            return cmpSimpleEquivFold(s1, s2, options);
+        }
+        else {
+            return cmpEquivFold(s1.toCharArray(),0,s1.length(),
+                                s2.toCharArray(),0,s2.length(),
+                                options);
+        }
+    }
+
+
+    private static int cmpSimpleEquivFold(String s1, String s2, int options) {
+        int cmp = 0;
+        int i=0, j=0;
+        String foldS1=null;
+        String foldS2=null;
+        int offset1=1;
+        int offset2=1;
+        while ((i+offset1<=s1.length() && j+offset2<=s2.length())) {
+            if ((cmp!=0) || (s1.charAt(i) != s2.charAt(j))) {
+                if(i>0 && j>0 && 
+                   (UTF16.isLeadSurrogate((char)s1.charAt(i-1)) ||
+                    UTF16.isLeadSurrogate((char)s2.charAt(j-1)))) {
+                    // Current codepoint may be the low surrogate pair.
+                    return cmpEquivFold(s1.toCharArray(),i-1,s1.length(),
+                            s2.toCharArray(),j-1,s2.length(),
+                            options);
+                }
+                else if (UTF16.isLeadSurrogate((char)s1.charAt(i))||
+                         UTF16.isLeadSurrogate((char)s2.charAt(j))) {
+                    return cmpEquivFold(s1.toCharArray(),i,s1.length(),
+                            s2.toCharArray(),j,s2.length(),
+                            options);
+                }
+                else {
+                    if ( offset1 > 0 ) {
+                        foldS1 = UCharacter.foldCase(s1.substring(i, i+offset1),options);
+                    }
+                    if ( offset2 > 0 ) {
+                        foldS2 = UCharacter.foldCase(s2.substring(j, j+offset2),options);
+                    }
+                    cmp = foldS1.compareTo(foldS2);
+                    if (cmp==0) {
+                        i = moveToNext(i, offset1);
+                        j = moveToNext(j, offset2);
+                        offset1 = offset2 = 1;
+                        continue;
+                    }
+                }
+                if (foldS1.length()==foldS2.length()) {
+                    return cmp;
+                }
+                if (foldS1.length()<foldS2.length()) {
+                    offset1++;
+                    offset2=0;
+                }
+                else {
+                    offset1=0;
+                    offset2++;
+                }
+                continue;
+            }
+            i++;
+            j++;
+        }
+        if (cmp!=0) {
+            return cmp;
+        }
+        if (i+offset1-1==s1.length()) {
+            if (j+offset2-1==s2.length()) {
+                return 0;
+            }
+            else {
+                return -1;
+            }
+        }
+        else {
+            return 1;
+        }
+    }
+    
+    private static int moveToNext(int pos, int offset) {
+        if (offset>0) {
+            return pos+offset;
+        }
+        else {
+            return pos+1;
+        }
+    }
+    
+    
+    // internal function
+    public static int cmpEquivFold(char[] s1, int s1Start,int s1Limit,
+                                   char[] s2, int s2Start,int s2Limit,
+                                   int options) {
+        // current-level start/limit - s1/s2 as current
+        int start1, start2, limit1, limit2;
+        char[] cSource1, cSource2;
+        
+        cSource1 = s1;
+        cSource2 = s2;
+        // decomposition variables
+        int length;
+    
+        // stacks of previous-level start/current/limit
+        CmpEquivLevel[] stack1 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+        CmpEquivLevel[] stack2 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+    
+        // decomposition buffers for Hangul
+        char[] decomp1 = new char[8];
+        char[] decomp2 = new char[8];
+    
+        // case folding buffers, only use current-level start/limit
+        char[] fold1 = new char[32];
+        char[] fold2 = new char[32];
+    
+        // track which is the current level per string
+        int level1, level2;
+    
+        // current code units, and code points for lookups
+        int c1, c2;
+        int cp1, cp2;
+    
+        // no argument error checking because this itself is not an API
+    
+        // assume that at least one of the options COMPARE_EQUIV and 
+        // COMPARE_IGNORE_CASE is set
+        // otherwise this function must behave exactly as uprv_strCompare()
+        // not checking for that here makes testing this function easier
+
+    
+        // initialize
+        start1=s1Start;
+        limit1=s1Limit;
+        
+        start2=s2Start;
+        limit2=s2Limit;
+        
+        level1=level2=0;
+        c1=c2=-1;
+        cp1=cp2=-1;
+        // comparison loop
+        for(;;) {
+            // here a code unit value of -1 means "get another code unit"
+            // below it will mean "this source is finished"
+    
+            if(c1<0) {
+                // get next code unit from string 1, post-increment
+                for(;;) {
+                    if(s1Start>=limit1) {
+                        if(level1==0) {
+                            c1=-1;
+                            break;
+                        }
+                    } else {
+                        c1=cSource1[s1Start];
+                        ++s1Start;
+                        break;
+                    }
+    
+                    // reached end of level buffer, pop one level
+                    do {
+                        --level1;
+                        start1=stack1[level1].start;
+                    } while(start1==-1); //###### check this
+                    s1Start=stack1[level1].s;
+                    limit1=stack1[level1].limit;
+                    cSource1=stack1[level1].source;
+                }
+            }
+    
+            if(c2<0) {
+                // get next code unit from string 2, post-increment
+                for(;;) {                    
+                    if(s2Start>=limit2) {
+                        if(level2==0) {
+                            c2=-1;
+                            break;
+                        }
+                    } else {
+                        c2=cSource2[s2Start];
+                        ++s2Start;
+                        break;
+                    }
+    
+                    // reached end of level buffer, pop one level
+                    do {
+                        --level2;
+                        start2=stack2[level2].start;
+                    } while(start2==-1);
+                    s2Start=stack2[level2].s;
+                    limit2=stack2[level2].limit;
+                    cSource2=stack2[level2].source;
+                }
+            }
+    
+            // compare c1 and c2
+            // either variable c1, c2 is -1 only if the corresponding string 
+            // is finished
+            if(c1==c2) {
+                if(c1<0) {
+                    return 0;   // c1==c2==-1 indicating end of strings
+                }
+                c1=c2=-1;       // make us fetch new code units
+                continue;
+            } else if(c1<0) {
+                return -1;      // string 1 ends before string 2
+            } else if(c2<0) {
+                return 1;       // string 2 ends before string 1
+            }
+            // c1!=c2 && c1>=0 && c2>=0
+    
+            // get complete code points for c1, c2 for lookups if either is a 
+            // surrogate
+            cp1=c1;
+            if(UTF16.isSurrogate((char)c1)) { 
+                char c;
+    
+                if(UTF16.isLeadSurrogate((char)c1)) {
+                    if(    s1Start!=limit1 && 
+                           UTF16.isTrailSurrogate(c=cSource1[s1Start])
+                      ) {
+                        // advance ++s1; only below if cp1 decomposes/case-folds
+                        cp1=UCharacterProperty.getRawSupplementary((char)c1, c);
+                    }
+                } else /* isTrail(c1) */ {
+                    if(    start1<=(s1Start-2) && 
+                            UTF16.isLeadSurrogate(c=cSource1[(s1Start-2)])
+                      ) {
+                        cp1=UCharacterProperty.getRawSupplementary(c, (char)c1);
+                    }
+                }
+            }
+            cp2=c2;
+            if(UTF16.isSurrogate((char)c2)) {
+                char c;
+    
+                if(UTF16.isLeadSurrogate((char)c2)) {
+                    if(    s2Start!=limit2 && 
+                           UTF16.isTrailSurrogate(c=cSource2[s2Start])
+                      ) {
+                        // advance ++s2; only below if cp2 decomposes/case-folds
+                        cp2=UCharacterProperty.getRawSupplementary((char)c2, c);
+                    }
+                } else /* isTrail(c2) */ {
+                    if(    start2<=(s2Start-2) &&  
+                           UTF16.isLeadSurrogate(c=cSource2[s2Start-2])
+                      ) {
+                        cp2=UCharacterProperty.getRawSupplementary(c, (char)c2);
+                    }
+                }
+            }
+    
+            // go down one level for each string
+            // continue with the main loop as soon as there is a real change
+            if( level1<2 && ((options & Normalizer.COMPARE_IGNORE_CASE)!=0)&&
+                (length=foldCase(cp1, fold1, 0,32,options))>=0
+            ) {
+                // cp1 case-folds to fold1[length]
+                if(UTF16.isSurrogate((char)c1)) {
+                    if(UTF16.isLeadSurrogate((char)c1)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s1Start;
+                    } else /* isTrail(c1) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate
+                        // in the other string
+                        --s2Start;
+                        c2=cSource2[(s2Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack1[0].start=start1;
+                stack1[0].s=s1Start;
+                stack1[0].limit=limit1;
+                stack1[0].source=cSource1;
+                ++level1;
+    
+                cSource1 = fold1;
+                start1=s1Start=0;
+                limit1=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c1=-1;
+                continue;
+            }
+    
+            if( level2<2 && ((options& Normalizer.COMPARE_IGNORE_CASE)!=0) &&
+                (length=foldCase(cp2, fold2,0,32, options))>=0
+            ) {
+                // cp2 case-folds to fold2[length]
+                if(UTF16.isSurrogate((char)c2)) {
+                    if(UTF16.isLeadSurrogate((char)c2)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s2Start;
+                    } else /* isTrail(c2) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s1Start;
+                        c1=cSource1[(s1Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack2[0].start=start2;
+                stack2[0].s=s2Start;
+                stack2[0].limit=limit2;
+                stack2[0].source=cSource2;
+                ++level2;
+                
+                cSource2 = fold2;
+                start2=s2Start=0;
+                limit2=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c2=-1;
+                continue;
+            }
+            
+            if( level1<2 && ((options&COMPARE_EQUIV)!=0) &&
+                0!=(length=decompose(cp1,decomp1))
+            ) {
+                // cp1 decomposes into p[length]
+                if(UTF16.isSurrogate((char)c1)) {
+                    if(UTF16.isLeadSurrogate((char)c1)) {
+                        // advance beyond source surrogate pair if it 
+                        //decomposes
+                        ++s1Start;
+                    } else /* isTrail(c1) */ {
+                        // we got a supplementary code point when hitting 
+                        // its trail surrogate, therefore the lead surrogate 
+                        // must have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s2Start;
+                        c2=cSource2[(s2Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack1[level1].start=start1;
+                stack1[level1].s=s1Start;
+                stack1[level1].limit=limit1;
+                stack1[level1].source=cSource1;
+                ++level1;
+    
+                // set next level pointers to decomposition
+                cSource1 = decomp1;
+                start1=s1Start=0;
+                limit1=length;
+                
+                // set empty intermediate level if skipped
+                if(level1<2) {
+                    stack1[level1++].start=-1;
+                }
+                // get ready to read from decomposition, continue with loop
+                c1=-1;
+                continue;
+            }
+    
+            if( level2<2 && ((options&COMPARE_EQUIV)!=0) &&
+                0!=(length=decompose(cp2, decomp2))
+            ) {
+                // cp2 decomposes into p[length]
+                if(UTF16.isSurrogate((char)c2)) {
+                    if(UTF16.isLeadSurrogate((char)c2)) {
+                        // advance beyond source surrogate pair if it 
+                        // decomposes
+                        ++s2Start;
+                    } else /* isTrail(c2) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s1Start;
+                        c1=cSource1[(s1Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack2[level2].start=start2;
+                stack2[level2].s=s2Start;
+                stack2[level2].limit=limit2;
+                stack2[level2].source=cSource2;
+                ++level2;
+    
+                // set next level pointers to decomposition
+                cSource2=decomp2;
+                start2=s2Start=0;
+                limit2=length;
+                
+                // set empty intermediate level if skipped
+                if(level2<2) {
+                    stack2[level2++].start=-1;
+                }
+                
+                // get ready to read from decomposition, continue with loop
+                c2=-1;
+                continue;
+            }
+    
+    
+            // no decomposition/case folding, max level for both sides:
+            // return difference result
+    
+            // code point order comparison must not just return cp1-cp2
+            // because when single surrogates are present then the surrogate 
+            // pairs that formed cp1 and cp2 may be from different string 
+            // indexes
+    
+            // example: { d800 d800 dc01 } vs. { d800 dc00 }, compare at 
+            // second code units
+            // c1=d800 cp1=10001 c2=dc00 cp2=10000
+            // cp1-cp2>0 but c1-c2<0 and in fact in UTF-32 
+            // it is { d800 10001 } < { 10000 }
+            // therefore fix-up 
+    
+            if(     c1>=0xd800 && c2>=0xd800 && 
+                    ((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0)
+              ) {
+                /* subtract 0x2800 from BMP code points to make them smaller 
+                 * than supplementary ones */
+                if(
+                    (    c1<=0xdbff && s1Start!=limit1 
+                         && 
+                         UTF16.isTrailSurrogate(cSource1[s1Start])
+                    ) 
+                     ||
+                    (    UTF16.isTrailSurrogate((char)c1) && start1!=(s1Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource1[(s1Start-2)])
+                    )
+                ) {
+                    /* part of a surrogate pair, leave >=d800 */
+                } else {
+                    /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+                    c1-=0x2800;
+                }
+    
+                if(
+                    (    c2<=0xdbff && s2Start!=limit2 
+                         && 
+                         UTF16.isTrailSurrogate(cSource2[s2Start])
+                    ) 
+                     ||
+                    (    UTF16.isTrailSurrogate((char)c2) && start2!=(s2Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource2[(s2Start-2)])
+                    )
+                ) {
+                    /* part of a surrogate pair, leave >=d800 */
+                } else {
+                    /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+                    c2-=0x2800;
+                }
+            }
+    
+            return c1-c2;
+        }
+    }
+    private static int strCompare(char[] s1, int s1Start, int s1Limit,
+                                  char[] s2, int s2Start, int s2Limit,
+                                  boolean codePointOrder) {
+                        
+        int start1, start2, limit1, limit2;
+ 
+        char c1, c2;
+    
+        /* setup for fix-up */
+        start1=s1Start;
+        start2=s2Start;
+        
+        int length1, length2;
+        
+        length1 = s1Limit - s1Start;
+        length2 = s2Limit - s2Start;
+            
+        int lengthResult;
+
+        if(length1<length2) {
+            lengthResult=-1;
+            limit1=start1+length1;
+        } else if(length1==length2) {
+            lengthResult=0;
+            limit1=start1+length1;
+        } else /* length1>length2 */ {
+            lengthResult=1;
+            limit1=start1+length2;
+        }
+
+        if(s1==s2) {
+            return lengthResult;
+        }
+
+        for(;;) {
+            /* check pseudo-limit */
+            if(s1Start==limit1) {
+                return lengthResult;
+            }
+
+            c1=s1[s1Start];
+            c2=s2[s2Start];
+            if(c1!=c2) {
+                break;
+            }
+            ++s1Start;
+            ++s2Start;
+        }
+
+        /* setup for fix-up */
+        limit1=start1+length1;
+        limit2=start2+length2;
+
+    
+        /* if both values are in or above the surrogate range, fix them up */
+        if(c1>=0xd800 && c2>=0xd800 && codePointOrder) {
+            /* subtract 0x2800 from BMP code points to make them smaller than
+             *  supplementary ones */
+            if(
+                ( c1<=0xdbff && (s1Start+1)!=limit1 && 
+                  UTF16.isTrailSurrogate(s1[(s1Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c1) && start1!=s1Start && 
+                  UTF16.isLeadSurrogate(s1[(s1Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c1-=0x2800;
+            }
+    
+            if(
+                ( c2<=0xdbff && (s2Start+1)!=limit2 && 
+                  UTF16.isTrailSurrogate(s2[(s2Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c2) && start2!=s2Start && 
+                  UTF16.isLeadSurrogate(s2[(s2Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c2-=0x2800;
+            }
+        }
+    
+        /* now c1 and c2 are in UTF-32-compatible order */
+        return (int)c1-(int)c2;
+    }
+
+
+    /*
+     * Status of tailored normalization
+     *
+     * This was done initially for investigation on Unicode public review issue 7
+     * (http://www.unicode.org/review/). See Jitterbug 2481.
+     * While the UTC at meeting #94 (2003mar) did not take up the issue, this is
+     * a permanent feature in ICU 2.6 in support of IDNA which requires true
+     * Unicode 3.2 normalization.
+     * (NormalizationCorrections are rolled into IDNA mapping tables.)
+     *
+     * Tailored normalization as implemented here allows to "normalize less"
+     * than full Unicode normalization would.
+     * Based internally on a UnicodeSet of code points that are
+     * "excluded from normalization", the normalization functions leave those
+     * code points alone ("inert"). This means that tailored normalization
+     * still transforms text into a canonically equivalent form.
+     * It does not add decompositions to code points that do not have any or
+     * change decomposition results.
+     *
+     * Any function that searches for a safe boundary has not been touched,
+     * which means that these functions will be over-pessimistic when
+     * exclusions are applied.
+     * This should not matter because subsequent checks and normalizations
+     * do apply the exclusions; only a little more of the text may be processed
+     * than necessary under exclusions.
+     *
+     * Normalization exclusions have the following effect on excluded code points c:
+     * - c is not decomposed
+     * - c is not a composition target
+     * - c does not combine forward or backward for composition
+     *   except that this is not implemented for Jamo
+     * - c is treated as having a combining class of 0
+     */
+     
+    /* 
+     * Constants for the bit fields in the options bit set parameter. 
+     * These need not be public. 
+     * A user only needs to know the currently assigned values. 
+     * The number and positions of reserved bits per field can remain private. 
+     */ 
+    private static final int OPTIONS_NX_MASK=0x1f;
+    private static final int OPTIONS_UNICODE_MASK=0xe0; 
+    public  static final int OPTIONS_SETS_MASK=0xff;
+    //private static final int OPTIONS_UNICODE_SHIFT=5;
+    private static final UnicodeSet[] nxCache = new UnicodeSet[OPTIONS_SETS_MASK+1];
+     
+    /* Constants for options flags for normalization.*/
+
+    /** 
+     * Options bit 0, do not decompose Hangul syllables. 
+     */
+    private static final int NX_HANGUL = 1;
+    /** 
+     * Options bit 1, do not decompose CJK compatibility characters.
+     */
+    private static final int NX_CJK_COMPAT=2;
+    /**
+     * Options bit 8, use buggy recomposition described in
+     * Unicode Public Review Issue #29
+     * at http://www.unicode.org/review/resolved-pri.html#pri29
+     *
+     * Used in IDNA implementation according to strict interpretation
+     * of IDNA definition based on Unicode 3.2 which predates PRI #29.
+     *
+     * See ICU4C unormimp.h
+     */
+    public static final int BEFORE_PRI_29=0x100;
+
+    /*
+     * The following options are used only in some composition functions.
+     * They use bits 12 and up to preserve lower bits for the available options
+     * space in unorm_compare() -
+     * see documentation for UNORM_COMPARE_NORM_OPTIONS_SHIFT.
+     */
+
+    /** Options bit 12, for compatibility vs. canonical decomposition. */
+    public static final int OPTIONS_COMPAT=0x1000;
+    /** Options bit 13, no discontiguous composition (FCC vs. NFC). */
+    public static final int OPTIONS_COMPOSE_CONTIGUOUS=0x2000;
+
+    /* normalization exclusion sets --------------------------------------------- */
+    
+    /*
+     * Normalization exclusion UnicodeSets are used for tailored normalization;
+     * see the comment near the beginning of this file.
+     *
+     * By specifying one or several sets of code points,
+     * those code points become inert for normalization.
+     */
+    private static final synchronized UnicodeSet internalGetNXHangul() {
+        /* internal function, does not check for incoming U_FAILURE */
+    
+        if(nxCache[NX_HANGUL]==null) {
+             nxCache[NX_HANGUL]=new UnicodeSet(0xac00, 0xd7a3);
+        }
+        return nxCache[NX_HANGUL];
+    }
+    
+    private static final synchronized UnicodeSet internalGetNXCJKCompat() {
+        /* internal function, does not check for incoming U_FAILURE */
+    
+        if(nxCache[NX_CJK_COMPAT]==null) {
+
+            /* build a set from [CJK Ideographs]&[has canonical decomposition] */
+            UnicodeSet set, hasDecomp;
+    
+            set=new UnicodeSet("[:Ideographic:]");
+    
+            /* start with an empty set for [has canonical decomposition] */
+            hasDecomp=new UnicodeSet();
+    
+            /* iterate over all ideographs and remember which canonically decompose */
+            UnicodeSetIterator it = new UnicodeSetIterator(set);
+            int start, end;
+            long norm32;
+    
+            while(it.nextRange() && (it.codepoint != UnicodeSetIterator.IS_STRING)) {
+                start=it.codepoint;
+                end=it.codepointEnd;
+                while(start<=end) {
+                    norm32 = getNorm32(start);
+                    if((norm32 & QC_NFD)>0) {
+                        hasDecomp.add(start);
+                    }
+                    ++start;
+                }
+            }
+    
+            /* hasDecomp now contains all ideographs that decompose canonically */
+             nxCache[NX_CJK_COMPAT]=hasDecomp;
+         
+        }
+    
+        return nxCache[NX_CJK_COMPAT];
+    }
+    
+    private static final synchronized UnicodeSet internalGetNXUnicode(int options) {
+        options &= OPTIONS_UNICODE_MASK;
+        if(options==0) {
+            return null;
+        }
+    
+        if(nxCache[options]==null) {
+            /* build a set with all code points that were not designated by the specified Unicode version */
+            UnicodeSet set = new UnicodeSet();
+
+            switch(options) {
+            case Normalizer.UNICODE_3_2:
+                set.applyPattern("[:^Age=3.2:]");
+                break;
+            default:
+                return null;
+            }
+            
+            nxCache[options]=set;
+        }
+    
+        return nxCache[options];
+    }
+    
+    /* Get a decomposition exclusion set. The data must be loaded. */
+    private static final synchronized UnicodeSet internalGetNX(int options) {
+        options&=OPTIONS_SETS_MASK;
+    
+        if(nxCache[options]==null) {
+            /* return basic sets */            
+            if(options==NX_HANGUL) {
+                return internalGetNXHangul();
+            }
+            if(options==NX_CJK_COMPAT) {
+                return internalGetNXCJKCompat();
+            }
+            if((options & OPTIONS_UNICODE_MASK)!=0 && (options & OPTIONS_NX_MASK)==0) {
+                return internalGetNXUnicode(options);
+            }
+    
+            /* build a set from multiple subsets */
+            UnicodeSet set;
+            UnicodeSet other;
+    
+            set=new UnicodeSet();
+
+    
+            if((options & NX_HANGUL)!=0 && null!=(other=internalGetNXHangul())) {
+                set.addAll(other);
+            }
+            if((options&NX_CJK_COMPAT)!=0 && null!=(other=internalGetNXCJKCompat())) {
+                set.addAll(other);
+            }
+            if((options&OPTIONS_UNICODE_MASK)!=0 && null!=(other=internalGetNXUnicode(options))) {
+                set.addAll(other);
+            }
+
+               nxCache[options]=set;
+        }
+        return nxCache[options];
+    }
+    
+    public static final UnicodeSet getNX(int options) {
+        if((options&=OPTIONS_SETS_MASK)==0) {
+            /* incoming failure, or no decomposition exclusions requested */
+            return null;
+        } else {
+            return internalGetNX(options);
+        }
+    }
+    
+    private static final boolean nx_contains(UnicodeSet nx, int c) {
+        return nx!=null && nx.contains(c);
+    }
+    
+    private static final boolean nx_contains(UnicodeSet nx, char c, char c2) {
+        return nx!=null && nx.contains(c2==0 ? c : UCharacterProperty.getRawSupplementary(c, c2));
+    }
+
+
+}
diff --git a/src/com/ibm/icu/impl/OlsonTimeZone.java b/src/com/ibm/icu/impl/OlsonTimeZone.java
new file mode 100644
index 0000000..2fb708d
--- /dev/null
+++ b/src/com/ibm/icu/impl/OlsonTimeZone.java
@@ -0,0 +1,1016 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2008, International Business Machines Corporation and         *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.impl;
+
+import java.util.Arrays;
+import java.util.Date;
+
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * A time zone based on the Olson database.  Olson time zones change
+ * behavior over time.  The raw offset, rules, presence or absence of
+ * daylight savings time, and even the daylight savings amount can all
+ * vary.
+ *
+ * This class uses a resource bundle named "zoneinfo".  Zoneinfo is a
+ * table containing different kinds of resources.  In several places,
+ * zones are referred to using integers.  A zone's integer is a number
+ * from 0..n-1, where n is the number of zones, with the zones sorted
+ * in lexicographic order.
+ *
+ * 1. Zones.  These have keys corresponding to the Olson IDs, e.g.,
+ * "Asia/Shanghai".  Each resource describes the behavior of the given
+ * zone.  Zones come in several formats, which are differentiated
+ * based on length.
+ *
+ *  a. Alias (int, length 1).  An alias zone is an int resource.  The
+ *  integer is the zone number of the target zone.  The key of this
+ *  resource is an alternate name for the target zone.  Aliases
+ *  represent Olson links and ICU compatibility IDs.
+ *
+ *  b. Simple zone (array, length 3).  The three subelements are:
+ *
+ *   i. An intvector of transitions.  These are given in epoch
+ *   seconds.  This may be an empty invector (length 0).  If the
+ *   transtions list is empty, then the zone's behavior is fixed and
+ *   given by the offset list, which will contain exactly one pair.
+ *   Otherwise each transtion indicates a time after which (inclusive)
+ *   the associated offset pair is in effect.
+ *
+ *   ii. An intvector of offsets.  These are in pairs of raw offset /
+ *   DST offset, in units of seconds.  There will be at least one pair
+ *   (length >= 2 && length % 2 == 0).
+ *
+ *   iii. A binary resource.  This is of the same length as the
+ *   transitions vector, so length may be zero.  Each unsigned byte
+ *   corresponds to one transition, and has a value of 0..n-1, where n
+ *   is the number of pairs in the offset vector.  This forms a map
+ *   between transitions and offset pairs.
+ *
+ *  c. Simple zone with aliases (array, length 4).  This is like a
+ *  simple zone, but also contains a fourth element:
+ *
+ *   iv. An intvector of aliases.  This list includes this zone
+ *   itself, and lists all aliases of this zone.
+ *
+ *  d. Complex zone (array, length 5).  This is like a simple zone,
+ *  but contains two more elements:
+ *
+ *   iv. A string, giving the name of a rule.  This is the "final
+ *   rule", which governs the zone's behavior beginning in the "final
+ *   year".  The rule ID is given without leading underscore, e.g.,
+ *   "EU".
+ *
+ *   v. An intvector of length 2, containing the raw offset for the
+ *   final rule (in seconds), and the final year.  The final rule
+ *   takes effect for years >= the final year.
+ *
+ *  e. Complex zone with aliases (array, length 6).  This is like a
+ *  complex zone, but also contains a sixth element:
+ * 
+ *   vi. An intvector of aliases.  This list includes this zone
+ *   itself, and lists all aliases of this zone.
+ *
+ * 2. Rules.  These have keys corresponding to the Olson rule IDs,
+ * with an underscore prepended, e.g., "_EU".  Each resource describes
+ * the behavior of the given rule using an intvector, containing the
+ * onset list, the cessation list, and the DST savings.  The onset and
+ * cessation lists consist of the month, dowim, dow, time, and time
+ * mode.  The end result is that the 11 integers describing the rule
+ * can be passed directly into the SimpleTimeZone 13-argument
+ * constructor (the other two arguments will be the raw offset, taken
+ * from the complex zone element 5, and the ID string, which is not
+ * used), with the times and the DST savings multiplied by 1000 to
+ * scale from seconds to milliseconds.
+ *
+ * 3. Countries.  These have keys corresponding to the 2-letter ISO
+ * country codes, with a percent sign prepended, e.g., "%US".  Each
+ * resource is an intvector listing the zones associated with the
+ * given country.  The special entry "%" corresponds to "no country",
+ * that is, the category of zones assigned to no country in the Olson
+ * DB.
+ *
+ * 4. Metadata.  Metadata is stored under the key "_".  It is an
+ * intvector of length three containing the number of zones resources,
+ * rule resources, and country resources.  For the purposes of this
+ * count, the metadata entry itself is considered a rule resource,
+ * since its key begins with an underscore.
+ */
+public class OlsonTimeZone extends BasicTimeZone {
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -6281977362477515376L;
+
+    private static final boolean ASSERT = false;
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(int, int, int, int, int, int)
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        if (month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException("Month is not in the legal range: " +month);
+        } else {
+            return getOffset(era, year, month, day, dayOfWeek, milliseconds, Grego.monthLength(year, month));
+        }
+    }
+
+    /**
+     * TimeZone API.
+     */
+    public int getOffset(int era, int year, int month,int dom, int dow, int millis, int monthLength){
+
+        if ((era != GregorianCalendar.AD && era != GregorianCalendar.BC)
+            || month < Calendar.JANUARY
+            || month > Calendar.DECEMBER
+            || dom < 1
+            || dom > monthLength
+            || dow < Calendar.SUNDAY
+            || dow > Calendar.SATURDAY
+            || millis < 0
+            || millis >= Grego.MILLIS_PER_DAY
+            || monthLength < 28
+            || monthLength > 31) {
+            throw new IllegalArgumentException();
+        }
+
+        if (era == GregorianCalendar.BC) {
+            year = -year;
+        }
+
+        if (year > finalYear) { // [sic] >, not >=; see above
+            if (ASSERT) Assert.assrt("(finalZone != null)", finalZone != null);
+            return finalZone.getOffset(era, year, month, dom, dow, millis);
+        }
+
+        // Compute local epoch millis from input fields
+        long time = Grego.fieldsToDay(year, month, dom) * Grego.MILLIS_PER_DAY + millis;
+
+        int[] offsets = new int[2];
+        getHistoricalOffset(time, true, LOCAL_DST, LOCAL_STD, offsets);
+        return offsets[0] + offsets[1];
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#setRawOffset(int)
+     */
+    public void setRawOffset(int offsetMillis) {
+        if (getRawOffset() == offsetMillis) {
+            return;
+        }
+        GregorianCalendar cal = new GregorianCalendar(ULocale.ROOT);
+        cal.setTimeZone(this);
+        int tmpFinalYear = cal.get(Calendar.YEAR) - 1;
+
+        // Apply the raw offset starting current year and beyond
+        if (finalYear > tmpFinalYear) {
+            finalYear = tmpFinalYear;
+            finalMillis = Grego.fieldsToDay(tmpFinalYear, 0, 1) * Grego.MILLIS_PER_DAY;
+        }
+        if (finalZone == null) {
+            // Create SimpleTimeZone instance to store the offset
+            finalZone = new SimpleTimeZone(offsetMillis, getID());
+        } else {
+            finalZone.setRawOffset(offsetMillis);
+            finalZone.setStartYear(finalYear);
+        }
+
+        transitionRulesInitialized = false;
+    }
+
+    public Object clone() {
+        OlsonTimeZone other = (OlsonTimeZone) super.clone();
+        if(finalZone!=null){
+            finalZone.setID(getID());
+            other.finalZone = (SimpleTimeZone)finalZone.clone();
+        }
+        other.transitionTimes = (int[])transitionTimes.clone();
+        other.typeData = (byte[])typeData.clone();
+        other.typeOffsets = (int[])typeOffsets.clone();
+        return other;
+    }
+
+    /**
+     * TimeZone API.
+     */
+    public void getOffset(long date, boolean local, int[] offsets)  {
+        // The check against finalMillis will suffice most of the time, except
+        // for the case in which finalMillis == DBL_MAX, date == DBL_MAX,
+        // and finalZone == 0.  For this case we add "&& finalZone != 0".
+        if (date >= finalMillis && finalZone != null) {
+            finalZone.getOffset(date, local, offsets);
+        } else {
+            getHistoricalOffset(date, local,
+                    LOCAL_FORMER, LOCAL_LATTER, offsets);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        if (date >= finalMillis && finalZone != null) {
+            finalZone.getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+        } else {
+            getHistoricalOffset(date, true, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getRawOffset()
+     */
+    public int getRawOffset() {
+        int[] ret = new int[2];
+        getOffset( System.currentTimeMillis(), false, ret);
+        return ret[0];
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#useDaylightTime()
+     */
+    public boolean useDaylightTime() {
+        // If DST was observed in 1942 (for example) but has never been
+        // observed from 1943 to the present, most clients will expect
+        // this method to return FALSE.  This method determines whether
+        // DST is in use in the current year (at any point in the year)
+        // and returns TRUE if so.
+        int[] fields = Grego.timeToFields(System.currentTimeMillis(), null);
+        int year = fields[0];
+
+        if (year > finalYear) { // [sic] >, not >=; see above
+            return (finalZone != null && finalZone.useDaylightTime());
+        }
+
+        // Find start of this year, and start of next year
+        long start = Grego.fieldsToDay(year, 0, 1) * SECONDS_PER_DAY;    
+        long limit = Grego.fieldsToDay(year+1, 0, 1) * SECONDS_PER_DAY;    
+
+        // Return TRUE if DST is observed at any time during the current
+        // year.
+        for (int i = 0; i < transitionCount; ++i) {
+            if (transitionTimes[i] >= limit) {
+                break;
+            }
+            if (transitionTimes[i] >= start &&
+                dstOffset(typeData[i]) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * TimeZone API
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     */
+    public int getDSTSavings() {
+        if(finalZone!=null){
+            return finalZone.getDSTSavings();
+        }
+        return super.getDSTSavings();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#inDaylightTime(java.util.Date)
+     */
+    public boolean inDaylightTime(Date date) {
+        int[] temp = new int[2];
+        getOffset(date.getTime(), false, temp);
+        return temp[1] != 0;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#hasSameRules(com.ibm.icu.util.TimeZone)
+     */
+    public boolean hasSameRules(TimeZone other) {
+        // The super class implementation only check raw offset and
+        // use of daylight saving time.
+        if (!super.hasSameRules(other)) {
+            return false;
+        }
+
+        if (!(other instanceof OlsonTimeZone)) {
+            // We cannot reasonably compare rules in different types
+            return false;
+        }
+
+        // Check final zone
+        OlsonTimeZone o = (OlsonTimeZone)other;
+        if (finalZone == null) {
+            if (o.finalZone != null && finalYear != Integer.MAX_VALUE) {
+                return false;
+            }
+        } else {
+            if (o.finalZone == null
+                    || finalYear != o.finalYear
+                    || !(finalZone.hasSameRules(o.finalZone))) {
+                return false;
+            }
+        }
+        // Check transitions
+        // Note: The code below actually fails to compare two equivalent rules in
+        // different representation properly.
+        if (transitionCount != o.transitionCount ||
+                !Arrays.equals(transitionTimes, o.transitionTimes) ||
+                typeCount != o.typeCount ||
+                !Arrays.equals(typeData, o.typeData) ||
+                !Arrays.equals(typeOffsets, o.typeOffsets)){
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Construct a GMT+0 zone with no transitions.  This is done when a
+     * constructor fails so the resultant object is well-behaved.
+     */
+    private void constructEmpty(){
+        transitionCount = 0;
+        typeCount = 1;
+        transitionTimes = typeOffsets = new int[]{0,0};
+        typeData =  new byte[2];
+        
+    }
+
+    /**
+     * Construct from a resource bundle
+     * @param top the top-level zoneinfo resource bundle.  This is used
+     * to lookup the rule that `res' may refer to, if there is one.
+     * @param res the resource bundle of the zone to be constructed
+     */
+    public OlsonTimeZone(UResourceBundle top, UResourceBundle res){
+        construct(top, res);
+    }
+
+    private void construct(UResourceBundle top, UResourceBundle res){
+        
+        if ((top == null || res == null)) {
+            throw new IllegalArgumentException();
+        }
+        if(DEBUG) System.out.println("OlsonTimeZone(" + res.getKey() +")");
+
+
+        // TODO -- clean up -- Doesn't work if res points to an alias
+        //        // TODO remove nonconst casts below when ures_* API is fixed
+        //        setID(ures_getKey((UResourceBundle*) res)); // cast away const
+
+        // Size 1 is an alias TO another zone (int)
+        // HOWEVER, the caller should dereference this and never pass it in to us
+        // Size 3 is a purely historical zone (no final rules)
+        // Size 4 is like size 3, but with an alias list at the end
+        // Size 5 is a hybrid zone, with historical and final elements
+        // Size 6 is like size 5, but with an alias list at the end
+        int size = res.getSize();
+        if (size < 3 || size > 6) {
+           // ec = U_INVALID_FORMAT_ERROR;
+            throw new IllegalArgumentException("Invalid Format");
+        }
+
+        // Transitions list may be empty
+        UResourceBundle r = res.get(0);
+        transitionTimes = r.getIntVector();
+        
+        if ((transitionTimes.length<0 || transitionTimes.length>0x7FFF) ) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+        transitionCount = (int) transitionTimes.length;
+        
+        // Type offsets list must be of even size, with size >= 2
+        r = res.get( 1);
+        typeOffsets = r.getIntVector();
+        if ((typeOffsets.length<2 || typeOffsets.length>0x7FFE || ((typeOffsets.length&1)!=0))) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+        typeCount = (int) typeOffsets.length >> 1;
+
+        // Type data must be of the same size as the transitions list        
+        r = res.get(2);
+        typeData = r.getBinary().array();
+        if (typeData.length != transitionCount) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+
+        // Process final rule and data, if any
+        if (size >= 5) {
+            String ruleid = res.getString(3);
+            r = res.get(4);
+            int[] data = r.getIntVector();
+
+            if (data != null && data.length == 2) {
+                int rawOffset = data[0] * Grego.MILLIS_PER_SECOND;
+                // Subtract one from the actual final year; we
+                // actually store final year - 1, and compare
+                // using > rather than >=.  This allows us to use
+                // INT32_MAX as an exclusive upper limit for all
+                // years, including INT32_MAX.
+                if (ASSERT) Assert.assrt("data[1] > Integer.MIN_VALUE", data[1] > Integer.MIN_VALUE);
+                finalYear = data[1] - 1;
+                // Also compute the millis for Jan 1, 0:00 GMT of the
+                // finalYear.  This reduces runtime computations.
+                finalMillis = Grego.fieldsToDay(data[1], 0, 1) * Grego.MILLIS_PER_DAY;
+                //U_DEBUG_TZ_MSG(("zone%s|%s: {%d,%d}, finalYear%d, finalMillis%.1lf\n",
+                  //              zKey,rKey, data[0], data[1], finalYear, finalMillis));
+                r = loadRule(top, ruleid);
+
+                // 3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
+                data = r.getIntVector();
+                if ( data.length == 11) {
+                    //U_DEBUG_TZ_MSG(("zone%s, rule%s: {%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d}", zKey, ures_getKey(r), 
+                      //            data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10]));
+                    finalZone = new SimpleTimeZone(rawOffset, "",
+                        data[0], data[1], data[2],
+                        data[3] * Grego.MILLIS_PER_SECOND,
+                        data[4],
+                        data[5], data[6], data[7],
+                        data[8] * Grego.MILLIS_PER_SECOND,
+                        data[9],
+                        data[10] * Grego.MILLIS_PER_SECOND);
+                } else {
+                    throw new IllegalArgumentException("Invalid Format");
+                }                
+            } else {
+                throw new IllegalArgumentException("Invalid Format");
+            }
+        }       
+    }
+
+    public OlsonTimeZone(){
+       /*
+        * 
+        finalYear = Integer.MAX_VALUE;
+        finalMillis = Double.MAX_VALUE;
+        finalZone = null;
+        */
+        constructEmpty();
+    }
+
+    public OlsonTimeZone(String id){
+        UResourceBundle top = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle res = ZoneMeta.openOlsonResource(id);
+        construct(top, res);
+        if(finalZone!=null){
+            finalZone.setID(id);
+        }
+        super.setID(id);
+    }
+
+    public void setID(String id){
+        if(finalZone!= null){
+            finalZone.setID(id);
+        }
+        super.setID(id);
+        transitionRulesInitialized = false;
+    }
+
+    private static final int UNSIGNED_BYTE_MASK =0xFF;
+
+    private int getInt(byte val){
+        return (int)(UNSIGNED_BYTE_MASK & val); 
+    }
+
+    private void getHistoricalOffset(long date, boolean local,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt, int[] offsets) {
+        if (transitionCount != 0) {
+            long sec = Grego.floorDivide(date, Grego.MILLIS_PER_SECOND);
+            // Linear search from the end is the fastest approach, since
+            // most lookups will happen at/near the end.
+            int i = 0;
+            for (i = transitionCount - 1; i > 0; --i) {
+                int transition = transitionTimes[i];
+                if (local) {
+                    int offsetBefore = zoneOffset(getInt(typeData[i-1]));
+                    boolean dstBefore = dstOffset(getInt(typeData[i-1])) != 0;
+
+                    int offsetAfter = zoneOffset(getInt(typeData[i]));
+                    boolean dstAfter = dstOffset(getInt(typeData[i])) != 0;
+
+                    boolean dstToStd = dstBefore && !dstAfter;
+                    boolean stdToDst = !dstBefore && dstAfter;
+                    
+                    if (offsetAfter - offsetBefore >= 0) {
+                        // Positive transition, which makes a non-existing local time range
+                        if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                                || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                            transition += offsetBefore;
+                        } else if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                                || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                            transition += offsetAfter;
+                        } else if ((NonExistingTimeOpt & FORMER_LATTER_MASK) == LOCAL_LATTER) {
+                            transition += offsetBefore;
+                        } else {
+                            // Interprets the time with rule before the transition,
+                            // default for non-existing time range
+                            transition += offsetAfter;
+                        }
+                    } else {
+                        // Negative transition, which makes a duplicated local time range
+                        if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                                || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                            transition += offsetAfter;
+                        } else if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                                || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                            transition += offsetBefore;
+                        } else if ((DuplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                            transition += offsetBefore;
+                        } else {
+                            // Interprets the time with rule after the transition,
+                            // default for duplicated local time range
+                            transition += offsetAfter;
+                        }
+                    }
+                }
+                
+                if (sec >= transition) {
+                    break;
+                }
+            }
+
+            if (ASSERT) Assert.assrt("i>=0 && i<transitionCount", i>=0 && i<transitionCount);
+
+            // Check invariants for GMT times; if these pass for GMT times
+            // the local logic should be working too.
+            if (ASSERT) {
+                Assert.assrt("local || sec < transitionTimes[0] || sec >= transitionTimes[i]", 
+                        local || sec < transitionTimes[0] || sec >= transitionTimes[i]);
+                Assert.assrt("local || i == transitionCount-1 || sec < transitionTimes[i+1]", 
+                        local || i == transitionCount-1 || sec < transitionTimes[i+1]);
+            }
+            // Since ICU tzdata 2007c, the first transition data is actually not a
+            // transition, but used for representing the initial offset.  So the code
+            // below works even if i == 0.
+            int index = getInt(typeData[i]);
+            offsets[0] = rawOffset(index) * Grego.MILLIS_PER_SECOND;
+            offsets[1] = dstOffset(index) * Grego.MILLIS_PER_SECOND;
+        } else {
+            // No transitions, single pair of offsets only
+            offsets[0] = rawOffset(0) * Grego.MILLIS_PER_SECOND;
+            offsets[1] = dstOffset(0) * Grego.MILLIS_PER_SECOND;
+        }
+    }
+
+    private int zoneOffset(int index){
+        index=index << 1;
+        return typeOffsets[index] + typeOffsets[index+1];
+    }
+
+    private int rawOffset(int index){
+        return typeOffsets[(int)(index << 1)];
+    }
+
+    private int dstOffset(int index){
+        return typeOffsets[(int)((index << 1) + 1)];
+    }
+    
+    // temp
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append('[');
+        buf.append("transitionCount=" + transitionCount);
+        buf.append(",typeCount=" + typeCount);
+        buf.append(",transitionTimes=");
+        if (transitionTimes != null) {
+            buf.append('[');
+            for (int i = 0; i < transitionTimes.length; ++i) {
+                if (i > 0) {
+                    buf.append(',');
+                }
+                buf.append(Integer.toString(transitionTimes[i]));
+            }
+            buf.append(']');
+        } else {
+            buf.append("null");
+        }
+        buf.append(",typeOffsets=");
+        if (typeOffsets != null) {
+            buf.append('[');
+            for (int i = 0; i < typeOffsets.length; ++i) {
+                if (i > 0) {
+                    buf.append(',');
+                }
+                buf.append(Integer.toString(typeOffsets[i]));
+            }
+            buf.append(']');
+        } else {
+            buf.append("null");
+        }
+        buf.append(",finalYear=" + finalYear);
+        buf.append(",finalMillis=" + finalMillis);
+        buf.append(",finalZone=" + finalZone);
+        buf.append(']');
+        
+        return buf.toString();
+    }
+
+    /**
+     * Number of transitions, 0..~370
+     */
+    private int transitionCount;
+
+    /**
+     * Number of types, 1..255
+     */
+    private int typeCount;
+
+    /**
+     * Time of each transition in seconds from 1970 epoch.
+     * Length is transitionCount int32_t's.
+     */
+    private int[] transitionTimes; // alias into res; do not delete
+
+    /**
+     * Offset from GMT in seconds for each type.
+     * Length is typeCount int32_t's.
+     */
+    private int[] typeOffsets; // alias into res; do not delete
+
+    /**
+     * Type description data, consisting of transitionCount uint8_t
+     * type indices (from 0..typeCount-1).
+     * Length is transitionCount int8_t's.
+     */
+    private byte[] typeData; // alias into res; do not delete
+
+    /**
+     * The last year for which the transitions data are to be used
+     * rather than the finalZone.  If there is no finalZone, then this
+     * is set to INT32_MAX.  NOTE: This corresponds to the year _before_
+     * the one indicated by finalMillis.
+     */
+    private int finalYear = Integer.MAX_VALUE;
+
+    /**
+     * The millis for the start of the first year for which finalZone
+     * is to be used, or DBL_MAX if finalZone is 0.  NOTE: This is
+     * 0:00 GMT Jan 1, <finalYear + 1> (not <finalMillis>).
+     */
+    private double finalMillis = Double.MAX_VALUE;
+
+    /**
+     * A SimpleTimeZone that governs the behavior for years > finalYear.
+     * If and only if finalYear == INT32_MAX then finalZone == 0.
+     */
+    private SimpleTimeZone finalZone = null; // owned, may be NULL
+ 
+    private static final boolean DEBUG = ICUDebug.enabled("olson");
+    private static final int SECONDS_PER_DAY = 24*60*60;
+    
+    private static UResourceBundle loadRule(UResourceBundle top, String ruleid) {
+        UResourceBundle r = top.get("Rules");
+        r = r.get(ruleid);
+        return r;
+    }
+
+    public boolean equals(Object obj){
+        if (!super.equals(obj)) return false; // super does class check
+        
+        OlsonTimeZone z = (OlsonTimeZone) obj;
+
+        return (Utility.arrayEquals(typeData, z.typeData) ||
+                 // If the pointers are not equal, the zones may still
+                 // be equal if their rules and transitions are equal
+                 (finalYear == z.finalYear &&
+                  // Don't compare finalMillis; if finalYear is ==, so is finalMillis
+                  ((finalZone == null && z.finalZone == null) ||
+                   (finalZone != null && z.finalZone != null &&
+                    finalZone.equals(z.finalZone)) &&
+                  transitionCount == z.transitionCount &&
+                  typeCount == z.typeCount &&
+                  Utility.arrayEquals(transitionTimes, z.transitionTimes) &&
+                  Utility.arrayEquals(typeOffsets, z.typeOffsets) &&
+                  Utility.arrayEquals(typeData, z.typeData)
+                  )));
+
+    }
+
+    public int hashCode(){
+        int ret =   (int)  (finalYear ^ (finalYear>>>4) +
+                   transitionCount ^ (transitionCount>>>6) +
+                   typeCount ^ (typeCount>>>8) + 
+                   Double.doubleToLongBits(finalMillis)+
+                   (finalZone == null ? 0 : finalZone.hashCode()) + 
+                   super.hashCode());
+        for(int i=0; i<transitionTimes.length; i++){
+            ret+=transitionTimes[i]^(transitionTimes[i]>>>8);
+        }
+        for(int i=0; i<typeOffsets.length; i++){
+            ret+=typeOffsets[i]^(typeOffsets[i]>>>8);
+        }
+        for(int i=0; i<typeData.length; i++){
+            ret+=typeData[i] & UNSIGNED_BYTE_MASK;
+        } 
+        return ret;
+    }
+    /*
+    private void readObject(ObjectInputStream s) throws IOException  {
+        s.defaultReadObject();
+        // customized deserialization code
+       
+        // followed by code to update the object, if necessary
+    }
+    */
+
+ 
+    //
+    // BasicTimeZone methods
+    //
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getNextTransition(long, boolean)
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        initTransitionRules();
+
+        if (finalZone != null) {
+            if (inclusive && base == firstFinalTZTransition.getTime()) {
+                return firstFinalTZTransition;
+            } else if (base >= firstFinalTZTransition.getTime()) {
+                if (finalZone.useDaylightTime()) {
+                    //return finalZone.getNextTransition(base, inclusive);
+                    return finalZoneWithStartYear.getNextTransition(base, inclusive);
+                } else {
+                    // No more transitions
+                    return null;
+                }
+            }
+        }
+        if (historicRules != null) {
+            // Find a historical transition
+            int ttidx = transitionCount - 1;
+            for (; ttidx >= firstTZTransitionIdx; ttidx--) {
+                long t = ((long)transitionTimes[ttidx]) * Grego.MILLIS_PER_SECOND;
+                if (base > t || (!inclusive && base == t)) {
+                    break;
+                }
+            }
+            if (ttidx == transitionCount - 1)  {
+                return firstFinalTZTransition;
+            } else if (ttidx < firstTZTransitionIdx) {
+                return firstTZTransition;
+            } else {
+                // Create a TimeZoneTransition
+                TimeZoneRule to = historicRules[getInt(typeData[ttidx + 1])];
+                TimeZoneRule from = historicRules[getInt(typeData[ttidx])];
+                long startTime = ((long)transitionTimes[ttidx+1])*Grego.MILLIS_PER_SECOND;
+
+                // The transitions loaded from zoneinfo.res may contain non-transition data
+                if (from.getName().equals(to.getName()) && from.getRawOffset() == to.getRawOffset()
+                        && from.getDSTSavings() == to.getDSTSavings()) {
+                    return getNextTransition(startTime, false);
+                }
+
+                return new TimeZoneTransition(startTime, from, to);
+            }
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getPreviousTransition(long, boolean)
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        initTransitionRules();
+
+        if (finalZone != null) {
+            if (inclusive && base == firstFinalTZTransition.getTime()) {
+                return firstFinalTZTransition;
+            } else if (base > firstFinalTZTransition.getTime()) {
+                if (finalZone.useDaylightTime()) {
+                    //return finalZone.getPreviousTransition(base, inclusive);
+                    return finalZoneWithStartYear.getPreviousTransition(base, inclusive);
+                } else {
+                    return firstFinalTZTransition;
+                }                
+            }
+        }
+
+        if (historicRules != null) {
+            // Find a historical transition
+            int ttidx = transitionCount - 1;
+            for (; ttidx >= firstTZTransitionIdx; ttidx--) {
+                long t = ((long)transitionTimes[ttidx]) * Grego.MILLIS_PER_SECOND;
+                if (base > t || (inclusive && base == t)) {
+                    break;
+                }
+            }
+            if (ttidx < firstTZTransitionIdx) {
+                // No more transitions
+                return null;
+            } else if (ttidx == firstTZTransitionIdx) {
+                return firstTZTransition;
+            } else {
+                // Create a TimeZoneTransition
+                TimeZoneRule to = historicRules[getInt(typeData[ttidx])];
+                TimeZoneRule from = historicRules[getInt(typeData[ttidx-1])];
+                long startTime = ((long)transitionTimes[ttidx])*Grego.MILLIS_PER_SECOND;
+
+                // The transitions loaded from zoneinfo.res may contain non-transition data
+                if (from.getName().equals(to.getName()) && from.getRawOffset() == to.getRawOffset()
+                        && from.getDSTSavings() == to.getDSTSavings()) {
+                    return getPreviousTransition(startTime, false);
+                }
+
+                return new TimeZoneTransition(startTime, from, to);
+            }
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getTimeZoneRules()
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        initTransitionRules();
+        int size = 1;
+        if (historicRules != null) {
+            // historicRules may contain null entries when original zoneinfo data
+            // includes non transition data.
+            for (int i = 0; i < historicRules.length; i++) {
+                if (historicRules[i] != null) {
+                    size++;
+                }
+            }
+        }
+        if (finalZone != null) {
+            if (finalZone.useDaylightTime()) {
+                size += 2;
+            } else {
+                size++;
+            }
+        }
+
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        int idx = 0;
+        rules[idx++] = initialRule;
+
+        if (historicRules != null) {
+            for (int i = 0; i < historicRules.length; i++) {
+                if (historicRules[i] != null) {
+                    rules[idx++] = historicRules[i];
+                }
+            }
+         }
+
+        if (finalZone != null) {
+            if (finalZone.useDaylightTime()) {
+                TimeZoneRule[] stzr = finalZoneWithStartYear.getTimeZoneRules();
+                // Adding only transition rules
+                rules[idx++] = stzr[1];
+                rules[idx++] = stzr[2];
+            } else {
+                // Create a TimeArrayTimeZoneRule at finalMillis
+                rules[idx++] = new TimeArrayTimeZoneRule(getID() + "(STD)", finalZone.getRawOffset(), 0,
+                        new long[] {(long)finalMillis}, DateTimeRule.UTC_TIME);                
+            }
+        }
+        return rules;
+    }
+
+    private transient InitialTimeZoneRule initialRule;
+    private transient TimeZoneTransition firstTZTransition;
+    private transient int firstTZTransitionIdx;
+    private transient TimeZoneTransition firstFinalTZTransition;
+    private transient TimeArrayTimeZoneRule[] historicRules;
+    private transient SimpleTimeZone finalZoneWithStartYear; // hack
+
+    private transient boolean transitionRulesInitialized;
+
+    private synchronized void initTransitionRules() {
+        if (transitionRulesInitialized) {
+            return;
+        }
+
+        initialRule = null;
+        firstTZTransition = null;
+        firstFinalTZTransition = null;
+        historicRules = null;
+        firstTZTransitionIdx = 0;
+        finalZoneWithStartYear = null;
+
+        String stdName = getID() + "(STD)";
+        String dstName = getID() + "(DST)";
+
+        int raw, dst;
+        if (transitionCount > 0) {
+            int transitionIdx, typeIdx;
+
+            // Note: Since 2007c, the very first transition data is a dummy entry
+            //       added for resolving a offset calculation problem.
+
+            // Create initial rule
+            typeIdx = getInt(typeData[0]); // initial type
+            raw = typeOffsets[typeIdx*2]*Grego.MILLIS_PER_SECOND;
+            dst = typeOffsets[typeIdx*2 + 1]*Grego.MILLIS_PER_SECOND;
+            initialRule = new InitialTimeZoneRule((dst == 0 ? stdName : dstName), raw, dst);
+
+            for (transitionIdx = 1; transitionIdx < transitionCount; transitionIdx++) {
+                firstTZTransitionIdx++;
+                if (typeIdx != getInt(typeData[transitionIdx])) {
+                    break;
+                }
+            }
+            if (transitionIdx == transitionCount) {
+                // Actually no transitions...
+            } else {
+                // Build historic rule array
+                long[] times = new long[transitionCount];
+                for (typeIdx = 0; typeIdx < typeCount; typeIdx++) {
+                    // Gather all start times for each pair of offsets
+                    int nTimes = 0;
+                    for (transitionIdx = firstTZTransitionIdx; transitionIdx < transitionCount; transitionIdx++) {
+                        if (typeIdx == getInt(typeData[transitionIdx])) {
+                            long tt = ((long)transitionTimes[transitionIdx])*Grego.MILLIS_PER_SECOND;
+                            if (tt < finalMillis) {
+                                // Exclude transitions after finalMillis
+                                times[nTimes++] = tt;
+                            }
+                        }
+                    }
+                    if (nTimes > 0) {
+                        long[] startTimes = new long[nTimes];
+                        System.arraycopy(times, 0, startTimes, 0, nTimes);
+                        // Create a TimeArrayTimeZoneRule
+                        raw = typeOffsets[typeIdx*2]*Grego.MILLIS_PER_SECOND;
+                        dst = typeOffsets[typeIdx*2 + 1]*Grego.MILLIS_PER_SECOND;
+                        if (historicRules == null) {
+                            historicRules = new TimeArrayTimeZoneRule[typeCount];
+                        }
+                        historicRules[typeIdx] = new TimeArrayTimeZoneRule((dst == 0 ? stdName : dstName),
+                                raw, dst, startTimes, DateTimeRule.UTC_TIME);
+                    }
+                }
+
+                // Create initial transition
+                typeIdx = getInt(typeData[firstTZTransitionIdx]);
+                firstTZTransition = new TimeZoneTransition(((long)transitionTimes[firstTZTransitionIdx])*Grego.MILLIS_PER_SECOND,
+                        initialRule, historicRules[typeIdx]);
+                
+            }
+        }
+
+        if (initialRule == null) {
+            // No historic transitions
+            raw = typeOffsets[0]*Grego.MILLIS_PER_SECOND;
+            dst = typeOffsets[1]*Grego.MILLIS_PER_SECOND;
+            initialRule = new InitialTimeZoneRule((dst == 0 ? stdName : dstName), raw, dst);
+        }
+
+        if (finalZone != null) {
+            // Get the first occurrence of final rule starts
+            long startTime = (long)finalMillis;
+            TimeZoneRule firstFinalRule;
+            if (finalZone.useDaylightTime()) {
+                /*
+                 * Note: When an OlsonTimeZone is constructed, we should set the final year
+                 * as the start year of finalZone.  However, the boundary condition used for
+                 * getting offset from finalZone has some problems.  So setting the start year
+                 * in the finalZone will cause a problem.  For now, we do not set the valid
+                 * start year when the construction time and create a clone and set the
+                 * start year when extracting rules.
+                 */
+                finalZoneWithStartYear = (SimpleTimeZone)finalZone.clone();
+                // finalYear is 1 year before the actual final year.
+                // See the comment in the construction method.
+                finalZoneWithStartYear.setStartYear(finalYear + 1);
+
+                TimeZoneTransition tzt = finalZoneWithStartYear.getNextTransition(startTime, false);
+                firstFinalRule  = tzt.getTo();
+                startTime = tzt.getTime();
+            } else {
+                finalZoneWithStartYear = finalZone;
+                firstFinalRule = new TimeArrayTimeZoneRule(finalZone.getID(),
+                        finalZone.getRawOffset(), 0, new long[] {startTime}, DateTimeRule.UTC_TIME);
+            }
+            TimeZoneRule prevRule = null;
+            if (transitionCount > 0) {
+                prevRule = historicRules[getInt(typeData[transitionCount - 1])];
+            }
+            if (prevRule == null) {
+                // No historic transitions, but only finalZone available
+                prevRule = initialRule;
+            }
+            firstFinalTZTransition = new TimeZoneTransition(startTime, prevRule, firstFinalRule);
+        }
+
+        transitionRulesInitialized = true;
+    }
+}
diff --git a/src/com/ibm/icu/impl/PatternTokenizer.java b/src/com/ibm/icu/impl/PatternTokenizer.java
new file mode 100644
index 0000000..5361898
--- /dev/null
+++ b/src/com/ibm/icu/impl/PatternTokenizer.java
@@ -0,0 +1,403 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * A simple parsing class for patterns and rules. Handles '...' quotations, \\uxxxx and \\Uxxxxxxxx, and symple syntax.
+ * The '' (two quotes) is treated as a single quote, inside or outside a quote
+ * <ul>
+ * <li>Any ignorable characters are ignored in parsing.</li>
+ * <li>Any syntax characters are broken into separate tokens</li>
+ * <li>Quote characters can be specified: '...', "...", and \x </li>
+ * <li>Other characters are treated as literals</li>
+ * </ul>
+ */
+public class PatternTokenizer {
+    // settings used in the interpretation of the pattern
+    private UnicodeSet ignorableCharacters = new UnicodeSet();
+    private UnicodeSet syntaxCharacters = new UnicodeSet();
+    private UnicodeSet extraQuotingCharacters = new UnicodeSet();
+    private UnicodeSet escapeCharacters = new UnicodeSet();
+    private boolean usingSlash = false;
+    private boolean usingQuote = false;
+    
+    // transient data, set when needed. Null it out for any changes in the above fields.
+    private transient UnicodeSet needingQuoteCharacters = null;
+    
+    // data about the current pattern being parsed. start gets moved as we go along.
+    private int start;
+    private int limit;
+    private String pattern;
+    
+    public UnicodeSet getIgnorableCharacters() {
+        return (UnicodeSet) ignorableCharacters.clone();
+    }
+    /**
+     * Sets the characters to be ignored in parsing, eg new UnicodeSet("[:pattern_whitespace:]");
+     * @param ignorableCharacters
+     * @return
+     */
+    public PatternTokenizer setIgnorableCharacters(UnicodeSet ignorableCharacters) {
+        this.ignorableCharacters = (UnicodeSet) ignorableCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }
+    public UnicodeSet getSyntaxCharacters() {
+        return (UnicodeSet) syntaxCharacters.clone();
+    }
+    public UnicodeSet getExtraQuotingCharacters() {
+        return (UnicodeSet) extraQuotingCharacters.clone();
+    }
+    /**
+     *  Sets the characters to be interpreted as syntax characters in parsing, eg new UnicodeSet("[:pattern_syntax:]")
+     * @param syntaxCharacters
+     * @return
+     */
+    public PatternTokenizer setSyntaxCharacters(UnicodeSet syntaxCharacters) {
+        this.syntaxCharacters = (UnicodeSet) syntaxCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }   
+    /**
+     *  Sets the extra characters to be quoted in literals
+     * @param syntaxCharacters
+     * @return
+     */
+    public PatternTokenizer setExtraQuotingCharacters(UnicodeSet syntaxCharacters) {
+        this.extraQuotingCharacters = (UnicodeSet) syntaxCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }   
+    
+    public UnicodeSet getEscapeCharacters() {
+        return (UnicodeSet) escapeCharacters.clone();
+    }
+    /**
+     * Set characters to be escaped in literals, in quoteLiteral and normalize, eg new UnicodeSet("[^\\u0020-\\u007E]");
+     * @param escapeCharacters
+     * @return
+     */
+    public PatternTokenizer setEscapeCharacters(UnicodeSet escapeCharacters) {
+        this.escapeCharacters = (UnicodeSet) escapeCharacters.clone();
+        return this;
+    }
+    public boolean isUsingQuote() {
+        return usingQuote;
+    }
+    public PatternTokenizer setUsingQuote(boolean usingQuote) {
+        this.usingQuote = usingQuote;
+        needingQuoteCharacters = null;
+        return this;
+    }
+    public boolean isUsingSlash() {
+        return usingSlash;
+    }
+    public PatternTokenizer setUsingSlash(boolean usingSlash) {
+        this.usingSlash = usingSlash;
+        needingQuoteCharacters = null;
+        return this;
+    }
+    //    public UnicodeSet getQuoteCharacters() {
+//  return (UnicodeSet) quoteCharacters.clone();
+//  }
+//  public PatternTokenizer setQuoteCharacters(UnicodeSet quoteCharacters) {
+//  this.quoteCharacters = (UnicodeSet) quoteCharacters.clone();
+//  needingQuoteCharacters = null;
+//  return this;
+//  }
+    public int getLimit() {
+        return limit;
+    }
+    public PatternTokenizer setLimit(int limit) {
+        this.limit = limit;
+        return this;
+    }
+    public int getStart() {
+        return start;
+    }
+    public PatternTokenizer setStart(int start) {
+        this.start = start;
+        return this;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public PatternTokenizer setPattern(StringBuffer pattern) {
+//##        return setPattern(pattern.toString());
+//##    }
+//#else 
+    public PatternTokenizer setPattern(CharSequence pattern) {
+        return setPattern(pattern.toString());
+    }
+//#endif
+
+    public PatternTokenizer setPattern(String pattern) {
+        if (pattern == null) {
+            throw new IllegalArgumentException("Inconsistent arguments");
+        }
+        this.start = 0;
+        this.limit = pattern.length();
+        this.pattern = pattern;
+        return this;
+    }
+
+    public static final char SINGLE_QUOTE = '\'';
+    public static final char BACK_SLASH = '\\';
+    private static int NO_QUOTE = -1, IN_QUOTE = -2;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public String quoteLiteral(StringBuffer string) {
+//##        return quoteLiteral(string.toString());
+//##    }
+//#else
+    public String quoteLiteral(CharSequence string) {
+        return quoteLiteral(string.toString());
+    }
+//#endif
+
+    /**
+     * Quote a literal string, using the available settings. Thus syntax characters, quote characters, and ignorable characters will be put into quotes.
+     * @param string
+     * @return
+     */
+    public String quoteLiteral(String string) {
+        if (needingQuoteCharacters == null) {
+            needingQuoteCharacters = new UnicodeSet().addAll(syntaxCharacters).addAll(ignorableCharacters).addAll(extraQuotingCharacters); // .addAll(quoteCharacters)
+            if (usingSlash) needingQuoteCharacters.add(BACK_SLASH);
+            if (usingQuote) needingQuoteCharacters.add(SINGLE_QUOTE);
+        }
+        StringBuffer result = new StringBuffer();
+        int quotedChar = NO_QUOTE;
+        int cp;
+        for (int i = 0; i < string.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(string, i);
+            if (escapeCharacters.contains(cp)) {
+                // we may have to fix up previous characters
+                if (quotedChar == IN_QUOTE) {
+                    result.append(SINGLE_QUOTE);
+                    quotedChar = NO_QUOTE;
+                }
+                appendEscaped(result, cp);
+                continue;
+            }
+            
+            if (needingQuoteCharacters.contains(cp)) {
+                // if we have already started a quote
+                if (quotedChar == IN_QUOTE) {
+                    UTF16.append(result, cp);
+                    if (usingQuote && cp == SINGLE_QUOTE) { // double it
+                        result.append(SINGLE_QUOTE);
+                    }
+                    continue;
+                }
+                // otherwise not already in quote
+                if (usingSlash) {
+                    result.append(BACK_SLASH);
+                    UTF16.append(result, cp);
+                    continue;
+                }
+                if (usingQuote) {
+                    if (cp == SINGLE_QUOTE) { // double it and continue
+                        result.append(SINGLE_QUOTE);
+                        result.append(SINGLE_QUOTE);
+                        continue;
+                    }
+                    result.append(SINGLE_QUOTE);
+                    UTF16.append(result, cp);
+                    quotedChar = IN_QUOTE;
+                    continue;
+                }
+                // we have no choice but to use \\u or \\U
+                appendEscaped(result, cp);
+                continue;
+            }
+            // otherwise cp doesn't need quoting
+            // we may have to fix up previous characters
+            if (quotedChar == IN_QUOTE) {
+                result.append(SINGLE_QUOTE);
+                quotedChar = NO_QUOTE;
+            }
+            UTF16.append(result, cp);
+        }
+        // all done. 
+        // we may have to fix up previous characters
+        if (quotedChar == IN_QUOTE) {
+            result.append(SINGLE_QUOTE);
+        }
+        return result.toString();
+    }
+
+    private void appendEscaped(StringBuffer result, int cp) {
+        if (cp <= 0xFFFF) {
+            result.append("\\u").append(Utility.hex(cp,4));
+        } else {
+            result.append("\\U").append(Utility.hex(cp,8));
+        }
+    }
+    
+    public String normalize() {
+        int oldStart = start;
+        StringBuffer result = new StringBuffer();
+        StringBuffer buffer = new StringBuffer();
+        while (true) {
+            buffer.setLength(0);
+            int status = next(buffer);
+            if (status == DONE) {
+                start = oldStart;
+                return result.toString();
+            }
+            if (status != SYNTAX) {
+                result.append(quoteLiteral(buffer));
+            } else {
+                result.append(buffer);
+            }
+        }
+    }
+    
+    public static final int DONE = 0, SYNTAX = 1, LITERAL = 2, BROKEN_QUOTE = 3, BROKEN_ESCAPE = 4, UNKNOWN = 5;
+    
+    private static final int AFTER_QUOTE = -1, NONE = 0, START_QUOTE = 1, NORMAL_QUOTE = 2, SLASH_START = 3, HEX = 4;
+    
+    public int next(StringBuffer buffer) {
+        if (start >= limit) return DONE;
+        int status = UNKNOWN;
+        int lastQuote = UNKNOWN;
+        int quoteStatus = NONE;
+        int hexCount = 0;
+        int hexValue = 0;
+        int cp;
+        main:
+            for (int i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(pattern, i);
+                // if we are in a quote, then handle it.
+                switch (quoteStatus) {
+                case SLASH_START:
+                    switch (cp) {
+                    case 'u':
+                        quoteStatus = HEX;
+                        hexCount = 4;
+                        hexValue = 0;
+                        continue main;
+                    case 'U': 
+                        quoteStatus = HEX;
+                        hexCount = 8;
+                        hexValue = 0;
+                        continue main;
+                    default:
+                        if (usingSlash) {
+                            UTF16.append(buffer, cp);
+                            quoteStatus = NONE;
+                            continue main;
+                        } else {
+                            buffer.append(BACK_SLASH);
+                            quoteStatus = NONE;
+                        }
+                    }
+                    break; // fall through to NONE
+                case HEX:
+                    hexValue <<= 4;
+                    hexValue += cp;
+                    switch (cp) {
+                    case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
+                        hexValue -= '0'; break;
+                    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                        hexValue -= 'a' - 10; break;
+                    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+                        hexValue -= 'A' - 10; break;
+                    default:
+                        start = i;
+                    return BROKEN_ESCAPE;
+                    }
+                    --hexCount;
+                    if (hexCount == 0) {
+                        quoteStatus = NONE;
+                        UTF16.append(buffer, hexValue);
+                    }
+                    continue main;
+                case AFTER_QUOTE:
+                    // see if we get another quote character
+                    // if we just ended a quote BUT the following character is the lastQuote character, then we have a situation like '...''...', so we restart the quote
+                    if (cp == lastQuote) {
+                        UTF16.append(buffer, cp);
+                        quoteStatus = NORMAL_QUOTE;
+                        continue main;
+                    }
+                    quoteStatus = NONE;
+                    break; // fall through to NONE
+                case START_QUOTE:
+                    // if we are at the very start of a quote, and we hit another quote mark then we emit a literal quote character and end the quote
+                    if (cp == lastQuote) {
+                        UTF16.append(buffer, cp);
+                        quoteStatus = NONE; // get out of quote, with no trace remaining
+                        continue;                            
+                    }
+                    // otherwise get into quote
+                    UTF16.append(buffer, cp);
+                    quoteStatus = NORMAL_QUOTE;
+                    continue main;
+                case NORMAL_QUOTE: 
+                    if (cp == lastQuote) {
+                        quoteStatus = AFTER_QUOTE; // get out of quote
+                        continue main;
+                    }
+                    UTF16.append(buffer, cp);
+                    continue main;
+                }
+                
+                if (ignorableCharacters.contains(cp)) {
+                    continue;
+                }
+                // do syntax characters
+                if (syntaxCharacters.contains(cp)) {
+                    if (status == UNKNOWN) {
+                        UTF16.append(buffer, cp);
+                        start = i + UTF16.getCharCount(cp);
+                        return SYNTAX;
+                    } else { // LITERAL, so back up and break
+                        start = i;
+                        return status;
+                    }
+                }
+                // otherwise it is a literal; keep on going
+                status = LITERAL;
+                if (cp == BACK_SLASH) {
+                    quoteStatus = SLASH_START;
+                    continue;
+                } else if (usingQuote && cp == SINGLE_QUOTE) {
+                    lastQuote = cp;
+                    quoteStatus = START_QUOTE;
+                    continue;
+                }
+                // normal literals
+                UTF16.append(buffer, cp);
+            }
+        // handle final cleanup
+        start = limit;
+        switch (quoteStatus) {
+        case HEX:
+            status = BROKEN_ESCAPE;
+            break;
+        case SLASH_START:
+            if (usingSlash) {
+                status = BROKEN_ESCAPE;
+            } else {
+                buffer.append(BACK_SLASH);
+            }
+            break;
+        case START_QUOTE: case NORMAL_QUOTE:
+            status = BROKEN_QUOTE;
+            break;
+        }
+        return status;
+    }
+    
+    
+}
+//eof
diff --git a/src/com/ibm/icu/impl/PluralRulesLoader.java b/src/com/ibm/icu/impl/PluralRulesLoader.java
new file mode 100644
index 0000000..228eead
--- /dev/null
+++ b/src/com/ibm/icu/impl/PluralRulesLoader.java
@@ -0,0 +1,203 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * Loader for plural rules data.
+ */
+public class PluralRulesLoader {
+  private final Map rulesIdToRules;
+  private Map localeIdToRulesId; // lazy init, use getLocaleIdToRulesIdMap to access
+  private Map rulesIdToEquivalentULocale; // lazy init, use getRulesIdToEquivalentULocaleMap to access
+
+  /**
+   * Access through singleton.
+   */
+  private PluralRulesLoader() {
+    rulesIdToRules = new HashMap();
+  }
+
+  /**
+   * Returns the locales for which we have plurals data.
+   * Utility for testing.
+   */
+  public ULocale[] getAvailableULocales() {
+    Set keys = getLocaleIdToRulesIdMap().keySet();
+    ULocale[] locales = new ULocale[keys.size()];
+    int n = 0;
+    for (Iterator iter = keys.iterator(); iter.hasNext();) {
+      locales[n++] = ULocale.createCanonical((String) iter.next());
+    }
+    return locales;
+  }
+
+  /**
+   * Returns the functionally equivalent locale.
+   */
+  public ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable) {
+    if (isAvailable != null && isAvailable.length > 0) {
+      String localeId = ULocale.canonicalize(locale.getBaseName());
+      Map idMap = getLocaleIdToRulesIdMap();
+      isAvailable[0] = idMap.containsKey(localeId);
+    }
+
+    String rulesId = getRulesIdForLocale(locale);
+    if (rulesId == null || rulesId.trim().length() == 0) {
+      return ULocale.ROOT; // ultimate fallback
+    }
+
+    ULocale result = (ULocale) getRulesIdToEquivalentULocaleMap().get(rulesId);
+    if (result == null) {
+      return ULocale.ROOT; // ultimate fallback
+    }
+
+    return result;
+  }
+
+  /**
+   * Returns the lazily-constructed map.
+   */
+  private Map getLocaleIdToRulesIdMap() {
+    checkBuildRulesIdMaps();
+    return localeIdToRulesId;
+  }
+
+  /**
+   * Returns the lazily-constructed map.
+   */
+  private Map getRulesIdToEquivalentULocaleMap() {
+    checkBuildRulesIdMaps();
+    return rulesIdToEquivalentULocale;
+  }
+
+  /**
+   * Lazily constructs the localeIdToRulesId and rulesIdToEquivalentULocale
+   * maps if necessary. These exactly reflect the contents of the locales resource
+   * in plurals.res.
+   */
+  private void checkBuildRulesIdMaps() {
+    if (localeIdToRulesId == null) {
+      try {
+        UResourceBundle pluralb = getPluralBundle();
+        UResourceBundle localeb = pluralb.get("locales");
+        localeIdToRulesId = new TreeMap();  // sort for convenience of getAvailableULocales
+        rulesIdToEquivalentULocale = new HashMap(); // not visible
+        for (int i = 0; i < localeb.getSize(); ++i) {
+          UResourceBundle b = localeb.get(i);
+          String id = b.getKey();
+          String value = b.getString().intern();
+          localeIdToRulesId.put(id, value);
+
+          if (!rulesIdToEquivalentULocale.containsKey(value)) {
+            rulesIdToEquivalentULocale.put(value, new ULocale(id));
+          }
+        }
+      }
+      catch (MissingResourceException e) {
+        localeIdToRulesId = new HashMap(); // dummy so we don't try again, can read
+        rulesIdToEquivalentULocale = new HashMap();
+      }
+    }
+  }
+
+  /**
+   * Gets the rulesId from the locale,with locale fallback.  If there is no
+   * rulesId, return null.  The rulesId might be the empty string if the
+   * rule is the default rule.
+   */
+  public String getRulesIdForLocale(ULocale locale) {
+    Map idMap = getLocaleIdToRulesIdMap();
+    String localeId = ULocale.canonicalize(locale.getBaseName());
+    String rulesId = null;
+    while (null == (rulesId = (String) idMap.get(localeId))) {
+      int ix = localeId.lastIndexOf("_");
+      if (ix == -1) {
+        break;
+      }
+      localeId = localeId.substring(0, ix);
+    }
+    return rulesId;
+  }
+
+  /**
+   * Gets the rule from the rulesId.  If there is no rule for this rulesId,
+   * return null.
+   */
+  public PluralRules getRulesForRulesId(String rulesId) {
+    PluralRules rules = (PluralRules) rulesIdToRules.get(rulesId);
+    if (rules == null) {
+      try {
+        UResourceBundle pluralb = getPluralBundle();
+        UResourceBundle rulesb = pluralb.get("rules");
+        UResourceBundle setb = rulesb.get(rulesId);
+
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < setb.getSize(); ++i) {
+          UResourceBundle b = setb.get(i);
+          if (i > 0) {
+            sb.append("; ");
+          }
+          sb.append(b.getKey());
+          sb.append(": ");
+          sb.append(b.getString());
+        }
+        rules = PluralRules.parseDescription(sb.toString());
+      } catch (ParseException e) {
+      } catch (MissingResourceException e) {
+      }
+      rulesIdToRules.put(rulesId, rules); // put even if null
+    }
+    return rules;
+  }
+
+  /**
+   * Return the plurals resource.
+   * Note MissingResourceException is unchecked, listed here for clarity.
+   * Callers should handle this exception.
+   */
+  public UResourceBundle getPluralBundle() throws MissingResourceException {
+      return ICUResourceBundle.getBundleInstance(
+          ICUResourceBundle.ICU_BASE_NAME,
+          "plurals",
+          ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+          true);
+  }
+
+  /**
+   * Returns the plural rules for the the locale.
+   * If we don't have data,
+   * com.ibm.icu.text.PluralRules.DEFAULT is returned.
+   */
+  public PluralRules forLocale(ULocale locale) {
+    String rulesId = getRulesIdForLocale(locale);
+    if (rulesId == null || rulesId.trim().length() == 0) {
+      return PluralRules.DEFAULT;
+    }
+    PluralRules rules = getRulesForRulesId(rulesId);
+    if (rules == null) {
+      rules = PluralRules.DEFAULT;
+    }
+    return rules;
+  }
+
+  /**
+   * The only instance of the loader.
+   */
+  public static final PluralRulesLoader loader = new PluralRulesLoader();
+}
diff --git a/src/com/ibm/icu/impl/RelativeDateFormat.java b/src/com/ibm/icu/impl/RelativeDateFormat.java
new file mode 100644
index 0000000..76a3124
--- /dev/null
+++ b/src/com/ibm/icu/impl/RelativeDateFormat.java
@@ -0,0 +1,232 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+/**
+ * @author srl
+ */
+public class RelativeDateFormat extends DateFormat {
+
+    /**
+     * @author srl
+     *
+     */
+    public class URelativeString {
+        URelativeString(int offset, String string) {
+            this.offset = offset;
+            this.string = string;
+        }
+        URelativeString(String offset, String string) {
+            this.offset = Integer.parseInt(offset);
+            this.string = string;
+        }
+        public int    offset;
+        public String string;
+    }
+
+    // copy c'tor?
+    
+    /**
+     * @param timeStyle
+     * @param dateStyle
+     * @param locale
+     */
+    public RelativeDateFormat(int timeStyle, int dateStyle, ULocale locale) {
+        fLocale = locale;
+        fTimeStyle = timeStyle;
+        fDateStyle = dateStyle;
+        
+        if(fDateStyle != DateFormat.NONE) {
+            int newStyle = fDateStyle & ~DateFormat.RELATIVE;
+            fDateFormat = DateFormat.getDateInstance(newStyle, locale);
+        } else {
+            fDateFormat = null;
+        }
+        if(fTimeStyle != DateFormat.NONE) {
+            int newStyle = fTimeStyle & ~DateFormat.RELATIVE;
+            fTimeFormat = DateFormat.getTimeInstance(newStyle, locale);
+        } else {
+            fTimeFormat = null;
+        }
+
+        initializeCalendar(null, fLocale);
+        loadDates();
+        initializeCombinedFormat(calendar, fLocale);
+    }
+    
+    /**
+     * serial version (generated)
+     */
+    private static final long serialVersionUID = 1131984966440549435L;
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DateFormat#format(com.ibm.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition)
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+            FieldPosition fieldPosition) {
+
+        //TODO: handle FieldPosition properly
+
+        String dayString = null;
+        String timeString = null;
+        if (fDateStyle != DateFormat.NONE) {
+            // calculate the difference, in days, between 'cal' and now.
+            int dayDiff = dayDifference(cal);
+
+            // look up string
+            dayString = getStringForDay(dayDiff);
+
+            if (dayString == null) {
+                // didn't find it. Fall through to the fDateFormat 
+                dayString = fDateFormat.format(cal);
+            }
+        }
+        if (fTimeStyle != DateFormat.NONE) {
+            timeString = fTimeFormat.format(cal);
+        }
+
+        if (dayString != null && timeString != null) {
+            return fCombinedFormat.format(new Object[] {dayString, timeString}, toAppendTo,
+                    new FieldPosition(0));
+        } else if (dayString != null) {
+            toAppendTo.append(dayString);
+        } else if (timeString != null) {
+            toAppendTo.append(timeString);
+        }
+        return toAppendTo;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DateFormat#parse(java.lang.String, com.ibm.icu.util.Calendar, java.text.ParsePosition)
+     */
+    public void parse(String text, Calendar cal, ParsePosition pos) {
+        throw new UnsupportedOperationException("Relative Date parse is not implemented yet");
+    }
+
+    private DateFormat fDateFormat; // the held date format
+    private DateFormat fTimeFormat; // the held time format
+    private MessageFormat fCombinedFormat; //  the {0} {1} format. 
+
+    int fDateStyle;
+    int fTimeStyle;
+    ULocale  fLocale;
+    
+    private transient URelativeString fDates[] = null; // array of strings
+    
+    
+    /**
+     * Get the string at a specific offset.
+     * @param day day offset ( -1, 0, 1, etc.. )
+     * @return the string, or NULL if none at that location.
+     */
+    private String getStringForDay(int day) {
+        if(fDates == null) {
+            loadDates();
+        }
+        for(int i=0;i<fDates.length;i++) {
+            if(fDates[i].offset == day) {
+                return fDates[i].string;
+            }
+        }
+        return null;
+    }
+    
+    /** 
+     * Load the Date string array
+     */
+    private synchronized void loadDates() {
+        CalendarData calData = new CalendarData(fLocale, calendar.getType());
+        UResourceBundle rb = calData.get("fields", "day", "relative");
+        
+        Set datesSet =new TreeSet(new Comparator() { 
+            public int compare(Object o1, Object o2) {
+                URelativeString r1 = (URelativeString)o1;
+                URelativeString r2 = (URelativeString)o2;
+                
+                if(r1.offset == r2.offset) {
+                    return 0;
+                } else if(r1.offset < r2.offset) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+            }
+        }) ;
+        
+        for(UResourceBundleIterator i = rb.getIterator();i.hasNext();) {
+            UResourceBundle line = i.next();
+            
+            String k = line.getKey();
+            String v = line.getString();
+            URelativeString rs = new URelativeString(k,v);
+            datesSet.add(rs);
+        }
+        fDates = new URelativeString[0];
+        fDates = (URelativeString[])datesSet.toArray(fDates);
+    }
+    
+    /**
+     * @return the number of days in "until-now"
+     */
+    private static int dayDifference(Calendar until) {
+        Calendar nowCal = (Calendar)until.clone();
+        Date nowDate = new Date(System.currentTimeMillis());
+        nowCal.clear();
+        nowCal.setTime(nowDate);
+        int dayDiff = until.get(Calendar.JULIAN_DAY) - nowCal.get(Calendar.JULIAN_DAY);
+        return dayDiff;
+    }
+    
+    /**
+     * initializes fCalendar from parameters.  Returns fCalendar as a convenience.
+     * @param zone  Zone to be adopted, or NULL for TimeZone::createDefault().
+     * @param locale Locale of the calendar
+     * @param status Error code
+     * @return the newly constructed fCalendar
+     */
+    private Calendar initializeCalendar(TimeZone zone, ULocale locale) {
+        if (calendar == null) {
+            if(zone == null) {
+                calendar = Calendar.getInstance(locale);
+            } else {
+                calendar = Calendar.getInstance(zone, locale);
+            }
+        }
+        return calendar;
+    }
+
+    private MessageFormat initializeCombinedFormat(Calendar cal, ULocale locale) {
+        String pattern = "{1} {0}";
+        try {
+            CalendarData calData = new CalendarData(locale, cal.getType());
+            String[] patterns = calData.get("DateTimePatterns").getStringArray();
+            if (patterns != null && patterns.length >= 9) {
+                pattern = patterns[8];
+            }
+        } catch (MissingResourceException e) {
+            // use default
+        }
+        fCombinedFormat = new MessageFormat(pattern, locale);
+        return fCombinedFormat;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
new file mode 100644
index 0000000..2518bd1
--- /dev/null
+++ b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
@@ -0,0 +1,203 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UTF16;    
+
+/**
+ * DLF docs must define behavior when Replaceable is mutated underneath
+ * the iterator.
+ *
+ * This and ICUCharacterIterator share some code, maybe they should share
+ * an implementation, or the common state and implementation should be
+ * moved up into UCharacterIterator.
+ *
+ * What are first, last, and getBeginIndex doing here?!?!?!
+ */
+public class ReplaceableUCharacterIterator extends UCharacterIterator {
+
+    // public constructor ------------------------------------------------------
+    
+    /**
+     * Public constructor
+     * @param replaceable text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(Replaceable replaceable){
+        if(replaceable==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = replaceable;
+        this.currentIndex = 0;
+    }
+    
+    /**
+     * Public constructor
+     * @param str text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(String str){
+        if(str==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(str);
+        this.currentIndex = 0;
+    }
+    
+    /**
+     * Public constructor
+     * @param buf buffer of text on which the iterator will be based
+     */
+    public ReplaceableUCharacterIterator(StringBuffer buf){
+        if(buf==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(buf);
+        this.currentIndex = 0;
+    }
+    
+    // public methods ----------------------------------------------------------
+    
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+        try {
+          return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+    
+    /**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public int current(){
+        if (currentIndex < replaceable.length()) {
+            return replaceable.charAt(currentIndex);
+        }
+        return DONE;
+    }
+    
+    /**
+     * Returns the current codepoint
+     * @return current codepoint
+     */
+    public int currentCodePoint(){
+        // cannot use charAt due to it different 
+        // behaviour when index is pointing at a
+        // trail surrogate, check for surrogates
+         
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the next code point
+            next();
+            // due to post increment semantics current() after next() 
+            // actually returns the next char which is what we want
+            int ch2 = current();
+            // current should never change the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair
+                return UCharacterProperty.getRawSupplementary(
+                                                         (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public int getLength(){
+        return replaceable.length();
+    }
+    
+    /**
+     * Gets the current currentIndex in text.
+     * @return current currentIndex in text.
+     */
+    public int getIndex(){
+        return currentIndex;
+    }
+        
+    /**
+     * Returns next UTF16 character and increments the iterator's currentIndex by 1. 
+     * If the resulting currentIndex is greater or equal to the text length, the 
+     * currentIndex is reset to the text length and a value of DONECODEPOINT is 
+     * returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         end of the text range.
+     */
+    public int next(){
+        if (currentIndex < replaceable.length()) {
+            return replaceable.charAt(currentIndex++);
+        }
+        return DONE;
+    }
+    
+                
+    /**
+     * Returns previous UTF16 character and decrements the iterator's currentIndex by 
+     * 1. 
+     * If the resulting currentIndex is less than 0, the currentIndex is reset to 0 and a 
+     * value of DONECODEPOINT is returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         start of the text range.
+     */
+    public int previous(){
+        if (currentIndex > 0) {
+            return replaceable.charAt(--currentIndex);
+        }
+        return DONE;
+    }
+
+    /**
+     * <p>Sets the currentIndex to the specified currentIndex in the text and returns that 
+     * single UTF16 character at currentIndex. 
+     * This assumes the text is stored as 16-bit code units.</p>
+     * @param currentIndex the currentIndex within the text. 
+     * @exception IllegalArgumentException is thrown if an invalid currentIndex is 
+     *            supplied. i.e. currentIndex is out of bounds.
+     * @returns the character at the specified currentIndex or DONE if the specified 
+     *         currentIndex is equal to the end of the text.
+     */
+    public void setIndex(int currentIndex) throws IndexOutOfBoundsException{
+        if (currentIndex < 0 || currentIndex > replaceable.length()) {
+            throw new IndexOutOfBoundsException();
+        }
+        this.currentIndex = currentIndex;
+    }
+    
+    public int getText(char[] fillIn, int offset){
+        int length = replaceable.length();
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+        replaceable.getChars(0,length,fillIn,offset);
+        return length;
+    }       
+        
+    // private data members ----------------------------------------------------
+    
+    /**
+     * Replacable object
+     */
+    private Replaceable replaceable;
+    /**
+     * Current currentIndex
+     */
+    private int currentIndex;
+
+}
diff --git a/src/com/ibm/icu/impl/ResourceBundleWrapper.java b/src/com/ibm/icu/impl/ResourceBundleWrapper.java
new file mode 100644
index 0000000..06668ed
--- /dev/null
+++ b/src/com/ibm/icu/impl/ResourceBundleWrapper.java
@@ -0,0 +1,219 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * just a wrapper for Java ListResourceBundles and 
+ * @author ram
+ *
+ */
+public class ResourceBundleWrapper extends UResourceBundle {
+    private ResourceBundle bundle = null;
+    private String localeID = null;
+    private String baseName = null;
+    private Vector keys=null;
+//    private int loadingStatus = -1;    
+    
+    private ResourceBundleWrapper(ResourceBundle bundle){
+        this.bundle=bundle;
+    }
+
+    protected void setLoadingStatus(int newStatus){
+//        loadingStatus = newStatus;
+    }
+    
+    protected Object handleGetObject(String aKey){
+        ResourceBundleWrapper current = this;
+        Object obj = null;
+        while(current!=null){
+            try{
+                obj = current.bundle.getObject(aKey);
+                break;
+            }catch(MissingResourceException ex){
+                current = (ResourceBundleWrapper)current.getParent();
+            }
+        }
+        if (obj == null){
+            throw new MissingResourceException("Can't find resource for bundle "
+                                               +baseName
+                                               +", key "+aKey,
+                                               this.getClass().getName(),
+                                               aKey);
+        }
+        return obj;
+    }
+    
+    public Enumeration getKeys(){
+        return keys.elements();
+    }
+    
+    private void initKeysVector(){
+        ResourceBundleWrapper current = this;
+        keys = new Vector();
+        while(current!=null){
+            Enumeration e = current.bundle.getKeys();
+            while(e.hasMoreElements()){
+                String elem = (String)e.nextElement();
+                if(!keys.contains(elem)){
+                    keys.add(elem);
+                }
+            }
+            current = (ResourceBundleWrapper)current.getParent();
+        }
+    }
+    protected String getLocaleID(){
+        return localeID;   
+    }
+ 
+    protected String getBaseName(){
+        return bundle.getClass().getName().replace('.','/');   
+    }
+    
+    public ULocale getULocale(){
+        return new ULocale(localeID);   
+    }
+    
+    public UResourceBundle getParent(){
+        return (UResourceBundle)parent;   
+    }
+
+    // Flag for enabling/disabling debugging code
+    private static final boolean DEBUG = ICUDebug.enabled("resourceBundleWrapper");
+    
+    // This method is for super class's instantiateBundle method
+    public static UResourceBundle getBundleInstance(String baseName, String localeID, 
+                                                    ClassLoader root, boolean disableFallback){
+        UResourceBundle b = instantiateBundle(baseName, localeID, root, disableFallback);
+        if(b==null){
+            String separator ="_";
+            if(baseName.indexOf('/')>=0){
+                separator = "/";
+            }
+            throw new MissingResourceException("Could not find the bundle "+ baseName+separator+ localeID,"","");
+        }
+        return b;
+    }
+    // recursively build bundle and override the super-class method
+     protected static synchronized UResourceBundle instantiateBundle(String baseName, String localeID,
+                                                                    ClassLoader root, boolean disableFallback) {
+        if (root == null) {
+            // we're on the bootstrap
+            root = ClassLoader.getSystemClassLoader();
+        }
+        final ClassLoader cl = root;
+        String name = baseName;
+        ULocale defaultLocale = ULocale.getDefault();
+        if (localeID.length() != 0) {
+            name = name + "_" + localeID;
+        }
+
+        ResourceBundleWrapper b = (ResourceBundleWrapper)loadFromCache(cl, name, defaultLocale);
+        if(b==null){
+            ResourceBundleWrapper parent = null;
+            int i = localeID.lastIndexOf('_');
+    
+            if (i != -1) {
+                String locName = localeID.substring(0, i);
+                parent = (ResourceBundleWrapper)loadFromCache(cl, baseName+"_"+locName,defaultLocale);
+                if(parent == null){
+                    parent = (ResourceBundleWrapper)instantiateBundle(baseName, locName , cl, disableFallback);
+                }
+            }else if(localeID.length()>0){
+                parent = (ResourceBundleWrapper)loadFromCache(cl, baseName,defaultLocale);
+                if(parent==null){
+                    parent = (ResourceBundleWrapper)instantiateBundle(baseName, "", cl, disableFallback);
+                }
+            }
+            try {
+                Class cls = cl.loadClass(name);
+                ResourceBundle bx = (ResourceBundle) cls.newInstance();
+                b = new ResourceBundleWrapper(bx);
+                if (parent != null) {
+                    b.setParent(parent);
+                }
+                b.baseName=baseName;
+                b.localeID = localeID;            
+    
+            } catch (ClassNotFoundException e) {
+                
+                final String resName = name.replace('.', '/') + ".properties";
+                InputStream stream = (InputStream)java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction() {
+                        public Object run() {
+                            if (cl != null) {
+                                return cl.getResourceAsStream(resName);
+                            } else {
+                                return ClassLoader.getSystemResourceAsStream(resName);
+                            }
+                        }
+                    }
+                );
+                if (stream != null) {
+                    // make sure it is buffered
+                    stream = new java.io.BufferedInputStream(stream);
+                    try {
+                        b = new ResourceBundleWrapper(new PropertyResourceBundle(stream));
+                        if (parent != null) {
+                            b.setParent(parent);
+                        }
+                        b.baseName=baseName;
+                        b.localeID=localeID;
+                    } catch (Exception ex) {
+                        // throw away exception
+                    } finally {
+                        try {
+                            stream.close();
+                        } catch (Exception ex) {
+                            // throw away exception
+                        }
+                    }
+                }
+    
+                // if a bogus locale is passed then the parent should be
+                // the default locale not the root locale!
+                if (b==null) {
+                    String defaultName = defaultLocale.toString();
+                    if (localeID.length()>0 && localeID.indexOf('_')< 0 && defaultName.indexOf(localeID) == -1) {
+                        b = (ResourceBundleWrapper)loadFromCache(cl,baseName+"_"+defaultName, defaultLocale);
+                        if(b==null){
+                            b = (ResourceBundleWrapper)instantiateBundle(baseName , defaultName, cl, disableFallback);
+                        }
+                    }
+                }
+                // if still could not find the bundle then return the parent
+                if(b==null){
+                    b=parent;
+                }
+            } catch (Exception e) {
+                if (DEBUG)
+                    System.out.println("failure");
+                if (DEBUG)
+                    System.out.println(e);
+            }
+
+            addToCache(cl, name, defaultLocale, b);
+        }
+        if(b!=null){
+            b.initKeysVector();
+        }else{
+            if(DEBUG)System.out.println("Returning null for "+baseName+"_"+localeID);
+        }
+        
+        return b;
+    }
+}
diff --git a/src/com/ibm/icu/impl/RuleCharacterIterator.java b/src/com/ibm/icu/impl/RuleCharacterIterator.java
new file mode 100644
index 0000000..dcde50b
--- /dev/null
+++ b/src/com/ibm/icu/impl/RuleCharacterIterator.java
@@ -0,0 +1,345 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: September 23 2003
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.text.ParsePosition;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An iterator that returns 32-bit code points.  This class is deliberately
+ * <em>not</em> related to any of the JDK or ICU4J character iterator classes
+ * in order to minimize complexity.
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public class RuleCharacterIterator {
+
+    // TODO: Ideas for later.  (Do not implement if not needed, lest the
+    // code coverage numbers go down due to unused methods.)
+    // 1. Add a copy constructor, equals() method, clone() method.
+    // 2. Rather than return DONE, throw an exception if the end
+    // is reached -- this is an alternate usage model, probably not useful.
+    // 3. Return isEscaped from next().  If this happens,
+    // don't keep an isEscaped member variable.
+
+    /**
+     * Text being iterated.
+     */    
+    private String text;
+
+    /**
+     * Position of iterator.
+     */
+    private ParsePosition pos;
+
+    /**
+     * Symbol table used to parse and dereference variables.  May be null.
+     */
+    private SymbolTable sym;
+
+    /**
+     * Current variable expansion, or null if none.
+     */
+    private char[] buf;
+
+    /**
+     * Position within buf[].  Meaningless if buf == null.
+     */
+    private int bufPos;
+
+    /**
+     * Flag indicating whether the last character was parsed from an escape.
+     */
+    private boolean isEscaped;
+
+    /**
+     * Value returned when there are no more characters to iterate.
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Bitmask option to enable parsing of variable names.  If (options &
+     * PARSE_VARIABLES) != 0, then an embedded variable will be expanded to
+     * its value.  Variables are parsed using the SymbolTable API.
+     */
+    public static final int PARSE_VARIABLES = 1;
+
+    /**
+     * Bitmask option to enable parsing of escape sequences.  If (options &
+     * PARSE_ESCAPES) != 0, then an embedded escape sequence will be expanded
+     * to its value.  Escapes are parsed using Utility.unescapeAt().
+     */
+    public static final int PARSE_ESCAPES   = 2;    
+
+    /**
+     * Bitmask option to enable skipping of whitespace.  If (options &
+     * SKIP_WHITESPACE) != 0, then whitespace characters will be silently
+     * skipped, as if they were not present in the input.  Whitespace
+     * characters are defined by UCharacterProperty.isRuleWhiteSpace().
+     */
+    public static final int SKIP_WHITESPACE = 4;
+
+    /**
+     * Constructs an iterator over the given text, starting at the given
+     * position.
+     * @param text the text to be iterated
+     * @param sym the symbol table, or null if there is none.  If sym is null,
+     * then variables will not be deferenced, even if the PARSE_VARIABLES
+     * option is set.
+     * @param pos upon input, the index of the next character to return.  If a
+     * variable has been dereferenced, then pos will <em>not</em> increment as
+     * characters of the variable value are iterated.
+     */
+    public RuleCharacterIterator(String text, SymbolTable sym,
+                                 ParsePosition pos) {
+        if (text == null || pos.getIndex() > text.length()) {
+            throw new IllegalArgumentException();
+        }
+        this.text = text;
+        this.sym = sym;
+        this.pos = pos;
+        buf = null;
+    }
+    
+    /**
+     * Returns true if this iterator has no more characters to return.
+     */
+    public boolean atEnd() {
+        return buf == null && pos.getIndex() == text.length();
+    }
+
+    /**
+     * Returns the next character using the given options, or DONE if there
+     * are no more characters, and advance the position to the next
+     * character.
+     * @param options one or more of the following options, bitwise-OR-ed
+     * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
+     * @return the current 32-bit code point, or DONE
+     */
+    public int next(int options) {
+        int c = DONE;
+        isEscaped = false;
+
+        for (;;) {
+            c = _current();
+            _advance(UTF16.getCharCount(c));
+
+            if (c == SymbolTable.SYMBOL_REF && buf == null &&
+                (options & PARSE_VARIABLES) != 0 && sym != null) {
+                String name = sym.parseReference(text, pos, text.length());
+                // If name == null there was an isolated SYMBOL_REF;
+                // return it.  Caller must be prepared for this.
+                if (name == null) {
+                    break;
+                }
+                bufPos = 0;
+                buf = sym.lookup(name);
+                if (buf == null) {
+                    throw new IllegalArgumentException(
+                                "Undefined variable: " + name);
+                }
+                // Handle empty variable value
+                if (buf.length == 0) {
+                    buf = null;
+                }
+                continue;
+            }
+
+            if ((options & SKIP_WHITESPACE) != 0 &&
+                UCharacterProperty.isRuleWhiteSpace(c)) {
+                continue;
+            }
+
+            if (c == '\\' && (options & PARSE_ESCAPES) != 0) {
+                int offset[] = new int[] { 0 };
+                c = Utility.unescapeAt(lookahead(), offset);
+                jumpahead(offset[0]);
+                isEscaped = true;
+                if (c < 0) {
+                    throw new IllegalArgumentException("Invalid escape");
+                }
+            }
+
+            break;
+        }
+
+        return c;
+    }
+
+    /**
+     * Returns true if the last character returned by next() was
+     * escaped.  This will only be the case if the option passed in to
+     * next() included PARSE_ESCAPED and the next character was an
+     * escape sequence.
+     */
+    public boolean isEscaped() {
+        return isEscaped;
+    }
+
+    /**
+     * Returns true if this iterator is currently within a variable expansion.
+     */
+    public boolean inVariable() {
+        return buf != null;
+    }
+
+    /**
+     * Returns an object which, when later passed to setPos(), will
+     * restore this iterator's position.  Usage idiom:
+     *
+     * RuleCharacterIterator iterator = ...;
+     * Object pos = iterator.getPos(null); // allocate position object
+     * for (;;) {
+     *   pos = iterator.getPos(pos); // reuse position object
+     *   int c = iterator.next(...);
+     *   ...
+     * }
+     * iterator.setPos(pos);
+     *
+     * @param p a position object previously returned by getPos(),
+     * or null.  If not null, it will be updated and returned.  If
+     * null, a new position object will be allocated and returned.
+     * @return a position object which may be passed to setPos(),
+     * either `p,' or if `p' == null, a newly-allocated object
+     */
+    public Object getPos(Object p) {
+        if (p == null) {
+            return new Object[] {buf, new int[] {pos.getIndex(), bufPos}};
+        }
+        Object[] a = (Object[]) p;
+        a[0] = buf;
+        int[] v = (int[]) a[1];
+        v[0] = pos.getIndex();
+        v[1] = bufPos;
+        return p;
+    }
+
+    /**
+     * Restores this iterator to the position it had when getPos()
+     * returned the given object.
+     * @param p a position object previously returned by getPos()
+     */
+    public void setPos(Object p) {
+        Object[] a = (Object[]) p;
+        buf = (char[]) a[0];
+        int[] v = (int[]) a[1];
+        pos.setIndex(v[0]);
+        bufPos = v[1];
+    }
+
+    /**
+     * Skips ahead past any ignored characters, as indicated by the given
+     * options.  This is useful in conjunction with the lookahead() method.
+     *
+     * Currently, this only has an effect for SKIP_WHITESPACE.
+     * @param options one or more of the following options, bitwise-OR-ed
+     * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
+     */
+    public void skipIgnored(int options) {
+        if ((options & SKIP_WHITESPACE) != 0) {
+            for (;;) {
+                int a = _current();
+                if (!UCharacterProperty.isRuleWhiteSpace(a)) break;
+                _advance(UTF16.getCharCount(a));
+            }
+        }
+    }
+
+    /**
+     * Returns a string containing the remainder of the characters to be
+     * returned by this iterator, without any option processing.  If the
+     * iterator is currently within a variable expansion, this will only
+     * extend to the end of the variable expansion.  This method is provided
+     * so that iterators may interoperate with string-based APIs.  The typical
+     * sequence of calls is to call skipIgnored(), then call lookahead(), then
+     * parse the string returned by lookahead(), then call jumpahead() to
+     * resynchronize the iterator.
+     * @return a string containing the characters to be returned by future
+     * calls to next()
+     */
+    public String lookahead() {
+        if (buf != null) {
+            return new String(buf, bufPos, buf.length - bufPos);
+        } else {
+            return text.substring(pos.getIndex());
+        }
+    }
+
+    /**
+     * Advances the position by the given number of 16-bit code units.
+     * This is useful in conjunction with the lookahead() method.
+     * @param count the number of 16-bit code units to jump over
+     */
+    public void jumpahead(int count) {
+        if (count < 0) {
+            throw new IllegalArgumentException();
+        }
+        if (buf != null) {
+            bufPos += count;
+            if (bufPos > buf.length) {
+                throw new IllegalArgumentException();
+            }
+            if (bufPos == buf.length) {
+                buf = null;
+            }
+        } else {
+            int i = pos.getIndex() + count;
+            pos.setIndex(i);
+            if (i > text.length()) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Returns a string representation of this object, consisting of the
+     * characters being iterated, with a '|' marking the current position.
+     * Position within an expanded variable is <em>not</em> indicated.
+     * @return a string representation of this object
+     */
+    public String toString() {
+        int b = pos.getIndex();
+        return text.substring(0, b) + '|' + text.substring(b);
+    }
+
+    /**
+     * Returns the current 32-bit code point without parsing escapes, parsing
+     * variables, or skipping whitespace.
+     * @return the current 32-bit code point
+     */
+    private int _current() {
+        if (buf != null) {
+            return UTF16.charAt(buf, 0, buf.length, bufPos);
+        } else {
+            int i = pos.getIndex();
+            return (i < text.length()) ? UTF16.charAt(text, i) : DONE;
+        }
+    }
+    
+    /**
+     * Advances the position by the given amount.
+     * @param count the number of 16-bit code units to advance past
+     */
+    private void _advance(int count) {
+        if (buf != null) {
+            bufPos += count;
+            if (bufPos == buf.length) {
+                buf = null;
+            }
+        } else {
+            pos.setIndex(pos.getIndex() + count);
+            if (pos.getIndex() > text.length()) {
+                pos.setIndex(text.length());
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/SimpleCache.java b/src/com/ibm/icu/impl/SimpleCache.java
new file mode 100644
index 0000000..156ec75
--- /dev/null
+++ b/src/com/ibm/icu/impl/SimpleCache.java
@@ -0,0 +1,73 @@
+/*
+ ****************************************************************************
+ * Copyright (c) 2007-2008 International Business Machines Corporation and  *
+ * others.  All rights reserved.                                            *
+ ****************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SimpleCache implements ICUCache {
+    private static final int DEFAULT_CAPACITY = 16;
+
+    private Reference cacheRef = null;
+    private int type = ICUCache.SOFT;
+    private int capacity = DEFAULT_CAPACITY;
+
+    public SimpleCache() {
+    }
+
+    public SimpleCache(int cacheType) {
+        this(cacheType, DEFAULT_CAPACITY);
+    }
+
+    public SimpleCache(int cacheType, int initialCapacity) {
+        if (cacheType == ICUCache.WEAK) {
+            type = cacheType;
+        }
+        if (initialCapacity > 0) {
+            capacity = initialCapacity;
+        }
+    }
+
+    public Object get(Object key) {
+        Reference ref = cacheRef;
+        if (ref != null) {
+            Map map = (Map)ref.get();
+            if (map != null) {
+                return map.get(key);
+            }
+        }
+        return null;
+    }
+
+    public void put(Object key, Object value) {
+        Reference ref = cacheRef;
+        Map map = null;
+        if (ref != null) {
+            map = (Map)ref.get();
+        }
+        if (map == null) {
+            map = Collections.synchronizedMap(new HashMap(capacity));
+            if (type == ICUCache.WEAK) {
+                ref = new WeakReference(map);
+            } else {
+                ref = new SoftReference(map);
+            }
+            cacheRef = ref;
+        }
+        map.put(key, value);
+    }
+
+    public void clear() {
+        cacheRef = null;
+    }
+
+}
diff --git a/src/com/ibm/icu/impl/SortedSetRelation.java b/src/com/ibm/icu/impl/SortedSetRelation.java
new file mode 100644
index 0000000..1e262e9
--- /dev/null
+++ b/src/com/ibm/icu/impl/SortedSetRelation.java
@@ -0,0 +1,180 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: M. Davis
+* Created: December 2002 (moved from UnicodeSet)
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.util.SortedSet;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+/**
+ * Computationally efficient determination of the relationship between
+ * two SortedSets.
+ */
+public class SortedSetRelation {
+
+    /**
+     * The relationship between two sets A and B can be determined by looking at:
+     * A - B
+     * A & B (intersection)
+     * B - A
+     * These are represented by a set of bits.
+     * Bit 2 is true if A - B is not empty
+     * Bit 1 is true if A & B is not empty
+     * BIT 0 is true if B - A is not empty
+     */
+    public static final int
+        A_NOT_B = 4,
+        A_AND_B = 2,
+        B_NOT_A = 1;
+    
+    /**
+     * There are 8 combinations of the relationship bits. These correspond to
+     * the filters (combinations of allowed bits) in hasRelation. They also
+     * correspond to the modification functions, listed in comments.
+     */
+    public static final int 
+       ANY =            A_NOT_B |   A_AND_B |   B_NOT_A,    // union,           addAll
+       CONTAINS =       A_NOT_B |   A_AND_B,                // A                (unnecessary)
+       DISJOINT =       A_NOT_B |               B_NOT_A,    // A xor B,         missing Java function
+       ISCONTAINED =                A_AND_B |   B_NOT_A,    // B                (unnecessary)
+       NO_B =           A_NOT_B,                            // A setDiff B,     removeAll
+       EQUALS =                     A_AND_B,                // A intersect B,   retainAll
+       NO_A =                                   B_NOT_A,    // B setDiff A,     removeAll
+       NONE =           0,                                  // null             (unnecessary)
+       
+       ADDALL = ANY,                // union,           addAll
+       A = CONTAINS,                // A                (unnecessary)
+       COMPLEMENTALL = DISJOINT,    // A xor B,         missing Java function
+       B = ISCONTAINED,             // B                (unnecessary)
+       REMOVEALL = NO_B,            // A setDiff B,     removeAll
+       RETAINALL = EQUALS,          // A intersect B,   retainAll
+       B_REMOVEALL = NO_A;          // B setDiff A,     removeAll
+       
+  
+    /**
+     * Utility that could be on SortedSet. Faster implementation than
+     * what is in Java for doing contains, equals, etc.
+     * @param a first set
+     * @param allow filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return whether the filter relationship is true or not.
+     */    
+    public static boolean hasRelation(SortedSet a, int allow, SortedSet b) {
+        if (allow < NONE || allow > ANY) {
+            throw new IllegalArgumentException("Relation " + allow + " out of range");
+        }
+        
+        // extract filter conditions
+        // these are the ALLOWED conditions Set
+        
+        boolean anb = (allow & A_NOT_B) != 0;
+        boolean ab = (allow & A_AND_B) != 0;
+        boolean bna = (allow & B_NOT_A) != 0;
+        
+        // quick check on sizes
+        switch(allow) {
+            case CONTAINS: if (a.size() < b.size()) return false; break;
+            case ISCONTAINED: if (a.size() > b.size()) return false; break;
+            case EQUALS: if (a.size() != b.size()) return false; break;
+        }
+        
+        // check for null sets
+        if (a.size() == 0) {
+            if (b.size() == 0) return true;
+            return bna;
+        } else if (b.size() == 0) {
+            return anb;
+        }
+        
+        // pick up first strings, and start comparing
+        Iterator ait = a.iterator();
+        Iterator bit = b.iterator();
+        
+        Comparable aa = (Comparable) ait.next();
+        Comparable bb = (Comparable) bit.next();
+        
+        while (true) {
+            int comp = aa.compareTo(bb);
+            if (comp == 0) {
+                if (!ab) return false;
+                if (!ait.hasNext()) {
+                    if (!bit.hasNext()) return true;
+                    return bna;
+                } else if (!bit.hasNext()) {
+                    return anb;
+                }
+                aa = (Comparable) ait.next();
+                bb = (Comparable) bit.next();
+            } else if (comp < 0) {
+                if (!anb) return false;
+                if (!ait.hasNext()) {
+                    return bna;
+                }
+                aa = (Comparable) ait.next(); 
+            } else  {
+                if (!bna) return false;
+                if (!bit.hasNext()) {
+                    return anb;
+                }
+                bb = (Comparable) bit.next();
+            }
+        }
+    }
+    
+    /**
+     * Utility that could be on SortedSet. Allows faster implementation than
+     * what is in Java for doing addAll, removeAll, retainAll, (complementAll).
+     * @param a first set
+     * @param relation the relation filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return the new set
+     */    
+    public static SortedSet doOperation(SortedSet a, int relation, SortedSet b) {
+        // TODO: optimize this as above
+        TreeSet temp;
+        switch (relation) {
+            case ADDALL:
+                a.addAll(b); 
+                return a;
+            case A:
+                return a; // no action
+            case B:
+                a.clear(); 
+                a.addAll(b); 
+                return a;
+            case REMOVEALL: 
+                a.removeAll(b);
+                return a;
+            case RETAINALL: 
+                a.retainAll(b);
+                return a;
+            // the following is the only case not really supported by Java
+            // although all could be optimized
+            case COMPLEMENTALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.removeAll(b);
+                a.addAll(temp);
+                return a;
+            case B_REMOVEALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.clear();
+                a.addAll(temp);
+                return a;
+            case NONE:
+                a.clear();
+                return a;
+            default: 
+                throw new IllegalArgumentException("Relation " + relation + " out of range");
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/impl/StringPrepDataReader.java b/src/com/ibm/icu/impl/StringPrepDataReader.java
new file mode 100644
index 0000000..4634278
--- /dev/null
+++ b/src/com/ibm/icu/impl/StringPrepDataReader.java
@@ -0,0 +1,100 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ *
+ * Created on May 2, 2003
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package com.ibm.icu.impl;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public final class StringPrepDataReader implements ICUBinary.Authenticate {
+    private final static boolean debug = ICUDebug.enabled("NormalizerDataReader");
+    
+   /**
+    * <p>private constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    public StringPrepDataReader(InputStream inputStream) 
+                                        throws IOException{
+        if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    public void read(byte[] idnaBytes,
+                        char[] mappingTable) 
+                        throws IOException{
+
+        //Read the bytes that make up the idnaTrie  
+        dataInputStream.readFully(idnaBytes);
+        
+        //Read the extra data
+        for(int i=0;i<mappingTable.length;i++){
+            mappingTable[i]=dataInputStream.readChar();
+        }
+    }
+    
+    public byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    
+    public boolean isDataVersionAcceptable(byte version[]){
+        return version[0] == DATA_FORMAT_VERSION[0] 
+               && version[2] == DATA_FORMAT_VERSION[2] 
+               && version[3] == DATA_FORMAT_VERSION[3];
+    }
+    public int[] readIndexes(int length)throws IOException{
+        int[] indexes = new int[length];
+        //Read the indexes
+        for (int i = 0; i <length ; i++) {
+             indexes[i] = dataInputStream.readInt();
+        }
+        return indexes;
+    } 
+    
+    public byte[] getUnicodeVersion(){
+        return unicodeVersion;
+    }
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    private byte[] unicodeVersion;                             
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    ///* dataFormat="SPRP" 0x53, 0x50, 0x52, 0x50  */ 
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x53, (byte)0x50, 
+                                                    (byte)0x52, (byte)0x50};
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x3, (byte)0x2, 
+                                                        (byte)0x5, (byte)0x2};
+    
+}
diff --git a/src/com/ibm/icu/impl/StringUCharacterIterator.java b/src/com/ibm/icu/impl/StringUCharacterIterator.java
new file mode 100644
index 0000000..9fa44a8
--- /dev/null
+++ b/src/com/ibm/icu/impl/StringUCharacterIterator.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * Used by Collation. UCharacterIterator on Strings. Can't use 
+ * ReplaceableUCharacterIterator because it is not easy to do a fast setText. 
+ * @author synwee
+ */
+// TODO: Investivate if setText is a feature required by users so that we can 
+// move this method to the base class!
+public final class StringUCharacterIterator extends UCharacterIterator 
+{
+
+    // public constructor ------------------------------------------------------
+    
+    /**
+     * Public constructor
+     * @param str text which the iterator will be based on
+     */
+    public StringUCharacterIterator(String str)
+    {
+        if (str == null) {
+            throw new IllegalArgumentException();
+        }
+        m_text_ = str;
+        m_currentIndex_ = 0;
+    }
+    
+    /**
+     * Public default constructor
+     */
+    public StringUCharacterIterator()
+    {
+        m_text_ = "";
+        m_currentIndex_ = 0;
+    }
+    
+    // public methods ----------------------------------------------------------
+    
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>String</code>object
+     * @return copy of this iterator
+     */
+    ///CLOVER:OFF
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+    ///CLOVER:ON
+    /**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public int current()
+    {
+        if (m_currentIndex_ < m_text_.length()) {
+            return m_text_.charAt(m_currentIndex_);
+        }
+        return DONE;
+    }
+    
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public int getLength()
+    {
+        return m_text_.length();
+    }
+    
+    /**
+     * Gets the current currentIndex in text.
+     * @return current currentIndex in text.
+     */
+    public int getIndex()
+    {
+        return m_currentIndex_;
+    }
+        
+    /**
+     * Returns next UTF16 character and increments the iterator's currentIndex 
+     * by 1. 
+     * If the resulting currentIndex is greater or equal to the text length, 
+     * the currentIndex is reset to the text length and a value of DONE is 
+     * returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is 
+     *         off the end of the text range.
+     */
+    public int next()
+    {
+        if (m_currentIndex_ < m_text_.length()) 
+        {
+            return m_text_.charAt(m_currentIndex_ ++);
+        }
+        return DONE;
+    }
+    
+                
+    /**
+     * Returns previous UTF16 character and decrements the iterator's 
+     * currentIndex by 1. 
+     * If the resulting currentIndex is less than 0, the currentIndex is reset 
+     * to 0 and a value of DONE is returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is 
+     *         off the start of the text range.
+     */
+    public int previous()
+    {
+        if (m_currentIndex_ > 0) {
+            return m_text_.charAt(-- m_currentIndex_);
+        }
+        return DONE;
+    }
+
+    /**
+     * <p>Sets the currentIndex to the specified currentIndex in the text and 
+     * returns that single UTF16 character at currentIndex. 
+     * This assumes the text is stored as 16-bit code units.</p>
+     * @param currentIndex the currentIndex within the text. 
+     * @exception IndexOutOfBoundsException is thrown if an invalid currentIndex 
+     *            is supplied. i.e. currentIndex is out of bounds.
+     */
+    public void setIndex(int currentIndex) throws IndexOutOfBoundsException
+    {
+        if (currentIndex < 0 || currentIndex > m_text_.length()) {
+            throw new IndexOutOfBoundsException();
+        }
+        m_currentIndex_ = currentIndex;
+    }
+    
+    /**
+     * Fills the buffer with the underlying text storage of the iterator
+     * If the buffer capacity is not enough a exception is thrown. The capacity
+     * of the fill in buffer should at least be equal to length of text in the 
+     * iterator obtained by calling <code>getLength()</code).
+     * <b>Usage:</b>
+     * 
+     * <code>
+     * <pre>
+     *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
+     *         char[] buf = new char[iter.getLength()];
+     *         iter.getText(buf);
+     *         
+     *         OR
+     *         char[] buf= new char[1];
+     *         int len = 0;
+     *         for(;;){
+     *             try{
+     *                 len = iter.getText(buf);
+     *                 break;
+     *             }catch(IndexOutOfBoundsException e){
+     *                 buf = new char[iter.getLength()];
+     *             }
+     *         }
+     * </pre>
+     * </code>
+     *             
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @param offset the position within the array to start putting the data.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBoundsException exception if there is not enough
+     *            room after offset in the array, or if offset &lt; 0.
+     */
+    ///CLOVER:OFF
+    public int getText(char[] fillIn, int offset)
+    {
+        int length = m_text_.length();
+        if (offset < 0 || offset + length > fillIn.length) {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+        m_text_.getChars(0, length, fillIn, offset);
+        return length;
+    }
+    ///CLOVER:ON
+    /**
+     * Convenience method for returning the underlying text storage as as
+     * string
+     * @return the underlying text storage in the iterator as a string
+     */
+    public String getText() 
+    {
+        return m_text_;
+    }       
+    
+    /**
+     * Reset this iterator to point to a new string. This method is used by 
+     * other classes that want to avoid allocating new 
+     * ReplaceableCharacterIterator objects every time their setText method
+     * is called.
+     * @param text The String to be iterated over 
+     */
+    public void setText(String text) 
+    {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        m_text_ = text;
+        m_currentIndex_ = 0;
+    }
+        
+    // private data members ----------------------------------------------------
+    
+    /**
+     * Text string object
+     */
+    private String m_text_;
+    /**
+     * Current currentIndex
+     */
+    private int m_currentIndex_;
+
+}
diff --git a/src/com/ibm/icu/impl/TextTrieMap.java b/src/com/ibm/icu/impl/TextTrieMap.java
new file mode 100644
index 0000000..1d6ce47
--- /dev/null
+++ b/src/com/ibm/icu/impl/TextTrieMap.java
@@ -0,0 +1,275 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * *****************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * TextTrieMap is a trie implementation for supporting
+ * fast prefix match for the key.
+ */
+public class TextTrieMap {
+    /**
+     * Constructs a TextTrieMap object.
+     * 
+     * @param ignoreCase true to use case insensitive match
+     */
+    public TextTrieMap(boolean ignoreCase) {
+        this.ignoreCase = ignoreCase;
+    }
+
+    /**
+     * Adds the text key and its associated object in this object.
+     * 
+     * @param text The text.
+     * @param o The object associated with the text.
+     */
+    public synchronized void put(String text, Object o) {
+        CharacterNode node = root;
+        for (int i = 0; i < text.length(); i++) {
+            int ch = UTF16.charAt(text, i);
+            node = node.addChildNode(ch);
+            if (UTF16.getCharCount(ch) == 2) {
+                i++;
+            }
+        }
+        node.addObject(o);
+    }
+
+    /**
+     * Gets an iterator of the objects associated with the
+     * longest prefix matching string key.
+     * 
+     * @param text The text to be matched with prefixes.
+     * @return An iterator of the objects associated with
+     * the longest prefix matching matching key, or null
+     * if no matching entry is found.
+     */
+    public Iterator get(String text) {
+        return get(text, 0);
+    }
+
+    /**
+     * Gets an iterator of the objects associated with the
+     * longest prefix matching string key starting at the 
+     * specified position.
+     * 
+     * @param text The text to be matched with prefixes.
+     * @param start The start index of of the text
+     * @return An iterator of the objects associated with the
+     * longest prefix matching matching key, or null if no 
+     * matching entry is found.
+     */
+    public Iterator get(String text, int start) {
+        LongestMatchHandler handler = new LongestMatchHandler();
+        find(text, start, handler);
+        return handler.getMatches();
+    }
+
+    public void find(String text, ResultHandler handler) {
+        find(text, 0, handler);
+    }
+    
+    public void find(String text, int start, ResultHandler handler) {
+        find(root, text, start, start, handler);
+    }
+
+    /*
+     * Find an iterator of the objects associated with the
+     * longest prefix matching string key under the specified node.
+     * 
+     * @param node The character node in this trie.
+     * @param text The text to be matched with prefixes.
+     * @param start The start index within the text.
+     * @param index The current index within the text.
+     * @param handler The result handler, ResultHandler#handlePrefixMatch
+     * is called when any prefix match is found.
+     */
+    private synchronized void find(CharacterNode node, String text,
+            int start, int index, ResultHandler handler) {
+        Iterator itr = node.iterator();
+        if (itr != null) {
+            if (!handler.handlePrefixMatch(index - start, itr)) {
+                return;
+            }
+        }
+        if (index < text.length()) {
+            List childNodes = node.getChildNodes();
+            if (childNodes == null) {
+                return;
+            }
+            int ch = UTF16.charAt(text, index);
+            int chLen = UTF16.getCharCount(ch);
+            for (int i = 0; i < childNodes.size(); i++) {
+                CharacterNode child = (CharacterNode)childNodes.get(i);
+                if (compare(ch, child.getCharacter())) {
+                    find(child, text, start, index + chLen, handler);
+                    break;
+                }
+            }
+        }
+    }
+    
+    /**
+     * A private method used for comparing two characters.
+     * 
+     * @param ch1 The first character.
+     * @param ch2 The second character.
+     * @return true if the first character matches the second.
+     */
+    private boolean compare(int ch1, int ch2) {
+        if (ch1 == ch2) {
+            return true;
+        }
+        else if (ignoreCase) {
+            if (UCharacter.toLowerCase(ch1) == UCharacter.toLowerCase(ch2)) {
+                return true;
+            }
+            else if (UCharacter.toUpperCase(ch1) == UCharacter.toUpperCase(ch2)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // The root node of this trie
+    private CharacterNode root = new CharacterNode(0);
+
+    // Character matching option
+    boolean ignoreCase;
+
+    /**
+     * Inner class representing a character node in the trie.
+     */
+    private class CharacterNode {
+        int character;
+        List children;
+        List objlist;
+
+        /**
+         * Constructs a node for the character.
+         * 
+         * @param ch The character associated with this node.
+         */
+        public CharacterNode(int ch) {
+            character = ch;
+        }
+
+        /**
+         * Gets the character associated with this node.
+         * 
+         * @return The character
+         */
+        public int getCharacter() {
+            return character;
+        }
+
+        /**
+         * Adds the object to the node.
+         *  
+         * @param obj The object set in the leaf node.
+         */
+        public void addObject(Object obj) {
+            if (objlist == null) {
+                objlist = new LinkedList();
+            }
+            objlist.add(obj);
+        }
+
+        /**
+         * Gets an iterator of the objects associated with
+         * the leaf node.
+         * 
+         * @return The iterator or null if no objects are
+         * associated with this node.
+         */
+        public Iterator iterator() {
+            if (objlist == null) {
+                return null;
+            }
+            return objlist.iterator();
+        }
+
+        /**
+         * Adds a child node for the character under this character
+         * node in the trie.  When the matching child node already
+         * exists, the reference of the existing child node is
+         * returned.
+         * 
+         * @param ch The character associated with a child node.
+         * @return The child node.
+         */
+        public CharacterNode addChildNode(int ch) {
+            if (children == null) {
+                children = new ArrayList();
+                CharacterNode newNode = new CharacterNode(ch);
+                children.add(newNode);
+                return newNode;
+            }
+            CharacterNode node = null;
+            for (int i = 0; i < children.size(); i++) {
+                CharacterNode cur = (CharacterNode)children.get(i);
+                if (compare(ch, cur.getCharacter())) {
+                    node = cur;
+                    break;
+                }               
+            }
+            if (node == null) {
+                node = new CharacterNode(ch);
+                children.add(node);
+            }
+            return node;
+        }
+
+        /**
+         * Gets the list of child nodes under this node.
+         * 
+         * @return The list of child nodes.
+         */
+        public List getChildNodes() {
+            return children;
+        }
+    }
+
+    /**
+     * Callback handler for processing prefix matches used by
+     * find method.
+     */
+    public interface ResultHandler {
+        /**
+         * Handles a prefix key match
+         * 
+         * @param matchLength Matched key's length
+         * @param values An iterator of the objects associated with the matched key
+         * @return Return true to continue the search in the trie, false to quit.
+         */
+        public boolean handlePrefixMatch(int matchLength, Iterator values);
+    }
+
+    private static class LongestMatchHandler implements ResultHandler {
+        private Iterator matches = null;
+        private int length = 0;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (matchLength > length) {
+                length = matchLength;
+                matches = values;
+            }
+            return true;
+        }
+
+        public Iterator getMatches() {
+            return matches;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/TimeZoneAdapter.java b/src/com/ibm/icu/impl/TimeZoneAdapter.java
new file mode 100644
index 0000000..bfe9812
--- /dev/null
+++ b/src/com/ibm/icu/impl/TimeZoneAdapter.java
@@ -0,0 +1,146 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2003-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: October 2 2003
+ * Since: ICU 2.8
+ **********************************************************************
+ */
+
+package com.ibm.icu.impl;
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+
+/**
+ * <code>TimeZoneAdapter</code> wraps a com.ibm.icu.util.TimeZone
+ * subclass and inherits from java.util.TimeZone.
+ * Without this class, we would need to 'port' java.util.Date to
+ * com.ibm.icu.util as well, so that Date could interoperate properly
+ * with the com.ibm.icu.util TimeZone and Calendar classes.  With this
+ * class, we can use java.util.Date together with com.ibm.icu.util
+ * classes.
+ *
+ * @see com.ibm.icu.util.TimeZone#setDefault
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public class TimeZoneAdapter extends java.util.TimeZone {
+ 
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -2040072218820018557L;
+    
+    /**
+     * The contained com.ibm.icu.util.TimeZone object.  Must not be null.
+     * We delegate all methods to this object.
+     */
+    private TimeZone zone;
+    
+    /**
+     * Given a java.util.TimeZone, wrap it in the appropriate adapter
+     * subclass of com.ibm.icu.util.TimeZone and return the adapter.
+     */
+    public static java.util.TimeZone wrap(com.ibm.icu.util.TimeZone tz) {
+        return new TimeZoneAdapter(tz);
+    }
+
+    /**
+     * Return the java.util.TimeZone wrapped by this object.
+     */
+    public com.ibm.icu.util.TimeZone unwrap() {
+        return zone;
+    }
+
+    /**
+     * Constructs an adapter for a com.ibm.icu.util.TimeZone object.
+     */
+    public TimeZoneAdapter(TimeZone zone) {
+        this.zone = zone;
+        super.setID(zone.getID());
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public void setID(String ID) {
+        super.setID(ID);
+        zone.setID(ID);
+    }    
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean hasSameRules(java.util.TimeZone other) {
+        return other instanceof TimeZoneAdapter &&
+            zone.hasSameRules(((TimeZoneAdapter)other).zone);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+                         int millis) {
+        return zone.getOffset(era, year, month, day, dayOfWeek, millis);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public int getRawOffset() {
+        return zone.getRawOffset();
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public void setRawOffset(int offsetMillis) {
+        zone.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean useDaylightTime() {
+        return zone.useDaylightTime();
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean inDaylightTime(Date date) {
+        return zone.inDaylightTime(date);
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public Object clone() {
+        return new TimeZoneAdapter((TimeZone)zone.clone());
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public synchronized int hashCode() {
+        return zone.hashCode();
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof TimeZoneAdapter) {
+            obj = ((TimeZoneAdapter) obj).zone;
+        }
+        return zone.equals(obj);
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @return  a string representation of this object.
+     */
+    public String toString() {
+        return "TimeZoneAdapter: " + zone.toString();
+    }
+}
diff --git a/src/com/ibm/icu/impl/Trie.java b/src/com/ibm/icu/impl/Trie.java
new file mode 100644
index 0000000..252d26c
--- /dev/null
+++ b/src/com/ibm/icu/impl/Trie.java
@@ -0,0 +1,459 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * <p>A trie is a kind of compressed, serializable table of values 
+ * associated with Unicode code points (0..0x10ffff).</p>
+ * <p>This class defines the basic structure of a trie and provides methods 
+ * to <b>retrieve the offsets to the actual data</b>.</p>
+ * <p>Data will be the form of an array of basic types, char or int.</p>
+ * <p>The actual data format will have to be specified by the user in the
+ * inner static interface com.ibm.icu.impl.Trie.DataManipulate.</p>
+ * <p>This trie implementation is optimized for getting offset while walking
+ * forward through a UTF-16 string.
+ * Therefore, the simplest and fastest access macros are the
+ * fromLead() and fromOffsetTrail() methods.
+ * The fromBMP() method are a little more complicated; they get offsets even
+ * for lead surrogate codepoints, while the fromLead() method get special
+ * "folded" offsets for lead surrogate code units if there is relevant data
+ * associated with them.
+ * From such a folded offsets, an offset needs to be extracted to supply
+ * to the fromOffsetTrail() methods.
+ * To handle such supplementary codepoints, some offset information are kept
+ * in the data.</p>
+ * <p>Methods in com.ibm.icu.impl.Trie.DataManipulate are called to retrieve 
+ * that offset from the folded value for the lead surrogate unit.</p>
+ * <p>For examples of use, see com.ibm.icu.impl.CharTrie or 
+ * com.ibm.icu.impl.IntTrie.</p>
+ * @author synwee
+ * @see com.ibm.icu.impl.CharTrie
+ * @see com.ibm.icu.impl.IntTrie
+ * @since release 2.1, Jan 01 2002
+ */
+public abstract class Trie
+{
+    // public class declaration ----------------------------------------
+    
+    /**
+    * Character data in com.ibm.impl.Trie have different user-specified format
+    * for different purposes.
+    * This interface specifies methods to be implemented in order for
+    * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+    * the data.
+    */
+    public static interface DataManipulate
+    {
+        /**
+        * Called by com.ibm.icu.impl.Trie to extract from a lead surrogate's 
+        * data
+        * the index array offset of the indexes for that lead surrogate.
+        * @param value data value for a surrogate from the trie, including the
+        *        folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        public int getFoldingOffset(int value); 
+    }
+
+    // default implementation
+    private static class DefaultGetFoldingOffset implements DataManipulate {
+        public int getFoldingOffset(int value) {
+            return value; 
+        }
+    }
+
+    // public methods --------------------------------------------------
+    
+    /**
+     * Determines if this trie has a linear latin 1 array
+     * @return true if this trie has a linear latin 1 array, false otherwise
+     */
+    public final boolean isLatin1Linear()
+    {
+        return m_isLatin1Linear_;
+    }
+    
+    /**
+     * Checks if the argument Trie has the same data as this Trie.
+     * Attributes are checked but not the index data.
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        if (other == this) {
+            return true;
+        }
+        if (!(other instanceof Trie)) {
+            return false;
+        }
+        Trie othertrie = (Trie)other;
+        return m_isLatin1Linear_ == othertrie.m_isLatin1Linear_
+               && m_options_ == othertrie.m_options_
+               && m_dataLength_ == othertrie.m_dataLength_
+               && Arrays.equals(m_index_, othertrie.m_index_);
+    }
+    ///CLOVER:ON
+    
+    /**
+     * Gets the serialized data file size of the Trie. This is used during 
+     * trie data reading for size checking purposes. 
+     * @return size size of serialized trie data file in terms of the number
+     *              of bytes
+     */
+    public int getSerializedDataSize()
+    {
+        // includes signature, option, dataoffset and datalength output
+        int result = (4 << 2);
+        result += (m_dataOffset_ << 1);
+        if (isCharTrie()) {
+            result += (m_dataLength_ << 1);
+        }
+        else if (isIntTrie()) {
+            result += (m_dataLength_ << 2);
+        }
+        return result;
+    }
+
+    // protected constructor -------------------------------------------
+
+    /**
+    * Trie constructor for CharTrie use.
+    * @param inputStream ICU data file input stream which contains the
+    *                        trie
+    * @param dataManipulate object containing the information to parse the 
+    *                       trie data
+    * @throws IOException thrown when input stream does not have the
+    *                        right header.
+    */
+    protected Trie(InputStream inputStream, 
+                   DataManipulate  dataManipulate) throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        // Magic number to authenticate the data.
+        int signature = input.readInt();
+        m_options_    = input.readInt();
+        
+        if (!checkHeader(signature)) {
+            throw new IllegalArgumentException("ICU data file error: Trie header authentication failed, please check if you have the most updated ICU data file");
+        }
+
+        if(dataManipulate != null) {
+            m_dataManipulate_ = dataManipulate;
+        } else {
+            m_dataManipulate_ = new DefaultGetFoldingOffset();
+        }
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_dataOffset_     = input.readInt();
+        m_dataLength_     = input.readInt();
+        unserialize(inputStream);
+    }
+    
+    /**
+    * Trie constructor
+    * @param index array to be used for index
+    * @param options used by the trie
+    * @param dataManipulate object containing the information to parse the 
+    *                       trie data
+    */
+    protected Trie(char index[], int options, DataManipulate dataManipulate)
+    {
+        m_options_ = options;
+        if(dataManipulate != null) {
+            m_dataManipulate_ = dataManipulate;
+        } else {
+            m_dataManipulate_ = new DefaultGetFoldingOffset();
+        }
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_index_ = index;
+        m_dataOffset_ = m_index_.length;
+    }
+
+
+    // protected data members ------------------------------------------
+
+    /**
+    * Lead surrogate code points' index displacement in the index array.
+    * 0x10000-0xd800=0x2800
+    * 0x2800 >> INDEX_STAGE_1_SHIFT_
+    */
+    protected static final int LEAD_INDEX_OFFSET_ = 0x2800 >> 5;
+    /**
+    * Shift size for shifting right the input index. 1..9
+    */
+    protected static final int INDEX_STAGE_1_SHIFT_ = 5;
+    /**
+    * Shift size for shifting left the index array values.
+    * Increases possible data size with 16-bit index values at the cost
+    * of compactability.
+    * This requires blocks of stage 2 data to be aligned by
+    * DATA_GRANULARITY.
+    * 0..INDEX_STAGE_1_SHIFT
+    */
+    protected static final int INDEX_STAGE_2_SHIFT_ = 2;
+    /**
+     * Number of data values in a stage 2 (data array) block.
+     */
+    protected static final int DATA_BLOCK_LENGTH=1<<INDEX_STAGE_1_SHIFT_;
+    /**
+    * Mask for getting the lower bits from the input index.
+    * DATA_BLOCK_LENGTH - 1.
+    */
+    protected static final int INDEX_STAGE_3_MASK_ = DATA_BLOCK_LENGTH - 1;
+    /** Number of bits of a trail surrogate that are used in index table lookups. */
+    protected static final int SURROGATE_BLOCK_BITS=10-INDEX_STAGE_1_SHIFT_;
+    /**
+     * Number of index (stage 1) entries per lead surrogate.
+     * Same as number of index entries for 1024 trail surrogates,
+     * ==0x400>>INDEX_STAGE_1_SHIFT_
+     */
+    protected static final int SURROGATE_BLOCK_COUNT=(1<<SURROGATE_BLOCK_BITS);
+    /** Length of the BMP portion of the index (stage 1) array. */
+    protected static final int BMP_INDEX_LENGTH=0x10000>>INDEX_STAGE_1_SHIFT_;
+    /**
+    * Surrogate mask to use when shifting offset to retrieve supplementary
+    * values
+    */
+    protected static final int SURROGATE_MASK_ = 0x3FF;                                              
+    /**
+    * Index or UTF16 characters
+    */
+    protected char m_index_[];
+    /**
+    * Internal TrieValue which handles the parsing of the data value.
+    * This class is to be implemented by the user
+    */
+    protected DataManipulate m_dataManipulate_;
+    /**
+    * Start index of the data portion of the trie. CharTrie combines 
+    * index and data into a char array, so this is used to indicate the 
+    * initial offset to the data portion.
+    * Note this index always points to the initial value.
+    */
+    protected int m_dataOffset_;
+    /**
+    * Length of the data array 
+    */
+    protected int m_dataLength_;
+     
+    // protected methods -----------------------------------------------
+
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected abstract int getSurrogateOffset(char lead, char trail);
+    
+    /**
+    * Gets the value at the argument index
+    * @param index value at index will be retrieved
+    * @return 32 bit value 
+    */
+    protected abstract int getValue(int index);
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected abstract int getInitialValue();
+    
+    /**
+    * Gets the offset to the data which the index ch after variable offset
+    * points to.
+    * Note for locating a non-supplementary character data offset, calling
+    * <p>
+    * getRawOffset(0, ch);
+    * </p>
+    * will do. Otherwise if it is a supplementary character formed by
+    * surrogates lead and trail. Then we would have to call getRawOffset()
+    * with getFoldingIndexOffset(). See getSurrogateOffset().
+    * @param offset index offset which ch is to start from
+    * @param ch index to be used after offset
+    * @return offset to the data
+    */
+    protected final int getRawOffset(int offset, char ch)
+    {
+        return (m_index_[offset + (ch >> INDEX_STAGE_1_SHIFT_)] 
+                << INDEX_STAGE_2_SHIFT_) 
+                + (ch & INDEX_STAGE_3_MASK_);
+    }
+    
+    /**
+    * Gets the offset to data which the BMP character points to
+    * Treats a lead surrogate as a normal code point.
+    * @param ch BMP character
+    * @return offset to data
+    */
+    protected final int getBMPOffset(char ch)
+    {
+        return (ch >= UTF16.LEAD_SURROGATE_MIN_VALUE 
+                && ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) 
+                ? getRawOffset(LEAD_INDEX_OFFSET_, ch)
+                : getRawOffset(0, ch); 
+                // using a getRawOffset(ch) makes no diff
+    }
+
+    /**
+    * Gets the offset to the data which this lead surrogate character points
+    * to.
+    * Data at the returned offset may contain folding offset information for
+    * the next trailing surrogate character.
+    * @param ch lead surrogate character
+    * @return offset to data
+    */
+    protected final int getLeadOffset(char ch)
+    {
+       return getRawOffset(0, ch);
+    }
+
+    /**
+    * Internal trie getter from a code point.
+    * Could be faster(?) but longer with
+    *   if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
+    * Gets the offset to data which the codepoint points to
+    * @param ch codepoint
+    * @return offset to data
+    */
+    protected final int getCodePointOffset(int ch)
+    {
+        // if ((ch >> 16) == 0) slower
+        if (ch < 0) {
+            return -1;
+        } else if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // fastpath for the part of the BMP below surrogates (D800) where getRawOffset() works
+            return getRawOffset(0, (char)ch);
+        } else if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
+            // BMP codepoint
+            return getBMPOffset((char)ch); 
+        } else if (ch <= UCharacter.MAX_VALUE) {
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return getSurrogateOffset(UTF16.getLeadSurrogate(ch), 
+                                      (char)(ch & SURROGATE_MASK_));
+        } else {
+            // return -1 if there is an error, in this case we return 
+            return -1;
+        }
+    }
+
+    /**
+    * <p>Parses the inputstream and creates the trie index with it.</p>
+    * <p>This is overwritten by the child classes.
+    * @param inputStream input stream containing the trie information
+    * @exception IOException thrown when data reading fails.
+    */
+    protected void unserialize(InputStream inputStream) throws IOException
+    {
+        //indexLength is a multiple of 1024 >> INDEX_STAGE_2_SHIFT_
+        m_index_              = new char[m_dataOffset_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataOffset_; i ++) {
+             m_index_[i] = input.readChar();
+        }
+    }
+
+    /**
+    * Determines if this is a 32 bit trie
+    * @return true if options specifies this is a 32 bit trie
+    */
+    protected final boolean isIntTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) != 0;
+    }
+
+    /**
+    * Determines if this is a 16 bit trie
+    * @return true if this is a 16 bit trie
+    */
+    protected final boolean isCharTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) == 0;
+    }
+
+    // private data members --------------------------------------------
+
+    //  struct UTrieHeader {
+    //      int32_t   signature;
+    //      int32_t   options  (a bit field)
+    //      int32_t   indexLength
+    //      int32_t   dataLength
+
+    /**
+    * Size of Trie header in bytes
+    */
+    protected static final int HEADER_LENGTH_ = 4 * 4;
+    /**
+    * Latin 1 option mask
+    */
+    protected static final int HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_ = 0x200;
+    /**
+    * Constant number to authenticate the byte block
+    */
+    protected static final int HEADER_SIGNATURE_ = 0x54726965;
+    /**
+    * Header option formatting
+    */
+    private static final int HEADER_OPTIONS_SHIFT_MASK_ = 0xF;
+    protected static final int HEADER_OPTIONS_INDEX_SHIFT_ = 4;
+    protected static final int HEADER_OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    
+    /**
+    * Flag indicator for Latin quick access data block
+    */
+    private boolean m_isLatin1Linear_;
+    
+    /**
+    * <p>Trie options field.</p>
+    * <p>options bit field:<br>
+    * 9  1 = Latin-1 data is stored linearly at data + DATA_BLOCK_LENGTH<br>
+    * 8  0 = 16-bit data, 1=32-bit data<br>
+    * 7..4  INDEX_STAGE_1_SHIFT   // 0..INDEX_STAGE_2_SHIFT<br>
+    * 3..0  INDEX_STAGE_2_SHIFT   // 1..9<br>
+    */
+    private int m_options_;
+    
+    // private methods ---------------------------------------------------
+    
+    /**
+    * Authenticates raw data header.
+    * Checking the header information, signature and options.
+    * @param signature This contains the options and type of a Trie
+    * @return true if the header is authenticated valid
+    */
+    private final boolean checkHeader(int signature)
+    {
+        // check the signature
+        // Trie in big-endian US-ASCII (0x54726965).
+        // Magic number to authenticate the data.
+        if (signature != HEADER_SIGNATURE_) {
+            return false;
+        }
+
+        if ((m_options_ & HEADER_OPTIONS_SHIFT_MASK_) != 
+                                                    INDEX_STAGE_1_SHIFT_ ||
+            ((m_options_ >> HEADER_OPTIONS_INDEX_SHIFT_) &
+                                                HEADER_OPTIONS_SHIFT_MASK_)
+                                                 != INDEX_STAGE_2_SHIFT_) {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/ibm/icu/impl/TrieBuilder.java b/src/com/ibm/icu/impl/TrieBuilder.java
new file mode 100644
index 0000000..311f71a
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieBuilder.java
@@ -0,0 +1,260 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import java.util.Arrays;
+
+/**
+ * Builder class to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @author             Syn Wee Quek
+ */
+public class TrieBuilder
+{
+    // public data member ----------------------------------------------
+        
+    /** 
+     * Number of data values in a stage 2 (data array) block. 2, 4, 8, .., 
+     * 0x200 
+     */
+    public static final int DATA_BLOCK_LENGTH = 1 << Trie.INDEX_STAGE_1_SHIFT_;
+    
+    // public class declaration ----------------------------------------
+    
+    /**
+     * Character data in com.ibm.impl.Trie have different user-specified format
+     * for different purposes.
+     * This interface specifies methods to be implemented in order for
+     * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+     * the data.
+     */
+    public static interface DataManipulate
+    {
+        /**
+         * Build-time trie callback function, used with serialize().
+         * This function calculates a lead surrogate's value including a 
+         * folding offset from the 1024 supplementary code points 
+         * [start..start+1024[ . 
+         * It is U+10000 <= start <= U+10fc00 and (start&0x3ff)==0.
+         * The folding offset is provided by the caller. 
+         * It is offset=UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT 
+         * with n=0..1023. 
+         * Instead of the offset itself, n can be stored in 10 bits - or fewer 
+         * if it can be assumed that few lead surrogates have associated data.
+         * The returned value must be
+         *  - not zero if and only if there is relevant data for the 
+         *                        corresponding 1024 supplementary code points
+         *  - such that UTrie.getFoldingOffset(UNewTrieGetFoldedValue(..., 
+         *                                                    offset))==offset
+         * @return a folded value, or 0 if there is no relevant data for the 
+         *         lead surrogate.
+         */
+        public int getFoldedValue(int start, int offset); 
+    }
+    
+    // public methods ----------------------------------------------------
+  
+    /**
+     * Checks if the character belongs to a zero block in the trie
+     * @param ch codepoint which data is to be retrieved
+     * @return true if ch is in the zero block
+     */
+    public boolean isInZeroBlock(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE 
+            || ch < UCharacter.MIN_VALUE) {
+            return true;
+        }
+    
+        return m_index_[ch >> SHIFT_] == 0;
+    }
+    
+    // package private method -----------------------------------------------
+    
+    // protected data member -----------------------------------------------
+          
+    /**
+     * Index values at build-time are 32 bits wide for easier processing.
+     * Bit 31 is set if the data block is used by multiple index values 
+     * (from setRange()).
+     */
+    protected int m_index_[];
+    protected int m_indexLength_;
+    protected int m_dataCapacity_; 
+    protected int m_dataLength_;
+    protected boolean m_isLatin1Linear_;
+    protected boolean m_isCompacted_;
+    /**
+     * Map of adjusted indexes, used in utrie_compact().
+     * Maps from original indexes to new ones.
+     */
+    protected int m_map_[];
+        
+    /**
+     * Shift size for shifting right the input index. 1..9 
+     */
+    protected static final int SHIFT_ = Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+     * Length of the index (stage 1) array before folding.
+     * Maximum number of Unicode code points (0x110000) shifted right by 
+     * SHIFT.
+     */
+    protected static final int MAX_INDEX_LENGTH_ = (0x110000 >> SHIFT_);
+    /** 
+     * Length of the BMP portion of the index (stage 1) array. 
+     */
+    protected static final int BMP_INDEX_LENGTH_ = 0x10000 >> SHIFT_;   
+    /**
+     * Number of index (stage 1) entries per lead surrogate.
+     * Same as number of indexe entries for 1024 trail surrogates,
+     * ==0x400>>UTRIE_SHIFT
+     * 10 - SHIFT == Number of bits of a trail surrogate that are used in 
+     *               index table lookups. 
+     */
+    protected static final int SURROGATE_BLOCK_COUNT_ = 1 << (10 - SHIFT_);
+    /**
+     * Mask for getting the lower bits from the input index.
+     * DATA_BLOCK_LENGTH - 1.
+     */
+    protected static final int MASK_ = Trie.INDEX_STAGE_3_MASK_;
+    /**
+     * Shift size for shifting left the index array values.
+     * Increases possible data size with 16-bit index values at the cost
+     * of compactability.
+     * This requires blocks of stage 2 data to be aligned by UTRIE_DATA_GRANULARITY.
+     * 0..UTRIE_SHIFT
+     */
+    protected static final int INDEX_SHIFT_ = Trie.INDEX_STAGE_2_SHIFT_;
+    /**
+     * Maximum length of the runtime data (stage 2) array.
+     * Limited by 16-bit index values that are left-shifted by INDEX_SHIFT_.
+     */
+    protected static final int MAX_DATA_LENGTH_ = (0x10000 << INDEX_SHIFT_);
+    /**
+     * Shifting to position the index value in options
+     */
+    protected static final int OPTIONS_INDEX_SHIFT_ = 4;
+    /** 
+     * If set, then the data (stage 2) array is 32 bits wide. 
+     */
+    protected static final int OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    /**
+     * If set, then Latin-1 data (for U+0000..U+00ff) is stored in the data 
+     * (stage 2) array as a simple, linear array at data + DATA_BLOCK_LENGTH.
+     */
+    protected static final int OPTIONS_LATIN1_IS_LINEAR_ = 0x200;
+    /** 
+     * The alignment size of a stage 2 data block. Also the granularity for 
+     * compaction. 
+     */
+    protected static final int DATA_GRANULARITY_ = 1 << INDEX_SHIFT_;
+    
+    // protected constructor ----------------------------------------------
+    
+    protected TrieBuilder()
+    {
+        m_index_ = new int[MAX_INDEX_LENGTH_];
+        m_map_ = new int[MAX_BUILD_TIME_DATA_LENGTH_ >> SHIFT_];
+        m_isLatin1Linear_ = false;
+        m_isCompacted_ = false;
+        m_indexLength_ = MAX_INDEX_LENGTH_;
+    }
+        
+    protected TrieBuilder(TrieBuilder table)
+    {
+        m_index_ = new int[MAX_INDEX_LENGTH_];
+        m_indexLength_ = table.m_indexLength_;
+        System.arraycopy(table.m_index_, 0, m_index_, 0, m_indexLength_);
+        m_dataCapacity_ = table.m_dataCapacity_;
+        m_dataLength_ = table.m_dataLength_;
+        m_map_ = new int[table.m_map_.length];
+        System.arraycopy(table.m_map_, 0, m_map_, 0, m_map_.length);
+        m_isLatin1Linear_ = table.m_isLatin1Linear_;
+        m_isCompacted_ = table.m_isCompacted_;
+    }
+        
+    // protected functions ------------------------------------------------
+
+    /**
+     * Compare two sections of an array for equality.
+     */
+    protected static final boolean equal_int(int[] array, int start1, int start2, int length) {
+        while(length>0 && array[start1]==array[start2]) {
+            ++start1;
+            ++start2;
+            --length;
+        }
+        return length==0;
+    }
+
+    /**
+     * Set a value in the trie index map to indicate which data block
+     * is referenced and which one is not.
+     * utrie_compact() will remove data blocks that are not used at all.
+     * Set
+     * - 0 if it is used
+     * - -1 if it is not used
+     */
+    protected void findUnusedBlocks() 
+    {
+        // fill the entire map with "not used" 
+        Arrays.fill(m_map_, 0xff);
+    
+        // mark each block that _is_ used with 0
+        for (int i = 0; i < m_indexLength_; ++ i) {
+            m_map_[Math.abs(m_index_[i]) >> SHIFT_] = 0;
+        }
+    
+        // never move the all-initial-value block 0
+        m_map_[0] = 0;
+    }
+    
+    /**
+     * Finds the same index block as the otherBlock
+     * @param index array
+     * @param indexLength size of index
+     * @param otherBlock
+     * @return same index block
+     */
+    protected static final int findSameIndexBlock(int index[], int indexLength,
+                                                  int otherBlock) 
+    {
+        for (int block = BMP_INDEX_LENGTH_; block < indexLength; 
+             block += SURROGATE_BLOCK_COUNT_) {
+            if(equal_int(index, block, otherBlock, SURROGATE_BLOCK_COUNT_)) {
+                return block;
+            }
+        }
+        return indexLength;
+    }
+    
+    // private data member ------------------------------------------------
+        
+    /**
+     * Maximum length of the build-time data (stage 2) array.
+     * The maximum length is 0x110000 + DATA_BLOCK_LENGTH + 0x400.
+     * (Number of Unicode code points + one all-initial-value block +
+     *  possible duplicate entries for 1024 lead surrogates.)
+     */
+    private static final int MAX_BUILD_TIME_DATA_LENGTH_ = 
+        0x110000 + DATA_BLOCK_LENGTH + 0x400;
+}
diff --git a/src/com/ibm/icu/impl/TrieIterator.java b/src/com/ibm/icu/impl/TrieIterator.java
new file mode 100644
index 0000000..d8fd18f
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieIterator.java
@@ -0,0 +1,531 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+ * <p>Class enabling iteration of the values in a Trie.</p>
+ * <p>Result of each iteration contains the interval of codepoints that have
+ * the same value type and the value type itself.</p>
+ * <p>The comparison of each codepoint value is done via extract(), which the
+ * default implementation is to return the value as it is.</p> 
+ * <p>Method extract() can be overwritten to perform manipulations on 
+ * codepoint values in order to perform specialized comparison.</p>
+ * <p>TrieIterator is designed to be a generic iterator for the CharTrie
+ * and the IntTrie, hence to accommodate both types of data, the return 
+ * result will be in terms of int (32 bit) values.</p>
+ * <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.</p>
+ * <p>Notes for porting utrie_enum from icu4c to icu4j:<br>
+ * Internally, icu4c's utrie_enum performs all iterations in its body. In Java
+ * sense, the caller will have to pass a object with a callback function 
+ * UTrieEnumRange(const void *context, UChar32 start, UChar32 limit, 
+ * uint32_t value) into utrie_enum. utrie_enum will then find ranges of 
+ * codepoints with the same value as determined by 
+ * UTrieEnumValue(const void *context, uint32_t value). for each range, 
+ * utrie_enum calls the callback function to perform a task. In this way,
+ * icu4c performs the iteration within utrie_enum.
+ * To follow the JDK model, icu4j is slightly different from icu4c.
+ * Instead of requesting the caller to implement an object for a callback.
+ * The caller will have to implement a subclass of TrieIterator, fleshing out
+ * the method extract(int) (equivalent to UTrieEnumValue). Independent of icu4j, 
+ * the caller will have to code his own iteration and flesh out the task 
+ * (equivalent to UTrieEnumRange) to be performed in the iteration loop.
+ * </p>
+ * <p>There are basically 3 usage scenarios for porting:</p>
+ * <p>1) UTrieEnumValue is the only implemented callback then just implement a 
+ * subclass of TrieIterator and override the extract(int) method. The 
+ * extract(int) method is analogus to UTrieEnumValue callback.
+ * </p>
+ * <p>2) UTrieEnumValue and UTrieEnumRange both are implemented then implement 
+ * a subclass of TrieIterator, override the extract method and iterate, e.g
+ * </p>
+ * <p>utrie_enum(&normTrie, _enumPropertyStartsValue, _enumPropertyStartsRange, 
+ *               set);<br>
+ * In Java :<br>
+ * <pre>
+ * class TrieIteratorImpl extends TrieIterator{
+ *     public TrieIteratorImpl(Trie data){
+ *         super(data);
+ *     }
+ *     public int extract(int value){
+ *         // port the implementation of _enumPropertyStartsValue here
+ *     }
+ * }
+ * .... 
+ * TrieIterator fcdIter  = new TrieIteratorImpl(fcdTrieImpl.fcdTrie);
+ * while(fcdIter.next(result)) {
+ *     // port the implementation of _enumPropertyStartsRange
+ * }
+ * </pre>
+ * </p>
+ * <p>3) UTrieEnumRange is the only implemented callback then just implement 
+ * the while loop, when utrie_enum is called
+ * <pre>
+ * // utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
+ * TrieIterator fcdIter  = new TrieIterator(fcdTrieImpl.fcdTrie);
+ * while(fcdIter.next(result)){
+ *     set.add(result.start);
+ * }
+ * </p>
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @see com.ibm.icu.lang.UCharacterTypeIterator
+ * @since release 2.1, Jan 17 2002
+ */
+public class TrieIterator implements RangeValueIterator
+
+{
+    // public constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param trie to be used
+    * @exception IllegalArgumentException throw when argument is null.
+    */
+    public TrieIterator(Trie trie)
+    {
+        if (trie == null) {
+            throw new IllegalArgumentException(
+                                          "Argument trie cannot be null");
+        }
+        m_trie_             = trie;
+        // synwee: check that extract belongs to the child class
+        m_initialValue_     = extract(m_trie_.getInitialValue());
+        reset();
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Returns true if we are not at the end of the iteration, false 
+    * otherwise.</p>
+    * <p>The next set of codepoints with the same value type will be 
+    * calculated during this call and returned in the arguement element.</p>
+    * @param element return result 
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @exception NoSuchElementException - if no more elements exist.
+    * @see com.ibm.icu.util.RangeValueIterator.Element
+    */
+    public final boolean next(Element element)
+    {
+        if (m_nextCodepoint_ > UCharacter.MAX_VALUE) {
+            return false;
+        }
+        if (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE &&
+            calculateNextBMPElement(element)) {
+            return true;
+        }    
+        calculateNextSupplementaryElement(element);
+        return true;
+    }
+     
+    /**
+    * Resets the iterator to the beginning of the iteration
+    */
+    public final void reset()
+    {
+        m_currentCodepoint_ = 0;
+        m_nextCodepoint_    = 0;
+        m_nextIndex_        = 0;
+        m_nextBlock_ = m_trie_.m_index_[0] << Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == 0) {
+            m_nextValue_ = m_initialValue_;
+        }
+        else {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_));
+        }
+        m_nextBlockIndex_ = 0;
+        m_nextTrailIndexOffset_ = TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_;
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by next() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    */
+    protected int extract(int value)
+    {
+        return value;
+    }
+    
+    // private methods ------------------------------------------------
+    
+    /**
+    * Set the result values
+    * @param element return result object
+    * @param start codepoint of range 
+    * @param limit (end + 1) codepoint of range
+    * @param value common value of range
+    */
+    private final void setResult(Element element, int start, int limit, 
+                                 int value)
+    {
+        element.start = start;
+        element.limit = limit;
+        element.value = value;
+    }
+    
+    /**
+    * Finding the next element.
+    * This method is called just before returning the result of 
+    * next().
+    * We always store the next element before it is requested.
+    * In the case that we have to continue calculations into the 
+    * supplementary planes, a false will be returned.
+    * @param element return result object
+    * @return true if the next range is found, false if we have to proceed to
+    *         the supplementary range.
+    */
+    private final boolean calculateNextBMPElement(Element element)
+    {
+        int currentBlock    = m_nextBlock_;
+        int currentValue    = m_nextValue_;
+        m_currentCodepoint_ = m_nextCodepoint_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        if (!checkBlockDetail(currentValue)) {
+            setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                      currentValue);
+            return true;
+        }
+        // synwee check that next block index == 0 here 
+        // enumerate BMP - the main loop enumerates data blocks
+        while (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE) {
+            m_nextIndex_ ++;
+            // because of the way the character is split to form the index
+            // the lead surrogate and trail surrogate can not be in the
+            // mid of a block
+            if (m_nextCodepoint_ == LEAD_SURROGATE_MIN_VALUE_) {
+                // skip lead surrogate code units,
+                // go to lead surrogate codepoints
+                m_nextIndex_ = BMP_INDEX_LENGTH_;
+            }
+            else if (m_nextCodepoint_ == TRAIL_SURROGATE_MIN_VALUE_) {
+                // go back to regular BMP code points
+                m_nextIndex_ = m_nextCodepoint_ >> Trie.INDEX_STAGE_1_SHIFT_;
+            }
+            
+            m_nextBlockIndex_ = 0;
+            if (!checkBlock(currentBlock, currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                return true;
+            }
+        }
+        m_nextCodepoint_ --;   // step one back since this value has not been
+        m_nextBlockIndex_ --;  // retrieved yet.
+        return false;
+    }
+
+    /**
+    * Finds the next supplementary element.
+    * For each entry in the trie, the value to be delivered is passed through
+    * extract().
+    * We always store the next element before it is requested.
+    * Called after calculateNextBMP() completes its round of BMP characters.
+    * There is a slight difference in the usage of m_currentCodepoint_
+    * here as compared to calculateNextBMP(). Though both represents the
+    * lower bound of the next element, in calculateNextBMP() it gets set
+    * at the start of any loop, where-else, in calculateNextSupplementary()
+    * since m_currentCodepoint_ already contains the lower bound of the
+    * next element (passed down from calculateNextBMP()), we keep it till 
+    * the end before resetting it to the new value.
+    * Note, if there are no more iterations, it will never get to here. 
+    * Blocked out by next().
+    * @param element return result object
+    */
+    private final void calculateNextSupplementaryElement(Element element)
+    {
+        int currentValue = m_nextValue_;
+        int currentBlock = m_nextBlock_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        
+        if (UTF16.getTrailSurrogate(m_nextCodepoint_) 
+                                        != UTF16.TRAIL_SURROGATE_MIN_VALUE) { 
+            // this piece is only called when we are in the middle of a lead
+            // surrogate block
+            if (!checkNullNextTrailIndex() && !checkBlockDetail(currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                m_currentCodepoint_ = m_nextCodepoint_;
+                return;
+            }
+            // we have cleared one block
+            m_nextIndex_ ++;
+            m_nextTrailIndexOffset_ ++;
+            if (!checkTrailBlock(currentBlock, currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                m_currentCodepoint_ = m_nextCodepoint_;
+                return;
+            }
+        }
+        int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+        // enumerate supplementary code points
+        while (nextLead < TRAIL_SURROGATE_MIN_VALUE_) {
+            // lead surrogate access
+            int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (leadBlock == m_trie_.m_dataOffset_) {
+                // no entries for a whole block of lead surrogates
+                if (currentValue != m_initialValue_) {
+                    m_nextValue_      = m_initialValue_;
+                    m_nextBlock_      = 0;
+                    m_nextBlockIndex_ = 0;
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+
+                nextLead += DATA_BLOCK_LENGTH_;
+                // number of total affected supplementary codepoints in one
+                // block
+                // this is not a simple addition of 
+                // DATA_BLOCK_SUPPLEMENTARY_LENGTH since we need to consider
+                // that we might have moved some of the codepoints
+                m_nextCodepoint_ = UCharacterProperty.getRawSupplementary(
+                                     (char)nextLead, 
+                                     (char)UTF16.TRAIL_SURROGATE_MIN_VALUE);
+                continue;
+            }
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+            // enumerate trail surrogates for this lead surrogate
+            m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+            if (m_nextIndex_ <= 0) {
+                // no data for this lead surrogate
+                if (currentValue != m_initialValue_) {
+                    m_nextValue_      = m_initialValue_;
+                    m_nextBlock_      = 0;
+                    m_nextBlockIndex_ = 0;
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+                m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_;
+            } else {
+                m_nextTrailIndexOffset_ = 0;
+                if (!checkTrailBlock(currentBlock, currentValue)) {
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+            }    
+            nextLead ++;
+         }
+
+         // deliver last range
+         setResult(element, m_currentCodepoint_, UCharacter.MAX_VALUE + 1, 
+                   currentValue);
+    }    
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * after the index m_nextBlockIndex_ that has the same value.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * But when returned with false, it will be the last codepoint whose
+    * value has been calculated.
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlockDetail(int currentValue)
+    {
+        while (m_nextBlockIndex_ < DATA_BLOCK_LENGTH_) {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_ + 
+                                                    m_nextBlockIndex_));
+            if (m_nextValue_ != currentValue) {
+                return false;
+            }
+            ++ m_nextBlockIndex_;
+            ++ m_nextCodepoint_;
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * that has the same value. 
+    * Will call checkBlockDetail() if highlevel check fails.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlock(int currentBlock, int currentValue) 
+    {
+        m_nextBlock_ = m_trie_.m_index_[m_nextIndex_] << 
+                                                  Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == currentBlock &&
+            (m_nextCodepoint_ - m_currentCodepoint_) >= DATA_BLOCK_LENGTH_) {
+            // the block is the same as the previous one, filled with 
+            // currentValue
+            m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else if (m_nextBlock_ == 0) {
+            // this is the all-initial-value block
+            if (currentValue != m_initialValue_) {
+                m_nextValue_      = m_initialValue_;
+                m_nextBlockIndex_ = 0;
+                return false;
+            }
+            m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else {
+            if (!checkBlockDetail(currentValue)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on multiple data blocks for a set of trail 
+    * surrogates to find codepoints in m_nextBlock_ that has the same value. 
+    * Will call checkBlock() for internal block checks.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkTrailBlock(int currentBlock,
+                                          int currentValue)
+    {
+        // enumerate code points for this lead surrogate
+        while (m_nextTrailIndexOffset_ < TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_) 
+        {
+            // if we ever reach here, we are at the start of a new block
+            m_nextBlockIndex_ = 0;
+            // copy of most of the body of the BMP loop
+            if (!checkBlock(currentBlock, currentValue)) {
+                return false;
+            }
+            m_nextTrailIndexOffset_ ++;
+            m_nextIndex_ ++;
+        }
+        return true;
+    }
+    
+    /**
+    * Checks if we are beginning at the start of a initial block.
+    * If we are then the rest of the codepoints in this initial block
+    * has the same values.
+    * We increment m_nextCodepoint_ and relevant data members if so.
+    * This is used only in for the supplementary codepoints because
+    * the offset to the trail indexes could be 0.
+    * @return true if we are at the start of a initial block.
+    */
+    private final boolean checkNullNextTrailIndex()
+    {
+        if (m_nextIndex_ <= 0) {
+            m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_ - 1;
+            int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+            int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+            m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+            m_nextIndex_ --;
+            m_nextBlockIndex_ =  DATA_BLOCK_LENGTH_;
+            return true;
+        }
+        return false;
+    }
+
+    // private data members --------------------------------------------
+
+    /**
+    * Size of the stage 1 BMP indexes
+    */
+    private static final int BMP_INDEX_LENGTH_ =
+                                        0x10000 >> Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+    * Lead surrogate minimum value
+    */
+    private static final int LEAD_SURROGATE_MIN_VALUE_ = 0xD800;
+    /**
+    * Trail surrogate minimum value
+    */
+    private static final int TRAIL_SURROGATE_MIN_VALUE_ = 0xDC00;
+    /*
+    * Trail surrogate maximum value
+    */
+    //private static final int TRAIL_SURROGATE_MAX_VALUE_ = 0xDFFF;
+    /**
+    * Number of trail surrogate
+    */
+    private static final int TRAIL_SURROGATE_COUNT_ = 0x400;
+    /**
+    * Number of stage 1 indexes for supplementary calculations that maps to
+    * each lead surrogate character.
+    * See second pass into getRawOffset for the trail surrogate character.
+    * 10 for significant number of bits for trail surrogates, 5 for what we
+    * discard during shifting.
+    */
+    private static final int TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_ =
+                                    1 << (10 - Trie.INDEX_STAGE_1_SHIFT_);
+    /**
+    * Number of data values in a stage 2 (data array) block.
+    */
+    private static final int DATA_BLOCK_LENGTH_ = 
+                                              1 << Trie.INDEX_STAGE_1_SHIFT_;
+//    /**
+//    * Number of codepoints in a stage 2 block
+//    */
+//    private static final int DATA_BLOCK_SUPPLEMENTARY_LENGTH_ =
+//                                                     DATA_BLOCK_LENGTH_ << 10;
+    /**
+    * Trie instance
+    */
+    private Trie m_trie_;
+    /**
+    * Initial value for trie values
+    */
+    private int m_initialValue_;
+    /**
+    * Next element results and data.
+    */
+    private int m_currentCodepoint_;
+    private int m_nextCodepoint_;
+    private int m_nextValue_;
+    private int m_nextIndex_;
+    private int m_nextBlock_;
+    private int m_nextBlockIndex_;
+    private int m_nextTrailIndexOffset_;
+}
diff --git a/src/com/ibm/icu/impl/UBiDiProps.java b/src/com/ibm/icu/impl/UBiDiProps.java
new file mode 100644
index 0000000..0b128d2
--- /dev/null
+++ b/src/com/ibm/icu/impl/UBiDiProps.java
@@ -0,0 +1,326 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  UBiDiProps.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005jan16
+*   created by: Markus W. Scherer
+*
+*   Low-level Unicode bidi/shaping properties access.
+*   Java port of ubidi_props.h/.c.
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.util.RangeValueIterator;
+
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+public final class UBiDiProps {
+    // constructors etc. --------------------------------------------------- ***
+
+    // port of ubidi_openProps()
+    public UBiDiProps() throws IOException{
+        InputStream is=ICUData.getStream(ICUResourceBundle.ICU_BUNDLE+"/"+DATA_FILE_NAME);
+        BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
+        readData(b);
+        b.close();
+        is.close();
+
+    }
+
+    private void readData(InputStream is) throws IOException {
+        DataInputStream inputStream=new DataInputStream(is);
+
+        // read the header
+        ICUBinary.readHeader(inputStream, FMT, new IsAcceptable());
+
+        // read indexes[]
+        int i, count;
+        count=inputStream.readInt();
+        if(count<IX_INDEX_TOP) {
+            throw new IOException("indexes[0] too small in "+DATA_FILE_NAME);
+        }
+        indexes=new int[count];
+
+        indexes[0]=count;
+        for(i=1; i<count; ++i) {
+            indexes[i]=inputStream.readInt();
+        }
+
+        // read the trie
+        trie=new CharTrie(inputStream, null);
+
+        // read mirrors[]
+        count=indexes[IX_MIRROR_LENGTH];
+        if(count>0) {
+            mirrors=new int[count];
+            for(i=0; i<count; ++i) {
+                mirrors[i]=inputStream.readInt();
+            }
+        }
+
+        // read jgArray[]
+        count=indexes[IX_JG_LIMIT]-indexes[IX_JG_START];
+        jgArray=new byte[count];
+        for(i=0; i<count; ++i) {
+            jgArray[i]=inputStream.readByte();
+        }
+    }
+
+    // implement ICUBinary.Authenticate
+    private final class IsAcceptable implements ICUBinary.Authenticate {
+        public boolean isDataVersionAcceptable(byte version[]) {
+            return version[0]==1 &&
+                   version[2]==Trie.INDEX_STAGE_1_SHIFT_ && version[3]==Trie.INDEX_STAGE_2_SHIFT_;
+        }
+    }
+
+    // UBiDiProps singleton
+    private static UBiDiProps gBdp=null;
+
+    // port of ubidi_getSingleton()
+    public static final synchronized UBiDiProps getSingleton() throws IOException {
+        if(gBdp==null) {
+            gBdp=new UBiDiProps();
+        }
+        return gBdp;
+    }
+
+    // UBiDiProps dummy singleton
+    private static UBiDiProps gBdpDummy=null;
+
+    private UBiDiProps(boolean makeDummy) { // ignore makeDummy, only creates a unique signature
+        indexes=new int[IX_TOP];
+        indexes[0]=IX_TOP;
+        trie=new CharTrie(0, 0, null); // dummy trie, always returns 0
+    }
+
+    /**
+     * Get a singleton dummy object, one that works with no real data.
+     * This can be used when the real data is not available.
+     * Using the dummy can reduce checks for available data after an initial failure.
+     * Port of ucase_getDummy().
+     */
+    public static final synchronized UBiDiProps getDummy() {
+        if(gBdpDummy==null) {
+            gBdpDummy=new UBiDiProps(true);
+        }
+        return gBdpDummy;
+    }
+
+    // set of property starts for UnicodeSet ------------------------------- ***
+
+    public final void addPropertyStarts(UnicodeSet set) {
+        int i, length;
+        int c, start, limit;
+
+        byte prev, jg;
+
+        /* add the start code point of each same-value range of the trie */
+        TrieIterator iter=new TrieIterator(trie);
+        RangeValueIterator.Element element=new RangeValueIterator.Element();
+
+        while(iter.next(element)){
+            set.add(element.start);
+        }
+
+        /* add the code points from the bidi mirroring table */
+        length=indexes[IX_MIRROR_LENGTH];
+        for(i=0; i<length; ++i) {
+            c=getMirrorCodePoint(mirrors[i]);
+            set.add(c, c+1);
+        }
+
+        /* add the code points from the Joining_Group array where the value changes */
+        start=indexes[IX_JG_START];
+        limit=indexes[IX_JG_LIMIT];
+        length=limit-start;
+        prev=0;
+        for(i=0; i<length; ++i) {
+            jg=jgArray[i];
+            if(jg!=prev) {
+                set.add(start);
+                prev=jg;
+            }
+            ++start;
+        }
+        if(prev!=0) {
+            /* add the limit code point if the last value was not 0 (it is now start==limit) */
+            set.add(limit);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* (none right now) */
+    }
+
+    // property access functions ------------------------------------------- ***
+
+    public final int getMaxValue(int which) {
+        int max;
+
+        max=indexes[IX_MAX_VALUES];
+        switch(which) {
+        case UProperty.BIDI_CLASS:
+            return (max&CLASS_MASK);
+        case UProperty.JOINING_GROUP:
+            return (max&MAX_JG_MASK)>>MAX_JG_SHIFT;
+        case UProperty.JOINING_TYPE:
+            return (max&JT_MASK)>>JT_SHIFT;
+        default:
+            return -1; /* undefined */
+        }
+    }
+
+    public final int getClass(int c) {
+        return getClassFromProps(trie.getCodePointValue(c));
+    }
+
+    public final boolean isMirrored(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), IS_MIRRORED_SHIFT);
+    }
+
+    public final int getMirror(int c) {
+        int props;
+        int delta;
+
+        props=trie.getCodePointValue(c);
+        delta=((short)props)>>MIRROR_DELTA_SHIFT;
+        if(delta!=ESC_MIRROR_DELTA) {
+            return c+delta;
+        } else {
+            /* look for mirror code point in the mirrors[] table */
+            int m;
+            int i, length;
+            int c2;
+
+            length=indexes[IX_MIRROR_LENGTH];
+
+            /* linear search */
+            for(i=0; i<length; ++i) {
+                m=mirrors[i];
+                c2=getMirrorCodePoint(m);
+                if(c==c2) {
+                    /* found c, return its mirror code point using the index in m */
+                    return getMirrorCodePoint(mirrors[getMirrorIndex(m)]);
+                } else if(c<c2) {
+                    break;
+                }
+            }
+
+            /* c not found, return it itself */
+            return c;
+        }
+    }
+
+    public final boolean isBidiControl(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), BIDI_CONTROL_SHIFT);
+    }
+
+    public final boolean isJoinControl(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), JOIN_CONTROL_SHIFT);
+    }
+
+    public final int getJoiningType(int c) {
+        return (trie.getCodePointValue(c)&JT_MASK)>>JT_SHIFT;
+    }
+
+    public final int getJoiningGroup(int c) {
+        int start, limit;
+
+        start=indexes[IX_JG_START];
+        limit=indexes[IX_JG_LIMIT];
+        if(start<=c && c<limit) {
+            return (int)jgArray[c-start]&0xff;
+        } else {
+            return UCharacter.JoiningGroup.NO_JOINING_GROUP;
+        }
+    }
+
+    // data members -------------------------------------------------------- ***
+    private int indexes[];
+    private int mirrors[];
+    private byte jgArray[];
+
+    private CharTrie trie;
+
+    // data format constants ----------------------------------------------- ***
+    private static final String DATA_NAME="ubidi";
+    private static final String DATA_TYPE="icu";
+    private static final String DATA_FILE_NAME=DATA_NAME+"."+DATA_TYPE;
+
+    /* format "BiDi" */
+    private static final byte FMT[]={ 0x42, 0x69, 0x44, 0x69 };
+
+    /* indexes into indexes[] */
+    private static final int IX_INDEX_TOP=0;
+    //private static final int IX_LENGTH=1;
+    //private static final int IX_TRIE_SIZE=2;
+    private static final int IX_MIRROR_LENGTH=3;
+
+    private static final int IX_JG_START=4;
+    private static final int IX_JG_LIMIT=5;
+
+    private static final int IX_MAX_VALUES=15;
+    private static final int IX_TOP=16;
+
+    // definitions for 16-bit bidi/shaping properties word ----------------- ***
+
+                          /* CLASS_SHIFT=0, */     /* bidi class: 5 bits (4..0) */
+    private static final int JT_SHIFT=5;           /* joining type: 3 bits (7..5) */
+
+    /* private static final int _SHIFT=8, reserved: 2 bits (9..8) */
+
+    private static final int JOIN_CONTROL_SHIFT=10;
+    private static final int BIDI_CONTROL_SHIFT=11;
+
+    private static final int IS_MIRRORED_SHIFT=12;         /* 'is mirrored' */
+    private static final int MIRROR_DELTA_SHIFT=13;        /* bidi mirroring delta: 3 bits (15..13) */
+
+    private static final int MAX_JG_SHIFT=16;              /* max JG value in indexes[MAX_VALUES_INDEX] bits 23..16 */
+
+    private static final int CLASS_MASK=    0x0000001f;
+    private static final int JT_MASK=       0x000000e0;
+
+    private static final int MAX_JG_MASK=   0x00ff0000;
+
+    private static final int getClassFromProps(int props) {
+        return props&CLASS_MASK;
+    }
+    private static final boolean getFlagFromProps(int props, int shift) {
+        return ((props>>shift)&1)!=0;
+    }
+
+    private static final int ESC_MIRROR_DELTA=-4;
+    //private static final int MIN_MIRROR_DELTA=-3;
+    //private static final int MAX_MIRROR_DELTA=3;
+
+    // definitions for 32-bit mirror table entry --------------------------- ***
+
+    /* the source Unicode code point takes 21 bits (20..0) */
+    private static final int MIRROR_INDEX_SHIFT=21;
+    //private static final int MAX_MIRROR_INDEX=0x7ff;
+
+    private static final int getMirrorCodePoint(int m) {
+        return m&0x1fffff;
+    }
+    private static final int getMirrorIndex(int m) {
+        return m>>>MIRROR_INDEX_SHIFT;
+    }
+}
diff --git a/src/com/ibm/icu/impl/UCaseProps.java b/src/com/ibm/icu/impl/UCaseProps.java
new file mode 100644
index 0000000..e45b51b
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCaseProps.java
@@ -0,0 +1,1401 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  UCaseProps.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005jan29
+*   created by: Markus W. Scherer
+*
+*   Low-level Unicode character/string case mapping code.
+*   Java port of ucase.h/.c.
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.lang.UCharacter;
+
+public final class UCaseProps {
+    // constructors etc. --------------------------------------------------- ***
+
+    // port of ucase_openProps()
+    public UCaseProps() throws IOException {
+        InputStream is=ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/"+DATA_FILE_NAME);
+        BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
+        readData(b);
+        b.close();
+        is.close();
+    }
+
+    private final void readData(InputStream is) throws IOException {
+        DataInputStream inputStream=new DataInputStream(is);
+
+        // read the header
+        ICUBinary.readHeader(inputStream, FMT, new IsAcceptable());
+
+        // read indexes[]
+        int i, count;
+        count=inputStream.readInt();
+        if(count<IX_INDEX_TOP) {
+            throw new IOException("indexes[0] too small in "+DATA_FILE_NAME);
+        }
+        indexes=new int[count];
+
+        indexes[0]=count;
+        for(i=1; i<count; ++i) {
+            indexes[i]=inputStream.readInt();
+        }
+
+        // read the trie
+        trie=new CharTrie(inputStream, null);
+
+        // read exceptions[]
+        count=indexes[IX_EXC_LENGTH];
+        if(count>0) {
+            exceptions=new char[count];
+            for(i=0; i<count; ++i) {
+                exceptions[i]=inputStream.readChar();
+            }
+        }
+
+        // read unfold[]
+        count=indexes[IX_UNFOLD_LENGTH];
+        if(count>0) {
+            unfold=new char[count];
+            for(i=0; i<count; ++i) {
+                unfold[i]=inputStream.readChar();
+            }
+        }
+    }
+
+    // implement ICUBinary.Authenticate
+    private final class IsAcceptable implements ICUBinary.Authenticate {
+        public boolean isDataVersionAcceptable(byte version[]) {
+            return version[0]==1 &&
+                   version[2]==Trie.INDEX_STAGE_1_SHIFT_ && version[3]==Trie.INDEX_STAGE_2_SHIFT_;
+        }
+    }
+
+    // UCaseProps singleton
+    private static UCaseProps gCsp=null;
+
+    // port of ucase_getSingleton()
+    public static final synchronized UCaseProps getSingleton() throws IOException {
+        if(gCsp==null) {
+            gCsp=new UCaseProps();
+        }
+        return gCsp;
+    }
+
+    // UCaseProps dummy singleton
+    private static UCaseProps gCspDummy=null;
+
+    private UCaseProps(boolean makeDummy) { // ignore makeDummy, only creates a unique signature
+        indexes=new int[IX_TOP];
+        indexes[0]=IX_TOP;
+        trie=new CharTrie(0, 0, null); // dummy trie, always returns 0
+    }
+
+    /**
+     * Get a singleton dummy object, one that works with no real data.
+     * This can be used when the real data is not available.
+     * Using the dummy can reduce checks for available data after an initial failure.
+     * Port of ucase_getDummy().
+     */
+    public static final synchronized UCaseProps getDummy() {
+        if(gCspDummy==null) {
+            gCspDummy=new UCaseProps(true);
+        }
+        return gCspDummy;
+    }
+
+    // set of property starts for UnicodeSet ------------------------------- ***
+
+    public final void addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the trie */
+        TrieIterator iter=new TrieIterator(trie);
+        RangeValueIterator.Element element=new RangeValueIterator.Element();
+
+        while(iter.next(element)){
+            set.add(element.start);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* (none right now, see comment below) */
+
+        /*
+         * Omit code points with hardcoded specialcasing properties
+         * because we do not build property UnicodeSets for them right now.
+         */
+    }
+
+    // data access primitives ---------------------------------------------- ***
+    private static final int getExceptionsOffset(int props) {
+        return props>>EXC_SHIFT;
+    }
+
+    private static final boolean propsHasException(int props) {
+        return (props&EXCEPTION)!=0;
+    }
+
+    /* number of bits in an 8-bit integer value */
+    private static final byte flagsOffset[/*256*/]={
+        0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+    };
+
+    private static final boolean hasSlot(int flags, int index) {
+        return (flags&(1<<index))!=0;
+    }
+    private static final byte slotOffset(int flags, int index) {
+        return flagsOffset[flags&((1<<index)-1)];
+    }
+
+    /*
+     * Get the value of an optional-value slot where hasSlot(excWord, index).
+     *
+     * @param excWord (in) initial exceptions word
+     * @param index (in) desired slot index
+     * @param excOffset (in) offset into exceptions[] after excWord=exceptions[excOffset++];
+     * @return bits 31..0: slot value
+     *             63..32: modified excOffset, moved to the last char of the value, use +1 for beginning of next slot 
+     */
+    private final long getSlotValueAndOffset(int excWord, int index, int excOffset) {
+        long value;
+        if((excWord&EXC_DOUBLE_SLOTS)==0) {
+            excOffset+=slotOffset(excWord, index);
+            value=exceptions[excOffset];
+        } else {
+            excOffset+=2*slotOffset(excWord, index);
+            value=exceptions[excOffset++];
+            value=(value<<16)|exceptions[excOffset];
+        }
+        return (long)value|((long)excOffset<<32);
+    }
+
+    /* same as getSlotValueAndOffset() but does not return the slot offset */
+    private final int getSlotValue(int excWord, int index, int excOffset) {
+        int value;
+        if((excWord&EXC_DOUBLE_SLOTS)==0) {
+            excOffset+=slotOffset(excWord, index);
+            value=exceptions[excOffset];
+        } else {
+            excOffset+=2*slotOffset(excWord, index);
+            value=exceptions[excOffset++];
+            value=(value<<16)|exceptions[excOffset];
+        }
+        return value;
+    }
+
+    // simple case mappings ------------------------------------------------ ***
+
+    public final int tolower(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            if(hasSlot(excWord, EXC_LOWER)) {
+                c=getSlotValue(excWord, EXC_LOWER, excOffset);
+            }
+        }
+        return c;
+    }
+
+    public final int toupper(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            if(hasSlot(excWord, EXC_UPPER)) {
+                c=getSlotValue(excWord, EXC_UPPER, excOffset);
+            }
+        }
+        return c;
+    }
+
+    public final int totitle(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            int index;
+            if(hasSlot(excWord, EXC_TITLE)) {
+                index=EXC_TITLE;
+            } else if(hasSlot(excWord, EXC_UPPER)) {
+                index=EXC_UPPER;
+            } else {
+                return c;
+            }
+            c=getSlotValue(excWord, index, excOffset);
+        }
+        return c;
+    }
+
+    /**
+     * Adds all simple case mappings and the full case folding for c to sa,
+     * and also adds special case closure mappings.
+     * c itself is not added.
+     * For example, the mappings
+     * - for s include long s
+     * - for sharp s include ss
+     * - for k include the Kelvin sign
+     */
+    public final void addCaseClosure(int c, UnicodeSet set) {
+        /*
+         * Hardcode the case closure of i and its relatives and ignore the
+         * data file data for these characters.
+         * The Turkic dotless i and dotted I with their case mapping conditions
+         * and case folding option make the related characters behave specially.
+         * This code matches their closure behavior to their case folding behavior.
+         */
+
+        switch(c) {
+        case 0x49:
+            /* regular i and I are in one equivalence class */
+            set.add(0x69);
+            return;
+        case 0x69:
+            set.add(0x49);
+            return;
+        case 0x130:
+            /* dotted I is in a class with <0069 0307> (for canonical equivalence with <0049 0307>) */
+            set.add(iDot);
+            return;
+        case 0x131:
+            /* dotless i is in a class by itself */
+            return;
+        default:
+            /* otherwise use the data file data */
+            break;
+        }
+
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)!=NONE) {
+                /* add the one simple case mapping, no matter what type it is */
+                int delta=getDelta(props);
+                if(delta!=0) {
+                    set.add(c+delta);
+                }
+            }
+        } else {
+            /*
+             * c has exceptions, so there may be multiple simple and/or
+             * full case mappings. Add them all.
+             */
+            int excOffset0, excOffset=getExceptionsOffset(props);
+            int closureOffset;
+            int excWord=exceptions[excOffset++];
+            int index, closureLength, fullLength, length;
+
+            excOffset0=excOffset;
+
+            /* add all simple case mappings */
+            for(index=EXC_LOWER; index<=EXC_TITLE; ++index) {
+                if(hasSlot(excWord, index)) {
+                    excOffset=excOffset0;
+                    c=getSlotValue(excWord, index, excOffset);
+                    set.add(c);
+                }
+            }
+
+            /* get the closure string pointer & length */
+            if(hasSlot(excWord, EXC_CLOSURE)) {
+                excOffset=excOffset0;
+                long value=getSlotValueAndOffset(excWord, EXC_CLOSURE, excOffset);
+                closureLength=(int)value&CLOSURE_MAX_LENGTH; /* higher bits are reserved */
+                closureOffset=(int)(value>>32)+1; /* behind this slot, unless there are full case mappings */
+            } else {
+                closureLength=0;
+                closureOffset=0;
+            }
+
+            /* add the full case folding */
+            if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                excOffset=excOffset0;
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                fullLength=(int)value;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                fullLength&=0xffff; /* bits 16 and higher are reserved */
+
+                /* skip the lowercase result string */
+                excOffset+=fullLength&FULL_LOWER;
+                fullLength>>=4;
+
+                /* add the full case folding string */
+                length=fullLength&0xf;
+                if(length!=0) {
+                    set.add(new String(exceptions, excOffset, length));
+                    excOffset+=length;
+                }
+
+                /* skip the uppercase and titlecase strings */
+                fullLength>>=4;
+                excOffset+=fullLength&0xf;
+                fullLength>>=4;
+                excOffset+=fullLength;
+
+                closureOffset=excOffset; /* behind full case mappings */
+            }
+
+            /* add each code point in the closure string */
+            for(index=0; index<closureLength; index+=UTF16.getCharCount(c)) {
+                c=UTF16.charAt(exceptions, closureOffset, exceptions.length, index);
+                set.add(c);
+            }
+        }
+    }
+
+    /*
+     * compare s, which has a length, with t=unfold[unfoldOffset..], which has a maximum length or is NUL-terminated
+     * must be s.length()>0 and max>0 and s.length()<=max
+     */
+    private final int strcmpMax(String s, int unfoldOffset, int max) {
+        int i1, length, c1, c2;
+
+        length=s.length();
+        max-=length; /* we require length<=max, so no need to decrement max in the loop */
+        i1=0;
+        do {
+            c1=s.charAt(i1++);
+            c2=unfold[unfoldOffset++];
+            if(c2==0) {
+                return 1; /* reached the end of t but not of s */
+            }
+            c1-=c2;
+            if(c1!=0) {
+                return c1; /* return difference result */
+            }
+        } while(--length>0);
+        /* ends with length==0 */
+
+        if(max==0 || unfold[unfoldOffset]==0) {
+            return 0; /* equal to length of both strings */
+        } else {
+            return -max; /* return lengh difference */
+        }
+    }
+
+    /**
+     * Maps the string to single code points and adds the associated case closure
+     * mappings.
+     * The string is mapped to code points if it is their full case folding string.
+     * In other words, this performs a reverse full case folding and then
+     * adds the case closure items of the resulting code points.
+     * If the string is found and its closure applied, then
+     * the string itself is added as well as part of its code points' closure.
+     *
+     * @return true if the string was found
+     */
+    public final boolean addStringCaseClosure(String s, UnicodeSet set) {
+        int i, length, start, limit, result, unfoldOffset, unfoldRows, unfoldRowWidth, unfoldStringWidth;
+
+        if(unfold==null || s==null) {
+            return false; /* no reverse case folding data, or no string */
+        }
+        length=s.length();
+        if(length<=1) {
+            /* the string is too short to find any match */
+            /*
+             * more precise would be:
+             * if(!u_strHasMoreChar32Than(s, length, 1))
+             * but this does not make much practical difference because
+             * a single supplementary code point would just not be found
+             */
+            return false;
+        }
+
+        unfoldRows=unfold[UNFOLD_ROWS];
+        unfoldRowWidth=unfold[UNFOLD_ROW_WIDTH];
+        unfoldStringWidth=unfold[UNFOLD_STRING_WIDTH];
+        //unfoldCPWidth=unfoldRowWidth-unfoldStringWidth;
+
+        if(length>unfoldStringWidth) {
+            /* the string is too long to find any match */
+            return false;
+        }
+
+        /* do a binary search for the string */
+        start=0;
+        limit=unfoldRows;
+        while(start<limit) {
+            i=(start+limit)/2;
+            unfoldOffset=((i+1)*unfoldRowWidth); // +1 to skip the header values above
+            result=strcmpMax(s, unfoldOffset, unfoldStringWidth);
+
+            if(result==0) {
+                /* found the string: add each code point, and its case closure */
+                int c;
+
+                for(i=unfoldStringWidth; i<unfoldRowWidth && unfold[unfoldOffset+i]!=0; i+=UTF16.getCharCount(c)) {
+                    c=UTF16.charAt(unfold, unfoldOffset, unfold.length, i);
+                    set.add(c);
+                    addCaseClosure(c, set);
+                }
+                return true;
+            } else if(result<0) {
+                limit=i;
+            } else /* result>0 */ {
+                start=i+1;
+            }
+        }
+
+        return false; /* string not found */
+    }
+
+    /** @return NONE, LOWER, UPPER, TITLE */
+    public final int getType(int c) {
+        return getTypeFromProps(trie.getCodePointValue(c));
+    }
+
+    /** @return same as getType(), or <0 if c is case-ignorable */
+    public final int getTypeOrIgnorable(int c) {
+        int props=trie.getCodePointValue(c);
+        int type=getTypeFromProps(props);
+        if(type!=NONE) {
+            return type;
+        } else if(
+            c==0x307 ||
+            (props&(EXCEPTION|CASE_IGNORABLE))==CASE_IGNORABLE
+        ) {
+            return -1; /* case-ignorable */
+        } else {
+            return 0; /* c is neither cased nor case-ignorable */
+        }
+    }
+
+    /** @return NO_DOT, SOFT_DOTTED, ABOVE, OTHER_ACCENT */
+    public final int getDotType(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            return props&DOT_MASK;
+        } else {
+            return (exceptions[getExceptionsOffset(props)]>>EXC_DOT_SHIFT)&DOT_MASK;
+        }
+    }
+
+    public final boolean isSoftDotted(int c) {
+        return getDotType(c)==SOFT_DOTTED;
+    }
+
+    public final boolean isCaseSensitive(int c) {
+        return (trie.getCodePointValue(c)&SENSITIVE)!=0;
+    }
+
+    // string casing ------------------------------------------------------- ***
+
+    /*
+     * These internal functions form the core of string case mappings.
+     * They map single code points to result code points or strings and take
+     * all necessary conditions (context, locale ID, options) into account.
+     *
+     * They do not iterate over the source or write to the destination
+     * so that the same functions are useful for non-standard string storage,
+     * such as in a Replaceable (for Transliterator) or UTF-8/32 strings etc.
+     * For the same reason, the "surrounding text" context is passed in as a
+     * ContextIterator which does not make any assumptions about
+     * the underlying storage.
+     *
+     * This section contains helper functions that check for conditions
+     * in the input text surrounding the current code point
+     * according to SpecialCasing.txt.
+     *
+     * Each helper function gets the index
+     * - after the current code point if it looks at following text
+     * - before the current code point if it looks at preceding text
+     *
+     * Unicode 3.2 UAX 21 "Case Mappings" defines the conditions as follows:
+     *
+     * Final_Sigma
+     *   C is preceded by a sequence consisting of
+     *     a cased letter and a case-ignorable sequence,
+     *   and C is not followed by a sequence consisting of
+     *     an ignorable sequence and then a cased letter.
+     *
+     * More_Above
+     *   C is followed by one or more characters of combining class 230 (ABOVE)
+     *   in the combining character sequence.
+     *
+     * After_Soft_Dotted
+     *   The last preceding character with combining class of zero before C
+     *   was Soft_Dotted,
+     *   and there is no intervening combining character class 230 (ABOVE).
+     *
+     * Before_Dot
+     *   C is followed by combining dot above (U+0307).
+     *   Any sequence of characters with a combining class that is neither 0 nor 230
+     *   may intervene between the current character and the combining dot above.
+     *
+     * The erratum from 2002-10-31 adds the condition
+     *
+     * After_I
+     *   The last preceding base character was an uppercase I, and there is no
+     *   intervening combining character class 230 (ABOVE).
+     *
+     *   (See Jitterbug 2344 and the comments on After_I below.)
+     *
+     * Helper definitions in Unicode 3.2 UAX 21:
+     *
+     * D1. A character C is defined to be cased
+     *     if it meets any of the following criteria:
+     *
+     *   - The general category of C is Titlecase Letter (Lt)
+     *   - In [CoreProps], C has one of the properties Uppercase, or Lowercase
+     *   - Given D = NFD(C), then it is not the case that:
+     *     D = UCD_lower(D) = UCD_upper(D) = UCD_title(D)
+     *     (This third criterium does not add any characters to the list
+     *      for Unicode 3.2. Ignored.)
+     *
+     * D2. A character C is defined to be case-ignorable
+     *     if it meets either of the following criteria:
+     *
+     *   - The general category of C is
+     *     Nonspacing Mark (Mn), or Enclosing Mark (Me), or Format Control (Cf), or
+     *     Letter Modifier (Lm), or Symbol Modifier (Sk)
+     *   - C is one of the following characters 
+     *     U+0027 APOSTROPHE
+     *     U+00AD SOFT HYPHEN (SHY)
+     *     U+2019 RIGHT SINGLE QUOTATION MARK
+     *            (the preferred character for apostrophe)
+     *
+     * D3. A case-ignorable sequence is a sequence of
+     *     zero or more case-ignorable characters.
+     */
+
+    /**
+     * Iterator for string case mappings, which need to look at the
+     * context (surrounding text) of a given character for conditional mappings.
+     *
+     * The iterator only needs to go backward or forward away from the
+     * character in question. It does not use any indexes on this interface.
+     * It does not support random access or an arbitrary change of
+     * iteration direction.
+     *
+     * The code point being case-mapped itself is never returned by
+     * this iterator.
+     */
+    public interface ContextIterator {
+        /**
+         * Reset the iterator for forward or backward iteration.
+         * @param dir >0: Begin iterating forward from the first code point
+         * after the one that is being case-mapped.
+         *            <0: Begin iterating backward from the first code point
+         * before the one that is being case-mapped.   
+         */
+        public void reset(int dir);
+        /**
+         * Iterate and return the next code point, moving in the direction
+         * determined by the reset() call.
+         * @return Next code point, or <0 when the iteration is done. 
+         */
+        public int next();
+    }
+
+    /**
+     * For string case mappings, a single character (a code point) is mapped
+     * either to itself (in which case in-place mapping functions do nothing),
+     * or to another single code point, or to a string.
+     * Aside from the string contents, these are indicated with a single int
+     * value as follows:
+     *
+     * Mapping to self: Negative values (~self instead of -self to support U+0000)
+     *
+     * Mapping to another code point: Positive values >MAX_STRING_LENGTH
+     *
+     * Mapping to a string: The string length (0..MAX_STRING_LENGTH) is
+     * returned. Note that the string result may indeed have zero length.
+     */
+    public static final int MAX_STRING_LENGTH=0x1f;
+
+    private static final int LOC_UNKNOWN=0;
+    private static final int LOC_ROOT=1;
+    private static final int LOC_TURKISH=2;
+    private static final int LOC_LITHUANIAN=3;
+
+    /*
+     * Checks and caches the type of locale ID as it is relevant for case mapping.
+     * If the locCache is not null, then it must be initialized with locCache[0]=0 .
+     */
+    private static final int getCaseLocale(ULocale locale, int[] locCache) {
+        int result;
+
+        if(locCache!=null && (result=locCache[0])!=LOC_UNKNOWN) {
+            return result;
+        }
+
+        result=LOC_ROOT;
+
+        String language=locale.getLanguage();
+        if(language.equals("tr") || language.equals("tur") || language.equals("az") || language.equals("aze")) {
+            result=LOC_TURKISH;
+        } else if(language.equals("lt") || language.equals("lit")) {
+            result=LOC_LITHUANIAN;
+        }
+
+        if(locCache!=null) {
+            locCache[0]=result;
+        }
+        return result;
+    }
+
+    /* Is followed by {case-ignorable}* cased  ? (dir determines looking forward/backward) */
+    private final boolean isFollowedByCasedLetter(ContextIterator iter, int dir) {
+        int c;
+        int props;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(dir); (c=iter.next())>=0;) {
+            props=trie.getCodePointValue(c);
+            if(getTypeFromProps(props)!=NONE) {
+                return true; /* followed by cased letter */
+            } else if(c==0x307 || (props&(EXCEPTION|CASE_IGNORABLE))==CASE_IGNORABLE) {
+                /* case-ignorable, continue with the loop */
+            } else {
+                return false; /* not ignorable */
+            }
+        }
+
+        return false; /* not followed by cased letter */
+    }
+
+    /* Is preceded by Soft_Dotted character with no intervening cc=230 ? */
+    private final boolean isPrecededBySoftDotted(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(-1); (c=iter.next())>=0;) {
+            dotType=getDotType(c);
+            if(dotType==SOFT_DOTTED) {
+                return true; /* preceded by TYPE_i */
+            } else if(dotType!=OTHER_ACCENT) {
+                return false; /* preceded by different base character (not TYPE_i), or intervening cc==230 */
+            }
+        }
+
+        return false; /* not preceded by TYPE_i */
+    }
+
+    /*
+     * See Jitterbug 2344:
+     * The condition After_I for Turkic-lowercasing of U+0307 combining dot above
+     * is checked in ICU 2.0, 2.1, 2.6 but was not in 2.2 & 2.4 because
+     * we made those releases compatible with Unicode 3.2 which had not fixed
+     * a related bug in SpecialCasing.txt.
+     *
+     * From the Jitterbug 2344 text:
+     * ... this bug is listed as a Unicode erratum
+     * from 2002-10-31 at http://www.unicode.org/uni2errata/UnicodeErrata.html
+     * <quote>
+     * There are two errors in SpecialCasing.txt.
+     * 1. Missing semicolons on two lines. ... [irrelevant for ICU]
+     * 2. An incorrect context definition. Correct as follows:
+     * < 0307; ; 0307; 0307; tr After_Soft_Dotted; # COMBINING DOT ABOVE
+     * < 0307; ; 0307; 0307; az After_Soft_Dotted; # COMBINING DOT ABOVE
+     * ---
+     * > 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+     * > 0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+     * where the context After_I is defined as:
+     * The last preceding base character was an uppercase I, and there is no
+     * intervening combining character class 230 (ABOVE).
+     * </quote>
+     *
+     * Note that SpecialCasing.txt even in Unicode 3.2 described the condition as:
+     *
+     * # 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
+     *
+     * See also the description in this place in older versions of uchar.c (revision 1.100).
+     *
+     * Markus W. Scherer 2003-feb-15
+     */
+
+    /* Is preceded by base character 'I' with no intervening cc=230 ? */
+    private final boolean isPrecededBy_I(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(-1); (c=iter.next())>=0;) {
+            if(c==0x49) {
+                return true; /* preceded by I */
+            }
+            dotType=getDotType(c);
+            if(dotType!=OTHER_ACCENT) {
+                return false; /* preceded by different base character (not I), or intervening cc==230 */
+            }
+        }
+
+        return false; /* not preceded by I */
+    }
+
+    /* Is followed by one or more cc==230 ? */
+    private final boolean isFollowedByMoreAbove(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(1); (c=iter.next())>=0;) {
+            dotType=getDotType(c);
+            if(dotType==ABOVE) {
+                return true; /* at least one cc==230 following */
+            } else if(dotType!=OTHER_ACCENT) {
+                return false; /* next base character, no more cc==230 following */
+            }
+        }
+
+        return false; /* no more cc==230 following */
+    }
+
+    /* Is followed by a dot above (without cc==230 in between) ? */
+    private final boolean isFollowedByDotAbove(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(1); (c=iter.next())>=0; ) {
+            if(c==0x307) {
+                return true;
+            }
+            dotType=getDotType(c);
+            if(dotType!=OTHER_ACCENT) {
+                return false; /* next base character or cc==230 in between */
+            }
+        }
+
+        return false; /* no dot above following */
+    }
+
+    private static final String
+        iDot=       "i\u0307",
+        jDot=       "j\u0307",
+        iOgonekDot= "\u012f\u0307",
+        iDotGrave=  "i\u0307\u0300",
+        iDotAcute=  "i\u0307\u0301",
+        iDotTilde=  "i\u0307\u0303";
+
+    /**
+     * Get the full lowercase mapping for c.
+     *
+     * @param c Character to be mapped.
+     * @param iter Character iterator, used for context-sensitive mappings.
+     *             See ContextIterator for details.
+     *             If iter==null then a context-independent result is returned.
+     * @param out If the mapping result is a string, then it is appended to out.
+     * @param locale Locale ID for locale-dependent mappings.
+     * @param locCache Initialize locCache[0] to 0; may be used to cache the result of parsing
+     *                 the locale ID for subsequent calls.
+     *                 Can be null.
+     * @return Output code point or string length, see MAX_STRING_LENGTH.
+     *
+     * @see ContextIterator
+     * @see #MAX_STRING_LENGTH
+     * @internal
+     */
+    public final int toFullLower(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        int result, props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_SPECIAL)!=0) {
+                /* use hardcoded conditions and mappings */
+                int loc=getCaseLocale(locale, locCache);
+
+                /*
+                 * Test for conditional mappings first
+                 *   (otherwise the unconditional default mappings are always taken),
+                 * then test for characters that have unconditional mappings in SpecialCasing.txt,
+                 * then get the UnicodeData.txt mappings.
+                 */
+                if( loc==LOC_LITHUANIAN &&
+                        /* base characters, find accents above */
+                        (((c==0x49 || c==0x4a || c==0x12e) &&
+                            isFollowedByMoreAbove(iter)) ||
+                        /* precomposed with accent above, no need to find one */
+                        (c==0xcc || c==0xcd || c==0x128))
+                ) {
+                    /*
+                        # Lithuanian
+
+                        # Lithuanian retains the dot in a lowercase i when followed by accents.
+
+                        # 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
+                     */
+                    switch(c) {
+                    case 0x49:  /* LATIN CAPITAL LETTER I */
+                        out.append(iDot);
+                        return 2;
+                    case 0x4a:  /* LATIN CAPITAL LETTER J */
+                        out.append(jDot);
+                        return 2;
+                    case 0x12e: /* LATIN CAPITAL LETTER I WITH OGONEK */
+                        out.append(iOgonekDot);
+                        return 2;
+                    case 0xcc:  /* LATIN CAPITAL LETTER I WITH GRAVE */
+                        out.append(iDotGrave);
+                        return 3;
+                    case 0xcd:  /* LATIN CAPITAL LETTER I WITH ACUTE */
+                        out.append(iDotAcute);
+                        return 3;
+                    case 0x128: /* LATIN CAPITAL LETTER I WITH TILDE */
+                        out.append(iDotTilde);
+                        return 3;
+                    default:
+                        return 0; /* will not occur */
+                    }
+                /* # Turkish and Azeri */
+                } else if(loc==LOC_TURKISH && c==0x130) {
+                    /*
+                        # 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
+                     */
+                    return 0x69;
+                } else if(loc==LOC_TURKISH && c==0x307 && isPrecededBy_I(iter)) {
+                    /*
+                        # 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
+                     */
+                    return 0; /* remove the dot (continue without output) */
+                } else if(loc==LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(iter)) {
+                    /*
+                        # 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
+                     */
+                    return 0x131;
+                } else if(c==0x130) {
+                    /*
+                        # Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+                        0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                     */
+                    out.append(iDot);
+                    return 2;
+                } else if(  c==0x3a3 &&
+                            !isFollowedByCasedLetter(iter, 1) &&
+                            isFollowedByCasedLetter(iter, -1) /* -1=preceded */
+                ) {
+                    /* greek capital sigma maps depending on surrounding cased letters (see SpecialCasing.txt) */
+                    /*
+                        # Special case for final form of sigma
+
+                        03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+                     */
+                    return 0x3c2; /* greek small final sigma */
+                } else {
+                    /* no known conditional special case mapping, use a normal mapping */
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&FULL_LOWER;
+                if(full!=0) {
+                    /* start of full case mapping strings */
+                    excOffset=(int)(value>>32)+1;
+
+                    /* set the output pointer to the lowercase mapping */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(hasSlot(excWord, EXC_LOWER)) {
+                result=getSlotValue(excWord, EXC_LOWER, excOffset2);
+            }
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    /* internal */
+    private final int toUpperOrTitle(int c, ContextIterator iter,
+                                     StringBuffer out,
+                                     ULocale locale, int[] locCache,
+                                     boolean upperNotTitle) {
+        int result;
+        int props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full, index;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_SPECIAL)!=0) {
+                /* use hardcoded conditions and mappings */
+                int loc=getCaseLocale(locale, locCache);
+
+                if(loc==LOC_TURKISH && c==0x69) {
+                    /*
+                        # Turkish and Azeri
+
+                        # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+                        # The following rules handle those cases.
+
+                        # 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
+                    */
+                    return 0x130;
+                } else if(loc==LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(iter)) {
+                    /*
+                        # 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
+                     */
+                    return 0; /* remove the dot (continue without output) */
+                } else {
+                    /* no known conditional special case mapping, use a normal mapping */
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&0xffff;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                /* skip the lowercase and case-folding result strings */
+                excOffset+=full&FULL_LOWER;
+                full>>=4;
+                excOffset+=full&0xf;
+                full>>=4;
+
+                if(upperNotTitle) {
+                    full&=0xf;
+                } else {
+                    /* skip the uppercase result string */
+                    excOffset+=full&0xf;
+                    full=(full>>4)&0xf;
+                }
+
+                if(full!=0) {
+                    /* set the output pointer to the result string */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(!upperNotTitle && hasSlot(excWord, EXC_TITLE)) {
+                index=EXC_TITLE;
+            } else if(hasSlot(excWord, EXC_UPPER)) {
+                /* here, titlecase is same as uppercase */
+                index=EXC_UPPER;
+            } else {
+                return ~c;
+            }
+            result=getSlotValue(excWord, index, excOffset2);
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    public final int toFullUpper(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        return toUpperOrTitle(c, iter, out, locale, locCache, true);
+    }
+
+    public final int toFullTitle(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        return toUpperOrTitle(c, iter, out, locale, locCache, false);
+    }
+
+    /* case folding ------------------------------------------------------------- */
+
+    /*
+     * Case folding is similar to lowercasing.
+     * The result may be a simple mapping, i.e., a single code point, or
+     * a full mapping, i.e., a string.
+     * If the case folding for a code point is the same as its simple (1:1) lowercase mapping,
+     * then only the lowercase mapping is stored.
+     *
+     * Some special cases are hardcoded because their conditions cannot be
+     * parsed and processed from CaseFolding.txt.
+     *
+     * Unicode 3.2 CaseFolding.txt specifies for its status field:
+
+    # C: common case folding, common mappings shared by both simple and full mappings.
+    # F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
+    # S: simple case folding, mappings to single characters where different from F.
+    # T: special case for uppercase I and dotted uppercase I
+    #    - For non-Turkic languages, this mapping is normally not used.
+    #    - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters.
+    #
+    # Usage:
+    #  A. To do a simple case folding, use the mappings with status C + S.
+    #  B. To do a full case folding, use the mappings with status C + F.
+    #
+    #    The mappings with status T can be used or omitted depending on the desired case-folding
+    #    behavior. (The default option is to exclude them.)
+
+     * Unicode 3.2 has 'T' mappings as follows:
+
+    0049; T; 0131; # LATIN CAPITAL LETTER I
+    0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+     * while the default mappings for these code points are:
+
+    0049; C; 0069; # LATIN CAPITAL LETTER I
+    0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+     * U+0130 has no simple case folding (simple-case-folds to itself).
+     */
+
+    /**
+     * Bit mask for getting just the options from a string compare options word
+     * that are relevant for case folding (of a single string or code point).
+     * @internal
+     */
+    private static final int FOLD_CASE_OPTIONS_MASK = 0xff;
+    
+    /* return the simple case folding mapping for c */
+    public final int fold(int c, int options) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            int index;
+            if((excWord&EXC_CONDITIONAL_FOLD)!=0) {
+                /* special case folding mappings, hardcoded */
+                if((options&FOLD_CASE_OPTIONS_MASK)==UCharacter.FOLD_CASE_DEFAULT) {
+                    /* default mappings */
+                    if(c==0x49) {
+                        /* 0049; C; 0069; # LATIN CAPITAL LETTER I */
+                        return 0x69;
+                    } else if(c==0x130) {
+                        /* no simple case folding for U+0130 */
+                        return c;
+                    }
+                } else {
+                    /* Turkic mappings */
+                    if(c==0x49) {
+                        /* 0049; T; 0131; # LATIN CAPITAL LETTER I */
+                        return 0x131;
+                    } else if(c==0x130) {
+                        /* 0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        return 0x69;
+                    }
+                }
+            }
+            if(hasSlot(excWord, EXC_FOLD)) {
+                index=EXC_FOLD;
+            } else if(hasSlot(excWord, EXC_LOWER)) {
+                index=EXC_LOWER;
+            } else {
+                return c;
+            }
+            c=getSlotValue(excWord, index, excOffset);
+        }
+        return c;
+    }
+
+    /*
+     * Issue for canonical caseless match (UAX #21):
+     * Turkic casefolding (using "T" mappings in CaseFolding.txt) does not preserve
+     * canonical equivalence, unlike default-option casefolding.
+     * For example, I-grave and I + grave fold to strings that are not canonically
+     * equivalent.
+     * For more details, see the comment in unorm_compare() in unorm.cpp
+     * and the intermediate prototype changes for Jitterbug 2021.
+     * (For example, revision 1.104 of uchar.c and 1.4 of CaseFolding.txt.)
+     *
+     * This did not get fixed because it appears that it is not possible to fix
+     * it for uppercase and lowercase characters (I-grave vs. i-grave)
+     * together in a way that they still fold to common result strings.
+     */
+
+    public final int toFullFolding(int c, StringBuffer out, int options) {
+        int result;
+        int props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full, index;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_FOLD)!=0) {
+                /* use hardcoded conditions and mappings */
+                if((options&FOLD_CASE_OPTIONS_MASK)==UCharacter.FOLD_CASE_DEFAULT) {
+                    /* default mappings */
+                    if(c==0x49) {
+                        /* 0049; C; 0069; # LATIN CAPITAL LETTER I */
+                        return 0x69;
+                    } else if(c==0x130) {
+                        /* 0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        out.append(iDot);
+                        return 2;
+                    }
+                } else {
+                    /* Turkic mappings */
+                    if(c==0x49) {
+                        /* 0049; T; 0131; # LATIN CAPITAL LETTER I */
+                        return 0x131;
+                    } else if(c==0x130) {
+                        /* 0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        return 0x69;
+                    }
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&0xffff;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                /* skip the lowercase result string */
+                excOffset+=full&FULL_LOWER;
+                full=(full>>4)&0xf;
+
+                if(full!=0) {
+                    /* set the output pointer to the result string */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(hasSlot(excWord, EXC_FOLD)) {
+                index=EXC_FOLD;
+            } else if(hasSlot(excWord, EXC_LOWER)) {
+                index=EXC_LOWER;
+            } else {
+                return ~c;
+            }
+            result=getSlotValue(excWord, index, excOffset2);
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    // data members -------------------------------------------------------- ***
+    private int indexes[];
+    private char exceptions[];
+    private char unfold[];
+
+    private CharTrie trie;
+
+    // data format constants ----------------------------------------------- ***
+    private static final String DATA_NAME="ucase";
+    private static final String DATA_TYPE="icu";
+    private static final String DATA_FILE_NAME=DATA_NAME+"."+DATA_TYPE;
+
+    /* format "cAsE" */
+    private static final byte FMT[]={ 0x63, 0x41, 0x53, 0x45 };
+
+    /* indexes into indexes[] */
+    private static final int IX_INDEX_TOP=0;
+    //private static final int IX_LENGTH=1;
+    //private static final int IX_TRIE_SIZE=2;
+    private static final int IX_EXC_LENGTH=3;
+    private static final int IX_UNFOLD_LENGTH=4;
+
+    //private static final int IX_MAX_FULL_LENGTH=15;
+    private static final int IX_TOP=16;
+
+    // definitions for 16-bit case properties word ------------------------- ***
+
+    /* 2-bit constants for types of cased characters */
+    public static final int TYPE_MASK=3;
+    public static final int NONE=0;
+    public static final int LOWER=1;
+    public static final int UPPER=2;
+    public static final int TITLE=3;
+
+    private static final int getTypeFromProps(int props) {
+        return props&TYPE_MASK;
+    }
+
+    private static final int SENSITIVE=     4;
+    private static final int EXCEPTION=     8;
+
+    private static final int DOT_MASK=      0x30;
+    //private static final int NO_DOT=        0;      /* normal characters with cc=0 */
+    private static final int SOFT_DOTTED=   0x10;   /* soft-dotted characters with cc=0 */
+    private static final int ABOVE=         0x20;   /* "above" accents with cc=230 */
+    private static final int OTHER_ACCENT=  0x30;   /* other accent character (0<cc!=230) */
+
+    /* no exception: bits 15..6 are a 10-bit signed case mapping delta */
+    private static final int DELTA_SHIFT=   6;
+    //private static final int DELTA_MASK=    0xffc0;
+    //private static final int MAX_DELTA=     0x1ff;
+    //private static final int MIN_DELTA=     (-MAX_DELTA-1);
+
+    private static final int getDelta(int props) {
+        return (short)props>>DELTA_SHIFT;
+    }
+
+    /* case-ignorable uses one of the delta bits, see gencase/store.c */
+    private static final int CASE_IGNORABLE=0x40;
+
+    /* exception: bits 15..4 are an unsigned 12-bit index into the exceptions array */
+    private static final int EXC_SHIFT=     4;
+    //private static final int EXC_MASK=      0xfff0;
+    //private static final int MAX_EXCEPTIONS=0x1000;
+
+    /* definitions for 16-bit main exceptions word ------------------------------ */
+
+    /* first 8 bits indicate values in optional slots */
+    private static final int EXC_LOWER=0;
+    private static final int EXC_FOLD=1;
+    private static final int EXC_UPPER=2;
+    private static final int EXC_TITLE=3;
+    //private static final int EXC_4=4;           /* reserved */
+    //private static final int EXC_5=5;           /* reserved */
+    private static final int EXC_CLOSURE=6;
+    private static final int EXC_FULL_MAPPINGS=7;
+    //private static final int EXC_ALL_SLOTS=8;   /* one past the last slot */
+
+    /* each slot is 2 uint16_t instead of 1 */
+    private static final int EXC_DOUBLE_SLOTS=          0x100;
+
+    /* reserved: exception bits 11..9 */
+
+    /* EXC_DOT_MASK=DOT_MASK<<EXC_DOT_SHIFT */
+    private static final int EXC_DOT_SHIFT=8;
+
+    /* normally stored in the main word, but pushed out for larger exception indexes */
+    //private static final int EXC_DOT_MASK=              0x3000;
+    //private static final int EXC_NO_DOT=                0;
+    //private static final int EXC_SOFT_DOTTED=           0x1000;
+    //private static final int EXC_ABOVE=                 0x2000; /* "above" accents with cc=230 */
+    //private static final int EXC_OTHER_ACCENT=          0x3000; /* other character (0<cc!=230) */
+
+    /* complex/conditional mappings */
+    private static final int EXC_CONDITIONAL_SPECIAL=   0x4000;
+    private static final int EXC_CONDITIONAL_FOLD=      0x8000;
+
+    /* definitions for lengths word for full case mappings */
+    private static final int FULL_LOWER=    0xf;
+    //private static final int FULL_FOLDING=  0xf0;
+    //private static final int FULL_UPPER=    0xf00;
+    //private static final int FULL_TITLE=    0xf000;
+
+    /* maximum lengths */
+    //private static final int FULL_MAPPINGS_MAX_LENGTH=4*0xf;
+    private static final int CLOSURE_MAX_LENGTH=0xf;
+
+    /* constants for reverse case folding ("unfold") data */
+    private static final int UNFOLD_ROWS=0;
+    private static final int UNFOLD_ROW_WIDTH=1;
+    private static final int UNFOLD_STRING_WIDTH=2;
+}
diff --git a/src/com/ibm/icu/impl/UCharArrayIterator.java b/src/com/ibm/icu/impl/UCharArrayIterator.java
new file mode 100644
index 0000000..84b0b10
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharArrayIterator.java
@@ -0,0 +1,84 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.*;
+
+
+/**
+ * @author Doug Felt
+ *
+ */
+
+public final class UCharArrayIterator extends UCharacterIterator {
+    private final char[] text;
+    private final int start;
+    private final int limit;
+    private int pos;
+
+    public UCharArrayIterator(char[] text, int start, int limit) {
+        if (start < 0 || limit > text.length || start > limit) {
+            throw new IllegalArgumentException("start: " + start + " or limit: "
+                                               + limit + " out of range [0, " 
+                                               + text.length + ")");
+        }
+        this.text = text;
+        this.start = start;
+        this.limit = limit;
+
+        this.pos = start;
+    }
+
+    public int current() {
+        return pos < limit ? text[pos] : DONE;
+    }
+
+    public int getLength() {
+        return limit - start;
+    }
+
+    public int getIndex() {
+        return pos - start;
+    }
+
+    public int next() {
+        return pos < limit ? text[pos++] : DONE;
+    }
+
+    public int previous() {
+        return pos > start ? text[--pos] : DONE;
+    }
+
+    public void setIndex(int index) {
+        if (index < 0 || index > limit - start) {
+            throw new IndexOutOfBoundsException("index: " + index + 
+                                                " out of range [0, " 
+                                                + (limit - start) + ")");
+        }
+        pos = start + index;
+    }
+
+    public int getText(char[] fillIn, int offset) {
+        int len = limit - start;
+        System.arraycopy(text, start, fillIn, offset, len);
+        return len;
+    }
+
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+        try {
+          return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
new file mode 100644
index 0000000..9ca4900
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This class is a wrapper around UCharacterIterator and implements the 
+ * CharacterIterator protocol
+ * @author ram
+ */
+public class UCharacterIteratorWrapper implements CharacterIterator{
+    
+    public UCharacterIteratorWrapper(UCharacterIterator iter){
+        this.iterator = iter;
+    }
+    
+    private UCharacterIterator iterator;
+
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex()
+     */
+    public char first(){
+        //UCharacterIterator always iterates from 0 to length
+        iterator.setToStart();
+        return (char)iterator.current();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex()
+     */
+    public char last(){
+        iterator.setToLimit();
+        return (char)iterator.previous();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex()
+     */
+    public char current(){
+        return (char) iterator.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next(){
+        //pre-increment
+        iterator.next();
+        return (char) iterator.current();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous(){
+        //pre-decrement
+        return (char) iterator.previous();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position){
+        iterator.setIndex(position);
+        return (char) iterator.current();
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex(){
+        //UCharacterIterator always starts from 0
+        return 0;
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex(){
+        return iterator.getLength();
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex(){
+        return iterator.getIndex();
+    }
+
+    /**
+     * Create a copy of this iterator
+     * @return A copy of this
+     */
+    public Object clone(){
+        try {
+            UCharacterIteratorWrapper result = (UCharacterIteratorWrapper) super.clone();
+            result.iterator = (UCharacterIterator)this.iterator.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+        }
+    }   
+
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterName.java b/src/com/ibm/icu/impl/UCharacterName.java
new file mode 100644
index 0000000..183c190
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterName.java
@@ -0,0 +1,1669 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+
+/**
+* Internal class to manage character names.
+* Since data for names are stored
+* in an array of char, by default indexes used in this class is refering to
+* a 2 byte count, unless otherwise stated. Cases where the index is refering
+* to a byte count, the index is halved and depending on whether the index is
+* even or odd, the MSB or LSB of the result char at the halved index is
+* returned. For indexes to an array of int, the index is multiplied by 2,
+* result char at the multiplied index and its following char is returned as an
+* int.
+* <a href=../lang/UCharacter.html>UCharacter</a> acts as a public facade for this class
+* Note : 0 - 0x1F are control characters without names in Unicode 3.0
+* @author Syn Wee Quek
+* @since nov0700
+*/
+
+public final class UCharacterName
+{
+    // public data members ----------------------------------------------
+
+    /**
+    * Number of lines per group
+    * 1 << GROUP_SHIFT_
+    */
+    public static final int LINES_PER_GROUP_ = 1 << 5;
+    /**
+     * Maximum number of groups
+     */
+    public int m_groupcount_ = 0;
+
+    // public methods ---------------------------------------------------
+
+    /**
+     * Gets the only instance of UCharacterName
+     * @return only instance of UCharacterName
+     * @exception MissingResourceException thrown when reading of name data fails
+     */
+    public static UCharacterName getInstance()
+    {
+        if (INSTANCE_ == null) {
+            try {
+                INSTANCE_ = new UCharacterName();
+            }catch(IOException e){
+                throw new MissingResourceException("Could not construct UCharacterName. Missing unames.icu","","");
+            }
+            catch (Exception e) {
+                throw new MissingResourceException(e.getMessage(),"","");
+            }
+        }
+        return INSTANCE_;
+    }
+
+    /**
+    * Retrieve the name of a Unicode code point.
+    * Depending on <code>choice</code>, the character name written into the
+    * buffer is the "modern" name or the name that was defined in Unicode
+    * version 1.0.
+    * The name contains only "invariant" characters
+    * like A-Z, 0-9, space, and '-'.
+    *
+    * @param ch the code point for which to get the name.
+    * @param choice Selector for which name to get.
+    * @return if code point is above 0x1fff, null is returned
+    */
+    public String getName(int ch, int choice)
+    {
+        if (ch < UCharacter.MIN_VALUE || ch > UCharacter.MAX_VALUE ||
+            choice > UCharacterNameChoice.CHAR_NAME_CHOICE_COUNT) {
+            return null;
+        }
+
+        String result = null;
+
+        result = getAlgName(ch, choice);
+
+        // getting normal character name
+        if (result == null || result.length() == 0) {
+            if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                result = getExtendedName(ch);
+            } else {
+                result = getGroupName(ch, choice);
+            }
+        }
+
+        return result;
+    }
+
+    /**
+    * Find a character by its name and return its code point value
+    * @param choice selector to indicate if argument name is a Unicode 1.0
+    *        or the most current version
+    * @param name the name to search for
+    * @return code point
+    */
+    public int getCharFromName(int choice, String name)
+    {
+        // checks for illegal arguments
+        if (choice >= UCharacterNameChoice.CHAR_NAME_CHOICE_COUNT ||
+            name == null || name.length() == 0) {
+            return -1;
+        }
+
+        // try extended names first
+        int result = getExtendedChar(name.toLowerCase(), choice);
+        if (result >= -1) {
+            return result;
+        }
+
+        String upperCaseName = name.toUpperCase();
+        // try algorithmic names first, if fails then try group names
+        // int result = getAlgorithmChar(choice, uppercasename);
+
+        if (choice != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            int count = 0;
+            if (m_algorithm_ != null) {
+                count = m_algorithm_.length;
+            }
+            for (count --; count >= 0; count --) {
+                result = m_algorithm_[count].getChar(upperCaseName);
+                if (result >= 0) {
+                    return result;
+                }
+            }
+        }
+
+        if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+            result = getGroupChar(upperCaseName,
+                                  UCharacterNameChoice.UNICODE_CHAR_NAME);
+            if (result == -1) {
+                result = getGroupChar(upperCaseName,
+                                  UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+            }
+        }
+        else {
+            result = getGroupChar(upperCaseName, choice);
+        }
+        return result;
+    }
+
+    // these are all UCharacterNameIterator use methods -------------------
+
+    /**
+    * Reads a block of compressed lengths of 32 strings and expands them into
+    * offsets and lengths for each string. Lengths are stored with a
+    * variable-width encoding in consecutive nibbles:
+    * If a nibble<0xc, then it is the length itself (0 = empty string).
+    * If a nibble>=0xc, then it forms a length value with the following
+    * nibble.
+    * The offsets and lengths arrays must be at least 33 (one more) long
+    * because there is no check here at the end if the last nibble is still
+    * used.
+    * @param index of group string object in array
+    * @param offsets array to store the value of the string offsets
+    * @param lengths array to store the value of the string length
+    * @return next index of the data string immediately after the lengths
+    *         in terms of byte address
+    */
+    public int getGroupLengths(int index, char offsets[], char lengths[])
+    {
+        char length = 0xffff;
+        byte b = 0,
+            n = 0;
+        int shift;
+        index = index * m_groupsize_; // byte count offsets of group strings
+        int stringoffset = UCharacterUtility.toInt(
+                                 m_groupinfo_[index + OFFSET_HIGH_OFFSET_],
+                                 m_groupinfo_[index + OFFSET_LOW_OFFSET_]);
+
+        offsets[0] = 0;
+
+        // all 32 lengths must be read to get the offset of the first group
+        // string
+        for (int i = 0; i < LINES_PER_GROUP_; stringoffset ++) {
+            b = m_groupstring_[stringoffset];
+            shift = 4;
+
+            while (shift >= 0) {
+                // getting nibble
+                n = (byte)((b >> shift) & 0x0F);
+                if (length == 0xffff && n > SINGLE_NIBBLE_MAX_) {
+                    length = (char)((n - 12) << 4);
+                }
+                else {
+                    if (length != 0xffff) {
+                       lengths[i] = (char)((length | n) + 12);
+                    }
+                    else {
+                       lengths[i] = (char)n;
+                    }
+
+                    if (i < LINES_PER_GROUP_) {
+                       offsets[i + 1] = (char)(offsets[i] + lengths[i]);
+                    }
+
+                    length = 0xffff;
+                    i ++;
+                }
+
+                shift -= 4;
+            }
+        }
+        return stringoffset;
+    }
+
+    /**
+    * Gets the name of the argument group index.
+    * UnicodeData.txt uses ';' as a field separator, so no field can contain
+    * ';' as part of its contents. In unames.icu, it is marked as
+    * token[';'] == -1 only if the semicolon is used in the data file - which
+    * is iff we have Unicode 1.0 names or ISO comments.
+    * So, it will be token[';'] == -1 if we store U1.0 names/ISO comments
+    * although we know that it will never be part of a name.
+    * Equivalent to ICU4C's expandName.
+    * @param index of the group name string in byte count
+    * @param length of the group name string
+    * @param choice of Unicode 1.0 name or the most current name
+    * @return name of the group
+    */
+    public String getGroupName(int index, int length, int choice)
+    {
+        if (choice == UCharacterNameChoice.UNICODE_10_CHAR_NAME
+            || choice == UCharacterNameChoice.ISO_COMMENT_) {
+            if (';' >= m_tokentable_.length || m_tokentable_[';'] == 0xFFFF) {
+                // skip the modern name
+                int oldindex = index;
+                index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                   index, length, (byte)';');
+                length -= (index - oldindex);
+                if (choice == UCharacterNameChoice.ISO_COMMENT_) {
+                    // skips the 1.0 Name to the iso comment part
+                    oldindex = index;
+                    index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                    index, length, (byte)';');
+                    length -= (index - oldindex);
+                }
+            }
+            else {
+                // the semicolon byte is a token number, therefore only modern
+                // names are stored in unames.dat and there is no such
+                // requested Unicode 1.0 name here
+                length = 0;
+            }
+        }
+
+        synchronized (m_utilStringBuffer_) {
+            m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+            byte b;
+            char token;
+            for (int i = 0; i < length;) {
+                b = m_groupstring_[index + i];
+                i ++;
+
+                if (b >= m_tokentable_.length) {
+                    if (b == ';') {
+                        break;
+                    }
+                    m_utilStringBuffer_.append(b); // implicit letter
+                }
+                else {
+                    token = m_tokentable_[b & 0x00ff];
+                    if (token == 0xFFFE) {
+                        // this is a lead byte for a double-byte token
+                        token = m_tokentable_[b << 8 |
+                                          (m_groupstring_[index + i] & 0x00ff)];
+                        i ++;
+                    }
+                    if (token == 0xFFFF) {
+                        if (b == ';') {
+                            // skip the semicolon if we are seeking extended
+                            // names and there was no 2.0 name but there
+                            // is a 1.0 name.
+                            if (m_utilStringBuffer_.length() == 0 && choice ==
+                                   UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                                continue;
+                            }
+                            break;
+                        }
+                        // explicit letter
+                        m_utilStringBuffer_.append((char)(b & 0x00ff));
+                    }
+                    else { // write token word
+                        UCharacterUtility.getNullTermByteSubString(
+                                m_utilStringBuffer_, m_tokenstring_, token);
+                    }
+                }
+            }
+
+            if (m_utilStringBuffer_.length() > 0) {
+                return m_utilStringBuffer_.toString();
+            }
+        }
+        return null;
+    }
+
+    /**
+    * Retrieves the extended name
+    */
+    public String getExtendedName(int ch)
+    {
+        String result = getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
+        if (result == null) {
+            if (getType(ch) == UCharacterCategory.CONTROL) {
+                result = getName(ch,
+                                 UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+            }
+            if (result == null) {
+                result = getExtendedOr10Name(ch);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the group index for the codepoint, or the group before it.
+     * @param codepoint
+     * @return group index containing codepoint or the group before it.
+     */
+    public int getGroup(int codepoint)
+    {
+        int endGroup = m_groupcount_;
+        int msb      = getCodepointMSB(codepoint);
+        int result   = 0;
+        // binary search for the group of names that contains the one for
+        // code
+        // find the group that contains codepoint, or the highest before it
+        while (result < endGroup - 1) {
+            int gindex = (result + endGroup) >> 1;
+            if (msb < getGroupMSB(gindex)) {
+                endGroup = gindex;
+            }
+            else {
+                result = gindex;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the extended and 1.0 name when the most current unicode names
+     * fail
+     * @param ch codepoint
+     * @return name of codepoint extended or 1.0
+     */
+    public String getExtendedOr10Name(int ch)
+    {
+        String result = null;
+        if (getType(ch) == UCharacterCategory.CONTROL) {
+            result = getName(ch,
+                             UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+        }
+        if (result == null) {
+            int type = getType(ch);
+            // Return unknown if the table of names above is not up to
+            // date.
+            if (type >= TYPE_NAMES_.length) {
+                result = UNKNOWN_TYPE_NAME_;
+            }
+            else {
+                result = TYPE_NAMES_[type];
+            }
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+                m_utilStringBuffer_.append('<');
+                m_utilStringBuffer_.append(result);
+                m_utilStringBuffer_.append('-');
+                String chStr = Integer.toHexString(ch).toUpperCase();
+                int zeros = 4 - chStr.length();
+                while (zeros > 0) {
+                    m_utilStringBuffer_.append('0');
+                    zeros --;
+                }
+                m_utilStringBuffer_.append(chStr);
+                m_utilStringBuffer_.append('>');
+                result = m_utilStringBuffer_.toString();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the MSB from the group index
+     * @param gindex group index
+     * @return the MSB of the group if gindex is valid, -1 otherwise
+     */
+    public int getGroupMSB(int gindex)
+    {
+        if (gindex >= m_groupcount_) {
+            return -1;
+        }
+        return m_groupinfo_[gindex * m_groupsize_];
+    }
+
+    /**
+     * Gets the MSB of the codepoint
+     * @param codepoint
+     * @return the MSB of the codepoint
+     */
+    public static int getCodepointMSB(int codepoint)
+    {
+        return codepoint >> GROUP_SHIFT_;
+    }
+
+    /**
+     * Gets the maximum codepoint + 1 of the group
+     * @param msb most significant byte of the group
+     * @return limit codepoint of the group
+     */
+    public static int getGroupLimit(int msb)
+    {
+        return (msb << GROUP_SHIFT_) + LINES_PER_GROUP_;
+    }
+
+    /**
+     * Gets the minimum codepoint of the group
+     * @param msb most significant byte of the group
+     * @return minimum codepoint of the group
+     */
+    public static int getGroupMin(int msb)
+    {
+        return msb << GROUP_SHIFT_;
+    }
+
+    /**
+     * Gets the offset to a group
+     * @param codepoint
+     * @return offset to a group
+     */
+    public static int getGroupOffset(int codepoint)
+    {
+        return codepoint & GROUP_MASK_;
+    }
+
+    /**
+     * Gets the minimum codepoint of a group
+     * @param codepoint
+     * @return minimum codepoint in the group which codepoint belongs to
+     */
+    ///CLOVER:OFF
+    public static int getGroupMinFromCodepoint(int codepoint)
+    {
+        return codepoint & ~GROUP_MASK_;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Get the Algorithm range length
+     * @return Algorithm range length
+     */
+    public int getAlgorithmLength()
+    {
+        return m_algorithm_.length;
+    }
+
+    /**
+     * Gets the start of the range
+     * @param index algorithm index
+     * @return algorithm range start
+     */
+    public int getAlgorithmStart(int index)
+    {
+        return m_algorithm_[index].m_rangestart_;
+    }
+
+    /**
+     * Gets the end of the range
+     * @param index algorithm index
+     * @return algorithm range end
+     */
+    public int getAlgorithmEnd(int index)
+    {
+        return m_algorithm_[index].m_rangeend_;
+    }
+
+    /**
+     * Gets the Algorithmic name of the codepoint
+     * @param index algorithmic range index
+     * @param codepoint
+     * @return algorithmic name of codepoint
+     */
+    public String getAlgorithmName(int index, int codepoint)
+    {
+        String result = null;
+        synchronized (m_utilStringBuffer_) {
+            m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+            m_algorithm_[index].appendName(codepoint, m_utilStringBuffer_);
+            result = m_utilStringBuffer_.toString();
+        }
+        return result;
+    }
+
+    /**
+    * Gets the group name of the character
+    * @param ch character to get the group name
+    * @param choice name choice selector to choose a unicode 1.0 or newer name
+    */
+    public synchronized String getGroupName(int ch, int choice)
+    {
+        // gets the msb
+        int msb   = getCodepointMSB(ch);
+        int group = getGroup(ch);
+
+        // return this if it is an exact match
+        if (msb == m_groupinfo_[group * m_groupsize_]) {
+            int index = getGroupLengths(group, m_groupoffsets_,
+                                        m_grouplengths_);
+            int offset = ch & GROUP_MASK_;
+            return getGroupName(index + m_groupoffsets_[offset],
+                                m_grouplengths_[offset], choice);
+        }
+
+        return null;
+    }
+
+    // these are transliterator use methods ---------------------------------
+
+    /**
+     * Gets the maximum length of any codepoint name.
+     * Equivalent to uprv_getMaxCharNameLength.
+     * @return the maximum length of any codepoint name
+     */
+    public int getMaxCharNameLength()
+    {
+        if (initNameSetsLengths()) {
+            return m_maxNameLength_;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Gets the maximum length of any iso comments.
+     * Equivalent to uprv_getMaxISOCommentLength.
+     * @return the maximum length of any codepoint name
+     */
+    ///CLOVER:OFF
+    public int getMaxISOCommentLength()
+    {
+        if (initNameSetsLengths()) {
+            return m_maxISOCommentLength_;
+        }
+        else {
+            return 0;
+        }
+    }
+    ///CLOVER:ON
+
+    /**
+     * Fills set with characters that are used in Unicode character names.
+     * Equivalent to uprv_getCharNameCharacters.
+     * @param set USet to receive characters. Existing contents are deleted.
+     */
+    public void getCharNameCharacters(UnicodeSet set)
+    {
+        convert(m_nameSet_, set);
+    }
+
+    /**
+     * Fills set with characters that are used in Unicode character names.
+     * Equivalent to uprv_getISOCommentCharacters.
+     * @param set USet to receive characters. Existing contents are deleted.
+     */
+    ///CLOVER:OFF
+    public void getISOCommentCharacters(UnicodeSet set)
+    {
+        convert(m_ISOCommentSet_, set);
+    }
+    ///CLOVER:ON
+
+    // package private inner class --------------------------------------
+
+    /**
+    * Algorithmic name class
+    */
+    static final class AlgorithmName
+    {
+        // package private data members ----------------------------------
+
+        /**
+        * Constant type value of the different AlgorithmName
+        */
+        static final int TYPE_0_ = 0;
+        static final int TYPE_1_ = 1;
+
+        // package private constructors ----------------------------------
+
+        /**
+        * Constructor
+        */
+        AlgorithmName()
+        {
+        }
+
+        // package private methods ---------------------------------------
+
+        /**
+        * Sets the information for accessing the algorithmic names
+        * @param rangestart starting code point that lies within this name group
+        * @param rangeend end code point that lies within this name group
+        * @param type algorithm type. There's 2 kinds of algorithmic type. First
+        *        which uses code point as part of its name and the other uses
+        *        variant postfix strings
+        * @param variant algorithmic variant
+        * @return true if values are valid
+        */
+        boolean setInfo(int rangestart, int rangeend, byte type, byte variant)
+        {
+            if (rangestart >= UCharacter.MIN_VALUE && rangestart <= rangeend
+                && rangeend <= UCharacter.MAX_VALUE &&
+                (type == TYPE_0_ || type == TYPE_1_)) {
+                m_rangestart_ = rangestart;
+                m_rangeend_ = rangeend;
+                m_type_ = type;
+                m_variant_ = variant;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the factor data
+        * @param factor Array of factor
+        * @return true if factors are valid
+        */
+        boolean setFactor(char factor[])
+        {
+            if (factor.length == m_variant_) {
+                m_factor_ = factor;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the name prefix
+        * @param prefix
+        * @return true if prefix is set
+        */
+        boolean setPrefix(String prefix)
+        {
+            if (prefix != null && prefix.length() > 0) {
+                m_prefix_ = prefix;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the variant factorized name data
+        * @param string variant factorized name data
+        * @return true if values are set
+        */
+        boolean setFactorString(byte string[])
+        {
+            // factor and variant string can be empty for things like
+            // hanggul code points
+            m_factorstring_ = string;
+            return true;
+        }
+
+        /**
+        * Checks if code point lies in Algorithm object at index
+        * @param ch code point
+        */
+        boolean contains(int ch)
+        {
+            return m_rangestart_ <= ch && ch <= m_rangeend_;
+        }
+
+        /**
+        * Appends algorithm name of code point into StringBuffer.
+        * Note this method does not check for validity of code point in Algorithm,
+        * result is undefined if code point does not belong in Algorithm.
+        * @param ch code point
+        * @param str StringBuffer to append to
+        */
+        void appendName(int ch, StringBuffer str)
+        {
+            str.append(m_prefix_);
+            switch (m_type_)
+            {
+                case TYPE_0_:
+                    // prefix followed by hex digits indicating variants
+                    Utility.hex(ch, m_variant_, str);
+                    break;
+                case TYPE_1_:
+                    // prefix followed by factorized-elements
+                    int offset = ch - m_rangestart_;
+                    int indexes[] = m_utilIntBuffer_;
+                    int factor;
+
+                    // write elements according to the factors
+                    // the factorized elements are determined by modulo
+                    // arithmetic
+                    synchronized (m_utilIntBuffer_) {
+                        for (int i = m_variant_ - 1; i > 0; i --)
+                        {
+                            factor = m_factor_[i] & 0x00FF;
+                            indexes[i] = offset % factor;
+                            offset /= factor;
+                        }
+
+                        // we don't need to calculate the last modulus because
+                        // start <= code <= end guarantees here that
+                        // code <= factors[0]
+                        indexes[0] = offset;
+
+                        // joining up the factorized strings
+                        str.append(getFactorString(indexes, m_variant_));
+                    }
+                    break;
+            }
+        }
+
+        /**
+        * Gets the character for the argument algorithmic name
+        * @return the algorithmic char or -1 otherwise.
+        */
+        int getChar(String name)
+        {
+            int prefixlen = m_prefix_.length();
+            if (name.length() < prefixlen ||
+                !m_prefix_.equals(name.substring(0, prefixlen))) {
+                return -1;
+            }
+
+            switch (m_type_)
+            {
+                case TYPE_0_ :
+                try
+                {
+                    int result = Integer.parseInt(name.substring(prefixlen),
+                                                  16);
+                    // does it fit into the range?
+                    if (m_rangestart_ <= result && result <= m_rangeend_) {
+                        return result;
+                    }
+                }
+                catch (NumberFormatException e)
+                {
+                    return -1;
+                }
+                break;
+                case TYPE_1_ :
+                    // repetitative suffix name comparison done here
+                    // offset is the character code - start
+                    for (int ch = m_rangestart_; ch <= m_rangeend_; ch ++)
+                    {
+                        int offset = ch - m_rangestart_;
+                        int indexes[] = m_utilIntBuffer_;
+                        int factor;
+
+                        // write elements according to the factors
+                        // the factorized elements are determined by modulo
+                        // arithmetic
+                        synchronized (m_utilIntBuffer_) {
+                            for (int i = m_variant_ - 1; i > 0; i --)
+                            {
+                                factor = m_factor_[i] & 0x00FF;
+                                indexes[i] = offset % factor;
+                                offset /= factor;
+                            }
+
+                            // we don't need to calculate the last modulus
+                            // because start <= code <= end guarantees here that
+                            // code <= factors[0]
+                            indexes[0] = offset;
+
+                            // joining up the factorized strings
+                            if (compareFactorString(indexes, m_variant_, name,
+                                                    prefixlen)) {
+                                return ch;
+                            }
+                        }
+                    }
+            }
+
+            return -1;
+        }
+
+        /**
+         * Adds all chars in the set of algorithmic names into the set.
+         * Equivalent to part of calcAlgNameSetsLengths.
+         * @param set int set to add the chars of the algorithm names into
+         * @param maxlength maximum length to compare to
+         * @return the length that is either maxlength of the length of this
+         *         algorithm name if it is longer than maxlength
+         */
+        int add(int set[], int maxlength)
+        {
+            // prefix length
+            int length = UCharacterName.add(set, m_prefix_);
+            switch (m_type_) {
+                case TYPE_0_ : {
+                    // name = prefix + (range->variant times) hex-digits
+                    // prefix
+                    length += m_variant_;
+                    /* synwee to check
+                     * addString(set, (const char *)(range + 1))
+                                       + range->variant;*/
+                    break;
+                }
+                case TYPE_1_ : {
+                    // name = prefix factorized-elements
+                    // get the set and maximum factor suffix length for each
+                    // factor
+                    for (int i = m_variant_ - 1; i > 0; i --)
+                    {
+                        int maxfactorlength = 0;
+                        int count = 0;
+                        for (int factor = m_factor_[i]; factor > 0; -- factor) {
+                            synchronized (m_utilStringBuffer_) {
+                                m_utilStringBuffer_.delete(0,
+                                                m_utilStringBuffer_.length());
+                                count
+                                  = UCharacterUtility.getNullTermByteSubString(
+                                                m_utilStringBuffer_,
+                                                m_factorstring_, count);
+                                UCharacterName.add(set, m_utilStringBuffer_);
+                                if (m_utilStringBuffer_.length()
+                                                            > maxfactorlength)
+                                {
+                                    maxfactorlength
+                                                = m_utilStringBuffer_.length();
+                                }
+                            }
+                        }
+                        length += maxfactorlength;
+                    }
+                }
+            }
+            if (length > maxlength) {
+                return length;
+            }
+            return maxlength;
+        }
+
+        // private data members ------------------------------------------
+
+        /**
+        * Algorithmic data information
+        */
+        private int m_rangestart_;
+        private int m_rangeend_;
+        private byte m_type_;
+        private byte m_variant_;
+        private char m_factor_[];
+        private String m_prefix_;
+        private byte m_factorstring_[];
+        /**
+         * Utility StringBuffer
+         */
+        private StringBuffer m_utilStringBuffer_ = new StringBuffer();
+        /**
+         * Utility int buffer
+         */
+        private int m_utilIntBuffer_[] = new int[256];
+
+        // private methods -----------------------------------------------
+
+        /**
+        * Gets the indexth string in each of the argument factor block
+        * @param index array with each index corresponding to each factor block
+        * @param length length of the array index
+        * @return the combined string of the array of indexth factor string in
+        *         factor block
+        */
+        private String getFactorString(int index[], int length)
+        {
+            int size = m_factor_.length;
+            if (index == null || length != size) {
+                return null;
+            }
+
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+                int count = 0;
+                int factor;
+                size --;
+                for (int i = 0; i <= size; i ++) {
+                    factor = m_factor_[i];
+                    count = UCharacterUtility.skipNullTermByteSubString(
+                                             m_factorstring_, count, index[i]);
+                    count = UCharacterUtility.getNullTermByteSubString(
+                                          m_utilStringBuffer_, m_factorstring_,
+                                          count);
+                    if (i != size) {
+                        count = UCharacterUtility.skipNullTermByteSubString(
+                                                       m_factorstring_, count,
+                                                       factor - index[i] - 1);
+                    }
+                }
+                return m_utilStringBuffer_.toString();
+            }
+        }
+
+        /**
+        * Compares the indexth string in each of the argument factor block with
+        * the argument string
+        * @param index array with each index corresponding to each factor block
+        * @param length index array length
+        * @param str string to compare with
+        * @param offset of str to start comparison
+        * @return true if string matches
+        */
+        private boolean compareFactorString(int index[], int length, String str,
+                                            int offset)
+        {
+            int size = m_factor_.length;
+            if (index == null || length != size)
+                return false;
+
+            int count = 0;
+            int strcount = offset;
+            int factor;
+            size --;
+            for (int i = 0; i <= size; i ++)
+            {
+                factor = m_factor_[i];
+                count = UCharacterUtility.skipNullTermByteSubString(
+                                          m_factorstring_, count, index[i]);
+                strcount = UCharacterUtility.compareNullTermByteSubString(str,
+                                          m_factorstring_, strcount, count);
+                if (strcount < 0) {
+                    return false;
+                }
+
+                if (i != size) {
+                    count = UCharacterUtility.skipNullTermByteSubString(
+                                  m_factorstring_, count, factor - index[i]);
+                }
+            }
+            if (strcount != str.length()) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    // package private data members --------------------------------------
+
+    /**
+     * Size of each groups
+     */
+    int m_groupsize_ = 0;
+
+    // package private methods --------------------------------------------
+
+    /**
+    * Sets the token data
+    * @param token array of tokens
+    * @param tokenstring array of string values of the tokens
+    * @return false if there is a data error
+    */
+    boolean setToken(char token[], byte tokenstring[])
+    {
+        if (token != null && tokenstring != null && token.length > 0 &&
+            tokenstring.length > 0) {
+            m_tokentable_ = token;
+            m_tokenstring_ = tokenstring;
+            return true;
+        }
+        return false;
+    }
+
+    /**
+    * Set the algorithm name information array
+    * @param alg Algorithm information array
+    * @return true if the group string offset has been set correctly
+    */
+    boolean setAlgorithm(AlgorithmName alg[])
+    {
+        if (alg != null && alg.length != 0) {
+            m_algorithm_ = alg;
+            return true;
+        }
+        return false;
+    }
+
+    /**
+    * Sets the number of group and size of each group in number of char
+    * @param count number of groups
+    * @param size size of group in char
+    * @return true if group size is set correctly
+    */
+    boolean setGroupCountSize(int count, int size)
+    {
+        if (count <= 0 || size <= 0) {
+            return false;
+        }
+        m_groupcount_ = count;
+        m_groupsize_ = size;
+        return true;
+    }
+
+    /**
+    * Sets the group name data
+    * @param group index information array
+    * @param groupstring name information array
+    * @return false if there is a data error
+    */
+    boolean setGroup(char group[], byte groupstring[])
+    {
+        if (group != null && groupstring != null && group.length > 0 &&
+            groupstring.length > 0) {
+            m_groupinfo_ = group;
+            m_groupstring_ = groupstring;
+            return true;
+        }
+        return false;
+    }
+
+    // private data members ----------------------------------------------
+
+    /**
+    * Data used in unames.icu
+    */
+    private char m_tokentable_[];
+    private byte m_tokenstring_[];
+    private char m_groupinfo_[];
+    private byte m_groupstring_[];
+    private AlgorithmName m_algorithm_[];
+
+    /**
+    * Group use.  Note - access must be synchronized.
+    */
+    private char m_groupoffsets_[] = new char[LINES_PER_GROUP_ + 1];
+    private char m_grouplengths_[] = new char[LINES_PER_GROUP_ + 1];
+
+    /**
+    * Default name of the name datafile
+    */
+    private static final String NAME_FILE_NAME_ = ICUResourceBundle.ICU_BUNDLE+"/unames.icu";
+    /**
+    * Shift count to retrieve group information
+    */
+    private static final int GROUP_SHIFT_ = 5;
+    /**
+    * Mask to retrieve the offset for a particular character within a group
+    */
+    private static final int GROUP_MASK_ = LINES_PER_GROUP_ - 1;
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int NAME_BUFFER_SIZE_ = 100000;
+
+    /**
+    * Position of offsethigh in group information array
+    */
+    private static final int OFFSET_HIGH_OFFSET_ = 1;
+
+    /**
+    * Position of offsetlow in group information array
+    */
+    private static final int OFFSET_LOW_OFFSET_ = 2;
+    /**
+    * Double nibble indicator, any nibble > this number has to be combined
+    * with its following nibble
+    */
+    private static final int SINGLE_NIBBLE_MAX_ = 11;
+
+    /*
+     * Maximum length of character names (regular & 1.0).
+     */
+    //private static int MAX_NAME_LENGTH_ = 0;
+    /*
+     * Maximum length of ISO comments.
+     */
+    //private static int MAX_ISO_COMMENT_LENGTH_ = 0;
+
+    /**
+     * Set of chars used in character names (regular & 1.0).
+     * Chars are platform-dependent (can be EBCDIC).
+     */
+    private int m_nameSet_[] = new int[8];
+    /**
+     * Set of chars used in ISO comments. (regular & 1.0).
+     * Chars are platform-dependent (can be EBCDIC).
+     */
+    private int m_ISOCommentSet_[] = new int[8];
+    /**
+     * Utility StringBuffer
+     */
+    private StringBuffer m_utilStringBuffer_ = new StringBuffer();
+    /**
+     * Utility int buffer
+     */
+    private int m_utilIntBuffer_[] = new int[2];
+    /**
+     * Maximum ISO comment length
+     */
+    private int m_maxISOCommentLength_;
+    /**
+     * Maximum name length
+     */
+    private int m_maxNameLength_;
+    /**
+     * Singleton instance
+     */
+    private static UCharacterName INSTANCE_ = null;
+    /**
+     * Type names used for extended names
+     */
+    private static final String TYPE_NAMES_[] = {"unassigned",
+                                                 "uppercase letter",
+                                                 "lowercase letter",
+                                                 "titlecase letter",
+                                                 "modifier letter",
+                                                 "other letter",
+                                                 "non spacing mark",
+                                                 "enclosing mark",
+                                                 "combining spacing mark",
+                                                 "decimal digit number",
+                                                 "letter number",
+                                                 "other number",
+                                                 "space separator",
+                                                 "line separator",
+                                                 "paragraph separator",
+                                                 "control",
+                                                 "format",
+                                                 "private use area",
+                                                 "surrogate",
+                                                 "dash punctuation",
+                                                 "start punctuation",
+                                                 "end punctuation",
+                                                 "connector punctuation",
+                                                 "other punctuation",
+                                                 "math symbol",
+                                                 "currency symbol",
+                                                 "modifier symbol",
+                                                 "other symbol",
+                                                 "initial punctuation",
+                                                 "final punctuation",
+                                                 "noncharacter",
+                                                 "lead surrogate",
+                                                 "trail surrogate"};
+    /**
+     * Unknown type name
+     */
+    private static final String UNKNOWN_TYPE_NAME_ = "unknown";
+    /**
+     * Not a character type
+     */
+    private static final int NON_CHARACTER_
+                                    = UCharacterCategory.CHAR_CATEGORY_COUNT;
+    /**
+    * Lead surrogate type
+    */
+    private static final int LEAD_SURROGATE_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 1;
+    /**
+    * Trail surrogate type
+    */
+    private static final int TRAIL_SURROGATE_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 2;
+    /**
+    * Extended category count
+    */
+    static final int EXTENDED_CATEGORY_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 3;
+
+    // private constructor ------------------------------------------------
+
+    /**
+    * <p>Protected constructor for use in UCharacter.</p>
+    * @exception IOException thrown when data reading fails
+    */
+    private UCharacterName() throws IOException
+    {
+        InputStream is = ICUData.getRequiredStream(NAME_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(is, NAME_BUFFER_SIZE_);
+        UCharacterNameReader reader = new UCharacterNameReader(b);
+        reader.read(this);
+        b.close();
+    }
+
+    // private methods ---------------------------------------------------
+
+    /**
+    * Gets the algorithmic name for the argument character
+    * @param ch character to determine name for
+    * @param choice name choice
+    * @return the algorithmic name or null if not found
+    */
+    private String getAlgName(int ch, int choice)
+    {
+        // Do not write algorithmic Unicode 1.0 names because Unihan names are
+        // the same as the modern ones, extension A was only introduced with
+        // Unicode 3.0, and the Hangul syllable block was moved and changed
+        // around Unicode 1.1.5.
+        if (choice != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            // index in terms integer index
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+
+                for (int index = m_algorithm_.length - 1; index >= 0; index --)
+                {
+                   if (m_algorithm_[index].contains(ch)) {
+                      m_algorithm_[index].appendName(ch, m_utilStringBuffer_);
+                      return m_utilStringBuffer_.toString();
+                   }
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+    * Getting the character with the tokenized argument name
+    * @param name of the character
+    * @return character with the tokenized argument name or -1 if character
+    *         is not found
+    */
+    private synchronized int getGroupChar(String name, int choice)
+    {
+        for (int i = 0; i < m_groupcount_; i ++) {
+            // populating the data set of grouptable
+
+            int startgpstrindex = getGroupLengths(i, m_groupoffsets_,
+                                                  m_grouplengths_);
+
+            // shift out to function
+            int result = getGroupChar(startgpstrindex, m_grouplengths_, name,
+                                      choice);
+            if (result != -1) {
+                return (m_groupinfo_[i * m_groupsize_] << GROUP_SHIFT_)
+                         | result;
+            }
+        }
+        return -1;
+    }
+
+    /**
+    * Compares and retrieve character if name is found within the argument
+    * group
+    * @param index index where the set of names reside in the group block
+    * @param length list of lengths of the strings
+    * @param name character name to search for
+    * @param choice of either 1.0 or the most current unicode name
+    * @return relative character in the group which matches name, otherwise if
+    *         not found, -1 will be returned
+    */
+    private int getGroupChar(int index, char length[], String name,
+                             int choice)
+    {
+        byte b = 0;
+        char token;
+        int len;
+        int namelen = name.length();
+        int nindex;
+        int count;
+
+        for (int result = 0; result <= LINES_PER_GROUP_; result ++) {
+            nindex = 0;
+            len = length[result];
+
+            if (choice == UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+                int oldindex = index;
+                index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                     index, len, (byte)';');
+                len -= (index - oldindex);
+            }
+
+            // number of tokens is > the length of the name
+            // write each letter directly, and write a token word per token
+            for (count = 0; count < len && nindex != -1 && nindex < namelen;
+                ) {
+                b = m_groupstring_[index + count];
+                count ++;
+
+                if (b >= m_tokentable_.length) {
+                    if (name.charAt(nindex ++) != (b & 0xFF)) {
+                        nindex = -1;
+                    }
+                }
+                else {
+                    token = m_tokentable_[b & 0xFF];
+                    if (token == 0xFFFE) {
+                        // this is a lead byte for a double-byte token
+                        token = m_tokentable_[b << 8 |
+                                   (m_groupstring_[index + count] & 0x00ff)];
+                        count ++;
+                    }
+                    if (token == 0xFFFF) {
+                        if (name.charAt(nindex ++) != (b & 0xFF)) {
+                            nindex = -1;
+                        }
+                    }
+                    else {
+                        // compare token with name
+                        nindex = UCharacterUtility.compareNullTermByteSubString(
+                                        name, m_tokenstring_, nindex, token);
+                    }
+                }
+            }
+
+            if (namelen == nindex &&
+                (count == len || m_groupstring_[index + count] == ';')) {
+                return result;
+            }
+
+            index += len;
+        }
+        return -1;
+    }
+
+    /**
+    * Gets the character extended type
+    * @param ch character to be tested
+    * @return extended type it is associated with
+    */
+    private static int getType(int ch)
+    {
+        if (UCharacterUtility.isNonCharacter(ch)) {
+            // not a character we return a invalid category count
+            return NON_CHARACTER_;
+        }
+        int result = UCharacter.getType(ch);
+        if (result == UCharacterCategory.SURROGATE) {
+            if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                result = LEAD_SURROGATE_;
+            }
+            else {
+                result = TRAIL_SURROGATE_;
+            }
+        }
+        return result;
+    }
+
+    /**
+    * Getting the character with extended name of the form <....>.
+    * @param name of the character to be found
+    * @param choice name choice
+    * @return character associated with the name, -1 if such character is not
+    *                   found and -2 if we should continue with the search.
+    */
+    private static int getExtendedChar(String name, int choice)
+    {
+        if (name.charAt(0) == '<') {
+            if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                int endIndex = name.length() - 1;
+                if (name.charAt(endIndex) == '>') {
+                    int startIndex = name.lastIndexOf('-');
+                    if (startIndex >= 0) { // We've got a category.
+                        startIndex ++;
+                        int result = -1;
+                        try {
+                            result = Integer.parseInt(
+                                        name.substring(startIndex, endIndex),
+                                        16);
+                        }
+                        catch (NumberFormatException e) {
+                            return -1;
+                        }
+                        // Now validate the category name. We could use a
+                        // binary search, or a trie, if we really wanted to.
+                        String type = name.substring(1, startIndex - 1);
+                        int length = TYPE_NAMES_.length;
+                        for (int i = 0; i < length; ++ i) {
+                            if (type.compareTo(TYPE_NAMES_[i]) == 0) {
+                                if (getType(result) == i) {
+                                    return result;
+                                }
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            return -1;
+        }
+        return -2;
+    }
+
+    // sets of name characters, maximum name lengths -----------------------
+
+    /**
+     * Adds a codepoint into a set of ints.
+     * Equivalent to SET_ADD.
+     * @param set set to add to
+     * @param ch 16 bit char to add
+     */
+    private static void add(int set[], char ch)
+    {
+        set[ch >>> 5] |= 1 << (ch & 0x1f);
+    }
+
+    /**
+     * Checks if a codepoint is a part of a set of ints.
+     * Equivalent to SET_CONTAINS.
+     * @param set set to check in
+     * @param ch 16 bit char to check
+     * @return true if codepoint is part of the set, false otherwise
+     */
+    private static boolean contains(int set[], char ch)
+    {
+        return (set[ch >>> 5] & (1 << (ch & 0x1f))) != 0;
+    }
+
+    /**
+     * Adds all characters of the argument str and gets the length
+     * Equivalent to calcStringSetLength.
+     * @param set set to add all chars of str to
+     * @param str string to add
+     */
+    private static int add(int set[], String str)
+    {
+        int result = str.length();
+
+        for (int i = result - 1; i >= 0; i --) {
+            add(set, str.charAt(i));
+        }
+        return result;
+    }
+
+    /**
+     * Adds all characters of the argument str and gets the length
+     * Equivalent to calcStringSetLength.
+     * @param set set to add all chars of str to
+     * @param str string to add
+     */
+    private static int add(int set[], StringBuffer str)
+    {
+        int result = str.length();
+
+        for (int i = result - 1; i >= 0; i --) {
+            add(set, str.charAt(i));
+        }
+        return result;
+    }
+
+    /**
+     * Adds all algorithmic names into the name set.
+     * Equivalent to part of calcAlgNameSetsLengths.
+     * @param maxlength length to compare to
+     * @return the maximum length of any possible algorithmic name if it is >
+     *         maxlength, otherwise maxlength is returned.
+     */
+    private int addAlgorithmName(int maxlength)
+    {
+        int result = 0;
+        for (int i = m_algorithm_.length - 1; i >= 0; i --) {
+            result = m_algorithm_[i].add(m_nameSet_, maxlength);
+            if (result > maxlength) {
+                maxlength = result;
+            }
+        }
+        return maxlength;
+    }
+
+    /**
+     * Adds all extended names into the name set.
+     * Equivalent to part of calcExtNameSetsLengths.
+     * @param maxlength length to compare to
+     * @return the maxlength of any possible extended name.
+     */
+    private int addExtendedName(int maxlength)
+    {
+        for (int i = TYPE_NAMES_.length - 1; i >= 0; i --) {
+            // for each category, count the length of the category name
+            // plus 9 =
+            // 2 for <>
+            // 1 for -
+            // 6 for most hex digits per code point
+            int length = 9 + add(m_nameSet_, TYPE_NAMES_[i]);
+            if (length > maxlength) {
+                maxlength = length;
+            }
+        }
+        return maxlength;
+    }
+
+    /**
+     * Adds names of a group to the argument set.
+     * Equivalent to calcNameSetLength.
+     * @param offset of the group name string in byte count
+     * @param length of the group name string
+     * @param tokenlength array to store the length of each token
+     * @param set to add to
+     * @return the length of the name string and the length of the group
+     *         string parsed
+     */
+    private int[] addGroupName(int offset, int length, byte tokenlength[],
+                               int set[])
+    {
+        int resultnlength = 0;
+        int resultplength = 0;
+        while (resultplength < length) {
+            char b = (char)(m_groupstring_[offset + resultplength] & 0xff);
+            resultplength ++;
+            if (b == ';') {
+                break;
+            }
+
+            if (b >= m_tokentable_.length) {
+                add(set, b); // implicit letter
+                resultnlength ++;
+            }
+            else {
+                char token = m_tokentable_[b & 0x00ff];
+                if (token == 0xFFFE) {
+                    // this is a lead byte for a double-byte token
+                    b = (char)(b << 8 | (m_groupstring_[offset + resultplength]
+                                         & 0x00ff));
+                    token = m_tokentable_[b];
+                    resultplength ++;
+                }
+                if (token == 0xFFFF) {
+                    add(set, b);
+                    resultnlength ++;
+                }
+                else {
+                    // count token word
+                    // use cached token length
+                    byte tlength = tokenlength[b];
+                    if (tlength == 0) {
+                        synchronized (m_utilStringBuffer_) {
+                            m_utilStringBuffer_.delete(0,
+                                                 m_utilStringBuffer_.length());
+                            UCharacterUtility.getNullTermByteSubString(
+                                           m_utilStringBuffer_, m_tokenstring_,
+                                           token);
+                            tlength = (byte)add(set, m_utilStringBuffer_);
+                        }
+                        tokenlength[b] = tlength;
+                    }
+                    resultnlength += tlength;
+                }
+            }
+        }
+        m_utilIntBuffer_[0] = resultnlength;
+        m_utilIntBuffer_[1] = resultplength;
+        return m_utilIntBuffer_;
+    }
+
+    /**
+     * Adds names of all group to the argument set.
+     * Sets the data member m_max*Length_.
+     * Method called only once.
+     * Equivalent to calcGroupNameSetsLength.
+     * @param maxlength length to compare to
+     */
+    private void addGroupName(int maxlength)
+    {
+        int maxisolength = 0;
+        char offsets[] = new char[LINES_PER_GROUP_ + 2];
+        char lengths[] = new char[LINES_PER_GROUP_ + 2];
+        byte tokenlengths[] = new byte[m_tokentable_.length];
+
+        // enumerate all groups
+        // for (int i = m_groupcount_ - 1; i >= 0; i --) {
+        for (int i = 0; i < m_groupcount_ ; i ++) {
+            int offset = getGroupLengths(i, offsets, lengths);
+            // enumerate all lines in each group
+            // for (int linenumber = LINES_PER_GROUP_ - 1; linenumber >= 0;
+            //    linenumber --) {
+            for (int linenumber = 0; linenumber < LINES_PER_GROUP_;
+                linenumber ++) {
+                int lineoffset = offset + offsets[linenumber];
+                int length = lengths[linenumber];
+                if (length == 0) {
+                    continue;
+                }
+
+                // read regular name
+                int parsed[] = addGroupName(lineoffset, length, tokenlengths,
+                                            m_nameSet_);
+                if (parsed[0] > maxlength) {
+                    // 0 for name length
+                    maxlength = parsed[0];
+                }
+                lineoffset += parsed[1];
+                if (parsed[1] >= length) {
+                    // 1 for parsed group string length
+                    continue;
+                }
+                length -= parsed[1];
+                // read Unicode 1.0 name
+                parsed = addGroupName(lineoffset, length, tokenlengths,
+                                      m_nameSet_);
+                if (parsed[0] > maxlength) {
+                    // 0 for name length
+                    maxlength = parsed[0];
+                }
+                lineoffset += parsed[1];
+                if (parsed[1] >= length) {
+                    // 1 for parsed group string length
+                    continue;
+                }
+                length -= parsed[1];
+                // read ISO comment
+                parsed = addGroupName(lineoffset, length, tokenlengths,
+                                      m_ISOCommentSet_);
+                if (parsed[1] > maxisolength) {
+                    maxisolength = length;
+                }
+            }
+        }
+
+        // set gMax... - name length last for threading
+        m_maxISOCommentLength_ = maxisolength;
+        m_maxNameLength_ = maxlength;
+    }
+
+    /**
+     * Sets up the name sets and the calculation of the maximum lengths.
+     * Equivalent to calcNameSetsLengths.
+     */
+    private boolean initNameSetsLengths()
+    {
+        if (m_maxNameLength_ > 0) {
+            return true;
+        }
+
+        String extra = "0123456789ABCDEF<>-";
+        // set hex digits, used in various names, and <>-, used in extended
+        // names
+        for (int i = extra.length() - 1; i >= 0; i --) {
+            add(m_nameSet_, extra.charAt(i));
+        }
+
+        // set sets and lengths from algorithmic names
+        m_maxNameLength_ = addAlgorithmName(0);
+        // set sets and lengths from extended names
+        m_maxNameLength_ = addExtendedName(m_maxNameLength_);
+        // set sets and lengths from group names, set global maximum values
+        addGroupName(m_maxNameLength_);
+        return true;
+    }
+
+    /**
+     * Converts the char set cset into a Unicode set uset.
+     * Equivalent to charSetToUSet.
+     * @param set Set of 256 bit flags corresponding to a set of chars.
+     * @param uset USet to receive characters. Existing contents are deleted.
+     */
+    private void convert(int set[], UnicodeSet uset)
+    {
+        uset.clear();
+        if (!initNameSetsLengths()) {
+            return;
+        }
+
+        // build a char string with all chars that are used in character names
+        for (char c = 255; c > 0; c --) {
+            if (contains(set, c)) {
+                uset.add(c);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/UCharacterNameChoice.java b/src/com/ibm/icu/impl/UCharacterNameChoice.java
new file mode 100644
index 0000000..097f150
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterNameChoice.java
@@ -0,0 +1,29 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+/**
+* Internal class containing selector constants for the unicode character names.
+* Constants representing the "modern" name of a Unicode character or the name 
+* that was defined in Unicode version 1.0, before the Unicode standard 
+* merged with ISO-10646.
+* Arguments for <a href=UCharacterName.html>UCharacterName</a>
+* @author Syn Wee Quek
+* @since oct0600
+*/
+
+public interface UCharacterNameChoice
+{
+  // public variables =============================================
+  
+  static final int UNICODE_CHAR_NAME = 0;
+  static final int UNICODE_10_CHAR_NAME = 1;
+  static final int EXTENDED_CHAR_NAME = 2;
+  static final int CHAR_NAME_CHOICE_COUNT = 3;
+  static final int ISO_COMMENT_ = CHAR_NAME_CHOICE_COUNT;
+}
diff --git a/src/com/ibm/icu/impl/UCharacterNameReader.java b/src/com/ibm/icu/impl/UCharacterNameReader.java
new file mode 100644
index 0000000..2dd9aaf
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterNameReader.java
@@ -0,0 +1,210 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+/**
+* <p>Internal reader class for ICU data file uname.dat containing 
+* Unicode codepoint name data.</p> 
+* <p>This class simply reads unames.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterName.html>com.ibm.icu.impl.UCharacterName</a>.
+* </p> 
+* <p>unames.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+*/
+
+final class UCharacterNameReader implements ICUBinary.Authenticate
+{      
+    // public methods ----------------------------------------------------
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION_[0];
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UCharacterNameReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, this);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the stream of data passed in as arguments
+    * and fills up UCharacterName.
+    * If unsuccessful false will be returned.
+    * @param data instance of datablock
+    * @exception IOException thrown when there's a data error.
+    */
+    protected void read(UCharacterName data) throws IOException
+    {
+        // reading index
+        m_tokenstringindex_ = m_dataInputStream_.readInt();
+        m_groupindex_       = m_dataInputStream_.readInt();
+        m_groupstringindex_ = m_dataInputStream_.readInt();
+        m_algnamesindex_    = m_dataInputStream_.readInt();
+        
+        // reading tokens
+        int count = m_dataInputStream_.readChar();
+        char token[] = new char[count];
+        for (char i = 0; i < count; i ++) {
+            token[i] = m_dataInputStream_.readChar();
+        }
+        int size = m_groupindex_ - m_tokenstringindex_;
+        byte tokenstr[] = new byte[size];
+        m_dataInputStream_.readFully(tokenstr);
+        data.setToken(token, tokenstr);
+        
+        // reading the group information records
+        count = m_dataInputStream_.readChar();
+        data.setGroupCountSize(count, GROUP_INFO_SIZE_);
+        count *= GROUP_INFO_SIZE_;
+        char group[] = new char[count];
+        for (int i = 0; i < count; i ++) {
+            group[i] = m_dataInputStream_.readChar();
+        }
+        
+        size = m_algnamesindex_ - m_groupstringindex_;
+        byte groupstring[] = new byte[size];
+        m_dataInputStream_.readFully(groupstring);
+    
+        data.setGroup(group, groupstring);
+        
+        count = m_dataInputStream_.readInt();
+        UCharacterName.AlgorithmName alg[] = 
+                                 new UCharacterName.AlgorithmName[count];
+     
+        for (int i = 0; i < count; i ++)
+        {
+            UCharacterName.AlgorithmName an = readAlg();
+            if (an == null) {
+                throw new IOException("unames.icu read error: Algorithmic names creation error");
+            }
+            alg[i] = an;
+        }
+        data.setAlgorithm(alg);
+    }
+    
+    /**
+    * <p>Checking the file for the correct format.</p>
+    * @param dataformatid
+    * @param dataformatversion
+    * @return true if the file format version is correct
+    */
+    ///CLOVER:OFF
+    protected boolean authenticate(byte dataformatid[],
+                                   byte dataformatversion[])
+    {
+        return Arrays.equals(DATA_FORMAT_ID_, dataformatid) &&
+               Arrays.equals(DATA_FORMAT_VERSION_, dataformatversion);
+    }
+    ///CLOVER:ON
+    
+    // private variables -------------------------------------------------
+  
+    /**
+    * Data input stream for names 
+    */
+    private DataInputStream m_dataInputStream_;
+    /**
+    * Size of the group information block in number of char
+    */
+    private static final int GROUP_INFO_SIZE_ = 3;
+
+    /**
+    * Index of the offset information
+    */
+    private int m_tokenstringindex_;
+    private int m_groupindex_;
+    private int m_groupstringindex_;
+    private int m_algnamesindex_;
+      
+    /**
+    * Size of an algorithmic name information group
+    * start code point size + end code point size + type size + variant size + 
+    * size of data size
+    */
+    private static final int ALG_INFO_SIZE_ = 12;
+      
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                    {(byte)0x1, (byte)0x0, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x75, (byte)0x6E, 
+                                                    (byte)0x61, (byte)0x6D};                                                 
+      
+    // private methods ---------------------------------------------------
+      
+    /**
+    * Reads an individual record of AlgorithmNames
+    * @return an instance of AlgorithNames if read is successful otherwise null
+    * @exception IOException thrown when file read error occurs or data is corrupted
+    */
+    private UCharacterName.AlgorithmName readAlg() throws IOException
+    {
+        UCharacterName.AlgorithmName result = 
+                                       new UCharacterName.AlgorithmName();
+        int rangestart = m_dataInputStream_.readInt();
+        int rangeend   = m_dataInputStream_.readInt();
+        byte type      = m_dataInputStream_.readByte();
+        byte variant   = m_dataInputStream_.readByte();
+        if (!result.setInfo(rangestart, rangeend, type, variant)) {
+            return null;
+        }
+                         
+        int size = m_dataInputStream_.readChar();
+        if (type == UCharacterName.AlgorithmName.TYPE_1_)
+        {
+            char factor[] = new char[variant];
+            for (int j = 0; j < variant; j ++) {
+                factor[j] = m_dataInputStream_.readChar();
+            }
+                  
+            result.setFactor(factor);
+            size -= (variant << 1);
+        }
+          
+        StringBuffer prefix = new StringBuffer();
+        char c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        while (c != 0)
+        {
+            prefix.append(c);
+            c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        }
+        
+        result.setPrefix(prefix.toString());
+        
+        size -= (ALG_INFO_SIZE_ + prefix.length() + 1);
+        
+        if (size > 0)
+        {
+            byte string[] = new byte[size];
+            m_dataInputStream_.readFully(string);
+            result.setFactorString(string);
+        }
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterProperty.java b/src/com/ibm/icu/impl/UCharacterProperty.java
new file mode 100644
index 0000000..91a11f6
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterProperty.java
@@ -0,0 +1,1164 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+* <p>Internal class used for Unicode character property database.</p>
+* <p>This classes store binary data read from uprops.icu.
+* It does not have the capability to parse the data into more high-level
+* information. It only returns bytes of information when required.</p>
+* <p>Due to the form most commonly used for retrieval, array of char is used
+* to store the binary data.</p>
+* <p>UCharacterPropertyDB also contains information on accessing indexes to
+* significant points in the binary data.</p>
+* <p>Responsibility for molding the binary data into more meaning form lies on
+* <a href=UCharacter.html>UCharacter</a>.</p>
+* @author Syn Wee Quek
+* @since release 2.1, february 1st 2002
+*/
+
+public final class UCharacterProperty
+{
+    // public data members -----------------------------------------------
+
+    /**
+    * Trie data
+    */
+    public CharTrie m_trie_;
+    /**
+     * Optimization
+     * CharTrie index array
+     */
+    public char[] m_trieIndex_;
+    /**
+     * Optimization
+     * CharTrie data array
+     */
+    public char[] m_trieData_;
+    /**
+     * Optimization
+     * CharTrie data offset
+     */
+    public int m_trieInitialValue_;
+    /**
+    * Unicode version
+    */
+    public VersionInfo m_unicodeVersion_;
+    /**
+    * Latin capital letter i with dot above
+    */
+    public static final char LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_ = 0x130;
+    /**
+    * Latin small letter i with dot above
+    */
+    public static final char LATIN_SMALL_LETTER_DOTLESS_I_ = 0x131;
+    /**
+    * Latin lowercase i
+    */
+    public static final char LATIN_SMALL_LETTER_I_ = 0x69;
+    /**
+    * Character type mask
+    */
+    public static final int TYPE_MASK = 0x1F;
+
+    // uprops.h enum UPropertySource --------------------------------------- ***
+
+    /** No source, not a supported property. */
+    public static final int SRC_NONE=0;
+    /** From uchar.c/uprops.icu main trie */
+    public static final int SRC_CHAR=1;
+    /** From uchar.c/uprops.icu properties vectors trie */
+    public static final int SRC_PROPSVEC=2;
+    /** Hangul_Syllable_Type, from uchar.c/uprops.icu */
+    public static final int SRC_HST=3;
+    /** From unames.c/unames.icu */
+    public static final int SRC_NAMES=4;
+    /** From unorm.cpp/unorm.icu */
+    public static final int SRC_NORM=5;
+    /** From ucase.c/ucase.icu */
+    public static final int SRC_CASE=6;
+    /** From ubidi_props.c/ubidi.icu */
+    public static final int SRC_BIDI=7;
+    /** From uchar.c/uprops.icu main trie as well as properties vectors trie */
+    public static final int SRC_CHAR_AND_PROPSVEC=8;
+    /** One more than the highest UPropertySource (SRC_) constant. */
+    public static final int SRC_COUNT=9;
+
+    // public methods ----------------------------------------------------
+
+    /**
+     * Java friends implementation
+     */
+    public void setIndexData(CharTrie.FriendAgent friendagent)
+    {
+        m_trieIndex_ = friendagent.getPrivateIndex();
+        m_trieData_ = friendagent.getPrivateData();
+        m_trieInitialValue_ = friendagent.getPrivateInitialValue();
+    }
+
+    /**
+    * Gets the property value at the index.
+    * This is optimized.
+    * Note this is alittle different from CharTrie the index m_trieData_
+    * is never negative.
+    * @param ch code point whose property value is to be retrieved
+    * @return property value of code point
+    */
+    public final int getProperty(int ch)
+    {
+        if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE
+            || (ch > UTF16.LEAD_SURROGATE_MAX_VALUE
+                && ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
+            // BMP codepoint 0000..D7FF or DC00..FFFF
+            // optimized
+            try { // using try for ch < 0 is faster than using an if statement
+                return m_trieData_[
+                    (m_trieIndex_[ch >> Trie.INDEX_STAGE_1_SHIFT_]
+                          << Trie.INDEX_STAGE_2_SHIFT_)
+                    + (ch & Trie.INDEX_STAGE_3_MASK_)];
+            } catch (ArrayIndexOutOfBoundsException e) {
+                return m_trieInitialValue_;
+            }
+        }
+        if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            // lead surrogate D800..DBFF
+            return m_trieData_[
+                    (m_trieIndex_[Trie.LEAD_INDEX_OFFSET_
+                                  + (ch >> Trie.INDEX_STAGE_1_SHIFT_)]
+                          << Trie.INDEX_STAGE_2_SHIFT_)
+                    + (ch & Trie.INDEX_STAGE_3_MASK_)];
+        }
+        if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
+            // supplementary code point 10000..10FFFF
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return m_trie_.getSurrogateValue(
+                                          UTF16.getLeadSurrogate(ch),
+                                          (char)(ch & Trie.SURROGATE_MASK_));
+        }
+        // ch is out of bounds
+        // return m_dataOffset_ if there is an error, in this case we return
+        // the default value: m_initialValue_
+        // we cannot assume that m_initialValue_ is at offset 0
+        // this is for optimization.
+        return m_trieInitialValue_;
+
+        // this all is an inlined form of return m_trie_.getCodePointValue(ch);
+    }
+
+    /*
+    * Getting the signed numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return signed numberic value
+    */
+//    public static int getSignedValue(int prop)
+//    {
+//        return ((short)prop >> VALUE_SHIFT_);
+//    }
+
+    /**
+    * Getting the unsigned numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return unsigned numberic value
+    */
+    public static int getUnsignedValue(int prop)
+    {
+        return (prop >> VALUE_SHIFT_) & UNSIGNED_VALUE_MASK_AFTER_SHIFT_;
+    }
+
+    /* internal numeric pseudo-types for special encodings of numeric values */
+    public static final int NT_FRACTION=4; /* ==UCharacter.NumericType.COUNT, must not change unless binary format version changes */
+    public static final int NT_LARGE=5;
+    public static final int NT_COUNT=6;
+
+    /**
+     * Gets the unicode additional properties.
+     * C version getUnicodeProperties.
+     * @param codepoint codepoint whose additional properties is to be
+     *                  retrieved
+     * @param column
+     * @return unicode properties
+     */
+       public int getAdditional(int codepoint, int column) {
+        if (column == -1) {
+            return getProperty(codepoint);
+        }
+           if (column < 0 || column >= m_additionalColumnsCount_) {
+           return 0;
+       }
+       return m_additionalVectors_[
+                     m_additionalTrie_.getCodePointValue(codepoint) + column];
+       }
+
+    static final int MY_MASK = UCharacterProperty.TYPE_MASK
+        & ((1<<UCharacterCategory.UPPERCASE_LETTER) |
+            (1<<UCharacterCategory.LOWERCASE_LETTER) |
+            (1<<UCharacterCategory.TITLECASE_LETTER) |
+            (1<<UCharacterCategory.MODIFIER_LETTER) |
+            (1<<UCharacterCategory.OTHER_LETTER));
+
+
+       /**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a
+     * character.</p>
+     * <p>This can be useful to avoid emitting code points to receiving
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * @param codepoint The code point.
+     * @return the Unicode version number
+     */
+    public VersionInfo getAge(int codepoint)
+    {
+        int version = getAdditional(codepoint, 0) >> AGE_SHIFT_;
+        return VersionInfo.getInstance(
+                           (version >> FIRST_NIBBLE_SHIFT_) & LAST_NIBBLE_MASK_,
+                           version & LAST_NIBBLE_MASK_, 0, 0);
+    }
+
+    private static final long UNSIGNED_INT_MASK = 0xffffffffL;
+
+    private static final int GC_CN_MASK = getMask(UCharacter.UNASSIGNED);
+    private static final int GC_CC_MASK = getMask(UCharacter.CONTROL);
+    private static final int GC_CS_MASK = getMask(UCharacter.SURROGATE);
+    private static final int GC_ZS_MASK = getMask(UCharacter.SPACE_SEPARATOR);
+    private static final int GC_ZL_MASK = getMask(UCharacter.LINE_SEPARATOR);
+    private static final int GC_ZP_MASK = getMask(UCharacter.PARAGRAPH_SEPARATOR);
+    /** Mask constant for multiple UCharCategory bits (Z Separators). */
+    private static final int GC_Z_MASK = GC_ZS_MASK|GC_ZL_MASK|GC_ZP_MASK;
+
+    /**
+     * Checks if c is in
+     * [^\p{space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]
+     * with space=\p{Whitespace} and Control=Cc.
+     * Implements UCHAR_POSIX_GRAPH.
+     * @internal
+     */
+    private static final boolean isgraphPOSIX(int c) {
+        /* \p{space}\p{gc=Control} == \p{gc=Z}\p{Control} */
+        /* comparing ==0 returns FALSE for the categories mentioned */
+        return (getMask(UCharacter.getType(c))&
+                (GC_CC_MASK|GC_CS_MASK|GC_CN_MASK|GC_Z_MASK))
+               ==0;
+    }
+
+    private static final class BinaryProperties{
+       int column;
+       long mask;
+       public BinaryProperties(int column,long mask){
+               this.column = column;
+               this.mask  = mask;
+       }
+   }
+   BinaryProperties[] binProps={
+       /*
+        * column and mask values for binary properties from u_getUnicodeProperties().
+        * Must be in order of corresponding UProperty,
+        * and there must be exacly one entry per binary UProperty.
+        */
+       new BinaryProperties(  1,                (  1 << ALPHABETIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ASCII_HEX_DIGIT_PROPERTY_) ),
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_BIDI_CONTROL */
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_BIDI_MIRRORED */
+       new BinaryProperties(  1,                (  1 << DASH_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DEPRECATED_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DIACRITIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << EXTENDER_PROPERTY_) ),
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_FULL_COMPOSITION_EXCLUSION */
+       new BinaryProperties(  1,                (  1 << GRAPHEME_BASE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << GRAPHEME_EXTEND_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << GRAPHEME_LINK_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << HEX_DIGIT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << HYPHEN_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ID_CONTINUE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ID_START_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDEOGRAPHIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDS_BINARY_OPERATOR_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDS_TRINARY_OPERATOR_PROPERTY_) ),
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_JOIN_CONTROL */
+       new BinaryProperties(  1,                (  1 << LOGICAL_ORDER_EXCEPTION_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_LOWERCASE */
+       new BinaryProperties(  1,                (  1 << MATH_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << NONCHARACTER_CODE_POINT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << QUOTATION_MARK_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << RADICAL_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_SOFT_DOTTED */
+       new BinaryProperties(  1,                (  1 << TERMINAL_PUNCTUATION_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << UNIFIED_IDEOGRAPH_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_UPPERCASE */
+       new BinaryProperties(  1,                (  1 << WHITE_SPACE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << XID_CONTINUE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << XID_START_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_CASE_SENSITIVE */
+       new BinaryProperties(  1,                (  1 << S_TERM_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << VARIATION_SELECTOR_PROPERTY_) ),
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFD_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFKD_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFC_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFKC_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_SEGMENT_STARTER */
+       new BinaryProperties(  1,                (  1 << PATTERN_SYNTAX) ),
+       new BinaryProperties(  1,                (  1 << PATTERN_WHITE_SPACE) ),
+       new BinaryProperties( SRC_CHAR_AND_PROPSVEC,  0 ),                           /* UCHAR_POSIX_ALNUM */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_BLANK */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_GRAPH */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_PRINT */
+       new BinaryProperties( SRC_CHAR,  0 )                                         /* UCHAR_POSIX_XDIGIT */
+   };
+
+
+    /**
+     * <p>Check a binary Unicode property for a code point.</p>
+     * <p>Unicode, especially in version 3.2, defines many more properties
+     * than the original set in UnicodeData.txt.</p>
+     * <p>This API is intended to reflect Unicode properties as defined in
+     * the Unicode Character Database (UCD) and Unicode Technical Reports
+     * (UTR).</p>
+     * <p>For details about the properties see
+     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+     * <p>For names of Unicode properties see the UCD file
+     * PropertyAliases.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * <p>Important: If ICU is built with UCD files from Unicode versions
+     * below 3.2, then properties marked with "new" are not or
+     * not fully available.</p>
+     * @param codepoint Code point to test.
+     * @param property selector constant from com.ibm.icu.lang.UProperty,
+     *        identifies which binary property to check.
+     * @return true or false according to the binary Unicode property value
+     *         for ch. Also false if property is out of bounds or if the
+     *         Unicode version does not have data for the property at all, or
+     *         not for this code point.
+     * @see com.ibm.icu.lang.UProperty
+     */
+
+    public boolean hasBinaryProperty(int codepoint, int property)
+    {
+         if(property <UProperty.BINARY_START || UProperty.BINARY_LIMIT<=property) {
+            // not a known binary property
+            return false;
+        } else {
+            long mask=binProps[property].mask;
+            int column=binProps[property].column;
+            if(mask!=0) {
+                // systematic, directly stored properties
+                return ((UNSIGNED_INT_MASK & getAdditional(codepoint, column)) & mask)!=0;
+            } else {
+                if(column==SRC_CASE) {
+                    /* case mapping properties */
+                    UCaseProps csp;
+                    try {
+                        csp = UCaseProps.getSingleton();
+                    } catch (IOException e) {
+                        return false;
+                    }
+                    switch(property) {
+                    case UProperty.LOWERCASE:
+                        return UCaseProps.LOWER==csp.getType(codepoint);
+                    case UProperty.UPPERCASE:
+                        return UCaseProps.UPPER==csp.getType(codepoint);
+                    case UProperty.SOFT_DOTTED:
+                        return csp.isSoftDotted(codepoint);
+                    case UProperty.CASE_SENSITIVE:
+                        return csp.isCaseSensitive(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_NORM) {
+                    /* normalization properties from unorm.icu */
+                    switch(property) {
+                    case UProperty.FULL_COMPOSITION_EXCLUSION:
+                        return NormalizerImpl.isFullCompositionExclusion(codepoint);
+                    case UProperty.NFD_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFD);
+                    case UProperty.NFKD_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFKD);
+                    case UProperty.NFC_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFC);
+                    case UProperty.NFKC_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFKC);
+                    case UProperty.SEGMENT_STARTER:
+                        return NormalizerImpl.isCanonSafeStart(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_BIDI) {
+                    /* bidi/shaping properties */
+                    UBiDiProps bdp;
+                    try {
+                        bdp = UBiDiProps.getSingleton();
+                    } catch (IOException e) {
+                        return false;
+                    }
+                    switch(property) {
+                    case UProperty.BIDI_MIRRORED:
+                        return bdp.isMirrored(codepoint);
+                    case UProperty.BIDI_CONTROL:
+                        return bdp.isBidiControl(codepoint);
+                    case UProperty.JOIN_CONTROL:
+                        return bdp.isJoinControl(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_CHAR) {
+                    switch(property) {
+                    case UProperty.POSIX_BLANK:
+                        // "horizontal space"
+                        if(codepoint<=0x9f) {
+                            return codepoint==9 || codepoint==0x20; /* TAB or SPACE */
+                        } else {
+                            /* Zs */
+                            return UCharacter.getType(codepoint)==UCharacter.SPACE_SEPARATOR;
+                        }
+                    case UProperty.POSIX_GRAPH:
+                        return isgraphPOSIX(codepoint);
+                    case UProperty.POSIX_PRINT:
+                        /*
+                         * Checks if codepoint is in \p{graph}\p{blank} - \p{cntrl}.
+                         *
+                         * The only cntrl character in graph+blank is TAB (in blank).
+                         * Here we implement (blank-TAB)=Zs instead of calling u_isblank().
+                         */
+                        return (UCharacter.getType(codepoint)==UCharacter.SPACE_SEPARATOR) || isgraphPOSIX(codepoint);
+                    case UProperty.POSIX_XDIGIT:
+                        /* check ASCII and Fullwidth ASCII a-fA-F */
+                        if(
+                            (codepoint<=0x66 && codepoint>=0x41 && (codepoint<=0x46 || codepoint>=0x61)) ||
+                            (codepoint>=0xff21 && codepoint<=0xff46 && (codepoint<=0xff26 || codepoint>=0xff41))
+                        ) {
+                            return true;
+                        }
+    
+                        return UCharacter.getType(codepoint)==UCharacter.DECIMAL_DIGIT_NUMBER;
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_CHAR_AND_PROPSVEC) {
+                    switch(property) {
+                    case UProperty.POSIX_ALNUM:
+                        return UCharacter.isUAlphabetic(codepoint) || UCharacter.isDigit(codepoint);
+                    default:
+                        break;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    public final int getSource(int which) {
+        if(which<UProperty.BINARY_START) {
+            return SRC_NONE; /* undefined */
+        } else if(which<UProperty.BINARY_LIMIT) {
+            if(binProps[which].mask!=0) {
+                return SRC_PROPSVEC;
+            } else {
+                return binProps[which].column;
+            }
+        } else if(which<UProperty.INT_START) {
+            return SRC_NONE; /* undefined */
+        } else if(which<UProperty.INT_LIMIT) {
+            switch(which) {
+            case UProperty.GENERAL_CATEGORY:
+            case UProperty.NUMERIC_TYPE:
+                return SRC_CHAR;
+
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+                return SRC_HST;
+
+            case UProperty.CANONICAL_COMBINING_CLASS:
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return SRC_NORM;
+
+            case UProperty.BIDI_CLASS:
+            case UProperty.JOINING_GROUP:
+            case UProperty.JOINING_TYPE:
+                return SRC_BIDI;
+
+            default:
+                return SRC_PROPSVEC;
+            }
+        } else if(which<UProperty.STRING_START) {
+            switch(which) {
+            case UProperty.GENERAL_CATEGORY_MASK:
+            case UProperty.NUMERIC_VALUE:
+                return SRC_CHAR;
+
+            default:
+                return SRC_NONE;
+            }
+        } else if(which<UProperty.STRING_LIMIT) {
+            switch(which) {
+            case UProperty.AGE:
+                return SRC_PROPSVEC;
+
+            case UProperty.BIDI_MIRRORING_GLYPH:
+                return SRC_BIDI;
+
+            case UProperty.CASE_FOLDING:
+            case UProperty.LOWERCASE_MAPPING:
+            case UProperty.SIMPLE_CASE_FOLDING:
+            case UProperty.SIMPLE_LOWERCASE_MAPPING:
+            case UProperty.SIMPLE_TITLECASE_MAPPING:
+            case UProperty.SIMPLE_UPPERCASE_MAPPING:
+            case UProperty.TITLECASE_MAPPING:
+            case UProperty.UPPERCASE_MAPPING:
+                return SRC_CASE;
+
+            case UProperty.ISO_COMMENT:
+            case UProperty.NAME:
+            case UProperty.UNICODE_1_NAME:
+                return SRC_NAMES;
+
+            default:
+                return SRC_NONE;
+            }
+        } else {
+            return SRC_NONE; /* undefined */
+        }
+    }
+
+    /**
+    * Forms a supplementary code point from the argument character<br>
+    * Note this is for internal use hence no checks for the validity of the
+    * surrogate characters are done
+    * @param lead lead surrogate character
+    * @param trail trailing surrogate character
+    * @return code point of the supplementary character
+    */
+    public static int getRawSupplementary(char lead, char trail)
+    {
+        return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
+    }
+
+    /**
+    * Loads the property data and initialize the UCharacterProperty instance.
+    * @throws MissingResourceException when data is missing or data has been corrupted
+    */
+    public static UCharacterProperty getInstance()
+    {
+        if(INSTANCE_ == null) {
+            try {
+                INSTANCE_ = new UCharacterProperty();
+            }
+            catch (Exception e) {
+                throw new MissingResourceException(e.getMessage(),"","");
+            }
+        }
+        return INSTANCE_;
+    }
+
+    /**
+     * <p>
+     * Unicode property names and property value names are compared
+     * "loosely". Property[Value]Aliases.txt say:
+     * <quote>
+     *   "With loose matching of property names, the case distinctions,
+     *    whitespace, and '_' are ignored."
+     * </quote>
+     * </p>
+     * <p>
+     * This function does just that, for ASCII (char *) name strings.
+     * It is almost identical to ucnv_compareNames() but also ignores
+     * ASCII White_Space characters (U+0009..U+000d).
+     * </p>
+     * @param name1 name to compare
+     * @param name2 name to compare
+     * @return 0 if names are equal, < 0 if name1 is less than name2 and > 0
+     *         if name1 is greater than name2.
+     */
+    /* to be implemented in 2.4
+     * public static int comparePropertyNames(String name1, String name2)
+    {
+        int result = 0;
+        int i1 = 0;
+        int i2 = 0;
+        while (true) {
+            char ch1 = 0;
+            char ch2 = 0;
+            // Ignore delimiters '-', '_', and ASCII White_Space
+            if (i1 < name1.length()) {
+                ch1 = name1.charAt(i1 ++);
+            }
+            while (ch1 == '-' || ch1 == '_' || ch1 == ' ' || ch1 == '\t'
+                   || ch1 == '\n' // synwee what is || ch1 == '\v'
+                   || ch1 == '\f' || ch1=='\r') {
+                if (i1 < name1.length()) {
+                    ch1 = name1.charAt(i1 ++);
+                }
+                else {
+                    ch1 = 0;
+                }
+            }
+            if (i2 < name2.length()) {
+                ch2 = name2.charAt(i2 ++);
+            }
+            while (ch2 == '-' || ch2 == '_' || ch2 == ' ' || ch2 == '\t'
+                   || ch2 == '\n' // synwee what is || ch1 == '\v'
+                   || ch2 == '\f' || ch2=='\r') {
+                if (i2 < name2.length()) {
+                    ch2 = name2.charAt(i2 ++);
+                }
+                else {
+                    ch2 = 0;
+                }
+            }
+
+            // If we reach the ends of both strings then they match
+            if (ch1 == 0 && ch2 == 0) {
+                return 0;
+            }
+
+            // Case-insensitive comparison
+            if (ch1 != ch2) {
+                result = Character.toLowerCase(ch1)
+                                                - Character.toLowerCase(ch2);
+                if (result != 0) {
+                    return result;
+                }
+            }
+        }
+    }
+    */
+
+    /**
+     * Checks if the argument c is to be treated as a white space in ICU
+     * rules. Usually ICU rule white spaces are ignored unless quoted.
+     * Equivalent to test for Pattern_White_Space Unicode property.
+     * Stable set of characters, won't change.
+     * See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
+     * @param c codepoint to check
+     * @return true if c is a ICU white space
+     */
+    public static boolean isRuleWhiteSpace(int c)
+    {
+        /* "white space" in the sense of ICU rule parsers
+           This is a FIXED LIST that is NOT DEPENDENT ON UNICODE PROPERTIES.
+           See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
+           U+0009..U+000D, U+0020, U+0085, U+200E..U+200F, and U+2028..U+2029
+           Equivalent to test for Pattern_White_Space Unicode property.
+        */
+        return (c >= 0x0009 && c <= 0x2029 &&
+                (c <= 0x000D || c == 0x0020 || c == 0x0085 ||
+                 c == 0x200E || c == 0x200F || c >= 0x2028));
+    }
+
+    /**
+     * Get the the maximum values for some enum/int properties.
+     * @return maximum values for the integer properties.
+     */
+    public int getMaxValues(int column)
+    {
+       // return m_maxBlockScriptValue_;
+
+        switch(column) {
+        case 0:
+            return m_maxBlockScriptValue_;
+        case 2:
+            return m_maxJTGValue_;
+        default:
+            return 0;
+        }
+    }
+
+    /**
+     * Gets the type mask
+     * @param type character type
+     * @return mask
+     */
+    public static final int getMask(int type)
+    {
+        return 1 << type;
+    }
+
+    // protected variables -----------------------------------------------
+
+    /**
+     * Extra property trie
+     */
+    CharTrie m_additionalTrie_;
+    /**
+     * Extra property vectors, 1st column for age and second for binary
+     * properties.
+     */
+    int m_additionalVectors_[];
+    /**
+     * Number of additional columns
+     */
+    int m_additionalColumnsCount_;
+    /**
+     * Maximum values for block, bits used as in vector word
+     * 0
+     */
+    int m_maxBlockScriptValue_;
+    /**
+     * Maximum values for script, bits used as in vector word
+     * 0
+     */
+     int m_maxJTGValue_;
+    // private variables -------------------------------------------------
+
+      /**
+     * UnicodeData.txt property object
+     */
+    private static UCharacterProperty INSTANCE_ = null;
+
+    /**
+    * Default name of the datafile
+    */
+    private static final String DATA_FILE_NAME_ = ICUResourceBundle.ICU_BUNDLE+"/uprops.icu";
+
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int DATA_BUFFER_SIZE_ = 25000;
+
+    /**
+    * Numeric value shift
+    */
+    private static final int VALUE_SHIFT_ = 8;
+
+    /**
+    * Mask to be applied after shifting to obtain an unsigned numeric value
+    */
+    private static final int UNSIGNED_VALUE_MASK_AFTER_SHIFT_ = 0xFF;
+
+    /*
+     *
+     */
+    //private static final int NUMERIC_TYPE_SHIFT = 5;
+
+    /*
+    * To get the last 5 bits out from a data type
+    */
+    //private static final int LAST_5_BIT_MASK_ = 0x1F;
+
+    /**
+    * Shift value for lead surrogate to form a supplementary character.
+    */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+    /**
+    * Offset to add to combined surrogate pair to avoid msking.
+    */
+    private static final int SURROGATE_OFFSET_ =
+                           UTF16.SUPPLEMENTARY_MIN_VALUE -
+                           (UTF16.SURROGATE_MIN_VALUE <<
+                           LEAD_SURROGATE_SHIFT_) -
+                           UTF16.TRAIL_SURROGATE_MIN_VALUE;
+
+
+    // additional properties ----------------------------------------------
+
+    /**
+     * Additional properties used in internal trie data
+     */
+    /*
+     * Properties in vector word 1
+     * Each bit encodes one binary property.
+     * The following constants represent the bit number, use 1<<UPROPS_XYZ.
+     * UPROPS_BINARY_1_TOP<=32!
+     *
+     * Keep this list of property enums in sync with
+     * propListNames[] in icu/source/tools/genprops/props2.c!
+     *
+     * ICU 2.6/uprops format version 3.2 stores full properties instead of "Other_".
+     */
+    private static final int WHITE_SPACE_PROPERTY_ = 0;
+    private static final int DASH_PROPERTY_ = 1;
+    private static final int HYPHEN_PROPERTY_ = 2;
+    private static final int QUOTATION_MARK_PROPERTY_ = 3;
+    private static final int TERMINAL_PUNCTUATION_PROPERTY_ = 4;
+    private static final int MATH_PROPERTY_ = 5;
+    private static final int HEX_DIGIT_PROPERTY_ = 6;
+    private static final int ASCII_HEX_DIGIT_PROPERTY_ = 7;
+    private static final int ALPHABETIC_PROPERTY_ = 8;
+    private static final int IDEOGRAPHIC_PROPERTY_ = 9;
+    private static final int DIACRITIC_PROPERTY_ = 10;
+    private static final int EXTENDER_PROPERTY_ = 11;
+    private static final int NONCHARACTER_CODE_POINT_PROPERTY_ = 12;
+    private static final int GRAPHEME_EXTEND_PROPERTY_ = 13;
+    private static final int GRAPHEME_LINK_PROPERTY_ = 14;
+    private static final int IDS_BINARY_OPERATOR_PROPERTY_ = 15;
+    private static final int IDS_TRINARY_OPERATOR_PROPERTY_ = 16;
+    private static final int RADICAL_PROPERTY_ = 17;
+    private static final int UNIFIED_IDEOGRAPH_PROPERTY_ = 18;
+    private static final int DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_ = 19;
+    private static final int DEPRECATED_PROPERTY_ = 20;
+    private static final int LOGICAL_ORDER_EXCEPTION_PROPERTY_ = 21;
+    private static final int XID_START_PROPERTY_ = 22;
+    private static final int XID_CONTINUE_PROPERTY_ = 23;
+    private static final int ID_START_PROPERTY_    = 24;
+    private static final int ID_CONTINUE_PROPERTY_ = 25;
+    private static final int GRAPHEME_BASE_PROPERTY_ = 26;
+    private static final int S_TERM_PROPERTY_ = 27;
+    private static final int VARIATION_SELECTOR_PROPERTY_ = 28;
+    private static final int PATTERN_SYNTAX = 29;                   /* new in ICU 3.4 and Unicode 4.1 */
+    private static final int PATTERN_WHITE_SPACE = 30;
+
+    /**
+     * First nibble shift
+     */
+    private static final int FIRST_NIBBLE_SHIFT_ = 0x4;
+    /**
+     * Second nibble mask
+     */
+    private static final int LAST_NIBBLE_MASK_ = 0xF;
+    /**
+     * Age value shift
+     */
+    private static final int AGE_SHIFT_ = 24;
+
+
+    // private constructors --------------------------------------------------
+
+    /**
+    * Constructor
+    * @exception IOException thrown when data reading fails or data corrupted
+    */
+    private UCharacterProperty() throws IOException
+    {
+        // jar access
+        InputStream is = ICUData.getRequiredStream(DATA_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(is, DATA_BUFFER_SIZE_);
+        UCharacterPropertyReader reader = new UCharacterPropertyReader(b);
+        reader.read(this);
+        b.close();
+
+        m_trie_.putIndexData(this);
+    }
+
+    // private methods -------------------------------------------------------
+
+    /*
+     * Compare additional properties to see if it has argument type
+     * @param property 32 bit properties
+     * @param type character type
+     * @return true if property has type
+     */
+    /*private boolean compareAdditionalType(int property, int type)
+    {
+        return (property & (1 << type)) != 0;
+    }*/
+
+    // property starts for UnicodeSet -------------------------------------- ***
+
+    private static final int TAB     = 0x0009;
+    //private static final int LF      = 0x000a;
+    //private static final int FF      = 0x000c;
+    private static final int CR      = 0x000d;
+    private static final int U_A     = 0x0041;
+    private static final int U_F     = 0x0046;
+    private static final int U_Z     = 0x005a;
+    private static final int U_a     = 0x0061;
+    private static final int U_f     = 0x0066;
+    private static final int U_z     = 0x007a;
+    private static final int DEL     = 0x007f;
+    private static final int NL      = 0x0085;
+    private static final int NBSP    = 0x00a0;
+    private static final int CGJ     = 0x034f;
+    private static final int FIGURESP= 0x2007;
+    private static final int HAIRSP  = 0x200a;
+    //private static final int ZWNJ    = 0x200c;
+    //private static final int ZWJ     = 0x200d;
+    private static final int RLM     = 0x200f;
+    private static final int NNBSP   = 0x202f;
+    private static final int WJ      = 0x2060;
+    private static final int INHSWAP = 0x206a;
+    private static final int NOMDIG  = 0x206f;
+    private static final int U_FW_A  = 0xff21;
+    private static final int U_FW_F  = 0xff26;
+    private static final int U_FW_Z  = 0xff3a;
+    private static final int U_FW_a  = 0xff41;
+    private static final int U_FW_f  = 0xff46;
+    private static final int U_FW_z  = 0xff5a;
+    private static final int ZWNBSP  = 0xfeff;
+
+    /* for Hangul_Syllable_Type */
+    public void uhst_addPropertyStarts(UnicodeSet set) {
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /*
+         * Add Jamo type boundaries for UCHAR_HANGUL_SYLLABLE_TYPE.
+         * First, we add fixed boundaries for the blocks of Jamos.
+         * Then we check in loops to see where the current Unicode version
+         * actually stops assigning such Jamos. We start each loop
+         * at the end of the per-Jamo-block assignments in Unicode 4 or earlier.
+         * (These have not changed since Unicode 2.)
+         */
+        int c, value, value2;
+
+        set.add(0x1100);
+        value=UCharacter.HangulSyllableType.LEADING_JAMO;
+        for(c=0x115a; c<=0x115f; ++c) {
+            value2= UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        set.add(0x1160);
+        value=UCharacter.HangulSyllableType.VOWEL_JAMO;
+        for(c=0x11a3; c<=0x11a7; ++c) {
+            value2=UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        set.add(0x11a8);
+        value=UCharacter.HangulSyllableType.TRAILING_JAMO;
+        for(c=0x11fa; c<=0x11ff; ++c) {
+            value2=UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        /* Add Hangul type boundaries for UCHAR_HANGUL_SYLLABLE_TYPE. */
+        for(c=NormalizerImpl.HANGUL_BASE; c<(NormalizerImpl.HANGUL_BASE+NormalizerImpl.HANGUL_COUNT); c+=NormalizerImpl.JAMO_T_COUNT) {
+            set.add(c);
+            set.add(c+1);
+        }
+        set.add(c);
+    }
+
+    public UnicodeSet addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the main trie */
+        TrieIterator propsIter = new TrieIterator(m_trie_);
+        RangeValueIterator.Element propsResult = new RangeValueIterator.Element();
+          while(propsIter.next(propsResult)){
+            set.add(propsResult.start);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* add for u_isblank() */
+        set.add(TAB);
+        set.add(TAB+1);
+
+        /* add for IS_THAT_CONTROL_SPACE() */
+        set.add(CR+1); /* range TAB..CR */
+        set.add(0x1c);
+        set.add(0x1f+1);
+        set.add(NL);
+        set.add(NL+1);
+
+        /* add for u_isIDIgnorable() what was not added above */
+        set.add(DEL); /* range DEL..NBSP-1, NBSP added below */
+        set.add(HAIRSP);
+        set.add(RLM+1);
+        set.add(INHSWAP);
+        set.add(NOMDIG+1);
+        set.add(ZWNBSP);
+        set.add(ZWNBSP+1);
+
+        /* add no-break spaces for u_isWhitespace() what was not added above */
+        set.add(NBSP);
+        set.add(NBSP+1);
+        set.add(FIGURESP);
+        set.add(FIGURESP+1);
+        set.add(NNBSP);
+        set.add(NNBSP+1);
+
+        /* add for u_charDigitValue() */
+        // TODO remove when UCharacter.getHanNumericValue() is changed to just return
+        // Unicode numeric values 
+        set.add(0x3007);
+        set.add(0x3008);
+        set.add(0x4e00);
+        set.add(0x4e01);
+        set.add(0x4e8c);
+        set.add(0x4e8d);
+        set.add(0x4e09);
+        set.add(0x4e0a);
+        set.add(0x56db);
+        set.add(0x56dc);
+        set.add(0x4e94);
+        set.add(0x4e95);
+        set.add(0x516d);
+        set.add(0x516e);
+        set.add(0x4e03);
+        set.add(0x4e04);
+        set.add(0x516b);
+        set.add(0x516c);
+        set.add(0x4e5d);
+        set.add(0x4e5e);
+
+        /* add for u_digit() */
+        set.add(U_a);
+        set.add(U_z+1);
+        set.add(U_A);
+        set.add(U_Z+1);
+        set.add(U_FW_a);
+        set.add(U_FW_z+1);
+        set.add(U_FW_A);
+        set.add(U_FW_Z+1);
+
+        /* add for u_isxdigit() */
+        set.add(U_f+1);
+        set.add(U_F+1);
+        set.add(U_FW_f+1);
+        set.add(U_FW_F+1);
+
+        /* add for UCHAR_DEFAULT_IGNORABLE_CODE_POINT what was not added above */
+        set.add(WJ); /* range WJ..NOMDIG */
+        set.add(0xfff0);
+        set.add(0xfffb+1);
+        set.add(0xe0000);
+        set.add(0xe0fff+1);
+
+        /* add for UCHAR_GRAPHEME_BASE and others */
+        set.add(CGJ);
+        set.add(CGJ+1);
+
+        return set; // for chaining
+    }
+
+    public void upropsvec_addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the properties vectors trie */
+        if(m_additionalColumnsCount_>0) {
+            /* if m_additionalColumnsCount_==0 then the properties vectors trie may not be there at all */
+            TrieIterator propsVectorsIter = new TrieIterator(m_additionalTrie_);
+            RangeValueIterator.Element propsVectorsResult = new RangeValueIterator.Element();
+            while(propsVectorsIter.next(propsVectorsResult)){
+                set.add(propsVectorsResult.start);
+            }
+        }
+    }
+
+/*----------------------------------------------------------------
+ * Inclusions list
+ *----------------------------------------------------------------*/
+
+    /*
+     * Return a set of characters for property enumeration.
+     * The set implicitly contains 0x110000 as well, which is one more than the highest
+     * Unicode code point.
+     *
+     * This set is used as an ordered list - its code points are ordered, and
+     * consecutive code points (in Unicode code point order) in the set define a range.
+     * For each two consecutive characters (start, limit) in the set,
+     * all of the UCD/normalization and related properties for
+     * all code points start..limit-1 are all the same,
+     * except for character names and ISO comments.
+     *
+     * All Unicode code points U+0000..U+10ffff are covered by these ranges.
+     * The ranges define a partition of the Unicode code space.
+     * ICU uses the inclusions set to enumerate properties for generating
+     * UnicodeSets containing all code points that have a certain property value.
+     *
+     * The Inclusion List is generated from the UCD. It is generated
+     * by enumerating the data tries, and code points for hardcoded properties
+     * are added as well.
+     *
+     * --------------------------------------------------------------------------
+     *
+     * The following are ideas for getting properties-unique code point ranges,
+     * with possible optimizations beyond the current implementation.
+     * These optimizations would require more code and be more fragile.
+     * The current implementation generates one single list (set) for all properties.
+     *
+     * To enumerate properties efficiently, one needs to know ranges of
+     * repetitive values, so that the value of only each start code point
+     * can be applied to the whole range.
+     * This information is in principle available in the uprops.icu/unorm.icu data.
+     *
+     * There are two obstacles:
+     *
+     * 1. Some properties are computed from multiple data structures,
+     *    making it necessary to get repetitive ranges by intersecting
+     *    ranges from multiple tries.
+     *
+     * 2. It is not economical to write code for getting repetitive ranges
+     *    that are precise for each of some 50 properties.
+     *
+     * Compromise ideas:
+     *
+     * - Get ranges per trie, not per individual property.
+     *   Each range contains the same values for a whole group of properties.
+     *   This would generate currently five range sets, two for uprops.icu tries
+     *   and three for unorm.icu tries.
+     *
+     * - Combine sets of ranges for multiple tries to get sufficient sets
+     *   for properties, e.g., the uprops.icu main and auxiliary tries
+     *   for all non-normalization properties.
+     *
+     * Ideas for representing ranges and combining them:
+     *
+     * - A UnicodeSet could hold just the start code points of ranges.
+     *   Multiple sets are easily combined by or-ing them together.
+     *
+     * - Alternatively, a UnicodeSet could hold each even-numbered range.
+     *   All ranges could be enumerated by using each start code point
+     *   (for the even-numbered ranges) as well as each limit (end+1) code point
+     *   (for the odd-numbered ranges).
+     *   It should be possible to combine two such sets by xor-ing them,
+     *   but no more than two.
+     *
+     * The second way to represent ranges may(?!) yield smaller UnicodeSet arrays,
+     * but the first one is certainly simpler and applicable for combining more than
+     * two range sets.
+     *
+     * It is possible to combine all range sets for all uprops/unorm tries into one
+     * set that can be used for all properties.
+     * As an optimization, there could be less-combined range sets for certain
+     * groups of properties.
+     * The relationship of which less-combined range set to use for which property
+     * depends on the implementation of the properties and must be hardcoded
+     * - somewhat error-prone and higher maintenance but can be tested easily
+     * by building property sets "the simple way" in test code.
+     *
+     * ---
+     *
+     * Do not use a UnicodeSet pattern because that causes infinite recursion;
+     * UnicodeSet depends on the inclusions set.
+     *
+     * ---
+     *
+     * getInclusions() is commented out starting 2005-feb-12 because
+     * UnicodeSet now calls the uxyz_addPropertyStarts() directly,
+     * and only for the relevant property source.
+     */
+    /*
+    public UnicodeSet getInclusions() {
+        UnicodeSet set = new UnicodeSet();
+        NormalizerImpl.addPropertyStarts(set);
+        addPropertyStarts(set);
+        return set;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/impl/UCharacterPropertyReader.java b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
new file mode 100644
index 0000000..abe337b
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
@@ -0,0 +1,161 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* <p>Internal reader class for ICU data file uprops.icu containing 
+* Unicode codepoint data.</p> 
+* <p>This class simply reads uprops.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterProperty.html>com.ibm.icu.impl.UCharacterProperty</a>.
+* </p> 
+* <p>uprops.icu which is in big-endian format is jared together with this 
+* package.</p>
+*
+* Unicode character properties file format see
+* (ICU4C)/source/tools/genprops/store.c
+*
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+*/
+final class UCharacterPropertyReader implements ICUBinary.Authenticate
+{
+    // public methods ----------------------------------------------------
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION_[0] 
+               && version[2] == DATA_FORMAT_VERSION_[2] 
+               && version[3] == DATA_FORMAT_VERSION_[3];
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UCharacterPropertyReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        m_unicodeVersion_ = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                                                 this);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+    
+    // protected methods -------------------------------------------------
+      
+    /**
+    * <p>Reads uprops.icu, parse it into blocks of data to be stored in
+    * UCharacterProperty.</P
+    * @param ucharppty UCharacterProperty instance
+    * @exception IOException thrown when data reading fails
+    */
+    protected void read(UCharacterProperty ucharppty) throws IOException
+    {
+        // read the indexes
+        int count = INDEX_SIZE_;
+        m_propertyOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_exceptionOffset_         = m_dataInputStream_.readInt();
+        count --;
+        m_caseOffset_              = m_dataInputStream_.readInt();
+        count --;
+        m_additionalOffset_        = m_dataInputStream_.readInt();
+        count --;
+        m_additionalVectorsOffset_ = m_dataInputStream_.readInt();
+        count --;
+        m_additionalColumnsCount_  = m_dataInputStream_.readInt();
+        count --;
+        m_reservedOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_dataInputStream_.skipBytes(3 << 2);
+        count -= 3;
+        ucharppty.m_maxBlockScriptValue_ = m_dataInputStream_.readInt();
+        count --; // 10
+        ucharppty.m_maxJTGValue_ = m_dataInputStream_.readInt();
+        count --; // 11
+        m_dataInputStream_.skipBytes(count << 2);
+
+        // read the trie index block
+        // m_props_index_ in terms of ints
+        ucharppty.m_trie_ = new CharTrie(m_dataInputStream_, null);
+
+        // skip the 32 bit properties block
+        int size = m_exceptionOffset_ - m_propertyOffset_;
+        m_dataInputStream_.skipBytes(size * 4);
+
+        // reads the 32 bit exceptions block
+        size = m_caseOffset_ - m_exceptionOffset_;
+        m_dataInputStream_.skipBytes(size * 4);
+
+        // reads the 32 bit case block
+        size = (m_additionalOffset_ - m_caseOffset_) << 1;
+        m_dataInputStream_.skipBytes(size * 2);
+
+        if(m_additionalColumnsCount_ > 0) {
+            // reads the additional property block
+            ucharppty.m_additionalTrie_ = new CharTrie(m_dataInputStream_, null);
+                                                               
+            // additional properties
+            size = m_reservedOffset_ - m_additionalVectorsOffset_;
+            ucharppty.m_additionalVectors_ = new int[size];
+            for (int i = 0; i < size; i ++) {
+                ucharppty.m_additionalVectors_[i] = m_dataInputStream_.readInt();
+            }
+        }
+
+        m_dataInputStream_.close();
+        ucharppty.m_additionalColumnsCount_ = m_additionalColumnsCount_;
+        ucharppty.m_unicodeVersion_ = VersionInfo.getInstance(
+                         (int)m_unicodeVersion_[0], (int)m_unicodeVersion_[1],
+                         (int)m_unicodeVersion_[2], (int)m_unicodeVersion_[3]);
+    }
+    
+    // private variables -------------------------------------------------
+      
+    /**
+    * Index size
+    */
+    private static final int INDEX_SIZE_ = 16;
+    
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream m_dataInputStream_;
+      
+    /**
+    * Offset information in the indexes.
+    */
+    private int m_propertyOffset_;
+    private int m_exceptionOffset_;
+    private int m_caseOffset_;
+    private int m_additionalOffset_;
+    private int m_additionalVectorsOffset_;
+    private int m_additionalColumnsCount_;
+    private int m_reservedOffset_;
+    private byte m_unicodeVersion_[];  
+                                      
+    /**
+    * Data format "UPro".
+    */
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x50, 
+                                                    (byte)0x72, (byte)0x6F};
+    /**
+     * Format version; this code works with all versions with the same major
+     * version number and the same Trie bit distribution.
+     */
+    private static final byte DATA_FORMAT_VERSION_[] = {(byte)0x5, (byte)0, 
+                                             (byte)Trie.INDEX_STAGE_1_SHIFT_, 
+                                             (byte)Trie.INDEX_STAGE_2_SHIFT_};
+}
diff --git a/src/com/ibm/icu/impl/UCharacterUtility.java b/src/com/ibm/icu/impl/UCharacterUtility.java
new file mode 100644
index 0000000..dc10e06
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterUtility.java
@@ -0,0 +1,194 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+/**
+* Internal character utility class for simple data type conversion and String 
+* parsing functions. Does not have an analog in the JDK.
+* @author Syn Wee Quek
+* @since sep2900
+*/
+
+public final class UCharacterUtility
+{
+    // public methods -----------------------------------------------------
+    
+    /**
+    * Determines if codepoint is a non character
+    * @param ch codepoint
+    * @return true if codepoint is a non character false otherwise
+    */
+    public static boolean isNonCharacter(int ch) 
+    {
+        if ((ch & NON_CHARACTER_SUFFIX_MIN_3_0_) == 
+                                            NON_CHARACTER_SUFFIX_MIN_3_0_) {
+            return true;
+        }
+        
+        return ch >= NON_CHARACTER_MIN_3_1_ && ch <=  NON_CHARACTER_MAX_3_1_;
+    }
+    
+    // package private methods ---------------------------------------------
+      
+    /**
+    * joining 2 chars to form an int
+    * @param msc most significant char
+    * @param lsc least significant char
+    * @return int form
+    */
+    static int toInt(char msc, char lsc)
+    {
+        return ((msc << 16) | lsc);
+    }
+       
+    /**
+    * Retrieves a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str stringbuffer to store data in, data will be store with each
+    *            byte as a char
+    * @param array byte array
+    * @param index to start substring in byte count
+    * @return the end position of the substring within the character array
+    */
+    static int getNullTermByteSubString(StringBuffer str, byte[] array, 
+                                                  int index)
+    {
+        byte b = 1;
+        
+        while (b != 0)
+        {
+            b = array[index];
+            if (b != 0) {
+                str.append((char)(b & 0x00FF));
+            }
+            index ++;
+        }
+        return index;
+    }
+       
+    /**
+    * Compares a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. if the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str string to compare
+    * @param array byte array
+    * @param strindex index within str to start comparing
+    * @param aindex array index to start in byte count
+    * @return the end position of the substring within str if matches otherwise 
+    *         a -1
+    */
+    static int compareNullTermByteSubString(String str, byte[] array, 
+                                                      int strindex, int aindex)
+    {
+        byte b = 1;
+        int length = str.length();
+        
+        while (b != 0)
+        {
+            b = array[aindex];  
+            aindex ++;
+            if (b == 0) {
+                break;
+            }
+            // if we have reached the end of the string and yet the array has not 
+            // reached the end of their substring yet, abort
+            if (strindex == length 
+                || (str.charAt(strindex) != (char)(b & 0xFF))) {
+              return -1;
+            }
+            strindex ++;
+        }
+        return strindex;
+    }
+       
+    /**
+    * Skip null terminated substrings from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param array byte array
+    * @param index to start substrings in byte count
+    * @param skipcount number of null terminated substrings to skip
+    * @return the end position of the substrings within the character array
+    */
+    static int skipNullTermByteSubString(byte[] array, int index, 
+                                                   int skipcount)
+    {
+        byte b;
+        for (int i = 0; i < skipcount; i ++)
+        {
+            b = 1;
+            while (b != 0)
+            {
+                b = array[index];
+                index ++;
+            }
+        }
+        return index;
+    }
+       
+    /**
+     * skip substrings from an array of characters, where each character is a set 
+     * of 2 bytes. substring is a set of non-zero bytes starting from argument 
+     * start to the byte of the argument value. skips up to a max number of 
+     * characters
+     * @param array byte array to parse
+     * @param index to start substrings in byte count
+     * @param length the max number of bytes to skip
+     * @param skipend value of byte to skip to
+     * @return the number of bytes skipped
+     */
+    static int skipByteSubString(byte[] array, int index, int length, 
+                                           byte skipend)
+    {
+        int result;
+        byte b;
+        
+        for (result = 0; result < length; result ++)
+        {
+            b = array[index + result];
+            if (b == skipend)
+            {
+                result ++;
+                break;
+            }
+        }
+        
+        return result;
+    }
+    
+    // private data member --------------------------------------------------
+    
+    /**
+    * Minimum suffix value that indicates if a character is non character.
+    * Unicode 3.0 non characters
+    */
+    private static final int NON_CHARACTER_SUFFIX_MIN_3_0_ = 0xFFFE;
+    /**
+    * New minimum non character in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MIN_3_1_ = 0xFDD0;
+    /**
+    * New non character range in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MAX_3_1_ = 0xFDEF;
+    
+    // private constructor --------------------------------------------------
+      
+    ///CLOVER:OFF
+    /**
+    * private constructor to avoid initialisation
+    */
+    private UCharacterUtility()
+    {
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/impl/UPropertyAliases.java b/src/com/ibm/icu/impl/UPropertyAliases.java
new file mode 100644
index 0000000..146f9b0
--- /dev/null
+++ b/src/com/ibm/icu/impl/UPropertyAliases.java
@@ -0,0 +1,654 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: November 5 2002
+ * Since: ICU 2.4
+ **********************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.*;
+
+import com.ibm.icu.lang.*;
+
+/**
+ * Wrapper for the pnames.icu binary data file.  This data file is
+ * imported from icu4c.  It contains property and property value
+ * aliases from the UCD files PropertyAliases.txt and
+ * PropertyValueAliases.txt.  The file is built by the icu4c tool
+ * genpname.  It must be built on an ASCII big-endian platform to be
+ * usable in icu4j.
+ *
+ * This class performs two functions.
+ *
+ * (1) It can import the flat binary data into a tree of usable
+ * objects.
+ *
+ * (2) It provides an API to access the tree of objects.
+ *
+ * Needless to say, this class is tightly coupled to the binary format
+ * of icu4c's pnames.icu file.
+ *
+ * Each time a UPropertyAliases is constructed, the pnames.icu file is
+ * read, parsed, and a data tree assembled.  Clients should create one
+ * singleton instance and cache it.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public final class UPropertyAliases implements ICUBinary.Authenticate {
+
+    //----------------------------------------------------------------
+    // Runtime data.  This is an unflattened representation of the
+    // data in pnames.icu.
+
+    /**
+     * Map from property enum value to nameGroupPool[] index
+     */
+    private NonContiguousEnumToShort enumToName;
+
+    /**
+     * Map from property alias to property enum value
+     */
+    private NameToEnum nameToEnum;
+
+    /**
+     * Map from property enum value to valueMapArray[] index
+     */
+    private NonContiguousEnumToShort enumToValue;
+
+    /**
+     * Each entry represents a binary or enumerated property
+     */
+    private ValueMap valueMapArray[];
+
+    /**
+     * Pool of concatenated integer runs.  Each run contains one
+     * or more entries.  The last entry of the run is negative.
+     * A zero entry indicates "n/a" in the Property*Aliases.txt.
+     * Each entry is a stringPool[] index.
+     */
+    private short nameGroupPool[];
+
+    /**
+     * Pool of strings.
+     */
+    private String stringPool[];
+
+    //----------------------------------------------------------------
+    // Constants
+
+    /**
+     * Debug flag (not really constant)
+     */
+    private static boolean DEBUG = ICUDebug.enabled("pnames");
+
+    /**
+     * File format that this class understands.
+     * See icu4c/src/common/propname.h.
+     */
+    private static final byte DATA_FORMAT_ID[] = {'p', 'n', 'a', 'm'};
+
+    /**
+     * File version that this class understands.
+     * See icu4c/src/common/propname.h.
+     */
+    private static final byte DATA_FORMAT_VERSION = 1;
+
+    /**
+     * Name of the datafile
+     */
+    private static final String DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE+"/pnames.icu";
+
+    /**
+     * Buffer size of datafile.  The whole file is < 16k.
+     */
+    private static final int DATA_BUFFER_SIZE = 8192;
+
+    //----------------------------------------------------------------
+    // Constructor
+
+    /**
+     * Constructs a UPropertyAliases object.  The binary file
+     * DATA_FILE_NAME is read from the jar/classpath and unflattened
+     * into member variables of this object.
+     */
+    public UPropertyAliases() throws IOException {
+
+        // Open the .icu file from the jar/classpath
+        InputStream is = ICUData.getRequiredStream(DATA_FILE_NAME);
+        BufferedInputStream b = new BufferedInputStream(is, DATA_BUFFER_SIZE);
+        // Read and discard Unicode version...
+       /* byte unicodeVersion[] = */ICUBinary.readHeader(b, DATA_FORMAT_ID, this);
+        DataInputStream d = new DataInputStream(b);
+
+        // Record the origin position of the file.  Keep enough around
+        // to seek back to the start of the header.
+        d.mark(256);
+
+        short enumToName_offset = d.readShort();
+        short nameToEnum_offset = d.readShort();
+        short enumToValue_offset = d.readShort();
+        short total_size = d.readShort();
+        short valueMap_offset = d.readShort();
+        short valueMap_count = d.readShort();
+        short nameGroupPool_offset = d.readShort();
+        short nameGroupPool_count = d.readShort();
+        short stringPool_offset = d.readShort();
+        short stringPool_count = d.readShort();
+
+        if (DEBUG) {
+            System.out.println(
+               "enumToName_offset=" + enumToName_offset + "\n" +
+               "nameToEnum_offset=" + nameToEnum_offset + "\n" +
+               "enumToValue_offset=" + enumToValue_offset + "\n" +
+               "total_size=" + total_size + "\n" +
+               "valueMap_offset=" + valueMap_offset + "\n" +
+               "valueMap_count=" + valueMap_count + "\n" +
+               "nameGroupPool_offset=" + nameGroupPool_offset + "\n" +
+               "nameGroupPool_count=" + nameGroupPool_count + "\n" +
+               "stringPool_offset=" + stringPool_offset + "\n" +
+               "stringPool_count=" + stringPool_count);
+        }
+
+        // Read it all (less than 32k).  Seeking around (using
+        // mark/reset/skipBytes) doesn't work directly on the file,
+        // but it works fine if we read everything into a byte[] array
+        // first.
+        byte raw[] = new byte[total_size];
+        d.reset();
+        d.readFully(raw);
+        d.close();
+
+        Builder builder = new Builder(raw);
+
+        stringPool = builder.readStringPool(stringPool_offset,
+                                            stringPool_count);
+
+        nameGroupPool = builder.readNameGroupPool(nameGroupPool_offset,
+                                                  nameGroupPool_count);
+
+        builder.setupValueMap_map(valueMap_offset, valueMap_count);
+
+        // Some of the following data structures have to be set up
+        // here, _not_ in Builder.  That's because they are instances
+        // of non-static inner classes, and they contain implicit
+        // references to this.
+
+        builder.seek(enumToName_offset);
+        enumToName = new NonContiguousEnumToShort(builder);
+        builder.nameGroupOffsetToIndex(enumToName.offsetArray);
+
+        builder.seek(nameToEnum_offset);
+        nameToEnum = new NameToEnum(builder);
+
+        builder.seek(enumToValue_offset);
+        enumToValue = new NonContiguousEnumToShort(builder);
+        builder.valueMapOffsetToIndex(enumToValue.offsetArray);
+
+        valueMapArray = new ValueMap[valueMap_count];
+        for (int i=0; i<valueMap_count; ++i) {
+            // Must seek to the start of each entry.
+            builder.seek(builder.valueMap_map[i]);
+            valueMapArray[i] = new ValueMap(builder);
+        }
+
+        builder.close();
+    }
+
+    //----------------------------------------------------------------
+    // Public API
+
+    /**
+     * Return a property name given a property enum.  Multiple
+     * names may be available for each property; the nameChoice
+     * selects among them.
+     */
+    public String getPropertyName(int property,
+                                  int nameChoice) {
+        short nameGroupIndex = enumToName.getShort(property);
+        return chooseNameInGroup(nameGroupIndex, nameChoice);
+    }
+
+    /**
+     * Return a property enum given one of its property names.
+     */
+    public int getPropertyEnum(String propertyAlias) {
+        return nameToEnum.getEnum(propertyAlias);
+    }
+
+    /**
+     * Return a value name given a property enum and a value enum.
+     * Multiple names may be available for each value; the nameChoice
+     * selects among them.
+     */
+    public String getPropertyValueName(int property,
+                                       int value,
+                                       int nameChoice) {
+        ValueMap vm = getValueMap(property);
+        short nameGroupIndex = vm.enumToName.getShort(value);
+        return chooseNameInGroup(nameGroupIndex, nameChoice);
+    }
+
+    /**
+     * Return a value enum given one of its value names and the
+     * corresponding property alias.
+     */
+    public int getPropertyValueEnum(int property,
+                                    String valueAlias) {
+        ValueMap vm = getValueMap(property);
+        return vm.nameToEnum.getEnum(valueAlias);
+    }
+
+    //----------------------------------------------------------------
+    // Data structures
+
+    /**
+     * A map for the legal values of a binary or enumerated properties.
+     */
+    private class ValueMap {
+
+        /**
+         * Maps value enum to index into the nameGroupPool[]
+         */
+        EnumToShort enumToName; // polymorphic
+
+        /**
+         * Maps value name to value enum.
+         */
+        NameToEnum nameToEnum;
+
+        ValueMap(Builder b) throws IOException {
+            short enumToName_offset = b.readShort();
+            short ncEnumToName_offset = b.readShort();
+            short nameToEnum_offset = b.readShort();
+            if (enumToName_offset != 0) {
+                b.seek(enumToName_offset);
+                ContiguousEnumToShort x = new ContiguousEnumToShort(b);
+                b.nameGroupOffsetToIndex(x.offsetArray);
+                enumToName = x;
+            } else {
+                b.seek(ncEnumToName_offset);
+                NonContiguousEnumToShort x = new NonContiguousEnumToShort(b);
+                b.nameGroupOffsetToIndex(x.offsetArray);
+                enumToName = x;
+            }
+            b.seek(nameToEnum_offset);
+            nameToEnum = new NameToEnum(b);
+        }
+    }
+
+    /**
+     * Abstract map from enum values to integers.
+     */
+    private interface EnumToShort {
+        short getShort(int enumProbe);
+    }
+
+    /**
+     * Generic map from enum values to offsets.  Enum values are
+     * contiguous.
+     */
+    private static class ContiguousEnumToShort implements EnumToShort {
+        int enumStart;
+        int enumLimit;
+        short offsetArray[];
+
+        public short getShort(int enumProbe) {
+            if (enumProbe < enumStart || enumProbe >= enumLimit) {
+                throw new IllegalArgumentException("Invalid enum. enumStart = " +enumStart +
+                                                   " enumLimit = " + enumLimit +
+                                                   " enumProbe = " + enumProbe );
+            }
+            return offsetArray[enumProbe - enumStart];
+        }
+
+        ContiguousEnumToShort(ICUBinaryStream s) throws IOException  {
+            enumStart = s.readInt();
+            enumLimit = s.readInt();
+            int count = enumLimit - enumStart;
+            offsetArray = new short[count];
+            for (int i=0; i<count; ++i) {
+                offsetArray[i] = s.readShort();
+            }
+        }
+    }
+
+    /**
+     * Generic map from enum values to offsets.  Enum values need not
+     * be contiguous.
+     */
+    private static class NonContiguousEnumToShort implements EnumToShort {
+        int enumArray[];
+        short offsetArray[];
+
+        public short getShort(int enumProbe) {
+            for (int i=0; i<enumArray.length; ++i) {
+                if (enumArray[i] < enumProbe) continue;
+                if (enumArray[i] > enumProbe) break;
+                return offsetArray[i];
+            }
+            throw new IllegalArgumentException("Invalid enum");
+        }
+
+        NonContiguousEnumToShort(ICUBinaryStream s) throws IOException  {
+            int i;
+            int count = s.readInt();
+            enumArray = new int[count];
+            offsetArray = new short[count];
+            for (i=0; i<count; ++i) {
+                enumArray[i] = s.readInt();
+            }
+            for (i=0; i<count; ++i) {
+                offsetArray[i] = s.readShort();
+            }
+        }
+    }
+
+    /**
+     * Map from names to enum values.
+     */
+    private class NameToEnum {
+        int enumArray[];
+        short nameArray[];
+
+        int getEnum(String nameProbe) {
+            for (int i=0; i<nameArray.length; ++i) {
+                int c = UPropertyAliases.compare(nameProbe,
+                                                 stringPool[nameArray[i]]);
+                if (c > 0) continue;
+                if (c < 0) break;
+                return enumArray[i];
+            }
+            throw new IllegalArgumentException("Invalid name: " + nameProbe);
+        }
+
+        NameToEnum(Builder b) throws IOException {
+            int i;
+            int count = b.readInt();
+            enumArray = new int[count];
+            nameArray = new short[count];
+            for (i=0; i<count; ++i) {
+                enumArray[i] = b.readInt();
+            }
+            for (i=0; i<count; ++i) {
+                nameArray[i] = b.stringOffsetToIndex(b.readShort());
+            }
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Runtime implementation
+
+    /**
+     * Compare two property names, returning <0, 0, or >0.  The
+     * comparison is that described as "loose" matching in the
+     * Property*Aliases.txt files.
+     */
+    public static int compare(String stra, String strb) {
+        // Note: This implementation is a literal copy of
+        // uprv_comparePropertyNames.  It can probably be improved.
+        int istra=0, istrb=0, rc;
+        int cstra=0, cstrb=0;
+        for (;;) {
+            /* Ignore delimiters '-', '_', and ASCII White_Space */
+            while (istra<stra.length()) {
+                cstra = stra.charAt(istra);
+                switch (cstra) {
+                case '-':  case '_':  case ' ':  case '\t':
+                case '\n': case 0xb/*\v*/: case '\f': case '\r':
+                    ++istra;
+                    continue;
+                }
+                break;
+            }
+
+            while (istrb<strb.length()) {
+                cstrb = strb.charAt(istrb);
+                switch (cstrb) {
+                case '-':  case '_':  case ' ':  case '\t':
+                case '\n': case 0xb/*\v*/: case '\f': case '\r':
+                    ++istrb;
+                    continue;
+                }
+                break;
+            }
+
+            /* If we reach the ends of both strings then they match */
+            boolean endstra = istra==stra.length();
+            boolean endstrb = istrb==strb.length();
+            if (endstra) {
+                if (endstrb) return 0;
+                cstra = 0;
+            } else if (endstrb) {
+                cstrb = 0;
+            }
+
+            rc = UCharacter.toLowerCase(cstra) - UCharacter.toLowerCase(cstrb);
+            if (rc != 0) {
+                return rc;
+            }
+
+            ++istra;
+            ++istrb;
+        }
+    }
+
+    /**
+     * Given an index to a run within the nameGroupPool[], and a
+     * nameChoice (0,1,...), select the nameChoice-th entry of the run.
+     */
+    private String chooseNameInGroup(short nameGroupIndex, int nameChoice) {
+        if (nameChoice < 0) {
+            throw new IllegalArgumentException("Invalid name choice");
+        }
+        while (nameChoice-- > 0) {
+            if (nameGroupPool[nameGroupIndex++] < 0) {
+                throw new IllegalArgumentException("Invalid name choice");
+            }
+        }
+        short a = nameGroupPool[nameGroupIndex];
+        return stringPool[(a < 0) ? -a : a];
+    }
+
+    /**
+     * Return the valueMap[] entry for a given property.
+     */
+    private ValueMap getValueMap(int property) {
+        int valueMapIndex = enumToValue.getShort(property);
+        return valueMapArray[valueMapIndex];
+    }
+
+    //----------------------------------------------------------------
+    // ICUBinary API
+
+    /**
+     * Return true if the given data version can be used.
+     */
+    public boolean isDataVersionAcceptable(byte version[])   {
+        return version[0] == DATA_FORMAT_VERSION;
+    }
+
+    //----------------------------------------------------------------
+    // Builder
+
+    /**
+     * A specialized ICUBinaryStream that can map between offsets and
+     * index values into various arrays (stringPool, nameGroupPool,
+     * and valueMap).  It also knows how to read various structures.
+     */
+    static class Builder extends ICUBinaryStream {
+
+        // map[i] = offset of object i.  We need maps for all of our
+        // arrays.  The arrays are indexed by offset in the raw binary
+        // file; we need to translate that to index.
+
+        private short stringPool_map[];
+
+        private short valueMap_map[];
+
+        private short nameGroup_map[];
+
+        public Builder(byte raw[]) {
+            super(raw);
+        }
+
+        /**
+         * The valueMap_map[] must be setup in advance.  This method
+         * does that.
+         */
+        public void setupValueMap_map(short offset, short count) {
+            valueMap_map = new short[count];
+            for (int i=0; i<count; ++i) {
+                // Start of each entry.  Each entry is 6 bytes long.
+                valueMap_map[i] = (short) (offset + i * 6);
+            }
+        }
+
+        /**
+         * Read stringPool[].  Build up translation table from offsets
+         * to string indices (stringPool_map[]).
+         */
+        public String[] readStringPool(short offset, short count)
+            throws IOException {
+            seek(offset);
+            // Allocate one more stringPool entry than needed.  Use this
+            // to store a "no string" entry in the pool, at index 0.  This
+            // maps to offset 0, so let stringPool_map[0] = 0.
+            String stringPool[] = new String[count + 1];
+            stringPool_map = new short[count + 1];
+            short pos = offset;
+            StringBuffer buf = new StringBuffer();
+            stringPool_map[0] = 0;
+            for (int i=1; i<=count; ++i) {
+                buf.setLength(0);
+                for (;;) {
+                    // This works because the name is invariant-ASCII
+                    char c = (char) readUnsignedByte();
+                    if (c == 0) break;
+                    buf.append(c);
+                }
+                stringPool_map[i] = pos;
+                stringPool[i] = buf.toString();
+                pos += stringPool[i].length() + 1;
+            }
+            if (DEBUG) {
+                System.out.println("read stringPool x " + count +
+                                   ": " + stringPool[1] + ", " +
+                                   stringPool[2] + ", " +
+                                   stringPool[3] + ",...");
+            }
+            return stringPool;
+        }
+
+        /**
+         * Read the nameGroupPool[], and build up the offset->index
+         * map (nameGroupPool_map[]).
+         */
+        public short[] readNameGroupPool(short offset, short count)
+            throws IOException {
+            // Read nameGroupPool[].  This contains offsets from start of
+            // header.  We translate these into indices into stringPool[]
+            // on the fly.  The offset 0, which indicates "no entry", we
+            // translate into index 0, which contains a null String
+            // pointer.
+            seek(offset);
+            short pos = offset;
+            short nameGroupPool[] = new short[count];
+            nameGroup_map = new short[count];
+            for (int i=0; i<count; ++i) {
+                nameGroup_map[i] = pos;
+                nameGroupPool[i] = stringOffsetToIndex(readShort());
+                pos += 2;
+            }
+            if (DEBUG) {
+                System.out.println("read nameGroupPool x " + count +
+                                   ": " + nameGroupPool[0] + ", " +
+                                   nameGroupPool[1] + ", " +
+                                   nameGroupPool[2] + ",...");
+            }
+            return nameGroupPool;
+        }
+
+        /**
+         * Convert an offset into the string pool into a stringPool[]
+         * index.
+         */
+        private short stringOffsetToIndex(short offset) {
+            int probe = offset;
+            if (probe < 0) probe = -probe;
+            for (int i=0; i<stringPool_map.length; ++i) {
+                if (stringPool_map[i] == probe) {
+                    return (short) ((offset < 0) ? -i : i);
+                }
+            }
+            throw new IllegalStateException("Can't map string pool offset " + 
+                                            offset + " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the string pool into an
+         * array of stringPool[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+/*        private void stringOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = stringOffsetToIndex(array[i]);
+            }
+        }*/
+
+        /**
+         * Convert an offset into the value map into a valueMap[]
+         * index.
+         */
+        private short valueMapOffsetToIndex(short offset) {
+            for (short i=0; i<valueMap_map.length; ++i) {
+                if (valueMap_map[i] == offset) {
+                    return i;
+                }
+            }
+            throw new IllegalStateException("Can't map value map offset " + 
+                                            offset + " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the value map array into
+         * an array of valueMap[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+        private void valueMapOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = valueMapOffsetToIndex(array[i]);
+            }
+        }
+
+        /**
+         * Convert an offset into the name group pool into a
+         * nameGroupPool[] index.
+         */
+        private short nameGroupOffsetToIndex(short offset) {
+            for (short i=0; i<nameGroup_map.length; ++i) {
+                if (nameGroup_map[i] == offset) {
+                    return i;
+                }
+            }
+            throw new RuntimeException("Can't map name group offset " + offset +
+                                       " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the name group pool into an
+         * array of nameGroupPool[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+        private void nameGroupOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = nameGroupOffsetToIndex(array[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/URLHandler.java b/src/com/ibm/icu/impl/URLHandler.java
new file mode 100644
index 0000000..d2a1c72
--- /dev/null
+++ b/src/com/ibm/icu/impl/URLHandler.java
@@ -0,0 +1,243 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and        *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+public abstract class URLHandler {
+    public static final String PROPNAME = "urlhandler.props";
+    
+    private static final Map handlers;
+    
+    private static final boolean DEBUG = ICUDebug.enabled("URLHandler");
+    
+    static {
+        Map h = null;
+        
+        try {
+            InputStream is = URLHandler.class.getResourceAsStream(PROPNAME);
+            
+            if (is == null) {
+                is = ClassLoader.getSystemClassLoader().getResourceAsStream(PROPNAME);
+            }
+            
+            if (is != null) {
+                Class[] params = { URL.class };
+                BufferedReader br = new BufferedReader(new InputStreamReader(is));
+                
+                for (String line = br.readLine(); line != null; line = br.readLine()) {
+                    line = line.trim();
+                    
+                    if (line.length() == 0 || line.charAt(0) == '#') {
+                        continue;
+                    }
+                    
+                    int ix = line.indexOf('=');
+                    
+                    if (ix == -1) {
+                        if (DEBUG) System.err.println("bad urlhandler line: '" + line + "'");
+                        break;
+                    }
+                    
+                    String key = line.substring(0, ix).trim();
+                    String value = line.substring(ix+1).trim();
+                    
+                    try {
+                        Class cl = Class.forName(value);
+                        Method m = cl.getDeclaredMethod("get", params);
+                        
+                        if (h == null) {
+                            h = new HashMap();
+                        }
+                        
+                        h.put(key, m);
+                    }
+                    catch (ClassNotFoundException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                    catch(NoSuchMethodException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                    catch(SecurityException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                }
+            }
+        } catch (Throwable t) {
+            if (DEBUG) System.err.println(t);
+        }
+        
+        handlers = h;
+    }
+    
+    public static URLHandler get(URL url) {
+        if (url == null) {
+            return null;
+        }
+        
+        String protocol = url.getProtocol();
+        
+        if (handlers != null) {
+            Method m = (Method)handlers.get(protocol);
+            
+            if (m != null) {
+                try {
+                    URLHandler handler = (URLHandler)m.invoke(null, new Object[] { url });
+                    
+                    if (handler != null) {
+                        return handler;
+                    }
+                }
+                catch(IllegalAccessException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+                catch(IllegalArgumentException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+                catch(InvocationTargetException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+            }
+        }
+        
+        return getDefault(url);
+    }
+    
+    protected static URLHandler getDefault(URL url) {
+        String protocol = url.getProtocol();
+        
+        if (protocol.equals("file")) {
+            return new FileURLHandler(url);
+        } else if (protocol.equals("jar")) {
+            return new JarURLHandler(url);
+        } else {
+            return null;
+        }
+    }
+    
+    private static class FileURLHandler extends URLHandler {
+        File file;
+        String root;
+        
+        FileURLHandler(URL url) {
+            root = url.getPath();
+            file = new File(root);
+            
+            if (!file.exists()) {
+                if (DEBUG) System.err.println("file does not exist");
+                throw new IllegalArgumentException();
+            }
+        }
+        
+        public void guide(URLVisitor v, boolean recurse, boolean strip) {
+            if (file.isDirectory()) {
+                process(v, recurse, strip, "/", file.listFiles());
+            } else {
+                v.visit(file.getName());
+            }
+        }
+        
+        private void process(URLVisitor v, boolean recurse, boolean strip, String path, File[] files) {
+            for (int i = 0; i < files.length; i++) {
+                File f = files[i];
+                
+                if (f.isDirectory()) {
+                    if (recurse) {
+                        process(v, recurse, strip, path + f.getName()+ '/', f.listFiles());
+                    }
+                } else {
+                    v.visit(strip? f.getName() : path + f.getName());
+                }
+            }
+        }
+    }
+    
+    private static class JarURLHandler extends URLHandler {
+        JarFile jarFile;
+        String prefix;
+        
+        JarURLHandler(URL url) {
+            try {
+                prefix = url.getPath();
+                
+                int ix = prefix.indexOf("!/");
+                
+                if (ix >= 0) {
+                    prefix = prefix.substring(ix + 2); // truncate after "!/"
+                }
+                
+                JarURLConnection conn = (JarURLConnection)url.openConnection();
+                
+                jarFile = conn.getJarFile();
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("icurb jar error: " + e);
+                throw new IllegalArgumentException("jar error: " + e.getMessage());
+            }
+        }
+        
+        public void guide(URLVisitor v, boolean recurse, boolean strip) {
+            try {
+                Enumeration entries = jarFile.entries();
+                
+                while (entries.hasMoreElements()) {
+                    JarEntry entry = (JarEntry)entries.nextElement();
+                    
+                    if (!entry.isDirectory()) { // skip just directory paths
+                        String name = entry.getName();
+                        
+                        if (name.startsWith(prefix)) {
+                            name = name.substring(prefix.length());
+                            
+                            int ix = name.lastIndexOf('/');
+                            
+                            if (ix != -1) {
+                                if (!recurse) {
+                                    continue;
+                                }
+                                
+                                if (strip) {
+                                    name = name.substring(ix+1);
+                                }
+                            }
+                            
+                            v.visit(name);
+                        }
+                    }
+                }
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("icurb jar error: " + e);
+            }
+        }
+    }
+    
+    public void guide(URLVisitor visitor, boolean recurse)
+    {
+        guide(visitor, recurse, true);
+    }
+    
+    public abstract void guide(URLVisitor visitor, boolean recurse, boolean strip);
+    
+    public interface URLVisitor {
+        void visit(String str);
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/USerializedSet.java b/src/com/ibm/icu/impl/USerializedSet.java
new file mode 100644
index 0000000..7ffbcf0
--- /dev/null
+++ b/src/com/ibm/icu/impl/USerializedSet.java
@@ -0,0 +1,187 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2002-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+/**
+ * @version     1.1
+ * @author     Markus W. Scherer
+ * Ram: Add documentation, remove unwanted methods, improve coverage.
+ */
+
+/**
+ * Simple class for handling serialized USet/UnicodeSet structures
+ * without object creation. See ICU4C icu/source/common/uset.c.
+ *
+ * @internal
+ */
+public final class USerializedSet {
+    /**
+     * Fill in the given serialized set object.
+     * @param src pointer to start of array
+     * @param srcStart pointer to start of serialized data (length value)
+     * @return true if the given array is valid, otherwise false
+     */
+    public final boolean getSet(char src[], int srcStart) {
+        // leave most argument checking up to Java exceptions
+        array=null;
+        arrayOffset=bmpLength=length=0;
+
+        length=src[srcStart++];
+        
+        
+        if((length&0x8000) >0) {
+            /* there are supplementary values */
+            length&=0x7fff;
+            if(src.length<(srcStart+1+length)) {
+                length=0;
+                throw new IndexOutOfBoundsException();
+            }
+            bmpLength=src[srcStart++];
+        } else {
+            /* only BMP values */
+            if(src.length<(srcStart+length)) {
+                length=0;
+                throw new IndexOutOfBoundsException();
+            }
+            bmpLength=length;
+        }
+        array = new char[length];
+        System.arraycopy(src,srcStart,array,0,length);
+        //arrayOffset=srcStart;
+        return true;
+    }
+    
+    /**
+     * Set the USerializedSet to contain the given character (and nothing
+     * else).
+     */
+    public final void setToOne(int c) {
+        if( 0x10ffff<c) {
+            return;
+        }
+
+        if(c<0xffff) {
+            bmpLength=length=2;
+            array[0]=(char)c;
+            array[1]=(char)(c+1);
+        } else if(c==0xffff) {
+            bmpLength=1;
+            length=3;
+            array[0]=0xffff;
+            array[1]=1;
+            array[2]=0;
+        } else if(c<0x10ffff) {
+            bmpLength=0;
+            length=4;
+            array[0]=(char)(c>>16);
+            array[1]=(char)c;
+            ++c;
+            array[2]=(char)(c>>16);
+            array[3]=(char)c;
+        } else /* c==0x10ffff */ {
+            bmpLength=0;
+            length=2;
+            array[0]=0x10;
+            array[1]=0xffff;
+        }
+    }
+        
+    /**
+     * Returns a range of characters contained in the given serialized
+     * set.
+     * @param rangeIndex a non-negative integer in the range <code>0..
+     * getSerializedRangeCount()-1</code>
+     * @param range variable to receive the data in the range
+     * @return true if rangeIndex is valid, otherwise false
+     */
+    public final boolean getRange(int rangeIndex, int[] range) {
+        if( rangeIndex<0) {
+            return false;
+        }
+        if(array==null){
+            array = new char[8];
+        }
+        if(range==null || range.length <2){
+            throw new IllegalArgumentException();
+        }
+        rangeIndex*=2; /* address start/limit pairs */
+        if(rangeIndex<bmpLength) {
+            range[0]=array[rangeIndex++];
+            if(rangeIndex<bmpLength) {
+                range[1]=array[rangeIndex];
+            } else if(rangeIndex<length) {
+                range[1]=(((int)array[rangeIndex])<<16)|array[rangeIndex+1];
+            } else {
+                range[1]=0x110000;
+            }
+            range[1]-=1;
+            return true;
+        } else {
+            rangeIndex-=bmpLength;
+            rangeIndex*=2; /* address pairs of pairs of units */
+            length-=bmpLength;
+            if(rangeIndex<length) {
+                int offset=arrayOffset+bmpLength;
+                range[0]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                rangeIndex+=2;
+                if(rangeIndex<length) {
+                    range[1]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                } else {
+                    range[1]=0x110000;
+                }
+                range[1]-=1;
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+    
+    /**
+     * Returns true if the given USerializedSet contains the given
+     * character.
+     * @param c the character to test for
+     * @return true if set contains c
+     */
+    public final boolean contains(int c) {
+        
+        if(c>0x10ffff) {
+            return false;
+        }
+            
+        if(c<=0xffff) {
+            int i;
+            /* find c in the BMP part */
+            for(i=0; i<bmpLength && (char)c>=array[i]; ++i) {}
+            return (boolean)((i&1) != 0);
+        } else {
+            int i;
+            /* find c in the supplementary part */
+            char high=(char)(c>>16), low=(char)c;
+            for(i=bmpLength;
+                i<length && (high>array[i] || (high==array[i] && low>=array[i+1]));
+                i+=2) {}
+        
+            /* count pairs of 16-bit units even per BMP and check if the number of pairs is odd */
+            return (boolean)(((i+bmpLength)&2)!=0);
+        }
+    }
+
+    /**
+     * Returns the number of disjoint ranges of characters contained in
+     * the given serialized set.  Ignores any strings contained in the
+     * set.
+     * @return a non-negative integer counting the character ranges
+     * contained in set
+     */
+    public final int countRanges() {
+        return (bmpLength+(length-bmpLength)/2+1)/2;
+    }
+    
+    private char array[] = new char[8];
+    private int arrayOffset, bmpLength, length;
+}
diff --git a/src/com/ibm/icu/impl/Utility.java b/src/com/ibm/icu/impl/Utility.java
new file mode 100644
index 0000000..35fc4bf
--- /dev/null
+++ b/src/com/ibm/icu/impl/Utility.java
@@ -0,0 +1,1944 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+import java.util.ArrayList;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+public final class Utility {
+
+    private static final char APOSTROPHE = '\'';
+    private static final char BACKSLASH  = '\\';
+    private static final int MAGIC_UNSIGNED = 0x80000000;
+
+    /**
+     * Convenience utility to compare two Object[]s.
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof Object[])) return false;
+        Object[] targ = (Object[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two int[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(int[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof int[])) return false;
+        int[] targ = (int[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two double[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(double[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof double[])) return false;
+        double[] targ = (double[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+    public final static boolean arrayEquals(byte[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof byte[])) return false;
+        byte[] targ = (byte[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object source, Object target) {
+        if (source == null) return (target == null);
+        // for some reason, the correct arrayEquals is not being called
+        // so do it by hand for now.
+        if (source instanceof Object[])
+            return(arrayEquals((Object[]) source,target));
+        if (source instanceof int[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof double[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof byte[])
+            return(arrayEquals((byte[]) source,target));
+        return source.equals(target);
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(Object[] source, int sourceStart,
+                                            Object[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (!arrayEquals(source[i],target[i + delta]))
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i]!=target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /** 
+     * Convenience utility to compare two int[]s.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(int[] source, int sourceStart,
+                                            int[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(double[] source, int sourceStart,
+                                            double[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+    public final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+            byte[] target, int targetStart, int len){
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+                return false;
+            }
+        return true;
+    }
+
+    /**
+     * Convenience utility. Does null checks on objects, then calls equals.
+     */
+    public final static boolean objectEquals(Object source, Object target) {
+    if (source == null)
+            return (target == null);
+    else
+            return source.equals(target);
+    }
+
+    /**
+     * The ESCAPE character is used during run-length encoding.  It signals
+     * a run of identical chars.
+     */
+    private 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 an int 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 public final String arrayToRLEString(int[] a) {
+        StringBuffer buffer = new StringBuffer();
+
+        appendInt(buffer, a.length);
+        int runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            int 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 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 public 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 char 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 public final String arrayToRLEString(char[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        char runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            char s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, (short)runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, (short)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 public 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, int value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE) {
+                    appendInt(buffer, value);
+                }
+                appendInt(buffer, value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) {
+                    appendInt(buffer, ESCAPE);
+                }
+                appendInt(buffer, value);
+                --length;
+            }
+            appendInt(buffer, ESCAPE);
+            appendInt(buffer, length);
+            appendInt(buffer, value); // Don't need to escape this value
+        }
+    }
+    
+    private static final void appendInt(StringBuffer buffer, int value) {
+        buffer.append((char)(value >>> 16));
+        buffer.append((char)(value & 0xFFFF));
+    }
+
+    /**
+     * 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 ints from a run-length encoded string.
+     */
+    static public final int[] RLEStringToIntArray(String s) {
+        int length = getInt(s, 0);
+        int[] array = new int[length];
+        int ai = 0, i = 1;
+
+        int maxI = s.length() / 2;
+        while (ai < length && i < maxI) {
+            int c = getInt(s, i++);
+
+            if (c == ESCAPE) {
+                c = getInt(s, i++);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = c;
+                    int runValue = getInt(s, i++);
+                    for (int j=0; j<runLength; ++j) {
+                        array[ai++] = runValue;
+                    }
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length || i != maxI) {
+            throw new IllegalStateException("Bad run-length encoded int array");
+        }
+
+        return array;
+    }
+    static final int getInt(String s, int i) {
+        return (((int) s.charAt(2*i)) << 16) | (int) s.charAt(2*i+1);
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public 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 IllegalStateException("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final char[] RLEStringToCharArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        char[] array = new char[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++] = c;
+                } else {
+                    int runLength = (int) c;
+                    char runValue = s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length)
+            throw new IllegalStateException("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of bytes from a run-length encoded string.
+     */
+    static public 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 IllegalStateException("Bad run-length encoded byte array");
+
+        if (i != s.length())
+            throw new IllegalStateException("Excess data in RLE byte array string");
+
+        return array;
+    }
+
+    static public String LINE_SEPARATOR = System.getProperty("line.separator");
+
+    /**
+     * Format a String for representation in a source file.  This includes
+     * breaking it into lines and escaping characters using octal notation
+     * when necessary (control characters and double quotes).
+     */
+    static public final String formatForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        for (int i=0; i<s.length();) {
+            if (i > 0) buffer.append('+').append(LINE_SEPARATOR);
+            buffer.append("        \"");
+            int count = 11;
+            while (i<s.length() && count<80) {
+                char c = s.charAt(i++);
+                if (c < '\u0020' || c == '"' || c == '\\') {
+                    if (c == '\n') {
+                        buffer.append("\\n");
+                        count += 2;
+                    } else if (c == '\t') {
+                        buffer.append("\\t");
+                        count += 2;
+                    } else if (c == '\r') {
+                        buffer.append("\\r");
+                        count += 2;
+                    } else {
+                        // Represent control characters, backslash and double quote
+                        // 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)]);
+                        count += 4;
+                    }
+                }
+                else if (c <= '\u007E') {
+                    buffer.append(c);
+                    count += 1;
+                }
+                else {
+                    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)]);
+                    count += 6;
+                }
+            }
+            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'};
+
+    /**
+     * Format a String for representation in a source file.  Like
+     * formatForSource but does not do line breaking.
+     */
+    static public final String format1ForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("\"");
+        for (int i=0; i<s.length();) {
+            char c = s.charAt(i++);
+            if (c < '\u0020' || c == '"' || c == '\\') {
+                if (c == '\n') {
+                    buffer.append("\\n");
+                } else if (c == '\t') {
+                    buffer.append("\\t");
+                } else if (c == '\r') {
+                    buffer.append("\\r");
+                } else {
+                    // Represent control characters, backslash and double quote
+                    // 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 if (c <= '\u007E') {
+                buffer.append(c);
+            }
+            else {
+                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();
+    }
+
+    /**
+     * Convert characters outside the range U+0020 to U+007F to
+     * Unicode escapes, and convert backslash to a double backslash.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ) {
+            int c = UTF16.charAt(s, i);
+            i += UTF16.getCharCount(c);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append((char)c);
+                }
+            } else {
+                boolean four = c <= 0xFFFF;
+                buf.append(four ? "\\u" : "\\U");
+                hex(c, four ? 4 : 8, buf);
+            }
+        }
+        return buf.toString();
+    }
+
+    /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+    static private final char[] UNESCAPE_MAP = {
+        /*"   0x22, 0x22 */
+        /*'   0x27, 0x27 */
+        /*?   0x3F, 0x3F */
+        /*\   0x5C, 0x5C */
+        /*a*/ 0x61, 0x07,
+        /*b*/ 0x62, 0x08,
+        /*e*/ 0x65, 0x1b,
+        /*f*/ 0x66, 0x0c,
+        /*n*/ 0x6E, 0x0a,
+        /*r*/ 0x72, 0x0d,
+        /*t*/ 0x74, 0x09,
+        /*v*/ 0x76, 0x0b
+    };
+
+    /**
+     * Convert an escape to a 32-bit code point value.  We attempt
+     * to parallel the icu4c unescapeAt() function.
+     * @param offset16 an array containing offset to the character
+     * <em>after</em> the backslash.  Upon return offset16[0] will
+     * be updated to point after the escape sequence.
+     * @return character value from 0 to 10FFFF, or -1 on error.
+     */
+    public static int unescapeAt(String s, int[] offset16) {
+        int c;
+        int result = 0;
+        int n = 0;
+        int minDig = 0;
+        int maxDig = 0;
+        int bitsPerDigit = 4;
+        int dig;
+        int i;
+        boolean braces = false;
+
+        /* Check that offset is in range */
+        int offset = offset16[0];
+        int length = s.length();
+        if (offset < 0 || offset >= length) {
+            return -1;
+        }
+
+        /* Fetch first UChar after '\\' */
+        c = UTF16.charAt(s, offset);
+        offset += UTF16.getCharCount(c);
+
+        /* Convert hexadecimal and octal escapes */
+        switch (c) {
+        case 'u':
+            minDig = maxDig = 4;
+            break;
+        case 'U':
+            minDig = maxDig = 8;
+            break;
+        case 'x':
+            minDig = 1;
+            if (offset < length && UTF16.charAt(s, offset) == 0x7B /*{*/) {
+                ++offset;
+                braces = true;
+                maxDig = 8;
+            } else {
+                maxDig = 2;
+            }
+            break;
+        default:
+            dig = UCharacter.digit(c, 8);
+            if (dig >= 0) {
+                minDig = 1;
+                maxDig = 3;
+                n = 1; /* Already have first octal digit */
+                bitsPerDigit = 3;
+                result = dig;
+            }
+            break;
+        }
+        if (minDig != 0) {
+            while (offset < length && n < maxDig) {
+                c = UTF16.charAt(s, offset);
+                dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+                if (dig < 0) {
+                    break;
+                }
+                result = (result << bitsPerDigit) | dig;
+                offset += UTF16.getCharCount(c);
+                ++n;
+            }
+            if (n < minDig) {
+                return -1;
+            }
+            if (braces) {
+                if (c != 0x7D /*}*/) {
+                    return -1;
+                }
+                ++offset;
+            }
+            if (result < 0 || result >= 0x110000) {
+                return -1;
+            }
+            // If an escape sequence specifies a lead surrogate, see
+            // if there is a trail surrogate after it, either as an
+            // escape or as a literal.  If so, join them up into a
+            // supplementary.
+            if (offset < length &&
+                UTF16.isLeadSurrogate((char) result)) {
+                int ahead = offset+1;
+                c = s.charAt(offset); // [sic] get 16-bit code unit
+                if (c == '\\' && ahead < length) {
+                    int o[] = new int[] { ahead };
+                    c = unescapeAt(s, o);
+                    ahead = o[0];
+                }
+                if (UTF16.isTrailSurrogate((char) c)) {
+                    offset = ahead;
+                result = UCharacterProperty.getRawSupplementary(
+                                  (char) result, (char) c);
+                }
+            }
+            offset16[0] = offset;
+            return result;
+        }
+
+        /* Convert C-style escapes in table */
+        for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+            if (c == UNESCAPE_MAP[i]) {
+                offset16[0] = offset;
+                return UNESCAPE_MAP[i+1];
+            } else if (c < UNESCAPE_MAP[i]) {
+                break;
+            }
+        }
+
+        /* Map \cX to control-X: X & 0x1F */
+        if (c == 'c' && offset < length) {
+            c = UTF16.charAt(s, offset);
+            offset16[0] = offset + UTF16.getCharCount(c);
+            return 0x1F & c;
+        }
+
+        /* If no special forms are recognized, then consider
+         * the backslash to generically escape the next character. */
+        offset16[0] = offset;
+        return c;
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * @exception IllegalArgumentException if an invalid escape is
+     * seen.
+     */
+    public static String unescape(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    throw new IllegalArgumentException("Invalid escape sequence " +
+                                                       s.substring(i-1, Math.min(i+8, s.length())));
+                }
+                UTF16.append(buf, e);
+                i = pos[0];
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * Leave invalid escape sequences unchanged.
+     */
+    public static String unescapeLeniently(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    buf.append(c);
+                } else {
+                    UTF16.append(buf, e);
+                    i = pos[0];
+                }
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".
+     */
+    public static String hex(char ch) {
+        StringBuffer temp = new StringBuffer();
+        return hex(ch, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(String s) {
+        StringBuffer temp = new StringBuffer();
+        return hex(s, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".  Append the output to the given StringBuffer.
+     */
+    public static StringBuffer hex(char ch, StringBuffer output) {
+        return appendNumber(output, ch, 16, 4);
+    }
+
+    /**
+     * Convert a integer to size width hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".
+     * Append the output to the given StringBuffer.
+     * If width is too small to fit, nothing will be appended to output.
+     */
+    public static StringBuffer hex(int ch, int width, StringBuffer output) {
+        return appendNumber(output, ch, 16, width);
+    }
+
+    /**
+     * Convert a integer to size width (minimum) hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".  If the integer requires more
+     * than width digits, more will be used.
+     */
+    public static String hex(int ch, int width) {
+        StringBuffer buf = new StringBuffer();
+        return appendNumber(buf, ch, 16, width).toString();
+    }
+    /**
+     * Supplies a zero-padded hex representation of an integer (without 0x)
+     */
+    static public String hex(long i, int places) {
+        if (i == Long.MIN_VALUE) return "-8000000000000000";
+        boolean negative = i < 0;
+        if (negative) {
+            i = -i;
+        }
+        String result = Long.toString(i, 16).toUpperCase();
+        if (result.length() < places) {
+            result = "0000000000000000".substring(result.length(),places) + result;
+        }
+        if (negative) {
+            return '-' + result;
+        }
+        return result;
+    }
+    
+    public static String hex(long ch) {
+        return hex(ch,4);
+    }
+    
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".  Append the output
+     * to the given StringBuffer.
+     */
+    public static StringBuffer hex(String s, StringBuffer result) {
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            hex(s.charAt(i), result);
+        }
+        return result;
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     * @param s the string to split
+     * @param divider the character on which to split.  Occurrences of
+     * this character are not included in the output
+     * @param output an array to receive the substrings between
+     * instances of divider.  It must be large enough on entry to
+     * accomodate all output.  Adjacent instances of the divider
+     * character will place empty strings into output.  Before
+     * returning, output is padded out with empty strings.
+     */
+    public static void split(String s, char divider, String[] output) {
+        int last = 0;
+        int current = 0;
+        int i;
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output[current++] = s.substring(last,i);
+                last = i+1;
+            }
+        }
+        output[current++] = s.substring(last,i);
+        while (current < output.length) {
+            output[current++] = "";
+        }
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     * @param s the string to split
+     * @param divider the character on which to split.  Occurrences of
+     * this character are not included in the output
+     * @return output an array to receive the substrings between
+     * instances of divider. Adjacent instances of the divider
+     * character will place empty strings into output.
+     */
+    public static String[] split(String s, char divider) {
+        int last = 0;
+        int i;
+        ArrayList output = new ArrayList();
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output.add(s.substring(last,i));
+                last = i+1;
+            }
+        }
+        output.add( s.substring(last,i));
+        return (String[]) output.toArray(new String[output.size()]);
+    }
+    
+    /**
+     * Look up a given string in a string array.  Returns the index at
+     * which the first occurrence of the string was found in the
+     * array, or -1 if it was not found.
+     * @param source the string to search for
+     * @param target the array of zero or more strings in which to
+     * look for source
+     * @return the index of target at which source first occurs, or -1
+     * if not found
+     */
+    public static int lookup(String source, String[] target) {
+        for (int i = 0; i < target.length; ++i) {
+            if (source.equals(target[i])) return i;
+        }
+        return -1;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos.  Return the index of the first non-white-space character
+     * at or after pos, or str.length(), if there is none.
+     */
+    public static int skipWhitespace(String str, int pos) {
+        while (pos < str.length()) {
+            int c = UTF16.charAt(str, pos);
+            if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos[0], advancing it.
+     */
+    public static void skipWhitespace(String str, int[] pos) {
+        pos[0] = skipWhitespace(str, pos[0]);
+    }
+
+    /**
+     * Remove all rule white space from a string.
+     */
+    public static String deleteRuleWhiteSpace(String str) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<str.length(); ) {
+            int ch = UTF16.charAt(str, i);
+            i += UTF16.getCharCount(ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                continue;
+            }
+            UTF16.append(buf, ch);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Parse a single non-whitespace character 'ch', optionally
+     * preceded by whitespace.
+     * @param id the string to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to be parsed.  On output, pos[0]
+     * is the index after the last parsed character.  If the parse
+     * fails, pos[0] will be unchanged.
+     * @param ch the non-whitespace character to be parsed.
+     * @return true if 'ch' is seen preceded by zero or more
+     * whitespace characters.
+     */
+    public static boolean parseChar(String id, int[] pos, char ch) {
+        int start = pos[0];
+        skipWhitespace(id, pos);
+        if (pos[0] == id.length() ||
+            id.charAt(pos[0]) != ch) {
+            pos[0] = start;
+            return false;
+        }
+        ++pos[0];
+        return true;
+    }
+
+    /**
+     * Parse a pattern string starting at offset pos.  Keywords are
+     * matched case-insensitively.  Spaces may be skipped and may be
+     * optional or required.  Integer values may be parsed, and if
+     * they are, they will be returned in the given array.  If
+     * successful, the offset of the next non-space character is
+     * returned.  On failure, -1 is returned.
+     * @param pattern must only contain lowercase characters, which
+     * will match their uppercase equivalents as well.  A space
+     * character matches one or more required spaces.  A '~' character
+     * matches zero or more optional spaces.  A '#' character matches
+     * an integer and stores it in parsedInts, which the caller must
+     * ensure has enough capacity.
+     * @param parsedInts array to receive parsed integers.  Caller
+     * must ensure that parsedInts.length is >= the number of '#'
+     * signs in 'pattern'.
+     * @return the position after the last character parsed, or -1 if
+     * the parse failed
+     */
+    public static int parsePattern(String rule, int pos, int limit,
+                                   String pattern, int[] parsedInts) {
+        // TODO Update this to handle surrogates
+        int[] p = new int[1];
+        int intCount = 0; // number of integers parsed
+        for (int i=0; i<pattern.length(); ++i) {
+            char cpat = pattern.charAt(i);
+            char c;
+            switch (cpat) {
+            case ' ':
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = rule.charAt(pos++);
+                if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                    return -1;
+                }
+                // FALL THROUGH to skipWhitespace
+            case '~':
+                pos = skipWhitespace(rule, pos);
+                break;
+            case '#':
+                p[0] = pos;
+                parsedInts[intCount++] = parseInteger(rule, p, limit);
+                if (p[0] == pos) {
+                    // Syntax error; failed to parse integer
+                    return -1;
+                }
+                pos = p[0];
+                break;
+            default:
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = (char) UCharacter.toLowerCase(rule.charAt(pos++));
+                if (c != cpat) {
+                    return -1;
+                }
+                break;
+            }
+        }
+        return pos;
+    }
+
+    /**
+     * Parse a pattern string within the given Replaceable and a parsing
+     * pattern.  Characters are matched literally and case-sensitively
+     * except for the following special characters:
+     *
+     * ~  zero or more uprv_isRuleWhiteSpace chars
+     *
+     * If end of pattern is reached with all matches along the way,
+     * pos is advanced to the first unparsed index and returned.
+     * Otherwise -1 is returned.
+     * @param pat pattern that controls parsing
+     * @param text text to be parsed, starting at index
+     * @param index offset to first character to parse
+     * @param limit offset after last character to parse
+     * @return index after last parsed character, or -1 on parse failure.
+     */
+    public static int parsePattern(String pat,
+                                   Replaceable text,
+                                   int index,
+                                   int limit) {
+        int ipat = 0;
+
+        // empty pattern matches immediately
+        if (ipat == pat.length()) {
+            return index;
+        }
+
+        int cpat = UTF16.charAt(pat, ipat);
+
+        while (index < limit) {
+            int c = text.char32At(index);
+
+            // parse \s*
+            if (cpat == '~') {
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    index += UTF16.getCharCount(c);
+                    continue;
+                } else {
+                    if (++ipat == pat.length()) {
+                        return index; // success; c unparsed
+                    }
+                    // fall thru; process c again with next cpat
+                }
+            }
+
+            // parse literal
+            else if (c == cpat) {
+                int n = UTF16.getCharCount(c);
+                index += n;
+                ipat += n;
+                if (ipat == pat.length()) {
+                    return index; // success; c parsed
+                }
+                // fall thru; get next cpat
+            }
+
+            // match failure of literal
+            else {
+                return -1;
+            }
+
+            cpat = UTF16.charAt(pat, ipat);
+        }
+
+        return -1; // text ended before end of pat
+    }
+
+    /**
+     * Parse an integer at pos, either of the form \d+ or of the form
+     * 0x[0-9A-Fa-f]+ or 0[0-7]+, that is, in standard decimal, hex,
+     * or octal format.
+     * @param pos INPUT-OUTPUT parameter.  On input, the first
+     * character to parse.  On output, the character after the last
+     * parsed character.
+     */
+    public static int parseInteger(String rule, int[] pos, int limit) {
+        int count = 0;
+        int value = 0;
+        int p = pos[0];
+        int radix = 10;
+
+        if (rule.regionMatches(true, p, "0x", 0, 2)) {
+            p += 2;
+            radix = 16;
+        } else if (p < limit && rule.charAt(p) == '0') {
+            p++;
+            count = 1;
+            radix = 8;
+        }
+
+        while (p < limit) {
+            int d = UCharacter.digit(rule.charAt(p++), radix);
+            if (d < 0) {
+                --p;
+                break;
+            }
+            ++count;
+            int v = (value * radix) + d;
+            if (v <= value) {
+                // If there are too many input digits, at some point
+                // the value will go negative, e.g., if we have seen
+                // "0x8000000" already and there is another '0', when
+                // we parse the next 0 the value will go negative.
+                return 0;
+            }
+            value = v;
+        }
+        if (count > 0) {
+            pos[0] = p;
+        }
+        return value;
+    }
+
+    /**
+     * Parse a Unicode identifier from the given string at the given
+     * position.  Return the identifier, or null if there is no
+     * identifier.
+     * @param str the string to parse
+     * @param pos INPUT-OUPUT parameter.  On INPUT, pos[0] is the
+     * first character to examine.  It must be less than str.length(),
+     * and it must not point to a whitespace character.  That is, must
+     * have pos[0] < str.length() and
+     * !UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])).  On
+     * OUTPUT, the position after the last parsed character.
+     * @return the Unicode identifier, or null if there is no valid
+     * identifier at pos[0].
+     */
+    public static String parseUnicodeIdentifier(String str, int[] pos) {
+        // assert(pos[0] < str.length());
+        // assert(!UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])));
+        StringBuffer buf = new StringBuffer();
+        int p = pos[0];
+        while (p < str.length()) {
+            int ch = UTF16.charAt(str, p);
+            if (buf.length() == 0) {
+                if (UCharacter.isUnicodeIdentifierStart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    return null;
+                }
+            } else {
+                if (UCharacter.isUnicodeIdentifierPart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    break;
+                }
+            }
+            p += UTF16.getCharCount(ch);
+        }
+        pos[0] = p;
+        return buf.toString();
+    }
+
+    /**
+     * Trim whitespace from ends of a StringBuffer.
+     */
+    public static StringBuffer trim(StringBuffer b) {
+        // TODO update to handle surrogates
+        int i;
+        for (i=0; i<b.length() && UCharacter.isWhitespace(b.charAt(i)); ++i) {}
+        b.delete(0, i);
+        for (i=b.length()-1; i>=0 && UCharacter.isWhitespace(b.charAt(i)); --i) {}
+        return b.delete(i+1, b.length());
+    }
+
+    static final char DIGITS[] = {
+        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+        'U', 'V', 'W', 'X', 'Y', 'Z'
+    };
+
+    /**
+     * Append a number to the given StringBuffer in the radix 10
+     * generating at least one digit.
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n) {
+        return appendNumber(result, n, 10, 1);
+    }
+
+    /**
+     * Append the digits of a positive integer to the given
+     * <code>StringBuffer</code> in the given radix. This is
+     * done recursively since it is easiest to generate the low-
+     * order digit first, but it must be appended last.
+     *
+     * @param result is the <code>StringBuffer</code> to append to
+     * @param n is the positive integer
+     * @param radix is the radix, from 2 to 36 inclusive
+     * @param minDigits is the minimum number of digits to append.
+     */
+    private static void recursiveAppendNumber(StringBuffer result, int n,
+                                                int radix, int minDigits)
+    {
+        int digit = n % radix;
+
+        if (n >= radix || minDigits > 1) {
+            recursiveAppendNumber(result, n / radix, radix, minDigits - 1);
+        }
+
+        result.append(DIGITS[digit]);
+    }
+
+    /**
+     * Append a number to the given StringBuffer in the given radix.
+     * Standard digits '0'-'9' are used and letters 'A'-'Z' for
+     * radices 11 through 36.
+     * @param result the digits of the number are appended here
+     * @param n the number to be converted to digits; may be negative.
+     * If negative, a '-' is prepended to the digits.
+     * @param radix a radix from 2 to 36 inclusive.
+     * @param minDigits the minimum number of digits, not including
+     * any '-', to produce.  Values less than 2 have no effect.  One
+     * digit is always emitted regardless of this parameter.
+     * @return a reference to result
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n,
+                                             int radix, int minDigits)
+        throws IllegalArgumentException
+    {
+        if (radix < 2 || radix > 36) {
+            throw new IllegalArgumentException("Illegal radix " + radix);
+        }
+
+
+        int abs = n;
+
+        if (n < 0) {
+            abs = -n;
+            result.append("-");
+        }
+
+        recursiveAppendNumber(result, abs, radix, minDigits);
+
+        return result;
+    }
+
+    /**
+     * Parse an unsigned 31-bit integer at the given offset.  Use
+     * UCharacter.digit() to parse individual characters into digits.
+     * @param text the text to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On entry, pos[0] is the
+     * offset within text at which to start parsing; it should point
+     * to a valid digit.  On exit, pos[0] is the offset after the last
+     * parsed character.  If the parse failed, it will be unchanged on
+     * exit.  Must be >= 0 on entry.
+     * @param radix the radix in which to parse; must be >= 2 and <=
+     * 36.
+     * @return a non-negative parsed number, or -1 upon parse failure.
+     * Parse fails if there are no digits, that is, if pos[0] does not
+     * point to a valid digit on entry, or if the number to be parsed
+     * does not fit into a 31-bit unsigned integer.
+     */
+    public static int parseNumber(String text, int[] pos, int radix) {
+        // assert(pos[0] >= 0);
+        // assert(radix >= 2);
+        // assert(radix <= 36);
+        int n = 0;
+        int p = pos[0];
+        while (p < text.length()) {
+            int ch = UTF16.charAt(text, p);
+            int d = UCharacter.digit(ch, radix);
+            if (d < 0) {
+                break;
+            }
+            n = radix*n + d;
+            // ASSUME that when a 32-bit integer overflows it becomes
+            // negative.  E.g., 214748364 * 10 + 8 => negative value.
+            if (n < 0) {
+                return -1;
+            }
+            ++p;
+        }
+        if (p == pos[0]) {
+            return -1;
+        }
+        pos[0] = p;
+        return n;
+    }
+
+    /**
+     * Return true if the character is NOT printable ASCII.  The tab,
+     * newline and linefeed characters are considered unprintable.
+     */
+    public static boolean isUnprintable(int c) {
+        return !(c >= 0x20 && c <= 0x7E);
+    }
+
+    /**
+     * Escape unprintable characters using <backslash>uxxxx notation
+     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * above.  If the character is printable ASCII, then do nothing
+     * and return FALSE.  Otherwise, append the escaped notation and
+     * return TRUE.
+     */
+    public static boolean escapeUnprintable(StringBuffer result, int c) {
+        if (isUnprintable(c)) {
+            result.append('\\');
+            if ((c & ~0xFFFF) != 0) {
+                result.append('U');
+                result.append(DIGITS[0xF&(c>>28)]);
+                result.append(DIGITS[0xF&(c>>24)]);
+                result.append(DIGITS[0xF&(c>>20)]);
+                result.append(DIGITS[0xF&(c>>16)]);
+            } else {
+                result.append('u');
+            }
+            result.append(DIGITS[0xF&(c>>12)]);
+            result.append(DIGITS[0xF&(c>>8)]);
+            result.append(DIGITS[0xF&(c>>4)]);
+            result.append(DIGITS[0xF&c]);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns the index of the first character in a set, ignoring quoted text.
+     * For example, in the string "abc'hide'h", the 'h' in "hide" will not be
+     * found by a search for "h".  Unlike String.indexOf(), this method searches
+     * not for a single character, but for any character of the string
+     * <code>setOfChars</code>.
+     * @param text text to be searched
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param setOfChars string with one or more distinct characters
+     * @return Offset of the first character in <code>setOfChars</code>
+     * found, or -1 if not found.
+     * @see String#indexOf
+     */
+    public static int quotedIndexOf(String text, int start, int limit,
+                                    String setOfChars) {
+        for (int i=start; i<limit; ++i) {
+            char c = text.charAt(i);
+            if (c == BACKSLASH) {
+                ++i;
+            } else if (c == APOSTROPHE) {
+                while (++i < limit
+                       && text.charAt(i) != APOSTROPHE) {}
+            } else if (setOfChars.indexOf(c) >= 0) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+    * Similar to StringBuffer.getChars, version 1.3.
+    * Since JDK 1.2 implements StringBuffer.getChars differently, this method
+    * is here to provide consistent results.
+    * To be removed after JDK 1.2 ceased to be the reference platform.
+    * @param src source string buffer
+    * @param srcBegin offset to the start of the src to retrieve from
+    * @param srcEnd offset to the end of the src to retrieve from
+    * @param dst char array to store the retrieved chars
+    * @param dstBegin offset to the start of the destination char array to
+    *                 store the retrieved chars
+    */
+    public static void getChars(StringBuffer src, int srcBegin, int srcEnd,
+                                char dst[], int dstBegin)
+    {
+        if (srcBegin == srcEnd) {
+            return;
+        }
+        src.getChars(srcBegin, srcEnd, dst, dstBegin);
+    }
+
+    /**
+     * Append a character to a rule that is being built up.  To flush
+     * the quoteBuf to rule, make one final call with isLiteral == true.
+     * If there is no final character, pass in (int)-1 as c.
+     * @param rule the string to append the character to
+     * @param c the character to append, or (int)-1 if none.
+     * @param isLiteral if true, then the given character should not be
+     * quoted or escaped.  Usually this means it is a syntactic element
+     * such as > or $
+     * @param escapeUnprintable if true, then unprintable characters
+     * should be escaped using escapeUnprintable().  These escapes will
+     * appear outside of quotes.
+     * @param quoteBuf a buffer which is used to build up quoted
+     * substrings.  The caller should initially supply an empty buffer,
+     * and thereafter should not modify the buffer.  The buffer should be
+     * cleared out by, at the end, calling this method with a literal
+     * character (which may be -1).
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    int c,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        // If we are escaping unprintables, then escape them outside
+        // quotes.  \\u and \\U are not recognized within quotes.  The same
+        // logic applies to literals, but literals are never escaped.
+        if (isLiteral ||
+            (escapeUnprintable && Utility.isUnprintable(c))) {
+            if (quoteBuf.length() > 0) {
+                // We prefer backslash APOSTROPHE to double APOSTROPHE
+                // (more readable, less similar to ") so if there are
+                // double APOSTROPHEs at the ends, we pull them outside
+                // of the quote.
+
+                // If the first thing in the quoteBuf is APOSTROPHE
+                // (doubled) then pull it out.
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(0) == APOSTROPHE &&
+                       quoteBuf.charAt(1) == APOSTROPHE) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                    quoteBuf.delete(0, 2);
+                }
+                // If the last thing in the quoteBuf is APOSTROPHE
+                // (doubled) then remove and count it and add it after.
+                int trailingCount = 0;
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(quoteBuf.length()-2) == APOSTROPHE &&
+                       quoteBuf.charAt(quoteBuf.length()-1) == APOSTROPHE) {
+                    quoteBuf.setLength(quoteBuf.length()-2);
+                    ++trailingCount;
+                }
+                if (quoteBuf.length() > 0) {
+                    rule.append(APOSTROPHE);
+                    // jdk 1.3.1 does not have append(StringBuffer) yet
+                    if(ICUDebug.isJDK14OrHigher){
+                        rule.append(quoteBuf);
+                    }else{
+                        rule.append(quoteBuf.toString());
+                    }
+                    rule.append(APOSTROPHE);
+                    quoteBuf.setLength(0);
+                }
+                while (trailingCount-- > 0) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                }
+            }
+            if (c != -1) {
+                /* Since spaces are ignored during parsing, they are
+                 * emitted only for readability.  We emit one here
+                 * only if there isn't already one at the end of the
+                 * rule.
+                 */
+                if (c == ' ') {
+                    int len = rule.length();
+                    if (len > 0 && rule.charAt(len-1) != ' ') {
+                        rule.append(' ');
+                    }
+                } else if (!escapeUnprintable || !Utility.escapeUnprintable(rule, c)) {
+                    UTF16.append(rule, c);
+                }
+            }
+        }
+
+        // Escape ' and '\' and don't begin a quote just for them
+        else if (quoteBuf.length() == 0 &&
+                 (c == APOSTROPHE || c == BACKSLASH)) {
+            rule.append(BACKSLASH).append((char)c);
+        }
+
+        // Specials (printable ascii that isn't [0-9a-zA-Z]) and
+        // whitespace need quoting.  Also append stuff to quotes if we are
+        // building up a quoted substring already.
+        else if (quoteBuf.length() > 0 ||
+                 (c >= 0x0021 && c <= 0x007E &&
+                  !((c >= 0x0030/*'0'*/ && c <= 0x0039/*'9'*/) ||
+                    (c >= 0x0041/*'A'*/ && c <= 0x005A/*'Z'*/) ||
+                    (c >= 0x0061/*'a'*/ && c <= 0x007A/*'z'*/))) ||
+                 UCharacterProperty.isRuleWhiteSpace(c)) {
+            UTF16.append(quoteBuf, c);
+            // Double ' within a quote
+            if (c == APOSTROPHE) {
+                quoteBuf.append((char)c);
+            }
+        }
+
+        // Otherwise just append
+        else {
+            UTF16.append(rule, c);
+        }
+    }
+
+    /**
+     * Append the given string to the rule.  Calls the single-character
+     * version of appendToRule for each character.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    String text,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        for (int i=0; i<text.length(); ++i) {
+            // Okay to process in 16-bit code units here
+            appendToRule(rule, text.charAt(i), isLiteral, escapeUnprintable, quoteBuf);
+        }
+    }
+
+    /**
+     * Given a matcher reference, which may be null, append its
+     * pattern as a literal to the given rule.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    UnicodeMatcher matcher,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        if (matcher != null) {
+            appendToRule(rule, matcher.toPattern(escapeUnprintable),
+                         true, escapeUnprintable, quoteBuf);
+        }
+    }
+
+    /**
+     * Compares 2 unsigned integers
+     * @param source 32 bit unsigned integer
+     * @param target 32 bit unsigned integer
+     * @return 0 if equals, 1 if source is greater than target and -1
+     *         otherwise
+     */
+    public static final int compareUnsigned(int source, int target)
+    {
+        source += MAGIC_UNSIGNED;
+        target += MAGIC_UNSIGNED;
+        if (source < target) {
+            return -1;
+        } 
+        else if (source > target) {
+            return 1;
+        }
+        return 0;
+    }
+
+    /**
+     * Find the highest bit in a positive integer. This is done
+     * by doing a binary search through the bits.
+     *
+     * @param n is the integer
+     *
+     * @return the bit number of the highest bit, with 0 being
+     * the low order bit, or -1 if <code>n</code> is not positive
+     */
+    public static final byte highBit(int n)
+    {
+        if (n <= 0) {
+            return -1;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+    /**
+     * Utility method to take a int[] containing codepoints and return
+     * a string representation with code units. 
+     */
+    public static String valueOf(int[]source){
+    // TODO: Investigate why this method is not on UTF16 class
+        StringBuffer result = new StringBuffer(source.length);
+        for(int i=0; i<source.length; i++){
+            UTF16.append(result,source[i]);
+        }
+        return result.toString();
+    }
+    
+    
+    /**
+     * Utility to duplicate a string count times
+     * @param s
+     * @param count
+     */
+    public static String repeat(String s, int count) {
+        if (count <= 0) return "";
+        if (count == 1) return s;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < count; ++i) {
+            result.append(s);
+        }
+        return result.toString();
+    }
+
+    
+    // !!! 1.3 compatibility
+    public static int indexOf(StringBuffer buf, String s) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().indexOf(s);
+//#else
+        return buf.indexOf(s);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+    public static int lastIndexOf(StringBuffer buf, String s) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().lastIndexOf(s);
+//#else
+        return buf.lastIndexOf(s);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+    public static int indexOf(StringBuffer buf, String s, int i) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().indexOf(s, i);
+//#else
+        return buf.indexOf(s, i);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+   public static int lastIndexOf(StringBuffer buf, String s, int i) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().lastIndexOf(s, i);
+//#else
+        return buf.lastIndexOf(s, i);
+//#endif
+    }
+   
+   // !!! 1.3 compatibility
+   public static String replaceAll(String src, String target, String replacement) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##       int i = src.indexOf(target);
+//##       if (i == -1) {
+//##           return src;
+//##       }
+//##       StringBuffer buf = new StringBuffer();
+//##       int n = 0;
+//##       do {
+//##           buf.append(src.substring(n, i));
+//##           buf.append(replacement);
+//##           n = i + target.length();
+//##           i = src.indexOf(target, n);
+//##       } while (i != -1);
+//##       if (n < src.length()) {
+//##           buf.append(src.substring(n));
+//##       }
+//##       return buf.toString();
+//#else
+       return src.replaceAll(target, replacement);
+//#endif
+   }
+
+   //private static final String REGEX_SPECIALS = ".^$[]*+?|()";
+
+   // !!! 1.3 compatibility
+   // Note: target is not a string literal, not a regular expression.
+   public static String[] splitString(String src, String target) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##       int i = src.indexOf(target);
+//##       if (i == -1) {
+//##           return new String[] { src };
+//##       }
+//##       ArrayList output = new ArrayList();
+//##       int n = 0;
+//##       do {
+//##           output.add(src.substring(n, i));
+//##           n = i + target.length();
+//##           i = src.indexOf(target, n);
+//##       } while (i != -1);
+//##       if (n < src.length()) {
+//##           output.add(src.substring(n));
+//##       }
+//##       return (String[]) output.toArray(new String[output.size()]);
+//#else
+       return src.split("\\Q" + target + "\\E");
+//#endif
+   }
+
+   // !!! 1.3 compatibility
+  /**
+   * Split the string at runs of ascii whitespace characters.
+   */
+   public static String[] splitWhitespace(String src) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        char ws[] = "\u0020\u0009\n\u000b\u000c\r".toCharArray();
+//##        ArrayList output = new ArrayList();
+//##        boolean inWhitespace = true;
+//##        int n = 0;
+//##  loop:
+//##        for (int i = 0; i < src.length(); ++i) {
+//##          char c = src.charAt(i);
+//##          for (int j = 0; j < ws.length; ++j) {
+//##            if (ws[j] == c) {
+//##              if (!inWhitespace) {
+//##                output.add(src.substring(n, i));
+//##                inWhitespace = true;
+//##              }
+//##              continue loop;
+//##            }
+//##          }
+//##          if (inWhitespace) {
+//##            n = i;
+//##            inWhitespace = false;
+//##          }
+//##        }
+//##        if (n < src.length()) {
+//##          output.add(src.substring(n));
+//##        }
+//##        return (String[]) output.toArray(new String[output.size()]);
+//#else
+       return src.split("\\s+");
+//#endif
+   }
+
+   // !!! 1.3/1.4 compatibility
+   // Integer constants - Integer.valueOf(int) is not supported in JDK 1.3/1.4
+   private static final int MAX_INT_CONST = 64;
+   private static final Integer[] INT_CONST = new Integer[MAX_INT_CONST];
+
+   static {
+       for (int i = 0; i < MAX_INT_CONST; i++) {
+           INT_CONST[i] = new Integer(i);
+       }
+   }
+
+   public static Integer integerValueOf(int val) {
+       if (0 <= val && val < MAX_INT_CONST) {
+           return INT_CONST[val];
+       }
+       return new Integer(val);
+   }
+}
diff --git a/src/com/ibm/icu/impl/UtilityExtensions.java b/src/com/ibm/icu/impl/UtilityExtensions.java
new file mode 100644
index 0000000..40080d7
--- /dev/null
+++ b/src/com/ibm/icu/impl/UtilityExtensions.java
@@ -0,0 +1,113 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.Transliterator;
+/**
+ * @author Ram
+ */
+//This class contains utility functions so testing not needed
+///CLOVER:OFF
+public class UtilityExtensions {
+    /**
+     * Append the given string to the rule.  Calls the single-character
+     * version of appendToRule for each character.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    String text,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        for (int i=0; i<text.length(); ++i) {
+            // Okay to process in 16-bit code units here
+            Utility.appendToRule(rule, text.charAt(i), isLiteral, escapeUnprintable, quoteBuf);
+        }
+    }
+
+
+    /**
+     * Given a matcher reference, which may be null, append its
+     * pattern as a literal to the given rule.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    UnicodeMatcher matcher,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        if (matcher != null) {
+            appendToRule(rule, matcher.toPattern(escapeUnprintable),
+                         true, escapeUnprintable, quoteBuf);
+        }
+    }
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static String formatInput(ReplaceableString input,
+                                     Transliterator.Position pos) {
+        StringBuffer appendTo = new StringBuffer();
+        formatInput(appendTo, input, pos);
+        return com.ibm.icu.impl.Utility.escape(appendTo.toString());
+    }
+
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           ReplaceableString input,
+                                           Transliterator.Position pos) {
+        if (0 <= pos.contextStart &&
+            pos.contextStart <= pos.start &&
+            pos.start <= pos.limit &&
+            pos.limit <= pos.contextLimit &&
+            pos.contextLimit <= input.length()) {
+
+            String  b, c, d;
+            //a = input.substring(0, pos.contextStart);
+            b = input.substring(pos.contextStart, pos.start);
+            c = input.substring(pos.start, pos.limit);
+            d = input.substring(pos.limit, pos.contextLimit);
+            //e = input.substring(pos.contextLimit, input.length());
+            appendTo.//append(a).
+                append('{').append(b).
+                append('|').append(c).append('|').append(d).
+                append('}')
+                //.append(e)
+                ;
+        } else {
+            appendTo.append("INVALID Position {cs=" +
+                            pos.contextStart + ", s=" + pos.start + ", l=" +
+                            pos.limit + ", cl=" + pos.contextLimit + "} on " +
+                            input);
+        }
+        return appendTo;
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static String formatInput(Replaceable input,
+                                     Transliterator.Position pos) {
+        return formatInput((ReplaceableString) input, pos);
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           Replaceable input,
+                                           Transliterator.Position pos) {
+        return formatInput(appendTo, (ReplaceableString) input, pos);
+    }
+
+}
+//CLOVER:ON
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/ZoneMeta.java b/src/com/ibm/icu/impl/ZoneMeta.java
new file mode 100644
index 0000000..32afbf9
--- /dev/null
+++ b/src/com/ibm/icu/impl/ZoneMeta.java
@@ -0,0 +1,1097 @@
+/*
+**********************************************************************
+* Copyright (c) 2003-2008 International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: September 4 2003
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.text.ParsePosition;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.Vector;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+/**
+ * This class, not to be instantiated, implements the meta-data
+ * missing from the underlying core JDK implementation of time zones.
+ * There are two missing features: Obtaining a list of available zones
+ * for a given country (as defined by the Olson database), and
+ * obtaining a list of equivalent zones for a given zone (as defined
+ * by Olson links).
+ *
+ * This class uses a data class, ZoneMetaData, which is created by the
+ * tool tz2icu.
+ *
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public final class ZoneMeta {
+    private static final boolean ASSERT = false;
+
+    /**
+     * Returns a String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>TimeZone.getTimeZone()</code> to construct the
+     * corresponding TimeZone object.
+     * @param country a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones in the given
+     * country.  If there are none, return a zero-length array.
+     */
+    public static synchronized String[] getAvailableIDs(String country) {
+        if(!getOlsonMeta()){
+            return EMPTY;
+        }
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle regions = top.get(kREGIONS);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            UResourceBundle temp = regions.get(country);
+            int[] vector = temp.getIntVector();
+            if (ASSERT) Assert.assrt("vector.length>0", vector.length>0);
+            String[] ret = new String[vector.length];
+            for (int i=0; i<vector.length; ++i) {
+                if (ASSERT) Assert.assrt("vector[i] >= 0 && vector[i] < OLSON_ZONE_COUNT", 
+                        vector[i] >= 0 && vector[i] < OLSON_ZONE_COUNT);
+                ret[i] = names.getString(vector[i]);
+            }
+            return ret;
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return EMPTY;
+    }
+    public static synchronized String[] getAvailableIDs() {
+        if(!getOlsonMeta()){
+            return EMPTY;
+        }
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            return names.getStringArray();
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return EMPTY;
+    }
+    public static synchronized String[] getAvailableIDs(int offset){
+        Vector vector = new Vector();
+        for (int i=0; i<OLSON_ZONE_COUNT; ++i) {
+            String unistr;
+            if ((unistr=getID(i))!=null) {
+                // This is VERY inefficient.
+                TimeZone z = TimeZone.getTimeZone(unistr);
+                // Make sure we get back the ID we wanted (if the ID is
+                // invalid we get back GMT).
+                if (z != null && z.getID().equals(unistr) &&
+                    z.getRawOffset() == offset) {
+                    vector.add(unistr);
+                }
+            }
+        }
+        if(!vector.isEmpty()){
+            String[] strings = new String[vector.size()];
+            return (String[])vector.toArray(strings);
+        }
+        return EMPTY;
+    }
+    private static String getID(int i) {
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            return names.getString(i);
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return null;
+    }
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that behave identically to the given zone.
+     *
+     * <p>If there are no equivalent zones, then this method returns
+     * 0.  This means either the given ID is not a valid zone, or it
+     * is and there are no other equivalent zones.
+     * @param id a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'id', or zero if there are no equivalent zones.
+     * @see #getEquivalentID
+     */
+    public static synchronized int countEquivalentIDs(String id) {
+
+        UResourceBundle res = openOlsonResource(id);
+        int size = res.getSize();
+        if (size == 4 || size == 6) {
+            UResourceBundle r=res.get(size-1);
+            //result = ures_getSize(&r); // doesn't work
+            int[] v = r.getIntVector();
+            return v.length;
+        }
+        return 0;
+    }
+
+    /**
+     * Returns an ID in the equivalency group that includes the given
+     * ID.  An equivalency group contains zones that behave
+     * identically to the given zone.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param id a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'id', or an empty string if 'id' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     */
+    public static synchronized String getEquivalentID(String id, int index) {
+        String result="";
+        UResourceBundle res = openOlsonResource(id);
+        if (res != null) {
+            int zone = -1;
+            int size = res.getSize();
+            if (size == 4 || size == 6) {
+                UResourceBundle r = res.get(size-1);
+                int[] v = r.getIntVector();
+                if (index >= 0 && index < v.length) {
+                    zone = v[index];
+                }
+            }
+            if (zone >= 0) {
+                try {
+                    UResourceBundle top = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo",
+                            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                    UResourceBundle ares = top.get(kNAMES); // dereference Zones section
+                    result = ares.getString(zone);
+                } catch (MissingResourceException e) {
+                    result = "";
+                }
+            }
+        }
+        return result;
+    }
+
+    private static String[] getCanonicalInfo(String id) {
+        if (id == null || id.length() == 0) {
+            return null;
+        }
+        if (canonicalMap == null) {
+            Map m = new HashMap();
+            Set s = new HashSet();
+            try {
+                UResourceBundle supplementalDataBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+    
+                UResourceBundle zoneFormatting = supplementalDataBundle.get("zoneFormatting");
+                UResourceBundleIterator it = zoneFormatting.getIterator();
+    
+                while ( it.hasNext()) {
+                    UResourceBundle temp = it.next();
+                    int resourceType = temp.getType();
+    
+                    switch(resourceType) {
+                        case UResourceBundle.TABLE:
+                            String [] result = { "", "" };
+                            UResourceBundle zoneInfo = temp;
+                            String canonicalID = zoneInfo.getKey().replace(':','/');
+                            String territory = zoneInfo.get("territory").getString();
+                            result[0] = canonicalID;
+                            if ( territory.equals("001")) {
+                                result[1] = null;
+                            }
+                            else {
+                                result[1] = territory;
+                            }
+                            m.put(canonicalID,result);
+                            try {
+                                UResourceBundle aliasBundle = zoneInfo.get("aliases");
+                                String [] aliases = aliasBundle.getStringArray();
+                                for (int i=0 ; i<aliases.length; i++) {
+                                   m.put(aliases[i],result);
+                                }
+                            } catch(MissingResourceException ex){
+                                // Disregard if there are no aliases
+                            }
+                            break;
+                        case UResourceBundle.ARRAY:
+                            String[] territoryList = temp.getStringArray();
+                            for (int i=0 ; i < territoryList.length; i++) {
+                                s.add(territoryList[i]);
+                            }
+                            break;
+                    }
+                }
+            } catch (MissingResourceException e) {
+                // throws away the exception - maps are empty for this case
+            }
+
+            // Some available Olson zones are not included in CLDR data (such as Asia/Riyadh87).
+            // Also, when we update Olson tzdata, new zones may be added.
+            // This code scans all available zones in zoneinfo.res, and if any of them are
+            // missing, add them to the map.
+            try{
+                UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+                        "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                UResourceBundle names = top.get(kNAMES);
+                String[] ids = names.getStringArray();
+                for (int i = 0; i < ids.length; i++) {
+                    if (m.containsKey(ids[i])) {
+                        // Already included in CLDR data
+                        continue;
+                    }
+                    // Not in CLDR data, but it could be new one whose alias is
+                    // available in CLDR
+                    String[] tmpinfo = null;
+                    int nTzdataEquivalent = TimeZone.countEquivalentIDs(ids[i]);
+                    for (int j = 0; j < nTzdataEquivalent; j++) {
+                        String alias = TimeZone.getEquivalentID(ids[i], j);
+                        if (alias.equals(ids[i])) {
+                            continue;
+                        }
+                        tmpinfo = (String[])m.get(alias);
+                        if (tmpinfo != null) {
+                            break;
+                        }
+                    }
+                    if (tmpinfo == null) {
+                        // Set dereferenced zone ID as the canonical ID
+                        UResourceBundle res = getZoneByName(top, ids[i]);
+                        String derefID = (res.getSize() == 1) ? ids[res.getInt()] : ids[i];
+                        m.put(ids[i], new String[] {derefID, null});
+                    } else {
+                        // Use the canonical ID in the existing entry
+                        m.put(ids[i], tmpinfo);
+                    }
+                }
+            } catch (MissingResourceException ex) {
+                //throw away the exception
+            }
+
+            synchronized (ZoneMeta.class) {
+                canonicalMap = m;
+                multiZoneTerritories = s;
+            }
+        }
+
+        return (String[])canonicalMap.get(id);
+    }
+
+    private static Map canonicalMap = null;
+    private static Set multiZoneTerritories = null;
+
+    /**
+     * Return the canonical id for this system tzid, which might be the id itself.
+     * If the given system tzid is not know, return null.
+     */
+    public static String getCanonicalSystemID(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null) {
+            return info[0];
+        }
+        return null;
+    }
+
+    /**
+     * Return the canonical country code for this tzid.  If we have none, or if the time zone
+     * is not associated with a country, return null.
+     */
+    public static String getCanonicalCountry(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null) {
+            return info[1];
+        }
+        return null;
+    }
+
+    /**
+     * Return the country code if this is a 'single' time zone that can fallback to just
+     * the country, otherwise return null.  (Note, one must also check the locale data
+     * to see that there is a localization for the country in order to implement
+     * tr#35 appendix J step 5.)
+     */
+    public static String getSingleCountry(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null && info[1] != null && !multiZoneTerritories.contains(info[1])) {
+            return info[1];
+        }
+        return null;
+    }
+
+    /**
+     * Returns a time zone location(region) format string defined by UTR#35.
+     * e.g. "Italy Time", "United States (Los Angeles) Time"
+     */
+    public static String getLocationFormat(String tzid, String city, ULocale locale) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info == null) {
+            return null; // error
+        }
+
+        String country_code = info[1];
+        if (country_code == null) {
+            return null; // error!   
+        }
+
+        String country = null;
+        if (country_code != null) {
+            try {
+                ICUResourceBundle rb = 
+                    (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+//
+// TODO: There is a design bug in UResourceBundle and getLoadingStatus() does not work well.
+//
+//                if (rb.getLoadingStatus() != ICUResourceBundle.FROM_ROOT && rb.getLoadingStatus() != ICUResourceBundle.FROM_DEFAULT) {
+//                    country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+//                }
+// START WORKAROUND
+                ULocale rbloc = rb.getULocale();
+                if (!rbloc.equals(ULocale.ROOT) && rbloc.getLanguage().equals(locale.getLanguage())) {
+                    country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+                }
+// END WORKAROUND
+            } catch (MissingResourceException e) {
+                // fall through
+            }
+            if (country == null || country.length() == 0) {
+                country = country_code;
+            }
+        }
+        
+        // This is not behavior specified in tr35, but behavior added by Mark.  
+        // TR35 says to display the country _only_ if there is a localization.
+        if (getSingleCountry(tzid) != null) { // single country
+            String regPat = getTZLocalizationInfo(locale, REGION_FORMAT);
+            if (regPat == null) {
+                regPat = DEF_REGION_FORMAT;
+            }
+            MessageFormat mf = new MessageFormat(regPat);
+            return mf.format(new Object[] { country });
+        }
+
+        if (city == null) {
+            city = tzid.substring(tzid.lastIndexOf('/')+1).replace('_',' ');
+        }
+
+        String flbPat = getTZLocalizationInfo(locale, FALLBACK_FORMAT);
+        if (flbPat == null) {
+            flbPat = DEF_FALLBACK_FORMAT;
+        }
+        MessageFormat mf = new MessageFormat(flbPat);
+
+        return mf.format(new Object[] { city, country });
+    }
+
+    private static final String DEF_REGION_FORMAT = "{0}";
+    private static final String DEF_FALLBACK_FORMAT = "{1} ({0})";
+
+    public static final String
+        HOUR = "hourFormat",
+        GMT = "gmtFormat",
+        REGION_FORMAT = "regionFormat",
+        FALLBACK_FORMAT = "fallbackFormat",
+        ZONE_STRINGS = "zoneStrings",
+        FORWARD_SLASH = "/";
+     
+    /**
+     * Get the index'd tz datum for this locale.  Index must be one of the 
+     * values PREFIX, HOUR, GMT, REGION_FORMAT, FALLBACK_FORMAT
+     */
+    public static String getTZLocalizationInfo(ULocale locale, String format) {
+        String result = null;
+        try {
+            ICUResourceBundle bundle = (ICUResourceBundle) ICUResourceBundle.getBundleInstance(locale);
+            result = bundle.getStringWithFallback(ZONE_STRINGS+FORWARD_SLASH+format);
+        } catch (MissingResourceException e) {
+            result = null;
+        }
+        return result;
+    }
+
+//    private static Set getValidIDs() {
+//        // Construct list of time zones that are valid, according
+//        // to the current underlying core JDK.  We have to do this
+//        // at runtime since we don't know what we're running on.
+//        Set valid = new TreeSet();
+//        valid.addAll(Arrays.asList(java.util.TimeZone.getAvailableIDs()));
+//        return valid;
+//    }
+
+    /**
+     * Empty string array.
+     */
+    private static final String[] EMPTY = new String[0];
+
+
+
+    /**
+     * Given an ID, open the appropriate resource for the given time zone.
+     * Dereference aliases if necessary.
+     * @param id zone id
+     * @return top-level resource bundle
+     */
+    public static UResourceBundle openOlsonResource(String id)
+    {
+        UResourceBundle res = null;
+        try {
+            ICUResourceBundle top = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            res = getZoneByName(top, id);
+            // Dereference if this is an alias.  Docs say result should be 1
+            // but it is 0 in 2.8 (?).
+             if (res.getSize() <= 1) {
+                int deref = res.getInt() + 0;
+                UResourceBundle ares = top.get(kZONES); // dereference Zones section
+                res = (ICUResourceBundle) ares.get(deref);
+            }
+        } catch (MissingResourceException e) {
+            res = null;
+        }
+        return res;
+    }
+
+    /**
+     * Fetch a specific zone by name.  Replaces the getByKey call. 
+     * @param top Top timezone resource
+     * @param id Time zone ID
+     * @return the zone's bundle if found, or undefined if error.  Reuses oldbundle.
+     */
+    private static UResourceBundle getZoneByName(UResourceBundle top, String id) throws MissingResourceException {
+        // load the Rules object
+        UResourceBundle tmp = top.get(kNAMES);
+        
+        // search for the string
+        int idx = findInStringArray(tmp, id);
+        
+        if((idx == -1)) {
+            // not found 
+            throw new MissingResourceException(kNAMES, ((ICUResourceBundle)tmp).getResPath(), id);
+            //ures_close(oldbundle);
+            //oldbundle = NULL;
+        } else {
+            tmp = top.get(kZONES); // get Zones object from top
+            tmp = tmp.get(idx); // get nth Zone object
+        }
+        return tmp;
+    }
+    private static int findInStringArray(UResourceBundle array, String id){
+        int start = 0;
+        int limit = array.getSize();
+        int mid;
+        String u = null;
+        int lastMid = Integer.MAX_VALUE;
+        if((limit < 1)) { 
+            return -1;
+        }
+        for (;;) {
+            mid = (int)((start + limit) / 2);
+            if (lastMid == mid) {   /* Have we moved? */
+                break;  /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+            u = array.getString(mid);
+            if(u==null){
+                break;
+            }
+            int r = id.compareTo(u);
+            if(r==0) {
+                return mid;
+            } else if(r<0) {
+                limit = mid;
+            } else {
+                start = mid;
+            }
+        }
+        return -1;
+    }
+    private static final String kREGIONS  = "Regions";
+    private static final String kZONES    = "Zones";
+    private static final String kNAMES    = "Names";
+    private static final String kGMT_ID   = "GMT";
+    private static final String kCUSTOM_TZ_PREFIX = "GMT";
+    private static ICUCache zoneCache = new SimpleCache();
+    /**
+     * The Olson data is stored the "zoneinfo" resource bundle.
+     * Sub-resources are organized into three ranges of data: Zones, final
+     * rules, and country tables.  There is also a meta-data resource
+     * which has 3 integers: The number of zones, rules, and countries,
+     * respectively.  The country count includes the non-country 'Default'.
+     */
+    static int OLSON_ZONE_START = -1; // starting index of zones
+    static int OLSON_ZONE_COUNT = 0;  // count of zones
+
+    /**
+     * Given a pointer to an open "zoneinfo" resource, load up the Olson
+     * meta-data. Return true if successful.
+     */
+    private static boolean getOlsonMeta(ICUResourceBundle top) {
+        if (OLSON_ZONE_START < 0 && top != null) {
+            try {
+                UResourceBundle res = top.get(kZONES);
+                OLSON_ZONE_COUNT = res.getSize();
+                OLSON_ZONE_START = 0;
+            } catch (MissingResourceException e) {
+                // throws away the exception
+            }
+        }
+        return (OLSON_ZONE_START >= 0);
+    }
+
+    /**
+     * Load up the Olson meta-data. Return true if successful.
+     */
+    private static boolean getOlsonMeta() {
+        if (OLSON_ZONE_START < 0) {
+            try {
+                ICUResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                getOlsonMeta(top);
+            } catch (MissingResourceException e) {
+                // throws away the exception
+            }
+        }
+        return (OLSON_ZONE_START >= 0);
+    }
+
+    /**
+     * Lookup the given name in our system zone table.  If found,
+     * instantiate a new zone of that name and return it.  If not
+     * found, return 0.
+     */
+    public static TimeZone getSystemTimeZone(String id) {
+        TimeZone z = (TimeZone)zoneCache.get(id);
+        if (z == null) {
+            try{
+                UResourceBundle top = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                UResourceBundle res = openOlsonResource(id);
+                z = new OlsonTimeZone(top, res);
+                z.setID(id);
+                zoneCache.put(id, z);
+            }catch(Exception ex){
+                return null;
+            }
+        }
+        return (TimeZone)z.clone();
+    }
+    
+    public static TimeZone getGMT(){
+        TimeZone z = new SimpleTimeZone(0, kGMT_ID);
+        z.setID(kGMT_ID);
+        return z;
+    }
+
+    // Maximum value of valid custom time zone hour/min
+    private static final int kMAX_CUSTOM_HOUR = 23;
+    private static final int kMAX_CUSTOM_MIN = 59;
+    private static final int kMAX_CUSTOM_SEC = 59;
+
+    /**
+     * Parse a custom time zone identifier and return a corresponding zone.
+     * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @return a newly created SimpleTimeZone with the given offset and
+     * no Daylight Savings Time, or null if the id cannot be parsed.
+    */
+    public static TimeZone getCustomTimeZone(String id){
+        int[] fields = new int[4];
+        if (parseCustomID(id, fields)) {
+            String zid = formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+            int offset = fields[0] * ((fields[1] * 60 + fields[2]) * 60 + fields[3]) * 1000;
+            return new SimpleTimeZone(offset, zid);
+        }
+        return null;
+    }
+
+    /**
+     * Parse a custom time zone identifier and return the normalized
+     * custom time zone identifier for the given custom id string.
+     * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @return The normalized custom id string.
+    */
+    public static String getCustomID(String id) {
+        int[] fields = new int[4];
+        if (parseCustomID(id, fields)) {
+            return formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+        }
+        return null;
+    }
+
+    /*
+     * Parses the given custom time zone identifier
+     * @param id id A string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @param fields An array of int (length = 4) to receive the parsed
+     * offset time fields.  The sign is set to fields[0] (-1 or 1),
+     * hour is set to fields[1], minute is set to fields[2] and second is
+     * set to fields[3].
+     * @return Returns true when the given custom id is valid.
+     */
+    static boolean parseCustomID(String id, int[] fields) {
+        NumberFormat numberFormat = null;
+        String idUppercase = id.toUpperCase();
+
+        if (id != null && id.length() > kGMT_ID.length() &&
+            idUppercase.startsWith(kGMT_ID)) {
+            ParsePosition pos = new ParsePosition(kGMT_ID.length());
+            int sign = 1;
+            int hour = 0;
+            int min = 0;
+            int sec = 0;
+
+            if (id.charAt(pos.getIndex()) == 0x002D /*'-'*/) {
+                sign = -1;
+            } else if (id.charAt(pos.getIndex()) != 0x002B /*'+'*/) {
+                return false;
+            }
+            pos.setIndex(pos.getIndex() + 1);
+
+            numberFormat = NumberFormat.getInstance();
+            numberFormat.setParseIntegerOnly(true);
+
+            // Look for either hh:mm, hhmm, or hh
+            int start = pos.getIndex();
+
+            Number n = numberFormat.parse(id, pos);
+            if (pos.getIndex() == start) {
+                return false;
+            }
+            hour = n.intValue();
+
+            if (pos.getIndex() < id.length()){
+                if (pos.getIndex() - start > 2
+                        || id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
+                    return false;
+                }
+                // hh:mm
+                pos.setIndex(pos.getIndex() + 1);
+                int oldPos = pos.getIndex();
+                n = numberFormat.parse(id, pos);
+                if ((pos.getIndex() - oldPos) != 2) {
+                    // must be 2 digits
+                    return false;
+                }
+                min = n.intValue();
+                if (pos.getIndex() < id.length()) {
+                    if (id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
+                        return false;
+                    }
+                    // [:ss]
+                    pos.setIndex(pos.getIndex() + 1);
+                    oldPos = pos.getIndex();
+                    n = numberFormat.parse(id, pos);
+                    if (pos.getIndex() != id.length()
+                            || (pos.getIndex() - oldPos) != 2) {
+                        return false;
+                    }
+                    sec = n.intValue();
+                }
+            } else {
+                // Supported formats are below -
+                //
+                // HHmmss
+                // Hmmss
+                // HHmm
+                // Hmm
+                // HH
+                // H
+
+                int length = pos.getIndex() - start;
+                if (length <= 0 || 6 < length) {
+                    // invalid length
+                    return false;
+                }
+                switch (length) {
+                    case 1:
+                    case 2:
+                        // already set to hour
+                        break;
+                    case 3:
+                    case 4:
+                        min = hour % 100;
+                        hour /= 100;
+                        break;
+                    case 5:
+                    case 6:
+                        sec = hour % 100;
+                        min = (hour/100) % 100;
+                        hour /= 10000;
+                        break;
+                }
+            }
+
+            if (hour <= kMAX_CUSTOM_HOUR && min <= kMAX_CUSTOM_MIN && sec <= kMAX_CUSTOM_SEC) {
+                if (fields != null) {
+                    if (fields.length >= 1) {
+                        fields[0] = sign;
+                    }
+                    if (fields.length >= 2) {
+                        fields[1] = hour;
+                    }
+                    if (fields.length >= 3) {
+                        fields[2] = min;
+                    }
+                    if (fields.length >= 4) {
+                        fields[3] = sec;
+                    }
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Creates a custom zone for the offset
+     * @param offset GMT offset in milliseconds
+     * @return A custom TimeZone for the offset with normalized time zone id
+     */
+    public static TimeZone getCustomTimeZone(int offset) {
+        boolean negative = false;
+        int tmp = offset;
+        if (offset < 0) {
+            negative = true;
+            tmp = -offset;
+        }
+
+        int hour, min, sec, millis;
+
+        millis = tmp % 1000;
+        if (ASSERT) {
+            Assert.assrt("millis!=0", millis != 0);
+        }
+        tmp /= 1000;
+        sec = tmp % 60;
+        tmp /= 60;
+        min = tmp % 60;
+        hour = tmp / 60;
+
+        // Note: No millisecond part included in TZID for now
+        String zid = formatCustomID(hour, min, sec, negative);
+
+        return new SimpleTimeZone(offset, zid);
+    }
+
+    /*
+     * Returns the normalized custom TimeZone ID
+     */
+    static String formatCustomID(int hour, int min, int sec, boolean negative) {
+        // Create normalized time zone ID - GMT[+|-]hhmm[ss]
+        StringBuffer zid = new StringBuffer(kCUSTOM_TZ_PREFIX);
+        if (hour != 0 || min != 0) {
+            if(negative) {
+                zid.append('-');
+            } else {
+                zid.append('+');
+            }
+            // Always use US-ASCII digits
+            if (hour < 10) {
+                zid.append('0');
+            }
+            zid.append(hour);
+            if (min < 10) {
+                zid.append('0');
+            }
+            zid.append(min);
+
+            if (sec != 0) {
+                // Optional second field
+                if (sec < 10) {
+                    zid.append('0');
+                }
+                zid.append(sec);
+            }
+        }
+        return zid.toString();
+    }
+
+    private static SoftReference OLSON_TO_META_REF;
+    private static SoftReference META_TO_OLSON_REF;
+
+    static class OlsonToMetaMappingEntry {
+        String mzid;
+        long from;
+        long to;
+    }
+
+    private static class MetaToOlsonMappingEntry {
+        String id;
+        String territory;
+    }
+
+    static Map getOlsonToMetaMap() {
+        Map olsonToMeta = null;
+        synchronized(ZoneMeta.class) {
+            if (OLSON_TO_META_REF != null) {
+                olsonToMeta = (HashMap)OLSON_TO_META_REF.get();
+            }
+            if (olsonToMeta == null) {
+                olsonToMeta = createOlsonToMetaMap();
+                if (olsonToMeta == null) {
+                    // We need to return non-null Map to avoid disaster
+                    olsonToMeta = new HashMap();
+                }
+                OLSON_TO_META_REF = new SoftReference(olsonToMeta);
+            }
+        }
+        return olsonToMeta;
+    }
+
+    /*
+     * Create olson tzid to metazone mappings from metazoneInfo.res (3.8.1 or later)
+     */
+    private static Map createOlsonToMetaMap() {
+        // Create olson id to metazone mapping table
+        HashMap olsonToMeta = null;
+        UResourceBundle metazoneMappingsBundle = null;
+        try {
+            UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "metazoneInfo");
+            metazoneMappingsBundle = bundle.get("metazoneMappings");
+        } catch (MissingResourceException mre) {
+            // do nothing
+        }
+        if (metazoneMappingsBundle != null) {
+            String[] tzids = getAvailableIDs();
+            for (int i = 0; i < tzids.length; i++) {
+                // Skip aliases
+                String canonicalID = TimeZone.getCanonicalID(tzids[i]);
+                if (canonicalID == null || !tzids[i].equals(canonicalID)) {
+                    continue;
+                }
+                String tzkey = tzids[i].replace('/', ':');
+                try {
+                    UResourceBundle zoneBundle = metazoneMappingsBundle.get(tzkey);
+                    LinkedList mzMappings = new LinkedList();
+                    for (int idx = 0; ; idx++) {
+                        try {
+                            UResourceBundle mz = zoneBundle.get("mz" + idx);
+                            String[] mzstr = mz.getStringArray();
+                            if (mzstr == null || mzstr.length != 3) {
+                                continue;
+                            }
+                            OlsonToMetaMappingEntry mzmap = new OlsonToMetaMappingEntry();
+                            mzmap.mzid = mzstr[0].intern();
+                            mzmap.from = parseDate(mzstr[1]);
+                            mzmap.to = parseDate(mzstr[2]);
+
+                            // Add this mapping to the list
+                            mzMappings.add(mzmap);
+                        } catch (MissingResourceException nomz) {
+                            // we're done
+                            break;
+                        } catch (IllegalArgumentException baddate) {
+                            // skip this
+                        }
+                    }
+                    if (mzMappings.size() != 0) {
+                        // Add to the olson-to-meta map
+                        if (olsonToMeta == null) {
+                            olsonToMeta = new HashMap();
+                        }
+                        olsonToMeta.put(tzids[i], mzMappings);
+                    }
+                } catch (MissingResourceException noum) {
+                    // Does not use metazone, just skip this.
+                }
+            }
+        }
+        return olsonToMeta;
+    }
+
+    /**
+     * Returns a CLDR metazone ID for the given Olson tzid and time.
+     */
+    public static String getMetazoneID(String olsonID, long date) {
+        String mzid = null;
+        Map olsonToMeta = getOlsonToMetaMap();
+        List mappings = (List)olsonToMeta.get(olsonID);
+        if (mappings == null) {
+            // The given ID might be an alias - try its canonical id
+            String canonicalID = getCanonicalSystemID(olsonID);
+            if (canonicalID != null && !canonicalID.equals(olsonID)) {
+                mappings = (List)olsonToMeta.get(canonicalID);
+            }
+        }
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                OlsonToMetaMappingEntry mzm = (OlsonToMetaMappingEntry)mappings.get(i);
+                if (date >= mzm.from && date < mzm.to) {
+                    mzid = mzm.mzid;
+                    break;
+                }
+            }
+        }
+        return mzid;
+    }
+
+    private static Map getMetaToOlsonMap() {
+        HashMap metaToOlson = null;
+        synchronized(ZoneMeta.class) {
+            if (META_TO_OLSON_REF != null) {
+                metaToOlson = (HashMap)META_TO_OLSON_REF.get();
+            }
+            if (metaToOlson == null) {
+                metaToOlson = new HashMap();
+                UResourceBundle metazonesBundle = null;
+                try {
+                    UResourceBundle supplementalBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+                        "supplementalData");
+                    UResourceBundle  mapTimezonesBundle = supplementalBundle.get("mapTimezones");
+                    metazonesBundle = mapTimezonesBundle.get("metazones");
+                } catch (MissingResourceException mre) {
+                    // do nothing
+                }
+                if (metazonesBundle != null) {
+                    Enumeration mzenum = metazonesBundle.getKeys();
+                    while (mzenum.hasMoreElements()) {
+                        String mzkey = (String)mzenum.nextElement();
+                        if (!mzkey.startsWith("meta:")) {
+                            continue;
+                        }
+                        String tzid = null;
+                        try {
+                            tzid = metazonesBundle.getString(mzkey);
+                        } catch (MissingResourceException mre) {
+                            // It should not happen..
+                        }
+                        if (tzid != null) {
+                            int territoryIdx = mzkey.lastIndexOf('_');
+                            if (territoryIdx > 0) {
+                                String mzid = mzkey.substring(5 /* "meta:".length() */, territoryIdx);
+                                String territory = mzkey.substring(territoryIdx + 1);
+                                List mappings = (List)metaToOlson.get(mzid);
+                                if (mappings == null) {
+                                    mappings = new LinkedList();
+                                    metaToOlson.put(mzid, mappings);
+                                }
+                                MetaToOlsonMappingEntry olsonmap = new MetaToOlsonMappingEntry();
+                                olsonmap.id = tzid;
+                                olsonmap.territory = territory;
+                                mappings.add(olsonmap);
+                            }
+                        }
+                    }
+                }
+                META_TO_OLSON_REF = new SoftReference(metaToOlson);
+            }
+        }
+        return metaToOlson;
+    }
+
+    /**
+     * Returns an Olson ID for the ginve metazone and region
+     */
+    public static String getZoneIdByMetazone(String metazoneID, String region) {
+        String tzid = null;
+        Map metaToOlson = getMetaToOlsonMap();
+        List mappings = (List)metaToOlson.get(metazoneID);
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                MetaToOlsonMappingEntry olsonmap = (MetaToOlsonMappingEntry)mappings.get(i);
+                if (olsonmap.territory.equals(region)) {
+                    tzid = olsonmap.id;
+                    break;
+                } else if (olsonmap.territory.equals("001")) {
+                    tzid = olsonmap.id;
+                }
+            }
+        }
+        return tzid;
+    }
+
+//    /**
+//     * Returns an Olson ID for the given metazone and locale
+//     */
+//    public static String getZoneIdByMetazone(String metazoneID, ULocale loc) {
+//        String region = loc.getCountry();
+//        if (region.length() == 0) {
+//            // Get likely region
+//            ULocale tmp = ULocale.addLikelySubtag(loc);
+//            region = tmp.getCountry();
+//        }
+//        return getZoneIdByMetazone(metazoneID, region);
+//    }
+
+    /*
+     * Convert a date string used by metazone mappings to long.
+     * The format used by CLDR metazone mapping is "yyyy-MM-dd HH:mm".
+     * We do not want to use SimpleDateFormat to parse the metazone
+     * mapping range strings in createOlsonToMeta, because it might be
+     * called from SimpleDateFormat initialization code.
+     */
+     static long parseDate (String text) throws IllegalArgumentException {
+        int year = 0, month = 0, day = 0, hour = 0, min = 0;
+        int idx;
+        int n;
+
+        // "yyyy" (0 - 3)
+        for (idx = 0; idx <= 3; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                year = 10*year + n;
+            } else {
+                throw new IllegalArgumentException("Bad year");
+            }
+        }
+        // "MM" (5 - 6)
+        for (idx = 5; idx <= 6; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                month = 10*month + n;
+            } else {
+                throw new IllegalArgumentException("Bad month");
+            }
+        }
+        // "dd" (8 - 9)
+        for (idx = 8; idx <= 9; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                day = 10*day + n;
+            } else {
+                throw new IllegalArgumentException("Bad day");
+            }
+        }
+        // "HH" (11 - 12)
+        for (idx = 11; idx <= 12; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                hour = 10*hour + n;
+            } else {
+                throw new IllegalArgumentException("Bad hour");
+            }
+        }
+        // "mm" (14 - 15)
+        for (idx = 14; idx <= 15; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                min = 10*min + n;
+            } else {
+                throw new IllegalArgumentException("Bad minute");
+            }
+        }
+
+        long date = Grego.fieldsToDay(year, month - 1, day) * Grego.MILLIS_PER_DAY
+                    + hour * Grego.MILLIS_PER_HOUR + min * Grego.MILLIS_PER_MINUTE;
+        return date;
+     }
+}
diff --git a/src/com/ibm/icu/impl/ZoneStringFormat.java b/src/com/ibm/icu/impl/ZoneStringFormat.java
new file mode 100644
index 0000000..026b90b
--- /dev/null
+++ b/src/com/ibm/icu/impl/ZoneStringFormat.java
@@ -0,0 +1,980 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * @author yumaoka
+ *
+ */
+public class ZoneStringFormat {
+    /**
+     * Constructs a ZoneStringFormat by zone strings array.
+     * The internal structure of zoneStrings is compatible with
+     * the one used by getZoneStrings/setZoneStrings in DateFormatSymbols.
+     * 
+     * @param zoneStrings zone strings
+     */
+    public ZoneStringFormat(String[][] zoneStrings) {
+        tzidToStrings = new HashMap();
+        zoneStringsTrie = new TextTrieMap(true);
+        for (int i = 0; i < zoneStrings.length; i++) {
+            String tzid = zoneStrings[i][0];
+            String[] names = new String[ZSIDX_MAX];
+            for (int j = 1; j < zoneStrings[i].length; j++) {
+                if (zoneStrings[i][j] != null) {
+                    int typeIdx = getNameTypeIndex(j);
+                    if (typeIdx != -1) {
+                        names[typeIdx] = zoneStrings[i][j];
+
+                        // Put the name into the trie
+                        int type = getNameType(typeIdx);
+                        ZoneStringInfo zsinfo = new ZoneStringInfo(tzid, zoneStrings[i][j], type);
+                        zoneStringsTrie.put(zoneStrings[i][j], zsinfo);
+                    }
+                    
+                }
+            }
+            ZoneStrings zstrings = new ZoneStrings(names, true, null);
+            tzidToStrings.put(tzid, zstrings);
+        }
+    }
+
+    /**
+     * Gets an instance of ZoneStringFormat for the specified locale
+     * @param locale the locale
+     * @return An instance of ZoneStringFormat for the locale
+     */
+    public static ZoneStringFormat getInstance(ULocale locale) {
+        ZoneStringFormat tzf = (ZoneStringFormat)TZFORMAT_CACHE.get(locale);
+        if (tzf == null) {
+            tzf = new ZoneStringFormat(locale);
+            TZFORMAT_CACHE.put(locale, tzf);
+        }
+        return tzf;
+    }
+
+    public String[][] getZoneStrings() {
+        return getZoneStrings(System.currentTimeMillis());
+    }
+
+    // APIs used by SimpleDateFormat to get a zone string
+    public String getSpecificLongString(Calendar cal) {
+        if (cal.get(Calendar.DST_OFFSET) == 0) {
+            return getString(cal.getTimeZone().getID(), ZSIDX_LONG_STANDARD, cal.getTimeInMillis(), false /* not used */);
+        }
+        return getString(cal.getTimeZone().getID(), ZSIDX_LONG_DAYLIGHT, cal.getTimeInMillis(), false /* not used */);
+    }
+
+    public String getSpecificShortString(Calendar cal, boolean commonlyUsedOnly) {
+        if (cal.get(Calendar.DST_OFFSET) == 0) {
+            return getString(cal.getTimeZone().getID(), ZSIDX_SHORT_STANDARD, cal.getTimeInMillis(), commonlyUsedOnly);
+        }
+        return getString(cal.getTimeZone().getID(), ZSIDX_SHORT_DAYLIGHT, cal.getTimeInMillis(), commonlyUsedOnly);
+    }
+
+    public String getGenericLongString(Calendar cal) {
+        return getGenericString(cal, false /* long */, false /* not used */);
+    }
+
+    public String getGenericShortString(Calendar cal, boolean commonlyUsedOnly) {
+        return getGenericString(cal, true /* long */, commonlyUsedOnly);
+    }
+
+    public String getGenericLocationString(Calendar cal) {
+        return getString(cal.getTimeZone().getID(), ZSIDX_LOCATION, cal.getTimeInMillis(), false /* not used */);
+    }
+
+    // APIs used by SimpleDateFormat to lookup a zone string
+    public static class ZoneStringInfo {
+        private String id;
+        private String str;
+        private int type;
+
+        private ZoneStringInfo(String id, String str, int type) {
+            this.id = id;
+            this.str = str;
+            this.type = type;
+        }
+
+        public String getID() {
+            return id;
+        }
+
+        public String getString() {
+            return str;
+        }
+
+        public boolean isStandard() {
+            if ((type & STANDARD_LONG) != 0 || (type & STANDARD_SHORT) != 0) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean isDaylight() {
+            if ((type & DAYLIGHT_LONG) != 0 || (type & DAYLIGHT_SHORT) != 0) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean isGeneric() {
+            return !isStandard() && !isDaylight();
+        }
+
+        private int getType() {
+            return type;
+        }
+    }
+
+    public ZoneStringInfo findSpecificLong(String text, int start) {
+        return find(text, start, STANDARD_LONG | DAYLIGHT_LONG);
+    }
+    
+    public ZoneStringInfo findSpecificShort(String text, int start) {
+        return find(text, start, STANDARD_SHORT | DAYLIGHT_SHORT);
+    }
+
+    public ZoneStringInfo findGenericLong(String text, int start) {
+        return find(text, start, GENERIC_LONG | STANDARD_LONG | LOCATION);
+    }
+    
+    public ZoneStringInfo findGenericShort(String text, int start) {
+        return find(text, start, GENERIC_SHORT | STANDARD_SHORT | LOCATION);
+    }
+
+    public ZoneStringInfo findGenericLocation(String text, int start) {
+        return find(text, start, LOCATION);
+    }
+
+    // Following APIs are not used by SimpleDateFormat, but public for testing purpose
+    public String getLongStandard(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_STANDARD, date, false /* not used */);
+    }
+
+    public String getLongDaylight(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_DAYLIGHT, date, false /* not used */);
+    }
+
+    public String getLongGenericNonLocation(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_GENERIC, date, false /* not used */);
+    }
+
+    public String getLongGenericPartialLocation(String tzid, long date) {
+        return getGenericPartialLocationString(tzid, false, date, false /* not used */);
+    }
+
+    public String getShortStandard(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_STANDARD, date, commonlyUsedOnly);
+    }
+
+    public String getShortDaylight(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_DAYLIGHT, date, commonlyUsedOnly);
+    }
+
+    public String getShortGenericNonLocation(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_GENERIC, date, commonlyUsedOnly);
+    }
+
+    public String getShortGenericPartialLocation(String tzid, long date, boolean commonlyUsedOnly) {
+        return getGenericPartialLocationString(tzid, true, date, commonlyUsedOnly);
+    }
+
+    public String getGenericLocation(String tzid) {
+        return getString(tzid, ZSIDX_LOCATION, 0L /* not used */, false /* not used */);
+    }
+    
+    /**
+     * Constructs a ZoneStringFormat by locale.  Because an instance of ZoneStringFormat
+     * is read-only, only one instance for a locale is sufficient.  Thus, this
+     * constructor is protected and only called from getInstance(ULocale) to
+     * create one for a locale.
+     * @param locale The locale
+     */
+    protected ZoneStringFormat(ULocale locale) {
+        this.locale = locale;
+        tzidToStrings = new HashMap();
+        mzidToStrings = new HashMap();
+        zoneStringsTrie = new TextTrieMap(true);
+
+        ICUResourceBundle zoneStringsBundle = null;
+        try {
+            ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            zoneStringsBundle = bundle.getWithFallback("zoneStrings");
+        } catch (MissingResourceException e) {
+            // If no locale bundles are available, zoneStringsBundle will be null.
+            // We still want to go through the rest of zone strings initialization,
+            // because generic location format is generated from tzid for the case.
+            // The rest of code should work even zoneStrings is null.
+        }
+
+        String[] zoneIDs = TimeZone.getAvailableIDs();
+        MessageFormat fallbackFmt = getFallbackFormat(locale);
+        MessageFormat regionFmt = getRegionFormat(locale);
+
+        String[] zstrarray = new String[ZSIDX_MAX];
+        String[] mzstrarray = new String[ZSIDX_MAX];
+        String[][] mzPartialLoc = new String[10][4]; // maximum 10 metazones per zone
+
+        for (int i = 0; i < zoneIDs.length; i++) {
+            // Skip aliases
+            String tzid = ZoneMeta.getCanonicalSystemID(zoneIDs[i]);
+            if (tzid == null || !zoneIDs[i].equals(tzid)) {
+                continue;
+            }
+
+            String zoneKey = tzid.replace('/', ':');
+            zstrarray[ZSIDX_LONG_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_STANDARD);
+            zstrarray[ZSIDX_SHORT_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_STANDARD);
+            zstrarray[ZSIDX_LONG_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_DAYLIGHT);
+            zstrarray[ZSIDX_SHORT_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_DAYLIGHT);
+            zstrarray[ZSIDX_LONG_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_GENERIC);
+            zstrarray[ZSIDX_SHORT_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_GENERIC);
+
+            // Compose location format string
+            String countryCode = ZoneMeta.getCanonicalCountry(tzid);
+            String country = null;
+            String city = null;
+            if (countryCode != null) {
+                city = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_EXEMPLAR_CITY);
+                if (city == null) {
+                    city = tzid.substring(tzid.lastIndexOf('/') + 1).replace('_', ' ');
+                }
+                country = getLocalizedCountry(countryCode, locale);
+                if (ZoneMeta.getSingleCountry(tzid) != null) {
+                    // If the zone is only one zone in the country, do not add city
+                    zstrarray[ZSIDX_LOCATION] = regionFmt.format(new Object[] {country});
+                } else {
+                    zstrarray[ZSIDX_LOCATION] = fallbackFmt.format(new Object[] {city, country});
+                }
+            } else {
+                zstrarray[ZSIDX_LOCATION] = null;
+            }
+
+            boolean commonlyUsed = isCommonlyUsed(zoneStringsBundle, zoneKey);
+            
+            // Resolve metazones used by this zone
+            int mzPartialLocIdx = 0;
+            Map olsonToMeta = ZoneMeta.getOlsonToMetaMap();
+            List metazoneMappings = (List)olsonToMeta.get(tzid);
+            if (metazoneMappings != null) {
+                Iterator it = metazoneMappings.iterator();
+                while (it.hasNext()) {
+                    ZoneMeta.OlsonToMetaMappingEntry mzmap = (ZoneMeta.OlsonToMetaMappingEntry)it.next();
+                    ZoneStrings mzStrings = (ZoneStrings)mzidToStrings.get(mzmap.mzid);
+                    if (mzStrings == null) {
+                        // If the metazone strings are not yet processed, do it now.
+                        String mzkey = "meta:" + mzmap.mzid;
+                        boolean mzCommonlyUsed = isCommonlyUsed(zoneStringsBundle, mzkey);
+                        mzstrarray[ZSIDX_LONG_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_STANDARD);
+                        mzstrarray[ZSIDX_SHORT_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_STANDARD);
+                        mzstrarray[ZSIDX_LONG_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_DAYLIGHT);
+                        mzstrarray[ZSIDX_SHORT_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_DAYLIGHT);
+                        mzstrarray[ZSIDX_LONG_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_GENERIC);
+                        mzstrarray[ZSIDX_SHORT_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_GENERIC);
+                        mzstrarray[ZSIDX_LOCATION] = null;
+                        mzStrings = new ZoneStrings(mzstrarray, mzCommonlyUsed, null);
+                        mzidToStrings.put(mzmap.mzid, mzStrings);
+
+                        // Add metazone strings to the zone string trie
+                        String preferredIdForLocale = ZoneMeta.getZoneIdByMetazone(mzmap.mzid, getRegion());
+                        for (int j = 0; j < mzstrarray.length; j++) {
+                            if (mzstrarray[j] != null) {
+                                int type = getNameType(j);
+                                ZoneStringInfo zsinfo = new ZoneStringInfo(preferredIdForLocale, mzstrarray[j], type);
+                                zoneStringsTrie.put(mzstrarray[j], zsinfo);
+                            }
+                        }
+                    }
+                    // Compose generic partial location format
+                    String lg = mzStrings.getString(ZSIDX_LONG_GENERIC);
+                    String sg = mzStrings.getString(ZSIDX_SHORT_GENERIC);
+                    if (lg != null || sg != null) {
+                        boolean addMzPartialLocationNames = true;
+                        for (int j = 0; j < mzPartialLocIdx; j++) {
+                            if (mzPartialLoc[j][0].equals(mzmap.mzid)) {
+                                // already added
+                                addMzPartialLocationNames = false;
+                                break;
+                            }
+                        }
+                        if (addMzPartialLocationNames) {
+                            String locationPart = null;
+                            // Check if the zone is the preferred zone for the territory associated with the zone
+                            String preferredID = ZoneMeta.getZoneIdByMetazone(mzmap.mzid, countryCode);
+                            if (tzid.equals(preferredID)) {
+                                // Use country for the location
+                                locationPart = country;
+                            } else {
+                                // Use city for the location
+                                locationPart = city;
+                            }
+                            mzPartialLoc[mzPartialLocIdx][0] = mzmap.mzid;
+                            mzPartialLoc[mzPartialLocIdx][1] = null;
+                            mzPartialLoc[mzPartialLocIdx][2] = null;
+                            mzPartialLoc[mzPartialLocIdx][3] = null;
+                            if (locationPart != null) {
+                                if (lg != null) {
+                                    mzPartialLoc[mzPartialLocIdx][1] = fallbackFmt.format(new Object[] {locationPart, lg});
+                                }
+                                if (sg != null) {
+                                    mzPartialLoc[mzPartialLocIdx][2] = fallbackFmt.format(new Object[] {locationPart, sg});
+                                    boolean shortMzCommonlyUsed = mzStrings.isShortFormatCommonlyUsed();
+                                    if (shortMzCommonlyUsed) {
+                                        mzPartialLoc[mzPartialLocIdx][3] = "1";
+                                    }
+                                }
+                            }
+                            mzPartialLocIdx++;
+                        }
+                    }
+                }
+            }
+            String[][] genericPartialLocationNames = null;
+            if (mzPartialLocIdx != 0) {
+                // metazone generic partial location names are collected
+                genericPartialLocationNames = new String[mzPartialLocIdx][];
+                for (int mzi = 0; mzi < mzPartialLocIdx; mzi++) {
+                    genericPartialLocationNames[mzi] = (String[])mzPartialLoc[mzi].clone();
+                }
+            }
+            // Finally, create ZoneStrings instance and put it into the tzidToStinrgs map
+            ZoneStrings zstrings = new ZoneStrings(zstrarray, commonlyUsed, genericPartialLocationNames);
+            tzidToStrings.put(tzid, zstrings);
+
+            // Also add all available names to the zone string trie
+            if (zstrarray != null) {
+                for (int j = 0; j < zstrarray.length; j++) {
+                    if (zstrarray[j] != null) {
+                        int type = getNameType(j);
+                        ZoneStringInfo zsinfo = new ZoneStringInfo(tzid, zstrarray[j], type);
+                        zoneStringsTrie.put(zstrarray[j], zsinfo);
+                    }
+                }
+            }
+            if (genericPartialLocationNames != null) {
+                for (int j = 0; j < genericPartialLocationNames.length; j++) {
+                    ZoneStringInfo zsinfo;
+                    if (genericPartialLocationNames[j][1] != null) {
+                        zsinfo = new ZoneStringInfo(tzid, genericPartialLocationNames[j][1], GENERIC_LONG);
+                        zoneStringsTrie.put(genericPartialLocationNames[j][1], zsinfo);
+                    }
+                    if (genericPartialLocationNames[j][2] != null) {
+                        zsinfo = new ZoneStringInfo(tzid, genericPartialLocationNames[j][1], GENERIC_SHORT);
+                        zoneStringsTrie.put(genericPartialLocationNames[j][2], zsinfo);
+                    }
+                }
+            }
+        }
+    }
+    
+    // Name types, these bit flag are used for zone string lookup
+    private static final int LOCATION = 0x0001;
+    private static final int GENERIC_LONG = 0x0002;
+    private static final int GENERIC_SHORT = 0x0004;
+    private static final int STANDARD_LONG = 0x0008;
+    private static final int STANDARD_SHORT = 0x0010;
+    private static final int DAYLIGHT_LONG = 0x0020;
+    private static final int DAYLIGHT_SHORT = 0x0040;
+    
+    // Name type index, these constants are used for index in ZoneStrings.strings
+    private static final int ZSIDX_LOCATION = 0;
+    private static final int ZSIDX_LONG_STANDARD = 1;
+    private static final int ZSIDX_SHORT_STANDARD = 2;
+    private static final int ZSIDX_LONG_DAYLIGHT = 3;
+    private static final int ZSIDX_SHORT_DAYLIGHT = 4;
+    private static final int ZSIDX_LONG_GENERIC = 5;
+    private static final int ZSIDX_SHORT_GENERIC = 6;
+
+    private static final int ZSIDX_MAX = ZSIDX_SHORT_GENERIC + 1;
+
+    // ZoneStringFormat cache
+    private static ICUCache TZFORMAT_CACHE = new SimpleCache();
+
+    /*
+     * The translation type of the translated zone strings
+     */
+    private static final String
+         RESKEY_SHORT_GENERIC  = "sg",
+         RESKEY_SHORT_STANDARD = "ss",
+         RESKEY_SHORT_DAYLIGHT = "sd",
+         RESKEY_LONG_GENERIC   = "lg",
+         RESKEY_LONG_STANDARD  = "ls",
+         RESKEY_LONG_DAYLIGHT  = "ld",
+         RESKEY_EXEMPLAR_CITY  = "ec",
+         RESKEY_COMMONLY_USED  = "cu";
+
+    // Window size used for DST check for a zone in a metazone
+    private static final long DST_CHECK_RANGE = 184L*(24*60*60*1000);
+
+    // Map from zone id to ZoneStrings
+    private Map tzidToStrings;
+
+    // Map from metazone id to ZoneStrings
+    private Map mzidToStrings;
+
+    // Zone string dictionary, used for look up
+    private TextTrieMap zoneStringsTrie;
+
+    // Locale used for initializing zone strings
+    private ULocale locale;
+
+    // Region used for resolving a zone in a metazone, initialized by locale
+    private transient String region;
+    
+    /*
+     * Private method to get a zone string except generic partial location types.
+     */
+    private String getString(String tzid, int typeIdx, long date, boolean commonlyUsedOnly) {
+        String result = null;
+        ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+        if (zstrings == null) {
+            // ICU's own array does not have entries for aliases
+            String canonicalID = ZoneMeta.getCanonicalSystemID(tzid);
+            if (canonicalID != null && !canonicalID.equals(tzid)) {
+                // Canonicalize tzid here.  The rest of operations
+                // require tzid to be canonicalized.
+                tzid = canonicalID;
+                zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            }
+        }
+        if (zstrings != null) {
+            switch (typeIdx) {
+            case ZSIDX_LONG_STANDARD:
+            case ZSIDX_LONG_DAYLIGHT:
+            case ZSIDX_LONG_GENERIC:
+            case ZSIDX_LOCATION:
+                result = zstrings.getString(typeIdx);
+                break;
+            case ZSIDX_SHORT_STANDARD:
+            case ZSIDX_SHORT_DAYLIGHT:
+            case ZSIDX_SHORT_GENERIC:
+                if (!commonlyUsedOnly || zstrings.isShortFormatCommonlyUsed()) {
+                    result = zstrings.getString(typeIdx);
+                }
+                break;
+            }
+        }
+        if (result == null && mzidToStrings != null && typeIdx != ZSIDX_LOCATION) {
+            // Try metazone
+            String mzid = ZoneMeta.getMetazoneID(tzid, date);
+            if (mzid != null) {
+                ZoneStrings mzstrings = (ZoneStrings)mzidToStrings.get(mzid);
+                if (mzstrings != null) {
+                    switch (typeIdx) {
+                    case ZSIDX_LONG_STANDARD:
+                    case ZSIDX_LONG_DAYLIGHT:
+                    case ZSIDX_LONG_GENERIC:
+                        result = mzstrings.getString(typeIdx);
+                        break;
+                    case ZSIDX_SHORT_STANDARD:
+                    case ZSIDX_SHORT_DAYLIGHT:
+                    case ZSIDX_SHORT_GENERIC:
+                        if (!commonlyUsedOnly || mzstrings.isShortFormatCommonlyUsed()) {
+                            result = mzstrings.getString(typeIdx);
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Private method to get a generic string, with fallback logic involved,
+     * that is,
+     * 
+     * 1. If a generic non-location string is avaiable for the zone, return it.
+     * 2. If a generic non-location string is associated with a metazone and 
+     *    the zone never use daylight time around the given date, use the standard
+     *    string (if available).
+     *    
+     *    Note: In CLDR1.5.1, the same localization is used for generic and standard.
+     *    In this case, we do not use the standard string and do the rest.
+     *    
+     * 3. If a generic non-location string is associated with a metazone and
+     *    the offset at the given time is different from the preferred zone for the
+     *    current locale, then return the generic partial location string (if avaiable)
+     * 4. If a generic non-location string is not available, use generic location
+     *    string.
+     */
+    private String getGenericString(Calendar cal, boolean isShort, boolean commonlyUsedOnly) {
+        String result = null;
+        TimeZone tz = cal.getTimeZone();
+        String tzid = tz.getID();
+        ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+        if (zstrings == null) {
+            // ICU's own array does not have entries for aliases
+            String canonicalID = ZoneMeta.getCanonicalSystemID(tzid);
+            if (canonicalID != null && !canonicalID.equals(tzid)) {
+                // Canonicalize tzid here.  The rest of operations
+                // require tzid to be canonicalized.
+                tzid = canonicalID;
+                zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            }
+        }
+        if (zstrings != null) {
+            if (isShort) {
+                if (!commonlyUsedOnly || zstrings.isShortFormatCommonlyUsed()) {
+                    result = zstrings.getString(ZSIDX_SHORT_GENERIC);
+                }
+            } else {
+                result = zstrings.getString(ZSIDX_LONG_GENERIC);
+            }
+        }
+        if (result == null && mzidToStrings != null) {
+            // try metazone
+            long time = cal.getTimeInMillis();
+            String mzid = ZoneMeta.getMetazoneID(tzid, time);
+            if (mzid != null) {
+                boolean useStandard = false;
+                if (cal.get(Calendar.DST_OFFSET) == 0) {
+                    useStandard = true;
+                    // Check if the zone actually uses daylight saving time around the time
+                    if (tz instanceof BasicTimeZone) {
+                        BasicTimeZone btz = (BasicTimeZone)tz;
+                        TimeZoneTransition before = btz.getPreviousTransition(time, true);
+                        if (before != null
+                                && (time - before.getTime() < DST_CHECK_RANGE)
+                                && before.getFrom().getDSTSavings() != 0) {
+                            useStandard = false;
+                        } else {
+                            TimeZoneTransition after = btz.getNextTransition(time, false);
+                            if (after != null
+                                    && (after.getTime() - time < DST_CHECK_RANGE)
+                                    && after.getTo().getDSTSavings() != 0) {
+                                useStandard = false;
+                            }
+                        }
+                    } else {
+                        // If not BasicTimeZone... only if the instance is not an ICU's implementation.
+                        // We may get a wrong answer in edge case, but it should practically work OK.
+                        int[] offsets = new int[2];
+                        tz.getOffset(time - DST_CHECK_RANGE, false, offsets);
+                        if (offsets[1] != 0) {
+                            useStandard = false;
+                        } else {
+                            tz.getOffset(time + DST_CHECK_RANGE, false, offsets);
+                            if (offsets[1] != 0){
+                                useStandard = false;
+                            }
+                        }
+                    }
+                }
+                if (useStandard) {
+                    result = getString(tzid, (isShort ? ZSIDX_SHORT_STANDARD : ZSIDX_LONG_STANDARD),
+                            time, commonlyUsedOnly);
+
+                    // Note:
+                    // In CLDR 1.5.1, a same localization is used for both generic and standard
+                    // for some metazones in some locales.  This is actually data bugs and should
+                    // be resolved in later versions of CLDR.  For now, we check if the standard
+                    // name is different from its generic name below.
+                    if (result != null) {
+                        String genericNonLocation = getString(tzid, (isShort ? ZSIDX_SHORT_GENERIC : ZSIDX_LONG_GENERIC),
+                                time, commonlyUsedOnly);
+                        if (genericNonLocation != null && result.equalsIgnoreCase(genericNonLocation)) {
+                            result = null;
+                        }
+                    }
+                }
+                if (result == null){
+                    ZoneStrings mzstrings = (ZoneStrings)mzidToStrings.get(mzid);
+                    if (mzstrings != null) {
+                        if (isShort) {
+                            if (!commonlyUsedOnly || mzstrings.isShortFormatCommonlyUsed()) {
+                                result = mzstrings.getString(ZSIDX_SHORT_GENERIC);
+                            }
+                        } else {
+                            result = mzstrings.getString(ZSIDX_LONG_GENERIC);
+                        }
+                    }
+                    if (result != null) {
+                        // Check if the offsets at the given time matches the preferred zone's offsets
+                        String preferredId = ZoneMeta.getZoneIdByMetazone(mzid, getRegion());
+                        if (!tzid.equals(preferredId)) {
+                            // Check if the offsets at the given time are identical with the preferred zone
+                            int raw = cal.get(Calendar.ZONE_OFFSET);
+                            int sav = cal.get(Calendar.DST_OFFSET);
+                            TimeZone preferredZone = TimeZone.getTimeZone(preferredId);
+                            int[] preferredOffsets = new int[2];
+                            // Check offset in preferred time zone with wall time.
+                            // With getOffset(time, false, preferredOffsets),
+                            // you may get incorrect results because of time overlap at DST->STD
+                            // transition.
+                            preferredZone.getOffset(time + raw + sav, true, preferredOffsets);
+                            if (raw != preferredOffsets[0] || sav != preferredOffsets[1]) {
+                                // Use generic partial location string as fallback
+                                result = zstrings.getGenericPartialLocationString(mzid, isShort, commonlyUsedOnly);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if (result == null) {
+            // Use location format as the final fallback
+            result = getString(tzid, ZSIDX_LOCATION, cal.getTimeInMillis(), false /* not used */);
+        }
+        return result;
+    }
+    
+    /*
+     * Private method to get a generic partial location string
+     */
+    private String getGenericPartialLocationString(String tzid, boolean isShort, long date, boolean commonlyUsedOnly) {
+        String result = null;
+        String mzid = ZoneMeta.getMetazoneID(tzid, date);
+        if (mzid != null) {
+            ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            if (zstrings != null) {
+                result = zstrings.getGenericPartialLocationString(mzid, isShort, commonlyUsedOnly);
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Gets zoneStrings compatible with DateFormatSymbols for the
+     * specified date.  In CLDR 1.5, zone names can be changed
+     * time to time.  This method generates flat 2-dimensional
+     * String array including zone ids and its localized strings
+     * at the moment.  Thus, even you construct a new ZoneStringFormat
+     * by the zone strings array returned by this method, you will
+     * loose historic name changes.  Also, commonly used flag for
+     * short types is not reflected in the result.
+     */
+    private String[][] getZoneStrings(long date) {
+        Set tzids = tzidToStrings.keySet();
+        String[][] zoneStrings = new String[tzids.size()][8];
+        int idx = 0;
+        Iterator it = tzids.iterator();
+        while (it.hasNext()) {
+            String tzid = (String)it.next();
+            zoneStrings[idx][0] = tzid;
+            zoneStrings[idx][1] = getLongStandard(tzid, date);
+            zoneStrings[idx][2] = getShortStandard(tzid, date, false);
+            zoneStrings[idx][3] = getLongDaylight(tzid, date);
+            zoneStrings[idx][4] = getShortDaylight(tzid, date, false);
+            zoneStrings[idx][5] = getGenericLocation(tzid);
+            zoneStrings[idx][6] = getLongGenericNonLocation(tzid, date);
+            zoneStrings[idx][7] = getShortGenericNonLocation(tzid, date, false);
+            idx++;
+        }
+        return zoneStrings;
+    }
+    
+    /*
+     * ZoneStrings is an internal implementation class for
+     * holding localized name information for a zone/metazone
+     */
+    private static class ZoneStrings {
+        private String[] strings;
+        private String[][] genericPartialLocationStrings;
+        private boolean commonlyUsed;
+ 
+        private ZoneStrings(String[] zstrarray, boolean commonlyUsed, String[][] genericPartialLocationStrings) {
+            if (zstrarray != null) {
+                int lastIdx = -1;
+                for (int i = 0; i < zstrarray.length; i++) {
+                    if (zstrarray[i] != null) {
+                        lastIdx = i;
+                    }
+                }
+                if (lastIdx != -1) {
+                    strings = new String[lastIdx + 1];
+                    System.arraycopy(zstrarray, 0, strings, 0, lastIdx + 1);
+                }
+            }
+            this.commonlyUsed = commonlyUsed;
+            this.genericPartialLocationStrings = genericPartialLocationStrings;
+        }
+
+        private String getString(int typeIdx) {
+            if (strings != null && typeIdx >= 0 && typeIdx < strings.length) {
+                return strings[typeIdx];
+            }
+            return null;
+        }
+
+        private boolean isShortFormatCommonlyUsed() {
+            return commonlyUsed;
+        }
+
+        private String getGenericPartialLocationString(String mzid, boolean isShort, boolean commonlyUsedOnly) {
+            String result = null;
+            if (genericPartialLocationStrings != null) {
+                for (int i = 0; i < genericPartialLocationStrings.length; i++) {
+                    if (genericPartialLocationStrings[i][0].equals(mzid)) {
+                        if (isShort) {
+                            if (!commonlyUsedOnly || genericPartialLocationStrings[i][3] != null) {
+                                result = genericPartialLocationStrings[i][2];
+                            }
+                        } else {
+                            result = genericPartialLocationStrings[i][1];
+                        }
+                        break;
+                    }
+                }
+            }
+            return result;
+        }
+    }
+
+    /*
+     * Returns a localized zone string from bundle.
+     */
+    private static String getZoneStringFromBundle(ICUResourceBundle bundle, String key, String type) {
+        String zstring = null;
+        if (bundle != null) {
+            try {
+                zstring = bundle.getStringWithFallback(key + "/" + type);
+            } catch (MissingResourceException ex) {
+                // throw away the exception
+            }
+        }
+        return zstring;
+    }
+
+    /*
+     * Returns if the short strings of the zone/metazone is commonly used.
+     */
+    private static boolean isCommonlyUsed(ICUResourceBundle bundle, String key) {
+        boolean commonlyUsed = false;
+        if (bundle != null) {
+            try {
+                UResourceBundle cuRes = bundle.getWithFallback(key + "/" + RESKEY_COMMONLY_USED);
+                int cuValue = cuRes.getInt();
+                commonlyUsed = (cuValue != 0);
+            } catch (MissingResourceException ex) {
+                // throw away the exception
+            }
+        }
+        return commonlyUsed;
+    }
+
+    /*
+     * Returns a localized country string for the country code.  If no actual
+     * localized string is found, countryCode itself is returned.
+     */
+    private static String getLocalizedCountry(String countryCode, ULocale locale) {
+        String countryStr = null;
+        if (countryCode != null) {
+            ICUResourceBundle rb = 
+                (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+//
+// TODO: There is a design bug in UResourceBundle and getLoadingStatus() does not work well.
+//
+//            if (rb.getLoadingStatus() != ICUResourceBundle.FROM_ROOT && rb.getLoadingStatus() != ICUResourceBundle.FROM_DEFAULT) {
+//                country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+//            }
+// START WORKAROUND
+            ULocale rbloc = rb.getULocale();
+            if (!rbloc.equals(ULocale.ROOT) && rbloc.getLanguage().equals(locale.getLanguage())) {
+                countryStr = ULocale.getDisplayCountry("xx_" + countryCode, locale);
+            }
+// END WORKAROUND
+            if (countryStr == null || countryStr.length() == 0) {
+                countryStr = countryCode;
+            }
+        }
+        return countryStr;
+    }
+
+    /*
+     * Gets an instance of MessageFormat used for formatting zone fallback string
+     */
+    private static MessageFormat getFallbackFormat(ULocale locale) {
+        String fallbackPattern = ZoneMeta.getTZLocalizationInfo(locale, ZoneMeta.FALLBACK_FORMAT);
+        if (fallbackPattern == null) {
+            fallbackPattern = "{1} ({0})";
+        }
+        return new MessageFormat(fallbackPattern, locale);
+    }
+
+    /*
+     * Gets an instance of MessageFormat used for formatting zone region string
+     */
+    private static MessageFormat getRegionFormat(ULocale locale) {
+        String regionPattern = ZoneMeta.getTZLocalizationInfo(locale, ZoneMeta.REGION_FORMAT);
+        if (regionPattern == null) {
+            regionPattern = "{0}";
+        }
+        return new MessageFormat(regionPattern, locale);
+    }
+
+    /*
+     * Index value mapping between DateFormatSymbols's zoneStrings and
+     * the string types defined in this class.
+     */
+    private static final int[] INDEXMAP = {
+        -1,             // 0 - zone id
+        ZSIDX_LONG_STANDARD,  // 1 - long standard
+        ZSIDX_SHORT_STANDARD, // 2 - short standard
+        ZSIDX_LONG_DAYLIGHT,  // 3 - long daylight
+        ZSIDX_SHORT_DAYLIGHT, // 4 - short daylight
+        ZSIDX_LOCATION,       // 5 - generic location
+        ZSIDX_LONG_GENERIC,   // 6 - long generic non-location
+        ZSIDX_SHORT_GENERIC   // 7 - short generic non-location
+    };
+
+    /*
+     * Convert from zone string array index for zoneStrings used by DateFormatSymbols#get/setZoneStrings
+     * to the type constants defined by this class, such as ZSIDX_LONG_STANDARD.
+     */
+    private static int getNameTypeIndex(int i) {
+        int idx = -1;
+        if (i >= 1 && i < INDEXMAP.length) {
+            idx = INDEXMAP[i];
+        }
+        return idx;
+    }
+
+    /*
+     * Mapping from name type index to name type
+     */
+    private static final int[] NAMETYPEMAP = {
+        LOCATION,       // ZSIDX_LOCATION
+        STANDARD_LONG,  // ZSIDX_LONG_STANDARD
+        STANDARD_SHORT, // ZSIDX_SHORT_STANDARD
+        DAYLIGHT_LONG,  // ZSIDX_LONG_DAYLIGHT
+        DAYLIGHT_SHORT, // ZSIDX_SHORT_DAYLIGHT
+        GENERIC_LONG,   // ZSIDX_LONG_GENERIC
+        GENERIC_SHORT,  // ZSIDX_SHORT_GENERIC
+    };
+
+    private static int getNameType(int typeIdx) {
+        int type = -1;
+        if (typeIdx >= 0 && typeIdx < NAMETYPEMAP.length) {
+            type = NAMETYPEMAP[typeIdx];
+        }
+        return type;
+    }
+
+    /*
+     * Returns region used for ZoneMeta#getZoneIdByMetazone.
+     */
+    private String getRegion() {
+        if (region == null) {
+            if (locale != null) {
+                region = locale.getCountry();
+                if (region.length() == 0) {
+                    ULocale tmp = ULocale.addLikelySubtag(locale);
+                    region = tmp.getCountry();
+                }
+            } else {
+                region = "";
+            }
+        }
+        return region;
+    }
+
+    /*
+     * Find a prefix matching time zone for the given zone string types.
+     * @param text The text contains a time zone string
+     * @param start The start index within the text
+     * @param types The bit mask representing a set of requested types
+     * @return If any zone string matched for the requested types, returns a
+     * ZoneStringInfo for the longest match.  If no matches are found for
+     * the requested types, returns a ZoneStringInfo for the longest match
+     * for any other types.  If nothing matches at all, returns null.
+     */
+    private ZoneStringInfo find(String text, int start, int types) {
+        ZoneStringInfo result = null;
+        ZoneStringSearchResultHandler handler = new ZoneStringSearchResultHandler();
+        zoneStringsTrie.find(text, start, handler);
+        List list = handler.getMatchedZoneStrings();
+        ZoneStringInfo fallback = null;
+        if (list != null && list.size() > 0) {
+            Iterator it = list.iterator();
+            while (it.hasNext()) {
+                ZoneStringInfo tmp = (ZoneStringInfo)it.next();
+                if ((types & tmp.getType()) != 0) {
+                    if (result == null || result.getString().length() < tmp.getString().length()) {
+                        result = tmp;
+                    } else if (result.getString().length() == tmp.getString().length()) {
+                        // Tie breaker - there are some examples that a
+                        // long standard name is identical with a location
+                        // name - for example, "Uruguay Time".  In this case,
+                        // we interpret it as generic, not specific.
+                        if (tmp.isGeneric() && !result.isGeneric()) {
+                            result = tmp;
+                        }
+                    }
+                } else if (result == null) {
+                    if (fallback == null || fallback.getString().length() < tmp.getString().length()) {
+                        fallback = tmp;
+                    } else if (fallback.getString().length() == tmp.getString().length()) {
+                        if (tmp.isGeneric() && !fallback.isGeneric()) {
+                            fallback = tmp;
+                        }
+                    }
+                }
+            }
+        }
+        if (result == null && fallback != null) {
+            result = fallback;
+        }
+        return result;
+    }
+
+    private static class ZoneStringSearchResultHandler implements TextTrieMap.ResultHandler {
+
+        private ArrayList resultList;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (resultList == null) {
+                resultList = new ArrayList();
+            }
+            while (values.hasNext()) {
+                ZoneStringInfo zsitem = (ZoneStringInfo)values.next();
+                if (zsitem == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    ZoneStringInfo tmp = (ZoneStringInfo)resultList.get(i);
+                    if (zsitem.getType() == tmp.getType()) {
+                        if (matchLength > tmp.getString().length()) {
+                            resultList.set(i, zsitem);
+                        }
+                        break;
+                    }
+                }
+                if (i == resultList.size()) {
+                    // not found in the current list
+                    resultList.add(zsitem);
+                }
+            }
+            return true;
+        }
+
+        List getMatchedZoneStrings() {
+            if (resultList == null || resultList.size() == 0) {
+                return null;
+            }
+            return resultList;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules.java b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
new file mode 100644
index 0000000..9cdb8d7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default break-iterator rules.  
+ * This resource tells which break iterator class type is instantiated
+ *  for each of the standard (built-in) boundary types.
+ *
+ *  Locales (Thai) needing a dictionary based iterator override this.
+ */
+
+public class BreakIteratorRules extends ListResourceBundle {
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // BreakIteratorClasses lists the class names to instantiate for each
+        // built-in type of BreakIterator
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",     // character-break iterator class
+                           "RuleBasedBreakIterator",     // word-break iterator class
+                           "RuleBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator",     // sentence-break iterator class
+                           "RuleBasedBreakIterator"}     // Title-Case break iterator class
+        }
+
+    };
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
new file mode 100644
index 0000000..a060f64
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
@@ -0,0 +1,41 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+import com.ibm.icu.impl.ICUData;
+
+public class BreakIteratorRules_th extends ListResourceBundle {
+    private static final String DATA_NAME = "data/th.brk";
+
+    public Object[][] getContents() {
+        final boolean exists = ICUData.exists(DATA_NAME);
+
+        // if dictionary wasn't found, then this resource bundle doesn't have
+        // much to contribute...
+        if (!exists) {
+            return new Object[0][0];
+        }
+
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            { "BreakIteratorClasses",
+                new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                               "DictionaryBasedBreakIterator",     // word-break iterator class
+                               "DictionaryBasedBreakIterator",     // line-break iterator class
+                               "RuleBasedBreakIterator" }          // sentence-break iterator class
+            },
+
+
+            { "WordBreakDictionary", DATA_NAME }, // now a path to ICU4J-specific resource
+            { "LineBreakDictionary", DATA_NAME }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle.java b/src/com/ibm/icu/impl/data/HolidayBundle.java
new file mode 100644
index 0000000..b6ae0e5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da.java b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
new file mode 100644
index 0000000..b4ce7f5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da extends ListResourceBundle
+{
+    static private final Object[][] fContents =
+    {
+        {   "Armistice Day",        "v\u00e5benhvile" },
+        {   "Ascension",            "himmelfart" },
+        {   "Boxing Day",           "anden juledag" },
+        {   "Christmas Eve",        "juleaften" },
+        {   "Easter",               "p\u00e5ske" },
+        {   "Epiphany",             "helligtrekongersdag" },
+        {   "Good Friday",          "langfredag" },
+        {   "Halloween",            "allehelgensaften" },
+        {   "Maundy Thursday",      "sk\u00e6rtorsdag" },
+        {   "Palm Sunday",          "palmes\u00f8ndag" },
+        {   "Pentecost",            "pinse" },
+        {   "Shrove Tuesday",       "hvidetirsdag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
new file mode 100644
index 0000000..ed59e44
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da_DK extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.APRIL,   30, -Calendar.FRIDAY, "General Prayer Day"),
+        new SimpleHoliday(Calendar.JUNE,    5,                    "Constitution Day"),
+        SimpleHoliday.CHRISTMAS_EVE,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.MAUNDY_THURSDAY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        {   "holidays",             fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de.java b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
new file mode 100644
index 0000000..35b10f2
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
@@ -0,0 +1,67 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",              "Allerheiligen" },
+        {   "All Souls' Day",               "Allerseelen" },
+        {   "Armistice Day",                "Waffenstillstandstag" },
+        {   "Ascension",                    "Christi Himmelfahrt" },
+        {   "Ash Wednesday",                "Aschermittwoch" },
+        {   "Assumption",                   "Mari\u00e4 Himmelfahrt" },
+        {   "Boxing Day",                   "2. Weihnachtstag" },
+        {   "Carnival",                     "Karneval" },
+        {   "Christmas",                    "Weihnachtstag" },
+        {   "Civic Holiday",                "B\u00fcrgerfeiertag" },
+        {   "Constitution Day",             "Verfassungstag" },
+        {   "Corpus Christi",               "Fronleichnam" },
+        {   "Day of Prayer and Repentance", "Bu\u00df- und Bettag" },
+        {   "Easter Monday",                "Ostermonntag" },
+        {   "Easter Sunday",                "Ostersonntag" },
+        {   "Epiphany",                     "Heilige 3 K\u00f6nige" },
+        {   "Father's Day",                 "Vatertag" },
+        {   "Flag Day",                     "Jahrestag der Nationalflagge" },
+        {   "German Unity Day",             "Tag der deutschen Einheit" },
+        {   "Good Friday",                  "Karfreitag" },
+        {   "Halloween",                    "Abend vor Allerheiligen" },
+        {   "Immaculate Conception",        "Mari\u00e4 Empf\u00e4ngnis" },
+        {   "Independence Day",             "Unabh\u00e4ngigkeitstag" },
+        {   "Labor Day",                    "Tag der Arbeit" },
+        {   "Liberation Day",               "Befreiungstag" },
+        {   "Mardi Gras",                   "Faschingsdienstag" },
+        {   "Maundy Thursday",              "Gr\u00fcndonnerstag" },
+        {   "May Day",                      "Maifeiertag" },
+        {   "Memorial Day",                 "Tag des Gedenkens" },
+        {   "Mother's Day",                 "Muttertag" },
+        {   "National Holiday",             "Nationalfeiertag" },
+        {   "New Year's Day",               "Neujahr" },
+        {   "New Year's Eve",               "Silvesterabend" },
+        {   "Palm Sunday",                  "Palmsonntag" },
+        {   "Pentecost",                    "Pfingsten" },
+        {   "Presidents' Day",              "Pr\u00e4sidentstag" },
+        {   "Remembrance Day",              "Volkstrauertag" },
+        {   "Revolution Day",               "Jahrestag der Revolution" },
+        {   "Rose Monday",                  "Rosenmontag" },
+        {   "St. Stephen's Day",            "Stephanitag" },
+        {   "Shrove Tuesday",               "Faschingsdienstag" },
+        {   "Spring Holiday",               "Tag des Fr\u00fchlings" },
+        {   "Summer Bank Holiday",          "Bankfeiertag" },
+        {   "Thanksgiving",                 "Dankfest" },
+        {   "Unity Day",                    "Einheitstag" },
+        {   "Veterans' Day",                "Veteranstag" },
+        {   "Victory Day",                  "Tag der Befreiung" },
+        {   "Washington's Birthday",        "Washingtons Geburtstag" },
+        {   "Whit Monday",                  "Pfingstmontag" },
+        {   "Whit Sunday",                  "Pfingstsonntag" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
new file mode 100644
index 0000000..3e6f714
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_AT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+        EasterHoliday.CORPUS_CHRISTI,
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.ST_STEPHENS_DAY,
+
+        new SimpleHoliday(Calendar.MAY,        1,  0,               "National Holiday"),
+        new SimpleHoliday(Calendar.OCTOBER,   31, -Calendar.MONDAY, "National Holiday"),
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        // Only holidays names different from those used in Germany are listed here
+        {   "Christmas",        "Christtag" },
+        {   "New Year's Day",   "Neujahrstag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
new file mode 100644
index 0000000..a39feee
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_DE extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.JUNE,      15,  Calendar.WEDNESDAY,  "Memorial Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    3,  0,                   "Unity Day"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  18,  0,                   "Day of Prayer and Repentance"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el.java b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
new file mode 100644
index 0000000..f9d76ba7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
@@ -0,0 +1,29 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "Assumption",           "15 \u0391\u03cd\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5" },
+        {   "Boxing Day",           "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03ce\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd" },
+        {   "Christmas",            "\u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd\u03b3\u03b5\u03bd\u03bd\u03b1" },
+        {   "Clean Monday",         "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1" },
+        {   "Easter Monday",        "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03ac\u03c3\u03c7\u03b1" },
+        {   "Epiphany",             "\u0388\u03c0\u03b9\u03c6\u03ac\u03bd\u03b5\u03b9\u03b1" },
+        {   "Good Friday",          "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae" },
+        {   "May Day",              "\u03a0\u03c1\u03c9\u03c4\u03bf\u03bc\u03b1\u03b3\u03b9\u03ac" },
+        {   "New Year's Day",       "\u03a0\u03c1\u03c9\u03c4\u03bf\u03c7\u03c1\u03bf\u03bd\u03b9\u03ac" },
+        {   "Ochi Day",             "28 \u038c\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5" },
+        {   "Whit Monday",          "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03b5\u03bd\u03c4\u03b7\u03ba\u03bf\u03c3\u03c4\u03ae" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
new file mode 100644
index 0000000..9e1fabb
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el_GR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+
+        new SimpleHoliday(Calendar.MARCH,     25,  0,    "Independence Day"),
+
+        SimpleHoliday.MAY_DAY,
+        SimpleHoliday.ASSUMPTION,
+
+        new SimpleHoliday(Calendar.OCTOBER,   28,  0,    "Ochi Day"),
+
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays in the Orthodox calendar
+        new EasterHoliday(-2,   true, "Good Friday"),
+        new EasterHoliday( 0,   true, "Easter Sunday"),
+        new EasterHoliday( 1,   true, "Easter Monday"),
+        new EasterHoliday(50,   true, "Whit Monday"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en.java b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
new file mode 100644
index 0000000..abc51e7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
new file mode 100644
index 0000000..de9f803
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,       19, 0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JULY,       1, 0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1, Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,    "Labor Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11, 0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        //hey {jf} - where are these from?
+//        EasterHoliday.GOOD_FRIDAY,
+//        EasterHoliday.EASTER_SUNDAY,
+//        EasterHoliday.EASTER_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
new file mode 100644
index 0000000..9a71420
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_GB extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        31, -Calendar.MONDAY,    "Spring Holiday"),
+        new SimpleHoliday(Calendar.AUGUST,     31, -Calendar.MONDAY,    "Summer Bank Holiday"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        new SimpleHoliday(Calendar.DECEMBER,   31, -Calendar.MONDAY,    "Christmas Holiday"),
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
new file mode 100644
index 0000000..11d1531
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_US extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.JANUARY,   15, Calendar.MONDAY,      "Martin Luther King Day",   1986),
+
+        new SimpleHoliday(Calendar.FEBRUARY,  15, Calendar.MONDAY,      "Presidents' Day",          1976),
+        new SimpleHoliday(Calendar.FEBRUARY,  22,                       "Washington's Birthday",    1776, 1975),
+
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+
+        new SimpleHoliday(Calendar.MAY,        8, Calendar.SUNDAY,      "Mother's Day",             1914),
+
+        new SimpleHoliday(Calendar.MAY,       31, -Calendar.MONDAY,     "Memorial Day",             1971),
+        new SimpleHoliday(Calendar.MAY,       30,                       "Memorial Day",             1868, 1970),
+
+        new SimpleHoliday(Calendar.JUNE,      15, Calendar.SUNDAY,      "Father's Day",             1956),
+        new SimpleHoliday(Calendar.JULY,       4,                       "Independence Day",         1776),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,      "Labor Day",                1894),
+        new SimpleHoliday(Calendar.NOVEMBER,   2, Calendar.TUESDAY,     "Election Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,      "Columbus Day",             1971),
+        new SimpleHoliday(Calendar.OCTOBER ,  31,                       "Halloween"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,                       "Veterans' Day",            1918),
+        new SimpleHoliday(Calendar.NOVEMBER,  22, Calendar.THURSDAY,    "Thanksgiving",             1863),
+
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es.java b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
new file mode 100644
index 0000000..1492564
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",          "Todos los Santos" },
+        {   "Armistice Day",            "D\u00eda del Armisticio" },
+        {   "Ascension",                "Ascensi\u00f3n" },
+        {   "Benito Ju\u00e1rez Day",        "D\u00eda de la Benito Ju\u00e1rez" },
+        {   "Boxing Day",               "D\u00eda en que se dan Aguinaldos Navide\u00f1os" },
+        {   "Canada Day",               "D\u00eda del Canad\u00e1" },
+        {   "Christmas Eve",            "V\u00EDspera de Navidad" },
+        {   "Christmas",                "Navidad" },
+        {   "Constitution Day",         "D\u00eda de la Constituci\u00f3n" },
+        {   "Day of the Dead",          "D\u00eda de los Muertos" },
+        {   "Easter Sunday",            "Pascua" },
+        {   "Easter Monday",            "Pascua Lunes" },
+        {   "Epiphany",                 "Epifan\u00eda" },
+        {   "Father's Day",             "D\u00eda del Padre" },
+        {   "Flag Day",                 "D\u00eda de la Bandera" },
+        {   "Good Friday",              "Viernes Santo" },
+        {   "Halloween",                "v\u00edspera de Todos los Santos" },
+        {   "Independence Day",         "D\u00eda de la Independencia" },
+        {   "Labor Day",                "D\u00eda de Trabajadores" },
+        {   "Maundy Thursday",          "Jueves Santo" },
+        {   "May Day",                  "Primero de Mayo" },
+        {   "Memorial Day",             "D\u00eda de la Rememoraci\u00f3n" },
+        {   "Mother's Day",             "D\u00eda de la Madre" },
+        {   "New Year's Day",           "A\u00f1o Nuevo" },
+        {   "Palm Sunday",              "Domingo de Ramos" },
+        {   "Pentecost",                "Pentecost\u00e9s" },
+        {   "Presidents' Day",          "D\u00eda de Presidentes" },
+        {   "Revolution Day",           "D\u00eda de la Revoluci\u00f3n" },
+        {   "Shrove Tuesday",           "Martes de Carnaval" },
+        {   "Thanksgiving",             "D\u00eda de Acci\u00f3n de Gracias" },
+        {   "Veterans' Day",            "D\u00eda de Veteranos" },
+        {   "Victoria Day",             "D\u00eda de Victoria" },
+        {   "Whit Sunday",              "Pentecost\u00e9s" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
new file mode 100644
index 0000000..dc52fcf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
@@ -0,0 +1,34 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es_MX extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.FEBRUARY,   5,  0,    "Constitution Day"),
+        new SimpleHoliday(Calendar.MARCH,     21,  0,    "Benito Ju\u00E1rez Day"),
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        5,  0,    "Cinco de Mayo"),
+        new SimpleHoliday(Calendar.JUNE,       1,  0,    "Navy Day"),
+        new SimpleHoliday(Calendar.SEPTEMBER, 16,  0,    "Independence Day"),
+        new SimpleHoliday(Calendar.OCTOBER,   12,  0,    "D\u00EDa de la Raza"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  0,    "Day of the Dead"),
+        new SimpleHoliday(Calendar.NOVEMBER,  20,  0,    "Revolution Day"),
+        new SimpleHoliday(Calendar.DECEMBER,  12,  0,    "Flag Day"),
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
new file mode 100644
index 0000000..4564778
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Armistice Day",        "Jour de l'Armistice" },
+        {   "Ascension",            "Ascension" },
+        {   "Bastille Day",         "F\u00EAte de la Bastille" },
+        {   "Benito Ju\u00E1rez Day",    "F\u00EAte de Benito Ju\u00E1rez" },
+        {   "Boxing Day",           "Lendemain de No\u00EBl" },
+        {   "Christmas Eve",        "Veille de No\u00EBl" },
+        {   "Christmas",            "No\u00EBl" },
+        {   "Easter Monday",        "P\u00E2ques lundi" },
+        {   "Easter Sunday",        "P\u00E2ques" },
+        {   "Epiphany",             "l'\u00C9piphanie" },
+        {   "Flag Day",             "F\u00EAte du Drapeau" },
+        {   "Good Friday",          "Vendredi Saint" },
+        {   "Halloween",            "Veille de la Toussaint" },
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Independence Day",     "F\u00EAte Ind\u00E9pendance" },
+        {   "Maundy Thursday",      "Jeudi Saint" },
+        {   "Mother's Day",         "F\u00EAte des m\u00E8res" },
+        {   "National Day",         "F\u00EAte Nationale" },
+        {   "New Year's Day",       "Jour de l'an" },
+        {   "Palm Sunday",          "les Rameaux" },
+        {   "Pentecost",            "Pentec\u00F4te" },
+        {   "Shrove Tuesday",       "Mardi Gras" },
+        {   "St. Stephen's Day",    "Saint-\u00C9tienne" },
+        {   "Victoria Day",         "F\u00EAte de la Victoria" },
+        {   "Victory Day",          "F\u00EAte de la Victoire" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
new file mode 100644
index 0000000..fd34777
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.JANUARY,    1,  0,                  "New Year's Day"),
+        new SimpleHoliday(Calendar.MAY,       19,  0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JUNE,      24,  0,                  "National Day"),
+        new SimpleHoliday(Calendar.JULY,       1,  0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1,  Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1,  Calendar.MONDAY,    "Labour Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8,  Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
new file mode 100644
index 0000000..244a9b6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_FR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,        1,  0, "Labor Day"),
+        new SimpleHoliday(Calendar.MAY,        8,  0, "Victory Day"),
+        new SimpleHoliday(Calendar.JULY,      14,  0, "Bastille Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0, "Armistice Day"),
+        SimpleHoliday.CHRISTMAS,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it.java b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
new file mode 100644
index 0000000..c12bdc7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "All Saints' Day",      "Ognissanti" },
+        {   "Armistice Day",        "armistizio" },
+        {   "Ascension",            "ascensione" },
+        {   "Ash Wednesday",        "mercoled\u00ec delle ceneri" },
+        {   "Boxing Day",           "Santo Stefano" },
+        {   "Christmas",            "natale" },
+        {   "Easter Sunday",        "pasqua" },
+        {   "Epiphany",             "Epifania" },
+        {   "Good Friday",          "venerd\u00ec santo" },
+        {   "Halloween",            "vigilia di Ognissanti" },
+        {   "Maundy Thursday",      "gioved\u00ec santo" },
+        {   "New Year's Day",       "anno nuovo" },
+        {   "Palm Sunday",          "domenica delle palme" },
+        {   "Pentecost",            "di Pentecoste" },
+        {   "Shrove Tuesday",       "martedi grasso" },
+        {   "St. Stephen's Day",    "Santo Stefano" },
+        {   "Thanksgiving",         "Giorno del Ringraziamento" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
new file mode 100644
index 0000000..919648f
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it_IT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        new SimpleHoliday(Calendar.APRIL,      1,  0,    "Liberation Day"),
+        new SimpleHoliday(Calendar.MAY,        1,  0,    "Labor Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        new SimpleHoliday(Calendar.DECEMBER,  26,  0,    "St. Stephens Day"),
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",           fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
new file mode 100644
index 0000000..53ab7f6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
@@ -0,0 +1,20 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw extends ListResourceBundle {
+
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
new file mode 100644
index 0000000..7d60b08
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw_IL extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        HebrewHoliday.ROSH_HASHANAH,
+        HebrewHoliday.YOM_KIPPUR,
+        HebrewHoliday.HANUKKAH,
+        HebrewHoliday.PURIM,
+        HebrewHoliday.PASSOVER,
+        HebrewHoliday.SHAVUOT,
+        HebrewHoliday.SELIHOT,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
new file mode 100644
index 0000000..e7ef8ff
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
@@ -0,0 +1,22 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_ja_JP extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.FEBRUARY,  11,  0,    "National Foundation Day"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/ResourceReader.java b/src/com/ibm/icu/impl/data/ResourceReader.java
new file mode 100644
index 0000000..f0f63e9
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ResourceReader.java
@@ -0,0 +1,242 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.io.*;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A reader for text resource data in the current package or the package
+ * of a given class object.  The
+ * resource data is loaded through the class loader, so it will
+ * typically be a file in the same directory as the *.class files, or
+ * a file within a JAR file in the corresponding subdirectory.  The
+ * file must be a text file in one of the supported encodings; when the
+ * resource is opened by constructing a <code>ResourceReader</code>
+ * object the encoding is specified.
+ *
+ * @author Alan Liu
+ */
+public class ResourceReader {
+    private BufferedReader reader;
+    private String resourceName;
+    private String encoding; // null for default encoding
+    private Class root;
+    
+    /**
+     * The one-based line number. Has the special value -1 before the
+     * object is initialized. Has the special value 0 after initialization
+     * but before the first line is read.
+     */
+    private int lineNo;
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the given encoding.
+     * @param resourceName the name of the text file located in this
+     * package's ".data" subpackage.
+     * @param encoding the encoding of the text file; if unsupported
+     * an exception is thrown
+     * @exception UnsupportedEncodingException if
+     * <code>encoding</code> is not supported by the JDK.
+     */
+    public ResourceReader(String resourceName, String encoding)
+        throws UnsupportedEncodingException {
+        this(ICUData.class, "data/" + resourceName, encoding);
+    }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the default encoding.
+     * @param resourceName the name of the text file located in this
+     * package's ".data" subpackage.
+     */
+    public ResourceReader(String resourceName) {
+        this(ICUData.class, "data/" + resourceName);
+    }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in the given class's package, using the given encoding.
+     * @param resourceName the name of the text file located in the
+     * given class's package.
+     * @param encoding the encoding of the text file; if unsupported
+     * an exception is thrown
+     * @exception UnsupportedEncodingException if
+     * <code>encoding</code> is not supported by the JDK.
+     */
+    public ResourceReader(Class rootClass, String resourceName, String encoding)
+        throws UnsupportedEncodingException {
+        this.root = rootClass;
+        this.resourceName = resourceName;
+        this.encoding = encoding;
+        lineNo = -1;
+        _reset();
+    }
+
+         /**
+          * Construct a reader object for the input stream associated with
+          * the given resource name.
+          * @param is the input stream of the resource
+          * @param resourceName the name of the resource
+          */
+          public ResourceReader(InputStream is, String resourceName, String encoding) {
+                   this.root = null;
+         this.resourceName = resourceName;
+         this.encoding = encoding;
+
+         this.lineNo = -1;
+         try {
+             InputStreamReader isr = (encoding == null) 
+                 ? new InputStreamReader(is)
+                 : new InputStreamReader(is, encoding);
+
+             this.reader = new BufferedReader(isr);
+             this.lineNo= 0;
+         }
+         catch (UnsupportedEncodingException e) {
+         }
+     }
+
+          /**
+           * Construct a reader object for the input stream associated with
+           * the given resource name.
+           * @param is the input stream of the resource
+           * @param resourceName the name of the resource
+           */
+          public ResourceReader(InputStream is, String resourceName) {
+              this(is, resourceName, null);
+          }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in the given class's package, using the default encoding.
+     * @param resourceName the name of the text file located in the
+     * given class's package.
+     */
+    public ResourceReader(Class rootClass, String resourceName) {
+        this.root = rootClass;
+        this.resourceName = resourceName;
+        this.encoding = null;
+        lineNo = -1;
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+    }
+
+    /**
+     * Read and return the next line of the file or <code>null</code>
+     * if the end of the file has been reached.
+     */
+    public String readLine() throws IOException {
+        if (lineNo == 0) {
+            // Remove BOMs
+            ++lineNo;
+            String line = reader.readLine();
+            if (line.charAt(0) == '\uFFEF' ||
+                line.charAt(0) == '\uFEFF') {
+                line = line.substring(1);
+            }
+            return line;
+        }
+        ++lineNo;
+        return reader.readLine();
+    }
+
+    /**
+     * Read a line, ignoring blank lines and lines that start with
+     * '#'.
+     * @param trim if true then trim leading rule white space.
+     */
+    public String readLineSkippingComments(boolean trim) throws IOException {
+        for (;;) {
+            String line = readLine();
+            if (line == null) {
+                return line;
+            }
+            // Skip over white space
+            int pos = Utility.skipWhitespace(line, 0);
+            // Ignore blank lines and comment lines
+            if (pos == line.length() || line.charAt(pos) == '#') {
+                continue;
+            }
+            // Process line
+            if (trim) line = line.substring(pos);
+            return line;
+        }
+    }
+
+
+    /**
+     * Read a line, ignoring blank lines and lines that start with
+     * '#'. Do not trim leading rule white space.
+     */
+    public String readLineSkippingComments() throws IOException {
+        return readLineSkippingComments(false);
+    }
+
+    /**
+     * Return the one-based line number of the last line returned by
+     * readLine() or readLineSkippingComments(). Should only be called
+     * after a call to one of these methods; otherwise the return
+     * value is undefined.
+     */
+    public int getLineNumber() {
+        return lineNo;
+    }
+    
+    /**
+     * Return a string description of the position of the last line
+     * returned by readLine() or readLineSkippingComments().
+     */
+    public String describePosition() {
+        return resourceName + ':' + lineNo;
+    }
+    
+    /**
+     * Reset this reader so that the next call to
+     * <code>readLine()</code> returns the first line of the file
+     * again.  This is a somewhat expensive call, however, calling
+     * <code>reset()</code> after calling it the first time does
+     * nothing if <code>readLine()</code> has not been called in
+     * between.
+     */
+    public void reset() {
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+        // We swallow this exception, if there is one.  If the encoding is
+        // invalid, the constructor will have thrown this exception already and
+        // the caller shouldn't use the object afterwards.
+    }
+
+    /**
+     * Reset to the start by reconstructing the stream and readers.
+     * We could also use mark() and reset() on the stream or reader,
+     * but that would cause them to keep the stream data around in
+     * memory.  We don't want that because some of the resource files
+     * are large, e.g., 400k.
+     */
+    private void _reset() throws UnsupportedEncodingException {
+        if (lineNo == 0) {
+            return;
+        }
+        InputStream is = ICUData.getStream(root, resourceName);
+        if (is == null) {
+            throw new IllegalArgumentException("Can't open " + resourceName);
+        }
+        
+        InputStreamReader isr =
+            (encoding == null) ? new InputStreamReader(is) :
+                                 new InputStreamReader(is, encoding);
+        reader = new BufferedReader(isr);
+        lineNo = 0;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/TokenIterator.java b/src/com/ibm/icu/impl/data/TokenIterator.java
new file mode 100644
index 0000000..c99d280
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/TokenIterator.java
@@ -0,0 +1,159 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: March 16 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.impl.data;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An iterator class that returns successive string tokens from some
+ * source.  String tokens are, in general, separated by rule white
+ * space in the source test.  Furthermore, they may be delimited by
+ * either single or double quotes (opening and closing quotes must
+ * match).  Escapes are processed using standard ICU unescaping.
+ */
+public class TokenIterator {
+
+    private ResourceReader reader;
+    private String line;
+    private StringBuffer buf;
+    private boolean done;
+    private int pos;
+    private int lastpos;
+
+    /**
+     * Construct an iterator over the tokens returned by the given
+     * ResourceReader, ignoring blank lines and comment lines (first
+     * non-blank character is '#').  Note that trailing comments on a
+     * line, beginning with the first unquoted '#', are recognized.
+     */
+    public TokenIterator(ResourceReader r) {
+        reader = r;
+        line = null;
+        done = false;
+        buf = new StringBuffer();
+        pos = lastpos = -1;
+    }
+
+    /**
+     * Return the next token from this iterator, or null if the last
+     * token has been returned.
+     */
+    public String next() throws IOException {
+        if (done) {
+            return null;
+        }
+        for (;;) {
+            if (line == null) {
+                line = reader.readLineSkippingComments();
+                if (line == null) {
+                    done = true;
+                    return null;
+                }
+                pos = 0;
+            }
+            buf.setLength(0);
+            lastpos = pos;
+            pos = nextToken(pos);
+            if (pos < 0) {
+                line = null;
+                continue;
+            }
+            return buf.toString();
+        }
+    }
+
+    /**
+     * Return the one-based line number of the line of the last token returned by
+     * next(). Should only be called
+     * after a call to next(); otherwise the return
+     * value is undefined.
+     */
+    public int getLineNumber() {
+        return reader.getLineNumber();
+    }
+    
+    /**
+     * Return a string description of the position of the last line
+     * returned by readLine() or readLineSkippingComments().
+     */
+    public String describePosition() {
+        return reader.describePosition() + ':' + (lastpos+1);
+    }
+    
+    /**
+     * Read the next token from 'this.line' and append it to
+     * 'this.buf'.  Tokens are separated by rule white space.  Tokens
+     * may also be delimited by double or single quotes.  The closing
+     * quote must match the opening quote.  If a '#' is encountered,
+     * the rest of the line is ignored, unless it is backslash-escaped
+     * or within quotes.
+     * @param position the offset into the string
+     * @return offset to the next character to read from line, or if
+     * the end of the line is reached without scanning a valid token,
+     * -1
+     */
+    private int nextToken(int position) {
+        position = Utility.skipWhitespace(line, position);
+        if (position == line.length()) {
+            return -1;
+        }
+        int startpos = position;
+        char c = line.charAt(position++);
+        char quote = 0;
+        switch (c) {
+        case '"':
+        case '\'':
+            quote = c;
+            break;
+        case '#':
+            return -1;
+        default:
+            buf.append(c);
+            break;
+        }
+        int[] posref = null;
+        while (position < line.length()) {
+            c = line.charAt(position); // 16-bit ok
+            if (c == '\\') {
+                if (posref == null) {
+                    posref = new int[1];
+                }
+                posref[0] = position+1;
+                int c32 = Utility.unescapeAt(line, posref);
+                if (c32 < 0) {
+                    throw new RuntimeException("Invalid escape at " +
+                                               reader.describePosition() + ':' +
+                                               position);
+                }
+                UTF16.append(buf, c32);
+                position = posref[0];
+            } else if ((quote != 0 && c == quote) ||
+                       (quote == 0 && UCharacterProperty.isRuleWhiteSpace(c))) {
+                return ++position;
+            } else if (quote == 0 && c == '#') {
+                return position; // do NOT increment
+            } else {
+                buf.append(c);
+                ++position;
+            }
+        }
+        if (quote != 0) {
+            throw new RuntimeException("Unterminated quote at " +
+                                       reader.describePosition() + ':' +
+                                       startpos);
+        }
+        return position;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
new file mode 100644
index 0000000..f89f7b0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
@@ -0,0 +1,55798 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# Convert CJK characters, according to the defintions in CEDICT and Unihan.txt
+# Note: adds space between them and letters.
+{ ([:Han:]) } [:L:] > | $1 ' ';
+[\.\,\?\!．，？！、。[:Pe:][:Pf:]] { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+變文 < a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 < border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+直通車 < \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 < dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+殺雞給猴看 < \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+抱薪救火 < carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+不見棺材不落淚 < not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+同期 < the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+㡎 < the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 < name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+杯水車薪 < trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+䐞 < the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+偏偏 < \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 < to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 < oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+病急亂投醫 < turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+辯証施治 < diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+珪 < a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+敝帚自珍 < value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+不知天高地厚 < not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+㺺 < a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 < to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+兵不血刃 < the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+㨧 < wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 < in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+洛德 < \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+不到黃河心不死 < not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+彷徨 < name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+䚫 < ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+養兒防老 < \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+陳毅 < chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+綺色佳 < ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+笐 < bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 < name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 < a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+雷峰塔 < leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+賨 < tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+不共戴天 < will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+禫 < sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 < an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 < a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+擊其惰歸 < avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 < the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+包工 < undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 < radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 < a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+衈 < the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 < to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 < a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+不辨菽麥 < be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+絥 < to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 < to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 < a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+恭喜發財 < congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+瑄 < a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+牡丹卡 < peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+䬤 < to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+在於 < \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+䥯 < a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 < a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+塞韋裡諾 < \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+䎭 < a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+教訓 < \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+三岔口 < at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+筓 < a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+李自成 < name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+有期徒刑 < limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+江八點 < \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 < tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+閉目塞聽 < shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 < clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+㮲 < a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+駁岸 < a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+百聞不如一見 < seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+補法 < treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+䵻 < a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+三不 < \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 < the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+本草綱目 < an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+玠 < large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+吃大戶 < mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+䂜 < rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 < an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+李時珍 < li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+兵強馬壯 < strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+裎 < to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 < the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+禽流感 < \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+䪐 < something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+業余大學 < college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+䇭 < containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 < a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 < to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+宣判 < pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+蒙代爾 < \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 < \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+病友 < a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+捕風捉影 < chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+就是 < \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+䤞 < a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 < a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 < a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 < a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+維爾容 < \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 < name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+䃘 < simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 < to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+不分彼此 < make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+老驥伏櫪志在千里 < \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+大禹 < da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+獯 < a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 < sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+表證 < illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+國際電話電報諮詢委員會 < international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+不知凡幾 < can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+䕽 < the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+鼻韻母 < \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+幫閑 < hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+郜 < name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+描紅 < to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+金永南 < kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+抗戰 < war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+抱殘守缺 < cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+閉塞眼睛捉麻雀 < try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+䍿 < a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 < a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 < capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 < a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 < to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 < name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 < a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+不費吹灰之力 < as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+斗批改 < struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+阿不來提\.阿不都熱西提 < abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+鷴 < silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+博古通今 < conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+蟕 < a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+今音 < modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+斯特凡諾普洛斯 < stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+㬆 < posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+不入虎穴焉得虎子 < how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+鞝 < the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+大鬧天宮 < \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+蔛 < a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+端午節 < the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+䰙 < an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 < a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 < a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 < to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+悲天憫人 < bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+惋惜 < to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+峋 < ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 < smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+白茫茫 < \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+睥睨 < look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+羗 < tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+胡適 < hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 < military\-commission\-of\-the\-communist\-party\-central\-committee;
+不服水土 < \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+斯佩羅 < \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+丣 < ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 < something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 < a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 < to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 < the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 < a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 < the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+燈節 < the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+衩 < the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 < a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+北洋 < the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 < the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+䶦 < upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 < to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+藤野 < name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 < marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 < to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+太極拳 < a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+哀兵必勝 < an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+會不會 < \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+扮相 < the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+抱佛腳 < clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+噞 < the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 < used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 < name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 < to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+蛋花湯 < clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+䄛 < service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 < an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 < hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 < to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 < the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 < a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 < a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+金山寺 < jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 < twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+武術 < wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 < \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+钲 < kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+政協 < cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 < adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 < a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 < male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+矛頭指向 < target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+仙草 < a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+䪳 < slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+板胡 < a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+䞋 < to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 < slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 < to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 < the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 < an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 < name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 < a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+斯卡伯勒礁 < scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+不恥下問 < not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+狽 < a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 < used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+汨 < mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 < a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+卡拉OK < karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 < general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+補養 < take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+沙利科什維利 < general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+簈 < bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 < a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+三國演義 < name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+拼命 < to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+背水一戰 < fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+䳚 < a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 < the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+杯弓蛇影 < mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+䃾 < to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 < fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 < name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 < space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 < used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+背井離鄉 < leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+炝 < stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+遷怒 < to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+波瀾起伏 < of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 < refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 < take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+飛虎隊 < flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+掛好 < to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 < draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+弮 < a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 < leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 < the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+畜力 < animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+䡞 < leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 < a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 < capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 < to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 < name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 < a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 < a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+暗花兒 < a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+冰炭不相容 < as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+幫腔 < vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 < hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 < \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+郌 < name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+興趣 < interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+拔罐子 < cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+耰 < toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 < gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+標兵 < parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+䪃 < wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 < an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 < to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 < ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 < a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 < kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 < a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 < thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 < fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 < after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 < bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 < a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+八面玲瓏 < be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+元宵節 < the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+眾志成城 < \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+個體戶 < a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+法海 < name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+蠲 < the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 < a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+景德鎮 < jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+韋爾弗雷茲 < \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+長城卡 < great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 < \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 < name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 < \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+䡴 < carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 < walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 < slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 < to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 < lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 < jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 < a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 < to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+包干制 < a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+抗日戰爭 < \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+顏真卿 < name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 < \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+砀 < brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+彈琴 < to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 < white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 < be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+大材小用 < using\-a\-talented\-person\-in\-an\-insignificant\-position;
+琳\.戴維斯 < lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+平方 < square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+虒 < an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 < a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+人民英雄紀念碑 < monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+冋 < a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 < use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 < a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 < name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 < a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 < a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 < a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 < to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 < a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+不聞不問 < not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 < both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 < advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+甾 < ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+一望無際 < as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 < not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 < dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+比上不足比下有余 < fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+白冰冰 < pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+拉貝 < \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 < mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+禡 < a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 < ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+捕俘 < capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+伯恩斯 < \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+䯠 < the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 < food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 < a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+鏢客 < armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+䈱 < an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 < half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 < the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 < a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+安步當車 < walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+貝母 < the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 < a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 < music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+呀 < particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+陝西 < shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 < the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+不勝枚舉 < too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+靷 < the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 < to\-supervise\-to\-confine\-a\-government\-establishment;
+橫折 < \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 < xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 < name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+坫 < a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+備取 < be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+䴽 < a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 < to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 < leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+賓至如歸 < guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+䡇 < the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 < to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 < the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 < a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 < containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 < cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 < a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 < a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 < wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 < to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 < a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 < fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 < hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 < get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 < the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 < a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+尼赫魯 < \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+㟗 < name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+撥浪鼓 < a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+尖閣列島 < senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+本末 < the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 < with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+維吾爾族 < the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+版畫 < a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 < taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+按下葫蘆浮起瓢 < solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+伽 < transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 < straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+北大荒 < the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+武松 < wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+十五大 < 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 < lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+許仙 < name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 < attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 < reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+南華早報 < south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+幹事 < administrative\-secretary\-\(in\-charge\-of\-something\);
+病入膏肓 < the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+巫峽 < wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+漎 < a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+折筆 < against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+檾 < grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+專線 < special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 < \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+䰌 < to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 < tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+人民行動黨 < people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+䚙 < a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 < a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 < an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 < sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 < rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 < to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 < a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 < roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 < ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 < generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 < pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 < deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 < the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+斜鉤 < \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 < \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 < ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+約翰拉貝 < john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+衅 < consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 < name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+跑江湖 < to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 < sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+齉 < stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+橫筆 < bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+不敢越雷池一步 < dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+採購 < make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 < in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+褯 < children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+林豐正 < lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+報國 < dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+董建華 < tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+筆觸 < brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+不破不立 < without\-destruction\-there\-can\-be\-no\-construction;
+南京路 < nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+梠 < a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 < a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 < a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 < the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 < horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 < name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 < a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 < dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 < a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 < a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 < a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 < whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 < official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 < guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 < woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 < a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㧋 < to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 < young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+便人 < somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+㙱 < earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+謝辛 < chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 < reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+喁 < the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 < to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 < the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+罷了 < a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 < cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+八仙桌 < old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+包產到戶 < fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+軾 < horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+抓飯 < a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+萆 < the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+塞拉凡 < \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 < kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+白描 < line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+簠 < an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+范斯坦 < \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+駱駝祥子 < name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+䲰 < a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+耶穌基督末世聖徒教會 < the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+䝥 < to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 < the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+液態水 < liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+㯮 < a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+逼上樑山 < be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+㔍 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+解放軍 < people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+唐山 < tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+常任理事國 < permanent\-member\-state\-\(of\-un\-security\-council\);
+璜 < a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+避嫌 < avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+趙紫陽 < zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+報幕 < announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+諬 < to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+親家 < parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+南轅北轍 < \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+猹 < wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 < a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 < an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 < used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+保外就醫 < \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+喜糖 < sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 < congratulate\-an\-elderly\-person\-on\-his\-birthday;
+蒸蒸日上 < becoming\-more\-prosperous\-with\-each\-passing\-day;
+䶛 < to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 < a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 < a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 < saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+烏魯木齊 < urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 < hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+䗽 < a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 < a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 < small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 < to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+政府機關開放系統互連總則 < government\-open\-system\-interconnection\-profile;
+㽩 < connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+並行 < in\-parallel\-\[development\,\-implementation\,\-etc\];
+㹃 < two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+伯杰 < \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+㶟 < an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+東盟 < asean\-\(association\-of\-southeast\-asian\-nations\);
+㲈 < the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 < a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 < name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+工商銀行 < industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+㟢 < the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 < children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+曾經 < \(refers\-to\-something\-that\-happened\-previously\);
+㔽 < a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 < to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 < a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+可見 < it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+事與願違 < things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+慰問 < express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 < hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+張燈結綵 < be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 < shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+羅斯 < roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+閉關自守 < close\-the\-country\-to\-international\-intercourse;
+旁聽 < be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+互通性 < interoperability\-\(of\-communications\-equipment\);
+畲 < to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 < round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+推辭 < to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+不避艱險 < shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+白痢 < dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 < name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+粔 < cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 < to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+阿旺曲沛 < ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+棒槌 < wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+全斗煥 < chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+乤 < first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 < in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 < extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 < name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 < name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 < courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 < to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 < name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 < chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 < a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 < light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 < numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 < disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 < hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 < flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 < name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 < a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 < name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 < the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 < bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 < a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+人民大會堂 < great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+㙫 < a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 < name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+探路者 < pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+畫蛇添足 < ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+崔亞琳 < charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+北大西洋公約組織 < the\-north\-atlantic\-treaty\-organization\-\(nato\);
+專案組 < special\-\(legal\|judicial\)\-investigations\-group;
+仗義執言 < speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 < the\-attacking\-army\-has\-reached\-the\-city\-gates;
+吞吐 < to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+钧 < unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 < concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 < concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 < a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 < meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 < a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+斷橋 < the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+失敗是成功之母 < \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+氣功 < qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 < provincial\-level\-\(eg\,\-provincial\-government\);
+武打 < acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+橋本龍太郎 < hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+騲 < the\-female\-of\-certain\-animals\-such\-as\-horses;
+報失 < report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 < take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 < ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 < obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 < red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+珓 < two\-hemispherical\-objects\-used\-in\-divination;
+元宵 < sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+背城借一 < make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+敧 < to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 < large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 < the\-place\-where\-the\-supreme\-stores\-his\-books;
+臨寫 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 < moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+百感交集 < all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+䱁 < a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 < sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 < a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 < leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+抄家 < to\-search\-a\-house\-and\-confiscate\-possessions;
+䦹 < name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 < name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 < living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 < name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䢹 < name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 < a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 < to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+會見 < to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+䈐 < an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 < luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 < mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 < big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 < deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 < to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 < publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 < the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 < to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 < to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㝙 < the\-third\-of\-the\-twelve\-terrestrial\-branches;
+長沙灣 < cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+奧爾布賴特 < \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+正常化 < normalization\-\(of\-diplomatic\-relations\,\-etc\);
+兵不厭詐 < there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 < \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 < avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+大舉 < carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 < \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+標新立異 < start\-something\-new\-in\-order\-to\-be\-different;
+議席 < seat\-in\-a\-parliament\-or\-legislative\-assembly;
+乎 < interrogative\-or\-exclamatory\-final\-particle;
+澄 < purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 < a\-final\-particle\-used\-to\-express\-admiration;
+梢 < pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 < a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 < octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+唼 < speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+大功告成 < successfully\-accomplished\-\(project\-or\-goal\);
+通緝 < wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 < \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+謝裡夫 < \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+魯賓 < rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 < lippo\-\(group\)\-\(indonesian\-business\-concern\);
+吳作棟 < goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+無所用心 < eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+側鋒 < oblique\-attack\-\(brush\-movement\-in\-painting\);
+邴 < name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+班門弄斧 < display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 < china\-daily\-\(an\-english\-language\-newspaper\);
+崇禎 < chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 < wrongly\-written\-and\-mispronounced\-character;
+不可終日 < be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+寄予很大期望 < to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+工人黨 < workers''\-party\-\(singapore\-opposition\-party\);
+對策 < countermeasure\-for\-dealing\-with\-a\-situation;
+䶘 < the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 < horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 < to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 < a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 < wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 < name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 < name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 < name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䡿 < frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 < name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 < shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 < an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 < the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 < straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 < to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+筆力 < vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 < to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+㾼 < to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 < seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 < a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 < bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 < name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+斯佩林 < spelling\-\(eg\,\-spelling\-entertainment\-group\);
+㮫 < a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 < the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 < to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+星體 < celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+㛶 < do\-not\-care\-about\-appearance\-and\-deportment;
+㚔 < instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 < the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+主管 < \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+單槍匹馬 < single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+盧泰愚 < roh\-tae\-woo\-\(former\-south\-korean\-president\);
+步韻 < to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 < \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 < frontal\-attack\-\(brush\-movement\-in\-painting\);
+齊白石 < name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+下來 < \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 < a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+娅 < mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+商務部 < commerce\-department\-\(of\-the\-us\-government\);
+名副其實 < not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+不當一回事 < not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+老伴兒 < \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+不打不相識 < from\-an\-exchange\-of\-blows\-friendship\-grows;
+巴爾舍夫斯基 < \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+鮠 < a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+接納 < admit\-\(into\-membership\-of\-an\-organization\);
+喜新厭舊 < literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+把風 < keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 < make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 < find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+胑 < the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 < an\-ancient\-device\-for\-working\-with\-numbers;
+梆子腔 < a\-general\-term\-for\-local\-operas\-in\-shangxi;
+滝 < onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+栽贓 < to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 < give\-something\-and\-get\-something\-in\-return;
+拍案叫絕 < lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+偽書 < \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+梅蘭芳 < name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+簿冊 < books\-for\-taking\-notes\-or\-keeping\-accounts;
+䳵 < a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 < a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 < horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 < to\-wait\-for\-something\-tohappen\-immediately;
+䣤 < name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 < name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 < name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 < sound\-of\-carts\-or\-stones\-knocking\-together;
+䠀 < to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 < name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 < to\-speak\-recklessly\-or\-without\-forethought;
+䓥 < sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 < the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 < to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 < container\-for\-grains\-used\-in\-ancient\-times;
+上車 < to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+䇯 < a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+行政院 < executive\-yuan\-\(government\-body\-in\-taiwan\);
+㼱 < to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 < even\-measuring\-board\-for\-pecks\-and\-bushels;
+筆下 < the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 < an\-informal\-letter\-sent\-by\-an\-organization;
+㨐 < to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 < a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+首席 < chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 < son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+杰佛茲 < \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+處於 < be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+風土人情 < local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 < \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+羅布泊 < lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 < dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+敗筆 < a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+珈 < an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 < marine\-monster\-which\-can\-change\-its\-shape;
+斛 < dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 < district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 < the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 < to\-sort\-out\-the\-stalks\-used\-in\-divination;
+出路 < a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+約定資訊速率 < committed\-inforrmation\-rate\-\(frame\-relay\);
+白花蛇 < long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+中共中央 < chinese\-communist\-party\-central\-committee;
+博聞強記 < have\-wide\-learning\-and\-a\-retentive\-memory;
+度日 < scratch\-out\-a\-difficult\,\-meager\-existence;
+眾議員 < member\-of\-the\-us\-house\-of\-representatives;
+韍 < a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+報案 < report\-a\-case\-to\-the\-security\-authorities;
+鏞 < a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 < a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+兵源 < manpower\-resources\-\(for\-military\-service\);
+虋 < asparagus\-a\-variety\-of\-red\-stalked\-millet;
+百年大計 < a\-project\-of\-vital\-and\-lasting\-importance;
+邁科裡 < \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+拔苗助長 < spoil\-things\-through\-excessive\-enthusiasm;
+報告會 < public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 < \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+肯普索恩 < \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+廞 < to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 < a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 < wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 < sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+外孫女兒 < granddaughter\-\(daughter\-of\-one''s\-daugher\);
+有電 < \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+百折不撓 < keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+神女峰 < name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+丂 < obstruction\-of\-breath\-as\-it\-seeks\-release;
+賁臨 < \(of\-distinguished\-guests\)\-honour\-my\-house;
+䰿 < a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+安身立命 < settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+䢿 < name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 < the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 < scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 < a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 < soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 < silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 < grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 < show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 < to\-steady\-by\-putting\-something\-underneath;
+㻲 < a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+逆向擁塞通知 < backward\-explicit\-congestion\-notification;
+經營管理和維護 < operations\-administration\-and\-maintenance;
+㪪 < to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 < wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 < a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 < concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+白曉燕 < pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+不經一事不長一智 < you\-can''t\-gain\-knowledge\-without\-practice;
+松下 < matsushita\-\(japanese\-electronics\-company\);
+不妙 < \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+踣 < to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 < embroidered\-official\-or\-sacrificial\-robe;
+峄 < a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+勉強 < manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 < have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+不可一世 < consider\-oneself\-unexcelled\-in\-the\-world;
+金日成 < kim\-il\-sung\-\(former\-north\-korean\-leader\);
+公約 < convention\-\(ie\,\-international\-agreement\);
+闗 < a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 < a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+太極劍 < a\-kind\-of\-traditional\-chinese\-sword\-play;
+年度 < year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+絕對數字 < absolute\-\(as\-opposed\-to\-relative\)\-number;
+薩 < transliteration\-of\-''sat''\-in\-''bodhisattva;
+筆順 < order\-of\-strokes\-observed\-in\-calligraphy;
+膰 < to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+扎針 < to\-give\-or\-have\-an\-acupuncture\-treatment;
+司法部 < justice\-deparment\-\(of\-the\-us\-government\);
+瑌 < a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 < land\-impregnated\-with\-salt\-from\-the\-tide;
+製劑 < \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 < know\-\(through\-learning\-or\-by\-experience\);
+偽托 < faking\-a\-modern\-object\-as\-an\-ancient\-one;
+庫納南 < \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+海關 < customs\-\(ie\,\-border\-crossing\-inspection\);
+抱頭鼠竄 < cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+黃建南 < john\-huang\-\(democratic\-party\-fundraiser\);
+䵞 < ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 < a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 < use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 < to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 < decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 < to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 < the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 < a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 < lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 < ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 < decorations\-put\-on\-the\-mane\-or\-horsehair;
+䈕 < the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 < a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 < to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 < damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 < a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 < decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 < a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 < eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 < one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 < a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 < to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 < to\-get\-something\-with\-both\-raising\-hands;
+㧚 < the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 < to\-cover\-something\-with\-a\-piece\-of\-cloth;
+百廢俱興 < all\-neglected\-tasks\-are\-being\-undertaken;
+㡋 < a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 < the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 < a\-local\-government\-post\-in\-ancient\-times;
+㙟 < low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+避實就虛 < stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 < not\-seek\-to\-understand\-things\-thoroughly;
+碑記 < a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+中央全會 < plenary\-session\-of\-the\-central\-committee;
+包辦 < take\-care\-of\-everything\-concerning\-a\-job;
+古杰拉爾 < \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+黃岩島 < huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 < official\-\(government\-operated\)\-newspaper;
+前向擁塞通知 < forward\-explicit\-congestion\-notification;
+出面 < act\-in\-a\-\(official\-or\-personal\)\-capacity;
+喏 < respectful\-reply\-of\-assent\-to\-superiors;
+笏 < tablet\-held\-by\-someone\-having\-authority;
+趼 < callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+相隔 < be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+美國廣播公司 < abc\-\(american\-broadcasting\-corporation\);
+時報 < \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 < connected\-by\-air\|sea\-traffic\-or\-service;
+核武器研製計劃 < nuclear\-weapons\-\(manufacturing\)\-program;
+冷淡關係 < cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 < settle\-a\-matter\-by\-leaving\-it\-unsettled;
+遷居 < to\-move\-\(from\-one\-residence\-to\-another\);
+饝 < to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+不即不離 < be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 < \(military\)\-general\-political\-department;
+哈裡森史密特 < harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+入學率 < percentage\-of\-children\-who\-enter\-school;
+裍 < a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+年代 < a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+畢其功于一役 < accomplish\-the\-whole\-task\-at\-one\-stroke;
+半路出家 < switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+籪 < a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 < spasms\-or\-convulsions\-in\-young\-children;
+瑲 < tinkling\-sound\-tinkling\-of\-pendant\-gems;
+病毒學家 < virologist\-\(person\-who\-studies\-viruses\);
+建立正式外交關係 < formally\-establish\-diplomatic\-relations;
+茅臺酒 < maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+結社自由 < \(constitutional\)\-freedom\-of\-association;
+弝 < the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+喬石 < qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 < \(straight\-down\-hooked\-character\-stroke\);
+䥜 < protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+成本 < \(manufacturing\,\-production\,\-etc\.\)\-costs;
+䙖 < a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+王羲之 < name\-of\-a\-person\,\-a\-famous\-calligrapher;
+䏫 < in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 < traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 < fine\-silk\-fabric\-of\-bright\-white\-colour;
+邊角科 < leftover\-bits\-and\-pieces\-\(of\-industrial;
+䋿 < a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 < a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 < a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+代理 < acting\-\(temporarily\-filling\-a\-position\);
+㿹 < jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 < earthenware\-or\-pottery\-with\-big\-opening;
+㵻 < to\-perspire\-from\-embarrassment\-or\-shame;
+蔓延全國 < to\-spread\-throughout\-the\-entire\-country;
+㭩 < a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 < to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 < to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+客廳 < drawing\-room\-\(room\-for\-arriving\-guests\);
+㘊 < the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 < an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 < a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+蓮霧 < wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 < to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+百思不解 < remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 < one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 < \(military\)\-general\-logistics\-department;
+一國兩制 < one\-country\,\-two\-systems\-\(china\-taiwan\);
+擺事實講道理 < present\-the\-facts\-and\-reason\-things\-out;
+老二 < the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 < \(abbreviation\-for\)\-china\-\-\-south\-africa;
+阿昌族 < the\-achang\-nationality\-living\-in\-yunnan;
+版次 < the\-order\-in\-which\-editions\-are\-printed;
+啧 < interjection\-of\-approval\-or\-admiration;
+捺 < to\-press\-down\-heavily\-with\-the\-fingers;
+傣 < the\-dai\-minority\-living\-in\-south\-china;
+鸩 < a\-bird\-resembling\-the\-secretary\-falcon;
+淝 < name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 < to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 < a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 < a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 < type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 < cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 < the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 < a\-fragrant\-plant\-the\-root\-is\-medicinal;
+白頭諧老 < live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+受傷 < suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 < agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 < the\-traditional\-chinese\-lunar\-calendar;
+成千上萬 < by\-the\-thousands\-and\-tens\-of\-thousands;
+師範 < normal\-\(eg\,\-beijing\-normal\-university\);
+佩洛西 < \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+驆 < used\-in\-transliterating\-buddhist\-books;
+駏 < offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+廣場 < a\-public\-square\-\(eg\,\-tiananmen\-square\);
+鉌 < the\-bells\-on\-the\-cart\-in\-ancient\-china;
+補票 < buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 < have\-a\-high\-temperature\-\(from\-illness\);
+詧 < to\-examine\-into\-judicially\-to\-find\-out;
+綳 < a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 < the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 < triennial\-sacrifice\-to\-one''s\-ancestors;
+盆地 < basin\-\(low\-lying\-geographical\-feature\);
+磻 < a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+手跡 < sb\.''s\-original\-handwriting\-or\-painting;
+璧還 < return\-\(a\-borrowed\-object\)\-with\-thanks;
+不宣而戰 < open\-hostilities\-without\-declaring\-war;
+國際電信聯盟 < international\-telecommunications\-union;
+不遠千里 < make\-light\-of\-travelling\-a\-thousand\-li;
+斴 < the\-sound\-of\-water\-flowing\-among\-rocks;
+安居樂業 < live\-and\-work\-in\-peace\-and\-contentment;
+表妹 < female\-cousin\-with\-a\-different\-surname;
+崑 < kunlun\-mountains\-in\-jiang\-su\-province\.;
+拆散 < to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+吐魯番 < the\-turfan\-basin\,\-in\-xinjiang\-province;
+備品 < machine\-parts\-or\-tools\-kept\-in\-reserve;
+䰘 < to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 < white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 < ancient\-punishment\-of\-shaving\-the\-head;
+䩸 < fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 < a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 < a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 < cooking\-utensils\-used\-in\-ancient\-times;
+䢇 < a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 < to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 < to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 < short\-leggings\-drawn\-over\-the\-trousers;
+䖿 < a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 < a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 < weed\-or\-grass\-with\-narrow\-thick\-glades;
+半脫產 < partly\-released\-from\-productive\-labour;
+䍻 < young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 < a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 < a\-garment\-of\-one\-colour\-with\-no\-lining;
+不可同日而語 < cannot\-be\-mentioned\-in\-the\-same\-breath;
+䄪 < hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 < year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 < connection\-of\-the\-ditches\-or\-waterways;
+㼮 < to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 < the\-first\-of\-the\-four\-season\-\-\-\-spring;
+㤝 < palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 < a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 < a\-large\-basket\-for\-holding\-cooked\-rice;
+首任 < first\-person\-to\-be\-appointed\-to\-a\-post;
+總書記 < general\-secretary\-\(of\-communist\-party\);
+部長 < head\-of\-a\-\(government\,\-etc\)\-department;
+比量 < take\-rough\-measurements\-\(with\-the\-hand;
+遍體鱗傷 < covered\-all\-over\-with\-cuts\-and\-bruises;
+笙 < small\-gourd\-shaped\-musical\-instrument;
+滕 < an\-ancient\-state\-in\-shandong\-province;
+镛 < large\-bell\-used\-as\-musical\-instrument;
+讵 < an\-interjection\-used\-express\-surprise;
+泔 < water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 < to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 < beams\-in\-the\-roof\-of\-a\-house\-confused;
+教授畢竟是教授 < professors\-are\-\(after\-all\)\-professors;
+百足之蟲死而不僵 < a\-centipede\-dies\-but\-never\-falls\-down;
+博愛 < universal\-fraternity\-\(or\-brotherhood\);
+敗火 < relieve\-inflammation\-or\-internal\-heat;
+經營 < engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 < integrated\-\(as\-in\-integrated\-circuit\);
+麅 < a\-small\-spotted\-deer\-found\-in\-n\.china;
+內懮外患 < domestic\-strife\-and\-foreign\-agression;
+安全與交換委員會 < securities\-and\-exchange\-communication;
+政委 < political\-commissar\-\(within\-the\-army\);
+沈國放 < chinese\-foreign\-ministry\-spokesperson;
+編導 < write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 < \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 < \(military\)\-branch\-of\-the\-armed\-forces;
+阼 < the\-steps\-leading\-to\-the\-eastern\-door;
+逼宮 < force\-the\-king\-or\-emperor\-to\-abdicate;
+輗 < a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+航行 < sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+詎 < interjection\-used\-to\-express\-surprise;
+缌 < coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 < the\-sound\-of\-stones\-knocking\-together;
+相信 < be\-convinced\-\(that\-something\-is\-true\);
+犉 < an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+拔秧 < pull\-up\-seedlings\-\(for\-transplanting\);
+煝 < twisted\-paper\-for\-lighting\-cigarettes;
+手裡 < \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 < fish\-for\-\(aquatic\-animals\-and\-plants\);
+穆桂英 < mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+簽名 < to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 < ji''nan\-\(capital\-of\-shandong\-province\);
+帬 < the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 < a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+虛擬通道標誌符 < virtual\-channel\-connection\-identifier;
+屏條 < set\-of\-\(usually\-four\)\-hanging\-scrolls;
+孫女兒 < granddaughter\-\(daughter\-of\-one''s\-son\);
+究竟 < after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 < zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+䱗 < a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 < a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 < a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 < to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 < an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 < the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 < the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 < to\-speak\-on\-the\-ideas\-of\-someone\-else;
+治病救人 < cure\-the\-sickness\-to\-save\-the\-patient;
+䖠 < a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 < the\-fighting\-sound\-made\-by\-two\-tigers;
+有志者事竟成 < where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+䎒 < flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 < decorations\-of\-the\-emperor''s\-carriage;
+䀛 < to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 < a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 < a\-large\-horizontal\-musical\-instrument;
+㺪 < an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 < endlessly\-long\-or\-vast\-water\-currents;
+㴩 < name\-of\-a\-stream\-in\-shandong\-province;
+㯘 < a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 < never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 < a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 < ancient\-mourning\-turban\-worn\-by\-women;
+㠑 < high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 < name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 < irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 < name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 < wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 < able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 < the\-character\-used\-in\-transliteration;
+㒿 < a\-kind\-of\-turban\-used\-in\-ancient\-time;
+主科 < required\-courses\-in\-the\-major\-subject;
+尚慕杰 < james\-sasser\-\(us\-ambassador\-to\-china\);
+哀鴻遍野 < a\-land\-swarming\-with\-disaster\-victims;
+病從口入 < illness\-finds\-its\-way\-in\-by\-the\-mouth;
+班底 < ordinary\-members\-of\-theatrical\-troupe;
+金缽 < \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+塞爾南 < \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+聯名 < jointly\-\(signed\,\-declared\,\-sponsored\);
+總參謀部 < \(military\)\-general\-staff\-headquarters;
+下榻 < stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+年畫兒 < new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 < \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+聯邦調查局 < fbi\-\(federal\-bureau\-of\-investigation\);
+胡志明 < ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+記述 < make\-a\-descriptive\-record\-\(of\-events\);
+撥絃樂器 < plucked\-string\-or\-stringed\-instrument;
+弁 < conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 < tenth\-of\-the\-twelve\-earthly\-branches;
+旌 < banner\-or\-flag\-adorned\-with\-feathers;
+衮 < ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 < river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 < food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 < to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 < species\-of\-deer\-found\-in\-north\-china;
+绂 < ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 < the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 < ipomoea\-aquatica\-used\-as\-a\-vegetable;
+暗傷 < internal\-\(invisible\)\-injury\-\(damage\);
+檔案轉送存取及管理 < file\-transfer\,\-access\-and\-management;
+太湖 < tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 < \(horizontal\-hooked\-character\-stroke\);
+北宋 < the\-northern\-song\-dynasty\-\(960\-1127\);
+齈 < cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 < impure\-carbonate\-of\-sodium\-of\-natron;
+鄉下 < country\-\(as\-opposed\-to\-town\-or\-city\);
+鶢 < a\-bird\-which\-frequents\-the\-sea\-shore;
+別具一格 < having\-a\-unique\-or\-distinctive\-style;
+簽訂 < to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+郪 < name\-of\-a\-stream\-in\-sichuan\-province;
+徐悲鴻 < name\-of\-a\-famous\-painter\,\-xu\-beihong;
+轞 < a\-vehicle\-for\-transporting\-prisoners;
+輹 < two\-pieces\-of\-wood\-underneath\-a\-cart;
+讀賣新聞 < yomiuri\-shimbun\-\(japanese\-newspaper\);
+增值 < appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+一九四九年 < the\-year\-1949\-\(communist\-revolution\);
+芿 < grass\-which\-has\-been\-cut\-and\-regrown;
+胬 < a\-disease''s\-name\-in\-chinese\-medicine;
+禊 < semi\-annual\-ceremony\-of\-purification;
+兵家 < military\-strategist\-in\-ancient\-china;
+英尺 < \(english\)\-foot\-\(unit\-of\-measurement\);
+國際標準組織 < international\-standards\-organization;
+才疏學淺 < have\-little\-talent\-and\-less\-learning;
+淪陷 < \(territory\)\-fall\-to\-enemy\-occupation;
+戥 < a\-small\-steelyard\-for\-weighing\-money;
+花木蘭 < hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 < not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+世界性古老問題 < a\-problem\-as\-old\-as\-the\-world\-itself;
+避坑落井 < dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+寍 < used\-as\-a\-term\-of\-comparison\:\-rather;
+人選 < person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+發了言 < \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+咗 < verbal\-particle\-of\-perfective\-aspect;
+變溫動物 < poikilothermal\-\(cold\-blooded\)\-animal;
+會長 < president\-of\-a\-club\,\-committee\,\-etc\.;
+丱 < child''s\-hairstyle\-bound\-in\-two\-tufts;
+不自量 < not\-take\-a\-proper\-measure\-of\-oneself;
+䮤 < one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 < name\-of\-a\-legendary\-ferocious\-animal;
+䪔 < cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 < name\-of\-a\-river\-in\-shandong\-province;
+䤌 < a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 < the\-appearance\-of\-height\-in\-a\-person;
+䠅 < hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 < a\-primitive\-tribe\-in\-southwest\-china;
+䝟 < a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 < an\-exclamation\-indicating\-admiration;
+䛓 < an\-official\-position\-in\-former\-times;
+䚘 < the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 < earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 < name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 < name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 < to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 < to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 < unable\-to\-hear\-distinctly\-or\-clearly;
+寫成 < to\-compile\-\(fashion\-through\-writing\);
+䊠 < to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 < a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 < a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 < a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+吞金 < to\-commit\-suicide\-by\-swallowing\-gold;
+䄫 < a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 < sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 < black\-colored\-grindstone\-or\-whestone;
+䃎 < name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂹 < sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 < to\-look\-at\-something\-without\-winking;
+䁵 < newborn\-baby\-with\-the\-eyelids\-closed;
+板眼 < measure\-in\-traditional\-chinese\-music;
+㽅 < vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 < cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 < not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 < a\-fountain\-or\-spring\-flows\-downwards;
+㮯 < whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 < a\-blocks\-engraved\-for\-holding\-things;
+㟼 < name\-of\-a\-place\-in\-shandong\-province;
+首府 < capital\-city\-of\-an\-autonomous\-region;
+㞔 < the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 < pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 < name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 < the\-long\-tail\-feathers\-which\-curl\-up;
+班次 < order\-of\-classes\-or\-grades\-at\-school;
+抄後路 < to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 < annalistic\-style\-\(in\-historiography\);
+家鄉雞 < ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 < john\-chang\-\(taiwan\-foreign\-minister\);
+貴州 < name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 < \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 < attract\-\(interest\,\-investment\,\-etc\.\);
+來不及 < there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+暗娼 < unlicensed\-\(unregistered\)\-prostitute;
+非對稱式數據用戶線 < asymmetrical\-digital\-subscriber\-line;
+霸王 < xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 < birthday\-present\-\(for\-an\-old\-person\);
+阮 < ancient\-musical\-instrument\:\-surname;
+喔 < descriptive\-of\-crying\-or\-of\-crowing;
+琏 < vessel\-used\-to\-hold\-grain\-offerings;
+邕 < former\-or\-literary\-name\-for\-nanning;
+魑 < a\-mountain\-demon\-resembling\-a\-tiger;
+昶 < a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 < a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 < a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 < lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 < to\-sacrifice\-on\-two\-successive\-days;
+邗 < an\-ancient\-place\-in\-the\-state\-of\-wu;
+萬縣 < wanxian\-county\,\-in\-sichuan\-province;
+死不了 < portulaca\-sundial\-\(a\-type\-of\-plant\);
+大中學生 < university\-and\-high\-school\-students;
+迎春花 < winter\-jasmine\,\-jasminum\-nudiflorum;
+約翰內斯堡 < johannesburg\-\(city\-in\-south\-africa\);
+主人翁 < master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+分佈式環境 < distributed\-\(computing\)\-environment;
+兵部 < the\-ministry\-of\-war\-in\-feudal\-china;
+北周 < the\-northern\-zhou\-dynasty\-\(557\-581\);
+安分守己 < abide\-by\-the\-law\-and\-behave\-oneself;
+北京 < beijing\-\(capital\-of\-mainland\-china\);
+大顯身手 < fully\-displaying\-one''s\-capabilities;
+電信服務供應商 < telecommunications\-service\-provider;
+哈密瓜 < hami\-melon\-\(a\-variety\-of\-muskmelon\);
+鐤 < huge\-tripod\-of\-bronze\-with\-two\-ears;
+貿易額 < volume\-of\-trade\-\(between\-countries\);
+草案 < draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 < dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+觭 < one\-turning\-up\-and\-one\-turning\-down;
+補白 < filler\-\(in\-a\-newspaper\-or\-magazine\);
+褱 < to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+波瀾壯闊 < surging\-forward\-with\-great\-momentum;
+舉行 < to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+回歸中國 < to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+艜 < a\-long\-narrow\-vessel\-with\-two\-masts;
+總動員 < general\-mobilization\-\(for\-war\,\-etc\);
+臿 < to\-separate\-the\-grain\-from\-the\-husk;
+絰 < white\-hempen\-cloth\-worn\-by\-mourners;
+保送 < recommend\-\(for\-admission\-to\-school\);
+愛莫能助 < willing\-to\-help\-but\-unable\-to\-do\-so;
+碪 < stone\-slab\-used\-for\-washing\-clothes;
+轉帳 < transfer\-money\-from\|into\-an\-account;
+席位 < parliamentary\-or\-congressional\-seat;
+盇 < why\-not\?\-would\-it\-not\-be\-better\-to\?;
+布什 < \(george\)\-bush\-\(former\-us\-president\);
+崩龍族 < the\-benglong\-\(penglung\)\-nationality;
+滫 < water\-in\-which\-rice\-has\-been\-boiled;
+非政府組織 < non\-governmental\-organization\-\(ngo\);
+審訊 < a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+檑 < logs\-rolled\-down\-in\-defense\-of\-city;
+棳 < small\-pillars\-that\-support\-the\-roof;
+帗 < a\-multicolored\-prop\-used\-in\-dancing;
+綜合服務數位網絡 < integrated\-services\-digital\-network;
+嘠 < the\-chirping\-of\-birds\-loud\-laughter;
+筆桿 < the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 < degree\-of\-seriousness\-of\-an\-illness;
+唄 < final\-particle\-of\-assertion\-pathaka;
+倻 < phonetic\-used\-in\-korean\-place\-names;
+䵺 < boundary\-between\-agricultural\-lands;
+䵹 < insects\-that\-are\-injurious\-to\-crops;
+䭍 < to\-live\-with\-another\-at\-his\-expense;
+䬥 < cooked\-food\-which\-has\-become\-mouldy;
+䬙 < to\-dance\-and\-toss\-about\-in\-the\-wind;
+主辦 < host\-\(a\-conference\-or\-sports\-event\);
+䠫 < to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 < a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 < language\-of\-the\-savage\-or\-barbarian;
+䖺 < a\-legendary\-animal\-in\-ancient\-times;
+䒼 < a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 < a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 < to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 < name\-of\-a\-place\-in\-sichuan\-province;
+䍟 < a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 < a\-bamboo\-basket\-for\-food\-containers;
+霸王鞭 < a\-rattle\-stick\-used\-in\-folk\-dancing;
+本草 < a\-book\-on\-chinese\-\(herbal\)\-medicine;
+䆎 < grass\-and\-grains\-producing\-no\-fruit;
+䄻 < a\-second\-time\-growing\-of\-rice\-plant;
+䀚 < to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 < carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 < name\-of\-a\-village\-in\-henan\-province;
+㷈 < embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 < vast\-and\-boundless\-of\-flowing\-water;
+㳕 < water\-in\-which\-rice\-has\-been\-washed;
+㯪 < carved\-or\-patterned\-window\-railings;
+人物 < characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 < speaker\-\(of\-a\-legislative\-assembly\);
+㠙 < a\-mountain\-paths\-name\-of\-a\-mountain;
+調查結果 < results\-\(of\-an\-investigation\,\-poll\);
+㓭 < to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 < a\-kind\-of\-punishment\-in\-han\-dynasty;
+百端待舉 < a\-thousand\-things\-remain\-to\-be\-done;
+安南 < \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 < get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 < \(of\-a\-dwelling\)\-supplied\-with\-water;
+白殭蠶 < the\-larva\-of\-silkworm\-with\-batrytis;
+話題 < subject\-\(of\-a\-talk\-or\-conversation\);
+事務 < \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 < we\-\(including\-the\-person\-spoken\-to\);
+尤金塞爾南 < eugene\-cernan\-\(apollo\-17\-astronaut\);
+率先 < take\-the\-lead\-\(showing\-inititative\);
+目前還不清楚 < at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+秋高氣爽 < clear\-and\-refreshing\-autumn\-weather;
+包租 < rent\-land\-or\-a\-house\-for\-subletting;
+明文 < \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+袱 < a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 < to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 < a\-bamboo\-basket\-for\-carrying\-earth;
+肓 < region\-between\-heart\-and\-diaphragm;
+滦 < river\-and\-county\-in\-hebei\-province;
+郗 < city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 < two\-pieces\-of\-jade\-joined\-together;
+綦 < dark\-grey\.\-variegated\.\-superlative;
+麇 < general\-name\-for\-the\-hornless\-deer;
+璎 < a\-necklace\-made\-of\-precious\-stones;
+掾 < a\-general\-designation\-of\-officials;
+郇 < an\-ancient\-feudal\-state\-in\-shaanxi;
+透視 < to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 < report\-\(an\-incident\)\-to\-the\-police;
+碑帖 < a\-rubbing\-from\-a\-stone\-inscription;
+牛年 < year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+簡單網絡管理協議 < simple\-network\-management\-protocol;
+臨時的本地管理接口 < interim\-local\-management\-interface;
+包廂 < box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 < transfer\-\(technology\,\-goods\,\-etc\.\);
+冰消瓦解 < melt\-like\-ice\-and\-break\-like\-tiles;
+龘 < the\-appearance\-of\-a\-dragon\-walking;
+半斤八兩 < not\-much\-to\-choose\-between\-the\-two;
+鴽 < a\-species\-of\-bird\-resembling\-quail;
+盜版 < pirate\-version\-\(of\-software\,\-e\.g\.\);
+步人後塵 < follow\-in\-other\-people''s\-footsteps;
+鄫 < state\-in\-today''s\-shandong\-province;
+鄇 < a\-name\-of\-a\-town\-in\-henan\-province;
+迿 < to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 < great\-array\-of\-spears\-and\-chariots;
+輠 < grease\-pot\-hung\-under\-axle\-of\-cart;
+龍飛鳳舞 < lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+緣份 < fate\-\(which\-brings\-people\-together;
+平壤 < pyongyang\-\(capital\-of\-north\-korea\);
+國際見聞 < international\-background\-knowledge;
+擔任 < hold\-a\-governmental\-office\-or\-post;
+膲 < the\-three\-divisions\-of\-the\-viscera;
+克服 < \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 < to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+不失為 < can\-still\-be\-considered\-\(to\-be\.\.\.\);
+紖 < a\-rope\-for\-leading\-cattle\-or\-horse;
+最惠國 < most\-favored\-nation\-\(trade\-status\);
+笮 < boards\-which\-support\-tiles\-on\-roof;
+案驗 < investigate\-the\-evidence\-of\-a\-case;
+托運 < to\-book\-or\-check\-through\-\(baggage\);
+砅 < cross\-stream\-by\-stepping\-on\-stones;
+國務委員 < member\-of\-state\-council\-\(in\-china\);
+戶部 < feudal\-chinese\-ministry\-of\-revenue;
+璉 < a\-vessel\-used\-hold\-grain\-offerings;
+梡 < tray\-for\-carrying\-sacrificial\-meat;
+可移植性 < portability\-\(programming\-language\);
+推動 < to\-push\-\(for\-acceptance\-of\-a\-plan\);
+幵 < even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 < an\-ancient\-emperor''s\-mother''s\-name;
+整體數位服務網路 < integrated\-service\-digital\-network;
+囷 < round\-shaped\-storage\-bin\-for\-grain;
+亞軍 < second\-place\-\(in\-a\-sports\-contest\);
+呼和浩特 < hohhot\-\(capital\-of\-inner\-mongolia\);
+基金會 < a\-foundation\-\(ie\,\-an\-organization\);
+䴙 < a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 < a\-carp\-like\-fish\-with\-chicken\-feet;
+顏體 < yan\-style\-\(in\-chinese\-calligraphy\);
+久違 < \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+䩗 < to\-rule\-by\-might\-rather\-than\-right;
+䢕 < a\-group\-of\-people\-walking\-together;
+䚡 < bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 < plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 < to\-dismember\-body\-of\-the\-livestock;
+䎎 < to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 < clay\-made\-blowing\-wind\-instruments;
+䈿 < belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 < a\-bamboo\-mat\-used\-in\-ancient\-times;
+小題大做 < make\-a\-big\-fuss\-over\-a\-minor\-issue;
+䅚 < closely\-growing\-of\-the\-rice\-plants;
+䄶 < rice\-plant\-growing\-the\-second\-time;
+䁾 < red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 < to\-open\-the\-eyes\-with\-astonishment;
+㽛 < narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 < dogs\-wormed\-through\-a\-narrow\-place;
+㹢 < a\-large\-ape\-found\-in\-western\-china;
+㹜 < two\-dogs\-are\-barking\-to\-each\-other;
+㹉 < a\-legendary\-animal\-with\-three\-feet;
+㶀 < deep\-and\-vast\-of\-the\-flowing\-water;
+打錯了 < \"you\-have\-dialed\-the\-wrong\-number\";
+㰶 < to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 < a\-wooden\-frame\-for\-carrying\-things;
+病包兒 < a\-person\-who\-is\-always\-falling\-ill;
+㡡 < screen\-to\-make\-a\-temporary\-kitchen;
+㠿 < a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 < nice\-white\-color\-and\-looks\-so\-good;
+㜵 < with\-a\-charming\-sprightly\-carriage;
+㙈 < name\-of\-a\-place\-in\-shanxi\-province;
+香山 < fragrance\-hill\-\(a\-park\-in\-beijing\);
+㖡 < the\-birds\-singing\-during\-the\-night;
+㕺 < looks\-big\-outside\-but\-empty\-inside;
+㕄 < to\-apply\-knowledge\-to\-final\-causes;
+不虛此行 < the\-trip\-has\-not\-been\-made\-in\-vain;
+銷毀 < to\-destroy\-\(by\-melting\-or\-burning\);
+拉莫斯 < \(philippine\-president\-fidel\)\-ramos;
+比勒陀利亞 < pretoria\-\(capital\-of\-south\-africa\);
+北魏 < the\-northern\-wei\-dynasty\-\(386\-534\);
+言論自由 < \(constitutional\)\-freedom\-of\-speech;
+暴病 < sudden\-attack\-of\-a\-serious\-illness;
+人大 < \(china\)\-national\-people''s\-congress;
+熱鬧 < bustling\-with\-noise\-and\-excitement;
+呈文 < petition\-\(submitted\-to\-a\-superior\);
+春節 < spring\-festival\-\(chinese\-new\-year\);
+開發環境 < development\-environment\-\(computer\);
+不識時務 < show\-no\-understanding\-of\-the\-times;
+𠼻 < a\-particle\-used\-in\-transliteration;
+胡志強 < jason\-hu\-\(taiwan\-foreign\-minister\);
+新疆 < xinjiang\-\(uygur\-autonomous\-region\);
+幫倒忙 < be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 < club\-\(ie\,\-a\-group\-or\-organization\);
+社 < god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 < large\-stringed\-musical\-instrument;
+楞 < used\-for\-ceylon\-in\-buddhist\-texts;
+喽 < used\-in\-onomatopoetic\-expressions;
+嚅 < talk\-indistinctly\-and\-falteringly;
+裱 < to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 < a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 < a\-fabulous\-creature\-like\-a\-turtle;
+碡 < stone\-roller\-used\-to\-level\-fields;
+鄣 < name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 < grain\-offered\-in\-ritual\-sacrifice;
+簦 < large\-umbrella\-with\-a\-long\-handle;
+螓 < a\-small\-cicada\-with\-a\-square\-head;
+不時之需 < a\-possible\-period\-of\-want\-or\-need;
+公共交換電話網路 < public\-switched\-telephone\-network;
+網絡 < \(computer\,\-telecom\,\-etc\.\)\-network;
+以牙還牙 < a\-tooth\-for\-a\-tooth\-\(retaliation\);
+壁毯 < tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 < rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 < maintain\-\(that\-something\-is\-true\);
+百戰百勝 < emerge\-victorious\-in\-every\-battle;
+魊 < a\-mythical\-creature\-said\-hurl\-san;
+分歧 < difference\-\(of\-opinion\,\-position\);
+勞動節 < international\-labor\-day\-\(may\-day\);
+韐 < knee\-pad\-made\-of\-red\-dyed\-leather;
+連戰 < lien\-chan\-\(taiwan\-vice\-president\);
+抱粗腿 < latch\-on\-to\-the\-rich\-and\-powerful;
+制度 < \(political\)\-system\-or\-institution;
+補習 < take\-lessons\-after\-school\-or\-work;
+由此可見 < from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+聯邦電信交通委員會 < federal\-communications\-commission;
+建交 < to\-establish\-diplomatic\-relations;
+軏 < cross\-bar\-at\-end\-of\-poles\-of\-cart;
+火災 < fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 < \(of\-a\-teacher\)\-to\-prepare\-lessons;
+金正日 < kim\-jong\-il\-\(north\-korean\-leader\);
+開演 < \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 < prepare\-against\-natural\-disasters;
+薀 < the\-hippuris\-or\-mare''s\-tail\-plant;
+不摸頭 < not\-acquainted\-with\-the\-situation;
+全會 < plenary\-session\-\(at\-a\-conference\);
+魏京生 < wei\-jingsheng\-\(chinese\-dissident\);
+聝 < to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 < to\-hoe\-up\-the\-earth\-around\-plants;
+便難 < retort\-with\-challenging\-questions;
+答辯 < to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+簫 < musical\-instrument\-like\-pan\-pipes;
+簨 < a\-beam\-for\-hanging\-bells\-or\-drums;
+礳 < name\-of\-place\-in\-shan\-xi\-province;
+寸草不生 < \"not\-even\-a\-blade\-of\-grass\-grows\";
+碫 < coarse\-stone\-\(used\-for\-whetstone\);
+璯 < jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 < a\-jade\-tube\-used\-as\-an\-instrument;
+玁 < a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+圖書 < books\-\(in\-a\-library\-or\-bookstore\);
+家長 < the\-parent\-or\-guardian\-of\-a\-child;
+回歸 < to\-return\-\(to\-previous\-condition\);
+擦亮眼睛 < remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 < remedy\-defects\-and\-rectify\-errors;
+棟 < the\-main\-beams\-supporting\-a\-house;
+骨法 < bone\-\(property\-of\-a\-brush\-stroke\);
+百川歸海 < all\-things\-tends\-in\-one\-direction;
+誓不反悔 < to\-vow\-not\-to\-break\-one''s\-promise;
+吃不上 < be\-unable\-to\-get\-something\-to\-eat;
+戠 < a\-sword\.\-potter''s\-clay\.\-to\-gather;
+科學編輯 < science\-editor\-\(of\-a\-publication\);
+昂首闊步 < stride\-forward\-with\-one''s\-chin\-up;
+日經指數 < nikkei\-index\-\(of\-japanese\-stocks\);
+科隆 < cologne\,\-germany\-or\-colon\,\-panama;
+打消 < dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+呭 < final\-particle\-expressing\-consent;
+呡 < the\-corners\-of\-the\-mouth\-the\-lips;
+疾病預防中心 < \(u\.s\.\)\-center\-for\-disease\-control;
+䶬 < hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 < a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 < general\-term\-for\-small\-bird\-group;
+䬗 < blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 < name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 < cooking\-utensil\-used\-in\-old\-times;
+䥬 < a\-musical\-instrument\-in\-old\-times;
+䣜 < name\-of\-a\-county\-in\-ancient\-times;
+䣌 < residence\-of\-a\-prince\-or\-nobility;
+䡝 < a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 < the\-protruded\-sides\-of\-a\-carriage;
+䠚 < to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 < the\-water\-is\-waving\-in\-the\-breeze;
+䒧 < a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 < a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 < back\-center\-suture\-of\-the\-clothes;
+䋛 < the\-clustered\-embroidery\-patterns;
+䊖 < to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 < to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 < rocks\-clustered\-pile\-up\-togethers;
+䀿 < to\-have\-a\-casual\-and\-short\-glance;
+找到 < find\-\(what\-one\-was\-searching\-for\);
+召開 < convene\-\(a\-conference\-or\-meeting\);
+㹗 < cattle\-and\-sheep\-have\-no\-children;
+㶲 < measuring\-unit\-for\-thermodynamics;
+㵺 < name\-of\-a\-stream\-in\-ancient\-times;
+㵐 < name\-of\-a\-river\-in\-hubei\-province;
+㵋 < name\-of\-a\-river\-in\-hunan\-province;
+㱒 < to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 < a\-place\-in\-today''s\-hunan\-province;
+㬈 < the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 < infested\-with\-bandits\-and\-robbers;
+㨘 < to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 < name\-of\-a\-mountain\-in\-county\-jian;
+㟸 < name\-of\-pavilion\-in\-ancient\-china;
+㟂 < name\-of\-cape\-in\-shandong\-province;
+呼籲 < call\-on\-\(someone\-to\-do\-something\);
+㚪 < to\-make\-a\-deceptive\-show\-of\-power;
+電腦輔助設計與繪圖 < computer\-aided\-design\-and\-drawing;
+㒍 < utterly\-weary\-in\-body\-and\-spirits;
+㐌 < a\-tribe\-of\-savages\-in\-south\-china;
+科爾 < \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 < ramadan\-\(muslim\-month\-of\-fasting\);
+得寸進尺 < literal\:\-get\-an\-inch\,\-want\-a\-foot;
+起來 < beginning\-or\-continuing\-an\-action;
+北齊 < the\-northern\-qi\-dynasty\-\(550\-557\);
+北洋軍閥 < the\-northern\-warlords\-\(1912\-1927\);
+吐穗 < to\-have\-the\-ears\-of\-grain\-come\-up;
+大惑不解 < do\-not\-understand\-a\-certain\-thing;
+請願 < petition\-\(for\-action\-to\-be\-taken\);
+半日制學校 < half\-day\-\(or\-double\-shift\-school\);
+明文規定 < expressly\-stipulated\-\(in\-writing\);
+享受 < to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+大庭廣眾 < public\-place\-with\-numerous\-people;
+百無一失 < no\-danger\-of\-anything\-going\-wrong;
+三峽 < the\-three\-changjiang\-river\-gorges;
+取暖 < to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+人權觀察 < human\-rights\-watch\-\(organization\);
+院長 < president\-\(of\-a\-university\,\-etc\.\);
+檢察官 < the\-prosecution\-\(in\-a\-court\-case\);
+備而不用 < have\-something\-ready\-just\-in\-case;
+言論 < expression\-of\-\(political\)\-opinion;
+應用程式介面 < application\-programming\-interface;
+捻 < to\-twist\-or\-nip\-with\-the\-fingers;
+戌 < eleventh\-of\-terrestrial\-branches;
+搓 < to\-rub\-or\-roll\-between\-the\-hands;
+尧 < a\-legendary\-ancient\-emperor\-sage;
+婶 < wife\-of\-father''s\-younger\-brother;
+掬 < to\-grasp\-or\-hold\-with\-both\-hands;
+幛 < scroll\-of\-silk\-or\-cloth\-presente;
+棂 < carved\-or\-patterned\-window\-sills;
+氲 < life\-giving\-influences\-of\-nature;
+蚝 < hairy\-and\-poisonous\-caterpillars;
+澧 < river\-in\-northern\-hunan\-province;
+筮 < divination\-with\-stalks\-of\-plants;
+笪 < a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 < fried\-round\-cakes\-of\-wheat\-flour;
+箐 < to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 < a\-door\-bar\-placed\-outside\-a\-door;
+仉 < surname\-of\-the\-mother\-of\-mencius;
+節外生枝 < new\-problems\-complicate\-an\-issue;
+鼻青臉腫 < a\-bloody\-nose\-and\-a\-swollen\-face;
+政界 < political\-and\-government\-circles;
+性別 < distinguishing\-between\-the\-sexes;
+違禁 < to\-violate\-a\-prohibtition\-or\-ban;
+酬和 < to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 < enter\-oneself\-for\-an\-examination;
+北國 < the\-northern\-part\-of\-the\-country;
+企業管理 < business\-management\-\(as\-a\-study\);
+外孫 < grandson\-\(son\-of\-one''s\-daughter\);
+光纖分佈式數據介面 < fiber\-distributed\-data\-interface;
+垃圾車 < garbage\-truck\-\(or\-other\-vehicle\);
+大國 < a\-power\-\(ie\,\-a\-dominant\-country\);
+骾 < any\-object\-that\-sticks\-in\-throat;
+探親 < to\-go\-home\-to\-visit\-one''s\-family;
+布法羅 < buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 < the\-eight\-strategic\-nerve\-points;
+難以 < hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 < render\-service\-to\-repay\-kindness;
+醼 < offer\-food\-and\-wine\-one''s\-guests;
+輧 < curtained\-carriage\-used\-by\-women;
+軙 < a\-chinese\-family\-name\-to\-arrange;
+親戚 < \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 < \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 < the\-traditional\-chinese\-calendar;
+贁 < to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 < pearls\-or\-shells\-strung\-together;
+諊 < to\-make\-a\-judicial\-investigation;
+按說 < in\-the\-ordinary\-course\-of\-events;
+連任 < continue\-in\-\(a\-political\)\-office;
+矮子裡拔將軍 < choose\-the\-best\-person\-available;
+臉譜 < types\-of\-facial\-makeup\-in\-operas;
+纙 < string\-on\-which\-coins\-are\-strung;
+筴 < type\-of\-grass\-used\-in\-divination;
+開庭 < begin\-a\-\(judicial\)\-court\-session;
+公審 < public\-trial\-\(in\-a\-court\-of\-law\);
+琇 < coarse\-variety\-of\-jasper\-or\-jade;
+但願 < if\-only\-\(it\-were\-possible\-to\.\.\.\);
+開普敦 < cape\-town\-\(city\-in\-south\-africa\);
+越來越嚴重 < to\-become\-more\-serious\-every\-day;
+不謀而合 < agree\-without\-prior\-consultation;
+捨得 < to\-be\-willing\-to\-part\-with\-\(sth\);
+棫 < thorny\-shrub\-with\-yellow\-flowers;
+見不得 < may\-not\-be\-seen\-by\-or\-exposed\-to;
+旓 < serrated\-edges\-on\-a\-chinese\-flag;
+持有 < hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 < make\-a\-stand\-and\-fight\-\(against\);
+近乎同步數位階層 < plesiochronous\-digital\-hierarchy;
+按兵不動 < not\-throw\-the\-troops\-into\-battle;
+嶲 < a\-name\-of\-an\-old\-town\-in\-sichuan;
+篦子 < a\-double\-edged\-fine\-toothed\-comb;
+投機 < be\-a\-speculator\-\(profit\-seeking\);
+塱 < place\-name\-in\-guangdong\-province;
+剨 < sound\-of\-something\-being\-smashed;
+挪借 < to\-borrow\-money\-for\-a\-short\-time;
+宰相 < prime\-minister\-\(in\-feudal\-china\);
+一中一臺 < \"one\-china\,\-one\-taiwan\"\-\(policy\);
+䵬 < black\-sound\-of\-the\-flowing\-water;
+䴍 < a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 < general\-term\-for\-a\-group\-of\-bird;
+䳰 < a\-bird\-resembling\-the\-wild\-goose;
+䱙 < a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 < dressed\-hair\-in\-a\-horizontal\-way;
+䪬 < sound\-of\-pressing\-something\-down;
+䩬 < an\-ornamental\-item\-on\-a\-scabbard;
+䧵 < a\-bird\-like\-the\-secretary\-falcon;
+䦎 < a\-mechanical\-device\-for\-lead\-ore;
+䥾 < to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 < a\-speculum\-used\-in\-ancient\-times;
+䤷 < a\-lance\-with\-three\-or\-two\-points;
+中日韓越 < china\,\-japan\,\-korea\,\-and\-vietnam;
+䣢 < name\-of\-a\-place\-in\-ancient\-times;
+䝁 < a\-kind\-of\-wild\-leguminous\-plants;
+䛶 < writings\-eulogizing\-adead\-person;
+虛腕 < empty\-wrist\-\(method\-of\-painting\);
+䗤 < a\-kind\-of\-worm\-produced\-in\-water;
+取得大學學位 < to\-obtain\-a\-university\-education;
+䍰 < a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 < well\-boiled\-congee\-or\-rice\-gruel;
+䉈 < a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 < to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 < ornaments\-of\-fine\-feather\-or\-fur;
+䅹 < a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 < crooked\-and\-winding\-of\-the\-grass;
+䄷 < a\-measurement\-equal\-to\-120\-catty;
+䃪 < a\-platform\-for\-sacrificial\-rites;
+䂞 < a\-thorny\-tree\-about\-15\-feet\-high;
+創辦人 < founder\-\(of\-an\-institution\,\-etc\);
+㺜 < fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 < a\-fierce\-animal\-of\-the\-dog\-tribe;
+不論 < no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+㹡 < a\-rush\-and\-impatient\-disposition;
+㸡 < board\-to\-block\-the\-water\-current;
+㸚 < scattered\-or\-dispersed\-and\-clear;
+㴭 < immeasurable\-depth\-or\-profundity;
+㱨 < to\-prepare\-a\-body\-for\-the\-coffin;
+保修 < guarantee\-to\-keep\-in\-good\-repair;
+㬇 < name\-of\-a\-state\-in\-ancient\-china;
+㩽 < branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 < to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+金邊 < phnom\-penh\-\(capital\-of\-cambodia\);
+㢲 < the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 < a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 < to\-have\-one''s\-ambition\-fulfilled;
+㚡 < standing\-without\-a\-straight\-back;
+㚉 < to\-make\-a\-profit\-on\-sell\-and\-buy;
+侵佔 < to\-invade\-and\-occupy\-\(territory\);
+㕣 < a\-marsh\-at\-the\-foot\-of\-the\-hills;
+柯密 < kermit\-\(communications\-protocol\);
+享有 < enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 < a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 < turkic\-\(minority\-group\-in\-china\);
+戈爾巴喬夫 < \(former\-soviet\-leader\)\-gorbachev;
+逼供信 < obtain\-confessions\-by\-compulsion;
+安保 < \(abbreviation\)\-maintain\-security;
+壽麵 < birthday\-noodles\-\(for\-longevity\);
+浴室 < bathroom\-\(room\-used\-for\-bathing\);
+令人 < cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+形影不離 < inseparable\-\(as\-form\-and\-shadow\);
+商業版本 < commercial\-version\-\(of\-software\);
+百讀不厭 < be\-worth\-reading\-a\-hundred\-times;
+除非 < only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 < discrimination\-\(against\-someone\);
+敗落 < decline\-\(in\-wealth\-and\-position\);
+無錫 < wuxi\-\(city\)\,\-in\-jiangsu\-province;
+分波多工 < wavelength\-division\-multiplexing;
+必由之路 < the\-road\-one\-must\-follow\-or\-take;
+们 < adjunct\-pronoun\-indicate\-plural;
+呢 < interrogative\-or\-emphatic\-final;
+楼 < building\-of\-two\-or\-more\-stories;
+药 < leaf\-of\-dahurian\-angelica\-plant;
+齎 < take\-in\-both\-hands\-and\-offer\-to;
+丈 < unit\-of\-length\-equal\-3\.3\-meters;
+挑 < a\-load\-carried\-on\-the\-shoulders;
+祝 < pray\-for\-happiness\-or\-blessings;
+杉 < various\-species\-of\-pine\-and\-fir;
+朧 < condition\-or\-appearance\-of\-moon;
+霸 < rule\-by\-might\-rather\-than\-right;
+箪 < small\-bamboo\-basket\-for\-holding;
+醤 < any\-jam\-like\-or\-paste\-like\-food;
+炕 < the\-brick\-bed\-in\-northern\-china;
+亥 < last\-of\-twelve\-earthly\-branches;
+粤 < guangdong\-and\-guangxi\-provinces;
+粽 < dumpling\-made\-of\-glutinous\-rice;
+陇 < mountain\-located\-between\-shanxi;
+闾 < village\-of\-twenty\-five\-families;
+郦 < place\-in\-today''s\-henan\-province;
+鞅 < leather\-strap\-over\-horse''s\-neck;
+铡 < sickle\-for\-cutting\-grass\-or\-hay;
+骧 < gallop\-about\-with\-head\-uplifted;
+骢 < horse\-with\-a\-bluish\-white\-color;
+蛳 < kind\-of\-snail\-with\-spiral\-shell;
+邳 < a\-department\-in\-the\-state\-of\-lu;
+郢 < state\-in\-today''s\-hubei\-province;
+骖 < two\-outside\-ones\-in\-three\-horse;
+轸 < cross\-board\-at\-rear\-of\-carriage;
+箜 < ancient\-string\-music\-instrument;
+郐 < state\-in\-today''s\-henan\-province;
+轹 < run\-over\-something\-with\-vehicle;
+栝 < a\-builder''s\-frame\-for\-measuring;
+獍 < an\-animal\-which\-eats\-its\-mother;
+負責人 < person\-in\-charge\-\(of\-something\);
+姐夫 < brother\-in\-law\-\(husband''s\-side\);
+十三經 < the\-thirteen\-confucian\-classics;
+實時操作環境 < real\-time\-operating\-environment;
+特區 < special\-\(administrative\)\-region;
+日圓 < japanese\-yen\-\(unit\-of\-currency\);
+病蟲害 < plant\-diseases\-and\-insect\-pests;
+亨特泰羅 < hunter\-tylo\-\(hollywood\-actress\);
+壁櫥 < a\-built\-in\-wardrobe\-or\-cupboard;
+閉門造車 < make\-a\-cart\-behind\-closed\-doors;
+避暑 < be\-away\-for\-the\-summer\-holidays;
+步搖 < dangling\-ornament\-worn\-by\-women;
+國際商業機器 < international\-business\-machines;
+鼗 < small\-revolving\-drum\-with\-knobs;
+鼒 < large\-tripod\-caldron\-with\-small;
+鶖 < large\-waterfowl\-with\-naked\-head;
+騄 < name\-of\-a\-legendary\-swift\-horse;
+餖 < food\-item\-set\-out\-for\-show\-only;
+頣 < to\-view\-others\-with\-raised\-eyes;
+邦交 < relations\-between\-two\-countries;
+鄴 < place\-in\-today''s\-honan\-province;
+鄚 < place\-in\-today''s\-hebei\-province;
+郔 < place\-name\-in\-shandong\-province;
+邽 < name\-of\-a\-county\-in\-han\-dynasty;
+軨 < lattice\-work\-on\-front\-and\-sides;
+踋 < the\-foot\-or\-feet\-cast\-of\-a\-play;
+數據鏈路連接識別碼 < data\-link\-connection\-identifier;
+襭 < tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 < cotton\-clothes\-of\-a\-boy\-servant;
+衺 < slit\-in\-garment\-to\-aid\-movement;
+蠨 < a\-kind\-of\-spider\-with\-long\-legs;
+螣 < mythological\-wingless\-dragon\-of;
+提煉 < to\-extract\-\(ore\,\-minerals\,\-etc\);
+苤 < brassica\-campestris\-subsp\.\-rapa;
+橋接 < bridging\-\(in\-computer\-networks\);
+艕 < two\-boats\-fastened\-side\-by\-side;
+八方 < the\-eight\-points\-of\-the\-compass;
+膫 < the\-fat\-covering\-the\-intestines;
+悲喜交集 < mixed\-feelings\-of\-grief\-and\-joy;
+內政 < internal\-affairs\-\(of\-a\-country\);
+縗 < sackcloth\-worn\-on\-breast\-during;
+迫使 < force\-\(someone\-to\-do\-something\);
+篪 < a\-bamboo\-flute\-with\-seven\-holes;
+吃不服 < not\-be\-accustomed\-to\-eating\-sth;
+長廊 < the\-long\-corridor\-at\-yi\-he\-yuan;
+瞖 < a\-cataract\-or\-film\-over\-the\-eye;
+不修邊幅 < not\-care\-about\-one''s\-appearance;
+畤 < place\-for\-worshipping\-the\-haven;
+元帥 < a\-marshal\-\(in\-the\-armed\-forces\);
+甗 < earthenware\-vessel\-in\-two\-parts;
+符合美國利益 < in\-line\-with\-american\-interests;
+大快人心 < to\-the\-satisfaction\-of\-everyone;
+校長 < \(college\,\-university\)\-president;
+烳 < to\-travel\-by\-the\-light\-of\-torch;
+灕 < short\-name\-for\-guangxi\-province;
+馬尼拉 < manila\-\(capital\-of\-philippines\);
+開刀 < to\-perform\-or\-have\-an\-operation;
+沴 < foul\-and\-poisonous\-in\-confusion;
+樐 < a\-lookout\-turret\-on\-a\-city\-wall;
+棻 < kind\-of\-wood\-from\-which\-perfume;
+輩分 < seniority\-in\-the\-family\-or\-clan;
+枌 < variety\-of\-elm\-with\-small\-seeds;
+鞭長莫及 < beyond\-the\-reach\-of\-one''s\-power;
+不學無術 < have\-neither\-learning\-nor\-skill;
+應該說 < it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 < have\-no\-choice\-or\-option\-but\-to;
+不寒而慄 < shiver\-all\-over\-though\-not\-cold;
+尾牙 < a\-year\-end\-dinner\-for\-employees;
+班輪 < regular\-passenger\-or\-cargo\-ship;
+垟 < clay\-sheep\-buried\-with\-the\-dead;
+抨擊 < attack\-\(verbally\-or\-in\-writing\);
+舞台 < \(theatrical\-or\-political\)\-stage;
+咠 < to\-whisper\.\-to\-blame\-to\-slander;
+叧 < to\-cut\-meat\-off\-away\-from\-bones;
+冔 < cap\-worn\-during\-the\-yin\-dynasty;
+亼 < to\-assemble\.\-to\-gather\-together;
+乄 < shime\:\-to\-find\-a\-place\-to\-dwell;
+䵸 < the\-toad\-that\-lives\-in\-the\-moon;
+䳡 < a\-kind\-of\-bird\-in\-ancient\-books;
+北伐軍 < the\-northern\-expeditionary\-army;
+䲞 < a\-second\-general\-name\-for\-perch;
+䱌 < a\-second\-name\-for\-the\-globefish;
+䰝 < a\-large\-earthen\-pot\-for\-cooking;
+䰀 < dressed\-hair\-of\-a\-chinese\-woman;
+䮸 < to\-move\-slowly\-and\-then\-swiftly;
+䬻 < to\-entertain\-a\-departing\-friend;
+䪾 < to\-deal\-with\-affairs\-cautiously;
+䪍 < a\-container\-for\-bows\-and\-arrows;
+䨣 < leather\-to\-be\-moistened\-by\-rain;
+軟體出版協會 < software\-publishers\-association;
+䣣 < name\-of\-a\-place\-name\-of\-a\-place;
+䟚 < to\-sit\-with\-the\-legs\-spread\-out;
+䜷 < fermented\-and\-seasoned\-soybeans;
+䜪 < name\-of\-a\-pavilion\-in\-old\-times;
+䛀 < reasonable\-authority\-statements;
+䘅 < a\-small\-gadflies\-and\-mosquitoes;
+可移植 < portable\-\(programming\-language\);
+䐃 < fat\-in\-the\-abdomen\-or\-intestine;
+䍛 < a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 < vegetable\-mixed\-with\-thick\-soup;
+䂲 < standard\-weights\-used\-in\-scales;
+䁰 < to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 < gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 < a\-gem\-or\-ornament\-on\-a\-scabbard;
+猛跌 < drop\-sharply\-\(eg\,\-stock\-prices\);
+層出不窮 < to\-come\-out\-one\-after\-the\-other;
+信件 < a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+㬹 < tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 < the\-sun\-is\-shining\-on\-the\-water;
+㥆 < indulgent\-and\-without\-restraint;
+八級工資制 < eight\-grade\-wage\-scale\-\(system\);
+㗘 < to\-bite\-the\-hard\-and\-solid\-food;
+使命 < a\-\(diplomatic\-or\-other\)\-mission;
+㓢 < to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 < faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 < to\-go\-forward\-with\-eyes\-covered;
+丹皮 < the\-root\-bark\-of\-the\-peony\-tree;
+定做 < to\-have\-something\-made\-to\-order;
+在密切注意 < to\-pay\-close\-attention\-\(to\-sth\);
+安民告示 < a\-notice\-to\-reassure\-the\-public;
+松下電氣工業 < matsushita\-electronics\-industry;
+重用 < to\-put\-in\-an\-important\-position;
+細菌武器 < biological\-weapon\-\(using\-germs\);
+比賽 < \[athletic\-or\-other\]\-competition;
+別開生面 < start\-something\-new\-or\-original;
+敘述 < relate\-\(a\-story\-or\-information\);
+加重 < become\|make\-more\-serious\|graver;
+蔚為 < to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+經濟學 < economics\-\(as\-a\-field\-of\-study\);
+電臺 < radio\-\(or\-broadcasting\)\-station;
+如飢似渴 < thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 < founding\-fathers\-\(of\-a\-country\);
+碑林 < the\-forest\-of\-steles\-\(in\-xi''an\);
+幹 < trunk\-of\-tree\-or\-of\-human\-body;
+尺 < chinese\-measure\-approx\.\-''foot'';
+米 < hulled\-or\-husked\-uncooked\-rice;
+鹏 < fabulous\-bird\-of\-enormous\-size;
+喂 < interjection\-to\-call\-attention;
+潇 < sound\-of\-beating\-wind\-and\-rain;
+禹 < legendary\-hsia\-dynasty\-founder;
+斟 < to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 < the\-stem\-and\-calyx\-of\-a\-flower;
+阀 < powerful\-and\-influential\-group;
+楷 < model\-style\-of\-chinese\-writing;
+辄 < sides\-of\-chariot\-where\-weapons;
+俑 < wooden\-figure\-buried\-with\-dead;
+嘹 < used\-describe\-clarity\-of\-voice;
+轼 < horizontal\-wooden\-bar\-in\-front;
+馑 < time\-of\-famine\-or\-crop\-failure;
+伥 < ghost\-of\-one\-devoured\-by\-tiger;
+绶 < silk\-ribbon\-attached\-as\-a\-seal;
+鬈 < fine\-growth\-of\-hair\-curly\-hair;
+磔 < downward\-stroke\-slanting\-right;
+裢 < folding\-purse\-inserted\-in\-belt;
+枸 < kind\-of\-aspen\-found\-in\-sichuan;
+芊 < exuberant\-and\-vigorous\-foliage;
+鄄 < name\-of\-a\-district\-in\-shandong;
+鼹 < a\-kind\-of\-insectivorous\-rodent;
+莼 < an\-edible\-water\-plant\-brasenia;
+圬 < plaster\-over\-with\-layer\-of\-mud;
+莩 < membrane\-lining\-inside\-of\-reed;
+诶 < an\-exclamation\-of\-confirmation;
+褙 < paper\-or\-cloth\-pasted\-together;
+直接數據 < data\-direct\-\(in\-lan\-emulation\);
+外灘 < waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 < confirm\-\(something\-to\-be\-true\);
+愛面子 < be\-concerned\-about\-face\-saving;
+議員 < member\-\(of\-a\-legislative\-body\);
+報表 < forms\-for\-reporting\-statistics;
+明報 < ming\-pao\-newspaper\-\(hong\-kong\);
+前程 < future\-\(career\,\-etc\)\-prospects;
+登門 < pay\-a\-visit\-to\-someone''s\-house;
+邊民 < people\-living\-on\-the\-frontiers;
+那末 < if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 < effect\-\(eg\,\-greenhouse\-effect\);
+墨爾缽 < melbourne\-\(an\-australian\-city\);
+歹徒 < evil\-person\-who\-commits\-crimes;
+收復 < recover\-\(lost\-territory\,\-etc\.\);
+傲骨 < lofty\-and\-unyielding\-character;
+斷交 < break\-off\-diplomatic\-relations;
+電腦與電話系統整合 < computer\-telephony\-integration;
+鶋 < a\-sea\-bird\-with\-a\-white\-breast;
+鯏 < a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饁 < carry\-meal\-to\-workers\-in\-field;
+日本電報電話公司 < nippon\-telegraph\-and\-telephone;
+鎫 < ornament\-over\-the\-horse''s\-head;
+傳統醫藥 < \(chinese\)\-traditional\-medicine;
+赙 < gift\-of\-money\-help\-pay\-funeral;
+有史以來 < since\-the\-beginning\-of\-history;
+帳戶 < \(bank\,\-computer\,\-etc\.\)\-account;
+詤 < to\-make\-wild\-statements\-to\-lie;
+核威懾政策 < policy\-of\-nuclear\-intimidation;
+蘴 < young\-shoots\-of\-the\-rapeturnip;
+莝 < to\-chop\-straw\-fine\-for\-animals;
+索杰納 < sojourner\-\(martian\-land\-rover\);
+腠 < between\-the\-skin\-and\-the\-flesh;
+包治百病 < guarantee\-to\-cure\-all\-diseases;
+翿 < streamer\-adorned\-with\-feathers;
+筥 < round\-shaped\-bamboo\-basket\-for;
+固然 < admittedly\-\(it''s\-true\-that\.\.\.\);
+痄 < scrofulous\-swellings\-and\-sores;
+中華人民共和國 < the\-people''s\-republic\-of\-china;
+玤 < a\-kind\-of\-gem\-inferior\-to\-jade;
+服務廣告協議 < service\-advertisement\-protocol;
+煠 < to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+臺獨 < taiwan\-independence\-\(movement\);
+潏 < fareshare\-reclaimed\-from\-river;
+漼 < having\-the\-appearance\-of\-depth;
+保苗 < keep\-a\-full\-stand\-of\-seedlings;
+欞 < the\-lattice\-of\-a\-window\-a\-sill;
+按需分配 < distribution\-according\-to\-need;
+世貿組織 < wto\-\(world\-trade\-organization\);
+曚 < twilight\-just\-before\-sun\-rises;
+沒有什麼 < there''s\-nothing\-\(\.\.\.\-about\-it\);
+斚 < a\-small\-cup\-of\-stone\-with\-ears;
+按勞分配 < distribution\-according\-to\-work;
+路由 < routing\-\(in\-computer\-networks\);
+對美 < \(policy\,\-etc\.\)\-towards\-america;
+指數 < \(numerical\,\-statistical\)\-index;
+筆畫 < strokes\-of\-a\-chinese\-character;
+扊 < upright\-bar\-for\-fastening\-door;
+慜 < name\-of\-a\-monk\-in\-tang\-dynasty;
+空襲 < \(military\)\-attack\-from\-the\-air;
+崠 < place\-name\-in\-guangxi\-province;
+表報 < statistical\-tables\-and\-reports;
+岝 < name\-of\-a\-mountain\-in\-shandong;
+拘押 < \(arrest\-and\)\-take\-into\-custody;
+談得來 < able\-to\-talk\-to\-or\-get\-on\-with;
+堭 < a\-dry\-moat\-outside\-a\-city\-wall;
+堎 < character\-used\-for\-place\-names;
+嚹 < a\-particle\-implying\-completion;
+阿拉木圖 < almaty\-\(capital\-of\-kazakhstan\);
+匳 < ladies\-toilet\-case\-with\-mirror;
+刵 < punishment\-by\-cutting\-off\-ears;
+尚書 < high\-official\-in\-ancient\-china;
+䲁 < general\-term\-of\-a\-kind\-of\-fish;
+七層架構 < seven\-layer\-architecture\-\(osi\);
+䰚 < the\-top\-part\-of\-the\-rice\-gruel;
+䯵 < hair\-style\-for\-little\-children;
+䯤 < boneware\-used\-to\-comb\-the\-hair;
+䯒 < the\-upper\-part\-of\-the\-shinbone;
+䮔 < a\-young\-and\-fleet\-footed\-horse;
+䭺 < a\-horse\-to\-raise\-its\-head\-high;
+䫮 < to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 < the\-front\-and\-back\-of\-the\-neck;
+䧒 < steps\-leading\-up\-to\-a\-building;
+䤛 < component\-parts\-of\-a\-cross\-bow;
+䣹 < to\-brew\-10\-percent\-of\-the\-wine;
+䣵 < to\-brew\-the\-wine\-a\-second\-time;
+䣬 < the\-shiny\-colorful\-of\-the\-wine;
+聳立 < to\-tower\-above\-\(on\-top\-of\-sth\);
+䢾 < name\-of\-an\-ancient\-small\-state;
+䡃 < a\-tool\-for\-brushing\-the\-thread;
+䜲 < name\-of\-a\-village\-in\-old\-china;
+班組 < teams\-and\-groups\-\(in\-factories;
+䘓 < thick\-blood\-of\-cattle\-and\-goat;
+䓿 < a\-second\-name\-for\-lotus\-flower;
+䓹 < to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 < the\-hem\-or\-border\-of\-a\-garment;
+䋴 < silk\-fabrics\-with\-mixed\-colors;
+䋳 < cloth\-or\-paper\-pasted\-together;
+伯母 < wife\-of\-father''s\-elder\-brother;
+䉤 < a\-bamboo\-ware\-for\-washing\-rice;
+䉛 < bamboo\-basket\-for\-washing\-rice;
+䉓 < mattress\-made\-of\-bamboo\-strips;
+䇬 < thin\-bamboo\-laths\-knitted\-sail;
+䇧 < to\-fill\-an\-opening\-with\-bamboo;
+䄡 < northern\-minority\-ethnic\-group;
+䃶 < rugged\-and\-uneven\-of\-the\-rocks;
+䃚 < rugged\-land\-of\-sand\-and\-pebble;
+䃂 < dull\-sound\-of\-the\-tolling\-bell;
+㼡 < a\-small\-jar\-with\-a\-small\-mouth;
+㵷 < turbulent\-flowing\-of\-the\-water;
+中藥 < \(traditional\)\-chinese\-medicine;
+語音通訊通道 < voice\-\(communications\)\-channel;
+㲹 < the\-dry\-soil\-on\-the\-river\-side;
+㲝 < fine\-hair\-of\-birds\-and\-animals;
+㯅 < the\-branches\-growing\-downwards;
+㮂 < an\-appliance\-used\-to\-lift\-food;
+㬤 < wet\-clothes\-not\-completely\-dry;
+㪾 < to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 < to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 < a\-particle\-expressing\-surprise;
+㥋 < sound\-of\-the\-anguish\-of\-sorrow;
+㤯 < clever\-or\-smart\-in\-a\-small\-way;
+㤔 < to\-concede\-or\-submit\-willingly;
+㣇 < a\-kind\-of\-beast\-with\-long\-hair;
+㡞 < a\-sack\-used\-to\-feed\-the\-horses;
+㠣 < a\-mountain\-in\-jiangxi\-province;
+㞯 < the\-turning\-area\-of\-a\-mountain;
+班主任 < a\-teacher\-in\-charge\-of\-a\-class;
+㜆 < commonly\-known\-as\-mother\-in\-wu;
+㙚 < red\-colored\-hard\-and\-solid\-mud;
+㘞 < yelling\-sound\-of\-towing\-a\-boat;
+㔩 < hair\-ornments\-used\-in\-old\-time;
+㔀 < to\-brand\-criminals\-on\-the\-face;
+暗袋 < camera\-bag\-\(for\-changing\-film\);
+可選擇丟棄 < discard\-eligible\-\(frame\-relay\);
+處決 < execute\-\(a\-condemned\-criminal\);
+應有盡有 < everything\-\(one\-could\-imagine\);
+新鮮 < fresh\-\(experience\,\-food\,\-etc\.\);
+導航員 < navigator\-\(on\-a\-plane\-or\-boat\);
+叫聲 < yelling\-\(sound\-made\-by\-person\);
+班師 < withdraw\-troops\-from\-the\-front;
+哀悼 < grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 < cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 < be\-defeated\-on\-the\-battlefield;
+眾議院 < house\-of\-representatives\-\(usa\);
+包賠 < guarantee\-to\-pay\-compensations;
+名次 < position\-in\-a\-ranking\-of\-names;
+嫂嫂 < sister\-in\-law\-\(husband''s\-side\);
+奉行 < to\-pursue\-\(a\-course\,\-a\-policy\);
+青山綠水 < verdant\-hills\-and\-green\-waters;
+呼喚 < call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 < the\-original\-form\-for\-七\-u\+4e03;
+𠀀 < the\-sound\-made\-by\-breathing\-in;
+虹橋機場 < hongqiao\-airport\-\(in\-shanghai\);
+統一招生 < national\-unified\-entrance\-exam;
+示威 < hold\-a\-\(protest\)\-demonstration;
+東部時間 < \(u\.s\.\)\-eastern\-\(standard\)\-time;
+當事人 < persons\-involved\-or\-implicated;
+時大時小 < sometimes\-big\,\-sometimes\-small;
+常規銅電話線 < ordinary\-copper\-telephone\-line;
+迦 < character\-for\-transliteration;
+庵 < buddhist\-monastery\-or\-nunnery;
+庚 < seventh\-of\-ten\-cyclical\-stems;
+趣 < what\-attracts\-one''s\-attention;
+畔 < boundary\-path\-dividing\-fields;
+夾 < be\-wedged\-or\-inserted\-between;
+辆 < numerary\-adjunct\-for\-vehicles;
+怔 < a\-disease\-resembling\-neurosis;
+陌 < foot\-path\-between\-rice\-fields;
+骆 < a\-white\-horse\-with\-black\-mane;
+楣 < crossbeam\-above\-or\-under\-gate;
+璧 < piece\-of\-jade\-with\-hole\-in\-it;
+膻 < rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 < pearl\-that\-is\-not\-quite\-round;
+唢 < flute\-like\-musical\-instrument;
+楂 < a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 < entertain\-victorious\-soldiers;
+矍 < look\-about\-in\-fright\-or\-alarm;
+擤 < to\-blow\-the\-nose\-with\-fingers;
+芡 < plant\-allied\-to\-the\-waterlily;
+籼 < non\-glutinous\-long\-grain\-rice;
+桡 < bent\-or\-twisted\-piece\-of\-wood;
+黻 < special\-pattern\-of\-embroidery;
+嵝 < goulou\-mountain\-peak\-in\-hunan;
+垭 < character\-used\-in\-place\-names;
+硖 < \<arch\>\-town\-in\-hebei\-province;
+邡 < name\-of\-a\-district\-in\-sichuan;
+讠 < simplified\-kangxi\-radical\-149;
+噻 < character\-used\-in\-translation;
+疬 < scrofulous\-lumps\-or\-swellings;
+蔟 < frame\-on\-which\-silkworms\-spin;
+垧 < variable\-unit\-of\-land\-measure;
+鬏 < a\-coiffure\-on\-top\-of\-the\-head;
+筘 < \(a\-measure\-of\-width\-of\-cloth\);
+缑 < cord\-binding\-on\-hilt\-of\-sword;
+簖 < bamboo\-trap\-for\-catching\-fish;
+庋 < a\-cupboard\-or\-pantry\-to\-store;
+甍 < rafters\-supporting\-roof\-tiles;
+吃刀 < penetration\-of\-a\-cutting\-tool;
+各位 < everybody\-\(a\-term\-of\-address\);
+韓圓 < korean\-won\-\(unit\-of\-currency\);
+不辭而別 < leave\-without\-saying\-good\-bye;
+百聽不厭 < worth\-hearing\-a\-hundred\-times;
+低階語言 < low\-level\-\(computer\)\-language;
+不足為訓 < not\-to\-be\-taken\-as\-an\-example;
+報社 < general\-office\-of\-a\-newspaper;
+發跡 < to\-rise\-to\-power\-and\-position;
+支援 < provide\-assistance\-or\-backing;
+觀測 < \(scientific\,\-etc\)\-observation;
+違心 < against\-ones\-will\-or\-feelings;
+駹 < black\-horse\-with\-a\-white\-face;
+饎 < wine\-and\-food\-eaten\-with\-wine;
+同步數位階層 < synchronous\-digital\-hierarchy;
+拼音 < pinyin\-\(chinese\-romanization\);
+大吹大擂 < make\-an\-exhibition\-of\-oneself;
+釄 < wine\-brew\-for\-the\-second\-time;
+釁 < smear\-with\-blood\-in\-sacrifice;
+境外 < outside\-\(a\-country''s\)\-borders;
+上海戲劇學院 < shanghai\-theatrical\-institute;
+迧 < a\-chinese\-family\-name\-arrange;
+轘 < tear\-asunder\-between\-chariots;
+輙 < sides\-of\-chariot\-were\-weapons;
+拌面 < noodles\-served\-with\-soy\-sauce;
+直接 < direct\-\(opposite\-of\-indirect\);
+詀 < garrulous\-to\-whisper\.\-to\-joke;
+訹 < to\-beguile\-with\-false\-stories;
+藊 < a\-kind\-of\-bean\-with\-flat\-pods;
+安之若素 < bear\-hardship\-with\-equanimity;
+舠 < long\-narrow\-knife\-shaped\-boat;
+鏡頭 < camera\-shot\-\(in\-a\-movie\,\-etc\);
+翣 < feathers\-used\-decorate\-coffin;
+莫不 < there\-is\-no\-one\-\(who\-doesn''t\);
+送人 < to\-see\-\(or\-walk\)\-someone\-home;
+白文 < the\-text\-of\-an\-annotated\-book;
+縓 < orange\-or\-reddish\-yellow\-silk;
+西哈努克 < \(king\)\-sihanouk\-\(of\-cambodia\);
+將領 < high\-ranking\-military\-officer;
+殺人案件 < \(case\-of\,\-incident\-of\)\-murder;
+糏 < rice\-grits\-left\-after\-hulling;
+篘 < a\-utensil\-used\-to\-filter\-wine;
+紅綠燈 < \(red\-and\-green\)\-traffic\-light;
+掌權 < wield\-\(political\,\-etc\.\)\-power;
+促進 < to\-promote\-\(an\-idea\-or\-cause\);
+矰 < arrow\-with\-attached\-silk\-cord;
+公安 < \(ministry\-of\)\-public\-security;
+玃 < a\-large\-ape\-found\-in\-w\.\-china;
+猇 < the\-scream\-or\-roar\-of\-a\-tiger;
+牸 < the\-female\-of\-certain\-animals;
+背道而馳 < run\-in\-the\-opposite\-direction;
+滙 < waters\-converging\-to\-one\-spot;
+傳輸控制協定 < transmission\-control\-protocol;
+病根 < an\-incompletely\-cured\-illness;
+補報 < make\-a\-report\-after\-the\-event;
+重複節 < repeated\-segment\-\(networking\);
+椊 < to\-fit\-a\-handle\-into\-a\-socket;
+不名一文 < without\-a\-penny\-to\-one''s\-name;
+不無小補 < not\-be\-without\-some\-advantage;
+對臺 < \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 < a\-small\-drum\-for\-marking\-time;
+暐 < the\-bright\-shining\-of\-the\-sun;
+昳 < the\-declining\-sun\-in\-the\-west;
+特別行政區 < special\-administrative\-region;
+贅述 < to\-say\-more\-than\-is\-necessary;
+捬 < press\-down\-heavily\-with\-hands;
+抔 < take\-or\-hold\-up\-in\-both\-hands;
+實肘 < full\-arm\-\(method\-of\-painting\);
+淘金 < panning\-\(for\-precious\-metals\);
+崾 < place\-name\-in\-shanxi\-province;
+峫 < mountain\-in\-shandong\-province;
+姅 < woman\-at\-time\-of\-menstruation;
+壼 < palace\-corridor\-or\-passageway;
+壍 < moat\-around\-a\-city\.\-a\-channel;
+加強管制 < to\-tighten\-control\-\(over\-sth\);
+啩 < particle\-implying\-probability;
+叐 < to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 < swastika\-fourth\-of\-auspicious;
+戈爾 < \(al\)\-gore\-\(us\-vice\-president\);
+䶕 < irregular\-and\-prominent\-teeth;
+䵘 < dosen''t\-t\-stick\-to\-each\-other;
+䲵 < a\-general\-name\-of\-small\-birds;
+亂說 < to\-make\-irresponsible\-remarks;
+䯆 < small\-and\-thin\-piece\-of\-bones;
+人民日報 < renmin\-ribao\-\(people''s\-daily\);
+䫲 < thin\-and\-sickly\-in\-appearance;
+䫤 < between\-the\-eyebrows\-and\-eyes;
+䫡 < a\-long\-shape\-of\-head\-and\-face;
+䫋 < female\-attendants\-or\-servants;
+開始以前 < before\-the\-beginning\-\(of\-sth\);
+䧐 < a\-mountain\-in\-shanxi\-province;
+䥣 < an\-instrument\-for\-boring\-wood;
+䥉 < the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 < wine\-made\-from\-glutinous\-rice;
+䤍 < rotten\-paste\-or\-soybean\-sauce;
+不識大體 < fail\-to\-see\-the\-larger\-issues;
+䠽 < height\-or\-stature\-of\-a\-person;
+䠱 < to\-walk\-slowly\-and\-cautiously;
+䟧 < sound\-of\-treading\-or\-stepping;
+䞇 < gifts\-to\-superiors\-or\-friends;
+䝽 < name\-of\-a\-person\-in\-old\-china;
+兵工廠 < munitions\-or\-ordnance\-factory;
+䝙 < a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 < to\-speak\-on\-behalf\-of\-another;
+䘳 < a\-garment\-of\-single\-thickness;
+䏼 < what\-is\-left\-over\-of\-the\-food;
+不打自招 < confess\-without\-being\-pressed;
+䎢 < to\-measure\-by\-pints\-and\-pecks;
+䎑 < flying\-over\-the\-water\-surface;
+䍮 < young\-goat\-under\-one\-year\-old;
+䍂 < tools\-to\-draw\-water\-or\-liquid;
+䌿 < the\-breadth\-of\-cloth\-or\-paper;
+䌗 < the\-left\-over\-of\-drawing\-silk;
+䌈 < to\-get\-something\-with\-a\-lasso;
+一舉兩得 < kill\-two\-birds\-with\-one\-stone;
+不軌 < against\-the\-law\-or\-discipline;
+䉥 < a\-small\-basket\-for\-chopsticks;
+半身像 < half\-length\-photo\-or\-portrait;
+䆺 < whirling\-of\-the\-flowing\-water;
+䅢 < mature\-or\-ripen\-of\-the\-grains;
+保商 < preservation\-of\-soil\-moisture;
+㿶 < the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 < carved\-window\-frame\-on\-a\-door;
+作戰 < conduct\-\(military\-operations\);
+㹂 < untamed\-and\-indocility\-cattle;
+㴄 < the\-water\-flowing\-in\-a\-turned;
+世行 < \[abbreviation\-for\]\-world\-bank;
+㰉 < the\-hazel\-nut\-or\-filbert\-tree;
+中華 < china\-\(alternate\-formal\-name\);
+㭟 < torture\-used\-in\-ancient\-times;
+㫐 < distant\-and\-indistinguishable;
+㡻 < name\-of\-a\-small\-ancient\-state;
+侵入 < to\-make\-\(military\)\-incursions;
+球檯 < table\-\(for\-games\-using\-balls\);
+㛐 < wife\-of\-one''s\-elder''s\-brother;
+㚆 < to\-do\-something\-in\-an\-old\-way;
+㖟 < to\-deliver\-over\-to\-personally;
+下臺 < step\-down\-\(from\-office\,\-etc\.\);
+貪污 < \(political\,\-moral\)\-corruption;
+中級 < middle\-level\-\(in\-a\-hierarchy\);
+有的 < \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 < rice\-with\-meat\-and\-vegitables;
+不速之客 < uninvited\-or\-unexpected\-guest;
+下班 < to\-come\-or\-go\-or\-get\-off\-work;
+發電量 < \(generated\)\-electrical\-energy;
+不得要領 < fail\-to\-grasp\-the\-main\-points;
+包銷 < have\-exclusive\-selling\-rights;
+進行調查 < to\-carry\-out\-an\-investigation;
+讓球 < to\-concede\-points\-\(in\-a\-game\);
+書房 < study\-\(i\.e\.\-the\-kind\-of\-room\);
+通用資源識別號 < universal\-resource\-identifier;
+認識 < be\-acquainted\-with\-\(a\-person\);
+卻病 < to\-prevent\-or\-treat\-a\-disease;
+遲遲 < \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+大街小巷 < large\-streets\-and\-small\-lanes;
+𠀅 < an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 < durban\-\(city\-in\-south\-africa\);
+保安族 < the\-baoan\-\(paoan\)\-nationality;
+擺輪 < balance\-\(of\-a\-watch\-or\-clock\);
+擺設 < furnish\-and\-decorate\-\(a\-room\);
+江澤民 < jiang\-zemin\-\(chinese\-premier\);
+熱線 < hotline\-\(communications\-link\);
+法制 < legal\-system\-and\-institutions;
+件 < numerary\-adjunct\-for\-article;
+吗 < final\-interrogative\-particle;
+麽 < interrogative\-final\-particle;
+矣 < particle\-of\-completed\-action;
+乒 < used\-with\-pong\-for\-ping\-pong;
+乓 < used\-with\-ping\-for\-ping\-pong;
+咚 < used\-as\-description\-of\-sound;
+琅 < a\-variety\-of\-white\-carnelian;
+孰 < who\?\-which\?\-what\?\-which\-one\?;
+戊 < fifth\-of\-ten\-celestial\-stems;
+渲 < add\-repeated\-washes\-of\-color;
+咫 < foot\-measure\-of\-zhou\-dynasty;
+饷 < rations\-and\-pay\-for\-soldiers;
+汶 < a\-river\-in\-shandong\-province;
+叁 < bank\-form\-of\-numeral\-''three'';
+壬 < ninth\-of\-ten\-celestial\-stems;
+柩 < coffin\-which\-contains\-corpse;
+桠 < the\-forking\-branch\-of\-a\-tree;
+甏 < a\-squat\-jar\-for\-holding\-wine;
+笞 < bamboo\-rod\-used\-for\-beatings;
+阗 < a\-place\-in\-xinjiang\-province;
+铉 < device\-for\-carrying\-a\-tripod;
+觥 < a\-cup\-made\-of\-horn\-obstinate;
+裣 < draw\-one''s\-hands\-into\-sleeve;
+崃 < mountain\-in\-sichuan\-province;
+罘 < screen\-used\-in\-ancient\-times;
+氇 < thick\-rough\-serge\-from\-tibet;
+埴 < soil\-with\-large\-clay\-content;
+昴 < one\-of\-the\-28\-constellations;
+菹 < salted\-or\-pickled\-vegetables;
+各大軍區 < \"the\-greater\-military\-areas\";
+水平 < level\-\(of\-achievement\,\-etc\.\);
+夫權 < authority\-over\-the\-household;
+印尼 < \(abbreviation\-for\)\-indonesia;
+變價 < appraise\-at\-the\-current\-rate;
+年夜飯 < new\-year''s\-eve\-family\-dinner;
+妹夫 < brother\-in\-law\-\(wife''s\-side\);
+進而 < and\-then\-\(what\-follows\-next\);
+李登輝 < lee\-teng\-hui\-\(taiwan\-leader\);
+陣線 < a\-front\-\(ie\,\-militant\-group\);
+呼籲美國 < to\-call\-on\-the\-united\-states;
+傳統中國醫藥 < chinese\-traditional\-medicine;
+歲月 < the\-years\-of\-a\-person''s\-life;
+豐衣足食 < have\-ample\-food\-and\-clothing;
+不知好歹 < not\-know\-what''s\-good\-for\-one;
+歸屬 < be\-under\-the\-jurisdiction\-of;
+在野 < be\-out\-of\-\(political\)\-office;
+廠房 < a\-building\-used\-as\-a\-factory;
+判決 < judgment\-\(by\-a\-court\-of\-law\);
+困難 < \(financial\,\-etc\.\)\-difficulty;
+鵭 < a\-small\-bird\-with\-black\-neck;
+大自然 < nature\-\(as\-in\-mother\-nature\);
+網管接口 < network\-management\-interface;
+隒 < the\-appearance\-of\-a\-mountain;
+掛號 < to\-register\-\(a\-letter\,\-etc\.\);
+補苗 < fill\-the\-gaps\-with\-seedlings;
+根據上表 < according\-to\-the\-above\-table;
+武力 < \(make\-use\-of\)\-military\-force;
+放假 < to\-have\-a\-holidy\-or\-vacation;
+醁 < a\-kind\-of\-green\-colored\-wine;
+舉重 < \(the\-sport\-of\)\-weightlifting;
+邿 < a\-state\-in\-shandong\-province;
+轖 < framework\-of\-lattice\-on\-cart;
+嚴詞 < \(criticize\,\-etc\.\)\-forcefully;
+觵 < a\-cup\-made\-of\-corn\-obstinate;
+華盛頓時報 < washington\-times\-\(newspaper\);
+境內 < within\-\(a\-country''s\)\-borders;
+華人 < ethnic\-chinese\-person\|people;
+橋本 < \(japanese\-surname\)\-hashimoto;
+地皮 < lot\,\-section\-of\-land\,\-ground;
+立方米 < cubic\-meter\-\(unit\-of\-volume\);
+轉機 < \(take\-a\)\-turn\-for\-the\-better;
+固定虛擬連接 < permanent\-virtual\-connection;
+常委 < member\-of\-standing\-committee;
+吃不消 < be\-unable\-to\-stand\-\(exertion;
+投票站 < polling\-station\-\(for\-a\-vote\);
+耇 < wrinkled\-face\-of\-the\-elderly;
+羴 < rank\-odour\-of\-sheep\-or\-goats;
+得票率 < percentage\-of\-votes\-obtained;
+絃 < string\-on\-musical\-instrument;
+國防利益 < \(national\)\-defence\-interests;
+開放系統互連 < open\-systems\-interconnection;
+筻 < place\-name\-in\-hunan\-province;
+竚 < stand\-and\-wait\-for\-long\-time;
+起飛 < to\-take\-off\-\(in\-an\-airplane\);
+開幕 < to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 < to\-give\-or\-have\-an\-injection;
+睙 < to\-roll\-the\-eyeballs\-to\-look;
+瑂 < \(stone\-which\-resembles\-jade\);
+本末倒置 < take\-the\-branch\-for\-the\-root;
+燺 < the\-dry\-at\-the\-fire\-to\-roast;
+瀔 < river\-name\-in\-henan\-province;
+抱頭痛哭 < cry\-on\-each\-other''s\-shoulder;
+汧 < name\-of\-a\-river\-in\-shangdong;
+璧謝 < decline\-\(a\-gift\)\-with\-thanks;
+橵 < wood\-placed\-under\-roof\-tiles;
+對華 < \(policy\,\-etc\.\)\-towards\-china;
+不一而足 < by\-no\-means\-an\-isolated\-case;
+曈 < twilight\-just\-before\-sunrise;
+旟 < an\-military\-flag\-oa\-standard;
+儀器 < \(scientific\,\-etc\)\-instrument;
+原子科學家通報 < journal\-of\-atomic\-scientists;
+究辦 < to\-investigate\-and\-deal\-with;
+吃不住 < be\-unable\-to\-bear\-or\-support;
+扨 < pick\-up\-with\-fork\-or\-pincers;
+幰 < curtain\-at\-front\-of\-carriage;
+娀 < name\-of\-a\-concubine\-of\-di\-ku;
+白紙黑字 < \(written\)\-in\-black\-and\-white;
+埄 < whirling\-of\-dust\-in\-the\-wind;
+定罪 < convict\-\(someone\-of\-a\-crime\);
+本題 < the\-subject\-under\-discussion;
+背簍 < a\-basket\-carried\-on\-the\-back;
+北京藝術學院 < beijing\-academy\-of\-fine\-arts;
+不碎玻璃 < shatterproof\-or\-safety\-glass;
+有關 < to\-have\-something\-to\-do\-with;
+來源 < source\-\(of\-information\,\-etc\);
+䵠 < rushes\-used\-form\-making\-mats;
+䳍 < a\-kind\-of\-pheasant\-like\-bird;
+獲釋 < obtain\-release\-\(from\-prison\);
+䱱 < a\-kind\-of\-slippery\-long\-fish;
+䮇 < black\-horse\-with\-white\-thigh;
+對日 < \(policy\,\-etc\.\)\-towards\-japan;
+䬠 < the\-falling\-of\-snow\-and\-rain;
+䪭 < a\-kind\-of\-musical\-instrument;
+䪉 < metal\-decoration\-on\-a\-halter;
+䩡 < a\-kind\-of\-boots\-in\-old\-times;
+莫衷一是 < cannot\-decide\-which\-is\-right;
+䦜 < name\-of\-a\-state\-in\-old\-times;
+䥺 < name\-of\-a\-double\-edged\-sword;
+䥕 < the\-blade\-or\-edge\-of\-a\-spade;
+䤉 < emptied\-the\-drink\-completely;
+䣡 < name\-of\-a\-place\-in\-old\-times;
+䡑 < the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 < with\-a\-symmetric\-well\-formed;
+䝵 < to\-thank\-with\-money\-or\-gifts;
+䙗 < a\-swaddling\-cloth\-for\-infant;
+䘻 < curtain\-on\-a\-carriage\-or\-car;
+䘺 < a\-seam\-which\-has\-come\-unsewn;
+䘵 < hissing\-sound\-of\-the\-clothes;
+䔛 < fibrous\-plant\-of\-which\-cloth;
+䑹 < a\-numerary\-adjunct\-for\-ships;
+䍠 < turban\-used\-in\-ancient\-times;
+䌋 < a\-herchief\-hung\-at\-the\-waist;
+䋩 < pretty\-and\-fine\-silk\-fabrics;
+䋏 < thick\-and\-big\-ropes\-or\-cords;
+䋋 < a\-kind\-of\-spring\-fishing\-net;
+八國聯軍 < the\-eight\-power\-allied\-force;
+䆶 < noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 < stalk\-of\-the\-panicled\-millet;
+䅭 < a\-variety\-of\-panicled\-millet;
+䅌 < stalk\-of\-wheat\-or\-rice\-plant;
+䃋 < a\-fine\-stone\-resembling\-jade;
+䂵 < sound\-of\-bumping\-or\-striking;
+䂫 < noise\-of\-stones\-rolling\-down;
+䀳 < not\-to\-look\-straight\-forward;
+㾴 < the\-erythema\-of\-acne\-rosacea;
+多年以來 < for\-many\-years\-\(in\-the\-past\);
+㹥 < a\-yellow\-dog\-with\-black\-head;
+㹁 < generally\-called\-the\-animals;
+㵵 < swift\-currents\-of\-the\-stream;
+㵎 < a\-mountain\-stream\-or\-torrent;
+㴚 < the\-small\-ditch\-in\-the\-field;
+知識產權 < intellectual\-property\-rights;
+憋氣 < feel\-suffocated\-or\-oppressed;
+㰆 < an\-instrument\-to\-blow\-a\-fire;
+㰁 < a\-tree\-with\-slanted\-branches;
+㯳 < a\-kind\-of\-tool\-to\-adjust\-bow;
+㥜 < unsuccessful\-in\-one''s\-career;
+㡱 < to\-cauterize\-by\-burning\-moxa;
+㠱 < to\-set\-with\-the\-legs\-clossed;
+㜌 < a\-different\-name\-for\-breasts;
+㙾 < hills\-with\-lots\-of\-big\-rocks;
+㙛 < a\-person''s\-name\-in\-old\-times;
+㗾 < to\-give\-vent\-to\-the\-feelings;
+㗆 < sound\-of\-the\-ringed\-pheasant;
+㓳 < use\-knife\-to\-split\-something;
+㑟 < insincere\-and\-cunning\-person;
+自治區 < autonomous\-region\-\(in\-china\);
+同胞 < fellow\-citizen\-or\-countryman;
+匾額 < a\-horizontal\-inscribed\-board;
+廣播和未知服務器 < broadcast\-and\-unknown\-server;
+確診 < to\-make\-a\-definite\-diagnosis;
+張純如 < \(american\-author\)\-iris\-chang;
+它們 < they\-\(for\-inanimate\-objects\);
+現場 < scene\-\(of\-event\-or\-incident\);
+愛情 < love\-\(between\-man\-and\-woman\);
+變節 < make\-a\-political\-recantation;
+誓死不降 < to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 < there\-is\-no\-need\-to\-\(do\-sth\);
+涉嫌 < to\-be\-a\-suspect\-\(in\-a\-crime\);
+班務會 < a\-routine\-meeting\-of\-a\-squad;
+新德裡 < new\-delhi\-\(capital\-of\-india\);
+反對黨 < opposition\-\(political\)\-party;
+失足 < to\-take\-a\-wrong\-step\-in\-life;
+中文廣播 < chinese\-\(language\)\-broadcast;
+移殖手術 < \(organ\)\-transplant\-operation;
+犧牲 < sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 < abe\-\(short\-form\-for\-abraham\);
+猜忌 < be\-suspicious\-and\-jealous\-of;
+黨內 < within\-the\-\(communist\)\-party;
+說明書 < synopsis\-\(of\-a\-play\-or\-film\);
+動蕩 < \(social\-or\-political\)\-unrest;
+王丹 < wang\-dan\-\(chinese\-dissident\);
+叛亂罪 < the\-crime\-of\-armed\-rebellion;
+浪子回頭 < the\-return\-of\-a\-prodigal\-son;
+差得多 < fall\-short\-by\-a\-large\-amount;
+不急之務 < a\-matter\-of\-no\-great\-urgency;
+電磁干擾 < electromagnetic\-interference;
+台灣話 < taiwanese\-chinese\-\(language\);
+啦 < final\-particle\-of\-assertion;
+综 < arrange\-threads\-for\-weaving;
+拭 < wipe\-away\-stains\-with\-cloth;
+叮 < exhort\-or\-enjoin\-repeatedly;
+戟 < halberd\-with\-crescent\-blade;
+凛 < to\-shiver\-with\-cold\-or\-fear;
+栋 < main\-beams\-supporting\-house;
+髦 < flowing\-hair\-of\-young\-child;
+筝 < stringed\-musical\-instrument;
+丙 < third\-of\-the\-heavenly\-stems;
+沂 < river\-in\-southeast\-shandong;
+笈 < bamboo\-box\-used\-carry\-books;
+瓢 < ladle\-made\-from\-dried\-gourd;
+簧 < reed\-of\-woodwind\-instrument;
+蛟 < scaly\-dragon\-with\-four\-legs;
+敕 < an\-imperial\-order\-or\-decree;
+裟 < a\-cassock\-or\-robe\-of\-a\-monk;
+碴 < chipped\-edge\-of\-a\-container;
+瘴 < malaria\-pestilential\-vapors;
+纶 < green\-silk\-thread\-or\-tassel;
+罡 < the\-name\-of\-a\-certain\-stars;
+癸 < last\-of\-ten\-celestial\-stems;
+橇 < a\-sledge\-for\-transportation;
+皋 < the\-high\-land\-along\-a\-river;
+潍 < county\-in\-shandong\-province;
+洙 < name\-of\-a\-river\-in\-shandong;
+獠 < to\-hunt\-at\-night\-by\-torches;
+麒 < legendary\-auspicious\-animal;
+珩 < the\-top\-gem\-of\-the\-pendants;
+谥 < to\-confer\-posthumous\-titles;
+秫 < glutinous\-variety\-of\-millet;
+竽 < ancient\-woodwind\-instrument;
+崮 < \(element\-in\-mountain\-names\);
+愀 < to\-change\-one''s\-countenance;
+鄢 < name\-of\-a\-district\-in\-honan;
+癍 < unhealthy\-marks\-on\-the\-skin;
+鄞 < county\-in\-zhejiang\-province;
+雒 < black\-horse\-with\-white\-mane;
+旒 < fringes\-of\-pearls\-on\-crowns;
+琊 < a\-place\-in\-eastern\-shandong;
+蚨 < a\-kind\-of\-water\-beetle\-cash;
+毳 < fine\-hair\-or\-fur\-on\-animals;
+瘥 < to\-recover\-from\-any\-disease;
+浈 < river\-in\-guangdong\-province;
+嘧 < \(phonetic\)\-as\-in\-pyrimidine;
+不易之論 < perfectly\-sound\-proposition;
+似乎很安全 < to\-appear\-\(to\-be\)\-very\-safe;
+決定 < to\-decide\-\(to\-do\-something\);
+姊妹 < \(older\-and\-younger\)\-sisters;
+逼肖 < bear\-a\-close\-resemblance\-to;
+葉利欽 < \(russian\-president\)\-yeltsin;
+復審 < reexamine\-\(a\-judicial\-case\);
+入門 < introduction\-\(to\-a\-subject\);
+白露 < white\-dew\-\(15th\-solar\-term\);
+各種各樣 < various\-sorts\-and\-varieties;
+補體 < complement\-\(in\-blood\-serum\);
+評比 < to\-evaluate\-\(by\-comparison\);
+不違農時 < not\-miss\-the\-farming\-season;
+黃浦江 < huangpu\-river\-\(in\-shanghai\);
+轉身 < \(of\-a\-person\)\-to\-turn\-round;
+爪哇 < java\-\(programming\-language\);
+效忠 < vow\-loyalty\-and\-devotion\-to;
+亂作決定 < to\-make\-arbitrary\-decisions;
+採辦 < buy\-on\-a\-considerable\-scale;
+弟妹 < sister\-in\-law\-\(wife''s\-side\);
+陷於 < caught\-in\-\(a\-bad\-situation\);
+鵾 < a\-bird\-resembling\-the\-crane;
+外匯 < foreign\-\(currency\)\-exchange;
+大器晚成 < grand\-talents\-mature\-slowly;
+摘由 < high\-points\-\(of\-a\-document\);
+鮨 < epinephelus\-septemfasciatus;
+飦 < well\-boiled\-congee\-or\-gruel;
+雊 < the\-crow\-of\-a\-male\-pheasant;
+隺 < a\-bird\-flying\-high\-ambition;
+背包袱 < have\-a\-weight\-on\-one''s\-mind;
+按步就班 < follow\-the\-prescribed\-order;
+外交部長 < minister\-of\-foreign\-affairs;
+醱 < to\-brew\-for\-the\-second\-time;
+酖 < wine\-with\-bird\-poison\-added;
+百尺杆頭更盡一步 < make\-still\-further\-progress;
+鄿 < county\-in\-xinjiang\-province;
+鄍 < a\-town\-in\-shandong\-province;
+蹚 < tread\-through\-mud\-and\-water;
+中央情報局 < central\-intelligence\-agency;
+側躺 < to\-lie\-down\-\(on\-one''s\-side\);
+報戶口 < apply\-for\-a\-resident\-permit;
+褘 < ceremonial\-gowns\-of\-a\-queen;
+蟰 < small\-spider\-with\-long\-legs;
+蛕 < the\-common\-intestinal\-worms;
+服務提供商 < \(internet\)\-service\-provider;
+搜捕 < hunt\-and\-arrest\-\(fugitives\);
+揹書 < recite\-a\-lesson\-from\-memory;
+幸免 < narrowly\-and\-luckily\-escape;
+不登大雅之堂 < not\-appeal\-to\-refined\-taste;
+肷 < area\-between\-waist\-and\-hips;
+舉世矚目 < attract\-worldwide\-attention;
+獨斷專行 < act\-in\-an\-arbitrary\-fashion;
+籄 < a\-basket\-for\-carrying\-earth;
+國際級 < \(at\-an\)\-international\-level;
+筎 < thin\-outside\-skin\-of\-bamboo;
+瞤 < to\-blink\-or\-twitch\-the\-eyes;
+管理信息庫 < management\-information\-base;
+華盛頓郵報 < washington\-post\-\(newspaper\);
+國標 < guobiao\-\(encoding\-standard\);
+便血 < having\-blood\-in\-one''s\-stool;
+淠 < luxuriant\-\(of\-water\-plants\);
+浰 < attend\-\(official\-functions\);
+病機 < interpretation\-of\-the\-cause;
+泑 < the\-vitreous\-glaze\-on\-china;
+殨 < to\-open\-as\-an\-ulcer\-or\-sore;
+才華 < literary\-or\-artistic\-talent;
+指法 < finger\-method\-\(in\-painting\);
+寶藏 < precious\-\(mineral\)\-deposits;
+提前 < to\-shift\-to\-an\-earlier\-date;
+輩出 < come\-forth\-in\-large\-numbers;
+枏 < a\-variety\-of\-evergreen\-tree;
+板鴨 < pressed\-\(dried\)\-salted\-duck;
+拔海 < elevation\-\(above\-sea\-level\);
+願意不願意 < whether\-one\-wants\-to\-or\-not;
+吃不來 < not\-be\-fond\-of\-certain\-food;
+搇 < to\-press\-down\-with\-the\-hand;
+據報導 < according\-to\-\(news\)\-reports;
+超文件傳輸協定 < hypertext\-transfer\-protocol;
+弸 < a\-bow\-stretched\-to\-the\-full;
+巠 < streams\-running\-underground;
+崙 < kunlun\-mountains\-in\-jiangsu;
+倫敦 < london\-\(capital\-of\-england\);
+堳 < land\-allotment\-feudal\-noble;
+北京語言學院 < beijing\-languages\-institute;
+噕 < to\-speak\-falsely\-or\-wrongly;
+條款 < clause\-\(of\-contract\-or\-law\);
+病例 < \[medical\]\-case\-\[of\-illness\];
+器官 < organ\-\(part\-of\-body\-tissue\);
+丩 < to\-join\-or\-connect\-the\-vine;
+丒 < the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 < to\-extract\-by\-applying\-heat;
+䴳 < distiller''s\-grains\-or\-yeast;
+䳞 < birds\-flying\-all\-directions;
+䳊 < a\-wild\-duck\-like\-water\-bird;
+䳃 < a\-kind\-of\-phoenix\-like\-bird;
+䪷 < to\-toil\-or\-labor\-sedulously;
+䪇 < cushioned\-seat\-on\-a\-vehicle;
+䩿 < a\-big\-drum\-used\-in\-the\-army;
+䧘 < a\-low\-wall\-on\-the\-road\-side;
+䦲 < eaves\-of\-a\-ancestral\-temple;
+䤻 < heavy\-iron\-part\-of\-a\-plough;
+䣲 < to\-heat\-the\-wine\-over\-night;
+䢯 < to\-choose\-or\-select\-careful;
+䠋 < bell\-shaped\-with\-large\-base;
+䟮 < to\-crawl\-on\-hands\-and\-knees;
+䜸 < small\-pieces\-of\-bean\-stalks;
+䜇 < to\-speak\-not\-in\-a\-clear\-way;
+班級 < classes\-or\-grades\-in\-school;
+䚣 < crooked\-horns\-of\-the\-animal;
+䚜 < cattle\-with\-crosswise\-horns;
+䙣 < ragged\-garments\-or\-clothing;
+䙕 < clothes\-that\-have\-no\-lining;
+䙔 < clothes\-made\-of\-poor\-fabric;
+䙓 < the\-lower\-part\-of\-a\-garment;
+䘥 < the\-front\-of\-a\-chinese\-gown;
+䘁 < a\-blue\-green\-colored\-cicada;
+䗵 < a\-disease\-attacked\-silkworm;
+䕮 < flower\-of\-the\-chrysanthemum;
+䔥 < common\-variety\-of\-artemisia;
+䔟 < shake\-and\-wave\-of\-the\-grass;
+病毒學 < virology\-\(study\-of\-viruses\);
+䐼 < thin\-membrane\-of\-the\-throat;
+䐯 < ugly\-appearance\-of\-a\-person;
+䐑 < thin\-cut\-of\-the\-sliced\-meat;
+䍺 < a\-legendary\-goat\-like\-beast;
+䌼 < a\-kind\-of\-fine\-silk\-fabrics;
+䌄 < a\-rope\-for\-drawing\-up\-water;
+私人鑰匙 < private\-key\-\(in\-encryption\);
+䊞 < to\-roll\-round\-with\-the\-hand;
+䉺 < deteriorated\-and\-become\-red;
+䉹 < name\-of\-a\-variety\-of\-bamboo;
+䉸 < slips\-of\-bamboo\-for\-writing;
+䈲 < a\-bamboo\-basket\-for\-fishing;
+䇺 < beans\-and\-peas\-collectively;
+䇵 < one\-of\-the\-wind\-instruments;
+憲法 < constitution\-\(of\-a\-country\);
+䅪 < disease\-of\-the\-private\-part;
+䄰 < forty\-bundles\-of\-rice\-plant;
+䃇 < ink\-for\-imprinting\-of\-seals;
+䀑 < to\-gouge\-out\-an\-eye\-or\-eyes;
+㽎 < the\-profundity\-of\-the\-harem;
+㼠 < a\-crock\-with\-narrow\-opening;
+㺬 < a\-large\-piece\-of\-jade\-stone;
+㺒 < barking\-of\-a\-frightened\-dog;
+不諱 < without\-concealing\-anything;
+㹖 < to\-feed\-animals\-with\-grains;
+㸒 < to\-absurd\-pursuit\-or\-desire;
+地址解析協議 < address\-resolution\-protocol;
+㮀 < tool\-to\-clear\-out\-the\-water;
+㭕 < a\-board\-for\-carrying\-things;
+㩆 < to\-be\-in\-full\-possession\-of;
+而不需 < without\-needing\-\(to\-so\-sth\);
+㧕 < to\-feel\-or\-touch\-with\-hands;
+㧂 < a\-cave\-a\-hold\-in\-the\-ground;
+㦐 < a\-straightforward\-character;
+安插 < place\-in\-a\-certain\-position;
+㥴 < do\-not\-care\-about\-something;
+交換機 < switch\-\(telecommunications\);
+駱 < white\-horse\-with\-black\-mane;
+㡵 < roof\-of\-the\-house\-connected;
+㠟 < a\-mountain\-in\-ancient\-times;
+古蹟 < places\-of\-historic\-interest;
+㛽 < to\-walk\-slowly\-like\-a\-woman;
+㛮 < wife\-of\-one''s\-elder\-brother;
+㓈 < sound\-of\-flying\-or\-speeding;
+㒫 < choked\-and\-unable\-to\-breath;
+㒖 < the\-root\-stock\-of\-the\-lotus;
+氣體 < gas\-\(ie\,\-gaseous\-substance\);
+大陸話 < mainland\-chinese\-\(language\);
+孫子 < grandson\-\(son\-of\-one''s\-son\);
+奔騰 < \(of\-waves\)\-to\-surge\-forward;
+卻之不恭 < to\-refuse\-would\-be\-impolite;
+交換器 < \(telecom\-or\-network\)\-switch;
+通訊社 < a\-news\-service\-\(eg\,\-xinhua\);
+郵電 < post\-and\-telecommunications;
+問候 < give\-someone\-one''s\-respects;
+祖父 < grandfather\-\(father''s\-side\);
+愛好者 < lover\-\(of\-art\,\-sports\,\-etc\);
+決策 < \(make\-a\)\-strategic\-decision;
+祖母 < grandmother\-\(father''s\-side\);
+國際貨幣基金組織 < international\-monetary\-fund;
+馬太福音 < gospel\-according\-to\-matthew;
+針灸 < acupuncture\-and\-moxibustion;
+電話會議 < \(telephone\)\-conference\-call;
+一旦 < in\-case\-\(something\-happens\);
+壽辰 < birthday\-\(of\-an\-old\-person\);
+不落窠臼 < not\-follow\-the\-beaten\-track;
+按照計劃 < according\-to\-\(the\)\-plan\-\.\.\.;
+公安部 < ministry\-of\-public\-security;
+抱不平 < be\-outraged\-by\-an\-injustice;
+事情要做 < thing\-that\-needs\-to\-be\-done;
+復甦 < recovery\-\(health\,\-economic\);
+時期 < a\-period\-in\-time\-or\-history;
+各地 < in\-all\-parts\-of\-\(a\-country\);
+男子漢 < man\-\(i\.e\.\-manly\,\-masculine\);
+畦 < sections\-in\-vegetable\-farm;
+町 < raised\-path\-between\-fields;
+囁 < move\-lips\-as\-when\-speaking;
+伦 < normal\-human\-relationships;
+嘛 < final\-exclamatory\-particle;
+萨 < buddhist\-gods\-or\-immortals;
+桐 < name\-applied\-various\-trees;
+蒂 < peduncle\-or\-stem\-of\-plants;
+紺 < dark\-blue\-or\-reddish\-color;
+棵 < numerary\-adjunct\-for\-trees;
+憋 < to\-suppress\-inner\-feelings;
+孜 < be\-as\-diligent\-as\-possible;
+粱 < better\-varieties\-of\-millet;
+峒 < mountain\-in\-gansu\-province;
+榨 < to\-press\-or\-extract\-juices;
+鄱 < county\-and\-lake\-in\-jiangxi;
+菠 < spinach\-and\-similar\-greens;
+淞 < name\-of\-a\-river\-in\-jiangsu;
+淄 < river\-in\-shandong\-province;
+悱 < to\-be\-desirous\-of\-speaking;
+漯 < river\-in\-northern\-shandong;
+蕙 < species\-of\-fragrant\-orchid;
+滁 < district\-in\-anhui\-province;
+狁 < a\-tribe\-of\-scythian\-nomads;
+酢 < toast\-one''s\-host\-with\-wine;
+衿 < collar\-or\-lapel\-of\-garment;
+嶝 < path\-leading\-up\-a\-mountain;
+旃 < silk\-banner\-with\-bent\-pole;
+齑 < break\-or\-smash\-into\-pieces;
+脘 < internal\-cavity\-of\-stomach;
+镒 < measure\-of\-weight\-for\-gold;
+眭 < evil\-look\-of\-deep\-set\-eyes;
+锖 < the\-color\-of\-the\-a\-mineral;
+邙 < mountain\-in\-henan\-province;
+敫 < ancient\-musical\-instrument;
+萑 < grass\-used\-for\-making\-mats;
+觯 < wine\-goblet\-made\-from\-horn;
+舣 < to\-moor\-a\-boat\-to\-the\-bank;
+碑文 < an\-inscription\-on\-a\-tablet;
+巴兒狗 < pekingese\-\(a\-breed\-of\-dog\);
+一路平安 < to\-have\-a\-pleasant\-journey;
+紐約時報 < new\-york\-times\-\(newspaper\);
+台北 < taipei\-\(capital\-of\-taiwan\);
+常問問題 < frequently\-asked\-questions;
+百孔千瘡 < riddled\-with\-gaping\-wounds;
+兵連禍結 < ravaged\-by\-successive\-wars;
+河內 < hanoi\-\(capital\-of\-vietnam\);
+量力 < to\-estimate\-one''s\-strength;
+本地管理界面 < local\-management\-interface;
+長期以來 < ever\-since\-a\-long\-time\-ago;
+存車處 < parking\-lot\-\(for\-bicycles\);
+斡旋 < mediate\-\(a\-conflict\,\-etc\.\);
+發展核武器 < to\-develop\-nuclear\-weapons;
+安家落戶 < make\-one''s\-home\-in\-a\-place;
+入木三分 < written\-in\-a\-forceful\-hand;
+牌匾 < board\-\(attached\-to\-a\-wall\);
+動手 < to\-hit\-with\-hands\-or\-fists;
+鼻牛兒 < hardened\-mucus\-in\-nostrils;
+步月 < to\-stroll\-beneath\-the\-moon;
+異步傳輸模式 < asynchronous\-transfer\-mode;
+誓師 < to\-vow\-before\-one''s\-troops;
+部委 < ministries\-and\-commissions;
+難怪 < \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 < \(loan\,\-wage\,\-price\)\-freeze;
+施加 < exert\-\(effort\-or\-pressure\);
+視窗 < windows\-\(operating\-system\);
+巨著 < monumental\-\(literary\)\-work;
+分時多工 < time\-division\-multiplexing;
+募化 < to\-collect\-alms\-\(buddhism\);
+根深蒂固 < deep\-rooted\-\(problem\,\-etc\);
+叛變的省份 < renegade\-province\-\(taiwan\);
+部下 < troops\-under\-one''s\-command;
+馵 < horse\-with\-white\-back\-legs;
+飣 < display\-food\-for\-show\-only;
+星島日報 < sing\-tao\-daily\-\(newspaper\);
+闒 < upper\-story\-door\-or\-window;
+全程 < \(during\-an\)\-entire\-journey;
+長篇 < lengthy\-\(report\-or\-speech\);
+電腦輔助教材 < computer\-aided\-instruction;
+西湖 < the\-west\-lake\,\-in\-hangzhou;
+客戶機服務器環境 < client\-server\-environement;
+銁 < a\-weight\-of\-thirty\-cattics;
+醊 < to\-pour\-wine\-in\-a\-libation;
+郿 < county\-in\-shaanxi\-province;
+郳 < state\-in\-shandong\-province;
+郠 < place\-in\-shandong\-province;
+郚 < towns\-in\-shandong\-province;
+輤 < a\-pall\-to\-cover\-the\-hearse;
+撥弄 < move\-to\-and\-fro\-\(with\-hand;
+表記 < something\-given\-as\-a\-token;
+踒 < to\-slip\-and\-sprain\-a\-blimb;
+表裡 < the\-outside\-and\-the\-inside;
+覐 < a\-sleep\-to\-realize\-to\-feel;
+桃花運 < luck\-with\-the\-opposite\-sex;
+電信服務 < telecommunications\-service;
+逼債 < press\-for\-payment\-of\-debts;
+公開鑰匙 < public\-key\-\(in\-encryption\);
+虡 < support\-structure\-for\-bell;
+薾 < luxuriant\-growth\-of\-flower;
+弗塞奇 < versace\-\(fashion\-designer\);
+茈 < a\-plant\-yielding\-a\-red\-dye;
+普通話 < mandarin\-\(common\-language\);
+電信網路 < telecommunications\-network;
+膆 < the\-corp\-of\-a\-bird\-or\-fowl;
+電腦輔助工程 < computer\-aided\-engineering;
+感染人數 < number\-of\-infected\-persons;
+筆鋒 < the\-tip\-of\-a\-writing\-brush;
+報刊 < newspapers\-and\-periodicals;
+百步穿楊 < shoot\-with\-great\-precision;
+罭 < drag\-net\-made\-of\-fine\-mesh;
+罏 < earthen\-stand\-for\-wine\-jug;
+罍 < large\-earthenware\-wine\-jar;
+演講 < \(give\)\-a\-speech\-or\-lecture;
+繸 < hem\-or\-border\-of\-a\-garment;
+國父 < father\|founder\-of\-a\-nation;
+篟 < luxuriant\-growth\-of\-bamboo;
+依靠 < rely\-on\-\(for\-support\,\-etc\);
+所長 < head\-of\-an\-institute\,\-etc\.;
+窆 < to\-put\-a\-coffin\-in\-a\-grave;
+祲 < ominous\-or\-sinister\-spirit;
+幾年來 < for\-the\-past\-several\-years;
+若干 < a\-certain\-number\|amount\-of;
+癕 < loss\-of\-the\-sense\-of\-smell;
+頤和園 < summer\-palace\-\(in\-beijing\);
+競選 < run\-for\-\(electoral\)\-office;
+搶先 < to\-rush\-\(to\-do\-sth\-urgent\);
+珛 < quickly\-deteriorating\-jade;
+停留 < stay\-somewhere\-temporarily;
+澷 < water\-overflowing\-diffused;
+出現意外 < \(to\-appear\)\-unexpected\(ly\);
+毩 < a\-leather\-ball\-for\-kicking;
+病株 < diseased\-or\-infected\-plant;
+俗稱 < be\-commonly\-referred\-to\-as;
+揹 < carry\-things\-on\-one''s\-back;
+揁 < sound\-of\-setting\-up\-a\-koto;
+一觸即發 < could\-happen\-at\-any\-moment;
+行將 < be\-about\-to\-\(do\-something\);
+足球 < football\-\(british\-english\);
+纖芯直徑 < core\-diameter\-\(of\-a\-fiber\);
+媧 < mythological\-snail\-goddess;
+背脊 < the\-back\-of\-the\-human\-body;
+囉 < exclamatory\-final\-particle;
+客戶服務器結構 < client\-server\-architecture;
+嘷 < the\-roaring\-of\-wild\-beasts;
+進行交易 < to\-carry\-out\-a\-transaction;
+抗擊 < resist\-\(a\-military\-attack\);
+剞 < carving\-or\-engraving\-knife;
+馬來人 < malaysian\-person\-or\-people;
+冏 < abutilon\-avicennae\-\(plant\);
+別出心裁 < adopt\-an\-original\-approach;
+尋機 < to\-look\-for\-an\-opportunity;
+乫 < used\-in\-korean\-place\-names;
+實況 < what\-is\-actually\-happening;
+䵆 < grains\-from\-the\-distillery;
+䲯 < a\-kind\-of\-black\-small\-bird;
+䯓 < the\-head\-bone\-of\-livestock;
+䮶 < flock\-of\-horses\-stampeding;
+䮣 < a\-yellow\-with\-a\-white\-tail;
+媒體接口連接器 < medium\-interface\-connector;
+底特律 < detroit\-\(a\-city\-in\-the\-us\);
+䬱 < coarse\-grains\-such\-as\-corn;
+中國科學院 < chinese\-acadamy\-of\-science;
+䩲 < a\-tool\-used\-to\-cut\-leather;
+䩚 < to\-mend\-the\-soles\-of\-shoes;
+百發百中 < every\-shot\-hits\-the\-target;
+丁雲 < ding\-yun\-\(a\-personal\-name\);
+虛擬通道連接 < virtual\-channel\-connection;
+䡦 < the\-empty\-space\-of\-a\-wheel;
+案板 < kneading\-or\-chopping\-board;
+䠉 < to\-run\-away\-or\-escape\-from;
+䞑 < a\-red\-swelling\-of\-the\-skin;
+保守 < \(politically\)\-conservative;
+䛯 < the\-reasonable\-of\-speeking;
+䖅 < name\-of\-a\-variety\-of\-grass;
+䔅 < name\-of\-a\-variety\-of\-trees;
+䒱 < twigs\-of\-hemp\-used\-fo\-fuel;
+䎷 < an\-old\-man\-with\-white\-hair;
+不送 < don''t\-bother\-to\-see\-me\-out;
+䌠 < hold\-on\-to\-one''s\-own\-views;
+面嚮對象的技術 < object\-oriented\-technology;
+神道 < shinto\-\(japanese\-religion\);
+䋀 < shoes\-made\-of\-hemp\-or\-hair;
+䊮 < name\-of\-a\-variety\-of\-grain;
+䉂 < a\-basket\-for\-earth\-or\-soil;
+䇖 < rope\-made\-of\-bamboo\-strips;
+䆀 < to\-corrupt\-or\-be\-corrupted;
+䅾 < starting\-to\-put\-forth\-ears;
+䅬 < small\-bundle\-of\-rice\-plant;
+將就 < accept\-\(a\-bit\-reluctantly\);
+不亢不卑 < neither\-haughty\-nor\-humble;
+䁎 < to\-make\-a\-close\-inspection;
+䀊 < a\-kind\-of\-water\-containers;
+懷抱 < \(within\-someone''s\)\-embrace;
+㼩 < concave\-channels\-of\-tiling;
+用戶端設備 < customer\-premise\-equipment;
+情況下 < under\-\(this\)\-circumstances;
+㺠 < a\-black\-ape\-with\-long\-tail;
+㺕 < the\-fighting\-sound\-of\-dogs;
+㹚 < sound\-of\-calling\-to\-a\-calf;
+㷶 < to\-dry\-or\-warm\-near\-a\-fire;
+溫哥華 < vancouver\-\(city\-in\-canada\);
+㷃 < fire\-burns\-for\-a\-long\-time;
+㴔 < the\-noise\-of\-flowing\-water;
+㴋 < deep\-and\-clear\-\-to\-urinate;
+㳧 < the\-water\-flowing\-from\-\.\.\.;
+㱽 < to\-hit\-or\-to\-strikeheavily;
+㱻 < diseases\-of\-dumb\-creatures;
+㱡 < the\-soul\-out\-of\-one''s\-body;
+㱔 < a\-small\-quantity\-or\-number;
+㯟 < foot\-of\-a\-hill\-or\-mountain;
+㭮 < a\-kind\-of\-liquor\-container;
+右邊 < right\-\(as\-opposed\-to\-left\);
+不等價交換 < exchange\-of\-unequal\-values;
+白頭翁 < root\-of\-chinese\-pulsatilla;
+兀 < duplicate\-of\-big\-five\-a461;
+白壁無瑕 < impeccable\-moral\-integrity;
+㦃 < perfect\-personal\-character;
+社論 < editorial\-\(in\-a\-newspaper\);
+家常 < the\-daily\-life\-of\-a\-family;
+㥍 < to\-bear\-jealous\-hatred\-for;
+㤬 < full\-of\-anger\-and\-vexation;
+㤎 < a\-model\-or\-typical\-example;
+㤄 < raging\-animosity\-or\-hatred;
+㣧 < the\-succession\-in\-a\-family;
+㣣 < to\-walk\-in\-an\-unsteady\-way;
+㢸 < device\-for\-regulating\-bows;
+㢒 < an\-almost\-collapsing\-house;
+書聖 < a\-great\-calligraphy\-master;
+㜪 < name\-of\-a\-family\-or\-a\-clan;
+㜕 < relatives\-through\-marriage;
+㛲 < the\-hair\-on\-the\-human\-head;
+㚿 < a\-goddess''s\-name\-in\-legend;
+㙡 < a\-kind\-of\-eatable\-mushroom;
+㘹 < to\-spread\-soil\-on\-the\-road;
+中文版 < chinese\-\(language\)\-version;
+㘤 < circle\-of\-the\-moving\-water;
+㖨 < indistinct\-nasal\-utterance;
+㒽 < a\-kind\-of\-cap\-for\-children;
+高中生 < senior\-high\-school\-student;
+㐖 < a\-translated\-name\-of\-india;
+資本 < capital\-\(as\-in\-capitalism\);
+板羽球 < battledore\-and\-shuttlecock;
+風琴 < organ\-\(musical\-instrument\);
+字帖 < copybook\-\(for\-calligraphy\);
+敗子回頭 < return\-of\-the\-prodigal\-son;
+訪問美國 < to\-visit\-the\-united\-states;
+不失時機 < seize\-the\-opportune\-moment;
+安分 < not\-go\-beyond\-one''s\-bounds;
+暗笑 < laugh\-in\-\(up\)\-one''s\-sleeve;
+導彈潛艇 < \(guided\)\-missile\-submarine;
+美玲 < mei\-ling\-\(a\-person''s\-name\);
+碧血 < blood\-shed\-in\-a\-just\-cause;
+參兩院 < both\-houses\-of\-us\-congress;
+洪森 < hun\-sen\-\(cambodian\-leader\);
+稟告 < report\-\(to\-one''s\-superior\);
+遺體 < remains\-\(of\-a\-dead\-person\);
+避風 < take\-shelter\-from\-the\-wind;
+福建 < fujian\-\(province\-of\-china\);
+安如泰山 < as\-secure\-as\-mount\-taishan;
+勘誤 < to\-correct\-printing\-errors;
+升級 < to\-escalate\-\(in\-intensity\);
+強調 < to\-emphasize\-\(a\-statement\);
+而且 < not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 < to\-move\-the\-capitol\-\(city\);
+不義之財 < ill\-gotten\-wealth\-or\-gains;
+重要的是 < it\-is\-important\-\(that\)\-\.\.\.;
+不但 < not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 < make\-a\-production\-contract;
+癟螺痧 < cholera\-\(with\-dehydration\);
+届 < numerary\-adjunct\-for\-time;
+谁 < who\?\-whom\?\-whose\?\-anyone\?;
+阿 < prefix\-for\-people''s\-names;
+莢 < pods\-of\-leguminous\-plants;
+狄 < tribe\-from\-northern\-china;
+繰 < to\-reel\-silk\-from\-cocoons;
+漓 < river\-in\-guangxi\-province;
+咋 < question\-forming\-particle;
+麟 < female\-of\-chinese\-unicorn;
+渭 < name\-of\-a\-river\-in\-shanxi;
+芜 < luxurious\-growth\-of\-weeds;
+绎 < to\-unravel\-or\-unreel\-silk;
+璐 < beautiful\-variety\-of\-jade;
+韶 < music\-of\-the\-emperor\-shun;
+鬟 < dress\-hair\-in\-coiled\-knot;
+罂 < long\-necked\-jar\-or\-bottle;
+靳 < strap\-on\-a\-horse''s\-breast;
+淦 < river\-in\-jiangxi\-province;
+搡 < to\-push\-over\-or\-push\-back;
+艮 < seventh\-of\-eight\-diagrams;
+湟 < river\-in\-qinghai\-province;
+猱 < a\-monkey\-with\-yellow\-hair;
+涪 < river\-in\-sichuan\-province;
+亳 < name\-of\-district\-in\-anhui;
+蔺 < rush\-used\-for\-making\-mats;
+琬 < the\-virtue\-of\-a\-gentleman;
+猗 < exclamation\-of\-admiration;
+鼙 < drum\-carried\-on\-horseback;
+蕲 < variety\-of\-artemisia\-seek;
+瓞 < young\-melons\-just\-forming;
+辁 < cart\-wheel\-with\-no\-spokes;
+酆 < name\-of\-zhou\-period\-state;
+北朝 < the\-northern\-dynasties\-\(a;
+超文本標記語言 < hypertext\-markup\-language;
+永久虛電路 < permanent\-virtual\-circuit;
+包攬 < undertake\-the\-whole\-thing;
+勞教 < reeducation\-through\-labor;
+半場 < half\-of\-a\-game\-or\-contest;
+通信技術 < communications\-technology;
+發達 < developed\-\(country\,\-etc\.\);
+塞爾維亞克羅地亞語 < serbo\-croatian\-\(language\);
+瀉露 < to\-leak\-out\-\(information\);
+歲數 < age\-\(number\-of\-years\-old\);
+外匯儲備 < foreign\-exchange\-reserves;
+開設 < offer\-\(goods\-or\-services\);
+廣東 < guangdong\-province\,\-china;
+放心 < to\-set\-one''s\-mind\-at\-rest;
+魯迅 < name\-of\-an\-author\,\-lu\-xun;
+遙望 < to\-look\-into\-the\-distance;
+電子郵件傳送服務 < \(e\-\)mail\-delivery\-service;
+補足 < bring\-up\-to\-full\-strength;
+透通性 < transparency\-\(networking\);
+熬夜 < stay\-up\-late\-or\-all\-night;
+鰼 < the\-weather\-or\-dojo\-loach;
+體驗 < to\-experience\-for\-oneself;
+撕毀 < tear\-up\-\(a\-contract\,\-etc\);
+傾銷 < to\-dump\-\(goods\,\-products\);
+韔 < a\-wrapper\-or\-case\-for\-bow;
+看法 < way\-of\-looking\-at\-a\-thing;
+陗 < a\-steep\-hill\.\-precipitous;
+營業額 < sum\-or\-volume\-of\-business;
+鏾 < the\-trigger\-of\-a\-crossbow;
+關注 < follow\-\(an\-issue\)\-closely;
+鄠 < county\-in\-shanxi\-province;
+鄎 < a\-place\-in\-henan\-province;
+剝啄 < tap\-\(on\-a\-door\-or\-window\);
+辨析 < differentiate\-and\-analyse;
+不辭辛苦 < make\-nothing\-of\-hardships;
+程式理員 < program\-manager\-\(windows\);
+觷 < to\-process\-or\-carve\-horns;
+民主黨人 < a\-democratic\-party\-member;
+蝰 < vipera\-russelii\-siamensis;
+十億位元以太網絡聯盟 < gigabit\-ethernet\-alliance;
+葶 < draba\-nemerosa\-bebe\-carpa;
+芔 < a\-general\-term\-for\-plants;
+膥 < eggs\-of\-birds\-or\-reptiles;
+三十年來 < for\-the\-past\-thirty\-years;
+技術發展 < technological\-development;
+國產 < made\-in\-one''s\-own\-country;
+高等學校 < colleges\-and\-universities;
+白族 < the\-bai\-\(pai\)\-nationality;
+纑 < to\-soften\-hemp\-by\-boiling;
+原因很簡單 < the\-reason\-is\-very\-simple;
+籩 < bamboo\-container\-for\-food;
+籝 < a\-tube\-to\-hold\-chopsticks;
+康涅狄格 < connecticut\-\(state\-in\-us\);
+笎 < bamboo\-with\-black\-patches;
+單連接站 < single\-attachment\-station;
+禘 < imperial\-ancestor\-worship;
+矮個兒 < a\-person\-of\-short\-stature;
+病癒 < recover\-\(from\-an\-illness\);
+礄 < place\-in\-sichuan\-province;
+寬限 < extend\-\(a\-deadline\,\-etc\.\);
+璪 < pearl\-pendants\-on\-coronet;
+瑽 < tinkling\-of\-jade\-pendants;
+猲 < smoke\-or\-flames\-from\-fire;
+符合標準 < to\-comply\-with\-a\-standard;
+示威遊行 < a\-\(protest\)\-demonstration;
+泜 < a\-river\-in\-hebei\-province;
+泒 < a\-river\-in\-hubei\-province;
+汭 < confluence\-of\-two\-streams;
+櫽 < shape\-wood\-by\-use\-of\-heat;
+晬 < first\-birthday\-of\-a\-child;
+表態 < make\-known\-one''s\-position;
+宣誓 < swear\-an\-oath\-\(of\-office\);
+大敵當前 < confront\-a\-powerful\-enemy;
+悊 < wise\.\-to\-know\-intuitively;
+拜望 < call\-to\-pay\-one''s\-respect;
+彍 < to\-draw\-a\-bow\-to\-the\-full;
+核大國 < a\-nuclear\-power\-\(country\);
+庅 < an\-interrogative\-particle;
+研製過程 < manufacturing\-environment;
+篇幅 < \(take\-up\-or\-devote\)\-space;
+反唇相譏 < answer\-back\-sarcastically;
+核轟炸機 < nuclear\-bomber\-\(aircraft\);
+希臘語 < \(modern\)\-greek\-\(language\);
+首相 < \(japanese\)\-prime\-minister;
+時間內 < within\-\(a\-period\-of\-time\);
+網絡管理系統 < network\-management\-system;
+把式 < person\-skilled\-in\-a\-trade;
+䵵 < yellowish\-black\-and\-white;
+䵫 < light\-red\-yellowish\-black;
+䴛 < to\-make\-decoction\-of\-salt;
+䳷 < a\-second\-name\-for\-chicken;
+䳆 < a\-kind\-of\-species\-of\-myna;
+䰂 < a\-coiffure\-with\-a\-topknot;
+䮕 < horse\-with\-white\-forehead;
+䭨 < wine\-poured\-in\-a\-libation;
+䫀 < the\-lower\-end\-of\-the\-jaws;
+䩝 < to\-tan\-and\-soften\-leather;
+不得人心 < not\-enjoy\-popular\-support;
+淘籮 < basket\-\(for\-washing\-rice\);
+䤂 < a\-second\-name\-for\-vinegar;
+甥女 < niece\-\(sister''s\-daughter\);
+䣴 < to\-lose\-temper\-when\-drunk;
+䣆 < name\-of\-a\-county\-in\-gaomi;
+䢲 < to\-go\-all\-the\-way\-forward;
+䢮 < rapid\-marching\-or\-running;
+䢡 < to\-stamp\-the\-foot\-forward;
+䡹 < the\-low\-rear\-of\-a\-chariot;
+䡯 < sound\-of\-moving\-carriages;
+䡡 < to\-get\-up\-into\-a\-carriage;
+直言不諱 < speak\-frankly\-and\-bluntly;
+景山公園 < name\-of\-a\-park\-in\-beijing;
+䘸 < the\-lower\-front\-of\-a\-robe;
+䘒 < boy''s\-reproductive\-organs;
+䕄 < meat\-in\-the\-form\-of\-paste;
+䓋 < elm\-seeds\-\-\-\-used\-as\-food;
+䑢 < a\-knife\-shaped\-small\-boat;
+䑈 < meat\-to\-offer\-for\-worship;
+漢人 < han\-chinese\-person\|people;
+䍯 < gaot\-with\-different\-horns;
+䍢 < netted\-veined\-window\-sill;
+䋟 < the\-weight\-on\-a\-steelyard;
+䊶 < a\-rope\-for\-leading\-cattle;
+世界衛生組織 < world\-health\-organization;
+伺機 < to\-watch\-for\-one''s\-chance;
+䉗 < a\-receptacle\-or\-container;
+䄸 < grains\-producing\-no\-fruit;
+䄒 < ripening\-of\-paddy\-or\-rice;
+䃁 < uneven\-or\-rugged\-terrains;
+䁔 < big\-eyes\-protuberant\-eyes;
+㿰 < durable\-and\-solid\-leather;
+頸部 < the\-neck\-area\-of\-the\-body;
+㿂 < obstraction\-of\-the\-bowels;
+㾵 < a\-dark\-colored\-birth\-mark;
+㾜 < weak\-breath\-of\-a\-sick\-man;
+㽾 < a\-kind\-of\-woman''s\-disease;
+通訊自動化 < communications\-automation;
+㸲 < a\-kind\-of\-mountain\-cattle;
+㷯 < smoke\-and\-dust\-everywhere;
+㶺 < the\-light\-or\-glow\-of\-fire;
+㵽 < the\-strength\-of\-a\-current;
+㱥 < the\-evil\-spirits\-come\-out;
+㰦 < to\-breath\-with\-mouth\-open;
+㰔 < a\-kind\-of\-edible\-mushroom;
+㰎 < a\-wooden\-pestle\-or\-rammer;
+㭛 < a\-kind\-of\-climbing\-plants;
+㩠 < a\-fierce\-or\-bloody\-battle;
+㦛 < to\-walk\-in\-a\-composed\-way;
+面臨困難 < to\-be\-faced\-with\-problems;
+背影 < a\-view\-of\-somebody''s\-back;
+㠝 < lofty\-and\-steep\-mountains;
+㠐 < high\-and\-pointed\-mountain;
+㞚 < to\-pile\-up\-layer\-by\-layer;
+㜯 < a\-word\-to\-designate\-woman;
+㜮 < to\-go\-beyond\-normal\-limit;
+不務正業 < not\-engage\-in\-honest\-work;
+㚓 < tie\-beams\-of\-a\-small\-boat;
+狡賴 < to\-deny\-\(through\-sophism\);
+㘌 < to\-laugh\-without\-stopping;
+㗦 < a\-loud\-and\-confused\-noise;
+㗚 < vexingly\-verbose\-or\-wordy;
+㗕 < the\-crowing\-of\-a\-pheasant;
+㖄 < sound\-of\-calling\-chickens;
+㕚 < claws\-of\-birds\-or\-animals;
+愛理不理 < look\-cold\-and\-indifferent;
+㐳 < high\-and\-level\-on\-the\-top;
+變賣 < sell\-off\-\(one''s\-property\);
+下工夫 < to\-put\-in\-time\-and\-energy;
+決賽 < finals\-\(of\-a\-competition\);
+板書 < writing\-on\-the\-blackboard;
+珀斯 < perth\-\(city\-in\-australia\);
+改善通訊 < to\-improve\-communications;
+總參謀長 < \(military\)\-chief\-of\-staff;
+愛憐 < show\-tender\-affection\-for;
+暴漲 < rise\-suddenly\-and\-sharply;
+錄共 < to\-take\-down\-a\-confession;
+本家 < a\-member\-of\-the\-same\-clan;
+面臨 < be\-faced\-with\-\(a\-problem\);
+背信棄義 < break\-faith\-with\-somebody;
+值得注意的是 < it''s\-worth\-noting\-that\.\.\.;
+跨國公司 < transnational\-corporation;
+日本人 < japanese\-person\-or\-people;
+共和黨人 < a\-republican\-party\-member;
+池湯 < large\-pool\-in\-a\-bathhouse;
+無限期 < unlimited\-\(time\)\-duration;
+獎勵 < reward\-\(as\-encouragement\);
+順差 < \(trade\-or\-budget\)\-surplus;
+環球定位系統 < global\-positioning\-system;
+初選 < \(us\)\-primaries\-\(election\);
+帕蘭卡 < palanka\-\(a\-personal\-name\);
+報銷 < submit\-an\-expense\-account;
+蜀 < name\-of\-an\-ancient\-state;
+洛 < river\-in\-shanxi\-province;
+叔 < father''s\-younger\-brother;
+絹 < kind\-of\-thick\-stiff\-silk;
+罩 < basket\-for\-catching\-fish;
+夷 < ancient\-barbarian\-tribes;
+砰 < sound\-of\-crashing\-stones;
+哎 < interjection\-of\-surprise;
+朔 < first\-day\-of\-lunar\-month;
+揣 < put\-things\-under\-clothes;
+嵋 < omei\-mountain\-in\-sichuan;
+缉 < to\-sew\-in\-close\-stitches;
+噶 < used\-in\-transliterations;
+掰 < to\-break\-with\-both\-hands;
+霆 < a\-sudden\-peal\-of\-thunder;
+漳 < name\-of\-a\-river\-in\-henan;
+巳 < sixth\-of\-twelve\-branches;
+嗝 < cackling\-of\-fowls\-to\-gag;
+姘 < illicit\-sexual\-relations;
+霏 < falling\-of\-snow\-and\-rain;
+郸 < county\-in\-hebei\-province;
+呦 < the\-bleating\-of\-the\-deer;
+掮 < to\-bear\-on\-the\-shoulders;
+莆 < a\-kind\-of\-legendary\-tree;
+阡 < footpaths\-between\-fields;
+鸪 < species\-of\-taiwan\-pigeon;
+氐 < name\-of\-an\-ancient\-tribe;
+呤 < purine\-in\-chem\.\-compound;
+嬗 < succession\-to\-the\-throne;
+觏 < meet\-or\-see\-unexpectedly;
+濮 < county\-in\-henan\-province;
+郴 < county\-in\-hunan\-province;
+轾 < low\-rear\-portion\-of\-cart;
+稞 < grain\-ready\-for\-grinding;
+郧 < county\-in\-hubei\-province;
+蹼 < webbed\-feet\-of\-waterfowl;
+甑 < boiler\-for\-steaming\-rice;
+妗 < wife\-of\-mother''s\-brother;
+浠 < name\-of\-a\-river\-in\-hubei;
+鳔 < swimming\-bladder\-of\-fish;
+篌 < ancient\-music\-instrument;
+秕 < empty\-grain\-or\-rice\-husk;
+琚 < ornamental\-gems\-for\-belt;
+鲵 < cryptobranchus\-japonicus;
+艨 < long\-and\-narrow\-war\-boat;
+涑 < river\-in\-shansi\-province;
+雩 < offer\-sacrifice\-for\-rain;
+佾 < a\-row\-or\-file\-of\-dancers;
+缂 < the\-woof\-of\-a\-woven\-item;
+艴 < the\-countenance\-changing;
+滏 < name\-of\-a\-river\-in\-hebei;
+人民幣 < chinese\-unit\-of\-currency;
+馬可福音 < gospel\-according\-to\-mark;
+流氓罪 < the\-crime\-of\-hooliganism;
+城關 < area\-outside\-a\-city\-gate;
+錄音機 < \(tape\)\-recording\-machine;
+運算 < \(mathematical\)\-operation;
+州長 < governor\-\(of\-a\-us\-state\);
+每年一度 < once\-a\-year\-\(every\-year\);
+域名註冊 < domain\-name\-registration;
+代之以 < \(has\-been\)\-replaced\-with;
+部屬 < affiliated\-to\-a\-ministry;
+引擎 < engine\-\(transliteration\);
+兵貴神速 < speed\-is\-precious\-in\-war;
+變戲法 < perform\-conjuring\-tricks;
+多邊合作 < multilateral\-cooperation;
+發行額 < \(periodical\)\-circulation;
+登記 < to\-register\-\(one''s\-name\);
+十三日 < thirtieth\-day\-of\-a\-month;
+幀首定界符 < start\-of\-frame\-delimiter;
+投放市場 < to\-put\-sth\-on\-the\-market;
+機組 < flight\-crew\-\(on\-a\-plane\);
+鷞 < the\-turquoise\-kingfisher;
+下半身 < lower\-half\-of\-one''s\-body;
+鵁 < mycticorax\-prasinosceles;
+荒無人煙 < desolate\-and\-uninhabited;
+鮰 < a\-small\-kind\-of\-sturgeon;
+遼寧 < liaoning\-province\,\-china;
+髠 < shave\-head\-as\-punishment;
+騕 < name\-of\-a\-fabulous\-horse;
+照常 < \(business\,\-etc\)\-as\-usual;
+韂 < a\-saddle\-flap\.\-trappings;
+因特網提供商 < internet\-sevice\-provider;
+約翰福音 < gospel\-according\-to\-john;
+陴 < a\-parapet\-on\-a\-city\-wall;
+闤 < wall\-around\-market\-place;
+印歐語言 < indo\-european\-\(language\);
+撫摸 < gently\-caress\-and\-stroke;
+切斷 < cut\-off\-\(a\-supply\,\-etc\.\);
+網絡操作系統 < network\-operating\-system;
+習以為常 < be\-accustomed\-or\-used\-to;
+兵荒馬亂 < turmoil\-and\-chaos\-of\-war;
+建制 < organizational\-structure;
+不承認主義 < policy\-of\-nonrecognition;
+退役 < retire\-from\-the\-military;
+違反 < to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 < help\-in\-the\-mess\-kitchen;
+不動聲色 < maintain\-one''s\-composure;
+浮點運算 < floating\-point\-operation;
+贑 < \<abbrv\>\-jiangxi\-province;
+補稅 < pay\-a\-tax\-one\-has\-evaded;
+訡 < to\-chant\-to\-moan\-to\-sigh;
+襲擊 < \(make\-a\)\-surprise\-attack;
+內政部長 < minister\-of\-the\-interior;
+白淨 < \(of\-skin\)\-fair\-and\-clear;
+蛁 < pomponia\-maculatiocollis;
+巡查 < to\-go\-around\-and\-inspect;
+蘀 < falling\-leaves\-and\-barks;
+藺 < rush\-used\-in\-making\-mats;
+兵書 < a\-book\-on\-the\-art\-of\-war;
+菴 < small\-buddhist\-monastery;
+鼻針療法 < nose\-acupuncture\-therapy;
+莔 < fritillaria\-verticillata;
+茼 < chrysanthemum\-coronarium;
+艥 < an\-oar\-or\-paddle\.\-to\-row;
+產銷 < production\-and\-marketing;
+膙 < callous\-skin\-on\-the\-feet;
+腜 < quickening\-of\-the\-foetus;
+肳 < the\-corners\-of\-the\-mouth;
+闌尾 < appendix\-\(in\-human\-body\);
+翛 < look\-of\-rumpled\-feathers;
+罝 < net\-for\-catching\-rabbits;
+幅員 < a\-country''s\-surface\-area;
+虛擬環境 < theorhetical\-environment;
+撥付 < appropriate\-sum\-of\-money;
+緌 < tassels\-hanging\-from\-hat;
+密切注意 < close\-attention\-\(to\-sth\);
+國營 < state\-run\-\(company\,\-etc\);
+圖像用戶介面 < graphical\-user\-interface;
+筸 < name\-of\-a\-place\-in\-honan;
+面嚮對象語言 < object\-oriented\-language;
+損失 < a\-\(financial\,\-etc\.\)\-loss;
+辦公 < handle\-official\-business;
+楊百翰大學 < brigham\-young\-university;
+璠 < a\-piece\-of\-precious\-jade;
+玶 < name\-of\-one\-kind\-of\-jade;
+獞 < name\-of\-a\-variety\-of\-dog;
+不拘一格 < not\-stick\-to\-one\-pattern;
+余震 < \(earthquake\)\-aftershocks;
+畚箕 < a\-bamboo\-or\-wicker\-scoop;
+灨 < the\-river\-gan\-in\-jiangxi;
+濲 < name\-of\-a\-river\-in\-hunan;
+完全懂得 < to\-understand\-completely;
+突顯 < make\-something\-stand\-out;
+不平則鳴 < where\-there\-is\-injustice;
+洧 < name\-of\-a\-river\-in\-honan;
+核不擴散 < nuclear\-nonproliferation;
+握力 < \(strength\-of\-one''s\)\-grip;
+樧 < zanthoxylum\-ailanthoides;
+榤 < perch\-for\-fowls\-roost\-on;
+內政部 < ministry\-of\-the\-interior;
+共同閘道介面 < common\-gateway\-interface;
+擺脫危機 < to\-break\-out\-of\-a\-crisis;
+栂 < a\-kind\-of\-evergreen\-tree;
+富布賴特 < fullbright\-\(scholarship\);
+旡 < choke\-on\-something\-eaten;
+馬裡 < mali\-\(name\-of\-a\-country\);
+撋 < to\-rub\-between\-the\-hands;
+病態 < morbid\-or\-abnormal\-state;
+控制 < to\-\(have\)\-control\-\(over\);
+撥亂反正 < bring\-order\-out\-of\-chaos;
+惌 < to\-bear\-a\-grudge\-against;
+佳能 < canon\-\(japanese\-company\);
+病家 < a\-patient\-and\-his\-family;
+疑惑 < \(a\-sense\-of\)\-uncertainty;
+崶 < name\-of\-a\-legendary\-hill;
+崁 < a\-place\-in\-taiwan\-tainan;
+尞 < fuel\-used\-for\-sacrifices;
+無黨派 < politically\-unaffiliated;
+打牌 < to\-play\-mahjong\-or\-cards;
+奞 < the\-stride\-made\-by\-a\-man;
+夗 < to\-turn\-over\-when\-asleep;
+變電站 < \(transformer\)\-substation;
+做客 < to\-be\-a\-guest\-or\-visitor;
+安第斯山 < the\-andes\-mountain\-range;
+凜 < shiver\-with\-cold\-or\-fear;
+僰 < ancient\-aboriginal\-tribe;
+百煉成鋼 < be\-tempered\-into\-a\-steel;
+行使 < exercise\-\(a\-right\,\-etc\.\);
+筆挺 < \(standing\)\-very\-straight;
+分佈式結構 < distributed\-architecture;
+安神 < calm\-\(soothe\)\-the\-nerves;
+聳肩 < to\-shrug\-one''s\-shoulders;
+亃 < name\-of\-a\-kind\-of\-animal;
+乺 < painting\-tool\-place\-name;
+乶 < korean\-place\-name\-pholha;
+䵂 < to\-grind\-wheat\-to\-powder;
+䲳 < birds\-flying\-up\-and\-down;
+國務次卿 < under\-secretary\-of\-state;
+䲛 < an\-ancient\-name\-for\-tuna;
+䲄 < a\-kind\-of\-fiish\-in\-ocean;
+䰍 < a\-kind\-of\-dark\-red\-paint;
+䰆 < beautiful\-and\-hairy\-mane;
+䯖 < the\-muscles\-of\-the\-thigh;
+半信半疑 < half\-believe\,\-half\-doubt;
+䬳 < cakes\-made\-of\-rice\-flour;
+䫯 < to\-take\-a\-casual\-look\-at;
+深空 < deep\-space\-\(outer\-space\);
+䪀 < known\-together\-as\-saddle;
+䨒 < sound\-of\-the\-water\-drops;
+唐納 < tanner\-\(english\-surname\);
+䦨 < a\-door\-curtain\-or\-screen;
+䤯 < container\-for\-thick\-soup;
+木乃伊 < mummy\-\(preserved\-corpse\);
+䡍 < the\-linch\-pin\-of\-a\-sheel;
+䟗 < to\-stand\-for\-a\-long\-time;
+䟃 < to\-move\-or\-march\-swiftly;
+䚶 < to\-scold\-in\-a\-loud\-voice;
+䙜 < legendary\-mountain\-deity;
+䙈 < a\-loose\-garment\-or\-cloak;
+䙇 < clothes\-of\-coarse\-fabric;
+䗂 < diemyctylus\-pyrrhogaster;
+䔣 < a\-tribe\-in\-ancient\-times;
+䓴 < edible\-fungus\-from\-trees;
+䑎 < soup\-of\-pig''s\-intestines;
+䐻 < big\-pieces\-of\-dried\-meat;
+䐹 < perserved\-and\-dried\-meat;
+䐰 < to\-offer\-food\-as\-tribute;
+外交部 < foreign\-affairs\-ministry;
+䐂 < fat\-of\-animals\-or\-plants;
+䎵 < to\-look\-straight\-forward;
+䊐 < fluffy\-stuffed\-dumplings;
+䊍 < thick\-congee\-or\-porridge;
+持不同政見 < \(politically\)\-dissenting;
+䇏 < to\-pile\-one\-upon\-another;
+䄜 < happiness\-and\-well\-being;
+䄖 < used\-in\-name\-of\-a\-person;
+䃢 < name\-of\-a\-mountain\-lofty;
+䁇 < to\-look\-for\-a\-short\-time;
+䀫 < narrow\-and\-dim\-eye\-sight;
+㿺 < jutting\-on\-the\-epidermis;
+呈請 < to\-submit\-\(to\-superiors\);
+㽒 < the\-children\-of\-a\-sister;
+㼿 < the\-brick\-wall\-of\-a\-well;
+㼛 < long\-necked\-wine\-vessels;
+㻪 < a\-kind\-of\-jade\-fine\-jade;
+㶅 < dried\-up\-mountain\-creeks;
+上訴 < appeal\-\(a\-judicial\-case\);
+㵢 < a\-marsh\-in\-ancient\-times;
+㴰 < a\-river\-in\-ancient\-times;
+懷念 < to\-cherish\-the\-memory\-of;
+㳍 < a\-place\-in\-ancient\-times;
+㳊 < the\-flowing\-of\-the\-water;
+㲊 < to\-understand\-thoroughly;
+㰾 < songs\-of\-the\-people\-of\-楚;
+㰽 < to\-exert\-oneself\-to\-yell;
+㯫 < a\-wattle\-or\-bamboo\-fence;
+㮦 < branches\-growing\-upwards;
+特點 < characteristic\-\(feature\);
+字母 < letter\-\(of\-the\-alphabet\);
+㪛 < to\-pound\-rocks\-to\-pieces;
+㪙 < to\-go\-to\-the\-very\-source;
+㩭 < to\-disturb\-or\-to\-agitate;
+拔火罐兒 < detachable\-stove\-chimney;
+同謀 < to\-conspire\-with\-someone;
+㡪 < the\-varnish\-on\-the\-floor;
+㡧 < to\-stretch\-open\-painting;
+㠇 < name\-of\-a\-mountain\-ridge;
+桃園 < taoyuan\-\(city\-in\-taiwan\);
+㜿 < name\-of\-a\-fish\-in\-legend;
+江面 < the\-surface\-of\-the\-river;
+㗩 < sound\-of\-endure\-coldness;
+㗧 < to\-scold\-with\-loud\-voice;
+古希臘語 < ancient\-greek\-\(language\);
+㓡 < the\-middle\-part\-of\-a\-bow;
+㐨 < a\-kind\-of\-fish\-in\-legend;
+遲浩田 < chinese\-defense\-minister;
+碑額 < the\-top\-part\-of\-a\-tablet;
+伴奏 < to\-accompany\-\(musically\);
+北溫帶 < the\-north\-temperate\-zone;
+打電話 < to\-make\-a\-telephone\-call;
+右翼 < \(politically\)\-right\-wing;
+浙江 < zhejiang\-province\,\-china;
+人民解放軍 < people''s\-liberation\-army;
+識見 < knowledge\-and\-experience;
+買帳 < to\-show\-respect\-\(for\-sb\);
+暗箭 < attack\-by\-a\-hidden\-enemy;
+深圳 < shenzhen\-\(city\-in\-china\);
+程度 < degree\-\(level\-or\-extent\);
+大關 < \(reach\-a\)\-critical\-point;
+從外表來看 < looking\-from\-the\-outside;
+頭版 < \(newspaper''s\)\-front\-page;
+千絲萬縷 < linked\-in\-countless\-ways;
+春聯 < spring\-festivel\-couplets;
+公眾電信網路 < public\-telephone\-network;
+交換虛電路 < switched\-virtual\-circuit;
+以來 < since\-\(a\-previous\-event\);
+蓮花 < lotus\-\(computer\-company\);
+不日 < within\-the\-next\-few\-days;
+諒解 < \(reach\)\-an\-understanding;
+破土典禮 < ground\-breaking\-ceremony;
+教學機構 < educational\-organization;
+不遺余力 < spare\-no\-pains\-or\-effort;
+表示敬意 < respectful\,\-show\-respect;
+蓋章 < to\-affix\-a\-seal\-\(to\-sth\);
+止痛法 < method\-of\-relieving\-pain;
+觸電 < to\-get\-an\-electric\-shock;
+主動 < \(to\-take\-the\)\-initiative;
+路加福音 < gospel\-according\-to\-luke;
+訴說 < tell\-\(to\-another\-person\);
+總統 < president\-\(of\-a\-country\);
+報頭 < masthead\-\(of\-a\-newspaper;
+南沙 < nansha\-\(spratly\)\-islands;
+通道 < \(communications\)\-channel;
+政績 < \(political\)\-achievements;
+瞥 < take\-fleeting\-glance\-at;
+州 < administrative\-division;
+吧 < emphatic\-final\-particle;
+某 < certain\-thing\-or\-person;
+票 < slip\-of\-paper\-or\-bamboo;
+耶 < used\-in\-transliteration;
+厘 < thousandth\-part\-of\-tael;
+彭 < name\-of\-ancient\-country;
+肴 < cooked\-or\-prepared\-meat;
+俎 < chopping\-board\-or\-block;
+淮 < river\-in\-anhui\-province;
+哦 < oh\?\-really\?\-is\-that\-so\?;
+锤 < balance\-weight\-on\-scale;
+仞 < ancient\-unit\-of\-measure;
+芭 < plantain\-or\-banana\-palm;
+磊 < pile\-of\-rocks\-or\-stones;
+呸 < expression\-of\-reprimand;
+拷 < torture\-and\-interrogate;
+抿 < pucker\-up\-lips\-in\-smile;
+卉 < general\-term\-for\-plants;
+髻 < hair\-rolled\-up\-in\-a\-bun;
+裆 < crotch\-or\-seat\-of\-pants;
+蘑 < type\-of\-edible\-mushroom;
+咿 < descriptive\-of\-creaking;
+篾 < bamboo\-splints\-or\-slats;
+淇 < river\-in\-henan\-province;
+蓑 < rain\-coat\-made\-of\-straw;
+檬 < type\-of\-locust\-oracacia;
+淙 < gurgling\-sound\-of\-water;
+殓 < dress\-corpse\-for\-burial;
+琥 < jewel\-in\-shape\-of\-tiger;
+潞 < river\-in\-northern\-china;
+醍 < essential\-oil\-of\-butter;
+妯 < wives\-of\-one''s\-brothers;
+帏 < curtain\-that\-forms\-wall;
+瓒 < ceremonial\-libation\-cup;
+瑗 < large\-ring\-of\-fine\-jade;
+涞 < river\-in\-hebei\-province;
+爻 < diagrams\-for\-divination;
+锟 < ancient\-treasured\-sword;
+芗 < fragrant\-smell\-of\-grain;
+楦 < a\-last\-for\-making\-shoes;
+舁 < carry\-on\-one''s\-shoulder;
+滠 < river\-in\-hubei\-province;
+忌恨 < hate\-\(due\-to\-envy\,\-etc\);
+雹災 < disaster\-caused\-by\-hail;
+出訪 < visit\-a\-foreign\-country;
+核武器材料 < nuclear\-weapon\-material;
+通訊行業 < communications\-industry;
+北半球 < the\-northern\-hemisphere;
+雙絞線 < unshielded\-twisted\-pait;
+發佈新軟件 < to\-release\-new\-software;
+斑斑 < full\-of\-stains\-or\-spots;
+西裝 < \(western\-style\)\-clothes;
+加油 < to\-make\-an\-extra\-effort;
+募捐 < to\-solict\-contributions;
+專屬經濟區 < exclusive\-economic\-zone;
+皴裂 < chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 < what\-one\-sees\-and\-hears;
+包承制 < responsible\-crew\-system;
+南京 < nanjing\-\(city\-in\-china\);
+規約 < terms\-\(of\-an\-agreement\);
+歸心 < converted\-to\-\(religion\);
+逼死 < hound\-somebody\-to\-death;
+本位主義 < selfish\-departmentalism;
+為所欲為 < do\-whatever\-one\-pleases;
+人民法院 < people''s\-court\-\(of\-law\);
+商業機構 < commercial\-organization;
+鼏 < cover\-of\-tripod\-caldron;
+黰 < young\-girl''s\-hair\-style;
+統治 < \(political\)\-rule\-\(over\);
+補課 < make\-up\-a\-missed\-lesson;
+這樣 < this\-\(kind\-of\,\-sort\-of\);
+播放機 < player\-\(e\.g\.\-cd\-player\);
+達成 < to\-reach\-\(an\-agreement\);
+百般 < in\-hundred\-and\-one\-ways;
+鬂 < the\-hair\-on\-the\-temples;
+禁止核武器試驗條約 < nuclear\-test\-ban\-treaty;
+駮 < a\-kind\-of\-fierce\-animal;
+不翼而飛 < disappear\-without\-trace;
+授計 < to\-confide\-a\-plan\-to\-sb;
+畢恭畢敬 < reverent\-and\-respectful;
+科研人員 < \(scientific\)\-researcher;
+報曉 < herald\-the\-break\-of\-day;
+據統計 < according\-to\-statistics;
+透露消息 < to\-disclose\-information;
+中國時報 < china\-times\-\(newspaper\);
+鄾 < place\-in\-hubei\-province;
+鄬 < place\-in\-henan\-province;
+鄘 < state\-in\-henan\-province;
+利市 < \"lai\-see\"\-\(lucky\-money\);
+郰 < birthplace\-of\-confucius;
+邧 < town\-in\-shanxi\-province;
+側重 < place\-extra\-emphasis\-on;
+報恩 < pay\-a\-debt\-of\-gratitude;
+留學生 < student\-studying\-abroad;
+威廉斯堡 < williamsburg\-\(virginia\);
+便宜行事 < act\-at\-one''s\-discretion;
+幫子 < outer\-\(of\-cabbage\,\-etc\);
+自豪 < \(feel\-a\-sense\-of\)\-pride;
+反艦艇巡航導彈 < anti\-ship\-cruise\-missle;
+蚻 < small\-species\-of\-cicada;
+蒱 < gambling\-game\-with\-dice;
+葧 < heleocharis\-plantaginea;
+流亡在海外 < to\-be\-in\-exile\-overseas;
+防務 < \(pertaining\-to\)\-defense;
+業績 < outstanding\-achievement;
+舲 < small\-boat\-with\-windows;
+商業管理 < business\-administration;
+留言 < to\-leave\-one''s\-comments;
+羫 < the\-skeleton\-of\-a\-sheep;
+年來 < over\-the\-last\-\.\.\.\-years;
+罽 < a\-kind\-of\-woolen\-fabric;
+開拍 < begin\-shooting\-\(a\-film\);
+分之 < \(indicating\-a\-fraction\);
+粺 < polished\-rice\-or\-millet;
+多年來 < for\-the\-past\-many\-years;
+篧 < creel\-for\-trapping\-fish;
+篛 < cuticle\-of\-bamboo\-plant;
+基礎速率 < basic\-rate\-\(as\-in\-isdn\);
+答謝 < to\-express\-one''s\-thanks;
+祔 < worship\-one''s\-ancestors;
+筆談 < conversation\-by\-writing;
+瑪麗 < mali\-\(a\-person''s''\-name\);
+睖 < to\-stare\-straight\-ahead;
+眢 < eyes\-without\-brightness;
+症狀 < symptom\-\(of\-an\-illness\);
+畾 < fields\-divided\-by\-dikes;
+璲 < pendant\-girdle\-ornament;
+瑿 < a\-black\-stone\-like\-jade;
+瑯 < kind\-of\-white\-cornelian;
+瑢 < gem\-ornaments\-for\-belts;
+珶 < white\-jade\-worn\-on\-belt;
+中秋節 < the\-mid\-autumn\-festival;
+玕 < inferior\-variety\-of\-gem;
+佔領 < to\-occupy\-\(a\-territory\);
+猈 < dog\-with\-short\-shinbone;
+手寫識別 < handwriting\-recognition;
+澉 < to\-wash\-name\-of\-a\-place;
+潖 < name\-of\-a\-certain\-river;
+非盈利的組織 < non\-profit\-organization;
+殙 < to\-die\-by\-taking\-poison;
+歁 < unsatisfied\-\(of\-eating\);
+欨 < to\-blow\-or\-breathe\-upon;
+欏 < tree\-the\-horse\-chestnut;
+檇 < wooden\-rammer\-or\-pestle;
+橔 < a\-wooden\-chopping\-block;
+訊息處理系統 < message\-handling\-system;
+備料 < get\-the\-materials\-ready;
+坦克 < tank\-\(military\-vehicle\);
+馬路口 < intersection\-\(of\-roads\);
+四川 < sichuan\-province\,\-china;
+怸 < cns\-2\-2a40\-is\-different;
+比比皆是 < can\-be\-found\-everywhere;
+不抵抗主義 < policy\-of\-nonresistance;
+販運 < to\-transport\-\(for\-sale\);
+墄 < the\-steps\-of\-a\-stairway;
+數字訂購線路 < digital\-subscriber\-line;
+棄舊換新 < to\-turn\-over\-a\-new\-leaf;
+今譯 < modern\-language\-version;
+不情之請 < my\-presumptuous\-request;
+啫 < interjection\-of\-warning;
+投放 < to\-put\-in\-\(circulation\);
+吚 < used\-to\-represent\-sound;
+匁 < japanese\-unit\-of\-weight;
+病倒 < be\-down\-with\-an\-illness;
+拷問 < to\-question\-via\-torture;
+仾 < to\-hang\-or\-bow\-the\-head;
+䶝 < growing\-irregular\-teeth;
+䵈 < unsmelted\-hemp\-and\-silk;
+䵀 < coarse\-crumbs\-of\-barley;
+䴑 < a\-legendary\-weired\-bird;
+䴇 < a\-second\-name\-for\-crane;
+䴁 < a\-kind\-of\-rat\-like\-bird;
+䳲 < a\-swarm\-of\-flying\-birds;
+䲴 < a\-kind\-of\-venomous\-bird;
+䱾 < a\-carp\-like\-savory\-fish;
+䰫 < nimble\-and\-active\-ghost;
+雙連接站 < dual\-attachment\-station;
+䭇 < to\-be\-chocked\-with\-food;
+䭆 < small\-children\-eat\-less;
+䬲 < to\-eat\-to\-the\-half\-full;
+䬪 < a\-kind\-of\-cooked\-noodle;
+䬛 < the\-roaring\-of\-the\-wind;
+患難 < trials\-and\-tribulations;
+䨗 < excessive\-rain\-and\-snow;
+䨅 < small\-birds\-\-\-\-the\-wren;
+鍛煉 < to\-do\-physical\-training;
+䥖 < silver\-of\-gold\-filagree;
+䥏 < unfitted\-for\-each\-other;
+䤥 < agricultural\-implements;
+䢜 < the\-marriage\-of\-a\-woman;
+䡽 < the\-shafts\-of\-a\-vehicle;
+䡺 < the\-end\-of\-an\-axle\-tree;
+䡣 < a\-piece\-of\-curved\-board;
+䠣 < net\-to\-trap\-the\-animals;
+䝈 < a\-big\-and\-strenuous\-pig;
+䚐 < getting\-red\-in\-the\-eyes;
+䚊 < to\-look\-from\-a\-distance;
+䙐 < furs\-and\-linen\-garments;
+䘆 < a\-second\-form\-earthworm;
+䗠 < the\-larva\-of\-mosquitoes;
+䗔 < a\-house\-lizard\-or\-gecko;
+䖱 < large\-shrimp\-in\-the\-sea;
+䔾 < a\-kind\-of\-fragrant\-herb;
+䓱 < a\-kind\-of\-herb\-medicine;
+戴維斯 < davis\-\(english\-surname\);
+補助組織 < auxiliary\-organizations;
+䐤 < dried\-and\-seasoned\-meat;
+䐐 < curved\-part\-of\-the\-knee;
+䏙 < brine\-from\-pickled\-meat;
+䏕 < to\-cook\-food\-thoroughly;
+紅樓夢 < a\-dream\-of\-red\-mansions;
+䍹 < odor\-of\-a\-sheep\-or\-goat;
+䍙 < nets\-for\-catching\-birds;
+䍘 < a\-general\-term\-for\-nets;
+䍓 < net\-for\-catching\-rabbit;
+䋫 < to\-wind\-round\-the\-ropes;
+䋨 < to\-set\-in\-order\-the\-old;
+䊴 < food\-made\-of\-rice\-flour;
+䊪 < coarse\-rice\-\-\-\-unhulled;
+䉜 < young\-and\-tender\-bamboo;
+䉖 < framework\-of\-a\-carriage;
+䇗 < bamboo\-with\-long\-joints;
+䇑 < a\-standing\-short\-person;
+䆊 < unhusked\-glutinous\-rice;
+䆉 < the\-swing\-of\-rice\-plant;
+蛙泳 < \(swimming\)\-breaststroke;
+䃉 < a\-stone\-resembling\-jade;
+怎麼 < \(interrogative\-pronoun\);
+䁌 < to\-see\-for\-a\-short\-time;
+㾀 < to\-be\-weaked\-by\-disease;
+㽸 < diseases\-of\-the\-abdomen;
+在今年年底 < at\-the\-end\-of\-this\-year;
+㼧 < tiles\-in\-cylinder\-shape;
+過不去 < make\-life\-difficult\-for;
+㹲 < a\-frightened\-pig\-or\-dog;
+㹮 < a\-kind\-of\-animal\-\-tapir;
+㹝 < a\-legendary\-wild\-animal;
+㹑 < a\-four\-years\-old\-cattle;
+㹊 < a\-cattle\-of\-white\-color;
+㹆 < the\-coulter\-of\-a\-plough;
+回顧歷史 < to\-look\-back\-at\-history;
+通訊協定 < communications\-protocol;
+㸋 < meats\-used\-in\-sacrifice;
+㷮 < scorched\-or\-burned\-wood;
+㷫 < fire\-causing\-by\-dryness;
+㶒 < the\-current\-of\-a\-stream;
+㴲 < a\-river\-in\-ancient\-time;
+㴑 < to\-trace\-up\-to\-a\-source;
+㴏 < the\-pond\-water\-is\-still;
+㲿 < extensive\-body\-of\-water;
+㲄 < unburnt\-bricks\-or\-tiles;
+㱬 < cannot\-recognize\-people;
+㯙 < the\-buckthorn\-or\-jujube;
+駐守 < \(man\-a\-post\-and\)\-defend;
+㭾 < to\-cut\-the\-timber\-apart;
+溫和 < moderate\-\(policy\,\-etc\.\);
+㭃 < the\-large\-rope\-of\-a\-net;
+㭂 < height\-of\-the\-end\-point;
+㬻 < in\-between\-of\-the\-flesh;
+否認 < to\-declare\-to\-be\-untrue;
+㧯 < a\-bucket\-made\-of\-willow;
+㧥 < to\-nip\-with\-the\-fingers;
+㦽 < with\-elegant\-appearance;
+情報處 < source\-\(of\-information\);
+㦺 < a\-lance\-with\-two\-points;
+㦇 < a\-peaceful\-or\-easy\-mood;
+㥅 < used\-in\-a\-person''s\-name;
+㤌 < to\-have\-one''s\-heart\-own;
+㣻 < to\-remedy\-by\-punishment;
+㣪 < to\-walk\-with\-slow\-steps;
+㣆 < to\-loose\-the\-bow\-string;
+㢾 < the\-curved\-end\-of\-a\-bow;
+㢵 < powerful\-and\-strong\-bow;
+㡹 < to\-rely\-upon\-each\-other;
+㡒 < a\-calico\-sack\-for\-grain;
+㡏 < to\-cut\-a\-strip\-of\-cloth;
+㞼 < to\-respectfully\-receive;
+㚬 < a\-lady\-start\-to\-doll\-up;
+㚖 < to\-come\-out\-to\-the\-open;
+㙊 < an\-area\-of\-level\-ground;
+㕸 < sound\-of\-rolling\-a\-boat;
+㔤 < to\-exert\-one''s\-strength;
+腐敗罪 < the\-crime\-of\-corruption;
+㒤 < to\-have\-one''s\-heart\-won;
+㒙 < to\-hand\-or\-bow\-the\-head;
+步履維艱 < have\-difficulty\-walking;
+共同篩選 < collaborative\-filtering;
+白蛇傳 < tale\-of\-the\-white\-snake;
+大驚小怪 < much\-fuss\-about\-nothing;
+辯証唯物主義 < dialectical\-materialism;
+江西 < jiangxi\-province\,\-china;
+愛撫 < to\-show\-tender\-care\-for;
+參與 < to\-participate\-\(in\-sth\);
+港人 < hong\-kong\-person\|people;
+黃河 < yellow\-river\-\(huang\-he\);
+江蘇 < jiangsu\-province\,\-china;
+任命 < to\-appoint\-and\-nominate;
+公安官員 < public\-safety\-officials;
+餅子 < maize\-or\-millet\-pancake;
+期攷 < end\-of\-term\-examination;
+總額 < total\-\(amount\-or\-value\);
+謂語 < \(grammatical\)\-predicate;
+半成品 < semi\-manufactured\-goods;
+中旬 < middle\-third\-of\-a\-month;
+下旬 < last\-third\-of\-the\-month;
+傳輸技術 < transmission\-technology;
+貝克 < baker\-\(english\-surname\);
+亂吃 < to\-eat\-indiscriminantly;
+奔頭兒 < something\-to\-strive\-for;
+冰天雪地 < a\-world\-of\-ice\-and\-snow;
+政府機構 < government\-organization;
+中轉站 < hub\-\(network\-equipment\);
+恩怨 < \(feeling\-of\)\-resentment;
+不外 < not\-beyond\-the\-scope\-of;
+服刑 < serve\-a\-prison\-sentence;
+莫非 < can\-it\-be\-possible\-that;
+廣西 < guangxi\-province\,\-china;
+不可理喻 < be\-impervious\-to\-reason;
+奔瀉 < \(of\-torrents\)\-rush\-down;
+么 < interrogative\-particle;
+被 < passive\-indicator\-''by'';
+申 < to\-state\-to\-a\-superior;
+岡 < ridge\-or\-crest\-of\-hill;
+琴 < chinese\-lute\-or\-guitar;
+嬌 < seductive\-and\-loveable;
+罗 < net\-for\-catching\-birds;
+摸 < gently\-touch\-with\-hand;
+仰 < raise\-the\-head\-to\-look;
+臍 < abdominal\-area\-of\-crab;
+郑 < state\-in\-today''s\-henan;
+贯 < a\-string\-of\-1000\-coins;
+竭 < put\-forth\-great\-effort;
+秒 < beard\-of\-grain\-or\-corn;
+奚 < where\?\-what\?\-how\?\-why\?;
+盏 < small\-cup\-or\-container;
+萝 < type\-of\-creeping\-plant;
+梧 < sterculia\-platanifolia;
+咦 < expression\-of\-surprise;
+筐 < bamboo\-basket\-or\-chest;
+谍 < an\-intelligence\-report;
+篱 < bamboo\-or\-wooden\-fence;
+琶 < guitar\-like\-instrument;
+潺 < sound\-of\-flowing\-water;
+坳 < a\-hollow\-in\-the\-ground;
+埂 < ditches\-for\-irrigation;
+倌 < assistant\-in\-wine\-shop;
+霁 < to\-clear\-up\-after\-rain;
+邯 < city\-in\-hebei\-province;
+粑 < tsamba\-\(food\-in\-tibet\);
+蛀 < insects\-that\-eat\-books;
+嫦 < name\-of\-a\-moon\-goddess;
+赊 < buy\-and\-sell\-on\-credit;
+弑 < to\-kill\-one''s\-superior;
+摁 < to\-press\-with\-the\-hand;
+畹 < a\-field\-of\-20\-or\-30\-mu;
+觐 < have\-imperial\-audience;
+讦 < expose\-other''s\-secrets;
+旄 < a\-kind\-of\-ancient\-flag;
+趵 < noise\-of\-tramping\-feet;
+酹 < to\-pour\-out\-a\-libation;
+孳 < breed\-in\-large\-numbers;
+塄 < elevated\-bank\-in\-field;
+螈 < diemyelilus\-pyrogaster;
+窬 < a\-small\-door\-or\-window;
+笱 < a\-basket\-trap\-for\-fish;
+牿 < shed\-or\-pen\-for\-cattle;
+蛘 < a\-weevil\-found\-in\-rice;
+畎 < a\-drain\-between\-fields;
+職業中學 < vocational\-high\-school;
+網路節點介面 < network\-node\-interface;
+正在中國訪問 < during\-a\-trip\-to\-china;
+遺留 < \(leave\-or\-be\-a\)\-legacy;
+常規 < conventional\-\(weapons\);
+自食其果 < reap\-what\-one\-has\-sown;
+證券 < \(financial\)\-securities;
+不露聲色 < not\-show\-one''s\-feeling;
+慕道友 < religious\-investigator;
+往常 < habitually\-in\-the\-past;
+大煞風景 < dampening\-one''s\-spirit;
+剝採比 < stripping\-to\-ore\-ratio;
+羅曼語族 < romance\-language\-group;
+孰能生巧 < practice\-makes\-perfect;
+妖冶 < pretty\-and\-flirtatious;
+革命 < \(political\)\-revolution;
+論壇 < forum\-\(for\-discussion\);
+壟斷 < enjoy\-market\-dominance;
+牡丹 < peony\-\(type\-of\-flower\);
+報稅 < declare\-dutiable\-goods;
+目的地 < destination\-\(location\);
+公認 < publicly\-known\-\(to\-be\);
+嗷嗷待哺 < cry\-piteously\-for\-food;
+發表 < to\-issue\-\(a\-statement\);
+不痛不痒 < scratching\-the\-surface;
+國務院 < state\-department\-\(usa\);
+齯 < teeth\-grown\-in\-old\-age;
+電器 < \(electrical\)\-appliance;
+鹣 < fabulous\-mythical\-bird;
+殷勤 < politely\,\-solicitously;
+十五億 < one\-and\-a\-half\-billion;
+鰆 < scomberomorus\-sinensis;
+鮓 < minced\-and\-salted\-fish;
+紅燒肉 < red\-cooked\-\(pork\)\-meat;
+到期 < become\-due\-\(eg\,\-loans\);
+驌 < name\-of\-a\-famous\-horse;
+公安局 < public\-security\-bureau;
+病院 < a\-specialized\-hospital;
+聯網環境 < networking\-environment;
+韹 < music\-of\-bell\-and\-drum;
+解釋執行 < interpreted\-\(computer\);
+八小時工作制 < eight\-hour\-working\-day;
+消息靈通人士 < a\-well\-informed\-source;
+雘 < dye\-made\-from\-red\-soil;
+阇 < a\-buddhist\-high\-priest;
+不近人情 < not\-amenable\-to\-reason;
+鑐 < bolt\-of\-a\-chinese\-lock;
+政治機構 < political\-organization;
+錆 < the\-color\-of\-a\-mineral;
+鄐 < town\-in\-henan\-province;
+遰 < grunting\-sound\-of\-pigs;
+辥 < variety\-of\-marsh\-grass;
+病象 < symptom\-\(of\-a\-disease\);
+日本經濟新聞 < japanese\-economic\-news;
+欺凌 < to\-bully\-and\-humiliate;
+遍及 < to\-extend\-\(everywhere\);
+谂 < consult\-carefully\-with;
+簽署 < to\-sign\-\(an\-agreement\);
+詪 < difficulty\-in\-speaking;
+報導 < to\-cover\-\(report\)\-news;
+觿 < a\-bodkin\-made\-of\-ivory;
+布朗 < english\-surname\,\-brown;
+覀 < variant\-of\-radical\-146;
+褟 < inner\-shirt\-or\-singlet;
+衭 < the\-lapel\-of\-a\-garment;
+衦 < smooth\-out\-the\-clothes;
+標準 < \(an\-official\)\-standard;
+訊息傳遞中介 < message\-transfer\-agent;
+另眼相看 < to\-view\-in\-a\-new\-light;
+蕕 < caryopteris\-divaricata;
+蔯 < a\-variety\-of\-artemisia;
+萴 < medicinal\-poison\-plant;
+菶 < species\-of\-water\-plant;
+信息技術 < information\-technology;
+脤 < raw\-meat\-for\-sacrifice;
+發病率 < incidence\-of\-a\-disease;
+耬 < drill\-for\-sowing\-grain;
+疑問句 < interrogative\-sentance;
+耂 < variant\-of\-radical\-125;
+退休 < retirement\-\(from\-work\);
+繦 < string\-of\-copper\-coins;
+來回來去地 < backwards\-and\-forwards;
+安全考慮 < security\-consideration;
+緅 < silk\-of\-purplish\-color;
+趨附 < to\-ingratiation\-onself;
+此一時 < that\-was\-one\-situation;
+篢 < the\-name\-of\-bamboo\-hat;
+筆跡 < a\-person''s\-handwriting;
+信息管理 < information\-management;
+盡力 < do\-one''s\-best\-\(effort\);
+網絡層協議 < network\-layer\-protocol;
+筆記 < take\-down\-\(in\-writing\);
+不好惹 < not\-to\-be\-trifled\-with;
+褥子 < cotton\-padded\-mattress;
+癊 < a\-disease\-of\-the\-heart;
+瑱 < a\-gem\-used\-as\-ear\-plug;
+蹦蹦跳跳 < bouncing\-and\-vivacious;
+珣 < name\-of\-a\-kind\-of\-jade;
+玼 < beautiful\-color\-of\-gem;
+牷 < cow\-or\-ox\-of\-one\-color;
+儘快 < as\-quickly\-as\-possible;
+通信密度 < communications\-density;
+不得已 < act\-against\-one''s\-will;
+焄 < rising\-flames\-or\-fumes;
+烖 < calamities\-from\-heaven;
+沒有差別 < there\-is\-no\-difference;
+激昂 < aroused\-to\-indignation;
+不言而喻 < it\-goes\-without\-saying;
+工業化國家 < industrialized\-country;
+步調一致 < to\-be\-united\-in\-action;
+童話 < children''s\-fairy\-tales;
+殢 < be\-in\-great\-difficulty;
+槱 < firewood\-for\-sacrifice;
+上半年 < first\-half\-\(of\-a\-year\);
+不要臉 < have\-no\-sense\-of\-shame;
+背地風 < behind\-somebody''s\-back;
+用戶到網絡的接口 < user\-network\-interface;
+朏 < light\-of\-crescent\-moon;
+旐 < an\-embroidered\-pennant;
+攙 < to\-give\-a\-helping\-hand;
+提交 < submit\-\(a\-report\,\-etc\);
+摰 < to\-seize\-with\-the\-hand;
+供職 < hold\-an\-office\-or\-post;
+摀 < to\-cover\-with\-the\-hand;
+搾 < to\-crush\-with\-the\-hand;
+來自 < to\-come\-from\-\(a\-place\);
+定語 < attributive\-\(modifier\);
+近年來 < for\-the\-past\-few\-years;
+怹 < a\-polite\-version\-of\-he;
+漂流 < carried\-by\-the\-current;
+庈 < used\-in\-person''s\-names;
+嵶 < low\-part\-of\-a\-mountain;
+孒 < larvae\-of\-the\-mosquito;
+棄權 < to\-abstain\-from\-voting;
+捏合 < to\-act\-as\-a\-go\-between;
+壖 < open\-space\-along\-water;
+甲板 < deck\-\(of\-a\-boat\,\-etc\.\);
+其自身 < one''s\-own\-\(respective\);
+教義和聖約 < doctrine\-and\-covenants;
+噀 < spirt\-out\-of\-the\-mouth;
+梅派 < the\-mei\-lanfang\-school;
+火焰山 < the\-mountain\-of\-flames;
+涉過 < ford\-\(a\-stream\,\-river\);
+叝 < to\-respectfully\-inform;
+工作站 < \(computer\)\-workstation;
+體內 < internal\-\(to\-the\-body\);
+伮 < to\-make\-a\-great\-effort;
+通訊通道 < communications\-channel;
+䶥 < unevenly\-fitting\-teeth;
+䶤 < sound\-of\-chewing\-bones;
+䶂 < a\-squirrel\-like\-animal;
+䳮 < to\-look\-at\-in\-surprise;
+䲚 < a\-second\-name\-for\-shad;
+採訪記者 < investigative\-reporter;
+䰵 < looks\-like\-common\-carp;
+䰰 < dreary\-cries\-of\-ghosts;
+䮺 < luxuriant\-of\-the\-grass;
+䮪 < to\-geld\-a\-horse\-or\-ass;
+䩼 < stitches\-on\-a\-coverlet;
+䩍 < to\-look\-pale\-or\-pallid;
+䨵 < rained\-for\-a\-long\-time;
+䦈 < to\-sigh\-in\-lamentation;
+䥟 < a\-metal\-marking\-\-stake;
+脊椎 < back\-\(of\-a\-vertibrate\);
+伯父 < father''s\-elder\-brother;
+䢎 < indicating\-exclamation;
+䡵 < decoration\-on\-carriage;
+䡰 < strong\-and\-durable\-hub;
+䡬 < covering\-of\-a\-carriage;
+䡁 < not\-well\-formed\-figure;
+䟽 < scattered\-or\-dispersed;
+䞘 < to\-go\-straight\-forward;
+䝢 < an\-animal\-in\-old\-times;
+保安 < ensure\-public\-security;
+䝓 < long\-beard\-or\-whiskers;
+䜺 < husking\-beans\-for\-cake;
+䜡 < to\-smell\-the\-fragrants;
+䛙 < to\-smell\-the\-fragrance;
+䚞 < the\-middle\-of\-the\-horn;
+印歐人 < indo\-european\-\(person\);
+䙄 < clothes\-with\-thick\-hem;
+䘽 < clothing\-and\-ornaments;
+䕴 < a\-second\-for\-monkshood;
+䔠 < thin\-root\-of\-the\-lotus;
+䏩 < to\-shrug\-the\-shoulders;
+䍱 < the\-wild\-goat\-or\-sheep;
+䋪 < fine\-and\-delicate\-silk;
+䊏 < mixing\-rice\-with\-broth;
+䈄 < a\-kind\-of\-solid\-bamboo;
+上身 < upper\-part\-of\-the\-body;
+䇣 < bamboo\-with\-white\-bark;
+䄠 < to\-sacrifice\-to\-heaven;
+䃧 < sound\-of\-falling\-rocks;
+䀄 < container\-full\-of\-food;
+㿋 < a\-kind\-of\-skin\-disease;
+㼞 < jar\-with\-a\-small\-mouth;
+㺞 < to\-sign\-in\-lamentation;
+坦克車 < tank\-\(armored\-vehicle\);
+㸯 < a\-fine\-breed\-of\-cattle;
+比較而言 < comparatively\-speaking;
+㵯 < sound\-of\-water\-flowing;
+㳯 < goddess\-of\-an\-ink\-slab;
+㱆 < to\-smile\-at\-each\-other;
+㰨 < to\-take\-breath\-or\-rest;
+㮑 < sound\-of\-broken\-sticks;
+㭯 < tree\-with\-small\-leaves;
+字段 < \(numeric\,\-datda\)\-field;
+㫊 < fluttering\-of\-the\-flag;
+㪣 < a\-place\-in\-han\-dynasty;
+㪟 < to\-regard\-as\-important;
+㪞 < to\-be\-held\-by\-the\-hand;
+㩺 < a\-crack\-on\-the\-utensil;
+㩜 < to\-be\-in\-possession\-of;
+㩎 < to\-press\-with\-a\-finger;
+㧶 < the\-jingling\-of\-metals;
+㧙 < to\-give\-a\-playful\-blow;
+㧃 < to\-receive\-what\-is\-due;
+㦣 < to\-talk\-in\-one''s\-sleep;
+㦄 < hard\-to\-say\-or\-predict;
+㤊 < cheerful\-and\-exuberant;
+並舉 < develop\-simultaneously;
+㢉 < a\-room\-with\-open\-space;
+一號 < first\-day\-of\-the\-month;
+㠔 < shapes\-of\-the\-mountain;
+㟻 < the\-moat\-around\-a\-city;
+離開故鄉 < to\-leave\-one''\-homeland;
+㛳 < an\-abnomal\-unborn\-baby;
+㚷 < the\-breasts\-of\-a\-woman;
+㙳 < ruggedness\-of\-the\-road;
+㙤 < a\-crack\-in\-earthenware;
+㙘 < used\-in\-naming\-a\-place;
+㗂 < to\-keep\-the\-mouth\-shut;
+㖐 < sound\-of\-calling\-ducks;
+㔴 < agricultural\-implement;
+㓹 < a\-sharp\-pointed\-weapon;
+㓦 < to\-deliberate\-and\-plan;
+㓘 < jade\-with\-some\-defects;
+不像樣 < in\-no\-shape\-to\-be\-seen;
+審判 < put\-\(someone\)\-to\-trial;
+吐蕃 < ancient\-name\-for\-tibet;
+測定 < to\-survey\-and\-evaluate;
+泰羅 < \(english\-surname\)\-tylo;
+吞聲 < to\-swallow\-one''s\-cries;
+變分法 < calculus\-of\-variations;
+財會 < finance\-and\-accounting;
+通信網絡 < communications\-network;
+交易 < \(business\)\-transaction;
+西遊記 < pilgrimage\-to\-the\-west;
+數字通信 < digital\-communications;
+現役 < \(military\)\-active\-duty;
+共產黨員 < communist\-party\-member;
+民選 < democratically\-elected;
+海拔 < height\-above\-sea\-level;
+網路架構 < network\-infrastructure;
+科技 < science\-and\-technology;
+任免 < to\-appoint\-and\-dismiss;
+畢業生 < graduate\-\(of\-a\-school\);
+亂寫 < to\-write\-without\-basis;
+零錢 < change\-\(said\-of\-money\);
+不服 < not\-accept\-\(something\);
+鼻兒 < a\-hole\-in\-an\-implement;
+感嘆 < to\-sigh\-\(with\-feeling\);
+化裝 < \(of\-actors\)\-to\-make\-up;
+云南 < yunnan\-province\,\-china;
+服完 < serve\-out\-\(a\-sentence\);
+黃山 < mt\.\-huang\-\(huang\-shan\);
+古波 < gubo\-\(a\-personal\-name\);
+猜拳 < a\-finger\-guessing\-game;
+美國之音 < voice\-of\-america\-radio;
+背黑鍋 < to\-be\-made\-a\-scapegoat;
+助詞 < particle\-\(grammatical\);
+靈敏度 < \(level\-of\)\-sensitivity;
+標準組織 < standards\-organization;
+獨攬市場 < to\-monopolize\-a\-market;
+觉 < to\-wake\-up\-from\-sleep;
+環 < jade\-ring\-or\-bracelet;
+划 < to\-row\-or\-paddle\-boat;
+堪 < adequately\-capable\-of;
+吴 < name\-of\-warring\-state;
+鳴 < cry\-of\-bird\-or\-animal;
+呉 < one\-of\-warring\-states;
+馳 < go\-quickly\-or\-swiftly;
+榎 < small\-evergreen\-shrub;
+姻 < relatives\-by\-marriage;
+筒 < thick\-piece\-of\-bamboo;
+帘 < flag\-sign\-of\-a\-tavern;
+稻 < rice\-growing\-in\-field;
+禰 < one''s\-deceased\-father;
+剂 < medicinal\-preparation;
+珂 < inferior\-kind\-of\-jade;
+嘟 < sound\-of\-horn\-tooting;
+瑜 < flawless\-gem\-or\-jewel;
+珑 < a\-gem\-cut\-like\-dragon;
+诬 < make\-false\-accusation;
+嫖 < patronize\-prostitutes;
+飒 < the\-sound\-of\-the\-wind;
+锢 < run\-metal\-into\-cracks;
+掖 < support\-with\-the\-arms;
+棣 < kerria\-japonica\-plant;
+菁 < flower\-of\-leek\-family;
+咩 < the\-bleating\-of\-sheep;
+珉 < stone\-resembling\-jade;
+钎 < tool\-for\-boring\-holes;
+抟 < roll\-around\-with\-hand;
+趸 < sell\-or\-buy\-wholesale;
+妣 < one''s\-deceased\-mother;
+嵊 < district\-in\-shaohsing;
+笸 < flat\-basket\-for\-grain;
+肫 < the\-gizzard\-of\-a\-fowl;
+苫 < rush\-or\-straw\-matting;
+峤 < high\-pointed\-mountain;
+秭 < one\-thousand\-millions;
+姒 < wife\-of\-elder\-brother;
+蓰 < to\-increase\-five\-fold;
+蒌 < artemisia\-stelleriana;
+酃 < the\-spirit\-of\-a\-being;
+糗 < parched\-wheat\-or\-rice;
+辋 < exterior\-rim\-of\-wheel;
+髫 < children''s\-hair\-style;
+虺 < large\-poisonous\-snake;
+醵 < contribute\-for\-drinks;
+蚬 < a\-variety\-of\-bivalves;
+裼 < to\-take\-off\-one''s\-top;
+眵 < eyes\-diseased\-and\-dim;
+枵 < hollo\-stump\-of\-a\-tree;
+蘩 < artemisia\-stellariana;
+讓坐 < to\-give\-up\-one''s\-seat;
+彬彬有禮 < refined\-and\-courteous;
+網絡管理員 < network\-administrator;
+油價 < oil\-\(petroleum\)\-price;
+軟硬件 < software\-and\-hardware;
+巨額 < a\-huge\-sum\-\(of\-money\);
+奔放 < bold\-and\-unrestrained;
+得意 < \(be\)\-proud\-of\-oneself;
+完全兼容 < completely\-compatible;
+熱門貨 < goods\-in\-great\-demand;
+通信量 < communications\-volume;
+奔忙 < be\-busy\-rushing\-about;
+觀測衛星 < observation\-satellite;
+剛直 < upright\-and\-outspoken;
+巡邏 < be\-on\-\(police\)\-patrol;
+祝賀詞 < congratulatory\-speech;
+電腦輔助設計 < computer\-aided\-design;
+降福 < blessings\-from\-heaven;
+炸藥 < explosive\-\(substance\);
+幾十年 < several\-tens\-of\-years;
+夢想 < to\-dream\-of\-\(in\-vain\);
+防空 < anti\-aircraft\-defense;
+三萬七千 < thirty\-seven\-thousand;
+先進 < advanced\-\(technology\);
+大赦國際 < amnesty\-international;
+情報官員 < intelligence\-official;
+奔命 < rush\-about\-on\-errands;
+比方說 < to\-make\-an\-analogy\.\.\.;
+電磁噪聲 < electromagnetic\-noise;
+長途網路 < long\-distance\-network;
+芝加哥大學 < university\-of\-chicago;
+解決 < to\-settle\-\(a\-dispute\);
+鼃 < the\-edible\-water\-frog;
+麥芽糖 < maltose\-\(sweet\-syrup\);
+鷀 < the\-fishing\-cormorant;
+美聯社 < associated\-press\-\(ap\);
+鴠 < a\-kind\-of\-nightingale;
+防治 < \(prevention\-and\)\-cure;
+鰤 < seriola\-qinqueradiata;
+比色分析 < colorimetric\-analysis;
+鯄 < lepidotrigla\-strauchi;
+髈 < defined\-as\-the\-pelvis;
+推薦信 < recommendation\-letter;
+庫爾德人 < kurdish\-person\|people;
+微軟公司 < microsoft\-corporation;
+分機 < \(telephone\)\-extension;
+颸 < cool\-breeze\-of\-autumn;
+眾望 < people''s\-expectations;
+不識抬舉 < fail\-to\-appreciate\-sb;
+白糖 < \(refined\)\-white\-sugar;
+擁戴 < to\-support\-\(a\-person\);
+席卷亞洲 < to\-sweep\-through\-asia;
+表達 < to\-voice\-\(an\-opinion\);
+幾天來 < for\-the\-past\-few\-days;
+報時 < give\-the\-correct\-time;
+隨和 < amiable\-\(disposition\);
+作業環境 < operating\-environment;
+酎 < double\-fermented\-wine;
+函授 < correspondence\-course;
+迷戀 < to\-be\-infatuated\-with;
+陸海空三軍 < army\,\-navy\,\-air\-force;
+投了票 < past\-tense\-of\-to\-vote;
+肯尼迪 < kennedy\-\(proper\-name\);
+拗陷 < geological\-depression;
+免疫 < immunity\-\(to\-disease\);
+公然 < \(do\-something\)\-openly;
+智慧產權 < intellectual\-property;
+谺 < the\-mouth\-of\-a\-valley;
+堅持 < to\-continue\-upholding;
+出差 < be\-on\-a\-business\-trip;
+蠸 < aulacophora\-femoralis;
+漸進 < progress\-step\-by\-step;
+蜺 < reflection\-of\-rainbow;
+本土化軟件 < software\-localization;
+蘘 < a\-kind\-of\-wild\-ginger;
+限制 < \(impose\)\-restrictions;
+蕚 < the\-calyx\-of\-a\-flower;
+保護區 < conservation\-district;
+葹 < kind\-of\-chrysanthemum;
+萻 < small\-buddhist\-temple;
+年初 < beginning\-of\-the\-year;
+舚 < to\-put\-out\-the\-tongue;
+奧德賽 < the\-odyssey\,\-by\-homer;
+高級官員 < high\-ranking\-official;
+半夜三更 < in\-the\-depth\-of\-night;
+筆錄 < put\-down\-\(in\-writing\);
+按脈 < feel\-\(take\)\-the\-pulse;
+繴 < a\-kind\-of\-fishing\-net;
+竼 < bamboo\-cover\-for\-boat;
+取消禁令 < to\-life\-a\-prohibition;
+禨 < pray\-for\-good\-fortune;
+招聘 < take\-job\-applications;
+越南語 < vietnamese\-\(language\);
+癥 < obstruction\-of\-bowels;
+痏 < a\-bruise\-or\-contusion;
+持不同政見者 < \(political\)\-dissident;
+光州 < kwangju\-\(south\-korea\);
+實際應用 < practical\-application;
+璡 < jade\-look\-alike\-stone;
+工商 < industry\-and\-commerce;
+澳洲 < australia\-\(continent\);
+生產能力 < manufacturing\-ability;
+總統選舉 < presidential\-election;
+皮兒 < \(dough\,\-etc\.\)wrappers;
+澂 < clear\-and\-still\-water;
+甘肅 < gansu\-province\,\-china;
+不擇手段 < by\-fair\-means\-or\-foul;
+淜 < roar\-of\-dashing\-waves;
+沇 < flowing\-and\-engulfing;
+安閒 < peaceful\-and\-carefree;
+艱巨 < very\-difficult\-\(task\);
+蠻橫 < rude\-and\-unreasonable;
+簽字 < to\-sign\-\(a\-signature\);
+暎 < sun\-beginning\-decline;
+安適 < quiet\-and\-comfortable;
+國際標準 < interntional\-standard;
+金陵大學 < university\-of\-nanking;
+異質網路 < heterogeneous\-network;
+白手起家 < build\-up\-from\-nothing;
+嵼 < winding\-mountain\-path;
+葡萄牙語 < portuguese\-\(language\);
+測良 < to\-survey\-and\-measure;
+資料傳送服務 < data\-delivery\-service;
+班車 < regular\-bus\-\(service\);
+埵 < hardened\-dirt\-or\-clay;
+嗻 < to\-screen\.\-loquacious;
+案由 < main\-points\-of\-a\-case;
+貶謫 < banish\-from\-the\-court;
+黃魚 < yellow\-croaker\-\(fish\);
+身世 < one''s\-life\-experience;
+抱恨 < have\-a\-gnawing\-regret;
+匟 < divan\-for\-two\-persons;
+剾 < to\-pick\-up\-with\-knife;
+四年前 < four\-years\-previously;
+自古 < \(since\)\-ancient\-times;
+䵗 < to\-clean\-the\-withered;
+䵄 < to\-boil\-or\-stew\-wheat;
+䳹 < a\-kind\-dove\-like\-bird;
+䳝 < a\-kind\-of\-small\-birds;
+䱟 < a\-kind\-of\-silver\-fish;
+介質訪問控制 < medium\-access\-control;
+䯯 < hang\-down\-of\-the\-hair;
+䯭 < of\-nice\-and\-good\-hair;
+䮄 < an\-one\-year\-old\-horse;
+笆斗 < round\-bottomed\-basket;
+一臂之力 < \(lend\)\-a\-helping\-hand;
+䪥 < shallots\-or\-scallions;
+䩩 < a\-measure\-of\-capacity;
+䦽 < an\-east\-and\-west\-wall;
+製造商 < manufacturing\-company;
+䦚 < wide\-open\-of\-the\-door;
+䦌 < the\-door\-is\-wide\-open;
+二號 < 2\-nd\-day\-of\-the\-month;
+䥈 < the\-symbol\-for\-cobalt;
+不倫不類 < neither\-fish\-nor\-fowl;
+䤗 < taste\-of\-strong\-drink;
+䢩 < to\-forbid\-to\-prohibit;
+䡶 < vehicles\-and\-garments;
+䞚 < to\-hang\-on\-a\-big\-tree;
+䝖 < reptiles\-without\-feet;
+䛱 < to\-talk\-unremittingly;
+䛊 < cheerful\-all\-the\-time;
+䛃 < used\-in\-person''s\-name;
+䘐 < the\-bleed\-at\-the\-nose;
+䗉 < a\-small\-solitary\-wasp;
+基本原理 < fundamental\-principle;
+䖔 < a\-kind\-of\-white\-tiger;
+䖍 < to\-act\-with\-reverence;
+䔵 < fragrant\-thoroughwort;
+財經 < finance\-and\-economics;
+䔊 < dense\-growth\-of\-grass;
+䓒 < scirpus\-cyperinus\-var;
+撫養成人 < to\-bring\-up\-\(a\-child\);
+䒦 < grass\-floats\-on\-water;
+䒄 < fully\-laden\-of\-a\-boat;
+䑝 < a\-small\-cup\-with\-ears;
+䏤 < top\-of\-the\-human\-head;
+主語 < \(grammatical\)\-subject;
+䎶 < offering\-blood\-to\-god;
+通信服務 < communication\-service;
+䎚 < the\-end\-of\-bird\-wings;
+䎖 < soaring\-up\-in\-the\-sky;
+䌧 < a\-kind\-of\-silk\-fabric;
+䌟 < to\-weave\-silk\-ribbons;
+嘖嘖 < to\-click\-one''s\-tongue;
+䋂 < dresses\-for\-the\-bride;
+䈧 < skin\-of\-bamboo\-shoots;
+䈞 < ancient\-name\-of\-india;
+䇾 < a\-flute\-with\-23\-tubes;
+䇰 < a\-bamboo\-binded\-torch;
+䇡 < the\-shuttle\-of\-a\-loom;
+䆠 < a\-government\-official;
+䆛 < something\-in\-the\-cave;
+鼻祖 < the\-earliest\-ancestor;
+䅗 < four\-bundle\-of\-grains;
+反革命 < counter\-revolutionary;
+䁭 < to\-give\-an\-angry\-look;
+䁚 < a\-kind\-of\-eye\-disease;
+䀽 < to\-look\-at\-each\-other;
+䀠 < a\-chinese\-family\-name;
+䀓 < to\-turn\-one''s\-eyes\-to;
+㿴 < wide\-piece\-of\-leather;
+㿫 < to\-split\-tangled\-hemp;
+㿏 < paralysis\-of\-the\-body;
+㾾 < disease\-of\-the\-throat;
+㼲 < sound\-of\-broken\-tiles;
+戀愛 < to\-have\-a\-love\-affair;
+㼐 < a\-kind\-of\-white\-melon;
+㹶 < a\-kind\-of\-wild\-animal;
+㹦 < dog\-with\-a\-short\-tail;
+㹔 < cattle\-with\-long\-back;
+暴跌 < steep\-fall\-\(in\-price\);
+㵨 < a\-dry\-land\-in\-a\-river;
+㳈 < a\-great\-flow\-of\-water;
+讓開 < to\-get\-out\-of\-the\-way;
+㱟 < to\-rip\-open\-the\-flesh;
+㰄 < a\-small\-chestnut\-tree;
+㮗 < the\-handle\-of\-a\-spear;
+㭍 < capital\-form\-of\-seven;
+㬠 < to\-expose\-to\-sunlight;
+檔案分配區 < file\-allocation\-table;
+㩟 < to\-sew\-some\-ornaments;
+㨌 < to\-milk\-a\-cow\-or\-goat;
+就便 < at\-\(your\)\-convenience;
+可身 < to\-fit\-well\-\(clothes\);
+科研 < \(scientific\)\-research;
+㠋 < a\-lofty\-mountain\-peak;
+㟞 < precipitous\-and\-lofty;
+㟝 < to\-bank\-up\-with\-earth;
+㟜 < shape\-of\-the\-mountain;
+㟖 < a\-dialect\-of\-minority;
+㟎 < a\-long\-mountain\-ridge;
+㞁 < can\-not\-walk\-normally;
+㘰 < name\-of\-a\-old\-country;
+㘡 < a\-pen\-for\-wild\-beasts;
+㘖 < to\-make\-a\-disturbance;
+老兩口 < an\-old\-married\-couple;
+㗁 < the\-roof\-of\-the\-mouth;
+㖗 < high\-ridges\-of\-cliffs;
+地對空導彈 < ground\-to\-air\-missile;
+㕢 < profound\-significance;
+可謂 < it\-could\-even\-be\-said;
+讓路 < to\-make\-way\-\(for\-sth\);
+㒆 < to\-gather\-the\-harvest;
+戶主 < head\-of\-the\-household;
+頒行 < issue\-for\-enforcement;
+國營企業 < nationalized\-industry;
+二十八號 < 28th\-day\-of\-the\-month;
+湖南 < hunan\-province\,\-china;
+本固枝榮 < when\-the\-root\-is\-firm;
+傳輸設備 < transmission\-facility;
+餘數 < \(numerical\)\-remainder;
+不管 < no\-matter\-\(what\,\-how\);
+版面 < space\-of\-a\-whole\-page;
+不是味兒 < not\-the\-right\-flavour;
+不禁 < can''t\-help\-\(doing\-sth;
+隨機時間 < random\-period\-of\-time;
+昏迷 < to\-lose\-consciousness;
+吐絮 < the\-opening\-of\-a\-boll;
+鋪平 < spread\-out\-\(material\);
+傳輸距離 < transmission\-distance;
+拜把子 < become\-sworn\-brothers;
+北寒帶 < the\-north\-frigid\-zone;
+不理 < refuse\-to\-acknowledge;
+變臉 < suddenly\-turn\-hostile;
+印度尼西亞語 < indonesian\-\(language\);
+海斯 < hayes\-\(microcomputer\);
+東德 < \(former\)\-east\-germany;
+暗礁 < submerged\-reef\-\(rock\);
+買好 < to\-ingratiate\-oneself;
+八路軍 < the\-eighth\-route\-army;
+暗疾 < unmentionable\-disease;
+聳動 < to\-create\-a\-sensation;
+另起爐灶 < to\-start\-from\-scratch;
+首腦會議 < leadership\-conference;
+板凳 < wooden\-bench\-or\-stool;
+不暇 < have\-no\-time\-\(for\-sth;
+悲憤 < grief\-and\-indignation;
+不信任投票 < vote\-of\-no\-confidence;
+南北極 < south\-and\-north\-poles;
+如出一轍 < be\-precisely\-the\-same;
+董事長 < chairman\-of\-the\-board;
+本人的觀點 < \(one''s\)\-personal\-view;
+特產 < special\-local\-product;
+蕭條 < \(economic\)\-depression;
+不行了 < on\-the\-point\-of\-death;
+矮杆品種 < short\-stalked\-variety;
+殯葬 < funeral\-and\-interment;
+命令 < \(an\)\-order\-or\-command;
+流亡 < to\-\(force\-into\)\-exile;
+絞盡腦汁 < to\-wrack\-one''s\-brains;
+光磁碟機 < magneto\-optical\-drive;
+卡西尼 < cassini\-\(proper\-name\);
+卑污 < despicable\-and\-filthy;
+國有企業 < nationalized\-business;
+暴卒 < die\-of\-sudden\-illness;
+逼視 < look\-at\-from\-close\-up;
+旺月 < busy\-\(business\)\-month;
+什 < file\-of\-ten\-soldiers;
+責 < one''s\-responsibility;
+爵 < feudal\-title\-or\-rank;
+啊 < exclamatory\-particle;
+楚 < name\-of\-feudal\-state;
+托 < to\-hold\-up\-with\-palm;
+汲 < draw\-water\-from\-well;
+魅 < kind\-of\-forest\-demon;
+伊 < third\-person\-pronoun;
+鸿 < species\-of\-wild\-swan;
+姥 < maternal\-grandmother;
+捧 < hold\-up\-in\-two\-hands;
+乙 < second\-heaven''s\-stem;
+吁 < interjection\-''alas\!'';
+姨 < mother\/wife''s\-sister;
+亩 < chinese\-land\-measure;
+僵 < stiff\-and\-motionless;
+拱 < fold\-hands\-on\-breast;
+禾 < grain\-still\-on\-stalk;
+嗡 < sound\-of\-flying\-bees;
+猩 < species\-of\-orangutan;
+狞 < ferocious\-appearance;
+拈 < pick\-up\-with\-fingers;
+陛 < steps\-leading\-throne;
+鸯 < female\-mandarin\-duck;
+卯 < th\-of\-earth\-branches;
+熠 < bright\-and\-sparkling;
+阂 < blocked\-or\-separated;
+淅 < water\-used\-wash\-rice;
+佚 < indulge\-in\-pleasures;
+辚 < rumbling\-of\-vehicles;
+巽 < th\-of\-the\-8\-trigrams;
+訇 < the\-sound\-of\-a\-crash;
+狺 < the\-snarling\-of\-dogs;
+浔 < steep\-bank\-by\-stream;
+蓊 < luxuriant\-vegetation;
+蓠 < gracilaria\-verrucosa;
+菀 < luxuriance\-of\-growth;
+胗 < pustules\-of\-any\-kind;
+颃 < fly\-down\-or\-downward;
+垆 < black\-clods\-of\-earth;
+樗 < ailanthus\-glandulosa;
+蚧 < a\-red\-spotted\-lizard;
+缶 < earthen\-crock\-or\-jar;
+豳 < a\-zhou\-dynasty\-state;
+轺 < small\-light\-carriage;
+逯 < leave\-without\-reason;
+列車 < train\-\(railway\-term\);
+友好 < friendly\-\(relations\);
+櫃邊 < to\-lie\-on\-one''s\-side;
+制裁 < \(economic\)\-sanctions;
+社交 < \(social\)\-interaction;
+操行 < \(student''s\)\-behavior;
+光磁碟 < magneto\-optical\-disk;
+編組 < organize\-into\-groups;
+親近 < get\-close\-to\-someone;
+博覽會 < \(international\)\-fair;
+多種語言支持 < multilingual\-support;
+結論 < \(reach\-a\)\-conclusion;
+闡述 < expound\-\(a\-position\);
+維吾爾人 < uighur\-person\|people;
+開除學籍 < to\-expel\-from\-school;
+心寒 < be\-very\-disappointed;
+組裝 < assemble\-and\-install;
+誓死 < to\-pledge\-one''s\-life;
+一般性 < \(in\)\-general\-\(terms\);
+城鄉 < city\-and\-countryside;
+協定 < \(reach\-an\)\-agreement;
+逋逃藪 < refuge\-for\-fugitives;
+首席代表 < chief\-representative;
+水域 < \(territorial\)\-waters;
+勻整 < neat\-and\-well\-spaced;
+白眼珠 < the\-white\-of\-the\-eye;
+物理結構 < physical\-composition;
+內閣 < \(government\)\-cabinet;
+廠牌 < brand\-\(of\-a\-product\);
+奶奶 < paternal\-grandmother;
+編次 < order\-of\-arrangement;
+國會議長 < speaker\-of\-the\-house;
+應用平台 < application\-platform;
+教授 < university\-professor;
+勢必 < is\-bound\-to\-\(happen\);
+墨汁 < prepared\-chinese\-ink;
+大將 < a\-general\-or\-admiral;
+氣人 < to\-get\-someone\-angry;
+包場 < book\-a\-whole\-theatre;
+六號 < 6th\-day\-of\-the\-month;
+匈牙利語 < hungarian\-\(language\);
+詞彙 < \(list\-of\)\-vocabulary;
+軟體配送者 < software\-distributor;
+不信任案 < no\-confidence\-motion;
+齞 < to\-display\-the\-teeth;
+鼈 < a\-fresh\-water\-turtle;
+鼂 < a\-kind\-of\-sea\-turtle;
+捕蟲葉 < insect\-catching\-leaf;
+鸇 < kind\-of\-bird\-of\-prey;
+攝影 < to\-take\-a\-photograph;
+鸂 < a\-kind\-of\-water\-bird;
+鷫 < turquoise\-kingfisher;
+鷁 < fishhawk\-bow\-or\-prow;
+改善關係 < to\-improve\-relations;
+辯白 < offer\-an\-explanation;
+鰜 < big\-mouthed\-flounder;
+髺 < the\-hair\-dishevelled;
+採訪 < cover\-\(a\-news\-story\);
+骣 < horse\-without\-saddle;
+停火協議 < cease\-fire\-agreement;
+餽 < make\-present\-of\-food;
+兵站 < army\-service\-station;
+韱 < wild\-onions\-or\-leeks;
+軍費 < military\-expenditure;
+二十二號 < 22\-nd\-day\-of\-a\-month;
+霃 < long\-continued\-rains;
+據悉 < according\-to\-reports;
+前年 < the\-year\-before\-last;
+闍 < tower\-over\-city\-gate;
+補色 < complementary\-colour;
+攻勢 < \(military\)\-offensive;
+確有其事 < \(confirm\-to\-be\)\-true;
+大型企業 < large\-scale\-industry;
+分擔 < share\-responsibility;
+鍱 < thin\-plates\-of\-metal;
+使徒行傳 < acts\-of\-the\-apostles;
+鉶 < sacrificial\-cauldron;
+開發 < exploit\-\(a\-resource\);
+歷代 < successive\-dynasties;
+醰 < bitter\-taste\-in\-wine;
+近日 < in\-the\-past\-few\-days;
+回訪 < \(pay\-a\)\-return\-visit;
+必不可少 < absolutely\-necessary;
+病變 < pathological\-changes;
+凌晨 < early\-in\-the\-morning;
+趂 < to\-take\-advantage\-of;
+不雅觀 < offensive\-to\-the\-eye;
+接收器靈敏度 < receiver\-sensitivity;
+不在話下 < be\-nothing\-difficult;
+陳述句 < declarative\-sentence;
+襬 < lower\-part\-of\-a\-robe;
+這個月 < this\-\(current\)\-month;
+袳 < spread\-one''s\-clothes;
+歷來最低點 < all\-time\-low\-\(point\);
+倍頻器 < frequency\-multiplier;
+槳狀 < certificate\-of\-merit;
+蜛 < hydrophilus\-cognatus;
+蛚 < cyrtoxiphus\-ritsemae;
+民族主義情緒 < nationalist\-feelings;
+領導權 < leadership\-authority;
+薢 < woody\-climbing\-plant;
+倚重 < to\-rely\-heavily\-upon;
+紀念日 < day\-of\-commemoration;
+茀 < overgrown\-with\-grass;
+芄 < metaplexis\-stauntoni;
+應用軟件 < application\-software;
+舺 < place\-name\-in\-taiwan;
+脡 < strips\-of\-dried\-meat;
+把酒 < raise\-one''s\-wine\-cup;
+軍用 < \(for\)\-military\-\(use\);
+交換技術 < switching\-technology;
+米德爾伯裡 < middlebury\-\(college\);
+保重 < take\-care\-of\-oneself;
+報仇 < to\-revenge\-\(oneself\);
+抄身 < to\-search\-\(a\-person\);
+粃 < empty\-husks\-of\-grain;
+程式語言 < programming\-language;
+白棉紙 < stencil\-tissue\-paper;
+窣 < to\-rush\-out\-of\-a\-den;
+穇 < panicum\-frumentaceum;
+棉襖 < cotton\-padded\-jacket;
+磒 < to\-fall\-from\-or\-into;
+儘早 < as\-early\-as\-possible;
+矑 < the\-pupil\-of\-the\-eye;
+睍 < to\-look\-at\-fearfully;
+培修 < to\-repair\-earthworks;
+尊重 < to\-value\-\(something\);
+甽 < drain\-between\-fields;
+甃 < brick\-wall\-of\-a\-well;
+發表聲明 < to\-issue\-a\-statement;
+琖 < carved\-jade\-wine\-cup;
+玦 < broken\-piece\-of\-jade;
+病灶 < focus\-\(of\-infection\);
+兩點十九分 < 2\-\:1\-9\-\(time\-of\-day\);
+侵襲 < to\-invade\-and\-attack;
+瀳 < to\-arrive\-\(of\-water\);
+電子工業 < electronics\-industry;
+澬 < to\-rain\-continuously;
+簡朴 < simple\-and\-unadorned;
+駁運 < transport\-by\-lighter;
+挪窩兒 < to\-move\-\(to\-a\-house\);
+召開會議 < to\-call\-a\-conference;
+洤 < a\-fountain\-or\-spring;
+例言 < introductory\-remarks;
+備查 < for\-future\-reference;
+槾 < paste\-wall\-with\-dirt;
+德國人 < german\-person\|people;
+棨 < tally\-or\-wooden\-pass;
+桬 < pear\-and\-other\-trees;
+安逸 < easy\-and\-comfortable;
+敳 < to\-govern\-forcefully;
+敁 < to\-weigh\-in\-the\-hand;
+病房 < ward\-\(of\-a\-hospital\);
+百事通 < knowledgeable\-person;
+表彰 < cite\-\(in\-dispatches\);
+搎 < to\-rub\-with\-the\-hand;
+不死心 < unwilling\-to\-give\-up;
+礦泉水 < mineral\-spring\-water;
+吃不下 < not\-feel\-like\-eating;
+幀檢驗序列 < frame\-check\-sequence;
+萬維網 < world\-wide\-web\-\(www\);
+商業應用 < business\-application;
+每況愈下 < steadily\-deteriorate;
+拜會 < pay\-an\-official\-call;
+專程 < special\-purpose\-trip;
+媒體訪問控制 < media\-access\-control;
+偽幣 < counterfeit\-currency;
+軍事機構 < military\-institution;
+嵏 < a\-mountain\-in\-shenxi;
+才略 < ability\-and\-sagacity;
+孭 < to\-carry\-on\-the\-back;
+四年制的大學 < four\-year\-university;
+層次 < arrangement\-of\-ideas;
+判處死刑 < to\-sentance\-to\-death;
+嫋 < slender\-and\-delicate;
+婣 < marriage\-connections;
+筆法 < technique\-of\-writing;
+實體層 < physical\-layer\-\(osi\);
+囬 < to\-return\-to\-or\-from;
+交通 < \(automobile\)\-traffic;
+現階段 < at\-the\-present\-stage;
+貨幣貶值 < currency\-devaluation;
+叛國罪 < the\-crime\-of\-treason;
+按照法律 < according\-to\-the\-law;
+劂 < chisel\-for\-engraving;
+啟程 < set\-out\-on\-a\-journey;
+不完全中立 < imperfect\-neutrality;
+畫報 < pictorial\-\(magazine\);
+北回歸線 < the\-tropic\-of\-cancer;
+克里斯托弗 < \(warren\)\-christopher;
+電子元件 < electronic\-component;
+經濟衰退 < \(economic\)\-recession;
+䶙 < swelling\-of\-the\-gums;
+䶊 < to\-bleed\-at\-the\-nose;
+光二極管 < light\-emitting\-diode;
+䴟 < an\-one\-year\-old\-deer;
+䳳 < a\-kind\-of\-small\-bird;
+䳑 < a\-pheasant\-like\-bird;
+䲱 < a\-kind\-of\-black\-bird;
+䲕 < the\-yangtze\-porpoise;
+䱐 < a\-kind\-of\-black\-fish;
+䱀 < a\-kind\-of\-small\-fish;
+侵擾 < to\-invade\-and\-harass;
+屏幕 < \(tv\-or\-movie\)\-screen;
+䮡 < a\-supernatural\-horse;
+䮂 < horse\-with\-long\-hair;
+䭷 < horse\-with\-long\-mane;
+䬩 < to\-abstain\-from\-meat;
+䬣 < a\-sacrificial\-victim;
+䫠 < short\-hair\-and\-beard;
+錦標賽 < championship\-contest;
+䩽 < a\-quiver\-one\-a\-horse;
+䩂 < to\-come\-to\-the\-front;
+球網 < net\-\(for\-ball\-games\);
+䧗 < mountains\-collapsing;
+䦦 < a\-musical\-instrument;
+䥤 < the\-neck\-of\-a\-pestle;
+䥄 < to\-plaster\-with\-gold;
+䤸 < short\-spear\-or\-lance;
+不穩平衡 < unstable\-equilibrium;
+漢化 < chinese\-localization;
+䠑 < between\-the\-buttocks;
+䠈 < hard\-to\-move\-forward;
+䟩 < hard\-of\-walk\-forward;
+䞙 < to\-walk\-in\-hurriedly;
+䝑 < a\-local\-produced\-pig;
+䜧 < to\-insult\-with\-words;
+䜓 < a\-slip\-of\-the\-tongue;
+䛌 < to\-provoke\-or\-arouse;
+䙮 < strip\-of\-the\-clothes;
+䘾 < legs\-of\-the\-trousers;
+信息資源 < information\-resource;
+䕫 < a\-one\-legged\-monster;
+䔈 < lush\-growth\-of\-grass;
+六十五歲 < sixty\-five\-years\-old;
+䑠 < long\-and\-narrow\-boat;
+䐸 < the\-back\-of\-the\-knee;
+䏿 < the\-calf\-of\-the\-legs;
+䏡 < uncooked\-or\-raw\-meat;
+䊳 < to\-break\-into\-pieces;
+䊲 < to\-hull\-rice\-roughly;
+䊂 < poor\-quality\-of\-rice;
+對峙 < mutual\-confrontation;
+䉑 < black\-skinned\-bamboo;
+䈦 < a\-curved\-bamboo\-whip;
+䈑 < tools\-to\-unreel\-silk;
+䈁 < tools\-used\-on\-a\-boat;
+䇘 < tool\-to\-collect\-rope;
+䆣 < abode\-of\-the\-emperor;
+䆏 < a\-kind\-of\-rice\-plant;
+䅮 < a\-full\-head\-of\-grain;
+䅓 < curved\-piece\-of\-wood;
+䅏 < rice\-boiled\-to\-gruel;
+䄯 < ten\-handle\-of\-grains;
+美軍 < us\-army\|armed\-forces;
+䄂 < to\-pray\-and\-to\-curse;
+䃰 < brick\-or\-stone\-steps;
+䂒 < short\-to\-curry\-favor;
+䂂 < to\-gaze\-at\-in\-terror;
+䁬 < to\-act\-pretentiously;
+䀷 < to\-have\-quick\-glance;
+䀲 < diseases\-in\-the\-eyes;
+位於 < be\-situated\-\(in\,\-at\);
+㿸 < to\-cast\-off\-the\-skin;
+㿞 < an\-old\-man\-of\-eighty;
+㽤 < a\-small\-plot\-of\-land;
+㽢 < to\-plough\-the\-fields;
+㽕 < new\-branches\-growing;
+㽃 < a\-big\-piece\-of\-brick;
+㼢 < bricks\-an\-eathen\-jar;
+㼉 < green\-colored\-melons;
+㻮 < bright\-and\-brilliant;
+㺮 < fine\-stone\-like\-jade;
+㺂 < big\-and\-strong\-sheep;
+㹘 < shinbone\-of\-a\-cattle;
+㸪 < an\-ox\-walking\-slowly;
+變頻 < frequency\-conversion;
+競爭力 < competitive\-strength;
+㷙 < to\-fry\-in\-fat\-or\-oil;
+㶔 < swift\-and\-torrential;
+㵞 < bellied\-in\-water\-gas;
+㳼 < bubbling\-of\-fountain;
+㳚 < flowing\-of\-the\-water;
+㳔 < to\-soak\-or\-be\-soaked;
+㲫 < hair\-knots\-in\-a\-mess;
+㰋 < a\-kind\-of\-fruit\-tree;
+㯌 < to\-operate\-or\-manage;
+智能大樓 < intelligent\-building;
+少數民族 < minority\-nationality;
+單字 < individual\-character;
+㭞 < a\-kind\-inferior\-wood;
+㭒 < a\-farming\-instrument;
+㩻 < rugged\-mountain\-path;
+㩔 < a\-tool\-to\-make\-a\-bow;
+㧹 < to\-strike\-with\-fists;
+背心 < a\-sleeveless\-garment;
+戶口 < registered\-residence;
+㡙 < curtain\-for\-carriage;
+本科 < undergraduate\-course;
+㠗 < deep\-in\-the\-mountain;
+㞟 < savings\-and\-reserves;
+㙣 < to\-pile\-a\-sand\-hills;
+便中 < at\-one''s\-convenience;
+㙑 < the\-canopy\-of\-heaven;
+㘎 < the\-roars\-of\-a\-tiger;
+鑒定委員會 < evaluation\-committee;
+㘅 < to\-hold\-in\-the\-mouth;
+寶劍 < a\-double\-edged\-sword;
+㕡 < the\-bed\-of\-a\-torrent;
+㕌 < to\-raise\-the\-curtain;
+㔋 < cut\-into\-thin\-slices;
+㒅 < to\-unbind\-the\-collar;
+㑉 < cannot\-straighten\-up;
+醞釀 < mull\-over\-\(an\-issue\);
+全面禁止 < complete\-prohibition;
+暗號 < secret\-signal\-\(sign\);
+老爺 < maternal\-grandfather;
+班期 < schedule\-\(for\-flight;
+買方 < buyer\-\(in\-contracts\);
+安娜 < anna\-\(person''s\-name\);
+騾馬大車 < mule\-and\-horse\-carts;
+經濟發展 < economic\-development;
+通訊系統 < communication\-system;
+責成 < give\-somebody\-a\-task;
+不二法門 < the\-one\-and\-only\-way;
+邏輯鏈路控制 < logical\-link\-control;
+多麼 < how\-\(wonderful\,\-etc\);
+酬謝 < to\-thank\-with\-a\-gift;
+無價珍珠 < pearl\-of\-great\-price;
+往返 < to\-go\-back\-and\-forth;
+包金 < cover\-with\-gold\-leaf;
+未成年者 < minor\-\(not\-an\-adult\);
+暑熱 < hot\-\(summer\)\-weather;
+巡迴分析端口 < roving\-analysis\-port;
+伊斯蘭堡 < islamabad\-\(pakistan\);
+運動會 < a\-sports\-competition;
+不曾 < never\-\(have\-done\-sth;
+總部 < general\-headquarters;
+貶值 < to\-become\-devaluated;
+遺骸 < \(dead\)\-human\-remains;
+二十四號 < 24\-th\-day\-of\-a\-month;
+類推 < to\-reason\-by\-analogy;
+大失所望 < greatly\-dissapointed;
+和好 < to\-become\-reconciled;
+本土 < one''s\-native\-country;
+亞倫 < aaron\-\(a\-man''s\-name\);
+羞恥 < \(a\-feeling\-of\)\-shame;
+哈佛 < harvard\-\(university\);
+暑期 < summer\-vacation\-time;
+企業集團 < industry\-association;
+管理接口 < management\-interface;
+呼喊 < shout\-\(slogans\,\-etc\);
+繽紛 < in\-riotous\-profusion;
+呈報 < to\-\(submit\-a\)\-report;
+生產設備 < production\-equipment;
+半白 < fifty\-\(years\-of\-age\);
+𠁥 < the\-horns\-of\-a\-sheep;
+跑龍套 < to\-play\-a\-small\-role;
+昂然 < upright\-and\-unafraid;
+還說 < to\-add\-\(in\-speaking\);
+更加 < more\-\(than\-sth\-else\);
+德雷爾 < \(june\-teufel\)\-dreyer;
+義務教育 < cumpulsory\-education;
+爺爺 < paternal\-grandfather;
+傳輸控制 < transmission\-control;
+不勝 < cannot\-bear\-or\-stand;
+敗胃 < spoil\-one''s\-appetite;
+變心 < cease\-to\-be\-faithful;
+不懷好意 < harbour\-evil\-designs;
+上個 < first\-\(of\-two\-parts\);
+只不過幾年前 < only\-a\-few\-years\-ago;
+幾 < how\-many\?\-how\-much\?;
+奏 < memorialize\-emperor;
+您 < honorific\-for\-''you'';
+吏 < government\-official;
+兀 < to\-cut\-off\-the\-feet;
+胴 < the\-large\-intestine;
+秦 < feudal\-state\-of\-qin;
+桁 < cross\-beams\-of\-roof;
+莎 < kind\-of\-sedge\-grass;
+薛 < kind\-of\-marsh\-grass;
+絣 < to\-baste\-for\-sewing;
+悖 < be\-contradictory\-to;
+芒 < miscanthus\-sinensis;
+嘶 < neighing\-of\-a\-horse;
+叽 < sigh\-in\-disapproval;
+厥 < personal\-pronoun\-he;
+圭 < jade\-pointed\-at\-top;
+徘 < walk\-back\-and\-forth;
+晤 < have\-interview\-with;
+舷 < the\-sides\-of\-a\-boat;
+邬 < various\-place\-names;
+褐 < coarse\-woolen\-cloth;
+馈 < offer\-food\-superior;
+唧 < chirping\-of\-insects;
+咔 < used\-in\-translation;
+灸 < cauterize\-with\-moxa;
+驷 < team\-of\-four\-horses;
+粼 < clear\-\(as\-of\-water\);
+羚 < species\-of\-antelope;
+呓 < talk\-in\-one''s\-sleep;
+篙 < pole\-used\-punt\-boat;
+湍 < rapid\-water\-current;
+脍 < minced\-meat\-or\-fish;
+鏖 < to\-fight\-to\-the\-end;
+肽 < a\-chemical\-compound;
+銮 < bells\-hung\-on\-horse;
+笳 < a\-reed\-leaf\-whistle;
+薏 < seed\-of\-job''s\-tears;
+悝 < to\-laugh\-at\-to\-pity;
+豇 < a\-small\-kidney\-bean;
+桉 < eucalyptus\-globulus;
+蹁 < to\-walk\-with\-a\-limp;
+腈 < an\-organic\-compound;
+螟 < kind\-of\-caterpillar;
+泮 < zhou\-dynasty\-school;
+鲳 < the\-silvery\-pomfret;
+霪 < long\-and\-heavy\-rain;
+枘 < the\-handle\-of\-tools;
+滹 < the\-bank\-of\-a\-steam;
+彳 < step\-with\-left\-foot;
+亍 < to\-take\-small\-steps;
+砘 < a\-kind\-of\-farm\-tool;
+栎 < chestnut\-leaved\-oak;
+鹇 < the\-silver\-pheasant;
+苌 < averrhora\-carambola;
+郛 < outer\-walls\-of\-city;
+醢 < minced\-pickled\-meat;
+眚 < disease\-of\-the\-eyes;
+裉 < s\-seam\-in\-a\-garment;
+崦 < a\-mountain\-in\-kansu;
+兕 < a\-female\-rhinoceros;
+診斷功能 < diagnostic\-function;
+財政部 < ministry\-of\-finance;
+奔流 < flow\-at\-great\-speed;
+廣告商 < advertising\-company;
+一百五十多年 < more\-than\-150\-years;
+日文 < japanese\-\(language\);
+馬來西亞語 < malasian\-\(language\);
+撞見 < to\-meet\-by\-accident;
+差額 < balance\-\(financial\);
+半截 < half\-\(of\-a\-section\);
+剛纔 < \(just\)\-a\-moment\-ago;
+慰安婦 < comfort\-woman\|women;
+折射率 < index\-of\-refraction;
+廠礦 < factories\-and\-mines;
+傳輸媒體 < transmission\-medium;
+起死回生 < arise\-from\-the\-dead;
+熱烈 < warm\-\(welcome\,\-etc\);
+高階語言 < high\-level\-language;
+年代初 < beginning\-of\-an\-age;
+亞洲與太平洋地區 < asia\-pacific\-region;
+辯護 < speak\-in\-defence\-of;
+美國人民 < the\-american\-people;
+哥倫比亞大學 < columbia\-university;
+防禦性 < defensive\-\(weapons\);
+過了五分鐘 < five\-minutes\-passed;
+打橫炮 < speak\-unwarrantedly;
+大批 < large\-quantities\-of;
+面嚮連接 < connection\-oriented;
+專業人才 < expert\-\(in\-a\-field\);
+無縫連接 < seamless\-connection;
+綁票 < kidnap\-\(for\-ransom\);
+白銅 < copper\-nickel\-alloy;
+克羅地亞語 < croatian\-\(language\);
+統稱 < collectively\-called;
+發言權 < the\-right\-of\-speech;
+廢氣 < waste\-\(exhaust\)\-gas;
+討論的議題 < topic\-of\-discussion;
+包子 < steamed\-stuffed\-bun;
+紅葉 < red\-autumnal\-leaves;
+層見迭出 < to\-occur\-frequently;
+百貨 < general\-merchandise;
+鬢髮 < hair\-on\-the\-temples;
+美國以外 < outside\-of\-the\-u\.s\.;
+儘量 < as\-much\-as\-possible;
+身高 < \(a\-person''s\)\-height;
+教學 < teacher\-and\-student;
+鄙人 < your\-humble\-servant;
+地址的轉換 < address\-translation;
+故宮 < the\-imperial\-palace;
+政局 < political\-situation;
+睿智 < wise\-and\-farsighted;
+自動地工作 < automatic\-operation;
+此時此刻 < at\-this\-very\-moment;
+鸒 < the\-eastern\-jackdaw;
+鶲 < siberian\-flycatcher;
+年之久 < period\-of\-\.\.\.\-years;
+補角 < supplementary\-angle;
+鰶 < konosirus\-punctatus;
+鯥 < pomatomus\-saltatrix;
+鯕 < coryphaena\-hippurus;
+鮶 < sebastodes\-guntheri;
+進攻 < attack\-\(militarily\);
+擺弄 < move\-back\-and\-forth;
+不中意 < not\-to\-one''s\-liking;
+飂 < wind\-in\-high\-places;
+颾 < blowing\-of\-the\-wind;
+頍 < to\-raise\-one''s\-head;
+韘 < archer''s\-thumb\-ring;
+鞬 < a\-quiver\-on\-a\-horse;
+貿易保護主義 < trade\-protectionism;
+遍布 < be\-found\-everywhere;
+多黨選舉 < multiparty\-election;
+霶 < downpouring\-of\-rain;
+霮 < denseness\-of\-clouds;
+光纖衰減 < optical\-attenuation;
+改名 < to\-change\-ones\-name;
+鑴 < to\-engrave\-or\-carve;
+不勞而獲 < reap\-without\-sowing;
+鎄 < iridium\-einsteinium;
+技術標準 < technology\-standard;
+補考 < make\-up\-examination;
+開發過程 < development\-process;
+百分制 < hundred\-mark\-system;
+鈃 < ancient\-wine\-vessel;
+酧 < to\-pledge\-with\-wine;
+分析家 < \(political\)\-analyst;
+播弄 < order\-subject\-about;
+年底 < the\-end\-of\-the\-year;
+約櫃 < ark\-of\-the\-covenant;
+幫工 < help\-with\-farm\-work;
+報廢 < report\-as\-worthless;
+通信負載 < communications\-load;
+常規武器 < conventional\-weapon;
+統計結果 < statistical\-results;
+司空見慣 < a\-common\-occurrence;
+立法會 < legislative\-council;
+執掌 < wield\-\(power\,\-etc\.\);
+襴 < a\-one\-piece\-garment;
+褃 < a\-seam\-in\-a\-garment;
+引力場 < gravitational\-field;
+兵權 < military\-leadership;
+蠰 < cerambyx\-rugicollis;
+蟨 < the\-siberian\-jerboa;
+蝝 < the\-larva\-of\-locust;
+二十七號 < 27th\-day\-of\-a\-month;
+逼供 < extort\-a\-confession;
+視而不見 < turn\-a\-blind\-eye\-to;
+保安自動化 < security\-automation;
+蔊 < nasturtium\-montanum;
+蓇 < follicles\-of\-plants;
+葇 < elsholtria\-paltrini;
+莕 < nymphoides\-peltatum;
+茳 < cyperus\-malaccensis;
+苳 < petasites\-japonicus;
+艫 < bow\-or\-prow\-of\-boat;
+消耗量 < rate\-of\-consumption;
+電子文件 < electronic\-document;
+開放 < lift\-\(restrictions\);
+登月 < go\-\(up\)\-to\-the\-moon;
+羢 < fine\-woolen\-fabrics;
+核電站 < nuclear\-power\-plant;
+羑 < a\-guide\-to\-goodness;
+結構助詞 < structural\-particle;
+字斟句酌 < weighing\-every\-word;
+繲 < to\-work\-as\-a\-tailor;
+幣值 < value\-of\-a\-currency;
+綀 < a\-kind\-of\-sackcloth;
+政治關係 < political\-relations;
+冰場 < skating\-or\-ice\-rink;
+相互兼容 < mutually\-compatible;
+尋事生非 < to\-look\-for\-trouble;
+竑 < be\-vast\-and\-endless;
+禓 < to\-drive\-out\-demons;
+祐 < divine\-intervention;
+目前 < at\-the\-present\-time;
+表面化 < come\-to\-the\-surface;
+筆譯 < written\-translation;
+筆試 < written\-examination;
+矔 < brilliant\-\(of\-eyes\);
+關切 < be\-deeply\-concerned;
+小寫字母 < lowercase\-\(letters\);
+瞕 < cataract\-in\-the\-eye;
+走開 < get\-out\-of\-the\-way\!;
+覆亡 < fall\-\(of\-an\-empire\);
+電話機 < telephone\-equipment;
+裁斷 < consider\-and\-decide;
+總統府 < presidential\-palace;
+紀元 < beginning\-of\-an\-era;
+兵團 < large\-military\-unit;
+辦事 < to\-handle\-\(affairs\);
+糾偏 < to\-correct\-an\-error;
+才識 < ability\-and\-insight;
+按理 < according\-to\-reason;
+輔幣 < fractional\-currency;
+搭伴 < travel\-with\-another;
+在某種程度上 < to\-a\-certain\-extent;
+國旗 < flag\-\(of\-a\-country\);
+軍政 < army\-and\-government;
+病況 < state\-of\-an\-illness;
+分佈式網絡 < distributed\-network;
+管理功能 < management\-function;
+轉向 < change\-of\-direction;
+橋接器 < bridge\-\(networking\);
+白卷 < blank\-examine\-paper;
+曼徹斯特編碼 < manchester\-encoding;
+八仙 < the\-eight\-immortals;
+較大 < comparatively\-large;
+筆算 < do\-a\-sum\-in\-writing;
+桪 < mythical\-giant\-tree;
+提出 < to\-raise\-\(an\-issue\);
+白人 < white\-man\-and\-woman;
+柮 < flat\-pieces\-of\-wood;
+做法 < way\-of\-doing\-things;
+暵 < dry\-by\-exposing\-sun;
+抽煙 < smoke\-\(a\-cigarette\);
+斝 < small\-jade\-wine\-cup;
+表情 < \(facial\)\-expression;
+補助 < \(financial\)\-subsidy;
+敄 < to\-put\-forth\-effort;
+膠片 < \(photographic\)\-film;
+撍 < to\-hold\-in\-the\-hand;
+不期然而然 < happen\-unexpectedly;
+揕 < roll\-up\-the\-sleeves;
+柔道 < \(the\-sport\-of\)\-judo;
+加值型網路 < value\-added\-network;
+採制 < collect\-and\-process;
+不得了 < desperately\-serious;
+抄獲 < to\-search\-and\-seize;
+表姐 < older\-female\-cousin;
+分佈控制 < distributed\-control;
+尗 < younger\-of\-brothers;
+軟件 < \(computer\)\-software;
+壐 < the\-imperial\-signet;
+招待 < to\-receive\-\(guests\);
+板梁橋 < plate\-girder\-bridge;
+垕 < used\-in\-place\-names;
+拜年 < pay\-a\-new\-year\-call;
+栽跟頭 < to\-suffer\-a\-setback;
+唚 < vomiting\-of\-animals;
+核工程 < nuclear\-engineering;
+因特網聯通 < internet\-connection;
+呺 < voice\-of\-anger\-vast;
+互通 < to\-intercommunicate;
+科學的交流 < scientific\-exchange;
+安理會 < un\-security\-council;
+網絡應用 < network\-application;
+偘 < ancient\-family\-name;
+篡位 < to\-seize\-the\-throne;
+機械翻譯 < machine\-translation;
+罷黜 < dismiss\-from\-office;
+䶯 < used\-in\-girl''s\-name;
+䶒 < outstanding\-ability;
+䶌 < a\-pustule\-or\-pimple;
+䶄 < striped\-mottled\-rat;
+䵱 < red\-and\-black\-color;
+䵔 < to\-turn\-on\-the\-heel;
+䴪 < a\-fabulous\-creature;
+䴠 < a\-young\-tailed\-deer;
+屬實 < turn\-out\-to\-be\-true;
+䱧 < a\-kind\-of\-fish\-eels;
+䰜 < a\-large\-earthen\-pot;
+䮷 < movement\-of\-a\-horse;
+䮃 < to\-go\-before\-others;
+派遣 < send\-\(on\-a\-mission\);
+䫱 < a\-part\-of\-the\-skull;
+䫩 < to\-shake\-one''s\-head;
+䪿 < the\-top\-of\-the\-head;
+䪽 < hoary\-haired\-person;
+䩷 < the\-sides\-of\-a\-shoe;
+䩧 < to\-tie\-up\-hurriedly;
+䩌 < to\-have\-a\-worn\-look;
+䧔 < to\-meet\-at\-the\-bank;
+䦙 < a\-government\-agency;
+䥧 < a\-fine\-kind\-of\-jade;
+訊框傳送服務 < frame\-relay\-service;
+䤆 < a\-kind\-of\-rice\-wine;
+䤁 < cooked\-or\-well\-done;
+䢋 < a\-marshal\-or\-herald;
+並重 < lay\-equal\-stress\-on;
+軟件技術 < software\-technology;
+䟣 < an\-animal\-in\-legend;
+䞳 < to\-stumble\-and\-fall;
+䝠 < a\-kind\-of\-wild\-boar;
+䜁 < to\-abuse\-and\-insult;
+䙒 < to\-store\-or\-save\-up;
+䙏 < short\-sleeves\-shirt;
+䙁 < children''s\-garments;
+䘪 < clothes\-without\-hem;
+䖢 < first\-born\-silkworm;
+䖖 < to\-show\-familiarity;
+䕾 < a\-kind\-of\-vegetable;
+䕘 < a\-variety\-of\-fungus;
+䕃 < the\-shade\-of\-a\-tree;
+䓷 < nymphoides\-peltalum;
+䓍 < cruciferous\-flowers;
+䒈 < side\-beam\-of\-a\-boat;
+䒀 < short\-and\-deep\-boat;
+䑇 < medicine\-for\-a\-sore;
+䐭 < a\-discharge\-or\-flux;
+䏹 < to\-watch\-stealthily;
+䏨 < to\-swell\-up\-greatly;
+䏆 < buzzing\-in\-the\-ears;
+䍷 < to\-chase\-each\-other;
+䋹 < breadth\-of\-material;
+䋰 < to\-bind\-or\-restrain;
+才學 < talent\-and\-learning;
+耕耘 < plowing\-and\-weeding;
+擺門面 < keep\-up\-appearances;
+訊框傳送網路 < frame\-relay\-network;
+䇽 < a\-coarse\-bamboo\-mat;
+䆯 < a\-short\-shaped\-face;
+䅯 < a\-variety\-of\-millet;
+䅟 < varieties\-of\-millet;
+䅒 < a\-sharp\-edged\-grass;
+慈祥 < \(a\)\-kindly\-\(person\);
+䁋 < with\-one\-eye\-closed;
+䁃 < to\-look\-attentively;
+䀤 < insight\-of\-jealousy;
+䀣 < to\-look\-steadily\-at;
+奶油菜花 < creamed\-cauliflower;
+㿓 < disease\-of\-the\-hoof;
+光發送器 < optical\-transmitter;
+㾻 < not\-any\-progressive;
+㾶 < disease\-of\-the\-knee;
+安樂 < peace\-and\-happiness;
+㾢 < a\-malignant\-disease;
+㽭 < vacant\-lot\-or\-space;
+㽌 < the\-ridge\-of\-a\-roof;
+㽂 < a\-cracked\-container;
+㼙 < brickwork\-of\-a\-well;
+㼒 < a\-kind\-of\-big\-melon;
+網絡環境 < network\-environment;
+愛人如己 < love\-others\-as\-self;
+㸶 < color\-of\-the\-oxtail;
+㸵 < the\-lowing\-of\-an\-ox;
+㸥 < household\-registers;
+㸢 < cross\-beam\-of\-a\-bed;
+㸞 < blocks\-for\-printing;
+㸓 < to\-have\-disappeared;
+㸀 < blackened\-with\-soot;
+㷤 < rosy\-clouds\-of\-dawn;
+騙取 < to\-gain\-by\-cheating;
+㲇 < the\-rattle\-of\-drums;
+㱾 < a\-kind\-of\-ornaments;
+㱹 < to\-die\-from\-disease;
+㱫 < destroyed\-or\-ruined;
+㱪 < stupid\-and\-confused;
+㱊 < asthmatic\-breathing;
+㱉 < moving\-of\-the\-mouth;
+㰴 < to\-grate\-on\-the\-ear;
+㰯 < the\-way\-of\-speaking;
+路透社 < reuters\-news\-agency;
+涼爽 < cool\-and\-refreshing;
+黨組 < leading\-party\-group;
+例外 < \(make\-an\)\-exception;
+㫯 < in\-contravention\-of;
+資源 < \(natural\)\-resources;
+商會 < chamber\-of\-commerce;
+赤字 < \(financial\)\-deficit;
+㩦 < to\-lead\-by\-the\-hand;
+㩘 < to\-moor\-to\-the\-bank;
+㨝 < the\-very\-hard\-stuff;
+㧅 < to\-turn\-upside\-down;
+㦓 < difficult\-intention;
+㥝 < to\-arouse\-to\-action;
+阿拉巴馬 < alabama\-\(u\.s\.state\);
+㢊 < to\-set\-side\-by\-side;
+㢂 < of\-highly\-strategic;
+鋰離子電池 < lithium\-ion\-battery;
+終點地址 < destination\-address;
+㟱 < shape\-of\-a\-mountain;
+㟓 < lofty\-and\-dangerous;
+㟒 < mountains\-adjoining;
+並聯 < parallel\-connection;
+㘫 < to\-fall\-into\-a\-well;
+財源 < financial\-resources;
+㗶 < to\-expel\-the\-breath;
+科學院 < academy\-of\-sciences;
+㖪 < sound\-of\-surprising;
+㔹 < a\-surplus\-or\-excess;
+㓷 < to\-cut\-off\-the\-nose;
+㒄 < brittle\-and\-friable;
+㒃 < capital\-form\-of\-two;
+量變 < quantitative\-change;
+耐煩 < patient\-\(adjective\);
+丙綸 < polypropylene\-fibre;
+二十六號 < 26th\-day\-of\-a\-month;
+步進制 < step\-by\-step\-system;
+前蘇聯 < former\-soviet\-union;
+不在意 < pay\-no\-attention\-to;
+決議 < \(pass\-a\)\-resolution;
+錯字 < incorrect\-character;
+中國當局 < chinese\-authorities;
+伴唱 < vocal\-accompaniment;
+識貨 < to\-know\-what''s\-what;
+稟性 < natural\-disposition;
+預習 < to\-prepare\-a\-lesson;
+合情合理 < reasonable\-and\-fair;
+流派 < school\-\(of\-thought\);
+百依百順 < docile\-and\-obedient;
+半自耕農 < semi\-tenant\-peasant;
+哀憐 < feel\-compassion\-for;
+反彈導彈 < antimissile\-missile;
+財寶 < money\-and\-valuables;
+生產設施 < production\-facility;
+葡萄牙人 < portuguese\-\(person\);
+事宜 < \(make\)\-arrangements;
+敗類 < scum\-of\-a\-community;
+不絕如縷 < hanging\-by\-a\-thread;
+旗袍 < chinese\-style\-dress;
+長期穩定性 < long\-term\-stability;
+技術知識 < technical\-knowledge;
+徐行 < walk\-slowly\,\-stroll;
+藏族 < tibetan\-nationality;
+樓宇自動化 < building\-automation;
+外孫女 < daughter''s\-daughter;
+冰醋酸 < glacial\-acetic\-acid;
+美國軍人 < american\-serviceman;
+阿比西尼亞人 < abyssinian\-\(person\);
+消炎藥 < antibiotic\-medicine;
+照顧 < take\-\(good\)\-care\-of;
+委員長 < head\-of\-a\-committee;
+視窗加速器 < windows\-accelarator;
+讓步 < \(make\-a\)\-concession;
+邊遠 < far\-from\-the\-center;
+華爾街日報 < wall\-street\-journal;
+擺闊 < parade\-one''s\-wealth;
+情報局 < intelligence\-agency;
+晴朗 < sunny\-and\-cloudless;
+悲壯 < solemn\-and\-stirring;
+國際貿易 < international\-trade;
+罷市 < shopkeeper''s\-strike;
+不妨 < there\-is\-no\-harm\-in;
+人造語言 < artificial\-language;
+亞太經合組織 < apec\-\(organization\);
+丹參 < salvia\-miltiorrhiza;
+零落 < withered\-and\-fallen;
+包身工 < indentured\-labourer;
+得知 < \(find\-out\-and\)\-know;
+變故 < an\-unforeseen\-event;
+不敗之地 < invincible\-position;
+恐怕 < \(i''m\)\-afraid\-\(that\);
+自身利益 < one''s\-own\-interests;
+廠規 < factory\-regulations;
+預定 < schedule\-in\-advance;
+不凡 < out\-of\-the\-ordinary;
+競爭產品 < competitive\-product;
+敗績 < be\-utterly\-defeated;
+暴利 < sudden\-huge\-profits;
+非核國家 < non\-nuclear\-country;
+罪名 < a\-\(criminal\)\-charge;
+不乏 < there\-is\-no\-lack\-of;
+合同 < \(business\)\-contract;
+北京人 < person\-from\-beijing;
+氣候狀況 < climatic\-conditions;
+玖 < black\-colored\-jade;
+哪 < which\?\-where\?\-how\?;
+牲 < sacrificial\-animal;
+漢 < the\-chinese\-people;
+漕 < transport\-by\-water;
+阴 < ''female''\-principle;
+仙 < taoist\-super\-being;
+驻 < to\-be\-stationed\-at;
+腮 < lower\-part\-of\-face;
+拒 < ward\-off\-with\-hand;
+桂 < cassia\-or\-cinnamon;
+朵 < cluster\-of\-flowers;
+曹 < ministry\-officials;
+罎 < an\-earthenware\-jar;
+丸 < small\-round\-object;
+矩 < carpenter''s\-square;
+腊 < year\-end\-sacrifice;
+龟 < turtle\-or\-tortoise;
+邸 < official\-residence;
+侃 < upright\-and\-strong;
+邂 < unexpected\-meeting;
+怯 < lacking\-in\-courage;
+甸 < suburbs\-of\-capital;
+捞 < scoop\-out\-of\-water;
+扛 < carry\-on\-shoulders;
+虔 < act\-with\-reverence;
+霖 < long\-spell\-of\-rain;
+韧 < strong\-and\-pliable;
+瑾 < brilliance\-of\-gems;
+桔 < chinese\-bellflower;
+鸳 < male\-mandarin\-duck;
+钗 < ornamental\-hairpin;
+巅 < summit\-of\-mountain;
+樨 < osmanthus\-fragrans;
+蠡 < wood\-boring\-insect;
+蹂 < trample\-under\-foot;
+骥 < thoroughbred\-horse;
+唁 < express\-condolence;
+骅 < an\-excellent\-horse;
+碉 < room\-made\-of\-stone;
+疟 < intermittent\-fever;
+纣 < name\-of\-an\-emperor;
+磬 < musical\-instrument;
+爿 < half\-of\-tree\-trunk;
+旎 < fluttering\-of\-flag;
+夔 < one\-legged\-monster;
+殍 < to\-starve\-to\-death;
+骊 < a\-pure\-black\-horse;
+湎 < flushed\-with\-drink;
+喵 < the\-mew\-of\-the\-cat;
+焙 < dry\-over\-slow\-fire;
+绾 < to\-string\-together;
+眦 < corner\-of\-the\-eyes;
+瑁 < fine\-piece\-of\-jade;
+粳 < non\-glutinous\-rice;
+餮 < a\-legendary\-animal;
+汊 < a\-branching\-stream;
+缃 < light\-yellow\-color;
+檩 < the\-bole\-of\-a\-tree;
+奁 < lady''s\-vanity\-case;
+楸 < mallotus\-japonicus;
+骺 < tip\-of\-a\-long\-bone;
+藿 < lophanthus\-rugosus;
+樾 < the\-shade\-of\-trees;
+酤 < to\-deal\-in\-spirits;
+臌 < dropsical\-swelling;
+跫 < sound\-of\-footsteps;
+綮 < embroidered\-banner;
+觳 < an\-ancient\-measure;
+杌 < the\-stump\-f\-a\-tree;
+嵫 < a\-hill\-in\-shantung;
+擗 < to\-beat\-the\-breast;
+脔 < small\-lump\-of\-meat;
+醅 < unstrained\-spirits;
+羰 < carbonyl\-\(radical\);
+蛸 < long\-legged\-spider;
+瞀 < to\-look\-at\-closely;
+殳 < name\-of\-old\-weapon;
+崞 < mountain\-in\-shanxi;
+垲 < high\-and\-dry\-place;
+虿 < a\-kind\-of\-scorpion;
+疳 < childhood\-diseases;
+罾 < a\-large\-square\-net;
+獬 < a\-fabulous\-monster;
+負責任 < responsibility\-for;
+幫辦 < assist\-in\-managing;
+酬應 < social\-interaction;
+無論 < no\-matter\-what\|how;
+原定 < originally\-planned;
+通行 < licence\-\(computer\);
+環形結構 < ring\-configuration;
+司令 < commanding\-officer;
+糾集 < to\-gather\-together;
+送行 < to\-see\-someone\-off;
+西班牙語 < spanish\-\(language\);
+違約 < to\-break\-a\-promise;
+危局 < perilous\-situation;
+一般來說 < generally\-speaking;
+軟件開發人員 < software\-developer;
+撥號 < dial\-\(a\-telephone\);
+國民黨軍隊 < nationalist\-forces;
+首腦會晤 < leadership\-meeting;
+變修 < become\-revisionist;
+違章 < to\-break\-the\-rules;
+重要問題 < an\-important\-issue;
+網管 < network\-management;
+蒙文 < mongolian\-language;
+性交 < sexual\-intercourse;
+中山裝 < chinese\-tunic\-suit;
+緬甸語 < burmese\-\(language\);
+政治犯 < political\-prisoner;
+年以來 < since\-the\-year\-\.\.\.;
+新華社 < xinhua\-news\-agency;
+不中用 < unfit\-for\-anything;
+一小時以後 < a\-short\-time\-later;
+領先地位 < lead\(ing\)\-position;
+進一步 < \(one\-step\)\-further;
+物價 < \(commodity\)\-prices;
+信息系統 < information\-system;
+後天 < day\-after\-tomorrow;
+提供商 < provider\-\(company\);
+太平 < peace\-and\-security;
+矚望 < to\-look\-forward\-to;
+協助 < provide\-assistance;
+採風 < collect\-folk\-songs;
+種族清洗 < \"ethnic\-cleansing\";
+描金 < to\-outline\-in\-gold;
+助教 < teaching\-assistant;
+夫婦 < a\-\(married\)\-couple;
+乒乓球檯 < table\-tennis\-table;
+英語 < english\-\(language\);
+運氣 < luck\-\(good\-or\-bad\);
+非常嚴厲 < to\-punish\-severely;
+原蘇聯 < fomer\-soviet\-union;
+採錄 < collect\-and\-record;
+熊掌 < bear\-paw\-\(as\-food\);
+內部結構 < internal\-strucutre;
+新兵 < new\-\(army\)\-recruit;
+數據通信 < data\-communication;
+天安門 < tiananmen\-\(square\);
+非常感謝 < extremely\-grateful;
+龖 < flight\-of\-a\-dragon;
+斃命 < meet\-violent\-death;
+鸜 < a\-species\-of\-mynah;
+鷽 < oriental\-bullfinch;
+克隆技術 < cloning\-technology;
+電子網絡 < electronic\-network;
+鴗 < alcedo\-bengalensis;
+鱵 < hyporhampus\-sajuri;
+失事 < \(have\-an\)\-accident;
+不受理 < reject\-a\-complaint;
+鬠 < to\-make\-a\-top\-knot;
+發達國 < developing\-country;
+白麵書生 < pale\-faced\-scholar;
+跑警報 < to\-run\-for\-shelter;
+餼 < sacrificial\-victim;
+電信 < telecommunications;
+捨身 < to\-give\-one''s\-life;
+頔 < good\-and\-beautiful;
+芝蘭 < irises\-and\-orchids;
+財務軟件 < financial\-software;
+改口 < to\-correct\-oneself;
+白開水 < plain\-boiled\-water;
+政務 < government\-affairs;
+內科 < medical\-department;
+元素 < \(chemical\)\-element;
+加入 < to\-become\-a\-member;
+招待會 < \(press\)\-conference;
+選區 < electoral\-district;
+釒 < kangxi\-radical\-167;
+鄮 < ancient\-place\-name;
+土著 < native\,\-aboriginal;
+懷俄明 < wyoming\-\(us\-state\);
+卡拉奇 < karachi\-\(pakistan\);
+操守 < personal\-integrity;
+轙 < rings\-on\-the\-yokes;
+傲視 < turn\-up\-one''s\-nose;
+軰 < a\-row\-of\-carriages;
+半規管 < semicircular\-canal;
+馬來語 < malaysian\-language;
+古典語言 < classical\-language;
+谽 < a\-mouth\-or\-opening;
+莫如 < it\-would\-be\-better;
+結帳 < to\-settle\-accounts;
+四處 < all\-over\-the\-place;
+比不上 < can''t\-compare\-with;
+網路連接層 < network\-link\-layer;
+訁 < kangxi\-radical\-149;
+襵 < a\-pleat\-in\-a\-skirt;
+褰 < lift\-up\-the\-skirts;
+坦率 < frank\-\(discussion\);
+運作 < thread\-\(computing\);
+多米尼加共和國 < dominican\-republic;
+週刊 < weekly\-publication;
+蚹 < eulota\-peliomphala;
+薷 < elshotria\-paltrini;
+保駕 < escort\-the\-emperor;
+蕺 < houttuynia\-cordata;
+蓴 < edible\-water\-plant;
+兩個中國 < two\-china\-\(policy\);
+葴 < physalis\-alkekengi;
+共有 < to\-have\-altogether;
+報喜 < announce\-good\-news;
+跑電 < electrical\-leakage;
+荅 < answer\:\-small\-bean;
+茖 < allium\-victorialis;
+國防部 < defense\-department;
+芣 < medicinal\-plantago;
+撥刺 < splash\-\(of\-a\-fish\);
+拜見 < pay\-a\-formal\-visit;
+外來投資 < foreign\-investment;
+趕不上 < can''t\-keep\-up\-with;
+翯 < glistening\-plumage;
+翖 < ksc\-extension\-3108;
+初中 < junior\-high\-school;
+羧 < carboxyl\-\(radical\);
+土耳其語 < turkish\-\(language\);
+不正之風 < unhealthy\-tendency;
+抄道 < to\-take\-a\-shortcut;
+演說 < \(deliver\-a\)\-speech;
+要地 < strategic\-location;
+辦報 < to\-run\-a\-newspaper;
+集成電路 < integrated\-circuit;
+糒 < food\-for\-a\-journey;
+出任 < start\-in\-a\-new\-job;
+閉關政策 < closed\-door\-policy;
+內情 < inside\-information;
+拿主意 < to\-make\-a\-decision;
+網絡技術 < network\-technology;
+常委會 < standing\-committee;
+中國政府 < chinese\-government;
+開展 < \(begin\-to\)\-develop;
+令牌環網 < token\-ring\-network;
+皪 < luster\-\(of\-pearls\);
+大明鼎鼎 < a\-grand\-reputation;
+痜 < a\-scabby\-bald\-head;
+大學生 < university\-student;
+甿 < farming\-population;
+貿易組織 < trade\-organization;
+甋 < a\-jar\-without\-ears;
+琤 < jade\-of\-jade\-being;
+玘 < court\-dress\-jewels;
+遍地開花 < blossom\-everywhere;
+獳 < fierce\-dog\-looking;
+俄語 < russian\-\(language\);
+山腳 < foot\-of\-a\-mountain;
+煍 < to\-colour\-by\-smoke;
+高速網絡 < high\-speed\-network;
+灥 < a\-group\-of\-springs;
+康奈爾大學 < cornell\-university;
+公司 < \(business\)\-company;
+拉票 < campaign\-for\-votes;
+手術 < surgical\-operation;
+八卦 < the\-eight\-diagrams;
+瀏覽器 < browser\-\(software\);
+體溫 < \(body\)\-temperature;
+書面許可 < written\-permission;
+泲 < kind\-of\-white\-wine;
+世紀末 < end\-of\-the\-century;
+氍 < fine\-woollen\-cloth;
+漂移 < drift\-\(electrical\);
+聯合公報 < joint\-announcement;
+研究機構 < research\-institute;
+佛蘭芒語 < flemish\-\(language\);
+停滯 < be\-at\-a\-standstill;
+國會議員 < member\-of\-congress;
+最近幾年 < the\-last\-few\-years;
+精簡開支 < to\-reduce\-spending;
+柺 < an\-old\-man''s\-staff;
+杻 < ligustrum\-sinenese;
+杙 < a\-tiny\-wooden\-post;
+不置可否 < decline\-to\-comment;
+軍官 < \(military\)\-officer;
+昷 < to\-feed\-a\-prisoner;
+旼 < gentle\-and\-affable;
+塞爾維亞語 < serbian\-\(language\);
+擭 < trap\-catch\-animals;
+三角腹帶 < athletic\-supporter;
+筆直 < perfectly\-straight;
+產生 < to\-come\-into\-being;
+駐華 < stationed\-in\-china;
+斯瓦希裡語 < swahili\-\(language\);
+授受 < to\-give\-and\-accept;
+疫情 < epidemic\-situation;
+深造 < advanced\-\(studies\);
+衛生設備 < sanitary\-equipment;
+造成問題 < to\-create\-an\-issue;
+彄 < nock\-at\-end\-of\-bow;
+捨命 < to\-risk\-one''s\-life;
+擁護者 < supporter\-\(person\);
+國務卿 < secretary\-of\-state;
+嶨 < big\-rocky\-mountain;
+裁並 < cut\-down\-and\-merge;
+嵖 < name\-of\-a\-mountain;
+使節 < \(diplomatic\)\-envoy;
+國家標準碼 < gb\-\(guo\-biao\)\-code;
+半輩子 < half\-of\-a\-lifetime;
+本初子午線 < the\-first\-meridian;
+家庭消費者 < household\-consumer;
+壜 < earthen\-jar\-or\-jug;
+至少 < \(to\-say\-the\)\-least;
+墐 < to\-build\-with\-soil;
+站管理 < station\-management;
+買賣 < buying\-and\-selling;
+噋 < to\-swallow\-hastily;
+測繪 < to\-survey\-and\-draw;
+背約 < break\-an\-agreement;
+色情小說 < pornographic\-novel;
+哰 < incoherent\-chatter;
+芬蘭語 < finnish\-\(language\);
+貴妃醉酒 < the\-drunken\-beauty;
+變法兒 < try\-different\-ways;
+海空軍 < navy\-and\-air\-force;
+電子信箱 < electronic\-mailbox;
+路徑 < route\-\(networking\);
+佷 < to\-act\-contrary\-to;
+舉例 < to\-give\-an\-example;
+撒哈拉以南非洲 < sub\-saharan\-africa;
+乑 < stand\-side\-by\-side;
+才智 < ability\-and\-wisdom;
+䶣 < to\-grind\-the\-teeth;
+䶟 < to\-gnash\-the\-teeth;
+䵕 < a\-varietyof\-millet;
+䴱 < cakes\-and\-biscuits;
+䳨 < the\-female\-phoenix;
+䳔 < a\-pigeon\-like\-bird;
+䱳 < a\-kind\-of\-sturgeon;
+䱣 < a\-long\-narrow\-fish;
+䰪 < mischievous\-spirit;
+䯱 < the\-hair\-stands\-up;
+䯏 < the\-shoulder\-blade;
+䮥 < color\-of\-the\-horse;
+細菌戰 < biological\-warfare;
+䭰 < strong\-sweet\-smell;
+䭋 < to\-eat\-to\-the\-full;
+䭃 < to\-eat\-to\-the\-fool;
+䬴 < fodder\-for\-animals;
+䬧 < round\-shaped\-cakes;
+打拳 < to\-do\-shadowboxing;
+脈欂 < beating\-\(of\-heart\);
+䫐 < to\-bend\-one''s\-head;
+䪌 < cushion\-for\-saddle;
+䨆 < a\-kind\-of\-pheasant;
+䧼 < the\-the\-snow\-goose;
+䧦 < name\-of\-a\-hillside;
+新加坡人 < singaporean\-person;
+䦮 < door\-of\-the\-center;
+自主 < to\-act\-for\-oneself;
+䦒 < the\-door\-is\-closed;
+䦐 < the\-bolt\-of\-a\-door;
+期貨 < futures\-\(on\-goods\);
+䥳 < a\-chemical\-element;
+䥞 < to\-cut\-with\-shears;
+䥝 < desperate\-fighting;
+侵截 < to\-hack\-\(computer\);
+䣺 < filtrated\-the\-wine;
+頭髮 < hair\-\(on\-the\-head\);
+䡠 < strong\-and\-durable;
+䡛 < name\-of\-a\-carriage;
+䠧 < hard\-to\-go\-forward;
+䟝 < to\-walk\-right\-into;
+䝞 < name\-of\-a\-immortal;
+䛉 < to\-induce\-by\-words;
+䚧 < curved\-with\-angles;
+大力發展 < vigorous\-expansion;
+䙃 < sleeveless\-clothes;
+質疑 < call\-into\-question;
+䗻 < a\-kind\-of\-sea\-crab;
+䗨 < lepsima\-saccharina;
+䗣 < insect\-of\-mulberry;
+服務規章 < service\-regulation;
+䖧 < a\-poisonous\-insect;
+䖓 < of\-a\-walking\-tiger;
+䕪 < the\-water\-plantain;
+䔼 < sound\-of\-the\-grass;
+䔃 < cordate\-houttuynia;
+䓨 < long\-necked\-bottle;
+䓖 < cnidium\-officinale;
+䓃 < melancholy\-and\-sad;
+䒝 < root\-of\-the\-thatch;
+首次 < for\-the\-first\-time;
+䑙 < put\-out\-the\-tongue;
+䑆 < feel\-like\-vomiting;
+在傳輸過程中 < while\-transmitting;
+䐔 < muscle\-of\-the\-calf;
+䎾 < big\-and\-round\-eyes;
+域名服務器 < domain\-name\-server;
+䎴 < a\-legendary\-spirit;
+䎪 < the\-stalk\-of\-grain;
+梆子 < watchman''s\-clapper;
+䎔 < fine\-and\-soft\-hair;
+䎏 < young\-birds\-flying;
+油餅 < deep\-fried\-pancake;
+䍩 < to\-offer\-provision;
+䍣 < a\-kind\-of\-fish\-net;
+䌍 < fine\-woven\-pattern;
+䌉 < the\-large\-of\-a\-net;
+泄露 < leak\-\(information\);
+䋈 < to\-bind\-loose\-hemp;
+䉬 < coarse\-bamboo\-mats;
+䈮 < a\-woven\-instrument;
+䇳 < a\-memoradum\-tablet;
+䆪 < color\-of\-the\-light;
+䆥 < to\-pierce\-throughj;
+䆑 < a\-little\-protruded;
+投入 < put\-into\-operation;
+䅽 < fragrance\-or\-aroma;
+䅧 < fine\-rice\-seedling;
+䅜 < to\-store\-up\-grains;
+䄚 < to\-worship\-the\-god;
+䃜 < a\-fine\-black\-stone;
+䁊 < dark\-and\-deep\-eyed;
+䀞 < with\-heavy\-eyelids;
+䀗 < to\-look\-askance\-at;
+析疑 < to\-resolve\-a\-doubt;
+㿌 < lump\-in\-the\-throat;
+竭盡全力 < to\-spare\-no\-effort;
+瑞典語 < swedish\-\(language\);
+㼣 < bricks\-of\-the\-well;
+㼇 < fine\-jade\-or\-agate;
+涉嫌人 < \(criminal\)\-suspect;
+㻗 < a\-string\-of\-pearls;
+㻊 < a\-red\-colored\-jade;
+㻅 < jade\-decorated\-cap;
+藏語 < tibetan\-\(language\);
+不折不扣 < a\-hundred\-per\-cent;
+㺧 < a\-white\-yellow\-dog;
+㸽 < a\-two\-years\-old\-ox;
+木耳 < edible\-tree\-fungus;
+㸈 < scorched\-or\-burned;
+㷳 < color\-of\-the\-flame;
+喘息 < to\-gasp\-for\-breath;
+棄世 < to\-leave\-this\-word;
+㷢 < bundle\-of\-charcoal;
+㷠 < a\-will\-o''\-the\-wisp;
+㵓 < the\-water\-is\-clear;
+㴾 < swelling\-or\-rising;
+併捲機 < ribbon\-lap\-machine;
+別動隊 < special\-detachment;
+㳂 < to\-follow\-a\-course;
+㲡 < thick\-coat\-of\-hair;
+㲗 < to\-smooth\-the\-hair;
+愛稱 < term\-of\-endearment;
+科研樣機 < research\-prototype;
+㯶 < the\-coir\-palm\-tree;
+㯲 < a\-wooden\-framework;
+㯛 < gourd\-shaped\-dates;
+㮻 < to\-scratch\-lightly;
+區域網路 < local\-area\-network;
+㮍 < amemorandum\-tablet;
+㭨 < the\-cocoa\-nut\-palm;
+㭝 < name\-of\-a\-pavilion;
+發送功率 < transmission\-power;
+㬴 < the\-moon\-is\-dimmed;
+㬒 < the\-sun\-are\-dimmed;
+㬎 < motes\-in\-a\-sunbeam;
+政府警告 < government\-warning;
+㫦 < of\-look\-of\-the\-sun;
+㪸 < to\-fill\-a\-cup\-with;
+㩃 < to\-take\-or\-capture;
+㨽 < to\-cut\-or\-rip\-open;
+㨡 < to\-push\-with\-hands;
+㨜 < to\-help\-each\-other;
+核能技術 < nuclear\-technology;
+年輕化 < make\-more\-youthful;
+專員 < assistant\-director;
+㥸 < to\-sympathize\-with;
+㥨 < unhappy\-displeased;
+㤪 < to\-find\-fault\-with;
+㣌 < to\-join\-two\-things;
+㡯 < wall\-of\-a\-building;
+頓足 < stamp\-\(one''s\-feet\);
+加速器 < accelerator\-\(comp\);
+㘳 < a\-hillock\-or\-mound;
+㘱 < to\-fall\-into\-ruins;
+意大利語 < italian\-\(language\);
+㘜 < a\-kind\-of\-silkworm;
+㖅 < sound\-of\-a\-whistle;
+㖃 < to\-roar\-of\-animals;
+㔢 < to\-break\-something;
+不等號 < sign\-of\-inequality;
+現有 < currently\-existing;
+西半球 < western\-hemisphere;
+鼻樑 < bridge\-of\-the\-nose;
+參贊 < diplomatic\-officer;
+並立 < exist\-side\-by\-side;
+貿易 < \(commercial\)\-trade;
+多端中繼器 < multiport\-repeater;
+北京大學 < beijing\-university;
+報務員 < telegraph\-operator;
+酬酢 < to\-exchange\-toasts;
+浪涌 < \(electrical\)\-surge;
+佔先 < to\-take\-precedence;
+背光 < be\-in\-a\-poor\-light;
+光波長 < optical\-wavelength;
+深夜 < very\-late\-at\-night;
+喉擦音 < guttural\-fricative;
+八級工 < eight\-grade\-worker;
+佛蒙特 < vermont\-\[us\-state\];
+露面 < appear\-\(in\-public\);
+商務 < commercial\-affairs;
+聯邦政府 < federal\-government;
+猜疑 < harbour\-suspicions;
+生活必需品 < life''s\-necessities;
+貴姓 < what\-is\-your\-name\?;
+猙獰 < mean\-and\-ferocious;
+進行編程 < executable\-program;
+液壓 < hydraulic\-pressure;
+管理站 < management\-station;
+鼻塞 < have\-a\-stuffy\-nose;
+虛擬連接 < virtual\-connection;
+點心 < light\-refreshments;
+客戶應用 < client\-application;
+不隨意肌 < involuntary\-muscle;
+說不定 < can''t\-say\-for\-sure;
+波斯語 < bosnian\-\(language\);
+海域 < territorial\-waters;
+比試 < have\-a\-competition;
+採取措施 < to\-adopt\-a\-measure;
+儘可能 < as\-far\-as\-possible;
+哈佛大學 < harvard\-university;
+電路 < \(electric\)\-circuit;
+中將 < lieutenant\-general;
+包承組 < \(responsible\)\-crew;
+百葉箱 < thermometer\-screen;
+暗線光譜 < dark\-line\-spectrum;
+文藝 < literature\-and\-art;
+版稅 < royalty\-\(on\-books\);
+電視節目 < television\-program;
+情報 < \(spy\)\-intelligence;
+編遣 < reorganize\-\(troops;
+避雷器 < lightning\-arrester;
+必不可少組成 < absolute\-necessity;
+泰山 < taishan\-\(mountain\);
+悉尼 < sydney\-\(australia\);
+戰鬥機 < fighter\-\(aircraft\);
+薄情 < inconstant\-in\-love;
+民用 < \(for\)\-civilian\-use;
+編譯 < translate\-and\-edit;
+福利 < \(material\)\-welfare;
+簡短介紹 < brief\-introduction;
+海灣戰爭 < \(persian\)\-gulf\-war;
+地球大氣 < earth''s\-atmosphere;
+同學 < \(fellow\)\-classmate;
+不和 < not\-get\-along\-well;
+不厭 < not\-mind\-doing\-sth;
+反感 < \(strongly\)\-dislike;
+針對 < in\-connection\-with;
+服務質量 < quality\-of\-service;
+另寄 < to\-mail\-separately;
+變幻 < change\-irregularly;
+報關 < declare\-at\-customs;
+署名 < sign\-\(a\-signature\);
+遊覽 < to\-go\-sight\-seeing;
+不攻自破 < collapse\-of\-itself;
+文化傳統 < cultural\-tradition;
+顯示器 < monitor\-\(computer\);
+皿 < shallow\-container;
+屓 < gigantic\-strength;
+派 < school\-of\-thought;
+姓 < one''s\-family\-name;
+煎 < fry\-in\-fat\-or\-oil;
+襁 < swaddling\-clothes;
+哈 < sound\-of\-laughter;
+鸚 < species\-of\-parrot;
+欧 < translit\.\:\-europe;
+订 < draw\-up\-agreement;
+偏 < inclined\-one\-side;
+歔 < blow\-through\-nose;
+培 < bank\-up\-with\-dirt;
+漫 < overflow\-of\-water;
+侠 < chivalrous\-person;
+姆 < child''s\-governess;
+盒 < small\-box\-or\-case;
+儒 < confucian\-scholar;
+阪 < hillside\-farmland;
+迈 < take\-a\-big\-stride;
+捏 < pick\-with\-fingers;
+浙 < zhejiang\-province;
+筧 < bamboo\-water\-pipe;
+艘 < counter\-for\-ships;
+趁 < take\-advantage\-of;
+鉢 < earthenware\-basin;
+蓬 < type\-of\-raspberry;
+辖 < linchpin\-of\-wheel;
+逅 < meet\-unexpectedly;
+酣 < enjoy\-intoxicants;
+饺 < stuffed\-dumplings;
+咏 < sing\-song\-or\-poem;
+搀 < give\-helping\-hand;
+捶 < strike\-with\-stick;
+刨 < carpenter''s\-plane;
+蠕 < eumenes\-polifomis;
+崆 < kongtong\-mountain;
+盅 < small\-cup\-or\-bowl;
+梆 < watchman''s\-rattle;
+嵇 < mountain\-in\-henan;
+耷 < ears\-hanging\-down;
+羌 < qiang\-nationality;
+苞 < a\-variety\-of\-rush;
+藜 < chenopodium\-album;
+艄 < stern\-of\-a\-vessel;
+峁 < yellow\-dirt\-mount;
+镔 < high\-quality\-iron;
+鲫 < carassius\-auratus;
+龇 < to\-show\-the\-teeth;
+沭 < river\-in\-shantung;
+榫 < mortise\-and\-tenon;
+萋 < luxuriant\-foliage;
+醮 < religious\-service;
+牝 < female\-of\-species;
+曷 < why\?\-what\?\-where\?;
+瑷 < fine\-quality\-jade;
+耦 < plow\-side\-by\-side;
+鸶 < the\-eastern\-egret;
+篦 < fine\-toothed\-comb;
+妁 < act\-as\-go\-between;
+荥 < a\-county\-in\-henan;
+戽 < to\-bale\-out\-water;
+枳 < trifoliate\-orange;
+椐 < zelkowa\-acuminata;
+魉 < a\-kind\-of\-monster;
+颞 < the\-temporal\-bone;
+耩 < to\-plough\.\-to\-sow;
+廨 < government\-office;
+蟮 < type\-of\-earthworm;
+蛱 < kind\-of\-butterfly;
+禳 < pray\-or\-sacrifice;
+瞢 < eyesight\-obscured;
+蔸 < counter\-for\-plant;
+螅 < \(intestinal\-worm\);
+祧 < an\-ancestral\-hall;
+蠃 < the\-solitary\-wasp;
+聃 < ears\-without\-rims;
+耜 < spade\-shaped\-tool;
+慝 < do\-evil\-in\-secret;
+庳 < a\-low\-built\-house;
+鼢 < a\-variety\-of\-mole;
+蚺 < a\-boa\-constrictor;
+硇 < a\-kind\-of\-mineral;
+硭 < a\-crude\-saltpetre;
+胨 < a\-kind\-of\-protein;
+外界 < the\-outside\-world;
+變天 < change\-of\-weather;
+比濕 < specific\-humidity;
+可行性研究 < feasibility\-study;
+網絡遷移 < network\-migration;
+電腦軟件 < computer\-software;
+必修課 < a\-required\-course;
+德文 < german\-\(language\);
+僅次于 < second\-only\-to\.\.\.;
+朝鮮語 < korean\-\(language\);
+資料傳輸 < data\-transmission;
+卑怯 < mean\-and\-cowardly;
+兵馬 < troops\-and\-horses;
+數據庫軟件 < database\-software;
+碩士 < master''s\-\(degree\);
+西裡爾字母 < cyrillic\-alphabet;
+國防部長 < defence\-secretary;
+白骨 < bones\-of\-the\-dead;
+巨大壓力 < enormous\-pressure;
+照相 < take\-a\-photograph;
+白飯 < plain\-cooked\-rice;
+日子 < a\-\(calendar\)\-date;
+建築業 < building\-industry;
+政治氣候 < political\-climate;
+廣域網路 < wide\-area\-network;
+教友大會 < church\-conference;
+美國航空公司 < american\-airlines;
+教材 < teaching\-material;
+鄰國 < bordering\-country;
+機製 < machine\-processed;
+長達 < extend\-as\-long\-as;
+化妝 < to\-put\-on\-make\-up;
+難捱 < trying\,\-difficult;
+大局 < general\-situation;
+撒迦利亞書 < book\-of\-zechariah;
+敏感 < sensitive\-\(issue\);
+紡織 < spinning\-\(thread\);
+大多 < for\-the\-most\-part;
+徒刑 < \(prison\)\-sentence;
+軍事力量 < military\-strength;
+波士頓大學 < boston\-university;
+支持 < to\-be\-in\-favor\-of;
+紛紛 < one\-after\-another;
+麥克維 < \(timothy\)\-mcveigh;
+應用層 < application\-layer;
+桌別林 < \(charlie\)\-chaplin;
+電話服務 < telephone\-service;
+蓋爾語 < gaelic\-\(language\);
+交換以太網絡 < switched\-ethernet;
+外國 < foreign\-\(country\);
+阿拉伯語 < arabic\-\(language\);
+捕食 < catch\-and\-feed\-on;
+支柱產業 < mainstay\-industry;
+無所謂 < to\-be\-indifferent;
+多站地址 < multicast\-address;
+齄 < red\-sores\-on\-nose;
+經濟安全 < economic\-security;
+黟 < black\-and\-shining;
+鹁 < species\-of\-pigeon;
+輔課 < subsidiary\-course;
+外交風波 < diplomatic\-crisis;
+鵵 < scops\-semitorques;
+八股 < eight\-\-part\-essay;
+平民 < \(ordinary\)\-people;
+郊區 < suburban\-district;
+兩者 < both\-sides\|things;
+鮸 < sciaena\-albiflora;
+魫 < the\-young\-of\-fish;
+部份 < part\-\(of\-a\-whole\);
+髽 < to\-dress\-the\-hair;
+電話網路 < telephone\-network;
+白肉 < plain\-boiled\-pork;
+饩 < sacrficial\-victim;
+邊塞 < frontier\-fortress;
+餂 < to\-obtain\-by\-hook;
+石刻 < stone\-inscription;
+鞸 < leather\-arm\-guard;
+靿 < the\-leg\-of\-a\-boot;
+緊密 < inseparably\-close;
+隸 < be\-subservient\-to;
+機器人 < mechanical\-person;
+閪 < to\-lose\-lost\-item;
+邊卡 < border\-checkpoint;
+緩和 < to\-ease\-\(tension\);
+反過來說 < on\-the\-other\-hand;
+維持費 < maintenance\-costs;
+銠 < rhodium\-ruthenium;
+編印 < compile\-and\-print;
+鉕 < promethium\-bronze;
+辦公自動化 < office\-automation;
+鈳 < columbium\-niobium;
+凱旋 < return\-triumphant;
+歐洲語言 < european\-language;
+瀉肚 < to\-have\-diarrhoea;
+醭 < moulds\-on\-liquids;
+醑 < to\-strain\-spirits;
+酺 < drink\-with\-others;
+網絡設備 < network\-equipment;
+白眼 < supercilious\-look;
+板擦兒 < blackboard\-eraser;
+日益增加 < to\-increase\-daily;
+貍 < a\-fox\-like\-animal;
+眼尖 < to\-have\-good\-eyes;
+豋 < ceremonial\-vessel;
+報帳 < render\-an\-account;
+經濟力量 < economic\-strength;
+覼 < explain\-in\-detail;
+同性戀 < homosexual\-\(love\);
+補發 < supply\-again\-\(sth;
+變本加厲 < become\-aggravated;
+不及物動詞 < intransitive\-verb;
+光纖接口 < optical\-interface;
+諾貝爾和平獎 < nobel\-peace\-prize;
+蜔 < inlaid\-shell\-work;
+把頭 < labour\-contractor;
+商業行為 < business\-activity;
+軍費開支 < military\-spending;
+蘵 < physalis\-angulata;
+性騷擾 < sexual\-harassment;
+藨 < kind\-of\-raspberry;
+蕸 < water\-lily''s\-leaf;
+蕑 < valeriana\-villosa;
+軟件平臺 < software\-platform;
+葎 < humulus\-japonicus;
+屏障 < protective\-screen;
+菣 < artemisia\-apiacea;
+莛 < stalks\-of\-grasses;
+火星 < mars\-\(the\-planet\);
+茍 < to\-be\-circumspect;
+騎馬 < ride\-on\-horseback;
+橫斷物 < transverse\-object;
+抄錄 < to\-make\-a\-copy\-of;
+揭曉 < announce\-publicly;
+罛 < large\-fishing\-net;
+白屈菜 < greater\-celandine;
+縰 < band\-for\-the\-hair;
+綎 < silk\-braided\-cord;
+按圖索驥 < try\-to\-locate\-sth;
+紬 < kind\-of\-thin\-silk;
+病程 < course\-of\-disease;
+傳輸率 < transmission\-rate;
+籸 < powdery\-substance;
+希伯來語 < hebrew\-\(language\);
+籓 < big\-winnow\-basket;
+開發週期 < development\-cycle;
+篨 < coarse\-bamboo\-mat;
+申訴 < to\-appeal\-\(to\-sb\);
+伺服器 < server\-\(computer\);
+供需 < supply\-and\-demand;
+地殼 < the\-earth''s\-crust;
+閉幕 < the\-curtain\-falls;
+祊 < river\-in\-shandong;
+盛名 < famous\-reputation;
+工委 < working\-committee;
+戰略夥伴 < strategic\-partner;
+筆調 < \(of\-writing\)\-tone;
+展覽 < to\-put\-on\-display;
+白布 < plain\-white\-cloth;
+靜脈吸毒 < intraveneous\-drug;
+瘵 < a\-wasting\-disease;
+無期徒刑 < life\-imprisonment;
+工地 < construction\-site;
+璫 < pendant\-ornaments;
+百分之百 < a\-hundred\-percent;
+棕色 < brown\-\(the\-color\);
+篇目 < table\-of\-contents;
+玞 < an\-inferior\-agate;
+膝上型電腦 < laptop\-\(computer\);
+萊溫斯基 < \(monica\)\-lewinsky;
+熀 < the\-blaze\-of\-fire;
+住院 < to\-be\-in\-hospital;
+傳輸服務 < transport\-service;
+搏動 < beat\-rhythmically;
+接待 < receive\-\(a\-visit\);
+灎 < movement\-of\-water;
+公務 < official\-business;
+渰 < forming\-or\-rising;
+拘留 < detain\-\(prisoner\);
+洶 < the\-rush\-of\-water;
+綜合布線 < integrated\-wiring;
+國際法 < international\-law;
+公佈 < publicly\-announce;
+內亂 < internal\-disorder;
+衛星 < \(space\)\-satellite;
+拍照 < to\-take\-a\-picture;
+病故 < die\-of\-an\-illness;
+衝擊 < \(be\-under\)\-attack;
+長久 < \(for\-a\)\-long\-time;
+朠 < color\-of\-the\-moon;
+傳輸通道 < transport\-channel;
+政府部門 < government\-branch;
+暔 < name\-of\-a\-country;
+錄音 < \(sound\)\-recording;
+新聞週刊 < newsweek\-magazine;
+攰 < totally\-exhausted;
+保祐 < bless\-and\-protect;
+掫 < be\-on\-night\-watch;
+捷報 < report\-of\-success;
+捥 < to\-bend\-the\-wrist;
+團圓 < to\-have\-a\-reunion;
+直接競爭 < direct\-competitor;
+中央委員會 < central\-committee;
+醫療經驗 < medical\-expertise;
+廣播地址 < broadcast\-address;
+愰 < clearness\-of\-mind;
+授勛 < to\-award\-an\-honor;
+哀鳴 < a\-plaintive\-whine;
+生物武器 < biological\-weapon;
+弖 < phonetic\-for\-''te'';
+懂行 < to\-know\-the\-ropes;
+軍區 < a\-military\-region;
+保爾 < \(a\-personal\-name\);
+財閥 < financial\-magnate;
+暗無天日 < complete\-darkness;
+尨 < shaggy\-haired\-dog;
+拍攝 < \(shoot\-a\)\-picture;
+侵截者 < \(computer\)\-hacker;
+考驗 < \(put\-to\-the\)\-test;
+保溫 < heat\-preservation;
+高級研究 < advanced\-research;
+屏氣 < hold\-one''s\-breath;
+自主系統 < autonomous\-system;
+白金漢宮 < buckingham\-palace;
+運行狀況 < operational\-state;
+夊 < kangxi\-radical\-35;
+困難在於 < the\-problem\-is\.\.\.;
+日耳曼語 < germanic\-language;
+稟賦 < natural\-endowment;
+病危 < be\-critically\-ill;
+傳輸協定 < transfer\-protocol;
+喿 < chirping\-of\-birds;
+喼 < used\-phonetically;
+喹 < chemical\-compound;
+併發 < be\-complicated\-by;
+哵 < the\-cry\-of\-a\-bird;
+哴 < crying\-of\-infants;
+財貿 < finance\-and\-trade;
+大刀闊斧 < bold\-and\-decisive;
+特別待遇 < special\-treatment;
+吢 < vomiting\-of\-a\-dog;
+初學者 < beginning\-student;
+專用網路 < dedicated\-network;
+西王母 < name\-of\-a\-goddess;
+五角大樓官員 < pentagon\-official;
+敘利亞文 < syriac\-\(language\);
+漢字 < chinese\-character;
+安穩 < smooth\-and\-steady;
+倈 < to\-induce\-to\-come;
+俈 < to\-inform\-quickly;
+到那個時候 < until\-this\-moment;
+仂 < surplus\-or\-excess;
+在頭版 < on\-the\-front\-page;
+專業 < specialized\-field;
+乪 < a\-bend\-in\-a\-river;
+趨時 < to\-follow\-fashion;
+䶰 < feather\-ornaments;
+䶖 < disease\-of\-tongue;
+䵜 < to\-plough\-and\-sow;
+䴊 < the\-crow\-pheasant;
+仍舊 < still\-\(remaining\);
+䳤 < a\-kind\-of\-strange;
+䳙 < a\-egret\-like\-bird;
+拗口 < hard\-to\-pronounce;
+䯥 < with\-a\-high\-skull;
+䯢 < partial\-paralysis;
+䮫 < a\-big\-mule\-an\-ass;
+䮚 < diseases\-of\-horse;
+䮐 < in\-good\-condition;
+䭔 < steamed\-dumplings;
+䬰 < light\-refreshment;
+䬕 < sound\-of\-the\-wind;
+䬍 < the\-sound\-of\-wind;
+䬆 < a\-blustering\-gale;
+䫦 < the\-lower\-jawbone;
+䫟 < facial\-complexion;
+䫍 < to\-bow\-one''s\-head;
+䫉 < facial\-appearance;
+不歡而散 < part\-on\-bad\-terms;
+䨕 < pouring\-with\-rain;
+中華民國 < republic\-of\-china;
+䧺 < the\-male\-of\-birds;
+䦪 < sound\-of\-the\-door;
+喘氣 < to\-breathe\-deeply;
+䦃 < to\-dig\-with\-a\-hoe;
+䣻 < color\-of\-the\-wine;
+拜倒 < prostrate\-oneself;
+波蘭語 < polish\-\(language\);
+䢝 < the\-next\-in\-order;
+䡷 < noise\-of\-vehicles;
+䡪 < fan\-of\-a\-carriage;
+䡙 < an\-armed\-carriage;
+䞕 < color\-of\-the\-fire;
+䞂 < fairly\-prosperous;
+才思 < imaginative\-power;
+䝺 < to\-pierce\-through;
+䝳 < to\-kill\-for\-money;
+䝲 < farewell\-presents;
+並駕齊驅 < run\-neck\-and\-neck;
+波音 < boeing\-\(aircraft\);
+轟炸機 < bomber\-\(aircraft\);
+䜢 < cruel\-and\-violent;
+難以應付 < hard\-to\-deal\-with;
+䚠 < unbroken\-firewood;
+䚝 < new\-growing\-horns;
+䚚 < horn\-of\-an\-animal;
+䚑 < to\-steal\-a\-glance;
+䚀 < to\-see\-stealthily;
+䙴 < to\-soar\-as\-a\-bird;
+䙪 < a\-loop\-for\-button;
+洛杉磯時報 < los\-angeles\-times;
+䘎 < name\-of\-an\-insect;
+硬件平臺 < hardware\-platform;
+䗹 < hairy\-caterpillar;
+作業 < school\-assignment;
+官方語言 < official\-language;
+鼓舞 < heartening\-\(news\);
+䕧 < zizania\-latifolia;
+䕆 < round\-straw\-quilt;
+醫學家 < medical\-scientist;
+䓛 < molecular\-formula;
+䒽 < illicium\-anisatum;
+䒐 < disturbed\-in\-mind;
+䑼 < ocean\-going\-liner;
+北京近郊 < suburb\-of\-beijing;
+䐠 < between\-the\-flesh;
+䐘 < to\-laugh\-heartily;
+䏰 < a\-kind\-of\-insects;
+華盛頓 < washington\-\(d\.c\.\);
+䍭 < a\-ewe\-or\-she\-goat;
+䍇 < flat\-bottom\-crock;
+䌨 < thin\-silk\-fabrics;
+䋻 < to\-spin\-and\-weave;
+䋺 < a\-swing\-a\-crupper;
+䋘 < to\-hand\-by\-a\-rope;
+文化的交流 < cultural\-exchange;
+䊯 < grains\-with\-beard;
+䉌 < crude\-bamboo\-mats;
+䈠 < books\-and\-volumes;
+斯洛伐克語 < slovak\-\(language\);
+案情 < details\-of\-a\-case;
+丟飯碗 < to\-lose\-one''s\-job;
+䄉 < a\-rite\-or\-service;
+財神 < the\-god\-of\-wealth;
+䁄 < to\-close\-the\-eyes;
+䀹 < to\-wink\-eyelashes;
+比較新 < comparatively\-new;
+㿃 < an\-ox\-headed\-boil;
+㾱 < incurable\-disease;
+㽍 < an\-earthen\-vessel;
+㺿 < a\-jade\-like\-stone;
+外國旅遊者 < foreign\-traveller;
+現狀 < current\-situation;
+小報 < tabloid\-newspaper;
+㶿 < the\-smoke\-went\-up;
+㶴 < a\-very\-great\-fire;
+一般原則 < general\-principle;
+㵫 < water\-gushing\-out;
+㵍 < filled\-with\-water;
+㵄 < name\-of\-a\-dynasty;
+朝聖 < make\-a\-pilgrimage;
+㳜 < the\-flowing\-water;
+㲲 < fine\-cotton\-cloth;
+㲘 < fine\-woolen\-cloth;
+㲋 < a\-kind\-of\-animals;
+㲃 < smooth\-and\-curved;
+保健 < health\-protection;
+㯿 < handle\-of\-a\-ladle;
+㯦 < the\-game\-of\-chess;
+淫水 < sexual\-secretions;
+㮵 < common\-sandalwood;
+㮨 < codium\-macronatum;
+㮚 < the\-chestnut\-tree;
+㬛 < to\-dry\-in\-the\-sun;
+射頻干擾 < radio\-interferece;
+㩮 < to\-lift\-up\-or\-off;
+㩩 < to\-come\-to\-an\-end;
+㩙 < a\-cork\-or\-stopper;
+㨢 < to\-rip\-open\-flesh;
+電信號 < electrical\-signal;
+尋味 < to\-think\-sth\-over;
+板煙 < plug\-\(of\-tobacco\);
+注視 < watch\-attentively;
+㣢 < to\-rest\-from\-work;
+㣓 < literary\-in\-taste;
+㣍 < a\-raised\-platform;
+㢮 < to\-unstring\-a\-bow;
+㢑 < a\-collapsed\-house;
+㢄 < a\-kind\-of\-utensil;
+法語 < french\-\(language\);
+㡟 < bed\-mats\-for\-baby;
+㠷 < a\-vessel\-for\-rice;
+㠥 < rugged\-and\-uneven;
+㟴 < lump\-on\-the\-hills;
+㟤 < zhuang\-in\-guangxi;
+㟃 < to\-have\-charge\-of;
+㞭 < name\-of\-an\-island;
+四面八方 < in\-all\-directions;
+㝌 < prolonged\-illness;
+㛴 < to\-anger\-to\-annoy;
+㚅 < to\-worship\-of\-god;
+㙩 < an\-enclosing\-wall;
+㘦 < wall\-made\-of\-soil;
+㘚 < angry\-air\-of\-look;
+㗼 < eating\-or\-talking;
+㗥 < sound\-of\-striking;
+㖧 < can\-not\-see\-clear;
+㔝 < strong\-resistance;
+㓾 < to\-wound\-the\-skin;
+獨立 < to\-be\-independent;
+㑝 < to\-make\-a\-fool\-of;
+㑏 < to\-stand\-and\-wait;
+㑊 < a\-kind\-of\-disease;
+秘書長 < secretary\-general;
+走出 < to\-move\-away\-from;
+聲援 < support\-\(a\-cause\);
+礦藏 < mineral\-resources;
+寫信 < to\-write\-a\-letter;
+三維 < three\-dimensional;
+穴居 < to\-live\-in\-a\-cave;
+狀語 < adverbial\-adjunct;
+在大多數情況下 < in\-most\-instances;
+酬金 < \(monetary\)\-reward;
+國家安全 < national\-security;
+財政 < finances\-\(public\);
+海洋溫度 < ocean\-temperature;
+網際協定 < internet\-protocol;
+外交關係 < foreign\-relations;
+安危 < safety\-and\-danger;
+巴克夏豬 < berkshire\-\(swine\);
+名稱 < name\-\(of\-a\-thing\);
+物質 < \(physical\)\-matter;
+吃穿 < food\-and\-clothing;
+訊框傳送論壇 < frame\-relay\-forum;
+穴位 < acupuncture\-point;
+學位 < educational\-level;
+各界 < all\-walks\-of\-life;
+耳子 < handle\-\(on\-a\-pot\);
+歐洲人 < european\-\(person\);
+思維 < \(line\-of\)\-thought;
+衛生部 < health\-department;
+業界標準 < industry\-standard;
+以免 < in\-order\-to\-avoid;
+一千七百萬 < seventeen\-million;
+事實 < \(the\)\-fact\-\(that\);
+本性 < natural\-instincts;
+難題 < difficult\-problem;
+委員會會議 < committee\-meeting;
+變相 < in\-disguised\-form;
+財務 < financial\-affairs;
+服役 < serve\-in\-the\-army;
+醫療 < medical\-treatment;
+陸基導彈 < land\-based\-missle;
+敬重 < to\-respect\-deeply;
+暗河 < underground\-river;
+頸椎 < cervical\-vertibra;
+網點 < node\-in\-a\-network;
+黑客 < hacker\-\(computer\);
+纖芯 < core\-\(of\-a\-fiber\);
+編隊 < form\-into\-columns;
+敗退 < retreat\-in\-defeat;
+本國 < one''s\-own\-country;
+太平洋 < the\-pacific\-ocean;
+原因是 < the\-reason\-is\-\.\.\.;
+計算機工業 < computer\-industry;
+西番雅書 < book\-of\-zephaniah;
+語言 < \(spoken\)\-language;
+一年半 < a\-year\-and\-a\-half;
+專家評論 < expert\-commentary;
+阿爾巴尼亞人 < albanian\-\(person\);
+不屑 < disdain\-to\-do\-sth;
+嚇得發抖 < tremble\-with\-fear;
+半票 < half\-price\-ticket;
+獨唱 < \(in\-singing\)\-solo;
+不甘心 < not\-reconciled\-to;
+四門轎車 < sedan\-\(motor\-car\);
+私人 < private\-\(citizen\);
+獲准 < obtain\-permission;
+客戶機 < client\-\(computer\);
+權鑰 < keys\-of\-authority;
+失業率 < unemployment\-rate;
+爆管 < cartridge\-igniter;
+礦床 < \(mineral\)\-deposit;
+愛不釋手 < fondle\-admiringly;
+止血 < stanch\-\(bleeding\);
+名字 < \(a\-person''s\)\-name;
+警察局 < police\-department;
+台幣 < new\-taiwan\-dollar;
+顧及 < take\-into\-account;
+歸心者 < religious\-convert;
+沒關係 < it\-doesn''t\-matter;
+下去 < go\-down\-\(descend\);
+從頭到腳 < from\-head\-to\-foot;
+勻稱 < well\-proportioned;
+不力 < not\-do\-one''s\-best;
+道謝 < to\-express\-thanks;
+硝煙 < smoke\-\(from\-guns\);
+藝人 < performing\-artist;
+包園兒 < buy\-the\-whole\-lot;
+教練 < \(athlete''s\)\-coach;
+出院 < to\-leave\-hospital;
+阿里 < ali\-\(proper\-name\);
+一身汗 < sweating\-all\-over;
+附近 < \(in\-the\)\-vicinity;
+廣播網路 < broadcast\-network;
+笨口拙舌 < awkward\-in\-speech;
+牌樓 < decorated\-archway;
+巴斯克語 < basque\-\(language\);
+父母 < father\-and\-mother;
+華北平原 < north\-china\-plain;
+救恩計劃 < plan\-of\-salvation;
+个 < numerary\-adjunct;
+里 < unit\-of\-distance;
+阳 < ''male''\-principle;
+訝 < express\-surprise;
+黍 < glutinous\-millet;
+剧 < theatrical\-plays;
+蘂 < stamen\-or\-pistil;
+挺 < to\-stand\-upright;
+础 < foundation\-stone;
+舅 < mother''s\-brother;
+萧 < common\-artemisia;
+俺 < personal\-pronoun;
+玲 < tinkling\-of\-jade;
+捩 < twist\-with\-hands;
+黛 < blacken\-eyebrows;
+妆 < to\-adorn\-oneself;
+幢 < carriage\-curtain;
+梭 < weaver''s\-shuttle;
+漪 < ripples\-on\-water;
+眷 < take\-interest\-in;
+勋 < meritorious\-deed;
+甭 < there\-is\-no\-need;
+祠 < ancestral\-temple;
+舔 < lick\-with\-tongue;
+蕊 < unopened\-flowers;
+赣 < jiangxi\-province;
+跷 < raise\-one''s\-foot;
+剁 < chop\-by\-pounding;
+薰 < a\-medicinal\-herb;
+叼 < holding\-in\-mouth;
+荼 < bitter\-vegetable;
+徙 < move\-one''s\-abode;
+涔 < river\-in\-shaanxi;
+潢 < expanse\-of\-water;
+秸 < stalks\-of\-millet;
+袈 < buddhist\-cassock;
+珞 < kind\-of\-necklace;
+啾 < wailing\-of\-child;
+亻 < radical\-number\-9;
+夙 < early\-in\-morning;
+鹘 < a\-kind\-of\-pigeon;
+娩 < give\-birth\-child;
+姝 < a\-beautiful\-girl;
+懑 < be\-sick\-at\-heart;
+锉 < carpenter''s\-file;
+洱 < a\-lake\-in\-yunnan;
+蝈 < small\-green\-frog;
+帼 < women''s\-headgear;
+狎 < be\-familiar\-with;
+胪 < arrange\-in\-order;
+豢 < domestic\-animals;
+眇 < blind\-in\-one\-eye;
+羿 < legendary\-archer;
+芩 < salt\-marsh\-plant;
+茭 < an\-aquatic\-grass;
+蓖 < castor\-oil\-plant;
+傧 < entertain\-guests;
+薜 < evergreen\-shrubs;
+趺 < sit\-cross\-legged;
+椹 < a\-chopping\-board;
+霈 < torrential\-rains;
+曩 < in\-ancient\-times;
+栌 < supporting\-block;
+哚 < chemical\-element;
+筌 < bamboo\-fish\-trap;
+浍 < irrigation\-ditch;
+猁 < a\-kind\-of\-monkey;
+啶 < \-d\-\+\-ine\-\(chem\.\);
+鬯 < sacrificial\-wine;
+鲷 < pagrosomus\-major;
+聱 < bent\-and\-twisted;
+劢 < put\-forth\-effort;
+蟪 < a\-kind\-of\-cicada;
+赆 < farewell\-present;
+埯 < cover\-with\-earth;
+鲔 < kind\-of\-sturgeon;
+罨 < medical\-compress;
+嫜 < husband''s\-parent;
+漤 < marinate\-in\-salt;
+嚆 < give\-forth\-sound;
+薹 < cyperus\-rotundus;
+茆 < species\-of\-grass;
+磨子 < mill\,\-millstones;
+共產黨部隊 < communist\-forces;
+后人 < later\-generation;
+航空母艦 < aircraft\-carrier;
+識字 < to\-learn\-to\-read;
+中國大陸 < chinese\-mainland;
+影像會議 < video\-conference;
+心得 < knowledge\-gained;
+悲歡離合 < joys\-and\-sorrows;
+百里挑一 < one\-in\-a\-hundred;
+白細胞 < white\-blood\-cell;
+語法術語 < grammatical\-term;
+求婚 < propose\-marriage;
+編目 < make\-a\-catalogue;
+電流 < electric\-current;
+城鎮 < cities\-and\-towns;
+委員 < committee\-member;
+壁畫 < mural\-\(painting\);
+姓名 < name\-and\-surname;
+是否 < whether\-\(or\-not\);
+總機 < central\-exchange;
+過程 < course\-of\-events;
+熊猴 < assamese\-macaque;
+大會 < general\-assembly;
+基調 < \(speech\)\-keynote;
+誤會 < to\-misunderstand;
+更高性能 < high\-performance;
+超高速乙太網路 < gigabit\-ethernet;
+訂票 < to\-issue\-tickets;
+壽桃 < birthday\-peaches;
+軍事科學 < military\-science;
+服務提供者 < service\-provider;
+器官移殖 < organ\-transplant;
+移動式電話 < mobile\-telephone;
+巴豆 < \(purging\)\-croton;
+壽星 < god\-of\-longevity;
+影像處理 < image\-processing;
+入迷 < to\-be\-fascinated;
+明代 < the\-ming\-dynasty;
+性關係 < sexual\-relations;
+人事部門 < personnel\-office;
+退票 < bounce\-\(a\-check\);
+潛在威脅 < potential\-threat;
+殯儀館 < the\-undertaker''s;
+統計數據 < statistical\-data;
+繃子 < embroidery\-frame;
+得出 < obtain\-\(results\);
+免費 < free\-\(of\-charge\);
+遲暮 < past\-one''s\-prime;
+研討會 < discussion\-forum;
+不分青紅皂白 < indiscriminately;
+特定含義 < specific\-meaning;
+金融系統 < financial\-system;
+導致死亡 < to\-lead\-to\-death;
+板上釘釘 < that\-clinches\-it;
+網橋 < \(network\)\-bridge;
+列為 < be\-classified\-as;
+婚外性接觸 < extramarital\-sex;
+國防 < national\-defence;
+故居 < former\-residence;
+波美比重計 < baume\-hydrometer;
+齙 < projecting\-teeth;
+鹶 < salty\-and\-bitter;
+剽悍 < swift\-and\-fierce;
+武官 < military\-attache;
+不等邊三角形 < scalene\-triangle;
+違憲 < unconstitutional;
+鯆 < the\-skate\-or\-ray;
+勞動 < \(physical\)\-labor;
+為生 < to\-make\-a\-living;
+電腦企業 < computer\-company;
+公羊 < ram\-\(male\-sheep\);
+船隊 < fleet\-\(of\-ships\);
+魬 < sole\-or\-flounder;
+廣州 < guangzhou\-\(city\);
+唉聲嘆氣 < heave\-deep\-sighs;
+不好意思 < feel\-embarrassed;
+電力 < electrical\-power;
+補血 < enrich\-the\-blood;
+骴 < a\-putrid\-carcase;
+外國投資者 < foreign\-investor;
+馘 < cut\-off\-left\-ear;
+巴布亞新幾內亞 < papau\-new\-guinea;
+資料量 < quantity\-of\-data;
+編輯室 < editorial\-office;
+飀 < soughing\-of\-wind;
+燈光 < \(stage\)\-lighting;
+韝 < leather\-arm\-band;
+韊 < a\-case\-for\-a\-bow;
+鞶 < big\-leather\-belt;
+透支 < \(bank\)\-overdraft;
+正常工作 < normal\-operation;
+雗 < a\-white\-pheasant;
+隤 < to\-fall\-in\-ruins;
+傳真發送 < fax\-transmission;
+闠 < gate\-of\-a\-market;
+異性性接觸 < heterosexual\-sex;
+迴旋 < maneuvering\-room;
+拉丁語 < latin\-\(language\);
+操作系統 < operating\-system;
+銻 < antimony\-stibium;
+銧 < point\-of\-a\-sword;
+鉀 < potassium\-kalium;
+白磷 < white\-phosphorus;
+適配層 < adaptation\-layer;
+出風頭 < to\-create\-a\-stir;
+報捷 < report\-a\-success;
+訪問 < pay\-a\-visit\-\(to\);
+傳輸媒界 < transport\-method;
+除夕 < \(new\-year''s\)\-eve;
+躷 < of\-short\-stature;
+蹱 < to\-stagger\-along;
+蹐 < take\-short\-steps;
+桌上型電腦 < desktop\-computer;
+辦案 < to\-handle\-a\-case;
+賙 < give\-for\-charity;
+越野車 < off\-road\-vehical;
+豏 < half\-grown\-beans;
+網絡直徑 < network\-diameter;
+訂單 < \(purchase\)\-order;
+成群結隊 < in\-large\-numbers;
+適配器 < adapter\-\(device\);
+副主席 < vice\-chairperson;
+華僑 < overseas\-chinese;
+誕 < to\-bear\-children;
+滑鼠 < mouse\-\(computer\);
+覂 < to\-throw\-a\-rider;
+襱 < legs\-of\-trousers;
+裛 < to\-wrap\-and\-bind;
+袗 < unlined\-garments;
+無所不賣 < to\-sell\-anything;
+衎 < to\-give\-pleasure;
+蟿 < acrida\-chinensis;
+螋 < spider\-millipede;
+蝻 < immature\-locusts;
+病菌 < harmful\-bacteria;
+記者招待會 < press\-conference;
+捷克語 < czech\-\(language\);
+虥 < striped\-wild\-cat;
+筆底下 < ability\-to\-write;
+進修 < advanced\-studies;
+藦 < edible\-mushrooms;
+長江 < changjiang\-river;
+藋 < sambucu\-javinica;
+薃 < cyperus\-amuricus;
+通用電器 < general\-electric;
+蔇 < luxuriant\-growth;
+幾千 < several\-thousand;
+朝鮮半島 < korean\-peninsula;
+葙 < celosia\-argentea;
+菉 < the\-green\-bamboo;
+芘 < malva\-sylvestris;
+到了 < in\-\(a\-past\-time\);
+核原料 < nuclear\-material;
+有關人士 < persons\-involved;
+報名 < enter\-one''s\-name;
+出名 < well\-known\-\(for\);
+授獎 < to\-award\-a\-prize;
+體育 < physical\-culture;
+耶利米書 < book\-of\-jeremiah;
+耼 < ears\-without\-rim;
+不爭氣 < be\-disappointing;
+漢語 < chinese\-language;
+金融市場 < financial\-market;
+綵 < varicolored\-silk;
+紽 < a\-strand\-of\-silk;
+糵 < fermenting\-grain;
+糈 < sacrificial\-rice;
+兵役 < military\-service;
+籧 < crude\-bamboo\-mat;
+北冰洋 < the\-arctic\-ocean;
+兩岸對話 < bilaterial\-talks;
+箯 < bamboo\-palanquin;
+箊 < bamboo\-with\-thin;
+秷 < sound\-of\-reaping;
+磥 < a\-heap\-of\-stones;
+羅密歐與朱麗葉 < romeo\-and\-juliet;
+砫 < ancestral\-tablet;
+瞘 < deeply\-sunk\-eyes;
+瞋 < glare\-with\-anger;
+畢肖 < resemble\-closely;
+睜 < to\-open\-the\-eyes;
+不經之談 < absurd\-statement;
+崩漏 < uterine\-bleeding;
+盦 < lid\-of\-a\-caldron;
+癉 < to\-hate\-bitterly;
+冗員 < excess\-personnel;
+兵士 < ordinary\-soldier;
+要人 < important\-person;
+採擇 < select\-and\-adopt;
+踩線 < step\-on\-the\-line;
+瓟 < the\-bottle\-gourd;
+猸 < a\-kind\-of\-animal;
+又來了 < here\-we\-go\-again;
+癱子 < paralyzed\-person;
+狻 < a\-fabulous\-beast;
+巨匠 < master\-craftsman;
+閱兵 < to\-review\-troops;
+傲氣 < air\-of\-arrogance;
+烜 < light\-of\-the\-sun;
+便衣 < civilian\-clothes;
+網際網路協會 < internet\-society;
+路由協定 < routing\-protocol;
+澦 < place\-in\-sichuan;
+澥 < a\-blocked\-stream;
+澔 < radiance\-of\-gems;
+尋訪 < to\-inquire\-after;
+寶貝 < treasured\-object;
+閱世 < to\-see\-the\-world;
+渫 < beating\-of\-ocean;
+簡明 < simple\-and\-clear;
+網路平台 < network\-platform;
+安頓 < find\-a\-place\-for;
+公公 < husband''s\-father;
+例語 < example\-sentance;
+毮 < to\-pull\-out\-hair;
+毪 < serge\-from\-tibet;
+樛 < bending\-branches;
+閃亮 < brilliant\,\-shiny;
+光檢測器 < optical\-detector;
+枲 < male\-nettle\-hemp;
+電腦網路 < computer\-network;
+枒 < the\-coconut\-tree;
+波爾多液 < bordeaux\-mixture;
+斵 < to\-cut\-to\-pieces;
+斞 < a\-stack\-of\-grain;
+撚 < twirl\-in\-fingers;
+原子科學家 < atomic\-scientist;
+均勢 < balance\-of\-power;
+發達國家 < developed\-nation;
+十多億 < over\-one\-billion;
+已經進行 < already\-underway;
+傳送服務 < delivery\-service;
+挷 < to\-propel\-a\-boat;
+保留 < continue\-to\-have;
+人頭 < number\-of\-people;
+接人 < to\-meet\-a\-person;
+讀者來信 < reader''s\-letters;
+弳 < circular\-measure;
+廵 < to\-go\-on\-circuit;
+一下子 < in\-a\-short\-while;
+哈巴谷書 < book\-of\-habakkuk;
+核設施 < nuclear\-facility;
+國力 < a\-nation''s\-power;
+白壁微瑕 < a\-slight\-blemish;
+十幾個月 < ten\-months\-or\-so;
+非政府 < non\-governmental;
+主幹線 < backbone\-\(cable\);
+嬎 < to\-bear\-multiple;
+電視機 < television\-\(set\);
+媤 < husband''s\-family;
+扮演 < play\-the\-part\-of;
+流行病 < epidemic\-disease;
+病因 < cause\-of\-disease;
+軍事 < military\-affairs;
+佔線 < busy\-\(telephone\);
+山村 < mountain\-village;
+信用證 < letter\-of\-credit;
+不加思索 < without\-thinking;
+囍 < double\-happiness;
+嚳 < mythical\-emperor;
+學術界 < academic\-circles;
+拐彎 < to\-turn\-a\-corner;
+聚變 < \(nuclear\)\-fusion;
+表冊 < statistical\-form;
+嘅 < sound\-of\-sighing;
+單模光纖 < singlemode\-fiber;
+最大能力 < maximum\-capacity;
+衛星城 < \"satellite\"\-town;
+嗞 < to\-consult\-about;
+喺 < to\-be\-located\-at;
+審理 < to\-hear\-\(a\-case\);
+抄本 < handwritten\-copy;
+舔吮 < to\-lick\-and\-suck;
+的一種 < is\-one\-\(kind\-of\);
+曼德拉 < \(nelson\)\-mandela;
+有線電視 < cable\-television;
+印地語 < hindi\-\(language\);
+便橋 < temporary\-bridge;
+工業化 < to\-industrialize;
+冓 < a\-secluded\-place;
+不變資本 < constant\-capital;
+儊 < rough\-and\-rugged;
+傜 < a\-minority\-tribe;
+筆戰 < written\-polemics;
+便服 < everyday\-clothes;
+感謝 < \(express\)\-thanks;
+䶱 < a\-kind\-of\-turtle;
+䵤 < to\-crack\-or\-chap;
+䵣 < white\-with\-black;
+䵃 < a\-kind\-of\-barley;
+䴬 < crumbs\-of\-barley;
+出版社 < publishing\-house;
+下馬 < dismount\-a\-horse;
+䴅 < a\-legendary\-bird;
+沖繩島 < okinawa\-\(island\);
+䳢 < small\-wild\-goose;
+䳐 < an\-owl\-like\-bird;
+安眠 < sleep\-peacefully;
+䲲 < a\-hawk\-like\-bird;
+層層 < layer\-upon\-layer;
+䰃 < dishevelled\-hair;
+䯳 < loosely\-arranged;
+筆帽 < the\-cap\-of\-a\-pen;
+䯇 < to\-exert\-oneself;
+䮴 < unstable\-walking;
+䮳 < to\-give\-birth\-to;
+䮁 < a\-pair\-of\-horses;
+䫌 < bowed\-one''s\-head;
+䪎 < strings\-of\-a\-cap;
+䩥 < a\-belt\-for\-horse;
+䨻 < roar\-of\-thunders;
+䨴 < gathering\-clouds;
+䨳 < the\-rain\-stopped;
+䨏 < sound\-of\-raining;
+䨊 < a\-flock\-of\-birds;
+䧡 < a\-fortified\-wall;
+貶義 < derogatory\-sense;
+䧄 < name\-of\-a\-person;
+䦕 < bang\-of\-the\-door;
+䥛 < a\-kind\-of\-sickle;
+長度指示符 < length\-indicator;
+作法 < course\-of\-action;
+䣮 < smell\-of\-alcohol;
+䣫 < soured\-bean\-curd;
+䢞 < rows\-and\-columns;
+䡮 < trace\-of\-a\-wheel;
+䡢 < a\-small\-carriage;
+演員 < actor\-or\-actress;
+䠻 < to\-bend\-the\-body;
+鑒別 < to\-differentiate;
+䟋 < to\-press\-forward;
+保密 < maintain\-secrecy;
+䞌 < to\-lose\-in\-trade;
+䝋 < a\-little\-of\-pigs;
+䝇 < grunting\-of\-pigs;
+䛏 < to\-call\-somebody;
+䛎 < to\-shout\-in\-rage;
+䛂 < to\-separate\-from;
+䚔 < to\-look\-suddenly;
+䚒 < eyesight\-blurred;
+䚃 < to\-realize\-fully;
+借助 < to\-get\-help\-from;
+䙭 < to\-lift\-or\-raise;
+電話信號 < telephone\-signal;
+䘋 < a\-kind\-of\-insect;
+民主黨 < democratic\-party;
+䗏 < name\-of\-a\-insect;
+䖯 < poisonous\-insect;
+䖐 < sound\-of\-a\-tiger;
+甘地 < \(mahatma\)\-gandhi;
+仿真服務器 < emulation\-server;
+䒣 < lush\-or\-delicate;
+䑸 < a\-group\-of\-boats;
+䑅 < dizzy\-and\-sleepy;
+䐨 < back\-of\-the\-foot;
+䏒 < half\-of\-the\-body;
+䏏 < signs\-and\-groans;
+䎯 < winter\-ploughing;
+䎂 < colorful\-feather;
+電視劇 < tv\-drama\-program;
+䋤 < plain\-white\-silk;
+䋔 < to\-band\-together;
+䉷 < a\-feather\-screen;
+䉉 < a\-writing\-tablet;
+䈙 < bamboo\-to\-wither;
+䈈 < a\-kind\-of\-bamboo;
+注重 < pay\-attention\-to;
+䆿 < to\-talk\-in\-sleep;
+䆲 < a\-spacious\-house;
+䆈 < young\-and\-tender;
+䅼 < a\-kind\-of\-grains;
+䅺 < grain\-in\-the\-ear;
+輻射波 < radiation\-\(wave\);
+懸掛 < \(car\)\-suspension;
+䂪 < hard\-barren\-land;
+䀃 < a\-kind\-of\-vessel;
+㾦 < scab\-over\-a\-sore;
+㾁 < walking\-like\-mad;
+㽮 < a\-point\-of\-light;
+㽊 < cracking\-of\-tile;
+㻒 < red\-colored\-jade;
+㻁 < a\-kind\-of\-jasper;
+不謝 < don''t\-mention\-it;
+㺵 < black\-jade\-stone;
+㺴 < name\-of\-a\-spirit;
+㺦 < a\-running\-animal;
+㹺 < dog\-to\-take\-food;
+㹇 < a\-kind\-of\-cattle;
+㸣 < in\-ancient\-china;
+本義 < original\-meaning;
+㶾 < tough\-and\-honest;
+㶍 < name\-of\-a\-stream;
+伴星 < companion\-\(star\);
+保全 < save\-from\-damage;
+㴧 < of\-flowing\-water;
+威爾士語 < welsh\-\(language\);
+抄件 < duplicate\-\(copy\);
+㳽 < a\-watery\-expanse;
+㱶 < a\-swellen\-corpse;
+㱭 < an\-infertile\-egg;
+㰤 < to\-laugh\-hertily;
+㰛 < name\-of\-a\-county;
+㰅 < eaves\-of\-a\-house;
+㯕 < sticks\-or\-frames;
+㯃 < the\-varnish\-tree;
+男子籃球 < men''s\-basketball;
+㮓 < an\-extreme\-limit;
+㭺 < the\-cherry\-apple;
+聯邦大樓 < federal\-building;
+㪭 < to\-draw\-together;
+㪖 < sound\-of\-beating;
+普通問題 < common\-questions;
+㨼 < to\-take\-by\-force;
+罷課 < student''s\-strike;
+㧺 < a\-finger\-wrapper;
+輸送媒介 < transport\-medium;
+㦜 < to\-move\-the\-mind;
+應戰 < face\-a\-challenge;
+核威 < nuclear\-strength;
+㢰 < to\-stretch\-a\-bow;
+虜獲 < capture\-\(people\);
+㡽 < depraved\-talking;
+㡉 < a\-kind\-of\-fabric;
+㠧 < a\-little\-slanted;
+㠎 < a\-lofty\-mountain;
+本票 < cashier''s\-cheque;
+防衛武器 < defensive\-weapon;
+㝫 < shape\-of\-the\-sky;
+㝪 < a\-slanting\-house;
+㝩 < spaciously\-rooms;
+過份簡單化 < oversimplication;
+㜴 < dark\-and\-obscure;
+㜝 < to\-cherish\-anger;
+㜈 < a\-beaugiful\-face;
+體育之窗 < window\-on\-sports;
+書寫語言 < written\-language;
+㚜 < with\-great\-power;
+㚗 < with\-a\-big\-mouth;
+㚇 < draw\-the\-feet\-up;
+㙞 < a\-small\-mountain;
+㙎 < breach\-of\-a\-tank;
+㙅 < a\-walled\-viliage;
+㙀 < a\-vegetable\-plot;
+㗻 < baby''s\-answering;
+㗙 < to\-shout\-or\-bawl;
+㕭 < to\-bark\-as\-a\-dog;
+㕩 < sound\-of\-tapping;
+安徽 < anhui\-\(province\);
+㕇 < rocks\-collapsing;
+㔑 < an\-incised\-wound;
+商業化 < to\-commercialize;
+㒭 < an\-elder\-brother;
+㒁 < of\-great\-stature;
+站台 < railway\-platform;
+共享帶寬 < shared\-bandwidth;
+㐀 < hillock\-or\-mound;
+文化障礙 < cultural\-barrier;
+直接影響 < direct\-influence;
+與此同時 < at\-the\-same\-time;
+主要來源 < principle\-source;
+人民公社 < people''s\-commune;
+獲益 < obtain\-a\-benefit;
+下面請看 < please\-see\-below;
+今昔 < past\-and\-present;
+板栗 < chinese\-chestnut;
+吸管 < \(drinking\)\-straw;
+家務 < household\-duties;
+金融風波 < financial\-crisis;
+開幕式 < opening\-ceremony;
+實習生 < intern\-\(student\);
+民間 < among\-the\-people;
+婚禮 < wedding\-ceremony;
+警衛 < \(security\)\-guard;
+知識工程師 < knowledge\-worker;
+國賓館 < state\-guesthouse;
+乾杯 < to\-drink\-a\-toast;
+猿猴 < apes\-and\-monkeys;
+網絡協議 < network\-protocol;
+並激 < shunt\-excitation;
+量綱 < dimension\-\(unit\);
+質問 < \(ask\-a\)\-question;
+蒐集 < to\-gather\-\(data\);
+三千到五千萬 < 30\-to\-50\-million;
+不至於 < cannot\-go\-so\-far;
+暑瘟 < tropical\-disease;
+博覽 < read\-extensively;
+深入 < penetrate\-deeply;
+丹桂 < orange\-osmanthus;
+板壁 < wooden\-partition;
+某人 < a\-certain\-person;
+月曆 < monthly\-calendar;
+治病 < treat\-an\-illness;
+十誡 < ten\-commandments;
+白衣戰士 < warrior\-in\-white;
+安如磐石 < as\-solid\-as\-rock;
+外長 < foreign\-minister;
+百分點 < percentage\-point;
+配藥 < dispense\-\(drugs\);
+功能集 < function\-library;
+字串 < character\-string;
+故障排除 < fault\-resolution;
+金融改革 < financial\-reform;
+一個中國政策 < one\-china\-policy;
+化學戰 < chemical\-warfare;
+大多數 < \(great\)\-majority;
+大選 < general\-election;
+唐代 < the\-tang\-dynasty;
+性病 < venereal\-disease;
+君權 < monarchial\-power;
+雌性接口 < female\-connector;
+藏文 < tibetan\-language;
+心臟移殖 < heart\-transplant;
+菏蘭語 < dutch\-\(language\);
+一年多 < more\-than\-a\-year;
+遙控操作 < remote\-operation;
+簡單的說 < to\-put\-it\-simply;
+光接收器 < optical\-receiver;
+機械語言 < machine\-language;
+胡志明市 < ho\-chi\-minh\-city;
+讀物 < reading\-material;
+邊防 < frontier\-defence;
+共和黨 < republican\-party;
+脖頸兒 < back\-of\-the\-neck;
+向東 < towards\-the\-east;
+大無畏 < utterly\-fearless;
+集錦 < best\-of\-the\-best;
+罷教 < teacher''s\-strike;
+外語 < foreign\-language;
+課表 < school\-timetable;
+誤解 < misunderstanding;
+不知所云 < not\-know\-what\-sb;
+不忙 < there''s\-no\-hurry;
+超高速 < ultra\-high\-speed;
+集郵 < stamp\-collecting;
+廠長 < factory\-director;
+變法 < political\-reform;
+波折 < twists\-and\-turns;
+群島 < group\-of\-islands;
+太陽微系統公司 < sun\-microsystems;
+聯席會議 < joint\-conference;
+交換網路 < switched\-network;
+犯法 < to\-break\-the\-law;
+不少 < not\-\(just\)\-a\-few;
+年齡 < \(a\-person''s\)\-age;
+性接觸 < sexual\-encounter;
+比翼 < fly\-wing\-to\-wing;
+骨幹網路 < backbone\-network;
+軟件企業 < software\-company;
+拿手菜 < specialty\-\(dish\);
+施洗約翰 < john\-the\-baptist;
+神奇 < magical\-mystical;
+禁品 < contraband\-goods;
+尼希米記 < book\-of\-nehemiah;
+報紙報導 < newspaper\-report;
+最先 < \(the\)\-very\-first;
+明淨 < bright\-and\-clean;
+重慶 < chongqing\-\(city\);
+婆婆 < husband''s\-mother;
+互操性 < interoperability;
+吃完 < to\-finish\-eating;
+逼近 < press\-on\-towards;
+報館 < newspaper\-office;
+電纜 < \(electric\)\-cable;
+功能群 < functional\-group;
+狀態 < state\-of\-affairs;
+中介 < agent\-\(computer\);
+不光 < not\-the\-only\-one;
+暑天 < hot\-\(summer\)\-day;
+反對 < to\-fight\-against;
+不久 < not\-long\-\(after\);
+離開北京 < to\-leave\-beijing;
+一輩子 < \(for\)\-a\-lifetime;
+睨 < look\-askance\-at;
+怎 < what\?\-why\?\-how\?;
+收 < gather\-together;
+党 < political\-party;
+版 < printing\-blocks;
+季 < quarter\-of\-year;
+牡 < male\-of\-animals;
+診 < examine\-patient;
+姑 < father''s\-sister;
+褓 < swaddling\-cloth;
+馆 < public\-building;
+漿 < any\-thick\-fluid;
+雄 < male\-of\-species;
+亿 < hundred\-million;
+固 < to\-become\-solid;
+溪 < mountain\-stream;
+虞 < concerned\-about;
+嗚 < sound\-of\-crying;
+薇 < osmunda\-regalis;
+戏 < theatrical\-play;
+召 < imperial\-decree;
+瑞 < felicitous\-omen;
+鬢 < hair\-on\-temples;
+僧 < buddhist\-priest;
+檜 < chinese\-cypress;
+檎 < small\-red\-apple;
+驅 < spur\-a\-horse\-on;
+臟 < internal\-organs;
+圳 < furrow\-in\-field;
+繻 < fine\-silk\-guaze;
+孟 < first\-in\-series;
+縋 < climb\-down\-rope;
+閤 < small\-side\-door;
+斎 < vegetarian\-diet;
+盯 < rivet\-gaze\-upon;
+粟 < unhusked\-millet;
+籐 < climbing\-plants;
+掻 < scratch\-lightly;
+俘 < prisoner\-of\-war;
+挾 < clasp\-under\-arm;
+媳 < daughter\-in\-law;
+宙 < time\-as\-concept;
+卜 < fortune\-telling;
+帖 < invitation\-card;
+逞 < indulge\-oneself;
+揪 < grasp\-with\-hand;
+仑 < logical\-reasons;
+煞 < malignant\-deity;
+鳌 < huge\-sea\-turtle;
+瞩 < watch\-carefully;
+疚 < chronic\-disease;
+蔓 < creeping\-plants;
+骏 < excellent\-horse;
+闽 < fujian\-province;
+袅 < curling\-upwards;
+辐 < spokes\-of\-wheel;
+琉 < sparkling\-stone;
+舜 < legendary\-ruler;
+轧 < crush\-by\-weight;
+滇 < yunnan\-province;
+桓 < variety\-of\-tree;
+棠 < crab\-apple\-tree;
+吮 < suck\-with\-mouth;
+蜷 < creep\-like\-worm;
+枷 < cangue\-scaffold;
+羲 < ancient\-emperor;
+孚 < brood\-over\-eggs;
+皑 < brilliant\-white;
+缥 < light\-blue\-silk;
+诌 < play\-with\-words;
+泾 < name\-of\-a\-river;
+觎 < desire\-strongly;
+玺 < imperial\-signet;
+卞 < to\-be\-impatient;
+辔 < bridle\-of\-horse;
+趔 < not\-progressing;
+徜 < walking\-and\-fro;
+荠 < water\-chestnuts;
+汞 < element\-mercury;
+畿 < imperial\-domain;
+舂 < grind\-in\-mortar;
+籴 < purchase\-grains;
+穰 < stalks\-of\-grain;
+嗄 < hoarse\-of\-voice;
+渚 < small\-sand\-bank;
+砝 < balance\-weights;
+杼 < shuttle\-of\-loom;
+龃 < irregular\-teeth;
+勐 < imperial\-degree;
+矸 < a\-rock\-or\-cliff;
+蕨 < pteris\-aquilina;
+豉 < fermented\-beans;
+徭 < conscript\-labor;
+麈 < species\-of\-deer;
+蕤 < drooping\-leaves;
+绡 < raw\-silk\-fabric;
+芨 < name\-of\-a\-plant;
+苣 < kind\-of\-lettuce;
+碛 < sand\-and\-gravel;
+莒 < hemp\-like\-plant;
+萁 < kind\-of\-grasses;
+眄 < to\-look\-askance;
+囟 < top\-of\-the\-head;
+岣 < a\-hill\-in\-hunan;
+嗾 < to\-set\-a\-dog\-on;
+荜 < species\-of\-bean;
+糁 < a\-grain\-of\-rice;
+粝 < unpolished\-rice;
+裰 < to\-mend\-clothes;
+薨 < death\-of\-prince;
+茑 < the\-convovulvus;
+翮 < stem\-of\-feather;
+艟 < ancient\-warship;
+鼯 < flying\-squirrel;
+砩 < name\-of\-a\-stone;
+炻 < a\-kind\-of\-china;
+檫 < sassafras\-tzumu;
+狴 < a\-kind\-of\-tapir;
+高效率 < high\-efficiency;
+天父 < heavenly\-father;
+幾乎完全 < almost\-entirely;
+特徵 < characteristics;
+信息時代 < information\-age;
+暑假 < summer\-vacation;
+擺脫 < break\-away\-from;
+半數 < half\-the\-number;
+冰霜 < moral\-integrity;
+勻溜 < even\-and\-smooth;
+原委 < the\-whole\-story;
+產品經理 < product\-manager;
+資料鏈結層 < data\-link\-layer;
+軍事威脅 < military\-threat;
+特寫 < feature\-article;
+春天 < spring\-\(season\);
+網路服務 < network\-service;
+研究中心 < research\-center;
+止痛 < to\-relieve\-pain;
+前不久 < not\-long\-before;
+叛亂 < armed\-rebellion;
+文檔 < \(computer\)\-file;
+崇拜儀式 < worship\-service;
+緬甸 < myanmar\-\(burma\);
+方興未艾 < to\-be\-unfolding;
+雙邊貿易 < bilateral\-trade;
+失望 < be\-disappointed;
+軍事部門 < military\-branch;
+網站 < network\-station;
+除此之外 < apart\-from\-this;
+太陽公司 < sun\-corporation;
+外國資本 < foreign\-capital;
+開門 < open\-\(the\)\-door;
+生產隊 < production\-team;
+經管 < be\-in\-charge\-of;
+用戶線 < subscriber\-line;
+美國人 < american\-person;
+半天 < half\-of\-the\-day;
+語族 < language\-branch;
+往年 < in\-former\-years;
+日報 < daily\-newspaper;
+光電 < opto\-electrical;
+白鐵 < galvanized\-iron;
+雅歌 < song\-of\-solomon;
+彼岸 < the\-other\-shore;
+配合 < coordinate\-with;
+報系 < newspaper\-chain;
+豐富多彩 < richly\-colorful;
+標量 < scalar\-quantity;
+南北 < north\-and\-south;
+比容 < specific\-volume;
+看上去 < it\-would\-appear;
+盈虧 < profit\-and\-loss;
+勸導 < try\-to\-convince;
+陣營 < group\-of\-people;
+幾百 < several\-hundred;
+大寫 < capital\-letters;
+過活 < live\-one''s\-life;
+牌位 < memorial\-tablet;
+早些 < \(a\-bit\)\-earlier;
+課外 < extracurricular;
+零等待狀態 < zero\-wait\-state;
+收拾 < to\-put\-in\-order;
+不白之冤 < unrighted\-wrong;
+網段 < network\-segment;
+弟弟 < younger\-brother;
+遲早 < sooner\-or\-later;
+戒備森嚴 < heavily\-guarded;
+矮小 < short\-and\-small;
+半途而廢 < give\-up\-halfway;
+比價 < price\-relations;
+龑 < high\-and\-bright;
+新任 < newly\-appointed;
+霸佔 < forcibly\-occupy;
+鼕 < rattle\-of\-drums;
+幾十億 < several\-billion;
+病魔 < serious\-illness;
+常用 < in\-common\-usage;
+冰磚 < ice\-cream\-brick;
+鴒 < species\-of\-lark;
+白菜 < chinese\-cabbage;
+鴂 < the\-tailor\-bird;
+鳻 < the\-wild\-pigeon;
+鳓 < chinese\-herring;
+鱡 < the\-cuttle\-fish;
+鱅 < a\-kind\-of\-tench;
+不待說 < needless\-to\-say;
+批量生產 < to\-mass\-produce;
+魰 < the\-flying\-fish;
+在很多方面 < in\-many\-aspects;
+髾 < tail\-of\-a\-comet;
+髴 < disheveled\-hair;
+操作速率 < operating\-speed;
+強加 < impose\-by\-force;
+騘 < a\-piebald\-horse;
+饇 < to\-eat\-too\-much;
+颻 < floating\-in\-air;
+颮 < storm\-whirlwind;
+外事 < foreign\-affairs;
+聯合發表 < joint\-statement;
+邊地 < border\-district;
+韞 < an\-orange\-color;
+鞴 < saddle\-up\-horse;
+靸 < a\-child''s\-shoes;
+雱 < snowing\-heavily;
+舌面 < blade\-of\-tongue;
+創記錄 < to\-set\-a\-record;
+著作 < a\-literary\-work;
+白米 < \(polished\)\-rice;
+瀕臨 < on\-the\-verge\-of;
+不完全葉 < incomplete\-leaf;
+選單 < \(software\)\-menu;
+執法 < law\-enforcement;
+鎤 < sound\-of\-a\-bell;
+不名數 < abstract\-number;
+進展 < to\-make\-headway;
+為此 < for\-this\-reason;
+醾 < unfiltered\-wine;
+核反應堆 < nuclear\-reactor;
+經濟改革 < economic\-reform;
+鄹 < name\-of\-a\-state;
+廠史 < factory\-history;
+光磁 < magneto\-optical;
+隘口 < \(mountain\)\-pass;
+網址 < \(internet\)\-site;
+畫面 < \(picture\)\-frame;
+菜地 < vegetable\-field;
+畜類 < domestic\-animal;
+躀 < to\-stumble\-over;
+總經理 < general\-manager;
+趮 < easily\-provoked;
+半壁江山 < half\-of\-country;
+抱養 < adopt\-\(a\-child\);
+城樓 < city\-gate\-tower;
+諡 < posthumous\-name;
+採種 < seed\-collecting;
+俄巴底亞書 < book\-of\-obadiah;
+訒 < hesitate\-to\-say;
+古典音樂 < classical\-music;
+花白 < grizzled\-\(hair\);
+不可多得 < hard\-to\-come\-by;
+襼 < ''kimono''\-sleeve;
+襌 < unlined\-garment;
+褧 < unlined\-clothes;
+重新開始 < resume\,\-restart;
+屍體 < \(lifeless\)\-body;
+圖簽 < \(computer\)\-icon;
+巴望 < look\-forward\-to;
+螚 < eristalis\-tenax;
+層雲 < stratus\-\(cloud\);
+數百萬 < several\-million;
+拼起來 < to\-put\-together;
+籌碼 < bargaining\-chip;
+藶 < a\-kind\-of\-plant;
+蕢 < edible\-amaranth;
+蕍 < alisma\-plantags;
+蔾 < kind\-of\-bramble;
+蒨 < lush\-vegetation;
+蒓 < an\-edible\-water;
+電子郵件 < electronic\-mail;
+降價 < price\-reduction;
+葑 < the\-rape\-turnip;
+米粉肉 < rice\-flour\-meat;
+標樁 < \(marking\)\-stake;
+閉會 < close\-a\-meeting;
+艅 < a\-despatch\-boat;
+純屬 < pure\-and\-simple;
+光榮 < honor\-and\-glory;
+腢 < the\-collar\-bone;
+辦學 < to\-run\-a\-school;
+標杆 < surveyor''s\-pole;
+幣制 < currency\-system;
+報到 < report\-for\-duty;
+罿 < net\-catch\-birds;
+經濟前途 < economic\-future;
+年份 < particular\-year;
+工讀學校 < the\-reformatory;
+基地 < \(military\)\-base;
+嚴重關切 < serious\-concern;
+光明 < bright\-\(future\);
+高技術 < high\-technology;
+保釋 < release\-on\-bail;
+絍 < to\-lay\-the\-warp;
+經濟危機 < economic\-crisis;
+射頻 < radio\-frequency;
+動態助詞 < aspect\-particle;
+閉音節 < closed\-syllable;
+簔 < a\-coat\-raincoat;
+篰 < a\-bamboo\-basket;
+鬥爭 < struggle\-\(with\);
+裡根 < \(ronald\)\-reagan;
+穄 < panicled\-millet;
+禋 < offer\-sacrifice;
+磪 < a\-high\-mountain;
+暴跳如雷 < stamp\-with\-fury;
+抗衡 < contend\-against;
+級別 < \(military\)\-rank;
+筆誤 < a\-slip\-of\-a\-pen;
+八寶 < eight\-treasures;
+百年 < a\-hundred\-years;
+以西結書 < book\-of\-ezekiel;
+摘借 < to\-borrow\-money;
+化學武器 < chemical\-weapon;
+瘈 < prolonged\-fever;
+瘃 < sores\-from\-cold;
+痾 < chronic\-illness;
+痵 < a\-heart\-symptom;
+痮 < a\-swelled\-belly;
+痠 < aching\-of\-limbs;
+痁 < chronic\-malaria;
+畬 < reclaimed\-field;
+長官 < senior\-official;
+虛電路 < virtual\-circuit;
+登記用戶 < registered\-user;
+種族主義者 < racist\-\(person\);
+琭 < jade\-like\-stone;
+從去年 < since\-last\-year;
+珧 < mother\-of\-pearl;
+入境 < enter\-a\-country;
+珇 < carving\-on\-jade;
+嚴重問題 < serious\-problem;
+臂紗 < \(black\)\-armband;
+玟 < streaks\-in\-jade;
+當務之急 < urgent\-priority;
+獱 < a\-kind\-of\-otter;
+軍校 < military\-school;
+狫 < name\-of\-a\-tribe;
+軟件系統 < software\-system;
+牄 < to\-walk\-rapidly;
+熓 < the\-bank\-a\-fire;
+焵 < to\-temper\-steel;
+把舵 < hold\-the\-rudder;
+菲律賓 < the\-philippines;
+被捕 < be\-under\-arrest;
+瀞 < pool\-in\-a\-river;
+潙 < river\-in\-shanxi;
+網絡瀏覽器 < network\-browser;
+滎 < county\-in\-henan;
+本族語 < native\-language;
+泩 < rising\-of\-water;
+購物中心 < shopping\-center;
+沚 < islet\-in\-stream;
+百十 < a\-hundred\-or\-so;
+坐好 < to\-sit\-properly;
+絆腳石 < stumbling\-block;
+感染者 < infected\-person;
+多樣化 < diversification;
+榡 < quercus\-dentata;
+壁壘森嚴 < closely\-guarded;
+椺 < beam\-of\-a\-house;
+網管員 < network\-manager;
+帖撒羅尼迦後書 < 2\-thessalonians;
+錦雞 < golden\-pheasant;
+柎 < calyx\-of\-flower;
+柁 < large\-tie\-beams;
+枬 < an\-even\-grained;
+自殺 < to\-kill\-oneself;
+朣 < the\-rising\-moon;
+瑪拉基書 < book\-of\-malachi;
+高昂 < in\-high\-spirits;
+貿易夥伴 < trading\-partner;
+穿過 < to\-pass\-through;
+備戰 < prepare\-for\-war;
+月份會議 < monthly\-meeting;
+摻 < a\-delicate\-hand;
+安身 < make\-one''s\-home;
+游說 < drum\-up\-support;
+至於 < go\-so\-far\-as\-to;
+戄 < to\-be\-in\-awe\-of;
+研究報告 < research\-report;
+先進武器 < advanced\-weapon;
+生物 < living\-creature;
+戶籍 < census\-register;
+大發雷霆 < extremely\-angry;
+徬 < to\-wander\-about;
+弴 < red\-lacquer\-bow;
+美國政府 < u\.s\.\-government;
+校舍 < school\-building;
+巹 < nuptial\-winecup;
+不干涉 < noninterference;
+善良 < good\-and\-honest;
+嵎 < mountain\-recess;
+亞爾發和奧米加 < alpha\-and\-omega;
+峞 < high\-and\-uneven;
+塞爾特語 < celtic\-language;
+核武庫 < nuclear\-arsenal;
+客戶機軟件 < client\-software;
+措辭強硬 < strongly\-worded;
+軍備 < \(military\)\-arms;
+首腦 < head\-\(of\-state\);
+安葬 < bury\-\(the\-dead\);
+自動售貨機 < vending\-machine;
+夲 < advance\-quickly;
+中美洲 < central\-america;
+極力 < do\-at\-all\-costs;
+跑步 < to\-walk\-quickly;
+坴 < a\-clod\-of\-earth;
+喣 < to\-breathe\-upon;
+唲 < forced\-laughter;
+公司會議 < company\-meeting;
+貶詞 < derogatory\-term;
+互連 < interconnection;
+厜 < a\-mountain\-peak;
+天主教 < catholic\-church;
+匉 < noise\-of\-waters;
+匄 < to\-beg\-for\-alms;
+改變形像 < transfiguration;
+劘 < make\-into\-mince;
+悲鳴 < utter\-sad\-calls;
+滿意 < to\-be\-satisfied;
+海運 < shipping\-by\-sea;
+留學 < to\-study\-abroad;
+金裡奇 < \(newt\)\-gingrich;
+便條 < \(informal\)\-note;
+傽 < terror\-stricken;
+甚或 < so\-much\-so\-that;
+佔 < occupy\-by\-force;
+山峰 < \(mountain\)\-peak;
+溫柔 < gentle\-and\-soft;
+乸 < feminine\-suffix;
+高中 < high\-and\-middle;
+百兒八十 < about\-a\-hundred;
+帖撒羅尼迦前書 < 1\-thessalonians;
+䶡 < sound\-of\-biting;
+䶎 < sound\-of\-breath;
+胃病 < stomach\-trouble;
+䴾 < to\-grind\-barley;
+䴮 < cakes\-pf\-leaven;
+多模光纖 < multimode\-fiber;
+同齡 < of\-the\-same\-age;
+軟件市場 < software\-market;
+校園骨幹 < campus\-backbone;
+䯄 < a\-piebalk\-horse;
+䮽 < bit\-for\-a\-horse;
+䮵 < name\-of\-a\-horse;
+䮱 < a\-kind\-of\-beast;
+䮧 < long\-hair\-horse;
+䮢 < a\-walking\-horse;
+䮎 < a\-running\-horse;
+䭼 < dark\-blue\-horse;
+䬫 < clarfied\-butter;
+䬁 < a\-light\-cyclone;
+吸音 < sound\-absorbing;
+沒有聯繫 < to\-be\-unrelated;
+䪮 < beautiful\-sound;
+䪕 < to\-wrap\-or\-band;
+䩹 < to\-repair\-shoes;
+䩒 < dressed\-leather;
+麻醉 < to\-anaesthetize;
+䩄 < to\-face\-to\-face;
+䨢 < a\-passing\-cloud;
+䨖 < to\-stop\-raining;
+䨀 < to\-lay\-in\-grain;
+䧯 < name\-of\-a\-place;
+網絡規劃人員 < network\-planner;
+䦫 < inside\-the\-door;
+投奔 < to\-seek\-shelter;
+䥗 < a\-branding\-iron;
+䤱 < a\-solemn\-pledge;
+䣶 < unstrained\-wine;
+例會 < regular\-meeting;
+共產黨 < communist\-party;
+䢦 < to\-lead\-the\-way;
+䢖 < to\-be\-scattered;
+䢁 < tire\-of\-a\-wheel;
+䡻 < shake\-of\-a\-cart;
+䡨 < connected\-carts;
+餅肥 < cake\-fertilizer;
+䡐 < to\-move\-swiftly;
+世界最大 < world''s\-largest;
+䠵 < to\-wear\-clothes;
+䠨 < walking\-rapidly;
+尖銳批評 < sharp\-criticism;
+不見得 < not\-necessarily;
+䝯 < to\-change\-hands;
+䝐 < a\-castrated\-hog;
+䜄 < slow\-on\-talking;
+䛵 < to\-teach\-orally;
+䛟 < wild\-statements;
+䛔 < to\-hold\-in\-hand;
+暴雨 < torrential\-rain;
+䚦 < slanted\-corners;
+䚥 < to\-adjust\-a\-bow;
+䙻 < to\-steal\-a\-look;
+䙨 < to\-wrap\-or\-bind;
+䙝 < under\-garrments;
+䗾 < corbicula\-leana;
+䖼 < the\-dung\-beetle;
+䖙 < a\-resting\-tiger;
+䖉 < to\-roar\-or\-howl;
+䕙 < to\-set\-in\-order;
+䒌 < dark\-blue\-color;
+䏲 < protruded\-bones;
+便宴 < informal\-dinner;
+䎳 < lose\-of\-the\-ear;
+䎉 < to\-walk\-swiftly;
+上述 < above\-mentioned;
+䋷 < a\-kind\-of\-thick;
+䊵 < young\-and\-small;
+䊗 < a\-kind\-of\-grain;
+䊉 < preserved\-fruit;
+䉧 < sound\-of\-bamboo;
+賀年片 < new\-year''s\-card;
+䅷 < an\-ear\-of\-grain;
+䅰 < a\-kind\-of\-grass;
+標準化 < standardization;
+䄮 < dark\-rice\-plant;
+䄕 < god\-of\-the\-land;
+電腦系統 < computer\-system;
+䃷 < a\-kind\-of\-stone;
+䃒 < poor\-and\-barren;
+䁴 < keep\-on\-looking;
+䁳 < to\-lose\-one\-eye;
+實彈 < live\-ammunition;
+貨幣危機 < monetary\-crisis;
+䀉 < food\-containers;
+㿱 < dry\-and\-decayed;
+㾩 < malignant\-boils;
+共享以太網絡 < shared\-ethernet;
+產值 < value\-of\-output;
+暗送秋波 < make\-eyes\-at\-sb;
+使滿意 < to\-make\-content;
+祝賀 < to\-congratulate;
+㼕 < pulp\-of\-a\-melon;
+㼔 < a\-kind\-of\-melon;
+不鏽鋼 < stainless\-steel;
+㼂 < a\-crack\-in\-jade;
+㻍 < name\-of\-a\-sword;
+㺌 < endless\-barking;
+以為 < consider\-\(that\);
+㹧 < fox\-like\-animal;
+㸱 < hornless\-cattle;
+㸩 < to\-desist\-an\-ox;
+核彈 < nuclear\-warhead;
+㸑 < a\-cooking\-stove;
+印度人 < indian\-\(person\);
+上課 < to\-attend\-class;
+奧運村 < olympic\-village;
+㷍 < a\-chemical\-term;
+符合 < in\-keeping\-with;
+技倆 < tricky\-maneuver;
+暗適應 < dark\-adaptation;
+數位網路 < digital\-network;
+㳿 < rolling\-billows;
+㳗 < bank\-of\-a\-river;
+㲔 < woolen\-textiles;
+㱎 < cannot\-be\-known;
+㰬 < shortwindedness;
+㰗 < a\-kind\-of\-maple;
+㰈 < nice\-and\-pretty;
+㯱 < an\-enlarged\-bag;
+㯤 < the\-jujube\-tree;
+㯔 < to\-hull\-heavily;
+泰語 < thai\-\(language\);
+㮡 < to\-light\-a\-fire;
+寵壞 < spoil\-\(a\-child\);
+㭤 < the\-convolvulus;
+交界 < common\-boundary;
+虛擬網絡 < virtual\-network;
+光明日報 < guangming\-daily;
+㫠 < a\-kind\-of\-water;
+㪫 < wise\-and\-clever;
+歷史久遠 < ancient\-history;
+㧎 < forked\-branches;
+老百姓 < ordinary\-people;
+㥞 < to\-think\-deeply;
+㥛 < with\-expedition;
+㢞 < rooms\-connected;
+㢍 < a\-long\-verabdah;
+夫妻店 < family\-run\-shop;
+㡲 < tiles\-on\-a\-roof;
+㡀 < ragged\-clothing;
+㟔 < steep\-and\-lofty;
+㝥 < have\-a\-nighmare;
+三萬 < thirty\-thousand;
+㝅 < to\-give\-suck\-to;
+㜲 < to\-have\-surplus;
+貨源 < supply\-of\-goods;
+㛰 < to\-marry\-a\-wife;
+㚦 < a\-charming\-girl;
+㙼 < a\-military\-wall;
+窗帘 < window\-curtains;
+㙗 < a\-lump\-of\-earth;
+㘺 < cultivated\-land;
+期票 < promissory\-note;
+㗿 < to\-laugh\-loudly;
+㕲 < to\-gag\-or\-bribe;
+㕘 < to\-take\-part\-in;
+㒟 < with\-a\-charming;
+口語 < spoken\-language;
+斯拉夫語 < slavic\-language;
+私營 < privately\-owned;
+外國公司 < foreign\-company;
+寒假 < winter\-vacation;
+哀歌 < a\-mournful\-song;
+兒化韻 < retroflex\-final;
+牽連 < \(be\)\-implicated;
+性行 < sexual\-activity;
+學士 < bachelor\-degree;
+負擔 < \(bear\-a\)\-burden;
+商業中心 < business\-center;
+一秘 < first\-secretary;
+藥瓶 < medicine\-bottle;
+慚愧 < \(to\-be\)\-ashamed;
+人才 < talented\-person;
+不甘 < unreconciled\-to;
+不相上下 < equally\-matched;
+班子 < organized\-group;
+每隔 < at\-intervals\-of;
+愛戴 < love\-and\-esteem;
+愛戀 < be\-in\-love\-with;
+機密文件 < secret\-document;
+杭州 < hangzhou\-\(city\);
+問世 < to\-be\-published;
+悲泣 < weep\-with\-grief;
+法理 < legal\-principle;
+秩序 < order\-\(orderly\);
+網絡打印機 < network\-printer;
+名片 < \(business\)\-card;
+旅費 < travel\-expenses;
+財團 < financial\-group;
+沙石 < sand\-and\-stones;
+禁果 < forbidden\-fruit;
+郵遞 < to\-send\-by\-mail;
+板板六十四 < unaccommodating;
+析出 < to\-seperate\-out;
+第一個層次 < the\-first\-stage;
+具體計劃 < a\-concrete\-plan;
+奔襲 < long\-range\-raid;
+板刷 < scrubbing\-brush;
+服從 < obey\-\(an\-order\);
+施行 < to\-put\-in\-place;
+莫尼卡萊溫斯基 < monica\-lewinsky;
+文書處理 < word\-processing;
+罰款 < \(impose\-a\)\-fine;
+雌雄 < male\-and\-female;
+邊音 < lateral\-\(sound\);
+母親 < mother\-\(formal\);
+有聯繫 < to\-be\-connected;
+磁盤 < \(computer\)\-disk;
+預防措施 < protective\-step;
+礦業 < mining\-industry;
+公然表示 < to\-state\-openly;
+流失 < be\-drained\-away;
+引起 < to\-give\-rise\-to;
+𣎴 < stump\-of\-a\-tree;
+證物 < exhibit\-\(legal\);
+縫補 < darn\-\(clothing\);
+編選 < select\-and\-edit;
+負債纍纍 < heavily\-in\-debt;
+審判長 < presiding\-judge;
+上學 < to\-go\-to\-school;
+頻帶 < frequency\-range;
+政見 < political\-views;
+悲嘆 < sigh\-mournfully;
+半生 < half\-a\-lifetime;
+博物 < natural\-science;
+經濟體制 < economic\-system;
+不過爾爾 < merely\-mediocre;
+盜版者 < software\-pirate;
+大部份 < \(in\)\-large\-part;
+流感病毒 < influenza\-virus;
+郵票 < \(postage\)\-stamp;
+恰好 < as\-it\-turns\-out;
+氣溫 < air\-temperature;
+矮胖 < short\-and\-stout;
+語系 < language\-system;
+變形 < be\-out\-of\-shape;
+南海 < south\-china\-sea;
+冷氣機 < air\-conditioner;
+美元 < american\-dollar;
+世人 < \(common\)\-people;
+名單 < list\-\(of\-names\);
+電磁 < electromagnetic;
+民權 < civil\-liberties;
+據說 < it\-is\-said\-that;
+原性 < original\-nature;
+衛生官員 < health\-official;
+躅 < walk\-carefully;
+巴 < greatly\-desire;
+期 < period\-of\-time;
+司 < take\-charge\-of;
+甥 < sister''s\-child;
+屏 < folding\-screen;
+狐 < species\-of\-fox;
+汉 < chinese\-people;
+妹 < younger\-sister;
+企 < plan\-a\-project;
+襖 < outer\-garments;
+壁 < partition\-wall;
+韦 < tanned\-leather;
+潰 < flooding\-river;
+珠 < precious\-stone;
+锋 < point\-of\-spear;
+俗 < social\-customs;
+檐 < eaves\-of\-house;
+骑 < ride\-horseback;
+函 < correspondence;
+魏 < kingdom\-of\-wei;
+枚 < stalk\-of\-shrub;
+仲 < middle\-brother;
+琳 < beautiful\-jade;
+凑 < piece\-together;
+郁 < sweet\-smelling;
+芯 < pith\-from\-rush;
+縞 < white\-raw\-silk;
+旬 < ten\-day\-period;
+綺 < fine\-thin\-silk;
+妨 < interfere\-with;
+骄 < spirited\-horse;
+掴 < box\-one''s\-ears;
+嗯 < final\-particle;
+岭 < mountain\-ridge;
+湘 < hunan\-province;
+銃 < ancient\-weapon;
+铮 < clanging\-sound;
+莹 < luster\-of\-gems;
+僻 < out\-of\-the\-way;
+渺 < endlessly\-long;
+佣 < commission\-fee;
+呛 < choke\-by\-smoke;
+凰 < female\-phoenix;
+闺 < small\-entrance;
+缀 < patch\-together;
+璋 < jade\-plaything;
+拴 < bind\-with\-rope;
+秧 < rice\-seedlings;
+蕃 < foreign\-things;
+鄂 < hubei\-province;
+棱 < squared\-timber;
+梗 < stem\-of\-flower;
+菱 < water\-chestnut;
+镑 < pound\-sterling;
+栩 < species\-of\-oak;
+璞 < unpolished\-gem;
+雯 < cloud\-patterns;
+讷 < slow\-of\-speech;
+狰 < fierce\-looking;
+峦 < mountain\-range;
+湃 < sound\-of\-waves;
+蝗 < kind\-of\-locust;
+皖 < anhui\-province;
+酋 < chief\-of\-tribe;
+壑 < bed\-of\-torrent;
+糯 < glutinous\-rice;
+稷 < god\-of\-cereals;
+塾 < village\-school;
+狩 < winter\-hunting;
+戍 < defend\-borders;
+璀 < lustre\-of\-gems;
+牍 < writing\-tablet;
+镌 < engraving\-tool;
+饯 < farewell\-party;
+鹂 < chinese\-oriole;
+囡 < one''s\-daughter;
+溟 < drizzling\-rain;
+锏 < kind\-of\-rapier;
+屙 < to\-ease\-nature;
+玳 < tortoise\-shell;
+瑭 < a\-kind\-of\-jade;
+杈 < fork\-of\-a\-tree;
+匐 < fall\-prostrate;
+砣 < a\-stone\-roller;
+铢 < unit\-of\-weight;
+骈 < team\-of\-horses;
+噱 < laugh\-heartily;
+盱 < wide\-open\-eyes;
+耄 < elderly\-person;
+榔 < betel\-nut\-tree;
+诤 < to\-expostulate;
+蝮 < venomous\-snake;
+颍 < river\-in\-anhui;
+楝 < melia\-japonica;
+蝼 < a\-mole\-cricket;
+荪 < aromatic\-grass;
+娌 < brother''s\-wife;
+晷 < shadows\-of\-sun;
+嗵 < used\-for\-sound;
+踅 < to\-walk\-around;
+揆 < prime\-minister;
+猕 < macacus\-monkey;
+厝 < cut\-or\-engrave;
+葚 < mulberry\-fruit;
+耒 < handle\-of\-plow;
+俅 < ornamental\-cap;
+菽 < beans\-and\-peas;
+鞯 < saddle\-blanket;
+鼐 < incense\-tripod;
+谰 < accuse\-falsely;
+骱 < joint\-of\-bones;
+謦 < t\-speak\-softly;
+磴 < steps\-on\-ledge;
+婺 < name\-of\-a\-star;
+堍 < side\-of\-bridge;
+桫 < horse\-chestnut;
+漶 < indecipherable;
+孥 < one''s\-children;
+溱 < river\-in\-henan;
+黥 < tattooing\-face;
+躐 < to\-stride\-over;
+蹯 < paws\-of\-animal;
+盍 < what\?\-why\-not\?;
+溆 < river\-in\-hunan;
+磲 < tridacna\-gigas;
+昝 < a\-dual\-pronoun;
+柽 < type\-of\-willow;
+缬 < patterned\-silk;
+驺 < mounted\-escort;
+阊 < gate\-of\-heaven;
+荩 < a\-kind\-of\-weed;
+芎 < a\-kind\-of\-herb;
+鋈 < silver\-plating;
+龅 < teeth\-protrude;
+晡 < late\-afternoon;
+檠 < stand\-for\-lamp;
+逭 < to\-escape\-from;
+操課 < military\-drill;
+伊甸園 < garden\-of\-eden;
+成員國 < member\-country;
+具體問題 < concrete\-issue;
+協會 < an\-association;
+文物 < cultural\-relic;
+通訊 < communications;
+危房 < decrepit\-house;
+特工 < secret\-service;
+電燈 < electric\-light;
+釣魚臺 < diaoyu\-islands;
+北極 < the\-north\-pole;
+複韻母 < compound\-final;
+預付 < pay\-in\-advance;
+國防預算 < defence\-budget;
+殺氣 < murderous\-look;
+磁場 < magnetic\-field;
+裁減軍備 < arms\-reduction;
+牙床 < alveolar\-ridge;
+參加 < to\-participate;
+民意 < public\-opinion;
+出口商品 < export\-product;
+往日 < in\-former\-days;
+勘測 < to\-investigate;
+冰釋 < \(of\-misgivings;
+大樓 < large\-building;
+改革進程 < reform\-process;
+全球資訊網 < world\-wide\-web;
+薄胎瓷器 < eggshell\-china;
+怪人 < strange\-person;
+營業 < to\-do\-business;
+塑膠 < plastic\-cement;
+晚上 < in\-the\-evening;
+散步 < to\-take\-a\-walk;
+識別 < to\-distinguish;
+幀太長 < oversize\-frame;
+擺蕩吊環 < swinging\-rings;
+全球氣候 < global\-climate;
+失控 < out\-of\-control;
+數月 < several\-months;
+往復 < to\-reciprocate;
+對外政策 < foreign\-policy;
+靶場 < shooting\-range;
+糖醋 < sweet\-and\-sour;
+伴生氣 < associated\-gas;
+帳號 < account\-number;
+爪子 < \(animal''s\)\-paw;
+別管 < no\-matter\-\(who;
+進行通信 < to\-communicate;
+刨程 < planing\-length;
+素菜 < vegetable\-dish;
+不咎既往 < not\-censure\-sb;
+開車 < to\-drive\-a\-car;
+煙火 < smoke\-and\-fire;
+轉運 < transportation;
+巡警 < police\-officer;
+校園網絡 < campus\-network;
+數位信號 < digital\-signal;
+放映 < show\-\(a\-movie\);
+物理層 < physical\-layer;
+聯合國 < united\-nations;
+製造 < to\-manufacture;
+利率 < interest\-rates;
+英國人 < british\-person;
+生長激素 < growth\-hormone;
+白熱化 < turn\-white\-hot;
+弱小 < small\-and\-weak;
+敝屣 < worn\-out\-shoes;
+十一月 < eleventh\-month;
+指揮中心 < command\-center;
+矮子 < a\-short\-person;
+原子核 < atomic\-nucleus;
+把兄弟 < sworn\-brothers;
+速決 < quick\-decision;
+關稅 < \(customs\)\-duty;
+白蘇 < common\-perilla;
+比值 < specific\-value;
+電話線路 < telephone\-line;
+基督 < jesus\-\(christ\);
+探路 < to\-find\-a\-path;
+遙控 < remote\-control;
+北斗星 < the\-big\-dipper;
+開玩笑 < to\-play\-a\-joke;
+鸎 < the\-mango\-bird;
+鶗 < a\-kind\-of\-hawk;
+以太網絡幀 < ethernet\-frame;
+遙感 < remote\-sensing;
+白色 < white\-\(colour\);
+鮧 < the\-sheat\-fish;
+撥款 < allocate\-funds;
+鬘 < beautiful\-hair;
+鬗 < head\-ornaments;
+廠工 < factory\-worker;
+語氣助詞 < modal\-particle;
+髆 < shoulder\-blade;
+正好 < just\-\(in\-time\);
+約書亞記 < book\-of\-joshua;
+探視 < pay\-a\-visit\-to;
+騌 < a\-horse''s\-mane;
+餡 < pastry\-filling;
+餗 < food\-in\-tripod;
+引咎 < take\-the\-blame;
+審判席 < judgement\-seat;
+白粉病 < powdery\-mildew;
+壁報 < wall\-newspaper;
+改善 < to\-make\-better;
+經濟有效 < cost\-effective;
+堅決否認 < to\-firmly\-deny;
+造成 < to\-bring\-about;
+幫會 < secret\-society;
+锪 < a\-kind\-of\-tool;
+操心 < to\-worry\-about;
+鏴 < to\-plug\-a\-hole;
+鎩 < moult\-samarium;
+書寫符號 < writing\-symbol;
+白種 < the\-white\-race;
+鍆 < md\-mendelevium;
+鋩 < point\-of\-sword;
+鋃 < lock\-lanthanum;
+補缺 < fill\-a\-vacancy;
+古希臘 < ancient\-greece;
+西歐 < western\-europe;
+中國人 < chinese\-person;
+逕庭 < very\-different;
+卡納維拉爾角 < cape\-canaveral;
+補綴 < mend\-\(clothes\);
+不知死活 < act\-recklessly;
+監督人 < superintendent;
+集中 < to\-concentrate;
+逩 < to\-run\-quickly;
+遲到 < to\-arrive\-late;
+輶 < light\-carriage;
+波羅的海 < the\-baltic\-sea;
+趹 < kick\-with\-hoof;
+報復 < make\-reprisals;
+真情 < real\-situation;
+桌面系統 < desktop\-system;
+東南亞國 < southeast\-asia;
+巨流 < strong\-current;
+豣 < pig\-of\-3\-years;
+豖 < a\-shackled\-pig;
+退學 < to\-quit\-school;
+讅 < know\-in\-detail;
+廉價 < cheaply\-priced;
+小型企業 < small\-business;
+詨 < kind\-of\-cicada;
+順序數 < ordinal\-number;
+病號 < sick\-personnel;
+團結 < \(hold\-a\)\-rally;
+褉 < short\-garments;
+圍繞 < revolve\-around;
+近年 < recent\-year\(s\);
+衂 < to\-be\-defeated;
+蠂 < podisma\-mikado;
+蟳 < a\-kind\-of\-crab;
+蟭 < very\-small\-bug;
+倒閉 < to\-go\-bankrupt;
+螬 < grubs\-in\-fruit;
+冷戰 < \(the\)\-cold\-war;
+蜎 < mosquito\-larva;
+資料介面 < data\-interface;
+虀 < minced\-pickles;
+薳 < name\-of\-a\-herb;
+薘 < plantago\-major;
+價目 < \(marked\)\-price;
+蓯 < medicinal\-herb;
+蓏 < fruit\-of\-plant;
+葥 < rubus\-palmatus;
+病脈 < abnormal\-pulse;
+不怎麼樣 < not\-up\-to\-much;
+漸變 < gradual\-change;
+茞 < fragrant\-plant;
+非常重要 < very\-important;
+紀念 < to\-commemorate;
+開會 < have\-a\-meeting;
+醫學專家 < medical\-expert;
+芈 < bleat\-of\-sheep;
+先進水平 < advanced\-level;
+區域網路技術 < lan\-technology;
+全景 < panoramic\-view;
+刀叉 < knife\-and\-fork;
+脦 < used\-in\-''lede'';
+連鎖反應 < chain\-reaction;
+特別感謝 < special\-thanks;
+人壽保險 < life\-insurance;
+布帛 < cloth\-and\-silk;
+找錢 < to\-give\-change;
+補液 < fluid\-infusion;
+起點 < starting\-point;
+就是說 < in\-other\-words;
+報分 < call\-the\-score;
+教育界 < academic\-world;
+挺立 < to\-stand\-erect;
+不平等條約 < unequal\-treaty;
+八成 < eighty\-percent;
+兩手 < double\-tactics;
+絜 < a\-marking\-line;
+採油 < oil\-extraction;
+紾 < turns\-or\-twist;
+糺 < to\-collaborate;
+跨越 < to\-step\-across;
+跑道 < athletic\-track;
+不敢當 < you\-flatter\-me;
+籫 < bamboo\-utensil;
+筬 < reed\-of\-a\-loom;
+喘不過氣來 < cannot\-breathe;
+握拳 < to\-make\-a\-fist;
+副總統 < vice\-president;
+甚至於 < so\-much\-\(that\);
+握手 < to\-shake\-hands;
+稭 < stalk\-of\-grain;
+精干 < crack\-\(troops\);
+長征 < the\-long\-march;
+病痛 < slight\-illness;
+不平衡 < disequilibrium;
+砢 < pile\-of\-stones;
+矉 < an\-angry\-glare;
+睱 < to\-gaze\-slowly;
+睯 < to\-be\-agonized;
+英寸 < \(english\)\-inch;
+眣 < prominent\-eyes;
+採收率 < recovery\-ratio;
+自由化 < liberalization;
+標尺 < surveyor''s\-rod;
+薩達姆侯賽因 < saddam\-hussein;
+璸 < jade''s\-streaks;
+璘 < luster\-of\-jade;
+將軍 < \(army\)\-general;
+玥 < mysterious\-gem;
+狨 < hapale\-jacchus;
+兩國 < both\-countries;
+全國 < entire\-country;
+犨 < panting\-of\-cow;
+不適用 < not\-applicable;
+但以理書 < book\-of\-daniel;
+燉 < heat\-with\-fire;
+燀 < to\-make\-a\-fire;
+熉 < \(yellow\-color\);
+輩子 < all\-one''s\-life;
+長城 < the\-great\-wall;
+表決 < decide\-by\-vote;
+成都 < chengdu\-\(city\);
+鬥智 < battle\-of\-wits;
+八千 < eight\-thousand;
+溛 < to\-form\-hollow;
+湱 < sound\-of\-water;
+捷克共和國 < czech\-republic;
+病歷 < medical\-record;
+渢 < pleasant\-sound;
+涬 < watery\-expanse;
+簡單化 < simplification;
+伸開 < to\-stretch\-out;
+洿 < stagnant\-water;
+迫不得已 < have\-no\-choice;
+評價分類 < rank\,\-classify;
+泂 < clear\-and\-deep;
+演示 < to\-demonstrate;
+沷 < to\-remove\-evil;
+從事研究 < to\-do\-research;
+殭 < a\-stiff\-corpse;
+以賽亞書 < book\-of\-isaiah;
+鹽湖城 < salt\-lake\-city;
+檖 < wild\-pear\-tree;
+橿 < quercus\-glauca;
+傳播 < to\-disseminate;
+入伍 < enter\-the\-army;
+首都 < capital\-\(city\);
+榾 < pieces\-of\-wood;
+榠 < chinese\-quince;
+榖 < paper\-mulberry;
+椪 < machilus\-nanmu;
+潔淨 < cleanse\-\(sins\);
+棐 < species\-of\-yew;
+梊 < squeeze\-out\-of;
+半數以上 < more\-than\-half;
+柾 < straight\-grain;
+柃 < eurya\-japonica;
+舌根 < back\-of\-tongue;
+檔案屬性 < file\-attribute;
+曏 < once\-upon\-time;
+行政 < administration;
+血製品 < blood\-products;
+晢 < light\-of\-stars;
+小聲 < in\-a\-low\-voice;
+昰 < var\-of\-''to\-be'';
+篡改 < to\-tamper\-with;
+截至 < up\-to\-\(a\-time\);
+攂 < to\-beat\-a\-drum;
+起草 < draft\-\(a\-bill\);
+挨打 < take\-a\-beating;
+層理 < stratification;
+球鞋 < athletic\-shoes;
+鍋貼 < fried\-dumpling;
+凹面鏡 < concave\-mirror;
+授命 < to\-give\-orders;
+開心果 < pistachio\-nuts;
+從來沒有 < have\|has\-never;
+以斯帖記 < book\-of\-esther;
+最佳利益 < best\-interests;
+世界語 < world\-language;
+惡性循環 < vicious\-circle;
+核能 < nuclear\-energy;
+浮點 < floating\-point;
+幱 < official\-dress;
+不省人事 < be\-unconscious;
+巟 < a\-watery\-waste;
+百無聊賴 < bored\-to\-death;
+行星際 < interplanetary;
+中心語 < qualified\-word;
+參謀長 < chief\-of\-staff;
+自從 < since\-\(a\-time\);
+棄櫻 < abandoned\-baby;
+產權 < property\-right;
+齒輪 < \(machine\)\-gear;
+侵犯 < to\-infringe\-on;
+醫學中心 < medical\-center;
+血壓 < blood\-pressure;
+錄像機 < video\-recorder;
+塕 < a\-gust\-of\-wind;
+埇 < name\-of\-bridge;
+光信號 < optical\-signal;
+綜合報導 < summary\-report;
+噹 < sound\-of\-bells;
+嘓 < gurgling\-sound;
+減肥 < to\-lose\-weight;
+代表 < representative;
+大同小異 < almost\-similar;
+啌 < animal\-disease;
+畫展 < art\-exhibition;
+生效 < to\-take\-effect;
+核武器 < nuclear\-weapon;
+達不到 < cannot\-achieve;
+才氣 < liteary\-talent;
+厃 < to\-look\-upward;
+卭 < high\.\-to\-raise;
+卂 < to\-fly\-rapidly;
+卑躬屈節 < bow\-and\-scrape;
+恭賀新禧 < happy\-new\-year;
+專欄 < special\-column;
+學籍 < school\-roll\(s\);
+禁食 < fast\-\(not\-eat\);
+克林頓 < \(bill\)\-clinton;
+伕 < common\-laborer;
+亇 < kwukyel\-hammer;
+䶔 < prominent\-gums;
+䶐 < to\-take\-breath;
+䶀 < sound\-of\-drums;
+䵶 < a\-kind\-of\-frog;
+䵌 < reddish\-yellow;
+䴴 < a\-kind\-of\-cake;
+䴩 < a\-kind\-of\-deer;
+䴘 < a\-kind\-of\-bird;
+䳸 < the\-wild\-goose;
+䳫 < a\-small\-pigeon;
+䲢 < a\-kind\-of\-fish;
+某種 < some\-kind\-\(of\);
+䰹 < the\-cuttlefish;
+䰴 < a\-wafting\-fish;
+䰡 < a\-fierce\-ghost;
+將會 < will\,\-going\-to;
+䯛 < the\-knee\-bones;
+䮹 < an\-angry\-horse;
+䮮 < a\-kind\-of\-mule;
+䭻 < a\-swifty\-horse;
+䭭 < the\-eldest\-son;
+䭩 < to\-feed\-a\-baby;
+前生召喚 < foreordination;
+䭁 < stinking\-smell;
+䬺 < same\-as\-u\+4b50;
+䬘 < the\-wind\-blows;
+䬒 < to\-blow\-chilly;
+豎起 < hold\-up\-\(high\);
+網際電話 < internet\-phone;
+䫫 < human\-skeleton;
+䪼 < the\-cheek\-bone;
+䪈 < a\-leather\-belt;
+䩐 < tie\-it\-tightly;
+䨥 < a\-pouring\-rain;
+䧧 < high\-mountains;
+寶書 < treasured\-book;
+䦺 < name\-of\-a\-hill;
+䦤 < seed\-of\-grains;
+䦑 < without\-a\-door;
+䦏 < wing\-of\-a\-door;
+聖誕節 < christmas\-time;
+䤖 < a\-kind\-of\-wine;
+䣎 < name\-of\-county;
+白令海 < the\-bering\-sea;
+䢨 < to\-walk\-slowly;
+䡾 < high\-cartloads;
+䡲 < rim\-of\-a\-wheel;
+摩門經 < book\-of\-mormon;
+䡉 < a\-kind\-of\-cart;
+蘋果電腦 < apple\-computer;
+䜽 < a\-kind\-of\-bean;
+䜜 < words\-of\-anger;
+䛠 < unable\-to\-talk;
+吃驚 < to\-be\-startled;
+䚖 < mountain\-deity;
+䚄 < to\-make\-fun\-of;
+䙳 < spiting\-flames;
+䙦 < upper\-garments;
+䘢 < old\-and\-shabby;
+䗷 < a\-kind\-of\-wasp;
+䗪 < a\-kind\-of\-worm;
+䗚 < eggs\-of\-mantis;
+䗒 < a\-kind\-of\-clam;
+䖰 < a\-kind\-of\-gnat;
+撞擊式印表機 < impact\-printer;
+䕚 < a\-straw\-basket;
+䔕 < chicken\-breast;
+䔋 < a\-kind\-of\-tree;
+導彈 < guided\-missile;
+䔂 < vegetable\-soup;
+清爽 < fresh\-and\-cool;
+䓡 < a\-medical\-herb;
+䒓 < to\-do\-violence;
+䒇 < name\-of\-a\-ship;
+䒅 < beautiful\-eyes;
+䑶 < sprightly\-boat;
+䑫 < tools\-for\-boat;
+䑣 < a\-sailing\-boat;
+䑜 < to\-eat\-heavily;
+互聯 < interconnected;
+䐕 < oil\-and\-grease;
+䐍 < excellent\-food;
+䍡 < small\-fish\-net;
+䍑 < a\-net\-or\-snare;
+䍍 < unburnt\-bricks;
+唱片 < \(vinyl\)\-record;
+䌵 < lapel\-and\-belt;
+䌰 < connected\-silk;
+䌥 < to\-sew\-clothes;
+䌡 < to\-wind\-around;
+二者 < both\-\[of\-them\];
+䋽 < hempen\-sandals;
+䋯 < crucial\-points;
+䋢 < to\-twist\-ropes;
+䊼 < measuring\-unit;
+才子 < gifted\-scholar;
+侵害 < to\-encroach\-on;
+䊨 < storing\-grains;
+䈷 < a\-bamboo\-fence;
+䈚 < a\-bamboo\-shoot;
+不脛而走 < get\-round\-fast;
+䇫 < bamboo\-splints;
+䇅 < to\-stand\-still;
+三輪車伕 < pedicab\-driver;
+寶庫 < treasure\-house;
+保單 < guarantee\-slip;
+飽經風霜 < weather\-beaten;
+䅥 < ripening\-crops;
+小學 < primary\-school;
+仔畜 < newborn\-animal;
+䃹 < jade\-and\-stone;
+䃡 < a\-small\-pebble;
+本色 < natural\-colour;
+䃏 < a\-kind\-of\-rock;
+䃌 < rocky\-mountain;
+來往 < to\-come\-and\-go;
+䂌 < a\-short\-weapon;
+全心全意 < heart\-and\-soul;
+䁤 < moistened\-eyes;
+䁏 < farsightedness;
+䀺 < squinting\-eyes;
+工業的巨頭 < industry\-mogol;
+㽦 < reclaimed\-land;
+㽥 < fertile\-fields;
+㽋 < a\-kind\-of\-tile;
+㽄 < an\-earthen\-jar;
+題跋 < short\-comments;
+㸫 < castrated\-bull;
+㸤 < broken\-leather;
+㸊 < fierce\-of\-fire;
+㶠 < water\-currents;
+不解 < not\-understand;
+泰米爾語 < tamil\-language;
+㵘 < great\-currents;
+懮慮 < \(feel\)\-anxiety;
+㴸 < swift\-currents;
+犯不著 < not\-worthwhile;
+㴙 < water\-dripping;
+㳃 < to\-temper\-iron;
+㲏 < flying\-feather;
+余悸 < lingering\-fear;
+㱏 < the\-right\-side;
+成就 < accomplishment;
+㭻 < the\-crab\-apple;
+不用謝 < you''re\-welcome;
+㭏 < a\-kind\-of\-wood;
+㭄 < a\-king\-of\-tree;
+容忍 < to\-put\-up\-with;
+㫏 < a\-kind\-of\-flag;
+㫂 < to\-chop\-or\-cut;
+罷論 < abandoned\-idea;
+患處 < afflicted\-part;
+㨇 < to\-sweep\-clean;
+㥺 < to\-blow\-a\-fire;
+不期而遇 < meet\-by\-chance;
+㥉 < a\-little\-angry;
+㥇 < to\-be\-perverse;
+㤾 < not\-doing\-well;
+㤖 < to\-have\-wisdom;
+㣦 < a\-winding\-path;
+架構 < infrastructure;
+穴播 < bunch\-planting;
+半自動 < semi\-automatic;
+㡜 < ragged\-clothes;
+懷孕 < to\-be\-pregnant;
+㠨 < misty\-mountain;
+㠡 < high\-and\-lofty;
+㟿 < high\-and\-steep;
+職業 < job\-occupation;
+內蒙古 < inner\-mongolia;
+退休金 < retirement\-pay;
+留言簿 < visitor''s\-book;
+㞩 < mountain\-vapor;
+㞗 < the\-male\-organ;
+任期 < term\-of\-office;
+㞊 < unable\-to\-walk;
+㝰 < unable\-to\-meet;
+㝛 < ahalting\-place;
+㜤 < fooling\-around;
+㜑 < an\-older\-woman;
+近乎同步 < plesiochronous;
+㛩 < sisters\-in\-law;
+㛂 < weak\-and\-small;
+㚃 < to\-take\-a\-hint;
+㙷 < low\-lying\-area;
+不興 < out\-of\-fashion;
+㖢 < to\-reject\-food;
+㕤 < a\-proud\-temper;
+球棒 < \(baseball\)\-bat;
+㔙 < great\-strength;
+㒛 < to\-stand\-alone;
+㒀 < do\-not\-fear\-to;
+資格 < qualifications;
+東海 < east\-china\-sea;
+死亡率 < mortality\-rate;
+哥本哈根 < copenhagen\-\?\?\?;
+東歐 < eastern\-europe;
+任憑 < no\-matter\-what;
+今朝 < at\-the\-present;
+作品 < works\-\(of\-art\);
+憋悶 < feel\-oppressed;
+飼槽 < feeding\-trough;
+警車 < police\-vehicle;
+寒冷 < cold\-\(climate\);
+哈該書 < book\-of\-haggai;
+安好 < safe\-and\-sound;
+液晶 < liquid\-crystal;
+參觀 < to\-look\-around;
+阿伏伽德羅定律 < avogadro''s\-law;
+擺攤子 < set\-up\-a\-stall;
+可能 < might\-\(happen\);
+首先 < first\-\(of\-all\);
+瑞士人 < swiss\-\(person\);
+每端口價格 < price\-per\-port;
+液態 < liquid\-\(state\);
+孕婦 < pregnant\-woman;
+乘法 < multiplication;
+差不多 < almost\,\-nearly;
+定價 < to\-set\-a\-price;
+括弧裡 < in\-parentheses;
+暗箱 < camera\-bellows;
+減刑 < reduce\-penalty;
+百米賽跑 < 100\-metre\-dash;
+信號臺 < signal\-station;
+世界上 < \(of\-the\)\-world;
+調查報告 < memoir\,\-report;
+圓珠筆 < ball\-point\-pen;
+中歐 < central\-europe;
+全球氣候升溫 < global\-warming;
+犯罪 < \(commit\)\-crime;
+份兒 < degree\,\-extent;
+跑腿兒 < to\-run\-errands;
+不正常狀況 < abnormal\-state;
+特色 < characteristic;
+中斷 < to\-discontinue;
+秕子 < blighted\-grain;
+世界經濟 < global\-economy;
+有待 < not\-yet\-\(done\);
+題材 < subject\-matter;
+礦泉 < mineral\-spring;
+通用汽車 < general\-motors;
+毛衣 < \(wool\)\-sweater;
+責任 < responsibility;
+北京週報 < beijing\-review;
+半職 < part\-time\-work;
+波狀熱 < undulant\-fever;
+顯得 < appear\-\(to\-be\);
+不忍 < cannot\-bear\-to;
+知識庫 < knowledge\-base;
+源點地址 < source\-address;
+這次危機 < present\-crisis;
+多工運作 < multithreading;
+媽咪 < mummy\-\(mother\);
+波恩 < bonn\-\(germany\);
+敗訴 < lose\-a\-lawsuit;
+電信局 < central\-office;
+壽衣 < burial\-clothes;
+西南亞 < southwest\-asia;
+二氧化碳 < carbon\-dioxide;
+擺鐘 < pendulum\-clock;
+撥號盤 < telephone\-dial;
+北緯 < north\-latitude;
+及格 < to\-pass\-a\-test;
+法庭 < court\-\(of\-law\);
+這類 < this\-kind\-\(of\);
+網絡設計 < network\-design;
+後兩者 < the\-latter\-two;
+主修 < \(school\)\-major;
+變成 < to\-change\-into;
+廠禮拜 < day\-off\-\(work\);
+不合 < not\-conform\-to;
+開放式系統 < open\-system\(s\);
+斑竹 < mottled\-bamboo;
+不及 < not\-as\-good\-as;
+分類 < classification;
+兩百億 < twenty\-billion;
+無連接 < connectionless;
+重建 < reconstruction;
+猜謎兒 < guess\-a\-riddle;
+請看 < please\-see\-\.\.\.;
+五年計劃 < five\-year\-plan;
+氫氣 < hydrogen\-\(gas\);
+市場經濟 < market\-economy;
+檔案執行 < file\-execution;
+互動電視 < interactive\-tv;
+美差事 < a\-terrific\-job;
+數種 < numerous\-types;
+冰點 < freezing\-point;
+歐洲聯盟 < european\-union;
+華裔 < ethnic\-chinese;
+不仁 < not\-benevolent;
+收聽 < to\-listen\-\(to\);
+经 < classic\-works;
+弟 < young\-brother;
+廻 < circle\-around;
+关 < frontier\-pass;
+帝 < supreme\-ruler;
+番 < to\-take\-turns;
+略 < approximately;
+共 < together\-with;
+义 < right\-conduct;
+嫂 < sister\-in\-law;
+哥 < elder\-brother;
+婦 < married\-women;
+訣 < take\-leave\-of;
+族 < a\-family\-clan;
+奪 < take\-by\-force;
+笔 < writing\-brush;
+袷 < lined\-garment;
+瀬 < swift\-current;
+伯 < older\-brother;
+漲 < rise\-in\-price;
+礼 < social\-custom;
+嘩 < rushing\-sound;
+啣 < hold\-in\-mouth;
+泊 < anchor\-vessel;
+沿 < follow\-course;
+咄 < noise\-of\-rage;
+菊 < chrysanthemum;
+岳 < mountain\-peak;
+匹 < bolt\-of\-cloth;
+颇 < lean\-one\-side;
+晨 < early\-morning;
+撞 < knock\-against;
+愈 < more\-and\-more;
+槇 < tip\-of\-a\-tree;
+駅 < relay\-station;
+饅 < steamed\-bread;
+炸 < to\-fry\-in\-oil;
+脈 < blood\-vessels;
+绪 < end\-of\-thread;
+飼 < raise\-animals;
+梓 < catalpa\-ovata;
+肌 < muscle\-tissue;
+佩 < belt\-ornament;
+署 < public\-office;
+搭 < join\-together;
+栗 < chestnut\-tree;
+桑 < mulberry\-tree;
+鞄 < to\-work\-hides;
+杓 < handle\-of\-cup;
+佃 < tenant\-farmer;
+贡 < offer\-tribute;
+曇 < become\-cloudy;
+亙 < extend\-across;
+诞 < bear\-children;
+晴 < clear\-weather;
+塑 < model\-in\-clay;
+浦 < bank\-of\-river;
+籔 < bamboo\-basket;
+慎 < act\-with\-care;
+莉 < white\-jasmine;
+捗 < make\-progress;
+塌 < fall\-in\-ruins;
+竖 < perpendicular;
+陕 < mountain\-pass;
+惚 < absent\-minded;
+淀 < shallow\-water;
+淘 < wash\-in\-sieve;
+瑰 < extraordinary;
+垫 < advance\-money;
+灶 < kitchen\-range;
+毓 < give\-birth\-to;
+咧 < stretch\-mouth;
+奎 < stride\-of\-man;
+洽 < to\-blend\-with;
+瑶 < precious\-jade;
+钰 < rare\-treasure;
+瑛 < luster\-of\-gem;
+殉 < die\-for\-cause;
+唬 < to\-intimidate;
+瘪 < shrivelled\-up;
+唆 < make\-mischief;
+岚 < mountain\-mist;
+桦 < type\-of\-birch;
+涟 < flowing\-water;
+飕 < sound\-of\-wind;
+坷 < clod\-of\-earth;
+鑫 < used\-in\-names;
+笋 < bamboo\-shoots;
+荃 < aromatic\-herb;
+馄 < dumpling\-soup;
+穹 < high\-and\-vast;
+弈 < chinese\-chess;
+驮 < carry\-on\-back;
+芥 < mustard\-plant;
+炜 < brilliant\-red;
+岜 < rock\-mountain;
+纫 < thread\-needle;
+桀 < chicken\-roost;
+拮 < laboring\-hard;
+纥 < inferior\-silk;
+忤 < insubordinate;
+鸾 < fabulous\-bird;
+嘁 < to\-be\-grieved;
+辎 < a\-supply\-cart;
+芫 < daphne\-genkwa;
+伧 < vulgar\-person;
+泠 < nice\-and\-cool;
+縻 < halter\-for\-ox;
+踽 < to\-walk\-alone;
+赭 < reddish\-brown;
+颀 < tall\-and\-slim;
+柘 < a\-thorny\-tree;
+谔 < honest\-speech;
+骓 < piebald\-horse;
+崧 < high\-mountain;
+酚 < carbolic\-acid;
+夤 < distant\-place;
+暌 < in\-opposition;
+怍 < to\-be\-ashamed;
+贽 < gift\-superior;
+毖 < guard\-against;
+迓 < to\-go\-to\-meet;
+毵 < long\-feathers;
+睚 < corner\-of\-eye;
+毽 < a\-shuttlecock;
+僳 < minority\-name;
+辏 < hubs\-of\-wheel;
+旆 < flag\-ornament;
+荇 < a\-water\-plant;
+卮 < measuring\-cup;
+髡 < to\-shear\-tree;
+鳜 < mandarin\-fish;
+鼍 < large\-reptile;
+笫 < planks\-of\-bed;
+缡 < a\-bridal\-veil;
+绨 < coarse\-pongee;
+芰 < water\-caltrop;
+魃 < drought\-demon;
+舳 < stern\-of\-ship;
+屦 < straw\-sandals;
+蓐 < straw\-bed\-mat;
+銎 < eye\-of\-an\-axe;
+醣 < carbohydrates;
+蛑 < a\-marine\-crab;
+椠 < wooden\-tablet;
+媸 < an\-ugly\-woman;
+馇 < stir\-and\-cook;
+甙 < sugar\-product;
+薤 < allium\-bakeri;
+塥 < dry\-clay\-lump;
+檔案轉送 < file\-transfer;
+諾貝爾 < nobel\-\(prize\);
+菲菲 < very\-fragrant;
+昂揚 < high\-spirited;
+保證金 < earnest\-money;
+磁帶 < magnetic\-tape;
+解調 < to\-demodulate;
+北海 < the\-north\-sea;
+薄利 < small\-profits;
+排山倒海 < earth\-shaking;
+晚報 < evening\-paper;
+星座 < constellation;
+激光打引機 < laser\-printer;
+冰鞋 < skating\-boots;
+掛號證 < register\-card;
+廠絲 < filature\-silk;
+矛盾 < contradictory;
+出賣 < to\-sell\-\(off\);
+到處 < in\-all\-places;
+經營費用 < business\-cost;
+原子能 < atomic\-energy;
+古代 < ancient\-times;
+新月 < crescent\-moon;
+紀念館 < memorial\-hall;
+單韻母 < simple\-finals;
+即將 < on\-the\-eve\-of;
+卑微 < petty\-and\-low;
+危害 < to\-jeopardize;
+直截了當 < plain\-talking;
+冷戰以後 < post\-cold\-war;
+有可能 < it''s\-possible;
+刨花 < wood\-shavings;
+莨菪 < black\-henbane;
+調查 < investigation;
+綁腿 < leg\-wrappings;
+列舉 < \(make\-a\)\-list;
+適用 < be\-applicable;
+摘記 < to\-take\-notes;
+元首 < head\-of\-state;
+未提及 < not\-mentioned;
+方式 < way\-\(of\-life\);
+日夜 < day\-and\-night;
+芝麻 < sesame\-\(seed\);
+本生燈 < bunsen\-burner;
+牌坊 < memorial\-arch;
+心臟病 < heart\-disease;
+前生 < pre\-existence;
+勢在必行 < be\-imperative;
+昇值 < rise\-in\-value;
+十五年 < fifteen\-years;
+米飯 < \(cooked\)\-rice;
+鄧小平 < deng\-xiaoping;
+轉道 < make\-a\-detour;
+舊約全書 < old\-testament;
+長途 < long\-distance;
+日前 < the\-other\-day;
+幾個小時 < several\-hours;
+那鴻書 < book\-of\-nahum;
+網絡層 < network\-layer;
+墜毀 < \(plane\)\-crash;
+雙手 < pair\-of\-hands;
+哥林多後書 < 2\-corinthians;
+南亞 < southern\-asia;
+刊登 < carry\-a\-story;
+誇張 < to\-exaggerate;
+難忘 < unforgettable;
+太太 < married\-woman;
+撥用 < appropriation;
+審判欄 < judgement\-bar;
+境況 < circumstances;
+民事 < civil\-matters;
+女佣 < \(female\)\-maid;
+不可缺少 < indispensable;
+勘察 < reconnaisance;
+籌集 < collect\-money;
+操演 < demonstration;
+白花花 < shining\-white;
+建築學 < architectural;
+視窗基準 < windows\-based;
+電郵位置 < email\-address;
+幻燈 < latern\-slides;
+研究領域 < research\-area;
+中國式 < chinese\-style;
+加快 < to\-accelerate;
+冰糖 < crystal\-sugar;
+國際 < international;
+半失業 < semi\-employed;
+鬥雞 < cock\-fighting;
+過時 < old\-fashioned;
+進接服務 < access\-server;
+隨意 < as\-one\-wishes;
+失利 < suffer\-defeat;
+表決權 < right\-to\-vote;
+空間站 < space\-station;
+損耗 < wear\-and\-tear;
+相當 < equivalent\-to;
+逐步 < progressively;
+鵩 < owl\-like\-bird;
+大公司 < large\-company;
+不記名投票 < secret\-ballot;
+二次大戰 < world\-war\-two;
+幾次 < several\-times;
+巨細 < big\-and\-small;
+幾樣 < several\-kinds;
+大使 < an\-ambassador;
+編審 < read\-and\-edit;
+強化 < to\-strengthen;
+避孕 < contraception;
+髃 < shoulder\-bone;
+不列顛諸島 < british\-isles;
+骪 < crooked\-bones;
+大容量 < high\-capacity;
+大事 < a\-major\-event;
+楊百翰 < brigham\-young;
+大問題 < great\-problem;
+馣 < fragrant\-odor;
+教友 < church\-member;
+光功率 < optical\-power;
+速效 < quick\-results;
+餚 < prepared\-meat;
+權威性 < authoritative;
+利於 < be\-beneficial;
+初期 < initial\-stage;
+女朋友 < female\-friend;
+基本概念 < basic\-concept;
+不周延 < undistributed;
+鞮 < leather\-shoes;
+詢問 < inquire\-about;
+霝 < drops\-of\-rain;
+摁釦兒 < snap\-fastener;
+死刑 < death\-penalty;
+铖 < person''s\-name;
+白皮松 < lacebark\-pine;
+錡 < a\-kind\-of\-pen;
+兵痞 < army\-riffraff;
+存儲器 < memory\-\(unit\);
+貿易順差 < trade\-surplus;
+彌迦書 < book\-of\-micah;
+鈄 < a\-wine\-flagon;
+武器系統 < weapon\-system;
+釭 < tire\-of\-wheel;
+醨 < dregs\-of\-wine;
+體重 < \(body\)\-weight;
+白砒 < white\-arsenic;
+梅塞迪斯奔馳 < mercedes\-benz;
+相架 < picture\-frame;
+辡 < recrimination;
+家用電腦 < home\-computer;
+現代化 < modernization;
+轏 < sleeping\-cart;
+兵營 < military\-camp;
+主禱文 < lord''s\-prayer;
+市民 < city\-resident;
+庭園 < flower\-garden;
+跮 < hasty\-walking;
+轟炸 < \(drop\-a\)\-bomb;
+過去 < \(in\-the\)\-past;
+賮 < farewell\-gift;
+艦艇 < naval\-vessels;
+大公無私 < just\-and\-fair;
+哥林多前書 < 1\-corinthians;
+冰期 < glacial\-epoch;
+關於 < pertaining\-to;
+剛剛 < just\-recently;
+廠主 < factory\-owner;
+再次 < one\-more\-time;
+謍 < humming\-sound;
+新約全書 < new\-testament;
+覶 < to\-look\-about;
+覔 < to\-search\-for;
+襚 < grave\-clothes;
+權力 < \(wield\)\-power;
+蠵 < large\-turtles;
+簿籍 < account\-books;
+螾 < the\-earthworm;
+螥 < the\-house\-fly;
+螙 < grubs\-in\-wood;
+蛅 < a\-caterpillar;
+橫掃 < to\-sweep\-away;
+度假 < go\-on\-holiday;
+蘯 < to\-toss\-about;
+異質 < heterogeneous;
+車站 < \(bus\)\-station;
+亞洲國家 < asian\-country;
+暴風驟雨 < violent\-storm;
+蔎 < thea\-sinensis;
+備至 < to\-the\-utmost;
+葽 < type\-of\-grain;
+菼 < rush\-or\-sedge;
+菺 < althaea\-rosea;
+跑鞋 < running\-shoes;
+菑 < to\-weed\-grass;
+報單 < taxation\-form;
+莧 < edible\-greens;
+茥 < rubus\-tokkura;
+鑒賞 < to\-appreciate;
+苘 < indian\-mallow;
+這位 < this\-\(person\);
+困窘 < embarrassment;
+降世 < come\-to\-earth;
+脥 < pelvic\-cavity;
+便飯 < a\-simple\-meal;
+胲 < hydroxylamine;
+輻條 < \(wheel\)\-spoke;
+好幾年 < several\-years;
+罳 < wooden\-screen;
+缇 < reddish\-color;
+打開 < to\-break\-open;
+售票處 < ticket\-office;
+發揮 < bring\-to\-bear;
+糭 < rice\-dumpling;
+捉取圖像 < capture\-image;
+籾 < unhulled\-rice;
+籜 < bamboo\-sheath;
+六點半 < half\-past\-six;
+開心 < to\-feel\-happy;
+無意識 < unconsciously;
+實驗 < to\-experiment;
+笵 < a\-bamboo\-form;
+笭 < bamboo\-screen;
+轉彎 < turn\-\(around\);
+案頭 < on\-one''s\-desk;
+拜金主義 < money\-worship;
+永久和平 < lasting\-peace;
+砞 < to\-smash\-rock;
+矞 < bore\-with\-awl;
+辨別 < differentiate;
+抄襲 < to\-plagiarize;
+辦到 < to\-accomplish;
+先後 < in\-succession;
+畜肥 < animal\-manure;
+推動力 < driving\-force;
+拉美 < latin\-america;
+核電 < nuclear\-power;
+越野 < cross\-country;
+璂 < jade\-ornament;
+琕 < type\-of\-pearl;
+獙 < die\-violently;
+公園 < a\-public\-park;
+百姓 < common\-people;
+哈薩克人 < kazakh\-person;
+災區 < disaster\-area;
+避風處 < lee\,\-windstop;
+牁 < mooring\-stake;
+構成 < to\-constitute;
+熰 < great\-drought;
+保藏 < keep\-in\-store;
+瑞香 < winter\-daphne;
+拌種 < seed\-dressing;
+籌措 < raise\-\(money\);
+棄置 < to\-throw\-away;
+使用量 < volume\-of\-use;
+賣點 < selling\-point;
+瘦弱 < thin\-and\-weak;
+浬 < nautical\-mile;
+白匪 < white\-bandits;
+肉體 < physical\-body;
+欵 < to\-treat\-well;
+欓 < a\-cross\-piece;
+半導體 < semiconductor;
+備案 < put\-on\-record;
+櫌 < a\-kind\-of\-hoe;
+檮 < block\-of\-wood;
+巡航導彈 < cruise\-missle;
+不可能的事 < impossibility;
+榌 < wooden\-ladder;
+百分之五十 < fifty\-percent;
+鬥志 < will\-to\-fight;
+扁荳 < hyacinth\-bean;
+百倍 < a\-hundredfold;
+楙 < name\-of\-plant;
+筆筒 < pen\-container;
+梹 < the\-areca\-nut;
+寶藍 < sapphire\-blue;
+梎 < sickle\-handle;
+栰 < a\-bamboo\-raft;
+滲碳 < carburization;
+暴力犯罪 < violent\-crime;
+朩 < kwukyel\:\-rank;
+渡過 < to\-cross\-over;
+字集 < character\-set;
+駁殼槍 < mauser\-pistol;
+何西阿書 < book\-of\-hosea;
+空運 < air\-transport;
+奧克拉荷馬市 < oklahoma\-city;
+搢 < to\-stick\-into;
+掭 < to\-manipulate;
+挶 < hold\-in\-hands;
+拕 < to\-drag\-after;
+抃 < to\-clap\-hands;
+不成文法 < unwritten\-law;
+戺 < stone\-boarder;
+戹 < in\-difficulty;
+高速乙太網路 < fast\-ethernet;
+不方便 < inconvenience;
+沒經驗 < inexperienced;
+表層 < surface\-layer;
+怾 < mountain\-name;
+圓周 < circumference;
+彽 < go\-to\-and\-fro;
+彲 < yellow\-dragon;
+彔 < to\-carve\-wood;
+主日學 < sunday\-school;
+病害 < plant\-disease;
+巰 < an\-atom\-group;
+售貨 < to\-sell\-goods;
+峂 < name\-of\-place;
+有助于 < contribute\-to;
+寀 < feudal\-estate;
+舌尖 < tip\-of\-tongue;
+案稱 < counter\-scale;
+媢 < be\-jealous\-of;
+消防 < fire\-fighting;
+喉結 < adam''s''\-apple;
+島國 < island\-nation;
+鬧事 < cause\-trouble;
+京都 < kyoto\-\(japan\);
+四千 < four\-thousand;
+當年 < in\-those\-days;
+垻 < an\-embankment;
+財迷 < money\-grubber;
+三十億 < three\-billion;
+理解 < to\-comprehend;
+嚚 < argumentative;
+不凍港 < ice\-free\-port;
+步話機 < walkie\-talkie;
+密碼 < \(secret\)\-code;
+築城 < fortification;
+咡 < side\-of\-mouth;
+衛兵 < \(body\)\-guard\);
+艾滋病抗體 < aids\-antibody;
+集線器 < hub\-\(network\);
+疑問 < interrogation;
+凟 < to\-be\-rude\-to;
+喉痧 < scarlet\-fever;
+個性 < individuality;
+儹 < to\-accumulate;
+儲 < to\-save\-money;
+儛 < to\-skip\-about;
+不舒適 < uncomfortable;
+傒 < personal\-name;
+兩千年 < the\-year\-2000;
+標本蟲 < spider\-beetle;
+啟示 < enlightenment;
+進出口 < import\|export;
+不可侵犯權 < inviolability;
+侂 < to\-commission;
+向西南 < southwestward;
+致函 < send\-a\-letter;
+乨 < the\-beginning;
+䶚 < decayed\-tooth;
+䶈 < a\-kind\-of\-rat;
+䵿 < a\-silent\-drum;
+䵁 < decayed\-dough;
+䴰 < a\-family\-name;
+䲺 < birds\-singing;
+䲅 < the\-globefish;
+䰻 < to\-catch\-fish;
+意識 < consciousness;
+䰱 < name\-of\-a\-god;
+售票員 < ticket\-seller;
+䯅 < a\-swift\-horse;
+䮈 < to\-go\-swiftly;
+䫿 < a\-cool\-breeze;
+䫴 < weak\-and\-dull;
+聯絡 < communication;
+售票口 < ticket\-window;
+扁擔 < carrying\-pole;
+䫁 < the\-first\-son;
+䪫 < ancient\-music;
+䪒 < leather\-pants;
+䩾 < herb\-medicine;
+䩤 < to\-lead\-an\-ox;
+䩣 < shoe\-cushions;
+䩞 < a\-saddle\-flap;
+䨎 < deep\-and\-dark;
+安定化 < stabilization;
+䧖 < a\-small\-mound;
+䦴 < open\-the\-door;
+䦳 < between\-steps;
+交換端 < switched\-port;
+哀號 < cry\-piteously;
+䦡 < a\-door\-keeper;
+䥩 < hooks\-to\-hang;
+䤵 < a\-tiny\-needle;
+䤎 < soybean\-sauce;
+䤃 < drunken\-sound;
+䣰 < to\-pool\-money;
+䢧 < to\-go\-forward;
+䢚 < a\-narrow\-path;
+䢃 < to\-administer;
+䡥 < a\-moving\-cart;
+䟘 < to\-straighten;
+䟊 < short\-strides;
+桂林 < guilin\-\(city\);
+䞁 < corresponding;
+䝶 < to\-levy\-taxes;
+䝬 < a\-wealthy\-man;
+金黃 < golden\-yellow;
+䛾 < familiar\-with;
+不相干 < be\-irrelevant;
+目標市場 < target\-market;
+䛐 < an\-expression;
+天曉得 < heaven\-knows\!;
+䚕 < to\-search\-out;
+䙹 < to\-vomit\-milk;
+䙥 < shiny\-dresses;
+䙢 < short\-t\-shirt;
+䙠 < short\-clothes;
+䙟 < heavy\-clothes;
+䙞 < woolen\-string;
+䙅 < the\-waistline;
+跨國 < transnational;
+䗗 < the\-millipede;
+䖩 < a\-kind\-of\-bee;
+䖑 < a\-white\-tiger;
+䖇 < fragrant\-herb;
+演出 < \(acting\)\-play;
+吃飯 < to\-eat\-a\-meal;
+䒎 < without\-color;
+䑲 < to\-row\-a\-boat;
+䑥 < a\-moving\-boat;
+䐲 < half\-raw\-meat;
+䐙 < the\-diaphragm;
+䏘 < a\-big\-abdomen;
+䏄 < not\-to\-listen;
+不通 < be\-obstructed;
+最高法院 < supreme\-court;
+䍽 < a\-fierce\-goat;
+䍼 < salted\-mutton;
+䍪 < castrated\-ram;
+䍤 < to\-strain\-out;
+戒指 < \(finger\)\-ring;
+最後更新 < latest\-update;
+䌙 < hank\-of\-ropes;
+䌅 < a\-thick\-ropes;
+䋦 < ravelled\-silk;
+䋝 < a\-throat\-band;
+杏仁豆腐 < almond\-junket;
+䊽 < a\-fine\-thread;
+䊔 < polished\-rice;
+䉩 < a\-bamboo\-ware;
+䉨 < bamboo\-joints;
+䈾 < move\-a\-little;
+䈳 < a\-window\-leaf;
+少將 < major\-general;
+䆚 < to\-go\-through;
+杜絕 < put\-an\-end\-to;
+䅛 < husks\-of\-rice;
+䃳 < falling\-stone;
+䂶 < the\-crustacea;
+䂗 < to\-be\-careful;
+䂎 < a\-short\-spear;
+䂁 < an\-angry\-look;
+䁙 < eloquent\-eyes;
+䀮 < sight\-blurred;
+䀭 < with\-big\-eyes;
+䀖 < to\-look\-up\-to;
+䀕 < angry\-glances;
+暗鎖 < built\-in\-lock;
+㿬 < nasal\-disease;
+㾽 < swelling\-feet;
+㽲 < griping\-colic;
+㽇 < unburnt\-tiles;
+㼵 < a\-small\-basin;
+㼟 < a\-tiled\-house;
+㼎 < a\-small\-melon;
+㻾 < jade\-articles;
+同盟國 < confederation;
+㺈 < to\-go\-hunting;
+㹹 < a\-kind\-of\-dog;
+㹵 < a\-hunting\-dog;
+㹳 < a\-kind\-of\-ape;
+懲戒 < to\-discipline;
+這種方式 < \(in\)\-this\-way;
+下課 < class\-is\-over;
+不詳 < not\-in\-detail;
+㸄 < a\-raging\-fire;
+㷾 < blaze\-of\-fire;
+反響 < repercussions;
+㷖 < to\-shine\-upon;
+㷕 < hearing\-sound;
+㷒 < to\-cook\-meals;
+㶘 < full\-of\-water;
+奧運會 < olympic\-games;
+㵳 < crystal\-clear;
+㵠 < to\-gush\-forth;
+㴽 < water\-current;
+㴫 < great\-flowing;
+㴦 < to\-wash\-hands;
+㴥 < great\-billows;
+㴐 < great\-current;
+保護主義 < protectionism;
+㲛 < hairy\-animals;
+在未來 < in\-the\-future;
+宿怨 < an\-old\-grudge;
+㰻 < asses\-braying;
+㰏 < a\-bamboo\-pole;
+㰌 < to\-monopolize;
+㭿 < oblique\-angle;
+單子 < list\-of\-items;
+㭓 < a\-pillar\-arch;
+貢獻 < to\-contribute;
+㬥 < to\-sun\-to\-air;
+叫醒 < to\-call\-awake;
+㬄 < warm\-and\-damp;
+㫟 < day\-after\-day;
+南美洲 < south\-america;
+美術 < the\-fine\-arts;
+㩥 < delicate\-hand;
+㨞 < to\-feel\-about;
+㧼 < to\-distribute;
+㧷 < to\-wipe\-tears;
+㦫 < lax\-and\-crude;
+㦌 < keen\-or\-sharp;
+㥼 < to\-be\-near\-to;
+㣿 < painfully\-sad;
+㣤 < to\-tread\-upon;
+㢻 < to\-draw\-a\-bow;
+㢖 < a\-store\-house;
+七百萬 < seven\-million;
+㠴 < a\-pillow\-case;
+㠛 < name\-a\-county;
+月球表面 < lunar\-surface;
+㟭 < the\-min\-river;
+能夠 < be\-capable\-of;
+㞬 < close\-or\-near;
+㞋 < soft\-and\-meek;
+家屬 < family\-member;
+㝻 < barely\-enough;
+㝃 < to\-bear\-a\-son;
+地方停車 < parking\-place;
+㛒 < can\-not\-speak;
+㚴 < a\-pretty\-girl;
+鼻淵 < nasosinusitis;
+懂得 < to\-understand;
+㘛 < a\-deep\-valley;
+有良心 < conscientious;
+㘓 < prolix\-speech;
+㘉 < to\-make\-sound;
+㗴 < dogs\-fighting;
+㕰 < sound\-angrily;
+㕪 < birds''\-chirps;
+㕙 < a\-wily\-rabbit;
+㕉 < to\-dig\-a\-hole;
+㔥 < full\-of\-anger;
+㓴 < to\-cut\-in\-two;
+半點 < the\-least\-bit;
+㓖 < bitterly\-cold;
+以太網絡端口 < ethernet\-port;
+㑥 < disrespectful;
+鉛筆 < \(lead\)\-pencil;
+單向 < undirectional;
+㐰 < to\-believe\-in;
+受賄 < accept\-bribes;
+鼻飼法 < nasal\-feeding;
+知名人士 < public\-figure;
+約拿書 < book\-of\-jonah;
+例假 < legal\-holiday;
+水面 < water\-surface;
+步行蟲 < ground\-beetle;
+移殖 < to\-transplant;
+起伏 < ups\-and\-downs;
+變調 < modified\-tone;
+友誼 < companionship;
+美國國會 < u\.s\.\-congress;
+哀樂 < funeral\-music;
+不幸的是 < unfortunately;
+富于 < to\-be\-full\-of;
+便步走 < march\-at\-ease;
+聲帶 < vocal\-cord\(s\);
+不知 < unknowing\(ly\);
+孫女 < granddaughter;
+光纖電纜 < optical\-fiber;
+社交語言 < lingua\-franca;
+涼快 < nice\-and\-cold;
+三百 < three\-hundred;
+連接至 < to\-connect\-to;
+京戲 < beijing\-opera;
+低于 < be\-lower\-than;
+鳶尾花 < iris\-\(flower\);
+南部 < southern\-part;
+變色 < change\-colour;
+半官方 < semi\-official;
+北面 < northern\-side;
+上班 < to\-go\-to\-work;
+百科全書 < encyclopaedia;
+各種 < every\-kind\-of;
+貝彫 < shell\-carving;
+日軍 < japanese\-army;
+功率惡化 < power\-penalty;
+南越 < south\-vietnam;
+愛憎 < love\-and\-hate;
+職員 < office\-worker;
+洋溢 < brimming\-with;
+不可抗力 < force\-majeure;
+協調 < to\-coordinate;
+大阪 < osaka\-\(japan\);
+考慮 < to\-think\-over;
+生命的遺跡 < trace\-of\-life;
+北部 < northern\-part;
+兼容性 < compatibility;
+解壓縮 < to\-decompress;
+本意 < original\-idea;
+吸毒 < to\-take\-drugs;
+中國銀行 < bank\-of\-china;
+泳池 < swimming\-pond;
+一步 < \(single\)\-step;
+北越 < north\-vietnam;
+響應時間 < response\-time;
+雜項 < miscellaneous;
+傳輸模式 < transfer\-mode;
+採棉機 < cotton\-picker;
+外部 < external\-part;
+聞人 < famous\-person;
+前所未有 < unprecedented;
+和尚 < buddhist\-monk;
+蘇州 < suzhou\-\(city\);
+礦水 < mineral\-water;
+暑氣 < \(summer\)\-heat;
+一九九七年 < the\-year\-1997;
+哀告 < beg\-piteously;
+外貿 < foreign\-trade;
+避難 < \[take\]\-refuge;
+包袱 < cloth\-wrapper;
+感冒 < to\-catch\-cold;
+彩蚌 < painted\-shell;
+芭蕉扇 < palm\-leaf\-fan;
+禮堂 < assembly\-hall;
+總計 < \(grand\)\-total;
+娛樂 < entertainment;
+中學 < middle\-school;
+五一 < 5\-1\-\(may\-1st\);
+磁片 < magnetic\-disk;
+會場 < meeting\-place;
+媾和 < to\-make\-peace;
+公元前 < before\-christ;
+上市 < on\-the\-market;
+訪問方式 < access\-method;
+檔案建立 < file\-creation;
+私利 < personal\-gain;
+遲鈍 < slow\-\(witted\);
+波美度 < baume\-degrees;
+北美 < north\-america;
+經驗 < to\-experience;
+出生日期 < date\-of\-birth;
+不可思議 < inconceivable;
+格子花呢 < plaid\,\-tartan;
+汲水 < to\-draw\-water;
+獲勝 < be\-victorious;
+觀點 < point\-of\-view;
+半復賽 < eighth\-finals;
+水牛 < water\-buffalo;
+雙生兄弟 < twin\-brothers;
+同年 < the\-same\-year;
+最大速率 < maximum\-speed;
+變星 < variable\-star;
+邊界線 < boundary\-line;
+蘇俄 < soviet\-russia;
+現實情況 < current\-state;
+步行 < to\-go\-on\-foot;
+擅長 < to\-be\-good\-at;
+不啻 < not\-less\-than;
+牌照 < license\-plate;
+支持率 < support\-level;
+試一試 < to\-have\-a\-try;
+暗害 < kill\-secretly;
+包羅萬象 < all\-embracing;
+勃興 < rise\-suddenly;
+變態 < metamorphosis;
+性慾 < sexual\-desire;
+匯率 < exchange\-rate;
+治安 < law\-and\-order;
+視頻節目 < video\-program;
+雌花 < female\-flower;
+全世界第一 < world''s\-first;
+多種 < many\-kinds\-of;
+吸入 < to\-breathe\-in;
+變工 < exchange\-work;
+下至上 < bottom\-to\-top;
+受害 < to\-be\-injured;
+找不到 < couldn''t\-find;
+決心 < determination;
+下令 < give\-an\-order;
+莫逆 < very\-friendly;
+羅馬字母 < roman\-letters;
+比熱 < specific\-heat;
+不可名狀 < indescribable;
+瞳 < pupil\-of\-eye;
+万 < ten\-thousand;
+布 < cotton\-cloth;
+通 < pass\-through;
+提 < hold\-in\-hand;
+京 < capital\-city;
+甚 < great\-extent;
+周 < zhou\-dynasty;
+尻 < end\-of\-spine;
+宴 < to\-entertain;
+宰 < to\-slaughter;
+犯 < commit\-crime;
+婢 < servant\-girl;
+参 < take\-part\-in;
+掌 < palm\-of\-hand;
+姿 < one''s\-manner;
+姉 < elder\-sister;
+斗 < chinese\-peck;
+呼 < breathe\-sigh;
+衝 < rush\-against;
+螺 < spiral\-shell;
+坊 < neighborhood;
+尼 < buddhist\-nun;
+鼾 < snore\-loudly;
+叶 < to\-harmonize;
+野 < open\-country;
+移 < change\-place;
+唐 < tang\-dynasty;
+秀 < ear\-of\-grain;
+蒲 < type\-of\-rush;
+庆 < congratulate;
+蒟 < betel\-pepper;
+汗 < perspiration;
+拜 < do\-obeisance;
+虑 < be\-concerned;
+宋 < song\-dynasty;
+胆 < gall\-bladder;
+剖 < split\-in\-two;
+凤 < male\-phoenix;
+询 < inquire\-into;
+筑 < ancient\-lute;
+偶 < accidentally;
+飽 < eat\-heartily;
+胎 < unborn\-child;
+悟 < to\-apprehend;
+肅 < pay\-respects;
+侘 < disappointed;
+祭 < sacrifice\-to;
+宪 < constitution;
+碑 < stone\-tablet;
+昌 < light\-of\-sun;
+携 < lead\-by\-hand;
+厦 < big\-building;
+仆 < fall\-forward;
+妥 < satisfactory;
+杭 < cross\-stream;
+赠 < give\-present;
+腔 < chest\-cavity;
+孝 < filial\-piety;
+笹 < small\-bamboo;
+笛 < bamboo\-flute;
+歧 < fork\-of\-road;
+鉛 < lead\-plumbum;
+喃 < keep\-talking;
+舱 < hold\-of\-ship;
+醜 < ugly\-looking;
+裘 < fur\-garments;
+栽 < to\-cultivate;
+诧 < be\-surprised;
+阎 < village\-gate;
+愣 < be\-in\-a\-daze;
+琪 < type\-of\-jade;
+娥 < be\-beautiful;
+咪 < sound\-of\-cat;
+渗 < soak\-through;
+葫 < bottle\-gourd;
+坪 < level\-ground;
+坞 < entrenchment;
+橡 < chestnut\-oak;
+絮 < waste\-cotton;
+跄 < walk\-rapidly;
+屹 < to\-rise\-high;
+惘 < disconcerted;
+揩 < rub\-and\-wipe;
+楠 < name\-of\-tree;
+麓 < foot\-of\-hill;
+恻 < feel\-anguish;
+桅 < mast\-of\-ship;
+骋 < gallop\-horse;
+蹒 < to\-jump\-over;
+祀 < to\-sacrifice;
+寰 < great\-domain;
+斓 < multicolored;
+伫 < look\-towards;
+躏 < trample\-down;
+沽 < buy\-and\-sell;
+珥 < ear\-ornament;
+笆 < bamboo\-fence;
+虬 < young\-dragon;
+惬 < be\-satisfied;
+缨 < a\-chin\-strap;
+劾 < examine\-into;
+嘤 < seek\-friends;
+诃 < scold\-loudly;
+冽 < cold\-and\-raw;
+飨 < host\-banquet;
+怏 < discontented;
+冢 < burial\-mound;
+嗳 < interjection;
+宕 < stone\-quarry;
+耆 < man\-of\-sixty;
+靓 < make\-up\-face;
+蛰 < to\-hibernate;
+掼 < throw\-ground;
+囤 < grain\-basket;
+筱 < dwarf\-bamboo;
+樟 < camphor\-tree;
+鲥 < reeves''\-shad;
+逵 < thoroughfare;
+岷 < min\-mountain;
+枰 < smooth\-board;
+屐 < wooden\-shoes;
+胛 < the\-shoulder;
+鹞 < sparrow\-hawk;
+犄 < animal\-horns;
+跹 < wander\-about;
+昱 < bright\-light;
+湄 < water''s\-edge;
+菅 < coarse\-grass;
+绻 < affectionate;
+篁 < bamboo\-grove;
+赅 < prepared\-for;
+椁 < outer\-coffin;
+纰 < spoiled\-silk;
+鼋 < large\-turtle;
+醐 < purest\-cream;
+龉 < uneven\-teeth;
+苻 < kind\-of\-herb;
+鬣 < horse''s\-mane;
+缗 < fishing\-line;
+湫 < a\-small\-pond;
+仟 < one\-thousand;
+蚶 < kind\-of\-clam;
+蛄 < mole\-cricket;
+毂 < hub\-of\-wheel;
+畚 < straw\-basket;
+洄 < a\-back\-water;
+飧 < evening\-meal;
+醪 < unclear\-wine;
+骝 < famous\-horse;
+骒 < mother\-horse;
+懔 < be\-afraid\-of;
+劓 < cut\-off\-nose;
+踔 < to\-get\-ahead;
+颡 < the\-forehead;
+潲 < driving\-rain;
+缯 < silk\-fabrics;
+甓 < glazed\-tiles;
+荬 < a\-plant\-name;
+柒 < number\-seven;
+瘳 < to\-be\-healed;
+谇 < speak\-ill\-of;
+乇 < to\-depend\-on;
+其他的人 < other\-people;
+加緊 < to\-intensify;
+萬事達 < master\(card\);
+睡覺 < to\-go\-to\-bed;
+早期 < early\-period;
+約珥書 < book\-of\-joel;
+媒體報導 < media\-report;
+相關 < interrelated;
+艾滋病患者 < aids\-patient;
+火龍 < fiery\-dragon;
+合作 < to\-cooperate;
+賠償金 < compensation;
+簿記管理員 < commissarian;
+智力 < intelligence;
+示威者 < demonstrator;
+昔年 < former\-years;
+和平條約 < peace\-treaty;
+毛主席 < chairman\-mao;
+礦井 < mine\-\(shaft\);
+熟知 < acquaintance;
+支票 < \(bank\)\-check;
+建築物 < \(a\)\-building;
+姐姐 < older\-sister;
+股票市場 < stock\-market;
+閱覽室 < reading\-room;
+警報 < \(fire\)\-alarm;
+後果 < consequences;
+不名譽 < disreputable;
+收盤 < market\-close;
+城防 < city\-defence;
+頂住 < to\-withstand;
+西部 < western\-part;
+好感 < good\-opinion;
+機械碼 < machine\-code;
+失業 < unemployment;
+擅自 < unauthorized;
+大驚失色 < apprehensive;
+高層旅館 < luxury\-hotel;
+逕自 < on\-one''s\-own;
+近視 < shortsighted;
+步犁 < walking\-plow;
+不成功 < unsuccessful;
+水滸傳 < water\-margin;
+不重視 < indifference;
+開關 < power\-switch;
+去世 < to\-pass\-away;
+亞洲與太平洋 < asia\-pacific;
+十九歲 < 19\-years\-old;
+靈的世界 < spirit\-world;
+多方 < in\-many\-ways;
+搶購 < panic\-buying;
+巡迴 < to\-go\-around;
+這種 < this\-kind\-of;
+大意 < general\-idea;
+半文盲 < semiliterate;
+別稱 < another\-name;
+步步 < step\-by\-step;
+協商 < consult\-with;
+矮星 < dwarf\-\(star\);
+核武器試驗 < nuclear\-test;
+丙烯酸 < acrylic\-acid;
+半熟練 < semi\-skilled;
+那時 < at\-that\-time;
+吃不開 < be\-unpopular;
+大師 < great\-master;
+組織 < organization;
+出乎預料 < unexpectedly;
+通用 < common\-\(use\);
+多工 < to\-multiplex;
+糾葛 < entanglement;
+試探 < to\-sound\-out;
+夫妻 < man\-and\-wife;
+地方主義 < \"local\-\-ism\";
+道歉 < to\-apologize;
+故意 < deliberately;
+請問 < may\-i\-ask\.\.\.;
+激光唱片 < compact\-disk;
+二十一世紀 < 21st\-century;
+出發 < to\-start\-out;
+縮寫 < abbreviation;
+中央銀行 < central\-bank;
+壁掛 < wall\-hanging;
+熟悉 < to\-know\-well;
+熟思 < deliberation;
+整天 < all\-day\-long;
+鱉甲 < turtle\-shell;
+身體 < \(human\)\-body;
+斯密約瑟 < joseph\-smith;
+糾纏 < be\-entangled;
+不合理 < unreasonable;
+目前世界 < modern\-world;
+複製 < to\-duplicate;
+隊旗 < team\-pennant;
+加強 < to\-reinforce;
+出獄 < leave\-prison;
+不愉快 < disagreeable;
+談判 < to\-negotiate;
+看病 < see\-a\-doctor;
+民意調查 < opinion\-poll;
+很不 < very\-un\-\.\.\.\.;
+毅力 < perseverance;
+落實 < to\-implement;
+支店 < branch\-store;
+齆 < stuffed\-noze;
+鼽 < clogged\-nose;
+白薯 < sweet\-potato;
+綵旗 < colored\-flag;
+養雞場 < chicken\-farm;
+麕 < muntjac\-deer;
+現代音樂 < modern\-music;
+回顧 < to\-look\-back;
+殭化 < become\-rigid;
+鳐 < the\-nautilus;
+鱑 < the\-sturgeon;
+鱂 < name\-of\-fish;
+製造業者 < manufacturer;
+膝上型 < laptop\-\(adj\);
+瀏覽 < to\-skim\-over;
+心理學家 < psychologist;
+魦 < shark\-family;
+鬵 < big\-iron\-pot;
+鬅 < unkempt\-hair;
+課余 < after\-school;
+車道 < traffic\-lane;
+正如 < be\-just\-like;
+驈 < black\-horses;
+騆 < divine\-horse;
+駜 < strong\-horse;
+駗 < chatter\-mark;
+有條有理地 < methodically;
+不是玩兒的 < it''s\-no\-joke;
+實際性 < practicality;
+十一年 < eleven\-years;
+餀 < tainted\-food;
+不能抵抗 < irresistible;
+颭 < sway\-in\-wind;
+紙牌 < playing\-card;
+鞦 < leather\-stap;
+過境簽証 < transit\-visa;
+霑 < be\-moistened;
+陁 < a\-steep\-bank;
+發紅 < flush\-\(face\);
+集合 < congregation;
+速成 < crash\-course;
+闑 < the\-doorsill;
+光線 < optical\-line;
+镨 < praseodymium;
+努力 < great\-effort;
+引入 < to\-draw\-into;
+廠址 < factory\-site;
+鏷 < protactinium;
+相似性 < ressemblance;
+非同步 < asynchronous;
+鍊 < smelt\-metals;
+錈 < to\-bend\-iron;
+傳道書 < ecclesiastes;
+隨同 < accompanying;
+耶穌基督 < jesus\-christ;
+熒光 < flourescence;
+記者報導 < press\-report;
+釪 < an\-alms\-bowl;
+廣告 < to\-advertise;
+醽 < kind\-of\-wine;
+挨近 < get\-close\-to;
+編劇 < write\-a\-play;
+壓倒 < overwhelming;
+採脂 < tree\-tapping;
+郙 < to\-be\-exiled;
+邲 < good\-looking;
+迣 < to\-leap\-over;
+速寫 < quick\-sketch;
+多工作業 < multitaksing;
+發言人 < spokesperson;
+踼 < to\-fall\-flat;
+踤 < butt\-against;
+集中器 < concentrator;
+不大離兒 < pretty\-close;
+週圍 < surroundings;
+濾紙 < filter\-paper;
+賉 < to\-give\-alms;
+貆 < small\-badger;
+豶 < castrate\-pig;
+足球迷 < football\-fan;
+本來面目 < true\-colours;
+訪俄 < visit\-russia;
+拔錨 < weigh\-anchor;
+標燈 < beacon\-light;
+冰晶 < ice\-crystals;
+誾 < speak\-gently;
+幾天 < several\-days;
+授精 < insemination;
+髒話 < bad\-language;
+凹岸 < concave\-bank;
+襛 < fine\-clothes;
+襆 < hood\-or\-cowl;
+過來 < to\-come\-over;
+操勞 < to\-work\-hard;
+那樣的 < that\-kind\-of;
+光源 < light\-source;
+粗俗的階級 < vulgar\-class;
+速凍 < quick\-freeze;
+網路節點 < network\-node;
+坐牢 < imprisonment;
+補牙 < fill\-a\-tooth;
+刨刀 < planing\-tool;
+把關 < guard\-a\-pass;
+打印服務器 < print\-server;
+不可收拾 < irremediable;
+半邊天 < half\-the\-sky;
+葜 < smilax\-china;
+萩 < scandent\-hop;
+萘 < naphthanlene;
+自衛 < self\-defense;
+賓西法尼亞 < pennsylvania;
+莦 < jungle\-grass;
+國家機密 < state\-secret;
+陛下 < your\-majesty;
+八月 < eighth\-month;
+芚 < green\-sprout;
+備考 < \(an\-appendix;
+芑 < white\-millet;
+年前 < \.\.\.years\-ago;
+膗 < ugly\-and\-fat;
+開支 < expenditures;
+捏積 < chiropractic;
+葡萄酒 < \(grape\)\-wine;
+肙 < a\-small\-worm;
+羀 < fishing\-trap;
+調查人員 < investigator;
+武裝部隊 < armed\-forces;
+報價 < quoted\-price;
+迷信 < superstition;
+纁 < shade\-of\-red;
+繙 < to\-interpret;
+縕 < tangled\-hemp;
+轉換 < to\-transform;
+搬家 < move\-\(house\);
+戶頭 < bank\-account;
+農作物 < \(farm\)\-crops;
+籯 < bamboo\-chest;
+四十多 < more\-than\-40;
+親信 < trusted\-aide;
+筤 < young\-bamboo;
+行程 < travel\-route;
+筍 < bamboo\-shoot;
+筅 < bamboo\-brush;
+嚴竣 < tight\.strict;
+證實禮 < confirmation;
+名錄服務 < name\-service;
+秬 < black\-millet;
+看作 < look\-upon\-as;
+語音信號 < voice\-signal;
+寧願 < would\-rather;
+祘 < to\-calculate;
+磠 < sal\-ammoniac;
+碶 < a\-flood\-gate;
+接枝 < \(tree\)\-graft;
+授權 < to\-authorize;
+矼 < stone\-bridge;
+開學 < school\-opens;
+睒 < to\-glance\-at;
+保證 < to\-guarantee;
+批評 < to\-criticize;
+宇航局 < space\-agency;
+皦 < bright\-white;
+令人驚異 < surprisingly;
+瘺 < anal\-fistula;
+去國外 < to\-go\-abroad;
+疿 < prickly\-heat;
+拔絲 < wire\-drawing;
+打賭 < \(make\-a\)\-bet;
+優惠 < preferential;
+第二位 < second\-place;
+公報 < announcement;
+基礎設施 < base\-station;
+密集 < concentrated;
+授時 < time\-service;
+在旁 < by\-\(a\-place\);
+同時代 < contemporary;
+玍 < ill\-tempered;
+拼盤 < cold\-platter;
+狆 < pekinese\-dog;
+牂 < female\-sheep;
+捐款 < donate\-money;
+副總理 < vice\-premier;
+國有 < nationalized;
+系上 < to\-buckle\-up;
+背離 < deviate\-from;
+按照 < according\-to;
+偶然 < incidentally;
+喉鏡 < laryngoscope;
+背陰 < in\-the\-shade;
+生命跡象 < sign\-of\-life;
+兩千 < two\-thousand;
+滊 < a\-river\-name;
+路得記 < book\-of\-ruth;
+插圖 < illustration;
+泖 < still\-waters;
+知識分子 < intellectual;
+管理 < to\-supervise;
+三合一 < three\-in\-one;
+毈 < fertile\-eggs;
+殜 < half\-sitting;
+四百萬 < four\-million;
+梅花 < plum\-blossom;
+阿摩司書 < book\-of\-amos;
+當然 < only\-natural;
+橒 < wood\-streaks;
+高質量 < high\-quality;
+標價 < mark\-a\-price;
+槻 < zelkova\-tree;
+棒硫 < roll\-sulphur;
+槔 < water\-pulley;
+夢游症 < to\-sleepwalk;
+耶利米哀歌 < lamentations;
+饅頭 < steamed\-roll;
+保管 < take\-care\-of;
+用戶定義 < user\-defined;
+垂下 < to\-hang\-down;
+成吉思汗 < genghis\-khan;
+摙 < to\-transport;
+裁員 < to\-cut\-staff;
+清醒 < clear\-headed;
+補充 < to\-replenish;
+不結盟 < nonalignment;
+揑 < to\-fabricate;
+八級風 < force\-8\-wind;
+戉 < a\-battle\-axe;
+便秘 < constipation;
+病床 < hospital\-bed;
+幼兒園 < kindergarten;
+桔子水 < orange\-juice;
+枘鑿 < incompatible;
+主幹網路 < core\-network;
+廹 < to\-persecute;
+創造性 < creativeness;
+嚮往 < to\-yearn\-for;
+自拔 < free\-oneself;
+帨 < handkerchief;
+嶢 < high\-or\-tall;
+屘 < the\-youngest;
+航天 < space\-flight;
+高密 < high\-density;
+表土 < surface\-soil;
+歷代志下 < 2\-chronicles;
+歷代志上 < 1\-chronicles;
+嫲 < grand\-mother;
+賞識 < appreciation;
+消除 < to\-eliminate;
+瑞色 < lovely\-color;
+聽說 < to\-hear\-told;
+周總理 < premier\-zhou;
+執政黨 < ruling\-party;
+當心 < to\-take\-care;
+異性 < heterosexual;
+交鋒 < cross\-swords;
+興奮 < \(be\)\-excited;
+指令名字 < command\-name;
+禽類 < bird\-species;
+母親節 < mother''s\-day;
+喭 < condole\-with;
+一小部分 < a\-small\-part;
+偽善 < hypocritical;
+抱愧 < feel\-ashamed;
+呹 < to\-eat\-grass;
+一下兒 < a\-little\-bit;
+負責 < in\-charge\-of;
+現行 < be\-in\-effect;
+屈服 < to\-surrender;
+厷 < the\-fore\-arm;
+減緩 < to\-slow\-down;
+勣 < achievements;
+下齒 < bottom\-teeth;
+媒體 < \(news\)\-media;
+剷 < to\-level\-off;
+驚愕 < astonishment;
+當場 < at\-the\-scene;
+複製品 < reproduction;
+儗 < compare\-with;
+司法權 < jurisdiction;
+婚齡 < marrying\-age;
+抱屈 < feel\-wronged;
+佔便宜 < adventageous;
+佭 < unsubmissive;
+食譜 < cookery\-book;
+丼 < bowl\-of\-food;
+並非 < really\-isn''t;
+突破 < breakthrough;
+鼻中隔 < nasal\-septum;
+新聞處 < news\-service;
+侵晨 < towards\-dawn;
+䴼 < to\-extirpate;
+䴕 < a\-woodpecker;
+漢城 < seoul\,\-korea;
+䳖 < flying\-birds;
+䲜 < lots\-of\-fish;
+䱊 < roe\-or\-spawn;
+䯶 < fair\-of\-hair;
+䯧 < a\-small\-hall;
+運動鞋 < sports\-shoes;
+䮟 < big\-and\-tall;
+少數 < small\-number;
+䮑 < a\-gray\-horse;
+䭘 < well\-stacked;
+䭖 < animal\-feeds;
+拌和 < mix\-and\-stir;
+䭉 < mashed\-beans;
+䬜 < evil\-spirits;
+䬚 < to\-move\-fast;
+䬋 < violent\-wind;
+流通 < to\-circulate;
+䫨 < tall\-and\-big;
+䫚 < short\-headed;
+䫕 < small\-headed;
+咨詢 < consultative;
+䫇 < the\-whiskers;
+扒拉 < push\-lightly;
+䪹 < a\-large\-face;
+䪡 < to\-fall\-down;
+䪋 < silk\-cordage;
+䩏 < a\-small\-face;
+䩋 < a\-green\-face;
+䩇 < a\-small\-head;
+專政 < dictatorship;
+䨶 < thunderstorm;
+䨲 < a\-small\-hare;
+䨪 < a\-dust\-storm;
+䨝 < a\-pure\-woman;
+䨈 < a\-small\-bird;
+飼草 < forage\-grass;
+䧢 < a\-rough\-road;
+䧙 < a\-high\-mound;
+鼻腔 < nasal\-cavity;
+核轟炸 < nuclear\-bomb;
+浴血 < blood\-soaked;
+䥃 < a\-big\-hammer;
+䤬 < a\-small\-gong;
+䤣 < a\-metal\-ring;
+䤋 < yellow\-faced;
+䣾 < cheese\-dregs;
+䣼 < mixed\-starch;
+屬國 < vassal\-state;
+䠔 < far\-and\-deep;
+䟿 < to\-reverence;
+䟹 < to\-hop\-about;
+轉賬卡 < a\-debit\-card;
+鋼筆 < fountain\-pen;
+䟕 < to\-step\-upon;
+䞱 < to\-fall\-over;
+䞧 < hard\-to\-walk;
+偉人 < great\-person;
+安營 < pitch\-a\-camp;
+和解 < conciliatory;
+面對面 < face\-to\-face;
+䚪 < curved\-horns;
+條子 < a\-short\-note;
+揮霍無度 < extravagance;
+根本 < \(not\)\-at\-all;
+䘄 < cicada\-famiy;
+䘀 < grasshoppers;
+䗧 < libellulidae;
+種種 < all\-kinds\-of;
+䖞 < a\-sea\-insect;
+䕻 < to\-adhere\-to;
+䕺 < dense\-growth;
+䕝 < medical\-herb;
+䕋 < of\-elm\-group;
+䓯 < water\-pepper;
+登陸月球 < moon\-landing;
+複寫紙 < carbon\-paper;
+䑽 < a\-large\-boat;
+䑵 < a\-small\-boat;
+法院 < court\-of\-law;
+䐅 < the\-buttocks;
+䏀 < inharmonious;
+䎘 < birds\-flying;
+河馬 < hippopotamus;
+生命 < life\-\(force\);
+䍄 < an\-indenture;
+䌶 < \)\-black\-silk;
+䌇 < a\-thick\-rope;
+主角 < leading\-role;
+淫猥 < abominations;
+產卵 < lay\-\(an\-egg\);
+果皮 < \(fruit\)\-peel;
+䊅 < to\-soak\-rice;
+䉯 < dried\-bamboo;
+䉕 < a\-bamboo\-hat;
+䉔 < bamboo\-slips;
+䈟 < broken\-sound;
+䇸 < a\-bamboo\-mat;
+䇝 < to\-break\-off;
+䆢 < to\-penetrate;
+䆟 < coresponding;
+䆍 < cutted\-crops;
+不足 < insufficient;
+䅁 < to\-husk\-rice;
+打孔器 < hole\-puncher;
+䃲 < a\-great\-rock;
+䃯 < small\-stones;
+䃝 < rugged\-rocks;
+䂐 < short\-stupid;
+䁧 < to\-open\-wide;
+家政 < housekeeping;
+不貲 < immeasurable;
+䀁 < a\-small\-bowl;
+㿵 < soft\-leather;
+㿲 < a\-fierce\-dog;
+㿪 < skin\-disease;
+㿊 < very\-painful;
+㾔 < long\-illness;
+什麼是 < what\-is\-\.\.\.\?;
+軍事援助 < military\-aid;
+凹透鏡 < concave\-lens;
+㼋 < the\-cucumber;
+本本主義 < book\-worship;
+㺖 < dogs\-barking;
+㺎 < fierce\-beast;
+五角大樓 < the\-pentagon;
+㸾 < to\-filled\-up;
+㸭 < the\-opposite;
+㷹 < intense\-heat;
+㶕 < to\-wash\-rice;
+作愛 < to\-make\-love;
+㵊 < moving\-image;
+㴕 < to\-boil\-away;
+㳞 < deep\-and\-far;
+㳑 < to\-flow\-over;
+㰷 < resurrection;
+㯠 < a\-cross\-beam;
+㯜 < decayed\-wood;
+㮮 < a\-well\-sweep;
+㮬 < a\-fruit\-tree;
+蘇聯 < soviet\-union;
+㬵 < the\-shinbone;
+摩西律法 < law\-of\-moses;
+㫒 < hands\-joined;
+害怕 < to\-be\-afraid;
+㫃 < flags\-flying;
+㫁 < to\-cut\-apart;
+晚間 < evening\-time;
+五百 < five\-hundred;
+㧴 < to\-rub\-hands;
+㦎 < cantankerous;
+㥵 < to\-dishonour;
+㤧 < conciliation;
+㣒 < hair\-raising;
+㣑 < double\-image;
+迅速蔓延 < rapid\-spread;
+㢗 < a\-high\-house;
+㡔 < oiled\-calico;
+㡅 < storage\-room;
+證驗 < real\-results;
+㠾 < a\-dish\-cloth;
+懊悔 < feel\-remorse;
+㠒 < mountain\-top;
+㟐 < big\-and\-high;
+㟇 < a\-land\-slide;
+㞢 < to\-arrive\-at;
+㞛 < red\-slippers;
+㞅 < not\-straight;
+古羅馬 < ancient\-rome;
+㜗 < covetousness;
+㛼 < to\-interrupt;
+俄中 < russia\-china;
+㛥 < to\-prostrate;
+㛊 < to\-speculate;
+二十萬 < 200\-thousand;
+㘢 < a\-round\-cave;
+㘍 < sound\-of\-rat;
+變速 < speed\-change;
+㖷 < bird\-singing;
+年輕人 < young\-people;
+㖠 < an\-auxiliary;
+㕯 < slow\-tongued;
+安心 < feel\-at\-ease;
+㕒 < a\-lofty\-peak;
+㔬 < to\-establish;
+㔦 < to\-encourage;
+㔕 < with\-purpose;
+㔃 < to\-cut\-short;
+㓣 < to\-sink\-into;
+人民 < \(the\)\-people;
+將來 < \(the\)\-future;
+㑪 < a\-generation;
+㑔 < all\-together;
+㐸 < to\-own\-money;
+㐴 < to\-drag\-down;
+題花 < title\-design;
+可觀 < considerable;
+人權 < human\-rights;
+乒乓球 < table\-tennis;
+階級式 < hierarchical;
+以斯拉記 < book\-of\-ezra;
+趕上 < keep\-up\-with;
+聽說過 < to\-hear\-said;
+闌尾炎 < appendicitis;
+移民 < to\-immigrate;
+今晨 < this\-morning;
+密友 < close\-friend;
+南非 < south\-africa;
+不符 < inconsistent;
+開放式網路 < open\-network;
+丹田 < pubic\-region;
+半響 < half\-the\-day;
+主環 < primary\-ring;
+大一些 < a\-bit\-bigger;
+你們 < you\-\(plural\);
+一直 < continuously;
+生物戰 < germ\-warfare;
+不知所措 < be\-at\-a\-loss;
+暗算 < plot\-against;
+建設性 < constructive;
+亮度 < illumination;
+參考 < consultation;
+喉塞音 < glottal\-stop;
+壯麗 < magnificence;
+黨政 < party\-policy;
+檔案服務 < file\-servoce;
+虐待 < mistreatment;
+感恩 < thanksgiving;
+大都會 < metropolitan;
+罰球 < penalty\-shot;
+費城 < philadelphia;
+最低點 < lowest\-point;
+油畫 < oil\-painting;
+美洲 < the\-americas;
+貧困 < impoverished;
+降落地點 < landing\-site;
+基督教 < christianity;
+大量 < great\-amount;
+頂用 < to\-be\-of\-use;
+安眠酮 < methaqualone;
+暗灘 < hidden\-shoal;
+藥方 < prescription;
+試驗性 < experimental;
+主持 < preside\-over;
+銀幕 < movie\-screen;
+老家 < native\-place;
+暗潮 < undercurrent;
+買價 < buying\-price;
+多邊 < multilateral;
+現代 < modern\-times;
+他人 < other\-person;
+之後 < after\(wards\);
+慣例 < conventional;
+並排 < side\-by\-side;
+耕地 < ariable\-land;
+貴族化 < aristocratic;
+浴場 < bathing\-spot;
+五百萬 < five\-million;
+蓋菜 < leaf\-mustard;
+冰洲石 < iceland\-spar;
+核軍備 < nuclear\-arms;
+不拘 < not\-stick\-to;
+三十五億 < 3\-\.5\-billion;
+鞭砲 < firecrackers;
+二十六歲 < 26\-years\-old;
+感動 < to\-move\-\(sb\);
+意味 < significance;
+速記員 < stenographer;
+白水泥 < white\-cement;
+不愧 < be\-worthy\-of;
+靶紙 < target\-sheet;
+數據網絡 < data\-network;
+龐然大物 < huge\-monster;
+象聲詞 < onomatopoeia;
+愈加 < all\-the\-more;
+遠離 < removed\-from;
+和善 < good\-natured;
+認證 < authenticate;
+刨齒 < gear\-shaping;
+注意 < take\-note\-of;
+風味 < local\-flavor;
+繡花 < to\-embroider;
+暗探 < secret\-agent;
+暴怒 < violent\-rage;
+不容 < not\-tolerate;
+不宜 < not\-suitable;
+犯毒 < illegal\-drug;
+世界知名 < world\-famous;
+幀格式 < frame\-format;
+大致 < more\-or\-less;
+不如 < not\-equal\-to;
+得票 < vote\-getting;
+派別 < denomination;
+線軸 < thread\-spool;
+有利 < advantageous;
+衛生紙 < toilet\-paper;
+訂閱 < subscription;
+恢復 < to\-reinstate;
+這項 < this\-\(thing\);
+快速發展 < rapid\-growth;
+多種語言 < multilingual;
+可惜 < it\-is\-a\-pity;
+當時的 < of\-that\-time;
+婚外 < extramarital;
+不單 < not\-the\-only;
+安全問題 < safety\-issue;
+之一 < one\-of\-\(sth\);
+境遇 < circumstance;
+野心 < wild\-schemes;
+卻步 < to\-step\-back;
+中俄 < china\-russia;
+危殆 < grave\-danger;
+中亞 < central\-asia;
+變性 < denaturation;
+原料 < raw\-material;
+消防栓 < fire\-hydrant;
+不利 < unfavourable;
+透明度 < transparency;
+爆發 < to\-break\-out;
+多站 < multistation;
+氧氣 < oxygen\-\(gas\);
+念日 < memorial\-day;
+各國 < each\-country;
+不便 < inconvenient;
+時態 < \(verb\)\-tense;
+羅列 < to\-spead\-out;
+一億 < 1\-00\-million;
+暴動 < insurrection;
+靶機 < target\-drone;
+運行 < be\-in\-motion;
+編舞 < choreography;
+二十七 < twenty\-seven;
+以 < by\-means\-of;
+農 < agriculture;
+径 < narrow\-path;
+几 < small\-table;
+便 < convenience;
+电 < electricity;
+百 < one\-hundred;
+跣 < bare\-footed;
+贅 < unnecessary;
+功 < achievement;
+江 < large\-river;
+注 < concentrate;
+牧 < tend\-cattle;
+婚 < get\-married;
+刊 < publication;
+熟 < well\-cooked;
+饭 < cooked\-rice;
+奢 < extravagant;
+查 < investigate;
+章 < composition;
+按 < put\-hand\-on;
+蝠 < kind\-of\-bat;
+蝕 < nibble\-away;
+困 < to\-surround;
+险 < narrow\-pass;
+练 < to\-practice;
+溯 < go\-upstream;
+渉 < ford\-stream;
+败 < be\-defeated;
+纷 < in\-disorder;
+缺 < be\-short\-of;
+遭 < come\-across;
+戴 < wear\-on\-top;
+勤 < industrious;
+髄 < bone\-marrow;
+効 < efficacious;
+貌 < countenance;
+繁 < complicated;
+柳 < willow\-tree;
+凄 < bitter\-cold;
+霞 < rosy\-clouds;
+飴 < sweet\-meats;
+聪 < intelligent;
+倦 < be\-tired\-of;
+摔 < fall\-ground;
+醉 < intoxicated;
+涛 < large\-waves;
+锅 < cooking\-pot;
+仔 < small\-thing;
+會 < to\-assemble;
+拆 < to\-break\-up;
+翠 < color\-green;
+晕 < halo\-in\-sky;
+辨 < distinguish;
+葛 < edible\-bean;
+轿 < sedan\-chair;
+攫 < snatch\-away;
+鍛 < forge\-metal;
+厕 < mingle\-with;
+竿 < bamboo\-pole;
+券 < certificate;
+穉 < young\-grain;
+驳 < varicolored;
+憔 < be\-worn\-out;
+粞 < ground\-rice;
+遂 < comply\-with;
+隶 < subservient;
+缸 < earthen\-jug;
+肢 < human\-limbs;
+尴 < embarrassed;
+呐 < raise\-voice;
+颖 < rice\-tassel;
+砥 < a\-whetstone;
+孕 < be\-pregnant;
+钞 < paper\-money;
+琢 < polish\-jade;
+绽 < ripped\-seam;
+奠 < pay\-respect;
+澜 < overflowing;
+惕 < be\-cautious;
+趴 < lying\-prone;
+隋 < sui\-dynasty;
+瞄 < take\-aim\-at;
+祟 < evil\-spirit;
+嗔 < be\-angry\-at;
+奕 < in\-sequence;
+榴 < pomegranate;
+棘 < jujube\-tree;
+峙 < stand\-erect;
+砌 < stone\-steps;
+槐 < locust\-tree;
+鳞 < fish\-scales;
+炽 < burning\-hot;
+迂 < doctrinaire;
+缪 < wind\-around;
+凋 < be\-withered;
+缤 < flourishing;
+雳 < thunderclap;
+驸 < extra\-horse;
+嗷 < loud\-clamor;
+炖 < stew\-slowly;
+谏 < remonstrate;
+篆 < seal\-script;
+宦 < officialdom;
+瓮 < earthen\-jar;
+朕 < pronoun\-''i'';
+阑 < door\-screen;
+卤 < saline\-soil;
+唏 < weep\-or\-sob;
+汩 < run\-swiftly;
+榕 < banyan\-tree;
+闰 < intercalary;
+昊 < summer\-time;
+玷 < flaw\-in\-gem;
+阙 < watch\-tower;
+泌 < to\-seep\-out;
+烽 < signal\-fire;
+孵 < sit\-on\-eggs;
+椭 < oval\-shaped;
+痉 < convulsions;
+匝 < full\-circle;
+饪 < cooked\-food;
+嶙 < precipitous;
+颧 < cheek\-bones;
+镗 < boring\-tool;
+揶 < make\-fun\-of;
+炷 < candle\-wick;
+贲 < forge\-ahead;
+蚱 < grasshopper;
+痨 < consumption;
+濂 < a\-waterfall;
+汐 < night\-tides;
+筠 < bamboo\-skin;
+氤 < hanging\-fog;
+痔 < hemorrhoids;
+趿 < to\-tread\-on;
+觞 < wine\-vessel;
+挹 < to\-bale\-out;
+膑 < the\-kneecap;
+唳 < cry\-of\-bird;
+礅 < stone\-block;
+箔 < reed\-screen;
+豸 < radical\-153;
+烃 < hydrocarbon;
+砭 < stone\-probe;
+澍 < timely\-rain;
+龋 < tooth\-decay;
+缱 < attached\-to;
+奂 < be\-numerous;
+黩 < to\-dishonor;
+壅 < to\-obstruct;
+澶 < still\-water;
+餍 < be\-satiated;
+枥 < type\-of\-oak;
+桕 < tallow\-tree;
+鲢 < silver\-carp;
+趱 < go\-in\-hurry;
+妫 < family\-name;
+暾 < morning\-sun;
+荦 < brindled\-ox;
+邛 < in\-distress;
+戢 < to\-put\-away;
+榧 < type\-of\-yew;
+堇 < yellow\-loam;
+劬 < be\-diligent;
+魈 < mischevious;
+鍪 < an\-iron\-pan;
+蜣 < dung\-beetle;
+痦 < \(flat\)\-mole;
+戬 < exterminate;
+嗉 < bird''s\-crop;
+儋 < a\-small\-jar;
+蚜 < plant\-louse;
+粜 < sell\-grains;
+攮 < to\-fend\-off;
+苎 < china\-grass;
+坩 < earthenware;
+榉 < type\-of\-elm;
+玢 < porphyrites;
+绁 < to\-contract;
+潆 < tiny\-stream;
+髹 < red\-lacquer;
+觖 < to\-long\-for;
+螵 < a\-chrysalis;
+杪 < tip\-of\-twig;
+幂 < cover\-cloth;
+硗 < barren\-land;
+脞 < minced\-meat;
+轵 < end\-of\-axle;
+楗 < bar\-of\-door;
+桄 < a\-coir\-palm;
+堠 < battlements;
+俜 < to\-trust\-to;
+壓縮 < to\-compress;
+大規模 < large\-scale;
+度量衡 < measurement;
+航空術 < aeronautics;
+訪華 < visit\-china;
+認知 < acknowledge;
+叫喊 < exclamation;
+訪問者 < interviewer;
+沉重打擊 < to\-hit\-hard;
+連詞 < conjunction;
+好朋友 < good\-friend;
+四面體 < tetrahedron;
+自然而然 < involuntary;
+弊端 < malpractice;
+非核 < non\-nuclear;
+拔釘錘 < claw\-hammer;
+申命記 < deuteronomy;
+收穫 < acquisition;
+才外流 < brain\-drain;
+民族 < nationality;
+不贊一詞 < keep\-silent;
+暗井 < blind\-shaft;
+暗中 < in\-the\-dark;
+矚目 < to\-focus\-on;
+布鞋 < cloth\-shoes;
+人體器官 < human\-organ;
+埋頭 < steamed\-bun;
+創作力 < originality;
+白矮星 < white\-dwarf;
+判處 < to\-sentance;
+民族主義 < nationalism;
+刻苦 < hardworking;
+標點 < punctuation;
+白麵 < wheat\-flour;
+冒險 < take\-a\-risk;
+白鶴 < white\-crane;
+不贊成 < disapproval;
+往昔 < in\-the\-past;
+半月刊 < semimonthly;
+邊疆 < border\-area;
+讓位 < to\-abdicate;
+怪僻 < peculiarity;
+征收 < levy\-\(fine\);
+母板 < motherboard;
+需求 < requirement;
+大業 < great\-cause;
+旺季 < busy\-season;
+備用環 < backup\-ring;
+必定 < be\-bound\-to;
+半年 < half\-a\-year;
+課桌 < school\-desk;
+滴答聲 < tick\-\(tock\);
+間隔 < compartment;
+遲疑 < to\-hesitate;
+靈感 < inspiration;
+精子密度 < sperm\-count;
+溫度計 < thermograph;
+遷居移民 < immigration;
+不重要 < unimportant;
+野生動物 < wild\-animal;
+說服 < to\-persuade;
+制約 < to\-restrict;
+有影響 < influential;
+鞏固 < consolidate;
+發電廠 < power\-plant;
+聖誕老人 < santa\-claus;
+包括 < to\-comprise;
+妥善 < appropriate;
+辯証 < dialectical;
+浪漫主義 < romanticism;
+柏林牆 < berlin\-wall;
+瀉鹽 < epsom\-salts;
+不可知論 < agnosticism;
+不切實際 < unrealistic;
+典型用途 < typical\-use;
+富於想像 < imaginative;
+巡邏艇 < patrol\-boat;
+不含糊 < unambiguous;
+本土化 < to\-localize;
+即刻 < immediately;
+安全燈 < safety\-lamp;
+勘探 < exploration;
+有意思 < interesting;
+博取 < try\-to\-gain;
+窗玻璃 < window\-pane;
+放棄 < to\-renounce;
+冰蛋 < frozen\-eggs;
+郵局 < post\-office;
+雙數 < even\-number;
+蒐尋 < to\-look\-for;
+白道 < moon''s\-path;
+動態 < development;
+永久 < everlasting;
+發送 < to\-transmit;
+配備 < to\-allocate;
+新西蘭 < new\-zealand;
+比如 < for\-example;
+國事訪問 < state\-visit;
+克裡姆林宮 < the\-kremlin;
+多山 < mountainous;
+半半拉拉 < incompleted;
+電工 < electrician;
+紅色 < red\-\(color\);
+描述 < to\-describe;
+十億 < one\-billion;
+不可分離 < inseparable;
+兵蟻 < soldier\-ant;
+毀壞 < destruction;
+削減 < to\-cut\-down;
+日中 < japan\-china;
+電纜調制解調器 < cable\-modem;
+隨時 < at\-any\-time;
+一千零五十億 < 105\-billion;
+長談 < a\-long\-talk;
+補選 < by\-election;
+敗血症 < septicaemia;
+無產階級 < proletariat;
+落後 < fall\-behind;
+分佈式 < distrubuted;
+失去意識 < unconscious;
+推遲 < to\-postpone;
+百萬富翁 < millionaire;
+貴族社會 < aristocracy;
+操法 < drill\-rules;
+軍隊 < army\-troops;
+樹葉 < tree\-leaves;
+剛架 < rigid\-frame;
+談到 < to\-refer\-to;
+再者 < furthermore;
+調制 < to\-modulate;
+基石 < cornerstone;
+往事 < past\-events;
+麀 < female\-deer;
+大功 < great\-merit;
+有些人 < some\-people;
+裁軍 < disarmament;
+誡命 < commandment;
+鸏 < tropic\-bird;
+內臣 < chamberlain;
+波多黎各 < puerto\-rico;
+鴺 < the\-pelican;
+立法機關 < legislature;
+鱠 < minced\-fish;
+鬙 < matted\-hair;
+坦蕩 < magnanimous;
+不吐氣 < unaspirated;
+主要原因 < main\-reason;
+增強 < to\-increase;
+驔 < black\-horse;
+驇 < heavy\-horse;
+有經驗 < experienced;
+限於 < restrict\-at;
+閉經 < amenorrhoea;
+認出 < recognition;
+免職 < degradation;
+工程 < engineering;
+記得 < to\-remember;
+擺布 < order\-about;
+頋 < to\-care\-for;
+透明 < transparent;
+力圖 < try\-hard\-to;
+有生以來 < since\-birth;
+鞫 < interrogate;
+貝加爾湖 < lake\-baikal;
+典禮 < celebration;
+刑期 < prison\-term;
+精簡 < to\-simplify;
+和平會談 < peace\-talks;
+花茶 < scented\-tea;
+散佈 < disseminate;
+簿記 < bookkeeping;
+太平洋週邊 < pacific\-rim;
+觸怒 < provocation;
+攪和 < to\-mix\-\(up\);
+週年 < anniversary;
+絕望 < desperation;
+敗仗 < lost\-battle;
+不變價格 < fixed\-price;
+鐦 < californium;
+結束 < termination;
+無意 < inadvertant;
+鏻 < phosphonium;
+男朋友 < male\-friend;
+相比 < compared\-to;
+覆沒 < annihilated;
+白皮書 < white\-paper;
+鍐 < a\-headstall;
+眉梢 < tip\-of\-brow;
+切換 < to\-cut\-over;
+翻譯者 < interpreter;
+兩百 < two\-hundred;
+女繼承人 < inheritress;
+假設語氣 < subjunctive;
+地心吸力 < gravitation;
+醹 < strong\-wine;
+醓 < salted\-meat;
+不注意 < thoughtless;
+評價 < to\-evaluate;
+酏 < millet\-wine;
+保不住 < most\-likely;
+崩裂 < burst\-apart;
+巴哈馬 < the\-bahamas;
+激光二極管 < laser\-diode;
+發送器 < transmitter;
+加以 < in\-addition;
+按鈕 < push\-button;
+迊 < to\-go\-round;
+報應 < retribution;
+幾年 < a\-few\-years;
+盼望 < to\-hope\-for;
+隊員 < team\-member;
+行蹤 < whereabouts;
+支付 < pay\-\(money\);
+第一章 < chapter\-one;
+運貨馬車 < cargo\-wagon;
+表語 < predicative;
+輦 < a\-hand\-cart;
+註冊 < to\-register;
+附屬 < subordinate;
+連環圖 < comic\-strip;
+偽軍 < puppet\-army;
+優秀 < outstanding;
+贗 < counterfeit;
+貘 < the\-panther;
+體貼 < considerate;
+豦 < a\-wild\-boar;
+豘 < a\-small\-pig;
+執政 < be\-in\-power;
+在地下 < underground;
+第三世界 < third\-world;
+魚竿 < fishing\-rod;
+無關緊要 < indifferent;
+希望 < ro\-wish\-for;
+約會 < appointment;
+體認 < realization;
+幸好 < fortunately;
+授粉 < pollination;
+觱 < tartar\-horn;
+褵 < bridal\-veil;
+製片 < moviemaking;
+傳真機 < fax\-machine;
+機會 < opportunity;
+關押 < put\-in\-jail;
+大便乾燥 < constipated;
+裝甲車 < armored\-car;
+蠋 < caterpillar;
+不偏不倚 < even\-handed;
+蟛 < a\-land\-crab;
+灌溉 < to\-irrigate;
+通告 < to\-announce;
+蝛 < the\-sow\-bug;
+蝍 < a\-centipede;
+驕陽 < blazing\-sun;
+前任 < predecessor;
+藚 < water\-plant;
+分散注意 < to\-distract;
+藄 < edible\-fern;
+軟碟 < floppy\-disk;
+蓪 < paper\-plant;
+蓂 < lucky\-place;
+蒭 < to\-cutgrass;
+萐 < lucky\-plant;
+菢 < to\-incubate;
+獲益者 < beneficiary;
+屏門 < screen\-door;
+拜訪 < pay\-a\-visit;
+半透明 < translucent;
+艗 < bow\-of\-junk;
+退出 < to\-withdraw;
+採煤 < coal\-mining;
+第一流 < first\-class;
+平凡 < commonplace;
+謀殺案 < murder\-case;
+括號 < parenthesis;
+胔 < rotten\-meat;
+肈 < to\-commence;
+聦 < the\-hearing;
+耑 < specialized;
+羖 < a\-black\-ram;
+獎學金 < scholarship;
+罱 < fishing\-net;
+滲透 < to\-permeate;
+罠 < animal\-trap;
+罒 < radical\-122;
+偷聽 < to\-evesdrop;
+出兵 < send\-troops;
+培土 < to\-earth\-up;
+開戰 < start\-a\-war;
+分佈 < distributed;
+迷人 < fascinating;
+不動產 < real\-estate;
+糢 < rice\-snacks;
+出來 < to\-come\-out;
+信道 < signal\-path;
+啟示錄 < revelations;
+簹 < tall\-bamboo;
+簵 < fine\-bamboo;
+簰 < bamboo\-raft;
+魔法 < enchantment;
+申請 < apply\-\(for\);
+第三方 < third\-party;
+筩 < bamboo\-pipe;
+筊 < bamboo\-rope;
+筇 < bamboo\-name;
+跑車 < racing\-bike;
+笯 < a\-bird\-cage;
+表蒙子 < watch\-glass;
+擺架子 < put\-on\-airs;
+窸 < faint\-sound;
+不確定 < uncertainty;
+八年 < eight\-years;
+穵 < deep\-hollow;
+超級市場 < supermarket;
+磹 < stone\-wedge;
+碔 < \/2\-pr\-stone;
+籌款 < fundraising;
+域名 < domain\-name;
+砃 < white\-stone;
+瞵 < to\-stare\-at;
+古典派 < classicists;
+八字 < character\-8;
+相似 < to\-resemble;
+挪用 < to\-embezzle;
+可行性 < feasibility;
+眥 < eye\-sockets;
+眑 < sunken\-eyes;
+眊 < dim\-sighted;
+瘚 < to\-hiccough;
+痳 < pock\-marked;
+痭 < menorrhagia;
+痃 < indigestion;
+裝扮 < dress\-up\-as;
+城區 < city\-proper;
+溝通 < communicate;
+為了 < in\-order\-to;
+白宮 < white\-house;
+合法化 < to\-legalize;
+冠冕 < royal\-crown;
+珽 < jade\-tablet;
+像樣 < presentable;
+巧合 < coincidence;
+狢 < animal\-name;
+戰車 < war\-chariot;
+探照燈 < searchlight;
+安寧片 < meprobamate;
+白夜 < white\-night;
+是不是 < is\-or\-isn''t;
+花店 < flower\-shop;
+便覽 < brief\-guide;
+燖 < reheat\-food;
+舊版 < old\-version;
+多工器 < multiplexer;
+煟 < bright\-room;
+煏 < dry\-by\-fire;
+煆 < raging\-fire;
+因此 < that\-is\-why;
+潾 < clear\-water;
+勞動力 < labor\-force;
+語言學 < linguistics;
+潠 < to\-blow\-out;
+滷 < thick\-gravy;
+分期付款 < installment;
+瑞雪 < timely\-snow;
+渟 < not\-flowing;
+公元 < \(year\)\-a\.d\.;
+浡 < burst\-forth;
+幸運兒 < a\-lucky\-guy;
+沰 < to\-let\-drop;
+色情 < pornography;
+本質上 < essentially;
+地下水 < groundwater;
+申請書 < application;
+殰 < an\-abortion;
+白刃 < naked\-sword;
+發出 < to\-send\-out;
+教育性 < instructive;
+就職 < take\-office;
+繼承權 < inheritance;
+槢 < a\-hard\-wood;
+拔營 < strike\-camp;
+把穩 < trustworthy;
+梘 < bamboo\-tube;
+梖 < a\-palm\-tree;
+梄 < a\-soft\-wood;
+世界貿易 < world\-trade;
+舒服 < comfortable;
+昜 < to\-open\-out;
+昉 < bright\-dawn;
+旉 < to\-state\-to;
+手續 < formalities;
+按期 < on\-schedule;
+摎 < to\-strangle;
+敗家子 < spendthrift;
+踩水 < tread\-water;
+宣言 < declaration;
+莎士比亞 < shakespeare;
+局限性 < limitations;
+慉 < to\-bring\-up;
+售貨員 < salesperson;
+可尊敬 < respectable;
+偷懶 < to\-goof\-off;
+鼻音 < nasal\-sound;
+非數字 < non\-numeric;
+徻 < a\-wide\-room;
+困境 < predicament;
+爆米花 < puffed\-rice;
+三十天 < thirty\-days;
+滲濾 < percolation;
+弰 < ends\-of\-bow;
+四分之一 < one\-quarter;
+病容 < sickly\-look;
+成績 < performance;
+人間 < man''s\-world;
+端站 < end\-station;
+茅屋頂 < thatch\-roof;
+衍射 < diffraction;
+崪 < rocky\-peaks;
+回報 < \(in\)\-return;
+三十四 < thirty\-four;
+屰 < disobedient;
+屝 < straw\-shoes;
+尜 < a\-child\-toy;
+器官捐獻者 < organ\-donor;
+訊框傳送 < frame\-relay;
+性伴侶 < sex\-partner;
+嬔 < baby\-rabbit;
+或稱 < also\-called;
+乳白色 < milky\-white;
+畫插圖者 < illustrator;
+第二次世界大戰 < world\-war\-2;
+高壓 < high\-handed;
+塿 < small\-mound;
+仲裁 < arbitration;
+堊 < white\-earth;
+垝 < dilapidated;
+垔 < to\-restrain;
+值得 < to\-be\-worth;
+異常 < exceptional;
+鑽孔 < bore\-a\-hole;
+蓋然性 < probability;
+文件服務器 < file\-server;
+當局 < authorities;
+喎 < a\-wry\-mouth;
+高唱 < sing\-loudly;
+越南戰爭 < vietnam\-war;
+唹 < to\-smile\-at;
+介詞 < preposition;
+可能性 < possibility;
+咅 < to\-spit\-out;
+舞劇 < dance\-drama;
+叻 < place\-names;
+厾 < lightly\-tap;
+傑出 < illustrious;
+疆場 < battlefield;
+登山家 < mountaineer;
+信服 < to\-convince;
+匯 < a\-concourse;
+勠 < join\-forces;
+無所不在 < omnipresent;
+劼 < be\-discreet;
+脾氣 < temperament;
+不出所料 < as\-expected;
+上齒 < upper\-teeth;
+慰藉 < consolation;
+剦 < to\-castrate;
+板規 < plate\-gauge;
+凩 < wintry\-wind;
+病人 < sick\-person;
+鑒定 < to\-appraise;
+世界和平 < world\-piece;
+備件 < spare\-parts;
+哲學家 < philosopher;
+生成 < be\-produced;
+便桶 < chamber\-pot;
+傏 < to\-ward\-off;
+脫氧 < deoxidation;
+情願 < willingness;
+生態 < way\-of\-life;
+指出 < to\-indicate;
+俛 < make\-effort;
+系列片 < film\-series;
+阿富汗 < afghanistan;
+佹 < depend\-upon;
+洛杉磯 < los\-angeles;
+扁桃 < almond\-tree;
+跋扈 < domineering;
+䶪 < sharp\-teeth;
+陰涼處 < shady\-place;
+修復 < restoration;
+䵴 < black\-color;
+䵳 < light\-black;
+䵩 < dark\-yellow;
+筆心 < pencil\-lead;
+䲻 < the\-swallow;
+信息 < information;
+䱽 < the\-pomfret;
+䱺 < a\-male\-crab;
+䱒 < salted\-fish;
+轉來轉去 < rove\-around;
+不顧 < in\-spite\-of;
+䮘 < young\-horse;
+立法 < legislation;
+對方 < counterpart;
+空白 < blank\-space;
+男女 < male\-female;
+䫳 < human\-skull;
+䫰 < sparse\-hair;
+䫭 < bald\-headed;
+針鋒相對 < tit\-for\-tat;
+䫄 < better\-than;
+䪴 < the\-occiput;
+伸縮性 < flexibility;
+䪄 < great\-blaze;
+䩻 < to\-be\-chief;
+䩜 < descendants;
+閉會祈禱 < benediction;
+䨱 < spilt\-water;
+䧓 < a\-big\-mound;
+䦷 < to\-struggle;
+當做 < to\-treat\-as;
+䦘 < a\-threshold;
+閉元音 < close\-vowel;
+䥀 < to\-pull\-out;
+䤭 < to\-ornament;
+䤅 < southerwood;
+跛子 < lame\-person;
+不可估量 < inestimable;
+五萬 < 50\-thousand;
+䠝 < to\-stand\-up;
+䠍 < at\-the\-feet;
+最大化 < to\-maximize;
+䟅 < to\-go\-ahead;
+䟁 < a\-foot\-race;
+䞽 < to\-lie\-flat;
+䞨 < half\-a\-pace;
+䞄 < to\-disperse;
+䝀 < garden\-peas;
+䜰 < deep\-valley;
+保存 < to\-conserve;
+䜗 < angry\-words;
+䜆 < hasty\-words;
+䛘 < to\-think\-of;
+䚳 < do\-not\-know;
+䚲 < to\-laugh\-at;
+淘神 < troublesome;
+䙾 < to\-wait\-for;
+䙱 < a\-long\-coat;
+䙰 < new\-feather;
+䙂 < short\-pants;
+筆墨 < pen\-and\-ink;
+䗖 < the\-rainbow;
+薑餅 < gingerbread;
+第十七 < seventeenth;
+䕸 < wheat\-straw;
+溫度 < temperature;
+䔿 < lush\-growth;
+跑壘 < baserunning;
+開放系統 < open\-system;
+蜜桃 < honey\-peach;
+鑒于 < in\-light\-of;
+䒋 < air\-current;
+可驚 < astonishing;
+有限公司 < corporation;
+空間探測 < space\-probe;
+䐚 < good\-graces;
+䏶 < the\-stomach;
+䏔 < to\-eat\-meat;
+便宜 < inexpensive;
+哲學上 < philosophic;
+否有效 < inefficient;
+不迭 < cannot\-cope;
+北朝鮮 < north\-korea;
+䌪 < to\-continue;
+䌦 < green\-color;
+吉爾吉斯斯坦 < kirghizstan;
+手寫 < handwriting;
+䊭 < to\-overturn;
+䊫 < coarse\-rice;
+䊢 < thick\-fluid;
+䊓 < to\-paste\-up;
+下載 < to\-download;
+䉝 < bamboo\-ware;
+䈸 < a\-big\-chest;
+踏上 < set\-foot\-on;
+䆳 < far\-distant;
+䆘 < acupuncture;
+䆖 < a\-big\-house;
+䅄 < long\-grains;
+䄽 < common\-rice;
+䃭 < a\-stone\-box;
+環形 < ring\-shaped;
+䂱 < to\-wear\-out;
+䂓 < regulations;
+䁻 < pretty\-eyes;
+䁷 < bright\-eyes;
+䁱 < hollow\-eyed;
+佈景 < \(stage\)\-set;
+䀂 < a\-big\-basin;
+基礎問題 < basic\-issue;
+㿣 < white\-color;
+㿘 < to\-get\-sick;
+㾺 < eye\-disease;
+㾝 < to\-leak\-out;
+騷動 < disturbance;
+㾈 < hunchbacked;
+㾃 < hump\-backed;
+㽪 < paddy\-field;
+悲觀 < pessimistic;
+口香糖 < chewing\-gum;
+㼘 < of\-mountain;
+㼓 < melon\-seeds;
+西乃山 < mount\-sinai;
+㻓 < a\-fine\-jade;
+美貌 < goodlooking;
+麻藥 < anaesthetic;
+㹠 < a\-small\-big;
+邁阿密灘 < miami\-beach;
+㸠 < thick\-stick;
+小型 < small\-scale;
+㵤 < to\-overflow;
+㴘 < to\-ooze\-out;
+金屬板 < metal\-plate;
+㲰 < a\-hairy\-dog;
+㰲 < to\-blow\-off;
+㯈 < small\-trees;
+題詞 < inscription;
+㮝 < angle\-steel;
+㭴 < the\-oscines;
+㭎 < a\-tall\-tree;
+趣味 < to\-interest;
+信仰 < firm\-belief;
+㬩 < a\-tiny\-star;
+股東 < stockholder;
+鎮壓 < suppression;
+㫘 < disappeared;
+板牙 < front\-tooth;
+泳褲 < swim\-trunks;
+同質 < homogeneous;
+㩅 < to\-draw\-out;
+兩百萬 < two\-million;
+㨵 < to\-cut\-away;
+㨴 < to\-turnover;
+㨕 < to\-shoulder;
+環境 < environment;
+㧔 < to\-disturbe;
+修理廠 < repair\-shop;
+㦒 < to\-deceived;
+㤡 < to\-surprise;
+㤕 < melancholoy;
+㤁 < to\-disgrace;
+㣾 < do\-not\-care;
+㣵 < to\-run\-away;
+㣥 < to\-store\-up;
+㢓 < to\-separate;
+果汁 < fruit\-juice;
+耕畜 < farm\-animal;
+增長率 < growth\-rate;
+重返 < return\-\(to\);
+丟臉 < humiliation;
+㝴 < a\-round\-off;
+㝔 < deep\-bottom;
+我國 < our\-country;
+㜣 < a\-last\-name;
+㜎 < slave\-girls;
+㛑 < three\-women;
+㚾 < to\-have\-fun;
+玻意耳定律 < boyle''s\-law;
+㘶 < a\-hen\-roost;
+身心爽快 < refreshment;
+㘥 < to\-inveigle;
+佈局 < arrangement;
+他們都 < all\-of\-them;
+變通 < be\-flexible;
+鼻涕 < nasal\-mucus;
+㖽 < to\-call\-out;
+貸款 < \(bank\)\-loan;
+㖑 < to\-shout\-at;
+㔼 < to\-fit\-into;
+㔶 < a\-small\-cup;
+㔏 < to\-cut\-open;
+㓩 < horned\-hair;
+準備 < preparation;
+㒨 < an\-immortal;
+安康 < good\-health;
+預計 < to\-forecast;
+祭司權術 < priestcraft;
+類似點 < resemblance;
+量詞 < meaure\-word;
+雙人房 < double\-room;
+名著 < masterpiece;
+美術館 < art\-gallery;
+任意 < arbitrarily;
+安家 < settle\-down;
+饒恕 < forgiveness;
+宇宙 < outer\-space;
+瑞士 < switzerland;
+在這期間 < during\-time;
+喇叭 < loudspeaker;
+約伯記 < book\-of\-job;
+無法忍受 < intolerable;
+悲喜劇 < tragicomedy;
+駁倒 < demolish\-sb;
+半封建 < semi\-feudal;
+浴池 < public\-bath;
+反動分子 < reactionary;
+實質性 < substantive;
+變壓器 < transformer;
+使用方便 < easy\-to\-use;
+奔馳 < run\-quickly;
+現年 < current\-age;
+無法形容 < unspeakable;
+蘋果汁 < apple\-juice;
+示範 < demonstrate;
+交換 < to\-exchange;
+藥物 < medicaments;
+有同情心 < sympathetic;
+暗記兒 < secret\-mark;
+鄙陋 < superficial;
+夜鶯 < nightingale;
+餐廳 < dining\-hall;
+威脅 < to\-threaten;
+空前 < unprecedent;
+預約 < reservation;
+碰見 < to\-run\-into;
+查出 < to\-find\-out;
+半邊 < half\-of\-sth;
+暗示 < drop\-a\-hint;
+交往 < association;
+配送者 < distributor;
+書法 < calligraphy;
+金銀花 < honeysuckle;
+元老院 < upper\-house;
+卓越 < distinction;
+股價 < stock\-price;
+九月 < ninth\-month;
+主權 < sovereignty;
+可想像 < conceivable;
+多餘 < superfluous;
+聽取 < hear\-\(news\);
+感性 < sensibility;
+商人 < businessman;
+禁止 < to\-prohibit;
+秉承 < take\-orders;
+售價 < to\-sell\-for;
+嬌媚 < flirtatious;
+頁碼 < page\-number;
+交媾 < to\-have\-sex;
+上流 < upper\-class;
+信用卡 < credit\-card;
+霸道 < overbearing;
+波瀾 < great\-waves;
+不止 < incessantly;
+爭議 < controversy;
+中東 < middle\-east;
+女管家 < housekeeper;
+一千四百億 < 140\-billion;
+丹方 < folk\-remedy;
+重疊 < overlapping;
+中日 < china\-japan;
+自由選擇權 < free\-agency;
+喜歡吵架 < quarrelsome;
+有害的 < destructive;
+重現 < to\-reappear;
+模糊邏輯 < fuzzy\-logic;
+靶船 < target\-ship;
+千萬 < ten\-million;
+一月 < first\-month;
+犯病 < to\-fall\-ill;
+同步 < synchronous;
+哺乳 < breast\-feed;
+主張 < to\-advocate;
+婚期 < wedding\-day;
+暗殺 < assassinate;
+主席 < chairperson;
+危篤 < deathly\-ill;
+互動 < interactive;
+天然氣 < natural\-gas;
+供血者 < blood\-donor;
+中年 < middle\-aged;
+營養品 < nourishment;
+貝丘 < shell\-mound;
+意向 < disposition;
+適應性 < suitability;
+沈澱 < precipitate;
+天文台 < observatory;
+鑿石場 < rock\-quarry;
+就﹍而言 < considering;
+三年 < three\-years;
+𡽱 < a\-high\-hill;
+上層 < upper\-layer;
+壯觀 < spectacular;
+有選舉權 < constituent;
+政變 < coup\-d''etat;
+神學 < theological;
+測驗結果 < test\-result;
+合影 < joint\-photo;
+如畫 < picturesque;
+不堪 < cannot\-bear;
+終點 < destination;
+爆竹 < firecracker;
+管家職務 < stewardship;
+小汽車 < compact\-car;
+特權 < prerogative;
+螺絲刀 < screwdriver;
+狗交媾般 < doggy\-style;
+分離 < to\-seperate;
+副作用 < side\-effect;
+禁令 < prohibition;
+不免 < unavoidable;
+誓約 < honor\-bound;
+證書 < credentials;
+沈思 < contemplate;
+解釋 < explanation;
+礁島 < reef\-island;
+榮獲諾貝爾獎 < nobel\-prize;
+二十億 < two\-billion;
+迎風 < in\-the\-wind;
+移植性 < portability;
+如此 < in\-this\-way;
+悠久 < established;
+專有名詞 < proper\-noun;
+上下 < up\-and\-down;
+二十五 < twenty\-five;
+朋比為奸 < to\-conspire;
+搬弄是非 < sow\-discord;
+的 < possessive;
+込 < crowd\-into;
+辻 < crossroads;
+能 < to\-be\-able;
+都 < metropolis;
+文 < literature;
+轍 < wagon\-ruts;
+輩 < generation;
+眩 < to\-confuse;
+眠 < close\-eyes;
+輝 < brightness;
+弐 < number\-two;
+者 < that\-which;
+业 < profession;
+府 < prefecture;
+政 < government;
+产 < give\-birth;
+场 < open\-space;
+比 < to\-compare;
+疲 < feel\-tired;
+画 < a\-painting;
+望 < to\-look\-at;
+賺 < make\-money;
+六 < number\-six;
+屡 < frequently;
+尤 < especially;
+專 < monopolize;
+基 < foundation;
+双 < set\-of\-two;
+孫 < grandchild;
+嬪 < court\-lady;
+离 < rare\-beast;
+媒 < go\-between;
+誌 < write\-down;
+誇 < exaggerate;
+响 < make\-sound;
+婿 < son\-in\-law;
+爭 < to\-dispute;
+器 < receptacle;
+營 < encampment;
+妙 < mysterious;
+胡 < recklessly;
+妓 < prostitute;
+襦 < short\-coat;
+壱 < number\-one;
+郭 < outer\-part;
+讨 < to\-discuss;
+滅 < extinguish;
+虜 < to\-capture;
+积 < accumulate;
+菜 < vegetables;
+嗣 < to\-connect;
+嗜 < be\-fond\-of;
+介 < forerunner;
+索 < large\-rope;
+丁 < male\-adult;
+遍 < everywhere;
+蒔 < transplant;
+懂 < understand;
+释 < interprete;
+纵 < indulge\-in;
+歴 < take\-place;
+仁 < humaneness;
+檀 < sandalwood;
+削 < scrape\-off;
+刑 < punishment;
+岂 < how\?\-what\?;
+隆 < prosperous;
+刃 < edged\-tool;
+析 < split\-wood;
+腸 < intestines;
+楓 < maple\-tree;
+餅 < rice\-cakes;
+傍 < by\-side\-of;
+栓 < wooden\-peg;
+凯 < triumphant;
+恭 < respectful;
+祸 < misfortune;
+禅 < meditation;
+柯 < axe\-handle;
+捐 < contribute;
+踪 < footprints;
+屁 < break\-wind;
+谊 < friendship;
+储 < save\-money;
+雁 < wild\-goose;
+摊 < spread\-out;
+吨 < metric\-ton;
+乍 < first\-time;
+陀 < steep\-bank;
+綿 < cotton\-wad;
+綱 < heavy\-rope;
+抑 < press\-down;
+彬 < cultivated;
+撮 < little\-bit;
+粥 < rice\-gruel;
+蛮 < barbarians;
+箸 < chopsticks;
+筵 < bamboo\-mat;
+艇 < small\-boat;
+捌 < break\-open;
+笠 < bamboo\-hat;
+庞 < disorderly;
+竝 < to\-combine;
+扉 < door\-panel;
+坝 < embankment;
+憧 < irresolute;
+甩 < throw\-away;
+酌 < serve\-wine;
+磐 < large\-rock;
+辅 < cheek\-bone;
+捡 < to\-pick\-up;
+蹈 < stamp\-feet;
+晒 < dry\-in\-sun;
+歼 < annihilate;
+涩 < astringent;
+霎 < light\-rain;
+绸 < silk\-cloth;
+眯 < be\-blinded;
+寅 < to\-respect;
+眶 < eye\-socket;
+碟 < small\-dish;
+蕴 < to\-collect;
+迭 < repeatedly;
+旭 < rising\-sun;
+悍 < courageous;
+枢 < door\-hinge;
+跋 < go\-by\-foot;
+圪 < \(phonetic\);
+搔 < to\-scratch;
+嚎 < cry\-loudly;
+汛 < high\-water;
+脯 < dried\-meat;
+嗒 < to\-despair;
+墟 < high\-mound;
+馋 < gluttonous;
+蹭 < to\-shuffle;
+澈 < thoroughly;
+缭 < wind\-round;
+喳 < whispering;
+弧 < wooden\-bow;
+惆 < distressed;
+撵 < drive\-away;
+轶 < rush\-forth;
+窿 < mine\-shaft;
+樵 < woodcutter;
+犀 < rhinoceros;
+绚 < variegated;
+藕 < lotus\-root;
+摞 < to\-pile\-up;
+滤 < strain\-out;
+缈 < indistinct;
+肪 < animal\-fat;
+甄 < to\-examine;
+铛 < frying\-pan;
+嫡 < legal\-wife;
+磷 < phosphorus;
+翡 < kingfisher;
+霭 < cloudy\-sky;
+舫 < fancy\-boat;
+纨 < white\-silk;
+榷 < footbridge;
+蔗 < sugar\-cane;
+彗 < broomstick;
+喟 < heave\-sigh;
+喑 < to\-be\-dumb;
+鱿 < cuttlefish;
+倜 < raise\-high;
+滂 < torrential;
+忻 < delightful;
+燧 < flintstone;
+稔 < ripe\-grain;
+颉 < fly\-upward;
+舸 < large\-boat;
+眙 < to\-gaze\-at;
+瘀 < a\-hematoma;
+夯 < heavy\-load;
+鲠 < fish\-bones;
+茏 < tall\-grass;
+茯 < china\-root;
+鲧 < giant\-fish;
+逦 < meandering;
+骜 < wild\-horse;
+欹 < fierce\-dog;
+缛 < decorative;
+苕 < rush\-plant;
+顸 < large\-face;
+缦 < plain\-silk;
+帙 < book\-cover;
+鳃 < fish\-gills;
+醴 < sweet\-wine;
+辊 < turn\-round;
+岘 < steep\-hill;
+倬 < noticeable;
+鲞 < dried\-fish;
+缁 < black\-silk;
+箧 < rattan\-box;
+墁 < to\-plaster;
+罴 < brown\-bear;
+爰 < lead\-on\-to;
+杲 < bright\-sun;
+癔 < hysterical;
+莜 < avena\-nuda;
+埙 < instrument;
+獾 < the\-badger;
+郫 < place\-name;
+蛏 < razor\-clam;
+帑 < a\-treasury;
+揠 < to\-pull\-up;
+趑 < can''t\-move;
+阍 < gatekeeper;
+掊 < to\-extract;
+镝 < dysprosium;
+砗 < giant\-clam;
+嫫 < ugly\-woman;
+跗 < the\-instep;
+浼 < to\-request;
+嗌 < the\-throat;
+汆 < to\-parboil;
+刭 < cut\-throat;
+髂 < the\-pelvis;
+钼 < molybdenum;
+憝 < to\-dislike;
+炅 < brilliance;
+隳 < to\-destroy;
+茛 < ranunculus;
+糇 < dried\-rice;
+钆 < gadolinium;
+澌 < to\-exhaust;
+庀 < to\-prepare;
+犴 < a\-wild\-dog;
+埏 < a\-boundary;
+谮 < to\-slander;
+縮短 < to\-curtail;
+改組 < reorganize;
+沒問題 < no\-problem;
+第五類 < category\-5;
+擁護 < to\-endorse;
+進行 < to\-advance;
+奔波 < rush\-about;
+後母 < stepmother;
+散發 < distribute;
+失火 < catch\-fire;
+誕生 < to\-be\-born;
+多爾 < \(bob\)\-dole;
+巴枯寧主義 < bakuninism;
+彼此 < each\-other;
+預先 < beforehand;
+關門 < close\-down;
+違背 < to\-violate;
+冰染染料 < azoic\-dyes;
+統計 < statistics;
+函購 < mail\-order;
+壁立 < \(of\-cliffs;
+春季 < springtime;
+頒佈 < promulgate;
+每次 < every\-time;
+編程 < to\-program;
+分詞 < participle;
+後期 < late\-stage;
+效用 < usefulness;
+糧食 < foodstuffs;
+荒野 < wilderness;
+撒謊 < tell\-a\-lie;
+燃燒 < combustion;
+弄直 < straighten;
+遷移 < to\-migrate;
+非官方 < unofficial;
+大氣 < atmosphere;
+認為 < to\-believe;
+降落 < to\-descend;
+前者 < the\-former;
+效率 < efficiency;
+靶心 < bull''s\-eye;
+國民黨 < kuomintang;
+勃然 < agitatedly;
+講師 < instructor;
+取代 < substitute;
+新教 < protestant;
+多次 < many\-times;
+奇數 < odd\-number;
+必將 < inevitably;
+陰精 < sex\-fluids;
+白色體 < leucoplast;
+妖嬈 < enchanting;
+不耐煩 < impatience;
+百分率 < percentage;
+繼承 < to\-inherit;
+令牌環 < token\-ring;
+操縱 < to\-operate;
+全面 < all\-around;
+四個小時 < four\-hours;
+厘升 < centiliter;
+調整 < adjustment;
+荒謬 < ridiculous;
+自白書 < confession;
+展覽會 < exhibition;
+白頭 < hoary\-head;
+天文學家 < astronomer;
+決不 < not\-at\-all;
+說明 < to\-explain;
+眼花繚亂 < be\-dazzled;
+魯佛爾宮 < the\-louvre;
+出色 < remarkable;
+不堪忍受 < unbearable;
+高速率 < high\-speed;
+免除 < to\-prevent;
+妥協 < compromise;
+巨輪 < large\-ship;
+照片 < photograph;
+附筆 < postscript;
+親自 < personally;
+說不出話來 < speechless;
+娛樂中心 < recreation;
+改正 < to\-correct;
+大城市 < major\-city;
+自由貿易 < free\-trade;
+半圓 < semicircle;
+爭奪 < fight\-over;
+短期 < short\-term;
+每年 < every\-year;
+喬治敦 < georgetown;
+三分之二 < two\-thirds;
+傳道者 < missionary;
+敵手 < antagonist;
+印像 < impression;
+不可能 < impossible;
+精通 < proficient;
+很大 < tremendous;
+白酒 < spirit\-usu;
+錄音帶 < audio\-tape;
+草莓 < strawberry;
+錫安山 < mount\-zion;
+塔吉克斯坦 < tajikistan;
+報章 < newspapers;
+多年 < many\-years;
+語彙 < vocabulary;
+早先 < previously;
+總統任期 < presidency;
+牌價 < list\-price;
+巫術 < witchcraft;
+過渡 < transition;
+探險 < to\-explore;
+大學 < university;
+無理 < irrational;
+半價 < half\-price;
+區別 < difference;
+關聯 < be\-related;
+硬磁盤 < hard\-drive;
+地震 < earthquake;
+觀眾 < spectators;
+排隊 < to\-line\-up;
+攪擾 < to\-disturb;
+不可逾越 < impassable;
+數學 < mathematic;
+熱心 < enthusiasm;
+加利福尼亞 < california;
+歷史上 < historical;
+記帳員 < bookkeeper;
+電子 < electronic;
+白話 < vernacular;
+炸糕 < fried\-cake;
+散射 < scattering;
+蓋世 < unrivelled;
+編排 < to\-arrange;
+捕魚 < catch\-fish;
+允諾 < to\-promise;
+調和 < harmonious;
+後來 < afterwards;
+使失望 < disappoint;
+大喜 < exultation;
+設施 < facilities;
+方便 < convenient;
+此後 < after\-this;
+座標 < coordinate;
+經歷 < experience;
+樂觀 < optimistic;
+太古 < immemorial;
+離婚 < to\-divorce;
+教堂墓地 < churchyard;
+龢 < in\-harmony;
+燈塔 < lighthouse;
+出版 < to\-publish;
+兵船 < man\-of\-war;
+行政長官 < magistrate;
+鼧 < the\-marmot;
+鼄 < the\-spider;
+黹 < embroidery;
+黲 < grey\-black;
+黤 < blue\-black;
+傷風 < catch\-cold;
+放射 < to\-radiate;
+比例 < proportion;
+鸺 < horned\-owl;
+隨後 < soon\-after;
+前景 < foreground;
+遷延 < long\-delay;
+補語 < complement;
+鵒 < mynah\-bird;
+鴷 < woodpecker;
+加密 < to\-encrypt;
+整合 < to\-conform;
+承包人 < contractor;
+違抗 < to\-disobey;
+監督 < to\-control;
+鳲 < turtledove;
+文具 < stationery;
+每人 < per\-person;
+物質上 < materially;
+鲰 < small\-fish;
+防水 < waterproof;
+鱇 < anglerfish;
+貴族論者 < aristocrat;
+半公開 < semi\-overt;
+使免除 < get\-rid\-of;
+更衣室 < changeroom;
+鮁 < the\-bonito;
+退步 < degenerate;
+適度 < moderately;
+魛 < the\-mullet;
+遠征 < expedition;
+鬨 < boisterous;
+鬜 < to\-go\-bald;
+白臉 < white\-face;
+總共 < altogether;
+髣 < similar\-to;
+髁 < thigh\-bone;
+解析 < to\-analyze;
+騗 < to\-swindle;
+騋 < tall\-horse;
+騉 < fine\-horse;
+駰 < grey\-horse;
+馹 < post\-horse;
+試圖 < to\-attempt;
+艦載 < ship\-based;
+知名 < well\-known;
+多事 < meddlesome;
+冰球 < ice\-hockey;
+解放 < liberation;
+鞡 < leg\-warmer;
+靝 < the\-heaven;
+偽頂 < false\-roof;
+高階 < high\-level;
+捏造 < to\-make\-up;
+隮 < ti\-rise\-up;
+陻 < small\-hill;
+新聞記者 < journalist;
+擁抱 < to\-embrace;
+零下 < below\-zero;
+闟 < peacefully;
+鞭闢入裡 < penetrated;
+超媒體 < hypermedia;
+镚 < small\-coin;
+锬 < long\-spear;
+不明確 < indefinite;
+钷 < promethium;
+放出 < to\-let\-off;
+鐶 < metal\-ring;
+鐚 < soft\-steel;
+公石 < hectoliter;
+鐒 < lawrencium;
+鐀 < a\-cupboard;
+不景氣 < depression;
+他們自己 < themselves;
+資本家 < capitalist;
+鎪 < to\-engrave;
+鎛 < large\-bell;
+報數 < number\-off;
+鍀 < technetium;
+收入 < to\-take\-in;
+詞典 < dictionary;
+設在 < located\-at;
+限度 < limitation;
+裱糊 < wall\-paper;
+鈊 < cadolinium;
+醡 < wine\-press;
+醝 < white\-wine;
+檢查 < inspection;
+酅 < raise\-feet;
+阿塞拜疆 < azerbaijan;
+瀆職 < wrongdoing;
+庇廕 < \(of\-a\-tree;
+二手貨 < secondhand;
+陰天 < cloudy\-day;
+終於 < eventually;
+訂婚 < engagement;
+陸基 < land\-based;
+邏輯炸彈 < logic\-bomb;
+廚司 < cook\,\-chef;
+傳說 < it\-is\-said;
+制定 < to\-draw\-up;
+易接近 < accessible;
+逬 < to\-scatter;
+速射 < rapid\-fire;
+遺傳 < hereditary;
+舉辦 < to\-conduct;
+利害 < formidable;
+躩 < take\-quick;
+入獄 < go\-to\-jail;
+米粉 < rice\-flour;
+圖解說明 < illustrate;
+不屈不撓 < unyielding;
+踧 < uneasiness;
+踜 < to\-stumble;
+踖 < trample\-on;
+農村 < rural\-area;
+想像力 < conception;
+跐 < to\-trample;
+副刊 < supplement;
+有決心 < determined;
+橄欖樹 < olive\-tree;
+操場 < playground;
+基於 < because\-of;
+衍變 < to\-develop;
+全然 < completely;
+大腦死亡 < brain\-dead;
+團聚 < to\-reunite;
+豀 < to\-quarrel;
+爭論點 < contention;
+白狐 < arctic\-fox;
+擁塞 < congestion;
+討厭 < disgusting;
+謪 < to\-consult;
+白熾 < white\-heat;
+複雜性 < complexity;
+白熊 < polar\-bear;
+白煤 < anthracite;
+倚靠 < to\-lean\-on;
+幼女 < young\-girl;
+觀察 < to\-observe;
+使用者中介 < user\-agent;
+兵法 < art\-of\-war;
+當選 < be\-elected;
+覸 < steal\-look;
+監控 < to\-monitor;
+結局 < conclusion;
+裪 < the\-sleeve;
+欠佳 < suboptimal;
+週到 < thoughtful;
+規律 < discipline;
+蟫 < silverfish;
+蟣 < louse\-eggs;
+管轄 < administer;
+蟁 < a\-mosquito;
+胡思亂想 < imaginings;
+奶牛場 < dairy\-farm;
+樹樁 < tree\-stump;
+襯托 < to\-set\-off;
+蛜 < wood\-louse;
+操典 < drill\-book;
+跑馬 < horse\-race;
+薧 < dried\-food;
+檢察 < to\-inspect;
+蕡 < hemp\-seeds;
+巨星 < giant\-star;
+字節數 < byte\-count;
+蓷 < motherwort;
+附加 < additional;
+蒽 < anthracene;
+蒦 < to\-measure;
+蒖 < plant\-name;
+一切事物 < everything;
+葯 < orris\-root;
+歌羅西書 < colossians;
+相對 < relatively;
+無價 < invaluable;
+搏斗 < to\-wrestle;
+荵 < polemonium;
+出生地 < birthplace;
+不由自主 < can''t\-help;
+拜託 < request\-sb;
+排球 < volleyball;
+店主 < shop\-owner;
+不下于 < as\-many\-as;
+瓶頸 < bottleneck;
+幫助 < assistance;
+脪 < erysipelas;
+脗 < coinciding;
+幫凶 < accomplice;
+公撮 < milliliter;
+肦 < large\-head;
+籃球 < basketball;
+抱負 < aspiration;
+曼徹斯特 < manchester;
+伽馬射線 < gamma\-rays;
+大媒體 < macromedia;
+算術 < arithmetic;
+推測 < conjecture;
+要塞 < stronghold;
+白旗 < white\-flag;
+滿足 < to\-satisfy;
+驅逐 < banishment;
+極為龐大 < monumental;
+繐 < fine\-cloth;
+備忘錄 < memorandum;
+縇 < decoration;
+表示 < to\-express;
+挨個兒 < one\-by\-one;
+農園 < plantation;
+兄弟會 < fraternity;
+留聲機 < gramophone;
+絺 < fine\-linen;
+有利可圖 < profitable;
+絛 < silk\-braid;
+絖 < fine\-silks;
+絓 < obstructed;
+投資 < investment;
+粻 < provisions;
+無所不能 < omnipotent;
+看到 < see\-\(that\);
+提昇 < to\-promote;
+哈薩克斯坦 < kazakhstan;
+簥 < large\-pipe;
+分離主義 < separatism;
+兌換 < to\-convert;
+世界銀行 < world\-bank;
+黑莓子 < blackberry;
+篋 < ratton\-box;
+箠 < horse\-whip;
+箚 < brief\-note;
+公引 < hectometer;
+窰 < brick\-kiln;
+專門 < specialist;
+穭 < wild\-grain;
+看來 < apparently;
+臉色 < complexion;
+草叢 < underbrush;
+兼容 < compatible;
+在下面 < underneath;
+祅 < calamities;
+不變化 < invariably;
+軍港 < naval\-port;
+按立 < ordination;
+生計 < livelihood;
+磑 < stone\-mill;
+掌櫃 < shopkeeper;
+表現 < expression;
+兩岸 < bilaterial;
+硃 < a\-red\-mole;
+共存 < to\-coexist;
+睟 < clear\-eyed;
+囚犯 < a\-prisoner;
+偉績 < great\-acts;
+衍生 < derviative;
+冰刀 < ice\-skates;
+接收 < to\-receive;
+技術 < technology;
+疕 < head\-sores;
+畓 < rice\-field;
+畁 < to\-give\-to;
+宿題 < assignment;
+陌生人 < a\-stranger;
+玔 < green\-jade;
+魚排 < fish\-steak;
+無所不知 < omniscient;
+指甲 < fingernail;
+開會祈禱 < invocation;
+學齡 < school\-age;
+犛 < a\-black\-ox;
+不適當 < inadequate;
+捨棄 < to\-give\-up;
+電視臺 < tv\-station;
+牏 < privy\-hole;
+爫 < radical\-87;
+使醉 < intoxicate;
+拘禁 < constraint;
+熅 < smooth\-out;
+國會 < parliament;
+領導能力 < leadership;
+超越 < to\-surpass;
+灺 < candle\-end;
+灒 < to\-spatter;
+推廣 < popularize;
+主力艦 < battleship;
+濙 < to\-revolve;
+濆 < river\-bank;
+佣金 < commission;
+白喉 < diphtheria;
+授意 < to\-inspire;
+公分 < centimeter;
+筆者 < the\-author;
+泆 < licentious;
+保育 < child\-care;
+白區 < white\-area;
+揹債 < be\-in\-debt;
+漫畫 < caricature;
+行不通 < won''t\-work;
+停火 < cease\-fire;
+競爭者 < competitor;
+良心 < conscience;
+櫾 < the\-pomelo;
+單調 < monotonous;
+檼 < ridge\-pole;
+表明 < make\-known;
+有系統 < systematic;
+沒人住 < unoccupied;
+榼 < wine\-glass;
+榦 < tree\-trunk;
+動物學 < zoological;
+椵 < pompelmous;
+椳 < the\-pivots;
+模仿 < to\-imitate;
+意見不合 < dissension;
+盧森堡 < luxembourg;
+發佈 < to\-release;
+第七十 < seventieth;
+栛 < the\-lichee;
+栘 < fruit\-tree;
+條約 < treatypact;
+導航 < navigation;
+排外 < xenophobic;
+導致 < to\-lead\-to;
+展示 < to\-open\-up;
+冰凝器 < cryophorus;
+尋舋 < to\-provoke;
+杢 < woodworker;
+先例 < antecedent;
+賓館 < guesthouse;
+樓下 < downstairs;
+斢 < to\-plunder;
+打結 < tie\-a\-knot;
+孟加拉國 < bangladesh;
+臆測 < assumption;
+心理學 < psychology;
+擪 < to\-tuck\-in;
+撱 < to\-shorten;
+氣喘喘 < breathless;
+拔河 < tug\-of\-war;
+第一例 < first\-case;
+生產 < to\-produce;
+補償 < compensate;
+掱 < pickpocket;
+掎 < drag\-aside;
+人體 < human\-body;
+胞衣 < afterbirth;
+挖掘 < excavation;
+四年 < four\-years;
+百分之九十 < 90\-percent;
+扡 < drag\-along;
+餐館 < restaurant;
+聖靈 < holy\-ghost;
+憸 < to\-flatter;
+指控 < accusation;
+憍 < be\-haughty;
+憀 < to\-rely\-on;
+引人注意 < attractive;
+手稿 < manuscript;
+抹油 < to\-annoint;
+愓 < profligate;
+表尺 < rear\-sight;
+惏 < avaricious;
+摩天摟 < skyscraper;
+畢業 < graduation;
+恛 < disordered;
+固執 < persistent;
+怲 < be\-anxious;
+彿 < resembling;
+查詢 < to\-inquire;
+弇 < cover\-over;
+廀 < to\-conceal;
+忘恩負義 < ungrateful;
+疑慮 < hesitation;
+喉舌 < mouthpiece;
+聯通 < connection;
+得不到 < cannot\-get;
+駐紮 < to\-station;
+簽出 < to\-log\-off;
+屄 < the\-vagina;
+重要性 < importance;
+餅鐺 < baking\-pan;
+宼 < tyrannical;
+技術員 < technician;
+鎗管 < gun\-barrel;
+媟 < lust\-after;
+鐵板 < iron\-panel;
+鏈環 < chain\-link;
+相同名字 < like\-named;
+竭盡 < exhaustion;
+軍人 < serviceman;
+使人信服 < convincing;
+老頭 < old\-fellow;
+周恩來 < zhou\-enlai;
+現象 < appearance;
+鎮痛 < analgesiac;
+堃 < compliance;
+有興趣 < interested;
+自尊 < self\-pride;
+定義 < definition;
+圦 < water\-gate;
+囌 < loquacious;
+嚲 < read\-aloud;
+不經意 < carelessly;
+競爭 < to\-compete;
+打字機 < typewriter;
+唽 < to\-twitter;
+實現 < to\-achieve;
+傷亡 < casualties;
+呴 < breathe\-on;
+倍增器 < multiplier;
+業余 < spare\-time;
+金屬線 < metal\-wire;
+行列 < procession;
+卝 < hair\-style;
+病假 < sick\-leave;
+期限 < time\-limit;
+劏 < to\-butcher;
+電子空間 < cyberspace;
+冘 < to\-move\-on;
+識別號 < identifier;
+把戲 < acrobatics;
+生有權 < birthright;
+偭 < transgress;
+偝 < not\-facing;
+消費 < to\-consume;
+持卡人 < cardholder;
+行人 < pedestrian;
+倀 < bewildered;
+毛澤東 < mao\-zedong;
+書面 < in\-writing;
+六十五 < sixty\-five;
+伷 < descendent;
+多媒體 < multimedia;
+節制 < temperance;
+抵抗力 < resistance;
+腐敗 < corruption;
+䶫 < fine\-teeth;
+䶉 < guinea\-pig;
+䵪 < pure\-black;
+䵝 < dark\-black;
+獸醫 < veterinary;
+微不足道 < negligible;
+做出 < to\-put\-out;
+作為 < accomplish;
+䳕 < the\-pigeon;
+䳌 < the\-cuckoo;
+折射 < refraction;
+䱝 < black\-carp;
+䱄 < a\-flatfish;
+喉炎 < laryngitis;
+䰬 < wild\-ghost;
+信心 < confidence;
+䰄 < short\-hair;
+䯔 < to\-incline;
+䯌 < the\-sacrum;
+珍藏 < collection;
+大主教 < archbishop;
+䮍 < curling\-up;
+䭸 < a\-stallion;
+試算表 < speadsheet;
+䬷 < well\-feed\.;
+聖職 < priesthood;
+䫥 < a\-wry\-neck;
+達賴喇嘛 < dalai\-lama;
+䪺 < teethridge;
+䪠 < pulverized;
+錶盤 < dial\-plate;
+䩱 < a\-scabbard;
+桃樹 < peach\-tree;
+白口鐵 < white\-iron;
+䩁 < thin\-hairs;
+單模 < singlemode;
+䨽 < to\-resolve;
+䨩 < the\-spirit;
+不揣冒昧 < venture\-to;
+䧿 < the\-magpie;
+䧣 < to\-stop\-up;
+想象 < to\-imagine;
+䦯 < very\-dense;
+下降 < to\-decline;
+䦍 < to\-include;
+䤾 < to\-contain;
+䤽 < farm\-tools;
+層壓 < lamination;
+第十八 < eighteenth;
+周速 < cycle\-time;
+暴風 < storm\-wind;
+實驗室 < laboratory;
+䡧 < a\-carriage;
+䡚 < implements;
+屬地 < dependency;
+䡎 < a\-windlass;
+䠸 < obsequious;
+䠶 < to\-project;
+䠩 < to\-urinate;
+䠟 < to\-trip\-up;
+漲價 < appreciate;
+䠘 < one\-legged;
+聖經 < holy\-bible;
+仿真 < to\-emulate;
+省略符號 < apostrophe;
+不對碴兒 < not\-proper;
+介紹 < to\-present;
+䟙 < to\-stagger;
+䟄 < in\-a\-hurry;
+䝿 < honourabel;
+䝷 < securities;
+䝱 < to\-trouble;
+䜙 < not\-clever;
+䜋 < to\-suspend;
+缺點 < weak\-point;
+䛲 < to\-deceive;
+䛦 < litigation;
+䛄 < to\-console;
+本行 < one''s\-line;
+滲坑 < sewage\-pit;
+競技 < tournament;
+第十九 < nineteenth;
+䖳 < jelly\-fish;
+鐵匠 < blacksmith;
+任用 < to\-appoint;
+板紙 < paperboard;
+第十三 < thirteenth;
+䕡 < compositae;
+機關車 < locomotive;
+保潔箱 < litter\-bin;
+䔘 < fish\-paste;
+老年人 < old\-people;
+䓵 < to\-blossom;
+波長 < wavelength;
+䓤 < vegetation;
+專心 < absorption;
+䓆 < to\-cut\-the;
+䒢 < sweet\-flag;
+發聲法 < intonation;
+䑭 < war\-vessel;
+䑍 < to\-swallow;
+䐢 < to\-wrinkle;
+䏭 < the\-cheeks;
+䏌 < to\-vibrate;
+䎟 < to\-fawn\-on;
+個別 < individual;
+會計 < accountant;
+䍵 < young\-goat;
+䍞 < a\-drag\-net;
+䍗 < to\-hang\-up;
+䍔 < a\-full\-net;
+意想不到 < unexpected;
+流血 < shed\-blood;
+肉片 < meat\-slice;
+䋱 < a\-wild\-yak;
+冰上運動 < ice\-sports;
+公開討論會 < open\-forum;
+䊩 < rice\-gravy;
+溫室 < greenhouse;
+美乃滋醬 < mayonnaise;
+不平凡 < marvellous;
+抑制 < to\-inhibit;
+䇎 < to\-startle;
+作料 < condiments;
+䇇 < the\-people;
+䆋 < the\-autumn;
+䅔 < dead\-crops;
+崑崙山 < mt\.\-kunlun;
+便壺 < bed\-urinal;
+䄟 < to\-worship;
+使怒 < exasperate;
+依屬 < dependence;
+䁞 < a\-province;
+䁁 < strabismus;
+等到 < wait\-until;
+小姐 < young\-lady;
+代表團 < delegation;
+㽨 < fragmented;
+㽣 < a\-frontier;
+㽘 < borderland;
+桌布 < tablecloth;
+㼹 < eartenware;
+背景 < background;
+不變 < unchanging;
+一貫 < consistent;
+㺳 < black\-mica;
+㺅 < the\-monkey;
+批准 < to\-approve;
+㸨 < a\-big\-bull;
+㸌 < to\-twinkle;
+㷷 < thick\-soup;
+㶭 < almost\-dry;
+㶜 < deep\-water;
+科系 < department;
+㵀 < water\-flow;
+愁緒 < melancholy;
+神話 < fairy\-tale;
+住所 < habitation;
+影像檔 < image\-file;
+㲯 < long\-hairy;
+顛覆 < subversion;
+㲌 < dog''s\-hair;
+㲉 < egg\-shells;
+㱦 < to\-discard;
+㱜 < pestilence;
+案子 < long\-table;
+㯇 < a\-stockade;
+居住者 < inhabitant;
+㬱 < to\-replace;
+㬪 < to\-fold\-up;
+㫤 < a\-long\-day;
+㪌 < to\-lead\-on;
+㩹 < to\-pile\-on;
+㩞 < to\-back\-up;
+㨯 < to\-enlarge;
+㨮 < to\-lift\-up;
+淘汰 < to\-die\-out;
+肥料 < fertilizer;
+㦂 < constantly;
+㥶 < to\-fill\-up;
+㥣 < to\-benefit;
+㤷 < to\-debauch;
+㤐 < disharmony;
+狡辯 < to\-quibble;
+㣽 < to\-forgive;
+㣅 < bow\-string;
+㣀 < to\-rebound;
+㢭 < a\-bow\-case;
+㢚 < a\-corridor;
+㢏 < a\-cesspool;
+㡥 < to\-curl\-up;
+暴行 < savage\-act;
+四百億 < 40\-billion;
+實在 < in\-reality;
+艾滋病病毒 < aids\-virus;
+㞠 < male\-organ;
+陸軍中尉 < lieutenant;
+㞎 < body\-waste;
+㝯 < to\-sojourn;
+㚠 < full\-grown;
+㙺 < cross\-road;
+超升 < exaltation;
+叛軍 < rebel\-army;
+㘧 < precedence;
+獸穴 < animal\-den;
+㗬 < thick\-lips;
+㗫 < to\-whisper;
+彪形大漢 < burly\-chap;
+警鐘 < alarm\-bell;
+㖆 < to\-condemn;
+胖子 < fat\-person;
+㕍 < to\-heap\-up;
+㕆 < fine\-stone;
+㔷 < to\-secrete;
+㔘 < to\-degrade;
+㔓 < to\-stammer;
+㔌 < to\-cut\-off;
+㓺 < castration;
+存放 < to\-deposit;
+餓死 < starvation;
+㒷 < to\-prosper;
+㐤 < to\-implore;
+萬事達卡 < mastercard;
+併吞 < swallow\-up;
+學徒 < apprentice;
+板樁 < sheet\-pile;
+否決權 < veto\-power;
+成分 < ingredient;
+崇拜者 < worshipper;
+悔罪 < conviction;
+能力 < capability;
+戲劇化 < theatrical;
+必須 < to\-have\-to;
+肯定 < to\-be\-sure;
+任性 < capricious;
+王牌 < trump\-card;
+新聞媒體 < news\-media;
+堅定不移 < unswerving;
+非盈利 < non\-profit;
+南面 < south\-side;
+使容易 < facilitate;
+研究員 < researcher;
+薄荷 < field\-mint;
+馬力 < horsepower;
+月球 < \(the\)\-moon;
+現成 < ready\-made;
+議論 < to\-comment;
+風濕 < rheumatism;
+群眾 < the\-masses;
+三月二十三號 < march\-23rd;
+此時以前 < heretofore;
+仁慈 < benevolent;
+目擊者 < eyewitness;
+今後 < henceforth;
+虛擬 < fictitious;
+專門化 < specialize;
+多黨 < multiparty;
+不當 < unsuitable;
+沈落 < sink\,\-fall;
+講述 < talk\-about;
+宣佈 < to\-declare;
+摩托車 < motorcycle;
+朝鮮戰爭 < korean\-war;
+鼓掌 < to\-applaud;
+以外 < apart\-from;
+訂購者 < subscriber;
+爆音 < sonic\-boom;
+大體 < in\-general;
+食指 < forefinger;
+牴觸 < contradict;
+程序 < procedures;
+明言 < pronounced;
+顯微鏡 < microscope;
+本月 < this\-month;
+原生質 < protoplasm;
+多方面 < many\-sided;
+哲學 < philosophy;
+氣象 < meteorolgy;
+互惠 < reciprocal;
+含燐 < phosphoric;
+更正 < correction;
+黑板 < blackboard;
+新聞學 < journalism;
+不定詞 < infinitive;
+預知 < anticipate;
+以及 < as\-well\-as;
+主格 < nominative;
+錄取 < to\-recruit;
+新郎 < bridegroom;
+而後 < after\-that;
+悲歌 < sad\-melody;
+人均 < per\-capita;
+可疑 < suspicious;
+而已 < that''s\-all;
+難以置信 < incredible;
+浴巾 < bath\-towel;
+吊燈 < chandelier;
+共和政體 < republican;
+聲價 < reputation;
+不簡單 < not\-simple;
+受傷害 < be\-injured;
+端系統 < end\-system;
+薄片 < thin\-slice;
+更新 < up\-to\-date;
+顫栗 < to\-tremble;
+集體 < collective;
+外交手腕 < diplomatic;
+敗露 < \(of\-a\-plot;
+試驗 < experiment;
+人口 < population;
+三百億 < 30\-billion;
+歸順 < submission;
+失蹤 < be\-missing;
+飽和 < saturation;
+歡騰 < jubilation;
+後裔 < descendant;
+金牌 < gold\-medal;
+非對稱 < asymmetric;
+不會 < improbable;
+上月 < last\-month;
+半決賽 < semifinals;
+碧綠 < dark\-green;
+老套 < old\-things;
+及物 < transitive;
+莫須有 < groundless;
+不買賬 < not\-buy\-it;
+磁盤驅動器 < disl\-drive;
+電車 < trolleybus;
+顧慮 < misgivings;
+可比 < comparable;
+腓立比書 < philipians;
+事先 < in\-advance;
+警犬 < police\-dog;
+剛體 < rigid\-body;
+景氣 < prosperity;
+卜筮 < divination;
+女裝裁縫師 < dressmaker;
+不快 < be\-unhappy;
+女學生 < schoolgirl;
+改進 < to\-improve;
+電視 < television;
+後者 < the\-latter;
+纏繞 < intertwine;
+加速 < accelerate;
+諳練 < conversant;
+下個月 < next\-month;
+騎士風格 < knighthood;
+鏈路層 < link\-layer;
+一度 < for\-a\-time;
+歡迎 < to\-welcome;
+化妝舞會 < masquerade;
+墨鏡 < sunglasses;
+剝離 < \(of\-tissue;
+彈藥 < ammunition;
+溫和性 < tenderness;
+不安 < intranquil;
+期刊 < periodical;
+知覺 < perception;
+所有者 < proprietor;
+同情 < compassion;
+適配 < adaptation;
+合意 < acceptable;
+大臣 < chancellor;
+同性 < homosexual;
+日益 < day\-by\-day;
+半空中 < in\-mid\-air;
+本份 < one''s\-duty;
+女服物員 < stewardess;
+沒有知覺 < insensible;
+不等式 < inequality;
+會友 < membership;
+暗間兒 < inner\-room;
+自動化 < automation;
+不夠 < not\-enough;
+單方面 < unilateral;
+私下 < in\-private;
+波峰 < wave\-crest;
+三天 < three\-days;
+反日 < anti\-japan;
+建議 < to\-propose;
+佛教徒 < a\-buddhist;
+波導 < wave\-guide;
+婢女 < slave\-girl;
+沒收 < confiscate;
+快活 < gay\,\-happy;
+可悲 < lamentable;
+評註 < commentary;
+必然 < inevitable;
+半球 < hemisphere;
+響應 < respond\-to;
+大綱 < main\-point;
+氣勢洶洶 < aggressive;
+烤鴨 < roast\-duck;
+歌詞 < song\-lyric;
+並入 < merge\-into;
+弱脈 < weak\-pulse;
+操舵室 < pilothouse;
+原本 < originally;
+吸吮 < to\-suck\-in;
+爆破 < to\-blow\-up;
+道賀 < compliment;
+取得 < to\-acquire;
+上半 < first\-half;
+教育 < to\-educate;
+不動 < motionless;
+七十年代 < the\-1970''s;
+西點 < west\-point;
+斗眼 < cross\-eyed;
+眼鏡 < spectacles;
+不備 < unprepared;
+恫嚇 < intimidate;
+奉獻 < consecrate;
+不依 < not\-comply;
+電唱機 < phonograph;
+文盲 < illiterate;
+明智 < not\-unwise;
+流程圖 < flow\-chart;
+監督者 < supervisor;
+一百五十億 < 15\-billion;
+撞針 < firing\-pin;
+南極 < south\-pole;
+所有物 < belongings;
+視窗新技 < windows\-nt;
+二十一 < twenty\-one;
+了 < to\-finish;
+子 < offspring;
+徹 < penetrate;
+要 < necessary;
+辱 < humiliate;
+着 < make\-move;
+成 < completed;
+督 < supervise;
+輯 < gather\-up;
+弥 < extensive;
+美 < beautiful;
+廂 < side\-room;
+问 < ask\-about;
+庭 < courtyard;
+療 < be\-healed;
+痺 < paralysis;
+差 < to\-differ;
+难 < difficult;
+超 < jump\-over;
+異 < different;
+亲 < relatives;
+畫 < delineate;
+畜 < livestock;
+畑 < dry\-field;
+甘 < sweetness;
+认 < recognize;
+貴 < expensive;
+貝 < sea\-shell;
+达 < arrive\-at;
+众 < multitude;
+倒 < fall\-over;
+玩 < play\-with;
+像 < a\-picture;
+宅 < residence;
+据 < to\-occupy;
+譯 < translate;
+譫 < talkative;
+造 < construct;
+媼 < old\-woman;
+犠 < sacrifice;
+牒 < documents;
+牌 < signboard;
+爐 < fireplace;
+久 < long\-time;
+妾 < concubine;
+初 < beginning;
+除 < eliminate;
+况 < condition;
+乱 < confusion;
+创 < establish;
+福 < happiness;
+假 < falsehood;
+顾 < look\-back;
+蠶 < silkworms;
+渐 < gradually;
+瞧 < glance\-at;
+埒 < enclosure;
+埃 < fine\-dust;
+螢 < glow\-worm;
+退 < step\-back;
+蜻 < dragonfly;
+翻 < flip\-over;
+圏 < to\-circle;
+普 < universal;
+蛹 < chrysalis;
+临 < draw\-near;
+协 < be\-united;
+湯 < hot\-water;
+例 < precedent;
+洲 < continent;
+松 < pine\-tree;
+伙 < companion;
+毫 < fine\-hair;
+蕎 < buckwheat;
+输 < transport;
+折 < break\-off;
+汰 < excessive;
+君 < sovereign;
+危 < dangerous;
+概 < generally;
+厄 < adversity;
+汇 < concourse;
+厉 < whetstone;
+附 < adhere\-to;
+肩 < shoulders;
+魘 < nightmare;
+荒 < wasteland;
+鬱 < luxuriant;
+匠 < craftsman;
+匂 < fragrance;
+勸 < recommend;
+飘 < whirlwind;
+炮 < large\-gun;
+郎 < gentleman;
+陪 < accompany;
+凝 < coagulate;
+剩 < leftovers;
+饒 < bountiful;
+肘 < the\-elbow;
+肖 < look\-like;
+昨 < yesterday;
+暂 < temporary;
+递 < hand\-over;
+祥 < good\-luck;
+倹 < temperate;
+仗 < rely\-upon;
+柿 < persimmon;
+键 < door\-bolt;
+枯 < dried\-out;
+莱 < goosefoot;
+赔 < indemnify;
+逢 < come\-upon;
+睁 < open\-eyes;
+嘿 < be\-silent;
+贪 < be\-greedy;
+逝 < pass\-away;
+艾 < artemisia;
+袍 < long\-gown;
+冤 < grievance;
+迪 < enlighten;
+嘉 < excellent;
+閾 < threshold;
+綾 < thin\-silk;
+膀 < upper\-arm;
+顽 < obstinate;
+歉 < deficient;
+帅 < commander;
+憾 < to\-regret;
+劈 < cut\-apart;
+拂 < shake\-off;
+筈 < arrow\-end;
+熬 < cook\-down;
+稼 < sow\-grain;
+恍 < seemingly;
+绣 < embroider;
+懃 < courteous;
+衬 < underwear;
+慊 < to\-resent;
+潭 < deep\-pool;
+硝 < saltpeter;
+骤 < procedure;
+忿 < get\-angry;
+坠 < fall\-down;
+蝶 < butterfly;
+焉 < thereupon;
+禀 < report\-to;
+挫 < push\-down;
+鳄 < alligator;
+谐 < harmonize;
+屎 < excrement;
+葱 < scallions;
+枣 < date\-tree;
+谴 < reprimand;
+汹 < turbulent;
+泻 < drain\-off;
+瀑 < waterfall;
+樊 < a\-railing;
+敛 < draw\-back;
+茵 < a\-cushion;
+棕 < hemp\-palm;
+辗 < turn\-over;
+恤 < show\-pity;
+侈 < luxurious;
+沁 < soak\-into;
+匣 < small\-box;
+捎 < to\-select;
+痞 < dyspepsia;
+睐 < squint\-at;
+垦 < cultivate;
+浒 < riverbank;
+葵 < sunflower;
+睫 < eyelashes;
+哺 < chew\-food;
+竣 < terminate;
+囔 < muttering;
+藐 < disregard;
+埠 < port\-city;
+荤 < meat\-diet;
+蜒 < millipede;
+菇 < mushrooms;
+豚 < small\-pig;
+沓 < connected;
+弩 < cross\-bow;
+殇 < die\-young;
+栈 < warehouse;
+醺 < get\-drunk;
+蜈 < centipede;
+愫 < guileless;
+谙 < versed\-in;
+熹 < dim\-light;
+怂 < instigate;
+遛 < take\-walk;
+麾 < a\-pennant;
+媲 < marry\-off;
+镁 < magnesium;
+椰 < palm\-tree;
+痢 < dysentery;
+嗑 < eat\-seeds;
+蚯 < earthworm;
+蜚 < cockroach;
+阆 < high\-door;
+擀 < roll\-flat;
+袤 < longitude;
+麝 < musk\-deer;
+佻 < frivolous;
+钾 < potassium;
+孑 < remaining;
+檄 < call\-arms;
+隍 < dry\-ditch;
+诿 < pass\-buck;
+逄 < a\-surname;
+梏 < handcuffs;
+钺 < broad\-axe;
+柑 < tangerine;
+乜 < to\-squint;
+娲 < a\-goddess;
+忝 < disgraced;
+诮 < criticize;
+鳏 < huge\-fish;
+蜇 < jellyfish;
+劭 < encourage;
+癣 < ringworms;
+绦 < silk\-cord;
+钸 < plutonium;
+馗 < cheekbone;
+锰 < manganese;
+侪 < a\-company;
+凫 < wild\-duck;
+痱 < heat\-rash;
+痈 < carbuncle;
+悌 < brotherly;
+冼 < \(surname\);
+鹧 < partridge;
+悒 < sorrowful;
+怃 < regretful;
+墒 < wet\-tilth;
+訾 < bad\-mouth;
+圮 < destroyed;
+鲈 < sea\-perch;
+攉 < to\-beckon;
+鲇 < sheatfish;
+膈 < diaphragm;
+犍 < a\-bullock;
+锗 < germanium;
+鎏 < pure\-gold;
+镅 < americium;
+辂 < a\-chariot;
+跸 < clear\-way;
+煳 < be\-burned;
+牾 < to\-oppose;
+昀 < sun\-light;
+乩 < to\-divine;
+羟 < hydroxide;
+荽 < coriander;
+绠 < well\-rope;
+哓 < garrulous;
+脬 < a\-bladder;
+戡 < subjugate;
+辇 < hand\-cart;
+鹚 < cormorant;
+镞 < arrowhead;
+菰 < wild\-rice;
+蠖 < inch\-worm;
+铫 < large\-hoe;
+氘 < deuterium;
+黾 < to\-strive;
+镧 < lanthanum;
+垡 < plow\-soil;
+炔 < acetylene;
+镱 < ytterbium;
+钕 < neodymium;
+忭 < delighted;
+苴 < sackcloth;
+谳 < to\-decide;
+钯 < palladium;
+碲 < tellurium;
+璩 < jade\-ring;
+饫 < surfeited;
+撙 < economize;
+蓼 < smartweed;
+饔 < breakfast;
+锶 < strontium;
+昃 < afternoon;
+唪 < to\-recite;
+儇 < ingenious;
+鲴 < fish\-guts;
+鲅 < fish\-name;
+铍 < beryllium;
+熳 < to\-spread;
+胍 < guanidine;
+鲐 < globefish;
+酐 < anhydride;
+衄 < epistaxis;
+矧 < much\-more;
+悫 < sincerity;
+膦 < phosphine;
+缣 < fine\-silk;
+宄 < a\-traitor;
+阌 < wen\-xiang;
+酞 < phthalein;
+收縮 < pull\-back;
+多疑 < skeptical;
+合力 < cooperate;
+爆炸 < explosion;
+縮小模型 < miniature;
+割草 < mow\-grass;
+變奏 < variation;
+領受 < to\-accept;
+以弗所書 < ephesians;
+動盪 < commotion;
+可哀 < miserably;
+沒有形狀 < shapeless;
+菠蘿 < pineapple;
+穩定性 < stability;
+厚度 < thickness;
+速記 < shorthand;
+用戶數據 < user\-data;
+徐步 < to\-stroll;
+西面 < west\-side;
+連接器 < connector;
+摘除 < to\-excise;
+警官 < constable;
+開發人員 < developer;
+名人 < personage;
+蔓延 < to\-extend;
+地質學家 < geologist;
+同事 < colleague;
+形容辭 < adjective;
+半旗 < half\-mast;
+金匠 < goldsmith;
+同一 < identical;
+可得到 < available;
+碰巧 < by\-chance;
+科學家 < scientist;
+普及 < widespead;
+設置 < to\-set\-up;
+志願者 < volunteer;
+燒燬 < burn\-down;
+明年 < next\-year;
+擦邊球 < edge\-ball;
+古典 < classical;
+叫做 < be\-called;
+綠茶 < green\-tea;
+怎麼樣 < how\-about;
+所有權 < ownership;
+別處 < elsewhere;
+述語 < predicate;
+白報紙 < newsprint;
+防衛 < to\-defend;
+討論會 < symposium;
+教父 < godfather;
+受僱 < mercenary;
+語源 < etymology;
+說法 < statement;
+城門 < city\-gate;
+接受者 < recipient;
+生物學家 < biologist;
+靈敏 < sensitive;
+助理 < assistant;
+每個人 < everybody;
+不育性 < sterility;
+檢查員 < inspector;
+論斷 < inference;
+受事 < recepient;
+熬煎 < suffering;
+分號 < semicolon;
+原告 < complaint;
+白魚 < whitefish;
+表現型 < phenotype;
+多樣 < diversity;
+多模 < multimode;
+無能 < inability;
+白體 < lean\-type;
+標高 < elevation;
+妖媚 < seductive;
+無聲 < noiseless;
+十年 < ten\-years;
+半島 < peninsula;
+不可磨滅 < indelible;
+連續 < continous;
+原則 < principle;
+皮鞋匠 < shoemaker;
+阿比西尼亞 < abyssinia;
+鄭州 < zhengzhou;
+計策 < stratagem;
+底線 < underline;
+閃電 < lightning;
+引渡 < extradite;
+保護者 < protector;
+教母 < godmother;
+文明 < civilized;
+偽君子 < hypocryte;
+直覺 < intuition;
+壁燈 < wall\-lamp;
+發音 < pronounce;
+厘克 < centigram;
+馬蹄鐵 < horseshoe;
+擔架床 < stretcher;
+無籟 < scoundrel;
+加深 < to\-deepen;
+執行 < implement;
+雹暴 < hailstorm;
+確信 < confident;
+那樣 < that\-kind;
+公里 < kilometer;
+誠摯 < sincerely;
+差距 < disparity;
+不亦樂乎 < extremely;
+襯裙 < petticoat;
+鰾膠 < isinglass;
+按照字面 < literally;
+證件 < paperwork;
+細菌 < bacterial;
+蒼天 < firmament;
+三分之一 < one\-third;
+緩沖 < to\-buffer;
+選派 < set\-apart;
+不完善 < imperfect;
+大志 < high\-aims;
+輔音 < consonant;
+張揚 < publicize;
+解碼 < to\-decode;
+播種 < sow\-seeds;
+化學 < chemistry;
+報紙 < newspaper;
+無知 < ignorance;
+接駁 < to\-access;
+不可救藥 < incurable;
+很多 < very\-many;
+耶路撒冷 < jerusalem;
+雙方 < bilateral;
+晴雨表 < barometer;
+千禧年 < millenium;
+長遠 < long\-term;
+千周 < kilohertz;
+過濾 < to\-filter;
+褻瀆的話 < blasphemy;
+奇妙 < fantastic;
+冰蓋 < ice\-sheet;
+國內戰爭 < civil\-war;
+危地馬拉 < guatamala;
+遙測 < telemetry;
+接班人 < successor;
+農舍 < farmhouse;
+剪貼簿 < scrapbook;
+偉晶岩 < pegmatite;
+紅蓮 < red\-lotus;
+指示符 < indicator;
+共識 < consensus;
+加密後的 < encrypted;
+有攻擊性 < offensive;
+大小 < dimension;
+惡名昭彰 < notorious;
+保惠師 < comforter;
+大家 < authority;
+爭取 < fight\-for;
+每天 < every\-day;
+經濟學家 < economist;
+攻擊 < to\-attack;
+紅茶 < black\-tea;
+文字 < character;
+常綠 < evergreen;
+殘廢 < deformity;
+隱晦 < obscurity;
+建築師 < architect;
+照樣 < as\-before;
+方向 < direction;
+焰火 < fireworks;
+救恩 < salvation;
+阿空加瓜 < aconcagua;
+加拉太書 < galatians;
+後勤 < logistics;
+委員會 < committee;
+網際色情 < cyberporn;
+辦罪 < to\-punish;
+要緊 < important;
+民主 < democracy;
+務實 < pragmatic;
+推銷 < to\-market;
+彙報 < to\-report;
+要素 < essential;
+航海者 < navigator;
+夢境 < dreamland;
+課堂 < classroom;
+報界 < the\-press;
+十七 < seventeen;
+火藥 < gunpowder;
+診斷 < diagnosis;
+毫克 < milligram;
+副本 < duplicate;
+花粉過敏 < hay\-fever;
+廣播 < broadcast;
+敗局 < lost\-game;
+郊外 < outskirts;
+白蠟 < white\-wax;
+出現 < to\-appear;
+冰糕 < ice\-cream;
+允許 < to\-permit;
+小吃店 < snack\-bar;
+後代 < posterity;
+維士卡 < visa\-card;
+為時過早 < premature;
+聯合組織 < syndicate;
+構造 < structure;
+齳 < toothless;
+齭 < toothache;
+好奇心 < curiosity;
+勾劃 < to\-sketch;
+人物描寫 < portrayal;
+增援 < reinforce;
+無比 < matchless;
+教士 < churchman;
+次數 < frequency;
+大力 < energetic;
+政治性 < political;
+滑鼠墊 < mouse\-pad;
+壯大 < to\-expand;
+鷾 < a\-swallow;
+鷭 < water\-hen;
+拜物教 < fetishism;
+遵循 < to\-follow;
+鷥 < the\-egret;
+適意 < agreeable;
+鷏 < bird\-name;
+鶡 < crossbill;
+調停 < reconcile;
+鵷 < co\-worker;
+干涉 < interfere;
+鳢 < snakehead;
+社會主義者 < socialist;
+低速率 < low\-speed;
+鲎 < king\-crab;
+鱷 < crocodile;
+勤勉 < diligence;
+款待 < entertain;
+令人欽佩 < admirable;
+鯠 < to\-confer;
+發芽 < germinate;
+鮦 < snakefish;
+撥正 < set\-right;
+魞 < fish\-trap;
+阿奇里斯 < aeschylus;
+壽命 < life\-span;
+鬖 < wild\-hair;
+髧 < long\-hair;
+髗 < the\-skull;
+提摩太后書 < 2\-timothy;
+骭 < shin\-bone;
+政治局 < politburo;
+經文 < scripture;
+零售商 < tradesman;
+敲入 < to\-key\-in;
+隊形 < formation;
+騧 < tan\-horse;
+騐 < to\-verity;
+天上 < celestial;
+駸 < galloping;
+政治家 < statesman;
+饠 < rice\-cake;
+辦理 < to\-handle;
+餱 < dry\-goods;
+安全帶 < seat\-belt;
+孟加拉語 < bengalese;
+註定 < be\-doomed;
+無數 < countless;
+收回 < to\-regain;
+外交 < diplomacy;
+過度 < exceeding;
+操持 < to\-manage;
+登廣告 < advertise;
+檢測 < to\-detect;
+矮凳 < low\-stool;
+階層 < hierarchy;
+靪 < to\-cobble;
+香檳酒 < champagne;
+靧 < wash\-face;
+至高 < paramount;
+靀 < drizzling;
+排行 < seniority;
+霂 < fine\-rain;
+前往 < leave\-for;
+教儀 < ordinance;
+機械裝置 < machinery;
+隃 < to\-exceed;
+墳墓 < sepulcher;
+綜合性 < synthesis;
+公秉 < kiloliter;
+阻撓 < to\-thwart;
+傳送 < to\-convey;
+閺 < look\-down;
+遺囑 < testament;
+歡呼 < cheer\-for;
+锫 < berkelium;
+锆 < zirconium;
+钶 < columbium;
+遊客 < traveller;
+钌 < ruthenium;
+摁釘兒 < thumbtack;
+钁 < a\-mattock;
+文具商 < stationer;
+新加坡 < singapore;
+城牆 < city\-wall;
+內碼 < to\-encode;
+鐻 < drumstick;
+摧殘 < to\-ravage;
+撞擊 < to\-strike;
+加劇 < aggravate;
+鏛 < to\-polish;
+阻抗 < impedance;
+捐贈 < to\-donate;
+自願 < voluntary;
+鎿 < neptunium;
+樹皮 < tree\-bark;
+鎞 < plowshare;
+隨員 < attendant;
+光筆 < light\-pen;
+報攤 < newsstand;
+出於 < be\-due\-to;
+無形 < invisible;
+裝置 < equipment;
+鈌 < to\-pierce;
+故事 < narrative;
+共產 < communist;
+推翻 < overthrow;
+領事館 < consulate;
+園藝 < gardening;
+劃分 < to\-divide;
+傳記 < biography;
+迷惑 < to\-puzzle;
+加上 < to\-put\-in;
+輘 < a\-car\-rut;
+通宵 < overnight;
+軄 < to\-govern;
+躔 < follow\-in;
+廣傳 < propagate;
+發生 < to\-happen;
+跩 < to\-waddle;
+超聯結 < hyperlink;
+趝 < to\-pursue;
+赿 < late\-slow;
+組成 < component;
+接管 < take\-over;
+豵 < young\-pig;
+總會會長 < president;
+隆冬 < midwinter;
+凹度 < concavity;
+漫長 < very\-long;
+界面 < interface;
+創作 < to\-create;
+到目前為止 < until\-now;
+譊 < wrangling;
+譅 < wriggling;
+諝 < knowledge;
+毫無疑問 < certainty;
+綜合 < composite;
+披露 < to\-reveal;
+看待 < look\-upon;
+陷入 < sink\-into;
+衰落 < decompose;
+撥奏 < pizzicato;
+迫害 < persecute;
+進化 < evolution;
+流行性感冒 < influenza;
+裲 < waistcoat;
+辯才 < eloquence;
+自負 < conceited;
+螌 < a\-striped;
+市政 < municipal;
+儼然 < just\-like;
+保皇黨 < royalists;
+絕妙 < exquisite;
+東北方 < northeast;
+投降 < surrender;
+簽章 < signature;
+蘞 < wild\-vine;
+綁匪 < kidnapper;
+無力 < powerless;
+好萊塢 < hollywood;
+擔保 < guarantee;
+推理 < reasoning;
+蕗 < leucacene;
+因而 < therefore;
+逆向 < backwards;
+蓆 < straw\-mat;
+按蚊 < anopheles;
+樣機 < prototype;
+蒢 < hedysarum;
+刨冰 < water\-ice;
+帶寬 < bandwidth;
+葓 < vegetable;
+異議 < objection;
+規定 < provision;
+展開 < to\-unfold;
+輪流 < alternate;
+持久性 < constancy;
+傳統 < tradition;
+偏見 < prejudice;
+白血病 < leukaemia;
+全世界 < worldwide;
+地理 < geography;
+地球 < the\-earth;
+苙 < a\-pig\-sty;
+芼 < to\-choose;
+降低 < to\-reduce;
+保險 < insurance;
+保障 < to\-ensure;
+艣 < stern\-oar;
+場合 < situation;
+艎 < fast\-boat;
+報告 < to\-inform;
+舝 < linch\-pin;
+舘 < a\-mansion;
+臯 < to\-praise;
+澳大利亞 < australia;
+公斗 < decaliter;
+返回 < return\-to;
+大寫鎖定 < caps\-lock;
+分割 < to\-cut\-up;
+胦 < the\-navel;
+扁骨 < flat\-bone;
+耥 < farm\-tool;
+羶 < rank\-odor;
+保鏢 < bodyguard;
+跑錶 < stopwatch;
+紙夾 < paperclip;
+罁 < a\-cistern;
+發明 < to\-invent;
+模擬 < imitation;
+半工半讀 < part\-work;
+激發 < to\-arouse;
+再度 < once\-more;
+糾察 < to\-picket;
+拷花 < to\-emboss;
+我們自己 < ourselves;
+潛艇 < submarine;
+迷住 < fascinate;
+艾炷 < moxa\-cone;
+囚禁 < captivity;
+緥 < swaddling;
+羅徹斯特 < rochester;
+便門 < side\-door;
+抗議者 < protester;
+衣帽間 < cloakroom;
+一匹馬 < one\-horse;
+有時候 < sometimes;
+糰 < rice\-ball;
+糝 < scattered;
+候選人 < candidate;
+管弦樂團 < orchestra;
+向北地 < northward;
+籨 < trousseau;
+下決心 < determine;
+規勸 < to\-advise;
+表皮 < epidermis;
+表白 < vindicate;
+白日做夢 < day\-dream;
+竕 < deciliter;
+保證人 < guarantor;
+竆 < exhausted;
+看做 < regard\-as;
+窋 < in\-a\-hole;
+稬 < glutinous;
+上星期 < last\-week;
+兇手 < assailant;
+寬頻 < broadband;
+西南 < southwest;
+西北 < northwest;
+礽 < blessings;
+礞 < \(mineral\);
+精巧 < elaborate;
+第二十 < twentieth;
+嶄新 < brand\-new;
+碆 < arrow\-tip;
+打進 < to\-breach;
+砬 < big\-stone;
+公寸 < decimeter;
+公寓 < apartment;
+常任 < permanent;
+光彩 < honorable;
+睡過頭 < oversleep;
+指示 < point\-out;
+眕 < restraint;
+病理 < pathology;
+任何其他 < any\-other;
+辛勞 < laborious;
+損壞 < to\-damage;
+瘭 < a\-whitlow;
+瘜 < a\-polypus;
+巴勒斯坦 < palestine;
+痡 < a\-disease;
+利未記 < leviticus;
+童子軍 < boy\-scout;
+畱 < to\-detain;
+嘉許 < favorable;
+畋 < till\-land;
+八天 < eight\-day;
+甦 < be\-reborn;
+瓸 < hectogram;
+拒絕 < to\-refuse;
+要不 < otherwise;
+璿 < fine\-jade;
+標定 < demarcate;
+瑴 < twin\-gems;
+瑣 < fragments;
+輻射 < radiation;
+四十六 < forty\-six;
+排放 < discharge;
+體現 < to\-embody;
+衰減 < to\-weaken;
+籃板 < backboard;
+在﹍旁邊 < alongside;
+馬鞭 < horsewhip;
+獀 < to\-gather;
+第九十 < ninetieth;
+狳 < armadillo;
+燶 < to\-scorch;
+畢竟 < after\-all;
+熿 < brilliant;
+先見之明 < foresight;
+低階 < low\-level;
+所謂 < so\-called;
+潰爛 < to\-fester;
+儲存 < stockpile;
+車前燈 < headlight;
+濩 < pour\-down;
+掛念 < concerned;
+宇航員 < astronaut;
+轟動 < sensation;
+臺燈 < desk\-lamp;
+使困窘 < embarrass;
+湼 < black\-mud;
+湅 < boil\-silk;
+淩 < pass\-over;
+實質 < substance;
+隨之而後 < from\-that;
+涷 < rainstorm;
+洑 < whirlpool;
+巧克力 < chocolate;
+有雄心 < ambitious;
+殈 < infertile;
+欕 < tree\-name;
+植物 < botanical;
+空防 < air\-force;
+入侵 < to\-invade;
+處理器 < processor;
+主管人員 < executive;
+橚 < tall\-tree;
+公丈 < decameter;
+輸出 < to\-export;
+榪 < headboard;
+知更鳥 < redbreast;
+啟示者 < revelator;
+輸入 < to\-import;
+等等 < et\-cetera;
+第三十 < thirtieth;
+棖 < door\-stop;
+梜 < chopstick;
+激怒 < infuriate;
+栱 < large\-peg;
+栭 < king\-post;
+栒 < cross\-bar;
+停泊 < anchorage;
+柈 < container;
+枙 < tree\-knot;
+白鎢礦 < scheelite;
+朞 < full\-year;
+手提包 < \(hand\)bag;
+技術性 < technical;
+漲潮 < high\-tide;
+暍 < sunstroke;
+家譜 < genealogy;
+驚異 < amazement;
+輔助 < to\-assist;
+旪 < united\-in;
+提供 < to\-supply;
+不誠實 < dishonest;
+豌豆粥 < pea\-gruel;
+變流器 < converter;
+攋 < to\-clutch;
+攃 < preceding;
+擐 < to\-put\-on;
+體操 < gymnastic;
+摽 < throw\-out;
+提摩太前書 < 1\-timothy;
+摮 < to\-rattle;
+揥 < scratcher;
+便箋 < notepaper;
+聖餐 < sacrament;
+財務秘書 < treasurer;
+批發 < wholesale;
+趕緊 < hurriedly;
+扳道員 < pointsman;
+扤 < to\-thrust;
+骨架 < framework;
+戜 < to\-scrape;
+偵探 < detective;
+兩星期 < fortnight;
+挑戰 < challenge;
+格式化 < to\-format;
+被告 < defendant;
+波利尼西亞 < polynesia;
+悁 < irritable;
+恑 < to\-change;
+怺 < to\-endure;
+怞 < to\-grieve;
+怗 < observant;
+採石場 < stone\-pit;
+加勒比 < caribbean;
+電報機 < telegraph;
+貝類 < shellfish;
+在內 < including;
+拿手 < expert\-in;
+工作表 < worksheet;
+暴風雪 < snowstorm;
+竊聽 < eavesdrop;
+廾 < two\-hands;
+庉 < a\-village;
+幩 < trappings;
+幙 < a\-curtain;
+宿舍 < dormitory;
+山水 < landscape;
+四天 < four\-days;
+挺好 < very\-good;
+簽入 < to\-log\-on;
+馬背 < horseback;
+驕氣 < arrogance;
+疑心 < suspicion;
+渺茫 < uncertain;
+寽 < a\-handful;
+文字檔 < text\-file;
+寘 < put\-aside;
+激動 < to\-excite;
+嫛 < compliant;
+媬 < governess;
+媕 < undecided;
+添補 < fill\-\(up\);
+貿易戰 < trade\-war;
+奉承者 < flatterer;
+生育能力 < fertility;
+修正 < to\-revise;
+指揮者 < conductor;
+夌 < to\-dawdle;
+某處 < somewhere;
+塝 < flat\-bank;
+參考書 < reference;
+共享軟體 < shareware;
+貨輪 < freighter;
+半衰期 < half\-life;
+圊 < rest\-room;
+體團 < community;
+抵抗 < to\-resist;
+不受歡迎 < unwelcome;
+噁 < nastiness;
+颱風 < hurricane;
+嘑 < to\-menace;
+拉斐特 < lafayette;
+贖罪 < atonement;
+寵物 < house\-pet;
+聖誕 < christmas;
+哫 < to\-cajole;
+咵 < to\-revile;
+不結果 < fruitless;
+呧 < to\-rebuke;
+假定 < to\-assume;
+申請人 < applicant;
+行動 < operation;
+主體 < main\-part;
+手法 < technique;
+消遣 < amusement;
+出版者 < publisher;
+叅 < to\-counel;
+厓 < precipice;
+凹凸印刷 < embossing;
+就業 < get\-a\-job;
+疆域 < territory;
+本星期 < this\-week;
+匘 < the\-brain;
+勩 < work\-hard;
+怪不得 < no\-wonder;
+撒都該人 < sadducees;
+承擔 < undertake;
+刔 < scoop\-out;
+膽小 < cowardice;
+凷 < dirt\-clod;
+凙 < an\-icicle;
+創造力 < ingenuity;
+屬性 < attribute;
+兇 < atrocious;
+主頁 < home\-page;
+可容忍 < tolerable;
+會面 < meet\-with;
+傺 < to\-hinder;
+成為 < to\-become;
+交誼 < communion;
+圖書管理員 < librarian;
+基本上 < basically;
+侎 < to\-soothe;
+伻 < messenger;
+伋 < deceptive;
+潛力 < potential;
+稻草人 < scarecrow;
+學童 < schoolboy;
+多用戶 < multiuser;
+自動 < automatic;
+共產主義 < communism;
+䶳 < to\-lookup;
+䶑 < to\-sneeze;
+蠕動 < to\-wiggle;
+打敗 < to\-defeat;
+豪豬 < porcupine;
+不以為然 < object\-to;
+䳺 < the\-quail;
+流量 < flow\-rate;
+䲨 < wild\-swan;
+社會主義 < socialism;
+䱈 < fish\-pulp;
+䰥 < a\-cyclone;
+賜給 < to\-bestow;
+蜜月假期 < honeymoon;
+䯦 < tiny\-bone;
+䮜 < to\-gallop;
+招募 < to\-recuit;
+䭬 < to\-kowtow;
+對於 < regarding;
+䭛 < tasteless;
+䭑 < incorrupt;
+同班同學 < classmate;
+䬶 < to\-strave;
+䫻 < a\-typhoon;
+䫔 < a\-servant;
+上面 < on\-top\-of;
+羽毛球 < badminton;
+䩦 < the\-reins;
+五號 < the\-fifth;
+䨭 < the\-skies;
+䨍 < deep\-pond;
+䦵 < incapable;
+䦬 < a\-vacancy;
+䦆 < a\-big\-hoe;
+拆卸 < to\-unload;
+救護車 < ambulance;
+蛋白 < egg\-white;
+第十六 < sixteenth;
+䢱 < to\-slight;
+䢟 < to\-travel;
+吞食 < to\-devour;
+䢍 < to\-hasten;
+使生氣 < displease;
+胃炎 < gastritis;
+對抗 < withstand;
+䠲 < to\-listen;
+䠯 < to\-ascend;
+䠮 < to\-prance;
+䟻 < bare\-feet;
+䟞 < to\-falter;
+不公正 < injustice;
+脫掉 < strip\-off;
+香港 < hong\-kong;
+䟌 < diverging;
+䞼 < to\-escape;
+䞒 < red\-color;
+䞐 < plentiful;
+䞉 < a\-surplus;
+䜭 < to\-dredge;
+實時 < real\-time;
+肺炎 < pneumonia;
+䜟 < to\-verify;
+光射線 < light\-ray;
+䛻 < to\-induce;
+䛹 < to\-accuse;
+䛳 < to\-malign;
+䛬 < baby\-talk;
+䛪 < loquacity;
+䛋 < to\-scheme;
+䛁 < to\-murmur;
+慶祝 < celebrate;
+䙸 < to\-obtain;
+外國人 < foreigner;
+䘼 < stockings;
+宰殺 < slaughter;
+第十五 < fifteenth;
+䘑 < the\-pulse;
+䕩 < dry\-fruit;
+浪蕩 < to\-loiter;
+䔳 < chickling;
+䓰 < absinthin;
+某物 < something;
+䒊 < a\-patient;
+䑪 < a\-sailing;
+䑓 < a\-lookout;
+津貼 < allowance;
+䐺 < delicious;
+䐛 < to\-loosen;
+䐆 < big\-belly;
+䏽 < meat\-pulp;
+䏬 < the\-spine;
+䏠 < meat\-soup;
+䏞 < the\-belly;
+肝炎 < hepatitis;
+䎡 < to\-shrink;
+消耗 < to\-use\-up;
+䎃 < fine\-down;
+阿根廷 < argentina;
+䍎 < a\-spindle;
+䌲 < light\-red;
+䌛 < entourage;
+䋠 < to\-repair;
+䊰 < foodstuff;
+䊜 < dumplings;
+䉼 < materials;
+上載 < to\-upload;
+蘭花 < cymbidium;
+書記 < secretary;
+浪船 < swingboat;
+偽善者 < hypocrite;
+䇐 < to\-arrive;
+小寫 < lowercase;
+䆐 < a\-country;
+螺旋槳 < propeller;
+用具 < appliance;
+古風 < antiquity;
+䅃 < late\-crop;
+安歇 < go\-to\-bed;
+䃩 < a\-mineral;
+家族 < household;
+䃕 < stoneware;
+自動樓梯 < escalator;
+緊急事件 < emergency;
+䃀 < millstone;
+何故 < wherefore;
+腳印 < footprint;
+瓷器 < chinaware;
+貯水處 < reservoir;
+䁐 < deep\-eyed;
+童年 < childhood;
+印度尼西亞 < indonesia;
+半流體 < semifluid;
+䀬 < to\-glance;
+䀡 < to\-spy\-on;
+䀐 < to\-regard;
+起床 < to\-get\-up;
+㿿 < wine\-cups;
+民主主義者 < democrats;
+㿟 < he\-bright;
+征服者 < conqueror;
+㾥 < bellyache;
+㾣 < to\-shiver;
+今生 < this\-life;
+捕鼠器 < mousetrap;
+㽞 < to\-remain;
+㽉 < a\-big\-jar;
+㼺 < porcelain;
+變色龍 < chameleon;
+㼚 < earthware;
+對抗者 < adversary;
+本職 < one''s\-job;
+退黑激素 < melatonin;
+背斜 < anticline;
+暴躁 < irascible;
+池鹽 < lake\-salt;
+薄油層 < oil\-sheet;
+不許 < not\-allow;
+商標 < trademark;
+飯碗 < rice\-bowl;
+無知覺 < senseless;
+晤面 < interview;
+重開 < to\-reopen;
+㵔 < not\-clear;
+變革 < transform;
+㴁 < to\-add\-to;
+白云母 < muscovite;
+㳨 < to\-splash;
+截奪 < intercept;
+彫刻品 < sculpture;
+深水 < deepwater;
+㰖 < the\-olive;
+㯺 < a\-cabinet;
+變焦距鏡頭 < zoom\-lens;
+㯯 < small\-cup;
+㯝 < paulownia;
+㮙 < a\-pitfall;
+㭢 < mechanics;
+起始 < originate;
+㬿 < moonlight;
+祇讀 < read\-only;
+㬫 < clear\-sky;
+一千噸 < 1000\-tons;
+不規則 < irregular;
+波狀雲 < undulatus;
+學會 < institute;
+㪈 < to\-let\-go;
+㩒 < to\-arrest;
+㩇 < the\-thumb;
+㨶 < to\-thresh;
+㨉 < to\-smooth;
+㧩 < to\-dispel;
+㧗 < to\-clatch;
+僚 < officials;
+㦯 < a\-certain;
+㦖 < resentful;
+㥾 < mortified;
+㥳 < to\-survey;
+㥦 < satisfied;
+㥀 < exclusive;
+㤵 < copassion;
+末端 < extremity;
+㤇 < terrified;
+㤆 < nauseated;
+㣺 < the\-heart;
+瓜分 < partition;
+㢡 < to\-exhort;
+㡼 < a\-granary;
+㡺 < a\-cottage;
+㡗 < red\-paper;
+㠘 < an\-island;
+涌現 < spring\-up;
+禮節 < etiquette;
+變醜 < disfigure;
+㜻 < to\-admire;
+蜂巢 < honeycomb;
+㜘 < delicated;
+㜏 < last\-name;
+中美 < china\-usa;
+㛾 < not\-clean;
+暗語 < code\-word;
+擴音器 < megaphone;
+不見了 < disappear;
+㚰 < an\-embryo;
+㚛 < corpulent;
+㚘 < a\-partner;
+重蹈 < to\-repeat;
+㘣 < compasses;
+㗳 < forgetful;
+九月份 < september;
+超文本 < hypertext;
+基督教徒 < christian;
+㕹 < a\-buckler;
+㕕 < deception;
+㕑 < a\-kitchen;
+休戰 < armistice;
+㕋 < rock\-land;
+㕈 < to\-linger;
+㔧 < to\-incite;
+讀書人 < a\-scholar;
+㓋 < to\-freeze;
+㓄 < to\-plough;
+叛賣 < to\-betray;
+㑧 < perturbed;
+㑄 < to\-insult;
+㐯 < to\-employ;
+伸展 < extension;
+一致 < unanimous;
+引用句 < quotation;
+老牌 < old\-brand;
+妖風 < evil\-wind;
+錶帶 < watchband;
+減少 < to\-lessen;
+有益 < wholesome;
+立刻 < forthwith;
+八倍體 < octoploid;
+深思 < to\-ponder;
+野蠻 < barbarous;
+財東 < shopowner;
+虛構 < imaginary;
+被禁止 < forbidden;
+聯想 < associate;
+浸沒 < immersion;
+淒慘 < miserable;
+一篇 < one\-sided;
+介質訪問控制層 < mac\-layer;
+不自然 < unnatural;
+期滿 < to\-expire;
+警覺 < vigilance;
+原諒 < to\-excuse;
+家俱 < furniture;
+高科技 < high\-tech;
+感染 < infection;
+孔子 < confucius;
+亞格門農 < agamemnon;
+家事 < housework;
+怪物似 < monstrous;
+冰棍兒 < ice\-lolly;
+今年 < this\-year;
+白班兒 < day\-shift;
+一百 < a\-hundred;
+仲夏 < midsummer;
+證詞 < testimony;
+不逞之徒 < desperado;
+突出 < prominent;
+星期三 < wednesday;
+惡毒 < malicious;
+野蠻人 < barbarian;
+十字軍 < crusaders;
+露韓 < to\-expose;
+法國人 < frenchman;
+五千噸 < 5000\-tons;
+影響 < influence;
+暴發 < break\-out;
+應付 < deal\-with;
+有毒 < poisonous;
+弱鹼 < weak\-base;
+汽船 < steamboat;
+遇難船 < shipwreck;
+可笑 < laughable;
+半載 < half\-load;
+微軟 < microsoft;
+仙境 < fairyland;
+旨趣 < objective;
+大類 < main\-type;
+本文 < this\-text;
+羊皮紙 < parchment;
+憤憤不平 < indignant;
+營養 < nutrition;
+反艦艇 < anti\-ship;
+協議 < agreement;
+那麼 < so\-\(much\);
+必需品 < necessity;
+碧藍 < dark\-blue;
+待遇 < treatment;
+下個星期 < next\-week;
+合理 < rationale;
+玩弄 < resort\-to;
+旁路 < to\-bypass;
+夜間 < nighttime;
+比鄰 < neighbour;
+書架 < bookshelf;
+有效 < effective;
+缽盂 < alms\-bowl;
+石灰石 < limestone;
+資助 < subsidize;
+歷史學家 < historian;
+修道院 < monastery;
+上次 < last\-time;
+望遠鏡 < telescope;
+擺設兒 < ornaments;
+五天 < five\-days;
+心靈上 < spiritual;
+旁觀 < spectator;
+堅忍不拔 < fortitude;
+介入 < intervene;
+以上 < more\-than;
+矛頭 < spearhead;
+夢遺 < wet\-dream;
+天文學 < astronomy;
+巴比妥 < barbitone;
+波段 < wave\-band;
+離開 < to\-depart;
+實質上 < virtually;
+吐氣 < aspirated;
+東南 < southeast;
+奇觀 < spectacle;
+改革 < to\-reform;
+愛國 < patriotic;
+不斷 < unceasing;
+未婚 < unmarried;
+弱酸 < weak\-acid;
+乘客 < passenger;
+配置 < to\-deploy;
+失調 < imbalance;
+本壘 < home\-base;
+人事 < personnel;
+有意識 < conscious;
+書店 < bookstore;
+受害者 < casulties;
+不完美 < defective;
+司機 < chauffeur;
+東亞 < east\-asia;
+合格 < qualified;
+情緒化 < emotional;
+耐力 < endurance;
+支持者 < supporter;
+明確 < clear\-cut;
+不惜 < not\-stint;
+借書單 < book\-slip;
+主婦 < housewife;
+表意文字 < ideograph;
+通貨膨脹 < inflation;
+玩具 < plaything;
+電話 < telephone;
+施肥 < fertilize;
+第八十 < eightieth;
+里程碑 < milestone;
+不已 < endlessly;
+雜貨 < groceries;
+木匠 < carpenter;
+醬油 < soy\-sauce;
+不情願 < unwilling;
+觸鬚 < tentacles;
+下定義 < to\-define;
+擦音 < fricative;
+周圍 < encompass;
+對不起 < i''m\-sorry;
+不對 < incorrect;
+心目 < mentality;
+可敬 < venerable;
+大荳 < soya\-bean;
+𢥞 < same\-as\-忡;
+假象牙 < celluloid;
+降落傘 < parachute;
+波幅 < amplitude;
+右手 < righthand;
+流入 < flow\-into;
+注射 < injection;
+硬盤 < hard\-disk;
+功課 < classwork;
+週長 < perimeter;
+購買者 < purchaser;
+大教堂 < cathedral;
+組織者 < organizer;
+婚姻 < matrimony;
+不在 < not\-be\-in;
+丙種射線 < gamma\-ray;
+鞭毛 < flagellum;
+撫養 < to\-foster;
+刪除 < to\-delete;
+遠足 < excursion;
+無限 < unlimited;
+頑強 < tenacious;
+無關 < unrelated;
+蒸發 < evaporate;
+古怪 < eccentric;
+得當 < expedient;
+油布 < tarpaulin;
+下唇 < lower\-lip;
+上唇 < upper\-lip;
+聖迭哥 < san\-diego;
+頁心 < type\-page;
+污染 < pollution;
+意氣相投 < congenial;
+長方形 < rectangle;
+前途 < prospects;
+熊蜂 < bumblebee;
+總結 < summarize;
+吸取 < to\-absorb;
+週邊 < periphery;
+年限 < age\-limit;
+下列 < following;
+題名 < autograph;
+多端 < multiport;
+效能 < efficient;
+灰獵犬 < greyhound;
+獲暴利者 < profiteer;
+不停 < incessant;
+大砲 < artillery;
+不值 < not\-worth;
+沙岩 < sandstone;
+波及 < spread\-to;
+微波 < microwave;
+無辜 < innocence;
+次要 < secondary;
+不予 < not\-grant;
+去年 < last\-year;
+不了 < unable\-to;
+韌性 < toughness;
+版權 < copyright;
+向南 < southward;
+民歌 < folk\-song;
+即時 < immediate;
+習慣性 < customary;
+幸運 < fortunate;
+美中 < usa\-china;
+熟練 < practiced;
+念 < think\-of;
+会 < assemble;
+学 < learning;
+徒 < disciple;
+睦 < friendly;
+无 < negative;
+方 < a\-square;
+前 < in\-front;
+眉 < eyebrows;
+省 < province;
+直 < straight;
+廢 < abrogate;
+盛 < abundant;
+軒 < carriage;
+全 < maintain;
+廊 < corridor;
+皺 < wrinkles;
+康 < peaceful;
+间 < midpoint;
+躊 < hesitate;
+第 < sequence;
+幻 < illusion;
+癇 < epilepsy;
+山 < mountain;
+巾 < kerchief;
+巧 < skillful;
+距 < distance;
+界 < boundary;
+任 < trust\-to;
+台 < platform;
+象 < elephant;
+题 < forehead;
+賢 < virtuous;
+資 < property;
+貼 < paste\-to;
+費 < expenses;
+履 < footwear;
+武 < military;
+琲 < necklace;
+尠 < very\-few;
+完 < complete;
+即 < promptly;
+寵 < favorite;
+语 < language;
+珍 < precious;
+商 < commerce;
+宝 < treasure;
+千 < thousand;
+宜 < suitable;
+官 < official;
+站 < stand\-up;
+譬 < metaphor;
+香 < fragrant;
+似 < resemble;
+嬢 < troubled;
+虽 < although;
+且 < moreover;
+调 < transfer;
+嫉 < jealousy;
+狃 < to\-covet;
+嫁 < to\-marry;
+媚 < charming;
+誘 < persuade;
+誄 < eulogize;
+詳 < detailed;
+詰 < question;
+惊 < frighten;
+支 < disperse;
+突 < suddenly;
+評 < appraise;
+娠 < pregnant;
+句 < sentence;
+显 < manifest;
+增 < increase;
+料 < consider;
+妊 < conceive;
+续 < continue;
+炭 < charcoal;
+围 < surround;
+災 < calamity;
+塚 < cemetery;
+瀕 < approach;
+濺 < sprinkle;
+濯 < wash\-out;
+垣 < low\-wall;
+习 < practice;
+垂 < let\-down;
+坂 < hillside;
+祖 < ancestor;
+优 < superior;
+滯 < block\-up;
+溢 < overflow;
+温 < lukewarm;
+蚊 < mosquito;
+鹸 < alkaline;
+噪 < be\-noisy;
+嘲 < ridicule;
+減 < decrease;
+嘔 < to\-vomit;
+恩 < kindness;
+脱 < take\-off;
+涸 < dried\-up;
+喪 < mourning;
+奔 < run\-fast;
+涌 < surge\-up;
+禁 < restrict;
+浮 < to\-float;
+互 < mutually;
+搞 < to\-clear;
+朱 < cinnabar;
+域 < district;
+材 < material;
+偷 < to\-steal;
+蓉 < hibiscus;
+抽 < draw\-out;
+仪 < ceremony;
+卸 < lay\-down;
+忆 < remember;
+隔 < separate;
+卓 < profound;
+损 < diminish;
+茄 < eggplant;
+勿 < must\-not;
+髭 < mustache;
+遥 < far\-away;
+櫛 < comb\-out;
+币 < currency;
+勉 < endeavor;
+骸 < skeleton;
+努 < to\-exert;
+萍 < duckweed;
+樅 < fir\-tree;
+缩 < contract;
+臥 < lie\-down;
+慕 < long\-for;
+臣 < minister;
+挡 < obstruct;
+膜 < membrane;
+榛 < hazelnut;
+俊 < talented;
+枝 < branches;
+陷 < submerge;
+勒 < strangle;
+聊 < somewhat;
+飾 < decorate;
+斜 < slanting;
+斐 < graceful;
+梟 < owl\-thus;
+傘 < umbrella;
+亭 < pavilion;
+泛 < to\-drift;
+符 < i\.d\.\-tag;
+允 < to\-grant;
+跨 < straddle;
+掩 < to\-cover;
+頃 < a\-moment;
+柴 < firewood;
+俯 < bow\-down;
+俥 < rickshaw;
+邻 < neighbor;
+驾 < to\-drive;
+羞 < disgrace;
+裤 < trousers;
+估 < merchant;
+鞘 < scabbard;
+咐 < instruct;
+恒 < constant;
+糟 < sediment;
+扮 < dress\-up;
+曜 < glorious;
+暢 < smoothly;
+押 < mortgage;
+戚 < relative;
+穆 < majestic;
+嘻 < mirthful;
+並 < equal\-to;
+昔 < formerly;
+闘 < struggle;
+瞪 < stare\-at;
+斥 < to\-scold;
+剪 < scissors;
+姚 < handsome;
+掏 < take\-out;
+間 < interval;
+惹 < irritate;
+簿 < register;
+芷 < angelica;
+磁 < magnetic;
+毅 < resolute;
+笥 < a\-hamper;
+拘 < restrain;
+伐 < cut\-down;
+竊 < secretly;
+銘 < inscribe;
+愉 < pleasant;
+窜 < run\-away;
+寨 < stockade;
+戻 < perverse;
+沪 < shanghai;
+釜 < cauldron;
+嗤 < laugh\-at;
+娱 < pleasure;
+禄 < blessing;
+愕 < startled;
+啡 < morphine;
+囚 < prisoner;
+账 < accounts;
+瓷 < crockery;
+腥 < raw\-meat;
+咸 < together;
+疫 < epidemic;
+啪 < syllable;
+膨 < to\-swell;
+吱 < chirping;
+菌 < mushroom;
+琐 < trifling;
+苟 < careless;
+崛 < towering;
+凸 < protrude;
+嘀 < backbite;
+铐 < shackles;
+谕 < proclaim;
+迸 < gush\-out;
+剔 < pick\-out;
+冀 < hope\-for;
+砚 < inkstone;
+捍 < ward\-off;
+臀 < buttocks;
+倔 < stubborn;
+奄 < ere\-long;
+侥 < be\-lucky;
+梵 < buddhist;
+褥 < mattress;
+晖 < sunshine;
+畴 < farmland;
+瞟 < glare\-at;
+瘸 < lameness;
+澎 < splatter;
+潦 < to\-flood;
+偎 < cling\-to;
+蝎 < scorpion;
+簸 < winnower;
+庶 < numerous;
+撂 < put\-down;
+晗 < pre\-dawn;
+蹊 < footpath;
+阉 < castrate;
+淆 < confused;
+萦 < entangle;
+榆 < elm\-tree;
+猝 < abruptly;
+曦 < sunlight;
+渤 < swelling;
+辘 < windlass;
+铝 < aluminum;
+捋 < to\-pluck;
+虻 < horsefly;
+瞌 < doze\-off;
+亟 < urgently;
+徨 < doubtful;
+啐 < to\-taste;
+镯 < bracelet;
+刽 < amputate;
+藻 < splendid;
+惰 < indolent;
+燔 < to\-roast;
+涝 < inundate;
+绛 < deep\-red;
+氯 < chlorine;
+坍 < collapse;
+忐 < timorous;
+殡 < encoffin;
+昵 < intimate;
+俟 < wait\-for;
+桢 < hardwood;
+黏 < stick\-to;
+痘 < smallpox;
+槟 < betelnut;
+韭 < scallion;
+蔫 < withered;
+膂 < backbone;
+胫 < shinbone;
+臃 < swell\-up;
+岌 < perilous;
+玎 < jingling;
+隼 < aquiline;
+陲 < frontier;
+谶 < prophecy;
+偻 < humpback;
+铂 < platinum;
+纛 < a\-banner;
+铬 < chromium;
+胰 < pancreas;
+覃 < reach\-to;
+睾 < testicle;
+倨 < arrogant;
+讣 < obituary;
+钛 < titanium;
+浃 < saturate;
+旖 < romantic;
+缙 < red\-silk;
+衾 < coverlet;
+宸 < imperial;
+佞 < flattery;
+蛔 < tapeworm;
+氅 < overcoat;
+氟 < fluorine;
+氰 < cyanogen;
+鲟 < sturgeon;
+硒 < selenium;
+舨 < a\-sampan;
+烊 < to\-smelt;
+萱 < day\-lily;
+疸 < jaundice;
+铊 < thallium;
+诂 < exegesis;
+雉 < pheasant;
+颢 < luminous;
+栀 < gardenia;
+诒 < bequeath;
+颟 < dawdling;
+苋 < amaranth;
+瀣 < sea\-mist;
+箝 < tweezers;
+楮 < mulberry;
+遄 < to\-hurry;
+钒 < vanadium;
+苷 < licorice;
+钨 < tungsten;
+埸 < a\-border;
+嫒 < daughter;
+癜 < erythema;
+鸹 < the\-crow;
+曛 < twilight;
+骘 < stallion;
+坻 < an\-islet;
+觫 < to\-start;
+铵 < ammonium;
+氩 < argonium;
+卣 < wine\-pot;
+锑 < antimony;
+醛 < aldehyde;
+钽 < tantalum;
+砼 < concrete;
+熘 < to\-steam;
+窨 < a\-cellar;
+栲 < mangrove;
+鲣 < skipjack;
+铷 < rubidium;
+铕 < europium;
+钋 < polonium;
+砑 < to\-grind;
+洫 < to\-ditch;
+埚 < crucible;
+垤 < ant\-hill;
+卺 < winecups;
+嘏 < felicity;
+鲽 < flatfish;
+鲭 < mackerel;
+钪 < scandium;
+钫 < francium;
+钐 < samarium;
+祓 < exorcise;
+栳 < a\-basket;
+吲 < smile\-at;
+莰 < camphane;
+芴 < fluorene;
+赜 < abstruse;
+改編 < to\-adapt;
+白內障 < cataract;
+壓緊 < compress;
+醫學 < medicine;
+吞併 < to\-annex;
+靈活 < flexible;
+大篷車 < schooner;
+文獻 < document;
+外用 < external;
+監護人 < guardian;
+邊線 < sideline;
+正統 < orthodox;
+斯洛伐克 < slovakia;
+頻仍 < frequent;
+緯線 < latitude;
+不合適 < improper;
+無誤 < verified;
+日曆 < calendar;
+剝落 < peel\-off;
+預卜 < foretell;
+謹慎 < cautious;
+茶館 < teahouse;
+企業間網路 < extranet;
+觀察者 < observer;
+鳥籠 < birdcage;
+建築 < building;
+藥劑士 < druggist;
+不信任 < mistrust;
+建立 < creation;
+因特網 < internet;
+心手 < new\-hand;
+冰隙 < crevasse;
+霸權 < hegemony;
+危急 < critical;
+隙縫 < aperture;
+對稱性 < symmetry;
+親身 < personal;
+確定 < definite;
+檢測器 < detector;
+終身 < lifelong;
+魔術師 < magician;
+記者 < reporter;
+規避 < to\-evade;
+牧師 < chaplain;
+收益 < earnings;
+平行 < parallel;
+忠實 < faithful;
+步發 < footwork;
+分裂 < split\-up;
+新書 < new\-book;
+不朽的 < immortal;
+口交 < oral\-sex;
+創立 < to\-found;
+煤箱 < coal\-box;
+油炸圈餅 < doughnut;
+缺乏 < shortage;
+日後 < sometime;
+歷史性 < historic;
+因﹍之故 < inasmuch;
+災難 < disaster;
+徹底 < thorough;
+檸檬水 < lemonade;
+鱉裙 < calipash;
+警句 < aphorism;
+早已 < long\-ago;
+破曉 < daybreak;
+雨滴 < raindrop;
+以太網 < ethernet;
+明天 < tomorrow;
+妖孽 < evildoer;
+電氣 < electric;
+酬報 < to\-repay;
+負重擔 < burdened;
+遺產 < heritage;
+硬度 < hardness;
+無聊 < nonsense;
+橫過 < traverse;
+雍容大度 < generous;
+征戰 < campaign;
+課本 < textbook;
+凋謝 < languish;
+十二月 < december;
+計算 < to\-count;
+開除 < to\-expel;
+纖巧 < delicate;
+擦網球 < net\-ball;
+無縫 < seamless;
+冠軍 < champion;
+准許 < to\-allow;
+電梯 < elevator;
+蓋層 < cap\-rock;
+面對 < confront;
+無線 < wireless;
+聖保羅 < st\.\-paul;
+通紅 < very\-red;
+包抄 < outflank;
+辨認 < identify;
+原來 < original;
+好好兒地 < properly;
+多數 < majority;
+物品 < articles;
+政治 < politics;
+半夜 < midnight;
+新年 < new\-year;
+旅客 < traveler;
+逼真 < lifelike;
+騎士氣概 < chivalry;
+西裡爾 < cyrillic;
+公釐 < decigram;
+殺戮 < massacre;
+艾德蕾德 < adelaide;
+力氣 < strength;
+內部 < interior;
+繡帷 < tapestry;
+太忙 < too\-busy;
+睡眠 < sleeping;
+十四 < fourteen;
+常坐汽車者 < motorist;
+平等 < equality;
+包層 < cladding;
+汽車展覽會 < car\-show;
+再見 < good\-bye;
+可擦寫 < erasable;
+免費軟件 < freeware;
+危亡 < at\-stake;
+巧計 < maneuver;
+著手 < commence;
+桃花心木 < mahogany;
+盲腸 < appendix;
+牧羊者 < shepherd;
+支柱 < mainstay;
+形容 < describe;
+無疑 < no\-doubt;
+強悍 < valliant;
+粗野 < insolent;
+袋鼠 < kangaroo;
+軟體 < software;
+新型 < new\-type;
+培育 < to\-train;
+煤油 < kerosene;
+加時 < overtime;
+標準規格 < standard;
+光輝 < radiance;
+復元 < recovery;
+十八 < eighteen;
+多少 < how\-much;
+十克 < decagram;
+地雷 < landmine;
+如今 < nowadays;
+邪惡 < sinister;
+無論何時 < whenever;
+觀看 < to\-watch;
+得分 < to\-score;
+筆記本 < notebook;
+軀體 < the\-body;
+硬件 < hardware;
+天堂 < paradise;
+薰衣草 < lavender;
+十九 < nineteen;
+光譜 < spectrum;
+補遺 < addendum;
+遠東 < far\-east;
+幾乎沒有 < scarcely;
+十三 < thirteen;
+不必要 < needless;
+機能 < function;
+蒙古 < mongolia;
+牧師之職 < ministry;
+遠景 < prospect;
+紐約 < new\-york;
+提議 < proposal;
+進步 < progress;
+電報 < telegram;
+請願書 < petition;
+車間 < workshop;
+往來 < dealings;
+引導 < to\-guide;
+龓 < a\-halter;
+裝貨 < shipping;
+力度 < dynamism;
+投資者 < investor;
+過於 < too\-much;
+鼚 < drumming;
+監禁 < imprison;
+冰窖 < icehouse;
+堂皇 < imposing;
+麮 < porridge;
+省略 < omission;
+六十四萬 < 64\-0\-000;
+寄生物 < parasite;
+肯塔基 < kentucky;
+母係 < maternal;
+柬埔寨 < cambodia;
+鵙 < a\-shrike;
+採買 < purchase;
+輕視 < contempt;
+精致 < delicacy;
+鳮 < chickens;
+遲延 < to\-delay;
+鲺 < cat\-fish;
+攜帶 < to\-carry;
+延展 < to\-scale;
+鯺 < blowfish;
+一小時 < one\-hour;
+部位 < position;
+蒙托羅拉 < motorola;
+人行道 < sidewalk;
+鬋 < forelock;
+鬀 < to\-shave;
+髵 < whiskers;
+內置 < internal;
+限期 < deadline;
+安全性 < security;
+髎 < hip\-bone;
+記憶 < memories;
+遷就 < to\-yield;
+強勁 < powerful;
+殺人 < homicide;
+再保証 < reassure;
+駦 < to\-mount;
+馩 < aromatic;
+人工流產 < abortion;
+剛性 < rigidity;
+餫 < dumpling;
+餩 < hiccough;
+餟 < libation;
+餙 < to\-adorn;
+颱 < taiphoon;
+勃勃 < thriving;
+擁擠 < to\-crowd;
+授課 < to\-teach;
+解散 < dissolve;
+韡 < gorgeous;
+韠 < knee\-pad;
+陰性 < feminine;
+靺 < stocking;
+動作 < movement;
+雞尾酒 < cocktail;
+敦促 < to\-press;
+霨 < clouding;
+橄欖球 < football;
+雇員 < employee;
+瀉藥 < laxative;
+換置 < displace;
+平底鍋 < saucepan;
+紀念碑 < monument;
+圖謀 < conspire;
+董事 < director;
+動人 < touching;
+阸 < distress;
+阻擊 < to\-check;
+補花 < applique;
+镥 < lutetium;
+塗抹 < to\-smear;
+裝船 < shipment;
+欺壓 < to\-bully;
+荒涼 < desolate;
+凹板 < intaglio;
+劣勢 < inferior;
+喇叭水仙 < daffodil;
+分數 < fraction;
+壓力 < pressure;
+那個 < that\-one;
+無情 < pitiless;
+擦寫 < to\-erase;
+壓制 < suppress;
+精確 < accurate;
+鍩 < nobelium;
+鍚 < frontlet;
+侵入者 < intruder;
+經常 < everyday;
+錒 < actinium;
+改革者 < reformer;
+步兵 < infantry;
+銍 < a\-sickle;
+平房 < bungalow;
+冰涼 < ice\-cold;
+企業內網路 < intranet;
+幻想 < delusion;
+序幕 < prologue;
+醆 < wine\-cup;
+醃 < marinate;
+酲 < hangover;
+鄈 < slippers;
+避免 < to\-avert;
+場所 < location;
+邅 < hesitant;
+雇主 < employer;
+揭發 < disclose;
+迻 < to\-shift;
+傳訊 < subpoena;
+評估 < evaluate;
+手提箱 < suitcase;
+偽造 < to\-forge;
+火牆 < firewall;
+轊 < axle\-tip;
+輬 < a\-hearse;
+凶手 < murderer;
+不同意 < disagree;
+共和國 < republic;
+無害 < harmless;
+軟膏 < ointment;
+蹾 < to\-squat;
+掌聲 < applause;
+表觀 < apparent;
+蹧 < to\-spoil;
+埋沒 < oblivion;
+平常 < ordinary;
+踦 < the\-shin;
+拔除 < pull\-out;
+增加 < to\-raise;
+跂 < creeping;
+無論何事 < anything;
+摩擦 < friction;
+覺得 < to\-think;
+高貴 < grandeur;
+棒磨機 < rod\-mill;
+充當 < serve\-as;
+為時 < timewise;
+達到 < to\-reach;
+豎 < vertical;
+西方 < the\-west;
+精力充沛 < vigorous;
+譹 < to\-shout;
+通報 < bulletin;
+撥子 < plectrum;
+抗體 < antibody;
+臨近 < close\-to;
+莫大 < greatest;
+哥倫布紀 < columbus;
+切實 < feasible;
+諆 < to\-cheat;
+詋 < to\-curse;
+詊 < pleasing;
+分子 < molecule;
+相應 < relevant;
+左輪手槍 < revolver;
+阻塞 < to\-block;
+襶 < ignorant;
+絕對 < absolute;
+襫 < raincoat;
+分娩 < delivery;
+管道 < pipeline;
+哥倫比亞 < colombia;
+遊伴 < playmate;
+工業 < industry;
+冰排 < ice\-raft;
+進入 < to\-enter;
+小夜曲 < serenade;
+小標題 < subtitle;
+路面 < pavement;
+蝟 < hedgehog;
+蝏 < \(insect\);
+撒母耳記下 < 2\-samuel;
+撒母耳記上 < 1\-samuel;
+有機體 < organism;
+直徑 < diameter;
+無名 < nameless;
+堵塞 < blockage;
+撤回 < withdraw;
+蚳 < ant\-eggs;
+經典 < classics;
+死衚衕 < dead\-end;
+騰騰 < steaming;
+交響曲 < symphony;
+逼人 < pressing;
+無助 < helpless;
+採用 < to\-adopt;
+已故 < the\-late;
+發汗 < to\-sweat;
+國立 < national;
+時間表 < schedule;
+蔉 < earth\-up;
+箴言 < proverbs;
+補爐 < fettling;
+自製 < homemade;
+葖 < follicle;
+頭向前 < headlong;
+阻力 < obstacle;
+探險者 < explorer;
+蠕蠕 < wiggling;
+艩 < tholepin;
+送別 < farewell;
+艌 < to\-caulk;
+無人 < unmanned;
+公斤 < kilogram;
+君主政治 < monarchy;
+受難者 < sufferer;
+抽象 < abstract;
+出口 < to\-speak;
+脰 < the\-neck;
+親善 < goodwill;
+興致 < interest;
+途中 < en\-route;
+肏 < copulate;
+間接 < indirect;
+鐵路 < railroad;
+搬弄 < move\-sth;
+巴拉圭 < paraguay;
+標本 < specimen;
+第一步 < step\-one;
+調味汁 < dressing;
+退位 < abdicate;
+罇 < a\-goblet;
+逃亡 < fugitive;
+戰鬥 < to\-fight;
+統一 < to\-unify;
+刑事 < criminal;
+數據庫 < database;
+縿 < streamer;
+縴 < tow\-line;
+債權人 < creditor;
+衝突 < conflict;
+追上 < overtake;
+綯 < to\-braid;
+綪 < dark\-red;
+航空 < aviation;
+修辭 < rhetoric;
+濾液 < filtrate;
+人口稠密 < populous;
+紞 < a\-fringe;
+對面 < opposite;
+函件 < letteres;
+弟兄們 < brethren;
+小說家 < novelist;
+籣 < bow\-case;
+簬 < \(bamboo\);
+馴鹿 < reindeer;
+驚訝 < confound;
+捕獲 < to\-catch;
+採樣 < sampling;
+純品 < sterling;
+近來 < recently;
+秏 < to\-waste;
+第五十 < fiftieth;
+三明治 < sandwich;
+寺院 < cloister;
+答話 < to\-reply;
+催化劑 < catalyst;
+火山 < volcanic;
+其實 < actually;
+生詞 < new\-word;
+磟 < mediocre;
+梵語 < sanskrit;
+碏 < coloured;
+便道 < shortcut;
+消費者 < consumer;
+寧靜 < tranquil;
+砹 < astatine;
+矋 < to\-stare;
+封鎖 < blockade;
+俯視 < overlook;
+瞓 < to\-sleep;
+睏 < be\-tired;
+引人注目 < striking;
+睅 < big\-eyed;
+濕氣 < moisture;
+盬 < salt\-pit;
+阿奇歷斯 < achilles;
+精密 < accuracy;
+茶匙 < teaspoon;
+兄弟 < brothers;
+癒 < get\-well;
+癃 < weakness;
+瘼 < sickness;
+瘶 < to\-cough;
+瘰 < scrofula;
+興盛 < flourish;
+倘若 < provided;
+關係 < relation;
+發射 < to\-shoot;
+瓩 < kilowatt;
+琫 < ornament;
+採掘 < excavate;
+越過 < to\-cross;
+珷 < \/2\-pr\-st;
+兵器 < weaponry;
+拔節 < jointing;
+演習 < exercise;
+奧德修斯 < odysseus;
+紊亂 < disorder;
+跳舞 < to\-dance;
+犎 < the\-zebu;
+牳 < \(bovine\);
+範疇 < category;
+兵員 < soldiers;
+滲色 < bleeding;
+熤 < \(person\);
+蛋黃 < egg\-yolk;
+焌 < to\-light;
+炤 < illumine;
+背面 < the\-back;
+瀡 < slippery;
+坦桑尼亞 < tanzania;
+輔導 < to\-coach;
+寶貴 < valuable;
+潎 < rippling;
+入口 < entrance;
+湢 < bathroom;
+開創 < initiate;
+侵蝕 < to\-erode;
+扁蟲 < flatworm;
+經陸路 < overland;
+容量 < capacity;
+描圖 < to\-trace;
+四月十七號 < april\-17;
+赤足 < barefoot;
+泐 < to\-write;
+沍 < freezing;
+在戶外 < outdoors;
+氉 < restless;
+毾 < a\-coarse;
+毻 < to\-moult;
+不顧一切 < reckless;
+殽 < mixed\-up;
+製品 < products;
+共享 < to\-share;
+欛 < a\-handle;
+擦棒球 < foul\-tip;
+櫃 < cupboard;
+公主 < princess;
+提名 < nominate;
+四方 < four\-way;
+中世紀 < medieval;
+樚 < a\-pulley;
+粗厲 < abrasive;
+傾聽者 < listener;
+椄 < to\-graft;
+梱 < doorsill;
+接收器 < receiver;
+勢如破竹 < sweeping;
+自治 < autonomy;
+高架 < overhead;
+困惑 < bewilder;
+柤 < hawthorn;
+枻 < long\-oar;
+笑聲 < laughter;
+農家庭院 < farmyard;
+松鼠 < squirrel;
+家庭作業 < homework;
+先令 < shilling;
+渠道 < channels;
+昡 < long\-day;
+校訂 < revision;
+旘 < a\-pennon;
+棒球 < baseball;
+優先 < priority;
+敪 < to\-weigh;
+攞 < to\-split;
+擩 < to\-stain;
+噴泉 < fountain;
+摷 < to\-knock;
+搵 < wipe\-off;
+搲 < to\-seize;
+搋 < to\-thump;
+揰 < poke\-out;
+揜 < cover\-up;
+軍士 < sergeant;
+揌 < to\-shake;
+衣廚 < wardrobe;
+拑 < to\-clamp;
+份量 < quantity;
+扅 < gate\-bar;
+應該 < ought\-to;
+採光 < lighting;
+懕 < satiated;
+憪 < composed;
+葡萄牙 < portugal;
+裁判 < judgment;
+即將來臨 < imminent;
+慫 < to\-alarm;
+慅 < agitated;
+慁 < dishonor;
+人類 < humanity;
+估計 < estimate;
+惔 < cheerful;
+坐下 < sit\-down;
+回家 < homeward;
+使者 < emissary;
+恝 < carefree;
+打破 < to\-break;
+恌 < to\-worry;
+假期 < vacation;
+不正常 < abnormal;
+衣子 < covering;
+音樂光碟 < music\-cd;
+軼事 < anecdote;
+廤 < to\-place;
+抱歉 < be\-sorry;
+極好 < fabulous;
+極大 < enormous;
+界標 < landmark;
+不透氣 < airtight;
+五彩賓紛 < colorful;
+帵 < remnants;
+節慶 < festival;
+暖氣機 < radiator;
+嶭 < elevated;
+阿肯色 < arkansas;
+神學研究所 < seminary;
+鬧區 < downtown;
+岊 < foothill;
+鼓吹者 < advocate;
+侵略 < invasion;
+併紗 < doubling;
+病夫 < sick\-man;
+授予 < to\-award;
+地下室 < basement;
+國內 < domestic;
+宬 < archives;
+嬬 < mistress;
+簡化 < simplify;
+漢密爾頓 < hamilton;
+買通 < to\-bribe;
+冒犯者 < offender;
+姦 < adultery;
+篡奪 < to\-usurp;
+臨床 < clinical;
+保真度 < fidelity;
+栽種 < to\-plant;
+戰略 < strategy;
+園丁 < gardener;
+本體 < noumenon;
+人造 < man\-made;
+語言學家 < linguist;
+居民 < resident;
+腳步 < footstep;
+埼 < headland;
+拼字 < spelling;
+東部 < the\-east;
+不體面 < shameful;
+高地 < highland;
+固件 < firmware;
+龍頭老大 < big\-boss;
+腓利門書 < philemon;
+鑲嵌 < to\-inlay;
+業務 < business;
+倍數 < multiple;
+對照 < contrast;
+囮 < inveigle;
+肩膀 < shoulder;
+身份 < identity;
+嗃 < to\-flute;
+就此 < and\-thus;
+埃塞俄比亞 < ethiopia;
+啇 < to\-stalk;
+筆架 < pen\-rack;
+唥 < a\-bundle;
+生日 < birthday;
+呠 < to\-spurt;
+鐘擺 < pendulum;
+小衝突 < skirmish;
+叒 < obedient;
+厵 < a\-spring;
+抱怨 < complain;
+卼 < unsteady;
+卹 < sympathy;
+學習 < to\-learn;
+折扣 < discount;
+勌 < to\-labor;
+劻 < flurried;
+懸疑 < suspense;
+劙 < a\-divide;
+懷疑 < to\-doubt;
+當天 < that\-day;
+剟 < to\-prick;
+鍵盤 < keyboard;
+凥 < to\-dwell;
+冇 < have\-not;
+排水渠 < drainage;
+巴基斯坦 < pakistan;
+麻醉劑 < narcotic;
+僃 < prepared;
+家用 < home\-use;
+佴 < a\-second;
+被侵害 < stricken;
+致力 < work\-for;
+五角 < pentagon;
+䶲 < the\-edge;
+䵲 < raw\-hemp;
+䵚 < kaoliang;
+䵓 < the\-mole;
+䵉 < abutilon;
+䴻 < dry\-food;
+䴫 < antelope;
+房東 < landlord;
+䴚 < saltpond;
+䳻 < an\-eagle;
+修建 < to\-build;
+䲖 < big\-fish;
+計算機 < computer;
+突發 < outburst;
+䰟 < the\-soul;
+䯪 < big\-head;
+信徒 < believer;
+䯚 < the\-ribs;
+䯉 < to\-choke;
+白木耳 < tremella;
+打掃 < to\-clean;
+技工 < mechanic;
+持久 < duration;
+䭱 < a\-little;
+風車 < windmill;
+獨裁者 < dictator;
+䬉 < hot\-wind;
+䫷 < the\-jowl;
+手提 < portable;
+不靈 < not\-work;
+䫃 < the\-lips;
+䪶 < the\-chin;
+䪩 < to\-chant;
+䪜 < a\-shield;
+䪑 < to\-stick;
+䪅 < a\-quiver;
+䩠 < a\-girdle;
+䩉 < the\-face;
+䩈 < a\-plumpy;
+䨼 < dyestuff;
+生存 < to\-exist;
+賦稅 < taxation;
+䧫 < a\-trench;
+䧁 < to\-leave;
+浴衣 < bathrobe;
+一面 < one\-side;
+䥭 < evidence;
+恐龍 < dinosaur;
+記錄員 < recorder;
+䤿 < to\-carve;
+䤶 < a\-hammer;
+䤳 < a\-mirrow;
+巴巴多斯 < barbados;
+䤫 < a\-chisel;
+䤐 < to\-drink;
+畫像 < portrait;
+當作 < treat\-as;
+禮貌 < courtesy;
+䢐 < to\-go\-to;
+蘇格蘭 < scotland;
+信封 < envelope;
+䠾 < to\-dodge;
+䠬 < insomnia;
+䠞 < wrinkled;
+聲稱 < to\-claim;
+䠁 < to\-go\-up;
+䟸 < the\-calf;
+對手 < opponent;
+信守 < abide\-by;
+䞮 < to\-crawl;
+聖約 < covenant;
+校正 < regulate;
+䝂 < to\-erect;
+䜬 < a\-cavern;
+䜘 < to\-guard;
+䜐 < to\-libel;
+䜃 < to\-blame;
+䛒 < to\-argue;
+重點 < emphasis;
+䛇 < to\-laugh;
+䚷 < to\-treat;
+䚯 < to\-quell;
+聽眾 < audience;
+葡萄園 < vineyard;
+䘫 < old\-rags;
+䘜 < a\-napkin;
+䘉 < silkworm;
+騎師 < horseman;
+秧苗 < seedling;
+䗘 < a\-weevil;
+䗈 < a\-gadfly;
+使興奮 < exciting;
+䗇 < the\-toad;
+䖻 < ephemera;
+䖤 < to\-creep;
+䖛 < of\-tiger;
+第十一 < eleventh;
+恭順 < deferent;
+鍵槽 < key\-slot;
+購物 < shopping;
+單據 < receipts;
+會變 < variable;
+䓕 < polygala;
+䒳 < a\-flower;
+少年 < juvenile;
+騙子 < swindler;
+聯盟 < alliance;
+䑘 < to\-pound;
+䑃 < dim\-moon;
+䐒 < not\-fine;
+方程式 < equation;
+路口 < crossing;
+䏟 < fat\-meat;
+處罰 < penalize;
+䏉 < to\-waver;
+䏈 < to\-unite;
+金魚 < goldfish;
+䎲 < ear\-lobe;
+䎣 < a\-plough;
+彫刻家 < sculptor;
+䌷 < a\-thread;
+䌯 < a\-truban;
+䌫 < a\-hawser;
+含量 < contents;
+䌃 < raw\-silk;
+阿托品 < atropine;
+䋡 < to\-relax;
+䋃 < stinging;
+䊸 < to\-twist;
+䊝 < to\-exile;
+用功 < diligent;
+䊁 < leavings;
+䉻 < red\-rice;
+䉱 < a\-cradle;
+䉒 < a\-winnow;
+䈶 < an\-arrow;
+地區性 < regional;
+䇌 < to\-stand;
+䆸 < spacious;
+筆名 < pen\-name;
+佛教 < buddhism;
+可靠 < reliable;
+三角形 < triangle;
+寓所 < dwelling;
+䃑 < speckles;
+䁥 < to\-blink;
+䁜 < big\-eyes;
+由余 < owing\-to;
+䀈 < a\-vessel;
+㿢 < to\-shine;
+㿡 < a\-helmet;
+㿈 < an\-ulcer;
+㿅 < ringworm;
+㾸 < a\-scabby;
+頁面 < web\-page;
+㾍 < diseases;
+㽹 < to\-faint;
+渴望 < desirous;
+本能 < instinct;
+嗜好 < fondness;
+終端用戶 < end\-user;
+墨水瓶架 < inkstand;
+㺚 < an\-otter;
+誘拐者 < abductor;
+缺陷 < a\-defect;
+㺇 < a\-warden;
+㹸 < the\-lion;
+蛋殼 < eggshell;
+戲劇性 < dramatic;
+懲罰性 < punitive;
+㸝 < a\-shovel;
+八角楓 < alangium;
+㷀 < solitary;
+㶼 < very\-hot;
+㴶 < to\-water;
+滑冰 < to\-skate;
+㴊 < an\-abyss;
+㳫 < repeated;
+㳒 < statutes;
+北海道 < hokkaido;
+㲷 < nitrogen;
+㲳 < to\-touch;
+宗教 < religion;
+低成本 < low\-cost;
+㱿 < the\-husk;
+㱺 < the\-skin;
+㱢 < the\-dead;
+㱗 < a\-breath;
+命脈 < lifeline;
+乃至 < and\-even;
+租稅 < land\-tax;
+不行 < won''t\-do;
+守時 < punctual;
+㮭 < a\-casket;
+暗轉 < blackout;
+打印 < to\-print;
+㬧 < a\-collar;
+明信片 < postcard;
+救贖主 < redeemer;
+㫽 < darkness;
+㪐 < unstable;
+貂皮 < mink\-fur;
+㩨 < to\-crack;
+㩓 < to\-wound;
+醫院 < hospital;
+㨓 < to\-close;
+㨁 < to\-throw;
+㧵 < to\-exact;
+㧱 < to\-bring;
+泳衣 < swimsuit;
+㦿 < a\-window;
+淚水 < teardrop;
+生命力 < vitality;
+㥰 < mournful;
+㥁 < morality;
+㤮 < an\-error;
+㤏 < grievous;
+肉桂 < cinnamon;
+㣫 < the\-heel;
+減掉 < subtract;
+㣞 < to\-walki;
+鼻炎 < rhinitis;
+㠹 < a\-turban;
+產量多 < fruitful;
+看守者 < watchman;
+㠊 < a\-rugged;
+法利賽人 < pharisee;
+㞷 < luxuiant;
+向西 < westward;
+叛逆 < to\-rebel;
+㞑 < the\-tail;
+㞉 < big\-foot;
+㝭 < to\-awake;
+㝘 < harmonoy;
+㜶 < a\-couple;
+戰區 < war\-zone;
+叱責 < reproach;
+佔領者 < occupant;
+科羅拉多 < colorado;
+貞潔 < chastity;
+㙢 < a\-trowel;
+㙃 < a\-cavity;
+栗子 < chestnut;
+㘙 < to\-groan;
+㘀 < to\-sound;
+中繼 < to\-relay;
+㗪 < mouthful;
+㗜 < to\-smell;
+㗉 < incisive;
+㖩 < not\-pure;
+㕼 < to\-brawl;
+鎮區 < township;
+㕛 < a\-friend;
+㕐 < inclined;
+㕊 < to\-slant;
+板油 < leaf\-fat;
+匪徒集團 < gangster;
+㓓 < thin\-ice;
+㒹 < to\-upset;
+懸垂 < overhang;
+射頻噪音 < rf\-noise;
+酒鬼 < drunkard;
+不肖 < unworthy;
+班機 < airliner;
+㐜 < an\-enemy;
+使吃驚 < astonish;
+窗子 < casement;
+應對 < response;
+交流 < exchange;
+叛變 < renegade;
+戰事 < fighting;
+幸存者 < survivor;
+人道主義 < humanism;
+一心一意 < intently;
+櫻花草 < primrose;
+核准 < sanction;
+星期四 < thursday;
+決定性 < decisive;
+日耳曼 < germanic;
+譴責 < denounce;
+案件 < law\-case;
+幾何學 < geometry;
+姻親 < affinity;
+村民 < villager;
+慷慨 < vehement;
+論點 < argument;
+傾向於 < prone\-to;
+黃瓜 < cucumber;
+暗自 < inwardly;
+懊喪 < dejected;
+稀有 < uncommon;
+飛機 < airplane;
+室友 < roommate;
+貶抑 < belittle;
+背包 < knapsack;
+精神錯亂 < insanity;
+黨派 < partisan;
+子層 < sublayer;
+飲料 < beverage;
+三月二十一號 < march\-21;
+人手 < manpower;
+星期六 < saturday;
+防守者 < defender;
+二月 < february;
+沒落 < downfall;
+含碳 < carbonic;
+嘉年華會 < carnival;
+最為 < the\-most;
+博茨瓦納 < botswana;
+不用 < need\-not;
+風水 < fengshui;
+水路 < waterway;
+子女 < children;
+事故 < accident;
+刺激物 < stimulus;
+壟斷販賣 < monopoly;
+不獨 < not\-only;
+奧克拉荷馬 < oklahoma;
+孵化 < breeding;
+鞭蟲 < whipworm;
+不爽 < not\-well;
+保加利亞 < bulgaria;
+懂事 < sensible;
+食慾 < appetite;
+震驚 < to\-shock;
+吸煙 < to\-smoke;
+謝謝 < to\-thank;
+不濟 < not\-good;
+頭痛 < headache;
+暗盒 < magazine;
+中止 < to\-cease;
+講話 < a\-speech;
+林地 < woodland;
+架勢 < attitude;
+貴族身份 < lordship;
+不信用 < distrust;
+太長 < oversize;
+勢頭 < momentum;
+愚弄 < derision;
+往還 < contacts;
+礦產 < minerals;
+提供諸 < provider;
+爐邊 < fireside;
+肌肉發達 < muscular;
+工程師 < engineer;
+變種 < mutation;
+中繼器 < repeater;
+論述 < treatise;
+洋琵琶 < mandolin;
+聖化 < sanctify;
+惡作劇 < mischief;
+重申 < reaffirm;
+暴洪 < a\-sudden;
+子午線 < meridian;
+製作者 < producer;
+不在乎 < not\-mind;
+餡兒 < stuffing;
+音樂家 < musician;
+使麻痺 < paralyze;
+千字節 < kilobyte;
+變阻器 < theostat;
+流感疫苗 < flu\-shot;
+海外 < overseas;
+王家 < princely;
+哨兵 < sentinel;
+想家 < homesick;
+買主 < customer;
+預測 < forecast;
+美日 < us\-japan;
+負債 < indebted;
+雨量 < rainfall;
+司法 < judicial;
+女房東 < landlady;
+工作過度 < overwork;
+加長 < lengthen;
+吐棄 < to\-spurn;
+處分 < disposal;
+日美 < japan\-us;
+增高 < heighten;
+遲頓 < inactive;
+財主 < rich\-man;
+夢話 < daydream;
+提供者 < supplier;
+不懈 < untiring;
+最少 < smallest;
+堅固性 < firmness;
+護照 < passport;
+主宰 < dominate;
+夢見 < to\-dream;
+不怕 < fearless;
+沖洗 < to\-rinse;
+不很 < not\-very;
+白化病 < albinism;
+剷除 < root\-out;
+神性 < divinity;
+總裁 < chairman;
+沉浸 < permeate;
+第六十 < sixtieth;
+美德 < a\-virtue;
+雄辯 < eloquent;
+點名 < rollcall;
+豪俠 < cavalier;
+文明化 < civilize;
+外號 < nickname;
+海上 < maritime;
+熱誠 < devotion;
+合成 < compound;
+外交官 < diplomat;
+同意 < to\-agree;
+向後 < backward;
+服務 < to\-serve;
+民眾 < populace;
+威望 < prestige;
+活動 < activity;
+叛教 < apostacy;
+白雲石 < dolomite;
+大能 < almighty;
+時機 < occasion;
+反映 < reaction;
+文職 < civilian;
+婚嫁 < marriage;
+君子 < nobleman;
+特派 < dispatch;
+使習慣 < accustom;
+一團 < regiment;
+播音 < transmit;
+台座 < pedestal;
+過載 < overload;
+祖國 < homeland;
+泰國 < thailand;
+解開 < to\-untie;
+愛因斯坦 < einstein;
+暗室 < darkroom;
+奶牛 < milk\-cow;
+冰晶石 < cryolite;
+年青 < youthful;
+一周 < one\-week;
+一向 < all\-long;
+曝光 < exposure;
+不小心 < heedless;
+納稅人 < taxpayer;
+無論何處 < anywhere;
+再出現 < reappear;
+一匙 < spoonful;
+研究 < research;
+怠惰 < idleness;
+包皮 < wrapping;
+靠背椅 < armchair;
+奉現 < offering;
+不倦 < tireless;
+操作者 < operator;
+訂購 < to\-order;
+絲狀物 < filament;
+斑白 < grizzled;
+暴力 < violence;
+警惕 < vigilant;
+波動 < undulate;
+奇特 < peculiar;
+忠於 < loyal\-to;
+發明家 < inventor;
+選舉 < to\-elect;
+大西洋 < atlantic;
+韌帶 < ligament;
+迷 < bewitch;
+述 < narrate;
+迥 < distant;
+中 < central;
+志 < purpose;
+迎 < receive;
+忌 < jealous;
+和 < harmony;
+辯 < dispute;
+去 < go\-away;
+对 < correct;
+瞠 < look\-at;
+律 < statute;
+役 < service;
+張 < stretch;
+已 < already;
+弘 < enlarge;
+引 < to\-pull;
+弔 < condole;
+較 < compare;
+意 < thought;
+进 < advance;
+盡 < exhaust;
+廉 < upright;
+情 < feeling;
+皰 < pimples;
+庖 < kitchen;
+躓 < stumble;
+庄 < village;
+并 < combine;
+蹠 < step\-on;
+癖 < craving;
+幕 < curtain;
+代 < replace;
+師 < teacher;
+总 < collect;
+痴 < foolish;
+华 < flowery;
+症 < disease;
+病 < illness;
+反 < reverse;
+疎 < neglect;
+务 < affairs;
+崩 < rupture;
+特 < special;
+服 < clothes;
+賽 < compete;
+賑 < relieve;
+科 < section;
+豫 < relaxed;
+联 < connect;
+保 < protect;
+革 < leather;
+尊 < respect;
+品 < article;
+尉 < officer;
+士 < scholar;
+量 < measure;
+程 < journey;
+審 < examine;
+极 < extreme;
+令 < command;
+未 < not\-yet;
+持 < sustain;
+历 < history;
+宣 < declare;
+宗 < lineage;
+议 < consult;
+率 < to\-lead;
+委 < appoint;
+兵 < soldier;
+孔 < opening;
+謹 < prudent;
+講 < explain;
+格 < pattern;
+諸 < several;
+諦 < careful;
+怕 < to\-fear;
+狡 < cunning;
+准 < approve;
+精 < essence;
+竟 < finally;
+誠 < sincere;
+整 < orderly;
+婉 < amiable;
+备 < prepare;
+另 < another;
+陈 < exhibit;
+故 < ancient;
+訛 < swindle;
+託 < entrust;
+訊 < inquire;
+爆 < crackle;
+批 < comment;
+送 < see\-off;
+奇 < strange;
+燕 < swallow;
+燈 < lantern;
+游 < to\-swim;
+份 < portion;
+敢 < to\-dare;
+煽 < stir\-up;
+朝 < dynasty;
+育 < produce;
+图 < diagram;
+刘 < surname;
+夕 < evening;
+承 < inherit;
+乡 < country;
+裁 < cut\-out;
+演 < perform;
+袂 < sleeves;
+衰 < decline;
+塞 < stop\-up;
+景 < scenery;
+蠢 < wriggle;
+依 < rely\-on;
+瀝 < trickle;
+胜 < victory;
+濡 < immerse;
+濟 < to\-help;
+蟋 < cricket;
+漆 < varnish;
+漁 < to\-fish;
+散 < scatter;
+蛆 < maggots;
+曲 < crooked;
+溶 < to\-melt;
+厂 < factory;
+肯 < willing;
+抓 < scratch;
+虫 < insects;
+湧 < well\-up;
+靠 < lean\-on;
+授 < give\-to;
+渇 < thirsty;
+淺 < shallow;
+淫 < obscene;
+鷄 < chicken;
+嗇 < miserly;
+抱 < embrace;
+睛 < eyeball;
+括 < include;
+降 < descend;
+私 < private;
+蔑 < disdain;
+泡 < bubbles;
+闹 < quarrel;
+醒 < wake\-up;
+沌 < chaotic;
+暴 < violent;
+抢 < plunder;
+篇 < chapter;
+鱈 < codfish;
+诸 < various;
+叭 < trumpet;
+叙 < express;
+厭 < dislike;
+雅 < elegant;
+雷 < thunder;
+竞 < contend;
+操 < conduct;
+诺 < promise;
+匆 < hastily;
+欅 < zelkova;
+苺 < berries;
+苗 < sprouts;
+碰 < collide;
+苑 < pasture;
+仿 < imitate;
+機 < machine;
+栏 < railing;
+刈 < cut\-off;
+狠 < vicious;
+映 < project;
+忠 < loyalty;
+扎 < pull\-up;
+腹 < stomach;
+舒 < open\-up;
+凶 < culprit;
+慰 < comfort;
+餘 < surplus;
+撒 < release;
+愁 < anxiety;
+斤 < a\-catty;
+僑 < sojourn;
+扶 < support;
+毁 < destroy;
+械 < weapons;
+违 < disobey;
+丢 < discard;
+肆 < indulge;
+绕 < entwine;
+聳 < urge\-on;
+舰 < warship;
+恼 < angered;
+辣 < peppery;
+旋 < revolve;
+倉 < granary;
+罚 < penalty;
+拾 < pick\-up;
+恢 < restore;
+翁 < old\-man;
+羽 < feather;
+抖 < tremble;
+侯 < marquis;
+惑 < confuse;
+雕 < engrave;
+寿 < old\-age;
+锦 < brocade;
+杏 < apricot;
+慌 < nervous;
+屠 < butcher;
+柏 < cypress;
+霍 < quickly;
+陶 < pottery;
+摄 < take\-in;
+闯 < rush\-in;
+扰 < disturb;
+雀 < sparrow;
+阁 < chamber;
+卢 < cottage;
+柜 < cabinet;
+暇 < leisure;
+愧 < ashamed;
+晶 < crystal;
+晝 < daytime;
+筋 < muscles;
+撑 < prop\-up;
+填 < fill\-in;
+旺 < prosper;
+耗 < consume;
+悦 < pleased;
+斑 < mottled;
+践 < trample;
+惶 < fearful;
+簾 < a\-blind;
+贩 < peddler;
+戈 < halberd;
+鐐 < fetters;
+虹 < rainbow;
+寡 < widowed;
+郊 < suburbs;
+徽 < a\-badge;
+鲍 < abalone;
+笄 < hairpin;
+沾 < moisten;
+瞒 < deceive;
+竃 < furnace;
+裔 < progeny;
+匪 < bandits;
+榜 < placard;
+枉 < useless;
+骇 < terrify;
+撰 < compose;
+垃 < garbage;
+驼 < a\-camel;
+豹 < leopard;
+缴 < deliver;
+哨 < whistle;
+嚼 < prattle;
+昧 < obscure;
+旱 < drought;
+聂 < whisper;
+莽 < thicket;
+厮 < servant;
+茨 < caltrop;
+粘 < viscous;
+朽 < decayed;
+焕 < shining;
+熄 < put\-out;
+逾 < go\-over;
+醋 < vinegar;
+斌 < refined;
+恕 < forgive;
+沦 < be\-lost;
+岱 < daishan;
+讳 < conceal;
+岔 < diverge;
+垒 < rampart;
+翘 < turn\-up;
+觑 < peep\-at;
+拎 < to\-haul;
+噜 < verbose;
+凹 < concave;
+撩 < lift\-up;
+崽 < a\-child;
+涅 < blacken;
+簌 < falling;
+诛 < execute;
+掳 < capture;
+馅 < filling;
+硅 < silicon;
+抨 < impeach;
+肾 < kidneys;
+锭 < spindle;
+茬 < harvest;
+谤 < slander;
+钳 < pincers;
+睽 < staring;
+阱 < pitfall;
+汀 < sandbar;
+秤 < balance;
+晾 < air\-dry;
+跚 < stagger;
+莞 < smiling;
+鸥 < seagull;
+葆 < reserve;
+氢 < ammonia;
+帧 < picture;
+佯 < pretend;
+烬 < cinders;
+蚌 < oysters;
+谆 < patient;
+癞 < leprosy;
+啄 < to\-peck;
+燎 < to\-burn;
+迳 < pass\-by;
+恸 < sadness;
+咂 < to\-suck;
+盹 < to\-doze;
+俾 < so\-that;
+谚 < proverb;
+掸 < to\-dust;
+匮 < to\-lack;
+幡 < pennant;
+囱 < chimney;
+崂 < laoshan;
+蝌 < tadpole;
+铀 < uranium;
+挛 < tangled;
+绯 < scarlet;
+鸨 < bustard;
+蜗 < a\-snail;
+恫 < in\-pain;
+谀 < flatter;
+踮 < tip\-toe;
+馊 < spoiled;
+钙 < calcium;
+捱 < put\-off;
+蒿 < mugwort;
+酶 < enzymes;
+衢 < highway;
+磺 < sulphur;
+蹩 < to\-limp;
+浣 < to\-wash;
+疹 < measles;
+靥 < dimples;
+愆 < a\-fault;
+鸵 < ostrich;
+窕 < slender;
+迩 < be\-near;
+佰 < hundred;
+钹 < cymbals;
+靼 < tartars;
+煲 < to\-heat;
+獐 < roebuck;
+佝 < rickets;
+蓟 < circium;
+黜 < dismiss;
+摈 < exclude;
+飓 < cyclone;
+胱 < bladder;
+饽 < ferrule;
+馏 < distill;
+苯 < benzene;
+淼 < a\-flood;
+铱 < iridium;
+葩 < flowers;
+逡 < retreat;
+逶 < winding;
+萸 < dogwood;
+挝 < to\-beat;
+熵 < entropy;
+煨 < to\-stew;
+砒 < arsenic;
+晁 < morning;
+凇 < dewdrop;
+噘 < pouting;
+唣 < chatter;
+骠 < charger;
+怄 < annoyed;
+锂 < lithium;
+疥 < scabies;
+稗 < darnels;
+洮 < cleanse;
+酮 < ketones;
+腚 < buttock;
+腱 < tendons;
+馔 < to\-feed;
+搠 < to\-daub;
+酡 < flushed;
+呒 < unclear;
+痧 < cholera;
+笤 < a\-broom;
+韫 < secrete;
+怛 < grieved;
+皴 < chapped;
+睢 < gaze\-at;
+塬 < plateau;
+螯 < nippers;
+獒 < mastiff;
+沆 < a\-ferry;
+帔 < a\-skirt;
+薅 < to\-weed;
+莴 < lettuce;
+捭 < to\-open;
+葭 < bulrush;
+倥 < boorish;
+溴 < bromine;
+廛 < a\-store;
+揸 < handful;
+仵 < similar;
+髋 < hipbone;
+肱 < forearm;
+蚍 < mussels;
+镓 < gallium;
+铋 < bismuth;
+胝 < callous;
+赍 < present;
+翥 < to\-soar;
+蜞 < grapsus;
+谠 < counsel;
+矬 < a\-dwarf;
+溲 < urinate;
+蕻 < budding;
+鹈 < pelican;
+镉 < cadmium;
+謇 < stutter;
+憷 < painful;
+谡 < rise\-up;
+褊 < cramped;
+钍 < thorium;
+氪 < krypton;
+迮 < to\-rise;
+蓍 < milfoil;
+螽 < katydid;
+剀 < sharpen;
+蹀 < to\-skip;
+锎 < caesium;
+钇 < yttrium;
+氚 < tritium;
+犸 < mammoth;
+菸 < to\-fade;
+鲱 < herring;
+躞 < to\-walk;
+铌 < niobium;
+畀 < to\-give;
+遘 < to\-meet;
+泷 < raining;
+蒡 < burdock;
+髌 < kneecap;
+鳙 < bighead;
+絷 < confine;
+箦 < bed\-mat;
+瘘 < fistula;
+镄 < fermium;
+祆 < ormazda;
+嫠 < a\-widow;
+搴 < extract;
+僦 < to\-heir;
+牽扯 < involve;
+看得見 < visible;
+婚事 < wedding;
+檢閱 < inspect;
+訴苦 < grumble;
+有資格 < entitle;
+暫停 < suspend;
+歡迎光臨 < welcome;
+觸角 < antenna;
+圓石頭 < boulder;
+罷休 < give\-up;
+奧地利 < austria;
+認真 < earnest;
+時尚 < fashion;
+版本 < version;
+庇護 < shelter;
+酸性 < acidity;
+編纂 < compile;
+君主 < monarch;
+總理 < premier;
+天然 < natural;
+睡衣 < pajamas;
+整理 < arrange;
+煙草 < tobacco;
+燦爛 < glitter;
+可動 < movable;
+水手 < mariner;
+傳道部 < mission;
+口吃 < stammer;
+創世紀 < genesis;
+菏蘭 < holland;
+菠菜 < spinach;
+十月 < october;
+千位元 < kilobit;
+揚聲器 < speaker;
+毛毯 < blanket;
+管理員 < manager;
+陽臺 < balcony;
+狂喜 < ecstasy;
+永恆 < eternal;
+請求 < request;
+海軍總司令 < admiral;
+出走 < to\-flee;
+老資格 < veteran;
+效益 < benefit;
+重力 < gravity;
+金銀塊 < bullion;
+碼字 < numeral;
+弄碎 < crumble;
+沙丁魚 < sardine;
+姐妹 < sisters;
+目錄 < catalog;
+心愛 < beloved;
+弄短 < shorten;
+無處 < nowhere;
+變厚 < thicken;
+妖怪 < monster;
+緊緊 < closely;
+隱私 < privacy;
+關鍵 < crucial;
+姿勢 < posture;
+安提瓜島 < antigua;
+喪心病狂 < lunatic;
+強烈 < intense;
+好戰 < warlike;
+弄皺 < crumple;
+相連 < to\-link;
+文法 < grammar;
+古來 < oldtime;
+天氣 < weather;
+酒廠 < brewery;
+征服 < conquer;
+索道 < ropeway;
+陸續 < in\-turn;
+隱瞞 < to\-hide;
+外流 < outflow;
+工頭 < foreman;
+遠端 < far\-end;
+出納員 < cashier;
+加甜 < sweeten;
+音信 < message;
+障礙 < barrier;
+警告 < to\-warn;
+然而 < however;
+大概 < roughly;
+愛遊玩 < playful;
+格子棉布 < gingham;
+鋼琴家 < pianist;
+電池 < battery;
+比方 < analogy;
+計數者 < counter;
+退落 < subside;
+變亂 < turmoil;
+熱潮 < upsurge;
+解剖學 < anatomy;
+欺瞞 < to\-fool;
+有學問 < learned;
+議價 < bargain;
+纖弱 < fragile;
+見證 < witness;
+加熱 < heating;
+半吊子 < dabbler;
+非常 < unusual;
+勇氣 < courage;
+失效 < to\-fail;
+先驅 < pioneer;
+犯人 < convict;
+難民 < refugee;
+遺物 < remnant;
+毒打 < beat\-up;
+醜事 < scandal;
+降級 < degrade;
+焦糖 < caramel;
+摘要 < summary;
+進程 < process;
+摔角 < wrestle;
+包扎 < wrap\-up;
+廢物 < rubbish;
+天花板 < ceiling;
+殘株 < stubble;
+好奇 < curious;
+登陸 < to\-land;
+監視 < oversee;
+形成 < to\-form;
+總數 < a\-total;
+德國 < germany;
+統統 < totally;
+大盤子 < platter;
+無窮 < endless;
+矮林 < coppice;
+境界 < boundry;
+不能不 < have\-to;
+弄歪 < distort;
+冰袋 < ice\-bag;
+出入口 < gateway;
+消防隊員 < fireman;
+起皺紋 < shrivel;
+閱讀 < to\-read;
+郵差 < postman;
+面嚮 < to\-face;
+觸發 < trigger;
+瀝青 < asphalt;
+即便 < even\-if;
+大廈 < edifice;
+發酵 < ferment;
+幸福 < blessed;
+無益 < no\-good;
+防禦 < defense;
+歷時 < to\-last;
+托兒所 < nursery;
+艷紅色 < crimson;
+特許狀 < charter;
+拖曳機 < tractor;
+版刻 < carving;
+配偶 < consort;
+預言家 < prophet;
+救援 < to\-save;
+日出 < sunrise;
+氣候 < climate;
+繃帶 < bandage;
+逗留 < stay\-at;
+利用 < exploit;
+區區 < trivial;
+背叛者 < traitor;
+微光 < glimmer;
+每夜 < nightly;
+違法 < illegal;
+出租 < to\-rent;
+雀斑 < freckle;
+大使館 < embassy;
+大草原 < prairie;
+物理學 < physics;
+收據 < receipt;
+十六 < sixteen;
+繪圖 < to\-draw;
+知悉 < to\-know;
+熱情 < cordial;
+十倍 < tenfold;
+剛毛 < bristle;
+橫臥 < recline;
+刺激 < provoke;
+經濟 < economy;
+細節 < details;
+扳不倒兒 < tumbler;
+樂趣 < delight;
+爬蟲動物 < reptile;
+索馬裡 < somalia;
+十五 < fifteen;
+多大 < how\-big;
+共處 < coexist;
+攪拌 < to\-stir;
+輕輕 < lightly;
+廣播網 < network;
+巴格達 < baghdad;
+利潤 < profits;
+外科醫生 < surgeon;
+裝載 < to\-load;
+包含 < contain;
+擯棄 < abandon;
+在﹍之間 < between;
+發行 < publish;
+白蟻 < termite;
+選手 < athlete;
+失去 < to\-lose;
+輪詢 < to\-poll;
+花費 < expense;
+葉子 < foliage;
+草稿 < outline;
+武庫 < arsenal;
+銀行業 < banking;
+弄平 < flatten;
+制止 < to\-curb;
+照搬 < to\-copy;
+龡 < to\-blow;
+補貼 < subsidy;
+齰 < to\-bite;
+齩 < to\-chew;
+正常 < regular;
+鼷 < a\-mouse;
+文化 < culture;
+崩陷 < fall\-in;
+鸑 < a\-large;
+巴結 < fawn\-on;
+鷟 < phoenix;
+鶺 < wagtail;
+鶹 < the\-owl;
+手推車 < trolley;
+皺紋 < wrinkle;
+權杖 < scepter;
+百萬 < million;
+多半 < chiefly;
+週末 < weekend;
+鴫 < a\-snipe;
+初步 < initial;
+勞動者 < laborer;
+煩惱 < agonize;
+鲚 < anchovy;
+煩悶 < anguish;
+幫派 < faction;
+美洲豹 < panther;
+表面 < surface;
+糟糕 < too\-bad;
+總則 < profile;
+險峻 < arduous;
+制服 < uniform;
+像銀 < silvery;
+魜 < mermaid;
+前提 < premise;
+維持 < to\-keep;
+接觸 < contact;
+花崗石 < granite;
+夥伴 < partner;
+骫 < be\-bent;
+骉 < running;
+擁有 < to\-have;
+在其中 < therein;
+驙 < \(horse\);
+驒 < dappled;
+此外 < besides;
+強制 < enforce;
+車輛 < vehicle;
+芬蘭 < finland;
+數位 < digital;
+十億位元 < gigabit;
+颫 < a\-storm;
+執照 < license;
+無效 < in\-vain;
+韣 < bow\-bag;
+韅 < harness;
+紙煙 < cigaret;
+眺望 < lookout;
+關照 < concern;
+雚 < a\-heron;
+冰片 < borneol;
+劇場 < theater;
+熱切 < fervent;
+陾 < in\-file;
+五月十五號 < may\-1\-5;
+陞 < promote;
+阻攔 < to\-stop;
+阧 < sloping;
+弟兄 < brother;
+眉毛 < eyebrow;
+被褥 < bedding;
+擺子 < malaria;
+擔心 < anxious;
+身體障害 < cripple;
+公社 < commune;
+铽 < terbium;
+铼 < rhenium;
+铪 < hafnium;
+铥 < thulium;
+铑 < rhodium;
+钬 < holmium;
+結果 < outcome;
+歲入 < revenue;
+墊子 < cushion;
+監測 < monitor;
+梵帝岡 < vatican;
+同義字 < synonym;
+錶 < a\-watch;
+鬢角 < temples;
+錀 < \(metal\);
+揭示 < to\-show;
+鋊 < a\-poker;
+鋂 < bit\-cup;
+痕跡 < vestige;
+剝奪 < deprive;
+農民 < peasant;
+愛國者 < patriot;
+廠商 < company;
+女主人 < hostess;
+白榴石 < leucite;
+你自己 < thyself;
+冒煙 < smoking;
+簡要 < concise;
+紅海 < red\-sea;
+冰河 < glacial;
+純正 < genuine;
+刨工 < planing;
+派給工作 < to\-task;
+幻影 < phantom;
+自由派 < liberal;
+拔頂 < topping;
+疾走 < scamper;
+轒 < chariot;
+已滅 < extinct;
+籠罩 < envelop;
+軲 < a\-wheel;
+軘 < war\-car;
+螢火蟲 < firefly;
+躦 < to\-jump;
+躝 < to\-pass;
+百分之 < percent;
+鬆緊帶 < elastic;
+薔薇花蕾 < rosebud;
+附寄 < enclose;
+無論何人 < whoever;
+跬 < to\-step;
+寄宿生 < boarder;
+跕 < shuffle;
+趷 < to\-jolt;
+絨布 < flannel;
+儘管 < despite;
+阻尼 < damping;
+甜點 < dessert;
+發現 < to\-find;
+贇 < affable;
+贃 < to\-earn;
+閃爍 < flicker;
+衣裝 < garment;
+賝 < preious;
+備註 < remarks;
+闡明 < clarify;
+受歡迎 < popular;
+豗 < clamour;
+到場 < show\-up;
+盛會 < pageant;
+讌 < a\-feast;
+謳 < to\-sing;
+謆 < beguile;
+飛機場 < airport;
+詾 < noisily;
+偽證 < perjury;
+詫 < to\-brag;
+詅 < to\-sell;
+照亮 < lighten;
+陳列 < display;
+阿爾及利亞 < algeria;
+觡 < antlers;
+陽傘 < parasol;
+山頂 < hilltop;
+掌管 < control;
+襜 < flutter;
+襃 < commend;
+褔 < complex;
+袺 < hold\-up;
+擠入 < intrude;
+衵 < chemise;
+權利 < a\-power;
+花環 < garland;
+公民 < citizen;
+巴林 < bahrain;
+偽裝 < to\-fake;
+堅強 < staunch;
+斯瓦希裡 < swahili;
+航空郵件 < airmail;
+亞特蘭大 < atlanta;
+進退兩難 < dilemma;
+平均 < average;
+實際上 < in\-fact;
+刺刀 < bayonet;
+簸箕 < dustpan;
+充滿 < full\-of;
+帳帘 < drapery;
+薽 < \(grass\);
+薶 < to\-bury;
+反應堆 < reactor;
+薓 < ginseng;
+激素 < hormone;
+解剖 < dissect;
+莊嚴 < stately;
+平台 < terrace;
+菪 < henbane;
+菧 < stibene;
+拍賣 < auction;
+滋養 < nourish;
+解僱 < to\-fire;
+莀 < to\-farm;
+到來 < arrival;
+床側 < bedside;
+標槍 < javelin;
+疫苗 < vaccine;
+超齡 < too\-old;
+因素 < element;
+冰川 < glacier;
+闊度 < breadth;
+舓 < to\-lick;
+臝 < be\-bare;
+轟擊 < bombard;
+腖 < peptone;
+冰島 < iceland;
+異教徒 < heathen;
+圖畫 < drawing;
+脝 < distend;
+分析人士 < analyst;
+冰山 < iceberg;
+外邦人 < gentile;
+移民者 < migrant;
+不吉利 < ominous;
+罖 < kwukyel;
+最低限度 < minimum;
+缲 < to\-reel;
+療法 < therapy;
+創造者 < creator;
+尖頂 < steeple;
+腹部 < abdomen;
+發放 < provide;
+瘋狂 < madness;
+緁 < to\-join;
+插曲 < episode;
+絪 < matting;
+克什米爾 < kashmir;
+女英雄 < heroine;
+活動房屋 < trailer;
+什一奉獻 < tithing;
+內羅畢 < nairobi;
+抗議 < protest;
+帶動 < to\-spur;
+公式 < formula;
+笓 < to\-comb;
+墨西哥人 < mexican;
+災害 < scourge;
+花束 < bouquet;
+已婚 < married;
+痒痒 < to\-itch;
+使高貴 < dignify;
+例題 < example;
+稇 < to\-bind;
+優於 < surpass;
+終于 < at\-last;
+加榮耀於 < glorify;
+禂 < to\-pray;
+信賴 < confide;
+芥末 < mustard;
+地質學 < geology;
+冷卻 < cooling;
+桌面 < desktop;
+履行 < fulfill;
+皇帝 < emperor;
+碃 < \(stone\);
+篇章 < writing;
+矟 < ''\-lance;
+瞯 < to\-peep;
+不干不淨 < unclean;
+寬闊 < expanse;
+關鍵詞 < keyword;
+內容 < content;
+眽 < to\-gaze;
+眴 < dazzled;
+三位一體 < trinity;
+傲然 < loftily;
+巴松管 < bassoon;
+因為 < because;
+樵夫 < woodman;
+布隆迪 < burundi;
+畐 < to\-fill;
+自私 < selfish;
+典型 < typical;
+茶具 < tea\-set;
+甔 < big\-jar;
+糊塗 < muddled;
+瓛 < scaptre;
+璺 < a\-crack;
+璊 < reddish;
+蒙大拿 < montana;
+獹 < a\-hound;
+炭疽病 < anthrax;
+獚 < spaniel;
+公益事業 < utility;
+節目 < program;
+鑽石 < diamond;
+園林 < gardens;
+狉 < fox\-cub;
+軌枕 < sleeper;
+英國 < england;
+首飾 < jewelry;
+日常工作 < routine;
+工匠 < artisan;
+熯 < by\-fire;
+俘虜 < captive;
+煻 < to\-warm;
+臂章 < armband;
+自由 < freedom;
+史密特 < schmitt;
+灴 < to\-bake;
+布丁 < pudding;
+瀹 < to\-boil;
+圍攻 < besiege;
+喝采 < acclaim;
+澐 < billows;
+生育 < to\-bear;
+赤道 < equator;
+潬 < a\-rapid;
+富士通 < fujitsu;
+男性親屬 < kinsman;
+溦 < drizzle;
+門口 < doorway;
+烹調術 < cookery;
+貨物運輸 < freight;
+損傷 < to\-harm;
+渼 < ripples;
+渧 < to\-drop;
+身材 < stature;
+英勇 < bravery;
+印刷者 < printer;
+混合物 < mixture;
+阿克倫 < acheron;
+涶 < to\-spit;
+涒 < meander;
+洸 < sparkle;
+牙科醫生 < dentist;
+問題 < problem;
+寄送 < to\-send;
+傾斜 < incline;
+郡治安官 < sheriff;
+無神論 < atheism;
+汋 < to\-pour;
+不動搖 < unmoved;
+氼 < to\-sink;
+困擾 < perplex;
+氕 < protium;
+押沙龍 < absalom;
+抄網 < dip\-net;
+歜 < furious;
+嚴正 < sternly;
+催眠曲 < lullaby;
+亞伯拉罕 < abraham;
+或許 < perhaps;
+榮幸 < honored;
+克羅地亞 < croatia;
+馬蹬 < stirrup;
+橆 < without;
+商隊 < caravan;
+牛頭犬 < bulldog;
+學院 < college;
+僵局 < impasse;
+捕手 < catcher;
+榢 < a\-frame;
+投票 < to\-vote;
+使魔法 < conjure;
+全神灌注 < rapture;
+椗 < \(plant\);
+安乃近 < analgin;
+蛋白質 < protein;
+專科院校 < academy;
+行李 < luggage;
+提到 < mention;
+驕矜 < haughty;
+芝加哥 < chicago;
+八帶魚 < octopus;
+洗衣店 < laundry;
+信箱 < mailbox;
+枼 < a\-table;
+枓 < capital;
+杸 < to\-kill;
+朾 < to\-bump;
+概念 < concept;
+不得勁 < awkward;
+地址 < address;
+孔雀 < peacock;
+滑稽 < comical;
+敾 < to\-rule;
+敯 < to\-defy;
+敜 < fill\-up;
+低調 < low\-key;
+擸 < to\-hold;
+按時 < on\-time;
+摠 < general;
+長頸鹿 < giraffe;
+打算 < to\-plan;
+掯 < oppress;
+小組 < a\-group;
+挍 < collate;
+女高音 < soprano;
+按摩 < massage;
+抈 < to\-bend;
+扽 < to\-move;
+質量 < quality;
+節日 < holiday;
+比利時 < belgium;
+不調和 < discord;
+懰 < be\-glad;
+懫 < enraged;
+有陰影 < shadowy;
+懛 < alarmed;
+懅 < bashful;
+產物 < product;
+供給 < furnish;
+惣 < overall;
+惇 < be\-kind;
+舞弄 < to\-wave;
+指關節 < knuckle;
+打碎 < shatter;
+恉 < meaning;
+在前 < forward;
+給與資格 < qualify;
+七月三十號 < july\-30;
+李鵬 < li\-peng;
+安設 < install;
+責難 < censure;
+島嶼 < islands;
+查調 < inquiry;
+便盆 < bed\-pan;
+蠱惑 < enchant;
+廌 < unicorn;
+滲漏 < seepage;
+平常日 < weekday;
+聯邦 < federal;
+漂泊 < drifter;
+儲藏室 < storage;
+噸數 < tonnage;
+匈牙利 < hungary;
+商討 < discuss;
+香菜 < parsley;
+海鮮 < seafood;
+臥房 < bedroom;
+印地安那 < indiana;
+僥倖 < luckily;
+傳單 < leaflet;
+不得而知 < unknown;
+墓誌銘 < epitaph;
+香腸 < sausage;
+航空公司 < airline;
+媞 < at\-ease;
+走私 < smuggle;
+有耐久力 < durable;
+一會兒 < a\-while;
+不道德 < immoral;
+龍蝦 < lobster;
+烏克蘭 < ukraine;
+太陽黑子 < sunspot;
+在室內 < indoors;
+夣 < a\-dream;
+壝 < a\-mound;
+希伯來書 < hebrews;
+塓 < plaster;
+椰子 < coconut;
+鑒戒 < warning;
+堄 < parapet;
+代詞 < pronoun;
+埗 < a\-wharf;
+丹麥 < denmark;
+不離兒 < not\-bad;
+圕 < library;
+圂 < pig\-sty;
+畫廊 < gallery;
+白蛋白 < albumin;
+嚊 < to\-pant;
+主席臺 < rostrum;
+衝力 < impulse;
+類固醇 < steroid;
+喥 < a\-place;
+完美 < perfect;
+展望 < outlook;
+評議會 < council;
+有希望 < hopeful;
+竊盜 < burglar;
+唞 < to\-gasp;
+唅 < a\-sound;
+家禽 < poultry;
+傷寒症 < typhoid;
+咾 < a\-noise;
+咉 < an\-echo;
+奧林匹克 < olympic;
+到那裡 < thither;
+呿 < to\-yawn;
+呬 < to\-rest;
+亞利桑那 < arizona;
+呌 < to\-call;
+空缺 < vacancy;
+最高 < highest;
+畫家 < painter;
+養老金 < pension;
+疲勞 < fatigue;
+卲 < eminent;
+匧 < a\-trunk;
+不齒 < despise;
+投手 < pitcher;
+海邊 < seaside;
+蓋世太保 < gestapo;
+噁心 < to\-hate;
+尋求 < to\-seek;
+儶 < valiant;
+小冊子 < booklet;
+儦 < milling;
+儤 < on\-duty;
+未武裝 < unarmed;
+噴墨 < ink\-jet;
+有限 < limited;
+托架 < bracket;
+侇 < a\-class;
+伀 < excited;
+最長 < longest;
+乿 < to\-cure;
+乬 < to\-hang;
+扳手 < spanner;
+便於 < easy\-to;
+海豚 < dolphin;
+愛護 < cherish;
+䶩 < to\-gnaw;
+愛屋及烏 < love\-me;
+節儉 < thrifty;
+神體 < godhead;
+䴧 < venison;
+中間 < betwixt;
+䲝 < pomfret;
+䲔 < a\-whale;
+感覺 < to\-feel;
+有幫助 < helpful;
+䱉 < the\-eel;
+䰞 < to\-cook;
+孤立 < isolate;
+䮼 < piebald;
+當前 < current;
+䮦 < untamed;
+層子 < stratum;
+䭠 < a\-snack;
+用字 < diction;
+䬎 < hot\-air;
+阿拉伯 < arabian;
+䫘 < healthy;
+促成 < procure;
+安瓿 < ampoule;
+䪣 < smashed;
+至上 < supreme;
+䩳 < tanning;
+䩔 < the\-hem;
+以馬內利 < emanuel;
+䨞 < to\-rain;
+一項 < an\-item;
+䨂 < a\-chick;
+䧟 < to\-skin;
+阿拉丁 < aladdin;
+不覺察 < unaware;
+清真 < islamic;
+䦋 < to\-grow;
+喜歡 < to\-like;
+甘藍菜 < cabbage;
+䤟 < a\-spade;
+上門 < drop\-in;
+䢶 < a\-state;
+學生 < student;
+女修道 < convent;
+䢙 < to\-ruin;
+獎金 < premium;
+規劃人員 < planner;
+䠼 < to\-wear;
+人群 < a\-crowd;
+假使 < suppose;
+發現物 < finding;
+更遠 < farther;
+在下方 < beneath;
+驚嚇 < horrify;
+䜖 < to\-talk;
+䜉 < to\-jest;
+䛷 < to\-obey;
+䛰 < sketchy;
+蒸汽機 < steamer;
+䚱 < honesty;
+䚮 < thicker;
+䚗 < to\-lift;
+䚏 < to\-love;
+丙酮 < acetone;
+小瀑布 < cascade;
+慈善機構 < charity;
+男性尊稱 < esquire;
+䘱 < wealthy;
+䘠 < greaves;
+䘝 < a\-shirt;
+第十二 < twelfth;
+不三不四 < dubious;
+才干 < ability;
+香水 < perfume;
+香氣 < incense;
+䖚 < a\-tiger;
+成文 < written;
+䔺 < heading;
+吐露 < to\-tell;
+未決定 < pending;
+趕快 < at\-once;
+會議 < meeting;
+飛船 < airship;
+曼谷 < bangkok;
+䒶 < the\-sky;
+列王紀下 < 2\-kings;
+列王紀上 < 1\-kings;
+䑧 < a\-short;
+䐿 < gizzard;
+䐷 < paunchy;
+䐴 < lumbago;
+䐫 < obesity;
+䏖 < a\-wound;
+䏇 < to\-hear;
+䎩 < to\-till;
+旅遊者 < tourist;
+主詞 < subject;
+沉默 < silence;
+打字 < to\-type;
+受託人 < trustee;
+䌘 < to\-knit;
+䌔 < to\-soak;
+䌁 < a\-pleat;
+䋎 < to\-mend;
+䊟 < adorned;
+䊘 < a\-grain;
+䉢 < a\-sieve;
+䉎 < a\-cover;
+䈬 < a\-small;
+宴會 < banquet;
+䇔 < atrophy;
+䇍 < to\-wait;
+領隊 < captain;
+月蝕 < eclipse;
+䄏 < bizarre;
+倉促 < hurried;
+肥沃 < fertile;
+䂀 < to\-wink;
+召集 < convene;
+䁛 < to\-look;
+神跡 < miracle;
+使徒 < apostle;
+㾷 < to\-ache;
+㾠 < a\-fever;
+㾟 < relapse;
+㾘 < ailment;
+㾕 < a\-chill;
+㾆 < ecdysis;
+㾅 < defects;
+陸軍上校 < colonel;
+㽖 < a\-human;
+㼼 < a\-ladle;
+㼷 < a\-basin;
+脹大 < swollen;
+㼗 < a\-brick;
+虛構小說 < fiction;
+寶寶 < darling;
+㺲 < buttons;
+㺊 < a\-beast;
+㹞 < to\-bark;
+㹛 < a\-tamed;
+等候 < waiting;
+跌到 < to\-fall;
+懺悔 < confess;
+㷓 < a\-torch;
+㷉 < to\-iron;
+戶外 < outdoor;
+石南屬 < heather;
+寬容 < lenient;
+㵒 < boiling;
+㵌 < to\-flow;
+㵅 < a\-river;
+能幹 < capable;
+不見 < not\-see;
+㴇 < to\-wade;
+㳭 < spittle;
+㳬 < an\-eddy;
+住房 < housing;
+㳙 < a\-brook;
+戰士 < fighter;
+㲂 < to\-push;
+㱖 < to\-stay;
+㱌 < to\-take;
+翡翠 < emerald;
+尊嚴 < dignity;
+薄烤餅 < pancake;
+㯓 < a\-couch;
+㯐 < tubular;
+㯋 < a\-chest;
+密度 < density;
+㮛 < a\-spoon;
+㭪 < a\-shrub;
+毒草名 < hemlock;
+㫴 < to\-roar;
+㫝 < the\-sun;
+地平線 < horizon;
+尖叫 < screech;
+㩰 < to\-stab;
+她自己 < herself;
+安撫 < placate;
+㨷 < to\-wipe;
+頂針 < thimble;
+㨰 < to\-turn;
+核子 < nuclear;
+休會 < adjourn;
+貢物 < tribute;
+㧻 < a\-thorn;
+㦹 < a\-spear;
+㦭 < to\-pity;
+飛盤 < frisbee;
+淘氣 < naughty;
+㥒 < corrupt;
+騎兵 < cavalry;
+㤺 < blurred;
+㣷 < walking;
+矮壯素 < cycocel;
+外科手術 < surgery;
+㡸 < a\-house;
+第七 < seventh;
+㡨 < a\-label;
+㡘 < screens;
+㡓 < drawers;
+㡂 < remains;
+促使 < spur\-on;
+風箱 < bellows;
+㟧 < a\-cliff;
+浴盆 < bathtub;
+㞺 < a\-tribe;
+群花 < blossom;
+各色各樣 < diverse;
+佛羅裡達 < florida;
+馬子 < commode;
+越南 < vietnam;
+向何處 < whither;
+㜓 < womanly;
+空戰 < air\-war;
+成圈 < wreathe;
+㜇 < unhappy;
+應得 < deserve;
+戰勝 < prevail;
+㚢 < a\-slave;
+不苟 < not\-lax;
+籃板球 < rebound;
+住宿 < lodging;
+㙔 < a\-fence;
+㙏 < caverns;
+變遷 < changes;
+㘩 < to\-mate;
+㗃 < the\-lip;
+封入 < inclose;
+馬克思主義 < marxism;
+㕟 < to\-sign;
+㕞 < a\-brush;
+㔿 < a\-tally;
+㔡 < greatly;
+㔂 < to\-pare;
+㓰 < to\-rive;
+㓟 < to\-peel;
+㒴 < to\-come;
+㒦 < puppets;
+聽得見 < audible;
+野貓 < wildcat;
+㒕 < unyield;
+㒑 < grow\-up;
+代替 < instead;
+㑅 < to\-make;
+案卷 < records;
+百慕大 < bermuda;
+代數 < algebra;
+有條紋 < striped;
+木瓦 < shingle;
+成功 < success;
+安息日 < sabbath;
+中立 < neutral;
+世紀 < century;
+低地 < lowland;
+海澡 < seaweed;
+今晚 < tonight;
+裁紙機 < trimmer;
+哀求 < entreat;
+洗禮 < baptism;
+妓院 < brothel;
+不等 < to\-vary;
+公爵夫人 < duchess;
+名義 < titular;
+消極 < passive;
+水銀 < mercury;
+暈船 < seasick;
+懷敵意 < hostile;
+職工 < workers;
+孟子 < mencius;
+官司 < lawsuit;
+非難 < reproof;
+永遠 < forever;
+酬載 < payload;
+聽寫 < dictate;
+虧損 < deficit;
+麻煩 < trouble;
+阿爾巴尼亞 < albania;
+彼得後書 < 2\-peter;
+創立者 < founder;
+維他命 < vitamin;
+譏誚 < cynical;
+確認 < confirm;
+裝置物 < fixture;
+王權 < royalty;
+玻利維亞 < bolivia;
+企圖 < attempt;
+參議員 < senator;
+羅盤 < compass;
+星期二 < tuesday;
+現實 < reality;
+質地 < texture;
+音樂會 < concert;
+贊助 < sponsor;
+忠誠 < devoted;
+體育場 < stadium;
+鄭重 < serious;
+印像深刻 < impress;
+半途 < halfway;
+好轉 < improve;
+惡棍 < villain;
+愛爾蘭 < ireland;
+逃亡者 < runaway;
+鼻孔 < nostril;
+哀思 < pensive;
+指導教授 < adviser;
+猖獗 < rampant;
+果園 < orchard;
+旁邊 < lateral;
+咯咯笑 < chuckle;
+生物學 < biology;
+飛彈 < missile;
+聽力 < hearing;
+使憤慨 < outrage;
+日誌 < journal;
+居住於 < inhabit;
+外面 < outside;
+雄黃 < realgar;
+會期 < session;
+不法 < lawless;
+不知何故 < somehow;
+淡光 < shimmer;
+彌賽亞 < messiah;
+沒甚麼 < nothing;
+大錯 < blunder;
+老年 < elderly;
+變硬 < stiffen;
+海岸 < coastal;
+煙灰缸 < ashtray;
+礦物 < mineral;
+著陸 < landing;
+不在了 < be\-dead;
+紡織品 < textile;
+科學 < science;
+液化 < liquify;
+阿司匹林 < aspirin;
+方言 < dialect;
+古物 < antique;
+日落 < sundown;
+金光閃爍 < spangle;
+郵費 < postage;
+曖昧 < illicit;
+不人道 < inhuman;
+雄雞 < rooster;
+放開 < unleash;
+被沒收 < forfeit;
+奴隸制度 < slavery;
+羨慕 < envious;
+路西弗 < lucifer;
+化學家 < chemist;
+餅乾 < biscuit;
+有害 < harmful;
+酒精 < alcohol;
+社會 < society;
+暴政 < tyranny;
+王國 < kingdom;
+易碎 < brittle;
+釘死 < crucify;
+訓練者 < trainer;
+清潔器 < cleaner;
+顧忌 < scruple;
+愈合 < to\-heal;
+詳述 < recount;
+願意 < to\-wish;
+愛德玲 < adeline;
+迫切性 < urgency;
+玩兒 < to\-play;
+女演員 < actress;
+中子 < neutron;
+金橘 < kumquat;
+需要 < to\-need;
+悔恨 < remorse;
+最大 < biggest;
+最多 < at\-most;
+耕作 < farming;
+急流 < torrent;
+巴比倫 < babylon;
+老公 < husband;
+嬰兒期 < infancy;
+百葉窗 < shutter;
+避彈坑 < foxhole;
+馬來西亞 < malasia;
+山胡桃木 < hickory;
+脫衣服 < undress;
+乏味 < tedious;
+𡜱 < to\-envy;
+呼吸 < breathe;
+猜度 < surmise;
+呻吟 < to\-moan;
+彼得前書 < 1\-peter;
+遴選 < to\-pick;
+女神 < goddess;
+想像 < imagine;
+業餘者 < amateur;
+同志 < comrade;
+沒有 < haven''t;
+南瓜 < pumpkin;
+變暖 < warming;
+金字塔 < pyramid;
+氣球 < balloon;
+狂暴 < frantic;
+他自己 < himself;
+吊床 < hammock;
+及時 < in\-time;
+部署 < dispose;
+也不 < neither;
+可憐 < pitiful;
+女皇 < empress;
+定居者 < settler;
+一天 < one\-day;
+二十多 < over\-20;
+改裝 < remodel;
+阿飛 < hoodlum;
+可恨 < hateful;
+收留所 < barrack;
+法官 < a\-judge;
+美國 < america;
+最佳 < optimum;
+幽靈 < specter;
+運轉 < to\-work;
+運輸 < transit;
+悲劇 < tragedy;
+書信 < epistle;
+劍術 < fencing;
+就寢時間 < bedtime;
+緒言 < preface;
+誇耀 < proudly;
+缺席 < absence;
+一口 < readily;
+七十 < seventy;
+燕麥粥 < oatmeal;
+新生 < newborn;
+不再 < no\-more;
+亞拉巴馬 < alabama;
+世俗 < profane;
+年鑑 < almanac;
+比畫 < gesture;
+量子 < quantum;
+猿人 < ape\-man;
+叫好 < applaud;
+自行車 < bicycle;
+逐退 < repulse;
+民數記 < numbers;
+小斑點 < speckle;
+注入 < pour\-in;
+正義 < justice;
+使厭煩 < disgust;
+艾迪生 < addison;
+是 < indeed;
+迫 < coerce;
+応 < should;
+忘 < forget;
+国 < nation;
+返 < return;
+忍 < endure;
+迄 < extend;
+必 < surely;
+出 < go\-out;
+辿 < follow;
+瞼 < eyelid;
+得 < obtain;
+辷 < smooth;
+徴 < summon;
+徳 < virtue;
+瞭 < bright;
+辛 < bitter;
+徐 < slowly;
+後 < behind;
+徊 < linger;
+影 < shadow;
+事 < affair;
+轟 < rumble;
+彈 < pellet;
+主 < master;
+強 < strong;
+弛 < loosen;
+民 < people;
+県 < county;
+现 < appear;
+分 < divide;
+些 < little;
+相 < mutual;
+理 < reason;
+益 < profit;
+话 < speech;
+向 < toward;
+定 < decide;
+庫 < armory;
+度 < degree;
+底 < bottom;
+打 < strike;
+位 < throne;
+序 < series;
+幼 < infant;
+干 < oppose;
+内 < inside;
+癪 < spasms;
+加 < add\-to;
+化 < change;
+癌 < cancer;
+常 < common;
+踰 < exceed;
+市 < market;
+才 < talent;
+住 < reside;
+员 < member;
+巻 < scroll;
+性 < nature;
+报 < report;
+神 < spirit;
+数 < number;
+跡 < search;
+原 < source;
+巡 < patrol;
+川 < stream;
+疊 < repeat;
+系 < system;
+畠 < garden;
+记 < record;
+林 < forest;
+统 < govern;
+字 < letter;
+島 < island;
+質 < matter;
+论 < debate;
+貰 < borrow;
+指 < finger;
+財 < wealth;
+花 < flower;
+層 < storey;
+条 < clause;
+屍 < corpse;
+局 < bureau;
+办 < manage;
+谷 < valley;
+城 < castle;
+父 < father;
+導 < direct;
+寧 < repose;
+黄 < yellow;
+德 < ethics;
+害 < injure;
+宮 < palace;
+友 < friend;
+守 < defend;
+讃 < praise;
+际 < border;
+单 < single;
+孤 < orphan;
+校 < school;
+獄 < prison;
+猾 < crafty;
+謙 < humble;
+謎 < riddle;
+狹 < narrow;
+母 < mother;
+狙 < an\-ape;
+团 < sphere;
+狂 < insane;
+課 < lesson;
+招 < beckon;
+兴 < thrive;
+约 < treaty;
+詩 < poetry;
+绝 < to\-cut;
+选 < choose;
+星 < a\-star;
+訴 < accuse;
+爛 < rotten;
+消 < vanish;
+燭 < candle;
+姫 < beauty;
+杨 < willow;
+严 < strict;
+熊 < a\-bear;
+妄 < absurd;
+苏 < revive;
+答 < answer;
+奮 < strive;
+煩 < bother;
+襤 < ragged;
+供 < supply;
+央 < center;
+列 < a\-line;
+焦 < burned;
+龙 < dragon;
+夏 < summer;
+春 < spring;
+态 < manner;
+袖 < sleeve;
+袋 < pocket;
+副 < assist;
+够 < enough;
+街 < street;
+激 < arouse;
+银 < silver;
+阵 < column;
+简 < simple;
+毒 < poison;
+湖 < a\-lake;
+蝉 < cicada;
+追 < pursue;
+鼬 < weasel;
+络 < enmesh;
+漠 < desert;
+蜘 < spider;
+占 < divine;
+圓 < circle;
+兰 < orchid;
+阶 < stairs;
+黙 < silent;
+佛 < buddha;
+效 < result;
+攻 < attack;
+策 < scheme;
+股 < thighs;
+莫 < do\-not;
+嘘 < exhale;
+窗 < window;
+添 < append;
+混 < to\-mix;
+鷲 < condor;
+博 < gamble;
+藤 < rattan;
+智 < wisdom;
+抗 < resist;
+喰 < to\-eat;
+喧 < lively;
+喉 < throat;
+浚 < dredge;
+逃 < escape;
+唸 < recite;
+靖 < pacify;
+秘 < secret;
+欲 < desire;
+征 < invade;
+秋 < autumn;
+吸 < inhale;
+鳩 < pigeon;
+悲 < sorrow;
+桥 < bridge;
+蒻 < rushes;
+葡 < grapes;
+汚 < filthy;
+胸 < breast;
+邮 < postal;
+吝 < stingy;
+横 < across;
+萎 < wither;
+菫 < celery;
+择 < select;
+恨 < hatred;
+竹 < bamboo;
+菓 < fruits;
+旗 < banner;
+殻 < casing;
+稳 < stable;
+迹 < traces;
+针 < needle;
+櫻 < cherry;
+弃 < reject;
+紫 < purple;
+拔 < uproot;
+芝 < sesame;
+赏 < reward;
+插 < insert;
+驢 < donkey;
+冬 < winter;
+扩 < expand;
+橘 < orange;
+逼 < compel;
+騷 < harass;
+刹 < temple;
+镜 < mirror;
+標 < a\-mark;
+舌 < tongue;
+槽 < trough;
+臼 < mortar;
+伏 < crouch;
+愤 < resent;
+俄 < sudden;
+凍 < freeze;
+槌 < hammer;
+阻 < impede;
+饑 < starve;
+腑 < bowels;
+兎 < rabbit;
+腋 < armpit;
+儘 < utmost;
+崇 < esteem;
+餓 < hungry;
+棺 < coffin;
+粉 < powder;
+盾 < shield;
+飢 < hunger;
+捕 < arrest;
+梯 < ladder;
+聘 < engage;
+梃 < a\-club;
+顫 < shiver;
+闷 < gloomy;
+悔 < repent;
+邀 < invite;
+頬 < cheeks;
+患 < suffer;
+丐 < beggar;
+柱 < pillar;
+柚 < pomelo;
+柄 < handle;
+侮 < insult;
+铜 < copper;
+枕 < pillow;
+杵 < pestle;
+扯 < rip\-up;
+趋 < hasten;
+串 < string;
+雲 < clouds;
+雌 < female;
+雇 < employ;
+隅 < corner;
+繕 < repair;
+棉 < cotton;
+縛 < to\-tie;
+谅 < excuse;
+呈 < submit;
+線 < thread;
+敷 < spread;
+脾 < spleen;
+紳 < girdle;
+鹰 < falcon;
+愚 < stupid;
+糞 < manure;
+粧 < toilet;
+採 < gather;
+帕 < turban;
+丫 < forked;
+拐 < kidnap;
+倪 < feeble;
+錐 < gimlet;
+篮 < basket;
+侄 < nephew;
+叉 < crotch;
+怖 < terror;
+颁 < confer;
+咕 < mumble;
+舵 < rudder;
+惩 < punish;
+咖 < coffee;
+淳 < honest;
+猴 < monkey;
+霉 < mildew;
+悼 < grieve;
+逍 < ramble;
+耍 < frolic;
+捆 < tie\-up;
+遊 < wander;
+廿 < twenty;
+腻 < greasy;
+缆 < hawser;
+鞑 < tatars;
+慷 < ardent;
+篷 < awning;
+荆 < thorns;
+膏 < grease;
+鞍 < saddle;
+睬 < notice;
+绥 < soothe;
+氧 < oxygen;
+婷 < pretty;
+凿 < chisel;
+巫 < wizard;
+虾 < shrimp;
+伶 < lonely;
+椒 < pepper;
+揖 < salute;
+冉 < tender;
+踱 < stroll;
+猬 < vulgar;
+褂 < jacket;
+糙 < coarse;
+闸 < sluice;
+颓 < ruined;
+屉 < drawer;
+刁 < tricky;
+洼 < hollow;
+蒜 < garlic;
+渣 < refuse;
+慑 < afraid;
+忏 < regret;
+碾 < roller;
+疙 < pimple;
+漉 < filter;
+隧 < tunnel;
+酥 < butter;
+钮 < button;
+漱 < gargle;
+盔 < helmet;
+磋 < polish;
+蕉 < banana;
+痰 < phlegm;
+羁 < halter;
+诏 < decree;
+靶 < target;
+酝 < liquor;
+亵 < slight;
+貂 < marten;
+聆 < listen;
+韬 < sheath;
+鹊 < magpie;
+卅 < thirty;
+碳 < carbon;
+硫 < sulfur;
+镰 < sickle;
+涎 < saliva;
+壕 < trench;
+锚 < anchor;
+钠 < sodium;
+睿 < shrewd;
+莺 < oriole;
+胯 < pelvis;
+跻 < ascend;
+鳖 < turtle;
+腼 < modest;
+娓 < comply;
+刎 < behead;
+蹙 < urgent;
+胚 < embryo;
+荔 < lichee;
+锵 < tinkle;
+茧 < cocoon;
+蟒 < python;
+鹃 < cuckoo;
+獗 < unruly;
+蒯 < a\-rush;
+沏 < infuse;
+嚏 < sneeze;
+砾 < gravel;
+佟 < a\-name;
+茜 < madder;
+扈 < escort;
+咛 < enjoin;
+泗 < mucous;
+锹 < shovel;
+鹗 < osprey;
+儡 < puppet;
+螂 < mantis;
+苓 < fungus;
+叵 < cannot;
+寮 < shanty;
+犷 < fierce;
+沱 < rivers;
+疡 < ulcers;
+徕 < induce;
+骛 < gallop;
+徉 < wonder;
+谪 < charge;
+俚 < rustic;
+俪 < spouse;
+臾 < moment;
+嬴 < to\-win;
+烩 < ragout;
+铤 < ingots;
+茁 < sprout;
+舢 < sampan;
+碜 < gritty;
+僭 < assume;
+碘 < iodine;
+烯 < alkene;
+囿 < pen\-up;
+囫 < entire;
+镍 < nickel;
+橐 < a\-sack;
+杷 < loquat;
+聒 < clamor;
+羯 < wether;
+秣 < fodder;
+樽 < goblet;
+焖 < simmer;
+轳 < pulley;
+镭 < radium;
+殄 < to\-end;
+诰 < inform;
+莅 < attend;
+讫 < finish;
+淬 < temper;
+嘬 < to\-lap;
+烷 < alkane;
+蛎 < oyster;
+焱 < flames;
+蜥 < lizard;
+葺 < thatch;
+恽 < devise;
+蓿 < clover;
+瘌 < severe;
+喱 < gramme;
+钴 < cobalt;
+貉 < badger;
+蜉 < mayfly;
+鲑 < salmon;
+娈 < lovely;
+荨 < nettle;
+竦 < revere;
+狒 < baboon;
+蘼 < millet;
+茴 < fennel;
+鲦 < minnow;
+渌 < strain;
+阚 < glance;
+珐 < enamel;
+靛 < indigo;
+黧 < a\-dark;
+蠓 < midges;
+橼 < citrus;
+魍 < demons;
+翊 < flying;
+镏 < distil;
+胼 < callus;
+犏 < yak\-ox;
+碚 < suburb;
+腭 < palate;
+鳟 < barbel;
+殂 < to\-die;
+筚 < wicker;
+疝 < hernia;
+骀 < an\-old;
+蒗 < \(herb\);
+菟 < dodder;
+陉 < defile;
+疠 < a\-sore;
+旰 < sunset;
+聍 < earwax;
+锇 < osmium;
+钡 < barium;
+襻 < a\-loop;
+铒 < erbium;
+铈 < cerium;
+椴 < poplar;
+苡 < barley;
+舄 < a\-shoe;
+鸫 < thrush;
+锔 < curium;
+铟 < indium;
+眍 < sunken;
+桷 < rafter;
+苄 < benzyl;
+陔 < a\-step;
+骶 < coccyx;
+鲻 < mullet;
+螨 < insect;
+虼 < a\-flea;
+瘕 < asthma;
+镘 < trowel;
+胂 < arsine;
+菔 < turnip;
+從此 < thence;
+鳥羽 < pinion;
+編者 < editor;
+誤用 < misuse;
+強盜 < bandit;
+詩篇 < psalms;
+方法 < method;
+政策 < policy;
+哺乳動物 < mammal;
+伊尼伊德 < aeneid;
+警察 < police;
+士師記 < judges;
+發電機 < dynamo;
+罪人 < sinner;
+大炮 < cannon;
+大災 < plague;
+塞爾維亞 < serbia;
+吉他 < guitar;
+毀滅 < perish;
+穆斯林 < muslim;
+開車人 < driver;
+帶釦 < buckle;
+動物 < animal;
+使﹍豐富 < enrich;
+緊縮 < reduce;
+燒焦 < scorch;
+領事 < consul;
+嘶啞聲 < hoarse;
+大浪 < billow;
+睡著 < asleep;
+氣息 < breath;
+擱置 < shelve;
+整潔 < neatly;
+弊病 < malady;
+選票 < a\-vote;
+剽竊 < pirate;
+編碼 < coding;
+拔尖兒 < tiptop;
+巨頭 < tycoon;
+頂事 < useful;
+撕裂 < mangle;
+附著 < adhere;
+伊尼亞斯 < aeneas;
+正當 < timely;
+怒吼 < bellow;
+奇景 < marvel;
+版式 < format;
+驅逐出境 < deport;
+遠程 < remote;
+半徑 < radius;
+降臨 < befall;
+管理人 < keeper;
+醜化 < defame;
+狂人 < madman;
+大桶 < barrel;
+有人情 < humane;
+西紅柿 < tomato;
+看見 < to\-see;
+解脫 < relief;
+破敗 < beaten;
+旗幟 < ensign;
+水壺 < kettle;
+殖民 < colony;
+旋律 < melody;
+動機 < motive;
+厭倦 < dreary;
+內陸 < inland;
+工錢 < salary;
+公開 < public;
+原先 < former;
+八開 < octavo;
+熊熊 < raging;
+短歌 < ballad;
+博士 < doctor;
+忠告 < advice;
+砲手 < gunner;
+多星 < starry;
+律師 < lawyer;
+八分音符 < quaver;
+微妙 < subtle;
+好好 < nicely;
+總是 < always;
+開鎖 < unlock;
+步測 < pacing;
+營救 < rescue;
+敬服 < admire;
+天竺牡丹 < dahlia;
+得宜 < proper;
+初級 < junior;
+輕鬆 < gentle;
+爐床 < hearth;
+謊報 < to\-lie;
+確保 < ensure;
+離奇有趣 < quaint;
+運用 < to\-use;
+絲絨 < velvet;
+版圖 < domain;
+政權 < regime;
+很少 < seldom;
+爵士 < knight;
+襯裡 < lining;
+謙和 < meekly;
+網球 < tennis;
+荒蕪 < barren;
+電影院 < cinema;
+天性 < inborn;
+小妖精 < goblin;
+金絲雀 < canary;
+歐洲 < europe;
+勾引 < seduce;
+熱望 < aspire;
+精選 < chosen;
+誘拐 < abduct;
+誠懇 < hearty;
+動名詞 < gerund;
+通知 < notify;
+刺痛 < tingle;
+徵召 < enlist;
+歡樂 < gaiety;
+競賽者 < player;
+先鋒 < herald;
+編年史 < annals;
+敵意 < enmity;
+巴西 < brazil;
+缺氧症 < anoxia;
+物件 < object;
+卸下 < unload;
+包容 < pardon;
+誘惑 < entice;
+牧人 < pastor;
+大地洞 < cavern;
+外形 < figure;
+隨機 < random;
+兵變 < mutiny;
+發嘎嘎聲 < rattle;
+敏捷 < nimble;
+牛仔 < cowboy;
+提醒 < remind;
+觸犯 < offend;
+奪取 < snatch;
+夫子 < pedant;
+太子 < prince;
+真空 < vacu\:m;
+殺害 < murder;
+殘忍 < bloody;
+閒話 < gossip;
+辭職 < resign;
+線條 < streak;
+滑翔機 < glider;
+徒勞 < futile;
+得到 < to\-get;
+希臘 < greece;
+濺開 < splash;
+遊歷 < travel;
+復仇 < avenge;
+殘餘物 < litter;
+壓扁 < squash;
+詩意 < poetic;
+攝政 < regent;
+標語 < slogan;
+不可告人 < hidden;
+發誓 < to\-vow;
+橡膠 < rubber;
+力足以做 < afford;
+在﹍期間 < during;
+地鐵 < subway;
+十一 < eleven;
+從事 < go\-for;
+熱帶 < tropic;
+有責任 < liable;
+雜工 < porter;
+出產 < output;
+奢侈 < luxury;
+掛鉤 < couple;
+純粹 < purely;
+種族主義 < racism;
+孩子氣 < boyish;
+小牝牛 < heifer;
+跑步者 < runner;
+露出 < expose;
+攀昇 < rising;
+解渴 < quench;
+歌手 < singer;
+吐綬雞 < turkey;
+巡航 < cruise;
+布線 < wiring;
+正式 < formal;
+冰箱 < icebox;
+無法 < unable;
+逕流 < runoff;
+大吃 < gobble;
+毫不 < hardly;
+道教 < taoism;
+齵 < uneven;
+診所 < clinic;
+遺恨 < grudge;
+鼫 < marmot;
+鼔 < a\-drum;
+鬆餅 < muffin;
+加崙 < gallon;
+鹨 < anthus;
+跨接器 < jumper;
+教堂 < church;
+鷇 < chicks;
+鶽 < a\-hawk;
+鶸 < siskin;
+詞尾 < suffix;
+鵀 < hoopoe;
+週期 < period;
+鴢 < \(duck\);
+負擔者 < bearer;
+零售 < retail;
+鴃 < shrike;
+在車 < aboard;
+徒步旅行 < hiking;
+鱎 < \(fish\);
+鱆 < poulpe;
+茶碗 < teacup;
+緞帶 < ribbon;
+分派 < assign;
+合唱團 < chorus;
+阻橈 < thwart;
+搖籃 < cradle;
+領導者 < leader;
+著名 < famous;
+強勢 < mighty;
+紮營 < encamp;
+驫 < horses;
+凹洞 < cavity;
+弱化 < weaken;
+陰戶 < vagina;
+擊敗 < defeat;
+進接 < access;
+馿 < an\-ass;
+絕氣 < expire;
+曲棍球 < hockey;
+証實 < verify;
+餤 < incite;
+連擊 < batter;
+教區 < parish;
+火箭 < rocket;
+隱士 < hermit;
+路由器 < router;
+短劍 < dagger;
+顒 < solemn;
+強健 < sturdy;
+一節\(詩\) < stanza;
+武器 < weapon;
+鞚 < bridle;
+煤屑 < cinder;
+平板 < tablet;
+凹槽 < socket;
+刮掉 < scrape;
+高雅 < dainty;
+雂 < \(bird\);
+父母親 < parent;
+歡喜 < joyful;
+分枝 < branch;
+步哨 < sentry;
+傳達 < convey;
+化妝品 < makeup;
+急促聲 < patter;
+闉 < curved;
+衡量 < weight;
+使硬化 < harden;
+骨髓 < marrow;
+铯 < cesium;
+搔癢 < tickle;
+雕像 < statue;
+鑞 < solder;
+正午 < midday;
+鑀 < ionium;
+鐝 < a\-pick;
+鎒 < to\-hoe;
+交易者 < dealer;
+鎅 < to\-saw;
+撫抱 < caress;
+錩 < vessel;
+救主 < savior;
+粘粘 < sticky;
+日內瓦 < geneva;
+鋙 < misfit;
+巴爾 < baltic;
+的確 < really;
+鋅 < zincum;
+過失 < defect;
+銀行家 < banker;
+植物學 < botany;
+紀念獎 < trophy;
+酴 < leaven;
+長短 < length;
+幫手 < helper;
+偽造的 < forged;
+旅行裝備 < outfit;
+附庸 < vassal;
+適合 < to\-fit;
+第二次 < second;
+高達 < attain;
+鵝卵石 < pebble;
+有氣派 < lordly;
+債務人 < debtor;
+花粉 < pollen;
+逌 < please;
+迍 < falter;
+轜 < hearse;
+白痴 < idiocy;
+峽谷 < canyon;
+躧 < sandal;
+表親 < cousin;
+觀念 < notion;
+踡 < curled;
+裁縫 < tailor;
+採納 < accept;
+補種 < reseed;
+小碟子 < saucer;
+貪 < greedy;
+冰柱 < icicle;
+舞蹈家 < dancer;
+阿姨 < auntie;
+線上 < online;
+譆 < scream;
+諵 < mutter;
+驚駭 < fright;
+素描 < sketch;
+閒混 < loiter;
+詻 < orders;
+詗 < to\-spy;
+摟抱 < to\-hug;
+自身 < itself;
+進口 < import;
+採礦 < mining;
+襮 < collar;
+擾亂 < infest;
+結尾 < ending;
+閣樓 < garret;
+花生 < peanut;
+袚 < greave;
+過份 < unduly;
+驟雨 < shower;
+幃幕 < screen;
+使濕透 < drench;
+蠩 < a\-toad;
+蠁 < larvae;
+威士忌酒 < whisky;
+光澤 < luster;
+逝去 < elapse;
+蛣 < beetle;
+蛌 < cricke;
+光滑 < glossy;
+逕向 < radial;
+虖 < to\-cry;
+批評家 < critic;
+相差 < differ;
+薑 < ginger;
+關心 < caring;
+在深處 < deeply;
+蔔 < radish;
+蓚 < oxalic;
+蒎 < pinane;
+抵達 < arrive;
+勝利者 < victor;
+地產 < estate;
+連字符號 < hyphen;
+菆 < jungle;
+廢除軍備 < disarm;
+局面 < aspect;
+茢 < sedges;
+蹺蹺板 < seesaw;
+澱粉 < starch;
+標榜 < flaunt;
+艢 < a\-mast;
+滑雪 < to\-ski;
+回絕 < rebuff;
+襪帶 < garter;
+綁住 < fasten;
+眼光 < vision;
+磨坊主 < miller;
+樣本 < sample;
+烈士 < martyr;
+精明 < astute;
+腳鐐 < fetter;
+胹 < cooked;
+白果 < ginkgo;
+帆布 < canvas;
+跳進 < plunge;
+有關連 < relate;
+多樹木 < wooded;
+附上 < attach;
+抬起 < uplift;
+顛倒過來 < invert;
+耤 < plough;
+吱吱聲 < squeak;
+幾乎 < almost;
+瀉湖 < lagoon;
+罫 < hinder;
+罥 < impete;
+簡直 < simply;
+未完成 < undone;
+繨 < a\-knot;
+光是 < solely;
+縆 < a\-rope;
+給予 < accord;
+七月一號 < july\-1;
+複數 < plural;
+白搭 < no\-use;
+魔賽克 < mosaic;
+航程 < flight;
+紩 < to\-sew;
+紟 < a\-sash;
+紃 < a\-cord;
+援手 < succor;
+帝國 < empire;
+茶壺 < teapot;
+伯仲叔季 < eldest;
+籲 < appeal;
+盟國 < allies;
+簉 < deputy;
+裁決 < ruling;
+篥 < bulgle;
+實體 < entity;
+箙 < quiver;
+烏干達 < uganda;
+索取 < to\-ask;
+席卷 < engulf;
+不確實 < untrue;
+地毯 < carpet;
+竉 < a\-hole;
+八度 < octave;
+用語 < syntax;
+鼻口部分 < muzzle;
+尖聲啼哭 < squeal;
+節約 < frugal;
+祏 < shrine;
+辦公室 < office;
+承諾 < effort;
+衛生 < health;
+補救 < remedy;
+修訂 < revise;
+羅馬書 < romans;
+迄今 < so\-far;
+實際 < actual;
+睪 < spy\-on;
+眾 < masses;
+嘗試 < to\-try;
+垂幕 < canopy;
+蠟筆 < crayon;
+服務員 < waiter;
+命運註定 < ordain;
+人頭獅身 < sphinx;
+皀 < kernel;
+不幸之事 < mishap;
+蜘蛛網 < cobweb;
+疃 < hamlet;
+執事 < deacon;
+畽 < ground;
+成長 < mature;
+溝道 < groove;
+阿米巴 < amoeba;
+農人 < farmer;
+滾落 < tumble;
+融解 < molten;
+圖案 < design;
+腔調 < accent;
+修補匠 < tinker;
+走錯 < astray;
+珔 < \(jade\);
+玓 < pearly;
+節省 < saving;
+猺 < jackal;
+信號 < signal;
+小貓 < kitten;
+行為 < action;
+大理石 < marble;
+在﹍之旁 < beside;
+持有人 < holder;
+煃 < remove;
+撒哈拉 < sahara;
+大鐮刀 < scythe;
+埋伏 < ambush;
+約翰二書 < 2\-john;
+對話 < dialog;
+符號 < symbol;
+瀌 < plenty;
+胸針 < brooch;
+濵 < a\-bank;
+搭乘 < embark;
+澼 < bleach;
+娛樂場 < resort;
+八十 < eighty;
+簸揚 < winnow;
+棒糖 < sucker;
+算盤 < abacus;
+醃黃瓜 < pickle;
+渨 < a\-cove;
+淟 < turbid;
+精力 < energy;
+收割者 < reaper;
+傳染 < infect;
+工人 < worker;
+洟 < snivel;
+泭 < a\-raft;
+氫 < amonia;
+起訴 < to\-sue;
+蝗蟲 < locust;
+傳教 < preach;
+較好 < better;
+花圈 < wreath;
+橰 < a\-spar;
+腎臟 < kidney;
+橤 < stamen;
+橜 < a\-post;
+橕 < a\-prop;
+樲 < jujube;
+路程 < course;
+先前 < before;
+憂鬱 < sullen;
+螺旋鉗 < wrench;
+參議院 < senate;
+穗飾 < tassel;
+楢 < tinder;
+瑞金 < ruijin;
+抱病 < be\-ill;
+傳授 < impart;
+車庫 < garage;
+測量 < survey;
+字首 < prefix;
+魚夫 < fisher;
+椧 < gutter;
+棃 < a\-pear;
+桲 < quince;
+花哨 < garish;
+輕咬 < nibble;
+條紋 < stripe;
+致死 < deadly;
+任何人 < anyone;
+贖金 < ransom;
+行星 < planet;
+曀 < stormy;
+回憶 < recall;
+穀類 < cereal;
+偵查 < detect;
+旻 < heaven;
+容許 < permit;
+敡 < rebuke;
+敂 < deduct;
+十四行詩 < sonnet;
+擓 < to\-rub;
+有道德 < chaste;
+漣漪 < ripple;
+二者之一 < either;
+捽 < clutch;
+國外 < abroad;
+液體 < liquid;
+藝術家 < artist;
+崎嶇 < rugged;
+餑餑 < pastry;
+餐飲 < repast;
+使膨脹 < dilate;
+何處 < whence;
+信用 < credit;
+約翰三書 < 3\-john;
+小提琴 < fiddle;
+因子 < factor;
+恟 < scared;
+拳擊 < boxing;
+軟化 < soften;
+安詳 < serene;
+懶洋洋 < lazily;
+約翰一書 < 1\-john;
+扣留 < detain;
+松雞 < grouse;
+弣 < middle;
+高度 < height;
+廆 < a\-room;
+異教 < heresy;
+巤 < a\-mane;
+巘 < summit;
+嶓 < boshan;
+崿 < cliffs;
+地主 < a\-host;
+馬戲團 < circus;
+高山 < alpine;
+生涯 < career;
+作者 < author;
+挪威 < norway;
+尅 < subdue;
+尋的 < homing;
+寎 < drowsy;
+馬鈴薯 < potato;
+孾 < a\-baby;
+使轉向 < divert;
+沒有人 < nobody;
+嬃 < sister;
+嫪 < hanker;
+婼 < person;
+博物館 < museum;
+娒 < matron;
+朋黨 < clique;
+禮拜堂 < chapel;
+混血 < hybrid;
+跋涉 < trudge;
+夬 < parted;
+僅僅 < barely;
+漏斗 < funnel;
+不透明 < opaque;
+堧 < adjoin;
+乳頭 < nipple;
+理論 < theory;
+介質 < medium;
+嚿 < a\-lump;
+由於 < due\-to;
+噚 < fathom;
+和風 < breeze;
+喆 < a\-sage;
+扶植 < foster;
+環球 < global;
+唫 < to\-hum;
+除了之外 < except;
+唈 < to\-sob;
+哤 < jargon;
+便池 < urinal;
+呮 < to\-sit;
+厎 < settle;
+宣稱 < assert;
+哀辭 < lament;
+扁桃體 < tonsil;
+勄 < active;
+乾酪 < cheese;
+更高 < higher;
+偌大 < so\-big;
+正方形 < square;
+肌肉 < muscle;
+驚恐 < appall;
+可信任 < trusty;
+文學家 < writer;
+手槍 < pistol;
+僬 < clever;
+傎 < topple;
+移動式 < mobile;
+家畜 < cattle;
+福音 < gospel;
+起源 < origin;
+倃 < damage;
+亂跳 < bounce;
+到此處 < hither;
+膽大 < daring;
+仚 < to\-fly;
+製陶工人 < potter;
+健全 < robust;
+䶁 < noises;
+䵧 < to\-dye;
+䴥 < a\-stag;
+䳾 < an\-owl;
+拌嘴 < bicker;
+打擊 < to\-hit;
+䳇 < parrot;
+笨拙 < clumsy;
+䲹 < ospery;
+人口調查 < census;
+䲌 < a\-fish;
+䱕 < labrus;
+䰣 < an\-elf;
+瑕疵 < stigma;
+䯨 < to\-rap;
+䯁 < a\-mule;
+墨西哥 < mexico;
+清真寺 < mosque;
+䭪 < grains;
+䭥 < a\-bait;
+䭌 < congee;
+䬸 < a\-meal;
+䬑 < a\-gale;
+䫬 < to\-bow;
+海裡 < marine;
+味道 < flavor;
+䨺 < cloudy;
+䨟 < puddle;
+䨇 < a\-pair;
+無論如何 < anyhow;
+䧴 < a\-bird;
+䧑 < a\-dike;
+出埃及記 < exodus;
+安哥拉 < angola;
+有藥癮者 < addict;
+䥪 < to\-cup;
+䥨 < a\-file;
+䥍 < a\-whip;
+以色列 < israel;
+私語 < murmur;
+釣魚用具 < tackle;
+最近 < recent;
+䣘 < a\-hall;
+清瘦 < meager;
+䣈 < a\-lane;
+釘書針 < staple;
+岸上 < ashore;
+照相機 < camera;
+䠰 < coiled;
+䠤 < toddle;
+紡織者 < weaver;
+中途 < midway;
+斯拉夫 < slavic;
+䝜 < a\-lion;
+䝄 < cowpea;
+俄羅斯 < russia;
+䜞 < a\-dose;
+木製 < wooden;
+安然 < safely;
+飢荒 < famine;
+䘰 < a\-hood;
+趾尖 < tiptoe;
+䘬 < armour;
+䘌 < gadfly;
+䗫 < a\-frog;
+䖹 < weevil;
+信奉 < belief;
+成效 < effect;
+䔯 < salted;
+瓶子 < bottle;
+䔢 < cathay;
+䔏 < a\-lush;
+三重 < treble;
+䓦 < a\-rule;
+客氣 < polite;
+䓄 < grassy;
+浮著 < afloat;
+變黑 < darken;
+䒉 < a\-long;
+䒂 < an\-oar;
+弓箭手 < archer;
+䑺 < a\-sail;
+䑴 < a\-boat;
+浮華 < vanity;
+䐦 < sleepy;
+䐥 < stinky;
+駁斥 < refute;
+不適 < unwell;
+䏪 < tendon;
+羞辱 < baffle;
+留下 < remain;
+䏣 < maggot;
+上邊 < upside;
+䎱 < a\-drag;
+胡桃 < walnut;
+䍃 < a\-vase;
+封建 < feudal;
+和藹 < kindly;
+䋐 < fabric;
+䊧 < a\-fart;
+塞爾特 < celtic;
+䊛 < shreds;
+穿洞 < pierce;
+䈴 < a\-cage;
+䈎 < a\-leaf;
+䇚 < to\-tap;
+䇁 < a\-cave;
+䆼 < a\-nest;
+䆮 < to\-dip;
+䆙 < a\-kiln;
+客棧 < tavern;
+叩頭 < kowtow;
+房客 < tenant;
+第四 < fourth;
+䄹 < a\-year;
+野餐 < picnic;
+䄘 < a\-rite;
+䃥 < stones;
+專家 < expert;
+䂷 < broken;
+使得 < usable;
+㿼 < a\-bowl;
+㿻 < a\-tray;
+打字員 < typist;
+㿭 < cracks;
+㿧 < fields;
+蜃景 < mirage;
+㿔 < a\-wart;
+反駁 < retort;
+少女 < maiden;
+㽷 < dropsy;
+㼾 < bricks;
+海綿 < sponge;
+星期日 < sunday;
+㼄 < pearls;
+用于 < use\-in;
+㸿 < a\-calf;
+晚飯 < supper;
+㷋 < embers;
+葡萄乾 < raisin;
+賭注 < stakes;
+㶤 < to\-fry;
+㶈 < creeks;
+神諭 < oracle;
+㵝 < moving;
+不要 < don''t\!;
+㴞 < fluent;
+我自己 < myself;
+材積 < volume;
+扁圓 < oblate;
+㳌 < marshy;
+㱞 < danger;
+㱍 < to\-owe;
+叮鈴 < jingle;
+㰃 < a\-tree;
+大步走 < stride;
+第八 < eighth;
+上衫 < blouse;
+㮖 < to\-lay;
+㭱 < a\-case;
+比較喜歡 < prefer;
+寶塔 < pagoda;
+㫺 < bygone;
+不公平 < unfair;
+客戶 < client;
+㫅 < a\-flag;
+㪹 < to\-rob;
+㩲 < a\-fist;
+芭蕾舞 < ballet;
+㨾 < a\-type;
+㧧 < a\-comb;
+家庭 < family;
+柏林 < berlin;
+㦔 < silkly;
+有罪 < guilty;
+㦊 < lavish;
+㦅 < uneasy;
+鍵帽 < keycap;
+小包 < packet;
+亨特 < hunter;
+打傷 < bruise;
+頁邊 < margin;
+手冊 < manual;
+㡁 < a\-robe;
+㠲 < ripped;
+牙齒 < dental;
+名言 < saying;
+㝹 < a\-hare;
+耀眼 < dazzle;
+伯利茲 < belize;
+港彎 < harbor;
+背帶 < braces;
+螺旋形 < spiral;
+㚼 < a\-girl;
+㚻 < sodomy;
+㚌 < a\-band;
+㙹 < a\-damp;
+比較少 < lesser;
+犯錯 < to\-err;
+在此處 < herein;
+暴虐 < brutal;
+被害人 < victim;
+阿多尼斯 < adonis;
+波蘭 < poland;
+㔺 < an\-age;
+㔉 < to\-dig;
+㓵 < swords;
+㓠 < a\-flaw;
+㓅 < frozen;
+星雲 < nebula;
+海狸 < beaver;
+阿波羅 < apollo;
+依偎 < nestle;
+懦夫 < coward;
+使耳聾 < deafen;
+休惜 < recess;
+蓬鬆 < fluffy;
+磁鐵 < magnet;
+校園 < campus;
+變質 < go\-bad;
+義賣會 < bazaar;
+羊肉 < mutton;
+工作室 < studio;
+吊著 < dangle;
+紫羅蘭色 < violet;
+門外漢 < layman;
+憎惡 < loathe;
+透印版印刷 < offset;
+在附近 < nearby;
+憎恨 < detest;
+塗油於 < anoint;
+雜貨商 < grocer;
+喜劇 < comedy;
+寒冬 < wintry;
+貶斥 < demote;
+單位 < a\-unit;
+球拍 < racket;
+維吾爾 < uighur;
+英雄式 < heroic;
+子彈 < bullet;
+理髮師 < barber;
+傭人領班 < butler;
+安培 < ampere;
+食槽 < manger;
+背叛 < betray;
+贖回 < redeem;
+獨特 < unique;
+毛織運動衫 < jersey;
+金色 < golden;
+起泡沫 < seethe;
+不戰不和 < no\-war;
+室內 < indoor;
+賓客 < guests;
+瑞典 < sweden;
+贊同 < assent;
+薄紙 < tissue;
+悶熱 < sultry;
+星期五 < friday;
+星期一 < monday;
+現存 < extant;
+餐巾 < napkin;
+以太 < ether\-;
+巴爾干 < balkan;
+瑣事 < trifle;
+格格笑 < giggle;
+預算 < budget;
+孟加拉 < bengal;
+青銅 < bronze;
+頑童 < urchin;
+會死 < mortal;
+不然 < not\-so;
+讀者 < reader;
+洪水 < deluge;
+白蘭地 < brandy;
+木料 < lumber;
+愛德華 < edward;
+深化 < deepen;
+現在 < modern;
+蘇格蘭帽 < bonnet;
+變紅 < redden;
+減低速度 < retard;
+猖狂 < savage;
+淨化 < purify;
+後退 < recoil;
+阿拉斯加 < alaska;
+片語 < phrase;
+流星 < meteor;
+悲歎 < bewail;
+存儲 < memory;
+使具體化 < embody;
+典獄長 < warden;
+看不見 < unseen;
+使作嘔 < sicken;
+象徵 < emblem;
+不比 < unlike;
+大錘 < sledge;
+最新 < latest;
+主教 < bishop;
+恐水病 < rabies;
+處女 < virgin;
+賣主 < seller;
+羊毛 < fleece;
+含水 < watery;
+加﹍於 < impose;
+處境 < plight;
+議程 < agenda;
+惡意 < malice;
+本州 < honshu;
+橡皮搽 < eraser;
+數量 < amount;
+斷言 < affirm;
+浪子 < loafer;
+有意 < intend;
+波士頓 < boston;
+名流 < gentry;
+台灣 < taiwan;
+不智 < unwise;
+故障 < glitch;
+合法 < lawful;
+名氣 < repute;
+大路 < avenue;
+海報 < poster;
+亦即 < namely;
+經紀人 < broker;
+紅蘿蔔 < carrot;
+悄悄地 < gently;
+暖氣 < heater;
+使﹍能夠 < enable;
+吸收 < absorb;
+意圖 < intent;
+緣飾 < fringe;
+避難所 < refuge;
+周年 < annual;
+白麵兒 < heroin;
+口渴 < thirst;
+針法 < stitch;
+消化 < digest;
+正門 < portal;
+海員 < sailor;
+吐根 < ipecac;
+雙重 < double;
+青苔 < lichen;
+多變 < fickle;
+鉋床 < planer;
+飼養者 < feeder;
+名望 < renown;
+取消 < cancel;
+那邊 < yonder;
+巴斯克 < basque;
+劈開 < cleave;
+酒窩 < dimple;
+動議 < motion;
+放逐 < banish;
+配稱 < worthy;
+活塞 < piston;
+莫斯科 < moscow;
+𥜌 < a\-coat;
+杏仁 < almond;
+月桂樹 < laurel;
+預期 < expect;
+秉公 < justly;
+禱告 < prayer;
+更大 < bigger;
+九十 < ninety;
+破舊 < shabby;
+一帶 < region;
+碧玉 < jasper;
+微薄的 < meagre;
+只是 < merely;
+小淘氣 < rascal;
+惡化 < worsen;
+一局 < inning;
+無法無天 < outlaw;
+未來 < future;
+鄉紳 < squire;
+詭計 < deceit;
+豁免 < exempt;
+心理 < mental;
+牢牢 < firmly;
+風俗 < custom;
+𠀉 < a\-hill;
+創辦 < launch;
+過量 < excess;
+起訴者 < suitor;
+熔解 < fusion;
+石英 < quartz;
+巴拿馬 < panama;
+包管 < assure;
+動脈 < artery;
+最低 < lowest;
+祭司 < priest;
+特此 < hereby;
+雌蕊 < pistil;
+干預 < meddle;
+化石 < fossil;
+捕鯨船 < whaler;
+水泥 < cement;
+水泡 < bubble;
+演說者 < orator;
+蓋爾 < gaelic;
+前輩 < senior;
+擺樣子 < do\-sth;
+副詞 < adverb;
+危機 < crisis;
+不公 < unjust;
+法國 < france;
+沉思 < ponder;
+暗堡 < bunker;
+狗屋 < kennel;
+暴君 < tyrant;
+波斯尼亞 < bosnia;
+三倍 < triple;
+霜白 < frosty;
+否則 < if\-not;
+分鐘 < minute;
+葬禮 < burial;
+水桶 < bucket;
+撤銷 < repeal;
+加拿大 < canada;
+反射 < reflex;
+不丹 < bhutan;
+非洲 < africa;
+剝蝕 < denude;
+一串 < strand;
+纖毛 < cilium;
+石 < stone;
+短 < short;
+快 < rapid;
+在 < be\-at;
+他 < other;
+矢 < arrow;
+到 < go\-to;
+说 < speak;
+迅 < quick;
+地 < earth;
+心 < heart;
+下 < under;
+辭 < words;
+微 < small;
+家 < house;
+御 < drive;
+后 < queen;
+待 < treat;
+还 < still;
+发 < issue;
+彫 < carve;
+想 < think;
+睡 < sleep;
+轉 < shift;
+所 < place;
+輪 < wheel;
+三 < three;
+輕 < light;
+式 < style;
+样 < shape;
+建 < build;
+延 < delay;
+盲 < blind;
+廣 < broad;
+声 < sound;
+工 < labor;
+盆 < basin;
+盃 < glass;
+正 < right;
+庸 < usual;
+女 < woman;
+力 < power;
+躑 < waver;
+因 < cause;
+重 < heavy;
+皇 < royal;
+庇 < cover;
+次 < order;
+口 < mouth;
+白 < white;
+幽 < quiet;
+教 < teach;
+再 < again;
+气 < steam;
+信 < trust;
+北 < north;
+蹲 < squat;
+蹟 < trace;
+幅 < piece;
+入 < enter;
+先 < first;
+水 < water;
+巷 < alley;
+笑 < smile;
+立 < stand;
+跪 < kneel;
+马 < horse;
+巨 < large;
+疑 < doubt;
+利 < gains;
+果 < fruit;
+赧 < blush;
+至 < reach;
+清 < clear;
+物 < thing;
+嵌 < inlay;
+甲 < armor;
+田 < field;
+许 < allow;
+八 < eight;
+崖 < cliff;
+崎 < rough;
+南 < south;
+色 < color;
+瓜 < melon;
+算 < count;
+賊 < thief;
+貯 < store;
+貨 < goods;
+每 < every;
+屬 < class;
+豪 < brave;
+豆 < beans;
+七 < seven;
+尖 < sharp;
+射 < shoot;
+空 < empty;
+技 < skill;
+寺 < court;
+寫 < write;
+英 < petal;
+密 < dense;
+钱 < money;
+容 < looks;
+宵 < night;
+始 < begin;
+客 < guest;
+片 < slice;
+研 < grind;
+早 < early;
+獻 < offer;
+獺 < otter;
+獸 < beast;
+獨 < alone;
+警 < guard;
+存 < exist;
+證 < proof;
+謝 < thank;
+猜 < guess;
+嬉 < enjoy;
+黑 < black;
+謁 < visit;
+剑 < sword;
+乐 < happy;
+级 < level;
+举 < raise;
+证 < prove;
+照 < shine;
+誓 < swear;
+群 < group;
+誂 < tempt;
+伤 < wound;
+断 < sever;
+价 < price;
+脑 < brain;
+规 < rules;
+娑 < dance;
+破 < break;
+泽 < marsh;
+燻 < smoke;
+紧 < tense;
+觸 < touch;
+装 < dress;
+河 < river;
+血 < blood;
+投 < throw;
+奴 < slave;
+刀 < knife;
+襟 < lapel;
+喝 < drink;
+褪 < strip;
+夢 < dream;
+错 < error;
+案 < table;
+印 < print;
+壓 < press;
+烈 < fiery;
+壇 < altar;
+裂 < split;
+袴 < pants;
+墓 < grave;
+炎 < flame;
+灰 < ashes;
+塗 < smear;
+敌 < enemy;
+塔 < tower;
+怀 < bosom;
+罪 < crime;
+蟲 < worms;
+濱 < beach;
+摘 < pluck;
+施 < grant;
+模 < model;
+草 < grass;
+濃 < thick;
+濁 < muddy;
+修 < study;
+味 < taste;
+织 < weave;
+龕 < niche;
+蝿 < flies;
+免 < spare;
+波 < waves;
+潔 < clean;
+洋 < ocean;
+均 < equal;
+奖 < prize;
+顿 < pause;
+漂 < float;
+判 < judge;
+担 < carry;
+板 < plank;
+钟 < clock;
+黐 < stick;
+蛇 < snake;
+构 < frame;
+溺 < drown;
+麦 < wheat;
+溝 < ditch;
+溜 < slide;
+肉 < flesh;
+纸 < paper;
+虚 < false;
+虎 < tiger;
+噌 < scold;
+杂 < mixed;
+怒 < anger;
+稿 < draft;
+渦 < swirl;
+渡 < cross;
+罢 < cease;
+鷺 < heron;
+鷹 < eagle;
+藩 < fence;
+藥 < drugs;
+鲜 < fresh;
+嗅 < smell;
+藁 < straw;
+鶴 < crane;
+枪 < spear;
+涯 < shore;
+涙 < tears;
+配 < match;
+浴 < bathe;
+升 < arise;
+浜 < creek;
+蔭 < shade;
+津 < ferry;
+鬼 < ghost;
+蓮 < lotus;
+避 < avoid;
+亡 < death;
+闪 < flash;
+震 < shake;
+咳 < cough;
+绿 < green;
+咎 < fault;
+纳 < admit;
+呪 < curse;
+童 < child;
+伟 < great;
+汁 < juice;
+荣 < glory;
+吐 < vomit;
+鰌 < loach;
+喊 < shout;
+吉 < lucky;
+逐 < chase;
+叩 < knock;
+检 < check;
+握 < grasp;
+牙 < tooth;
+殖 < breed;
+卿 < noble;
+歯 < teeth;
+歪 < slant;
+棋 < chess;
+魔 < demon;
+腰 < waist;
+梅 < plums;
+钢 < steel;
+茹 < roots;
+欺 < cheat;
+鬚 < beard;
+匙 < spoon;
+匍 < crawl;
+茅 < reeds;
+累 < tired;
+末 < final;
+糊 < paste;
+税 < taxes;
+惯 < habit;
+倾 < upset;
+贸 < trade;
+扫 < sweep;
+吓 < scare;
+剃 < shave;
+刷 < brush;
+羊 < sheep;
+扑 < pound;
+倍 < times;
+冶 < smelt;
+膳 < meals;
+兼 < unite;
+鞋 < shoes;
+挤 < crowd;
+颗 < grain;
+惠 < favor;
+腕 < wrist;
+桃 < peach;
+坡 < slope;
+償 < repay;
+植 < plant;
+脊 < spine;
+椅 < chair;
+肚 < belly;
+棲 < perch;
+肝 < liver;
+疯 < crazy;
+耻 < shame;
+侍 < serve;
+衫 < shirt;
+钻 < drill;
+峡 < gorge;
+韻 < rhyme;
+丑 < clown;
+澳 < inlet;
+疼 < aches;
+档 < shelf;
+玛 < agate;
+靴 < boots;
+傲 < proud;
+霜 < frost;
+吵 < argue;
+邪 < wrong;
+脆 < crisp;
+曳 < trail;
+離 < leave;
+叛 < rebel;
+翼 < wings;
+甜 < sweet;
+隙 < crack;
+傅 < tutor;
+喷 < spurt;
+娶 < marry;
+闇 < close;
+糖 < sugar;
+珊 < coral;
+砸 < smash;
+絞 < twist;
+轨 < track;
+籖 < tally;
+擒 < catch;
+揃 < shear;
+箒 < broom;
+鍮 < brass;
+嗓 < voice;
+啥 < what\?;
+蜜 < honey;
+鋏 < tongs;
+肿 < swell;
+裙 < skirt;
+尿 < urine;
+逮 < seize;
+倡 < guide;
+兜 < pouch;
+魄 < vigor;
+糕 < cakes;
+稚 < young;
+鈍 < blunt;
+禽 < birds;
+憺 < peace;
+链 < chain;
+憬 < rouse;
+凳 < bench;
+酬 < toast;
+灿 < vivid;
+攀 < climb;
+沫 < froth;
+魁 < chief;
+滥 < flood;
+戳 < prick;
+桩 < stake;
+肺 < lungs;
+纱 < gauze;
+陡 < steep;
+烫 < scald;
+鹅 < goose;
+敞 < roomy;
+峨 < lofty;
+虐 < cruel;
+辫 < braid;
+怦 < eager;
+浇 < spray;
+膛 < chest;
+闵 < mourn;
+袜 < socks;
+贿 < bribe;
+墅 < villa;
+秽 < dirty;
+呻 < groan;
+拧 < pinch;
+杠 < lever;
+缎 < satin;
+惮 < dread;
+噗 < burst;
+矶 < jetty;
+簇 < swarm;
+懊 < vexed;
+拇 < thumb;
+铲 < spade;
+哽 < choke;
+冕 < crown;
+疮 < tumor;
+赃 < booty;
+婊 < whore;
+锯 < a\-saw;
+嘈 < noisy;
+缰 < reins;
+讪 < abuse;
+忡 < a\-sad;
+馍 < bread;
+颅 < skull;
+烙 < brand;
+埔 < plain;
+阜 < mound;
+炬 < torch;
+炙 < roast;
+婪 < covet;
+蹑 < tread;
+竺 < india;
+剌 < slash;
+筛 < sieve;
+篡 < usurp;
+鲸 < whale;
+抡 < swing;
+涮 < rinse;
+酵 < yeast;
+橄 < olive;
+雏 < chick;
+涧 < brook;
+腺 < gland;
+忱 < truth;
+蜿 < creep;
+镀 < plate;
+胭 < rouge;
+赳 < grand;
+糠 < chaff;
+帛 < silks;
+鲨 < shark;
+踝 < ankle;
+眈 < gloat;
+倭 < dwarf;
+镐 < stove;
+虱 < louse;
+搐 < cramp;
+戛 < lance;
+呃 < belch;
+榭 < kiosk;
+酪 < cream;
+孀 < widow;
+孪 < twins;
+瞰 < watch;
+氮 < xenon;
+痣 < spots;
+摒 < expel;
+俸 < wages;
+愠 < angry;
+扪 < stoke;
+绉 < crepe;
+珀 < amber;
+诩 < boast;
+芍 < peony;
+褶 < pleat;
+酗 < drunk;
+柠 < lemon;
+诙 < tease;
+绺 < skein;
+釉 < glaze;
+孛 < comet;
+椽 < beams;
+颦 < frown;
+淖 < slush;
+莠 < weeds;
+橛 < a\-peg;
+蒺 < furze;
+翕 < agree;
+霾 < misty;
+砧 < anvil;
+胺 < amine;
+蛭 < leech;
+诨 < jokes;
+怫 < sorry;
+楔 < wedge;
+疽 < ulcer;
+桤 < alder;
+铆 < rivet;
+撺 < hurry;
+肄 < learn;
+孢 < spore;
+鲲 < spawn;
+铨 < weigh;
+豕 < a\-pig;
+笊 < ladle;
+囗 < erect;
+铩 < moult;
+鹑 < quail;
+啁 < chirp;
+醚 < ether;
+琰 < jewel;
+迨 < until;
+鹬 < snipe;
+傈 < tribe;
+铰 < hinge;
+硼 < borax;
+酯 < ester;
+镪 < coins;
+扦 < probe;
+溷 < privy;
+俳 < actor;
+蘖 < stump;
+墀 < porch;
+喈 < music;
+吡 < blame;
+瘊 < warts;
+厣 < shell;
+糅 < blend;
+阏 < block;
+鲂 < bream;
+溽 < moist;
+簏 < a\-box;
+裥 < folds;
+缳 < noose;
+龠 < flute;
+蝤 < larva;
+埭 < a\-dam;
+鲶 < sheat;
+锞 < ingot;
+氡 < radon;
+槭 < maple;
+彘 < swine;
+彖 < a\-hog;
+滗 < drain;
+廑 < a\-hut;
+匏 < gourd;
+篼 < sedan;
+蛞 < snail;
+璁 < \(gem\);
+绗 < baste;
+埘 < roost;
+巴黎 < paris;
+代理人 < agent;
+遊蕩 < stray;
+弄糟 < spoil;
+恩典 < grace;
+大爺 < uncle;
+日本 < japan;
+可可 < cocoa;
+可口 < tasty;
+延緩 < defer;
+姪女 < niece;
+陷落 < slump;
+牛排 < steak;
+隱約 < vague;
+合併 < annex;
+護士 < nurse;
+泊位 < berth;
+獨木舟 < canoe;
+條板箱 < crate;
+陳列臺 < stall;
+遊艇 < barge;
+陰莖 < penis;
+智利 < chile;
+壓碎 < crush;
+每每 < often;
+韓國 < korea;
+石狀 < stony;
+男修道院長 < abbot;
+別號 < alias;
+引用 < quote;
+市長 < mayor;
+爐架 < grate;
+機關 < organ;
+泥水匠 < mason;
+鴉片 < opium;
+植物群 < flora;
+在高處 < aloft;
+撐竿跳 < vault;
+放牧 < graze;
+每日 < daily;
+套房 < suite;
+違礙 < taboo;
+優點 < merit;
+徘徊 < hover;
+視覺 < sight;
+敘利亞 < syria;
+刀葉 < blade;
+摩西 < moses;
+虛張聲勢 < bluff;
+調制解調器 < modem;
+青年 < youth;
+標題 < title;
+氨基 < amino;
+機軸 < arbor;
+醒來 < waken;
+門閂 < latch;
+靈巧 < handy;
+元音 < vowel;
+克隆 < clone;
+整整 < whole;
+匯寄 < remit;
+剁碎 < mince;
+調情 < flirt;
+未成年人 < minor;
+匆忙 < hasty;
+毛巾 < towel;
+芳香 < balmy;
+年級 < grade;
+紫丁香 < lilac;
+散文 < prose;
+不新鮮 < stale;
+西藏 < tibet;
+大農場 < ranch;
+火車 < train;
+死板 < rigid;
+矛柄 < shaft;
+長釘 < spike;
+步槍 < rifle;
+刻痕 < notch;
+選民 < voter;
+魔鬼 < devil;
+新娘 < bride;
+謠傳 < rumor;
+新奇 < novel;
+煤渣 < slack;
+花開 < bloom;
+物主 < owner;
+彈弓 < sling;
+多水分 < juicy;
+報窩 < brood;
+麵包師傅 < baker;
+電影 < movie;
+摸索 < grope;
+速率 < speed;
+破壞 < wreck;
+約莫 < about;
+壁架 < ledge;
+呼叫器 < pager;
+階段 < stage;
+十分 < fully;
+地面 < floor;
+諷刺 < irony;
+白費 < waste;
+運河 < canal;
+八角 < anise;
+陰涼 < shady;
+擦洗 < scour;
+熱忱 < ardor;
+綠洲 < oasis;
+下水道 < sewer;
+固體 < solid;
+僧院 < abbey;
+推選 < elect;
+推進 < impel;
+關節 < joint;
+從來不 < never;
+艦隊 < fleet;
+比分 < score;
+剛果 < congo;
+火花 < spark;
+影像 < image;
+盜竊 < steal;
+麺 < flour;
+麘 < scent;
+鹾 < salty;
+鸲 < mynah;
+二極管 < diode;
+睡椅 < couch;
+競技場 < arena;
+加寬 < widen;
+鴪 < swoop;
+可擦寫可編程祇讀存儲器 < eprom;
+說出 < utter;
+澳門 < aomen;
+推論 < infer;
+糢糊 < foggy;
+鰞 < squid;
+動向 < trend;
+天使 < angel;
+褐色 < brown;
+鬆開 < loose;
+櫸木 < beech;
+部件 < parts;
+軌道 < orbit;
+鬎 < favus;
+閃耀 < glint;
+臭鼬 < skunk;
+髳 < state;
+髲 < a\-wig;
+疾風 < blast;
+攤子 < booth;
+大人 < adult;
+麥阿密 < miami;
+出沒 < haunt;
+駞 < camel;
+道德 < moral;
+發聲 < vocal;
+長老 < elder;
+休息室 < lobby;
+樹籬 < hedge;
+饘 < gruel;
+球狀物 < globe;
+餪 < feast;
+餦 < candy;
+帝王 < regal;
+強光 < glare;
+飶 < odour;
+飑 < storm;
+軌跡 < locus;
+軌距 < gauge;
+補藥 < tonic;
+對敵者 < rival;
+幽暗 < gloom;
+擔懮 < worry;
+榮譽 < honor;
+魔術 < magic;
+鞃 < board;
+靦 < timid;
+霱 < cloud;
+霙 < sleet;
+開端 < start;
+雞冠 < crest;
+陼 < islet;
+阹 < a\-pen;
+切望 < crave;
+冬青樹 < holly;
+標籤 < label;
+镟 < lathe;
+然後 < after;
+那兒 < there;
+钃 < metal;
+圖表 < chart;
+圍裙 < apron;
+粗糙 < crude;
+果子凍 < jelly;
+大地圖 < atlas;
+剪報 < scrap;
+規模 < scale;
+那些 < those;
+鈇 < an\-ax;
+辦法 < means;
+船貨 < cargo;
+歌劇 < opera;
+烏木 < ebony;
+雅各書 < james;
+粉筆 < chalk;
+絕技 < stunt;
+臉頰 < cheek;
+白癡 < idiot;
+角度 < angle;
+發病 < onset;
+感化餅乾 < wafer;
+基本 < basic;
+火焰 < blaze;
+探索 < quest;
+填塞 < stuff;
+糖漿 < syrup;
+粉碎 < crash;
+英代爾 < intel;
+貤 < steps;
+舉起 < heave;
+豔 < plump;
+這天 < today;
+讙 < cheer;
+譁 < noise;
+尼龍 < nylon;
+毛茸茸 < hairy;
+隊伍 < ranks;
+觔 < catty;
+幅度 < width;
+橡木 < oaken;
+精液 < semen;
+床單 < sheet;
+剃刀 < razor;
+蠗 < \(ape\);
+尼日爾 < niger;
+蟢 < caulk;
+凳子 < stool;
+膽量 < nerve;
+蝘 < gecko;
+再會 < adieu;
+檳子 < binzi;
+兩次 < twice;
+修飾 < adorn;
+索引 < index;
+僵硬 < stark;
+蘓 < thyme;
+蘋 < apple;
+工會 < union;
+裂痕 < chasm;
+細小 < petty;
+驅除 < repel;
+樹林 < woods;
+潛行 < sneak;
+垂死 < dying;
+樺木 < birch;
+莿 < thorn;
+公會 < guild;
+苶 < weary;
+收音機 < radio;
+搓揉 < knead;
+臽 < a\-pit;
+臲 < jumpy;
+臛 < broth;
+這些 < these;
+庇佑 < bless;
+假裝 < feign;
+辮子 < plait;
+降下 < lower;
+腡 < lines;
+樓梯 < stair;
+第三次 < third;
+高聲 < aloud;
+尊魚 < trout;
+肕 < tough;
+回答 < reply;
+耞 < flail;
+招待員 < usher;
+簡短 < brief;
+翽 < whirr;
+囤積 < hoard;
+翄 < winds;
+駿馬 < steed;
+罉 < a\-pot;
+色狼 < satyr;
+纻 < ramie;
+轉播 < relay;
+批量 < batch;
+縏 < purse;
+綌 < cloth;
+皮帶 < strap;
+撒但 < satan;
+冰塔 < serac;
+粎 < metre;
+箛 < bugle;
+輕染 < tinge;
+筰 < cable;
+筦 < a\-key;
+竔 < litre;
+招致 < incur;
+一線微光 < gleam;
+穧 < sheaf;
+栗鼠 < bunny;
+巫婆 < witch;
+門廊 < stoop;
+礶 < a\-jug;
+意大利 < italy;
+磈 < rocky;
+烘乾 < parch;
+水平面 < plane;
+公尺 < meter;
+矓 < faint;
+瞏 < round;
+亞麻布 < linen;
+眹 < pupil;
+五花八門 < myrid;
+盎司 < ounce;
+皽 < scurf;
+騎車 < cycle;
+精子 < sperm;
+癡 < silly;
+凌亂 < chaos;
+俚語 < slang;
+紅利 < bonus;
+溜冰鞋 < skate;
+甎 < brick;
+作哼聲 < snort;
+埃及 < egypt;
+製造者 < maker;
+瑔 < \(jade;
+珖 < carat;
+符記 < token;
+喪鐘 < knell;
+脹起 < bulge;
+公噸 < tonne;
+無生命 < inert;
+牜 < an\-ox;
+牔 < gable;
+酪農業 < dairy;
+生苔 < mossy;
+騙術 < trick;
+打製 < forge;
+灣 < a\-bay;
+腐蝕 < rusty;
+水蒸氣 < vapor;
+六十 < sixty;
+公升 < liter;
+似雪 < snowy;
+病毒 < virus;
+推崇 < value;
+路線 < route;
+巨人 < giant;
+像片簿 < album;
+手藝 < craft;
+贈與者 < giver;
+斜紋軟呢 < tweed;
+汳 < henan;
+德克薩斯 < texas;
+馬達 < motor;
+四月 < april;
+殑 < swoon;
+其中 < among;
+歈 < songs;
+欸 < sighs;
+滑翔 < glide;
+天藍色 < azure;
+衰敗 < decay;
+苛刻 < harsh;
+檨 < mango;
+空間 < space;
+樕 < shrub;
+掠奪 < harry;
+察覺 < aware;
+屋簷 < eaves;
+格言 < maxim;
+楅 < buard;
+瓣膜 < valve;
+椈 < cedar;
+棁 < joist;
+圍巾 < scarf;
+寓言 < fable;
+被子 < quilt;
+栍 < a\-lot;
+小舌 < uvula;
+就緒 < ready;
+軀幹 < trunk;
+手肘 < elbow;
+客車 < coach;
+艾姬 < aggie;
+飛行員 < pilot;
+在外 < outer;
+崇拜 < adore;
+充份 < ample;
+高明 < smart;
+痛恨 < abhor;
+痛快 < jolly;
+捐贈者 < donor;
+敔 < gavel;
+西班牙 < spain;
+男爵 < baron;
+固定 < fixed;
+尖細 < taper;
+花俏 < fancy;
+赫茲 < hertz;
+挌 < fight;
+提多書 < titus;
+圍城 < siege;
+扢 < caper;
+致敬 < greet;
+軍團 < corps;
+愃 < relax;
+排列 < array;
+俏皮 < saucy;
+舞弊 < fraud;
+悾 < naive;
+補丁 < patch;
+生麵糰 < dough;
+滿身塵埃 < dusty;
+漿果 < berry;
+阿拉摩 < alamo;
+魅力 < charm;
+漂游 < drift;
+彑 < snout;
+調味肉汁 < gravy;
+潑掉 < spill;
+帒 < a\-bag;
+資金 < funds;
+男高音 < tenor;
+一點兒 < a\-bit;
+嶞 < ridge;
+自我 < self\-;
+果酒 < cider;
+崚 < hilly;
+捷克 < czech;
+用法 < usage;
+存貨 < stock;
+高尚 < nobly;
+拍擊 < smack;
+嫚 < scorn;
+小樹林 < grove;
+布萊爾 < blair;
+在﹍之下 < below;
+在﹍之上 < above;
+激光 < laser;
+安華 < anwar;
+拂掃 < whisk;
+船只 < ships;
+壆 < stiff;
+墺 < walls;
+墍 < paint;
+塙 < truly;
+四十 < forty;
+坰 < wilds;
+撥火棍 < poker;
+噺 < story;
+嗐 < alas\!;
+流體 < fluid;
+喴 < hello;
+啲 < a\-few;
+啍 < creak;
+哶 < bleat;
+咍 < laugh;
+吰 < clang;
+範圍 < range;
+厺 < to\-go;
+厖 < bulky;
+三色紫羅蘭 < pansy;
+修改 < amend;
+有風 < windy;
+驚慌 < panic;
+在旁邊 < aside;
+冧 < a\-bud;
+主題 < theme;
+營業員 < clerk;
+哪裡 < where;
+國際電報電話咨詢委員會 < ccitt;
+警報器 < siren;
+當地 < local;
+倉庫 < depot;
+佺 < fairy;
+伊索 < aesop;
+動態影像 < video;
+三角洲 < delta;
+笑林 < humor;
+威爾士 < wales;
+棚子 < shack;
+䶇 < a\-rat;
+肯尼亞 < kenya;
+男子 < a\-man;
+股票 < share;
+䳱 < ducks;
+麵包皮 < crust;
+肥碩 < stout;
+䯍 < bones;
+石南樹 < heath;
+拴住 < hitch;
+蠢事 < folly;
+䪻 < a\-cap;
+䩕 < clogs;
+下雨 < rainy;
+驚奇 < amaze;
+䨹 < swift;
+噴出 < spout;
+䧪 < sissy;
+䦞 < extra;
+䥓 < a\-hoe;
+䤙 < dregs;
+腱子 < sinew;
+更遲 < later;
+黑貂 < sable;
+䝒 < a\-sow;
+䚟 < horns;
+螺絲釘 < screw;
+䚉 < o\-see;
+沙龍 < salon;
+䗕 < bends;
+保姆 < nanny;
+唱詩班 < choir;
+拉丁 < latin;
+䑁 < fatty;
+會談 < talks;
+脈搏 < pulse;
+䏳 < olein;
+䏯 < moles;
+䍥 < smoky;
+金髮 < blond;
+䍌 < a\-jar;
+三千五百 < 3\-500;
+䌑 < tight;
+䌐 < ropes;
+䊻 < silky;
+小屋 < cabin;
+䈉 < a\-fan;
+嘎嘎 < quack;
+䄥 < a\-god;
+䄢 < pious;
+便士 < penny;
+耶穌 < jesus;
+䃙 < rocks;
+鋼琴 < piano;
+騎士 < rider;
+手套 < glove;
+跟前 < front;
+修剪 < prune;
+㾚 < itchy;
+香料 < spice;
+伺服 < servo;
+租約 < lease;
+㼏 < a\-bad;
+尖塔 < spire;
+嗶嘰 < serge;
+污點 < stain;
+法郎 < franc;
+活著 < alive;
+㺃 < a\-dog;
+㹻 < puppy;
+㹋 < a\-cow;
+肅清 < purge;
+㸃 < a\-dot;
+發牢騷 < whine;
+淹沒 < flush;
+第十 < tenth;
+時髦 < vogue;
+打呼 < snore;
+㰼 < greed;
+餘燼 < ember;
+㯷 < dates;
+第六 < sixth;
+㮥 < sails;
+羽莖 < quill;
+封地 < manor;
+題解 < notes;
+長頸瓶 < flask;
+一行 < party;
+㨗 < alert;
+㨃 < a\-row;
+小吃 < snack;
+安全理事會 < the\-u;
+㧍 < alike;
+珍珠 < pearl;
+鼻煙 < snuff;
+洋蔥 < onion;
+示威運動 < rally;
+趣劇 < farce;
+低廉 < cheap;
+哀痛 < grief;
+第五 < fifth;
+第九 < ninth;
+㡶 < dwell;
+㡐 < flags;
+㡌 < a\-hat;
+㡇 < colar;
+有線 < wired;
+㞾 < a\-nun;
+㞕 < chips;
+㞒 < lusty;
+戲劇 < drama;
+載貨汽車 < lorry;
+罩衫 < smock;
+㖤 < wrath;
+㕎 < caves;
+皺眉頭 < scowl;
+㓝 < a\-law;
+㓁 < a\-net;
+㒩 < naked;
+㒌 < along;
+率直 < frank;
+㐱 < bushy;
+景象 < scene;
+象牙 < ivory;
+喝叱 < chide;
+琴弦 < chord;
+獎章 < medal;
+子房 < ovary;
+怪誕 < freak;
+深度 < depth;
+午餐 < lunch;
+獵犬 < hound;
+理想 < ideal;
+耽擱 < tarry;
+旅館 < hotel;
+馬來 < malay;
+馬伕 < groom;
+大鹿 < moose;
+聖徒 < saint;
+世界 < world;
+伊斯蘭教 < islam;
+減去 < minus;
+人性 < human;
+慈悲 < mercy;
+論題 < topic;
+卡車 < truck;
+罌粟 < poppy;
+斑馬 < zebra;
+套鐘 < chime;
+守候 < abide;
+板岩 < slate;
+頭皮 < scalp;
+卑賤 < lowly;
+升起 < hoist;
+流浪者 < rover;
+貝寧 < benin;
+旋轉 < whirl;
+灌木叢 < scrub;
+日記 < diary;
+乃是 < to\-be;
+新近 < newly;
+吸氣 < sniff;
+誘陷 < snare;
+杓子 < scoop;
+感官 < sense;
+本影 < umbra;
+人員 < staff;
+續訂 < renew;
+更改 < alter;
+吉普賽人 < gypsy;
+收養 < adopt;
+怪異 < weird;
+貓咪 < kitty;
+沼澤 < glade;
+碎布條 < shred;
+污穢 < nasty;
+三月 < march;
+內在的 < inner;
+電郵 < email;
+勝過 < excel;
+證章 < badge;
+海地 < haiti;
+雷達 < radar;
+鬱金香 < tulip;
+失誤 < lapse;
+邊際 < limit;
+狂熱 < craze;
+五十 < fifty;
+雪茄煙 < cigar;
+東京 < tokyo;
+毒蛇 < viper;
+頌歌 < carol;
+咕嚕 < grunt;
+一打 < dozen;
+試金 < assay;
+頭暈 < dizzy;
+吹笛者 < piper;
+一巴掌 < spank;
+焦點 < focus;
+統治者 < ruler;
+纖維 < fiber;
+事件 < event;
+逗點 < comma;
+咆哮 < growl;
+呼叫聲 < whoop;
+邏輯 < logic;
+更壞 < worse;
+座右銘 < motto;
+三稜鏡 < prism;
+中國 < china;
+多葉 < leafy;
+一層 < layer;
+燻肉 < bacon;
+擢陞 < exalt;
+愛克斯光 < x\-ray;
+大腿 < thigh;
+本人 < i\-\(me;
+韻文 < verse;
+熊貓 < panda;
+斑羚 < goral;
+矮墩墩 < pudgy;
+葡萄 < grape;
+獎品 < award;
+黏住 < cling;
+可怕 < awful;
+過道 < aisle;
+礦工 < miner;
+歌謠 < chant;
+沙拉 < salad;
+斗篷 < cloak;
+月份 < month;
+雛菊 < daisy;
+包穀 < maize;
+阿爾法 < alpha;
+逼迫 < force;
+媒介 < media;
+哪一個 < which;
+教義 < creed;
+合股線 < twine;
+頁岩 < shale;
+瑞典人 < swede;
+厭惡 < loath;
+使羞愧 < abash;
+昏暗 < dusky;
+比率 < ratio;
+霎眼 < blink;
+晴天 < sunny;
+男子氣 < manly;
+使娛樂 < amuse;
+有 < have;
+知 < know;
+这 < this;
+矜 < pity;
+忙 < busy;
+来 < come;
+近 < near;
+道 < path;
+也 < also;
+时 < time;
+年 < year;
+瞻 < look;
+辺 < edge;
+就 < just;
+那 < that;
+生 < life;
+自 < self;
+瞬 < wink;
+过 < pass;
+循 < obey;
+從 < from;
+多 < much;
+好 < good;
+起 < rise;
+只 < only;
+作 < make;
+当 < bear;
+形 < form;
+开 < open;
+手 < hand;
+弱 < weak;
+本 < root;
+头 < head;
+真 < real;
+面 < face;
+公 < fair;
+同 < same;
+动 < move;
+长 < long;
+載 < load;
+将 < will;
+身 < body;
+高 < high;
+把 < hold;
+盥 < wash;
+月 < moon;
+种 < seed;
+軍 < army;
+車 < cart;
+部 < part;
+名 < name;
+皮 < skin;
+机 < desk;
+给 < give;
+等 < rank;
+座 < seat;
+很 < very;
+最 < most;
+店 < shop;
+躍 < skip;
+走 < walk;
+四 < four;
+门 < gate;
+东 < east;
+庁 < hall;
+西 < west;
+平 < flat;
+听 < hear;
+幸 < luck;
+蹴 < kick;
+五 < five;
+帷 < tent;
+帶 < belt;
+希 < rare;
+踊 < leap;
+书 < book;
+九 < nine;
+跳 < jump;
+路 < road;
+痩 < thin;
+活 < live;
+左 < left;
+巣 < nest;
+表 < show;
+跟 < heel;
+痛 < pain;
+痕 < scar;
+痒 < itch;
+感 < feel;
+足 < foot;
+金 < gold;
+何 < what;
+更 < more;
+疋 < roll;
+做 < work;
+计 < plan;
+王 < king;
+各 < each;
+留 < stop;
+畏 < fear;
+男 < male;
+风 < wind;
+崗 < post;
+毛 < hair;
+峰 < peak;
+爱 < love;
+瓦 < tile;
+賣 < sell;
+賃 < rent;
+貸 < lend;
+岸 < bank;
+结 < knot;
+岬 < cape;
+流 < flow;
+貧 < poor;
+青 < blue;
+管 < pipe;
+连 < join;
+队 < team;
+屑 < bits;
+领 < neck;
+屈 < bend;
+尾 < tail;
+半 < half;
+候 < wait;
+步 < step;
+深 < deep;
+区 < area;
+尋 < seek;
+球 < ball;
+告 < tell;
+寸 < inch;
+满 < fill;
+李 < plum;
+息 < rest;
+寒 < cold;
+寄 < send;
+取 < take;
+室 < room;
+宛 < seem;
+孩 < baby;
+广 < wide;
+玉 < jade;
+火 < fire;
+讀 < read;
+譽 < fame;
+则 < rule;
+失 < lose;
+包 < wrap;
+猶 < like;
+落 < fall;
+济 < help;
+謡 < sing;
+编 < knit;
+谈 < talk;
+拉 < pull;
+狼 < wolf;
+杀 < kill;
+嫌 < hate;
+克 < gram;
+冲 < soar;
+推 < push;
+称 < call;
+試 < test;
+号 < mark;
+亚 < asia;
+港 < port;
+般 < sort;
+爪 < claw;
+刚 < hard;
+陆 < land;
+确 < sure;
+具 < tool;
+威 < pomp;
+线 < line;
+触 < butt;
+角 < horn;
+燒 < burn;
+妻 < wife;
+需 < need;
+酒 < wine;
+铁 < iron;
+覗 < peek;
+医 < cure;
+襲 < raid;
+煮 < cook;
+土 < soil;
+软 < soft;
+煤 < coal;
+套 < case;
+户 < door;
+背 < back;
+暗 < dark;
+须 < must;
+裸 < bare;
+树 < tree;
+沉 < sink;
+职 < duty;
+细 < fine;
+補 < mend;
+袢 < robe;
+旁 < side;
+塵 < dust;
+塩 < salt;
+歌 < song;
+灌 < pour;
+塀 < wall;
+堤 < dike;
+恶 < evil;
+堆 < heap;
+慢 < slow;
+堀 < cave;
+蟻 < ants;
+藏 < hide;
+埋 < bury;
+澹 < calm;
+垢 < dirt;
+融 < melt;
+潮 < tide;
+救 < save;
+丝 < silk;
+齊 < even;
+鼻 < nose;
+漬 < soak;
+鼓 < drum;
+漏 < leak;
+录 < copy;
+遇 < meet;
+船 < ship;
+黴 < mold;
+滴 < drip;
+雨 < rain;
+蛙 < frog;
+滑 < slip;
+麻 < hemp;
+蚤 < flea;
+鹿 < deer;
+沙 < sand;
+噛 < bite;
+拍 < clap;
+掉 < turn;
+哭 < weep;
+嘆 < sigh;
+午 < noon;
+卡 < card;
+雪 < snow;
+淵 < gulf;
+涼 < cool;
+刺 < stab;
+薪 < fuel;
+鱼 < fish;
+喘 < pant;
+盘 < tray;
+薔 < rose;
+架 < rack;
+款 < item;
+浪 < wave;
+蕩 < pond;
+洪 < vast;
+镇 < town;
+浄 < pure;
+旅 < trip;
+唾 < spit;
+骨 < bone;
+唖 < dumb;
+鴉 < crow;
+唇 < lips;
+泳 < dive;
+哲 < wise;
+哩 < mile;
+圣 < holy;
+鳥 < bird;
+晓 < dawn;
+沼 < lake;
+腿 < legs;
+探 < find;
+葦 < reed;
+池 < pool;
+葉 < leaf;
+束 < bind;
+呆 < dull;
+吻 < kiss;
+吹 < blow;
+氏 < clan;
+签 < sign;
+氈 < felt;
+奶 < milk;
+菩 < herb;
+叢 < bush;
+挂 < hang;
+航 < sail;
+拳 < fist;
+乘 < ride;
+址 < site;
+毆 < beat;
+魂 < soul;
+乔 < tall;
+粮 < food;
+敏 < fast;
+茎 < stem;
+零 < zero;
+勾 < hook;
+乃 < then;
+抬 < lift;
+苔 < moss;
+冒 < risk;
+檣 < mast;
+闭 < shut;
+碗 < bowl;
+剥 < peel;
+蛋 < eggs;
+促 < urge;
+杰 < hero;
+舟 < boat;
+迟 < late;
+赖 < rely;
+駒 < colt;
+馴 < tame;
+膝 < knee;
+拖 < drag;
+昏 < dusk;
+戒 < warn;
+页 < page;
+井 < well;
+脇 < ribs;
+乏 < lack;
+胞 < womb;
+梨 < pear;
+酸 < tart;
+桶 < pail;
+绩 < spin;
+擦 < wipe;
+殷 < many;
+耕 < plow;
+暖 < warm;
+锁 < lock;
+砍 < hack;
+慈 < kind;
+羹 < soup;
+鞭 < whip;
+羨 < envy;
+撤 < omit;
+筹 < chip;
+杖 < cane;
+霰 < hail;
+滋 < grow;
+谱 < list;
+丘 < hill;
+杆 < pole;
+隈 < cove;
+纂 < edit;
+唉 < alas;
+笼 < cage;
+繪 < draw;
+繩 < rope;
+矿 < mine;
+镖 < dart;
+兆 < omen;
+披 < wear;
+债 < debt;
+堡 < fort;
+颂 < laud;
+絆 < loop;
+钉 < nail;
+哄 < coax;
+铃 < bell;
+契 < deed;
+懒 < lazy;
+猎 < hunt;
+摺 < fold;
+箋 < note;
+捲 < curl;
+秃 < bald;
+鸭 < duck;
+吼 < roar;
+窺 < peep;
+叠 < pile;
+銑 < mill;
+逸 < flee;
+贱 < mean;
+狮 < lion;
+妮 < maid;
+窑 < kiln;
+慾 < lust;
+祷 < pray;
+蹄 < hoof;
+烤 < bake;
+尬 < limp;
+週 < week;
+怠 < idle;
+胶 < glue;
+梳 < comb;
+啤 < beer;
+酿 < brew;
+捣 < hull;
+噢 < moan;
+窟 < hole;
+兑 < cash;
+沸 < boil;
+瘾 < rash;
+妞 < girl;
+帜 < flag;
+蕾 < buds;
+铅 < lead;
+锣 < gong;
+嗦 < suck;
+轴 < axle;
+涕 < tear;
+吆 < bawl;
+聋 < deaf;
+募 < levy;
+皂 < soap;
+蟹 < crab;
+唠 < chat;
+啃 < gnaw;
+羔 < lamb;
+锈 < rust;
+腓 < calf;
+骡 < mule;
+醇 < rich;
+纬 < woof;
+蛤 < clam;
+呱 < wail;
+戎 < arms;
+蔼 < lush;
+礁 < reef;
+闩 < bolt;
+跛 < lame;
+偌 < thus;
+箍 < hoop;
+蟠 < coil;
+掂 < heft;
+遐 < afar;
+吠 < bark;
+蛾 < moth;
+耘 < weed;
+蟾 < toad;
+筏 < raft;
+鲤 < carp;
+芋 < taro;
+鹪 < wren;
+蜕 < molt;
+焊 < weld;
+耙 < rake;
+缄 < seal;
+漩 < eddy;
+饵 < bait;
+谑 < jeer;
+颏 < chin;
+芮 < tiny;
+璨 < gems;
+泵 < pump;
+豌 < peas;
+堑 < moat;
+疵 < flaw;
+榈 < palm;
+鬃 < mane;
+咝 < hiss;
+邋 < rags;
+胤 < heir;
+粕 < lees;
+挞 < flog;
+镫 < lamp;
+阄 < lots;
+锌 < zinc;
+喙 < beak;
+肛 < anus;
+痂 < scab;
+鸢 < kite;
+轭 < yoke;
+洵 < true;
+泅 < swim;
+矾 < alum;
+蚩 < worm;
+鸷 < hawk;
+耋 < aged;
+坨 < lump;
+疱 < acne;
+爨 < oven;
+拊 < slap;
+骟 < geld;
+圹 < tomb;
+龈 < gums;
+阋 < feud;
+酰 < acyl;
+疣 < wart;
+穑 < farm;
+礻 < cult;
+佤 < kawa;
+麸 < bran;
+菖 < iris;
+嫱 < lady;
+谝 < brag;
+氖 < neon;
+跖 < sole;
+蚋 < gnat;
+偾 < ruin;
+疒 < sick;
+噍 < chew;
+洳 < damp;
+炱 < soot;
+膪 < pork;
+绲 < cord;
+宀 < roof;
+帶露 < dewy;
+薄命 < \(usu;
+功績 < feat;
+暴亂 < riot;
+爛泥 < ooze;
+日期 < date;
+姨媽 < aunt;
+伊拉克 < iraq;
+幽谷 < dell;
+教皇 < pope;
+向下 < down;
+速行 < rush;
+有能力 < able;
+這裡 < here;
+缺口 < nick;
+原子 < atom;
+狂吠 < howl;
+心情 < mood;
+野兔 < hare;
+基金 < fund;
+埃米爾 < emir;
+石片 < slab;
+咖啡館 < cafe;
+冰鎮 < iced;
+熾熱 < glow;
+石灰 < lime;
+皮鞭 < lash;
+冷酷 < grim;
+硬幣 < coin;
+凝視 < gaze;
+教派 < sect;
+公雞 < cock;
+角色 < role;
+纖度 < size;
+奉承 < fawn;
+露齒而笑 < grin;
+課文 < text;
+長靴 < boot;
+牢固 < firm;
+百靈 < lark;
+通行稅 < toll;
+玉蜀黍 < corn;
+透紅 < rosy;
+數據 < data;
+詩歌 < poem;
+小毛蟲 < slug;
+樂隊 < band;
+氣味 < odor;
+無禮 < rude;
+都市 < city;
+西薄 < cake;
+最主要 < main;
+雪撬 < sled;
+遨游 < roam;
+毒害 < bane;
+猶他州 < utah;
+細胞 < cell;
+卑劣 < base;
+復原 < heal;
+別的 < else;
+公豬 < boar;
+調子 < tune;
+眼看 < soon;
+面具 < mask;
+弧形 < arch;
+使受傷 < hurt;
+瘦長 < slim;
+花邊 < lace;
+填滿 < cram;
+諾亞 < noah;
+外套 < coat;
+長襪 < hose;
+立方體 < cube;
+長袍 < gown;
+強姦 < rape;
+照料 < tend;
+採邑 < fief;
+掠過 < flit;
+灰色 < gray;
+白骨頂 < coot;
+細看 < peer;
+黶 < mole;
+褪色 < fade;
+麚 < buck;
+適應 < suit;
+麌 < stag;
+麃 < till;
+鹆 < myna;
+一角銀幣 < dime;
+剝掉 < pare;
+郵件 < mail;
+瞑想 < muse;
+遊戲 < game;
+節點 < node;
+騯 < loud;
+駽 < grey;
+捲軸 < reel;
+饌 < feed;
+散出 < shed;
+飡 < meal;
+巢穴 < lair;
+洋娃娃 < doll;
+阿曼 < oman;
+廠子 < yard;
+躲避 < shun;
+熱力 < heat;
+阞 < vein;
+下一次 < next;
+淺黃色 < buff;
+闆 < boss;
+簽証 < visa;
+鳴叫 < hoot;
+镩 < pick;
+镕 < fuse;
+鑢 < file;
+鐩 < lens;
+收割 < reap;
+網孔 < mesh;
+雜亂 < mess;
+掉落 < flop;
+飲食療養 < diet;
+詩人 < bard;
+大袋子 < sack;
+表象 < idea;
+舒適 < cozy;
+英畝 < acre;
+步伐 < pace;
+轗 < fail;
+接縫 < seam;
+公牛 < bull;
+粗砂 < grit;
+公爵 < duke;
+跼 < bent;
+出租車 < taxi;
+跲 < hood;
+菜單 < menu;
+橫樑 < beam;
+賵 < gift;
+術語 < term;
+剛勁 < bold;
+衚衕 < lane;
+艾絨 < moxa;
+誧 < huge;
+觝 < gore;
+先見者 < seer;
+花瓶 < vase;
+蠭 < bees;
+機智 < tact;
+傾聽 < hark;
+螉 < wasp;
+鐘頭 < hour;
+蘒 < \:143;
+藟 < vine;
+炸彈 < bomb;
+回聲 < echo;
+蓫 < dock;
+解凍 < thaw;
+萜 < c5h8;
+菾 < beet;
+長槍 < pike;
+六月 < june;
+僱用 < hire;
+圓盤 < disk;
+地獄 < hell;
+爵士舞 < jazz;
+阿們 < amen;
+腶 < meat;
+脲 < urea;
+路邊 < curb;
+視圖 < view;
+撇去 < skim;
+農奴 < serf;
+艾滋病 < aids;
+帳單 < bill;
+草坪 < lawn;
+搶奪 < snap;
+電燈泡 < bulb;
+竁 < bore;
+穜 < rice;
+禸 < rump;
+價款 < cost;
+樣式 < type;
+損害 < harm;
+模式 < mode;
+盟友 < ally;
+矻 < toil;
+疼痛 < ache;
+樓廂 < loft;
+目瞪口呆 < stun;
+屁話 < shit;
+鏈路 < link;
+猶大書 < jude;
+低音 < bass;
+用膳 < dine;
+笑話 < joke;
+山羊 < goat;
+競賽 < race;
+笨蛋 < fool;
+岩石 < rock;
+略碼 < code;
+涴 < daub;
+較少 < less;
+百合 < lily;
+腰肉 < loin;
+地帶 < zone;
+閣下 < sire;
+龍骨 < keel;
+大頭釘 < tack;
+保羅 < paul;
+色彩 < tint;
+檍 < ilex;
+槹 < spar;
+捲帶 < tape;
+椑 < oval;
+鍍金 < gild;
+指標 < norm;
+衝撞 < dash;
+柣 < sill;
+岩漿 < lava;
+柂 < helm;
+握住 < grip;
+朘 < wane;
+圓屋頂 < dome;
+擫 < tuck;
+策略 < plot;
+摲 < raze;
+搘 < prop;
+亞麻 < flax;
+掞 < easy;
+圈套 < trap;
+雙胞胎 < twin;
+籃圈 < ring;
+膽汁 < gall;
+憰 < wily;
+怳 < wild;
+採伐 < fell;
+一塊麵 < loaf;
+電機及電子學工程師聯合會 < ieee;
+借款 < loan;
+到﹍之上 < onto;
+袖口 < cuff;
+全體人員 < crew;
+使用者 < user;
+秘魯 < peru;
+僧侶 < monk;
+孻 < last;
+拖拉 < haul;
+媊 < star;
+娸 < ugly;
+遠程監控 < rmon;
+在﹍之中 < amid;
+圍住 < gird;
+姤 < mate;
+棍棒 < club;
+拍打 < flap;
+飾釘 < stud;
+偏差 < bias;
+骰子 < dice;
+聖詩 < hymn;
+外小腿 < shin;
+鋪設 < pave;
+吽 < ''om'';
+蛋白石 < opal;
+枯萎 < wilt;
+刜 < chop;
+刓 < trim;
+一分錢 < cent;
+疲倦 < tire;
+賢能 < sage;
+海軍 < navy;
+臭味 < fume;
+侜 < lies;
+伱 < thou;
+偶像 < idol;
+小起重機 < jack;
+跨度 < span;
+䳼 < gull;
+果肉 < pulp;
+䱴 < tuna;
+䯕 < bony;
+命運 < fate;
+字節 < byte;
+羅馬 < rome;
+考試 < exam;
+䧻 < dove;
+倍塔 < beta;
+圓錐體 < cone;
+悠閒 < ease;
+伯爵 < earl;
+周遊 < tour;
+䡀 < nude;
+䠏 < feet;
+䚽 < news;
+琵琶 < lute;
+䙊 < arid;
+膠卷 < film;
+䖭 < grub;
+專用集成電路 < asic;
+䒺 < clay;
+品脫 < pint;
+小島 < isle;
+薄霧 < mist;
+何時 < when;
+口頭 < oral;
+令狀 < writ;
+䁆 < eyes;
+䁅 < rage;
+蕨類 < fern;
+䀀 < cups;
+㿙 < full;
+㾹 < lean;
+抓住 < grab;
+蜂蜜酒 < mead;
+核心 < core;
+決鬥 < duel;
+豆腐 < tofu;
+咒罵 < damn;
+㲻 < sunk;
+㲴 < mind;
+㲜 < rugs;
+㰫 < glad;
+㰟 < hope;
+㮤 < pine;
+蜂房 < hive;
+㮒 < wood;
+㫱 < mild;
+馬廄 < barn;
+亞當 < adam;
+翅膀 < wing;
+金屬薄片 < foil;
+伊朗 < iran;
+主義 < \-ism;
+麥芽 < malt;
+狹谷 < glen;
+牡鹿 < hart;
+在之上 < over;
+名詞 < noun;
+存根 < stub;
+頭腦清楚 < sane;
+㚧 < agil;
+史詩 < epic;
+貴婦人 < dame;
+家園 < home;
+牛飲 < gulp;
+賺得 < earn;
+豎琴 < harp;
+一群 < gang;
+音調 < tone;
+板條 < lath;
+貴族 < lord;
+哈欠 < yawn;
+豬油 < lard;
+錫安 < zion;
+獵物 < prey;
+紅寶石 < ruby;
+犯規 < foul;
+軟木塞 < cork;
+油膏 < balm;
+班房 < jail;
+斑點 < spot;
+浮標 < buoy;
+家伙 < chap;
+後面 < rear;
+天鵝 < swan;
+整齊 < tidy;
+在水步行 < wade;
+母馬 < mare;
+字型 < font;
+安全 < safe;
+粉紅色 < pink;
+孤單 < lone;
+木桶 < cask;
+飾帶 < sash;
+老撾 < laos;
+朦朧 < blur;
+課題 < task;
+珠子 < bead;
+呼呼聲 < whir;
+快步跑 < trot;
+波特 < baud;
+野禽 < fowl;
+暈眩 < daze;
+說謊者 < liar;
+某些 < some;
+強風 < gale;
+麻木 < numb;
+陪審團 < jury;
+韁繩 < rein;
+否決 < veto;
+沙發 < sofa;
+他們 < they;
+泡沫 < foam;
+牛肉 < beef;
+七月 < july;
+一服 < dose;
+豆子 < bean;
+媽媽 < mama;
+敏銳 < keen;
+油油 < oily;
+包裝 < pack;
+污痕 < blot;
+猛撞 < slam;
+面罩 < veil;
+鞭痕 < welt;
+亞丁 < aden;
+獨奏 < solo;
+沐浴 < bath;
+最好 < best;
+誓詞 < oath;
+動詞 < verb;
+高爾夫球 < golf;
+暴徒 < thug;
+汽水 < soda;
+短襪 < sock;
+引證 < cite;
+鈕帶 < bond;
+前面 < fore;
+陣風 < gust;
+惡劣 < vile;
+毛線 < yarn;
+北約 < nato;
+重擊 < bang;
+步調 < gait;
+通風 < airy;
+變換 < vary;
+蒼白 < pale;
+水滴 < drop;
+織布機 < loom;
+電話鈴聲 < buzz;
+收藏 < keep;
+電線 < wire;
+一吹 < puff;
+毛皮 < pelt;
+運費 < fare;
+壁虱 < tick;
+撥開 < poke;
+迷陣 < maze;
+藥丸 < pill;
+光纖分佈數據接口 < fddi;
+露營 < camp;
+毒物 < pest;
+一 < one;
+人 < man;
+我 < our;
+大 < big;
+上 < top;
+你 < you;
+可 < may;
+她 < she;
+天 < sky;
+而 < and;
+然 < yes;
+没 < not;
+日 < sun;
+彩 < hue;
+十 < ten;
+用 < use;
+眼 < eye;
+见 < see;
+老 < old;
+两 < two;
+外 < out;
+法 < law;
+点 < dot;
+盜 < rob;
+其 < his;
+儿 < son;
+新 < new;
+床 < bed;
+皆 < all;
+海 < sea;
+少 < few;
+帽 < hat;
+叫 < cry;
+死 < die;
+放 < put;
+今 < now;
+赤 < red;
+畢 < end;
+战 < war;
+購 < buy;
+瓶 < jug;
+请 < ask;
+交 < mix;
+吃 < eat;
+运 < run;
+网 < net;
+飞 < fly;
+猿 < ape;
+猫 < cat;
+猪 < pig;
+坐 < sit;
+謂 < say;
+狗 < dog;
+切 < cut;
+誤 < err;
+热 < hot;
+牛 < cow;
+低 < low;
+仍 < yet;
+脚 < leg;
+奈 < but;
+排 < row;
+壞 < bad;
+湾 < bay;
+墨 < ink;
+術 < art;
+濘 < mud;
+濕 < wet;
+露 < dew;
+齢 < age;
+蝙 < bat;
+蝋 < wax;
+鼠 < rat;
+蜂 < bee;
+摇 < wag;
+油 < oil;
+藉 < mat;
+液 < sap;
+薯 < yam;
+耳 < ear;
+喋 < nag;
+啜 < sip;
+哀 < sad;
+冰 < ice;
+杯 < cup;
+氣 < air;
+萌 < bud;
+途 < way;
+茶 < tea;
+卵 < egg;
+播 < sow;
+臂 < arm;
+欷 < sob;
+匚 < box;
+摩 < rub;
+冠 < cap;
+芸 < rue;
+缘 < hem;
+染 < dye;
+膿 < pus;
+榻 < cot;
+円 < yen;
+腐 < rot;
+脂 < fat;
+援 < aid;
+哼 < hum;
+偵 < spy;
+顎 < jaw;
+罐 < jar;
+捷 < win;
+霧 < fog;
+乾 < dry;
+缝 < sew;
+抚 < pat;
+挖 < dig;
+扇 < fan;
+乞 < beg;
+赌 < bet;
+欠 < owe;
+氛 < gas;
+締 < tie;
+炒 < fry;
+锡 < tin;
+坑 < pit;
+撕 < rip;
+磕 < hit;
+谎 < lie;
+銜 < bit;
+赋 < tax;
+囊 < bag;
+搂 < hug;
+弓 < bow;
+庐 < hut;
+毯 < rug;
+钥 < key;
+斧 < axe;
+蹦 < hop;
+迢 < far;
+蚂 < ant;
+锄 < hoe;
+捅 < jab;
+桨 < oar;
+狸 < fox;
+猖 < mad;
+趾 < toe;
+蘸 < dip;
+琦 < gem;
+畸 < odd;
+坯 < dam;
+鳝 < eel;
+怩 < shy;
+黠 < sly;
+锛 < adz;
+麋 < elk;
+鳍 < fin;
+刍 < mow;
+柞 < oak;
+鞣 < tan;
+僖 < joy;
+羝 < ram;
+埤 < add;
+空白點 < gap;
+求愛 < woo;
+同位 < par;
+為甚麼 < why;
+受到 < get;
+可以 < can;
+酒廊 < bar;
+男孩子 < boy;
+液晶顯示 < lcd;
+破布 < rag;
+強拉 < tug;
+無花果 < fig;
+經由 < via;
+設法 < try;
+如何 < how;
+眼界 < ken;
+幼獸 < cub;
+離子 < ion;
+貓叫聲 < mew;
+焦油 < tar;
+退潮 < ebb;
+齣 < act;
+火腿 < ham;
+鹋 < emu;
+陰暗 < dim;
+總和 < sum;
+鴞 < owl;
+鲕 < roe;
+鬷 < pot;
+鬆 < lax;
+髢 < wig;
+砍伐 < hew;
+刺探 < pry;
+常春藤 < ivy;
+鑯 < awl;
+烏合之眾 < mob;
+前夕 < eve;
+堅果 < nut;
+轑 < rut;
+踶 < paw;
+先生 < sir;
+欄圈 < pen;
+小精靈 < elf;
+親屬 < kin;
+索具裝置 < rig;
+拖車 < tow;
+填充 < pad;
+公共汽車 < bus;
+蒴 < pod;
+老天爺 < god;
+零點六 < 0\.6;
+樅樹 < fir;
+甜酒 < rum;
+羇 < inn;
+出價 < bid;
+傳真 < fax;
+苦惱 < ail;
+六點六 < 6\.6;
+骨罈 < urn;
+軟毛 < fur;
+砲 < gun;
+癙 < ill;
+輕打 < tap;
+小費 < tip;
+榆樹 < elm;
+潚 < gay;
+工作 < job;
+肋骨 < rib;
+楎 < peg;
+梩 < hod;
+體育館 < gym;
+杅 < tub;
+七點五 < 7\.5;
+七點二 < 7\.2;
+地圖 < map;
+攵 < rap;
+動物園 < zoo;
+鬆弛 < sag;
+餡餅 < pie;
+圖像互換格式 < gif;
+射線 < ray;
+鋸開 < saw;
+果醬 < jam;
+圍兜 < bib;
+嬛 < apt;
+猶太人 < jew;
+拖把 < mop;
+么點 < ace;
+小狗 < pup;
+貨車 < van;
+圓形木材 < log;
+點頭 < nod;
+對準 < aim;
+噴射 < jet;
+傢伙 < guy;
+乢 < lid;
+驢子 < ass;
+飛蟲 < bug;
+筆尖 < nib;
+䡜 < car;
+麥酒 < ale;
+修女 < nun;
+䝆 < hog;
+會費 < due;
+乾草 < hay;
+䌢 < raw;
+䋞 < web;
+䊑 < pay;
+屢加 < ply;
+九七年 < ''97;
+圓形麵包 < bun;
+安放 < lay;
+㜸 < sin;
+計乘車 < cab;
+頌詞 < ode;
+脫氧核糖核酸 < dna;
+杜松子酒 < gin;
+何人 < who;
+燕麥 < oat;
+母雞 < hen;
+礦石 < ore;
+怕羞 < coy;
+任何 < any;
+流感 < flu;
+哎喲 < hey;
+方舟 < ark;
+爆聲 < pop;
+收費 < fee;
+母羊 < ewe;
+小伙子 < lad;
+別針 < pin;
+平鍋 < pan;
+不 < no;
+为 < do;
+之 < ''s;
+徃 < go;
+于 < in;
+如 < if;
+或 < or;
+它 < it;
+咱 < us;
+哟 < ah;
+嗨 < hi;
+彝 < yi;
+锱 < oz;
+钔 < md;
+伲 < we;
+镤 < pa;
+镎 < np;
+铹 < lr;
+向上地 < up;
+锿 < es;
+锝 < tc;
+锕 < ac;
+光碟 < cd;
+繄 < be;
+糎 < mm;
+粨 < hm;
+粁 < km;
+籵 < dm;
+嚇聲 < ho;
+祂 < he;
+我的 < my;
+嗈 < oh;
+咁 < so;
+兡 < hg;
+兞 < mg;
+兝 < dg;
+斧頭 < ax;
+余 < i;
+樶 < c;
+一個 < a;
+政府機關開放系統互連總則 > government\-open\-system\-interconnection\-profile;
+電機及電子學工程師聯合會 > ieee;
+國際電話電報諮詢委員會 > international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+阿不來提\.阿不都熱西提 > abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+可擦寫可編程祇讀存儲器 > eprom;
+國際電報電話咨詢委員會 > ccitt;
+耶穌基督末世聖徒教會 > the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+十億位元以太網絡聯盟 > gigabit\-ethernet\-alliance;
+檔案轉送存取及管理 > file\-transfer\,\-access\-and\-management;
+非對稱式數據用戶線 > asymmetrical\-digital\-subscriber\-line;
+臨時的本地管理接口 > interim\-local\-management\-interface;
+聯邦電信交通委員會 > federal\-communications\-commission;
+電腦輔助設計與繪圖 > computer\-aided\-design\-and\-drawing;
+光纖分佈式數據介面 > fiber\-distributed\-data\-interface;
+光纖分散式資料介面 > fiber\-distributed\-data\-interface;
+數據鏈路連接識別碼 > data\-link\-connection\-identifier;
+電腦與電話系統整合 > computer\-telephony\-integration;
+塞爾維亞克羅地亞語 > serbo\-croatian\-\(language\);
+禁止核武器試驗條約 > nuclear\-test\-ban\-treaty;
+老驥伏櫪志在千里 > \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+不入虎穴焉得虎子 > how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+比上不足比下有余 > fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+北大西洋公約組織 > the\-north\-atlantic\-treaty\-organization\-\(nato\);
+不經一事不長一智 > you\-can''t\-gain\-knowledge\-without\-practice;
+建立正式外交關係 > formally\-establish\-diplomatic\-relations;
+百足之蟲死而不僵 > a\-centipede\-dies\-but\-never\-falls\-down;
+安全與交換委員會 > securities\-and\-exchange\-communication;
+綜合服務數位網絡 > integrated\-services\-digital\-network;
+整體服務數位網路 > integrated\-services\-digital\-network;
+簡單網絡管理協議 > simple\-network\-management\-protocol;
+整體數位服務網路 > integrated\-service\-digital\-network;
+公共交換電話網路 > public\-switched\-telephone\-network;
+近乎同步數位階層 > plesiochronous\-digital\-hierarchy;
+日本電報電話公司 > nippon\-telegraph\-and\-telephone;
+廣播和未知服務器 > broadcast\-and\-unknown\-server;
+百尺杆頭更盡一步 > make\-still\-further\-progress;
+國際貨幣基金組織 > international\-monetary\-fund;
+客戶機服務器環境 > client\-server\-environement;
+電子郵件傳送服務 > \(e\-\)mail\-delivery\-service;
+用戶到網絡的接口 > user\-network\-interface;
+亞洲與太平洋地區 > asia\-pacific\-region;
+十億位元以太網絡 > gigabit\-ethernet;
+光纖分佈數據接口 > fddi;
+不見棺材不落淚 > not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+不到黃河心不死 > not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+閉塞眼睛捉麻雀 > try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+斯特凡諾普洛斯 > stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+人民英雄紀念碑 > monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+按下葫蘆浮起瓢 > solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+不敢越雷池一步 > dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+東南亞國家聯盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+失敗是成功之母 > \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+經營管理和維護 > operations\-administration\-and\-maintenance;
+核武器研製計劃 > nuclear\-weapons\-\(manufacturing\)\-program;
+教授畢竟是教授 > professors\-are\-\(after\-all\)\-professors;
+虛擬通道標誌符 > virtual\-channel\-connection\-identifier;
+世界性古老問題 > a\-problem\-as\-old\-as\-the\-world\-itself;
+電信服務供應商 > telecommunications\-service\-provider;
+公用交換電話網 > public\-switched\-telephone\-network;
+中華人民共和國 > the\-people''s\-republic\-of\-china;
+通用資源識別號 > universal\-resource\-identifier;
+原子科學家通報 > journal\-of\-atomic\-scientists;
+超文件傳輸協定 > hypertext\-transfer\-protocol;
+超文本傳輸協定 > hypertext\-transfer\-protocol;
+客戶服務器結構 > client\-server\-architecture;
+媒體接口連接器 > medium\-interface\-connector;
+面嚮對象的技術 > object\-oriented\-technology;
+非同步傳輸模式 > asynchronous\-transfer\-mode;
+超文本標記語言 > hypertext\-markup\-language;
+反艦艇巡航導彈 > anti\-ship\-cruise\-missle;
+用戶到網絡接口 > user\-network\-interface;
+亞洲太平洋地區 > asia\-pacific\-region;
+多米尼加共和國 > dominican\-republic;
+撒哈拉以南非洲 > sub\-saharan\-africa;
+在大多數情況下 > in\-most\-instances;
+超高速乙太網路 > gigabit\-ethernet;
+巴布亞新幾內亞 > papau\-new\-guinea;
+羅密歐與朱麗葉 > romeo\-and\-juliet;
+太陽微系統公司 > sun\-microsystems;
+帖撒羅尼迦後書 > 2\-thessalonians;
+亞爾發和奧米加 > alpha\-and\-omega;
+帖撒羅尼迦前書 > 1\-thessalonians;
+莫尼卡萊溫斯基 > monica\-lewinsky;
+阿伏伽德羅定律 > avogadro''s\-law;
+電纜調制解調器 > cable\-modem;
+第二次世界大戰 > world\-war\-2;
+介質訪問控制層 > mac\-layer;
+不知天高地厚 > not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+百聞不如一見 > seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+不費吹灰之力 > as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+沙利科什維利 > general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+寄予很大期望 > to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+巴爾舍夫斯基 > \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+約定資訊速率 > committed\-inforrmation\-rate\-\(frame\-relay\);
+逆向擁塞通知 > backward\-explicit\-congestion\-notification;
+前向擁塞通知 > forward\-explicit\-congestion\-notification;
+美國廣播公司 > abc\-\(american\-broadcasting\-corporation\);
+哈裡森史密特 > harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+畢其功于一役 > accomplish\-the\-whole\-task\-at\-one\-stroke;
+擺事實講道理 > present\-the\-facts\-and\-reason\-things\-out;
+國際電信聯盟 > international\-telecommunications\-union;
+不可同日而語 > cannot\-be\-mentioned\-in\-the\-same\-breath;
+有志者事竟成 > where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+國際標準組織 > international\-standards\-organization;
+目前還不清楚 > at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+疾病預防中心 > \(u\.s\.\)\-center\-for\-disease\-control;
+應用程式介面 > application\-programming\-interface;
+矮子裡拔將軍 > choose\-the\-best\-person\-available;
+取得大學學位 > to\-obtain\-a\-university\-education;
+實時操作環境 > real\-time\-operating\-environment;
+國際商業機器 > international\-business\-machines;
+符合美國利益 > in\-line\-with\-american\-interests;
+軟體出版協會 > software\-publishers\-association;
+松下電氣工業 > matsushita\-electronics\-industry;
+服務廣告協議 > service\-advertisement\-protocol;
+語音通訊通道 > voice\-\(communications\)\-channel;
+世界貿易組織 > wto\-\(world\-trade\-organization\);
+常規銅電話線 > ordinary\-copper\-telephone\-line;
+同步數位階層 > synchronous\-digital\-hierarchy;
+上海戲劇學院 > shanghai\-theatrical\-institute;
+傳輸控制協定 > transmission\-control\-protocol;
+傳統中國醫藥 > chinese\-traditional\-medicine;
+固定虛擬連接 > permanent\-virtual\-connection;
+開放系統互連 > open\-systems\-interconnection;
+北京藝術學院 > beijing\-academy\-of\-fine\-arts;
+不登大雅之堂 > not\-appeal\-to\-refined\-taste;
+北京語言學院 > beijing\-languages\-institute;
+地址解析協議 > address\-resolution\-protocol;
+本地管理界面 > local\-management\-interface;
+異步傳輸模式 > asynchronous\-transfer\-mode;
+電腦輔助教材 > computer\-aided\-instruction;
+電腦輔助工程 > computer\-aided\-engineering;
+虛擬通道連接 > virtual\-channel\-connection;
+網絡管理系統 > network\-management\-system;
+世界衛生組織 > world\-health\-organization;
+值得注意的是 > it''s\-worth\-noting\-that\.\.\.;
+環球定位系統 > global\-positioning\-system;
+因特網提供商 > internet\-sevice\-provider;
+網絡操作系統 > network\-operating\-system;
+圖像用戶介面 > graphical\-user\-interface;
+面嚮對象語言 > object\-oriented\-language;
+共同閘道介面 > common\-gateway\-interface;
+網路作業系統 > network\-operating\-system;
+公眾電信網路 > public\-telephone\-network;
+非盈利的組織 > non\-profit\-organization;
+訊息處理系統 > message\-handling\-system;
+數字訂購線路 > digital\-subscriber\-line;
+辯証唯物主義 > dialectical\-materialism;
+網路節點介面 > network\-node\-interface;
+正在中國訪問 > during\-a\-trip\-to\-china;
+八小時工作制 > eight\-hour\-working\-day;
+消息靈通人士 > a\-well\-informed\-source;
+日本經濟新聞 > japanese\-economic\-news;
+訊息傳遞中介 > message\-transfer\-agent;
+電腦輔助設計 > computer\-aided\-design;
+持不同政見者 > \(political\)\-dissident;
+資料傳送服務 > data\-delivery\-service;
+介質訪問控制 > medium\-access\-control;
+印度尼西亞語 > indonesian\-\(language\);
+多種語言支持 > multilingual\-support;
+接收器靈敏度 > receiver\-sensitivity;
+民族主義情緒 > nationalist\-feelings;
+媒體訪問控制 > media\-access\-control;
+四年制的大學 > four\-year\-university;
+邏輯鏈路控制 > logical\-link\-control;
+萬維天羅地網 > world\-wide\-web\-\(www\);
+巡迴分析端口 > roving\-analysis\-port;
+只不過幾年前 > only\-a\-few\-years\-ago;
+一百五十多年 > more\-than\-150\-years;
+哥倫比亞大學 > columbia\-university;
+貿易保護主義 > trade\-protectionism;
+在某種程度上 > to\-a\-certain\-extent;
+曼徹斯特編碼 > manchester\-encoding;
+訊框傳送服務 > frame\-relay\-service;
+訊框傳送網路 > frame\-relay\-network;
+阿比西尼亞人 > abyssinian\-\(person\);
+亞太經合組織 > apec\-\(organization\);
+軟件開發人員 > software\-developer;
+在傳輸過程中 > while\-transmitting;
+必不可少組成 > absolute\-necessity;
+美國航空公司 > american\-airlines;
+交換以太網絡 > switched\-ethernet;
+諾貝爾和平獎 > nobel\-peace\-prize;
+五角大樓官員 > pentagon\-official;
+訊框傳送論壇 > frame\-relay\-forum;
+阿爾巴尼亞人 > albanian\-\(person\);
+不分青紅皂白 > indiscriminately;
+不等邊三角形 > scalene\-triangle;
+網際網路協會 > internet\-society;
+三千到五千萬 > 30\-to\-50\-million;
+一個中國政策 > one\-china\-policy;
+網絡規劃人員 > network\-planner;
+共享以太網絡 > shared\-ethernet;
+卡納維拉爾角 > cape\-canaveral;
+區域網路技術 > lan\-technology;
+薩達姆侯賽因 > saddam\-hussein;
+撞擊式印表機 > impact\-printer;
+撞擊式打印機 > impact\-printer;
+全球氣候升溫 > global\-warming;
+梅塞迪斯奔馳 > mercedes\-benz;
+奧克拉荷馬市 > oklahoma\-city;
+高速乙太網路 > fast\-ethernet;
+快速以太網絡 > fast\-ethernet;
+以太網絡端口 > ethernet\-port;
+亞洲與太平洋 > asia\-pacific;
+一千零五十億 > 105\-billion;
+吉爾吉斯斯坦 > kirghizstan;
+榮獲諾貝爾獎 > nobel\-prize;
+三月二十三號 > march\-23rd;
+沒有生育能力 > infertile;
+國際互聯網絡 > internet;
+三月二十一號 > march\-21;
+專用集成電路 > asic;
+圖像互換格式 > gif;
+脫氧核糖核酸 > dna;
+殺雞給猴看 > \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+病急亂投醫 > turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+斯卡伯勒礁 > scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+冰炭不相容 > as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+韋爾弗雷茲 > \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+琳\.戴維斯 > lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+人民行動黨 > people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+常任理事國 > permanent\-member\-state\-\(of\-un\-security\-council\);
+人民大會堂 > great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+橋本龍太郎 > hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+奧爾布賴特 > \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+不當一回事 > not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+不打不相識 > from\-an\-exchange\-of\-blows\-friendship\-grows;
+聯邦調查局 > fbi\-\(federal\-bureau\-of\-investigation\);
+一九四九年 > the\-year\-1949\-\(communist\-revolution\);
+約翰內斯堡 > johannesburg\-\(city\-in\-south\-africa\);
+分佈式環境 > distributed\-\(computing\)\-environment;
+非政府組織 > non\-governmental\-organization\-\(ngo\);
+尤金塞爾南 > eugene\-cernan\-\(apollo\-17\-astronaut\);
+比勒陀利亞 > pretoria\-\(capital\-of\-south\-africa\);
+半日制學校 > half\-day\-\(or\-double\-shift\-school\);
+越來越嚴重 > to\-become\-more\-serious\-every\-day;
+戈爾巴喬夫 > \(former\-soviet\-leader\)\-gorbachev;
+八級工資制 > eight\-grade\-wage\-scale\-\(system\);
+在密切注意 > to\-pay\-close\-attention\-\(to\-sth\);
+核威懾政策 > policy\-of\-nuclear\-intimidation;
+可選擇丟棄 > discard\-eligible\-\(frame\-relay\);
+特別行政區 > special\-administrative\-region;
+華盛頓時報 > washington\-times\-\(newspaper\);
+似乎很安全 > to\-appear\-\(to\-be\)\-very\-safe;
+中央情報局 > central\-intelligence\-agency;
+服務提供商 > \(internet\)\-service\-provider;
+管理信息庫 > management\-information\-base;
+華盛頓郵報 > washington\-post\-\(newspaper\);
+願意不願意 > whether\-one\-wants\-to\-or\-not;
+發展核武器 > to\-develop\-nuclear\-weapons;
+叛變的省份 > renegade\-province\-\(taiwan\);
+中國科學院 > chinese\-acadamy\-of\-science;
+用戶端設備 > customer\-premise\-equipment;
+不等價交換 > exchange\-of\-unequal\-values;
+永久虛電路 > permanent\-virtual\-circuit;
+原因很簡單 > the\-reason\-is\-very\-simple;
+通訊自動化 > communications\-automation;
+幀首定界符 > start\-of\-frame\-delimiter;
+不承認主義 > policy\-of\-nonrecognition;
+楊百翰大學 > brigham\-young\-university;
+分佈式結構 > distributed\-architecture;
+持不同政見 > \(politically\)\-dissenting;
+人民解放軍 > people''s\-liberation\-army;
+從外表來看 > looking\-from\-the\-outside;
+交換虛電路 > switched\-virtual\-circuit;
+核武器材料 > nuclear\-weapon\-material;
+發佈新軟件 > to\-release\-new\-software;
+專屬經濟區 > exclusive\-economic\-zone;
+流亡在海外 > to\-be\-in\-exile\-overseas;
+不抵抗主義 > policy\-of\-nonresistance;
+在今年年底 > at\-the\-end\-of\-this\-year;
+來回來去地 > backwards\-and\-forwards;
+網絡層協議 > network\-layer\-protocol;
+工業化國家 > industrialized\-country;
+教義和聖約 > doctrine\-and\-covenants;
+網絡管理員 > network\-administrator;
+芝加哥大學 > university\-of\-chicago;
+陸海空三軍 > army\,\-navy\,\-air\-force;
+本土化軟件 > software\-localization;
+檔案分配區 > file\-allocation\-table;
+地對空導彈 > ground\-to\-air\-missile;
+不信任投票 > vote\-of\-no\-confidence;
+本人的觀點 > \(one''s\)\-personal\-view;
+軟體配送者 > software\-distributor;
+歷來最低點 > all\-time\-low\-\(point\);
+米德爾伯裡 > middlebury\-\(college\);
+兩點十九分 > 2\-\:1\-9\-\(time\-of\-day\);
+幀檢驗序列 > frame\-check\-sequence;
+不完全中立 > imperfect\-neutrality;
+克里斯托弗 > \(warren\)\-christopher;
+鑒定委員會 > evaluation\-committee;
+馬來西亞語 > malasian\-\(language\);
+過了五分鐘 > five\-minutes\-passed;
+克羅地亞語 > croatian\-\(language\);
+討論的議題 > topic\-of\-discussion;
+地址的轉換 > address\-translation;
+自動地工作 > automatic\-operation;
+保安自動化 > security\-automation;
+分佈式網絡 > distributed\-network;
+不期然而然 > happen\-unexpectedly;
+加值型網路 > value\-added\-network;
+因特網聯通 > internet\-connection;
+科學的交流 > scientific\-exchange;
+鋰離子電池 > lithium\-ion\-battery;
+長期穩定性 > long\-term\-stability;
+樓宇自動化 > building\-automation;
+視窗加速器 > windows\-accelarator;
+華爾街日報 > wall\-street\-journal;
+國民黨軍隊 > nationalist\-forces;
+一小時以後 > a\-short\-time\-later;
+網路連接層 > network\-link\-layer;
+康奈爾大學 > cornell\-university;
+塞爾維亞語 > serbian\-\(language\);
+斯瓦希裡語 > swahili\-\(language\);
+國家標準碼 > gb\-\(guo\-biao\)\-code;
+本初子午線 > the\-first\-meridian;
+家庭消費者 > household\-consumer;
+域名服務器 > domain\-name\-server;
+發展中國家 > developing\-country;
+多端中繼器 > multiport\-repeater;
+發展的國家 > developing\-country;
+生活必需品 > life''s\-necessities;
+可行性研究 > feasibility\-study;
+數據庫軟件 > database\-software;
+西裡爾字母 > cyrillic\-alphabet;
+撒迦利亞書 > book\-of\-zechariah;
+波士頓大學 > boston\-university;
+辦公自動化 > office\-automation;
+不及物動詞 > intransitive\-verb;
+膝上型電腦 > laptop\-\(computer\);
+中央委員會 > central\-committee;
+到那個時候 > until\-this\-moment;
+洛杉磯時報 > los\-angeles\-times;
+文化的交流 > cultural\-exchange;
+斯洛伐克語 > slovak\-\(language\);
+外國旅遊者 > foreign\-traveller;
+一千七百萬 > seventeen\-million;
+委員會會議 > committee\-meeting;
+計算機工業 > computer\-industry;
+共產黨部隊 > communist\-forces;
+服務提供者 > service\-provider;
+移動式電話 > mobile\-telephone;
+婚外性接觸 > extramarital\-sex;
+波美比重計 > baume\-hydrometer;
+外國投資者 > foreign\-investor;
+異性性接觸 > heterosexual\-sex;
+桌上型電腦 > desktop\-computer;
+記者招待會 > press\-conference;
+原子科學家 > atomic\-scientist;
+長度指示符 > length\-indicator;
+仿真服務器 > emulation\-server;
+計算機網絡 > computer\-network;
+過份簡單化 > oversimplication;
+知識工程師 > knowledge\-worker;
+資料鏈結層 > data\-link\-layer;
+零等待狀態 > zero\-wait\-state;
+在很多方面 > in\-many\-aspects;
+俄巴底亞書 > book\-of\-obadiah;
+數據鏈路層 > data\-link\-layer;
+種族主義者 > racist\-\(person\);
+網絡瀏覽器 > network\-browser;
+客戶機軟件 > client\-software;
+自動售貨機 > vending\-machine;
+網絡打印機 > network\-printer;
+板板六十四 > unaccommodating;
+第一個層次 > the\-first\-stage;
+全球資訊網 > world\-wide\-web;
+以太網絡幀 > ethernet\-frame;
+不平等條約 > unequal\-treaty;
+喘不過氣來 > cannot\-breathe;
+捷克共和國 > czech\-republic;
+工業的巨頭 > industry\-mogol;
+每端口價格 > price\-per\-port;
+不正常狀況 > abnormal\-state;
+開放式系統 > open\-system\(s\);
+世界的語言 > world\-language;
+激光打引機 > laser\-printer;
+哥林多後書 > 2\-corinthians;
+不記名投票 > secret\-ballot;
+不列顛諸島 > british\-isles;
+哥林多前書 > 1\-corinthians;
+不可能的事 > impossibility;
+百分之五十 > fifty\-percent;
+艾滋病抗體 > aids\-antibody;
+不可侵犯權 > inviolability;
+鐳射印表機 > laser\-printer;
+生命的遺跡 > trace\-of\-life;
+一九九七年 > the\-year\-1997;
+全世界第一 > world''s\-first;
+普通老百姓 > common\-people;
+艾滋病患者 > aids\-patient;
+簿記管理員 > commissarian;
+核武器試驗 > nuclear\-test;
+二十一世紀 > 21st\-century;
+有條有理地 > methodically;
+不是玩兒的 > it''s\-no\-joke;
+粗俗的階級 > vulgar\-class;
+打印服務器 > print\-server;
+賓西法尼亞 > pennsylvania;
+耶利米哀歌 > lamentations;
+八九不離十 > pretty\-close;
+開放式網路 > open\-network;
+克裡姆林宮 > the\-kremlin;
+太平洋週邊 > pacific\-rim;
+激光二極管 > laser\-diode;
+器官捐獻者 > organ\-donor;
+文件服務器 > file\-server;
+玻意耳定律 > boyle''s\-law;
+一千四百億 > 140\-billion;
+自由選擇權 > free\-agency;
+巴枯寧主義 > bakuninism;
+說不出話來 > speechless;
+塔吉克斯坦 > tajikistan;
+加利福尼亞 > california;
+使用者中介 > user\-agent;
+哈薩克斯坦 > kazakhstan;
+百分之九十 > 90\-percent;
+公開討論會 > open\-forum;
+艾滋病病毒 > aids\-virus;
+地方官職位 > prefecture;
+磁盤驅動器 > disl\-drive;
+女裝裁縫師 > dressmaker;
+長子的名份 > birthright;
+一百五十億 > 15\-billion;
+阿比西尼亞 > abyssinia;
+社會主義者 > socialist;
+提摩太后書 > 2\-timothy;
+到目前為止 > until\-now;
+流行性感冒 > influenza;
+不穩定氣流 > turbulent;
+提摩太前書 > 1\-timothy;
+波利尼西亞 > polynesia;
+圖書管理員 > librarian;
+印度尼西亞 > indonesia;
+民主主義者 > democrats;
+變焦距鏡頭 > zoom\-lens;
+企業間網路 > extranet;
+常坐汽車者 > motorist;
+汽車展覽會 > car\-show;
+企業內網路 > intranet;
+撒母耳記下 > 2\-samuel;
+撒母耳記上 > 1\-samuel;
+四月十七號 > april\-17;
+神學研究所 > seminary;
+埃塞俄比亞 > ethiopia;
+奧克拉荷馬 > oklahoma;
+不名譽事物 > dishonor;
+海軍總司令 > admiral;
+五月十五號 > may\-1\-5;
+阿爾及利亞 > algeria;
+七月三十號 > july\-30;
+馬克思主義 > marxism;
+阿爾巴尼亞 > albania;
+一節\(詩\) > stanza;
+透印版印刷 > offset;
+毛織運動衫 > jersey;
+男修道院長 > abbot;
+調制解調器 > modem;
+三色紫羅蘭 > pansy;
+安全理事會 > the\-u;
+抱薪救火 > carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+杯水車薪 > trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+辯証施治 > diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+敝帚自珍 > value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+兵不血刃 > the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+養兒防老 > \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+不共戴天 > will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+擊其惰歸 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+避其銳氣 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 > the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+不辨菽麥 > be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+恭喜發財 > congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+塞韋裡諾 > \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+有期徒刑 > limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+閉目塞聽 > shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 > clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+本草綱目 > an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+兵強馬壯 > strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+業余大學 > college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+捕風捉影 > chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+不分彼此 > make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+不知凡幾 > can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+抱殘守缺 > cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+博古通今 > conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+大鬧天宮 > \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+悲天憫人 > bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+不服水土 > \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+哀兵必勝 > an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+矛頭指向 > target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+不恥下問 > not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+卡拉OK > karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 > general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+三國演義 > name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+背水一戰 > fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+杯弓蛇影 > mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+背井離鄉 > leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+波瀾起伏 > of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 > refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 > take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+八面玲瓏 > be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+眾志成城 > \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+抗日戰爭 > \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+大材小用 > using\-a\-talented\-person\-in\-an\-insignificant\-position;
+不聞不問 > not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 > both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 > advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+一望無際 > as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 > not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 > dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+安步當車 > walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+不勝枚舉 > too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+賓至如歸 > guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+尖閣列島 > senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+維吾爾族 > the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+南華早報 > south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+病入膏肓 > the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+約翰拉貝 > john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+不破不立 > without\-destruction\-there\-can\-be\-no\-construction;
+包產到戶 > fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+駱駝祥子 > name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+逼上樑山 > be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+南轅北轍 > \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+保外就醫 > \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+蒸蒸日上 > becoming\-more\-prosperous\-with\-each\-passing\-day;
+烏魯木齊 > urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 > hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+工商銀行 > industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+事與願違 > things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+張燈結綵 > be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 > shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+閉關自守 > close\-the\-country\-to\-international\-intercourse;
+不避艱險 > shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+阿旺曲沛 > ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+畫蛇添足 > ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+仗義執言 > speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 > the\-attacking\-army\-has\-reached\-the\-city\-gates;
+背城借一 > make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+百感交集 > all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+兵不厭詐 > there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 > \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 > avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+標新立異 > start\-something\-new\-in\-order\-to\-be\-different;
+大功告成 > successfully\-accomplished\-\(project\-or\-goal\);
+無所用心 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+班門弄斧 > display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 > china\-daily\-\(an\-english\-language\-newspaper\);
+不可終日 > be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+飽食終日 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+單槍匹馬 > single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+名副其實 > not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+喜新厭舊 > literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+拍案叫絕 > lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+風土人情 > local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 > \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+中共中央 > chinese\-communist\-party\-central\-committee;
+博聞強記 > have\-wide\-learning\-and\-a\-retentive\-memory;
+百年大計 > a\-project\-of\-vital\-and\-lasting\-importance;
+拔苗助長 > spoil\-things\-through\-excessive\-enthusiasm;
+肯普索恩 > \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+外孫女兒 > granddaughter\-\(daughter\-of\-one''s\-daugher\);
+百折不撓 > keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+安身立命 > settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+不可一世 > consider\-oneself\-unexcelled\-in\-the\-world;
+絕對數字 > absolute\-\(as\-opposed\-to\-relative\)\-number;
+抱頭鼠竄 > cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+百廢俱興 > all\-neglected\-tasks\-are\-being\-undertaken;
+避實就虛 > stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 > not\-seek\-to\-understand\-things\-thoroughly;
+中央全會 > plenary\-session\-of\-the\-central\-committee;
+古杰拉爾 > \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+冷淡關係 > cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 > settle\-a\-matter\-by\-leaving\-it\-unsettled;
+不即不離 > be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 > \(military\)\-general\-political\-department;
+半路出家 > switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+病毒學家 > virologist\-\(person\-who\-studies\-viruses\);
+結社自由 > \(constitutional\)\-freedom\-of\-association;
+蔓延全國 > to\-spread\-throughout\-the\-entire\-country;
+百思不解 > remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 > one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 > \(military\)\-general\-logistics\-department;
+一國兩制 > one\-country\,\-two\-systems\-\(china\-taiwan\);
+白頭諧老 > live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+成千上萬 > by\-the\-thousands\-and\-tens\-of\-thousands;
+不宣而戰 > open\-hostilities\-without\-declaring\-war;
+不遠千里 > make\-light\-of\-travelling\-a\-thousand\-li;
+安居樂業 > live\-and\-work\-in\-peace\-and\-contentment;
+遍體鱗傷 > covered\-all\-over\-with\-cuts\-and\-bruises;
+內懮外患 > domestic\-strife\-and\-foreign\-agression;
+治病救人 > cure\-the\-sickness\-to\-save\-the\-patient;
+哀鴻遍野 > a\-land\-swarming\-with\-disaster\-victims;
+病從口入 > illness\-finds\-its\-way\-in\-by\-the\-mouth;
+總參謀部 > \(military\)\-general\-staff\-headquarters;
+撥絃樂器 > plucked\-string\-or\-stringed\-instrument;
+別具一格 > having\-a\-unique\-or\-distinctive\-style;
+讀賣新聞 > yomiuri\-shimbun\-\(japanese\-newspaper\);
+才疏學淺 > have\-little\-talent\-and\-less\-learning;
+避坑落井 > dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+變溫動物 > poikilothermal\-\(cold\-blooded\)\-animal;
+大中學生 > university\-and\-high\-school\-students;
+安分守己 > abide\-by\-the\-law\-and\-behave\-oneself;
+大顯身手 > fully\-displaying\-one''s\-capabilities;
+波瀾壯闊 > surging\-forward\-with\-great\-momentum;
+回歸中國 > to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+愛莫能助 > willing\-to\-help\-but\-unable\-to\-do\-so;
+調查結果 > results\-\(of\-an\-investigation\,\-poll\);
+百端待舉 > a\-thousand\-things\-remain\-to\-be\-done;
+秋高氣爽 > clear\-and\-refreshing\-autumn\-weather;
+冰消瓦解 > melt\-like\-ice\-and\-break\-like\-tiles;
+半斤八兩 > not\-much\-to\-choose\-between\-the\-two;
+步人後塵 > follow\-in\-other\-people''s\-footsteps;
+龍飛鳳舞 > lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+國際見聞 > international\-background\-knowledge;
+國務委員 > member\-of\-state\-council\-\(in\-china\);
+可移植性 > portability\-\(programming\-language\);
+呼和浩特 > hohhot\-\(capital\-of\-inner\-mongolia\);
+小題大做 > make\-a\-big\-fuss\-over\-a\-minor\-issue;
+不虛此行 > the\-trip\-has\-not\-been\-made\-in\-vain;
+言論自由 > \(constitutional\)\-freedom\-of\-speech;
+開發環境 > development\-environment\-\(computer\);
+不識時務 > show\-no\-understanding\-of\-the\-times;
+不時之需 > a\-possible\-period\-of\-want\-or\-need;
+以牙還牙 > a\-tooth\-for\-a\-tooth\-\(retaliation\);
+百戰百勝 > emerge\-victorious\-in\-every\-battle;
+由此可見 > from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+寸草不生 > \"not\-even\-a\-blade\-of\-grass\-grows\";
+擦亮眼睛 > remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 > remedy\-defects\-and\-rectify\-errors;
+百川歸海 > all\-things\-tends\-in\-one\-direction;
+誓不反悔 > to\-vow\-not\-to\-break\-one''s\-promise;
+科學編輯 > science\-editor\-\(of\-a\-publication\);
+昂首闊步 > stride\-forward\-with\-one''s\-chin\-up;
+日經指數 > nikkei\-index\-\(of\-japanese\-stocks\);
+得寸進尺 > literal\:\-get\-an\-inch\,\-want\-a\-foot;
+北洋軍閥 > the\-northern\-warlords\-\(1912\-1927\);
+大惑不解 > do\-not\-understand\-a\-certain\-thing;
+明文規定 > expressly\-stipulated\-\(in\-writing\);
+大庭廣眾 > public\-place\-with\-numerous\-people;
+百無一失 > no\-danger\-of\-anything\-going\-wrong;
+人權觀察 > human\-rights\-watch\-\(organization\);
+備而不用 > have\-something\-ready\-just\-in\-case;
+節外生枝 > new\-problems\-complicate\-an\-issue;
+鼻青臉腫 > a\-bloody\-nose\-and\-a\-swollen\-face;
+企業管理 > business\-management\-\(as\-a\-study\);
+不謀而合 > agree\-without\-prior\-consultation;
+按兵不動 > not\-throw\-the\-troops\-into\-battle;
+一中一臺 > \"one\-china\,\-one\-taiwan\"\-\(policy\);
+中日韓越 > china\,\-japan\,\-korea\,\-and\-vietnam;
+形影不離 > inseparable\-\(as\-form\-and\-shadow\);
+商業版本 > commercial\-version\-\(of\-software\);
+百讀不厭 > be\-worth\-reading\-a\-hundred\-times;
+分波多工 > wavelength\-division\-multiplexing;
+必由之路 > the\-road\-one\-must\-follow\-or\-take;
+亨特泰羅 > hunter\-tylo\-\(hollywood\-actress\);
+閉門造車 > make\-a\-cart\-behind\-closed\-doors;
+悲喜交集 > mixed\-feelings\-of\-grief\-and\-joy;
+不修邊幅 > not\-care\-about\-one''s\-appearance;
+大快人心 > to\-the\-satisfaction\-of\-everyone;
+鞭長莫及 > beyond\-the\-reach\-of\-one''s\-power;
+不學無術 > have\-neither\-learning\-nor\-skill;
+不寒而慄 > shiver\-all\-over\-though\-not\-cold;
+層出不窮 > to\-come\-out\-one\-after\-the\-other;
+安民告示 > a\-notice\-to\-reassure\-the\-public;
+細菌武器 > biological\-weapon\-\(using\-germs\);
+別開生面 > start\-something\-new\-or\-original;
+如飢似渴 > thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 > founding\-fathers\-\(of\-a\-country\);
+直接數據 > data\-direct\-\(in\-lan\-emulation\);
+傳統醫藥 > \(chinese\)\-traditional\-medicine;
+有史以來 > since\-the\-beginning\-of\-history;
+包治百病 > guarantee\-to\-cure\-all\-diseases;
+按需分配 > distribution\-according\-to\-need;
+世貿組織 > wto\-\(world\-trade\-organization\);
+沒有什麼 > there''s\-nothing\-\(\.\.\.\-about\-it\);
+按勞分配 > distribution\-according\-to\-work;
+阿拉木圖 > almaty\-\(capital\-of\-kazakhstan\);
+七層架構 > seven\-layer\-architecture\-\(osi\);
+應有盡有 > everything\-\(one\-could\-imagine\);
+青山綠水 > verdant\-hills\-and\-green\-waters;
+虹橋機場 > hongqiao\-airport\-\(in\-shanghai\);
+統一招生 > national\-unified\-entrance\-exam;
+東部時間 > \(u\.s\.\)\-eastern\-\(standard\)\-time;
+時大時小 > sometimes\-big\,\-sometimes\-small;
+不辭而別 > leave\-without\-saying\-good\-bye;
+百聽不厭 > worth\-hearing\-a\-hundred\-times;
+低階語言 > low\-level\-\(computer\)\-language;
+不足為訓 > not\-to\-be\-taken\-as\-an\-example;
+大吹大擂 > make\-an\-exhibition\-of\-oneself;
+安之若素 > bear\-hardship\-with\-equanimity;
+西哈努克 > \(king\)\-sihanouk\-\(of\-cambodia\);
+殺人案件 > \(case\-of\,\-incident\-of\)\-murder;
+背道而馳 > run\-in\-the\-opposite\-direction;
+低級語言 > low\-level\-\(computer\)\-language;
+不名一文 > without\-a\-penny\-to\-one''s\-name;
+不無小補 > not\-be\-without\-some\-advantage;
+加強管制 > to\-tighten\-control\-\(over\-sth\);
+人民日報 > renmin\-ribao\-\(people''s\-daily\);
+開始以前 > before\-the\-beginning\-\(of\-sth\);
+不識大體 > fail\-to\-see\-the\-larger\-issues;
+不打自招 > confess\-without\-being\-pressed;
+一舉兩得 > kill\-two\-birds\-with\-one\-stone;
+不速之客 > uninvited\-or\-unexpected\-guest;
+不得要領 > fail\-to\-grasp\-the\-main\-points;
+進行調查 > to\-carry\-out\-an\-investigation;
+大街小巷 > large\-streets\-and\-small\-lanes;
+各大軍區 > \"the\-greater\-military\-areas\";
+呼籲美國 > to\-call\-on\-the\-united\-states;
+豐衣足食 > have\-ample\-food\-and\-clothing;
+不知好歹 > not\-know\-what''s\-good\-for\-one;
+網管接口 > network\-management\-interface;
+根據上表 > according\-to\-the\-above\-table;
+國防利益 > \(national\)\-defence\-interests;
+本末倒置 > take\-the\-branch\-for\-the\-root;
+抱頭痛哭 > cry\-on\-each\-other''s\-shoulder;
+不一而足 > by\-no\-means\-an\-isolated\-case;
+白紙黑字 > \(written\)\-in\-black\-and\-white;
+不碎玻璃 > shatterproof\-or\-safety\-glass;
+莫衷一是 > cannot\-decide\-which\-is\-right;
+八國聯軍 > the\-eight\-power\-allied\-force;
+多年以來 > for\-many\-years\-\(in\-the\-past\);
+知識產權 > intellectual\-property\-rights;
+誓死不降 > to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 > there\-is\-no\-need\-to\-\(do\-sth\);
+中文廣播 > chinese\-\(language\)\-broadcast;
+移殖手術 > \(organ\)\-transplant\-operation;
+浪子回頭 > the\-return\-of\-a\-prodigal\-son;
+不急之務 > a\-matter\-of\-no\-great\-urgency;
+電磁干擾 > electromagnetic\-interference;
+不易之論 > perfectly\-sound\-proposition;
+各種各樣 > various\-sorts\-and\-varieties;
+不違農時 > not\-miss\-the\-farming\-season;
+亂作決定 > to\-make\-arbitrary\-decisions;
+大器晚成 > grand\-talents\-mature\-slowly;
+按步就班 > follow\-the\-prescribed\-order;
+外交部長 > minister\-of\-foreign\-affairs;
+舉世矚目 > attract\-worldwide\-attention;
+獨斷專行 > act\-in\-an\-arbitrary\-fashion;
+私人鑰匙 > private\-key\-\(in\-encryption\);
+卻之不恭 > to\-refuse\-would\-be\-impolite;
+馬太福音 > gospel\-according\-to\-matthew;
+電話會議 > \(telephone\)\-conference\-call;
+不落窠臼 > not\-follow\-the\-beaten\-track;
+按照計劃 > according\-to\-\(the\)\-plan\-\.\.\.;
+事情要做 > thing\-that\-needs\-to\-be\-done;
+一路平安 > to\-have\-a\-pleasant\-journey;
+紐約時報 > new\-york\-times\-\(newspaper\);
+常問問題 > frequently\-asked\-questions;
+百孔千瘡 > riddled\-with\-gaping\-wounds;
+兵連禍結 > ravaged\-by\-successive\-wars;
+長期以來 > ever\-since\-a\-long\-time\-ago;
+安家落戶 > make\-one''s\-home\-in\-a\-place;
+入木三分 > written\-in\-a\-forceful\-hand;
+分時多工 > time\-division\-multiplexing;
+根深蒂固 > deep\-rooted\-\(problem\,\-etc\);
+星島日報 > sing\-tao\-daily\-\(newspaper\);
+電信服務 > telecommunications\-service;
+公開鑰匙 > public\-key\-\(in\-encryption\);
+電信網路 > telecommunications\-network;
+感染人數 > number\-of\-infected\-persons;
+百步穿楊 > shoot\-with\-great\-precision;
+出現意外 > \(to\-appear\)\-unexpected\(ly\);
+一觸即發 > could\-happen\-at\-any\-moment;
+纖芯直徑 > core\-diameter\-\(of\-a\-fiber\);
+進行交易 > to\-carry\-out\-a\-transaction;
+別出心裁 > adopt\-an\-original\-approach;
+百發百中 > every\-shot\-hits\-the\-target;
+不亢不卑 > neither\-haughty\-nor\-humble;
+白壁無瑕 > impeccable\-moral\-integrity;
+敗子回頭 > return\-of\-the\-prodigal\-son;
+訪問美國 > to\-visit\-the\-united\-states;
+不失時機 > seize\-the\-opportune\-moment;
+導彈潛艇 > \(guided\)\-missile\-submarine;
+安如泰山 > as\-secure\-as\-mount\-taishan;
+不義之財 > ill\-gotten\-wealth\-or\-gains;
+重要的是 > it\-is\-important\-\(that\)\-\.\.\.;
+通信技術 > communications\-technology;
+外匯儲備 > foreign\-exchange\-reserves;
+勞動教養 > reeducation\-through\-labor;
+不辭辛苦 > make\-nothing\-of\-hardships;
+程式理員 > program\-manager\-\(windows\);
+民主黨人 > a\-democratic\-party\-member;
+三十年來 > for\-the\-past\-thirty\-years;
+技術發展 > technological\-development;
+高等學校 > colleges\-and\-universities;
+康涅狄格 > connecticut\-\(state\-in\-us\);
+單連接站 > single\-attachment\-station;
+符合標準 > to\-comply\-with\-a\-standard;
+示威遊行 > a\-\(protest\)\-demonstration;
+大敵當前 > confront\-a\-powerful\-enemy;
+研製過程 > manufacturing\-environment;
+反唇相譏 > answer\-back\-sarcastically;
+核轟炸機 > nuclear\-bomber\-\(aircraft\);
+不得人心 > not\-enjoy\-popular\-support;
+直言不諱 > speak\-frankly\-and\-bluntly;
+景山公園 > name\-of\-a\-park\-in\-beijing;
+面臨困難 > to\-be\-faced\-with\-problems;
+不務正業 > not\-engage\-in\-honest\-work;
+愛理不理 > look\-cold\-and\-indifferent;
+改善通訊 > to\-improve\-communications;
+總參謀長 > \(military\)\-chief\-of\-staff;
+背信棄義 > break\-faith\-with\-somebody;
+跨國公司 > transnational\-corporation;
+共和黨人 > a\-republican\-party\-member;
+馬可福音 > gospel\-according\-to\-mark;
+每年一度 > once\-a\-year\-\(every\-year\);
+域名註冊 > domain\-name\-registration;
+兵貴神速 > speed\-is\-precious\-in\-war;
+多邊合作 > multilateral\-cooperation;
+投放市場 > to\-put\-sth\-on\-the\-market;
+荒無人煙 > desolate\-and\-uninhabited;
+約翰福音 > gospel\-according\-to\-john;
+印歐語言 > indo\-european\-\(language\);
+習以為常 > be\-accustomed\-or\-used\-to;
+兵荒馬亂 > turmoil\-and\-chaos\-of\-war;
+不動聲色 > maintain\-one''s\-composure;
+浮點運算 > floating\-point\-operation;
+內政部長 > minister\-of\-the\-interior;
+鼻針療法 > nose\-acupuncture\-therapy;
+虛擬環境 > theorhetical\-environment;
+密切注意 > close\-attention\-\(to\-sth\);
+不拘一格 > not\-stick\-to\-one\-pattern;
+完全懂得 > to\-understand\-completely;
+不平則鳴 > where\-there\-is\-injustice;
+核不擴散 > nuclear\-nonproliferation;
+擺脫危機 > to\-break\-out\-of\-a\-crisis;
+富布賴特 > fullbright\-\(scholarship\);
+撥亂反正 > bring\-order\-out\-of\-chaos;
+安第斯山 > the\-andes\-mountain\-range;
+百煉成鋼 > be\-tempered\-into\-a\-steel;
+國務次卿 > under\-secretary\-of\-state;
+半信半疑 > half\-believe\,\-half\-doubt;
+拔火罐兒 > detachable\-stove\-chimney;
+古希臘語 > ancient\-greek\-\(language\);
+千絲萬縷 > linked\-in\-countless\-ways;
+破土典禮 > ground\-breaking\-ceremony;
+教學機構 > educational\-organization;
+不遺余力 > spare\-no\-pains\-or\-effort;
+表示敬意 > respectful\,\-show\-respect;
+路加福音 > gospel\-according\-to\-luke;
+通訊行業 > communications\-industry;
+本位主義 > selfish\-departmentalism;
+為所欲為 > do\-whatever\-one\-pleases;
+人民法院 > people''s\-court\-\(of\-law\);
+商業機構 > commercial\-organization;
+不翼而飛 > disappear\-without\-trace;
+畢恭畢敬 > reverent\-and\-respectful;
+科研人員 > \(scientific\)\-researcher;
+透露消息 > to\-disclose\-information;
+中國時報 > china\-times\-\(newspaper\);
+威廉斯堡 > williamsburg\-\(virginia\);
+便宜行事 > act\-at\-one''s\-discretion;
+商業管理 > business\-administration;
+基礎速率 > basic\-rate\-\(as\-in\-isdn\);
+手寫識別 > handwriting\-recognition;
+手寫辯識 > handwriting\-recognition;
+比比皆是 > can\-be\-found\-everywhere;
+棄舊換新 > to\-turn\-over\-a\-new\-leaf;
+不情之請 > my\-presumptuous\-request;
+雙連接站 > dual\-attachment\-station;
+補助組織 > auxiliary\-organizations;
+回顧歷史 > to\-look\-back\-at\-history;
+通訊協定 > communications\-protocol;
+步履維艱 > have\-difficulty\-walking;
+共同篩選 > collaborative\-filtering;
+大驚小怪 > much\-fuss\-about\-nothing;
+通信協定 > communications\-protocol;
+公安官員 > public\-safety\-officials;
+傳輸技術 > transmission\-technology;
+冰天雪地 > a\-world\-of\-ice\-and\-snow;
+政府機構 > government\-organization;
+不可理喻 > be\-impervious\-to\-reason;
+職業中學 > vocational\-high\-school;
+自食其果 > reap\-what\-one\-has\-sown;
+不露聲色 > not\-show\-one''s\-feeling;
+大煞風景 > dampening\-one''s\-spirit;
+羅曼語族 > romance\-language\-group;
+孰能生巧 > practice\-makes\-perfect;
+嗷嗷待哺 > cry\-piteously\-for\-food;
+不痛不痒 > scratching\-the\-surface;
+聯網環境 > networking\-environment;
+解釋執行 > interpreted\-\(computer\);
+不近人情 > not\-amenable\-to\-reason;
+政治機構 > political\-organization;
+另眼相看 > to\-view\-in\-a\-new\-light;
+信息技術 > information\-technology;
+安全考慮 > security\-consideration;
+信息管理 > information\-management;
+蹦蹦跳跳 > bouncing\-and\-vivacious;
+通信密度 > communications\-density;
+沒有差別 > there\-is\-no\-difference;
+不言而喻 > it\-goes\-without\-saying;
+步調一致 > to\-be\-united\-in\-action;
+通訊通道 > communications\-channel;
+採訪記者 > investigative\-reporter;
+比較而言 > comparatively\-speaking;
+離開故鄉 > to\-leave\-one''\-homeland;
+通信網絡 > communications\-network;
+數字通信 > digital\-communications;
+共產黨員 > communist\-party\-member;
+網路架構 > network\-infrastructure;
+技術情報 > information\-technology;
+美國之音 > voice\-of\-america\-radio;
+標準組織 > standards\-organization;
+獨攬市場 > to\-monopolize\-a\-market;
+彬彬有禮 > refined\-and\-courteous;
+完全兼容 > completely\-compatible;
+觀測衛星 > observation\-satellite;
+三萬七千 > thirty\-seven\-thousand;
+大赦國際 > amnesty\-international;
+情報官員 > intelligence\-official;
+電磁噪聲 > electromagnetic\-noise;
+長途網路 > long\-distance\-network;
+比色分析 > colorimetric\-analysis;
+庫爾德人 > kurdish\-person\|people;
+微軟公司 > microsoft\-corporation;
+不識抬舉 > fail\-to\-appreciate\-sb;
+席卷亞洲 > to\-sweep\-through\-asia;
+作業環境 > operating\-environment;
+智慧產權 > intellectual\-property;
+高級官員 > high\-ranking\-official;
+半夜三更 > in\-the\-depth\-of\-night;
+取消禁令 > to\-life\-a\-prohibition;
+實際應用 > practical\-application;
+生產能力 > manufacturing\-ability;
+總統選舉 > presidential\-election;
+不擇手段 > by\-fair\-means\-or\-foul;
+國際標準 > interntional\-standard;
+金陵大學 > university\-of\-nanking;
+異質網路 > heterogeneous\-network;
+白手起家 > build\-up\-from\-nothing;
+葡萄牙語 > portuguese\-\(language\);
+一臂之力 > \(lend\)\-a\-helping\-hand;
+不倫不類 > neither\-fish\-nor\-fowl;
+基本原理 > fundamental\-principle;
+撫養成人 > to\-bring\-up\-\(a\-child\);
+通信服務 > communication\-service;
+國營企業 > nationalized\-industry;
+二十八號 > 28th\-day\-of\-the\-month;
+本固枝榮 > when\-the\-root\-is\-firm;
+傳輸設備 > transmission\-facility;
+不是味兒 > not\-the\-right\-flavour;
+操作環境 > operating\-environment;
+隨機時間 > random\-period\-of\-time;
+傳輸距離 > transmission\-distance;
+另起爐灶 > to\-start\-from\-scratch;
+首腦會議 > leadership\-conference;
+如出一轍 > be\-precisely\-the\-same;
+矮杆品種 > short\-stalked\-variety;
+運算環境 > operating\-environment;
+絞盡腦汁 > to\-wrack\-one''s\-brains;
+光磁碟機 > magneto\-optical\-drive;
+國有企業 > nationalized\-business;
+維吾爾人 > uighur\-person\|people;
+開除學籍 > to\-expel\-from\-school;
+首席代表 > chief\-representative;
+物理結構 > physical\-composition;
+國會議長 > speaker\-of\-the\-house;
+應用平台 > application\-platform;
+匈牙利語 > hungarian\-\(language\);
+不信任案 > no\-confidence\-motion;
+改善關係 > to\-improve\-relations;
+停火協議 > cease\-fire\-agreement;
+二十二號 > 22\-nd\-day\-of\-a\-month;
+確有其事 > \(confirm\-to\-be\)\-true;
+大型企業 > large\-scale\-industry;
+使徒行傳 > acts\-of\-the\-apostles;
+必不可少 > absolutely\-necessary;
+不在話下 > be\-nothing\-difficult;
+應用軟件 > application\-software;
+交換技術 > switching\-technology;
+程式語言 > programming\-language;
+發表聲明 > to\-issue\-a\-statement;
+電腦語言 > programming\-language;
+電子工業 > electronics\-industry;
+召開會議 > to\-call\-a\-conference;
+商業應用 > business\-application;
+每況愈下 > steadily\-deteriorate;
+軍事機構 > military\-institution;
+判處死刑 > to\-sentance\-to\-death;
+貨幣貶值 > currency\-devaluation;
+按照法律 > according\-to\-the\-law;
+北回歸線 > the\-tropic\-of\-cancer;
+電子元件 > electronic\-component;
+經濟衰退 > \(economic\)\-recession;
+光二極管 > light\-emitting\-diode;
+不穩平衡 > unstable\-equilibrium;
+信息資源 > information\-resource;
+六十五歲 > sixty\-five\-years\-old;
+智能大樓 > intelligent\-building;
+少數民族 > minority\-nationality;
+全面禁止 > complete\-prohibition;
+騾馬大車 > mule\-and\-horse\-carts;
+經濟發展 > economic\-development;
+通訊系統 > communication\-system;
+不二法門 > the\-one\-and\-only\-way;
+無價珍珠 > pearl\-of\-great\-price;
+未成年者 > minor\-\(not\-an\-adult\);
+伊斯蘭堡 > islamabad\-\(pakistan\);
+二十四號 > 24\-th\-day\-of\-a\-month;
+大失所望 > greatly\-dissapointed;
+企業集團 > industry\-association;
+管理接口 > management\-interface;
+應用軟體 > application\-software;
+生產設備 > production\-equipment;
+義務教育 > cumpulsory\-education;
+傳輸控制 > transmission\-control;
+不懷好意 > harbour\-evil\-designs;
+診斷功能 > diagnostic\-function;
+傳輸媒體 > transmission\-medium;
+起死回生 > arise\-from\-the\-dead;
+高階語言 > high\-level\-language;
+美國人民 > the\-american\-people;
+面嚮連接 > connection\-oriented;
+專業人才 > expert\-\(in\-a\-field\);
+無縫連接 > seamless\-connection;
+傳輸媒質 > transmission\-medium;
+層見迭出 > to\-occur\-frequently;
+美國以外 > outside\-of\-the\-u\.s\.;
+此時此刻 > at\-this\-very\-moment;
+多黨選舉 > multiparty\-election;
+光纖衰減 > optical\-attenuation;
+不勞而獲 > reap\-without\-sowing;
+技術標準 > technology\-standard;
+開發過程 > development\-process;
+通信負載 > communications\-load;
+常規武器 > conventional\-weapon;
+統計結果 > statistical\-results;
+司空見慣 > a\-common\-occurrence;
+二十七號 > 27th\-day\-of\-a\-month;
+視而不見 > turn\-a\-blind\-eye\-to;
+電子文件 > electronic\-document;
+結構助詞 > structural\-particle;
+字斟句酌 > weighing\-every\-word;
+政治關係 > political\-relations;
+相互兼容 > mutually\-compatible;
+尋事生非 > to\-look\-for\-trouble;
+小寫字母 > lowercase\-\(letters\);
+管理功能 > management\-function;
+高級語言 > high\-level\-language;
+分佈控制 > distributed\-control;
+網絡應用 > network\-application;
+機械翻譯 > machine\-translation;
+軟件技術 > software\-technology;
+奶油菜花 > creamed\-cauliflower;
+光發送器 > optical\-transmitter;
+網絡環境 > network\-environment;
+愛人如己 > love\-others\-as\-self;
+阿拉巴馬 > alabama\-\(u\.s\.state\);
+終點地址 > destination\-address;
+網路應用 > network\-application;
+目標地址 > destination\-address;
+二十六號 > 26th\-day\-of\-a\-month;
+中國當局 > chinese\-authorities;
+合情合理 > reasonable\-and\-fair;
+百依百順 > docile\-and\-obedient;
+半自耕農 > semi\-tenant\-peasant;
+網路環境 > network\-environment;
+反彈導彈 > antimissile\-missile;
+生產設施 > production\-facility;
+葡萄牙人 > portuguese\-\(person\);
+不絕如縷 > hanging\-by\-a\-thread;
+技術知識 > technical\-knowledge;
+美國軍人 > american\-serviceman;
+國際貿易 > international\-trade;
+人造語言 > artificial\-language;
+不敗之地 > invincible\-position;
+自身利益 > one''s\-own\-interests;
+競爭產品 > competitive\-product;
+非核國家 > non\-nuclear\-country;
+氣候狀況 > climatic\-conditions;
+環形結構 > ring\-configuration;
+西班牙語 > spanish\-\(language\);
+一般來說 > generally\-speaking;
+首腦會晤 > leadership\-meeting;
+重要問題 > an\-important\-issue;
+領先地位 > lead\(ing\)\-position;
+信息系統 > information\-system;
+種族清洗 > \"ethnic\-cleansing\";
+乒乓球檯 > table\-tennis\-table;
+非常嚴厲 > to\-punish\-severely;
+內部結構 > internal\-strucutre;
+數據通信 > data\-communication;
+非常感謝 > extremely\-grateful;
+克隆技術 > cloning\-technology;
+電子網絡 > electronic\-network;
+白麵書生 > pale\-faced\-scholar;
+財務軟件 > financial\-software;
+西班牙文 > spanish\-\(language\);
+古典語言 > classical\-language;
+兩個中國 > two\-china\-\(policy\);
+外來投資 > foreign\-investment;
+土耳其語 > turkish\-\(language\);
+不正之風 > unhealthy\-tendency;
+集成電路 > integrated\-circuit;
+閉關政策 > closed\-door\-policy;
+網絡技術 > network\-technology;
+中國政府 > chinese\-government;
+令牌環網 > token\-ring\-network;
+大明鼎鼎 > a\-grand\-reputation;
+貿易組織 > trade\-organization;
+遍地開花 > blossom\-everywhere;
+網絡管理 > network\-management;
+高速網絡 > high\-speed\-network;
+書面許可 > written\-permission;
+聯合公報 > joint\-announcement;
+研究機構 > research\-institute;
+佛蘭芒語 > flemish\-\(language\);
+國會議員 > member\-of\-congress;
+最近幾年 > the\-last\-few\-years;
+精簡開支 > to\-reduce\-spending;
+不置可否 > decline\-to\-comment;
+三角腹帶 > athletic\-supporter;
+衛生設備 > sanitary\-equipment;
+造成問題 > to\-create\-an\-issue;
+總的來說 > generally\-speaking;
+色情小說 > pornographic\-novel;
+貴妃醉酒 > the\-drunken\-beauty;
+電子信箱 > electronic\-mailbox;
+新加坡人 > singaporean\-person;
+驚濤駭浪 > perilous\-situation;
+大力發展 > vigorous\-expansion;
+服務規章 > service\-regulation;
+竭盡全力 > to\-spare\-no\-effort;
+不折不扣 > a\-hundred\-per\-cent;
+科研樣機 > research\-prototype;
+區域網路 > local\-area\-network;
+發送功率 > transmission\-power;
+政府警告 > government\-warning;
+核能技術 > nuclear\-technology;
+意大利語 > italian\-\(language\);
+北京大學 > beijing\-university;
+區域網絡 > local\-area\-network;
+網絡科技 > network\-technology;
+聯邦政府 > federal\-government;
+電腦業者 > software\-developer;
+進行編程 > executable\-program;
+虛擬連接 > virtual\-connection;
+客戶應用 > client\-application;
+不隨意肌 > involuntary\-muscle;
+採取措施 > to\-adopt\-a\-measure;
+哈佛大學 > harvard\-university;
+網管系統 > network\-management;
+暗線光譜 > dark\-line\-spectrum;
+電視節目 > television\-program;
+中國人民 > the\-chinese\-people;
+簡短介紹 > brief\-introduction;
+海灣戰爭 > \(persian\)\-gulf\-war;
+地球大氣 > earth''s\-atmosphere;
+簡要介紹 > brief\-introduction;
+服務質量 > quality\-of\-service;
+不攻自破 > collapse\-of\-itself;
+文化傳統 > cultural\-tradition;
+網絡遷移 > network\-migration;
+電腦軟件 > computer\-software;
+資料傳輸 > data\-transmission;
+國防部長 > defence\-secretary;
+巨大壓力 > enormous\-pressure;
+數據傳輸 > data\-transmission;
+政治氣候 > political\-climate;
+廣域網路 > wide\-area\-network;
+教友大會 > church\-conference;
+軍事力量 > military\-strength;
+電話服務 > telephone\-service;
+阿拉伯語 > arabic\-\(language\);
+支柱產業 > mainstay\-industry;
+多站地址 > multicast\-address;
+經濟安全 > economic\-security;
+外交風波 > diplomatic\-crisis;
+電話網路 > telephone\-network;
+反過來說 > on\-the\-other\-hand;
+歐洲語言 > european\-language;
+網絡設備 > network\-equipment;
+日益增加 > to\-increase\-daily;
+經濟力量 > economic\-strength;
+變本加厲 > become\-aggravated;
+光纖接口 > optical\-interface;
+商業行為 > business\-activity;
+軍費開支 > military\-spending;
+軟件平臺 > software\-platform;
+按圖索驥 > try\-to\-locate\-sth;
+希伯來語 > hebrew\-\(language\);
+開發週期 > development\-cycle;
+阿拉伯文 > arabic\-\(language\);
+戰略夥伴 > strategic\-partner;
+靜脈吸毒 > intraveneous\-drug;
+無期徒刑 > life\-imprisonment;
+百分之百 > a\-hundred\-percent;
+萊溫斯基 > \(monica\)\-lewinsky;
+傳輸服務 > transport\-service;
+綜合布線 > integrated\-wiring;
+傳輸通道 > transport\-channel;
+政府部門 > government\-branch;
+新聞週刊 > newsweek\-magazine;
+直接競爭 > direct\-competitor;
+醫療經驗 > medical\-expertise;
+廣播地址 > broadcast\-address;
+生物武器 > biological\-weapon;
+暗無天日 > complete\-darkness;
+高級研究 > advanced\-research;
+自主系統 > autonomous\-system;
+白金漢宮 > buckingham\-palace;
+運行狀況 > operational\-state;
+困難在於 > the\-problem\-is\.\.\.;
+日耳曼語 > germanic\-language;
+傳輸協定 > transfer\-protocol;
+大刀闊斧 > bold\-and\-decisive;
+特別待遇 > special\-treatment;
+專用網路 > dedicated\-network;
+敘利亞文 > syriac\-\(language\);
+傳輸速率 > transmission\-rate;
+不歡而散 > part\-on\-bad\-terms;
+中華民國 > republic\-of\-china;
+並駕齊驅 > run\-neck\-and\-neck;
+難以應付 > hard\-to\-deal\-with;
+硬件平臺 > hardware\-platform;
+官方語言 > official\-language;
+北京近郊 > suburb\-of\-beijing;
+一般原則 > general\-principle;
+射頻干擾 > radio\-interferece;
+四面八方 > in\-all\-directions;
+國家安全 > national\-security;
+海洋溫度 > ocean\-temperature;
+網際協定 > internet\-protocol;
+外交關係 > foreign\-relations;
+巴克夏豬 > berkshire\-\(swine\);
+不治之症 > incurable\-disease;
+業界標準 > industry\-standard;
+陸基導彈 > land\-based\-missle;
+西番雅書 > book\-of\-zephaniah;
+專家評論 > expert\-commentary;
+嚇得發抖 > tremble\-with\-fear;
+四門轎車 > sedan\-\(motor\-car\);
+愛不釋手 > fondle\-admiringly;
+從頭到腳 > from\-head\-to\-foot;
+軍事實力 > military\-strength;
+廣播網路 > broadcast\-network;
+笨口拙舌 > awkward\-in\-speech;
+巴斯克語 > basque\-\(language\);
+華北平原 > north\-china\-plain;
+救恩計劃 > plan\-of\-salvation;
+航空母艦 > aircraft\-carrier;
+中國大陸 > chinese\-mainland;
+影像會議 > video\-conference;
+悲歡離合 > joys\-and\-sorrows;
+百里挑一 > one\-in\-a\-hundred;
+語法術語 > grammatical\-term;
+更高性能 > high\-performance;
+軍事科學 > military\-science;
+器官移殖 > organ\-transplant;
+影像處理 > image\-processing;
+人事部門 > personnel\-office;
+潛在威脅 > potential\-threat;
+統計數據 > statistical\-data;
+特定含義 > specific\-meaning;
+金融系統 > financial\-system;
+導致死亡 > to\-lead\-to\-death;
+板上釘釘 > that\-clinches\-it;
+電腦企業 > computer\-company;
+唉聲嘆氣 > heave\-deep\-sighs;
+不好意思 > feel\-embarrassed;
+正常工作 > normal\-operation;
+傳真發送 > fax\-transmission;
+操作系統 > operating\-system;
+傳輸媒界 > transport\-method;
+移動電話 > mobile\-telephone;
+網絡直徑 > network\-diameter;
+成群結隊 > in\-large\-numbers;
+無所不賣 > to\-sell\-anything;
+通用電器 > general\-electric;
+朝鮮半島 > korean\-peninsula;
+有關人士 > persons\-involved;
+耶利米書 > book\-of\-jeremiah;
+金融市場 > financial\-market;
+兩岸對話 > bilaterial\-talks;
+不經之談 > absurd\-statement;
+路由協定 > routing\-protocol;
+網路平台 > network\-platform;
+光檢測器 > optical\-detector;
+電腦網路 > computer\-network;
+波爾多液 > bordeaux\-mixture;
+發達國家 > developed\-nation;
+已經進行 > already\-underway;
+傳送服務 > delivery\-service;
+讀者來信 > reader''s\-letters;
+哈巴谷書 > book\-of\-habakkuk;
+白壁微瑕 > a\-slight\-blemish;
+十幾個月 > ten\-months\-or\-so;
+不加思索 > without\-thinking;
+單模光纖 > singlemode\-fiber;
+最大能力 > maximum\-capacity;
+有線電視 > cable\-television;
+不變資本 > constant\-capital;
+電話信號 > telephone\-signal;
+威爾士語 > welsh\-\(language\);
+男子籃球 > men''s\-basketball;
+聯邦大樓 > federal\-building;
+普通問題 > common\-questions;
+輸送媒介 > transport\-medium;
+防衛武器 > defensive\-weapon;
+作業系統 > operating\-system;
+體育之窗 > window\-on\-sports;
+書寫語言 > written\-language;
+共享帶寬 > shared\-bandwidth;
+文化障礙 > cultural\-barrier;
+直接影響 > direct\-influence;
+與此同時 > at\-the\-same\-time;
+主要來源 > principle\-source;
+人民公社 > people''s\-commune;
+下面請看 > please\-see\-below;
+金融風波 > financial\-crisis;
+網絡協議 > network\-protocol;
+白衣戰士 > warrior\-in\-white;
+安如磐石 > as\-solid\-as\-rock;
+故障排除 > fault\-resolution;
+金融改革 > financial\-reform;
+行動電話 > mobile\-telephone;
+雌性接口 > female\-connector;
+心臟移殖 > heart\-transplant;
+遙控操作 > remote\-operation;
+簡單的說 > to\-put\-it\-simply;
+光接收器 > optical\-receiver;
+機械語言 > machine\-language;
+胡志明市 > ho\-chi\-minh\-city;
+不知所云 > not\-know\-what\-sb;
+電腦公司 > computer\-company;
+聯席會議 > joint\-conference;
+交換網路 > switched\-network;
+骨幹網路 > backbone\-network;
+軟件企業 > software\-company;
+力量均衡 > balance\-of\-power;
+施洗約翰 > john\-the\-baptist;
+尼希米記 > book\-of\-nehemiah;
+報紙報導 > newspaper\-report;
+金融危機 > financial\-crisis;
+離開北京 > to\-leave\-beijing;
+幾乎完全 > almost\-entirely;
+信息時代 > information\-age;
+產品經理 > product\-manager;
+軍事威脅 > military\-threat;
+網路服務 > network\-service;
+研究中心 > research\-center;
+崇拜儀式 > worship\-service;
+方興未艾 > to\-be\-unfolding;
+雙邊貿易 > bilateral\-trade;
+軍事部門 > military\-branch;
+除此之外 > apart\-from\-this;
+太陽公司 > sun\-corporation;
+外國資本 > foreign\-capital;
+豐富多彩 > richly\-colorful;
+不白之冤 > unrighted\-wrong;
+戒備森嚴 > heavily\-guarded;
+半途而廢 > give\-up\-halfway;
+批量生產 > to\-mass\-produce;
+操作速率 > operating\-speed;
+聯合發表 > joint\-statement;
+不完全葉 > incomplete\-leaf;
+核反應堆 > nuclear\-reactor;
+經濟改革 > economic\-reform;
+半壁江山 > half\-of\-country;
+古典音樂 > classical\-music;
+不可多得 > hard\-to\-come\-by;
+重新開始 > resume\,\-restart;
+電子郵件 > electronic\-mail;
+經濟前途 > economic\-future;
+工讀學校 > the\-reformatory;
+嚴重關切 > serious\-concern;
+經濟危機 > economic\-crisis;
+動態助詞 > aspect\-particle;
+暴跳如雷 > stamp\-with\-fury;
+以西結書 > book\-of\-ezekiel;
+化學武器 > chemical\-weapon;
+登記用戶 > registered\-user;
+嚴重問題 > serious\-problem;
+當務之急 > urgent\-priority;
+軟件系統 > software\-system;
+購物中心 > shopping\-center;
+壁壘森嚴 > closely\-guarded;
+瑪拉基書 > book\-of\-malachi;
+貿易夥伴 > trading\-partner;
+月份會議 > monthly\-meeting;
+研究報告 > research\-report;
+先進武器 > advanced\-weapon;
+大發雷霆 > extremely\-angry;
+美國政府 > u\.s\.\-government;
+塞爾特語 > celtic\-language;
+措辭強硬 > strongly\-worded;
+公司會議 > company\-meeting;
+改變形像 > transfiguration;
+百兒八十 > about\-a\-hundred;
+多模光纖 > multimode\-fiber;
+軟件市場 > software\-market;
+校園骨幹 > campus\-backbone;
+沒有聯繫 > to\-be\-unrelated;
+世界最大 > world''s\-largest;
+尖銳批評 > sharp\-criticism;
+電腦系統 > computer\-system;
+貨幣危機 > monetary\-crisis;
+暗送秋波 > make\-eyes\-at\-sb;
+數位網路 > digital\-network;
+全力以赴 > do\-at\-all\-costs;
+虛擬網絡 > virtual\-network;
+光明日報 > guangming\-daily;
+歷史久遠 > ancient\-history;
+斯拉夫語 > slavic\-language;
+外國公司 > foreign\-company;
+商業中心 > business\-center;
+不相上下 > equally\-matched;
+機密文件 > secret\-document;
+具體計劃 > a\-concrete\-plan;
+文書處理 > word\-processing;
+預防措施 > protective\-step;
+公然表示 > to\-state\-openly;
+負債纍纍 > heavily\-in\-debt;
+經濟體制 > economic\-system;
+不過爾爾 > merely\-mediocre;
+流感病毒 > influenza\-virus;
+衛生官員 > health\-official;
+具體問題 > concrete\-issue;
+國防預算 > defence\-budget;
+裁減軍備 > arms\-reduction;
+出口商品 > export\-product;
+改革進程 > reform\-process;
+薄胎瓷器 > eggshell\-china;
+擺蕩吊環 > swinging\-rings;
+全球氣候 > global\-climate;
+對外政策 > foreign\-policy;
+進行通信 > to\-communicate;
+不咎既往 > not\-censure\-sb;
+校園網絡 > campus\-network;
+數位信號 > digital\-signal;
+生長激素 > growth\-hormone;
+指揮中心 > command\-center;
+電話線路 > telephone\-line;
+語氣助詞 > modal\-particle;
+約書亞記 > book\-of\-joshua;
+經濟有效 > cost\-effective;
+堅決否認 > to\-firmly\-deny;
+書寫符號 > writing\-symbol;
+不知死活 > act\-recklessly;
+波羅的海 > the\-baltic\-sea;
+桌面系統 > desktop\-system;
+東南亞國 > southeast\-asia;
+小型企業 > small\-business;
+資料介面 > data\-interface;
+不怎麼樣 > not\-up\-to\-much;
+非常重要 > very\-important;
+醫學專家 > medical\-expert;
+先進水平 > advanced\-level;
+數據接口 > data\-interface;
+連鎖反應 > chain\-reaction;
+特別感謝 > special\-thanks;
+人壽保險 > life\-insurance;
+數據介面 > data\-interface;
+但以理書 > book\-of\-daniel;
+迫不得已 > have\-no\-choice;
+評價分類 > rank\,\-classify;
+從事研究 > to\-do\-research;
+以賽亞書 > book\-of\-isaiah;
+半數以上 > more\-than\-half;
+檔案屬性 > file\-attribute;
+從來沒有 > have\|has\-never;
+以斯帖記 > book\-of\-esther;
+最佳利益 > best\-interests;
+惡性循環 > vicious\-circle;
+不省人事 > be\-unconscious;
+百無聊賴 > bored\-to\-death;
+醫學中心 > medical\-center;
+白色人種 > the\-white\-race;
+綜合報導 > summary\-report;
+大同小異 > almost\-similar;
+卑躬屈節 > bow\-and\-scrape;
+恭賀新禧 > happy\-new\-year;
+前生召喚 > foreordination;
+網際電話 > internet\-phone;
+蘋果電腦 > apple\-computer;
+不脛而走 > get\-round\-fast;
+三輪車伕 > pedicab\-driver;
+飽經風霜 > weather\-beaten;
+全心全意 > heart\-and\-soul;
+泰米爾語 > tamil\-language;
+不期而遇 > meet\-by\-chance;
+近乎同步 > plesiochronous;
+哥本哈根 > copenhagen\-\?\?\?;
+百米賽跑 > 100\-metre\-dash;
+調查報告 > memoir\,\-report;
+數字信號 > digital\-signal;
+世界經濟 > global\-economy;
+通用汽車 > general\-motors;
+北京週報 > beijing\-review;
+源點地址 > source\-address;
+這次危機 > present\-crisis;
+出口產品 > export\-product;
+多工運作 > multithreading;
+二氧化碳 > carbon\-dioxide;
+網絡設計 > network\-design;
+五年計劃 > five\-year\-plan;
+市場經濟 > market\-economy;
+檔案執行 > file\-execution;
+互動電視 > interactive\-tv;
+公眾意見 > public\-opinion;
+歐洲聯盟 > european\-union;
+檔案轉送 > file\-transfer;
+排山倒海 > earth\-shaking;
+經營費用 > business\-cost;
+直截了當 > plain\-talking;
+冷戰以後 > post\-cold\-war;
+勢在必行 > be\-imperative;
+舊約全書 > old\-testament;
+幾個小時 > several\-hours;
+不可缺少 > indispensable;
+視窗基準 > windows\-based;
+電郵位置 > email\-address;
+研究領域 > research\-area;
+進接服務 > access\-server;
+二次大戰 > world\-war\-two;
+基本概念 > basic\-concept;
+貿易順差 > trade\-surplus;
+武器系統 > weapon\-system;
+家用電腦 > home\-computer;
+大公無私 > just\-and\-fair;
+新約全書 > new\-testament;
+亞洲國家 > asian\-country;
+暴風驟雨 > violent\-storm;
+捉取圖像 > capture\-image;
+拜金主義 > money\-worship;
+永久和平 > lasting\-peace;
+哈薩克人 > kazakh\-person;
+巡航導彈 > cruise\-missle;
+暴力犯罪 > violent\-crime;
+何西阿書 > book\-of\-hosea;
+不成文法 > unwritten\-law;
+亞太國家 > asian\-country;
+目標市場 > target\-market;
+最高法院 > supreme\-court;
+最後更新 > latest\-update;
+杏仁豆腐 > almond\-junket;
+這種方式 > \(in\)\-this\-way;
+保護主義 > protectionism;
+月球表面 > lunar\-surface;
+地方停車 > parking\-place;
+知名人士 > public\-figure;
+美國國會 > u\.s\.\-congress;
+不幸的是 > unfortunately;
+光纖電纜 > optical\-fiber;
+社交語言 > lingua\-franca;
+越來越多 > more\-and\-more;
+百科全書 > encyclopaedia;
+功率惡化 > power\-penalty;
+不可抗力 > force\-majeure;
+中國銀行 > bank\-of\-china;
+響應時間 > response\-time;
+傳輸模式 > transfer\-mode;
+不知不覺 > unconsciously;
+前所未有 > unprecedented;
+訪問方式 > access\-method;
+檔案建立 > file\-creation;
+出生日期 > date\-of\-birth;
+不可思議 > inconceivable;
+格子花呢 > plaid\,\-tartan;
+雙生兄弟 > twin\-brothers;
+最大速率 > maximum\-speed;
+現實情況 > current\-state;
+包羅萬象 > all\-embracing;
+視頻節目 > video\-program;
+羅馬字母 > roman\-letters;
+不可名狀 > indescribable;
+其他的人 > other\-people;
+媒體報導 > media\-report;
+和平條約 > peace\-treaty;
+股票市場 > stock\-market;
+大驚失色 > apprehensive;
+高層旅館 > luxury\-hotel;
+靈的世界 > spirit\-world;
+出乎預料 > unexpectedly;
+地方主義 > \"local\-\-ism\";
+激光唱片 > compact\-disk;
+中央銀行 > central\-bank;
+斯密約瑟 > joseph\-smith;
+目前世界 > modern\-world;
+民意調查 > opinion\-poll;
+現代音樂 > modern\-music;
+製造業者 > manufacturer;
+心理學家 > psychologist;
+不能抵抗 > irresistible;
+過境簽証 > transit\-visa;
+耶穌基督 > jesus\-christ;
+記者報導 > press\-report;
+多工作業 > multitaksing;
+不大離兒 > pretty\-close;
+本來面目 > true\-colours;
+網路節點 > network\-node;
+不可收拾 > irremediable;
+國家機密 > state\-secret;
+調查人員 > investigator;
+武裝部隊 > armed\-forces;
+生產企業 > manufacturer;
+名錄服務 > name\-service;
+語音信號 > voice\-signal;
+令人驚異 > surprisingly;
+基礎設施 > base\-station;
+生命跡象 > sign\-of\-life;
+知識分子 > intellectual;
+阿摩司書 > book\-of\-amos;
+用戶定義 > user\-defined;
+成吉思汗 > genghis\-khan;
+主幹網路 > core\-network;
+民意測驗 > opinion\-poll;
+歷代志下 > 2\-chronicles;
+歷代志上 > 1\-chronicles;
+指令名字 > command\-name;
+一小部分 > a\-small\-part;
+主幹網絡 > core\-network;
+揮霍無度 > extravagance;
+登陸月球 > moon\-landing;
+軍事援助 > military\-aid;
+本本主義 > book\-worship;
+五角大樓 > the\-pentagon;
+摩西律法 > law\-of\-moses;
+迅速蔓延 > rapid\-spread;
+以斯拉記 > book\-of\-ezra;
+不知所措 > be\-at\-a\-loss;
+形形色色 > all\-kinds\-of;
+檔案服務 > file\-servoce;
+降落地點 > landing\-site;
+三十五億 > 3\-\.5\-billion;
+二十六歲 > 26\-years\-old;
+數據網絡 > data\-network;
+龐然大物 > huge\-monster;
+世界知名 > world\-famous;
+知識份子 > intellectual;
+快速發展 > rapid\-growth;
+多種語言 > multilingual;
+安全問題 > safety\-issue;
+沉重打擊 > to\-hit\-hard;
+自然而然 > involuntary;
+不贊一詞 > keep\-silent;
+人體器官 > human\-organ;
+民族主義 > nationalism;
+精子密度 > sperm\-count;
+遷居移民 > immigration;
+野生動物 > wild\-animal;
+聖誕老人 > santa\-claus;
+浪漫主義 > romanticism;
+不可知論 > agnosticism;
+不切實際 > unrealistic;
+典型用途 > typical\-use;
+富於想像 > imaginative;
+國事訪問 > state\-visit;
+半半拉拉 > incompleted;
+不可分離 > inseparable;
+無產階級 > proletariat;
+失去意識 > unconscious;
+百萬富翁 > millionaire;
+貴族社會 > aristocracy;
+波多黎各 > puerto\-rico;
+立法機關 > legislature;
+主要原因 > main\-reason;
+有生以來 > since\-birth;
+貝加爾湖 > lake\-baikal;
+和平會談 > peace\-talks;
+不變價格 > fixed\-price;
+女繼承人 > inheritress;
+假設語氣 > subjunctive;
+地心吸力 > gravitation;
+運貨馬車 > cargo\-wagon;
+第三世界 > third\-world;
+無關緊要 > indifferent;
+大便乾燥 > constipated;
+不偏不倚 > even\-handed;
+分散注意 > to\-distract;
+不毛之地 > barren\-land;
+超級市場 > supermarket;
+必要條件 > requirement;
+分期付款 > installment;
+舉例來說 > for\-example;
+世界貿易 > world\-trade;
+莎士比亞 > shakespeare;
+四分之一 > one\-quarter;
+訊框傳送 > frame\-relay;
+畫插圖者 > illustrator;
+越南戰爭 > vietnam\-war;
+無所不在 > omnipresent;
+不出所料 > as\-expected;
+世界和平 > world\-piece;
+不同凡響 > outstanding;
+應用程式 > application;
+轉來轉去 > rove\-around;
+針鋒相對 > tit\-for\-tat;
+閉會祈禱 > benediction;
+不可估量 > inestimable;
+開放系統 > open\-system;
+有限公司 > corporation;
+空間探測 > space\-probe;
+基礎問題 > basic\-issue;
+邁阿密灘 > miami\-beach;
+身心爽快 > refreshment;
+祭司權術 > priestcraft;
+恰如其份 > appropriate;
+在這期間 > during\-time;
+無法忍受 > intolerable;
+反動分子 > reactionary;
+使用方便 > easy\-to\-use;
+無法形容 > unspeakable;
+有同情心 > sympathetic;
+進行性交 > to\-have\-sex;
+喜歡吵架 > quarrelsome;
+模糊邏輯 > fuzzy\-logic;
+就﹍而言 > considering;
+有選舉權 > constituent;
+測驗結果 > test\-result;
+管家職務 > stewardship;
+狗交媾般 > doggy\-style;
+專有名詞 > proper\-noun;
+朋比為奸 > to\-conspire;
+搬弄是非 > sow\-discord;
+冰染染料 > azoic\-dyes;
+四個小時 > four\-hours;
+天文學家 > astronomer;
+眼花繚亂 > be\-dazzled;
+魯佛爾宮 > the\-louvre;
+不堪忍受 > unbearable;
+娛樂中心 > recreation;
+自由貿易 > free\-trade;
+三分之二 > two\-thirds;
+總統任期 > presidency;
+不可逾越 > impassable;
+教堂墓地 > churchyard;
+行政長官 > magistrate;
+貴族論者 > aristocrat;
+新聞記者 > journalist;
+鞭闢入裡 > penetrated;
+他們自己 > themselves;
+阿塞拜疆 > azerbaijan;
+邏輯炸彈 > logic\-bomb;
+圖解說明 > illustrate;
+不屈不撓 > unyielding;
+大腦死亡 > brain\-dead;
+胡思亂想 > imaginings;
+一切事物 > everything;
+歌羅西書 > colossians;
+不由自主 > can''t\-help;
+曼徹斯特 > manchester;
+伽馬射線 > gamma\-rays;
+極為龐大 > monumental;
+有利可圖 > profitable;
+無所不能 > omnipotent;
+分離主義 > separatism;
+世界銀行 > world\-bank;
+無所不知 > omniscient;
+開會祈禱 > invocation;
+領導能力 > leadership;
+意見不合 > dissension;
+孟加拉國 > bangladesh;
+引人注意 > attractive;
+忘恩負義 > ungrateful;
+相同名字 > like\-named;
+使人信服 > convincing;
+取而代之 > substitute;
+電子空間 > cyberspace;
+微不足道 > negligible;
+達賴喇嘛 > dalai\-lama;
+不揣冒昧 > venture\-to;
+省略符號 > apostrophe;
+不對碴兒 > not\-proper;
+意想不到 > unexpected;
+冰上運動 > ice\-sports;
+美乃滋醬 > mayonnaise;
+陸軍中尉 > lieutenant;
+彪形大漢 > burly\-chap;
+萬事達卡 > mastercard;
+過渡時期 > transition;
+新聞媒體 > news\-media;
+堅定不移 > unswerving;
+此時以前 > heretofore;
+朝鮮戰爭 > korean\-war;
+難以置信 > incredible;
+共和政體 > republican;
+外交手腕 > diplomatic;
+畢業典禮 > graduation;
+腓立比書 > philipians;
+騎士風格 > knighthood;
+化妝舞會 > masquerade;
+女服物員 > stewardess;
+沒有知覺 > insensible;
+斑駮陸離 > variegated;
+氣勢洶洶 > aggressive;
+七十年代 > the\-1970''s;
+從今以後 > henceforth;
+視窗新技 > windows\-nt;
+縮小模型 > miniature;
+以弗所書 > ephesians;
+沒有形狀 > shapeless;
+用戶數據 > user\-data;
+開發人員 > developer;
+地質學家 > geologist;
+生物學家 > biologist;
+不可磨滅 > indelible;
+不亦樂乎 > extremely;
+按照字面 > literally;
+三分之一 > one\-third;
+不可救藥 > incurable;
+耶路撒冷 > jerusalem;
+褻瀆的話 > blasphemy;
+國內戰爭 > civil\-war;
+危地馬拉 > guatamala;
+加密後的 > encrypted;
+有攻擊性 > offensive;
+惡名昭彰 > notorious;
+經濟學家 > economist;
+阿空加瓜 > aconcagua;
+加拉太書 > galatians;
+網際色情 > cyberporn;
+花粉過敏 > hay\-fever;
+為時過早 > premature;
+聯合組織 > syndicate;
+有創造力 > ingenious;
+人物描寫 > portrayal;
+令人欽佩 > admirable;
+阿奇里斯 > aeschylus;
+孟加拉語 > bengalese;
+機械裝置 > machinery;
+斑翅山鶉 > partridge;
+不可勝數 > countless;
+總會會長 > president;
+毫無疑問 > certainty;
+澳大利亞 > australia;
+大寫鎖定 > caps\-lock;
+半工半讀 > part\-work;
+我們自己 > ourselves;
+羅徹斯特 > rochester;
+管弦樂團 > orchestra;
+白日做夢 > day\-dream;
+任何其他 > any\-other;
+巴勒斯坦 > palestine;
+在﹍旁邊 > alongside;
+先見之明 > foresight;
+隨之而後 > from\-that;
+上個星期 > last\-week;
+民主政治 > democracy;
+主管人員 > executive;
+財務秘書 > treasurer;
+生育能力 > fertility;
+共享軟體 > shareware;
+不受歡迎 > unwelcome;
+凹凸印刷 > embossing;
+撒都該人 > sadducees;
+共產主義 > communism;
+不以為然 > object\-to;
+社會主義 > socialism;
+蜜月假期 > honeymoon;
+同班同學 > classmate;
+具有主權 > sovereign;
+自動樓梯 > escalator;
+緊急事件 > emergency;
+退黑激素 > melatonin;
+不計其數 > countless;
+基督教徒 > christian;
+凹凸軋花 > embossing;
+不然的話 > otherwise;
+亞格門農 > agamemnon;
+不逞之徒 > desperado;
+置之度外 > disregard;
+憤憤不平 > indignant;
+下個星期 > next\-week;
+歷史學家 > historian;
+堅忍不拔 > fortitude;
+全場一致 > unanimous;
+羅切斯特 > rochester;
+表意文字 > ideograph;
+通貨膨脹 > inflation;
+變換設備 > converter;
+經濟學者 > economist;
+丙種射線 > gamma\-ray;
+意氣相投 > congenial;
+獲暴利者 > profiteer;
+斯洛伐克 > slovakia;
+油炸圈餅 > doughnut;
+因﹍之故 > inasmuch;
+雍容大度 > generous;
+好好兒地 > properly;
+騎士氣概 > chivalry;
+艾德蕾德 > adelaide;
+免費軟件 > freeware;
+以太網絡 > ethernet;
+桃花心木 > mahogany;
+標準規格 > standard;
+無論何時 > whenever;
+幾乎沒有 > scarcely;
+牧師之職 > ministry;
+六十四萬 > 64\-0\-000;
+蒙托羅拉 > motorola;
+人工流產 > abortion;
+喇叭水仙 > daffodil;
+國際網絡 > internet;
+無論何事 > anything;
+精力充沛 > vigorous;
+哥倫布紀 > columbus;
+左輪手槍 > revolver;
+哥倫比亞 > colombia;
+君主政治 > monarchy;
+人口稠密 > populous;
+引人注目 > striking;
+阿奇歷斯 > achilles;
+奧德修斯 > odysseus;
+坦桑尼亞 > tanzania;
+不顧一切 > reckless;
+勢如破竹 > sweeping;
+農家庭院 > farmyard;
+家庭作業 > homework;
+即將來臨 > imminent;
+音樂光碟 > music\-cd;
+五彩賓紛 > colorful;
+漢密爾頓 > hamilton;
+語言學家 > linguist;
+龍頭老大 > big\-boss;
+腓利門書 > philemon;
+電腦網絡 > internet;
+摩托羅拉 > motorola;
+巴基斯坦 > pakistan;
+巴巴多斯 > barbados;
+競選活動 > campaign;
+終端用戶 > end\-user;
+墨水瓶架 > inkstand;
+網際網路 > internet;
+無人駕駛 > unmanned;
+法利賽人 > pharisee;
+科羅拉多 > colorado;
+匪徒集團 > gangster;
+射頻噪音 > rf\-noise;
+人道主義 > humanism;
+一心一意 > intently;
+網際網絡 > internet;
+精神錯亂 > insanity;
+嘉年華會 > carnival;
+博茨瓦納 > botswana;
+壟斷販賣 > monopoly;
+保加利亞 > bulgaria;
+貴族身份 > lordship;
+肌肉發達 > muscular;
+流感疫苗 > flu\-shot;
+工作過度 > overwork;
+乙太網路 > ethernet;
+骨頭架子 > skeleton;
+愛因斯坦 > einstein;
+無論何處 > anywhere;
+公開指責 > denounce;
+歡迎光臨 > welcome;
+安提瓜島 > antigua;
+喪心病狂 > lunatic;
+格子棉布 > gingham;
+萬有引力 > gravity;
+消防隊員 > fireman;
+扳不倒兒 > tumbler;
+爬蟲動物 > reptile;
+退伍軍人 > veteran;
+外科醫生 > surgeon;
+在﹍之間 > between;
+十億位元 > gigabit;
+身體障害 > cripple;
+阿摩尼亞 > ammonia;
+蠕動前進 > wriggle;
+派給工作 > to\-task;
+薔薇花蕾 > rosebud;
+無論何人 > whoever;
+斯瓦希裡 > swahili;
+航空郵件 > airmail;
+亞特蘭大 > atlanta;
+進退兩難 > dilemma;
+不稂不莠 > useless;
+分析人士 > analyst;
+最低限度 > minimum;
+克什米爾 > kashmir;
+活動房屋 > trailer;
+什一奉獻 > tithing;
+墨西哥人 > mexican;
+加榮耀於 > glorify;
+不干不淨 > unclean;
+三位一體 > trinity;
+女用內衣 > chemise;
+公益事業 > utility;
+日常工作 > routine;
+男性親屬 > kinsman;
+貨物運輸 > freight;
+牙科醫生 > dentist;
+郡治安官 > sheriff;
+亞伯拉罕 > abraham;
+克羅地亞 > croatia;
+全神灌注 > rapture;
+專科院校 > academy;
+高速公路 > highway;
+給與資格 > qualify;
+印地安那 > indiana;
+不得而知 > unknown;
+航空公司 > airline;
+有耐久力 > durable;
+太陽黑子 > sunspot;
+希伯來書 > hebrews;
+奧林匹克 > olympic;
+亞利桑那 > arizona;
+蓋世太保 > gestapo;
+喋喋不休 > chatter;
+愛屋及烏 > love\-me;
+經濟制度 > economy;
+以馬內利 > emanuel;
+規劃人員 > planner;
+慈善機構 > charity;
+男性尊稱 > esquire;
+不三不四 > dubious;
+列王紀下 > 2\-kings;
+列王紀上 > 1\-kings;
+陸軍上校 > colonel;
+虛構小說 > fiction;
+外科手術 > surgery;
+各色各樣 > diverse;
+佛羅裡達 > florida;
+公爵夫人 > duchess;
+有好奇心 > curious;
+彼得後書 > 2\-peter;
+玻利維亞 > bolivia;
+小型櫃櫥 > cabinet;
+印像深刻 > impress;
+指導教授 > adviser;
+不知何故 > somehow;
+阿司匹林 > aspirin;
+金光閃爍 > spangle;
+互聯網絡 > network;
+奴隸制度 > slavery;
+恢復原狀 > restore;
+馬來西亞 > malasia;
+山胡桃木 > hickory;
+彼得前書 > 1\-peter;
+就寢時間 > bedtime;
+四輪馬車 > chariot;
+亞拉巴馬 > alabama;
+彈道導彈 > missile;
+有精神病 > insane;
+哺乳動物 > mammal;
+伊尼伊德 > aeneid;
+塞爾維亞 > serbia;
+使﹍豐富 > enrich;
+伊尼亞斯 > aeneas;
+驅逐出境 > deport;
+八分音符 > quaver;
+天竺牡丹 > dahlia;
+離奇有趣 > quaint;
+發嘎嘎聲 > rattle;
+超過限度 > exceed;
+不可告人 > hidden;
+力足以做 > afford;
+在﹍期間 > during;
+種族主義 > racism;
+徒步旅行 > hiking;
+旅行裝備 > outfit;
+地下鐵路 > subway;
+威士忌酒 > whisky;
+連字符號 > hyphen;
+廢除軍備 > disarm;
+顛倒過來 > invert;
+七月一號 > july\-1;
+點頭招呼 > beckon;
+伯仲叔季 > eldest;
+鼻口部分 > muzzle;
+尖聲啼哭 > squeal;
+命運註定 > ordain;
+人頭獅身 > sphinx;
+不幸之事 > mishap;
+在﹍之旁 > beside;
+約翰二書 > 2\-john;
+轟轟烈烈 > strong;
+十四行詩 > sonnet;
+二者之一 > either;
+約翰三書 > 3\-john;
+約翰一書 > 1\-john;
+美洲兀鷹 > condor;
+五分美金 > nickel;
+除了之外 > except;
+製陶工人 > potter;
+人口調查 > census;
+無論如何 > anyhow;
+出埃及記 > exodus;
+有藥癮者 > addict;
+釣魚用具 > tackle;
+比較喜歡 > prefer;
+阿多尼斯 > adonis;
+逃之夭夭 > escape;
+紫羅蘭色 > violet;
+傭人領班 > butler;
+不戰不和 > no\-war;
+蘇格蘭帽 > bonnet;
+減低速度 > retard;
+阿拉斯加 > alaska;
+使具體化 > embody;
+酒精飲料 > liquor;
+跑堂兒的 > waiter;
+使﹍能夠 > enable;
+生氣勃勃 > lively;
+無法無天 > outlaw;
+波斯尼亞 > bosnia;
+虛張聲勢 > bluff;
+未成年人 > minor;
+麵包師傅 > baker;
+感化餅乾 > wafer;
+非常害怕 > dread;
+一線微光 > gleam;
+五花八門 > myrid;
+斜紋軟呢 > tweed;
+德克薩斯 > texas;
+滿身塵埃 > dusty;
+調味肉汁 > gravy;
+標準尺寸 > gauge;
+在﹍之下 > below;
+在﹍之上 > above;
+蟲鳥叫聲 > chirp;
+動態影像 > video;
+三千五百 > 3\-500;
+示威運動 > rally;
+載貨汽車 > lorry;
+布帛菽粟 > cloth;
+神經過敏 > jumpy;
+伊斯蘭教 > islam;
+愁眉苦臉 > frown;
+吉普賽人 > gypsy;
+愛克斯光 > x\-ray;
+家庭教師 > tutor;
+露齒而笑 > grin;
+從容不迫 > calm;
+一角銀幣 > dime;
+飲食療養 > diet;
+目瞪口呆 > stun;
+擺龍門陣 > chat;
+到﹍之上 > onto;
+全體人員 > crew;
+遠程監控 > rmon;
+在﹍之中 > amid;
+小起重機 > jack;
+輕而易舉 > easy;
+金屬薄片 > foil;
+頭腦清楚 > sane;
+在水步行 > wade;
+出租汽車 > taxi;
+高爾夫球 > golf;
+電話鈴聲 > buzz;
+液晶顯示 > lcd;
+烏合之眾 > mob;
+索具裝置 > rig;
+公共汽車 > bus;
+莫名其妙 > odd;
+圓形木材 > log;
+不分勝負 > tie;
+衣服縫邊 > hem;
+圓形麵包 > bun;
+杜松子酒 > gin;
+在﹍之內 > in;
+直通車 > \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 > dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+綺色佳 > ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+雷峰塔 > leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+牡丹卡 > peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+三岔口 > at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+李自成 > name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+江八點 > \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 > tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+吃大戶 > mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+李時珍 > li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+禽流感 > \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+蒙代爾 > \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 > \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+維爾容 > \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 > name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+鼻韻母 > \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+金永南 > kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+斗批改 > struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+端午節 > the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+白茫茫 > \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+斯佩羅 > \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+太極拳 > a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+會不會 > \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+抱佛腳 > clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+蛋花湯 > clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+金山寺 > jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 > twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+飛虎隊 > flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+暗花兒 > a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+拔罐子 > cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+元宵節 > the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+個體戶 > a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+景德鎮 > jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+長城卡 > great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 > \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 > name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 > \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+包干制 > a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+顏真卿 > name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 > \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+白冰冰 > pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+伯恩斯 > \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+尼赫魯 > \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+撥浪鼓 > a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+北大荒 > the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+十五大 > 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 > lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+跑江湖 > to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 > sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+林豐正 > lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+董建華 > tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+南京路 > nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+八仙桌 > old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+塞拉凡 > \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 > kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+范斯坦 > \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+液態水 > liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+解放軍 > people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+趙紫陽 > zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+互通性 > interoperability\-\(of\-communications\-equipment\);
+全斗煥 > chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+探路者 > pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+崔亞琳 > charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+專案組 > special\-\(legal\|judicial\)\-investigations\-group;
+長沙灣 > cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+正常化 > normalization\-\(of\-diplomatic\-relations\,\-etc\);
+謝裡夫 > \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+吳作棟 > goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+工人黨 > workers''\-party\-\(singapore\-opposition\-party\);
+斯佩林 > spelling\-\(eg\,\-spelling\-entertainment\-group\);
+盧泰愚 > roh\-tae\-woo\-\(former\-south\-korean\-president\);
+齊白石 > name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+商務部 > commerce\-department\-\(of\-the\-us\-government\);
+老伴兒 > \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+梆子腔 > a\-general\-term\-for\-local\-operas\-in\-shangxi;
+梅蘭芳 > name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+行政院 > executive\-yuan\-\(government\-body\-in\-taiwan\);
+杰佛茲 > \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+羅布泊 > lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 > dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+白花蛇 > long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+眾議員 > member\-of\-the\-us\-house\-of\-representatives;
+邁科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+報告會 > public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 > \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+麥科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+神女峰 > name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+白曉燕 > pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+金日成 > kim\-il\-sung\-\(former\-north\-korean\-leader\);
+太極劍 > a\-kind\-of\-traditional\-chinese\-sword\-play;
+司法部 > justice\-deparment\-\(of\-the\-us\-government\);
+庫納南 > \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+黃建南 > john\-huang\-\(democratic\-party\-fundraiser\);
+黃岩島 > huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 > official\-\(government\-operated\)\-newspaper;
+入學率 > percentage\-of\-children\-who\-enter\-school;
+茅臺酒 > maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+王羲之 > name\-of\-a\-person\,\-a\-famous\-calligrapher;
+邊角科 > leftover\-bits\-and\-pieces\-\(of\-industrial;
+阿昌族 > the\-achang\-nationality\-living\-in\-yunnan;
+佩洛西 > \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+吐魯番 > the\-turfan\-basin\,\-in\-xinjiang\-province;
+半脫產 > partly\-released\-from\-productive\-labour;
+總書記 > general\-secretary\-\(of\-communist\-party\);
+沈國放 > chinese\-foreign\-ministry\-spokesperson;
+穆桂英 > mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+孫女兒 > granddaughter\-\(daughter\-of\-one''s\-son\);
+尚慕杰 > james\-sasser\-\(us\-ambassador\-to\-china\);
+塞爾南 > \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+年畫兒 > new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 > \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+胡志明 > ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+徐悲鴻 > name\-of\-a\-famous\-painter\,\-xu\-beihong;
+花木蘭 > hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 > not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+發了言 > \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+不自量 > not\-take\-a\-proper\-measure\-of\-oneself;
+抄後路 > to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 > annalistic\-style\-\(in\-historiography\);
+家鄉雞 > ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 > john\-chang\-\(taiwan\-foreign\-minister\);
+來不及 > there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+死不了 > portulaca\-sundial\-\(a\-type\-of\-plant\);
+迎春花 > winter\-jasmine\,\-jasminum\-nudiflorum;
+主人翁 > master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+哈密瓜 > hami\-melon\-\(a\-variety\-of\-muskmelon\);
+貿易額 > volume\-of\-trade\-\(between\-countries\);
+總動員 > general\-mobilization\-\(for\-war\,\-etc\);
+崩龍族 > the\-benglong\-\(penglung\)\-nationality;
+霸王鞭 > a\-rattle\-stick\-used\-in\-folk\-dancing;
+白殭蠶 > the\-larva\-of\-silkworm\-with\-batrytis;
+不失為 > can\-still\-be\-considered\-\(to\-be\.\.\.\);
+最惠國 > most\-favored\-nation\-\(trade\-status\);
+基金會 > a\-foundation\-\(ie\,\-an\-organization\);
+打錯了 > \"you\-have\-dialed\-the\-wrong\-number\";
+病包兒 > a\-person\-who\-is\-always\-falling\-ill;
+拉莫斯 > \(philippine\-president\-fidel\)\-ramos;
+胡志強 > jason\-hu\-\(taiwan\-foreign\-minister\);
+幫倒忙 > be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 > club\-\(ie\,\-a\-group\-or\-organization\);
+勞動節 > international\-labor\-day\-\(may\-day\);
+抱粗腿 > latch\-on\-to\-the\-rich\-and\-powerful;
+金正日 > kim\-jong\-il\-\(north\-korean\-leader\);
+不摸頭 > not\-acquainted\-with\-the\-situation;
+魏京生 > wei\-jingsheng\-\(chinese\-dissident\);
+吃不上 > be\-unable\-to\-get\-something\-to\-eat;
+檢察官 > the\-prosecution\-\(in\-a\-court\-case\);
+垃圾車 > garbage\-truck\-\(or\-other\-vehicle\);
+布法羅 > buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 > the\-eight\-strategic\-nerve\-points;
+開普敦 > cape\-town\-\(city\-in\-south\-africa\);
+見不得 > may\-not\-be\-seen\-by\-or\-exposed\-to;
+創辦人 > founder\-\(of\-an\-institution\,\-etc\);
+逼供信 > obtain\-confessions\-by\-compulsion;
+負責人 > person\-in\-charge\-\(of\-something\);
+十三經 > the\-thirteen\-confucian\-classics;
+病蟲害 > plant\-diseases\-and\-insect\-pests;
+吃不服 > not\-be\-accustomed\-to\-eating\-sth;
+馬尼拉 > manila\-\(capital\-of\-philippines\);
+應該說 > it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 > have\-no\-choice\-or\-option\-but\-to;
+北伐軍 > the\-northern\-expeditionary\-army;
+可移植 > portable\-\(programming\-language\);
+經濟學 > economics\-\(as\-a\-field\-of\-study\);
+愛面子 > be\-concerned\-about\-face\-saving;
+墨爾缽 > melbourne\-\(an\-australian\-city\);
+索杰納 > sojourner\-\(martian\-land\-rover\);
+談得來 > able\-to\-talk\-to\-or\-get\-on\-with;
+班主任 > a\-teacher\-in\-charge\-of\-a\-class;
+導航員 > navigator\-\(on\-a\-plane\-or\-boat\);
+眾議院 > house\-of\-representatives\-\(usa\);
+當事人 > persons\-involved\-or\-implicated;
+紅綠燈 > \(red\-and\-green\)\-traffic\-light;
+重複節 > repeated\-segment\-\(networking\);
+兵工廠 > munitions\-or\-ordnance\-factory;
+半身像 > half\-length\-photo\-or\-portrait;
+發電量 > \(generated\)\-electrical\-energy;
+保安族 > the\-baoan\-\(paoan\)\-nationality;
+江澤民 > jiang\-zemin\-\(chinese\-premier\);
+年夜飯 > new\-year''s\-eve\-family\-dinner;
+李登輝 > lee\-teng\-hui\-\(taiwan\-leader\);
+大自然 > nature\-\(as\-in\-mother\-nature\);
+立方米 > cubic\-meter\-\(unit\-of\-volume\);
+吃不消 > be\-unable\-to\-stand\-\(exertion;
+投票站 > polling\-station\-\(for\-a\-vote\);
+得票率 > percentage\-of\-votes\-obtained;
+吃不住 > be\-unable\-to\-bear\-or\-support;
+自治區 > autonomous\-region\-\(in\-china\);
+張純如 > \(american\-author\)\-iris\-chang;
+班務會 > a\-routine\-meeting\-of\-a\-squad;
+新德裡 > new\-delhi\-\(capital\-of\-india\);
+反對黨 > opposition\-\(political\)\-party;
+說明書 > synopsis\-\(of\-a\-play\-or\-film\);
+叛亂罪 > the\-crime\-of\-armed\-rebellion;
+差得多 > fall\-short\-by\-a\-large\-amount;
+台灣話 > taiwanese\-chinese\-\(language\);
+葉利欽 > \(russian\-president\)\-yeltsin;
+黃浦江 > huangpu\-river\-\(in\-shanghai\);
+背包袱 > have\-a\-weight\-on\-one''s\-mind;
+報戶口 > apply\-for\-a\-resident\-permit;
+國際級 > \(at\-an\)\-international\-level;
+吃不來 > not\-be\-fond\-of\-certain\-food;
+據報導 > according\-to\-\(news\)\-reports;
+病毒學 > virology\-\(study\-of\-viruses\);
+而不需 > without\-needing\-\(to\-so\-sth\);
+交換機 > switch\-\(telecommunications\);
+大陸話 > mainland\-chinese\-\(language\);
+交換器 > \(telecom\-or\-network\)\-switch;
+通訊社 > a\-news\-service\-\(eg\,\-xinhua\);
+愛好者 > lover\-\(of\-art\,\-sports\,\-etc\);
+公安部 > ministry\-of\-public\-security;
+抱不平 > be\-outraged\-by\-an\-injustice;
+男子漢 > man\-\(i\.e\.\-manly\,\-masculine\);
+巴兒狗 > pekingese\-\(a\-breed\-of\-dog\);
+存車處 > parking\-lot\-\(for\-bicycles\);
+鼻牛兒 > hardened\-mucus\-in\-nostrils;
+桃花運 > luck\-with\-the\-opposite\-sex;
+弗塞奇 > versace\-\(fashion\-designer\);
+普通話 > mandarin\-\(common\-language\);
+幾年來 > for\-the\-past\-several\-years;
+頤和園 > summer\-palace\-\(in\-beijing\);
+馬來人 > malaysian\-person\-or\-people;
+底特律 > detroit\-\(a\-city\-in\-the\-us\);
+情況下 > under\-\(this\)\-circumstances;
+溫哥華 > vancouver\-\(city\-in\-canada\);
+白頭翁 > root\-of\-chinese\-pulsatilla;
+中文版 > chinese\-\(language\)\-version;
+高中生 > senior\-high\-school\-student;
+板羽球 > battledore\-and\-shuttlecock;
+參兩院 > both\-houses\-of\-us\-congress;
+癟螺痧 > cholera\-\(with\-dehydration\);
+透通性 > transparency\-\(networking\);
+營業額 > sum\-or\-volume\-of\-business;
+矮個兒 > a\-person\-of\-short\-stature;
+核大國 > a\-nuclear\-power\-\(country\);
+希臘語 > \(modern\)\-greek\-\(language\);
+時間內 > within\-\(a\-period\-of\-time\);
+下工夫 > to\-put\-in\-time\-and\-energy;
+日本人 > japanese\-person\-or\-people;
+無限期 > unlimited\-\(time\)\-duration;
+帕蘭卡 > palanka\-\(a\-personal\-name\);
+人民幣 > chinese\-unit\-of\-currency;
+流氓罪 > the\-crime\-of\-hooliganism;
+錄音機 > \(tape\)\-recording\-machine;
+代之以 > \(has\-been\)\-replaced\-with;
+變戲法 > perform\-conjuring\-tricks;
+發行額 > \(periodical\)\-circulation;
+十三日 > thirtieth\-day\-of\-a\-month;
+下半身 > lower\-half\-of\-one''s\-body;
+印歐語 > indo\-european\-\(language\);
+內政部 > ministry\-of\-the\-interior;
+印歐文 > indo\-european\-\(language\);
+無黨派 > politically\-unaffiliated;
+變電站 > \(transformer\)\-substation;
+木乃伊 > mummy\-\(preserved\-corpse\);
+外交部 > foreign\-affairs\-ministry;
+遲浩田 > chinese\-defense\-minister;
+北溫帶 > the\-north\-temperate\-zone;
+打電話 > to\-make\-a\-telephone\-call;
+止痛法 > method\-of\-relieving\-pain;
+北半球 > the\-northern\-hemisphere;
+雙絞線 > unshielded\-twisted\-pait;
+包承制 > responsible\-crew\-system;
+播放機 > player\-\(e\.g\.\-cd\-player\);
+據統計 > according\-to\-statistics;
+留學生 > student\-studying\-abroad;
+多年來 > for\-the\-past\-many\-years;
+中秋節 > the\-mid\-autumn\-festival;
+馬路口 > intersection\-\(of\-roads\);
+戴維斯 > davis\-\(english\-surname\);
+紅樓夢 > a\-dream\-of\-red\-mansions;
+過不去 > make\-life\-difficult\-for;
+情報處 > source\-\(of\-information\);
+腐敗罪 > the\-crime\-of\-corruption;
+白蛇傳 > tale\-of\-the\-white\-snake;
+半成品 > semi\-manufactured\-goods;
+奔頭兒 > something\-to\-strive\-for;
+中轉站 > hub\-\(network\-equipment\);
+香港人 > hong\-kong\-person\|people;
+慕道友 > religious\-investigator;
+剝採比 > stripping\-to\-ore\-ratio;
+目的地 > destination\-\(location\);
+國務院 > state\-department\-\(usa\);
+十五億 > one\-and\-a\-half\-billion;
+紅燒肉 > red\-cooked\-\(pork\)\-meat;
+公安局 > public\-security\-bureau;
+發病率 > incidence\-of\-a\-disease;
+疑問句 > interrogative\-sentance;
+此一時 > that\-was\-one\-situation;
+不好惹 > not\-to\-be\-trifled\-with;
+不得已 > act\-against\-one''s\-will;
+上半年 > first\-half\-\(of\-a\-year\);
+不要臉 > have\-no\-sense\-of\-shame;
+背地風 > behind\-somebody''s\-back;
+近年來 > for\-the\-past\-few\-years;
+其自身 > one''s\-own\-\(respective\);
+火焰山 > the\-mountain\-of\-flames;
+工作站 > \(computer\)\-workstation;
+印歐人 > indo\-european\-\(person\);
+坦克車 > tank\-\(armored\-vehicle\);
+不像樣 > in\-no\-shape\-to\-be\-seen;
+變分法 > calculus\-of\-variations;
+西遊記 > pilgrimage\-to\-the\-west;
+畢業生 > graduate\-\(of\-a\-school\);
+背黑鍋 > to\-be\-made\-a\-scapegoat;
+靈敏度 > \(level\-of\)\-sensitivity;
+彼一時 > that\-was\-one\-situation;
+軟硬件 > software\-and\-hardware;
+熱門貨 > goods\-in\-great\-demand;
+通信量 > communications\-volume;
+祝賀詞 > congratulatory\-speech;
+幾十年 > several\-tens\-of\-years;
+比方說 > to\-make\-an\-analogy\.\.\.;
+麥芽糖 > maltose\-\(sweet\-syrup\);
+美聯社 > associated\-press\-\(ap\);
+推薦信 > recommendation\-letter;
+幾天來 > for\-the\-past\-few\-days;
+投了票 > past\-tense\-of\-to\-vote;
+肯尼迪 > kennedy\-\(proper\-name\);
+保護區 > conservation\-district;
+奧德賽 > the\-odyssey\,\-by\-homer;
+越南語 > vietnamese\-\(language\);
+四年前 > four\-years\-previously;
+製造商 > manufacturing\-company;
+反革命 > counter\-revolutionary;
+老兩口 > an\-old\-married\-couple;
+拜把子 > become\-sworn\-brothers;
+北寒帶 > the\-north\-frigid\-zone;
+八路軍 > the\-eighth\-route\-army;
+南北極 > south\-and\-north\-poles;
+董事長 > chairman\-of\-the\-board;
+不行了 > on\-the\-point\-of\-death;
+卡西尼 > cassini\-\(proper\-name\);
+光磁碟 > magneto\-optical\-disk;
+博覽會 > \(international\)\-fair;
+一般性 > \(in\)\-general\-\(terms\);
+逋逃藪 > refuge\-for\-fugitives;
+白眼珠 > the\-white\-of\-the\-eye;
+捕蟲葉 > insect\-catching\-leaf;
+不雅觀 > offensive\-to\-the\-eye;
+陳述句 > declarative\-sentence;
+這個月 > this\-\(current\)\-month;
+一清早 > early\-in\-the\-morning;
+倍頻器 > frequency\-multiplier;
+領導權 > leadership\-authority;
+紀念日 > day\-of\-commemoration;
+白棉紙 > stencil\-tissue\-paper;
+挪窩兒 > to\-move\-\(to\-a\-house\);
+德國人 > german\-person\|people;
+大清早 > early\-in\-the\-morning;
+百事通 > knowledgeable\-person;
+不死心 > unwilling\-to\-give\-up;
+礦泉水 > mineral\-spring\-water;
+吃不下 > not\-feel\-like\-eating;
+萬維網 > world\-wide\-web\-\(www\);
+實體層 > physical\-layer\-\(osi\);
+現階段 > at\-the\-present\-stage;
+叛國罪 > the\-crime\-of\-treason;
+錦標賽 > championship\-contest;
+競爭力 > competitive\-strength;
+運動會 > a\-sports\-competition;
+跑龍套 > to\-play\-a\-small\-role;
+德雷爾 > \(june\-teufel\)\-dreyer;
+財政部 > ministry\-of\-finance;
+廣告商 > advertising\-company;
+慰安婦 > comfort\-woman\|women;
+折射率 > index\-of\-refraction;
+年代初 > beginning\-of\-an\-age;
+防禦性 > defensive\-\(weapons\);
+打橫炮 > speak\-unwarrantedly;
+發言權 > the\-right\-of\-speech;
+年之久 > period\-of\-\.\.\.\-years;
+不中意 > not\-to\-one''s\-liking;
+百分制 > hundred\-mark\-system;
+分析家 > \(political\)\-analyst;
+立法會 > legislative\-council;
+引力場 > gravitational\-field;
+消耗量 > rate\-of\-consumption;
+核電站 > nuclear\-power\-plant;
+表面化 > come\-to\-the\-surface;
+電話機 > telephone\-equipment;
+總統府 > presidential\-palace;
+橋接器 > bridge\-\(networking\);
+馬來文 > malasian\-\(language\);
+不得了 > desperately\-serious;
+板梁橋 > plate\-girder\-bridge;
+栽跟頭 > to\-suffer\-a\-setback;
+核工程 > nuclear\-engineering;
+安理會 > un\-security\-council;
+擺門面 > keep\-up\-appearances;
+路透社 > reuters\-news\-agency;
+科學院 > academy\-of\-sciences;
+步進制 > step\-by\-step\-system;
+前蘇聯 > former\-soviet\-union;
+不在意 > pay\-no\-attention\-to;
+外孫女 > daughter''s\-daughter;
+冰醋酸 > glacial\-acetic\-acid;
+消炎藥 > antibiotic\-medicine;
+委員長 > head\-of\-a\-committee;
+情報局 > intelligence\-agency;
+包身工 > indentured\-labourer;
+決議案 > \(pass\-a\)\-resolution;
+北京人 > person\-from\-beijing;
+負責任 > responsibility\-for;
+中山裝 > chinese\-tunic\-suit;
+緬甸語 > burmese\-\(language\);
+政治犯 > political\-prisoner;
+年以來 > since\-the\-year\-\.\.\.;
+新華社 > xinhua\-news\-agency;
+不中用 > unfit\-for\-anything;
+進一步 > \(one\-step\)\-further;
+提供商 > provider\-\(company\);
+原蘇聯 > fomer\-soviet\-union;
+天安門 > tiananmen\-\(square\);
+不受理 > reject\-a\-complaint;
+發達國 > developing\-country;
+跑警報 > to\-run\-for\-shelter;
+白開水 > plain\-boiled\-water;
+招待會 > \(press\)\-conference;
+懷俄明 > wyoming\-\(us\-state\);
+卡拉奇 > karachi\-\(pakistan\);
+半規管 > semicircular\-canal;
+馬來語 > malaysian\-language;
+比不上 > can''t\-compare\-with;
+國防部 > defense\-department;
+趕不上 > can''t\-keep\-up\-with;
+拿主意 > to\-make\-a\-decision;
+常委會 > standing\-committee;
+大學生 > university\-student;
+瀏覽器 > browser\-\(software\);
+世紀末 > end\-of\-the\-century;
+擁護者 > supporter\-\(person\);
+國務卿 > secretary\-of\-state;
+半輩子 > half\-of\-a\-lifetime;
+站管理 > station\-management;
+芬蘭語 > finnish\-\(language\);
+變法兒 > try\-different\-ways;
+海空軍 > navy\-and\-air\-force;
+細菌戰 > biological\-warfare;
+瑞典語 > swedish\-\(language\);
+涉嫌人 > \(criminal\)\-suspect;
+併捲機 > ribbon\-lap\-machine;
+別動隊 > special\-detachment;
+研究所 > research\-institute;
+年輕化 > make\-more\-youthful;
+加速器 > accelerator\-\(comp\);
+不等號 > sign\-of\-inequality;
+西半球 > western\-hemisphere;
+核技術 > nuclear\-technology;
+報務員 > telegraph\-operator;
+光波長 > optical\-wavelength;
+喉擦音 > guttural\-fricative;
+八級工 > eight\-grade\-worker;
+佛蒙特 > vermont\-\[us\-state\];
+管理站 > management\-station;
+說不定 > can''t\-say\-for\-sure;
+波斯語 > bosnian\-\(language\);
+儘可能 > as\-far\-as\-possible;
+包承組 > \(responsible\)\-crew;
+百葉箱 > thermometer\-screen;
+避雷器 > lightning\-arrester;
+戰鬥機 > fighter\-\(aircraft\);
+顯示器 > monitor\-\(computer\);
+必修課 > a\-required\-course;
+僅次于 > second\-only\-to\.\.\.;
+朝鮮語 > korean\-\(language\);
+建築業 > building\-industry;
+麥克維 > \(timothy\)\-mcveigh;
+應用層 > application\-layer;
+桌別林 > \(charlie\)\-chaplin;
+蓋爾語 > gaelic\-\(language\);
+無所謂 > to\-be\-indifferent;
+機器人 > mechanical\-person;
+廣域網 > wide\-area\-network;
+維持費 > maintenance\-costs;
+板擦兒 > blackboard\-eraser;
+同性戀 > homosexual\-\(love\);
+電話網 > telephone\-network;
+性騷擾 > sexual\-harassment;
+橫斷物 > transverse\-object;
+白屈菜 > greater\-celandine;
+傳輸率 > transmission\-rate;
+伺服器 > server\-\(computer\);
+服務器 > server\-\(computer\);
+國際法 > international\-law;
+侵截者 > \(computer\)\-hacker;
+初學者 > beginning\-student;
+西王母 > name\-of\-a\-goddess;
+在頭版 > on\-the\-front\-page;
+波蘭語 > polish\-\(language\);
+轟炸機 > bomber\-\(aircraft\);
+醫學家 > medical\-scientist;
+華盛頓 > washington\-\(d\.c\.\);
+丟飯碗 > to\-lose\-one''s\-job;
+比較新 > comparatively\-new;
+電信號 > electrical\-signal;
+秘書長 > secretary\-general;
+歐洲人 > european\-\(person\);
+衛生部 > health\-department;
+太平洋 > the\-pacific\-ocean;
+原因是 > the\-reason\-is\-\.\.\.;
+一年半 > a\-year\-and\-a\-half;
+不甘心 > not\-reconciled\-to;
+客戶機 > client\-\(computer\);
+失業率 > unemployment\-rate;
+警察局 > police\-department;
+歸心者 > religious\-convert;
+沒關係 > it\-doesn''t\-matter;
+包園兒 > buy\-the\-whole\-lot;
+一身汗 > sweating\-all\-over;
+白細胞 > white\-blood\-cell;
+性關係 > sexual\-relations;
+殯儀館 > the\-undertaker''s;
+研討會 > discussion\-forum;
+資料量 > quantity\-of\-data;
+編輯室 > editorial\-office;
+拉丁語 > latin\-\(language\);
+適配層 > adaptation\-layer;
+出風頭 > to\-create\-a\-stir;
+越野車 > off\-road\-vehical;
+適配器 > adapter\-\(device\);
+副主席 > vice\-chairperson;
+捷克語 > czech\-\(language\);
+筆底下 > ability\-to\-write;
+核原料 > nuclear\-material;
+白血球 > white\-blood\-cell;
+不爭氣 > be\-disappointing;
+北冰洋 > the\-arctic\-ocean;
+又來了 > here\-we\-go\-again;
+十多億 > over\-one\-billion;
+一下子 > in\-a\-short\-while;
+核設施 > nuclear\-facility;
+非政府 > non\-governmental;
+主幹線 > backbone\-\(cable\);
+電視機 > television\-\(set\);
+流行病 > epidemic\-disease;
+信用證 > letter\-of\-credit;
+學術界 > academic\-circles;
+衛星城 > \"satellite\"\-town;
+的一種 > is\-one\-\(kind\-of\);
+曼德拉 > \(nelson\)\-mandela;
+印地語 > hindi\-\(language\);
+工業化 > to\-industrialize;
+記者會 > press\-conference;
+出版社 > publishing\-house;
+沖繩島 > okinawa\-\(island\);
+民主黨 > democratic\-party;
+電視劇 > tv\-drama\-program;
+輻射波 > radiation\-\(wave\);
+商業化 > to\-commercialize;
+電腦網 > computer\-network;
+高性能 > high\-performance;
+開幕式 > opening\-ceremony;
+實習生 > intern\-\(student\);
+國賓館 > state\-guesthouse;
+不至於 > cannot\-go\-so\-far;
+百分點 > percentage\-point;
+功能集 > function\-library;
+化學戰 > chemical\-warfare;
+大多數 > \(great\)\-majority;
+菏蘭語 > dutch\-\(language\);
+一年多 > more\-than\-a\-year;
+共和黨 > republican\-party;
+脖頸兒 > back\-of\-the\-neck;
+大無畏 > utterly\-fearless;
+超高速 > ultra\-high\-speed;
+性接觸 > sexual\-encounter;
+拿手菜 > specialty\-\(dish\);
+鼠標器 > mouse\-\(computer\);
+互操性 > interoperability;
+功能群 > functional\-group;
+一輩子 > \(for\)\-a\-lifetime;
+高效率 > high\-efficiency;
+前不久 > not\-long\-before;
+生產隊 > production\-team;
+用戶線 > subscriber\-line;
+美國人 > american\-person;
+看上去 > it\-would\-appear;
+幾十億 > several\-billion;
+不待說 > needless\-to\-say;
+創記錄 > to\-set\-a\-record;
+不名數 > abstract\-number;
+數十億 > several\-billion;
+總經理 > general\-manager;
+數百萬 > several\-million;
+拼起來 > to\-put\-together;
+米粉肉 > rice\-flour\-meat;
+高技術 > high\-technology;
+閉音節 > closed\-syllable;
+虛電路 > virtual\-circuit;
+從去年 > since\-last\-year;
+菲律賓 > the\-philippines;
+本族語 > native\-language;
+絆腳石 > stumbling\-block;
+感染者 > infected\-person;
+多樣化 > diversification;
+網管員 > network\-manager;
+不干涉 > noninterference;
+核武庫 > nuclear\-arsenal;
+中美洲 > central\-america;
+天主教 > catholic\-church;
+金裡奇 > \(newt\)\-gingrich;
+注意看 > watch\-carefully;
+共產黨 > communist\-party;
+不見得 > not\-necessarily;
+賀年片 > new\-year''s\-card;
+標準化 > standardization;
+使滿意 > to\-make\-content;
+不鏽鋼 > stainless\-steel;
+印度人 > indian\-\(person\);
+奧運村 > olympic\-village;
+暗適應 > dark\-adaptation;
+老百姓 > ordinary\-people;
+夫妻店 > family\-run\-shop;
+數字網 > digital\-network;
+兒化韻 > retroflex\-final;
+有聯繫 > to\-be\-connected;
+審判長 > presiding\-judge;
+高效能 > high\-efficiency;
+盜版者 > software\-pirate;
+大部份 > \(in\)\-large\-part;
+冷氣機 > air\-conditioner;
+伊甸園 > garden\-of\-eden;
+成員國 > member\-country;
+釣魚臺 > diaoyu\-islands;
+複韻母 > compound\-final;
+幀太長 > oversize\-frame;
+伴生氣 > associated\-gas;
+物理層 > physical\-layer;
+聯合國 > united\-nations;
+英國人 > british\-person;
+白熱化 > turn\-white\-hot;
+十一月 > eleventh\-month;
+原子核 > atomic\-nucleus;
+把兄弟 > sworn\-brothers;
+北斗星 > the\-big\-dipper;
+開玩笑 > to\-play\-a\-joke;
+審判席 > judgement\-seat;
+白粉病 > powdery\-mildew;
+釣魚島 > diaoyu\-islands;
+古希臘 > ancient\-greece;
+中國人 > chinese\-person;
+監督人 > superintendent;
+順序數 > ordinal\-number;
+電話線 > telephone\-line;
+就是說 > in\-other\-words;
+教育界 > academic\-world;
+不敢當 > you\-flatter\-me;
+副總統 > vice\-president;
+甚至於 > so\-much\-\(that\);
+不平衡 > disequilibrium;
+東南亞 > southeast\-asia;
+採收率 > recovery\-ratio;
+自由化 > liberalization;
+不適用 > not\-applicable;
+簡單化 > simplification;
+鹽湖城 > salt\-lake\-city;
+血製品 > blood\-products;
+凹面鏡 > concave\-mirror;
+開心果 > pistachio\-nuts;
+世界語 > world\-language;
+行星際 > interplanetary;
+中心語 > qualified\-word;
+參謀長 > chief\-of\-staff;
+錄像機 > video\-recorder;
+光信號 > optical\-signal;
+核武器 > nuclear\-weapon;
+達不到 > cannot\-achieve;
+克林頓 > \(bill\)\-clinton;
+聖誕節 > christmas\-time;
+白令海 > the\-bering\-sea;
+摩門經 > book\-of\-mormon;
+尋開心 > to\-make\-fun\-of;
+犯不著 > not\-worthwhile;
+不用謝 > you''re\-welcome;
+半自動 > semi\-automatic;
+內蒙古 > inner\-mongolia;
+退休金 > retirement\-pay;
+留言簿 > visitor''s\-book;
+死亡率 > mortality\-rate;
+哈該書 > book\-of\-haggai;
+擺攤子 > set\-up\-a\-stall;
+瑞士人 > swiss\-\(person\);
+差不多 > almost\,\-nearly;
+括弧裡 > in\-parentheses;
+信號臺 > signal\-station;
+世界上 > \(of\-the\)\-world;
+圓珠筆 > ball\-point\-pen;
+跑腿兒 > to\-run\-errands;
+波狀熱 > undulant\-fever;
+知識庫 > knowledge\-base;
+電信局 > central\-office;
+西南亞 > southwest\-asia;
+撥號盤 > telephone\-dial;
+後兩者 > the\-latter\-two;
+廠禮拜 > day\-off\-\(work\);
+兩百億 > twenty\-billion;
+無連接 > connectionless;
+猜謎兒 > guess\-a\-riddle;
+半以上 > more\-than\-half;
+不客氣 > you''re\-welcome;
+美差事 > a\-terrific\-job;
+諾貝爾 > nobel\-\(prize\);
+保證金 > earnest\-money;
+掛號證 > register\-card;
+原子能 > atomic\-energy;
+紀念館 > memorial\-hall;
+單韻母 > simple\-finals;
+有可能 > it''s\-possible;
+未提及 > not\-mentioned;
+本生燈 > bunsen\-burner;
+心臟病 > heart\-disease;
+十五年 > fifteen\-years;
+鄧小平 > deng\-xiaoping;
+那鴻書 > book\-of\-nahum;
+網絡層 > network\-layer;
+審判欄 > judgement\-bar;
+白花花 > shining\-white;
+建築學 > architectural;
+中國式 > chinese\-style;
+半失業 > semi\-employed;
+表決權 > right\-to\-vote;
+空間站 > space\-station;
+大公司 > large\-company;
+大容量 > high\-capacity;
+楊百翰 > brigham\-young;
+大問題 > great\-problem;
+光功率 > optical\-power;
+權威性 > authoritative;
+女朋友 > female\-friend;
+不周延 > undistributed;
+摁釦兒 > snap\-fastener;
+白皮松 > lacebark\-pine;
+存儲器 > memory\-\(unit\);
+彌迦書 > book\-of\-micah;
+現代化 > modernization;
+主禱文 > lord''s\-prayer;
+好幾年 > several\-years;
+售票處 > ticket\-office;
+六點半 > half\-past\-six;
+無意識 > unconsciously;
+推動力 > driving\-force;
+避風處 > lee\,\-windstop;
+使用量 > volume\-of\-use;
+半導體 > semiconductor;
+駁殼槍 > mauser\-pistol;
+不方便 > inconvenience;
+沒經驗 > inexperienced;
+主日學 > sunday\-school;
+有助于 > contribute\-to;
+有權威 > authoritative;
+三十億 > three\-billion;
+不凍港 > ice\-free\-port;
+步話機 > walkie\-talkie;
+集線器 > hub\-\(network\);
+不舒適 > uncomfortable;
+兩千年 > the\-year\-2000;
+標本蟲 > spider\-beetle;
+進出口 > import\|export;
+向西南 > southwestward;
+售票員 > ticket\-seller;
+售票口 > ticket\-window;
+安定化 > stabilization;
+交換端 > switched\-port;
+不相干 > be\-irrelevant;
+天曉得 > heaven\-knows\!;
+報話機 > walkie\-talkie;
+同盟國 > confederation;
+奧運會 > olympic\-games;
+在未來 > in\-the\-future;
+南美洲 > south\-america;
+七百萬 > seven\-million;
+有良心 > conscientious;
+鼻飼法 > nasal\-feeding;
+約拿書 > book\-of\-jonah;
+步行蟲 > ground\-beetle;
+便步走 > march\-at\-ease;
+連接至 > to\-connect\-to;
+鳶尾花 > iris\-\(flower\);
+半官方 > semi\-official;
+兼容性 > compatibility;
+解壓縮 > to\-decompress;
+採棉機 > cotton\-picker;
+芭蕉扇 > palm\-leaf\-fan;
+公元前 > before\-christ;
+波美度 > baume\-degrees;
+半復賽 > eighth\-finals;
+邊界線 > boundary\-line;
+北美洲 > north\-america;
+核能源 > nuclear\-power;
+支持率 > support\-level;
+試一試 > to\-have\-a\-try;
+越來越 > more\-and\-more;
+下至上 > bottom\-to\-top;
+找不到 > couldn''t\-find;
+很遺憾 > unfortunately;
+萬事達 > master\(card\);
+約珥書 > book\-of\-joel;
+賠償金 > compensation;
+示威者 > demonstrator;
+毛主席 > chairman\-mao;
+建築物 > \(a\)\-building;
+閱覽室 > reading\-room;
+不名譽 > disreputable;
+機械碼 > machine\-code;
+不成功 > unsuccessful;
+水滸傳 > water\-margin;
+不重視 > indifference;
+十九歲 > 19\-years\-old;
+半文盲 > semiliterate;
+丙烯酸 > acrylic\-acid;
+半熟練 > semi\-skilled;
+吃不開 > be\-unpopular;
+不合理 > unreasonable;
+不愉快 > disagreeable;
+養雞場 > chicken\-farm;
+膝上型 > laptop\-\(adj\);
+實際性 > practicality;
+十一年 > eleven\-years;
+相似性 > ressemblance;
+非同步 > asynchronous;
+傳道書 > ecclesiastes;
+發言人 > spokesperson;
+集中器 > concentrator;
+感嘆詞 > interjection;
+足球迷 > football\-fan;
+那樣的 > that\-kind\-of;
+半邊天 > half\-the\-sky;
+葡萄酒 > \(grape\)\-wine;
+農作物 > \(farm\)\-crops;
+四十多 > more\-than\-40;
+證實禮 > confirmation;
+宇航局 > space\-agency;
+去國外 > to\-go\-abroad;
+第二位 > second\-place;
+同時代 > contemporary;
+副總理 > vice\-premier;
+路得記 > book\-of\-ruth;
+多工化 > to\-multiplex;
+三合一 > three\-in\-one;
+四百萬 > four\-million;
+高質量 > high\-quality;
+夢游症 > to\-sleepwalk;
+不結盟 > nonalignment;
+八級風 > force\-8\-wind;
+幼兒園 > kindergarten;
+桔子水 > orange\-juice;
+創造性 > creativeness;
+研究者 > investigator;
+周總理 > premier\-zhou;
+執政黨 > ruling\-party;
+母親節 > mother''s\-day;
+一下兒 > a\-little\-bit;
+不像話 > unreasonable;
+複製品 > reproduction;
+司法權 > jurisdiction;
+佔便宜 > adventageous;
+鼻中隔 > nasal\-septum;
+新聞處 > news\-service;
+運動鞋 > sports\-shoes;
+核轟炸 > nuclear\-bomb;
+轉賬卡 > a\-debit\-card;
+面對面 > face\-to\-face;
+複寫紙 > carbon\-paper;
+不相容 > incompatible;
+打孔器 > hole\-puncher;
+什麼是 > what\-is\-\.\.\.\?;
+凹透鏡 > concave\-lens;
+古羅馬 > ancient\-rome;
+二十萬 > 200\-thousand;
+年輕人 > young\-people;
+乒乓球 > table\-tennis;
+階級式 > hierarchical;
+聽說過 > to\-hear\-said;
+闌尾炎 > appendicitis;
+大一些 > a\-bit\-bigger;
+生物戰 > germ\-warfare;
+建設性 > constructive;
+喉塞音 > glottal\-stop;
+大都會 > metropolitan;
+最低點 > lowest\-point;
+基督教 > christianity;
+安眠酮 > methaqualone;
+試驗性 > experimental;
+貴族化 > aristocratic;
+五百萬 > five\-million;
+冰洲石 > iceland\-spar;
+核軍備 > nuclear\-arms;
+速記員 > stenographer;
+白水泥 > white\-cement;
+象聲詞 > onomatopoeia;
+幀格式 > frame\-format;
+衛生紙 > toilet\-paper;
+當時的 > of\-that\-time;
+消防栓 > fire\-hydrant;
+透明度 > transparency;
+壓倒性 > overwhelming;
+二十七 > twenty\-seven;
+大規模 > large\-scale;
+度量衡 > measurement;
+航空術 > aeronautics;
+訪問者 > interviewer;
+好朋友 > good\-friend;
+四面體 > tetrahedron;
+拔釘錘 > claw\-hammer;
+申命記 > deuteronomy;
+才外流 > brain\-drain;
+創作力 > originality;
+白矮星 > white\-dwarf;
+不贊成 > disapproval;
+半月刊 > semimonthly;
+備用環 > backup\-ring;
+滴答聲 > tick\-\(tock\);
+溫度計 > thermograph;
+不重要 > unimportant;
+有影響 > influential;
+發電廠 > power\-plant;
+柏林牆 > berlin\-wall;
+巡邏艇 > patrol\-boat;
+不含糊 > unambiguous;
+本土化 > to\-localize;
+安全燈 > safety\-lamp;
+有意思 > interesting;
+窗玻璃 > window\-pane;
+新西蘭 > new\-zealand;
+敗血症 > septicaemia;
+分佈式 > distrubuted;
+有些人 > some\-people;
+不吐氣 > unaspirated;
+有經驗 > experienced;
+男朋友 > male\-friend;
+白皮書 > white\-paper;
+翻譯者 > interpreter;
+不注意 > thoughtless;
+保不住 > most\-likely;
+巴哈馬 > the\-bahamas;
+發送器 > transmitter;
+第一章 > chapter\-one;
+連環圖 > comic\-strip;
+在地下 > underground;
+傳真機 > fax\-machine;
+裝甲車 > armored\-car;
+獲益者 > beneficiary;
+半透明 > translucent;
+第一流 > first\-class;
+謀殺案 > murder\-case;
+獎學金 > scholarship;
+不動產 > real\-estate;
+啟示錄 > revelations;
+第三方 > third\-party;
+表蒙子 > watch\-glass;
+擺架子 > put\-on\-airs;
+不確定 > uncertainty;
+古典派 > classicists;
+可行性 > feasibility;
+合法化 > to\-legalize;
+探照燈 > searchlight;
+安寧片 > meprobamate;
+是不是 > is\-or\-isn''t;
+多工器 > multiplexer;
+勞動力 > labor\-force;
+語言學 > linguistics;
+幸運兒 > a\-lucky\-guy;
+本質上 > essentially;
+地下水 > groundwater;
+申請書 > application;
+教育性 > instructive;
+繼承權 > inheritance;
+製片人 > moviemaking;
+不要緊 > unimportant;
+敗家子 > spendthrift;
+局限性 > limitations;
+售貨員 > salesperson;
+可尊敬 > respectable;
+非數字 > non\-numeric;
+爆米花 > puffed\-rice;
+三十天 > thirty\-days;
+茅屋頂 > thatch\-roof;
+三十四 > thirty\-four;
+不送氣 > unaspirated;
+性伴侶 > sex\-partner;
+乳白色 > milky\-white;
+殺人案 > murder\-case;
+蓋然性 > probability;
+可能性 > possibility;
+房地產 > real\-estate;
+登山家 > mountaineer;
+哲學家 > philosopher;
+分散式 > distributed;
+系列片 > film\-series;
+阿富汗 > afghanistan;
+洛杉磯 > los\-angeles;
+陰涼處 > shady\-place;
+伸縮性 > flexibility;
+閉元音 > close\-vowel;
+最大化 > to\-maximize;
+第十七 > seventeenth;
+哲學上 > philosophic;
+否有效 > inefficient;
+北朝鮮 > north\-korea;
+靈活性 > flexibility;
+使信服 > to\-convince;
+口香糖 > chewing\-gum;
+西乃山 > mount\-sinai;
+金屬板 > metal\-plate;
+不做聲 > keep\-silent;
+兩百萬 > two\-million;
+修理廠 > repair\-shop;
+機動性 > flexibility;
+增長率 > growth\-rate;
+介系詞 > preposition;
+主機板 > motherboard;
+他們都 > all\-of\-them;
+類似點 > resemblance;
+雙人房 > double\-room;
+美術館 > art\-gallery;
+連接詞 > conjunction;
+約伯記 > book\-of\-job;
+悲喜劇 > tragicomedy;
+軟磁碟 > floppy\-disk;
+半封建 > semi\-feudal;
+實質性 > substantive;
+軟磁盤 > floppy\-disk;
+變壓器 > transformer;
+蘋果汁 > apple\-juice;
+暗記兒 > secret\-mark;
+配送者 > distributor;
+金銀花 > honeysuckle;
+元老院 > upper\-house;
+可想像 > conceivable;
+證明書 > certificate;
+信用卡 > credit\-card;
+女管家 > housekeeper;
+工程學 > engineering;
+有害的 > destructive;
+天然氣 > natural\-gas;
+供血者 > blood\-donor;
+營養品 > nourishment;
+適應性 > suitability;
+天文台 > observatory;
+鑿石場 > rock\-quarry;
+小汽車 > compact\-car;
+螺絲刀 > screwdriver;
+副作用 > side\-effect;
+二十億 > two\-billion;
+移植性 > portability;
+二十五 > twenty\-five;
+沒問題 > no\-problem;
+第五類 > category\-5;
+非官方 > unofficial;
+國民黨 > kuomintang;
+白色體 > leucoplast;
+不耐煩 > impatience;
+百分率 > percentage;
+令牌環 > token\-ring;
+自白書 > confession;
+展覽會 > exhibition;
+高速率 > high\-speed;
+大城市 > major\-city;
+喬治敦 > georgetown;
+百分比 > percentage;
+傳道者 > missionary;
+不可能 > impossible;
+錄音帶 > audio\-tape;
+錫安山 > mount\-zion;
+硬磁盤 > hard\-drive;
+百分數 > percentage;
+歷史上 > historical;
+記帳員 > bookkeeper;
+使失望 > disappoint;
+承包人 > contractor;
+物質上 > materially;
+半公開 > semi\-overt;
+使免除 > get\-rid\-of;
+更衣室 > changeroom;
+超媒體 > hypermedia;
+不明確 > indefinite;
+不景氣 > depression;
+資本家 > capitalist;
+二手貨 > secondhand;
+傳教士 > missionary;
+易接近 > accessible;
+想像力 > conception;
+有決心 > determined;
+橄欖樹 > olive\-tree;
+爭論點 > contention;
+複雜性 > complexity;
+奶牛場 > dairy\-farm;
+字節數 > byte\-count;
+出生地 > birthplace;
+不下于 > as\-many\-as;
+大媒體 > macromedia;
+備忘錄 > memorandum;
+挨個兒 > one\-by\-one;
+兄弟會 > fraternity;
+留聲機 > gramophone;
+黑莓子 > blackberry;
+統計學 > statistics;
+在下面 > underneath;
+不變化 > invariably;
+陌生人 > a\-stranger;
+不適當 > inadequate;
+電視臺 > tv\-station;
+主力艦 > battleship;
+行不通 > won''t\-work;
+競爭者 > competitor;
+有系統 > systematic;
+短時間 > short\-term;
+沒人住 > unoccupied;
+動物學 > zoological;
+盧森堡 > luxembourg;
+第七十 > seventieth;
+冰凝器 > cryophorus;
+心理學 > psychology;
+氣喘喘 > breathless;
+第一例 > first\-case;
+摩天摟 > skyscraper;
+不透水 > waterproof;
+得不到 > cannot\-get;
+重要性 > importance;
+技術員 > technician;
+非正式 > unofficial;
+周恩來 > zhou\-enlai;
+有興趣 > interested;
+不經意 > carelessly;
+打字機 > typewriter;
+倍增器 > multiplier;
+金屬線 > metal\-wire;
+有膽量 > courageous;
+識別號 > identifier;
+生有權 > birthright;
+持卡人 > cardholder;
+刺繡品 > embroidery;
+毛澤東 > mao\-zedong;
+六十五 > sixty\-five;
+多媒體 > multimedia;
+不平常 > remarkable;
+抵抗力 > resistance;
+大主教 > archbishop;
+試算表 > speadsheet;
+白口鐵 > white\-iron;
+第十八 > eighteenth;
+實驗室 > laboratory;
+第十九 > nineteenth;
+第十三 > thirteenth;
+機關車 > locomotive;
+保潔箱 > litter\-bin;
+老年人 > old\-people;
+發聲法 > intonation;
+識別碼 > identifier;
+不平凡 > marvellous;
+崑崙山 > mt\.\-kunlun;
+代表團 > delegation;
+影像檔 > image\-file;
+居住者 > inhabitant;
+傳染病 > pestilence;
+符記環 > token\-ring;
+四百億 > 40\-billion;
+盧浮宮 > the\-louvre;
+否決權 > veto\-power;
+崇拜者 > worshipper;
+戲劇化 > theatrical;
+啄木鳥 > woodpecker;
+非盈利 > non\-profit;
+使容易 > facilitate;
+研究員 > researcher;
+目擊者 > eyewitness;
+專門化 > specialize;
+摩托車 > motorcycle;
+按手禮 > ordination;
+訂購者 > subscriber;
+顯微鏡 > microscope;
+原生質 > protoplasm;
+多方面 > many\-sided;
+會長團 > presidency;
+新聞學 > journalism;
+不定詞 > infinitive;
+大氣層 > atmosphere;
+不簡單 > not\-simple;
+受傷害 > be\-injured;
+端系統 > end\-system;
+代替者 > substitute;
+三百億 > 30\-billion;
+非對稱 > asymmetric;
+無煙煤 > anthracite;
+半決賽 > semifinals;
+莫須有 > groundless;
+不買賬 > not\-buy\-it;
+女學生 > schoolgirl;
+不自在 > uneasiness;
+下個月 > next\-month;
+鏈路層 > link\-layer;
+不由得 > can''t\-help;
+溫和性 > tenderness;
+所有者 > proprietor;
+上個月 > last\-month;
+半空中 > in\-mid\-air;
+不等式 > inequality;
+暗間兒 > inner\-room;
+自動化 > automation;
+單方面 > unilateral;
+運動場 > playground;
+附加物 > complement;
+佛教徒 > a\-buddhist;
+操舵室 > pilothouse;
+電唱機 > phonograph;
+流程圖 > flow\-chart;
+監督者 > supervisor;
+所有物 > belongings;
+二十一 > twenty\-one;
+穩定性 > stability;
+連接器 > connector;
+形容辭 > adjective;
+可得到 > available;
+科學家 > scientist;
+志願者 > volunteer;
+擦邊球 > edge\-ball;
+怎麼樣 > how\-about;
+所有權 > ownership;
+白報紙 > newsprint;
+討論會 > symposium;
+接受者 > recipient;
+形容詞 > adjective;
+每個人 > everybody;
+不育性 > sterility;
+檢查員 > inspector;
+表現型 > phenotype;
+皮鞋匠 > shoemaker;
+保護者 > protector;
+偽君子 > hypocryte;
+聲明書 > statement;
+馬蹄鐵 > horseshoe;
+擔架床 > stretcher;
+不完善 > imperfect;
+晴雨表 > barometer;
+千禧年 > millenium;
+使蔓延 > to\-spread;
+接班人 > successor;
+剪貼簿 > scrapbook;
+偉晶岩 > pegmatite;
+指示符 > indicator;
+保惠師 > comforter;
+建築師 > architect;
+委員會 > committee;
+航海者 > navigator;
+小吃店 > snack\-bar;
+維士卡 > visa\-card;
+好奇心 > curiosity;
+政治性 > political;
+滑鼠墊 > mouse\-pad;
+拜物教 > fetishism;
+低速率 > low\-speed;
+政治局 > politburo;
+零售商 > tradesman;
+政治家 > statesman;
+安全帶 > seat\-belt;
+登廣告 > advertise;
+有活力 > energetic;
+香檳酒 > champagne;
+綜合性 > synthesis;
+摁釘兒 > thumbtack;
+文具商 > stationer;
+新加坡 > singapore;
+領事館 > consulate;
+超聯結 > hyperlink;
+保皇黨 > royalists;
+東北方 > northeast;
+好萊塢 > hollywood;
+持久性 > constancy;
+白血病 > leukaemia;
+全世界 > worldwide;
+繼承者 > successor;
+抗議者 > protester;
+衣帽間 > cloakroom;
+一匹馬 > one\-horse;
+有時候 > sometimes;
+候選人 > candidate;
+向北地 > northward;
+下決心 > determine;
+保證人 > guarantor;
+上星期 > last\-week;
+第二十 > twentieth;
+睡過頭 > oversleep;
+利未記 > leviticus;
+童子軍 > boy\-scout;
+四十六 > forty\-six;
+第九十 > ninetieth;
+車前燈 > headlight;
+宇航員 > astronaut;
+使困窘 > embarrass;
+巧克力 > chocolate;
+有雄心 > ambitious;
+處理器 > processor;
+知更鳥 > redbreast;
+啟示者 > revelator;
+第三十 > thirtieth;
+白鎢礦 > scheelite;
+手提包 > \(hand\)bag;
+技術性 > technical;
+不誠實 > dishonest;
+豌豆粥 > pea\-gruel;
+變流器 > converter;
+潛水艇 > submarine;
+扳道員 > pointsman;
+繼任者 > successor;
+兩星期 > fortnight;
+格式化 > to\-format;
+採石場 > stone\-pit;
+加勒比 > caribbean;
+電報機 > telegraph;
+工作表 > worksheet;
+暴風雪 > snowstorm;
+暴風雨 > rainstorm;
+文字檔 > text\-file;
+貿易戰 > trade\-war;
+保証人 > guarantor;
+奉承者 > flatterer;
+指揮者 > conductor;
+參考書 > reference;
+針對性 > direction;
+半衰期 > half\-life;
+拉斐特 > lafayette;
+要不然 > otherwise;
+不結果 > fruitless;
+申請人 > applicant;
+出版者 > publisher;
+本星期 > this\-week;
+怪不得 > no\-wonder;
+創造力 > ingenuity;
+可容忍 > tolerable;
+基本上 > basically;
+稻草人 > scarecrow;
+多用戶 > multiuser;
+羽毛球 > badminton;
+救護車 > ambulance;
+第十六 > sixteenth;
+使生氣 > displease;
+不公正 > injustice;
+光射線 > light\-ray;
+外國人 > foreigner;
+第十五 > fifteenth;
+阿根廷 > argentina;
+偽善者 > hypocrite;
+螺旋槳 > propeller;
+貯水處 > reservoir;
+半流體 > semifluid;
+征服者 > conqueror;
+捕鼠器 > mousetrap;
+變色龍 > chameleon;
+對抗者 > adversary;
+薄油層 > oil\-sheet;
+無知覺 > senseless;
+氣壓計 > barometer;
+白云母 > muscovite;
+彫刻品 > sculpture;
+新聞界 > the\-press;
+一千噸 > 1000\-tons;
+不規則 > irregular;
+波狀雲 > undulatus;
+擴音器 > megaphone;
+不見了 > disappear;
+九月份 > september;
+超文本 > hypertext;
+讀書人 > a\-scholar;
+指揮官 > commander;
+引用句 > quotation;
+千赫茲 > kilohertz;
+八倍體 > octoploid;
+被禁止 > forbidden;
+不自然 > unnatural;
+高科技 > high\-tech;
+怪物似 > monstrous;
+冰棍兒 > ice\-lolly;
+白班兒 > day\-shift;
+星期三 > wednesday;
+野蠻人 > barbarian;
+十字軍 > crusaders;
+法國人 > frenchman;
+五千噸 > 5000\-tons;
+遇難船 > shipwreck;
+出席者 > attendant;
+羊皮紙 > parchment;
+反艦艇 > anti\-ship;
+內衣褲 > underwear;
+必需品 > necessity;
+冰淇淋 > ice\-cream;
+石灰石 > limestone;
+修道院 > monastery;
+西北方 > northwest;
+望遠鏡 > telescope;
+超文件 > hypertext;
+擺設兒 > ornaments;
+太好了 > very\-good;
+本年度 > this\-year;
+心靈上 > spiritual;
+天文學 > astronomy;
+巴比妥 > barbitone;
+實質上 > virtually;
+有節制 > temperate;
+有意識 > conscious;
+受害者 > casulties;
+不完美 > defective;
+情緒化 > emotional;
+支持者 > supporter;
+數不盡 > countless;
+借書單 > book\-slip;
+有禮貌 > courteous;
+第八十 > eightieth;
+里程碑 > milestone;
+不情願 > unwilling;
+下定義 > to\-define;
+對不起 > i''m\-sorry;
+假象牙 > celluloid;
+降落傘 > parachute;
+不育症 > sterility;
+必要性 > necessity;
+數不清 > countless;
+購買者 > purchaser;
+大教堂 > cathedral;
+組織者 > organizer;
+聖迭哥 > san\-diego;
+長方形 > rectangle;
+生殖力 > fertility;
+灰獵犬 > greyhound;
+習慣性 > customary;
+白內障 > cataract;
+大篷車 > schooner;
+監護人 > guardian;
+不合適 > improper;
+觀察者 > observer;
+藥劑士 > druggist;
+不信任 > mistrust;
+因特網 > internet;
+對稱性 > symmetry;
+檢測器 > detector;
+魔術師 > magician;
+不朽的 > immortal;
+歷史性 > historic;
+檸檬水 > lemonade;
+以太網 > ethernet;
+負重擔 > burdened;
+探測器 > detector;
+十二月 > december;
+擦網球 > net\-ball;
+聖保羅 > st\.\-paul;
+西裡爾 > cyrillic;
+女孩兒 > daughter;
+有德行 > virtuous;
+可擦寫 > erasable;
+牧羊者 > shepherd;
+最喜愛 > favorite;
+筆記本 > notebook;
+薰衣草 > lavender;
+不必要 > needless;
+請願書 > petition;
+投資者 > investor;
+寄生物 > parasite;
+肯塔基 > kentucky;
+柬埔寨 > cambodia;
+一小時 > one\-hour;
+人行道 > sidewalk;
+安全性 > security;
+再保証 > reassure;
+政治學 > politics;
+觀察家 > observer;
+雞尾酒 > cocktail;
+橄欖球 > football;
+平底鍋 > saucepan;
+紀念碑 > monument;
+侵入者 > intruder;
+改革者 > reformer;
+手提箱 > suitcase;
+不同意 > disagree;
+共和國 > republic;
+棒磨機 > rod\-mill;
+比目魚 > flatfish;
+大屠殺 > massacre;
+小夜曲 > serenade;
+小標題 > subtitle;
+有機體 > organism;
+死衚衕 > dead\-end;
+交響曲 > symphony;
+時間表 > schedule;
+頭向前 > headlong;
+探險者 > explorer;
+受難者 > sufferer;
+巴拉圭 > paraguay;
+第一步 > step\-one;
+調味汁 > dressing;
+數據庫 > database;
+債權人 > creditor;
+弟兄們 > brethren;
+小說家 > novelist;
+第五十 > fiftieth;
+三明治 > sandwich;
+催化劑 > catalyst;
+消費者 > consumer;
+牧羊人 > shepherd;
+有彈性 > flexible;
+經陸路 > overland;
+在戶外 > outdoors;
+擦棒球 > foul\-tip;
+中世紀 > medieval;
+傾聽者 > listener;
+接收器 > receiver;
+資料庫 > database;
+殺人犯 > murderer;
+葡萄牙 > portugal;
+不正常 > abnormal;
+內部網 > intranet;
+不透氣 > airtight;
+暖氣機 > radiator;
+阿肯色 > arkansas;
+教科書 > textbook;
+鼓吹者 > advocate;
+地下室 > basement;
+大肚子 > pregnant;
+不過意 > be\-sorry;
+冒犯者 > offender;
+保真度 > fidelity;
+不體面 > shameful;
+小衝突 > skirmish;
+排水渠 > drainage;
+麻醉劑 > narcotic;
+被侵害 > stricken;
+計算機 > computer;
+白木耳 > tremella;
+獨裁者 > dictator;
+記錄員 > recorder;
+蘇格蘭 > scotland;
+葡萄園 > vineyard;
+使興奮 > exciting;
+第十一 > eleventh;
+方程式 > equation;
+無線電 > wireless;
+彫刻家 > sculptor;
+工商界 > industry;
+阿托品 > atropine;
+地區性 > regional;
+裝飾物 > ornament;
+三角形 > triangle;
+誘拐者 > abductor;
+戲劇性 > dramatic;
+懲罰性 > punitive;
+八角楓 > alangium;
+北海道 > hokkaido;
+低成本 > low\-cost;
+明信片 > postcard;
+救贖主 > redeemer;
+生命力 > vitality;
+所在地 > location;
+產量多 > fruitful;
+看守者 > watchman;
+佔領者 > occupant;
+暗地裡 > secretly;
+低費用 > low\-cost;
+使吃驚 > astonish;
+幸存者 > survivor;
+使駭怕 > frighten;
+櫻花草 > primrose;
+星期四 > thursday;
+決定性 > decisive;
+日耳曼 > germanic;
+幾何學 > geometry;
+傾向於 > prone\-to;
+生還者 > survivor;
+星期六 > saturday;
+防守者 > defender;
+有價值 > valuable;
+刺激物 > stimulus;
+不信用 > distrust;
+提供諸 > provider;
+工程師 > engineer;
+中繼器 > repeater;
+洋琵琶 > mandolin;
+惡作劇 > mischief;
+子午線 > meridian;
+製作者 > producer;
+不在乎 > not\-mind;
+音樂家 > musician;
+使麻痺 > paralyze;
+千字節 > kilobyte;
+變阻器 > theostat;
+女房東 > landlady;
+不值得 > unworthy;
+提供者 > supplier;
+堅固性 > firmness;
+白化病 > albinism;
+第六十 > sixtieth;
+文明化 > civilize;
+外交官 > diplomat;
+白雲石 > dolomite;
+使習慣 > accustom;
+冰晶石 > cryolite;
+不小心 > heedless;
+富色彩 > colorful;
+納稅人 > taxpayer;
+再出現 > reappear;
+靠背椅 > armchair;
+操作者 > operator;
+全國性 > national;
+絲狀物 > filament;
+發明家 > inventor;
+藥劑師 > druggist;
+不怎麼 > not\-very;
+大西洋 > atlantic;
+看得見 > visible;
+有資格 > entitle;
+圓石頭 > boulder;
+奧地利 > austria;
+傳道部 > mission;
+創世紀 > genesis;
+千位元 > kilobit;
+揚聲器 > speaker;
+管理員 > manager;
+老資格 > veteran;
+金銀塊 > bullion;
+沙丁魚 > sardine;
+出納員 > cashier;
+愛遊玩 > playful;
+鋼琴家 > pianist;
+計數者 > counter;
+解剖學 > anatomy;
+有學問 > learned;
+半吊子 > dabbler;
+天花板 > ceiling;
+大盤子 > platter;
+不能不 > have\-to;
+出入口 > gateway;
+起皺紋 > shrivel;
+油光漆 > varnish;
+托兒所 > nursery;
+艷紅色 > crimson;
+特許狀 > charter;
+拖曳機 > tractor;
+預言家 > prophet;
+背叛者 > traitor;
+大使館 > embassy;
+大草原 > prairie;
+物理學 > physics;
+不聽命 > disobey;
+索馬裡 > somalia;
+廣播網 > network;
+巴格達 > baghdad;
+銀行業 > banking;
+手推車 > trolley;
+勞動者 > laborer;
+美洲豹 > panther;
+花崗石 > granite;
+在其中 > therein;
+不合法 > illegal;
+梵帝岡 > vatican;
+同義字 > synonym;
+愛國者 > patriot;
+女主人 > hostess;
+白榴石 > leucite;
+你自己 > thyself;
+自由派 > liberal;
+螢火蟲 > firefly;
+百分之 > percent;
+鬆緊帶 > elastic;
+寄宿生 > boarder;
+受歡迎 > popular;
+飛機場 > airport;
+計數器 > counter;
+實際上 > in\-fact;
+反應堆 > reactor;
+異教徒 > heathen;
+外邦人 > gentile;
+移民者 > migrant;
+不吉利 > ominous;
+創造者 > creator;
+熔礦爐 > furnace;
+女英雄 > heroine;
+內羅畢 > nairobi;
+叛逆者 > traitor;
+使高貴 > dignify;
+地質學 > geology;
+關鍵詞 > keyword;
+巴松管 > bassoon;
+布隆迪 > burundi;
+充電器 > charger;
+蒙大拿 > montana;
+炭疽病 > anthrax;
+史密特 > schmitt;
+富士通 > fujitsu;
+烹調術 > cookery;
+印刷者 > printer;
+混合物 > mixture;
+阿克倫 > acheron;
+無神論 > atheism;
+不動搖 > unmoved;
+隱藏處 > shelter;
+押沙龍 > absalom;
+催眠曲 > lullaby;
+牛頭犬 > bulldog;
+使魔法 > conjure;
+吹口哨 > whistle;
+安乃近 > analgin;
+蛋白質 > protein;
+芝加哥 > chicago;
+八帶魚 > octopus;
+洗衣店 > laundry;
+不得勁 > awkward;
+半瓶醋 > dabbler;
+長頸鹿 > giraffe;
+女高音 > soprano;
+比利時 > belgium;
+不調和 > discord;
+有陰影 > shadowy;
+指關節 > knuckle;
+平常日 > weekday;
+儲藏室 > storage;
+匈牙利 > hungary;
+墓誌銘 > epitaph;
+一會兒 > a\-while;
+不道德 > immoral;
+烏克蘭 > ukraine;
+在室內 > indoors;
+不離兒 > not\-bad;
+白蛋白 > albumin;
+主席臺 > rostrum;
+類固醇 > steroid;
+評議會 > council;
+有希望 > hopeful;
+傷寒症 > typhoid;
+到那裡 > thither;
+養老金 > pension;
+睡眠者 > sleeper;
+喘吁吁 > to\-blow;
+小冊子 > booklet;
+未武裝 > unarmed;
+帶紅色 > reddish;
+合夥人 > partner;
+有幫助 > helpful;
+阿拉伯 > arabian;
+阿拉丁 > aladdin;
+不覺察 > unaware;
+甘藍菜 > cabbage;
+女修道 > convent;
+發現物 > finding;
+在下方 > beneath;
+蒸汽機 > steamer;
+小瀑布 > cascade;
+第十二 > twelfth;
+巴不得 > anxious;
+未決定 > pending;
+旅遊者 > tourist;
+受託人 > trustee;
+見證人 > witness;
+石南屬 > heather;
+圖書館 > library;
+薄烤餅 > pancake;
+毒草名 > hemlock;
+地平線 > horizon;
+她自己 > herself;
+使孤立 > isolate;
+矮壯素 > cycocel;
+向何處 > whither;
+籃板球 > rebound;
+聽得見 > audible;
+做禱告 > to\-pray;
+百慕大 > bermuda;
+有條紋 > striped;
+安息日 > sabbath;
+不倒翁 > tumbler;
+裁紙機 > trimmer;
+一部分 > portion;
+懷敵意 > hostile;
+創立者 > founder;
+維他命 > vitamin;
+裝置物 > fixture;
+參議員 > senator;
+印表機 > printer;
+星期二 > tuesday;
+音樂會 > concert;
+體育場 > stadium;
+愛爾蘭 > ireland;
+逃亡者 > runaway;
+咯咯笑 > chuckle;
+生物學 > biology;
+戰鬥者 > fighter;
+使憤慨 > outrage;
+居住於 > inhabit;
+打印機 > printer;
+使憤怒 > provoke;
+彌賽亞 > messiah;
+沒甚麼 > nothing;
+煙灰缸 > ashtray;
+深紅色 > scarlet;
+不在了 > be\-dead;
+紡織品 > textile;
+代名詞 > pronoun;
+不濟事 > no\-good;
+開拓者 > pioneer;
+不人道 > inhuman;
+被沒收 > forfeit;
+路西弗 > lucifer;
+化學家 > chemist;
+訓練者 > trainer;
+清潔器 > cleaner;
+愛德玲 > adeline;
+迫切性 > urgency;
+女演員 > actress;
+桌上型 > desktop;
+巴比倫 > babylon;
+嬰兒期 > infancy;
+百葉窗 > shutter;
+避彈坑 > foxhole;
+有才幹 > capable;
+脫衣服 > undress;
+觀光客 > tourist;
+運動家 > athlete;
+業餘者 > amateur;
+金字塔 > pyramid;
+他自己 > himself;
+定居者 > settler;
+二十多 > over\-20;
+收留所 > barrack;
+毛毛雨 > drizzle;
+運動員 > athlete;
+燕麥粥 > oatmeal;
+標語牌 > placard;
+自行車 > bicycle;
+民數記 > numbers;
+小斑點 > speckle;
+使厭煩 > disgust;
+艾迪生 > addison;
+士師記 > judges;
+護送者 > escort;
+發電機 > dynamo;
+穆斯林 > muslim;
+開車人 > driver;
+嘶啞聲 > hoarse;
+拔尖兒 > tiptop;
+管理人 > keeper;
+黃鼠狼 > weasel;
+有人情 > humane;
+西紅柿 > tomato;
+電影院 > cinema;
+小妖精 > goblin;
+金絲雀 > canary;
+動名詞 > gerund;
+競賽者 > player;
+編年史 > annals;
+缺氧症 > anoxia;
+大地洞 > cavern;
+滑翔機 > glider;
+殘餘物 > litter;
+有責任 > liable;
+孩子氣 > boyish;
+小牝牛 > heifer;
+跑步者 > runner;
+吐綬雞 > turkey;
+跨接器 > jumper;
+負擔者 > bearer;
+合唱團 > chorus;
+領導者 > leader;
+曲棍球 > hockey;
+路由器 > router;
+父母親 > parent;
+化妝品 > makeup;
+急促聲 > patter;
+使硬化 > harden;
+交易者 > dealer;
+日內瓦 > geneva;
+銀行家 > banker;
+植物學 > botany;
+紀念獎 > trophy;
+偽造的 > forged;
+第二次 > second;
+鵝卵石 > pebble;
+有氣派 > lordly;
+債務人 > debtor;
+畫眉鳥 > thrush;
+小碟子 > saucer;
+舞蹈家 > dancer;
+叮噹聲 > tinkle;
+使濕透 > drench;
+批評家 > critic;
+在深處 > deeply;
+勝利者 > victor;
+蹺蹺板 > seesaw;
+磨坊主 > miller;
+有關連 > relate;
+多樹木 > wooded;
+吱吱聲 > squeak;
+未完成 > undone;
+魔賽克 > mosaic;
+強有力 > strong;
+烏干達 > uganda;
+不確實 > untrue;
+辦公室 > office;
+羅馬書 > romans;
+服務員 > waiter;
+蜘蛛網 > cobweb;
+阿米巴 > amoeba;
+修補匠 > tinker;
+大理石 > marble;
+持有人 > holder;
+撒哈拉 > sahara;
+大鐮刀 > scythe;
+濾波器 > filter;
+娛樂場 > resort;
+使高興 > please;
+最年長 > eldest;
+醃黃瓜 > pickle;
+收割者 > reaper;
+杜鵑鳥 > cuckoo;
+打噴嚏 > sneeze;
+螺旋鉗 > wrench;
+參議院 > senate;
+領導人 > leader;
+變形蟲 > amoeba;
+任何人 > anyone;
+有道德 > chaste;
+藝術家 > artist;
+頂樑柱 > pillar;
+使膨脹 > dilate;
+小提琴 > fiddle;
+懶洋洋 > lazily;
+馬戲團 > circus;
+高腳杯 > goblet;
+馬鈴薯 > potato;
+使轉向 > divert;
+沒有人 > nobody;
+博物館 > museum;
+使困擾 > harass;
+禮拜堂 > chapel;
+不透明 > opaque;
+它本身 > itself;
+扁桃體 > tonsil;
+排水溝 > gutter;
+正方形 > square;
+可信任 > trusty;
+文學家 > writer;
+移動式 > mobile;
+到此處 > hither;
+殖民地 > colony;
+墨西哥 > mexico;
+清真寺 > mosque;
+辦事處 > office;
+安哥拉 > angola;
+以色列 > israel;
+釘書針 > staple;
+照相機 > camera;
+紡織者 > weaver;
+斯拉夫 > slavic;
+俄羅斯 > russia;
+裁縫師 > tailor;
+弓箭手 > archer;
+塞爾特 > celtic;
+女舍監 > matron;
+打字員 > typist;
+星期日 > sunday;
+葡萄乾 > raisin;
+我自己 > myself;
+大步走 > stride;
+不公平 > unfair;
+芭蕾舞 > ballet;
+評論家 > critic;
+伯利茲 > belize;
+螺旋形 > spiral;
+比較少 > lesser;
+在此處 > herein;
+被害人 > victim;
+阿波羅 > apollo;
+使耳聾 > deafen;
+義賣會 > bazaar;
+星期天 > sunday;
+工作室 > studio;
+門外漢 > layman;
+在附近 > nearby;
+塗油於 > anoint;
+雜貨商 > grocer;
+維吾爾 > uighur;
+英雄式 > heroic;
+理髮師 > barber;
+起泡沫 > seethe;
+星期五 > friday;
+星期一 > monday;
+巴爾干 > balkan;
+格格笑 > giggle;
+孟加拉 > bengal;
+土耳其 > turkey;
+白蘭地 > brandy;
+愛德華 > edward;
+半中腰 > middle;
+白乾兒 > spirit;
+典獄長 > warden;
+看不見 > unseen;
+使作嘔 > sicken;
+恐水病 > rabies;
+加﹍於 > impose;
+橡皮搽 > eraser;
+波士頓 > boston;
+經紀人 > broker;
+紅蘿蔔 > carrot;
+悄悄地 > gently;
+避難所 > refuge;
+白麵兒 > heroin;
+飼養者 > feeder;
+巴斯克 > basque;
+莫斯科 > moscow;
+月桂樹 > laurel;
+門診室 > clinic;
+微薄的 > meagre;
+小淘氣 > rascal;
+攝影機 > camera;
+起訴者 > suitor;
+巴拿馬 > panama;
+捕鯨船 > whaler;
+演說者 > orator;
+擺樣子 > do\-sth;
+幾乎不 > hardly;
+加拿大 > canada;
+醫務所 > clinic;
+十字架 > cross;
+代理人 > agent;
+驅動器 > drive;
+獨木舟 > canoe;
+條板箱 > crate;
+陳列臺 > stall;
+講解員 > guide;
+泥水匠 > mason;
+植物群 > flora;
+在高處 > aloft;
+撐竿跳 > vault;
+頭蓋骨 > skull;
+敘利亞 > syria;
+紫丁香 > lilac;
+不新鮮 > stale;
+大農場 > ranch;
+多水分 > juicy;
+呼叫器 > pager;
+下水道 > sewer;
+從來不 > never;
+二極管 > diode;
+競技場 > arena;
+麥阿密 > miami;
+休息室 > lobby;
+球狀物 > globe;
+對敵者 > rival;
+冬青樹 > holly;
+果子凍 > jelly;
+大地圖 > atlas;
+成年者 > adult;
+雅各書 > james;
+英代爾 > intel;
+毛茸茸 > hairy;
+使煩惱 > worry;
+尼日爾 > niger;
+收音機 > radio;
+第三次 > third;
+招待員 > usher;
+第一次 > first;
+意大利 > italy;
+水平面 > plane;
+亞麻布 > linen;
+溜冰鞋 > skate;
+作哼聲 > snort;
+製造者 > maker;
+無生命 > inert;
+酪農業 > dairy;
+水蒸氣 > vapor;
+像片簿 > album;
+贈與者 > giver;
+板條箱 > crate;
+天藍色 > azure;
+飛行員 > pilot;
+捐贈者 > donor;
+西班牙 > spain;
+提多書 > titus;
+生麵糰 > dough;
+阿拉摩 > alamo;
+男高音 > tenor;
+一點兒 > a\-bit;
+英特爾 > intel;
+小樹林 > grove;
+布萊爾 > blair;
+撥火棍 > poker;
+在旁邊 > aside;
+營業員 > clerk;
+使固定 > rivet;
+警報器 > siren;
+三角洲 > delta;
+威爾士 > wales;
+肯尼亞 > kenya;
+麵包皮 > crust;
+石南樹 > heath;
+螺絲釘 > screw;
+西洋棋 > chess;
+唱詩班 > choir;
+西洋杉 > cedar;
+使溺死 > drown;
+再一次 > again;
+地方性 > local;
+發牢騷 > whine;
+長頸瓶 > flask;
+皺眉頭 > scowl;
+駕駛員 > pilot;
+來福槍 > rifle;
+吵鬧聲 > noise;
+楔形物 > wedge;
+流浪者 > rover;
+毛嗶嘰 > serge;
+灌木叢 > scrub;
+起重機 > crane;
+碎布條 > shred;
+內在的 > inner;
+鬱金香 > tulip;
+雪茄煙 > cigar;
+烤麵包 > toast;
+吹笛者 > piper;
+一巴掌 > spank;
+統治者 > ruler;
+呼叫聲 > whoop;
+座右銘 > motto;
+三稜鏡 > prism;
+矮墩墩 > pudgy;
+阿爾法 > alpha;
+比例尺 > scale;
+反抗者 > rebel;
+哪一個 > which;
+合股線 > twine;
+邁阿密 > miami;
+輿論界 > media;
+瑞典人 > swede;
+使羞愧 > abash;
+男子氣 > manly;
+使娛樂 > amuse;
+媳婦兒 > wife;
+伊拉克 > iraq;
+有能力 > able;
+埃米爾 > emir;
+咖啡館 > cafe;
+一定要 > must;
+通行稅 > toll;
+玉蜀黍 > corn;
+小毛蟲 > slug;
+最主要 > main;
+猶他州 > utah;
+使受傷 > hurt;
+立方體 > cube;
+白骨頂 > coot;
+護城河 > moat;
+洋娃娃 > doll;
+感覺到 > feel;
+下一次 > next;
+淺黃色 > buff;
+大袋子 > sack;
+圈狀物 > hoop;
+不及格 > fail;
+出租車 > taxi;
+保險絲 > fuse;
+先見者 > seer;
+手拉車 > cart;
+爵士舞 > jazz;
+咖啡店 > cafe;
+艾滋病 > aids;
+八哥兒 > myna;
+電燈泡 > bulb;
+猶大書 > jude;
+大頭釘 > tack;
+愛滋病 > aids;
+赤裸裸 > bare;
+圓屋頂 > dome;
+雙胞胎 > twin;
+一塊麵 > loaf;
+使用者 > user;
+外小腿 > shin;
+蛋白石 > opal;
+一分錢 > cent;
+圓錐體 > cone;
+百合花 > lily;
+計程車 > taxi;
+蜂蜜酒 > mead;
+非常多 > much;
+在之上 > over;
+眨眼睛 > wink;
+貴婦人 > dame;
+紅寶石 > ruby;
+軟木塞 > cork;
+粉紅色 > pink;
+呼呼聲 > whir;
+快步跑 > trot;
+說謊者 > liar;
+陪審團 > jury;
+繼乘人 > heir;
+光禿禿 > bald;
+果餡餅 > tart;
+嘶嘶聲 > hiss;
+擦黑兒 > dusk;
+水果酒 > wine;
+癩哈蟆 > toad;
+織布機 > loom;
+橢圓形 > oval;
+空白點 > gap;
+為甚麼 > why;
+男孩子 > boy;
+浸一下 > dip;
+在眼前 > now;
+無花果 > fig;
+男孩兒 > boy;
+貓叫聲 > mew;
+細頸瓶 > jug;
+常春藤 > ivy;
+為什麼 > why;
+無尾猿 > ape;
+小精靈 > elf;
+老天爺 > god;
+零點六 > 0\.6;
+墨水兒 > ink;
+六點六 > 6\.6;
+用油炸 > fry;
+體育館 > gym;
+七點五 > 7\.5;
+七點二 > 7\.2;
+動物園 > zoo;
+猶太人 > jew;
+黃褐色 > tan;
+筆桿子 > pen;
+九七年 > ''97;
+計乘車 > cab;
+小伙子 > lad;
+貓頭鷹 > owl;
+向上地 > up;
+變文 > a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 > border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+同期 > the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+偏偏 > \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 > to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 > oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+洛德 > \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+彷徨 > name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+陳毅 > chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+包工 > undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 > radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 > a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+在於 > \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+教訓 > \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+駁岸 > a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+補法 > treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+三不 > \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 > the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+宣判 > pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+病友 > a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+就是 > \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+大禹 > da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+表證 > illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+幫閑 > hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+描紅 > to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+抗戰 > war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+今音 > modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+惋惜 > to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+睥睨 > look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+胡適 > hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 > military\-commission\-of\-the\-communist\-party\-central\-committee;
+燈節 > the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+北洋 > the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 > the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+藤野 > name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 > marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 > to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+扮相 > the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+武術 > wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 > \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+政協 > cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 > adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 > a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 > male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+仙草 > a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+板胡 > a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+補養 > take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+拼命 > to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+遷怒 > to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+掛好 > to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 > draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+畜力 > animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+幫腔 > vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 > hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 > \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+興趣 > interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+標兵 > parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+法海 > name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+彈琴 > to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 > white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 > be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+平方 > square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+拉貝 > \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 > mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+捕俘 > capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+鏢客 > armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+貝母 > the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 > a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 > music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+陝西 > shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 > the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+橫折 > \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 > xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 > name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+備取 > be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+本末 > the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 > with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+版畫 > a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 > taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+武松 > wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+許仙 > name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 > attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 > reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+幹事 > administrative\-secretary\-\(in\-charge\-of\-something\);
+巫峽 > wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+折筆 > against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+專線 > special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 > \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+斜鉤 > \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 > \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 > ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+橫筆 > bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+採購 > make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 > in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+報國 > dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+筆觸 > brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+便人 > somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+謝辛 > chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 > reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+罷了 > a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 > cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+抓飯 > a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+白描 > line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+唐山 > tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+避嫌 > avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+報幕 > announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+親家 > parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+喜糖 > sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 > congratulate\-an\-elderly\-person\-on\-his\-birthday;
+並行 > in\-parallel\-\[development\,\-implementation\,\-etc\];
+伯杰 > \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+東盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+曾經 > \(refers\-to\-something\-that\-happened\-previously\);
+可見 > it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+慰問 > express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 > hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+羅斯 > roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+旁聽 > be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+推辭 > to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+白痢 > dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 > name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+棒槌 > wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+吞吐 > to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+斷橋 > the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+氣功 > qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 > provincial\-level\-\(eg\,\-provincial\-government\);
+武打 > acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+報失 > report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 > take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 > ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 > obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 > red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+元宵 > sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+臨寫 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 > moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+抄家 > to\-search\-a\-house\-and\-confiscate\-possessions;
+會見 > to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+大舉 > carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 > \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+議席 > seat\-in\-a\-parliament\-or\-legislative\-assembly;
+通緝 > wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 > \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+魯賓 > rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 > lippo\-\(group\)\-\(indonesian\-business\-concern\);
+側鋒 > oblique\-attack\-\(brush\-movement\-in\-painting\);
+崇禎 > chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 > wrongly\-written\-and\-mispronounced\-character;
+對策 > countermeasure\-for\-dealing\-with\-a\-situation;
+筆力 > vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 > to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+星體 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+主管 > \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+步韻 > to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 > \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 > frontal\-attack\-\(brush\-movement\-in\-painting\);
+星球 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+下來 > \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 > a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+接納 > admit\-\(into\-membership\-of\-an\-organization\);
+把風 > keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 > make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 > find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+栽贓 > to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 > give\-something\-and\-get\-something\-in\-return;
+偽書 > \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+簿冊 > books\-for\-taking\-notes\-or\-keeping\-accounts;
+上車 > to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+筆下 > the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 > an\-informal\-letter\-sent\-by\-an\-organization;
+首席 > chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 > son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+處於 > be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+敗筆 > a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+出路 > a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+度日 > scratch\-out\-a\-difficult\,\-meager\-existence;
+報案 > report\-a\-case\-to\-the\-security\-authorities;
+兵源 > manpower\-resources\-\(for\-military\-service\);
+有電 > \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+賁臨 > \(of\-distinguished\-guests\)\-honour\-my\-house;
+松下 > matsushita\-\(japanese\-electronics\-company\);
+不妙 > \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+勉強 > manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 > have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+公約 > convention\-\(ie\,\-international\-agreement\);
+年度 > year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+筆順 > order\-of\-strokes\-observed\-in\-calligraphy;
+扎針 > to\-give\-or\-have\-an\-acupuncture\-treatment;
+製劑 > \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 > know\-\(through\-learning\-or\-by\-experience\);
+偽托 > faking\-a\-modern\-object\-as\-an\-ancient\-one;
+海關 > customs\-\(ie\,\-border\-crossing\-inspection\);
+碑記 > a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+包辦 > take\-care\-of\-everything\-concerning\-a\-job;
+出面 > act\-in\-a\-\(official\-or\-personal\)\-capacity;
+相隔 > be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+時報 > \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 > connected\-by\-air\|sea\-traffic\-or\-service;
+遷居 > to\-move\-\(from\-one\-residence\-to\-another\);
+年代 > a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+喬石 > qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 > \(straight\-down\-hooked\-character\-stroke\);
+成本 > \(manufacturing\,\-production\,\-etc\.\)\-costs;
+代理 > acting\-\(temporarily\-filling\-a\-position\);
+客廳 > drawing\-room\-\(room\-for\-arriving\-guests\);
+蓮霧 > wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 > to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+老二 > the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 > \(abbreviation\-for\)\-china\-\-\-south\-africa;
+版次 > the\-order\-in\-which\-editions\-are\-printed;
+受傷 > suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 > agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 > the\-traditional\-chinese\-lunar\-calendar;
+師範 > normal\-\(eg\,\-beijing\-normal\-university\);
+廣場 > a\-public\-square\-\(eg\,\-tiananmen\-square\);
+補票 > buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 > have\-a\-high\-temperature\-\(from\-illness\);
+盆地 > basin\-\(low\-lying\-geographical\-feature\);
+手跡 > sb\.''s\-original\-handwriting\-or\-painting;
+璧還 > return\-\(a\-borrowed\-object\)\-with\-thanks;
+表妹 > female\-cousin\-with\-a\-different\-surname;
+拆散 > to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+備品 > machine\-parts\-or\-tools\-kept\-in\-reserve;
+首任 > first\-person\-to\-be\-appointed\-to\-a\-post;
+部長 > head\-of\-a\-\(government\,\-etc\)\-department;
+比量 > take\-rough\-measurements\-\(with\-the\-hand;
+博愛 > universal\-fraternity\-\(or\-brotherhood\);
+敗火 > relieve\-inflammation\-or\-internal\-heat;
+經營 > engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 > integrated\-\(as\-in\-integrated\-circuit\);
+政委 > political\-commissar\-\(within\-the\-army\);
+編導 > write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 > \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 > \(military\)\-branch\-of\-the\-armed\-forces;
+逼宮 > force\-the\-king\-or\-emperor\-to\-abdicate;
+航行 > sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+相信 > be\-convinced\-\(that\-something\-is\-true\);
+拔秧 > pull\-up\-seedlings\-\(for\-transplanting\);
+手裡 > \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 > fish\-for\-\(aquatic\-animals\-and\-plants\);
+簽名 > to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 > ji''nan\-\(capital\-of\-shandong\-province\);
+屏條 > set\-of\-\(usually\-four\)\-hanging\-scrolls;
+究竟 > after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 > zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+主科 > required\-courses\-in\-the\-major\-subject;
+班底 > ordinary\-members\-of\-theatrical\-troupe;
+金缽 > \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+聯名 > jointly\-\(signed\,\-declared\,\-sponsored\);
+下榻 > stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+記述 > make\-a\-descriptive\-record\-\(of\-events\);
+暗傷 > internal\-\(invisible\)\-injury\-\(damage\);
+太湖 > tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 > \(horizontal\-hooked\-character\-stroke\);
+北宋 > the\-northern\-song\-dynasty\-\(960\-1127\);
+鄉下 > country\-\(as\-opposed\-to\-town\-or\-city\);
+簽訂 > to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+增值 > appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+兵家 > military\-strategist\-in\-ancient\-china;
+英尺 > \(english\)\-foot\-\(unit\-of\-measurement\);
+淪陷 > \(territory\)\-fall\-to\-enemy\-occupation;
+人選 > person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+會長 > president\-of\-a\-club\,\-committee\,\-etc\.;
+寫成 > to\-compile\-\(fashion\-through\-writing\);
+吞金 > to\-commit\-suicide\-by\-swallowing\-gold;
+板眼 > measure\-in\-traditional\-chinese\-music;
+首府 > capital\-city\-of\-an\-autonomous\-region;
+班次 > order\-of\-classes\-or\-grades\-at\-school;
+貴州 > name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 > \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 > attract\-\(interest\,\-investment\,\-etc\.\);
+暗娼 > unlicensed\-\(unregistered\)\-prostitute;
+霸王 > xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 > birthday\-present\-\(for\-an\-old\-person\);
+萬縣 > wanxian\-county\,\-in\-sichuan\-province;
+兵部 > the\-ministry\-of\-war\-in\-feudal\-china;
+北周 > the\-northern\-zhou\-dynasty\-\(557\-581\);
+北京 > beijing\-\(capital\-of\-mainland\-china\);
+草案 > draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 > dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+補白 > filler\-\(in\-a\-newspaper\-or\-magazine\);
+舉行 > to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+保送 > recommend\-\(for\-admission\-to\-school\);
+轉帳 > transfer\-money\-from\|into\-an\-account;
+席位 > parliamentary\-or\-congressional\-seat;
+布什 > \(george\)\-bush\-\(former\-us\-president\);
+審訊 > a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+筆桿 > the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 > degree\-of\-seriousness\-of\-an\-illness;
+主辦 > host\-\(a\-conference\-or\-sports\-event\);
+本草 > a\-book\-on\-chinese\-\(herbal\)\-medicine;
+人物 > characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 > speaker\-\(of\-a\-legislative\-assembly\);
+安南 > \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 > get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 > \(of\-a\-dwelling\)\-supplied\-with\-water;
+話題 > subject\-\(of\-a\-talk\-or\-conversation\);
+事務 > \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 > we\-\(including\-the\-person\-spoken\-to\);
+率先 > take\-the\-lead\-\(showing\-inititative\);
+包租 > rent\-land\-or\-a\-house\-for\-subletting;
+明文 > \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+透視 > to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 > report\-\(an\-incident\)\-to\-the\-police;
+碑帖 > a\-rubbing\-from\-a\-stone\-inscription;
+牛年 > year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+包廂 > box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 > transfer\-\(technology\,\-goods\,\-etc\.\);
+盜版 > pirate\-version\-\(of\-software\,\-e\.g\.\);
+緣份 > fate\-\(which\-brings\-people\-together;
+平壤 > pyongyang\-\(capital\-of\-north\-korea\);
+擔任 > hold\-a\-governmental\-office\-or\-post;
+克服 > \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 > to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+案驗 > investigate\-the\-evidence\-of\-a\-case;
+托運 > to\-book\-or\-check\-through\-\(baggage\);
+戶部 > feudal\-chinese\-ministry\-of\-revenue;
+推動 > to\-push\-\(for\-acceptance\-of\-a\-plan\);
+亞軍 > second\-place\-\(in\-a\-sports\-contest\);
+顏體 > yan\-style\-\(in\-chinese\-calligraphy\);
+久違 > \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+香山 > fragrance\-hill\-\(a\-park\-in\-beijing\);
+銷毀 > to\-destroy\-\(by\-melting\-or\-burning\);
+北魏 > the\-northern\-wei\-dynasty\-\(386\-534\);
+暴病 > sudden\-attack\-of\-a\-serious\-illness;
+人大 > \(china\)\-national\-people''s\-congress;
+熱鬧 > bustling\-with\-noise\-and\-excitement;
+呈文 > petition\-\(submitted\-to\-a\-superior\);
+春節 > spring\-festival\-\(chinese\-new\-year\);
+𠼻 > a\-particle\-used\-in\-transliteration;
+新疆 > xinjiang\-\(uygur\-autonomous\-region\);
+網絡 > \(computer\,\-telecom\,\-etc\.\)\-network;
+壁毯 > tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 > rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 > maintain\-\(that\-something\-is\-true\);
+分歧 > difference\-\(of\-opinion\,\-position\);
+連戰 > lien\-chan\-\(taiwan\-vice\-president\);
+制度 > \(political\)\-system\-or\-institution;
+補習 > take\-lessons\-after\-school\-or\-work;
+建交 > to\-establish\-diplomatic\-relations;
+火災 > fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 > \(of\-a\-teacher\)\-to\-prepare\-lessons;
+開演 > \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 > prepare\-against\-natural\-disasters;
+全會 > plenary\-session\-\(at\-a\-conference\);
+便難 > retort\-with\-challenging\-questions;
+答辯 > to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+圖書 > books\-\(in\-a\-library\-or\-bookstore\);
+家長 > the\-parent\-or\-guardian\-of\-a\-child;
+回歸 > to\-return\-\(to\-previous\-condition\);
+骨法 > bone\-\(property\-of\-a\-brush\-stroke\);
+科隆 > cologne\,\-germany\-or\-colon\,\-panama;
+打消 > dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+找到 > find\-\(what\-one\-was\-searching\-for\);
+召開 > convene\-\(a\-conference\-or\-meeting\);
+呼籲 > call\-on\-\(someone\-to\-do\-something\);
+科爾 > \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 > ramadan\-\(muslim\-month\-of\-fasting\);
+起來 > beginning\-or\-continuing\-an\-action;
+北齊 > the\-northern\-qi\-dynasty\-\(550\-557\);
+吐穗 > to\-have\-the\-ears\-of\-grain\-come\-up;
+請願 > petition\-\(for\-action\-to\-be\-taken\);
+享受 > to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+三峽 > the\-three\-changjiang\-river\-gorges;
+取暖 > to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+院長 > president\-\(of\-a\-university\,\-etc\.\);
+言論 > expression\-of\-\(political\)\-opinion;
+政界 > political\-and\-government\-circles;
+性別 > distinguishing\-between\-the\-sexes;
+違禁 > to\-violate\-a\-prohibtition\-or\-ban;
+酬和 > to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 > enter\-oneself\-for\-an\-examination;
+北國 > the\-northern\-part\-of\-the\-country;
+外孫 > grandson\-\(son\-of\-one''s\-daughter\);
+大國 > a\-power\-\(ie\,\-a\-dominant\-country\);
+探親 > to\-go\-home\-to\-visit\-one''s\-family;
+難以 > hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 > render\-service\-to\-repay\-kindness;
+親戚 > \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 > \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 > the\-traditional\-chinese\-calendar;
+按說 > in\-the\-ordinary\-course\-of\-events;
+連任 > continue\-in\-\(a\-political\)\-office;
+臉譜 > types\-of\-facial\-makeup\-in\-operas;
+開庭 > begin\-a\-\(judicial\)\-court\-session;
+公審 > public\-trial\-\(in\-a\-court\-of\-law\);
+但願 > if\-only\-\(it\-were\-possible\-to\.\.\.\);
+捨得 > to\-be\-willing\-to\-part\-with\-\(sth\);
+持有 > hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 > make\-a\-stand\-and\-fight\-\(against\);
+篦子 > a\-double\-edged\-fine\-toothed\-comb;
+投機 > be\-a\-speculator\-\(profit\-seeking\);
+挪借 > to\-borrow\-money\-for\-a\-short\-time;
+宰相 > prime\-minister\-\(in\-feudal\-china\);
+虛腕 > empty\-wrist\-\(method\-of\-painting\);
+不論 > no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+保修 > guarantee\-to\-keep\-in\-good\-repair;
+金邊 > phnom\-penh\-\(capital\-of\-cambodia\);
+侵佔 > to\-invade\-and\-occupy\-\(territory\);
+柯密 > kermit\-\(communications\-protocol\);
+享有 > enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 > a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 > turkic\-\(minority\-group\-in\-china\);
+安保 > \(abbreviation\)\-maintain\-security;
+壽麵 > birthday\-noodles\-\(for\-longevity\);
+浴室 > bathroom\-\(room\-used\-for\-bathing\);
+令人 > cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+除非 > only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 > discrimination\-\(against\-someone\);
+敗落 > decline\-\(in\-wealth\-and\-position\);
+無錫 > wuxi\-\(city\)\,\-in\-jiangsu\-province;
+暗合 > agree\-without\-prior\-consultation;
+姐夫 > brother\-in\-law\-\(husband''s\-side\);
+特區 > special\-\(administrative\)\-region;
+日圓 > japanese\-yen\-\(unit\-of\-currency\);
+壁櫥 > a\-built\-in\-wardrobe\-or\-cupboard;
+避暑 > be\-away\-for\-the\-summer\-holidays;
+步搖 > dangling\-ornament\-worn\-by\-women;
+邦交 > relations\-between\-two\-countries;
+提煉 > to\-extract\-\(ore\,\-minerals\,\-etc\);
+橋接 > bridging\-\(in\-computer\-networks\);
+八方 > the\-eight\-points\-of\-the\-compass;
+內政 > internal\-affairs\-\(of\-a\-country\);
+迫使 > force\-\(someone\-to\-do\-something\);
+長廊 > the\-long\-corridor\-at\-yi\-he\-yuan;
+元帥 > a\-marshal\-\(in\-the\-armed\-forces\);
+校長 > \(college\,\-university\)\-president;
+開刀 > to\-perform\-or\-have\-an\-operation;
+輩分 > seniority\-in\-the\-family\-or\-clan;
+尾牙 > a\-year\-end\-dinner\-for\-employees;
+班輪 > regular\-passenger\-or\-cargo\-ship;
+抨擊 > attack\-\(verbally\-or\-in\-writing\);
+舞台 > \(theatrical\-or\-political\)\-stage;
+猛跌 > drop\-sharply\-\(eg\,\-stock\-prices\);
+信件 > a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+使命 > a\-\(diplomatic\-or\-other\)\-mission;
+丹皮 > the\-root\-bark\-of\-the\-peony\-tree;
+定做 > to\-have\-something\-made\-to\-order;
+重用 > to\-put\-in\-an\-important\-position;
+比賽 > \[athletic\-or\-other\]\-competition;
+敘述 > relate\-\(a\-story\-or\-information\);
+加重 > become\|make\-more\-serious\|graver;
+蔚為 > to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+電臺 > radio\-\(or\-broadcasting\)\-station;
+碑林 > the\-forest\-of\-steles\-\(in\-xi''an\);
+外灘 > waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 > confirm\-\(something\-to\-be\-true\);
+議員 > member\-\(of\-a\-legislative\-body\);
+報表 > forms\-for\-reporting\-statistics;
+明報 > ming\-pao\-newspaper\-\(hong\-kong\);
+前程 > future\-\(career\,\-etc\)\-prospects;
+登門 > pay\-a\-visit\-to\-someone''s\-house;
+邊民 > people\-living\-on\-the\-frontiers;
+那末 > if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 > effect\-\(eg\,\-greenhouse\-effect\);
+歹徒 > evil\-person\-who\-commits\-crimes;
+收復 > recover\-\(lost\-territory\,\-etc\.\);
+傲骨 > lofty\-and\-unyielding\-character;
+斷交 > break\-off\-diplomatic\-relations;
+帳戶 > \(bank\,\-computer\,\-etc\.\)\-account;
+固然 > admittedly\-\(it''s\-true\-that\.\.\.\);
+臺獨 > taiwan\-independence\-\(movement\);
+保苗 > keep\-a\-full\-stand\-of\-seedlings;
+路由 > routing\-\(in\-computer\-networks\);
+對美 > \(policy\,\-etc\.\)\-towards\-america;
+指數 > \(numerical\,\-statistical\)\-index;
+筆畫 > strokes\-of\-a\-chinese\-character;
+空襲 > \(military\)\-attack\-from\-the\-air;
+表報 > statistical\-tables\-and\-reports;
+拘押 > \(arrest\-and\)\-take\-into\-custody;
+尚書 > high\-official\-in\-ancient\-china;
+聳立 > to\-tower\-above\-\(on\-top\-of\-sth\);
+班組 > teams\-and\-groups\-\(in\-factories;
+伯母 > wife\-of\-father''s\-elder\-brother;
+中藥 > \(traditional\)\-chinese\-medicine;
+暗袋 > camera\-bag\-\(for\-changing\-film\);
+處決 > execute\-\(a\-condemned\-criminal\);
+新鮮 > fresh\-\(experience\,\-food\,\-etc\.\);
+叫聲 > yelling\-\(sound\-made\-by\-person\);
+班師 > withdraw\-troops\-from\-the\-front;
+哀悼 > grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 > cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 > be\-defeated\-on\-the\-battlefield;
+包賠 > guarantee\-to\-pay\-compensations;
+名次 > position\-in\-a\-ranking\-of\-names;
+嫂嫂 > sister\-in\-law\-\(husband''s\-side\);
+奉行 > to\-pursue\-\(a\-course\,\-a\-policy\);
+呼喚 > call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 > the\-original\-form\-for\-七\-u\+4e03;
+𠀀 > the\-sound\-made\-by\-breathing\-in;
+示威 > hold\-a\-\(protest\)\-demonstration;
+吃刀 > penetration\-of\-a\-cutting\-tool;
+各位 > everybody\-\(a\-term\-of\-address\);
+韓圓 > korean\-won\-\(unit\-of\-currency\);
+報社 > general\-office\-of\-a\-newspaper;
+發跡 > to\-rise\-to\-power\-and\-position;
+支援 > provide\-assistance\-or\-backing;
+觀測 > \(scientific\,\-etc\)\-observation;
+違心 > against\-ones\-will\-or\-feelings;
+拼音 > pinyin\-\(chinese\-romanization\);
+境外 > outside\-\(a\-country''s\)\-borders;
+拌面 > noodles\-served\-with\-soy\-sauce;
+直接 > direct\-\(opposite\-of\-indirect\);
+鏡頭 > camera\-shot\-\(in\-a\-movie\,\-etc\);
+莫不 > there\-is\-no\-one\-\(who\-doesn''t\);
+送人 > to\-see\-\(or\-walk\)\-someone\-home;
+白文 > the\-text\-of\-an\-annotated\-book;
+將領 > high\-ranking\-military\-officer;
+掌權 > wield\-\(political\,\-etc\.\)\-power;
+促進 > to\-promote\-\(an\-idea\-or\-cause\);
+公安 > \(ministry\-of\)\-public\-security;
+病根 > an\-incompletely\-cured\-illness;
+補報 > make\-a\-report\-after\-the\-event;
+對臺 > \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 > a\-small\-drum\-for\-marking\-time;
+贅述 > to\-say\-more\-than\-is\-necessary;
+實肘 > full\-arm\-\(method\-of\-painting\);
+淘金 > panning\-\(for\-precious\-metals\);
+戈爾 > \(al\)\-gore\-\(us\-vice\-president\);
+亂說 > to\-make\-irresponsible\-remarks;
+不軌 > against\-the\-law\-or\-discipline;
+保商 > preservation\-of\-soil\-moisture;
+作戰 > conduct\-\(military\-operations\);
+世行 > \[abbreviation\-for\]\-world\-bank;
+中華 > china\-\(alternate\-formal\-name\);
+侵入 > to\-make\-\(military\)\-incursions;
+球檯 > table\-\(for\-games\-using\-balls\);
+下臺 > step\-down\-\(from\-office\,\-etc\.\);
+貪污 > \(political\,\-moral\)\-corruption;
+中級 > middle\-level\-\(in\-a\-hierarchy\);
+有的 > \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 > rice\-with\-meat\-and\-vegitables;
+下班 > to\-come\-or\-go\-or\-get\-off\-work;
+包銷 > have\-exclusive\-selling\-rights;
+讓球 > to\-concede\-points\-\(in\-a\-game\);
+書房 > study\-\(i\.e\.\-the\-kind\-of\-room\);
+認識 > be\-acquainted\-with\-\(a\-person\);
+卻病 > to\-prevent\-or\-treat\-a\-disease;
+遲遲 > \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+𠀅 > an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 > durban\-\(city\-in\-south\-africa\);
+擺輪 > balance\-\(of\-a\-watch\-or\-clock\);
+擺設 > furnish\-and\-decorate\-\(a\-room\);
+熱線 > hotline\-\(communications\-link\);
+法制 > legal\-system\-and\-institutions;
+水平 > level\-\(of\-achievement\,\-etc\.\);
+夫權 > authority\-over\-the\-household;
+印尼 > \(abbreviation\-for\)\-indonesia;
+變價 > appraise\-at\-the\-current\-rate;
+妹夫 > brother\-in\-law\-\(wife''s\-side\);
+進而 > and\-then\-\(what\-follows\-next\);
+陣線 > a\-front\-\(ie\,\-militant\-group\);
+歲月 > the\-years\-of\-a\-person''s\-life;
+歸屬 > be\-under\-the\-jurisdiction\-of;
+在野 > be\-out\-of\-\(political\)\-office;
+廠房 > a\-building\-used\-as\-a\-factory;
+判決 > judgment\-\(by\-a\-court\-of\-law\);
+困難 > \(financial\,\-etc\.\)\-difficulty;
+掛號 > to\-register\-\(a\-letter\,\-etc\.\);
+補苗 > fill\-the\-gaps\-with\-seedlings;
+武力 > \(make\-use\-of\)\-military\-force;
+放假 > to\-have\-a\-holidy\-or\-vacation;
+舉重 > \(the\-sport\-of\)\-weightlifting;
+嚴詞 > \(criticize\,\-etc\.\)\-forcefully;
+境內 > within\-\(a\-country''s\)\-borders;
+華人 > ethnic\-chinese\-person\|people;
+橋本 > \(japanese\-surname\)\-hashimoto;
+地皮 > lot\,\-section\-of\-land\,\-ground;
+轉機 > \(take\-a\)\-turn\-for\-the\-better;
+常委 > member\-of\-standing\-committee;
+起飛 > to\-take\-off\-\(in\-an\-airplane\);
+開幕 > to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 > to\-give\-or\-have\-an\-injection;
+璧謝 > decline\-\(a\-gift\)\-with\-thanks;
+對華 > \(policy\,\-etc\.\)\-towards\-china;
+儀器 > \(scientific\,\-etc\)\-instrument;
+究辦 > to\-investigate\-and\-deal\-with;
+定罪 > convict\-\(someone\-of\-a\-crime\);
+本題 > the\-subject\-under\-discussion;
+背簍 > a\-basket\-carried\-on\-the\-back;
+有關 > to\-have\-something\-to\-do\-with;
+來源 > source\-\(of\-information\,\-etc\);
+獲釋 > obtain\-release\-\(from\-prison\);
+對日 > \(policy\,\-etc\.\)\-towards\-japan;
+憋氣 > feel\-suffocated\-or\-oppressed;
+同胞 > fellow\-citizen\-or\-countryman;
+匾額 > a\-horizontal\-inscribed\-board;
+確診 > to\-make\-a\-definite\-diagnosis;
+它們 > they\-\(for\-inanimate\-objects\);
+現場 > scene\-\(of\-event\-or\-incident\);
+愛情 > love\-\(between\-man\-and\-woman\);
+變節 > make\-a\-political\-recantation;
+涉嫌 > to\-be\-a\-suspect\-\(in\-a\-crime\);
+失足 > to\-take\-a\-wrong\-step\-in\-life;
+犧牲 > sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 > abe\-\(short\-form\-for\-abraham\);
+猜忌 > be\-suspicious\-and\-jealous\-of;
+黨內 > within\-the\-\(communist\)\-party;
+動蕩 > \(social\-or\-political\)\-unrest;
+王丹 > wang\-dan\-\(chinese\-dissident\);
+決定 > to\-decide\-\(to\-do\-something\);
+姊妹 > \(older\-and\-younger\)\-sisters;
+逼肖 > bear\-a\-close\-resemblance\-to;
+復審 > reexamine\-\(a\-judicial\-case\);
+入門 > introduction\-\(to\-a\-subject\);
+白露 > white\-dew\-\(15th\-solar\-term\);
+補體 > complement\-\(in\-blood\-serum\);
+評比 > to\-evaluate\-\(by\-comparison\);
+轉身 > \(of\-a\-person\)\-to\-turn\-round;
+爪哇 > java\-\(programming\-language\);
+效忠 > vow\-loyalty\-and\-devotion\-to;
+採辦 > buy\-on\-a\-considerable\-scale;
+弟妹 > sister\-in\-law\-\(wife''s\-side\);
+陷於 > caught\-in\-\(a\-bad\-situation\);
+外匯 > foreign\-\(currency\)\-exchange;
+摘由 > high\-points\-\(of\-a\-document\);
+側躺 > to\-lie\-down\-\(on\-one''s\-side\);
+搜捕 > hunt\-and\-arrest\-\(fugitives\);
+揹書 > recite\-a\-lesson\-from\-memory;
+幸免 > narrowly\-and\-luckily\-escape;
+國標 > guobiao\-\(encoding\-standard\);
+便血 > having\-blood\-in\-one''s\-stool;
+病機 > interpretation\-of\-the\-cause;
+才華 > literary\-or\-artistic\-talent;
+指法 > finger\-method\-\(in\-painting\);
+寶藏 > precious\-\(mineral\)\-deposits;
+提前 > to\-shift\-to\-an\-earlier\-date;
+輩出 > come\-forth\-in\-large\-numbers;
+板鴨 > pressed\-\(dried\)\-salted\-duck;
+拔海 > elevation\-\(above\-sea\-level\);
+倫敦 > london\-\(capital\-of\-england\);
+條款 > clause\-\(of\-contract\-or\-law\);
+病例 > \[medical\]\-case\-\[of\-illness\];
+器官 > organ\-\(part\-of\-body\-tissue\);
+班級 > classes\-or\-grades\-in\-school;
+憲法 > constitution\-\(of\-a\-country\);
+不諱 > without\-concealing\-anything;
+安插 > place\-in\-a\-certain\-position;
+古蹟 > places\-of\-historic\-interest;
+氣體 > gas\-\(ie\,\-gaseous\-substance\);
+孫子 > grandson\-\(son\-of\-one''s\-son\);
+奔騰 > \(of\-waves\)\-to\-surge\-forward;
+郵電 > post\-and\-telecommunications;
+問候 > give\-someone\-one''s\-respects;
+祖父 > grandfather\-\(father''s\-side\);
+決策 > \(make\-a\)\-strategic\-decision;
+祖母 > grandmother\-\(father''s\-side\);
+針灸 > acupuncture\-and\-moxibustion;
+一旦 > in\-case\-\(something\-happens\);
+壽辰 > birthday\-\(of\-an\-old\-person\);
+復甦 > recovery\-\(health\,\-economic\);
+時期 > a\-period\-in\-time\-or\-history;
+各地 > in\-all\-parts\-of\-\(a\-country\);
+碑文 > an\-inscription\-on\-a\-tablet;
+台北 > taipei\-\(capital\-of\-taiwan\);
+河內 > hanoi\-\(capital\-of\-vietnam\);
+量力 > to\-estimate\-one''s\-strength;
+斡旋 > mediate\-\(a\-conflict\,\-etc\.\);
+牌匾 > board\-\(attached\-to\-a\-wall\);
+動手 > to\-hit\-with\-hands\-or\-fists;
+步月 > to\-stroll\-beneath\-the\-moon;
+誓師 > to\-vow\-before\-one''s\-troops;
+部委 > ministries\-and\-commissions;
+難怪 > \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 > \(loan\,\-wage\,\-price\)\-freeze;
+施加 > exert\-\(effort\-or\-pressure\);
+視窗 > windows\-\(operating\-system\);
+巨著 > monumental\-\(literary\)\-work;
+募化 > to\-collect\-alms\-\(buddhism\);
+部下 > troops\-under\-one''s\-command;
+全程 > \(during\-an\)\-entire\-journey;
+長篇 > lengthy\-\(report\-or\-speech\);
+西湖 > the\-west\-lake\,\-in\-hangzhou;
+撥弄 > move\-to\-and\-fro\-\(with\-hand;
+表記 > something\-given\-as\-a\-token;
+表裡 > the\-outside\-and\-the\-inside;
+逼債 > press\-for\-payment\-of\-debts;
+筆鋒 > the\-tip\-of\-a\-writing\-brush;
+報刊 > newspapers\-and\-periodicals;
+演講 > \(give\)\-a\-speech\-or\-lecture;
+國父 > father\|founder\-of\-a\-nation;
+依靠 > rely\-on\-\(for\-support\,\-etc\);
+所長 > head\-of\-an\-institute\,\-etc\.;
+若干 > a\-certain\-number\|amount\-of;
+競選 > run\-for\-\(electoral\)\-office;
+搶先 > to\-rush\-\(to\-do\-sth\-urgent\);
+停留 > stay\-somewhere\-temporarily;
+病株 > diseased\-or\-infected\-plant;
+俗稱 > be\-commonly\-referred\-to\-as;
+行將 > be\-about\-to\-\(do\-something\);
+足球 > football\-\(british\-english\);
+背脊 > the\-back\-of\-the\-human\-body;
+抗擊 > resist\-\(a\-military\-attack\);
+尋機 > to\-look\-for\-an\-opportunity;
+實況 > what\-is\-actually\-happening;
+丁雲 > ding\-yun\-\(a\-personal\-name\);
+案板 > kneading\-or\-chopping\-board;
+保守 > \(politically\)\-conservative;
+不送 > don''t\-bother\-to\-see\-me\-out;
+神道 > shinto\-\(japanese\-religion\);
+將就 > accept\-\(a\-bit\-reluctantly\);
+懷抱 > \(within\-someone''s\)\-embrace;
+右邊 > right\-\(as\-opposed\-to\-left\);
+社論 > editorial\-\(in\-a\-newspaper\);
+家常 > the\-daily\-life\-of\-a\-family;
+書聖 > a\-great\-calligraphy\-master;
+資本 > capital\-\(as\-in\-capitalism\);
+風琴 > organ\-\(musical\-instrument\);
+字帖 > copybook\-\(for\-calligraphy\);
+安分 > not\-go\-beyond\-one''s\-bounds;
+暗笑 > laugh\-in\-\(up\)\-one''s\-sleeve;
+美玲 > mei\-ling\-\(a\-person''s\-name\);
+碧血 > blood\-shed\-in\-a\-just\-cause;
+洪森 > hun\-sen\-\(cambodian\-leader\);
+稟告 > report\-\(to\-one''s\-superior\);
+遺體 > remains\-\(of\-a\-dead\-person\);
+避風 > take\-shelter\-from\-the\-wind;
+福建 > fujian\-\(province\-of\-china\);
+勘誤 > to\-correct\-printing\-errors;
+升級 > to\-escalate\-\(in\-intensity\);
+強調 > to\-emphasize\-\(a\-statement\);
+而且 > not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 > to\-move\-the\-capitol\-\(city\);
+不但 > not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 > make\-a\-production\-contract;
+北朝 > the\-northern\-dynasties\-\(a;
+包攬 > undertake\-the\-whole\-thing;
+勞教 > reeducation\-through\-labor;
+半場 > half\-of\-a\-game\-or\-contest;
+發達 > developed\-\(country\,\-etc\.\);
+瀉露 > to\-leak\-out\-\(information\);
+歲數 > age\-\(number\-of\-years\-old\);
+開設 > offer\-\(goods\-or\-services\);
+廣東 > guangdong\-province\,\-china;
+放心 > to\-set\-one''s\-mind\-at\-rest;
+魯迅 > name\-of\-an\-author\,\-lu\-xun;
+遙望 > to\-look\-into\-the\-distance;
+補足 > bring\-up\-to\-full\-strength;
+熬夜 > stay\-up\-late\-or\-all\-night;
+體驗 > to\-experience\-for\-oneself;
+撕毀 > tear\-up\-\(a\-contract\,\-etc\);
+傾銷 > to\-dump\-\(goods\,\-products\);
+看法 > way\-of\-looking\-at\-a\-thing;
+關注 > follow\-\(an\-issue\)\-closely;
+剝啄 > tap\-\(on\-a\-door\-or\-window\);
+辨析 > differentiate\-and\-analyse;
+國產 > made\-in\-one''s\-own\-country;
+白族 > the\-bai\-\(pai\)\-nationality;
+病癒 > recover\-\(from\-an\-illness\);
+寬限 > extend\-\(a\-deadline\,\-etc\.\);
+表態 > make\-known\-one''s\-position;
+宣誓 > swear\-an\-oath\-\(of\-office\);
+拜望 > call\-to\-pay\-one''s\-respect;
+篇幅 > \(take\-up\-or\-devote\)\-space;
+首相 > \(japanese\)\-prime\-minister;
+把式 > person\-skilled\-in\-a\-trade;
+淘籮 > basket\-\(for\-washing\-rice\);
+甥女 > niece\-\(sister''s\-daughter\);
+漢人 > han\-chinese\-person\|people;
+伺機 > to\-watch\-for\-one''s\-chance;
+頸部 > the\-neck\-area\-of\-the\-body;
+背影 > a\-view\-of\-somebody''s\-back;
+狡賴 > to\-deny\-\(through\-sophism\);
+變賣 > sell\-off\-\(one''s\-property\);
+決賽 > finals\-\(of\-a\-competition\);
+板書 > writing\-on\-the\-blackboard;
+珀斯 > perth\-\(city\-in\-australia\);
+愛憐 > show\-tender\-affection\-for;
+暴漲 > rise\-suddenly\-and\-sharply;
+錄共 > to\-take\-down\-a\-confession;
+本家 > a\-member\-of\-the\-same\-clan;
+面臨 > be\-faced\-with\-\(a\-problem\);
+池湯 > large\-pool\-in\-a\-bathhouse;
+獎勵 > reward\-\(as\-encouragement\);
+順差 > \(trade\-or\-budget\)\-surplus;
+初選 > \(us\)\-primaries\-\(election\);
+報銷 > submit\-an\-expense\-account;
+叔叔 > father''s\-younger\-brother;
+城關 > area\-outside\-a\-city\-gate;
+運算 > \(mathematical\)\-operation;
+州長 > governor\-\(of\-a\-us\-state\);
+部屬 > affiliated\-to\-a\-ministry;
+引擎 > engine\-\(transliteration\);
+登記 > to\-register\-\(one''s\-name\);
+機組 > flight\-crew\-\(on\-a\-plane\);
+遼寧 > liaoning\-province\,\-china;
+照常 > \(business\,\-etc\)\-as\-usual;
+撫摸 > gently\-caress\-and\-stroke;
+切斷 > cut\-off\-\(a\-supply\,\-etc\.\);
+建制 > organizational\-structure;
+退役 > retire\-from\-the\-military;
+違反 > to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 > help\-in\-the\-mess\-kitchen;
+補稅 > pay\-a\-tax\-one\-has\-evaded;
+襲擊 > \(make\-a\)\-surprise\-attack;
+白淨 > \(of\-skin\)\-fair\-and\-clear;
+巡查 > to\-go\-around\-and\-inspect;
+兵書 > a\-book\-on\-the\-art\-of\-war;
+產銷 > production\-and\-marketing;
+闌尾 > appendix\-\(in\-human\-body\);
+幅員 > a\-country''s\-surface\-area;
+撥付 > appropriate\-sum\-of\-money;
+國營 > state\-run\-\(company\,\-etc\);
+損失 > a\-\(financial\,\-etc\.\)\-loss;
+辦公 > handle\-official\-business;
+余震 > \(earthquake\)\-aftershocks;
+畚箕 > a\-bamboo\-or\-wicker\-scoop;
+突顯 > make\-something\-stand\-out;
+握力 > \(strength\-of\-one''s\)\-grip;
+馬裡 > mali\-\(name\-of\-a\-country\);
+病態 > morbid\-or\-abnormal\-state;
+控制 > to\-\(have\)\-control\-\(over\);
+佳能 > canon\-\(japanese\-company\);
+病家 > a\-patient\-and\-his\-family;
+疑惑 > \(a\-sense\-of\)\-uncertainty;
+打牌 > to\-play\-mahjong\-or\-cards;
+做客 > to\-be\-a\-guest\-or\-visitor;
+行使 > exercise\-\(a\-right\,\-etc\.\);
+筆挺 > \(standing\)\-very\-straight;
+安神 > calm\-\(soothe\)\-the\-nerves;
+聳肩 > to\-shrug\-one''s\-shoulders;
+深空 > deep\-space\-\(outer\-space\);
+唐納 > tanner\-\(english\-surname\);
+呈請 > to\-submit\-\(to\-superiors\);
+上訴 > appeal\-\(a\-judicial\-case\);
+懷念 > to\-cherish\-the\-memory\-of;
+特點 > characteristic\-\(feature\);
+字母 > letter\-\(of\-the\-alphabet\);
+同謀 > to\-conspire\-with\-someone;
+桃園 > taoyuan\-\(city\-in\-taiwan\);
+江面 > the\-surface\-of\-the\-river;
+碑額 > the\-top\-part\-of\-a\-tablet;
+伴奏 > to\-accompany\-\(musically\);
+右翼 > \(politically\)\-right\-wing;
+浙江 > zhejiang\-province\,\-china;
+識見 > knowledge\-and\-experience;
+買帳 > to\-show\-respect\-\(for\-sb\);
+暗箭 > attack\-by\-a\-hidden\-enemy;
+深圳 > shenzhen\-\(city\-in\-china\);
+程度 > degree\-\(level\-or\-extent\);
+大關 > \(reach\-a\)\-critical\-point;
+頭版 > \(newspaper''s\)\-front\-page;
+春聯 > spring\-festivel\-couplets;
+以來 > since\-\(a\-previous\-event\);
+蓮花 > lotus\-\(computer\-company\);
+不日 > within\-the\-next\-few\-days;
+諒解 > \(reach\)\-an\-understanding;
+蓋章 > to\-affix\-a\-seal\-\(to\-sth\);
+觸電 > to\-get\-an\-electric\-shock;
+主動 > \(to\-take\-the\)\-initiative;
+訴說 > tell\-\(to\-another\-person\);
+總統 > president\-\(of\-a\-country\);
+報頭 > masthead\-\(of\-a\-newspaper;
+南沙 > nansha\-\(spratly\)\-islands;
+通道 > \(communications\)\-channel;
+政績 > \(political\)\-achievements;
+忌恨 > hate\-\(due\-to\-envy\,\-etc\);
+雹災 > disaster\-caused\-by\-hail;
+出訪 > visit\-a\-foreign\-country;
+斑斑 > full\-of\-stains\-or\-spots;
+西裝 > \(western\-style\)\-clothes;
+加油 > to\-make\-an\-extra\-effort;
+募捐 > to\-solict\-contributions;
+皴裂 > chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 > what\-one\-sees\-and\-hears;
+南京 > nanjing\-\(city\-in\-china\);
+規約 > terms\-\(of\-an\-agreement\);
+歸心 > converted\-to\-\(religion\);
+逼死 > hound\-somebody\-to\-death;
+統治 > \(political\)\-rule\-\(over\);
+補課 > make\-up\-a\-missed\-lesson;
+這樣 > this\-\(kind\-of\,\-sort\-of\);
+達成 > to\-reach\-\(an\-agreement\);
+百般 > in\-hundred\-and\-one\-ways;
+授計 > to\-confide\-a\-plan\-to\-sb;
+報曉 > herald\-the\-break\-of\-day;
+利市 > \"lai\-see\"\-\(lucky\-money\);
+側重 > place\-extra\-emphasis\-on;
+報恩 > pay\-a\-debt\-of\-gratitude;
+幫子 > outer\-\(of\-cabbage\,\-etc\);
+自豪 > \(feel\-a\-sense\-of\)\-pride;
+防務 > \(pertaining\-to\)\-defense;
+業績 > outstanding\-achievement;
+留言 > to\-leave\-one''s\-comments;
+年來 > over\-the\-last\-\.\.\.\-years;
+開拍 > begin\-shooting\-\(a\-film\);
+分之 > \(indicating\-a\-fraction\);
+答謝 > to\-express\-one''s\-thanks;
+筆談 > conversation\-by\-writing;
+瑪麗 > mali\-\(a\-person''s''\-name\);
+症狀 > symptom\-\(of\-an\-illness\);
+佔領 > to\-occupy\-\(a\-territory\);
+備料 > get\-the\-materials\-ready;
+坦克 > tank\-\(military\-vehicle\);
+四川 > sichuan\-province\,\-china;
+販運 > to\-transport\-\(for\-sale\);
+今譯 > modern\-language\-version;
+投放 > to\-put\-in\-\(circulation\);
+病倒 > be\-down\-with\-an\-illness;
+拷問 > to\-question\-via\-torture;
+患難 > trials\-and\-tribulations;
+鍛煉 > to\-do\-physical\-training;
+蛙泳 > \(swimming\)\-breaststroke;
+怎麼 > \(interrogative\-pronoun\);
+駐守 > \(man\-a\-post\-and\)\-defend;
+溫和 > moderate\-\(policy\,\-etc\.\);
+否認 > to\-declare\-to\-be\-untrue;
+江西 > jiangxi\-province\,\-china;
+愛撫 > to\-show\-tender\-care\-for;
+參與 > to\-participate\-\(in\-sth\);
+港人 > hong\-kong\-person\|people;
+黃河 > yellow\-river\-\(huang\-he\);
+江蘇 > jiangsu\-province\,\-china;
+任命 > to\-appoint\-and\-nominate;
+餅子 > maize\-or\-millet\-pancake;
+期攷 > end\-of\-term\-examination;
+總額 > total\-\(amount\-or\-value\);
+謂語 > \(grammatical\)\-predicate;
+中旬 > middle\-third\-of\-a\-month;
+下旬 > last\-third\-of\-the\-month;
+貝克 > baker\-\(english\-surname\);
+亂吃 > to\-eat\-indiscriminantly;
+恩怨 > \(feeling\-of\)\-resentment;
+不外 > not\-beyond\-the\-scope\-of;
+服刑 > serve\-a\-prison\-sentence;
+莫非 > can\-it\-be\-possible\-that;
+廣西 > guangxi\-province\,\-china;
+奔瀉 > \(of\-torrents\)\-rush\-down;
+遺留 > \(leave\-or\-be\-a\)\-legacy;
+常規 > conventional\-\(weapons\);
+證券 > \(financial\)\-securities;
+往常 > habitually\-in\-the\-past;
+妖冶 > pretty\-and\-flirtatious;
+革命 > \(political\)\-revolution;
+論壇 > forum\-\(for\-discussion\);
+壟斷 > enjoy\-market\-dominance;
+牡丹 > peony\-\(type\-of\-flower\);
+報稅 > declare\-dutiable\-goods;
+公認 > publicly\-known\-\(to\-be\);
+發表 > to\-issue\-\(a\-statement\);
+電器 > \(electrical\)\-appliance;
+殷勤 > politely\,\-solicitously;
+到期 > become\-due\-\(eg\,\-loans\);
+病院 > a\-specialized\-hospital;
+病象 > symptom\-\(of\-a\-disease\);
+欺凌 > to\-bully\-and\-humiliate;
+遍及 > to\-extend\-\(everywhere\);
+簽署 > to\-sign\-\(an\-agreement\);
+報導 > to\-cover\-\(report\)\-news;
+布朗 > english\-surname\,\-brown;
+標準 > \(an\-official\)\-standard;
+退休 > retirement\-\(from\-work\);
+趨附 > to\-ingratiation\-onself;
+筆跡 > a\-person''s\-handwriting;
+盡力 > do\-one''s\-best\-\(effort\);
+筆記 > take\-down\-\(in\-writing\);
+褥子 > cotton\-padded\-mattress;
+病狀 > symptom\-\(of\-a\-disease\);
+儘快 > as\-quickly\-as\-possible;
+激昂 > aroused\-to\-indignation;
+童話 > children''s\-fairy\-tales;
+提交 > submit\-\(a\-report\,\-etc\);
+供職 > hold\-an\-office\-or\-post;
+來自 > to\-come\-from\-\(a\-place\);
+病征 > symptom\-\(of\-a\-disease\);
+定語 > attributive\-\(modifier\);
+漂流 > carried\-by\-the\-current;
+棄權 > to\-abstain\-from\-voting;
+捏合 > to\-act\-as\-a\-go\-between;
+甲板 > deck\-\(of\-a\-boat\,\-etc\.\);
+捏估 > to\-act\-as\-a\-go\-between;
+梅派 > the\-mei\-lanfang\-school;
+涉過 > ford\-\(a\-stream\,\-river\);
+體內 > internal\-\(to\-the\-body\);
+任職 > hold\-an\-office\-or\-post;
+脊椎 > back\-\(of\-a\-vertibrate\);
+伯父 > father''s\-elder\-brother;
+保安 > ensure\-public\-security;
+上身 > upper\-part\-of\-the\-body;
+字段 > \(numeric\,\-datda\)\-field;
+並舉 > develop\-simultaneously;
+一號 > first\-day\-of\-the\-month;
+審判 > put\-\(someone\)\-to\-trial;
+吐蕃 > ancient\-name\-for\-tibet;
+測定 > to\-survey\-and\-evaluate;
+泰羅 > \(english\-surname\)\-tylo;
+吞聲 > to\-swallow\-one''s\-cries;
+財會 > finance\-and\-accounting;
+交易 > \(business\)\-transaction;
+現役 > \(military\)\-active\-duty;
+民選 > democratically\-elected;
+伯伯 > father''s\-elder\-brother;
+海拔 > height\-above\-sea\-level;
+科技 > science\-and\-technology;
+任免 > to\-appoint\-and\-dismiss;
+亂寫 > to\-write\-without\-basis;
+妖艷 > pretty\-and\-flirtatious;
+零錢 > change\-\(said\-of\-money\);
+不服 > not\-accept\-\(something\);
+鼻兒 > a\-hole\-in\-an\-implement;
+感嘆 > to\-sigh\-\(with\-feeling\);
+化裝 > \(of\-actors\)\-to\-make\-up;
+云南 > yunnan\-province\,\-china;
+服完 > serve\-out\-\(a\-sentence\);
+黃山 > mt\.\-huang\-\(huang\-shan\);
+古波 > gubo\-\(a\-personal\-name\);
+猜拳 > a\-finger\-guessing\-game;
+助詞 > particle\-\(grammatical\);
+讓坐 > to\-give\-up\-one''s\-seat;
+油價 > oil\-\(petroleum\)\-price;
+巨額 > a\-huge\-sum\-\(of\-money\);
+奔放 > bold\-and\-unrestrained;
+得意 > \(be\)\-proud\-of\-oneself;
+奔忙 > be\-busy\-rushing\-about;
+剛直 > upright\-and\-outspoken;
+巡邏 > be\-on\-\(police\)\-patrol;
+降福 > blessings\-from\-heaven;
+炸藥 > explosive\-\(substance\);
+夢想 > to\-dream\-of\-\(in\-vain\);
+防空 > anti\-aircraft\-defense;
+先進 > advanced\-\(technology\);
+奔命 > rush\-about\-on\-errands;
+解決 > to\-settle\-\(a\-dispute\);
+防治 > \(prevention\-and\)\-cure;
+分機 > \(telephone\)\-extension;
+眾望 > people''s\-expectations;
+白糖 > \(refined\)\-white\-sugar;
+擁戴 > to\-support\-\(a\-person\);
+表達 > to\-voice\-\(an\-opinion\);
+報時 > give\-the\-correct\-time;
+隨和 > amiable\-\(disposition\);
+函授 > correspondence\-course;
+迷戀 > to\-be\-infatuated\-with;
+拗陷 > geological\-depression;
+免疫 > immunity\-\(to\-disease\);
+公然 > \(do\-something\)\-openly;
+堅持 > to\-continue\-upholding;
+出差 > be\-on\-a\-business\-trip;
+漸進 > progress\-step\-by\-step;
+限制 > \(impose\)\-restrictions;
+年初 > beginning\-of\-the\-year;
+筆錄 > put\-down\-\(in\-writing\);
+按脈 > feel\-\(take\)\-the\-pulse;
+招聘 > take\-job\-applications;
+光州 > kwangju\-\(south\-korea\);
+工商 > industry\-and\-commerce;
+澳洲 > australia\-\(continent\);
+皮兒 > \(dough\,\-etc\.\)wrappers;
+甘肅 > gansu\-province\,\-china;
+安閒 > peaceful\-and\-carefree;
+艱巨 > very\-difficult\-\(task\);
+蠻橫 > rude\-and\-unreasonable;
+簽字 > to\-sign\-\(a\-signature\);
+安適 > quiet\-and\-comfortable;
+測良 > to\-survey\-and\-measure;
+班車 > regular\-bus\-\(service\);
+案由 > main\-points\-of\-a\-case;
+貶謫 > banish\-from\-the\-court;
+黃魚 > yellow\-croaker\-\(fish\);
+身世 > one''s\-life\-experience;
+抱恨 > have\-a\-gnawing\-regret;
+自古 > \(since\)\-ancient\-times;
+笆斗 > round\-bottomed\-basket;
+二號 > 2\-nd\-day\-of\-the\-month;
+財經 > finance\-and\-economics;
+主語 > \(grammatical\)\-subject;
+嘖嘖 > to\-click\-one''s\-tongue;
+鼻祖 > the\-earliest\-ancestor;
+戀愛 > to\-have\-a\-love\-affair;
+暴跌 > steep\-fall\-\(in\-price\);
+讓開 > to\-get\-out\-of\-the\-way;
+就便 > at\-\(your\)\-convenience;
+可身 > to\-fit\-well\-\(clothes\);
+科研 > \(scientific\)\-research;
+可謂 > it\-could\-even\-be\-said;
+讓路 > to\-make\-way\-\(for\-sth\);
+戶主 > head\-of\-the\-household;
+頒行 > issue\-for\-enforcement;
+湖南 > hunan\-province\,\-china;
+餘數 > \(numerical\)\-remainder;
+不管 > no\-matter\-\(what\,\-how\);
+版面 > space\-of\-a\-whole\-page;
+不禁 > can''t\-help\-\(doing\-sth;
+昏迷 > to\-lose\-consciousness;
+吐絮 > the\-opening\-of\-a\-boll;
+鋪平 > spread\-out\-\(material\);
+不理 > refuse\-to\-acknowledge;
+變臉 > suddenly\-turn\-hostile;
+海斯 > hayes\-\(microcomputer\);
+東德 > \(former\)\-east\-germany;
+暗礁 > submerged\-reef\-\(rock\);
+買好 > to\-ingratiate\-oneself;
+暗疾 > unmentionable\-disease;
+聳動 > to\-create\-a\-sensation;
+板凳 > wooden\-bench\-or\-stool;
+不暇 > have\-no\-time\-\(for\-sth;
+悲憤 > grief\-and\-indignation;
+特產 > special\-local\-product;
+蕭條 > \(economic\)\-depression;
+殯葬 > funeral\-and\-interment;
+命令 > \(an\)\-order\-or\-command;
+流亡 > to\-\(force\-into\)\-exile;
+卑污 > despicable\-and\-filthy;
+暴卒 > die\-of\-sudden\-illness;
+逼視 > look\-at\-from\-close\-up;
+旺月 > busy\-\(business\)\-month;
+列車 > train\-\(railway\-term\);
+友好 > friendly\-\(relations\);
+櫃邊 > to\-lie\-on\-one''s\-side;
+制裁 > \(economic\)\-sanctions;
+社交 > \(social\)\-interaction;
+操行 > \(student''s\)\-behavior;
+姥姥 > maternal\-grandmother;
+編組 > organize\-into\-groups;
+親近 > get\-close\-to\-someone;
+結論 > \(reach\-a\)\-conclusion;
+闡述 > expound\-\(a\-position\);
+心寒 > be\-very\-disappointed;
+組裝 > assemble\-and\-install;
+誓死 > to\-pledge\-one''s\-life;
+城鄉 > city\-and\-countryside;
+協定 > \(reach\-an\)\-agreement;
+水域 > \(territorial\)\-waters;
+勻整 > neat\-and\-well\-spaced;
+內閣 > \(government\)\-cabinet;
+廠牌 > brand\-\(of\-a\-product\);
+奶奶 > paternal\-grandmother;
+編次 > order\-of\-arrangement;
+教授 > university\-professor;
+勢必 > is\-bound\-to\-\(happen\);
+墨汁 > prepared\-chinese\-ink;
+大將 > a\-general\-or\-admiral;
+氣人 > to\-get\-someone\-angry;
+包場 > book\-a\-whole\-theatre;
+六號 > 6th\-day\-of\-the\-month;
+詞彙 > \(list\-of\)\-vocabulary;
+攝影 > to\-take\-a\-photograph;
+辯白 > offer\-an\-explanation;
+採訪 > cover\-\(a\-news\-story\);
+兵站 > army\-service\-station;
+軍費 > military\-expenditure;
+據悉 > according\-to\-reports;
+前年 > the\-year\-before\-last;
+補色 > complementary\-colour;
+攻勢 > \(military\)\-offensive;
+分擔 > share\-responsibility;
+開發 > exploit\-\(a\-resource\);
+歷代 > successive\-dynasties;
+近日 > in\-the\-past\-few\-days;
+回訪 > \(pay\-a\)\-return\-visit;
+病變 > pathological\-changes;
+凌晨 > early\-in\-the\-morning;
+籠統 > \(in\)\-general\-\(terms\);
+槳狀 > certificate\-of\-merit;
+倚重 > to\-rely\-heavily\-upon;
+把酒 > raise\-one''s\-wine\-cup;
+軍用 > \(for\)\-military\-\(use\);
+保重 > take\-care\-of\-oneself;
+報仇 > to\-revenge\-\(oneself\);
+抄身 > to\-search\-\(a\-person\);
+棉襖 > cotton\-padded\-jacket;
+儘早 > as\-early\-as\-possible;
+培修 > to\-repair\-earthworks;
+尊重 > to\-value\-\(something\);
+病灶 > focus\-\(of\-infection\);
+侵襲 > to\-invade\-and\-attack;
+簡朴 > simple\-and\-unadorned;
+駁運 > transport\-by\-lighter;
+例言 > introductory\-remarks;
+備查 > for\-future\-reference;
+安逸 > easy\-and\-comfortable;
+病房 > ward\-\(of\-a\-hospital\);
+表彰 > cite\-\(in\-dispatches\);
+拜會 > pay\-an\-official\-call;
+專程 > special\-purpose\-trip;
+偽幣 > counterfeit\-currency;
+才略 > ability\-and\-sagacity;
+層次 > arrangement\-of\-ideas;
+筆法 > technique\-of\-writing;
+交通 > \(automobile\)\-traffic;
+啟程 > set\-out\-on\-a\-journey;
+畫報 > pictorial\-\(magazine\);
+侵擾 > to\-invade\-and\-harass;
+屏幕 > \(tv\-or\-movie\)\-screen;
+球網 > net\-\(for\-ball\-games\);
+漢化 > chinese\-localization;
+對峙 > mutual\-confrontation;
+美軍 > us\-army\|armed\-forces;
+位於 > be\-situated\-\(in\,\-at\);
+變頻 > frequency\-conversion;
+單字 > individual\-character;
+清早 > early\-in\-the\-morning;
+背心 > a\-sleeveless\-garment;
+戶口 > registered\-residence;
+本科 > undergraduate\-course;
+便中 > at\-one''s\-convenience;
+寶劍 > a\-double\-edged\-sword;
+醞釀 > mull\-over\-\(an\-issue\);
+暗號 > secret\-signal\-\(sign\);
+老爺 > maternal\-grandfather;
+班期 > schedule\-\(for\-flight;
+買方 > buyer\-\(in\-contracts\);
+安娜 > anna\-\(person''s\-name\);
+責成 > give\-somebody\-a\-task;
+多麼 > how\-\(wonderful\,\-etc\);
+酬謝 > to\-thank\-with\-a\-gift;
+往返 > to\-go\-back\-and\-forth;
+包金 > cover\-with\-gold\-leaf;
+暑熱 > hot\-\(summer\)\-weather;
+不曾 > never\-\(have\-done\-sth;
+總部 > general\-headquarters;
+貶值 > to\-become\-devaluated;
+遺骸 > \(dead\)\-human\-remains;
+遺骨 > \(dead\)\-human\-remains;
+酬答 > to\-thank\-with\-a\-gift;
+類推 > to\-reason\-by\-analogy;
+和好 > to\-become\-reconciled;
+本土 > one''s\-native\-country;
+亞倫 > aaron\-\(a\-man''s\-name\);
+羞恥 > \(a\-feeling\-of\)\-shame;
+哈佛 > harvard\-\(university\);
+暑期 > summer\-vacation\-time;
+呼喊 > shout\-\(slogans\,\-etc\);
+繽紛 > in\-riotous\-profusion;
+呈報 > to\-\(submit\-a\)\-report;
+半白 > fifty\-\(years\-of\-age\);
+𠁥 > the\-horns\-of\-a\-sheep;
+昂然 > upright\-and\-unafraid;
+還說 > to\-add\-\(in\-speaking\);
+更加 > more\-\(than\-sth\-else\);
+爺爺 > paternal\-grandfather;
+不勝 > cannot\-bear\-or\-stand;
+敗胃 > spoil\-one''s\-appetite;
+變心 > cease\-to\-be\-faithful;
+上個 > first\-\(of\-two\-parts\);
+奔流 > flow\-at\-great\-speed;
+日文 > japanese\-\(language\);
+撞見 > to\-meet\-by\-accident;
+差額 > balance\-\(financial\);
+半截 > half\-\(of\-a\-section\);
+剛纔 > \(just\)\-a\-moment\-ago;
+廠礦 > factories\-and\-mines;
+熱烈 > warm\-\(welcome\,\-etc\);
+辯護 > speak\-in\-defence\-of;
+大批 > large\-quantities\-of;
+綁票 > kidnap\-\(for\-ransom\);
+白銅 > copper\-nickel\-alloy;
+統稱 > collectively\-called;
+廢氣 > waste\-\(exhaust\)\-gas;
+包子 > steamed\-stuffed\-bun;
+紅葉 > red\-autumnal\-leaves;
+百貨 > general\-merchandise;
+鬢髮 > hair\-on\-the\-temples;
+儘量 > as\-much\-as\-possible;
+身高 > \(a\-person''s\)\-height;
+教學 > teacher\-and\-student;
+鄙人 > your\-humble\-servant;
+故宮 > the\-imperial\-palace;
+政局 > political\-situation;
+睿智 > wise\-and\-farsighted;
+補角 > supplementary\-angle;
+進攻 > attack\-\(militarily\);
+擺弄 > move\-back\-and\-forth;
+遍布 > be\-found\-everywhere;
+改名 > to\-change\-ones\-name;
+補考 > make\-up\-examination;
+播弄 > order\-subject\-about;
+年底 > the\-end\-of\-the\-year;
+約櫃 > ark\-of\-the\-covenant;
+幫工 > help\-with\-farm\-work;
+報廢 > report\-as\-worthless;
+抬頭 > to\-raise\-one''s\-head;
+執掌 > wield\-\(power\,\-etc\.\);
+兵權 > military\-leadership;
+逼供 > extort\-a\-confession;
+開放 > lift\-\(restrictions\);
+登月 > go\-\(up\)\-to\-the\-moon;
+幣值 > value\-of\-a\-currency;
+冰場 > skating\-or\-ice\-rink;
+目前 > at\-the\-present\-time;
+筆譯 > written\-translation;
+筆試 > written\-examination;
+關切 > be\-deeply\-concerned;
+走開 > get\-out\-of\-the\-way\!;
+覆亡 > fall\-\(of\-an\-empire\);
+裁斷 > consider\-and\-decide;
+紀元 > beginning\-of\-an\-era;
+兵團 > large\-military\-unit;
+辦事 > to\-handle\-\(affairs\);
+糾偏 > to\-correct\-an\-error;
+才識 > ability\-and\-insight;
+按理 > according\-to\-reason;
+輔幣 > fractional\-currency;
+搭伴 > travel\-with\-another;
+國旗 > flag\-\(of\-a\-country\);
+軍政 > army\-and\-government;
+病況 > state\-of\-an\-illness;
+轉向 > change\-of\-direction;
+白卷 > blank\-examine\-paper;
+八仙 > the\-eight\-immortals;
+較大 > comparatively\-large;
+筆算 > do\-a\-sum\-in\-writing;
+裁奪 > consider\-and\-decide;
+提出 > to\-raise\-\(an\-issue\);
+白人 > white\-man\-and\-woman;
+做法 > way\-of\-doing\-things;
+抽煙 > smoke\-\(a\-cigarette\);
+表情 > \(facial\)\-expression;
+補助 > \(financial\)\-subsidy;
+膠片 > \(photographic\)\-film;
+病情 > state\-of\-an\-illness;
+柔道 > \(the\-sport\-of\)\-judo;
+採制 > collect\-and\-process;
+抄獲 > to\-search\-and\-seize;
+表姐 > older\-female\-cousin;
+軟件 > \(computer\)\-software;
+招待 > to\-receive\-\(guests\);
+拜年 > pay\-a\-new\-year\-call;
+互通 > to\-intercommunicate;
+篡位 > to\-seize\-the\-throne;
+罷黜 > dismiss\-from\-office;
+屬實 > turn\-out\-to\-be\-true;
+派遣 > send\-\(on\-a\-mission\);
+並重 > lay\-equal\-stress\-on;
+才學 > talent\-and\-learning;
+耕耘 > plowing\-and\-weeding;
+慈祥 > \(a\)\-kindly\-\(person\);
+安樂 > peace\-and\-happiness;
+騙取 > to\-gain\-by\-cheating;
+涼爽 > cool\-and\-refreshing;
+黨組 > leading\-party\-group;
+例外 > \(make\-an\)\-exception;
+議題 > topic\-of\-discussion;
+資源 > \(natural\)\-resources;
+商會 > chamber\-of\-commerce;
+赤字 > \(financial\)\-deficit;
+並聯 > parallel\-connection;
+財源 > financial\-resources;
+量變 > quantitative\-change;
+耐煩 > patient\-\(adjective\);
+丙綸 > polypropylene\-fibre;
+決議 > \(pass\-a\)\-resolution;
+錯字 > incorrect\-character;
+伴唱 > vocal\-accompaniment;
+識貨 > to\-know\-what''s\-what;
+官員 > government\-official;
+稟性 > natural\-disposition;
+預習 > to\-prepare\-a\-lesson;
+流派 > school\-\(of\-thought\);
+哀憐 > feel\-compassion\-for;
+財寶 > money\-and\-valuables;
+耐心 > patient\-\(adjective\);
+日語 > japanese\-\(language\);
+事宜 > \(make\)\-arrangements;
+敗類 > scum\-of\-a\-community;
+旗袍 > chinese\-style\-dress;
+徐行 > walk\-slowly\,\-stroll;
+財力 > financial\-resources;
+藏族 > tibetan\-nationality;
+照顧 > take\-\(good\)\-care\-of;
+讓步 > \(make\-a\)\-concession;
+邊遠 > far\-from\-the\-center;
+擺闊 > parade\-one''s\-wealth;
+晴朗 > sunny\-and\-cloudless;
+悲壯 > solemn\-and\-stirring;
+罷市 > shopkeeper''s\-strike;
+不妨 > there\-is\-no\-harm\-in;
+大腸 > the\-large\-intestine;
+丹參 > salvia\-miltiorrhiza;
+零落 > withered\-and\-fallen;
+得知 > \(find\-out\-and\)\-know;
+罷官 > dismiss\-from\-office;
+變故 > an\-unforeseen\-event;
+恐怕 > \(i''m\)\-afraid\-\(that\);
+不問 > pay\-no\-attention\-to;
+廠規 > factory\-regulations;
+預定 > schedule\-in\-advance;
+不凡 > out\-of\-the\-ordinary;
+敗績 > be\-utterly\-defeated;
+暴利 > sudden\-huge\-profits;
+罪名 > a\-\(criminal\)\-charge;
+不乏 > there\-is\-no\-lack\-of;
+合同 > \(business\)\-contract;
+幫辦 > assist\-in\-managing;
+酬應 > social\-interaction;
+無論 > no\-matter\-what\|how;
+原定 > originally\-planned;
+通行 > licence\-\(computer\);
+司令 > commanding\-officer;
+糾集 > to\-gather\-together;
+送行 > to\-see\-someone\-off;
+違約 > to\-break\-a\-promise;
+危局 > perilous\-situation;
+撥號 > dial\-\(a\-telephone\);
+變修 > become\-revisionist;
+違章 > to\-break\-the\-rules;
+網管 > network\-management;
+蒙文 > mongolian\-language;
+性交 > sexual\-intercourse;
+物價 > \(commodity\)\-prices;
+後天 > day\-after\-tomorrow;
+太平 > peace\-and\-security;
+矚望 > to\-look\-forward\-to;
+協助 > provide\-assistance;
+採風 > collect\-folk\-songs;
+描金 > to\-outline\-in\-gold;
+助教 > teaching\-assistant;
+夫婦 > a\-\(married\)\-couple;
+英語 > english\-\(language\);
+運氣 > luck\-\(good\-or\-bad\);
+採錄 > collect\-and\-record;
+熊掌 > bear\-paw\-\(as\-food\);
+新兵 > new\-\(army\)\-recruit;
+斃命 > meet\-violent\-death;
+失事 > \(have\-an\)\-accident;
+電信 > telecommunications;
+捨身 > to\-give\-one''s\-life;
+芝蘭 > irises\-and\-orchids;
+改口 > to\-correct\-oneself;
+政務 > government\-affairs;
+內科 > medical\-department;
+元素 > \(chemical\)\-element;
+加入 > to\-become\-a\-member;
+選區 > electoral\-district;
+土著 > native\,\-aboriginal;
+操守 > personal\-integrity;
+傲視 > turn\-up\-one''s\-nose;
+莫如 > it\-would\-be\-better;
+結帳 > to\-settle\-accounts;
+四處 > all\-over\-the\-place;
+違例 > to\-break\-the\-rules;
+坦率 > frank\-\(discussion\);
+運作 > thread\-\(computing\);
+週刊 > weekly\-publication;
+保駕 > escort\-the\-emperor;
+共有 > to\-have\-altogether;
+報喜 > announce\-good\-news;
+跑電 > electrical\-leakage;
+撥刺 > splash\-\(of\-a\-fish\);
+拜見 > pay\-a\-formal\-visit;
+英文 > english\-\(language\);
+初中 > junior\-high\-school;
+抄道 > to\-take\-a\-shortcut;
+演說 > \(deliver\-a\)\-speech;
+要地 > strategic\-location;
+辦報 > to\-run\-a\-newspaper;
+出任 > start\-in\-a\-new\-job;
+內情 > inside\-information;
+開展 > \(begin\-to\)\-develop;
+俄語 > russian\-\(language\);
+山腳 > foot\-of\-a\-mountain;
+公司 > \(business\)\-company;
+拉票 > campaign\-for\-votes;
+手術 > surgical\-operation;
+八卦 > the\-eight\-diagrams;
+體溫 > \(body\)\-temperature;
+漂移 > drift\-\(electrical\);
+停滯 > be\-at\-a\-standstill;
+官邸 > official\-residence;
+拜渴 > pay\-a\-formal\-visit;
+軍官 > \(military\)\-officer;
+筆直 > perfectly\-straight;
+產生 > to\-come\-into\-being;
+駐華 > stationed\-in\-china;
+授受 > to\-give\-and\-accept;
+疫情 > epidemic\-situation;
+深造 > advanced\-\(studies\);
+捨命 > to\-risk\-one''s\-life;
+裁並 > cut\-down\-and\-merge;
+使節 > \(diplomatic\)\-envoy;
+至少 > \(to\-say\-the\)\-least;
+買賣 > buying\-and\-selling;
+測繪 > to\-survey\-and\-draw;
+背約 > break\-an\-agreement;
+路徑 > route\-\(networking\);
+舉例 > to\-give\-an\-example;
+俄文 > russian\-\(language\);
+才智 > ability\-and\-wisdom;
+打拳 > to\-do\-shadowboxing;
+脈欂 > beating\-\(of\-heart\);
+自主 > to\-act\-for\-oneself;
+期貨 > futures\-\(on\-goods\);
+侵截 > to\-hack\-\(computer\);
+頭髮 > hair\-\(on\-the\-head\);
+質疑 > call\-into\-question;
+首次 > for\-the\-first\-time;
+梆子 > watchman''s\-clapper;
+油餅 > deep\-fried\-pancake;
+泄露 > leak\-\(information\);
+投入 > put\-into\-operation;
+析疑 > to\-resolve\-a\-doubt;
+藏語 > tibetan\-\(language\);
+木耳 > edible\-tree\-fungus;
+喘息 > to\-gasp\-for\-breath;
+棄世 > to\-leave\-this\-word;
+愛稱 > term\-of\-endearment;
+專員 > assistant\-director;
+頓足 > stamp\-\(one''s\-feet\);
+現有 > currently\-existing;
+鼻樑 > bridge\-of\-the\-nose;
+參贊 > diplomatic\-officer;
+並立 > exist\-side\-by\-side;
+貿易 > \(commercial\)\-trade;
+酬酢 > to\-exchange\-toasts;
+浪涌 > \(electrical\)\-surge;
+佔先 > to\-take\-precedence;
+背光 > be\-in\-a\-poor\-light;
+深夜 > very\-late\-at\-night;
+露面 > appear\-\(in\-public\);
+商務 > commercial\-affairs;
+猜疑 > harbour\-suspicions;
+貴姓 > what\-is\-your\-name\?;
+猙獰 > mean\-and\-ferocious;
+液壓 > hydraulic\-pressure;
+鼻塞 > have\-a\-stuffy\-nose;
+點心 > light\-refreshments;
+期待 > to\-look\-forward\-to;
+海域 > territorial\-waters;
+比試 > have\-a\-competition;
+外資 > foreign\-investment;
+電路 > \(electric\)\-circuit;
+中將 > lieutenant\-general;
+文藝 > literature\-and\-art;
+版稅 > royalty\-\(on\-books\);
+情報 > \(spy\)\-intelligence;
+編遣 > reorganize\-\(troops;
+泰山 > taishan\-\(mountain\);
+悉尼 > sydney\-\(australia\);
+薄情 > inconstant\-in\-love;
+民用 > \(for\)\-civilian\-use;
+編譯 > translate\-and\-edit;
+福利 > \(material\)\-welfare;
+同學 > \(fellow\)\-classmate;
+並列 > stand\-side\-by\-side;
+不和 > not\-get\-along\-well;
+不厭 > not\-mind\-doing\-sth;
+反感 > \(strongly\)\-dislike;
+針對 > in\-connection\-with;
+另寄 > to\-mail\-separately;
+變幻 > change\-irregularly;
+報關 > declare\-at\-customs;
+署名 > sign\-\(a\-signature\);
+遊覽 > to\-go\-sight\-seeing;
+外界 > the\-outside\-world;
+變天 > change\-of\-weather;
+比濕 > specific\-humidity;
+德文 > german\-\(language\);
+卑怯 > mean\-and\-cowardly;
+兵馬 > troops\-and\-horses;
+碩士 > master''s\-\(degree\);
+白骨 > bones\-of\-the\-dead;
+照相 > take\-a\-photograph;
+白飯 > plain\-cooked\-rice;
+日子 > a\-\(calendar\)\-date;
+教材 > teaching\-material;
+鄰國 > bordering\-country;
+機製 > machine\-processed;
+長達 > extend\-as\-long\-as;
+化妝 > to\-put\-on\-make\-up;
+難捱 > trying\,\-difficult;
+大局 > general\-situation;
+敏感 > sensitive\-\(issue\);
+紡織 > spinning\-\(thread\);
+大多 > for\-the\-most\-part;
+徒刑 > \(prison\)\-sentence;
+支持 > to\-be\-in\-favor\-of;
+紛紛 > one\-after\-another;
+外國 > foreign\-\(country\);
+捕食 > catch\-and\-feed\-on;
+輔課 > subsidiary\-course;
+八股 > eight\-\-part\-essay;
+平民 > \(ordinary\)\-people;
+郊區 > suburban\-district;
+兩者 > both\-sides\|things;
+部份 > part\-\(of\-a\-whole\);
+白肉 > plain\-boiled\-pork;
+邊塞 > frontier\-fortress;
+石刻 > stone\-inscription;
+緊密 > inseparably\-close;
+邊卡 > border\-checkpoint;
+緩和 > to\-ease\-\(tension\);
+編印 > compile\-and\-print;
+凱旋 > return\-triumphant;
+瀉肚 > to\-have\-diarrhoea;
+白眼 > supercilious\-look;
+眼尖 > to\-have\-good\-eyes;
+報帳 > render\-an\-account;
+補發 > supply\-again\-\(sth;
+把頭 > labour\-contractor;
+屏障 > protective\-screen;
+火星 > mars\-\(the\-planet\);
+騎馬 > ride\-on\-horseback;
+抄錄 > to\-make\-a\-copy\-of;
+揭曉 > announce\-publicly;
+病程 > course\-of\-disease;
+申訴 > to\-appeal\-\(to\-sb\);
+供需 > supply\-and\-demand;
+地殼 > the\-earth''s\-crust;
+閉幕 > the\-curtain\-falls;
+盛名 > famous\-reputation;
+工委 > working\-committee;
+筆調 > \(of\-writing\)\-tone;
+展覽 > to\-put\-on\-display;
+白布 > plain\-white\-cloth;
+工地 > construction\-site;
+棕色 > brown\-\(the\-color\);
+篇目 > table\-of\-contents;
+住院 > to\-be\-in\-hospital;
+搏動 > beat\-rhythmically;
+接待 > receive\-\(a\-visit\);
+兵力 > military\-strength;
+公務 > official\-business;
+拘留 > detain\-\(prisoner\);
+挨次 > one\-after\-another;
+公佈 > publicly\-announce;
+內亂 > internal\-disorder;
+衛星 > \(space\)\-satellite;
+拍照 > to\-take\-a\-picture;
+病故 > die\-of\-an\-illness;
+衝擊 > \(be\-under\)\-attack;
+長久 > \(for\-a\)\-long\-time;
+錄音 > \(sound\)\-recording;
+保祐 > bless\-and\-protect;
+捷報 > report\-of\-success;
+團圓 > to\-have\-a\-reunion;
+授勛 > to\-award\-an\-honor;
+哀鳴 > a\-plaintive\-whine;
+懂行 > to\-know\-the\-ropes;
+軍區 > a\-military\-region;
+保爾 > \(a\-personal\-name\);
+財閥 > financial\-magnate;
+拍攝 > \(shoot\-a\)\-picture;
+考驗 > \(put\-to\-the\)\-test;
+保溫 > heat\-preservation;
+屏氣 > hold\-one''s\-breath;
+稟賦 > natural\-endowment;
+病危 > be\-critically\-ill;
+併發 > be\-complicated\-by;
+財貿 > finance\-and\-trade;
+漢字 > chinese\-character;
+安穩 > smooth\-and\-steady;
+專業 > specialized\-field;
+屏息 > hold\-one''s\-breath;
+趨時 > to\-follow\-fashion;
+仍舊 > still\-\(remaining\);
+拗口 > hard\-to\-pronounce;
+喘氣 > to\-breathe\-deeply;
+拜倒 > prostrate\-oneself;
+才思 > imaginative\-power;
+波音 > boeing\-\(aircraft\);
+作業 > school\-assignment;
+鼓舞 > heartening\-\(news\);
+案情 > details\-of\-a\-case;
+財神 > the\-god\-of\-wealth;
+展出 > to\-put\-on\-display;
+現狀 > current\-situation;
+小報 > tabloid\-newspaper;
+朝聖 > make\-a\-pilgrimage;
+保健 > health\-protection;
+淫水 > sexual\-secretions;
+尋味 > to\-think\-sth\-over;
+板煙 > plug\-\(of\-tobacco\);
+注視 > watch\-attentively;
+法語 > french\-\(language\);
+獨立 > to\-be\-independent;
+走出 > to\-move\-away\-from;
+聲援 > support\-\(a\-cause\);
+礦藏 > mineral\-resources;
+寫信 > to\-write\-a\-letter;
+三維 > three\-dimensional;
+穴居 > to\-live\-in\-a\-cave;
+狀語 > adverbial\-adjunct;
+酬金 > \(monetary\)\-reward;
+財政 > finances\-\(public\);
+安危 > safety\-and\-danger;
+名稱 > name\-\(of\-a\-thing\);
+物質 > \(physical\)\-matter;
+吃穿 > food\-and\-clothing;
+穴位 > acupuncture\-point;
+學位 > educational\-level;
+德語 > german\-\(language\);
+各界 > all\-walks\-of\-life;
+耳子 > handle\-\(on\-a\-pot\);
+思維 > \(line\-of\)\-thought;
+以免 > in\-order\-to\-avoid;
+事實 > \(the\)\-fact\-\(that\);
+本性 > natural\-instincts;
+難題 > difficult\-problem;
+變相 > in\-disguised\-form;
+財務 > financial\-affairs;
+服役 > serve\-in\-the\-army;
+醫療 > medical\-treatment;
+敬重 > to\-respect\-deeply;
+暗河 > underground\-river;
+頸椎 > cervical\-vertibra;
+網點 > node\-in\-a\-network;
+黑客 > hacker\-\(computer\);
+纖芯 > core\-\(of\-a\-fiber\);
+編隊 > form\-into\-columns;
+敗退 > retreat\-in\-defeat;
+本國 > one''s\-own\-country;
+法文 > french\-\(language\);
+語言 > \(spoken\)\-language;
+不屑 > disdain\-to\-do\-sth;
+半票 > half\-price\-ticket;
+獨唱 > \(in\-singing\)\-solo;
+私人 > private\-\(citizen\);
+獲准 > obtain\-permission;
+權鑰 > keys\-of\-authority;
+爆管 > cartridge\-igniter;
+礦床 > \(mineral\)\-deposit;
+止血 > stanch\-\(bleeding\);
+名字 > \(a\-person''s\)\-name;
+台幣 > new\-taiwan\-dollar;
+顧及 > take\-into\-account;
+下去 > go\-down\-\(descend\);
+勻稱 > well\-proportioned;
+不力 > not\-do\-one''s\-best;
+道謝 > to\-express\-thanks;
+硝煙 > smoke\-\(from\-guns\);
+藝人 > performing\-artist;
+教練 > \(athlete''s\)\-coach;
+出院 > to\-leave\-hospital;
+阿里 > ali\-\(proper\-name\);
+附近 > \(in\-the\)\-vicinity;
+牌樓 > decorated\-archway;
+父母 > father\-and\-mother;
+磨子 > mill\,\-millstones;
+后人 > later\-generation;
+識字 > to\-learn\-to\-read;
+心得 > knowledge\-gained;
+求婚 > propose\-marriage;
+編目 > make\-a\-catalogue;
+電流 > electric\-current;
+城鎮 > cities\-and\-towns;
+委員 > committee\-member;
+壁畫 > mural\-\(painting\);
+姓名 > name\-and\-surname;
+是否 > whether\-\(or\-not\);
+總機 > central\-exchange;
+過程 > course\-of\-events;
+熊猴 > assamese\-macaque;
+大會 > general\-assembly;
+基調 > \(speech\)\-keynote;
+誤會 > to\-misunderstand;
+訂票 > to\-issue\-tickets;
+壽桃 > birthday\-peaches;
+巴豆 > \(purging\)\-croton;
+壽星 > god\-of\-longevity;
+入迷 > to\-be\-fascinated;
+明代 > the\-ming\-dynasty;
+退票 > bounce\-\(a\-check\);
+繃子 > embroidery\-frame;
+得出 > obtain\-\(results\);
+免費 > free\-\(of\-charge\);
+遲暮 > past\-one''s\-prime;
+網橋 > \(network\)\-bridge;
+列為 > be\-classified\-as;
+國防 > national\-defence;
+故居 > former\-residence;
+剽悍 > swift\-and\-fierce;
+武官 > military\-attache;
+違憲 > unconstitutional;
+勞動 > \(physical\)\-labor;
+為生 > to\-make\-a\-living;
+公羊 > ram\-\(male\-sheep\);
+船隊 > fleet\-\(of\-ships\);
+廣州 > guangzhou\-\(city\);
+電力 > electrical\-power;
+補血 > enrich\-the\-blood;
+燈光 > \(stage\)\-lighting;
+透支 > \(bank\)\-overdraft;
+迴旋 > maneuvering\-room;
+白磷 > white\-phosphorus;
+報捷 > report\-a\-success;
+訪問 > pay\-a\-visit\-\(to\);
+除夕 > \(new\-year''s\)\-eve;
+辦案 > to\-handle\-a\-case;
+訂單 > \(purchase\)\-order;
+華僑 > overseas\-chinese;
+滑鼠 > mouse\-\(computer\);
+病菌 > harmful\-bacteria;
+進修 > advanced\-studies;
+長江 > changjiang\-river;
+筆頭 > ability\-to\-write;
+幾千 > several\-thousand;
+到了 > in\-\(a\-past\-time\);
+報名 > enter\-one''s\-name;
+出名 > well\-known\-\(for\);
+授獎 > to\-award\-a\-prize;
+體育 > physical\-culture;
+漢語 > chinese\-language;
+兵役 > military\-service;
+畢肖 > resemble\-closely;
+崩漏 > uterine\-bleeding;
+冗員 > excess\-personnel;
+兵士 > ordinary\-soldier;
+要人 > important\-person;
+採擇 > select\-and\-adopt;
+踩線 > step\-on\-the\-line;
+癱子 > paralyzed\-person;
+巨匠 > master\-craftsman;
+閱兵 > to\-review\-troops;
+傲氣 > air\-of\-arrogance;
+便衣 > civilian\-clothes;
+尋訪 > to\-inquire\-after;
+寶貝 > treasured\-object;
+閱世 > to\-see\-the\-world;
+簡明 > simple\-and\-clear;
+安頓 > find\-a\-place\-for;
+公公 > husband''s\-father;
+例語 > example\-sentance;
+閃亮 > brilliant\,\-shiny;
+均勢 > balance\-of\-power;
+保留 > continue\-to\-have;
+人頭 > number\-of\-people;
+接人 > to\-meet\-a\-person;
+國力 > a\-nation''s\-power;
+扮演 > play\-the\-part\-of;
+病因 > cause\-of\-disease;
+軍事 > military\-affairs;
+佔線 > busy\-\(telephone\);
+山村 > mountain\-village;
+屬於 > be\-classified\-as;
+拐彎 > to\-turn\-a\-corner;
+病原 > cause\-of\-disease;
+聚變 > \(nuclear\)\-fusion;
+表冊 > statistical\-form;
+審理 > to\-hear\-\(a\-case\);
+抄本 > handwritten\-copy;
+安置 > find\-a\-place\-for;
+舔吮 > to\-lick\-and\-suck;
+便橋 > temporary\-bridge;
+筆戰 > written\-polemics;
+便服 > everyday\-clothes;
+感謝 > \(express\)\-thanks;
+下馬 > dismount\-a\-horse;
+安眠 > sleep\-peacefully;
+層層 > layer\-upon\-layer;
+筆帽 > the\-cap\-of\-a\-pen;
+貶義 > derogatory\-sense;
+作法 > course\-of\-action;
+演員 > actor\-or\-actress;
+鑒別 > to\-differentiate;
+保密 > maintain\-secrecy;
+筆套 > the\-cap\-of\-a\-pen;
+借助 > to\-get\-help\-from;
+甘地 > \(mahatma\)\-gandhi;
+注重 > pay\-attention\-to;
+懸掛 > \(car\)\-suspension;
+不謝 > don''t\-mention\-it;
+本義 > original\-meaning;
+伴星 > companion\-\(star\);
+保全 > save\-from\-damage;
+抄件 > duplicate\-\(copy\);
+罷課 > student''s\-strike;
+重重 > layer\-upon\-layer;
+應戰 > face\-a\-challenge;
+核威 > nuclear\-strength;
+虜獲 > capture\-\(people\);
+本票 > cashier''s\-cheque;
+例句 > example\-sentance;
+安徽 > anhui\-\(province\);
+蓖麻 > castor\-oil\-plant;
+站台 > railway\-platform;
+理會 > pay\-attention\-to;
+獲益 > obtain\-a\-benefit;
+今昔 > past\-and\-present;
+板栗 > chinese\-chestnut;
+吸管 > \(drinking\)\-straw;
+人數 > number\-of\-people;
+家務 > household\-duties;
+民間 > among\-the\-people;
+婚禮 > wedding\-ceremony;
+警衛 > \(security\)\-guard;
+乾杯 > to\-drink\-a\-toast;
+猿猴 > apes\-and\-monkeys;
+並激 > shunt\-excitation;
+量綱 > dimension\-\(unit\);
+質問 > \(ask\-a\)\-question;
+蒐集 > to\-gather\-\(data\);
+暑瘟 > tropical\-disease;
+博覽 > read\-extensively;
+深入 > penetrate\-deeply;
+丹桂 > orange\-osmanthus;
+板壁 > wooden\-partition;
+某人 > a\-certain\-person;
+月曆 > monthly\-calendar;
+治病 > treat\-an\-illness;
+十誡 > ten\-commandments;
+外長 > foreign\-minister;
+配藥 > dispense\-\(drugs\);
+字串 > character\-string;
+中文 > chinese\-language;
+大選 > general\-election;
+唐代 > the\-tang\-dynasty;
+性病 > venereal\-disease;
+君權 > monarchial\-power;
+藏文 > tibetan\-language;
+讀物 > reading\-material;
+邊防 > frontier\-defence;
+向東 > towards\-the\-east;
+集錦 > best\-of\-the\-best;
+罷教 > teacher''s\-strike;
+外語 > foreign\-language;
+課表 > school\-timetable;
+誤解 > misunderstanding;
+同時 > at\-the\-same\-time;
+不忙 > there''s\-no\-hurry;
+集郵 > stamp\-collecting;
+廠長 > factory\-director;
+變法 > political\-reform;
+波折 > twists\-and\-turns;
+群島 > group\-of\-islands;
+犯法 > to\-break\-the\-law;
+不少 > not\-\(just\)\-a\-few;
+年齡 > \(a\-person''s\)\-age;
+比翼 > fly\-wing\-to\-wing;
+神奇 > magical\-mystical;
+禁品 > contraband\-goods;
+最先 > \(the\)\-very\-first;
+婆家 > husband''s\-family;
+明淨 > bright\-and\-clean;
+重慶 > chongqing\-\(city\);
+婆婆 > husband''s\-mother;
+吃完 > to\-finish\-eating;
+逼近 > press\-on\-towards;
+報館 > newspaper\-office;
+電纜 > \(electric\)\-cable;
+狀態 > state\-of\-affairs;
+中介 > agent\-\(computer\);
+不光 > not\-the\-only\-one;
+暑天 > hot\-\(summer\)\-day;
+華語 > chinese\-language;
+不僅 > not\-the\-only\-one;
+反對 > to\-fight\-against;
+不久 > not\-long\-\(after\);
+天父 > heavenly\-father;
+特徵 > characteristics;
+暑假 > summer\-vacation;
+擺脫 > break\-away\-from;
+半數 > half\-the\-number;
+冰霜 > moral\-integrity;
+勻溜 > even\-and\-smooth;
+原委 > the\-whole\-story;
+特寫 > feature\-article;
+春天 > spring\-\(season\);
+止痛 > to\-relieve\-pain;
+叛亂 > armed\-rebellion;
+文檔 > \(computer\)\-file;
+緬甸 > myanmar\-\(burma\);
+失望 > be\-disappointed;
+網站 > network\-station;
+開門 > open\-\(the\)\-door;
+經管 > be\-in\-charge\-of;
+半天 > half\-of\-the\-day;
+語族 > language\-branch;
+往年 > in\-former\-years;
+日報 > daily\-newspaper;
+光電 > opto\-electrical;
+語支 > language\-branch;
+白鐵 > galvanized\-iron;
+雅歌 > song\-of\-solomon;
+彼岸 > the\-other\-shore;
+配合 > coordinate\-with;
+報系 > newspaper\-chain;
+標量 > scalar\-quantity;
+南北 > north\-and\-south;
+比容 > specific\-volume;
+盈虧 > profit\-and\-loss;
+勸導 > try\-to\-convince;
+陣營 > group\-of\-people;
+幾百 > several\-hundred;
+大寫 > capital\-letters;
+過活 > live\-one''s\-life;
+牌位 > memorial\-tablet;
+早些 > \(a\-bit\)\-earlier;
+課外 > extracurricular;
+收拾 > to\-put\-in\-order;
+網段 > network\-segment;
+弟弟 > younger\-brother;
+遲早 > sooner\-or\-later;
+矮小 > short\-and\-small;
+比價 > price\-relations;
+新任 > newly\-appointed;
+霸佔 > forcibly\-occupy;
+病魔 > serious\-illness;
+常用 > in\-common\-usage;
+冰磚 > ice\-cream\-brick;
+白菜 > chinese\-cabbage;
+強加 > impose\-by\-force;
+外事 > foreign\-affairs;
+邊地 > border\-district;
+舌面 > blade\-of\-tongue;
+著作 > a\-literary\-work;
+白米 > \(polished\)\-rice;
+瀕臨 > on\-the\-verge\-of;
+損益 > profit\-and\-loss;
+選單 > \(software\)\-menu;
+執法 > law\-enforcement;
+進展 > to\-make\-headway;
+為此 > for\-this\-reason;
+廠史 > factory\-history;
+光磁 > magneto\-optical;
+隘口 > \(mountain\)\-pass;
+網址 > \(internet\)\-site;
+畫面 > \(picture\)\-frame;
+菜地 > vegetable\-field;
+畜類 > domestic\-animal;
+抱養 > adopt\-\(a\-child\);
+城樓 > city\-gate\-tower;
+採種 > seed\-collecting;
+花白 > grizzled\-\(hair\);
+屍體 > \(lifeless\)\-body;
+圖簽 > \(computer\)\-icon;
+巴望 > look\-forward\-to;
+層雲 > stratus\-\(cloud\);
+籌碼 > bargaining\-chip;
+降價 > price\-reduction;
+標樁 > \(marking\)\-stake;
+閉會 > close\-a\-meeting;
+純屬 > pure\-and\-simple;
+光榮 > honor\-and\-glory;
+辦學 > to\-run\-a\-school;
+標杆 > surveyor''s\-pole;
+幣制 > currency\-system;
+報到 > report\-for\-duty;
+年份 > particular\-year;
+基地 > \(military\)\-base;
+光明 > bright\-\(future\);
+保釋 > release\-on\-bail;
+射頻 > radio\-frequency;
+鬥爭 > struggle\-\(with\);
+裡根 > \(ronald\)\-reagan;
+抗衡 > contend\-against;
+級別 > \(military\)\-rank;
+筆誤 > a\-slip\-of\-a\-pen;
+八寶 > eight\-treasures;
+百年 > a\-hundred\-years;
+摘借 > to\-borrow\-money;
+圖標 > \(computer\)\-icon;
+長官 > senior\-official;
+入境 > enter\-a\-country;
+兒媳 > daughter\-in\-law;
+臂紗 > \(black\)\-armband;
+軍校 > military\-school;
+把舵 > hold\-the\-rudder;
+被捕 > be\-under\-arrest;
+首長 > senior\-official;
+百十 > a\-hundred\-or\-so;
+坐好 > to\-sit\-properly;
+畜生 > domestic\-animal;
+錦雞 > golden\-pheasant;
+自殺 > to\-kill\-oneself;
+高昂 > in\-high\-spirits;
+穿過 > to\-pass\-through;
+備戰 > prepare\-for\-war;
+安身 > make\-one''s\-home;
+游說 > drum\-up\-support;
+至於 > go\-so\-far\-as\-to;
+生物 > living\-creature;
+戶籍 > census\-register;
+校舍 > school\-building;
+善良 > good\-and\-honest;
+軍備 > \(military\)\-arms;
+首腦 > head\-\(of\-state\);
+安葬 > bury\-\(the\-dead\);
+極力 > do\-at\-all\-costs;
+跑步 > to\-walk\-quickly;
+貶詞 > derogatory\-term;
+互連 > interconnection;
+悲鳴 > utter\-sad\-calls;
+滿意 > to\-be\-satisfied;
+海運 > shipping\-by\-sea;
+留學 > to\-study\-abroad;
+便條 > \(informal\)\-note;
+甚或 > so\-much\-so\-that;
+山峰 > \(mountain\)\-peak;
+溫柔 > gentle\-and\-soft;
+高中 > high\-and\-middle;
+胃病 > stomach\-trouble;
+同齡 > of\-the\-same\-age;
+吸音 > sound\-absorbing;
+麻醉 > to\-anaesthetize;
+投奔 > to\-seek\-shelter;
+例會 > regular\-meeting;
+餅肥 > cake\-fertilizer;
+暴雨 > torrential\-rain;
+便宴 > informal\-dinner;
+上述 > above\-mentioned;
+實彈 > live\-ammunition;
+產值 > value\-of\-output;
+祝賀 > to\-congratulate;
+以為 > consider\-\(that\);
+核彈 > nuclear\-warhead;
+上課 > to\-attend\-class;
+符合 > in\-keeping\-with;
+技倆 > tricky\-maneuver;
+泰語 > thai\-\(language\);
+寵壞 > spoil\-\(a\-child\);
+交界 > common\-boundary;
+三萬 > thirty\-thousand;
+貨源 > supply\-of\-goods;
+窗帘 > window\-curtains;
+期票 > promissory\-note;
+口語 > spoken\-language;
+私營 > privately\-owned;
+寒假 > winter\-vacation;
+哀歌 > a\-mournful\-song;
+牽連 > \(be\)\-implicated;
+性行 > sexual\-activity;
+學士 > bachelor\-degree;
+負擔 > \(bear\-a\)\-burden;
+一秘 > first\-secretary;
+藥瓶 > medicine\-bottle;
+慚愧 > \(to\-be\)\-ashamed;
+人才 > talented\-person;
+不甘 > unreconciled\-to;
+班子 > organized\-group;
+每隔 > at\-intervals\-of;
+愛戴 > love\-and\-esteem;
+愛戀 > be\-in\-love\-with;
+杭州 > hangzhou\-\(city\);
+問世 > to\-be\-published;
+悲泣 > weep\-with\-grief;
+法理 > legal\-principle;
+秩序 > order\-\(orderly\);
+政黨 > political\-party;
+名片 > \(business\)\-card;
+旅費 > travel\-expenses;
+財團 > financial\-group;
+沙石 > sand\-and\-stones;
+禁果 > forbidden\-fruit;
+郵遞 > to\-send\-by\-mail;
+析出 > to\-seperate\-out;
+奔襲 > long\-range\-raid;
+板刷 > scrubbing\-brush;
+服從 > obey\-\(an\-order\);
+施行 > to\-put\-in\-place;
+罰款 > \(impose\-a\)\-fine;
+雌雄 > male\-and\-female;
+邊音 > lateral\-\(sound\);
+母語 > native\-language;
+母親 > mother\-\(formal\);
+泰文 > thai\-\(language\);
+磁盤 > \(computer\)\-disk;
+媳婦 > daughter\-in\-law;
+礦業 > mining\-industry;
+流失 > be\-drained\-away;
+引起 > to\-give\-rise\-to;
+𣎴 > stump\-of\-a\-tree;
+證物 > exhibit\-\(legal\);
+縫補 > darn\-\(clothing\);
+編選 > select\-and\-edit;
+上學 > to\-go\-to\-school;
+頻帶 > frequency\-range;
+庭長 > presiding\-judge;
+政見 > political\-views;
+悲嘆 > sigh\-mournfully;
+頻寬 > frequency\-range;
+半生 > half\-a\-lifetime;
+博物 > natural\-science;
+郵票 > \(postage\)\-stamp;
+恰好 > as\-it\-turns\-out;
+氣溫 > air\-temperature;
+矮胖 > short\-and\-stout;
+語系 > language\-system;
+變形 > be\-out\-of\-shape;
+南海 > south\-china\-sea;
+美元 > american\-dollar;
+世人 > \(common\)\-people;
+名單 > list\-\(of\-names\);
+電磁 > electromagnetic;
+民權 > civil\-liberties;
+據說 > it\-is\-said\-that;
+原性 > original\-nature;
+數百 > several\-hundred;
+操課 > military\-drill;
+協會 > an\-association;
+文物 > cultural\-relic;
+通訊 > communications;
+危房 > decrepit\-house;
+特工 > secret\-service;
+電燈 > electric\-light;
+北極 > the\-north\-pole;
+預付 > pay\-in\-advance;
+殺氣 > murderous\-look;
+磁場 > magnetic\-field;
+牙床 > alveolar\-ridge;
+參加 > to\-participate;
+民意 > public\-opinion;
+妹妹 > younger\-sister;
+往日 > in\-former\-days;
+勘測 > to\-investigate;
+冰釋 > \(of\-misgivings;
+大樓 > large\-building;
+怪人 > strange\-person;
+營業 > to\-do\-business;
+塑膠 > plastic\-cement;
+晚上 > in\-the\-evening;
+散步 > to\-take\-a\-walk;
+識別 > to\-distinguish;
+失控 > out\-of\-control;
+數月 > several\-months;
+往復 > to\-reciprocate;
+靶場 > shooting\-range;
+糖醋 > sweet\-and\-sour;
+帳號 > account\-number;
+爪子 > \(animal''s\)\-paw;
+別管 > no\-matter\-\(who;
+刨程 > planing\-length;
+素菜 > vegetable\-dish;
+開車 > to\-drive\-a\-car;
+煙火 > smoke\-and\-fire;
+轉運 > transportation;
+巡警 > police\-officer;
+放映 > show\-\(a\-movie\);
+製造 > to\-manufacture;
+利率 > interest\-rates;
+輿論 > public\-opinion;
+弱小 > small\-and\-weak;
+敝屣 > worn\-out\-shoes;
+矮子 > a\-short\-person;
+速決 > quick\-decision;
+關稅 > \(customs\)\-duty;
+白蘇 > common\-perilla;
+比值 > specific\-value;
+基督 > jesus\-\(christ\);
+探路 > to\-find\-a\-path;
+遙控 > remote\-control;
+遙感 > remote\-sensing;
+白色 > white\-\(colour\);
+撥款 > allocate\-funds;
+廠工 > factory\-worker;
+正好 > just\-\(in\-time\);
+探視 > pay\-a\-visit\-to;
+判明 > to\-distinguish;
+引咎 > take\-the\-blame;
+壁報 > wall\-newspaper;
+改善 > to\-make\-better;
+造成 > to\-bring\-about;
+幫會 > secret\-society;
+操心 > to\-worry\-about;
+白種 > the\-white\-race;
+補缺 > fill\-a\-vacancy;
+西歐 > western\-europe;
+逕庭 > very\-different;
+補綴 > mend\-\(clothes\);
+集中 > to\-concentrate;
+遲到 > to\-arrive\-late;
+報復 > make\-reprisals;
+真情 > real\-situation;
+巨流 > strong\-current;
+退學 > to\-quit\-school;
+廉價 > cheaply\-priced;
+病號 > sick\-personnel;
+團結 > \(hold\-a\)\-rally;
+圍繞 > revolve\-around;
+近年 > recent\-year\(s\);
+倒閉 > to\-go\-bankrupt;
+冷戰 > \(the\)\-cold\-war;
+價目 > \(marked\)\-price;
+病脈 > abnormal\-pulse;
+漸變 > gradual\-change;
+通信 > to\-communicate;
+紀念 > to\-commemorate;
+開會 > have\-a\-meeting;
+全景 > panoramic\-view;
+刀叉 > knife\-and\-fork;
+布帛 > cloth\-and\-silk;
+找錢 > to\-give\-change;
+補液 > fluid\-infusion;
+起點 > starting\-point;
+報分 > call\-the\-score;
+挺立 > to\-stand\-erect;
+八成 > eighty\-percent;
+兩手 > double\-tactics;
+採油 > oil\-extraction;
+跨越 > to\-step\-across;
+跑道 > athletic\-track;
+握拳 > to\-make\-a\-fist;
+握手 > to\-shake\-hands;
+精干 > crack\-\(troops\);
+長征 > the\-long\-march;
+病痛 > slight\-illness;
+英寸 > \(english\)\-inch;
+標尺 > surveyor''s\-rod;
+將軍 > \(army\)\-general;
+兩國 > both\-countries;
+全國 > entire\-country;
+輩子 > all\-one''s\-life;
+長城 > the\-great\-wall;
+表決 > decide\-by\-vote;
+成都 > chengdu\-\(city\);
+鬥智 > battle\-of\-wits;
+八千 > eight\-thousand;
+病歷 > medical\-record;
+伸開 > to\-stretch\-out;
+演示 > to\-demonstrate;
+畢生 > all\-one''s\-life;
+握別 > to\-shake\-hands;
+傳播 > to\-disseminate;
+入伍 > enter\-the\-army;
+首都 > capital\-\(city\);
+潔淨 > cleanse\-\(sins\);
+舌根 > back\-of\-tongue;
+傍晚 > in\-the\-evening;
+行政 > administration;
+小聲 > in\-a\-low\-voice;
+篡改 > to\-tamper\-with;
+截至 > up\-to\-\(a\-time\);
+起草 > draft\-\(a\-bill\);
+挨打 > take\-a\-beating;
+層理 > stratification;
+球鞋 > athletic\-shoes;
+鍋貼 > fried\-dumpling;
+授命 > to\-give\-orders;
+核能 > nuclear\-energy;
+浮點 > floating\-point;
+生火 > to\-make\-a\-fire;
+自從 > since\-\(a\-time\);
+寶石 > precious\-stone;
+棄櫻 > abandoned\-baby;
+產權 > property\-right;
+齒輪 > \(machine\)\-gear;
+侵犯 > to\-infringe\-on;
+血壓 > blood\-pressure;
+病員 > sick\-personnel;
+減肥 > to\-lose\-weight;
+代表 > representative;
+畫展 > art\-exhibition;
+生效 > to\-take\-effect;
+才氣 > liteary\-talent;
+期間 > period\-of\-time;
+專欄 > special\-column;
+學籍 > school\-roll\(s\);
+禁食 > fast\-\(not\-eat\);
+某種 > some\-kind\-\(of\);
+將會 > will\,\-going\-to;
+豎起 > hold\-up\-\(high\);
+寶書 > treasured\-book;
+吃驚 > to\-be\-startled;
+導彈 > guided\-missile;
+清爽 > fresh\-and\-cool;
+互聯 > interconnected;
+唱片 > \(vinyl\)\-record;
+二者 > both\-\[of\-them\];
+才子 > gifted\-scholar;
+侵害 > to\-encroach\-on;
+寶庫 > treasure\-house;
+保單 > guarantee\-slip;
+小學 > primary\-school;
+仔畜 > newborn\-animal;
+本色 > natural\-colour;
+來往 > to\-come\-and\-go;
+題跋 > short\-comments;
+不解 > not\-understand;
+懮慮 > \(feel\)\-anxiety;
+余悸 > lingering\-fear;
+成就 > accomplishment;
+容忍 > to\-put\-up\-with;
+罷論 > abandoned\-idea;
+患處 > afflicted\-part;
+架構 > infrastructure;
+穴播 > bunch\-planting;
+懷孕 > to\-be\-pregnant;
+職業 > job\-occupation;
+任期 > term\-of\-office;
+不興 > out\-of\-fashion;
+球棒 > \(baseball\)\-bat;
+資格 > qualifications;
+東海 > east\-china\-sea;
+東歐 > eastern\-europe;
+任憑 > no\-matter\-what;
+今朝 > at\-the\-present;
+作品 > works\-\(of\-art\);
+憋悶 > feel\-oppressed;
+飼槽 > feeding\-trough;
+警車 > police\-vehicle;
+寒冷 > cold\-\(climate\);
+安好 > safe\-and\-sound;
+液晶 > liquid\-crystal;
+參觀 > to\-look\-around;
+可能 > might\-\(happen\);
+首先 > first\-\(of\-all\);
+液態 > liquid\-\(state\);
+孕婦 > pregnant\-woman;
+乘法 > multiplication;
+定價 > to\-set\-a\-price;
+暗箱 > camera\-bellows;
+減刑 > reduce\-penalty;
+一生 > all\-one''s\-life;
+中歐 > central\-europe;
+犯罪 > \(commit\)\-crime;
+份兒 > degree\,\-extent;
+特色 > characteristic;
+中斷 > to\-discontinue;
+秕子 > blighted\-grain;
+現任 > at\-the\-present;
+有待 > not\-yet\-\(done\);
+題材 > subject\-matter;
+礦泉 > mineral\-spring;
+毛衣 > \(wool\)\-sweater;
+責任 > responsibility;
+半職 > part\-time\-work;
+顯得 > appear\-\(to\-be\);
+研製 > to\-manufacture;
+不忍 > cannot\-bear\-to;
+媽咪 > mummy\-\(mother\);
+波恩 > bonn\-\(germany\);
+敗訴 > lose\-a\-lawsuit;
+壽衣 > burial\-clothes;
+擺鐘 > pendulum\-clock;
+北緯 > north\-latitude;
+及格 > to\-pass\-a\-test;
+法庭 > court\-\(of\-law\);
+這類 > this\-kind\-\(of\);
+主修 > \(school\)\-major;
+變成 > to\-change\-into;
+不合 > not\-conform\-to;
+斑竹 > mottled\-bamboo;
+不及 > not\-as\-good\-as;
+分類 > classification;
+重建 > reconstruction;
+請看 > please\-see\-\.\.\.;
+類別 > classification;
+氫氣 > hydrogen\-\(gas\);
+數種 > numerous\-types;
+破產 > to\-go\-bankrupt;
+冰點 > freezing\-point;
+華裔 > ethnic\-chinese;
+不仁 > not\-benevolent;
+收聽 > to\-listen\-\(to\);
+菲菲 > very\-fragrant;
+昂揚 > high\-spirited;
+早晨 > early\-morning;
+磁帶 > magnetic\-tape;
+解調 > to\-demodulate;
+北海 > the\-north\-sea;
+薄利 > small\-profits;
+晚報 > evening\-paper;
+星座 > constellation;
+冰鞋 > skating\-boots;
+廠絲 > filature\-silk;
+矛盾 > contradictory;
+出賣 > to\-sell\-\(off\);
+到處 > in\-all\-places;
+古代 > ancient\-times;
+新月 > crescent\-moon;
+即將 > on\-the\-eve\-of;
+卑微 > petty\-and\-low;
+危害 > to\-jeopardize;
+刨花 > wood\-shavings;
+莨菪 > black\-henbane;
+調查 > investigation;
+綁腿 > leg\-wrappings;
+列舉 > \(make\-a\)\-list;
+適用 > be\-applicable;
+摘記 > to\-take\-notes;
+元首 > head\-of\-state;
+方式 > way\-\(of\-life\);
+日夜 > day\-and\-night;
+芝麻 > sesame\-\(seed\);
+牌坊 > memorial\-arch;
+前生 > pre\-existence;
+昇值 > rise\-in\-value;
+米飯 > \(cooked\)\-rice;
+轉道 > make\-a\-detour;
+長途 > long\-distance;
+日前 > the\-other\-day;
+墜毀 > \(plane\)\-crash;
+雙手 > pair\-of\-hands;
+南亞 > southern\-asia;
+刊登 > carry\-a\-story;
+誇張 > to\-exaggerate;
+難忘 > unforgettable;
+早上 > early\-morning;
+太太 > married\-woman;
+撥用 > appropriation;
+境況 > circumstances;
+民事 > civil\-matters;
+女佣 > \(female\)\-maid;
+勘察 > reconnaisance;
+籌集 > collect\-money;
+操演 > demonstration;
+幻燈 > latern\-slides;
+加快 > to\-accelerate;
+冰糖 > crystal\-sugar;
+國際 > international;
+鬥雞 > cock\-fighting;
+形勢 > circumstances;
+過時 > old\-fashioned;
+隨意 > as\-one\-wishes;
+失利 > suffer\-defeat;
+損耗 > wear\-and\-tear;
+相當 > equivalent\-to;
+逐步 > progressively;
+幾次 > several\-times;
+巨細 > big\-and\-small;
+幾樣 > several\-kinds;
+大使 > an\-ambassador;
+編審 > read\-and\-edit;
+強化 > to\-strengthen;
+避孕 > contraception;
+大事 > a\-major\-event;
+教友 > church\-member;
+速效 > quick\-results;
+利於 > be\-beneficial;
+敗北 > suffer\-defeat;
+初期 > initial\-stage;
+詢問 > inquire\-about;
+死刑 > death\-penalty;
+兵痞 > army\-riffraff;
+體重 > \(body\)\-weight;
+白砒 > white\-arsenic;
+相架 > picture\-frame;
+垂直 > perpendicular;
+境地 > circumstances;
+兵營 > military\-camp;
+市民 > city\-resident;
+隨便 > as\-one\-wishes;
+庭園 > flower\-garden;
+轟炸 > \(drop\-a\)\-bomb;
+過去 > \(in\-the\)\-past;
+艦艇 > naval\-vessels;
+冰期 > glacial\-epoch;
+關於 > pertaining\-to;
+剛剛 > just\-recently;
+廠主 > factory\-owner;
+再次 > one\-more\-time;
+權力 > \(wield\)\-power;
+連同 > together\-with;
+簿籍 > account\-books;
+橫掃 > to\-sweep\-away;
+度假 > go\-on\-holiday;
+異質 > heterogeneous;
+車站 > \(bus\)\-station;
+備至 > to\-the\-utmost;
+跑鞋 > running\-shoes;
+報單 > taxation\-form;
+鑒賞 > to\-appreciate;
+這位 > this\-\(person\);
+困窘 > embarrassment;
+降世 > come\-to\-earth;
+便飯 > a\-simple\-meal;
+輻條 > \(wheel\)\-spoke;
+打開 > to\-break\-open;
+發揮 > bring\-to\-bear;
+開心 > to\-feel\-happy;
+實驗 > to\-experiment;
+轉彎 > turn\-\(around\);
+案頭 > on\-one''s\-desk;
+辨別 > differentiate;
+抄襲 > to\-plagiarize;
+辦到 > to\-accomplish;
+先後 > in\-succession;
+畜肥 > animal\-manure;
+拉美 > latin\-america;
+核電 > nuclear\-power;
+越野 > cross\-country;
+駁雜 > heterogeneous;
+公園 > a\-public\-park;
+百姓 > common\-people;
+災區 > disaster\-area;
+構成 > to\-constitute;
+保藏 > keep\-in\-store;
+瑞香 > winter\-daphne;
+拌種 > seed\-dressing;
+籌措 > raise\-\(money\);
+棄置 > to\-throw\-away;
+賣點 > selling\-point;
+開列 > \(make\-a\)\-list;
+瘦弱 > thin\-and\-weak;
+白匪 > white\-bandits;
+肉體 > physical\-body;
+備案 > put\-on\-record;
+鬥志 > will\-to\-fight;
+扁荳 > hyacinth\-bean;
+百倍 > a\-hundredfold;
+筆筒 > pen\-container;
+寶藍 > sapphire\-blue;
+滲碳 > carburization;
+渡過 > to\-cross\-over;
+字集 > character\-set;
+空運 > air\-transport;
+表層 > surface\-layer;
+圓周 > circumference;
+病害 > plant\-disease;
+售貨 > to\-sell\-goods;
+舌尖 > tip\-of\-tongue;
+案稱 > counter\-scale;
+消防 > fire\-fighting;
+喉結 > adam''s''\-apple;
+島國 > island\-nation;
+鬧事 > cause\-trouble;
+京都 > kyoto\-\(japan\);
+四千 > four\-thousand;
+當年 > in\-those\-days;
+財迷 > money\-grubber;
+理解 > to\-comprehend;
+密碼 > \(secret\)\-code;
+築城 > fortification;
+衛兵 > \(body\)\-guard\);
+疑問 > interrogation;
+喉痧 > scarlet\-fever;
+個性 > individuality;
+啟示 > enlightenment;
+致函 > send\-a\-letter;
+意識 > consciousness;
+聯絡 > communication;
+拜別 > take\-leave\-of;
+扁擔 > carrying\-pole;
+哀號 > cry\-piteously;
+桂林 > guilin\-\(city\);
+金黃 > golden\-yellow;
+跨國 > transnational;
+演出 > \(acting\)\-play;
+吃飯 > to\-eat\-a\-meal;
+不通 > be\-obstructed;
+戒指 > \(finger\)\-ring;
+少將 > major\-general;
+杜絕 > put\-an\-end\-to;
+暗鎖 > built\-in\-lock;
+懲戒 > to\-discipline;
+下課 > class\-is\-over;
+不詳 > not\-in\-detail;
+反響 > repercussions;
+宿怨 > an\-old\-grudge;
+單子 > list\-of\-items;
+貢獻 > to\-contribute;
+叫醒 > to\-call\-awake;
+美術 > the\-fine\-arts;
+能夠 > be\-capable\-of;
+家屬 > family\-member;
+鼻淵 > nasosinusitis;
+懂得 > to\-understand;
+半點 > the\-least\-bit;
+鉛筆 > \(lead\)\-pencil;
+單向 > undirectional;
+受賄 > accept\-bribes;
+例假 > legal\-holiday;
+水面 > water\-surface;
+移殖 > to\-transplant;
+起伏 > ups\-and\-downs;
+變調 > modified\-tone;
+友誼 > companionship;
+移植 > to\-transplant;
+哀樂 > funeral\-music;
+富于 > to\-be\-full\-of;
+聲帶 > vocal\-cord\(s\);
+不知 > unknowing\(ly\);
+孫女 > granddaughter;
+涼快 > nice\-and\-cold;
+三百 > three\-hundred;
+京戲 > beijing\-opera;
+低于 > be\-lower\-than;
+南部 > southern\-part;
+清單 > list\-of\-items;
+變色 > change\-colour;
+北面 > northern\-side;
+上班 > to\-go\-to\-work;
+各種 > every\-kind\-of;
+貝彫 > shell\-carving;
+日軍 > japanese\-army;
+南越 > south\-vietnam;
+情況 > circumstances;
+愛憎 > love\-and\-hate;
+職員 > office\-worker;
+洋溢 > brimming\-with;
+協調 > to\-coordinate;
+大阪 > osaka\-\(japan\);
+考慮 > to\-think\-over;
+北部 > northern\-part;
+本意 > original\-idea;
+獨攬 > to\-monopolize;
+吸毒 > to\-take\-drugs;
+泳池 > swimming\-pond;
+一步 > \(single\)\-step;
+北越 > north\-vietnam;
+雜項 > miscellaneous;
+哥哥 > older\-brother;
+外部 > external\-part;
+聞人 > famous\-person;
+京劇 > beijing\-opera;
+和尚 > buddhist\-monk;
+蘇州 > suzhou\-\(city\);
+礦水 > mineral\-water;
+暑氣 > \(summer\)\-heat;
+哀告 > beg\-piteously;
+情形 > circumstances;
+中式 > chinese\-style;
+外貿 > foreign\-trade;
+避難 > \[take\]\-refuge;
+包袱 > cloth\-wrapper;
+感冒 > to\-catch\-cold;
+彩蚌 > painted\-shell;
+禮堂 > assembly\-hall;
+不恭 > disrespectful;
+總計 > \(grand\)\-total;
+娛樂 > entertainment;
+中學 > middle\-school;
+五一 > 5\-1\-\(may\-1st\);
+磁片 > magnetic\-disk;
+會場 > meeting\-place;
+媾和 > to\-make\-peace;
+不巧 > unfortunately;
+上市 > on\-the\-market;
+私利 > personal\-gain;
+遲鈍 > slow\-\(witted\);
+北美 > north\-america;
+經驗 > to\-experience;
+汲水 > to\-draw\-water;
+獲勝 > be\-victorious;
+觀點 > point\-of\-view;
+水牛 > water\-buffalo;
+同年 > the\-same\-year;
+變星 > variable\-star;
+毛筆 > writing\-brush;
+蘇俄 > soviet\-russia;
+步行 > to\-go\-on\-foot;
+別離 > take\-leave\-of;
+擅長 > to\-be\-good\-at;
+不啻 > not\-less\-than;
+大約 > approximately;
+牌照 > license\-plate;
+暗害 > kill\-secretly;
+勃興 > rise\-suddenly;
+前進 > to\-go\-forward;
+變態 > metamorphosis;
+性慾 > sexual\-desire;
+匯率 > exchange\-rate;
+治安 > law\-and\-order;
+欣賞 > to\-appreciate;
+雌花 > female\-flower;
+邦聯 > confederation;
+多種 > many\-kinds\-of;
+吸入 > to\-breathe\-in;
+變工 > exchange\-work;
+受害 > to\-be\-injured;
+決心 > determination;
+下令 > give\-an\-order;
+莫逆 > very\-friendly;
+比熱 > specific\-heat;
+昂昂 > high\-spirited;
+分配 > to\-distribute;
+加緊 > to\-intensify;
+睡覺 > to\-go\-to\-bed;
+早期 > early\-period;
+相關 > interrelated;
+火龍 > fiery\-dragon;
+合作 > to\-cooperate;
+智力 > intelligence;
+忌憚 > be\-afraid\-of;
+昔年 > former\-years;
+礦井 > mine\-\(shaft\);
+熟知 > acquaintance;
+支票 > \(bank\)\-check;
+姐姐 > older\-sister;
+警報 > \(fire\)\-alarm;
+後果 > consequences;
+姊姊 > older\-sister;
+收盤 > market\-close;
+城防 > city\-defence;
+頂住 > to\-withstand;
+西部 > western\-part;
+好感 > good\-opinion;
+失業 > unemployment;
+擅自 > unauthorized;
+逕自 > on\-one''s\-own;
+索賠 > compensation;
+近視 > shortsighted;
+步犁 > walking\-plow;
+相識 > acquaintance;
+開關 > power\-switch;
+去世 > to\-pass\-away;
+培訓 > to\-cultivate;
+多方 > in\-many\-ways;
+搶購 > panic\-buying;
+巡迴 > to\-go\-around;
+這種 > this\-kind\-of;
+大意 > general\-idea;
+別稱 > another\-name;
+步步 > step\-by\-step;
+協商 > consult\-with;
+矮星 > dwarf\-\(star\);
+那時 > at\-that\-time;
+大師 > great\-master;
+組織 > organization;
+通用 > common\-\(use\);
+多工 > to\-multiplex;
+糾葛 > entanglement;
+試探 > to\-sound\-out;
+夫妻 > man\-and\-wife;
+道歉 > to\-apologize;
+故意 > deliberately;
+請問 > may\-i\-ask\.\.\.;
+出發 > to\-start\-out;
+縮寫 > abbreviation;
+壁掛 > wall\-hanging;
+熟悉 > to\-know\-well;
+熟思 > deliberation;
+整天 > all\-day\-long;
+鱉甲 > turtle\-shell;
+身體 > \(human\)\-body;
+糾纏 > be\-entangled;
+複製 > to\-duplicate;
+隊旗 > team\-pennant;
+加強 > to\-reinforce;
+出獄 > leave\-prison;
+談判 > to\-negotiate;
+看病 > see\-a\-doctor;
+很不 > very\-un\-\.\.\.\.;
+毅力 > perseverance;
+落實 > to\-implement;
+支店 > branch\-store;
+白薯 > sweet\-potato;
+綵旗 > colored\-flag;
+回顧 > to\-look\-back;
+殭化 > become\-rigid;
+瀏覽 > to\-skim\-over;
+課余 > after\-school;
+車道 > traffic\-lane;
+正如 > be\-just\-like;
+紙牌 > playing\-card;
+發紅 > flush\-\(face\);
+集合 > congregation;
+速成 > crash\-course;
+光線 > optical\-line;
+努力 > great\-effort;
+引入 > to\-draw\-into;
+廠址 > factory\-site;
+隨同 > accompanying;
+熒光 > flourescence;
+廣告 > to\-advertise;
+挨近 > get\-close\-to;
+編劇 > write\-a\-play;
+壓倒 > overwhelming;
+採脂 > tree\-tapping;
+熟人 > acquaintance;
+培植 > to\-cultivate;
+速寫 > quick\-sketch;
+週圍 > surroundings;
+濾紙 > filter\-paper;
+機構 > organization;
+訪俄 > visit\-russia;
+拔錨 > weigh\-anchor;
+標燈 > beacon\-light;
+冰晶 > ice\-crystals;
+幾天 > several\-days;
+授精 > insemination;
+髒話 > bad\-language;
+凹岸 > concave\-bank;
+過來 > to\-come\-over;
+操勞 > to\-work\-hard;
+別名 > another\-name;
+光源 > light\-source;
+速凍 > quick\-freeze;
+坐牢 > imprisonment;
+補牙 > fill\-a\-tooth;
+刨刀 > planing\-tool;
+把關 > guard\-a\-pass;
+自衛 > self\-defense;
+陛下 > your\-majesty;
+八月 > eighth\-month;
+備考 > \(an\-appendix;
+年前 > \.\.\.years\-ago;
+簡稱 > abbreviation;
+別人 > other\-people;
+開支 > expenditures;
+捏積 > chiropractic;
+報價 > quoted\-price;
+迷信 > superstition;
+轉換 > to\-transform;
+搬家 > move\-\(house\);
+戶頭 > bank\-account;
+親信 > trusted\-aide;
+行程 > travel\-route;
+嚴竣 > tight\.strict;
+看作 > look\-upon\-as;
+寧願 > would\-rather;
+接枝 > \(tree\)\-graft;
+授權 > to\-authorize;
+開學 > school\-opens;
+保證 > to\-guarantee;
+批評 > to\-criticize;
+拔絲 > wire\-drawing;
+嘆詞 > interjection;
+打賭 > \(make\-a\)\-bet;
+優惠 > preferential;
+公報 > announcement;
+密集 > concentrated;
+授時 > time\-service;
+在旁 > by\-\(a\-place\);
+拼盤 > cold\-platter;
+捐款 > donate\-money;
+國有 > nationalized;
+依賴 > to\-depend\-on;
+系上 > to\-buckle\-up;
+背離 > deviate\-from;
+按照 > according\-to;
+偶然 > incidentally;
+喉鏡 > laryngoscope;
+背陰 > in\-the\-shade;
+演算 > to\-calculate;
+兩千 > two\-thousand;
+插圖 > illustration;
+審議 > deliberation;
+管理 > to\-supervise;
+梅花 > plum\-blossom;
+當然 > only\-natural;
+標價 > mark\-a\-price;
+棒硫 > roll\-sulphur;
+孝順 > filial\-piety;
+饅頭 > steamed\-roll;
+保管 > take\-care\-of;
+垂下 > to\-hang\-down;
+裁員 > to\-cut\-staff;
+清醒 > clear\-headed;
+異步 > asynchronous;
+補充 > to\-replenish;
+便秘 > constipation;
+病床 > hospital\-bed;
+枘鑿 > incompatible;
+嚮往 > to\-yearn\-for;
+自拔 > free\-oneself;
+航天 > space\-flight;
+捲入 > to\-draw\-into;
+高密 > high\-density;
+表土 > surface\-soil;
+賞識 > appreciation;
+慶賀 > congratulate;
+消除 > to\-eliminate;
+街坊 > neighborhood;
+瑞色 > lovely\-color;
+聽說 > to\-hear\-told;
+當心 > to\-take\-care;
+異性 > heterosexual;
+交鋒 > cross\-swords;
+興奮 > \(be\)\-excited;
+宇航 > space\-flight;
+禽類 > bird\-species;
+偽善 > hypocritical;
+抱愧 > feel\-ashamed;
+負責 > in\-charge\-of;
+現行 > be\-in\-effect;
+屈服 > to\-surrender;
+減緩 > to\-slow\-down;
+下齒 > bottom\-teeth;
+媒體 > \(news\)\-media;
+竟然 > unexpectedly;
+驚愕 > astonishment;
+當場 > at\-the\-scene;
+婚齡 > marrying\-age;
+抱屈 > feel\-wronged;
+食譜 > cookery\-book;
+並非 > really\-isn''t;
+突破 > breakthrough;
+侵晨 > towards\-dawn;
+漢城 > seoul\,\-korea;
+少數 > small\-number;
+當初 > at\-that\-time;
+拌和 > mix\-and\-stir;
+流通 > to\-circulate;
+咨詢 > consultative;
+扒拉 > push\-lightly;
+專政 > dictatorship;
+飼草 > forage\-grass;
+鼻腔 > nasal\-cavity;
+浴血 > blood\-soaked;
+依據 > according\-to;
+屬國 > vassal\-state;
+鋼筆 > fountain\-pen;
+偉人 > great\-person;
+安營 > pitch\-a\-camp;
+和解 > conciliatory;
+實施 > to\-implement;
+條子 > a\-short\-note;
+根本 > \(not\)\-at\-all;
+種種 > all\-kinds\-of;
+手帕 > handkerchief;
+法院 > court\-of\-law;
+根據 > according\-to;
+河馬 > hippopotamus;
+生命 > life\-\(force\);
+主角 > leading\-role;
+淫猥 > abominations;
+產卵 > lay\-\(an\-egg\);
+果皮 > \(fruit\)\-peel;
+獨裁 > dictatorship;
+不足 > insufficient;
+家政 > housekeeping;
+不貲 > immeasurable;
+晚餐 > evening\-meal;
+作愛 > to\-make\-love;
+蘇聯 > soviet\-union;
+害怕 > to\-be\-afraid;
+晚間 > evening\-time;
+五百 > five\-hundred;
+和約 > peace\-treaty;
+證驗 > real\-results;
+懊悔 > feel\-remorse;
+扣上 > to\-buckle\-up;
+俄中 > russia\-china;
+一萬 > ten\-thousand;
+變速 > speed\-change;
+安心 > feel\-at\-ease;
+人民 > \(the\)\-people;
+將來 > \(the\)\-future;
+題花 > title\-design;
+可觀 > considerable;
+人權 > human\-rights;
+趕上 > keep\-up\-with;
+股市 > stock\-market;
+移民 > to\-immigrate;
+深愛 > affectionate;
+今晨 > this\-morning;
+密友 > close\-friend;
+存心 > deliberately;
+南非 > south\-africa;
+不符 > inconsistent;
+告示 > announcement;
+丹田 > pubic\-region;
+半響 > half\-the\-day;
+主環 > primary\-ring;
+你們 > you\-\(plural\);
+一直 > continuously;
+姿色 > good\-looking;
+暗算 > plot\-against;
+稍微 > a\-little\-bit;
+亮度 > illumination;
+參考 > consultation;
+人家 > other\-people;
+壯麗 > magnificence;
+黨政 > party\-policy;
+虐待 > mistreatment;
+感恩 > thanksgiving;
+罰球 > penalty\-shot;
+費城 > philadelphia;
+油畫 > oil\-painting;
+美洲 > the\-americas;
+貧困 > impoverished;
+亞太 > asia\-pacific;
+大量 > great\-amount;
+頂用 > to\-be\-of\-use;
+費力 > great\-effort;
+暗灘 > hidden\-shoal;
+藥方 > prescription;
+主持 > preside\-over;
+銀幕 > movie\-screen;
+老家 > native\-place;
+暗潮 > undercurrent;
+買價 > buying\-price;
+多邊 > multilateral;
+現代 > modern\-times;
+他人 > other\-person;
+之後 > after\(wards\);
+慣例 > conventional;
+並排 > side\-by\-side;
+耕地 > ariable\-land;
+暗流 > undercurrent;
+浴場 > bathing\-spot;
+不料 > unexpectedly;
+蓋菜 > leaf\-mustard;
+識破 > to\-penetrate;
+不拘 > not\-stick\-to;
+鼓勵 > to\-encourage;
+鞭砲 > firecrackers;
+感動 > to\-move\-\(sb\);
+意味 > significance;
+不愧 > be\-worthy\-of;
+不意 > unexpectedly;
+靶紙 > target\-sheet;
+愈加 > all\-the\-more;
+遠離 > removed\-from;
+和善 > good\-natured;
+認證 > authenticate;
+刨齒 > gear\-shaping;
+注意 > take\-note\-of;
+𦉆 > to\-break\-off;
+風味 > local\-flavor;
+繡花 > to\-embroider;
+知識 > intellectual;
+暗探 > secret\-agent;
+暴怒 > violent\-rage;
+不容 > not\-tolerate;
+不宜 > not\-suitable;
+犯毒 > illegal\-drug;
+大致 > more\-or\-less;
+好看 > good\-looking;
+不如 > not\-equal\-to;
+得票 > vote\-getting;
+派別 > denomination;
+線軸 > thread\-spool;
+有利 > advantageous;
+訂閱 > subscription;
+恢復 > to\-reinstate;
+這項 > this\-\(thing\);
+可惜 > it\-is\-a\-pity;
+婚外 > extramarital;
+不單 > not\-the\-only;
+運送 > to\-transport;
+之一 > one\-of\-\(sth\);
+境遇 > circumstance;
+野心 > wild\-schemes;
+敗興 > disappointed;
+卻步 > to\-step\-back;
+中俄 > china\-russia;
+危殆 > grave\-danger;
+中亞 > central\-asia;
+變性 > denaturation;
+原料 > raw\-material;
+不利 > unfavourable;
+一千 > one\-thousand;
+爆發 > to\-break\-out;
+多站 > multistation;
+氧氣 > oxygen\-\(gas\);
+念日 > memorial\-day;
+各國 > each\-country;
+不便 > inconvenient;
+時態 > \(verb\)\-tense;
+羅列 > to\-spead\-out;
+一億 > 1\-00\-million;
+復活 > resurrection;
+暴動 > insurrection;
+靶機 > target\-drone;
+運行 > be\-in\-motion;
+編舞 > choreography;
+比照 > according\-to;
+壓縮 > to\-compress;
+訪華 > visit\-china;
+認知 > acknowledge;
+叫喊 > exclamation;
+連詞 > conjunction;
+弊端 > malpractice;
+非核 > non\-nuclear;
+收穫 > acquisition;
+民族 > nationality;
+暗井 > blind\-shaft;
+暗中 > in\-the\-dark;
+矚目 > to\-focus\-on;
+布鞋 > cloth\-shoes;
+埋頭 > steamed\-bun;
+判處 > to\-sentance;
+刻苦 > hardworking;
+標點 > punctuation;
+白麵 > wheat\-flour;
+冒險 > take\-a\-risk;
+白鶴 > white\-crane;
+往昔 > in\-the\-past;
+邊疆 > border\-area;
+讓位 > to\-abdicate;
+怪僻 > peculiarity;
+征收 > levy\-\(fine\);
+母板 > motherboard;
+需求 > requirement;
+大業 > great\-cause;
+旺季 > busy\-season;
+必定 > be\-bound\-to;
+半年 > half\-a\-year;
+課桌 > school\-desk;
+間隔 > compartment;
+遲疑 > to\-hesitate;
+靈感 > inspiration;
+失敗 > be\-defeated;
+說服 > to\-persuade;
+制約 > to\-restrict;
+鞏固 > consolidate;
+包括 > to\-comprise;
+妥善 > appropriate;
+辯証 > dialectical;
+瀉鹽 > epsom\-salts;
+複雜 > complicated;
+即刻 > immediately;
+勘探 > exploration;
+博取 > try\-to\-gain;
+放棄 > to\-renounce;
+冰蛋 > frozen\-eggs;
+阻礙 > to\-obstruct;
+追究 > investigate;
+郵局 > post\-office;
+雙數 > even\-number;
+蒐尋 > to\-look\-for;
+白道 > moon''s\-path;
+動態 > development;
+永久 > everlasting;
+發送 > to\-transmit;
+配備 > to\-allocate;
+謀取 > try\-to\-gain;
+比如 > for\-example;
+多山 > mountainous;
+電工 > electrician;
+紅色 > red\-\(color\);
+描述 > to\-describe;
+十億 > one\-billion;
+兵蟻 > soldier\-ant;
+毀壞 > destruction;
+削減 > to\-cut\-down;
+日中 > japan\-china;
+隨時 > at\-any\-time;
+証書 > certificate;
+長談 > a\-long\-talk;
+大型 > large\-scale;
+補選 > by\-election;
+落後 > fall\-behind;
+推遲 > to\-postpone;
+操法 > drill\-rules;
+軍隊 > army\-troops;
+樹葉 > tree\-leaves;
+剛架 > rigid\-frame;
+談到 > to\-refer\-to;
+再者 > furthermore;
+調制 > to\-modulate;
+基石 > cornerstone;
+往事 > past\-events;
+大功 > great\-merit;
+裁軍 > disarmament;
+誡命 > commandment;
+內臣 > chamberlain;
+坦蕩 > magnanimous;
+探討 > investigate;
+增強 > to\-increase;
+遵守 > comply\-with;
+限於 > restrict\-at;
+閉經 > amenorrhoea;
+認出 > recognition;
+免職 > degradation;
+工程 > engineering;
+記得 > to\-remember;
+擺布 > order\-about;
+透明 > transparent;
+力圖 > try\-hard\-to;
+追查 > investigate;
+典禮 > celebration;
+刑期 > prison\-term;
+精簡 > to\-simplify;
+花茶 > scented\-tea;
+散佈 > disseminate;
+覆滅 > destruction;
+簿記 > bookkeeping;
+觸怒 > provocation;
+攪和 > to\-mix\-\(up\);
+描繪 > to\-describe;
+週年 > anniversary;
+絕望 > desperation;
+敗仗 > lost\-battle;
+增多 > to\-increase;
+結束 > termination;
+無意 > inadvertant;
+邊區 > border\-area;
+相比 > compared\-to;
+覆沒 > annihilated;
+眉梢 > tip\-of\-brow;
+切換 > to\-cut\-over;
+兩百 > two\-hundred;
+評價 > to\-evaluate;
+崩裂 > burst\-apart;
+加以 > in\-addition;
+按鈕 > push\-button;
+農業 > agriculture;
+報應 > retribution;
+幾年 > a\-few\-years;
+盼望 > to\-hope\-for;
+隊員 > team\-member;
+行蹤 > whereabouts;
+支付 > pay\-\(money\);
+表語 > predicative;
+註冊 > to\-register;
+附屬 > subordinate;
+偽軍 > puppet\-army;
+優秀 > outstanding;
+體貼 > considerate;
+執政 > be\-in\-power;
+魚竿 > fishing\-rod;
+希望 > ro\-wish\-for;
+約會 > appointment;
+體認 > realization;
+幸好 > fortunately;
+授粉 > pollination;
+製片 > moviemaking;
+機會 > opportunity;
+關押 > put\-in\-jail;
+記住 > to\-remember;
+灌溉 > to\-irrigate;
+通告 > to\-announce;
+驕陽 > blazing\-sun;
+濃縮 > concentrate;
+國籍 > nationality;
+前任 > predecessor;
+軟碟 > floppy\-disk;
+軟盤 > floppy\-disk;
+屏門 > screen\-door;
+拜訪 > pay\-a\-visit;
+退出 > to\-withdraw;
+採煤 > coal\-mining;
+平凡 > commonplace;
+括號 > parenthesis;
+便鞋 > cloth\-shoes;
+滲透 > to\-permeate;
+偷聽 > to\-evesdrop;
+出兵 > send\-troops;
+培土 > to\-earth\-up;
+開戰 > start\-a\-war;
+分佈 > distributed;
+迷人 > fascinating;
+出來 > to\-come\-out;
+信道 > signal\-path;
+魔法 > enchantment;
+申請 > apply\-\(for\);
+跑車 > racing\-bike;
+描摹 > to\-describe;
+八年 > eight\-years;
+籌款 > fundraising;
+域名 > domain\-name;
+八字 > character\-8;
+相似 > to\-resemble;
+挪用 > to\-embezzle;
+發展 > development;
+裝扮 > dress\-up\-as;
+城區 > city\-proper;
+溝通 > communicate;
+為了 > in\-order\-to;
+白宮 > white\-house;
+冠冕 > royal\-crown;
+像樣 > presentable;
+巧合 > coincidence;
+戰車 > war\-chariot;
+白夜 > white\-night;
+花店 > flower\-shop;
+描寫 > to\-describe;
+便覽 > brief\-guide;
+舊版 > old\-version;
+因此 > that\-is\-why;
+實踐 > to\-practice;
+尋覓 > to\-look\-for;
+瑞雪 > timely\-snow;
+公元 > \(year\)\-a\.d\.;
+色情 > pornography;
+來訪 > pay\-a\-visit;
+白刃 > naked\-sword;
+發出 > to\-send\-out;
+就職 > take\-office;
+拔營 > strike\-camp;
+把穩 > trustworthy;
+容貌 > countenance;
+舒服 > comfortable;
+手續 > formalities;
+按期 > on\-schedule;
+踩水 > tread\-water;
+宣言 > declaration;
+仿造 > counterfeit;
+實習 > to\-practice;
+偷懶 > to\-goof\-off;
+鼻音 > nasal\-sound;
+查證 > investigate;
+環繞 > to\-surround;
+困境 > predicament;
+滲濾 > percolation;
+病容 > sickly\-look;
+成績 > performance;
+人間 > man''s\-world;
+端站 > end\-station;
+衍射 > diffraction;
+回報 > \(in\)\-return;
+棗樹 > jujube\-tree;
+或稱 > also\-called;
+括弧 > parenthesis;
+高壓 > high\-handed;
+仲裁 > arbitration;
+值得 > to\-be\-worth;
+異常 > exceptional;
+蚱蜢 > grasshopper;
+鑽孔 > bore\-a\-hole;
+當局 > authorities;
+高唱 > sing\-loudly;
+介詞 > preposition;
+舞劇 > dance\-drama;
+傑出 > illustrious;
+疆場 > battlefield;
+信服 > to\-convince;
+脾氣 > temperament;
+上齒 > upper\-teeth;
+慰藉 > consolation;
+板規 > plate\-gauge;
+病人 > sick\-person;
+鑒定 > to\-appraise;
+備件 > spare\-parts;
+生成 > be\-produced;
+便桶 > chamber\-pot;
+脫氧 > deoxidation;
+情願 > willingness;
+生態 > way\-of\-life;
+指出 > to\-indicate;
+扁桃 > almond\-tree;
+跋扈 > domineering;
+修復 > restoration;
+筆心 > pencil\-lead;
+信息 > information;
+不顧 > in\-spite\-of;
+立法 > legislation;
+對方 > counterpart;
+空白 > blank\-space;
+男女 > male\-female;
+當做 > to\-treat\-as;
+跛子 > lame\-person;
+五萬 > 50\-thousand;
+有趣 > interesting;
+保存 > to\-conserve;
+淘神 > troublesome;
+筆墨 > pen\-and\-ink;
+薑餅 > gingerbread;
+溫度 > temperature;
+跑壘 > baserunning;
+蜜桃 > honey\-peach;
+鑒于 > in\-light\-of;
+可驚 > astonishing;
+便宜 > inexpensive;
+不迭 > cannot\-cope;
+手寫 > handwriting;
+下載 > to\-download;
+踏上 > set\-foot\-on;
+作文 > composition;
+滲入 > to\-permeate;
+環形 > ring\-shaped;
+佈景 > \(stage\)\-set;
+戒律 > commandment;
+驚人 > astonishing;
+騷動 > disturbance;
+悲觀 > pessimistic;
+屬下 > subordinate;
+美貌 > goodlooking;
+用以 > in\-order\-to;
+麻藥 > anaesthetic;
+小型 > small\-scale;
+戰場 > battlefield;
+題詞 > inscription;
+例如 > for\-example;
+趣味 > to\-interest;
+信仰 > firm\-belief;
+股東 > stockholder;
+鎮壓 > suppression;
+板牙 > front\-tooth;
+泳褲 > swim\-trunks;
+條例 > regulations;
+同質 > homogeneous;
+環境 > environment;
+顯著 > outstanding;
+二百 > two\-hundred;
+就任 > take\-office;
+果汁 > fruit\-juice;
+耕畜 > farm\-animal;
+重返 > return\-\(to\);
+下落 > whereabouts;
+丟臉 > humiliation;
+法規 > legislation;
+我國 > our\-country;
+佈局 > arrangement;
+變通 > be\-flexible;
+鼻涕 > nasal\-mucus;
+貸款 > \(bank\)\-loan;
+準備 > preparation;
+安康 > good\-health;
+預計 > to\-forecast;
+聰明 > intelligent;
+量詞 > meaure\-word;
+立即 > immediately;
+名著 > masterpiece;
+任意 > arbitrarily;
+安家 > settle\-down;
+饒恕 > forgiveness;
+宇宙 > outer\-space;
+瑞士 > switzerland;
+喇叭 > loudspeaker;
+成份 > composition;
+駁倒 > demolish\-sb;
+浴池 > public\-bath;
+以往 > in\-the\-past;
+顯目 > outstanding;
+奔馳 > run\-quickly;
+現年 > current\-age;
+鈔票 > paper\-money;
+示範 > demonstrate;
+智能 > intelligent;
+交換 > to\-exchange;
+風波 > disturbance;
+藥物 > medicaments;
+鄙陋 > superficial;
+考查 > investigate;
+夜鶯 > nightingale;
+餐廳 > dining\-hall;
+北韓 > north\-korea;
+互換 > to\-exchange;
+威脅 > to\-threaten;
+空前 > unprecedent;
+預約 > reservation;
+碰見 > to\-run\-into;
+查出 > to\-find\-out;
+半邊 > half\-of\-sth;
+暗示 > drop\-a\-hint;
+交往 > association;
+氣質 > temperament;
+書法 > calligraphy;
+卓越 > distinction;
+股價 > stock\-price;
+九月 > ninth\-month;
+主權 > sovereignty;
+多餘 > superfluous;
+恰當 > appropriate;
+聽取 > hear\-\(news\);
+感性 > sensibility;
+商人 > businessman;
+禁止 > to\-prohibit;
+秉承 > take\-orders;
+售價 > to\-sell\-for;
+嬌媚 > flirtatious;
+頁碼 > page\-number;
+交媾 > to\-have\-sex;
+上流 > upper\-class;
+霸道 > overbearing;
+波瀾 > great\-waves;
+波濤 > great\-waves;
+不止 > incessantly;
+爭議 > controversy;
+中東 > middle\-east;
+丹方 > folk\-remedy;
+重疊 > overlapping;
+中日 > china\-japan;
+吞沒 > to\-embezzle;
+重現 > to\-reappear;
+食堂 > dining\-hall;
+曲折 > complicated;
+靶船 > target\-ship;
+千萬 > ten\-million;
+一月 > first\-month;
+犯病 > to\-fall\-ill;
+同步 > synchronous;
+哺乳 > breast\-feed;
+調變 > to\-modulate;
+主張 > to\-advocate;
+婚期 > wedding\-day;
+暗殺 > assassinate;
+毛蟲 > caterpillar;
+主席 > chairperson;
+邊陲 > border\-area;
+危篤 > deathly\-ill;
+互動 > interactive;
+妖精 > evil\-spirit;
+中年 > middle\-aged;
+貝丘 > shell\-mound;
+意向 > disposition;
+沈澱 > precipitate;
+取決 > depend\-upon;
+繁複 > complicated;
+隔離 > to\-separate;
+三年 > three\-years;
+隔開 > to\-separate;
+𡽱 > a\-high\-hill;
+下屬 > subordinate;
+上層 > upper\-layer;
+繼續 > to\-continue;
+壯觀 > spectacular;
+政變 > coup\-d''etat;
+神學 > theological;
+繁華 > flourishing;
+題字 > inscription;
+合影 > joint\-photo;
+如畫 > picturesque;
+不堪 > cannot\-bear;
+藥品 > medicaments;
+順應 > comply\-with;
+終點 > destination;
+爆竹 > firecracker;
+得病 > to\-fall\-ill;
+透露 > to\-leak\-out;
+阻隔 > to\-separate;
+特權 > prerogative;
+太空 > outer\-space;
+分離 > to\-seperate;
+禁令 > prohibition;
+不免 > unavoidable;
+誓約 > honor\-bound;
+證書 > credentials;
+沈思 > contemplate;
+解釋 > explanation;
+分開 > to\-separate;
+礁島 > reef\-island;
+通過 > by\-means\-of;
+迎風 > in\-the\-wind;
+上任 > take\-office;
+如此 > in\-this\-way;
+論爭 > controversy;
+悠久 > established;
+上下 > up\-and\-down;
+恐嚇 > to\-threaten;
+素食 > vegetables;
+縮短 > to\-curtail;
+改組 > reorganize;
+擁護 > to\-endorse;
+進行 > to\-advance;
+奔波 > rush\-about;
+後母 > stepmother;
+散發 > distribute;
+失火 > catch\-fire;
+誕生 > to\-be\-born;
+多爾 > \(bob\)\-dole;
+彼此 > each\-other;
+預先 > beforehand;
+關門 > close\-down;
+違背 > to\-violate;
+統計 > statistics;
+函購 > mail\-order;
+預備 > to\-prepare;
+壁立 > \(of\-cliffs;
+春季 > springtime;
+摘錄 > to\-extract;
+頒佈 > promulgate;
+每次 > every\-time;
+編程 > to\-program;
+分詞 > participle;
+後期 > late\-stage;
+效用 > usefulness;
+糧食 > foodstuffs;
+荒野 > wilderness;
+撒謊 > tell\-a\-lie;
+燃燒 > combustion;
+弄直 > straighten;
+遷移 > to\-migrate;
+大氣 > atmosphere;
+認為 > to\-believe;
+降落 > to\-descend;
+前者 > the\-former;
+效率 > efficiency;
+靶心 > bull''s\-eye;
+勃然 > agitatedly;
+碟子 > small\-dish;
+講師 > instructor;
+取代 > substitute;
+新教 > protestant;
+多次 > many\-times;
+奇數 > odd\-number;
+必將 > inevitably;
+陰精 > sex\-fluids;
+妖嬈 > enchanting;
+狂亂 > hysterical;
+繁榮 > prosperous;
+繼承 > to\-inherit;
+操縱 > to\-operate;
+全面 > all\-around;
+厘升 > centiliter;
+調整 > adjustment;
+妓女 > prostitute;
+荒謬 > ridiculous;
+白頭 > hoary\-head;
+決不 > not\-at\-all;
+說明 > to\-explain;
+出色 > remarkable;
+女婿 > son\-in\-law;
+特別 > especially;
+免除 > to\-prevent;
+妥協 > compromise;
+巨輪 > large\-ship;
+熄滅 > extinguish;
+照片 > photograph;
+附筆 > postscript;
+親自 > personally;
+改正 > to\-correct;
+半圓 > semicircle;
+違犯 > to\-violate;
+爭奪 > fight\-over;
+短期 > short\-term;
+每年 > every\-year;
+敵手 > antagonist;
+印像 > impression;
+精通 > proficient;
+很大 > tremendous;
+白酒 > spirit\-usu;
+明亮 > brightness;
+草莓 > strawberry;
+報章 > newspapers;
+多年 > many\-years;
+語彙 > vocabulary;
+早先 > previously;
+牌價 > list\-price;
+巫術 > witchcraft;
+過渡 > transition;
+探險 > to\-explore;
+大學 > university;
+無理 > irrational;
+半價 > half\-price;
+區別 > difference;
+文學 > literature;
+從前 > previously;
+關聯 > be\-related;
+地震 > earthquake;
+觀眾 > spectators;
+排隊 > to\-line\-up;
+分發 > distribute;
+攪擾 > to\-disturb;
+數學 > mathematic;
+熱心 > enthusiasm;
+電子 > electronic;
+白話 > vernacular;
+炸糕 > fried\-cake;
+堆積 > accumulate;
+散射 > scattering;
+蓋世 > unrivelled;
+編排 > to\-arrange;
+捕魚 > catch\-fish;
+出生 > to\-be\-born;
+允諾 > to\-promise;
+調和 > harmonious;
+後來 > afterwards;
+大喜 > exultation;
+政府 > government;
+設施 > facilities;
+方便 > convenient;
+接通 > to\-connect;
+此後 > after\-this;
+座標 > coordinate;
+經歷 > experience;
+樂觀 > optimistic;
+太古 > immemorial;
+離婚 > to\-divorce;
+燈塔 > lighthouse;
+出版 > to\-publish;
+誇大 > exaggerate;
+兵船 > man\-of\-war;
+加州 > california;
+傷風 > catch\-cold;
+放射 > to\-radiate;
+比例 > proportion;
+遷徙 > to\-migrate;
+隨後 > soon\-after;
+前景 > foreground;
+遷延 > long\-delay;
+補語 > complement;
+加密 > to\-encrypt;
+整合 > to\-conform;
+違抗 > to\-disobey;
+監督 > to\-control;
+文具 > stationery;
+每人 > per\-person;
+阻止 > to\-prevent;
+防水 > waterproof;
+防止 > to\-prevent;
+退步 > degenerate;
+適度 > moderately;
+遠征 > expedition;
+白臉 > white\-face;
+總共 > altogether;
+解析 > to\-analyze;
+試圖 > to\-attempt;
+艦載 > ship\-based;
+知名 > well\-known;
+多事 > meddlesome;
+冰球 > ice\-hockey;
+解放 > liberation;
+偽頂 > false\-roof;
+高階 > high\-level;
+捏造 > to\-make\-up;
+分析 > to\-analyze;
+擁抱 > to\-embrace;
+零下 > below\-zero;
+差異 > difference;
+放出 > to\-let\-off;
+公石 > hectoliter;
+攻克 > to\-capture;
+報數 > number\-off;
+收入 > to\-take\-in;
+詞典 > dictionary;
+設在 > located\-at;
+限度 > limitation;
+裱糊 > wall\-paper;
+檢查 > inspection;
+瀆職 > wrongdoing;
+庇廕 > \(of\-a\-tree;
+陰天 > cloudy\-day;
+終於 > eventually;
+訂婚 > engagement;
+陸基 > land\-based;
+廚司 > cook\,\-chef;
+傳說 > it\-is\-said;
+高速 > high\-speed;
+制定 > to\-draw\-up;
+速射 > rapid\-fire;
+遺傳 > hereditary;
+舉辦 > to\-conduct;
+利害 > formidable;
+攪亂 > to\-confuse;
+入獄 > go\-to\-jail;
+米粉 > rice\-flour;
+糾正 > to\-correct;
+親手 > personally;
+農村 > rural\-area;
+副刊 > supplement;
+操場 > playground;
+基於 > because\-of;
+衍變 > to\-develop;
+全然 > completely;
+團聚 > to\-reunite;
+白狐 > arctic\-fox;
+擁塞 > congestion;
+討厭 > disgusting;
+違傲 > to\-disobey;
+白熾 > white\-heat;
+白熱 > white\-heat;
+白熊 > polar\-bear;
+白煤 > anthracite;
+倚靠 > to\-lean\-on;
+幼女 > young\-girl;
+觀察 > to\-observe;
+兵法 > art\-of\-war;
+當選 > be\-elected;
+摘抄 > to\-extract;
+監控 > to\-monitor;
+堤岸 > embankment;
+結局 > conclusion;
+欠佳 > suboptimal;
+週到 > thoughtful;
+規律 > discipline;
+管轄 > administer;
+常常 > frequently;
+樹樁 > tree\-stump;
+襯托 > to\-set\-off;
+操典 > drill\-book;
+跑馬 > horse\-race;
+檢察 > to\-inspect;
+巨星 > giant\-star;
+附加 > additional;
+操作 > to\-operate;
+相對 > relatively;
+無價 > invaluable;
+屏除 > get\-rid\-of;
+搏斗 > to\-wrestle;
+拜託 > request\-sb;
+排球 > volleyball;
+紀律 > discipline;
+店主 > shop\-owner;
+瓶頸 > bottleneck;
+幫助 > assistance;
+幫凶 > accomplice;
+分別 > difference;
+公撮 > milliliter;
+結合 > to\-combine;
+籃球 > basketball;
+抱負 > aspiration;
+算術 > arithmetic;
+推測 > conjecture;
+要塞 > stronghold;
+白旗 > white\-flag;
+演變 > to\-develop;
+滿足 > to\-satisfy;
+驅逐 > banishment;
+表示 > to\-express;
+農園 > plantation;
+高級 > high\-level;
+投資 > investment;
+看到 > see\-\(that\);
+提昇 > to\-promote;
+兌換 > to\-convert;
+公引 > hectometer;
+駕馭 > to\-control;
+專門 > specialist;
+看來 > apparently;
+臉色 > complexion;
+草叢 > underbrush;
+兼容 > compatible;
+軍港 > naval\-port;
+按立 > ordination;
+生計 > livelihood;
+掌櫃 > shopkeeper;
+表現 > expression;
+兩岸 > bilaterial;
+共存 > to\-coexist;
+囚犯 > a\-prisoner;
+偉績 > great\-acts;
+相互 > each\-other;
+衍生 > derviative;
+冰刀 > ice\-skates;
+接收 > to\-receive;
+用處 > usefulness;
+技術 > technology;
+花托 > receptacle;
+宿題 > assignment;
+魚排 > fish\-steak;
+指甲 > fingernail;
+學齡 > school\-age;
+捨棄 > to\-give\-up;
+差別 > difference;
+使醉 > intoxicate;
+拘禁 > constraint;
+國會 > parliament;
+超越 > to\-surpass;
+推廣 > popularize;
+佣金 > commission;
+白喉 > diphtheria;
+授意 > to\-inspire;
+公分 > centimeter;
+筆者 > the\-author;
+保育 > child\-care;
+白區 > white\-area;
+揹債 > be\-in\-debt;
+漫畫 > caricature;
+停火 > cease\-fire;
+良心 > conscience;
+單調 > monotonous;
+表明 > make\-known;
+投稿 > contribute;
+模仿 > to\-imitate;
+發佈 > to\-release;
+條約 > treatypact;
+導航 > navigation;
+排外 > xenophobic;
+導致 > to\-lead\-to;
+展示 > to\-open\-up;
+尋舋 > to\-provoke;
+先例 > antecedent;
+滅絕 > extinguish;
+賓館 > guesthouse;
+樓下 > downstairs;
+提倡 > to\-promote;
+打結 > tie\-a\-knot;
+臆測 > assumption;
+興旺 > prosperous;
+岸標 > lighthouse;
+拔河 > tug\-of\-war;
+生產 > to\-produce;
+補償 > compensate;
+人體 > human\-body;
+推出 > to\-release;
+胞衣 > afterbirth;
+挖掘 > excavation;
+四年 > four\-years;
+餐館 > restaurant;
+指揮 > to\-conduct;
+聖靈 > holy\-ghost;
+指控 > accusation;
+手稿 > manuscript;
+抹油 > to\-annoint;
+表尺 > rear\-sight;
+畢業 > graduation;
+固執 > persistent;
+查詢 > to\-inquire;
+飯館 > restaurant;
+疑慮 > hesitation;
+喉舌 > mouthpiece;
+便當 > convenient;
+聯通 > connection;
+駐紮 > to\-station;
+簽出 > to\-log\-off;
+高層 > high\-level;
+餅鐺 > baking\-pan;
+屢次 > repeatedly;
+鎗管 > gun\-barrel;
+鐵板 > iron\-panel;
+鏈環 > chain\-link;
+捉取 > to\-capture;
+竭盡 > exhaustion;
+軍人 > serviceman;
+意願 > aspiration;
+老頭 > old\-fellow;
+現象 > appearance;
+鎮痛 > analgesiac;
+自尊 > self\-pride;
+定義 > definition;
+競爭 > to\-compete;
+實現 > to\-achieve;
+傷亡 > casualties;
+截然 > completely;
+業余 > spare\-time;
+行列 > procession;
+病假 > sick\-leave;
+期限 > time\-limit;
+把戲 > acrobatics;
+消費 > to\-consume;
+行人 > pedestrian;
+書面 > in\-writing;
+筷子 > chopsticks;
+節制 > temperance;
+腐敗 > corruption;
+獸醫 > veterinary;
+做出 > to\-put\-out;
+作為 > accomplish;
+折射 > refraction;
+喉炎 > laryngitis;
+了解 > understand;
+信心 > confidence;
+聯繫 > connection;
+珍藏 > collection;
+自信 > confidence;
+聖職 > priesthood;
+錶盤 > dial\-plate;
+桃樹 > peach\-tree;
+單模 > singlemode;
+想象 > to\-imagine;
+下降 > to\-decline;
+審查 > to\-examine;
+層壓 > lamination;
+周速 > cycle\-time;
+暴風 > storm\-wind;
+屬地 > dependency;
+漲價 > appreciate;
+聖經 > holy\-bible;
+仿真 > to\-emulate;
+和諧 > harmonious;
+介紹 > to\-present;
+頻頻 > repeatedly;
+缺點 > weak\-point;
+本行 > one''s\-line;
+滲坑 > sewage\-pit;
+競技 > tournament;
+抵制 > resistance;
+鐵匠 > blacksmith;
+任用 > to\-appoint;
+單數 > odd\-number;
+板紙 > paperboard;
+呈遞 > to\-present;
+波長 > wavelength;
+專心 > absorption;
+個別 > individual;
+會計 > accountant;
+流血 > shed\-blood;
+肉片 > meat\-slice;
+溫室 > greenhouse;
+倚仗 > to\-lean\-on;
+抑制 > to\-inhibit;
+作料 > condiments;
+便壺 > bed\-urinal;
+趨奉 > to\-fawn\-on;
+使怒 > exasperate;
+依屬 > dependence;
+預防 > to\-prevent;
+個人 > individual;
+等到 > wait\-until;
+小姐 > young\-lady;
+桌布 > tablecloth;
+背景 > background;
+不變 > unchanging;
+一貫 > consistent;
+批准 > to\-approve;
+科系 > department;
+愁緒 > melancholy;
+神話 > fairy\-tale;
+住所 > habitation;
+顛覆 > subversion;
+案子 > long\-table;
+互相 > each\-other;
+便利 > convenient;
+河邊 > river\-bank;
+不虞 > unexpected;
+尤其 > especially;
+淘汰 > to\-die\-out;
+肥料 > fertilizer;
+安排 > to\-arrange;
+議院 > parliament;
+狡辯 > to\-quibble;
+第二 > number\-two;
+格外 > especially;
+暴行 > savage\-act;
+實在 > in\-reality;
+超升 > exaltation;
+叛軍 > rebel\-army;
+獸穴 > animal\-den;
+孝敬 > to\-respect;
+警鐘 > alarm\-bell;
+胖子 > fat\-person;
+存放 > to\-deposit;
+餓死 > starvation;
+併吞 > swallow\-up;
+學徒 > apprentice;
+感激 > appreciate;
+板樁 > sheet\-pile;
+成分 > ingredient;
+容器 > receptacle;
+重視 > importance;
+悔罪 > conviction;
+能力 > capability;
+必須 > to\-have\-to;
+肯定 > to\-be\-sure;
+任性 > capricious;
+王牌 > trump\-card;
+南面 > south\-side;
+薄荷 > field\-mint;
+馬力 > horsepower;
+月球 > \(the\)\-moon;
+婚約 > engagement;
+現成 > ready\-made;
+頻繁 > frequently;
+議論 > to\-comment;
+交替 > to\-replace;
+神秘 > mysterious;
+風濕 > rheumatism;
+群眾 > the\-masses;
+神祕 > mysterious;
+寄予 > to\-express;
+仁慈 > benevolent;
+今後 > henceforth;
+虛擬 > fictitious;
+顯現 > appearance;
+多黨 > multiparty;
+不當 > unsuitable;
+沈落 > sink\,\-fall;
+講述 > talk\-about;
+宣佈 > to\-declare;
+鼓掌 > to\-applaud;
+以外 > apart\-from;
+爆音 > sonic\-boom;
+似乎 > apparently;
+大體 > in\-general;
+空兒 > spare\-time;
+食指 > forefinger;
+牴觸 > contradict;
+程序 > procedures;
+弱點 > weak\-point;
+明言 > pronounced;
+本月 > this\-month;
+哲學 > philosophy;
+丹毒 > erysipelas;
+氣象 > meteorolgy;
+互惠 > reciprocal;
+總體 > completely;
+蔬菜 > vegetables;
+飯店 > restaurant;
+含燐 > phosphoric;
+更正 > correction;
+黑板 > blackboard;
+彙集 > to\-collect;
+講解 > to\-explain;
+預知 > anticipate;
+部門 > department;
+以及 > as\-well\-as;
+聯合 > to\-combine;
+主格 > nominative;
+錄取 > to\-recruit;
+新郎 > bridegroom;
+而後 > after\-that;
+字典 > dictionary;
+悲歌 > sad\-melody;
+罪狀 > accusation;
+比重 > proportion;
+賠償 > compensate;
+流放 > banishment;
+人均 > per\-capita;
+可疑 > suspicious;
+聞名 > well\-known;
+而已 > that''s\-all;
+浴巾 > bath\-towel;
+吊燈 > chandelier;
+聲價 > reputation;
+薄片 > thin\-slice;
+更新 > up\-to\-date;
+顫栗 > to\-tremble;
+本底 > background;
+集體 > collective;
+敗露 > \(of\-a\-plot;
+試驗 > experiment;
+人口 > population;
+厘米 > centimeter;
+歸順 > submission;
+失蹤 > be\-missing;
+飽和 > saturation;
+歡騰 > jubilation;
+後裔 > descendant;
+氣色 > complexion;
+金牌 > gold\-medal;
+不會 > improbable;
+上月 > last\-month;
+吵架 > to\-quarrel;
+意外 > unexpected;
+碧綠 > dark\-green;
+不時 > frequently;
+老套 > old\-things;
+並把 > to\-include;
+談論 > to\-discuss;
+及物 > transitive;
+電車 > trolleybus;
+欺騙 > to\-deceive;
+顧慮 > misgivings;
+可比 > comparable;
+事先 > in\-advance;
+警犬 > police\-dog;
+剛體 > rigid\-body;
+景氣 > prosperity;
+卜筮 > divination;
+不快 > be\-unhappy;
+昌盛 > prosperous;
+改過 > to\-correct;
+改進 > to\-improve;
+不幸 > misfortune;
+電視 > television;
+後者 > the\-latter;
+纏繞 > intertwine;
+加速 > accelerate;
+諳練 > conversant;
+一度 > for\-a\-time;
+歡迎 > to\-welcome;
+化肥 > fertilizer;
+墨鏡 > sunglasses;
+剝離 > \(of\-tissue;
+不屈 > unyielding;
+彈藥 > ammunition;
+預料 > anticipate;
+頂替 > to\-replace;
+不定 > indefinite;
+不安 > intranquil;
+老人 > old\-people;
+期刊 > periodical;
+知覺 > perception;
+同情 > compassion;
+適配 > adaptation;
+合意 > acceptable;
+大臣 > chancellor;
+同性 > homosexual;
+日益 > day\-by\-day;
+大膽 > courageous;
+本份 > one''s\-duty;
+不妥 > not\-proper;
+會友 > membership;
+繳納 > contribute;
+不夠 > not\-enough;
+私下 > in\-private;
+波峰 > wave\-crest;
+三天 > three\-days;
+𠀍 > generation;
+面目 > appearance;
+反日 > anti\-japan;
+建議 > to\-propose;
+波導 > wave\-guide;
+婢女 > slave\-girl;
+沒收 > confiscate;
+快活 > gay\,\-happy;
+可悲 > lamentable;
+評註 > commentary;
+婊子 > prostitute;
+必然 > inevitable;
+半球 > hemisphere;
+響應 > respond\-to;
+彙編 > collection;
+議會 > parliament;
+大綱 > main\-point;
+撞騙 > to\-swindle;
+烤鴨 > roast\-duck;
+歌詞 > song\-lyric;
+並入 > merge\-into;
+記載 > write\-down;
+弱脈 > weak\-pulse;
+顫動 > to\-tremble;
+原本 > originally;
+吸吮 > to\-suck\-in;
+爆破 > to\-blow\-up;
+道賀 > compliment;
+取得 > to\-acquire;
+上半 > first\-half;
+教育 > to\-educate;
+不動 > motionless;
+吞噬 > to\-swallow;
+要點 > main\-point;
+反復 > repeatedly;
+西點 > west\-point;
+並不 > not\-at\-all;
+斗眼 > cross\-eyed;
+氣氛 > atmosphere;
+眼鏡 > spectacles;
+不備 > unprepared;
+檢驗 > to\-inspect;
+一再 > repeatedly;
+恫嚇 > intimidate;
+一共 > altogether;
+奉獻 > consecrate;
+不依 > not\-comply;
+不住 > repeatedly;
+只好 > to\-have\-to;
+討論 > to\-discuss;
+文盲 > illiterate;
+明智 > not\-unwise;
+另外 > additional;
+撞針 > firing\-pin;
+南極 > south\-pole;
+一代 > generation;
+收縮 > pull\-back;
+多疑 > skeptical;
+合力 > cooperate;
+爆炸 > explosion;
+割草 > mow\-grass;
+變奏 > variation;
+領受 > to\-accept;
+動盪 > commotion;
+可哀 > miserably;
+菠蘿 > pineapple;
+厚度 > thickness;
+速記 > shorthand;
+徐步 > to\-stroll;
+西面 > west\-side;
+摘除 > to\-excise;
+警官 > constable;
+同伴 > companion;
+名人 > personage;
+蔓延 > to\-extend;
+同事 > colleague;
+半旗 > half\-mast;
+金匠 > goldsmith;
+同一 > identical;
+碰巧 > by\-chance;
+普及 > widespead;
+設置 > to\-set\-up;
+燒燬 > burn\-down;
+明年 > next\-year;
+古典 > classical;
+叫做 > be\-called;
+綠茶 > green\-tea;
+別處 > elsewhere;
+述語 > predicate;
+防衛 > to\-defend;
+昨天 > yesterday;
+教父 > godfather;
+受僱 > mercenary;
+於是 > thereupon;
+語源 > etymology;
+說法 > statement;
+城門 > city\-gate;
+靈敏 > sensitive;
+助理 > assistant;
+設立 > to\-set\-up;
+論斷 > inference;
+受事 > recepient;
+熬煎 > suffering;
+分號 > semicolon;
+原告 > complaint;
+白魚 > whitefish;
+多樣 > diversity;
+多模 > multimode;
+開頭 > beginning;
+無能 > inability;
+白體 > lean\-type;
+標高 > elevation;
+妖媚 > seductive;
+無聲 > noiseless;
+刺繡 > embroider;
+十年 > ten\-years;
+半島 > peninsula;
+連續 > continous;
+原則 > principle;
+鄭州 > zhengzhou;
+計策 > stratagem;
+底線 > underline;
+閃電 > lightning;
+引渡 > extradite;
+教母 > godmother;
+壁爐 > fireplace;
+文明 > civilized;
+直覺 > intuition;
+壁燈 > wall\-lamp;
+發音 > pronounce;
+厘克 > centigram;
+無籟 > scoundrel;
+加深 > to\-deepen;
+執行 > implement;
+雹暴 > hailstorm;
+確信 > confident;
+奠定 > establish;
+那樣 > that\-kind;
+公里 > kilometer;
+誠摯 > sincerely;
+差距 > disparity;
+襯裙 > petticoat;
+鰾膠 > isinglass;
+證件 > paperwork;
+細菌 > bacterial;
+芬香 > fragrance;
+占卜 > to\-divine;
+蒼天 > firmament;
+緩沖 > to\-buffer;
+選派 > set\-apart;
+散播 > to\-spread;
+大志 > high\-aims;
+輔音 > consonant;
+張揚 > publicize;
+解碼 > to\-decode;
+播種 > sow\-seeds;
+化學 > chemistry;
+報紙 > newspaper;
+無知 > ignorance;
+接駁 > to\-access;
+很多 > very\-many;
+誠意 > sincerity;
+廣泛 > extensive;
+鳳梨 > pineapple;
+雙方 > bilateral;
+長遠 > long\-term;
+千周 > kilohertz;
+過濾 > to\-filter;
+奇妙 > fantastic;
+冰蓋 > ice\-sheet;
+遙測 > telemetry;
+農舍 > farmhouse;
+紅蓮 > red\-lotus;
+共識 > consensus;
+輸送 > transport;
+大小 > dimension;
+大家 > authority;
+爭取 > fight\-for;
+每天 > every\-day;
+攻擊 > to\-attack;
+紅茶 > black\-tea;
+文字 > character;
+常綠 > evergreen;
+殘廢 > deformity;
+隱晦 > obscurity;
+照樣 > as\-before;
+方向 > direction;
+焰火 > fireworks;
+救恩 > salvation;
+天天 > every\-day;
+後勤 > logistics;
+助手 > assistant;
+內褲 > underwear;
+辦罪 > to\-punish;
+要緊 > important;
+民主 > democracy;
+務實 > pragmatic;
+推銷 > to\-market;
+彙報 > to\-report;
+要素 > essential;
+夢境 > dreamland;
+課堂 > classroom;
+選擇 > to\-select;
+報界 > the\-press;
+發言 > statement;
+十七 > seventeen;
+火藥 > gunpowder;
+診斷 > diagnosis;
+毫克 > milligram;
+副本 > duplicate;
+艱難 > difficult;
+廣播 > broadcast;
+敗局 > lost\-game;
+郊外 > outskirts;
+教室 > classroom;
+白蠟 > white\-wax;
+出現 > to\-appear;
+逐漸 > gradually;
+冰糕 > ice\-cream;
+允許 > to\-permit;
+後代 > posterity;
+艦長 > commander;
+構造 > structure;
+勾劃 > to\-sketch;
+增援 > reinforce;
+無比 > matchless;
+教士 > churchman;
+次數 > frequency;
+大力 > energetic;
+壯大 > to\-expand;
+權柄 > authority;
+遵循 > to\-follow;
+適意 > agreeable;
+調停 > reconcile;
+干涉 > interfere;
+勤勉 > diligence;
+款待 > entertain;
+發芽 > germinate;
+大便 > excrement;
+撥正 > set\-right;
+壽命 > life\-span;
+經文 > scripture;
+敲入 > to\-key\-in;
+隊形 > formation;
+天上 > celestial;
+辦理 > to\-handle;
+註定 > be\-doomed;
+無數 > countless;
+收回 > to\-regain;
+外交 > diplomacy;
+過度 > exceeding;
+判斷 > to\-decide;
+操持 > to\-manage;
+檢測 > to\-detect;
+矮凳 > low\-stool;
+階層 > hierarchy;
+至高 > paramount;
+推薦 > recommend;
+排行 > seniority;
+前往 > leave\-for;
+教儀 > ordinance;
+結構 > structure;
+墳墓 > sepulcher;
+播放 > broadcast;
+公秉 > kiloliter;
+阻撓 > to\-thwart;
+傳送 > to\-convey;
+遺囑 > testament;
+歡呼 > cheer\-for;
+傳輸 > transport;
+干擾 > interfere;
+推荐 > recommend;
+遊客 > traveller;
+城牆 > city\-wall;
+內碼 > to\-encode;
+摧殘 > to\-ravage;
+撞擊 > to\-strike;
+加劇 > aggravate;
+阻抗 > impedance;
+捐贈 > to\-donate;
+自願 > voluntary;
+樹皮 > tree\-bark;
+經度 > longitude;
+隨員 > attendant;
+光筆 > light\-pen;
+報攤 > newsstand;
+出於 > be\-due\-to;
+救世 > salvation;
+擴大 > to\-expand;
+過多 > excessive;
+無形 > invisible;
+裝置 > equipment;
+故事 > narrative;
+共產 > communist;
+篩選 > to\-filter;
+推翻 > overthrow;
+院子 > courtyard;
+園藝 > gardening;
+廣博 > extensive;
+權威 > authority;
+劃分 > to\-divide;
+傳記 > biography;
+迷惑 > to\-puzzle;
+加上 > to\-put\-in;
+延伸 > to\-extend;
+通宵 > overnight;
+艱苦 > difficult;
+廣傳 > propagate;
+發生 > to\-happen;
+癱瘓 > paralysis;
+組成 > component;
+隊列 > formation;
+接管 > take\-over;
+設備 > equipment;
+隆冬 > midwinter;
+凹度 > concavity;
+漫長 > very\-long;
+界面 > interface;
+創作 > to\-create;
+陪同 > accompany;
+擴充 > to\-expand;
+指責 > criticize;
+綜合 > composite;
+披露 > to\-reveal;
+看待 > look\-upon;
+陷入 > sink\-into;
+衰落 > decompose;
+剛健 > energetic;
+撥奏 > pizzicato;
+逆境 > adversity;
+迫害 > persecute;
+進化 > evolution;
+辯才 > eloquence;
+自負 > conceited;
+市政 > municipal;
+儼然 > just\-like;
+絕妙 > exquisite;
+投降 > surrender;
+簽章 > signature;
+陪伴 > accompany;
+綁匪 > kidnapper;
+無力 > powerless;
+擔保 > guarantee;
+推理 > reasoning;
+因而 > therefore;
+逆向 > backwards;
+跟隨 > to\-follow;
+按蚊 > anopheles;
+樣機 > prototype;
+刨冰 > water\-ice;
+帶寬 > bandwidth;
+異議 > objection;
+規定 > provision;
+展開 > to\-unfold;
+輪流 > alternate;
+傳統 > tradition;
+偏見 > prejudice;
+地理 > geography;
+地球 > the\-earth;
+降低 > to\-reduce;
+保險 > insurance;
+保障 > to\-ensure;
+場合 > situation;
+報告 > to\-inform;
+紳士 > gentleman;
+公斗 > decaliter;
+逝世 > pass\-away;
+返回 > return\-to;
+附件 > enclosure;
+分割 > to\-cut\-up;
+長期 > long\-term;
+扁骨 > flat\-bone;
+保鏢 > bodyguard;
+跑錶 > stopwatch;
+紙夾 > paperclip;
+發明 > to\-invent;
+模擬 > imitation;
+激發 > to\-arouse;
+再度 > once\-more;
+糾察 > to\-picket;
+拷花 > to\-emboss;
+潛艇 > submarine;
+迷住 > fascinate;
+艾炷 > moxa\-cone;
+囚禁 > captivity;
+內戰 > civil\-war;
+便門 > side\-door;
+裁減 > to\-reduce;
+迷亂 > confusion;
+圍牆 > enclosure;
+相同 > identical;
+規勸 > to\-advise;
+表皮 > epidermis;
+表白 > vindicate;
+戶限 > threshold;
+看做 > regard\-as;
+捐獻 > to\-donate;
+兇手 > assailant;
+蟑螂 > cockroach;
+寬頻 > broadband;
+西南 > southwest;
+使館 > consulate;
+西北 > northwest;
+棉被 > comforter;
+精巧 > elaborate;
+嶄新 > brand\-new;
+打進 > to\-breach;
+公寸 > decimeter;
+承認 > recognize;
+公寓 > apartment;
+常任 > permanent;
+光彩 > honorable;
+保護 > to\-defend;
+指示 > point\-out;
+病理 > pathology;
+辛勞 > laborious;
+損壞 > to\-damage;
+保証 > guarantee;
+嘉許 > favorable;
+八天 > eight\-day;
+拒絕 > to\-refuse;
+要不 > otherwise;
+標定 > demarcate;
+膨脹 > to\-expand;
+輻射 > radiation;
+排放 > discharge;
+體現 > to\-embody;
+衰減 > to\-weaken;
+籃板 > backboard;
+馬鞭 > horsewhip;
+苦境 > grievance;
+畢竟 > after\-all;
+低階 > low\-level;
+所謂 > so\-called;
+潰爛 > to\-fester;
+儲存 > stockpile;
+膀臂 > upper\-arm;
+瀑布 > waterfall;
+掛念 > concerned;
+全同 > identical;
+轟動 > sensation;
+臺燈 > desk\-lamp;
+蝴蝶 > butterfly;
+甜美 > sweetness;
+伴隨 > to\-follow;
+實質 > substance;
+公兩 > hectogram;
+植物 > botanical;
+空防 > air\-force;
+入侵 > to\-invade;
+克制 > restraint;
+公丈 > decameter;
+輸出 > to\-export;
+折磨 > persecute;
+輸入 > to\-import;
+實行 > implement;
+等等 > et\-cetera;
+清除 > eliminate;
+打聽 > ask\-about;
+表揚 > to\-praise;
+激怒 > infuriate;
+打翻 > overthrow;
+停泊 > anchorage;
+蜻蜓 > dragonfly;
+漸漸 > gradually;
+子音 > consonant;
+漲潮 > high\-tide;
+家譜 > genealogy;
+驚異 > amazement;
+輔助 > to\-assist;
+提供 > to\-supply;
+穿透 > penetrate;
+接口 > interface;
+接受 > to\-accept;
+體操 > gymnastic;
+便箋 > notepaper;
+空軍 > air\-force;
+超聯 > hyperlink;
+聖餐 > sacrament;
+裝備 > equipment;
+批發 > wholesale;
+漸次 > gradually;
+趕緊 > hurriedly;
+骨架 > framework;
+介面 > interface;
+偵探 > detective;
+臨時 > temporary;
+挑戰 > challenge;
+被告 > defendant;
+排出 > discharge;
+拔染 > discharge;
+貝類 > shellfish;
+在內 > including;
+拿手 > expert\-in;
+竊聽 > eavesdrop;
+宿舍 > dormitory;
+山水 > landscape;
+四天 > four\-days;
+挺好 > very\-good;
+簽入 > to\-log\-on;
+馬背 > horseback;
+驕氣 > arrogance;
+疑心 > suspicion;
+渺茫 > uncertain;
+激勵 > encourage;
+激動 > to\-excite;
+成立 > establish;
+添補 > fill\-\(up\);
+修正 > to\-revise;
+某處 > somewhere;
+賓詞 > predicate;
+稱讚 > to\-praise;
+低級 > low\-level;
+貨輪 > freighter;
+體團 > community;
+極其 > extremely;
+抵抗 > to\-resist;
+颱風 > hurricane;
+伸縮 > to\-extend;
+蚯蚓 > earthworm;
+贖罪 > atonement;
+寵物 > house\-pet;
+聖誕 > christmas;
+假定 > to\-assume;
+行動 > operation;
+主體 > main\-part;
+手法 > technique;
+消遣 > amusement;
+極了 > extremely;
+就業 > get\-a\-job;
+疆域 > territory;
+桌燈 > desk\-lamp;
+疆土 > territory;
+承擔 > undertake;
+膽小 > cowardice;
+屬性 > attribute;
+高價 > expensive;
+主頁 > home\-page;
+美麗 > beautiful;
+會面 > meet\-with;
+成為 > to\-become;
+交誼 > communion;
+錦繡 > beautiful;
+潛力 > potential;
+居所 > residence;
+學童 > schoolboy;
+自動 > automatic;
+蠕動 > to\-wiggle;
+打敗 > to\-defeat;
+豪豬 > porcupine;
+啟發 > enlighten;
+流量 > flow\-rate;
+賜給 > to\-bestow;
+招募 > to\-recuit;
+完畢 > to\-finish;
+對於 > regarding;
+至今 > until\-now;
+翻譯 > translate;
+上面 > on\-top\-of;
+五號 > the\-fifth;
+信差 > messenger;
+膀子 > upper\-arm;
+拆卸 > to\-unload;
+蛋白 > egg\-white;
+吞食 > to\-devour;
+框架 > framework;
+胃炎 > gastritis;
+對抗 > withstand;
+器具 > implement;
+脫掉 > strip\-off;
+香港 > hong\-kong;
+實時 > real\-time;
+肺炎 > pneumonia;
+慶祝 > celebrate;
+宰殺 > slaughter;
+浪蕩 > to\-loiter;
+豪華 > luxurious;
+某物 > something;
+津貼 > allowance;
+肝炎 > hepatitis;
+消耗 > to\-use\-up;
+上載 > to\-upload;
+蘭花 > cymbidium;
+書記 > secretary;
+浪船 > swingboat;
+小寫 > lowercase;
+用具 > appliance;
+古風 > antiquity;
+安歇 > go\-to\-bed;
+家族 > household;
+何故 > wherefore;
+腳印 > footprint;
+瓷器 > chinaware;
+童年 > childhood;
+佔據 > to\-occupy;
+起床 > to\-get\-up;
+寬帶 > broadband;
+來年 > next\-year;
+今生 > this\-life;
+頻道 > frequency;
+本職 > one''s\-job;
+局勢 > situation;
+背斜 > anticline;
+暴躁 > irascible;
+池鹽 > lake\-salt;
+不許 > not\-allow;
+商標 > trademark;
+飯碗 > rice\-bowl;
+晤面 > interview;
+桔子 > tangerine;
+重開 > to\-reopen;
+變革 > transform;
+截奪 > intercept;
+深水 > deepwater;
+趨向 > direction;
+起始 > originate;
+祇讀 > read\-only;
+學會 > institute;
+懸崖 > precipice;
+條件 > condition;
+鷓鴣 > partridge;
+末端 > extremity;
+瓜分 > partition;
+處理 > to\-handle;
+涌現 > spring\-up;
+禮節 > etiquette;
+普遍 > universal;
+變醜 > disfigure;
+並肩 > alongside;
+蜂巢 > honeycomb;
+中美 > china\-usa;
+暗語 > code\-word;
+端口 > interface;
+低層 > low\-level;
+重蹈 > to\-repeat;
+住宅 > residence;
+休戰 > armistice;
+所以 > therefore;
+讚賞 > to\-admire;
+減弱 > to\-weaken;
+叛賣 > to\-betray;
+嫌疑 > suspicion;
+伸展 > extension;
+一致 > unanimous;
+聲明 > statement;
+養殖 > cultivate;
+柿子 > persimmon;
+老牌 > old\-brand;
+妖風 > evil\-wind;
+錶帶 > watchband;
+重要 > important;
+減少 > to\-lessen;
+有益 > wholesome;
+重複 > to\-repeat;
+立刻 > forthwith;
+深思 > to\-ponder;
+早餐 > breakfast;
+野蠻 > barbarous;
+早飯 > breakfast;
+必需 > essential;
+財東 > shopowner;
+虛構 > imaginary;
+聯想 > associate;
+浸沒 > immersion;
+板斧 > broad\-axe;
+含糊 > obscurity;
+淒慘 > miserable;
+一篇 > one\-sided;
+鍵入 > to\-key\-in;
+旋風 > whirlwind;
+祝福 > blessings;
+期滿 > to\-expire;
+警覺 > vigilance;
+原諒 > to\-excuse;
+家俱 > furniture;
+感染 > infection;
+孔子 > confucius;
+子孫 > offspring;
+家人 > household;
+家事 > housework;
+宣傳 > publicize;
+今年 > this\-year;
+呈現 > to\-appear;
+一百 > a\-hundred;
+貫徹 > implement;
+仲夏 > midsummer;
+證詞 > testimony;
+秘書 > secretary;
+突出 > prominent;
+惡毒 > malicious;
+伴侶 > companion;
+昂貴 > expensive;
+露韓 > to\-expose;
+影響 > influence;
+夢魘 > nightmare;
+好運 > good\-luck;
+暴發 > break\-out;
+應付 > deal\-with;
+有毒 > poisonous;
+弱鹼 > weak\-base;
+汽船 > steamboat;
+可笑 > laughable;
+半載 > half\-load;
+微軟 > microsoft;
+仙境 > fairyland;
+旨趣 > objective;
+日趨 > gradually;
+事態 > situation;
+大類 > main\-type;
+本文 > this\-text;
+營養 > nutrition;
+頻率 > frequency;
+協議 > agreement;
+不滿 > resentful;
+那麼 > so\-\(much\);
+必要 > necessary;
+大陸 > continent;
+碧藍 > dark\-blue;
+待遇 > treatment;
+合理 > rationale;
+玩弄 > resort\-to;
+有時 > sometimes;
+旁路 > to\-bypass;
+夜間 > nighttime;
+比鄰 > neighbour;
+非議 > criticize;
+書架 > bookshelf;
+混亂 > confusion;
+有效 > effective;
+缽盂 > alms\-bowl;
+資助 > subsidize;
+上次 > last\-time;
+牌號 > trademark;
+五天 > five\-days;
+消失 > disappear;
+旁觀 > spectator;
+磨石 > millstone;
+介入 > intervene;
+以上 > more\-than;
+矛頭 > spearhead;
+夢遺 > wet\-dream;
+變異 > variation;
+波段 > wave\-band;
+離開 > to\-depart;
+獲得 > to\-obtain;
+吐氣 > aspirated;
+東南 > southeast;
+東北 > northeast;
+不明 > not\-clear;
+奇觀 > spectacle;
+改革 > to\-reform;
+愛國 > patriotic;
+不斷 > unceasing;
+今世 > this\-life;
+未婚 > unmarried;
+弱酸 > weak\-acid;
+收集 > to\-gather;
+乘客 > passenger;
+一時 > temporary;
+助長 > encourage;
+交出 > hand\-over;
+食品 > foodstuff;
+配置 > to\-deploy;
+失調 > imbalance;
+消去 > eliminate;
+本壘 > home\-base;
+人事 > personnel;
+悲慘 > miserable;
+識相 > sensitive;
+書店 > bookstore;
+邊門 > side\-door;
+中庭 > courtyard;
+司機 > chauffeur;
+獨家 > exclusive;
+東亞 > east\-asia;
+復習 > to\-revise;
+合格 > qualified;
+暫時 > temporary;
+雙邊 > bilateral;
+耐力 > endurance;
+明確 > clear\-cut;
+不惜 > not\-stint;
+惡夢 > nightmare;
+原理 > principle;
+主婦 > housewife;
+玩具 > plaything;
+電話 > telephone;
+施肥 > fertilize;
+改造 > to\-change;
+狀況 > condition;
+不平 > injustice;
+這麼 > so\-\(much\);
+不已 > endlessly;
+雜貨 > groceries;
+木匠 > carpenter;
+評選 > to\-choose;
+醬油 > soy\-sauce;
+建造 > construct;
+觸鬚 > tentacles;
+擦音 > fricative;
+周圍 > encompass;
+不對 > incorrect;
+心目 > mentality;
+可敬 > venerable;
+受格 > objective;
+大荳 > soya\-bean;
+𢥞 > same\-as\-忡;
+契約 > agreement;
+鱷魚 > alligator;
+波幅 > amplitude;
+改變 > to\-change;
+庭院 > courtyard;
+禮儀 > etiquette;
+右手 > righthand;
+創造 > to\-create;
+流入 > flow\-into;
+注射 > injection;
+硬盤 > hard\-disk;
+功課 > classwork;
+週長 > perimeter;
+月光 > moonlight;
+失縱 > disappear;
+婚姻 > matrimony;
+口才 > eloquence;
+不在 > not\-be\-in;
+鞭毛 > flagellum;
+撫養 > to\-foster;
+派任 > set\-apart;
+刪除 > to\-delete;
+遠足 > excursion;
+無限 > unlimited;
+頑強 > tenacious;
+無關 > unrelated;
+蒸發 > evaporate;
+古怪 > eccentric;
+得當 > expedient;
+油布 > tarpaulin;
+下唇 > lower\-lip;
+義務 > volunteer;
+上唇 > upper\-lip;
+頁心 > type\-page;
+不吝 > not\-stint;
+不同 > different;
+污染 > pollution;
+前途 > prospects;
+熊蜂 > bumblebee;
+總結 > summarize;
+美味 > delicious;
+吸取 > to\-absorb;
+下午 > afternoon;
+週邊 > periphery;
+年限 > age\-limit;
+下列 > following;
+不准 > not\-allow;
+題名 > autograph;
+多端 > multiport;
+效能 > efficient;
+不停 > incessant;
+大砲 > artillery;
+不值 > not\-worth;
+沙岩 > sandstone;
+波及 > spread\-to;
+微波 > microwave;
+不休 > endlessly;
+無辜 > innocence;
+次要 > secondary;
+不予 > not\-grant;
+去年 > last\-year;
+不了 > unable\-to;
+領土 > territory;
+韌性 > toughness;
+社區 > community;
+版權 > copyright;
+向南 > southward;
+民歌 > folk\-song;
+即時 > immediate;
+播送 > broadcast;
+幸運 > fortunate;
+美中 > usa\-china;
+隕落 > fall\-down;
+熟練 > practiced;
+改編 > to\-adapt;
+磁性 > magnetic;
+壓緊 > compress;
+醫學 > medicine;
+吞併 > to\-annex;
+靈活 > flexible;
+文獻 > document;
+外用 > external;
+邊線 > sideline;
+正統 > orthodox;
+延續 > continue;
+頻仍 > frequent;
+緯線 > latitude;
+無誤 > verified;
+日曆 > calendar;
+剝落 > peel\-off;
+預卜 > foretell;
+幻象 > illusion;
+謹慎 > cautious;
+特性 > property;
+茶館 > teahouse;
+鳥籠 > birdcage;
+微明 > twilight;
+建築 > building;
+友善 > friendly;
+建立 > creation;
+順利 > smoothly;
+心手 > new\-hand;
+冰隙 > crevasse;
+霸權 > hegemony;
+危急 > critical;
+隙縫 > aperture;
+親身 > personal;
+確定 > definite;
+終身 > lifelong;
+記者 > reporter;
+規避 > to\-evade;
+牧師 > chaplain;
+收益 > earnings;
+具體 > concrete;
+平行 > parallel;
+忠實 > faithful;
+步發 > footwork;
+分裂 > split\-up;
+新書 > new\-book;
+口交 > oral\-sex;
+創立 > to\-found;
+煤箱 > coal\-box;
+缺乏 > shortage;
+日後 > sometime;
+邊界 > boundary;
+災難 > disaster;
+徹底 > thorough;
+鱉裙 > calipash;
+警句 > aphorism;
+早已 > long\-ago;
+雖然 > although;
+破曉 > daybreak;
+雨滴 > raindrop;
+明天 > tomorrow;
+妖孽 > evildoer;
+電氣 > electric;
+酬報 > to\-repay;
+遺產 > heritage;
+硬度 > hardness;
+無聊 > nonsense;
+橫過 > traverse;
+征戰 > campaign;
+課本 > textbook;
+凋謝 > languish;
+計算 > to\-count;
+開除 > to\-expel;
+適當 > suitable;
+纖巧 > delicate;
+平臺 > platform;
+大方 > generous;
+無縫 > seamless;
+冠軍 > champion;
+准許 > to\-allow;
+鄰居 > neighbor;
+電梯 > elevator;
+蓋層 > cap\-rock;
+面對 > confront;
+無線 > wireless;
+確切 > definite;
+通紅 > very\-red;
+包抄 > outflank;
+辨認 > identify;
+原來 > original;
+多數 > majority;
+物品 > articles;
+政治 > politics;
+半夜 > midnight;
+午夜 > midnight;
+新年 > new\-year;
+旅客 > traveler;
+逼真 > lifelike;
+步法 > footwork;
+公釐 > decigram;
+殺戮 > massacre;
+力氣 > strength;
+內部 > interior;
+覆蓋 > to\-cover;
+繡帷 > tapestry;
+太忙 > too\-busy;
+睡眠 > sleeping;
+裝飾 > decorate;
+十四 > fourteen;
+平等 > equality;
+白金 > platinum;
+包層 > cladding;
+轉送 > transfer;
+再見 > good\-bye;
+夢幻 > illusion;
+逕直 > straight;
+危亡 > at\-stake;
+草草 > careless;
+巧計 > maneuver;
+著手 > commence;
+料子 > material;
+盲腸 > appendix;
+支柱 > mainstay;
+形容 > describe;
+無疑 > no\-doubt;
+強悍 > valliant;
+粗野 > insolent;
+袋鼠 > kangaroo;
+妖人 > magician;
+軟體 > software;
+新型 > new\-type;
+培育 > to\-train;
+煤油 > kerosene;
+加時 > overtime;
+光輝 > radiance;
+復元 > recovery;
+強度 > strength;
+十八 > eighteen;
+女兒 > daughter;
+多少 > how\-much;
+十克 > decagram;
+地雷 > landmine;
+如今 > nowadays;
+邪惡 > sinister;
+觀看 > to\-watch;
+得分 > to\-score;
+包圍 > surround;
+比喻 > metaphor;
+規範 > standard;
+軀體 > the\-body;
+硬件 > hardware;
+天堂 > paradise;
+十九 > nineteen;
+光譜 > spectrum;
+補遺 > addendum;
+遠東 > far\-east;
+十三 > thirteen;
+機能 > function;
+蒙古 > mongolia;
+遠景 > prospect;
+紐約 > new\-york;
+教導 > instruct;
+提議 > proposal;
+優越 > superior;
+進步 > progress;
+遮掩 > to\-cover;
+電報 > telegram;
+摹畫 > describe;
+車間 > workshop;
+往來 > dealings;
+調動 > transfer;
+引導 > to\-guide;
+裝貨 > shipping;
+力度 > dynamism;
+過於 > too\-much;
+監禁 > imprison;
+冰窖 > icehouse;
+堂皇 > imposing;
+崇高 > majestic;
+省略 > omission;
+母係 > maternal;
+採買 > purchase;
+輕視 > contempt;
+精致 > delicacy;
+遲延 > to\-delay;
+攜帶 > to\-carry;
+延展 > to\-scale;
+農田 > farmland;
+部位 > position;
+創建 > to\-found;
+內置 > internal;
+限期 > deadline;
+緊張 > critical;
+記憶 > memories;
+遷就 > to\-yield;
+精美 > delicate;
+強勁 > powerful;
+文件 > document;
+殺人 > homicide;
+邊境 > frontier;
+外來 > external;
+剛性 > rigidity;
+勃勃 > thriving;
+適宜 > suitable;
+擁擠 > to\-crowd;
+授課 > to\-teach;
+解散 > dissolve;
+陰性 > feminine;
+動作 > movement;
+敦促 > to\-press;
+雇員 > employee;
+瀉藥 > laxative;
+換置 > displace;
+雨傘 > umbrella;
+圖謀 > conspire;
+董事 > director;
+動人 > touching;
+阻擊 > to\-check;
+補花 > applique;
+塗抹 > to\-smear;
+骨骼 > skeleton;
+裝船 > shipment;
+欺壓 > to\-bully;
+荒涼 > desolate;
+凹板 > intaglio;
+劣勢 > inferior;
+分數 > fraction;
+盎然 > abundant;
+壓力 > pressure;
+連忙 > promptly;
+那個 > that\-one;
+無情 > pitiless;
+擦寫 > to\-erase;
+壓制 > suppress;
+精確 > accurate;
+優美 > graceful;
+航運 > shipping;
+函數 > function;
+經常 > everyday;
+步兵 > infantry;
+平房 > bungalow;
+冰涼 > ice\-cold;
+幻想 > delusion;
+序幕 > prologue;
+刻寫 > inscribe;
+墓地 > cemetery;
+避免 > to\-avert;
+規格 > standard;
+場所 > location;
+追悼 > mourning;
+雇主 > employer;
+揭發 > disclose;
+許可 > to\-allow;
+傳訊 > subpoena;
+評估 > evaluate;
+拖鞋 > slippers;
+偽造 > to\-forge;
+火牆 > firewall;
+凶手 > murderer;
+無害 > harmless;
+軟膏 > ointment;
+掌聲 > applause;
+表觀 > apparent;
+埋沒 > oblivion;
+平常 > ordinary;
+拔除 > pull\-out;
+增加 > to\-raise;
+軌范 > standard;
+摩擦 > friction;
+覺得 > to\-think;
+高貴 > grandeur;
+剪刀 > scissors;
+充當 > serve\-as;
+為時 > timewise;
+達到 > to\-reach;
+西方 > the\-west;
+運動 > movement;
+欺侮 > to\-bully;
+通報 > bulletin;
+撥子 > plectrum;
+床墊 > mattress;
+抗體 > antibody;
+臨近 > close\-to;
+莫大 > greatest;
+約束 > restrict;
+切實 > feasible;
+界限 > boundary;
+陽光 > sunshine;
+分子 > molecule;
+相應 > relevant;
+眾多 > numerous;
+阻塞 > to\-block;
+絕對 > absolute;
+分娩 > delivery;
+管道 > pipeline;
+遊伴 > playmate;
+工業 > industry;
+冰排 > ice\-raft;
+進入 > to\-enter;
+路面 > pavement;
+直徑 > diameter;
+無名 > nameless;
+結婚 > to\-marry;
+堵塞 > blockage;
+撤回 > withdraw;
+睾丸 > testicle;
+經典 > classics;
+騰騰 > steaming;
+逼人 > pressing;
+輝煌 > splendid;
+無助 > helpless;
+採用 > to\-adopt;
+已故 > the\-late;
+序列 > sequence;
+發汗 > to\-sweat;
+國立 > national;
+箴言 > proverbs;
+補爐 > fettling;
+距離 > distance;
+自製 > homemade;
+阻力 > obstacle;
+瘟疫 > epidemic;
+蠕蠕 > wiggling;
+送別 > farewell;
+無人 > unmanned;
+公斤 > kilogram;
+公文 > document;
+抽象 > abstract;
+出口 > to\-speak;
+親善 > goodwill;
+興致 > interest;
+途中 > en\-route;
+間接 > indirect;
+鐵路 > railroad;
+搬弄 > move\-sth;
+標本 > specimen;
+退位 > abdicate;
+組合 > assemble;
+塌下 > collapse;
+逃亡 > fugitive;
+戰鬥 > to\-fight;
+統一 > to\-unify;
+刑事 > criminal;
+提案 > proposal;
+衝突 > conflict;
+追上 > overtake;
+航空 > aviation;
+修辭 > rhetoric;
+濾液 > filtrate;
+對面 > opposite;
+函件 > letteres;
+相反 > opposite;
+持續 > continue;
+馴鹿 > reindeer;
+手鐲 > bracelet;
+脫離 > separate;
+驚訝 > confound;
+脊骨 > backbone;
+捕獲 > to\-catch;
+駕駛 > to\-drive;
+採樣 > sampling;
+純品 > sterling;
+門徒 > disciple;
+近來 > recently;
+寺院 > cloister;
+答話 > to\-reply;
+業界 > industry;
+火山 > volcanic;
+其實 > actually;
+生詞 > new\-word;
+近乎 > close\-to;
+梵語 > sanskrit;
+便道 > shortcut;
+褲子 > trousers;
+寧靜 > tranquil;
+省份 > province;
+封鎖 > blockade;
+俯視 > overlook;
+崩潰 > collapse;
+載攜 > to\-carry;
+濕氣 > moisture;
+精密 > accuracy;
+茶匙 > teaspoon;
+國民 > national;
+兄弟 > brothers;
+校驗 > to\-check;
+粗心 > careless;
+冰冷 > ice\-cold;
+興盛 > flourish;
+倘若 > provided;
+關係 > relation;
+發射 > to\-shoot;
+手足 > movement;
+機動 > flexible;
+採掘 > excavate;
+越過 > to\-cross;
+裁撤 > dissolve;
+兵器 > weaponry;
+拔節 > jointing;
+演習 > exercise;
+紊亂 > disorder;
+跳舞 > to\-dance;
+範疇 > category;
+兵員 > soldiers;
+溶解 > dissolve;
+掙扎 > struggle;
+滲色 > bleeding;
+蛋黃 > egg\-yolk;
+共和 > republic;
+軍方 > military;
+構想 > conceive;
+背面 > the\-back;
+輔導 > to\-coach;
+寶貴 > valuable;
+入口 > entrance;
+驕縱 > arrogant;
+開創 > initiate;
+侵蝕 > to\-erode;
+儀式 > ceremony;
+扁蟲 > flatworm;
+兼併 > to\-annex;
+樂園 > paradise;
+容量 > capacity;
+描圖 > to\-trace;
+赤足 > barefoot;
+屁股 > buttocks;
+發動 > to\-start;
+製品 > products;
+共享 > to\-share;
+英俊 > handsome;
+捷徑 > shortcut;
+行業 > industry;
+馬車 > carriage;
+公主 > princess;
+提名 > nominate;
+四方 > four\-way;
+粗厲 > abrasive;
+車廂 > carriage;
+自治 > autonomy;
+高架 > overhead;
+困惑 > bewilder;
+笑聲 > laughter;
+松鼠 > squirrel;
+優勢 > superior;
+簿子 > notebook;
+傲慢 > arrogant;
+先令 > shilling;
+渠道 > channels;
+校訂 > revision;
+棒球 > baseball;
+優先 > priority;
+噴泉 > fountain;
+軍士 > sergeant;
+來臨 > approach;
+衣廚 > wardrobe;
+份量 > quantity;
+僱員 > employee;
+應該 > ought\-to;
+採光 > lighting;
+聚集 > assemble;
+按捺 > restrain;
+裁判 > judgment;
+人類 > humanity;
+估計 > estimate;
+坐下 > sit\-down;
+安謐 > tranquil;
+回家 > homeward;
+使者 > emissary;
+崩塌 > collapse;
+打破 > to\-break;
+對稱 > symmetry;
+假期 > vacation;
+飼養 > to\-raise;
+衣子 > covering;
+購買 > purchase;
+軼事 > anecdote;
+稀飯 > porridge;
+抱歉 > be\-sorry;
+漂浮 > to\-float;
+極好 > fabulous;
+極大 > enormous;
+界標 > landmark;
+地位 > position;
+稱重 > to\-weigh;
+節慶 > festival;
+蠻干 > reckless;
+鬧區 > downtown;
+準確 > accurate;
+侵略 > invasion;
+併紗 > doubling;
+病夫 > sick\-man;
+授予 > to\-award;
+學術 > learning;
+國內 > domestic;
+貴重 > precious;
+屠殺 > massacre;
+拔掉 > to\-pluck;
+簡化 > simplify;
+驕橫 > arrogant;
+買進 > purchase;
+買通 > to\-bribe;
+慎重 > cautious;
+滑溜 > slippery;
+指導 > to\-guide;
+位置 > position;
+篡奪 > to\-usurp;
+臨床 > clinical;
+栽種 > to\-plant;
+戰略 > strategy;
+園丁 > gardener;
+本體 > noumenon;
+骨幹 > backbone;
+人道 > humanity;
+身分 > position;
+人造 > man\-made;
+產業 > industry;
+居民 > resident;
+腳步 > footstep;
+拼字 > spelling;
+東部 > the\-east;
+高地 > highland;
+固件 > firmware;
+人身 > personal;
+鑲嵌 > to\-inlay;
+業務 > business;
+察看 > to\-watch;
+倍數 > multiple;
+對照 > contrast;
+抵押 > mortgage;
+肩膀 > shoulder;
+箱子 > suitcase;
+身份 > identity;
+低等 > inferior;
+就此 > and\-thus;
+筆架 > pen\-rack;
+寶物 > treasure;
+生日 > birthday;
+鐘擺 > pendulum;
+驅散 > disperse;
+抱怨 > complain;
+等於 > equal\-to;
+學習 > to\-learn;
+折扣 > discount;
+懸疑 > suspense;
+珍貴 > precious;
+懷疑 > to\-doubt;
+當天 > that\-day;
+鍵盤 > keyboard;
+指南 > to\-guide;
+家用 > home\-use;
+生意 > business;
+耗費 > to\-waste;
+致力 > work\-for;
+些許 > trifling;
+五角 > pentagon;
+等待 > wait\-for;
+房東 > landlord;
+修建 > to\-build;
+浪費 > to\-waste;
+突發 > outburst;
+信徒 > believer;
+打掃 > to\-clean;
+技工 > mechanic;
+持久 > duration;
+答對 > to\-reply;
+風車 > windmill;
+手提 > portable;
+飛行 > aviation;
+不靈 > not\-work;
+安生 > peaceful;
+打扮 > dress\-up;
+倒塌 > collapse;
+生存 > to\-exist;
+賦稅 > taxation;
+孔穴 > aperture;
+浴衣 > bathrobe;
+一面 > one\-side;
+恐龍 > dinosaur;
+山坡 > hillside;
+鐵器 > hardware;
+畫像 > portrait;
+當作 > treat\-as;
+禮貌 > courtesy;
+栽植 > to\-plant;
+信封 > envelope;
+聲稱 > to\-claim;
+對手 > opponent;
+信守 > abide\-by;
+聖約 > covenant;
+校正 > regulate;
+重點 > emphasis;
+聽眾 > audience;
+騎師 > horseman;
+秧苗 > seedling;
+恭順 > deferent;
+鍵槽 > key\-slot;
+購物 > shopping;
+單據 > receipts;
+會變 > variable;
+少年 > juvenile;
+騙子 > swindler;
+聯盟 > alliance;
+路口 > crossing;
+處罰 > penalize;
+金魚 > goldfish;
+媚詞 > flattery;
+含量 > contents;
+用功 > diligent;
+筆名 > pen\-name;
+佛教 > buddhism;
+可靠 > reliable;
+資產 > property;
+驅動 > to\-drive;
+驕傲 > arrogant;
+寓所 > dwelling;
+由余 > owing\-to;
+蘑菰 > mushroom;
+頁面 > web\-page;
+一起 > together;
+渴望 > desirous;
+走廊 > corridor;
+本能 > instinct;
+嗜好 > fondness;
+對外 > external;
+缺陷 > a\-defect;
+蛋殼 > eggshell;
+吃醋 > jealousy;
+合適 > suitable;
+官方 > official;
+滑冰 > to\-skate;
+商業 > business;
+財產 > property;
+宗教 > religion;
+韌體 > firmware;
+命脈 > lifeline;
+乃至 > and\-even;
+租稅 > land\-tax;
+項鍊 > necklace;
+恥辱 > disgrace;
+不行 > won''t\-do;
+守時 > punctual;
+暗轉 > blackout;
+打印 > to\-print;
+完整 > complete;
+侵吞 > to\-annex;
+波譜 > spectrum;
+栽子 > seedling;
+貂皮 > mink\-fur;
+醫院 > hospital;
+財物 > property;
+泳衣 > swimsuit;
+淚水 > teardrop;
+肉桂 > cinnamon;
+減掉 > subtract;
+鼻炎 > rhinitis;
+某時 > sometime;
+藥膏 > ointment;
+完成 > complete;
+溢出 > overflow;
+向西 > westward;
+變量 > variable;
+叛逆 > to\-rebel;
+戰區 > war\-zone;
+叱責 > reproach;
+立場 > position;
+貞潔 > chastity;
+栗子 > chestnut;
+中繼 > to\-relay;
+翳眼 > cataract;
+鎮區 > township;
+板油 > leaf\-fat;
+懸垂 > overhang;
+酒鬼 > drunkard;
+不肖 > unworthy;
+班機 > airliner;
+預言 > prophecy;
+窗子 > casement;
+實力 > strength;
+應對 > response;
+羚羊 > antelope;
+交流 > exchange;
+叛變 > renegade;
+戰事 > fighting;
+可行 > feasible;
+憔悴 > languish;
+危難 > calamity;
+安寧 > peaceful;
+丹砂 > cinnabar;
+核准 > sanction;
+譴責 > denounce;
+案件 > law\-case;
+姻親 > affinity;
+浪漫 > romantic;
+村民 > villager;
+慷慨 > vehement;
+論點 > argument;
+木炭 > charcoal;
+黃瓜 > cucumber;
+不端 > improper;
+暗自 > inwardly;
+懊喪 > dejected;
+稀有 > uncommon;
+飛機 > airplane;
+室友 > roommate;
+貶抑 > belittle;
+薄膜 > membrane;
+東方 > the\-east;
+稅收 > taxation;
+風潮 > campaign;
+背包 > knapsack;
+黨派 > partisan;
+子層 > sublayer;
+飲料 > beverage;
+人手 > manpower;
+二月 > february;
+沒落 > downfall;
+含碳 > carbonic;
+最為 > the\-most;
+醫藥 > medicine;
+深奧 > profound;
+啟動 > to\-start;
+學問 > learning;
+不用 > need\-not;
+風水 > fengshui;
+愚昧 > ignorant;
+材料 > material;
+水路 > waterway;
+子女 > children;
+事故 > accident;
+采聲 > applause;
+完全 > complete;
+碰觸 > to\-touch;
+不獨 > not\-only;
+定位 > position;
+存在 > to\-exist;
+貨幣 > currency;
+下獄 > imprison;
+孵化 > breeding;
+蚊子 > mosquito;
+不特 > not\-only;
+鞭蟲 > whipworm;
+不爽 > not\-well;
+性能 > function;
+洪流 > cataract;
+懂事 > sensible;
+食慾 > appetite;
+部類 > category;
+同盟 > alliance;
+震驚 > to\-shock;
+吸煙 > to\-smoke;
+謝謝 > to\-thank;
+不濟 > not\-good;
+頭痛 > headache;
+伙伴 > partisan;
+暗盒 > magazine;
+肖像 > portrait;
+中止 > to\-cease;
+講話 > a\-speech;
+林地 > woodland;
+深刻 > profound;
+亭子 > pavilion;
+音節 > syllable;
+架勢 > attitude;
+不測 > accident;
+太長 > oversize;
+勢頭 > momentum;
+大門 > entrance;
+愚弄 > derision;
+往還 > contacts;
+治療 > to\-treat;
+礦產 > minerals;
+上海 > shanghai;
+罪犯 > criminal;
+爐邊 > fireside;
+愉快 > cheerful;
+變種 > mutation;
+論述 > treatise;
+募集 > to\-raise;
+海峽 > straight;
+爭論 > to\-argue;
+聖化 > sanctify;
+明膫 > manifest;
+重申 > reaffirm;
+暴洪 > a\-sudden;
+替換 > exchange;
+餡兒 > stuffing;
+有所 > somewhat;
+斥責 > denounce;
+重獲 > recovery;
+不朽 > immortal;
+海外 > overseas;
+王家 > princely;
+哨兵 > sentinel;
+貶低 > belittle;
+雉雞 > pheasant;
+想家 > homesick;
+哥兒 > brothers;
+華麗 > gorgeous;
+買主 > customer;
+慘事 > disaster;
+預測 > forecast;
+美日 > us\-japan;
+負債 > indebted;
+雨量 > rainfall;
+司法 > judicial;
+誕辰 > birthday;
+咳嗽 > to\-cough;
+悲慟 > mournful;
+加長 > lengthen;
+吐棄 > to\-spurn;
+勸說 > persuade;
+處分 > disposal;
+日美 > japan\-us;
+增高 > heighten;
+遲頓 > inactive;
+財主 > rich\-man;
+不成 > won''t\-do;
+夢話 > daydream;
+不懈 > untiring;
+大要 > abstract;
+最少 > smallest;
+護照 > passport;
+主宰 > dominate;
+夢見 > to\-dream;
+不惟 > not\-only;
+事兒 > business;
+大衣 > overcoat;
+移交 > transfer;
+書寫 > to\-write;
+不怕 > fearless;
+不必 > need\-not;
+沖洗 > to\-rinse;
+不得 > must\-not;
+不很 > not\-very;
+暗暗 > secretly;
+剷除 > root\-out;
+𨺹 > mournful;
+神性 > divinity;
+總裁 > chairman;
+外表 > external;
+沉浸 > permeate;
+支配 > dominate;
+美德 > a\-virtue;
+雄辯 > eloquent;
+點名 > rollcall;
+忽然 > suddenly;
+日程 > schedule;
+姦淫 > adultery;
+豪俠 > cavalier;
+旺盛 > vigorous;
+外號 > nickname;
+奇聞 > anecdote;
+前額 > forehead;
+海上 > maritime;
+雜誌 > magazine;
+網際 > internet;
+熱誠 > devotion;
+合成 > compound;
+呼叫 > to\-shout;
+天花 > smallpox;
+雨衣 > raincoat;
+同意 > to\-agree;
+本來 > original;
+本位 > standard;
+向後 > backward;
+服務 > to\-serve;
+民眾 > populace;
+威望 > prestige;
+活動 > activity;
+叛教 > apostacy;
+不大 > not\-very;
+大能 > almighty;
+有力 > powerful;
+時機 > occasion;
+否定 > negative;
+藥商 > druggist;
+反映 > reaction;
+遺贈 > bequeath;
+文職 > civilian;
+婚嫁 > marriage;
+緊迫 > pressing;
+變數 > variable;
+議案 > proposal;
+君子 > nobleman;
+建設 > to\-build;
+特派 > dispatch;
+電腦 > computer;
+同屋 > roommate;
+藥劑 > medicine;
+一團 > regiment;
+磨擦 > friction;
+播音 > transmit;
+台座 > pedestal;
+欺負 > to\-bully;
+過載 > overload;
+遲誤 > to\-delay;
+祖國 > homeland;
+順從 > obedient;
+主任 > director;
+泰國 > thailand;
+解開 > to\-untie;
+暗室 > darkroom;
+奶牛 > milk\-cow;
+反應 > reaction;
+悲切 > mournful;
+不只 > not\-only;
+年青 > youthful;
+順序 > sequence;
+中保 > advocate;
+平靜 > tranquil;
+姿態 > attitude;
+告別 > to\-leave;
+一周 > one\-week;
+欺詐 > to\-cheat;
+一向 > all\-long;
+曝光 > exposure;
+氮氣 > nitrogen;
+附錄 > appendix;
+一匙 > spoonful;
+碗櫃 > cupboard;
+研究 > research;
+怠惰 > idleness;
+包皮 > wrapping;
+犯愁 > to\-worry;
+到達 > to\-reach;
+句子 > sentence;
+奉現 > offering;
+不倦 > tireless;
+每當 > whenever;
+訂購 > to\-order;
+斑白 > grizzled;
+證據 > evidence;
+祖先 > ancestor;
+常駐 > resident;
+暴力 > violence;
+集聚 > assemble;
+昔日 > formerly;
+功能 > function;
+警惕 > vigilant;
+波動 > undulate;
+預報 > forecast;
+奇特 > peculiar;
+忠於 > loyal\-to;
+明日 > tomorrow;
+詳細 > detailed;
+暴光 > exposure;
+頑固 > stubborn;
+選舉 > to\-elect;
+退避 > withdraw;
+練習 > exercise;
+培養 > to\-train;
+韌帶 > ligament;
+撤退 > retreat;
+牽扯 > involve;
+婚事 > wedding;
+檢閱 > inspect;
+訴苦 > grumble;
+暫停 > suspend;
+觸角 > antenna;
+彪炳 > shining;
+罷休 > give\-up;
+細長 > slender;
+認真 > earnest;
+時尚 > fashion;
+版本 > version;
+迴轉 > revolve;
+庇護 > shelter;
+酸性 > acidity;
+編纂 > compile;
+君主 > monarch;
+總理 > premier;
+天然 > natural;
+睡衣 > pajamas;
+整理 > arrange;
+煙草 > tobacco;
+燦爛 > glitter;
+可動 > movable;
+水手 > mariner;
+各個 > various;
+口吃 > stammer;
+菏蘭 > holland;
+領先 > to\-lead;
+菠菜 > spinach;
+十月 > october;
+讚同 > approve;
+毛毯 > blanket;
+陽臺 > balcony;
+近郊 > suburbs;
+狂喜 > ecstasy;
+永恆 > eternal;
+請求 > request;
+鄙棄 > disdain;
+出走 > to\-flee;
+效益 > benefit;
+重力 > gravity;
+碼字 > numeral;
+紡錘 > spindle;
+弄碎 > crumble;
+姐妹 > sisters;
+目錄 > catalog;
+正確 > correct;
+心愛 > beloved;
+弄短 > shorten;
+無處 > nowhere;
+變厚 > thicken;
+妖怪 > monster;
+緊緊 > closely;
+隱私 > privacy;
+關鍵 > crucial;
+姿勢 > posture;
+妒忌 > jealous;
+強烈 > intense;
+好戰 > warlike;
+平衡 > balance;
+特定 > special;
+弄皺 > crumple;
+相連 > to\-link;
+文法 > grammar;
+古來 > oldtime;
+天氣 > weather;
+正直 > upright;
+酒廠 > brewery;
+征服 > conquer;
+索道 > ropeway;
+陸續 > in\-turn;
+隱瞞 > to\-hide;
+外流 > outflow;
+工頭 > foreman;
+另一 > another;
+遠端 > far\-end;
+皮革 > leather;
+加甜 > sweeten;
+音信 > message;
+熱燙 > to\-burn;
+障礙 > barrier;
+語法 > grammar;
+警告 > to\-warn;
+然而 > however;
+大概 > roughly;
+電池 > battery;
+好幾 > several;
+比方 > analogy;
+退落 > subside;
+變亂 > turmoil;
+請教 > consult;
+熱潮 > upsurge;
+欺瞞 > to\-fool;
+比擬 > compare;
+議價 > bargain;
+纖弱 > fragile;
+博學 > learned;
+見證 > witness;
+加熱 > heating;
+城郊 > suburbs;
+牧場 > pasture;
+非常 > unusual;
+勇氣 > courage;
+失效 > to\-fail;
+先驅 > pioneer;
+鮑魚 > abalone;
+犯人 > convict;
+荷蘭 > holland;
+難民 > refugee;
+連結 > connect;
+很快 > quickly;
+遺物 > remnant;
+毒打 > beat\-up;
+醜事 > scandal;
+降級 > degrade;
+焦糖 > caramel;
+摘要 > summary;
+進程 > process;
+辯解 > explain;
+摔角 > wrestle;
+包扎 > wrap\-up;
+廢物 > rubbish;
+奇怪 > strange;
+委任 > appoint;
+櫃臺 > counter;
+殘株 > stubble;
+好奇 > curious;
+登陸 > to\-land;
+毆打 > beat\-up;
+監視 > oversee;
+形成 > to\-form;
+總數 > a\-total;
+特制 > special;
+強暴 > violent;
+德國 > germany;
+統統 > totally;
+無窮 > endless;
+矮林 > coppice;
+境界 > boundry;
+弄歪 > distort;
+冰袋 > ice\-bag;
+證人 > witness;
+閱讀 > to\-read;
+郵差 > postman;
+面嚮 > to\-face;
+觸發 > trigger;
+爭執 > dispute;
+瀝青 > asphalt;
+即便 > even\-if;
+大廈 > edifice;
+發酵 > ferment;
+即使 > even\-if;
+閱覽 > to\-read;
+幸福 > blessed;
+無益 > no\-good;
+利益 > benefit;
+防禦 > defense;
+歷時 > to\-last;
+版刻 > carving;
+經理 > manager;
+配偶 > consort;
+歪曲 > distort;
+救援 > to\-save;
+日出 > sunrise;
+氣候 > climate;
+繃帶 > bandage;
+無用 > useless;
+逗留 > stay\-at;
+利用 > exploit;
+區區 > trivial;
+爭吵 > dispute;
+微光 > glimmer;
+每夜 > nightly;
+違法 > illegal;
+出租 > to\-rent;
+雀斑 > freckle;
+收據 > receipt;
+十六 > sixteen;
+繪圖 > to\-draw;
+坦途 > highway;
+知悉 > to\-know;
+支撐 > prop\-up;
+熱情 > cordial;
+排除 > exclude;
+十倍 > tenfold;
+剛毛 > bristle;
+橫臥 > recline;
+刺激 > provoke;
+經濟 > economy;
+細節 > details;
+精製 > refined;
+教師 > teacher;
+樂趣 > delight;
+收成 > harvest;
+十五 > fifteen;
+多大 > how\-big;
+共處 > coexist;
+攪拌 > to\-stir;
+輕輕 > lightly;
+利潤 > profits;
+裝載 > to\-load;
+包含 > contain;
+擯棄 > abandon;
+發行 > publish;
+白蟻 > termite;
+選手 > athlete;
+失去 > to\-lose;
+輪詢 > to\-poll;
+彫刻 > engrave;
+花費 > expense;
+葉子 > foliage;
+草稿 > outline;
+武庫 > arsenal;
+弄平 > flatten;
+制止 > to\-curb;
+糾紛 > dispute;
+茅舍 > cottage;
+照搬 > to\-copy;
+兵艦 > warship;
+補貼 > subsidy;
+正常 > regular;
+廚房 > kitchen;
+文化 > culture;
+崩陷 > fall\-in;
+這次 > present;
+已經 > already;
+巴結 > fawn\-on;
+皺紋 > wrinkle;
+權杖 > scepter;
+匆促 > hastily;
+欄柵 > barrier;
+百萬 > million;
+多半 > chiefly;
+目的 > purpose;
+週末 > weekend;
+初步 > initial;
+欄杆 > railing;
+煩惱 > agonize;
+彈劾 > impeach;
+煩悶 > anguish;
+幫派 > faction;
+表面 > surface;
+糟糕 > too\-bad;
+總則 > profile;
+險峻 > arduous;
+制服 > uniform;
+像銀 > silvery;
+前提 > premise;
+編寫 > compile;
+維持 > to\-keep;
+接觸 > contact;
+勝利 > victory;
+夥伴 > partner;
+教員 > teacher;
+髕骨 > kneecap;
+擁有 > to\-have;
+此外 > besides;
+強制 > enforce;
+車輛 > vehicle;
+霍亂 > cholera;
+芬蘭 > finland;
+數位 > digital;
+輕蔑 > disdain;
+絲柏 > cypress;
+執照 > license;
+櫃檯 > counter;
+無效 > in\-vain;
+壁壘 > rampart;
+連接 > to\-link;
+訊息 > message;
+紙煙 > cigaret;
+歷史 > history;
+眺望 > lookout;
+關照 > concern;
+冰片 > borneol;
+劇場 > theater;
+熱切 > fervent;
+動亂 > turmoil;
+掩蓋 > conceal;
+阻攔 > to\-stop;
+弟兄 > brother;
+阻擋 > to\-stop;
+眉毛 > eyebrow;
+士兵 > soldier;
+被褥 > bedding;
+擺子 > malaria;
+衰退 > decline;
+引出 > extract;
+擔心 > anxious;
+公社 > commune;
+結果 > outcome;
+摧毀 > destroy;
+歲入 > revenue;
+分散 > scatter;
+墊子 > cushion;
+焦急 > anxiety;
+收到 > receive;
+監測 > monitor;
+鬢角 > temples;
+揭示 > to\-show;
+要求 > request;
+痕跡 > vestige;
+剝奪 > deprive;
+農民 > peasant;
+廠商 > company;
+到底 > finally;
+冒煙 > smoking;
+簡要 > concise;
+放任 > indulge;
+通常 > regular;
+真摯 > sincere;
+紅海 > red\-sea;
+冰河 > glacial;
+純正 > genuine;
+刨工 > planing;
+煙囪 > chimney;
+幻影 > phantom;
+拔頂 > topping;
+白白 > in\-vain;
+先知 > prophet;
+疾走 > scamper;
+已滅 > extinct;
+籠罩 > envelop;
+統帥 > command;
+陶器 > pottery;
+附寄 > enclose;
+絨布 > flannel;
+迎接 > to\-meet;
+儘管 > despite;
+阻尼 > damping;
+甜點 > dessert;
+軍艦 > warship;
+發現 > to\-find;
+閃爍 > flicker;
+衣裝 > garment;
+備註 > remarks;
+攔住 > to\-stop;
+裂紋 > crackle;
+挑起 > stir\-up;
+闡明 > clarify;
+到場 > show\-up;
+過剩 > surplus;
+蹣跚 > stagger;
+盛會 > pageant;
+剝削 > exploit;
+描畫 > to\-draw;
+裨益 > benefit;
+遇到 > to\-meet;
+偽證 > perjury;
+機械 > machine;
+照亮 > lighten;
+陳列 > display;
+停車 > to\-stop;
+陽傘 > parasol;
+山頂 > hilltop;
+掌管 > control;
+補益 > benefit;
+拷貝 > to\-copy;
+擠入 > intrude;
+權利 > a\-power;
+花環 > garland;
+公民 > citizen;
+巴林 > bahrain;
+偽裝 > to\-fake;
+堅強 > staunch;
+平均 > average;
+刺刀 > bayonet;
+簸箕 > dustpan;
+充滿 > full\-of;
+帳帘 > drapery;
+接生 > deliver;
+激素 > hormone;
+解剖 > dissect;
+振興 > promote;
+除了 > besides;
+瘧疾 > malaria;
+莊嚴 > stately;
+粗淺 > shallow;
+棲身 > stay\-at;
+平台 > terrace;
+拍賣 > auction;
+滋養 > nourish;
+解僱 > to\-fire;
+到來 > arrival;
+閒暇 > leisure;
+床側 > bedside;
+標槍 > javelin;
+疫苗 > vaccine;
+超齡 > too\-old;
+出售 > to\-sell;
+因素 > element;
+冰川 > glacier;
+闊度 > breadth;
+踐踏 > trample;
+業經 > already;
+轟擊 > bombard;
+幾個 > several;
+冰島 > iceland;
+挑舋 > provoke;
+圖畫 > drawing;
+冰山 > iceberg;
+極端 > extreme;
+農夫 > peasant;
+白晝 > daytime;
+兵戈 > weapons;
+跳躍 > to\-jump;
+療法 > therapy;
+尖頂 > steeple;
+腹部 > abdomen;
+發放 > provide;
+瘋狂 > madness;
+痲疹 > measles;
+親切 > amiable;
+工廠 > factory;
+插曲 > episode;
+血統 > lineage;
+濡濕 > moisten;
+抗議 > protest;
+絆倒 > stumble;
+糊弄 > to\-fool;
+帶動 > to\-spur;
+公式 > formula;
+災害 > scourge;
+花束 > bouquet;
+已婚 > married;
+扭轉 > reverse;
+戲院 > theater;
+痒痒 > to\-itch;
+例題 > example;
+茅屋 > cottage;
+優於 > surpass;
+機場 > airport;
+終于 > at\-last;
+模形 > pattern;
+蟋蟀 > cricket;
+信賴 > confide;
+芥末 > mustard;
+激烈 > intense;
+病症 > disease;
+冷卻 > cooling;
+桌面 > desktop;
+履行 > fulfill;
+皇帝 > emperor;
+表率 > example;
+揭幕 > opening;
+篇章 > writing;
+接替 > replace;
+機器 > machine;
+疾病 > disease;
+備用 > reserve;
+寬闊 > expanse;
+措施 > measure;
+內容 > content;
+採暖 > heating;
+相仿 > similar;
+傲然 > loftily;
+因為 > because;
+樵夫 > woodman;
+自私 > selfish;
+典型 > typical;
+茶具 > tea\-set;
+輪廓 > outline;
+糊塗 > muddled;
+榜樣 > example;
+閉塞 > stop\-up;
+表演 > perform;
+超過 > surpass;
+節目 > program;
+鑽石 > diamond;
+園林 > gardens;
+生菜 > lettuce;
+小販 > peddler;
+軌枕 > sleeper;
+白天 > daytime;
+英國 > england;
+首飾 > jewelry;
+工匠 > artisan;
+盈余 > surplus;
+俘虜 > captive;
+臂章 > armband;
+自由 > freedom;
+布丁 > pudding;
+圍攻 > besiege;
+喝采 > acclaim;
+生育 > to\-bear;
+赤道 > equator;
+高漲 > upsurge;
+門口 > doorway;
+損傷 > to\-harm;
+身材 > stature;
+英勇 > bravery;
+例證 > example;
+問題 > problem;
+寄送 > to\-send;
+傾斜 > incline;
+困擾 > perplex;
+複合 > complex;
+抄網 > dip\-net;
+百分 > percent;
+嚴正 > sternly;
+衣服 > clothes;
+或許 > perhaps;
+成語 > proverb;
+榮幸 > honored;
+漂礫 > boulder;
+馬蹬 > stirrup;
+模倣 > imitate;
+例行 > routine;
+商隊 > caravan;
+學院 > college;
+僵局 > impasse;
+捕手 > catcher;
+投票 > to\-vote;
+行李 > luggage;
+提到 > mention;
+驕矜 > haughty;
+信箱 > mailbox;
+密談 > commune;
+用盡 > exhaust;
+概念 > concept;
+停止 > to\-stop;
+元件 > element;
+地址 > address;
+國家 > country;
+孔雀 > peacock;
+鍵詞 > keyword;
+滑稽 > comical;
+商量 > consult;
+低調 > low\-key;
+按時 > on\-time;
+裝入 > to\-load;
+打算 > to\-plan;
+小結 > summary;
+小組 > a\-group;
+按摩 > massage;
+偉業 > exploit;
+質量 > quality;
+節日 > holiday;
+裁剪 > cut\-out;
+產物 > product;
+供給 > furnish;
+舞弄 > to\-wave;
+打碎 > shatter;
+拯救 > to\-save;
+在前 > forward;
+李鵬 > li\-peng;
+安設 > install;
+責難 > censure;
+島嶼 > islands;
+查調 > inquiry;
+拋棄 > discard;
+便盆 > bed\-pan;
+蠱惑 > enchant;
+假日 > holiday;
+安裝 > install;
+滲漏 > seepage;
+艦只 > warship;
+拷打 > to\-beat;
+聯邦 > federal;
+漂泊 > drifter;
+噸數 > tonnage;
+商討 > discuss;
+售賣 > to\-sell;
+香菜 > parsley;
+海鮮 > seafood;
+臥房 > bedroom;
+章節 > chapter;
+滴流 > trickle;
+疏忽 > neglect;
+僥倖 > luckily;
+懲罰 > penalty;
+傳單 > leaflet;
+香腸 > sausage;
+走私 > smuggle;
+專用 > special;
+龍蝦 > lobster;
+指定 > appoint;
+僕人 > servant;
+容納 > contain;
+侯爵 > marquis;
+椰子 > coconut;
+鑒戒 > warning;
+代詞 > pronoun;
+丹麥 > denmark;
+簡介 > summary;
+畫廊 > gallery;
+臥室 > bedroom;
+扳機 > trigger;
+衝力 > impulse;
+完美 > perfect;
+展望 > outlook;
+竊盜 > burglar;
+瑣細 > trivial;
+挪動 > to\-move;
+家禽 > poultry;
+空缺 > vacancy;
+最高 > highest;
+高原 > plateau;
+畫家 > painter;
+屈曲 > crooked;
+學者 > scholar;
+疲勞 > fatigue;
+滿手 > handful;
+不齒 > despise;
+投手 > pitcher;
+海邊 > seaside;
+把持 > control;
+噁心 > to\-hate;
+尋求 > to\-seek;
+本錢 > capital;
+膽子 > courage;
+耳語 > whisper;
+噴墨 > ink\-jet;
+之間 > between;
+有限 > limited;
+托架 > bracket;
+品質 > quality;
+本金 > capital;
+錦緞 > brocade;
+麻雀 > sparrow;
+扶持 > to\-help;
+虔誠 > sincere;
+保持 > to\-keep;
+扶手 > railing;
+最長 > longest;
+扳手 > spanner;
+便於 > easy\-to;
+海豚 > dolphin;
+愛護 > cherish;
+節儉 > thrifty;
+神體 > godhead;
+打擾 > disturb;
+中間 > betwixt;
+來歷 > history;
+感覺 > to\-feel;
+範例 > example;
+孤立 > isolate;
+當前 > current;
+層子 > stratum;
+本質 > essence;
+用字 > diction;
+聯網 > network;
+潛伏 > to\-hide;
+聯結 > to\-bind;
+管制 > control;
+促成 > procure;
+尊敬 > respect;
+安瓿 > ampoule;
+至上 > supreme;
+一項 > an\-item;
+抄寫 > to\-copy;
+贅瘤 > useless;
+清真 > islamic;
+畫兒 > picture;
+喜歡 > to\-like;
+仔細 > careful;
+屠夫 > butcher;
+上門 > drop\-in;
+學生 > student;
+獎金 > premium;
+人群 > a\-crowd;
+當今 > current;
+假使 > suppose;
+更遠 > farther;
+尋找 > to\-seek;
+併條 > drawing;
+也許 > perhaps;
+驚嚇 > horrify;
+扳子 > spanner;
+抽出 > extract;
+尷尬 > awkward;
+不錯 > correct;
+核查 > examine;
+丙酮 > acetone;
+才干 > ability;
+香水 > perfume;
+香氣 > incense;
+小心 > careful;
+成文 > written;
+吐露 > to\-tell;
+趕快 > at\-once;
+會議 > meeting;
+飛船 > airship;
+曼谷 > bangkok;
+呈送 > present;
+主詞 > subject;
+沉默 > silence;
+打字 > to\-type;
+沈默 > silence;
+跳動 > to\-beat;
+流行 > popular;
+佔有 > to\-have;
+宴會 > banquet;
+背棄 > abandon;
+領隊 > captain;
+月蝕 > eclipse;
+承受 > to\-bear;
+倉促 > hurried;
+抓傷 > scratch;
+不賴 > not\-bad;
+肥沃 > fertile;
+意義 > meaning;
+召集 > convene;
+神跡 > miracle;
+使徒 > apostle;
+清洗 > to\-wash;
+告訴 > to\-tell;
+脹大 > swollen;
+喜愛 > to\-like;
+寶寶 > darling;
+等候 > waiting;
+跌到 > to\-fall;
+懺悔 > confess;
+戶外 > outdoor;
+寬容 > lenient;
+能幹 > capable;
+不見 > not\-see;
+住房 > housing;
+耕種 > to\-till;
+戰士 > fighter;
+翡翠 > emerald;
+尊嚴 > dignity;
+密度 > density;
+尖叫 > screech;
+企業 > company;
+安撫 > placate;
+頂針 > thimble;
+核子 > nuclear;
+休會 > adjourn;
+貢物 > tribute;
+淘河 > pelican;
+飛盤 > frisbee;
+淘氣 > naughty;
+騎兵 > cavalry;
+懊惱 > annoyed;
+第七 > seventh;
+打倒 > flatten;
+促使 > spur\-on;
+風箱 > bellows;
+浴盆 > bathtub;
+群花 > blossom;
+托付 > entrust;
+栽培 > to\-grow;
+科目 > subject;
+馬子 > commode;
+越南 > vietnam;
+安慰 > comfort;
+空戰 > air\-war;
+成圈 > wreathe;
+應得 > deserve;
+戰勝 > prevail;
+不苟 > not\-lax;
+住宿 > lodging;
+贊成 > approve;
+變遷 > changes;
+未知 > unknown;
+情緒 > feeling;
+封入 > inclose;
+野貓 > wildcat;
+代替 > instead;
+案卷 > records;
+患者 > patient;
+來到 > to\-come;
+代數 > algebra;
+木瓦 > shingle;
+成功 > success;
+中立 > neutral;
+現時 > current;
+世紀 > century;
+低地 > lowland;
+海澡 > seaweed;
+含義 > meaning;
+今晚 > tonight;
+金融 > banking;
+哀求 > entreat;
+洗禮 > baptism;
+學家 > scholar;
+妓院 > brothel;
+不等 > to\-vary;
+顯示 > to\-show;
+博雅 > learned;
+青魚 > herring;
+馬具 > harness;
+名義 > titular;
+不祥 > ominous;
+消極 > passive;
+水銀 > mercury;
+暈船 > seasick;
+職工 > workers;
+日間 > daytime;
+孟子 > mencius;
+神祖 > godhead;
+曉示 > to\-tell;
+蒸餾 > distill;
+完善 > perfect;
+悲痛 > grieved;
+官司 > lawsuit;
+非難 > reproof;
+永遠 > forever;
+酬載 > payload;
+聽寫 > dictate;
+委託 > entrust;
+虧損 > deficit;
+麻煩 > trouble;
+馬上 > at\-once;
+景色 > scenery;
+祈禱 > to\-pray;
+忽視 > neglect;
+譏誚 > cynical;
+確認 > confirm;
+王權 > royalty;
+方面 > respect;
+古老 > ancient;
+企圖 > attempt;
+題目 > subject;
+污衊 > slander;
+羅盤 > compass;
+現實 > reality;
+質地 > texture;
+乾旱 > drought;
+珍愛 > cherish;
+贊助 > sponsor;
+忠誠 > devoted;
+斑駮 > mottled;
+鄭重 > serious;
+升遷 > promote;
+半途 > halfway;
+反而 > instead;
+好轉 > improve;
+王朝 > dynasty;
+惡棍 > villain;
+半路 > halfway;
+整體 > overall;
+羽毛 > feather;
+感情 > feeling;
+鼻孔 > nostril;
+哀思 > pensive;
+任務 > mission;
+愛惜 > cherish;
+猖獗 > rampant;
+果園 > orchard;
+旁邊 > lateral;
+風景 > scenery;
+鴕鳥 > ostrich;
+醜聞 > scandal;
+飽學 > learned;
+殘骸 > remains;
+文雅 > elegant;
+飛彈 > missile;
+聽力 > hearing;
+仿傚 > to\-copy;
+日誌 > journal;
+外面 > outside;
+頑皮 > naughty;
+暴烈 > violent;
+雄黃 > realgar;
+會期 > session;
+不法 > lawless;
+周末 > weekend;
+淡光 > shimmer;
+類比 > analogy;
+諺語 > proverb;
+大錯 > blunder;
+老年 > elderly;
+丟棄 > discard;
+老師 > teacher;
+變硬 > stiffen;
+海岸 > coastal;
+日蝕 > eclipse;
+礦物 > mineral;
+豹子 > leopard;
+奇蹟 > miracle;
+比較 > compare;
+奇跡 > miracle;
+以便 > so\-that;
+著陸 > landing;
+張開 > stretch;
+大都 > general;
+好處 > benefit;
+科學 > science;
+愛好 > to\-like;
+液化 > liquify;
+鄙視 > despise;
+更換 > replace;
+方言 > dialect;
+古物 > antique;
+日落 > sundown;
+神格 > godhead;
+本屆 > current;
+郵費 > postage;
+曖昧 > illicit;
+如花 > flowery;
+鞭策 > spur\-on;
+情感 > feeling;
+丹心 > loyalty;
+雄雞 > rooster;
+沿海 > coastal;
+放開 > unleash;
+繪製 > to\-draw;
+中性 > neutral;
+鄙薄 > despise;
+誹謗 > slander;
+怪物 > monster;
+復興 > restore;
+涉及 > involve;
+羨慕 > envious;
+包裹 > wrap\-up;
+著述 > writing;
+外貌 > profile;
+餅乾 > biscuit;
+有害 > harmful;
+酒精 > alcohol;
+社會 > society;
+羞愧 > ashamed;
+主導 > to\-lead;
+暴政 > tyranny;
+感到 > to\-feel;
+王國 > kingdom;
+易碎 > brittle;
+釘死 > crucify;
+顧忌 > scruple;
+愈合 > to\-heal;
+哀傷 > grieved;
+數詞 > numeral;
+詳述 > recount;
+剩餘 > surplus;
+願意 > to\-wish;
+包藏 > contain;
+玩兒 > to\-play;
+中子 > neutron;
+金橘 > kumquat;
+需要 > to\-need;
+悔恨 > remorse;
+含意 > meaning;
+最大 > biggest;
+最多 > at\-most;
+曉得 > to\-know;
+耕作 > farming;
+急流 > torrent;
+罷手 > give\-up;
+老兵 > veteran;
+老公 > husband;
+壓迫 > oppress;
+猜想 > suppose;
+中央 > central;
+隊長 > captain;
+砲臺 > battery;
+乏味 > tedious;
+𡜱 > to\-envy;
+擯除 > discard;
+編造 > compile;
+上將 > general;
+呼吸 > breathe;
+𢘸 > to\-hate;
+猜度 > surmise;
+呻吟 > to\-moan;
+物理 > physics;
+遴選 > to\-pick;
+爭端 > dispute;
+女神 > goddess;
+想像 > imagine;
+引言 > forward;
+同志 > comrade;
+包羅 > include;
+不好 > no\-good;
+讌會 > banquet;
+旅程 > journey;
+本事 > ability;
+釋放 > release;
+沒有 > haven''t;
+南瓜 > pumpkin;
+變暖 > warming;
+氣球 > balloon;
+狂暴 > frantic;
+丈夫 > husband;
+神女 > goddess;
+吊床 > hammock;
+及時 > in\-time;
+妖物 > monster;
+部署 > dispose;
+也不 > neither;
+可憐 > pitiful;
+女皇 > empress;
+增進 > promote;
+遙遠 > distant;
+遙遙 > distant;
+評論 > comment;
+一天 > one\-day;
+可愛 > amiable;
+改裝 > remodel;
+牽涉 > involve;
+阿飛 > hoodlum;
+可恨 > hateful;
+悲哀 > grieved;
+顧問 > adviser;
+天線 > antenna;
+勳績 > exploit;
+法官 > a\-judge;
+美國 > america;
+最佳 > optimum;
+幽靈 > specter;
+運轉 > to\-work;
+雷聲 > thunder;
+運輸 > transit;
+特殊 > special;
+悲劇 > tragedy;
+石膏 > plaster;
+書信 > epistle;
+度量 > measure;
+經銷 > to\-sell;
+劍術 > fencing;
+叛徒 > traitor;
+註解 > comment;
+網路 > network;
+上午 > morning;
+緒言 > preface;
+訴訟 > lawsuit;
+誇耀 > proudly;
+文章 > article;
+缺席 > absence;
+一口 > readily;
+吮吸 > to\-suck;
+七十 > seventy;
+狂怒 > furious;
+新生 > newborn;
+隱藏 > to\-hide;
+經過 > to\-pass;
+不再 > no\-more;
+隱蔽 > conceal;
+世俗 > profane;
+思想 > thought;
+年鑑 > almanac;
+改良 > improve;
+急忙 > hastily;
+繪畫 > drawing;
+比畫 > gesture;
+燈籠 > lantern;
+編著 > compile;
+警戒 > to\-warn;
+維護 > defense;
+量子 > quantum;
+猿人 > ape\-man;
+叫好 > applaud;
+類似 > similar;
+逐退 > repulse;
+碰撞 > collide;
+注入 > pour\-in;
+頂多 > at\-most;
+前言 > preface;
+非法 > illegal;
+水晶 > crystal;
+正義 > justice;
+晚宴 > banquet;
+向前 > forward;
+辯駁 > dispute;
+從此 > thence;
+鳥羽 > pinion;
+報酬 > reward;
+編者 > editor;
+誤用 > misuse;
+外甥 > nephew;
+重回 > return;
+強盜 > bandit;
+詩篇 > psalms;
+方法 > method;
+政策 > policy;
+逃走 > escape;
+警察 > police;
+法令 > decree;
+危懼 > afraid;
+罪人 > sinner;
+大炮 > cannon;
+大災 > plague;
+勃發 > thrive;
+吉他 > guitar;
+包涵 > excuse;
+毀滅 > perish;
+帶釦 > buckle;
+確實 > indeed;
+動物 > animal;
+緊縮 > reduce;
+燒焦 > scorch;
+領事 > consul;
+大浪 > billow;
+睡著 > asleep;
+變化 > change;
+氣息 > breath;
+擱置 > shelve;
+變動 > change;
+整潔 > neatly;
+旨意 > decree;
+弊病 > malady;
+選票 > a\-vote;
+剽竊 > pirate;
+編碼 > coding;
+鄉村 > rustic;
+巨頭 > tycoon;
+頂事 > useful;
+撕裂 > mangle;
+附著 > adhere;
+正當 > timely;
+怒吼 > bellow;
+奇景 > marvel;
+版式 > format;
+遠程 > remote;
+縮減 > to\-cut;
+半徑 > radius;
+磨光 > polish;
+鮭魚 > salmon;
+降臨 > befall;
+課業 > lesson;
+醜化 > defame;
+角落 > corner;
+狂人 > madman;
+時刻 > moment;
+大桶 > barrel;
+看見 > to\-see;
+緣由 > reason;
+解脫 > relief;
+破敗 > beaten;
+旗幟 > ensign;
+水壺 > kettle;
+殖民 > colony;
+旋律 > melody;
+郵政 > postal;
+靶子 > target;
+後悔 > regret;
+動機 > motive;
+厭倦 > dreary;
+徐徐 > slowly;
+內陸 > inland;
+工錢 > salary;
+公開 > public;
+原先 > former;
+八開 > octavo;
+熊熊 > raging;
+辯論 > debate;
+短歌 > ballad;
+博士 > doctor;
+奶子 > breast;
+忠告 > advice;
+砲手 > gunner;
+多星 > starry;
+律師 > lawyer;
+微妙 > subtle;
+好好 > nicely;
+總是 > always;
+開鎖 > unlock;
+步測 > pacing;
+營救 > rescue;
+敬服 > admire;
+酬勞 > reward;
+得宜 > proper;
+初級 > junior;
+輕鬆 > gentle;
+爐床 > hearth;
+謊報 > to\-lie;
+確保 > ensure;
+運用 > to\-use;
+天才 > talent;
+絲絨 > velvet;
+道理 > reason;
+攪混 > to\-mix;
+壽材 > coffin;
+解答 > answer;
+版圖 > domain;
+政權 > regime;
+很少 > seldom;
+爵士 > knight;
+襯裡 > lining;
+謙和 > meekly;
+網球 > tennis;
+荒蕪 > barren;
+包庇 > shield;
+分給 > divide;
+天性 > inborn;
+歐洲 > europe;
+勾引 > seduce;
+白銀 > silver;
+熱望 > aspire;
+精選 > chosen;
+效果 > result;
+誘拐 > abduct;
+誠懇 > hearty;
+通知 > notify;
+刺痛 > tingle;
+徵召 > enlist;
+歡樂 > gaiety;
+紫色 > purple;
+裡面 > inside;
+先鋒 > herald;
+平穩 > smooth;
+敵意 > enmity;
+巴西 > brazil;
+物件 > object;
+卸下 > unload;
+包容 > pardon;
+誘惑 > entice;
+牧人 > pastor;
+增添 > add\-to;
+外形 > figure;
+集會 > gather;
+隨機 > random;
+兵變 > mutiny;
+敏捷 > nimble;
+牛仔 > cowboy;
+提醒 > remind;
+觸犯 > offend;
+奪取 > snatch;
+夫子 > pedant;
+太子 > prince;
+採集 > gather;
+真空 > vacu\:m;
+殺害 > murder;
+殘忍 > bloody;
+閒話 > gossip;
+眼皮 > eyelid;
+細線 > string;
+辭職 > resign;
+鄙吝 > vulgar;
+線條 > streak;
+鴿子 > pigeon;
+徒勞 > futile;
+得到 > to\-get;
+轉變 > change;
+細粉 > powder;
+誠實 > honest;
+希臘 > greece;
+難得 > seldom;
+大夫 > doctor;
+數字 > number;
+濺開 > splash;
+攻打 > attack;
+遊歷 > travel;
+剛正 > honest;
+復仇 > avenge;
+階梯 > ladder;
+壓扁 > squash;
+詩意 > poetic;
+緣故 > reason;
+攝政 > regent;
+從來 > always;
+標語 > slogan;
+縮小 > reduce;
+發誓 > to\-vow;
+橡膠 > rubber;
+地鐵 > subway;
+雌性 > female;
+十一 > eleven;
+從事 > go\-for;
+熱帶 > tropic;
+雜工 > porter;
+出產 > output;
+奢侈 > luxury;
+蒙受 > suffer;
+掛鉤 > couple;
+純粹 > purely;
+夏天 > summer;
+鄙俚 > vulgar;
+鄙俗 > vulgar;
+露出 > expose;
+攀昇 > rising;
+煩擾 > bother;
+解渴 > quench;
+遺憾 > regret;
+歌手 > singer;
+巡航 > cruise;
+布線 > wiring;
+正式 > formal;
+冰箱 > icebox;
+系統 > system;
+無法 > unable;
+逕流 > runoff;
+夾克 > jacket;
+大吃 > gobble;
+毫不 > hardly;
+道教 > taoism;
+診所 > clinic;
+遺恨 > grudge;
+擴散 > spread;
+鬆餅 > muffin;
+擯斥 > reject;
+加崙 > gallon;
+奇事 > marvel;
+教堂 > church;
+詞尾 > suffix;
+週期 > period;
+零售 > retail;
+櫻桃 > cherry;
+在車 > aboard;
+茶碗 > teacup;
+緞帶 > ribbon;
+分派 > assign;
+疾馳 > gallop;
+緊急 > urgent;
+廁所 > toilet;
+度數 > degree;
+阻橈 > thwart;
+控訴 > accuse;
+搖籃 > cradle;
+著名 > famous;
+強勢 > mighty;
+紮營 > encamp;
+綁架 > kidnap;
+凹洞 > cavity;
+弱化 > weaken;
+陰戶 > vagina;
+擊敗 > defeat;
+進接 > access;
+短句 > clause;
+絕氣 > expire;
+証實 > verify;
+連擊 > batter;
+教區 > parish;
+逮捕 > arrest;
+監獄 > prison;
+火箭 > rocket;
+隱士 > hermit;
+芹菜 > celery;
+短劍 > dagger;
+芭蕉 > banana;
+強健 > sturdy;
+武器 > weapon;
+舌頭 > tongue;
+煤屑 > cinder;
+平板 > tablet;
+凹槽 > socket;
+記帳 > charge;
+刮掉 > scrape;
+陰影 > shadow;
+高雅 > dainty;
+歡喜 > joyful;
+分枝 > branch;
+削弱 > weaken;
+步哨 > sentry;
+搪瓷 > enamel;
+傳達 > convey;
+擴展 > extend;
+分會 > branch;
+激起 > arouse;
+衡量 > weight;
+骨髓 > marrow;
+搔癢 > tickle;
+雕像 > statue;
+正午 > midday;
+撫抱 > caress;
+公眾 > public;
+救主 > savior;
+粘粘 > sticky;
+歷來 > always;
+攪動 > to\-mix;
+街道 > street;
+巴爾 > baltic;
+的確 > really;
+過失 > defect;
+長短 > length;
+幫手 > helper;
+正值 > honest;
+公用 > public;
+遭受 > suffer;
+附庸 > vassal;
+目標 > target;
+適合 > to\-fit;
+高達 > attain;
+補給 > supply;
+花粉 > pollen;
+全球 > entire;
+挑選 > choose;
+遭到 > suffer;
+白痴 > idiocy;
+峽谷 > canyon;
+噪音 > rumble;
+捍衛 > defend;
+表親 > cousin;
+觀念 > notion;
+裁縫 > tailor;
+採納 > accept;
+補種 > reseed;
+允當 > proper;
+冰柱 > icicle;
+閱歷 > to\-see;
+坦白 > honest;
+防守 > defend;
+阿姨 > auntie;
+草料 > fodder;
+線上 > online;
+出席 > attend;
+驚駭 > fright;
+素描 > sketch;
+兇猛 > fierce;
+閒混 > loiter;
+摟抱 > to\-hug;
+自身 > itself;
+進口 > import;
+採礦 > mining;
+擾亂 > infest;
+結尾 > ending;
+閣樓 > garret;
+花生 > peanut;
+過份 > unduly;
+驟雨 > shower;
+幃幕 > screen;
+搶救 > rescue;
+光澤 > luster;
+搜查 > search;
+逝去 > elapse;
+光漆 > enamel;
+搭救 > rescue;
+光滑 > glossy;
+逕向 > radial;
+屏風 > screen;
+逼仄 > narrow;
+相差 > differ;
+關心 > caring;
+搖晃 > falter;
+抵達 > arrive;
+地產 > estate;
+細嫩 > tender;
+局面 > aspect;
+澱粉 > starch;
+標榜 > flaunt;
+白楊 > poplar;
+源點 > source;
+滑雪 > to\-ski;
+回絕 > rebuff;
+襪帶 > garter;
+綁住 > fasten;
+眼光 > vision;
+樣本 > sample;
+烈士 > martyr;
+精明 > astute;
+腳鐐 > fetter;
+產量 > output;
+白果 > ginkgo;
+帆布 > canvas;
+布幕 > screen;
+跳進 > plunge;
+嚴肅 > solemn;
+附上 > attach;
+抬起 > uplift;
+幾乎 > almost;
+迫切 > urgent;
+瀉湖 > lagoon;
+約定 > engage;
+簡直 > simply;
+跟進 > follow;
+光是 > solely;
+給予 > accord;
+山谷 > valley;
+報信 > notify;
+簡略 > simple;
+複數 > plural;
+白搭 > no\-use;
+巡弋 > cruise;
+機密 > secret;
+航程 > flight;
+冬天 > winter;
+援手 > succor;
+體系 > system;
+帝國 > empire;
+茶壺 > teapot;
+盟國 > allies;
+橘子 > orange;
+裁決 > ruling;
+視力 > vision;
+實體 > entity;
+發抖 > shiver;
+索取 > to\-ask;
+席卷 > engulf;
+地毯 > carpet;
+八度 > octave;
+用語 > syntax;
+市場 > market;
+城堡 > castle;
+節約 > frugal;
+甲蟲 > beetle;
+承諾 > effort;
+衛生 > health;
+長度 > length;
+補救 > remedy;
+修訂 > revise;
+師傅 > master;
+迄今 > so\-far;
+實際 > actual;
+嘗試 > to\-try;
+垂幕 > canopy;
+蠟筆 > crayon;
+冰凍 > freeze;
+侮辱 > insult;
+樣子 > manner;
+疫病 > plague;
+執事 > deacon;
+成長 > mature;
+溝道 > groove;
+農人 > farmer;
+插座 > socket;
+滾落 > tumble;
+將近 > almost;
+系列 > series;
+盈利 > profit;
+排斥 > reject;
+扮裝 > makeup;
+拉緊 > strain;
+保衛 > defend;
+融解 > molten;
+圖案 > design;
+腔調 > accent;
+走錯 > astray;
+喉頭 > throat;
+節省 > saving;
+輕微 > slight;
+圓柱 > column;
+棉花 > cotton;
+屏蔽 > screen;
+內地 > inland;
+信號 > signal;
+小貓 > kitten;
+行為 > action;
+對象 > target;
+共同 > common;
+埋伏 > ambush;
+疆界 > border;
+對話 > dialog;
+符號 > symbol;
+胸針 > brooch;
+搭乘 > embark;
+脅迫 > coerce;
+喚醒 > arouse;
+八十 > eighty;
+樣品 > sample;
+簸揚 > winnow;
+棒糖 > sucker;
+算盤 > abacus;
+簡易 > simple;
+蠟燭 > candle;
+精力 > energy;
+公共 > public;
+傳染 > infect;
+工人 > worker;
+在後 > behind;
+自然 > nature;
+滾筒 > roller;
+潤滑 > smooth;
+起訴 > to\-sue;
+蝗蟲 > locust;
+岸然 > solemn;
+傳教 > preach;
+裁定 > ruling;
+等級 > degree;
+較好 > better;
+花園 > garden;
+花圈 > wreath;
+腎臟 > kidney;
+捕拿 > arrest;
+路程 > course;
+先前 > before;
+憂鬱 > sullen;
+馬路 > street;
+穗飾 > tassel;
+倫理 > ethics;
+瑞金 > ruijin;
+抱病 > be\-ill;
+傳授 > impart;
+車庫 > garage;
+測量 > survey;
+字首 > prefix;
+魚夫 > fisher;
+粗劣 > coarse;
+花哨 > garish;
+才能 > talent;
+輕咬 > nibble;
+條紋 > stripe;
+致死 > deadly;
+嚴格 > strict;
+插入 > insert;
+漂白 > bleach;
+挫敗 > thwart;
+贖金 > ransom;
+籃子 > basket;
+行星 > planet;
+回憶 > recall;
+光亮 > bright;
+濾器 > filter;
+粗俗 > vulgar;
+穀類 > cereal;
+偵查 > detect;
+傷心 > grieve;
+容許 > permit;
+控告 > accuse;
+袖子 > sleeve;
+低語 > mutter;
+花兒 > flower;
+蜥蜴 > lizard;
+漣漪 > ripple;
+固守 > adhere;
+國外 > abroad;
+液體 > liquid;
+背誦 > recite;
+枕頭 > pillow;
+蜘蛛 > spider;
+崎嶇 > rugged;
+餑餑 > pastry;
+疲憊 > beaten;
+侍者 > waiter;
+餐飲 > repast;
+傷害 > injure;
+修理 > repair;
+何處 > whence;
+漫步 > ramble;
+信用 > credit;
+涼鞋 > sandal;
+海龜 > turtle;
+因子 > factor;
+拳擊 > boxing;
+軟化 > soften;
+安詳 > serene;
+土匪 > bandit;
+拔根 > uproot;
+扣留 > detain;
+松雞 > grouse;
+香蕉 > banana;
+高度 > height;
+構件 > member;
+商談 > confer;
+異教 > heresy;
+簡單 > simple;
+棺材 > coffin;
+地主 > a\-host;
+高山 > alpine;
+僱佣 > employ;
+飢餓 > hunger;
+生涯 > career;
+森林 > forest;
+作者 > author;
+挪威 > norway;
+尋的 > homing;
+嚴密 > strict;
+拘捕 > arrest;
+健康 > health;
+表哥 > cousin;
+朋黨 > clique;
+混血 > hybrid;
+跋涉 > trudge;
+僅僅 > barely;
+回去 > return;
+漏斗 > funnel;
+賓語 > object;
+乳頭 > nipple;
+滿期 > expire;
+理論 > theory;
+介質 > medium;
+答案 > answer;
+鑿子 > chisel;
+由於 > due\-to;
+把柄 > handle;
+和風 > breeze;
+使用 > to\-use;
+聘請 > engage;
+扶植 > foster;
+環球 > global;
+崗位 > a\-post;
+便池 > urinal;
+回來 > return;
+拓展 > expand;
+溪流 > stream;
+嚴厲 > severe;
+潛在 > hidden;
+船上 > aboard;
+宣稱 > assert;
+哀辭 > lament;
+手段 > method;
+乾酪 > cheese;
+更高 > higher;
+偌大 > so\-big;
+宣示 > to\-vow;
+小氣 > stingy;
+體制 > system;
+成熟 > mature;
+肌肉 > muscle;
+作用 > action;
+抽屜 > drawer;
+驚恐 > appall;
+把手 > handle;
+手槍 > pistol;
+家畜 > cattle;
+福音 > gospel;
+起源 > origin;
+群體 > colony;
+亂跳 > bounce;
+男巫 > wizard;
+膽大 > daring;
+安祥 > serene;
+答復 > answer;
+跟從 > follow;
+健全 > robust;
+根源 > origin;
+能源 > energy;
+本身 > itself;
+拌嘴 > bicker;
+打擊 > to\-hit;
+應當 > should;
+扣押 > detain;
+笨拙 > clumsy;
+個子 > height;
+應用 > to\-use;
+瑕疵 > stigma;
+曝露 > expose;
+海裡 > marine;
+味道 > flavor;
+手指 > finger;
+把子 > handle;
+私語 > murmur;
+養育 > foster;
+最近 > recent;
+清瘦 > meager;
+活躍 > active;
+岸上 > ashore;
+成果 > result;
+中途 > midway;
+頂點 > summit;
+暴露 > expose;
+突然 > sudden;
+木製 > wooden;
+安然 > safely;
+飢荒 > famine;
+趾尖 > tiptoe;
+束腰 > girdle;
+宮殿 > palace;
+板結 > harden;
+供應 > supply;
+信奉 > belief;
+成效 > effect;
+瓶子 > bottle;
+三重 > treble;
+客氣 > polite;
+浮著 > afloat;
+媒質 > medium;
+變黑 > darken;
+孤獨 > lonely;
+渠溝 > trench;
+胡椒 > pepper;
+浮華 > vanity;
+駁斥 > refute;
+不適 > unwell;
+羞辱 > baffle;
+留下 > remain;
+上邊 > upside;
+鏡子 > mirror;
+胡桃 > walnut;
+鏟子 > shovel;
+封建 > feudal;
+果真 > really;
+和藹 > kindly;
+鸚鵡 > parrot;
+穿洞 > pierce;
+寺廟 > temple;
+理由 > reason;
+足夠 > enough;
+蕁麻 > nettle;
+客棧 > tavern;
+寶座 > throne;
+叩頭 > kowtow;
+房客 > tenant;
+第四 > fourth;
+野餐 > picnic;
+專家 > expert;
+柳樹 > willow;
+由來 > origin;
+使得 > usable;
+漂亮 > pretty;
+嗓子 > throat;
+蜃景 > mirage;
+重音 > accent;
+反駁 > retort;
+少女 > maiden;
+由于 > due\-to;
+海綿 > sponge;
+球狀 > sphere;
+用于 > use\-in;
+應有 > proper;
+貧瘠 > barren;
+號碼 > number;
+晚飯 > supper;
+賭注 > stakes;
+神諭 > oracle;
+愚笨 > stupid;
+果然 > really;
+不要 > don''t\!;
+材積 > volume;
+扁圓 > oblate;
+黃色 > yellow;
+叮鈴 > jingle;
+第八 > eighth;
+居住 > reside;
+學校 > school;
+上衫 > blouse;
+波谷 > trough;
+上衣 > jacket;
+寶塔 > pagoda;
+客戶 > client;
+窗戶 > window;
+家庭 > family;
+重量 > weight;
+柏林 > berlin;
+有罪 > guilty;
+鍵帽 > keycap;
+小包 > packet;
+亨特 > hunter;
+積極 > active;
+打傷 > bruise;
+頁邊 > margin;
+手冊 > manual;
+寂寞 > lonely;
+海盜 > pirate;
+背後 > behind;
+牙齒 > dental;
+作家 > author;
+名言 > saying;
+普通 > common;
+耀眼 > dazzle;
+主編 > editor;
+港彎 > harbor;
+背帶 > braces;
+犯錯 > to\-err;
+聖殿 > temple;
+暴虐 > brutal;
+波蘭 > poland;
+駁回 > reject;
+成員 > member;
+想睡 > drowsy;
+星雲 > nebula;
+變軟 > soften;
+不能 > cannot;
+海狸 > beaver;
+依偎 > nestle;
+憤慨 > resent;
+懦夫 > coward;
+休惜 > recess;
+蓬鬆 > fluffy;
+可親 > kindly;
+磁鐵 > magnet;
+領袖 > leader;
+不羈 > unruly;
+校園 > campus;
+成勣 > result;
+神聖 > divine;
+中等 > medium;
+變質 > go\-bad;
+羊肉 > mutton;
+消滅 > perish;
+喉嚨 > throat;
+性質 > nature;
+吊著 > dangle;
+柱子 > pillar;
+清廉 > honest;
+危險 > danger;
+安定 > stable;
+憎惡 > loathe;
+口袋 > pocket;
+憎恨 > detest;
+喜劇 > comedy;
+寒冬 > wintry;
+貶斥 > demote;
+奮鬥 > strive;
+單位 > a\-unit;
+有用 > useful;
+球拍 > racket;
+句號 > period;
+口號 > slogan;
+穩定 > stable;
+單一 > single;
+子彈 > bullet;
+安培 > ampere;
+硬領 > collar;
+顆粒 > kernel;
+食槽 > manger;
+媒界 > medium;
+本源 > origin;
+宰割 > invade;
+背叛 > betray;
+贖回 > redeem;
+波紋 > ripple;
+窗口 > window;
+獨特 > unique;
+字尾 > suffix;
+神社 > shrine;
+蕪菁 > turnip;
+油脂 > grease;
+靛青 > indigo;
+鞠躬 > to\-bow;
+金色 > golden;
+卷軸 > scroll;
+大麥 > barley;
+鵓鴿 > pigeon;
+室內 > indoor;
+何以 > whence;
+受苦 > suffer;
+伸出 > extend;
+一瞥 > glance;
+伯勞 > shrike;
+活潑 > lively;
+斬首 > behead;
+賓客 > guests;
+匕首 > dagger;
+瑞典 > sweden;
+講道 > preach;
+鼻息 > breath;
+謙遜 > humble;
+貪心 > greedy;
+贊同 > assent;
+薄紙 > tissue;
+悶熱 > sultry;
+頒給 > confer;
+讚美 > admire;
+現存 > extant;
+餐巾 > napkin;
+以太 > ether\-;
+態度 > manner;
+奶酪 > cheese;
+狹窄 > narrow;
+瑣事 > trifle;
+老是 > always;
+蕃茄 > tomato;
+財帛 > wealth;
+預算 > budget;
+青銅 > bronze;
+忘記 > forget;
+頑童 > urchin;
+混合 > to\-mix;
+會死 > mortal;
+不然 > not\-so;
+讀者 > reader;
+洪水 > deluge;
+感慨 > lament;
+賭博 > gamble;
+事情 > affair;
+存取 > access;
+木料 > lumber;
+財富 > wealth;
+深化 > deepen;
+方針 > policy;
+頂端 > summit;
+妖言 > heresy;
+現在 > modern;
+變紅 > redden;
+名產 > staple;
+昆蟲 > insect;
+後邊 > behind;
+猖狂 > savage;
+孤兒 > orphan;
+淨化 > purify;
+後退 > recoil;
+牡蠣 > oyster;
+人士 > person;
+職務 > a\-post;
+片語 > phrase;
+民謠 > ballad;
+猛烈 > fierce;
+流星 > meteor;
+悲歎 > bewail;
+存儲 > memory;
+以前 > before;
+象徵 > emblem;
+不毛 > barren;
+不比 > unlike;
+象征 > symbol;
+毗連 > adjoin;
+大錘 > sledge;
+最新 > latest;
+治理 > govern;
+主教 > bishop;
+謙虛 > modest;
+父親 > father;
+處女 > virgin;
+賣主 > seller;
+羊毛 > fleece;
+放鬆 > loosen;
+含水 > watery;
+秘密 > secret;
+處境 > plight;
+議程 > agenda;
+狡猾 > crafty;
+王座 > throne;
+惡意 > malice;
+弄髒 > defile;
+本州 > honshu;
+嬰兒 > infant;
+薪水 > salary;
+獸性 > brutal;
+數量 > amount;
+斷言 > affirm;
+旅行 > travel;
+浪子 > loafer;
+有意 > intend;
+秋季 > autumn;
+名流 > gentry;
+台灣 > taiwan;
+不智 > unwise;
+如草 > grassy;
+故障 > glitch;
+願望 > desire;
+合法 > lawful;
+名氣 > repute;
+大路 > avenue;
+海報 > poster;
+詞頭 > prefix;
+亦即 > namely;
+哀嘆 > lament;
+王子 > prince;
+縫針 > needle;
+殯車 > hearse;
+醫生 > doctor;
+秋天 > autumn;
+人們 > people;
+暖氣 > heater;
+移動 > mobile;
+吸收 > absorb;
+意圖 > intent;
+強迫 > compel;
+顫抖 > quiver;
+緣飾 > fringe;
+中心 > center;
+悔改 > repent;
+周年 > annual;
+口渴 > thirst;
+針法 > stitch;
+消化 > digest;
+正門 > portal;
+海員 > sailor;
+二十 > twenty;
+吐根 > ipecac;
+雙重 > double;
+青苔 > lichen;
+多變 > fickle;
+沙漠 > desert;
+鉋床 > planer;
+延長 > extend;
+名望 > renown;
+取消 > cancel;
+妨礙 > hinder;
+交互 > mutual;
+那邊 > yonder;
+歸還 > return;
+劈開 > cleave;
+酒窩 > dimple;
+咖啡 > coffee;
+瞬間 > moment;
+動議 > motion;
+陰鬱 > gloomy;
+放逐 > banish;
+配稱 > worthy;
+活塞 > piston;
+未可 > cannot;
+外行 > layman;
+𥜌 > a\-coat;
+杏仁 > almond;
+碎石 > gravel;
+預期 > expect;
+更好 > better;
+愛人 > spouse;
+隆隆 > rumble;
+秉公 > justly;
+禱告 > prayer;
+更大 > bigger;
+朝向 > toward;
+九十 > ninety;
+破舊 > shabby;
+一帶 > region;
+顧客 > client;
+叢林 > jungle;
+碧玉 > jasper;
+𥥅 > a\-hole;
+只是 > merely;
+猴子 > monkey;
+𢦏 > to\-cut;
+隧道 > tunnel;
+惡化 > worsen;
+木偶 > puppet;
+會員 > member;
+一局 > inning;
+有名 > famous;
+朋友 > friend;
+菌類 > fungus;
+一對 > couple;
+硫磺 > sulfur;
+未來 > future;
+一定 > surely;
+遭遇 > befall;
+之前 > before;
+罷工 > strike;
+鄉紳 > squire;
+詭計 > deceit;
+豁免 > exempt;
+流利 > fluent;
+性格 > nature;
+活力 > energy;
+變更 > change;
+心理 > mental;
+變暗 > darken;
+牢牢 > firmly;
+風俗 > custom;
+緣起 > origin;
+記錄 > record;
+𠀉 > a\-hill;
+創辦 > launch;
+暗影 > shadow;
+隊部 > office;
+讚揚 > praise;
+乞丐 > beggar;
+過量 > excess;
+熔解 > fusion;
+隘路 > defile;
+邀請 > invite;
+循環 > circle;
+智慧 > wisdom;
+獵人 > hunter;
+恐怖 > terror;
+斑紋 > stripe;
+石英 > quartz;
+包管 > assure;
+酵母 > leaven;
+解除 > remove;
+動脈 > artery;
+最低 > lowest;
+祭司 > priest;
+特此 > hereby;
+雌蕊 > pistil;
+天篷 > canopy;
+干預 > meddle;
+化石 > fossil;
+不可 > cannot;
+水泥 > cement;
+水泡 > bubble;
+警方 > police;
+爸爸 > father;
+蓋爾 > gaelic;
+前輩 > senior;
+記起 > recall;
+三十 > thirty;
+繃簧 > spring;
+撤除 > remove;
+釦子 > button;
+彈簧 > spring;
+副詞 > adverb;
+牛油 > butter;
+課程 > course;
+年長 > senior;
+性情 > nature;
+編號 > number;
+氣泡 > bubble;
+危機 > crisis;
+不公 > unjust;
+底部 > bottom;
+不克 > cannot;
+法國 > france;
+沉思 > ponder;
+暗堡 > bunker;
+狗屋 > kennel;
+暴君 > tyrant;
+凹陷 > hollow;
+三倍 > triple;
+大眾 > people;
+霜白 > frosty;
+否則 > if\-not;
+分鐘 > minute;
+領域 > domain;
+葬禮 > burial;
+水桶 > bucket;
+撤銷 > repeal;
+合唱 > chorus;
+醫師 > doctor;
+反射 > reflex;
+不丹 > bhutan;
+敬禮 > salute;
+非洲 > africa;
+通路 > access;
+美人 > beauty;
+謀殺 > murder;
+罷免 > recall;
+言語 > speech;
+剝蝕 > denude;
+退還 > return;
+數目 > amount;
+召回 > recall;
+破爛 > ragged;
+一串 > strand;
+纖毛 > cilium;
+性子 > temper;
+追逐 > chase;
+逕賽 > track;
+靜止 > still;
+巴黎 > paris;
+年輕 > young;
+迴避 > avoid;
+蒸汽 > steam;
+權衡 > weigh;
+遊蕩 > stray;
+弄糟 > spoil;
+恩典 > grace;
+大爺 > uncle;
+日本 > japan;
+可可 > cocoa;
+可口 > tasty;
+延緩 > defer;
+編織 > weave;
+南方 > south;
+置于 > place;
+姪女 > niece;
+陷落 > slump;
+牛排 > steak;
+隱約 > vague;
+鯨魚 > whale;
+合併 > annex;
+護士 > nurse;
+泊位 > berth;
+遊艇 > barge;
+關閉 > close;
+陰莖 > penis;
+智利 > chile;
+線索 > trail;
+壓碎 > crush;
+原始 > first;
+每每 > often;
+反叛 > rebel;
+韓國 > korea;
+雙生 > twins;
+相配 > match;
+印度 > india;
+石狀 > stony;
+迅速 > rapid;
+幼蟲 > larva;
+鯊魚 > shark;
+別號 > alias;
+綠色 > green;
+引用 > quote;
+相近 > close;
+市長 > mayor;
+爐架 > grate;
+機關 > organ;
+權能 > power;
+原因 > cause;
+急劇 > rapid;
+大權 > power;
+鴉片 > opium;
+訓練 > drill;
+北方 > north;
+論文 > paper;
+放牧 > graze;
+功率 > power;
+每日 > daily;
+套房 > suite;
+違礙 > taboo;
+優點 > merit;
+徘徊 > hover;
+視覺 > sight;
+操練 > drill;
+強權 > power;
+刀葉 > blade;
+摩西 > moses;
+警備 > guard;
+課時 > class;
+彗星 > comet;
+搬運 > carry;
+青年 > youth;
+標題 > title;
+提高 > raise;
+氨基 > amino;
+夜晚 > night;
+熱氣 > steam;
+機軸 > arbor;
+醒來 > waken;
+女子 > woman;
+門閂 > latch;
+往往 > often;
+蓋子 > cover;
+靈巧 > handy;
+元音 > vowel;
+克隆 > clone;
+整整 > whole;
+匯寄 > remit;
+剁碎 > mince;
+調情 > flirt;
+地點 > place;
+敲擊 > pound;
+匆忙 > hasty;
+毛巾 > towel;
+芳香 > balmy;
+年級 > grade;
+式樣 > style;
+襯衫 > shirt;
+襯衣 > shirt;
+印刷 > print;
+散文 > prose;
+試樣 > style;
+全部 > whole;
+短暫 > short;
+西藏 > tibet;
+動搖 > waver;
+燃放 > light;
+火車 > train;
+工資 > wages;
+勇敢 > brave;
+死板 > rigid;
+矛柄 > shaft;
+長釘 > spike;
+步槍 > rifle;
+刻痕 > notch;
+優雅 > grace;
+選民 > voter;
+魔鬼 > devil;
+新娘 > bride;
+夾子 > cramp;
+謠傳 > rumor;
+新奇 > novel;
+報答 > repay;
+煤渣 > slack;
+邊框 > frame;
+花開 > bloom;
+物主 > owner;
+彈弓 > sling;
+報窩 > brood;
+擺渡 > ferry;
+電影 > movie;
+摸索 > grope;
+鬼魂 > ghost;
+速率 > speed;
+破壞 > wreck;
+約莫 > about;
+壁架 > ledge;
+階段 > stage;
+夢寐 > dream;
+延期 > delay;
+十分 > fully;
+勞工 > labor;
+團體 > group;
+地面 > floor;
+諷刺 > irony;
+白費 > waste;
+運河 > canal;
+八角 > anise;
+陰涼 > shady;
+擦洗 > scour;
+熱忱 > ardor;
+阿片 > opium;
+焙燒 > roast;
+女人 > woman;
+綠洲 > oasis;
+証明 > prove;
+相等 > equal;
+償還 > repay;
+毒品 > drugs;
+固體 > solid;
+規程 > rules;
+直立 > erect;
+僧院 > abbey;
+証據 > proof;
+推選 > elect;
+毛刷 > brush;
+鬍鬚 > beard;
+推進 > impel;
+關節 > joint;
+價錢 > price;
+切片 > slice;
+艦隊 > fleet;
+強大 > large;
+真理 > truth;
+比分 > score;
+擱板 > shelf;
+剛果 > congo;
+剪斷 > shear;
+火花 > spark;
+影像 > image;
+盜竊 > steal;
+標號 > grade;
+迷濛 > misty;
+睡椅 > couch;
+加寬 > widen;
+震動 > shake;
+說出 > utter;
+計數 > count;
+澳門 > aomen;
+推論 > infer;
+糢糊 > foggy;
+每一 > every;
+勢力 > power;
+緞布 > satin;
+動向 > trend;
+天使 > angel;
+褐色 > brown;
+鬆開 > loose;
+櫸木 > beech;
+部件 > parts;
+烘烤 > roast;
+軌道 > orbit;
+閃耀 > glint;
+臭鼬 > skunk;
+儲藏 > store;
+擦拭 > clean;
+疾風 > blast;
+攤子 > booth;
+大人 > adult;
+功夫 > skill;
+動力 > power;
+相片 > image;
+髒髒 > dirty;
+燙傷 > scald;
+均衡 > equal;
+出沒 > haunt;
+道德 > moral;
+觸摸 > touch;
+發聲 > vocal;
+長老 > elder;
+樹籬 > hedge;
+典範 > model;
+集團 > group;
+整個 > whole;
+帝王 > regal;
+強光 > glare;
+盔甲 > armor;
+軌跡 > locus;
+軌距 > gauge;
+補藥 > tonic;
+歸咎 > blame;
+敵人 > enemy;
+幽暗 > gloom;
+擔懮 > worry;
+榮譽 > honor;
+魔術 > magic;
+照射 > shine;
+搗碎 > smash;
+檸檬 > lemon;
+開端 > start;
+模糊 > vague;
+雞冠 > crest;
+光纖 > light;
+雕刻 > carve;
+骯髒 > dirty;
+切望 > crave;
+詛咒 > curse;
+標籤 > label;
+然後 > after;
+那兒 > there;
+長笛 > flute;
+精神 > vigor;
+圖表 > chart;
+轉移 > shift;
+兒童 > child;
+圍裙 > apron;
+推舉 > elect;
+停頓 > pause;
+粗糙 > crude;
+剪報 > scrap;
+髮辮 > braid;
+死亡 > death;
+規模 > scale;
+速度 > speed;
+那些 > those;
+箭頭 > arrow;
+雄偉 > grand;
+辦法 > means;
+為止 > until;
+嚴重 > grave;
+船貨 > cargo;
+長矛 > lance;
+歌劇 > opera;
+高遠 > lofty;
+凡是 > every;
+烏木 > ebony;
+舞蹈 > dance;
+粉筆 > chalk;
+絕技 > stunt;
+臉頰 > cheek;
+白癡 > idiot;
+授與 > grant;
+角度 > angle;
+發病 > onset;
+基本 > basic;
+火焰 > blaze;
+判定 > judge;
+探索 > quest;
+裂縫 > crack;
+火炬 > torch;
+填塞 > stuff;
+撰寫 > write;
+糖漿 > syrup;
+粉碎 > crash;
+陽台 > porch;
+擺動 > swing;
+押韻 > rhyme;
+型狀 > shape;
+舉起 > heave;
+割傷 > slash;
+這天 > today;
+籬笆 > fence;
+榮耀 > honor;
+遏制 > check;
+發狂 > crazy;
+別墅 > villa;
+岸邊 > shore;
+尼龍 > nylon;
+隊伍 > ranks;
+刀子 > knife;
+幅度 > width;
+橡木 > oaken;
+精液 > semen;
+床單 > sheet;
+花瓣 > petal;
+剃刀 > razor;
+凳子 > stool;
+膽量 > nerve;
+造反 > rebel;
+訓令 > order;
+再會 > adieu;
+檳子 > binzi;
+踴躍 > eager;
+兩次 > twice;
+修飾 > adorn;
+揣測 > guess;
+索引 > index;
+僵硬 > stark;
+傳聞 > rumor;
+自誇 > boast;
+摘引 > quote;
+工會 > union;
+糖果 > candy;
+裂痕 > chasm;
+火柴 > match;
+細小 > petty;
+欄位 > fence;
+驅除 > repel;
+樹林 > woods;
+小麥 > wheat;
+潛行 > sneak;
+垂死 > dying;
+樺木 > birch;
+逐出 > expel;
+巨擘 > thumb;
+紗布 > gauze;
+平原 > field;
+公會 > guild;
+田野 > field;
+濫用 > abuse;
+長椅 > bench;
+高興 > happy;
+搓揉 > knead;
+長條 > strip;
+這些 > these;
+庇佑 > bless;
+假裝 > feign;
+辮子 > plait;
+降下 > lower;
+樓梯 > stair;
+高聳 > erect;
+高聲 > aloud;
+尊魚 > trout;
+血肉 > flesh;
+盛宴 > feast;
+回答 > reply;
+簡短 > brief;
+囤積 > hoard;
+駿馬 > steed;
+榮獲 > prize;
+襪子 > socks;
+蝙魚 > bream;
+報償 > repay;
+傳神 > vivid;
+色狼 > satyr;
+探測 > probe;
+轉播 > relay;
+批量 > batch;
+駱駝 > camel;
+圖片 > image;
+冠子 > crest;
+腰部 > waist;
+皮帶 > strap;
+粗暴 > rough;
+撒但 > satan;
+小雞 > chick;
+冰塔 > serac;
+笨重 > heavy;
+輕染 > tinge;
+內心 > heart;
+腳踝 > ankle;
+排水 > drain;
+招致 > incur;
+栗鼠 > bunny;
+扒釘 > cramp;
+直到 > until;
+巫婆 > witch;
+援引 > quote;
+答詞 > reply;
+尖銳 > sharp;
+門廊 > stoop;
+偷竊 > steal;
+槓桿 > lever;
+其它 > other;
+答覆 > reply;
+烘乾 > parch;
+公尺 > meter;
+噪聲 > noise;
+盎司 > ounce;
+騎車 > cycle;
+價格 > price;
+精子 > sperm;
+地板 > floor;
+凌亂 > chaos;
+俚語 > slang;
+紅利 > bonus;
+開始 > begin;
+採摘 > pluck;
+埃及 > egypt;
+寂靜 > quiet;
+符記 > token;
+喪鐘 > knell;
+脹起 > bulge;
+背骨 > spine;
+左右 > about;
+公噸 > tonne;
+掌握 > grasp;
+生苔 > mossy;
+搖動 > shake;
+輪子 > wheel;
+騙術 > trick;
+打製 > forge;
+小說 > novel;
+腐蝕 > rusty;
+閉合 > close;
+駕車 > drive;
+滑落 > slide;
+六十 > sixty;
+公升 > liter;
+似雪 > snowy;
+胸部 > chest;
+病毒 > virus;
+技能 > skill;
+推崇 > value;
+小袋 > pouch;
+火兒 > angry;
+街段 > block;
+路線 > route;
+巨人 > giant;
+裙子 > skirt;
+抓緊 > grasp;
+血液 > blood;
+安靜 > quiet;
+手藝 > craft;
+馬達 > motor;
+閃光 > flash;
+其他 > other;
+四月 > april;
+其中 > among;
+楓樹 > maple;
+竊賊 > thief;
+滑翔 > glide;
+掃帚 > broom;
+衰敗 > decay;
+苛刻 > harsh;
+鐵砧 > anvil;
+捕捉 > catch;
+空間 > space;
+發光 > shine;
+掠奪 > harry;
+察覺 > aware;
+屋簷 > eaves;
+格言 > maxim;
+瓣膜 > valve;
+採場 > slope;
+舞會 > dance;
+圍巾 > scarf;
+寓言 > fable;
+手腕 > skill;
+被子 > quilt;
+小舌 > uvula;
+就緒 > ready;
+軀幹 > trunk;
+軀干 > trunk;
+發亮 > shine;
+手肘 > elbow;
+補品 > tonic;
+客車 > coach;
+艾姬 > aggie;
+在外 > outer;
+崇拜 > adore;
+充份 > ample;
+高明 > smart;
+漲滿 > swell;
+痛恨 > abhor;
+聲音 > voice;
+痛快 > jolly;
+接合 > joint;
+土堆 > mound;
+戲耍 > tease;
+種類 > class;
+男爵 > baron;
+固定 > fixed;
+尖細 > taper;
+均分 > split;
+花俏 > fancy;
+赫茲 > hertz;
+箭桿 > shaft;
+圍城 > siege;
+傲岸 > proud;
+致敬 > greet;
+軍團 > corps;
+鬍子 > beard;
+排列 > array;
+俏皮 > saucy;
+舞弊 > fraud;
+餅餌 > cakes;
+補丁 > patch;
+駁船 > barge;
+蜂蜜 > honey;
+漿果 > berry;
+魅力 > charm;
+胸膛 > chest;
+漂游 > drift;
+價值 > value;
+潑掉 > spill;
+興建 > build;
+資金 > funds;
+滲溝 > sewer;
+胭脂 > rouge;
+自我 > self\-;
+錯誤 > error;
+果酒 > cider;
+捷克 > czech;
+用法 > usage;
+篩子 > sieve;
+圖像 > image;
+存貨 > stock;
+高尚 > nobly;
+在下 > under;
+拍擊 > smack;
+嚮導 > guide;
+傾向 > trend;
+生氣 > angry;
+偏愛 > favor;
+害羞 > blush;
+蝸牛 > snail;
+商號 > store;
+錢袋 > purse;
+激光 > laser;
+安華 > anwar;
+峭壁 > cliff;
+捐助 > offer;
+拇指 > thumb;
+拂掃 > whisk;
+船只 > ships;
+臺子 > table;
+朝鮮 > korea;
+四十 > forty;
+抽打 > strap;
+惡魔 > demon;
+本領 > skill;
+棲息 > perch;
+流體 > fluid;
+依然 > still;
+肝臟 > liver;
+範圍 > range;
+單獨 > alone;
+修改 > amend;
+椅子 > chair;
+有風 > windy;
+把握 > grasp;
+小河 > brook;
+業主 > owner;
+驚慌 > panic;
+偉大 > great;
+主題 > theme;
+哪裡 > where;
+答應 > reply;
+一點 > a\-bit;
+學級 > class;
+當地 > local;
+稻草 > straw;
+東西 > thing;
+倉庫 > depot;
+伊索 > aesop;
+山崖 > cliff;
+笑林 > humor;
+嘴巴 > mouth;
+鐳射 > laser;
+棚子 > shack;
+吵鬧 > noisy;
+男子 > a\-man;
+股票 > share;
+棒子 > stick;
+指令 > order;
+肥碩 > stout;
+黃銅 > brass;
+棍子 > stick;
+致使 > cause;
+技巧 > skill;
+秘訣 > trick;
+拴住 > hitch;
+下面 > below;
+蠢事 > folly;
+愚蠢 > silly;
+把守 > guard;
+下雨 > rainy;
+驚奇 > amaze;
+臥位 > berth;
+噴出 > spout;
+風趣 > humor;
+尺度 > scale;
+射擊 > shoot;
+賄絡 > bribe;
+屋子 > house;
+責罵 > scold;
+腱子 > sinew;
+更遲 > later;
+黑貂 > sable;
+當中 > among;
+喬木 > arbor;
+老虎 > tiger;
+沙龍 > salon;
+保姆 > nanny;
+小徑 > alley;
+騙局 > fraud;
+對待 > treat;
+拉丁 > latin;
+琥珀 > amber;
+會談 > talks;
+脈搏 > pulse;
+產品 > goods;
+尋常 > usual;
+服裝 > dress;
+金髮 > blond;
+戲弄 > caper;
+浪花 > spray;
+小屋 > cabin;
+清潔 > clean;
+房屋 > house;
+嘎嘎 > quack;
+生動 > vivid;
+下跪 > kneel;
+小孩 > child;
+清湯 > broth;
+便士 > penny;
+房子 > house;
+耶穌 > jesus;
+鋼琴 > piano;
+騎士 > rider;
+鏈子 > chain;
+手套 > glove;
+男人 > a\-man;
+跟前 > front;
+修剪 > prune;
+寬度 > width;
+香料 > spice;
+伺服 > servo;
+滋味 > taste;
+租約 > lease;
+尖塔 > spire;
+嗶嘰 > serge;
+污點 > stain;
+法郎 > franc;
+活著 > alive;
+喜悅 > happy;
+成年 > adult;
+肅清 > purge;
+翱翔 > hover;
+孟浪 > hasty;
+黑色 > black;
+淹沒 > flush;
+秕糠 > chaff;
+第十 > tenth;
+品種 > breed;
+時髦 > vogue;
+打呼 > snore;
+桌子 > table;
+仍然 > still;
+清楚 > clear;
+餘燼 > ember;
+第六 > sixth;
+錦標 > prize;
+獨自 > alone;
+羽莖 > quill;
+桃子 > peach;
+封地 > manor;
+信任 > trust;
+作弊 > fraud;
+題解 > notes;
+保佑 > bless;
+貨物 > goods;
+寡婦 > widow;
+飲用 > drink;
+一行 > party;
+趨勢 > trend;
+狹路 > gorge;
+小吃 > snack;
+珊瑚 > coral;
+珍珠 > pearl;
+懸岩 > cliff;
+鼻煙 > snuff;
+洋蔥 > onion;
+趣劇 > farce;
+低廉 > cheap;
+哀痛 > grief;
+第五 > fifth;
+第九 > ninth;
+第三 > third;
+第一 > first;
+玻璃 > glass;
+窒息 > choke;
+有線 > wired;
+板滯 > stiff;
+打仗 > fight;
+戲劇 > drama;
+沉重 > heavy;
+沈重 > heavy;
+最終 > final;
+罪行 > crime;
+罩衫 > smock;
+你好 > hello;
+位子 > place;
+波蕩 > heave;
+走向 > trend;
+麵粉 > flour;
+妖魔 > demon;
+率直 > frank;
+明顯 > clear;
+顏色 > color;
+小丑 > clown;
+景象 > scene;
+狡詐 > craft;
+憤怒 > angry;
+貝殼 > shell;
+侍候 > serve;
+象牙 > ivory;
+商店 > store;
+喝叱 > chide;
+海灘 > beach;
+琴弦 > chord;
+獎章 > medal;
+子房 > ovary;
+蒼鷺 > heron;
+赦免 > remit;
+今日 > today;
+木版 > plank;
+神經 > nerve;
+怪誕 > freak;
+站住 > stand;
+沿著 > along;
+乾淨 > clean;
+密切 > close;
+深度 > depth;
+午餐 > lunch;
+成人 > adult;
+午飯 > lunch;
+海洋 > ocean;
+肚子 > belly;
+獵犬 > hound;
+理想 > ideal;
+鵪鶉 > quail;
+以後 > after;
+孩子 > child;
+耽擱 > tarry;
+事業 > cause;
+孢子 > spore;
+旅館 > hotel;
+奴隸 > slave;
+吊繩 > sling;
+馬來 > malay;
+馬伕 > groom;
+大鹿 > moose;
+聖徒 > saint;
+世界 > world;
+渡口 > ferry;
+減去 > minus;
+人性 > human;
+慈悲 > mercy;
+響聲 > noise;
+論題 > topic;
+卡車 > truck;
+客人 > guest;
+罌粟 > poppy;
+顯然 > clear;
+斑馬 > zebra;
+母音 > vowel;
+仙女 > fairy;
+稠密 > dense;
+套鐘 > chime;
+守候 > abide;
+洗澡 > bathe;
+板岩 > slate;
+謬誤 > error;
+風格 > style;
+洗滌 > rinse;
+一片 > piece;
+錢包 > purse;
+頭皮 > scalp;
+板子 > board;
+卑賤 > lowly;
+今天 > today;
+愛慕 > adore;
+思考 > think;
+風暴 > storm;
+升起 > hoist;
+蘋果 > apple;
+貝寧 > benin;
+謠言 > rumor;
+旋轉 > whirl;
+取笑 > tease;
+水蛭 > leech;
+語音 > voice;
+夾鉗 > tongs;
+日記 > diary;
+頒發 > issue;
+乃是 > to\-be;
+新近 > newly;
+嫌惡 > abhor;
+壁龕 > niche;
+吸氣 > sniff;
+誘陷 > snare;
+石頭 > stone;
+猜測 > guess;
+代價 > price;
+杓子 > scoop;
+感官 > sense;
+三次 > third;
+本影 > umbra;
+人員 > staff;
+一次 > first;
+續訂 > renew;
+更改 > alter;
+磨碎 > grind;
+警笛 > siren;
+習慣 > habit;
+今兒 > today;
+以下 > below;
+野獸 > beast;
+和平 > peace;
+收養 > adopt;
+怪異 > weird;
+貓咪 > kitty;
+心臟 > heart;
+沼澤 > glade;
+污穢 > nasty;
+三月 > march;
+磅秤 > scale;
+哪兒 > where;
+交叉 > cross;
+責備 > blame;
+電郵 > email;
+丟掉 > throw;
+聖人 > saint;
+勝過 > excel;
+殘酷 > cruel;
+叔父 > uncle;
+證章 > badge;
+海地 > haiti;
+最後 > final;
+正面 > front;
+雷達 > radar;
+品味 > taste;
+主幹 > trunk;
+失誤 > lapse;
+爆裂 > burst;
+邊際 > limit;
+顏料 > paint;
+狂熱 > craze;
+五十 > fifty;
+破裂 > burst;
+河流 > river;
+悲悼 > mourn;
+青草 > grass;
+木塊 > block;
+乙太 > ether;
+銳利 > sharp;
+虛偽 > false;
+本地 > local;
+東京 > tokyo;
+毒蛇 > viper;
+頌歌 > carol;
+咕嚕 > grunt;
+款項 > funds;
+一打 > dozen;
+試金 > assay;
+頭暈 > dizzy;
+徽章 > badge;
+力量 > power;
+焦點 > focus;
+鉋子 > plane;
+明白 > clear;
+王后 > queen;
+纖維 > fiber;
+事件 > event;
+逗點 > comma;
+麥子 > wheat;
+一張 > sheet;
+咆哮 > growl;
+微笑 > smile;
+碧瓦 > green;
+水盆 > basin;
+煙霧 > smoke;
+邏輯 > logic;
+音樂 > music;
+更壞 > worse;
+部落 > tribe;
+延遲 > delay;
+幽默 > humor;
+王冠 > crown;
+陷阱 > snare;
+斷絕 > sever;
+中國 > china;
+多葉 > leafy;
+一層 > layer;
+燻肉 > bacon;
+引証 > quote;
+擢陞 > exalt;
+重新 > again;
+大腿 > thigh;
+大腦 > brain;
+本人 > i\-\(me;
+祭壇 > altar;
+韻文 > verse;
+遺跡 > trace;
+那裡 > there;
+熊貓 > panda;
+斑羚 > goral;
+隆重 > grand;
+彎腰 > stoop;
+婦女 > woman;
+葡萄 > grape;
+美好 > happy;
+讀書 > study;
+獎品 > award;
+最初 > first;
+恐慌 > panic;
+麵包 > bread;
+額外 > extra;
+黏住 > cling;
+一塊 > piece;
+可怕 > awful;
+過道 > aisle;
+汁液 > juice;
+礦工 > miner;
+歌謠 > chant;
+沙拉 > salad;
+麵兒 > cover;
+斗篷 > cloak;
+之下 > under;
+月份 > month;
+水準 > level;
+女王 > queen;
+雛菊 > daisy;
+編製 > weave;
+包穀 > maize;
+快樂 > happy;
+逼迫 > force;
+如火 > fiery;
+泥土 > earth;
+媒介 > media;
+一同 > along;
+場面 > scene;
+壁虎 > gecko;
+教義 > creed;
+毛病 > fault;
+頁岩 > shale;
+金屬 > metal;
+證明 > proof;
+厭惡 > loath;
+昏暗 > dusky;
+比率 > ratio;
+奶油 > cream;
+霎眼 > blink;
+水果 > fruit;
+短簡 > brief;
+姿容 > looks;
+經費 > funds;
+視頻 > video;
+遊行 > march;
+晴天 > sunny;
+重大 > great;
+帶領 > guide;
+逕跡 > track;
+爐灶 > stove;
+時常 > often;
+強硬 > tough;
+帶露 > dewy;
+形狀 > form;
+薄命 > \(usu;
+功績 > feat;
+記號 > seal;
+見面 > meet;
+邊緣 > edge;
+暴亂 > riot;
+爛泥 > ooze;
+日期 > date;
+姨媽 > aunt;
+幽谷 > dell;
+冷靜 > calm;
+教皇 > pope;
+徵收 > levy;
+向下 > down;
+速行 > rush;
+這裡 > here;
+缺口 > nick;
+遲緩 > slow;
+氏族 > clan;
+原子 > atom;
+毛氈 > felt;
+冰雹 > hail;
+預兆 > omen;
+姑媽 > aunt;
+池子 > pond;
+姑娘 > girl;
+勻淨 > even;
+方案 > plan;
+狂吠 > howl;
+心情 > mood;
+野兔 > hare;
+鞭子 > whip;
+基金 > fund;
+妻子 > wife;
+半拉 > half;
+鯉魚 > carp;
+石片 > slab;
+必得 > must;
+冰鎮 > iced;
+池塘 > pool;
+熾熱 > glow;
+石灰 > lime;
+皮鞭 > lash;
+冷酷 > grim;
+契據 > deed;
+硬幣 > coin;
+凝視 > gaze;
+教派 > sect;
+公雞 > cock;
+角色 > role;
+纖度 > size;
+牌子 > sign;
+牛奶 > milk;
+奉承 > fawn;
+時候 > time;
+英雄 > hero;
+開闊 > wide;
+彎曲 > bend;
+課文 > text;
+長靴 > boot;
+牢固 > firm;
+百靈 > lark;
+旗子 > flag;
+女孩 > girl;
+纖小 > fine;
+年老 > aged;
+左邊 > left;
+牆壁 > wall;
+透紅 > rosy;
+數據 > data;
+詩歌 > poem;
+煮熟 > boil;
+石板 > slab;
+女士 > lady;
+忍受 > bear;
+微型 > tiny;
+邊沿 > edge;
+英里 > mile;
+樂隊 > band;
+氣味 > odor;
+無禮 > rude;
+都市 > city;
+區域 > area;
+計畫 > plan;
+燃料 > fuel;
+形式 > form;
+西薄 > cake;
+擘畫 > plan;
+煤灰 > soot;
+開辦 > open;
+敲打 > beat;
+雪撬 > sled;
+很好 > well;
+遨游 > roam;
+如同 > like;
+大廳 > hall;
+毒害 > bane;
+繩子 > cord;
+繁忙 > busy;
+細胞 > cell;
+卑劣 > base;
+復原 > heal;
+別的 > else;
+公豬 > boar;
+調子 > tune;
+勻實 > even;
+徵兆 > omen;
+揹負 > bear;
+閒談 > chat;
+眼看 > soon;
+辛苦 > hard;
+癱軟 > limp;
+面具 > mask;
+撕破 > tear;
+埋葬 > bury;
+大娘 > aunt;
+歌曲 > song;
+弧形 > arch;
+輪軸 > axle;
+帆船 > sail;
+卑下 > base;
+標識 > mark;
+帳篷 > tent;
+瘦長 > slim;
+花邊 > lace;
+填滿 > cram;
+塊狀 > lump;
+標誌 > sign;
+雹子 > hail;
+諾亞 > noah;
+規章 > rule;
+標記 > sign;
+外套 > coat;
+長襪 > hose;
+團隊 > team;
+從中 > from;
+長袍 > gown;
+雄性 > male;
+睫毛 > lash;
+強姦 > rape;
+照料 > tend;
+採邑 > fief;
+接近 > near;
+皮膚 > skin;
+掠過 > flit;
+緩慢 > slow;
+基礎 > base;
+網架 > rack;
+規矩 > rule;
+灰色 > gray;
+細看 > peer;
+遲慢 > slow;
+褪色 > fade;
+適應 > suit;
+敗壞 > ruin;
+部分 > part;
+眼淚 > tear;
+苔蘚 > moss;
+形像 > form;
+剝掉 > pare;
+郵件 > mail;
+步子 > step;
+追求 > seek;
+表露 > show;
+瞑想 > muse;
+擦掉 > wipe;
+遊戲 > game;
+節點 > node;
+夫人 > lady;
+廚師 > cook;
+捲軸 > reel;
+高飛 > soar;
+散出 > shed;
+巢穴 > lair;
+阿曼 > oman;
+廠子 > yard;
+索然 > dull;
+剛強 > firm;
+真正 > real;
+躲避 > shun;
+廚子 > cook;
+熱力 > heat;
+廣大 > vast;
+鳥嘴 > beak;
+基準 > data;
+簽証 > visa;
+鳴叫 > hoot;
+堅決 > firm;
+許多 > many;
+灰白 > grey;
+收割 > reap;
+網孔 > mesh;
+拳頭 > fist;
+歌唱 > sing;
+雜亂 > mess;
+冷淡 > cold;
+骨頭 > bone;
+剛好 > just;
+壁助 > help;
+掉落 > flop;
+詩人 > bard;
+落下 > fall;
+表象 > idea;
+陵墓 > tomb;
+舒適 > cozy;
+英畝 > acre;
+步伐 > pace;
+檔案 > file;
+簸蕩 > roll;
+帶有 > have;
+歌兒 > song;
+接縫 > seam;
+幫忙 > help;
+結成 > form;
+行走 > walk;
+冰橇 > sled;
+公牛 > bull;
+城池 > city;
+粗砂 > grit;
+公爵 > duke;
+要有 > need;
+膳食 > meal;
+躲藏 > hide;
+菜單 > menu;
+橫樑 > beam;
+術語 > term;
+遲了 > late;
+剛勁 > bold;
+衚衕 > lane;
+艾絨 > moxa;
+計劃 > plan;
+按語 > note;
+真實 > true;
+痛苦 > pain;
+花瓶 > vase;
+其次 > next;
+機智 > tact;
+傾聽 > hark;
+棕閭 > palm;
+公正 > just;
+平坦 > flat;
+臀部 > butt;
+鐘頭 > hour;
+操切 > rash;
+坦然 > calm;
+要得 > good;
+炸彈 > bomb;
+座位 > seat;
+芯片 > chip;
+回聲 > echo;
+鐵銹 > rust;
+屋頂 > roof;
+堡壘 > fort;
+具有 > have;
+這兒 > here;
+解凍 > thaw;
+生長 > grow;
+堅定 > firm;
+巴掌 > palm;
+瘢痕 > scar;
+帶子 > band;
+長槍 > pike;
+六月 > june;
+這個 > this;
+門栓 > bolt;
+蠕蟲 > worm;
+僱用 > hire;
+圓盤 > disk;
+地獄 > hell;
+阿們 > amen;
+蠕虫 > worm;
+盤子 > tray;
+筆錢 > fund;
+路邊 > curb;
+灌木 > bush;
+視圖 > view;
+撇去 > skim;
+農奴 > serf;
+城市 > city;
+堅固 > firm;
+小馬 > colt;
+兵戎 > arms;
+光束 > beam;
+標明 > mark;
+複本 > copy;
+蟾蜍 > toad;
+農場 > farm;
+盒子 > case;
+國王 > king;
+帳單 > bill;
+草坪 > lawn;
+草地 > lawn;
+搶奪 > snap;
+血管 > vein;
+軍火 > arms;
+跛足 > lame;
+房間 > room;
+規劃 > plan;
+腳跟 > heel;
+跡象 > mark;
+規則 > rule;
+公平 > fair;
+鎮靜 > calm;
+價款 > cost;
+樣式 > type;
+損害 > harm;
+模式 > mode;
+盟友 > ally;
+兜帽 > hood;
+巨大 > huge;
+工夫 > work;
+疼痛 > ache;
+跳蚤 > flea;
+樓廂 > loft;
+膝蓋 > knee;
+修補 > mend;
+屁話 > shit;
+灰塵 > dust;
+偷看 > peep;
+模子 > mold;
+疤痕 > scar;
+地方 > area;
+兔子 > hare;
+小路 > lane;
+鏈路 > link;
+甘蔗 > cane;
+掌擊 > slap;
+差勁 > poor;
+低音 > bass;
+溜走 > slip;
+甜菜 > beet;
+捲曲 > curl;
+測驗 > test;
+用膳 > dine;
+笑話 > joke;
+山羊 > goat;
+競賽 > race;
+笨蛋 > fool;
+岩石 > rock;
+公告 > post;
+工具 > tool;
+甚至 > even;
+略碼 > code;
+跌落 > fall;
+潮濕 > damp;
+較少 > less;
+百合 > lily;
+腰肉 > loin;
+地帶 > zone;
+表格 > form;
+閣下 > sire;
+龍骨 > keel;
+轉動 > turn;
+其余 > rest;
+潮流 > tide;
+保羅 > paul;
+色彩 > tint;
+嘲笑 > jeer;
+潮汐 > tide;
+捲帶 > tape;
+啤酒 > beer;
+潛水 > dive;
+鍍金 > gild;
+小船 > boat;
+什麼 > what;
+指標 > norm;
+衝撞 > dash;
+岩漿 > lava;
+握住 > grip;
+地域 > area;
+鼴鼠 > mole;
+製作 > make;
+土壤 > soil;
+小羊 > lamb;
+接吻 > kiss;
+良好 > good;
+策略 > plot;
+衰弱 > weak;
+漩渦 > eddy;
+土地 > land;
+亞麻 > flax;
+哺養 > feed;
+圈套 > trap;
+籃圈 > ring;
+鏈結 > link;
+膽汁 > gall;
+地區 > area;
+柔軟 > soft;
+漏洞 > hole;
+採伐 > fell;
+當時 > then;
+借款 > loan;
+袖口 > cuff;
+招收 > hire;
+現金 > cash;
+香草 > herb;
+嚴峻 > grim;
+疹子 > rash;
+秘魯 > peru;
+稅關 > pike;
+生活 > life;
+僧侶 > monk;
+打獵 > hunt;
+拖拉 > haul;
+拱形 > arch;
+抱有 > have;
+圍住 > gird;
+棍棒 > club;
+聲譽 > fame;
+自己 > self;
+拍打 > flap;
+拍手 > clap;
+債務 > debt;
+聽見 > hear;
+飾釘 > stud;
+小牛 > calf;
+血塊 > gore;
+浪頭 > wave;
+偏差 > bias;
+傾倒 > pour;
+骰子 > dice;
+負載 > load;
+折斷 > snap;
+老闆 > boss;
+聖詩 > hymn;
+催促 > urge;
+鋪設 > pave;
+租金 > rent;
+打死 > kill;
+風險 > risk;
+枯萎 > wilt;
+用戶 > user;
+浸透 > soak;
+疲倦 > tire;
+膠帶 > tape;
+賢能 > sage;
+海軍 > navy;
+臭味 > fume;
+偶像 > idol;
+手杖 > cane;
+海豹 > seal;
+跨度 > span;
+溫暖 > warm;
+季節 > time;
+果肉 > pulp;
+小時 > hour;
+投射 > dart;
+黃金 > gold;
+命運 > fate;
+字節 > byte;
+海角 > cape;
+嘆息 > sigh;
+唧筒 > pump;
+略去 > omit;
+哺育 > feed;
+羅馬 > rome;
+考試 > exam;
+手掌 > palm;
+肥皂 > soap;
+意見 > view;
+倍塔 > beta;
+尾巴 > tail;
+贅疣 > wart;
+悠閒 > ease;
+伯爵 > earl;
+周遊 > tour;
+梨子 > pear;
+尺寸 > size;
+頸項 > neck;
+琵琶 > lute;
+案文 > text;
+膠卷 > film;
+銀行 > bank;
+游泳 > swim;
+虧缺 > wane;
+借出 > lend;
+富有 > rich;
+係小 > tiny;
+品脫 > pint;
+宗派 > sect;
+不遜 > rude;
+馴服 > tame;
+不過 > only;
+不遂 > fail;
+尖峰 > peak;
+滾動 > roll;
+貧窮 > poor;
+小島 > isle;
+主要 > main;
+束縛 > bind;
+束緊 > gird;
+薄霧 > mist;
+清澈 > fair;
+策劃 > plot;
+豬肉 > pork;
+何時 > when;
+容易 > easy;
+下跌 > fall;
+黃蜂 > wasp;
+口頭 > oral;
+罰金 > fine;
+令狀 > writ;
+蕨類 > fern;
+費用 > cost;
+告誡 > warn;
+蘆葦 > reed;
+抓住 > grab;
+板皮 > slab;
+脆弱 > weak;
+核心 > core;
+頭部 > head;
+格式 > form;
+深深 > deep;
+決鬥 > duel;
+豆腐 > tofu;
+懶惰 > idle;
+滴下 > drip;
+扁坯 > slab;
+例子 > case;
+咒罵 > damn;
+脖子 > neck;
+同輩 > peer;
+玩笑 > joke;
+藤蔓 > vine;
+侍女 > maid;
+蜂房 > hive;
+戒子 > ring;
+滑倒 > slip;
+溶化 > melt;
+游戲 > game;
+學期 > term;
+馬廄 > barn;
+亞當 > adam;
+翅膀 > wing;
+伊朗 > iran;
+主義 > \-ism;
+麥芽 > malt;
+密室 > cell;
+狹谷 > glen;
+窩巢 > nest;
+牡鹿 > hart;
+風箏 > kite;
+名詞 > noun;
+存根 > stub;
+時間 > time;
+派系 > sect;
+現款 > cash;
+碼頭 > dock;
+釀造 > brew;
+藍色 > blue;
+安息 > rest;
+聖歌 > hymn;
+飽滿 > full;
+哭泣 > weep;
+食物 > food;
+慾望 > lust;
+史詩 > epic;
+一般 > same;
+小丘 > hill;
+情節 > plot;
+穿帶 > wear;
+休息 > rest;
+須要 > must;
+松樹 > pine;
+薔薇 > rose;
+亞洲 > asia;
+家園 > home;
+憐憫 > pity;
+暗藏 > hide;
+牛飲 > gulp;
+賺得 > earn;
+資料 > data;
+豎琴 > harp;
+一群 > gang;
+果斷 > firm;
+種族 > race;
+黑痣 > mole;
+音調 > tone;
+洞穴 > cave;
+板條 > lath;
+上絃 > wind;
+哀泣 > wail;
+貴族 > lord;
+哈欠 > yawn;
+浪潮 > wave;
+禮物 > gift;
+各自 > each;
+豬油 > lard;
+錫安 > zion;
+獵物 > prey;
+快速 > fast;
+靈魂 > soul;
+犯規 > foul;
+宰制 > rule;
+乃爾 > thus;
+飼料 > feed;
+油膏 > balm;
+班房 > jail;
+龐大 > huge;
+港口 > port;
+斑點 > spot;
+一碗 > bowl;
+大麻 > hemp;
+浮標 > buoy;
+想法 > idea;
+家伙 > chap;
+交接 > join;
+後面 > rear;
+天鵝 > swan;
+會漏 > leak;
+整齊 > tidy;
+昇起 > rise;
+商品 > good;
+卑鄙 > base;
+犄角 > horn;
+母馬 > mare;
+字型 > font;
+安全 > safe;
+種子 > seed;
+孤單 > lone;
+程式 > form;
+木桶 > cask;
+羹湯 > soup;
+印證 > seal;
+木板 > slab;
+吹牛 > brag;
+木材 > wood;
+飾帶 > sash;
+老撾 > laos;
+朦朧 > blur;
+靠近 > near;
+虛弱 > weak;
+消息 > news;
+課題 > task;
+期望 > hope;
+深厚 > deep;
+主機 > core;
+鼻子 > nose;
+珠子 > bead;
+旅遊 > trip;
+穩健 > firm;
+部隊 > army;
+上漲 > rise;
+泰然 > calm;
+齧咬 > gnaw;
+稀少 > rare;
+黑暗 > dark;
+波特 > baud;
+野禽 > fowl;
+暈眩 > daze;
+奔逃 > flee;
+黎明 > dawn;
+治癒 > cure;
+意思 > idea;
+某些 > some;
+意念 > idea;
+繁雜 > many;
+意志 > will;
+稱呼 > call;
+書桌 > desk;
+強風 > gale;
+雄鹿 > buck;
+麻木 > numb;
+會晤 > meet;
+黃昏 > dusk;
+項目 > item;
+韁繩 > rein;
+唯一 > only;
+雲雀 > lark;
+燒開 > boil;
+穀倉 > barn;
+李子 > plum;
+職位 > post;
+野生 > wild;
+否決 > veto;
+沙發 > sofa;
+波浪 > wave;
+一樣 > same;
+他們 > they;
+泡沫 > foam;
+步驟 > step;
+老婆 > wife;
+主意 > plan;
+青蛙 > frog;
+本子 > book;
+牛肉 > beef;
+豐富 > rich;
+七月 > july;
+銷售 > sell;
+上昇 > rise;
+哎呀 > damn;
+鞭笞 > flog;
+一服 > dose;
+天賦 > gift;
+談話 > talk;
+豆子 > bean;
+媽媽 > mama;
+同樣 > same;
+磚瓦 > tile;
+敏銳 > keen;
+油油 > oily;
+波束 > beam;
+包裝 > pack;
+法案 > bill;
+污痕 > blot;
+鉤子 > hook;
+印章 > seal;
+靜脈 > vein;
+知道 > know;
+猛撞 > slam;
+遼闊 > vast;
+故鄉 > home;
+面罩 > veil;
+從而 > thus;
+忙碌 > busy;
+鞭痕 > welt;
+邊鋒 > wing;
+酸痛 > ache;
+廣闊 > wide;
+神情 > look;
+亞丁 > aden;
+獨奏 > solo;
+沐浴 > bath;
+最好 > best;
+猖披 > wild;
+咀嚼 > chew;
+外袍 > robe;
+誓詞 > oath;
+動詞 > verb;
+玩偶 > doll;
+誓言 > oath;
+薄暮 > dusk;
+纖細 > fine;
+下巴 > chin;
+新聞 > news;
+獅子 > lion;
+更多 > more;
+增長 > grow;
+只有 > only;
+呆子 > fool;
+暴徒 > thug;
+汽水 > soda;
+面積 > area;
+命名 > name;
+段落 > part;
+短襪 > sock;
+引證 > cite;
+鈕帶 > bond;
+前面 > fore;
+陣風 > gust;
+編輯 > edit;
+死記 > cram;
+惡劣 > vile;
+流動 > flow;
+會合 > meet;
+毛線 > yarn;
+北約 > nato;
+重擊 > bang;
+派出 > send;
+𠱃 > thin;
+池沼 > pool;
+步調 > gait;
+繩索 > rope;
+通風 > airy;
+恐懼 > fear;
+碎片 > chip;
+線路 > line;
+一套 > suit;
+卡片 > card;
+類型 > type;
+包紮 > bind;
+中午 > noon;
+武裝 > arms;
+薄弱 > weak;
+一堆 > pile;
+變換 > vary;
+蒼白 > pale;
+水滴 > drop;
+緩解 > ease;
+有些 > some;
+月亮 > moon;
+年頭 > year;
+礦山 > mine;
+道路 > road;
+洗刷 > wash;
+陸軍 > army;
+收藏 > keep;
+擠進 > tuck;
+上司 > boss;
+領導 > lead;
+水池 > pond;
+電線 > wire;
+一吹 > puff;
+毛皮 > pelt;
+烏鴉 > crow;
+勞累 > toil;
+運費 > fare;
+壁虱 > tick;
+撥開 > poke;
+設計 > plan;
+迷陣 > maze;
+吝嗇 > mean;
+一半 > half;
+頂峰 > peak;
+藥丸 > pill;
+星期 > week;
+水槽 > sink;
+缺少 > lack;
+世仇 > feud;
+撞鎖 > lock;
+鞭撻 > lash;
+陰謀 > plot;
+厭恨 > hate;
+遇見 > meet;
+明星 > star;
+不一 > vary;
+謀求 > seek;
+露營 > camp;
+毒物 > pest;
+暖和 > warm;
+一些 > some;
+鞭打 > whip;
+叫囂 > hoot;
+為首 > head;
+求愛 > woo;
+同位 > par;
+露水 > dew;
+受到 > get;
+可以 > can;
+酒廊 > bar;
+博得 > win;
+及其 > and;
+石油 > oil;
+時代 > age;
+毯子 > rug;
+年紀 > age;
+套子 > cap;
+破布 > rag;
+魚鰭 > fin;
+強拉 > tug;
+經由 > via;
+墨水 > ink;
+設法 > try;
+間諜 > spy;
+眼睛 > eye;
+此時 > now;
+如何 > how;
+終端 > end;
+眼界 > ken;
+幼獸 > cub;
+離子 > ion;
+焦油 > tar;
+退潮 > ebb;
+火腿 > ham;
+陰暗 > dim;
+緊抱 > hug;
+總和 > sum;
+規率 > law;
+隱密 > sly;
+砍伐 > hew;
+刺探 > pry;
+芸芸 > all;
+色調 > hue;
+假髮 > wig;
+途徑 > way;
+前夕 > eve;
+堅果 > nut;
+先生 > sir;
+欄圈 > pen;
+橡樹 > oak;
+茶杯 > cup;
+親屬 > kin;
+拖車 > tow;
+填充 > pad;
+帽子 > hat;
+搖擺 > wag;
+眼前 > now;
+刀口 > cut;
+樅樹 > fir;
+用途 > use;
+甜酒 > rum;
+眼下 > now;
+出價 > bid;
+襯墊 > pad;
+傳真 > fax;
+苦惱 > ail;
+腳趾 > toe;
+拖船 > tow;
+骨罈 > urn;
+發怒 > mad;
+軟毛 > fur;
+臂膀 > arm;
+輕打 > tap;
+搶劫 > rob;
+兒子 > son;
+扯裂 > rip;
+小費 > tip;
+榆樹 > elm;
+啜飲 > sip;
+工作 > job;
+援助 > aid;
+肋骨 > rib;
+蝙蝠 > bat;
+龍頭 > tap;
+手臂 > arm;
+混雜 > mix;
+地圖 > map;
+鬆弛 > sag;
+生病 > ill;
+袋子 > bag;
+餡餅 > pie;
+射線 > ray;
+鋤頭 > hoe;
+鋸開 > saw;
+老鼠 > rat;
+果醬 > jam;
+衣夾 > peg;
+圍兜 > bib;
+拖把 > mop;
+么點 > ace;
+小狗 > pup;
+貨車 > van;
+戰爭 > war;
+點頭 > nod;
+肥胖 > fat;
+對準 > aim;
+噴射 > jet;
+傢伙 > guy;
+舉動 > act;
+麋鹿 > elk;
+木釘 > peg;
+瓦斯 > gas;
+驢子 > ass;
+男孩 > boy;
+所有 > all;
+鑰匙 > key;
+哼聲 > hum;
+久遠 > old;
+飛蟲 > bug;
+筆尖 > nib;
+麥酒 > ale;
+修女 > nun;
+便帽 > cap;
+會費 > due;
+尼姑 > nun;
+乾草 > hay;
+借債 > owe;
+懇求 > beg;
+屢加 > ply;
+飛翔 > fly;
+扇子 > fan;
+腐壞 > rot;
+空氣 > air;
+但是 > but;
+藝術 > art;
+安放 > lay;
+嗚咽 > sob;
+染料 > dye;
+付款 > pay;
+不良 > bad;
+贏得 > win;
+頌詞 > ode;
+乾燥 > dry;
+告終 > end;
+汽車 > car;
+海灣 > bay;
+耳朵 > ear;
+位元 > bit;
+五月 > may;
+何人 > who;
+燕麥 > oat;
+氣車 > bus;
+末期 > end;
+母雞 > hen;
+哀愁 > sad;
+礦石 > ore;
+哀怨 > sad;
+太陽 > sun;
+怕羞 > coy;
+杯子 > cup;
+謊話 > lie;
+謊言 > lie;
+零頭 > odd;
+任何 > any;
+淨值 > net;
+奔跑 > run;
+奔走 > run;
+流感 > flu;
+哎喲 > hey;
+現今 > now;
+暗淡 > dim;
+是的 > yes;
+一排 > row;
+方舟 > ark;
+新興 > new;
+上帝 > god;
+而今 > now;
+可是 > but;
+汽油 > gas;
+爆聲 > pop;
+罪惡 > sin;
+收費 > fee;
+母羊 > ewe;
+法律 > law;
+怎樣 > how;
+雞蛋 > egg;
+不善 > bad;
+鰻魚 > eel;
+天空 > sky;
+悲傷 > sad;
+床鋪 > bed;
+並且 > and;
+別針 > pin;
+縫紉 > sew;
+一切 > all;
+通通 > all;
+平鍋 > pan;
+放置 > put;
+年邁 > old;
+母牛 > cow;
+如果 > if;
+還是 > or;
+的話 > if;
+光碟 > cd;
+要是 > if;
+若是 > if;
+嚇聲 > ho;
+或者 > or;
+我的 > my;
+假如 > if;
+我們 > we;
+啊呀 > oh;
+斧頭 > ax;
+一但 > if;
+一個 > a;
+㡎 > the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 > name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+䐞 > the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+珪 > a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+㺺 > a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 > to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+㨧 > wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 > in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+䚫 > ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+笐 > bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 > name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 > a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+賨 > tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+禫 > sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 > an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 > a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+衈 > the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 > to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 > a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+絥 > to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 > to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 > a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+瑄 > a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+䬤 > to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+䥯 > a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 > a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+䎭 > a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+筓 > a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+㮲 > a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+䵻 > a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+玠 > large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+䂜 > rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+㡃 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+裎 > to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 > the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+䪐 > something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+䇭 > containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 > a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 > to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+䤞 > a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 > a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 > a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 > a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+䃘 > simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 > to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+獯 > a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 > sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+䕽 > the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+郜 > name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+䍿 > a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 > a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 > capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 > a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 > to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 > name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鷴 > silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+蟕 > a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+㬆 > posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+㔳 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鞝 > the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+蔛 > a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+䰙 > an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 > a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 > a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 > to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+峋 > ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 > smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+羗 > tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+丣 > ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 > something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 > a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 > to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 > the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 > a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 > the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+衩 > the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 > a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+䶦 > upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 > to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+噞 > the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 > used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 > name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 > to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+䄛 > service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 > an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 > hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 > to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㮞 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 > a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 > a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+钲 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+鉦 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+䪳 > slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+䞋 > to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 > slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 > to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 > the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 > an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 > name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 > a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+狽 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 > used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+狈 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+汨 > mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 > a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+簈 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+箳 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 > a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+䳚 > a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 > the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+䃾 > to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 > fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 > name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 > space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 > used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+炝 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+熗 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+弮 > a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䪖 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 > the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+䡞 > leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 > a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 > capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 > to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 > name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 > a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 > a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+郌 > name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+耰 > toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 > gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+䪃 > wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 > an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 > to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 > ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 > a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 > kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 > a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 > thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 > fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 > after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 > bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 > a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+蠲 > the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 > a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+䡴 > carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 > walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 > slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 > to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 > lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 > jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 > a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 > to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+砀 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+虒 > an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 > a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+碭 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+冋 > a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 > use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 > a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 > name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 > a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䍫 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 > a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 > to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+㶻 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+甾 > ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+禡 > a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+礟 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+䯠 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䯙 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 > food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 > a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+䈱 > an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 > half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 > the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 > a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+呀 > particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+靷 > the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 > to\-supervise\-to\-confine\-a\-government\-establishment;
+坫 > a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+䴽 > a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 > to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 > leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+䡇 > the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 > to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 > the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 > a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 > containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 > cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 > a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 > a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 > wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 > to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 > a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 > fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 > hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 > get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 > the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 > a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+㟗 > name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+伽 > transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 > straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+漎 > a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+檾 > grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+䰌 > to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 > tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+䚙 > a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䌤 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 > an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 > sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 > rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 > to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 > a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 > roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 > ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 > generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 > pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 > deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 > the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+衅 > consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 > name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+齉 > stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+褯 > children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+梠 > a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 > a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 > a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 > the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 > horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 > name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 > a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 > dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 > a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 > a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 > a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 > whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 > official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 > guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 > a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㲣 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲙 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㧋 > to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 > young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+㙱 > earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+喁 > the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 > to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 > the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+軾 > horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+萆 > the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+簠 > an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+䲰 > a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+䝥 > to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 > the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+㯮 > a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+㔍 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+璜 > a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+諬 > to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+猹 > wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 > a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 > an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 > used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+䶛 > to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䳅 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 > a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 > saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+䗽 > a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 > a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䈛 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 > to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+㽩 > connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+㹃 > two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+㶟 > an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+㲈 > the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 > a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 > name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+㟢 > the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 > children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+㔽 > a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 > to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 > a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+畲 > to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 > round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+粔 > cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 > to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+乤 > first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 > in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 > extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 > name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 > name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 > courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 > to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 > name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 > chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 > a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 > light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 > numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㿉 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 > hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 > flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 > name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 > a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 > name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 > the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 > bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 > a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+㙫 > a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 > name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+钧 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 > concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 > concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 > a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 > meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+騲 > the\-female\-of\-certain\-animals\-such\-as\-horses;
+鈞 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+蝥 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+珓 > two\-hemispherical\-objects\-used\-in\-divination;
+敧 > to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 > large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 > the\-place\-where\-the\-supreme\-stores\-his\-books;
+䱁 > a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 > sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 > a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 > leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+䦹 > name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 > living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 > name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䣁 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䢹 > name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 > a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 > to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+䈐 > an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 > luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 > mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 > big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 > deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 > to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 > publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 > the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 > to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 > to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㢆 > living\-space\-for\-one\-family\-in\-ancient\-times;
+㝙 > the\-third\-of\-the\-twelve\-terrestrial\-branches;
+㙻 > living\-space\-for\-one\-family\-in\-ancient\-times;
+乎 > interrogative\-or\-exclamatory\-final\-particle;
+澄 > purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 > a\-final\-particle\-used\-to\-express\-admiration;
+梢 > pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 > a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 > octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+欤 > a\-final\-particle\-used\-to\-express\-admiration;
+唼 > speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+邴 > name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+䶘 > the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 > horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 > to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 > a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 > wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 > name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 > name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䢸 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䡿 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䡼 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 > name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 > shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 > an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 > the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 > straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 > to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+㾼 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㾯 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 > seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 > a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶡 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 > name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+㮫 > a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 > the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 > to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+㛶 > do\-not\-care\-about\-appearance\-and\-deportment;
+㛧 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+㚔 > instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 > the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+娅 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+鮠 > a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+胑 > the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 > an\-ancient\-device\-for\-working\-with\-numbers;
+滝 > onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+婭 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+䳵 > a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 > a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 > to\-wait\-for\-something\-tohappen\-immediately;
+䣤 > name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 > name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 > name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 > sound\-of\-carts\-or\-stones\-knocking\-together;
+䡏 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䡌 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䠀 > to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 > name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 > to\-speak\-recklessly\-or\-without\-forethought;
+䓥 > sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 > the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 > to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 > container\-for\-grains\-used\-in\-ancient\-times;
+䇯 > a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+㼱 > to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 > even\-measuring\-board\-for\-pecks\-and\-bushels;
+㨐 > to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 > a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+珈 > an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 > marine\-monster\-which\-can\-change\-its\-shape;
+斛 > dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 > district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 > the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 > to\-sort\-out\-the\-stalks\-used\-in\-divination;
+韍 > a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+鏞 > a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 > a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+虋 > asparagus\-a\-variety\-of\-red\-stalked\-millet;
+廞 > to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 > a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 > wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 > sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+丂 > obstruction\-of\-breath\-as\-it\-seeks\-release;
+䰿 > a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+䢿 > name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 > the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 > scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 > a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 > soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 > silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 > grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 > show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 > to\-steady\-by\-putting\-something\-underneath;
+㻲 > a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+㪪 > to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 > wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 > a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 > concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+踣 > to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 > embroidered\-official\-or\-sacrificial\-robe;
+峄 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+闗 > a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 > a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+薩 > transliteration\-of\-''sat''\-in\-''bodhisattva;
+膰 > to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+瑌 > a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 > land\-impregnated\-with\-salt\-from\-the\-tide;
+嶧 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+䵞 > ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䰼 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 > use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 > to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 > decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䝩 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 > a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 > lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 > ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 > decorations\-put\-on\-the\-mane\-or\-horsehair;
+䊿 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䈕 > the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 > a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 > to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 > damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 > a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 > decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 > a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 > eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 > one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 > a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 > to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 > to\-get\-something\-with\-both\-raising\-hands;
+㧚 > the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 > to\-cover\-something\-with\-a\-piece\-of\-cloth;
+㡋 > a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 > the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 > a\-local\-government\-post\-in\-ancient\-times;
+㙟 > low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+喏 > respectful\-reply\-of\-assent\-to\-superiors;
+笏 > tablet\-held\-by\-someone\-having\-authority;
+趼 > callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+饝 > to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+裍 > a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+籪 > a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 > spasms\-or\-convulsions\-in\-young\-children;
+瑲 > tinkling\-sound\-tinkling\-of\-pendant\-gems;
+弝 > the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+䥜 > protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+䙖 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䙀 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䏫 > in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 > traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 > fine\-silk\-fabric\-of\-bright\-white\-colour;
+䋿 > a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 > a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 > a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+㿹 > jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 > earthenware\-or\-pottery\-with\-big\-opening;
+㵻 > to\-perspire\-from\-embarrassment\-or\-shame;
+㭩 > a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 > to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 > to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+㘊 > the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 > an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 > a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+啧 > interjection\-of\-approval\-or\-admiration;
+捺 > to\-press\-down\-heavily\-with\-the\-fingers;
+傣 > the\-dai\-minority\-living\-in\-south\-china;
+鸩 > a\-bird\-resembling\-the\-secretary\-falcon;
+淝 > name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 > to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 > a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 > type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 > cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 > the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 > a\-fragrant\-plant\-the\-root\-is\-medicinal;
+鴆 > a\-bird\-resembling\-the\-secretary\-falcon;
+驆 > used\-in\-transliterating\-buddhist\-books;
+駏 > offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+鉌 > the\-bells\-on\-the\-cart\-in\-ancient\-china;
+軔 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+詧 > to\-examine\-into\-judicially\-to\-find\-out;
+綳 > a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 > the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 > triennial\-sacrifice\-to\-one''s\-ancestors;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+斴 > the\-sound\-of\-water\-flowing\-among\-rocks;
+崑 > kunlun\-mountains\-in\-jiang\-su\-province\.;
+嘖 > interjection\-of\-approval\-or\-admiration;
+䰘 > to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 > white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 > ancient\-punishment\-of\-shaving\-the\-head;
+䩸 > fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 > a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 > a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 > cooking\-utensils\-used\-in\-ancient\-times;
+䢇 > a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 > to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 > to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 > short\-leggings\-drawn\-over\-the\-trousers;
+䖿 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䖽 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 > a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 > weed\-or\-grass\-with\-narrow\-thick\-glades;
+䍻 > young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 > a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 > a\-garment\-of\-one\-colour\-with\-no\-lining;
+䄪 > hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 > year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 > connection\-of\-the\-ditches\-or\-waterways;
+㼮 > to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 > the\-first\-of\-the\-four\-season\-\-\-\-spring;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+㤝 > palpitation\-or\-fluttering\-of\-the\-heart;
+㤑 > palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 > a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 > a\-large\-basket\-for\-holding\-cooked\-rice;
+笙 > small\-gourd\-shaped\-musical\-instrument;
+滕 > an\-ancient\-state\-in\-shandong\-province;
+镛 > large\-bell\-used\-as\-musical\-instrument;
+讵 > an\-interjection\-used\-express\-surprise;
+泔 > water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 > to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 > beams\-in\-the\-roof\-of\-a\-house\-confused;
+麅 > a\-small\-spotted\-deer\-found\-in\-n\.china;
+阼 > the\-steps\-leading\-to\-the\-eastern\-door;
+輗 > a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+詎 > interjection\-used\-to\-express\-surprise;
+缌 > coarse\-cotton\-cloth\-used\-for\-mourning;
+緦 > coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 > the\-sound\-of\-stones\-knocking\-together;
+犉 > an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+煝 > twisted\-paper\-for\-lighting\-cigarettes;
+帬 > the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 > a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+䱗 > a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 > a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 > a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 > to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 > an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 > the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 > the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 > to\-speak\-on\-the\-ideas\-of\-someone\-else;
+䖠 > a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 > the\-fighting\-sound\-made\-by\-two\-tigers;
+䎒 > flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 > decorations\-of\-the\-emperor''s\-carriage;
+䀛 > to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 > a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 > a\-large\-horizontal\-musical\-instrument;
+㺪 > an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 > endlessly\-long\-or\-vast\-water\-currents;
+㴩 > name\-of\-a\-stream\-in\-shandong\-province;
+㯘 > a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 > never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 > a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 > ancient\-mourning\-turban\-worn\-by\-women;
+㠑 > high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 > name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 > irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞿 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞹 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 > wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 > able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 > the\-character\-used\-in\-transliteration;
+㒿 > a\-kind\-of\-turban\-used\-in\-ancient\-time;
+弁 > conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 > tenth\-of\-the\-twelve\-earthly\-branches;
+旌 > banner\-or\-flag\-adorned\-with\-feathers;
+衮 > ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 > river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 > food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 > to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 > species\-of\-deer\-found\-in\-north\-china;
+绂 > ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 > the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 > ipomoea\-aquatica\-used\-as\-a\-vegetable;
+齈 > cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 > impure\-carbonate\-of\-sodium\-of\-natron;
+鶢 > a\-bird\-which\-frequents\-the\-sea\-shore;
+郪 > name\-of\-a\-stream\-in\-sichuan\-province;
+轞 > a\-vehicle\-for\-transporting\-prisoners;
+輹 > two\-pieces\-of\-wood\-underneath\-a\-cart;
+袞 > ceremonial\-dress\-worn\-by\-the\-emperor;
+芿 > grass\-which\-has\-been\-cut\-and\-regrown;
+胬 > a\-disease''s\-name\-in\-chinese\-medicine;
+紱 > ribbon\-or\-cord\-used\-attach\-ornaments;
+禊 > semi\-annual\-ceremony\-of\-purification;
+戥 > a\-small\-steelyard\-for\-weighing\-money;
+寍 > used\-as\-a\-term\-of\-comparison\:\-rather;
+咗 > verbal\-particle\-of\-perfective\-aspect;
+丱 > child''s\-hairstyle\-bound\-in\-two\-tufts;
+䮤 > one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 > name\-of\-a\-legendary\-ferocious\-animal;
+䪔 > cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 > name\-of\-a\-river\-in\-shandong\-province;
+䤌 > a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 > the\-appearance\-of\-height\-in\-a\-person;
+䠅 > hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 > a\-primitive\-tribe\-in\-southwest\-china;
+䝟 > a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 > an\-exclamation\-indicating\-admiration;
+䛓 > an\-official\-position\-in\-former\-times;
+䚘 > the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 > earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 > name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 > name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䑔 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 > to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 > unable\-to\-hear\-distinctly\-or\-clearly;
+䊠 > to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 > a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 > a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 > a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+䄫 > a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 > sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 > black\-colored\-grindstone\-or\-whestone;
+䃎 > name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂿 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䂹 > sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 > to\-look\-at\-something\-without\-winking;
+䁵 > newborn\-baby\-with\-the\-eyelids\-closed;
+㽅 > vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 > cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 > not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 > a\-fountain\-or\-spring\-flows\-downwards;
+㮯 > whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 > a\-blocks\-engraved\-for\-holding\-things;
+㫪 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+㟼 > name\-of\-a\-place\-in\-shandong\-province;
+㞔 > the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 > pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 > name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 > the\-long\-tail\-feathers\-which\-curl\-up;
+阮 > ancient\-musical\-instrument\:\-surname;
+喔 > descriptive\-of\-crying\-or\-of\-crowing;
+琏 > vessel\-used\-to\-hold\-grain\-offerings;
+邕 > former\-or\-literary\-name\-for\-nanning;
+魑 > a\-mountain\-demon\-resembling\-a\-tiger;
+昶 > a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 > a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 > a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 > to\-sacrifice\-on\-two\-successive\-days;
+邗 > an\-ancient\-place\-in\-the\-state\-of\-wu;
+龆 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齠 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齔 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+鐤 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+觭 > one\-turning\-up\-and\-one\-turning\-down;
+褱 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+褢 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+艜 > a\-long\-narrow\-vessel\-with\-two\-masts;
+臿 > to\-separate\-the\-grain\-from\-the\-husk;
+縲 > a\-chain\-or\-rope\-used\-bind\-criminals;
+絰 > white\-hempen\-cloth\-worn\-by\-mourners;
+碪 > stone\-slab\-used\-for\-washing\-clothes;
+盇 > why\-not\?\-would\-it\-not\-be\-better\-to\?;
+滫 > water\-in\-which\-rice\-has\-been\-boiled;
+檑 > logs\-rolled\-down\-in\-defense\-of\-city;
+棳 > small\-pillars\-that\-support\-the\-roof;
+帗 > a\-multicolored\-prop\-used\-in\-dancing;
+嘠 > the\-chirping\-of\-birds\-loud\-laughter;
+唄 > final\-particle\-of\-assertion\-pathaka;
+倻 > phonetic\-used\-in\-korean\-place\-names;
+䵺 > boundary\-between\-agricultural\-lands;
+䵹 > insects\-that\-are\-injurious\-to\-crops;
+䭍 > to\-live\-with\-another\-at\-his\-expense;
+䬥 > cooked\-food\-which\-has\-become\-mouldy;
+䬙 > to\-dance\-and\-toss\-about\-in\-the\-wind;
+䠫 > to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 > a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 > language\-of\-the\-savage\-or\-barbarian;
+䖺 > a\-legendary\-animal\-in\-ancient\-times;
+䖥 > insects\-that\-are\-injurious\-to\-crops;
+䒼 > a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 > a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 > to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 > name\-of\-a\-place\-in\-sichuan\-province;
+䍟 > a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 > a\-bamboo\-basket\-for\-food\-containers;
+䆎 > grass\-and\-grains\-producing\-no\-fruit;
+䄻 > a\-second\-time\-growing\-of\-rice\-plant;
+䀚 > to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 > carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 > name\-of\-a\-village\-in\-henan\-province;
+㷈 > embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 > vast\-and\-boundless\-of\-flowing\-water;
+㳕 > water\-in\-which\-rice\-has\-been\-washed;
+㯪 > carved\-or\-patterned\-window\-railings;
+㫀 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+璉 > vessel\-used\-to\-hold\-grain\-offerings;
+㠙 > a\-mountain\-paths\-name\-of\-a\-mountain;
+㓭 > to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 > a\-kind\-of\-punishment\-in\-han\-dynasty;
+袱 > a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 > to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 > a\-bamboo\-basket\-for\-carrying\-earth;
+肓 > region\-between\-heart\-and\-diaphragm;
+滦 > river\-and\-county\-in\-hebei\-province;
+郗 > city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 > two\-pieces\-of\-jade\-joined\-together;
+綦 > dark\-grey\.\-variegated\.\-superlative;
+麇 > general\-name\-for\-the\-hornless\-deer;
+璎 > a\-necklace\-made\-of\-precious\-stones;
+掾 > a\-general\-designation\-of\-officials;
+郇 > an\-ancient\-feudal\-state\-in\-shaanxi;
+龘 > the\-appearance\-of\-a\-dragon\-walking;
+鴽 > a\-species\-of\-bird\-resembling\-quail;
+鄫 > state\-in\-today''s\-shandong\-province;
+鄇 > a\-name\-of\-a\-town\-in\-henan\-province;
+迿 > to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 > great\-array\-of\-spears\-and\-chariots;
+輵 > great\-array\-of\-spears\-and\-chariots;
+輠 > grease\-pot\-hung\-under\-axle\-of\-cart;
+膲 > the\-three\-divisions\-of\-the\-viscera;
+紖 > a\-rope\-for\-leading\-cattle\-or\-horse;
+簣 > a\-bamboo\-basket\-for\-carrying\-earth;
+笮 > boards\-which\-support\-tiles\-on\-roof;
+砅 > cross\-stream\-by\-stepping\-on\-stones;
+瓔 > a\-necklace\-made\-of\-precious\-stones;
+璉 > a\-vessel\-used\-hold\-grain\-offerings;
+珱 > a\-necklace\-made\-of\-precious\-stones;
+玨 > two\-pieces\-of\-jade\-joined\-together;
+灤 > river\-and\-county\-in\-hebei\-province;
+梡 > tray\-for\-carrying\-sacrificial\-meat;
+挱 > to\-feel\-or\-fondle\-with\-the\-fingers;
+幵 > even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 > an\-ancient\-emperor''s\-mother''s\-name;
+囷 > round\-shaped\-storage\-bin\-for\-grain;
+䴙 > a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 > a\-carp\-like\-fish\-with\-chicken\-feet;
+䩗 > to\-rule\-by\-might\-rather\-than\-right;
+䢕 > a\-group\-of\-people\-walking\-together;
+䚡 > bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 > plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 > to\-dismember\-body\-of\-the\-livestock;
+䎎 > to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 > clay\-made\-blowing\-wind\-instruments;
+䈿 > belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 > a\-bamboo\-mat\-used\-in\-ancient\-times;
+䅚 > closely\-growing\-of\-the\-rice\-plants;
+䄶 > rice\-plant\-growing\-the\-second\-time;
+䁾 > red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 > to\-open\-the\-eyes\-with\-astonishment;
+㽛 > narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 > dogs\-wormed\-through\-a\-narrow\-place;
+㹢 > a\-large\-ape\-found\-in\-western\-china;
+㹜 > two\-dogs\-are\-barking\-to\-each\-other;
+㹉 > a\-legendary\-animal\-with\-three\-feet;
+㷦 > to\-open\-the\-eyes\-with\-astonishment;
+㶀 > deep\-and\-vast\-of\-the\-flowing\-water;
+㰶 > to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 > a\-wooden\-frame\-for\-carrying\-things;
+㡡 > screen\-to\-make\-a\-temporary\-kitchen;
+㠿 > a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 > nice\-white\-color\-and\-looks\-so\-good;
+㜵 > with\-a\-charming\-sprightly\-carriage;
+㚩 > with\-a\-charming\-sprightly\-carriage;
+㙈 > name\-of\-a\-place\-in\-shanxi\-province;
+㖡 > the\-birds\-singing\-during\-the\-night;
+㕺 > looks\-big\-outside\-but\-empty\-inside;
+㕄 > to\-apply\-knowledge\-to\-final\-causes;
+社 > god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 > large\-stringed\-musical\-instrument;
+楞 > used\-for\-ceylon\-in\-buddhist\-texts;
+喽 > used\-in\-onomatopoetic\-expressions;
+嚅 > talk\-indistinctly\-and\-falteringly;
+裱 > to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 > a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 > a\-fabulous\-creature\-like\-a\-turtle;
+呖 > used\-in\-onomatopoetic\-expressions;
+碡 > stone\-roller\-used\-to\-level\-fields;
+鄣 > name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 > grain\-offered\-in\-ritual\-sacrifice;
+簦 > large\-umbrella\-with\-a\-long\-handle;
+螓 > a\-small\-cicada\-with\-a\-square\-head;
+魊 > a\-mythical\-creature\-said\-hurl\-san;
+韐 > knee\-pad\-made\-of\-red\-dyed\-leather;
+軏 > cross\-bar\-at\-end\-of\-poles\-of\-cart;
+薀 > the\-hippuris\-or\-mare''s\-tail\-plant;
+蕰 > the\-hippuris\-or\-mare''s\-tail\-plant;
+聝 > to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 > to\-hoe\-up\-the\-earth\-around\-plants;
+簫 > musical\-instrument\-like\-pan\-pipes;
+簨 > a\-beam\-for\-hanging\-bells\-or\-drums;
+簘 > musical\-instrument\-like\-pan\-pipes;
+箾 > musical\-instrument\-like\-pan\-pipes;
+礳 > name\-of\-place\-in\-shan\-xi\-province;
+碫 > coarse\-stone\-\(used\-for\-whetstone\);
+璯 > jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 > a\-jade\-tube\-used\-as\-an\-instrument;
+玁 > a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+棟 > the\-main\-beams\-supporting\-a\-house;
+戠 > a\-sword\.\-potter''s\-clay\.\-to\-gather;
+嚦 > used\-in\-onomatopoetic\-expressions;
+嘍 > used\-in\-onomatopoetic\-expressions;
+呭 > final\-particle\-expressing\-consent;
+呡 > the\-corners\-of\-the\-mouth\-the\-lips;
+䶬 > hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 > a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 > general\-term\-for\-small\-bird\-group;
+䬗 > blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 > name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 > cooking\-utensil\-used\-in\-old\-times;
+䥬 > a\-musical\-instrument\-in\-old\-times;
+䣜 > name\-of\-a\-county\-in\-ancient\-times;
+䣖 > name\-of\-a\-county\-in\-ancient\-times;
+䣕 > name\-of\-a\-county\-in\-ancient\-times;
+䣌 > residence\-of\-a\-prince\-or\-nobility;
+䡝 > a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 > the\-protruded\-sides\-of\-a\-carriage;
+䠚 > to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 > the\-water\-is\-waving\-in\-the\-breeze;
+䕤 > name\-of\-a\-county\-in\-ancient\-times;
+䒧 > a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 > a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 > back\-center\-suture\-of\-the\-clothes;
+䋛 > the\-clustered\-embroidery\-patterns;
+䊖 > to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 > to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 > rocks\-clustered\-pile\-up\-togethers;
+䀿 > to\-have\-a\-casual\-and\-short\-glance;
+䀸 > to\-have\-a\-casual\-and\-short\-glance;
+㹗 > cattle\-and\-sheep\-have\-no\-children;
+㶲 > measuring\-unit\-for\-thermodynamics;
+㵺 > name\-of\-a\-stream\-in\-ancient\-times;
+㵐 > name\-of\-a\-river\-in\-hubei\-province;
+㵋 > name\-of\-a\-river\-in\-hunan\-province;
+㱒 > to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 > a\-place\-in\-today''s\-hunan\-province;
+㬈 > the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 > infested\-with\-bandits\-and\-robbers;
+㨘 > to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 > name\-of\-a\-mountain\-in\-county\-jian;
+㟸 > name\-of\-pavilion\-in\-ancient\-china;
+㟉 > name\-of\-pavilion\-in\-ancient\-china;
+㟂 > name\-of\-cape\-in\-shandong\-province;
+㚪 > to\-make\-a\-deceptive\-show\-of\-power;
+㒍 > utterly\-weary\-in\-body\-and\-spirits;
+㐌 > a\-tribe\-of\-savages\-in\-south\-china;
+捻 > to\-twist\-or\-nip\-with\-the\-fingers;
+戌 > eleventh\-of\-terrestrial\-branches;
+搓 > to\-rub\-or\-roll\-between\-the\-hands;
+尧 > a\-legendary\-ancient\-emperor\-sage;
+婶 > wife\-of\-father''s\-younger\-brother;
+掬 > to\-grasp\-or\-hold\-with\-both\-hands;
+幛 > scroll\-of\-silk\-or\-cloth\-presente;
+棂 > carved\-or\-patterned\-window\-sills;
+氲 > life\-giving\-influences\-of\-nature;
+蚝 > hairy\-and\-poisonous\-caterpillars;
+澧 > river\-in\-northern\-hunan\-province;
+筮 > divination\-with\-stalks\-of\-plants;
+笪 > a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 > fried\-round\-cakes\-of\-wheat\-flour;
+箐 > to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 > a\-door\-bar\-placed\-outside\-a\-door;
+仉 > surname\-of\-the\-mother\-of\-mencius;
+骾 > any\-object\-that\-sticks\-in\-throat;
+饊 > fried\-round\-cakes\-of\-wheat\-flour;
+醼 > offer\-food\-and\-wine\-one''s\-guests;
+輧 > curtained\-carriage\-used\-by\-women;
+軿 > curtained\-carriage\-used\-by\-women;
+軙 > a\-chinese\-family\-name\-to\-arrange;
+贁 > to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 > pearls\-or\-shells\-strung\-together;
+諊 > to\-make\-a\-judicial\-investigation;
+螆 > hairy\-and\-poisonous\-caterpillars;
+纙 > string\-on\-which\-coins\-are\-strung;
+糤 > fried\-round\-cakes\-of\-wheat\-flour;
+筴 > type\-of\-grass\-used\-in\-divination;
+琇 > coarse\-variety\-of\-jasper\-or\-jade;
+氳 > life\-giving\-influences\-of\-nature;
+櫺 > carved\-or\-patterned\-window\-sills;
+棫 > thorny\-shrub\-with\-yellow\-flowers;
+旓 > serrated\-edges\-on\-a\-chinese\-flag;
+嶲 > a\-name\-of\-an\-old\-town\-in\-sichuan;
+尭 > a\-legendary\-ancient\-emperor\-sage;
+嬸 > wife\-of\-father''s\-younger\-brother;
+塱 > place\-name\-in\-guangdong\-province;
+堯 > a\-legendary\-ancient\-emperor\-sage;
+剨 > sound\-of\-something\-being\-smashed;
+䵬 > black\-sound\-of\-the\-flowing\-water;
+䴍 > a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 > general\-term\-for\-a\-group\-of\-bird;
+䳰 > a\-bird\-resembling\-the\-wild\-goose;
+䳈 > a\-bird\-resembling\-the\-wild\-goose;
+䱙 > a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 > dressed\-hair\-in\-a\-horizontal\-way;
+䰉 > dressed\-hair\-in\-a\-horizontal\-way;
+䪬 > sound\-of\-pressing\-something\-down;
+䩬 > an\-ornamental\-item\-on\-a\-scabbard;
+䧵 > a\-bird\-like\-the\-secretary\-falcon;
+䦎 > a\-mechanical\-device\-for\-lead\-ore;
+䥾 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥱 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 > a\-speculum\-used\-in\-ancient\-times;
+䤷 > a\-lance\-with\-three\-or\-two\-points;
+䣢 > name\-of\-a\-place\-in\-ancient\-times;
+䣛 > name\-of\-a\-place\-in\-ancient\-times;
+䝁 > a\-kind\-of\-wild\-leguminous\-plants;
+䛶 > writings\-eulogizing\-adead\-person;
+䗤 > a\-kind\-of\-worm\-produced\-in\-water;
+䍰 > a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 > well\-boiled\-congee\-or\-rice\-gruel;
+䉈 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䈓 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 > to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 > ornaments\-of\-fine\-feather\-or\-fur;
+䅹 > a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 > crooked\-and\-winding\-of\-the\-grass;
+䄼 > name\-of\-a\-place\-in\-ancient\-times;
+䄷 > a\-measurement\-equal\-to\-120\-catty;
+䃪 > a\-platform\-for\-sacrificial\-rites;
+䂞 > a\-thorny\-tree\-about\-15\-feet\-high;
+㺜 > fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 > a\-fierce\-animal\-of\-the\-dog\-tribe;
+㹡 > a\-rush\-and\-impatient\-disposition;
+㸡 > board\-to\-block\-the\-water\-current;
+㸚 > scattered\-or\-dispersed\-and\-clear;
+㴭 > immeasurable\-depth\-or\-profundity;
+㳆 > name\-of\-a\-place\-in\-ancient\-times;
+㱨 > to\-prepare\-a\-body\-for\-the\-coffin;
+㬇 > name\-of\-a\-state\-in\-ancient\-china;
+㩽 > branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 > to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+㢲 > the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 > a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 > to\-have\-one''s\-ambition\-fulfilled;
+㚡 > standing\-without\-a\-straight\-back;
+㚉 > to\-make\-a\-profit\-on\-sell\-and\-buy;
+㙰 > name\-of\-a\-place\-in\-ancient\-times;
+㕣 > a\-marsh\-at\-the\-foot\-of\-the\-hills;
+们 > adjunct\-pronoun\-indicate\-plural;
+呢 > interrogative\-or\-emphatic\-final;
+楼 > building\-of\-two\-or\-more\-stories;
+药 > leaf\-of\-dahurian\-angelica\-plant;
+齎 > take\-in\-both\-hands\-and\-offer\-to;
+丈 > unit\-of\-length\-equal\-3\.3\-meters;
+挑 > a\-load\-carried\-on\-the\-shoulders;
+樓 > building\-of\-two\-or\-more\-stories;
+祝 > pray\-for\-happiness\-or\-blessings;
+杉 > various\-species\-of\-pine\-and\-fir;
+朧 > condition\-or\-appearance\-of\-moon;
+朦 > condition\-or\-appearance\-of\-moon;
+霸 > rule\-by\-might\-rather\-than\-right;
+箪 > small\-bamboo\-basket\-for\-holding;
+醤 > any\-jam\-like\-or\-paste\-like\-food;
+酱 > any\-jam\-like\-or\-paste\-like\-food;
+胧 > condition\-or\-appearance\-of\-moon;
+炕 > the\-brick\-bed\-in\-northern\-china;
+亥 > last\-of\-twelve\-earthly\-branches;
+粤 > guangdong\-and\-guangxi\-provinces;
+粽 > dumpling\-made\-of\-glutinous\-rice;
+陇 > mountain\-located\-between\-shanxi;
+闾 > village\-of\-twenty\-five\-families;
+郦 > place\-in\-today''s\-henan\-province;
+鞅 > leather\-strap\-over\-horse''s\-neck;
+邺 > place\-in\-today''s\-henan\-province;
+铡 > sickle\-for\-cutting\-grass\-or\-hay;
+骧 > gallop\-about\-with\-head\-uplifted;
+骢 > horse\-with\-a\-bluish\-white\-color;
+蛳 > kind\-of\-snail\-with\-spiral\-shell;
+邳 > a\-department\-in\-the\-state\-of\-lu;
+郢 > state\-in\-today''s\-hubei\-province;
+骖 > two\-outside\-ones\-in\-three\-horse;
+轸 > cross\-board\-at\-rear\-of\-carriage;
+箜 > ancient\-string\-music\-instrument;
+郐 > state\-in\-today''s\-henan\-province;
+轹 > run\-over\-something\-with\-vehicle;
+栝 > a\-builder''s\-frame\-for\-measuring;
+獍 > an\-animal\-which\-eats\-its\-mother;
+鼗 > small\-revolving\-drum\-with\-knobs;
+鼒 > large\-tripod\-caldron\-with\-small;
+鶖 > large\-waterfowl\-with\-naked\-head;
+驤 > gallop\-about\-with\-head\-uplifted;
+驄 > horse\-with\-a\-bluish\-white\-color;
+驂 > two\-outside\-ones\-in\-three\-horse;
+騄 > name\-of\-a\-legendary\-swift\-horse;
+駬 > name\-of\-a\-legendary\-swift\-horse;
+餖 > food\-item\-set\-out\-for\-show\-only;
+頣 > to\-view\-others\-with\-raised\-eyes;
+隴 > mountain\-located\-between\-shanxi;
+閭 > village\-of\-twenty\-five\-families;
+鍘 > sickle\-for\-cutting\-grass\-or\-hay;
+鋐 > state\-in\-today''s\-hubei\-province;
+醬 > any\-jam\-like\-or\-paste\-like\-food;
+酈 > place\-in\-today''s\-henan\-province;
+鄶 > state\-in\-today''s\-henan\-province;
+鄴 > place\-in\-today''s\-honan\-province;
+鄚 > place\-in\-today''s\-hebei\-province;
+郔 > place\-name\-in\-shandong\-province;
+邽 > name\-of\-a\-county\-in\-han\-dynasty;
+邶 > place\-in\-today''s\-henan\-province;
+轢 > run\-over\-something\-with\-vehicle;
+軫 > cross\-board\-at\-rear\-of\-carriage;
+軨 > lattice\-work\-on\-front\-and\-sides;
+踋 > the\-foot\-or\-feet\-cast\-of\-a\-play;
+覇 > rule\-by\-might\-rather\-than\-right;
+襭 > tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 > cotton\-clothes\-of\-a\-boy\-servant;
+衺 > slit\-in\-garment\-to\-aid\-movement;
+蠨 > a\-kind\-of\-spider\-with\-long\-legs;
+螣 > mythological\-wingless\-dragon\-of;
+螄 > kind\-of\-snail\-with\-spiral\-shell;
+苤 > brassica\-campestris\-subsp\.\-rapa;
+艕 > two\-boats\-fastened\-side\-by\-side;
+膫 > the\-fat\-covering\-the\-intestines;
+縗 > sackcloth\-worn\-on\-breast\-during;
+糉 > dumpling\-made\-of\-glutinous\-rice;
+粵 > guangdong\-and\-guangxi\-provinces;
+簞 > small\-bamboo\-basket\-for\-holding;
+篪 > a\-bamboo\-flute\-with\-seven\-holes;
+瞖 > a\-cataract\-or\-film\-over\-the\-eye;
+畤 > place\-for\-worshipping\-the\-haven;
+甗 > earthenware\-vessel\-in\-two\-parts;
+烳 > to\-travel\-by\-the\-light\-of\-torch;
+灕 > short\-name\-for\-guangxi\-province;
+沴 > foul\-and\-poisonous\-in\-confusion;
+樐 > a\-lookout\-turret\-on\-a\-city\-wall;
+棻 > kind\-of\-wood\-from\-which\-perfume;
+枌 > variety\-of\-elm\-with\-small\-seeds;
+垟 > clay\-sheep\-buried\-with\-the\-dead;
+咠 > to\-whisper\.\-to\-blame\-to\-slander;
+叧 > to\-cut\-meat\-off\-away\-from\-bones;
+冔 > cap\-worn\-during\-the\-yin\-dynasty;
+們 > adjunct\-pronoun\-indicate\-plural;
+亼 > to\-assemble\.\-to\-gather\-together;
+乄 > shime\:\-to\-find\-a\-place\-to\-dwell;
+䶵 > a\-bamboo\-flute\-with\-seven\-holes;
+䵸 > the\-toad\-that\-lives\-in\-the\-moon;
+䳡 > a\-kind\-of\-bird\-in\-ancient\-books;
+䲞 > a\-second\-general\-name\-for\-perch;
+䱌 > a\-second\-name\-for\-the\-globefish;
+䰝 > a\-large\-earthen\-pot\-for\-cooking;
+䰀 > dressed\-hair\-of\-a\-chinese\-woman;
+䮸 > to\-move\-slowly\-and\-then\-swiftly;
+䬻 > to\-entertain\-a\-departing\-friend;
+䪾 > to\-deal\-with\-affairs\-cautiously;
+䪍 > a\-container\-for\-bows\-and\-arrows;
+䨣 > leather\-to\-be\-moistened\-by\-rain;
+䦇 > dressed\-hair\-of\-a\-chinese\-woman;
+䣣 > name\-of\-a\-place\-name\-of\-a\-place;
+䟚 > to\-sit\-with\-the\-legs\-spread\-out;
+䜷 > fermented\-and\-seasoned\-soybeans;
+䜪 > name\-of\-a\-pavilion\-in\-old\-times;
+䛀 > reasonable\-authority\-statements;
+䘅 > a\-small\-gadflies\-and\-mosquitoes;
+䐃 > fat\-in\-the\-abdomen\-or\-intestine;
+䍛 > a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 > vegetable\-mixed\-with\-thick\-soup;
+䂲 > standard\-weights\-used\-in\-scales;
+䁰 > to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 > gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 > a\-gem\-or\-ornament\-on\-a\-scabbard;
+㯭 > a\-lookout\-turret\-on\-a\-city\-wall;
+㮇 > a\-builder''s\-frame\-for\-measuring;
+㬹 > tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 > the\-sun\-is\-shining\-on\-the\-water;
+㧽 > name\-of\-a\-county\-in\-han\-dynasty;
+轢 > run\-over\-something\-with\-vehicle;
+閭 > village\-of\-twenty\-five\-families;
+樓 > building\-of\-two\-or\-more\-stories;
+㥆 > indulgent\-and\-without\-restraint;
+㗘 > to\-bite\-the\-hard\-and\-solid\-food;
+㓢 > to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 > faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 > to\-go\-forward\-with\-eyes\-covered;
+幹 > trunk\-of\-tree\-or\-of\-human\-body;
+尺 > chinese\-measure\-approx\.\-''foot'';
+米 > hulled\-or\-husked\-uncooked\-rice;
+鹏 > fabulous\-bird\-of\-enormous\-size;
+喂 > interjection\-to\-call\-attention;
+潇 > sound\-of\-beating\-wind\-and\-rain;
+禹 > legendary\-hsia\-dynasty\-founder;
+斟 > to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 > the\-stem\-and\-calyx\-of\-a\-flower;
+阀 > powerful\-and\-influential\-group;
+楷 > model\-style\-of\-chinese\-writing;
+辄 > sides\-of\-chariot\-where\-weapons;
+俑 > wooden\-figure\-buried\-with\-dead;
+嘹 > used\-describe\-clarity\-of\-voice;
+轼 > horizontal\-wooden\-bar\-in\-front;
+馑 > time\-of\-famine\-or\-crop\-failure;
+伥 > ghost\-of\-one\-devoured\-by\-tiger;
+绶 > silk\-ribbon\-attached\-as\-a\-seal;
+鬈 > fine\-growth\-of\-hair\-curly\-hair;
+磔 > downward\-stroke\-slanting\-right;
+裢 > folding\-purse\-inserted\-in\-belt;
+枸 > kind\-of\-aspen\-found\-in\-sichuan;
+芊 > exuberant\-and\-vigorous\-foliage;
+鄄 > name\-of\-a\-district\-in\-shandong;
+鼹 > a\-kind\-of\-insectivorous\-rodent;
+莼 > an\-edible\-water\-plant\-brasenia;
+圬 > plaster\-over\-with\-layer\-of\-mud;
+莩 > membrane\-lining\-inside\-of\-reed;
+诶 > an\-exclamation\-of\-confirmation;
+褙 > paper\-or\-cloth\-pasted\-together;
+茌 > name\-of\-a\-district\-in\-shandong;
+鼴 > a\-kind\-of\-insectivorous\-rodent;
+鶋 > a\-sea\-bird\-with\-a\-white\-breast;
+鵬 > fabulous\-bird\-of\-enormous\-size;
+鯏 > a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饉 > time\-of\-famine\-or\-crop\-failure;
+饁 > carry\-meal\-to\-workers\-in\-field;
+閥 > powerful\-and\-influential\-group;
+鎫 > ornament\-over\-the\-horse''s\-head;
+輒 > sides\-of\-chariot\-where\-weapons;
+赙 > gift\-of\-money\-help\-pay\-funeral;
+賻 > gift\-of\-money\-help\-pay\-funeral;
+誒 > an\-exclamation\-of\-confirmation;
+詤 > to\-make\-wild\-statements\-to\-lie;
+褳 > folding\-purse\-inserted\-in\-belt;
+蘴 > young\-shoots\-of\-the\-rapeturnip;
+莝 > to\-chop\-straw\-fine\-for\-animals;
+腠 > between\-the\-skin\-and\-the\-flesh;
+翿 > streamer\-adorned\-with\-feathers;
+綬 > silk\-ribbon\-attached\-as\-a\-seal;
+筥 > round\-shaped\-bamboo\-basket\-for;
+痄 > scrofulous\-swellings\-and\-sores;
+玤 > a\-kind\-of\-gem\-inferior\-to\-jade;
+煠 > to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+瀟 > sound\-of\-beating\-wind\-and\-rain;
+潏 > fareshare\-reclaimed\-from\-river;
+漼 > having\-the\-appearance\-of\-depth;
+欞 > the\-lattice\-of\-a\-window\-a\-sill;
+曚 > twilight\-just\-before\-sun\-rises;
+斚 > a\-small\-cup\-of\-stone\-with\-ears;
+扊 > upright\-bar\-for\-fastening\-door;
+慜 > name\-of\-a\-monk\-in\-tang\-dynasty;
+崠 > place\-name\-in\-guangxi\-province;
+岽 > place\-name\-in\-guangxi\-province;
+岝 > name\-of\-a\-mountain\-in\-shandong;
+堭 > a\-dry\-moat\-outside\-a\-city\-wall;
+堎 > character\-used\-for\-place\-names;
+嚹 > a\-particle\-implying\-completion;
+匳 > ladies\-toilet\-case\-with\-mirror;
+刵 > punishment\-by\-cutting\-off\-ears;
+䲁 > general\-term\-of\-a\-kind\-of\-fish;
+䰚 > the\-top\-part\-of\-the\-rice\-gruel;
+䯵 > hair\-style\-for\-little\-children;
+䯤 > boneware\-used\-to\-comb\-the\-hair;
+䯒 > the\-upper\-part\-of\-the\-shinbone;
+䮔 > a\-young\-and\-fleet\-footed\-horse;
+䭺 > a\-horse\-to\-raise\-its\-head\-high;
+䫮 > to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 > the\-front\-and\-back\-of\-the\-neck;
+䧒 > steps\-leading\-up\-to\-a\-building;
+䤛 > component\-parts\-of\-a\-cross\-bow;
+䣹 > to\-brew\-10\-percent\-of\-the\-wine;
+䣵 > to\-brew\-the\-wine\-a\-second\-time;
+䣬 > the\-shiny\-colorful\-of\-the\-wine;
+䢾 > name\-of\-an\-ancient\-small\-state;
+䡃 > a\-tool\-for\-brushing\-the\-thread;
+䜲 > name\-of\-a\-village\-in\-old\-china;
+䘓 > thick\-blood\-of\-cattle\-and\-goat;
+䓿 > a\-second\-name\-for\-lotus\-flower;
+䓹 > to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 > the\-hem\-or\-border\-of\-a\-garment;
+䋴 > silk\-fabrics\-with\-mixed\-colors;
+䋳 > cloth\-or\-paper\-pasted\-together;
+䉤 > a\-bamboo\-ware\-for\-washing\-rice;
+䉛 > bamboo\-basket\-for\-washing\-rice;
+䉓 > mattress\-made\-of\-bamboo\-strips;
+䈹 > a\-bamboo\-ware\-for\-washing\-rice;
+䇬 > thin\-bamboo\-laths\-knitted\-sail;
+䇧 > to\-fill\-an\-opening\-with\-bamboo;
+䄡 > northern\-minority\-ethnic\-group;
+䃶 > rugged\-and\-uneven\-of\-the\-rocks;
+䃚 > rugged\-land\-of\-sand\-and\-pebble;
+䃂 > dull\-sound\-of\-the\-tolling\-bell;
+㼡 > a\-small\-jar\-with\-a\-small\-mouth;
+㵷 > turbulent\-flowing\-of\-the\-water;
+㵏 > having\-the\-appearance\-of\-depth;
+㲹 > the\-dry\-soil\-on\-the\-river\-side;
+㲝 > fine\-hair\-of\-birds\-and\-animals;
+㯅 > the\-branches\-growing\-downwards;
+㮂 > an\-appliance\-used\-to\-lift\-food;
+㬤 > wet\-clothes\-not\-completely\-dry;
+㪾 > to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 > to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 > a\-particle\-expressing\-surprise;
+㥋 > sound\-of\-the\-anguish\-of\-sorrow;
+㤯 > clever\-or\-smart\-in\-a\-small\-way;
+㤔 > to\-concede\-or\-submit\-willingly;
+㣇 > a\-kind\-of\-beast\-with\-long\-hair;
+㡞 > a\-sack\-used\-to\-feed\-the\-horses;
+㠣 > a\-mountain\-in\-jiangxi\-province;
+㞯 > the\-turning\-area\-of\-a\-mountain;
+㜆 > commonly\-known\-as\-mother\-in\-wu;
+㙚 > red\-colored\-hard\-and\-solid\-mud;
+㘞 > yelling\-sound\-of\-towing\-a\-boat;
+㔩 > hair\-ornments\-used\-in\-old\-time;
+㔀 > to\-brand\-criminals\-on\-the\-face;
+迦 > character\-for\-transliteration;
+庵 > buddhist\-monastery\-or\-nunnery;
+庚 > seventh\-of\-ten\-cyclical\-stems;
+趣 > what\-attracts\-one''s\-attention;
+畔 > boundary\-path\-dividing\-fields;
+夾 > be\-wedged\-or\-inserted\-between;
+辆 > numerary\-adjunct\-for\-vehicles;
+夹 > be\-wedged\-or\-inserted\-between;
+怔 > a\-disease\-resembling\-neurosis;
+陌 > foot\-path\-between\-rice\-fields;
+骆 > a\-white\-horse\-with\-black\-mane;
+楣 > crossbeam\-above\-or\-under\-gate;
+璧 > piece\-of\-jade\-with\-hole\-in\-it;
+膻 > rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 > pearl\-that\-is\-not\-quite\-round;
+唢 > flute\-like\-musical\-instrument;
+楂 > a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 > entertain\-victorious\-soldiers;
+矍 > look\-about\-in\-fright\-or\-alarm;
+擤 > to\-blow\-the\-nose\-with\-fingers;
+芡 > plant\-allied\-to\-the\-waterlily;
+籼 > non\-glutinous\-long\-grain\-rice;
+桡 > bent\-or\-twisted\-piece\-of\-wood;
+黻 > special\-pattern\-of\-embroidery;
+嵝 > goulou\-mountain\-peak\-in\-hunan;
+垭 > character\-used\-in\-place\-names;
+硖 > \<arch\>\-town\-in\-hebei\-province;
+邡 > name\-of\-a\-district\-in\-sichuan;
+讠 > simplified\-kangxi\-radical\-149;
+噻 > character\-used\-in\-translation;
+疬 > scrofulous\-lumps\-or\-swellings;
+蔟 > frame\-on\-which\-silkworms\-spin;
+垧 > variable\-unit\-of\-land\-measure;
+鬏 > a\-coiffure\-on\-top\-of\-the\-head;
+筘 > \(a\-measure\-of\-width\-of\-cloth\);
+缑 > cord\-binding\-on\-hilt\-of\-sword;
+簖 > bamboo\-trap\-for\-catching\-fish;
+庋 > a\-cupboard\-or\-pantry\-to\-store;
+甍 > rafters\-supporting\-roof\-tiles;
+駹 > black\-horse\-with\-a\-white\-face;
+駱 > a\-white\-horse\-with\-black\-mane;
+饎 > wine\-and\-food\-eaten\-with\-wine;
+釄 > wine\-brew\-for\-the\-second\-time;
+釁 > smear\-with\-blood\-in\-sacrifice;
+迧 > a\-chinese\-family\-name\-arrange;
+轘 > tear\-asunder\-between\-chariots;
+輛 > numerary\-adjunct\-for\-vehicles;
+輙 > sides\-of\-chariot\-were\-weapons;
+輌 > numerary\-adjunct\-for\-vehicles;
+詀 > garrulous\-to\-whisper\.\-to\-joke;
+訹 > to\-beguile\-with\-false\-stories;
+藊 > a\-kind\-of\-bean\-with\-flat\-pods;
+舠 > long\-narrow\-knife\-shaped\-boat;
+翣 > feathers\-used\-decorate\-coffin;
+縓 > orange\-or\-reddish\-yellow\-silk;
+緱 > cord\-binding\-on\-hilt\-of\-sword;
+糏 > rice\-grits\-left\-after\-hulling;
+篘 > a\-utensil\-used\-to\-filter\-wine;
+秈 > non\-glutinous\-long\-grain\-rice;
+硤 > \<arch\>\-town\-in\-hebei\-province;
+矰 > arrow\-with\-attached\-silk\-cord;
+癧 > scrofulous\-lumps\-or\-swellings;
+璣 > pearl\-that\-is\-not\-quite\-round;
+玃 > a\-large\-ape\-found\-in\-w\.\-china;
+猇 > the\-scream\-or\-roar\-of\-a\-tiger;
+牸 > the\-female\-of\-certain\-animals;
+滙 > waters\-converging\-to\-one\-spot;
+滘 > character\-used\-in\-place\-names;
+橈 > bent\-or\-twisted\-piece\-of\-wood;
+椊 > to\-fit\-a\-handle\-into\-a\-socket;
+暐 > the\-bright\-shining\-of\-the\-sun;
+昳 > the\-declining\-sun\-in\-the\-west;
+捬 > press\-down\-heavily\-with\-hands;
+抔 > take\-or\-hold\-up\-in\-both\-hands;
+嶁 > goulou\-mountain\-peak\-in\-hunan;
+崾 > place\-name\-in\-shanxi\-province;
+峫 > mountain\-in\-shandong\-province;
+姅 > woman\-at\-time\-of\-menstruation;
+壼 > palace\-corridor\-or\-passageway;
+壍 > moat\-around\-a\-city\.\-a\-channel;
+埡 > character\-used\-in\-place\-names;
+嗪 > character\-used\-in\-translation;
+嗩 > flute\-like\-musical\-instrument;
+啩 > particle\-implying\-probability;
+叐 > to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 > swastika\-fourth\-of\-auspicious;
+卍 > swastika\-fourth\-of\-auspicious;
+䶕 > irregular\-and\-prominent\-teeth;
+䵘 > dosen''t\-t\-stick\-to\-each\-other;
+䲵 > a\-general\-name\-of\-small\-birds;
+䯆 > small\-and\-thin\-piece\-of\-bones;
+䫲 > thin\-and\-sickly\-in\-appearance;
+䫤 > between\-the\-eyebrows\-and\-eyes;
+䫡 > a\-long\-shape\-of\-head\-and\-face;
+䫋 > female\-attendants\-or\-servants;
+䧐 > a\-mountain\-in\-shanxi\-province;
+䥣 > an\-instrument\-for\-boring\-wood;
+䥉 > the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 > wine\-made\-from\-glutinous\-rice;
+䤍 > rotten\-paste\-or\-soybean\-sauce;
+䠽 > height\-or\-stature\-of\-a\-person;
+䠱 > to\-walk\-slowly\-and\-cautiously;
+䟧 > sound\-of\-treading\-or\-stepping;
+䞇 > gifts\-to\-superiors\-or\-friends;
+䝽 > name\-of\-a\-person\-in\-old\-china;
+䝙 > a\-kind\-of\-animal\-like\-a\-tiger;
+䝗 > a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 > to\-speak\-on\-behalf\-of\-another;
+䘳 > a\-garment\-of\-single\-thickness;
+䏼 > what\-is\-left\-over\-of\-the\-food;
+䎢 > to\-measure\-by\-pints\-and\-pecks;
+䎑 > flying\-over\-the\-water\-surface;
+䍮 > young\-goat\-under\-one\-year\-old;
+䍂 > tools\-to\-draw\-water\-or\-liquid;
+䌿 > the\-breadth\-of\-cloth\-or\-paper;
+䌗 > the\-left\-over\-of\-drawing\-silk;
+䌈 > to\-get\-something\-with\-a\-lasso;
+䉥 > a\-small\-basket\-for\-chopsticks;
+䆺 > whirling\-of\-the\-flowing\-water;
+䅢 > mature\-or\-ripen\-of\-the\-grains;
+㿶 > the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 > carved\-window\-frame\-on\-a\-door;
+㹯 > a\-kind\-of\-animal\-like\-a\-tiger;
+㹂 > untamed\-and\-indocility\-cattle;
+㴄 > the\-water\-flowing\-in\-a\-turned;
+㰉 > the\-hazel\-nut\-or\-filbert\-tree;
+㭟 > torture\-used\-in\-ancient\-times;
+㫐 > distant\-and\-indistinguishable;
+㡻 > name\-of\-a\-small\-ancient\-state;
+㛐 > wife\-of\-one''s\-elder''s\-brother;
+㚆 > to\-do\-something\-in\-an\-old\-way;
+㖟 > to\-deliver\-over\-to\-personally;
+件 > numerary\-adjunct\-for\-article;
+吗 > final\-interrogative\-particle;
+麽 > interrogative\-final\-particle;
+矣 > particle\-of\-completed\-action;
+乒 > used\-with\-pong\-for\-ping\-pong;
+乓 > used\-with\-ping\-for\-ping\-pong;
+咚 > used\-as\-description\-of\-sound;
+琅 > a\-variety\-of\-white\-carnelian;
+孰 > who\?\-which\?\-what\?\-which\-one\?;
+戊 > fifth\-of\-ten\-celestial\-stems;
+渲 > add\-repeated\-washes\-of\-color;
+咫 > foot\-measure\-of\-zhou\-dynasty;
+饷 > rations\-and\-pay\-for\-soldiers;
+汶 > a\-river\-in\-shandong\-province;
+叁 > bank\-form\-of\-numeral\-''three'';
+壬 > ninth\-of\-ten\-celestial\-stems;
+柩 > coffin\-which\-contains\-corpse;
+桠 > the\-forking\-branch\-of\-a\-tree;
+甏 > a\-squat\-jar\-for\-holding\-wine;
+笞 > bamboo\-rod\-used\-for\-beatings;
+阗 > a\-place\-in\-xinjiang\-province;
+铉 > device\-for\-carrying\-a\-tripod;
+觥 > a\-cup\-made\-of\-horn\-obstinate;
+裣 > draw\-one''s\-hands\-into\-sleeve;
+崃 > mountain\-in\-sichuan\-province;
+罘 > screen\-used\-in\-ancient\-times;
+氇 > thick\-rough\-serge\-from\-tibet;
+埴 > soil\-with\-large\-clay\-content;
+昴 > one\-of\-the\-28\-constellations;
+菹 > salted\-or\-pickled\-vegetables;
+麼 > interrogative\-final\-particle;
+鵭 > a\-small\-bird\-with\-black\-neck;
+饟 > rations\-and\-pay\-for\-soldiers;
+餉 > rations\-and\-pay\-for\-soldiers;
+隒 > the\-appearance\-of\-a\-mountain;
+闐 > a\-place\-in\-xinjiang\-province;
+鉉 > device\-for\-carrying\-a\-tripod;
+醁 > a\-kind\-of\-green\-colored\-wine;
+邿 > a\-state\-in\-shandong\-province;
+轖 > framework\-of\-lattice\-on\-cart;
+觵 > a\-cup\-made\-of\-corn\-obstinate;
+襝 > draw\-one''s\-hands\-into\-sleeve;
+耇 > wrinkled\-face\-of\-the\-elderly;
+羴 > rank\-odour\-of\-sheep\-or\-goats;
+絃 > string\-on\-musical\-instrument;
+筻 > place\-name\-in\-hunan\-province;
+竚 > stand\-and\-wait\-for\-long\-time;
+睙 > to\-roll\-the\-eyeballs\-to\-look;
+瑂 > \(stone\-which\-resembles\-jade\);
+燺 > the\-dry\-at\-the\-fire\-to\-roast;
+灉 > a\-river\-in\-shandong\-province;
+瀔 > river\-name\-in\-henan\-province;
+汧 > name\-of\-a\-river\-in\-shangdong;
+氌 > thick\-rough\-serge\-from\-tibet;
+橵 > wood\-placed\-under\-roof\-tiles;
+椏 > the\-forking\-branch\-of\-a\-tree;
+曈 > twilight\-just\-before\-sunrise;
+旟 > an\-military\-flag\-oa\-standard;
+扨 > pick\-up\-with\-fork\-or\-pincers;
+扠 > pick\-up\-with\-fork\-or\-pincers;
+幰 > curtain\-at\-front\-of\-carriage;
+崍 > mountain\-in\-sichuan\-province;
+崀 > place\-name\-in\-hunan\-province;
+娀 > name\-of\-a\-concubine\-of\-di\-ku;
+埄 > whirling\-of\-dust\-in\-the\-wind;
+嗎 > final\-interrogative\-particle;
+䵠 > rushes\-used\-form\-making\-mats;
+䳍 > a\-kind\-of\-pheasant\-like\-bird;
+䱱 > a\-kind\-of\-slippery\-long\-fish;
+䮇 > black\-horse\-with\-white\-thigh;
+䬠 > the\-falling\-of\-snow\-and\-rain;
+䪭 > a\-kind\-of\-musical\-instrument;
+䪉 > metal\-decoration\-on\-a\-halter;
+䩡 > a\-kind\-of\-boots\-in\-old\-times;
+䦜 > name\-of\-a\-state\-in\-old\-times;
+䥺 > name\-of\-a\-double\-edged\-sword;
+䥕 > the\-blade\-or\-edge\-of\-a\-spade;
+䤉 > emptied\-the\-drink\-completely;
+䣡 > name\-of\-a\-place\-in\-old\-times;
+䣏 > name\-of\-a\-state\-in\-old\-times;
+䢼 > name\-of\-a\-state\-in\-old\-times;
+䡑 > the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 > with\-a\-symmetric\-well\-formed;
+䝵 > to\-thank\-with\-money\-or\-gifts;
+䙗 > a\-swaddling\-cloth\-for\-infant;
+䘻 > curtain\-on\-a\-carriage\-or\-car;
+䘺 > a\-seam\-which\-has\-come\-unsewn;
+䘵 > hissing\-sound\-of\-the\-clothes;
+䔛 > fibrous\-plant\-of\-which\-cloth;
+䓜 > salted\-or\-pickled\-vegetables;
+䑹 > a\-numerary\-adjunct\-for\-ships;
+䍠 > turban\-used\-in\-ancient\-times;
+䌋 > a\-herchief\-hung\-at\-the\-waist;
+䋩 > pretty\-and\-fine\-silk\-fabrics;
+䋏 > thick\-and\-big\-ropes\-or\-cords;
+䋋 > a\-kind\-of\-spring\-fishing\-net;
+䆶 > noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 > stalk\-of\-the\-panicled\-millet;
+䅭 > a\-variety\-of\-panicled\-millet;
+䅣 > a\-variety\-of\-panicled\-millet;
+䅌 > stalk\-of\-wheat\-or\-rice\-plant;
+䃋 > a\-fine\-stone\-resembling\-jade;
+䂵 > sound\-of\-bumping\-or\-striking;
+䂯 > a\-fine\-stone\-resembling\-jade;
+䂫 > noise\-of\-stones\-rolling\-down;
+䂥 > a\-fine\-stone\-resembling\-jade;
+䀳 > not\-to\-look\-straight\-forward;
+㾴 > the\-erythema\-of\-acne\-rosacea;
+㹥 > a\-yellow\-dog\-with\-black\-head;
+㹁 > generally\-called\-the\-animals;
+㵵 > swift\-currents\-of\-the\-stream;
+㵎 > a\-mountain\-stream\-or\-torrent;
+㴚 > the\-small\-ditch\-in\-the\-field;
+㰆 > an\-instrument\-to\-blow\-a\-fire;
+㰁 > a\-tree\-with\-slanted\-branches;
+㯳 > a\-kind\-of\-tool\-to\-adjust\-bow;
+㮴 > a\-numerary\-adjunct\-for\-ships;
+㥜 > unsuccessful\-in\-one''s\-career;
+㡱 > to\-cauterize\-by\-burning\-moxa;
+㠱 > to\-set\-with\-the\-legs\-clossed;
+㜌 > a\-different\-name\-for\-breasts;
+㙾 > hills\-with\-lots\-of\-big\-rocks;
+㙛 > a\-person''s\-name\-in\-old\-times;
+㗾 > to\-give\-vent\-to\-the\-feelings;
+㗆 > sound\-of\-the\-ringed\-pheasant;
+㓳 > use\-knife\-to\-split\-something;
+㑟 > insincere\-and\-cunning\-person;
+啦 > final\-particle\-of\-assertion;
+综 > arrange\-threads\-for\-weaving;
+拭 > wipe\-away\-stains\-with\-cloth;
+叮 > exhort\-or\-enjoin\-repeatedly;
+戟 > halberd\-with\-crescent\-blade;
+凛 > to\-shiver\-with\-cold\-or\-fear;
+栋 > main\-beams\-supporting\-house;
+髦 > flowing\-hair\-of\-young\-child;
+筝 > stringed\-musical\-instrument;
+丙 > third\-of\-the\-heavenly\-stems;
+沂 > river\-in\-southeast\-shandong;
+笈 > bamboo\-box\-used\-carry\-books;
+瓢 > ladle\-made\-from\-dried\-gourd;
+呗 > final\-particle\-of\-assertion;
+簧 > reed\-of\-woodwind\-instrument;
+蛟 > scaly\-dragon\-with\-four\-legs;
+敕 > an\-imperial\-order\-or\-decree;
+裟 > a\-cassock\-or\-robe\-of\-a\-monk;
+碴 > chipped\-edge\-of\-a\-container;
+瘴 > malaria\-pestilential\-vapors;
+纶 > green\-silk\-thread\-or\-tassel;
+罡 > the\-name\-of\-a\-certain\-stars;
+癸 > last\-of\-ten\-celestial\-stems;
+橇 > a\-sledge\-for\-transportation;
+皋 > the\-high\-land\-along\-a\-river;
+潍 > county\-in\-shandong\-province;
+洙 > name\-of\-a\-river\-in\-shandong;
+獠 > to\-hunt\-at\-night\-by\-torches;
+麒 > legendary\-auspicious\-animal;
+珩 > the\-top\-gem\-of\-the\-pendants;
+谥 > to\-confer\-posthumous\-titles;
+秫 > glutinous\-variety\-of\-millet;
+竽 > ancient\-woodwind\-instrument;
+崮 > \(element\-in\-mountain\-names\);
+愀 > to\-change\-one''s\-countenance;
+鄢 > name\-of\-a\-district\-in\-honan;
+癍 > unhealthy\-marks\-on\-the\-skin;
+鄞 > county\-in\-zhejiang\-province;
+雒 > black\-horse\-with\-white\-mane;
+旒 > fringes\-of\-pearls\-on\-crowns;
+琊 > a\-place\-in\-eastern\-shandong;
+蚨 > a\-kind\-of\-water\-beetle\-cash;
+毳 > fine\-hair\-or\-fur\-on\-animals;
+瘥 > to\-recover\-from\-any\-disease;
+渑 > name\-of\-a\-river\-in\-shandong;
+浈 > river\-in\-guangdong\-province;
+嘧 > \(phonetic\)\-as\-in\-pyrimidine;
+鵾 > a\-bird\-resembling\-the\-crane;
+鮨 > epinephelus\-septemfasciatus;
+飦 > well\-boiled\-congee\-or\-gruel;
+雊 > the\-crow\-of\-a\-male\-pheasant;
+隺 > a\-bird\-flying\-high\-ambition;
+醱 > to\-brew\-for\-the\-second\-time;
+醗 > to\-brew\-for\-the\-second\-time;
+酖 > wine\-with\-bird\-poison\-added;
+鄿 > county\-in\-xinjiang\-province;
+鄩 > county\-in\-shandong\-province;
+鄍 > a\-town\-in\-shandong\-province;
+蹚 > tread\-through\-mud\-and\-water;
+謚 > to\-confer\-posthumous\-titles;
+褘 > ceremonial\-gowns\-of\-a\-queen;
+蟰 > small\-spider\-with\-long\-legs;
+蛕 > the\-common\-intestinal\-worms;
+肷 > area\-between\-waist\-and\-hips;
+綸 > green\-silk\-thread\-or\-tassel;
+綜 > arrange\-threads\-for\-weaving;
+籄 > a\-basket\-for\-carrying\-earth;
+箏 > stringed\-musical\-instrument;
+箎 > ancient\-woodwind\-instrument;
+筎 > thin\-outside\-skin\-of\-bamboo;
+瞤 > to\-blink\-or\-twitch\-the\-eyes;
+皐 > the\-high\-land\-along\-a\-river;
+濰 > county\-in\-shandong\-province;
+澠 > name\-of\-a\-river\-in\-shandong;
+湞 > river\-in\-guangdong\-province;
+淠 > luxuriant\-\(of\-water\-plants\);
+浰 > attend\-\(official\-functions\);
+泑 > the\-vitreous\-glaze\-on\-china;
+殨 > to\-open\-as\-an\-ulcer\-or\-sore;
+枏 > a\-variety\-of\-evergreen\-tree;
+旈 > fringes\-of\-pearls\-on\-crowns;
+搇 > to\-press\-down\-with\-the\-hand;
+弸 > a\-bow\-stretched\-to\-the\-full;
+巠 > streams\-running\-underground;
+嵛 > county\-in\-shandong\-province;
+崳 > county\-in\-shandong\-province;
+崙 > kunlun\-mountains\-in\-jiangsu;
+崘 > kunlun\-mountains\-in\-jiangsu;
+崐 > kunlun\-mountains\-in\-jiangsu;
+堳 > land\-allotment\-feudal\-noble;
+噕 > to\-speak\-falsely\-or\-wrongly;
+噅 > to\-speak\-falsely\-or\-wrongly;
+丩 > to\-join\-or\-connect\-the\-vine;
+丒 > the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 > to\-extract\-by\-applying\-heat;
+䴳 > distiller''s\-grains\-or\-yeast;
+䴭 > distiller''s\-grains\-or\-yeast;
+䳞 > birds\-flying\-all\-directions;
+䳊 > a\-wild\-duck\-like\-water\-bird;
+䳃 > a\-kind\-of\-phoenix\-like\-bird;
+䳁 > a\-wild\-duck\-like\-water\-bird;
+䪷 > to\-toil\-or\-labor\-sedulously;
+䪇 > cushioned\-seat\-on\-a\-vehicle;
+䩿 > a\-big\-drum\-used\-in\-the\-army;
+䧘 > a\-low\-wall\-on\-the\-road\-side;
+䦲 > eaves\-of\-a\-ancestral\-temple;
+䤻 > heavy\-iron\-part\-of\-a\-plough;
+䣲 > to\-heat\-the\-wine\-over\-night;
+䢯 > to\-choose\-or\-select\-careful;
+䠋 > bell\-shaped\-with\-large\-base;
+䟮 > to\-crawl\-on\-hands\-and\-knees;
+䜸 > small\-pieces\-of\-bean\-stalks;
+䜇 > to\-speak\-not\-in\-a\-clear\-way;
+䚣 > crooked\-horns\-of\-the\-animal;
+䚜 > cattle\-with\-crosswise\-horns;
+䙣 > ragged\-garments\-or\-clothing;
+䙕 > clothes\-that\-have\-no\-lining;
+䙔 > clothes\-made\-of\-poor\-fabric;
+䙓 > the\-lower\-part\-of\-a\-garment;
+䘹 > clothes\-that\-have\-no\-lining;
+䘥 > the\-front\-of\-a\-chinese\-gown;
+䘣 > clothes\-that\-have\-no\-lining;
+䘁 > a\-blue\-green\-colored\-cicada;
+䗵 > a\-disease\-attacked\-silkworm;
+䕮 > flower\-of\-the\-chrysanthemum;
+䕦 > flower\-of\-the\-chrysanthemum;
+䔥 > common\-variety\-of\-artemisia;
+䔟 > shake\-and\-wave\-of\-the\-grass;
+䐼 > thin\-membrane\-of\-the\-throat;
+䐯 > ugly\-appearance\-of\-a\-person;
+䐑 > thin\-cut\-of\-the\-sliced\-meat;
+䍺 > a\-legendary\-goat\-like\-beast;
+䌼 > a\-kind\-of\-fine\-silk\-fabrics;
+䌄 > a\-rope\-for\-drawing\-up\-water;
+䋁 > a\-rope\-for\-drawing\-up\-water;
+䊞 > to\-roll\-round\-with\-the\-hand;
+䊕 > well\-boiled\-congee\-or\-gruel;
+䊈 > distiller''s\-grains\-or\-yeast;
+䉺 > deteriorated\-and\-become\-red;
+䉹 > name\-of\-a\-variety\-of\-bamboo;
+䉸 > slips\-of\-bamboo\-for\-writing;
+䉳 > name\-of\-a\-variety\-of\-bamboo;
+䉭 > name\-of\-a\-variety\-of\-bamboo;
+䉫 > name\-of\-a\-variety\-of\-bamboo;
+䉦 > name\-of\-a\-variety\-of\-bamboo;
+䉡 > name\-of\-a\-variety\-of\-bamboo;
+䉠 > name\-of\-a\-variety\-of\-bamboo;
+䉚 > name\-of\-a\-variety\-of\-bamboo;
+䉙 > name\-of\-a\-variety\-of\-bamboo;
+䉏 > name\-of\-a\-variety\-of\-bamboo;
+䉆 > name\-of\-a\-variety\-of\-bamboo;
+䉄 > name\-of\-a\-variety\-of\-bamboo;
+䉁 > name\-of\-a\-variety\-of\-bamboo;
+䈽 > name\-of\-a\-variety\-of\-bamboo;
+䈼 > name\-of\-a\-variety\-of\-bamboo;
+䈲 > a\-bamboo\-basket\-for\-fishing;
+䈯 > name\-of\-a\-variety\-of\-bamboo;
+䈭 > name\-of\-a\-variety\-of\-bamboo;
+䈣 > name\-of\-a\-variety\-of\-bamboo;
+䈢 > name\-of\-a\-variety\-of\-bamboo;
+䈡 > name\-of\-a\-variety\-of\-bamboo;
+䈝 > name\-of\-a\-variety\-of\-bamboo;
+䈘 > name\-of\-a\-variety\-of\-bamboo;
+䈗 > name\-of\-a\-variety\-of\-bamboo;
+䈖 > name\-of\-a\-variety\-of\-bamboo;
+䈏 > name\-of\-a\-variety\-of\-bamboo;
+䈍 > name\-of\-a\-variety\-of\-bamboo;
+䈌 > name\-of\-a\-variety\-of\-bamboo;
+䈋 > name\-of\-a\-variety\-of\-bamboo;
+䈊 > name\-of\-a\-variety\-of\-bamboo;
+䇺 > beans\-and\-peas\-collectively;
+䇵 > one\-of\-the\-wind\-instruments;
+䇪 > name\-of\-a\-variety\-of\-bamboo;
+䇞 > name\-of\-a\-variety\-of\-bamboo;
+䇛 > name\-of\-a\-variety\-of\-bamboo;
+䇙 > name\-of\-a\-variety\-of\-bamboo;
+䅪 > disease\-of\-the\-private\-part;
+䄰 > forty\-bundles\-of\-rice\-plant;
+䃇 > ink\-for\-imprinting\-of\-seals;
+䀑 > to\-gouge\-out\-an\-eye\-or\-eyes;
+㿀 > unhealthy\-marks\-on\-the\-skin;
+㽎 > the\-profundity\-of\-the\-harem;
+㼠 > a\-crock\-with\-narrow\-opening;
+㺬 > a\-large\-piece\-of\-jade\-stone;
+㺒 > barking\-of\-a\-frightened\-dog;
+㹖 > to\-feed\-animals\-with\-grains;
+㸒 > to\-absurd\-pursuit\-or\-desire;
+㮀 > tool\-to\-clear\-out\-the\-water;
+㭕 > a\-board\-for\-carrying\-things;
+㩛 > to\-roll\-round\-with\-the\-hand;
+㩆 > to\-be\-in\-full\-possession\-of;
+㨫 > to\-be\-in\-full\-possession\-of;
+崙 > kunlun\-mountains\-in\-jiangsu;
+㧕 > to\-feel\-or\-touch\-with\-hands;
+㧂 > a\-cave\-a\-hold\-in\-the\-ground;
+㦐 > a\-straightforward\-character;
+㥴 > do\-not\-care\-about\-something;
+駱 > white\-horse\-with\-black\-mane;
+㢬 > a\-bow\-stretched\-to\-the\-full;
+㡵 > roof\-of\-the\-house\-connected;
+㠟 > a\-mountain\-in\-ancient\-times;
+㛽 > to\-walk\-slowly\-like\-a\-woman;
+㛮 > wife\-of\-one''s\-elder\-brother;
+㓈 > sound\-of\-flying\-or\-speeding;
+㒫 > choked\-and\-unable\-to\-breath;
+㒖 > the\-root\-stock\-of\-the\-lotus;
+畦 > sections\-in\-vegetable\-farm;
+町 > raised\-path\-between\-fields;
+囁 > move\-lips\-as\-when\-speaking;
+伦 > normal\-human\-relationships;
+嘛 > final\-exclamatory\-particle;
+萨 > buddhist\-gods\-or\-immortals;
+桐 > name\-applied\-various\-trees;
+蒂 > peduncle\-or\-stem\-of\-plants;
+紺 > dark\-blue\-or\-reddish\-color;
+棵 > numerary\-adjunct\-for\-trees;
+株 > numerary\-adjunct\-for\-trees;
+哉 > final\-exclamatory\-particle;
+憋 > to\-suppress\-inner\-feelings;
+孜 > be\-as\-diligent\-as\-possible;
+粱 > better\-varieties\-of\-millet;
+峒 > mountain\-in\-gansu\-province;
+榨 > to\-press\-or\-extract\-juices;
+嗫 > move\-lips\-as\-when\-speaking;
+鄱 > county\-and\-lake\-in\-jiangxi;
+菠 > spinach\-and\-similar\-greens;
+淞 > name\-of\-a\-river\-in\-jiangsu;
+淄 > river\-in\-shandong\-province;
+菏 > river\-in\-shandong\-province;
+悱 > to\-be\-desirous\-of\-speaking;
+漯 > river\-in\-northern\-shandong;
+蕙 > species\-of\-fragrant\-orchid;
+滁 > district\-in\-anhui\-province;
+狁 > a\-tribe\-of\-scythian\-nomads;
+酢 > toast\-one''s\-host\-with\-wine;
+衿 > collar\-or\-lapel\-of\-garment;
+嶝 > path\-leading\-up\-a\-mountain;
+旃 > silk\-banner\-with\-bent\-pole;
+齑 > break\-or\-smash\-into\-pieces;
+绀 > dark\-blue\-or\-reddish\-color;
+脘 > internal\-cavity\-of\-stomach;
+镒 > measure\-of\-weight\-for\-gold;
+眭 > evil\-look\-of\-deep\-set\-eyes;
+锖 > the\-color\-of\-the\-a\-mineral;
+邙 > mountain\-in\-henan\-province;
+塍 > raised\-path\-between\-fields;
+敫 > ancient\-musical\-instrument;
+泺 > river\-in\-shandong\-province;
+萑 > grass\-used\-for\-making\-mats;
+觯 > wine\-goblet\-made\-from\-horn;
+舣 > to\-moor\-a\-boat\-to\-the\-bank;
+齏 > break\-or\-smash\-into\-pieces;
+馵 > horse\-with\-white\-back\-legs;
+飣 > display\-food\-for\-show\-only;
+韲 > break\-or\-smash\-into\-pieces;
+闒 > upper\-story\-door\-or\-window;
+鎰 > measure\-of\-weight\-for\-gold;
+銁 > a\-weight\-of\-thirty\-cattics;
+醊 > to\-pour\-wine\-in\-a\-libation;
+郿 > county\-in\-shaanxi\-province;
+郳 > state\-in\-shandong\-province;
+郠 > place\-in\-shandong\-province;
+郚 > towns\-in\-shandong\-province;
+郕 > state\-in\-shandong\-province;
+郈 > place\-in\-shandong\-province;
+邠 > county\-in\-shaanxi\-province;
+輤 > a\-pall\-to\-cover\-the\-hearse;
+踒 > to\-slip\-and\-sprain\-a\-blimb;
+觶 > wine\-goblet\-made\-from\-horn;
+覐 > a\-sleep\-to\-realize\-to\-feel;
+虡 > support\-structure\-for\-bell;
+薾 > luxuriant\-growth\-of\-flower;
+蔕 > peduncle\-or\-stem\-of\-plants;
+茈 > a\-plant\-yielding\-a\-red\-dye;
+艤 > to\-moor\-a\-boat\-to\-the\-bank;
+膆 > the\-corp\-of\-a\-bird\-or\-fowl;
+罭 > drag\-net\-made\-of\-fine\-mesh;
+罏 > earthen\-stand\-for\-wine\-jug;
+罍 > large\-earthenware\-wine\-jar;
+繸 > hem\-or\-border\-of\-a\-garment;
+篟 > luxuriant\-growth\-of\-bamboo;
+窆 > to\-put\-a\-coffin\-in\-a\-grave;
+祲 > ominous\-or\-sinister\-spirit;
+癕 > loss\-of\-the\-sense\-of\-smell;
+畷 > raised\-path\-between\-fields;
+甼 > raised\-path\-between\-fields;
+璈 > ancient\-musical\-instrument;
+珛 > quickly\-deteriorating\-jade;
+濼 > river\-in\-shandong\-province;
+澷 > water\-overflowing\-diffused;
+渮 > river\-in\-shandong\-province;
+毩 > a\-leather\-ball\-for\-kicking;
+榃 > raised\-path\-between\-fields;
+揹 > carry\-things\-on\-one''s\-back;
+揁 > sound\-of\-setting\-up\-a\-koto;
+峝 > mountain\-in\-gansu\-province;
+媧 > mythological\-snail\-goddess;
+囉 > exclamatory\-final\-particle;
+嘷 > the\-roaring\-of\-wild\-beasts;
+嘐 > final\-exclamatory\-particle;
+剞 > carving\-or\-engraving\-knife;
+冏 > abutilon\-avicennae\-\(plant\);
+倫 > normal\-human\-relationships;
+乫 > used\-in\-korean\-place\-names;
+䵆 > grains\-from\-the\-distillery;
+䴿 > grains\-from\-the\-distillery;
+䲯 > a\-kind\-of\-black\-small\-bird;
+䯓 > the\-head\-bone\-of\-livestock;
+䮶 > flock\-of\-horses\-stampeding;
+䮣 > a\-yellow\-with\-a\-white\-tail;
+䬱 > coarse\-grains\-such\-as\-corn;
+䩲 > a\-tool\-used\-to\-cut\-leather;
+䩚 > to\-mend\-the\-soles\-of\-shoes;
+䩘 > to\-mend\-the\-soles\-of\-shoes;
+䡦 > the\-empty\-space\-of\-a\-wheel;
+䠉 > to\-run\-away\-or\-escape\-from;
+䞑 > a\-red\-swelling\-of\-the\-skin;
+䛯 > the\-reasonable\-of\-speeking;
+䖅 > name\-of\-a\-variety\-of\-grass;
+䕿 > name\-of\-a\-variety\-of\-grass;
+䕼 > name\-of\-a\-variety\-of\-grass;
+䕶 > name\-of\-a\-variety\-of\-grass;
+䕵 > name\-of\-a\-variety\-of\-grass;
+䕳 > name\-of\-a\-variety\-of\-grass;
+䕱 > name\-of\-a\-variety\-of\-grass;
+䕭 > name\-of\-a\-variety\-of\-grass;
+䕛 > name\-of\-a\-variety\-of\-grass;
+䕗 > name\-of\-a\-variety\-of\-grass;
+䕕 > name\-of\-a\-variety\-of\-grass;
+䕔 > name\-of\-a\-variety\-of\-grass;
+䕓 > name\-of\-a\-variety\-of\-grass;
+䕒 > name\-of\-a\-variety\-of\-grass;
+䕍 > name\-of\-a\-variety\-of\-grass;
+䕊 > name\-of\-a\-variety\-of\-grass;
+䕈 > name\-of\-a\-variety\-of\-grass;
+䕇 > name\-of\-a\-variety\-of\-grass;
+䕅 > name\-of\-a\-variety\-of\-grass;
+䕀 > name\-of\-a\-variety\-of\-grass;
+䔻 > name\-of\-a\-variety\-of\-grass;
+䔸 > name\-of\-a\-variety\-of\-grass;
+䔶 > name\-of\-a\-variety\-of\-grass;
+䔴 > name\-of\-a\-variety\-of\-grass;
+䔲 > name\-of\-a\-variety\-of\-grass;
+䔱 > name\-of\-a\-variety\-of\-grass;
+䔰 > name\-of\-a\-variety\-of\-grass;
+䔮 > name\-of\-a\-variety\-of\-grass;
+䔭 > name\-of\-a\-variety\-of\-grass;
+䔪 > name\-of\-a\-variety\-of\-grass;
+䔡 > name\-of\-a\-variety\-of\-grass;
+䔝 > name\-of\-a\-variety\-of\-grass;
+䔙 > name\-of\-a\-variety\-of\-grass;
+䔔 > name\-of\-a\-variety\-of\-grass;
+䔒 > name\-of\-a\-variety\-of\-grass;
+䔎 > name\-of\-a\-variety\-of\-grass;
+䔌 > name\-of\-a\-variety\-of\-grass;
+䔅 > name\-of\-a\-variety\-of\-trees;
+䔄 > name\-of\-a\-variety\-of\-grass;
+䔁 > name\-of\-a\-variety\-of\-grass;
+䓽 > name\-of\-a\-variety\-of\-grass;
+䓼 > name\-of\-a\-variety\-of\-grass;
+䓺 > name\-of\-a\-variety\-of\-grass;
+䓳 > name\-of\-a\-variety\-of\-grass;
+䓣 > name\-of\-a\-variety\-of\-grass;
+䓢 > name\-of\-a\-variety\-of\-grass;
+䓟 > name\-of\-a\-variety\-of\-grass;
+䓓 > name\-of\-a\-variety\-of\-grass;
+䓐 > name\-of\-a\-variety\-of\-grass;
+䓎 > name\-of\-a\-variety\-of\-grass;
+䓊 > name\-of\-a\-variety\-of\-grass;
+䓉 > name\-of\-a\-variety\-of\-grass;
+䓂 > name\-of\-a\-variety\-of\-grass;
+䒵 > name\-of\-a\-variety\-of\-grass;
+䒴 > name\-of\-a\-variety\-of\-grass;
+䒱 > twigs\-of\-hemp\-used\-fo\-fuel;
+䒪 > name\-of\-a\-variety\-of\-grass;
+䒩 > name\-of\-a\-variety\-of\-grass;
+䒤 > name\-of\-a\-variety\-of\-grass;
+䒡 > name\-of\-a\-variety\-of\-grass;
+䒟 > name\-of\-a\-variety\-of\-grass;
+䒞 > name\-of\-a\-variety\-of\-grass;
+䒜 > name\-of\-a\-variety\-of\-grass;
+䒛 > name\-of\-a\-variety\-of\-grass;
+䒚 > name\-of\-a\-variety\-of\-grass;
+䒔 > name\-of\-a\-variety\-of\-grass;
+䎷 > an\-old\-man\-with\-white\-hair;
+䌠 > hold\-on\-to\-one''s\-own\-views;
+䋀 > shoes\-made\-of\-hemp\-or\-hair;
+䊮 > name\-of\-a\-variety\-of\-grain;
+䊬 > name\-of\-a\-variety\-of\-grain;
+䉂 > a\-basket\-for\-earth\-or\-soil;
+䇖 > rope\-made\-of\-bamboo\-strips;
+䆀 > to\-corrupt\-or\-be\-corrupted;
+䅾 > starting\-to\-put\-forth\-ears;
+䅬 > small\-bundle\-of\-rice\-plant;
+䁎 > to\-make\-a\-close\-inspection;
+䀊 > a\-kind\-of\-water\-containers;
+㼩 > concave\-channels\-of\-tiling;
+㺠 > a\-black\-ape\-with\-long\-tail;
+㺕 > the\-fighting\-sound\-of\-dogs;
+㹚 > sound\-of\-calling\-to\-a\-calf;
+㹙 > sound\-of\-calling\-to\-a\-calf;
+㷶 > to\-dry\-or\-warm\-near\-a\-fire;
+㷃 > fire\-burns\-for\-a\-long\-time;
+㴔 > the\-noise\-of\-flowing\-water;
+㴋 > deep\-and\-clear\-\-to\-urinate;
+㳧 > the\-water\-flowing\-from\-\.\.\.;
+㱽 > to\-hit\-or\-to\-strikeheavily;
+㱻 > diseases\-of\-dumb\-creatures;
+㱡 > the\-soul\-out\-of\-one''s\-body;
+㱔 > a\-small\-quantity\-or\-number;
+㯟 > foot\-of\-a\-hill\-or\-mountain;
+㭮 > a\-kind\-of\-liquor\-container;
+兀 > duplicate\-of\-big\-five\-a461;
+倫 > normal\-human\-relationships;
+阮 > ancient\-musical\-instrument;
+㦃 > perfect\-personal\-character;
+㥱 > to\-be\-desirous\-of\-speaking;
+㥍 > to\-bear\-jealous\-hatred\-for;
+㤬 > full\-of\-anger\-and\-vexation;
+㤎 > a\-model\-or\-typical\-example;
+㤄 > raging\-animosity\-or\-hatred;
+㣧 > the\-succession\-in\-a\-family;
+㣣 > to\-walk\-in\-an\-unsteady\-way;
+㢸 > device\-for\-regulating\-bows;
+㢶 > device\-for\-regulating\-bows;
+㢒 > an\-almost\-collapsing\-house;
+㜪 > name\-of\-a\-family\-or\-a\-clan;
+㜕 > relatives\-through\-marriage;
+㛲 > the\-hair\-on\-the\-human\-head;
+㚿 > a\-goddess''s\-name\-in\-legend;
+㙡 > a\-kind\-of\-eatable\-mushroom;
+㘹 > to\-spread\-soil\-on\-the\-road;
+㘤 > circle\-of\-the\-moving\-water;
+㖨 > indistinct\-nasal\-utterance;
+㒽 > a\-kind\-of\-cap\-for\-children;
+㐖 > a\-translated\-name\-of\-india;
+届 > numerary\-adjunct\-for\-time;
+屆 > numerary\-adjunct\-for\-time;
+谁 > who\?\-whom\?\-whose\?\-anyone\?;
+誰 > who\?\-whom\?\-whose\?\-anyone\?;
+阿 > prefix\-for\-people''s\-names;
+莢 > pods\-of\-leguminous\-plants;
+狄 > tribe\-from\-northern\-china;
+繰 > to\-reel\-silk\-from\-cocoons;
+漓 > river\-in\-guangxi\-province;
+咋 > question\-forming\-particle;
+麟 > female\-of\-chinese\-unicorn;
+渭 > name\-of\-a\-river\-in\-shanxi;
+芜 > luxurious\-growth\-of\-weeds;
+绎 > to\-unravel\-or\-unreel\-silk;
+璐 > beautiful\-variety\-of\-jade;
+韶 > music\-of\-the\-emperor\-shun;
+鬟 > dress\-hair\-in\-coiled\-knot;
+罂 > long\-necked\-jar\-or\-bottle;
+靳 > strap\-on\-a\-horse''s\-breast;
+淦 > river\-in\-jiangxi\-province;
+搡 > to\-push\-over\-or\-push\-back;
+艮 > seventh\-of\-eight\-diagrams;
+湟 > river\-in\-qinghai\-province;
+泸 > river\-in\-jiangxi\-province;
+荚 > pods\-of\-leguminous\-plants;
+猱 > a\-monkey\-with\-yellow\-hair;
+涪 > river\-in\-sichuan\-province;
+亳 > name\-of\-district\-in\-anhui;
+蔺 > rush\-used\-for\-making\-mats;
+琬 > the\-virtue\-of\-a\-gentleman;
+沩 > name\-of\-a\-river\-in\-shanxi;
+猗 > exclamation\-of\-admiration;
+鼙 > drum\-carried\-on\-horseback;
+蕲 > variety\-of\-artemisia\-seek;
+瓞 > young\-melons\-just\-forming;
+辁 > cart\-wheel\-with\-no\-spokes;
+酆 > name\-of\-zhou\-period\-state;
+麐 > female\-of\-chinese\-unicorn;
+鰼 > the\-weather\-or\-dojo\-loach;
+韔 > a\-wrapper\-or\-case\-for\-bow;
+陗 > a\-steep\-hill\.\-precipitous;
+鏾 > the\-trigger\-of\-a\-crossbow;
+鄠 > county\-in\-shanxi\-province;
+鄜 > county\-in\-shanxi\-province;
+鄎 > a\-place\-in\-henan\-province;
+郃 > county\-in\-shanxi\-province;
+輇 > cart\-wheel\-with\-no\-spokes;
+觷 > to\-process\-or\-carve\-horns;
+蝰 > vipera\-russelii\-siamensis;
+蘄 > variety\-of\-artemisia\-seek;
+蕪 > luxurious\-growth\-of\-weeds;
+葶 > draba\-nemerosa\-bebe\-carpa;
+芔 > a\-general\-term\-for\-plants;
+膥 > eggs\-of\-birds\-or\-reptiles;
+罌 > long\-necked\-jar\-or\-bottle;
+罃 > long\-necked\-jar\-or\-bottle;
+纑 > to\-soften\-hemp\-by\-boiling;
+繹 > to\-unravel\-or\-unreel\-silk;
+籩 > bamboo\-container\-for\-food;
+籝 > a\-tube\-to\-hold\-chopsticks;
+笾 > bamboo\-container\-for\-food;
+笎 > bamboo\-with\-black\-patches;
+禘 > imperial\-ancestor\-worship;
+礄 > place\-in\-sichuan\-province;
+璪 > pearl\-pendants\-on\-coronet;
+瑽 > tinkling\-of\-jade\-pendants;
+猲 > smoke\-or\-flames\-from\-fire;
+瀘 > river\-in\-jiangxi\-province;
+溎 > river\-in\-guangxi\-province;
+溈 > name\-of\-a\-river\-in\-shanxi;
+泜 > a\-river\-in\-hebei\-province;
+泒 > a\-river\-in\-hubei\-province;
+汭 > confluence\-of\-two\-streams;
+櫽 > shape\-wood\-by\-use\-of\-heat;
+晬 > first\-birthday\-of\-a\-child;
+悊 > wise\.\-to\-know\-intuitively;
+彍 > to\-draw\-a\-bow\-to\-the\-full;
+庅 > an\-interrogative\-particle;
+嬀 > name\-of\-a\-river\-in\-shanxi;
+䵵 > yellowish\-black\-and\-white;
+䵫 > light\-red\-yellowish\-black;
+䴛 > to\-make\-decoction\-of\-salt;
+䳷 > a\-second\-name\-for\-chicken;
+䳆 > a\-kind\-of\-species\-of\-myna;
+䰂 > a\-coiffure\-with\-a\-topknot;
+䯿 > a\-coiffure\-with\-a\-topknot;
+䯼 > a\-coiffure\-with\-a\-topknot;
+䯴 > a\-coiffure\-with\-a\-topknot;
+䯲 > a\-coiffure\-with\-a\-topknot;
+䮕 > horse\-with\-white\-forehead;
+䭨 > wine\-poured\-in\-a\-libation;
+䬽 > wine\-poured\-in\-a\-libation;
+䫀 > the\-lower\-end\-of\-the\-jaws;
+䩨 > a\-wrapper\-or\-case\-for\-bow;
+䩝 > to\-tan\-and\-soften\-leather;
+䤂 > a\-second\-name\-for\-vinegar;
+䣴 > to\-lose\-temper\-when\-drunk;
+䣆 > name\-of\-a\-county\-in\-gaomi;
+䢲 > to\-go\-all\-the\-way\-forward;
+䢮 > rapid\-marching\-or\-running;
+䢡 > to\-stamp\-the\-foot\-forward;
+䡹 > the\-low\-rear\-of\-a\-chariot;
+䡯 > sound\-of\-moving\-carriages;
+䡫 > sound\-of\-moving\-carriages;
+䡡 > to\-get\-up\-into\-a\-carriage;
+䡘 > sound\-of\-moving\-carriages;
+䡒 > sound\-of\-moving\-carriages;
+䠕 > rapid\-marching\-or\-running;
+䘸 > the\-lower\-front\-of\-a\-robe;
+䘒 > boy''s\-reproductive\-organs;
+䕄 > meat\-in\-the\-form\-of\-paste;
+䓋 > elm\-seeds\-\-\-\-used\-as\-food;
+䑢 > a\-knife\-shaped\-small\-boat;
+䑈 > meat\-to\-offer\-for\-worship;
+䍯 > gaot\-with\-different\-horns;
+䍢 > netted\-veined\-window\-sill;
+䋟 > the\-weight\-on\-a\-steelyard;
+䊶 > a\-rope\-for\-leading\-cattle;
+䉗 > a\-receptacle\-or\-container;
+䄸 > grains\-producing\-no\-fruit;
+䄒 > ripening\-of\-paddy\-or\-rice;
+䃁 > uneven\-or\-rugged\-terrains;
+䁔 > big\-eyes\-protuberant\-eyes;
+㿰 > durable\-and\-solid\-leather;
+㿂 > obstraction\-of\-the\-bowels;
+㾵 > a\-dark\-colored\-birth\-mark;
+㾜 > weak\-breath\-of\-a\-sick\-man;
+㽾 > a\-kind\-of\-woman''s\-disease;
+㻏 > tinkling\-of\-jade\-pendants;
+㺀 > a\-monkey\-with\-yellow\-hair;
+㸲 > a\-kind\-of\-mountain\-cattle;
+㷯 > smoke\-and\-dust\-everywhere;
+㶺 > the\-light\-or\-glow\-of\-fire;
+㶚 > name\-of\-a\-river\-in\-shanxi;
+㵽 > the\-strength\-of\-a\-current;
+㱥 > the\-evil\-spirits\-come\-out;
+㰦 > to\-breath\-with\-mouth\-open;
+㰔 > a\-kind\-of\-edible\-mushroom;
+㰎 > a\-wooden\-pestle\-or\-rammer;
+㭛 > a\-kind\-of\-climbing\-plants;
+㩠 > a\-fierce\-or\-bloody\-battle;
+麟 > female\-of\-chinese\-unicorn;
+㦛 > to\-walk\-in\-a\-composed\-way;
+㠝 > lofty\-and\-steep\-mountains;
+㠐 > high\-and\-pointed\-mountain;
+㞚 > to\-pile\-up\-layer\-by\-layer;
+㜯 > a\-word\-to\-designate\-woman;
+㜮 > to\-go\-beyond\-normal\-limit;
+㚓 > tie\-beams\-of\-a\-small\-boat;
+㘌 > to\-laugh\-without\-stopping;
+㗦 > a\-loud\-and\-confused\-noise;
+㗚 > vexingly\-verbose\-or\-wordy;
+㗕 > the\-crowing\-of\-a\-pheasant;
+㖄 > sound\-of\-calling\-chickens;
+㕚 > claws\-of\-birds\-or\-animals;
+㐳 > high\-and\-level\-on\-the\-top;
+蜀 > name\-of\-an\-ancient\-state;
+洛 > river\-in\-shanxi\-province;
+叔 > father''s\-younger\-brother;
+絹 > kind\-of\-thick\-stiff\-silk;
+罩 > basket\-for\-catching\-fish;
+夷 > ancient\-barbarian\-tribes;
+砰 > sound\-of\-crashing\-stones;
+哎 > interjection\-of\-surprise;
+朔 > first\-day\-of\-lunar\-month;
+揣 > put\-things\-under\-clothes;
+嵋 > omei\-mountain\-in\-sichuan;
+邹 > name\-of\-an\-ancient\-state;
+缉 > to\-sew\-in\-close\-stitches;
+绢 > kind\-of\-thick\-stiff\-silk;
+噶 > used\-in\-transliterations;
+汕 > basket\-for\-catching\-fish;
+掰 > to\-break\-with\-both\-hands;
+霆 > a\-sudden\-peal\-of\-thunder;
+漳 > name\-of\-a\-river\-in\-henan;
+汾 > river\-in\-shanxi\-province;
+巳 > sixth\-of\-twelve\-branches;
+汴 > name\-of\-a\-river\-in\-henan;
+嗝 > cackling\-of\-fowls\-to\-gag;
+姘 > illicit\-sexual\-relations;
+霏 > falling\-of\-snow\-and\-rain;
+郸 > county\-in\-hebei\-province;
+呦 > the\-bleating\-of\-the\-deer;
+掮 > to\-bear\-on\-the\-shoulders;
+莆 > a\-kind\-of\-legendary\-tree;
+阡 > footpaths\-between\-fields;
+鸪 > species\-of\-taiwan\-pigeon;
+哔 > used\-in\-transliterations;
+氐 > name\-of\-an\-ancient\-tribe;
+呤 > purine\-in\-chem\.\-compound;
+嬗 > succession\-to\-the\-throne;
+沣 > river\-in\-shanxi\-province;
+觏 > meet\-or\-see\-unexpectedly;
+濮 > county\-in\-henan\-province;
+郴 > county\-in\-hunan\-province;
+轾 > low\-rear\-portion\-of\-cart;
+稞 > grain\-ready\-for\-grinding;
+灞 > river\-in\-shanxi\-province;
+郧 > county\-in\-hubei\-province;
+蹼 > webbed\-feet\-of\-waterfowl;
+甑 > boiler\-for\-steaming\-rice;
+妗 > wife\-of\-mother''s\-brother;
+浠 > name\-of\-a\-river\-in\-hubei;
+鳔 > swimming\-bladder\-of\-fish;
+篌 > ancient\-music\-instrument;
+秕 > empty\-grain\-or\-rice\-husk;
+琚 > ornamental\-gems\-for\-belt;
+鲵 > cryptobranchus\-japonicus;
+艨 > long\-and\-narrow\-war\-boat;
+涑 > river\-in\-shansi\-province;
+郏 > county\-in\-henan\-province;
+雩 > offer\-sacrifice\-for\-rain;
+佾 > a\-row\-or\-file\-of\-dancers;
+缂 > the\-woof\-of\-a\-woven\-item;
+艴 > the\-countenance\-changing;
+滏 > name\-of\-a\-river\-in\-hebei;
+郾 > county\-in\-henan\-province;
+鷞 > the\-turquoise\-kingfisher;
+鵁 > mycticorax\-prasinosceles;
+鴣 > species\-of\-taiwan\-pigeon;
+鰾 > swimming\-bladder\-of\-fish;
+鯢 > cryptobranchus\-japonicus;
+鮰 > a\-small\-kind\-of\-sturgeon;
+髠 > shave\-head\-as\-punishment;
+騕 > name\-of\-a\-fabulous\-horse;
+韂 > a\-saddle\-flap\.\-trappings;
+陴 > a\-parapet\-on\-a\-city\-wall;
+闤 > wall\-around\-market\-place;
+鄲 > county\-in\-hebei\-province;
+鄗 > county\-in\-hebei\-province;
+鄖 > county\-in\-hubei\-province;
+鄒 > name\-of\-an\-ancient\-state;
+郟 > county\-in\-henan\-province;
+輊 > low\-rear\-portion\-of\-cart;
+贑 > \<abbrv\>\-jiangxi\-province;
+訡 > to\-chant\-to\-moan\-to\-sigh;
+覯 > meet\-or\-see\-unexpectedly;
+蛁 > pomponia\-maculatiocollis;
+蘀 > falling\-leaves\-and\-barks;
+藺 > rush\-used\-in\-making\-mats;
+菴 > small\-buddhist\-monastery;
+莔 > fritillaria\-verticillata;
+茼 > chrysanthemum\-coronarium;
+艥 > an\-oar\-or\-paddle\.\-to\-row;
+膙 > callous\-skin\-on\-the\-feet;
+腜 > quickening\-of\-the\-foetus;
+肳 > the\-corners\-of\-the\-mouth;
+翛 > look\-of\-rumpled\-feathers;
+罝 > net\-for\-catching\-rabbits;
+緝 > to\-sew\-in\-close\-stitches;
+緙 > the\-woof\-of\-a\-woven\-item;
+緌 > tassels\-hanging\-from\-hat;
+筸 > name\-of\-a\-place\-in\-honan;
+稙 > grain\-ready\-for\-grinding;
+璠 > a\-piece\-of\-precious\-jade;
+玶 > name\-of\-one\-kind\-of\-jade;
+獞 > name\-of\-a\-variety\-of\-dog;
+猔 > name\-of\-an\-ancient\-tribe;
+灨 > the\-river\-gan\-in\-jiangxi;
+灃 > river\-in\-shanxi\-province;
+濲 > name\-of\-a\-river\-in\-hunan;
+湋 > river\-in\-shanxi\-province;
+洧 > name\-of\-a\-river\-in\-honan;
+樧 > zanthoxylum\-ailanthoides;
+榤 > perch\-for\-fowls\-roost\-on;
+栂 > a\-kind\-of\-evergreen\-tree;
+旡 > choke\-on\-something\-eaten;
+撋 > to\-rub\-between\-the\-hands;
+惌 > to\-bear\-a\-grudge\-against;
+崶 > name\-of\-a\-legendary\-hill;
+崁 > a\-place\-in\-taiwan\-tainan;
+尞 > fuel\-used\-for\-sacrifices;
+姺 > name\-of\-an\-ancient\-state;
+奞 > the\-stride\-made\-by\-a\-man;
+夗 > to\-turn\-over\-when\-asleep;
+嗶 > used\-in\-transliterations;
+凜 > shiver\-with\-cold\-or\-fear;
+僰 > ancient\-aboriginal\-tribe;
+亃 > name\-of\-a\-kind\-of\-animal;
+乺 > painting\-tool\-place\-name;
+乶 > korean\-place\-name\-pholha;
+䵂 > to\-grind\-wheat\-to\-powder;
+䲳 > birds\-flying\-up\-and\-down;
+䲛 > an\-ancient\-name\-for\-tuna;
+䲄 > a\-kind\-of\-fiish\-in\-ocean;
+䰍 > a\-kind\-of\-dark\-red\-paint;
+䰆 > beautiful\-and\-hairy\-mane;
+䯖 > the\-muscles\-of\-the\-thigh;
+䬳 > cakes\-made\-of\-rice\-flour;
+䫯 > to\-take\-a\-casual\-look\-at;
+䪀 > known\-together\-as\-saddle;
+䩪 > known\-together\-as\-saddle;
+䨒 > sound\-of\-the\-water\-drops;
+䦨 > a\-door\-curtain\-or\-screen;
+䤯 > container\-for\-thick\-soup;
+䣍 > name\-of\-an\-ancient\-state;
+䣅 > name\-of\-an\-ancient\-state;
+䡍 > the\-linch\-pin\-of\-a\-sheel;
+䟗 > to\-stand\-for\-a\-long\-time;
+䟃 > to\-move\-or\-march\-swiftly;
+䚶 > to\-scold\-in\-a\-loud\-voice;
+䙜 > legendary\-mountain\-deity;
+䙈 > a\-loose\-garment\-or\-cloak;
+䙇 > clothes\-of\-coarse\-fabric;
+䗂 > diemyctylus\-pyrrhogaster;
+䔣 > a\-tribe\-in\-ancient\-times;
+䓴 > edible\-fungus\-from\-trees;
+䑎 > soup\-of\-pig''s\-intestines;
+䐻 > big\-pieces\-of\-dried\-meat;
+䐹 > perserved\-and\-dried\-meat;
+䐰 > to\-offer\-food\-as\-tribute;
+䐂 > fat\-of\-animals\-or\-plants;
+䏦 > fat\-of\-animals\-or\-plants;
+䎵 > to\-look\-straight\-forward;
+䊱 > cakes\-made\-of\-rice\-flour;
+䊐 > fluffy\-stuffed\-dumplings;
+䊍 > thick\-congee\-or\-porridge;
+䇏 > to\-pile\-one\-upon\-another;
+䄜 > happiness\-and\-well\-being;
+䄖 > used\-in\-name\-of\-a\-person;
+䃢 > name\-of\-a\-mountain\-lofty;
+䁇 > to\-look\-for\-a\-short\-time;
+䀴 > to\-look\-straight\-forward;
+䀫 > narrow\-and\-dim\-eye\-sight;
+䀪 > birds\-flying\-up\-and\-down;
+㿺 > jutting\-on\-the\-epidermis;
+㽒 > the\-children\-of\-a\-sister;
+㼿 > the\-brick\-wall\-of\-a\-well;
+㼛 > long\-necked\-wine\-vessels;
+㻪 > a\-kind\-of\-jade\-fine\-jade;
+㶅 > dried\-up\-mountain\-creeks;
+㵢 > a\-marsh\-in\-ancient\-times;
+㴰 > a\-river\-in\-ancient\-times;
+㴬 > a\-river\-in\-ancient\-times;
+㳥 > a\-river\-in\-ancient\-times;
+㳝 > a\-river\-in\-ancient\-times;
+㳏 > a\-river\-in\-ancient\-times;
+㳍 > a\-place\-in\-ancient\-times;
+㳋 > a\-river\-in\-ancient\-times;
+㳊 > the\-flowing\-of\-the\-water;
+㳀 > a\-river\-in\-ancient\-times;
+㲊 > to\-understand\-thoroughly;
+㰾 > songs\-of\-the\-people\-of\-楚;
+㰽 > to\-exert\-oneself\-to\-yell;
+㯫 > a\-wattle\-or\-bamboo\-fence;
+㮦 > branches\-growing\-upwards;
+㪛 > to\-pound\-rocks\-to\-pieces;
+㪙 > to\-go\-to\-the\-very\-source;
+㩭 > to\-disturb\-or\-to\-agitate;
+藺 > rush\-used\-in\-making\-mats;
+凜 > shiver\-with\-cold\-or\-fear;
+洛 > river\-in\-shanxi\-province;
+㡪 > the\-varnish\-on\-the\-floor;
+㡧 > to\-stretch\-open\-painting;
+㠇 > name\-of\-a\-mountain\-ridge;
+㜿 > name\-of\-a\-fish\-in\-legend;
+㚝 > the\-stride\-made\-by\-a\-man;
+㗩 > sound\-of\-endure\-coldness;
+㗧 > to\-scold\-with\-loud\-voice;
+㗌 > to\-scold\-with\-loud\-voice;
+㗀 > the\-bleating\-of\-the\-deer;
+㓡 > the\-middle\-part\-of\-a\-bow;
+㐨 > a\-kind\-of\-fish\-in\-legend;
+瞥 > take\-fleeting\-glance\-at;
+州 > administrative\-division;
+吧 > emphatic\-final\-particle;
+某 > certain\-thing\-or\-person;
+票 > slip\-of\-paper\-or\-bamboo;
+耶 > used\-in\-transliteration;
+厘 > thousandth\-part\-of\-tael;
+彭 > name\-of\-ancient\-country;
+肴 > cooked\-or\-prepared\-meat;
+俎 > chopping\-board\-or\-block;
+淮 > river\-in\-anhui\-province;
+郡 > administrative\-division;
+哦 > oh\?\-really\?\-is\-that\-so\?;
+锤 > balance\-weight\-on\-scale;
+仞 > ancient\-unit\-of\-measure;
+芭 > plantain\-or\-banana\-palm;
+磊 > pile\-of\-rocks\-or\-stones;
+呸 > expression\-of\-reprimand;
+拷 > torture\-and\-interrogate;
+抿 > pucker\-up\-lips\-in\-smile;
+卉 > general\-term\-for\-plants;
+髻 > hair\-rolled\-up\-in\-a\-bun;
+裆 > crotch\-or\-seat\-of\-pants;
+蘑 > type\-of\-edible\-mushroom;
+咿 > descriptive\-of\-creaking;
+篾 > bamboo\-splints\-or\-slats;
+淇 > river\-in\-henan\-province;
+蓑 > rain\-coat\-made\-of\-straw;
+檬 > type\-of\-locust\-oracacia;
+淙 > gurgling\-sound\-of\-water;
+殓 > dress\-corpse\-for\-burial;
+琥 > jewel\-in\-shape\-of\-tiger;
+潞 > river\-in\-northern\-china;
+醍 > essential\-oil\-of\-butter;
+妯 > wives\-of\-one''s\-brothers;
+帏 > curtain\-that\-forms\-wall;
+瓒 > ceremonial\-libation\-cup;
+洹 > river\-in\-henan\-province;
+瑗 > large\-ring\-of\-fine\-jade;
+涞 > river\-in\-hebei\-province;
+爻 > diagrams\-for\-divination;
+锟 > ancient\-treasured\-sword;
+芗 > fragrant\-smell\-of\-grain;
+楦 > a\-last\-for\-making\-shoes;
+舁 > carry\-on\-one''s\-shoulder;
+滠 > river\-in\-hubei\-province;
+鼏 > cover\-of\-tripod\-caldron;
+黰 > young\-girl''s\-hair\-style;
+鬂 > the\-hair\-on\-the\-temples;
+駮 > a\-kind\-of\-fierce\-animal;
+錘 > balance\-weight\-on\-scale;
+錕 > ancient\-treasured\-sword;
+鄾 > place\-in\-hubei\-province;
+鄬 > place\-in\-henan\-province;
+鄤 > place\-in\-henan\-province;
+鄘 > state\-in\-henan\-province;
+鄏 > place\-in\-henan\-province;
+鄀 > state\-in\-henan\-province;
+郰 > birthplace\-of\-confucius;
+邧 > town\-in\-shanxi\-province;
+邘 > state\-in\-henan\-province;
+襠 > crotch\-or\-seat\-of\-pants;
+蚻 > small\-species\-of\-cicada;
+薌 > fragrant\-smell\-of\-grain;
+蒱 > gambling\-game\-with\-dice;
+葧 > heleocharis\-plantaginea;
+舲 > small\-boat\-with\-windows;
+羫 > the\-skeleton\-of\-a\-sheep;
+罽 > a\-kind\-of\-woolen\-fabric;
+粺 > polished\-rice\-or\-millet;
+篧 > creel\-for\-trapping\-fish;
+篛 > cuticle\-of\-bamboo\-plant;
+祔 > worship\-one''s\-ancestors;
+睖 > to\-stare\-straight\-ahead;
+眢 > eyes\-without\-brightness;
+畾 > fields\-divided\-by\-dikes;
+瓚 > ceremonial\-libation\-cup;
+璲 > pendant\-girdle\-ornament;
+瑿 > a\-black\-stone\-like\-jade;
+瑯 > kind\-of\-white\-cornelian;
+瑢 > gem\-ornaments\-for\-belts;
+珶 > white\-jade\-worn\-on\-belt;
+玕 > inferior\-variety\-of\-gem;
+猈 > dog\-with\-short\-shinbone;
+灄 > river\-in\-hubei\-province;
+瀼 > river\-in\-henan\-province;
+瀍 > river\-in\-henan\-province;
+濜 > river\-in\-hubei\-province;
+澴 > river\-in\-hubei\-province;
+澉 > to\-wash\-name\-of\-a\-place;
+潖 > name\-of\-a\-certain\-river;
+漷 > river\-in\-hebei\-province;
+漊 > river\-in\-hubei\-province;
+溮 > river\-in\-henan\-province;
+溠 > river\-in\-hubei\-province;
+淶 > river\-in\-hebei\-province;
+涖 > river\-in\-hebei\-province;
+浭 > river\-in\-hebei\-province;
+洺 > river\-in\-hebei\-province;
+洨 > river\-in\-hebei\-province;
+殮 > dress\-corpse\-for\-burial;
+殙 > to\-die\-by\-taking\-poison;
+歁 > unsatisfied\-\(of\-eating\);
+欨 > to\-blow\-or\-breathe\-upon;
+欏 > tree\-the\-horse\-chestnut;
+檇 > wooden\-rammer\-or\-pestle;
+橔 > a\-wooden\-chopping\-block;
+楥 > a\-last\-for\-making\-shoes;
+暼 > take\-fleeting\-glance\-at;
+怸 > cns\-2\-2a40\-is\-different;
+幃 > curtain\-that\-forms\-wall;
+墄 > the\-steps\-of\-a\-stairway;
+啫 > interjection\-of\-warning;
+吚 > used\-to\-represent\-sound;
+匁 > japanese\-unit\-of\-weight;
+仾 > to\-hang\-or\-bow\-the\-head;
+仭 > ancient\-unit\-of\-measure;
+䶝 > growing\-irregular\-teeth;
+䵈 > unsmelted\-hemp\-and\-silk;
+䵀 > coarse\-crumbs\-of\-barley;
+䴑 > a\-legendary\-weired\-bird;
+䴇 > a\-second\-name\-for\-crane;
+䴁 > a\-kind\-of\-rat\-like\-bird;
+䳲 > a\-swarm\-of\-flying\-birds;
+䲴 > a\-kind\-of\-venomous\-bird;
+䱾 > a\-carp\-like\-savory\-fish;
+䰫 > nimble\-and\-active\-ghost;
+䭇 > to\-be\-chocked\-with\-food;
+䭆 > small\-children\-eat\-less;
+䬲 > to\-eat\-to\-the\-half\-full;
+䬪 > a\-kind\-of\-cooked\-noodle;
+䬛 > the\-roaring\-of\-the\-wind;
+䨗 > excessive\-rain\-and\-snow;
+䨅 > small\-birds\-\-\-\-the\-wren;
+䥖 > silver\-of\-gold\-filagree;
+䥏 > unfitted\-for\-each\-other;
+䤥 > agricultural\-implements;
+䢜 > the\-marriage\-of\-a\-woman;
+䡽 > the\-shafts\-of\-a\-vehicle;
+䡺 > the\-end\-of\-an\-axle\-tree;
+䡣 > a\-piece\-of\-curved\-board;
+䠣 > net\-to\-trap\-the\-animals;
+䝈 > a\-big\-and\-strenuous\-pig;
+䚐 > getting\-red\-in\-the\-eyes;
+䚊 > to\-look\-from\-a\-distance;
+䙐 > furs\-and\-linen\-garments;
+䘆 > a\-second\-form\-earthworm;
+䗠 > the\-larva\-of\-mosquitoes;
+䗔 > a\-house\-lizard\-or\-gecko;
+䖱 > large\-shrimp\-in\-the\-sea;
+䔾 > a\-kind\-of\-fragrant\-herb;
+䓱 > a\-kind\-of\-herb\-medicine;
+䒖 > a\-kind\-of\-herb\-medicine;
+䒕 > a\-kind\-of\-herb\-medicine;
+䐤 > dried\-and\-seasoned\-meat;
+䐐 > curved\-part\-of\-the\-knee;
+䏙 > brine\-from\-pickled\-meat;
+䏕 > to\-cook\-food\-thoroughly;
+䎧 > agricultural\-implements;
+䍹 > odor\-of\-a\-sheep\-or\-goat;
+䍙 > nets\-for\-catching\-birds;
+䍘 > a\-general\-term\-for\-nets;
+䍓 > net\-for\-catching\-rabbit;
+䋫 > to\-wind\-round\-the\-ropes;
+䋨 > to\-set\-in\-order\-the\-old;
+䊴 > food\-made\-of\-rice\-flour;
+䊪 > coarse\-rice\-\-\-\-unhulled;
+䉜 > young\-and\-tender\-bamboo;
+䉖 > framework\-of\-a\-carriage;
+䇗 > bamboo\-with\-long\-joints;
+䇑 > a\-standing\-short\-person;
+䆊 > unhusked\-glutinous\-rice;
+䆉 > the\-swing\-of\-rice\-plant;
+䃉 > a\-stone\-resembling\-jade;
+䁌 > to\-see\-for\-a\-short\-time;
+㾀 > to\-be\-weaked\-by\-disease;
+㽺 > to\-be\-weaked\-by\-disease;
+㽸 > diseases\-of\-the\-abdomen;
+㽚 > agricultural\-implements;
+㼧 > tiles\-in\-cylinder\-shape;
+㹲 > a\-frightened\-pig\-or\-dog;
+㹮 > a\-kind\-of\-animal\-\-tapir;
+㹝 > a\-legendary\-wild\-animal;
+㹑 > a\-four\-years\-old\-cattle;
+㹊 > a\-cattle\-of\-white\-color;
+㹆 > the\-coulter\-of\-a\-plough;
+㸋 > meats\-used\-in\-sacrifice;
+㷮 > scorched\-or\-burned\-wood;
+㷫 > fire\-causing\-by\-dryness;
+㶵 > to\-cook\-food\-thoroughly;
+㶒 > the\-current\-of\-a\-stream;
+㴲 > a\-river\-in\-ancient\-time;
+㴑 > to\-trace\-up\-to\-a\-source;
+㴏 > the\-pond\-water\-is\-still;
+㲿 > extensive\-body\-of\-water;
+㲄 > unburnt\-bricks\-or\-tiles;
+㱬 > cannot\-recognize\-people;
+㱕 > the\-marriage\-of\-a\-woman;
+㯙 > the\-buckthorn\-or\-jujube;
+㭾 > to\-cut\-the\-timber\-apart;
+㭃 > the\-large\-rope\-of\-a\-net;
+㭂 > height\-of\-the\-end\-point;
+㬻 > in\-between\-of\-the\-flesh;
+㧯 > a\-bucket\-made\-of\-willow;
+㧥 > to\-nip\-with\-the\-fingers;
+㦽 > with\-elegant\-appearance;
+㦺 > a\-lance\-with\-two\-points;
+㦸 > a\-lance\-with\-two\-points;
+殮 > dress\-corpse\-for\-burial;
+㦇 > a\-peaceful\-or\-easy\-mood;
+磊 > pile\-of\-rocks\-or\-stones;
+㥅 > used\-in\-a\-person''s\-name;
+㤌 > to\-have\-one''s\-heart\-own;
+㣻 > to\-remedy\-by\-punishment;
+㣪 > to\-walk\-with\-slow\-steps;
+㣆 > to\-loose\-the\-bow\-string;
+㢾 > the\-curved\-end\-of\-a\-bow;
+㢵 > powerful\-and\-strong\-bow;
+㡹 > to\-rely\-upon\-each\-other;
+㡒 > a\-calico\-sack\-for\-grain;
+㡏 > to\-cut\-a\-strip\-of\-cloth;
+㞼 > to\-respectfully\-receive;
+㚬 > a\-lady\-start\-to\-doll\-up;
+㚖 > to\-come\-out\-to\-the\-open;
+㙊 > an\-area\-of\-level\-ground;
+㕸 > sound\-of\-rolling\-a\-boat;
+㕧 > used\-to\-represent\-sound;
+㔤 > to\-exert\-one''s\-strength;
+㓧 > agricultural\-implements;
+㒤 > to\-have\-one''s\-heart\-won;
+㒙 > to\-hand\-or\-bow\-the\-head;
+么 > interrogative\-particle;
+被 > passive\-indicator\-''by'';
+申 > to\-state\-to\-a\-superior;
+岡 > ridge\-or\-crest\-of\-hill;
+琴 > chinese\-lute\-or\-guitar;
+嬌 > seductive\-and\-loveable;
+罗 > net\-for\-catching\-birds;
+摸 > gently\-touch\-with\-hand;
+仰 > raise\-the\-head\-to\-look;
+臍 > abdominal\-area\-of\-crab;
+郑 > state\-in\-today''s\-henan;
+羅 > net\-for\-catching\-birds;
+贯 > a\-string\-of\-1000\-coins;
+娇 > seductive\-and\-loveable;
+竭 > put\-forth\-great\-effort;
+秒 > beard\-of\-grain\-or\-corn;
+奚 > where\?\-what\?\-how\?\-why\?;
+冈 > ridge\-or\-crest\-of\-hill;
+盏 > small\-cup\-or\-container;
+萝 > type\-of\-creeping\-plant;
+梧 > sterculia\-platanifolia;
+咦 > expression\-of\-surprise;
+筐 > bamboo\-basket\-or\-chest;
+谍 > an\-intelligence\-report;
+篱 > bamboo\-or\-wooden\-fence;
+琶 > guitar\-like\-instrument;
+琵 > guitar\-like\-instrument;
+潺 > sound\-of\-flowing\-water;
+坳 > a\-hollow\-in\-the\-ground;
+脐 > abdominal\-area\-of\-crab;
+埂 > ditches\-for\-irrigation;
+倌 > assistant\-in\-wine\-shop;
+霁 > to\-clear\-up\-after\-rain;
+邯 > city\-in\-hebei\-province;
+粑 > tsamba\-\(food\-in\-tibet\);
+蛀 > insects\-that\-eat\-books;
+嫦 > name\-of\-a\-moon\-goddess;
+赊 > buy\-and\-sell\-on\-credit;
+弑 > to\-kill\-one''s\-superior;
+摁 > to\-press\-with\-the\-hand;
+畹 > a\-field\-of\-20\-or\-30\-mu;
+觐 > have\-imperial\-audience;
+讦 > expose\-other''s\-secrets;
+旄 > a\-kind\-of\-ancient\-flag;
+趵 > noise\-of\-tramping\-feet;
+酹 > to\-pour\-out\-a\-libation;
+孳 > breed\-in\-large\-numbers;
+塄 > elevated\-bank\-in\-field;
+螈 > diemyelilus\-pyrogaster;
+窬 > a\-small\-door\-or\-window;
+笱 > a\-basket\-trap\-for\-fish;
+牿 > shed\-or\-pen\-for\-cattle;
+蛘 > a\-weevil\-found\-in\-rice;
+畎 > a\-drain\-between\-fields;
+齯 > teeth\-grown\-in\-old\-age;
+鹣 > fabulous\-mythical\-bird;
+鶼 > fabulous\-mythical\-bird;
+鰆 > scomberomorus\-sinensis;
+鯙 > scomberomorus\-sinensis;
+鮓 > minced\-and\-salted\-fish;
+驌 > name\-of\-a\-famous\-horse;
+韹 > music\-of\-bell\-and\-drum;
+霽 > to\-clear\-up\-after\-rain;
+雘 > dye\-made\-from\-red\-soil;
+阇 > a\-buddhist\-high\-priest;
+鑐 > bolt\-of\-a\-chinese\-lock;
+錆 > the\-color\-of\-a\-mineral;
+鄭 > state\-in\-today''s\-henan;
+鄐 > town\-in\-henan\-province;
+遰 > grunting\-sound\-of\-pigs;
+辥 > variety\-of\-marsh\-grass;
+賒 > buy\-and\-sell\-on\-credit;
+貫 > a\-string\-of\-1000\-coins;
+谂 > consult\-carefully\-with;
+諜 > an\-intelligence\-report;
+諗 > consult\-carefully\-with;
+詪 > difficulty\-in\-speaking;
+訐 > expose\-other''s\-secrets;
+觿 > a\-bodkin\-made\-of\-ivory;
+覲 > have\-imperial\-audience;
+覀 > variant\-of\-radical\-146;
+褟 > inner\-shirt\-or\-singlet;
+衭 > the\-lapel\-of\-a\-garment;
+衦 > smooth\-out\-the\-clothes;
+蘿 > type\-of\-creeping\-plant;
+蕕 > caryopteris\-divaricata;
+蔯 > a\-variety\-of\-artemisia;
+萴 > medicinal\-poison\-plant;
+菶 > species\-of\-water\-plant;
+莸 > caryopteris\-divaricata;
+莙 > species\-of\-water\-plant;
+脤 > raw\-meat\-for\-sacrifice;
+耬 > drill\-for\-sowing\-grain;
+耧 > drill\-for\-sowing\-grain;
+耂 > variant\-of\-radical\-125;
+繦 > string\-of\-copper\-coins;
+繈 > string\-of\-copper\-coins;
+緅 > silk\-of\-purplish\-color;
+籬 > bamboo\-or\-wooden\-fence;
+篢 > the\-name\-of\-bamboo\-hat;
+筺 > bamboo\-basket\-or\-chest;
+盞 > small\-cup\-or\-container;
+癊 > a\-disease\-of\-the\-heart;
+瑱 > a\-gem\-used\-as\-ear\-plug;
+琠 > a\-gem\-used\-as\-ear\-plug;
+珣 > name\-of\-a\-kind\-of\-jade;
+玼 > beautiful\-color\-of\-gem;
+牷 > cow\-or\-ox\-of\-one\-color;
+焄 > rising\-flames\-or\-fumes;
+烖 > calamities\-from\-heaven;
+殢 > be\-in\-great\-difficulty;
+槱 > firewood\-for\-sacrifice;
+朏 > light\-of\-crescent\-moon;
+旐 > an\-embroidered\-pennant;
+攙 > to\-give\-a\-helping\-hand;
+摰 > to\-seize\-with\-the\-hand;
+摀 > to\-cover\-with\-the\-hand;
+搾 > to\-crush\-with\-the\-hand;
+怹 > a\-polite\-version\-of\-he;
+弒 > to\-kill\-one''s\-superior;
+庈 > used\-in\-person''s\-names;
+嵶 > low\-part\-of\-a\-mountain;
+孒 > larvae\-of\-the\-mosquito;
+壖 > open\-space\-along\-water;
+噀 > spirt\-out\-of\-the\-mouth;
+叝 > to\-respectfully\-inform;
+伮 > to\-make\-a\-great\-effort;
+䶥 > unevenly\-fitting\-teeth;
+䶤 > sound\-of\-chewing\-bones;
+䶂 > a\-squirrel\-like\-animal;
+䳮 > to\-look\-at\-in\-surprise;
+䲚 > a\-second\-name\-for\-shad;
+䰵 > looks\-like\-common\-carp;
+䰰 > dreary\-cries\-of\-ghosts;
+䰭 > dreary\-cries\-of\-ghosts;
+䮺 > luxuriant\-of\-the\-grass;
+䮭 > to\-look\-at\-in\-surprise;
+䮪 > to\-geld\-a\-horse\-or\-ass;
+䩼 > stitches\-on\-a\-coverlet;
+䩍 > to\-look\-pale\-or\-pallid;
+䨵 > rained\-for\-a\-long\-time;
+䨬 > rained\-for\-a\-long\-time;
+䨡 > rained\-for\-a\-long\-time;
+䦈 > to\-sigh\-in\-lamentation;
+䥟 > a\-metal\-marking\-\-stake;
+䢎 > indicating\-exclamation;
+䡵 > decoration\-on\-carriage;
+䡰 > strong\-and\-durable\-hub;
+䡬 > covering\-of\-a\-carriage;
+䡁 > not\-well\-formed\-figure;
+䟽 > scattered\-or\-dispersed;
+䞘 > to\-go\-straight\-forward;
+䝢 > an\-animal\-in\-old\-times;
+䝡 > an\-animal\-in\-old\-times;
+䝓 > long\-beard\-or\-whiskers;
+䜺 > husking\-beans\-for\-cake;
+䜡 > to\-smell\-the\-fragrants;
+䛙 > to\-smell\-the\-fragrance;
+䚞 > the\-middle\-of\-the\-horn;
+䙄 > clothes\-with\-thick\-hem;
+䘽 > clothing\-and\-ornaments;
+䗐 > a\-weevil\-found\-in\-rice;
+䕴 > a\-second\-for\-monkshood;
+䔠 > thin\-root\-of\-the\-lotus;
+䏩 > to\-shrug\-the\-shoulders;
+䍱 > the\-wild\-goat\-or\-sheep;
+䋪 > fine\-and\-delicate\-silk;
+䋍 > fine\-and\-delicate\-silk;
+䊏 > mixing\-rice\-with\-broth;
+䊃 > mixing\-rice\-with\-broth;
+䈄 > a\-kind\-of\-solid\-bamboo;
+䇣 > bamboo\-with\-white\-bark;
+䄠 > to\-sacrifice\-to\-heaven;
+䃧 > sound\-of\-falling\-rocks;
+䃔 > sound\-of\-falling\-rocks;
+䂢 > sound\-of\-falling\-rocks;
+䂠 > sound\-of\-falling\-rocks;
+䀄 > container\-full\-of\-food;
+㿋 > a\-kind\-of\-skin\-disease;
+㼞 > jar\-with\-a\-small\-mouth;
+㺞 > to\-sign\-in\-lamentation;
+㸯 > a\-fine\-breed\-of\-cattle;
+㵯 > sound\-of\-water\-flowing;
+㳯 > goddess\-of\-an\-ink\-slab;
+㲱 > long\-beard\-or\-whiskers;
+㱆 > to\-smile\-at\-each\-other;
+㰿 > to\-sigh\-in\-lamentation;
+㰨 > to\-take\-breath\-or\-rest;
+㮑 > sound\-of\-broken\-sticks;
+㭯 > tree\-with\-small\-leaves;
+㫊 > fluttering\-of\-the\-flag;
+㪣 > a\-place\-in\-han\-dynasty;
+㪟 > to\-regard\-as\-important;
+㪞 > to\-be\-held\-by\-the\-hand;
+㩺 > a\-crack\-on\-the\-utensil;
+㩜 > to\-be\-in\-possession\-of;
+㩎 > to\-press\-with\-a\-finger;
+㧶 > the\-jingling\-of\-metals;
+㧙 > to\-give\-a\-playful\-blow;
+㧃 > to\-receive\-what\-is\-due;
+㦣 > to\-talk\-in\-one''s\-sleep;
+㦄 > hard\-to\-say\-or\-predict;
+蘿 > type\-of\-creeping\-plant;
+羅 > net\-for\-catching\-birds;
+㤊 > cheerful\-and\-exuberant;
+㣚 > to\-go\-straight\-forward;
+㢉 > a\-room\-with\-open\-space;
+㠔 > shapes\-of\-the\-mountain;
+㟻 > the\-moat\-around\-a\-city;
+㛳 > an\-abnomal\-unborn\-baby;
+㚷 > the\-breasts\-of\-a\-woman;
+㙳 > ruggedness\-of\-the\-road;
+㙤 > a\-crack\-in\-earthenware;
+㙘 > used\-in\-naming\-a\-place;
+㘭 > a\-hollow\-in\-the\-ground;
+㘬 > a\-hollow\-in\-the\-ground;
+㗂 > to\-keep\-the\-mouth\-shut;
+㖐 > sound\-of\-calling\-ducks;
+㔴 > agricultural\-implement;
+㓹 > a\-sharp\-pointed\-weapon;
+㓦 > to\-deliberate\-and\-plan;
+㓘 > jade\-with\-some\-defects;
+觉 > to\-wake\-up\-from\-sleep;
+環 > jade\-ring\-or\-bracelet;
+覺 > to\-wake\-up\-from\-sleep;
+覚 > to\-wake\-up\-from\-sleep;
+划 > to\-row\-or\-paddle\-boat;
+堪 > adequately\-capable\-of;
+环 > jade\-ring\-or\-bracelet;
+吴 > name\-of\-warring\-state;
+鳴 > cry\-of\-bird\-or\-animal;
+呉 > one\-of\-warring\-states;
+馳 > go\-quickly\-or\-swiftly;
+榎 > small\-evergreen\-shrub;
+鸣 > cry\-of\-bird\-or\-animal;
+驰 > go\-quickly\-or\-swiftly;
+姻 > relatives\-by\-marriage;
+筒 > thick\-piece\-of\-bamboo;
+帘 > flag\-sign\-of\-a\-tavern;
+稻 > rice\-growing\-in\-field;
+稲 > rice\-growing\-in\-field;
+禰 > one''s\-deceased\-father;
+剂 > medicinal\-preparation;
+珂 > inferior\-kind\-of\-jade;
+嘟 > sound\-of\-horn\-tooting;
+瑜 > flawless\-gem\-or\-jewel;
+珑 > a\-gem\-cut\-like\-dragon;
+诬 > make\-false\-accusation;
+嫖 > patronize\-prostitutes;
+飒 > the\-sound\-of\-the\-wind;
+锢 > run\-metal\-into\-cracks;
+掖 > support\-with\-the\-arms;
+棣 > kerria\-japonica\-plant;
+菁 > flower\-of\-leek\-family;
+咩 > the\-bleating\-of\-sheep;
+珉 > stone\-resembling\-jade;
+钎 > tool\-for\-boring\-holes;
+抟 > roll\-around\-with\-hand;
+趸 > sell\-or\-buy\-wholesale;
+妣 > one''s\-deceased\-mother;
+嵊 > district\-in\-shaohsing;
+笸 > flat\-basket\-for\-grain;
+祢 > one''s\-deceased\-father;
+肫 > the\-gizzard\-of\-a\-fowl;
+苫 > rush\-or\-straw\-matting;
+峤 > high\-pointed\-mountain;
+秭 > one\-thousand\-millions;
+姒 > wife\-of\-elder\-brother;
+蓰 > to\-increase\-five\-fold;
+蒌 > artemisia\-stelleriana;
+酃 > the\-spirit\-of\-a\-being;
+糗 > parched\-wheat\-or\-rice;
+辋 > exterior\-rim\-of\-wheel;
+髫 > children''s\-hair\-style;
+虺 > large\-poisonous\-snake;
+醵 > contribute\-for\-drinks;
+蚬 > a\-variety\-of\-bivalves;
+裼 > to\-take\-off\-one''s\-top;
+眵 > eyes\-diseased\-and\-dim;
+枵 > hollo\-stump\-of\-a\-tree;
+蘩 > artemisia\-stellariana;
+鼃 > the\-edible\-water\-frog;
+鷀 > the\-fishing\-cormorant;
+鴠 > a\-kind\-of\-nightingale;
+鰤 > seriola\-qinqueradiata;
+鯄 > lepidotrigla\-strauchi;
+髈 > defined\-as\-the\-pelvis;
+颸 > cool\-breeze\-of\-autumn;
+颯 > the\-sound\-of\-the\-wind;
+錮 > run\-metal\-into\-cracks;
+釺 > tool\-for\-boring\-holes;
+酎 > double\-fermented\-wine;
+輮 > exterior\-rim\-of\-wheel;
+輞 > exterior\-rim\-of\-wheel;
+躉 > sell\-or\-buy\-wholesale;
+谺 > the\-mouth\-of\-a\-valley;
+誣 > make\-false\-accusation;
+蠸 > aulacophora\-femoralis;
+螒 > aulacophora\-femoralis;
+蜺 > reflection\-of\-rainbow;
+蜆 > a\-variety\-of\-bivalves;
+蘘 > a\-kind\-of\-wild\-ginger;
+蕚 > the\-calyx\-of\-a\-flower;
+蔞 > artemisia\-stelleriana;
+葹 > kind\-of\-chrysanthemum;
+萻 > small\-buddhist\-temple;
+舚 > to\-put\-out\-the\-tongue;
+翏 > the\-sound\-of\-the\-wind;
+繴 > a\-kind\-of\-fishing\-net;
+竼 > bamboo\-cover\-for\-boat;
+禨 > pray\-for\-good\-fortune;
+癥 > obstruction\-of\-bowels;
+痏 > a\-bruise\-or\-contusion;
+瓏 > a\-gem\-cut\-like\-dragon;
+璡 > jade\-look\-alike\-stone;
+瑨 > jade\-look\-alike\-stone;
+瑀 > stone\-resembling\-jade;
+澂 > clear\-and\-still\-water;
+淜 > roar\-of\-dashing\-waves;
+沇 > flowing\-and\-engulfing;
+檟 > small\-evergreen\-shrub;
+暎 > sun\-beginning\-decline;
+摶 > roll\-around\-with\-hand;
+嶠 > high\-pointed\-mountain;
+嵼 > winding\-mountain\-path;
+埵 > hardened\-dirt\-or\-clay;
+嗻 > to\-screen\.\-loquacious;
+吳 > one\-of\-warring\-states;
+匟 > divan\-for\-two\-persons;
+劑 > medicinal\-preparation;
+剾 > to\-pick\-up\-with\-knife;
+剤 > medicinal\-preparation;
+䵗 > to\-clean\-the\-withered;
+䵄 > to\-boil\-or\-stew\-wheat;
+䴶 > to\-boil\-or\-stew\-wheat;
+䴔 > the\-fishing\-cormorant;
+䳹 > a\-kind\-dove\-like\-bird;
+䳝 > a\-kind\-of\-small\-birds;
+䱟 > a\-kind\-of\-silver\-fish;
+䯯 > hang\-down\-of\-the\-hair;
+䯭 > of\-nice\-and\-good\-hair;
+䮄 > an\-one\-year\-old\-horse;
+䭴 > an\-one\-year\-old\-horse;
+䫹 > the\-sound\-of\-the\-wind;
+䪥 > shallots\-or\-scallions;
+䩩 > a\-measure\-of\-capacity;
+䦽 > an\-east\-and\-west\-wall;
+䦚 > wide\-open\-of\-the\-door;
+䦌 > the\-door\-is\-wide\-open;
+䥈 > the\-symbol\-for\-cobalt;
+䤗 > taste\-of\-strong\-drink;
+䢩 > to\-forbid\-to\-prohibit;
+䡶 > vehicles\-and\-garments;
+䞚 > to\-hang\-on\-a\-big\-tree;
+䝖 > reptiles\-without\-feet;
+䛱 > to\-talk\-unremittingly;
+䛊 > cheerful\-all\-the\-time;
+䛃 > used\-in\-person''s\-name;
+䘐 > the\-bleed\-at\-the\-nose;
+䗊 > to\-put\-out\-the\-tongue;
+䗉 > a\-small\-solitary\-wasp;
+䖔 > a\-kind\-of\-white\-tiger;
+䖍 > to\-act\-with\-reverence;
+䔵 > fragrant\-thoroughwort;
+䔊 > dense\-growth\-of\-grass;
+䓒 > scirpus\-cyperinus\-var;
+䒦 > grass\-floats\-on\-water;
+䒄 > fully\-laden\-of\-a\-boat;
+䑝 > a\-small\-cup\-with\-ears;
+䏤 > top\-of\-the\-human\-head;
+䎶 > offering\-blood\-to\-god;
+䎚 > the\-end\-of\-bird\-wings;
+䎖 > soaring\-up\-in\-the\-sky;
+䎁 > used\-in\-person''s\-name;
+䌧 > a\-kind\-of\-silk\-fabric;
+䌟 > to\-weave\-silk\-ribbons;
+䋂 > dresses\-for\-the\-bride;
+䈧 > skin\-of\-bamboo\-shoots;
+䈞 > ancient\-name\-of\-india;
+䇾 > a\-flute\-with\-23\-tubes;
+䇰 > a\-bamboo\-binded\-torch;
+䇡 > the\-shuttle\-of\-a\-loom;
+䆠 > a\-government\-official;
+䆛 > something\-in\-the\-cave;
+䅗 > four\-bundle\-of\-grains;
+䅑 > four\-bundle\-of\-grains;
+䁭 > to\-give\-an\-angry\-look;
+䁚 > a\-kind\-of\-eye\-disease;
+䀽 > to\-look\-at\-each\-other;
+䀠 > a\-chinese\-family\-name;
+䀓 > to\-turn\-one''s\-eyes\-to;
+㿴 > wide\-piece\-of\-leather;
+㿯 > wide\-piece\-of\-leather;
+㿫 > to\-split\-tangled\-hemp;
+㿏 > paralysis\-of\-the\-body;
+㾾 > disease\-of\-the\-throat;
+㾤 > disease\-of\-the\-throat;
+㼲 > sound\-of\-broken\-tiles;
+㼐 > a\-kind\-of\-white\-melon;
+㹶 > a\-kind\-of\-wild\-animal;
+㹦 > dog\-with\-a\-short\-tail;
+㹔 > cattle\-with\-long\-back;
+㷗 > used\-in\-person''s\-name;
+㷏 > used\-in\-person''s\-name;
+㵬 > used\-in\-person''s\-name;
+㵨 > a\-dry\-land\-in\-a\-river;
+㳈 > a\-great\-flow\-of\-water;
+㱟 > to\-rip\-open\-the\-flesh;
+㰄 > a\-small\-chestnut\-tree;
+㯥 > a\-chinese\-family\-name;
+㮗 > the\-handle\-of\-a\-spear;
+㭍 > capital\-form\-of\-seven;
+㬠 > to\-expose\-to\-sunlight;
+㬓 > to\-expose\-to\-sunlight;
+㬂 > used\-in\-person''s\-name;
+㩟 > to\-sew\-some\-ornaments;
+㨌 > to\-milk\-a\-cow\-or\-goat;
+㣝 > a\-chinese\-family\-name;
+㠋 > a\-lofty\-mountain\-peak;
+㟞 > precipitous\-and\-lofty;
+㟝 > to\-bank\-up\-with\-earth;
+㟜 > shape\-of\-the\-mountain;
+㟙 > shape\-of\-the\-mountain;
+㟖 > a\-dialect\-of\-minority;
+㟎 > a\-long\-mountain\-ridge;
+㞁 > can\-not\-walk\-normally;
+㝾 > can\-not\-walk\-normally;
+㘰 > name\-of\-a\-old\-country;
+㘡 > a\-pen\-for\-wild\-beasts;
+㘖 > to\-make\-a\-disturbance;
+㗁 > the\-roof\-of\-the\-mouth;
+㖗 > high\-ridges\-of\-cliffs;
+㕢 > profound\-significance;
+㒆 > to\-gather\-the\-harvest;
+什 > file\-of\-ten\-soldiers;
+責 > one''s\-responsibility;
+爵 > feudal\-title\-or\-rank;
+责 > one''s\-responsibility;
+啊 > exclamatory\-particle;
+楚 > name\-of\-feudal\-state;
+托 > to\-hold\-up\-with\-palm;
+汲 > draw\-water\-from\-well;
+魅 > kind\-of\-forest\-demon;
+伊 > third\-person\-pronoun;
+鸿 > species\-of\-wild\-swan;
+姥 > maternal\-grandmother;
+捧 > hold\-up\-in\-two\-hands;
+乙 > second\-heaven''s\-stem;
+吁 > interjection\-''alas\!'';
+姨 > mother\/wife''s\-sister;
+亩 > chinese\-land\-measure;
+僵 > stiff\-and\-motionless;
+拱 > fold\-hands\-on\-breast;
+禾 > grain\-still\-on\-stalk;
+嗡 > sound\-of\-flying\-bees;
+兮 > exclamatory\-particle;
+猩 > species\-of\-orangutan;
+狞 > ferocious\-appearance;
+拈 > pick\-up\-with\-fingers;
+陛 > steps\-leading\-throne;
+鸯 > female\-mandarin\-duck;
+卯 > th\-of\-earth\-branches;
+熠 > bright\-and\-sparkling;
+阂 > blocked\-or\-separated;
+淅 > water\-used\-wash\-rice;
+佚 > indulge\-in\-pleasures;
+辚 > rumbling\-of\-vehicles;
+巽 > th\-of\-the\-8\-trigrams;
+訇 > the\-sound\-of\-a\-crash;
+狺 > the\-snarling\-of\-dogs;
+浔 > steep\-bank\-by\-stream;
+蓊 > luxuriant\-vegetation;
+蓠 > gracilaria\-verrucosa;
+菀 > luxuriance\-of\-growth;
+胗 > pustules\-of\-any\-kind;
+颃 > fly\-down\-or\-downward;
+垆 > black\-clods\-of\-earth;
+樗 > ailanthus\-glandulosa;
+蚧 > a\-red\-spotted\-lizard;
+缶 > earthen\-crock\-or\-jar;
+豳 > a\-zhou\-dynasty\-state;
+轺 > small\-light\-carriage;
+逯 > leave\-without\-reason;
+齞 > to\-display\-the\-teeth;
+鼈 > a\-fresh\-water\-turtle;
+鼂 > a\-kind\-of\-sea\-turtle;
+鸇 > kind\-of\-bird\-of\-prey;
+鸂 > a\-kind\-of\-water\-bird;
+鷫 > turquoise\-kingfisher;
+鷁 > fishhawk\-bow\-or\-prow;
+鴻 > species\-of\-wild\-swan;
+鴦 > female\-mandarin\-duck;
+鰜 > big\-mouthed\-flounder;
+髺 > the\-hair\-dishevelled;
+骣 > horse\-without\-saddle;
+驏 > horse\-without\-saddle;
+餽 > make\-present\-of\-food;
+頏 > fly\-down\-or\-downward;
+韱 > wild\-onions\-or\-leeks;
+韯 > wild\-onions\-or\-leeks;
+霃 > long\-continued\-rains;
+闍 > tower\-over\-city\-gate;
+閡 > blocked\-or\-separated;
+鍱 > thin\-plates\-of\-metal;
+鉶 > sacrificial\-cauldron;
+醰 > bitter\-taste\-in\-wine;
+轔 > rumbling\-of\-vehicles;
+軺 > small\-light\-carriage;
+趂 > to\-take\-advantage\-of;
+襬 > lower\-part\-of\-a\-robe;
+袳 > spread\-one''s\-clothes;
+蜛 > hydrophilus\-cognatus;
+蛚 > cyrtoxiphus\-ritsemae;
+蘺 > gracilaria\-verrucosa;
+薢 > woody\-climbing\-plant;
+茀 > overgrown\-with\-grass;
+芄 > metaplexis\-stauntoni;
+舺 > place\-name\-in\-taiwan;
+脡 > strips\-of\-dried\-meat;
+粃 > empty\-husks\-of\-grain;
+窣 > to\-rush\-out\-of\-a\-den;
+穇 > panicum\-frumentaceum;
+磒 > to\-fall\-from\-or\-into;
+矑 > the\-pupil\-of\-the\-eye;
+睍 > to\-look\-at\-fearfully;
+畝 > chinese\-land\-measure;
+畒 > chinese\-land\-measure;
+畆 > chinese\-land\-measure;
+甽 > drain\-between\-fields;
+甃 > brick\-wall\-of\-a\-well;
+琖 > carved\-jade\-wine\-cup;
+玦 > broken\-piece\-of\-jade;
+獰 > ferocious\-appearance;
+瀳 > to\-arrive\-\(of\-water\);
+澬 > to\-rain\-continuously;
+潯 > steep\-bank\-by\-stream;
+洤 > a\-fountain\-or\-spring;
+槾 > paste\-wall\-with\-dirt;
+棨 > tally\-or\-wooden\-pass;
+桬 > pear\-and\-other\-trees;
+敳 > to\-govern\-forcefully;
+敁 > to\-weigh\-in\-the\-hand;
+搎 > to\-rub\-with\-the\-hand;
+戼 > th\-of\-earth\-branches;
+巺 > th\-of\-the\-8\-trigrams;
+嵏 > a\-mountain\-in\-shenxi;
+孭 > to\-carry\-on\-the\-back;
+嫋 > slender\-and\-delicate;
+婣 > marriage\-connections;
+夘 > th\-of\-earth\-branches;
+壚 > black\-clods\-of\-earth;
+囬 > to\-return\-to\-or\-from;
+劂 > chisel\-for\-engraving;
+䶙 > swelling\-of\-the\-gums;
+䶊 > to\-bleed\-at\-the\-nose;
+䴟 > an\-one\-year\-old\-deer;
+䴖 > a\-kind\-of\-water\-bird;
+䴌 > a\-kind\-of\-water\-bird;
+䴋 > a\-kind\-of\-water\-bird;
+䴈 > a\-kind\-of\-water\-bird;
+䴂 > a\-kind\-of\-water\-bird;
+䴀 > a\-kind\-of\-water\-bird;
+䳶 > a\-kind\-of\-water\-bird;
+䳳 > a\-kind\-of\-small\-bird;
+䳓 > a\-kind\-of\-water\-bird;
+䳑 > a\-pheasant\-like\-bird;
+䳋 > a\-pheasant\-like\-bird;
+䳉 > a\-kind\-of\-water\-bird;
+䳄 > a\-kind\-of\-water\-bird;
+䳂 > a\-kind\-of\-small\-bird;
+䲱 > a\-kind\-of\-black\-bird;
+䲕 > the\-yangtze\-porpoise;
+䱐 > a\-kind\-of\-black\-fish;
+䱀 > a\-kind\-of\-small\-fish;
+䯺 > the\-hair\-dishevelled;
+䮡 > a\-supernatural\-horse;
+䮂 > horse\-with\-long\-hair;
+䭾 > to\-carry\-on\-the\-back;
+䭷 > horse\-with\-long\-mane;
+䬩 > to\-abstain\-from\-meat;
+䬣 > a\-sacrificial\-victim;
+䫠 > short\-hair\-and\-beard;
+䩽 > a\-quiver\-one\-a\-horse;
+䩂 > to\-come\-to\-the\-front;
+䧗 > mountains\-collapsing;
+䦦 > a\-musical\-instrument;
+䥤 > the\-neck\-of\-a\-pestle;
+䥡 > thin\-plates\-of\-metal;
+䥆 > a\-musical\-instrument;
+䥅 > a\-musical\-instrument;
+䥄 > to\-plaster\-with\-gold;
+䤸 > short\-spear\-or\-lance;
+䠑 > between\-the\-buttocks;
+䠈 > hard\-to\-move\-forward;
+䟩 > hard\-of\-walk\-forward;
+䞙 > to\-walk\-in\-hurriedly;
+䝑 > a\-local\-produced\-pig;
+䜧 > to\-insult\-with\-words;
+䜓 > a\-slip\-of\-the\-tongue;
+䜀 > to\-insult\-with\-words;
+䛌 > to\-provoke\-or\-arouse;
+䙮 > strip\-of\-the\-clothes;
+䘾 > legs\-of\-the\-trousers;
+䕫 > a\-one\-legged\-monster;
+䔈 > lush\-growth\-of\-grass;
+䑠 > long\-and\-narrow\-boat;
+䐸 > the\-back\-of\-the\-knee;
+䏿 > the\-calf\-of\-the\-legs;
+䏡 > uncooked\-or\-raw\-meat;
+䊳 > to\-break\-into\-pieces;
+䊲 > to\-hull\-rice\-roughly;
+䊂 > poor\-quality\-of\-rice;
+䉑 > black\-skinned\-bamboo;
+䈦 > a\-curved\-bamboo\-whip;
+䈑 > tools\-to\-unreel\-silk;
+䈅 > tools\-to\-unreel\-silk;
+䈁 > tools\-used\-on\-a\-boat;
+䇘 > tool\-to\-collect\-rope;
+䆣 > abode\-of\-the\-emperor;
+䆏 > a\-kind\-of\-rice\-plant;
+䆃 > a\-kind\-of\-rice\-plant;
+䅮 > a\-full\-head\-of\-grain;
+䅓 > curved\-piece\-of\-wood;
+䅏 > rice\-boiled\-to\-gruel;
+䅉 > a\-kind\-of\-rice\-plant;
+䄿 > a\-kind\-of\-rice\-plant;
+䄯 > ten\-handle\-of\-grains;
+䄂 > to\-pray\-and\-to\-curse;
+䃰 > brick\-or\-stone\-steps;
+䂒 > short\-to\-curry\-favor;
+䂂 > to\-gaze\-at\-in\-terror;
+䁬 > to\-act\-pretentiously;
+䀷 > to\-have\-quick\-glance;
+䀲 > diseases\-in\-the\-eyes;
+㿸 > to\-cast\-off\-the\-skin;
+㿞 > an\-old\-man\-of\-eighty;
+㽤 > a\-small\-plot\-of\-land;
+㽢 > to\-plough\-the\-fields;
+㽕 > new\-branches\-growing;
+㽃 > a\-big\-piece\-of\-brick;
+㼢 > bricks\-an\-eathen\-jar;
+㼉 > green\-colored\-melons;
+㻮 > bright\-and\-brilliant;
+㺮 > fine\-stone\-like\-jade;
+㺨 > fine\-stone\-like\-jade;
+㺂 > big\-and\-strong\-sheep;
+㹘 > shinbone\-of\-a\-cattle;
+㸪 > an\-ox\-walking\-slowly;
+㷙 > to\-fry\-in\-fat\-or\-oil;
+㶔 > swift\-and\-torrential;
+㶎 > swift\-and\-torrential;
+㵡 > swift\-and\-torrential;
+㵞 > bellied\-in\-water\-gas;
+㳼 > bubbling\-of\-fountain;
+㳚 > flowing\-of\-the\-water;
+㳔 > to\-soak\-or\-be\-soaked;
+㳐 > flowing\-of\-the\-water;
+㲫 > hair\-knots\-in\-a\-mess;
+㲢 > hair\-knots\-in\-a\-mess;
+㰋 > a\-kind\-of\-fruit\-tree;
+㯌 > to\-operate\-or\-manage;
+㭞 > a\-kind\-inferior\-wood;
+㭒 > a\-farming\-instrument;
+㪰 > to\-abstain\-from\-meat;
+㩻 > rugged\-mountain\-path;
+㩔 > a\-tool\-to\-make\-a\-bow;
+什 > file\-of\-ten\-soldiers;
+㧹 > to\-strike\-with\-fists;
+㡙 > curtain\-for\-carriage;
+㠗 > deep\-in\-the\-mountain;
+㞥 > deep\-in\-the\-mountain;
+㞟 > savings\-and\-reserves;
+㜒 > maternal\-grandmother;
+㙣 > to\-pile\-a\-sand\-hills;
+㙑 > the\-canopy\-of\-heaven;
+㘎 > the\-roars\-of\-a\-tiger;
+㘅 > to\-hold\-in\-the\-mouth;
+㕡 > the\-bed\-of\-a\-torrent;
+㕌 > to\-raise\-the\-curtain;
+㔋 > cut\-into\-thin\-slices;
+㒅 > to\-unbind\-the\-collar;
+㑉 > cannot\-straighten\-up;
+幾 > how\-many\?\-how\-much\?;
+奏 > memorialize\-emperor;
+您 > honorific\-for\-''you'';
+吏 > government\-official;
+兀 > to\-cut\-off\-the\-feet;
+胴 > the\-large\-intestine;
+秦 > feudal\-state\-of\-qin;
+桁 > cross\-beams\-of\-roof;
+莎 > kind\-of\-sedge\-grass;
+薛 > kind\-of\-marsh\-grass;
+絣 > to\-baste\-for\-sewing;
+悖 > be\-contradictory\-to;
+芒 > miscanthus\-sinensis;
+嘶 > neighing\-of\-a\-horse;
+叽 > sigh\-in\-disapproval;
+厥 > personal\-pronoun\-he;
+圭 > jade\-pointed\-at\-top;
+徘 > walk\-back\-and\-forth;
+晤 > have\-interview\-with;
+舷 > the\-sides\-of\-a\-boat;
+邬 > various\-place\-names;
+褐 > coarse\-woolen\-cloth;
+馈 > offer\-food\-superior;
+唧 > chirping\-of\-insects;
+咔 > used\-in\-translation;
+灸 > cauterize\-with\-moxa;
+驷 > team\-of\-four\-horses;
+粼 > clear\-\(as\-of\-water\);
+羚 > species\-of\-antelope;
+呓 > talk\-in\-one''s\-sleep;
+篙 > pole\-used\-punt\-boat;
+湍 > rapid\-water\-current;
+脍 > minced\-meat\-or\-fish;
+鏖 > to\-fight\-to\-the\-end;
+肽 > a\-chemical\-compound;
+卟 > a\-chemical\-compound;
+銮 > bells\-hung\-on\-horse;
+笳 > a\-reed\-leaf\-whistle;
+薏 > seed\-of\-job''s\-tears;
+悝 > to\-laugh\-at\-to\-pity;
+豇 > a\-small\-kidney\-bean;
+桉 > eucalyptus\-globulus;
+蹁 > to\-walk\-with\-a\-limp;
+腈 > an\-organic\-compound;
+螟 > kind\-of\-caterpillar;
+泮 > zhou\-dynasty\-school;
+鲳 > the\-silvery\-pomfret;
+霪 > long\-and\-heavy\-rain;
+枘 > the\-handle\-of\-tools;
+滹 > the\-bank\-of\-a\-steam;
+彳 > step\-with\-left\-foot;
+亍 > to\-take\-small\-steps;
+砘 > a\-kind\-of\-farm\-tool;
+栎 > chestnut\-leaved\-oak;
+鹇 > the\-silver\-pheasant;
+苌 > averrhora\-carambola;
+郛 > outer\-walls\-of\-city;
+醢 > minced\-pickled\-meat;
+眚 > disease\-of\-the\-eyes;
+耱 > a\-kind\-of\-farm\-tool;
+裉 > s\-seam\-in\-a\-garment;
+崦 > a\-mountain\-in\-kansu;
+兕 > a\-female\-rhinoceros;
+鸒 > the\-eastern\-jackdaw;
+鷳 > the\-silver\-pheasant;
+鶲 > siberian\-flycatcher;
+鰶 > konosirus\-punctatus;
+鯧 > the\-silvery\-pomfret;
+鯥 > pomatomus\-saltatrix;
+鯕 > coryphaena\-hippurus;
+鮶 > sebastodes\-guntheri;
+駟 > team\-of\-four\-horses;
+饋 > offer\-food\-superior;
+飂 > wind\-in\-high\-places;
+颾 > blowing\-of\-the\-wind;
+頖 > zhou\-dynasty\-school;
+頍 > to\-raise\-one''s\-head;
+韘 > archer''s\-thumb\-ring;
+鞬 > a\-quiver\-on\-a\-horse;
+霶 > downpouring\-of\-rain;
+霮 > denseness\-of\-clouds;
+鑾 > bells\-hung\-on\-horse;
+鑴 > to\-engrave\-or\-carve;
+鎄 > iridium\-einsteinium;
+鋑 > to\-engrave\-or\-carve;
+鈃 > ancient\-wine\-vessel;
+酧 > to\-pledge\-with\-wine;
+鄔 > various\-place\-names;
+襴 > a\-one\-piece\-garment;
+褃 > a\-seam\-in\-a\-garment;
+蠰 > cerambyx\-rugicollis;
+蟨 > the\-siberian\-jerboa;
+蝝 > the\-larva\-of\-locust;
+蔊 > nasturtium\-montanum;
+蓇 > follicles\-of\-plants;
+蒈 > an\-organic\-compound;
+葇 > elsholtria\-paltrini;
+萇 > averrhora\-carambola;
+莕 > nymphoides\-peltatum;
+茳 > cyperus\-malaccensis;
+茚 > an\-organic\-compound;
+苳 > petasites\-japonicus;
+苊 > an\-organic\-compound;
+艫 > bow\-or\-prow\-of\-boat;
+舻 > bow\-or\-prow\-of\-boat;
+舮 > bow\-or\-prow\-of\-boat;
+膾 > minced\-meat\-or\-fish;
+腙 > an\-organic\-compound;
+脎 > an\-organic\-compound;
+胩 > an\-organic\-compound;
+肼 > an\-organic\-compound;
+肟 > an\-organic\-compound;
+耢 > a\-kind\-of\-farm\-tool;
+羢 > fine\-woolen\-fabrics;
+羑 > a\-guide\-to\-goodness;
+繲 > to\-work\-as\-a\-tailor;
+綀 > a\-kind\-of\-sackcloth;
+竑 > be\-vast\-and\-endless;
+禓 > to\-drive\-out\-demons;
+祐 > divine\-intervention;
+砜 > an\-organic\-compound;
+矔 > brilliant\-\(of\-eyes\);
+瞕 > cataract\-in\-the\-eye;
+櫟 > chestnut\-leaved\-oak;
+檪 > chestnut\-leaved\-oak;
+桪 > mythical\-giant\-tree;
+柮 > flat\-pieces\-of\-wood;
+暵 > dry\-by\-exposing\-sun;
+斝 > small\-jade\-wine\-cup;
+敄 > to\-put\-forth\-effort;
+撍 > to\-hold\-in\-the\-hand;
+揝 > to\-hold\-in\-the\-hand;
+揕 > roll\-up\-the\-sleeves;
+尗 > younger\-of\-brothers;
+壐 > the\-imperial\-signet;
+垕 > used\-in\-place\-names;
+圛 > used\-in\-place\-names;
+囈 > talk\-in\-one''s\-sleep;
+嘰 > sigh\-in\-disapproval;
+喞 > chirping\-of\-insects;
+唚 > vomiting\-of\-animals;
+哌 > used\-in\-translation;
+呺 > voice\-of\-anger\-vast;
+吖 > used\-in\-translation;
+偘 > ancient\-family\-name;
+䶯 > used\-in\-girl''s\-name;
+䶒 > outstanding\-ability;
+䶌 > a\-pustule\-or\-pimple;
+䶄 > striped\-mottled\-rat;
+䵱 > red\-and\-black\-color;
+䵮 > red\-and\-black\-color;
+䵔 > to\-turn\-on\-the\-heel;
+䴪 > a\-fabulous\-creature;
+䴠 > a\-young\-tailed\-deer;
+䱧 > a\-kind\-of\-fish\-eels;
+䰜 > a\-large\-earthen\-pot;
+䰛 > a\-large\-earthen\-pot;
+䮷 > movement\-of\-a\-horse;
+䮃 > to\-go\-before\-others;
+䭹 > movement\-of\-a\-horse;
+䫱 > a\-part\-of\-the\-skull;
+䫩 > to\-shake\-one''s\-head;
+䫅 > to\-shake\-one''s\-head;
+䪿 > the\-top\-of\-the\-head;
+䪽 > hoary\-haired\-person;
+䩷 > the\-sides\-of\-a\-shoe;
+䩧 > to\-tie\-up\-hurriedly;
+䩌 > to\-have\-a\-worn\-look;
+䧔 > to\-meet\-at\-the\-bank;
+䦙 > a\-government\-agency;
+䥴 > to\-engrave\-or\-carve;
+䥧 > a\-fine\-kind\-of\-jade;
+䤆 > a\-kind\-of\-rice\-wine;
+䤁 > cooked\-or\-well\-done;
+䣭 > an\-organic\-compound;
+䢋 > a\-marshal\-or\-herald;
+䠊 > to\-cut\-off\-the\-feet;
+䟣 > an\-animal\-in\-legend;
+䞳 > to\-stumble\-and\-fall;
+䝠 > a\-kind\-of\-wild\-boar;
+䜶 > a\-small\-kidney\-bean;
+䜁 > to\-abuse\-and\-insult;
+䙒 > to\-store\-or\-save\-up;
+䙏 > short\-sleeves\-shirt;
+䙁 > children''s\-garments;
+䘪 > clothes\-without\-hem;
+䖢 > first\-born\-silkworm;
+䖖 > to\-show\-familiarity;
+䕾 > a\-kind\-of\-vegetable;
+䕟 > a\-kind\-of\-vegetable;
+䕘 > a\-variety\-of\-fungus;
+䕃 > the\-shade\-of\-a\-tree;
+䔗 > a\-kind\-of\-vegetable;
+䓷 > nymphoides\-peltalum;
+䓚 > a\-kind\-of\-vegetable;
+䓍 > cruciferous\-flowers;
+䒨 > a\-kind\-of\-vegetable;
+䒈 > side\-beam\-of\-a\-boat;
+䒀 > short\-and\-deep\-boat;
+䑇 > medicine\-for\-a\-sore;
+䐭 > a\-discharge\-or\-flux;
+䏹 > to\-watch\-stealthily;
+䏷 > medicine\-for\-a\-sore;
+䏨 > to\-swell\-up\-greatly;
+䏆 > buzzing\-in\-the\-ears;
+䎿 > buzzing\-in\-the\-ears;
+䍷 > to\-chase\-each\-other;
+䍀 > clothes\-without\-hem;
+䌎 > to\-baste\-for\-sewing;
+䋹 > breadth\-of\-material;
+䋰 > to\-bind\-or\-restrain;
+䊙 > cooked\-or\-well\-done;
+䇽 > a\-coarse\-bamboo\-mat;
+䆯 > a\-short\-shaped\-face;
+䅯 > a\-variety\-of\-millet;
+䅟 > varieties\-of\-millet;
+䅕 > a\-variety\-of\-millet;
+䅒 > a\-sharp\-edged\-grass;
+䁋 > with\-one\-eye\-closed;
+䁃 > to\-look\-attentively;
+䀤 > insight\-of\-jealousy;
+䀣 > to\-look\-steadily\-at;
+㿓 > disease\-of\-the\-hoof;
+㾻 > not\-any\-progressive;
+㾶 > disease\-of\-the\-knee;
+㾢 > a\-malignant\-disease;
+㽭 > vacant\-lot\-or\-space;
+㽌 > the\-ridge\-of\-a\-roof;
+㽂 > a\-cracked\-container;
+㽁 > a\-large\-earthen\-pot;
+㼙 > brickwork\-of\-a\-well;
+㼒 > a\-kind\-of\-big\-melon;
+㸶 > color\-of\-the\-oxtail;
+㸵 > the\-lowing\-of\-an\-ox;
+㸥 > household\-registers;
+㸢 > cross\-beam\-of\-a\-bed;
+㸞 > blocks\-for\-printing;
+㸓 > to\-have\-disappeared;
+㸏 > cooked\-or\-well\-done;
+㸀 > blackened\-with\-soot;
+㷤 > rosy\-clouds\-of\-dawn;
+㲇 > the\-rattle\-of\-drums;
+㱾 > a\-kind\-of\-ornaments;
+㱼 > a\-kind\-of\-ornaments;
+㱹 > to\-die\-from\-disease;
+㱫 > destroyed\-or\-ruined;
+㱪 > stupid\-and\-confused;
+㱊 > asthmatic\-breathing;
+㱉 > moving\-of\-the\-mouth;
+㰴 > to\-grate\-on\-the\-ear;
+㰰 > asthmatic\-breathing;
+㰯 > the\-way\-of\-speaking;
+㯁 > household\-registers;
+㫯 > in\-contravention\-of;
+㩦 > to\-lead\-by\-the\-hand;
+㩘 > to\-moor\-to\-the\-bank;
+㩗 > to\-lead\-by\-the\-hand;
+㨝 > the\-very\-hard\-stuff;
+㨀 > to\-hold\-in\-the\-hand;
+吏 > government\-official;
+㧅 > to\-turn\-upside\-down;
+羚 > species\-of\-antelope;
+㦓 > difficult\-intention;
+㥝 > to\-arouse\-to\-action;
+㢊 > to\-set\-side\-by\-side;
+㢂 > of\-highly\-strategic;
+㟱 > shape\-of\-a\-mountain;
+㟓 > lofty\-and\-dangerous;
+㟒 > mountains\-adjoining;
+㝟 > in\-contravention\-of;
+㜱 > used\-in\-girl''s\-name;
+㜦 > used\-in\-girl''s\-name;
+㜡 > used\-in\-girl''s\-name;
+㜠 > used\-in\-girl''s\-name;
+㜙 > used\-in\-girl''s\-name;
+㜐 > used\-in\-girl''s\-name;
+㜍 > used\-in\-girl''s\-name;
+㜋 > used\-in\-girl''s\-name;
+㜂 > used\-in\-girl''s\-name;
+㛸 > used\-in\-girl''s\-name;
+㛷 > used\-in\-girl''s\-name;
+㛵 > used\-in\-girl''s\-name;
+㛭 > used\-in\-girl''s\-name;
+㛬 > used\-in\-girl''s\-name;
+㛫 > used\-in\-girl''s\-name;
+㛞 > used\-in\-girl''s\-name;
+㛝 > used\-in\-girl''s\-name;
+㛜 > used\-in\-girl''s\-name;
+㛙 > used\-in\-girl''s\-name;
+㛘 > used\-in\-girl''s\-name;
+㛖 > used\-in\-girl''s\-name;
+㛓 > used\-in\-girl''s\-name;
+㛏 > used\-in\-girl''s\-name;
+㛅 > used\-in\-girl''s\-name;
+㛄 > used\-in\-girl''s\-name;
+㚽 > used\-in\-girl''s\-name;
+㚸 > used\-in\-girl''s\-name;
+㚵 > used\-in\-girl''s\-name;
+㚱 > used\-in\-girl''s\-name;
+㚭 > used\-in\-girl''s\-name;
+㚫 > used\-in\-girl''s\-name;
+㚨 > used\-in\-girl''s\-name;
+㘫 > to\-fall\-into\-a\-well;
+㗶 > to\-expel\-the\-breath;
+㖪 > sound\-of\-surprising;
+㔹 > a\-surplus\-or\-excess;
+㔇 > a\-kind\-of\-farm\-tool;
+㓽 > a\-kind\-of\-farm\-tool;
+㓷 > to\-cut\-off\-the\-nose;
+㒔 > to\-shake\-one''s\-head;
+㒄 > brittle\-and\-friable;
+㒃 > capital\-form\-of\-two;
+㑛 > to\-shake\-one''s\-head;
+玖 > black\-colored\-jade;
+哪 > which\?\-where\?\-how\?;
+牲 > sacrificial\-animal;
+漢 > the\-chinese\-people;
+漕 > transport\-by\-water;
+阴 > ''female''\-principle;
+仙 > taoist\-super\-being;
+驻 > to\-be\-stationed\-at;
+駐 > to\-be\-stationed\-at;
+腮 > lower\-part\-of\-face;
+拒 > ward\-off\-with\-hand;
+桂 > cassia\-or\-cinnamon;
+朵 > cluster\-of\-flowers;
+曹 > ministry\-officials;
+罎 > an\-earthenware\-jar;
+陰 > ''female''\-principle;
+丸 > small\-round\-object;
+矩 > carpenter''s\-square;
+腊 > year\-end\-sacrifice;
+龟 > turtle\-or\-tortoise;
+邸 > official\-residence;
+侃 > upright\-and\-strong;
+邂 > unexpected\-meeting;
+怯 > lacking\-in\-courage;
+甸 > suburbs\-of\-capital;
+捞 > scoop\-out\-of\-water;
+扛 > carry\-on\-shoulders;
+虔 > act\-with\-reverence;
+霖 > long\-spell\-of\-rain;
+韧 > strong\-and\-pliable;
+瑾 > brilliance\-of\-gems;
+桔 > chinese\-bellflower;
+鸳 > male\-mandarin\-duck;
+钗 > ornamental\-hairpin;
+巅 > summit\-of\-mountain;
+樨 > osmanthus\-fragrans;
+蠡 > wood\-boring\-insect;
+蹂 > trample\-under\-foot;
+骥 > thoroughbred\-horse;
+唁 > express\-condolence;
+骅 > an\-excellent\-horse;
+碉 > room\-made\-of\-stone;
+疟 > intermittent\-fever;
+纣 > name\-of\-an\-emperor;
+磬 > musical\-instrument;
+爿 > half\-of\-tree\-trunk;
+旎 > fluttering\-of\-flag;
+夔 > one\-legged\-monster;
+殍 > to\-starve\-to\-death;
+骊 > a\-pure\-black\-horse;
+湎 > flushed\-with\-drink;
+喵 > the\-mew\-of\-the\-cat;
+焙 > dry\-over\-slow\-fire;
+绾 > to\-string\-together;
+眦 > corner\-of\-the\-eyes;
+瑁 > fine\-piece\-of\-jade;
+榘 > carpenter''s\-square;
+粳 > non\-glutinous\-rice;
+餮 > a\-legendary\-animal;
+汊 > a\-branching\-stream;
+缃 > light\-yellow\-color;
+檩 > the\-bole\-of\-a\-tree;
+奁 > lady''s\-vanity\-case;
+楸 > mallotus\-japonicus;
+骺 > tip\-of\-a\-long\-bone;
+藿 > lophanthus\-rugosus;
+樾 > the\-shade\-of\-trees;
+酤 > to\-deal\-in\-spirits;
+臌 > dropsical\-swelling;
+跫 > sound\-of\-footsteps;
+綮 > embroidered\-banner;
+觳 > an\-ancient\-measure;
+杌 > the\-stump\-f\-a\-tree;
+嵫 > a\-hill\-in\-shantung;
+擗 > to\-beat\-the\-breast;
+脔 > small\-lump\-of\-meat;
+醅 > unstrained\-spirits;
+羰 > carbonyl\-\(radical\);
+蛸 > long\-legged\-spider;
+瞀 > to\-look\-at\-closely;
+殳 > name\-of\-old\-weapon;
+崞 > mountain\-in\-shanxi;
+垲 > high\-and\-dry\-place;
+虿 > a\-kind\-of\-scorpion;
+疳 > childhood\-diseases;
+罾 > a\-large\-square\-net;
+獬 > a\-fabulous\-monster;
+龜 > turtle\-or\-tortoise;
+龖 > flight\-of\-a\-dragon;
+鸜 > a\-species\-of\-mynah;
+鷽 > oriental\-bullfinch;
+鴛 > male\-mandarin\-duck;
+鴗 > alcedo\-bengalensis;
+鱵 > hyporhampus\-sajuri;
+鬠 > to\-make\-a\-top\-knot;
+驪 > a\-pure\-black\-horse;
+驥 > thoroughbred\-horse;
+驊 > an\-excellent\-horse;
+餼 > sacrificial\-victim;
+顋 > lower\-part\-of\-face;
+頔 > good\-and\-beautiful;
+韌 > strong\-and\-pliable;
+靱 > strong\-and\-pliable;
+靭 > strong\-and\-pliable;
+靫 > strong\-and\-pliable;
+釵 > ornamental\-hairpin;
+釒 > kangxi\-radical\-167;
+鄮 > ancient\-place\-name;
+轙 > rings\-on\-the\-yokes;
+軰 > a\-row\-of\-carriages;
+谽 > a\-mouth\-or\-opening;
+訁 > kangxi\-radical\-149;
+襵 > a\-pleat\-in\-a\-skirt;
+褰 > lift\-up\-the\-skirts;
+蠆 > a\-kind\-of\-scorpion;
+蚹 > eulota\-peliomphala;
+蘷 > one\-legged\-monster;
+薷 > elshotria\-paltrini;
+蕺 > houttuynia\-cordata;
+蓴 > edible\-water\-plant;
+葴 > physalis\-alkekengi;
+荅 > answer\:\-small\-bean;
+茖 > allium\-victorialis;
+芣 > medicinal\-plantago;
+臠 > small\-lump\-of\-meat;
+臘 > year\-end\-sacrifice;
+臈 > year\-end\-sacrifice;
+翯 > glistening\-plumage;
+翖 > ksc\-extension\-3108;
+羧 > carboxyl\-\(radical\);
+罈 > an\-earthenware\-jar;
+緗 > light\-yellow\-color;
+綰 > to\-string\-together;
+紂 > name\-of\-an\-emperor;
+糒 > food\-for\-a\-journey;
+稉 > non\-glutinous\-rice;
+秔 > non\-glutinous\-rice;
+碞 > room\-made\-of\-stone;
+皪 > luster\-\(of\-pearls\);
+瘧 > intermittent\-fever;
+痜 > a\-scabby\-bald\-head;
+甿 > farming\-population;
+甋 > a\-jar\-without\-ears;
+琤 > jade\-of\-jade\-being;
+玘 > court\-dress\-jewels;
+獳 > fierce\-dog\-looking;
+煍 > to\-colour\-by\-smoke;
+灥 > a\-group\-of\-springs;
+泲 > kind\-of\-white\-wine;
+氍 > fine\-woollen\-cloth;
+檁 > the\-bole\-of\-a\-tree;
+柺 > an\-old\-man''s\-staff;
+杻 > ligustrum\-sinenese;
+杙 > a\-tiny\-wooden\-post;
+朶 > cluster\-of\-flowers;
+昷 > to\-feed\-a\-prisoner;
+旼 > gentle\-and\-affable;
+擭 > trap\-catch\-animals;
+撈 > scoop\-out\-of\-water;
+彄 > nock\-at\-end\-of\-bow;
+巔 > summit\-of\-mountain;
+巓 > summit\-of\-mountain;
+嶨 > big\-rocky\-mountain;
+嵖 > name\-of\-a\-mountain;
+峹 > name\-of\-a\-mountain;
+峱 > name\-of\-a\-mountain;
+岢 > name\-of\-a\-mountain;
+岍 > name\-of\-a\-mountain;
+奩 > lady''s\-vanity\-case;
+壜 > earthen\-jar\-or\-jug;
+墰 > an\-earthenware\-jar;
+墐 > to\-build\-with\-soil;
+塏 > high\-and\-dry\-place;
+噋 > to\-swallow\-hastily;
+哰 > incoherent\-chatter;
+僊 > taoist\-super\-being;
+佷 > to\-act\-contrary\-to;
+亀 > turtle\-or\-tortoise;
+乑 > stand\-side\-by\-side;
+丬 > half\-of\-tree\-trunk;
+䶣 > to\-grind\-the\-teeth;
+䶟 > to\-gnash\-the\-teeth;
+䵕 > a\-varietyof\-millet;
+䴱 > cakes\-and\-biscuits;
+䴦 > a\-legendary\-animal;
+䳨 > the\-female\-phoenix;
+䳔 > a\-pigeon\-like\-bird;
+䳎 > a\-pigeon\-like\-bird;
+䱳 > a\-kind\-of\-sturgeon;
+䱣 > a\-long\-narrow\-fish;
+䰪 > mischievous\-spirit;
+䰨 > mischievous\-spirit;
+䯱 > the\-hair\-stands\-up;
+䯏 > the\-shoulder\-blade;
+䯋 > the\-shoulder\-blade;
+䮥 > color\-of\-the\-horse;
+䮝 > a\-legendary\-animal;
+䭰 > strong\-sweet\-smell;
+䭯 > strong\-sweet\-smell;
+䭋 > to\-eat\-to\-the\-full;
+䭃 > to\-eat\-to\-the\-fool;
+䬾 > cakes\-and\-biscuits;
+䬴 > fodder\-for\-animals;
+䬬 > to\-eat\-to\-the\-full;
+䬨 > to\-eat\-to\-the\-full;
+䬧 > round\-shaped\-cakes;
+䫐 > to\-bend\-one''s\-head;
+䪌 > cushion\-for\-saddle;
+䨆 > a\-kind\-of\-pheasant;
+䧼 > the\-the\-snow\-goose;
+䧦 > name\-of\-a\-hillside;
+䧇 > name\-of\-a\-hillside;
+䦮 > door\-of\-the\-center;
+䦒 > the\-door\-is\-closed;
+䦐 > the\-bolt\-of\-a\-door;
+䥳 > a\-chemical\-element;
+䥲 > a\-chemical\-element;
+䥞 > to\-cut\-with\-shears;
+䥝 > desperate\-fighting;
+䤄 > flushed\-with\-drink;
+䣺 > filtrated\-the\-wine;
+䣀 > name\-of\-a\-mountain;
+䡠 > strong\-and\-durable;
+䡛 > name\-of\-a\-carriage;
+䠧 > hard\-to\-go\-forward;
+䠡 > sound\-of\-footsteps;
+䟝 > to\-walk\-right\-into;
+䝞 > name\-of\-a\-immortal;
+䛉 > to\-induce\-by\-words;
+䚧 > curved\-with\-angles;
+䙃 > sleeveless\-clothes;
+䘍 > a\-kind\-of\-scorpion;
+䗻 > a\-kind\-of\-sea\-crab;
+䗨 > lepsima\-saccharina;
+䗣 > insect\-of\-mulberry;
+䗍 > wood\-boring\-insect;
+䖧 > a\-poisonous\-insect;
+䖓 > of\-a\-walking\-tiger;
+䕪 > the\-water\-plantain;
+䔼 > sound\-of\-the\-grass;
+䔃 > cordate\-houttuynia;
+䓫 > name\-of\-a\-mountain;
+䓨 > long\-necked\-bottle;
+䓠 > the\-water\-plantain;
+䓖 > cnidium\-officinale;
+䓃 > melancholy\-and\-sad;
+䒝 > root\-of\-the\-thatch;
+䑙 > put\-out\-the\-tongue;
+䑆 > feel\-like\-vomiting;
+䐔 > muscle\-of\-the\-calf;
+䎾 > big\-and\-round\-eyes;
+䎴 > a\-legendary\-spirit;
+䎪 > the\-stalk\-of\-grain;
+䎔 > fine\-and\-soft\-hair;
+䎏 > young\-birds\-flying;
+䎍 > fine\-and\-soft\-hair;
+䍩 > to\-offer\-provision;
+䍣 > a\-kind\-of\-fish\-net;
+䌍 > fine\-woven\-pattern;
+䌉 > the\-large\-of\-a\-net;
+䋗 > strong\-and\-durable;
+䋈 > to\-bind\-loose\-hemp;
+䉬 > coarse\-bamboo\-mats;
+䈮 > a\-woven\-instrument;
+䇳 > a\-memoradum\-tablet;
+䆪 > color\-of\-the\-light;
+䆥 > to\-pierce\-throughj;
+䆤 > to\-pierce\-throughj;
+䆑 > a\-little\-protruded;
+䅽 > fragrance\-or\-aroma;
+䅱 > to\-eat\-to\-the\-full;
+䅧 > fine\-rice\-seedling;
+䅝 > the\-stalk\-of\-grain;
+䅜 > to\-store\-up\-grains;
+䅀 > the\-stalk\-of\-grain;
+䄚 > to\-worship\-the\-god;
+䃽 > name\-of\-a\-mountain;
+䃜 > a\-fine\-black\-stone;
+䁊 > dark\-and\-deep\-eyed;
+䀞 > with\-heavy\-eyelids;
+䀗 > to\-look\-askance\-at;
+㿌 > lump\-in\-the\-throat;
+㼣 > bricks\-of\-the\-well;
+㼇 > fine\-jade\-or\-agate;
+㻗 > a\-string\-of\-pearls;
+㻊 > a\-red\-colored\-jade;
+㻅 > jade\-decorated\-cap;
+㺧 > a\-white\-yellow\-dog;
+㹤 > lacking\-in\-courage;
+㸽 > a\-two\-years\-old\-ox;
+㸬 > a\-two\-years\-old\-ox;
+㸈 > scorched\-or\-burned;
+㷳 > color\-of\-the\-flame;
+㷢 > bundle\-of\-charcoal;
+㷠 > a\-will\-o''\-the\-wisp;
+㶶 > scorched\-or\-burned;
+㵓 > the\-water\-is\-clear;
+㴾 > swelling\-or\-rising;
+㳂 > to\-follow\-a\-course;
+㲡 > thick\-coat\-of\-hair;
+㲗 > to\-smooth\-the\-hair;
+㯶 > the\-coir\-palm\-tree;
+㯲 > a\-wooden\-framework;
+㯛 > gourd\-shaped\-dates;
+㮻 > to\-scratch\-lightly;
+㮍 > amemorandum\-tablet;
+㭨 > the\-cocoa\-nut\-palm;
+㭡 > name\-of\-a\-mountain;
+㭝 > name\-of\-a\-pavilion;
+㬴 > the\-moon\-is\-dimmed;
+㬒 > the\-sun\-are\-dimmed;
+㬎 > motes\-in\-a\-sunbeam;
+㫦 > of\-look\-of\-the\-sun;
+㫞 > of\-look\-of\-the\-sun;
+㪸 > to\-fill\-a\-cup\-with;
+㩃 > to\-take\-or\-capture;
+㨽 > to\-cut\-or\-rip\-open;
+㨡 > to\-push\-with\-hands;
+㨜 > to\-help\-each\-other;
+杻 > ligustrum\-sinenese;
+㧀 > the\-bolt\-of\-a\-door;
+㦾 > the\-bolt\-of\-a\-door;
+驪 > a\-pure\-black\-horse;
+㥸 > to\-sympathize\-with;
+㥨 > unhappy\-displeased;
+㤪 > to\-find\-fault\-with;
+臘 > year\-end\-sacrifice;
+龜 > turtle\-or\-tortoise;
+龜 > turtle\-or\-tortoise;
+㣌 > to\-join\-two\-things;
+㡯 > wall\-of\-a\-building;
+㠦 > name\-of\-a\-mountain;
+㠠 > name\-of\-a\-mountain;
+㠓 > name\-of\-a\-mountain;
+㠏 > name\-of\-a\-mountain;
+㠆 > name\-of\-a\-mountain;
+㟳 > name\-of\-a\-mountain;
+㟰 > name\-of\-a\-mountain;
+㟪 > name\-of\-a\-mountain;
+㟦 > name\-of\-a\-mountain;
+㟘 > name\-of\-a\-mountain;
+㟍 > name\-of\-a\-mountain;
+㟊 > name\-of\-a\-mountain;
+㟈 > name\-of\-a\-mountain;
+㟆 > name\-of\-a\-mountain;
+㟄 > name\-of\-a\-mountain;
+㟀 > name\-of\-a\-mountain;
+㞻 > name\-of\-a\-mountain;
+㞴 > name\-of\-a\-mountain;
+㞳 > name\-of\-a\-mountain;
+㞲 > name\-of\-a\-mountain;
+㞰 > name\-of\-a\-mountain;
+㞨 > name\-of\-a\-mountain;
+㞦 > name\-of\-a\-mountain;
+㘳 > a\-hillock\-or\-mound;
+㘱 > to\-fall\-into\-ruins;
+㘜 > a\-kind\-of\-silkworm;
+㖅 > sound\-of\-a\-whistle;
+㖃 > to\-roar\-of\-animals;
+㔢 > to\-break\-something;
+皿 > shallow\-container;
+屓 > gigantic\-strength;
+派 > school\-of\-thought;
+姓 > one''s\-family\-name;
+煎 > fry\-in\-fat\-or\-oil;
+襁 > swaddling\-clothes;
+哈 > sound\-of\-laughter;
+鸚 > species\-of\-parrot;
+欧 > translit\.\:\-europe;
+鵡 > species\-of\-parrot;
+订 > draw\-up\-agreement;
+偏 > inclined\-one\-side;
+歔 > blow\-through\-nose;
+培 > bank\-up\-with\-dirt;
+漫 > overflow\-of\-water;
+侠 > chivalrous\-person;
+姆 > child''s\-governess;
+盒 > small\-box\-or\-case;
+儒 > confucian\-scholar;
+阪 > hillside\-farmland;
+迈 > take\-a\-big\-stride;
+捏 > pick\-with\-fingers;
+浙 > zhejiang\-province;
+筧 > bamboo\-water\-pipe;
+艘 > counter\-for\-ships;
+趁 > take\-advantage\-of;
+鉢 > earthenware\-basin;
+蓬 > type\-of\-raspberry;
+辖 > linchpin\-of\-wheel;
+逅 > meet\-unexpectedly;
+嘎 > sound\-of\-laughter;
+酣 > enjoy\-intoxicants;
+饺 > stuffed\-dumplings;
+咏 > sing\-song\-or\-poem;
+钵 > earthenware\-basin;
+搀 > give\-helping\-hand;
+捶 > strike\-with\-stick;
+刨 > carpenter''s\-plane;
+蠕 > eumenes\-polifomis;
+饨 > stuffed\-dumplings;
+崆 > kongtong\-mountain;
+盅 > small\-cup\-or\-bowl;
+梆 > watchman''s\-rattle;
+嵇 > mountain\-in\-henan;
+耷 > ears\-hanging\-down;
+羌 > qiang\-nationality;
+苞 > a\-variety\-of\-rush;
+鹦 > species\-of\-parrot;
+藜 > chenopodium\-album;
+艄 > stern\-of\-a\-vessel;
+鹉 > species\-of\-parrot;
+峁 > yellow\-dirt\-mount;
+镔 > high\-quality\-iron;
+鲫 > carassius\-auratus;
+龇 > to\-show\-the\-teeth;
+沭 > river\-in\-shantung;
+榫 > mortise\-and\-tenon;
+萋 > luxuriant\-foliage;
+醮 > religious\-service;
+牝 > female\-of\-species;
+曷 > why\?\-what\?\-where\?;
+瑷 > fine\-quality\-jade;
+耦 > plow\-side\-by\-side;
+鸶 > the\-eastern\-egret;
+篦 > fine\-toothed\-comb;
+妁 > act\-as\-go\-between;
+荥 > a\-county\-in\-henan;
+戽 > to\-bale\-out\-water;
+枳 > trifoliate\-orange;
+椐 > zelkowa\-acuminata;
+崤 > mountain\-in\-henan;
+魉 > a\-kind\-of\-monster;
+颞 > the\-temporal\-bone;
+锴 > high\-quality\-iron;
+笕 > bamboo\-water\-pipe;
+耩 > to\-plough\.\-to\-sow;
+廨 > government\-office;
+蟮 > type\-of\-earthworm;
+蛱 > kind\-of\-butterfly;
+禳 > pray\-or\-sacrifice;
+瞢 > eyesight\-obscured;
+蔸 > counter\-for\-plant;
+螅 > \(intestinal\-worm\);
+祧 > an\-ancestral\-hall;
+柝 > watchman''s\-rattle;
+蠃 > the\-solitary\-wasp;
+蜾 > the\-solitary\-wasp;
+聃 > ears\-without\-rims;
+耜 > spade\-shaped\-tool;
+慝 > do\-evil\-in\-secret;
+庳 > a\-low\-built\-house;
+鼢 > a\-variety\-of\-mole;
+蚺 > a\-boa\-constrictor;
+颥 > the\-temporal\-bone;
+硇 > a\-kind\-of\-mineral;
+硭 > a\-crude\-saltpetre;
+胨 > a\-kind\-of\-protein;
+齜 > to\-show\-the\-teeth;
+齄 > red\-sores\-on\-nose;
+黟 > black\-and\-shining;
+鹁 > species\-of\-pigeon;
+鵵 > scops\-semitorques;
+鵓 > species\-of\-pigeon;
+鯽 > carassius\-auratus;
+鮸 > sciaena\-albiflora;
+魫 > the\-young\-of\-fish;
+魎 > a\-kind\-of\-monster;
+髽 > to\-dress\-the\-hair;
+饩 > sacrficial\-victim;
+餃 > stuffed\-dumplings;
+餂 > to\-obtain\-by\-hook;
+飩 > stuffed\-dumplings;
+顳 > the\-temporal\-bone;
+顬 > the\-temporal\-bone;
+鞸 > leather\-arm\-guard;
+鞲 > leather\-arm\-guard;
+靿 > the\-leg\-of\-a\-boot;
+隸 > be\-subservient\-to;
+隷 > be\-subservient\-to;
+閪 > to\-lose\-lost\-item;
+鑤 > carpenter''s\-plane;
+鑌 > high\-quality\-iron;
+鍇 > high\-quality\-iron;
+銠 > rhodium\-ruthenium;
+鉕 > promethium\-bronze;
+鉋 > carpenter''s\-plane;
+鈳 > columbium\-niobium;
+醭 > moulds\-on\-liquids;
+醑 > to\-strain\-spirits;
+酺 > drink\-with\-others;
+邁 > take\-a\-big\-stride;
+轄 > linchpin\-of\-wheel;
+貍 > a\-fox\-like\-animal;
+豋 > ceremonial\-vessel;
+訂 > draw\-up\-agreement;
+覼 > explain\-in\-detail;
+覙 > explain\-in\-detail;
+蝡 > eumenes\-polifomis;
+蜔 > inlaid\-shell\-work;
+蛺 > kind\-of\-butterfly;
+蚦 > a\-boa\-constrictor;
+蘵 > physalis\-angulata;
+藨 > kind\-of\-raspberry;
+蕸 > water\-lily''s\-leaf;
+蕑 > valeriana\-villosa;
+葎 > humulus\-japonicus;
+菣 > artemisia\-apiacea;
+莛 > stalks\-of\-grasses;
+茍 > to\-be\-circumspect;
+罛 > large\-fishing\-net;
+缽 > earthenware\-basin;
+縰 > band\-for\-the\-hair;
+綎 > silk\-braided\-cord;
+紬 > kind\-of\-thin\-silk;
+籸 > powdery\-substance;
+籓 > big\-winnow\-basket;
+篨 > coarse\-bamboo\-mat;
+箆 > fine\-toothed\-comb;
+祊 > river\-in\-shandong;
+瘵 > a\-wasting\-disease;
+璫 > pendant\-ornaments;
+璦 > fine\-quality\-jade;
+玞 > an\-inferior\-agate;
+熀 > the\-blaze\-of\-fire;
+灎 > movement\-of\-water;
+湑 > to\-strain\-spirits;
+渰 > forming\-or\-rising;
+洶 > the\-rush\-of\-water;
+朠 > color\-of\-the\-moon;
+暔 > name\-of\-a\-country;
+攰 > totally\-exhausted;
+掫 > be\-on\-night\-watch;
+捥 > to\-bend\-the\-wrist;
+抌 > to\-bale\-out\-water;
+愰 > clearness\-of\-mind;
+弖 > phonetic\-for\-''te'';
+嵆 > mountain\-in\-henan;
+屭 > gigantic\-strength;
+尨 > shaggy\-haired\-dog;
+夊 > kangxi\-radical\-35;
+喿 > chirping\-of\-birds;
+喼 > used\-phonetically;
+喹 > chemical\-compound;
+哵 > the\-cry\-of\-a\-bird;
+哴 > crying\-of\-infants;
+吢 > vomiting\-of\-a\-dog;
+倈 > to\-induce\-to\-come;
+俠 > chivalrous\-person;
+俈 > to\-inform\-quickly;
+仂 > surplus\-or\-excess;
+乪 > a\-bend\-in\-a\-river;
+䶰 > feather\-ornaments;
+䶖 > disease\-of\-tongue;
+䵜 > to\-plough\-and\-sow;
+䴊 > the\-crow\-pheasant;
+䳤 > a\-kind\-of\-strange;
+䳙 > a\-egret\-like\-bird;
+䯥 > with\-a\-high\-skull;
+䯢 > partial\-paralysis;
+䮫 > a\-big\-mule\-an\-ass;
+䮚 > diseases\-of\-horse;
+䮐 > in\-good\-condition;
+䭔 > steamed\-dumplings;
+䬰 > light\-refreshment;
+䬕 > sound\-of\-the\-wind;
+䬍 > the\-sound\-of\-wind;
+䬆 > a\-blustering\-gale;
+䬃 > the\-sound\-of\-wind;
+䬀 > sound\-of\-the\-wind;
+䫦 > the\-lower\-jawbone;
+䫟 > facial\-complexion;
+䫍 > to\-bow\-one''s\-head;
+䫉 > facial\-appearance;
+䨕 > pouring\-with\-rain;
+䧺 > the\-male\-of\-birds;
+䦪 > sound\-of\-the\-door;
+䦝 > sound\-of\-the\-door;
+䦖 > sound\-of\-the\-door;
+䦃 > to\-dig\-with\-a\-hoe;
+䣻 > color\-of\-the\-wine;
+䣪 > color\-of\-the\-wine;
+䢝 > the\-next\-in\-order;
+䡷 > noise\-of\-vehicles;
+䡪 > fan\-of\-a\-carriage;
+䡙 > an\-armed\-carriage;
+䞕 > color\-of\-the\-fire;
+䞂 > fairly\-prosperous;
+䝺 > to\-pierce\-through;
+䝹 > fairly\-prosperous;
+䝳 > to\-kill\-for\-money;
+䝲 > farewell\-presents;
+䜢 > cruel\-and\-violent;
+䚠 > unbroken\-firewood;
+䚝 > new\-growing\-horns;
+䚚 > horn\-of\-an\-animal;
+䚑 > to\-steal\-a\-glance;
+䚀 > to\-see\-stealthily;
+䙴 > to\-soar\-as\-a\-bird;
+䙪 > a\-loop\-for\-button;
+䘎 > name\-of\-an\-insect;
+䗹 > hairy\-caterpillar;
+䗥 > the\-solitary\-wasp;
+䕧 > zizania\-latifolia;
+䕠 > coarse\-bamboo\-mat;
+䕆 > round\-straw\-quilt;
+䓛 > molecular\-formula;
+䒽 > illicium\-anisatum;
+䒐 > disturbed\-in\-mind;
+䒏 > disturbed\-in\-mind;
+䑼 > ocean\-going\-liner;
+䐠 > between\-the\-flesh;
+䐘 > to\-laugh\-heartily;
+䐖 > to\-laugh\-heartily;
+䏰 > a\-kind\-of\-insects;
+䏛 > a\-kind\-of\-insects;
+䎨 > to\-plough\-and\-sow;
+䍭 > a\-ewe\-or\-she\-goat;
+䍧 > a\-ewe\-or\-she\-goat;
+䍇 > flat\-bottom\-crock;
+䌨 > thin\-silk\-fabrics;
+䋻 > to\-spin\-and\-weave;
+䋺 > a\-swing\-a\-crupper;
+䋘 > to\-hand\-by\-a\-rope;
+䊯 > grains\-with\-beard;
+䊚 > steamed\-dumplings;
+䉌 > crude\-bamboo\-mats;
+䈠 > books\-and\-volumes;
+䆕 > to\-pierce\-through;
+䆔 > to\-pierce\-through;
+䄉 > a\-rite\-or\-service;
+䃿 > a\-rite\-or\-service;
+䂣 > a\-kind\-of\-mineral;
+䁽 > eyesight\-obscured;
+䁸 > eyesight\-obscured;
+䁄 > to\-close\-the\-eyes;
+䀹 > to\-wink\-eyelashes;
+㿃 > an\-ox\-headed\-boil;
+㾱 > incurable\-disease;
+㽍 > an\-earthen\-vessel;
+㼴 > an\-earthen\-vessel;
+㺿 > a\-jade\-like\-stone;
+㶿 > the\-smoke\-went\-up;
+㶴 > a\-very\-great\-fire;
+㵫 > water\-gushing\-out;
+㵍 > filled\-with\-water;
+㵄 > name\-of\-a\-dynasty;
+㳜 > the\-flowing\-water;
+㲲 > fine\-cotton\-cloth;
+㲘 > fine\-woolen\-cloth;
+㲋 > a\-kind\-of\-animals;
+㲃 > smooth\-and\-curved;
+㰩 > sound\-of\-laughter;
+㯿 > handle\-of\-a\-ladle;
+㯦 > the\-game\-of\-chess;
+㮵 > common\-sandalwood;
+㮨 > codium\-macronatum;
+㮚 > the\-chestnut\-tree;
+㬛 > to\-dry\-in\-the\-sun;
+㩮 > to\-lift\-up\-or\-off;
+㩩 > to\-come\-to\-an\-end;
+㩙 > a\-cork\-or\-stopper;
+㨢 > to\-rip\-open\-flesh;
+隸 > be\-subservient\-to;
+㣢 > to\-rest\-from\-work;
+㣓 > literary\-in\-taste;
+㣍 > a\-raised\-platform;
+㢮 > to\-unstring\-a\-bow;
+㢑 > a\-collapsed\-house;
+㢈 > a\-collapsed\-house;
+㢄 > a\-kind\-of\-utensil;
+㡟 > bed\-mats\-for\-baby;
+㠷 > a\-vessel\-for\-rice;
+㠥 > rugged\-and\-uneven;
+㠢 > rugged\-and\-uneven;
+㟴 > lump\-on\-the\-hills;
+㟤 > zhuang\-in\-guangxi;
+㟃 > to\-have\-charge\-of;
+㞭 > name\-of\-an\-island;
+㝌 > prolonged\-illness;
+㛴 > to\-anger\-to\-annoy;
+㚅 > to\-worship\-of\-god;
+㙩 > an\-enclosing\-wall;
+㘦 > wall\-made\-of\-soil;
+㘚 > angry\-air\-of\-look;
+㗼 > eating\-or\-talking;
+㗥 > sound\-of\-striking;
+㖸 > to\-laugh\-heartily;
+㖧 > can\-not\-see\-clear;
+㔝 > strong\-resistance;
+㓾 > to\-wound\-the\-skin;
+㑝 > to\-make\-a\-fool\-of;
+㑏 > to\-stand\-and\-wait;
+㑊 > a\-kind\-of\-disease;
+㐲 > name\-of\-an\-island;
+个 > numerary\-adjunct;
+里 > unit\-of\-distance;
+阳 > ''male''\-principle;
+訝 > express\-surprise;
+黍 > glutinous\-millet;
+剧 > theatrical\-plays;
+蘂 > stamen\-or\-pistil;
+挺 > to\-stand\-upright;
+础 > foundation\-stone;
+劇 > theatrical\-plays;
+舅 > mother''s\-brother;
+萧 > common\-artemisia;
+個 > numerary\-adjunct;
+俺 > personal\-pronoun;
+玲 > tinkling\-of\-jade;
+陽 > ''male''\-principle;
+箇 > numerary\-adjunct;
+捩 > twist\-with\-hands;
+讶 > express\-surprise;
+黛 > blacken\-eyebrows;
+妆 > to\-adorn\-oneself;
+幢 > carriage\-curtain;
+梭 > weaver''s\-shuttle;
+漪 > ripples\-on\-water;
+眷 > take\-interest\-in;
+勋 > meritorious\-deed;
+甭 > there\-is\-no\-need;
+祠 > ancestral\-temple;
+舔 > lick\-with\-tongue;
+蕊 > unopened\-flowers;
+赣 > jiangxi\-province;
+跷 > raise\-one''s\-foot;
+剁 > chop\-by\-pounding;
+薰 > a\-medicinal\-herb;
+叼 > holding\-in\-mouth;
+荼 > bitter\-vegetable;
+徙 > move\-one''s\-abode;
+涔 > river\-in\-shaanxi;
+潢 > expanse\-of\-water;
+秸 > stalks\-of\-millet;
+袈 > buddhist\-cassock;
+珞 > kind\-of\-necklace;
+啾 > wailing\-of\-child;
+亻 > radical\-number\-9;
+舐 > lick\-with\-tongue;
+夙 > early\-in\-morning;
+鹘 > a\-kind\-of\-pigeon;
+娩 > give\-birth\-child;
+姝 > a\-beautiful\-girl;
+懑 > be\-sick\-at\-heart;
+锉 > carpenter''s\-file;
+洱 > a\-lake\-in\-yunnan;
+蝈 > small\-green\-frog;
+帼 > women''s\-headgear;
+狎 > be\-familiar\-with;
+胪 > arrange\-in\-order;
+豢 > domestic\-animals;
+眇 > blind\-in\-one\-eye;
+羿 > legendary\-archer;
+芩 > salt\-marsh\-plant;
+茭 > an\-aquatic\-grass;
+蓖 > castor\-oil\-plant;
+傧 > entertain\-guests;
+薜 > evergreen\-shrubs;
+趺 > sit\-cross\-legged;
+椹 > a\-chopping\-board;
+霈 > torrential\-rains;
+跏 > sit\-cross\-legged;
+曩 > in\-ancient\-times;
+栌 > supporting\-block;
+哚 > chemical\-element;
+筌 > bamboo\-fish\-trap;
+浍 > irrigation\-ditch;
+猁 > a\-kind\-of\-monkey;
+啶 > \-d\-\+\-ine\-\(chem\.\);
+鬯 > sacrificial\-wine;
+鲷 > pagrosomus\-major;
+聱 > bent\-and\-twisted;
+劢 > put\-forth\-effort;
+蟪 > a\-kind\-of\-cicada;
+螗 > a\-kind\-of\-cicada;
+赆 > farewell\-present;
+埯 > cover\-with\-earth;
+鲔 > kind\-of\-sturgeon;
+罨 > medical\-compress;
+嫜 > husband''s\-parent;
+漤 > marinate\-in\-salt;
+嚆 > give\-forth\-sound;
+薹 > cyperus\-rotundus;
+茆 > species\-of\-grass;
+齙 > projecting\-teeth;
+鹶 > salty\-and\-bitter;
+鶻 > a\-kind\-of\-pigeon;
+鯛 > pagrosomus\-major;
+鯆 > the\-skate\-or\-ray;
+鮪 > kind\-of\-sturgeon;
+魬 > sole\-or\-flounder;
+骴 > a\-putrid\-carcase;
+馘 > cut\-off\-left\-ear;
+飀 > soughing\-of\-wind;
+韝 > leather\-arm\-band;
+韊 > a\-case\-for\-a\-bow;
+鞶 > big\-leather\-belt;
+雗 > a\-white\-pheasant;
+隤 > to\-fall\-in\-ruins;
+闠 > gate\-of\-a\-market;
+銼 > carpenter''s\-file;
+銻 > antimony\-stibium;
+銧 > point\-of\-a\-sword;
+鉀 > potassium\-kalium;
+躷 > of\-short\-stature;
+蹺 > raise\-one''s\-foot;
+蹱 > to\-stagger\-along;
+蹐 > take\-short\-steps;
+贛 > jiangxi\-province;
+贐 > farewell\-present;
+賙 > give\-for\-charity;
+豏 > half\-grown\-beans;
+誕 > to\-bear\-children;
+覂 > to\-throw\-a\-rider;
+襱 > legs\-of\-trousers;
+裛 > to\-wrap\-and\-bind;
+袗 > unlined\-garments;
+衎 > to\-give\-pleasure;
+蟿 > acrida\-chinensis;
+蟈 > small\-green\-frog;
+螋 > spider\-millipede;
+蝻 > immature\-locusts;
+虥 > striped\-wild\-cat;
+藦 > edible\-mushrooms;
+藋 > sambucu\-javinica;
+薫 > a\-medicinal\-herb;
+薃 > cyperus\-amuricus;
+蕭 > common\-artemisia;
+蕋 > unopened\-flowers;
+蔇 > luxuriant\-growth;
+葙 > celosia\-argentea;
+菉 > the\-green\-bamboo;
+芘 > malva\-sylvestris;
+芃 > luxuriant\-growth;
+臚 > arrange\-in\-order;
+耼 > ears\-without\-rim;
+綵 > varicolored\-silk;
+紽 > a\-strand\-of\-silk;
+糵 > fermenting\-grain;
+糱 > fermenting\-grain;
+糈 > sacrificial\-rice;
+籧 > crude\-bamboo\-mat;
+箯 > bamboo\-palanquin;
+箊 > bamboo\-with\-thin;
+秷 > sound\-of\-reaping;
+礎 > foundation\-stone;
+磥 > a\-heap\-of\-stones;
+砫 > ancestral\-tablet;
+瞘 > deeply\-sunk\-eyes;
+瞋 > glare\-with\-anger;
+睜 > to\-open\-the\-eyes;
+盦 > lid\-of\-a\-caldron;
+癉 > to\-hate\-bitterly;
+瘅 > to\-hate\-bitterly;
+瓟 > the\-bottle\-gourd;
+猸 > a\-kind\-of\-animal;
+狻 > a\-fabulous\-beast;
+烜 > light\-of\-the\-sun;
+灠 > marinate\-in\-salt;
+澮 > irrigation\-ditch;
+澦 > place\-in\-sichuan;
+澥 > a\-blocked\-stream;
+澔 > radiance\-of\-gems;
+渫 > beating\-of\-ocean;
+浤 > beating\-of\-ocean;
+毮 > to\-pull\-out\-hair;
+毪 > serge\-from\-tibet;
+櫨 > supporting\-block;
+樛 > bending\-branches;
+枲 > male\-nettle\-hemp;
+枒 > the\-coconut\-tree;
+晅 > light\-of\-the\-sun;
+斵 > to\-cut\-to\-pieces;
+斞 > a\-stack\-of\-grain;
+撚 > twirl\-in\-fingers;
+挷 > to\-propel\-a\-boat;
+懣 > be\-sick\-at\-heart;
+弳 > circular\-measure;
+弪 > circular\-measure;
+廵 > to\-go\-on\-circuit;
+幗 > women''s\-headgear;
+嬎 > to\-bear\-multiple;
+媤 > husband''s\-family;
+妝 > to\-adorn\-oneself;
+墤 > to\-fall\-in\-ruins;
+囍 > double\-happiness;
+嚳 > mythical\-emperor;
+嘅 > sound\-of\-sighing;
+嗞 > to\-consult\-about;
+嗁 > give\-forth\-sound;
+喺 > to\-be\-located\-at;
+勳 > meritorious\-deed;
+勲 > meritorious\-deed;
+勱 > put\-forth\-effort;
+勛 > meritorious\-deed;
+刴 > chop\-by\-pounding;
+冓 > a\-secluded\-place;
+儐 > entertain\-guests;
+儊 > rough\-and\-rugged;
+傜 > a\-minority\-tribe;
+䶱 > a\-kind\-of\-turtle;
+䵤 > to\-crack\-or\-chap;
+䵣 > white\-with\-black;
+䵡 > to\-crack\-or\-chap;
+䵃 > a\-kind\-of\-barley;
+䴬 > crumbs\-of\-barley;
+䴤 > a\-kind\-of\-animal;
+䴣 > a\-kind\-of\-animal;
+䴅 > a\-legendary\-bird;
+䳢 > small\-wild\-goose;
+䳟 > a\-legendary\-bird;
+䳐 > an\-owl\-like\-bird;
+䲲 > a\-hawk\-like\-bird;
+䲦 > a\-legendary\-bird;
+䰃 > dishevelled\-hair;
+䯳 > loosely\-arranged;
+䯮 > dishevelled\-hair;
+䯇 > to\-exert\-oneself;
+䮴 > unstable\-walking;
+䮳 > to\-give\-birth\-to;
+䮩 > a\-kind\-of\-animal;
+䮠 > a\-kind\-of\-animal;
+䮁 > a\-pair\-of\-horses;
+䮀 > a\-kind\-of\-animal;
+䫌 > bowed\-one''s\-head;
+䪎 > strings\-of\-a\-cap;
+䩥 > a\-belt\-for\-horse;
+䨻 > roar\-of\-thunders;
+䨴 > gathering\-clouds;
+䨳 > the\-rain\-stopped;
+䨏 > sound\-of\-raining;
+䨊 > a\-flock\-of\-birds;
+䧸 > a\-kind\-of\-pigeon;
+䧡 > a\-fortified\-wall;
+䧄 > name\-of\-a\-person;
+䦕 > bang\-of\-the\-door;
+䦂 > chemical\-element;
+䥛 > a\-kind\-of\-sickle;
+䥇 > chemical\-element;
+䤲 > chemical\-element;
+䤠 > chemical\-element;
+䣮 > smell\-of\-alcohol;
+䣫 > soured\-bean\-curd;
+䢞 > rows\-and\-columns;
+䡮 > trace\-of\-a\-wheel;
+䡢 > a\-small\-carriage;
+䠿 > name\-of\-a\-person;
+䠻 > to\-bend\-the\-body;
+䟋 > to\-press\-forward;
+䞖 > name\-of\-a\-person;
+䞌 > to\-lose\-in\-trade;
+䝣 > a\-kind\-of\-animal;
+䝚 > a\-kind\-of\-animal;
+䝋 > a\-little\-of\-pigs;
+䝇 > grunting\-of\-pigs;
+䛏 > to\-call\-somebody;
+䛎 > to\-shout\-in\-rage;
+䛂 > to\-separate\-from;
+䚿 > to\-shout\-in\-rage;
+䚔 > to\-look\-suddenly;
+䚒 > eyesight\-blurred;
+䚎 > eyesight\-blurred;
+䚋 > eyesight\-blurred;
+䚃 > to\-realize\-fully;
+䙭 > to\-lift\-or\-raise;
+䘋 > a\-kind\-of\-insect;
+䘂 > a\-kind\-of\-insect;
+䗿 > a\-kind\-of\-insect;
+䗼 > a\-kind\-of\-insect;
+䗸 > a\-kind\-of\-insect;
+䗱 > a\-kind\-of\-insect;
+䗯 > a\-kind\-of\-insect;
+䗮 > a\-kind\-of\-insect;
+䗡 > a\-kind\-of\-insect;
+䗟 > a\-kind\-of\-insect;
+䗛 > a\-kind\-of\-insect;
+䗏 > name\-of\-a\-insect;
+䗎 > a\-kind\-of\-insect;
+䗆 > a\-kind\-of\-insect;
+䗄 > a\-kind\-of\-insect;
+䗁 > a\-kind\-of\-cicada;
+䖷 > a\-kind\-of\-insect;
+䖴 > a\-kind\-of\-insect;
+䖲 > a\-kind\-of\-insect;
+䖯 > poisonous\-insect;
+䖐 > sound\-of\-a\-tiger;
+䔷 > cyperus\-rotundus;
+䒣 > lush\-or\-delicate;
+䑸 > a\-group\-of\-boats;
+䑅 > dizzy\-and\-sleepy;
+䐨 > back\-of\-the\-foot;
+䏒 > half\-of\-the\-body;
+䏏 > signs\-and\-groans;
+䎼 > a\-kind\-of\-insect;
+䎯 > winter\-ploughing;
+䎂 > colorful\-feather;
+䌽 > varicolored\-silk;
+䌂 > in\-ancient\-times;
+䋤 > plain\-white\-silk;
+䋔 > to\-band\-together;
+䊋 > to\-adorn\-oneself;
+䉷 > a\-feather\-screen;
+䉉 > a\-writing\-tablet;
+䈙 > bamboo\-to\-wither;
+䈈 > a\-kind\-of\-bamboo;
+䈃 > a\-kind\-of\-bamboo;
+䈂 > a\-kind\-of\-bamboo;
+䇻 > a\-kind\-of\-bamboo;
+䇹 > a\-kind\-of\-bamboo;
+䇷 > in\-ancient\-times;
+䇦 > a\-kind\-of\-bamboo;
+䆿 > to\-talk\-in\-sleep;
+䆲 > a\-spacious\-house;
+䆈 > young\-and\-tender;
+䅼 > a\-kind\-of\-grains;
+䅺 > grain\-in\-the\-ear;
+䅊 > a\-spacious\-house;
+䄺 > young\-and\-tender;
+䂪 > hard\-barren\-land;
+䀃 > a\-kind\-of\-vessel;
+㾦 > scab\-over\-a\-sore;
+㾁 > walking\-like\-mad;
+㽮 > a\-point\-of\-light;
+㽊 > cracking\-of\-tile;
+㻒 > red\-colored\-jade;
+㻁 > a\-kind\-of\-jasper;
+㺵 > black\-jade\-stone;
+㺴 > name\-of\-a\-spirit;
+㺦 > a\-running\-animal;
+㺣 > a\-kind\-of\-animal;
+㺢 > a\-kind\-of\-animal;
+㺝 > sound\-of\-a\-tiger;
+㺘 > a\-kind\-of\-animal;
+㹼 > a\-kind\-of\-animal;
+㹺 > dog\-to\-take\-food;
+㹴 > a\-kind\-of\-animal;
+㹭 > a\-kind\-of\-monkey;
+㹬 > a\-kind\-of\-animal;
+㹨 > a\-kind\-of\-animal;
+㹟 > a\-kind\-of\-animal;
+㹓 > a\-kind\-of\-animal;
+㹇 > a\-kind\-of\-cattle;
+㹄 > a\-kind\-of\-cattle;
+㸻 > a\-kind\-of\-cattle;
+㸳 > a\-kind\-of\-cattle;
+㸣 > in\-ancient\-china;
+㶾 > tough\-and\-honest;
+㶍 > name\-of\-a\-stream;
+㶌 > name\-of\-a\-stream;
+㵰 > name\-of\-a\-stream;
+㵆 > radiance\-of\-gems;
+㵃 > name\-of\-a\-stream;
+㴧 > of\-flowing\-water;
+㳽 > a\-watery\-expanse;
+㱶 > a\-swellen\-corpse;
+㱭 > an\-infertile\-egg;
+㱈 > name\-of\-a\-person;
+㰤 > to\-laugh\-hertily;
+㰛 > name\-of\-a\-county;
+㰅 > eaves\-of\-a\-house;
+㯕 > sticks\-or\-frames;
+㯃 > the\-varnish\-tree;
+㮓 > an\-extreme\-limit;
+㭺 > the\-cherry\-apple;
+㪭 > to\-draw\-together;
+㪘 > to\-draw\-together;
+㪖 > sound\-of\-beating;
+㨼 > to\-take\-by\-force;
+㧺 > a\-finger\-wrapper;
+里 > unit\-of\-distance;
+玲 > tinkling\-of\-jade;
+㦜 > to\-move\-the\-mind;
+撚 > twirl\-in\-fingers;
+㥔 > to\-move\-the\-mind;
+菉 > the\-green\-bamboo;
+㤴 > to\-move\-the\-mind;
+㤢 > to\-move\-the\-mind;
+珞 > kind\-of\-necklace;
+㣈 > a\-kind\-of\-animal;
+㢰 > to\-stretch\-a\-bow;
+㡽 > depraved\-talking;
+㡉 > a\-kind\-of\-fabric;
+㠧 > a\-little\-slanted;
+㠎 > a\-lofty\-mountain;
+㝫 > shape\-of\-the\-sky;
+㝪 > a\-slanting\-house;
+㝩 > spaciously\-rooms;
+㝗 > spaciously\-rooms;
+㜴 > dark\-and\-obscure;
+㜝 > to\-cherish\-anger;
+㜈 > a\-beaugiful\-face;
+㚟 > a\-kind\-of\-animal;
+㚜 > with\-great\-power;
+㚗 > with\-a\-big\-mouth;
+㚇 > draw\-the\-feet\-up;
+㙞 > a\-small\-mountain;
+㙎 > breach\-of\-a\-tank;
+㙅 > a\-walled\-viliage;
+㙀 > a\-vegetable\-plot;
+㗻 > baby''s\-answering;
+㗙 > to\-shout\-or\-bawl;
+㕭 > to\-bark\-as\-a\-dog;
+㕩 > sound\-of\-tapping;
+㕇 > rocks\-collapsing;
+㔵 > a\-kind\-of\-vessel;
+㔱 > a\-stack\-of\-grain;
+㔨 > name\-of\-a\-person;
+㔚 > to\-exert\-oneself;
+㔑 > an\-incised\-wound;
+㓼 > an\-incised\-wound;
+㓸 > to\-cut\-to\-pieces;
+㒭 > an\-elder\-brother;
+㒡 > name\-of\-a\-person;
+㒁 > of\-great\-stature;
+㑱 > a\-kind\-of\-monkey;
+㐻 > name\-of\-a\-person;
+㐀 > hillock\-or\-mound;
+睨 > look\-askance\-at;
+怎 > what\?\-why\?\-how\?;
+收 > gather\-together;
+党 > political\-party;
+版 > printing\-blocks;
+季 > quarter\-of\-year;
+牡 > male\-of\-animals;
+診 > examine\-patient;
+姑 > father''s\-sister;
+褓 > swaddling\-cloth;
+馆 > public\-building;
+漿 > any\-thick\-fluid;
+雄 > male\-of\-species;
+亿 > hundred\-million;
+固 > to\-become\-solid;
+黨 > political\-party;
+溪 > mountain\-stream;
+虞 > concerned\-about;
+嗚 > sound\-of\-crying;
+薇 > osmunda\-regalis;
+戏 > theatrical\-play;
+召 > imperial\-decree;
+収 > gather\-together;
+瑞 > felicitous\-omen;
+鬢 > hair\-on\-temples;
+僧 > buddhist\-priest;
+檜 > chinese\-cypress;
+檎 > small\-red\-apple;
+驅 > spur\-a\-horse\-on;
+臟 > internal\-organs;
+駈 > spur\-a\-horse\-on;
+駆 > spur\-a\-horse\-on;
+館 > public\-building;
+億 > hundred\-million;
+桧 > chinese\-cypress;
+脏 > internal\-organs;
+驱 > spur\-a\-horse\-on;
+圳 > furrow\-in\-field;
+繻 > fine\-silk\-guaze;
+孟 > first\-in\-series;
+縋 > climb\-down\-rope;
+閤 > small\-side\-door;
+斎 > vegetarian\-diet;
+盯 > rivet\-gaze\-upon;
+粟 > unhusked\-millet;
+籐 > climbing\-plants;
+掻 > scratch\-lightly;
+俘 > prisoner\-of\-war;
+挾 > clasp\-under\-arm;
+诊 > examine\-patient;
+媳 > daughter\-in\-law;
+宙 > time\-as\-concept;
+呜 > sound\-of\-crying;
+卜 > fortune\-telling;
+戲 > theatrical\-play;
+戯 > theatrical\-play;
+帖 > invitation\-card;
+逞 > indulge\-oneself;
+揪 > grasp\-with\-hand;
+仑 > logical\-reasons;
+浆 > any\-thick\-fluid;
+挟 > clasp\-under\-arm;
+煞 > malignant\-deity;
+斋 > vegetarian\-diet;
+鳌 > huge\-sea\-turtle;
+卦 > fortune\-telling;
+瞩 > watch\-carefully;
+疚 > chronic\-disease;
+蔓 > creeping\-plants;
+骏 > excellent\-horse;
+闽 > fujian\-province;
+袅 > curling\-upwards;
+辐 > spokes\-of\-wheel;
+琉 > sparkling\-stone;
+舜 > legendary\-ruler;
+轧 > crush\-by\-weight;
+滇 > yunnan\-province;
+鬓 > hair\-on\-temples;
+桓 > variety\-of\-tree;
+棠 > crab\-apple\-tree;
+吮 > suck\-with\-mouth;
+蜷 > creep\-like\-worm;
+枷 > cangue\-scaffold;
+羲 > ancient\-emperor;
+孚 > brood\-over\-eggs;
+骁 > excellent\-horse;
+皑 > brilliant\-white;
+缥 > light\-blue\-silk;
+诌 > play\-with\-words;
+泾 > name\-of\-a\-river;
+恣 > indulge\-oneself;
+觎 > desire\-strongly;
+玺 > imperial\-signet;
+卞 > to\-be\-impatient;
+辔 > bridle\-of\-horse;
+趔 > not\-progressing;
+徜 > walking\-and\-fro;
+荠 > water\-chestnuts;
+汞 > element\-mercury;
+畿 > imperial\-domain;
+舂 > grind\-in\-mortar;
+籴 > purchase\-grains;
+穰 > stalks\-of\-grain;
+缒 > climb\-down\-rope;
+嗄 > hoarse\-of\-voice;
+睥 > look\-askance\-at;
+渚 > small\-sand\-bank;
+砝 > balance\-weights;
+杼 > shuttle\-of\-loom;
+龃 > irregular\-teeth;
+勐 > imperial\-degree;
+矸 > a\-rock\-or\-cliff;
+痼 > chronic\-disease;
+蕨 > pteris\-aquilina;
+豉 > fermented\-beans;
+徭 > conscript\-labor;
+麈 > species\-of\-deer;
+蕤 > drooping\-leaves;
+麂 > species\-of\-deer;
+绡 > raw\-silk\-fabric;
+芨 > name\-of\-a\-plant;
+苣 > kind\-of\-lettuce;
+碛 > sand\-and\-gravel;
+莒 > hemp\-like\-plant;
+濉 > name\-of\-a\-river;
+萁 > kind\-of\-grasses;
+眄 > to\-look\-askance;
+囟 > top\-of\-the\-head;
+岣 > a\-hill\-in\-hunan;
+嗾 > to\-set\-a\-dog\-on;
+荜 > species\-of\-bean;
+糁 > a\-grain\-of\-rice;
+粝 > unpolished\-rice;
+裰 > to\-mend\-clothes;
+柰 > crab\-apple\-tree;
+薨 > death\-of\-prince;
+茑 > the\-convovulvus;
+翮 > stem\-of\-feather;
+艟 > ancient\-warship;
+鼯 > flying\-squirrel;
+砩 > name\-of\-a\-stone;
+炻 > a\-kind\-of\-china;
+檫 > sassafras\-tzumu;
+狴 > a\-kind\-of\-tapir;
+龑 > high\-and\-bright;
+齟 > irregular\-teeth;
+齋 > vegetarian\-diet;
+鼕 > rattle\-of\-drums;
+鼇 > huge\-sea\-turtle;
+鸓 > flying\-squirrel;
+鴒 > species\-of\-lark;
+鴂 > the\-tailor\-bird;
+鳻 > the\-wild\-pigeon;
+鳓 > chinese\-herring;
+鱡 > the\-cuttle\-fish;
+鱅 > a\-kind\-of\-tench;
+鰳 > chinese\-herring;
+鰲 > huge\-sea\-turtle;
+魰 > the\-flying\-fish;
+髾 > tail\-of\-a\-comet;
+髴 > disheveled\-hair;
+驵 > excellent\-horse;
+驍 > excellent\-horse;
+騘 > a\-piebald\-horse;
+駿 > excellent\-horse;
+駔 > excellent\-horse;
+饇 > to\-eat\-too\-much;
+颻 > floating\-in\-air;
+颮 > storm\-whirlwind;
+顖 > top\-of\-the\-head;
+韞 > an\-orange\-color;
+鞴 > saddle\-up\-horse;
+靸 > a\-child''s\-shoes;
+雱 > snowing\-heavily;
+閩 > fujian\-province;
+鎤 > sound\-of\-a\-bell;
+銾 > element\-mercury;
+醾 > unfiltered\-wine;
+鄹 > name\-of\-a\-state;
+轡 > bridle\-of\-horse;
+輻 > spokes\-of\-wheel;
+軋 > crush\-by\-weight;
+躀 > to\-stumble\-over;
+趮 > easily\-provoked;
+謅 > play\-with\-words;
+諡 > posthumous\-name;
+訒 > hesitate\-to\-say;
+覦 > desire\-strongly;
+襼 > ''kimono''\-sleeve;
+襌 > unlined\-garment;
+褧 > unlined\-clothes;
+褝 > unlined\-garment;
+裊 > curling\-upwards;
+螚 > eristalis\-tenax;
+藶 > a\-kind\-of\-plant;
+薺 > water\-chestnuts;
+蕢 > edible\-amaranth;
+蕍 > alisma\-plantags;
+蔾 > kind\-of\-bramble;
+蔦 > the\-convovulvus;
+蓽 > species\-of\-bean;
+蒨 > lush\-vegetation;
+蒓 > an\-edible\-water;
+蒉 > edible\-amaranth;
+葑 > the\-rape\-turnip;
+萕 > water\-chestnuts;
+苈 > a\-kind\-of\-plant;
+艅 > a\-despatch\-boat;
+臓 > internal\-organs;
+腢 > the\-collar\-bone;
+罿 > net\-catch\-birds;
+縹 > light\-blue\-silk;
+綃 > raw\-silk\-fabric;
+絍 > to\-lay\-the\-warp;
+絅 > unlined\-garment;
+糴 > purchase\-grains;
+糲 > unpolished\-rice;
+籘 > climbing\-plants;
+簔 > a\-coat\-raincoat;
+簑 > a\-coat\-raincoat;
+篰 > a\-bamboo\-basket;
+穣 > stalks\-of\-grain;
+穄 > panicled\-millet;
+禋 > offer\-sacrifice;
+磪 > a\-high\-mountain;
+磧 > sand\-and\-gravel;
+磎 > mountain\-stream;
+矚 > watch\-carefully;
+皚 > brilliant\-white;
+瘈 > prolonged\-fever;
+瘃 > sores\-from\-cold;
+痾 > chronic\-illness;
+痵 > a\-heart\-symptom;
+痮 > a\-swelled\-belly;
+痠 > aching\-of\-limbs;
+痁 > chronic\-malaria;
+疢 > aching\-of\-limbs;
+畬 > reclaimed\-field;
+甤 > drooping\-leaves;
+璽 > imperial\-signet;
+琭 > jade\-like\-stone;
+珧 > mother\-of\-pearl;
+珇 > carving\-on\-jade;
+玟 > streaks\-in\-jade;
+獱 > a\-kind\-of\-otter;
+狫 > name\-of\-a\-tribe;
+牄 > to\-walk\-rapidly;
+熓 > the\-bank\-a\-fire;
+焵 > to\-temper\-steel;
+瀵 > name\-of\-a\-river;
+瀞 > pool\-in\-a\-river;
+潙 > river\-in\-shanxi;
+漵 > name\-of\-a\-river;
+滎 > county\-in\-henan;
+溤 > name\-of\-a\-river;
+渓 > mountain\-stream;
+淓 > name\-of\-a\-river;
+涇 > name\-of\-a\-river;
+泩 > rising\-of\-water;
+沚 > islet\-in\-stream;
+沘 > name\-of\-a\-river;
+榡 > quercus\-dentata;
+椺 > beam\-of\-a\-house;
+柎 > calyx\-of\-flower;
+柁 > large\-tie\-beams;
+枬 > an\-even\-grained;
+朣 > the\-rising\-moon;
+摻 > a\-delicate\-hand;
+揫 > grasp\-with\-hand;
+戱 > theatrical\-play;
+戄 > to\-be\-in\-awe\-of;
+忓 > concerned\-about;
+徬 > to\-wander\-about;
+弴 > red\-lacquer\-bow;
+巹 > nuptial\-winecup;
+嵎 > mountain\-recess;
+峞 > high\-and\-uneven;
+夲 > advance\-quickly;
+坴 > a\-clod\-of\-earth;
+喣 > to\-breathe\-upon;
+唲 > forced\-laughter;
+厜 > a\-mountain\-peak;
+匉 > noise\-of\-waters;
+匄 > to\-beg\-for\-alms;
+勅 > imperial\-degree;
+劘 > make\-into\-mince;
+劖 > make\-into\-mince;
+傽 > terror\-stricken;
+侖 > logical\-reasons;
+佔 > occupy\-by\-force;
+乸 > feminine\-suffix;
+䶡 > sound\-of\-biting;
+䶎 > sound\-of\-breath;
+䵛 > panicled\-millet;
+䵖 > panicled\-millet;
+䴾 > to\-grind\-barley;
+䴮 > cakes\-pf\-leaven;
+䴎 > flying\-squirrel;
+䲾 > the\-tailor\-bird;
+䯄 > a\-piebalk\-horse;
+䮽 > bit\-for\-a\-horse;
+䮵 > name\-of\-a\-horse;
+䮱 > a\-kind\-of\-beast;
+䮰 > a\-kind\-of\-beast;
+䮬 > name\-of\-a\-horse;
+䮨 > a\-piebald\-horse;
+䮧 > long\-hair\-horse;
+䮢 > a\-walking\-horse;
+䮞 > a\-piebald\-horse;
+䮙 > name\-of\-a\-horse;
+䮖 > name\-of\-a\-horse;
+䮓 > a\-walking\-horse;
+䮒 > name\-of\-a\-horse;
+䮏 > name\-of\-a\-horse;
+䮎 > a\-running\-horse;
+䮋 > name\-of\-a\-horse;
+䮊 > name\-of\-a\-horse;
+䭼 > dark\-blue\-horse;
+䭶 > dark\-blue\-horse;
+䬫 > clarfied\-butter;
+䬁 > a\-light\-cyclone;
+䪮 > beautiful\-sound;
+䪕 > to\-wrap\-or\-band;
+䩹 > to\-repair\-shoes;
+䩒 > dressed\-leather;
+䩄 > to\-face\-to\-face;
+䨦 > snowing\-heavily;
+䨢 > a\-passing\-cloud;
+䨖 > to\-stop\-raining;
+䨑 > to\-stop\-raining;
+䨀 > to\-lay\-in\-grain;
+䧯 > name\-of\-a\-place;
+䧮 > name\-of\-a\-place;
+䧝 > name\-of\-a\-place;
+䧌 > name\-of\-a\-place;
+䧋 > name\-of\-a\-place;
+䧃 > name\-of\-a\-place;
+䦻 > name\-of\-a\-place;
+䦫 > inside\-the\-door;
+䦠 > name\-of\-a\-river;
+䥗 > a\-branding\-iron;
+䤱 > a\-solemn\-pledge;
+䣶 > unstrained\-wine;
+䣳 > unstrained\-wine;
+䣓 > name\-of\-a\-state;
+䣐 > name\-of\-a\-place;
+䣋 > name\-of\-a\-place;
+䣊 > name\-of\-a\-place;
+䣇 > name\-of\-a\-place;
+䢻 > name\-of\-a\-place;
+䢴 > name\-of\-a\-place;
+䢳 > name\-of\-a\-place;
+䢦 > to\-lead\-the\-way;
+䢖 > to\-be\-scattered;
+䢁 > tire\-of\-a\-wheel;
+䡻 > shake\-of\-a\-cart;
+䡨 > connected\-carts;
+䡓 > shake\-of\-a\-cart;
+䡐 > to\-move\-swiftly;
+䠵 > to\-wear\-clothes;
+䠨 > walking\-rapidly;
+䟛 > walking\-rapidly;
+䟑 > walking\-rapidly;
+䞷 > walking\-rapidly;
+䞶 > walking\-rapidly;
+䞰 > walking\-rapidly;
+䞭 > walking\-rapidly;
+䞬 > to\-pass\-through;
+䞪 > walking\-rapidly;
+䝯 > to\-change\-hands;
+䝐 > a\-castrated\-hog;
+䜾 > fermented\-beans;
+䜻 > fermented\-beans;
+䜵 > fermented\-beans;
+䜄 > slow\-on\-talking;
+䛵 > to\-teach\-orally;
+䛟 > wild\-statements;
+䛔 > to\-hold\-in\-hand;
+䚦 > slanted\-corners;
+䚥 > to\-adjust\-a\-bow;
+䙻 > to\-steal\-a\-look;
+䙨 > to\-wrap\-or\-bind;
+䙝 > under\-garrments;
+䗾 > corbicula\-leana;
+䖼 > the\-dung\-beetle;
+䖙 > a\-resting\-tiger;
+䖉 > to\-roar\-or\-howl;
+䕷 > a\-kind\-of\-plant;
+䕙 > to\-set\-in\-order;
+䕉 > a\-kind\-of\-plant;
+䔧 > a\-kind\-of\-plant;
+䔇 > a\-kind\-of\-plant;
+䓶 > a\-kind\-of\-plant;
+䓞 > a\-kind\-of\-plant;
+䓘 > a\-kind\-of\-plant;
+䓈 > a\-kind\-of\-plant;
+䒷 > a\-kind\-of\-plant;
+䒒 > name\-of\-a\-plant;
+䒌 > dark\-blue\-color;
+䐜 > a\-swelled\-belly;
+䏲 > protruded\-bones;
+䎳 > lose\-of\-the\-ear;
+䎉 > to\-walk\-swiftly;
+䌾 > to\-lay\-the\-warp;
+䋷 > a\-kind\-of\-thick;
+䋕 > to\-lay\-the\-warp;
+䊵 > young\-and\-small;
+䊗 > a\-kind\-of\-grain;
+䊉 > preserved\-fruit;
+䉧 > sound\-of\-bamboo;
+䆂 > a\-kind\-of\-grain;
+䅷 > an\-ear\-of\-grain;
+䅰 > a\-kind\-of\-grass;
+䅡 > a\-kind\-of\-grass;
+䅠 > a\-kind\-of\-grass;
+䅞 > stalks\-of\-grain;
+䅋 > a\-kind\-of\-grain;
+䅂 > a\-kind\-of\-grain;
+䄱 > a\-kind\-of\-grain;
+䄮 > dark\-rice\-plant;
+䄧 > a\-kind\-of\-grain;
+䄕 > god\-of\-the\-land;
+䃷 > a\-kind\-of\-stone;
+䃵 > a\-kind\-of\-stone;
+䃞 > a\-kind\-of\-stone;
+䃒 > poor\-and\-barren;
+䂭 > name\-of\-a\-place;
+䂚 > a\-kind\-of\-stone;
+䁴 > keep\-on\-looking;
+䁳 > to\-lose\-one\-eye;
+䀩 > to\-look\-askance;
+䀎 > to\-look\-askance;
+䀉 > food\-containers;
+㿱 > dry\-and\-decayed;
+㾩 > malignant\-boils;
+㽽 > chronic\-disease;
+㽧 > name\-of\-a\-place;
+㼕 > pulp\-of\-a\-melon;
+㼔 > a\-kind\-of\-melon;
+㼑 > pulp\-of\-a\-melon;
+㼍 > pulp\-of\-a\-melon;
+㼊 > a\-kind\-of\-melon;
+㼂 > a\-crack\-in\-jade;
+㻸 > jade\-like\-stone;
+㻷 > name\-of\-a\-place;
+㻍 > name\-of\-a\-sword;
+㺤 > a\-kind\-of\-beast;
+㺡 > a\-kind\-of\-beast;
+㺟 > a\-kind\-of\-beast;
+㺔 > a\-kind\-of\-beast;
+㺍 > a\-kind\-of\-otter;
+㺌 > endless\-barking;
+㺄 > a\-kind\-of\-beast;
+㺁 > a\-kind\-of\-beast;
+㹧 > fox\-like\-animal;
+㸱 > hornless\-cattle;
+㸰 > hornless\-cattle;
+㸩 > to\-desist\-an\-ox;
+㸑 > a\-cooking\-stove;
+㷍 > a\-chemical\-term;
+㶛 > name\-of\-a\-river;
+㵲 > name\-of\-a\-river;
+㵧 > name\-of\-a\-river;
+㵑 > name\-of\-a\-river;
+㵂 > name\-of\-a\-river;
+㴪 > name\-of\-a\-river;
+㳿 > rolling\-billows;
+㳾 > name\-of\-a\-river;
+㳸 > name\-of\-a\-river;
+㳷 > dark\-blue\-color;
+㳶 > name\-of\-a\-river;
+㳵 > name\-of\-a\-river;
+㳡 > name\-of\-a\-river;
+㳗 > bank\-of\-a\-river;
+㳖 > name\-of\-a\-river;
+㲼 > name\-of\-a\-river;
+㲔 > woolen\-textiles;
+㲎 > woolen\-textiles;
+㲍 > woolen\-textiles;
+㱎 > cannot\-be\-known;
+㰬 > shortwindedness;
+㰗 > a\-kind\-of\-maple;
+㰈 > nice\-and\-pretty;
+㯱 > an\-enlarged\-bag;
+㯤 > the\-jujube\-tree;
+㯔 > to\-hull\-heavily;
+㮡 > to\-light\-a\-fire;
+㭤 > the\-convolvulus;
+㫠 > a\-kind\-of\-water;
+㪫 > wise\-and\-clever;
+館 > public\-building;
+輻 > spokes\-of\-wheel;
+㧎 > forked\-branches;
+琉 > sparkling\-stone;
+㥞 > to\-think\-deeply;
+㥛 > with\-expedition;
+㢞 > rooms\-connected;
+㢍 > a\-long\-verabdah;
+㡲 > tiles\-on\-a\-roof;
+㡀 > ragged\-clothing;
+㠈 > name\-of\-a\-place;
+㠂 > name\-of\-a\-place;
+㟔 > steep\-and\-lofty;
+㟏 > steep\-and\-lofty;
+㝥 > have\-a\-nighmare;
+㝅 > to\-give\-suck\-to;
+㜲 > to\-have\-surplus;
+㛰 > to\-marry\-a\-wife;
+㚦 > a\-charming\-girl;
+㙼 > a\-military\-wall;
+㙸 > a\-clod\-of\-earth;
+㙗 > a\-lump\-of\-earth;
+㘺 > cultivated\-land;
+㘵 > name\-of\-a\-place;
+㗿 > to\-laugh\-loudly;
+㕲 > to\-gag\-or\-bribe;
+㕘 > to\-take\-part\-in;
+㒟 > with\-a\-charming;
+㐽 > name\-of\-a\-place;
+躅 > walk\-carefully;
+巴 > greatly\-desire;
+期 > period\-of\-time;
+司 > take\-charge\-of;
+甥 > sister''s\-child;
+屏 > folding\-screen;
+狐 > species\-of\-fox;
+汉 > chinese\-people;
+妹 > younger\-sister;
+企 > plan\-a\-project;
+襖 > outer\-garments;
+壁 > partition\-wall;
+韦 > tanned\-leather;
+潰 > flooding\-river;
+珠 > precious\-stone;
+锋 > point\-of\-spear;
+俗 > social\-customs;
+檐 > eaves\-of\-house;
+骑 > ride\-horseback;
+函 > correspondence;
+魏 > kingdom\-of\-wei;
+枚 > stalk\-of\-shrub;
+仲 > middle\-brother;
+琳 > beautiful\-jade;
+凑 > piece\-together;
+郁 > sweet\-smelling;
+芯 > pith\-from\-rush;
+縞 > white\-raw\-silk;
+旬 > ten\-day\-period;
+綺 > fine\-thin\-silk;
+妨 > interfere\-with;
+骄 > spirited\-horse;
+簷 > eaves\-of\-house;
+掴 > box\-one''s\-ears;
+嗯 > final\-particle;
+岭 > mountain\-ridge;
+湘 > hunan\-province;
+銃 > ancient\-weapon;
+溃 > flooding\-river;
+铮 > clanging\-sound;
+莹 > luster\-of\-gems;
+僻 > out\-of\-the\-way;
+绮 > fine\-thin\-silk;
+渺 > endlessly\-long;
+佣 > commission\-fee;
+咯 > final\-particle;
+呛 > choke\-by\-smoke;
+凰 > female\-phoenix;
+闺 > small\-entrance;
+缀 > patch\-together;
+袄 > outer\-garments;
+璋 > jade\-plaything;
+拴 > bind\-with\-rope;
+秧 > rice\-seedlings;
+蕃 > foreign\-things;
+鄂 > hubei\-province;
+棱 > squared\-timber;
+梗 > stem\-of\-flower;
+菱 > water\-chestnut;
+镑 > pound\-sterling;
+栩 > species\-of\-oak;
+唷 > final\-particle;
+璞 > unpolished\-gem;
+雯 > cloud\-patterns;
+讷 > slow\-of\-speech;
+璇 > beautiful\-jade;
+狰 > fierce\-looking;
+峦 > mountain\-range;
+湃 > sound\-of\-waves;
+娣 > younger\-sister;
+蝗 > kind\-of\-locust;
+皖 > anhui\-province;
+酋 > chief\-of\-tribe;
+壑 > bed\-of\-torrent;
+糯 > glutinous\-rice;
+稷 > god\-of\-cereals;
+塾 > village\-school;
+狩 > winter\-hunting;
+戍 > defend\-borders;
+璀 > lustre\-of\-gems;
+牍 > writing\-tablet;
+镌 > engraving\-tool;
+饯 > farewell\-party;
+鹂 > chinese\-oriole;
+囡 > one''s\-daughter;
+溟 > drizzling\-rain;
+锏 > kind\-of\-rapier;
+屙 > to\-ease\-nature;
+琨 > beautiful\-jade;
+玳 > tortoise\-shell;
+瑭 > a\-kind\-of\-jade;
+杈 > fork\-of\-a\-tree;
+匐 > fall\-prostrate;
+砣 > a\-stone\-roller;
+铢 > unit\-of\-weight;
+骈 > team\-of\-horses;
+噱 > laugh\-heartily;
+铳 > ancient\-weapon;
+盱 > wide\-open\-eyes;
+耄 > elderly\-person;
+榔 > betel\-nut\-tree;
+诤 > to\-expostulate;
+蝮 > venomous\-snake;
+颍 > river\-in\-anhui;
+楝 > melia\-japonica;
+蝼 > a\-mole\-cricket;
+荪 > aromatic\-grass;
+娌 > brother''s\-wife;
+缟 > white\-raw\-silk;
+晷 > shadows\-of\-sun;
+嗵 > used\-for\-sound;
+踅 > to\-walk\-around;
+揆 > prime\-minister;
+猕 > macacus\-monkey;
+厝 > cut\-or\-engrave;
+葚 > mulberry\-fruit;
+耒 > handle\-of\-plow;
+嘞 > final\-particle;
+錾 > engraving\-tool;
+珙 > precious\-stone;
+荸 > water\-chestnut;
+俅 > ornamental\-cap;
+菽 > beans\-and\-peas;
+鞯 > saddle\-blanket;
+鼐 > incense\-tripod;
+谰 > accuse\-falsely;
+骱 > joint\-of\-bones;
+謦 > t\-speak\-softly;
+磴 > steps\-on\-ledge;
+婺 > name\-of\-a\-star;
+堍 > side\-of\-bridge;
+桫 > horse\-chestnut;
+漶 > indecipherable;
+孥 > one''s\-children;
+溱 > river\-in\-henan;
+庠 > village\-school;
+黥 > tattooing\-face;
+躐 > to\-stride\-over;
+蹯 > paws\-of\-animal;
+盍 > what\?\-why\-not\?;
+溆 > river\-in\-hunan;
+磲 > tridacna\-gigas;
+昝 > a\-dual\-pronoun;
+柽 > type\-of\-willow;
+缬 > patterned\-silk;
+驺 > mounted\-escort;
+阊 > gate\-of\-heaven;
+荩 > a\-kind\-of\-weed;
+芎 > a\-kind\-of\-herb;
+鋈 > silver\-plating;
+龅 > teeth\-protrude;
+晡 > late\-afternoon;
+檠 > stand\-for\-lamp;
+逭 > to\-escape\-from;
+鸝 > chinese\-oriole;
+鸎 > the\-mango\-bird;
+鶗 > a\-kind\-of\-hawk;
+鮧 > the\-sheat\-fish;
+鬘 > beautiful\-hair;
+鬗 > head\-ornaments;
+髆 > shoulder\-blade;
+驕 > spirited\-horse;
+騶 > mounted\-escort;
+騎 > ride\-horseback;
+騌 > a\-horse''s\-mane;
+騈 > team\-of\-horses;
+駢 > team\-of\-horses;
+餡 > pastry\-filling;
+餞 > farewell\-party;
+餗 > food\-in\-tripod;
+韋 > tanned\-leather;
+韉 > saddle\-blanket;
+霡 > drizzling\-rain;
+閶 > gate\-of\-heaven;
+閨 > small\-entrance;
+锪 > a\-kind\-of\-tool;
+鐫 > engraving\-tool;
+鐧 > kind\-of\-rapier;
+鏴 > to\-plug\-a\-hole;
+鏨 > engraving\-tool;
+鎩 > moult\-samarium;
+鎊 > pound\-sterling;
+鍆 > md\-mendelevium;
+錚 > clanging\-sound;
+鋩 > point\-of\-sword;
+鋒 > point\-of\-spear;
+鋃 > lock\-lanthanum;
+銖 > unit\-of\-weight;
+釯 > point\-of\-sword;
+逩 > to\-run\-quickly;
+輶 > light\-carriage;
+蹜 > walk\-carefully;
+趹 > kick\-with\-hoof;
+豣 > pig\-of\-3\-years;
+豜 > pig\-of\-3\-years;
+豖 > a\-shackled\-pig;
+讕 > accuse\-falsely;
+讅 > know\-in\-detail;
+諍 > to\-expostulate;
+詨 > kind\-of\-cicada;
+訥 > slow\-of\-speech;
+褉 > short\-garments;
+衂 > to\-be\-defeated;
+蠂 > podisma\-mikado;
+蟳 > a\-kind\-of\-crab;
+蟭 > very\-small\-bug;
+螿 > kind\-of\-cicada;
+螻 > a\-mole\-cricket;
+螬 > grubs\-in\-fruit;
+蜎 > mosquito\-larva;
+虀 > minced\-pickles;
+藎 > a\-kind\-of\-weed;
+薳 > name\-of\-a\-herb;
+薘 > plantago\-major;
+蔆 > water\-chestnut;
+蓯 > medicinal\-herb;
+蓏 > fruit\-of\-plant;
+蓀 > aromatic\-grass;
+葥 > rubus\-palmatus;
+菎 > beautiful\-jade;
+茞 > fragrant\-plant;
+苁 > medicinal\-herb;
+芈 > bleat\-of\-sheep;
+脦 > used\-in\-''lede'';
+羋 > bleat\-of\-sheep;
+纈 > patterned\-silk;
+綴 > patch\-together;
+絜 > a\-marking\-line;
+紾 > turns\-or\-twist;
+糺 > to\-collaborate;
+籫 > bamboo\-utensil;
+筬 > reed\-of\-a\-loom;
+稭 > stalk\-of\-grain;
+稌 > glutinous\-rice;
+稈 > stalk\-of\-grain;
+砢 > pile\-of\-stones;
+矉 > an\-angry\-glare;
+睱 > to\-gaze\-slowly;
+睯 > to\-be\-agonized;
+眣 > prominent\-eyes;
+璸 > jade''s\-streaks;
+璵 > beautiful\-jade;
+璥 > a\-kind\-of\-jade;
+璢 > precious\-stone;
+璘 > luster\-of\-jade;
+璆 > beautiful\-jade;
+瑩 > lustre\-of\-gems;
+瑠 > precious\-stone;
+瑇 > tortoise\-shell;
+琁 > beautiful\-jade;
+珺 > beautiful\-jade;
+珦 > a\-kind\-of\-jade;
+珢 > precious\-stone;
+玥 > mysterious\-gem;
+獼 > macacus\-monkey;
+猙 > fierce\-looking;
+狨 > hapale\-jacchus;
+犨 > panting\-of\-cow;
+牘 > writing\-tablet;
+燉 > heat\-with\-fire;
+燀 > to\-make\-a\-fire;
+熉 > \(yellow\-color\);
+潕 > river\-in\-henan;
+潁 > river\-in\-anhui;
+溛 > to\-form\-hollow;
+湱 > sound\-of\-water;
+湊 > piece\-together;
+渢 > pleasant\-sound;
+涬 > watery\-expanse;
+洿 > stagnant\-water;
+泃 > river\-in\-henan;
+泂 > clear\-and\-deep;
+沷 > to\-remove\-evil;
+殭 > a\-stiff\-corpse;
+檖 > wild\-pear\-tree;
+檉 > type\-of\-willow;
+橿 > quercus\-glauca;
+榾 > pieces\-of\-wood;
+榠 > chinese\-quince;
+榖 > paper\-mulberry;
+椪 > machilus\-nanmu;
+棐 > species\-of\-yew;
+梊 > squeeze\-out\-of;
+柾 > straight\-grain;
+柟 > machilus\-nanmu;
+柃 > eurya\-japonica;
+曏 > once\-upon\-time;
+晥 > anhui\-province;
+晢 > light\-of\-stars;
+昰 > var\-of\-''to\-be'';
+攂 > to\-beat\-a\-drum;
+摴 > to\-stretch\-out;
+摑 > box\-one''s\-ears;
+幱 > official\-dress;
+巟 > a\-watery\-waste;
+巒 > mountain\-range;
+嶺 > mountain\-ridge;
+嵴 > mountain\-ridge;
+岺 > mountain\-ridge;
+屛 > folding\-screen;
+墚 > mountain\-range;
+塕 > a\-gust\-of\-wind;
+埇 > name\-of\-bridge;
+圅 > correspondence;
+噹 > sound\-of\-bells;
+嘓 > gurgling\-sound;
+嗆 > choke\-by\-smoke;
+喒 > a\-dual\-pronoun;
+啌 > animal\-disease;
+厃 > to\-look\-upward;
+卭 > high\.\-to\-raise;
+卂 > to\-fly\-rapidly;
+凾 > correspondence;
+伕 > common\-laborer;
+亇 > kwukyel\-hammer;
+䶔 > prominent\-gums;
+䶐 > to\-take\-breath;
+䶀 > sound\-of\-drums;
+䵾 > sound\-of\-drums;
+䵽 > sound\-of\-drums;
+䵶 > a\-kind\-of\-frog;
+䵌 > reddish\-yellow;
+䴴 > a\-kind\-of\-cake;
+䴯 > a\-kind\-of\-cake;
+䴩 > a\-kind\-of\-deer;
+䴢 > a\-kind\-of\-deer;
+䴘 > a\-kind\-of\-bird;
+䴐 > a\-kind\-of\-bird;
+䴆 > a\-kind\-of\-bird;
+䴄 > a\-kind\-of\-bird;
+䳿 > a\-kind\-of\-bird;
+䳸 > the\-wild\-goose;
+䳴 > a\-kind\-of\-bird;
+䳯 > a\-kind\-of\-bird;
+䳬 > a\-kind\-of\-bird;
+䳫 > a\-small\-pigeon;
+䳪 > a\-kind\-of\-bird;
+䳩 > a\-kind\-of\-bird;
+䳒 > a\-kind\-of\-bird;
+䲽 > a\-kind\-of\-bird;
+䲼 > a\-kind\-of\-bird;
+䲸 > a\-kind\-of\-bird;
+䲮 > a\-kind\-of\-bird;
+䲪 > a\-kind\-of\-bird;
+䲢 > a\-kind\-of\-fish;
+䲠 > a\-kind\-of\-fish;
+䲟 > a\-kind\-of\-fish;
+䲙 > a\-kind\-of\-fish;
+䲘 > a\-kind\-of\-fish;
+䲗 > a\-kind\-of\-fish;
+䲓 > a\-kind\-of\-fish;
+䲐 > a\-kind\-of\-fish;
+䲏 > a\-kind\-of\-fish;
+䲋 > a\-kind\-of\-fish;
+䲉 > a\-kind\-of\-fish;
+䲂 > a\-kind\-of\-fish;
+䲀 > a\-kind\-of\-fish;
+䱿 > a\-kind\-of\-fish;
+䱼 > a\-kind\-of\-fish;
+䱻 > a\-kind\-of\-fish;
+䱵 > a\-kind\-of\-fish;
+䱲 > a\-kind\-of\-fish;
+䱰 > a\-kind\-of\-fish;
+䱯 > a\-kind\-of\-fish;
+䱮 > a\-kind\-of\-fish;
+䱬 > a\-kind\-of\-fish;
+䱫 > a\-kind\-of\-fish;
+䱨 > a\-kind\-of\-fish;
+䱥 > a\-kind\-of\-fish;
+䱤 > a\-kind\-of\-fish;
+䱢 > a\-kind\-of\-fish;
+䱠 > a\-kind\-of\-fish;
+䱞 > a\-kind\-of\-fish;
+䱛 > a\-kind\-of\-fish;
+䱚 > a\-kind\-of\-fish;
+䱓 > a\-kind\-of\-fish;
+䰾 > a\-kind\-of\-fish;
+䰹 > the\-cuttlefish;
+䰴 > a\-wafting\-fish;
+䰲 > the\-sheat\-fish;
+䰡 > a\-fierce\-ghost;
+䯛 > the\-knee\-bones;
+䮹 > an\-angry\-horse;
+䮮 > a\-kind\-of\-mule;
+䭻 > a\-swifty\-horse;
+䭳 > a\-kind\-of\-herb;
+䭲 > sweet\-smelling;
+䭭 > the\-eldest\-son;
+䭩 > to\-feed\-a\-baby;
+䭧 > to\-feed\-a\-baby;
+䭁 > stinking\-smell;
+䬺 > same\-as\-u\+4b50;
+䬘 > the\-wind\-blows;
+䬒 > to\-blow\-chilly;
+䬌 > the\-wind\-blows;
+䫫 > human\-skeleton;
+䪼 > the\-cheek\-bone;
+䪈 > a\-leather\-belt;
+䩐 > tie\-it\-tightly;
+䨫 > drizzling\-rain;
+䨥 > a\-pouring\-rain;
+䨜 > a\-pouring\-rain;
+䧾 > a\-kind\-of\-bird;
+䧷 > a\-kind\-of\-bird;
+䧧 > high\-mountains;
+䦺 > name\-of\-a\-hill;
+䦤 > seed\-of\-grains;
+䦑 > without\-a\-door;
+䦏 > wing\-of\-a\-door;
+䥢 > sound\-of\-drums;
+䤖 > a\-kind\-of\-wine;
+䣥 > a\-kind\-of\-wine;
+䣎 > name\-of\-county;
+䢨 > to\-walk\-slowly;
+䡾 > high\-cartloads;
+䡲 > rim\-of\-a\-wheel;
+䡗 > rim\-of\-a\-wheel;
+䡉 > a\-kind\-of\-cart;
+䟓 > to\-walk\-slowly;
+䝸 > a\-kind\-of\-tool;
+䜽 > a\-kind\-of\-bean;
+䜼 > a\-kind\-of\-bean;
+䜜 > words\-of\-anger;
+䛠 > unable\-to\-talk;
+䚖 > mountain\-deity;
+䚄 > to\-make\-fun\-of;
+䙳 > spiting\-flames;
+䙦 > upper\-garments;
+䘢 > old\-and\-shabby;
+䘃 > a\-kind\-of\-crab;
+䗷 > a\-kind\-of\-wasp;
+䗪 > a\-kind\-of\-worm;
+䗜 > a\-mole\-cricket;
+䗚 > eggs\-of\-mantis;
+䗒 > a\-kind\-of\-clam;
+䗀 > a\-kind\-of\-clam;
+䖰 > a\-kind\-of\-gnat;
+䖆 > medicinal\-herb;
+䕚 > a\-straw\-basket;
+䔕 > chicken\-breast;
+䔋 > a\-kind\-of\-tree;
+䔆 > a\-kind\-of\-bean;
+䔂 > vegetable\-soup;
+䓡 > a\-medical\-herb;
+䒻 > a\-medical\-herb;
+䒲 > a\-medical\-herb;
+䒓 > to\-do\-violence;
+䒇 > name\-of\-a\-ship;
+䒆 > name\-of\-a\-ship;
+䒅 > beautiful\-eyes;
+䑶 > sprightly\-boat;
+䑫 > tools\-for\-boat;
+䑣 > a\-sailing\-boat;
+䑜 > to\-eat\-heavily;
+䐕 > oil\-and\-grease;
+䐍 > excellent\-food;
+䍡 > small\-fish\-net;
+䍑 > a\-net\-or\-snare;
+䍐 > a\-net\-or\-snare;
+䍍 > unburnt\-bricks;
+䌵 > lapel\-and\-belt;
+䌰 > connected\-silk;
+䌥 > to\-sew\-clothes;
+䌡 > to\-wind\-around;
+䋽 > hempen\-sandals;
+䋯 > crucial\-points;
+䋢 > to\-twist\-ropes;
+䋜 > crucial\-points;
+䊼 > measuring\-unit;
+䊨 > storing\-grains;
+䈷 > a\-bamboo\-fence;
+䈚 > a\-bamboo\-shoot;
+䇫 > bamboo\-splints;
+䇅 > to\-stand\-still;
+䅥 > ripening\-crops;
+䅖 > sweet\-smelling;
+䃹 > jade\-and\-stone;
+䃸 > electric\-light;
+䃱 > electric\-light;
+䃡 > a\-small\-pebble;
+䃏 > a\-kind\-of\-rock;
+䃌 > rocky\-mountain;
+䂛 > a\-kind\-of\-rock;
+䂌 > a\-short\-weapon;
+䁤 > moistened\-eyes;
+䁏 > farsightedness;
+䀺 > squinting\-eyes;
+䀥 > beautiful\-eyes;
+㽦 > reclaimed\-land;
+㽥 > fertile\-fields;
+㽋 > a\-kind\-of\-tile;
+㽄 > an\-earthen\-jar;
+㻿 > a\-kind\-of\-jade;
+㻺 > a\-kind\-of\-jade;
+㻵 > a\-kind\-of\-jade;
+㻯 > a\-kind\-of\-jade;
+㻬 > a\-kind\-of\-jade;
+㻧 > a\-kind\-of\-jade;
+㻟 > a\-kind\-of\-jade;
+㻝 > a\-kind\-of\-jade;
+㻖 > a\-kind\-of\-jade;
+㻕 > a\-kind\-of\-jade;
+㻔 > a\-kind\-of\-jade;
+㻑 > a\-kind\-of\-jade;
+㻋 > a\-kind\-of\-jade;
+㻂 > a\-kind\-of\-jade;
+㺹 > a\-kind\-of\-jade;
+㺸 > a\-kind\-of\-jade;
+㺷 > a\-kind\-of\-jade;
+㺱 > a\-kind\-of\-jade;
+㺰 > a\-kind\-of\-jade;
+㺭 > a\-kind\-of\-jade;
+㺫 > a\-kind\-of\-jade;
+㸫 > castrated\-bull;
+㸤 > broken\-leather;
+㸊 > fierce\-of\-fire;
+㶠 > water\-currents;
+㶞 > water\-currents;
+㵥 > water\-currents;
+㵘 > great\-currents;
+㴸 > swift\-currents;
+㴙 > water\-dripping;
+㳃 > to\-temper\-iron;
+㲏 > flying\-feather;
+㱧 > stinking\-smell;
+㱏 > the\-right\-side;
+㰚 > a\-bamboo\-fence;
+㰘 > a\-kind\-of\-tree;
+㰊 > a\-kind\-of\-tree;
+㰂 > a\-kind\-of\-tree;
+㰀 > a\-kind\-of\-tree;
+㯞 > a\-kind\-of\-tree;
+㯚 > a\-kind\-of\-tree;
+㯗 > a\-kind\-of\-tree;
+㮋 > a\-kind\-of\-tree;
+㮅 > a\-kind\-of\-tree;
+㭻 > the\-crab\-apple;
+㭭 > a\-kind\-of\-tree;
+㭜 > a\-kind\-of\-tree;
+㭚 > a\-kind\-of\-tree;
+㭔 > a\-kind\-of\-tree;
+㭑 > a\-kind\-of\-tree;
+㭏 > a\-kind\-of\-wood;
+㭇 > a\-kind\-of\-tree;
+㭄 > a\-king\-of\-tree;
+㭁 > a\-kind\-of\-tree;
+㬋 > name\-of\-a\-star;
+㫏 > a\-kind\-of\-flag;
+㫂 > to\-chop\-or\-cut;
+㪇 > to\-disseminate;
+㨇 > to\-sweep\-clean;
+璘 > luster\-of\-jade;
+瑩 > lustre\-of\-gems;
+嶺 > mountain\-ridge;
+㦍 > to\-be\-startled;
+㥺 > to\-blow\-a\-fire;
+菱 > water\-chestnut;
+㥉 > a\-little\-angry;
+㥇 > to\-be\-perverse;
+㤾 > not\-doing\-well;
+㤖 > to\-have\-wisdom;
+㣦 > a\-winding\-path;
+㢟 > to\-walk\-slowly;
+㡜 > ragged\-clothes;
+㠨 > misty\-mountain;
+㠡 > high\-and\-lofty;
+㠚 > high\-and\-lofty;
+㟿 > high\-and\-steep;
+㟛 > high\-and\-steep;
+㞩 > mountain\-vapor;
+㞜 > hempen\-sandals;
+㞗 > the\-male\-organ;
+㞌 > to\-be\-pregnant;
+㞊 > unable\-to\-walk;
+㝰 > unable\-to\-meet;
+㝛 > ahalting\-place;
+㜤 > fooling\-around;
+㜑 > an\-older\-woman;
+㛩 > sisters\-in\-law;
+㛂 > weak\-and\-small;
+㚺 > to\-be\-pregnant;
+㚲 > small\-and\-weak;
+㚃 > to\-take\-a\-hint;
+㙷 > low\-lying\-area;
+㗊 > public\-opinion;
+㖾 > to\-beat\-a\-drum;
+㖢 > to\-reject\-food;
+㕬 > public\-opinion;
+㕤 > a\-proud\-temper;
+㔙 > great\-strength;
+㔁 > a\-kind\-of\-tool;
+㒛 > to\-stand\-alone;
+㒀 > do\-not\-fear\-to;
+经 > classic\-works;
+弟 > young\-brother;
+廻 > circle\-around;
+关 > frontier\-pass;
+帝 > supreme\-ruler;
+番 > to\-take\-turns;
+略 > approximately;
+共 > together\-with;
+义 > right\-conduct;
+嫂 > sister\-in\-law;
+哥 > elder\-brother;
+婦 > married\-women;
+訣 > take\-leave\-of;
+族 > a\-family\-clan;
+奪 > take\-by\-force;
+兄 > elder\-brother;
+笔 > writing\-brush;
+袷 > lined\-garment;
+瀬 > swift\-current;
+妇 > married\-women;
+伯 > older\-brother;
+漲 > rise\-in\-price;
+礼 > social\-custom;
+嘩 > rushing\-sound;
+啣 > hold\-in\-mouth;
+泊 > anchor\-vessel;
+沿 > follow\-course;
+咄 > noise\-of\-rage;
+含 > hold\-in\-mouth;
+夺 > take\-by\-force;
+菊 > chrysanthemum;
+岳 > mountain\-peak;
+匹 > bolt\-of\-cloth;
+颇 > lean\-one\-side;
+劫 > take\-by\-force;
+晨 > early\-morning;
+撞 > knock\-against;
+愈 > more\-and\-more;
+槇 > tip\-of\-a\-tree;
+駅 > relay\-station;
+饅 > steamed\-bread;
+炸 > to\-fry\-in\-oil;
+脈 > blood\-vessels;
+绪 > end\-of\-thread;
+飼 > raise\-animals;
+梓 > catalpa\-ovata;
+肌 > muscle\-tissue;
+佩 > belt\-ornament;
+署 > public\-office;
+搭 > join\-together;
+頗 > lean\-one\-side;
+栗 > chestnut\-tree;
+桑 > mulberry\-tree;
+脉 > blood\-vessels;
+義 > right\-conduct;
+鞄 > to\-work\-hides;
+杓 > handle\-of\-cup;
+佃 > tenant\-farmer;
+昆 > elder\-brother;
+贡 > offer\-tribute;
+拼 > join\-together;
+曇 > become\-cloudy;
+亙 > extend\-across;
+亘 > extend\-across;
+诞 > bear\-children;
+晴 > clear\-weather;
+涨 > rise\-in\-price;
+關 > frontier\-pass;
+緒 > end\-of\-thread;
+関 > frontier\-pass;
+塑 > model\-in\-clay;
+經 > classic\-works;
+経 > classic\-works;
+浦 > bank\-of\-river;
+翰 > writing\-brush;
+籔 > bamboo\-basket;
+辰 > early\-morning;
+慎 > act\-with\-care;
+莉 > white\-jasmine;
+捗 > make\-progress;
+筆 > writing\-brush;
+哗 > rushing\-sound;
+塌 > fall\-in\-ruins;
+竖 > perpendicular;
+禮 > social\-custom;
+陕 > mountain\-pass;
+惚 > absent\-minded;
+诀 > take\-leave\-of;
+淀 > shallow\-water;
+淘 > wash\-in\-sieve;
+瑰 > extraordinary;
+垫 > advance\-money;
+灶 > kitchen\-range;
+毓 > give\-birth\-to;
+咧 > stretch\-mouth;
+奎 > stride\-of\-man;
+洽 > to\-blend\-with;
+瑶 > precious\-jade;
+钰 > rare\-treasure;
+瑛 > luster\-of\-gem;
+馒 > steamed\-bread;
+饲 > raise\-animals;
+殉 > die\-for\-cause;
+衙 > public\-office;
+唬 > to\-intimidate;
+瘪 > shrivelled\-up;
+唆 > make\-mischief;
+岚 > mountain\-mist;
+桦 > type\-of\-birch;
+涟 > flowing\-water;
+唔 > hold\-in\-mouth;
+飕 > sound\-of\-wind;
+坷 > clod\-of\-earth;
+鑫 > used\-in\-names;
+笋 > bamboo\-shoots;
+荃 > aromatic\-herb;
+篓 > bamboo\-basket;
+馄 > dumpling\-soup;
+穹 > high\-and\-vast;
+弈 > chinese\-chess;
+聿 > writing\-brush;
+驮 > carry\-on\-back;
+箩 > bamboo\-basket;
+芥 > mustard\-plant;
+驿 > relay\-station;
+炜 > brilliant\-red;
+岜 > rock\-mountain;
+纫 > thread\-needle;
+桀 > chicken\-roost;
+噙 > hold\-in\-mouth;
+篝 > bamboo\-basket;
+拮 > laboring\-hard;
+茉 > white\-jasmine;
+纥 > inferior\-silk;
+昙 > become\-cloudy;
+忤 > insubordinate;
+鸾 > fabulous\-bird;
+嘁 > to\-be\-grieved;
+辎 > a\-supply\-cart;
+芫 > daphne\-genkwa;
+伧 > vulgar\-person;
+泠 > nice\-and\-cool;
+縻 > halter\-for\-ox;
+踽 > to\-walk\-alone;
+赭 > reddish\-brown;
+颀 > tall\-and\-slim;
+柘 > a\-thorny\-tree;
+谔 > honest\-speech;
+骓 > piebald\-horse;
+岫 > mountain\-peak;
+崧 > high\-mountain;
+酚 > carbolic\-acid;
+夤 > distant\-place;
+暌 > in\-opposition;
+濑 > swift\-current;
+怍 > to\-be\-ashamed;
+贽 > gift\-superior;
+毖 > guard\-against;
+迓 > to\-go\-to\-meet;
+毵 > long\-feathers;
+睚 > corner\-of\-eye;
+毽 > a\-shuttlecock;
+僳 > minority\-name;
+骐 > piebald\-horse;
+辏 > hubs\-of\-wheel;
+旆 > flag\-ornament;
+荇 > a\-water\-plant;
+卮 > measuring\-cup;
+髡 > to\-shear\-tree;
+鳜 > mandarin\-fish;
+鼍 > large\-reptile;
+笫 > planks\-of\-bed;
+缡 > a\-bridal\-veil;
+绨 > coarse\-pongee;
+芰 > water\-caltrop;
+魃 > drought\-demon;
+舳 > stern\-of\-ship;
+屦 > straw\-sandals;
+蓐 > straw\-bed\-mat;
+銎 > eye\-of\-an\-axe;
+醣 > carbohydrates;
+蛑 > a\-marine\-crab;
+椠 > wooden\-tablet;
+媸 > an\-ugly\-woman;
+馇 > stir\-and\-cook;
+甙 > sugar\-product;
+薤 > allium\-bakeri;
+塥 > dry\-clay\-lump;
+鼉 > large\-reptile;
+鸞 > fabulous\-bird;
+鵩 > owl\-like\-bird;
+鱖 > mandarin\-fish;
+髃 > shoulder\-bone;
+骪 > crooked\-bones;
+驛 > relay\-station;
+騏 > piebald\-horse;
+騅 > piebald\-horse;
+馱 > carry\-on\-back;
+馣 > fragrant\-odor;
+餧 > steamed\-bread;
+餛 > dumpling\-soup;
+餚 > prepared\-meat;
+颼 > sound\-of\-wind;
+頎 > tall\-and\-slim;
+鞮 > leather\-shoes;
+霝 > drops\-of\-rain;
+陝 > mountain\-pass;
+铖 > person''s\-name;
+錡 > a\-kind\-of\-pen;
+鋮 > person''s\-name;
+鈺 > rare\-treasure;
+鈄 > a\-wine\-flagon;
+釭 > tire\-of\-wheel;
+醨 > dregs\-of\-wine;
+辡 > recrimination;
+轏 > sleeping\-cart;
+輳 > hubs\-of\-wheel;
+輜 > a\-supply\-cart;
+跮 > hasty\-walking;
+贉 > earnest\-money;
+贄 > gift\-superior;
+賮 > farewell\-gift;
+貢 > offer\-tribute;
+讍 > honest\-speech;
+讆 > to\-exaggerate;
+謍 > humming\-sound;
+諤 > honest\-speech;
+諕 > to\-intimidate;
+覶 > to\-look\-about;
+覔 > to\-search\-for;
+襚 > grave\-clothes;
+裌 > lined\-garment;
+衇 > blood\-vessels;
+蠵 > large\-turtles;
+螾 > the\-earthworm;
+螥 > the\-house\-fly;
+螙 > grubs\-in\-wood;
+蛅 > a\-caterpillar;
+蚠 > person''s\-name;
+蘯 > to\-toss\-about;
+蔎 > thea\-sinensis;
+蓧 > bamboo\-basket;
+葽 > type\-of\-grain;
+菼 > rush\-or\-sedge;
+菺 > althaea\-rosea;
+菑 > to\-weed\-grass;
+莧 > edible\-greens;
+荈 > thea\-sinensis;
+茥 > rubus\-tokkura;
+苘 > indian\-mallow;
+脥 > pelvic\-cavity;
+胲 > hydroxylamine;
+罳 > wooden\-screen;
+缇 > reddish\-color;
+縭 > a\-bridal\-veil;
+緹 > reddish\-color;
+緖 > end\-of\-thread;
+綈 > coarse\-pongee;
+紉 > thread\-needle;
+紇 > inferior\-silk;
+糭 > rice\-dumpling;
+籾 > unhulled\-rice;
+籮 > bamboo\-basket;
+籜 > bamboo\-sheath;
+簍 > bamboo\-basket;
+箨 > bamboo\-sheath;
+笵 > a\-bamboo\-form;
+笭 > bamboo\-screen;
+竪 > perpendicular;
+砞 > to\-smash\-rock;
+矞 > bore\-with\-awl;
+盪 > to\-toss\-about;
+癟 > shrivelled\-up;
+畧 > approximately;
+瓌 > extraordinary;
+璟 > luster\-of\-gem;
+璂 > jade\-ornament;
+瑳 > luster\-of\-gem;
+瑤 > precious\-jade;
+琕 > type\-of\-pearl;
+珮 > jade\-ornament;
+獙 > die\-violently;
+牁 > mooring\-stake;
+熰 > great\-drought;
+煒 > brilliant\-red;
+瀨 > swift\-current;
+漣 > flowing\-water;
+浬 > nautical\-mile;
+洊 > flowing\-water;
+毿 > long\-feathers;
+欵 > to\-treat\-well;
+欓 > a\-cross\-piece;
+櫌 > a\-kind\-of\-hoe;
+檮 > block\-of\-wood;
+樺 > type\-of\-birch;
+槧 > wooden\-tablet;
+榌 > wooden\-ladder;
+楙 > name\-of\-plant;
+椛 > type\-of\-birch;
+梼 > block\-of\-wood;
+梹 > the\-areca\-nut;
+梎 > sickle\-handle;
+栰 > a\-bamboo\-raft;
+杮 > wood\-shavings;
+朩 > kwukyel\:\-rank;
+搢 > to\-stick\-into;
+掭 > to\-manipulate;
+挶 > hold\-in\-hands;
+拕 > to\-drag\-after;
+抃 > to\-clap\-hands;
+戺 > stone\-boarder;
+戹 > in\-difficulty;
+愼 > act\-with\-care;
+愪 > to\-be\-grieved;
+愡 > absent\-minded;
+怾 > mountain\-name;
+彽 > go\-to\-and\-fro;
+彲 > yellow\-dragon;
+彔 > to\-carve\-wood;
+巵 > measuring\-cup;
+巰 > an\-atom\-group;
+巯 > an\-atom\-group;
+巪 > person''s\-name;
+嶽 > mountain\-peak;
+嵐 > mountain\-mist;
+崌 > mountain\-name;
+峠 > mountain\-pass;
+峂 > name\-of\-place;
+峀 > mountain\-peak;
+岾 > mountain\-pass;
+屩 > straw\-sandals;
+屨 > straw\-sandals;
+寀 > feudal\-estate;
+媢 > be\-jealous\-of;
+墊 > advance\-money;
+塐 > model\-in\-clay;
+堺 > person''s\-name;
+垻 > an\-embankment;
+嚚 > argumentative;
+咡 > side\-of\-mouth;
+凟 > to\-be\-rude\-to;
+儹 > to\-accumulate;
+儲 > to\-save\-money;
+儛 > to\-skip\-about;
+傖 > vulgar\-person;
+傒 > personal\-name;
+偊 > to\-walk\-alone;
+侂 > to\-commission;
+乨 > the\-beginning;
+䶚 > decayed\-tooth;
+䶈 > a\-kind\-of\-rat;
+䶃 > a\-kind\-of\-rat;
+䵿 > a\-silent\-drum;
+䵁 > decayed\-dough;
+䴰 > a\-family\-name;
+䲺 > birds\-singing;
+䲅 > the\-globefish;
+䱸 > a\-family\-name;
+䱦 > the\-globefish;
+䱡 > the\-globefish;
+䰽 > the\-globefish;
+䰻 > to\-catch\-fish;
+䰱 > name\-of\-a\-god;
+䯅 > a\-swift\-horse;
+䯀 > a\-swift\-horse;
+䮈 > to\-go\-swiftly;
+䭿 > a\-swift\-horse;
+䭵 > a\-swift\-horse;
+䬟 > sound\-of\-wind;
+䫿 > a\-cool\-breeze;
+䫴 > weak\-and\-dull;
+䫁 > the\-first\-son;
+䪫 > ancient\-music;
+䪧 > ancient\-music;
+䪒 > leather\-pants;
+䩾 > herb\-medicine;
+䩤 > to\-lead\-an\-ox;
+䩣 > shoe\-cushions;
+䩞 > a\-saddle\-flap;
+䨎 > deep\-and\-dark;
+䧜 > an\-embankment;
+䧖 > a\-small\-mound;
+䦴 > open\-the\-door;
+䦳 > between\-steps;
+䦱 > open\-the\-door;
+䦣 > open\-the\-door;
+䦡 > a\-door\-keeper;
+䥩 > hooks\-to\-hang;
+䥚 > the\-beginning;
+䤵 > a\-tiny\-needle;
+䤔 > dregs\-of\-wine;
+䤎 > soybean\-sauce;
+䤃 > drunken\-sound;
+䣰 > to\-pool\-money;
+䢧 > to\-go\-forward;
+䢚 > a\-narrow\-path;
+䢃 > to\-administer;
+䡥 > a\-moving\-cart;
+䡆 > a\-moving\-cart;
+䟘 > to\-straighten;
+䟊 > short\-strides;
+䞁 > corresponding;
+䝶 > to\-levy\-taxes;
+䝬 > a\-wealthy\-man;
+䜕 > to\-exaggerate;
+䛾 > familiar\-with;
+䛐 > an\-expression;
+䚕 > to\-search\-out;
+䙹 > to\-vomit\-milk;
+䙥 > shiny\-dresses;
+䙢 > short\-t\-shirt;
+䙠 > short\-clothes;
+䙟 > heavy\-clothes;
+䙞 > woolen\-string;
+䙅 > the\-waistline;
+䗗 > the\-millipede;
+䗋 > a\-marine\-crab;
+䗃 > the\-millipede;
+䖩 > a\-kind\-of\-bee;
+䖑 > a\-white\-tiger;
+䖇 > fragrant\-herb;
+䕥 > herb\-medicine;
+䕖 > fragrant\-herb;
+䔞 > the\-beginning;
+䔜 > herb\-medicine;
+䔚 > herb\-medicine;
+䔖 > water\-caltrop;
+䔓 > herb\-medicine;
+䒥 > corresponding;
+䒗 > fragrant\-herb;
+䒎 > without\-color;
+䒍 > without\-color;
+䑲 > to\-row\-a\-boat;
+䑥 > a\-moving\-boat;
+䐲 > half\-raw\-meat;
+䐙 > the\-diaphragm;
+䏘 > a\-big\-abdomen;
+䏄 > not\-to\-listen;
+䍽 > a\-fierce\-goat;
+䍼 > salted\-mutton;
+䍪 > castrated\-ram;
+䍤 > to\-strain\-out;
+䌣 > to\-accumulate;
+䌙 > hank\-of\-ropes;
+䌅 > a\-thick\-ropes;
+䋦 > ravelled\-silk;
+䋝 > a\-throat\-band;
+䊽 > a\-fine\-thread;
+䊡 > steamed\-bread;
+䊔 > polished\-rice;
+䊄 > polished\-rice;
+䉰 > bamboo\-shoots;
+䉩 > a\-bamboo\-ware;
+䉨 > bamboo\-joints;
+䈾 > move\-a\-little;
+䈳 > a\-window\-leaf;
+䇋 > name\-of\-a\-god;
+䆞 > deep\-and\-dark;
+䆚 > to\-go\-through;
+䆗 > deep\-and\-dark;
+䅛 > husks\-of\-rice;
+䄔 > a\-family\-name;
+䄇 > a\-family\-name;
+䃻 > an\-embankment;
+䃳 > falling\-stone;
+䂶 > the\-crustacea;
+䂗 > to\-be\-careful;
+䂎 > a\-short\-spear;
+䂁 > an\-angry\-look;
+䁙 > eloquent\-eyes;
+䀮 > sight\-blurred;
+䀭 > with\-big\-eyes;
+䀧 > sight\-blurred;
+䀟 > sight\-blurred;
+䀖 > to\-look\-up\-to;
+䀕 > angry\-glances;
+㿬 > nasal\-disease;
+㿜 > shrivelled\-up;
+㾽 > swelling\-feet;
+㽲 > griping\-colic;
+㽱 > griping\-colic;
+㽇 > unburnt\-tiles;
+㼵 > a\-small\-basin;
+㼟 > a\-tiled\-house;
+㼎 > a\-small\-melon;
+㻾 > jade\-articles;
+㺩 > jade\-articles;
+㺈 > to\-go\-hunting;
+㹹 > a\-kind\-of\-dog;
+㹵 > a\-hunting\-dog;
+㹳 > a\-kind\-of\-ape;
+㹣 > a\-kind\-of\-dog;
+㸄 > a\-raging\-fire;
+㷾 > blaze\-of\-fire;
+㷸 > blaze\-of\-fire;
+㷖 > to\-shine\-upon;
+㷕 > hearing\-sound;
+㷒 > to\-cook\-meals;
+㶘 > full\-of\-water;
+㵳 > crystal\-clear;
+㵱 > flowing\-water;
+㵠 > to\-gush\-forth;
+㴽 > water\-current;
+㴵 > water\-current;
+㴯 > water\-current;
+㴮 > water\-current;
+㴫 > great\-flowing;
+㴨 > water\-current;
+㴦 > to\-wash\-hands;
+㴥 > great\-billows;
+㴒 > water\-current;
+㴐 > great\-current;
+㴂 > great\-billows;
+㳩 > great\-billows;
+㲛 > hairy\-animals;
+㰻 > asses\-braying;
+㰳 > asses\-braying;
+㰏 > a\-bamboo\-pole;
+㰌 > to\-monopolize;
+㯽 > the\-areca\-nut;
+㭿 > oblique\-angle;
+㭓 > a\-pillar\-arch;
+㬬 > a\-family\-name;
+㬥 > to\-sun\-to\-air;
+㬄 > warm\-and\-damp;
+㫟 > day\-after\-day;
+㫚 > early\-morning;
+㩥 > delicate\-hand;
+飼 > raise\-animals;
+㨞 > to\-feel\-about;
+礼 > social\-custom;
+晴 > clear\-weather;
+㧼 > to\-distribute;
+㧷 > to\-wipe\-tears;
+栗 > chestnut\-tree;
+㧘 > to\-accumulate;
+禮 > social\-custom;
+㦫 > lax\-and\-crude;
+漣 > flowing\-water;
+㦌 > keen\-or\-sharp;
+㦆 > to\-exaggerate;
+㥼 > to\-be\-near\-to;
+略 > approximately;
+辰 > early\-morning;
+㥥 > absent\-minded;
+㤰 > to\-be\-ashamed;
+嵐 > mountain\-mist;
+鸞 > fabulous\-bird;
+㣿 > painfully\-sad;
+㣱 > common\-people;
+㣤 > to\-tread\-upon;
+㣔 > to\-walk\-alone;
+㢻 > to\-draw\-a\-bow;
+㢖 > a\-store\-house;
+㡷 > a\-family\-name;
+㠺 > a\-fine\-thread;
+㠴 > a\-pillow\-case;
+㠛 > name\-a\-county;
+㟶 > mountain\-peak;
+㟲 > mountain\-peak;
+㟭 > the\-min\-river;
+㟩 > the\-min\-river;
+㞶 > the\-min\-river;
+㞬 > close\-or\-near;
+㞋 > soft\-and\-meek;
+㝻 > barely\-enough;
+㝦 > to\-accumulate;
+㝓 > corresponding;
+㝃 > to\-bear\-a\-son;
+㛒 > can\-not\-speak;
+㛎 > an\-ugly\-woman;
+㚴 > a\-pretty\-girl;
+㘛 > a\-deep\-valley;
+㘓 > prolix\-speech;
+㘉 > to\-make\-sound;
+㗴 > dogs\-fighting;
+㕰 > sound\-angrily;
+㕪 > birds''\-chirps;
+㕙 > a\-wily\-rabbit;
+㕉 > to\-dig\-a\-hole;
+㔥 > full\-of\-anger;
+㓴 > to\-cut\-in\-two;
+㓖 > bitterly\-cold;
+㓏 > bitterly\-cold;
+㓌 > bitterly\-cold;
+㒇 > to\-skip\-about;
+㑼 > name\-of\-a\-god;
+㑥 > disrespectful;
+㐰 > to\-believe\-in;
+瞳 > pupil\-of\-eye;
+万 > ten\-thousand;
+布 > cotton\-cloth;
+通 > pass\-through;
+提 > hold\-in\-hand;
+京 > capital\-city;
+甚 > great\-extent;
+周 > zhou\-dynasty;
+尻 > end\-of\-spine;
+宴 > to\-entertain;
+宰 > to\-slaughter;
+犯 > commit\-crime;
+婢 > servant\-girl;
+参 > take\-part\-in;
+掌 > palm\-of\-hand;
+姿 > one''s\-manner;
+姉 > elder\-sister;
+斗 > chinese\-peck;
+呼 > breathe\-sigh;
+姐 > elder\-sister;
+衝 > rush\-against;
+執 > hold\-in\-hand;
+螺 > spiral\-shell;
+坊 > neighborhood;
+尼 > buddhist\-nun;
+鼾 > snore\-loudly;
+叶 > to\-harmonize;
+野 > open\-country;
+移 > change\-place;
+唐 > tang\-dynasty;
+秀 > ear\-of\-grain;
+执 > hold\-in\-hand;
+蒲 > type\-of\-rush;
+庆 > congratulate;
+蒟 > betel\-pepper;
+汗 > perspiration;
+萬 > ten\-thousand;
+拜 > do\-obeisance;
+參 > take\-part\-in;
+虑 > be\-concerned;
+宋 > song\-dynasty;
+胆 > gall\-bladder;
+剖 > split\-in\-two;
+凤 > male\-phoenix;
+询 > inquire\-into;
+膽 > gall\-bladder;
+筑 > ancient\-lute;
+偶 > accidentally;
+飽 > eat\-heartily;
+胎 > unborn\-child;
+悟 > to\-apprehend;
+肅 > pay\-respects;
+肃 > pay\-respects;
+姊 > elder\-sister;
+侘 > disappointed;
+祭 > sacrifice\-to;
+贺 > congratulate;
+饱 > eat\-heartily;
+宪 > constitution;
+碑 > stone\-tablet;
+昌 > light\-of\-sun;
+携 > lead\-by\-hand;
+厦 > big\-building;
+仆 > fall\-forward;
+妥 > satisfactory;
+杭 > cross\-stream;
+赠 > give\-present;
+腔 > chest\-cavity;
+孝 > filial\-piety;
+笹 > small\-bamboo;
+笛 > bamboo\-flute;
+歧 > fork\-of\-road;
+拝 > do\-obeisance;
+鉛 > lead\-plumbum;
+穗 > ear\-of\-grain;
+穂 > ear\-of\-grain;
+喃 > keep\-talking;
+舱 > hold\-of\-ship;
+醜 > ugly\-looking;
+慮 > be\-concerned;
+裘 > fur\-garments;
+栽 > to\-cultivate;
+诧 > be\-surprised;
+阎 > village\-gate;
+愣 > be\-in\-a\-daze;
+琪 > type\-of\-jade;
+箫 > bamboo\-flute;
+娥 > be\-beautiful;
+咪 > sound\-of\-cat;
+渗 > soak\-through;
+葫 > bottle\-gourd;
+坪 > level\-ground;
+坞 > entrenchment;
+怅 > disappointed;
+橡 > chestnut\-oak;
+絮 > waste\-cotton;
+跄 > walk\-rapidly;
+屹 > to\-rise\-high;
+惘 > disconcerted;
+眸 > pupil\-of\-eye;
+揩 > rub\-and\-wipe;
+楠 > name\-of\-tree;
+麓 > foot\-of\-hill;
+玮 > type\-of\-jade;
+恻 > feel\-anguish;
+桅 > mast\-of\-ship;
+骋 > gallop\-horse;
+闫 > village\-gate;
+蹒 > to\-jump\-over;
+祀 > to\-sacrifice;
+籁 > bamboo\-flute;
+寰 > great\-domain;
+斓 > multicolored;
+伫 > look\-towards;
+躏 > trample\-down;
+沽 > buy\-and\-sell;
+珥 > ear\-ornament;
+笆 > bamboo\-fence;
+虬 > young\-dragon;
+惬 > be\-satisfied;
+缨 > a\-chin\-strap;
+劾 > examine\-into;
+嘤 > seek\-friends;
+诃 > scold\-loudly;
+冽 > cold\-and\-raw;
+飨 > host\-banquet;
+怏 > discontented;
+冢 > burial\-mound;
+婀 > be\-beautiful;
+嗳 > interjection;
+碣 > stone\-tablet;
+宕 > stone\-quarry;
+耆 > man\-of\-sixty;
+靓 > make\-up\-face;
+蛰 > to\-hibernate;
+掼 > throw\-ground;
+囤 > grain\-basket;
+筱 > dwarf\-bamboo;
+樟 > camphor\-tree;
+鲥 > reeves''\-shad;
+逵 > thoroughfare;
+岷 > min\-mountain;
+枰 > smooth\-board;
+屐 > wooden\-shoes;
+胛 > the\-shoulder;
+鹞 > sparrow\-hawk;
+犄 > animal\-horns;
+跹 > wander\-about;
+昱 > bright\-light;
+栾 > name\-of\-tree;
+湄 > water''s\-edge;
+菅 > coarse\-grass;
+绻 > affectionate;
+篁 > bamboo\-grove;
+赅 > prepared\-for;
+椁 > outer\-coffin;
+纰 > spoiled\-silk;
+鼋 > large\-turtle;
+醐 > purest\-cream;
+龉 > uneven\-teeth;
+苻 > kind\-of\-herb;
+鬣 > horse''s\-mane;
+缗 > fishing\-line;
+湫 > a\-small\-pond;
+仟 > one\-thousand;
+蚶 > kind\-of\-clam;
+瓠 > bottle\-gourd;
+蛄 > mole\-cricket;
+毂 > hub\-of\-wheel;
+畚 > straw\-basket;
+洄 > a\-back\-water;
+飧 > evening\-meal;
+醪 > unclear\-wine;
+骝 > famous\-horse;
+骒 > mother\-horse;
+懔 > be\-afraid\-of;
+劓 > cut\-off\-nose;
+踔 > to\-get\-ahead;
+颡 > the\-forehead;
+潲 > driving\-rain;
+缯 > silk\-fabrics;
+惝 > disappointed;
+甓 > glazed\-tiles;
+荬 > a\-plant\-name;
+柒 > number\-seven;
+瘳 > to\-be\-healed;
+谇 > speak\-ill\-of;
+乇 > to\-depend\-on;
+龤 > to\-harmonize;
+齬 > uneven\-teeth;
+齆 > stuffed\-noze;
+齁 > snore\-loudly;
+鼽 > clogged\-nose;
+黿 > large\-turtle;
+麕 > muntjac\-deer;
+鷂 > sparrow\-hawk;
+鳳 > male\-phoenix;
+鳯 > male\-phoenix;
+鳐 > the\-nautilus;
+鱑 > the\-sturgeon;
+鱂 > name\-of\-fish;
+鰩 > the\-nautilus;
+鰣 > reeves''\-shad;
+鰃 > name\-of\-fish;
+鰁 > name\-of\-fish;
+魦 > shark\-family;
+魢 > name\-of\-fish;
+魟 > the\-nautilus;
+鬵 > big\-iron\-pot;
+鬐 > horse''s\-mane;
+鬅 > unkempt\-hair;
+驈 > black\-horses;
+騮 > famous\-horse;
+騍 > mother\-horse;
+騆 > divine\-horse;
+騁 > gallop\-horse;
+駜 > strong\-horse;
+駗 > chatter\-mark;
+饗 > host\-banquet;
+餀 > tainted\-food;
+飱 > evening\-meal;
+颭 > sway\-in\-wind;
+顙 > the\-forehead;
+頟 > the\-forehead;
+鞦 > leather\-stap;
+靚 > make\-up\-face;
+霑 > be\-moistened;
+隖 > entrenchment;
+陁 > a\-steep\-bank;
+闑 > the\-doorsill;
+閻 > village\-gate;
+閆 > village\-gate;
+镨 > praseodymium;
+鐠 > praseodymium;
+鏷 > protactinium;
+鍊 > smelt\-metals;
+錬 > smelt\-metals;
+錈 > to\-bend\-iron;
+釪 > an\-alms\-bowl;
+醽 > kind\-of\-wine;
+郙 > to\-be\-exiled;
+邲 > good\-looking;
+迣 > to\-leap\-over;
+轂 > hub\-of\-wheel;
+躪 > trample\-down;
+躚 > wander\-about;
+躙 > trample\-down;
+蹣 > to\-jump\-over;
+蹌 > walk\-rapidly;
+踼 > to\-fall\-flat;
+踤 > butt\-against;
+贈 > give\-present;
+賉 > to\-give\-alms;
+賅 > prepared\-for;
+賀 > congratulate;
+貆 > small\-badger;
+豶 > castrate\-pig;
+誾 > speak\-gently;
+誶 > speak\-ill\-of;
+詢 > inquire\-into;
+訶 > scold\-loudly;
+襛 > fine\-clothes;
+襆 > hood\-or\-cowl;
+蟄 > to\-hibernate;
+虯 > young\-dragon;
+葜 > smilax\-china;
+萩 > scandent\-hop;
+萘 > naphthanlene;
+菝 > smilax\-china;
+莦 > jungle\-grass;
+芧 > chestnut\-oak;
+芚 > green\-sprout;
+芑 > white\-millet;
+艙 > hold\-of\-ship;
+膗 > ugly\-and\-fat;
+肙 > a\-small\-worm;
+羀 > fishing\-trap;
+罶 > fishing\-trap;
+纓 > a\-chin\-strap;
+纁 > shade\-of\-red;
+繙 > to\-interpret;
+繒 > silk\-fabrics;
+縕 > tangled\-hemp;
+緡 > fishing\-line;
+綣 > affectionate;
+紕 > spoiled\-silk;
+粛 > pay\-respects;
+籯 > bamboo\-chest;
+籟 > bamboo\-flute;
+篴 > bamboo\-flute;
+篠 > dwarf\-bamboo;
+筤 > young\-bamboo;
+筍 > bamboo\-shoot;
+筅 > bamboo\-brush;
+穟 > ear\-of\-grain;
+秬 > black\-millet;
+祘 > to\-calculate;
+磠 > sal\-ammoniac;
+碶 > a\-flood\-gate;
+砟 > stone\-tablet;
+矼 > stone\-bridge;
+睒 > to\-glance\-at;
+皦 > bright\-white;
+瘺 > anal\-fistula;
+疿 > prickly\-heat;
+瑋 > type\-of\-jade;
+珹 > type\-of\-jade;
+玍 > ill\-tempered;
+狆 > pekinese\-dog;
+牂 > female\-sheep;
+燷 > disappointed;
+燣 > disappointed;
+滲 > soak\-through;
+滊 > a\-river\-name;
+泖 > still\-waters;
+毈 > fertile\-eggs;
+殜 > half\-sitting;
+欿 > discontented;
+欒 > name\-of\-tree;
+橒 > wood\-streaks;
+槻 > zelkova\-tree;
+槨 > outer\-coffin;
+槔 > water\-pulley;
+楀 > name\-of\-tree;
+枟 > wood\-streaks;
+斕 > multicolored;
+攜 > lead\-by\-hand;
+摜 > throw\-ground;
+摙 > to\-transport;
+揑 > to\-fabricate;
+戉 > a\-battle\-axe;
+懍 > be\-afraid\-of;
+憲 > constitution;
+慶 > congratulate;
+愜 > be\-satisfied;
+惻 > feel\-anguish;
+悵 > disappointed;
+廹 > to\-persecute;
+廈 > big\-building;
+帨 > handkerchief;
+嶢 > high\-or\-tall;
+屧 > wooden\-shoes;
+屘 > the\-youngest;
+嫲 > grand\-mother;
+壈 > disappointed;
+塢 > entrenchment;
+埜 > open\-country;
+嚶 > seek\-friends;
+噯 > interjection;
+喭 > condole\-with;
+咥 > sound\-of\-cat;
+呹 > to\-eat\-grass;
+叄 > take\-part\-in;
+厷 > the\-fore\-arm;
+厤 > to\-calculate;
+勣 > achievements;
+剷 > to\-level\-off;
+剗 > to\-level\-off;
+儗 > compare\-with;
+佭 > unsubmissive;
+亰 > capital\-city;
+丼 > bowl\-of\-food;
+䴼 > to\-extirpate;
+䴕 > a\-woodpecker;
+䳖 > flying\-birds;
+䲜 > lots\-of\-fish;
+䱊 > roe\-or\-spawn;
+䰸 > the\-nautilus;
+䯶 > fair\-of\-hair;
+䯬 > to\-hang\-down;
+䯧 > a\-small\-hall;
+䮟 > big\-and\-tall;
+䮑 > a\-gray\-horse;
+䭘 > well\-stacked;
+䭗 > well\-stacked;
+䭖 > animal\-feeds;
+䭊 > well\-stacked;
+䭉 > mashed\-beans;
+䬜 > evil\-spirits;
+䬚 > to\-move\-fast;
+䬋 > violent\-wind;
+䫨 > tall\-and\-big;
+䫚 > short\-headed;
+䫙 > the\-forehead;
+䫕 > small\-headed;
+䫇 > the\-whiskers;
+䪹 > a\-large\-face;
+䪰 > interjection;
+䪡 > to\-fall\-down;
+䪋 > silk\-cordage;
+䩏 > a\-small\-face;
+䩋 > a\-green\-face;
+䩊 > good\-looking;
+䩇 > a\-small\-head;
+䨶 > thunderstorm;
+䨲 > a\-small\-hare;
+䨪 > a\-dust\-storm;
+䨝 > a\-pure\-woman;
+䨈 > a\-small\-bird;
+䧬 > water''s\-edge;
+䧢 > a\-rough\-road;
+䧙 > a\-high\-mound;
+䥃 > a\-big\-hammer;
+䤬 > a\-small\-gong;
+䤦 > a\-battle\-axe;
+䤣 > a\-metal\-ring;
+䤋 > yellow\-faced;
+䣿 > to\-entertain;
+䣾 > cheese\-dregs;
+䣼 > mixed\-starch;
+䠔 > far\-and\-deep;
+䟿 > to\-reverence;
+䟹 > to\-hop\-about;
+䟕 > to\-step\-upon;
+䞱 > to\-fall\-over;
+䞧 > hard\-to\-walk;
+䜩 > to\-entertain;
+䚪 > curved\-horns;
+䘄 > cicada\-famiy;
+䘀 > grasshoppers;
+䗰 > spiral\-shell;
+䗧 > libellulidae;
+䖞 > a\-sea\-insect;
+䕻 > to\-adhere\-to;
+䕺 > dense\-growth;
+䕝 > medical\-herb;
+䕋 > of\-elm\-group;
+䓯 > water\-pepper;
+䑽 > a\-large\-boat;
+䑵 > a\-small\-boat;
+䐅 > the\-buttocks;
+䐁 > the\-buttocks;
+䏗 > unexpectedly;
+䏐 > the\-buttocks;
+䏍 > a\-small\-worm;
+䏀 > inharmonious;
+䎘 > birds\-flying;
+䎕 > flying\-birds;
+䍄 > an\-indenture;
+䌶 > \)\-black\-silk;
+䌇 > a\-thick\-rope;
+䌆 > silk\-fabrics;
+䊅 > to\-soak\-rice;
+䉯 > dried\-bamboo;
+䉕 > a\-bamboo\-hat;
+䉔 > bamboo\-slips;
+䈟 > broken\-sound;
+䇸 > a\-bamboo\-mat;
+䇝 > to\-break\-off;
+䇜 > small\-bamboo;
+䆬 > to\-fall\-down;
+䆢 > to\-penetrate;
+䆟 > coresponding;
+䆍 > cutted\-crops;
+䅁 > to\-husk\-rice;
+䃲 > a\-great\-rock;
+䃯 > small\-stones;
+䃝 > rugged\-rocks;
+䃍 > to\-fall\-down;
+䂐 > short\-stupid;
+䁧 > to\-open\-wide;
+䁠 > to\-hang\-down;
+䀁 > a\-small\-bowl;
+㿽 > a\-small\-bowl;
+㿵 > soft\-leather;
+㿲 > a\-fierce\-dog;
+㿪 > skin\-disease;
+㿨 > small\-stones;
+㿊 > very\-painful;
+㾔 > long\-illness;
+㼋 > the\-cucumber;
+㺖 > dogs\-barking;
+㺎 > fierce\-beast;
+㹿 > a\-fierce\-dog;
+㹪 > a\-fierce\-dog;
+㸾 > to\-filled\-up;
+㸭 > the\-opposite;
+㸘 > ten\-thousand;
+㷹 > intense\-heat;
+㶕 > to\-wash\-rice;
+㵊 > moving\-image;
+㴕 > to\-boil\-away;
+㴓 > to\-wash\-rice;
+㳞 > deep\-and\-far;
+㳑 > to\-flow\-over;
+㰷 > resurrection;
+㯬 > achievements;
+㯠 > a\-cross\-beam;
+㯜 > decayed\-wood;
+㮮 > a\-well\-sweep;
+㮬 > a\-fruit\-tree;
+㮪 > a\-small\-boat;
+㮏 > a\-fruit\-tree;
+㭫 > a\-fruit\-tree;
+㬵 > the\-shinbone;
+㫒 > hands\-joined;
+㫃 > flags\-flying;
+㫁 > to\-cut\-apart;
+㨭 > unreasonable;
+㧴 > to\-rub\-hands;
+㧢 > to\-depend\-on;
+㦰 > to\-break\-off;
+㦦 > apprehensive;
+鍊 > smelt\-metals;
+㦎 > cantankerous;
+㥵 > to\-dishonour;
+參 > take\-part\-in;
+㥠 > intelligence;
+㤳 > to\-depend\-on;
+㤧 > conciliation;
+㤞 > disappointed;
+螺 > spiral\-shell;
+㣒 > hair\-raising;
+㣑 > double\-image;
+㢗 > a\-high\-house;
+㡔 > oiled\-calico;
+㡅 > storage\-room;
+㠾 > a\-dish\-cloth;
+㠽 > a\-dish\-cloth;
+㠒 > mountain\-top;
+㟽 > mountain\-top;
+㟺 > mountain\-top;
+㟐 > big\-and\-high;
+㟇 > a\-land\-slide;
+㞢 > to\-arrive\-at;
+㞛 > red\-slippers;
+㞓 > the\-buttocks;
+㞅 > not\-straight;
+㜗 > covetousness;
+㛼 > to\-interrupt;
+㛥 > to\-prostrate;
+㛊 > to\-speculate;
+㛆 > to\-speculate;
+㘢 > a\-round\-cave;
+㘍 > sound\-of\-rat;
+㗒 > interjection;
+㖷 > bird\-singing;
+㖠 > an\-auxiliary;
+㕯 > slow\-tongued;
+㕒 > a\-lofty\-peak;
+㕃 > to\-fall\-over;
+㔬 > to\-establish;
+㔦 > to\-encourage;
+㔕 > with\-purpose;
+㔎 > to\-cut\-apart;
+㔃 > to\-cut\-short;
+㓣 > to\-sink\-into;
+㑪 > a\-generation;
+㑤 > good\-looking;
+㑔 > all\-together;
+㐸 > to\-own\-money;
+㐴 > to\-drag\-down;
+以 > by\-means\-of;
+農 > agriculture;
+径 > narrow\-path;
+几 > small\-table;
+便 > convenience;
+电 > electricity;
+百 > one\-hundred;
+跣 > bare\-footed;
+贅 > unnecessary;
+功 > achievement;
+江 > large\-river;
+注 > concentrate;
+牧 > tend\-cattle;
+婚 > get\-married;
+刊 > publication;
+农 > agriculture;
+熟 > well\-cooked;
+饭 > cooked\-rice;
+奢 > extravagant;
+查 > investigate;
+章 > composition;
+按 > put\-hand\-on;
+蝠 > kind\-of\-bat;
+蝕 > nibble\-away;
+困 > to\-surround;
+险 > narrow\-pass;
+练 > to\-practice;
+溯 > go\-upstream;
+渉 > ford\-stream;
+败 > be\-defeated;
+纷 > in\-disorder;
+缺 > be\-short\-of;
+遭 > come\-across;
+戴 > wear\-on\-top;
+勤 > industrious;
+勘 > investigate;
+髄 > bone\-marrow;
+効 > efficacious;
+貌 > countenance;
+繁 > complicated;
+柳 > willow\-tree;
+凄 > bitter\-cold;
+涉 > ford\-stream;
+霞 > rosy\-clouds;
+飴 > sweet\-meats;
+飯 > cooked\-rice;
+聪 > intelligent;
+倦 > be\-tired\-of;
+摔 > fall\-ground;
+醉 > intoxicated;
+査 > investigate;
+涛 > large\-waves;
+锅 > cooking\-pot;
+仔 > small\-thing;
+會 > to\-assemble;
+電 > electricity;
+拆 > to\-break\-up;
+翠 > color\-green;
+險 > narrow\-pass;
+晕 > halo\-in\-sky;
+険 > narrow\-pass;
+纠 > investigate;
+夸 > extravagant;
+辨 > distinguish;
+葛 > edible\-bean;
+轿 > sedan\-chair;
+敗 > be\-defeated;
+攫 > snatch\-away;
+紛 > in\-disorder;
+鍛 > forge\-metal;
+厕 > mingle\-with;
+鍋 > cooking\-pot;
+竿 > bamboo\-pole;
+券 > certificate;
+穉 > young\-grain;
+驳 > varicolored;
+憔 > be\-worn\-out;
+粞 > ground\-rice;
+酔 > intoxicated;
+遂 > comply\-with;
+隶 > subservient;
+缸 > earthen\-jug;
+肢 > human\-limbs;
+尴 > embarrassed;
+呐 > raise\-voice;
+颖 > rice\-tassel;
+砥 > a\-whetstone;
+孕 > be\-pregnant;
+钞 > paper\-money;
+垮 > be\-defeated;
+琢 > polish\-jade;
+绽 > ripped\-seam;
+奠 > pay\-respect;
+澜 > overflowing;
+惕 > be\-cautious;
+锻 > forge\-metal;
+蚀 > nibble\-away;
+趴 > lying\-prone;
+窘 > embarrassed;
+隋 > sui\-dynasty;
+瞄 > take\-aim\-at;
+祟 > evil\-spirit;
+嗔 > be\-angry\-at;
+奕 > in\-sequence;
+榴 > pomegranate;
+棘 > jujube\-tree;
+峙 > stand\-erect;
+砌 > stone\-steps;
+槐 > locust\-tree;
+鳞 > fish\-scales;
+惺 > intelligent;
+髓 > bone\-marrow;
+炽 > burning\-hot;
+迂 > doctrinaire;
+缪 > wind\-around;
+凋 > be\-withered;
+缤 > flourishing;
+雳 > thunderclap;
+赘 > unnecessary;
+驸 > extra\-horse;
+嗷 > loud\-clamor;
+炖 > stew\-slowly;
+谏 > remonstrate;
+篆 > seal\-script;
+宦 > officialdom;
+瓮 > earthen\-jar;
+朕 > pronoun\-''i'';
+阑 > door\-screen;
+卤 > saline\-soil;
+唏 > weep\-or\-sob;
+汩 > run\-swiftly;
+榕 > banyan\-tree;
+闰 > intercalary;
+昊 > summer\-time;
+玷 > flaw\-in\-gem;
+阙 > watch\-tower;
+瑕 > flaw\-in\-gem;
+泌 > to\-seep\-out;
+烽 > signal\-fire;
+孵 > sit\-on\-eggs;
+椭 > oval\-shaped;
+痉 > convulsions;
+匝 > full\-circle;
+饪 > cooked\-food;
+嶙 > precipitous;
+颧 > cheek\-bones;
+镗 > boring\-tool;
+揶 > make\-fun\-of;
+炷 > candle\-wick;
+贲 > forge\-ahead;
+蚱 > grasshopper;
+痨 > consumption;
+濂 > a\-waterfall;
+汐 > night\-tides;
+筠 > bamboo\-skin;
+氤 > hanging\-fog;
+痔 > hemorrhoids;
+趿 > to\-tread\-on;
+觞 > wine\-vessel;
+挹 > to\-bale\-out;
+膑 > the\-kneecap;
+徇 > comply\-with;
+唳 > cry\-of\-bird;
+礅 > stone\-block;
+箔 > reed\-screen;
+豸 > radical\-153;
+滟 > overflowing;
+烃 > hydrocarbon;
+砭 > stone\-probe;
+澍 > timely\-rain;
+龋 > tooth\-decay;
+缱 > attached\-to;
+奂 > be\-numerous;
+黩 > to\-dishonor;
+饴 > sweet\-meats;
+壅 > to\-obstruct;
+澶 > still\-water;
+餍 > be\-satiated;
+枥 > type\-of\-oak;
+蜢 > grasshopper;
+煅 > forge\-metal;
+桕 > tallow\-tree;
+鲢 > silver\-carp;
+趱 > go\-in\-hurry;
+妫 > family\-name;
+暾 > morning\-sun;
+荦 > brindled\-ox;
+邛 > in\-distress;
+戢 > to\-put\-away;
+榧 > type\-of\-yew;
+堇 > yellow\-loam;
+劬 > be\-diligent;
+魈 > mischevious;
+鍪 > an\-iron\-pan;
+蜣 > dung\-beetle;
+痦 > \(flat\)\-mole;
+戬 > exterminate;
+嗉 > bird''s\-crop;
+儋 > a\-small\-jar;
+蚜 > plant\-louse;
+粜 > sell\-grains;
+攮 > to\-fend\-off;
+苎 > china\-grass;
+埕 > earthen\-jar;
+坩 > earthenware;
+榉 > type\-of\-elm;
+玢 > porphyrites;
+绁 > to\-contract;
+潆 > tiny\-stream;
+髹 > red\-lacquer;
+觖 > to\-long\-for;
+螵 > a\-chrysalis;
+杪 > tip\-of\-twig;
+幂 > cover\-cloth;
+硗 > barren\-land;
+脞 > minced\-meat;
+轵 > end\-of\-axle;
+楗 > bar\-of\-door;
+桄 > a\-coir\-palm;
+堠 > battlements;
+俜 > to\-trust\-to;
+齲 > tooth\-decay;
+黷 > to\-dishonor;
+麀 > female\-deer;
+鹵 > saline\-soil;
+鸏 > tropic\-bird;
+鴺 > the\-pelican;
+鱠 > minced\-fish;
+鱗 > fish\-scales;
+鰱 > silver\-carp;
+鬙 > matted\-hair;
+驔 > black\-horse;
+驇 > heavy\-horse;
+騺 > heavy\-horse;
+駙 > extra\-horse;
+駁 > varicolored;
+饜 > be\-satiated;
+餁 > cooked\-food;
+飪 > cooked\-food;
+顴 > cheek\-bones;
+顦 > be\-worn\-out;
+顇 > be\-worn\-out;
+頴 > rice\-tassel;
+頋 > to\-care\-for;
+鞫 > interrogate;
+靂 > thunderclap;
+隉 > in\-disorder;
+阨 > in\-distress;
+闕 > watch\-tower;
+闌 > door\-screen;
+閠 > intercalary;
+閏 > intercalary;
+鐦 > californium;
+鏻 > phosphonium;
+鏜 > boring\-tool;
+鎐 > family\-name;
+鍐 > a\-headstall;
+鈔 > paper\-money;
+釆 > distinguish;
+醹 > strong\-wine;
+醲 > strong\-wine;
+醓 > salted\-meat;
+酏 > millet\-wine;
+遹 > comply\-with;
+遡 > go\-upstream;
+迊 > to\-go\-round;
+轎 > sedan\-chair;
+轇 > complicated;
+輦 > a\-hand\-cart;
+軹 > end\-of\-axle;
+蹹 > to\-tread\-on;
+蹵 > to\-tread\-on;
+趲 > go\-in\-hurry;
+贗 > counterfeit;
+賁 > forge\-ahead;
+貘 > the\-panther;
+豦 > a\-wild\-boar;
+豘 > a\-small\-pig;
+諫 > remonstrate;
+諌 > remonstrate;
+觴 > wine\-vessel;
+觱 > tartar\-horn;
+覈 > investigate;
+褵 > bridal\-veil;
+蠜 > grasshopper;
+蠋 > caterpillar;
+蟛 > a\-land\-crab;
+蝛 > the\-sow\-bug;
+蝍 > a\-centipede;
+蛓 > caterpillar;
+藚 > water\-plant;
+藄 > edible\-fern;
+蓪 > paper\-plant;
+蓂 > lucky\-place;
+蒭 > to\-cutgrass;
+萐 > lucky\-plant;
+菢 > to\-incubate;
+苧 > china\-grass;
+艗 > bow\-of\-junk;
+臏 > the\-kneecap;
+胾 > minced\-meat;
+胔 > rotten\-meat;
+肈 > to\-commence;
+聰 > intelligent;
+聦 > the\-hearing;
+聡 > intelligent;
+耑 > specialized;
+翆 > color\-green;
+羖 > a\-black\-ram;
+羃 > cover\-cloth;
+罱 > fishing\-net;
+罠 > animal\-trap;
+罒 > radical\-122;
+罋 > earthen\-jar;
+繾 > attached\-to;
+繽 > flourishing;
+繆 > wind\-around;
+綻 > ripped\-seam;
+糾 > investigate;
+糶 > sell\-grains;
+糢 > rice\-snacks;
+簹 > tall\-bamboo;
+簵 > fine\-bamboo;
+簰 > bamboo\-raft;
+篔 > tall\-bamboo;
+箘 > fine\-bamboo;
+筩 > bamboo\-pipe;
+筊 > bamboo\-rope;
+筇 > bamboo\-name;
+笯 > a\-bird\-cage;
+窸 > faint\-sound;
+穵 > deep\-hollow;
+穎 > rice\-tassel;
+磽 > barren\-land;
+磹 > stone\-wedge;
+碔 > \/2\-pr\-stone;
+砆 > \/2\-pr\-stone;
+砃 > white\-stone;
+瞵 > to\-stare\-at;
+睠 > to\-care\-for;
+睎 > to\-long\-for;
+眥 > eye\-sockets;
+眑 > sunken\-eyes;
+眊 > dim\-sighted;
+皃 > countenance;
+癆 > consumption;
+瘚 > to\-hiccough;
+痳 > pock\-marked;
+痲 > pock\-marked;
+痭 > menorrhagia;
+痙 > convulsions;
+痃 > indigestion;
+甕 > earthen\-jar;
+珽 > jade\-tablet;
+玗 > \/2\-pr\-stone;
+獏 > the\-panther;
+狢 > animal\-name;
+犖 > brindled\-ox;
+燖 > reheat\-food;
+熾 > burning\-hot;
+煟 > bright\-room;
+煏 > dry\-by\-fire;
+煆 > raging\-fire;
+烴 > hydrocarbon;
+灩 > overflowing;
+灧 > overflowing;
+瀾 > overflowing;
+瀠 > tiny\-stream;
+濤 > large\-waves;
+澰 > overflowing;
+潿 > still\-water;
+潾 > clear\-water;
+潠 > to\-blow\-out;
+滷 > thick\-gravy;
+湜 > transparent;
+渟 > not\-flowing;
+淒 > bitter\-cold;
+涠 > still\-water;
+浡 > burst\-forth;
+泝 > go\-upstream;
+沰 > to\-let\-drop;
+殰 > an\-abortion;
+欮 > to\-hiccough;
+櫸 > type\-of\-elm;
+櫪 > type\-of\-oak;
+橢 > oval\-shaped;
+槲 > type\-of\-oak;
+槢 > a\-hard\-wood;
+楕 > oval\-shaped;
+棯 > jujube\-tree;
+梘 > bamboo\-tube;
+梖 > a\-palm\-tree;
+梄 > a\-soft\-wood;
+栞 > publication;
+栃 > type\-of\-oak;
+枧 > bamboo\-tube;
+杤 > type\-of\-oak;
+暈 > halo\-in\-sky;
+昜 > to\-open\-out;
+昉 > bright\-dawn;
+旽 > morning\-sun;
+旉 > to\-state\-to;
+摡 > to\-irrigate;
+摎 > to\-strangle;
+挓 > to\-open\-out;
+戩 > exterminate;
+慉 > to\-bring\-up;
+愔 > comfortable;
+忲 > extravagant;
+徻 > a\-wide\-room;
+徑 > narrow\-path;
+弰 > ends\-of\-bow;
+幎 > cover\-cloth;
+帀 > to\-go\-round;
+崪 > rocky\-peaks;
+崒 > rocky\-peaks;
+屰 > disobedient;
+屝 > straw\-shoes;
+尷 > embarrassed;
+尶 > embarrassed;
+尜 > a\-child\-toy;
+尃 > to\-state\-to;
+嬔 > baby\-rabbit;
+媯 > family\-name;
+奓 > extravagant;
+奐 > be\-numerous;
+塿 > small\-mound;
+堊 > white\-earth;
+堈 > earthen\-jug;
+垞 > small\-mound;
+垝 > dilapidated;
+垔 > to\-restrain;
+坵 > earthenware;
+嗱 > exclamation;
+喎 > a\-wry\-mouth;
+唹 > to\-smile\-at;
+咅 > to\-spit\-out;
+吶 > raise\-voice;
+叻 > place\-names;
+厾 > lightly\-tap;
+厠 > mingle\-with;
+匯 > a\-concourse;
+勽 > to\-incubate;
+勠 > join\-forces;
+劼 > be\-discreet;
+劵 > certificate;
+剦 > to\-castrate;
+刋 > publication;
+凩 > wintry\-wind;
+冪 > cover\-cloth;
+兦 > destruction;
+儁 > outstanding;
+傏 > to\-ward\-off;
+偢 > to\-stare\-at;
+俛 > make\-effort;
+佹 > depend\-upon;
+佡 > make\-effort;
+䶪 > sharp\-teeth;
+䵴 > black\-color;
+䵳 > light\-black;
+䵰 > black\-color;
+䵩 > dark\-yellow;
+䵢 > light\-black;
+䵎 > dark\-yellow;
+䲻 > the\-swallow;
+䱽 > the\-pomfret;
+䱺 > a\-male\-crab;
+䱶 > a\-male\-crab;
+䱒 > salted\-fish;
+䯣 > the\-kneecap;
+䯘 > the\-kneecap;
+䮘 > young\-horse;
+䫳 > human\-skull;
+䫰 > sparse\-hair;
+䫭 > bald\-headed;
+䫜 > sunken\-eyes;
+䫄 > better\-than;
+䪴 > the\-occiput;
+䪄 > great\-blaze;
+䩻 > to\-be\-chief;
+䩜 > descendants;
+䨱 > spilt\-water;
+䧶 > to\-care\-for;
+䧨 > precipitous;
+䧞 > to\-increase;
+䧓 > a\-big\-mound;
+䧊 > a\-big\-mound;
+䦷 > to\-struggle;
+䦶 > to\-struggle;
+䦟 > to\-struggle;
+䦛 > to\-struggle;
+䦘 > a\-threshold;
+䥀 > to\-pull\-out;
+䤭 > to\-ornament;
+䤅 > southerwood;
+䢉 > agriculture;
+䠝 > to\-stand\-up;
+䠍 > at\-the\-feet;
+䟵 > to\-tread\-on;
+䟯 > to\-tread\-on;
+䟅 > to\-go\-ahead;
+䟁 > a\-foot\-race;
+䞽 > to\-lie\-flat;
+䞨 > half\-a\-pace;
+䞦 > to\-lie\-flat;
+䞊 > to\-increase;
+䞄 > to\-disperse;
+䝍 > a\-wild\-boar;
+䝀 > garden\-peas;
+䜰 > deep\-valley;
+䜮 > deep\-valley;
+䜗 > angry\-words;
+䜏 > to\-withdraw;
+䜆 > hasty\-words;
+䛘 > to\-think\-of;
+䚾 > to\-think\-of;
+䚳 > do\-not\-know;
+䚲 > to\-laugh\-at;
+䙾 > to\-wait\-for;
+䙱 > a\-long\-coat;
+䙰 > new\-feather;
+䙂 > short\-pants;
+䘴 > short\-pants;
+䗖 > the\-rainbow;
+䕸 > wheat\-straw;
+䕣 > water\-plant;
+䕌 > young\-grain;
+䔿 > lush\-growth;
+䓮 > lush\-growth;
+䓏 > flourishing;
+䒋 > air\-current;
+䐚 > good\-graces;
+䏶 > the\-stomach;
+䏔 > to\-eat\-meat;
+䏓 > the\-stomach;
+䍨 > to\-castrate;
+䌺 > flourishing;
+䌪 > to\-continue;
+䌦 > green\-color;
+䊭 > to\-overturn;
+䊫 > coarse\-rice;
+䊢 > thick\-fluid;
+䊓 > to\-paste\-up;
+䉝 > bamboo\-ware;
+䉊 > bamboo\-ware;
+䈸 > a\-big\-chest;
+䈀 > bamboo\-ware;
+䇕 > to\-wait\-for;
+䇓 > to\-wait\-for;
+䇃 > to\-wait\-for;
+䆳 > far\-distant;
+䆘 > acupuncture;
+䆖 > a\-big\-house;
+䅻 > measurement;
+䅄 > long\-grains;
+䄽 > common\-rice;
+䄄 > achievement;
+䃭 > a\-stone\-box;
+䂱 > to\-wear\-out;
+䂤 > white\-stone;
+䂡 > a\-whetstone;
+䂓 > regulations;
+䁻 > pretty\-eyes;
+䁷 > bright\-eyes;
+䁱 > hollow\-eyed;
+䁑 > pretty\-eyes;
+䀦 > to\-stare\-at;
+䀂 > a\-big\-basin;
+㿣 > white\-color;
+㿘 > to\-get\-sick;
+㾺 > eye\-disease;
+㾝 > to\-leak\-out;
+㾗 > eye\-disease;
+㾈 > hunchbacked;
+㾃 > hump\-backed;
+㽪 > paddy\-field;
+㽆 > earthenware;
+㽀 > earthenware;
+㼻 > earthenware;
+㼸 > earthenware;
+㼶 > earthenware;
+㼳 > earthenware;
+㼯 > earthenware;
+㼬 > earthenware;
+㼦 > earthenware;
+㼤 > earthenware;
+㼘 > of\-mountain;
+㼓 > melon\-seeds;
+㻓 > a\-fine\-jade;
+㹠 > a\-small\-big;
+㸠 > thick\-stick;
+㶑 > overflowing;
+㵮 > clear\-water;
+㵤 > to\-overflow;
+㵕 > to\-permeate;
+㴘 > to\-ooze\-out;
+㲰 > a\-hairy\-dog;
+㲒 > to\-incubate;
+㱩 > an\-abortion;
+㰲 > to\-blow\-off;
+㰮 > to\-laugh\-at;
+㰞 > to\-laugh\-at;
+㯈 > small\-trees;
+㮟 > a\-whetstone;
+㮝 > angle\-steel;
+㭴 > the\-oscines;
+㭎 > a\-tall\-tree;
+㬲 > to\-increase;
+㬩 > a\-tiny\-star;
+㫵 > white\-color;
+㫘 > disappeared;
+㪺 > to\-bale\-out;
+㩈 > to\-restrain;
+㩅 > to\-draw\-out;
+㨺 > to\-ornament;
+㨵 > to\-cut\-away;
+㨴 > to\-turnover;
+飯 > cooked\-rice;
+㨕 > to\-shoulder;
+鱗 > fish\-scales;
+㧔 > to\-disturbe;
+柳 > willow\-tree;
+暈 > halo\-in\-sky;
+㦟 > intelligent;
+輦 > a\-hand\-cart;
+㦒 > to\-deceived;
+泌 > to\-seep\-out;
+便 > convenience;
+㤡 > to\-surprise;
+㤛 > to\-remember;
+㤕 > melancholoy;
+㤁 > to\-disgrace;
+㣾 > do\-not\-care;
+㣵 > to\-run\-away;
+㣥 > to\-store\-up;
+㢳 > black\-color;
+㢓 > to\-separate;
+㡾 > a\-threshold;
+㠖 > precipitous;
+㞘 > a\-small\-pig;
+㝴 > a\-round\-off;
+㝔 > deep\-bottom;
+㜣 > a\-last\-name;
+㜎 > slave\-girls;
+㛑 > three\-women;
+㚾 > to\-have\-fun;
+㙧 > earthenware;
+㘶 > a\-hen\-roost;
+㘥 > to\-inveigle;
+㘆 > to\-laugh\-at;
+㗗 > to\-separate;
+㖽 > to\-call\-out;
+㖣 > to\-spit\-out;
+㖞 > a\-wry\-mouth;
+㖖 > to\-spit\-out;
+㖕 > to\-spit\-out;
+㖑 > to\-shout\-at;
+㔼 > to\-fit\-into;
+㔶 > a\-small\-cup;
+㔏 > to\-cut\-open;
+㓬 > to\-cut\-open;
+㓩 > horned\-hair;
+㒨 > an\-immortal;
+㒥 > an\-immortal;
+㑽 > to\-ward\-off;
+的 > possessive;
+込 > crowd\-into;
+辻 > crossroads;
+能 > to\-be\-able;
+都 > metropolis;
+文 > literature;
+轍 > wagon\-ruts;
+輩 > generation;
+眩 > to\-confuse;
+眠 > close\-eyes;
+輝 > brightness;
+弐 > number\-two;
+者 > that\-which;
+业 > profession;
+府 > prefecture;
+政 > government;
+世 > generation;
+产 > give\-birth;
+场 > open\-space;
+比 > to\-compare;
+疲 > feel\-tired;
+画 > a\-painting;
+産 > give\-birth;
+望 > to\-look\-at;
+賺 > make\-money;
+六 > number\-six;
+屡 > frequently;
+尤 > especially;
+專 > monopolize;
+基 > foundation;
+双 > set\-of\-two;
+孫 > grandchild;
+专 > monopolize;
+嬪 > court\-lady;
+离 > rare\-beast;
+媒 > go\-between;
+誌 > write\-down;
+誇 > exaggerate;
+响 > make\-sound;
+婿 > son\-in\-law;
+爭 > to\-dispute;
+器 > receptacle;
+營 > encampment;
+妙 > mysterious;
+胡 > recklessly;
+妓 > prostitute;
+襦 > short\-coat;
+奧 > mysterious;
+奥 > mysterious;
+壻 > son\-in\-law;
+壱 > number\-one;
+孙 > grandchild;
+营 > encampment;
+場 > open\-space;
+郭 > outer\-part;
+讨 > to\-discuss;
+滅 > extinguish;
+虜 > to\-capture;
+积 > accumulate;
+菜 > vegetables;
+嗣 > to\-connect;
+嗜 > be\-fond\-of;
+介 > forerunner;
+索 > large\-rope;
+丁 > male\-adult;
+遍 > everywhere;
+辈 > generation;
+蒔 > transplant;
+懂 > understand;
+释 > interprete;
+纵 > indulge\-in;
+灭 > extinguish;
+歴 > take\-place;
+仁 > humaneness;
+檀 > sandalwood;
+削 > scrape\-off;
+刑 > punishment;
+岂 > how\?\-what\?;
+隆 > prosperous;
+辉 > brightness;
+刃 > edged\-tool;
+析 > split\-wood;
+腸 > intestines;
+業 > profession;
+楓 > maple\-tree;
+餅 > rice\-cakes;
+枫 > maple\-tree;
+傍 > by\-side\-of;
+耽 > indulge\-in;
+頻 > frequently;
+栓 > wooden\-peg;
+響 > make\-sound;
+凯 > triumphant;
+恭 > respectful;
+祸 > misfortune;
+频 > frequently;
+禅 > meditation;
+柯 > axe\-handle;
+捐 > contribute;
+踪 > footprints;
+屁 > break\-wind;
+谊 > friendship;
+储 > save\-money;
+雁 > wild\-goose;
+摊 > spread\-out;
+吨 > metric\-ton;
+乍 > first\-time;
+陀 > steep\-bank;
+縱 > indulge\-in;
+縦 > indulge\-in;
+肠 > intestines;
+赚 > make\-money;
+綿 > cotton\-wad;
+綱 > heavy\-rope;
+绵 > cotton\-wad;
+抑 > press\-down;
+饼 > rice\-cakes;
+彬 > cultivated;
+撮 > little\-bit;
+粥 > rice\-gruel;
+蛮 > barbarians;
+箸 > chopsticks;
+筵 > bamboo\-mat;
+艇 > small\-boat;
+捌 > break\-open;
+笠 > bamboo\-hat;
+庞 > disorderly;
+鋪 > spread\-out;
+竝 > to\-combine;
+積 > accumulate;
+扉 > door\-panel;
+纲 > heavy\-rope;
+釋 > interprete;
+釈 > interprete;
+坝 > embankment;
+憧 > irresolute;
+甩 > throw\-away;
+祕 > mysterious;
+酌 > serve\-wine;
+磐 > large\-rock;
+辅 > cheek\-bone;
+捡 > to\-pick\-up;
+筷 > chopsticks;
+蹈 > stamp\-feet;
+晒 > dry\-in\-sun;
+歼 > annihilate;
+涩 > astringent;
+霎 > light\-rain;
+擅 > monopolize;
+蔬 > vegetables;
+绸 > silk\-cloth;
+眯 > be\-blinded;
+寅 > to\-respect;
+虏 > to\-capture;
+眶 > eye\-socket;
+碟 > small\-dish;
+蕴 > to\-collect;
+迭 > repeatedly;
+旭 > rising\-sun;
+悍 > courageous;
+枢 > door\-hinge;
+跋 > go\-by\-foot;
+圪 > \(phonetic\);
+搔 > to\-scratch;
+嚎 > cry\-loudly;
+辙 > wagon\-ruts;
+汛 > high\-water;
+脯 > dried\-meat;
+嗒 > to\-despair;
+墟 > high\-mound;
+馋 > gluttonous;
+娼 > prostitute;
+蹭 > to\-shuffle;
+澈 > thoroughly;
+缭 > wind\-round;
+喳 > whispering;
+弧 > wooden\-bow;
+跺 > stamp\-feet;
+惆 > distressed;
+撵 > drive\-away;
+殃 > misfortune;
+恪 > respectful;
+轶 > rush\-forth;
+腆 > prosperous;
+窿 > mine\-shaft;
+樵 > woodcutter;
+犀 > rhinoceros;
+绚 > variegated;
+藕 > lotus\-root;
+摞 > to\-pile\-up;
+滤 > strain\-out;
+缈 > indistinct;
+肪 > animal\-fat;
+甄 > to\-examine;
+铛 > frying\-pan;
+嫡 > legal\-wife;
+瘁 > feel\-tired;
+磷 > phosphorus;
+翡 > kingfisher;
+瞑 > close\-eyes;
+霭 > cloudy\-sky;
+舫 > fancy\-boat;
+纨 > white\-silk;
+榷 > footbridge;
+糜 > rice\-gruel;
+壹 > number\-one;
+蔗 > sugar\-cane;
+彗 > broomstick;
+喟 > heave\-sigh;
+喑 > to\-be\-dumb;
+鱿 > cuttlefish;
+倜 > raise\-high;
+侩 > go\-between;
+滂 > torrential;
+贰 > number\-two;
+忻 > delightful;
+燧 > flintstone;
+稔 > ripe\-grain;
+嫔 > court\-lady;
+颉 > fly\-upward;
+舸 > large\-boat;
+眙 > to\-gaze\-at;
+瘀 > a\-hematoma;
+夯 > heavy\-load;
+饕 > gluttonous;
+鲠 > fish\-bones;
+茏 > tall\-grass;
+茯 > china\-root;
+鲧 > giant\-fish;
+逦 > meandering;
+骜 > wild\-horse;
+欹 > fierce\-dog;
+缛 > decorative;
+苕 > rush\-plant;
+顸 > large\-face;
+尕 > \(phonetic\);
+缦 > plain\-silk;
+帙 > book\-cover;
+鳃 > fish\-gills;
+醴 > sweet\-wine;
+辊 > turn\-round;
+岘 > steep\-hill;
+倬 > noticeable;
+鲞 > dried\-fish;
+簟 > bamboo\-mat;
+稹 > accumulate;
+缁 > black\-silk;
+箧 > rattan\-box;
+墁 > to\-plaster;
+罴 > brown\-bear;
+爰 > lead\-on\-to;
+杲 > bright\-sun;
+癔 > hysterical;
+枋 > sandalwood;
+莜 > avena\-nuda;
+埙 > instrument;
+獾 > the\-badger;
+莳 > transplant;
+郫 > place\-name;
+蛏 > razor\-clam;
+橥 > wooden\-peg;
+帑 > a\-treasury;
+揠 > to\-pull\-up;
+趑 > can''t\-move;
+阍 > gatekeeper;
+掊 > to\-extract;
+镝 > dysprosium;
+砗 > giant\-clam;
+嫫 > ugly\-woman;
+蔌 > vegetables;
+跗 > the\-instep;
+浼 > to\-request;
+嗌 > the\-throat;
+唑 > \(phonetic\);
+汆 > to\-parboil;
+刭 > cut\-throat;
+髂 > the\-pelvis;
+艋 > small\-boat;
+钼 > molybdenum;
+憝 > to\-dislike;
+炅 > brilliance;
+隳 > to\-destroy;
+茛 > ranunculus;
+糇 > dried\-rice;
+钆 > gadolinium;
+澌 > to\-exhaust;
+庀 > to\-prepare;
+犴 > a\-wild\-dog;
+埏 > a\-boundary;
+凵 > receptacle;
+谮 > to\-slander;
+龢 > in\-harmony;
+龐 > disorderly;
+龎 > disorderly;
+鼧 > the\-marmot;
+鼄 > the\-spider;
+黹 > embroidery;
+黲 > grey\-black;
+黪 > grey\-black;
+黤 > blue\-black;
+鸺 > horned\-owl;
+鵒 > mynah\-bird;
+鵂 > horned\-owl;
+鴷 > woodpecker;
+鴈 > wild\-goose;
+鳲 > turtledove;
+鳫 > wild\-goose;
+鲰 > small\-fish;
+鱐 > dried\-fish;
+鱇 > anglerfish;
+鰓 > fish\-gills;
+鰂 > cuttlefish;
+鯫 > small\-fish;
+鯗 > dried\-fish;
+鯁 > fish\-bones;
+鯀 > giant\-fish;
+鮿 > dried\-fish;
+鮟 > anglerfish;
+鮝 > dried\-fish;
+鮁 > the\-bonito;
+魷 > cuttlefish;
+魛 > the\-mullet;
+鬨 > boisterous;
+鬜 > to\-go\-bald;
+髣 > similar\-to;
+髁 > thigh\-bone;
+驁 > wild\-horse;
+騗 > to\-swindle;
+騋 > tall\-horse;
+騉 > fine\-horse;
+駰 > grey\-horse;
+馹 > post\-horse;
+饞 > gluttonous;
+餠 > rice\-cakes;
+頡 > fly\-upward;
+頇 > large\-face;
+鞡 > leg\-warmer;
+靰 > leg\-warmer;
+靝 > the\-heaven;
+靉 > cloudy\-sky;
+靆 > cloudy\-sky;
+靄 > cloudy\-sky;
+雰 > atmosphere;
+雙 > set\-of\-two;
+隮 > ti\-rise\-up;
+陻 > small\-hill;
+陑 > place\-name;
+阯 > foundation;
+闟 > peacefully;
+閽 > gatekeeper;
+閧 > boisterous;
+镚 > small\-coin;
+锬 > long\-spear;
+钷 > promethium;
+鐺 > frying\-pan;
+鐶 > metal\-ring;
+鐚 > soft\-steel;
+鐒 > lawrencium;
+鐀 > a\-cupboard;
+鏑 > dysprosium;
+鎪 > to\-engrave;
+鎛 > large\-bell;
+鍀 > technetium;
+錟 > long\-spear;
+錞 > instrument;
+錏 > soft\-steel;
+鉬 > molybdenum;
+鈊 > cadolinium;
+釓 > gadolinium;
+醡 > wine\-press;
+醝 > white\-wine;
+酅 > raise\-feet;
+郹 > place\-name;
+邐 > meandering;
+逬 > to\-scatter;
+輥 > turn\-round;
+輔 > cheek\-bone;
+軼 > rush\-forth;
+躩 > take\-quick;
+躛 > exaggerate;
+躗 > exaggerate;
+蹤 > footprints;
+踧 > uneasiness;
+踜 > to\-stumble;
+踖 > trample\-on;
+跥 > stamp\-feet;
+跐 > to\-trample;
+跁 > trample\-on;
+趦 > can''t\-move;
+貳 > number\-two;
+貮 > number\-two;
+豈 > how\?\-what\?;
+豀 > to\-quarrel;
+譭 > to\-slander;
+譛 > to\-slander;
+譖 > to\-slander;
+譒 > promulgate;
+謪 > to\-consult;
+諴 > in\-harmony;
+諟 > to\-examine;
+誼 > friendship;
+誩 > to\-quarrel;
+討 > to\-discuss;
+觃 > place\-name;
+覸 > steal\-look;
+覵 > steal\-look;
+襡 > short\-coat;
+裪 > the\-sleeve;
+袲 > place\-name;
+袠 > book\-cover;
+袟 > book\-cover;
+蠻 > barbarians;
+蟶 > razor\-clam;
+蟫 > silverfish;
+蟣 > louse\-eggs;
+蟁 > a\-mosquito;
+蛜 > wood\-louse;
+蘢 > tall\-grass;
+薧 > dried\-food;
+蕡 > hemp\-seeds;
+蓷 > motherwort;
+蒽 > anthracene;
+蒦 > to\-measure;
+蒖 > plant\-name;
+葯 > orris\-root;
+莚 > bamboo\-mat;
+荵 > polemonium;
+艬 > large\-ship;
+艑 > small\-boat;
+舴 > small\-boat;
+膓 > intestines;
+脪 > erysipelas;
+脩 > dried\-meat;
+脗 > coinciding;
+肸 > spread\-out;
+肦 > large\-head;
+聟 > son\-in\-law;
+翀 > fly\-upward;
+羆 > brown\-bear;
+绋 > large\-rope;
+繚 > wind\-round;
+繐 > fine\-cloth;
+縵 > plain\-silk;
+縟 > decorative;
+縇 > decoration;
+緲 > indistinct;
+緜 > cotton\-wad;
+緇 > black\-silk;
+綢 > silk\-cloth;
+絺 > fine\-linen;
+絢 > variegated;
+絛 > silk\-braid;
+絖 > fine\-silks;
+絓 > obstructed;
+紼 > large\-rope;
+紈 > white\-silk;
+粻 > provisions;
+粦 > phosphorus;
+簥 > large\-pipe;
+篹 > to\-collect;
+篲 > broomstick;
+篋 > ratton\-box;
+箠 > horse\-whip;
+箚 > brief\-note;
+筯 > chopsticks;
+竰 > centiliter;
+竡 > hectoliter;
+竓 > milliliter;
+窰 > brick\-kiln;
+穭 > wild\-grain;
+稆 > wild\-grain;
+禪 > meditation;
+禚 > place\-name;
+禍 > misfortune;
+祅 > calamities;
+磑 > stone\-mill;
+硨 > giant\-clam;
+硙 > stone\-mill;
+硃 > a\-red\-mole;
+矁 > to\-look\-at;
+睟 > clear\-eyed;
+眆 > indistinct;
+疕 > head\-sores;
+畓 > rice\-field;
+畁 > to\-give\-to;
+產 > give\-birth;
+玔 > green\-jade;
+玅 > mysterious;
+猘 > fierce\-dog;
+犛 > a\-black\-ox;
+牏 > privy\-hole;
+牋 > memorandum;
+爫 > radical\-87;
+燐 > phosphorus;
+熅 > smooth\-out;
+烕 > to\-destroy;
+灺 > candle\-end;
+灒 > to\-spatter;
+濾 > strain\-out;
+濙 > to\-revolve;
+濇 > astringent;
+濆 > river\-bank;
+澁 > astringent;
+澀 > astringent;
+溾 > light\-rain;
+渋 > astringent;
+涘 > river\-bank;
+泆 > licentious;
+殲 > annihilate;
+殱 > annihilate;
+歷 > take\-place;
+欃 > sandalwood;
+櫾 > the\-pomelo;
+櫫 > wooden\-peg;
+檼 > ridge\-pole;
+橴 > place\-name;
+樞 > door\-hinge;
+榼 > wine\-glass;
+榦 > tree\-trunk;
+楪 > small\-dish;
+椵 > pompelmous;
+椳 > the\-pivots;
+椌 > instrument;
+栴 > sandalwood;
+栛 > the\-lichee;
+栘 > fruit\-tree;
+柷 > instrument;
+杢 > woodworker;
+朌 > distribute;
+曬 > dry\-in\-sun;
+暘 > rising\-sun;
+旕 > place\-name;
+旀 > place\-name;
+斢 > to\-plunder;
+斒 > variegated;
+攤 > spread\-out;
+攆 > drive\-away;
+擪 > to\-tuck\-in;
+擥 > drive\-away;
+撿 > to\-pick\-up;
+撱 > to\-shorten;
+掱 > pickpocket;
+掎 > drag\-aside;
+挭 > fish\-bones;
+抅 > to\-collect;
+扡 > drag\-along;
+憸 > to\-flatter;
+憍 > be\-haughty;
+憀 > to\-rely\-on;
+愮 > distressed;
+愓 > profligate;
+惏 > avaricious;
+恛 > disordered;
+怲 > be\-anxious;
+忋 > to\-rely\-on;
+徧 > everywhere;
+彿 > resembling;
+弍 > number\-two;
+弌 > number\-one;
+弇 > cover\-over;
+廱 > harmonious;
+廀 > to\-conceal;
+庴 > place\-name;
+巼 > place\-name;
+巂 > place\-name;
+嵙 > place\-name;
+峴 > steep\-hill;
+峓 > place\-name;
+屢 > frequently;
+屄 > the\-vagina;
+専 > monopolize;
+宼 > tyrannical;
+孼 > misfortune;
+媟 > lust\-after;
+夅 > to\-descend;
+壩 > embankment;
+壎 > instrument;
+塲 > open\-space;
+塤 > instrument;
+堮 > a\-boundary;
+堃 > compliance;
+坒 > to\-compare;
+圦 > water\-gate;
+囌 > loquacious;
+嚵 > gluttonous;
+嚲 > read\-aloud;
+噸 > metric\-ton;
+噐 > receptacle;
+嘂 > cry\-loudly;
+嗭 > place\-name;
+喸 > place\-name;
+営 > encampment;
+唽 > to\-twitter;
+唟 > place\-name;
+呴 > breathe\-on;
+叆 > cloudy\-sky;
+卝 > hair\-style;
+劏 > to\-butcher;
+劄 > brief\-note;
+剳 > brief\-note;
+剄 > cut\-throat;
+刼 > to\-plunder;
+刄 > edged\-tool;
+凴 > to\-rely\-on;
+凱 > triumphant;
+凂 > to\-request;
+冘 > to\-move\-on;
+兟 > to\-advance;
+儈 > go\-between;
+僩 > courageous;
+偭 > transgress;
+偝 > not\-facing;
+倀 > bewildered;
+俻 > to\-prepare;
+伷 > descendent;
+仛 > young\-girl;
+亯 > to\-receive;
+丨 > number\-one;
+䶫 > fine\-teeth;
+䶉 > guinea\-pig;
+䵪 > pure\-black;
+䵝 > dark\-black;
+䵇 > to\-dislike;
+䳕 > the\-pigeon;
+䳌 > the\-cuckoo;
+䳀 > the\-cuckoo;
+䲫 > the\-pigeon;
+䲩 > the\-cuckoo;
+䲥 > the\-pigeon;
+䱝 > black\-carp;
+䱆 > small\-fish;
+䱅 > the\-mullet;
+䱄 > a\-flatfish;
+䰺 > a\-flatfish;
+䰬 > wild\-ghost;
+䰄 > short\-hair;
+䯔 > to\-incline;
+䯑 > the\-pelvis;
+䯌 > the\-sacrum;
+䯊 > the\-pelvis;
+䯈 > the\-pelvis;
+䮯 > fine\-horse;
+䮍 > curling\-up;
+䮌 > fine\-horse;
+䭸 > a\-stallion;
+䭣 > rice\-cakes;
+䭄 > gluttonous;
+䬷 > well\-feed\.;
+䬢 > gluttonous;
+䫥 > a\-wry\-neck;
+䫣 > a\-wry\-neck;
+䫞 > large\-head;
+䫓 > large\-head;
+䪺 > teethridge;
+䪠 > pulverized;
+䩱 > a\-scabbard;
+䩰 > a\-scabbard;
+䩢 > a\-scabbard;
+䩙 > a\-scabbard;
+䩃 > appearance;
+䩁 > thin\-hairs;
+䨽 > to\-resolve;
+䨩 > the\-spirit;
+䨠 > cloudy\-sky;
+䧿 > the\-magpie;
+䧲 > the\-magpie;
+䧱 > the\-pigeon;
+䧣 > to\-stop\-up;
+䦯 > very\-dense;
+䦧 > to\-quarrel;
+䦍 > to\-include;
+䥎 > instrument;
+䤾 > to\-contain;
+䤽 > farm\-tools;
+䤼 > metal\-wire;
+䤹 > to\-engrave;
+䤇 > white\-wine;
+䢥 > in\-harmony;
+䡧 > a\-carriage;
+䡤 > a\-carriage;
+䡚 > implements;
+䡎 > a\-windlass;
+䠸 > obsequious;
+䠶 > to\-project;
+䠪 > footprints;
+䠩 > to\-urinate;
+䠦 > to\-stumble;
+䠟 > to\-trip\-up;
+䠘 > one\-legged;
+䟼 > footprints;
+䟪 > repeatedly;
+䟡 > to\-trample;
+䟙 > to\-stagger;
+䟄 > in\-a\-hurry;
+䞅 > to\-give\-to;
+䝿 > honourabel;
+䝷 > securities;
+䝴 > to\-present;
+䝱 > to\-trouble;
+䝔 > the\-badger;
+䜛 > to\-slander;
+䜙 > not\-clever;
+䜒 > expression;
+䜑 > to\-slander;
+䜋 > to\-suspend;
+䛽 > loquacious;
+䛼 > to\-slander;
+䛲 > to\-deceive;
+䛮 > to\-destroy;
+䛫 > to\-deceive;
+䛩 > to\-slander;
+䛦 > litigation;
+䛖 > loquacious;
+䛕 > to\-flatter;
+䛍 > loquacious;
+䛅 > loquacious;
+䛄 > to\-console;
+䚹 > to\-prepare;
+䚰 > to\-prepare;
+䚓 > to\-observe;
+䚍 > to\-look\-at;
+䚇 > to\-observe;
+䙺 > to\-observe;
+䙚 > curling\-up;
+䘡 > the\-sleeve;
+䘕 > prostitute;
+䖳 > jelly\-fish;
+䕡 > compositae;
+䔘 > fish\-paste;
+䓵 > to\-blossom;
+䓤 > vegetation;
+䓆 > to\-cut\-the;
+䒢 > sweet\-flag;
+䑿 > small\-boat;
+䑰 > small\-boat;
+䑭 > war\-vessel;
+䑡 > small\-boat;
+䑍 > to\-swallow;
+䐢 > to\-wrinkle;
+䏭 > the\-cheeks;
+䏌 > to\-vibrate;
+䏋 > respectful;
+䎟 > to\-fawn\-on;
+䍵 > young\-goat;
+䍞 > a\-drag\-net;
+䍗 > to\-hang\-up;
+䍔 > a\-full\-net;
+䌀 > to\-arrange;
+䋶 > to\-stumble;
+䋱 > a\-wild\-yak;
+䊷 > black\-silk;
+䊩 > rice\-gravy;
+䉍 > to\-observe;
+䇎 > to\-startle;
+䇇 > the\-people;
+䆒 > to\-examine;
+䆋 > the\-autumn;
+䅔 > dead\-crops;
+䄟 > to\-worship;
+䄓 > to\-worship;
+䄑 > to\-worship;
+䄐 > to\-worship;
+䄆 > to\-worship;
+䄅 > to\-worship;
+䄃 > misfortune;
+䄁 > to\-worship;
+䂄 > to\-startle;
+䁺 > to\-look\-at;
+䁯 > to\-look\-at;
+䁞 > a\-province;
+䁘 > to\-look\-at;
+䁕 > to\-look\-at;
+䁓 > to\-look\-at;
+䁉 > to\-examine;
+䁈 > to\-examine;
+䁁 > strabismus;
+䀶 > strabismus;
+䀱 > to\-examine;
+䀯 > to\-look\-at;
+䀙 > to\-look\-at;
+䀆 > to\-exhaust;
+㾙 > erysipelas;
+㽨 > fragmented;
+㽣 > a\-frontier;
+㽘 > borderland;
+㼹 > eartenware;
+㺳 > black\-mica;
+㺓 > footprints;
+㺏 > the\-badger;
+㺅 > the\-monkey;
+㹈 > a\-black\-ox;
+㸨 > a\-big\-bull;
+㸌 > to\-twinkle;
+㷷 > thick\-soup;
+㷡 > to\-startle;
+㶭 > almost\-dry;
+㶜 > deep\-water;
+㵟 > light\-rain;
+㵀 > water\-flow;
+㴜 > everywhere;
+㳁 > water\-flow;
+㲯 > long\-hairy;
+㲞 > short\-hair;
+㲕 > variegated;
+㲌 > dog''s\-hair;
+㲉 > egg\-shells;
+㱸 > to\-exhaust;
+㱰 > to\-destroy;
+㱦 > to\-discard;
+㱤 > to\-exhaust;
+㱜 > pestilence;
+㱛 > to\-destroy;
+㱚 > to\-destroy;
+㰸 > to\-collect;
+㰑 > fruit\-tree;
+㯇 > a\-stockade;
+㭘 > a\-scabbard;
+㭉 > farm\-tools;
+㬱 > to\-replace;
+㬪 > to\-fold\-up;
+㬜 > to\-advance;
+㫤 > a\-long\-day;
+㪴 > to\-measure;
+㪜 > to\-measure;
+㪚 > to\-scatter;
+㪔 > to\-scatter;
+㪌 > to\-lead\-on;
+㪉 > to\-combine;
+㩹 > to\-pile\-on;
+㩸 > to\-pile\-on;
+㩪 > to\-collect;
+㩞 > to\-back\-up;
+㩝 > to\-compare;
+㩚 > to\-collect;
+㩖 > to\-back\-up;
+㩍 > to\-back\-up;
+㩀 > to\-receive;
+㨿 > to\-receive;
+㨳 > a\-cupboard;
+㨲 > to\-back\-up;
+㨯 > to\-enlarge;
+㨮 > to\-lift\-up;
+都 > metropolis;
+㨊 > to\-discard;
+笠 > bamboo\-hat;
+燐 > phosphorus;
+隆 > prosperous;
+六 > number\-six;
+醴 > sweet\-wine;
+㦶 > repeatedly;
+㦩 > melancholy;
+㦚 > melancholy;
+歷 > take\-place;
+濾 > strain\-out;
+㦂 > constantly;
+㥶 > to\-fill\-up;
+索 > large\-rope;
+㥣 > to\-benefit;
+㥚 > melancholy;
+屢 > frequently;
+㤷 > to\-debauch;
+㤩 > to\-respect;
+㤐 > disharmony;
+豈 > how\?\-what\?;
+㣽 > to\-forgive;
+㣅 > bow\-string;
+㣀 > to\-rebound;
+㢭 > a\-bow\-case;
+㢚 > a\-corridor;
+㢏 > a\-cesspool;
+㡥 > to\-curl\-up;
+㞠 > male\-organ;
+㞎 > body\-waste;
+㞆 > one\-legged;
+㝯 > to\-sojourn;
+㜅 > to\-fawn\-on;
+㛪 > to\-slander;
+㚠 > full\-grown;
+㚏 > to\-scatter;
+㙺 > cross\-road;
+㙴 > to\-conceal;
+㙲 > to\-stop\-up;
+㙉 > prosperous;
+㘿 > to\-fill\-up;
+㘻 > to\-stop\-up;
+㘧 > precedence;
+㘝 > to\-take\-in;
+㗬 > thick\-lips;
+㗫 > to\-whisper;
+㗢 > loquacious;
+㗋 > the\-throat;
+㗇 > to\-swallow;
+㗄 > to\-deceive;
+㖶 > to\-swallow;
+㖘 > to\-startle;
+㖆 > to\-condemn;
+㕫 > to\-imitate;
+㕍 > to\-heap\-up;
+㕆 > fine\-stone;
+㔷 > to\-secrete;
+㔘 > to\-degrade;
+㔓 > to\-stammer;
+㔌 > to\-cut\-off;
+㓺 > castration;
+㓮 > to\-engrave;
+㓞 > to\-engrave;
+㓂 > tyrannical;
+㒷 > to\-prosper;
+㒝 > to\-deceive;
+㒜 > respectful;
+㒊 > loquacious;
+㑜 > to\-engrave;
+㑂 > to\-imitate;
+㐤 > to\-implore;
+了 > to\-finish;
+子 > offspring;
+徹 > penetrate;
+要 > necessary;
+辱 > humiliate;
+着 > make\-move;
+成 > completed;
+督 > supervise;
+輯 > gather\-up;
+弥 > extensive;
+監 > supervise;
+美 > beautiful;
+廂 > side\-room;
+问 > ask\-about;
+庭 > courtyard;
+療 > be\-healed;
+痺 > paralysis;
+差 > to\-differ;
+难 > difficult;
+超 > jump\-over;
+異 > different;
+亲 > relatives;
+畫 > delineate;
+畜 > livestock;
+畑 > dry\-field;
+甘 > sweetness;
+认 > recognize;
+貴 > expensive;
+貝 > sea\-shell;
+院 > courtyard;
+达 > arrive\-at;
+众 > multitude;
+识 > recognize;
+倒 > fall\-over;
+玩 > play\-with;
+像 > a\-picture;
+宅 > residence;
+据 > to\-occupy;
+譯 > translate;
+譫 > talkative;
+識 > recognize;
+造 > construct;
+媼 > old\-woman;
+犠 > sacrifice;
+認 > recognize;
+牒 > documents;
+牌 > signboard;
+婆 > old\-woman;
+訳 > translate;
+爐 > fireplace;
+久 > long\-time;
+妾 > concubine;
+初 > beginning;
+親 > relatives;
+除 > eliminate;
+况 > condition;
+乱 > confusion;
+创 > establish;
+福 > happiness;
+辑 > gather\-up;
+假 > falsehood;
+穿 > penetrate;
+衆 > multitude;
+顾 > look\-back;
+蠶 > silkworms;
+丽 > beautiful;
+渐 > gradually;
+异 > different;
+瞧 > glance\-at;
+埒 > enclosure;
+埃 > fine\-dust;
+螢 > glow\-worm;
+退 > step\-back;
+蜻 > dragonfly;
+漸 > gradually;
+翻 > flip\-over;
+圏 > to\-circle;
+普 > universal;
+蛹 > chrysalis;
+临 > draw\-near;
+蛉 > dragonfly;
+协 > be\-united;
+麗 > beautiful;
+蚕 > silkworms;
+湯 > hot\-water;
+例 > precedent;
+贵 > expensive;
+洲 > continent;
+松 > pine\-tree;
+伙 > companion;
+毫 > fine\-hair;
+蕎 > buckwheat;
+输 > transport;
+況 > condition;
+监 > supervise;
+折 > break\-off;
+汰 > excessive;
+君 > sovereign;
+危 > dangerous;
+概 > generally;
+透 > penetrate;
+圈 > to\-circle;
+殊 > different;
+殆 > dangerous;
+厄 > adversity;
+汇 > concourse;
+厉 > whetstone;
+附 > adhere\-to;
+肩 > shoulders;
+魘 > nightmare;
+協 > be\-united;
+荒 > wasteland;
+鬱 > luxuriant;
+译 > translate;
+匠 > craftsman;
+欝 > luxuriant;
+伴 > companion;
+匂 > fragrance;
+勸 > recommend;
+勧 > recommend;
+飘 > whirlwind;
+艶 > beautiful;
+創 > establish;
+炮 > large\-gun;
+贝 > sea\-shell;
+郎 > gentleman;
+陪 > accompany;
+臨 > draw\-near;
+凝 > coagulate;
+冗 > excessive;
+劝 > recommend;
+剩 > leftovers;
+饒 > bountiful;
+疗 > be\-healed;
+汤 > hot\-water;
+彻 > penetrate;
+飜 > flip\-over;
+僚 > companion;
+肘 > the\-elbow;
+肖 > look\-like;
+昨 > yesterday;
+暂 > temporary;
+递 > hand\-over;
+顧 > look\-back;
+祥 > good\-luck;
+倹 > temperate;
+艰 > difficult;
+仗 > rely\-upon;
+柿 > persimmon;
+键 > door\-bolt;
+枯 > dried\-out;
+莱 > goosefoot;
+赔 > indemnify;
+逢 > come\-upon;
+睁 > open\-eyes;
+嘿 > be\-silent;
+仮 > falsehood;
+難 > difficult;
+贪 > be\-greedy;
+暫 > temporary;
+逝 > pass\-away;
+亂 > confusion;
+艾 > artemisia;
+芬 > fragrance;
+袍 > long\-gown;
+冤 > grievance;
+饶 > bountiful;
+炉 > fireplace;
+迪 > enlighten;
+嘉 > excellent;
+閾 > threshold;
+綾 > thin\-silk;
+艳 > beautiful;
+膀 > upper\-arm;
+牺 > sacrifice;
+顽 > obstinate;
+歉 > deficient;
+帅 > commander;
+憾 > to\-regret;
+劈 > cut\-apart;
+拂 > shake\-off;
+鍵 > door\-bolt;
+筈 > arrow\-end;
+拠 > to\-occupy;
+厢 > side\-room;
+熬 > cook\-down;
+払 > shake\-off;
+寓 > residence;
+稼 > sow\-grain;
+恍 > seemingly;
+绣 > embroider;
+懃 > courteous;
+衬 > underwear;
+慊 > to\-resent;
+膊 > shoulders;
+潭 > deep\-pool;
+旷 > extensive;
+硝 > saltpeter;
+達 > arrive\-at;
+逹 > arrive\-at;
+骤 > procedure;
+苹 > artemisia;
+忿 > get\-angry;
+坠 > fall\-down;
+蝶 > butterfly;
+焉 > thereupon;
+禀 > report\-to;
+挫 > push\-down;
+鳄 > alligator;
+谐 > harmonize;
+屎 > excrement;
+叨 > talkative;
+葱 > scallions;
+枣 > date\-tree;
+侣 > companion;
+谴 > reprimand;
+汹 > turbulent;
+瘫 > paralysis;
+蔚 > luxuriant;
+泻 > drain\-off;
+俭 > temperate;
+瀑 > waterfall;
+蝴 > butterfly;
+樊 > a\-railing;
+敛 > draw\-back;
+禧 > happiness;
+茵 > a\-cushion;
+棕 > hemp\-palm;
+娟 > beautiful;
+倩 > beautiful;
+辗 > turn\-over;
+恤 > show\-pity;
+侈 > luxurious;
+夥 > companion;
+沁 > soak\-into;
+槛 > threshold;
+匣 > small\-box;
+捎 > to\-select;
+痪 > paralysis;
+痞 > dyspepsia;
+睐 > squint\-at;
+垦 > cultivate;
+浒 > riverbank;
+葵 > sunflower;
+睫 > eyelashes;
+痊 > be\-healed;
+哺 > chew\-food;
+竣 > terminate;
+囔 > muttering;
+藐 > disregard;
+忒 > excessive;
+埠 > port\-city;
+荤 > meat\-diet;
+祺 > good\-luck;
+蜒 > millipede;
+菇 > mushrooms;
+豚 > small\-pig;
+沓 > connected;
+弩 > cross\-bow;
+殇 > die\-young;
+萤 > glow\-worm;
+栈 > warehouse;
+醺 > get\-drunk;
+蜈 > centipede;
+佼 > beautiful;
+蚣 > centipede;
+愫 > guileless;
+谙 > versed\-in;
+熹 > dim\-light;
+怂 > instigate;
+馥 > fragrance;
+恿 > instigate;
+遛 > take\-walk;
+痹 > paralysis;
+麾 > a\-pennant;
+媲 > marry\-off;
+蜓 > dragonfly;
+镁 > magnesium;
+椰 > palm\-tree;
+砺 > whetstone;
+痢 > dysentery;
+嗑 > eat\-seeds;
+蚯 > earthworm;
+蜚 > cockroach;
+蚓 > earthworm;
+魇 > nightmare;
+阆 > high\-door;
+妪 > old\-woman;
+擀 > roll\-flat;
+妍 > beautiful;
+姣 > beautiful;
+袤 > longitude;
+麝 > musk\-deer;
+荟 > luxuriant;
+佻 > frivolous;
+钾 > potassium;
+飙 > whirlwind;
+孑 > remaining;
+檄 > call\-arms;
+隍 > dry\-ditch;
+诿 > pass\-buck;
+绫 > thin\-silk;
+逄 > a\-surname;
+梏 > handcuffs;
+祉 > happiness;
+蟑 > cockroach;
+钺 > broad\-axe;
+荞 > buckwheat;
+柑 > tangerine;
+婵 > beautiful;
+娉 > beautiful;
+讧 > confusion;
+乜 > to\-squint;
+俦 > companion;
+燮 > harmonize;
+飚 > whirlwind;
+姹 > beautiful;
+愎 > obstinate;
+娲 > a\-goddess;
+忝 > disgraced;
+葳 > luxuriant;
+诮 > criticize;
+鳏 > huge\-fish;
+蜇 > jellyfish;
+劭 > encourage;
+兖 > establish;
+呶 > talkative;
+癣 > ringworms;
+绦 > silk\-cord;
+钸 > plutonium;
+馗 > cheekbone;
+锰 > manganese;
+侪 > a\-company;
+凫 > wild\-duck;
+痱 > heat\-rash;
+痈 > carbuncle;
+悌 > brotherly;
+冼 > \(surname\);
+鹧 > partridge;
+悒 > sorrowful;
+怃 > regretful;
+墒 > wet\-tilth;
+訾 > bad\-mouth;
+圮 > destroyed;
+鲈 > sea\-perch;
+钚 > plutonium;
+痿 > paralysis;
+攉 > to\-beckon;
+鲇 > sheatfish;
+膈 > diaphragm;
+犍 > a\-bullock;
+妤 > beautiful;
+锗 > germanium;
+鎏 > pure\-gold;
+镅 > americium;
+辂 > a\-chariot;
+媪 > old\-woman;
+孓 > beautiful;
+跸 > clear\-way;
+疔 > carbuncle;
+煳 > be\-burned;
+牾 > to\-oppose;
+昀 > sun\-light;
+乩 > to\-divine;
+羟 > hydroxide;
+荽 > coriander;
+谵 > talkative;
+绠 > well\-rope;
+哓 > garrulous;
+脬 > a\-bladder;
+戡 > subjugate;
+辇 > hand\-cart;
+阈 > threshold;
+鹚 > cormorant;
+镞 > arrowhead;
+菰 > wild\-rice;
+蠖 > inch\-worm;
+铫 > large\-hoe;
+氘 > deuterium;
+黾 > to\-strive;
+镧 > lanthanum;
+垡 > plow\-soil;
+炔 > acetylene;
+鸬 > cormorant;
+镱 > ytterbium;
+钕 > neodymium;
+忭 > delighted;
+莪 > artemisia;
+苴 > sackcloth;
+谳 > to\-decide;
+钯 > palladium;
+碲 > tellurium;
+璩 > jade\-ring;
+阃 > threshold;
+饫 > surfeited;
+撙 > economize;
+蓼 > smartweed;
+饔 > breakfast;
+锶 > strontium;
+硎 > whetstone;
+昃 > afternoon;
+唪 > to\-recite;
+蕈 > mushrooms;
+儇 > ingenious;
+鲴 > fish\-guts;
+鲅 > fish\-name;
+蠊 > cockroach;
+蚰 > millipede;
+铍 > beryllium;
+熳 > to\-spread;
+胍 > guanidine;
+迕 > obstinate;
+鲐 > globefish;
+酐 > anhydride;
+衄 > epistaxis;
+矧 > much\-more;
+悫 > sincerity;
+膦 > phosphine;
+缣 > fine\-silk;
+宄 > a\-traitor;
+阌 > wen\-xiang;
+哿 > excellent;
+阽 > dangerous;
+匦 > small\-box;
+酞 > phthalein;
+齳 > toothless;
+齭 > toothache;
+黽 > to\-strive;
+鸕 > cormorant;
+鷾 > a\-swallow;
+鷭 > water\-hen;
+鷧 > cormorant;
+鷥 > the\-egret;
+鷓 > partridge;
+鷏 > bird\-name;
+鷆 > bird\-name;
+鶿 > cormorant;
+鶡 > crossbill;
+鵷 > co\-worker;
+鳬 > wild\-duck;
+鳧 > wild\-duck;
+鳢 > snakehead;
+鲎 > king\-crab;
+鱸 > sea\-perch;
+鱷 > crocodile;
+鱧 > snakehead;
+鱟 > king\-crab;
+鱛 > fish\-name;
+鰥 > huge\-fish;
+鰐 > alligator;
+鯠 > to\-confer;
+鯝 > fish\-guts;
+鮦 > snakefish;
+鮎 > sheatfish;
+鮀 > snakefish;
+魲 > fish\-name;
+魞 > fish\-trap;
+鬰 > luxuriant;
+鬖 > wild\-hair;
+髧 > long\-hair;
+髗 > the\-skull;
+骭 > shin\-bone;
+驟 > procedure;
+騧 > tan\-horse;
+騐 > to\-verity;
+駸 > galloping;
+馝 > fragrance;
+馛 > fragrance;
+馂 > leftovers;
+饠 > rice\-cake;
+餺 > rice\-cake;
+餱 > dry\-goods;
+餕 > leftovers;
+餈 > rice\-cake;
+飫 > surfeited;
+飥 > rice\-cake;
+飈 > whirlwind;
+飇 > whirlwind;
+飆 > whirlwind;
+飄 > whirlwind;
+飃 > whirlwind;
+颷 > whirlwind;
+颴 > whirlwind;
+頯 > cheekbone;
+頑 > obstinate;
+頄 > cheekbone;
+靪 > to\-cobble;
+靧 > wash\-face;
+靀 > drizzling;
+霂 > fine\-rain;
+隃 > to\-exceed;
+閿 > wen\-xiang;
+閺 > look\-down;
+閬 > high\-door;
+閫 > threshold;
+锫 > berkelium;
+锆 > zirconium;
+钶 > columbium;
+钌 > ruthenium;
+钁 > a\-mattock;
+鑭 > lanthanum;
+鑪 > fireplace;
+鐿 > ytterbium;
+鐻 > drumstick;
+鏛 > to\-polish;
+鏐 > pure\-gold;
+鏃 > arrowhead;
+鎿 > neptunium;
+鎞 > plowshare;
+鎇 > americium;
+鎂 > magnesium;
+鍺 > germanium;
+鍶 > strontium;
+錳 > manganese;
+錇 > berkelium;
+鋯 > zirconium;
+鋍 > beryllium;
+銤 > americium;
+銚 > large\-hoe;
+鉞 > broad\-axe;
+鈽 > plutonium;
+鈹 > beryllium;
+鈩 > fireplace;
+鈌 > to\-pierce;
+鈈 > plutonium;
+鈀 > palladium;
+釹 > neodymium;
+釕 > ruthenium;
+郞 > gentleman;
+遞 > hand\-over;
+逓 > hand\-over;
+輾 > turn\-over;
+輸 > transport;
+輘 > a\-car\-rut;
+輅 > a\-chariot;
+軷 > sacrifice;
+軄 > to\-govern;
+躔 > follow\-in;
+蹕 > clear\-way;
+蹔 > temporary;
+跩 > to\-waddle;
+趝 > to\-pursue;
+赿 > late\-slow;
+賸 > leftovers;
+賠 > indemnify;
+豵 > young\-pig;
+豓 > beautiful;
+讞 > to\-decide;
+譴 > reprimand;
+譊 > wrangling;
+譅 > wriggling;
+諳 > versed\-in;
+諧 > harmonize;
+諝 > knowledge;
+諉 > pass\-buck;
+誚 > criticize;
+誖 > obstinate;
+訠 > much\-more;
+訌 > confusion;
+襯 > underwear;
+裲 > waistcoat;
+蟺 > earthworm;
+螌 > a\-striped;
+蜨 > butterfly;
+蛵 > dragonfly;
+蛍 > glow\-worm;
+蚿 > millipede;
+蘞 > wild\-vine;
+薈 > luxuriant;
+蕗 > leucacene;
+蔹 > wild\-vine;
+蔥 > scallions;
+蓆 > straw\-mat;
+蒢 > hedysarum;
+葷 > meat\-diet;
+葓 > vegetable;
+萊 > goosefoot;
+菻 > artemisia;
+荍 > buckwheat;
+苠 > multitude;
+苙 > a\-pig\-sty;
+芼 > to\-choose;
+艷 > beautiful;
+艱 > difficult;
+艣 > stern\-oar;
+艎 > fast\-boat;
+舝 > linch\-pin;
+舘 > a\-mansion;
+臯 > to\-praise;
+胦 > the\-navel;
+耥 > farm\-tool;
+羶 > rank\-odor;
+羥 > hydroxide;
+罁 > a\-cistern;
+繣 > obstinate;
+繡 > embroider;
+繍 > embroider;
+縑 > fine\-silk;
+縃 > fine\-silk;
+緥 > swaddling;
+綉 > embroider;
+綆 > well\-rope;
+糰 > rice\-ball;
+糝 > scattered;
+粿 > rice\-cake;
+籨 > trousseau;
+簃 > side\-room;
+竕 > deciliter;
+竏 > kiloliter;
+竍 > decaliter;
+竆 > exhausted;
+窴 > glance\-at;
+窋 > in\-a\-hole;
+穪 > to\-praise;
+稬 > glutinous;
+稟 > report\-to;
+禴 > sacrifice;
+禤 > \(surname\);
+禜 > sacrifice;
+禖 > sacrifice;
+禕 > excellent;
+禔 > happiness;
+祦 > happiness;
+祎 > excellent;
+礿 > sacrifice;
+礽 > blessings;
+礪 > whetstone;
+礞 > \(mineral\);
+碬 > whetstone;
+碆 > arrow\-tip;
+硻 > obstinate;
+砮 > arrow\-tip;
+砬 > big\-stone;
+睞 > squint\-at;
+眕 > restraint;
+盵 > \(surname\);
+盚 > \(surname\);
+癱 > paralysis;
+癰 > carbuncle;
+癬 > ringworms;
+瘭 > a\-whitlow;
+瘜 > a\-polypus;
+瘓 > paralysis;
+痡 > a\-disease;
+痐 > whirlwind;
+疶 > dysentery;
+畵 > delineate;
+畱 > to\-detain;
+畋 > till\-land;
+甴 > cockroach;
+甪 > \(surname\);
+甦 > be\-reborn;
+甅 > centigram;
+瓸 > hectogram;
+瓱 > milligram;
+璿 > fine\-jade;
+瑴 > twin\-gems;
+瑣 > fragments;
+獀 > to\-gather;
+狳 > armadillo;
+犰 > armadillo;
+犧 > sacrifice;
+燶 > to\-scorch;
+燬 > burn\-down;
+燊 > luxuriant;
+熿 > brilliant;
+熺 > dim\-light;
+炘 > brilliant;
+瀉 > drain\-off;
+濩 > pour\-down;
+濛 > drizzling;
+滸 > riverbank;
+湼 > black\-mud;
+湏 > wash\-face;
+湅 > boil\-silk;
+淩 > pass\-over;
+涷 > rainstorm;
+洑 > whirlpool;
+沺 > turbulent;
+殤 > die\-young;
+殈 > infertile;
+殀 > die\-young;
+歛 > draw\-back;
+欕 > tree\-name;
+檻 > threshold;
+橚 > tall\-tree;
+樳 > tall\-tree;
+樋 > tree\-name;
+槪 > generally;
+槩 > generally;
+榪 > headboard;
+椶 > palm\-tree;
+棧 > warehouse;
+棥 > a\-railing;
+棗 > date\-tree;
+棖 > door\-stop;
+梜 > chopstick;
+梍 > tree\-name;
+栱 > large\-peg;
+栭 > king\-post;
+栟 > hemp\-palm;
+栒 > cross\-bar;
+柹 > persimmon;
+柈 > container;
+枾 > persimmon;
+枹 > drumstick;
+枩 > pine\-tree;
+枨 > door\-stop;
+枙 > tree\-knot;
+杩 > headboard;
+朞 > full\-year;
+朓 > sacrifice;
+曱 > cockroach;
+曠 > extensive;
+暍 > sunstroke;
+昿 > extensive;
+昪 > delighted;
+旪 > united\-in;
+旛 > a\-pennant;
+旙 > a\-pennant;
+斂 > draw\-back;
+敋 > to\-strike;
+攋 > to\-clutch;
+攃 > preceding;
+擿 > to\-select;
+據 > to\-occupy;
+擐 > to\-put\-on;
+擉 > to\-pierce;
+摽 > throw\-out;
+摮 > to\-rattle;
+摛 > to\-spread;
+搙 > to\-handle;
+搕 > to\-strike;
+揦 > to\-clutch;
+揥 > scratcher;
+掙 > to\-strive;
+扻 > to\-strike;
+扤 > to\-thrust;
+戜 > to\-scrape;
+憯 > sorrowful;
+憮 > regretful;
+慽 > sorrowful;
+慼 > sorrowful;
+慤 > sincerity;
+慆 > excessive;
+愨 > sincerity;
+悽 > sorrowful;
+悁 > irritable;
+恑 > to\-change;
+恊 > be\-united;
+怺 > to\-endure;
+怞 > to\-grieve;
+怗 > observant;
+忀 > to\-stroll;
+彌 > extensive;
+廾 > two\-hands;
+廸 > enlighten;
+庉 > a\-village;
+幩 > trappings;
+幙 > a\-curtain;
+帥 > commander;
+嶎 > luxuriant;
+寽 > a\-handful;
+寘 > put\-aside;
+寗 > a\-surname;
+寖 > gradually;
+寃 > grievance;
+宂 > scattered;
+嬋 > beautiful;
+嫽 > play\-with;
+嫛 > compliant;
+嫗 > old\-woman;
+嫕 > compliant;
+媺 > beautiful;
+媬 > governess;
+媕 > undecided;
+媄 > beautiful;
+婥 > beautiful;
+姸 > beautiful;
+姱 > beautiful;
+姢 > beautiful;
+姞 > concubine;
+夻 > fish\-name;
+夌 > to\-dawdle;
+墾 > cultivate;
+墜 > fall\-down;
+塝 > flat\-bank;
+埓 > enclosure;
+垗 > sacrifice;
+圊 > rest\-room;
+嚜 > be\-silent;
+噁 > nastiness;
+嘵 > garrulous;
+嘑 > to\-menace;
+喦 > talkative;
+啎 > obstinate;
+哫 > to\-cajole;
+咵 > to\-revile;
+呧 > to\-rebuke;
+叅 > to\-counel;
+厲 > whetstone;
+厓 > precipice;
+匭 > small\-box;
+匘 > the\-brain;
+勯 > exhausted;
+勩 > work\-hard;
+剰 > leftovers;
+剙 > establish;
+剏 > establish;
+刱 > establish;
+刡 > to\-scrape;
+刔 > scoop\-out;
+刅 > to\-create;
+凷 > dirt\-clod;
+凙 > an\-icicle;
+兗 > establish;
+兇 > atrocious;
+儳 > obstinate;
+儭 > to\-assist;
+儕 > a\-company;
+儔 > companion;
+儉 > temperate;
+僝 > to\-revile;
+僇 > humiliate;
+傺 > to\-hinder;
+倢 > beautiful;
+侶 > companion;
+侎 > to\-soothe;
+佫 > \(surname\);
+伻 > messenger;
+伋 > deceptive;
+仈 > \(surname\);
+乆 > long\-time;
+䶳 > to\-lookup;
+䶑 > to\-sneeze;
+䶍 > to\-sneeze;
+䵯 > a\-village;
+䴡 > beautiful;
+䴏 > a\-swallow;
+䳺 > the\-quail;
+䲿 > cormorant;
+䲨 > wild\-swan;
+䱈 > fish\-pulp;
+䰥 > a\-cyclone;
+䰖 > fine\-hair;
+䰐 > long\-hair;
+䰈 > fine\-hair;
+䯽 > fine\-hair;
+䯷 > fine\-hair;
+䯦 > tiny\-bone;
+䮜 > to\-gallop;
+䭬 > to\-kowtow;
+䭫 > to\-kowtow;
+䭛 > tasteless;
+䭙 > exquisite;
+䭕 > tasteless;
+䭑 > incorrupt;
+䬶 > to\-strave;
+䬔 > hurricane;
+䬓 > hurricane;
+䫻 > a\-typhoon;
+䫺 > a\-typhoon;
+䫝 > fragrance;
+䫔 > a\-servant;
+䩦 > the\-reins;
+䨭 > the\-skies;
+䨐 > to\-spread;
+䨍 > deep\-pond;
+䧅 > dangerous;
+䦵 > incapable;
+䦬 > a\-vacancy;
+䦆 > a\-big\-hoe;
+䥽 > farm\-tool;
+䤤 > implement;
+䤏 > destroyed;
+䣸 > tasteless;
+䣩 > beautiful;
+䢱 > to\-slight;
+䢫 > to\-follow;
+䢟 > to\-travel;
+䢍 > to\-hasten;
+䢊 > to\-travel;
+䡔 > to\-hinder;
+䠲 > to\-listen;
+䠯 > to\-ascend;
+䠮 > to\-prance;
+䠆 > to\-kowtow;
+䟻 > bare\-feet;
+䟥 > luxuriant;
+䟞 > to\-falter;
+䟌 > diverging;
+䞾 > frivolous;
+䞼 > to\-escape;
+䞣 > to\-resist;
+䞗 > suspicion;
+䞒 > red\-color;
+䞐 > plentiful;
+䞍 > to\-bestow;
+䞉 > a\-surplus;
+䝾 > to\-bestow;
+䝼 > to\-bestow;
+䜭 > to\-dredge;
+䜟 > to\-verify;
+䜝 > uncertain;
+䜅 > to\-follow;
+䛻 > to\-induce;
+䛹 > to\-accuse;
+䛸 > garrulous;
+䛳 > to\-malign;
+䛬 > baby\-talk;
+䛪 > loquacity;
+䛞 > loquacity;
+䛚 > to\-praise;
+䛋 > to\-scheme;
+䛁 > to\-murmur;
+䚵 > to\-induce;
+䙸 > to\-obtain;
+䙷 > to\-obtain;
+䙯 > exquisite;
+䙧 > red\-color;
+䙘 > exquisite;
+䘼 > stockings;
+䘚 > a\-servant;
+䘗 > beautiful;
+䘑 > the\-pulse;
+䗙 > earthworm;
+䗓 > dragonfly;
+䗌 > dragonfly;
+䗅 > millipede;
+䖡 > millipede;
+䕹 > a\-curtain;
+䕲 > artemisia;
+䕩 > dry\-fruit;
+䕏 > artemisia;
+䔳 > chickling;
+䓰 > absinthin;
+䓗 > scallions;
+䓇 > luxuriant;
+䒰 > to\-follow;
+䒠 > luxuriant;
+䒊 > a\-patient;
+䑪 > a\-sailing;
+䑟 > luxuriant;
+䑓 > a\-lookout;
+䑑 > a\-servant;
+䑉 > excrement;
+䑀 > the\-navel;
+䐺 > delicious;
+䐡 > the\-navel;
+䐛 > to\-loosen;
+䐌 > luxuriant;
+䐆 > big\-belly;
+䏽 > meat\-pulp;
+䏬 > the\-spine;
+䏠 > meat\-soup;
+䏞 > the\-belly;
+䎡 > to\-shrink;
+䎃 > fine\-down;
+䍎 > a\-spindle;
+䌲 > light\-red;
+䌛 > entourage;
+䌖 > to\-gather;
+䌊 > entourage;
+䋠 > to\-repair;
+䊰 > foodstuff;
+䊜 > dumplings;
+䉽 > rice\-cake;
+䉼 > materials;
+䉘 > to\-pierce;
+䈵 > luxuriant;
+䇐 > to\-arrive;
+䆐 > a\-country;
+䅎 > different;
+䅅 > farm\-tool;
+䅃 > late\-crop;
+䄬 > to\-change;
+䄙 > happiness;
+䃩 > a\-mineral;
+䃕 > stoneware;
+䃓 > to\-punish;
+䃀 > millstone;
+䂾 > to\-polish;
+䂈 > to\-pierce;
+䂇 > to\-pierce;
+䁢 > exquisite;
+䁐 > deep\-eyed;
+䀰 > open\-eyes;
+䀬 > to\-glance;
+䀢 > to\-glance;
+䀡 > to\-spy\-on;
+䀐 > to\-regard;
+㿿 > wine\-cups;
+㿟 > he\-bright;
+㿛 > carbuncle;
+㿇 > paralysis;
+㾭 > to\-shrink;
+㾥 > bellyache;
+㾣 > to\-shiver;
+㾋 > dysentery;
+㽬 > to\-assist;
+㽞 > to\-remain;
+㽑 > delicious;
+㽉 > a\-big\-jar;
+㼺 > porcelain;
+㼚 > earthware;
+㻽 > fine\-jade;
+㻱 > to\-circle;
+㻌 > fine\-jade;
+㻉 > fine\-jade;
+㷼 > a\-swallow;
+㷎 > sunstroke;
+㵗 > turbulent;
+㵔 > not\-clear;
+㴁 > to\-add\-to;
+㳨 > to\-splash;
+㲵 > the\-skies;
+㲦 > long\-hair;
+㲤 > long\-hair;
+㲚 > long\-hair;
+㱘 > nightmare;
+㰖 > the\-olive;
+㯺 > a\-cabinet;
+㯯 > small\-cup;
+㯝 > paulownia;
+㯄 > luxuriant;
+㮙 > a\-pitfall;
+㮔 > vegetable;
+㮃 > farm\-tool;
+㭢 > mechanics;
+㬿 > moonlight;
+㬫 > clear\-sky;
+㬣 > luxuriant;
+㬞 > sunstroke;
+㪬 > to\-pierce;
+㪩 > to\-strike;
+㪤 > to\-finish;
+㪑 > to\-follow;
+㪎 > uncertain;
+㪋 > to\-resist;
+㪈 > to\-let\-go;
+㪅 > to\-change;
+㩱 > to\-select;
+㩧 > to\-strike;
+㩒 > to\-arrest;
+㩌 > to\-strike;
+㩇 > the\-thumb;
+㩄 > to\-strike;
+㨶 > to\-thresh;
+福 > happiness;
+祥 > good\-luck;
+㨚 > to\-select;
+㨍 > to\-defend;
+㨉 > to\-smooth;
+宅 > residence;
+㨄 > to\-pierce;
+㧾 > to\-strike;
+識 > recognize;
+臨 > draw\-near;
+㧰 > to\-strike;
+㧩 > to\-dispel;
+痢 > dysentery;
+㧦 > to\-strike;
+㧗 > to\-clatch;
+㧖 > to\-clutch;
+㧌 > to\-select;
+蓼 > smartweed;
+療 > be\-healed;
+僚 > officials;
+了 > to\-finish;
+㦻 > to\-put\-on;
+例 > precedent;
+㦴 > to\-arrest;
+㦯 > a\-certain;
+㦪 > complaint;
+㦝 > beautiful;
+㦖 > resentful;
+麗 > beautiful;
+礪 > whetstone;
+㥾 > mortified;
+㥳 > to\-survey;
+㥮 > obstinate;
+㥧 > to\-follow;
+㥦 > satisfied;
+異 > different;
+綾 > thin\-silk;
+㥖 > red\-color;
+㥎 > to\-resent;
+㥀 > exclusive;
+㤵 > copassion;
+爐 > fireplace;
+郎 > gentleman;
+㤥 > sorrowful;
+亂 > confusion;
+㤘 > obstinate;
+㤒 > knowledge;
+㤋 > confusion;
+㤇 > terrified;
+㤆 > nauseated;
+㣼 > to\-endure;
+㣺 > the\-heart;
+㣐 > to\-change;
+㢨 > to\-defend;
+㢡 > to\-exhort;
+㢀 > side\-room;
+㡿 > to\-accuse;
+㡼 > a\-granary;
+㡺 > a\-cottage;
+㡢 > a\-curtain;
+㡠 > a\-picture;
+㡗 > red\-paper;
+㠮 > to\-expand;
+㠘 > an\-island;
+㞵 > frivolous;
+㞣 > fragrance;
+㝎 > to\-decide;
+㜻 > to\-admire;
+㜰 > exquisite;
+㜨 > beautiful;
+㜞 > beautiful;
+㜘 > delicated;
+㜖 > exquisite;
+㜏 > last\-name;
+㜊 > exquisite;
+㜄 > last\-name;
+㛾 > not\-clean;
+㛺 > not\-clean;
+㛱 > exquisite;
+㛗 > frivolous;
+㛔 > exquisite;
+㚰 > an\-embryo;
+㚯 > last\-name;
+㚛 > corpulent;
+㚘 > a\-partner;
+㙵 > a\-lookout;
+㙜 > a\-lookout;
+㘣 > compasses;
+㗳 > forgetful;
+㗣 > to\-sneeze;
+㖼 > to\-scheme;
+㖦 > loquacity;
+㖂 > loquacity;
+㕻 > to\-refuse;
+㕹 > a\-buckler;
+㕗 > to\-induce;
+㕕 > deception;
+㕑 > a\-kitchen;
+㕏 > a\-kitchen;
+㕋 > rock\-land;
+㕈 > to\-linger;
+㔾 > last\-name;
+㔧 > to\-incite;
+㓯 > to\-divide;
+㓨 > to\-pierce;
+㓋 > to\-freeze;
+㓄 > to\-plough;
+㒗 > a\-servant;
+㒓 > to\-escape;
+㒋 > a\-servant;
+㒈 > dangerous;
+㒂 > to\-bestow;
+㑯 > last\-name;
+㑮 > last\-name;
+㑧 > perturbed;
+㑙 > frivolous;
+㑘 > a\-servant;
+㑎 > last\-name;
+㑄 > to\-insult;
+㐯 > to\-employ;
+㐭 > a\-granary;
+㐩 > wine\-cups;
+㐆 > to\-follow;
+念 > think\-of;
+会 > assemble;
+学 > learning;
+徒 > disciple;
+睦 > friendly;
+无 > negative;
+方 > a\-square;
+前 > in\-front;
+眉 > eyebrows;
+省 > province;
+直 > straight;
+廢 > abrogate;
+盛 > abundant;
+軒 > carriage;
+全 > maintain;
+廊 > corridor;
+廃 > abrogate;
+皺 > wrinkles;
+康 > peaceful;
+间 > midpoint;
+躊 > hesitate;
+躇 > hesitate;
+第 > sequence;
+幻 > illusion;
+癇 > epilepsy;
+山 > mountain;
+踟 > hesitate;
+巾 > kerchief;
+巧 > skillful;
+安 > peaceful;
+距 > distance;
+界 > boundary;
+任 > trust\-to;
+台 > platform;
+象 > elephant;
+题 > forehead;
+賢 > virtuous;
+資 > property;
+貼 > paste\-to;
+費 > expenses;
+貞 > virtuous;
+资 > property;
+履 > footwear;
+豐 > abundant;
+豊 > abundant;
+武 > military;
+琲 > necklace;
+尠 > very\-few;
+完 > complete;
+即 > promptly;
+寵 > favorite;
+语 > language;
+珍 > precious;
+富 > abundant;
+商 > commerce;
+宝 > treasure;
+千 > thousand;
+宜 > suitable;
+官 > official;
+站 > stand\-up;
+學 > learning;
+譬 > metaphor;
+香 > fragrant;
+似 > resemble;
+嬢 > troubled;
+虽 > although;
+集 > assemble;
+且 > moreover;
+调 > transfer;
+嫉 > jealousy;
+狃 > to\-covet;
+嫁 > to\-marry;
+調 > transfer;
+語 > language;
+媚 > charming;
+誘 > persuade;
+费 > expenses;
+誄 > eulogize;
+詳 > detailed;
+詰 > question;
+惊 > frighten;
+支 > disperse;
+突 > suddenly;
+評 > appraise;
+娠 > pregnant;
+句 > sentence;
+显 > manifest;
+增 > increase;
+料 > consider;
+著 > manifest;
+妊 > conceive;
+境 > boundary;
+续 > continue;
+無 > negative;
+裕 > abundant;
+炭 > charcoal;
+围 > surround;
+増 > increase;
+災 > calamity;
+塚 > cemetery;
+忽 > suddenly;
+瀕 > approach;
+维 > maintain;
+濺 > sprinkle;
+濯 > wash\-out;
+垣 > low\-wall;
+习 > practice;
+垂 > let\-down;
+坂 > hillside;
+祖 > ancestor;
+评 > appraise;
+圍 > surround;
+继 > continue;
+囲 > surround;
+优 > superior;
+滯 > block\-up;
+限 > boundary;
+溢 > overflow;
+温 > lukewarm;
+蚊 > mosquito;
+鹸 > alkaline;
+噪 > be\-noisy;
+嘲 > ridicule;
+減 > decrease;
+嘔 > to\-vomit;
+恩 > kindness;
+脱 > take\-off;
+涸 > dried\-up;
+喪 > mourning;
+奔 > run\-fast;
+涌 > surge\-up;
+禁 > restrict;
+浮 > to\-float;
+互 > mutually;
+洒 > sprinkle;
+搞 > to\-clear;
+朱 > cinnabar;
+域 > district;
+材 > material;
+额 > forehead;
+偷 > to\-steal;
+丹 > cinnabar;
+蓉 > hibiscus;
+抽 > draw\-out;
+仪 > ceremony;
+绍 > continue;
+丰 > abundant;
+卸 > lay\-down;
+忆 > remember;
+隔 > separate;
+减 > decrease;
+卓 > profound;
+灾 > calamity;
+聚 > assemble;
+损 > diminish;
+茄 > eggplant;
+勿 > must\-not;
+髭 > mustache;
+遥 > far\-away;
+櫛 > comb\-out;
+币 > currency;
+勉 > endeavor;
+骸 > skeleton;
+芳 > fragrant;
+努 > to\-exert;
+贴 > paste\-to;
+驚 > frighten;
+別 > separate;
+萍 > duckweed;
+樅 > fir\-tree;
+缩 > contract;
+臥 > lie\-down;
+慕 > long\-for;
+臣 > minister;
+挡 > obstruct;
+膜 > membrane;
+榛 > hazelnut;
+俊 > talented;
+枝 > branches;
+陷 > submerge;
+丧 > mourning;
+勒 > strangle;
+躺 > lie\-down;
+優 > superior;
+聊 > somewhat;
+飾 > decorate;
+儀 > ceremony;
+斜 > slanting;
+斐 > graceful;
+废 > abrogate;
+详 > detailed;
+搬 > transfer;
+梟 > owl\-thus;
+傘 > umbrella;
+顯 > manifest;
+亭 > pavilion;
+顕 > manifest;
+泛 > to\-drift;
+額 > forehead;
+題 > forehead;
+符 > i\.d\.\-tag;
+允 > to\-grant;
+菲 > fragrant;
+跨 > straddle;
+掩 > to\-cover;
+頃 > a\-moment;
+障 > separate;
+柴 > firewood;
+俯 > bow\-down;
+俥 > rickshaw;
+邻 > neighbor;
+習 > practice;
+驾 > to\-drive;
+侭 > complete;
+羞 > disgrace;
+裤 > trousers;
+估 > merchant;
+鞘 > scabbard;
+勃 > suddenly;
+咐 > instruct;
+恒 > constant;
+糟 > sediment;
+扮 > dress\-up;
+贤 > virtuous;
+饰 > decorate;
+曜 > glorious;
+雖 > although;
+仕 > official;
+卧 > lie\-down;
+仄 > slanting;
+隣 > neighbor;
+碍 > obstruct;
+暢 > smoothly;
+拦 > obstruct;
+押 > mortgage;
+戚 > relative;
+續 > continue;
+繼 > continue;
+穆 > majestic;
+疆 > boundary;
+陥 > submerge;
+皱 > wrinkles;
+畅 > smoothly;
+嘻 > mirthful;
+縮 > contract;
+並 > equal\-to;
+昔 > formerly;
+練 > practice;
+闘 > struggle;
+瞪 > stare\-at;
+斥 > to\-scold;
+剪 > scissors;
+姚 > handsome;
+掏 > take\-out;
+維 > maintain;
+诱 > persuade;
+続 > continue;
+継 > continue;
+間 > interval;
+紹 > continue;
+芙 > hibiscus;
+惹 > irritate;
+簿 > register;
+損 > diminish;
+芷 > angelica;
+磁 > magnetic;
+毅 > resolute;
+笥 > a\-hamper;
+拘 > restrain;
+伐 > cut\-down;
+竊 > secretly;
+銘 > inscribe;
+愉 > pleasant;
+窜 > run\-away;
+寨 > stockade;
+戻 > perverse;
+沪 > shanghai;
+釜 > cauldron;
+嗤 > laugh\-at;
+娱 > pleasure;
+嫣 > charming;
+宠 > favorite;
+憶 > remember;
+铭 > inscribe;
+馨 > fragrant;
+渊 > surge\-up;
+禄 > blessing;
+窃 > secretly;
+顷 > a\-moment;
+礙 > obstruct;
+愕 > startled;
+啡 > morphine;
+贞 > virtuous;
+囚 > prisoner;
+账 > accounts;
+遙 > far\-away;
+喻 > metaphor;
+瓷 > crockery;
+蓦 > suddenly;
+滞 > block\-up;
+贬 > decrease;
+伞 > umbrella;
+腥 > raw\-meat;
+滔 > overflow;
+溅 > sprinkle;
+咸 > together;
+疫 > epidemic;
+啪 > syllable;
+沛 > abundant;
+膨 > to\-swell;
+吱 > chirping;
+轩 > carriage;
+讥 > ridicule;
+菌 > mushroom;
+衍 > overflow;
+亨 > smoothly;
+琐 > trifling;
+绰 > graceful;
+苟 > careless;
+崛 > towering;
+凸 > protrude;
+嚣 > be\-noisy;
+琛 > treasure;
+嘀 > backbite;
+铐 > shackles;
+踌 > hesitate;
+谕 > proclaim;
+迸 > gush\-out;
+剔 > pick\-out;
+冀 > hope\-for;
+砚 > inkstone;
+捍 > ward\-off;
+臀 > buttocks;
+倔 > stubborn;
+奄 > ere\-long;
+侥 > be\-lucky;
+梵 > buddhist;
+褥 > mattress;
+晖 > sunshine;
+漾 > overflow;
+畴 > farmland;
+瞟 > glare\-at;
+瘸 > lameness;
+澎 > splatter;
+潦 > to\-flood;
+濒 > approach;
+偎 > cling\-to;
+蝎 > scorpion;
+簸 > winnower;
+瘟 > epidemic;
+庶 > numerous;
+惦 > think\-of;
+撂 > put\-down;
+诘 > question;
+晗 > pre\-dawn;
+蹊 > footpath;
+碱 > alkaline;
+阉 > castrate;
+淆 > confused;
+萦 > entangle;
+榆 > elm\-tree;
+猝 > abruptly;
+赓 > continue;
+枭 > owl\-thus;
+曦 > sunlight;
+钊 > endeavor;
+撅 > protrude;
+渤 > swelling;
+辘 > windlass;
+铝 > aluminum;
+捋 > to\-pluck;
+矗 > straight;
+虻 > horsefly;
+瞌 > doze\-off;
+亟 > urgently;
+搪 > ward\-off;
+徨 > doubtful;
+啐 > to\-taste;
+镯 > bracelet;
+刽 > amputate;
+藻 > splendid;
+惰 > indolent;
+燔 > to\-roast;
+涝 > inundate;
+偕 > together;
+骷 > skeleton;
+绛 > deep\-red;
+紊 > confused;
+邃 > profound;
+氯 > chlorine;
+坍 > collapse;
+妩 > charming;
+嘭 > syllable;
+忐 > timorous;
+殡 > encoffin;
+昵 > intimate;
+纭 > confused;
+俟 > wait\-for;
+桢 > hardwood;
+黏 > stick\-to;
+晏 > peaceful;
+隽 > superior;
+禺 > district;
+痘 > smallpox;
+槟 > betelnut;
+韭 > scallion;
+戾 > perverse;
+蔫 > withered;
+膂 > backbone;
+垠 > boundary;
+镬 > cauldron;
+胫 > shinbone;
+哐 > syllable;
+硷 > alkaline;
+臃 > swell\-up;
+岌 > perilous;
+犟 > stubborn;
+玎 > jingling;
+遢 > careless;
+噔 > syllable;
+滓 > sediment;
+隼 > aquiline;
+翦 > scissors;
+陲 > frontier;
+谶 > prophecy;
+偻 > humpback;
+铂 > platinum;
+纛 > a\-banner;
+懿 > virtuous;
+铬 > chromium;
+娆 > graceful;
+慵 > indolent;
+胰 > pancreas;
+覃 > reach\-to;
+遽 > suddenly;
+睾 > testicle;
+缜 > detailed;
+倨 > arrogant;
+讣 > obituary;
+钛 > titanium;
+浃 > saturate;
+旖 > romantic;
+缙 > red\-silk;
+嘣 > syllable;
+懋 > splendid;
+衾 > coverlet;
+宸 > imperial;
+佞 > flattery;
+蛔 > tapeworm;
+祜 > blessing;
+氅 > overcoat;
+氟 > fluorine;
+氰 > cyanogen;
+鲟 > sturgeon;
+婕 > handsome;
+硒 > selenium;
+舨 > a\-sampan;
+烊 > to\-smelt;
+萱 > day\-lily;
+疸 > jaundice;
+铊 > thallium;
+诂 > exegesis;
+雉 > pheasant;
+颢 > luminous;
+钏 > bracelet;
+栀 > gardenia;
+绔 > trousers;
+缵 > continue;
+溘 > abruptly;
+诒 > bequeath;
+氦 > fluorine;
+颟 > dawdling;
+痫 > epilepsy;
+苋 > amaranth;
+瀣 > sea\-mist;
+箝 > tweezers;
+蹰 > hesitate;
+赀 > property;
+楮 > mulberry;
+镊 > tweezers;
+遄 > to\-hurry;
+钒 > vanadium;
+苷 > licorice;
+勰 > peaceful;
+氽 > to\-float;
+钨 > tungsten;
+愦 > confused;
+埸 > a\-border;
+髀 > buttocks;
+嫒 > daughter;
+伛 > humpback;
+癜 > erythema;
+砦 > stockade;
+鸹 > the\-crow;
+曛 > twilight;
+槿 > hibiscus;
+骘 > stallion;
+庑 > corridor;
+坻 > an\-islet;
+觫 > to\-start;
+铵 > ammonium;
+氩 > argonium;
+嬖 > favorite;
+卣 > wine\-pot;
+锑 > antimony;
+醛 > aldehyde;
+钽 > tantalum;
+砼 > concrete;
+熘 > to\-steam;
+蓁 > abundant;
+诔 > eulogize;
+窨 > a\-cellar;
+栲 > mangrove;
+仳 > separate;
+鲣 > skipjack;
+瘿 > swelling;
+铷 > rubidium;
+铕 > europium;
+钋 > polonium;
+砑 > to\-grind;
+枞 > fir\-tree;
+洫 > to\-ditch;
+揞 > to\-cover;
+埚 > crucible;
+垤 > ant\-hill;
+卺 > winecups;
+嘏 > felicity;
+鲽 > flatfish;
+鲭 > mackerel;
+钪 > scandium;
+钫 > francium;
+钐 > samarium;
+祓 > exorcise;
+栳 > a\-basket;
+徼 > frontier;
+吲 > smile\-at;
+莰 > camphane;
+芴 > fluorene;
+仝 > together;
+赜 > abstruse;
+龓 > a\-halter;
+鼚 > drumming;
+麮 > porridge;
+鹼 > alkaline;
+鷩 > pheasant;
+鷊 > pheasant;
+鵫 > pheasant;
+鵙 > a\-shrike;
+鴰 > the\-crow;
+鳮 > chickens;
+鳇 > sturgeon;
+鲺 > cat\-fish;
+鱣 > sturgeon;
+鱘 > sturgeon;
+鰹 > skipjack;
+鰉 > sturgeon;
+鰈 > flatfish;
+鯺 > blowfish;
+鯸 > blowfish;
+鯖 > mackerel;
+鮐 > blowfish;
+魨 > blowfish;
+鬭 > struggle;
+鬬 > struggle;
+鬪 > struggle;
+鬦 > struggle;
+鬥 > struggle;
+鬋 > forelock;
+鬀 > to\-shave;
+髵 > whiskers;
+髎 > hip\-bone;
+驀 > suddenly;
+騭 > stallion;
+駾 > run\-away;
+駦 > to\-mount;
+駕 > to\-drive;
+馩 > aromatic;
+馟 > fragrant;
+馚 > aromatic;
+餬 > porridge;
+餫 > dumpling;
+餩 > hiccough;
+餟 > libation;
+餙 > to\-adorn;
+颱 > taiphoon;
+顥 > luminous;
+顢 > dawdling;
+頲 > straight;
+韮 > scallion;
+韡 > gorgeous;
+韠 > knee\-pad;
+靺 > stocking;
+霨 > clouding;
+雞 > chickens;
+雋 > superior;
+隲 > stallion;
+隩 > profound;
+阸 > distress;
+閹 > castrate;
+閒 > peaceful;
+镥 > lutetium;
+鑷 > tweezers;
+鑥 > lutetium;
+鑕 > tungsten;
+鑊 > cauldron;
+鐲 > bracelet;
+鐇 > vanadium;
+鎢 > tungsten;
+鎉 > thallium;
+鍩 > nobelium;
+鍚 > frontlet;
+錒 > actinium;
+鋁 > aluminum;
+銬 > shackles;
+銪 > europium;
+銨 > ammonium;
+銣 > rubidium;
+銍 > a\-sickle;
+鉻 > chromium;
+鉭 > tantalum;
+鉑 > platinum;
+鉈 > thallium;
+鉆 > treasure;
+鈪 > bracelet;
+鈧 > scandium;
+鈦 > titanium;
+鈁 > francium;
+釩 > vanadium;
+釧 > bracelet;
+釤 > samarium;
+釡 > cauldron;
+釙 > polonium;
+釗 > endeavor;
+醩 > sediment;
+醆 > wine\-cup;
+醃 > marinate;
+酲 > hangover;
+鄰 > neighbor;
+鄈 > slippers;
+邅 > hesitant;
+迻 > to\-shift;
+轊 > axle\-tip;
+轆 > windlass;
+輭 > flexible;
+輬 > a\-hearse;
+軝 > axle\-tip;
+躭 > to\-delay;
+躕 > hesitate;
+蹾 > to\-squat;
+蹧 > to\-spoil;
+踦 > the\-shin;
+跅 > careless;
+跂 > creeping;
+赬 > deep\-red;
+贒 > virtuous;
+賾 > abstruse;
+賬 > accounts;
+賡 > continue;
+貶 > decrease;
+貲 > property;
+豎 > vertical;
+讖 > prophecy;
+譹 > to\-shout;
+譜 > register;
+譔 > eulogize;
+譏 > ridicule;
+謿 > ridicule;
+謼 > to\-shout;
+諭 > proclaim;
+諆 > to\-cheat;
+詒 > bequeath;
+詋 > to\-curse;
+詊 > pleasing;
+詁 > exegesis;
+訃 > obituary;
+襶 > ignorant;
+襫 > raincoat;
+襏 > raincoat;
+褲 > trousers;
+褌 > trousers;
+裯 > coverlet;
+蠍 > scorpion;
+蝱 > horsefly;
+蝟 > hedgehog;
+蝏 > \(insect\);
+蜱 > \(insect\);
+蜖 > tapeworm;
+蚳 > ant\-eggs;
+蚘 > tapeworm;
+蚔 > ant\-eggs;
+薸 > duckweed;
+薆 > to\-cover;
+蕣 > hibiscus;
+蔉 > earth\-up;
+葖 > follicle;
+苐 > sequence;
+艩 > tholepin;
+艌 > to\-caulk;
+膵 > pancreas;
+脰 > the\-neck;
+脫 > take\-off;
+脛 > shinbone;
+胮 > to\-swell;
+肨 > to\-swell;
+肏 > copulate;
+耏 > whiskers;
+翬 > pheasant;
+翫 > careless;
+罇 > a\-goblet;
+缷 > lay\-down;
+纘 > continue;
+繖 > umbrella;
+縿 > streamer;
+縴 > tow\-line;
+縝 > detailed;
+縉 > red\-silk;
+縈 > entangle;
+緻 > delicate;
+綽 > graceful;
+綯 > to\-braid;
+綪 > dark\-red;
+絻 > mourning;
+絳 > deep\-red;
+絝 > trousers;
+紞 > a\-fringe;
+紜 > confused;
+籣 > bow\-case;
+簬 > \(bamboo\);
+箂 > \(bamboo\);
+竢 > wait\-for;
+竄 > run\-away;
+秏 > to\-waste;
+祿 > blessing;
+祼 > libation;
+磟 > mediocre;
+碏 > coloured;
+硯 > inkstone;
+砹 > astatine;
+砵 > syllable;
+矋 > to\-stare;
+瞓 > to\-sleep;
+睏 > be\-tired;
+睅 > big\-eyed;
+盬 > salt\-pit;
+盙 > a\-basket;
+皝 > luminous;
+癭 > swelling;
+癒 > get\-well;
+癎 > epilepsy;
+癈 > abrogate;
+癃 > weakness;
+癀 > jaundice;
+瘼 > sickness;
+瘶 > to\-cough;
+瘰 > scrofula;
+瘉 > get\-well;
+疇 > farmland;
+畺 > boundary;
+甯 > peaceful;
+甡 > abundant;
+瓩 > kilowatt;
+瓧 > decagram;
+璚 > splendid;
+琫 > ornament;
+珷 > \/2\-pr\-st;
+珤 > treasure;
+珎 > precious;
+珌 > ornament;
+獘 > collapse;
+犵 > resolute;
+犫 > protrude;
+犎 > the\-zebu;
+犇 > run\-fast;
+牳 > \(bovine\);
+熤 > \(person\);
+煐 > \(person\);
+焌 > to\-light;
+炤 > illumine;
+灑 > sprinkle;
+瀰 > overflow;
+瀡 > slippery;
+澾 > slippery;
+澱 > sediment;
+澇 > inundate;
+潗 > friendly;
+潎 > rippling;
+滬 > shanghai;
+滃 > swelling;
+溫 > lukewarm;
+湢 > bathroom;
+渕 > surge\-up;
+浹 > saturate;
+泐 > to\-write;
+沍 > freezing;
+氾 > overflow;
+氬 > argonium;
+氉 > restless;
+毾 > a\-coarse;
+毻 > to\-moult;
+毷 > restless;
+殽 > mixed\-up;
+殯 > encoffin;
+殗 > sickness;
+欛 > a\-handle;
+櫃 > cupboard;
+檿 > mulberry;
+檳 > betelnut;
+樚 > a\-pulley;
+楨 > hardwood;
+楡 > elm\-tree;
+椄 > to\-graft;
+梱 > doorsill;
+梔 > gardenia;
+柤 > hawthorn;
+柅 > flourish;
+枻 > long\-oar;
+曆 > calendar;
+暱 > intimate;
+暦 > calendar;
+暠 > daybreak;
+暉 > sunshine;
+晧 > daybreak;
+晛 > sunlight;
+昤 > sunshine;
+昡 > long\-day;
+旘 > a\-pennon;
+斾 > a\-pennon;
+斈 > learning;
+敪 > to\-weigh;
+敠 > to\-weigh;
+攩 > obstruct;
+攞 > to\-split;
+攔 > obstruct;
+擩 > to\-stain;
+擋 > obstruct;
+撏 > pull\-out;
+摷 > to\-knock;
+搵 > wipe\-off;
+搲 > to\-seize;
+搯 > take\-out;
+搋 > to\-thump;
+揾 > wipe\-off;
+揰 > poke\-out;
+揢 > to\-seize;
+揜 > cover\-up;
+揌 > to\-shake;
+掹 > to\-pluck;
+捦 > to\-seize;
+拑 > to\-clamp;
+扞 > ward\-off;
+扅 > gate\-bar;
+懕 > satiated;
+憪 > composed;
+憖 > cautious;
+憒 > confused;
+慭 > cautious;
+慫 > to\-alarm;
+慅 > agitated;
+慁 > dishonor;
+惽 > confused;
+惸 > troubled;
+惛 > confused;
+惔 > cheerful;
+惄 > long\-for;
+悤 > agitated;
+恝 > carefree;
+恔 > cheerful;
+恌 > to\-worry;
+恆 > constant;
+忮 > stubborn;
+徯 > wait\-for;
+彸 > restless;
+彊 > stubborn;
+弢 > bow\-case;
+廤 > to\-place;
+廡 > corridor;
+庻 > numerous;
+庬 > abundant;
+幬 > cover\-up;
+幣 > currency;
+帵 > remnants;
+帱 > cover\-up;
+嶭 > elevated;
+嶒 > towering;
+峿 > mountain;
+岊 > foothill;
+屼 > mountain;
+寶 > treasure;
+寳 > treasure;
+寚 > precious;
+宬 > archives;
+孃 > troubled;
+嬬 > mistress;
+嬡 > daughter;
+嬝 > delicate;
+嬈 > graceful;
+嫿 > tranquil;
+嫵 > charming;
+媮 > handsome;
+婾 > handsome;
+娯 > pleasure;
+娛 > pleasure;
+姦 > adultery;
+姙 > conceive;
+奡 > arrogant;
+堝 > crucible;
+埼 > headland;
+埀 > let\-down;
+坮 > platform;
+圥 > mushroom;
+囮 > inveigle;
+囂 > be\-noisy;
+嚻 > be\-noisy;
+嘥 > to\-waste;
+嗃 > to\-flute;
+喩 > metaphor;
+喓 > chirping;
+喌 > syllable;
+啽 > to\-speak;
+啇 > to\-stalk;
+唥 > a\-bundle;
+哢 > syllable;
+咺 > majestic;
+咜 > to\-scold;
+咇 > fragrant;
+呠 > to\-spurt;
+叒 > obedient;
+厵 > a\-spring;
+卽 > promptly;
+卼 > unsteady;
+卹 > sympathy;
+勔 > endeavor;
+勌 > to\-labor;
+劻 > flurried;
+劙 > a\-divide;
+劊 > amputate;
+剟 > to\-prick;
+刧 > disaster;
+凥 > to\-dwell;
+凅 > dried\-up;
+冴 > freezing;
+冱 > freezing;
+冨 > abundant;
+冝 > suitable;
+冇 > have\-not;
+兣 > decigram;
+兛 > kilogram;
+兙 > decagram;
+儩 > complete;
+僥 > be\-lucky;
+僃 > prepared;
+僂 > humpback;
+傴 > humpback;
+傢 > stubborn;
+傞 > unsteady;
+傌 > to\-curse;
+偸 > to\-steal;
+偲 > talented;
+偫 > wait\-for;
+偟 > agitated;
+俓 > straight;
+侫 > flattery;
+佴 > a\-second;
+佪 > hesitate;
+佋 > continue;
+佀 > resemble;
+伃 > handsome;
+亹 > progress;
+乵 > to\-enter;
+䶲 > the\-edge;
+䵲 > raw\-hemp;
+䵦 > to\-stain;
+䵚 > kaoliang;
+䵓 > the\-mole;
+䵉 > abutilon;
+䴻 > dry\-food;
+䴫 > antelope;
+䴚 > saltpond;
+䴗 > a\-shrike;
+䳻 > an\-eagle;
+䳧 > an\-eagle;
+䲖 > big\-fish;
+䲎 > to\-spoil;
+䰧 > sinister;
+䰟 > the\-soul;
+䯪 > big\-head;
+䯚 > the\-ribs;
+䯗 > buttocks;
+䯐 > shinbone;
+䯎 > shinbone;
+䯉 > to\-choke;
+䯂 > numerous;
+䭱 > a\-little;
+䬼 > satiated;
+䬹 > a\-sickle;
+䬉 > hot\-wind;
+䫷 > the\-jowl;
+䫛 > reckless;
+䫗 > reckless;
+䫃 > the\-lips;
+䪶 > the\-chin;
+䪩 > to\-chant;
+䪜 > a\-shield;
+䪑 > to\-stick;
+䪊 > a\-halter;
+䪅 > a\-quiver;
+䪁 > a\-halter;
+䩴 > a\-quiver;
+䩮 > a\-quiver;
+䩠 > a\-girdle;
+䩉 > the\-face;
+䩈 > a\-plumpy;
+䨼 > dyestuff;
+䧫 > a\-trench;
+䧕 > boundary;
+䧁 > to\-leave;
+䦥 > to\-learn;
+䥸 > a\-sickle;
+䥭 > evidence;
+䥥 > a\-sickle;
+䥌 > evidence;
+䥋 > to\-smelt;
+䤿 > to\-carve;
+䤶 > a\-hammer;
+䤳 > a\-mirrow;
+䤰 > to\-smelt;
+䤫 > a\-chisel;
+䤨 > to\-split;
+䤝 > bracelet;
+䤐 > to\-drink;
+䢭 > to\-cover;
+䢐 > to\-go\-to;
+䢅 > daybreak;
+䡭 > a\-hearse;
+䠾 > to\-dodge;
+䠹 > shinbone;
+䠬 > insomnia;
+䠞 > wrinkled;
+䠐 > to\-squat;
+䠃 > to\-squat;
+䠁 > to\-go\-up;
+䟸 > the\-calf;
+䟶 > to\-squat;
+䟴 > to\-shake;
+䟔 > to\-go\-to;
+䞸 > to\-reach;
+䞮 > to\-crawl;
+䞟 > to\-press;
+䞜 > to\-reach;
+䞔 > deep\-red;
+䞓 > deep\-red;
+䝨 > virtuous;
+䝂 > to\-erect;
+䜬 > a\-cavern;
+䜘 > to\-guard;
+䜐 > to\-libel;
+䜃 > to\-blame;
+䛤 > urgently;
+䛒 > to\-argue;
+䛇 > to\-laugh;
+䛆 > to\-curse;
+䚷 > to\-treat;
+䚯 > to\-quell;
+䚛 > regulate;
+䘫 > old\-rags;
+䘜 > a\-napkin;
+䘙 > to\-guard;
+䘘 > to\-drive;
+䘔 > to\-vomit;
+䘏 > sympathy;
+䘉 > silkworm;
+䘇 > mosquito;
+䗺 > creeping;
+䗞 > silkworm;
+䗝 > silkworm;
+䗘 > a\-weevil;
+䗈 > a\-gadfly;
+䗇 > the\-toad;
+䖻 > ephemera;
+䖦 > scorpion;
+䖤 > to\-creep;
+䖟 > a\-gadfly;
+䖛 > of\-tiger;
+䖏 > to\-dwell;
+䖌 > of\-tiger;
+䖊 > of\-tiger;
+䖀 > angelica;
+䕯 > duckweed;
+䕁 > suddenly;
+䔽 > to\-cover;
+䔐 > delicate;
+䓙 > slanting;
+䓕 > polygala;
+䓌 > polygala;
+䒳 > a\-flower;
+䒃 > to\-build;
+䑻 > covering;
+䑘 > to\-pound;
+䑃 > dim\-moon;
+䐒 > not\-fine;
+䏾 > to\-swell;
+䏺 > to\-swell;
+䏟 > fat\-meat;
+䏉 > to\-waver;
+䏈 > to\-unite;
+䎺 > to\-learn;
+䎲 > ear\-lobe;
+䎮 > to\-plant;
+䎫 > to\-plant;
+䎣 > a\-plough;
+䌷 > a\-thread;
+䌯 > a\-truban;
+䌭 > raw\-hemp;
+䌬 > straight;
+䌫 > a\-hawser;
+䌚 > wrinkles;
+䌃 > raw\-silk;
+䋡 > to\-relax;
+䋓 > wrinkled;
+䋒 > to\-relax;
+䋃 > stinging;
+䊸 > to\-twist;
+䊝 > to\-exile;
+䊁 > leavings;
+䉻 > red\-rice;
+䉱 > a\-cradle;
+䉮 > to\-plant;
+䉪 > to\-grind;
+䉒 > a\-winnow;
+䈶 > an\-arrow;
+䈫 > a\-hawser;
+䇱 > a\-hawser;
+䇌 > to\-stand;
+䆸 > spacious;
+䆄 > a\-bundle;
+䅲 > to\-plant;
+䅨 > fragrant;
+䅤 > to\-plant;
+䅐 > a\-bundle;
+䄀 > calamity;
+䃺 > to\-grind;
+䃑 > speckles;
+䃅 > dyestuff;
+䂻 > to\-block;
+䁥 > to\-blink;
+䁜 > big\-eyes;
+䁂 > big\-eyes;
+䀵 > to\-blink;
+䀈 > a\-vessel;
+㿢 > to\-shine;
+㿡 > a\-helmet;
+㿚 > sickness;
+㿈 > an\-ulcer;
+㿅 > ringworm;
+㾸 > a\-scabby;
+㾮 > jaundice;
+㾎 > sickness;
+㾍 > diseases;
+㾌 > ringworm;
+㾄 > to\-libel;
+㽻 > diseases;
+㽹 > to\-faint;
+㽐 > fragrant;
+㻄 > treasure;
+㺚 > an\-otter;
+㺇 > a\-warden;
+㹸 > the\-lion;
+㹕 > inferior;
+㸼 > the\-zebu;
+㸦 > mutually;
+㸟 > to\-cover;
+㸝 > a\-shovel;
+㸕 > to\-seize;
+㸉 > to\-adapt;
+㷆 > thriving;
+㷀 > solitary;
+㶼 > very\-hot;
+㶄 > to\-stain;
+㵭 > an\-islet;
+㵦 > slippery;
+㴶 > to\-water;
+㴳 > to\-smear;
+㴊 > an\-abyss;
+㴈 > sediment;
+㳫 > repeated;
+㳠 > slippery;
+㳒 > statutes;
+㲸 > dried\-up;
+㲷 > nitrogen;
+㲶 > chlorine;
+㲳 > to\-touch;
+㱿 > the\-husk;
+㱺 > the\-skin;
+㱲 > withered;
+㱢 > the\-dead;
+㱠 > withered;
+㱗 > a\-breath;
+㱅 > virtuous;
+㱃 > to\-drink;
+㰺 > to\-drink;
+㰹 > to\-laugh;
+㰭 > pleasure;
+㰧 > to\-drink;
+㰣 > to\-vomit;
+㰠 > to\-covet;
+㰝 > to\-cough;
+㯰 > to\-plant;
+㮭 > a\-casket;
+㮁 > gardenia;
+㭙 > a\-hammer;
+㭊 > to\-split;
+㬰 > a\-moment;
+㬧 > a\-collar;
+㬢 > sunshine;
+㬡 > sunshine;
+㬙 > sunshine;
+㬗 > sunshine;
+㬌 > sunshine;
+㫽 > darkness;
+㫻 > sunlight;
+㪿 > to\-break;
+㪡 > to\-quell;
+㪓 > disaster;
+㪐 > unstable;
+㪍 > suddenly;
+㪃 > to\-thump;
+㪂 > unstable;
+㪀 > to\-enter;
+㩿 > unstable;
+㩴 > to\-seize;
+㩨 > to\-crack;
+㩓 > to\-wound;
+㩁 > to\-knock;
+㨹 > to\-crack;
+㨱 > to\-shake;
+㨪 > to\-shake;
+㨠 > to\-smear;
+㨟 > to\-touch;
+㨔 > to\-shake;
+㨓 > to\-close;
+塚 > cemetery;
+㨑 > to\-count;
+㨈 > to\-crowd;
+㨁 > to\-throw;
+㧵 > to\-exact;
+隣 > neighbor;
+㧲 > to\-shake;
+㧱 > to\-bring;
+㧬 > to\-raise;
+履 > footwear;
+㧁 > to\-close;
+料 > consider;
+㦿 > a\-window;
+捻 > to\-twist;
+㦥 > talented;
+念 > think\-of;
+㦤 > virtuous;
+練 > practice;
+㦗 > diligent;
+曆 > calendar;
+㦉 > virtuous;
+㥰 > mournful;
+省 > province;
+㥪 > diligent;
+丹 > cinnabar;
+勒 > strangle;
+㥃 > mournful;
+㥁 > morality;
+祿 > blessing;
+㤲 > to\-think;
+㤮 > an\-error;
+廊 > corridor;
+㤦 > mournful;
+㤤 > mournful;
+㤏 > grievous;
+句 > sentence;
+㣰 > to\-shake;
+㣫 > the\-heel;
+㣞 > to\-walki;
+㣋 > cinnabar;
+㣄 > powerful;
+㢴 > the\-west;
+㢩 > to\-shoot;
+㢅 > a\-shield;
+㡳 > mountain;
+㡩 > a\-girdle;
+㡝 > a\-napkin;
+㡖 > to\-cover;
+㠹 > a\-turban;
+㠵 > a\-turban;
+㠊 > a\-rugged;
+㠉 > mountain;
+㠅 > to\-cover;
+㟑 > mountain;
+㞽 > mountain;
+㞷 > luxuiant;
+㞑 > the\-tail;
+㞉 > big\-foot;
+㞈 > big\-foot;
+㝲 > to\-sleep;
+㝮 > to\-exile;
+㝭 > to\-awake;
+㝘 > harmonoy;
+㝒 > to\-dwell;
+㝍 > to\-write;
+㝊 > to\-guide;
+㜶 > a\-couple;
+㜳 > peaceful;
+㛛 > pregnant;
+㚣 > handsome;
+㙢 > a\-trowel;
+㙙 > to\-smear;
+㙃 > a\-cavity;
+㘪 > to\-waste;
+㘠 > to\-close;
+㘙 > to\-groan;
+㘑 > to\-curse;
+㘀 > to\-sound;
+㗪 > mouthful;
+㗨 > to\-laugh;
+㗜 > to\-smell;
+㗛 > to\-laugh;
+㗓 > mouthful;
+㗉 > incisive;
+㖹 > to\-spurt;
+㖩 > not\-pure;
+㖓 > to\-shout;
+㖇 > the\-lips;
+㕼 > to\-brawl;
+㕛 > a\-friend;
+㕐 > inclined;
+㕊 > to\-slant;
+㔰 > constant;
+㔪 > to\-crawl;
+㔠 > industry;
+㔞 > vigorous;
+㓶 > to\-carve;
+㓚 > a\-sickle;
+㓓 > thin\-ice;
+㒹 > to\-upset;
+㑺 > superior;
+㑴 > to\-usurp;
+㑰 > distress;
+㑍 > inferior;
+㐜 > an\-enemy;
+迷 > bewitch;
+述 > narrate;
+迥 > distant;
+中 > central;
+志 > purpose;
+迎 > receive;
+忌 > jealous;
+和 > harmony;
+辯 > dispute;
+去 > go\-away;
+对 > correct;
+瞠 > look\-at;
+律 > statute;
+役 > service;
+眺 > look\-at;
+張 > stretch;
+已 > already;
+弘 > enlarge;
+引 > to\-pull;
+弔 > condole;
+較 > compare;
+意 > thought;
+进 > advance;
+盡 > exhaust;
+廉 > upright;
+情 > feeling;
+皰 > pimples;
+庖 > kitchen;
+躓 > stumble;
+庄 > village;
+并 > combine;
+蹠 > step\-on;
+癖 > craving;
+幕 > curtain;
+代 > replace;
+師 > teacher;
+总 > collect;
+踏 > step\-on;
+师 > teacher;
+痴 > foolish;
+华 > flowery;
+张 > stretch;
+症 > disease;
+病 > illness;
+疾 > illness;
+反 > reverse;
+合 > combine;
+疎 > neglect;
+受 > receive;
+务 > affairs;
+接 > receive;
+崩 > rupture;
+特 > special;
+服 > clothes;
+賽 > compete;
+賑 > relieve;
+科 > section;
+远 > distant;
+豫 > relaxed;
+联 > connect;
+保 > protect;
+尽 > exhaust;
+革 > leather;
+對 > correct;
+尊 > respect;
+品 > article;
+尉 > officer;
+士 > scholar;
+量 > measure;
+対 > correct;
+程 > journey;
+審 > examine;
+察 > examine;
+极 > extreme;
+令 > command;
+未 > not\-yet;
+持 > sustain;
+历 > history;
+宣 > declare;
+史 > history;
+宗 > lineage;
+议 > consult;
+率 > to\-lead;
+委 > appoint;
+護 > protect;
+議 > consult;
+兵 > soldier;
+孔 > opening;
+争 > dispute;
+究 > examine;
+謹 > prudent;
+视 > look\-at;
+講 > explain;
+格 > pattern;
+諸 > several;
+讲 > explain;
+諦 > careful;
+怕 > to\-fear;
+狡 > cunning;
+曾 > already;
+准 > approve;
+段 > section;
+精 > essence;
+竟 > finally;
+誠 > sincere;
+詮 > explain;
+整 > orderly;
+婉 > amiable;
+备 > prepare;
+另 > another;
+陈 > exhibit;
+故 > ancient;
+訛 > swindle;
+託 > entrust;
+衣 > clothes;
+訊 > inquire;
+爆 > crackle;
+批 > comment;
+送 > see\-off;
+愿 > sincere;
+奇 > strange;
+燕 > swallow;
+燈 > lantern;
+覽 > look\-at;
+妬 > jealous;
+游 > to\-swim;
+覧 > look\-at;
+份 > portion;
+敢 > to\-dare;
+視 > look\-at;
+妖 > strange;
+煽 > stir\-up;
+考 > examine;
+村 > village;
+朝 > dynasty;
+育 > produce;
+护 > protect;
+图 > diagram;
+刘 > surname;
+夕 > evening;
+承 > inherit;
+裳 > clothes;
+乡 > country;
+裁 > cut\-out;
+既 > already;
+演 > perform;
+怪 > strange;
+袂 > sleeves;
+采 > collect;
+衰 > decline;
+赛 > compete;
+灯 > lantern;
+较 > compare;
+衡 > measure;
+塞 > stop\-up;
+景 > scenery;
+蠢 > wriggle;
+依 > rely\-on;
+瀝 > trickle;
+胜 > victory;
+濡 > immerse;
+濟 > to\-help;
+蟋 > cricket;
+蟀 > cricket;
+型 > pattern;
+圖 > diagram;
+漆 > varnish;
+漁 > to\-fish;
+図 > diagram;
+散 > scatter;
+蛆 > maggots;
+曲 > crooked;
+溶 > to\-melt;
+厂 > factory;
+肯 > willing;
+抓 > scratch;
+虫 > insects;
+湧 > well\-up;
+范 > surname;
+靠 > lean\-on;
+測 > measure;
+授 > give\-to;
+渇 > thirsty;
+扬 > scatter;
+淺 > shallow;
+淫 > obscene;
+邓 > surname;
+鷄 > chicken;
+嗇 > miserly;
+抱 > embrace;
+预 > prepare;
+睛 > eyeball;
+括 > include;
+降 > descend;
+鶏 > chicken;
+讯 > inquire;
+赵 > surname;
+浅 > shallow;
+私 > private;
+蔑 > disdain;
+审 > examine;
+泡 > bubbles;
+闹 > quarrel;
+敬 > respect;
+醒 > wake\-up;
+沌 > chaotic;
+暴 > violent;
+鲁 > foolish;
+抢 > plunder;
+呑 > swallow;
+篇 > chapter;
+鱈 > codfish;
+呂 > surname;
+拥 > embrace;
+吊 > condole;
+诸 > various;
+華 > flowery;
+叭 > trumpet;
+测 > measure;
+阅 > examine;
+叙 > express;
+猛 > violent;
+厭 > dislike;
+厨 > kitchen;
+雅 > elegant;
+雷 > thunder;
+魯 > foolish;
+鸡 > chicken;
+诚 > sincere;
+竞 > contend;
+操 > conduct;
+卒 > soldier;
+诺 > promise;
+匆 > hastily;
+欅 > zelkova;
+苺 > berries;
+勝 > victory;
+凭 > lean\-on;
+務 > affairs;
+苗 > sprouts;
+碰 > collide;
+苑 > pasture;
+仿 > imitate;
+機 > machine;
+栏 > railing;
+騙 > swindle;
+刈 > cut\-off;
+狠 > vicious;
+映 > project;
+截 > cut\-off;
+忠 > loyalty;
+扎 > pull\-up;
+腹 > stomach;
+極 > extreme;
+舒 > open\-up;
+骗 > swindle;
+凶 > culprit;
+慰 > comfort;
+餘 > surplus;
+撒 > release;
+愁 > anxiety;
+斤 > a\-catty;
+僑 > sojourn;
+扶 > support;
+毁 > destroy;
+辩 > dispute;
+胃 > stomach;
+械 > weapons;
+蒋 > surname;
+備 > prepare;
+违 > disobey;
+丢 > discard;
+肆 > indulge;
+傻 > foolish;
+绕 > entwine;
+聳 > urge\-on;
+涂 > surname;
+舰 > warship;
+恼 > angered;
+辣 > peppery;
+倚 > rely\-on;
+預 > prepare;
+旋 > revolve;
+倉 > granary;
+辽 > distant;
+罚 > penalty;
+拾 > pick\-up;
+恢 > restore;
+翁 > old\-man;
+羽 > feather;
+抖 > tremble;
+览 > look\-at;
+侯 > marquis;
+惑 > confuse;
+併 > combine;
+罰 > penalty;
+雕 > engrave;
+厌 > dislike;
+寿 > old\-age;
+跌 > stumble;
+锦 > brocade;
+杏 > apricot;
+黎 > surname;
+慌 > nervous;
+屠 > butcher;
+柏 > cypress;
+霍 > quickly;
+陶 > pottery;
+摄 > take\-in;
+旨 > purpose;
+闯 > rush\-in;
+冯 > surname;
+扰 > disturb;
+雀 > sparrow;
+娜 > elegant;
+暮 > evening;
+阁 > chamber;
+卢 > cottage;
+吞 > swallow;
+柜 > cabinet;
+暇 > leisure;
+愧 > ashamed;
+晶 > crystal;
+繞 > entwine;
+晝 > daytime;
+筋 > muscles;
+總 > collect;
+昼 > daytime;
+咨 > inquire;
+撑 > prop\-up;
+逆 > disobey;
+填 > fill\-in;
+旺 > prosper;
+緬 > distant;
+谨 > prudent;
+渴 > thirsty;
+疏 > neglect;
+耗 > consume;
+総 > collect;
+閲 > examine;
+钦 > respect;
+閣 > chamber;
+晋 > advance;
+悦 > pleased;
+斑 > mottled;
+践 > trample;
+贾 > surname;
+渔 > to\-fish;
+蔡 > surname;
+惶 > fearful;
+簾 > a\-blind;
+贩 > peddler;
+戈 > halberd;
+鐐 > fetters;
+揚 > scatter;
+虹 > rainbow;
+範 > pattern;
+寡 > widowed;
+吕 > surname;
+郊 > suburbs;
+徽 > a\-badge;
+谭 > surname;
+捨 > discard;
+鲍 > abalone;
+仓 > granary;
+錦 > brocade;
+笄 > hairpin;
+沾 > moisten;
+競 > contend;
+俞 > surname;
+瞒 > deceive;
+竃 > furnace;
+侨 > sojourn;
+恳 > sincere;
+抒 > express;
+姜 > surname;
+扱 > collect;
+稽 > examine;
+裔 > progeny;
+睹 > look\-at;
+匪 > bandits;
+潘 > surname;
+憑 > lean\-on;
+榜 > placard;
+枉 > useless;
+缅 > distant;
+慥 > sincere;
+骇 > terrify;
+慇 > careful;
+笨 > foolish;
+耸 > urge\-on;
+踩 > step\-on;
+郷 > country;
+惱 > angered;
+悸 > fearful;
+撰 > compose;
+惭 > ashamed;
+垃 > garbage;
+驼 > a\-camel;
+遠 > distant;
+違 > disobey;
+遑 > leisure;
+圾 > garbage;
+豹 > leopard;
+缴 > deliver;
+哨 > whistle;
+進 > advance;
+嚼 > prattle;
+昧 > obscure;
+拢 > collect;
+旱 > drought;
+诡 > deceive;
+搅 > disturb;
+聂 > whisper;
+莽 > thicket;
+馀 > surplus;
+怡 > harmony;
+厮 > servant;
+茨 > caltrop;
+粘 > viscous;
+摧 > destroy;
+朽 > decayed;
+娴 > elegant;
+焕 > shining;
+豁 > open\-up;
+詹 > surname;
+熄 > put\-out;
+逾 > go\-over;
+妒 > jealous;
+邱 > surname;
+醋 > vinegar;
+斌 > refined;
+寇 > bandits;
+屯 > village;
+恕 > forgive;
+沦 > be\-lost;
+岱 > daishan;
+撇 > discard;
+讳 > conceal;
+淌 > trickle;
+岔 > diverge;
+倏 > hastily;
+霓 > rainbow;
+垒 > rampart;
+邵 > surname;
+兢 > fearful;
+赦 > forgive;
+彦 > elegant;
+翘 > turn\-up;
+挚 > sincere;
+郝 > surname;
+觑 > peep\-at;
+拎 > to\-haul;
+噜 > verbose;
+阐 > explain;
+扒 > scratch;
+凹 > concave;
+撩 > lift\-up;
+挠 > scratch;
+崽 > a\-child;
+廖 > surname;
+矫 > correct;
+涅 > blacken;
+橱 > cabinet;
+哆 > tremble;
+蹬 > step\-on;
+恃 > rely\-on;
+拗 > to\-pull;
+剿 > destroy;
+簌 > falling;
+诛 > execute;
+掳 > capture;
+幌 > curtain;
+窒 > stop\-up;
+雍 > harmony;
+馅 > filling;
+瞿 > surname;
+硅 > silicon;
+瘩 > pimples;
+渥 > moisten;
+邢 > surname;
+蹋 > step\-on;
+抨 > impeach;
+擎 > lift\-up;
+憨 > foolish;
+肾 > kidneys;
+锭 > spindle;
+窦 > surname;
+谛 > careful;
+恙 > illness;
+茬 > harvest;
+蛐 > cricket;
+镣 > fetters;
+沥 > trickle;
+谤 > slander;
+钳 > pincers;
+睽 > staring;
+阱 > pitfall;
+姗 > slander;
+跤 > stumble;
+汀 > sandbar;
+秤 > balance;
+晾 > air\-dry;
+霹 > thunder;
+跚 > stagger;
+踹 > trample;
+莞 > smiling;
+鸥 > seagull;
+葆 > reserve;
+氢 > ammonia;
+帧 > picture;
+泯 > destroy;
+匡 > correct;
+佯 > pretend;
+暧 > obscure;
+烬 > cinders;
+蚌 > oysters;
+贻 > give\-to;
+谆 > patient;
+哝 > whisper;
+裴 > surname;
+诽 > slander;
+癞 > leprosy;
+啄 > to\-peck;
+拄 > lean\-on;
+翎 > feather;
+燎 > to\-burn;
+迳 > pass\-by;
+斡 > revolve;
+恸 > sadness;
+啬 > miserly;
+忑 > fearful;
+咂 > to\-suck;
+盹 > to\-doze;
+俾 > so\-that;
+簪 > hairpin;
+赈 > relieve;
+诠 > explain;
+谚 > proverb;
+掸 > to\-dust;
+匮 > to\-lack;
+幡 > pennant;
+讹 > swindle;
+囱 > chimney;
+崂 > laoshan;
+娄 > surname;
+叟 > old\-man;
+蝌 > tadpole;
+蚪 > tadpole;
+氨 > ammonia;
+铀 > uranium;
+挛 > tangled;
+诋 > slander;
+绯 > scarlet;
+攸 > distant;
+鸨 > bustard;
+蜗 > a\-snail;
+谩 > deceive;
+恫 > in\-pain;
+谀 > flatter;
+踮 > tip\-toe;
+馊 > spoiled;
+睇 > look\-at;
+钙 > calcium;
+捱 > put\-off;
+蒿 > mugwort;
+酶 > enzymes;
+涣 > scatter;
+杳 > obscure;
+衢 > highway;
+赡 > support;
+磺 > sulphur;
+蹶 > stumble;
+谄 > flatter;
+蹩 > to\-limp;
+翟 > surname;
+浣 > to\-wash;
+疹 > measles;
+窈 > obscure;
+幔 > curtain;
+靥 > dimples;
+掇 > collect;
+愆 > a\-fault;
+鸵 > ostrich;
+祗 > respect;
+佘 > surname;
+窕 > slender;
+迩 > be\-near;
+佰 > hundred;
+邰 > surname;
+邝 > surname;
+钹 > cymbals;
+伉 > compare;
+靼 > tartars;
+煲 > to\-heat;
+獐 > roebuck;
+佝 > rickets;
+蓟 > circium;
+黜 > dismiss;
+谲 > cunning;
+摈 > exclude;
+飓 > cyclone;
+谗 > slander;
+胱 > bladder;
+饽 > ferrule;
+诳 > deceive;
+馏 > distill;
+苯 > benzene;
+淼 > a\-flood;
+桎 > fetters;
+罄 > exhaust;
+荀 > surname;
+铱 > iridium;
+葩 > flowers;
+逡 > retreat;
+逶 > winding;
+宥 > forgive;
+萸 > dogwood;
+挝 > to\-beat;
+钿 > hairpin;
+熵 > entropy;
+煨 > to\-stew;
+砒 > arsenic;
+晁 > morning;
+谘 > consult;
+凇 > dewdrop;
+噘 > pouting;
+唣 > chatter;
+骠 > charger;
+撷 > pick\-up;
+怄 > annoyed;
+锂 > lithium;
+疥 > scabies;
+稗 > darnels;
+洮 > cleanse;
+悭 > miserly;
+酮 > ketones;
+腚 > buttock;
+逑 > collect;
+腱 > tendons;
+馔 > to\-feed;
+搠 > to\-daub;
+茱 > dogwood;
+砷 > arsenic;
+酡 > flushed;
+疴 > illness;
+戗 > support;
+呒 > unclear;
+谌 > sincere;
+痧 > cholera;
+恂 > careful;
+笤 > a\-broom;
+韫 > secrete;
+怛 > grieved;
+怙 > rely\-on;
+皴 > chapped;
+衤 > clothes;
+廪 > granary;
+庾 > granary;
+挢 > correct;
+睢 > gaze\-at;
+塬 > plateau;
+螯 > nippers;
+獒 > mastiff;
+沆 > a\-ferry;
+帔 > a\-skirt;
+擢 > pull\-up;
+薅 > to\-weed;
+莴 > lettuce;
+羼 > confuse;
+捭 > to\-open;
+葭 > bulrush;
+倥 > boorish;
+溴 > bromine;
+廛 > a\-store;
+揸 > handful;
+仵 > similar;
+髋 > hipbone;
+肱 > forearm;
+厶 > private;
+蚍 > mussels;
+哙 > swallow;
+镓 > gallium;
+铋 > bismuth;
+胝 > callous;
+悃 > sincere;
+矽 > silicon;
+赍 > present;
+翥 > to\-soar;
+蜞 > grapsus;
+蛩 > cricket;
+谠 > counsel;
+鳕 > codfish;
+跆 > trample;
+矬 > a\-dwarf;
+歙 > to\-suck;
+顼 > grieved;
+溲 > urinate;
+蕻 > budding;
+刳 > cut\-out;
+鹈 > pelican;
+铙 > cymbals;
+椟 > cabinet;
+镉 > cadmium;
+嫘 > surname;
+謇 > stutter;
+憷 > painful;
+摭 > pick\-up;
+谡 > rise\-up;
+褊 > cramped;
+鹕 > pelican;
+镲 > cymbals;
+钍 > thorium;
+氪 > krypton;
+迮 > to\-rise;
+忉 > grieved;
+蓍 > milfoil;
+踬 > stumble;
+醯 > vinegar;
+螽 > katydid;
+荑 > sprouts;
+郓 > surname;
+剀 > sharpen;
+蹀 > to\-skip;
+锎 > caesium;
+钇 > yttrium;
+氚 > tritium;
+犸 > mammoth;
+菸 > to\-fade;
+厍 > surname;
+鲱 > herring;
+貊 > leopard;
+躞 > to\-walk;
+蛴 > maggots;
+锾 > measure;
+铌 > niobium;
+畀 > to\-give;
+遘 > to\-meet;
+泷 > raining;
+蒡 > burdock;
+诼 > slander;
+髌 > kneecap;
+鳙 > bighead;
+鳘 > codfish;
+鳆 > abalone;
+絷 > confine;
+箦 > bed\-mat;
+瘘 > fistula;
+鸸 > swallow;
+镄 > fermium;
+恧 > ashamed;
+祆 > ormazda;
+嫠 > a\-widow;
+搴 > extract;
+廒 > granary;
+郄 > surname;
+诜 > inquire;
+僦 > to\-heir;
+龡 > to\-blow;
+齰 > to\-bite;
+齩 > to\-chew;
+齚 > to\-chew;
+鼷 > a\-mouse;
+麞 > roebuck;
+鸑 > a\-large;
+鷟 > phoenix;
+鷗 > seagull;
+鷖 > seagull;
+鶺 > wagtail;
+鶹 > the\-owl;
+鶦 > pelican;
+鶘 > pelican;
+鵮 > to\-peck;
+鵜 > pelican;
+鴯 > swallow;
+鴫 > a\-snipe;
+鴕 > ostrich;
+鴎 > seagull;
+鴇 > bustard;
+鳦 > swallow;
+鲚 > anchovy;
+鱭 > anchovy;
+鱨 > codfish;
+鱄 > anchovy;
+鰽 > herring;
+鰵 > codfish;
+鰮 > sardine;
+鰛 > sardine;
+鰒 > abalone;
+鯷 > anchovy;
+鯡 > herring;
+鮑 > abalone;
+魜 > mermaid;
+鬧 > quarrel;
+髖 > hipbone;
+髕 > kneecap;
+骫 > be\-bent;
+骉 > running;
+驙 > \(horse\);
+驒 > dappled;
+驃 > charger;
+騨 > dappled;
+駭 > terrify;
+駝 > a\-camel;
+駋 > \(horse\);
+馮 > surname;
+饐 > spoiled;
+餿 > spoiled;
+餾 > distill;
+餵 > to\-feed;
+餲 > spoiled;
+餑 > ferrule;
+飤 > to\-feed;
+颶 > cyclone;
+颳 > to\-blow;
+颫 > a\-storm;
+頙 > correct;
+頊 > grieved;
+韣 > bow\-bag;
+韅 > harness;
+靨 > dimples;
+霅 > thunder;
+雟 > sparrow;
+雚 > a\-heron;
+陾 > in\-file;
+陳 > exhibit;
+陞 > promote;
+阧 > sloping;
+闡 > explain;
+闖 > rush\-in;
+閱 > examine;
+閙 > quarrel;
+閈 > village;
+镦 > ferrule;
+铽 > terbium;
+铼 > rhenium;
+铪 > hafnium;
+铥 > thulium;
+铑 > rhodium;
+钬 > holmium;
+鐨 > fermium;
+鐓 > ferrule;
+鐃 > cymbals;
+鎵 > gallium;
+鎘 > cadmium;
+鍰 > measure;
+錸 > rhenium;
+錶 > a\-watch;
+錠 > spindle;
+錀 > \(metal\);
+鋱 > terbium;
+鋰 > lithium;
+鋕 > engrave;
+鋊 > a\-poker;
+鋂 > bit\-cup;
+銩 > thulium;
+銥 > iridium;
+鉿 > hafnium;
+鉷 > trigger;
+鉲 > cadmium;
+鉗 > pincers;
+鉍 > bismuth;
+鈿 > hairpin;
+鈾 > uranium;
+鈸 > cymbals;
+鈮 > niobium;
+鈥 > holmium;
+鈣 > calcium;
+釸 > silicon;
+釷 > thorium;
+釱 > fetters;
+釔 > yttrium;
+酇 > collect;
+鄺 > surname;
+鄧 > surname;
+鄕 > country;
+鄉 > country;
+鄆 > surname;
+郉 > surname;
+邨 > village;
+邇 > be\-near;
+遼 > distant;
+遶 > entwine;
+遯 > deceive;
+逺 > distant;
+逷 > distant;
+逕 > pass\-by;
+逈 > distant;
+迴 > revolve;
+轷 > surname;
+轒 > chariot;
+輽 > vehicle;
+軲 > a\-wheel;
+軘 > war\-car;
+躦 > to\-jump;
+躠 > to\-limp;
+躝 > to\-pass;
+躘 > to\-walk;
+躄 > cripple;
+躂 > stumble;
+蹡 > to\-limp;
+踫 > collide;
+踐 > trample;
+踈 > neglect;
+跴 > step\-on;
+跬 > to\-step;
+跕 > shuffle;
+趷 > to\-jolt;
+趙 > surname;
+趒 > to\-jump;
+贍 > support;
+贇 > affable;
+贃 > to\-earn;
+賫 > present;
+賝 > preious;
+賈 > surname;
+貽 > give\-to;
+販 > peddler;
+豗 > clamour;
+谫 > shallow;
+诹 > consult;
+讟 > slander;
+讜 > counsel;
+讒 > slander;
+讌 > a\-feast;
+讇 > flatter;
+譾 > shallow;
+譸 > deceive;
+譚 > surname;
+譎 > cunning;
+譈 > dislike;
+謾 > deceive;
+謷 > slander;
+謳 > to\-sing;
+謭 > shallow;
+謟 > flatter;
+謗 > slander;
+謖 > rise\-up;
+謌 > slander;
+謆 > beguile;
+諾 > promise;
+諺 > proverb;
+諶 > sincere;
+諱 > conceal;
+諮 > consult;
+諛 > flatter;
+諚 > command;
+諑 > slander;
+諏 > consult;
+諄 > patient;
+諂 > flatter;
+誹 > slander;
+誑 > deceive;
+誅 > execute;
+詾 > noisily;
+詵 > inquire;
+詭 > deceive;
+詫 > to\-brag;
+詆 > slander;
+詅 > to\-sell;
+註 > explain;
+訬 > clamour;
+訩 > noisily;
+訦 > sincere;
+訢 > pleased;
+訑 > deceive;
+觡 > antlers;
+覷 > peep\-at;
+覥 > ashamed;
+覜 > mission;
+襜 > flutter;
+襃 > commend;
+褽 > cushion;
+褔 > complex;
+裵 > surname;
+裒 > collect;
+袽 > clothes;
+袺 > hold\-up;
+袪 > sleeves;
+衵 > chemise;
+蠐 > maggots;
+螮 > rainbow;
+蝸 > a\-snail;
+蝃 > rainbow;
+蝀 > rainbow;
+蜫 > insects;
+蚫 > abalone;
+蚑 > tip\-toe;
+虆 > entwine;
+蘊 > collect;
+藴 > collect;
+藙 > dogwood;
+薽 > \(grass\);
+薶 > to\-bury;
+薓 > ginseng;
+薐 > spinach;
+薊 > circium;
+蕝 > handful;
+蔿 > surname;
+蔣 > surname;
+蔘 > ginseng;
+蓌 > pretend;
+蒐 > collect;
+葠 > ginseng;
+葊 > cottage;
+萵 > lettuce;
+菪 > henbane;
+菧 > stibene;
+莊 > village;
+莀 > to\-farm;
+荘 > village;
+茷 > flutter;
+茠 > to\-weed;
+苽 > bulrush;
+苅 > cut\-off;
+艦 > warship;
+舓 > to\-lick;
+臝 > be\-bare;
+腖 > peptone;
+腎 > kidneys;
+脝 > distend;
+聶 > whisper;
+聯 > connect;
+聮 > connect;
+聫 > connect;
+聨 > connect;
+耉 > old\-age;
+耈 > old\-age;
+翹 > turn\-up;
+翪 > flutter;
+羐 > to\-lead;
+罸 > penalty;
+罖 > kwukyel;
+缻 > pottery;
+缲 > to\-reel;
+繳 > deliver;
+縶 > confine;
+縂 > collect;
+緋 > scarlet;
+緁 > to\-join;
+絪 > matting;
+粂 > surname;
+籛 > surname;
+籑 > to\-feed;
+簀 > bed\-mat;
+笰 > curtain;
+笓 > to\-comb;
+竸 > contend;
+竒 > strange;
+竈 > furnace;
+竇 > surname;
+窀 > to\-bury;
+穫 > harvest;
+稊 > darnels;
+稇 > to\-bind;
+秐 > to\-weed;
+禢 > surname;
+禂 > to\-pray;
+礵 > arsenic;
+磇 > arsenic;
+碃 > \(stone\);
+矱 > measure;
+矯 > correct;
+矟 > ''\-lance;
+瞯 > to\-peep;
+瞞 > deceive;
+眽 > to\-gaze;
+眴 > dazzled;
+眎 > look\-at;
+盧 > cottage;
+癩 > leprosy;
+癨 > quickly;
+瘻 > fistula;
+瘝 > illness;
+畐 > to\-fill;
+甔 > big\-jar;
+瓛 > scaptre;
+璺 > a\-crack;
+璊 > reddish;
+琱 > engrave;
+玧 > reddish;
+獹 > a\-hound;
+獚 > spaniel;
+狉 > fox\-cub;
+犆 > special;
+牮 > prop\-up;
+燼 > cinders;
+熻 > to\-heat;
+熸 > put\-out;
+熯 > by\-fire;
+煻 > to\-warm;
+煥 > shining;
+烉 > shining;
+灴 > to\-bake;
+瀹 > to\-boil;
+瀧 > raining;
+澣 > cleanse;
+澐 > billows;
+潬 > a\-rapid;
+溦 > drizzle;
+渼 > ripples;
+渧 > to\-drop;
+渙 > scatter;
+淪 > be\-lost;
+涶 > to\-spit;
+涒 > meander;
+洸 > sparkle;
+沄 > billows;
+汋 > to\-pour;
+氼 > to\-sink;
+氕 > protium;
+毚 > cunning;
+毀 > destroy;
+歺 > vicious;
+歜 > furious;
+欽 > respect;
+欄 > railing;
+櫥 > cabinet;
+櫝 > cabinet;
+橆 > without;
+榢 > a\-frame;
+椗 > \(plant\);
+棸 > surname;
+栢 > cypress;
+枼 > a\-table;
+枓 > capital;
+杸 > to\-kill;
+杶 > varnish;
+朾 > to\-bump;
+朰 > kwukyel;
+朢 > look\-at;
+朊 > protein;
+曽 > already;
+曖 > obscure;
+晉 > advance;
+旣 > already;
+斿 > to\-swim;
+斮 > cut\-off;
+斠 > measure;
+斁 > dislike;
+敾 > to\-rule;
+敯 > to\-defy;
+敭 > scatter;
+敜 > fill\-up;
+敘 > express;
+敍 > express;
+攷 > examine;
+攪 > disturb;
+攣 > tangled;
+攝 > take\-in;
+攏 > collect;
+擾 > disturb;
+擸 > to\-hold;
+擷 > pick\-up;
+擯 > exclude;
+擝 > to\-pull;
+擄 > capture;
+擁 > embrace;
+撾 > to\-beat;
+撹 > disturb;
+撴 > to\-jolt;
+撣 > to\-dust;
+撢 > to\-dust;
+撟 > correct;
+撓 > scratch;
+撐 > prop\-up;
+摯 > sincere;
+摠 > general;
+摂 > take\-in;
+搷 > to\-beat;
+搶 > plunder;
+掽 > collide;
+掯 > oppress;
+挍 > collate;
+拫 > to\-pull;
+抈 > to\-bend;
+扽 > to\-move;
+戧 > support;
+懰 > be\-glad;
+懫 > enraged;
+懤 > grieved;
+懛 > alarmed;
+懇 > sincere;
+懆 > anxious;
+懅 > bashful;
+憃 > foolish;
+慳 > miserly;
+慪 > annoyed;
+慟 > sadness;
+慚 > ashamed;
+慙 > ashamed;
+愐 > bashful;
+愊 > sincere;
+惷 > wriggle;
+惣 > overall;
+惖 > respect;
+惓 > careful;
+惇 > be\-kind;
+悩 > angered;
+悜 > obscure;
+悐 > respect;
+悅 > pleased;
+恠 > strange;
+恉 > meaning;
+怱 > hastily;
+彧 > refined;
+彥 > elegant;
+彚 > collect;
+彙 > collect;
+彆 > awkward;
+廩 > granary;
+廠 > factory;
+廝 > servant;
+廚 > kitchen;
+廌 > unicorn;
+廋 > conceal;
+庤 > prepare;
+幷 > combine;
+幫 > to\-help;
+幨 > curtain;
+幀 > picture;
+帿 > marquis;
+帲 > shelter;
+帡 > shelter;
+巿 > revolve;
+巇 > a\-crack;
+嶗 > laoshan;
+崋 > flowery;
+尟 > surname;
+寪 > surname;
+孅 > slender;
+嫻 > elegant;
+嫺 > refined;
+媿 > ashamed;
+媻 > to\-move;
+媞 > at\-ease;
+婬 > obscene;
+婁 > surname;
+姍 > slander;
+奛 > opening;
+夣 > a\-dream;
+壽 > old\-age;
+壭 > kwukyel;
+壝 > a\-mound;
+壘 > rampart;
+壔 > a\-mound;
+塽 > plateau;
+塡 > fill\-in;
+塓 > plaster;
+塁 > rampart;
+堄 > parapet;
+埗 > a\-wharf;
+圗 > diagram;
+圕 > library;
+圂 > pig\-sty;
+囪 > chimney;
+嚥 > swallow;
+嚕 > verbose;
+嚊 > to\-pant;
+噲 > swallow;
+噥 > whisper;
+嘸 > unclear;
+嗹 > chatter;
+喾 > emperor;
+喥 > a\-place;
+啱 > correct;
+唞 > to\-gasp;
+唅 > a\-sound;
+咾 > a\-noise;
+咊 > harmony;
+咉 > an\-echo;
+呿 > to\-yawn;
+呬 > to\-rest;
+呫 > whisper;
+呌 > to\-call;
+叜 > old\-man;
+厼 > kwukyel;
+厰 > factory;
+厫 > granary;
+厙 > surname;
+卲 > eminent;
+卪 > kwukyel;
+卆 > soldier;
+匽 > to\-hide;
+匱 > to\-lack;
+匧 > a\-trunk;
+匋 > pottery;
+匊 > handful;
+勦 > destroy;
+劐 > destroy;
+劉 > surname;
+剴 > sharpen;
+凊 > surname;
+冦 > bandits;
+兯 > kwukyel;
+兪 > surname;
+兂 > hairpin;
+儶 > valiant;
+儦 > milling;
+儤 > on\-duty;
+儓 > servant;
+儍 > foolish;
+僯 > ashamed;
+僤 > sincere;
+僎 > collect;
+傼 > surname;
+傚 > imitate;
+傔 > servant;
+傁 > old\-man;
+偹 > prepare;
+倣 > imitate;
+倝 > sunrise;
+倐 > hastily;
+倂 > combine;
+侴 > surname;
+侇 > a\-class;
+侅 > to\-give;
+佉 > surname;
+伈 > nervous;
+伀 > excited;
+仒 > kwukyel;
+亽 > kwukyel;
+亷 > upright;
+亶 > sincere;
+亪 > kwukyel;
+亗 > harvest;
+乿 > to\-cure;
+乬 > to\-hang;
+乥 > kwukyel;
+乛 > kwukyel;
+乊 > kwukyel;
+乀 > stretch;
+丷 > kwukyel;
+丟 > discard;
+丏 > parapet;
+丆 > kwukyel;
+䶴 > to\-blow;
+䶩 > to\-gnaw;
+䶧 > to\-gnaw;
+䶢 > to\-gnaw;
+䶠 > to\-gnaw;
+䶞 > to\-gnaw;
+䶗 > to\-bite;
+䵼 > to\-boil;
+䴧 > venison;
+䴒 > wagtail;
+䳭 > wagtail;
+䲬 > chicken;
+䲣 > to\-fish;
+䲝 > pomfret;
+䲔 > a\-whale;
+䱷 > to\-fish;
+䱉 > the\-eel;
+䱇 > the\-eel;
+䰯 > to\-fear;
+䰞 > to\-cook;
+䰁 > to\-meet;
+䮼 > piebald;
+䮻 > to\-pray;
+䮦 > untamed;
+䭮 > jewelry;
+䭤 > to\-chew;
+䭠 > a\-snack;
+䬡 > to\-soar;
+䬝 > a\-storm;
+䬖 > a\-storm;
+䬎 > hot\-air;
+䫸 > to\-blow;
+䫘 > healthy;
+䫒 > disease;
+䪣 > smashed;
+䪢 > smashed;
+䩳 > tanning;
+䩟 > leather;
+䩔 > the\-hem;
+䨨 > thunder;
+䨞 > to\-rain;
+䨛 > to\-rain;
+䨚 > to\-rain;
+䨓 > thunder;
+䨂 > a\-chick;
+䧰 > a\-mound;
+䧟 > to\-skin;
+䧍 > a\-crack;
+䦭 > to\-open;
+䦋 > to\-grow;
+䥰 > to\-melt;
+䥮 > to\-beat;
+䥊 > refined;
+䤟 > a\-spade;
+䤘 > vinegar;
+䤕 > vinegar;
+䤈 > vinegar;
+䣷 > to\-pour;
+䢶 > a\-state;
+䢰 > to\-jump;
+䢬 > to\-move;
+䢣 > distant;
+䢢 > to\-pass;
+䢠 > to\-send;
+䢙 > to\-ruin;
+䢒 > to\-meet;
+䢌 > to\-walk;
+䠼 > to\-wear;
+䠳 > to\-walk;
+䠥 > to\-limp;
+䠜 > to\-walk;
+䠛 > to\-jump;
+䠓 > to\-walk;
+䠄 > to\-walk;
+䟾 > to\-jump;
+䟷 > to\-jump;
+䟰 > to\-walk;
+䟭 > to\-jump;
+䟬 > to\-walk;
+䟦 > to\-walk;
+䟐 > to\-walk;
+䟏 > to\-jump;
+䟍 > to\-walk;
+䟉 > to\-walk;
+䟈 > to\-walk;
+䟇 > to\-walk;
+䟀 > to\-walk;
+䞻 > to\-walk;
+䞺 > to\-walk;
+䞹 > to\-walk;
+䞵 > to\-jump;
+䞴 > to\-jump;
+䞯 > to\-walk;
+䞫 > to\-walk;
+䞥 > to\-walk;
+䞤 > to\-walk;
+䞢 > to\-walk;
+䞡 > to\-walk;
+䞠 > to\-walk;
+䞞 > to\-walk;
+䝻 > to\-sell;
+䝮 > to\-brag;
+䝧 > capital;
+䜖 > to\-talk;
+䜉 > to\-jest;
+䛿 > cunning;
+䛺 > to\-warn;
+䛷 > to\-obey;
+䛰 > sketchy;
+䛢 > cunning;
+䛝 > to\-like;
+䛛 > courage;
+䚼 > ashamed;
+䚻 > to\-sing;
+䚱 > honesty;
+䚮 > thicker;
+䚗 > to\-lift;
+䚏 > to\-love;
+䙲 > to\-move;
+䙩 > clothes;
+䙙 > clothes;
+䙎 > sleeves;
+䙉 > clothes;
+䘷 > sleeves;
+䘶 > sleeves;
+䘱 > wealthy;
+䘮 > to\-lose;
+䘠 > greaves;
+䘝 > a\-shirt;
+䗲 > firefly;
+䗑 > firefly;
+䖵 > insects;
+䖝 > insects;
+䖚 > a\-tiger;
+䖘 > a\-tiger;
+䖕 > a\-tiger;
+䖄 > to\-burn;
+䕞 > henbane;
+䕑 > parsley;
+䔺 > heading;
+䔀 > parsley;
+䒶 > the\-sky;
+䒘 > parsley;
+䑧 > a\-short;
+䑛 > to\-lick;
+䐿 > gizzard;
+䐷 > paunchy;
+䐶 > to\-cook;
+䐴 > lumbago;
+䐫 > obesity;
+䐊 > insects;
+䏝 > sincere;
+䏖 > a\-wound;
+䏑 > to\-burn;
+䏇 > to\-hear;
+䏅 > to\-hear;
+䏃 > to\-hear;
+䎽 > to\-hear;
+䎻 > to\-hear;
+䎹 > to\-hear;
+䎸 > to\-hear;
+䎩 > to\-till;
+䎦 > to\-till;
+䎤 > to\-till;
+䎝 > to\-soar;
+䎌 > feather;
+䍶 > unicorn;
+䍳 > disease;
+䌘 > to\-knit;
+䌔 > to\-soak;
+䌁 > a\-pleat;
+䋎 > to\-mend;
+䊟 > adorned;
+䊘 > a\-grain;
+䊒 > refined;
+䊇 > to\-feed;
+䉵 > to\-feed;
+䉢 > a\-sieve;
+䉎 > a\-cover;
+䈬 > a\-small;
+䈪 > a\-small;
+䈥 > tendons;
+䈤 > pincers;
+䈒 > fragile;
+䈇 > a\-cover;
+䇔 > atrophy;
+䇍 > to\-wait;
+䆵 > an\-echo;
+䆨 > the\-sky;
+䅸 > a\-grain;
+䄤 > to\-sink;
+䄏 > bizarre;
+䃣 > to\-ruin;
+䂊 > weapons;
+䂉 > weapons;
+䂆 > weapons;
+䂀 > to\-wink;
+䁲 > to\-peep;
+䁪 > to\-wink;
+䁣 > to\-wink;
+䁛 > to\-look;
+䁒 > to\-wink;
+䀻 > to\-look;
+䀨 > to\-look;
+䀔 > to\-look;
+㿦 > to\-tell;
+㿒 > illness;
+㿑 > illness;
+㿍 > scabies;
+㾷 > to\-ache;
+㾬 > malaria;
+㾠 > a\-fever;
+㾟 > relapse;
+㾞 > illness;
+㾘 > ailment;
+㾖 > grieved;
+㾕 > a\-chill;
+㾓 > fatigue;
+㾒 > illness;
+㾏 > illness;
+㾇 > illness;
+㾆 > ecdysis;
+㾅 > defects;
+㾂 > illness;
+㽴 > illness;
+㽳 > illness;
+㽝 > to\-sink;
+㽖 > a\-human;
+㼼 > a\-ladle;
+㼷 > a\-basin;
+㼜 > a\-basin;
+㼗 > a\-brick;
+㻹 > a\-crack;
+㻃 > crooked;
+㺲 > buttons;
+㺗 > to\-bite;
+㺊 > a\-beast;
+㹾 > cunning;
+㹽 > to\-bite;
+㹞 > to\-bark;
+㹛 > a\-tamed;
+㸧 > to\-bite;
+㸐 > to\-burn;
+㸍 > to\-burn;
+㷻 > without;
+㷓 > a\-torch;
+㷊 > to\-burn;
+㷉 > to\-iron;
+㷅 > to\-cook;
+㶮 > to\-burn;
+㶫 > to\-burn;
+㶣 > to\-burn;
+㶗 > well\-up;
+㶓 > to\-sink;
+㶇 > a\-ferry;
+㵸 > to\-boil;
+㵴 > to\-sink;
+㵣 > thirsty;
+㵒 > boiling;
+㵌 > to\-flow;
+㵅 > a\-river;
+㴿 > boiling;
+㴉 > various;
+㴇 > to\-wade;
+㴅 > to\-melt;
+㳺 > to\-swim;
+㳭 > spittle;
+㳬 > an\-eddy;
+㳪 > a\-river;
+㳦 > a\-river;
+㳙 > a\-brook;
+㳅 > to\-flow;
+㳄 > spittle;
+㲺 > to\-wash;
+㲅 > to\-bind;
+㲂 > to\-push;
+㲁 > to\-beat;
+㲀 > to\-beat;
+㱮 > to\-open;
+㱖 > to\-stay;
+㱌 > to\-take;
+㱄 > to\-spit;
+㱀 > to\-bite;
+㰵 > to\-suck;
+㰕 > a\-ladle;
+㯻 > to\-bind;
+㯹 > to\-show;
+㯸 > a\-basin;
+㯓 > a\-couch;
+㯐 > tubular;
+㯋 > a\-chest;
+㮸 > to\-send;
+㮛 > a\-spoon;
+㭰 > to\-know;
+㭬 > to\-beat;
+㭪 > a\-shrub;
+㭌 > a\-basin;
+㭈 > a\-basin;
+㬼 > to\-have;
+㬝 > obscure;
+㬔 > to\-defy;
+㬃 > sunrise;
+㫴 > to\-roar;
+㫳 > morning;
+㫧 > violent;
+㫝 > the\-sun;
+㫙 > the\-sun;
+㫑 > purpose;
+㪼 > to\-pull;
+㪱 > elegant;
+㪯 > to\-lift;
+㪮 > to\-beat;
+㪨 > to\-mend;
+㪧 > to\-beat;
+㪦 > to\-beat;
+㪥 > to\-take;
+㪢 > to\-beat;
+㪠 > to\-peck;
+㪝 > to\-beat;
+㪗 > to\-open;
+㪕 > to\-beat;
+㪒 > to\-ruin;
+㪏 > to\-ruin;
+㪁 > to\-hold;
+㩶 > to\-hold;
+㩵 > to\-beat;
+㩳 > to\-hold;
+㩰 > to\-stab;
+㩯 > to\-move;
+㩬 > to\-beat;
+㩤 > to\-open;
+㩣 > to\-move;
+㩢 > to\-beat;
+㩕 > to\-haul;
+㩋 > to\-beat;
+㨷 > to\-wipe;
+㨰 > to\-turn;
+㨦 > to\-hold;
+㨤 > to\-wipe;
+諸 > several;
+羽 > feather;
+精 > essence;
+㨖 > to\-stab;
+㨏 > to\-beat;
+㨋 > to\-beat;
+降 > descend;
+暴 > violent;
+㨆 > to\-kill;
+㨂 > to\-beat;
+㧿 > to\-bump;
+㧻 > a\-thorn;
+㧫 > to\-hold;
+㧪 > to\-ruin;
+㧤 > to\-jump;
+㧣 > to\-stop;
+㧡 > to\-move;
+㧟 > to\-wipe;
+㧝 > to\-take;
+率 > to\-lead;
+㧜 > to\-hold;
+律 > statute;
+淪 > be\-lost;
+㧓 > to\-lead;
+㧒 > to\-beat;
+㧑 > to\-wave;
+㧐 > to\-hold;
+㧊 > to\-push;
+劉 > surname;
+㧈 > to\-pull;
+㧇 > to\-hold;
+遼 > distant;
+㧄 > to\-take;
+燎 > to\-burn;
+㦹 > a\-spear;
+㦵 > to\-kill;
+㦭 > to\-pity;
+㦬 > ashamed;
+令 > command;
+簾 > a\-blind;
+廉 > upright;
+㦞 > grieved;
+聯 > connect;
+㦕 > thought;
+黎 > surname;
+呂 > surname;
+量 > measure;
+㥽 > feeling;
+㥹 > to\-move;
+拾 > pick\-up;
+㥯 > careful;
+塞 > stop\-up;
+㥤 > to\-pity;
+率 > to\-lead;
+諾 > promise;
+㥕 > to\-pity;
+㥒 > corrupt;
+㥏 > bashful;
+㥌 > prudent;
+壘 > rampart;
+雷 > thunder;
+㥄 > to\-pity;
+㤿 > to\-love;
+㤽 > grieved;
+魯 > foolish;
+㤺 > blurred;
+虜 > capture;
+㤶 > confuse;
+盧 > cottage;
+擄 > capture;
+㤭 > untamed;
+㤠 > grieved;
+欄 > railing;
+癩 > leprosy;
+㤅 > to\-love;
+賈 > surname;
+㤃 > jealous;
+㤂 > anxious;
+㣷 > walking;
+㣶 > to\-walk;
+㣬 > to\-walk;
+㣜 > to\-walk;
+㣛 > walking;
+㣃 > to\-sell;
+㣂 > to\-bind;
+㢼 > awkward;
+㢣 > to\-lift;
+㢝 > cottage;
+㢕 > harmony;
+㡸 > a\-house;
+㡰 > a\-house;
+㡫 > anxious;
+㡨 > a\-label;
+㡘 > screens;
+㡓 > drawers;
+㡂 > remains;
+㠭 > to\-open;
+㟧 > a\-cliff;
+㞺 > a\-tribe;
+㞫 > to\-walk;
+㞧 > to\-meet;
+㞤 > to\-help;
+㞡 > to\-open;
+㞀 > to\-bump;
+㝼 > crooked;
+㝱 > a\-dream;
+㝢 > a\-house;
+㝀 > to\-like;
+㜾 > a\-child;
+㜩 > jealous;
+㜓 > womanly;
+㜉 > womanly;
+㜇 > unhappy;
+㛿 > cunning;
+㛻 > womanly;
+㛯 > to\-soar;
+㛕 > womanly;
+㚢 > a\-slave;
+㙔 > a\-fence;
+㙐 > to\-move;
+㙏 > caverns;
+㘸 > to\-bury;
+㘷 > mugwort;
+㘩 > to\-mate;
+㘗 > whisper;
+㘕 > to\-call;
+㘂 > ashamed;
+㘁 > to\-call;
+㗽 > an\-echo;
+㗲 > to\-call;
+㗱 > to\-suck;
+㗭 > a\-sound;
+㗤 > ashamed;
+㗍 > to\-gnaw;
+㗃 > the\-lip;
+㖿 > a\-sound;
+㖻 > whisper;
+㖺 > to\-blow;
+㖭 > to\-lick;
+㖥 > to\-spit;
+㕷 > to\-call;
+㕱 > to\-bark;
+㕮 > to\-chew;
+㕟 > to\-sign;
+㕞 > a\-brush;
+㕜 > history;
+㔿 > a\-tally;
+㔭 > a\-spoon;
+㔡 > greatly;
+㔂 > to\-pare;
+㓲 > to\-pare;
+㓰 > to\-rive;
+㓥 > to\-kill;
+㓟 > to\-peel;
+㓐 > to\-rain;
+㒼 > average;
+㒸 > to\-obey;
+㒴 > to\-come;
+㒦 > puppets;
+㒞 > valiant;
+㒕 > unyield;
+㒒 > a\-slave;
+㒑 > grow\-up;
+㒉 > alarmed;
+㑹 > to\-meet;
+㑐 > to\-move;
+㑅 > to\-make;
+㑃 > to\-pull;
+㐼 > to\-save;
+㐮 > to\-help;
+㐁 > to\-lick;
+是 > indeed;
+迫 > coerce;
+応 > should;
+忘 > forget;
+国 > nation;
+返 > return;
+忍 > endure;
+迄 > extend;
+必 > surely;
+出 > go\-out;
+辿 > follow;
+瞼 > eyelid;
+得 > obtain;
+辷 > smooth;
+徴 > summon;
+徳 > virtue;
+瞭 > bright;
+復 > return;
+辛 > bitter;
+徐 > slowly;
+後 > behind;
+徊 > linger;
+影 > shadow;
+事 > affair;
+轟 > rumble;
+彈 > pellet;
+主 > master;
+強 > strong;
+弛 > loosen;
+民 > people;
+県 > county;
+现 > appear;
+分 > divide;
+些 > little;
+相 > mutual;
+回 > return;
+理 > reason;
+明 > bright;
+益 > profit;
+话 > speech;
+向 > toward;
+定 > decide;
+庫 > armory;
+度 > degree;
+底 > bottom;
+打 > strike;
+位 > throne;
+序 > series;
+幼 > infant;
+干 > oppose;
+内 > inside;
+癪 > spasms;
+加 > add\-to;
+化 > change;
+癌 > cancer;
+常 > common;
+踰 > exceed;
+市 > market;
+帰 > return;
+才 > talent;
+住 > reside;
+员 > member;
+巻 > scroll;
+性 > nature;
+报 > report;
+神 > spirit;
+数 > number;
+跡 > search;
+原 > source;
+巡 > patrol;
+川 > stream;
+应 > should;
+越 > exceed;
+疊 > repeat;
+系 > system;
+畳 > repeat;
+赫 > bright;
+及 > extend;
+制 > system;
+畠 > garden;
+解 > loosen;
+记 > record;
+林 > forest;
+贔 > strong;
+统 > govern;
+字 > letter;
+島 > island;
+質 > matter;
+论 > debate;
+貰 > borrow;
+指 > finger;
+財 > wealth;
+花 > flower;
+層 > storey;
+条 > clause;
+变 > change;
+该 > should;
+屍 > corpse;
+传 > summon;
+治 > govern;
+决 > decide;
+局 > bureau;
+办 > manage;
+谷 > valley;
+城 > castle;
+父 > father;
+强 > strong;
+導 > direct;
+封 > letter;
+現 > appear;
+寧 > repose;
+黄 > yellow;
+德 > ethics;
+害 > injure;
+宮 > palace;
+找 > search;
+友 > friend;
+變 > change;
+改 > change;
+守 > defend;
+讃 > praise;
+际 > border;
+单 > single;
+导 > direct;
+獲 > obtain;
+孤 > orphan;
+校 > school;
+獄 > prison;
+猾 > crafty;
+謙 > humble;
+謎 > riddle;
+随 > follow;
+狹 > narrow;
+狭 > narrow;
+母 > mother;
+狙 > an\-ape;
+論 > debate;
+团 > sphere;
+狂 > insane;
+課 > lesson;
+苦 > bitter;
+招 > beckon;
+兴 > thrive;
+該 > should;
+约 > treaty;
+話 > speech;
+詩 > poetry;
+牢 > prison;
+绝 > to\-cut;
+选 > choose;
+复 > return;
+星 > a\-star;
+爺 > father;
+訴 > accuse;
+訟 > accuse;
+妈 > mother;
+爛 > rotten;
+記 > record;
+消 > vanish;
+娘 > mother;
+燭 > candle;
+姫 > beauty;
+杨 > willow;
+易 > change;
+严 > strict;
+熊 > a\-bear;
+妄 > absurd;
+纪 > record;
+苏 > revive;
+答 > answer;
+奮 > strive;
+煩 > bother;
+襤 > ragged;
+击 > strike;
+朋 > friend;
+供 > supply;
+央 > center;
+列 > a\-line;
+焦 > burned;
+爷 > father;
+龙 > dragon;
+褒 > praise;
+夏 > summer;
+変 > change;
+春 > spring;
+複 > repeat;
+灵 > spirit;
+裡 > inside;
+诉 > accuse;
+态 > manner;
+裏 > inside;
+质 > matter;
+袖 > sleeve;
+园 > garden;
+袋 > pocket;
+副 > assist;
+够 > enough;
+获 > obtain;
+诗 > poetry;
+街 > street;
+報 > report;
+激 > arouse;
+银 > silver;
+阵 > column;
+层 > storey;
+亮 > bright;
+简 > simple;
+毒 > poison;
+归 > return;
+换 > change;
+湖 > a\-lake;
+蝉 > cicada;
+追 > pursue;
+鼬 > weasel;
+络 > enmesh;
+漠 > desert;
+蜘 > spider;
+團 > sphere;
+占 > divine;
+圓 > circle;
+園 > garden;
+赶 > pursue;
+兰 > orchid;
+國 > nation;
+圃 > garden;
+源 > spring;
+団 > sphere;
+阶 > stairs;
+蛛 > spider;
+黙 > silent;
+伸 > extend;
+默 > silent;
+佛 > buddha;
+嚴 > strict;
+挥 > direct;
+效 > result;
+攻 > attack;
+策 > scheme;
+防 > defend;
+股 > thighs;
+蘭 > orchid;
+莫 > do\-not;
+嘘 > exhale;
+县 > county;
+蘇 > revive;
+窗 > window;
+添 > append;
+混 > to\-mix;
+鷲 > condor;
+博 > gamble;
+弹 > pellet;
+藤 > rattan;
+坏 > rotten;
+智 > wisdom;
+岛 > island;
+抗 > resist;
+喰 > to\-eat;
+單 > single;
+爹 > father;
+喧 > lively;
+喉 > throat;
+爸 > father;
+浚 > dredge;
+逃 > escape;
+骂 > accuse;
+唸 > recite;
+靖 > pacify;
+秘 > secret;
+财 > wealth;
+欲 > desire;
+征 > invade;
+秋 > autumn;
+吸 > inhale;
+鳩 > pigeon;
+員 > member;
+悲 > sorrow;
+泉 > spring;
+桥 > bridge;
+劲 > strong;
+咽 > throat;
+蒻 > rushes;
+库 > armory;
+借 > borrow;
+決 > decide;
+董 > direct;
+葡 > grapes;
+汚 > filthy;
+控 > accuse;
+胸 > breast;
+课 > lesson;
+邮 > postal;
+吝 > stingy;
+横 > across;
+健 > strong;
+萎 > wither;
+萄 > grapes;
+圆 > circle;
+卷 > scroll;
+菫 > celery;
+择 > select;
+恨 > hatred;
+竹 > bamboo;
+菓 > fruits;
+宫 > palace;
+旗 > banner;
+殻 > casing;
+厳 > strict;
+殘 > injure;
+残 > injure;
+歸 > return;
+稳 > stable;
+迹 > traces;
+针 > needle;
+替 > change;
+卑 > humble;
+悄 > silent;
+奋 > strive;
+櫻 > cherry;
+弃 > reject;
+烦 > bother;
+抵 > resist;
+码 > number;
+励 > strive;
+紫 > purple;
+拔 > uproot;
+芝 > sesame;
+梁 > bridge;
+赏 > reward;
+劃 > divide;
+插 > insert;
+驢 > donkey;
+冬 > winter;
+扩 > expand;
+橘 > orange;
+橋 > bridge;
+逼 > compel;
+騷 > harass;
+刹 > temple;
+镜 > mirror;
+污 > filthy;
+標 > a\-mark;
+狱 > prison;
+騒 > harass;
+舌 > tongue;
+森 > forest;
+興 > thrive;
+槽 > trough;
+怨 > hatred;
+臼 > mortar;
+伏 > crouch;
+愤 > resent;
+俄 > sudden;
+凍 > freeze;
+槌 > hammer;
+稍 > little;
+籍 > record;
+侵 > invade;
+阻 > impede;
+慧 > bright;
+饑 > starve;
+晃 > bright;
+腑 > bowels;
+烂 > rotten;
+兎 > rabbit;
+腋 > armpit;
+尸 > corpse;
+椿 > father;
+儘 > utmost;
+崇 > esteem;
+餓 > hungry;
+椎 > hammer;
+棺 > coffin;
+粉 > powder;
+盾 > shield;
+飢 > hunger;
+轰 > rumble;
+奸 > crafty;
+邦 > nation;
+棄 > reject;
+饿 > hungry;
+捕 > arrest;
+傳 > summon;
+梯 > ladder;
+挣 > strive;
+聘 > engage;
+條 > clause;
+耐 > endure;
+梃 > a\-club;
+顫 > shiver;
+桜 > cherry;
+闷 > gloomy;
+願 > desire;
+悔 > repent;
+邀 > invite;
+颤 > shiver;
+頬 > cheeks;
+頤 > cheeks;
+患 > suffer;
+丐 > beggar;
+柱 > pillar;
+柚 > pomelo;
+翌 > bright;
+柄 > handle;
+侮 > insult;
+铜 > copper;
+枕 > pillow;
+罹 > sorrow;
+罵 > accuse;
+杵 > pestle;
+敲 > strike;
+靡 > divide;
+扯 > rip\-up;
+鉴 > mirror;
+趋 > hasten;
+佐 > assist;
+逊 > humble;
+靈 > spirit;
+朴 > simple;
+札 > letter;
+伝 > summon;
+伎 > talent;
+串 > string;
+霊 > spirit;
+雲 > clouds;
+熙 > bright;
+庙 > temple;
+仏 > buddha;
+雌 > female;
+雇 > employ;
+隨 > follow;
+際 > border;
+階 > stairs;
+隅 > corner;
+酷 > strong;
+乳 > breast;
+稣 > revive;
+陣 > column;
+繕 > repair;
+昭 > bright;
+棉 > cotton;
+搜 > search;
+縛 > to\-tie;
+谅 > excuse;
+烛 > candle;
+呈 > submit;
+線 > thread;
+拓 > expand;
+敦 > esteem;
+數 > number;
+敷 > spread;
+統 > govern;
+脾 > spleen;
+絡 > enmesh;
+紳 > girdle;
+鹰 > falcon;
+約 > treaty;
+紀 > record;
+愚 > stupid;
+糞 > manure;
+粧 > toilet;
+撃 > strike;
+饥 > hunger;
+鑒 > mirror;
+逻 > patrol;
+簡 > simple;
+鏡 > mirror;
+換 > change;
+採 > gather;
+帕 > turban;
+冻 > freeze;
+谦 > humble;
+捜 > search;
+丫 > forked;
+煌 > bright;
+挿 > insert;
+拐 > kidnap;
+荐 > repeat;
+倪 > feeble;
+錐 > gimlet;
+骚 > harass;
+寞 > silent;
+篮 > basket;
+侄 > nephew;
+拙 > stupid;
+叉 > crotch;
+怖 > terror;
+抜 > uproot;
+窓 > window;
+抉 > choose;
+銅 > copper;
+銀 > silver;
+谜 > riddle;
+颁 > confer;
+颊 > cheeks;
+咕 > mumble;
+舵 > rudder;
+惩 > punish;
+咖 > coffee;
+針 > needle;
+應 > should;
+尹 > govern;
+憤 > resent;
+淳 > honest;
+猴 > monkey;
+弦 > string;
+缚 > to\-tie;
+態 > manner;
+慄 > shiver;
+陋 > narrow;
+郵 > postal;
+窄 > narrow;
+驴 > donkey;
+壳 > casing;
+霉 > mildew;
+芦 > rushes;
+胳 > armpit;
+悼 > grieve;
+悶 > gloomy;
+逍 > ramble;
+悴 > suffer;
+耍 > frolic;
+粪 > manure;
+捆 > tie\-up;
+選 > choose;
+遜 > humble;
+兔 > rabbit;
+遊 > wander;
+逛 > ramble;
+匈 > breast;
+讽 > recite;
+拣 > choose;
+耿 > bright;
+廿 > twenty;
+诵 > recite;
+腻 > greasy;
+缆 > hawser;
+鞑 > tatars;
+氓 > people;
+慷 > ardent;
+篷 > awning;
+荆 > thorns;
+膏 > grease;
+鞍 > saddle;
+鸠 > pigeon;
+缕 > thread;
+睬 > notice;
+绥 > soothe;
+氧 > oxygen;
+婷 > pretty;
+姬 > beauty;
+吭 > throat;
+凿 > chisel;
+捂 > resist;
+巫 > wizard;
+虾 > shrimp;
+绅 > girdle;
+镶 > insert;
+颐 > cheeks;
+删 > to\-cut;
+讼 > accuse;
+伶 > lonely;
+炯 > bright;
+鸽 > pigeon;
+渝 > change;
+椒 > pepper;
+揖 > salute;
+冉 > tender;
+咙 > throat;
+踱 > stroll;
+猬 > vulgar;
+屿 > island;
+俐 > smooth;
+褂 > jacket;
+糙 > coarse;
+闸 > sluice;
+颓 > ruined;
+屉 > drawer;
+芹 > celery;
+锥 > gimlet;
+刁 > tricky;
+曙 > bright;
+洼 > hollow;
+皓 > bright;
+蒜 > garlic;
+炳 > bright;
+渣 > refuse;
+慑 > afraid;
+樱 > cherry;
+忏 > regret;
+碾 > roller;
+疙 > pimple;
+漉 > filter;
+隧 > tunnel;
+酥 > butter;
+钮 > button;
+隘 > narrow;
+漱 > gargle;
+盔 > helmet;
+磋 > polish;
+惴 > afraid;
+蕉 > banana;
+惋 > regret;
+痰 > phlegm;
+羁 > halter;
+诏 > decree;
+靶 > target;
+酝 > liquor;
+柬 > letter;
+亵 > slight;
+貂 > marten;
+聆 > listen;
+毋 > do\-not;
+韬 > sheath;
+鹊 > magpie;
+敖 > ramble;
+膺 > breast;
+悚 > afraid;
+卅 > thirty;
+徵 > summon;
+碳 > carbon;
+懵 > stupid;
+鹫 > condor;
+硫 > sulfur;
+踞 > crouch;
+镰 > sickle;
+涎 > saliva;
+壕 > trench;
+锚 > anchor;
+钠 > sodium;
+睿 > shrewd;
+莺 > oriole;
+蛊 > poison;
+烨 > bright;
+胯 > pelvis;
+跻 > ascend;
+鳖 > turtle;
+腼 > modest;
+橙 > orange;
+丞 > assist;
+娓 > comply;
+刎 > behead;
+蹙 > urgent;
+胚 > embryo;
+荔 > lichee;
+铿 > strike;
+锵 > tinkle;
+茧 > cocoon;
+蟒 > python;
+褴 > ragged;
+鹃 > cuckoo;
+猥 > vulgar;
+獗 > unruly;
+蒯 > a\-rush;
+沏 > infuse;
+峪 > valley;
+嚏 > sneeze;
+砾 > gravel;
+馁 > hungry;
+佟 > a\-name;
+茜 > madder;
+扈 > escort;
+咛 > enjoin;
+泗 > mucous;
+胄 > helmet;
+锹 > shovel;
+鹗 > osprey;
+儡 > puppet;
+皈 > follow;
+螂 > mantis;
+苓 > fungus;
+媛 > beauty;
+箴 > needle;
+叵 > cannot;
+仃 > lonely;
+杞 > willow;
+寮 > shanty;
+缮 > repair;
+犷 > fierce;
+沱 > rivers;
+厩 > stable;
+疡 > ulcers;
+垓 > border;
+徕 > induce;
+槁 > wither;
+遴 > select;
+圻 > border;
+龊 > narrow;
+龌 > narrow;
+遨 > ramble;
+骛 > gallop;
+徉 > wonder;
+谪 > charge;
+俚 > rustic;
+锨 > shovel;
+锃 > polish;
+俪 > spouse;
+锲 > sickle;
+祚 > throne;
+臾 > moment;
+遒 > strong;
+囹 > prison;
+嬴 > to\-win;
+烩 > ragout;
+圄 > prison;
+螫 > poison;
+铤 > ingots;
+螳 > mantis;
+茁 > sprout;
+舢 > sampan;
+芾 > flower;
+狲 > monkey;
+碜 > gritty;
+僭 > assume;
+碘 > iodine;
+烯 > alkene;
+囿 > pen\-up;
+囫 > entire;
+褡 > girdle;
+镍 > nickel;
+煜 > bright;
+橐 > a\-sack;
+杷 > loquat;
+恹 > feeble;
+彀 > enough;
+聒 > clamor;
+羯 > wether;
+粲 > polish;
+枇 > loquat;
+秣 > fodder;
+樽 > goblet;
+楹 > column;
+焖 > simmer;
+睑 > eyelid;
+轳 > pulley;
+殚 > utmost;
+镭 > radium;
+殄 > to\-end;
+诰 > inform;
+鹄 > target;
+莅 > attend;
+谟 > scheme;
+讫 > finish;
+珲 > bright;
+淬 > temper;
+嘬 > to\-lap;
+佶 > strong;
+晔 > bright;
+舛 > oppose;
+烷 > alkane;
+蛎 > oyster;
+焱 > flames;
+蜥 > lizard;
+圜 > circle;
+蜴 > lizard;
+葺 > thatch;
+戆 > stupid;
+嬷 > mother;
+恽 > devise;
+蓿 > clover;
+瘌 > severe;
+喱 > gramme;
+钴 > cobalt;
+岙 > island;
+貉 > badger;
+繇 > reason;
+蜉 > mayfly;
+疖 > pimple;
+纾 > loosen;
+鲑 > salmon;
+娈 > lovely;
+荨 > nettle;
+竦 > revere;
+狒 > baboon;
+撄 > oppose;
+蘼 > millet;
+茴 > fennel;
+鲦 > minnow;
+渌 > strain;
+阚 > glance;
+苜 > clover;
+偬 > urgent;
+珐 > enamel;
+靛 > indigo;
+黧 > a\-dark;
+碇 > anchor;
+蠓 > midges;
+橼 > citrus;
+蕞 > little;
+圯 > bridge;
+魍 > demons;
+翊 > flying;
+镏 > distil;
+碓 > pestle;
+胼 > callus;
+挈 > assist;
+犏 > yak\-ox;
+悛 > repent;
+勖 > enjoin;
+籀 > recite;
+碚 > suburb;
+腭 > palate;
+鳟 > barbel;
+雎 > osprey;
+殂 > to\-die;
+筚 > wicker;
+疝 > hernia;
+骀 > an\-old;
+蒗 > \(herb\);
+葸 > afraid;
+菟 > dodder;
+陉 > defile;
+筲 > basket;
+疠 > a\-sore;
+畛 > border;
+旰 > sunset;
+芪 > celery;
+谖 > forget;
+敉 > pacify;
+聍 > earwax;
+锇 > osmium;
+烀 > simmer;
+婧 > modest;
+菘 > celery;
+钡 > barium;
+蝣 > mayfly;
+蚵 > oyster;
+襻 > a\-loop;
+铒 > erbium;
+铈 > cerium;
+椴 > poplar;
+嬲 > frolic;
+苡 > barley;
+舄 > a\-shoe;
+蝾 > lizard;
+蜩 > cicada;
+鸫 > thrush;
+锔 > curium;
+铟 > indium;
+眍 > sunken;
+牖 > window;
+榇 > coffin;
+桷 > rafter;
+幞 > turban;
+帻 > turban;
+圉 > stable;
+摅 > spread;
+苄 > benzyl;
+陔 > a\-step;
+刿 > to\-cut;
+骶 > coccyx;
+鲻 > mullet;
+螨 > insect;
+虼 > a\-flea;
+瘕 > asthma;
+镘 > trowel;
+磙 > roller;
+胂 > arsine;
+觋 > wizard;
+蓥 > polish;
+菔 > turnip;
+仡 > strong;
+龞 > turtle;
+龝 > autumn;
+龍 > dragon;
+齷 > narrow;
+齶 > palate;
+齵 > uneven;
+齪 > narrow;
+鼫 > marmot;
+鼪 > weasel;
+鼔 > a\-drum;
+鼅 > spider;
+黌 > school;
+黉 > school;
+黈 > yellow;
+黃 > yellow;
+麰 > barley;
+麄 > coarse;
+鹨 > anthus;
+鷚 > anthus;
+鷇 > chicks;
+鶽 > a\-hawk;
+鶸 > siskin;
+鶯 > oriole;
+鶬 > oriole;
+鶫 > thrush;
+鶚 > osprey;
+鶊 > oriole;
+鶇 > thrush;
+鵻 > pigeon;
+鵲 > magpie;
+鵠 > target;
+鵑 > cuckoo;
+鵀 > hoopoe;
+鴿 > pigeon;
+鴬 > oriole;
+鴢 > \(duck\);
+鴃 > shrike;
+鱒 > barbel;
+鱎 > \(fish\);
+鱉 > turtle;
+鱆 > poulpe;
+鰷 > minnow;
+鰕 > shrimp;
+鯔 > mullet;
+鮭 > salmon;
+魵 > shrimp;
+驫 > horses;
+騤 > lively;
+騖 > gallop;
+騃 > stupid;
+駡 > accuse;
+駘 > an\-old;
+駓 > gallop;
+駃 > gallop;
+馿 > an\-ass;
+餤 > incite;
+餒 > hungry;
+顜 > honest;
+顒 > solemn;
+顑 > yellow;
+頽 > ruined;
+頹 > ruined;
+頰 > cheeks;
+頞 > bridge;
+頒 > confer;
+頉 > cheeks;
+韜 > sheath;
+韃 > tatars;
+鞞 > sheath;
+鞚 > bridle;
+靮 > bridle;
+雂 > \(bird\);
+隻 > single;
+陬 > corner;
+陜 > narrow;
+陘 > defile;
+闞 > glance;
+闉 > curved;
+閘 > sluice;
+镡 > dagger;
+铯 > cesium;
+鑿 > chisel;
+鑲 > insert;
+鑞 > solder;
+鑑 > mirror;
+鑀 > ionium;
+鐳 > radium;
+鐮 > sickle;
+鐝 > a\-pick;
+鐔 > dagger;
+鏝 > trowel;
+鏘 > tinkle;
+鏗 > strike;
+鎳 > nickel;
+鎦 > distil;
+鎣 > polish;
+鎚 > hammer;
+鎒 > to\-hoe;
+鎌 > sickle;
+鎅 > to\-saw;
+鍼 > needle;
+鍬 > shovel;
+鍫 > shovel;
+鍥 > sickle;
+鍠 > weapon;
+錩 > vessel;
+錨 > anchor;
+鋨 > osmium;
+鋦 > curium;
+鋙 > misfit;
+鋌 > ingots;
+鋇 > barium;
+鋅 > zincum;
+銶 > chisel;
+銲 > solder;
+銫 > cesium;
+銦 > indium;
+鉺 > erbium;
+鉥 > needle;
+鈷 > cobalt;
+鈰 > cerium;
+鈕 > button;
+鈉 > sodium;
+釬 > solder;
+釦 > button;
+釐 > manage;
+釃 > strain;
+醞 > liquor;
+醖 > liquor;
+酾 > strain;
+酴 > leaven;
+鄋 > county;
+邏 > patrol;
+逰 > wander;
+逥 > return;
+逎 > strong;
+逌 > please;
+迯 > escape;
+迍 > falter;
+迋 > travel;
+辧 > manage;
+辦 > manage;
+辢 > bitter;
+轤 > pulley;
+轜 > hearse;
+轀 > hearse;
+輀 > hearse;
+軣 > rumble;
+躧 > sandal;
+躋 > ascend;
+蹻 > strong;
+蹝 > sandal;
+蹓 > stroll;
+踡 > curled;
+跧 > crouch;
+趫 > nimble;
+趨 > hasten;
+趕 > pursue;
+贳 > borrow;
+賞 > reward;
+貭 > matter;
+貪 > greedy;
+貟 > member;
+貛 > badger;
+豻 > prison;
+谿 > valley;
+讚 > praise;
+讁 > punish;
+譟 > clamor;
+譍 > answer;
+譆 > scream;
+謫 > charge;
+謨 > scheme;
+諼 > forget;
+諷 > recite;
+諵 > mutter;
+諒 > excuse;
+誦 > recite;
+誥 > inform;
+詻 > orders;
+詗 > to\-spy;
+詔 > decree;
+訖 > finish;
+觼 > buckle;
+觩 > strong;
+觧 > loosen;
+觕 > coarse;
+覰 > to\-spy;
+覡 > wizard;
+覊 > halter;
+襮 > collar;
+襋 > collar;
+褦 > stupid;
+褏 > sleeve;
+褎 > sleeve;
+袚 > greave;
+蠱 > poison;
+蠩 > a\-toad;
+蠣 > oyster;
+蠙 > oyster;
+蠔 > oyster;
+蠑 > lizard;
+蠎 > python;
+蠁 > larvae;
+蟷 > mantis;
+蟬 > cicada;
+蟜 > insect;
+蝦 > shrimp;
+蜋 > mantis;
+蛯 > shrimp;
+蛣 > beetle;
+蛌 > cricke;
+虩 > fright;
+虖 > to\-cry;
+蘤 > flower;
+蘆 > rushes;
+藘 > madder;
+薿 > flower;
+薗 > garden;
+薑 > ginger;
+蕆 > finish;
+蕂 > sesame;
+蕁 > nettle;
+蔙 > \(herb\);
+蔔 > radish;
+蔂 > basket;
+蔀 > screen;
+蓚 > oxalic;
+蒎 > pinane;
+蒇 > finish;
+葁 > ginger;
+萅 > spring;
+菆 > jungle;
+莵 > dodder;
+荊 > thorns;
+荁 > celery;
+茦 > thorns;
+茢 > sedges;
+苪 > bright;
+苢 > barley;
+芤 > hollow;
+艢 > a\-mast;
+舦 > rudder;
+舃 > a\-shoe;
+臄 > palate;
+膩 > greasy;
+膣 > vagina;
+膕 > hollow;
+腯 > strong;
+腟 > vagina;
+腁 > callus;
+脷 > tongue;
+脵 > thighs;
+脧 > reduce;
+胹 > cooked;
+胷 > breast;
+肧 > embryo;
+肐 > armpit;
+聹 > earwax;
+耤 > plough;
+羵 > spirit;
+羈 > halter;
+罫 > hinder;
+罥 > impete;
+罣 > hinder;
+纩 > cotton;
+纜 > hawser;
+纔 > talent;
+纊 > cotton;
+繭 > cocoon;
+繫 > attach;
+繨 > a\-knot;
+繋 > attach;
+縷 > thread;
+縣 > county;
+縡 > matter;
+縆 > a\-rope;
+緪 > a\-rope;
+綏 > soothe;
+綅 > thread;
+絿 > urgent;
+絚 > a\-rope;
+紲 > bridle;
+紩 > to\-sew;
+紟 > a\-sash;
+紘 > string;
+紓 > loosen;
+紃 > a\-cord;
+糨 > starch;
+糡 > starch;
+籲 > appeal;
+籚 > bamboo;
+籃 > basket;
+簜 > bamboo;
+簉 > deputy;
+篳 > wicker;
+篥 > bulgle;
+篜 > bamboo;
+箙 > quiver;
+笲 > basket;
+竜 > dragon;
+竉 > a\-hole;
+窪 > hollow;
+窔 > corner;
+穩 > stable;
+穨 > ruined;
+穌 > revive;
+穈 > millet;
+稜 > corner;
+秠 > millet;
+禦 > defend;
+祏 > shrine;
+礫 > gravel;
+磣 > gritty;
+碼 > number;
+硾 > weight;
+硍 > strike;
+矴 > anchor;
+矇 > stupid;
+瞷 > to\-spy;
+睪 > spy\-on;
+睆 > bright;
+眾 > masses;
+盩 > callus;
+皥 > bright;
+皡 > bright;
+皞 > bright;
+皀 > kernel;
+癤 > pimple;
+癘 > a\-sore;
+瘍 > ulcers;
+痻 > suffer;
+痚 > asthma;
+疉 > repeat;
+疃 > hamlet;
+疂 > repeat;
+畽 > ground;
+畯 > rustic;
+畟 > plough;
+琿 > bright;
+琺 > enamel;
+珔 > \(jade\);
+玓 > pearly;
+獷 > fierce;
+獉 > jungle;
+猻 > monkey;
+猺 > jackal;
+猓 > monkey;
+狥 > follow;
+犺 > animal;
+牕 > window;
+牓 > tablet;
+牐 > sluice;
+爥 > simmer;
+爚 > bright;
+燴 > ragout;
+燡 > bright;
+燜 > simmer;
+燋 > scorch;
+燁 > bright;
+熲 > bright;
+熈 > bright;
+煕 > bright;
+煃 > remove;
+煁 > hearth;
+焻 > breath;
+焴 > bright;
+焠 > temper;
+烺 > bright;
+烱 > bright;
+炁 > breath;
+瀒 > coarse;
+瀌 > plenty;
+濵 > a\-bank;
+濬 > dredge;
+澼 > bleach;
+潨 > gather;
+潀 > gather;
+漦 > saliva;
+渨 > a\-cove;
+淥 > strain;
+淟 > turbid;
+洟 > snivel;
+泭 > a\-raft;
+汙 > filthy;
+氿 > spring;
+氫 > amonia;
+殼 > casing;
+殫 > utmost;
+欻 > sudden;
+欑 > gather;
+櫬 > coffin;
+櫞 > citrus;
+櫜 > quiver;
+橰 > a\-spar;
+橫 > across;
+橤 > stamen;
+橜 > a\-post;
+橕 > a\-prop;
+樿 > coffin;
+樸 > simple;
+樲 > jujube;
+樑 > bridge;
+槥 > coffin;
+榲 > pillar;
+榱 > rafter;
+榥 > screen;
+榅 > pillar;
+楯 > shield;
+楬 > tablet;
+楢 > tinder;
+楛 > coarse;
+楊 > willow;
+椧 > gutter;
+椓 > strike;
+棜 > branch;
+棅 > handle;
+棃 > a\-pear;
+桲 > quince;
+柲 > handle;
+杴 > shovel;
+杇 > loquat;
+朙 > bright;
+曡 > repeat;
+曍 > bright;
+曅 > bright;
+曄 > bright;
+曀 > stormy;
+暻 > bright;
+暸 > bright;
+暲 > bright;
+暋 > strong;
+晜 > insect;
+晄 > bright;
+昺 > bright;
+昞 > bright;
+昑 > bright;
+旻 > heaven;
+旝 > banner;
+敹 > to\-sew;
+敡 > rebuke;
+敃 > strong;
+敂 > deduct;
+攖 > oppose;
+攄 > spread;
+擽 > tickle;
+擴 > expand;
+擖 > scrape;
+擓 > to\-rub;
+擊 > strike;
+擇 > select;
+撦 > rip\-up;
+撊 > fierce;
+搿 > to\-hug;
+揷 > insert;
+揮 > direct;
+揗 > strike;
+揀 > choose;
+掤 > quiver;
+掔 > sturdy;
+捽 > clutch;
+捼 > to\-rub;
+捓 > strive;
+捃 > gather;
+拡 > expand;
+択 > select;
+扐 > divine;
+扆 > screen;
+戝 > pirate;
+戇 > stupid;
+懾 > afraid;
+懺 > regret;
+懴 > regret;
+懲 > punish;
+懨 > feeble;
+憦 > regret;
+愽 > gamble;
+愬 > accuse;
+惲 > devise;
+惪 > ethics;
+惎 > injure;
+悳 > ethics;
+悧 > smooth;
+悞 > impede;
+悋 > stingy;
+恡 > stingy;
+恟 > scared;
+忰 > suffer;
+徠 > induce;
+彴 > bridge;
+弣 > middle;
+廽 > return;
+廟 > temple;
+廐 > stable;
+廏 > stable;
+廆 > a\-room;
+廄 > stable;
+廁 > toilet;
+幘 > turban;
+巤 > a\-mane;
+巘 > summit;
+嶼 > island;
+嶴 > island;
+嶓 > boshan;
+嶌 > island;
+嶋 > island;
+嵾 > uneven;
+崿 > cliffs;
+崟 > cliffs;
+岨 > uneven;
+岀 > go\-out;
+屮 > sprout;
+屜 > drawer;
+尅 > subdue;
+尀 > cannot;
+寜 > repose;
+寕 > repose;
+寎 > drowsy;
+宧 > corner;
+孾 > a\-baby;
+孌 > lovely;
+嬿 > lovely;
+嬤 > mother;
+嬃 > sister;
+嫪 > hanker;
+嫐 > frolic;
+媽 > mother;
+媖 > beauty;
+婼 > person;
+婤 > lovely;
+娬 > lovely;
+娒 > matron;
+姁 > beauty;
+妸 > person;
+夬 > parted;
+夠 > enough;
+夆 > resist;
+壿 > goblet;
+墠 > smooth;
+堧 > adjoin;
+堦 > stairs;
+堉 > ground;
+圞 > entire;
+圝 > entire;
+圎 > circle;
+圀 > nation;
+囘 > return;
+嚿 > a\-lump;
+嚨 > throat;
+嚔 > sneeze;
+嚃 > gobble;
+嚀 > enjoin;
+噚 > fathom;
+噓 > exhale;
+噏 > inhale;
+嗿 > gobble;
+喆 > a\-sage;
+啉 > stupid;
+唫 > to\-hum;
+唈 > to\-sob;
+哤 > jargon;
+哋 > plural;
+咈 > oppose;
+呮 > to\-sit;
+呏 > gallon;
+叡 > astute;
+叓 > affair;
+厎 > settle;
+卄 > twenty;
+匃 > beggar;
+勷 > urgent;
+勵 > strive;
+勗 > enjoin;
+勑 > reward;
+勍 > strong;
+勄 > active;
+勁 > strong;
+劤 > strong;
+劌 > to\-cut;
+劆 > sickle;
+剎 > temple;
+剋 > subdue;
+刪 > to\-cut;
+凞 > bright;
+凓 > shiver;
+冑 > helmet;
+冄 > tender;
+兲 > heaven;
+內 > inside;
+儸 > bandit;
+儷 > spouse;
+僱 > employ;
+僬 > clever;
+僣 > assume;
+傯 > urgent;
+傮 > finish;
+傎 > topple;
+偪 > compel;
+偩 > follow;
+偨 > uneven;
+偖 > rip\-up;
+倆 > clever;
+倅 > deputy;
+倃 > damage;
+俵 > divide;
+侷 > narrow;
+佈 > spread;
+伾 > mighty;
+伜 > deputy;
+仚 > to\-fly;
+亊 > affair;
+亄 > greedy;
+乚 > hidden;
+乂 > govern;
+丗 > thirty;
+䶮 > clever;
+䶁 > noises;
+䵧 > to\-dye;
+䵙 > sticky;
+䵐 > yellow;
+䵏 > yellow;
+䵍 > yellow;
+䵋 > yellow;
+䵊 > yellow;
+䴥 > a\-stag;
+䳾 > an\-owl;
+䳏 > cuckoo;
+䳇 > parrot;
+䲹 > ospery;
+䲧 > cuckoo;
+䲌 > a\-fish;
+䱕 > labrus;
+䱑 > a\-fish;
+䱏 > a\-fish;
+䱃 > a\-fish;
+䱂 > a\-fish;
+䰷 > a\-fish;
+䰣 > an\-elf;
+䯫 > bright;
+䯨 > to\-rap;
+䯝 > marrow;
+䯜 > marrow;
+䯃 > saddle;
+䯁 > a\-mule;
+䭪 > grains;
+䭥 > a\-bait;
+䭝 > to\-eat;
+䭚 > to\-eat;
+䭒 > breath;
+䭌 > congee;
+䭈 > congee;
+䬸 > a\-meal;
+䬑 > a\-gale;
+䬐 > breeze;
+䬊 > a\-gale;
+䬈 > breeze;
+䬇 > breeze;
+䬅 > a\-gale;
+䬄 > breeze;
+䬂 > breeze;
+䫾 > breeze;
+䫽 > breeze;
+䫼 > breeze;
+䫬 > to\-bow;
+䪸 > strong;
+䪤 > garlic;
+䩯 > urgent;
+䩭 > halter;
+䨾 > hidden;
+䨺 > cloudy;
+䨸 > cloudy;
+䨯 > cloudy;
+䨟 > puddle;
+䨉 > parrot;
+䨇 > a\-pair;
+䧴 > a\-bird;
+䧳 > female;
+䧥 > border;
+䧛 > beside;
+䧑 > a\-dike;
+䥪 > to\-cup;
+䥨 > a\-file;
+䥠 > needle;
+䥍 > a\-whip;
+䣦 > to\-cut;
+䣘 > a\-hall;
+䣈 > a\-lane;
+䢽 > a\-lane;
+䠰 > coiled;
+䠤 > toddle;
+䠙 > urgent;
+䠎 > narrow;
+䠇 > strong;
+䟱 > traces;
+䟟 > urgent;
+䟒 > coiled;
+䝜 > a\-lion;
+䝄 > cowpea;
+䜞 > a\-dose;
+䛧 > riddle;
+䛥 > speech;
+䛣 > speech;
+䛜 > to\-ask;
+䛑 > silent;
+䛈 > to\-vow;
+䚺 > ballad;
+䚈 > to\-see;
+䚆 > to\-see;
+䚂 > to\-see;
+䚁 > to\-see;
+䙿 > to\-see;
+䙽 > to\-see;
+䙼 > to\-see;
+䙵 > rustic;
+䙡 > a\-knot;
+䙌 > a\-knot;
+䘰 > a\-hood;
+䘬 > armour;
+䘩 > collar;
+䘌 > gadfly;
+䘈 > oyster;
+䗫 > a\-frog;
+䖹 > weevil;
+䖮 > larvae;
+䖫 > oyster;
+䖨 > mantis;
+䖗 > strong;
+䖁 > number;
+䕬 > ginger;
+䕨 > rattan;
+䔯 > salted;
+䔢 > cathay;
+䔏 > a\-lush;
+䓧 > urgent;
+䓦 > a\-rule;
+䓅 > celery;
+䓄 > grassy;
+䒹 > grassy;
+䒫 > grassy;
+䒉 > a\-long;
+䒂 > an\-oar;
+䑺 > a\-sail;
+䑴 > a\-boat;
+䑱 > a\-boat;
+䑯 > a\-boat;
+䑨 > rudder;
+䑦 > a\-boat;
+䑤 > a\-boat;
+䑐 > bright;
+䐦 > sleepy;
+䐥 > stinky;
+䏪 > tendon;
+䏣 > maggot;
+䏂 > clever;
+䎱 > a\-drag;
+䎬 > a\-drag;
+䎙 > flying;
+䎗 > flying;
+䎓 > flying;
+䎊 > flying;
+䎈 > flying;
+䎆 > flying;
+䎅 > flying;
+䎀 > flying;
+䍾 > flying;
+䍬 > to\-use;
+䍋 > bottle;
+䍈 > bottle;
+䍃 > a\-vase;
+䌴 > uneven;
+䌱 > uneven;
+䌜 > to\-sew;
+䌕 > to\-tie;
+䋲 > a\-rope;
+䋑 > to\-tie;
+䋐 > fabric;
+䋌 > strong;
+䊧 > a\-fart;
+䊥 > congee;
+䊛 > shreds;
+䊎 > powder;
+䊆 > cooked;
+䉶 > a\-sail;
+䈺 > bamboo;
+䈴 > a\-cage;
+䈎 > a\-leaf;
+䇥 > narrow;
+䇢 > bamboo;
+䇟 > tendon;
+䇚 > to\-tap;
+䇁 > a\-cave;
+䆽 > a\-hole;
+䆼 > a\-nest;
+䆻 > a\-hole;
+䆷 > a\-hole;
+䆰 > a\-cave;
+䆮 > to\-dip;
+䆫 > window;
+䆧 > a\-cave;
+䆡 > a\-cave;
+䆝 > a\-cave;
+䆙 > a\-kiln;
+䆓 > a\-hole;
+䅶 > to\-hoe;
+䅴 > grains;
+䅦 > feeble;
+䅇 > grains;
+䄹 > a\-year;
+䄲 > inside;
+䄭 > a\-year;
+䄘 > a\-rite;
+䄎 > pretty;
+䃥 > stones;
+䃖 > a\-bank;
+䃊 > to\-rub;
+䂷 > broken;
+䂴 > to\-rub;
+䂳 > gravel;
+䂝 > to\-rap;
+䂘 > pebble;
+䁿 > sleepy;
+䁦 > to\-see;
+䁖 > to\-see;
+䀒 > gloomy;
+䀍 > vessel;
+䀅 > vessel;
+㿾 > vessel;
+㿼 > a\-bowl;
+㿻 > a\-tray;
+㿭 > cracks;
+㿧 > fields;
+㿔 > a\-wart;
+㽷 > dropsy;
+㽵 > solemn;
+㼾 > bricks;
+㼥 > bottle;
+㼝 > a\-bowl;
+㼄 > pearls;
+㹌 > cattle;
+㸿 > a\-calf;
+㸙 > father;
+㷰 > flames;
+㷩 > bright;
+㷋 > embers;
+㷂 > bright;
+㶤 > to\-fry;
+㶈 > creeks;
+㵪 > saliva;
+㵝 > moving;
+㴞 > fluent;
+㴆 > to\-dip;
+㳌 > marshy;
+㱵 > to\-die;
+㱳 > lonely;
+㱱 > uneven;
+㱣 > uneven;
+㱞 > danger;
+㱙 > rotten;
+㱍 > to\-owe;
+㱂 > hungry;
+㱁 > to\-ask;
+㰍 > a\-cage;
+㰃 > a\-tree;
+㯾 > a\-tree;
+㯖 > a\-tree;
+㯏 > grains;
+㯎 > stupid;
+㯍 > an\-oar;
+㯉 > a\-tree;
+㯆 > a\-tree;
+㮿 > a\-tree;
+㮹 > a\-tree;
+㮷 > a\-tree;
+㮶 > a\-tree;
+㮳 > a\-tree;
+㮩 > a\-tree;
+㮧 > a\-tree;
+㮘 > a\-tree;
+㮖 > to\-lay;
+㮌 > cotton;
+㭱 > a\-case;
+㭋 > a\-club;
+㬯 > sunset;
+㬮 > gentle;
+㬍 > fierce;
+㫺 > bygone;
+㫸 > sunset;
+㫷 > behind;
+㫡 > winter;
+㫅 > a\-flag;
+㪹 > to\-rob;
+㪆 > hidden;
+㪄 > broken;
+㩾 > uneven;
+㩲 > a\-fist;
+㨾 > a\-type;
+㨻 > to\-cut;
+㨸 > to\-hit;
+㨩 > to\-win;
+㨥 > to\-hit;
+靖 > pacify;
+神 > spirit;
+益 > profit;
+凞 > bright;
+㨎 > to\-dye;
+㨅 > inside;
+拓 > expand;
+度 > degree;
+㧸 > to\-hit;
+林 > forest;
+㧳 > to\-mix;
+吝 > stingy;
+裡 > inside;
+裏 > inside;
+罹 > sorrow;
+㧧 > a\-comb;
+理 > reason;
+易 > change;
+慄 > shiver;
+硫 > sulfur;
+㧉 > to\-rub;
+龍 > dragon;
+寮 > shanty;
+靈 > spirit;
+聆 > listen;
+寧 > repose;
+囹 > prison;
+咽 > throat;
+列 > a\-line;
+㦔 > silkly;
+㦋 > absurd;
+㦊 > lavish;
+㦅 > uneasy;
+㦁 > to\-sob;
+勵 > strive;
+諒 > excuse;
+梁 > bridge;
+亮 > bright;
+㥭 > luxury;
+㥫 > honest;
+數 > number;
+復 > return;
+寧 > repose;
+㥟 > enmity;
+稜 > corner;
+陋 > narrow;
+縷 > thread;
+㥐 > hatred;
+㥈 > afraid;
+牢 > prison;
+論 > debate;
+㤻 > stupid;
+㤹 > hatred;
+㤸 > uneasy;
+蘆 > rushes;
+㤨 > scared;
+襤 > ragged;
+蘭 > orchid;
+爛 > rotten;
+邏 > patrol;
+㤓 > stupid;
+串 > string;
+㣭 > number;
+㣘 > spasms;
+㢽 > a\-bait;
+㢺 > string;
+㡮 > danger;
+㡣 > dragon;
+㡚 > armour;
+㡁 > a\-robe;
+㠶 > a\-sail;
+㠲 > ripped;
+㠀 > island;
+㟷 > a\-wart;
+㟫 > spring;
+㟥 > uneven;
+㟟 > a\-lane;
+㞸 > a\-year;
+㞇 > ulcers;
+㞂 > ulcers;
+㝹 > a\-hare;
+㝶 > to\-get;
+㝵 > to\-get;
+㝧 > stable;
+㝂 > locust;
+㝁 > lonely;
+㜫 > pretty;
+㜥 > crafty;
+㛹 > pretty;
+㚼 > a\-girl;
+㚻 > sodomy;
+㚹 > pretty;
+㚞 > terror;
+㚐 > a\-case;
+㚌 > a\-band;
+㙹 > a\-damp;
+㙶 > a\-hall;
+㙬 > a\-bank;
+㙝 > a\-dike;
+㙕 > a\-lump;
+㘴 > to\-sit;
+㘲 > a\-cove;
+㗷 > to\-eat;
+㗵 > breath;
+㗖 > to\-eat;
+㖒 > to\-cry;
+㖁 > stingy;
+㕠 > a\-pair;
+㕔 > a\-hall;
+㕂 > to\-hum;
+㔺 > an\-age;
+㔸 > a\-tray;
+㔜 > sudden;
+㔗 > strong;
+㔒 > to\-cut;
+㔐 > to\-cut;
+㔊 > to\-cut;
+㔉 > to\-dig;
+㔆 > to\-cut;
+㔅 > to\-cut;
+㓵 > swords;
+㓱 > to\-cut;
+㓪 > bright;
+㓠 > a\-flaw;
+㓅 > frozen;
+㒶 > public;
+㒵 > manner;
+㒲 > wealth;
+㒧 > a\-pair;
+㒠 > narrow;
+㑻 > strong;
+㑷 > manner;
+㑳 > clever;
+㑣 > stupid;
+㑇 > clever;
+㐹 > strong;
+石 > stone;
+短 > short;
+快 > rapid;
+在 > be\-at;
+他 > other;
+矢 > arrow;
+到 > go\-to;
+说 > speak;
+迅 > quick;
+地 > earth;
+心 > heart;
+下 > under;
+辭 > words;
+微 > small;
+家 > house;
+御 > drive;
+辞 > words;
+后 > queen;
+小 > small;
+待 > treat;
+还 > still;
+发 > issue;
+彫 > carve;
+想 > think;
+睡 > sleep;
+轉 > shift;
+所 > place;
+輪 > wheel;
+三 > three;
+輕 > light;
+式 > style;
+样 > shape;
+軽 > light;
+建 > build;
+延 > delay;
+盲 > blind;
+転 > shift;
+廣 > broad;
+声 > sound;
+工 > labor;
+盆 > basin;
+盃 > glass;
+正 > right;
+庸 > usual;
+女 > woman;
+力 > power;
+躑 > waver;
+因 > cause;
+重 > heavy;
+皇 > royal;
+庇 > cover;
+次 > order;
+広 > broad;
+口 > mouth;
+使 > cause;
+白 > white;
+幽 > quiet;
+教 > teach;
+發 > issue;
+再 > again;
+発 > issue;
+气 > steam;
+信 > trust;
+北 > north;
+蹲 > squat;
+蹟 > trace;
+由 > cause;
+却 > still;
+幅 > piece;
+入 > enter;
+先 > first;
+水 > water;
+处 > place;
+巷 > alley;
+笑 > smile;
+立 > stand;
+跪 > kneel;
+马 > horse;
+巨 > large;
+疑 > doubt;
+利 > gains;
+赴 > go\-to;
+光 > light;
+果 > fruit;
+赧 > blush;
+至 > reach;
+清 > clear;
+物 > thing;
+嵌 > inlay;
+甲 > armor;
+田 > field;
+许 > allow;
+八 > eight;
+崖 > cliff;
+崎 > rough;
+南 > south;
+色 > color;
+让 > allow;
+瓜 > melon;
+算 > count;
+賊 > thief;
+元 > first;
+貯 > store;
+思 > think;
+貨 > goods;
+岩 > cliff;
+每 > every;
+屬 > class;
+豪 > brave;
+属 > class;
+言 > words;
+权 > power;
+屋 > house;
+豆 > beans;
+七 > seven;
+尚 > still;
+尖 > sharp;
+转 > shift;
+射 > shoot;
+空 > empty;
+技 > skill;
+轻 > light;
+寺 > court;
+寫 > write;
+英 > petal;
+寢 > sleep;
+写 > write;
+寝 > sleep;
+寐 > sleep;
+密 > dense;
+寂 > still;
+钱 > money;
+容 > looks;
+宵 > night;
+设 > build;
+始 > begin;
+客 > guest;
+片 > slice;
+研 > grind;
+宇 > house;
+早 > early;
+房 > house;
+音 > sound;
+獻 > offer;
+獺 > otter;
+獸 > beast;
+譲 > allow;
+獨 > alone;
+警 > guard;
+獣 > beast;
+存 > exist;
+證 > proof;
+组 > class;
+謝 > thank;
+猜 > guess;
+嬉 > enjoy;
+黑 > black;
+謁 > visit;
+剑 > sword;
+独 > alone;
+乐 > happy;
+级 > level;
+説 > speak;
+举 > raise;
+证 > prove;
+照 > shine;
+誓 > swear;
+群 > group;
+晚 > night;
+誂 > tempt;
+詞 > words;
+伤 > wound;
+类 > class;
+欢 > happy;
+爽 > happy;
+势 > power;
+証 > prove;
+刻 > carve;
+断 > sever;
+夜 > night;
+許 > allow;
+設 > build;
+价 > price;
+脑 > brain;
+訪 > visit;
+规 > rules;
+娑 > dance;
+破 > break;
+泽 > marsh;
+燻 > smoke;
+紧 > tense;
+觸 > touch;
+装 > dress;
+急 > quick;
+河 > river;
+血 > blood;
+投 > throw;
+覆 > cover;
+右 > right;
+奴 > slave;
+刀 > knife;
+襟 > lapel;
+煙 > smoke;
+奉 > offer;
+喝 > drink;
+褸 > lapel;
+褪 > strip;
+卫 > guard;
+夢 > dream;
+错 > error;
+裾 > lapel;
+案 > table;
+烟 > smoke;
+裝 > dress;
+印 > print;
+壓 > press;
+烈 > fiery;
+壇 > altar;
+块 > piece;
+裂 > split;
+袴 > pants;
+墓 > grave;
+静 > quiet;
+炎 > flame;
+衷 > heart;
+灰 > ashes;
+衞 > guard;
+衛 > guard;
+速 > quick;
+塗 > smear;
+敌 > enemy;
+塔 > tower;
+谢 > thank;
+塊 > piece;
+怀 > bosom;
+养 > raise;
+罪 > crime;
+濶 > broad;
+蟲 > worms;
+濱 > beach;
+摘 > pluck;
+施 > grant;
+模 > model;
+草 > grass;
+濃 > thick;
+值 > price;
+濁 > muddy;
+班 > class;
+修 > study;
+味 > taste;
+澤 > marsh;
+织 > weave;
+龕 > niche;
+蝿 > flies;
+免 > spare;
+波 > waves;
+潔 > clean;
+洋 > ocean;
+劳 > labor;
+均 > equal;
+压 > press;
+奖 > prize;
+顿 > pause;
+漂 > float;
+判 > judge;
+素 > white;
+嘴 > mouth;
+担 > carry;
+板 > plank;
+钟 > clock;
+访 > visit;
+黒 > black;
+黐 > stick;
+蛇 > snake;
+构 > frame;
+溺 > drown;
+麦 > wheat;
+麥 > wheat;
+溝 > ditch;
+溜 > slide;
+肉 > flesh;
+纸 > paper;
+梦 > dream;
+虚 > false;
+蒙 > cover;
+處 > place;
+虎 > tiger;
+噌 > scold;
+杂 > mixed;
+怒 > anger;
+稿 > draft;
+渦 > swirl;
+渡 > cross;
+渠 > ditch;
+嘗 > taste;
+罢 > cease;
+鷺 > heron;
+鷹 > eagle;
+淹 > drown;
+藩 > fence;
+藥 > drugs;
+鲜 > fresh;
+置 > place;
+嗅 > smell;
+藁 > straw;
+鶴 > crane;
+枪 > spear;
+涯 > shore;
+薮 > marsh;
+薬 > drugs;
+薦 > offer;
+涜 > ditch;
+涙 > tears;
+配 > match;
+浴 > bathe;
+升 > arise;
+浜 > creek;
+蔽 > cover;
+词 > words;
+泪 > tears;
+蔭 > shade;
+津 > ferry;
+鬼 > ghost;
+舞 > dance;
+蓮 > lotus;
+避 > avoid;
+桌 > table;
+蓋 > cover;
+亡 > death;
+蓄 > store;
+闪 > flash;
+蒸 > steam;
+震 > shake;
+咳 > cough;
+咲 > smile;
+沢 > marsh;
+绿 > green;
+咎 > fault;
+纳 > admit;
+汽 > steam;
+货 > goods;
+呪 > curse;
+童 > child;
+伟 > great;
+汁 > juice;
+荣 > glory;
+献 > offer;
+吐 > vomit;
+厚 > thick;
+鰌 > loach;
+喊 > shout;
+轮 > wheel;
+吉 > lucky;
+训 > teach;
+叱 > scold;
+逐 > chase;
+盖 > cover;
+叩 > knock;
+舍 > house;
+毎 > every;
+检 > check;
+握 > grasp;
+牙 > tooth;
+鮮 > fresh;
+宽 > broad;
+殖 > breed;
+卿 > noble;
+荷 > lotus;
+歯 > teeth;
+歪 > slant;
+歡 > happy;
+棋 > chess;
+魔 > demon;
+腰 > waist;
+梅 > plums;
+钢 > steel;
+茹 > roots;
+仇 > enemy;
+欺 > cheat;
+鬚 > beard;
+匙 > spoon;
+净 > clean;
+匍 > crawl;
+權 > power;
+茅 > reeds;
+累 > tired;
+享 > enjoy;
+茂 > thick;
+勇 > brave;
+末 > final;
+糊 > paste;
+税 > taxes;
+勢 > power;
+勞 > labor;
+苛 > small;
+惯 > habit;
+倾 > upset;
+労 > labor;
+韩 > fence;
+贸 > trade;
+檢 > check;
+劍 > sword;
+扫 > sweep;
+艸 > grass;
+剣 > sword;
+吓 > scare;
+剃 > shave;
+闲 > fence;
+舶 > large;
+刷 > brush;
+羊 > sheep;
+権 > power;
+樣 > shape;
+扑 > pound;
+舎 > house;
+碎 > break;
+樂 > happy;
+磨 > grind;
+臺 > tower;
+臭 > smell;
+処 > place;
+様 > shape;
+倍 > times;
+粗 > rough;
+構 > frame;
+冶 > smelt;
+膳 > meals;
+馭 > drive;
+朗 > clear;
+馬 > horse;
+兼 > unite;
+鞋 > shoes;
+欣 > happy;
+挤 > crowd;
+楽 > happy;
+洁 > clean;
+颗 > grain;
+惠 > favor;
+振 > raise;
+腦 > brain;
+爬 > crawl;
+腕 > wrist;
+桃 > peach;
+措 > place;
+泰 > great;
+坡 > slope;
+脳 > brain;
+坛 > altar;
+償 > repay;
+検 > check;
+彪 > tiger;
+饮 > drink;
+植 > plant;
+養 > raise;
+脊 > spine;
+椅 > chair;
+矛 > spear;
+宾 > guest;
+肚 > belly;
+價 > price;
+贼 > thief;
+飲 > drink;
+棲 > perch;
+飮 > drink;
+僞 > false;
+僕 > slave;
+棒 > stick;
+働 > labor;
+傾 > upset;
+傷 > wound;
+催 > press;
+肝 > liver;
+盟 > swear;
+偽 > false;
+箭 > arrow;
+聲 > sound;
+類 > class;
+耀 > shine;
+顆 > grain;
+偉 > great;
+疯 > crazy;
+耻 > shame;
+侍 > serve;
+値 > price;
+衫 > shirt;
+頓 > pause;
+揭 > raise;
+莲 > lotus;
+钻 > drill;
+栄 > glory;
+峡 > gorge;
+韻 > rhyme;
+柵 > fence;
+丑 > clown;
+翳 > shade;
+浓 > thick;
+捉 > grasp;
+澳 > inlet;
+疼 > aches;
+档 > shelf;
+抛 > throw;
+価 > price;
+阔 > broad;
+玛 > agate;
+靴 > boots;
+尝 > taste;
+扣 > knock;
+靜 > quiet;
+傲 > proud;
+伺 > serve;
+锐 > sharp;
+霜 > frost;
+吵 > argue;
+沟 > ditch;
+浑 > muddy;
+邪 > wrong;
+脆 > crisp;
+偿 > repay;
+拟 > draft;
+曳 > trail;
+離 > leave;
+雜 > mixed;
+叛 > rebel;
+炼 > smelt;
+雑 > mixed;
+翼 > wings;
+呵 > scold;
+甜 > sweet;
+抹 > smear;
+隙 > crack;
+扔 > throw;
+廷 > court;
+掷 > throw;
+傅 > tutor;
+晩 > night;
+織 > weave;
+喷 > spurt;
+浩 > great;
+吩 > order;
+伪 > false;
+瞎 > blind;
+矮 > short;
+齿 > teeth;
+緑 > green;
+娶 > marry;
+緊 > tense;
+闇 > close;
+璃 > glass;
+斷 > sever;
+糖 > sugar;
+珊 > coral;
+棍 > stick;
+閑 > fence;
+玻 > glass;
+砸 > smash;
+嚷 > shout;
+閃 > flash;
+敵 > enemy;
+絞 > twist;
+坟 > grave;
+鹤 > crane;
+組 > class;
+乖 > rebel;
+級 > level;
+紙 > paper;
+納 > admit;
+轨 > track;
+擱 > place;
+擬 > draft;
+硕 > great;
+擧 > raise;
+擡 > carry;
+擔 > carry;
+撲 > pound;
+兽 > beast;
+籖 > tally;
+鐘 > clock;
+遮 > cover;
+擒 > catch;
+築 > build;
+揃 > shear;
+箒 > broom;
+鼎 > large;
+掃 > sweep;
+鍮 > brass;
+嗓 > voice;
+粒 > grain;
+錯 > error;
+啥 > what\?;
+錢 > money;
+蜜 > honey;
+挙 > raise;
+鋼 > steel;
+拶 > press;
+鋭 > sharp;
+搁 > place;
+鋏 > tongs;
+肿 > swell;
+銭 > money;
+裙 > skirt;
+胀 > swell;
+辜 > crime;
+哇 > vomit;
+尿 > urine;
+逮 > seize;
+刮 > shave;
+嘱 > order;
+倡 > guide;
+搏 > seize;
+兜 > pouch;
+魄 > vigor;
+晰 > clear;
+糕 > cakes;
+秩 > order;
+稚 > young;
+鈍 > blunt;
+懷 > bosom;
+滨 > beach;
+懐 > bosom;
+躁 > tense;
+甫 > begin;
+禽 > birds;
+憺 > peace;
+链 > chain;
+憬 > rouse;
+沐 > bathe;
+凳 > bench;
+酬 > toast;
+慣 > habit;
+灿 > vivid;
+韵 > rhyme;
+攀 > climb;
+咒 > curse;
+沫 > froth;
+碌 > rough;
+坤 > earth;
+焰 > flame;
+逗 > tempt;
+還 > still;
+魁 > chief;
+滥 > flood;
+適 > match;
+恥 > shame;
+框 > frame;
+喀 > vomit;
+砕 > break;
+翅 > wings;
+戳 > prick;
+桩 > stake;
+肺 > lungs;
+纱 > gauze;
+陡 > steep;
+烫 > scald;
+匕 > spoon;
+鹅 > goose;
+敞 > roomy;
+浏 > clear;
+烁 > shine;
+诈 > cheat;
+峨 > lofty;
+虐 > cruel;
+辫 > braid;
+嗽 > cough;
+怦 > eager;
+浇 > spray;
+膛 > chest;
+闵 > mourn;
+萃 > dense;
+袜 > socks;
+揽 > grasp;
+荫 > shade;
+贿 > bribe;
+敝 > break;
+熏 > smoke;
+匀 > equal;
+沃 > water;
+蝇 > flies;
+绞 > twist;
+呕 > vomit;
+墅 > villa;
+秽 > dirty;
+谬 > error;
+垄 > grave;
+呻 > groan;
+拧 > pinch;
+彰 > clear;
+栖 > perch;
+扼 > grasp;
+浊 > muddy;
+杠 > lever;
+惫 > tired;
+攘 > seize;
+缎 > satin;
+惮 > dread;
+噗 > burst;
+矶 > jetty;
+瓣 > petal;
+黝 > black;
+簇 > swarm;
+懊 > vexed;
+勺 > spoon;
+夭 > young;
+拇 > thumb;
+铲 > spade;
+肮 > dirty;
+哽 > choke;
+诣 > reach;
+炫 > shine;
+钝 > blunt;
+栅 > fence;
+冕 > crown;
+廓 > broad;
+峭 > steep;
+磅 > pound;
+疮 > tumor;
+赃 > booty;
+瘤 > tumor;
+婊 > whore;
+锯 > a\-saw;
+秉 > grasp;
+臻 > reach;
+嘈 > noisy;
+诅 > curse;
+缰 > reins;
+讪 > abuse;
+忡 > a\-sad;
+涡 > swirl;
+馍 > bread;
+颅 > skull;
+祯 > lucky;
+忖 > guess;
+烙 > brand;
+埔 > plain;
+泓 > clear;
+噎 > choke;
+阜 > mound;
+俨 > grave;
+炬 > torch;
+贮 > store;
+渎 > ditch;
+癫 > crazy;
+炙 > roast;
+肇 > begin;
+帚 > broom;
+恬 > quiet;
+婪 > covet;
+蹑 > tread;
+竺 > india;
+剌 > slash;
+荧 > shine;
+赂 > bribe;
+诲 > teach;
+筛 > sieve;
+篡 > usurp;
+鲸 > whale;
+抡 > swing;
+涮 > rinse;
+挎 > carry;
+酵 > yeast;
+橄 > olive;
+榄 > olive;
+稠 > dense;
+悻 > anger;
+雏 > chick;
+摹 > trace;
+涧 > brook;
+腺 > gland;
+哮 > cough;
+袒 > strip;
+抠 > raise;
+忱 > truth;
+噤 > close;
+髯 > beard;
+蜿 > creep;
+镀 > plate;
+胭 > rouge;
+髅 > skull;
+焘 > shine;
+佗 > other;
+赳 > grand;
+糠 > chaff;
+帛 > silks;
+侏 > small;
+丕 > great;
+鲨 > shark;
+踝 > ankle;
+驭 > drive;
+眈 > gloat;
+倭 > dwarf;
+镐 > stove;
+臆 > chest;
+孺 > child;
+虱 > louse;
+瑙 > agate;
+褛 > lapel;
+恺 > enjoy;
+擞 > shake;
+箕 > sieve;
+涓 > brook;
+噼 > sound;
+搐 > cramp;
+戛 > lance;
+黔 > black;
+阖 > close;
+呃 > belch;
+溉 > water;
+炀 > roast;
+皎 > white;
+榭 > kiosk;
+酪 > cream;
+傀 > great;
+孀 > widow;
+孪 > twins;
+泱 > great;
+岖 > steep;
+忸 > blush;
+瞰 > watch;
+谒 > visit;
+觊 > covet;
+氮 > xenon;
+痣 > spots;
+摒 > expel;
+俸 > wages;
+愠 > angry;
+岑 > steep;
+搽 > smear;
+扪 > stoke;
+瑚 > coral;
+皙 > white;
+绉 > crepe;
+忾 > anger;
+盂 > basin;
+珀 > amber;
+偈 > brave;
+沔 > flood;
+诩 > boast;
+芍 > peony;
+褶 > pleat;
+酗 > drunk;
+咤 > scold;
+柠 > lemon;
+诙 > tease;
+偃 > cease;
+绺 > skein;
+揿 > press;
+釉 > glaze;
+鹭 > heron;
+宓 > quiet;
+孛 > comet;
+噫 > belch;
+弋 > catch;
+龛 > niche;
+忪 > quiet;
+镂 > carve;
+骞 > raise;
+颌 > mouth;
+铠 > armor;
+鳅 > loach;
+秆 > straw;
+嶂 > cliff;
+椽 > beams;
+颦 > frown;
+淖 > slush;
+恚 > anger;
+莠 > weeds;
+橛 > a\-peg;
+阕 > close;
+咻 > shout;
+祛 > expel;
+蒺 > furze;
+衽 > lapel;
+翕 > agree;
+霾 > misty;
+砧 > anvil;
+蹉 > error;
+哂 > smile;
+胺 > amine;
+蛭 > leech;
+韪 > right;
+诨 > jokes;
+赝 > false;
+岿 > grand;
+怫 > sorry;
+荏 > beans;
+楔 > wedge;
+擘 > thumb;
+轱 > wheel;
+媾 > marry;
+痍 > wound;
+獭 > otter;
+黢 > black;
+铧 > spade;
+吒 > shout;
+疽 > ulcer;
+诟 > abuse;
+茔 > grave;
+桤 > alder;
+铆 > rivet;
+酩 > drunk;
+氵 > water;
+撺 > hurry;
+奘 > large;
+肄 > learn;
+踯 > waver;
+孢 > spore;
+鲲 > spawn;
+酊 > drunk;
+铨 > weigh;
+酽 > thick;
+阒 > alone;
+饬 > order;
+豕 > a\-pig;
+笊 > ladle;
+罅 > crack;
+钜 > steel;
+畈 > field;
+囗 > erect;
+庥 > shade;
+瓤 > flesh;
+铩 > moult;
+渖 > juice;
+忄 > heart;
+诓 > cheat;
+鹑 > quail;
+茕 > alone;
+垅 > mound;
+蟥 > leech;
+鹳 > crane;
+鹌 > quail;
+晟 > clear;
+啁 > chirp;
+醚 > ether;
+琰 > jewel;
+迨 > until;
+褫 > strip;
+鹬 > snipe;
+瞽 > blind;
+傈 > tribe;
+驽 > tired;
+谯 > tower;
+铰 > hinge;
+洌 > clear;
+堞 > plate;
+硼 > borax;
+詈 > scold;
+酯 > ester;
+镪 > coins;
+锸 > spade;
+戋 > small;
+扦 > probe;
+溷 > privy;
+俳 > actor;
+雠 > enemy;
+砻 > grind;
+蘖 > stump;
+墀 > porch;
+麴 > yeast;
+窳 > dirty;
+潋 > waves;
+洎 > until;
+饧 > sugar;
+喈 > music;
+吡 > blame;
+陟 > climb;
+鲛 > shark;
+皲 > crack;
+瘊 > warts;
+馕 > bread;
+搦 > grasp;
+垴 > small;
+阝 > place;
+厣 > shell;
+糅 > blend;
+铗 > tongs;
+阏 > block;
+剡 > sharp;
+鲂 > bream;
+溽 > moist;
+怿 > enjoy;
+艹 > grass;
+髑 > skull;
+跽 > kneel;
+簏 > a\-box;
+裥 > folds;
+钣 > plate;
+槊 > spear;
+椋 > fruit;
+缳 > noose;
+绐 > cheat;
+滢 > clear;
+龠 > flute;
+蝤 > larva;
+氆 > thick;
+埭 > a\-dam;
+埽 > broom;
+坼 > split;
+诖 > error;
+鲶 > sheat;
+貅 > brave;
+皤 > white;
+稂 > grass;
+镆 > sword;
+锞 > ingot;
+爝 > torch;
+氡 > radon;
+槭 > maple;
+彘 > swine;
+彖 > a\-hog;
+滗 > drain;
+廑 > a\-hut;
+匏 > gourd;
+蕖 > lotus;
+侔 > equal;
+鳊 > bream;
+篼 > sedan;
+蛞 > snail;
+蛲 > worms;
+虍 > tiger;
+氙 > xenon;
+赇 > bribe;
+璁 > \(gem\);
+绗 > baste;
+萏 > lotus;
+埘 > roost;
+齒 > teeth;
+齅 > smell;
+黮 > black;
+黓 > black;
+麺 > flour;
+麹 > yeast;
+麵 > flour;
+麯 > yeast;
+麫 > flour;
+麪 > flour;
+麤 > rough;
+麘 > scent;
+麁 > rough;
+鹾 > salty;
+鹺 > salty;
+鹹 > salty;
+鸲 > mynah;
+鸛 > crane;
+鸘 > eagle;
+鷸 > snipe;
+鷃 > quail;
+鶵 > chick;
+鶉 > quail;
+鵰 > eagle;
+鵪 > quail;
+鵞 > goose;
+鵝 > goose;
+鴳 > quail;
+鴪 > swoop;
+鴥 > swoop;
+鴝 > mynah;
+鱻 > fresh;
+鱮 > bream;
+鰞 > squid;
+鰍 > loach;
+鰋 > sheat;
+鯿 > bream;
+鯰 > sheat;
+鯨 > whale;
+鯤 > spawn;
+鯋 > shark;
+鯊 > shark;
+鮫 > shark;
+鮉 > bream;
+魴 > bream;
+魆 > black;
+鬒 > black;
+鬎 > favus;
+鬍 > beard;
+鬁 > favus;
+髳 > state;
+髲 > a\-wig;
+髥 > beard;
+髒 > dirty;
+髏 > skull;
+骯 > dirty;
+驩 > happy;
+驦 > horse;
+驖 > black;
+騻 > horse;
+騫 > raise;
+騠 > horse;
+騑 > horse;
+駪 > crowd;
+駞 > camel;
+駑 > tired;
+馡 > scent;
+饢 > bread;
+饘 > gruel;
+饍 > meals;
+饃 > bread;
+餻 > cakes;
+餹 > sugar;
+餳 > sugar;
+餪 > feast;
+餦 > candy;
+餜 > cakes;
+飶 > odour;
+飭 > order;
+飑 > storm;
+颽 > balmy;
+顱 > skull;
+顰 > frown;
+顣 > frown;
+顗 > quiet;
+頾 > beard;
+頠 > quiet;
+頜 > mouth;
+頀 > music;
+韺 > music;
+韤 > socks;
+韙 > right;
+韓 > fence;
+韈 > socks;
+韆 > swing;
+韁 > reins;
+鞾 > boots;
+鞵 > shoes;
+鞨 > tribe;
+鞗 > reins;
+鞃 > board;
+靦 > timid;
+靁 > thick;
+霱 > cloud;
+霙 > sleet;
+雝 > marsh;
+雛 > chick;
+隂 > shady;
+陼 > islet;
+阹 > a\-pen;
+闚 > flash;
+闔 > close;
+闋 > close;
+闊 > broad;
+闃 > alone;
+閼 > block;
+閴 > quiet;
+閦 > crowd;
+閔 > mourn;
+镟 > lathe;
+锼 > carve;
+锓 > carve;
+铘 > sword;
+钃 > metal;
+鑽 > drill;
+鑱 > spade;
+鑚 > drill;
+鑓 > spear;
+鏹 > coins;
+鏵 > spade;
+鏦 > spear;
+鏤 > carve;
+鏟 > spade;
+鏌 > sword;
+鏈 > chain;
+鏇 > lathe;
+鎬 > stove;
+鎧 > armor;
+鎗 > rifle;
+鎍 > chain;
+鍹 > spade;
+鍭 > arrow;
+鍤 > spade;
+鍏 > spade;
+鍍 > plate;
+鍉 > spoon;
+錁 > ingot;
+鋹 > sharp;
+鋸 > a\-saw;
+鋲 > rivet;
+鋟 > carve;
+鋘 > sword;
+銳 > sharp;
+銛 > sharp;
+銓 > weigh;
+鉾 > spear;
+鉼 > plate;
+鉸 > hinge;
+鉚 > rivet;
+鉅 > steel;
+鈒 > spear;
+鈑 > plate;
+鈇 > an\-ax;
+釼 > sword;
+釖 > knife;
+釅 > thick;
+釂 > drain;
+鄻 > spoil;
+郤 > crack;
+遫 > speed;
+遝 > mixed;
+逴 > argue;
+辮 > braid;
+辤 > words;
+辠 > crime;
+輓 > mourn;
+輏 > light;
+輈 > shaft;
+軱 > wheel;
+軜 > reins;
+軌 > track;
+躡 > tread;
+踆 > squat;
+趡 > place;
+贜 > booty;
+贓 > booty;
+贋 > false;
+賕 > bribe;
+賔 > guest;
+賓 > guest;
+賍 > booty;
+賄 > bribe;
+賂 > bribe;
+貿 > trade;
+貤 > steps;
+豔 > plump;
+讙 > cheer;
+讓 > allow;
+讐 > enemy;
+讎 > enemy;
+譙 > tower;
+譌 > false;
+譁 > noise;
+謬 > error;
+謑 > shame;
+謏 > scold;
+諢 > jokes;
+諠 > noisy;
+諐 > fault;
+說 > speak;
+誨 > teach;
+誆 > cheat;
+詿 > error;
+詼 > tease;
+詬 > abuse;
+詣 > reach;
+詡 > boast;
+詛 > curse;
+詖 > argue;
+詑 > cheat;
+詐 > cheat;
+訽 > blame;
+訧 > fault;
+訕 > abuse;
+訓 > teach;
+訏 > boast;
+觔 > catty;
+覬 > covet;
+規 > rules;
+襾 > cover;
+襪 > socks;
+襢 > strip;
+襍 > mixed;
+褻 > dirty;
+褺 > dirty;
+褕 > shirt;
+袵 > lapel;
+衕 > alley;
+衊 > smear;
+衁 > blood;
+蠛 > flies;
+蠗 > \(ape\);
+蠅 > flies;
+蟯 > worms;
+蟢 > caulk;
+蝨 > louse;
+蝘 > gecko;
+蝓 > snail;
+蚴 > larva;
+虣 > cruel;
+虛 > false;
+蘗 > stump;
+蘓 > thyme;
+蘋 > apple;
+藾 > shade;
+藪 > marsh;
+薖 > empty;
+薉 > dirty;
+蒞 > reach;
+葢 > cover;
+葍 > plant;
+萹 > grass;
+莿 > thorn;
+荳 > beans;
+荮 > grass;
+荄 > roots;
+茇 > grass;
+苾 > smell;
+苶 > weary;
+舗 > store;
+舖 > store;
+舋 > split;
+舉 > raise;
+臽 > a\-pit;
+臲 > jumpy;
+臢 > dirty;
+臛 > broth;
+臙 > rouge;
+臐 > broth;
+膶 > liver;
+膇 > swell;
+腫 > swell;
+腡 > lines;
+脹 > swell;
+脶 > lines;
+脢 > flesh;
+脃 > gland;
+肵 > table;
+肕 > tough;
+耞 > flail;
+翽 > whirr;
+翄 > winds;
+羱 > sheep;
+羣 > group;
+罷 > cease;
+罉 > a\-pot;
+纻 > ramie;
+繯 > noose;
+繮 > reins;
+縠 > crepe;
+縐 > crepe;
+縏 > purse;
+緞 > satin;
+綹 > skein;
+綠 > green;
+綌 > cloth;
+絎 > baste;
+絁 > rough;
+紿 > cheat;
+紵 > ramie;
+紝 > weave;
+紗 > gauze;
+紑 > fresh;
+糔 > juice;
+糓 > grain;
+粎 > metre;
+籤 > tally;
+簻 > empty;
+簛 > sieve;
+簒 > usurp;
+簁 > sieve;
+篩 > sieve;
+篏 > inlay;
+箛 > bugle;
+筳 > feast;
+筰 > cable;
+筦 > a\-key;
+竾 > flute;
+竔 > litre;
+窽 > empty;
+穧 > sheaf;
+穢 > dirty;
+穠 > thick;
+穅 > chaff;
+稾 > draft;
+稅 > taxes;
+秇 > skill;
+禠 > happy;
+禎 > lucky;
+祙 > demon;
+礶 > a\-jug;
+礱 > grind;
+磵 > brook;
+磯 > jetty;
+磡 > cliff;
+磛 > cliff;
+磈 > rocky;
+碻 > solid;
+碯 > agate;
+碩 > great;
+碁 > chess;
+硏 > grind;
+砳 > rocky;
+砠 > rocky;
+矓 > faint;
+矈 > dense;
+瞏 > round;
+瞍 > blind;
+瞇 > close;
+睘 > round;
+眹 > pupil;
+眅 > inlay;
+盻 > glare;
+盭 > cruel;
+皽 > scurf;
+皹 > crack;
+皸 > crack;
+皭 > white;
+皫 > white;
+皜 > white;
+皁 > black;
+癲 > crazy;
+癡 > silly;
+瘡 > tumor;
+瘋 > crazy;
+甞 > taste;
+甛 > sweet;
+甖 > a\-pot;
+甎 > brick;
+瓖 > inlay;
+瓈 > glass;
+瑪 > agate;
+瑔 > \(jade;
+瑑 > carve;
+珖 > carat;
+玈 > black;
+獝 > devil;
+獎 > prize;
+狵 > blend;
+牜 > an\-ox;
+牔 > gable;
+爓 > flame;
+爍 > shine;
+燿 > shine;
+燾 > shine;
+燦 > vivid;
+燙 > scald;
+燏 > blaze;
+燄 > flame;
+燂 > smoke;
+熛 > blaze;
+熒 > shine;
+煬 > roast;
+煢 > alone;
+煉 > smelt;
+焔 > flame;
+烓 > stove;
+烋 > boast;
+炰 > roast;
+炧 > ashes;
+灣 > a\-bay;
+灢 > muddy;
+灔 > waves;
+瀺 > sound;
+瀲 > waves;
+瀏 > clear;
+瀋 > juice;
+瀆 > ditch;
+瀅 > clear;
+瀁 > waves;
+濫 > flood;
+澨 > shore;
+澗 > brook;
+澑 > slide;
+澆 > spray;
+潷 > drain;
+潝 > agree;
+漑 > water;
+漈 > shore;
+湩 > muddy;
+湣 > mixed;
+渾 > muddy;
+淸 > clear;
+淢 > ditch;
+淚 > tears;
+淊 > drown;
+浥 > moist;
+洴 > sound;
+洚 > flood;
+洏 > tears;
+泚 > clear;
+沲 > float;
+汳 > henan;
+汎 > float;
+氹 > ditch;
+氥 > xenon;
+氜 > clear;
+殑 > swoon;
+歾 > drown;
+歕 > spurt;
+歓 > happy;
+歈 > songs;
+欼 > drink;
+欸 > sighs;
+欬 > cough;
+欙 > sedan;
+欖 > olive;
+櫱 > yeast;
+櫈 > bench;
+檸 > lemon;
+檯 > table;
+檨 > mango;
+檔 > shelf;
+樴 > stake;
+樕 > shrub;
+樏 > sedan;
+樁 > stake;
+槼 > rules;
+槓 > lever;
+槍 > spear;
+榿 > alder;
+榮 > glory;
+楳 > plums;
+楅 > buard;
+楄 > block;
+椈 > cedar;
+棊 > chess;
+棁 > joist;
+梲 > joist;
+梐 > fence;
+桯 > table;
+桭 > eaves;
+桚 > press;
+栵 > hedge;
+栫 > fence;
+栔 > carve;
+栍 > a\-lot;
+柶 > ladle;
+杧 > mango;
+杕 > alone;
+朮 > skill;
+朖 > clear;
+朅 > brave;
+曵 > trail;
+曨 > vague;
+斆 > teach;
+斅 > teach;
+敺 > expel;
+敔 > gavel;
+敎 > teach;
+攬 > grasp;
+攛 > hurry;
+擻 > shake;
+擲 > throw;
+擰 > pinch;
+擠 > crowd;
+撳 > press;
+摳 > raise;
+摏 > pound;
+搤 > seize;
+搊 > pluck;
+搉 > knock;
+揵 > carry;
+揅 > grind;
+掄 > swing;
+捿 > perch;
+捫 > stoke;
+挌 > fight;
+拋 > throw;
+拃 > grope;
+扢 > caper;
+戭 > spear;
+戣 > lance;
+戞 > lance;
+戔 > small;
+懽 > happy;
+懥 > angry;
+懠 > angry;
+懌 > enjoy;
+憭 > clear;
+憚 > dread;
+憊 > tired;
+慬 > brave;
+慍 > angry;
+愾 > anger;
+愷 > enjoy;
+愞 > timid;
+愃 > relax;
+悾 > naive;
+悰 > enjoy;
+悆 > happy;
+恵 > favor;
+恓 > vexed;
+彑 > snout;
+彐 > snout;
+彂 > issue;
+弉 > large;
+廕 > shade;
+幭 > cover;
+幪 > cover;
+幦 > cover;
+幠 > cover;
+帒 > a\-bag;
+帋 > paper;
+巭 > study;
+巛 > river;
+巖 > cliff;
+巌 > cliff;
+巋 > grand;
+巉 > steep;
+巃 > lofty;
+嶰 > gorge;
+嶡 > table;
+嶞 > ridge;
+嶔 > lofty;
+嶇 > steep;
+嵜 > rough;
+嵒 > cliff;
+嵂 > lofty;
+崱 > lofty;
+崚 > hilly;
+崕 > cliff;
+峽 > gorge;
+峩 > lofty;
+屶 > lofty;
+屴 > lofty;
+屪 > penis;
+屌 > penis;
+尰 > swell;
+尙 > still;
+寬 > broad;
+寛 > broad;
+寁 > quick;
+宻 > dense;
+宍 > flesh;
+孿 > twins;
+孖 > twins;
+嫚 > scorn;
+姪 > niece;
+奰 > anger;
+奬 > prize;
+奨 > prize;
+奝 > large;
+壠 > mound;
+壟 > grave;
+壆 > stiff;
+墺 > walls;
+墳 > grave;
+墝 > stony;
+墍 > paint;
+墈 > cliff;
+塼 > brick;
+塜 > dusty;
+塙 > truly;
+塒 > roost;
+塋 > grave;
+塈 > paint;
+堿 > salty;
+堽 > mound;
+堖 > small;
+埳 > a\-pit;
+埌 > waste;
+埆 > stony;
+垚 > mound;
+坿 > mound;
+坰 > wilds;
+圌 > fence;
+囑 > order;
+囅 > smile;
+嚮 > guide;
+嚭 > mound;
+嚬 > frown;
+嚡 > rough;
+嚐 > taste;
+嚇 > scare;
+噺 > story;
+噴 > spurt;
+噭 > shout;
+噦 > belch;
+嘢 > thing;
+嘒 > sharp;
+嗛 > pouch;
+嗙 > boast;
+嗐 > alas\!;
+喴 > hello;
+啲 > a\-few;
+啢 > ounce;
+啍 > creak;
+唡 > ounce;
+唎 > sound;
+哶 > bleat;
+哕 > belch;
+咢 > sound;
+咍 > laugh;
+吰 > clang;
+吣 > vomit;
+叚 > false;
+厺 > to\-go;
+厹 > spear;
+厴 > shell;
+厪 > a\-hut;
+厖 > bulky;
+卻 > still;
+卬 > lofty;
+匜 > basin;
+勻 > equal;
+劔 > sword;
+劒 > sword;
+劎 > sword;
+剱 > sword;
+剠 > brand;
+刂 > knife;
+凼 > ditch;
+凈 > clean;
+冩 > write;
+冧 > a\-bud;
+冚 > cover;
+冖 > cover;
+冁 > smile;
+儼 > grave;
+儎 > carry;
+儌 > lucky;
+僿 > small;
+僄 > light;
+傫 > tired;
+偐 > false;
+偁 > state;
+倖 > lucky;
+俶 > start;
+侐 > quiet;
+侁 > crowd;
+佺 > fairy;
+佌 > small;
+伩 > trust;
+仫 > tribe;
+亾 > death;
+亱 > night;
+乕 > tiger;
+丵 > thick;
+丯 > dense;
+丮 > catch;
+丌 > table;
+丅 > under;
+丄 > above;
+䶓 > ramie;
+䶏 > tears;
+䶋 > sound;
+䶇 > a\-rat;
+䶆 > a\-rat;
+䵭 > black;
+䵥 > black;
+䵟 > black;
+䴺 > cakes;
+䴹 > cakes;
+䴵 > cakes;
+䴲 > flour;
+䴞 > salty;
+䳽 > crane;
+䳱 > ducks;
+䳘 > goose;
+䳗 > goose;
+䲡 > loach;
+䲑 > spawn;
+䱜 > shark;
+䱖 > shark;
+䱋 > spawn;
+䰢 > ghost;
+䰗 > a\-lot;
+䰒 > vague;
+䰑 > beard;
+䰅 > beard;
+䯾 > hairy;
+䯸 > a\-wig;
+䯍 > bones;
+䭽 > group;
+䭦 > cakes;
+䭟 > cakes;
+䭐 > cakes;
+䭎 > cakes;
+䭅 > cakes;
+䬿 > small;
+䬵 > syrup;
+䬮 > syrup;
+䫵 > twins;
+䫖 > timid;
+䫎 > short;
+䪻 > a\-cap;
+䪱 > cheek;
+䪯 > sound;
+䪛 > group;
+䪘 > right;
+䪗 > shoes;
+䪂 > reins;
+䩺 > boots;
+䩖 > shoes;
+䩕 > clogs;
+䩓 > boots;
+䩅 > broad;
+䨹 > swift;
+䨷 > sleet;
+䨘 > sleet;
+䨋 > cruel;
+䨄 > quail;
+䨁 > ducks;
+䧽 > small;
+䧪 > sissy;
+䧎 > a\-pit;
+䧆 > a\-pit;
+䦾 > lofty;
+䦢 > broad;
+䦞 > extra;
+䦗 > quiet;
+䦔 > a\-peg;
+䥵 > lines;
+䥘 > wrong;
+䥓 > a\-hoe;
+䥁 > armor;
+䤺 > an\-ax;
+䤴 > armor;
+䤪 > short;
+䤢 > metal;
+䤜 > blunt;
+䤚 > plums;
+䤙 > dregs;
+䣱 > drunk;
+䣧 > black;
+䢔 > mixed;
+䢑 > angry;
+䡖 > still;
+䠢 > weary;
+䠠 > to\-go;
+䟠 > swift;
+䟜 > break;
+䞈 > money;
+䝭 > wages;
+䝫 > money;
+䝒 > a\-sow;
+䝏 > a\-sow;
+䝎 > a\-pig;
+䝊 > a\-sow;
+䝅 > a\-pig;
+䝃 > beans;
+䜴 > brave;
+䜎 > sound;
+䜍 > sweet;
+䜌 > chaos;
+䜊 > noise;
+䛭 > angry;
+䛡 > words;
+䚴 > anger;
+䚟 > horns;
+䚉 > o\-see;
+䘊 > flies;
+䗕 > bends;
+䖎 > tiger;
+䖋 > cruel;
+䖈 > cruel;
+䒸 > grass;
+䒑 > grass;
+䑚 > sweet;
+䑕 > a\-rat;
+䑁 > fatty;
+䐬 > crisp;
+䐝 > thick;
+䐗 > a\-pig;
+䐇 > clear;
+䏵 > plump;
+䏳 > olein;
+䏯 > moles;
+䏧 > fatty;
+䏚 > small;
+䎐 > hairy;
+䎇 > quick;
+䎄 > hairy;
+䍥 > smoky;
+䍌 > a\-jar;
+䌻 > wings;
+䌑 > tight;
+䌐 > ropes;
+䋵 > quick;
+䋥 > lines;
+䋚 > wings;
+䋙 > reins;
+䊾 > ropes;
+䊻 > silky;
+䊹 > small;
+䊀 > paste;
+䉿 > paste;
+䉞 > a\-box;
+䈉 > a\-fan;
+䇲 > tongs;
+䇤 > sharp;
+䇂 > fault;
+䆹 > empty;
+䆜 > empty;
+䆁 > syrup;
+䅵 > chaff;
+䅙 > grass;
+䅘 > wheat;
+䅆 > dense;
+䄾 > thick;
+䄥 > a\-god;
+䄢 > pious;
+䃬 > rocky;
+䃛 > chain;
+䃙 > rocks;
+䃗 > rocks;
+䂽 > rocks;
+䂼 > rocks;
+䂺 > rocks;
+䂰 > rocks;
+䂮 > stone;
+䂦 > tired;
+䂟 > rocks;
+䂖 > rocks;
+䂕 > short;
+䂔 > short;
+䂑 > short;
+䂏 > short;
+䁫 > muddy;
+䁟 > wrong;
+䁗 > light;
+䁍 > blind;
+䀼 > angry;
+䀇 > a\-pot;
+㿷 > rough;
+㿮 > green;
+㿩 > light;
+㿥 > shine;
+㿤 > white;
+㿝 > sweet;
+㿕 > ulcer;
+㾰 > choke;
+㾧 > favus;
+㾡 > ulcer;
+㾚 > itchy;
+㾐 > ulcer;
+㽿 > ulcer;
+㽡 > field;
+㼏 > a\-bad;
+㻭 > clear;
+㺃 > a\-dog;
+㹻 > puppy;
+㹷 > swine;
+㹋 > a\-cow;
+㹀 > a\-cow;
+㸺 > a\-cow;
+㸅 > ashes;
+㸃 > a\-dot;
+㷿 > flame;
+㷥 > steam;
+㷔 > flame;
+㷑 > smoke;
+㷇 > great;
+㶳 > ashes;
+㶰 > flame;
+㶦 > ashes;
+㶖 > rapid;
+㵹 > waves;
+㴃 > tears;
+㳹 > flood;
+㳰 > ditch;
+㳮 > urine;
+㳛 > dirty;
+㲧 > hairy;
+㲆 > noise;
+㰼 > greed;
+㰪 > sound;
+㰥 > laugh;
+㰢 > cough;
+㯷 > dates;
+㮥 > sails;
+㮢 > fruit;
+㮕 > fruit;
+㬶 > flesh;
+㬳 > light;
+㬦 > brave;
+㬚 > light;
+㬕 > light;
+㬏 > light;
+㬊 > light;
+㫼 > clear;
+㫹 > light;
+㫶 > light;
+㫰 > light;
+㫫 > clear;
+㫜 > light;
+㫛 > light;
+㫗 > thick;
+㫕 > light;
+㩡 > shake;
+鶴 > crane;
+㨛 > swift;
+㨗 > alert;
+嗀 > vomit;
+廓 > broad;
+糖 > sugar;
+㨃 > a\-row;
+炙 > roast;
+粒 > grain;
+立 > stand;
+溺 > drown;
+離 > leave;
+利 > gains;
+㧛 > thick;
+輪 > wheel;
+類 > class;
+㧍 > alike;
+溜 > slide;
+樂 > happy;
+尿 > urine;
+㦷 > brave;
+㦮 > money;
+說 > speak;
+裂 > split;
+㦡 > happy;
+烈 > fiery;
+蓮 > lotus;
+㦘 > swift;
+煉 > smelt;
+㦑 > anger;
+力 > power;
+女 > woman;
+㥿 > proud;
+㥷 > quiet;
+㥲 > anger;
+說 > speak;
+北 > north;
+怒 > anger;
+樂 > happy;
+㥓 > happy;
+累 > tired;
+淚 > tears;
+㥊 > angry;
+賂 > bribe;
+壟 > grave;
+㥂 > quick;
+綠 > green;
+碌 > rough;
+鷺 > heron;
+㤱 > anger;
+勞 > labor;
+朗 > clear;
+濫 > flood;
+㤣 > noble;
+㤜 > crazy;
+酪 > cream;
+㤙 > grace;
+烙 > brand;
+樂 > happy;
+㣲 > small;
+㣟 > to\-go;
+㣏 > still;
+㣉 > labor;
+㢛 > small;
+㢙 > a\-hut;
+㡶 > dwell;
+㡴 > sound;
+㡕 > sharp;
+㡐 > flags;
+㡌 > a\-hat;
+㡇 > colar;
+㡄 > colar;
+㠪 > great;
+㠕 > lofty;
+㠍 > lofty;
+㟵 > ridge;
+㟮 > lofty;
+㟠 > ridge;
+㟅 > lofty;
+㟁 > shore;
+㞾 > a\-nun;
+㞙 > urine;
+㞕 > chips;
+㞒 > lusty;
+㞏 > small;
+㞃 > tired;
+㝽 > short;
+㝺 > small;
+㝤 > night;
+㝣 > still;
+㝜 > night;
+㝖 > right;
+㝕 > peace;
+㝏 > alone;
+㝇 > quail;
+㜽 > child;
+㜧 > plump;
+㜜 > proud;
+㛨 > chaos;
+㛚 > equal;
+㛃 > clean;
+㛁 > quick;
+㚮 > happy;
+㚕 > great;
+㚀 > lofty;
+㙯 > skill;
+㙥 > muddy;
+㙓 > earth;
+㙄 > below;
+㘋 > sound;
+㗅 > angry;
+㖤 > wrath;
+㖔 > silly;
+㖏 > angry;
+㖀 > sound;
+㕳 > noisy;
+㕖 > plain;
+㕎 > caves;
+㕁 > still;
+㔻 > great;
+㓻 > tough;
+㓝 > a\-law;
+㓜 > young;
+㓛 > merit;
+㓙 > cruel;
+㓗 > clean;
+㓁 > a\-net;
+㒩 > naked;
+㒌 > along;
+㑶 > anger;
+㑩 > smart;
+㑨 > great;
+㑦 > anger;
+㑗 > a\-god;
+㑋 > small;
+㑁 > short;
+㐱 > bushy;
+㐫 > cruel;
+有 > have;
+知 > know;
+这 > this;
+矜 > pity;
+忙 > busy;
+来 > come;
+近 > near;
+道 > path;
+也 > also;
+时 > time;
+年 > year;
+瞻 > look;
+辺 > edge;
+就 > just;
+那 > that;
+生 > life;
+自 > self;
+瞬 > wink;
+过 > pass;
+循 > obey;
+從 > from;
+従 > from;
+多 > much;
+好 > good;
+彼 > that;
+起 > rise;
+只 > only;
+作 > make;
+当 > bear;
+形 > form;
+看 > look;
+开 > open;
+手 > hand;
+弱 > weak;
+本 > root;
+头 > head;
+真 > real;
+面 > face;
+公 > fair;
+同 > same;
+眞 > real;
+从 > from;
+动 > move;
+长 > long;
+載 > load;
+将 > will;
+但 > only;
+身 > body;
+高 > high;
+把 > hold;
+此 > this;
+实 > real;
+盥 > wash;
+月 > moon;
+种 > seed;
+軍 > army;
+車 > cart;
+己 > self;
+部 > part;
+名 > name;
+皮 > skin;
+机 > desk;
+给 > give;
+等 > rank;
+座 > seat;
+很 > very;
+最 > most;
+店 > shop;
+躍 > skip;
+走 > walk;
+四 > four;
+门 > gate;
+东 > east;
+庁 > hall;
+西 > west;
+平 > flat;
+登 > rise;
+听 > hear;
+幸 > luck;
+蹴 > kick;
+军 > army;
+五 > five;
+帷 > tent;
+太 > very;
+帶 > belt;
+帳 > tent;
+帯 > belt;
+体 > body;
+席 > seat;
+希 > rare;
+踊 > leap;
+书 > book;
+九 > nine;
+跳 > jump;
+路 > road;
+命 > life;
+痩 > thin;
+活 > live;
+左 > left;
+巣 > nest;
+表 > show;
+跟 > heel;
+车 > cart;
+痛 > pain;
+痕 > scar;
+痒 > itch;
+感 > feel;
+足 > foot;
+金 > gold;
+何 > what;
+嶮 > high;
+更 > more;
+疋 > roll;
+做 > work;
+计 > plan;
+當 > bear;
+王 > king;
+各 > each;
+留 > stop;
+畏 > fear;
+边 > edge;
+男 > male;
+风 > wind;
+崗 > post;
+毛 > hair;
+峰 > peak;
+爱 > love;
+瓦 > tile;
+賣 > sell;
+賃 > rent;
+貸 > lend;
+岸 > bank;
+结 > knot;
+岬 > cape;
+流 > flow;
+貧 > poor;
+青 > blue;
+管 > pipe;
+負 > load;
+连 > join;
+队 > team;
+带 > belt;
+展 > open;
+屑 > bits;
+领 > neck;
+屈 > bend;
+居 > live;
+尾 > tail;
+半 > half;
+候 > wait;
+步 > step;
+深 > deep;
+区 > area;
+尋 > seek;
+求 > seek;
+球 > ball;
+告 > tell;
+寸 > inch;
+實 > real;
+满 > fill;
+李 > plum;
+息 > rest;
+寒 > cold;
+寄 > send;
+脸 > face;
+宿 > stop;
+取 > take;
+室 > room;
+実 > real;
+宛 > seem;
+孩 > baby;
+广 > wide;
+玉 > jade;
+玄 > deep;
+火 > fire;
+讀 > read;
+譽 > fame;
+则 > rule;
+首 > head;
+失 > lose;
+拿 > take;
+斯 > this;
+读 > read;
+包 > wrap;
+猶 > like;
+落 > fall;
+济 > help;
+喜 > like;
+謡 > sing;
+编 > knit;
+谈 > talk;
+拉 > pull;
+謀 > plan;
+狼 > wolf;
+杀 > kill;
+根 > root;
+嫌 > hate;
+談 > talk;
+克 > gram;
+状 > form;
+示 > show;
+冲 > soar;
+読 > read;
+誉 > fame;
+推 > push;
+称 > call;
+試 > test;
+号 > mark;
+亚 > asia;
+港 > port;
+般 > sort;
+爪 > claw;
+刚 > hard;
+陆 > land;
+确 > sure;
+計 > plan;
+具 > tool;
+威 > pomp;
+帮 > help;
+线 > line;
+触 > butt;
+角 > horn;
+燒 > burn;
+节 > knot;
+燃 > burn;
+岁 > year;
+妻 > wife;
+需 > need;
+酒 > wine;
+铁 > iron;
+覗 > peek;
+闻 > hear;
+标 > mark;
+医 > cure;
+襲 > raid;
+煮 > cook;
+土 > soil;
+软 > soft;
+煤 > coal;
+仅 > only;
+套 > case;
+户 > door;
+焼 > burn;
+项 > neck;
+背 > back;
+焚 > burn;
+暗 > dark;
+须 > must;
+製 > make;
+裸 > bare;
+売 > sell;
+树 > tree;
+沉 > sink;
+职 > duty;
+细 > fine;
+補 > mend;
+停 > stop;
+助 > help;
+冷 > cold;
+墮 > fall;
+致 > send;
+木 > tree;
+袢 > robe;
+旁 > side;
+炊 > cook;
+灼 > burn;
+塵 > dust;
+塩 > salt;
+歌 > song;
+堂 > hall;
+试 > test;
+灌 > pour;
+验 > test;
+塀 > wall;
+止 > stop;
+堵 > wall;
+堤 > dike;
+堕 > fall;
+恶 > evil;
+堆 > heap;
+慢 > slow;
+堅 > hard;
+堀 > cave;
+蟻 > ants;
+藏 > hide;
+负 > load;
+埋 > bury;
+澹 > calm;
+垢 > dirt;
+融 > melt;
+潮 > tide;
+坦 > flat;
+潜 > hide;
+救 > save;
+丝 > silk;
+齊 > even;
+鼻 > nose;
+漬 > soak;
+鼓 > drum;
+永 > long;
+漏 > leak;
+录 > copy;
+遇 > meet;
+滿 > fill;
+船 > ship;
+黴 > mold;
+滴 > drip;
+雨 > rain;
+蛙 > frog;
+滑 > slip;
+麻 > hemp;
+蚤 > flea;
+齐 > even;
+準 > rule;
+溌 > pour;
+充 > fill;
+鹿 > deer;
+寻 > seek;
+宁 > calm;
+鹽 > salt;
+沙 > sand;
+卖 > sell;
+顺 > obey;
+號 > mark;
+善 > good;
+噛 > bite;
+良 > good;
+坚 > hard;
+噂 > meet;
+拍 > clap;
+掉 > turn;
+済 > help;
+哭 > weep;
+嘆 > sigh;
+午 > noon;
+卡 > card;
+雪 > snow;
+淵 > gulf;
+淡 > weak;
+嗟 > sigh;
+淑 > good;
+藍 > blue;
+淋 > drip;
+涼 > cool;
+载 > load;
+刺 > stab;
+薪 > fuel;
+销 > melt;
+鱼 > fish;
+喚 > call;
+喘 > pant;
+盘 > tray;
+薔 > rose;
+喇 > horn;
+薄 > thin;
+啼 > weep;
+架 > rack;
+浸 > soak;
+款 > item;
+浪 > wave;
+蕩 > pond;
+洪 > vast;
+镇 > town;
+浄 > pure;
+旅 > trip;
+唾 > spit;
+唱 > sing;
+蔵 > hide;
+唯 > only;
+洩 > leak;
+洞 > cave;
+骨 > bone;
+洗 > wash;
+唖 > dumb;
+鴉 > crow;
+唇 > lips;
+泳 > dive;
+哲 > wise;
+哩 > mile;
+墙 > wall;
+圣 > holy;
+鳥 > bird;
+跃 > skip;
+晓 > dawn;
+泄 > leak;
+隐 > hide;
+蒼 > blue;
+恐 > fear;
+沼 > lake;
+付 > give;
+厅 > hall;
+咬 > bite;
+腿 > legs;
+沖 > pour;
+硬 > hard;
+沈 > sink;
+售 > sell;
+遗 > lose;
+探 > find;
+葬 > bury;
+缓 > slow;
+葦 > reed;
+池 > pool;
+烧 > burn;
+葉 > leaf;
+束 > bind;
+呆 > dull;
+吻 > kiss;
+吹 > blow;
+休 > rest;
+叹 > sigh;
+氏 > clan;
+签 > sign;
+氈 > felt;
+奶 > milk;
+毬 > ball;
+菩 > herb;
+叢 > bush;
+挂 > hang;
+航 > sail;
+毘 > help;
+拳 > fist;
+乘 > ride;
+袁 > robe;
+址 > site;
+毆 > beat;
+殿 > hall;
+殺 > kill;
+核 > seed;
+补 > mend;
+赞 > help;
+亦 > also;
+歳 > year;
+柔 > soft;
+歩 > step;
+惜 > pity;
+魚 > fish;
+歎 > sigh;
+魂 > soul;
+乔 > tall;
+粮 > food;
+茫 > vast;
+谋 > plan;
+敏 > fast;
+茎 > stem;
+零 > zero;
+荡 > pond;
+勾 > hook;
+犹 > like;
+髮 > hair;
+髪 > hair;
+乃 > then;
+抬 > lift;
+體 > body;
+苔 > moss;
+動 > move;
+启 > open;
+冒 > risk;
+穷 > poor;
+檣 > mast;
+侧 > side;
+旦 > dawn;
+纯 > pure;
+闭 > shut;
+凉 > cool;
+碗 > bowl;
+剥 > peel;
+滚 > turn;
+润 > soft;
+剛 > hard;
+驗 > test;
+則 > rule;
+蓝 > blue;
+樹 > tree;
+蛋 > eggs;
+促 > urge;
+颜 > face;
+贫 > poor;
+杰 > hero;
+舟 > boat;
+験 > test;
+恋 > love;
+迟 > late;
+穴 > cave;
+赖 > rely;
+駛 > sail;
+駒 > colt;
+凌 > pure;
+乌 > crow;
+岗 > post;
+铺 > shop;
+馴 > tame;
+伍 > five;
+躲 > hide;
+箱 > case;
+帐 > tent;
+膝 > knee;
+膚 > skin;
+悉 > know;
+册 > book;
+冊 > book;
+盈 > fill;
+拖 > drag;
+昏 > dusk;
+戒 > warn;
+页 > page;
+尘 > dust;
+脣 > lips;
+井 > well;
+汪 > vast;
+脇 > ribs;
+脅 > ribs;
+恰 > just;
+椀 > bowl;
+描 > copy;
+乏 > lack;
+胞 > womb;
+棚 > tent;
+怜 > pity;
+佳 > good;
+鸟 > bird;
+僅 > only;
+風 > wind;
+梨 > pear;
+弯 > bend;
+亏 > lose;
+傑 > hero;
+酸 > tart;
+聽 > hear;
+職 > duty;
+桶 > pail;
+聴 > hear;
+瘦 > thin;
+側 > side;
+绩 > spin;
+聞 > hear;
+聖 > holy;
+顔 > face;
+顏 > face;
+牵 > drag;
+頼 > rely;
+租 > rent;
+頸 > neck;
+扭 > turn;
+頭 > head;
+擦 > wipe;
+殷 > many;
+頚 > neck;
+領 > neck;
+盼 > look;
+吟 > sing;
+耕 > plow;
+苍 > blue;
+順 > obey;
+項 > neck;
+宏 > wide;
+頁 > page;
+娃 > baby;
+暖 > warm;
+锁 > lock;
+砍 > hack;
+係 > bind;
+挨 > near;
+慈 > kind;
+羹 > soup;
+羮 > soup;
+鞭 > whip;
+羨 > envy;
+窝 > nest;
+杜 > stop;
+撤 > omit;
+來 > come;
+東 > east;
+筹 > chip;
+稀 > rare;
+杖 > cane;
+拨 > move;
+踢 > kick;
+迁 > move;
+佇 > wait;
+袭 > raid;
+驶 > sail;
+霰 > hail;
+惧 > fear;
+纽 > knot;
+丛 > bush;
+悠 > long;
+曼 > long;
+書 > book;
+缠 > wrap;
+滋 > grow;
+碧 > jade;
+唤 > call;
+胁 > ribs;
+谱 > list;
+隱 > hide;
+丘 > hill;
+亞 > asia;
+纒 > wrap;
+杆 > pole;
+纏 > wrap;
+隊 > team;
+悬 > hang;
+隈 > cove;
+崔 > high;
+纂 > edit;
+唉 > alas;
+暁 > dawn;
+笼 > cage;
+陸 > land;
+繪 > draw;
+繩 > rope;
+慨 > sigh;
+乗 > ride;
+绳 > rope;
+時 > time;
+矿 > mine;
+遣 > send;
+镖 > dart;
+遵 > obey;
+兆 > omen;
+钓 > fish;
+披 > wear;
+昇 > rise;
+縄 > rope;
+昂 > rise;
+緩 > slow;
+編 > knit;
+抄 > copy;
+债 > debt;
+肤 > skin;
+歇 > rest;
+開 > open;
+閉 > shut;
+斉 > even;
+斃 > kill;
+罕 > rare;
+門 > gate;
+長 > long;
+贷 > lend;
+絵 > draw;
+颈 > neck;
+絲 > silk;
+脖 > neck;
+堡 > fort;
+絨 > silk;
+給 > give;
+赐 > give;
+颂 > laud;
+結 > knot;
+砖 > tile;
+絆 > loop;
+哑 > dumb;
+細 > fine;
+滩 > bank;
+钉 > nail;
+哄 > coax;
+铃 > bell;
+純 > pure;
+紐 > knot;
+紋 > line;
+拚 > risk;
+糸 > silk;
+糧 > food;
+契 > deed;
+懒 > lazy;
+猎 > hunt;
+嵩 > high;
+盐 > salt;
+摺 > fold;
+籠 > cage;
+陵 > hill;
+裹 > wrap;
+绘 > draw;
+鐵 > iron;
+鐡 > iron;
+篭 > cage;
+篤 > deep;
+挽 > pull;
+粹 > pure;
+節 > knot;
+掣 > drag;
+掛 > hang;
+鎖 > lock;
+箋 > note;
+捲 > curl;
+泼 > pour;
+秃 > bald;
+録 > copy;
+绑 > bind;
+鸭 > duck;
+掀 > lift;
+纹 > line;
+趟 > time;
+吼 > roar;
+窺 > peep;
+窶 > poor;
+叠 > pile;
+啸 > roar;
+窮 > poor;
+銑 > mill;
+婴 > baby;
+躬 > body;
+毙 > kill;
+逸 > flee;
+琼 > jade;
+鉄 > iron;
+挪 > move;
+晌 > noon;
+戸 > door;
+鈴 > bell;
+稱 > call;
+贱 > mean;
+種 > seed;
+钩 > hook;
+戀 > love;
+懼 > fear;
+懸 > hang;
+釣 > fish;
+釘 > nail;
+鸦 > crow;
+狮 > lion;
+妮 > maid;
+禿 > bald;
+窑 > kiln;
+塘 > pond;
+纤 > fine;
+醫 > cure;
+憩 > rest;
+憐 > pity;
+憎 > hate;
+羡 > envy;
+慾 > lust;
+祷 > pray;
+舆 > cart;
+祈 > pray;
+嫩 > soft;
+蹄 > hoof;
+愛 > love;
+鄙 > mean;
+惡 > evil;
+沧 > blue;
+確 > sure;
+悪 > evil;
+帆 > sail;
+涵 > soak;
+邊 > edge;
+澡 > wash;
+遺 > lose;
+遲 > late;
+烤 > bake;
+峻 > high;
+過 > pass;
+運 > luck;
+尬 > limp;
+遅 > late;
+遁 > hide;
+週 > week;
+佑 > help;
+連 > join;
+怠 > idle;
+這 > this;
+砂 > sand;
+胶 > glue;
+谣 > sing;
+梳 > comb;
+祁 > pray;
+啤 > beer;
+铸 > melt;
+躯 > body;
+酿 > brew;
+捣 > hull;
+玫 > rose;
+噢 > moan;
+纺 > spin;
+窟 > hole;
+兑 > cash;
+冥 > dark;
+觅 > seek;
+沸 > boil;
+扁 > flat;
+眨 > wink;
+瘾 > rash;
+黯 > dark;
+妞 > girl;
+俏 > like;
+孽 > evil;
+弊 > evil;
+妃 > wife;
+壤 > soil;
+翔 > soar;
+巩 > bind;
+帜 > flag;
+蕾 > buds;
+铅 > lead;
+绒 > silk;
+窥 > peep;
+锣 > gong;
+撼 > move;
+嗦 > suck;
+轴 > axle;
+涕 > tear;
+笃 > deep;
+窍 > hole;
+扳 > pull;
+遏 > stop;
+吆 > bawl;
+熔 > melt;
+聋 > deaf;
+募 > levy;
+疤 > scar;
+蚁 > ants;
+悯 > pity;
+烘 > bake;
+牟 > make;
+崭 > high;
+巢 > nest;
+沮 > stop;
+湛 > deep;
+晦 > dark;
+驹 > colt;
+诫 > warn;
+墩 > heap;
+巍 > high;
+攒 > save;
+绊 > loop;
+懈 > idle;
+殴 > beat;
+皂 > soap;
+蟹 > crab;
+绷 > bind;
+匿 > hide;
+唠 > chat;
+苇 > reed;
+拽 > drag;
+烹 > boil;
+啃 > gnaw;
+羔 > lamb;
+锈 > rust;
+亢 > high;
+肋 > ribs;
+衲 > mend;
+掐 > hold;
+懦 > weak;
+腓 > calf;
+彷 > like;
+骡 > mule;
+醇 > rich;
+驯 > tame;
+纬 > woof;
+犁 > plow;
+拯 > help;
+龚 > give;
+蛤 > clam;
+戮 > kill;
+毡 > felt;
+咀 > suck;
+呱 > wail;
+戎 > arms;
+蔼 > lush;
+茸 > soft;
+礁 > reef;
+闩 > bolt;
+涤 > wash;
+渍 > soak;
+跛 > lame;
+蟆 > frog;
+偌 > thus;
+邑 > area;
+匾 > flat;
+笺 > note;
+箍 > hoop;
+噬 > bite;
+蟠 > coil;
+赁 > rent;
+腌 > salt;
+掂 > heft;
+遐 > afar;
+甬 > path;
+僮 > page;
+垛 > heap;
+吠 > bark;
+踵 > heel;
+蛾 > moth;
+耘 > weed;
+暄 > warm;
+螃 > crab;
+啕 > wail;
+蟾 > toad;
+筏 > raft;
+籽 > seed;
+犊 > calf;
+煦 > kind;
+臊 > rank;
+撬 > lift;
+毗 > help;
+蹿 > leap;
+咆 > roar;
+鲤 > carp;
+辕 > axle;
+瀚 > vast;
+芋 > taro;
+雹 > hail;
+鹪 > wren;
+骼 > bone;
+莘 > long;
+谧 > calm;
+蜕 > molt;
+焊 > weld;
+耙 > rake;
+缄 > seal;
+漩 > eddy;
+饵 > bait;
+辍 > stop;
+谑 > jeer;
+恁 > that;
+傩 > rich;
+瘠 > thin;
+嵘 > high;
+峥 > high;
+钅 > gold;
+湮 > bury;
+颏 > chin;
+铎 > bell;
+蔷 > rose;
+豺 > wolf;
+熨 > iron;
+呷 > suck;
+闳 > gate;
+芮 > tiny;
+陨 > fall;
+璨 > gems;
+泵 > pump;
+翱 > soar;
+戕 > kill;
+莓 > moss;
+豌 > peas;
+堑 > moat;
+潼 > high;
+疵 > flaw;
+迤 > wind;
+怵 > fear;
+榈 > palm;
+儆 > warn;
+嗥 > roar;
+礴 > fill;
+鬃 > mane;
+岐 > high;
+啻 > only;
+咝 > hiss;
+揄 > lift;
+潸 > weep;
+讴 > sing;
+趄 > weak;
+邋 > rags;
+胤 > heir;
+栉 > comb;
+粕 > lees;
+颔 > chin;
+啮 > bite;
+轲 > axle;
+孱 > weak;
+挞 > flog;
+镫 > lamp;
+臧 > good;
+鹜 > duck;
+昕 > dawn;
+锷 > high;
+铄 > melt;
+辶 > walk;
+阄 > lots;
+锌 > zinc;
+荻 > reed;
+喙 > beak;
+蜍 > toad;
+缢 > hang;
+柢 > root;
+窠 > nest;
+肛 > anus;
+誊 > copy;
+跎 > slip;
+聩 > deaf;
+痂 > scab;
+鸢 > kite;
+抻 > pull;
+沤 > soak;
+涿 > drip;
+牦 > tail;
+猷 > plan;
+墉 > wall;
+暹 > rise;
+闱 > gate;
+轭 > yoke;
+弭 > stop;
+洵 > true;
+瓯 > bowl;
+濠 > moat;
+圩 > dike;
+羸 > weak;
+癯 > thin;
+瘢 > scar;
+幄 > tent;
+泅 > swim;
+矾 > alum;
+蚩 > worm;
+鸷 > hawk;
+蹇 > lame;
+耋 > aged;
+苒 > lush;
+逋 > flee;
+藓 > moss;
+鬻 > sell;
+泫 > weep;
+啭 > sing;
+坨 > lump;
+蠹 > moth;
+疱 > acne;
+锒 > lock;
+暝 > dark;
+煊 > warm;
+爨 > oven;
+囝 > baby;
+垩 > holy;
+怼 > hate;
+崴 > high;
+拊 > slap;
+扌 > hand;
+钤 > lock;
+樯 > mast;
+骟 > geld;
+燹 > fire;
+馐 > food;
+圹 > tomb;
+龈 > gums;
+蜊 > clam;
+痖 > dumb;
+歆 > like;
+赉 > give;
+铣 > mill;
+灏 > vast;
+瘙 > itch;
+闼 > door;
+坌 > dust;
+椤 > tree;
+阋 > feud;
+嵯 > high;
+酰 > acyl;
+瘗 > bury;
+疣 > wart;
+穑 > farm;
+槎 > raft;
+桴 > raft;
+溏 > pool;
+礻 > cult;
+棰 > flog;
+狷 > rash;
+蒹 > reed;
+佤 > kawa;
+麸 > bran;
+鸱 > kite;
+缫 > draw;
+纡 > bend;
+嵬 > high;
+菖 > iris;
+愍 > pity;
+嫱 > lady;
+莨 > herb;
+谝 > brag;
+氖 > neon;
+颛 > good;
+燠 > warm;
+潴 > pond;
+堙 > bury;
+隗 > high;
+丿 > line;
+鲮 > carp;
+跖 > sole;
+蚋 > gnat;
+汔 > near;
+痤 > acne;
+贶 > give;
+纟 > silk;
+侑 > help;
+耪 > plow;
+觜 > beak;
+筢 > rake;
+朐 > warm;
+觇 > peek;
+檗 > tree;
+菡 > buds;
+偾 > ruin;
+隹 > bird;
+舡 > boat;
+疒 > sick;
+噍 > chew;
+埝 > bank;
+鲩 > carp;
+鲒 > clam;
+襞 > fold;
+灬 > fire;
+脒 > open;
+柙 > cage;
+湔 > wash;
+洳 > damp;
+尢 > weak;
+髟 > hair;
+鳎 > sole;
+艚 > ship;
+鹩 > wren;
+炱 > soot;
+膪 > pork;
+栊 > cage;
+绲 > cord;
+宀 > roof;
+闶 > door;
+猊 > lion;
+岵 > hill;
+卩 > seal;
+诎 > bend;
+倮 > bare;
+龔 > give;
+齮 > bite;
+齧 > bite;
+齦 > gums;
+齗 > gums;
+齕 > gnaw;
+鼛 > drum;
+鼖 > drum;
+黶 > mole;
+麩 > bran;
+麛 > fawn;
+麚 > buck;
+麑 > fawn;
+麌 > stag;
+麃 > till;
+鹎 > bird;
+鹆 > myna;
+鷯 > wren;
+鷦 > wren;
+鷙 > hawk;
+鷕 > call;
+鶱 > soar;
+鶩 > duck;
+鶃 > hawk;
+鶂 > hawk;
+鵯 > bird;
+鵄 > kite;
+鴨 > duck;
+鴟 > kite;
+鴄 > duck;
+鳷 > bird;
+鳶 > kite;
+鳋 > carp;
+鲼 > fish;
+鲋 > carp;
+鲆 > sole;
+鰨 > sole;
+鯪 > carp;
+鯉 > carp;
+鯈 > fish;
+鯇 > carp;
+鮚 > clam;
+鮒 > carp;
+鮆 > fish;
+魋 > bear;
+鬮 > lots;
+鬩 > feud;
+鬑 > long;
+髞 > high;
+驘 > mule;
+騾 > mule;
+騸 > geld;
+騯 > loud;
+騣 > mane;
+駽 > grey;
+駴 > drum;
+饌 > feed;
+饈 > food;
+餌 > bait;
+餇 > food;
+飡 > meal;
+飌 > wind;
+颿 > sail;
+颺 > soar;
+顓 > good;
+頷 > chin;
+頮 > wash;
+頦 > chin;
+頌 > laud;
+須 > must;
+鞹 > skin;
+鞟 > skin;
+鞙 > fine;
+鞏 > bind;
+鞉 > drum;
+鞀 > drum;
+靑 > blue;
+霤 > drip;
+霣 > fall;
+霢 > dust;
+隕 > fall;
+隄 > dike;
+阤 > hill;
+阞 > vein;
+闥 > door;
+闢 > open;
+闓 > open;
+闈 > gate;
+闆 > boss;
+閟 > hide;
+閎 > gate;
+閌 > door;
+閇 > shut;
+閂 > bolt;
+镸 > long;
+镩 > pick;
+镕 > fuse;
+铴 > gong;
+鑼 > gong;
+鑢 > file;
+鑠 > melt;
+鑛 > mine;
+鑄 > melt;
+鐸 > bell;
+鐩 > lens;
+鐙 > lamp;
+鐋 > gong;
+鐄 > bell;
+鏽 > rust;
+鏰 > coin;
+鏥 > rust;
+鏢 > dart;
+鎻 > lock;
+鎮 > town;
+鎭 > town;
+鎔 > fuse;
+鍔 > high;
+錄 > copy;
+鋳 > melt;
+鋚 > iron;
+鋆 > gold;
+銹 > rust;
+銷 > melt;
+銕 > iron;
+鉱 > mine;
+鉤 > hook;
+鈬 > bell;
+鈐 > lock;
+鈎 > hook;
+鈆 > lead;
+釀 > brew;
+醸 > brew;
+鄑 > kick;
+邉 > edge;
+遻 > meet;
+遷 > move;
+遟 > late;
+迺 > then;
+迚 > very;
+迆 > wind;
+辵 > walk;
+轝 > envy;
+轗 > fail;
+轌 > sled;
+轅 > axle;
+輿 > cart;
+輴 > sled;
+輟 > stop;
+軻 > axle;
+軸 > axle;
+軥 > yoke;
+軟 > soft;
+軛 > yoke;
+軆 > body;
+軀 > body;
+躿 > tall;
+躶 > bare;
+躴 > tall;
+躳 > body;
+躱 > hide;
+躰 > body;
+躥 > leap;
+躒 > walk;
+蹢 > hoof;
+蹏 > hoof;
+踴 > leap;
+踭 > heel;
+踘 > ball;
+跼 > bent;
+跲 > hood;
+跱 > stop;
+跞 > walk;
+跙 > weak;
+趯 > jump;
+赱 > walk;
+赕 > fine;
+贊 > help;
+賵 > gift;
+賴 > rely;
+賧 > fine;
+賤 > mean;
+賜 > give;
+賛 > help;
+賚 > give;
+賎 > mean;
+貺 > give;
+貎 > lion;
+豭 > boar;
+讋 > fear;
+謠 > sing;
+謔 > jeer;
+謐 > calm;
+謄 > copy;
+諞 > brag;
+誧 > huge;
+誡 > warn;
+誃 > part;
+詠 > sing;
+詟 > fear;
+詘 > bend;
+觝 > gore;
+覘 > peek;
+覓 > seek;
+袿 > gown;
+衹 > only;
+衚 > lane;
+衖 > lane;
+衒 > brag;
+蠭 > bees;
+蠧 > moth;
+蠏 > crab;
+蟇 > frog;
+螉 > wasp;
+蜹 > gnat;
+蜅 > crab;
+蛻 > molt;
+蚡 > mole;
+虷 > worm;
+虧 > lose;
+虓 > roar;
+蘚 > moss;
+蘒 > \:143;
+藹 > lush;
+藟 > vine;
+藇 > fine;
+薟 > vine;
+薙 > weed;
+薁 > vine;
+蕘 > fuel;
+蔴 > hemp;
+蓫 > dock;
+葒 > herb;
+萜 > c5h8;
+菾 > beet;
+莻 > late;
+莶 > vine;
+莖 > stem;
+荭 > herb;
+荛 > fuel;
+艭 > ship;
+艖 > raft;
+舩 > boat;
+臑 > soft;
+臉 > face;
+臁 > calf;
+膷 > soup;
+膴 > fine;
+膠 > glue;
+腶 > meat;
+腳 > foot;
+腒 > game;
+腍 > soft;
+脲 > urea;
+胠 > open;
+胏 > meat;
+胊 > yoke;
+肬 > wart;
+聾 > deaf;
+聼 > hear;
+聵 > deaf;
+耭 > plow;
+耠 > till;
+耎 > weak;
+翺 > soar;
+羭 > good;
+羜 > lamb;
+缋 > draw;
+纚 > long;
+纖 > fine;
+纕 > belt;
+纎 > fine;
+纍 > bind;
+纇 > knot;
+纆 > cord;
+繤 > edit;
+繢 > draw;
+繠 > hang;
+繘 > rope;
+繊 > fine;
+繅 > draw;
+繃 > bind;
+績 > spin;
+縳 > wrap;
+縯 > long;
+縢 > bind;
+縚 > band;
+縊 > hang;
+緯 > woof;
+緤 > cord;
+緘 > seal;
+緎 > seam;
+緄 > cord;
+綫 > line;
+綑 > coil;
+綍 > rope;
+綁 > bind;
+絏 > rope;
+紡 > spin;
+紆 > bend;
+糹 > silk;
+粋 > pure;
+籹 > cake;
+籙 > book;
+籏 > flag;
+籌 > chip;
+籊 > long;
+簽 > sign;
+簆 > reed;
+竅 > hole;
+竁 > bore;
+窾 > hole;
+窵 > deep;
+窯 > kiln;
+窭 > poor;
+窩 > nest;
+穽 > hole;
+穮 > weed;
+穡 > farm;
+穜 > rice;
+穐 > fall;
+穋 > rice;
+穀 > corn;
+稛 > bind;
+稑 > rice;
+秪 > only;
+秊 > year;
+禸 > rump;
+禱 > pray;
+祇 > only;
+礬 > alum;
+礧 > roll;
+礦 > mine;
+礡 > fill;
+磚 > tile;
+砿 > mine;
+矻 > toil;
+矙 > view;
+瞫 > look;
+盤 > tray;
+盝 > drip;
+盌 > bowl;
+皷 > drum;
+癶 > legs;
+癮 > rash;
+癢 > itch;
+癠 > sick;
+瘯 > itch;
+瘞 > bury;
+瘖 > dumb;
+瘂 > dumb;
+痯 > sick;
+痌 > ache;
+疧 > sick;
+疘 > anus;
+疐 > fall;
+畊 > plow;
+畇 > land;
+畄 > stop;
+甌 > bowl;
+瓘 > jade;
+瓊 > jade;
+獵 > hunt;
+獮 > hunt;
+獧 > rash;
+獋 > roar;
+獅 > lion;
+獃 > dull;
+猟 > hunt;
+猋 > wind;
+狘 > jump;
+狀 > form;
+犲 > wolf;
+犢 > calf;
+犂 > plow;
+牽 > drag;
+牴 > gore;
+牣 > fill;
+牆 > wall;
+爟 > fire;
+爖 > fire;
+爇 > burn;
+燨 > fire;
+熇 > bake;
+煚 > fire;
+煖 > warm;
+煑 > cook;
+煇 > weld;
+焮 > heat;
+焜 > fire;
+烝 > rise;
+烔 > heat;
+烏 > crow;
+灝 > vast;
+灘 > bank;
+瀦 > pond;
+濳 > hide;
+濔 > many;
+濊 > vast;
+濈 > many;
+澒 > vast;
+潤 > soft;
+潛 > hide;
+潑 > pour;
+潅 > pour;
+漰 > roar;
+漭 > vast;
+漚 > soak;
+漙 > dewy;
+漘 > bank;
+滾 > turn;
+滺 > flow;
+滮 > flow;
+滌 > wash;
+滉 > deep;
+滄 > blue;
+溼 > damp;
+湻 > pure;
+湲 > flow;
+湝 > flow;
+淰 > fish;
+淨 > pure;
+涴 > daub;
+涊 > dirt;
+泙 > roar;
+沬 > dusk;
+沕 > deep;
+汍 > weep;
+氝 > neon;
+氊 > felt;
+氄 > down;
+氂 > tail;
+歲 > year;
+歗 > roar;
+歊 > sigh;
+欐 > beam;
+櫳 > cage;
+櫚 > palm;
+檴 > tree;
+檍 > ilex;
+橦 > tree;
+橁 > tree;
+槹 > spar;
+槃 > tray;
+楰 > tree;
+楩 > tree;
+楟 > tree;
+楘 > band;
+椸 > rack;
+椑 > oval;
+棬 > bowl;
+棪 > tree;
+棑 > raft;
+梴 > long;
+桿 > pole;
+桹 > palm;
+桋 > tree;
+栻 > tree;
+柣 > sill;
+柂 > helm;
+枴 > cane;
+杝 > tree;
+杗 > beam;
+朿 > stab;
+朳 > tree;
+朘 > wane;
+曉 > dawn;
+晳 > fair;
+昻 > rise;
+昬 > dusk;
+昫 > warm;
+旹 > time;
+旴 > dawn;
+旜 > flag;
+旂 > flag;
+敿 > bind;
+敽 > bind;
+敻 > long;
+攢 > save;
+攅 > save;
+擫 > tuck;
+擣 > hull;
+撻 > flog;
+撥 > move;
+撝 > wave;
+摲 > raze;
+摦 > wide;
+搥 > beat;
+搘 > prop;
+搗 > hull;
+搒 > pole;
+搌 > bind;
+搆 > pull;
+掞 > easy;
+掗 > take;
+捘 > push;
+捄 > long;
+挐 > drag;
+拏 > take;
+抶 > beat;
+抆 > wipe;
+戶 > door;
+戁 > fear;
+懶 > lazy;
+懮 > calm;
+懟 > hate;
+懜 > dull;
+憰 > wily;
+憫 > pity;
+憙 > like;
+憘 > like;
+憇 > rest;
+慴 > fear;
+慂 > urge;
+愒 > rest;
+恇 > fear;
+怳 > wild;
+怭 > rude;
+怚 > dull;
+彡 > hair;
+彎 > bend;
+廼 > then;
+廳 > hall;
+廰 > hall;
+廧 > wall;
+廎 > room;
+幯 > wipe;
+幤 > evil;
+幟 > flag;
+幚 > help;
+幋 > belt;
+幇 > help;
+帟 > tent;
+嶸 > high;
+嶄 > high;
+嵳 > high;
+崢 > high;
+峯 > peak;
+峇 > cave;
+岧 > peak;
+屇 > cave;
+尲 > limp;
+尫 > lame;
+尪 > lame;
+尩 > weak;
+尣 > lame;
+將 > will;
+寠 > poor;
+寔 > real;
+孻 > last;
+嬾 > lazy;
+嬰 > baby;
+嬭 > milk;
+嬙 > lady;
+嫈 > lady;
+媊 > star;
+婞 > hate;
+婐 > maid;
+娸 > ugly;
+娵 > star;
+姽 > good;
+姮 > lady;
+姤 > mate;
+夛 > much;
+夐 > long;
+壙 > tomb;
+壒 > dust;
+壌 > soil;
+墻 > wall;
+墦 > tomb;
+塹 > moat;
+堲 > hate;
+堨 > daub;
+堋 > bury;
+埰 > fief;
+埈 > high;
+垜 > heap;
+坱 > dust;
+坋 > dust;
+囥 > hide;
+囓 > gnaw;
+囀 > sing;
+嚤 > slow;
+嚙 > bite;
+嚄 > roar;
+噳 > many;
+噝 > hiss;
+噉 > bite;
+嘽 > pant;
+嘯 > roar;
+嘮 > chat;
+嘨 > roar;
+嘜 > mark;
+嗰 > that;
+嗊 > sing;
+喬 > tall;
+喨 > wail;
+啟 > open;
+啞 > dumb;
+啙 > poor;
+啓 > open;
+啀 > gnaw;
+唶 > sigh;
+唛 > mark;
+咼 > chat;
+咷 > howl;
+咮 > beak;
+呙 > chat;
+呎 > foot;
+呇 > star;
+吿 > tell;
+吽 > ''om'';
+吪 > move;
+吋 > inch;
+厔 > stop;
+區 > area;
+匵 > case;
+勹 > wrap;
+剺 > mark;
+剝 > peel;
+剚 > stab;
+刾 > stab;
+刜 > chop;
+刓 > trim;
+凮 > wind;
+凪 > calm;
+凨 > wind;
+凧 > kite;
+凚 > cold;
+凖 > rule;
+凔 > cold;
+冐 > risk;
+冂 > wide;
+兌 > cash;
+儾 > slow;
+儽 > lazy;
+儺 > rich;
+儱 > rude;
+儜 > weak;
+儅 > stop;
+僾 > like;
+僨 > ruin;
+債 > debt;
+傭 > hire;
+偄 > weak;
+倽 > what;
+俴 > thin;
+俔 > like;
+侢 > load;
+侜 > lies;
+侚 > fast;
+侀 > form;
+佸 > meet;
+伹 > dull;
+伱 > thou;
+仸 > bent;
+亠 > head;
+亝 > even;
+亜 > asia;
+亖 > four;
+亅 > hook;
+乼 > rope;
+乭 > rock;
+丳 > spit;
+丠 > hill;
+䵷 > frog;
+䵨 > dark;
+䵒 > glue;
+䵑 > glue;
+䴸 > bran;
+䴝 > salt;
+䴜 > salt;
+䴃 > wren;
+䳼 > gull;
+䳦 > wren;
+䳣 > kite;
+䲭 > kite;
+䲒 > crab;
+䱴 > tuna;
+䱭 > tuna;
+䱎 > tuna;
+䱍 > tuna;
+䰩 > ugly;
+䰦 > ugly;
+䰤 > ugly;
+䰕 > mane;
+䰓 > hair;
+䰋 > hair;
+䰊 > hair;
+䰇 > mane;
+䯹 > hair;
+䯟 > bone;
+䯞 > bone;
+䯕 > bony;
+䮿 > lame;
+䮾 > huge;
+䭢 > rich;
+䭡 > food;
+䭓 > food;
+䭂 > damp;
+䭀 > food;
+䬞 > wind;
+䬏 > wind;
+䫶 > ugly;
+䫪 > ugly;
+䫢 > good;
+䫑 > good;
+䫏 > ugly;
+䫊 > chin;
+䫈 > ugly;
+䫂 > ugly;
+䪦 > loud;
+䪏 > weak;
+䪆 > soft;
+䨰 > rain;
+䨮 > snow;
+䨤 > rain;
+䨔 > hail;
+䨌 > hail;
+䧻 > dove;
+䧹 > hawk;
+䦰 > lots;
+䥫 > iron;
+䥔 > gold;
+䥒 > lead;
+䤮 > iron;
+䤡 > iron;
+䤑 > wine;
+䤊 > wine;
+䣽 > wine;
+䣨 > rich;
+䡳 > cart;
+䡀 > nude;
+䠭 > lame;
+䠗 > lame;
+䠏 > feet;
+䟨 > lame;
+䟂 > slow;
+䞿 > lame;
+䞩 > lame;
+䞝 > lame;
+䞆 > bone;
+䝘 > firm;
+䝕 > good;
+䛴 > joke;
+䚽 > news;
+䚸 > good;
+䚩 > high;
+䚢 > horn;
+䙤 > good;
+䙊 > arid;
+䗩 > toad;
+䗢 > flea;
+䖸 > moth;
+䖭 > grub;
+䖪 > grub;
+䖣 > flea;
+䕢 > weak;
+䔬 > hemp;
+䓾 > lush;
+䓸 > weed;
+䓲 > fine;
+䒺 > clay;
+䒭 > rank;
+䑬 > boat;
+䑞 > shun;
+䑏 > ugly;
+䑄 > rich;
+䐳 > fish;
+䐮 > skin;
+䐓 > soft;
+䐋 > sick;
+䏸 > fish;
+䏱 > body;
+䏢 > meat;
+䏎 > milk;
+䏊 > deaf;
+䎜 > aged;
+䍚 > vast;
+䌩 > fine;
+䌝 > silk;
+䌓 > many;
+䌒 > pure;
+䌌 > lace;
+䋼 > slow;
+䋖 > long;
+䊦 > food;
+䇩 > long;
+䆭 > cave;
+䆩 > dark;
+䆦 > deep;
+䄩 > bran;
+䂃 > dark;
+䁩 > fish;
+䁆 > eyes;
+䁅 > rage;
+䀾 > many;
+䀜 > down;
+䀋 > salt;
+䀀 > cups;
+㿙 > full;
+㿎 > sick;
+㾹 > lean;
+㾪 > lean;
+㾨 > weak;
+㾛 > ugly;
+㾊 > thin;
+㾉 > thin;
+㺥 > bark;
+㹒 > bull;
+㹏 > good;
+㹎 > bull;
+㹍 > bull;
+㸸 > calf;
+㸮 > bull;
+㸎 > warm;
+㷵 > fire;
+㷴 > fire;
+㷬 > fire;
+㷘 > coal;
+㷐 > fire;
+㷄 > fire;
+㶹 > fire;
+㶯 > fire;
+㶨 > fire;
+㶧 > warm;
+㵾 > cold;
+㵶 > full;
+㵩 > many;
+㵙 > pure;
+㵖 > damp;
+㴴 > sink;
+㴱 > deep;
+㴝 > many;
+㴛 > damp;
+㴗 > deep;
+㴀 > deep;
+㳤 > good;
+㲾 > rain;
+㲻 > sunk;
+㲴 > mind;
+㲟 > hair;
+㲜 > rugs;
+㲓 > fine;
+㱴 > sick;
+㱋 > high;
+㱇 > fear;
+㰫 > glad;
+㰡 > rash;
+㰟 > hope;
+㰙 > weak;
+㰐 > oval;
+㮺 > stem;
+㮤 > pine;
+㮒 > wood;
+㭽 > root;
+㬘 > arid;
+㬉 > warm;
+㬅 > long;
+㫲 > dark;
+㫱 > mild;
+㫥 > dark;
+㫎 > mark;
+㫄 > side;
+㩼 > many;
+逸 > flee;
+洞 > cave;
+刺 > stab;
+狀 > form;
+淋 > drip;
+㧮 > high;
+匿 > hide;
+㧨 > slow;
+梨 > pear;
+李 > plum;
+陸 > land;
+戮 > kill;
+紐 > knot;
+留 > stop;
+流 > flow;
+惡 > evil;
+領 > neck;
+零 > zero;
+鈴 > bell;
+怜 > pity;
+獵 > hunt;
+㦨 > lazy;
+㦢 > pure;
+連 > join;
+秊 > year;
+戀 > love;
+憐 > pity;
+年 > year;
+㦏 > weak;
+旅 > trip;
+良 > good;
+糧 > food;
+凉 > cool;
+沈 > sink;
+殺 > kill;
+葉 > leaf;
+㥬 > fear;
+㥩 > idle;
+㥡 > idle;
+拏 > take;
+讀 > read;
+陵 > hill;
+凌 > pure;
+肋 > ribs;
+漏 > leak;
+聾 > deaf;
+籠 > cage;
+鹿 > deer;
+錄 > copy;
+路 > road;
+冷 > cold;
+來 > come;
+狼 > wolf;
+浪 > wave;
+拉 > pull;
+藍 > blue;
+㤟 > fear;
+落 > fall;
+裸 > bare;
+懶 > lazy;
+喇 > horn;
+金 > gold;
+契 > deed;
+㤉 > fear;
+滑 > slip;
+車 > cart;
+更 > more;
+㣎 > fine;
+㢜 > vast;
+㢘 > pure;
+㢔 > many;
+㢎 > hide;
+㢋 > vast;
+㢃 > high;
+㢁 > vast;
+㡦 > mess;
+㠻 > rare;
+㠩 > vast;
+㠌 > high;
+㞱 > dusk;
+㞖 > this;
+㞄 > lame;
+㝿 > lame;
+㝡 > very;
+㝠 > dark;
+㝝 > deep;
+㝑 > side;
+㝐 > face;
+㝈 > twin;
+㝄 > pure;
+㜷 > milk;
+㜛 > soft;
+㜃 > from;
+㛦 > good;
+㚧 > agil;
+㚍 > much;
+㚋 > much;
+㚊 > much;
+㚂 > dust;
+㙪 > dark;
+㙠 > dust;
+㙒 > wild;
+㙂 > wall;
+㙁 > dust;
+㘨 > deep;
+㘐 > loud;
+㗈 > long;
+㕦 > loud;
+㔄 > thin;
+㓑 > cold;
+㓎 > cold;
+㓊 > cold;
+㒚 > firm;
+㒎 > evil;
+㑿 > long;
+㑵 > envy;
+㑚 > that;
+㑌 > weak;
+㑈 > rude;
+㐡 > weak;
+㐅 > five;
+一 > one;
+人 > man;
+我 > our;
+大 > big;
+上 > top;
+你 > you;
+可 > may;
+她 > she;
+天 > sky;
+而 > and;
+然 > yes;
+没 > not;
+日 > sun;
+彩 > hue;
+十 > ten;
+用 > use;
+眼 > eye;
+又 > and;
+见 > see;
+老 > old;
+两 > two;
+外 > out;
+与 > and;
+法 > law;
+目 > eye;
+二 > two;
+点 > dot;
+盜 > rob;
+其 > his;
+盗 > rob;
+儿 > son;
+新 > new;
+床 > bed;
+皆 > all;
+海 > sea;
+少 > few;
+帽 > hat;
+叫 > cry;
+死 > die;
+放 > put;
+今 > now;
+赤 > red;
+畢 > end;
+战 > war;
+購 > buy;
+瓶 > jug;
+请 > ask;
+交 > mix;
+吃 > eat;
+買 > buy;
+非 > not;
+夫 > man;
+红 > red;
+运 > run;
+寥 > few;
+网 > net;
+飞 > fly;
+观 > see;
+猿 > ape;
+猫 > cat;
+猪 > pig;
+坐 > sit;
+謂 > say;
+狗 > dog;
+請 > ask;
+终 > end;
+切 > cut;
+犬 > dog;
+誤 > err;
+尔 > you;
+热 > hot;
+古 > old;
+牛 > cow;
+牀 > bed;
+觀 > see;
+低 > low;
+観 > see;
+熱 > hot;
+仍 > yet;
+見 > see;
+脚 > leg;
+云 > say;
+买 > buy;
+奈 > but;
+排 > row;
+壯 > big;
+壞 > bad;
+壊 > bad;
+湾 > bay;
+墨 > ink;
+否 > not;
+食 > eat;
+術 > art;
+濘 > mud;
+濕 > wet;
+露 > dew;
+齢 > age;
+齡 > age;
+蝙 > bat;
+蝋 > wax;
+鼠 > rat;
+跑 > run;
+蜂 > bee;
+艺 > art;
+點 > dot;
+摇 > wag;
+顶 > top;
+湿 > wet;
+端 > end;
+旧 > old;
+油 > oil;
+藝 > art;
+毕 > end;
+藉 > mat;
+液 > sap;
+薯 > yam;
+耳 > ear;
+喋 > nag;
+啜 > sip;
+問 > ask;
+泥 > mud;
+泣 > cry;
+哀 > sad;
+冰 > ice;
+误 > err;
+凡 > all;
+汝 > you;
+谓 > say;
+杯 > cup;
+氷 > ice;
+氣 > air;
+気 > air;
+萌 > bud;
+购 > buy;
+途 > way;
+摆 > put;
+典 > law;
+茶 > tea;
+卵 > egg;
+播 > sow;
+臂 > arm;
+欷 > sob;
+匚 > box;
+摩 > rub;
+餐 > eat;
+冠 > cap;
+芽 > bud;
+芸 > rue;
+劣 > bad;
+剽 > rob;
+割 > cut;
+缘 > hem;
+俩 > two;
+壮 > big;
+忧 > sad;
+舊 > old;
+與 > and;
+龄 > age;
+惨 > sad;
+腾 > fly;
+染 > dye;
+膿 > pus;
+榻 > cot;
+円 > yen;
+兩 > two;
+兒 > son;
+腐 > rot;
+児 > son;
+脂 > fat;
+飛 > fly;
+肥 > fat;
+援 > aid;
+胖 > fat;
+哼 > hum;
+偵 > spy;
+顛 > top;
+顎 > jaw;
+倶 > all;
+頂 > top;
+罐 > jar;
+捷 > win;
+霧 > fog;
+乾 > dry;
+俱 > all;
+赢 > win;
+缝 > sew;
+抚 > pat;
+挖 > dig;
+曝 > sun;
+雾 > fog;
+暑 > hot;
+颠 > top;
+扇 > fan;
+曰 > say;
+乞 > beg;
+赌 > bet;
+縫 > sew;
+両 > two;
+欠 > owe;
+氛 > gas;
+縁 > hem;
+締 > tie;
+弗 > not;
+網 > net;
+斬 > cut;
+絶 > cut;
+辟 > law;
+終 > end;
+襄 > aid;
+炒 > fry;
+锡 > tin;
+紅 > red;
+撫 > pat;
+鑵 > jar;
+坑 > pit;
+搖 > wag;
+揺 > wag;
+撕 > rip;
+揉 > rub;
+磕 > hit;
+斩 > cut;
+掠 > rob;
+掘 > dig;
+谎 > lie;
+銜 > bit;
+赋 > tax;
+囊 > bag;
+戰 > war;
+戦 > war;
+憂 > sad;
+搂 > hug;
+慘 > sad;
+侦 > spy;
+壶 > jar;
+弓 > bow;
+蜡 > wax;
+庐 > hut;
+歹 > bad;
+惟 > but;
+衔 > bit;
+坎 > pit;
+兹 > now;
+毯 > rug;
+钥 > key;
+斧 > axe;
+赎 > buy;
+彤 > red;
+燥 > dry;
+佬 > man;
+瞅 > see;
+蹦 > hop;
+霄 > sky;
+翩 > fly;
+暨 > and;
+迢 > far;
+缔 > tie;
+褚 > bag;
+蚂 > ant;
+揍 > hit;
+擂 > rub;
+锄 > hoe;
+捅 > jab;
+鞠 > bow;
+骰 > die;
+踉 > hop;
+桨 > oar;
+拌 > mix;
+狸 > fox;
+瀛 > sea;
+噩 > bad;
+蓓 > bud;
+窖 > pit;
+掺 > mix;
+猖 > mad;
+趾 > toe;
+蘸 > dip;
+淤 > mud;
+琦 > gem;
+脓 > pus;
+畸 > odd;
+盎 > cup;
+茗 > tea;
+胥 > all;
+怆 > sad;
+泞 > mud;
+剐 > cut;
+舀 > dip;
+坯 > dam;
+堰 > dam;
+幺 > one;
+牯 > cow;
+弼 > aid;
+鳝 > eel;
+斫 > cut;
+怩 > shy;
+溥 > big;
+橹 > oar;
+黠 > sly;
+绌 > sew;
+剜 > cut;
+罔 > net;
+颚 > jaw;
+唿 > sad;
+耨 > hoe;
+膘 > fat;
+镳 > bit;
+腴 > fat;
+狯 > sly;
+镢 > hoe;
+裨 > aid;
+锛 > adz;
+囵 > all;
+邈 > far;
+殒 > die;
+啖 > eat;
+麋 > elk;
+鳍 > fin;
+刍 > mow;
+侗 > big;
+楫 > oar;
+猡 > pig;
+柞 > oak;
+佥 > all;
+鳗 > eel;
+鞣 > tan;
+棹 > oar;
+陂 > dam;
+殁 > die;
+觚 > jug;
+臬 > law;
+猃 > dog;
+寤 > few;
+僖 > joy;
+犭 > dog;
+羝 > ram;
+貔 > fox;
+觌 > see;
+槠 > oak;
+溻 > wet;
+芟 > mow;
+俣 > big;
+瓿 > jar;
+逖 > far;
+哜 > sip;
+隰 > low;
+鲡 > eel;
+毹 > rug;
+殪 > die;
+缏 > hem;
+饣 > eat;
+埤 > add;
+坭 > mud;
+龥 > beg;
+齣 > act;
+鼡 > rat;
+黕 > red;
+鹋 > emu;
+鴞 > owl;
+鲕 > roe;
+鱺 > eel;
+鱔 > eel;
+鱓 > eel;
+鰻 > eel;
+鰭 > fin;
+鮞 > roe;
+鬷 > pot;
+鬴 > pot;
+鬆 > lax;
+髢 > wig;
+骽 > leg;
+騵 > bay;
+騳 > run;
+騰 > fly;
+騢 > bay;
+騂 > red;
+駉 > big;
+餔 > eat;
+飠 > eat;
+顚 > top;
+頳 > red;
+頫 > bow;
+韖 > tan;
+韎 > red;
+阬 > pit;
+鑰 > key;
+鑯 > awl;
+鑣 > bit;
+鐏 > cap;
+鏚 > axe;
+鎡 > hoe;
+鍾 > cup;
+錫 > tin;
+錤 > hoe;
+錛 > adz;
+錔 > cap;
+鋤 > hoe;
+鉏 > hoe;
+遉 > spy;
+轑 > rut;
+踶 > paw;
+跦 > hop;
+贖 > buy;
+贏 > win;
+賭 > bet;
+賦 > tax;
+貜 > ape;
+貓 > cat;
+豼 > fox;
+豷 > man;
+豬 > pig;
+豨 > pig;
+豝 > sow;
+謊 > lie;
+覿 > see;
+覩 > see;
+覌 > see;
+裀 > mat;
+衜 > way;
+蠮 > bee;
+蠟 > wax;
+螞 > ant;
+螘 > ant;
+蝯 > ape;
+蜑 > egg;
+藷 > yam;
+蕷 > yam;
+蕓 > rue;
+蔋 > dry;
+蓺 > art;
+蓣 > yam;
+蒴 > pod;
+葄 > mat;
+萠 > bud;
+茲 > now;
+芻 > mow;
+艪 > oar;
+臕 > fat;
+臇 > fat;
+膟 > fat;
+膋 > fat;
+膃 > fat;
+肭 > fat;
+肀 > pen;
+耡 > hoe;
+翾 > fly;
+翃 > fly;
+羘 > ram;
+羇 > inn;
+罻 > net;
+罦 > net;
+罟 > net;
+罆 > jar;
+缾 > jar;
+緶 > hem;
+緵 > net;
+緰 > net;
+緣 > hem;
+絕 > cut;
+絀 > sew;
+紮 > tie;
+籥 > key;
+箑 > fan;
+窞 > pit;
+窌 > pit;
+窊 > pit;
+窅 > far;
+砲 > gun;
+瞶 > dim;
+睊 > see;
+眛 > dim;
+癙 > ill;
+瘨 > mad;
+瘏 > ill;
+痗 > ill;
+甒 > jar;
+甇 > jar;
+甁 > jug;
+甀 > jar;
+瓻 > jar;
+瓀 > gem;
+璅 > gem;
+玆 > now;
+玀 > pig;
+獫 > dog;
+獪 > sly;
+獢 > dog;
+猭 > ape;
+猨 > ape;
+牼 > man;
+爾 > you;
+焞 > dim;
+灋 > law;
+澝 > mud;
+潚 > gay;
+沒 > not;
+毧 > fur;
+殣 > die;
+殞 > die;
+歿 > die;
+歠 > sip;
+櫧 > oak;
+櫓 > oar;
+櫂 > oar;
+檝 > oar;
+橧 > hut;
+樠 > elm;
+槳 > oar;
+楎 > peg;
+椷 > box;
+棓 > hit;
+梶 > oar;
+梩 > hod;
+桮 > cup;
+柸 > cup;
+杅 > tub;
+曁 > and;
+晞 > dry;
+昄 > big;
+斸 > cut;
+斲 > cut;
+斨 > axe;
+攵 > rap;
+攴 > rap;
+擺 > put;
+摟 > hug;
+搰 > dig;
+搨 > rub;
+搧 > fan;
+搃 > all;
+挼 > rub;
+慱 > sad;
+愴 > sad;
+惙 > sad;
+弨 > bow;
+弤 > bow;
+廬 > hut;
+帣 > bag;
+尓 > you;
+尒 > you;
+寙 > bad;
+嬛 > apt;
+妵 > man;
+妳 > you;
+奭 > red;
+奜 > big;
+奌 > dot;
+壺 > jar;
+壷 > jar;
+墫 > cup;
+堌 > dam;
+埶 > art;
+埧 > dam;
+圇 > all;
+嚢 > bag;
+嚌 > sip;
+喫 > eat;
+啗 > eat;
+匸 > box;
+劚 > cut;
+剸 > cut;
+剮 > cut;
+剉 > cut;
+刲 > cut;
+凣 > all;
+凢 > all;
+凃 > mud;
+冫 > ice;
+冞 > far;
+僉 > all;
+偯 > sob;
+倞 > far;
+俁 > big;
+侊 > big;
+佽 > aid;
+亓 > his;
+亁 > dry;
+乢 > lid;
+丶 > dot;
+䳠 > owl;
+䲊 > fry;
+䰠 > god;
+䪞 > bad;
+䪚 > hot;
+䩆 > old;
+䨿 > bad;
+䢛 > far;
+䢓 > bed;
+䡜 > car;
+䝆 > hog;
+䜣 > joy;
+䗶 > wax;
+䗬 > bee;
+䗦 > bee;
+䒬 > not;
+䑋 > fat;
+䑊 > fat;
+䑂 > fat;
+䐾 > fat;
+䐵 > fat;
+䐪 > fat;
+䐩 > fat;
+䐟 > fat;
+䐏 > fat;
+䐎 > fat;
+䐉 > fat;
+䏻 > can;
+䏴 > dim;
+䏥 > dry;
+䏜 > fat;
+䎋 > fly;
+䍝 > net;
+䍕 > net;
+䍒 > net;
+䌢 > raw;
+䋬 > rug;
+䋞 > web;
+䋄 > web;
+䊑 > pay;
+䉾 > bad;
+䆾 > big;
+䆱 > big;
+䁮 > sad;
+㾑 > fat;
+㺋 > pig;
+㹅 > all;
+㸁 > dry;
+㷪 > fat;
+㷣 > red;
+㴼 > wet;
+㴷 > wet;
+㳴 > mud;
+㲭 > rug;
+㲖 > fur;
+㮎 > cup;
+㮈 > but;
+㫓 > air;
+猪 > pig;
+見 > see;
+切 > cut;
+茶 > tea;
+泥 > mud;
+㦧 > sad;
+劣 > bad;
+廬 > hut;
+㦀 > joy;
+兩 > two;
+掠 > rob;
+㥢 > bad;
+㥑 > sad;
+露 > dew;
+老 > old;
+櫓 > oar;
+蠟 > wax;
+卵 > egg;
+㤚 > joy;
+奈 > but;
+㤈 > sad;
+㢠 > far;
+㜸 > sin;
+㚚 > big;
+㘔 > eat;
+㗔 > joy;
+㕅 > big;
+㓉 > ice;
+㒳 > two;
+㒪 > tin;
+㑾 > joy;
+㐺 > all;
+不 > no;
+为 > do;
+之 > ''s;
+徃 > go;
+往 > go;
+于 > in;
+行 > go;
+如 > if;
+弄 > do;
+或 > or;
+它 > it;
+若 > if;
+爲 > do;
+咱 > us;
+為 > do;
+适 > go;
+倘 > if;
+於 > in;
+哟 > ah;
+嗨 > hi;
+彝 > yi;
+傥 > if;
+锱 > oz;
+徂 > go;
+钔 > md;
+伲 > we;
+镤 > pa;
+镎 > np;
+铹 > lr;
+夂 > go;
+锿 > es;
+锝 > tc;
+锘 > no;
+锕 > ac;
+锊 > oz;
+鎝 > tc;
+錼 > np;
+錙 > oz;
+鋝 > oz;
+迬 > go;
+繄 > be;
+糎 > mm;
+粨 > hm;
+粍 > mm;
+粁 > km;
+籵 > dm;
+祂 > he;
+牠 > it;
+朁 > if;
+攲 > up;
+扵 > in;
+彞 > yi;
+彜 > yi;
+彛 > yi;
+廴 > go;
+嗈 > oh;
+喲 > ah;
+喤 > ah;
+咁 > so;
+兡 > hg;
+兞 > mg;
+兝 > dg;
+儻 > if;
+偺 > us;
+佢 > he;
+行 > go;
+若 > if;
+不 > no;
+弄 > do;
+余 > i;
+吾 > i;
+予 > i;
+侬 > i;
+麿 > i;
+樶 > c;
+儂 > i;
+。 <> '.';
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
new file mode 100644
index 0000000..38c0026
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
@@ -0,0 +1,116016 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+
+# Convert CJK characters
+# Note: adds space between them and letters.
+:: (halfwidth-fullwidth);
+:: (katakana-latin);
+:: (hiragana-latin);
+
+$terminalPunct = [\.\,\:\;\?\!．，：？！。、；[:Pe:][:Pf:]];
+$terminalPunct { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+$kata = [[ﾞﾟｰー][:katakana:]];
+$kata { } [[:L:]-$kata]> ' ';
+[[:L:]-$kata] { } $kata > ' ';
+
+[:hiragana:] { } [[:L:]-[:hiragana:]] > ' ';
+[[:L:]-[:hiragana:]] { } [:hiragana:]> ' ';
+
+# Start RAW data for converting CJK characters
+法学系大学院共通入学試験 < hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+米国大学入学共通試験 < beikokudaigakunyuugakukyoutsuushiken\ ;
+朝鮮民主主義人民共和国 < chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 < jidoushasongaibaishousekininhoken\ ;
+臨兵闘者皆陣裂在前 < rinpyoutoushakaijinretsuzaizen\ ;
+日本労働組合総評議会 < nihonroudoukumiaisouhyougikai\ ;
+太平洋機械翻訳協会 < taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 < kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 < chouchoudaikiboshuusekikairo\ ;
+経済協力開発機構 < keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 < hokkaidoukaihatsuchouchoukan\ ;
+拘束名簿式比例代表制 < kousokumeibohireidaihyousei\ ;
+知識集約型産業 < chishikishuuyakugatasangyou\ ;
+外国人登録証明書 < gaikokujintourokushoumeisho\ ;
+太平洋安全保障条約 < taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 < soujuusekionseikirokusouchi\ ;
+戦略兵器削減条約 < senryakuheikisakugenjouyaku\ ;
+航空宇宙技術研究所 < koukuuuchuugijutsukenkyuujo\ ;
+国際機械翻訳協会 < kokusaikikaihon''yakukyoukai\ ;
+自律神経失調症 < jiritsushinkeishitchoushou\ ;
+国際電気通信連合 < kokusaidenkitsuushinrengou\ ;
+沖縄開発庁長官 < okinawakaihatsuchouchoukan\ ;
+海外経済協力基金 < kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 < nichibeianzenhoshoujouyaku\ ;
+浮動小数点演算機構 < fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 < genkinjidouyokinshiharaiki\ ;
+弁証法的唯物論 < benshouhoutekiyuibutsuron\ ;
+戦没者追悼記念日 < senbotsushatsuitoukinenbi\ ;
+国際協力事業団 < kokusaikyouryokujigyoudan\ ;
+戦術航空統制本部 < senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 < kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 < kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 < choudaikiboshuusekikairo\ ;
+宗教的独立性 < shuukyoutekidokuritsusei\ ;
+化学兵器禁止条約 < kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 < kanzeibouekiippankyoutei\ ;
+主辞駆動句構造文法 < shujikudoukukouzoubunpou\ ;
+直接照準射撃 < chokusetsushoujunshageki\ ;
+総合的品質管理 < sougoutekihinshitsukanri\ ;
+疑似直接目的語 < gijichokusetsumokutekigo\ ;
+在留期間更新許可 < zairyuukikankoushinkyoka\ ;
+特殊取扱郵便 < tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 < kanshitsukyuushitsudokei\ ;
+万国著作権条約 < bankokuchosakukenjouyaku\ ;
+万国国際音標文字 < bankokukokusaionpyoumoji\ ;
+言語学的実在論 < gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 < kanjoudoumyakukessenshou\ ;
+科学技術庁長官 < kagakugijutsuchouchoukan\ ;
+海洋投棄規制条約 < kaiyoutoukikiseijouyaku\ ;
+圧密降伏応力 < atsumitsukoufukuouryoku\ ;
+公認卸売業者 < kounin''oroshiurigyousha\ ;
+赤血球沈降速度 < sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 < sekiyuyushutsukokukikou\ ;
+公共職業安定所 < koukyoushokugyouanteijo\ ;
+戦術航空統制班 < senjutsukoukuutouseihan\ ;
+野生動物保護団体 < yaseidoubutsuhogodantai\ ;
+自動列車制御装置 < jidouresshaseigyosouchi\ ;
+自動金銭出入機 < jidoukinsenshutsunyuuki\ ;
+天然資源保護論者 < ten''nenshigenhogoronsha\ ;
+地震雷火事親父 < jishinkaminarikajioyaji\ ;
+非常事態対処計画 < hijoujitaitaishokeikaku\ ;
+核分裂生成物 < kakubunretsuseiseibutsu\ ;
+多肢選択式試問 < tashisentakushikishimon\ ;
+新関西国際空港 < shinkansaikokusaikuukou\ ;
+職業別電話帳 < shokugyoubetsudenwachou\ ;
+自動列車停止装置 < jidouresshateishisouchi\ ;
+言語学的観念論 < gengogakutekikan''nenron\ ;
+後発発展途上国 < kouhatsuhattentojoukoku\ ;
+抹消登録証明書 < mashoutourokushoumeisho\ ;
+経済企画庁長官 < keizaikikakuchouchoukan\ ;
+再生不良性貧血 < saiseifuryouseihinketsu\ ;
+火力支援調整線 < karyokushienchouseisen\ ;
+入学共通試験 < nyuugakukyoutsuushiken\ ;
+破壊活動防止法 < hakaikatsudouboushihou\ ;
+室内管弦楽団 < shitsunaikangengakudan\ ;
+東京株式市場 < toukyoukabushikishijou\ ;
+確率密度関数 < kakuritsumitsudokansuu\ ;
+原子力発電所 < genshiryokuhatsudensho\ ;
+代表取締役 < daihyoutorishimariyaku\ ;
+取扱説明書 < toriatsukaisetsumeisho\ ;
+赤十字国際委員会 < sekijuujikokusaiiinkai\ ;
+勧善懲悪小説 < kanzenchouakushousetsu\ ;
+国際返信切手券 < kokusaihenshinkitteken\ ;
+談話表示構造理論 < danwahyoujikouzouriron\ ;
+共産党中央委員会 < kyousantouchuuouiinkai\ ;
+杭周面摩擦力 < kuishuumenmasatsuryoku\ ;
+中華人民共和国 < chuukajinminkyouwakoku\ ;
+東海道五十三次 < toukaidougojuusantsugi\ ;
+宇宙開発事業団 < uchuukaihatsujigyoudan\ ;
+民主党全国委員会 < minshutouzenkokuiinkai\ ;
+英語基礎能力試験 < eigokisonouryokushiken\ ;
+間接照準射撃 < kansetsushoujunshageki\ ;
+三軸圧縮試験機 < sanjikuasshukushikenki\ ;
+視聴者参加番組 < shichoushasankabangumi\ ;
+州際通商委員会 < shuusaitsuushouiinkai\ ;
+新規株式公開 < shinkikabushikikoukai\ ;
+周波数変換装置 < shuuhasuuhenkansouchi\ ;
+学習指導要領 < gakushuushidouyouryou\ ;
+慢性疲労症候群 < manseihiroushoukougun\ ;
+公害対策基本法 < kougaitaisakukihonhou\ ;
+早発性痴呆症 < souhatsuseichihoushou\ ;
+経済団体連合会 < keizaidantairengoukai\ ;
+戦闘電子戦情報 < sentoudenshisenjouhou\ ;
+信用協同組合 < shin''youkyoudoukumiai\ ;
+現金自動支払機 < genkinjidoushiharaiki\ ;
+弦楽四重奏曲 < gengakushijuusoukyoku\ ;
+演繹的説明法 < en''ekitekisetsumeihou\ ;
+最高経営責任者 < saikoukeieisekininsha\ ;
+深在性真菌症 < shinzaiseishinkinshou\ ;
+装甲人員運搬車 < soukoujin''in''unpansha\ ;
+一般命令演算機構 < ippanmeireienzankikou\ ;
+統率束縛理論 < tousotsusokubakuriron\ ;
+本態性高血圧 < hontaiseikouketsuatsu\ ;
+日本語能力試験 < nihongonouryokushiken\ ;
+陸上端局装置 < rikujoutankyokusouchi\ ;
+音節主音的子音 < onsetsushuontekishiin\ ;
+日米貿易摩擦 < nichibeibouekimasatsu\ ;
+証券取引委員会 < shoukentorihikiiinkai\ ;
+通商産業大臣 < tsuushousangyoudaijin\ ;
+最高財務責任者 < saikouzaimusekininsha\ ;
+短距離離着陸機 < tankyoririchakurikuki\ ;
+通商航海条約 < tsuushoukoukaijouyaku\ ;
+機能単一化文法 < kinoutan''itsukabunpou\ ;
+知能情報研究部 < chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 < kaatsusuigatagenshiro\ ;
+環太平洋地震帯 < kantaiheiyoujishintai\ ;
+軟判定識別器 < nanhanteishikibetsuki\ ;
+国立博物館 < kokuritsuhakubutsukan\ ;
+空想科学小説 < kuusoukagakushousetsu\ ;
+人種差別主義者 < jinshusabetsushugisha\ ;
+新入社員教育 < shin''nyuushainkyouiku\ ;
+推奨文献目録 < suishoubunkenmokuroku\ ;
+集中治療室 < shuuchuuchiryoushitsu\ ;
+徳川三代家光 < tokugawasandaiiemitsu\ ;
+自然環境保全法 < shizenkankyouhozenhou\ ;
+生活協同組合 < seikatsukyoudoukumiai\ ;
+環太平洋造山帯 < kantaiheiyouzouzantai\ ;
+行動主義心理学 < koudoushugishinrigaku\ ;
+料金別納郵便 < ryoukinbetsunouyuubin\ ;
+中距離核戦力 < chuukyorikakusenryoku\ ;
+第一次世界大戦 < daiichijisekaitaisen\ ;
+農業協同組合 < nougyoukyoudoukumiai\ ;
+大陸横断鉄道 < tairikuoudantetsudou\ ;
+直轄植民地 < chokkatsushokuminchi\ ;
+変動為替相場制 < hendoukawasesoubasei\ ;
+木造建築物 < mokuzoukenchikubutsu\ ;
+高分子吸収体 < koubunshikyuushuutai\ ;
+歯内療法専門医 < shikaryouhousenmon''i\ ;
+日米構造協議 < nichibeikouzoukyougi\ ;
+機械翻訳協会 < kikaihon''yakukyoukai\ ;
+植物性蛋白 < shokubutsuseitanpaku\ ;
+信用取引先 < shin''youtorihikisaki\ ;
+中央行政官庁 < chuuougyouseikanchou\ ;
+北大西洋条約 < kitataiseiyoujouyaku\ ;
+常務取締役 < joumutorishimariyaku\ ;
+環太平洋火山帯 < kantaiheiyoukazantai\ ;
+電気通信大学 < denkitsuushindaigaku\ ;
+芳香族化合物 < houkouzokukagoubutsu\ ;
+七星天道虫 < nanahoshitentoumushi\ ;
+内閣官房長官 < naikakukanbouchoukan\ ;
+実情調査委員会 < jitsujouchousaiinkai\ ;
+弦楽五重奏曲 < gengakugojuusoukyoku\ ;
+民族大虐殺 < minzokudaigyakusatsu\ ;
+科学基礎研究所 < kagakukisokenkyuusho\ ;
+越年生植物 < etsunenseishokubutsu\ ;
+変形生成統語論 < henkeiseiseitougoron\ ;
+構成素統御 < kouseisokouzoutougyo\ ;
+宇宙開発計画 < uchuukaihatsukeikaku\ ;
+米連邦航空局 < beirenpoukuukoukyoku\ ;
+大規模集積回路 < daikiboshuusekikairo\ ;
+南無妙法蓮華経 < namumyouhourengekyou\ ;
+外国人登録法 < gaikokujintourokuhou\ ;
+共産党政治局 < kyousantouseijikyoku\ ;
+未確認飛行物体 < mikakuninhikoubuttai\ ;
+一酸化炭素中毒 < issankatansochuudoku\ ;
+束縛継承原理 < sokubakukeishougenri\ ;
+直接目的語 < chokusetsumokutekigo\ ;
+専務取締役 < senmutorishimariyaku\ ;
+一年生植物 < ichinenseishokubutsu\ ;
+麻薬取締班 < mayakutorishimarihan\ ;
+三軸圧縮試験 < sanjikuasshukushiken\ ;
+麻薬取締法 < mayakutorishimarihou\ ;
+空軍連絡将校 < kuugunrenrakushoukou\ ;
+卸売物価指数 < oroshiuribukkashisuu\ ;
+写真判定決勝 < shashinhanteikesshou\ ;
+前立腺肥大症 < zenritsusenhidaishou\ ;
+公正取引委員会 < kouseitorihikiiinkai\ ;
+説明的妥当性 < setsumeitekidatousei\ ;
+中心的役割 < chuushintekiyakuwari\ ;
+税引前当期利益 < zeibikimaetoukirieki\ ;
+連邦取引委員会 < renpoutorihikiiinkai\ ;
+共通一次試験 < kyoutsuuichijishiken\ ;
+第三種郵便物 < daisanshuyuubinbutsu\ ;
+友好通商航海 < yuukoutsuushoukoukai\ ;
+無担保貸付金 < mutanpokashitsukekin\ ;
+流行性耳下腺炎 < ryuukouseijikasen''en\ ;
+必要十分条件 < hitsuyoujuubunjouken\ ;
+精神的指導者 < seishintekishidousha\ ;
+原子物理学者 < genshibutsurigakusha\ ;
+精密機械工業 < seimitsukikaikougyou\ ;
+再入国許可書 < sainyuukokukyoukasho\ ;
+定形外郵便物 < teikeigaiyuubinbutsu\ ;
+超並列計算機 < chouheiretsukeisanki\ ;
+中枢神経系統 < chuusuushinkeikeitou\ ;
+伝送制御拡張 < densouseigyokakuchou\ ;
+収縮期血圧 < shuushukukiketsuatsu\ ;
+日中友好協会 < nitchuuyuukoukyoukai\ ;
+総理府総務長官 < sourifusoumuchoukan\ ;
+国民金融公庫 < kokuminkin''yuukouko\ ;
+単子葉植物 < tanshiyoushokubutsu\ ;
+口辺単純疱疹 < kouhentanjunhoushin\ ;
+連立方程式 < renritsuhouteishiki\ ;
+集団安全保障 < shuudan''anzenhoshou\ ;
+名神高速道路 < meishinkousokudouro\ ;
+放射性降下物 < houshaseikoukabutsu\ ;
+環境保護主義者 < kankyouhogoshugisha\ ;
+劣性遺伝形質 < resseiidenkeishitsu\ ;
+日本陸上自衛隊 < nihonrikujoujieitai\ ;
+通商産業省 < tsuushousangyoushou\ ;
+初期選択項目 < shokisentakukoumoku\ ;
+全国津津浦浦 < zenkokutsutsuuraura\ ;
+信任統治制度 < shin''nintouchiseido\ ;
+主要部終端型 < shuyoubushuutangata\ ;
+合成化学工業 < gouseikagakukougyou\ ;
+原子力発電 < genshiryokuhatsuden\ ;
+国民体育大会 < kokumintaiikutaikai\ ;
+国際電信電話 < kokusaidenshindenwa\ ;
+電子資金振替 < denshishikinfurikae\ ;
+直接民主制 < chokusetsuminshusei\ ;
+進出制限線 < shinshutsuseigensen\ ;
+株式取引所 < kabushikitorihikijo\ ;
+弦楽四重奏団 < gengakushijuusoudan\ ;
+航空交通管制 < koukuukoutsuukansei\ ;
+財政均衡計画 < zaiseikinkoukeikaku\ ;
+直接教授法 < chokusetsukyoujuhou\ ;
+日本規格協会 < nipponkikakukyoukai\ ;
+動物愛護協会 < doubutsuaigokyoukai\ ;
+双子葉植物 < soushiyoushokubutsu\ ;
+米航空宇宙局 < beikoukuuuchuukyoku\ ;
+日本学術会議 < nihongakujutsukaigi\ ;
+芥川龍之介 < akutagawaryuunosuke\ ;
+貸借対照表 < taishakutaishouhyou\ ;
+公定割引率 < kouteiwaribikiritsu\ ;
+人間環境宣言 < ningenkankyousengen\ ;
+強迫神経症 < kyouhakushinkeishou\ ;
+家宅捜索令状 < katakusousakureijou\ ;
+商業信用状 < shougyoushin''youjou\ ;
+安土桃山時代 < azuchimomoyamajidai\ ;
+生理的食塩水 < seiritekishokuensui\ ;
+環太平洋諸国 < kantaiheiyoushokoku\ ;
+火力支援計画 < karyokushienkeikaku\ ;
+輸出信用状 < yushutsushin''youjou\ ;
+金地金本位制度 < kinjiganehon''iseido\ ;
+著作権所有者 < chosakukenshoyuusha\ ;
+数学的帰納法 < suugakutekikinouhou\ ;
+旧新約全書 < kyuushin''yakuzensho\ ;
+日本国特許庁 < nihonkokutokkyochou\ ;
+出入国管理 < shutsunyuukokukanri\ ;
+食糧管理制度 < shokuryoukanriseido\ ;
+生物化学兵器 < seibutsukagakuheiki\ ;
+障害物競走 < shougaibutsukyousou\ ;
+昼光色電球 < chuukoushokudenkyuu\ ;
+長日植物 < choujitsushokubutsu\ ;
+女権拡張論者 < jokenkakuchouronsha\ ;
+重要無形文化財 < juuyoumukeibunkazai\ ;
+経済社会理事会 < keizaishakairijikai\ ;
+統合幕僚会議 < tougoubakuryoukaigi\ ;
+律令格式 < ritsuryoukyakushiki\ ;
+天然色写真 < ten''nenshokushashin\ ;
+射撃禁止地域 < shagekikinshichiiki\ ;
+食肉植物 < shokunikushokubutsu\ ;
+主語助動詞倒置 < shugojodoushitouchi\ ;
+特命全権公使 < tokumeizenkenkoushi\ ;
+水力発電所 < suiryokuhatsudensho\ ;
+素出力条件 < soshutsuryokujouken\ ;
+国民総支出 < kokuminsoushishutsu\ ;
+植物性脂肪 < shokubutsuseishibou\ ;
+新聞倫理綱領 < shinbunrinrikouryou\ ;
+記述的妥当性 < kijutsutekidatousei\ ;
+旧新約聖書 < kyuushin''yakuseisho\ ;
+万国郵便連合 < bankokuyuubinrengou\ ;
+長期貸付金 < choukikashitsukekin\ ;
+直接接続 < chokusetsusetsuzoku\ ;
+住宅金融公庫 < juutakukin''yuukouko\ ;
+単位体積重量 < tan''itaisekijuuryou\ ;
+統一地方選挙 < touitsuchihousenkyo\ ;
+公開市場政策 < koukaishijouseisaku\ ;
+地球観測衛星 < chikyuukansokueisei\ ;
+生物物理学 < seibutsubutsurigaku\ ;
+平家物語抄 < heikemonogatarishou\ ;
+合同技術委員会 < goudougijutsuiinkai\ ;
+重量拳闘選手 < juuryoukentousenshu\ ;
+人工気胸療法 < jinkoukikyouryouhou\ ;
+地方公共団体 < chihoukoukyoudantai\ ;
+手根管症候群 < shukonkanshoukougun\ ;
+高分子化合物 < koubunshikagoubutsu\ ;
+食虫植物 < shokuchuushokubutsu\ ;
+陸上作戦本部 < rikujousakusenhonbu\ ;
+観察的研究 < kansatsutekikenkyuu\ ;
+放射性廃棄物 < houshaseihaikibutsu\ ;
+逆転分布係数 < gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 < kumomakukashukketsu\ ;
+自動方向探知機 < jidouhoukoutanchiki\ ;
+共同救済基金 < kyoudoukyuusaikikin\ ;
+賃貸借契約 < chintaishakukeiyaku\ ;
+徳川公爵邸 < tokugawakoushakutei\ ;
+帰還不能限界点 < kikanfunougenkaiten\ ;
+保険金受取人 < hokenkin''uketorinin\ ;
+陸軍士官学校 < rikugunshikangakkou\ ;
+漁業専管水域 < gyogyousenkansuiiki\ ;
+精神分裂症 < seishinbunretsushou\ ;
+芸術至上主義 < geijutsushijoushugi\ ;
+特命全権大使 < tokumeizenkentaishi\ ;
+近接航空支援 < kinsetsukoukuushien\ ;
+太陽熱発電 < taiyounetsuhatsuden\ ;
+海外留学熱 < kaigairyuugakunetsu\ ;
+有機水銀中毒 < yuukisuiginchuudoku\ ;
+妊娠中毒症 < ninshinchuudokushou\ ;
+環太平洋構想 < kantaiheiyoukousou\ ;
+独立採算制 < dokuritsusaisansei\ ;
+市場占有率 < shijousen''yuuritsu\ ;
+公的不法妨害 < koutekifuhoubougai\ ;
+視聴覚教材 < shichoukakukyouzai\ ;
+内閣法制局 < naikakuhouseikyoku\ ;
+国家公安委員長 < kokkakouan''iinchou\ ;
+戦闘支援計画 < sentoushienkeikaku\ ;
+中小企業庁 < chuushoukigyouchou\ ;
+回線制御規則 < kaisenseigyokisoku\ ;
+書簡体小説 < shokantaishousetsu\ ;
+社会生物学 < shakaiseibutsugaku\ ;
+一日一日 < ichinichiichinichi\ ;
+軍隊行進曲 < guntaikoushinkyoku\ ;
+葬送行進曲 < sousoukoushinkyoku\ ;
+港湾運送事業 < kouwan''unsoujigyou\ ;
+物理的現象 < butsuritekigenshou\ ;
+心臓弁膜症 < shinzoubenmakushou\ ;
+膝蓋腱反射 < shitsugaikenhansha\ ;
+門戸開放政策 < monkokaihouseisaku\ ;
+俸給生活者 < houkyuuseikatsusha\ ;
+東名高速道路 < toumeikousokudouro\ ;
+内閣総理大臣 < naikakusouridaijin\ ;
+日本放送協会 < nihonhousoukyoukai\ ;
+航空宇宙工業 < koukuuuchuukougyou\ ;
+生物情報学 < seibutsujouhougaku\ ;
+多年生植物 < tanenseishokubutsu\ ;
+量子物理学 < ryoushibutsurigaku\ ;
+北米合衆国 < hokubeigasshuukoku\ ;
+来客芳名録 < raikyakuhoumeiroku\ ;
+地方検察庁 < chihoukensatsuchou\ ;
+短日植物 < tanjitsushokubutsu\ ;
+標準出力 < hyoujunshutsuryoku\ ;
+専門的知識 < senmontekichishiki\ ;
+結婚行進曲 < kekkonkoushinkyoku\ ;
+安全保障条約 < anzenhoshoujouyaku\ ;
+株式配当金 < kabushikihaitoukin\ ;
+特別配当金 < tokubetsuhaitoukin\ ;
+主働土圧係数 < shudoudoatsukeisuu\ ;
+反射的半順序 < hanshatekihanjunjo\ ;
+経済成長率 < keizaiseichouritsu\ ;
+産業別組合 < sangyoubetsukumiai\ ;
+国際通貨基金 < kokusaitsuukakikin\ ;
+優等卒業生 < yuutousotsugyousei\ ;
+短期集中講座 < tankishuuchuukouza\ ;
+入国管理局 < nyuukokukanrikyoku\ ;
+信賞必罰 < shinshouhitsubatsu\ ;
+日本農林規格 < nihon''nourinkikaku\ ;
+航空宇宙産業 < koukuuuchuusangyou\ ;
+品質保持期限 < hinshitsuhojikigen\ ;
+日本工業規格 < nihonkougyoukikaku\ ;
+間接撮影法 < kansetsusatsueihou\ ;
+実物大模型 < jitsubutsudaimokei\ ;
+軍事的侵略 < gunjitekishinryaku\ ;
+中距離核兵器 < chuukyorikakuheiki\ ;
+酸化還元反応 < sankakangenhan''nou\ ;
+特徴抽出 < tokuchouchuushutsu\ ;
+寿教室 < kotobukikyoushitsu\ ;
+公務執行妨害 < koumushikkoubougai\ ;
+積分方程式 < sekibunhouteishiki\ ;
+高等専門学校 < koutousenmongakkou\ ;
+積算電力計 < sekisandenryokukei\ ;
+二年生植物 < ninenseishokubutsu\ ;
+国会対策委員会 < kokkaitaisakuinkai\ ;
+第二次世界大戦 < dainijisekaitaisen\ ;
+歩兵戦闘車両 < hoheisentousharyou\ ;
+千九百年代 < senkyuuhyakunendai\ ;
+共同記者会見 < kyoudoukishakaiken\ ;
+科学博物館 < kagakuhakubutsukan\ ;
+中国共産党 < chuugokukyousantou\ ;
+高分子物質 < koubunshibusshitsu\ ;
+発達心理学 < hattatsushinrigaku\ ;
+精神薄弱者 < seishinhakujakusha\ ;
+太陽熱温水器 < taiyounetsuonsuiki\ ;
+特別行政区 < tokubetsugyouseiku\ ;
+静止土圧係数 < seishidoatsukeisuu\ ;
+三色印刷法 < sanshokuinsatsuhou\ ;
+排卵誘発剤 < hairan''yuuhatsuzai\ ;
+生活必需品 < seikatsuhitsujuhin\ ;
+少年鑑別所 < shounenkanbetsusho\ ;
+人口動態統計 < jinkoudoutaitoukei\ ;
+座骨神経痛 < zakotsushinkeitsuu\ ;
+植民地政策 < shokuminchiseisaku\ ;
+証券取引法 < shoukentorihikihou\ ;
+私小説 < watakushishousetsu\ ;
+商品回転率 < shouhinkaitenritsu\ ;
+国連事務総長 < kokurenjimusouchou\ ;
+節足動物門 < sessokudoubutsumon\ ;
+着生植物 < chakuseishokubutsu\ ;
+不動産取得税 < fudousanshutokuzei\ ;
+年次有給休暇 < nenjiyuukyuukyuuka\ ;
+実物取引 < jitsubutsutorihiki\ ;
+十二指腸潰瘍 < juunishichoukaiyou\ ;
+計算生物学 < keisanseibutsugaku\ ;
+就職情報誌 < shuushokujouhoushi\ ;
+建設的関係 < kensetsutekikankei\ ;
+客室乗務員 < kyakushitsujoumuin\ ;
+支持力定式 < shijiryokuteishiki\ ;
+動物行動学 < doubutsukoudougaku\ ;
+戦争犯罪法廷 < sensouhanzaihoutei\ ;
+職能代表制 < shokunoudaihyousei\ ;
+最高検察庁 < saikoukensatsuchou\ ;
+心神耗弱者 < shinshinmoujakusha\ ;
+年功序列制度 < nenkoujoretsuseido\ ;
+亜米利加合衆国 < amerikagasshuukoku\ ;
+無脊椎動物 < musekitsuidoubutsu\ ;
+農林水産大臣 < nourinsuisandaijin\ ;
+直接接触 < chokusetsusesshoku\ ;
+家宅侵入罪 < katakushin''nyuuzai\ ;
+分子生物学 < bunshiseibutsugaku\ ;
+主要部先導型 < shuyoubusendougata\ ;
+天体写真術 < tentaishashinjutsu\ ;
+秘密漏洩罪 < himitsurousetsuzai\ ;
+貸付信託 < kashitsukeshintaku\ ;
+間接目的語 < kansetsumokutekigo\ ;
+粘液分泌腺 < nen''ekibunpitsusen\ ;
+瞬間接着剤 < shunkansetchakuzai\ ;
+人口密集率 < jinkoumisshuuritsu\ ;
+国民健康保険 < kokuminkenkouhoken\ ;
+原色写真版 < genshokushashinban\ ;
+不定計量空間 < futeikeiryoukuukan\ ;
+量子色力学 < ryoushiirorikigaku\ ;
+在日米陸軍 < zainichibeirikugun\ ;
+食品添加物 < shokuhintenkabutsu\ ;
+反帝国主義者 < hanteikokushugisha\ ;
+動物性蛋白 < doubutsuseitanpaku\ ;
+特定郵便局 < tokuteiyuubinkyoku\ ;
+日本航空自衛隊 < nihonkoukuujieitai\ ;
+火力発電所 < karyokuhatsudensho\ ;
+多角式農業 < takakushikinougyou\ ;
+電荷結合素子 < denkaketsugousoshi\ ;
+永世中立国 < eiseichuuritsukoku\ ;
+符号化文字集合 < fugoukamojishuugou\ ;
+唯物弁証法 < yuibutsubenshouhou\ ;
+日本海上自衛隊 < nihonkaijoujieitai\ ;
+史的唯物論 < shitekiyuibutsuron\ ;
+宣誓供述書 < senseikyoujutsusho\ ;
+熱膨張係数 < netsubouchoukeisuu\ ;
+有限状態文法 < yuugenjoutaibunpou\ ;
+即日速達 < sokujitsusokutatsu\ ;
+植物性繊維 < shokubutsuseisen''i\ ;
+過失傷害罪 < kashitsushougaizai\ ;
+修正資本主義 < shuuseishihonshugi\ ;
+一卵性双生児 < ichiranseisouseiji\ ;
+共同創設者 < kyoudousousetsusha\ ;
+地中海性気候 < chichuukaiseikikou\ ;
+投資有価証券 < toushiyuukashouken\ ;
+上級副社長 < joukyuufukushachou\ ;
+戦略的提携 < senryakutekiteikei\ ;
+前方再補給点 < zenpousaihokyuuten\ ;
+百発百中 < hyappatsuhyakuchuu\ ;
+環境庁長官 < kankyouchouchoukan\ ;
+取締役会 < torishimariyakukai\ ;
+圧力調整器 < atsuryokuchouseiki\ ;
+生鮮食料品 < seisenshokuryouhin\ ;
+放射性物質 < houshaseibusshitsu\ ;
+地球物理学 < chikyuubutsurigaku\ ;
+反宗教改革 < hanshuukyoukaikaku\ ;
+学識経験者 < gakushikikeikensha\ ;
+立憲君主政体 < rikkenkunshuseitai\ ;
+放送禁止用語 < housoukinshiyougo\ ;
+赤面恐怖症 < sekimenkyoufushou\ ;
+食品衛生法 < shokuhin''eiseihou\ ;
+教職員組合 < kyoushokuinkumiai\ ;
+十一面観世音 < juuichimenkanzeon\ ;
+毛沢東主席 < moutakutoushuseki\ ;
+別途積立金 < bettotsumitatekin\ ;
+返信料葉書 < henshinryouhagaki\ ;
+諸車通行止 < shoshatsuukoudome\ ;
+形状記憶合金 < keijoukiokugoukin\ ;
+国土庁長官 < kokudochouchoukan\ ;
+出力装置 < shutsuryokusouchi\ ;
+複雑骨折 < fukuzatsukossetsu\ ;
+下位範疇化素性 < kaihanchuukasosei\ ;
+勧善懲悪劇 < kanzenchouakugeki\ ;
+医学生物学 < igakuseibutsugaku\ ;
+非標準拡張 < hihyoujunkakuchou\ ;
+行動発起時刻 < koudouhakkijikoku\ ;
+十部門分類法 < juubumonbunruihou\ ;
+太陽光発電 < taiyoukouhatsuden\ ;
+世界一周旅行 < sekaiisshuuryokou\ ;
+返信用葉書 < henshin''youhagaki\ ;
+世界人権宣言 < sekaijinkensengen\ ;
+公的医療機関 < koutekiiryoukikan\ ;
+物的流通 < butsutekiryuutsuu\ ;
+十年一昔 < juunenhitomukashi\ ;
+祥月命日 < shoutsukimeinichi\ ;
+真珠養殖場 < shinjuyoushokujou\ ;
+戦略物質 < senryakubusshitsu\ ;
+肋間神経痛 < rokkanshinkeitsuu\ ;
+海洋物理学 < kaiyoubutsurigaku\ ;
+精神的苦痛 < seishintekikutsuu\ ;
+交流発電機 < kouryuuhatsudenki\ ;
+就職活動 < shuushokukatsudou\ ;
+受働土圧係数 < judoudoatsukeisuu\ ;
+狩猟採集民 < shuryousaishuumin\ ;
+不確定性原理 < fukakuteiseigenri\ ;
+戦闘正面幅 < sentoushoumenhaba\ ;
+不信任投票 < fushin''nintouhyou\ ;
+送金受取人 < soukin''uketorinin\ ;
+弱肉強食 < jakunikukyoushoku\ ;
+伸縮税率 < shinshukuzeiritsu\ ;
+二等辺三角形 < nitouhensankakkei\ ;
+ＤＲＳ理論 < di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 < shokuryoukanrihou\ ;
+盲腸炎手術 < mouchouenshujutsu\ ;
+神出鬼没 < shinshutsukibotsu\ ;
+第一級殺人 < daiikkyuusatsujin\ ;
+戦略核兵器 < senryakukakuheiki\ ;
+七七日 < shichishichinichi\ ;
+紫露草 < murasakitsuyukusa\ ;
+凍結防止剤 < touketsuboushizai\ ;
+中間配当額 < chuukanhaitougaku\ ;
+政令指定都市 < seireishiteitoshi\ ;
+吸血動物 < kyuuketsudoubutsu\ ;
+高速増殖炉 < kousokuzoushokuro\ ;
+返信料封筒 < henshinryoufuutou\ ;
+衛星地球局 < eiseichikyuukyoku\ ;
+在留外国人 < zairyuugaikokujin\ ;
+熱力学的 < netsurikigakuteki\ ;
+植物採集 < shokubutsusaishuu\ ;
+出力端子 < shutsuryokutanshi\ ;
+標準入力 < hyoujun''nyuuryoku\ ;
+産業廃棄物 < sangyouhaikibutsu\ ;
+無担保借入金 < mutanpokariirekin\ ;
+観葉植物 < kan''youshokubutsu\ ;
+天然記念物 < ten''nenkinenbutsu\ ;
+単位労働組合 < tan''iroudoukumiai\ ;
+中央処理装置 < chuuoushorisouchi\ ;
+出生証明書 < shusseishoumeisho\ ;
+選挙管理委員会 < senkyokanriiinkai\ ;
+上級管理職 < joukyuukanrishoku\ ;
+税関申告書 < zeikanshinkokusho\ ;
+七生報国 < shichishouhoukoku\ ;
+返信用封筒 < henshin''youfuutou\ ;
+熱狂的信者 < nekkyoutekishinja\ ;
+企業間信用 < kigyoukanshin''you\ ;
+欧州通貨単位 < oushuutsuukatan''i\ ;
+開拓者精神 < kaitakushaseishin\ ;
+実物描写 < jitsubutsubyousha\ ;
+深在性真菌 < shinzaiseishinkin\ ;
+自由貿易帯域 < jiyuubouekitaiiki\ ;
+村落共同体 < sonrakukyoudoutai\ ;
+上陸用舟艇 < jourikuyoushuutei\ ;
+古生物学者 < koseibutsugakusha\ ;
+殺真菌薬 < satsushinkin''yaku\ ;
+開発途上国 < kaihatsutojoukoku\ ;
+血圧降下剤 < ketsuatsukoukazai\ ;
+無差別爆撃 < musabetsubakugeki\ ;
+平和的解決 < heiwatekikaisetsu\ ;
+下位範疇化原理 < kaihanchuukagenri\ ;
+食品加工業 < shokuhinkakougyou\ ;
+恋愛至上主義 < ren''aishijoushugi\ ;
+高級住宅地 < koukyuujuutakuchi\ ;
+自動車保険料 < jidoushahokenryou\ ;
+過失致死罪 < kashitsuchishizai\ ;
+高額所得者 < kougakushotokusha\ ;
+十一面観音 < juuichimenkan''non\ ;
+耳鼻咽喉専門医 < jibiinkousenmon''i\ ;
+月経困難症 < gekkeikon''nanshou\ ;
+国際見本市 < kokusaimihon''ichi\ ;
+緑地化計画 < ryokuchikakeikaku\ ;
+標本抽出 < hyouhonchuushutsu\ ;
+戦場航空阻止 < senjoukoukuusoshi\ ;
+中枢神経系 < chuusuushinkeikei\ ;
+統合参謀本部 < tougousanbouhonbu\ ;
+総括質問 < soukatsushitsumon\ ;
+実験的研究 < jikkentekikenkyuu\ ;
+専用駐車場 < sen''youchuushajou\ ;
+潮力発電 < chouryokuhatsuden\ ;
+無過失責任 < mukashitsusekinin\ ;
+一次方程式 < ichijihouteishiki\ ;
+就業時間中 < shuugyoujikanchuu\ ;
+国民休暇村 < kokuminkyuukamura\ ;
+子宮外妊娠 < shikyuugaininshin\ ;
+無担保貸付 < mutanpokashitsuke\ ;
+一粒子既約 < ichiryuushikiyaku\ ;
+企業別組合 < kigyoubetsukumiai\ ;
+不法侵入者 < fuhoushin''nyuusha\ ;
+直接購入 < chokusetsukounyuu\ ;
+収穫感謝祭 < shuukakukanshasai\ ;
+指向性爆薬 < shikouseibakuyaku\ ;
+心因性反応 < shin''inseihan''nou\ ;
+最長不倒距離 < saichoufutoukyori\ ;
+亜熱帯植物 < anettaishokubutsu\ ;
+窮極目的 < kyuukyokumokuteki\ ;
+内閣総辞職 < naikakusoujishoku\ ;
+天照大神 < amaterasuoomikami\ ;
+印象主義音楽 < inshoushugiongaku\ ;
+近代五種競技 < kindaigoshukyougi\ ;
+質実剛健 < shitsujitsugouken\ ;
+証券取引所 < shoukentorihikijo\ ;
+屈折望遠鏡 < kussetsubouenkyou\ ;
+局外中立 < kyokugaichuuritsu\ ;
+後方地域警備 < kouhouchiikikeibi\ ;
+歯牙矯正術 < shigakyouseijutsu\ ;
+単細胞生物 < tansaibouseibutsu\ ;
+日本薬局方 < nihon''yakkyokuhou\ ;
+自動操縦装置 < jidousoujuusouchi\ ;
+深層心理学 < shinsoushinrigaku\ ;
+都市対抗野球 < toshitaikouyakyuu\ ;
+金剛夜叉妙王 < kongouyashamyouou\ ;
+精神薄弱児 < seishinhakujakuji\ ;
+色彩調節 < shikisaichousetsu\ ;
+薬用植物 < yakuyoushokubutsu\ ;
+化学方程式 < kagakuhouteishiki\ ;
+急降下爆撃 < kyuukoukabakugeki\ ;
+水上生活者 < suijouseikatsusha\ ;
+在学証明書 < zaigakushoumeisho\ ;
+植民地統治 < shokuminchitouchi\ ;
+関数方程式 < kansuuhouteishiki\ ;
+秋霜烈日 < shuusouretsujitsu\ ;
+直接請求 < chokusetsuseikyuu\ ;
+推進研究所 < suishinkenkyuusho\ ;
+宗教哲学 < shuukyoutetsugaku\ ;
+戦術核兵器 < senjutsukakuheiki\ ;
+高速演算機構 < kousokuenzankikou\ ;
+発展的解消 < hattentekikaishou\ ;
+飛行禁止空域 < hikoukinshikuuiki\ ;
+国立図書館 < kokuritsutoshokan\ ;
+三行広告欄 < sangyoukoukokuran\ ;
+勧業博覧会 < kangyouhakurankai\ ;
+薬物中毒 < yakubutsuchuudoku\ ;
+分析心理学 < bunsekishinrigaku\ ;
+教育心理学 < kyouikushinrigaku\ ;
+業務上過失 < gyoumujoukashitsu\ ;
+環境保護論者 < kankyouhogoronsha\ ;
+成績証明書 < seisekishoumeisho\ ;
+週間天気予報 < shuukantenkiyohou\ ;
+放射線感受性 < houshasenkanjusei\ ;
+社会民主主義 < shakaiminshushugi\ ;
+小心翼翼 < shoushin''yokuyoku\ ;
+特別幕僚 < tokubetsubakuryou\ ;
+入学志願者 < nyuugakushigansha\ ;
+部分情報構造 < bubunjouhoukouzou\ ;
+一挙手一投足 < ikkyoshuittousoku\ ;
+分裂物質 < bunretsubusshitsu\ ;
+有形固定資産 < yuukeikoteishisan\ ;
+中央放送局 < chuuouhousoukyoku\ ;
+直接照明 < chokusetsushoumei\ ;
+飛行記録装置 < hikoukirokusouchi\ ;
+被担保債権額 < hitanposaikengaku\ ;
+共同相続人 < kyoudousouzokunin\ ;
+嘱託殺人 < shokutakusatsujin\ ;
+研究発表会 < kenkyuuhappyoukai\ ;
+二交替制労働 < nikoutaiseiroudou\ ;
+湿生植物 < shisseishokubutsu\ ;
+七十人訳 < shichijuunin''yaku\ ;
+保守系無所属 < hoshukeimushozoku\ ;
+天体分光術 < tentaibunkoujutsu\ ;
+球面三角法 < kyuumensankakuhou\ ;
+計量経済学 < keiryoukeizaigaku\ ;
+反転分布係数 < hantenbunpukeisuu\ ;
+著作権侵害 < chosakukenshingai\ ;
+特別弁護人 < tokubetsubengonin\ ;
+富国強兵策 < fukokukyouheisaku\ ;
+空挺降下地域 < kuuteikoukachiiki\ ;
+予想収穫高 < yosoushuukakudaka\ ;
+火力支援部隊 < karyokushienbutai\ ;
+血友病患者 < ketsuyuubyoukanja\ ;
+発癌物質 < hatsuganbusshitsu\ ;
+直角三角形 < chokkakusankakkei\ ;
+白長須鯨 < shironagasukujira\ ;
+闇価格協定 < yamikakakukyoutei\ ;
+観賞植物 < kanshoushokubutsu\ ;
+赤外線写真 < sekigaisenshashin\ ;
+心神喪失 < shinshinsoushitsu\ ;
+通俗小説 < tsuuzokushousetsu\ ;
+歌舞伎十八番 < kabukijuuhachiban\ ;
+百戦百勝 < hyakusenhyakushou\ ;
+天皇機関説 < ten''noukikansetsu\ ;
+公証人役場 < koushounin''yakuba\ ;
+超現実主義 < chougenjitsushugi\ ;
+二極真空管 < nikyokushinkuukan\ ;
+提灯行列 < chouchingyouretsu\ ;
+阪神大震災 < hanshindaishinsai\ ;
+失業対策 < shitsugyoutaisaku\ ;
+法定得票数 < houteitokuhyousuu\ ;
+設立趣意書 < setsuritsushuisho\ ;
+外国人登録 < gaikokujintouroku\ ;
+身体障害者 < shintaishougaisha\ ;
+大量破壊兵器 < tairyouhakaiheiki\ ;
+消費者信用 < shouhishashin''you\ ;
+反射係数線図 < hanshakeisuusenzu\ ;
+鈍角三角形 < donkakusankakukei\ ;
+海難審判庁 < kainanshinpanchou\ ;
+犯罪発生率 < hanzaihasseiritsu\ ;
+微生物学者 < biseibutsugakusha\ ;
+七色唐辛子 < nanairotougarashi\ ;
+素粒子加速器 < soryuushikasokuki\ ;
+公職選挙法 < koushokusenkyohou\ ;
+定形郵便物 < teikeiyuubinbutsu\ ;
+自由貿易地域 < jiyuubouekichiiki\ ;
+対中国関係 < taichuugokukankei\ ;
+公開市場操作 < koukaishijousousa\ ;
+科学技術庁 < kagakugijutsuchou\ ;
+左側通行 < hidarigawatsuukou\ ;
+大英博物館 < daieihakubutsukan\ ;
+動脈硬化症 < doumyakukoukashou\ ;
+帝王神権説 < teioushinkensetsu\ ;
+救出作戦 < kyuushutsusakusen\ ;
+宇宙大爆発 < uchuudaibakuhatsu\ ;
+首相兼外相 < shushoukengaishou\ ;
+生物地理学 < seibutsuchirigaku\ ;
+人身保護令状 < jinshinhogoreijou\ ;
+原子物理学 < genshibutsurigaku\ ;
+母子健康手帳 < boshikenkoutechou\ ;
+略取誘拐罪 < ryakushuyuukaizai\ ;
+室内装飾 < shitsunaisoushoku\ ;
+厚生年金保険 < kouseinenkinhoken\ ;
+直接競争 < chokusetsukyousou\ ;
+天体物理学 < tentaibutsurigaku\ ;
+降圧変圧器 < kouatsuhen''atsuki\ ;
+東印度会社 < higashiindogaisha\ ;
+物質主義者 < busshitsushugisha\ ;
+国際的貿易 < kokusaitekiboueki\ ;
+中性子爆弾 < chuuseishibakudan\ ;
+代数方程式 < daisuuhouteishiki\ ;
+平均太陽日 < heikintaiyoujitsu\ ;
+性行為感染症 < seikouikansenshou\ ;
+旭日昇天 < kyokujitsushouten\ ;
+乳児死亡率 < nyuujishibouritsu\ ;
+万国博覧会 < bankokuhakurankai\ ;
+防衛施設庁 < boueishisetsuchou\ ;
+有料駐車場 < yuuryouchuushajou\ ;
+臨床心理学 < rinshoushinrigaku\ ;
+生命保険会社 < seimeihokengaisha\ ;
+写真週刊誌 < shashinshuukanshi\ ;
+私有財産制度 < shiyuuzaisanseido\ ;
+巨石記念物 < kyosekikinenbutsu\ ;
+二元方程式 < nigenhouteishiki\ ;
+蘚苔植物 < sentaishokubutsu\ ;
+道義的責任 < dougitekisekinin\ ;
+獅子唐辛子 < shishitougarashi\ ;
+研究室棟 < kenkyuushitsutou\ ;
+気象観測船 < kishoukansokusen\ ;
+軽口話 < karukuchibanashi\ ;
+人猿同祖説 < jin''endousosetsu\ ;
+団体交渉権 < dantaikoushouken\ ;
+対人恐怖症 < taijinkyoufushou\ ;
+脳脊髄膜炎 < nousekizuimakuen\ ;
+要注意人物 < youchuuijinbutsu\ ;
+学校教育法 < gakkoukyouikuhou\ ;
+西側諸国 < nishigawashokoku\ ;
+王権神授説 < oukenshinjusetsu\ ;
+真部分集合 < shinbubunshuugou\ ;
+独占禁止法 < dokusenkinshihou\ ;
+脊椎動物 < sekitsuidoubutsu\ ;
+居間兼寝室 < imakenshinshitsu\ ;
+桑原桑原 < kuwabarakuwabara\ ;
+公称資本金 < koushoushihonkin\ ;
+電動発動機 < dendouhatsudouki\ ;
+応用物理学 < ouyoubutsurigaku\ ;
+享楽生活 < kyourakuseikatsu\ ;
+入力電流 < nyuuryokudenryuu\ ;
+三十八度線 < sanjuuhachidosen\ ;
+十年一日 < juunen''ichijitsu\ ;
+認知心理学 < ninchishinrigaku\ ;
+風俗小説 < fuuzokushousetsu\ ;
+低血圧症 < teiketsuatsushou\ ;
+工業所有権 < kougyoushoyuuken\ ;
+多変量解析 < tahenryoukaiseki\ ;
+虚々実々 < kyokyojitsujitsu\ ;
+清涼飲料水 < seiryouinryousui\ ;
+技術協力 < gijutsukyouryoku\ ;
+空中衝突 < kuuchuushoutotsu\ ;
+一国一党主義 < ikkokuittoushugi\ ;
+日本道路公団 < nihondourokoudan\ ;
+金利生活者 < kinriseikatsusha\ ;
+千篇一律 < senpen''ichiritsu\ ;
+料理教室 < ryourikyoushitsu\ ;
+遺言執行者 < yuigonshikkousha\ ;
+本格小説 < honkakushousetsu\ ;
+貿易外収支 < bouekigaishuushi\ ;
+国立劇場 < kokuritsugekijou\ ;
+実践理性批判 < jissenriseihihan\ ;
+染色体地図 < senshokutaichizu\ ;
+主席研究員 < shusekikenkyuuin\ ;
+高速度写真 < kousokudoshashin\ ;
+草食動物 < soushokudoubutsu\ ;
+高次方程式 < koujihouteishiki\ ;
+微分方程式 < bibunhouteishiki\ ;
+直接選挙 < chokusetsusenkyo\ ;
+郵便私書箱 < yuubinshishobako\ ;
+斜格性統御 < shakakuseitougyo\ ;
+経口避妊薬 < keikouhinin''yaku\ ;
+人材開発部 < jinzaikaihatsubu\ ;
+多重名前空間 < tajuunamaekuukan\ ;
+生者必滅 < shoujahitsumetsu\ ;
+熱帯植物 < nettaishokubutsu\ ;
+万国標準時 < bankokuhyoujunji\ ;
+松下電工 < matsushitadenkou\ ;
+防衛庁長官 < boueichouchoukan\ ;
+含水化合物 < gansuikagoubutsu\ ;
+関東大震災 < kantoudaishinsai\ ;
+商業算術 < shougyousanjutsu\ ;
+装甲回収車 < soukoukaishuusha\ ;
+地方行財政 < chihougyouzaisei\ ;
+性表現情報 < seihyougenjouhou\ ;
+戦戦栗栗 < sensenritsuritsu\ ;
+希望的観測 < kiboutekikansoku\ ;
+反射減衰量 < hanshagensuiryou\ ;
+揮発物質 < kihatsubusshitsu\ ;
+変態心理学 < hentaishinrigaku\ ;
+発光植物 < hakkoushokubutsu\ ;
+欧州共同体 < oushuukyoudoutai\ ;
+紫外線療法 < shigaisenryouhou\ ;
+非武装中立 < hibusouchuuritsu\ ;
+主席外交官 < shusekigaikoukan\ ;
+細胞質遺伝 < saiboushitsuiden\ ;
+共産党宣言 < kyousantousengen\ ;
+電力供給 < denryokukyoukyuu\ ;
+巡回診療所 < junkaishinryoujo\ ;
+源泉所得税 < gensenshotokuzei\ ;
+組職労働者 < soshokuroudousha\ ;
+労働者階級 < roudoushakaikyuu\ ;
+戦略爆撃 < senryakubakugeki\ ;
+妊娠中絶 < ninshinchuuzetsu\ ;
+拡大再生産 < kakudaisaiseisan\ ;
+平和維持活動 < heiwaijikatsudou\ ;
+上級裁判所 < joukyuusaibansho\ ;
+禁欲主義者 < kin''yokushugisha\ ;
+特殊潜航艇 < tokushusenkoutei\ ;
+最恵国待遇 < saikeikokutaiguu\ ;
+共産主義国 < kyousanshugikoku\ ;
+原告対被告 < genkokutaihikoku\ ;
+受託収賄罪 < jutakushuuwaizai\ ;
+流行性感冒 < ryuukouseikanbou\ ;
+国民総生産 < kokuminsouseisan\ ;
+中距離競走 < chuukyorikyousou\ ;
+全国的範囲 < zenkokutekihan''i\ ;
+連邦共和国 < renpoukyouwakoku\ ;
+普遍的法則 < fuhentekihousoku\ ;
+大統領選挙 < daitouryousenkyo\ ;
+二卵性双生児 < niranseisouseiji\ ;
+日猶同祖論 < nichiyuudousoron\ ;
+両替手数料 < ryougaetesuuryou\ ;
+資本利益率 < shihonriekiritsu\ ;
+議院運営委員会 < giin''un''eiiinkai\ ;
+戦車揚陸艦 < senshayourikukan\ ;
+主辞素性規約 < shujisoseikiyaku\ ;
+女性解放運動 < joseikaihouundou\ ;
+売春防止法 < baishunboushihou\ ;
+光化学反応 < koukagakuhan''nou\ ;
+直接会談 < chokusetsukaidan\ ;
+割増賃金 < warimashichingin\ ;
+軍事当局者 < gunjitoukyokusha\ ;
+肉体労働者 < nikutairoudousha\ ;
+自主流通米 < jishuryuutsuumai\ ;
+作付面積 < sakudzukemenseki\ ;
+日独協会 < nichidokukyoukai\ ;
+日常生活 < nichijouseikatsu\ ;
+第一次産業 < daiichijisangyou\ ;
+実存主義者 < jitsuzonshugisha\ ;
+歳入歳出 < sainyuusaishutsu\ ;
+特別急行 < tokubetsukyuukou\ ;
+現実主義者 < genjitsushugisha\ ;
+反政府勢力 < hanseifuseiryoku\ ;
+免疫不全症 < men''ekifuzenshou\ ;
+転出証明 < tenshutsushoumei\ ;
+十進分類法 < jisshinbunruihou\ ;
+偶像教徒的 < guuzoukyoutoteki\ ;
+紅白歌合戦 < kouhakuutagassen\ ;
+経済研究所 < keizaikenkyuusho\ ;
+軍事通信員 < gunjitsuushin''in\ ;
+基準内賃金 < kijun''naichingin\ ;
+県庁所在地 < kenchoushozaichi\ ;
+救荒作物 < kyuukousakumotsu\ ;
+真宗大谷派 < shinshuuootaniha\ ;
+地熱発電 < chinetsuhatsuden\ ;
+薬物療法 < yakubutsuryouhou\ ;
+再入国許可 < sainyuukokukyoka\ ;
+英国国教会 < eikokukokkyoukai\ ;
+食糧配給 < shokuryouhaikyuu\ ;
+炭酸同化作用 < tansandoukasayou\ ;
+清教徒革命 < seikyoutokakumei\ ;
+太陽神経叢 < taiyoushinkeisou\ ;
+直系血族 < chokkeiketsuzoku\ ;
+質問用紙 < shitsumon''youshi\ ;
+経営学修士 < keieigakushuushi\ ;
+健康証明書 < kenkoushoumeisho\ ;
+社会心理学 < shakaishinrigaku\ ;
+二大政党主義 < nidaiseitoushugi\ ;
+独身生活 < dokushinseikatsu\ ;
+警察当局 < keisatsutoukyoku\ ;
+公共企業体 < koukyoukigyoutai\ ;
+直接伝染 < chokusetsudensen\ ;
+都市再開発 < toshisaikaihatsu\ ;
+青空教室 < aozorakyoushitsu\ ;
+放射線療法 < houshasenryouhou\ ;
+国連分担金 < kokurenbuntankin\ ;
+非嫡出子 < hichakushutsushi\ ;
+生活様式 < seikatsuyoushiki\ ;
+定期刊行物 < teikikankoubutsu\ ;
+攻撃開始線 < kougekikaishisen\ ;
+平面三角法 < heimensankakuhou\ ;
+法定伝染病 < houteidensenbyou\ ;
+片道料金 < katamichiryoukin\ ;
+原油流出 < gen''yuryuushutsu\ ;
+略式命令 < ryakushikimeirei\ ;
+芸術活動 < geijutsukatsudou\ ;
+三叉神経痛 < sansashinkeitsuu\ ;
+歴史哲学 < rekishitetsugaku\ ;
+優勝決定戦 < yuushouketteisen\ ;
+下町言葉 < shitamachikotoba\ ;
+最低生活費 < saiteiseikatsuhi\ ;
+不純異性交遊 < fujun''iseikouyuu\ ;
+骨皮筋右衛門 < honekawasujiemon\ ;
+府県別人口 < fukenbetsujinkou\ ;
+緊急着陸 < kinkyuuchakuriku\ ;
+推定相続人 < suiteisouzokunin\ ;
+冷血動物 < reiketsudoubutsu\ ;
+多国籍企業 < takokusekikigyou\ ;
+取扱注意 < toriatsukaichuui\ ;
+浅間山荘事件 < asamasansoujiken\ ;
+晴一時小雨 < hareichijikosame\ ;
+割増料金 < warimashiryoukin\ ;
+季節労働者 < kisetsuroudousha\ ;
+中小諸国家 < choushoushokokka\ ;
+不平等条約 < fubyoudoujouyaku\ ;
+直截簡明 < chokusetsukanmei\ ;
+黄道吉日 < koudoukichinichi\ ;
+最低賃金制 < saiteichinginsei\ ;
+帝国主義的 < teikokushugiteki\ ;
+一触即発 < isshokusokuhatsu\ ;
+即日開票 < sokujitsukaihyou\ ;
+植物質 < shokubutsushitsu\ ;
+納税通知書 < nouzeitsuuchisho\ ;
+関税割当制 < kanzeiwariatesei\ ;
+実質賃金 < jisshitsuchingin\ ;
+居住証明書 < kyojuushoumeisho\ ;
+大使級会談 < taishikyuukaidan\ ;
+教養小説 < kyouyoushousetsu\ ;
+民主活動家 < minshukatsudouka\ ;
+客員研究員 < kyakuinkenkyuuin\ ;
+抽象芸術 < chuushougeijutsu\ ;
+直接支配 < chokusetsushihai\ ;
+環境保護主義 < kankyouhogoshugi\ ;
+世界貿易機関 < sekaibouekikikan\ ;
+支持力係数 < shijiryokukeisuu\ ;
+直下型地震 < chokkagatajishin\ ;
+未解決問題 < mikaiketsumondai\ ;
+建築基準法 < kenchikukijunhou\ ;
+無形固定資産 < mukeikoteishisan\ ;
+知的所有権 < chitekishoyuuken\ ;
+職業安定所 < shokugyouanteijo\ ;
+共産党細胞 < kyousantousaibou\ ;
+一年生草本 < ichinenseisouhon\ ;
+条約加盟国 < jouyakukameikoku\ ;
+立正佼成会 < risshoukouseikai\ ;
+集団就職 < shuudanshuushoku\ ;
+共観福音書 < kyoukanfukuinsho\ ;
+水生植物 < suiseishokubutsu\ ;
+宿直室 < shukuchokushitsu\ ;
+高所恐怖症 < koushokyoufushou\ ;
+新聞販売店 < shinbunhanbaiten\ ;
+農林水産省 < nourinsuisanshou\ ;
+二者選一法 < nishasen''itsuhou\ ;
+境界値問題 < kyoukaichimondai\ ;
+社会人野球 < shakaijin''yakyuu\ ;
+職務質問 < shokumushitsumon\ ;
+乾生植物 < kanseishokubutsu\ ;
+菜食主義者 < saishokushugisha\ ;
+宿泊設備 < shukuhakusetsubi\ ;
+国立大学 < kokuritsudaigaku\ ;
+一言二言 < hitokotofutakoto\ ;
+軍産複合体 < gunsanfukugoutai\ ;
+精神医学者 < seishin''igakusha\ ;
+経済企画庁 < keizaikikakuchou\ ;
+先端支持力 < sentanshijiryoku\ ;
+保健物理学 < hokenbutsurigaku\ ;
+正面衝突 < shoumenshoutotsu\ ;
+分解蒸溜法 < bunkaijouryuuhou\ ;
+計量言語学 < keiryougengogaku\ ;
+地域振興券 < chiikishinkouken\ ;
+急進主義者 < kyuushinshugisha\ ;
+一日千秋 < ichinichisenshuu\ ;
+交通運輸業 < koutsuuun''yugyou\ ;
+商業目的 < shougyoumokuteki\ ;
+無制限供給 < museigenkyoukyuu\ ;
+給与所得者 < kyuuyoshotokusha\ ;
+戦闘爆撃機 < sentoubakugekiki\ ;
+複式学級 < fukushikigakkyuu\ ;
+林業試験場 < ringyoushikenjou\ ;
+卒業証書 < sotsugyoushousho\ ;
+擲弾発射筒 < tekidanhasshatou\ ;
+産軍複合体 < sangunfukugoutai\ ;
+最大公約数 < saidaikouyakusuu\ ;
+国内消費税 < kokunaishouhizei\ ;
+少年審判所 < shounenshinpanjo\ ;
+焼肉定食 < yakinikuteishoku\ ;
+流行性肝炎 < ryuukouseikan''en\ ;
+表面張力 < hyoumenchouryoku\ ;
+準準決勝戦 < junjunkesshousen\ ;
+不完全燃焼 < fukanzen''nenshou\ ;
+原子力時代 < genshiryokujidai\ ;
+農業試験場 < nougyoushikenjou\ ;
+高速度撮影 < kousokudosatsuei\ ;
+特別番組 < tokubetsubangumi\ ;
+学習能力 < gakushuunouryoku\ ;
+好気性生物 < koukiseiseibutsu\ ;
+家庭内暴力 < kateinaibouryoku\ ;
+信用取引 < shin''youtorihiki\ ;
+音声多重放送 < onseitajuuhousou\ ;
+高血圧症 < kouketsuatsushou\ ;
+在籍専従者 < zaisekisenjuusha\ ;
+一口話 < hitokuchibanashi\ ;
+官費留学生 < kanpiryuugakusei\ ;
+南北朝時代 < nanbokuchoujidai\ ;
+死亡診断書 < shiboushindansho\ ;
+弦楽四重奏 < gengakushijuusou\ ;
+仲裁裁判所 < chuusaisaibansho\ ;
+理論物理学 < rironbutsurigaku\ ;
+全般前哨線 < zenpanzenshousen\ ;
+筍生活 < takenokoseikatsu\ ;
+十二指腸虫 < juunishichouchuu\ ;
+中心人物 < chuushinjinbutsu\ ;
+土木工学者 < dobokukougakusha\ ;
+食料品商 < shokuryouhinshou\ ;
+日中韓統合 < nitchuukantougou\ ;
+拡張倍精度 < kakuchoubaiseido\ ;
+労働収容所 < roudoushuuyousho\ ;
+超現実的 < chougenjitsuteki\ ;
+即身成仏 < sokushinjoubutsu\ ;
+国外脱出 < kokugaidasshutsu\ ;
+無着陸飛行 < muchakurikuhikou\ ;
+日付変更線 < hidzukehenkousen\ ;
+直接回答 < chokusetsukaitou\ ;
+当事者能力 < toujishanouryoku\ ;
+脳性小児麻痺 < nouseishounimahi\ ;
+先物取引 < sakimonotorihiki\ ;
+大東亜共栄圏 < daitouakyoueiken\ ;
+歴史小説 < rekishishousetsu\ ;
+煮沸消毒 < shafutsushoudoku\ ;
+海外進出 < kaigaishinshutsu\ ;
+水力発電 < suiryokuhatsuden\ ;
+損益計算書 < son''ekikeisansho\ ;
+小売物価指数 < kouribukkashisuu\ ;
+急行停車駅 < kyuukouteishaeki\ ;
+反植民主義 < hanshokuminshugi\ ;
+極低温科学 < kyokuteionkagaku\ ;
+自由主義経済 < jiyuushugikeizai\ ;
+写真望遠鏡 < shashinbouenkyou\ ;
+形質導入 < keishitsudounyuu\ ;
+妙法蓮華経 < myouhourengekyou\ ;
+実用主義者 < jitsuyoushugisha\ ;
+後方連絡線 < kouhourenrakusen\ ;
+実験心理学 < jikkenshinrigaku\ ;
+夜間預金々庫 < yakan''yokinkinko\ ;
+直接関係 < chokusetsukankei\ ;
+振替休日 < furikaekyuujitsu\ ;
+連邦準備制度 < renpoujunbiseido\ ;
+郵便小包 < yuubinkodzutsumi\ ;
+不法入国者 < fuhounyuukokusha\ ;
+単一神教 < tan''itsushinkyou\ ;
+虚弱体質 < kyojakutaishitsu\ ;
+多元方程式 < tagenhouteishiki\ ;
+国内総生産 < kokunaisouseisan\ ;
+脊索動物 < sekisakudoubutsu\ ;
+武力衝突 < buryokushoutotsu\ ;
+熱核反応 < netsukakuhan''nou\ ;
+鉄道公安官 < tetsudoukouankan\ ;
+種子植物 < shushishokubutsu\ ;
+平台型貨車 < hiradaigatakasha\ ;
+人称代名詞 < ninshoudaimeishi\ ;
+実業之日本 < jitsugyounonihon\ ;
+積層乾電池 < sekisoukandenchi\ ;
+行政管理庁 < gyouseikanrichou\ ;
+赤十字条約 < sekijuujijouyaku\ ;
+光学顕微鏡 < kougakukenbikyou\ ;
+超過勤務手当 < choukakinmuteate\ ;
+予備士官学校 < yobishikangakkou\ ;
+強制収容所 < kyouseishuuyoujo\ ;
+犯罪心理学 < hanzaishinrigaku\ ;
+連邦捜査局 < renpousousakyoku\ ;
+大陸移動説 < tairikuidousetsu\ ;
+直接行動 < chokusetsukoudou\ ;
+企業内教育 < kigyounaikyouiku\ ;
+求職広告 < kyuushokukoukoku\ ;
+実証哲学 < jisshoutetsugaku\ ;
+花嫁花婿 < hanayomehanamuko\ ;
+画像処理装置 < gazoushorisouchi\ ;
+窒素酸化物 < chissosankabutsu\ ;
+帝王切開術 < teiousekkaijutsu\ ;
+六十四分音符 < rokujuushibuonpu\ ;
+春機発動期 < shunkihatsudouki\ ;
+大名行列 < daimyougyouretsu\ ;
+高山植物 < kouzanshokubutsu\ ;
+放射性同位体 < houshaseidouitai\ ;
+天幕製造人 < tenmakuseizounin\ ;
+最優秀選手 < saiyuushuusenshu\ ;
+特別料金 < tokubetsuryoukin\ ;
+勝利又勝利 < shourimatashouri\ ;
+女流文学者 < joryuubungakusha\ ;
+中間小説 < chuukanshousetsu\ ;
+耐久消費財 < taikyuushouhizai\ ;
+非公式協議 < hikoushikikyougi\ ;
+生物濃縮 < seibutsunoushuku\ ;
+入力信号 < nyuuryokushingou\ ;
+空港使用料 < kuukoushiyouryou\ ;
+彫刻室座 < choukokushitsuza\ ;
+確率標本 < kakuritsuhyouhon\ ;
+無重力状態 < mujuuryokujoutai\ ;
+天照皇大神 < tenshoukoudaijin\ ;
+州立大学 < shuuritsudaigaku\ ;
+精神安定剤 < seishin''anteizai\ ;
+酸性酸化物 < sanseisankabutsu\ ;
+写実主義者 < shajitsushugisha\ ;
+冷戦型思考 < reisengatashikou\ ;
+亜熱帯高気圧 < anettaikoukiatsu\ ;
+多肉植物 < tanikushokubutsu\ ;
+電子工業会 < denshikougyoukai\ ;
+電子工学者 < denshikougakusha\ ;
+譲渡人 < yuzuriwatashinin\ ;
+熱伝導率 < netsudendouritsu\ ;
+民主共和国 < minshukyouwakoku\ ;
+磁気共鳴画像 < jikikyoumeigazou\ ;
+独立記念日 < dokuritsukinenbi\ ;
+化学調味料 < kagakuchoumiryou\ ;
+植物人間 < shokubutsuningen\ ;
+鳥獣保護区域 < choujuuhogokuiki\ ;
+終身雇用制 < shuushinkoyousei\ ;
+不定方程式 < futeihouteishiki\ ;
+物物交換 < butsubutsukoukan\ ;
+実力行使 < jitsuryokukoushi\ ;
+型式証明 < katashikishoumei\ ;
+連勝複式 < renshoufukushiki\ ;
+大修道院長 < daishuudouinchou\ ;
+直接協議 < chokusetsukyougi\ ;
+罪障消滅 < zaishoushoumetsu\ ;
+晩生植物 < banseishokubutsu\ ;
+潜在失業 < senzaishitsugyou\ ;
+港湾運送業 < kouwan''unsougyou\ ;
+周波数変調 < shuuhasuuhenchou\ ;
+乾燥地農業 < kansouchinougyou\ ;
+環境配慮書 < kankyouhairyosho\ ;
+直接比較 < chokusetsuhikaku\ ;
+固体物理学 < kotaibutsurigaku\ ;
+核抑止力 < kakuyokushiryoku\ ;
+国際援助機関 < kokusaienjokikan\ ;
+組織労働者 < soshikiroudousha\ ;
+営業報告書 < eigyouhoukokusho\ ;
+万物流転 < banbutsuryuuten\ ;
+軟式庭球 < nanshikiteikyuu\ ;
+広告代理店 < koukokudairiten\ ;
+修道生活 < shuudouseikatsu\ ;
+戦時国際法 < senjikokusaihou\ ;
+秘密警察 < himitsukeisatsu\ ;
+法人株主 < houjinkabunushi\ ;
+内幕話 < uchimakubanashi\ ;
+間接照明 < kansetsushoumei\ ;
+紛骨砕身 < funkotsusaishin\ ;
+両棲動物 < ryouseidoubutsu\ ;
+多額納税者 < tagakunouzeisha\ ;
+太元帥妙王 < daigensuimyouou\ ;
+集約農業 < shuuyakunougyou\ ;
+廃疾条件 < haishitsujouken\ ;
+能率賃金 < nouritsuchingin\ ;
+中部太平洋 < chuubutaiheiyou\ ;
+企業内組合 < kigyounaikumiai\ ;
+単刀直入 < tantouchokunyuu\ ;
+太平洋戦争 < taiheiyousensou\ ;
+三文小説 < sanmonshousetsu\ ;
+筋肉注射 < kin''nikuchuusha\ ;
+四通八達 < shitsuuhattatsu\ ;
+連帯保証人 < rentaihoshounin\ ;
+軍国主義者 < gunkokushugisha\ ;
+割増運賃 < warimashiunchin\ ;
+南極観測 < nankyokukansoku\ ;
+一目瞭然 < ichimokuryouzen\ ;
+素人下宿 < shiroutogeshuku\ ;
+学校給食 < gakkoukyuushoku\ ;
+反帝国主義 < hanteikokushugi\ ;
+間接撮影 < kansetsusatsuei\ ;
+会社更生法 < kaishakouseihou\ ;
+国選弁護人 < kokusenbengonin\ ;
+白川夜船 < shirakawayofune\ ;
+自然地理学 < shizenchirigaku\ ;
+地域的分布 < chiikitekibunpu\ ;
+無政府主義者 < museifushugisha\ ;
+剪断安定性 < sendan''anteisei\ ;
+特筆大書 < tokuhitsutaisho\ ;
+高分子化学 < koubunshikagaku\ ;
+情報公開法 < jouhoukoukaihou\ ;
+反射望遠鏡 < hanshabouenkyou\ ;
+食品工業 < shokuhinkougyou\ ;
+棘皮動物 < kyokuhidoubutsu\ ;
+怪力乱神 < kairyokuranshin\ ;
+人生哲学 < jinseitetsugaku\ ;
+特別委員会 < tokubetsuiinkai\ ;
+内需主導型 < naijushudougata\ ;
+晴天乱気流 < seitenrankiryuu\ ;
+新婚生活 < shinkonseikatsu\ ;
+２０００年問題 < nisen''nenmondai\ ;
+公開入札 < koukainyuusatsu\ ;
+基本的人権 < kihontekijinken\ ;
+株式市場 < kabushikishijou\ ;
+学業成績 < gakugyouseiseki\ ;
+戦争犯罪人 < sensouhanzainin\ ;
+物質名詞 < busshitsumeishi\ ;
+反対貿易風 < hantaibouekifuu\ ;
+短編小説 < tanpenshousetsu\ ;
+道路交通法 < dourokoutsuuhou\ ;
+共産国家郡 < kyousankokkagun\ ;
+商業数学 < shougyousuugaku\ ;
+仮装巡洋艦 < kasoujun''youkan\ ;
+教育基本法 < kyouikukihonhou\ ;
+生産者価格 < seisanshakakaku\ ;
+最小二乗法 < saishounijouhou\ ;
+脱出速度 < dasshutsusokudo\ ;
+特別総会 < tokubetsusoukai\ ;
+第一楽章 < daiichigakushou\ ;
+主幹研究員 < shukankenkyuuin\ ;
+官僚主義者 < kanryoushugisha\ ;
+小選挙区制 < shousenkyokusei\ ;
+索条鉄道 < sakujoutetsudou\ ;
+軍記物語 < gunkimonogatari\ ;
+厳正中立 < genseichuuritsu\ ;
+一日一夜 < ichinichiichiya\ ;
+陰陰滅滅 < in''inmetsumetsu\ ;
+就職浪人 < shuushokurounin\ ;
+自転車操業 < jitenshasougyou\ ;
+純潔教育 < junketsukyouiku\ ;
+世界新記録 < sekaishinkiroku\ ;
+宗教改革 < shuukyoukaikaku\ ;
+商工会議所 < shoukoukaigisho\ ;
+弾劾裁判所 < dangaisaibansho\ ;
+支離滅裂 < shirimetsuretsu\ ;
+国民宿舎 < kokuminshukusha\ ;
+保護関税率 < hogokanzeiritsu\ ;
+独立宣言 < dokuritsusengen\ ;
+副腎皮質 < fukujinhishitsu\ ;
+国民生活 < kokuminseikatsu\ ;
+積載能力 < sekisainouryoku\ ;
+収容能力 < shuuyounouryoku\ ;
+腰高障子 < koshidakashouji\ ;
+年頃日頃 < toshigorohigoro\ ;
+集札係 < shuusatsugakari\ ;
+準禁治産者 < junkinchisansha\ ;
+議院内閣制 < giin''naikakusei\ ;
+通俗文学 < tsuuzokubungaku\ ;
+金槌頭 < kanadzuchiatama\ ;
+優先株主 < yuusenkabunushi\ ;
+写真測量 < shashinsokuryou\ ;
+企業体質 < kigyoutaishitsu\ ;
+生活保護法 < seikatsuhogohou\ ;
+猪突猛進 < chototsumoushin\ ;
+共産主義者 < kyousanshugisha\ ;
+正安息香酸 < seiansokukousan\ ;
+公害病患者 < kougaibyoukanja\ ;
+世界保健機関 < sekaihokenkikan\ ;
+学生割引 < gakuseiwaribiki\ ;
+財政投融資 < zaiseitouyuushi\ ;
+価格圧力 < kakakuatsuryoku\ ;
+港湾労働者 < kouwanroudousha\ ;
+内陸性気候 < nairikuseikikou\ ;
+中央標準時 < chuuouhyoujunji\ ;
+表現形式 < hyougenkeishiki\ ;
+投光照明器 < toukoushoumeiki\ ;
+出願書類 < shutsuganshorui\ ;
+総同盟罷業 < soudoumeihigyou\ ;
+宗教教育 < shuukyoukyouiku\ ;
+余裕綽綽 < yoyuushakushaku\ ;
+知的能力 < chitekinouryoku\ ;
+反骨精神 < hankotsuseishin\ ;
+正確爆撃 < seikakubakugeki\ ;
+日英通訳 < nichieitsuuyaku\ ;
+最高裁判所 < saikousaibansho\ ;
+食物繊維 < shokumotsusen''i\ ;
+算術級数 < sanjutsukyuusuu\ ;
+入力装置 < nyuuryokusouchi\ ;
+職業訓練 < shokugyoukunren\ ;
+探偵小説 < tanteishousetsu\ ;
+生活反応 < seikatsuhan''nou\ ;
+営団地下鉄 < eidanchikatetsu\ ;
+松下電器 < matsushitadenki\ ;
+知識階級 < chishikikaikyuu\ ;
+株式会社 < kabushikigaisha\ ;
+一時預所 < ichijiazukarijo\ ;
+飽和化合物 < houwakagoubutsu\ ;
+拡大解釈 < kakudaikaishaku\ ;
+金属探知機 < kinzokutanchiki\ ;
+浮動小数点 < fudoushousuuten\ ;
+品質保証 < hinshitsuhoshou\ ;
+言語心理学 < gengoshinrigaku\ ;
+信仰告白 < shinkoukokuhaku\ ;
+格物致知 < kakubutsuchichi\ ;
+一姫二太郎 < ichihimenitarou\ ;
+界面活性剤 < kaimenkasseizai\ ;
+米穀通帳 < beikokutsuuchou\ ;
+人生案内欄 < jinseian''nairan\ ;
+実用新案 < jitsuyoushin''an\ ;
+心身障害 < shinshinshougai\ ;
+一分二十秒 < ippun''nijuubyou\ ;
+速戦即決 < sokusensokketsu\ ;
+化学吸着 < kagakukyuuchaku\ ;
+四方山話 < yomoyamabanashi\ ;
+皇室典範 < koushitsutenpan\ ;
+南阿共和国 < nan''akyouwakoku\ ;
+二十四時間制 < nijuuyojikansei\ ;
+特別国会 < tokubetsukokkai\ ;
+一坪本社 < hitotsubohonsha\ ;
+早口言葉 < hayakuchikotoba\ ;
+深山幽谷 < shinzan''yuukoku\ ;
+通商産業 < tsuushousangyou\ ;
+主戦闘戦車 < shusentousensha\ ;
+建築面積 < kenchikumenseki\ ;
+比較言語学 < hikakugengogaku\ ;
+盤根錯節 < bankonsakusetsu\ ;
+内的生活 < naitekiseikatsu\ ;
+内政不干渉 < naiseifukanshou\ ;
+秘密漏洩 < himitsurousetsu\ ;
+高等裁判所 < koutousaibansho\ ;
+出札掛 < shussatsugakari\ ;
+玉石混淆 < gyokusekikonkou\ ;
+雛鑑別者 < hinakanbetsusha\ ;
+終身年金 < shuushin''nenkin\ ;
+人物寸描 < jinbutsusunbyou\ ;
+商品目録 < shouhinmokuroku\ ;
+外食産業 < gaishokusangyou\ ;
+資源節約 < shigensetsuyaku\ ;
+球面幾何学 < kyuumenkikagaku\ ;
+静脈注射 < joumyakuchuusha\ ;
+冒険小説 < boukenshousetsu\ ;
+熱硬化物 < netsukoukabutsu\ ;
+電子顕微鏡 < denshikenbikyou\ ;
+国有鉄道 < kokuyuutetsudou\ ;
+確率変数 < kakuritsuhensuu\ ;
+開発計画 < kaihatsukeikaku\ ;
+労働生産性 < roudouseisansei\ ;
+有害物質 < yuugaibusshitsu\ ;
+情状酌量 < joujoushakuryou\ ;
+侵略戦争 < shinryakusensou\ ;
+平行四辺形 < heikoushihenkei\ ;
+冒頭陳述 < boutouchinjutsu\ ;
+焼身自殺 < shoushinjisatsu\ ;
+感傷主義者 < kanshoushugisha\ ;
+学生自治会 < gakuseijichikai\ ;
+大安吉日 < taiankichinichi\ ;
+矯正視力 < kyouseishiryoku\ ;
+年金受給者 < nenkinjukyuusha\ ;
+研究開発 < kenkyuukaihatsu\ ;
+三指鴎 < mitsuyubikamome\ ;
+談合入札 < dangounyuusatsu\ ;
+非同期通信 < hidoukitsuushin\ ;
+三十年戦争 < sanjuunensensou\ ;
+閉所恐怖症 < heijokyoufushou\ ;
+司法研修所 < shihoukenshuujo\ ;
+陸生動物 < rikuseidoubutsu\ ;
+低金利政策 < teikinriseisaku\ ;
+看護婦養成所 < kangofuyouseijo\ ;
+南太平洋 < minamitaiheiyou\ ;
+麻薬常用者 < mayakujouyousha\ ;
+学生生活 < gakuseiseikatsu\ ;
+長距離列車 < choukyoriressha\ ;
+懲罰委員会 < choubatsuiinkai\ ;
+１１９番 < hyakujuukyuuban\ ;
+有機化合物 < yuukikagoubutsu\ ;
+結合組織 < ketsugousoshiki\ ;
+不当労働行為 < futouroudoukoui\ ;
+彫心鏤骨 < choushinrukotsu\ ;
+縁日商人 < en''nichishounin\ ;
+心神耗弱 < shinshinmoujaku\ ;
+短期貸付 < tankikashitsuke\ ;
+楽天主義者 < rakutenshugisha\ ;
+左中括弧 < hidarichuukakko\ ;
+無条件降伏 < mujoukenkoufuku\ ;
+運転免許証 < untenmenkyoshou\ ;
+格闘戦部隊 < kakutousenbutai\ ;
+黒色人種 < kokushokujinshu\ ;
+公式発表 < koushikihappyou\ ;
+展示即売会 < tenjisokubaikai\ ;
+軍事境界線 < gunjikyoukaisen\ ;
+軟骨組織 < nankotsusoshiki\ ;
+腰赤燕 < koshiakatsubame\ ;
+消費者団体 < shouhishadantai\ ;
+全体主義国 < zentaishugikoku\ ;
+星間物質 < seikanbusshitsu\ ;
+不可侵条約 < fukashinjouyaku\ ;
+生涯学習 < shougaigakushuu\ ;
+知識表現 < chishikihyougen\ ;
+源氏物語 < genjimonogatari\ ;
+七転八倒 < shichitenbattou\ ;
+座席指定券 < zasekishiteiken\ ;
+白色人種 < hakushokujinshu\ ;
+平家物語 < heikemonogatari\ ;
+拒絶反応 < kyozetsuhan''nou\ ;
+帰国子女枠 < kikokushijowaku\ ;
+特別待遇 < tokubetsutaiguu\ ;
+青天白日 < seitenhakujitsu\ ;
+天罰覿面 < tenbatsutekimen\ ;
+血族結婚 < ketsuzokukekkon\ ;
+発色現像 < hasshokugenshou\ ;
+入札価格 < nyuusatsukakaku\ ;
+連立内閣 < renritsunaikaku\ ;
+腹式呼吸 < fukushikikokyuu\ ;
+遺言補足書 < yuigonhosokusho\ ;
+低開発国 < teikaihatsukoku\ ;
+軽妙洒脱 < keimyoushadatsu\ ;
+鋼索鉄道 < kousakutetsudou\ ;
+炭鉱労働者 < tankouroudousha\ ;
+解析幾何学 < kaisekikikagaku\ ;
+現有勢力 < gen''yuuseiryoku\ ;
+経済性向上 < keizaiseikoujou\ ;
+遊休施設 < yuukyuushisetsu\ ;
+跳躍振動 < chouyakushindou\ ;
+地下核実験 < chikakakujikken\ ;
+比例代表制 < hireidaihyousei\ ;
+立憲君主政 < rikkenkunshusei\ ;
+魚雷発射管 < gyoraihasshakan\ ;
+損益分岐点 < son''ekibunkiten\ ;
+社会保険庁 < shakaihokenchou\ ;
+超然内閣 < chouzen''naikaku\ ;
+歩行者天国 < hokoushatengoku\ ;
+実業学校 < jitsugyougakkou\ ;
+私立大学 < shiritsudaigaku\ ;
+最低血圧 < saiteiketsuatsu\ ;
+尊属殺人 < sonzokusatsujin\ ;
+国民皆保険 < kokuminkaihoken\ ;
+診察室 < shinsatsushitsu\ ;
+中立地帯 < chuuritsuchitai\ ;
+両極地方 < ryoukyokuchihou\ ;
+連続殺人 < renzokusatsujin\ ;
+垂直分業 < suichokubungyou\ ;
+洗濯石鹸 < sentakusetsuken\ ;
+闘病生活 < toubyouseikatsu\ ;
+同文通達 < doubuntsuutatsu\ ;
+円転滑脱 < entenkatsudatsu\ ;
+単純再生産 < tanjunsaiseisan\ ;
+被選挙資格 < hisenkyoshikaku\ ;
+生物工学 < seibutsukougaku\ ;
+基準外賃金 < kijungaichingin\ ;
+一律減反 < ichiritsugentan\ ;
+人員縮少 < jin''inshukushou\ ;
+識別力 < shikibetsuryoku\ ;
+熱帯低気圧 < nettaiteikiatsu\ ;
+独立変数 < dokuritsuhensuu\ ;
+人定質問 < jinteishitsumon\ ;
+新約聖書 < shin''yakuseisho\ ;
+生殺与奪 < seisatsuyodatsu\ ;
+私自身 < watakushijishin\ ;
+平清盛 < tairanokiyomori\ ;
+殿様仕事 < tonosamashigoto\ ;
+台所用品 < daidokoroyouhin\ ;
+貴金属卸 < kikinzokuoroshi\ ;
+上方贅六 < kamigatazeiroku\ ;
+血族関係 < ketsuzokukankei\ ;
+子宮後屈 < shikyuukoukutsu\ ;
+南征北伐 < nanseihokubatsu\ ;
+現在完了時 < genzaikanryouji\ ;
+真実一路 < shinjitsuichiro\ ;
+特別運賃 < tokubetsuunchin\ ;
+等辺三角形 < touhensankakkei\ ;
+日常茶飯事 < nichijousahanji\ ;
+通常戦力 < tsuujousenryoku\ ;
+連鎖状球菌 < rensajoukyuukin\ ;
+利害得失 < rigaitokushitsu\ ;
+浅酌低唱 < senshakuteishou\ ;
+裸子植物 < rashishokubutsu\ ;
+借用証書 < shakuyoushousho\ ;
+共有結合 < kyouyuuketsugou\ ;
+原爆犠牲者 < genbakugiseisha\ ;
+回折領域 < kaisetsuryouiki\ ;
+職業意識 < shokugyouishiki\ ;
+外国投資家 < gaikokutoushika\ ;
+単式学級 < tanshikigakkyuu\ ;
+学術雑誌 < gakujutsuzasshi\ ;
+入出力 < nyuushutsuryoku\ ;
+紛失届 < funshitsutodoke\ ;
+電波天文学 < denpatenmongaku\ ;
+卒業試験 < sotsugyoushiken\ ;
+優性形質 < yuuseikeishitsu\ ;
+成長曲線 < seichoukyokusen\ ;
+百八十度 < hyakuhachijuudo\ ;
+大和撫子 < yamatonadeshiko\ ;
+好色文学 < koushokubungaku\ ;
+霊魂消滅 < reikonshoumetsu\ ;
+特別配当 < tokubetsuhaitou\ ;
+構造言語学 < kouzougengogaku\ ;
+風力階級 < fuuryokukaikyuu\ ;
+地域冷暖房 < chiikireidanbou\ ;
+流体力学 < ryuutairikigaku\ ;
+人工呼吸法 < jinkoukokyuuhou\ ;
+劣弱意識 < retsujakuishiki\ ;
+実証主義者 < jisshoushugisha\ ;
+求職係 < kyuushokugakari\ ;
+二股膏薬 < futamatakouyaku\ ;
+支持力理論 < shijiryokuriron\ ;
+物質代謝 < busshitsutaisha\ ;
+管轄官庁 < kankatsukanchou\ ;
+公開討論会 < koukaitouronkai\ ;
+修正申告 < shuuseishinkoku\ ;
+心理小説 < shinrishousetsu\ ;
+着陸地点 < chakurikuchiten\ ;
+文部科学省 < monbukagakushou\ ;
+特許明細書 < tokkyomeisaisho\ ;
+実験小説 < jikkenshousetsu\ ;
+原子爆発 < genshibakuhatsu\ ;
+税制調査会 < zeiseichousakai\ ;
+入力情報 < nyuuryokujouhou\ ;
+量子力学 < ryoushirikigaku\ ;
+奪三振王 < datsusanshin''ou\ ;
+発展途上国 < hattentojoukoku\ ;
+公共図書館 < koukyoutoshokan\ ;
+年末調整 < nenmatsuchousei\ ;
+学術論文 < gakujutsuronbun\ ;
+生物学者 < seibutsugakusha\ ;
+六百六号 < roppyakurokugou\ ;
+思弁哲学 < shibentetsugaku\ ;
+国内規格化 < kokunaikikakuka\ ;
+創立記念日 < souritsukinenbi\ ;
+金銭登録器 < kinsentourokuki\ ;
+抗生物質 < kouseibusshitsu\ ;
+労働組合法 < roudoukumiaihou\ ;
+素形材産業 < sokeizaisangyou\ ;
+活動写真 < katsudoushashin\ ;
+交換貿易制 < koukanbouekisei\ ;
+現地駐在員 < genchichuuzaiin\ ;
+最小自乗法 < saishoujijouhou\ ;
+小型乗用車 < kogatajouyousha\ ;
+属性値行列 < zokusegyouretsu\ ;
+海軍兵学校 < kaigunheigakkou\ ;
+精神薄弱 < seishinhakujaku\ ;
+強迫観念 < kyouhakukan''nen\ ;
+黄道十二宮 < koudoujuunikyuu\ ;
+苦情処理機関 < kujoushorikikan\ ;
+軍縮協定 < gunshukukyoutei\ ;
+着陸地帯 < chakurikuchitai\ ;
+炭塵爆発 < tanjinbakuhatsu\ ;
+補助記憶装置 < hojokiokusouchi\ ;
+生活環境 < seikatsukankyou\ ;
+出来高仕事 < dekidakashigoto\ ;
+技術革新 < gijutsukakushin\ ;
+資産負債表 < shisanfusaihyou\ ;
+粟粒結核 < zokuryuukekkaku\ ;
+版権所有者 < hankenshoyuusha\ ;
+信徒伝動者 < shintodendousha\ ;
+仮受取証 < kariuketorishou\ ;
+新聞配達 < shinbunhaitatsu\ ;
+卒業論文 < sotsugyouronbun\ ;
+登録商標 < tourokushouhyou\ ;
+信用銘柄 < shin''youmeigara\ ;
+操浄瑠璃 < ayatsurijoururi\ ;
+共同生活 < kyoudouseikatsu\ ;
+官能主義者 < kan''noushugisha\ ;
+伝達特性 < dentatsutokusei\ ;
+金壺眼 < kanatsubomanako\ ;
+信仰生活 < shinkouseikatsu\ ;
+郷土小説 < kyoudoshousetsu\ ;
+集団生活 < shuudanseikatsu\ ;
+聖霊降臨祭 < seireikourinsai\ ;
+駐日大使 < chuunichitaishi\ ;
+島国根性 < shimagunikonjou\ ;
+流行性脳炎 < ryuukouseinouen\ ;
+記念論文集 < kinenronbunshuu\ ;
+自動連結機 < jidourenketsuki\ ;
+大陸性気候 < tairikuseikikou\ ;
+左小括弧 < hidarishoukakko\ ;
+核兵器実験 < kakuheikijikken\ ;
+民族宗教 < minzokushuukyou\ ;
+日中韓越 < nitchuukan''etsu\ ;
+誇大妄想狂 < kodaimousoukyou\ ;
+黒色火薬 < kokushokukayaku\ ;
+万有神教 < ban''yuushinkyou\ ;
+頭脳流出 < zunouryuushutsu\ ;
+直接話法 < chokusetsuwahou\ ;
+身分証明書 < mibunshoumeisho\ ;
+文字多重放送 < mojitajuuhousou\ ;
+医師国家試験 < ishikokkashiken\ ;
+文化人類学 < bunkajinruigaku\ ;
+形質転換 < keishitsutenkan\ ;
+第三次産業 < daisanjisangyou\ ;
+正真正銘 < shoushinshoumei\ ;
+爆弾発言 < bakudanhatsugen\ ;
+文化大革命 < bunkadaikakumei\ ;
+直立不動 < chokuritsufudou\ ;
+商業道徳 < shougyoudoutoku\ ;
+陳列室 < chinretsushitsu\ ;
+特設会場 < tokusetsukaijou\ ;
+非局所分岐 < hikyokushobunki\ ;
+核物理学 < kakubutsurigaku\ ;
+肢体不自由児 < shitaifujiyuuji\ ;
+仮名漢字変換 < kanakanjihenkan\ ;
+直立猿人 < chokuritsuenjin\ ;
+関係代名詞 < kankeidaimeishi\ ;
+多国籍言語 < takokusekigengo\ ;
+超連結子 < chourenketsushi\ ;
+水銀気圧計 < suiginkiatsukei\ ;
+甲論乙駁 < kouron''otsubaku\ ;
+児童心理学 < jidoushinrigaku\ ;
+物的資源 < butsutekishigen\ ;
+直接支援 < chokusetsushien\ ;
+空洞化現象 < kuudoukagenshou\ ;
+無理方程式 < murihouteishiki\ ;
+新制中学 < shinseichuugaku\ ;
+圧力団体 < atsuryokudantai\ ;
+温血動物 < onketsudoubutsu\ ;
+交差対称性 < kousataishousei\ ;
+中立労連 < chuuritsurouren\ ;
+特別室 < tokubetsushitsu\ ;
+研究活動 < kenkyuukatsudou\ ;
+自然哲学 < shizentetsugaku\ ;
+株主総会 < kabunushisoukai\ ;
+性格判別 < seikakuhanbetsu\ ;
+喧嘩両成敗 < kenkaryouseibai\ ;
+過失傷害 < kashitsushougai\ ;
+通信工学 < tsuushinkougaku\ ;
+同一人物 < douitsujinbutsu\ ;
+国家公務員法 < kokkakoumuinhou\ ;
+商学博士 < shougakuhakushi\ ;
+心頭滅却 < shintoumekkyaku\ ;
+強行採決 < kyoukousaiketsu\ ;
+視聴覚機器 < shichoukakukiki\ ;
+就任演説 < shuunin''enzetsu\ ;
+染色体異常 < senshokutaiijou\ ;
+名論卓説 < meirontakusetsu\ ;
+注入教育 < chuunyuukyouiku\ ;
+向精神薬 < kouseishin''yaku\ ;
+結婚適齢期 < kekkontekireiki\ ;
+漸近的自由 < zenkintekijiyuu\ ;
+分列行進 < bunretsukoushin\ ;
+食料品店 < shokuryouhinten\ ;
+意志決定機関 < ishiketteikikan\ ;
+主辞素性原理 < shujisoseigenri\ ;
+潮汐摩擦 < chousekimasatsu\ ;
+節足動物 < sessokudoubutsu\ ;
+食物連鎖 < shokumotsurensa\ ;
+中肉中背 < chuunikuchuuzei\ ;
+社会民主党 < shakaiminshutou\ ;
+集中攻撃 < shuuchuukougeki\ ;
+確定判決 < kakuteihanketsu\ ;
+少女小説 < shoujoshousetsu\ ;
+私設応援団 < shisetsuouendan\ ;
+博学力行 < hakugakuryokkou\ ;
+経済同友会 < keizaidouyuukai\ ;
+反証可能性 < hanshoukanousei\ ;
+傍系血族 < boukeiketsuzoku\ ;
+中間内閣 < chuukan''naikaku\ ;
+単独供給 < tandokukyoukyuu\ ;
+搬送周波数 < hansoushuuhasuu\ ;
+失業保険 < shitsugyouhoken\ ;
+特別会計 < tokubetsukaikei\ ;
+振幅変調 < shinpukuhenchou\ ;
+広告収入 < koukokushuunyuu\ ;
+中国大陸 < chuugokutairiku\ ;
+最高指導者 < saikoushidousha\ ;
+放出物資 < houshutsubusshi\ ;
+配達証明 < haitatsushoumei\ ;
+最終目的 < saishuumokuteki\ ;
+葡萄状球菌 < budoujoukyuukin\ ;
+全翼飛行機 < zen''yokuhikouki\ ;
+一蓮托生 < ichirentakushou\ ;
+速効性肥料 < sokkouseihiryou\ ;
+三角測量 < sankakusokuryou\ ;
+動物学者 < doubutsugakusha\ ;
+化学物質 < kagakubusshitsu\ ;
+遅効性肥料 < chikouseihiryou\ ;
+国粋主義者 < kokusuishugisha\ ;
+熱原子核 < netsugenshikaku\ ;
+地質調査 < chishitsuchousa\ ;
+断弾性係数 < dandanseikeisuu\ ;
+歯列矯正 < shiretsukyousei\ ;
+四十七士 < shijuushichishi\ ;
+二次方程式 < nijihouteishiki\ ;
+十月革命 < juugatsukakumei\ ;
+応用心理学 < ouyoushinrigaku\ ;
+文質彬彬 < bunshitsuhinpin\ ;
+精神異常者 < seishin''ijousha\ ;
+紫水晶 < murasakizuishou\ ;
+信託契約 < shintakukeiyaku\ ;
+出生年月日 < shusseinengappi\ ;
+独立戦争 < dokuritsusensou\ ;
+火力発電 < karyokuhatsuden\ ;
+速達郵便 < sokutatsuyuubin\ ;
+弁護士事務所 < bengoshijimusho\ ;
+四百四病 < shihyakushibyou\ ;
+動詞状名詞 < doushijoumeishi\ ;
+元帳残高 < motochouzandaka\ ;
+自由裁量権 < jiyuusairyouken\ ;
+中央集権化 < chuuoushuukenka\ ;
+無利息証券 < murisokushouken\ ;
+抽象美術 < chuushoubijutsu\ ;
+物質文明 < busshitsubunmei\ ;
+超物理学 < choubutsurigaku\ ;
+仁義礼智信 < jingireichishin\ ;
+更年期障害 < kounenkishougai\ ;
+国語審議会 < kokugoshingikai\ ;
+地方裁判所 < chihousaibansho\ ;
+食糧不足 < shokuryoubusoku\ ;
+公共施設 < koukyoushisetsu\ ;
+自動改札機 < jidoukaisatsuki\ ;
+南極条約 < nankyokujouyaku\ ;
+未就学児童 < mishuugakujidou\ ;
+兵力削減 < heiryokusakugen\ ;
+取締役 < torishimariyaku\ ;
+公職追放 < koushokutsuihou\ ;
+学術団体 < gakujutsudantai\ ;
+実時間処理 < jitsujikanshori\ ;
+共生生物 < kyouseiseibutsu\ ;
+被子植物 < hishishokubutsu\ ;
+有畜農業 < yuuchikunougyou\ ;
+寄生植物 < kiseishokubutsu\ ;
+預金準備率 < yokinjunbiritsu\ ;
+天体望遠鏡 < tentaibouenkyou\ ;
+社会諸科学 < shakaishokagaku\ ;
+武侠小説 < bukyoushousetsu\ ;
+木質繊維 < mokushitsusen''i\ ;
+直通列車 < chokutsuuressha\ ;
+転置行列 < tenchigyouretsu\ ;
+法律事務所 < houritsujimusho\ ;
+出動命令 < shutsudoumeirei\ ;
+舌先三寸 < shitasakisanzun\ ;
+大衆食堂 < taishuushokudou\ ;
+実利主義者 < jitsurishugisha\ ;
+内閣閣僚 < naikakukakuryou\ ;
+未確認情報 < mikakuninjouhou\ ;
+老人性痴呆 < roujinseichihou\ ;
+在外研究員 < zaigaikenkyuuin\ ;
+人口爆発 < jinkoubakuhatsu\ ;
+客観主義者 < kyakkanshugisha\ ;
+片口鰯 < katakuchiiwashi\ ;
+圧縮効率 < asshukukouritsu\ ;
+国立銀行 < kokuritsuginkou\ ;
+一病息災 < ichibyousokusai\ ;
+選手権大会 < senshukentaikai\ ;
+正金取引 < shoukintorihiki\ ;
+流通革命 < ryuutsuukakumei\ ;
+芸術作品 < geijutsusakuhin\ ;
+下級裁判所 < kakyuusaibansho\ ;
+逓降変圧器 < teikouhenatsuki\ ;
+限界顕微鏡 < genkaikenbikyou\ ;
+新興宗教 < shinkoushuukyou\ ;
+知識工学 < chishikikougaku\ ;
+体質改善 < taishitsukaizen\ ;
+片側通行 < katagawatsuukou\ ;
+南極大陸 < nankyokutairiku\ ;
+艶笑小話 < enshoukobanashi\ ;
+要撃戦闘機 < yougekisentouki\ ;
+商業美術 < shougyoubijutsu\ ;
+神色自若 < shinshokujijaku\ ;
+水際作戦 < mizugiwasakusen\ ;
+不公平競争 < fukouheikyousou\ ;
+物的証拠 < butsutekishouko\ ;
+公認会計士 < kouninkaikeishi\ ;
+操業短縮 < sougyoutanshuku\ ;
+不倒翁 < okiagarikoboshi\ ;
+内股膏薬 < uchimatagouyaku\ ;
+犯行声明文 < hankouseimeibun\ ;
+消費者価格 < shouhishakakaku\ ;
+音楽評論家 < ongakuhyouronka\ ;
+色彩感覚 < shikisaikankaku\ ;
+公安調査庁 < kouanchousachou\ ;
+乗降車優先 < joukoushayuusen\ ;
+人工甘味料 < jinkoukanmiryou\ ;
+在郷軍人会 < zaigougunjinkai\ ;
+自記湿度計 < jikishitsudokei\ ;
+大統一理論 < daitouitsuriron\ ;
+超能力者 < chounouryokusha\ ;
+検定教科書 < kenteikyoukasho\ ;
+医学技術士 < igakugijutsushi\ ;
+天皇誕生日 < ten''noutanjoubi\ ;
+太平洋地域 < taiheiyouchiiki\ ;
+木食上人 < mokujikishounin\ ;
+自由主義国家 < jiyuushugikokka\ ;
+連載小説 < rensaishousetsu\ ;
+資産再評価 < shisansaihyouka\ ;
+情緒障害児 < jouchoshougaiji\ ;
+日本国憲法 < nihonkokukenpou\ ;
+人民解放軍 < jinminkaihougun\ ;
+焦熱地獄 < shounetsujigoku\ ;
+骨粗鬆症 < kotsusoshoushou\ ;
+流通証券 < ryuutsuushouken\ ;
+差引勘定 < sashihikikanjou\ ;
+開腹手術 < kaifukushujutsu\ ;
+即日出荷 < sokujitsushukka\ ;
+絶対君主制 < zettaikunshusei\ ;
+株式配当 < kabushikihaitou\ ;
+蛍光物質 < keikoubusshitsu\ ;
+聴覚神経 < choukakushinkei\ ;
+懲戒免職 < choukaimenshoku\ ;
+芸術愛好家 < geijutsuaikouka\ ;
+確定申告 < kakuteishinkoku\ ;
+職業軍人 < shokugyougunjin\ ;
+私生児出産 < shiseijishussan\ ;
+生命維持装置 < seimeiijisouchi\ ;
+株式公開 < kabushikikoukai\ ;
+廃仏毀釈 < haibutsukishaku\ ;
+両院協議会 < ryouinkyougikai\ ;
+小田原提灯 < odawaradjouchin\ ;
+眼底出血 < ganteishukketsu\ ;
+信任投票 < shin''nintouhyou\ ;
+関連質問 < kanrenshitsumon\ ;
+建築業者 < kenchikugyousha\ ;
+哲学史要 < tetsugakushiyou\ ;
+知識産業 < chishikisangyou\ ;
+貨物自動車 < kamotsujidousha\ ;
+片手間仕事 < katatemashigoto\ ;
+神経回路網 < shinkeikairomou\ ;
+浚渫作業 < shunsetsusagyou\ ;
+卸売市場 < oroshiurishijou\ ;
+通信教育 < tsuushinkyouiku\ ;
+北斗七星 < hokutoshichisei\ ;
+正式発表 < seishikihappyou\ ;
+炭素化合物 < tansokagoubutsu\ ;
+暴力革命 < bouryokukakumei\ ;
+気管支喘息 < kikanshizensoku\ ;
+共産中国 < kyousanchuugoku\ ;
+森林鉄道 < shinrintetsudou\ ;
+経済協力 < keizaikyouryoku\ ;
+物的損害 < butsutekisongai\ ;
+不肖私 < fushouwatakushi\ ;
+空中爆撃 < kuuchuubakugeki\ ;
+不動産業者 < fudousangyousha\ ;
+海洋気象台 < kaiyoukishoudai\ ;
+失業率 < shitsugyouritsu\ ;
+年中失言 < nenjuushitsugen\ ;
+抽出物 < chuushutsubutsu\ ;
+正方行列 < seihougyouretsu\ ;
+自動翻訳機 < jidouhon''yakuki\ ;
+老若男女 < rounyakunan''nyo\ ;
+縄文式土器 < joumonshikidoki\ ;
+修了証書 < shuuryoushousho\ ;
+下等植物 < katoushokubutsu\ ;
+輸入課徴金 < yunyuukachoukin\ ;
+顕花植物 < kenkashokubutsu\ ;
+重商主義者 < juushoushugisha\ ;
+地元警察 < jimotokeisatsu\ ;
+中国地方 < chuugokuchihou\ ;
+女友達 < on''natomodachi\ ;
+三校終了 < sankoushuuryou\ ;
+人工血液 < jinkouketsueki\ ;
+有性生殖 < yuuseiseishoku\ ;
+錬金術師 < renkinjutsushi\ ;
+遺産相続税 < isansouzokuzei\ ;
+対日感情 < tainichikanjou\ ;
+毘廬遮那仏 < birushanabutsu\ ;
+猥褻文書 < waisetsubunsho\ ;
+百日咳 < hyakunichizeki\ ;
+仮装行列 < kasougyouretsu\ ;
+正弦曲線 < seigenkyokusen\ ;
+没個性的 < botsukoseiteki\ ;
+独立運動 < dokuritsuundou\ ;
+関税自主権 < kanzeijishuken\ ;
+脱脂粉乳 < dasshifun''nyuu\ ;
+基本周波数 < kihonshuuhasuu\ ;
+原子力船 < genshiryokusen\ ;
+四輪駆動車 < yonrinkudousha\ ;
+三球三振 < sankyuusanshin\ ;
+面白半分 < omoshirohanbun\ ;
+商船大学 < shousendaigaku\ ;
+天地万物 < tenchibanbutsu\ ;
+行列式 < gyouretsushiki\ ;
+耐熱合金 < tainetsugoukin\ ;
+静電気防止 < seidenkiboushi\ ;
+政略結婚 < seiryakukekkon\ ;
+特高警察 < tokkoukeisatsu\ ;
+煙突掃除夫 < entotsusoujifu\ ;
+商慣習法 < shoukanshuuhou\ ;
+昆虫採集 < konchuusaishuu\ ;
+中国拳法 < chuugokukenpou\ ;
+美術監督 < bijutsukantoku\ ;
+取扱人 < toriatsukainin\ ;
+副大統領 < fukudaitouryou\ ;
+休戦記念日 < kyuusenkinenbi\ ;
+焦性硫酸 < shouseiryuusan\ ;
+学校群制度 < gakkougunseido\ ;
+周旋業者 < shuusengyousha\ ;
+南回帰線 < minamikaikisen\ ;
+放射線技師 < houshasengishi\ ;
+胎生動物 < taiseidoubutsu\ ;
+全国中継 < zenkokuchuukei\ ;
+牛歩戦術 < gyuuhosenjutsu\ ;
+突撃隊員 < totsugekitaiin\ ;
+約百万円 < yakuhyakumanen\ ;
+人海戦術 < jinkaisenjutsu\ ;
+出入国 < shutsunyuukoku\ ;
+家庭裁判所 < kateisaibansho\ ;
+天文学的 < tenmongakuteki\ ;
+思案投首 < shian''nagekubi\ ;
+長距離打者 < choukyoridasha\ ;
+裏口営業 < uraguchieigyou\ ;
+伝奇小説 < denkishousetsu\ ;
+中立主義 < chuuritsushugi\ ;
+才槌頭 < saidzuchiatama\ ;
+研究資料 < kenkyuushiryou\ ;
+古生物学 < koseibutsugaku\ ;
+更生施設 < kouseishisetsu\ ;
+片道切符 < katamichikippu\ ;
+日本標準時 < nihonhyoujunji\ ;
+接続助詞 < setsuzokujoshi\ ;
+誘導電動機 < yuudoudendouki\ ;
+逆説的 < gyakusetsuteki\ ;
+英仏海峡 < eifutsukaikyou\ ;
+稔実不良 < nenjitsufuryou\ ;
+建国記念日 < kenkokukinenbi\ ;
+公衆浴場 < koushuuyokujou\ ;
+副食物 < fukushokubutsu\ ;
+端末装置 < tanmatsusouchi\ ;
+文字符号化法 < mojifugoukahou\ ;
+伝統主義者 < dentoushugisha\ ;
+駐車料金 < chuusharyoukin\ ;
+資本取引 < shihontorihiki\ ;
+株式相場 < kabushikisouba\ ;
+登記番号欄 < toukibangouran\ ;
+歩行者優先 < hokoushayuusen\ ;
+無人宇宙船 < mujin''uchuusen\ ;
+免疫反応 < men''ekihan''nou\ ;
+建設会社 < kensetsugaisha\ ;
+本末顛倒 < honmatsutentou\ ;
+初志貫徹 < shoshikantetsu\ ;
+羅萄日辞典 < raponichijiten\ ;
+産業革命 < sangyoukakumei\ ;
+定年退職 < teinentaishoku\ ;
+国際親善 < kokusaishinzen\ ;
+性格診断 < seikakushindan\ ;
+全身衰弱 < zenshinsuijaku\ ;
+問題解決 < mondaikaiketsu\ ;
+温暖化現象 < ondankagenshou\ ;
+哺乳動物 < honyuudoubutsu\ ;
+資本注入 < shihonchuunyuu\ ;
+修業年限 < shuugyounengen\ ;
+婦人参政権 < fujinsanseiken\ ;
+自由民主党 < jiyuuminshutou\ ;
+緑綬褒章 < ryokujuhoushou\ ;
+研究題目 < kenkyuudaimoku\ ;
+病床日誌 < byoushounisshi\ ;
+算術計算 < sanjutsukeisan\ ;
+帰化植物 < kikashokubutsu\ ;
+金融恐慌 < kin''yuukyoukou\ ;
+個体発生論 < kotaihasseiron\ ;
+大威徳妙王 < daiitokumyouou\ ;
+特別措置 < tokubetsusochi\ ;
+弛張振動 < shichoushindou\ ;
+戦戦兢兢 < sensenkyoukyou\ ;
+大韓航空機 < taikankoukuuki\ ;
+観光施設 < kankoushisetsu\ ;
+善男善女 < zen''nanzen''nyo\ ;
+信用販売 < shin''youhanbai\ ;
+末梢神経 < masshoushinkei\ ;
+骨髄移植 < kotsuzuiishoku\ ;
+道徳教育 < doutokukyouiku\ ;
+金殿玉楼 < kindengyokurou\ ;
+不特定多数 < futokuteitasuu\ ;
+瓢箪鯰 < hyoutan''namazu\ ;
+東半球 < higashihankyuu\ ;
+動物質 < doubutsushitsu\ ;
+点滴注射 < tentekichuusha\ ;
+工学修士 < kougakushuushi\ ;
+門外不出 < mongaifushutsu\ ;
+主情主義者 < shujoushugisha\ ;
+法定代理人 < houteidairinin\ ;
+通信装置 < tsuushinsouchi\ ;
+作戦計画 < sakusenkeikaku\ ;
+公開図書館 < koukaitoshokan\ ;
+場外取引 < jougaitorihiki\ ;
+信託銀行 < shintakuginkou\ ;
+一時間以内 < ichijikan''inai\ ;
+境界調整 < kyoukaichousei\ ;
+主力艦隊 < shuryokukantai\ ;
+数理言語学 < suurigengogaku\ ;
+職場環境 < shokubakankyou\ ;
+越中褌 < etchuufundoshi\ ;
+割引価格 < waribikikakaku\ ;
+整形手術 < seikeishujutsu\ ;
+酸性食品 < sanseishokuhin\ ;
+原子力学 < genshirikigaku\ ;
+水中翼船 < suichuuyokusen\ ;
+遺産相続人 < isansouzokunin\ ;
+発達段階 < hattatsudankai\ ;
+方向探知器 < houkoutanchiki\ ;
+諸説紛紛 < shosetsufunpun\ ;
+乳酸飲料 < nyuusan''inryou\ ;
+個々別別 < kokobetsubetsu\ ;
+口不調法 < kuchibuchouhou\ ;
+超自然的 < choushizenteki\ ;
+熱可塑樹脂 < netsukasojushi\ ;
+国防長官 < kokubouchoukan\ ;
+正統信教 < seitoushinkyou\ ;
+強化合宿 < kyoukagasshuku\ ;
+朝鮮人参 < chousen''ninjin\ ;
+印半纏 < shirushibanten\ ;
+束縛変項 < sokubakuhenkou\ ;
+神経組織 < shinkeisoshiki\ ;
+超越関数 < chouetsukansuu\ ;
+効率向上 < kouritsukoujou\ ;
+無機化合物 < mukikagoubutsu\ ;
+仕方話 < shikatabanashi\ ;
+大脳皮質 < dainouhishitsu\ ;
+改札係 < kaisatsugakari\ ;
+生体力学 < seitairikigaku\ ;
+重要文化財 < juuyoubunkazai\ ;
+山下公園 < yamashitakouen\ ;
+居間兼食堂 < imakenshokudou\ ;
+口述試験 < koujutsushiken\ ;
+一日片時 < ichinichihenji\ ;
+社会生活 < shakaiseikatsu\ ;
+出版目録 < shupanmokuroku\ ;
+別途支出 < bettoshishutsu\ ;
+申告納税 < shinkokunouzei\ ;
+剃刀触 < kamisorikabure\ ;
+売渡証 < uriwatashishou\ ;
+即決裁判 < sokketsusaiban\ ;
+異方導電膜 < ihoudoudenmaku\ ;
+独立自尊 < dokuritsujison\ ;
+婚約指輪 < kon''yakuyubiwa\ ;
+血液凝固 < ketsuekigyouko\ ;
+出処進退 < shusshoshintai\ ;
+弓矢八幡 < yumiyahachiman\ ;
+警察手帳 < keisatsutechou\ ;
+職業婦人 < shokugyoufujin\ ;
+指示代名詞 < shijidaimeishi\ ;
+回復不可能 < kaifukufukanou\ ;
+至福千年 < shifukusen''nen\ ;
+天地開闢 < tenchikaibyaku\ ;
+冷凍食品 < reitoushokuhin\ ;
+補足説明 < hosokusetsumei\ ;
+信用状態 < shin''youjoutai\ ;
+絶対湿度 < zettaishitsudo\ ;
+明明白白 < meimeihakuhaku\ ;
+拝金主義者 < haikinshugisha\ ;
+軍備縮小 < gunbishukushou\ ;
+南無阿弥陀仏 < namuamidabutsu\ ;
+暴力団員 < bouryokudan''in\ ;
+大学教育 < daigakukyouiku\ ;
+第三人称 < daisan''ninshou\ ;
+人道主義者 < jindoushugisha\ ;
+永世中立 < eiseichuuritsu\ ;
+研究領域 < kenkyuuryouiki\ ;
+教育勅語 < kyouikuchokugo\ ;
+告別式 < kokubetsushiki\ ;
+精神障害 < seishinshougai\ ;
+天空海濶 < tenkuukaikatsu\ ;
+食餌療法 < shokujiryouhou\ ;
+中央分離帯 < chuuoubunritai\ ;
+温帯低気圧 < ontaiteikiatsu\ ;
+超国家主義 < choukokkashugi\ ;
+作者不知 < sakushashirazu\ ;
+生活水準 < seikatsusuijun\ ;
+卵生動物 < ranseidoubutsu\ ;
+筋肉労働 < kin''nikuroudou\ ;
+南支那海 < minamishinakai\ ;
+学術用語 < gakujutsuyougo\ ;
+自然食品 < shizenshokuhin\ ;
+商業組合 < shougyoukumiai\ ;
+語彙機能文法 < goikinoubunpou\ ;
+職権乱用 < shokkenran''you\ ;
+伴食大臣 < banshokudaijin\ ;
+夾雑物 < kyouzatsubutsu\ ;
+利害関係者 < rigaikankeisha\ ;
+衆議員議長 < shuugiingichou\ ;
+岡目八目 < okamehachimoku\ ;
+導波管定数 < douhakanteisuu\ ;
+斬新奇抜 < zanshinkibatsu\ ;
+直情径行 < chokujoukeikou\ ;
+私立学校 < shiritsugakkou\ ;
+中日辞典 < chuunichijiten\ ;
+丁字形定規 < teijigatajougi\ ;
+簡易裁判所 < kan''isaibansho\ ;
+分類目録 < bunruimokuroku\ ;
+内分泌腺 < naibunpitsusen\ ;
+反動主義者 < handoushugisha\ ;
+活路開拓 < katsurokaitaku\ ;
+平板測量 < heibansokuryou\ ;
+源泉徴収 < gensenchoushuu\ ;
+通信衛星 < tsuushin''eisei\ ;
+清算取引 < seisantorihiki\ ;
+特殊学級 < tokushugakkyuu\ ;
+信用調査 < shin''youchousa\ ;
+先物売買 < sakimonobaibai\ ;
+七難八苦 < shichinanhakku\ ;
+角膜移植 < kakumakuishoku\ ;
+音楽図書館 < ongakutoshokan\ ;
+救急病院 < kyuukyuubyouin\ ;
+接触感染 < sesshokukansen\ ;
+税金申告 < zeikinshinkoku\ ;
+絨毯爆撃 < juutanbakugeki\ ;
+七転八起 < shichitenhakki\ ;
+乗用自動車 < jouyoujidousha\ ;
+水銀中毒 < suiginchuudoku\ ;
+露出不足 < roshutsubusoku\ ;
+平上去入 < hyoujoukyonyuu\ ;
+国立公園 < kokuritsukouen\ ;
+公立学校 < kouritsugakkou\ ;
+通信圏外 < tsuushinkengai\ ;
+約束手形 < yakusokutegata\ ;
+召集令状 < shoushuureijou\ ;
+圧倒的多数 < attoutekitasuu\ ;
+新入社員 < shin''nyuushain\ ;
+日南海岸 < nichinankaigan\ ;
+非政府組織 < hiseifusoshiki\ ;
+汎整数式 < hanseisuushiki\ ;
+自由労働者 < jiyuuroudousha\ ;
+古物商人 < kobutsushounin\ ;
+緑白色 < ryokuhakushoku\ ;
+膝関節 < shitsukansetsu\ ;
+武力干渉 < buryokukanshou\ ;
+公衆道徳 < koushuudoutoku\ ;
+怪奇小説 < kaikishousetsu\ ;
+博愛主義者 < hakuaishugisha\ ;
+秘密投票 < himitsutouhyou\ ;
+圧力容器 < atsuryokuyouki\ ;
+求婚広告 < kyuukonkoukoku\ ;
+心因反応 < shin''inhan''nou\ ;
+定期乗車券 < teikijoushaken\ ;
+電気洗濯機 < denkisentakuki\ ;
+麦藁帽子 < mugiwaraboushi\ ;
+納税申告 < nouzeishinkoku\ ;
+反対称的 < hantaishouteki\ ;
+終戦記念日 < shuusenkinenbi\ ;
+住友銀行 < sumitomoginkou\ ;
+就業人口 < shuugyoujinkou\ ;
+全勝優勝 < zenshouyuushou\ ;
+建設大臣 < kensetsudaijin\ ;
+非良心的 < hiryoushinteki\ ;
+絶対必要 < zettaihitsuyou\ ;
+社会主義者 < shakaishugisha\ ;
+蛸足配線 < takoashihaisen\ ;
+工業大学 < kougyoudaigaku\ ;
+金壱万円 < kin''ichiman''en\ ;
+旅客列車 < ryokyakuressha\ ;
+小型自動車 < kogatajidousha\ ;
+立会演説 < tachiaienzetsu\ ;
+奨学資金 < shougakushikin\ ;
+民事訴訟法 < minjisoshouhou\ ;
+現金収入 < genkinshuunyuu\ ;
+第二量子化 < dainiryoushika\ ;
+二原子分子 < nigenshibunshi\ ;
+学術会議 < gakujutsukaigi\ ;
+法律問題 < houritsumondai\ ;
+直通電話 < chokutsuudenwa\ ;
+台所道具 < daidokorodougu\ ;
+電源供給 < dengenkyoukyuu\ ;
+常任指揮者 < jouninshikisha\ ;
+水陸両用 < suirikuryouyou\ ;
+通信手段 < tsuushinshudan\ ;
+下請会社 < shitaukegaisha\ ;
+第一人称 < daiichininshou\ ;
+学歴社会 < gakurekishakai\ ;
+農事試験場 < noujishikenjou\ ;
+情報化社会 < jouhoukashakai\ ;
+演奏曲目 < ensoukyokumoku\ ;
+思想警察 < shisoukeisatsu\ ;
+公益質屋 < kouekishichiya\ ;
+接続口 < setsuzokuguchi\ ;
+偕老同穴 < kairoudouketsu\ ;
+主観主義者 < shukanshugisha\ ;
+無教会主義 < mukyoukaishugi\ ;
+米価審議会 < beikashingikai\ ;
+健康食品 < kenkoushokuhin\ ;
+抽象名詞 < chuushoumeishi\ ;
+小乗仏教 < shoujoubukkyou\ ;
+時間外労働 < jikangairoudou\ ;
+合目的性 < goumokutekisei\ ;
+電力会社 < denryokugaisha\ ;
+百科全書派 < hyakkazenshoha\ ;
+二百二十日 < nihyakuhatsuka\ ;
+海洋開発 < kaiyoukaihatsu\ ;
+細胞分裂 < saiboubunretsu\ ;
+急行料金 < kyuukouryoukin\ ;
+丁丁発止 < chouchouhasshi\ ;
+教職課程 < kyoushokukatei\ ;
+二重価格制 < nijuukakakusei\ ;
+刑事訴訟法 < keijisoshouhou\ ;
+凝着力 < gyouchakuryoku\ ;
+懐勘定 < futokorokanjou\ ;
+出版業者 < shuppangyousha\ ;
+就職運動 < shuushokuundou\ ;
+略奪行為 < ryakudatsukoui\ ;
+理非曲直 < rihikyokuchoku\ ;
+提出物 < teishutsubutsu\ ;
+別冊付録 < bessatsufuroku\ ;
+三権分立 < sankenbunritsu\ ;
+出札口 < shussatsuguchi\ ;
+販売代理店 < hanbaidairiten\ ;
+共同研究 < kyoudoukenkyuu\ ;
+新刊紹介 < shinkanshoukai\ ;
+棟割長屋 < munewarinagaya\ ;
+修好条約 < shuukoujouyaku\ ;
+冠状動脈 < kanjoudoumyaku\ ;
+空空漠漠 < kuukuubakubaku\ ;
+悪性貧血 < akuseihinketsu\ ;
+休戦協定 < kyuusenkyoutei\ ;
+神経衰弱 < shinkeisuijaku\ ;
+回折格子 < kaisetsukoushi\ ;
+先決問題 < senketsumondai\ ;
+東亜諸民族 < touashominzoku\ ;
+就業日数 < shuugyounissuu\ ;
+実験動物 < jikkendoubutsu\ ;
+単葉飛行機 < tan''youhikouki\ ;
+忠君愛国 < chuukun''aikoku\ ;
+求人広告 < kyuujinkoukoku\ ;
+独立独歩 < dokuritsudoppo\ ;
+有害食品 < yuugaishokuhin\ ;
+国会議事録 < kokkaigijiroku\ ;
+麻薬中毒 < mayakuchuudoku\ ;
+金属工業 < kinzokukougyou\ ;
+卸売物価 < oroshiuribukka\ ;
+共同出資 < kyoudoushusshi\ ;
+狭軌鉄道 < kyoukitetsudou\ ;
+商業手形 < shougyoutegata\ ;
+郵便配達 < yuubinhaitatsu\ ;
+港湾当局 < kouwantoukyoku\ ;
+商業銀行 < shougyouginkou\ ;
+省略記号 < shouryakukigou\ ;
+天日瓦 < tenjitsugawara\ ;
+中間報告 < chuukanhoukoku\ ;
+夢物語 < yumemonogatari\ ;
+中心思想 < chuushinshisou\ ;
+五月人形 < gogatsuningyou\ ;
+伝承文学 < denshoubungaku\ ;
+政府保証債 < seifuhoshousai\ ;
+軟体動物 < nantaidoubutsu\ ;
+一昔前 < hitomukashimae\ ;
+強制収容 < kyouseishuuyou\ ;
+便乗主義者 < binjoushugisha\ ;
+一陽来腹 < ichiyouraifuku\ ;
+漁業協定 < gyogyoukyoutei\ ;
+水生動物 < suiseidoubutsu\ ;
+楔形文字 < kusabigatamoji\ ;
+百卒長 < hyakusotsuchou\ ;
+信用組合 < shin''youkumiai\ ;
+研究報告 < kenkyuuhoukoku\ ;
+逆行列 < gyakugyouretsu\ ;
+二大政党制 < nidaiseitousei\ ;
+水天彷彿 < suitenhoufutsu\ ;
+住宅産業 < juutakusangyou\ ;
+泡沫会社 < houmatsugaisha\ ;
+無利息公債 < murisokukousai\ ;
+談論風発 < danronfuuhatsu\ ;
+足素性原理 < ashisujougenri\ ;
+資本主義者 < shihonshugisha\ ;
+先発投手 < senpatsutoushu\ ;
+推理小説 < suirishousetsu\ ;
+紳士協定 < shinshikyoutei\ ;
+大名屋敷 < daimyouyashiki\ ;
+特異体質 < tokuitaishitsu\ ;
+中間搾取 < chuukansakushu\ ;
+文化地理学 < bunkachirigaku\ ;
+協調作業 < kyouchousagyou\ ;
+指圧療法 < shiatsuryouhou\ ;
+公認候補者 < kouninkouhosha\ ;
+工業技術 < kougyougijutsu\ ;
+総合芸術 < sougougeijutsu\ ;
+旭日章 < kyokujitsushou\ ;
+世界選手権 < sekaisenshuken\ ;
+中産階級 < chuusankaikyuu\ ;
+南十字星 < minamijuujisei\ ;
+新石器時代 < shinsekkijidai\ ;
+心霊手術 < shinreitejutsu\ ;
+成長産業 < seichousangyou\ ;
+受験参考書 < jukensankousho\ ;
+国際収支 < kokusaishuushi\ ;
+静止画放送 < seishigahousou\ ;
+上陸作戦 < jourikusakusen\ ;
+動力資源 < douryokushigen\ ;
+必要条件 < hitsuyoujouken\ ;
+少年感化院 < shounenkankain\ ;
+中流意識 < chuuryuuishiki\ ;
+長距離輸送 < choukyoriyusou\ ;
+再帰代名詞 < saikidaimeishi\ ;
+出漁区域 < shutsugyokuiki\ ;
+財形貯蓄 < zaikeichochiku\ ;
+職人気質 < shokuninkatagi\ ;
+控訴裁判所 < kousohaibansho\ ;
+単位行列 < tan''igyouretsu\ ;
+文化功労者 < bunkakourousha\ ;
+国連憲章 < kokurenkenshou\ ;
+水先案内 < mizusakian''nai\ ;
+真空掃除機 < shinkuusoujiki\ ;
+収容設備 < shuuyousetsubi\ ;
+深海漁業 < shinkaigyogyou\ ;
+人形浄瑠璃 < ningyoujoururi\ ;
+直往邁進 < chokuoumaishin\ ;
+天体力学 < tentairikigaku\ ;
+昔話 < mukashibanashi\ ;
+政治評論家 < seijihyouronka\ ;
+伝承叙事詩 < denshoujojishi\ ;
+有視界飛行 < yuushikaihikou\ ;
+幼友達 < osanatomodachi\ ;
+真空電球 < shinkuudenkyuu\ ;
+降三世妙王 < gouzanzemyouou\ ;
+等高線地図 < toukousenchizu\ ;
+上層建築 < jousoukenchiku\ ;
+役職手当 < yakushokuteate\ ;
+高圧電流 < kouatsudenryuu\ ;
+尻軽女 < shirigaruon''na\ ;
+亥年 < inoshishidoshi\ ;
+白鉢巻 < shirohachimaki\ ;
+交通道徳 < koutsuudoutoku\ ;
+水準測量 < suijunsokuryou\ ;
+製造年月日 < seizounengappi\ ;
+弁証法的 < benshouhouteki\ ;
+松茸御飯 < matsutakegohan\ ;
+関税障壁 < kanzeishouheki\ ;
+統括部長 < toukatsubuchou\ ;
+地方交付税 < chihoukoufuzei\ ;
+薄紫色 < usumurasakiiro\ ;
+損失補填 < sonshitsuhoten\ ;
+日本語教本 < nihongokyouhon\ ;
+出塁率 < shutsuruiritsu\ ;
+事事物物 < jijibutsubutsu\ ;
+連続写真 < renzokushashin\ ;
+俘虜収容所 < furyoshuuyoujo\ ;
+空気圧縮機 < kuukiasshukuki\ ;
+四百余州 < shihyakuyoshuu\ ;
+国連記念日 < kokurenkinenbi\ ;
+心筋梗塞 < shinkinkousoku\ ;
+宗教裁判 < shuukyousaiban\ ;
+電信柱 < denshinbashira\ ;
+写真石版 < shashinsekiban\ ;
+隠花植物 < inkashokubutsu\ ;
+無記名投票 < mukimeitouhyou\ ;
+微生物学 < biseibutsugaku\ ;
+戦略空軍 < senryakukuugun\ ;
+恭賀新年 < kyougashin''nen\ ;
+国際協定 < kokusaikyoutei\ ;
+自然主義者 < shizenshugisha\ ;
+色即是空 < shikisokuzekuu\ ;
+頭寒足熱 < zukansokunetsu\ ;
+区検察庁 < kukensatsuchou\ ;
+核防衛力 < kakuboueiryoku\ ;
+完全燃焼 < kanzen''nenshou\ ;
+重量感覚 < juuryoukankaku\ ;
+雌雄鑑別 < shiyuukanbetsu\ ;
+管区気象台 < kankukishoudai\ ;
+原生動物 < genseidoubutsu\ ;
+目的意識 < mokutekiishiki\ ;
+法定準備金 < houteijunbikin\ ;
+海生動物 < kaiseidoubutsu\ ;
+攻撃精神 < kougekiseishin\ ;
+作成技術 < sakuseigijutsu\ ;
+金銭信託 < kinsenshintaku\ ;
+吸収合併 < kyuushuugappei\ ;
+換骨奪胎 < kankotsudattai\ ;
+硬質陶器 < koushitsutouki\ ;
+寝台料金 < shindairyoukin\ ;
+購入注文 < kounyuuchuumon\ ;
+焦土戦術 < shoudosenjutsu\ ;
+有職故実 < yuusokukojitsu\ ;
+話話 < hanashibanashi\ ;
+無償信託 < mushoushintaku\ ;
+消費生活 < shouhiseikatsu\ ;
+室内遊戯 < shitsunaiyuugi\ ;
+宗教団体 < shuukyoudantai\ ;
+進行状況 < shinkoujoukyou\ ;
+高等動物 < koutoudoubutsu\ ;
+一膳飯屋 < ichizenmeshiya\ ;
+時代小説 < jidaishousetsu\ ;
+内証話 < naishoubanashi\ ;
+海洋性気候 < kaiyouseikikou\ ;
+曲線座標 < kyokusenzahyou\ ;
+当該人物 < tougaijinbutsu\ ;
+外貨準備高 < gaikajunbidaka\ ;
+要求送信 < youkyuusoushin\ ;
+百人一首 < hyakunin''isshu\ ;
+集団検診 < shuudankenshin\ ;
+旅行代理店 < ryokoudairiten\ ;
+安寧秩序 < an''neichitsujo\ ;
+下唇 < shitakuchibiru\ ;
+極楽鳥花 < gokurakuchouka\ ;
+中越紛争 < chuuetsufunsou\ ;
+一括購入 < ikkatsukounyuu\ ;
+民族自決 < minzokujiketsu\ ;
+倶梨伽羅紋紋 < kurikaramonmon\ ;
+正面攻撃 < shoumenkougeki\ ;
+教育産業 < kyouikusangyou\ ;
+空調設備 < kuuchousetsubi\ ;
+単独内閣 < tandokunaikaku\ ;
+緑玉石 < ryokugyokuseki\ ;
+教育実習 < kyouikujisshuu\ ;
+就業規則 < shuugyoukisoku\ ;
+教養番組 < kyouyoubangumi\ ;
+凍結資産 < touketsushisan\ ;
+集団農場 < shuudan''noujou\ ;
+昔昔 < mukashimukashi\ ;
+周辺諸国 < shuuhenshokoku\ ;
+国籍条項 < kokusekijoukou\ ;
+現物給与 < genbutsukyuuyo\ ;
+予選通過者 < yosentsuukasha\ ;
+豪雪地帯 < gousetsuchitai\ ;
+海千山千 < umisen''yamasen\ ;
+革新政党 < kakushinseitou\ ;
+少数民族 < shousuuminzoku\ ;
+労働協約 < roudoukyouyaku\ ;
+電撃作戦 < dengekisakusen\ ;
+膝蓋骨 < shitsugaikotsu\ ;
+女性解放論 < joseikaihouron\ ;
+脊髄神経 < sekizuishinkei\ ;
+美術大学 < bijutsudaigaku\ ;
+遺伝子治療 < idenshichiryou\ ;
+選択項目 < sentakukoumoku\ ;
+間接選挙 < kansetsusenkyo\ ;
+貝殻追放 < kaigaratsuihou\ ;
+群発地震 < gunpatsujishin\ ;
+絶対主義者 < zettaishugisha\ ;
+緊褌一番 < kinkon''ichiban\ ;
+共同炊事場 < kyoudousuijiba\ ;
+独身貴族 < dokushinkizoku\ ;
+福祉事務所 < fukushijimusho\ ;
+科学知識 < kagakuchishiki\ ;
+石部金吉 < ishibekinkichi\ ;
+花鳥風月 < kachoufuugetsu\ ;
+提出期限 < teishutsukigen\ ;
+三角系異常 < sankakukeiijou\ ;
+天長地久 < tenchouchikyuu\ ;
+百万長者 < hyakumanchouja\ ;
+対症療法 < taishouryouhou\ ;
+水産試験所 < suisanshikenjo\ ;
+中枢神経 < chuusuushinkei\ ;
+商工業者 < shoukougyousha\ ;
+開票速報 < kaihyousokuhou\ ;
+性的衝動 < seitekishoudou\ ;
+軍事裁判所 < gunjisaibansho\ ;
+特殊撮影 < tokushusatsuei\ ;
+輸出手形 < yushutsutegata\ ;
+史料館学 < shiryoukangaku\ ;
+空中楼閣 < kuuchuuroukaku\ ;
+隠退蔵物資 < intaizoubusshi\ ;
+少年文学 < shounenbungaku\ ;
+調整攻撃 < chouseikougeki\ ;
+精神年齢 < seishin''nenrei\ ;
+居中調停 < kyochuuchoutei\ ;
+税別価格 < zeibetsukakaku\ ;
+軍人生活 < gunjinseikatsu\ ;
+皇宮警察 < kouguukeisatsu\ ;
+粒々辛苦 < ryuuryuushinku\ ;
+東京大学 < toukyoudaigaku\ ;
+参考図書館 < sankoutoshokan\ ;
+興味津津 < kyoumishinshin\ ;
+無線周波数 < musenshuuhasuu\ ;
+千客万来 < senkyakubanrai\ ;
+選抜試験 < senbatsushiken\ ;
+航路標識 < kourohyoushiki\ ;
+緊急発進 < kinkyuuhasshin\ ;
+空中写真 < kuuchuushashin\ ;
+営業活動 < eigyoukatsudou\ ;
+救援活動 < kyuuenkatsudou\ ;
+天然硝子 < ten''nenshoushi\ ;
+信託資金 < shintakushikin\ ;
+市民生活 < shiminseikatsu\ ;
+重農主義者 < juunoushugisha\ ;
+乗合自動車 < noriaijidousha\ ;
+絶対権力 < zettaikenryoku\ ;
+周章狼狽 < shuushouroubai\ ;
+民族学者 < minzokugakusha\ ;
+膠着状態 < kouchakujoutai\ ;
+細胞遺伝学 < saibouidengaku\ ;
+面接試験 < mensetsushiken\ ;
+政策協定 < seisakukyoutei\ ;
+販売戦略 < hanbaisenryaku\ ;
+公設市場 < kousetsuichiba\ ;
+人物経済 < jinbutsukeizai\ ;
+心的状態 < shintekijoutai\ ;
+丘陵地帯 < kyuuryouchitai\ ;
+超音波洗浄 < chouonpasenjou\ ;
+刑事被告人 < keijihikokunin\ ;
+仮出獄 < karishutsugoku\ ;
+特別職 < tokubetsushoku\ ;
+群伝搬時間 < gundenpanjikan\ ;
+生涯教育 < shougaikyouiku\ ;
+旧約全書 < kyuuyakuzensho\ ;
+大根役者 < daikon''yakusha\ ;
+万年新造 < man''nenshinzou\ ;
+健康保険法 < kenkouhokenhou\ ;
+常任理事国 < jouninrijikoku\ ;
+座骨神経 < zakotsushinkei\ ;
+非金属元素 < hikinzokugenso\ ;
+長老教会 < chouroukyoukai\ ;
+陸上自衛隊 < rikujoujieitai\ ;
+貯蓄債券 < chochikusaiken\ ;
+武力介入 < buryokukainyuu\ ;
+保険勧誘員 < hokenkan''yuuin\ ;
+精密科学 < seimitsukagaku\ ;
+私鉄総連 < shitetsusouren\ ;
+伝送終了 < densoushuuryou\ ;
+窒素固定法 < chissokoteihou\ ;
+薫蒸消毒 < kunjoushoudoku\ ;
+法律相談 < houritsusoudan\ ;
+地域開発 < chiikikaihatsu\ ;
+国内産業 < kokunaisangyou\ ;
+一打逆転 < ichidagyakuten\ ;
+水生生物 < suiseiseibutsu\ ;
+有線通信 < yuusentsuushin\ ;
+相対性原理 < soutaiseigenri\ ;
+美術愛好家 < bijutsuaikouka\ ;
+起承転結 < kishoutenketsu\ ;
+物質主義 < busshitsushugi\ ;
+信託会社 < shintakugaisha\ ;
+中石器時代 < chuusekkijidai\ ;
+主知主義者 < shuchishugisha\ ;
+蚕糸試験所 < sanshishikenjo\ ;
+中間商人 < chuukanshounin\ ;
+静電容量 < seiden''youryou\ ;
+中流社会 < chuuryuushakai\ ;
+私立探偵 < shiritsutantei\ ;
+命辛辛 < inochigaragara\ ;
+国民投票 < kokumintouhyou\ ;
+有罪判決 < yuuzaihanketsu\ ;
+強化食品 < kyoukashokuhin\ ;
+伸縮自在 < shinshukujizai\ ;
+陸軍大学 < rikugundaigaku\ ;
+通信速度 < tsuushinsokudo\ ;
+黒金剛石 < kurokongouseki\ ;
+立体幾何学 < rittaikikagaku\ ;
+中国人街 < chuugokujingai\ ;
+学芸大学 < gakugeidaigaku\ ;
+大河小説 < taigashousetsu\ ;
+鉄道会社 < tetsudougaisha\ ;
+音楽形式 < ongakukeishiki\ ;
+性格分析 < seikakubunseki\ ;
+転入届 < ten''nyuutodoke\ ;
+不動産鑑定 < fudousankantei\ ;
+受付係 < uketsukegakari\ ;
+就職率 < shuushokuritsu\ ;
+現金書留 < genkinkakitome\ ;
+休戦条約 < kyuusenjouyaku\ ;
+二足動物 < nisokudoubutsu\ ;
+心理学的 < shinrigakuteki\ ;
+侃々諤諤 < kankangakugaku\ ;
+直線運動 < chokusen''undou\ ;
+悪徳新聞 < akutokushinbun\ ;
+未決拘留 < miketsukouryuu\ ;
+定量分析 < teiryoubunseki\ ;
+給料袋 < kyuuryoubukuro\ ;
+紙屑同然 < kamikuzudouzen\ ;
+温室栽培 < onshitsusaibai\ ;
+針小棒大 < shinshouboudai\ ;
+植物学 < shokubutsugaku\ ;
+太刀二腰 < tachifutakoshi\ ;
+認識不足 < ninshikibusoku\ ;
+団体協約 < dantaikyouyaku\ ;
+信頼回復 < shinraikaifuku\ ;
+修学旅行 < shuugakuryokou\ ;
+長距離飛行 < choukyorihikou\ ;
+第二次性徴 < dainijiseichou\ ;
+電源開発 < dengenkaihatsu\ ;
+模式標本 < moshikihyouhon\ ;
+追跡調査 < tsuisekichousa\ ;
+割引手形 < waribikitegata\ ;
+句構造文法 < kukouzoubunpou\ ;
+直流回路 < chokuryuukairo\ ;
+興行成績 < kougyouseiseki\ ;
+北洋漁業 < hokuyougyogyou\ ;
+国文学史 < kokubungakushi\ ;
+永久脱毛 < eikyuudatsumou\ ;
+排出基準 < haishutsukijun\ ;
+組職改革 < soshokukaikaku\ ;
+過失致死 < kashitsuchishi\ ;
+交通信号 < koutsuushingou\ ;
+動物実験 < doubutsujikken\ ;
+水上警察 < suijoukeisatsu\ ;
+労作教育 < rousakukyouiku\ ;
+核廃棄物 < kakuhaikibutsu\ ;
+鎮魂曲歌 < chinkonkyokuka\ ;
+非鉄金属 < hitetsukinzoku\ ;
+士官候補生 < shikankouhosei\ ;
+巡回図書館 < junkaitoshokan\ ;
+三百代言 < sanbyakudaigen\ ;
+徴兵忌避者 < chouheikihisha\ ;
+出訴期限法 < shussokigenhou\ ;
+中国伝来 < chuugokudenrai\ ;
+筋無力症 < kinmuryokushou\ ;
+流通資本 < ryuutsuushihon\ ;
+空即是色 < kuusokuzeshiki\ ;
+教育改革 < kyouikukaikaku\ ;
+切開手術 < sekkaishujutsu\ ;
+大和魂 < yamatodamashii\ ;
+下台所 < shimodaidokoro\ ;
+救護活動 < kyuugokatsudou\ ;
+軍用輸送機 < gun''youyusouki\ ;
+宣伝活動 < sendenkatsudou\ ;
+財産目録 < zaisanmokuroku\ ;
+言語地理学 < gengochirigaku\ ;
+正常終了 < seijoushuuryou\ ;
+前方後円墳 < zenpoukouenfun\ ;
+虫様突起炎 < chuuyoutokkien\ ;
+亡命生活 < boumeiseikatsu\ ;
+優越複合 < yuuetsufukugou\ ;
+純日本式 < jun''nihonshiki\ ;
+有形文化財 < yuukeibunkazai\ ;
+旧石器時代 < kyuusekkijidai\ ;
+手形割引 < tegatawaribiki\ ;
+動物崇拝 < doubutsusuuhai\ ;
+自由民権論 < jiyuuminkenron\ ;
+共同住宅 < kyoudoujuutaku\ ;
+有袋動物 < yuutaidoubutsu\ ;
+三十二分音符 < sanjuunibuonpu\ ;
+破産裁判所 < hasansaibansho\ ;
+人身保護法 < jinshinhogohou\ ;
+袋小路文 < fukurokoujibun\ ;
+放射性元素 < houshaseigenso\ ;
+白砂青松 < hakushaseishou\ ;
+花嫁御寮 < hanayomegoryou\ ;
+新陳代謝 < shinchintaisha\ ;
+一六銀行 < ichirokuginkou\ ;
+就職斡旋 < shuushokuassen\ ;
+鞭毛虫症 < benmouchuushou\ ;
+絶体絶命 < zettaizetsumei\ ;
+精神分析 < seishinbunseki\ ;
+系列会社 < keiretsugaisha\ ;
+分子間力 < bunshikanryoku\ ;
+企業戦略 < kigyousenryaku\ ;
+国民所得 < kokuminshotoku\ ;
+輸出制限 < yushutsuseigen\ ;
+特定銘柄 < tokuteimeigara\ ;
+財務体質 < zaimutaishitsu\ ;
+警察学校 < keisatsugakkou\ ;
+不法侵入 < fuhoushin''nyuu\ ;
+就職口 < shuushokuguchi\ ;
+生活設計 < seikatsusekkei\ ;
+捕虜収容所 < horyoshuuyoujo\ ;
+軽薄短小 < keihakutanshou\ ;
+算術平均 < sanjutsuheikin\ ;
+即席料理 < sokusekiryouri\ ;
+物理療法 < butsuriryouhou\ ;
+生計費指数 < seikeihishisuu\ ;
+青酸中毒 < seisanchuudoku\ ;
+宗教法人 < shuukyouhoujin\ ;
+写真植字 < shashinshokuji\ ;
+緊縮財政 < kinshukuzaisei\ ;
+単性生殖 < tanseiseishoku\ ;
+国会図書館 < kokkaitoshokan\ ;
+高等生物 < koutouseibutsu\ ;
+高等弁務官 < koutoubenmukan\ ;
+時間順序積 < jikanjunjoseki\ ;
+保証牛乳 < hoshougyuunyuu\ ;
+筋肉質 < kin''nikushitsu\ ;
+力仕事 < chikarashigoto\ ;
+受胎調節 < jutaichousetsu\ ;
+地球温暖化 < chikyuuondanka\ ;
+透析療法 < tousekiryouhou\ ;
+非常勤講師 < hijoukinkoushi\ ;
+嫡出子 < chakushutsushi\ ;
+感覚神経 < kankakushinkei\ ;
+自動車学校 < jidoushagakkou\ ;
+税金避難地 < zeikinhinanchi\ ;
+人道的援助 < jindoutekienjo\ ;
+専門知識 < senmonchishiki\ ;
+軍拡競争 < gunkakukyousou\ ;
+片袖机 < katasodedzukue\ ;
+登場人物 < toujoujinbutsu\ ;
+消費者運動 < shouhishaundou\ ;
+非現実的 < higenjitsuteki\ ;
+逆性石鹸 < gyakuseisekken\ ;
+労働基準法 < roudoukijunhou\ ;
+幽門狭窄 < yuumonkyousaku\ ;
+連邦当局 < renpoutoukyoku\ ;
+直射日光 < chokushanikkou\ ;
+先任将校 < sen''ninshoukou\ ;
+謹厳実直 < kingenjitchoku\ ;
+漢字制限論 < kanjiseigenron\ ;
+店頭取引 < tentoutorihiki\ ;
+卒業式 < sotsugyoushiki\ ;
+発売禁止 < hatsubaikinshi\ ;
+品質管理 < hinshitsukanri\ ;
+編入試験 < hen''nyuushiken\ ;
+伝達関数 < dentatsukansuu\ ;
+尽忠報国 < jinchuuhoukoku\ ;
+労使協調 < roushikyouchou\ ;
+周波数偏移 < shuuhasuuhen''i\ ;
+百色眼鏡 < hyakuiromegane\ ;
+中性子束 < chuuseishisoku\ ;
+無制限貿易 < museigenboueki\ ;
+緊急対策 < kinkyuutaisaku\ ;
+印刷技術 < insatsugijutsu\ ;
+次元正則化 < jigenseisokuka\ ;
+心的表示 < shintekihyouji\ ;
+光通信 < hikaritsuushin\ ;
+名所旧跡 < meishokyuuseki\ ;
+投資信託 < toushishintaku\ ;
+人名用漢字 < jinmeiyoukanji\ ;
+新韓国党 < shinkankokutou\ ;
+国際条約 < kokusaijouyaku\ ;
+七堂伽藍 < shichidougaran\ ;
+親族関係 < shinzokukankei\ ;
+征夷大将軍 < seiitaishougun\ ;
+傘形碍子 < kasagatagaishi\ ;
+産業予備軍 < sangyouyobigun\ ;
+悪漢小説 < akkanshousetsu\ ;
+利子平衡税 < rishiheikouzei\ ;
+無任所大臣 < muninshodaijin\ ;
+公敵一号 < koutekiichigou\ ;
+水質汚濁 < suishitsuodaku\ ;
+精神療法 < seishinryouhou\ ;
+取締法 < torishimarihou\ ;
+茫然自失 < bouzenjishitsu\ ;
+地質時代 < chishitsujidai\ ;
+立入禁止 < tachiirikinshi\ ;
+大同団結 < daidoudanketsu\ ;
+二重盲検法 < nijuumoukenhou\ ;
+貯金通帳 < chokintsuuchou\ ;
+斎戒沐浴 < saikaimokuyoku\ ;
+新制大学 < shinseidaigaku\ ;
+共同責任 < kyoudousekinin\ ;
+新聞発表 < shinbunhappyou\ ;
+車内改札 < shanaikaisatsu\ ;
+自賠責保険 < jibaisekihoken\ ;
+昆虫学者 < konchuugakusha\ ;
+退職年金 < taishokunenkin\ ;
+分割統治 < bunkatsutouchi\ ;
+確率過程 < kakuritsukatei\ ;
+重炭酸曹達 < juutansansouda\ ;
+研究発表 < kenkyuuhappyou\ ;
+旧約聖書 < kyuuyakuseisho\ ;
+手術室 < shujutsushitsu\ ;
+蒲鉾兵舎 < kamabokoheisha\ ;
+経費節約 < keihisetsuyaku\ ;
+筋萎縮症 < kin''ishukushou\ ;
+優生手術 < yuuseishujutsu\ ;
+公共料金 < koukyouryoukin\ ;
+強制中断 < kyouseichuudan\ ;
+万有引力 < ban''yuuinryoku\ ;
+立太子式 < rittaishishiki\ ;
+日内周期 < nichinaishuuki\ ;
+憲法解釈 < kenpoukaishaku\ ;
+長距離電話 < choukyoridenwa\ ;
+美的生活 < bitekiseikatsu\ ;
+団体割引 < dantaiwaribiki\ ;
+国際交流 < kokusaikouryuu\ ;
+試着室 < shichakushitsu\ ;
+冠状静脈 < kanjoujoumyaku\ ;
+逆三角形 < gyakusankakkei\ ;
+複雑怪奇 < fukuzatsukaiki\ ;
+遺伝子工学 < idenshikougaku\ ;
+高層建築 < kousougenchiku\ ;
+不可能選択 < fukanousentaku\ ;
+真珠養殖 < shinjuyoushoku\ ;
+申告用紙 < shinkokuyoushi\ ;
+局地戦争 < kyokuchisensou\ ;
+爆発物 < bakuhatsubutsu\ ;
+重要人物 < juuyoujinbutsu\ ;
+活版印刷 < kappan''insatsu\ ;
+連日連夜 < renjitsuren''ya\ ;
+三者対立 < sanshatairitsu\ ;
+求妻広告 < kyuusaikoukoku\ ;
+狂言自殺 < kyougenjisatsu\ ;
+猪武者 < inoshishimusha\ ;
+性染色体 < seisenshokutai\ ;
+凸版印刷 < toppan''insatsu\ ;
+刺身包丁 < sashimibouchou\ ;
+日米貿易 < nichibeiboueki\ ;
+句構造規則 < kukouzoukisoku\ ;
+手形交換所 < tegatakoukanjo\ ;
+軍事協力 < gunjikyouryoku\ ;
+大黒柱 < daikokubashira\ ;
+極限状態 < kyokugenjoutai\ ;
+物理現象 < butsurigenshou\ ;
+地方自治体 < chihoujichitai\ ;
+人身攻撃 < jinshinkougeki\ ;
+記憶喪失 < kiokusoushitsu\ ;
+不規則動詞 < fukisokudoushi\ ;
+社会秩序 < shakaichitsujo\ ;
+完全主義者 < kanzenshugisha\ ;
+減価償却 < genkashoukyaku\ ;
+鎖帷子 < kusarikatabira\ ;
+空中査察 < kuuchuusasatsu\ ;
+素人芝居 < shiroutoshibai\ ;
+一六勝負 < ichirokushoubu\ ;
+交響楽団 < koukyougakudan\ ;
+血液銀行 < ketsuekiginkou\ ;
+商品在高 < shouhinzaidaka\ ;
+物理学者 < butsurigakusha\ ;
+不躾者 < bushitsukemono\ ;
+年百年中 < nenbyakunenjuu\ ;
+枝葉末節 < shiyoumassetsu\ ;
+軍隊生活 < guntaiseikatsu\ ;
+比較的小 < hikakutekishou\ ;
+構成素構造 < kouseisokouzou\ ;
+潜在能力 < senzainouryoku\ ;
+工学博士 < kougakuhakushi\ ;
+有償契約 < yuushoukeiyaku\ ;
+新聞広告 < shinbunkoukoku\ ;
+上級曹長 < joukyuusouchou\ ;
+乱診乱療 < ranshinranryou\ ;
+載貨吃水線 < saikakissuisen\ ;
+集合住宅 < shuugoujuutaku\ ;
+御食事処 < oshokujidokoro\ ;
+養殖真珠 < youshokushinju\ ;
+内部告発 < naibukokuhatsu\ ;
+名目賃金 < meimokuchingin\ ;
+三色菫 < sanshokusumire\ ;
+相対湿度 < soutaishitsudo\ ;
+学校生活 < gakkouseikatsu\ ;
+入国査証 < nyuukokusashou\ ;
+自律神経 < jiritsushinkei\ ;
+水銀温度計 < suigin''ondokei\ ;
+姉様人形 < anesamaningyou\ ;
+衝撃関数 < shougekikansuu\ ;
+巧言令色 < kougenreishoku\ ;
+変温動物 < hen''ondoubutsu\ ;
+数理論理学 < suurironrigaku\ ;
+原始動物 < genshidoubutsu\ ;
+空間芸術 < kuukangeijutsu\ ;
+皇太子殿下 < koutaishidenka\ ;
+出力線 < shutsuryokusen\ ;
+開店休業 < kaitenkyuugyou\ ;
+娯楽施設 < gorakushisetsu\ ;
+半永久的 < han''eikyuuteki\ ;
+私立 < watakushiritsu\ ;
+戦争未亡人 < sensoumiboujin\ ;
+食糧事情 < shokuryoujijou\ ;
+可逆反応 < kagyakuhan''nou\ ;
+破産管財人 < hasankanzainin\ ;
+特別会員 < tokubetsukaiin\ ;
+死活問題 < shikatsumondai\ ;
+系統神学 < keitoushingaku\ ;
+軟骨魚類 < nankotsugyorui\ ;
+各人各様 < kakujinkakuyou\ ;
+通信事業 < tsuushinjigyou\ ;
+協定世界時 < kyouteisekaiji\ ;
+貿易障壁 < bouekishouheki\ ;
+単一通貨 < tan''itsutsuuka\ ;
+千両役者 < senryouyakusha\ ;
+到着時刻 < touchakujikoku\ ;
+海上保安庁 < kaijouhoanchou\ ;
+概算要求 < gaisan''youkyuu\ ;
+爆発力 < bakuhatsuryoku\ ;
+国民年金 < kokumin''nenkin\ ;
+泥水稼業 < doromizukagyou\ ;
+特異値分解 < tokuichibunkai\ ;
+在日米軍 < zainichibeigun\ ;
+越境入学 < ekkyounyuugaku\ ;
+民営化企業 < min''eikakigyou\ ;
+数理哲学 < suuritetsugaku\ ;
+唯物史観 < yuibutsushikan\ ;
+商業学校 < shougyougakkou\ ;
+左大括弧 < hidaridaikakko\ ;
+民族精神 < minzokuseishin\ ;
+実力行為 < jitsuryokukoui\ ;
+大西洋横断 < taiseiyououdan\ ;
+海綿動物 < kaimendoubutsu\ ;
+米軍兵力 < beigunheiryoku\ ;
+着信局 < chakushinkyoku\ ;
+人工避妊法 < jinkouhininhou\ ;
+就学年齢 < shuugakunenrei\ ;
+鉱物資源 < koubutsushigen\ ;
+軟式野球 < nanshikiyakyuu\ ;
+信託統治 < shintakutouchi\ ;
+経済活動 < keizaikatsudou\ ;
+兵式体操 < heishikitaisou\ ;
+魚群探知機 < gyoguntanchiki\ ;
+生殖細胞 < seishokusaibou\ ;
+地形測量 < chikeisokuryou\ ;
+商業資本 < shougyoushihon\ ;
+遊離基反応 < yuurikihan''nou\ ;
+小田原評定 < odawarahyoujou\ ;
+数値目標 < suuchimokuhyou\ ;
+騒音防止法 < souonboushihou\ ;
+一得一失 < ittokuisshitsu\ ;
+通信販売 < tsuushinhanbai\ ;
+強制執行 < kyouseishikkou\ ;
+幻覚症状 < genkakushoujou\ ;
+懐刀 < futokorogatana\ ;
+疑問代名詞 < gimondaimeishi\ ;
+北陸地方 < hokurikuchihou\ ;
+割引発行 < waribikihakkou\ ;
+広報活動 < kouhoukatsudou\ ;
+山高帽子 < yamatakaboushi\ ;
+染色工場 < senshokukoujou\ ;
+公式訪問 < koushikihoumon\ ;
+排出物 < haishutsubutsu\ ;
+総合開発 < sougoukaihatsu\ ;
+連立政権 < renritsuseiken\ ;
+差別表現 < sabetsuhyougen\ ;
+権力闘争 < kenryokutousou\ ;
+相対性理論 < soutaiseiriron\ ;
+製品戦略 < seihinsenryaku\ ;
+分水山脈 < bunsuisanmyaku\ ;
+酸化防止剤 < sankaboushizai\ ;
+第二次産業 < dainijisangyou\ ;
+鉱物質 < koubutsushitsu\ ;
+有機塩溶媒 < yuukien''youbai\ ;
+誘電正接 < yuudenseisetsu\ ;
+知覚神経 < chikakushinkei\ ;
+逐条審議 < chikujoushingi\ ;
+千島列島 < chishimarettou\ ;
+輸出超過 < yushutsuchouka\ ;
+電子計算機 < denshikeisanki\ ;
+尊王討幕 < son''noutoubaku\ ;
+戦闘犠牲者 < sentougiseisha\ ;
+情報通信 < jouhoutsuushin\ ;
+振出局 < furidashikyoku\ ;
+民間航空機 < minkankoukuuki\ ;
+超越交代 < chouetsukoutai\ ;
+反戦主義者 < hansenshugisha\ ;
+生活空間 < seikatsukuukan\ ;
+前立腺炎 < zenritsusen''en\ ;
+執務室 < shitsumushitsu\ ;
+行政改革 < gyouseikaikaku\ ;
+律令国家 < ritsuryoukokka\ ;
+心霊現象 < shinreigenshou\ ;
+生誕百年 < seitanhyakunen\ ;
+自動着信 < jidouchakushin\ ;
+発熱量 < hatsunetsuryou\ ;
+第三勢力 < daisanseiryoku\ ;
+大八車 < daihachiguruma\ ;
+書留郵便 < kakitomeyuubin\ ;
+観光案内所 < kankouan''naijo\ ;
+知識体系 < chishikitaikei\ ;
+集合記述 < shuugoukijutsu\ ;
+三百諸侯 < sanbyakushokou\ ;
+高齢化社会 < koureikashakai\ ;
+記号論理学 < kigouronrigaku\ ;
+大衆文学 < taishuubungaku\ ;
+中等教育 < chuutoukyouiku\ ;
+教育行政 < kyouikugyousei\ ;
+直接的 < chokusetsuteki\ ;
+武装中立 < busouchuuritsu\ ;
+平和協力 < heiwakyouryoku\ ;
+指名手配人 < shimeitehaijin\ ;
+電鉄会社 < dentetsugaisha\ ;
+自転車旅行 < jitensharyokou\ ;
+出席日数 < shussekinissuu\ ;
+県立病院 < kenritsubyouin\ ;
+平均太陽時 < heikintaiyouji\ ;
+偏旁冠脚 < henboukankyaku\ ;
+好気性細菌 < koukiseisaikin\ ;
+販売促進 < hanbaisokushin\ ;
+信託投資 < shintakutoushi\ ;
+電波望遠鏡 < denpabouenkyou\ ;
+中小企業 < chuushoukigyou\ ;
+三行広告 < sangyoukoukoku\ ;
+血液循環 < ketsuekijunkan\ ;
+連結決算 < renketsukessan\ ;
+θ理論 < shi\ ̄ta\ ̄riron\ ;
+改札鋏 < kaisatsuhasami\ ;
+骨軟化症 < kotsunankashou\ ;
+労働運動者 < roudouundousha\ ;
+政治哲学 < seijitetsugaku\ ;
+商業放送 < shougyouhousou\ ;
+国防総省 < kokubousoushou\ ;
+生活指導 < seikatsushidou\ ;
+炎熱地獄 < en''netsujigoku\ ;
+八面玲瓏 < hachimenreirou\ ;
+面会謝絶 < menkaishazetsu\ ;
+道路標識 < dourohyoushiki\ ;
+国営通信 < kokueitsuushin\ ;
+震災記念日 < shinsaikinenbi\ ;
+適材適所 < tekizaitekisho\ ;
+劇症肝炎 < gekishoukan''en\ ;
+物情騒然 < butsujousouzen\ ;
+忝涙 < katajikenamida\ ;
+公民生活 < kouminseikatsu\ ;
+入学試験 < nyuugakushiken\ ;
+悪徳政治家 < akutokuseijika\ ;
+情報主要素 < jouhoushuyouso\ ;
+合唱隊長 < gasshoutaichou\ ;
+乾燥牛乳 < kansougyuunyuu\ ;
+直系尊属 < chokkeisonzoku\ ;
+入学願書 < nyuugakugansho\ ;
+出発時間 < shuppatsujikan\ ;
+主要人物 < shuyoujinbutsu\ ;
+公武合体論 < koubugattairon\ ;
+不束者 < futsutsukamono\ ;
+燕千鳥 < tsubamechidori\ ;
+文学作品 < bungakusakuhin\ ;
+電光掲示板 < denkoukeijiban\ ;
+軽便鉄道 < keibentetsudou\ ;
+割引市場 < waribikishijou\ ;
+失踪宣告 < shissousenkoku\ ;
+化学結合 < kagakuketsugou\ ;
+保険料率 < hokenryouritsu\ ;
+価電子状態 < kadenshijoutai\ ;
+信越本線 < shinetsuhonsen\ ;
+神経中枢 < shinkeichuusuu\ ;
+発光動物 < hakkoudoubutsu\ ;
+水産加工品 < suisankakouhin\ ;
+平面幾何学 < heimenkikagaku\ ;
+複式火山 < fukushikikazan\ ;
+堅忍不抜 < ken''ninfubatsu\ ;
+耐乏生活 < taibouseikatsu\ ;
+社会通念 < shakaitsuunen\ ;
+接客態度 < sekkyakutaido\ ;
+軽爆撃機 < keibakugekiki\ ;
+南東 < minamihigashi\ ;
+署名捺印 < shomeinatsuin\ ;
+休憩室 < kyuukeishitsu\ ;
+胸部疾患 < kyoubushikkan\ ;
+象牙取引 < zougetorihiki\ ;
+日曜大工 < nichiyoudaiku\ ;
+目玉商品 < medamashouhin\ ;
+製薬会社 < seiyakugaisha\ ;
+投光照明 < toukoushoumei\ ;
+清廉潔白 < seirenkeppaku\ ;
+自転車置場 < jitenshaokiba\ ;
+敵前逃亡 < tekizentoubou\ ;
+日刊新聞 < nikkanshinbun\ ;
+抱腹絶倒 < houfukuzettou\ ;
+日没前 < nichibotsuzen\ ;
+教育委員会 < kyouikuiinkai\ ;
+悪虐無道 < akugyakumudou\ ;
+水上飛行機 < suijouhikouki\ ;
+厭世悲観者 < enseihikansha\ ;
+国家権力 < kokkakenryoku\ ;
+南洋諸島 < nan''youshotou\ ;
+後期印象派 < koukiinshouha\ ;
+囚人労働 < shuujinroudou\ ;
+狐格子 < kitsunegoushi\ ;
+劣等観念 < rettoukan''nen\ ;
+関係官庁 < kankeikanchou\ ;
+農民文学 < nouminbungaku\ ;
+自然現象 < shizengenshou\ ;
+腎臓結石 < jinzoukesseki\ ;
+古兵 < furutsuwamono\ ;
+施政方針 < shiseihoushin\ ;
+閲覧室 < etsuranshitsu\ ;
+天竺浪人 < tenjikurounin\ ;
+建築物 < kenchikubutsu\ ;
+霊魂不滅 < reikonfumetsu\ ;
+公共組合 < koukyoukumiai\ ;
+有線電信 < yuusendenshin\ ;
+血行障害 < kekkoushougai\ ;
+人的資源 < jintekishigen\ ;
+地方行政 < chihougyousei\ ;
+震天動地 < shintendouchi\ ;
+第三帝国 < daisanteikoku\ ;
+大規模戦争 < daikibosensou\ ;
+実質的 < jisshitsuteki\ ;
+天文学者 < tenmongakusha\ ;
+深夜放送 < shin''yahousou\ ;
+音声形式 < onseikeishiki\ ;
+交通問題 < koutsuumondai\ ;
+公共投資 < koukyoutoushi\ ;
+劃時代的 < kakujidaiteki\ ;
+同族会社 < douzokugaisha\ ;
+心理描写 < shinribyousha\ ;
+技術水準 < gijutsusuijun\ ;
+無担保社債 < mutanposhasai\ ;
+理学博士 < rigakuhakushi\ ;
+局所麻酔 < kyokushomasui\ ;
+産別会議 < sanbetsukaigi\ ;
+翌々日 < yokuyokujitsu\ ;
+就学児童 < shuugakujidou\ ;
+空中給油 < kuuchuukyuuyu\ ;
+国際規格 < kokusaikikaku\ ;
+学校新聞 < gakkoushinbun\ ;
+試聴室 < shichoushitsu\ ;
+情報産業 < jouhousangyou\ ;
+登録番号 < tourokubangou\ ;
+土木工学 < dobokukougaku\ ;
+生体反応 < seitaihan''nou\ ;
+狸囃子 < tanukibayashi\ ;
+象徴主義 < shouchoushugi\ ;
+音楽教育 < ongakukyouiku\ ;
+観測地点 < kansokuchiten\ ;
+遠心分離機 < enshinbunriki\ ;
+植毛術 < shokumoujutsu\ ;
+技術同士 < gijutsudoushi\ ;
+応急攻撃 < oukyuukougeki\ ;
+同仁教会 < doujinkyoukai\ ;
+実働時間 < jitsudoujikan\ ;
+青空駐車 < aozorachuusha\ ;
+電力輸送 < denryokuyusou\ ;
+軍隊教育 < guntaikyouiku\ ;
+遠洋漁業 < en''yougyogyou\ ;
+旧正月 < kyuushougatsu\ ;
+保障占領 < hoshousenryou\ ;
+交換法則 < koukanhousoku\ ;
+牽引療法 < ken''inryouhou\ ;
+駅伝競走 < ekidenkyousou\ ;
+切歯扼腕 < sesshiyakuwan\ ;
+丸鼻蜂 < maruhanabachi\ ;
+団体交渉 < dantaikoushou\ ;
+脚色者 < kyakushokusha\ ;
+亭主関白 < teishukanpaku\ ;
+一段動詞 < ichidandoushi\ ;
+一般幕僚 < ippanbakuryou\ ;
+寝台列車 < shindairessha\ ;
+投擲競技 < toutekikyougi\ ;
+東海岸 < higashikaigan\ ;
+気象通報 < kishoutsuuhou\ ;
+開析台地 < kaisekidaichi\ ;
+内踝 < uchikurubushi\ ;
+実用主義 < jitsuyoushugi\ ;
+直立茎 < chokuritsukei\ ;
+白雪姫 < shirayukihime\ ;
+工場実習 < koujoujisshuu\ ;
+中継貿易 < chuukeiboueki\ ;
+性能特性 < seinoutokusei\ ;
+電気冷蔵庫 < denkireizouko\ ;
+最後通牒 < saigotsuuchou\ ;
+最低温度計 < saiteiondokei\ ;
+国際結婚 < kokusaikekkon\ ;
+造本技術 < zouhongijutsu\ ;
+妨害工作 < bougaikousaku\ ;
+断熱的 < dan''netsuteki\ ;
+民族意識 < minzokuishiki\ ;
+泥縄式 < doronawashiki\ ;
+贅沢三昧 < zeitakuzanmai\ ;
+写真製版 < shashinseihan\ ;
+観閲式 < kan''etsushiki\ ;
+学校教育 < gakkoukyouiku\ ;
+霧中信号 < muchuushingou\ ;
+精神状態 < seishinjoutai\ ;
+商科大学 < shoukadaigaku\ ;
+吸湿性 < kyuushitsusei\ ;
+消極的 < shoukyokuteki\ ;
+顧問弁護士 < komonbengoshi\ ;
+写真結婚 < shashinkekkon\ ;
+共同戦線 < kyoudousensen\ ;
+火山活動 < kazankatsudou\ ;
+麦稈細工 < mugiwarazaiku\ ;
+我利我利亡者 < garigarimouja\ ;
+勤労所得 < kinroushotoku\ ;
+首相官邸 < shushoukantei\ ;
+読書三昧 < dokushozanmai\ ;
+中等教員 < chuutoukyouin\ ;
+一次電流 < ichijidenryuu\ ;
+台中関係 < taichuukankei\ ;
+秘密結社 < himitsukessha\ ;
+東方拡大 < touhoukakudai\ ;
+漂流物 < hyouryuubutsu\ ;
+近隣諸国 < kinrinshokoku\ ;
+労働階級 < roudoukaikyuu\ ;
+貞操観念 < teisoukan''nen\ ;
+民間伝承 < minkandenshou\ ;
+膀胱結石 < boukoukesseki\ ;
+転居通知 < tenkyotsuuchi\ ;
+純正数学 < junseisuugaku\ ;
+男爵夫人 < danshakufujin\ ;
+下二桁 < shimofutaketa\ ;
+二硫化炭素 < niryuukatanso\ ;
+塩蔵食品 < enzoushokuhin\ ;
+一致団結 < itchidanketsu\ ;
+警察国家 < keisatsukokka\ ;
+経済白書 < keizaihakusho\ ;
+穀倉地帯 < kokusouchitai\ ;
+憂鬱質 < yuuutsushitsu\ ;
+早期警戒機 < soukikeikaiki\ ;
+環境事業 < kankyoujigyou\ ;
+総合商社 < sougoushousha\ ;
+俄成金 < niwakanarikin\ ;
+少年労働 < shounenroudou\ ;
+一挙両得 < ikkyoryoutoku\ ;
+測定装置 < sokuteisouchi\ ;
+前衛美術 < zen''eibijutsu\ ;
+構造遺伝子 < kouzouidenshi\ ;
+皆既月食 < kaikigesshoku\ ;
+公団住宅 < koudanjuutaku\ ;
+設備投資 < setsubitoushi\ ;
+日常茶飯 < nichijousahan\ ;
+群集心理 < gunshuushinri\ ;
+百戦練磨 < hyakusenrenma\ ;
+即興詩人 < sokkyoushijin\ ;
+善隣政策 < zenrinseisaku\ ;
+前受収益 < maeukeshuueki\ ;
+青銅器時代 < seidoukijidai\ ;
+国民皆兵 < kokuminkaihei\ ;
+骨相学者 < kossougakusha\ ;
+戸別訪問 < kobetsuhoumon\ ;
+爆弾声明 < bakudanseimei\ ;
+道楽息子 < dourakumusuko\ ;
+舌鼓 < shitatsudzumi\ ;
+収穫物 < shuukakubutsu\ ;
+貸付金 < kashitsukekin\ ;
+癒傷組織 < yushousoshiki\ ;
+男子学生 < danshigakusei\ ;
+動物達 < doubutsutachi\ ;
+貫通銃創 < kantsuujuusou\ ;
+食糧庁 < shokuryouchou\ ;
+会計検査院 < kaikeikensain\ ;
+新郎新婦 < shinroushinpu\ ;
+空挺作戦 < kuuteisakusen\ ;
+配管工業 < haikankougyou\ ;
+宇宙通信 < uchuutsuushin\ ;
+腺病質 < senbyoushitsu\ ;
+等比数列 < touhisuuretsu\ ;
+床上浸水 < yukaueshinsui\ ;
+自然環境 < shizenkankyou\ ;
+日中戦争 < nitchuusensou\ ;
+民約説 < min''yakusetsu\ ;
+吸湿剤 < kyuushitsuzai\ ;
+二筋道 < futasujimichi\ ;
+半長靴 < han''nagagutsu\ ;
+標題音楽 < hyoudaiongaku\ ;
+校長室 < kouchoushitsu\ ;
+劣等複合 < rettoufukugou\ ;
+眼球銀行 < gankyuuginkou\ ;
+決断力 < ketsudanryoku\ ;
+市場分析 < shijoubunseki\ ;
+中間試験 < chuukanshiken\ ;
+証券会社 < shoukengaisha\ ;
+漏話結合 < rouwagetsugou\ ;
+国際紛争 < kokusaifunsou\ ;
+集団行動 < shuudankoudou\ ;
+車両縦隊 < sharyoujuutai\ ;
+交代操業 < koutaisougyou\ ;
+作者未詳 < sakushamishou\ ;
+西本願寺 < nishihonganji\ ;
+永代借地 < eitaishakuchi\ ;
+差出人 < sashidashinin\ ;
+七曜表 < shichiyouhyou\ ;
+子宮筋腫 < shikyuukinshu\ ;
+切手蒐集 < kitteshuushuu\ ;
+首位攻防戦 < shuikoubousen\ ;
+全方位外交 < zenhouigaikou\ ;
+官費留学 < kanpiryuugaku\ ;
+編集主幹 < henshuushukan\ ;
+生産技術 < seisangijutsu\ ;
+水平応力 < suiheiouryoku\ ;
+先端技術 < sentangijutsu\ ;
+神宮球場 < jinguukyuujou\ ;
+灰緑色 < kairyokushoku\ ;
+本質的 < honshitsuteki\ ;
+無人化工場 < mujinkakoujou\ ;
+音楽大学 < ongakudaigaku\ ;
+侵略行為 < shinryakukoui\ ;
+入射光線 < nyuushakousen\ ;
+三角函数 < sankakukansuu\ ;
+立体写真 < rittaishashin\ ;
+国際関係 < kokusaikankei\ ;
+浄土真宗 < joudoshinshuu\ ;
+三国同盟 < sangokudoumei\ ;
+火事場泥棒 < kajibadorobou\ ;
+驚天動地 < kyoutendouchi\ ;
+空中滑走 < kuuchuukassou\ ;
+国際問題 < kokusaimondai\ ;
+求心力 < kyuushinryoku\ ;
+社外発信 < shagaihasshin\ ;
+跳梁跋扈 < chouryoubakko\ ;
+集中砲火 < shuuchuuhouka\ ;
+人工栄養児 < jinkoueiyouji\ ;
+人間工学 < ningenkougaku\ ;
+身元確認 < mimotokakunin\ ;
+結団式 < ketsudanshiki\ ;
+差別待遇 < sabetsutaiguu\ ;
+千鳥格子 < chidorigoushi\ ;
+仏像二体 < butsuzounitai\ ;
+全景写真 < zenkeishashin\ ;
+公共団体 < koukyoudantai\ ;
+改札口 < kaisatsuguchi\ ;
+堆積輪廻 < taisekirin''ne\ ;
+一般生活 < ippanseikatsu\ ;
+欧米諸言語 < oubeishogengo\ ;
+横河電機 < yokogawadenki\ ;
+中継放送 < chuukeihousou\ ;
+禁止条約 < kinshijouyaku\ ;
+全国放送 < zenkokuhousou\ ;
+人工孵化法 < jinkoufukahou\ ;
+党利党略 < touritouryaku\ ;
+繁殖力 < hanshokuryoku\ ;
+外交交渉 < gaikoukoushou\ ;
+学士院賞 < gakushiinshou\ ;
+行動計画 < koudoukeikaku\ ;
+共有財産 < kyouyuuzaisan\ ;
+逸失利益 < isshitsurieki\ ;
+農地改革 < nouchikaikaku\ ;
+囃子詞 < hayashikotoba\ ;
+交通渋滞 < koutsuujuutai\ ;
+神経細胞 < shinkeisaibou\ ;
+人差指 < hitosashiyubi\ ;
+七面鳥 < shichimenchou\ ;
+業界団体 < gyoukaidantai\ ;
+勧善懲悪 < kanzenchouaku\ ;
+共産陣営 < kyousanjin''ei\ ;
+欠席裁判 < kessekisaiban\ ;
+半革装丁 < hankawasoutei\ ;
+競争市場 < kyousoushijou\ ;
+発言力 < hatsugenryoku\ ;
+知的財産 < chitekizaisan\ ;
+南北問題 < nanbokumondai\ ;
+軍事顧問団 < gunjikomondan\ ;
+高層天気図 < kousoutenkizu\ ;
+突然変異 < totsuzenhen''i\ ;
+適応障害 < tekioushougai\ ;
+出世頭 < shussegashira\ ;
+混載貨物 < konsaikamotsu\ ;
+集中力 < shuuchuuryoku\ ;
+耐障害性 < taishougaisei\ ;
+近親相姦 < kinshinsoukan\ ;
+屈辱的 < kutsujokuteki\ ;
+大道商人 < daidoushounin\ ;
+不信任案 < fushin''nin''an\ ;
+仮面舞踏会 < kamenbutoukai\ ;
+宮廷音楽 < kyuuteiongaku\ ;
+商売敵 < shoubaigataki\ ;
+出生届 < shusseitodoke\ ;
+緩衝地帯 < kanshouchitai\ ;
+血清注射 < kesseichuusha\ ;
+脱獄囚 < datsugokushuu\ ;
+加糖粉乳 < katoufun''nyuu\ ;
+土産話 < miyagebanashi\ ;
+信販会社 < shinpangaisha\ ;
+十一献金 < juuichikenkin\ ;
+福祉事業 < fukushijigyou\ ;
+暖衣飽食 < dan''ihoushoku\ ;
+準決勝戦 < junkesshousen\ ;
+野生動物 < yaseidoubutsu\ ;
+社会現象 < shakaigenshou\ ;
+北欧諸国 < hokuoushokoku\ ;
+自然休会 < shizenkyuukai\ ;
+良二千石 < ryounisenseki\ ;
+文学青年 < bungakuseinen\ ;
+白装束 < shiroshouzoku\ ;
+作業部会案 < sagyoubukaian\ ;
+修道誓願 < shuudouseigan\ ;
+食糧援助 < shokuryouenjo\ ;
+衆議一決 < shuugiikketsu\ ;
+酸素吸入 < sansokyuunyuu\ ;
+生臭坊主 < namagusabouzu\ ;
+軍事施設 < gunjishisetsu\ ;
+映画評論家 < eigahyouronka\ ;
+郵便振替 < yuubinfurikae\ ;
+方針決定 < houshinkettei\ ;
+就業時間 < shuugyoujikan\ ;
+人口抑制 < jinkouyokusei\ ;
+軍人恩給 < gunjin''onkyuu\ ;
+人工流産 < jinkouryuuzan\ ;
+真剣勝負 < shinkenshoubu\ ;
+隠退生活 < intaiseikatsu\ ;
+守秘義務違反 < shuhigimuihan\ ;
+腰巾着 < koshiginchaku\ ;
+役員報酬 < yakuinhoushuu\ ;
+割引時間 < waribikijikan\ ;
+白葡萄酒 < shirobudoushu\ ;
+半熟卵 < hanjukutamago\ ;
+制服制帽 < seifukuseibou\ ;
+古色蒼然 < koshokusouzen\ ;
+留置郵便 < tomeokiyuubin\ ;
+計画倒産 < keikakutousan\ ;
+皆既日食 < kaikinisshoku\ ;
+没常識 < botsujoushiki\ ;
+集塵袋 < shuujinbukuro\ ;
+連戦連勝 < rensenrenshou\ ;
+享楽主義 < kyourakushugi\ ;
+三下奴 < sanshitayakko\ ;
+広告媒体 < koukokubaitai\ ;
+国民審査 < kokuminshinsa\ ;
+健者 < shitatakamono\ ;
+混声合唱 < konseigasshou\ ;
+神道信者 < shintoushinja\ ;
+実況放送 < jikkyouhousou\ ;
+分光分析 < bunkoubunseki\ ;
+産業組合 < sangyoukumiai\ ;
+取捨選択 < shushasentaku\ ;
+地震学者 < jishingakusha\ ;
+大阪大学 < oosakadaigaku\ ;
+第二次大戦 < dainijitaisen\ ;
+研究方法 < kenkyuuhouhou\ ;
+地質学 < chishitsugaku\ ;
+断郊競走 < dankoukyousou\ ;
+楽屋話 < gakuyabanashi\ ;
+比較文学 < hikakubungaku\ ;
+士農工商 < shinoukoushou\ ;
+乾坤一擲 < kenkon''itteki\ ;
+停止信号 < teishishingou\ ;
+建築現場 < kenchikugenba\ ;
+国連大使 < kokurentaishi\ ;
+眉目秀麗 < bimokushuurei\ ;
+情緒障害 < joushoshougai\ ;
+謹賀新年 < kingashin''nen\ ;
+練習問題 < renshuumondai\ ;
+人畜無害 < jinchikumugai\ ;
+上流社会 < jouryuushakai\ ;
+強奪物 < goudatsubutsu\ ;
+閑日月 < kanjitsugetsu\ ;
+陸海空軍 < rikukaikuugun\ ;
+野次馬根性 < yajiumakonjou\ ;
+真相調査 < shinsouchousa\ ;
+表敬訪問 < hyoukeihoumon\ ;
+普通教育 < futsuukyouiku\ ;
+公民教育 < kouminkyouiku\ ;
+挑発的 < chouhatsuteki\ ;
+水害対策 < suigaitaisaku\ ;
+将来展望 < shouraitenbou\ ;
+尋問調書 < jinmonchousho\ ;
+着弾距離 < chakudankyori\ ;
+天真爛漫 < tenshinranman\ ;
+反射神経 < hanshashinkei\ ;
+青色申告 < aoiroshinkoku\ ;
+造形美術 < zoukeibijutsu\ ;
+史的現在 < shitekigenzai\ ;
+祝祭日 < shukusaijitsu\ ;
+内部生活 < naibuseikatsu\ ;
+構造記述 < kouzoukijutsu\ ;
+共存共栄 < kyouzonkyouei\ ;
+帯状疱疹 < taijouhoushin\ ;
+現実主義 < genjitsushugi\ ;
+年々歳々 < nen''nensaisai\ ;
+研究論文 < kenkyuuronbun\ ;
+最終編成 < saishuuhensei\ ;
+専修学校 < senshuugakkou\ ;
+彫刻術 < choukokujutsu\ ;
+右中括弧 < migichuukakko\ ;
+修道院長 < shuudouinchou\ ;
+家督相続 < katokusouzoku\ ;
+宿命論者 < shukumeironja\ ;
+温度調節 < ondochousetsu\ ;
+英会話学校 < eikaiwagakkou\ ;
+言語能力 < gengonouryoku\ ;
+利潤追求 < rijuntsuikyuu\ ;
+統率理論 < tousotsuriron\ ;
+中立国 < chuuritsukoku\ ;
+喫煙室 < kitsuenshitsu\ ;
+良風美俗 < ryoufuubizoku\ ;
+国民学校 < kokumingakkou\ ;
+単為生殖 < tan''iseishoku\ ;
+前方不注意 < zenpoufuchuui\ ;
+二十日鼠 < hatsukanezumi\ ;
+貿易収支 < bouekishuushi\ ;
+人工心臓 < jinkoushinzou\ ;
+天津日嗣 < amatsuhitsugi\ ;
+一両日 < ichiryoujitsu\ ;
+群雄割拠 < gun''yuukakkyo\ ;
+先天梅毒 < sentenbaidoku\ ;
+人工心肺 < jinkoushinbai\ ;
+呼吸中枢 < kokyuuchuusuu\ ;
+駐留部隊 < chuuryuubutai\ ;
+殺生禁断 < sesshoukindan\ ;
+無銭遊興 < musen''yuukyou\ ;
+主席全権 < shusekizenken\ ;
+地方公務員 < chihoukoumuin\ ;
+甲乙丙丁 < kouotsuheitei\ ;
+補欠選挙 < hoketsusenkyo\ ;
+橋脚舟 < kyoukyakushuu\ ;
+微量分析 < biryoubunseki\ ;
+自動販売機 < jidouhanbaiki\ ;
+地域代表 < chiikidaihyou\ ;
+画一主義 < kakuitsushugi\ ;
+京都大学 < kyoutodaigaku\ ;
+漬物石 < tsukemonoishi\ ;
+外出中 < gaishutsuchuu\ ;
+鉄染色 < tetsusenshoku\ ;
+生体工学 < seitaikougaku\ ;
+独立心 < dokuritsushin\ ;
+泡沫候補 < houmatsukouho\ ;
+相続財産 < souzokuzaisan\ ;
+対戦成績 < taisenseiseki\ ;
+国際空港 < kokusaikuukou\ ;
+国連総会 < kokurensoukai\ ;
+今月末 < kongetsumatsu\ ;
+専門教育 < senmonkyouiku\ ;
+営業報告 < eigyouhoukoku\ ;
+血液検査 < ketsuekikensa\ ;
+革新主義 < kakushinshugi\ ;
+露出時間 < roshutsujikan\ ;
+電磁調理器 < denjichouriki\ ;
+投票用紙 < touhyouyoushi\ ;
+実物大 < jitsubutsudai\ ;
+薬用石鹸 < yakuyousekken\ ;
+単独行動 < tandokukoudou\ ;
+航空自衛隊 < koukuujieitai\ ;
+夫婦生活 < fuufuseikatsu\ ;
+肉体関係 < nikutaikankei\ ;
+軍事警察 < gunjikeisatsu\ ;
+新婚旅行 < shinkonryokou\ ;
+陽性反応 < youseihan''nou\ ;
+軸差応力 < jikusaouryoku\ ;
+人類学者 < jinruigakusha\ ;
+拾得物 < shuutokubutsu\ ;
+武士気質 < bushikishitsu\ ;
+第一人者 < daiichininsha\ ;
+倉敷料 < kurashikiryou\ ;
+資料室 < shiryoushitsu\ ;
+機関投資家 < kikantoushika\ ;
+家庭生活 < kateiseikatsu\ ;
+危険人物 < kikenjinbutsu\ ;
+大学教授 < daigakukyouju\ ;
+前進運動 < zenshin''undou\ ;
+活動成果 < katsudouseika\ ;
+総合収支 < sougoushuushi\ ;
+買物袋 < kaimonobukuro\ ;
+吸収力 < kyuushuuryoku\ ;
+各駅停車 < kakuekiteisha\ ;
+独立国 < dokuritsukoku\ ;
+触媒作用 < shokubaisayou\ ;
+科学技術 < kagakugijutsu\ ;
+印刷用紙 < insatsuyoushi\ ;
+回路遮断機 < kairoshadanki\ ;
+人的証拠 < jintekishouko\ ;
+抗議活動 < kougikatsudou\ ;
+先取得点 < senshutokuten\ ;
+桜祭 < sakuramatsuri\ ;
+複合企業 < fukugoukigyou\ ;
+無差別級 < musabetsukyuu\ ;
+多国籍軍 < takokusekigun\ ;
+競争価格 < kyousoukakaku\ ;
+社会人枠 < shakaijinwaku\ ;
+商業地区 < shougyouchiku\ ;
+表層構造 < hyousoukouzou\ ;
+精神衛生 < seishin''eisei\ ;
+血尿症 < ketsunyoushou\ ;
+航空写真 < koukuushashin\ ;
+上昇気流 < joushoukiryuu\ ;
+北大西洋 < kitataiseiyou\ ;
+行政指導 < gyouseishidou\ ;
+定置漁業 < teichigyogyou\ ;
+最高級品 < saikoukyuuhin\ ;
+彫刻物 < choukokubutsu\ ;
+出頭命令 < shuttoumeirei\ ;
+堪忍袋 < kan''ninbukuro\ ;
+出血過多 < shukketsukata\ ;
+電子出版 < denshishuppan\ ;
+社長室 < shachoushitsu\ ;
+色素細胞 < shikisosaibou\ ;
+聖路加病院 < seirokabyouin\ ;
+花嫁衣裳 < hanayomeishou\ ;
+小口現金 < koguchigenkin\ ;
+分離主義者 < bunrishugisha\ ;
+博学多才 < hakugakutasai\ ;
+外様大名 < tozamadaimyou\ ;
+国民主権 < kokuminshuken\ ;
+公金横領 < koukin''ouryou\ ;
+憲法記念日 < kenpoukinenbi\ ;
+近郊農業 < kinkounougyou\ ;
+全国大会 < zenkokutaikai\ ;
+吟遊詩人 < gin''yuushijin\ ;
+冷水摩擦 < reisuimasatsu\ ;
+曲学阿世 < kyokugakuasei\ ;
+価格競争 < kakakukyousou\ ;
+加減抵抗器 < kagenteikouki\ ;
+禁断症状 < kindanshoujou\ ;
+竜攘虎搏 < ryuujoukohaku\ ;
+正味重量 < shoumijuuryou\ ;
+公証役場 < koushouyakuba\ ;
+清涼飲料 < seiryouinryou\ ;
+丼勘定 < donburikanjou\ ;
+毛管現象 < moukangenshou\ ;
+作戦地域 < sakusenchiiki\ ;
+玉子丼 < tamagodonburi\ ;
+出張旅費 < shutchouryohi\ ;
+放送番組 < housoubangumi\ ;
+無免許運転 < mumenkyounten\ ;
+縮刷版 < shukusatsuban\ ;
+永久磁石 < eikyuujishaku\ ;
+売掛勘定 < urikakekanjou\ ;
+今日的 < kon''nichiteki\ ;
+間宮海峡 < mamiyakaikyou\ ;
+獄中日記 < gokuchuunikki\ ;
+沈思黙考 < chinshimokkou\ ;
+超国家的 < choukokkateki\ ;
+洞察力 < dousatsuryoku\ ;
+防火建築 < boukakenchiku\ ;
+金融市場 < kin''yuushijou\ ;
+集団心理 < shuudanshinri\ ;
+入社試験 < nyuushashiken\ ;
+選択値群 < sentakuchigun\ ;
+不可視光線 < fukashikousen\ ;
+確率誤差 < kakuritsugosa\ ;
+貿易自由化 < bouekijiyuuka\ ;
+第四階級 < daiyonkaikyuu\ ;
+空気制動機 < kuukiseidouki\ ;
+逍遥学派 < shouyougakuha\ ;
+黒点周期 < kokutenshuuki\ ;
+美術学校 < bijutsugakkou\ ;
+半死半生 < hanshihanshou\ ;
+快速電車 < kaisokudensha\ ;
+南北戦争 < nanbokusensou\ ;
+小児喘息 < shounizensoku\ ;
+内政干渉 < naiseikanshou\ ;
+公平政策 < kouheiseisaku\ ;
+工業規格 < kougyoukikaku\ ;
+四角四面 < shikakushimen\ ;
+少年少女 < shounenshoujo\ ;
+再販業者 < saihangyousha\ ;
+超高速度 < choukousokudo\ ;
+調査報告 < chousahoukoku\ ;
+海難審判 < kainanshinpan\ ;
+理学修士 < rigakushuushi\ ;
+外的根拠 < gaitekikonkyo\ ;
+松食虫 < matsukuimushi\ ;
+生命工学 < seimeikougaku\ ;
+天佑神助 < ten''yuushinjo\ ;
+外国旅行 < gaikokuryokou\ ;
+共同水栓 < kyoudousuisen\ ;
+拡大均衡 < kakudaikinkou\ ;
+芋蔓式 < imodzurushiki\ ;
+五十歩百歩 < gojuppohyappo\ ;
+質量数 < shitsuryousuu\ ;
+凱旋将軍 < gaisenshougun\ ;
+原理主義者 < genrishugisha\ ;
+集積回路 < shuusekikairo\ ;
+裾野産業 < susonosangyou\ ;
+鎮魂帰神 < chinkonkishin\ ;
+合格者名 < goukakushamei\ ;
+有資格者 < yuushikakusha\ ;
+化学反応 < kagakuhan''nou\ ;
+需要供給 < juyoukyoukyuu\ ;
+別配達 < betsuhaitatsu\ ;
+召喚令状 < shoukanreijou\ ;
+試験勉強 < shikenbenkyou\ ;
+温室効果 < onshitsukouka\ ;
+今日様 < kon''nichisama\ ;
+有鉤条虫 < yuukoujouchuu\ ;
+内的根拠 < naitekikonkyo\ ;
+近海漁業 < kinkaigyogyou\ ;
+冠大会 < kanmuritaikai\ ;
+決戦投票 < kessentouhyou\ ;
+共同社会 < kyoudoushakai\ ;
+追複曲 < tsuifukukyoku\ ;
+唐草模様 < karakusamoyou\ ;
+包皮切断 < houhisetsudan\ ;
+定期取引 < teikitorihiki\ ;
+乾燥洗濯 < kansousentaku\ ;
+集合名詞 < shuugoumeishi\ ;
+小型新聞 < kogatashinbun\ ;
+多元文化論 < tagenbunkaron\ ;
+譲渡性預金 < joutoseiyokin\ ;
+医療施設 < iryoushisetsu\ ;
+動物油脂 < doubutsuyushi\ ;
+反面教師 < hanmenkyoushi\ ;
+組合頭 < kumiaigashira\ ;
+日常会話 < nichijoukaiwa\ ;
+輸入業者 < yunyuugyousha\ ;
+標準価格 < hyoujunkakaku\ ;
+不妊手術 < funinshujutsu\ ;
+山猫争議 < yamanekosougi\ ;
+出世間的 < shussekenteki\ ;
+年中行事 < nenchuugyouji\ ;
+鎌倉時代 < kamakurajidai\ ;
+散歩旁 < sanpokatagata\ ;
+供託物 < kyoutakubutsu\ ;
+炎症病巣 < enshoubyousou\ ;
+注意人物 < chuuijinbutsu\ ;
+国家主義者 < kokkashugisha\ ;
+日洪親善 < nikkoushinzen\ ;
+追加注文 < tsuikachuumon\ ;
+筆写略字 < hissharyakuji\ ;
+献血運動 < kenketsuundou\ ;
+舞台芸術 < butaigeijutsu\ ;
+出願人 < shutsugan''nin\ ;
+試験監督 < shikenkantoku\ ;
+撤頭徹尾 < tettoutetsubi\ ;
+疾風迅雷 < shippuujinrai\ ;
+市場環境 < shijoukankyou\ ;
+原成岩石 < genseiganseki\ ;
+前大統領 < zendaitouryou\ ;
+強制送還 < kyouseisoukan\ ;
+同業組合 < dougyoukumiai\ ;
+電気剃刀 < denkikamisori\ ;
+事務局長 < jimukyokuchou\ ;
+経済改革 < keizaikaikaku\ ;
+沿岸警備隊 < engankeibitai\ ;
+民俗芸能 < minzokugeinou\ ;
+粘着力 < nenchakuryoku\ ;
+個人主義者 < kojinshugisha\ ;
+収穫予想 < shuukakuyosou\ ;
+塩辛蜻蛉 < shiokaratonbo\ ;
+宿泊料 < shukuhakuryou\ ;
+紆余曲折 < uyokyokusetsu\ ;
+極超短波 < gokuchoutanpa\ ;
+乳窄 < chichishibori\ ;
+主権侵犯 < shukenshinpan\ ;
+中性洗剤 < chuuseisenzai\ ;
+貨物列車 < kamotsuressha\ ;
+血清療法 < kesseiryouhou\ ;
+新案特許 < shin''antokkyo\ ;
+是是非非主義 < zezehihishugi\ ;
+死後硬直 < shigokouchoku\ ;
+唯物主義 < yuibutsushugi\ ;
+日露戦争 < nichirosensou\ ;
+同盟条約 < doumeijouyaku\ ;
+一攫千金 < ikkakkusenkin\ ;
+階級闘争 < kaikyuutousou\ ;
+熱硬化剤 < netsukoukazai\ ;
+専用回線 < sen''youkaisen\ ;
+交換学生 < koukangakusei\ ;
+動線計画 < dousenkeikaku\ ;
+外交委員長 < gaikouiinchou\ ;
+民政長官 < minseichoukan\ ;
+判断中止 < handanchuushi\ ;
+枝垂桜 < shidarezakura\ ;
+古代紫 < kodaimurasaki\ ;
+局所分岐 < kyokushobunki\ ;
+通常国会 < tsuujoukokkai\ ;
+枝垂柳 < shidareyanagi\ ;
+深緑色 < fukamidoriiro\ ;
+数値解析 < suuchikaiseki\ ;
+無抵抗主義 < muteikoushugi\ ;
+軍備拡張 < gunbikakuchou\ ;
+適者生存 < tekishaseizon\ ;
+精神鑑定 < seishinkantei\ ;
+積雪量 < sekisetsuryou\ ;
+鉄道輸送 < tetsudouyusou\ ;
+研究室 < kenkyuushitsu\ ;
+第三階級 < daisankaikyuu\ ;
+千態万様 < sentaiban''you\ ;
+電子工学 < denshikougaku\ ;
+経済状況 < keizaijoukyou\ ;
+社会教育 < shakaikyouiku\ ;
+農耕民族 < noukouminzoku\ ;
+全身全霊 < zenshinzenrei\ ;
+公称資本 < koushoushihon\ ;
+大字片山 < ooazakatayama\ ;
+薬師如来 < yakushinyorai\ ;
+放射能汚染 < houshanouosen\ ;
+電気自動車 < denkijidousha\ ;
+賢所 < kashikodokoro\ ;
+同盟休校 < doumeikyuukou\ ;
+工作室 < kousakushitsu\ ;
+中央計画 < chuuoukeikaku\ ;
+中央集権 < chuuoushuuken\ ;
+三角貿易 < sankakuboueki\ ;
+分析化学 < bunsekikagaku\ ;
+少壮士官 < shousoushikan\ ;
+法的根拠 < houtekikonkyo\ ;
+殺害事件 < satsugaijiken\ ;
+面魂 < tsuradamashii\ ;
+自然増収 < shizenzoushuu\ ;
+良性腫瘍 < ryouseishuyou\ ;
+作劇術 < sakugekijutsu\ ;
+短日月 < tanjitsugetsu\ ;
+車掌室 < shashoushitsu\ ;
+通勤電車 < tsuukindensha\ ;
+少年犯罪 < shounenhanzai\ ;
+水酸化物 < suisankabutsu\ ;
+親戚知己 < shinsekichiki\ ;
+単独決算 < tandokukessan\ ;
+国際情勢 < kokusaijousei\ ;
+街頭演説 < gaitouenzetsu\ ;
+欣喜雀躍 < kinkijakuyaku\ ;
+品種改良 < hinshukairyou\ ;
+公称馬力 < koushoubariki\ ;
+四六時中 < shirokujichuu\ ;
+交通遮断 < koutsuushadan\ ;
+大学紛争 < daigakufunsou\ ;
+財政収支 < zaiseishuushi\ ;
+衆参両院 < shuusanryouin\ ;
+耐火建築 < taikakenchiku\ ;
+視力検査 < shiryokukensa\ ;
+小刀細工 < kogatanazaiku\ ;
+質疑応答 < shitsugioutou\ ;
+捜査当局 < sousatoukyoku\ ;
+診察料 < shinsatsuryou\ ;
+俸給袋 < houkyuubukuro\ ;
+照葉狂言 < terihakyougen\ ;
+出征軍人 < shusseigunjin\ ;
+優生保護法 < yuuseihogohou\ ;
+消失点 < shoushitsuten\ ;
+放射能雲 < houshanougumo\ ;
+社会政策 < shakaiseisaku\ ;
+電極電位 < denkyokuden''i\ ;
+人工透析 < jinkoutouseki\ ;
+複合媒体 < fukugoubaitai\ ;
+住民投票 < juumintouhyou\ ;
+工業地帯 < kougyouchitai\ ;
+呼吸困難 < kokyuukon''nan\ ;
+読書室 < dokushoshitsu\ ;
+養護施設 < yougoshisetsu\ ;
+輸出規制 < yushutsukisei\ ;
+地方事務所 < chihoujimusho\ ;
+戦力組成 < senryokusosei\ ;
+統一見解 < touitsukenkai\ ;
+催眠療法 < saiminryouhou\ ;
+工業製品 < kougyouseihin\ ;
+役人根性 < yakuninkonjou\ ;
+独房監禁 < dokuboukankin\ ;
+宿泊先 < shukuhakusaki\ ;
+導通抵抗 < doutsuuteikou\ ;
+協調主義 < kyouchoushugi\ ;
+会計報告 < kaikeihoukoku\ ;
+台湾海峡 < taiwankaikyou\ ;
+日清戦争 < nisshinsensou\ ;
+宣言発表 < sengenhappyou\ ;
+天体写真 < tentaishashin\ ;
+輸入自由化 < yunyuujiyuuka\ ;
+重量噸数 < juuryoutonsuu\ ;
+識別子 < shikibetsushi\ ;
+南半球 < minamihankyuu\ ;
+明鏡止水 < meikyoushisui\ ;
+年間計画 < nenkankeikaku\ ;
+無利息債務 < murisokusaimu\ ;
+口述筆記 < koujutsuhikki\ ;
+国際通貨 < kokusaitsuuka\ ;
+職員室 < shokuinshitsu\ ;
+硫黄酸化物 < iousankabutsu\ ;
+健康診断 < kenkoushindan\ ;
+桃山時代 < momoyamajidai\ ;
+職場結婚 < shokubakekkon\ ;
+環境問題 < kankyoumondai\ ;
+証人喚問 < shouninkanmon\ ;
+信玄袋 < shingenbukuro\ ;
+攻撃方向 < kougekihoukou\ ;
+競争売買 < kyousoubaibai\ ;
+著作権法 < chosakukenhou\ ;
+国際社会 < kokusaishakai\ ;
+新制高校 < shinseikoukou\ ;
+寄生虫症 < kiseichuushou\ ;
+中折帽子 < nakaoreboushi\ ;
+公開練習 < koukairenshuu\ ;
+経済政策 < keizaiseisaku\ ;
+合成写真 < gouseishashin\ ;
+新進作家 < shinshinsakka\ ;
+恋物語 < koimonogatari\ ;
+酸素供給 < sansokyoukyuu\ ;
+交通公社 < koutsuukousha\ ;
+活殺自在 < kassatsujizai\ ;
+電送写真 < densoushashin\ ;
+全知全能 < zenchizen''nou\ ;
+一粒種 < hitotsubudane\ ;
+国勢調査 < kokuseichousa\ ;
+流通機構 < ryuutsuukikou\ ;
+兵器輸出 < heikiyushutsu\ ;
+天皇崇拝 < ten''nousuuhai\ ;
+保証人要 < hoshounin''you\ ;
+浮遊生物 < fuyuuseibutsu\ ;
+終身保険 < shuushinhoken\ ;
+緑柱石 < ryokuchuuseki\ ;
+懸賞論文 < kenshouronbun\ ;
+道路掃除人 < dourosoujijin\ ;
+市場改革 < shijoukaikaku\ ;
+電力需要 < denryokujuyou\ ;
+臨床尋問 < rinshoujinmon\ ;
+陰極線管 < inkyokusenkan\ ;
+旋光分析 < senkoubunseki\ ;
+化石燃料 < kasekinenryou\ ;
+電信為替 < denshinkawase\ ;
+仏作 < hotokedzukuru\ ;
+懐中電灯 < kaichuudentou\ ;
+才色兼備 < saishokukenbi\ ;
+東南 < higashiminami\ ;
+指導要領 < shidouyouryou\ ;
+郵便年金 < yuubin''nenkin\ ;
+関連商品 < kanrenshouhin\ ;
+限界状況 < genkaijoukyou\ ;
+仁輪加狂言 < niwakakyougen\ ;
+現在完了 < genzaikanryou\ ;
+制約伝搬 < seiyakudenpan\ ;
+丸一週間 < maruisshuukan\ ;
+工業団地 < kougyoudanchi\ ;
+極楽浄土 < gokurakujoudo\ ;
+自自公３党 < jijikousantou\ ;
+気管支肺炎 < kikanshihaien\ ;
+多重債務者 < tajuusaimusha\ ;
+化学分析 < kagakubunseki\ ;
+諮問委員会 < shimon''iinkai\ ;
+同点決勝 < doutenkesshou\ ;
+体外離脱 < taigairidatsu\ ;
+生物兵器 < seibutsuheiki\ ;
+単音節語 < tan''onsetsugo\ ;
+攻撃隊形 < kougekitaikei\ ;
+法人所得 < houjinshotoku\ ;
+大逆事件 < taigyakujiken\ ;
+原始教会 < genshikyoukai\ ;
+価格協定 < kakakukyoutei\ ;
+寓意小説 < guuishousetsu\ ;
+昔気質 < mukashikatagi\ ;
+専門技術 < senmongijutsu\ ;
+拡張可能 < kakuchoukanou\ ;
+俄勉強 < niwakabenkyou\ ;
+急進主義 < kyuushinshugi\ ;
+記念式典 < kinenshikiten\ ;
+競合脱線 < kyougoudassen\ ;
+暑中休暇 < shochuukyuuka\ ;
+繁文縟礼 < hanbunjokurei\ ;
+目標管理 < mokuhyoukanri\ ;
+方向観念 < houkoukan''nen\ ;
+海底電信 < kaiteidenshin\ ;
+業界動向 < gyoukaidoukou\ ;
+必要経費 < hitsuyoukeihi\ ;
+水玉模様 < mizutamamoyou\ ;
+進学率 < shingakuritsu\ ;
+出征家族 < shusseikazoku\ ;
+経常収支 < keijoushuushi\ ;
+地球科学 < chikyuukagaku\ ;
+情報技術 < jouhougijutsu\ ;
+殿様蛙 < tonosamagaeru\ ;
+高高度飛行 < koukoudohikou\ ;
+空中分解 < kuuchuubunkai\ ;
+強制労働 < kyouseiroudou\ ;
+階級意識 < kaikyuuishiki\ ;
+博士論文 < hakushironbun\ ;
+人格形成 < jinkakukeisei\ ;
+絹糸紡績 < kenshibouseki\ ;
+職場闘争 < shokubatousou\ ;
+静脈血 < joumyakuketsu\ ;
+教育学部 < kyouikugakubu\ ;
+変速装置 < hensokusouchi\ ;
+真円真珠 < shin''enshinju\ ;
+国民経済 < kokuminkeizai\ ;
+一筋道 < hitosujimichi\ ;
+内面描写 < naimenbyousha\ ;
+媒体終端 < baitaishuutan\ ;
+心理療法 < shinriryouhou\ ;
+性的関係 < seitekikankei\ ;
+無銭飲食 < musen''inshoku\ ;
+就業率 < shuugyouritsu\ ;
+範疇文法 < hanchuubunpou\ ;
+内緒話 < naishobanashi\ ;
+長期借款 < choukishakkan\ ;
+全体集合 < zentaishuugou\ ;
+右小括弧 < migishoukakko\ ;
+仮想敵国 < kasoutekikoku\ ;
+躁鬱質 < souutsushitsu\ ;
+極楽往生 < gokurakuoujou\ ;
+初等教育 < shotoukyouiku\ ;
+行政命令 < gyouseimeirei\ ;
+対地攻撃 < taichikougeki\ ;
+自然描写 < shizenbyousha\ ;
+金融資本 < kin''yuushihon\ ;
+無能力者 < munouryokusha\ ;
+化学工業 < kagakukougyou\ ;
+行政区画 < gyouseikukaku\ ;
+学習辞典 < gakushuujiten\ ;
+国会議事堂 < kokkaigijidou\ ;
+閨閥政治 < keibatsuseiji\ ;
+二十四節気 < nijuushisekki\ ;
+事業拡充 < jigyoukakujuu\ ;
+農村工業 < nousonkougyou\ ;
+秋雨前線 < akisamezensen\ ;
+無形文化財 < mukeibunkazai\ ;
+共同農場 < kyoudounoujou\ ;
+女権拡張 < jokenkakuchou\ ;
+講習会場 < koushuukaijou\ ;
+汚染物質 < osenbusshitsu\ ;
+状況判断 < joukyouhandan\ ;
+当該官庁 < tougaikanchou\ ;
+仲介貿易 < chuukaiboueki\ ;
+国内市場 < kokunaishijou\ ;
+一枚看板 < ichimaikanban\ ;
+市場自由化 < shijoujiyuuka\ ;
+経営多角化 < keieitakakuka\ ;
+無線通信 < musentsuushin\ ;
+経済大国 < keizaitaikoku\ ;
+主我主義者 < shugashugisha\ ;
+暗号化手法 < angoukashuhou\ ;
+反社会的 < hanshakaiteki\ ;
+一利一害 < ichiriichigai\ ;
+二律背反 < niritsuhaihan\ ;
+復元作業 < fukugensagyou\ ;
+人間爆弾 < ningenbakudan\ ;
+季節労働 < kisetsuroudou\ ;
+陸軍大臣 < rikugundaijin\ ;
+断抵抗角 < danteikoukaku\ ;
+熱効率 < netsukouritsu\ ;
+不見転芸者 < mizutengeisha\ ;
+目的物 < mokutekibutsu\ ;
+通信機関 < tsuushinkikan\ ;
+反発力 < hanpatsuryoku\ ;
+写真凸版 < shashintoppan\ ;
+植物誌 < shokubutsushi\ ;
+化学療法 < kagakuryouhou\ ;
+功利主義者 < kourishugisha\ ;
+綱紀粛正 < koukishukusei\ ;
+税制改革 < zeiseikaikaku\ ;
+調停裁判 < chouteisaiban\ ;
+無罪判決 < muzaihanketsu\ ;
+天牛 < kamikirimushi\ ;
+軍事戦略 < gunjisenryaku\ ;
+警察力 < keisatsuryoku\ ;
+臨床試験 < rinshoushiken\ ;
+防止指針 < boushishishin\ ;
+気象観測 < kishoukansoku\ ;
+舞台生活 < butaiseikatsu\ ;
+大名旅行 < daimyouryokou\ ;
+作業療法 < sagyouryouhou\ ;
+外国為替 < gaikokukawase\ ;
+都立高校 < toritsukoukou\ ;
+形式主義 < keishikishugi\ ;
+化学工学 < kagakukougaku\ ;
+角運動量 < kakuundouryou\ ;
+完全無欠 < kanzenmuketsu\ ;
+政策決定 < seisakukettei\ ;
+貨物室 < kamotsushitsu\ ;
+循環小数 < junkanshousuu\ ;
+大韓民国 < daikanminkoku\ ;
+懐中鏡 < kaichuukagami\ ;
+適用業務 < tekiyougyoumu\ ;
+戦争文学 < sensoubungaku\ ;
+九天直下 < kyuutenchokka\ ;
+淡緑色 < tanryokushoku\ ;
+面従腹背 < menjuufukuhai\ ;
+確保失敗 < kakuhoshippai\ ;
+共通言語 < kyoutsuugengo\ ;
+自動車保険 < jidoushahoken\ ;
+強制処分 < kyouseishobun\ ;
+断崖絶壁 < dangaizeppeki\ ;
+産業社会 < sangyoushakai\ ;
+各種学校 < kakushugakkou\ ;
+分解写真 < bunkaishashin\ ;
+印刷媒体 < insatsubaitai\ ;
+研究所報 < kenkyuushohou\ ;
+乱射乱撃 < ransharangeki\ ;
+特許侵害 < tokkyoshingai\ ;
+定額貯金 < teigakuchokin\ ;
+公衆伝動 < koushuudendou\ ;
+天竺鼠 < tenjikunezumi\ ;
+鉄道馬車 < tetsudoubasha\ ;
+内国為替 < naikokukawase\ ;
+種種様様 < shujusamazama\ ;
+喜色満面 < kishokumanmen\ ;
+弁別素性 < benbetsusosei\ ;
+作戦命令 < sakusenmeirei\ ;
+議長職権 < gichoushokken\ ;
+統率力 < touritsuryoku\ ;
+実録物 < jitsurokumono\ ;
+啓蒙思潮 < keimoushichou\ ;
+公娼全廃 < koushouzenpai\ ;
+対面交通 < taimenkoutsuu\ ;
+自己顕示欲 < jikokenjiyoku\ ;
+密入国 < mitsunyuugoku\ ;
+一問一答 < ichimon''ittou\ ;
+直輸出 < chokuyushutsu\ ;
+無配当保険 < muhaitouhoken\ ;
+電子密度 < denshimitsudo\ ;
+超低価格 < chouteikakaku\ ;
+一括売買 < ikkatsubaibai\ ;
+惚気話 < norokebanashi\ ;
+制約条件 < seiyakujouken\ ;
+休戦会談 < kyuusenkaidan\ ;
+休養室 < kyuuyoushitsu\ ;
+版権侵害 < hankenshingai\ ;
+陳列窓 < chinretsumado\ ;
+百分率 < hyakubunritsu\ ;
+隔離病棟 < kakuribyoutou\ ;
+生鮮料品 < seisenryouhin\ ;
+出血症 < shukketsushou\ ;
+上昇傾向 < joushoukeikou\ ;
+不法入国 < fuhounyuugoku\ ;
+教養学部 < kyouyougakubu\ ;
+高信頼性 < koushinraisei\ ;
+果樹栽培者 < kajusaibaisha\ ;
+家宅捜索 < katakusousaku\ ;
+計画経済 < keikakukeizai\ ;
+三軸試験 < sanjikushiken\ ;
+最終段階 < saishuudankai\ ;
+収入印紙 < shuunyuuinshi\ ;
+半熟練工 < hanjukurenkou\ ;
+写真判定 < shashinhantei\ ;
+経済観念 < keizaikan''nen\ ;
+賃金水準 < chinginsuijun\ ;
+営業収支 < eigyoushuushi\ ;
+三相交流 < sansoukouryuu\ ;
+経営戦略 < keieisenryaku\ ;
+春夏秋冬 < shunkashuutou\ ;
+焦点深度 < shoutenshindo\ ;
+一時所得 < ichijishotoku\ ;
+杉花粉症 < sugikafunshou\ ;
+人民投票 < jinmintouhyou\ ;
+密輸出 < mitsuyushutsu\ ;
+合従連衡 < gasshourenkou\ ;
+烏野豌豆 < karasunoendou\ ;
+無芸大食 < mugeitaishoku\ ;
+国際連合 < kokusairengou\ ;
+判別式 < hanbetsushiki\ ;
+熱交換器 < netsukoukanki\ ;
+宇宙開発 < uchuukaihatsu\ ;
+漢文訓読 < kanbunkundoku\ ;
+空間感覚 < kuukankankaku\ ;
+二人三脚 < nininsankyaku\ ;
+権力主義 < kenryokushugi\ ;
+植物界 < shokubutsukai\ ;
+募集広告 < boshuukoukoku\ ;
+学習理論 < gakushuuriron\ ;
+駐車禁止 < chuushakinshi\ ;
+共同宣言 < kyoudousengen\ ;
+裁判官忌避 < saibankankihi\ ;
+天地神明 < tenchishinmei\ ;
+夢幻 < yumemaboroshi\ ;
+詳細情報 < shousaijouhou\ ;
+牛飲馬食 < gyuuinbashoku\ ;
+非武装地帯 < hibusouchitai\ ;
+金城鉄壁 < kinjouteppeki\ ;
+集中講義 < shuuchuukougi\ ;
+変形虫類 < henkeichuurui\ ;
+公的年金 < koutekinenkin\ ;
+週刊雑誌 < shuukanzasshi\ ;
+紡績工場 < bousekikoujou\ ;
+初等数学 < shotousuugaku\ ;
+残存日数 < zanson''nissuu\ ;
+空気清浄機 < kuukiseijouki\ ;
+国際展開 < kokusaitenkai\ ;
+年功序列 < nenkoujoretsu\ ;
+熱力学 < netsurikigaku\ ;
+商業都市 < shougyoutoshi\ ;
+中途退学 < chuutotaigaku\ ;
+共同会見 < kyoudoukaiken\ ;
+憲法学者 < kenpougakusha\ ;
+一事不再議 < ichijifusaigi\ ;
+創建記念日 < soukenkinenbi\ ;
+普遍妥当性 < fuhendatousei\ ;
+原子爆弾 < genshibakudan\ ;
+原子破壊機 < genshihakaiki\ ;
+登山鉄道 < tozantetsudou\ ;
+新正月 < shinshougatsu\ ;
+物理化学 < butsurikagaku\ ;
+給水制限 < kyuusuiseigen\ ;
+朝鮮戦争 < chousensensou\ ;
+嫌気生物 < kenkiseibutsu\ ;
+選択状態 < sentakujoutai\ ;
+主食物 < shushokubutsu\ ;
+高峰八座 < kouhouhachiza\ ;
+不消化物 < fushoukabutsu\ ;
+法的文書 < houtekibunsho\ ;
+秘密選挙 < himitsusenkyo\ ;
+陳列棚 < chinretsudana\ ;
+新熱帯区 < shin''nettaiku\ ;
+結婚指輪 < kekkon''yubiwa\ ;
+善隣友好 < zenrin''yuukou\ ;
+受取手形 < uketoritegata\ ;
+決算報告 < kessanhoukoku\ ;
+心理学者 < shinrigakusha\ ;
+雑収入 < zatsushuunyuu\ ;
+論理形式 < ronrikeishiki\ ;
+低頭平身 < teitouheishin\ ;
+混合農業 < kongounougyou\ ;
+文芸作品 < bungeisakuhin\ ;
+有閑階級 < yuukankaikyuu\ ;
+友好条約 < yuukoujouyaku\ ;
+則天去私 < sokutenkyoshi\ ;
+写実主義 < shajitsushugi\ ;
+国際市場 < kokusaishijou\ ;
+二重生活 < nijuuseikatsu\ ;
+臨機目標 < rinkimokuhyou\ ;
+商業登記 < shougyoutouki\ ;
+黄色人種 < oushokujinshu\ ;
+周波変調 < shuuhahenchou\ ;
+欠陥商品 < kekkanshouhin\ ;
+従属変数 < juuzokuhensuu\ ;
+既約表現 < kiyakuhyougen\ ;
+話半分 < hanashihanbun\ ;
+不良少年 < furyoushounen\ ;
+測量技師 < sokuryougishi\ ;
+森羅万象 < shinrabanshou\ ;
+産業構造 < sangyoukouzou\ ;
+欧州諸国 < oushuushokoku\ ;
+通勤地獄 < tsuukinjigoku\ ;
+昼間人口 < chuukanjinkou\ ;
+力不足 < chikarabusoku\ ;
+性格判断 < seikakuhandan\ ;
+信頼関係 < shinraikankei\ ;
+就学率 < shuugakuritsu\ ;
+同期通信 < doukitsuushin\ ;
+三重焦点 < sanjuushouten\ ;
+投票総数 < touhyousousuu\ ;
+大幅刷新 < oohabasasshin\ ;
+水上町 < minakamimachi\ ;
+結婚記念日 < kekkonkinenbi\ ;
+大雨注意報 < ooamechuuihou\ ;
+切断患者 < setsudankanja\ ;
+袖手傍観 < shuushuboukan\ ;
+拍手喝采 < hakushukassai\ ;
+作業仮説 < sagyoukasetsu\ ;
+経済成長 < keizaiseichou\ ;
+米東部時間 < beitoubujikan\ ;
+合成宝石 < gouseihouseki\ ;
+結締組織 < ketteisoshiki\ ;
+親切心 < shinsetsushin\ ;
+円錐曲線 < ensuikyokusen\ ;
+聖体拝領 < seitaihairyou\ ;
+庶民金融 < shominkin''yuu\ ;
+体積抵抗 < taisekiteikou\ ;
+協同組合 < kyoudoukumiai\ ;
+先住民族 < senjuuminzoku\ ;
+統一戦線 < touitsusensen\ ;
+同時通訳 < doujitsuuyaku\ ;
+周知徹底 < shuuchitettei\ ;
+艱難辛苦 < kan''nanshinku\ ;
+政党内閣 < seitounaikaku\ ;
+制作室 < seisakushitsu\ ;
+即物的 < sokubutsuteki\ ;
+現地報告 < genchihoukoku\ ;
+懸賞問題 < kenshoumondai\ ;
+劣性遺伝子 < resseiidenshi\ ;
+汲取口 < kumitoriguchi\ ;
+傭船契約 < yousenkeiyaku\ ;
+今上天皇 < kinjouten''nou\ ;
+他覚症状 < takakushoujou\ ;
+欠食児童 < kesshokujidou\ ;
+娯楽番組 < gorakubangumi\ ;
+精神医学 < seishin''igaku\ ;
+内容証明 < naiyoushoumei\ ;
+出港停止 < shukkouteishi\ ;
+夫婦約束 < fuufuyakusoku\ ;
+旅行業者 < ryokougyousha\ ;
+使徒信経 < shitoshinkyou\ ;
+外資導入 < gaishidounyuu\ ;
+無価値資産 < mukachishisan\ ;
+健康保険医 < kenkouhoken''i\ ;
+常任委員会 < jounin''iinkai\ ;
+成人教育 < seijinkyouiku\ ;
+公式主義 < koushikishugi\ ;
+複数業務 < fukusuugyoumu\ ;
+禁欲主義 < kin''yokushugi\ ;
+空襲警報 < kuushuukeihou\ ;
+産業再生 < sangyousaisei\ ;
+賃貸価格 < chintaikakaku\ ;
+戦闘前哨 < sentouzenshou\ ;
+一言一行 < ichigen''ikkou\ ;
+軖 < tsumugikuruma\ ;
+吹奏楽団 < suisougakudan\ ;
+直線距離 < chokusenkyori\ ;
+近親結婚 < kinshinkekkon\ ;
+米英仏蘭 < beieibutsuran\ ;
+自由主義者 < jiyuushugisha\ ;
+短波受信機 < tanpajushinki\ ;
+共同作業 < kyoudousagyou\ ;
+減反政策 < gentanseisaku\ ;
+心理作戦 < shinrisakusen\ ;
+総領娘 < souryoumusume\ ;
+七福神 < shichifukujin\ ;
+心臓移植 < shinzouishoku\ ;
+有限責任 < yuugensekinin\ ;
+組織再編 < soshikisaihen\ ;
+福音教会 < fukuinkyoukai\ ;
+関係副詞 < kankeifukushi\ ;
+史料編纂 < shiryouhensan\ ;
+特別席 < tokubetsuseki\ ;
+猟官運動 < ryoukan''undou\ ;
+肉体労働 < nikutairoudou\ ;
+破壊主義者 < hakaishugisha\ ;
+参照文献 < sanshoubunken\ ;
+音楽監督 < ongakukantoku\ ;
+平身低頭 < heishinteitou\ ;
+共産分子 < kyousanbunshi\ ;
+予約出版 < yoyakushuppan\ ;
+炭水化物 < tansuikabutsu\ ;
+御都合主義 < gotsugoushugi\ ;
+多血質 < taketsushitsu\ ;
+近代文学 < kindaibungaku\ ;
+二十日大根 < hatsukadaikon\ ;
+地方官庁 < chihoukanchou\ ;
+四分五裂 < shibungoretsu\ ;
+経済回復 < keizaikaifuku\ ;
+実存主義 < jitsuzonshugi\ ;
+恒温動物 < kouondoubutsu\ ;
+野菜一皿 < yasaihitosara\ ;
+形式論理 < keishikironri\ ;
+大学浪人 < daigakurounin\ ;
+暫定協定 < zanteikyoutei\ ;
+落下傘部隊 < rakkasanbutai\ ;
+放送大学 < housoudaigaku\ ;
+法律制度 < houritsuseido\ ;
+長距離依存 < choukyoriizon\ ;
+信用金庫 < shin''youkinko\ ;
+有名無実 < yuumeimujitsu\ ;
+終身会員 < shuushinkaiin\ ;
+笑止千万 < shoushisenban\ ;
+文学博士 < bungakuhakase\ ;
+庭先相場 < niwasakisouba\ ;
+消費者側 < shouhishagawa\ ;
+精神構造 < seishinkouzou\ ;
+鉄骨工事 < tekkotsukouji\ ;
+国利民福 < kokuriminpuku\ ;
+軽佻浮薄 < keichoufuhaku\ ;
+沖積平野 < chuusekiheiya\ ;
+酪農製品 < rakunouseihin\ ;
+謝罪広告 < shazaikoukoku\ ;
+富国強兵 < fukokukyouhei\ ;
+外郭団体 < gaikakudantai\ ;
+共同企業 < kyoudoukigyou\ ;
+階級社会 < kaikyuushakai\ ;
+対外政策 < taigaiseisaku\ ;
+精霊信仰 < seireishinkou\ ;
+ＧＢ理論 < ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 < shunpuutaitou\ ;
+死刑執行 < shikeishikkou\ ;
+二者択一 < nishatakuitsu\ ;
+酸性反応 < sanseihan''nou\ ;
+核爆発 < kakubakuhatsu\ ;
+水道料金 < suidouryoukin\ ;
+空気力学 < kuukirikigaku\ ;
+商売気質 < shoubaikatagi\ ;
+記録文学 < kirokubungaku\ ;
+符号変換器 < fugouhenkanki\ ;
+彼方此方 < achirakochira\ ;
+立身出世 < risshinshusse\ ;
+正金銀行 < shoukinginkou\ ;
+共済事業 < kyousaijigyou\ ;
+先行技術 < senkougijutsu\ ;
+図書目録 < toshomokuroku\ ;
+証拠隠滅 < shoukoinmetsu\ ;
+送金小切手 < soukinkogitte\ ;
+競争関係 < kyousoukankei\ ;
+得票率 < tokuhyouritsu\ ;
+表彰式 < hyoushoushiki\ ;
+入学式 < nyuugakushiki\ ;
+事前検閲 < jizenken''etsu\ ;
+行政処分 < gyouseishobun\ ;
+全面広告 < zenmenkoukoku\ ;
+糎 < senchimeitoru\ ;
+国務長官 < kokumuchoukan\ ;
+粨 < hekutomeetoru\ ;
+精神病院 < seishinbyouin\ ;
+四十九日 < shijuukunichi\ ;
+杓子定規 < shakushijougi\ ;
+可塑物質 < kasobusshitsu\ ;
+灰白質 < kaihakushitsu\ ;
+半農半漁 < han''nouhangyo\ ;
+食用油 < shokuyouabura\ ;
+職業的 < shokugyouteki\ ;
+食生活 < shokuseikatsu\ ;
+暴飲暴食 < bouinboushoku\ ;
+研究分野 < kenkyuubun''ya\ ;
+人口密度 < jinkoumitsudo\ ;
+人身売買 < jinshinbaibai\ ;
+殺人未遂 < satsujinmisui\ ;
+丸一月 < maruhitotsuki\ ;
+足利時代 < ashikagajidai\ ;
+弾着距離 < danchakukyori\ ;
+職業病 < shokugyoubyou\ ;
+動物検査 < doubutsukensa\ ;
+薬餌療法 < yakujiryouhou\ ;
+人間国宝 < ningenkokuhou\ ;
+丸一日 < maruichinichi\ ;
+緊要地形 < kin''youchikei\ ;
+市場成長 < shijouseichou\ ;
+指名投票 < shimeitouhyou\ ;
+呉越同舟 < goetsudoushuu\ ;
+宅地造成 < takuchizousei\ ;
+精神労働 < seishinroudou\ ;
+家族計画 < kazokukeikaku\ ;
+開口一番 < kaikouichiban\ ;
+直系卑属 < chokkeihizoku\ ;
+割賦方式 < kappuhoushiki\ ;
+毒物学 < dokubutsugaku\ ;
+勤労大衆 < kinroutaishuu\ ;
+未収入金 < mishuunyuukin\ ;
+風俗営業 < fuuzokueigyou\ ;
+民俗音楽 < minzokuongaku\ ;
+海水浴場 < kaisuiyokujou\ ;
+連合作戦 < rengousakusen\ ;
+両蓋時計 < ryoubutadokei\ ;
+主客転倒 < shukakutentou\ ;
+就職先 < shuushokusaki\ ;
+損益勘定 < son''ekikanjou\ ;
+動力降下 < douryokukouka\ ;
+三角闘争 < sankakutousou\ ;
+退学処分 < taigakushobun\ ;
+実験材料 < jikkenzairyou\ ;
+口約束 < kuchiyakusoku\ ;
+対戦車火器 < taisenshakaki\ ;
+弗化水素酸 < fukkasuisosan\ ;
+重要産業 < juuyousangyou\ ;
+液体燃料 < ekitainenryou\ ;
+伝道集会 < dendoushuukai\ ;
+八面六臂 < hachimenroppi\ ;
+実力者 < jitsuryokusha\ ;
+才気煥発 < saikikanpatsu\ ;
+感情表現 < kanjouhyougen\ ;
+湧出量 < yuushutsuryou\ ;
+人種差別 < jinshusabetsu\ ;
+英国発音 < eikokuhatsuon\ ;
+無限数列 < mugensuuretsu\ ;
+熟慮断行 < jukuryodankou\ ;
+筒井筒 < tsutsuidzutsu\ ;
+直交座標 < chokkouzahyou\ ;
+北太平洋 < kitataiheiyou\ ;
+男声合唱 < danseigasshou\ ;
+胃腸病学 < ichoubyougaku\ ;
+三角関係 < sankakukankei\ ;
+相補性原理 < souhoseigenri\ ;
+蒸気機関車 < joukikikansha\ ;
+単独会見 < tandokukaiken\ ;
+会堂司 < kaidoudzukasa\ ;
+間歇熱 < kanketsunetsu\ ;
+財産相続 < zaisansouzoku\ ;
+上智大学 < jouchidaigaku\ ;
+文化事業部 < bunkajigyoubu\ ;
+無記名社債 < mukimeishasai\ ;
+僧庵生活 < souanseikatsu\ ;
+法律用語 < houritsuyougo\ ;
+雌雄選択 < shiyuusentaku\ ;
+百花繚乱 < hyakkaryouran\ ;
+音楽療法 < ongakuryouhou\ ;
+住民登録 < juumintouroku\ ;
+断層写真 < dansoushashin\ ;
+占領地帯 < senryouchitai\ ;
+薬品会社 < yakuhingaisha\ ;
+出口調査 < deguchichousa\ ;
+合同慰霊祭 < goudouireisai\ ;
+能動免疫 < noudoumen''eki\ ;
+在留邦人 < zairyuuhoujin\ ;
+麦藁細工 < mugiwarasaiku\ ;
+哲学的 < tetsugakuteki\ ;
+工芸美術 < kougeibijutsu\ ;
+読唇術 < dokushinjutsu\ ;
+航空攻撃 < koukuukougeki\ ;
+裸電球 < hadakadenkyuu\ ;
+重量選手 < juuryousenshu\ ;
+赤立羽蝶 < akatatehachou\ ;
+火災報知機 < kasaihouchiki\ ;
+蛋白質 < tanpakushitsu\ ;
+愛鳥週間 < aichoushuukan\ ;
+工業化学 < kougyoukagaku\ ;
+技術提携 < gijutsuteikei\ ;
+中性子星 < chuuseishisei\ ;
+排泄物 < haisetsubutsu\ ;
+食肉目 < shokunikumoku\ ;
+公共事業 < koukyoujigyou\ ;
+上越本線 < jouetsuhonsen\ ;
+活動力 < katsudouryoku\ ;
+無償契約 < mushoukeiyaku\ ;
+電波探知機 < denpatanchiki\ ;
+閃光電球 < senkoudenkyuu\ ;
+国籍言語 < kokusekigengo\ ;
+定温動物 < teiondoubutsu\ ;
+空前絶後 < kuuzenzetsugo\ ;
+侵略的 < shinryakuteki\ ;
+武力外交 < buryokugaikou\ ;
+凝集力 < gyoushuuryoku\ ;
+戸籍抄本 < kosekishouhon\ ;
+朝鮮半島 < chousenhantou\ ;
+可変抵抗器 < kahenteikouki\ ;
+非常召集 < hijoushoushuu\ ;
+全般前哨 < zenpanzenshou\ ;
+大乗仏教 < daijoubukkyou\ ;
+分析試験 < bunsekishiken\ ;
+公務員試験 < koumuinshiken\ ;
+幽霊屋敷 < yuureiyashiki\ ;
+有産階級 < yuusankaikyuu\ ;
+権力政治 < kenryokuseiji\ ;
+脅迫電話 < kyouhakudenwa\ ;
+船荷証券 < funanishouken\ ;
+手旗信号 < tebatashingou\ ;
+栄養失調 < eiyoushitchou\ ;
+作況指数 < sakkyoushisuu\ ;
+相互通信 < sougotsuushin\ ;
+表層雪崩 < hyousounadare\ ;
+災害対策 < saigaitaisaku\ ;
+事実調査 < jijitsuchousa\ ;
+日経新聞 < nikkeishinbun\ ;
+中間選挙 < chuukansenkyo\ ;
+市長選挙 < shichousenkyo\ ;
+沈降海岸 < chinkoukaigan\ ;
+獅子頭 < shishigashira\ ;
+宇宙飛行士 < uchuuhikoushi\ ;
+社会福祉 < shakaifukushi\ ;
+論功行賞 < ronkoukoushou\ ;
+実践躬行 < jissenkyuukou\ ;
+観察力 < kansatsuryoku\ ;
+正副二通 < seifukunitsuu\ ;
+交感神経 < koukanshinkei\ ;
+消費革命 < shouhikakumei\ ;
+脱力感 < datsuryokukan\ ;
+専任講師 < sen''ninkoushi\ ;
+支出額 < shishutsugaku\ ;
+大量生産 < tairyouseisan\ ;
+最高機密 < saikoukimitsu\ ;
+管弦楽法 < kangengakuhou\ ;
+新品同様 < shinpindouyou\ ;
+大虐殺 < daigyakusatsu\ ;
+前渡金 < maewatashikin\ ;
+看護婦学院 < kangofugakuin\ ;
+備荒貯蓄 < bikouchochiku\ ;
+薄志弱行 < hakushijakkou\ ;
+勤労階級 < kinroukaikyuu\ ;
+乳白色 < nyuuhakushoku\ ;
+日印関係 < nichiinkankei\ ;
+終業式 < shuugyoushiki\ ;
+長期計画 < choukikeikaku\ ;
+爆発的 < bakuhatsuteki\ ;
+不時着陸 < fujichakuriku\ ;
+排泄器官 < haisetsukikan\ ;
+英文解釈 < eibunkaishaku\ ;
+免責条項 < mensekijoukou\ ;
+鉄道線路 < tetsudousenro\ ;
+十字軍騎士 < juujigunkishi\ ;
+攻撃態勢 < kougekitaisei\ ;
+定期昇給 < teikishoukyuu\ ;
+記述文法 < kijutsubunpou\ ;
+臣籍降下 < shinsekikouka\ ;
+炭酸飲料 < tansan''inryou\ ;
+市場拡大 < shijoukakudai\ ;
+精密機械 < seimitsukikai\ ;
+無機高分子 < mukikoubunshi\ ;
+機動警察 < kidoukeisatsu\ ;
+清元節 < kiyomotobushi\ ;
+年間収益 < nenkanshuueki\ ;
+仲裁裁定 < chuusaisaitei\ ;
+雷親父 < kaminarioyaji\ ;
+偵察要員 < teisatsuyouin\ ;
+神経質 < shinkeishitsu\ ;
+文藝春秋 < bungeishunjuu\ ;
+人形芝居 < ningyoushibai\ ;
+水中眼鏡 < suichuumegane\ ;
+公序良俗 < koujoryouzoku\ ;
+接着力 < setchakuryoku\ ;
+五月幟 < satsukinobori\ ;
+婚前交渉 < konzenkoushou\ ;
+太陽黒点 < taiyoukokuten\ ;
+上御一人 < kamigoichinin\ ;
+主要工業 < shuyoukougyou\ ;
+下等動物 < katoudoubutsu\ ;
+逆輸出 < gyakuyushutsu\ ;
+的中率 < tekichuuritsu\ ;
+建設費 < kensetsuhiyou\ ;
+臥薪嘗胆 < gashinshoutan\ ;
+指揮所演習 < shikijoenshuu\ ;
+診療支援 < shinryoushien\ ;
+転地療養 < tenchiryouyou\ ;
+万能選手 < ban''nousenshu\ ;
+教会音楽 < kyoukaiongaku\ ;
+千載一遇 < senzaiichiguu\ ;
+屈折率 < kussetsuritsu\ ;
+売買契約 < baibaikeiyaku\ ;
+住宅地帯 < juutakuchitai\ ;
+減速装置 < gensokusouchi\ ;
+住宅問題 < juutakumondai\ ;
+船長室 < senchoushitsu\ ;
+免疫血清 < men''ekikessei\ ;
+核反応炉 < kakuhan''nouro\ ;
+主教室 < shukyoushitsu\ ;
+放射線学 < houshasengaku\ ;
+流通経路 < ryuutsuukeiro\ ;
+二酸化窒素 < nisankachisso\ ;
+尋常一様 < jinjouichiyou\ ;
+国有財産 < kokuyuuzaisan\ ;
+市民階級 < shiminkaikyuu\ ;
+言語知識 < gengochishiki\ ;
+公共放送 < koukyouhousou\ ;
+室内楽 < shitsunaigaku\ ;
+斑状組織 < hanjousoshiki\ ;
+人情話 < ninjoubanashi\ ;
+重爆撃機 < juubakugekiki\ ;
+婚外交渉 < kongaikoushou\ ;
+仲裁裁判 < chuusaisaiban\ ;
+侯爵夫人 < koushakufujin\ ;
+濃緑色 < nouryokushoku\ ;
+有色野菜 < yuushokuyasai\ ;
+集団訴訟 < shuudansoshou\ ;
+一次産業 < ichijisangyou\ ;
+練習不足 < renshuubusoku\ ;
+商船学校 < shousengakkou\ ;
+麦藁蜻蛉 < mugiwaratonbo\ ;
+自動車電話 < jidoushadenwa\ ;
+有限集合 < yuugenshuugou\ ;
+追加料金 < tsuikaryoukin\ ;
+Π中間子 < paichuukanshi\ ;
+遠隔教育 < enkakukyouiku\ ;
+脳脊髄液 < nousekizuieki\ ;
+情報可視化 < jouhoukashika\ ;
+東西南北 < touzainanboku\ ;
+許容線量 < kyoyousenryou\ ;
+正札値段 < shoufudanedan\ ;
+応接室 < ousetsushitsu\ ;
+差別関税 < sabetsukanzei\ ;
+中等学校 < chuutougakkou\ ;
+管弦楽団 < kangengakudan\ ;
+侵略国 < shinryakukoku\ ;
+寄生生物 < kiseiseibutsu\ ;
+主権回復 < shukenkaifuku\ ;
+両部神道 < ryoubushintou\ ;
+侍気質 < samuraikatagi\ ;
+申込書 < moushikomisho\ ;
+絹布一巻 < kenpuhitomaki\ ;
+過圧密比 < kaatsumitsuhi\ ;
+摂氏２０度 < sesshinijuudo\ ;
+自然選択 < shizensentaku\ ;
+直説法 < chokusetsuhou\ ;
+下町風 < shitamachifuu\ ;
+反応速度 < han''nousokudo\ ;
+小型赤家蚊 < kogataakaieka\ ;
+偵察衛星 < teisatsueisei\ ;
+食中毒 < shokuchuudoku\ ;
+正副議長 < seifukugichou\ ;
+産出高 < sanshutsudaka\ ;
+神前結婚 < shinzenkekkon\ ;
+法的手段 < houtekishudan\ ;
+作業領域 < sagyouryouiki\ ;
+年金証書 < nenkinshousho\ ;
+交通妨害 < koutsuubougai\ ;
+町村合併 < chousongappei\ ;
+教会旋法 < kyoukaisenpou\ ;
+幕藩体制 < bakuhantaisei\ ;
+第一印象 < daiichiinshou\ ;
+真空包装 < shinkuuhousou\ ;
+監査証跡 < kansashouseki\ ;
+誘導電流 < yuudoudenryuu\ ;
+復旧作業 < fukkyuusagyou\ ;
+供出米 < kyoushutsumai\ ;
+損害賠償 < songaibaishou\ ;
+想像妊娠 < souzouninshin\ ;
+虚心坦懐 < kyoshintankai\ ;
+耐震構造 < taishinkouzou\ ;
+有限級数 < yuugenkyuusuu\ ;
+増設率 < zousetsuritsu\ ;
+国土計画 < kokudokeikaku\ ;
+生存競争 < seizonkyousou\ ;
+結婚披露宴 < kekkonhirouen\ ;
+市民革命 < shiminkakumei\ ;
+圧力鍋 < atsuryokunabe\ ;
+大統領選 < daitouryousen\ ;
+補習教育 < hoshuukyouiku\ ;
+司令長官 < shireichoukan\ ;
+賃金体系 < chingintaikei\ ;
+海上自衛隊 < kaijoujieitai\ ;
+全人教育 < zenjinkyouiku\ ;
+官房長官 < kanbouchoukan\ ;
+企業秘密 < kigyouhimitsu\ ;
+殺人事件 < satsujinjiken\ ;
+団栗眼 < dongurimanako\ ;
+圧力釜 < atsuryokugama\ ;
+凶悪犯罪 < kyouakuhanzai\ ;
+天然資源 < ten''nenshigen\ ;
+百姓一揆 < hyakushouikki\ ;
+原案委員会 < gen''an''iinkai\ ;
+気密室 < kimitsushitsu\ ;
+総合大学 < sougoudaigaku\ ;
+仏頂尊勝 < buchousonshou\ ;
+千差万別 < sensabanbetsu\ ;
+選手権試合 < senshukenjiai\ ;
+網状組織 < moujousoshiki\ ;
+第一部長 < daiichibuchou\ ;
+準準決勝 < junjunkesshou\ ;
+大和民族 < yamatominzoku\ ;
+応接係 < ousetsugakari\ ;
+地殻変動 < chikakuhendou\ ;
+財政改革 < zaiseikaikaku\ ;
+共同計算 < kyoudoukeisan\ ;
+女房詞 < nyouboukotoba\ ;
+写真電送 < shashindensou\ ;
+分列式 < bunretsushiki\ ;
+不良診断 < furyoushindan\ ;
+水産大学 < suisandaigaku\ ;
+単式火山 < tanshikikazan\ ;
+一分一厘 < ichibuichirin\ ;
+実地検証 < jitchikenshou\ ;
+北清事変 < hokushinjihen\ ;
+人面獣心 < ninmenjuushin\ ;
+親任式 < shin''ninshiki\ ;
+計画段階 < keikakudankai\ ;
+生活力 < seikatsuryoku\ ;
+社員食堂 < shainshokudou\ ;
+郵便料金 < yuubinryoukin\ ;
+五十三次 < gojuusantsugi\ ;
+優勝劣敗 < yuushoureppai\ ;
+快速列車 < kaisokuressha\ ;
+難民条約 < nanminjouyaku\ ;
+国際放送 < kokusaihousou\ ;
+六十余州 < rokujuuyoshuu\ ;
+急行列車 < kyuukouressha\ ;
+日和見主義 < hiyorimishugi\ ;
+森林地帯 < shinrinchitai\ ;
+鎖国政策 < sakokuseisaku\ ;
+具象美術 < gushoubijutsu\ ;
+懐石料理 < kaisekiryouri\ ;
+簡易食堂 < kan''ishokudou\ ;
+暗黒大陸 < ankokutairiku\ ;
+駅長室 < ekichoushitsu\ ;
+反動革命 < handoukakumei\ ;
+六根清浄 < rokkonshoujou\ ;
+商業主義 < shougyoushugi\ ;
+仮装舞踏会 < kasoubutoukai\ ;
+信頼醸成 < shinraijousei\ ;
+共同声明 < kyoudouseimei\ ;
+遮光器土偶 < shakoukidoguu\ ;
+割引切符 < waribikikippu\ ;
+下水処理場 < gesuishorijou\ ;
+冷却期間 < reikyakukikan\ ;
+恙虫 < tsutsugamushi\ ;
+九死一生 < kyuushiisshou\ ;
+中華民国 < chuukaminkoku\ ;
+合理主義者 < gourishugisha\ ;
+拡声装置 < kakuseisouchi\ ;
+道路建設 < dourokensetsu\ ;
+人造宝石 < jinzouhouseki\ ;
+輸出保険 < yushutsuhoken\ ;
+必修科目 < hisshuukamoku\ ;
+給与所得 < kyuuyoshotoku\ ;
+歴史学派 < rekishigakuha\ ;
+等差数列 < tousasuuretsu\ ;
+君子豹変 < kunshihyouhen\ ;
+下表参照 < kahyousanshou\ ;
+勢力範囲 < seiryokuhan''i\ ;
+通貨政策 < tsuukaseisaku\ ;
+独占企業 < dokusenkigyou\ ;
+特権階級 < tokkenkaikyuu\ ;
+正規曲線 < seikikyokusen\ ;
+傍聴無料 < bouchoumuryou\ ;
+産業資本 < sangyoushihon\ ;
+楽器演奏者 < gakkiensousha\ ;
+立石電機 < tateishidenki\ ;
+夜間中学 < yakanchuugaku\ ;
+貿易摩擦 < bouekimasatsu\ ;
+年輪史学 < nenrinshigaku\ ;
+家付娘 < ietsukimusume\ ;
+機械翻訳 < kikaihon''yaku\ ;
+金科玉条 < kinkagyokujou\ ;
+民間療法 < minkanryouhou\ ;
+情況証拠 < joukyoushouko\ ;
+古典主義者 < kotenshugisha\ ;
+心悸亢進 < shinkikoushin\ ;
+国土地理院 < kokudochiriin\ ;
+定性分析 < teiseibunseki\ ;
+市街化区域 < shigaikakuiki\ ;
+特許技術 < tokkyogijutsu\ ;
+報道写真 < houdoushashin\ ;
+最低賃金 < saiteichingin\ ;
+百日草 < hyakunichisou\ ;
+瞬間電断 < shunkandendan\ ;
+年頭教書 < nentoukyousho\ ;
+東洋段通 < touyoudantsuu\ ;
+独占資本 < dokusenshihon\ ;
+東方教会 < touhoukyoukai\ ;
+電気機関車 < denkikikansha\ ;
+自覚症状 < jikakushoujou\ ;
+天体観測 < tentaikansoku\ ;
+群集行動 < gunshuukoudou\ ;
+衆人環視 < shuujinkanshi\ ;
+迷走神経 < meisoushinkei\ ;
+戦略兵器 < senryakuheiki\ ;
+先制攻撃 < senseikougeki\ ;
+有給休暇 < yuukyuukyuuka\ ;
+見学旅行 < kengakuryokou\ ;
+国内経済 < kokunaikeizai\ ;
+対空射撃 < taikuushageki\ ;
+比較対照 < hikakutaishou\ ;
+市中銀行 < shichuuginkou\ ;
+定点観測 < teitenkansoku\ ;
+促成栽培 < sokuseisaibai\ ;
+両三日 < ryousan''nichi\ ;
+賃金格差 < chinginkakusa\ ;
+支配階級 < shihaikaikyuu\ ;
+二重露出 < nijuuroshutsu\ ;
+動脈硬化 < doumyakukouka\ ;
+隣接部隊 < rinsetsubutai\ ;
+建設機械 < kensetsukikai\ ;
+上層階級 < jousoukaikyuu\ ;
+三拝九拝 < sanpaikyuuhai\ ;
+開校記念日 < kaikoukinenbi\ ;
+不可知論者 < fukachironsha\ ;
+旗行列 < hatagyouretsu\ ;
+特殊法人 < tokushuhoujin\ ;
+士魂商才 < shikonshousai\ ;
+傷病捕虜 < shoubyouhoryo\ ;
+無性生殖 < museiseishoku\ ;
+眉唾物 < mayutsubamono\ ;
+財政政策 < zaiseiseisaku\ ;
+陸上競技 < rikujoukyougi\ ;
+博覧強記 < hakurankyouki\ ;
+人権侵害 < jinkenshingai\ ;
+総領息子 < souryoumusuko\ ;
+進行係 < shinkougakari\ ;
+菜食主義 < saishokushugi\ ;
+無記名債権 < mukimeisaiken\ ;
+赤外発散 < sekigaihassan\ ;
+衛星通信 < eiseitsuushin\ ;
+人員削減 < jin''insakugen\ ;
+動植物 < doushokubutsu\ ;
+率先躬行 < sossenkyuukou\ ;
+免税所得 < menzeishotoku\ ;
+防縮加工 < boushukukakou\ ;
+複式簿記 < fukushikiboki\ ;
+責任分担 < sekininbuntan\ ;
+武力行使 < buryokukoushi\ ;
+番組編成 < bangumihensei\ ;
+全波受信機 < zenpajushinki\ ;
+必要物 < hitsuyoubutsu\ ;
+休息時間 < kyuusokujikan\ ;
+三軸室 < sanjikushitsu\ ;
+二重関節 < nijuukansetsu\ ;
+待合室 < machiaishitsu\ ;
+博物学 < hakubutsugaku\ ;
+観光産業 < kankousangyou\ ;
+結紮術 < kessatsujutsu\ ;
+博引旁証 < hakuinboushou\ ;
+混入物 < kon''nyuubutsu\ ;
+共販会社 < kyouhangaisha\ ;
+揚陸艦艇 < yourikukantei\ ;
+公害対策 < kougaitaisaku\ ;
+陽動作戦 < youdousakusen\ ;
+平和主義者 < heiwashugisha\ ;
+誘拐犯人 < yuukaihan''nin\ ;
+内臓疾患 < naizoushikkan\ ;
+修士論文 < shuushironbun\ ;
+高等教育 < koutoukyouiku\ ;
+測量機械 < sokuryoukikai\ ;
+霊感商法 < reikanshouhou\ ;
+呪物崇拝 < jubutsusuuhai\ ;
+文人墨客 < bunjinbokkaku\ ;
+承知之助 < shouchinosuke\ ;
+越年草本 < etsunensouhon\ ;
+青天井予算 < aotenjouyosan\ ;
+状況意味論 < joukyouimiron\ ;
+通勤列車 < tsuukinressha\ ;
+出席率 < shussekiritsu\ ;
+精進料理 < shoujinryouri\ ;
+主力部隊 < shuryokubutai\ ;
+漢字文化圏 < kanjibunkaken\ ;
+郷土文学 < kyoudobungaku\ ;
+直接税 < chokusetsuzei\ ;
+失業者 < shitsugyousha\ ;
+歯科技工士 < shikagikoushi\ ;
+期末試験 < kimatsushiken\ ;
+連邦首相 < renpoushushou\ ;
+情報工学 < jouhoukougaku\ ;
+牧畜業 < bokuchikugyou\ ;
+七分三分 < shichibusanbu\ ;
+参考資料 < sankoushiryou\ ;
+海上輸送路 < kaijouyusouro\ ;
+独断専行 < dokudansenkou\ ;
+入学考査 < nyuugakukousa\ ;
+遭難信号 < sounanshingou\ ;
+流動資産 < ryuudoushisan\ ;
+構築物 < kouchikubutsu\ ;
+下四半期 < shimoshihanki\ ;
+選択科目 < sentakukamoku\ ;
+設立者 < setsuritsusha\ ;
+情報検索 < jouhoukensaku\ ;
+頂上会談 < choujoukaidan\ ;
+共済組合 < kyousaikumiai\ ;
+参考書目 < sankoushomoku\ ;
+治安警察 < chiankeisatsu\ ;
+興業銀行 < kougyouginkou\ ;
+調停委員会 < chouteiiinkai\ ;
+行政書士 < gyouseishoshi\ ;
+関連項目 < kanrenkoumoku\ ;
+難行苦行 < nangyoukugyou\ ;
+行方不明者 < yukuefumeisha\ ;
+預金通帳 < yokintsuuchou\ ;
+網膜剥離 < moumakuhakuri\ ;
+輸出検査 < yushutsukensa\ ;
+私共 < watakushidomo\ ;
+指定銘柄 < shiteimeigara\ ;
+酒池肉林 < shuchinikurin\ ;
+優等賞状 < yuutoushoujou\ ;
+黄金分割 < ougonbunkatsu\ ;
+修繕工場 < shuuzenkoujou\ ;
+足長蜂 < ashinagabachi\ ;
+二者選一 < nishasen''itsu\ ;
+粘液質 < nen''ekishitsu\ ;
+私事 < watakushigoto\ ;
+菌類学者 < kinruigakusha\ ;
+外国郵便 < gaikokuyuubin\ ;
+交通地獄 < koutsuujigoku\ ;
+集団結婚 < shuudankekkon\ ;
+愛玩動物 < aigandoubutsu\ ;
+間接話法 < kansetsuwahou\ ;
+学生部長 < gakuseibuchou\ ;
+雲形定規 < kumogatajougi\ ;
+個人的意見 < kojintekiiken\ ;
+屋外広告 < okugaikoukoku\ ;
+亡命文学 < boumeibungaku\ ;
+北国赤海老 < hokkokuakaebi\ ;
+連続関数 < renzokukansuu\ ;
+幽霊話 < yuureibanashi\ ;
+筆跡鑑定 < hissekikantei\ ;
+同質的 < doushitsuteki\ ;
+廃物利用 < haibutsuriyou\ ;
+車両会社 < sharyougaisha\ ;
+麻薬常習 < mayakujoushuu\ ;
+不得要領 < futokuyouryou\ ;
+山岳地帯 < sangakuchitai\ ;
+問題領域 < mondairyouiki\ ;
+執着心 < shuuchakushin\ ;
+個別販売 < kobetsuhanbai\ ;
+平衡感覚 < heikoukankaku\ ;
+内国郵便 < naikokuyuubin\ ;
+力関係 < chikarakankei\ ;
+報道番組 < houdoubangumi\ ;
+紙上計画 < shijoukeikaku\ ;
+二重国籍 < nijuukokuseki\ ;
+行政訴訟 < gyouseisoshou\ ;
+絶縁抵抗 < zetsuenteikou\ ;
+匿名批評 < tokumeihihyou\ ;
+長期国債 < choukikokusai\ ;
+光線療法 < kousenryouhou\ ;
+流動資本 < ryuudoushihon\ ;
+証券市場 < shoukenshijou\ ;
+烏芻沙摩妙王 < ususamamyouou\ ;
+建設工事 < kensetsukouji\ ;
+変態性欲 < hentaiseiyoku\ ;
+空中細菌 < kuuchuusaikin\ ;
+代金引換 < daikinhikikae\ ;
+茶番狂言 < chabankyougen\ ;
+交通規則 < koutsuukisoku\ ;
+物質的 < busshitsuteki\ ;
+現物相場 < genbutsusouba\ ;
+束縛理論 < sokubakuriron\ ;
+公正証書 < kouseishousho\ ;
+同盟怠業 < doumeitaigyou\ ;
+行動方針 < koudouhoushin\ ;
+適正価格 < tekiseikakaku\ ;
+人種改良 < jinshukairyou\ ;
+使途不明金 < shitofumeikin\ ;
+半流動体 < hanryuudoutai\ ;
+普仏戦争 < fufutsusensou\ ;
+蒸発熱 < jouhatsunetsu\ ;
+二重結合 < nijuuketsugou\ ;
+免責特権 < mensekitokken\ ;
+懲戒処分 < choukaishobun\ ;
+不心得者 < fukokoroemono\ ;
+豪放磊落 < gouhourairaku\ ;
+艦砲射撃 < kanpoushageki\ ;
+関数解析 < kansuukaiseki\ ;
+民主化運動 < minshukaundou\ ;
+天気相談所 < tenkisoudanjo\ ;
+通信講座 < tsuushinkouza\ ;
+外貨獲得 < gaikakakutoku\ ;
+参加希望者 < sankakibousha\ ;
+懐疑主義者 < kaigishugisha\ ;
+電気溶接 < denkiyousetsu\ ;
+吮癰舐痔 < sen''youshiji\ ;
+労働条件 < roudoujouken\ ;
+外国航路 < gaikokukouro\ ;
+伝送速度 < densousokudo\ ;
+一本調子 < ippondjoushi\ ;
+墜落事故 < tsuirakujiko\ ;
+薩摩閥 < satsumabatsu\ ;
+視聴率 < shichouritsu\ ;
+線香花火 < senkouhanabi\ ;
+東京都政 < toukyoutosei\ ;
+軍事産業 < gunjisangyou\ ;
+代理牧師 < dairibokushi\ ;
+三十三所 < sanjuusansho\ ;
+一次線輪 < ichijisenrin\ ;
+畳水練 < tatamisuiren\ ;
+価格変動 < kakakuhendou\ ;
+悠悠自適 < yuuyuujiteki\ ;
+山紫水明 < sanshisuimei\ ;
+幕僚長 < bakuryouchou\ ;
+空輸貨物 < kuuyukamotsu\ ;
+観光資源 < kankoushigen\ ;
+視覚言語 < shikakugengo\ ;
+麻薬常用 < mayakujouyou\ ;
+日朝辞典 < nitchoujiten\ ;
+店頭債券 < tentousaiken\ ;
+版権所有 < hankenshoyuu\ ;
+一泊行軍 < ippakukougun\ ;
+青空市場 < aozorashijou\ ;
+開票結果 < kaihyoukekka\ ;
+単独講和 < tandokukouwa\ ;
+近代科学 < kindaikagaku\ ;
+無神論者 < mushinronsha\ ;
+市議会議員 < shigikaigiin\ ;
+現実的 < genjitsuteki\ ;
+画一的 < kakuitsuteki\ ;
+有形財産 < yuukeizaisan\ ;
+河岸段丘 < kagandankyuu\ ;
+太陽光線 < taiyoukousen\ ;
+卸酒販 < oroshishuhan\ ;
+億万長者 < okumanchouja\ ;
+化粧石鹸 < keshousekken\ ;
+言語療法 < gengoryouhou\ ;
+安定成長 < anteiseichou\ ;
+神権政治 < shinkenseiji\ ;
+親日家 < shin''nichika\ ;
+至上命令 < shijoumeirei\ ;
+内出血 < naishukketsu\ ;
+中央委員会 < chuuouiinkai\ ;
+潤筆料 < junpitsuryou\ ;
+音楽美学 < ongakubigaku\ ;
+労働大臣 < roudoudaijin\ ;
+田舎侍 < inakazamurai\ ;
+降格人事 < koukakujinji\ ;
+金釘流 < kanakugiryuu\ ;
+窒素肥料 < chissohiryou\ ;
+軍部独裁 < gunbudokusai\ ;
+公務疾病 < koumushippei\ ;
+花火大会 < hanabitaikai\ ;
+創作力 < sousakuryoku\ ;
+即戦力 < sokusenryoku\ ;
+行雲流水 < kouunryuusui\ ;
+反対訊問 < hantaijinmon\ ;
+方向転換 < houkoutenkan\ ;
+無線技術 < musengijutsu\ ;
+艮下艮上 < gonkagonshou\ ;
+括約筋 < katsuyakukin\ ;
+未来完了 < miraikanryou\ ;
+前進部隊 < zenshinbutai\ ;
+既約分数 < kiyakubunsuu\ ;
+説得力 < settokuryoku\ ;
+公営住宅 < koueijuutaku\ ;
+監査報告 < kansahoukoku\ ;
+鐘撞堂 < kanetsukidou\ ;
+月経周期 < gekkeishuuki\ ;
+科学雑誌 < kagakuzasshi\ ;
+通貨統合 < tsuukatougou\ ;
+対地速度 < taichisokudo\ ;
+官僚主義 < kanryoushugi\ ;
+旧形式 < kyuukeishiki\ ;
+黄玉石 < kougyokuseki\ ;
+御調子者 < ochoushimono\ ;
+実験室 < jikkenshitsu\ ;
+二足三文 < nisokusanmon\ ;
+酸性肥料 < sanseihiryou\ ;
+言文一致 < genbun''itchi\ ;
+密漁者 < mitsuryousha\ ;
+共同管理 < kyoudoukanri\ ;
+胃酸過多症 < isankatashou\ ;
+海外旅行 < kaigairyokou\ ;
+不審尋問 < fushinjinmon\ ;
+責任転嫁 < sekinintenka\ ;
+長期手形 < choukitegata\ ;
+潮汐表 < chousekihyou\ ;
+給与水準 < kyuuyosuijun\ ;
+白熱戦 < hakunetsusen\ ;
+従属節 < juuzokusetsu\ ;
+少数精鋭 < shousuuseiei\ ;
+転換社債 < tenkanshasai\ ;
+沿岸漁業 < engangyogyou\ ;
+押切帳 < oshikirichou\ ;
+鉱物学 < koubutsugaku\ ;
+交際社会 < kousaishakai\ ;
+制限事項 < seigenjikoku\ ;
+左心室 < sashinshitsu\ ;
+刑事責任 < keijisekinin\ ;
+混合火薬 < kongoukayaku\ ;
+極彩色 < gokusaishiki\ ;
+双務契約 < soumukeiyaku\ ;
+肝心要 < kanjinkaname\ ;
+古典学者 < kotengakusha\ ;
+生活扶助 < seikatsufujo\ ;
+建築業 < kenchikugyou\ ;
+拒食症 < kyoshokushou\ ;
+用益物権 < youekibukken\ ;
+熱電対 < netsudentsui\ ;
+出勤時間 < shukkinjikan\ ;
+鎖伝動 < kusaridendou\ ;
+拡大率 < kakudairitsu\ ;
+相関係数 < soukankeisuu\ ;
+都忘 < miyakowasure\ ;
+社会保障 < shakaihoshou\ ;
+協同動作 < kyoudoudousa\ ;
+情緒纒綿 < jouchotenmen\ ;
+立憲君主 < rikkenkunshu\ ;
+狂信的 < kyoushinteki\ ;
+表現力 < hyougenryoku\ ;
+中立面 < chuuritsumen\ ;
+旅券査証 < ryokensashou\ ;
+貝殻虫 < kaigaramushi\ ;
+落花狼藉 < rakkarouzeki\ ;
+一番星 < ichibanboshi\ ;
+化学製品 < kagakuseihin\ ;
+適性検査 < tekiseikensa\ ;
+賃借人 < chinshakunin\ ;
+生命科学 < seimeikagaku\ ;
+工作機械 < kousakukikai\ ;
+図書館学 < toshokangaku\ ;
+人口問題 < jinkoumondai\ ;
+御用学者 < goyougakusha\ ;
+気圧配置 < kiatsuhaichi\ ;
+時限爆弾 < jigenbakudan\ ;
+自然対数 < shizentaisuu\ ;
+夜間撮影 < yakansatsuei\ ;
+神経繊維 < shinkeisen''i\ ;
+流動負債 < ryuudoufusai\ ;
+最高記録 < saikoukiroku\ ;
+新規事業 < shinkijigyou\ ;
+姓名判断 < seimeihandan\ ;
+装飾的 < soushokuteki\ ;
+反対給付 < hantaikyuufu\ ;
+澱粉質 < denpunshitsu\ ;
+敗戦投手 < haisentoushu\ ;
+武漢三鎮 < bukansanchin\ ;
+電気陰性度 < denkiinseido\ ;
+一朝一夕 < itchouisseki\ ;
+無記名預金 < mukimeiyokin\ ;
+家内工業 < kanaikougyou\ ;
+千日草 < sen''nichisou\ ;
+浅学菲才 < sengakuhisai\ ;
+混合経済 < kongoukeizai\ ;
+市民団体 < shimindantai\ ;
+企業連合 < kigyourengou\ ;
+時代感覚 < jidaikankaku\ ;
+七五調 < shichigochou\ ;
+利己主義者 < rikoshugisha\ ;
+共同因子 < kyoudouinshi\ ;
+一意専心 < ichiisenshin\ ;
+欧米諸国 < oubeishokoku\ ;
+革命運動 < kakumeiundou\ ;
+純粋培養 < junsuibaiyou\ ;
+再三再四 < saisansaishi\ ;
+中国服 < chuugokufuku\ ;
+形而上学 < keijijougaku\ ;
+地方団体 < chihoudantai\ ;
+公民学校 < koumingakkou\ ;
+価格統制 < kakakutousei\ ;
+意匠登録 < ishoutouroku\ ;
+高天原 < takamagahara\ ;
+受動喫煙 < judoukitsuen\ ;
+製缶工場 < seikankoujou\ ;
+固形燃料 < kokeinenryou\ ;
+郵便為替 < yuubinkawase\ ;
+勘定係 < kanjougakari\ ;
+口頭弁論 < koutoubenron\ ;
+立体化学 < rittaikagaku\ ;
+拘束力 < kousokuryoku\ ;
+品行方正 < hinkouhousei\ ;
+沈澱物 < chindenbutsu\ ;
+道標 < michishirube\ ;
+器質的 < kishitsuteki\ ;
+販売価格 < hanbaikakaku\ ;
+恋愛結婚 < ren''aikekkon\ ;
+北米土人 < hokubeidojin\ ;
+千日紅 < sen''nichikou\ ;
+臨海学校 < rinkaigakkou\ ;
+一語一語 < ichigoichigo\ ;
+国家公務員 < kokkakoumuin\ ;
+半官半民 < hankanhanmin\ ;
+建築学 < kenchikugaku\ ;
+敗血症 < haiketsushou\ ;
+大国主義 < taikokushugi\ ;
+洋服箪笥 < youfukudansu\ ;
+一方通行 < ippoutsuukou\ ;
+参考文献 < sankoubunken\ ;
+信仰箇条 < shinkoukajou\ ;
+辻社 < tsujiyashiro\ ;
+十一月 < juuichigatsu\ ;
+袋戸棚 < fukurotodana\ ;
+拝物教 < haibutsukyou\ ;
+民間資本 < minkanshihon\ ;
+復讐心 < fukushuushin\ ;
+一汁一菜 < ichijuuissai\ ;
+十種競技 < jisshukyougi\ ;
+旧年末 < kyuunenmatsu\ ;
+失職者 < shisshokusha\ ;
+内割引 < uchiwaribiki\ ;
+希土類元素 < kidoruigenso\ ;
+平和共存 < heiwakyouzon\ ;
+単線運転 < tansen''unten\ ;
+事後承諾 < jigoshoudaku\ ;
+出産率 < shussanritsu\ ;
+写実的 < shajitsuteki\ ;
+映像信号 < eizoushingou\ ;
+安全対策 < anzentaisaku\ ;
+生産組合 < seisankumiai\ ;
+接続駅 < setsuzokueki\ ;
+居住水準 < kyojuusuijun\ ;
+製鉄業 < seitetsugyou\ ;
+算用数字 < san''yousuuji\ ;
+出生率 < shusseiritsu\ ;
+姉妹会社 < shimaigaisha\ ;
+選挙公報 < senkyokouhou\ ;
+仏像二座 < butsuzouniza\ ;
+観光旅行 < kankouryokou\ ;
+研究課題 < kenkyuukadai\ ;
+金拾万円 < kinjuuman''en\ ;
+屎尿処理 < shinyoushori\ ;
+着物姿 < kimonosugata\ ;
+商事会社 < shoujigaisha\ ;
+積極策 < sekkyokusaku\ ;
+集合場所 < shuugoubasho\ ;
+形容詞幹 < keiyoushikan\ ;
+条件反射 < joukenhansha\ ;
+小文節 < shoubunsetsu\ ;
+組織力 < soshikiryoku\ ;
+信徒伝動 < shintodendou\ ;
+有料道路 < yuuryoudouro\ ;
+業務妨害 < gyoumubougai\ ;
+阿片中毒 < ahenchuudoku\ ;
+細胞融合 < saibouyuugou\ ;
+断熱材 < dan''netsuzai\ ;
+名人気質 < meijinkatagi\ ;
+郵政大臣 < yuuseidaijin\ ;
+電気掃除機 < denkisoujiki\ ;
+人権擁護 < jinken''yougo\ ;
+兄弟喧嘩 < kyoudaigenka\ ;
+著作物 < chosakubutsu\ ;
+盲滅法 < mekurameppou\ ;
+巡航速度 < junkousokudo\ ;
+一夜大臣 < ichiyadaijin\ ;
+附着力 < fuchakuryoku\ ;
+獅子奮迅 < shishifunjin\ ;
+漂流木 < hyouryuuboku\ ;
+紳士靴 < shinshigutsu\ ;
+閨秀作家 < keishuusakka\ ;
+浚渫船 < shunsetsusen\ ;
+深山烏 < miyamagarasu\ ;
+専門学校 < senmongakkou\ ;
+改革過程 < kaikakukatei\ ;
+緊急措置 < kinkyuusochi\ ;
+画竜天睛 < garyoutensei\ ;
+一進一退 < isshin''ittai\ ;
+生臭物 < namagusamono\ ;
+定常状態 < teijoujoutai\ ;
+審判役 < shinpan''yaku\ ;
+指数関数 < shisuukansuu\ ;
+積極的 < sekkyokuteki\ ;
+試験科目 < shikenkamoku\ ;
+災害救助 < saigaikyuujo\ ;
+発売元 < hatsubaimoto\ ;
+冶金学者 < yakingakusha\ ;
+地方銀行 < chihouginkou\ ;
+仏頂面 < butchoudzura\ ;
+経済発展 < keizaihatten\ ;
+特殊兵器 < tokushuheiki\ ;
+海中公園 < kaichuukouen\ ;
+団体旅行 < dantairyokou\ ;
+三叉神経 < sansashinkei\ ;
+欲求不満 < yokkyuufuman\ ;
+若紫 < wakamurasaki\ ;
+終夜営業 < shuuyaeigyou\ ;
+地下組織 < chikasoshiki\ ;
+耐震家屋 < taishinkaoku\ ;
+正三角形 < seisankakkei\ ;
+走行車線 < soukoushasen\ ;
+空気調整 < kuukichousei\ ;
+運動神経 < undoushinkei\ ;
+受胎告知 < jutaikokuchi\ ;
+取引高 < torihikidaka\ ;
+解答用紙 < kaitouyoushi\ ;
+不所存者 < fushozonmono\ ;
+畳鰯 < tatamiiwashi\ ;
+闖入者 < chin''nyuusha\ ;
+毬栗頭 < igaguriatama\ ;
+建築中 < kenchikuchuu\ ;
+弱小国 < jakushoukoku\ ;
+加工産業 < kakousangyou\ ;
+発売中 < hatsubaichuu\ ;
+規格原案 < kikakugen''an\ ;
+和魂洋才 < wakon''yousai\ ;
+反戦運動 < hansen''undou\ ;
+諸行無常 < shogyoumujou\ ;
+契約期間 < keiyakukikan\ ;
+人文科学 < jinbunkagaku\ ;
+一人一人 < hitoribitori\ ;
+励振素子 < reishinsoshi\ ;
+復讐劇 < fukushuugeki\ ;
+宇宙工学 < uchuukougaku\ ;
+事前日付 < jizenhidzuke\ ;
+自家撞着 < jikadouchaku\ ;
+石灰肥料 < sekkaihiryou\ ;
+公益優先 < kouekiyuusen\ ;
+下仕事 < shitashigoto\ ;
+薔薇十字団 < barajuujidan\ ;
+日豊本線 < nippouhonsen\ ;
+石油化学 < sekiyukagaku\ ;
+消極性 < shoukyokusei\ ;
+相対速度 < soutaisokudo\ ;
+黒字倒産 < kurojitousan\ ;
+金欠病 < kinketsubyou\ ;
+聴視率 < choushiritsu\ ;
+内憂外患 < naiyuugaikan\ ;
+関数空間 < kansuukuukan\ ;
+付属病院 < fuzokubyouin\ ;
+臨床医学 < rinshouigaku\ ;
+米海兵隊 < beikaiheitai\ ;
+深山桜 < miyamazakura\ ;
+拱手傍観 < koushuboukan\ ;
+順法闘争 < junpoutousou\ ;
+質問者 < shitsumonsha\ ;
+戦闘陣地 < sentoujinchi\ ;
+一挙一動 < ikkyoichidou\ ;
+威嚇射撃 < ikakushageki\ ;
+実地試験 < jitchishiken\ ;
+中間景気 < chuukankeiki\ ;
+司教権座 < shikyoukenza\ ;
+空約束 < karayakusoku\ ;
+変更履歴 < henkourireki\ ;
+連戦連敗 < rensenrenpai\ ;
+歯槽膿漏 < shisounourou\ ;
+素粒子論 < soryuushiron\ ;
+衛星中継 < eiseichuukei\ ;
+接続詞 < setsuzokushi\ ;
+圧延工場 < atsuenkoujou\ ;
+分娩臥床 < bunbengashou\ ;
+人造絹糸 < jinzoukenshi\ ;
+痕跡器官 < konsekikikan\ ;
+抹香鯨 < makkoukujira\ ;
+蛍光塗料 < keikoutoryou\ ;
+公判調査 < kouhanchousa\ ;
+連絡会議 < renrakukaigi\ ;
+公教要理 < koukyouyouri\ ;
+花盗人 < hananusubito\ ;
+乾燥室 < kansoushitsu\ ;
+骨董品店 < kottouhinten\ ;
+十二指腸 < juunishichou\ ;
+盲暦 < mekuragoyomi\ ;
+財政問題 < zaiseimondai\ ;
+言語学者 < gengogakusha\ ;
+尿毒症 < nyoudokushou\ ;
+金融機関 < kin''yuukikan\ ;
+田園詩人 < den''enshijin\ ;
+等比級数 < touhikyuusuu\ ;
+腹鼓 < haratsudzumi\ ;
+道化役者 < doukeyakusha\ ;
+癇癪玉 < kanshakudama\ ;
+津津浦浦 < tsudzuuraura\ ;
+乾燥地帯 < kansouchitai\ ;
+音節主音 < onsetsushuon\ ;
+航海日誌 < koukainisshi\ ;
+半封建性 < hanhoukensei\ ;
+恋愛関係 < ren''aikankei\ ;
+成長過程 < seichoukatei\ ;
+連帯保証 < rentaihoshou\ ;
+心臓肥大 < shinzouhidai\ ;
+一人物 < ichijinbutsu\ ;
+協約国 < kyouyakukoku\ ;
+天壌無窮 < tenjoumukyuu\ ;
+全身麻酔 < zenshinmasui\ ;
+末代物 < matsudaimono\ ;
+回線交換 < kaisenkoukan\ ;
+輸入制限 < yunyuuseigen\ ;
+剃刀負 < kamisorimake\ ;
+一足先 < hitoashisaki\ ;
+果物籠 < kudamonokago\ ;
+世間話 < sekenbanashi\ ;
+行楽客 < kourakukyaku\ ;
+構造不況 < kouzoufukyou\ ;
+紋白蝶 < monshirochou\ ;
+入湯客 < nyuutoukyaku\ ;
+自己共役 < jikokyouyaku\ ;
+富士火山帯 < fujikazantai\ ;
+闇取引 < yamitorihiki\ ;
+構成分子 < kouseibunshi\ ;
+星座投影機 < seizatoueiki\ ;
+市場展開 < shijoutenkai\ ;
+店頭販売 < tentouhanbai\ ;
+進水式 < shinsuishiki\ ;
+仮払金 < karibaraikin\ ;
+紙屑籠 < kamikuzukago\ ;
+乾燥卵 < kansoutamago\ ;
+合唱隊員 < gasshoutaiin\ ;
+経費削減 < keihisakugen\ ;
+文芸復興 < bungeifukkou\ ;
+環太平洋 < kantaiheiyou\ ;
+名義書換 < meigikakikae\ ;
+緑内障 < ryokunaishou\ ;
+重大問題 < juudaimondai\ ;
+非科学的 < hikagakuteki\ ;
+限定戦争 < genteisensou\ ;
+極楽鳥 < gokurakuchou\ ;
+欧州委員会 < oushuuiinkai\ ;
+不在証明 < fuzaishoumei\ ;
+賃貸借 < chintaishaku\ ;
+医学博士 < igakuhakushi\ ;
+案内書呈 < an''naishotei\ ;
+専制君主 < senseikunshu\ ;
+勤務実績 < kinmujisseki\ ;
+機密事項 < kimitsujikou\ ;
+早期診断 < soukishindan\ ;
+告発者 < kokuhatsusha\ ;
+停止価格 < teishikakaku\ ;
+記憶容量 < kiokuyouryou\ ;
+出生過剰 < shusseikajou\ ;
+引退興行 < intaikougyou\ ;
+三味線弾 < shamisenhiki\ ;
+試験段階 < shikendankai\ ;
+白血病 < hakketsubyou\ ;
+軍事介入 < gunjikainyuu\ ;
+政治道徳 < seijidoutoku\ ;
+国営企業 < kokueikigyou\ ;
+帰巣本能 < kisouhon''nou\ ;
+両性具有 < ryouseiguyuu\ ;
+黄金万能 < ougonban''nou\ ;
+真珠質 < shinjushitsu\ ;
+担当課長 < tantoukachou\ ;
+混成競技 < konseikyougi\ ;
+労働攻勢 < roudoukousei\ ;
+片山里 < katayamazato\ ;
+独立祭 < dokuritsusai\ ;
+閑話休題 < kanwakyuudai\ ;
+内懐 < uchibutokoro\ ;
+予約係 < yoyakugakari\ ;
+役務賠償 < ekimubaishou\ ;
+平和産業 < heiwasangyou\ ;
+印象批評 < inshouhihyou\ ;
+停滞前線 < teitaizensen\ ;
+民間放送 < minkanhousou\ ;
+属地主義 < zokuchishugi\ ;
+上位互換性 < jouigokansei\ ;
+出版部数 < shuppanbusuu\ ;
+自動人形 < jidouningyou\ ;
+意志薄弱 < ishihakujaku\ ;
+心理戦争 < shinrisensou\ ;
+課税所得 < kazeishotoku\ ;
+流行作家 < ryuukousakka\ ;
+根気仕事 < konkishigoto\ ;
+黄緑色 < ouryokushoku\ ;
+軽犯罪法 < keihanzaihou\ ;
+揣摩憶測 < shimaokusoku\ ;
+改修工事 < kaishuukouji\ ;
+対抗意識 < taikouishiki\ ;
+前進力 < zenshinryoku\ ;
+道路交通 < dourokoutsuu\ ;
+法廷侮辱 < houteibujoku\ ;
+光学機械 < kougakukikai\ ;
+脱字記号 < datsujikigou\ ;
+確率論 < kakuritsuron\ ;
+独立班 < dokuritsuhan\ ;
+公有水面 < kouyuusuimen\ ;
+等圧式 < touatsushiki\ ;
+陰性反応 < inseihan''nou\ ;
+素人筋 < shiroutosuji\ ;
+美人局 < tsutsumotase\ ;
+借地料 < shakuchiryou\ ;
+黄熱病 < kounetsubyou\ ;
+均衡経済 < kinkoukeizai\ ;
+投票率 < touhyouritsu\ ;
+鰻丼 < unagidonburi\ ;
+蘭栽培法 < ransaibaihou\ ;
+武装集団 < busoushuudan\ ;
+脅迫的 < kyouhakuteki\ ;
+印鑑証明 < inkanshoumei\ ;
+域内貿易 < ikinaiboueki\ ;
+使徒行伝 < shitogyouden\ ;
+佳人薄命 < kajinhakumei\ ;
+放射線科医 < houshasenkai\ ;
+有体資産 < yuutaishisan\ ;
+対泰関係 < taitaikankei\ ;
+欧州連合 < oushuurengou\ ;
+女子学生 < joshigakusei\ ;
+団結心 < danketsushin\ ;
+単純平均 < tanjunheikin\ ;
+質問書 < shitsumonsho\ ;
+再度確認 < saidokakunin\ ;
+鬼面伝心 < kimendenshin\ ;
+貿易黒字 < bouekikuroji\ ;
+組合員証 < kumiaiinshou\ ;
+熟柿主義 < jukushishugi\ ;
+中立性 < chuuritsusei\ ;
+冷房装置 < reibousouchi\ ;
+現地生産 < genchiseisan\ ;
+新聞記者 < shinbunkisha\ ;
+告発状 < kokuhatsujou\ ;
+大山鳴動 < taizanmeidou\ ;
+波状攻撃 < hajoukougeki\ ;
+単記投票 < tankitouhyou\ ;
+一次関数 < ichijikansuu\ ;
+幼形進化 < youkeishinka\ ;
+反復説 < hanpukusetsu\ ;
+印刷術 < insatsujutsu\ ;
+能力給 < nouryokukyuu\ ;
+青物市場 < aomonoichiba\ ;
+学生運動 < gakuseiundou\ ;
+報復措置 < houfukusochi\ ;
+回復可能 < kaifukukanou\ ;
+正角定木 < seikakujougi\ ;
+歴史地理 < rekishichiri\ ;
+練習曲 < renshuukyoku\ ;
+年中無休 < nenjuumukyuu\ ;
+代数的和 < daisuutekiwa\ ;
+超能力 < chounouryoku\ ;
+左右相称 < sayuusoushou\ ;
+核分裂 < kakubunretsu\ ;
+帝国主義 < teikokushugi\ ;
+西洋松露 < seiyoushouro\ ;
+回転勘定 < kaitenkanjou\ ;
+依託射撃 < itakushageki\ ;
+正規表現 < seikihyougen\ ;
+独立権 < dokuritsuken\ ;
+総領事館 < souryoujikan\ ;
+待宵草 < matsuyoigusa\ ;
+一人娘 < hitorimusume\ ;
+盗難防止 < tounanboushi\ ;
+滅私奉公 < messhihoukou\ ;
+国税局 < kokuzeikyoku\ ;
+総合科学 < sougoukagaku\ ;
+拘束時間 < kousokujikan\ ;
+四方八方 < shihouhappou\ ;
+主要諸元 < shuyoushogen\ ;
+十分条件 < juubunjouken\ ;
+時代思潮 < jidaishichou\ ;
+代理投票 < dairitouhyou\ ;
+古典音楽 < koten''ongaku\ ;
+銀行強盗 < ginkougoutou\ ;
+一面識 < ichimenshiki\ ;
+出願者 < shutsugansha\ ;
+起爆装置 < kibakusouchi\ ;
+逮捕許諾 < taihokyodaku\ ;
+躾方 < shitsukekata\ ;
+歯牙疾患 < shigashikkan\ ;
+勿忘草 < wasurenagusa\ ;
+強綿薬 < kyoumen''yaku\ ;
+共同祖界 < kyoudousokai\ ;
+油断大敵 < yudantaiteki\ ;
+僻心 < higamigokoro\ ;
+専業農家 < sengyounouka\ ;
+熱可塑性 < netsukasosei\ ;
+梶木鮪 < kajikimaguro\ ;
+市有財産 < shiyuuzaisan\ ;
+国家賠償 < kokkabaishou\ ;
+失明者 < shitsumeisha\ ;
+静態総計 < seitaisoukei\ ;
+専門雑誌 < senmonzasshi\ ;
+弾丸列車 < danganressha\ ;
+女道楽 < on''nadouraku\ ;
+大正時代 < taishoujidai\ ;
+設計変更 < sekkeihenkou\ ;
+了解事項 < ryoukaijikou\ ;
+実験段階 < jikkendankai\ ;
+成長率 < seichouritsu\ ;
+確実性 < kakujitsusei\ ;
+官僚政治 < kanryouseiji\ ;
+人種問題 < jinshumondai\ ;
+演習問題 < enshuumondai\ ;
+労働組合 < roudoukumiai\ ;
+火炎放射器 < kaenhoushaki\ ;
+合同委員会 < goudouiinkai\ ;
+醇風美俗 < junpuubizoku\ ;
+椿油 < tsubakiabura\ ;
+黒装束 < kuroshouzoku\ ;
+柏餅 < kashiwamochi\ ;
+造反有理 < zouhan''yuuri\ ;
+消費性向 < shouhiseikou\ ;
+御用新聞 < goyoushinbun\ ;
+公定価格 < kouteikakaku\ ;
+堆積作用 < taisekisayou\ ;
+攻守同盟 < koushudoumei\ ;
+工科大学 < koukadaigaku\ ;
+社公連合 < shakourengou\ ;
+軍事教練 < gunjikyouren\ ;
+平和条約 < heiwajouyaku\ ;
+無資格者 < mushikakusha\ ;
+熱拡散 < netsukakusan\ ;
+相殺関税 < sousaikanzei\ ;
+即時停戦 < sokujiteisen\ ;
+柄頭 < tsukagashira\ ;
+測地衛星 < sokuchieisei\ ;
+空中浮遊 < kuuchuufuyuu\ ;
+忠臣蔵 < chuushingura\ ;
+動物学 < doubutsugaku\ ;
+一枚下 < ichimaishita\ ;
+信用詐欺 < shin''yousagi\ ;
+至東京 < itarutoukyou\ ;
+独立性 < dokuritsusei\ ;
+明眸皓歯 < meiboukoushi\ ;
+上等兵曹 < joutouheisou\ ;
+金利政策 < kinriseisaku\ ;
+草根木皮 < soukonmokuhi\ ;
+雨後雪 < amenochiyuki\ ;
+労働災害 < roudousaigai\ ;
+推定年齢 < suiteinenrei\ ;
+遺産管理人 < isankanrinin\ ;
+貿易依存度 < bouekiizondo\ ;
+日本文学 < nihonbungaku\ ;
+八目鰻 < yatsumeunagi\ ;
+実験科学 < jikkenkagaku\ ;
+労働委員会 < roudouiinkai\ ;
+天狗話 < tengubanashi\ ;
+案内係 < an''naigakari\ ;
+危険信号 < kikenshingou\ ;
+流行色 < ryuukoushoku\ ;
+鍾乳石 < shounyuuseki\ ;
+西欧諸国 < seioushokoku\ ;
+接続性 < setsuzokusei\ ;
+夜間営業 < yakan''eigyou\ ;
+模型飛行機 < mokeihikouki\ ;
+真実性 < shinjitsusei\ ;
+使徒承伝 < shitoshouden\ ;
+国家主席 < kokkashuseki\ ;
+雪見灯籠 < yukimidourou\ ;
+主席判事 < shusekihanji\ ;
+骨肉腫 < kotsunikushu\ ;
+犬畜生 < inuchikushou\ ;
+官製葉書 < kanseihagaki\ ;
+伝記文学 < denkibungaku\ ;
+制動放射 < seidouhousha\ ;
+領収証 < ryoushuushou\ ;
+法律行為 < houritsukoui\ ;
+共産国家 < kyousankokka\ ;
+教育機関 < kyouikukikan\ ;
+非常信号 < hijoushingou\ ;
+雪見障子 < yukimishouji\ ;
+機構改革 < kikoukaikaku\ ;
+昼光色 < chuukoushoku\ ;
+御玉杓子 < otamajakushi\ ;
+最終結果 < saishuukekka\ ;
+特恵関税 < tokkeikanzei\ ;
+地震予知 < jishin''yochi\ ;
+共同募金 < kyoudoubokin\ ;
+事務当局 < jimutoukyoku\ ;
+三号雑誌 < sangouzasshi\ ;
+漏洩電流 < roueidenryuu\ ;
+宣戦布告 < sensenfukoku\ ;
+共産地区 < kyousanchiku\ ;
+代用教員 < daiyoukyouin\ ;
+北極熊 < hokkyokuguma\ ;
+三角定規 < sankakujougi\ ;
+西洋将棋 < seiyoushougi\ ;
+信号無視 < shingoumushi\ ;
+土地改革 < tochikaikaku\ ;
+瀬戸物市 < setomonoichi\ ;
+司令室 < shireishitsu\ ;
+安倍川餅 < abekawamochi\ ;
+東欧諸国 < tououshokoku\ ;
+跡目相続 < atomesouzoku\ ;
+人工呼吸 < jinkoukokyuu\ ;
+俄盲 < niwakamekura\ ;
+航空郵便 < koukuuyuubin\ ;
+並行輸入 < heikouyunyuu\ ;
+経済格差 < keizaikakusa\ ;
+社会資本 < shakaishihon\ ;
+外交特権 < gaikoutokken\ ;
+印刷物 < insatsubutsu\ ;
+業務提携 < gyoumuteikei\ ;
+潜在意識 < senzaiishiki\ ;
+抽象的 < chuushouteki\ ;
+制御装置 < seigyosouchi\ ;
+白拍子 < shirabyoushi\ ;
+提出者 < teishutsusha\ ;
+所所方方 < shoshohoubou\ ;
+耐圧力 < taiatsuryoku\ ;
+凸面鏡 < totsumenkyou\ ;
+高血圧 < kouketsuatsu\ ;
+柱時計 < hashiradokei\ ;
+固体燃料 < kotainenryou\ ;
+傘歯車 < kasahaguruma\ ;
+鼻元思案 < hanamotojian\ ;
+右折禁止 < usetsukinshi\ ;
+軍国色 < gunkokushoku\ ;
+八郎潟 < hachirougata\ ;
+千思万考 < senshibankou\ ;
+依願退職 < igantaishoku\ ;
+三部合唱 < sanbugasshou\ ;
+言語中枢 < gengochuusuu\ ;
+現代文明 < gendaibunmei\ ;
+養護学級 < yougogakkyuu\ ;
+宿命的 < shukumeiteki\ ;
+回転運動 < kaiten''undou\ ;
+運輸業者 < un''yugyousha\ ;
+中心角 < chuushinkaku\ ;
+長須鯨 < nagasukujira\ ;
+石油公団 < sekiyukoudan\ ;
+局部麻酔 < kyokubumasui\ ;
+義太夫節 < gidayuubushi\ ;
+金属加工 < kinzokukakou\ ;
+悪性腫瘍 < akuseishuyou\ ;
+修了証 < shuuryoushou\ ;
+馬鹿正直 < bakashoujiki\ ;
+合弁会社 < goubengaisha\ ;
+段々畠 < dandanbatake\ ;
+公益事業 < kouekijigyou\ ;
+信号電波 < shingoudenpa\ ;
+多肉質 < tanikushitsu\ ;
+進入灯 < shin''nyuutou\ ;
+集約的 < shuuyakuteki\ ;
+兵六玉 < hyourokudama\ ;
+摩擦熱 < masatsunetsu\ ;
+内輪同志 < uchiwadoushi\ ;
+社会事業 < shakaijigyou\ ;
+技術力 < gijutsuryoku\ ;
+零細企業 < reisaikigyou\ ;
+仮溶接 < kariyousetsu\ ;
+国定公園 < kokuteikouen\ ;
+応力径路 < ouryokukeiro\ ;
+下位範疇化 < kaihanchuuka\ ;
+控訴棄却 < kousokikyaku\ ;
+通勤定期 < tsuukinteiki\ ;
+高品質 < kouhinshitsu\ ;
+歴史地図 < rekishichizu\ ;
+電子郵便 < denshiyuubin\ ;
+晒木綿 < sarashimomen\ ;
+伸縮法 < shinshukuhou\ ;
+人工知能 < jinkouchinou\ ;
+空中投下 < kuuchuutouka\ ;
+楽天主義 < rakutenshugi\ ;
+六連発 < rokurenpatsu\ ;
+海外投資 < kaigaitoushi\ ;
+併発症 < heihatsushou\ ;
+暗証番号 < anshoubangou\ ;
+欠乏症 < ketsuboushou\ ;
+枕詞 < makurakotoba\ ;
+関節技 < kansetsuwaza\ ;
+沈没船 < chinbotsusen\ ;
+候所 < souroutokoro\ ;
+容積率 < yousekiritsu\ ;
+桂男 < katsuraotoko\ ;
+主力株 < shuryokukabu\ ;
+年齢制限 < nenreiseigen\ ;
+価格戦争 < kakakusensou\ ;
+高速度鋼 < kousokudokou\ ;
+山懐 < yamafutokoro\ ;
+乾湿計 < kanshitsukei\ ;
+非営利団体 < hieiridantai\ ;
+火力支援 < karyokushien\ ;
+高速道路 < kousokudouro\ ;
+使用禁止 < shiyoukinshi\ ;
+冠婚葬祭 < kankonsousai\ ;
+水平尾翼 < suiheibiyoku\ ;
+丼飯 < donburimeshi\ ;
+決議機関 < ketsugikikan\ ;
+九星術 < kyuuseijutsu\ ;
+口八丁 < kuchihatchou\ ;
+連鎖反応 < rensahan''nou\ ;
+市民社会 < shiminshakai\ ;
+検察庁 < kensatsuchou\ ;
+表表紙 < omotebyoushi\ ;
+部分集合 < bubunshuugou\ ;
+四捨五入 < shishagonyuu\ ;
+受託会社 < jutakugaisha\ ;
+問題意識 < mondaiishiki\ ;
+金融公庫 < kin''yuukouko\ ;
+直取引 < jikitorihiki\ ;
+友達甲斐 < tomodachigai\ ;
+大学卒 < daigakusotsu\ ;
+一般教養 < ippankyouyou\ ;
+失語症 < shitsugoshou\ ;
+降雪量 < kousetsuryou\ ;
+安定恐慌 < anteikyoukou\ ;
+水素化物 < suisokabutsu\ ;
+環境変化 < kankyouhenka\ ;
+体格検査 < taikakukensa\ ;
+漁師町 < ryoushimachi\ ;
+化学合成 < kagakugousei\ ;
+平平凡凡 < heiheibonbon\ ;
+市場価格 < shijoukakaku\ ;
+物見櫓 < monomiyagura\ ;
+善隣関係 < zenrinkankei\ ;
+合成洗剤 < gouseisenzai\ ;
+観念主義 < kan''nenshugi\ ;
+通勤時間 < tsuukinjikan\ ;
+経済体制 < keizaitaisei\ ;
+住所氏名 < juushoshimei\ ;
+疾風怒濤 < shippuudotou\ ;
+医療材料 < iryouzairyou\ ;
+有機農業 < yuukinougyou\ ;
+妨害放送 < bougaihousou\ ;
+金属元素 < kinzokugenso\ ;
+取次店 < toritsugiten\ ;
+歯内療法 < shikaryouhou\ ;
+悪戯小僧 < itazurakozou\ ;
+全権大使 < zenkentaishi\ ;
+危急存亡 < kikyuusonbou\ ;
+宇宙中継 < uchuuchuukei\ ;
+非人間的 < hiningenteki\ ;
+受信装置 < jushinsouchi\ ;
+数値計算 < suuchikeisan\ ;
+片言隻語 < hengensekigo\ ;
+懐中時計 < kaichuudokei\ ;
+朧月夜 < oborodzukiyo\ ;
+競輪選手 < keirinsenshu\ ;
+享楽的 < kyourakuteki\ ;
+暗号解読 < angoukaidoku\ ;
+反動思想 < handoushisou\ ;
+実証主義 < jisshoushugi\ ;
+標準偏差 < hyoujunhensa\ ;
+資源問題 < shigenmondai\ ;
+運送業者 < unsougyousha\ ;
+行動地帯 < koudouchitai\ ;
+水力学 < suiryokugaku\ ;
+平等主義 < byoudoushugi\ ;
+取引先 < torihikisaki\ ;
+交代投手 < koutaitoushu\ ;
+丼鉢 < donburibachi\ ;
+入力線 < nyuuryokusen\ ;
+低血圧 < teiketsuatsu\ ;
+国家独占 < kokkadokusen\ ;
+土地改良 < tochikairyou\ ;
+環境基準 < kankyoukijun\ ;
+外交文書 < gaikoubunsho\ ;
+軽挙妄動 < keikyomoudou\ ;
+防虫加工 < bouchuukakou\ ;
+不在投票 < fuzaitouhyou\ ;
+伸縮性 < shinshukusei\ ;
+律令制 < ritsuryousei\ ;
+嫌煙運動 < ken''en''undou\ ;
+封緘葉書 < fuukanhagaki\ ;
+形式的 < keishikiteki\ ;
+泰然自若 < taizenjijaku\ ;
+敗北主義 < haibokushugi\ ;
+価格性能 < kakakuseinou\ ;
+書類送検 < shoruisouken\ ;
+人権問題 < jinkenmondai\ ;
+仲立人 < nakadachinin\ ;
+昇降口 < shoukouguchi\ ;
+一死報国 < isshihoukoku\ ;
+記録係 < kirokugakari\ ;
+工作物 < kousakubutsu\ ;
+練馬大根 < nerimadaikon\ ;
+一糸一毫 < isshiichigou\ ;
+特殊事情 < tokushujijou\ ;
+正直者 < shoujikimono\ ;
+老少不定 < roushoufutei\ ;
+中心的 < chuushinteki\ ;
+自習室 < jishuushitsu\ ;
+今明日 < konmyounichi\ ;
+相乗平均 < soujouheikin\ ;
+万年候補 < man''nenkouho\ ;
+安全教育 < anzenkyouiku\ ;
+無賃乗車 < muchinjousha\ ;
+片務契約 < henmukeiyaku\ ;
+一般大衆 < ippantaishuu\ ;
+古典文学 < kotenbungaku\ ;
+高校野球 < koukouyakyuu\ ;
+間接的 < kansetsuteki\ ;
+中華料理 < chuukaryouri\ ;
+出版物 < shuppanbutsu\ ;
+健康状態 < kenkoujoutai\ ;
+核軍縮 < kakugunshuku\ ;
+鹿児島県 < kagoshimaken\ ;
+準備状況 < junbijoukyou\ ;
+選外佳作 < sengaikasaku\ ;
+言語教育 < gengokyouiku\ ;
+同文同種 < doubundoushu\ ;
+給与体系 < kyuuyotaikei\ ;
+麻薬犯罪 < mayakuhanzai\ ;
+朝令暮改 < choureibokai\ ;
+一見識 < ichikenshiki\ ;
+攻撃力 < kougekiryoku\ ;
+互恵条約 < gokeijouyaku\ ;
+一国一票 < ikkokuippyou\ ;
+砲艦外交 < houkangaikou\ ;
+整髪料 < seihatsuryou\ ;
+流行言葉 < hayarikotoba\ ;
+交通機関 < koutsuukikan\ ;
+水銀電池 < suigindenchi\ ;
+倒事 < sakasamagoto\ ;
+追善供養 < tsuizenkuyou\ ;
+他力本願 < tarikihongan\ ;
+符号解読 < fugoukaidoku\ ;
+知能指数 < chinoushisuu\ ;
+亜熱帯気候 < anettaikikou\ ;
+当営業所 < toueigyousho\ ;
+職員会議 < shokuinkaigi\ ;
+言語特有 < gengotokuyuu\ ;
+最小限度 < saishougendo\ ;
+染井吉野 < someiyoshino\ ;
+完全犯罪 < kanzenhanzai\ ;
+暁闇 < akatsukiyami\ ;
+教育制度 < kyouikuseido\ ;
+戦国時代 < sengokujidai\ ;
+前駆症状 < zenkushoujou\ ;
+七面倒 < shichimendou\ ;
+耐湿性 < taishitsusei\ ;
+紫綬褒賞 < shijuhoushou\ ;
+一言半句 < ichigonhanku\ ;
+不法占有 < fuhousen''yuu\ ;
+仏文学 < futsubungaku\ ;
+家庭環境 < kateikankyou\ ;
+畑水練 < hatakesuiren\ ;
+勅撰集 < chokusenshuu\ ;
+七面体 < shichimentai\ ;
+舞台監督 < butaikantoku\ ;
+合成皮革 < gouseihikaku\ ;
+在宅勤務 < zaitakukinmu\ ;
+無政府主義 < museifushugi\ ;
+不在地主 < fuzaijinushi\ ;
+一宿一飯 < isshukuippan\ ;
+老人病院 < roujinbyouin\ ;
+片肺飛行 < katahaihikou\ ;
+対潜水艦 < taisensuikan\ ;
+警戒警報 < keikaikeihou\ ;
+効率的 < kouritsuteki\ ;
+累積赤字 < ruisekiakaji\ ;
+家族構成 < kazokukousei\ ;
+内柔外剛 < naijuugaigou\ ;
+属人主義 < zokujinshugi\ ;
+熱量計 < netsuryoukei\ ;
+硬軟両派 < kounanryouha\ ;
+座席番号 < zasekibangou\ ;
+空中浮揚 < kuuchuufuyou\ ;
+丁稚奉公 < detchiboukou\ ;
+一方交通 < ippoukoutsuu\ ;
+三日月形 < mikadzukikei\ ;
+移動図書館 < idoutoshokan\ ;
+検事総長 < kenjisouchou\ ;
+注釈者 < chuushakusha\ ;
+狭心症 < kyoushinshou\ ;
+新規投資 < shinkitoushi\ ;
+単語検索 < tangokensaku\ ;
+弥猛心 < yatakegokoro\ ;
+隠匿物資 < intokubusshi\ ;
+女人禁制 < nyoninkinsei\ ;
+大修道院 < daishuudouin\ ;
+森林公園 < shinrinkouen\ ;
+総花式 < soubanashiki\ ;
+協商国 < kyoushoukoku\ ;
+受験資格 < jukenshikaku\ ;
+七絃琴 < shichigenkin\ ;
+大和言葉 < yamatokotoba\ ;
+儀式主義 < gishikishugi\ ;
+造山運動 < zouzan''undou\ ;
+一般教育 < ippankyouiku\ ;
+爆裂弾 < bakuretsudan\ ;
+立体音響 < rittaionkyou\ ;
+宗教心 < shuukyoushin\ ;
+特集記事 < tokushuukiji\ ;
+付帯決議 < futaiketsugi\ ;
+製紙工場 < seishikoujou\ ;
+公共物 < koukyoubutsu\ ;
+救急箱 < kyuukyuubako\ ;
+救援投手 < kyuuentoushu\ ;
+財団法人 < zaidanhoujin\ ;
+民俗舞踊 < minzokubuyou\ ;
+戦争犯罪 < sensouhanzai\ ;
+難燃加工 < nan''nenkakou\ ;
+南船北馬 < nansenhokuba\ ;
+機能障害 < kinoushougai\ ;
+実行委員会 < jikkouiinkai\ ;
+狂詩曲 < kyoushikyoku\ ;
+日本国民 < nihonkokumin\ ;
+俄分限 < niwakabungen\ ;
+舞踏教師 < butoukyoushi\ ;
+林間学校 < rinkangakkou\ ;
+松毬 < matsupokkuri\ ;
+花魁道中 < oirandouchuu\ ;
+滑降競技 < kakkoukyougi\ ;
+在外公館 < zaigaikoukan\ ;
+宗教学 < shuukyougaku\ ;
+頭虱 < atamashirami\ ;
+一日中 < ichinichijuu\ ;
+地方選挙 < chihousenkyo\ ;
+求職者 < kyuushokusha\ ;
+畜殺場 < chikusatsuba\ ;
+合成化学 < gouseikagaku\ ;
+私製葉書 < shiseihagaki\ ;
+学年末 < gakunenmatsu\ ;
+不定積分 < futeisekibun\ ;
+正々堂々 < seiseidoudou\ ;
+半信半疑 < hanshinhangi\ ;
+穀象虫 < kokuzoumushi\ ;
+輸入超過 < yunyuuchouka\ ;
+無響室 < mukyoushitsu\ ;
+筍医者 < takenokoisha\ ;
+四元速度 < shigensokudo\ ;
+付属学校 < fuzokugakkou\ ;
+人工真珠 < jinkoushinju\ ;
+潛心力 < senshinryoku\ ;
+興行主 < kougyounushi\ ;
+人権団体 < jinkendantai\ ;
+本文批評 < honmonhihyou\ ;
+乾地農法 < kanchinouhou\ ;
+喧喧囂囂 < kenkengougou\ ;
+松林 < matsubayashi\ ;
+人定尋問 < jinteijinmon\ ;
+任期満了 < ninkimanryou\ ;
+競馬新聞 < keibashinbun\ ;
+修飾子 < shuushokushi\ ;
+収益率 < shuuekiritsu\ ;
+祝儀袋 < shuugibukuro\ ;
+電気工学 < denkikougaku\ ;
+婚姻届 < kon''intodoke\ ;
+供給過多 < kyoukyuukata\ ;
+口頭審理 < koutoushinri\ ;
+障害物 < shougaibutsu\ ;
+平和教育 < heiwakyouiku\ ;
+黒銹病 < kurosabibyou\ ;
+人物評 < jinbutsuhyou\ ;
+総合病院 < sougoubyouin\ ;
+上層気流 < jousoukiryuu\ ;
+老齢年金 < roureinenkin\ ;
+雑所得 < zatsushotoku\ ;
+剥製術 < hakuseijutsu\ ;
+演奏練習 < ensourenshuu\ ;
+独占欲 < dokusen''yoku\ ;
+仕掛地雷 < shikakejirai\ ;
+束柱 < tsukabashira\ ;
+回転資金 < kaitenshikin\ ;
+絶望的 < zetsubouteki\ ;
+暗中模索 < anchuumosaku\ ;
+天然色 < ten''nenshoku\ ;
+唯我独尊 < yuigadokuson\ ;
+集散主義 < shuusanshugi\ ;
+土産物屋 < miyagemonoya\ ;
+自給自足 < jikyuujisoku\ ;
+脂肪質 < shiboushitsu\ ;
+宗教劇 < shuukyougeki\ ;
+和平協定 < waheikyoutei\ ;
+仏心 < hotokegokoro\ ;
+出場者 < shutsujousha\ ;
+地方分権 < chihoubunken\ ;
+乾漆像 < kanshitsuzou\ ;
+市内観光 < shinaikankou\ ;
+放射能雨 < houshanouame\ ;
+内罰的 < naibatsuteki\ ;
+七角形 < shichikakkei\ ;
+諜報機関 < chouhoukikan\ ;
+即興曲 < sokkyoukyoku\ ;
+就学義務 < shuugakugimu\ ;
+航空優勢 < koukuuyuusei\ ;
+人才登用 < jinzaitouyou\ ;
+散発的 < sanpatsuteki\ ;
+複本位制 < fukuhon''isei\ ;
+生活保護 < seikatsuhogo\ ;
+集中豪雨 < shuuchuugouu\ ;
+徴兵免除 < chouheimenjo\ ;
+公害問題 < kougaimondai\ ;
+単身赴任 < tanshinfunin\ ;
+広口瓶 < hirokuchibin\ ;
+差別用語 < sabetsuyougo\ ;
+人口動態 < jinkoudoutai\ ;
+宇宙物理 < uchuubutsuri\ ;
+全面戦争 < zenmensensou\ ;
+経済状態 < keizaijoutai\ ;
+委託研究 < itakukenkyuu\ ;
+千辛万苦 < senshinbanku\ ;
+医療報酬 < iryouhoushuu\ ;
+水晶時計 < suishoudokei\ ;
+三文文士 < sanmonbunshi\ ;
+回転木馬 < kaitenmokuba\ ;
+不戦条約 < fusenjouyaku\ ;
+一生懸命 < isshoukenmei\ ;
+圧縮率 < asshukuritsu\ ;
+日進月歩 < nisshingeppo\ ;
+受託販売 < jutakuhanbai\ ;
+文化勲章 < bunkakunshou\ ;
+悠悠閑閑 < yuuyuukankan\ ;
+仏英辞典 < futsueijiten\ ;
+宿泊人 < shukuhakunin\ ;
+留守番電話 < rusubandenwa\ ;
+衛生工学 < eiseikougaku\ ;
+政見放送 < seikenhousou\ ;
+水性塗料 < suiseitoryou\ ;
+猩紅熱 < shoukounetsu\ ;
+先進兵器 < senshinheiki\ ;
+自己中心 < jikochuushin\ ;
+協力鋼 < kyouryokukou\ ;
+同和教育 < douwakyouiku\ ;
+学齢児童 < gakureijidou\ ;
+聖地巡礼 < seichijunrei\ ;
+社団法人 < shadanhoujin\ ;
+所番地 < tokorobanchi\ ;
+注釈書 < chuushakusho\ ;
+貨物輸送 < kamotsuyusou\ ;
+特徴量 < tokuchouryou\ ;
+正多角形 < seitakakukei\ ;
+懐工合 < futokoroguai\ ;
+電気容量 < denkiyouryou\ ;
+準禁治産 < junkinchisan\ ;
+描写力 < byousharyoku\ ;
+化学構造 < kagakukouzou\ ;
+生物学 < seibutsugaku\ ;
+一党独裁 < ittoudokusai\ ;
+無限小数 < mugenshousuu\ ;
+渾然一体 < konzen''ittai\ ;
+海底地震 < kaiteijishin\ ;
+博士課程 < hakushikatei\ ;
+平均寿命 < heikinjumyou\ ;
+市民運動 < shimin''undou\ ;
+記念出版 < kinenshuppan\ ;
+装置制御 < souchiseigyo\ ;
+原裁判所 < gensaibansho\ ;
+検討委員会 < kentouiinkai\ ;
+厚生大臣 < kouseidaijin\ ;
+油脂工業 < yushikougyou\ ;
+総支配人 < soushihainin\ ;
+読書力 < dokushoryoku\ ;
+日照時間 < nisshoujikan\ ;
+一般教書 < ippankyousho\ ;
+一部始終 < ichibushijuu\ ;
+関数原型 < kansuugenkei\ ;
+知識欲 < chishikiyoku\ ;
+三重宝冠 < sanjuuhoukan\ ;
+全速力 < zensokuryoku\ ;
+歓送迎会 < kansougeikai\ ;
+緊急避難 < kinkyuuhinan\ ;
+刹那主義 < setsunashugi\ ;
+工業地区 < kougyouchiku\ ;
+我楽多市 < garakutaichi\ ;
+衆議院議員 < shuugiingiin\ ;
+転写捺染 < tenshanassen\ ;
+自然災害 < shizensaigai\ ;
+深紅色 < shinkoushoku\ ;
+天井棧敷 < tenjousajiki\ ;
+先行条件 < senkoujouken\ ;
+月下氷人 < gekkahyoujin\ ;
+未年 < hitsujidoshi\ ;
+谷懐 < tanibutokoro\ ;
+選考委員会 < senkouiinkai\ ;
+医薬分業 < iyakubungyou\ ;
+雁骨 < kariganebone\ ;
+身元保証 < mimotohoshou\ ;
+軟着陸 < nanchakuriku\ ;
+純正科学 < junseikagaku\ ;
+二重道徳 < nijuudoutoku\ ;
+悲喜交交 < hikikomogomo\ ;
+緊急動議 < kinkyuudougi\ ;
+太陽電池 < taiyoudenchi\ ;
+街頭録音 < gaitourokuon\ ;
+国際機関 < kokusaikikan\ ;
+東口 < higashiguchi\ ;
+前傾姿勢 < zenkeishisei\ ;
+帰属意識 < kizokuishiki\ ;
+公衆便所 < koushuubenjo\ ;
+日本国内 < nihonkokunai\ ;
+色情狂 < shikijoukyou\ ;
+郵便袋 < yuubinbukuro\ ;
+選民思想 < senminshisou\ ;
+咀嚼運動 < soshakuundou\ ;
+記念写真 < kinenshashin\ ;
+診察台 < shinsatsudai\ ;
+泡沫的 < houmatsuteki\ ;
+火燵布団 < kotatsubuton\ ;
+仮釈放 < karishakuhou\ ;
+全面禁止 < zenmenkinshi\ ;
+北回帰線 < kitakaikisen\ ;
+連合艦隊 < rengoukantai\ ;
+急進的 < kyuushinteki\ ;
+人命救助 < jinmeikyuujo\ ;
+戦争状態 < sensoujoutai\ ;
+女子大学 < joshidaigaku\ ;
+国士無双 < kokushimusou\ ;
+平均余命 < heikin''yomei\ ;
+事例研究 < jireikenkyuu\ ;
+分散投資 < bunsantoushi\ ;
+診察券 < shinsatsuken\ ;
+極小値 < kyokushouchi\ ;
+偶像礼拝 < guuzoureihai\ ;
+効果覿面 < koukatekimen\ ;
+緊張緩和 < kinchoukanwa\ ;
+不許複製 < fukyofukusei\ ;
+北欧神話 < hokuoushinwa\ ;
+人事行政 < jinjigyousei\ ;
+昭和年間 < shouwanenkan\ ;
+国字問題 < kokujimondai\ ;
+供血者 < kyouketsusha\ ;
+国務大臣 < kokumudaijin\ ;
+杯事 < sakazukigoto\ ;
+言語障害 < gengoshougai\ ;
+再販価格 < saihankakaku\ ;
+平均株価 < heikinkabuka\ ;
+安息香酸 < ansokukousan\ ;
+譜代大名 < fudaidaimyou\ ;
+収入役 < shuunyuuyaku\ ;
+節用集 < setsuyoushuu\ ;
+配達料 < haitatsuryou\ ;
+類義語辞典 < ruigigojiten\ ;
+道路計画 < dourokeikaku\ ;
+古自動車 < furujidousha\ ;
+独枕 < hitorimakura\ ;
+容姿端麗 < youshitanrei\ ;
+新卒者 < shinsotsusha\ ;
+請負業者 < ukeoigyousha\ ;
+通常口語 < tsuujoukougo\ ;
+在外邦人 < zaigaihoujin\ ;
+収監力 < shuukanryoku\ ;
+開放経済 < kaihoukeizai\ ;
+百葉箱 < hyakuyoubako\ ;
+体操競技 < taisoukyougi\ ;
+労働同盟 < roudoudoumei\ ;
+国際都市 < kokusaitoshi\ ;
+有刺鉄線 < yuushitessen\ ;
+団体行動 < dantaikoudou\ ;
+応用数学 < ouyousuugaku\ ;
+協力者 < kyouryokusha\ ;
+交通巡査 < koutsuujunsa\ ;
+速達便 < sokutatsubin\ ;
+無敵艦隊 < mutekikantai\ ;
+航空会社 < koukuugaisha\ ;
+銀白色 < ginhakushoku\ ;
+大政奉還 < taiseihoukan\ ;
+不撓不屈 < futoufukutsu\ ;
+相関関係 < soukankankei\ ;
+同盟罷業 < doumeihigyou\ ;
+夾竹桃 < kyouchikutou\ ;
+軍備競争 < gunbikyousou\ ;
+形容動詞 < keiyoudoushi\ ;
+補給幹線 < hokyuukansen\ ;
+畜生道 < chikushoudou\ ;
+雪辱戦 < setsujokusen\ ;
+為替裁定 < kawasesaitei\ ;
+表現主義 < hyougenshugi\ ;
+東京着 < toukyouchaku\ ;
+電信局 < denshinkyoku\ ;
+文教地区 < bunkyouchiku\ ;
+青色症 < seishokushou\ ;
+広告主 < koukokunushi\ ;
+金属疲労 < kinzokuhirou\ ;
+右方高麗楽 < uhoukomagaku\ ;
+強制疎開 < kyouseisokai\ ;
+東京発 < toukyouhatsu\ ;
+警視総監 < keishisoukan\ ;
+代表社員 < daihyoushain\ ;
+借屋住居 < shakuyazumai\ ;
+徴兵制度 < chouheiseido\ ;
+短期大学 < tankidaigaku\ ;
+立体放送 < rittaihousou\ ;
+全身浴 < zenshin''yoku\ ;
+圧迫包帯 < appakuhoutai\ ;
+変質者 < henshitsusha\ ;
+通用期間 < tsuuyoukikan\ ;
+勉強時間 < benkyoujikan\ ;
+戸籍謄本 < kosekitouhon\ ;
+家庭教育 < kateikyouiku\ ;
+地震探鉱 < jishintankou\ ;
+避難梯子 < hinanbashigo\ ;
+夏木立 < natsukodachi\ ;
+社会奉仕 < shakaihoushi\ ;
+婚外性交 < kongaiseikou\ ;
+不可抗力 < fukakouryoku\ ;
+一塊 < hitokatamari\ ;
+警察庁 < keisatsuchou\ ;
+業界初 < gyoukaihatsu\ ;
+執行機関 < shikkoukikan\ ;
+勤務評定 < kinmuhyoutei\ ;
+天長節 < tenchousetsu\ ;
+常用対数 < jouyoutaisuu\ ;
+娘心 < musumegokoro\ ;
+大道芸人 < daidougeinin\ ;
+黒風白雨 < kokufuuhakuu\ ;
+肥厚性鼻炎 < hikouseibien\ ;
+銀行業務 < ginkougyoumu\ ;
+現地調査 < genchichousa\ ;
+遠洋航海 < en''youkoukai\ ;
+外交関係 < gaikoukankei\ ;
+私学助成 < shigakujosei\ ;
+産褥熱 < sanjokunetsu\ ;
+無痛分娩 < mutsuubunben\ ;
+不良債権 < furyousaiken\ ;
+地域時刻 < chiikijikoku\ ;
+凹版印刷 < ouhaninsatsu\ ;
+基幹産業 < kikansangyou\ ;
+路上駐車 < rojouchuusha\ ;
+単勝式 < tanshoushiki\ ;
+亜酸化窒素 < asankachisso\ ;
+首脳会談 < shunoukaidan\ ;
+独裁政治 < dokusaiseiji\ ;
+外交問題 < gaikoumondai\ ;
+頭頂骨 < touchoukotsu\ ;
+破産申請 < hasanshinsei\ ;
+郷土芸能 < kyoudogeinou\ ;
+後方地域 < kouhouchiiki\ ;
+太陽放射 < taiyouhousha\ ;
+壊血病 < kaiketsubyou\ ;
+西洋文明 < seiyoubunmei\ ;
+振替輸送 < furikaeyusou\ ;
+交換条件 < koukanjouken\ ;
+発行市場 < hakkoushijou\ ;
+一昨昨年 < sakiototoshi\ ;
+製菓業者 < seikagyousha\ ;
+看板娘 < kanbanmusume\ ;
+愛国団体 < aikokudantai\ ;
+変形規則 < henkeikisoku\ ;
+人気投票 < ninkitouhyou\ ;
+男女平等 < danjobyoudou\ ;
+郵便葉書 < yuubinhagaki\ ;
+編集局 < henshuukyoku\ ;
+晴後雨 < harenochiame\ ;
+市場撤退 < shijoutettai\ ;
+安定同位体 < anteidouitai\ ;
+定期検診 < teikikenshin\ ;
+流動食 < ryuudoushoku\ ;
+夏祭 < natsumatsuri\ ;
+団体競技 < dantaikyougi\ ;
+食道楽 < shokudouraku\ ;
+民間団体 < minkandantai\ ;
+封建思想 < houkenshisou\ ;
+航続距離 < kouzokukyori\ ;
+双峰駱駝 < souhourakuda\ ;
+百科全書 < hyakkazensho\ ;
+試行錯誤 < shikousakugo\ ;
+工場地帯 < koujouchitai\ ;
+毛織錦 < keorinishiki\ ;
+政治改革 < seijikaikaku\ ;
+市民会館 < shiminkaikan\ ;
+求人口 < kyuujinguchi\ ;
+有限会社 < yuugengaisha\ ;
+重商主義 < juushoushugi\ ;
+駅前広場 < ekimaehiroba\ ;
+終着駅 < shuuchakueki\ ;
+政治責任 < seijisekinin\ ;
+黒水熱 < kokusuinetsu\ ;
+仮進級 < karishinkyuu\ ;
+専業主婦 < sengyoushufu\ ;
+現場監督 < genbakantoku\ ;
+公転周期 < koutenshuuki\ ;
+口三味線 < kuchijamisen\ ;
+配達先 < haitatsusaki\ ;
+寝物語 < nemonogatari\ ;
+一昨昨夜 < issakusakuya\ ;
+若殿原 < wakatonobara\ ;
+血清肝炎 < kesseikan''en\ ;
+人跡未踏 < jinsekimitou\ ;
+強制保険 < kyouseihoken\ ;
+一望千里 < ichibousenri\ ;
+冷蔵室 < reizoushitsu\ ;
+刑務所長 < keimushochou\ ;
+場内放送 < jounaihousou\ ;
+朝三暮四 < chousanboshi\ ;
+福祉国家 < fukushikokka\ ;
+没交渉 < botsukoushou\ ;
+長刀一枝 < choutouisshi\ ;
+静脈瘤 < joumyakuryuu\ ;
+無線工学 < musenkougaku\ ;
+勝利投手 < shouritoushu\ ;
+天気概況 < tenkigaikyou\ ;
+骨組織 < kotsusoshiki\ ;
+千卒長 < sensotsuchou\ ;
+無常迅速 < mujoujinsoku\ ;
+行動科学 < koudoukagaku\ ;
+直轄地 < chokkatsuchi\ ;
+予防注射 < yobouchuusha\ ;
+昔式 < mukashishiki\ ;
+極秘情報 < gokuhijouhou\ ;
+封建社会 < houkenshakai\ ;
+一筋繩 < hitosujinawa\ ;
+労使紛争 < roushifunsou\ ;
+自学自習 < jigakujishuu\ ;
+不連続線 < furenzokusen\ ;
+治外法権 < chigaihouken\ ;
+経済外交 < keizaigaikou\ ;
+刃物三昧 < hamonozanmai\ ;
+光学繊維 < kougakusen''i\ ;
+就職難 < shuushokunan\ ;
+全休止符 < zenkyuushifu\ ;
+和洋折衷 < wayousetchuu\ ;
+清算会社 < seisangaisha\ ;
+廃藩置県 < haihanchiken\ ;
+臨床講義 < rinshoukougi\ ;
+説経節 < sekkyoubushi\ ;
+純日本風 < jun''nihonfuu\ ;
+文字符号系 < mojifugoukei\ ;
+挙国一致 < kyokokuitchi\ ;
+大衆運動 < taishuuundou\ ;
+心身症 < shinshinshou\ ;
+市場調査 < shijouchousa\ ;
+公開外交 < koukaigaikou\ ;
+面会室 < menkaishitsu\ ;
+独創力 < dokusouryoku\ ;
+妹娘 < imoutomusume\ ;
+大蔵大臣 < ookuradaijin\ ;
+修正予算 < shuuseiyosan\ ;
+始業式 < shigyoushiki\ ;
+行政機関 < gyouseikikan\ ;
+医療輸送機 < iryouyusouki\ ;
+来客筋 < raikyakusuji\ ;
+進学塾 < shingakujuku\ ;
+目的格 < mokutekikaku\ ;
+政教分離 < seikyoubunri\ ;
+搭乗案内 < toujouan''nai\ ;
+五人囃子 < goninbayashi\ ;
+独善主義 < dokuzenshugi\ ;
+航空書簡 < koukuushokan\ ;
+賛否同票 < sanpidouhyou\ ;
+人文学派 < jinbungakuha\ ;
+援用生産 < en''youseisan\ ;
+不耕作地 < fukousakuchi\ ;
+大使公邸 < taishikoutei\ ;
+決議事項 < ketsugijikou\ ;
+校正係 < kouseigakari\ ;
+力自慢 < chikarajiman\ ;
+過酸化水素 < kasankasuiso\ ;
+屋敷町 < yashikimachi\ ;
+温泉療法 < onsenryouhou\ ;
+一顰一笑 < ippin''isshou\ ;
+電気信号 < denkishingou\ ;
+霜柱 < shimobashira\ ;
+服飾品 < fukushokuhin\ ;
+膨張率 < bouchouritsu\ ;
+専管水域 < senkansuiiki\ ;
+天体崇拝 < tentaisuuhai\ ;
+良心的 < ryoushinteki\ ;
+相互参照 < sougosanshou\ ;
+割烹料理 < kappouryouri\ ;
+空念仏 < soranenbutsu\ ;
+郊外電車 < kougaidensha\ ;
+皆皆様 < minaminasama\ ;
+修正主義 < shuuseishugi\ ;
+能率給 < nouritsukyuu\ ;
+補強証拠 < hokyoushouko\ ;
+星印 < hoshijirushi\ ;
+堆積物 < taisekibutsu\ ;
+人材銀行 < jinzaiginkou\ ;
+近代音楽 < kindaiongaku\ ;
+裏面工作 < rimenkousaku\ ;
+法治社会 < houchishakai\ ;
+出納係 < suitougakari\ ;
+大盤振舞 < oobanburumai\ ;
+三岐代表 < sangidaihyou\ ;
+蓄積管 < chikusekikan\ ;
+独身者 < dokushinmono\ ;
+教員組合 < kyouinkumiai\ ;
+海難救助 < kainankyuujo\ ;
+録音放送 < rokuonhousou\ ;
+三者凡退 < sanshabontai\ ;
+石竹色 < sekichikuiro\ ;
+直腸癌 < chokuchougan\ ;
+突発的 < toppatsuteki\ ;
+日本海流 < nihonkairyuu\ ;
+史上最大 < shijousaidai\ ;
+芸術的 < geijutsuteki\ ;
+非晶質 < hishoushitsu\ ;
+記憶障害 < kiokushougai\ ;
+不労所得 < furoushotoku\ ;
+老荘思想 < rousoushisou\ ;
+玉蜀黍 < toumorokoshi\ ;
+軍需工業 < gunjukougyou\ ;
+小心者 < shoushinmono\ ;
+離合集散 < rigoushuusan\ ;
+良妻賢母 < ryousaikenbo\ ;
+軍司令官 < gunshireikan\ ;
+黒水引 < kuromizuhiki\ ;
+貿易会社 < bouekigaisha\ ;
+燐酸肥料 < rinsanhiryou\ ;
+感熱剤 < kan''netsuzai\ ;
+無限責任 < mugensekinin\ ;
+娯楽室 < gorakushitsu\ ;
+鎮痛薬 < chintsuuyaku\ ;
+科学思想 < kagakushisou\ ;
+四海同胞 < shikaidouhou\ ;
+代理委任状 < dairiininjou\ ;
+健康問題 < kenkoumondai\ ;
+感傷主義 < kanshoushugi\ ;
+馬頭観音 < batoukan''non\ ;
+天頂距離 < tenchoukyori\ ;
+能率的 < nouritsuteki\ ;
+調査部長 < chousabuchou\ ;
+合唱曲 < gasshoukyoku\ ;
+丹頂鶴 < tanchoudzuru\ ;
+行動命令 < koudoumeirei\ ;
+為替手形 < kawasetegata\ ;
+赤道気団 < sekidoukidan\ ;
+空中落下 < kuuchuurakka\ ;
+革新的 < kakushinteki\ ;
+定格荷重 < teikakukajuu\ ;
+為替銀行 < kawaseginkou\ ;
+官能主義 < kan''noushugi\ ;
+家庭教師 < kateikyoushi\ ;
+昼夜兼行 < chuuyakenkou\ ;
+客商売 < kyakushoubai\ ;
+一括式 < ikkatsushiki\ ;
+畜産業 < chikusangyou\ ;
+会社営業 < kaishaeigyou\ ;
+袋鼠 < fukuronezumi\ ;
+啓蒙思想 < keimoushisou\ ;
+非循環的 < hijunkanteki\ ;
+文民統制 < bunmintousei\ ;
+過酸化物 < kasankabutsu\ ;
+一念発起 < ichinenhokki\ ;
+出血死 < shukketsushi\ ;
+育成栽培 < ikuseisaibai\ ;
+現場検証 < genbakenshou\ ;
+時代考証 < jidaikoushou\ ;
+感度良好 < kandoryoukou\ ;
+白髪頭 < shiragaatama\ ;
+透明人間 < toumeiningen\ ;
+新形式 < shinkeishiki\ ;
+常套手段 < joutoushudan\ ;
+共有物 < kyouyuubutsu\ ;
+和平工作 < waheikousaku\ ;
+申告箱 < shinkokubako\ ;
+暗中飛躍 < anchuuhiyaku\ ;
+亜寒帯気候 < akantaikikou\ ;
+書留料 < kakitomeryou\ ;
+高音部記号 < kouonbukigou\ ;
+人民裁判 < jinminsaiban\ ;
+施行規則 < shikoukisoku\ ;
+半身不随 < hanshinfuzui\ ;
+希釈熱 < kishakunetsu\ ;
+普通名詞 < futsuumeishi\ ;
+山口県 < yamaguchiken\ ;
+執筆者 < shippitsusha\ ;
+対象範囲 < taishouhan''i\ ;
+人民戦線 < jinminsensen\ ;
+簡明強固 < kanmeikyouko\ ;
+可能選択 < kanousentaku\ ;
+屋内競技 < okunaikyougi\ ;
+多情仏心 < tajoubusshin\ ;
+単純計算 < tanjunkeisan\ ;
+公衆電話 < koushuudenwa\ ;
+商取引 < shoutorihiki\ ;
+花自動車 < hanajidousha\ ;
+位相幾何学 < isoukikagaku\ ;
+植物油 < shokubutsuyu\ ;
+放蕩息子 < houtoumusuko\ ;
+出血斑 < shukketsuhan\ ;
+企画室 < kikakushitsu\ ;
+侵入軍 < shin''nyuugun\ ;
+写真機店 < shashinkiten\ ;
+漁獲物 < gyokakubutsu\ ;
+三等軍曹 < santougunsou\ ;
+緊急逮捕 < kinkyuutaiho\ ;
+力学的 < rikigakuteki\ ;
+貞操蹂躪 < teisoujuurin\ ;
+心肺機能 < shinpaikinou\ ;
+約束事 < yakusokugoto\ ;
+雌雄同株 < shiyuudoushu\ ;
+順風満帆 < junpuumanpan\ ;
+学校法人 < gakkouhoujin\ ;
+変位電流 < hen''idenryuu\ ;
+前哨勤務 < zenshoukinmu\ ;
+経帷子 < kyoukatabira\ ;
+海洋科学 < kaiyoukagaku\ ;
+農民運動 < noumin''undou\ ;
+火消壷 < hikeshitsubo\ ;
+責任範囲 < sekininhan''i\ ;
+発光塗料 < hakkoutoryou\ ;
+感応作用 < kan''nousayou\ ;
+利休鼠 < rikyuunezumi\ ;
+子持昆布 < komochikonbu\ ;
+市営住宅 < shieijuutaku\ ;
+順応力 < jun''nouryoku\ ;
+事業部長 < jigyoubuchou\ ;
+大胆不敵 < daitanfuteki\ ;
+伊勢大神宮 < isedaijinguu\ ;
+天地創造 < tenchisouzou\ ;
+市場経済 < shijoukeizai\ ;
+続柄 < tsudzukigara\ ;
+予定期日 < yoteikijitsu\ ;
+医療技術 < iryougijutsu\ ;
+下半身 < shimohanshin\ ;
+表決権 < hyouketsuken\ ;
+択一的 < takuitsuteki\ ;
+使役動詞 < shiekidoushi\ ;
+流動物 < ryuudoubutsu\ ;
+陳述書 < chinjutsusho\ ;
+徴兵検査 < chouheikensa\ ;
+自家発電 < jikahatsuden\ ;
+追悼式 < tsuitoushiki\ ;
+同語反復 < dougohanpuku\ ;
+弁論大会 < benrontaikai\ ;
+一般投票 < ippantouhyou\ ;
+一人息子 < hitorimusuko\ ;
+飲食物 < inshokubutsu\ ;
+退役軍人 < taiekigunjin\ ;
+人生最悪 < jinseisaiaku\ ;
+印加電圧 < inkaden''atsu\ ;
+液性限界 < ekiseigenkai\ ;
+二酸化炭素 < nisankatanso\ ;
+栄養学者 < eiyougakusha\ ;
+昼食会 < chuushokukai\ ;
+都市交通 < toshikoutsuu\ ;
+畜産学 < chikusangaku\ ;
+交換教授 < koukankyouju\ ;
+学生時代 < gakuseijidai\ ;
+識字率 < shikijiritsu\ ;
+愛社精神 < aishaseishin\ ;
+老化現象 < roukagenshou\ ;
+鼻高高 < hanatakadaka\ ;
+社会問題 < shakaimondai\ ;
+盲管銃創 < moukanjuusou\ ;
+特別法 < tokubetsuhou\ ;
+東海地方 < toukaichihou\ ;
+出漁権 < shutsugyoken\ ;
+発行会社 < hakkougaisha\ ;
+近所合壁 < kinjogappeki\ ;
+音声圧縮 < onseiasshuku\ ;
+民族主義 < minzokushugi\ ;
+専門科目 < senmonkamoku\ ;
+減量経営 < genryoukeiei\ ;
+睡眠不足 < suiminbusoku\ ;
+運送契約 < unsoukeiyaku\ ;
+舞台中継 < butaichuukei\ ;
+下層階級 < kasoukaikyuu\ ;
+鳶職人 < tobishokunin\ ;
+経済闘争 < keizaitousou\ ;
+不良少女 < furyoushoujo\ ;
+応援演説 < ouen''enzetsu\ ;
+鎮魂曲 < chinkonkyoku\ ;
+行動半径 < koudouhankei\ ;
+出演料 < shutsuenryou\ ;
+地震地帯 < jishinchitai\ ;
+通過貿易 < tsuukaboueki\ ;
+統計年鑑 < toukeinenkan\ ;
+人手不足 < hitodebusoku\ ;
+通俗的 < tsuuzokuteki\ ;
+十中八九 < jitchuuhakku\ ;
+滋強飲料 < jikyouinryou\ ;
+四角号碼 < shikakugouma\ ;
+固定観念 < koteikan''nen\ ;
+低音部記号 < teionbukigou\ ;
+経験科学 < keikenkagagu\ ;
+荷電粒子 < kadenryuushi\ ;
+人工生命 < jinkouseimei\ ;
+電気料金 < denkiryoukin\ ;
+往復葉書 < oufukuhagaki\ ;
+人造石油 < jinzousekiyu\ ;
+土蛍 < tsuchibotaru\ ;
+天竺牡丹 < tenjikubotan\ ;
+御馳走様 < gochisousama\ ;
+侵入者 < shin''nyuusha\ ;
+天路歴程 < tenrorekitei\ ;
+共同便所 < kyoudoubenjo\ ;
+暗殺未遂 < ansatsumisui\ ;
+未払費用 < miharaihiyou\ ;
+空出張 < karashutchou\ ;
+相互配属 < sougohaizoku\ ;
+破顔一笑 < hagan''isshou\ ;
+血圧計 < ketsuatsukei\ ;
+胆汁質 < tanjuushitsu\ ;
+治療効果 < chiryoukouka\ ;
+猟官制度 < ryoukanseido\ ;
+収容患者 < shuuyoukanja\ ;
+武陵桃源 < buryoutougen\ ;
+人民所有 < jinminshoyuu\ ;
+反射係数 < hanshakeisuu\ ;
+工業意匠 < kougyouishou\ ;
+相対評価 < soutaihyouka\ ;
+経済問題 < keizaimondai\ ;
+黄碧玉 < kouhekigyoku\ ;
+隔月刊 < kakugetsukan\ ;
+三十六計 < sanjuurokkei\ ;
+残業手当 < zangyouteate\ ;
+投球動作 < toukyuudousa\ ;
+防災訓練 < bousaikunren\ ;
+耐用年数 < taiyounensuu\ ;
+民定憲法 < minteikenpou\ ;
+福利厚生 < fukurikousei\ ;
+消耗品費 < shoumouhinhi\ ;
+学級閉鎖 < gakkyuuheisa\ ;
+人生記録 < jinseikiroku\ ;
+実利主義 < jitsurishugi\ ;
+復原力 < fukugenryoku\ ;
+竣工式 < shunkoushiki\ ;
+公使館員 < koushikan''in\ ;
+競争率 < kyousouritsu\ ;
+積立金 < tsumitatekin\ ;
+植物園 < shokubutsuen\ ;
+進化論者 < shinkaronsha\ ;
+空中機動 < kuuchuukidou\ ;
+投票結果 < touhyoukekka\ ;
+前提条件 < zenteijouken\ ;
+外人選手 < gaijinsenshu\ ;
+巨大分子 < kyodaibunshi\ ;
+贋造紙幣 < ganzoushihei\ ;
+独身寮 < dokushinryou\ ;
+検定試験 < kenteishiken\ ;
+藍綬褒章 < ranjuhoushou\ ;
+司法試験 < shihoushiken\ ;
+柔軟体操 < juunantaisou\ ;
+不良導体 < furyoudoutai\ ;
+対戦車砲 < taisenshahou\ ;
+入札者 < nyuusatsusha\ ;
+死体解剖 < shitaikaibou\ ;
+兼業農家 < kengyounouka\ ;
+新入生 < shin''nyuusei\ ;
+公開録音 < koukairokuon\ ;
+海軍大臣 < kaigundaijin\ ;
+南京花火 < nankinhanabi\ ;
+神謡集 < shin''youshuu\ ;
+扁桃腺炎 < hentousen''en\ ;
+中央銀行 < chuuouginkou\ ;
+両極端 < ryoukyokutan\ ;
+圧縮空気 < asshukukuuki\ ;
+帳面面 < choumendzura\ ;
+見積書 < mitsumorisho\ ;
+研削代 < kensakushiro\ ;
+決済手段 < kessaishudan\ ;
+代理業者 < dairigyousha\ ;
+配置転換 < haichitenkan\ ;
+禁治産者 < kinchisansha\ ;
+活動的 < katsudouteki\ ;
+全身不随 < zenshinfuzui\ ;
+愛他主義者 < aitashugisha\ ;
+全能力 < zen''nouryoku\ ;
+運転技術 < untengijutsu\ ;
+電子音楽 < denshiongaku\ ;
+千万無量 < senmanmuryou\ ;
+自殺幇助 < jisatsuhoujo\ ;
+代数関数 < daisuukansuu\ ;
+音響設計 < onkyousekkei\ ;
+乳様突起 < nyuuyoutokki\ ;
+事前割当 < jizenwariate\ ;
+兵役免状 < heiekimenjou\ ;
+天涯孤独 < tengaikodoku\ ;
+不承不承 < fushoubushou\ ;
+無所属現 < mushozokugen\ ;
+木造家屋 < mokuzoukaoku\ ;
+養老年金 < yourounenkin\ ;
+事前研修 < jizenkenshuu\ ;
+食肉類 < shokunikurui\ ;
+体系文法 < taikeibunpou\ ;
+肺活量 < haikatsuryou\ ;
+雌雄同体 < shiyuudoutai\ ;
+開票率 < kaihyouritsu\ ;
+常識的 < joushikiteki\ ;
+構造汚職 < kouzouoshoku\ ;
+基礎知識 < kisochishiki\ ;
+収容力 < shuuyouryoku\ ;
+地域紛争 < chiikifunsou\ ;
+単峰駱駝 < tanpourakuda\ ;
+象徴的 < shouchouteki\ ;
+人気商売 < ninkishoubai\ ;
+千姿万態 < senshibantai\ ;
+公有財産 < kouyuuzaisan\ ;
+自慢話 < jimanbanashi\ ;
+招待客 < shoutaikyaku\ ;
+先行投資 < senkoutoushi\ ;
+製造工程 < seizoukoutei\ ;
+自由競争 < jiyuukyousou\ ;
+川魚料理 < kawauoryouri\ ;
+交響曲 < koukyoukyoku\ ;
+電解質 < denkaishitsu\ ;
+現代科学 < gendaikagaku\ ;
+平底船 < hirasokobune\ ;
+産業機械 < sangyoukikai\ ;
+不合格者 < fugoukakusha\ ;
+暑中見舞 < shochuumimai\ ;
+誘導尋問 < yuudoujinmon\ ;
+就任式 < shuuninshiki\ ;
+冷凍室 < reitoushitsu\ ;
+瑠璃唐草 < rurikarakusa\ ;
+定形動詞 < teikeidoushi\ ;
+配膳室 < haizenshitsu\ ;
+人間関係 < ningenkankei\ ;
+赤十字社 < sekijuujisha\ ;
+広島県 < hiroshimaken\ ;
+暦改正 < koyomikaisei\ ;
+無産階級 < musankaikyuu\ ;
+徳川方 < tokugawagata\ ;
+六法全書 < roppouzensho\ ;
+集権排除 < shuukenhaijo\ ;
+国際会議 < kokusaikaigi\ ;
+児童文学 < jidoubungaku\ ;
+軍事秘密 < gunjihimitsu\ ;
+仮入学 < karinyuugaku\ ;
+任意出頭 < nin''ishuttou\ ;
+付随現象 < fuzuigenshou\ ;
+原形質 < genkeishitsu\ ;
+唇歯輔車 < shinshihosha\ ;
+原因調査 < gen''inchousa\ ;
+担当部長 < tantoubuchou\ ;
+主任教授 < shuninkyouju\ ;
+軍備削減 < gunbisakugen\ ;
+公開裁判 < koukaisaiban\ ;
+分解修理 < bunkaishuuri\ ;
+百花斉放 < hyakkaseihou\ ;
+黒色腫 < kokushokushu\ ;
+人造真珠 < jinzoushinju\ ;
+卒業生 < sotsugyousei\ ;
+神経過敏 < shinkeikabin\ ;
+送金為替 < soukinkawase\ ;
+回復力 < kaifukuryoku\ ;
+厳正科学 < genseikagaku\ ;
+入会式 < nyuukaishiki\ ;
+司法書士 < shihoushoshi\ ;
+在外資産 < zaigaishisan\ ;
+法律違反 < houritsuihan\ ;
+向心力 < koushinryoku\ ;
+玉虫色 < tamamushiiro\ ;
+特別号 < tokubetsugou\ ;
+進路指導 < shinroshidou\ ;
+予備協約 < yobikyouyaku\ ;
+脱毛症 < datsumoushou\ ;
+始球式 < shikyuushiki\ ;
+教育玩具 < kyouikugangu\ ;
+文法規則 < bunpoukisoku\ ;
+何色搨 < nanshokuzuri\ ;
+完了時制 < kanryoujisei\ ;
+信託業 < shintakugyou\ ;
+事実誤認 < jijitsugonin\ ;
+軍需産業 < gunjusangyou\ ;
+土煙 < tsuchikemuri\ ;
+僻根性 < higamikonjou\ ;
+奪三振 < datsusanshin\ ;
+鉄火丼 < tekkadonburi\ ;
+自然科学 < shizenkagaku\ ;
+大福餅 < daifukumochi\ ;
+武者修行 < mushashugyou\ ;
+侵略軍 < shinryakugun\ ;
+生成文法 < seiseibunpou\ ;
+反物質 < hanbusshitsu\ ;
+司法大臣 < shihoudaijin\ ;
+主意主義者 < shuishugisha\ ;
+制球力 < seikyuuryoku\ ;
+御用商人 < goyoushounin\ ;
+使徒信条 < shitoshinjou\ ;
+証拠物件 < shoukobukken\ ;
+陸産物 < rikusanbutsu\ ;
+予備知識 < yobichishiki\ ;
+合名会社 < goumeigaisha\ ;
+共同一致 < kyoudouitchi\ ;
+武力政治 < buryokuseiji\ ;
+軌道修正 < kidoushuusei\ ;
+農作物 < nousakubutsu\ ;
+湾岸戦争 < wangansensou\ ;
+合格祈願 < goukakukigan\ ;
+化学肥料 < kagakuhiryou\ ;
+竜舌蘭 < ryuuzetsuran\ ;
+独裁国家 < dokusaikokka\ ;
+低利金融 < teirikin''yuu\ ;
+営業畑 < eigyoubatake\ ;
+土類金属 < doruikinzoku\ ;
+肉食獣 < nikushokujuu\ ;
+共和政体 < kyouwaseitai\ ;
+法律学 < houritsugaku\ ;
+法廷闘争 < houteitousou\ ;
+再生装置 < saiseisouchi\ ;
+新発明 < shinhatsumei\ ;
+北方領土 < hoppouryoudo\ ;
+逗留客 < touryuukyaku\ ;
+全廃論者 < zenpaironsha\ ;
+累進課税 < ruishinkazei\ ;
+国防会議 < kokuboukaigi\ ;
+徳島県 < tokushimaken\ ;
+二百十日 < nihyakutooka\ ;
+事前通報 < jizentsuuhou\ ;
+社会意識 < shakaiishiki\ ;
+援助凍結 < enjotouketsu\ ;
+清水寺 < kiyomizudera\ ;
+安全第一 < anzendaiichi\ ;
+個人攻撃 < kojinkougeki\ ;
+悪戯坊主 < itazurabouzu\ ;
+遊動円木 < yuudouenboku\ ;
+円形劇場 < enkeigekijou\ ;
+熱容量 < netsuyouryou\ ;
+文筆業 < bunpitsugyou\ ;
+芭蕉梶木 < bashoukajiki\ ;
+脳出血 < noushukketsu\ ;
+露出症 < roshutsushou\ ;
+高足蟹 < takaashigani\ ;
+情報科学 < jouhoukagaku\ ;
+私娼窟 < shishoukutsu\ ;
+傷害保険 < shougaihoken\ ;
+破産宣告 < hasansenkoku\ ;
+癩病患者 < raibyoukanja\ ;
+黒色癌 < kokushokugan\ ;
+因子分析 < inshibunseki\ ;
+貧血症 < hinketsushou\ ;
+認識票 < ninshikihyou\ ;
+待合政治 < machiaiseiji\ ;
+末法思想 < mappoushisou\ ;
+航続時間 < kouzokujikan\ ;
+専売特許 < senbaitokkyo\ ;
+同種同文 < doushudoubun\ ;
+鉄道事故 < tetsudoujiko\ ;
+真理関数 < shinrikansuu\ ;
+疫病神 < yakubyougami\ ;
+露出狂 < roshutsukyou\ ;
+子子孫孫 < shishisonson\ ;
+八丈島 < hachijoujima\ ;
+降神術 < koushinjutsu\ ;
+英国石油 < eikokusekiyu\ ;
+保護観察 < hogokansatsu\ ;
+秘密兵器 < himitsuheiki\ ;
+郵便貯金 < yuubinchokin\ ;
+哲学者 < tetsugakusha\ ;
+二重人格 < nijuujinkaku\ ;
+白衣明妃 < byakuemyouhi\ ;
+生体解剖 < seitaikaibou\ ;
+爫 < tsumekanmuri\ ;
+力一杯 < chikaraippai\ ;
+出品物 < shuppinbutsu\ ;
+立太子礼 < rittaishirei\ ;
+実際問題 < jissaimondai\ ;
+公転速度 < koutensokudo\ ;
+一石二鳥 < issekinichou\ ;
+教育課程 < kyouikukatei\ ;
+人代名詞 < jindaimeishi\ ;
+次酸化炭素 < jisankatanso\ ;
+灰白色 < kaihakushoku\ ;
+独居室 < dokkyoshitsu\ ;
+優生結婚 < yuuseikekkon\ ;
+口頭試問 < koutoushimon\ ;
+交通安全 < koutsuuanzen\ ;
+接待係 < settaigakari\ ;
+万年雪 < man''nen''yuki\ ;
+狂想曲 < kyousoukyoku\ ;
+和文英訳 < wabun''eiyaku\ ;
+本家本元 < honkehonmoto\ ;
+盲目飛行 < moumokuhikou\ ;
+滞空記録 < taikuukiroku\ ;
+立体裁断 < rittaisaidan\ ;
+国内事情 < kokunaijijou\ ;
+侵略者 < shinryakusha\ ;
+接触事故 < sesshokujiko\ ;
+町役人 < machiyakunin\ ;
+乾燥腐朽 < kansoufukyuu\ ;
+蚰蜒眉 < gejigejimayu\ ;
+合資会社 < goushigaisha\ ;
+彫刻具座 < choukokuguza\ ;
+治安維持法 < chian''ijihou\ ;
+学習塾 < gakushuujuku\ ;
+戸外撮影 < kogaisatsuei\ ;
+応急修理 < oukyuushuuri\ ;
+麻酔注射 < masuichuusha\ ;
+末端価格 < mattankakaku\ ;
+偶像崇拝 < guuzousuuhai\ ;
+普通列車 < futsuuressha\ ;
+新発売 < shinhatsubai\ ;
+和平交渉 < waheikoushou\ ;
+競争力 < kyousouryoku\ ;
+循環論法 < junkanronpou\ ;
+失名氏 < shitsumeishi\ ;
+表座敷 < omotezashiki\ ;
+飽食暖衣 < houshokudani\ ;
+機械工業 < kikaikougyou\ ;
+無限集合 < mugenshuugou\ ;
+徴発令 < chouhatsurei\ ;
+有価証券 < yuukashouken\ ;
+懐銭 < futokorozeni\ ;
+井戸端会議 < idobatakaigi\ ;
+副収入 < fukushuunyuu\ ;
+恐喝罪 < kyoukatsuzai\ ;
+屈折軸 < kussetsujiku\ ;
+合切袋 < gassaibukuro\ ;
+消息通 < shousokutsuu\ ;
+総統選挙 < soutousenkyo\ ;
+株主権 < kabunushiken\ ;
+人気役者 < ninkiyakusha\ ;
+市内通話 < shinaitsuuwa\ ;
+占有率 < sen''yuuritsu\ ;
+南京袋 < nankinbukuro\ ;
+高高指 < takatakayubi\ ;
+白色光 < hakushokukou\ ;
+一等陸士 < ittourikushi\ ;
+講和条約 < kouwajouyaku\ ;
+工業都市 < kougyoutoshi\ ;
+卓上電話 < takujoudenwa\ ;
+客観主義 < kyakkanshugi\ ;
+共同謀議 < kyoudoubougi\ ;
+購買組合 < koubaikumiai\ ;
+請負仕事 < ukeoishigoto\ ;
+鋸鮫 < nokogirizame\ ;
+雇用契約 < koyoukeiyaku\ ;
+当意即妙 < touisokumyou\ ;
+日米協 < nichibeikyou\ ;
+労働市場 < roudoushijou\ ;
+士官学校 < shikangakkou\ ;
+名誉会長 < meiyokaichou\ ;
+度数分布図 < dosuubunpuzu\ ;
+屈折角 < kussetsukaku\ ;
+殺人的 < satsujinteki\ ;
+平均給与 < heikinkyuuyo\ ;
+左団扇 < hidariuchiwa\ ;
+防塵室 < boujinshitsu\ ;
+小便小僧 < shoubenkozou\ ;
+土埃 < tsuchibokori\ ;
+人権蹂躪 < jinkenjuurin\ ;
+圧縮酸素 < asshukusanso\ ;
+含有率 < gan''yuuritsu\ ;
+年次報告 < nenjihoukoku\ ;
+脈搏数 < myakuhakusuu\ ;
+郵便番号 < yuubinbangou\ ;
+推進力 < suishinryoku\ ;
+聾桟敷 < tsunbosajiki\ ;
+計算問題 < keisanmondai\ ;
+総合雑誌 < sougouzasshi\ ;
+縮緬皺 < chirimenjiwa\ ;
+土地収用 < tochishuuyou\ ;
+広告効果 < koukokukouka\ ;
+殺人狂 < satsujinkyou\ ;
+輸出入 < yushutsunyuu\ ;
+幼児教育 < youjikyouiku\ ;
+近所迷惑 < kinjomeiwaku\ ;
+観客席 < kankyakuseki\ ;
+無限級数 < mugenkyuusuu\ ;
+一刻千金 < ikkokusenkin\ ;
+陪審制度 < baishinseido\ ;
+編集機能 < henshuukinou\ ;
+先取特権 < senshutokken\ ;
+専門分野 < senmonbun''ya\ ;
+忄 < ritsushinben\ ;
+命冥加 < inochimyouga\ ;
+担子菌類 < tanshikinrui\ ;
+関係強化 < kankeikyouka\ ;
+森林浴 < shinrin''yoku\ ;
+攻撃部隊 < kougekibutai\ ;
+秘密会議 < himitsukaigi\ ;
+自動車事故 < jidoushajiko\ ;
+消音装置 < shouonsouchi\ ;
+満州事変 < manshuujihen\ ;
+爆発管 < bakuhatsukan\ ;
+資産評価 < shisanhyouka\ ;
+出版許可 < shuppankyoka\ ;
+黒八丈 < kurohachijou\ ;
+国内需要 < kokunaijuyou\ ;
+半身浴 < hanshin''yoku\ ;
+千万長者 < senbanchouja\ ;
+化学試験 < kagakushiken\ ;
+細胞培養 < saiboubaiyou\ ;
+音韻組織 < on''insoshiki\ ;
+座標変換 < zahyouhenkan\ ;
+機械工学 < kikaikougaku\ ;
+第三部長 < daisanbuchou\ ;
+奇岩怪石 < kigankaiseki\ ;
+耐風構造 < taifuukouzou\ ;
+暗緑色 < anryokushoku\ ;
+石鹸工場 < sekkenkoujou\ ;
+在郷軍人 < zaigougunjin\ ;
+幽霊会社 < yuureigaisha\ ;
+環境破壊 < kankyouhakai\ ;
+国際主義 < kokusaishugi\ ;
+御節料理 < osechiryouri\ ;
+筋肉痛 < kin''nikutsuu\ ;
+修理工場 < shuurikoujou\ ;
+職能給 < shokunoukyuu\ ;
+新生物 < shinseibutsu\ ;
+凌霄花 < nouzenkazura\ ;
+黒色尉 < kokushikijou\ ;
+蛍袋 < hotarubukuro\ ;
+偶発的 < guuhatsuteki\ ;
+拒否反応 < kyohihan''nou\ ;
+特産物 < tokusanbutsu\ ;
+一言一句 < ichigon''ikku\ ;
+単独飛行 < tandokuhikou\ ;
+主権在民 < shukenzaimin\ ;
+化粧室 < keshoushitsu\ ;
+総支出 < soushishutsu\ ;
+人格主義 < jinkakushugi\ ;
+自殺未遂 < jisatsumisui\ ;
+出家遁世 < shukketonsei\ ;
+哲学書 < tetsugakusho\ ;
+博物館 < hakubutsukan\ ;
+紐革饂飩 < himokawaudon\ ;
+愚民政策 < guminseisaku\ ;
+単科大学 < tankadaigaku\ ;
+適正利潤 < tekiseirijun\ ;
+発音記号 < hatsuonkigou\ ;
+軍事協定 < gunjikyoutei\ ;
+農地委員会 < nouchiiinkai\ ;
+仲介物 < chuukaibutsu\ ;
+西高東低 < seikoutoutei\ ;
+損耗人員 < sonmoujin''in\ ;
+白頭鷲 < hakutouwashi\ ;
+実勢価格 < jisseikakaku\ ;
+援用設計 < en''yousekkei\ ;
+現場中継 < genbachuukei\ ;
+最新式 < saishinshiki\ ;
+山躑躅 < yamatsutsuji\ ;
+感知装置 < kanchisouchi\ ;
+議決機関 < giketsukikan\ ;
+省電力 < shoudenryoku\ ;
+安心立命 < anjinryoumei\ ;
+合同事業 < goudoujigyou\ ;
+同期信号 < doukishingou\ ;
+仲間意識 < nakamaishiki\ ;
+媒介変数 < baikaihensuu\ ;
+寒中水泳 < kanchuusuiei\ ;
+一匹狼 < ippikiookami\ ;
+被保険物 < hihokenbutsu\ ;
+消息筋 < shousokusuji\ ;
+懐紙 < futokorogami\ ;
+暗殺事件 < ansatsujiken\ ;
+折衷主義 < setchuushugi\ ;
+単式簿記 < tanshikiboki\ ;
+教養課程 < kyouyoukatei\ ;
+万年筆 < man''nenhitsu\ ;
+三者会談 < sanshakaidan\ ;
+連記投票 < renkitouhyou\ ;
+心理状態 < shinrijoutai\ ;
+仇同氏 < katakidoushi\ ;
+海外市場 < kaigaishijou\ ;
+既成事実 < kiseijijitsu\ ;
+事務総局 < jimusoukyoku\ ;
+前進基地 < zenshinkichi\ ;
+同工異曲 < doukouikyoku\ ;
+命題関数 < meidaikansuu\ ;
+北西航路 < hokuseikouro\ ;
+局地的 < kyokuchiteki\ ;
+合同会合 < goudoukaigou\ ;
+立地条件 < ritchijouken\ ;
+革手袋 < kawatebukuro\ ;
+地理学者 < chirigakusha\ ;
+大所高所 < taishokousho\ ;
+重複保険 < juufukuhoken\ ;
+通常兵器 < tsuujouheiki\ ;
+外国部隊 < gaikokubutai\ ;
+文化交流 < bunkakouryuu\ ;
+七分袖 < shichibusode\ ;
+市外通話 < shigaitsuuwa\ ;
+毛細血管 < mousaikekkan\ ;
+動態統計 < doutaitoukei\ ;
+社内情報 < shanaijouhou\ ;
+中公文庫 < chuukoubunko\ ;
+圧電効果 < atsudenkouka\ ;
+魑魅魍魎 < chimimouryou\ ;
+循環系統 < junkankeitou\ ;
+私達 < watashitachi\ ;
+対人関係 < taijinkankei\ ;
+普通選挙 < futsuusenkyo\ ;
+心霊術 < shinreijutsu\ ;
+条件闘争 < joukentousou\ ;
+松竹梅 < shouchikubai\ ;
+千状万態 < senjoubantai\ ;
+核開発 < kakukaihatsu\ ;
+化成工業 < kaseikougyou\ ;
+経済原論 < keizaigenron\ ;
+権謀術数 < kenboujussuu\ ;
+不揮発性 < fukihatsusei\ ;
+高等学校 < koutougakkou\ ;
+連合王国 < rengououkoku\ ;
+国際色 < kokusaishoku\ ;
+郵便書簡 < yuubinshokan\ ;
+子供心 < kodomogokoro\ ;
+精神力 < seishinryoku\ ;
+深謀遠慮 < shinbouenryo\ ;
+住民運動 < juumin''undou\ ;
+法文学部 < houbungakubu\ ;
+普通郵便 < futsuuyuubin\ ;
+再突入 < saitotsunyuu\ ;
+君主政体 < kunshuseitai\ ;
+発信局 < hasshinkyoku\ ;
+大和心 < yamatogokoro\ ;
+捲土重来 < kendochourai\ ;
+女声合唱 < joseigasshou\ ;
+米西戦争 < beiseisensou\ ;
+高度成長 < koudoseichou\ ;
+調律師 < chouritsushi\ ;
+乾布摩擦 < kanpumasatsu\ ;
+中華思想 < chuukashisou\ ;
+辞職願 < jishokunegai\ ;
+贈与証書 < zouyoshousho\ ;
+債務不履行 < saimufurikou\ ;
+公衆衛生 < koushuueisei\ ;
+所所 < tokorodokoro\ ;
+社会科学 < shakaikagaku\ ;
+農芸化学 < nougeikagaku\ ;
+交通整理 < koutsuuseiri\ ;
+親密感 < shinmitsukan\ ;
+特殊部隊 < tokushubutai\ ;
+窓際族 < madogiwazoku\ ;
+事実無根 < jijitsumukon\ ;
+写真術 < shashinjutsu\ ;
+孔雀妙王 < kujakumyouou\ ;
+財産分与 < zaisanbun''yo\ ;
+邦字新聞 < houjishinbun\ ;
+機動計画 < kidoukeikaku\ ;
+輻射熱 < fukushanetsu\ ;
+孤立主義 < koritsushugi\ ;
+供述者 < kyoujutsusha\ ;
+明治天皇 < meijiten''nou\ ;
+焦点距離 < shoutenkyori\ ;
+集合時間 < shuugoujikan\ ;
+住宅地区 < juutakuchiku\ ;
+多角貿易 < takakuboueki\ ;
+非喫煙者 < hikitsuensha\ ;
+消化不良 < shoukafuryou\ ;
+神経節 < shinkeisetsu\ ;
+舞台照明 < butaishoumei\ ;
+不生産的 < fuseisanteki\ ;
+爆発性 < bakuhatsusei\ ;
+非生産的 < hiseisanteki\ ;
+募集人員 < boshuujin''in\ ;
+原稿用紙 < genkouyoushi\ ;
+無意識的 < muishikiteki\ ;
+総司令官 < soushireikan\ ;
+譲渡所得 < joutoshotoku\ ;
+学童保育 < gakudouhoiku\ ;
+最終兵器 < saishuuheiki\ ;
+滑走車輪 < kassousharin\ ;
+月刊雑誌 < gekkanzasshi\ ;
+傍若無人 < boujakubujin\ ;
+全日制 < zen''nichisei\ ;
+勤労奉仕 < kinrouhoushi\ ;
+性腺摘除 < seisentekijo\ ;
+消毒薬 < shoudokuyaku\ ;
+憲法改正 < kenpoukaisei\ ;
+行路病者 < kourobyousha\ ;
+一人芝居 < hitorishibai\ ;
+共同防衛 < kyoudoubouei\ ;
+闘志満満 < toushimanman\ ;
+市勢調査 < shiseichousa\ ;
+会厭軟骨 < een''nankotsu\ ;
+軍用地図 < gun''youchizu\ ;
+東奔西走 < touhonseisou\ ;
+道徳律 < doutokuritsu\ ;
+交代作業 < koutaisagyou\ ;
+国防色 < kokuboushoku\ ;
+日記文学 < nikkibungaku\ ;
+終末論 < shuumatsuron\ ;
+日系米人 < nikkeibeijin\ ;
+将軍職 < shougunshoku\ ;
+至公至平 < shikoushihei\ ;
+関連会社 < kanrengaisha\ ;
+人権宣言 < jinkensengen\ ;
+人造人間 < jinzouningen\ ;
+傾斜家賃 < keishayachin\ ;
+自民党則 < jimintousoku\ ;
+反復記号 < hanpukukigou\ ;
+日本航空 < nipponkoukuu\ ;
+英才教育 < eisaikyouiku\ ;
+草月流 < sougetsuryuu\ ;
+排水条件 < haisuijouken\ ;
+英国航空 < eikokukoukuu\ ;
+明赤色 < meisekishoku\ ;
+解決策 < kaiketsusaku\ ;
+口唇裂 < koushinretsu\ ;
+七草粥 < nanakusagayu\ ;
+前哨騎兵 < zenshoukihei\ ;
+水素爆弾 < suisobakudan\ ;
+潅漑用水 < kangaiyousui\ ;
+商業学 < shougyougaku\ ;
+建設省 < kensetsushou\ ;
+分別心 < funbetsushin\ ;
+建設的 < kensetsuteki\ ;
+金鋸 < kanenokogiri\ ;
+二翻役 < ryanfan''yaku\ ;
+一斉射撃 < isseishageki\ ;
+一酸化炭素 < issankatanso\ ;
+基軸通貨 < kijikutsuuka\ ;
+傾斜生産 < keishaseisan\ ;
+境界理論 < kyoukairiron\ ;
+天皇陛下 < ten''nouheika\ ;
+天然果汁 < ten''nenkajuu\ ;
+口拍子 < kuchibyoushi\ ;
+霊肉一致 < reinikuitchi\ ;
+付加価値税 < fukakachizei\ ;
+経済復興 < keizaifukkou\ ;
+人口統計 < jinkoutoukei\ ;
+戦時産業 < senjisangyou\ ;
+古銭学者 < kosengakusha\ ;
+対弾道弾 < taidandoudan\ ;
+認証式 < ninshoushiki\ ;
+製造番号 < seizoubangou\ ;
+総括的 < soukatsuteki\ ;
+多重人格 < tajuujinkaku\ ;
+一刀両断 < ittouryoudan\ ;
+托鉢僧 < takuhatsuzou\ ;
+共産主義 < kyousanshugi\ ;
+記名投票 < kimeitouhyou\ ;
+商業国 < shougyoukoku\ ;
+仲人口 < nakoudoguchi\ ;
+桜前線 < sakurazensen\ ;
+休憩時間 < kyuukeijikan\ ;
+丸太足場 < marutaashiba\ ;
+桃色遊戯 < momoiroyuugi\ ;
+武士階級 < bushikaikyuu\ ;
+常置委員会 < jouchiiinkai\ ;
+国際電話 < kokusaidenwa\ ;
+人工地震 < jinkoujishin\ ;
+潜在主権 < senzaishuken\ ;
+過小評価 < kashouhyouka\ ;
+範疇部門 < hanchuubumon\ ;
+修道制度 < shuudouseido\ ;
+統語範疇 < tougohanchuu\ ;
+衛生設備 < eiseisetsubi\ ;
+一次産品 < ichijisanpin\ ;
+強制力 < kyouseiryoku\ ;
+公明正大 < koumeiseidai\ ;
+必読書 < hitsudokusho\ ;
+花火線香 < hanabisenkou\ ;
+圧力計 < atsuryokukei\ ;
+舶用機関 < hakuyoukikan\ ;
+随筆集 < zuihitsushuu\ ;
+公民権法 < kouminkenhou\ ;
+猫目石 < nekomokuseki\ ;
+勉強机 < benkyouzukue\ ;
+昏睡状態 < konsuijoutai\ ;
+対向車線 < taikoushasen\ ;
+鉄拳制裁 < tekkenseisai\ ;
+桂冠詩人 < keikanshijin\ ;
+人口調査 < jinkouchousa\ ;
+司法解剖 < shihoukaibou\ ;
+人口静態 < jinkouseitai\ ;
+有体動産 < yuutaidousan\ ;
+採用試験 < saiyoushiken\ ;
+白玉楼 < hakugyokurou\ ;
+気象情報 < kishoujouhou\ ;
+有線放送 < yuusenhousou\ ;
+開通式 < kaitsuushiki\ ;
+戯事 < tawamuregoto\ ;
+喀痰検査 < kakutankensa\ ;
+郷土料理 < kyoudoryouri\ ;
+三段論法 < sandanronpou\ ;
+西半球 < nishihankyuu\ ;
+時代精神 < jidaiseishin\ ;
+誇大広告 < kodaikoukoku\ ;
+都市計画 < toshikeikaku\ ;
+関東一円 < kantouichien\ ;
+自然発生 < shizenhassei\ ;
+啄木鳥 < takubokuchou\ ;
+単一形 < tan''ichigata\ ;
+欽定憲法 < kinteikenpou\ ;
+必然的 < hitsuzenteki\ ;
+数値制御 < suuchiseigyo\ ;
+武者人形 < mushaningyou\ ;
+分周回路 < bunshuukairo\ ;
+市民大会 < shimintaikai\ ;
+赤字国債 < akajikokusai\ ;
+使用方法 < shiyouhouhou\ ;
+水蟷螂 < mizukamakiri\ ;
+小春日和 < koharubiyori\ ;
+星月夜 < hoshidzukuyo\ ;
+縞織物 < shimaorimono\ ;
+公式試合 < koushikijiai\ ;
+照射処理 < shoushashori\ ;
+建設業 < kensetsugyou\ ;
+参勤交替 < sankinkoutai\ ;
+羊頭狗肉 < youtoukuniku\ ;
+斡旋業者 < assengyousha\ ;
+会社概要 < kaishagaiyou\ ;
+商人街 < shouninmachi\ ;
+一幕物 < hitomakumono\ ;
+民主政体 < minshuseitai\ ;
+粗放農業 < sohounougyou\ ;
+財務諸表 < zaimushohyou\ ;
+蚊取線香 < katorisenkou\ ;
+広報情報 < kouhoujouhou\ ;
+緊急事態 < kinkyuujitai\ ;
+均衡価格 < kinkoukakaku\ ;
+公安委員会 < kouan''iinkai\ ;
+季節変異 < kisetsuhen''i\ ;
+有感地震 < yuukanjishin\ ;
+緩和振動 < kanwashindou\ ;
+幽霊人口 < yuureijinkou\ ;
+統語指標 < tougoshihyou\ ;
+最高価格 < saikoukakaku\ ;
+百人力 < hyakuninriki\ ;
+酸性白土 < sanseihakudo\ ;
+民族衣装 < minzokuishou\ ;
+供述書 < kyoujutsusho\ ;
+非営利事業 < hieirijigyou\ ;
+実業界 < jitsugyoukai\ ;
+修士課程 < shuushikatei\ ;
+行平鍋 < yukihiranabe\ ;
+公益法人 < kouekihoujin\ ;
+歴史主義 < rekishishugi\ ;
+弁慶格子 < benkeigoushi\ ;
+第二人称 < dainininshou\ ;
+下流社会 < karyuushakai\ ;
+快楽主義 < kairakushugi\ ;
+落成式 < rakuseishiki\ ;
+柳川鍋 < yanagawanabe\ ;
+航続力 < kouzokuryoku\ ;
+制限速度 < seigensokudo\ ;
+文武両道 < bunburyoudou\ ;
+上昇限度 < joushougendo\ ;
+作用積分 < sayousekibun\ ;
+直接費 < chokusetsuhi\ ;
+腹筋運動 < fukkin''undou\ ;
+公認記録 < kouninkiroku\ ;
+山梨県 < yamanashiken\ ;
+一網打尽 < ichimoudajin\ ;
+棗椰子 < natsumeyashi\ ;
+学校用品 < gakkouyouhin\ ;
+住宅手当 < juutakuteate\ ;
+認知科学 < ninchikagaku\ ;
+商売道具 < shoubaidougu\ ;
+刺激物 < shigekibutsu\ ;
+原子戦争 < genshisensou\ ;
+漫遊客 < man''yuukyaku\ ;
+二重焦点 < nijuushouten\ ;
+瓦煎餅 < kawarasenbei\ ;
+図書館長 < toshokanchou\ ;
+在庫調整 < zaikochousei\ ;
+対数関数 < taisuukansuu\ ;
+親子丼 < oyakodonburi\ ;
+政教一致 < seikyouitchi\ ;
+文芸批評 < bungeihihyou\ ;
+線形代数 < senkeidaisuu\ ;
+連合政権 < rengouseiken\ ;
+頼母子講 < tanomoshikou\ ;
+在韓米軍 < zaikanbeigun\ ;
+著述業 < chojutsugyou\ ;
+一夜乞食 < ichiyakojiki\ ;
+異常終了 < ijoushuuryou\ ;
+品形 < shinakatachi\ ;
+試験地獄 < shikenjigoku\ ;
+社員教育 < shainkyouiku\ ;
+蒼白色 < souhakushoku\ ;
+企業年金 < kigyounenkin\ ;
+乞食根性 < kojikikonjou\ ;
+企業合同 < kigyougoudou\ ;
+自主指針 < jishushishin\ ;
+感慨無量 < kangaimuryou\ ;
+七辺形 < shichihenkei\ ;
+敵性国家 < tekiseikokka\ ;
+等差級数 < tousakyuusuu\ ;
+年末迄 < nenmatsumade\ ;
+師範学校 < shihangakkou\ ;
+経済社会 < keizaishakai\ ;
+改良主義 < kairyoushugi\ ;
+経済制裁 < keizaiseisai\ ;
+主戦投手 < shusentoushu\ ;
+売春宿 < baishun''yado\ ;
+遊撃隊員 < yuugekitaiin\ ;
+一時帰休 < ichijikikyuu\ ;
+質点系 < shitsutenkei\ ;
+受益証券 < juekishouken\ ;
+御伽話 < otogibanashi\ ;
+拙速主義 < sessokushugi\ ;
+未開拓地 < mikaitakuchi\ ;
+全権公使 < zenkenkoushi\ ;
+統制経済 < touseikeizai\ ;
+田園風景 < den''enfuukei\ ;
+旅行日程 < ryokounittei\ ;
+操業率 < sougyouritsu\ ;
+無量大数 < muryoudaisuu\ ;
+割引歩合 < waribikibuai\ ;
+反核運動 < hankakuundou\ ;
+枕屏風 < makurabyoubu\ ;
+血液学 < ketsuekigaku\ ;
+香港返還 < honkonhenkan\ ;
+企業合併 < kigyougappei\ ;
+非行少年 < hikoushounen\ ;
+基督教 < kirisutokyou\ ;
+野外撮影 < yagaisatsuei\ ;
+鼠花火 < nezumihanabi\ ;
+千手観音 < senjukan''non\ ;
+精神主義 < seishinshugi\ ;
+終始一貫 < shuushiikkan\ ;
+捕物帳 < torimonochou\ ;
+県民会館 < kenminkaikan\ ;
+教条主義 < kyoujoushugi\ ;
+更生会社 < kouseigaisha\ ;
+繊維工業 < sen''ikougyou\ ;
+人間同士 < ningendoushi\ ;
+貯蔵室 < chozoushitsu\ ;
+勘合貿易 < kangouboueki\ ;
+百家争鳴 < hyakkasoumei\ ;
+世界政策 < sekaiseisaku\ ;
+弔問客 < choumonkyaku\ ;
+家屋台帳 < kaokudaichou\ ;
+東海道線 < toukaidousen\ ;
+遺失物 < ishitsubutsu\ ;
+動脈血 < doumyakketsu\ ;
+過当競争 < katoukyousou\ ;
+液体窒素 < ekitaichisso\ ;
+平和協定 < heiwakyoutei\ ;
+無線電信 < musendenshin\ ;
+入場式 < nyuujoushiki\ ;
+細胞質 < saiboushitsu\ ;
+専門用語 < senmon''yougo\ ;
+人造肥料 < jinzouhiryou\ ;
+大砲三門 < taihousanmon\ ;
+実験装置 < jikkensouchi\ ;
+血液型 < ketsuekigata\ ;
+中央労働 < chuuouroudou\ ;
+内線番号 < naisenbangou\ ;
+伝記作者 < denkisakusha\ ;
+人民公社 < jinminkousha\ ;
+連絡切符 < renrakukippu\ ;
+標識灯 < hyoushikitou\ ;
+経営合理化 < keieigourika\ ;
+共同墓地 < kyoudoubochi\ ;
+実態調査 < jittaichousa\ ;
+総務長官 < soumuchoukan\ ;
+混乱状態 < konranjoutai\ ;
+勢車 < hazumiguruma\ ;
+哀哉 < kanashiikana\ ;
+包括的 < houkatsuteki\ ;
+劇中劇 < gekichuugeki\ ;
+家族意識 < kazokuishiki\ ;
+外柔内剛 < gaijuunaigou\ ;
+訪問販売 < houmonhanbai\ ;
+実用的 < jitsuyouteki\ ;
+侍八騎 < samuraihakki\ ;
+中間色 < chuukanshoku\ ;
+排斥運動 < haisekiundou\ ;
+開腹術 < kaifukujutsu\ ;
+原子弾頭 < genshidantou\ ;
+直撃弾 < chokugekidan\ ;
+営業案内 < eigyouan''nai\ ;
+天文航法 < tenmonkouhou\ ;
+非実際的 < hijissaiteki\ ;
+裏書譲渡 < uragakijouto\ ;
+副産物 < fukusanbutsu\ ;
+命中率 < meichuuritsu\ ;
+血友病 < ketsuyuubyou\ ;
+関係書類 < kankeishorui\ ;
+免許皆伝 < menkyokaiden\ ;
+回転競技 < kaitenkyougi\ ;
+経済水域 < keizaisuiiki\ ;
+無欲恬淡 < muyokutentan\ ;
+自我実現 < jigajitsugen\ ;
+執行猶予 < shikkouyuuyo\ ;
+融通手形 < yuuzuutegata\ ;
+厚生年金 < kouseinenkin\ ;
+院内感染 < in''naikansen\ ;
+悪性水腫 < akuseisuishu\ ;
+団十郎丈 < danjuuroujou\ ;
+精白率 < seihakuritsu\ ;
+以心伝心 < ishindenshin\ ;
+一字千金 < ichijisenkin\ ;
+業績悪化 < gyousekiakka\ ;
+兵器拡散 < heikikakusan\ ;
+交友関係 < kouyuukankei\ ;
+国際政治 < kokusaiseiji\ ;
+均質性 < kinshitsusei\ ;
+書面審理 < shomenshinri\ ;
+人間社会 < ningenshakai\ ;
+軍国主義 < gunkokushugi\ ;
+水上競技 < suijoukyougi\ ;
+河原乞食 < kawarakojiki\ ;
+戸籍係 < kosekigakari\ ;
+二重撮影 < nijuusatsuei\ ;
+絶対評価 < zettaihyouka\ ;
+在米邦人 < zaibeihoujin\ ;
+四月馬鹿 < shigatsubaka\ ;
+新進気鋭 < shinshinkiei\ ;
+所得控除 < shotokukoujo\ ;
+関係会社 < kankeigaisha\ ;
+自信満満 < jishinmanman\ ;
+日本学者 < nihongakusha\ ;
+接客業 < sekkyakugyou\ ;
+春日大社 < kasugataisha\ ;
+水盃 < mizusakazuki\ ;
+文明社会 < bunmeishakai\ ;
+蓄膿症 < chikunoushou\ ;
+同人雑誌 < doujinzasshi\ ;
+花形株 < hanagatakabu\ ;
+司法裁判 < shihousaiban\ ;
+人体実験 < jintaijikken\ ;
+亡命政権 < boumeiseiken\ ;
+振出人 < furidashinin\ ;
+仲間同士 < nakamadoushi\ ;
+経営工学 < keieikougaku\ ;
+弁護依頼人 < bengoirainin\ ;
+賛否両論 < sanpiryouron\ ;
+不法集会 < fuhoushuukai\ ;
+眼高手低 < gankoushutei\ ;
+禁欲的 < kin''yokuteki\ ;
+自動小銃 < jidoushoujuu\ ;
+地域社会 < chiikishakai\ ;
+交流人事 < kouryuujinji\ ;
+特殊効果 < tokushukouka\ ;
+一分別 < hitofunbetsu\ ;
+自家中毒 < jikachuudoku\ ;
+人気番組 < ninkibangumi\ ;
+敵本主義 < tekihonshugi\ ;
+口内性交 < kounaiseikou\ ;
+脳軟化症 < nounankashou\ ;
+半独立 < handokuritsu\ ;
+現地法人 < genchihoujin\ ;
+自動車泥 < jidoushadoro\ ;
+一時停止 < ichijiteishi\ ;
+学園紛争 < gakuenfunsou\ ;
+最高学府 < saikougakufu\ ;
+保険契約 < hokenkeiyaku\ ;
+女性差別 < joseisabetsu\ ;
+児童福祉 < jidoufukushi\ ;
+執務中 < shitsumuchuu\ ;
+試験問題 < shikenmondai\ ;
+漸進主義 < zenshinshugi\ ;
+音信不通 < onshinfutsuu\ ;
+勇往邁進 < yuuoumaishin\ ;
+静止状態 < seishijoutai\ ;
+北支事変 < hokushijihen\ ;
+寸借詐欺 < sunshakusagi\ ;
+指名通話 < shimeitsuuwa\ ;
+苦心惨憺 < kushinsantan\ ;
+牽強付会 < kenkyoufukai\ ;
+寒冷前線 < kanreizensen\ ;
+利他主義者 < ritashugisha\ ;
+親日派 < shin''nichiha\ ;
+速度制限 < sokudoseigen\ ;
+四部合唱 < shibugasshou\ ;
+電電公社 < dendenkousha\ ;
+福島県 < fukushimaken\ ;
+調色板 < choushokuban\ ;
+優勝候補 < yuushoukouho\ ;
+友好関係 < yuukoukankei\ ;
+救援物資 < kyuuenbusshi\ ;
+剪定鋏 < senteibasami\ ;
+緑黄色 < ryokuoushoku\ ;
+包紙 < tsutsumigami\ ;
+下屋敷 < shimoyashiki\ ;
+神社仏閣 < jinjabukkaku\ ;
+車用品 < kurumayouhin\ ;
+耐久力 < taikyuuryoku\ ;
+水平思考 < suiheishikou\ ;
+音感教育 < onkankyouiku\ ;
+寝台虫 < shindaimushi\ ;
+嗜虐的 < shigyakuteki\ ;
+滞納処分 < tainoushobun\ ;
+中継局 < chuukeikyoku\ ;
+共同経営 < kyoudoukeiei\ ;
+長広舌 < choukouzetsu\ ;
+二六時中 < nirokujichuu\ ;
+一時賜金 < ichijishikin\ ;
+自然崇拝 < shizensuuhai\ ;
+審議未了 < shingimiryou\ ;
+養子縁組 < youshiengumi\ ;
+日没後 < nichibotsugo\ ;
+氏族制度 < shizokuseido\ ;
+動脈瘤 < doumyakuryuu\ ;
+一輪挿 < ichirinzashi\ ;
+軍陣医学 < gunjin''igaku\ ;
+蒸発皿 < jouhatsuzara\ ;
+正四面体 < seishimentai\ ;
+定格請負 < teikakuukeoi\ ;
+賃借権 < chinshakuken\ ;
+卸問屋 < oroshidon''ya\ ;
+防湿剤 < boushitsuzai\ ;
+収穫高 < shuukakudaka\ ;
+再出発 < saishuppatsu\ ;
+待遇改善 < taiguukaizen\ ;
+繊維光学 < sen''ikougaku\ ;
+黒人霊歌 < kokujinreika\ ;
+周極星 < shuukyokusei\ ;
+零行列 < reigyouretsu\ ;
+特殊機能 < tokushukinou\ ;
+経路積分 < keirosekibun\ ;
+国営農場 < kokueinoujou\ ;
+国粋主義 < kokusuishugi\ ;
+出発点 < shuppatsuten\ ;
+甲状腺炎 < koujousen''en\ ;
+合格率 < goukakuritsu\ ;
+資産合計 < shisangoukei\ ;
+鯨飲馬食 < geiinbashoku\ ;
+心臓発作 < shinzouhossa\ ;
+新人歌手 < shinjinkashu\ ;
+輸入手形 < yunyuutegata\ ;
+圧着端子 < atsugitanshi\ ;
+未改心者 < mikaishinsha\ ;
+無効投票 < mukoutouhyou\ ;
+行進曲 < koushinkyoku\ ;
+難攻不落 < nankoufuraku\ ;
+一心同体 < isshindoutai\ ;
+宥和政策 < yuuwaseisaku\ ;
+限界効用 < genkaikouyou\ ;
+十万億土 < juuman''okudo\ ;
+変態心理 < hentaishinri\ ;
+白熱灯 < hakunetsutou\ ;
+拍子記号 < hyoushikigou\ ;
+公会問答 < koukaimondou\ ;
+考古学者 < koukogakusha\ ;
+食料品 < shokuryouhin\ ;
+野球選手 < yakyuusenshu\ ;
+操車係 < soushagakari\ ;
+夢遊病者 < muyuubyousha\ ;
+要所要所 < youshoyousho\ ;
+湿電池 < shitsudenchi\ ;
+観掌術 < kanshoujutsu\ ;
+使徒継承 < shitokeishou\ ;
+励磁電流 < reijidenryuu\ ;
+志 < kokorozashi\ ;
+政 < matsurigoto\ ;
+社会制度 < shakaiseido\ ;
+代理領事 < dairiryouji\ ;
+点数切符 < tensuukippu\ ;
+化成肥料 < kaseihiryou\ ;
+未成年者 < miseinensha\ ;
+真骨頂 < shinkotchou\ ;
+必要品 < hitsuyouhin\ ;
+画世的 < kakuseiteki\ ;
+一天万乗 < ittenbanjou\ ;
+熨斗袋 < noshibukuro\ ;
+測地学 < sokuchigaku\ ;
+親子関係 < oyakokankei\ ;
+雁木鑢 < gangiyasuri\ ;
+再割引 < saiwaribiki\ ;
+恐怖政治 < kyoufuseiji\ ;
+奉献式 < houkenshiki\ ;
+虚数単位 < kyosuutan''i\ ;
+選挙制度 < senkyoseido\ ;
+初誕生 < hatsutanjou\ ;
+三本足 < sanbon''ashi\ ;
+判断力 < handanryoku\ ;
+大願成就 < daiganjouju\ ;
+協調性 < kyouchousei\ ;
+円卓会議 < entakukaigi\ ;
+天道乾 < tentouboshi\ ;
+大宮御所 < oomiyagosho\ ;
+白日夢 < hakujitsumu\ ;
+分析表 < bunsekihyou\ ;
+上下関係 < jougekankei\ ;
+承諾書 < shoudakusho\ ;
+少食家 < shoushokuka\ ;
+仮執行 < karishikkou\ ;
+握力計 < akuryokukei\ ;
+公営企業 < koueikigyou\ ;
+重液分離 < juuekibunri\ ;
+不足勝 < fusokugachi\ ;
+実践理性 < jissenrisei\ ;
+帯鋸 < obinokogiri\ ;
+後進国 < koushinkoku\ ;
+行住坐臥 < gyoujuuzaga\ ;
+言行一致 < genkouitchi\ ;
+洗眼薬 < sengan''yaku\ ;
+復習文 < fukushuubun\ ;
+広大無辺 < koudaimuhen\ ;
+優先事項 < yuusenjikou\ ;
+携帯電話 < keitaidenwa\ ;
+止血帯 < shiketsutai\ ;
+下宿料 < geshukuryou\ ;
+時代錯誤 < jidaisakugo\ ;
+人工衛星 < jinkoueisei\ ;
+重量級 < juuryoukyuu\ ;
+線形順序 < senkeijunjo\ ;
+召使 < meshitsukai\ ;
+前進軸 < zenshinjiku\ ;
+鉄石心 < tessekishin\ ;
+甘茶蔓 < amachadzuru\ ;
+外交官補 < gaikoukanho\ ;
+署名式 < shomeishiki\ ;
+人心地 < hitogokochi\ ;
+囚人服 < shuujinfuku\ ;
+律儀者 < richigimono\ ;
+力石 < chikaraishi\ ;
+住居手当 < juukyoteate\ ;
+雁木車 < gangiguruma\ ;
+道路標示 < dourohyouji\ ;
+白鼠 < shironezumi\ ;
+予備将校 < yobishoukou\ ;
+憂欝症 < yuuutsushou\ ;
+民間飛行 < minkanhikou\ ;
+実験式 < jikkenshiki\ ;
+永子作権 < eikosakuken\ ;
+社会運動 < shakaiundou\ ;
+移行計画 < ikoukeikaku\ ;
+狂信者 < kyoushinsha\ ;
+接近経路 < sekkinkeiro\ ;
+世界経済 < sekaikeizai\ ;
+浮世草子 < ukiyozoushi\ ;
+民族的 < minzokuteki\ ;
+定数是正 < teisuuzesei\ ;
+発言者 < hatsugensha\ ;
+力瘤 < chikarakobu\ ;
+単縦列 < tanjuuretsu\ ;
+安保条約 < anpojouyaku\ ;
+販売値段 < hanbainedan\ ;
+基底構造 < kiteikouzou\ ;
+必須条件 < hissujouken\ ;
+三人組 < san''ningumi\ ;
+黒斑病 < kokuhanbyou\ ;
+区裁判所 < kusaibansho\ ;
+予行演習 < yokouenshuu\ ;
+選挙運動 < senkyoundou\ ;
+国際規模 < kokusaikibo\ ;
+悪悪戯 < waruitazura\ ;
+運転免許 < untenmenkyo\ ;
+線形論理 < senkeironri\ ;
+実用品 < jitsuyouhin\ ;
+大腿骨 < daitaikotsu\ ;
+年賀郵便 < nengayuubin\ ;
+温風暖房 < onpuudanbou\ ;
+内部構造 < naibukouzou\ ;
+水蜜桃 < suimitsutou\ ;
+不定型詩 < futeikeishi\ ;
+漂流船 < hyouryuusen\ ;
+黄金崇拝 < ougonsuuhai\ ;
+世話女房 < sewanyoubou\ ;
+犬儒学派 < kenjugakuha\ ;
+頸動脈 < keidoumyaku\ ;
+一品料理 < ippinryouri\ ;
+亜硫酸塩 < aryuusan''en\ ;
+生兵法 < namabyouhou\ ;
+烏羽色 < karasubairo\ ;
+弟弟子 < otoutodeshi\ ;
+劇文学 < gekibungaku\ ;
+加薬飯 < kayakumeshi\ ;
+北半球 < kitahankyuu\ ;
+集中線 < shuuchuusen\ ;
+有声子音 < yuuseishiin\ ;
+得業士 < tokugyoushi\ ;
+皆兵制度 < kaiheiseido\ ;
+前進角 < zenshinkaku\ ;
+未経験者 < mikeikensha\ ;
+養殖池 < youshokuchi\ ;
+嗜虐性 < shigyakusei\ ;
+尊皇王攘夷 < son''noujoui\ ;
+上意下達 < jouikatatsu\ ;
+車間距離 < shakankyori\ ;
+氷河時代 < hyougajidai\ ;
+三人称 < san''ninshou\ ;
+情報理論 < jouhouriron\ ;
+御多忙中 < gotabouchuu\ ;
+中級品 < chuukyuuhin\ ;
+漂流者 < hyouryuusha\ ;
+愛染明王 < aizenmyouou\ ;
+誘惑物 < yuuwakumono\ ;
+頭蓋骨 < tougaikotsu\ ;
+発明品 < hatsumeihin\ ;
+平面交差 < heimenkousa\ ;
+失格者 < shikkakusha\ ;
+成績表 < seisekihyou\ ;
+経験主義 < keikenshugi\ ;
+弁護士会 < bengoshikai\ ;
+注文先 < chuumonsaki\ ;
+純情可憐 < junjoukaren\ ;
+載貨吃水 < saikakissui\ ;
+既決囚 < kiketsushuu\ ;
+半濁音符 < handakuonfu\ ;
+閨秀画家 < keishuugaka\ ;
+摂動論 < setsudouron\ ;
+伏流水 < fukuryuusui\ ;
+独裁的 < dokusaiteki\ ;
+高調子 < takachoushi\ ;
+立脚地 < rikkyakuchi\ ;
+三半規管 < sanhankikan\ ;
+封建時代 < houkenjidai\ ;
+越冬資金 < ettoushikin\ ;
+再構築 < saikouchiku\ ;
+所帯道具 < shotaidougu\ ;
+傲岸無礼 < gouganburei\ ;
+社会保険 < shakaihoken\ ;
+櫓太鼓 < yaguradaiko\ ;
+止血剤 < shiketsuzai\ ;
+較優位論 < kakuyuuiron\ ;
+世論調査 < yoronchousa\ ;
+冬期休暇 < toukikyuuka\ ;
+両方共 < ryouhoutomo\ ;
+上部構造 < joubukouzou\ ;
+松葉杖 < matsubadzue\ ;
+象形文字 < shoukeimoji\ ;
+力水 < chikaramizu\ ;
+沖積統 < chuusekitou\ ;
+仕事箱 < shigotobako\ ;
+氷醋酸 < hyousakusan\ ;
+農本主義 < nouhonshugi\ ;
+書籍商 < shosekishou\ ;
+一切衆生 < issaishujou\ ;
+旧態依然 < kyuutaiizen\ ;
+整理番号 < seiribangou\ ;
+仮綴本 < karitojihon\ ;
+発電所 < hatsudensho\ ;
+当座資産 < touzashisan\ ;
+官能的 < kan''nouteki\ ;
+残品整理 < zanpinseiri\ ;
+末梢的 < masshouteki\ ;
+中間国 < chuukankoku\ ;
+宇宙速度 < uchuusokudo\ ;
+思索的 < shisakuteki\ ;
+南口 < minamiguchi\ ;
+加水分解 < kasuibunkai\ ;
+出身校 < shusshinkou\ ;
+灰青色 < haiseishoku\ ;
+航海術 < koukaijutsu\ ;
+小東京 < shoutoukyou\ ;
+宣伝価値 < sendenkachi\ ;
+年季奉公 < nenkiboukou\ ;
+千人力 < sen''ninriki\ ;
+人工芝 < jinkoushiba\ ;
+軽量級 < keiryoukyuu\ ;
+力業 < chikarawaza\ ;
+貨幣経済 < kaheikeizai\ ;
+無期懲役 < mukichoueki\ ;
+拘束圧 < kousokuatsu\ ;
+戦闘力 < sentouryoku\ ;
+市場区分 < shijoukubun\ ;
+球面鏡 < kyuumenkyou\ ;
+初期設定 < shokisettei\ ;
+人造繊維 < jinzousen''i\ ;
+普通預金 < futsuuyokin\ ;
+低利資金 < teirishikin\ ;
+人形劇 < ningyougeki\ ;
+無骨者 < bukotsumono\ ;
+真珠細工 < shinjuzaiku\ ;
+主知主義 < shuchishugi\ ;
+逆睫 < sakamatsuge\ ;
+町奉行 < machibugyou\ ;
+空証文 < karashoumon\ ;
+二項係数 < nikoukeisuu\ ;
+素性構造 < soseikouzou\ ;
+愛国主義 < aikokushugi\ ;
+戦闘支援 < sentoushien\ ;
+人名辞書 < jinmeijisho\ ;
+前輪駆動 < zenrinkudou\ ;
+価格操作 < kakakusousa\ ;
+放物線 < houbutsusen\ ;
+形而下学 < keijikagaku\ ;
+一期一会 < ichigoichie\ ;
+調子者 < choushimono\ ;
+現実感 < genjitsukan\ ;
+鰹節 < katsuobushi\ ;
+積分学 < sekibungaku\ ;
+土木工事 < dobokukouji\ ;
+女子高生 < joshikousei\ ;
+現実性 < genjitsusei\ ;
+高電圧 < kouden''atsu\ ;
+学問的 < gakumonteki\ ;
+王道楽土 < oudourakudo\ ;
+悪戦苦闘 < akusenkutou\ ;
+神経外科 < shinkeigeka\ ;
+学究的 < gakkyuuteki\ ;
+非開示合意 < hikaijigoui\ ;
+収穫祭 < shuukakusai\ ;
+物理学 < butsurigaku\ ;
+不眠不休 < fuminfukyuu\ ;
+垂直線 < suichokusen\ ;
+名誉教授 < meiyokyouju\ ;
+図書館員 < toshokan''in\ ;
+歴史学 < rekishigaku\ ;
+潤滑剤 < junkatsuzai\ ;
+組織学 < soshikigaku\ ;
+高歌放吟 < koukahougin\ ;
+発電子 < hatsudenshi\ ;
+三尊仏 < sanzonbutsu\ ;
+引取人 < hikitorinin\ ;
+構成単位 < kouseitan''i\ ;
+外人記者 < gaijinkisha\ ;
+漂泊者 < hyouhakusha\ ;
+例外処理 < reigaishori\ ;
+夫婦茶碗 < meotodjawan\ ;
+真田虫 < sanadamushi\ ;
+闇商人 < yamishounin\ ;
+入漁料 < nyuugyoryou\ ;
+全面講和 < zenmenkouwa\ ;
+七宝焼 < shippouyaki\ ;
+鋼鉄板 < koutetsuban\ ;
+優良株 < yuuryoukabu\ ;
+本格的 < honkakuteki\ ;
+復讐戦 < fukushuusen\ ;
+暴力団 < bouryokudan\ ;
+初診料 < shoshinryou\ ;
+義務教育 < gimukyouiku\ ;
+口達者 < kuchidassha\ ;
+耐熱性 < tainetsusei\ ;
+増血剤 < zouketsuzai\ ;
+悲観論者 < hikanronsha\ ;
+個人情報 < kojinjouhou\ ;
+北北東 < hokuhokutou\ ;
+発言権 < hatsugenken\ ;
+町段畝歩 < choutansebu\ ;
+急成長 < kyuuseichou\ ;
+代理大使 < dairitaishi\ ;
+構造主義 < kouzoushugi\ ;
+出資額 < shusshigaku\ ;
+内分泌 < naibunpitsu\ ;
+兜虫 < kabutomushi\ ;
+内線電話 < naisendenwa\ ;
+公示価格 < koujikakaku\ ;
+液体酸素 < ekitaisanso\ ;
+四旬節 < shijunsetsu\ ;
+沃度丁幾 < youdochinki\ ;
+九官鳥 < kyuukanchou\ ;
+刑事訴訟 < keijisoshou\ ;
+老人力 < roujinryoku\ ;
+稼働人口 < kadoujinkou\ ;
+軽機関銃 < keikikanjuu\ ;
+機密保護 < kimitsuhogo\ ;
+建築士 < kenchikushi\ ;
+太極拳 < taikyokuken\ ;
+生番組 < namabangumi\ ;
+養殖場 < youshokujou\ ;
+予備交渉 < yobikoushou\ ;
+虚脱感 < kyodatsukan\ ;
+象牙質 < zougeshitsu\ ;
+隆鼻術 < ryuubijutsu\ ;
+表面積 < hyoumenseki\ ;
+透視図法 < toushizuhou\ ;
+練習試合 < renshuujiai\ ;
+努力賞 < doryokushou\ ;
+十人並 < juunin''nami\ ;
+薬鑵頭 < yakan''atama\ ;
+可視光線 < kashikousen\ ;
+筆記試験 < hikkishiken\ ;
+公定相場 < kouteisouba\ ;
+価格規制 < kakakukisei\ ;
+加重平均 < kajuuheikin\ ;
+武装警官 < busoukeikan\ ;
+商売筋 < shoubaisuji\ ;
+水子供養 < mizugokuyou\ ;
+港湾局 < kouwankyoku\ ;
+千変万化 < senpenbanka\ ;
+水商売 < mizushoubai\ ;
+鉄道便 < tetsudoubin\ ;
+査定価格 < sateikakaku\ ;
+民族学 < minzokugaku\ ;
+歴史劇 < rekishigeki\ ;
+溝形鋼 < mizogatakou\ ;
+明晰夢 < meisekiyume\ ;
+形体 < narikatachi\ ;
+下層社会 < kasoushakai\ ;
+断続的 < danzokuteki\ ;
+式部省 < shikibushou\ ;
+極道者 < gokudoumono\ ;
+開校式 < kaikoushiki\ ;
+民約論 < min''yakuron\ ;
+防御率 < bougyoritsu\ ;
+表面的 < hyoumenteki\ ;
+計時係 < keijigakari\ ;
+後発品 < kouhatsuhin\ ;
+自然主義 < shizenshugi\ ;
+薩摩焼 < satsumayaki\ ;
+床柱 < tokobashira\ ;
+興味本位 < kyoumihon''i\ ;
+出身地 < shusshinchi\ ;
+無体資産 < mutaishisan\ ;
+護身術 < goshinjutsu\ ;
+経済封鎖 < keizaifuusa\ ;
+競争相手 < kyousouaite\ ;
+出没 < shutsubotsu\ ;
+与太話 < yotabanashi\ ;
+左端 < hidarihashi\ ;
+再入学 < sainyuugaku\ ;
+五輪大会 < gorintaikai\ ;
+協約書 < kyouyakusho\ ;
+日本三景 < nihonsankei\ ;
+三羽烏 < sanbagarasu\ ;
+訪問客 < houmonkyaku\ ;
+油性塗料 < yuseitoryou\ ;
+治験薬 < chiken''yaku\ ;
+性善説 < seizensetsu\ ;
+仕事柄 < shigotogara\ ;
+大根足 < daikon''ashi\ ;
+改訂増補 < kaiteizouho\ ;
+一般概念 < ippangainen\ ;
+光瀬龍 < mitsuseryuu\ ;
+狼藉者 < rouzekimono\ ;
+心拍数 < shinpakusuu\ ;
+小一時間 < koichijikan\ ;
+三脚椅子 < sankyakuisu\ ;
+動物誌 < doubutsushi\ ;
+返却値 < henkyakuchi\ ;
+皮膚感覚 < hifukankaku\ ;
+無駄話 < mudabanashi\ ;
+分子式 < bunshishiki\ ;
+降車口 < koushaguchi\ ;
+検出器 < kenshutsuki\ ;
+権利行使 < kenrikoushi\ ;
+落葉松 < rakuyoushou\ ;
+極前線 < kyokuzensen\ ;
+超越点 < chouetsuten\ ;
+黒猩々 < kuroshoujou\ ;
+漢字変換 < kanjihenkan\ ;
+国慶節 < kokkeisetsu\ ;
+無体財産 < mutaizaisan\ ;
+巴瓦 < tomoegawara\ ;
+天産物 < tensanbutsu\ ;
+紳士録 < shinshiroku\ ;
+再入国 < sainyuukoku\ ;
+全体会議 < zentaikaigi\ ;
+二重抵当 < nijuuteitou\ ;
+切日 < shimekiribi\ ;
+機械文明 < kikaibunmei\ ;
+簡潔性 < kanketsusei\ ;
+天津乙女 < amatsuotome\ ;
+切断面 < setsudanmen\ ;
+引込線 < hikikomisen\ ;
+利害関係 < rigaikankei\ ;
+多角経営 < takakukeiei\ ;
+夫婦別姓 < fuufubessei\ ;
+粗忽者 < sokotsumono\ ;
+開会式 < kaikaishiki\ ;
+日本語訳 < nihongoyaku\ ;
+交換機能 < koukankinou\ ;
+産卵場所 < sanranbasho\ ;
+感傷的 < kanshouteki\ ;
+市有物 < shiyuubutsu\ ;
+走行距離 < soukoukyori\ ;
+無尽組合 < mujinkumiai\ ;
+再生利用 < saiseiriyou\ ;
+聖職者 < seishokusha\ ;
+航空母艦 < koukuubokan\ ;
+中衣嚢 < nakagakushi\ ;
+独立語 < dokuritsugo\ ;
+人名辞典 < jinmeijiten\ ;
+昨非今是 < sakuhikonze\ ;
+育児室 < ikujishitsu\ ;
+新古典派 < shinkotenha\ ;
+繁殖地 < hanshokuchi\ ;
+一人称 < ichininshou\ ;
+長崎県 < nagasakiken\ ;
+経営資源 < keieishigen\ ;
+幼心 < osanagokoro\ ;
+被害妄想 < higaimousou\ ;
+電力計 < denryokukei\ ;
+製氷皿 < seihyouzara\ ;
+細菌兵器 < saikinheiki\ ;
+飽和溶液 < houwayoueki\ ;
+一般会計 < ippankaikei\ ;
+準備資金 < junbishikin\ ;
+主税局 < shuzeikyoku\ ;
+政党政治 < seitouseiji\ ;
+母子年金 < boshinenkin\ ;
+接続語 < setsuzokugo\ ;
+特集号 < tokushuugou\ ;
+黒褐色 < kokkasshoku\ ;
+美容整形 < biyouseikei\ ;
+中国人 < chuugokujin\ ;
+花筵 < hanamushiro\ ;
+初期投資 < shokitoushi\ ;
+最短距離 < saitankyori\ ;
+周辺機器 < shuuhenkiki\ ;
+制限時間 < seigenjikan\ ;
+勤労意欲 < kinrouiyoku\ ;
+従属国 < juuzokukoku\ ;
+口返答 < kuchihentou\ ;
+倉庫会社 < soukogaisha\ ;
+男鰥 < otokoyamome\ ;
+未開社会 < mikaishakai\ ;
+減衰率 < gensuiritsu\ ;
+導電率 < doudenritsu\ ;
+一了簡 < ichiryoukan\ ;
+過大評価 < kadaihyouka\ ;
+花祭 < hanamatsuri\ ;
+再輸出 < saiyushutsu\ ;
+青銅色 < seidoushoku\ ;
+破廉恥罪 < harenchizai\ ;
+隊商宿 < taishouyado\ ;
+時限装置 < jigensouchi\ ;
+景気変動 < keikihendou\ ;
+式次第 < shikishidai\ ;
+一次記憶 < ichijikioku\ ;
+生産物 < seisanbutsu\ ;
+衝動行為 < shoudoukoui\ ;
+許容範囲 < kyoyouhan''i\ ;
+幻覚症 < genkakushou\ ;
+生産管理 < seisankanri\ ;
+投手力 < toushuryoku\ ;
+閉会式 < heikaishiki\ ;
+沖積層 < chuusekisou\ ;
+医療伝道 < iryoudendou\ ;
+催眠術 < saiminjutsu\ ;
+蝙蝠傘 < koumorigasa\ ;
+突貫工事 < tokkankouji\ ;
+向日性 < kounichisei\ ;
+初姿 < hatsusugata\ ;
+吸取紙 < suitorigami\ ;
+選考基準 < senkoukijun\ ;
+高話 < takabanashi\ ;
+高圧的 < kouatsuteki\ ;
+有力者 < yuuryokusha\ ;
+別問題 < betsumondai\ ;
+代数式 < daisuushiki\ ;
+入港料 < nyuukouryou\ ;
+膝頭 < hizagashira\ ;
+無宿者 < mushukumono\ ;
+都市銀行 < toshiginkou\ ;
+原子力 < genshiryoku\ ;
+成文律 < seibunritsu\ ;
+男一匹 < otokoippiki\ ;
+塞栓症 < sokusenshou\ ;
+商売柄 < shoubaigara\ ;
+腹足類 < fukusokurui\ ;
+東印度 < higashiindo\ ;
+資本力 < shihonryoku\ ;
+巻柱 < makibashira\ ;
+祇園祭 < gionmatsuri\ ;
+上京中 < joukyouchuu\ ;
+催眠薬 < saimin''yaku\ ;
+宣伝映画 < senden''eiga\ ;
+慈善事業 < jizenjigyou\ ;
+現象学 < genshougaku\ ;
+秋津島 < akitsushima\ ;
+羊小屋 < hitsujigoya\ ;
+装飾品 < soushokuhin\ ;
+千日手 < sen''nichite\ ;
+加速度計 < kasokudokei\ ;
+傲慢不遜 < goumanfuson\ ;
+刑務作業 < keimusagyou\ ;
+地球規模 < chikyuukibo\ ;
+植民地 < shokuminchi\ ;
+途中計時 < tochuukeiji\ ;
+外分泌 < gaibunpitsu\ ;
+隣近所 < tonarikinjo\ ;
+対頂角 < taichoukaku\ ;
+高射特科 < koushatokka\ ;
+肩甲骨 < kenkoukotsu\ ;
+三面六臂 < sanmenroppi\ ;
+微分断面 < bibundanmen\ ;
+分娩作用 < bunbensayou\ ;
+腰弁当 < koshibentou\ ;
+口巧者 < kuchigousha\ ;
+保健体育 < hokentaiiku\ ;
+暴走運転 < bousouunten\ ;
+底力 < sokodjikara\ ;
+不世出 < fuseishutsu\ ;
+諮問機関 < shimonkikan\ ;
+先日付 < sakihidzuke\ ;
+透視力 < toushiryoku\ ;
+創設者 < sousetsusha\ ;
+田舎芝居 < inakashibai\ ;
+金魚鉢 < kingyobachi\ ;
+癌遺伝子 < gan''idenshi\ ;
+百鬼夜行 < hyakkiyakou\ ;
+無死満塁 < mushimanrui\ ;
+二番抵当 < nibanteitou\ ;
+衒学的 < gengakuteki\ ;
+総務部長 < soumubuchou\ ;
+金石学 < kinsekigaku\ ;
+野菜畑 < yasaibatake\ ;
+自由貿易 < jiyuuboueki\ ;
+平和条項 < heiwajoukou\ ;
+直感的 < chokkanteki\ ;
+動物相 < doubutsusou\ ;
+気分転換 < kibuntenkan\ ;
+賃仕事 < chinshigoto\ ;
+特許主 < tokkyonushi\ ;
+儒教主義 < jukyoushugi\ ;
+奉納物 < hounoubutsu\ ;
+女歌舞伎 < on''nakabuki\ ;
+保釈中 < hoshakuchuu\ ;
+飛行機雲 < hikoukigumo\ ;
+青藍色 < seiranshoku\ ;
+脅迫者 < kyouhakusha\ ;
+動物界 < doubutsukai\ ;
+路面電車 < romendensha\ ;
+通行上 < tsuukoudome\ ;
+強奪者 < goudatsusha\ ;
+脅迫罪 < kyouhakuzai\ ;
+単独行為 < tandokukoui\ ;
+団結権 < danketsuken\ ;
+誠心誠意 < seishinseii\ ;
+約半年 < yakuhan''nen\ ;
+日本料理 < nihonryouri\ ;
+投票箱 < touhyoubako\ ;
+素人芸 < shiroutogei\ ;
+積極性 < sekkyokusei\ ;
+極座標 < kyokuzahyou\ ;
+寝正月 < neshougatsu\ ;
+浚渫機 < shunsetsuki\ ;
+翼面積 < yokumenseki\ ;
+畳表 < tatamiomote\ ;
+総目録 < soumokuroku\ ;
+核反応 < kakuhan''nou\ ;
+制酸薬 < seisan''yaku\ ;
+超人的 < choujinteki\ ;
+第一流 < daiichiryuu\ ;
+故事来歴 < kojiraireki\ ;
+内輪喧嘩 < uchiwagenka\ ;
+足拍子 < ashibyoushi\ ;
+弱材料 < yowazairyou\ ;
+接触線 < sesshokusen\ ;
+亜硝酸塩 < ashousan''en\ ;
+一角獣座 < ikkakujuuza\ ;
+出力 < shutsuryoku\ ;
+役力士 < yakurikishi\ ;
+統轄者 < toukatsusha\ ;
+反体制派 < hantaiseiha\ ;
+区劃整理 < kukakuseiri\ ;
+仕事中 < shigotochuu\ ;
+土百姓 < dobyakushou\ ;
+文学賞 < bungakushou\ ;
+招請国 < shouseikoku\ ;
+総収入 < soushuunyuu\ ;
+測量船 < sokuryousen\ ;
+放任主義 < houninshugi\ ;
+遺族給付 < izokukyuufu\ ;
+変位制御 < hen''iseigyo\ ;
+借地権 < shakuchiken\ ;
+文部大臣 < monbudaijin\ ;
+女権論者 < jokenronsha\ ;
+下士官兵 < kashikanhei\ ;
+沖積世 < chuusekisei\ ;
+中禅寺湖 < chuuzenjiko\ ;
+口述書 < koujutsusho\ ;
+殉職者 < junshokusha\ ;
+製品原価 < seihingenka\ ;
+人民主義 < jinminshugi\ ;
+勉強部屋 < benkyoubeya\ ;
+病虫害 < byouchuugai\ ;
+神宮外苑 < jinguugaien\ ;
+桜餅 < sakuramochi\ ;
+桜飯 < sakurameshi\ ;
+技術的 < gijutsuteki\ ;
+小説家 < shousetsuka\ ;
+特約店 < tokuyakuten\ ;
+交通量 < koutsuuryou\ ;
+全般支援 < zenpanshien\ ;
+少壮有為 < shousouyuui\ ;
+経口投与 < keikoutouyo\ ;
+道案内 < michian''nai\ ;
+換気装置 < kankisouchi\ ;
+共和制度 < kyouwaseido\ ;
+道普請 < michibushin\ ;
+好色者 < koushokusha\ ;
+二課勉強 < nikabenkyou\ ;
+消臭剤 < shoushuuzai\ ;
+予防接種 < yobousesshu\ ;
+独善的 < dokuzenteki\ ;
+異国情緒 < ikokujoucho\ ;
+解像力 < kaizouryoku\ ;
+運転停止 < untenteishi\ ;
+悪口雑言 < akkouzougon\ ;
+軍法会議 < gunpoukaigi\ ;
+直出 < chokushutsu\ ;
+浸透圧 < shintouatsu\ ;
+熱血漢 < nekketsukan\ ;
+天地無用 < tenchimuyou\ ;
+畳職 < tatamishoku\ ;
+異常性欲 < ijouseiyoku\ ;
+岩石学 < gansekigaku\ ;
+蜜柑畑 < mikanbatake\ ;
+烏天狗 < karasutengu\ ;
+紳士的 < shinshiteki\ ;
+人工受胎 < jinkoujutai\ ;
+日本文法 < nihonbunpou\ ;
+窒息死 < chissokushi\ ;
+上下水道 < jougesuidou\ ;
+三大節 < sandaisetsu\ ;
+活断層 < katsudansou\ ;
+銀行口座 < ginkoukouza\ ;
+目鼻立 < mehanadachi\ ;
+周期律 < shuukiritsu\ ;
+草冠 < kusakanmuri\ ;
+退紅色 < taikoushoku\ ;
+夏期大学 < kakidaigaku\ ;
+連邦議会 < renpougikai\ ;
+撮像管 < satsuzoukan\ ;
+腹八分 < harahachibu\ ;
+末期症状 < makkijoutai\ ;
+五段動詞 < godandoushi\ ;
+立法機関 < rippoukikan\ ;
+因循姑息 < injunkosoku\ ;
+進入路 < shin''nyuuro\ ;
+大山椒魚 < oosanshouuo\ ;
+虎視眈眈 < koshitantan\ ;
+背日性 < haijitsusei\ ;
+背面飛行 < haimenhikou\ ;
+弾丸道路 < dangandouro\ ;
+間奏曲 < kansoukyoku\ ;
+優先外貨 < yuusengaika\ ;
+当用漢字 < touyoukanji\ ;
+指南役 < shinan''yaku\ ;
+脅迫状 < kyouhakujou\ ;
+民本主義 < minponshugi\ ;
+功名心 < koumyoushin\ ;
+回教国 < kaikyoukoku\ ;
+骨膜炎 < kotsumakuen\ ;
+人工受紛 < jinkoujufun\ ;
+主要物価 < shuyoubukka\ ;
+沢庵漬 < takuandzuke\ ;
+根切虫 < nekirimushi\ ;
+人工受精 < jinkoujusei\ ;
+送料共 < souryoutomo\ ;
+張本人 < chouhon''nin\ ;
+登山電車 < tozandensha\ ;
+暫定政府 < zanteiseifu\ ;
+乗車口 < joushaguchi\ ;
+乗合馬車 < noriaibasha\ ;
+一日路 < ichinichiji\ ;
+地質図 < chishitsuzu\ ;
+期成同盟 < kiseidoumei\ ;
+立明戦 < ritsumeisen\ ;
+抽象論 < chuushouron\ ;
+散光星雲 < sankouseiun\ ;
+仕訳表 < shiwakehyou\ ;
+飢餓療法 < kigaryouhou\ ;
+国税庁 < kokuzeichou\ ;
+糸偏景気 < itohenkeiki\ ;
+物価変動 < bukkahendou\ ;
+性悪説 < seiakusetsu\ ;
+近郊都市 < kinkoutoshi\ ;
+懐郷病 < kaikyoubyou\ ;
+公開期間 < koukaikikan\ ;
+前後不覚 < zengofukaku\ ;
+準備体操 < junbitaisou\ ;
+母系家族 < bokeikazoku\ ;
+歯科医術 < shikaijutsu\ ;
+金管楽器 < kinkangakki\ ;
+切磋琢磨 < sessatakuma\ ;
+一時解雇 < ichijikaiko\ ;
+柑橘類 < kankitsurui\ ;
+運転資金 < untenshikin\ ;
+塑性限界 < soseigenkai\ ;
+金権政治 < kinkenseiji\ ;
+防御部隊 < bougyobutai\ ;
+静止衛星 < seishieisei\ ;
+一音節 < ichionsetsu\ ;
+再度協議 < saidokyougi\ ;
+脱炭酸 < datsutansan\ ;
+新技術 < shingijutsu\ ;
+逆探知 < gyakutanchi\ ;
+一切合財 < issaigassai\ ;
+遺産相続 < isansouzoku\ ;
+拾得者 < shuutokusha\ ;
+宝物殿 < houmotsuden\ ;
+喫煙席 < kitsuenseki\ ;
+冷血漢 < reiketsukan\ ;
+塑性変形 < soseihenkei\ ;
+見様見真似 < miyoumimane\ ;
+主力艦 < shuryokukan\ ;
+一天四海 < ittenshikai\ ;
+車大工 < kurumadaiku\ ;
+過食症 < kashokushou\ ;
+音響効果 < onkyoukouka\ ;
+宿命論 < shukumeiron\ ;
+入金票 < nyuukinhyou\ ;
+単本位性 < tanhon''isei\ ;
+雲散霧消 < unsanmushou\ ;
+全体主義 < zentaishugi\ ;
+花屋敷 < hanayashiki\ ;
+共白髪 < tomoshiraga\ ;
+停止時間 < teishijikan\ ;
+低空飛行 < teikuuhikou\ ;
+口座係 < kouzakakari\ ;
+瓢虫 < tentoumushi\ ;
+生存率 < seizonritsu\ ;
+支度部屋 < shitakubeya\ ;
+熊本県 < kumamotoken\ ;
+直銭形 < chokusenkei\ ;
+動物性 < doubutsusei\ ;
+原爆症 < genbakushou\ ;
+加工貿易 < kakouboueki\ ;
+衛星放送 < eiseihousou\ ;
+電気分解 < denkibunkai\ ;
+左下 < hidarishita\ ;
+風致地区 < fuuchichiku\ ;
+密閉容器 < mippeiyouki\ ;
+連帯債務 < rentaisaimu\ ;
+金剛薩堕 < kongousatta\ ;
+一人天下 < hitoridenka\ ;
+電動式 < dendoushiki\ ;
+時間反転 < jikanhanten\ ;
+生産力 < seisanryoku\ ;
+副牧師 < fukubokushi\ ;
+聖餐式 < seisanshiki\ ;
+逆関数 < gyakukansuu\ ;
+七五三 < shichigosan\ ;
+駐留軍 < chuuryuugun\ ;
+唯物論 < yuibutsuron\ ;
+旅商人 < tabishounin\ ;
+西欧文明 < seioubunmei\ ;
+下部組織 < kabusoshiki\ ;
+相乗効果 < soujoukouka\ ;
+水平距離 < suiheikyori\ ;
+百出 < hyakushutsu\ ;
+技術料 < gijutsuryou\ ;
+軍備撤廃 < gunbiteppai\ ;
+固有名詞 < koyuumeishi\ ;
+練習帳 < renshuuchou\ ;
+造石高 < zoukokudaka\ ;
+軍隊式 < guntaishiki\ ;
+翻訳者 < hon''yakusha\ ;
+潤目鰯 < urumeiwashi\ ;
+人間疎外 < ningensogai\ ;
+茶褐色 < chakasshoku\ ;
+確実度 < kakujitsudo\ ;
+有機化学 < yuukikagaku\ ;
+総力戦 < souryokusen\ ;
+仲間値段 < nakamanedan\ ;
+好色漢 < koushokukan\ ;
+温故知新 < onkochishin\ ;
+初投稿 < hatsutoukou\ ;
+万万一 < manman''ichi\ ;
+暗視装置 < anshisouchi\ ;
+国家試験 < kokkashiken\ ;
+青果市場 < seikaichiba\ ;
+若侍 < wakazamurai\ ;
+紳士服 < shinshifuku\ ;
+民事裁判 < minjisaiban\ ;
+原子兵器 < genshiheiki\ ;
+一仕事 < hitoshigoto\ ;
+嗅神経 < kyuushinkei\ ;
+肯定応答 < kouteioutou\ ;
+変更不能 < henkoufunou\ ;
+継続的 < keizokuteki\ ;
+文学的 < bungakuteki\ ;
+紀勢本線 < kiseihonsen\ ;
+候由 < sourouyoshi\ ;
+麻裏草履 < asaurazouri\ ;
+六重唱 < rokujuushou\ ;
+台湾坊主 < taiwanbouzu\ ;
+季刊雑誌 < kikanzasshi\ ;
+南阿戦争 < nan''asensou\ ;
+無線周波 < musenshuuha\ ;
+玄人筋 < kuroutosuji\ ;
+長期金利 < choukikinri\ ;
+囃子方 < hayashikata\ ;
+大人物 < daijinbutsu\ ;
+飛行機等 < hikoukinado\ ;
+傀儡政府 < kairaiseifu\ ;
+同系色 < doukeishoku\ ;
+紅白粉 < benioshiroi\ ;
+宣誓式 < senseishiki\ ;
+市外電話 < shigaidenwa\ ;
+連邦政府 < renpouseifu\ ;
+放歌高吟 < houkakougin\ ;
+中和熱 < chuuwanetsu\ ;
+微量元素 < biryougenso\ ;
+英字新聞 < eijishinbun\ ;
+満身創痍 < manshinsoui\ ;
+第二組合 < dainikumiai\ ;
+消耗的 < shoukouteki\ ;
+攻撃的 < kougekiteki\ ;
+埋蔵物 < maizoubutsu\ ;
+副読本 < fukudokuhon\ ;
+麝香鼠 < jakounezumi\ ;
+木賃宿 < kichin''yado\ ;
+四角柱 < shikakuchuu\ ;
+中空壁 < chuukuukabe\ ;
+婦人警官 < fujinkeikan\ ;
+考証学 < koushougaku\ ;
+第三世界 < daisansekai\ ;
+毘沙門天 < bishamonten\ ;
+社会主義 < shakaishugi\ ;
+学位論文 < gakuironbun\ ;
+実証的 < jisshouteki\ ;
+救済策 < kyuusaisaku\ ;
+軍国調 < gunkokuchou\ ;
+白蝋病 < hakuroubyou\ ;
+社交辞令 < shakoujirei\ ;
+徴兵忌避 < chouheikihi\ ;
+狂犬病 < kyoukenbyou\ ;
+民衆的 < minshuuteki\ ;
+機会均等 < kikaikintou\ ;
+暫定措置 < zanteisochi\ ;
+方向音痴 < houkouonchi\ ;
+一両年 < ichiryounen\ ;
+世界銀行 < sekaiginkou\ ;
+大仏殿 < daibutsuden\ ;
+刹那的 < setsunateki\ ;
+全権委任 < zenken''inin\ ;
+伽話 < togibanashi\ ;
+自然言語 < shizengengo\ ;
+勅任官 < chokuninkan\ ;
+誇大妄想 < kodaimousou\ ;
+双十節 < soujuusetsu\ ;
+好色本 < koushokubon\ ;
+化粧道具 < keshoudougu\ ;
+不変資本 < fuhenshihon\ ;
+窒化物 < chikkabutsu\ ;
+松飾 < matsukazari\ ;
+三角翼 < sankakuyoku\ ;
+賞味期限 < shoumikigen\ ;
+成長株 < seichoukabu\ ;
+石材商 < sekizaishou\ ;
+供託金 < kyoutakukin\ ;
+心臓外科 < shinzougeka\ ;
+猫額大 < byougakudai\ ;
+地方色 < chihoushoku\ ;
+幾何級数 < kikakyuusuu\ ;
+三部合奏 < sanbugassou\ ;
+生中継 < namachuukei\ ;
+吸収剤 < kyuushuuzai\ ;
+蒙古人種 < moukojinshu\ ;
+電気化学 < denkikagaku\ ;
+東風 < higashikaze\ ;
+建蔽率 < kenpeiritsu\ ;
+客観的 < kyakkanteki\ ;
+豆腐一丁 < toufuitchou\ ;
+消費都市 < shouhitoshi\ ;
+下級職 < kakyuushoku\ ;
+一一〇番 < hyakutooban\ ;
+修飾語 < shuushokugo\ ;
+家族制度 < kazokuseido\ ;
+生存期間 < seizonkikan\ ;
+大食漢 < taishokukan\ ;
+冷笑的 < reishouteki\ ;
+支給額 < shikyuugaku\ ;
+不均質 < fukinshitsu\ ;
+代表的 < daihyouteki\ ;
+入道雲 < nyuudougumo\ ;
+野良仕事 < norashigoto\ ;
+共通点 < kyoutsuuten\ ;
+日伊辞典 < nichiijiten\ ;
+公徳心 < koutokushin\ ;
+不正乗車 < fuseijousha\ ;
+調査結果 < chousakekka\ ;
+形式論 < keishikiron\ ;
+不当廉売 < futourenbai\ ;
+金環食 < kinkanshoku\ ;
+出札所 < shussatsujo\ ;
+滅多矢鱈 < mettayatara\ ;
+北極海 < hokkyokukai\ ;
+前人未踏 < zenjinmitou\ ;
+行官庁 < gyoukanchou\ ;
+不当利得 < futouritoku\ ;
+回教寺院 < kaikyoujiin\ ;
+保身術 < hoshinjutsu\ ;
+鑑識眼 < kanshikigan\ ;
+北極洋 < hokkyokuyou\ ;
+赤紫 < akamurasaki\ ;
+軍事訓練 < gunjikunren\ ;
+彫刻界 < choukokukai\ ;
+馬鹿話 < bakabanashi\ ;
+総合口座 < sougoukouza\ ;
+物納税 < butsunouzei\ ;
+郡県制度 < gunkenseido\ ;
+使用可能 < shiyoukanou\ ;
+下女中 < shimojochuu\ ;
+内部留保 < naiburyuuho\ ;
+地下室 < chikashitsu\ ;
+再販制度 < saihanseido\ ;
+被選挙権 < hisenkyoken\ ;
+貸本屋 < kashihon''ya\ ;
+物価統制 < bukkatousei\ ;
+阿呆陀羅経 < ahodarakyou\ ;
+因数分解 < insuubunkai\ ;
+鍾乳洞 < shounyuudou\ ;
+職員録 < shokuinroku\ ;
+生生流転 < seiseiruten\ ;
+無知蒙昧 < muchimoumai\ ;
+梯子酒 < hashigozake\ ;
+滞在客 < taizaikyaku\ ;
+蓄電池 < chikudenchi\ ;
+試掘者 < shikutsusha\ ;
+大学寮 < daigakuryou\ ;
+姫小松 < himekomatsu\ ;
+真実味 < shinjitsumi\ ;
+旅役者 < tabiyakusha\ ;
+国民的 < kokuminteki\ ;
+戦没者 < senbotsusha\ ;
+流行病 < ryuukoubyou\ ;
+彫刻版 < choukokuban\ ;
+堕落坊主 < darakubouzu\ ;
+舞台度胸 < butaidokyou\ ;
+周旋業 < shuusengyou\ ;
+団扇虫 < uchiwamushi\ ;
+泰西名画 < taiseimeiga\ ;
+柳腰 < yanagigoshi\ ;
+口小言 < kuchikogoto\ ;
+法治国家 < houchikokka\ ;
+優先順位 < yuusenjun''i\ ;
+任命式 < ninmeishiki\ ;
+電力債 < denryokusai\ ;
+単位組合 < tan''ikumiai\ ;
+力動的 < rikidouteki\ ;
+夏帽子 < natsuboushi\ ;
+睡眠薬 < suimin''yaku\ ;
+卸相場 < oroshisouba\ ;
+印刷業 < insatsugyou\ ;
+管理情報 < kanrijouhou\ ;
+伝導率 < dendouritsu\ ;
+蛸入道 < takonyuudou\ ;
+談話室 < danwashitsu\ ;
+完全主義 < kanzenshugi\ ;
+安月給 < yasugekkyuu\ ;
+北極星 < hokkyokusei\ ;
+御霊代 < mitamashiro\ ;
+七不思議 < nanafushigi\ ;
+測量士 < sokuryoushi\ ;
+出願時 < shutsuganji\ ;
+報復行為 < houfukukoui\ ;
+三角琴 < sankakugoto\ ;
+鉄条網 < tetsujoumou\ ;
+宣伝文句 < sendenmonku\ ;
+二成文系 < niseibunkei\ ;
+体内時計 < tainaidokei\ ;
+翻訳権 < hon''yakuken\ ;
+玉杓子 < tamajakushi\ ;
+工業国 < kougyoukoku\ ;
+終夜運転 < shuuyaunten\ ;
+周旋料 < shuusenryou\ ;
+追撃戦 < tsuigekisen\ ;
+加速運動 < kasokuundou\ ;
+傷病兵 < shoubyouhei\ ;
+彼岸桜 < higanzakura\ ;
+対抗部隊 < taikoubutai\ ;
+結婚費用 < kekkonhiyou\ ;
+一時払 < ichijibarai\ ;
+内容物 < naiyoubutsu\ ;
+軍事政権 < gunjiseiken\ ;
+有機農法 < yuukinouhou\ ;
+防衛部長 < boueibuchou\ ;
+運営資金 < un''eishikin\ ;
+月見蕎麦 < tsukimisoba\ ;
+人生航路 < jinseikouro\ ;
+無一物 < muichimotsu\ ;
+生命保険 < seimeihoken\ ;
+労働力 < roudouryoku\ ;
+応急手当 < oukyuuteate\ ;
+有形無形 < yuukeimukei\ ;
+若竹亭 < wakataketei\ ;
+翻訳書 < hon''yakusho\ ;
+到着駅 < touchakueki\ ;
+男心 < otokogokoro\ ;
+少国民 < shoukokumin\ ;
+受信回路 < jushinkairo\ ;
+参考図書 < sankoutosho\ ;
+生学問 < namagakumon\ ;
+英雄崇拝 < eiyuusuuhai\ ;
+今月分 < kongetsubun\ ;
+分数式 < bunsuushiki\ ;
+受験番号 < jukenbangou\ ;
+重農主義 < juunoushugi\ ;
+授賞式 < jushoushiki\ ;
+掌中本 < shouchuubon\ ;
+省力化 < shouryokuka\ ;
+代表格 < daihyoukaku\ ;
+護国神社 < gokokujinja\ ;
+昼興行 < hirukougyou\ ;
+黙示録 < mokushiroku\ ;
+明治神宮 < meijijinguu\ ;
+少数意見 < shousuuiken\ ;
+人虱 < hitoshirami\ ;
+比翼連理 < hiyokurenri\ ;
+検察官 < kensatsukan\ ;
+供託者 < kyoutakusha\ ;
+海産物 < kaisanbutsu\ ;
+有期年金 < yuukinenkin\ ;
+返信用 < henshin''you\ ;
+二元放送 < nigenhousou\ ;
+自信過剰 < jishinkajou\ ;
+遁走曲 < tonsoukyoku\ ;
+奉納相撲 < hounouzumou\ ;
+辻強盗 < tsujigoutou\ ;
+人身御供 < hitomigokuu\ ;
+公式戦 < koushikisen\ ;
+保護検束 < hogokensoku\ ;
+分県地図 < bunkenchizu\ ;
+靴一足 < kutsuissoku\ ;
+阿諛追従 < ayutsuishou\ ;
+電光石火 < denkousekka\ ;
+波瀾万丈 < haranbanjou\ ;
+相互関係 < sougokankei\ ;
+浪花節 < naniwabushi\ ;
+内部仕様 < naibushiyou\ ;
+各大学 < kakudaigaku\ ;
+総退却 < soutaikyaku\ ;
+皮下注射 < hikachuusha\ ;
+乾燥野菜 < kansouyasai\ ;
+短機関銃 < tankikanjuu\ ;
+現地時間 < genchijikan\ ;
+国民服 < kokuminfuku\ ;
+一等軍曹 < ittougunsou\ ;
+実在論 < jitsuzairon\ ;
+救急車 < kyuukyuusha\ ;
+間接税 < kansetsuzei\ ;
+獣道 < kemonomichi\ ;
+家庭用品 < kateiyouhin\ ;
+乱開発 < rankaihatsu\ ;
+所帯主 < shotainushi\ ;
+鉱山技師 < kouzangishi\ ;
+防寒靴 < boukangutsu\ ;
+一子相伝 < isshisouden\ ;
+三角柱 < sankakuchuu\ ;
+一雫 < hitoshizuku\ ;
+仕訳帳 < shiwakechou\ ;
+粘着性 < nenchakusei\ ;
+時限立法 < jigenrippou\ ;
+羊雲 < hitsujigumo\ ;
+愛別離苦 < aibetsuriku\ ;
+密造酒 < mitsuzoushu\ ;
+固定資産 < koteishisan\ ;
+一夜漬 < ichiyadzuke\ ;
+和独辞典 < wadokujiten\ ;
+登校拒否 < toukoukyohi\ ;
+斜角柱 < shakakuchuu\ ;
+演奏旅行 < ensouryokou\ ;
+書画骨董 < shogakottou\ ;
+対照的 < taishouteki\ ;
+役人風 < yakuninkaze\ ;
+船舶業 < senpakugyou\ ;
+運動選手 < undousenshu\ ;
+学園都市 < gakuentoshi\ ;
+水道局 < suidoukyoku\ ;
+始発駅 < shihatsueki\ ;
+東洋主義 < touyoushugi\ ;
+北極圏 < hokkyokuken\ ;
+日用品 < nichiyouhin\ ;
+反逆者 < hangyakusha\ ;
+大風呂敷 < ooburoshiki\ ;
+有蓋貨車 < yuugaikasha\ ;
+政治資金 < seijishikin\ ;
+登録済 < tourokuzumi\ ;
+専売局 < senbaikyoku\ ;
+権力者 < kenryokusha\ ;
+言論機関 < genronkikan\ ;
+養護学校 < yougogakkou\ ;
+恒久的 < koukyuuteki\ ;
+走行時間 < soukoujikan\ ;
+反逆罪 < hangyakuzai\ ;
+評価基準 < hyoukakijun\ ;
+特等席 < tokutouseki\ ;
+内服薬 < naifukuyaku\ ;
+臆病風 < okubyoukaze\ ;
+供給者 < kyoukyuusha\ ;
+彫刻師 < choukokushi\ ;
+新聞記事 < shinbunkiji\ ;
+夫唱婦随 < fushoufuzui\ ;
+電子辞書 < denshijisho\ ;
+求人難 < kyuujin''nan\ ;
+猿轡 < sarugutsuwa\ ;
+試掘権 < shikutsuken\ ;
+同時録音 < doujirokuon\ ;
+管理社会 < kanrishakai\ ;
+一視同仁 < isshidoujin\ ;
+構造変化 < kouzouhenka\ ;
+在京中 < zaikyouchuu\ ;
+方程式 < houteishiki\ ;
+静力学 < seirikigaku\ ;
+女流作家 < joryuusakka\ ;
+一覧表 < ichiranhyou\ ;
+北朝鮮 < kitachousen\ ;
+司法制度 < shihouseido\ ;
+脈所 < myakudokoro\ ;
+百千鳥 < momochidori\ ;
+勤務交代 < kinmukoutai\ ;
+短編映画 < tanpen''eiga\ ;
+銃剣術 < juukenjutsu\ ;
+会員規約 < kaiinkiyaku\ ;
+納骨堂 < noukotsudou\ ;
+耳小骨 < jishoukotsu\ ;
+大静脈 < daijoumyaku\ ;
+経済力 < keizairyoku\ ;
+学協会 < gakukyoukai\ ;
+中心点 < chuushinten\ ;
+二点先取 < nitensenshu\ ;
+反戦主義 < hansenshugi\ ;
+暴虎馮河 < boukohyouga\ ;
+北極光 < hokkyokukou\ ;
+食品店 < shokuhinten\ ;
+領収書 < ryoushuusho\ ;
+左腕投手 < sawantoushu\ ;
+但書 < tadashigaki\ ;
+前期試験 < zenkishiken\ ;
+通知表 < tsuuchihyou\ ;
+連発銃 < renpatsujuu\ ;
+攻撃側 < kougekigawa\ ;
+大中小 < daichuushou\ ;
+平均律 < heikinritsu\ ;
+赤棟蛇 < yamakagashi\ ;
+被選挙人 < hisenkyonin\ ;
+観念的 < kan''nenteki\ ;
+専門職 < senmonshoku\ ;
+共進会 < kyoushinkai\ ;
+信用状 < shin''youjou\ ;
+織物業 < orimonogyou\ ;
+背後関係 < haigokankei\ ;
+腰刀 < koshigatana\ ;
+超特急 < choutokkyuu\ ;
+返信料 < henshinryou\ ;
+壁新聞 < kabeshinbun\ ;
+餓鬼大将 < gakidaishou\ ;
+番号記号 < bangoukigou\ ;
+融解熱 < yuukainetsu\ ;
+節博士 < fushihakase\ ;
+見物人 < kenbutsunin\ ;
+登録料 < tourokuryou\ ;
+周旋人 < shuusen''nin\ ;
+刑事補償 < keijihoshou\ ;
+高麗芝 < kouraishiba\ ;
+不親切 < fushinsetsu\ ;
+親告罪 < shinkokuzai\ ;
+蔦紅葉 < tsutamomiji\ ;
+五目鮨 < gomokuzushi\ ;
+編集長 < henshuuchou\ ;
+出版業 < shuppangyou\ ;
+調教師 < choukyoushi\ ;
+進駐軍 < shinchuugun\ ;
+別動隊 < betsudoutai\ ;
+逆噴射 < gyakufunsha\ ;
+一体全体 < ittaizentai\ ;
+二口目 < futakuchime\ ;
+海運同盟 < kaiundoumei\ ;
+専守防衛 < senshubouei\ ;
+南阿連邦 < nan''arenpou\ ;
+逆命題 < gyakumeidai\ ;
+発行部数 < hakkoubusuu\ ;
+刑事裁判 < keijisaiban\ ;
+公平無私 < kouheimushi\ ;
+物価指数 < bukkashisuu\ ;
+粘着剤 < nenchakuzai\ ;
+刑事被告 < keijihikoku\ ;
+生物界 < seibutsukai\ ;
+記者会見 < kishakaiken\ ;
+従軍記者 < juugunkisha\ ;
+空気抵抗 < kuukiteikou\ ;
+五目飯 < gomokumeshi\ ;
+貢物 < mitsugimono\ ;
+現金正価 < genkinseika\ ;
+採掘権 < saikutsuken\ ;
+大同小異 < daidoushoui\ ;
+生命倫理 < seimeirinri\ ;
+全幅的 < zenpukuteki\ ;
+駆動装置 < kudousouchi\ ;
+彫刻刀 < choukokutou\ ;
+千軍万馬 < sengunbanba\ ;
+変幻自在 < hengenjizai\ ;
+研究心 < kenkyuushin\ ;
+相対主義 < soutaishugi\ ;
+独占的 < dokusenteki\ ;
+酸中毒 < sanchuudoku\ ;
+軍医学校 < gun''igakkou\ ;
+超新星 < choushinsei\ ;
+都民会館 < tominkaikan\ ;
+市場価値 < shijoukachi\ ;
+頂戴物 < choudaimono\ ;
+平和論者 < heiwaronsha\ ;
+宿泊所 < shukuhakujo\ ;
+尿素樹脂 < nyousojushi\ ;
+売却益 < baikyakueki\ ;
+掃除当番 < soujitouban\ ;
+構造式 < kouzoushiki\ ;
+代理戦争 < dairisensou\ ;
+代表作 < daihyousaku\ ;
+地盤沈下 < jibanchinka\ ;
+構成主義 < kouseishugi\ ;
+正多面体 < seitamentai\ ;
+過失犯 < kashitsuhan\ ;
+紙一枚 < kamiichimai\ ;
+保税地域 < hozeichiiki\ ;
+再認識 < saininshiki\ ;
+人員整理 < jin''inseiri\ ;
+風物詩 < fuubutsushi\ ;
+人間以前 < ningen''izen\ ;
+実関数 < jitsukansuu\ ;
+大好物 < daikoubutsu\ ;
+乳濁液 < nyuudakueki\ ;
+水冷式 < suireishiki\ ;
+平面図形 < heimenzukei\ ;
+心配性 < shinpaishou\ ;
+客室 < kyakushitsu\ ;
+宇宙旅行 < uchuuryokou\ ;
+後始末 < atoshimatsu\ ;
+全勢力 < zenseiryoku\ ;
+荘園制度 < shouenseido\ ;
+離心率 < rishinritsu\ ;
+供給源 < kyoukyuugen\ ;
+自社製品 < jishaseihin\ ;
+初期段階 < shokidankai\ ;
+前途遼遠 < zentoryouen\ ;
+大文節 < daibunsetsu\ ;
+一夜妻 < hitoyodzuma\ ;
+結合子 < ketsugoushi\ ;
+死亡率 < shibouritsu\ ;
+時局柄 < jikyokugara\ ;
+赤葡萄酒 < akabudoushu\ ;
+原始時代 < genshijidai\ ;
+配当率 < haitouritsu\ ;
+整骨師 < seikotsushi\ ;
+参謀本部 < sanbouhonbu\ ;
+女子大生 < joshidaisei\ ;
+関税率 < kanzeiritsu\ ;
+排外運動 < haigaiundou\ ;
+中毒死 < chuudokushi\ ;
+水平飛行 < suiheihikou\ ;
+最前列 < saizenretsu\ ;
+低回趣味 < teikaishumi\ ;
+互恵貿易 < gokeiboueki\ ;
+人間以上 < ningen''ijou\ ;
+御所車 < goshoguruma\ ;
+傲慢無礼 < goumanburei\ ;
+人柱 < hitobashira\ ;
+法務委員会 < houmuiinkai\ ;
+内曲球 < naikyokkyuu\ ;
+徒手空拳 < toshukuuken\ ;
+亜炭化物 < atankabutsu\ ;
+水泳大会 < suieitaikai\ ;
+解散説 < kaisansetsu\ ;
+男女同権 < danjodouken\ ;
+年金制度 < nenkinseido\ ;
+空軍基地 < kuugunkichi\ ;
+大和時代 < yamatojidai\ ;
+建造物 < kenzoubutsu\ ;
+帝王切開 < teiousekkai\ ;
+献血車 < kenketsusha\ ;
+小品集 < shouhinshuu\ ;
+霊安室 < reianshitsu\ ;
+反政府党 < hanseifutou\ ;
+離着陸 < richakuriku\ ;
+脊黄青鸚哥 < sekiseiinko\ ;
+歯科病院 < shikabyouin\ ;
+高野聖 < kouyahijiri\ ;
+載貨屯数 < saikatonsuu\ ;
+整髪剤 < seihatsuzai\ ;
+処世術 < shoseijutsu\ ;
+論説委員 < ronsetsuiin\ ;
+勝手次第 < katteshidai\ ;
+空挺隊員 < kuuteitaiin\ ;
+自由経済 < jiyuukeizai\ ;
+旗頭 < hatagashira\ ;
+子年 < nezumidoshi\ ;
+八幡宮 < hachimanguu\ ;
+財政破綻 < zaiseihatan\ ;
+歌唱力 < kashouryoku\ ;
+回折損 < kaisetsuson\ ;
+政治献金 < seijikenkin\ ;
+骨仕事 < honeshigoto\ ;
+臆病者 < okubyoumono\ ;
+旋風 < tsumujikaze\ ;
+手間仕事 < temashigoto\ ;
+一本勝負 < ipponshoubu\ ;
+朝飯前 < asameshimae\ ;
+質実 < shitsujitsu\ ;
+刊行物 < kankoubutsu\ ;
+眼鏡橋 < meganebashi\ ;
+購入先 < kounyuusaki\ ;
+中途半端 < chuutohanpa\ ;
+通過儀礼 < tsuukagirei\ ;
+丼物 < donburimono\ ;
+弘仁格 < kouninkyaku\ ;
+英字集合 < eijishuugou\ ;
+署名運動 < shomeiundou\ ;
+塑性指数 < soseishisuu\ ;
+合同労組 < goudourouso\ ;
+杖柱 < tsuehashira\ ;
+旧大陸 < kyuutairiku\ ;
+主管機関 < shukankikan\ ;
+天気都合 < tenkitsugou\ ;
+兵器工場 < heikikoujou\ ;
+下瞼 < shitamabuta\ ;
+診察日 < shinsatsubi\ ;
+平民主義 < heiminshugi\ ;
+家族会議 < kazokukaigi\ ;
+東宮職 < touguushoku\ ;
+減債基金 < gensaikikin\ ;
+警察署 < keisatsusho\ ;
+冗談口 < joudanguchi\ ;
+織物商 < orimonoshou\ ;
+祖先崇拝 < sosensuuhai\ ;
+八辺形 < hachihenkei\ ;
+針仕事 < harishigoto\ ;
+事大思想 < jidaishisou\ ;
+好人物 < koujinbutsu\ ;
+地場産業 < jibasangyou\ ;
+征服欲 < seifukuyoku\ ;
+連邦国家 < renpoukokka\ ;
+立憲主義 < rikkenshugi\ ;
+杉林 < sugibayashi\ ;
+解説者 < kaisetsusha\ ;
+広告業 < koukokugyou\ ;
+八方美人 < happoubijin\ ;
+創立者 < souritsusha\ ;
+解熱薬 < genetsuyaku\ ;
+日曜版 < nichiyouban\ ;
+新快速 < shinkaisoku\ ;
+屋根裏部屋 < yaneurabeya\ ;
+世界情勢 < sekaijousei\ ;
+不快指数 < fukaishisuu\ ;
+遠洋航路 < en''youkouro\ ;
+中年者 < chuunenmono\ ;
+国家経済 < kokkakeizai\ ;
+戴冠式 < taikanshiki\ ;
+臨時増刊 < rinjizoukan\ ;
+軽業師 < karuwazashi\ ;
+中心地 < chuushinchi\ ;
+商慣習 < shoukanshuu\ ;
+生物戦 < seibutsusen\ ;
+救急法 < kyuukyuuhou\ ;
+食前酒 < shokuzenshu\ ;
+公武合体 < koubugattai\ ;
+深夜族 < shin''yazoku\ ;
+予讚本線 < yosanhonsen\ ;
+根本主義 < konponshugi\ ;
+迫撃砲 < hakugekihou\ ;
+非常警戒 < hijoukeikai\ ;
+中央政府 < chuuouseifu\ ;
+進軍中 < shingunchuu\ ;
+媒酌人 < baishakunin\ ;
+両性的 < ryouseiteki\ ;
+刺状突起 < shijoutokki\ ;
+潜勢力 < senseiryoku\ ;
+公的扶助 < koutekifujo\ ;
+合成樹脂 < gouseijushi\ ;
+割賦購買 < kappukoubai\ ;
+保健室 < hokenshitsu\ ;
+広告料 < koukokuryou\ ;
+速力度 < sokuryokudo\ ;
+盆提灯 < bondjouchin\ ;
+未来指向 < miraishikou\ ;
+自由放任 < jiyuuhounin\ ;
+自転周期 < jitenshuuki\ ;
+聴神経 < choushinkei\ ;
+超大国 < choutaikoku\ ;
+出版元 < shuppanmoto\ ;
+馬鹿力 < bakadjikara\ ;
+自己主張 < jikoshuchou\ ;
+晒者 < sarashimono\ ;
+陸半球 < rikuhankyuu\ ;
+千言万語 < sengenbango\ ;
+統率者 < tousotsusha\ ;
+公共心 < koukyoushin\ ;
+徒歩競走 < tohokyousou\ ;
+親善試合 < shinzenjiai\ ;
+窒素固定 < chissokotei\ ;
+中共軍 < chuukyougun\ ;
+漂白剤 < hyouhakuzai\ ;
+収入源 < shuunyuugen\ ;
+海上保険 < kaijouhoken\ ;
+殿様風 < tonosamafuu\ ;
+心配事 < shinpaigoto\ ;
+飛行甲板 < hikoukouban\ ;
+指導主事 < shidoushuji\ ;
+相互銀行 < sougoginkou\ ;
+軍司令部 < gunshireibu\ ;
+諸事万端 < shojibantan\ ;
+労災保険 < rousaihoken\ ;
+太陽熱 < taiyounetsu\ ;
+判決文 < hanketsubun\ ;
+時輪金剛 < jirinkongou\ ;
+意気銷沈 < ikishouchin\ ;
+信仰的 < shinkouteki\ ;
+膝拍子 < hizabyoushi\ ;
+関税回避 < kanzeikaihi\ ;
+盲目的 < moumokuteki\ ;
+神通力 < jintsuuriki\ ;
+共和主義 < kyouwashugi\ ;
+恐妻病 < kyousaibyou\ ;
+阿多福風邪 < otafukukaze\ ;
+予防戦争 < yobousensou\ ;
+酸性土壌 < sanseidojou\ ;
+忠実度 < chuujitsudo\ ;
+信任状 < shin''ninjou\ ;
+人身保護 < jinshinhogo\ ;
+中柱 < nakabashira\ ;
+新参者 < shinzanmono\ ;
+年金保険 < nenkinhoken\ ;
+指向言語 < shikougengo\ ;
+巡査部長 < junsabuchou\ ;
+真犯人 < shinhan''nin\ ;
+狸爺 < tanukijijii\ ;
+保証期間 < hoshoukikan\ ;
+不法監禁 < fuhoukankin\ ;
+御苦労様 < gokurousama\ ;
+警察犬 < keisatsuken\ ;
+自治大臣 < jichidaijin\ ;
+立体交差 < rittaikousa\ ;
+竜頭蛇尾 < ryuutoudabi\ ;
+充電期間 < juudenkikan\ ;
+叢時雨 < murashigure\ ;
+海食洞 < kaishokudou\ ;
+記憶媒体 < kiokubaitai\ ;
+嫡室 < chakushitsu\ ;
+参列者 < sanretsusha\ ;
+養護教諭 < yougokyouyu\ ;
+人本主義 < jinponshugi\ ;
+海洋投棄 < kaiyoutouki\ ;
+生物圏 < seibutsuken\ ;
+供給地 < kyoukyuuchi\ ;
+干渉縞 < kanshoujima\ ;
+独創的 < dokusouteki\ ;
+不随意運動 < fuzuiiundou\ ;
+和歌山県 < wakayamaken\ ;
+太陽電波 < taiyoudenpa\ ;
+理科大学 < rikadaigaku\ ;
+染色体 < senshokutai\ ;
+座頭鯨 < zatoukujira\ ;
+近衛師団 < konoeshidan\ ;
+一衣帯水 < ichiitaisui\ ;
+資本主義 < shihonshugi\ ;
+狐猿 < kitsunezaru\ ;
+自由結婚 < jiyuukekkon\ ;
+必須科目 < hissukamoku\ ;
+近代主義 < kindaishugi\ ;
+東北 < higashikita\ ;
+守護天使 < shugotenshi\ ;
+日本語文字 < nihongomoji\ ;
+作業部会 < sagyoubukai\ ;
+都市再生 < toshisaisei\ ;
+目的論 < mokutekiron\ ;
+省略時 < shouryakuji\ ;
+七月 < shichigatsu\ ;
+幼生器官 < youseikikan\ ;
+御用組合 < goyoukumiai\ ;
+軍事演習 < gunjienshuu\ ;
+石炭殻 < sekitangara\ ;
+分裂性 < bunretsusei\ ;
+短縮形 < tanshukukei\ ;
+人道主義 < jindoushugi\ ;
+前史時代 < zenshijidai\ ;
+海上封鎖 < kaijoufuusa\ ;
+有職者 < yuushokusha\ ;
+意味深長 < imishinchou\ ;
+一昔 < hitomukashi\ ;
+親和力 < shinwaryoku\ ;
+交通違反 < koutsuuihan\ ;
+先々月 < sensengetsu\ ;
+四十八手 < yonjuuhatte\ ;
+手巻寿司 < temakizushi\ ;
+有体物 < yuutaibutsu\ ;
+東側 < higashigawa\ ;
+短絡的 < tanrakuteki\ ;
+公開講座 < koukaikouza\ ;
+片言隻句 < hengensekku\ ;
+魅力的 < miryokuteki\ ;
+化学式 < kagakushiki\ ;
+一撮 < hitotsumami\ ;
+太陽日 < taiyoujitsu\ ;
+高関税化 < koukanzeika\ ;
+運送会社 < unsougaisha\ ;
+東宮御所 < touguugosho\ ;
+延滞利息 < entairisoku\ ;
+野球熱 < yakyuunetsu\ ;
+火災警報 < kasaikeihou\ ;
+飾付 < kazaritsuke\ ;
+総指揮官 < soushikikan\ ;
+放送時間 < housoujikan\ ;
+熱気球 < netsukikyuu\ ;
+空想力 < kuusouryoku\ ;
+有害無益 < yuugaimueki\ ;
+静岡県 < shizuokaken\ ;
+婦人問題 < fujinmondai\ ;
+晴耕雨読 < seikouudoku\ ;
+反逆人 < hangyakunin\ ;
+染髪剤 < senpatsuzai\ ;
+全身病 < zenshinbyou\ ;
+不文憲法 < fubunkenpou\ ;
+腹話術 < fukuwajutsu\ ;
+一寸法師 < issunboushi\ ;
+可能動詞 < kanoudoushi\ ;
+流量計 < ryuuryoukei\ ;
+完全雇用 < kanzenkoyou\ ;
+線織面 < senshikimen\ ;
+完結編 < kanketsuhen\ ;
+副鼻腔炎 < fukubikuuen\ ;
+学生証 < gakuseishou\ ;
+造幣局 < zouheikyoku\ ;
+説明書 < setsumeisho\ ;
+自給率 < jikyuuritsu\ ;
+多元放送 < tagenhousou\ ;
+打物師 < uchimonoshi\ ;
+気息奄奄 < kisokuen''en\ ;
+惨殺者 < zansatsusha\ ;
+磯巾着 < isoginchaku\ ;
+釈迦如来 < shakanyorai\ ;
+予約名簿 < yoyakumeibo\ ;
+証人席 < shouninseki\ ;
+嫡出 < chakushutsu\ ;
+不買同盟 < fubaidoumei\ ;
+下心 < shitagokoro\ ;
+若白髪 < wakashiraga\ ;
+非買同盟 < hibaidoumei\ ;
+数学的 < suugakuteki\ ;
+直円柱 < chokuenchuu\ ;
+説明文 < setsumeibun\ ;
+相対敬語 < soutaikeigo\ ;
+経済特区 < keizaitokku\ ;
+任意団体 < nin''idantai\ ;
+水産物 < suisanbutsu\ ;
+接敵移動 < settekiidou\ ;
+教則本 < kyousokubon\ ;
+鰥寡孤独 < kankakodoku\ ;
+乙女心 < otomegokoro\ ;
+相対売買 < aitaibaibai\ ;
+無人工場 < mujinkoujou\ ;
+戦勝国 < senshoukoku\ ;
+南北朝 < nanbokuchou\ ;
+夏衣 < natsugoromo\ ;
+幻想曲 < gensoukyoku\ ;
+不換紙幣 < fukanshihei\ ;
+旅興行 < tabikougyou\ ;
+相乗作用 < soujousayou\ ;
+予算不足 < yosanfusoku\ ;
+豆電球 < mamedenkyuu\ ;
+解説書 < kaisetsusho\ ;
+薬理作用 < yakurisayou\ ;
+翼手目 < yokushumoku\ ;
+婚約者 < kon''yakusha\ ;
+為替管理 < kawasekanri\ ;
+郡役所 < gun''yakusho\ ;
+知識層 < chishikisou\ ;
+事前協議 < jisenkyougi\ ;
+厚顔無恥 < kouganmuchi\ ;
+撞木鮫 < shumokuzame\ ;
+硼酸末 < housanmatsu\ ;
+安全装置 < anzensouchi\ ;
+妖術者 < youjutsusha\ ;
+余白頁 < yohakupeeji\ ;
+統一的 < touitsuteki\ ;
+空気感染 < kuukikansen\ ;
+水道工事 < suidoukouji\ ;
+一紙半銭 < isshihansen\ ;
+反射運動 < hanshaundou\ ;
+身障者 < shinshousha\ ;
+食卓塩 < shokutakuen\ ;
+八字髭 < hachijihige\ ;
+復活祭 < fukkatsusai\ ;
+主産物 < shusanbutsu\ ;
+美術的 < bijutsuteki\ ;
+塩類溶液 < enruiyoueki\ ;
+珍現象 < chingenshou\ ;
+三稜鏡 < sanryoukyou\ ;
+外人部隊 < gaijinbutai\ ;
+拝金主義 < haikinshugi\ ;
+大陸棚 < tairikudana\ ;
+殿様芸 < tonosamagei\ ;
+海食崖 < kaishokugai\ ;
+元禄袖 < genrokusode\ ;
+異体同心 < itaidoushin\ ;
+乗数効果 < jousuukouka\ ;
+全盛時代 < zenseijidai\ ;
+文教族 < bunkyouzoku\ ;
+面向不背 < menkoufuhai\ ;
+平和維持軍 < heiwaijigun\ ;
+湿度計 < shitsudokei\ ;
+召集者 < shoushuusha\ ;
+空理空論 < kuurikuuron\ ;
+八極拳 < hakkyokuken\ ;
+信仰心 < shinkoushin\ ;
+人一倍 < hitoichibai\ ;
+合衆国 < gasshuukoku\ ;
+機関室 < kikanshitsu\ ;
+非常階段 < hijoukaidan\ ;
+傷痍軍人 < shouigunjin\ ;
+冷却液 < reikyakueki\ ;
+漁獲高 < gyokakudaka\ ;
+公用物 < kouyoubutsu\ ;
+単発銃 < tanpatsujuu\ ;
+不嗜 < butashinami\ ;
+月賦販売 < geppuhanbai\ ;
+万世一系 < banseiikkei\ ;
+第二部長 < dainibuchou\ ;
+雀蜂 < suzumebachi\ ;
+行儀作法 < gyougisahou\ ;
+重加算税 < juukasanzei\ ;
+冷却水 < reikyakusui\ ;
+献立表 < kondatehyou\ ;
+一心不乱 < isshinfuran\ ;
+軍事裁判 < gunjisaiban\ ;
+若草色 < wakakusairo\ ;
+照明器具 < shoumeikigu\ ;
+三国一 < sangokuichi\ ;
+督促状 < tokusokujou\ ;
+屍陀林王 < shidarin''ou\ ;
+仮受取 < kariuketori\ ;
+過去完了 < kakokanryou\ ;
+戦後欧州 < sengooushuu\ ;
+袋小路 < fukurokouji\ ;
+警察官 < keisatsukan\ ;
+首脳会議 < shunoukaigi\ ;
+家庭料理 < kateiryouri\ ;
+日本銀行 < nihonginkou\ ;
+自然律 < shizenritsu\ ;
+職務給 < shokumukyuu\ ;
+遠交近攻 < enkoukinkou\ ;
+旋回運動 < senkaiundou\ ;
+療養中 < ryouyouchuu\ ;
+合成物 < gouseibutsu\ ;
+帰国子女 < kikokushijo\ ;
+三行半 < mikudarihan\ ;
+行政学 < gyouseigaku\ ;
+実行力 < jikkouryoku\ ;
+長火鉢 < nagahibachi\ ;
+雌雄淘汰 < shiyuutouta\ ;
+海食台 < kaishokudai\ ;
+郵便物 < yuubinbutsu\ ;
+銀本位制 < ginhon''isei\ ;
+空気枕 < kuukimakura\ ;
+奨学金 < shougakukin\ ;
+組頭 < kumigashira\ ;
+自業自得 < jigoujitoku\ ;
+公生活 < kouseikatsu\ ;
+遮蔽物 < shaheibutsu\ ;
+主格補語 < shukakuhogo\ ;
+絹織物 < kinuorimono\ ;
+芸術論 < geijutsuron\ ;
+傘形器官 < sankeikikan\ ;
+薬効物 < yakkoubutsu\ ;
+緑虫 < midorimushi\ ;
+電化製品 < denkaseihin\ ;
+庭仕事 < niwashigoto\ ;
+資産価値 < shisankachi\ ;
+悪質化 < akushitsuka\ ;
+中央競馬 < chuuoukeiba\ ;
+知識人 < chishikijin\ ;
+赤字財政 < akajizaisei\ ;
+白内障 < hakunaishou\ ;
+政治亡命 < seijiboumei\ ;
+五十年祭 < gojuunensai\ ;
+遺族年金 < izokunenkin\ ;
+人工栄養 < jinkoueiyou\ ;
+擬古典的 < gikotenteki\ ;
+楽天的 < rakutenteki\ ;
+電気会社 < denkigaisha\ ;
+気随気儘 < kizuikimama\ ;
+別勘定 < betsukanjou\ ;
+金杓子 < kanajakushi\ ;
+長大息 < choutaisoku\ ;
+聴取料 < choushuryou\ ;
+無反動銃 < muhandoujuu\ ;
+遠心分離 < enshinbunri\ ;
+場外馬券 < jougaibaken\ ;
+青年時代 < seinenjidai\ ;
+頸静脈 < keijoumyaku\ ;
+漁獲量 < gyokakuryou\ ;
+語学力 < gogakuryoku\ ;
+準備室 < junbishitsu\ ;
+中年増 < chuudoshima\ ;
+自由問題 < jiyuumondai\ ;
+漫画雑誌 < mangazasshi\ ;
+亜鉛中毒 < aenchuudoku\ ;
+背筋力 < haikinryoku\ ;
+所有物 < shoyuubutsu\ ;
+祖先伝来 < sosendenrai\ ;
+産土神 < ubusunagami\ ;
+雪礫 < yukitsubute\ ;
+暗赤色 < ansekishoku\ ;
+仕立物 < shitatemono\ ;
+一党支配 < ittoushihai\ ;
+旗標 < hatajirushi\ ;
+夢現 < yumeutsutsu\ ;
+七回忌 < shichikaiki\ ;
+主観主義 < shukanshugi\ ;
+溶解熱 < youkainetsu\ ;
+米十粒 < komejuuryuu\ ;
+呼吸器系 < kokyuukikei\ ;
+特注品 < tokuchuuhin\ ;
+雛祭 < hinamatsuri\ ;
+為替投機 < kawasetouki\ ;
+一知半解 < itchihankai\ ;
+不定冠詞 < futeikanshi\ ;
+代議政体 < daigiseitai\ ;
+平和攻勢 < heiwakousei\ ;
+低価格化 < teikakakuka\ ;
+古新聞 < furushinbun\ ;
+配達人 < haitatsunin\ ;
+京人形 < kyouningyou\ ;
+肘掛椅子 < hijikakeisu\ ;
+公務災害 < koumusaigai\ ;
+景気循環 < keikijunkan\ ;
+関係法規 < kankeihouki\ ;
+賀詞交換 < gashikoukan\ ;
+耕地整理 < kouchiseiri\ ;
+完結文 < kanketsubun\ ;
+表裏一体 < hyouriittai\ ;
+反対色 < hantaishoku\ ;
+商品学 < shouhingaku\ ;
+奴隷解放 < doreikaihou\ ;
+入射角 < nyuushakaku\ ;
+消防庁 < shoubouchou\ ;
+阿多福豆 < otafukumame\ ;
+奇麗所 < kireidokoro\ ;
+女旱 < on''nahideri\ ;
+山吹色 < yamabukiiro\ ;
+企業整備 < kigyouseibi\ ;
+軍事行動 < gunjikoudou\ ;
+打撃率 < dagekiritsu\ ;
+地方自治 < chihoujichi\ ;
+請求額 < seikyuugaku\ ;
+百年祭 < hyakunensai\ ;
+世俗主義 < sezokushugi\ ;
+高炭素鋼 < koutansokou\ ;
+抑留者 < yokuryuusha\ ;
+食連星 < shokurensei\ ;
+落札値 < rakusatsune\ ;
+自然力 < shizenryoku\ ;
+有機肥料 < yuukihiryou\ ;
+秘書室 < hishoshitsu\ ;
+千秋楽 < senshuuraku\ ;
+比例配分 < hireihaibun\ ;
+探究心 < tankyuushin\ ;
+反対運動 < hantaiundou\ ;
+添付書類 < tenpushorui\ ;
+恋愛遊戯 < ren''aiyuugi\ ;
+副社長 < fukushachou\ ;
+投射原理 < toushagenri\ ;
+大言壮語 < taigensougo\ ;
+月例会 < getsureikai\ ;
+数日間 < suujitsukan\ ;
+命名式 < meimeishiki\ ;
+指導力 < shidouryoku\ ;
+感覚的 < kankakuteki\ ;
+金本位制 < kinhon''isei\ ;
+造語成分 < zougoseibun\ ;
+再開発 < saikaihatsu\ ;
+入学難 < nyuugakunan\ ;
+分折学 < bunsekigaku\ ;
+百科辞典 < hyakkajiten\ ;
+若輩者 < jakuhaimono\ ;
+万代不易 < bandaifueki\ ;
+幅変調 < habahenchou\ ;
+危険角度 < kikenkakudo\ ;
+化学兵器 < kagakuheiki\ ;
+女心 < on''nagokoro\ ;
+小惑星 < shouwakusei\ ;
+漢字制限 < kanjiseigen\ ;
+年功制度 < nenkouseido\ ;
+人物像 < jinbutsuzou\ ;
+躁鬱病 < souutsubyou\ ;
+直輸入 < chokuyunyuu\ ;
+促進剤 < sokushinzai\ ;
+海底火山 < kaiteikazan\ ;
+隔靴掻痒 < kakkasouyou\ ;
+握鮨 < nigirizushi\ ;
+鼻出血 < bishukketsu\ ;
+静心 < shizugokoro\ ;
+非戦論者 < hisenronsha\ ;
+急進党 < kyuushintou\ ;
+万世不易 < banseifueki\ ;
+再生繊維 < saiseisen''i\ ;
+運転系統 < untenkeitou\ ;
+任意同行 < nin''idoukou\ ;
+隣町 < tonarimachi\ ;
+臨時国会 < rinjikokkai\ ;
+試験期間 < shikenkikan\ ;
+金婚式 < kinkonshiki\ ;
+満艦飾 < mankanshoku\ ;
+年功加俸 < nenkoukahou\ ;
+応援団長 < ouendanchou\ ;
+大晦 < ootsugomori\ ;
+傍迷惑 < hatameiwaku\ ;
+軍医総監 < gun''isoukan\ ;
+昼食時 < chuushokuji\ ;
+芸術祭 < geijutsusai\ ;
+慈善団体 < jizendantai\ ;
+自習時間 < jishuujikan\ ;
+握飯 < nigirimeshi\ ;
+国家補償 < kokkahoshou\ ;
+盛者必衰 < seijahissui\ ;
+学生服 < gakuseifuku\ ;
+人文主義 < jinbunshugi\ ;
+電話番号 < denwabangou\ ;
+就業地 < shuugyouchi\ ;
+表示物 < hyoujibutsu\ ;
+転入生 < ten''nyuusei\ ;
+理論体系 < rirontaikei\ ;
+入学金 < nyuugakukin\ ;
+日本海溝 < nihonkaikou\ ;
+経常利益 < keijourieki\ ;
+革新系 < kakushinkei\ ;
+引責辞任 < insekijinin\ ;
+陽極線 < youkyokusen\ ;
+出演者 < shutsuensha\ ;
+会議室 < kaigishitsu\ ;
+処女航海 < shojokoukai\ ;
+陸運局 < rikuunkyoku\ ;
+追徴金 < tsuichoukin\ ;
+殺菌力 < sakkinryoku\ ;
+投宿者 < toushukusha\ ;
+新庁舎 < shinchousha\ ;
+冷却剤 < reikyakuzai\ ;
+一軒一軒 < ikken''ikken\ ;
+遊覧客 < yuurankyaku\ ;
+黄金虫 < koganemushi\ ;
+問答無用 < mondoumuyou\ ;
+運命論者 < unmeironsha\ ;
+黒死病 < kokushibyou\ ;
+郵便局 < yuubinkyoku\ ;
+菜種梅雨 < natanedzuyu\ ;
+課外授業 < kagaijugyou\ ;
+反射率 < hansharitsu\ ;
+難民帰還 < nanminkikan\ ;
+偶像破壊 < guuzouhakai\ ;
+教皇庁 < kyoukouchou\ ;
+若鳥丼 < wakadoridon\ ;
+指示装置 < shijisouchi\ ;
+安全地帯 < anzenchitai\ ;
+自己複製 < jikofukusei\ ;
+美術商 < bijutsushou\ ;
+他人行儀 < taningyougi\ ;
+判官贔屓 < houganbiiki\ ;
+滴定量 < tekiteiryou\ ;
+圧搾空気 < assakukuuki\ ;
+神学者 < shingakusha\ ;
+密輸入 < mitsuyunyuu\ ;
+健康管理 < kenkoukanri\ ;
+踏切番 < fumikiriban\ ;
+試験飛行 < shikenhikou\ ;
+生産過剰 < seisankajou\ ;
+前奏曲 < zensoukyoku\ ;
+耳鼻咽喉科 < jibiinkouka\ ;
+生理休暇 < seirikyuuka\ ;
+交際場裏 < kousaijouri\ ;
+裸一貫 < hadakaikkan\ ;
+奏鳴曲 < soumeikyoku\ ;
+豊肥本線 < houhihonsen\ ;
+私生活 < shiseikatsu\ ;
+紫色 < murasakiiro\ ;
+判断規準 < handankijun\ ;
+甲鉄艦 < koutetsukan\ ;
+心臓病 < shinzoubyou\ ;
+錬金術 < renkinjutsu\ ;
+黒内障 < kokunaishou\ ;
+有識者 < yuushikisha\ ;
+山津波 < yamatsunami\ ;
+袖珍本 < shuuchinbon\ ;
+天資英邁 < tenshieimai\ ;
+先着順 < senchakujun\ ;
+抵抗運動 < teikouundou\ ;
+郵便切手 < yuubinkitte\ ;
+実名詞 < jitsumeishi\ ;
+防食剤 < boushokuzai\ ;
+対称軸 < taishoujiku\ ;
+近日点 < kinjitsuten\ ;
+田園都市 < den''entoshi\ ;
+衣料品店 < iryouhinten\ ;
+二部合唱 < nibugasshou\ ;
+藍晶石 < ranshouseki\ ;
+女子供 < on''nakodomo\ ;
+没食子 < mosshokushi\ ;
+電子頭脳 < denshizunou\ ;
+修繕中 < shuuzenchuu\ ;
+割賦販売 < kappuhanbai\ ;
+耳学問 < mimigakumon\ ;
+骨董趣味 < kottoushumi\ ;
+軍備制限 < gunbiseigen\ ;
+長粒米 < chouryuumai\ ;
+運動不足 < undoubusoku\ ;
+制限漢字 < seigenkanji\ ;
+神信心 < kamishinjin\ ;
+無反動砲 < muhandouhou\ ;
+奨学生 < shougakusei\ ;
+原因不明 < gen''infumei\ ;
+観兵式 < kanpeishiki\ ;
+若年型 < jakunengata\ ;
+軽自動車 < keijidousha\ ;
+鼠海豚 < nezumiiruka\ ;
+狐疑逡巡 < kogishunjun\ ;
+集積場 < shuusekijou\ ;
+指人形 < yubiningyou\ ;
+程度問題 < teidomondai\ ;
+規定打席 < kiteidaseki\ ;
+曲芸師 < kyokugeishi\ ;
+麦粒腫 < bakuryuushu\ ;
+目的地 < mokutekichi\ ;
+風紀紊乱 < fuukibinran\ ;
+学生寮 < gakuseiryou\ ;
+合成力 < gouseiryoku\ ;
+市参事会 < shisanjikai\ ;
+記憶装置 < kiokusouchi\ ;
+提供側 < teikyougawa\ ;
+雪庇 < yukibisashi\ ;
+電気伝導 < denkidendou\ ;
+海外派兵 < kaigaihahei\ ;
+天賦人権 < tenpujinken\ ;
+懸垂運動 < kensuiundou\ ;
+神秘主義 < shinpishugi\ ;
+乗降客 < joukoukyaku\ ;
+内親王 < naishin''nou\ ;
+遠慮会釈 < enryoeshaku\ ;
+糞勉強 < kusobenkyou\ ;
+暗号手法 < angoushuhou\ ;
+矢継早 < yatsugibaya\ ;
+長話 < nagabanashi\ ;
+運輸大臣 < un''yudaijin\ ;
+非論理的 < hironriteki\ ;
+変曲点 < henkyokuten\ ;
+右翼団体 < uyokudantai\ ;
+長四角 < nagashikaku\ ;
+親切気 < shinsetsugi\ ;
+保健衛生 < hoken''eisei\ ;
+盗品故買 < touhinkobai\ ;
+副神経 < fukushinkei\ ;
+葉緑体 < youryokutai\ ;
+静止軌道 < seishikidou\ ;
+慶應義塾 < keiougijuku\ ;
+快刀乱麻 < kaitouranma\ ;
+菊人形 < kikuningyou\ ;
+玩弄物 < ganroubutsu\ ;
+口言葉 < kuchikotoba\ ;
+集合的 < shuugouteki\ ;
+至近距離 < shikinkyori\ ;
+割当額 < wariategaku\ ;
+常習的 < joushuuteki\ ;
+損害保険 < songaihoken\ ;
+構成要素 < kouseiyouso\ ;
+感圧紙 < kan''atsushi\ ;
+協議事項 < kyougijikou\ ;
+紅猿子 < benimashiko\ ;
+弾性率 < danseiritsu\ ;
+舞台俳優 < butaihaiyuu\ ;
+危機一髪 < kikiippatsu\ ;
+医学雑誌 < igakuzasshi\ ;
+淡紅色 < tankoushoku\ ;
+柳行李 < yanagigouri\ ;
+物価水準 < bukkasuijun\ ;
+赤十字附 < sekijuujifu\ ;
+扶養家族 < fuyoukazoku\ ;
+流動的 < ryuudouteki\ ;
+環境庁 < kankyouchou\ ;
+立憲政治 < rikkenseiji\ ;
+昆虫学 < konchuugaku\ ;
+常日頃 < tsunehigoro\ ;
+比翼塚 < hiyokudzuka\ ;
+混成物 < konseibutsu\ ;
+人工臓器 < jinkouzouki\ ;
+溶解力 < youkairyoku\ ;
+紙礫 < kamitsubute\ ;
+教育長 < kyouikuchou\ ;
+焼却炉 < shoukyakuro\ ;
+祭政一致 < saiseiitchi\ ;
+白檀油 < byakudan''yu\ ;
+牽引力 < ken''inryoku\ ;
+観光局 < kankoukyoku\ ;
+不言実行 < fugenjikkou\ ;
+入学者 < nyuugakusha\ ;
+国学者 < kokugakusha\ ;
+仕事部屋 < shigotobeya\ ;
+活動誌 < katsudoushi\ ;
+出土品 < shutsudohin\ ;
+紙表紙 < kamibyoushi\ ;
+観光客 < kankoukyaku\ ;
+成人映画 < seijin''eiga\ ;
+自由営業 < jiyuueigyou\ ;
+共学制 < kyougakusei\ ;
+鶎 < kikuitadaki\ ;
+標準誤差 < hyoujungosa\ ;
+羞恥心 < shuuchishin\ ;
+参議院議員 < sangiingiin\ ;
+虫眼鏡 < mushimegane\ ;
+言葉質 < kotobajichi\ ;
+学者膚 < gakushahada\ ;
+通信網 < tsuushinmou\ ;
+普及率 < fukyuuritsu\ ;
+乳児脚気 < nyuujikakke\ ;
+千鳥足 < chidoriashi\ ;
+軍需工場 < gunjukoujou\ ;
+相加平均 < soukaheikin\ ;
+粗製乱造 < soseiranzou\ ;
+御名御璽 < gyomeigyoji\ ;
+裸虫 < hadakamushi\ ;
+転轍手 < tentetsushu\ ;
+購買力 < koubairyoku\ ;
+入賞者 < nyuushousha\ ;
+陸軍省 < rikugunshou\ ;
+仮出所 < karishussho\ ;
+文治主義 < bunchishugi\ ;
+古物商 < kobutsushou\ ;
+自然淘汰 < shizentouta\ ;
+家宅捜査 < katakusousa\ ;
+既成概念 < kiseigainen\ ;
+整備工場 < seibikoujou\ ;
+対空砲火 < taikuuhouka\ ;
+滞空時間 < taikuujikan\ ;
+象徴詩 < shouchoushi\ ;
+下協議 < shitakyougi\ ;
+召集令 < shoushuurei\ ;
+貿易赤字 < bouekiakaji\ ;
+一言居士 < ichigenkoji\ ;
+照会先 < shoukaisaki\ ;
+屋上庭園 < okujouteien\ ;
+堆積学 < taisekigaku\ ;
+読解力 < dokkairyoku\ ;
+音声表記 < onseihyouki\ ;
+腸結核 < choukekkaku\ ;
+年恰好 < toshikakkou\ ;
+審美主義 < shinbishugi\ ;
+通産省 < tsuusanshou\ ;
+応用問題 < ouyoumondai\ ;
+互恵関税 < gokeikanzei\ ;
+督学官 < tokugakukan\ ;
+懐中物 < kaichuumono\ ;
+通信社 < tsuushinsha\ ;
+軟性下疳 < nanseigekan\ ;
+国語辞典 < kokugojiten\ ;
+公認候補 < kouninkouho\ ;
+生年月日 < seinengappi\ ;
+奇策縦横 < kisakujuuou\ ;
+光学文字 < kougakumoji\ ;
+千石船 < sengokubune\ ;
+停車時間 < teishajikan\ ;
+金牛宮 < kingyuukyuu\ ;
+接合子 < setsugoushi\ ;
+皇室費 < koushitsuhi\ ;
+共和政治 < kyouwaseiji\ ;
+国庫債権 < kokkosaiken\ ;
+追徴税 < tsuichouzei\ ;
+声帯模写 < seitaimosha\ ;
+最大限度 < saidaigendo\ ;
+局外者 < kyokugaisha\ ;
+八分音符 < hachibuonpu\ ;
+翌翌年 < yokuyokunen\ ;
+特別機 < tokubetsuki\ ;
+淡褐色 < tankasshoku\ ;
+偏執病 < henshuubyou\ ;
+仮想空間 < kasoukuukan\ ;
+学習者 < gakushuusha\ ;
+防音室 < bouonshitsu\ ;
+平成時代 < heiseijidai\ ;
+利益社会 < riekishakai\ ;
+肉体的 < nikutaiteki\ ;
+家庭訪問 < kateihoumon\ ;
+料金表 < ryoukinhyou\ ;
+内陸国 < nairikukoku\ ;
+包容力 < houyouryoku\ ;
+出漁期 < shutsugyoki\ ;
+薄利多売 < hakuritabai\ ;
+主人役 < shujin''yaku\ ;
+民主主義 < minshushugi\ ;
+女性名詞 < joseimeishi\ ;
+愛憎併存 < aizouheison\ ;
+成功率 < seikouritsu\ ;
+公有物 < kouyuubutsu\ ;
+観艦式 < kankanshiki\ ;
+反射作用 < hanshasayou\ ;
+月夜茸 < tsukiyotake\ ;
+有事立法 < yuujirippou\ ;
+入学生 < nyuugakusei\ ;
+明後日 < myougonichi\ ;
+活動者 < katsudousha\ ;
+三原色 < sangenshoku\ ;
+発声器官 < hasseikikan\ ;
+偏執狂 < henshuukyou\ ;
+婚礼衣装 < konreiishou\ ;
+中央突破 < chuuoutoppa\ ;
+三頭政治 < santouseiji\ ;
+危険地帯 < kikenchitai\ ;
+化学作用 < kagakusayou\ ;
+無間地獄 < mugenjigoku\ ;
+話中 < hanashichuu\ ;
+往復切符 < oufukukippu\ ;
+蒋介石 < shoukaiseki\ ;
+申告書 < shinkokusho\ ;
+存在理由 < sonzairiyuu\ ;
+編笠茸 < amigasatake\ ;
+小半日 < kohan''nichi\ ;
+非社交的 < hijakouteki\ ;
+表彰状 < hyoushoujou\ ;
+内証事 < naishougoto\ ;
+封建制度 < houkenseido\ ;
+診断学 < shindangaku\ ;
+南極点 < nankyokuten\ ;
+人身事故 < jinshinjiko\ ;
+曲射砲 < kyokushahou\ ;
+公開捜査 < koukaisousa\ ;
+我田引水 < gaden''insui\ ;
+動作記録 < dousakiroku\ ;
+先発隊 < senpatsutai\ ;
+成層火山 < seisoukazan\ ;
+性生活 < seiseikatsu\ ;
+検閲官 < ken''etsukan\ ;
+流通税 < ryuutsuuzei\ ;
+利益配当 < riekihaitou\ ;
+洗濯糊 < sentakunori\ ;
+半直線 < hanchokusen\ ;
+洗濯籠 < sentakukago\ ;
+接合剤 < setsugouzai\ ;
+一所懸命 < isshokenmei\ ;
+農産物 < nousanbutsu\ ;
+源泉課税 < gensenkazei\ ;
+政治結社 < seijikessha\ ;
+塵埃 < chirihokori\ ;
+騎馬民族 < kibaminzoku\ ;
+隔世遺伝 < kakuseiiden\ ;
+古道具屋 < furudouguya\ ;
+吹奏楽器 < suisougakki\ ;
+機銃掃射 < kijuusousha\ ;
+接受国 < setsujukoku\ ;
+武家屋敷 < bukeyashiki\ ;
+南極海 < nankyokukai\ ;
+睡眠時間 < suiminjikan\ ;
+結膜炎 < ketsumakuen\ ;
+親睦会 < shinbokukai\ ;
+硫化物 < ryuukabutsu\ ;
+想像力 < souzouryoku\ ;
+芸術品 < geijutsuhin\ ;
+無記名株 < mukimeikabu\ ;
+南極洋 < nankyokuyou\ ;
+事務総長 < jimusouchou\ ;
+再測量 < saisokuryou\ ;
+主治効能 < shujikounou\ ;
+天津御祖 < amatsumioya\ ;
+気象衛星 < kishoueisei\ ;
+有効期限 < yuukoukigen\ ;
+農奴解放 < noudokaihou\ ;
+露出計 < roshutsukei\ ;
+心臓麻痺 < shinzoumahi\ ;
+酔生夢死 < suiseimushi\ ;
+無法地帯 < muhouchitai\ ;
+街頭募金 < gaitoubokin\ ;
+留学生 < ryuugakusei\ ;
+水仕事 < mizushigoto\ ;
+学習用 < gakushuuyou\ ;
+荒唐無稽 < koutoumukei\ ;
+注射針 < chuushabari\ ;
+観察者 < kansatsusha\ ;
+栄養不足 < eiyoufusoku\ ;
+通信欄 < tsuushinran\ ;
+名誉市民 < meiyoshimin\ ;
+軍事同盟 < gunjidoumei\ ;
+有効作用 < yuukousayou\ ;
+五月闇 < satsukiyami\ ;
+発着場 < hatchakujou\ ;
+先遣部隊 < senkenbutai\ ;
+嘉言善行 < kagenzenkou\ ;
+輸出税 < yushutsuzei\ ;
+合同会議 < goudoukaigi\ ;
+起死回生 < kishikaisei\ ;
+透視画法 < toushigahou\ ;
+無銭旅行 < musenryokou\ ;
+就職時 < shuushokuji\ ;
+保安設備 < hoansetsubi\ ;
+着眼点 < chakuganten\ ;
+空冷式 < kuureishiki\ ;
+溶接工 < yousetsukou\ ;
+丸木橋 < marukibashi\ ;
+内部闘争 < naibutousou\ ;
+不正融資 < fuseiyuushi\ ;
+山形県 < yamagataken\ ;
+交霊術 < koureijutsu\ ;
+漢英辞典 < kan''eijiten\ ;
+創造説 < souzousetsu\ ;
+領土保全 < ryoudohozen\ ;
+招待席 < shoutaiseki\ ;
+無事息災 < bujisokusai\ ;
+雪上車 < setsujousha\ ;
+交響楽 < koukyougaku\ ;
+農業国 < nougyoukoku\ ;
+卓越風 < takuetsufuu\ ;
+指名手配 < shimeitehai\ ;
+鎮痛性 < chintsuusei\ ;
+遊覧飛行 < yuuranhikou\ ;
+認識論 < ninshikiron\ ;
+受験地獄 < jukenjigoku\ ;
+警備強化 < keibikyouka\ ;
+就寝前 < shuushinzen\ ;
+心理主義 < shinrishugi\ ;
+双曲線 < soukyokusen\ ;
+離婚訴訟 < rikonsoshou\ ;
+夏時刻 < natsujikoku\ ;
+夏大根 < natsudaikon\ ;
+音訓索引 < onkunsakuin\ ;
+危険因子 < kiken''inshi\ ;
+村八分 < murahachibu\ ;
+超過勤務 < choukakinmu\ ;
+傘伐林 < sanbatsurin\ ;
+常設館 < jousetsukan\ ;
+南極星 < nankyokusei\ ;
+神学士 < shingakushi\ ;
+進歩主義 < shinposhugi\ ;
+上告審 < joukokushin\ ;
+先入観 < sen''nyuukan\ ;
+先入見 < sen''nyuuken\ ;
+保全会社 < hozenkaisha\ ;
+洗濯物 < sentakumono\ ;
+万葉集 < man''youshuu\ ;
+自己紹介 < jikoshoukai\ ;
+人道支援 < jindoushien\ ;
+満州国 < manshuukoku\ ;
+希少価値 < kishoukachi\ ;
+表忠塔 < hyouchuutou\ ;
+三重殺 < sanjuusatsu\ ;
+婦人科学 < fujinkagaku\ ;
+支援団体 < shiendantai\ ;
+分泌液 < bunpitsueki\ ;
+宇宙空間 < uchuukuukan\ ;
+隣接県 < rinsetsuken\ ;
+嘘八百 < usohappyaku\ ;
+舞踏室 < butoushitsu\ ;
+当局者 < toukyokusha\ ;
+化粧煉瓦 < keshourenga\ ;
+緩衝国 < kanshoukoku\ ;
+早期発見 < soukihakken\ ;
+自然治癒 < shizenchiyu\ ;
+不可知的 < fukachiteki\ ;
+訴訟費用 < soshouhiyou\ ;
+藁人形 < waraningyou\ ;
+影響力 < eikyouryoku\ ;
+災害保険 < saigaihoken\ ;
+大器晩成 < taikibansei\ ;
+文節数 < bunsetsusuu\ ;
+数珠一連 < juzuichiren\ ;
+文明開化 < bunmeikaika\ ;
+悪推量 < waruzuiryou\ ;
+含有量 < gan''yuuryou\ ;
+誘電率 < yuudenritsu\ ;
+反動主義 < handoushugi\ ;
+観察眼 < kansatsugan\ ;
+政府高官 < seifukoukan\ ;
+鏡餅 < kagamimochi\ ;
+裏切者 < uragirimono\ ;
+京都府警 < kyoutofukei\ ;
+防雪林 < bousetsurin\ ;
+天神髭 < tenshinhige\ ;
+殺害者 < satsugaisha\ ;
+勤王攘夷 < kin''noujoui\ ;
+空挺部隊 < kuuteibutai\ ;
+教育省 < kyouikushou\ ;
+離乳食 < rinyuushoku\ ;
+教育的 < kyouikuteki\ ;
+多士済済 < tashiseisei\ ;
+不器用者 < bukiyoumono\ ;
+兵站基地 < heitankichi\ ;
+有理関数 < yuurikansuu\ ;
+人工頭脳 < jinkouzunou\ ;
+特別区 < tokubetsuku\ ;
+財政力 < zaiseiryoku\ ;
+十六音符 < juurokuonpu\ ;
+強硬策 < kyoukousaku\ ;
+新年号 < shin''nengou\ ;
+磯馴松 < sonarematsu\ ;
+奇想天外 < kisoutengai\ ;
+内容見本 < naiyoumihon\ ;
+入館料 < nyuukanryou\ ;
+物相飯 < mossoumeshi\ ;
+製革業 < seikakugyou\ ;
+中学生 < chuugakusei\ ;
+輸出港 < yushutsukou\ ;
+南極帯 < nankyokutai\ ;
+料理道具 < ryouridougu\ ;
+大圏航路 < taikenkouro\ ;
+溶接剤 < yousetsuzai\ ;
+急病人 < kyuubyounin\ ;
+寄宿料 < kishukuryou\ ;
+高島田 < takashimada\ ;
+小正月 < koshougatsu\ ;
+動力計 < douryokukei\ ;
+極大値 < kyokudaichi\ ;
+準備管制 < junbikansei\ ;
+烏口 < karasuguchi\ ;
+出金額 < shukkingaku\ ;
+申告制 < shinkokusei\ ;
+粍 < mirimeitoru\ ;
+陣頭指揮 < jintoushiki\ ;
+粁 < kiromeitoru\ ;
+籵 < dekameetoru\ ;
+臓器移植 < zoukiishoku\ ;
+基本概念 < kihongainen\ ;
+子供達 < kodomotachi\ ;
+会議日程 < kaiginittei\ ;
+公定地価 < kouteichika\ ;
+基礎研究 < kisokenkyuu\ ;
+環境汚染 < kankyouosen\ ;
+媒介物 < baikaibutsu\ ;
+疑心暗鬼 < gishin''anki\ ;
+黄道色 < koudoushoku\ ;
+三葉虫 < san''youchuu\ ;
+全質化 < zenshitsuka\ ;
+生活難 < seikatsunan\ ;
+細動脈 < saidoumyaku\ ;
+江戸前寿司 < edomaezushi\ ;
+総理大臣 < souridaijin\ ;
+複雑化 < fukuzatsuka\ ;
+自己満足 < jikomanzoku\ ;
+勢力圏 < seiryokuken\ ;
+絶対主義 < zettaishugi\ ;
+竰 < senchiritto\ ;
+正味値段 < shouminedan\ ;
+竡 < hekutoritto\ ;
+竓 < miririttoru\ ;
+竏 < kirorittoru\ ;
+個人教授 < kojinkyouju\ ;
+複複線 < fukufukusen\ ;
+少壮気鋭 < shousoukiei\ ;
+新年会 < shin''nenkai\ ;
+不確実 < fukakujitsu\ ;
+東亜諸国 < touashokoku\ ;
+喇叭水仙 < rappazuisen\ ;
+鎮痛剤 < chintsuuzai\ ;
+怪人物 < kaijinbutsu\ ;
+通学生 < tsuugakusei\ ;
+爆心地 < bakushinchi\ ;
+実行可能 < jikkoukanou\ ;
+事前運動 < jizen''undou\ ;
+始末書 < shimatsusho\ ;
+外来患者 < gairaikanja\ ;
+競争心 < kyousoushin\ ;
+避難訓練 < hinankunren\ ;
+剽軽者 < hyoukinmono\ ;
+腸閉塞 < chouheisoku\ ;
+販売部門 < hanbaibumon\ ;
+軍当局 < guntoukyoku\ ;
+労働運動 < roudouundou\ ;
+準備銀行 < junbiginkou\ ;
+幹線道路 < kansendouro\ ;
+不透明性 < futoumeisei\ ;
+白子鳩 < shirakobato\ ;
+町役場 < machiyakuba\ ;
+加圧水炉 < kaatsusuiro\ ;
+不忠実 < fuchuujitsu\ ;
+表音文字 < hyouonmonji\ ;
+指名打者 < shimeidasha\ ;
+総司令部 < soushireibu\ ;
+博学者 < hakugakusha\ ;
+伝統主義 < dentoushugi\ ;
+戦略上 < senryakujou\ ;
+主要都市 < shuyoutoshi\ ;
+南極圏 < nankyokuken\ ;
+両脚規 < ryoukyakuki\ ;
+低温殺菌 < teionsakkin\ ;
+共訳者 < kyouyakusha\ ;
+夫婦関係 < fuufukankei\ ;
+忍耐力 < nintairyoku\ ;
+作業時間 < sagyoujikan\ ;
+集金人 < shuukin''nin\ ;
+非常手段 < hijoushudan\ ;
+十八金 < juuhachikin\ ;
+専制政治 < senseiseiji\ ;
+映画監督 < eigakantoku\ ;
+借用者 < shakuyousha\ ;
+瓰 < deshiguramu\ ;
+濃淡画像 < noutangazou\ ;
+端金 < hashitagane\ ;
+灯火管制 < toukakansei\ ;
+重要事項 < juuyoujikou\ ;
+非常呼集 < hijoukoshuu\ ;
+持久力 < jikyuuryoku\ ;
+局地風 < kyokuchifuu\ ;
+発癌性 < hatsugansei\ ;
+揚陸料 < yourikuryou\ ;
+密貿易 < mitsuboueki\ ;
+通信員 < tsuushin''in\ ;
+立候補者 < rikkouhosha\ ;
+冠動脈 < kandoumyaku\ ;
+変奏曲 < hensoukyoku\ ;
+浄化装置 < joukasouchi\ ;
+御生憎様 < oainikusama\ ;
+表彰台 < hyoushoudai\ ;
+人員淘汰 < jin''intouta\ ;
+葬送曲 < sousoukyoku\ ;
+交通事故 < koutsuujiko\ ;
+千分率 < senbunritsu\ ;
+四輪駆動 < yonrinkudou\ ;
+丸一年 < maruichinen\ ;
+代理公使 < dairikoushi\ ;
+外務大臣 < gaimudaijin\ ;
+老廃物 < rouhaibutsu\ ;
+南極光 < nankyokukou\ ;
+皮算用 < kawazan''you\ ;
+野戦砲兵 < yasenhouhei\ ;
+追分節 < oiwakebushi\ ;
+徳川勢 < tokugawazei\ ;
+地名辞典 < chimeijiten\ ;
+不動産屋 < fudousan''ya\ ;
+創造物 < souzoubutsu\ ;
+初航海 < hatsukoukai\ ;
+購読料 < koudokuryou\ ;
+得票数 < tokuhyousuu\ ;
+体感温度 < taikan''ondo\ ;
+雪景色 < yukigeshiki\ ;
+観光都市 < kankoutoshi\ ;
+同性愛者 < douseiaisha\ ;
+部隊撤退 < butaitettai\ ;
+精神的 < seishinteki\ ;
+協議会員 < kyougikaiin\ ;
+啓蒙運動 < keimouundou\ ;
+徳川公 < tokugawakou\ ;
+自立心 < jiritsushin\ ;
+亀甲模様 < kikkoumoyou\ ;
+衛生状態 < eiseijoutai\ ;
+漸進的 < zenshinteki\ ;
+教会暦 < kyoukaireki\ ;
+殺人者 < satsujinsha\ ;
+鎖国主義 < sakokushugi\ ;
+精神病 < seishinbyou\ ;
+殺人罪 < satsujinzai\ ;
+成年式 < seinenshiki\ ;
+器用貧乏 < kiyoubinbou\ ;
+脱石油 < datsusekiyu\ ;
+先進国 < senshinkoku\ ;
+眼精疲労 < ganseihirou\ ;
+宣伝機関 < sendenkikan\ ;
+土団子 < tsuchidango\ ;
+何時何時 < itsunandoki\ ;
+控室 < hikaeshitsu\ ;
+民権主義 < minkenshugi\ ;
+年次総会 < nenjisoukai\ ;
+混合物 < kongoubutsu\ ;
+軍楽長 < gungakuchou\ ;
+法律上 < houritsujou\ ;
+畜犬税 < chikukenzei\ ;
+無償交付 < mushoukoufu\ ;
+短期手形 < tankitegata\ ;
+内務大臣 < naimudaijin\ ;
+一世一代 < isseichidai\ ;
+事項索引 < jikousakuin\ ;
+放射線科 < houshasenka\ ;
+皇太子妃 < koutaishihi\ ;
+梁山泊 < ryouzanpaku\ ;
+彫塑術 < chousojutsu\ ;
+代用食 < daiyoushoku\ ;
+妖怪変化 < youkaihenge\ ;
+並木道 < namikimichi\ ;
+宝石箱 < housekibako\ ;
+卒業後 < sotsugyougo\ ;
+口角力 < kuchidzumou\ ;
+事業主 < jigyounushi\ ;
+自虐的 < jigyakuteki\ ;
+下相談 < shitasoudan\ ;
+変形部門 < henkeibumon\ ;
+野戦病院 < yasenbyouin\ ;
+禿頭病 < tokutoubyou\ ;
+戦災地区 < sensaichiku\ ;
+弾着点 < danchakuten\ ;
+特務機関 < tokumukikan\ ;
+五月病 < gogatsubyou\ ;
+砂糖大根 < satoudaikon\ ;
+弾力性 < danryokusei\ ;
+核爆弾 < kakubakudan\ ;
+商業街 < shougyougai\ ;
+頭文字 < kashiramoji\ ;
+半加工品 < hankakouhin\ ;
+自記温度計 < jikiondokei\ ;
+縮緬紙 < chirimenshi\ ;
+二等分線 < nitoubunsen\ ;
+授業時間 < jugyoujikan\ ;
+天神地祇 < tenjinchigi\ ;
+追加予算 < tsuikayosan\ ;
+非合理的 < higouriteki\ ;
+労農政府 < rounouseifu\ ;
+南京虫 < nankinmushi\ ;
+裁決書 < saiketsusho\ ;
+下意上達 < kaijoutatsu\ ;
+核燃料 < kakunenryou\ ;
+乗車拒否 < joushakyohi\ ;
+逐字訳 < chikujiyaku\ ;
+水洗便所 < suisenbenjo\ ;
+収納家具 < shuunoukagu\ ;
+未開墾地 < mikaikonchi\ ;
+正当防衛 < seitoubouei\ ;
+一徹者 < ittetsumono\ ;
+御協力 < gokyouryoku\ ;
+学科試験 < gakkashiken\ ;
+係属中 < keizokuchuu\ ;
+潜水母艦 < sensuibokan\ ;
+米印 < komejirushi\ ;
+病中吟 < byouchuugin\ ;
+使用価値 < shiyoukachi\ ;
+極限値 < kyokugenchi\ ;
+教育学 < kyouikugaku\ ;
+電話室 < denwashitsu\ ;
+遠心力 < enshinryoku\ ;
+官尊民卑 < kansonminpi\ ;
+宮崎県 < miyazakiken\ ;
+商工業 < shoukougyou\ ;
+衝動的 < shoudouteki\ ;
+胆石症 < tansekishou\ ;
+輸出品 < yushutsuhin\ ;
+普遍文法 < fuhenbunpou\ ;
+過剰人口 < kajoujinkou\ ;
+三眠蚕 < sanminkaiko\ ;
+間欠泉 < kanketsusen\ ;
+出先機関 < desakikikan\ ;
+準備委員会 < junbiiinkai\ ;
+天龍川 < tenryuukawa\ ;
+教習生 < kyoushuusei\ ;
+隣接地 < rinsetsuchi\ ;
+発生率 < hasseiritsu\ ;
+葡萄畑 < budoubatake\ ;
+境界標 < kyoukaihyou\ ;
+空軍力 < kuugunryoku\ ;
+交声曲 < kouseikyoku\ ;
+現内閣 < gen''naikaku\ ;
+占星術 < senseijutsu\ ;
+香辛料 < koushinryou\ ;
+町道場 < machidoujou\ ;
+宣伝効果 < sendenkouka\ ;
+時々刻々 < jijikokkoku\ ;
+近似計算 < kinjikeisan\ ;
+動力源 < douryokugen\ ;
+恒等式 < koutoushiki\ ;
+討伐軍 < toubatsugun\ ;
+表看板 < omotekanban\ ;
+護憲運動 < goken''undou\ ;
+濃青色 < nouseishoku\ ;
+殺人犯 < satsujinhan\ ;
+残念賞 < zan''nenshou\ ;
+原因結果 < gen''inkekka\ ;
+友軍部隊 < yuugunbutai\ ;
+脳充血 < noujuuketsu\ ;
+食人種 < shokujinshu\ ;
+赤褐色 < sekkasshoku\ ;
+無尽会社 < mujingaisha\ ;
+興信録 < koushinroku\ ;
+電熱器 < den''netsuki\ ;
+作曲者 < sakkyokusha\ ;
+古今東西 < kokontouzai\ ;
+唐錦 < karanishiki\ ;
+看護婦長 < kangofuchou\ ;
+商標権 < shouhyouken\ ;
+悲憤慷慨 < hifunkougai\ ;
+常識人 < joushikijin\ ;
+古代文明 < kodaibunmei\ ;
+観客層 < kankyakusou\ ;
+無産政党 < musanseitou\ ;
+一重桜 < hitoezakura\ ;
+選挙準備 < senkyojunbi\ ;
+地動説 < chidousetsu\ ;
+意識不明 < ishikifumei\ ;
+白亜質 < hakuashitsu\ ;
+膠着剤 < kouchakuzai\ ;
+一段落 < ichidanraku\ ;
+組合主義 < kumiaishugi\ ;
+軍用鳩 < gun''youbato\ ;
+俗文学 < zokubungaku\ ;
+個体発生 < kotaihassei\ ;
+電圧計 < den''atsukei\ ;
+薬局方 < yakkyokuhou\ ;
+法制局 < houseikyoku\ ;
+薬学者 < yakugakusha\ ;
+係争物 < keisoubutsu\ ;
+四分音符 < shibun''onpu\ ;
+使徒書簡 < shitoshokan\ ;
+優柔不断 < yuujuufudan\ ;
+脱毛剤 < datsumouzai\ ;
+煎餅蒲団 < senbeibuton\ ;
+管轄権 < kankatsuken\ ;
+借用書 < shakuyousho\ ;
+予定調和 < yoteichouwa\ ;
+奉公口 < houkouguchi\ ;
+先祖伝来 < senzodenrai\ ;
+放送局 < housoukyoku\ ;
+事業部制 < jigyoubusei\ ;
+黄白色 < kohakushoku\ ;
+臨時列車 < rinjiressha\ ;
+定期試験 < teikishiken\ ;
+羽織袴 < haorihakama\ ;
+総合課税 < sougoukazei\ ;
+遠隔講義 < enkakukougi\ ;
+除幕式 < jomakushiki\ ;
+海底油田 < kaiteiyuden\ ;
+真一文字 < maichimonji\ ;
+蝸牛 < dendenmushi\ ;
+電話調査 < denwachousa\ ;
+技術援助 < gijutsuenjo\ ;
+強制的 < kyouseiteki\ ;
+強心剤 < kyoushinzai\ ;
+生活環 < seikatsukan\ ;
+春一番 < haruichiban\ ;
+十八番 < juuhachiban\ ;
+黒鶫 < kurotsugumi\ ;
+偏向回路 < henkoukairo\ ;
+予定納税 < yoteinouzei\ ;
+皇后陛下 < kougouheika\ ;
+連邦制度 < renpouseido\ ;
+錦蛇 < nishikihebi\ ;
+終身官 < shuushinkan\ ;
+国侍 < kunizamurai\ ;
+電気電子 < denkidenshi\ ;
+代行機関 < daikoukikan\ ;
+疲労困憊 < hiroukonpai\ ;
+盗難保険 < tounanhoken\ ;
+純真無垢 < junshinmuku\ ;
+月長石 < getchouseki\ ;
+教職員 < kyoushokuin\ ;
+下位互換性 < kaigokansei\ ;
+法務大臣 < houmudaijin\ ;
+送別会 < soubetsukai\ ;
+出品国 < shuppinkoku\ ;
+刑事処分 < keijishobun\ ;
+駐車違反 < chuushaihan\ ;
+南京町 < nankinmachi\ ;
+時機尚早 < jikishousou\ ;
+道徳的 < doutokuteki\ ;
+商業界 < shougyoukai\ ;
+収納額 < shuunougaku\ ;
+鼎立戦 < teiritsusen\ ;
+原則的 < gensokuteki\ ;
+年金基金 < nenkinkikin\ ;
+傍聴料 < bouchouryou\ ;
+千円札 < sen''ensatsu\ ;
+定収入 < teishuunyuu\ ;
+適法行為 < tekihoukoui\ ;
+物見遊山 < monomiyusan\ ;
+得意満面 < tokuimanmen\ ;
+時差出勤 < jisashukkin\ ;
+政治問題 < seijimondai\ ;
+絶対敬語 < zettaikeigo\ ;
+鍵盤楽器 < kenbangakki\ ;
+訴訟事件 < soshoujiken\ ;
+意味役割 < imiyakuwari\ ;
+六大州 < rokudaishuu\ ;
+割引券 < waribikiken\ ;
+住生活 < juuseikatsu\ ;
+価格安定 < kakakuantei\ ;
+今上陛下 < kinjouheika\ ;
+電気系統 < denkikeitou\ ;
+前立腺 < zenritsusen\ ;
+兌換銀行 < dakanginkou\ ;
+写真集 < shashinshuu\ ;
+全会一致 < zenkaiitchi\ ;
+百万遍 < hyakumanben\ ;
+蝉時雨 < semishigure\ ;
+麻薬患者 < mayakukanja\ ;
+割引債 < waribikisai\ ;
+心機一転 < shinkiitten\ ;
+無名戦士 < mumeisenshi\ ;
+唯一無二 < yuiitsumuni\ ;
+接着剤 < setchakuzai\ ;
+手術台 < shujutsudai\ ;
+防火扉 < boukatobira\ ;
+乱入者 < ran''nyuusha\ ;
+計画的 < keikakuteki\ ;
+財政安定 < zaiseiantei\ ;
+調印式 < chouinshiki\ ;
+看護学校 < kangogakkou\ ;
+逆転層 < gyakutensou\ ;
+生活法 < seikatsuhou\ ;
+粘土質 < nendoshitsu\ ;
+分類基準 < bunruikijun\ ;
+逆輸入 < gyakuyunyuu\ ;
+文書偽造 < bunshogizou\ ;
+孤軍奮闘 < kogunfuntou\ ;
+新興国 < shinkoukoku\ ;
+数次旅券 < suujiryoken\ ;
+合目的 < goumokuteki\ ;
+合成繊維 < gouseisen''i\ ;
+新人賞 < shinjinshou\ ;
+電報局 < denpoukyoku\ ;
+貴族政治 < kizokuseiji\ ;
+博愛主義 < hakuaishugi\ ;
+一斉検挙 < isseikenkyo\ ;
+亜鉛華軟膏 < aenkanankou\ ;
+三幕物 < sanmakumono\ ;
+白木蓮 < hakumokuren\ ;
+商業港 < shougyoukou\ ;
+一里塚 < ichiridzuka\ ;
+終身刑 < shuushinkei\ ;
+低温輸送 < teion''yusou\ ;
+風光明媚 < fuukoumeibi\ ;
+後部座席 < koubuzaseki\ ;
+動力学 < dourikigaku\ ;
+節料理 < sechiryouri\ ;
+出品人 < shuppin''nin\ ;
+傍聴席 < bouchouseki\ ;
+不適切 < futekisetsu\ ;
+個人投資 < kojintoushi\ ;
+学際的 < gakusaiteki\ ;
+竜骨座 < ryuukotsuza\ ;
+保険会社 < hokengaisha\ ;
+硫化水素 < ryuukasuiso\ ;
+仮条約 < karijouyaku\ ;
+日本列島 < nihonrettou\ ;
+階級章 < kaikyuushou\ ;
+戦時公債 < senjikousai\ ;
+抵抗力 < teikouryoku\ ;
+森林学 < shinringaku\ ;
+海員組合 < kaiinkumiai\ ;
+百万言 < hyakumangen\ ;
+修辞疑問 < shuujigimon\ ;
+港町 < minatomachi\ ;
+法定貨幣 < houteikahei\ ;
+体内受精 < tainaijusei\ ;
+化粧下 < keshoushita\ ;
+虫薬 < mushigusuri\ ;
+楽観主義 < rakkanshugi\ ;
+赤提灯 < akachouchin\ ;
+入院患者 < nyuuinkanja\ ;
+創造主 < souzounushi\ ;
+関連事項 < kanrenjikou\ ;
+原価計算 < genkakeisan\ ;
+電子回路 < denshikairo\ ;
+候孝賢 < houshaushen\ ;
+重点主義 < juutenshugi\ ;
+価電子帯 < kadenshitai\ ;
+有効需要 < yuukoujuyou\ ;
+事業年度 < jigyounendo\ ;
+相反定理 < souhanteiri\ ;
+六分儀座 < rokubungiza\ ;
+冬将軍 < fuyushougun\ ;
+安定状態 < anteijoutai\ ;
+民主政治 < minshuseiji\ ;
+独習書 < dokushuusho\ ;
+公証料 < koushouryou\ ;
+唐紅 < karakurenai\ ;
+綿織物 < men''orimono\ ;
+化学繊維 < kagakusen''i\ ;
+絶対音感 < zettaionkan\ ;
+先入主 < sen''nyuushu\ ;
+最終的 < saishuuteki\ ;
+本建築 < honkenchiku\ ;
+自然破壊 < shizenhakai\ ;
+報道機関 < houdoukikan\ ;
+捕虜交換 < horyokoukan\ ;
+狗尾草 < enokorogusa\ ;
+亜米利加杉 < amerikasugi\ ;
+価値判断 < kachihandan\ ;
+行商人 < gyoushounin\ ;
+切分法 < setsubunhou\ ;
+手練手管 < terentekuda\ ;
+器械体操 < kikaitaisou\ ;
+養老保険 < yourouhoken\ ;
+小百姓 < kobyakushou\ ;
+心丈夫 < kokorojoubu\ ;
+鳥類学 < chouruigaku\ ;
+弱年者 < jakunenmono\ ;
+中隊長 < chuutaichou\ ;
+不当表示 < futouhyouji\ ;
+安全運転 < anzen''unten\ ;
+相談役 < soudan''yaku\ ;
+交際範囲 < kousaihan''i\ ;
+応用科学 < ouyoukagaku\ ;
+食事時 < shokujidoki\ ;
+八面体 < hachimentai\ ;
+不整合人 < fuseigoujin\ ;
+原判決 < genhanketsu\ ;
+単元制度 < tangenseido\ ;
+一歩前進 < ippozenshin\ ;
+国王陛下 < kokuouheika\ ;
+極地圏 < kyokuchiken\ ;
+放送衛星 < housoueisei\ ;
+寂光浄土 < jakkoujoudo\ ;
+監察官 < kansatsukan\ ;
+後生大事 < goshoudaiji\ ;
+三民主義 < sanminshugi\ ;
+白玉粉 < shiratamako\ ;
+商業文 < shougyoubun\ ;
+気管切開 < kikansekkai\ ;
+天動説 < tendousetsu\ ;
+傲岸不遜 < gouganfuson\ ;
+辻説法 < tsujiseppou\ ;
+家父長制 < kafuchousei\ ;
+暗黒星雲 < ankokuseiun\ ;
+近代国家 < kindaikokka\ ;
+煉丹術 < rentanjutsu\ ;
+西海岸 < nishikaigan\ ;
+前途有望 < zentoyuubou\ ;
+急上昇 < kyuujoushou\ ;
+宝石商 < housekishou\ ;
+換算率 < kansanritsu\ ;
+建設者 < kensetsusha\ ;
+北々西 < hokuhokusei\ ;
+音楽理論 < ongakuriron\ ;
+委託販売 < itakuhanbai\ ;
+銀婚式 < ginkonshiki\ ;
+三寒四温 < sankanshion\ ;
+貧乏所帯 < binboujotai\ ;
+御伽草子 < otogizoushi\ ;
+神奈川県 < kanagawaken\ ;
+電気装置 < denkisouchi\ ;
+地方議会 < chihougikai\ ;
+原動力 < gendouryoku\ ;
+俄景気 < niwakageiki\ ;
+装甲部隊 < soukoubutai\ ;
+不可入性 < fukanyuusei\ ;
+悪戯者 < itazuramono\ ;
+大福帳 < daifukuchou\ ;
+時節柄 < jisetsugara\ ;
+南京木綿 < nankinmomen\ ;
+磯鵯 < isohiyodori\ ;
+印象主義 < inshoushugi\ ;
+吸血鬼 < kyuuketsuki\ ;
+糖尿病 < tounyoubyou\ ;
+一張一弛 < itchouisshi\ ;
+区間列車 < kukanressha\ ;
+転任先 < ten''ninsaki\ ;
+支配力 < shihairyoku\ ;
+相思相愛 < soushisouai\ ;
+航空基地 < koukuukichi\ ;
+監査記録 < kansakiroku\ ;
+技術移転 < gijutsuiten\ ;
+産児制限 < sanjiseigen\ ;
+単音節 < tan''onsetsu\ ;
+新聞種 < shinbundane\ ;
+飽和状態 < houwajoutai\ ;
+低丘陵 < teikyuuryou\ ;
+国際的 < kokusaiteki\ ;
+郷土色 < kyoudoshoku\ ;
+竜田姫 < tatsutahime\ ;
+小学館 < shougakukan\ ;
+知能検査 < chinoukensa\ ;
+使節団 < shisetsudan\ ;
+消息文 < shousokubun\ ;
+緋衣草 < higoromosou\ ;
+主計局 < shukeikyoku\ ;
+道徳心 < doutokushin\ ;
+未決囚 < miketsushuu\ ;
+愛唱曲 < aishoukyoku\ ;
+孤影悄然 < koeishouzen\ ;
+五種競技 < goshukyougi\ ;
+偵察隊 < teisatsutai\ ;
+団体保険 < dantaihoken\ ;
+発信側 < hasshingawa\ ;
+姉妹都市 < shimaitoshi\ ;
+遠山里 < tooyamazato\ ;
+神経痛 < shinkeitsuu\ ;
+不通箇所 < futsuukasho\ ;
+神経症 < shinkeishou\ ;
+神経病 < shinkeibyou\ ;
+破邪顕正 < hajakenshou\ ;
+政治団体 < seijidantai\ ;
+一喜一憂 < ikkiichiyuu\ ;
+定着液 < teichakueki\ ;
+弁証学 < benshougaku\ ;
+準備命令 < junbimeirei\ ;
+受験科目 < jukenkamoku\ ;
+木管楽器 < mokkangakki\ ;
+発信人 < hasshin''nin\ ;
+中高音部 < chuukouonbu\ ;
+友愛結婚 < yuuaikekkon\ ;
+緑地帯 < ryokuchitai\ ;
+海軍基地 < kaigunkichi\ ;
+生活圏 < seikatsuken\ ;
+電子素子 < denshisoshi\ ;
+熱伝導 < netsudendou\ ;
+道徳学 < doutokugaku\ ;
+愛国運動 < aikokuundou\ ;
+適格者 < tekikakusha\ ;
+図書室 < toshoshitsu\ ;
+観音様 < kan''nonsama\ ;
+結婚式 < kekkonshiki\ ;
+西洋式 < seiyoushiki\ ;
+人文地理 < jinmonchiri\ ;
+労働争議 < roudousougi\ ;
+情報処理 < jouhoushori\ ;
+可変資本 < kahenshihon\ ;
+為替差益 < kawasesaeki\ ;
+誘拐事件 < yuukaijiken\ ;
+三大都市 < sandaitoshi\ ;
+男冥利 < otokomyouri\ ;
+所要時間 < shoyoujikan\ ;
+女権運動 < joken''undou\ ;
+分散処理 < bunsanshori\ ;
+走行可能 < soukoukanou\ ;
+命綱 < inochidzuna\ ;
+流言飛語 < ryuugenhigo\ ;
+一新紀元 < isshinkigen\ ;
+徒手体操 < toshutaisou\ ;
+上腕骨 < jouwankotsu\ ;
+生命力 < seimeiryoku\ ;
+硬骨漢 < koukotsukan\ ;
+商業地 < shougyouchi\ ;
+金轡 < kanagutsuwa\ ;
+万年床 < man''nendoko\ ;
+口車 < kuchiguruma\ ;
+講釈師 < koushakushi\ ;
+三幅対 < sanpukutsui\ ;
+蛋白尿 < tanpakunyou\ ;
+刺激臭 < shigekishuu\ ;
+草鞋虫 < warajimushi\ ;
+金融業 < kin''yuugyou\ ;
+封建主義 < houkenshugi\ ;
+菜種油 < nataneabura\ ;
+受験戦争 < jukensensou\ ;
+出雲大社 < izumotaisha\ ;
+雛人形 < hinaningyou\ ;
+権門勢家 < kenmonseika\ ;
+無着陸 < muchakuriku\ ;
+上分別 < joufunbetsu\ ;
+大動脈 < daidoumyaku\ ;
+無線操縦 < musensoujuu\ ;
+神無月 < kan''nadzuki\ ;
+幼馴染 < osananajimi\ ;
+円周率 < enshuuritsu\ ;
+借家争議 < shakkasougi\ ;
+宇宙科学 < uchuukagaku\ ;
+商業史 < shougyoushi\ ;
+古典芸能 < kotengeinou\ ;
+山岳病 < sangakubyou\ ;
+親任官 < shin''ninkan\ ;
+追跡者 < tsuisekisha\ ;
+豪華絢爛 < goukakenran\ ;
+発会式 < hakkaishiki\ ;
+婦人運動 < fujin''undou\ ;
+床面積 < yukamenseki\ ;
+不動明王 < fudoumyouou\ ;
+体外受精 < taigaijusei\ ;
+狸親父 < tanukioyaji\ ;
+木石漢 < bokusekikan\ ;
+国防省 < kokuboushou\ ;
+勤務年限 < kinmunengen\ ;
+国文学 < kokubungaku\ ;
+生殖腺 < seishokusen\ ;
+満場一致 < manjouitchi\ ;
+前世生存 < zenseseizon\ ;
+自殺的 < jisatsuteki\ ;
+会計年度 < kaikeinendo\ ;
+造物主 < zoubutsushu\ ;
+万葉仮名 < man''yougana\ ;
+傍聴随意 < bouchouzuii\ ;
+用兵術 < youheijutsu\ ;
+絶対多数 < zettaitasuu\ ;
+取調 < torishirabe\ ;
+退職金 < taishokukin\ ;
+紅白試合 < kouhakujiai\ ;
+会計監査 < kaikeikansa\ ;
+彎月状 < wangetsujou\ ;
+八紘一宇 < hakkouichiu\ ;
+舞台装置 < butaisouchi\ ;
+生没年 < seibotsunen\ ;
+単一性 < tan''itsusei\ ;
+鼻柱 < hanabashira\ ;
+持続力 < jizokuryoku\ ;
+事務長官 < jimuchoukan\ ;
+一般社会 < ippanshakai\ ;
+日帝時代 < nitteijidai\ ;
+新聞業 < shinbungyou\ ;
+登坂車線 < tohanshasen\ ;
+神経核 < shinkeikaku\ ;
+世界最大 < sekaisaidai\ ;
+指導原理 < shidougenri\ ;
+枢軸国 < suujikukoku\ ;
+造次顛沛 < zoujitenpai\ ;
+航空管理 < koukuukanri\ ;
+三色版 < sanshokuban\ ;
+窯印 < kamajirushi\ ;
+中間駅 < chuukan''eki\ ;
+能装束 < noushouzoku\ ;
+結晶学 < kesshougaku\ ;
+感染経路 < kansenkeiro\ ;
+解決法 < kaiketsuhou\ ;
+警戒色 < keikaishoku\ ;
+二等軍曹 < nitougunsou\ ;
+一毛作 < ichimousaku\ ;
+温熱性 < on''netsusei\ ;
+防火塗料 < boukatoryou\ ;
+自縄自縛 < jijoujibaku\ ;
+途中下車 < tochuugesha\ ;
+環境保護 < kankyouhogo\ ;
+嘘発見器 < usohakkenki\ ;
+面会時間 < menkaijikan\ ;
+重機関銃 < juukikanjuu\ ;
+内反脚 < naihankyaku\ ;
+法案審議 < houanshingi\ ;
+延縄漁 < haenawaryou\ ;
+直方体 < chokuhoutai\ ;
+自動制御 < jidouseigyo\ ;
+家族達 < kazokutachi\ ;
+刺激的 < shigekiteki\ ;
+個人指導 < kojinshidou\ ;
+自然発火 < shizenhakka\ ;
+主務大臣 < shumudaijin\ ;
+短期決戦 < tankikessen\ ;
+言語運用 < gengoun''you\ ;
+交換局 < koukankyoku\ ;
+危険思想 < kikenshisou\ ;
+空域管理 < kuuikikanri\ ;
+御殿女中 < gotenjochuu\ ;
+七年忌 < shichinenki\ ;
+隣保事業 < rinpojigyou\ ;
+悪戯書 < itazuragaki\ ;
+千人針 < sen''ninbari\ ;
+合意心中 < gouishinjuu\ ;
+世界記録 < sekaikiroku\ ;
+基本条件 < kihonjouken\ ;
+農民一揆 < noumin''ikki\ ;
+前代未聞 < zendaimimon\ ;
+消毒液 < shoudokueki\ ;
+複合汚染 < fukugouosen\ ;
+絶対零度 < zettaireido\ ;
+構成可能 < kouseikanou\ ;
+一人舞台 < hitoributai\ ;
+皮下組織 < hikasoshiki\ ;
+油砥石 < aburatoishi\ ;
+地下資源 < chikashigen\ ;
+狐饂飩 < kitsuneudon\ ;
+濃褐色 < noukasshoku\ ;
+材木商 < zaimokushou\ ;
+白化個体 < hakukakotai\ ;
+電話回線 < denwakaisen\ ;
+不正咬合 < fuseikougou\ ;
+摩訶不思議 < makafushigi\ ;
+原色版 < genshokuban\ ;
+美容体操 < biyoutaisou\ ;
+協議離婚 < kyougirikon\ ;
+蔦蘿 < tsutakazura\ ;
+温暖前線 < ondanzensen\ ;
+単項式 < tankoushiki\ ;
+新規保管 < shinkihokan\ ;
+土気色 < tsuchikeiro\ ;
+取締 < torishimari\ ;
+付属節 < fuzokusetsu\ ;
+一貫番号 < ikkanbangou\ ;
+現行法規 < genkouhouki\ ;
+一番鶏 < ichibandori\ ;
+紋章学 < monshougaku\ ;
+真只中 < mattadanaka\ ;
+祖国復帰 < sokokufukki\ ;
+含水炭素 < gansuitanso\ ;
+労働時間 < roudoujikan\ ;
+出席者 < shussekisha\ ;
+為替相場 < kawasesouba\ ;
+世界一周 < sekaiisshuu\ ;
+医療法人 < iryouhoujin\ ;
+門前町 < monzenmachi\ ;
+氷袋 < kooribukuro\ ;
+鼓舞激励 < kobugekirei\ ;
+教訓的 < kyoukunteki\ ;
+貯金局 < chokinkyoku\ ;
+官僚臭 < kanryoushuu\ ;
+蹄鉄工 < teitetsukou\ ;
+粒度分布 < ryuudobunpu\ ;
+神経学 < shinkeigaku\ ;
+投下資本 < toukashihon\ ;
+用意周到 < youishuutou\ ;
+表玄関 < omotegenkan\ ;
+内燃機関 < nainenkikan\ ;
+出張店 < shutchouten\ ;
+旅行鞄 < ryokoukaban\ ;
+減塩食 < gen''enshoku\ ;
+団体客 < dantaikyaku\ ;
+防水加工 < bousuikakou\ ;
+心霊学 < shinreigaku\ ;
+個人消費 < kojinshouhi\ ;
+仮性近視 < kaseikinshi\ ;
+大正琴 < taishougoto\ ;
+欠勤率 < kekkinritsu\ ;
+定着剤 < teichakuzai\ ;
+南西 < minaminishi\ ;
+入場料 < nyuujouryou\ ;
+逐語訳 < chikugoyaku\ ;
+思考力 < shikouryoku\ ;
+乳用牛 < nyuuyougyuu\ ;
+正覚坊 < shougakubou\ ;
+緑藻類 < ryokusourui\ ;
+目撃者 < mokugekisha\ ;
+黒曜石 < kokuyouseki\ ;
+空気伝染 < kuukidensen\ ;
+満一年 < man''ichinen\ ;
+没我的 < botsugateki\ ;
+含塵率 < ganjinritsu\ ;
+幼年時代 < younenjidai\ ;
+退職者 < taishokusha\ ;
+蔵屋敷 < kurayashiki\ ;
+社会復帰 < shakaifukki\ ;
+電気製品 < denkiseihin\ ;
+包金 < tsutsumikin\ ;
+再建築 < saikenchiku\ ;
+産婦人科医 < sanfujinkai\ ;
+一貫作業 < ikkansagyou\ ;
+滞在期間 < taizaikikan\ ;
+献身的 < kenshinteki\ ;
+無形財産 < mukeizaisan\ ;
+妨害物 < bougaibutsu\ ;
+点眼薬 < tengan''yaku\ ;
+元首相 < motoshushou\ ;
+無断転載 < mudantensai\ ;
+恐水病 < kyousuibyou\ ;
+均衡予算 < kinkouyosan\ ;
+密売品 < mitsubaihin\ ;
+石川県 < ishikawaken\ ;
+付帯条件 < futaijouken\ ;
+副会長 < fukukaichou\ ;
+発明者 < hatsumeisha\ ;
+軍事工場 < gunjikoujou\ ;
+有効数字 < yuukousuuji\ ;
+創作的 < sousakuteki\ ;
+臍下丹田 < seikatanden\ ;
+大逆罪 < taigyakuzai\ ;
+試用期間 < shiyoukikan\ ;
+一元的 < ichigenteki\ ;
+化学変化 < kagakuhenka\ ;
+自動車税 < jidoushazei\ ;
+言語道断 < gongodoudan\ ;
+百面相 < hyakumensou\ ;
+不侵略 < fushinryaku\ ;
+古狐 < furugitsune\ ;
+付属物 < fuzokubutsu\ ;
+担保物権 < tanpobukken\ ;
+営業時間 < eigyoujikan\ ;
+勉強中 < benkyouchuu\ ;
+写真帳 < shashinchou\ ;
+一目散 < ichimokusan\ ;
+風力計 < fuuryokukei\ ;
+活用形 < katsuyoukei\ ;
+自動扉 < jidoutobira\ ;
+愛妻弁当 < aisaibentou\ ;
+会社立 < kaisharitsu\ ;
+美的嫌悪 < bitekiken''o\ ;
+見目形 < mimekatachi\ ;
+三千世界 < sanzensekai\ ;
+鑑別所 < kanbetsusho\ ;
+多重放送 < tajuuhousou\ ;
+二重外交 < nijuugaikou\ ;
+仮契約 < karikeiyaku\ ;
+核拡散 < kakukakusan\ ;
+周辺国 < shuuhenkoku\ ;
+予備工作 < yobikousaku\ ;
+短波放送 < tanpahousou\ ;
+風光絶佳 < fuukouzekka\ ;
+必然性 < hitsuzensei\ ;
+主情主義 < shujoushugi\ ;
+両替商 < ryougaeshou\ ;
+行動主義 < koudoushugi\ ;
+自分自身 < jibunjishin\ ;
+脱色剤 < dasshokuzai\ ;
+夜光塗料 < yakoutoryou\ ;
+右心室 < ushinshitsu\ ;
+力革 < chikaragawa\ ;
+中央口 < chuuouguchi\ ;
+真菌症 < shinkinshou\ ;
+圧力波 < atsuryokuha\ ;
+帰無仮説 < kimukasetsu\ ;
+市場原理 < shijougenri\ ;
+全国的 < zenkokuteki\ ;
+京滋地方 < keijichihou\ ;
+縄梯子 < nawabashigo\ ;
+大義名分 < taigimeibun\ ;
+呼吸運動 < kokyuuundou\ ;
+螺旋階段 < rasenkaidan\ ;
+英語教育 < eigokyouiku\ ;
+象牙海岸 < zougekaigan\ ;
+我物顔 < wagamonogao\ ;
+日本脳炎 < nihon''nouen\ ;
+食堂車 < shokudousha\ ;
+運営委員会 < un''eiiinkai\ ;
+善知識 < zenchishiki\ ;
+和魂漢才 < wakonkansai\ ;
+経営再建 < keieisaiken\ ;
+脳下垂体 < noukasuitai\ ;
+一円札 < ichiensatsu\ ;
+視聴覚 < shichoukaku\ ;
+募金運動 < bokin''undou\ ;
+耐熱鋼 < tainetsukou\ ;
+刻苦勉励 < kokkubenrei\ ;
+既婚男性 < kikondansei\ ;
+革命的 < kakumeiteki\ ;
+治水工事 < chisuikouji\ ;
+小休止 < shoukyuushi\ ;
+日本人論 < nihonjinron\ ;
+好取組 < koutorikumi\ ;
+博奕宿 < bakuchiyado\ ;
+軍事公債 < gunjikousai\ ;
+十人十色 < juunintoiro\ ;
+無配会社 < muhaigaisha\ ;
+脳貧血 < nouhinketsu\ ;
+家族手当 < kazokuteate\ ;
+洗礼式 < senreishiki\ ;
+甲骨文 < koukotsubun\ ;
+日銀券 < nichiginken\ ;
+羅針盤座 < rashinbanza\ ;
+福祉機器 < fukushikiki\ ;
+貧民窟 < hinminkutsu\ ;
+奉献物 < houkenbutsu\ ;
+実業家 < jitsugyouka\ ;
+胸算用 < munezan''you\ ;
+暫定予算 < zanteiyosan\ ;
+自費出版 < jihishuppan\ ;
+冬木立 < fuyukodachi\ ;
+常用漢字 < jouyoukanji\ ;
+結紮糸 < kessatsushi\ ;
+王侯貴族 < oukoukizoku\ ;
+逆宣伝 < gyakusenden\ ;
+人体模型 < jintaimokei\ ;
+鮮紅色 < senkoushoku\ ;
+入国税 < nyuukokuzei\ ;
+日西辞典 < nisseijiten\ ;
+私儀 < watakushigi\ ;
+感情移入 < kanjouinyuu\ ;
+拡大鏡 < kakudaikyou\ ;
+地方競馬 < chihoukeiba\ ;
+道楽者 < dourakumono\ ;
+女房役 < nyoubouyaku\ ;
+条約国 < jouyakukoku\ ;
+力足 < chikaraashi\ ;
+経済効果 < keizaikouka\ ;
+代替物 < daitaibutsu\ ;
+混凝土 < konkurizeto\ ;
+民事訴訟 < minjisoshou\ ;
+化学記号 < kagakukigou\ ;
+私供 < watashidomo\ ;
+参加意識 < sankaishiki\ ;
+戦時体制 < senjitaisei\ ;
+自由市場 < jiyuushijou\ ;
+冷房完備 < reiboukanbi\ ;
+自己双対 < jikosoutsui\ ;
+消毒剤 < shoudokuzai\ ;
+力負 < chikaramake\ ;
+火燵掛布 < kotatsugake\ ;
+万能薬 < man''nouyaku\ ;
+信憑性 < shinpyousei\ ;
+希望価格 < kiboukakaku\ ;
+列伝体 < retsudentai\ ;
+口可笑 < kuchiokashi\ ;
+選対本部 < sentaihonbu\ ;
+先頭打者 < sentoudasha\ ;
+実生活 < jisseikatsu\ ;
+名前空間 < namaekuukan\ ;
+百姓家 < hyakushouya\ ;
+浅草海苔 < asakusanori\ ;
+事業本部 < jigyouhonbu\ ;
+理論闘争 < rirontousou\ ;
+人口増加 < jinkouzouka\ ;
+外交辞令 < gaikoujirei\ ;
+同音異義語 < douon''igigo\ ;
+氏姓制度 < shiseiseido\ ;
+一局部 < ichikyokubu\ ;
+縄文時代 < joumonjidai\ ;
+間一髪 < kan''ippatsu\ ;
+世界大戦 < sekaitaisen\ ;
+機動演習 < kidouenshuu\ ;
+自警団員 < jikeidan''in\ ;
+電気抵抗 < denkiteikou\ ;
+鎧一具 < yoroiichigu\ ;
+町人物 < chouninmono\ ;
+通訳官 < tsuuyakukan\ ;
+必要悪 < hitsuyouaku\ ;
+鉄道網 < tetsudoumou\ ;
+原産物 < gensanbutsu\ ;
+器楽曲 < kigakukyoku\ ;
+必要性 < hitsuyousei\ ;
+防音装置 < bouonsouchi\ ;
+半面識 < hanmenshiki\ ;
+水澄 < mizusumashi\ ;
+取扱 < toriatsukai\ ;
+夢心地 < yumegokochi\ ;
+負債合計 < fusaigoukei\ ;
+今週中 < konshuuchuu\ ;
+話下手 < hanashibeta\ ;
+遊軍記者 < yuugunkisha\ ;
+価値体系 < kachitaikei\ ;
+二重結婚 < nijuukekkon\ ;
+一長一短 < itchouittan\ ;
+護送船団 < gosousendan\ ;
+犯行現場 < hankougenba\ ;
+意見広告 < ikenkoukoku\ ;
+小乗的 < shoujouteki\ ;
+善因善果 < zen''inzenka\ ;
+立脚点 < rikkyakuten\ ;
+鉄兜 < tetsukabuto\ ;
+無人地帯 < mujinchitai\ ;
+経営転換 < keieitenkan\ ;
+不信実 < fushinjitsu\ ;
+販売機会 < hanbaikikai\ ;
+争奪戦 < soudatsusen\ ;
+商学士 < shougakushi\ ;
+上屋敷 < kamiyashiki\ ;
+若大将 < wakadaishou\ ;
+遠隔操作 < enkakusousa\ ;
+操舵室 < soudashitsu\ ;
+成人式 < seijinshiki\ ;
+慣用語句 < kan''yougoku\ ;
+液体空気 < ekitaikuuki\ ;
+新面目 < shinmenmoku\ ;
+注文服 < chuumonfuku\ ;
+上棟式 < joutoushiki\ ;
+赤銅色 < shakudouiro\ ;
+出刃包丁 < debabouchou\ ;
+向学心 < kougakushin\ ;
+渇望者 < katsubousha\ ;
+土讚本線 < dosanhonsen\ ;
+財政支援 < zaiseishien\ ;
+宮廷画家 < kyuuteigaka\ ;
+執達吏 < shittatsuri\ ;
+最後列車 < saigoressha\ ;
+理工学部 < rikougakubu\ ;
+保管会社 < hokangaisha\ ;
+乗心地 < norigokochi\ ;
+配合禁忌 < haigoukinki\ ;
+弔祭料 < chousairyou\ ;
+過剰投資 < kajoutoushi\ ;
+家長制度 < kachouseido\ ;
+可聴距離 < kachoukyori\ ;
+下検分 < shitakenbun\ ;
+親類縁者 < shinruienja\ ;
+開催式 < kaisaishiki\ ;
+田舎娘 < inakamusume\ ;
+箱火鉢 < hakohibachi\ ;
+無理心中 < murishinjuu\ ;
+副首相 < fukushushou\ ;
+年賀葉書 < nengahagaki\ ;
+敵愾心 < tekigaishin\ ;
+釈空海 < shakukuukai\ ;
+連邦予算 < renpouyosan\ ;
+組織票 < soshikihyou\ ;
+出身者 < shusshinsha\ ;
+創価学会 < soukagakkai\ ;
+仕事量 < shigotoryou\ ;
+半月形 < hangetsukei\ ;
+分子説 < bunshisetsu\ ;
+半月弁 < hangetsuben\ ;
+正答率 < seitouritsu\ ;
+利子補給 < rishihokyuu\ ;
+季節的 < kisetsuteki\ ;
+氷枕 < koorimakura\ ;
+水柱 < mizubashira\ ;
+根本原理 < konpongenri\ ;
+安全保障 < anzenhoshou\ ;
+原子説 < genshisetsu\ ;
+健康保険 < kenkouhoken\ ;
+暗黒時代 < ankokujidai\ ;
+世代交代 < sedaikoutai\ ;
+神嘗祭 < kan''namesai\ ;
+桧舞台 < hinokibutai\ ;
+転送電話 < tensoudenwa\ ;
+対局者 < taikyokusha\ ;
+貝殻骨 < kaigarabone\ ;
+千両箱 < senryoubako\ ;
+昭和時代 < shouwajidai\ ;
+純収入 < junshuunyuu\ ;
+物理的 < butsuriteki\ ;
+林産物 < rinsanbutsu\ ;
+突然死 < totsuzenshi\ ;
+使用許可 < shiyoukyoka\ ;
+証取法 < shoutorihou\ ;
+歴史的 < rekishiteki\ ;
+組織的 < soshikiteki\ ;
+贈呈式 < zouteishiki\ ;
+積載量 < sekisairyou\ ;
+自発的 < jihatsuteki\ ;
+己 < tsuchinoto\ ;
+屡 < shibashiba\ ;
+謀 < hakarigoto\ ;
+熟 < tsukudzuku\ ;
+嘴 < kuchibashi\ ;
+々 < kurikaeshi\ ;
+土石流 < dosekiryuu\ ;
+市町村 < shichouson\ ;
+音楽映画 < ongakueiga\ ;
+食塩水 < shokuensui\ ;
+潤滑油 < junkatsuyu\ ;
+流星群 < ryuuseigun\ ;
+契約金 < keiyakukin\ ;
+決議文 < ketsugibun\ ;
+蒸留酒 < jouryuushu\ ;
+針葉樹 < shin''youju\ ;
+猛勉強 < moubenkyou\ ;
+宇宙遊泳 < uchuuyuuei\ ;
+深刻化 < shinkokuka\ ;
+切通 < kiridooshi\ ;
+所得顔 < tokoroegao\ ;
+御客様 < okyakusama\ ;
+蔵書票 < zoushohyou\ ;
+人工雪 < jinkouyuki\ ;
+同腹仔 < doufukushi\ ;
+射倖心 < shakoushin\ ;
+保健制度 < hokenseido\ ;
+準備運動 < junbiundou\ ;
+代議制度 < daigiseido\ ;
+博士号 < hakushigou\ ;
+入漁者 < nyuugyosha\ ;
+別除権 < betsujoken\ ;
+戦闘服 < sentoufuku\ ;
+模型地図 < mokeichizu\ ;
+養鶏業 < youkeigyou\ ;
+議決権 < giketsuken\ ;
+入園料 < nyuuenryou\ ;
+優先的 < yuusenteki\ ;
+無茶苦茶 < muchakucha\ ;
+同一視 < douitsushi\ ;
+古往今来 < kooukonrai\ ;
+難行道 < nangyoudou\ ;
+遺失品 < ishitsuhin\ ;
+食文化 < shokubunka\ ;
+鯰髭 < namazuhige\ ;
+民主国 < minshukoku\ ;
+再帰熱 < saikinetsu\ ;
+炭化物 < tankabutsu\ ;
+断片的 < danpenteki\ ;
+溺死体 < dekishitai\ ;
+海洋学 < kaiyougaku\ ;
+歯神経 < shishinkei\ ;
+口口 < kuchiguchi\ ;
+反抗的 < hankouteki\ ;
+開催国 < kaisaikoku\ ;
+御両親 < goryoushin\ ;
+摩利支天 < marishiten\ ;
+修正液 < shuuseieki\ ;
+初詣 < hatsumoude\ ;
+石畳 < ishidatami\ ;
+人為淘汰 < jin''itouta\ ;
+厚生省 < kouseishou\ ;
+逆説 < gyakusetsu\ ;
+高級車 < koukyuusha\ ;
+軟文学 < nanbungaku\ ;
+稼働時間 < kadoujikan\ ;
+試作品 < shisakuhin\ ;
+観覧料 < kanranryou\ ;
+不信任 < fushin''nin\ ;
+茸雲 < kinokogumo\ ;
+近道 < chikamichi\ ;
+三脚架 < sankyakuka\ ;
+変態的 < hentaiteki\ ;
+医療制度 < iryouseido\ ;
+近近 < chikadjika\ ;
+乞高評 < koukouhyou\ ;
+水心 < mizugokoro\ ;
+毛氈苔 < mousengoke\ ;
+面罵罵倒 < menbabatou\ ;
+三尺帯 < sanjakuobi\ ;
+応急策 < oukyuusaku\ ;
+砂煙 < sunakemuri\ ;
+人道的 < jindouteki\ ;
+海酸漿 < umihoozuki\ ;
+承認状 < shouninjou\ ;
+随筆家 < zuihitsuka\ ;
+核融合 < kakuyuugou\ ;
+抽選券 < chuusenken\ ;
+川魚 < kawazakana\ ;
+免許証 < menkyoshou\ ;
+美容術 < biyoujutsu\ ;
+裏貸屋 < uragashiya\ ;
+防毒面 < boudokumen\ ;
+弁慶蟹 < benkeigani\ ;
+卯年 < usagidoshi\ ;
+二線式 < nisenshiki\ ;
+必要事 < hitsuyouji\ ;
+発明家 < hatsumeika\ ;
+独裁者 < dokusaisha\ ;
+眺望権 < choubouken\ ;
+内通者 < naitsuusha\ ;
+中長期 < chuuchouki\ ;
+選挙違反 < senkyoihan\ ;
+現象論 < genshouron\ ;
+魔術師 < majutsushi\ ;
+国土庁 < kokudochou\ ;
+積分法 < sekibunhou\ ;
+信号灯 < shingoutou\ ;
+半陰陽 < han''in''you\ ;
+日本時間 < nihonjikan\ ;
+辻辻 < tsujitsuji\ ;
+平面鏡 < heimenkyou\ ;
+北枕 < kitamakura\ ;
+宅配便 < takuhaibin\ ;
+萎縮症 < ishukushou\ ;
+天目山 < tenmokuzan\ ;
+偏平足 < henpeisoku\ ;
+法学士 < hougakushi\ ;
+奴隷制度 < doreiseido\ ;
+構造保持 < kouzouhoji\ ;
+確執 < kakushitsu\ ;
+氷室 < hyoushitsu\ ;
+発煙筒 < hatsuentou\ ;
+側頭葉 < sokutouyou\ ;
+天皇杯 < ten''nouhai\ ;
+細胞核 < saiboukaku\ ;
+自動車化 < jidoushaka\ ;
+独擅場 < dokusenjou\ ;
+日本書紀 < nihonshoki\ ;
+製鋼業 < seikougyou\ ;
+光熱費 < kounetsuhi\ ;
+愛郷心 < aikyoushin\ ;
+決別 < ketsubetsu\ ;
+生産高 < seisandaka\ ;
+海水浴 < kaisuiyoku\ ;
+仮繃帯 < karihoutai\ ;
+及第者 < kyuudaisha\ ;
+後技 < ushirowaza\ ;
+卍巴 < manjidomoe\ ;
+米陸軍 < beirikugun\ ;
+心室 < shinshitsu\ ;
+注文品 < chuumonhin\ ;
+恒常的 < koujouteki\ ;
+人形師 < ningyoushi\ ;
+榴散弾 < ryuusandan\ ;
+発電機 < hatsudenki\ ;
+不空成就 < fukuujouju\ ;
+旧市街 < kyuushigai\ ;
+観覧席 < kanranseki\ ;
+実用化 < jitsuyouka\ ;
+考現学 < kougengaku\ ;
+平和運動 < heiwaundou\ ;
+公定歩合 < kouteibuai\ ;
+天衣無縫 < ten''imuhou\ ;
+開催中 < kaisaichuu\ ;
+理路整然 < riroseizen\ ;
+着色 < chakushoku\ ;
+南京繻子 < nankinjusu\ ;
+円鏡 < marukagami\ ;
+産業界 < sangyoukai\ ;
+遣直 < yarinaoshi\ ;
+虚無主義 < kyomushugi\ ;
+庶民劇 < shomingeki\ ;
+不仕末 < fushimatsu\ ;
+呆気者 < utsukemono\ ;
+解剖学 < kaibougaku\ ;
+仮埋葬 < karimaisou\ ;
+釣道具 < tsuridougu\ ;
+生産額 < seisangaku\ ;
+悲劇的 < higekiteki\ ;
+着脱 < chakudatsu\ ;
+北氷洋 < hoppyouyou\ ;
+十二月 < juunigatsu\ ;
+同学年 < dougakunen\ ;
+彗星 < houkiboshi\ ;
+現代的 < gendaiteki\ ;
+夢判断 < yumehandan\ ;
+岳友会 < gakuyuukai\ ;
+勘定尻 < kanjoujiri\ ;
+円鉋 < marugan''na\ ;
+後後 < nochinochi\ ;
+合宿所 < gasshukujo\ ;
+蠱惑的 < kowakuteki\ ;
+空間軸 < kuukanjiku\ ;
+中間層 < chuukansou\ ;
+特級酒 < tokkyuushu\ ;
+権威主義 < ken''ishugi\ ;
+卸商 < oroshishou\ ;
+署名国 < shomeikoku\ ;
+辻褄 < tsujitsuma\ ;
+気炎万丈 < kienbanjou\ ;
+演劇的 < engekiteki\ ;
+交戦国 < kousenkoku\ ;
+外形的 < gaikeiteki\ ;
+中間子 < chuukanshi\ ;
+花鰹 < hanagatsuo\ ;
+整流子 < seiryuushi\ ;
+優先株 < yuusenkabu\ ;
+短兵急 < tanpeikyuu\ ;
+弁慶縞 < benkeijima\ ;
+牡丹雪 < botan''yuki\ ;
+斜格性 < shakakusei\ ;
+鶴嘴 < tsuruhashi\ ;
+高角砲 < koukakuhou\ ;
+歴年齢 < rekinenrei\ ;
+無分別 < mufunbetsu\ ;
+刺戟性 < shigekisei\ ;
+先隣 < sakidonari\ ;
+通行税 < tsuukouzei\ ;
+超自然 < choushizen\ ;
+削氷機 < sakuhyouki\ ;
+契約者 < keiyakusha\ ;
+夜盗虫 < yotoumushi\ ;
+三三九度 < sansankudo\ ;
+安全率 < anzenritsu\ ;
+原子症 < genshishou\ ;
+原子病 < genshibyou\ ;
+計算機間 < keisankima\ ;
+季節感 < kisetsukan\ ;
+旧勘定 < kyuukanjou\ ;
+仮調印 < karichouin\ ;
+礼儀作法 < reigisahou\ ;
+滅茶苦茶 < mechakucha\ ;
+乗車賃 < joushachin\ ;
+左足 < hidariashi\ ;
+防虫剤 < bouchuuzai\ ;
+得失 < tokushitsu\ ;
+核戦争 < kakusensou\ ;
+発売日 < hatsubaibi\ ;
+耳下腺炎 < jikasen''en\ ;
+定足数 < teisokusuu\ ;
+石油危機 < sekiyukiki\ ;
+里神楽 < satokagura\ ;
+咄々 < totsutotsu\ ;
+薩摩芋 < satsumaimo\ ;
+姦通罪 < kantsuuzai\ ;
+山林学 < sanringaku\ ;
+副議長 < fukugichou\ ;
+刑事事件 < keijijiken\ ;
+航空病 < koukuubyou\ ;
+漢越音 < kan''etsuon\ ;
+出入口 < deiriguchi\ ;
+利用価値 < riyoukachi\ ;
+酒処 < sakedokoro\ ;
+仮納税 < karinouzei\ ;
+総合的 < sougouteki\ ;
+仲裁者 < chuusaisha\ ;
+出展者 < shuttensha\ ;
+活字体 < katsujitai\ ;
+肘鉄砲 < hijideppou\ ;
+対蹠地 < taisekichi\ ;
+回線負荷 < kaisenfuka\ ;
+廻漕業 < kaisougyou\ ;
+低障碍 < teishougai\ ;
+歳月 < toshitsuki\ ;
+残余額 < zan''yogaku\ ;
+横車 < yokoguruma\ ;
+治療法 < chiryouhou\ ;
+機械油 < kikaiabura\ ;
+自発性 < jihatsusei\ ;
+信号手 < shingoushu\ ;
+首尾一貫 < shubiikkan\ ;
+医療保険 < iryouhoken\ ;
+栃木県 < tochigiken\ ;
+調査票 < chousahyou\ ;
+武装解除 < busoukaijo\ ;
+編年史 < hen''nenshi\ ;
+土着民 < dochakumin\ ;
+卓出 < takushutsu\ ;
+進呈本 < shinteibon\ ;
+瑞宝章 < zuihoushou\ ;
+表意文字 < hyouimonji\ ;
+落選者 < rakusensha\ ;
+内勘定 < uchikanjou\ ;
+奉納額 < hounougaku\ ;
+式日 < shikijitsu\ ;
+細胞学 < saibougaku\ ;
+都市国家 < toshikokka\ ;
+果実店 < kajitsuten\ ;
+無為徒食 < muitoshoku\ ;
+映画音楽 < eigaongaku\ ;
+実時間 < jitsujikan\ ;
+入漁権 < nyuugyoken\ ;
+入質 < nyuushichi\ ;
+著作者 < chosakusha\ ;
+着着 < chakuchaku\ ;
+南側 < minamigawa\ ;
+脱脂乳 < dasshinyuu\ ;
+前後左右 < zengosayuu\ ;
+祭祀料 < saishiryou\ ;
+野戦特科 < yasentokka\ ;
+不羈奔放 < fukihonpou\ ;
+内弁慶 < uchibenkei\ ;
+向上心 < koujoushin\ ;
+一手販売 < ittehanbai\ ;
+牧羊者 < bokuyousha\ ;
+参観人 < sankan''nin\ ;
+皮衣 < kawagoromo\ ;
+均一化 < kin''itsuka\ ;
+共同者 < kyoudousha\ ;
+明朝体 < minchoutai\ ;
+塩胡椒 < shiokoshou\ ;
+耐震性 < taishinsei\ ;
+新西蘭 < nyūjīrando\ ;
+区区 < machimachi\ ;
+着発 < chakuhatsu\ ;
+一枚貝 < ichimaigai\ ;
+乱暴者 < ranboumono\ ;
+各一部 < kakuichibu\ ;
+陰日向 < kagehinata\ ;
+紫宸殿 < shishinden\ ;
+幽霊株 < yuureikabu\ ;
+所得者 < shotokusha\ ;
+軍事力 < gunjiryoku\ ;
+勝負事 < shoubugoto\ ;
+当座預金 < touzayokin\ ;
+花鋏 < hanabasami\ ;
+給水車 < kyuusuisha\ ;
+細胞壁 < saibouheki\ ;
+庭漆 < niwaurushi\ ;
+桜花爛漫 < oukaranman\ ;
+可逆性 < kagyakusei\ ;
+自由自在 < jiyuujizai\ ;
+乾燥無味 < kansoumumi\ ;
+二項定理 < nikouteiri\ ;
+懸賞金 < kenshoukin\ ;
+砂嵐 < sunaarashi\ ;
+含嗽薬 < gansouyaku\ ;
+見学者 < kengakusha\ ;
+優先席 < yuusenseki\ ;
+少数者 < shousuusha\ ;
+共同線 < kyoudousen\ ;
+年男 < toshiotoko\ ;
+及第点 < kyuudaiten\ ;
+活性汚泥 < kasseiodei\ ;
+分類表 < bunruihyou\ ;
+近眼鏡 < kingankyou\ ;
+関数族 < kansuuzoku\ ;
+町村制 < chousonsei\ ;
+極悪人 < gokuakunin\ ;
+引受人 < hikiukenin\ ;
+編年体 < hen''nentai\ ;
+代願人 < daigan''nin\ ;
+有力馬 < yuuryokuba\ ;
+次次 < tsugitsugi\ ;
+三三五五 < sansangogo\ ;
+除雪車 < josetsusha\ ;
+大審院 < daishin''in\ ;
+税関長 < zeikanchou\ ;
+中間体 < chuukantai\ ;
+滋養物 < jiyoubutsu\ ;
+九工大 < kyuukoudai\ ;
+刀疵 < katanakizu\ ;
+加湿器 < kashitsuki\ ;
+新訂版 < shinteiban\ ;
+違棚 < chigaidana\ ;
+十人力 < juuninriki\ ;
+下宿人 < geshukunin\ ;
+大業物 < oowazamono\ ;
+直筆 < chokuhitsu\ ;
+側面観 < sokumenkan\ ;
+弐心 < futagokoro\ ;
+現象界 < genshoukai\ ;
+追試験 < tsuishiken\ ;
+先天的 < sententeki\ ;
+建築家 < kenchikuka\ ;
+水量計 < suiryoukei\ ;
+直立 < chokuritsu\ ;
+兜蟹 < kabutogani\ ;
+親衛隊 < shin''eitai\ ;
+盲窓 < mekuramado\ ;
+先天病 < sentenbyou\ ;
+繁殖期 < hanshokuki\ ;
+船幽霊 < funayuurei\ ;
+民族性 < minzokusei\ ;
+御了承 < goryoushou\ ;
+水蛇座 < mizuhebiza\ ;
+拝外的 < haigaiteki\ ;
+刺戟剤 < shigekizai\ ;
+所得税 < shotokuzei\ ;
+棉実油 < menjitsuyu\ ;
+出獄 < shutsugoku\ ;
+出猟 < shutsuryou\ ;
+勤続者 < kinzokusha\ ;
+天皇制 < ten''nousei\ ;
+喫煙車 < kitsuensha\ ;
+実習生 < jisshuusei\ ;
+体系的 < taikeiteki\ ;
+遊興税 < yuukyouzei\ ;
+修道士 < shuudoushi\ ;
+新教徒 < shinkyouto\ ;
+砂埃 < sunabokori\ ;
+博覧会 < hakurankai\ ;
+前登録 < zentouroku\ ;
+東洋学 < touyougaku\ ;
+大将軍 < daishougun\ ;
+在庫管理 < zaikokanri\ ;
+原子核 < genshikaku\ ;
+大公国 < taikoukoku\ ;
+休息所 < kyuusokujo\ ;
+左耳 < hidarimimi\ ;
+高障害 < koushougai\ ;
+力帯 < chikaraobi\ ;
+求道者 < kyuudousha\ ;
+天守閣 < tenshukaku\ ;
+砂嚢 < sunabukuro\ ;
+乾物屋 < kanbutsuya\ ;
+水鉄砲 < mizudeppou\ ;
+千三屋 < senmitsuya\ ;
+入港税 < nyuukouzei\ ;
+銀行業 < ginkougyou\ ;
+火災保険 < kasaihoken\ ;
+休泊所 < kyuuhakujo\ ;
+人工的 < jinkouteki\ ;
+罵詈雑言 < barizougon\ ;
+光蘚 < hikarigoke\ ;
+聴視者 < choushisha\ ;
+両国語 < ryoukokugo\ ;
+道路封鎖 < dourofuusa\ ;
+花詞 < hanakotoba\ ;
+高瀬舟 < takasebune\ ;
+組織名 < soshikimei\ ;
+初氷 < hatsugoori\ ;
+同期式 < doukishiki\ ;
+大腸菌 < daichoukin\ ;
+半狂乱 < hankyouran\ ;
+贅沢品 < zeitakuhin\ ;
+小委員会 < shouiinkai\ ;
+一本道 < ipponmichi\ ;
+利潤率 < rijunritsu\ ;
+迫害者 < hakugaisha\ ;
+大極殿 < daigokuden\ ;
+重量感 < juuryoukan\ ;
+美学的 < bigakuteki\ ;
+写生帳 < shaseichou\ ;
+交渉委員 < koushouiin\ ;
+廃棄物 < haikibutsu\ ;
+電磁石 < denjishaku\ ;
+造営物 < zoueibutsu\ ;
+技術面 < gijutsumen\ ;
+仕置者 < shiokimono\ ;
+苦艾 < nigayomogi\ ;
+時刻表 < jikokuhyou\ ;
+合同行為 < goudoukoui\ ;
+炉辺談話 < rohendanwa\ ;
+毒科学 < dokukagaku\ ;
+直行便 < chokkoubin\ ;
+手内職 < tenaishoku\ ;
+旅行先 < ryokousaki\ ;
+核弾頭 < kakudantou\ ;
+過去分詞 < kakobunshi\ ;
+空集合 < kuushuugou\ ;
+皿秤 < sarabakari\ ;
+特許料 < tokkyoryou\ ;
+主情的 < shujouteki\ ;
+営利会社 < eirigaisha\ ;
+更衣室 < kouishitsu\ ;
+殺伐 < satsubatsu\ ;
+会席膳 < kaisekizen\ ;
+千一夜 < sen''ichiya\ ;
+真田紐 < sanadahimo\ ;
+道学者 < dougakusha\ ;
+揮発性 < kihatsusei\ ;
+沸々 < futsufutsu\ ;
+出資金 < shusshikin\ ;
+牧羊犬 < bokuyouken\ ;
+人事不省 < jinjifusei\ ;
+蒸留水 < jouryuusui\ ;
+異性関係 < iseikankei\ ;
+等圧線 < touatsusen\ ;
+毒味役 < dokumiyaku\ ;
+兎脣 < mitsukuchi\ ;
+事故原因 < jikogen''in\ ;
+優良店 < yuuryouten\ ;
+内芸者 < uchigeisha\ ;
+悪達者 < warudassha\ ;
+三面鏡 < sanmenkyou\ ;
+狸蕎麦 < tanukisoba\ ;
+裏書人 < uragakinin\ ;
+特大号 < tokudaigou\ ;
+組織体 < soshikitai\ ;
+現実化 < genjitsuka\ ;
+多目的 < tamokuteki\ ;
+将来性 < shouraisei\ ;
+一人腹 < hitoribara\ ;
+座技 < suwariwaza\ ;
+画一化 < kakuitsuka\ ;
+重金属 < juukinzoku\ ;
+良質 < ryoushitsu\ ;
+槍衾 < yaribusuma\ ;
+家出少女 < iedeshoujo\ ;
+立会人 < tachiainin\ ;
+古典主義 < kotenshugi\ ;
+不法投棄 < fuhoutouki\ ;
+逐日 < chikujitsu\ ;
+歴史上 < rekishijou\ ;
+製鉄所 < seitetsujo\ ;
+若緑 < wakamidori\ ;
+一人者 < hitorimono\ ;
+車賃 < kurumachin\ ;
+二重螺旋 < nijuurasen\ ;
+遮断壁 < shadanpeki\ ;
+特売場 < tokubaijou\ ;
+告知板 < kokuchiban\ ;
+沖積期 < chuusekiki\ ;
+仮記入 < karikinyuu\ ;
+修道会 < shuudoukai\ ;
+位相速度 < isousokudo\ ;
+桟梯子 < sanbashigo\ ;
+番号札 < bangoufuda\ ;
+少数点 < shousuuten\ ;
+山猫座 < yamanekoza\ ;
+寝台券 < shindaiken\ ;
+水銀柱 < suiginchuu\ ;
+赤海亀 < akaumigame\ ;
+骨相学 < kossougaku\ ;
+音韻部門 < on''inbumon\ ;
+機能主義 < kinoushugi\ ;
+大臼歯 < daikyuushi\ ;
+機械警備 < kikaikeibi\ ;
+民族史 < minzokushi\ ;
+五稜郭 < goryoukaku\ ;
+契約書 < keiyakusho\ ;
+影法師 < kageboushi\ ;
+金剛石 < kongouseki\ ;
+畑鼠 < hatanezumi\ ;
+特許庁 < tokkyochou\ ;
+基礎試験 < kisoshiken\ ;
+家庭菜園 < kateisaien\ ;
+特売品 < tokubaihin\ ;
+道路工事 < dourokouji\ ;
+下請負 < shitaukeoi\ ;
+収穫期 < shuukakuki\ ;
+亜爾然丁 < aruzenchin\ ;
+四苦八苦 < shikuhakku\ ;
+着払 < chakubarai\ ;
+陸戦隊 < rikusentai\ ;
+給水管 < kyuusuikan\ ;
+委細面談 < isaimendan\ ;
+神秘的 < shinpiteki\ ;
+重量噸 < juuryouton\ ;
+対校試合 < taikoujiai\ ;
+収穫時 < shuukakuji\ ;
+高圧縮 < kouasshuku\ ;
+著作権 < chosakuken\ ;
+人気作家 < ninkisakka\ ;
+代執行 < daishikkou\ ;
+限定的 < genteiteki\ ;
+高圧線 < kouatsusen\ ;
+仮採用 < karisaiyou\ ;
+暖冬異変 < dantouihen\ ;
+出撃 < shutsugeki\ ;
+改革者 < kaikakusha\ ;
+地下鉄 < chikatetsu\ ;
+尊王党 < son''noutou\ ;
+土俵際 < dohyougiwa\ ;
+大山猫 < ooyamaneko\ ;
+航空学 < koukuugaku\ ;
+原材料 < genzairyou\ ;
+出産数 < shussansuu\ ;
+欄参照 < ransanshou\ ;
+出生数 < shusseisuu\ ;
+守備率 < shubiritsu\ ;
+文芸学 < bungeigaku\ ;
+女性一般 < joseiippan\ ;
+紅冠鳥 < koukanchou\ ;
+初場所 < hatsubasho\ ;
+乳状液 < nyuujoueki\ ;
+単坐式 < tanzashiki\ ;
+在留民 < zairyuumin\ ;
+美顔術 < biganjutsu\ ;
+煮沸器 < shafutsuki\ ;
+優良品 < yuuryouhin\ ;
+怪獣映画 < kaijuueiga\ ;
+多種多様 < tashutayou\ ;
+峠道 < tougemichi\ ;
+二部教授 < nibukyouju\ ;
+戦術家 < senjutsuka\ ;
+速度違反 < sokudoihan\ ;
+仕事師 < shigotoshi\ ;
+年強 < toshidzuyo\ ;
+横断歩道 < oudanhodou\ ;
+無生物 < museibutsu\ ;
+雑文家 < zatsubunka\ ;
+同調者 < douchousha\ ;
+予約席 < yoyakuseki\ ;
+金石文 < kinsekibun\ ;
+練習船 < renshuusen\ ;
+舗装道路 < hosoudouro\ ;
+測深機 < sokushinki\ ;
+艶艶 < tsuyatsuya\ ;
+発見料 < hakkenryou\ ;
+衒学者 < gengakusha\ ;
+引出物 < hikidemono\ ;
+開架式 < kaikashiki\ ;
+包含的 < houganteki\ ;
+合奏調 < gassouchou\ ;
+田鵑 < hototogisu\ ;
+共和国 < kyouwakoku\ ;
+審判員 < shinpan''in\ ;
+無線技師 < musengishi\ ;
+清朝体 < seichoutai\ ;
+飛鳥時代 < asukajidai\ ;
+表日本 < omotenihon\ ;
+現代劇 < gendaigeki\ ;
+山鯨 < yamakujira\ ;
+即効薬 < sokkouyaku\ ;
+日運動 < nichiundou\ ;
+草枕 < kusamakura\ ;
+職階制 < shokkaisei\ ;
+前車軸 < zenshajiku\ ;
+回路基板 < kairokiban\ ;
+上昇線 < joushousen\ ;
+機密性 < kimitsusei\ ;
+明細表 < meisaihyou\ ;
+形成外科 < keiseigeka\ ;
+修辞学 < shuujigaku\ ;
+名誉職 < meiyoshoku\ ;
+宇宙兵器 < uchuuheiki\ ;
+四天王 < shiten''nou\ ;
+異常気象 < ijoukishou\ ;
+人相学 < ninsougaku\ ;
+着実 < chakujitsu\ ;
+授業料 < jugyouryou\ ;
+鉛中毒 < enchuudoku\ ;
+無機化学 < mukikagaku\ ;
+自由主義 < jiyuushugi\ ;
+治療代 < chiryoudai\ ;
+傷薬 < kizugusuri\ ;
+位記追贈 < ikitsuisou\ ;
+帯黄色 < taioushoku\ ;
+茶柱 < chabashira\ ;
+直接 < chokusetsu\ ;
+底土 < sokotsuchi\ ;
+実写映画 < jisshaeiga\ ;
+起工式 < kikoushiki\ ;
+自由時間 < jiyuujikan\ ;
+畳針 < tatamihari\ ;
+発熱 < hatsunetsu\ ;
+切実 < setsujitsu\ ;
+取得者 < shutokusha\ ;
+御礼奉公 < oreiboukou\ ;
+山颪 < yamaoroshi\ ;
+悪平等 < akubyoudou\ ;
+光物 < hikarimono\ ;
+剔出 < tekishutsu\ ;
+生魚 < namazakana\ ;
+朱子学 < shushigaku\ ;
+軽金属 < keikinzoku\ ;
+健脚家 < kenkyakuka\ ;
+先覚者 < senkakusha\ ;
+不整脈 < fuseimyaku\ ;
+仲間内 < nakamauchi\ ;
+将来像 < shouraizou\ ;
+低教会 < teikyoukai\ ;
+性衝動 < seishoudou\ ;
+園芸用具 < engeiyougu\ ;
+紙芝居 < kamishibai\ ;
+偏辺 < katahorori\ ;
+作成者 < sakuseisha\ ;
+回春剤 < kaishunzai\ ;
+消費量 < shouhiryou\ ;
+並製品 < namiseihin\ ;
+花畑 < hanabatake\ ;
+破茶目茶 < hachamecha\ ;
+専有権 < sen''yuuken\ ;
+乗馬靴 < joubagutsu\ ;
+候間 < sourouaida\ ;
+不穏文書 < fuonbunsho\ ;
+出資者 < shusshisha\ ;
+化石学 < kasekigaku\ ;
+漢字文化 < kanjibunka\ ;
+聴診器 < choushinki\ ;
+進出 < shinshutsu\ ;
+猩猩蠅 < shoujoubae\ ;
+乱数表 < ransuuhyou\ ;
+予備試験 < yobishiken\ ;
+労務管理 < roumukanri\ ;
+店卸 < tanaoroshi\ ;
+埋立地 < umetatechi\ ;
+共同性 < kyoudousei\ ;
+熟練者 < jukurensha\ ;
+東北東 < touhokutou\ ;
+平和会議 < heiwakaigi\ ;
+略述 < ryakujutsu\ ;
+生体膜 < seitaimaku\ ;
+任務部隊 < ninmubutai\ ;
+民衆駅 < minshuueki\ ;
+宇宙食 < uchuushoku\ ;
+常常 < tsunedzune\ ;
+日光浴 < nikkouyoku\ ;
+代数学 < daisuugaku\ ;
+小間物屋 < komamonoya\ ;
+能役者 < nouyakusha\ ;
+沖積土 < chuusekido\ ;
+引力圏 < inryokuken\ ;
+別口 < betsukuchi\ ;
+中折帽 < nakaorebou\ ;
+非活動 < hikatsudou\ ;
+縦横無尽 < juuoumujin\ ;
+八橋 < yatsuhashi\ ;
+国家主義 < kokkashugi\ ;
+過剰投与 < kajoutouyo\ ;
+論理回路 < ronrikairo\ ;
+有功章 < yuukoushou\ ;
+投票者 < touhyousha\ ;
+攻撃隊 < kougekitai\ ;
+報告者 < houkokusha\ ;
+発表者 < happyousha\ ;
+惣管領 < soukanryou\ ;
+自壊作用 < jikaisayou\ ;
+選択肢 < sentakushi\ ;
+技術者 < gijutsusha\ ;
+進歩的 < shinpoteki\ ;
+埋蔵量 < maizouryou\ ;
+仕事台 < shigotodai\ ;
+性成熟 < seiseijuku\ ;
+永年間 < naganenkan\ ;
+背教者 < haikyousha\ ;
+辰年 < tatsudoshi\ ;
+手工業 < shukougyou\ ;
+準備期間 < junbikikan\ ;
+別別 < betsubetsu\ ;
+尻餠 < shirimochi\ ;
+申請者 < shinseisha\ ;
+演出家 < enshutsuka\ ;
+一安心 < hitoanshin\ ;
+天下無双 < tenkamusou\ ;
+行楽地 < kourakuchi\ ;
+食管法 < shokkanhou\ ;
+観測船 < kansokusen\ ;
+競合者 < kyougousha\ ;
+健脳剤 < ken''nouzai\ ;
+一瀉千里 < isshasenri\ ;
+白樺 < shirakanba\ ;
+金剛杖 < kongoudzue\ ;
+横行闊歩 < oukoukappo\ ;
+謝肉祭 < shanikusai\ ;
+複写紙 < fukushashi\ ;
+週刊誌 < shuukanshi\ ;
+収税所 < shuuzeisho\ ;
+剰余価値 < jouyokachi\ ;
+八月 < hachigatsu\ ;
+通行人 < tsuukounin\ ;
+鑑定料 < kanteiryou\ ;
+踏車 < fumiguruma\ ;
+文化国家 < bunkakokka\ ;
+舞台稽古 < butaigeiko\ ;
+同一人 < douitsunin\ ;
+高潮線 < kouchousen\ ;
+浸透性 < shintousei\ ;
+血色素 < kesshikiso\ ;
+脳震盪 < noushintou\ ;
+伊勢大廟 < isetaibyou\ ;
+賃貸人 < chintainin\ ;
+出生地 < shusseichi\ ;
+略説 < ryakusetsu\ ;
+練習生 < renshuusei\ ;
+座席表 < zasekihyou\ ;
+観測者 < kansokusha\ ;
+相互支援 < sougoshien\ ;
+地獄耳 < jigokumimi\ ;
+高級品 < koukyuuhin\ ;
+遠日点 < enjitsuten\ ;
+漢学者 < kangakusha\ ;
+牧場鳥 < makibatori\ ;
+申込 < moushikomi\ ;
+切切 < setsusetsu\ ;
+死刑囚 < shikeishuu\ ;
+氷砂糖 < koorizatou\ ;
+普遍原理 < fuhengenri\ ;
+共著者 < kyouchosha\ ;
+骨髄炎 < kotsuzuien\ ;
+不即不離 < fusokufuri\ ;
+放牧地 < houbokuchi\ ;
+悪因悪果 < akuin''akka\ ;
+白血球 < hakkekkyuu\ ;
+盲壁 < mekurakabe\ ;
+溶岩流 < youganryuu\ ;
+死傷者 < shishousha\ ;
+式部官 < shikibukan\ ;
+脆弱性 < zeijakusei\ ;
+給水栓 < kyuusuisen\ ;
+鯨幕 < kujiramaku\ ;
+観測網 < kansokumou\ ;
+急行券 < kyuukouken\ ;
+白星 < shiroboshi\ ;
+百日 < hyakunichi\ ;
+附和雷同 < fuwaraidou\ ;
+御鞭撻 < gobentatsu\ ;
+緑十字 < ryokujuuji\ ;
+化粧部屋 < keshoubeya\ ;
+流線形 < ryuusenkei\ ;
+膜質 < makushitsu\ ;
+原始的 < genshiteki\ ;
+牧羊地 < bokuyouchi\ ;
+出入 < shutsunyuu\ ;
+磨製石器 < maseisekki\ ;
+父子家庭 < fushikatei\ ;
+埼玉県 < saitamaken\ ;
+余韻嫋嫋 < yoinjoujou\ ;
+攻撃軍 < kougekigun\ ;
+敵艦隊 < tekikantai\ ;
+年下 < toshishita\ ;
+食器棚 < shokkidana\ ;
+伝送先 < densousaki\ ;
+稲荷鮨 < inarizushi\ ;
+係長 < kakarichou\ ;
+復調器 < fukuchouki\ ;
+大病人 < daibyounin\ ;
+共労者 < kyourousha\ ;
+候調 < sourouchou\ ;
+病原菌 < byougenkin\ ;
+朝鮮人 < chousenjin\ ;
+縄文土器 < joumondoki\ ;
+優越権 < yuuetsuken\ ;
+鯨尺 < kujirajaku\ ;
+一人旅 < hitoritabi\ ;
+文学論 < bungakuron\ ;
+肉感的 < nikkanteki\ ;
+急行便 < kyuukoubin\ ;
+甲乙丙 < kouotsuhei\ ;
+中波長 < chuuhachou\ ;
+無職者 < mushokusha\ ;
+収税官 < shuuzeikan\ ;
+学部長 < gakubuchou\ ;
+財務管理 < zaimukanri\ ;
+超格子 < choukoushi\ ;
+穂状花序 < suijoukajo\ ;
+闊葉樹 < katsuyouju\ ;
+盛土 < moritsuchi\ ;
+共鳴者 < kyoumeisha\ ;
+無体物 < mutaibutsu\ ;
+浮気女 < uwakion''na\ ;
+登竜門 < touryuumon\ ;
+一義的 < ichigiteki\ ;
+第一条 < daiichijou\ ;
+辞書部門 < jishobumon\ ;
+内用薬 < naiyouyaku\ ;
+機動部隊 < kidoubutai\ ;
+保安処分 < hoanshobun\ ;
+花暦 < hanagoyomi\ ;
+座標軸 < zahyoujiku\ ;
+策源地 < sakugenchi\ ;
+直列 < chokuretsu\ ;
+優生学 < yuuseigaku\ ;
+意思表示 < ishihyouji\ ;
+分隊長 < buntaichou\ ;
+営利事業 < eirijigyou\ ;
+前借金 < zenshakkin\ ;
+皮膚移植 < hifuishoku\ ;
+仲裁人 < chuusainin\ ;
+赤道祭 < sekidousai\ ;
+東北大 < touhokudai\ ;
+実証論 < jisshouron\ ;
+不燃物 < funenbutsu\ ;
+全強風 < zenkyoufuu\ ;
+議事妨害 < gijibougai\ ;
+小天地 < shoutenchi\ ;
+酢酸塩 < sakusan''en\ ;
+超音速 < chouonsoku\ ;
+密告者 < mikkokusha\ ;
+分類学 < bunruigaku\ ;
+彫金師 < choukinshi\ ;
+一騎当千 < ikkitousen\ ;
+阿鼻叫喚 < abikyoukan\ ;
+絶対温度 < zettaiondo\ ;
+黄金世界 < ougonsekai\ ;
+共通語 < kyoutsuugo\ ;
+冽冽 < retsuretsu\ ;
+神秘学 < shinhigaku\ ;
+一本橋 < ipponbashi\ ;
+第五列 < daigoretsu\ ;
+紳士用 < shinshiyou\ ;
+一枚岩 < ichimaiiwa\ ;
+一本槍 < ippon''yari\ ;
+困窮者 < konkyuusha\ ;
+入室 < nyuushitsu\ ;
+棒温度計 < bouondokei\ ;
+冬支度 < fuyujitaku\ ;
+共同体 < kyoudoutai\ ;
+少数党 < shousuutou\ ;
+全民衆 < zenminshuu\ ;
+相反的 < souhanteki\ ;
+浮遊物 < fuyuubutsu\ ;
+労働省 < roudoushou\ ;
+孫息子 < magomusuko\ ;
+反対意見 < hantaiiken\ ;
+供養塚 < kuyoudzuka\ ;
+駆逐艦 < kuchikukan\ ;
+素人目 < shiroutome\ ;
+精肉店 < seinikuten\ ;
+双殻類 < soukakurui\ ;
+欣求浄土 < gongujoudo\ ;
+金貨準備 < kinkajunbi\ ;
+奨励金 < shoureikin\ ;
+不精髭 < bushouhige\ ;
+論理素子 < ronrisoshi\ ;
+能動的 < noudouteki\ ;
+約半分 < yakuhanbun\ ;
+山荒 < yamaarashi\ ;
+網漁業 < amigyogyou\ ;
+授業中 < jugyouchuu\ ;
+岩石圏 < gansekiken\ ;
+露地栽培 < rojisaibai\ ;
+役目柄 < yakumegara\ ;
+古墳時代 < kofunjidai\ ;
+一本松 < ipponmatsu\ ;
+塩煎餅 < shiosenbei\ ;
+南々西 < nan''nansei\ ;
+在学生 < zaigakusei\ ;
+剃刀砥 < kamisorido\ ;
+多発性 < tahatsusei\ ;
+無煙火薬 < muenkayaku\ ;
+優越感 < yuuetsukan\ ;
+特級品 < tokkyuuhin\ ;
+三角錐 < sankakusui\ ;
+傑物 < ketsubutsu\ ;
+必治薬 < hitchiyaku\ ;
+単振動 < tanshindou\ ;
+主張者 < shuchousha\ ;
+排他律 < haitaritsu\ ;
+政治機構 < seijikikou\ ;
+意志決定 < ishikettei\ ;
+優越性 < yuuetsusei\ ;
+形態学 < keitaigaku\ ;
+工業界 < kougyoukai\ ;
+工業用 < kougyouyou\ ;
+積乱雲 < sekiran''un\ ;
+拝観料 < haikanryou\ ;
+領海線 < ryoukaisen\ ;
+角分散 < kakubunsan\ ;
+不見識 < fukenshiki\ ;
+大学生 < daigakusei\ ;
+最北端 < saihokutan\ ;
+表面上 < hyoumenjou\ ;
+濃硫酸 < nouryuusan\ ;
+略筆 < ryakuhitsu\ ;
+水化物 < suikabutsu\ ;
+超伝導 < choudendou\ ;
+文学者 < bungakusha\ ;
+粗目雪 < zarameyuki\ ;
+史学者 < shigakusha\ ;
+国民軍 < kokumingun\ ;
+咀嚼筋 < soshakukin\ ;
+住所録 < juushoroku\ ;
+駐停車 < chuuteisha\ ;
+植樹祭 < shokujusai\ ;
+負荷分散 < fukabunsan\ ;
+角速度 < kakusokudo\ ;
+左利 < hidarikiki\ ;
+大赤斑 < daisekihan\ ;
+地中海 < chichuukai\ ;
+伸餅 < noshimochi\ ;
+不偏不党 < fuhenfutou\ ;
+内冑 < uchikabuto\ ;
+商売人 < shoubainin\ ;
+同床異夢 < doushouimu\ ;
+受取人 < uketorinin\ ;
+見本市 < mihon''ichi\ ;
+無限軌道 < mugenkidou\ ;
+投票権 < touhyouken\ ;
+探照灯 < tanshoutou\ ;
+全勝軍 < zenshougun\ ;
+給水塔 < kyuusuitou\ ;
+潮干狩 < shiohigari\ ;
+軍事顧問 < gunjikomon\ ;
+牡羊座 < ohitsujiza\ ;
+耽美主義 < tanbishugi\ ;
+収税人 < shuuzeinin\ ;
+喜劇映画 < kigekieiga\ ;
+左側 < hidarigawa\ ;
+選択権 < sentakuken\ ;
+採点表 < saitenhyou\ ;
+工工四 < kunkunshii\ ;
+入口 < hairiguchi\ ;
+記録的 < kirokuteki\ ;
+豆板銀 < mameitagin\ ;
+絶対量 < zettairyou\ ;
+東北人 < touhokujin\ ;
+海軍省 < kaigunshou\ ;
+金剛力 < kongouriki\ ;
+真暗闇 < makurayami\ ;
+検疫官 < ken''ekikan\ ;
+室長 < shitsuchou\ ;
+対象外 < taishougai\ ;
+新潟県 < niigataken\ ;
+闇再販 < yamisaihan\ ;
+動物愛 < doubutsuai\ ;
+曼珠沙華 < manjushage\ ;
+使用量 < shiyouryou\ ;
+優姿 < yasasugata\ ;
+藁半紙 < warabanshi\ ;
+模擬試験 < mogishiken\ ;
+新開地 < shinkaichi\ ;
+非常識 < hijoushiki\ ;
+一面観 < ichimenkan\ ;
+管絃楽 < kangengaku\ ;
+規則違反 < kisokuihan\ ;
+最恵国 < saikeikoku\ ;
+慢性的 < manseiteki\ ;
+夏炉冬扇 < karotousen\ ;
+推計学 < suikeigaku\ ;
+副領事 < fukuryouji\ ;
+印刷者 < insatsusha\ ;
+耐火力 < taikaryoku\ ;
+友禅染 < yuuzenzome\ ;
+報告書 < houkokusho\ ;
+骨格筋 < kokkakukin\ ;
+雨天決行 < utenkekkou\ ;
+藻塩草 < moshiogusa\ ;
+集大成 < shuutaisei\ ;
+慢性病 < manseibyou\ ;
+宣言的 < sengenteki\ ;
+六重奏 < rokujuusou\ ;
+音響学 < onkyougaku\ ;
+申立 < moushitate\ ;
+工業港 < kougyoukou\ ;
+総辞職 < soujishoku\ ;
+軍団長 < gundanchou\ ;
+意見交換 < ikenkoukan\ ;
+年長者 < nenchousha\ ;
+総務局 < soumukyoku\ ;
+不乾性油 < fukanseiyu\ ;
+面相筆 < mensoufude\ ;
+散歩道 < sanpomichi\ ;
+示圧計 < shiatsukei\ ;
+世紀末 < seikimatsu\ ;
+第三国 < daisangoku\ ;
+投票数 < touhyousuu\ ;
+何箇月 < nankagetsu\ ;
+申請書 < shinseisho\ ;
+植物 < shokubutsu\ ;
+腹膜炎 < fukumakuen\ ;
+温泉町 < onsenmachi\ ;
+主動的 < shudouteki\ ;
+泌尿器科 < hinyoukika\ ;
+不文律 < fubunritsu\ ;
+弁当箱 < bentoubako\ ;
+岩燕 < iwatsubame\ ;
+天体学 < tentaigaku\ ;
+印刷紙 < insatsushi\ ;
+低成長 < teiseichou\ ;
+俯仰角 < fugyoukaku\ ;
+帷幄上奏 < iakujousou\ ;
+放熱器 < hounetsuki\ ;
+純良品 < junryouhin\ ;
+備後表 < bingoomote\ ;
+暗殺者 < ansatsusha\ ;
+平教員 < hirakyouin\ ;
+不覚者 < fukakumono\ ;
+成長点 < seichouten\ ;
+東横線 < touyokosen\ ;
+救済者 < kyuusaisha\ ;
+知能的 < chinouteki\ ;
+儲口 < moukeguchi\ ;
+全権委員 < zenken''iin\ ;
+幻覚剤 < genkakuzai\ ;
+果物屋 < kudamonoya\ ;
+演算機構 < enzankikou\ ;
+人格者 < jinkakusha\ ;
+無蓋貨車 < mugaikasha\ ;
+金属間 < kinzokukan\ ;
+花柳病 < karyuubyou\ ;
+棟瓦 < munagawara\ ;
+高枕 < takamakura\ ;
+老大国 < routaikoku\ ;
+代言人 < daigen''nin\ ;
+心得顔 < kokoroegao\ ;
+代表者 < daihyousha\ ;
+主知的 < shuchiteki\ ;
+文学界 < bungakukai\ ;
+切断機 < setsudanki\ ;
+一時的 < ichijiteki\ ;
+交通網 < koutsuumou\ ;
+二十世紀 < nijisseiki\ ;
+保護処分 < hogoshobun\ ;
+地球人 < chikyuujin\ ;
+脹脛 < fukurahagi\ ;
+高曇 < takagumori\ ;
+皮膚科学 < hifukagaku\ ;
+地球上 < chikyuujou\ ;
+逆提案 < gyakuteian\ ;
+対数表 < taisuuhyou\ ;
+衆愚政治 < shuguseiji\ ;
+敗戦国 < haisenkoku\ ;
+侍従武官 < jijuubukan\ ;
+新製品 < shinseihin\ ;
+控訴期間 < kousokikan\ ;
+上位構造 < jouikouzou\ ;
+極距離 < kyokukyori\ ;
+常任委員 < jounin''iin\ ;
+芝居小屋 < shibaigoya\ ;
+桜花 < sakurabana\ ;
+公租公課 < kousokouka\ ;
+熟練工 < jukurenkou\ ;
+色素体 < shikisotai\ ;
+丸砥石 < marutoishi\ ;
+同族会 < douzokukai\ ;
+経済的 < keizaiteki\ ;
+易感染性 < ikansensei\ ;
+牛乳屋 < gyuunyuuya\ ;
+練習場 < renshuujou\ ;
+紀伊國屋 < kinokuniya\ ;
+桑苺 < kuwaichigo\ ;
+夜鷹蕎麦 < yotakasoba\ ;
+特製品 < tokuseihin\ ;
+勤務時間 < kinmujikan\ ;
+厭世主義 < enseishugi\ ;
+単位記号 < tan''ikigou\ ;
+脚色 < kyakushoku\ ;
+不誠実 < fuseijitsu\ ;
+従来型 < juuraigata\ ;
+対象体 < taishoutai\ ;
+粉石鹸 < konasekken\ ;
+夜尿症 < yanyoushou\ ;
+超文面 < choubunmen\ ;
+排他主義 < haitashugi\ ;
+動物園 < doubutsuen\ ;
+総監督 < soukantoku\ ;
+実際的 < jissaiteki\ ;
+頼信紙 < raishinshi\ ;
+宇宙飛行 < uchuuhikou\ ;
+宣教師 < senkyoushi\ ;
+桜肉 < sakuraniku\ ;
+責任者 < sekininsha\ ;
+関節炎 < kansetsuen\ ;
+肩車 < kataguruma\ ;
+共鳴板 < kyoumeiban\ ;
+宗主国 < soushukoku\ ;
+仮名草紙 < kanazoushi\ ;
+旧軍人 < kyuugunjin\ ;
+半濁点 < handakuten\ ;
+坑内事故 < kounaijiko\ ;
+半長形 < hanchoukei\ ;
+中水道 < chuusuidou\ ;
+選手村 < senshumura\ ;
+論理演算 < ronrienzan\ ;
+質量 < shitsuryou\ ;
+印刷用 < insatsuyou\ ;
+霊柩車 < reikyuusha\ ;
+海岸端 < kaiganbata\ ;
+外用薬 < gaiyouyaku\ ;
+紫斑病 < shihanbyou\ ;
+蛸配当 < takohaitou\ ;
+高所病 < koushobyou\ ;
+畜殺 < chikusatsu\ ;
+大小便 < daishouben\ ;
+電気毛布 < denkimoufu\ ;
+米国民 < beikokumin\ ;
+吸水性 < kyuusuisei\ ;
+雲鬢花顔 < unbinkagan\ ;
+念五日 < nengonichi\ ;
+出来心 < dekigokoro\ ;
+中心部 < chuushinbu\ ;
+御前会議 < gozenkaigi\ ;
+脈脈 < myakumyaku\ ;
+生体学 < seitaigaku\ ;
+楔形 < kusabigata\ ;
+予備調査 < yobichousa\ ;
+平和主義 < heiwashugi\ ;
+肯定的 < kouteiteki\ ;
+桜紙 < sakuragami\ ;
+注意事項 < chuuijikou\ ;
+動物化 < doubutsuka\ ;
+水平翼 < suiheiyoku\ ;
+貿易業 < bouekigyou\ ;
+腰布団 < koshibuton\ ;
+爆撃機 < bakugekiki\ ;
+言行録 < genkouroku\ ;
+団地族 < danchizoku\ ;
+乱調子 < ranchoushi\ ;
+備蓄米 < bichikumai\ ;
+大乗的 < daijouteki\ ;
+無能力 < munouryoku\ ;
+酪農場 < rakunoujou\ ;
+胸部外科 < kyoubugeka\ ;
+貨客船 < kakyakusen\ ;
+感染症 < kansenshou\ ;
+真理教 < shinrikyou\ ;
+慈善鍋 < jizen''nabe\ ;
+病室 < byoushitsu\ ;
+技術士 < gijutsushi\ ;
+芋侍 < imozamurai\ ;
+哨戒艇 < shoukaitei\ ;
+酒石酸 < shusekisan\ ;
+敷布団 < shikibuton\ ;
+非可換群 < hikakangun\ ;
+反則金 < hansokukin\ ;
+遺伝情報 < idenjouhou\ ;
+有機物 < yuukibutsu\ ;
+肉質 < nikushitsu\ ;
+寄生火山 < kiseikazan\ ;
+抽象画 < chuushouga\ ;
+租借権 < soshakuken\ ;
+内申書 < naishinsho\ ;
+同級生 < doukyuusei\ ;
+向米的 < koubeiteki\ ;
+親衛兵 < shin''eihei\ ;
+仏文科 < futsubunka\ ;
+二部授業 < nibujugyou\ ;
+取引所 < torihikijo\ ;
+電車賃 < denshachin\ ;
+集散地 < shuusanchi\ ;
+綺想曲 < kisoukyoku\ ;
+上調子 < uwachoushi\ ;
+内臓弓 < naizoukyuu\ ;
+半開国 < hankaikoku\ ;
+製造業 < seizougyou\ ;
+追撃機 < tsuigekiki\ ;
+三角筋 < sankakukin\ ;
+非営利的 < hieiriteki\ ;
+等深線 < toushinsen\ ;
+駆動力 < kudouryoku\ ;
+河川工事 < kasenkouji\ ;
+重工業 < juukougyou\ ;
+麻織物 < asaorimono\ ;
+日射病 < nisshabyou\ ;
+熱血児 < nekketsuji\ ;
+金属製 < kinzokusei\ ;
+本契約 < honkeiyaku\ ;
+相手次第 < aiteshidai\ ;
+黄褐色 < oukasshoku\ ;
+購入者 < kounyuusha\ ;
+不精者 < bushoumono\ ;
+主応力 < shuouryoku\ ;
+便宜主義 < bengishugi\ ;
+埼玉勢 < saitamazei\ ;
+宝船 < takarabune\ ;
+重傷者 < juushousha\ ;
+皮膚呼吸 < hifukokyuu\ ;
+山桜 < yamazakura\ ;
+亜成層圏 < aseisouken\ ;
+傷害罪 < shougaizai\ ;
+作戦上 < sakusenjou\ ;
+側室 < sokushitsu\ ;
+膝枕 < hizamakura\ ;
+潜水病 < sensuibyou\ ;
+中性紙 < chuuseishi\ ;
+乳首 < chichikubi\ ;
+診療所 < shinryoujo\ ;
+空軍大尉 < kuuguntaii\ ;
+日本食 < nihonshoku\ ;
+稼働率 < kadouritsu\ ;
+連合国 < rengoukoku\ ;
+公民学 < koumingaku\ ;
+研究者 < kenkyuusha\ ;
+静水圧 < seisuiatsu\ ;
+登録者 < tourokusha\ ;
+準決勝 < junkesshou\ ;
+極力 < kyokuryoku\ ;
+梯子車 < hashigosha\ ;
+三親等 < sanshintou\ ;
+不純物 < fujunbutsu\ ;
+上女中 < kamijochuu\ ;
+鳥取県 < tottoriken\ ;
+桑畑 < kuwabatake\ ;
+貧乏鬮 < binboukuji\ ;
+唯一度 < tadaichido\ ;
+梵和辞典 < bonwajiten\ ;
+好色家 < koushokuka\ ;
+毛皮商 < kegawashou\ ;
+比較級 < hikakukyuu\ ;
+現在高 < genzaidaka\ ;
+略式 < ryakushiki\ ;
+陸海空 < rikukaikuu\ ;
+双眼鏡 < sougankyou\ ;
+控訴理由 < kousoriyuu\ ;
+駐輪場 < chuurinjou\ ;
+部隊区分 < butaikubun\ ;
+枕許 < makuramoto\ ;
+白鉄鉱 < hakutekkou\ ;
+大宮人 < oomiyabito\ ;
+悪魔主義 < akumashugi\ ;
+雪合戦 < yukigassen\ ;
+片栗粉 < katakuriko\ ;
+発表会 < happyoukai\ ;
+宝籤 < takarakuji\ ;
+吐瀉物 < toshabutsu\ ;
+護岸工事 < gogankouji\ ;
+裏表紙 < urabyoushi\ ;
+切断図 < setsudanzu\ ;
+思惑買 < omowakugai\ ;
+観念論 < kan''nenron\ ;
+玉音盤 < gyokuonban\ ;
+宝箱 < takarabako\ ;
+反動的 < handouteki\ ;
+質草 < shichigusa\ ;
+救命艇 < kyuumeitei\ ;
+絶対的 < zettaiteki\ ;
+骨壷 < kotsutsubo\ ;
+測量図 < sokuryouzu\ ;
+三大国 < sandaikoku\ ;
+地方病 < chihoubyou\ ;
+宿直 < shukuchoku\ ;
+出版者 < shuppansha\ ;
+供給路 < kyoukyuuro\ ;
+竜涎香 < ryuuzenkou\ ;
+射爆場 < shabakujou\ ;
+測量器 < sokuryouki\ ;
+土俗学 < dozokugaku\ ;
+美女桜 < bijozakura\ ;
+南々東 < nan''nantou\ ;
+人格権 < jinkakuken\ ;
+分解的 < bunkaiteki\ ;
+田夫野人 < denpuyajin\ ;
+他覚的 < takakuteki\ ;
+天主教 < tenshukyou\ ;
+雪化粧 < yukigeshou\ ;
+形式美 < keishikibi\ ;
+奇奇怪怪 < kikikaikai\ ;
+電通大 < dentsuudai\ ;
+三角点 < sankakuten\ ;
+伝書鳩 < denshobato\ ;
+他覚症 < takakushou\ ;
+消耗戦 < shoumousen\ ;
+仕訳書 < shiwakesho\ ;
+遊休地 < yuukyuuchi\ ;
+備付 < sonaetsuke\ ;
+反応性 < han''nousei\ ;
+暴走族 < bousouzoku\ ;
+紀元節 < kigensetsu\ ;
+温泉宿 < onsen''yado\ ;
+唐辛子 < tougarashi\ ;
+日中韓 < nitchuukan\ ;
+理解力 < rikairyoku\ ;
+略奪 < ryakudatsu\ ;
+公共財 < koukyouzai\ ;
+検定料 < kenteiryou\ ;
+市長選 < shichousen\ ;
+安普請 < yasubushin\ ;
+神代文字 < jindaimoji\ ;
+古典時代 < kotenjidai\ ;
+市会議員 < shikaigiin\ ;
+水道料 < suidouryou\ ;
+両成敗 < ryouseibai\ ;
+危険負担 < kikenfutan\ ;
+初節句 < hatsuzekku\ ;
+比較的 < hikakuteki\ ;
+国連軍 < kokurengun\ ;
+上級生 < joukyuusei\ ;
+無頓着 < mutonchaku\ ;
+再来月 < saraigetsu\ ;
+後日談 < gojitsudan\ ;
+備荒食 < bikoushoku\ ;
+健康不安 < kenkoufuan\ ;
+松虫 < matsumushi\ ;
+不行跡 < fugyouseki\ ;
+斜陽族 < shayouzoku\ ;
+青化物 < seikabutsu\ ;
+応急渡河 < oukyuutoka\ ;
+天王山 < ten''nouzan\ ;
+二重否定 < nijuuhitei\ ;
+厄介者 < yakkaimono\ ;
+勇猛心 < yuumoushin\ ;
+武力戦 < buryokusen\ ;
+三角法 < sankakuhou\ ;
+意気衝天 < ikishouten\ ;
+宗教画 < shuukyouga\ ;
+研究生 < kenkyuusei\ ;
+出奔者 < shupponsha\ ;
+収益金 < shuuekikin\ ;
+氷菓子 < koorigashi\ ;
+医学用語 < igakuyougo\ ;
+舞台効果 < butaikouka\ ;
+軽工業 < keikougyou\ ;
+記憶力 < kiokuryoku\ ;
+即興詩 < sokkyoushi\ ;
+古生物 < koseibutsu\ ;
+熱愛者 < netsuaisha\ ;
+天頂点 < tenchouten\ ;
+無資力 < mushiryoku\ ;
+興行権 < kougyouken\ ;
+松根油 < shoukon''yu\ ;
+両隣 < ryoudonari\ ;
+百済楽 < kudaragaku\ ;
+在任中 < zaininchuu\ ;
+滞在中 < taizaichuu\ ;
+製茶業 < seichagyou\ ;
+貿易商 < bouekishou\ ;
+国務省 < kokumushou\ ;
+中南米 < chuunanbei\ ;
+群雀 < murasuzume\ ;
+桐一葉 < kirihitoha\ ;
+電位差計 < den''isakei\ ;
+入選者 < nyuusensha\ ;
+縦社会 < tateshakai\ ;
+度数分布 < dosuubunpu\ ;
+操縦席 < soujuuseki\ ;
+周旋屋 < shuusen''ya\ ;
+文学士 < bungakushi\ ;
+運送保険 < unsouhoken\ ;
+工学者 < kougakusha\ ;
+古伝説 < kodensetsu\ ;
+印刷工 < insatsukou\ ;
+潜水服 < sensuifuku\ ;
+木質 < mokushitsu\ ;
+大主教 < daishukyou\ ;
+上場株 < joujoukabu\ ;
+類型的 < ruikeiteki\ ;
+実物 < jitsubutsu\ ;
+下露 < shitatsuyu\ ;
+吹出物 < fukidemono\ ;
+抗真菌 < koushinkin\ ;
+難波潟 < naniwagata\ ;
+租借地 < soshakuchi\ ;
+加農砲 < kan''nonhou\ ;
+造石税 < zoukokuzei\ ;
+駐車場 < chuushajou\ ;
+試算表 < shisanhyou\ ;
+経済学 < keizaigaku\ ;
+急勾配 < kyuukoubai\ ;
+儀式用 < gishikiyou\ ;
+高手小手 < takatekote\ ;
+血栓症 < kessenshou\ ;
+伊達姿 < datesugata\ ;
+病原体 < byougentai\ ;
+無味乾燥 < mumikansou\ ;
+下院議長 < kaingichou\ ;
+八分目 < hachibunme\ ;
+解析性 < kaisekisei\ ;
+軍備管理 < gunbikanri\ ;
+客観性 < kyakkansei\ ;
+畜力 < chikuryoku\ ;
+超媒体 < choubaitai\ ;
+水芭蕉 < mizubashou\ ;
+長期的 < choukiteki\ ;
+眼鏡蛇 < meganehebi\ ;
+樹脂加工 < jushikakou\ ;
+出版界 < shuppankai\ ;
+弁償金 < benshoukin\ ;
+未熟者 < mijukumono\ ;
+分散型 < bunsangata\ ;
+短編集 < tanpenshuu\ ;
+寒椿 < kantsubaki\ ;
+利水工事 < risuikouji\ ;
+淡路島 < awajishima\ ;
+増殖炉 < zoushokuro\ ;
+下見板 < shitamiita\ ;
+分教場 < bunkyoujou\ ;
+非常事態 < hijoujitai\ ;
+武装蜂起 < busouhouki\ ;
+史料館 < shiryoukan\ ;
+有声音化 < yuuseionka\ ;
+血小板 < kesshouban\ ;
+質的 < shitsuteki\ ;
+金色堂 < konjikidou\ ;
+漢方薬 < kanpouyaku\ ;
+価値基準 < kachikijun\ ;
+調理器具 < chourikigu\ ;
+砲煙弾雨 < houendan''u\ ;
+翻訳家 < hon''yakuka\ ;
+平等観 < byoudoukan\ ;
+検査官 < kenshoukan\ ;
+変分学 < henbungaku\ ;
+前栽物 < senzaimono\ ;
+強壮剤 < kyousouzai\ ;
+海産業 < kaisangyou\ ;
+馬耳東風 < bajitoufuu\ ;
+献納者 < ken''nousha\ ;
+六連星 < rokurensei\ ;
+梔子 < kuchinashi\ ;
+勅願寺 < chokuganji\ ;
+伝染病 < densenbyou\ ;
+驀地 < masshigura\ ;
+中華鍋 < chuukanabe\ ;
+天上川 < tenjougawa\ ;
+洋芥子 < yougarashi\ ;
+皆勤賞 < kaikinshou\ ;
+金属片 < kinzokuhen\ ;
+奇術師 < kijutsushi\ ;
+増加率 < zoukaritsu\ ;
+標準型 < hyoujunkei\ ;
+金赤色 < kin''akairo\ ;
+責任感 < sekininkan\ ;
+淋巴節 < rinpasetsu\ ;
+供物台 < kumotsudai\ ;
+米国人 < beikokujin\ ;
+等温式 < touonshiki\ ;
+前任者 < zen''ninsha\ ;
+製造元 < seizoumoto\ ;
+情報量 < jouhouryou\ ;
+平行移動 < heikouidou\ ;
+消耗品 < shoumouhin\ ;
+両手利 < ryoutekiki\ ;
+蓄電器 < chikudenki\ ;
+対角線 < taikakusen\ ;
+山刀 < yamagatana\ ;
+一晩中 < hitobanjuu\ ;
+下道 < shitamichi\ ;
+暗剣殺 < ankensatsu\ ;
+頭足類 < tousokurui\ ;
+在東京 < zaitoukyou\ ;
+棄言葉 < sutekotoba\ ;
+免税表 < menzeihyou\ ;
+国民性 < kokuminsei\ ;
+補助動詞 < hojodoushi\ ;
+彫刻家 < choukokuka\ ;
+不躾 < bushitsuke\ ;
+生卵 < namatamago\ ;
+読書界 < dokushokai\ ;
+風薬 < kazegusuri\ ;
+曲説 < kyokusetsu\ ;
+居留民 < kyoryuumin\ ;
+丸裸 < maruhadaka\ ;
+旋光角 < senkoukaku\ ;
+飯粒 < meshitsubu\ ;
+小間使 < komadzukai\ ;
+角膜炎 < kakumakuen\ ;
+猫車 < nekoguruma\ ;
+鰭脚類 < kikyakurui\ ;
+鑑識家 < kanshikika\ ;
+興行師 < kougyoushi\ ;
+三越 < mitsukoshi\ ;
+嬶天下 < kakaadenka\ ;
+固形物 < kokeibutsu\ ;
+紡績糸 < bousekiito\ ;
+否定応答 < hiteioutou\ ;
+吝嗇家 < rinshokuka\ ;
+為替尻 < kawasejiri\ ;
+読者欄 < dokusharan\ ;
+出世作 < shussesaku\ ;
+動摩擦 < doumasatsu\ ;
+部分食 < bubunshoku\ ;
+出版法 < shuppanhou\ ;
+課題曲 < kadaikyoku\ ;
+客月 < kyakugetsu\ ;
+殺虫剤 < satchuuzai\ ;
+薄雪草 < usuyukisou\ ;
+人体学 < jintaigaku\ ;
+平城京 < heijoukyou\ ;
+三角帽 < sankakubou\ ;
+衝撃波 < shougekiha\ ;
+自己資本 < jikoshihon\ ;
+郵送料 < yuusouryou\ ;
+石炭酸 < sekitansan\ ;
+征服者 < seifukusha\ ;
+顔貌 < kaokatachi\ ;
+黄金時代 < ougonjidai\ ;
+命令一下 < meireiikka\ ;
+強行軍 < kyoukougun\ ;
+納付期限 < noufukigen\ ;
+代表団 < daihyoudan\ ;
+小児麻痺 < shounimahi\ ;
+脚本家 < kyakuhonka\ ;
+菓子鉢 < kashibachi\ ;
+直円錐 < chokuensui\ ;
+宣伝記事 < sendenkiji\ ;
+出版権 < shuppanken\ ;
+再服役 < saifukueki\ ;
+生放送 < namahousou\ ;
+計算尺 < keisanjaku\ ;
+夏季休暇 < kakikyuuka\ ;
+通勤者 < tsuukinsha\ ;
+一塁線 < ichiruisen\ ;
+臨時政府 < rinjiseifu\ ;
+尺八 < shakuhachi\ ;
+液量計 < ekiryoukei\ ;
+三日三晩 < mikkamiban\ ;
+切支丹 < kirishitan\ ;
+闇市場 < yamishijou\ ;
+東男 < azumaotoko\ ;
+障害者 < shougaisha\ ;
+貴族的 < kizokuteki\ ;
+印刷人 < insatsunin\ ;
+海賊船 < kaizokusen\ ;
+抽象化 < chuushouka\ ;
+講習会 < koushuukai\ ;
+愛玩物 < aiganbutsu\ ;
+麻雀屋 < mazejan''ya\ ;
+伝染毒 < densendoku\ ;
+無理難題 < murinandai\ ;
+他国者 < takokumono\ ;
+予備装置 < yobisouchi\ ;
+果樹栽培 < kajusaibai\ ;
+重層的 < juusouteki\ ;
+質樸 < shitsuboku\ ;
+五重塔 < gojuunotou\ ;
+下級審 < kakyuushin\ ;
+肘枕 < hijimakura\ ;
+粗衣粗食 < soisoshoku\ ;
+低所得 < teishotoku\ ;
+仏滅 < butsumetsu\ ;
+専門章 < senmonshou\ ;
+鋳造所 < chuuzousho\ ;
+短時日 < tanjijitsu\ ;
+休業日 < kyuugyoubi\ ;
+先端的 < sentanteki\ ;
+人民委員 < jinmin''iin\ ;
+喧嘩腰 < kenkagoshi\ ;
+草双紙 < kusazoushi\ ;
+空想的 < kuusouteki\ ;
+飽和蒸気 < houwajouki\ ;
+雪達磨 < yukidaruma\ ;
+匹夫匹婦 < hippuhippu\ ;
+内交渉 < naikoushou\ ;
+広告社 < koukokusha\ ;
+小包 < kodzutsumi\ ;
+密密 < mitsumitsu\ ;
+二分音符 < nibun''onpu\ ;
+貨物駅 < kamotsueki\ ;
+千波万波 < senpabanpa\ ;
+貧乏籤 < binbouguji\ ;
+対話式 < taiwashiki\ ;
+就中 < nakandzuku\ ;
+共産軍 < kyousangun\ ;
+上蓆 < uwamushiro\ ;
+不承諾 < fushoudaku\ ;
+求人誌 < kyuujinshi\ ;
+鞭毛虫 < benmouchuu\ ;
+簡単服 < kantanfuku\ ;
+黒穂病 < kurohobyou\ ;
+脱力 < datsuryoku\ ;
+質札 < shichifuda\ ;
+分担額 < buntangaku\ ;
+異常発生 < ijouhassei\ ;
+治安部隊 < chianbutai\ ;
+太陽虫 < taiyouchuu\ ;
+暫定的 < zanteiteki\ ;
+代表例 < daihyourei\ ;
+三菱 < mitsubishi\ ;
+刃傷沙汰 < ninjouzata\ ;
+同国民 < doukokumin\ ;
+記念物 < kinenbutsu\ ;
+旧体制 < kyuutaisei\ ;
+仮枕 < karimakura\ ;
+南洋材 < nan''youzai\ ;
+非常口 < hijouguchi\ ;
+上表紙 < uwabyoushi\ ;
+面白味 < omoshiromi\ ;
+保存食 < hozonshoku\ ;
+不活性化 < fukasseika\ ;
+半意識 < han''ishiki\ ;
+供出 < kyoushutsu\ ;
+宮室 < kyuushitsu\ ;
+本調子 < honchoushi\ ;
+織女星 < shokujosei\ ;
+春霞 < harugasumi\ ;
+専門的 < senmonteki\ ;
+食物 < shokumotsu\ ;
+報償金 < houshoukin\ ;
+擲弾筒 < tekidantou\ ;
+貧乏神 < binbougami\ ;
+昔風 < mukashifuu\ ;
+大統領 < daitouryou\ ;
+量子論 < ryoushiron\ ;
+中力粉 < chuurikiko\ ;
+宝島 < takarajima\ ;
+工事現場 < koujigenba\ ;
+眼鏡猿 < meganezaru\ ;
+仏様 < hotokesama\ ;
+脚力 < kyakuryoku\ ;
+業界紙 < gyoukaishi\ ;
+非公式 < hikoushiki\ ;
+水兵服 < suiheifuku\ ;
+貯木場 < chobokujou\ ;
+梯子段 < hashigodan\ ;
+当歳駒 < tousaigoma\ ;
+宗教家 < shuukyouka\ ;
+研究官 < kenkyuukan\ ;
+殉教者 < junkyousha\ ;
+殉難者 < jun''nansha\ ;
+壁訴訟 < kabezoshou\ ;
+下職 < shitashoku\ ;
+自己宣伝 < jikosenden\ ;
+玉整理 < gyokuseiri\ ;
+茨城県 < ibarakiken\ ;
+屈曲部 < kukkyokubu\ ;
+消防隊 < shouboutai\ ;
+朧昆布 < oborokonbu\ ;
+気管支炎 < kikanshien\ ;
+看病人 < kanbyounin\ ;
+花電車 < hanadensha\ ;
+地文学 < chimongaku\ ;
+口供書 < koukyousho\ ;
+曲筆 < kyokuhitsu\ ;
+手前勝手 < temaegatte\ ;
+保守主義 < hoshushugi\ ;
+草野球 < kusayakyuu\ ;
+検事局 < kenjikyoku\ ;
+木端微塵 < koppamijin\ ;
+六辺形 < rokuhenkei\ ;
+死亡記事 < shiboukiji\ ;
+読者層 < dokushasou\ ;
+催促状 < saisokujou\ ;
+傾斜角 < keishakaku\ ;
+過剰利益 < kajourieki\ ;
+収監状 < shuukanjou\ ;
+地震学 < jishingaku\ ;
+在世中 < zaiseichuu\ ;
+奥座敷 < okuzashiki\ ;
+一纏 < hitomatome\ ;
+美術館 < bijutsukan\ ;
+許容量 < kyoyouryou\ ;
+女尊男卑 < josondanpi\ ;
+射撃場 < shagekijou\ ;
+後天的 < koutenteki\ ;
+駐屯地 < chuutonchi\ ;
+飯櫃 < meshibitsu\ ;
+脳溢血 < nouikketsu\ ;
+存命中 < zonmeichuu\ ;
+系列化 < keiretsuka\ ;
+出版屋 < shuppan''ya\ ;
+審美的 < shinbiteki\ ;
+恒久性 < koukyuusei\ ;
+貝柱 < kaibashira\ ;
+片貿易 < kataboueki\ ;
+文献学 < bunkengaku\ ;
+十二単衣 < juunihitoe\ ;
+時代色 < jidaishoku\ ;
+分離課税 < bunrikazei\ ;
+大大的 < daidaiteki\ ;
+二重橋 < nijuubashi\ ;
+地誌学 < chishigaku\ ;
+化学的 < kagakuteki\ ;
+曲直 < kyokuchoku\ ;
+肉弾戦 < nikudansen\ ;
+一絃琴 < ichigenkin\ ;
+遊牧民 < yuubokumin\ ;
+丸瓦 < marugawara\ ;
+核実験 < kakujikken\ ;
+貨物車 < kamotsusha\ ;
+任意捜査 < nin''isousa\ ;
+求人者 < kyuujinsha\ ;
+七竈 < nanakamado\ ;
+地震国 < jishinkoku\ ;
+居留地 < kyoryuuchi\ ;
+上位概念 < jouigainen\ ;
+障子紙 < shoujigami\ ;
+舞台道具 < butaidougu\ ;
+潜函病 < senkanbyou\ ;
+一穴 < hitotsuana\ ;
+引率者 < insotsusha\ ;
+上映時間 < joueijikan\ ;
+孫娘 < magomusume\ ;
+海賊版 < kaizokuban\ ;
+信仰者 < shinkousha\ ;
+消防車 < shoubousha\ ;
+三等賞 < santoushou\ ;
+無警察 < mukeisatsu\ ;
+仏性 < hotokeshou\ ;
+静静 < shizushizu\ ;
+彩色画 < saishokuga\ ;
+勧告者 < kankokusha\ ;
+計器飛行 < keikihikou\ ;
+実力 < jitsuryoku\ ;
+曲率 < kyokuritsu\ ;
+大鼓 < ootsudzumi\ ;
+広告欄 < koukokuran\ ;
+賞金王 < shoukin''ou\ ;
+戦災孤児 < sensaikoji\ ;
+通知状 < tsuuchijou\ ;
+工作品 < kousakuhin\ ;
+地政学 < chiseigaku\ ;
+太陽神 < taiyoushin\ ;
+継承者 < keishousha\ ;
+基本原理 < kihongenri\ ;
+乳製品 < nyuuseihin\ ;
+狐色 < kitsuneiro\ ;
+遊撃隊 < yuugekitai\ ;
+卑怯者 < hikyoumono\ ;
+再教育 < saikyouiku\ ;
+国内線 < kokunaisen\ ;
+噛煙草 < kamitabako\ ;
+一睡 < hitonemuri\ ;
+慈善市 < jizen''ichi\ ;
+回想録 < kaisouroku\ ;
+外交的 < gaikouteki\ ;
+情意投合 < jouitougou\ ;
+下町 < shitamachi\ ;
+管理機能 < kanrikinou\ ;
+人心 < hitogokoro\ ;
+修理中 < shuurichuu\ ;
+臨時記号 < rinjikigou\ ;
+三等親 < santoushin\ ;
+地表面 < chihyoumen\ ;
+干渉計 < kanshoukei\ ;
+研究会 < kenkyuukai\ ;
+肖像権 < shouzouken\ ;
+七生 < shichishou\ ;
+兵役忌避 < heiekikihi\ ;
+燕麦 < karasumugi\ ;
+役不足 < yakubusoku\ ;
+一番 < hitotsugai\ ;
+注意力 < chuuiryoku\ ;
+腹上死 < fukujoushi\ ;
+編集者 < henshuusha\ ;
+広告板 < koukokuban\ ;
+渉禽類 < shoukinrui\ ;
+倒錯者 < tousakusha\ ;
+水疱瘡 < mizubousou\ ;
+平等権 < byoudouken\ ;
+大震災 < daishinsai\ ;
+重症例 < juushourei\ ;
+地域的 < chiikiteki\ ;
+共産系 < kyousankei\ ;
+開閉橋 < kaiheikyou\ ;
+戦争映画 < sensoueiga\ ;
+陳情書 < chinjousho\ ;
+財政危機 < zaiseikiki\ ;
+投機熱 < toukinetsu\ ;
+有限花序 < yuugenkajo\ ;
+物語 < monogatari\ ;
+冗談事 < joudankoto\ ;
+最高級 < saikoukyuu\ ;
+思惑師 < omowakushi\ ;
+女達 < on''natachi\ ;
+西日本 < nishinihon\ ;
+近代的 < kindaiteki\ ;
+超大型 < chouoogata\ ;
+砕氷船 < saihyousen\ ;
+漁業法 < gyogyouhou\ ;
+朧月 < oborodzuki\ ;
+未解決 < mikaiketsu\ ;
+片跛 < katachinba\ ;
+軍事基地 < gunjikichi\ ;
+巨人国 < kyojinkoku\ ;
+最小限 < saishougen\ ;
+末日 < matsujitsu\ ;
+公共性 < koukyousei\ ;
+不正事件 < fuseijiken\ ;
+出来次第 < dekishidai\ ;
+工学士 < kougakushi\ ;
+酒造業 < shuzougyou\ ;
+変体仮名 < hentaigana\ ;
+色鉛筆 < iroenpitsu\ ;
+望月 < mochidzuki\ ;
+英雄主義 < eiyuushugi\ ;
+火打石 < hiuchiishi\ ;
+醸造業 < jouzougyou\ ;
+大隼 < oohayabusa\ ;
+単眼鏡 < tangankyou\ ;
+痴話喧嘩 < chiwagenka\ ;
+漁業権 < gyogyouken\ ;
+石灯籠 < ishidourou\ ;
+南氷洋 < nanpyouyou\ ;
+鱈場蟹 < tarabagani\ ;
+岡山県 < okayamaken\ ;
+烏有先生 < uyuusensei\ ;
+紡績工 < bousekikou\ ;
+起爆薬 < kibakuyaku\ ;
+確認書 < kakuninsho\ ;
+憲法違反 < kenpouihan\ ;
+回転椅子 < kaiten''isu\ ;
+誕生石 < tanjouseki\ ;
+防臭剤 < boushuuzai\ ;
+錫製品 < suzuseihin\ ;
+月月 < tsukidzuki\ ;
+貨物船 < kamotsusen\ ;
+一塁手 < ichiruishu\ ;
+脚線美 < kyakusenbi\ ;
+能登半島 < notohantou\ ;
+劣性遺伝 < resseiiden\ ;
+有価物 < yuukabutsu\ ;
+請負制度 < ukeoiseido\ ;
+植生図 < shokuseizu\ ;
+一渡 < hitowatari\ ;
+発情期 < hatsujouki\ ;
+白水社 < hakusuisha\ ;
+水車小屋 < suishagoya\ ;
+採算株 < saisankabu\ ;
+褐毛和種 < akagewashu\ ;
+長丁場 < nagachouba\ ;
+妾腹 < mekakebara\ ;
+有孔虫 < yuukouchuu\ ;
+固定負債 < koteifusai\ ;
+天然痘 < ten''nentou\ ;
+依願免官 < iganmenkan\ ;
+四拍子 < yonbyoushi\ ;
+冗長系 < jouchoukei\ ;
+日本式 < nihonshiki\ ;
+満年齢 < man''nenrei\ ;
+消防艇 < shouboutei\ ;
+小液胞 < shouekihou\ ;
+首唱者 < shushousha\ ;
+雲霞 < kumokasumi\ ;
+日本平 < nihondaira\ ;
+革袋 < kawabukuro\ ;
+鉄面皮 < tetsumenpi\ ;
+主権国 < shukenkoku\ ;
+買掛金 < kaikakekin\ ;
+石灰石 < sekkaiseki\ ;
+米問屋 < komedon''ya\ ;
+思想劇 < shisougeki\ ;
+万国民 < bankokumin\ ;
+勧告状 < kankokujou\ ;
+敗北感 < haibokukan\ ;
+密輸船 < mitsuyusen\ ;
+出来不出来 < dekifudeki\ ;
+可変翼 < kahen''yoku\ ;
+政府機関 < seifukikan\ ;
+偏頭痛 < hentoutsuu\ ;
+年齢給 < nenreikyuu\ ;
+透磁率 < toujiritsu\ ;
+事件記者 < jikenkisha\ ;
+平安後期 < heiankouki\ ;
+厄介事 < yakkaigoto\ ;
+伏射濠 < fukushagou\ ;
+析出 < sekishutsu\ ;
+懸壅垂 < ken''yousui\ ;
+界磁極 < kaijikyoku\ ;
+応用力 < ouyouryoku\ ;
+日曜日 < nichiyoubi\ ;
+消防署 < shoubousho\ ;
+雇用保険 < koyouhoken\ ;
+貧乏性 < binboushou\ ;
+核崩壊 < kakuhoukai\ ;
+不潔感 < fuketsukan\ ;
+数学者 < suugakusha\ ;
+聴取者 < choushusha\ ;
+読書人 < dokushojin\ ;
+保護貿易 < hogoboueki\ ;
+前任地 < zen''ninchi\ ;
+漁色家 < gyoshokuka\ ;
+世界制覇 < sekaiseiha\ ;
+製作者 < seisakusha\ ;
+不束 < futsutsuka\ ;
+没個性 < botsukosei\ ;
+無機肥料 < mukihiryou\ ;
+全店中 < zentenchuu\ ;
+高野豆腐 < kouyadoufu\ ;
+官給品 < kankyuuhin\ ;
+白金族 < hakkinzoku\ ;
+天文学 < tenmongaku\ ;
+兵学者 < heigakusha\ ;
+合唱隊 < gasshoutai\ ;
+代議政治 < daigiseiji\ ;
+不成立 < fuseiritsu\ ;
+猫柳 < nekoyanagi\ ;
+献納品 < ken''nouhin\ ;
+細粒分 < sairyuubun\ ;
+意馬心猿 < ibashin''en\ ;
+猛練習 < mourenshuu\ ;
+交通遺児 < koutsuuiji\ ;
+例外的 < reigaiteki\ ;
+効率化 < kouritsuka\ ;
+除虫菊 < jochuugiku\ ;
+紅生姜 < benishouga\ ;
+干拓地 < kantakuchi\ ;
+凍傷者 < toushousha\ ;
+同国人 < doukokujin\ ;
+目的語 < mokutekigo\ ;
+貸付 < kashitsuke\ ;
+三国志 < sangokushi\ ;
+人物画 < jinbutsuga\ ;
+吸入器 < kyuunyuuki\ ;
+防寒服 < boukanfuku\ ;
+修院長 < shuuinchou\ ;
+国内法 < kokunaihou\ ;
+探究者 < tankyuusha\ ;
+初心者 < shoshinsha\ ;
+狸汁 < tanukijiru\ ;
+未開発 < mikaihatsu\ ;
+広告塔 < koukokutou\ ;
+開拓者 < kaitakusha\ ;
+人類学 < jinruigaku\ ;
+知日派 < chinichiha\ ;
+最高潮 < saikouchou\ ;
+天然港 < ten''nenkou\ ;
+反逆児 < hangyakuji\ ;
+一国者 < ikkokumono\ ;
+好材料 < kouzairyou\ ;
+太陽暦 < taiyoureki\ ;
+常用癖 < jouyouheki\ ;
+早教育 < soukyouiku\ ;
+格子縞 < koushijima\ ;
+反軍的 < hangunteki\ ;
+薬包紙 < yakuhoushi\ ;
+兵曹長 < heisouchou\ ;
+漢文学 < kanbungaku\ ;
+急先鋒 < kyuusenpou\ ;
+不抱 < kakawarazu\ ;
+口奇麗 < kuchigirei\ ;
+行政法 < gyouseihou\ ;
+送金額 < soukingaku\ ;
+求婚者 < kyuukonsha\ ;
+再調整 < saichousei\ ;
+風見鶏 < kazamidori\ ;
+執政官 < shisseikan\ ;
+能楽堂 < nougakudou\ ;
+好下物 < koukabutsu\ ;
+双発機 < souhatsuki\ ;
+遺棄貨物 < ikikamotsu\ ;
+公共債 < koukyousai\ ;
+昨年来 < sakunenrai\ ;
+提供者 < teikyousha\ ;
+醸造学 < jouzougaku\ ;
+一所 < hitotokoro\ ;
+得点圏 < tokutenken\ ;
+炭化水素 < tankasuiso\ ;
+審美学 < shinbigaku\ ;
+女便所 < on''nabenjo\ ;
+呉服物 < gofukumono\ ;
+症候群 < shoukougun\ ;
+囲碁三級 < igosankyuu\ ;
+産婦人科 < sanfujinka\ ;
+曲尺 < kyokushaku\ ;
+格子窓 < koushimado\ ;
+文明国 < bunmeikoku\ ;
+行政権 < gyouseiken\ ;
+金木犀 < kinmokusei\ ;
+理想主義 < risoushugi\ ;
+十字砲火 < juujihouka\ ;
+雪質 < yukishitsu\ ;
+都道府県 < todoufuken\ ;
+麝香豌豆 < jakouendou\ ;
+手札型 < tefudagata\ ;
+全般的 < zenpanteki\ ;
+特殊鋼 < tokushukou\ ;
+圧縮性 < asshukusei\ ;
+盲唖学校 < mouagakkou\ ;
+保安条例 < hoanjourei\ ;
+石器時代 < sekkijidai\ ;
+似非理屈 < eserikutsu\ ;
+官房長 < kanbouchou\ ;
+記念切手 < kinenkitte\ ;
+白砂糖 < shirozatou\ ;
+個人個人 < kojinkojin\ ;
+春分点 < shunbunten\ ;
+旧主人 < kyuushujin\ ;
+犇犇 < hishihishi\ ;
+雛豆 < hiyokomame\ ;
+延滞利子 < entairishi\ ;
+葉緑素 < youryokuso\ ;
+網頭 < amigashira\ ;
+分派主義 < bunpashugi\ ;
+内面的 < naimenteki\ ;
+毀誉褒貶 < kiyohouhen\ ;
+肺結核 < haikekkaku\ ;
+唯美主義 < yuibishugi\ ;
+塩魚 < shiozakana\ ;
+回収金 < kaishuukin\ ;
+綿帽子 < wataboushi\ ;
+中執 < chuushitsu\ ;
+夏虫 < natsumushi\ ;
+急進派 < kyuushinha\ ;
+軍事衛星 < gunjieisei\ ;
+芸術院 < geijutsuin\ ;
+榴弾砲 < ryuudanpou\ ;
+冒険心 < boukenshin\ ;
+可燃物 < kanenbutsu\ ;
+日本一 < nihon''ichi\ ;
+修練者 < shuurensha\ ;
+反射鏡 < hanshakyou\ ;
+二直角 < nichokkaku\ ;
+無我夢中 < mugamuchuu\ ;
+型変換 < katahenkan\ ;
+去勢牛 < kyoseiushi\ ;
+予定期限 < yoteikigen\ ;
+犯罪学 < hanzaigaku\ ;
+原籍地 < gensekichi\ ;
+綾錦 < ayanishiki\ ;
+性道徳 < seidoutoku\ ;
+平滑化 < heikatsuka\ ;
+立体映画 < rittaieiga\ ;
+郵便箱 < yuubinbako\ ;
+受信料 < jushinryou\ ;
+再組織 < saisoshiki\ ;
+美術界 < bijutsukai\ ;
+天気模様 < tenkimoyou\ ;
+不等式 < fudoushiki\ ;
+火口原湖 < kakougenko\ ;
+月別 < tsukibetsu\ ;
+表音字母 < hyouonjibo\ ;
+約定書 < yakujousho\ ;
+三箇日 < sanganichi\ ;
+音声言語 < onseigengo\ ;
+発祥地 < hasshouchi\ ;
+一昨昨日 < sakiototoi\ ;
+勝手口 < katteguchi\ ;
+夕食後 < yuushokugo\ ;
+搬入日 < han''nyuubi\ ;
+豪商層 < goushousou\ ;
+奴豆腐 < yakkodoufu\ ;
+脱法行為 < dappoukoui\ ;
+感覚論 < kankakuron\ ;
+国産車 < kokusansha\ ;
+不流通 < furyuutsuu\ ;
+橋頭堡 < kyoutouhou\ ;
+個人主義 < kojinshugi\ ;
+夏時間 < natsujikan\ ;
+石炭層 < sekitansou\ ;
+絹一匹 < kinuippiki\ ;
+建白書 < kenpakusho\ ;
+消防法 < shoubouhou\ ;
+中近東 < chuukintou\ ;
+不正規軍 < fuseikigun\ ;
+奪略 < datsuryaku\ ;
+証人台 < shounindai\ ;
+水産業 < suisangyou\ ;
+比例式 < hireishiki\ ;
+男所帯 < otokojotai\ ;
+修整版 < shuuseihan\ ;
+准看護婦 < junkangofu\ ;
+冷水浴 < reisuiyoku\ ;
+夏羽織 < natsubaori\ ;
+褒言葉 < homekotoba\ ;
+繁繁 < shigeshige\ ;
+事務机 < jimudzukue\ ;
+主催国 < shusaikoku\ ;
+大外刈 < oosotogari\ ;
+清算人 < seisan''nin\ ;
+住民票 < juuminhyou\ ;
+母子家庭 < boshikatei\ ;
+無線局 < musenkyoku\ ;
+悪材料 < akuzairyou\ ;
+日照計 < nisshoukei\ ;
+支持率 < shijiritsu\ ;
+二連発 < nirenpatsu\ ;
+同名異人 < doumeiijin\ ;
+具象的 < gushouteki\ ;
+副抵当 < fukuteitou\ ;
+育児時間 < ikujijikan\ ;
+時価発行 < jikahakkou\ ;
+胸膜炎 < kyoumakuen\ ;
+除湿器 < joshitsuki\ ;
+乗換駅 < norikaeeki\ ;
+一周 < hitomeguri\ ;
+古本屋 < furuhon''ya\ ;
+巨大症 < kyodaishou\ ;
+会議事項 < kaigijikou\ ;
+知日家 < chinichika\ ;
+白眼視 < hakuganshi\ ;
+照射法 < shoushahou\ ;
+仮想記憶 < kasoukioku\ ;
+烏鳩 < karasubato\ ;
+赤信号 < akashingou\ ;
+長方形 < chouhoukei\ ;
+万国史 < bankokushi\ ;
+造兵廠 < zouheishou\ ;
+東京湾 < toukyouwan\ ;
+独創性 < dokusousei\ ;
+部分麻酔 < bubunmasui\ ;
+検事控訴 < kenjikouso\ ;
+放浪癖 < hourouheki\ ;
+行政官 < gyouseikan\ ;
+没趣味 < botsushumi\ ;
+陶酔境 < tousuikyou\ ;
+反射角 < hanshakaku\ ;
+旅烏 < tabigarasu\ ;
+七光 < nanahikari\ ;
+特効薬 < tokkouyaku\ ;
+娘婿 < musumemuko\ ;
+日没 < nichibotsu\ ;
+多項式 < takoushiki\ ;
+表情筋 < hyoujoukin\ ;
+経営管理 < keieikanri\ ;
+利益率 < riekiritsu\ ;
+三拍子 < sanbyoushi\ ;
+量販店 < ryouhanten\ ;
+編集子 < henshuushi\ ;
+冗長性 < jouchousei\ ;
+鼻眼鏡 < hanamegane\ ;
+内視鏡 < naishikyou\ ;
+赤翡翠 < akashoubin\ ;
+飛行時間 < hikoujikan\ ;
+熱機関 < netsukikan\ ;
+摂護腺 < setsugosen\ ;
+対抗策 < taikousaku\ ;
+近代劇 < kindaigeki\ ;
+徹底的 < tetteiteki\ ;
+四字熟語 < yojijukugo\ ;
+歴代史 < rekidaishi\ ;
+早見表 < hayamihyou\ ;
+臨機応変 < rinkiouhen\ ;
+投射角 < toushakaku\ ;
+定期保険 < teikihoken\ ;
+監督者 < kantokusha\ ;
+共産圏 < kyousanken\ ;
+実行中 < jikkouchuu\ ;
+猛攻撃 < moukougeki\ ;
+電子殻 < denshikaku\ ;
+造言飛語 < zougenhigo\ ;
+村役場 < murayakuba\ ;
+細雪 < sasameyuki\ ;
+陸軟風 < rikunanpuu\ ;
+政治色 < seijishoku\ ;
+母子草 < hahakogusa\ ;
+特待生 < tokutaisei\ ;
+頭分 < kashirabun\ ;
+中盤戦 < chuubansen\ ;
+事務用品 < jimuyouhin\ ;
+舞踏靴 < butougutsu\ ;
+言語地理 < gengochiri\ ;
+大陪審 < daibaishin\ ;
+無縁仏 < muenbotoke\ ;
+斑牛 < madaraushi\ ;
+緑色 < ryokushoku\ ;
+認定証 < ninteishou\ ;
+美術書 < bijutsusho\ ;
+計量法 < keiryouhou\ ;
+原振動 < genshindou\ ;
+学芸会 < gakugeikai\ ;
+脂肪心 < shiboushin\ ;
+狸饂飩 < tanukiudon\ ;
+水産庁 < suisanchou\ ;
+合憲的 < goukenteki\ ;
+主体的 < shutaiteki\ ;
+犯罪行為 < hanzaikoui\ ;
+日月 < nichigetsu\ ;
+窃盗狂 < settoukyou\ ;
+女一般 < on''naippan\ ;
+決勝線 < kesshousen\ ;
+旭日 < kyokujitsu\ ;
+輸送機関 < yusoukikan\ ;
+口上手 < kuchijouzu\ ;
+工場長 < koujouchou\ ;
+旗二流 < hataniryuu\ ;
+補助艦艇 < hojokantei\ ;
+即位式 < sokuishiki\ ;
+五里霧中 < gorimuchuu\ ;
+懐柔策 < kaijuusaku\ ;
+三日天下 < mikkatenka\ ;
+幻想劇 < gensougeki\ ;
+基本単位 < kihontan''i\ ;
+事務室 < jimushitsu\ ;
+超規則 < choukisoku\ ;
+核家族 < kakukazoku\ ;
+夕月夜 < yuudzukeyo\ ;
+猶予期間 < yuuyokikan\ ;
+大衆車 < daishuusha\ ;
+無籍者 < musekimono\ ;
+日独伊 < nichidokui\ ;
+隣組 < tonarigumi\ ;
+悪習慣 < akushuukan\ ;
+硫酸銅 < ryuusandou\ ;
+水産学 < suisangaku\ ;
+烏金 < karasugane\ ;
+幸福感 < koufukukan\ ;
+賠償金 < baishoukin\ ;
+請負工事 < ukeoikouji\ ;
+隼科 < hayabusaka\ ;
+共産党 < kyousantou\ ;
+物心 < monogokoro\ ;
+旅枕 < tabimakura\ ;
+紅雀 < benisuzume\ ;
+父方 < chichikata\ ;
+後退文字 < koutaimoji\ ;
+船板塀 < funaitabei\ ;
+全学連 < zengakuren\ ;
+直走路 < chokusouro\ ;
+男尊女卑 < dansonjohi\ ;
+氷豆腐 < kooridoufu\ ;
+入居者 < nyuukyosha\ ;
+日陰者 < hikagemono\ ;
+絶縁線 < zetsuensen\ ;
+大慈大悲 < daijidaihi\ ;
+塵芥 < chiriakuta\ ;
+品評会 < hinpyoukai\ ;
+水瓶座 < mizugameza\ ;
+各団体 < kakudantai\ ;
+来来週 < rairaishuu\ ;
+四十雀 < shijuukara\ ;
+如何様師 < ikasamashi\ ;
+通用門 < tsuuyoumon\ ;
+爪楊枝 < tsumayouji\ ;
+散髪屋 < sanpatsuya\ ;
+校正刷 < kouseizuri\ ;
+黒眼鏡 < kuromegane\ ;
+臨界事故 < rinkaijiko\ ;
+雨燕 < amatsubame\ ;
+妹婿 < imoutomuko\ ;
+造船業 < zousengyou\ ;
+観劇会 < kangekikai\ ;
+雪煙 < yukikemuri\ ;
+公害病 < kougaibyou\ ;
+受信側 < jushingawa\ ;
+企業心 < kigyoushin\ ;
+因果関係 < ingakankei\ ;
+修繕工 < shuuzenkou\ ;
+単身銃 < tanshinjuu\ ;
+角蛙 < tsunogaeru\ ;
+異種交配 < ishukouhai\ ;
+夜間勤務 < yakankinmu\ ;
+百年目 < hyakunenme\ ;
+没理想 < botsurisou\ ;
+静脈炎 < joumyakuen\ ;
+御国自慢 < okunijiman\ ;
+全能者 < zen''nousha\ ;
+呉服商 < gofukushou\ ;
+省資源 < shoushigen\ ;
+集合論 < shuugouron\ ;
+禁煙席 < kin''enseki\ ;
+失業 < shitsugyou\ ;
+設立 < setsuritsu\ ;
+長方体 < chouhoutai\ ;
+受信人 < jushin''nin\ ;
+急停車 < kyuuteisha\ ;
+雑物 < zatsubutsu\ ;
+神経科医 < shinkeikai\ ;
+糞度胸 < kusodokyou\ ;
+消防士 < shouboushi\ ;
+有理式 < yuurishiki\ ;
+終列車 < shuuressha\ ;
+所有格 < shoyuukaku\ ;
+知覚知 < chikakuchi\ ;
+遊撃手 < yuugekishu\ ;
+解熱剤 < genetsuzai\ ;
+店屋物 < ten''yamono\ ;
+熱烈 < netsuretsu\ ;
+遊撃戦 < yuugekisen\ ;
+山水閣 < sansuikaku\ ;
+説教師 < sekkyoushi\ ;
+島帝国 < touteikoku\ ;
+卑劣漢 < hiretsukan\ ;
+随神 < kan''nagara\ ;
+裸麦 < hadakamugi\ ;
+全生涯 < zenshougai\ ;
+全会衆 < zenkaishuu\ ;
+収容者 < shuuyousha\ ;
+解集合 < kaishuugou\ ;
+相対的 < soutaiteki\ ;
+石灰乳 < sekkainyuu\ ;
+共有者 < kyouyuusha\ ;
+指定席 < shiteiseki\ ;
+商品名 < shouhinmei\ ;
+根本的 < konponteki\ ;
+美術展 < bijutsuten\ ;
+縞模様 < shimamoyou\ ;
+消防団 < shouboudan\ ;
+乾葡萄 < hoshibudou\ ;
+霜月 < shimotsuki\ ;
+羽根車 < haneguruma\ ;
+完全試合 < kanzenjiai\ ;
+発動機 < hatsudouki\ ;
+闘牛士 < tougyuushi\ ;
+同情票 < doujouhyou\ ;
+入会金 < nyuukaikin\ ;
+熱硬化 < netsukouka\ ;
+夢枕 < yumemakura\ ;
+旅心 < tabigokoro\ ;
+闘牛場 < tougyuujou\ ;
+反対票 < hantaihyou\ ;
+犬侍 < inuzamurai\ ;
+冷却器 < reikyakuki\ ;
+借入金 < kariirekin\ ;
+商品券 < shouhinken\ ;
+公示地価 < koujichika\ ;
+歓楽街 < kanrakugai\ ;
+研削盤 < kensakuban\ ;
+一字一句 < ichijiikku\ ;
+識別 < shikibetsu\ ;
+原理主義 < genrishugi\ ;
+本籍地 < honsekichi\ ;
+気欝症 < kiutsushou\ ;
+恋女房 < koinyoubou\ ;
+脳神経 < noushinkei\ ;
+膠原病 < kougenbyou\ ;
+牽制球 < kenseikyuu\ ;
+新造船 < shinzousen\ ;
+感覚点 < kankakuten\ ;
+偽君子 < nisekunshi\ ;
+決勝点 < kesshouten\ ;
+多数決 < tasuuketsu\ ;
+意識的 < ishikiteki\ ;
+反射的 < hanshateki\ ;
+不活発 < fukappatsu\ ;
+受領証 < juryoushou\ ;
+純文学 < junbungaku\ ;
+特急券 < tokkyuuken\ ;
+妾出 < shoushutsu\ ;
+黄金術 < ougonjutsu\ ;
+仮勘定 < karikanjou\ ;
+緑玉 < ryokugyoku\ ;
+烏蛇 < karasuhebi\ ;
+霊長類 < reichourui\ ;
+全身像 < zenshinzou\ ;
+密輸品 < mitsuyuhin\ ;
+既設線 < kisetsusen\ ;
+二連式 < nirenshiki\ ;
+童話作家 < douwasakka\ ;
+減速材 < gensokuzai\ ;
+光磁気 < hikarijiki\ ;
+証明書 < shoumeisho\ ;
+開拓地 < kaitakuchi\ ;
+仮免許 < karimenkyo\ ;
+特出 < tokushutsu\ ;
+紙袋 < kamibukuro\ ;
+印象的 < inshouteki\ ;
+旧教徒 < kyuukyouto\ ;
+貨物便 < kamotsubin\ ;
+妨害行為 < bougaikoui\ ;
+雪柳 < yukiyanagi\ ;
+有望株 < yuuboukabu\ ;
+慣例的 < kanreiteki\ ;
+観相学 < kansougaku\ ;
+肉用種 < nikuyoushu\ ;
+運営経費 < un''eikeihi\ ;
+春休 < haruyasumi\ ;
+基地局 < kichikyoku\ ;
+適応症 < tekioushou\ ;
+中高生 < chuukousei\ ;
+下準備 < shitajunbi\ ;
+信頼感 < shinraikan\ ;
+発酵乳 < hakkounyuu\ ;
+旅芸人 < tabigeinin\ ;
+人雪崩 < hitonadare\ ;
+主信号 < shushingou\ ;
+二部合奏 < nibugassou\ ;
+信奉者 < shinpousha\ ;
+名誉毀損 < meiyokison\ ;
+尺貫法 < shakkanhou\ ;
+美術品 < bijutsuhin\ ;
+記録映画 < kirokueiga\ ;
+通信費 < tsuushinhi\ ;
+信頼性 < shinraisei\ ;
+感覚毛 < kankakumou\ ;
+順応性 < jun''nousei\ ;
+常習者 < joushuusha\ ;
+美術史 < bijutsushi\ ;
+檀那寺 < dan''nadera\ ;
+千歳飴 < chitoseame\ ;
+製材業 < seizaigyou\ ;
+新機軸 < shinkijiku\ ;
+肉饅頭 < nikumanjuu\ ;
+水資源 < mizushigen\ ;
+白鳥座 < hakuchouza\ ;
+百分比 < hyakubunhi\ ;
+試金石 < shikinseki\ ;
+運搬管理 < unpankanri\ ;
+優等賞 < yuutoushou\ ;
+医科大学 < ikadaigaku\ ;
+大衆紙 < taishuushi\ ;
+花見時 < hanamidoki\ ;
+加減乗除 < kagenjoujo\ ;
+塗擦剤 < tosatsuzai\ ;
+阿片戦争 < ahensensou\ ;
+木製品 < mokuseihin\ ;
+内角球 < naikakkyuu\ ;
+饒舌家 < jouzetsuka\ ;
+熱処理 < netsushori\ ;
+触発 < shokuhatsu\ ;
+新幹線 < shinkansen\ ;
+動向表 < doukouhyou\ ;
+交響詩 < koukyoushi\ ;
+挨拶状 < aisatsujou\ ;
+陥没湖 < kanbotsuko\ ;
+唯唯諾諾 < iidakudaku\ ;
+信天翁 < shinten''ou\ ;
+起電力 < kidenryoku\ ;
+鎮魂祭 < chinkonsai\ ;
+舶来品 < hakuraihin\ ;
+手塩皿 < teshiozara\ ;
+黒底翳 < kurosokohi\ ;
+学生帽 < gakuseibou\ ;
+継父 < mamachichi\ ;
+水栽培 < mizusaibai\ ;
+営造物 < eizoubutsu\ ;
+日照権 < nisshouken\ ;
+相対誤差 < soutaigosa\ ;
+光量子 < kouryoushi\ ;
+万愚節 < bangusetsu\ ;
+能狂言 < noukyougen\ ;
+飲酒運転 < inshuunten\ ;
+烏紙 < karasugami\ ;
+支持力 < shijiryoku\ ;
+統計表 < toukeihyou\ ;
+先史学 < senshigaku\ ;
+指名試合 < shimeijiai\ ;
+日仏 < nichifutsu\ ;
+硫酸紙 < ryuusanshi\ ;
+性差別 < seisabetsu\ ;
+靴下 < kutsushita\ ;
+本国人 < hongokujin\ ;
+巨視的 < kyoshiteki\ ;
+転轍機 < tentetsuki\ ;
+表忠碑 < hyouchuuhi\ ;
+収賄罪 < shuuwaizai\ ;
+薬剤師 < yakuzaishi\ ;
+後見人 < kouken''nin\ ;
+連用形 < ren''youkei\ ;
+余白注 < yohakuchuu\ ;
+伝統的 < dentouteki\ ;
+縮尺 < shukushaku\ ;
+徒弟制度 < toteiseido\ ;
+親権者 < shinkensha\ ;
+紋羽二重 < monhabutae\ ;
+円天井 < marutenjou\ ;
+女主 < on''naaruji\ ;
+少年院 < shounen''in\ ;
+歴青炭 < rekiseitan\ ;
+貨幣制度 < kaheiseido\ ;
+蠏工船 < kanikousen\ ;
+目八分 < mehachibun\ ;
+四十肩 < shijuukata\ ;
+楽観的 < rakkanteki\ ;
+心停止 < shinteishi\ ;
+速射砲 < sokushahou\ ;
+敵失 < tekishitsu\ ;
+日和下駄 < hiyorigeta\ ;
+新建材 < shinkenzai\ ;
+不必要 < fuhitsuyou\ ;
+扁青石 < henseiseki\ ;
+双球菌 < soukyuukin\ ;
+世界平和 < sekaiheiwa\ ;
+水羊羮 < mizuyoukan\ ;
+抜本的 < bapponteki\ ;
+教室 < kyoushitsu\ ;
+単発機 < tanpatsuki\ ;
+無理関数 < murikansuu\ ;
+転送先 < tensousaki\ ;
+入会者 < nyuukaisha\ ;
+丸木船 < marukibune\ ;
+音吐朗朗 < ontorourou\ ;
+希釈液 < kishakueki\ ;
+梅雨前線 < baiuzensen\ ;
+月曜日 < getsuyoubi\ ;
+最賃法 < saichinhou\ ;
+電気時計 < denkidokei\ ;
+革新派 < kakushinha\ ;
+絶滅 < zetsumetsu\ ;
+二十四日 < nijuuyokka\ ;
+戦病死 < senbyoushi\ ;
+男性的 < danseiteki\ ;
+乳酸菌 < nyuusankin\ ;
+前照灯 < zenshoutou\ ;
+悲歌慷慨 < hikakougai\ ;
+腸捻転 < chounenten\ ;
+親分株 < oyabunkabu\ ;
+学用品 < gakuyouhin\ ;
+特殊性 < tokushusei\ ;
+単色画 < tanshokuga\ ;
+仕立券 < shitateken\ ;
+予防医学 < yobouigaku\ ;
+当期利益 < toukirieki\ ;
+要石 < kanameishi\ ;
+皮下脂肪 < hikashibou\ ;
+陰弁慶 < kagebenkei\ ;
+混血児 < konketsuji\ ;
+販売元 < hanbaimoto\ ;
+常習犯 < joushuuhan\ ;
+陶磁器店 < toujikiten\ ;
+清涼剤 < seiryouzai\ ;
+最小値 < saishouchi\ ;
+切符売場 < kippuuriba\ ;
+裸体主義 < rataishugi\ ;
+水族館 < suizokukan\ ;
+共犯者 < kyouhansha\ ;
+寿司飯 < sushimeshi\ ;
+急転換 < kyuutenkan\ ;
+招待状 < shoutaijou\ ;
+打撲傷 < dabokushou\ ;
+音標文字 < onpyoumoji\ ;
+特待券 < tokutaiken\ ;
+毒人参 < dokuninjin\ ;
+不正規戦 < fuseikisen\ ;
+天竺葵 < tenjikuaoi\ ;
+女世帯 < on''najotai\ ;
+人間的 < ningenteki\ ;
+診断書 < shindansho\ ;
+蘚苔学 < sentaigaku\ ;
+絶対位置 < zettaiichi\ ;
+原稿料 < genkouryou\ ;
+監督官 < kantokukan\ ;
+商務省 < shoumushou\ ;
+宣告書 < senkokusho\ ;
+夜夜中 < yoruyonaka\ ;
+裏話 < urabanashi\ ;
+通信簿 < tsuushinbo\ ;
+堆積岩 < taisekigan\ ;
+抑留所 < yokuryuujo\ ;
+撞木杖 < shumokuzue\ ;
+黄金率 < ougonritsu\ ;
+堆積層 < taisekisou\ ;
+合唱団 < gasshoudan\ ;
+好敵手 < koutekishu\ ;
+簡易保険 < kan''ihoken\ ;
+粉薬 < konagusuri\ ;
+文章題 < bunshoudai\ ;
+寡頭政治 < katouseiji\ ;
+金物屋 < kanamonoya\ ;
+団菊祭 < dangikusai\ ;
+緩衝液 < kanshoueki\ ;
+寄宿舎 < kishukusha\ ;
+縮刷 < shukusatsu\ ;
+潜望鏡 < senboukyou\ ;
+新左翼 < shinsayoku\ ;
+遡及的 < sokyuuteki\ ;
+同情心 < doujoushin\ ;
+下稽古 < shitageiko\ ;
+競争者 < kyousousha\ ;
+商店街 < shoutengai\ ;
+玉手箱 < tamatebako\ ;
+土豚 < tsuchibuta\ ;
+上半身 < jouhanshin\ ;
+下水処理 < gesuishori\ ;
+測定法 < sokuteihou\ ;
+降圧剤 < kouatsuzai\ ;
+急傾斜 < kyuukeisha\ ;
+両棲類 < ryouseirui\ ;
+最上級 < saijoukyuu\ ;
+偃月刀 < engetsutou\ ;
+看護卒 < kangosotsu\ ;
+記憶素子 < kiokusoshi\ ;
+音声記号 < onseikigou\ ;
+和平会議 < waheikaigi\ ;
+罫線表 < keisenhyou\ ;
+破壊主義 < hakaishugi\ ;
+針土竜 < harimogura\ ;
+宇宙基地 < uchuukichi\ ;
+灯台守 < toudaimori\ ;
+仮免状 < karimenjou\ ;
+弾薬庫 < dan''yakuko\ ;
+合法的 < gouhouteki\ ;
+不可知論 < fukachiron\ ;
+自衛手段 < jieishudan\ ;
+挫折感 < zasetsukan\ ;
+小売値段 < kourinedan\ ;
+救出 < kyuushutsu\ ;
+壁土 < kabetsuchi\ ;
+赤新聞 < akashinbun\ ;
+膠着語 < kouchakugo\ ;
+終止形 < shuushikei\ ;
+出港船 < shukkousen\ ;
+輸入額 < yunyuugaku\ ;
+甲殻類 < koukakurui\ ;
+市場規模 < shijoukibo\ ;
+議員立法 < giinrippou\ ;
+障壁画 < shouhekiga\ ;
+溶接機 < yousetsuki\ ;
+乗組員 < norikumiin\ ;
+腎臓病 < jinzoubyou\ ;
+可搬式 < kahanshiki\ ;
+健筆家 < kenpitsuka\ ;
+正中線 < seichuusen\ ;
+千年間 < sen''nenkan\ ;
+棒磁石 < boujishaku\ ;
+観賞魚 < kanshougyo\ ;
+神学校 < shingakkou\ ;
+作業服 < sagyoufuku\ ;
+発着所 < hatchakujo\ ;
+親近感 < shinkinkan\ ;
+乱泥流 < randeiryuu\ ;
+当直員 < touchokuin\ ;
+学級委員 < gakkyuuiin\ ;
+統計的 < toukeiteki\ ;
+結末 < ketsumatsu\ ;
+芸術家 < geijutsuka\ ;
+玄関先 < genkansaki\ ;
+親柱 < oyabashira\ ;
+深海魚 < shinkaigyo\ ;
+同志的 < doushiteki\ ;
+粛粛 < shukushuku\ ;
+価千金 < ataisenkin\ ;
+議会主義 < gikaishugi\ ;
+九回戦 < kyuukaisen\ ;
+基礎科学 < kisokagaku\ ;
+国訛 < kuninamari\ ;
+捜査本部 < sousahonbu\ ;
+半永久 < han''eikyuu\ ;
+雑役婦 < zatsuekifu\ ;
+冷凍業 < reitougyou\ ;
+綿埃 < watabokori\ ;
+宇宙探査 < uchuutansa\ ;
+儒教的 < jukyouteki\ ;
+親日 < shin''nichi\ ;
+酛 < sakenomoto\ ;
+揚陸艦 < yourikukan\ ;
+重謹慎 < juukinshin\ ;
+凍豆腐 < shimidoufu\ ;
+永谷園 < nagatanien\ ;
+二槽式 < nisoushiki\ ;
+相乗積 < soujouseki\ ;
+菌類学 < kinruigaku\ ;
+新刊書 < shinkansho\ ;
+青少年 < seishounen\ ;
+推進者 < suishinsha\ ;
+灼熱 < shakunetsu\ ;
+列席者 < ressekisha\ ;
+国産品 < kokusanhin\ ;
+懐旧談 < kaikyuudan\ ;
+枯草熱 < kosounetsu\ ;
+雇主 < yatoinushi\ ;
+中甲板 < chuukanpan\ ;
+埋伏歯 < maifukushi\ ;
+内緒事 < naishogoto\ ;
+一等卒 < ittousotsu\ ;
+亜麻織物 < amaorimono\ ;
+神代杉 < jindaisugi\ ;
+値嵩株 < negasakabu\ ;
+政治力 < seijiryoku\ ;
+答申書 < toushinsho\ ;
+順序不同 < junjofudou\ ;
+継娘 < mamamusume\ ;
+乱心者 < ranshinsha\ ;
+経済援助 < keizaienjo\ ;
+焼失 < shoushitsu\ ;
+人間業 < ningenwaza\ ;
+累算温度 < ruisanondo\ ;
+共謀者 < kyoubousha\ ;
+来賓席 < raihinseki\ ;
+舞踏曲 < butoukyoku\ ;
+修行者 < shugyousha\ ;
+島根県 < shimaneken\ ;
+強硬論 < kyoukouron\ ;
+法治国 < houchikoku\ ;
+不得策 < futokusaku\ ;
+訳出 < yakushutsu\ ;
+烈日 < retsujitsu\ ;
+在米中 < zaibeichuu\ ;
+匿名性 < tokumeisei\ ;
+登山靴 < tozangutsu\ ;
+浪漫主義 < romanshugi\ ;
+座敷牢 < zashikirou\ ;
+神格化 < shinkakuka\ ;
+赤外線 < sekigaisen\ ;
+薬用酒 < yakuyoushu\ ;
+結核菌 < kekkakukin\ ;
+締付 < shimetsuke\ ;
+草履虫 < zourimushi\ ;
+武装都市 < busoutoshi\ ;
+大衆性 < taishuusei\ ;
+寄宿生 < kishukusei\ ;
+昇汞水 < shoukousui\ ;
+武者慄 < mushaburui\ ;
+文章論 < bunshouron\ ;
+特選品 < tokusenhin\ ;
+近親者 < kinshinsha\ ;
+複数形 < fukusuukei\ ;
+幽邃境 < yuusuikyou\ ;
+再投票 < saitouhyou\ ;
+不活動 < fukatsudou\ ;
+全寮制 < zenryousei\ ;
+平和国家 < heiwakokka\ ;
+追悼会 < tsuitoukai\ ;
+道路地図 < dourochizu\ ;
+筒鳥 < tsutsudori\ ;
+白兵戦 < hakuheisen\ ;
+請求権 < seikyuuken\ ;
+忠霊塔 < chuureitou\ ;
+隙間風 < sukimakaze\ ;
+共有地 < kyouyuuchi\ ;
+片為替 < katagawase\ ;
+緩衝弁 < kanshouben\ ;
+宿根草 < shukkonsou\ ;
+大立者 < oodatemono\ ;
+泰山木 < taisanboku\ ;
+糸状虫 < shijouchuu\ ;
+絶縁体 < zetsuentai\ ;
+里言葉 < satokotoba\ ;
+御朱印船 < goshuinsen\ ;
+購読者 < koudokusha\ ;
+売買高 < baibaidaka\ ;
+挺進隊 < teishintai\ ;
+詔 < mikotonori\ ;
+脱水症 < dassuishou\ ;
+勧進帳 < kanjinchou\ ;
+拡張化 < kakuchouka\ ;
+殺人鬼 < satsujinki\ ;
+流動性 < ryuudousei\ ;
+四重唱 < shijuushou\ ;
+教育者 < kyouikusha\ ;
+反対側 < hantaigawa\ ;
+琴一張 < kotoitchou\ ;
+内在的 < naizaiteki\ ;
+三段跳 < sandantobi\ ;
+飛躍的 < hiyakuteki\ ;
+手長猿 < tenagazaru\ ;
+老眼鏡 < rougankyou\ ;
+仮処分 < karishobun\ ;
+袋耳 < fukuromimi\ ;
+全人格 < zenjinkaku\ ;
+分泌物 < bunpibutsu\ ;
+請求書 < seikyuusho\ ;
+結実 < ketsujitsu\ ;
+不決断 < fuketsudan\ ;
+先先週 < sensenshuu\ ;
+致命的 < chimeiteki\ ;
+乳石英 < nyuusekiei\ ;
+財政学 < zaiseigaku\ ;
+続出 < zokushutsu\ ;
+夜郎自大 < yaroujidai\ ;
+飲食店 < inshokuten\ ;
+部分否定 < bubunhitei\ ;
+紙製品 < kamiseihin\ ;
+蝟 < harinezumi\ ;
+講和会議 < kouwakaigi\ ;
+編組機械 < hensokikai\ ;
+法律案 < houritsuan\ ;
+半盲症 < hanmoushou\ ;
+硝酸銀 < shousangin\ ;
+医療器械 < iryoukikai\ ;
+防総省 < bousoushou\ ;
+正規分布 < seikibunpu\ ;
+逆比例 < gyakuhirei\ ;
+投書箱 < toushobako\ ;
+会員名簿 < kaiinmeibo\ ;
+濃紫 < komurasaki\ ;
+城下町 < joukamachi\ ;
+特別委 < tokubetsui\ ;
+村芝居 < murashibai\ ;
+継息子 < mamamusuko\ ;
+発信音 < hasshin''on\ ;
+天変地異 < tenpenchii\ ;
+有史以来 < yuushiirai\ ;
+四死球 < shishikyuu\ ;
+献金箱 < kenkinbako\ ;
+戦略家 < senryakuka\ ;
+公聴会 < kouchoukai\ ;
+溝鼠 < dobunezumi\ ;
+萙 < kutabireru\ ;
+複数回 < fukusuukai\ ;
+会計学 < kaikeigaku\ ;
+簡略化 < kanryakuka\ ;
+給電線 < kyuudensen\ ;
+吉祥天 < kisshouten\ ;
+保護関税 < hogokanzei\ ;
+未帰還者 < mikikansha\ ;
+御影石 < mikageishi\ ;
+内国産 < naikokusan\ ;
+三日坊主 < mikkabouzu\ ;
+雪月花 < setsugekka\ ;
+私書箱 < shishobako\ ;
+直映館 < chokueikan\ ;
+病理学 < byourigaku\ ;
+復刻版 < fukkokuban\ ;
+退廃的 < taihaiteki\ ;
+確固不動 < kakkofudou\ ;
+人間学 < ningengaku\ ;
+下着類 < shitagirui\ ;
+唐変木 < touhenboku\ ;
+線撮影 < sensatsuei\ ;
+文房具屋 < bunbouguya\ ;
+新生面 < shinseimen\ ;
+康煕字典 < koukijiten\ ;
+血脈 < ketsumyaku\ ;
+数日後 < suujitsugo\ ;
+未来永劫 < miraieigou\ ;
+超合金 < chougoukin\ ;
+多国籍 < takokuseki\ ;
+積算法 < sekisanhou\ ;
+無理算段 < murisandan\ ;
+外為法 < gaitamehou\ ;
+出品者 < shuppinsha\ ;
+覚醒剤 < kakuseizai\ ;
+高山蝶 < kouzanchou\ ;
+近縁属 < kin''enzoku\ ;
+上達部 < kandachime\ ;
+可鍛鉄 < katantetsu\ ;
+心理的 < shinriteki\ ;
+乗換券 < norikaeken\ ;
+教育界 < kyouikukai\ ;
+陰極線 < inkyokusen\ ;
+半艇身 < hanteishin\ ;
+親兄弟 < oyakyoudai\ ;
+旅館業 < ryokangyou\ ;
+学期末 < gakkimatsu\ ;
+虞美人草 < gubijinsou\ ;
+到来物 < touraimono\ ;
+象牙細工 < zougezaiku\ ;
+沖仲仕 < okinakashi\ ;
+外国製 < gaikokusei\ ;
+終盤戦 < shuubansen\ ;
+逆光線 < gyakkousen\ ;
+象徴派 < shouchouha\ ;
+勧進元 < kanjinmoto\ ;
+魚類学 < gyoruigaku\ ;
+鎌鼬 < kamaitachi\ ;
+縞瑪瑙 < shimamenou\ ;
+真空管 < shinkuukan\ ;
+舎利別 < sharibetsu\ ;
+京阪神 < keihanshin\ ;
+慣習法 < kanshuuhou\ ;
+滅茶滅茶 < mechamecha\ ;
+頭陀袋 < zudabukuro\ ;
+陰極管 < inkyokukan\ ;
+混和物 < konwabutsu\ ;
+刀鍛冶 < katanakaji\ ;
+潜伏性 < senpukusei\ ;
+風車小屋 < fuushagoya\ ;
+招待券 < shoutaiken\ ;
+子供部屋 < kodomobeya\ ;
+求愛誇示 < kyuuaikoji\ ;
+受難節 < junansetsu\ ;
+測定値 < sokuteichi\ ;
+化粧紙 < keshougami\ ;
+大憲章 < daikenshou\ ;
+王政復古 < ouseifukko\ ;
+単色光 < tanshokkou\ ;
+袋物 < fukuromono\ ;
+甲殻綱 < koukakukou\ ;
+集合体 < shuugoutai\ ;
+一人部屋 < hitoribeya\ ;
+立往生 < tachioujou\ ;
+竕 < deshiritto\ ;
+不買運動 < fubaiundou\ ;
+子宮頸 < shikyuukei\ ;
+吝嗇吝嗇 < kechikechi\ ;
+経験的 < keikenteki\ ;
+化粧箱 < keshoubako\ ;
+二番星 < nibanboshi\ ;
+西口 < nishiguchi\ ;
+法律家 < houritsuka\ ;
+定期預金 < teikiyokin\ ;
+一定期間 < itteikikan\ ;
+洗濯板 < sentakuita\ ;
+滑沢剤 < kattakuzai\ ;
+対称性 < taishousei\ ;
+少年法 < shounenhou\ ;
+徳川家 < tokugawake\ ;
+地下運動 < chikaundou\ ;
+流動体 < ryuudoutai\ ;
+終刊号 < shuukangou\ ;
+監修者 < kanshuusha\ ;
+共編者 < kyouhensha\ ;
+懐疑主義 < kaigishugi\ ;
+融通無碍 < yuuzuumuge\ ;
+保安要員 < hoan''youin\ ;
+統計学 < toukeigaku\ ;
+輪郭線 < rinkakusen\ ;
+軍艦鳥 < gunkandori\ ;
+商船隊 < shousentai\ ;
+超満員 < chouman''in\ ;
+片手鍋 < katatenabe\ ;
+股関節 < kokansetsu\ ;
+節節 < fushibushi\ ;
+調味料 < choumiryou\ ;
+又小作 < matakosaku\ ;
+筒袖 < tsutsusode\ ;
+不正直 < fushoujiki\ ;
+洪積層 < kousekisou\ ;
+検圧器 < ken''atsuki\ ;
+主我主義 < shugashugi\ ;
+染物屋 < somemonoya\ ;
+配膳人 < haizen''nin\ ;
+境界線 < kyoukaisen\ ;
+静物画 < seibutsuga\ ;
+教育法 < kyouikuhou\ ;
+収集魔 < shuushuuma\ ;
+離職者 < rishokusha\ ;
+牧師館 < bokushikan\ ;
+占領軍 < senryougun\ ;
+糸印 < itojirushi\ ;
+中生代 < chuuseidai\ ;
+為人 < hitotonari\ ;
+下半期 < shimohanki\ ;
+教会法 < kyoukaihou\ ;
+原水爆 < gensuibaku\ ;
+甅 < senchigura\ ;
+瓸 < hekutogura\ ;
+炭俵 < sumidawara\ ;
+瓱 < miriguramu\ ;
+瓩 < kiroguramu\ ;
+瓧 < dekaguramu\ ;
+刺繍糸 < shishuuito\ ;
+不作為犯 < fusakuihan\ ;
+搭乗橋 < toujoukyou\ ;
+石鹸箱 < sekkenbako\ ;
+回転軸 < kaitenjiku\ ;
+刻一刻 < kokuikkoku\ ;
+創造的 < souzouteki\ ;
+痴呆症 < chihoushou\ ;
+米所 < komedokoro\ ;
+排水量 < haisuiryou\ ;
+各情報 < kakujouhou\ ;
+舗装煉瓦 < hosourenga\ ;
+投影図法 < toueizuhou\ ;
+核文法 < kakubunpou\ ;
+売上高 < uriagedaka\ ;
+深成岩 < shinseigan\ ;
+胸三寸 < munesanzun\ ;
+得意客 < tokuikyaku\ ;
+徴兵制 < chouheisei\ ;
+端近 < hashidjika\ ;
+鎖鎌 < kusarigama\ ;
+性本能 < seihon''nou\ ;
+滅裂 < metsuretsu\ ;
+休診日 < kyuushinbi\ ;
+執金鋼 < shikkongou\ ;
+総状花序 < soujoukajo\ ;
+竜皮巻 < ryuuhimaki\ ;
+回帰熱 < kaikinetsu\ ;
+祝賀会 < shukugakai\ ;
+生活費 < seikatsuhi\ ;
+法務局 < houmukyoku\ ;
+中学校 < chuugakkou\ ;
+月見草 < tsukimisou\ ;
+清浄無垢 < seijoumuku\ ;
+通俗化 < tsuuzokuka\ ;
+直交性 < chokkousei\ ;
+稲熱病 < imochibyou\ ;
+三面記事 < sanmenkiji\ ;
+高踏的 < koutouteki\ ;
+給料日 < kyuuryoubi\ ;
+才気縦横 < saikijuuou\ ;
+万年青 < man''nensei\ ;
+小前提 < shouzentei\ ;
+六三制 < rokusansei\ ;
+造林学 < zouringaku\ ;
+本位貨幣 < hon''ikahei\ ;
+全責任 < zensekinin\ ;
+馬鹿丁寧 < bakateinei\ ;
+照明弾 < shoumeidan\ ;
+愛国心 < aikokushin\ ;
+潮煙 < shiokemuri\ ;
+石鹸皿 < sekkenzara\ ;
+予定説 < yoteisetsu\ ;
+筆舌 < hitsuzetsu\ ;
+日葡辞書 < nippojisho\ ;
+脳硬塞 < noukousoku\ ;
+総大将 < soudaishou\ ;
+始末屋 < shimatsuya\ ;
+国有林 < kokuyuurin\ ;
+薬学部 < yakugakubu\ ;
+批判力 < hihanryoku\ ;
+等身大 < toushindai\ ;
+位相空間 < isoukuukan\ ;
+海事衛星 < kaijieisei\ ;
+空気機械 < kuukikikai\ ;
+総攻撃 < soukougeki\ ;
+高山病 < kouzanbyou\ ;
+五月祭 < gogatsusai\ ;
+共同井戸 < kyoudouido\ ;
+軍楽隊 < gungakutai\ ;
+三重唱 < sanjuushou\ ;
+南京豆 < nankinmame\ ;
+曲馬師 < kyokubashi\ ;
+副司令 < fukushirei\ ;
+錦鯉 < nishikigoi\ ;
+昼日中 < hiruhinaka\ ;
+合理主義 < gourishugi\ ;
+常識家 < joushikika\ ;
+滑脱 < katsudatsu\ ;
+天津御姉 < amatsumiko\ ;
+天手古舞 < tentekomai\ ;
+言葉尻 < kotobajiri\ ;
+肺浸潤 < haishinjun\ ;
+夜光時計 < yakoudokei\ ;
+耕作者 < kousakusha\ ;
+同心円 < doushin''en\ ;
+致死量 < chishiryou\ ;
+弁証論 < benshouron\ ;
+新登場 < shintoujou\ ;
+自転車屋 < jitenshaya\ ;
+強力粉 < kyourikiko\ ;
+予備室 < yobishitsu\ ;
+店頭株 < tentoukabu\ ;
+発射薬 < hasshayaku\ ;
+自家用車 < jikayousha\ ;
+単位制度 < tan''iseido\ ;
+化粧水 < keshoumizu\ ;
+十進法 < jisshinhou\ ;
+文字情報 < mojijouhou\ ;
+文筆家 < bunpitsuka\ ;
+従量税 < juuryouzei\ ;
+瓦屋根 < kawarayane\ ;
+関係調 < kankeichou\ ;
+唯心論 < yuishinron\ ;
+励振管 < reishinkan\ ;
+全日空 < zen''nikkuu\ ;
+二枚腰 < nimaigoshi\ ;
+流刑地 < ryuukeichi\ ;
+洪積世 < kousekisei\ ;
+震災地 < shinsaichi\ ;
+筆筒 < fudedzutsu\ ;
+規制解除 < kiseikaijo\ ;
+描出 < byoushutsu\ ;
+眼軟膏 < gan''nankou\ ;
+水晶体 < suishoutai\ ;
+点滅器 < tenmetsuki\ ;
+兄弟分 < kyoudaibun\ ;
+金門橋 < kinmonkyou\ ;
+景勝地 < keishouchi\ ;
+内接円 < naisetsuen\ ;
+生活苦 < seikatsuku\ ;
+東照宮 < toushouguu\ ;
+受難曲 < junankyoku\ ;
+対流圏 < tairyuuken\ ;
+下水工事 < gesuikouji\ ;
+危険物 < kikenbutsu\ ;
+研修生 < kenshuusei\ ;
+近親婚 < kinshinkon\ ;
+交読文 < koudokubun\ ;
+脳卒中 < nousotchuu\ ;
+焼死体 < shoushitai\ ;
+一神教 < isshinkyou\ ;
+派出所 < hashutsujo\ ;
+振動計 < shindoukei\ ;
+屈折語 < kussetsugo\ ;
+曲馬団 < kyokubadan\ ;
+注射液 < chuushaeki\ ;
+合意情死 < gouijoushi\ ;
+福禄寿 < fukurokuju\ ;
+紙吹雪 < kamifubuki\ ;
+仲介者 < chuukaisha\ ;
+集配人 < shuuhainin\ ;
+定礎式 < teisoshiki\ ;
+裁判長 < saibanchou\ ;
+電話局 < denwakyoku\ ;
+俸祿米 < hourokumai\ ;
+花吹雪 < hanafubuki\ ;
+土壁 < tsuchikabe\ ;
+兵糧米 < hyouroumai\ ;
+角細工 < tsunozaiku\ ;
+輸送力 < yusouryoku\ ;
+林野庁 < rin''yachou\ ;
+支配的 < shihaiteki\ ;
+太鼓橋 < taikobashi\ ;
+箔力粉 < hakurikiko\ ;
+獅子鼻 < shishibana\ ;
+連隊長 < rentaichou\ ;
+端末機 < tanmatsuki\ ;
+吹奏楽 < suisougaku\ ;
+熱射病 < nesshabyou\ ;
+擅 < hoshiimama\ ;
+武装平和 < busouheiwa\ ;
+徳用瓶 < tokuyoubin\ ;
+手続 < tetsudzuki\ ;
+天津神 < amatsukami\ ;
+降水量 < kousuiryou\ ;
+出金者 < shukkinsha\ ;
+典型的 < tenkeiteki\ ;
+螢石 < hotaruishi\ ;
+中枢性 < chuusuusei\ ;
+迷彩服 < meisaifuku\ ;
+住宅難 < juutakunan\ ;
+付帯事項 < futaijikou\ ;
+化粧料 < keshouryou\ ;
+心理学 < shinrigaku\ ;
+芳名録 < houmeiroku\ ;
+動力炉 < douryokuro\ ;
+小児病 < shounibyou\ ;
+少年団 < shounendan\ ;
+全面的 < zenmenteki\ ;
+行方不明 < yukuefumei\ ;
+小市民 < shoushimin\ ;
+蜜蜂 < mitsubachi\ ;
+天気予報 < tenkiyohou\ ;
+不平不満 < fuheifuman\ ;
+被保険者 < hihokensha\ ;
+副次的 < fukujiteki\ ;
+椎間板 < tsuikanban\ ;
+親子電話 < oyakodenwa\ ;
+課税率 < kazeiritsu\ ;
+郵政省 < yuuseishou\ ;
+夏場所 < natsubasho\ ;
+多情多恨 < tajoutakon\ ;
+箱柳 < hakoyanagi\ ;
+経営破綻 < keieihatan\ ;
+厚化粧 < atsugeshou\ ;
+賛助会員 < sanjokaiin\ ;
+二人組 < futarigumi\ ;
+致命傷 < chimeishou\ ;
+箱枕 < hakomakura\ ;
+副都心 < fukutoshin\ ;
+米俵 < komedawara\ ;
+発案者 < hatsuansha\ ;
+強力犯 < gourikihan\ ;
+下部構造 < kabukouzou\ ;
+洗濯代 < sentakudai\ ;
+遊泳術 < yuueijutsu\ ;
+毎土曜日 < maidoyoubi\ ;
+製陶業 < seitougyou\ ;
+球座標 < kyuuzahyou\ ;
+沈丁花 < chinchouge\ ;
+蜂蜜 < hachimitsu\ ;
+予算措置 < yosansochi\ ;
+葡萄牙 < porutogaru\ ;
+不穏分子 < fuonbunshi\ ;
+教会堂 < kyoukaidou\ ;
+支店長 < shitenchou\ ;
+喜怒哀楽 < kidoairaku\ ;
+御年玉 < otoshidama\ ;
+西洋葱 < seiyounegi\ ;
+瓜実顔 < urizanegao\ ;
+真空帯 < shinkuutai\ ;
+竹筒 < takedzutsu\ ;
+追送検 < tsuisouken\ ;
+未決監 < miketsukan\ ;
+漢和辞典 < kanwajiten\ ;
+普通株 < futsuukabu\ ;
+友誼国家 < yuugikokka\ ;
+相互保険 < sougohoken\ ;
+商店主 < shoutenshu\ ;
+採石場 < saisekijou\ ;
+牢名主 < rounanushi\ ;
+累進税 < ruishinzei\ ;
+大競争 < daikyousou\ ;
+森林法 < shinrinhou\ ;
+同郷人 < doukyoujin\ ;
+派出婦 < hashutsufu\ ;
+事大主義 < jidaishugi\ ;
+内国債 < naikokusai\ ;
+五輪会議 < gorinkaigi\ ;
+支度金 < shitakukin\ ;
+端端 < hashibashi\ ;
+再浸礼 < saishinrei\ ;
+国有地 < kokuyuuchi\ ;
+親展書 < shintensho\ ;
+語形変化 < gokeihenka\ ;
+廉恥心 < renchishin\ ;
+皆既食 < kaikishoku\ ;
+非戦闘員 < hisentouin\ ;
+転居先 < tenkyosaki\ ;
+連絡駅 < renrakueki\ ;
+電話口 < denwaguchi\ ;
+無念無想 < munenmusou\ ;
+精勤賞 < seikinshou\ ;
+健忘症 < kenboushou\ ;
+蝶番 < choutsugai\ ;
+演算手順 < enzantejun\ ;
+教会史 < kyoukaishi\ ;
+少年会 < shounenkai\ ;
+贋手紙 < nisetegami\ ;
+出征軍 < shusseigun\ ;
+武断主義 < budanshugi\ ;
+計画者 < keikakusha\ ;
+散文的 < sanbunteki\ ;
+世話人間 < sewaningen\ ;
+幾何平均 < kikaheikin\ ;
+拠所 < yoridokoro\ ;
+人工降雨 < jinkoukouu\ ;
+黒鼠 < kuronezumi\ ;
+友好的 < yuukouteki\ ;
+自問自答 < jimonjitou\ ;
+召喚状 < shoukanjou\ ;
+認証者 < ninshousha\ ;
+年産額 < nensangaku\ ;
+換算表 < kanzanhyou\ ;
+沖縄県 < okinawaken\ ;
+救世軍 < kyuuseigun\ ;
+満足感 < manzokukan\ ;
+奉公先 < houkousaki\ ;
+電報料 < denpouryou\ ;
+荒事師 < aragotoshi\ ;
+桃源郷 < tougenkyou\ ;
+蓮月尼 < rengetsuni\ ;
+皇紀年度 < koukinendo\ ;
+羽斑蚊 < hamadaraka\ ;
+朴念仁 < bokunenjin\ ;
+子宮癌 < shikyuugan\ ;
+表口 < omoteguchi\ ;
+磁力計 < jiryokukei\ ;
+根粒菌 < konryuukin\ ;
+縦旋盤 < tatesenban\ ;
+市役所 < shiyakusho\ ;
+検流計 < kenryuukei\ ;
+即売会 < sokubaikai\ ;
+延人員 < nobejin''in\ ;
+口腔外科 < koukougeka\ ;
+調合剤 < chougouzai\ ;
+要確認 < youkakunin\ ;
+常緑樹 < jouryokuju\ ;
+竈神 < kamadogami\ ;
+選球眼 < senkyuugan\ ;
+石合戦 < ishigassen\ ;
+封建的 < houkenteki\ ;
+駐在所 < chuuzaisho\ ;
+世帯主 < setainushi\ ;
+平常心 < heijoushin\ ;
+黒鮪 < kuromaguro\ ;
+脳性麻痺 < nouseimahi\ ;
+五十音順 < gojuuonjun\ ;
+豆台風 < mametaifuu\ ;
+演算精度 < enzanseido\ ;
+鉱山業 < kouzangyou\ ;
+十字架状 < juujikajou\ ;
+表出 < hyoushutsu\ ;
+構文木 < koubunmoku\ ;
+参謀長 < sanbouchou\ ;
+不老不死 < furoufushi\ ;
+世界主義 < sekaishugi\ ;
+写真館 < shashinkan\ ;
+戦時色 < senjishoku\ ;
+螺鈿細工 < radenzaiku\ ;
+記載事項 < kisaijikou\ ;
+住宅街 < juutakugai\ ;
+頓珍漢 < tonchinkan\ ;
+弱酸性 < jakusansei\ ;
+中仕切 < nakajikiri\ ;
+炭素繊維 < tansosen''i\ ;
+唐衣 < karakoromo\ ;
+初舞台 < hatsubutai\ ;
+写真顔 < shashingao\ ;
+無線電話 < musendenwa\ ;
+南京玉 < nankindama\ ;
+船籍港 < sensekikou\ ;
+燐灰石 < rinkaiseki\ ;
+一年間 < ichinenkan\ ;
+非接触 < hisesshoku\ ;
+持続的 < jizokuteki\ ;
+温情主義 < onjoushugi\ ;
+営業中 < eigyouchuu\ ;
+超過額 < choukagaku\ ;
+預貸率 < yotairitsu\ ;
+代用肉 < daiyouniku\ ;
+個人経営 < kojinkeiei\ ;
+時系列 < jikeiretsu\ ;
+筆旁 < fudezukuri\ ;
+奔放不羈 < honpoufuki\ ;
+子供服 < kodomofuku\ ;
+警視庁 < keishichou\ ;
+免疫性 < men''ekisei\ ;
+系統的 < keitouteki\ ;
+軍用金 < gun''youkin\ ;
+荒仕事 < arashigoto\ ;
+登山客 < tozankyaku\ ;
+低賃金 < teichingin\ ;
+侵害者 < shingaisha\ ;
+売上票 < uriagepyou\ ;
+鉄器時代 < tekkijidai\ ;
+放送劇 < housougeki\ ;
+日程表 < nitteihyou\ ;
+副葬品 < fukusouhin\ ;
+齣落 < komaotoshi\ ;
+挿入文 < sounyuubun\ ;
+初学者 < shogakusha\ ;
+教習所 < kyoushuujo\ ;
+入場門 < nyuujoumon\ ;
+官庁街 < kanchougai\ ;
+物価騰貴 < bukkatouki\ ;
+規則的 < kisokuteki\ ;
+小冊子 < shousasshi\ ;
+輻射線 < fukushasen\ ;
+倩 < tsuratsura\ ;
+十進制 < jisshinsei\ ;
+複製品 < fukuseihin\ ;
+森林帯 < shinrintai\ ;
+結晶系 < kesshoukei\ ;
+無秩序 < muchitsujo\ ;
+日本舞踊 < nihonbuyou\ ;
+聾唖学校 < rouagakkou\ ;
+錨綱 < ikaridzuna\ ;
+主観的 < shukanteki\ ;
+破壊力 < hakairyoku\ ;
+三毛作 < sanmousaku\ ;
+桧皮葺 < hiwadabuki\ ;
+力織機 < rikishokki\ ;
+六面体 < rokumentai\ ;
+現代英語 < gendaieigo\ ;
+白人種 < hakujinshu\ ;
+汎神論 < hanshinron\ ;
+仮定款 < kariteikan\ ;
+納税額 < nouzeigaku\ ;
+諸外国 < shogaikoku\ ;
+外接円 < gaisetsuen\ ;
+十二使徒 < juunishito\ ;
+製紙業 < seishigyou\ ;
+鉛直線 < enchokusen\ ;
+心電計 < shindenkei\ ;
+福利表 < fukurihyou\ ;
+筒形 < tsutsugata\ ;
+微生物 < biseibutsu\ ;
+宝石店 < housekiten\ ;
+創業者 < sougyousha\ ;
+日本庭園 < nihonteien\ ;
+革製品 < kawaseihin\ ;
+平年作 < heinensaku\ ;
+深緑 < fukamidori\ ;
+遺伝暗号 < iden''angou\ ;
+猿芝居 < sarushibai\ ;
+場外株 < jougaikabu\ ;
+鼻薬 < hanagusuri\ ;
+弁証法 < benshouhou\ ;
+協定書 < kyouteisho\ ;
+軍事輸送 < gunjiyusou\ ;
+五旬節 < gojunsetsu\ ;
+伴性遺伝 < hanseiiden\ ;
+所柄 < tokorogara\ ;
+初任給 < shoninkyuu\ ;
+陸曹等 < rikusoutou\ ;
+経営参加 < keieisanka\ ;
+好成績 < kouseiseki\ ;
+通有性 < tsuuyuusei\ ;
+聴導犬 < choudouken\ ;
+予備選挙 < yobisenkyo\ ;
+御高祖頭巾 < okosozukin\ ;
+予備艦隊 < yobikantai\ ;
+磁力線 < jiryokusen\ ;
+離婚率 < rikonritsu\ ;
+硝酸塩 < shousan''en\ ;
+予備選手 < yobisenshu\ ;
+再確認 < saikakunin\ ;
+発案権 < hatsuanken\ ;
+酪製品 < rakuseihin\ ;
+土性骨 < doshoubone\ ;
+避妊薬 < hinin''yaku\ ;
+不倶戴天 < fugutaiten\ ;
+持主 < mochinushi\ ;
+発生学 < hasseigaku\ ;
+人種的 < jinshuteki\ ;
+磁石盤 < jishakuban\ ;
+大蔵経 < daizoukyou\ ;
+河原鶸 < kawarahiwa\ ;
+拙劣 < setsuretsu\ ;
+留置場 < ryuuchijou\ ;
+通風孔 < tsuufuukou\ ;
+要求者 < youkyuusha\ ;
+知恵袋 < chiebukuro\ ;
+紙鉄砲 < kamideppou\ ;
+初飛行 < hatsuhikou\ ;
+登山口 < tozanguchi\ ;
+貯水量 < chosuiryou\ ;
+社会鍋 < shakainabe\ ;
+平和部隊 < heiwabutai\ ;
+殊勲賞 < shukunshou\ ;
+運動靴 < undougutsu\ ;
+交際国 < kousaikoku\ ;
+八文字 < hachimonji\ ;
+裁判沙汰 < saibanzata\ ;
+開発部 < kaihatsubu\ ;
+調印国 < chouinkoku\ ;
+相続税 < souzokuzei\ ;
+蝋人形 < rouningyou\ ;
+人名録 < jinmeiroku\ ;
+営利法人 < eirihoujin\ ;
+落第生 < rakudaisei\ ;
+凝灰岩 < gyoukaigan\ ;
+利付債 < ritsukisai\ ;
+議会政治 < gikaiseiji\ ;
+雨天順延 < utenjun''en\ ;
+体腔壁 < taikouheki\ ;
+指掌紋 < shishoumon\ ;
+付帯費用 < futaihiyou\ ;
+奇跡的 < kisekiteki\ ;
+代議員団 < daigiindan\ ;
+蛋白源 < tanpakugen\ ;
+断末魔 < danmatsuma\ ;
+詳伝社 < shoudensha\ ;
+葬儀式 < sougishiki\ ;
+損害額 < songaigaku\ ;
+鉄鋼業 < tekkougyou\ ;
+暗紫色 < anshishoku\ ;
+先任順 < sen''ninjun\ ;
+好戦的 < kousenteki\ ;
+防長官 < bouchoukan\ ;
+水圧計 < suiatsukei\ ;
+外国勢 < gaikokuzei\ ;
+韓国人 < kankokujin\ ;
+敢闘賞 < kantoushou\ ;
+流質 < ryuushichi\ ;
+機内食 < kinaishoku\ ;
+裏番組 < urabangumi\ ;
+国防論 < kokubouron\ ;
+二重課税 < nijuukazei\ ;
+扶養控除 < fuyoukoujo\ ;
+国際線 < kokusaisen\ ;
+衛星都市 < eiseitoshi\ ;
+電気回路 < denkikairo\ ;
+貸金庫 < kashikinko\ ;
+速記術 < sokkijutsu\ ;
+国言葉 < kunikotoba\ ;
+抽出 < chuushutsu\ ;
+匐行疹 < fukkoushin\ ;
+町工場 < machikouba\ ;
+地下二階 < chikanikai\ ;
+至急便 < shikyuubin\ ;
+宝冠章 < houkanshou\ ;
+若旦那 < wakadan''na\ ;
+挑戦者 < chousensha\ ;
+鉄鉱石 < tekkouseki\ ;
+横隔膜 < oukakumaku\ ;
+預金口座 < yokinkouza\ ;
+同業者 < dougyousha\ ;
+活用語 < katsuyougo\ ;
+深呼吸 < shinkokyuu\ ;
+三番鶏 < sanbandori\ ;
+判任官 < han''ninkan\ ;
+外国債 < gaikokusai\ ;
+連絡船 < renrakusen\ ;
+落第点 < rakudaiten\ ;
+進行相 < shinkousou\ ;
+色恋沙汰 < irokoizata\ ;
+決定的 < ketteiteki\ ;
+肉料理 < nikuryouri\ ;
+文法的 < bunpouteki\ ;
+国文法 < kokubunpou\ ;
+超弩級 < choudokyuu\ ;
+大蔵省 < ookurashou\ ;
+感情的 < kanjouteki\ ;
+乗合船 < noriaibune\ ;
+徳用品 < tokuyouhin\ ;
+燃料棒 < nenryoubou\ ;
+二日酔 < futsukayoi\ ;
+神経系 < shinkeikei\ ;
+仮議長 < karigichou\ ;
+貨幣価値 < kaheikachi\ ;
+独断論 < dokudanron\ ;
+外国人 < gaikokujin\ ;
+珍糞漢 < chinpunkan\ ;
+振動板 < shindouban\ ;
+残務整理 < zanmuseiri\ ;
+主教冠 < shukyoukan\ ;
+正教師 < seikyoushi\ ;
+細菌学 < saikingaku\ ;
+蜜月 < mitsugetsu\ ;
+耕作地 < kousakuchi\ ;
+改進党 < kaishintou\ ;
+三分搗 < sanbutsuki\ ;
+休閑地 < kyuukanchi\ ;
+軍用艦 < gun''youkan\ ;
+新聞紙 < shinbunshi\ ;
+輻射点 < fukushaten\ ;
+公営保険 < koueihoken\ ;
+世俗的 < sezokuteki\ ;
+重圧感 < juuatsukan\ ;
+豆鉄砲 < mamedeppou\ ;
+優秀品 < yuushuuhin\ ;
+空涙 < soranamida\ ;
+金融界 < kin''yuukai\ ;
+傍聴券 < bouchouken\ ;
+貯金箱 < chokinbako\ ;
+国境線 < kokkyousen\ ;
+譲渡担保 < joutotanpo\ ;
+蚕糸業 < sanshigyou\ ;
+一年草 < ichinensou\ ;
+高密度 < koumitsudo\ ;
+免疫体 < men''ekitai\ ;
+磁気嵐 < jikiarashi\ ;
+振動数 < shindousuu\ ;
+大礼服 < taireifuku\ ;
+改良種 < kairyoushu\ ;
+北国人 < hokkokujin\ ;
+牢役人 < rouyakunin\ ;
+渋渋 < shibushibu\ ;
+内祝言 < naishuugen\ ;
+一家団欒 < ikkadanran\ ;
+代議員会 < daigiinkai\ ;
+半身像 < hanshinzou\ ;
+大黒天 < daikokuten\ ;
+福袋 < fukubukuro\ ;
+補正予算 < hoseiyosan\ ;
+不分割 < fubunkatsu\ ;
+西北西 < seihokusei\ ;
+過剰防衛 < kajoubouei\ ;
+筒先 < tsutsusaki\ ;
+筆力 < hitsuryoku\ ;
+怒髪天 < dohatsuten\ ;
+我心 < wagakokoro\ ;
+予備座席 < yobizaseki\ ;
+反革命 < hankakumei\ ;
+衛生基準 < eiseikijun\ ;
+新聞社 < shinbunsha\ ;
+一機軸 < ichikijiku\ ;
+保護団体 < hogodantai\ ;
+集魚灯 < shuugyotou\ ;
+雪見酒 < yukimizake\ ;
+儀装馬車 < gisoubasha\ ;
+坊主頭 < bouzuatama\ ;
+先験的 < senkenteki\ ;
+闇給与 < yamikyuuyo\ ;
+時事問題 < jijimondai\ ;
+傍聴人 < bouchounin\ ;
+事実上 < jijitsujou\ ;
+義侠心 < gikyoushin\ ;
+用水堀 < yousuibori\ ;
+黒苺 < kuroichigo\ ;
+仮普請 < karibushin\ ;
+占領地 < senryouchi\ ;
+寝装品 < shinsouhin\ ;
+町内会 < chounaikai\ ;
+同盟国 < doumeikoku\ ;
+発育期 < hatsuikuki\ ;
+誓約書 < seiyakusho\ ;
+発展中 < hattenchuu\ ;
+茶番的 < chabanteki\ ;
+特産品 < tokusanhin\ ;
+夫婦喧嘩 < fuufugenka\ ;
+製粉業 < seifungyou\ ;
+消去法 < shoukyohou\ ;
+肛門学 < koumongaku\ ;
+秩禄 < chitsuroku\ ;
+大司教 < daishikyou\ ;
+妄想症 < mousoushou\ ;
+御用達 < goyoudatsu\ ;
+展示物 < tenjibutsu\ ;
+自殺者 < jisatsusha\ ;
+作曲家 < sakkyokuka\ ;
+公教会 < koukyoukai\ ;
+又隣 < matadonari\ ;
+計画性 < keikakusei\ ;
+切迫感 < seppakukan\ ;
+枢密院 < suumitsuin\ ;
+四六判 < shirokuban\ ;
+追体験 < tsuitaiken\ ;
+入場者 < nyuujousha\ ;
+半病人 < hanbyounin\ ;
+金鋏 < kanabasami\ ;
+断固抗議 < dankokougi\ ;
+捜索隊 < sousakutai\ ;
+友好国 < yuukoukoku\ ;
+殿上人 < tenjoubito\ ;
+無水物 < musuibutsu\ ;
+健康的 < kenkouteki\ ;
+新体操 < shintaisou\ ;
+懐手 < futokorode\ ;
+空中線 < kuuchuusen\ ;
+田舎道 < inakamichi\ ;
+波乃花 < naminohana\ ;
+偶像教 < guuzoukyou\ ;
+神話学 < shinwagaku\ ;
+相続権 < souzokuken\ ;
+性教育 < seikyouiku\ ;
+前哨線 < zenshousen\ ;
+五輪聖火 < gorinseika\ ;
+独奏者 < dokusousha\ ;
+自分勝手 < jibunkatte\ ;
+赤血球 < sekkekkyuu\ ;
+天台宗 < tendaishuu\ ;
+軍楽手 < gungakushu\ ;
+軍需景気 < gunjukeiki\ ;
+軍艦巻 < gunkanmaki\ ;
+黒緑 < kuromidori\ ;
+暗褐色 < ankasshoku\ ;
+逆作用 < gyakusayou\ ;
+挑戦状 < chousenjou\ ;
+検量線 < kenryousen\ ;
+網杓子 < amijakushi\ ;
+再注文 < saichuumon\ ;
+内反足 < naihansoku\ ;
+年少者 < nenshousha\ ;
+新生代 < shinseidai\ ;
+保管物 < hokanbutsu\ ;
+基底部門 < kiteibumon\ ;
+優勝者 < yuushousha\ ;
+改良点 < kairyouten\ ;
+丸太小屋 < marutagoya\ ;
+慄烈 < ritsuretsu\ ;
+給排水 < kyuuhaisui\ ;
+天眼鏡 < tengankyou\ ;
+三連勝 < sanrenshou\ ;
+不発弾 < fuhatsudan\ ;
+半官的 < hankanteki\ ;
+振動子 < shindoushi\ ;
+鋸歯 < nokogiriba\ ;
+活発化 < kappatsuka\ ;
+予想利益 < yosourieki\ ;
+収集家 < shuushuuka\ ;
+酸化鉄 < sankatetsu\ ;
+新人王 < shinjin''ou\ ;
+延日数 < nobenissuu\ ;
+奉献頌 < houkenshou\ ;
+貸店舗 < kashitenpo\ ;
+五音音階 < goon''onkai\ ;
+二人共 < futaritomo\ ;
+収斂剤 < shuurenzai\ ;
+国際法 < kokusaihou\ ;
+高学年 < kougakunen\ ;
+核災害 < kakusaigai\ ;
+伽草子 < togizoushi\ ;
+煽情的 < senjouteki\ ;
+認証官 < ninshoukan\ ;
+養蚕業 < yousangyou\ ;
+火山脈 < kazanmyaku\ ;
+菜種殻 < natanegara\ ;
+避暑客 < hishokyaku\ ;
+火気厳禁 < kakigenkin\ ;
+書評欄 < shohyouran\ ;
+入場税 < nyuujouzei\ ;
+溌剌 < hatsuratsu\ ;
+試作車 < shisakusha\ ;
+獄中記 < gokuchuuki\ ;
+乳兄弟 < chikyoudai\ ;
+十字架像 < juujikazou\ ;
+二七日 < futananoka\ ;
+正教会 < seikyoukai\ ;
+先生方 < senseigata\ ;
+草雲雀 < kusahibari\ ;
+侍従職 < jijuushoku\ ;
+処理過程 < shorikatei\ ;
+地形学 < chikeigaku\ ;
+一定不変 < itteifuhen\ ;
+月下美人 < gekkabijin\ ;
+一直線 < itchokusen\ ;
+天眼通 < tengantsuu\ ;
+仲買人 < nakagainin\ ;
+薬理学 < yakurigaku\ ;
+瀬戸内海 < setonaikai\ ;
+老政治家 < rouseijika\ ;
+国文専 < kokubunsen\ ;
+一年生 < ichinensei\ ;
+定式化 < teishikika\ ;
+商業化 < shougyouka\ ;
+一輪車 < ichirinsha\ ;
+功利主義 < kourishugi\ ;
+滲炭鋼 < shintankou\ ;
+軍用犬 < gun''youken\ ;
+六角堂 < rokkakudou\ ;
+床暖房 < yukadanbou\ ;
+筆不精 < fudebushou\ ;
+海燕 < umitsubame\ ;
+公証人 < koushounin\ ;
+規制緩和 < kiseikanwa\ ;
+牧草地 < bokusouchi\ ;
+属性値 < zokuseichi\ ;
+解毒薬 < gedokuyaku\ ;
+満期日 < mankijitsu\ ;
+名作選 < meisakusen\ ;
+如是我聞 < nyozegamon\ ;
+明治時代 < meijijidai\ ;
+商用文 < shouyoubun\ ;
+同化作用 < doukasayou\ ;
+国語学 < kokugogaku\ ;
+可及的 < kakyuuteki\ ;
+別途預金 < bettoyokin\ ;
+金袋 < kanabukuro\ ;
+写真班 < shashinhan\ ;
+油虫 < aburamushi\ ;
+一元論 < ichigenron\ ;
+下種根性 < gesukonjou\ ;
+調剤師 < chouzaishi\ ;
+単三形 < tansangata\ ;
+甲冑師 < katchuushi\ ;
+先任者 < sen''ninsha\ ;
+曲線美 < kyokusenbi\ ;
+銀狐 < gingitsune\ ;
+南風 < minamikaze\ ;
+公約数 < kouyakusuu\ ;
+熱狂者 < nekkyousha\ ;
+水紋学 < suimongaku\ ;
+人種学 < jinshugaku\ ;
+残忍性 < zan''ninsei\ ;
+援助交際 < enjokousai\ ;
+虐殺 < gyakusatsu\ ;
+相関的 < soukanteki\ ;
+写真版 < shashinban\ ;
+生息地 < seisokuchi\ ;
+国会議員 < kokkaigiin\ ;
+土地利用 < tochiriyou\ ;
+知性的 < chiseiteki\ ;
+栄枯盛衰 < eikoseisui\ ;
+未発達 < mihattatsu\ ;
+開幕戦 < kaimakusen\ ;
+相互作用 < sougosayou\ ;
+水鏡 < mizukagami\ ;
+舞台衣装 < butaiishou\ ;
+後配株 < kouhaikabu\ ;
+停泊地 < teihakuchi\ ;
+罹患率 < rikanritsu\ ;
+進行形 < shinkoukei\ ;
+道徳上 < doutokujou\ ;
+社会的 < shakaiteki\ ;
+震源地 < shingenchi\ ;
+星雲説 < seiunsetsu\ ;
+河原者 < kawaramono\ ;
+溺死者 < dekishisha\ ;
+海商法 < kaishouhou\ ;
+理髪店 < rihatsuten\ ;
+革命軍 < kakumeigun\ ;
+活物 < katsubutsu\ ;
+卵酒 < tamagozake\ ;
+合議制度 < gougiseido\ ;
+書誌学 < shoshigaku\ ;
+二酸化硫黄 < nisankaiou\ ;
+理髪師 < rihatsushi\ ;
+世俗心 < sezokushin\ ;
+適任者 < tekininsha\ ;
+変圧所 < hen''atsujo\ ;
+漢民族 < kanminzoku\ ;
+適用性 < tekiyousei\ ;
+都鳥 < miyakodori\ ;
+決裂 < ketsuretsu\ ;
+薬箱 < kusuribako\ ;
+麦畑 < mugibatake\ ;
+雌雄異株 < shiyuuishu\ ;
+直談判 < jikadanpan\ ;
+背信者 < haishinsha\ ;
+筆耕料 < hikkouryou\ ;
+伝法肌 < denbouhada\ ;
+繊毛虫 < senmouchuu\ ;
+競売人 < kyoubainin\ ;
+作詞者 < sakushisha\ ;
+黒漆 < kokushitsu\ ;
+安死術 < anshijutsu\ ;
+喉仏 < nodobotoke\ ;
+反射誤差 < hanshagosa\ ;
+塩素酸塩 < ensosan''en\ ;
+機動力 < kidouryoku\ ;
+絶対誤差 < zettaigosa\ ;
+最終回 < saishuukai\ ;
+主要国 < shuyoukoku\ ;
+反陽子 < han''youshi\ ;
+内向的 < naikouteki\ ;
+防潮堤 < bouchoutei\ ;
+物損事故 < bussonjiko\ ;
+液晶盤 < ekishouban\ ;
+神経戦 < shinkeisen\ ;
+黄八丈 < kihachijou\ ;
+表二階 < omotenikai\ ;
+試験的 < shikenteki\ ;
+屠殺場 < tosatsujou\ ;
+旅支度 < tabijitaku\ ;
+全部保険 < zenbuhoken\ ;
+金聾 < kanatsunbo\ ;
+書簡集 < shokanshuu\ ;
+営林局 < eirinkyoku\ ;
+無重力 < mujuuryoku\ ;
+遺失者 < ishitsusha\ ;
+悪巫山戯 < warufuzake\ ;
+整形外科 < seikeigeka\ ;
+生得権 < seitokuken\ ;
+米騒動 < komesoudou\ ;
+新体制 < shintaisei\ ;
+血清学 < kesseigaku\ ;
+部長閲 < buchouetsu\ ;
+夜想曲 < yasoukyoku\ ;
+武家政権 < bukeseiken\ ;
+概念的 < gainenteki\ ;
+空中権 < kuuchuuken\ ;
+二項分布 < nikoubunpu\ ;
+周遊券 < shuuyuuken\ ;
+創作者 < sousakusha\ ;
+含糖量 < gantouryou\ ;
+倹約家 < ken''yakuka\ ;
+出張所 < shutchoujo\ ;
+映画会社 < eigagaisha\ ;
+管理職 < kanrishoku\ ;
+鉄砲百合 < teppouyuri\ ;
+恐怖症 < kyoufushou\ ;
+政略家 < seiryakuka\ ;
+公衆網 < koushuumou\ ;
+入場権 < nyuujouken\ ;
+名誉会員 < meiyokaiin\ ;
+督戦隊 < tokusentai\ ;
+千羽鶴 < senbadzuru\ ;
+住宅地 < juutakuchi\ ;
+応募用紙 < ouboyoushi\ ;
+内惑星 < naiwakusei\ ;
+真正直 < mashoujiki\ ;
+季節風 < kisetsufuu\ ;
+低学年 < teigakunen\ ;
+学籍簿 < gakusekibo\ ;
+立体鏡 < rittaikyou\ ;
+二項式 < nikoushiki\ ;
+百日紅 < sarusuberi\ ;
+軍略家 < gunryakuka\ ;
+自浄作用 < jijousayou\ ;
+民譚集 < mindanshuu\ ;
+慰問袋 < imonbukuro\ ;
+消石灰 < shousekkai\ ;
+単一化 < tan''itsuka\ ;
+専用車 < sen''yousha\ ;
+仕舞物 < shimaimono\ ;
+大白鳥 < oohakuchou\ ;
+緩徐曲 < kanjokyoku\ ;
+刀剣商 < toukenshou\ ;
+伽芝居 < togishibai\ ;
+外貨預金 < gaikayokin\ ;
+気象庁 < kishouchou\ ;
+一円玉 < ichiendama\ ;
+恐怖映画 < kyoufueiga\ ;
+課税控除 < kazeikoujo\ ;
+巡洋艦 < jun''youkan\ ;
+必需品 < hitsujuhin\ ;
+不信用 < fushin''you\ ;
+測地線 < sokuchisen\ ;
+高木層 < koubokusou\ ;
+許容誤差 < kyoyougosa\ ;
+表層性 < hyousousei\ ;
+水薬 < mizugusuri\ ;
+出席簿 < shussekibo\ ;
+親王妃 < shin''nouhi\ ;
+配給系 < haikyuukei\ ;
+変圧器 < hen''atsuki\ ;
+実体鏡 < jittaikyou\ ;
+優勝杯 < yuushouhai\ ;
+適不適 < tekifuteki\ ;
+不定期刑 < futeikikei\ ;
+社交的 < shakouteki\ ;
+配給米 < haikyuumai\ ;
+書記局 < shokikyoku\ ;
+贈収賄 < zoushuuwai\ ;
+凸凹紙 < totsuoushi\ ;
+裁判人 < saiban''nin\ ;
+今道心 < imadoushin\ ;
+明治維新 < meijiishin\ ;
+紹介者 < shoukaisha\ ;
+言語機能 < gengokinou\ ;
+保税倉庫 < hozeisouko\ ;
+気象学 < kishougaku\ ;
+相続人 < souzokunin\ ;
+被告席 < hikokuseki\ ;
+乳脂肪 < nyuushibou\ ;
+農牧地 < noubokuchi\ ;
+医療機関 < iryoukikan\ ;
+悪戯子 < itazurakko\ ;
+射的場 < shatekijou\ ;
+泉熱 < izuminetsu\ ;
+法学者 < hougakusha\ ;
+全国紙 < zenkokushi\ ;
+救難船 < kyuunansen\ ;
+金融債 < kin''yuusai\ ;
+石井聰互 < ishiisougo\ ;
+軍事封鎖 < gunjifuusa\ ;
+上載圧 < jousaiatsu\ ;
+口喧嘩 < kuchigenka\ ;
+成人病 < seijinbyou\ ;
+花水木 < hanamizuki\ ;
+造園術 < zouenjutsu\ ;
+乳腺炎 < nyuusen''en\ ;
+位階勲等 < ikaikuntou\ ;
+浴室 < yokushitsu\ ;
+海流瓶 < kairyuubin\ ;
+分光学 < bunkougaku\ ;
+民主的 < minshuteki\ ;
+精白糖 < seihakutou\ ;
+無機質 < mukishitsu\ ;
+愛娘 < manamusume\ ;
+通話料 < tsuuwaryou\ ;
+耐火煉瓦 < taikarenga\ ;
+改良品 < kairyouhin\ ;
+精白米 < seihakumai\ ;
+快削鋼 < kaisakukou\ ;
+日向水 < hinatamizu\ ;
+古狸 < furudanuki\ ;
+陪審員 < baishin''in\ ;
+古今無類 < kokonmurui\ ;
+師団長 < shidanchou\ ;
+組職体 < soshokutai\ ;
+果実酒 < kajitsushu\ ;
+婿養子 < mukoyoushi\ ;
+写真師 < shashinshi\ ;
+電波管理 < denpakanri\ ;
+河烏 < kawagarasu\ ;
+下検査 < shitakensa\ ;
+優勝戦 < yuushousen\ ;
+私宛 < watashiate\ ;
+連続体 < renzokutai\ ;
+天刑病 < tenkeibyou\ ;
+民事事件 < minjijiken\ ;
+半翅目 < hanshimoku\ ;
+茶番劇 < chabangeki\ ;
+自然保護 < shizenhogo\ ;
+写真屋 < shashin''ya\ ;
+画像処理 < gazoushori\ ;
+良導体 < ryoudoutai\ ;
+救世主 < kyuuseishu\ ;
+未着手 < michakushu\ ;
+作詩法 < sakushihou\ ;
+真魚鰹 < managatsuo\ ;
+出張員 < shutchouin\ ;
+人力車 < jinrikisha\ ;
+種種雑多 < shujuzatta\ ;
+必罰 < hitsubatsu\ ;
+祝日 < shukujitsu\ ;
+国際人 < kokusaijin\ ;
+測長機 < sokuchouki\ ;
+小主観 < shoushukan\ ;
+映画俳優 < eigahaiyuu\ ;
+実践的 < jissenteki\ ;
+連結器 < renketsuki\ ;
+耐久性 < taikyuusei\ ;
+杉並木 < suginamiki\ ;
+終了後 < shuuryougo\ ;
+天道様 < tentousama\ ;
+吊橋 < tsuribashi\ ;
+撮影隊 < satsueitai\ ;
+花菖蒲 < hanashoubu\ ;
+検眼鏡 < kengankyou\ ;
+形許 < katabakari\ ;
+酸化物 < sankabutsu\ ;
+波枕 < namimakura\ ;
+小作料 < kosakuryou\ ;
+庶民的 < shominteki\ ;
+輪舞曲 < rinbukyoku\ ;
+磁気録音 < jikirokuon\ ;
+不協和音 < fukyouwaon\ ;
+凍結器 < touketsuki\ ;
+夏蜜柑 < natsumikan\ ;
+本位記号 < hon''ikigou\ ;
+等方的 < touhouteki\ ;
+衛生管理 < eiseikanri\ ;
+岩清水 < iwashimizu\ ;
+立案者 < ritsuansha\ ;
+相互主義 < sougoshugi\ ;
+著述家 < chojutsuka\ ;
+脳梅毒 < noubaidoku\ ;
+軍用品 < gun''youhin\ ;
+応募資金 < ouboshikin\ ;
+僕仲間 < bokunakama\ ;
+難視聴 < nanshichou\ ;
+復古主義 < fukkoshugi\ ;
+徳義心 < tokugishin\ ;
+近海物 < kinkaimono\ ;
+東洋通 < touyoutsuu\ ;
+次亜硫酸 < jiaryuusan\ ;
+平安時代 < heianjidai\ ;
+鉄砲玉 < teppoudama\ ;
+水秤 < mizubakari\ ;
+流失 < ryuushitsu\ ;
+価格表 < kakakuhyou\ ;
+調停者 < chouteisha\ ;
+歴史観 < rekishikan\ ;
+建築費 < kenchikuhi\ ;
+鉋屑 < kan''nakuzu\ ;
+人情劇 < ninjougeki\ ;
+菱餅 < hishimochi\ ;
+多神教 < tashinkyou\ ;
+情報機器 < jouhoukiki\ ;
+前哨地 < zenshouchi\ ;
+三位一体 < sanmiittai\ ;
+政務次官 < seimujikan\ ;
+吉日 < kichinichi\ ;
+一度丈 < ichidodake\ ;
+薬指 < kusuriyubi\ ;
+連絡会 < renrakukai\ ;
+一般職 < ippanshoku\ ;
+雌雄異体 < shiyuuitai\ ;
+社会学 < shakaigaku\ ;
+偵察機 < teisatsuki\ ;
+寝台車 < shindaisha\ ;
+年代物 < nendaimono\ ;
+両替人 < ryougaenin\ ;
+各方 < onoonogata\ ;
+武断政治 < budanseiji\ ;
+合格者 < goukakusha\ ;
+金槌 < kanadzuchi\ ;
+専用線 < sen''yousen\ ;
+帯域幅 < taiikihaba\ ;
+初一念 < shoichinen\ ;
+紹介状 < shoukaijou\ ;
+消毒器 < shoudokuki\ ;
+旦那衆 < dan''nashuu\ ;
+堅信礼 < kenshinrei\ ;
+官公庁 < kankouchou\ ;
+聴聞僧 < choumonsou\ ;
+太平楽 < taiheiraku\ ;
+両天秤 < ryoutenbin\ ;
+孔雀石 < kujakuseki\ ;
+創作権 < sousakuken\ ;
+色事師 < irogotoshi\ ;
+酸化炭素 < sankatanso\ ;
+水彩画家 < suisaigaka\ ;
+降魔術 < koumajutsu\ ;
+少資本 < shoushihon\ ;
+資産株 < shisankabu\ ;
+基礎代謝 < kisotaisha\ ;
+恐怖心 < kyoufushin\ ;
+実験的 < jikkenteki\ ;
+使徒達 < shitotachi\ ;
+前頭 < maegashira\ ;
+安酒場 < yasusakaba\ ;
+聴聞会 < choumonkai\ ;
+育児食 < ikujishoku\ ;
+男便所 < otokobenjo\ ;
+首実検 < kubijikken\ ;
+細胞膜 < saiboumaku\ ;
+名人肌 < meijinhada\ ;
+小学校 < shougakkou\ ;
+一杯機嫌 < ippaikigen\ ;
+旧藩主 < kyuuhanshu\ ;
+民有林 < min''yuurin\ ;
+赤鉄鉱 < sekitekkou\ ;
+本草学 < honzougaku\ ;
+修正者 < shuuseisha\ ;
+風速計 < fuusokukei\ ;
+道路輸送 < douroyusou\ ;
+潜在的 < senzaiteki\ ;
+変拍子 < henbyoushi\ ;
+旧思想 < kyuushisou\ ;
+亜熱帯林 < anettairin\ ;
+雑木林 < zoubokurin\ ;
+戦闘的 < sentouteki\ ;
+青息吐息 < aoikitoiki\ ;
+終電車 < shuudensha\ ;
+背美鯨 < semikujira\ ;
+慇懃無礼 < inginburei\ ;
+穴杓子 < anajakushi\ ;
+一年中 < ichinenjuu\ ;
+鉄砲水 < teppoumizu\ ;
+全国民 < zenkokumin\ ;
+人口学 < jinkougaku\ ;
+流出 < ryuushutsu\ ;
+活力 < katsuryoku\ ;
+直滑降 < chokkakkou\ ;
+糞真面目 < kusomajime\ ;
+上申書 < joushinsho\ ;
+卵焼 < tamagoyaki\ ;
+針千本 < harisenbon\ ;
+自主規制 < jishukisei\ ;
+三業地 < sangyouchi\ ;
+並大抵 < namitaitei\ ;
+白雲石 < hakuunseki\ ;
+水煙 < mizukemuri\ ;
+欠席者 < kessekisha\ ;
+引当金 < hikiatekin\ ;
+装飾音 < soushokuon\ ;
+視聴者 < shichousha\ ;
+乳臭児 < nyuushuuji\ ;
+手沢本 < shutakubon\ ;
+警戒心 < keikaishin\ ;
+弥生時代 < yayoijidai\ ;
+中国語 < chuugokugo\ ;
+入手難 < nyuushunan\ ;
+電流計 < denryuukei\ ;
+道道 < michimichi\ ;
+予備会談 < yobikaidan\ ;
+君主国 < kunshukoku\ ;
+音楽学 < ongakugaku\ ;
+錯字症 < sakujishou\ ;
+等位構造 < touikouzou\ ;
+大盤石 < daibanjaku\ ;
+分子量 < bunshiryou\ ;
+一番茶 < ichibancha\ ;
+他流試合 < taryuujiai\ ;
+安定操作 < anteisousa\ ;
+無償行為 < mushoukoui\ ;
+遅刻者 < chikokusha\ ;
+再発足 < saihossoku\ ;
+対蹠的 < taishoteki\ ;
+夏期学校 < kakigakkou\ ;
+槍術家 < soujutsuka\ ;
+歌謡曲 < kayoukyoku\ ;
+活人画 < katsujinga\ ;
+二言目 < futakotome\ ;
+原子量 < genshiryou\ ;
+強腰 < tsuyogoshi\ ;
+大幅物 < oohabamono\ ;
+独奏会 < dokusoukai\ ;
+初霜 < hatsushimo\ ;
+宇宙医学 < uchuuigaku\ ;
+名誉除隊 < meiyojotai\ ;
+五臓六腑 < gozouroppu\ ;
+右左 < migihidari\ ;
+脱臭剤 < dasshuuzai\ ;
+快速船 < kaisokusen\ ;
+生殖器 < seishokuki\ ;
+車中談 < shachuudan\ ;
+鎮静剤 < chinseizai\ ;
+合併症 < gappeishou\ ;
+懇親会 < konshinkai\ ;
+着雪 < chakusetsu\ ;
+必滅 < hitsumetsu\ ;
+牽牛星 < kengyuusei\ ;
+執行委員 < shikkouiin\ ;
+里心 < satogokoro\ ;
+四面楚歌 < shimensoka\ ;
+茶柄杓 < chabishaku\ ;
+有神論 < yuushinron\ ;
+命中数 < meichuusuu\ ;
+方解石 < houkaiseki\ ;
+売掛金 < urikakekin\ ;
+超巨星 < choukyosei\ ;
+立体的 < rittaiteki\ ;
+白昼夢 < hakuchuumu\ ;
+新記録 < shinkiroku\ ;
+保釈金 < hoshakukin\ ;
+反粒子 < hanryuushi\ ;
+下足料 < gesokuryou\ ;
+注文書 < chuumonsho\ ;
+威風堂堂 < ifuudoudou\ ;
+化合物 < kagoubutsu\ ;
+屋形船 < yakatabune\ ;
+軍事会議 < gunjikaigi\ ;
+跛行景気 < hakoukeiki\ ;
+運動力 < undouryoku\ ;
+銘銘皿 < meimeizara\ ;
+黒曜岩 < kokuyougan\ ;
+原作者 < gensakusha\ ;
+兵站学 < heitangaku\ ;
+細密画 < saimitsuga\ ;
+饂飩粉病 < udonkobyou\ ;
+一番線 < ichibansen\ ;
+半人前 < han''ninmae\ ;
+劇場街 < gekijougai\ ;
+天下一品 < tenkaippin\ ;
+決議権 < ketsugiken\ ;
+基地閉鎖 < kichiheisa\ ;
+葵祭 < aoimatsuri\ ;
+一槽式 < issoushiki\ ;
+宅急便 < takkyuubin\ ;
+油壷 < aburatsubo\ ;
+老人病 < roujinbyou\ ;
+筆記用具 < hikkiyougu\ ;
+蒸気機関 < joukikikan\ ;
+合格点 < goukakuten\ ;
+刻足 < kizamiashi\ ;
+試供品 < shikyouhin\ ;
+中堅手 < chuukenshu\ ;
+葛饅頭 < kuzumanjuu\ ;
+接客婦 < sekkyakufu\ ;
+活字本 < katsujihon\ ;
+問題劇 < mondaigeki\ ;
+磁気抵抗 < jikiteikou\ ;
+聴講生 < choukousei\ ;
+水枕 < mizumakura\ ;
+賽銭箱 < saisenbako\ ;
+提唱者 < teishousha\ ;
+丁字定規 < teijijougi\ ;
+噴飯物 < funpanmono\ ;
+固定金利 < koteikinri\ ;
+分極化 < bunkyokuka\ ;
+管理局 < kanrikyoku\ ;
+角錐台 < kakusuidai\ ;
+福岡県 < fukuokaken\ ;
+独壇場 < dokudanjou\ ;
+仲間褒 < nakamabome\ ;
+随想録 < zuisouroku\ ;
+撮影者 < satsueisha\ ;
+如菩薩 < nyobosatsu\ ;
+命中弾 < meichuudan\ ;
+真分数 < shinbunsuu\ ;
+鰯雲 < iwashigumo\ ;
+雇用主 < koyounushi\ ;
+心柄 < kokorogara\ ;
+起動時間 < kidoujikan\ ;
+幻 < maboroshi\ ;
+屍 < shikabane\ ;
+孤 < minashigo\ ;
+猪 < inoshishi\ ;
+唇 < kuchibiru\ ;
+檣 < hobashira\ ;
+橘 < tachibana\ ;
+兵 < tsuwamono\ ;
+銀 < shirogane\ ;
+邪 < yokoshima\ ;
+屯田兵 < tondenhei\ ;
+敵部隊 < tekibutai\ ;
+抵当権 < teitouken\ ;
+村夫子 < sonpuushi\ ;
+自己欺瞞 < jikogiman\ ;
+慰安旅行 < ianryokou\ ;
+揚水車 < yousuisha\ ;
+救援軍 < kyuuengun\ ;
+育毛剤 < ikumouzai\ ;
+睦言 < mutsugoto\ ;
+収奪 < shuudatsu\ ;
+黒頭巾 < kurozukin\ ;
+解毒剤 < gedokuzai\ ;
+恐喝 < kyoukatsu\ ;
+高姿勢 < koushisei\ ;
+屋台店 < yataimise\ ;
+起磁力 < kijiryoku\ ;
+原生林 < genseirin\ ;
+歴史画 < rekishiga\ ;
+目頭 < megashira\ ;
+草餠 < kusamochi\ ;
+前半生 < zenhansei\ ;
+存在論 < sonzairon\ ;
+劇職 < gekishoku\ ;
+希望的 < kibouteki\ ;
+薬代 < kusuridai\ ;
+人工雷 < jinkourai\ ;
+専用機 < sen''youki\ ;
+強直 < kyouchoku\ ;
+度量衡 < doryoukou\ ;
+党大会 < toutaikai\ ;
+同乗者 < doujousha\ ;
+労動者 < roudousha\ ;
+単数型 < tansuukei\ ;
+従兄弟 < juukeitei\ ;
+齧歯類 < gesshirui\ ;
+各冊 < kakusatsu\ ;
+通説 < tsuusetsu\ ;
+冠木門 < kabukimon\ ;
+付属品 < fuzokuhin\ ;
+訪問者 < houmonsha\ ;
+河口 < kawaguchi\ ;
+逆賊 < gyakuzoku\ ;
+道草 < michikusa\ ;
+発頭人 < hottounin\ ;
+死神 < shinigami\ ;
+文選工 < bunsenkou\ ;
+適職 < tekishoku\ ;
+欠落 < ketsuraku\ ;
+巻鮨 < makizushi\ ;
+同居人 < doukyonin\ ;
+参詣人 < sankeinin\ ;
+役員会 < yakuinkai\ ;
+孤立語 < koritsugo\ ;
+生菓子 < namagashi\ ;
+電気器具 < denkikigu\ ;
+勝率 < shouritsu\ ;
+勘定書 < kanjousho\ ;
+開催地 < kaisaichi\ ;
+落後者 < rakugosha\ ;
+出軍 < shutsugun\ ;
+危機打者 < kikidasha\ ;
+半日 < han''nichi\ ;
+塩化水素 < enkasuiso\ ;
+厄年 < yakudoshi\ ;
+男子校 < danshikou\ ;
+剥脱 < hakudatsu\ ;
+一苦労 < hitokurou\ ;
+催涙弾 < sairuidan\ ;
+統治権 < touchiken\ ;
+徒桜 < adazakura\ ;
+千日 < sen''nichi\ ;
+禁転載 < kintensai\ ;
+人事異動 < jinjiidou\ ;
+港湾税 < kouwanzei\ ;
+不寛容 < fukan''you\ ;
+別行 < betsugyou\ ;
+不信仰 < fushinkou\ ;
+太公望 < taikoubou\ ;
+丸括弧 < marugakko\ ;
+外向性 < gaikousei\ ;
+落着 < rakuchaku\ ;
+不足前 < tarazumae\ ;
+二国間 < nikokukan\ ;
+亜鉛鉄板 < aenteppan\ ;
+会葬者 < kaisousha\ ;
+遮二無二 < shanimuni\ ;
+逆襲 < gyakushuu\ ;
+福寿草 < fukujusou\ ;
+毒殺 < dokusatsu\ ;
+確実 < kakujitsu\ ;
+法曹界 < housoukai\ ;
+重出 < juushutsu\ ;
+口先 < kuchisaki\ ;
+運輸省 < un''yushou\ ;
+口元 < kuchimoto\ ;
+式目 < shikimoku\ ;
+卓抜 < takubatsu\ ;
+乗車駅 < joushaeki\ ;
+朝鮮語 < chousengo\ ;
+革命家 < kakumeika\ ;
+機密費 < kimitsuhi\ ;
+人造米 < jinzoumai\ ;
+洋品店 < youhinten\ ;
+個人的 < kojinteki\ ;
+一元化 < ichigenka\ ;
+伝道船 < dendousen\ ;
+没入 < botsunyuu\ ;
+圧迫感 < appakukan\ ;
+予防策 < yobousaku\ ;
+若隠居 < wakainkyo\ ;
+定住者 < teijuusha\ ;
+右下 < migishita\ ;
+水溶性 < suiyousei\ ;
+強烈 < kyouretsu\ ;
+遺言書 < yuigonsho\ ;
+代燃車 < dainensha\ ;
+変成岩 < henseigan\ ;
+一定量 < itteiryou\ ;
+苦灰石 < kukaiseki\ ;
+左心房 < sashinbou\ ;
+輪番制 < rinbansei\ ;
+請願者 < seigansha\ ;
+逸脱 < itsudatsu\ ;
+白黒 < shirokuro\ ;
+直達 < jikitatsu\ ;
+圧迫性 < appakusei\ ;
+恋仇 < koigataki\ ;
+羅生門 < rashoumon\ ;
+直進 < chokushin\ ;
+個人用 < kojin''you\ ;
+享受者 < kyoujusha\ ;
+御足労 < gosokurou\ ;
+直通 < chokutsuu\ ;
+剽窃 < hyousetsu\ ;
+爬虫類 < hachuurui\ ;
+迷信家 < meishinka\ ;
+割箸 < waribashi\ ;
+書簡文 < shokanbun\ ;
+許可証 < kyokashou\ ;
+民主党 < minshutou\ ;
+免黜 < menchutsu\ ;
+金仏 < kanabutsu\ ;
+白鷺 < shirasagi\ ;
+醵出 < kyoshutsu\ ;
+直轄 < chokkatsu\ ;
+太刀先 < tachisaki\ ;
+占師 < uranaishi\ ;
+伝道者 < dendousha\ ;
+監視船 < kanshisen\ ;
+縄暖簾 < nawanoren\ ;
+綿製品 < menseihin\ ;
+皮靴 < kawagutsu\ ;
+出走馬 < shussouba\ ;
+急切 < kyuusetsu\ ;
+二階建 < nikaidate\ ;
+修正案 < shuuseian\ ;
+宣伝戦 < sendensen\ ;
+酉年 < toridoshi\ ;
+請負業 < ukeoigyou\ ;
+類人猿 < ruijin''en\ ;
+合理的 < gouriteki\ ;
+勝負師 < shoubushi\ ;
+糸蚯蚓 < itomimizu\ ;
+延長戦 < enchousen\ ;
+土建業 < dokengyou\ ;
+贈呈品 < zouteihin\ ;
+金鉱地 < kinkouchi\ ;
+真裸 < mappadaka\ ;
+昼御飯 < hirugohan\ ;
+蒙古襞 < moukohida\ ;
+半月刊 < hangekkan\ ;
+出血 < shukketsu\ ;
+白鱚 < shirogisu\ ;
+道筋 < michisuji\ ;
+県民税 < kenminzei\ ;
+扇動者 < sendousha\ ;
+集会所 < shuukaijo\ ;
+木工場 < mokkoujou\ ;
+洒落者 < sharemono\ ;
+戦闘帽 < sentoubou\ ;
+夕化粧 < yuugeshou\ ;
+道端 < michibata\ ;
+可動堰 < kadouzeki\ ;
+大年増 < ootoshima\ ;
+法理学 < hourigaku\ ;
+黄頷蛇 < aodaishou\ ;
+透明体 < toumeitai\ ;
+故障車 < koshousha\ ;
+監視者 < kanshisha\ ;
+卸売 < oroshiuri\ ;
+忘失 < boushitsu\ ;
+蔭口 < kageguchi\ ;
+卵大 < tamagodai\ ;
+弁慶草 < benkeisou\ ;
+初花 < hatsuhana\ ;
+道程 < michinori\ ;
+存在者 < sonzaisha\ ;
+全国区 < zenkokuku\ ;
+白髪 < hakuhatsu\ ;
+天皇旗 < ten''nouki\ ;
+官僚化 < kanryouka\ ;
+既得権 < kitokuken\ ;
+光線銃 < kousenjuu\ ;
+磔刑 < haritsuke\ ;
+仮面劇 < kamengeki\ ;
+機械的 < kikaiteki\ ;
+彦星 < hikoboshi\ ;
+遺伝地図 < idenchizu\ ;
+辛辣 < shinratsu\ ;
+正物 < shoubutsu\ ;
+品々 < shinajina\ ;
+熨斗紙 < noshigami\ ;
+写植機 < shashokki\ ;
+出藍 < shutsuran\ ;
+本体論 < hontairon\ ;
+発声法 < hasseihou\ ;
+給湯器 < kyuutouki\ ;
+年若 < toshiwaka\ ;
+遊興費 < yuukyouhi\ ;
+平安京 < heiankyou\ ;
+逆臣 < gyakushin\ ;
+生欠伸 < namaakubi\ ;
+送付先 < soufusaki\ ;
+外野席 < gaiyaseki\ ;
+平芝 < hirashiba\ ;
+横面 < yokotsura\ ;
+立体戦 < rittaisen\ ;
+直読 < chokudoku\ ;
+監視網 < kanshimou\ ;
+月水金 < gessuikin\ ;
+正投手 < seitoushu\ ;
+凝血 < gyouketsu\ ;
+遠赤外 < ensekigai\ ;
+指示薬 < shijiyaku\ ;
+逃腰 < nigegoshi\ ;
+心太 < tokoroten\ ;
+直訳 < chokuyaku\ ;
+初耳 < hatsumimi\ ;
+信号機 < shingouki\ ;
+井戸車 < idoguruma\ ;
+有名税 < yuumeizei\ ;
+立体感 < rittaikan\ ;
+優先権 < yuusenken\ ;
+実験場 < jikkenjou\ ;
+牡丹餅 < botamochi\ ;
+経団連 < keidanren\ ;
+不法行為 < fuhoukoui\ ;
+断頭台 < dantoudai\ ;
+予約者 < yoyakusha\ ;
+終夜灯 < shuuyatou\ ;
+暗黒面 < ankokumen\ ;
+宣伝屋 < senden''ya\ ;
+代替品 < daitaihin\ ;
+炭酸塩 < tansan''en\ ;
+下宿屋 < geshukuya\ ;
+補給線 < hokyuusen\ ;
+名人戦 < meijinsen\ ;
+一般席 < ippanseki\ ;
+遭難者 < sounansha\ ;
+白雪 < hakusetsu\ ;
+出色 < shusshoku\ ;
+原子砲 < genshihou\ ;
+倒置法 < touchihou\ ;
+廃疾 < haishitsu\ ;
+照準器 < shoujunki\ ;
+原住民 < genjuumin\ ;
+聖公会 < seikoukai\ ;
+劇烈 < gekiretsu\ ;
+原産地 < gensanchi\ ;
+革命児 < kakumeiji\ ;
+速筆 < sokuhitsu\ ;
+優駿馬 < yuushunba\ ;
+主情論 < shujouron\ ;
+骨董品 < kottouhin\ ;
+管財人 < kanzainin\ ;
+演劇界 < engekikai\ ;
+銀閣寺 < ginkakuji\ ;
+風鳥座 < fuuchouza\ ;
+挟瞼器 < kyoukenki\ ;
+教授法 < kyoujuhou\ ;
+電気釜 < denkigama\ ;
+電気量 < denkiryou\ ;
+水口 < mizuguchi\ ;
+死体遺棄 < shitaiiki\ ;
+点光源 < tenkougen\ ;
+日刊紙 < nikkanshi\ ;
+間狂言 < aikyougen\ ;
+殺戮 < satsuriku\ ;
+老人性 < roujinsei\ ;
+後室 < koushitsu\ ;
+計数管 < keisuukan\ ;
+金利鞘 < kinrishou\ ;
+蓄妾 < chikushou\ ;
+仮政府 < kariseifu\ ;
+現代版 < gendaiban\ ;
+低姿勢 < teishisei\ ;
+急降下 < kyuukouka\ ;
+童話劇 < douwageki\ ;
+実験台 < jikkendai\ ;
+水成岩 < suiseigan\ ;
+御寮人 < goryounin\ ;
+自身番 < jishinban\ ;
+砂時計 < sunadokei\ ;
+内野安打 < naiyaanda\ ;
+血達磨 < chidaruma\ ;
+養鶏場 < youkeijou\ ;
+進発 < shinpatsu\ ;
+脱走兵 < dassouhei\ ;
+茶袋 < chabukuro\ ;
+荘園制 < shouensei\ ;
+初空 < hatsuzora\ ;
+前半戦 < zenpansen\ ;
+訓詁学 < kunkogaku\ ;
+車井戸 < kurumaido\ ;
+外務省 < gaimushou\ ;
+新時代 < shinjidai\ ;
+渉外部 < shougaibu\ ;
+横道 < yokomichi\ ;
+感光紙 < kankoushi\ ;
+撮影機 < satsueiki\ ;
+一生涯 < isshougai\ ;
+水源地 < suigenchi\ ;
+整流器 < seiryuuki\ ;
+平穏無事 < heionbuji\ ;
+落札 < rakusatsu\ ;
+刮目 < katsumoku\ ;
+白酒 < shirozake\ ;
+銀行界 < ginkoukai\ ;
+現住所 < genjuusho\ ;
+勘所 < kandokoro\ ;
+前口上 < maekoujou\ ;
+地対空 < chitaikuu\ ;
+追突 < tsuitotsu\ ;
+第一集 < daiisshuu\ ;
+式服 < shikifuku\ ;
+天皇家 < ten''nouke\ ;
+協力 < kyouryoku\ ;
+給油船 < kyuuyusen\ ;
+代書人 < daishonin\ ;
+創始者 < soushisha\ ;
+価格帯 < kakakutai\ ;
+場所柄 < bashogara\ ;
+信号所 < shingoujo\ ;
+明明後日 < shiasatte\ ;
+石持 < ishimochi\ ;
+悪循環 < akujunkan\ ;
+落日 < rakujitsu\ ;
+一気呵成 < ikkikasei\ ;
+実験値 < jikkenchi\ ;
+逸物 < ichimotsu\ ;
+不風流 < bufuuryuu\ ;
+宣伝員 < senden''in\ ;
+除電針 < jodenbari\ ;
+衛生学 < eiseigaku\ ;
+直腸 < chokuchou\ ;
+武器貸与 < bukitaiyo\ ;
+発見者 < hakkensha\ ;
+法王庁 < hououchou\ ;
+歴日 < rekijitsu\ ;
+一番手 < ichibante\ ;
+一夫多妻 < ipputasai\ ;
+限界点 < genkaiten\ ;
+板目紙 < itamegami\ ;
+愁嘆場 < shuutanba\ ;
+進物 < shinmotsu\ ;
+花相撲 < hanazumou\ ;
+歯科学 < shikagaku\ ;
+仕事着 < shigotogi\ ;
+光文社 < koubunsha\ ;
+高燥地 < kousouchi\ ;
+農地法 < nouchihou\ ;
+葛根湯 < kakkontou\ ;
+出立 < shuttatsu\ ;
+真筆 < shinpitsu\ ;
+正月 < shougatsu\ ;
+凝縮 < gyoushuku\ ;
+光電管 < koudenkan\ ;
+身分柄 < mibungara\ ;
+観覧券 < kanranken\ ;
+禁制品 < kinseihin\ ;
+着目 < chakumoku\ ;
+当籤者 < tousensha\ ;
+進化論 < shinkaron\ ;
+再検討 < saikentou\ ;
+六識 < rokushiki\ ;
+半夏生 < hangeshou\ ;
+御飯時 < gohandoki\ ;
+愛弟子 < manadeshi\ ;
+手引書 < tebikisho\ ;
+揮発油 < kihatsuyu\ ;
+翰林院 < kanrin''in\ ;
+整合性 < seigousei\ ;
+料理番 < ryouriban\ ;
+十二宮 < juunikyuu\ ;
+生産財 < seisanzai\ ;
+一代記 < ichidaiki\ ;
+元始祭 < genshisai\ ;
+亡命者 < boumeisha\ ;
+有税品 < yuuzeihin\ ;
+眼疾 < ganshitsu\ ;
+大使館 < taishikan\ ;
+限定詞 < genteishi\ ;
+歌枕 < utamakura\ ;
+Ｘ線 < ekkususen\ ;
+無駄飯 < mudameshi\ ;
+総決算 < soukessan\ ;
+歴史家 < rekishika\ ;
+海水帽 < kaisuibou\ ;
+控除額 < koujogaku\ ;
+知悉 < chishitsu\ ;
+家政学 < kaseigaku\ ;
+内弟子 < uchideshi\ ;
+多忙中 < tabouchuu\ ;
+別物 < betsumono\ ;
+原寸大 < gensundai\ ;
+直結 < chokketsu\ ;
+機能的 < kinouteki\ ;
+女性的 < joseiteki\ ;
+滑翔機 < kasshouki\ ;
+年始状 < nenshijou\ ;
+子煩悩 < kobon''nou\ ;
+指南車 < shinansha\ ;
+凝立 < gyouritsu\ ;
+常節 < tokobushi\ ;
+写生文 < shaseibun\ ;
+標識 < hyoushiki\ ;
+内遊星 < naiyuusei\ ;
+後出 < koushutsu\ ;
+初物 < hatsumono\ ;
+苦行者 < kugyousha\ ;
+罪悪感 < zaiakukan\ ;
+無症状 < mushoujou\ ;
+花道 < hanamichi\ ;
+角砂糖 < kakuzatou\ ;
+生返事 < namahenji\ ;
+出発 < shuppatsu\ ;
+単純性 < tanjunsei\ ;
+北口 < kitaguchi\ ;
+大僧正 < daisoujou\ ;
+年玉 < toshidama\ ;
+一身上 < isshinjou\ ;
+修道尼 < shuudouni\ ;
+軍放送 < gunhousou\ ;
+登記料 < toukiryou\ ;
+英国人 < eikokujin\ ;
+偽証者 < gishousha\ ;
+道路橋 < dourokyou\ ;
+橙色 < daidaiiro\ ;
+矩差 < kanezashi\ ;
+千万 < chiyorozu\ ;
+撮影所 < satsueijo\ ;
+形態論 < keitairon\ ;
+偽証罪 < gishouzai\ ;
+首謀者 < shubousha\ ;
+複号化 < fukugouka\ ;
+弓弦 < yumidzuru\ ;
+始祖鳥 < shisochou\ ;
+特許法 < tokkyohou\ ;
+養毛剤 < youmouzai\ ;
+浮気者 < uwakimono\ ;
+盲穴 < mekuraana\ ;
+危機突破 < kikitoppa\ ;
+暗黒街 < ankokugai\ ;
+大元帥 < daigensui\ ;
+免許状 < menkyojou\ ;
+草箒 < kusabouki\ ;
+出現 < shutsugen\ ;
+夜光虫 < yakouchuu\ ;
+奇天烈 < kiteretsu\ ;
+匙加減 < sajikagen\ ;
+凝着 < gyouchaku\ ;
+劣弱 < retsujaku\ ;
+投手板 < toushuban\ ;
+従業員 < juugyouin\ ;
+批評眼 < hihyougan\ ;
+修道女 < shuudoujo\ ;
+圧痛点 < attsuuten\ ;
+海兵隊 < kaiheitai\ ;
+考課表 < koukahyou\ ;
+麦芽糖 < bakugatou\ ;
+真率 < shinsotsu\ ;
+苦虫 < nigamushi\ ;
+橋脚 < kyoukyaku\ ;
+左腕 < hidariude\ ;
+文芸欄 < bungeiran\ ;
+夜盲症 < yamoushou\ ;
+投稿者 < toukousha\ ;
+無差別 < musabetsu\ ;
+空挺隊 < kuuteitai\ ;
+微調整 < bichousei\ ;
+口忠実 < kuchimame\ ;
+花模様 < hanamoyou\ ;
+有名校 < yuumeikou\ ;
+特許権 < tokkyoken\ ;
+高鼾 < takaibiki\ ;
+構成子 < kouseishi\ ;
+真物 < shinbutsu\ ;
+弔客 < choukyaku\ ;
+請願書 < seigansho\ ;
+拡声機 < kakuseiki\ ;
+医療機器 < iryoukiki\ ;
+百薬 < hyakuyaku\ ;
+討論会 < touronkai\ ;
+茶筒 < chadzutsu\ ;
+弟娘 < otomusume\ ;
+省略 < shouryaku\ ;
+拘置所 < kouchisho\ ;
+交渉員 < koushouin\ ;
+労役場 < rouekijou\ ;
+長尾鶏 < nagaodori\ ;
+水銀灯 < suigintou\ ;
+主成分 < shuseibun\ ;
+修辞法 < shuujihou\ ;
+卓話会 < takuwakai\ ;
+逆流 < gyakuryuu\ ;
+歌心 < utagokoro\ ;
+手工芸 < shukougei\ ;
+料理法 < ryourihou\ ;
+承認図 < shouninzu\ ;
+本島人 < hontoujin\ ;
+恒常性 < koujousei\ ;
+週末 < shuumatsu\ ;
+着氷 < chakuhyou\ ;
+白菊 < shiragiku\ ;
+年波 < toshinami\ ;
+組織化 < soshikika\ ;
+御新造 < goshinzou\ ;
+正室 < seishitsu\ ;
+乾電池 < kandenchi\ ;
+自作農 < jisakunou\ ;
+菊月 < kikudzuki\ ;
+制空権 < seikuuken\ ;
+花椰菜 < hanayasai\ ;
+競技場 < kyougijou\ ;
+旧制度 < kyuuseido\ ;
+共和政 < kyouwasei\ ;
+天下無比 < tenkamuhi\ ;
+尊王家 < son''nouka\ ;
+年毎 < toshigoto\ ;
+週日 < shuujitsu\ ;
+遅進児 < chishinji\ ;
+花街 < hanamachi\ ;
+川縁 < kawabuchi\ ;
+形代 < katashiro\ ;
+栄養学 < eiyougaku\ ;
+掩護部隊 < engobutai\ ;
+白色 < hakushoku\ ;
+不介入 < fukainyuu\ ;
+投手戦 < toushusen\ ;
+犬張子 < inuhariko\ ;
+送電線 < soudensen\ ;
+卵黄嚢 < ran''ounou\ ;
+別棟 < betsumune\ ;
+気圧計 < kiatsukei\ ;
+駆虫剤 < kuchuuzai\ ;
+犬追物 < inuoumono\ ;
+三斑鶉 < mifuuzura\ ;
+冊立 < sakuritsu\ ;
+馬鹿野郎 < bakayarou\ ;
+島風 < shimakaze\ ;
+拍子木 < hyoushigi\ ;
+多毛作 < tamousaku\ ;
+手荷物 < tenimotsu\ ;
+弱卒 < jakusotsu\ ;
+几帳面 < kichoumen\ ;
+模範的 < mohanteki\ ;
+僕達 < bokutachi\ ;
+髭面 < higedzura\ ;
+筆記帳 < hikkichou\ ;
+張力 < chouryoku\ ;
+軟質 < nanshitsu\ ;
+長距離 < choukyori\ ;
+美少年 < bishounen\ ;
+乾燥材 < kansouzai\ ;
+生産者 < seisansha\ ;
+不服従 < fufukujuu\ ;
+本格派 < honkakuha\ ;
+菱形 < hishigata\ ;
+原子戦 < genshisen\ ;
+不変量 < fuhenryou\ ;
+顔馴染 < kaonajimi\ ;
+進捗 < shinchoku\ ;
+落葉樹 < rakuyouju\ ;
+三頭筋 < santoukin\ ;
+僻説 < hekisetsu\ ;
+口語英語 < kougoeigo\ ;
+代言者 < daigensha\ ;
+茶畑 < chabatake\ ;
+揮発度 < kihatsudo\ ;
+大自然 < daishizen\ ;
+不時着 < fujichaku\ ;
+統制線 < touseisen\ ;
+横綱 < yokodzuna\ ;
+兎耳 < usagimimi\ ;
+光電池 < koudenchi\ ;
+花供養 < hanakuyou\ ;
+難問題 < nanmondai\ ;
+継電鍵 < keidenken\ ;
+機械学 < kikaigaku\ ;
+島陰 < shimakage\ ;
+婦人病 < fujinbyou\ ;
+同好者 < doukousha\ ;
+偽妊娠 < gininshin\ ;
+矢印 < yajirushi\ ;
+着服 < chakufuku\ ;
+火縄銃 < hinawajuu\ ;
+建坪 < tatetsubo\ ;
+副尺 < fukushaku\ ;
+初春 < hatsuharu\ ;
+前勘定 < maekanjou\ ;
+既発表 < kihappyou\ ;
+共立 < kyouritsu\ ;
+花菱 < hanabishi\ ;
+甲状腺 < koujousen\ ;
+稽古事 < keikogoto\ ;
+成文法 < seibunhou\ ;
+延坪 < nobetsubo\ ;
+規格品 < kikakuhin\ ;
+仕事日 < shigotobi\ ;
+分与税 < bun''yozei\ ;
+白無垢 < shiromuku\ ;
+二等賞 < nitoushou\ ;
+極量 < kyokuryou\ ;
+定休日 < teikyuubi\ ;
+良識 < ryoushiki\ ;
+弟分 < otoutobun\ ;
+白灯油 < hakutouyu\ ;
+色調 < shikichou\ ;
+鉄火味噌 < tekkamiso\ ;
+運転席 < untenseki\ ;
+公民館 < kouminkan\ ;
+篤農家 < tokunouka\ ;
+茉莉花 < matsurika\ ;
+人工港 < jinkoukou\ ;
+鳶口 < tobiguchi\ ;
+高陵土 < kouryoudo\ ;
+感光板 < kankouban\ ;
+八福 < hachifuku\ ;
+色覚 < shikikaku\ ;
+三乗根 < sanjoukon\ ;
+石仏 < sekibutsu\ ;
+男風呂 < otokoburo\ ;
+女郎花 < ominaeshi\ ;
+滞納者 < tainousha\ ;
+歳出 < saishutsu\ ;
+伝道師 < dendoushi\ ;
+応召兵 < oushouhei\ ;
+複十字 < fukujuuji\ ;
+直流 < chokuryuu\ ;
+阿弥陀経 < amidakyou\ ;
+芍薬 < shakuyaku\ ;
+再構成 < saikousei\ ;
+有段者 < yuudansha\ ;
+単衣物 < hitoemono\ ;
+規格判 < kikakuban\ ;
+第三者 < daisansha\ ;
+出札 < shussatsu\ ;
+割増 < warimashi\ ;
+体操場 < taisoujou\ ;
+主流派 < shuryuuha\ ;
+芝草 < shibakusa\ ;
+広報官 < kouhoukan\ ;
+真東 < mahigashi\ ;
+人工池 < jinkouike\ ;
+口蓋垂 < kougaisui\ ;
+金剛砂 < kongousha\ ;
+十三夜 < juusan''ya\ ;
+大学院 < daigakuin\ ;
+乗用車 < jouyousha\ ;
+不明確 < fumeikaku\ ;
+阿弥陀籤 < amidakuji\ ;
+蜃気楼 < shinkirou\ ;
+複葉機 < fukuyouki\ ;
+二等親 < nitoushin\ ;
+草競馬 < kusakeiba\ ;
+樸直 < bokuchoku\ ;
+隠元豆 < ingenmame\ ;
+幕末 < bakumatsu\ ;
+累乗根 < ruijoukon\ ;
+椎骨 < tsuikotsu\ ;
+東洋人 < touyoujin\ ;
+競技会 < kyougikai\ ;
+勧誘員 < kan''yuuin\ ;
+老婆心 < roubashin\ ;
+債権者 < saikensha\ ;
+第一義 < daiichigi\ ;
+正出 < seishutsu\ ;
+圧倒的 < attouteki\ ;
+不明瞭 < fumeiryou\ ;
+放電管 < houdenkan\ ;
+凶日 < kyoujitsu\ ;
+前身頃 < maemigoro\ ;
+少数派 < shousuuha\ ;
+特捜部 < tokusoubu\ ;
+調馬師 < choubashi\ ;
+遊失 < yuushitsu\ ;
+理論的 < rironteki\ ;
+飲水量 < insuiryou\ ;
+調理法 < chourihou\ ;
+累犯者 < ruihansha\ ;
+車蝦 < kurumaebi\ ;
+好都合 < koutsugou\ ;
+安全域 < anzen''iki\ ;
+虚栄心 < kyoeishin\ ;
+定期的 < teikiteki\ ;
+初役 < hatsuyaku\ ;
+認可証 < ninkashou\ ;
+信心家 < shinjinka\ ;
+強姦罪 < goukanzai\ ;
+教授会 < kyoujukai\ ;
+連合軍 < rengougun\ ;
+選出 < senshutsu\ ;
+迫持 < serimochi\ ;
+重合体 < juugoutai\ ;
+加虐愛 < kagyakuai\ ;
+河川敷 < kasenjiki\ ;
+軍隊葬 < guntaisou\ ;
+数年間 < suunenkan\ ;
+軽気球 < keikikyuu\ ;
+青浮草 < aoukikusa\ ;
+存在意義 < sonzaiigi\ ;
+安楽死 < anrakushi\ ;
+金平糖 < konpeitou\ ;
+定住地 < teijuuchi\ ;
+金輪際 < konrinzai\ ;
+料理店 < ryouriten\ ;
+貿易風 < bouekifuu\ ;
+人工林 < jinkourin\ ;
+海運業 < kaiungyou\ ;
+衣食住 < ishokujuu\ ;
+着床 < chakushou\ ;
+寝具類 < shingurui\ ;
+年弱 < toshiyowa\ ;
+山鶉 < yamauzura\ ;
+東南東 < tounantou\ ;
+Ｗ杯 < daburuhai\ ;
+甲板員 < kouhan''in\ ;
+現代史 < gendaishi\ ;
+根菜類 < konsairui\ ;
+着席 < chakuseki\ ;
+定例会 < teireikai\ ;
+決闘状 < kettoujou\ ;
+蚕卵紙 < sanranshi\ ;
+外蒙古 < sotomouko\ ;
+辻札 < tsujifuda\ ;
+車両化 < sharyouka\ ;
+適切 < tekisetsu\ ;
+又従兄弟 < mataitoko\ ;
+発病 < hatsubyou\ ;
+感光性 < kankousei\ ;
+第一章 < daiisshou\ ;
+病識 < byoushiki\ ;
+創出 < soushutsu\ ;
+別室 < besshitsu\ ;
+臨界点 < rinkaiten\ ;
+商売気 < shoubaigi\ ;
+国憲法 < kokkenpou\ ;
+両陛下 < ryouheika\ ;
+限定版 < genteiban\ ;
+前車輪 < zensharin\ ;
+年嵩 < toshikasa\ ;
+羽毛布団 < umoufuton\ ;
+雄牛糞 < oushikuso\ ;
+不妊症 < funinshou\ ;
+変流器 < henryuuki\ ;
+初孫 < hatsumago\ ;
+出御 < shutsugyo\ ;
+針供養 < harikuyou\ ;
+微視的 < bishiteki\ ;
+監視塔 < kanshitou\ ;
+白玉 < shiratama\ ;
+占拠地 < senkyochi\ ;
+指向性 < shikousei\ ;
+一人用 < hitoriyou\ ;
+調馬場 < choubajou\ ;
+再輸入 < saiyunyuu\ ;
+綿津見 < watatsumi\ ;
+優良児 < yuuryouji\ ;
+浮動票 < fudouhyou\ ;
+先天性 < sentensei\ ;
+形成層 < keiseisou\ ;
+直撃 < chokugeki\ ;
+師範代 < shihandai\ ;
+年寄 < toshiyori\ ;
+休止符 < kyuushifu\ ;
+榎茸 < enokitake\ ;
+不面目 < fumenmoku\ ;
+船虫 < funamushi\ ;
+小糠雨 < konukaame\ ;
+本予算 < hon''yosan\ ;
+指南番 < shinanban\ ;
+自由業 < jiyuugyou\ ;
+禁輸品 < kin''yuhin\ ;
+司会者 < shikaisha\ ;
+投稿欄 < toukouran\ ;
+白熱 < hakunetsu\ ;
+極薄 < kyokuhaku\ ;
+白熊 < shirokuma\ ;
+挿話的 < souwateki\ ;
+割付 < waritsuke\ ;
+初夢 < hatsuyume\ ;
+道中記 < douchuuki\ ;
+半塩水 < han''ensui\ ;
+排他的 < haitateki\ ;
+大腸炎 < daichouen\ ;
+分室 < bunshitsu\ ;
+尼法師 < amahoushi\ ;
+定置網 < teichiami\ ;
+庶出 < shoshutsu\ ;
+入滅 < nyuumetsu\ ;
+芸能界 < geinoukai\ ;
+半濁音 < handakuon\ ;
+配管工 < haikankou\ ;
+割下 < warishita\ ;
+現代人 < gendaijin\ ;
+農漁民 < nougyomin\ ;
+市松 < ichimatsu\ ;
+女性学 < joseigaku\ ;
+乾燥地 < kansouchi\ ;
+分類法 < bunruihou\ ;
+利己主義 < rikoshugi\ ;
+石膏像 < sekkouzou\ ;
+影武者 < kagemusha\ ;
+活版本 < kappanbon\ ;
+仕事場 < shigotoba\ ;
+婦人服 < fujinfuku\ ;
+寝心地 < negokochi\ ;
+優男 < yasaotoko\ ;
+絵巻物 < emakimono\ ;
+不料簡 < furyouken\ ;
+化石層 < kasekisou\ ;
+晩餐会 < bansankai\ ;
+仕放題 < shihoudai\ ;
+案内状 < an''naijou\ ;
+多元的 < tagenteki\ ;
+制海権 < seikaiken\ ;
+交配種 < kouhaishu\ ;
+轢殺 < rekisatsu\ ;
+在住者 < zaijuusha\ ;
+成熟期 < seijukuki\ ;
+真実 < shinjitsu\ ;
+共和党 < kyouwatou\ ;
+平方根 < heihoukon\ ;
+諜報員 < chouhouin\ ;
+興奮剤 < koufunzai\ ;
+白滝 < shirataki\ ;
+先見者 < senkensha\ ;
+航空券 < koukuuken\ ;
+速口 < hayakuchi\ ;
+光電子 < koudenshi\ ;
+進入 < shin''nyuu\ ;
+儲物 < moukemono\ ;
+腰高 < koshidaka\ ;
+売国奴 < baikokudo\ ;
+繁分数 < hanbunsuu\ ;
+性行動 < seikoudou\ ;
+銀行券 < ginkouken\ ;
+橋桁 < hashigeta\ ;
+万万歳 < banbanzai\ ;
+骨質 < kosshitsu\ ;
+停船場 < teisenjou\ ;
+腰骨 < koshibone\ ;
+嘆願書 < tangansho\ ;
+再生産 < saiseisan\ ;
+地対地 < chitaichi\ ;
+修飾 < shuushoku\ ;
+文体論 < buntairon\ ;
+調査団 < chousadan\ ;
+白浪 < shiranami\ ;
+単行本 < tankoubon\ ;
+小夜曲 < sayokyoku\ ;
+出世間 < shusseken\ ;
+白浜 < shirahama\ ;
+艶種 < tsuyadane\ ;
+速力 < sokuryoku\ ;
+単行書 < tankousho\ ;
+一時間 < ichijikan\ ;
+温泉郷 < onsenkyou\ ;
+辻店 < tsujimise\ ;
+有名人 < yuumeijin\ ;
+後甲板 < koukanpan\ ;
+営利主義 < eirishugi\ ;
+弱体化 < jakutaika\ ;
+経済面 < keizaimen\ ;
+修験道 < shugendou\ ;
+茶所 < chadokoro\ ;
+往生際 < oujougiwa\ ;
+広口 < hirokuchi\ ;
+尺骨 < shakkotsu\ ;
+出塁 < shutsurui\ ;
+残存者 < zanzonsha\ ;
+航空便 < koukuubin\ ;
+核武装 < kakubusou\ ;
+目庇 < mabisashi\ ;
+白水 < shiromizu\ ;
+色神 < shikishin\ ;
+埋蔵金 < maizoukin\ ;
+孤立化 < koritsuka\ ;
+聖家族 < seikazoku\ ;
+泥炭地 < deitanchi\ ;
+外輪船 < gairinsen\ ;
+複利法 < fukurihou\ ;
+入植 < nyuushoku\ ;
+蒸留器 < jouryuuki\ ;
+鑑定書 < kanteisho\ ;
+製氷機 < seihyouki\ ;
+直属 < chokuzoku\ ;
+消費財 < shouhizai\ ;
+著作家 < chosakuka\ ;
+市販品 < shihanhin\ ;
+巻頭言 < kantougen\ ;
+凡失 < bonshitsu\ ;
+調理師 < chourishi\ ;
+六月 < rokugatsu\ ;
+真桑瓜 < makuwauri\ ;
+随従者 < zuijuusha\ ;
+一寸先 < issunsaki\ ;
+文学部 < bungakubu\ ;
+予約制 < yoyakusei\ ;
+線速度 < sensokudo\ ;
+平面形 < heimenkei\ ;
+複比例 < fukuhirei\ ;
+散水車 < sansuisha\ ;
+一時金 < ichijikin\ ;
+前年度 < zen''nendo\ ;
+無声映画 < museieiga\ ;
+入札 < nyuusatsu\ ;
+発行者 < hakkousha\ ;
+停留所 < teiryuujo\ ;
+宮城県 < miyagiken\ ;
+前前回 < zenzenkai\ ;
+燗徳利 < kandokuri\ ;
+死刑場 < shikeijou\ ;
+山道 < yamamichi\ ;
+巻子本 < kanshihon\ ;
+退出 < taishutsu\ ;
+楽節 < gakusetsu\ ;
+常夏 < tokonatsu\ ;
+町議会 < chougikai\ ;
+申達 < shintatsu\ ;
+人生観 < jinseikan\ ;
+真珠貝 < shinjugai\ ;
+若松 < wakamatsu\ ;
+局長 < kyokuchou\ ;
+鬼瓦 < onigawara\ ;
+帝室 < teishitsu\ ;
+京都市 < kyoutoshi\ ;
+雨台風 < ametaifuu\ ;
+自由形 < jiyuugata\ ;
+免許制 < menkyosei\ ;
+雑報欄 < zappouran\ ;
+愛党心 < aitoushin\ ;
+防止法 < boushihou\ ;
+補助漢字 < hojokanji\ ;
+床下 < yukashita\ ;
+選挙法 < senkyohou\ ;
+和英辞書 < waeijisho\ ;
+着信 < chakushin\ ;
+天井裏 < tenjouura\ ;
+半陰影 < han''in''ei\ ;
+最重点 < saijuuten\ ;
+一対一 < ittaiichi\ ;
+白札 < shirofuda\ ;
+切入 < setsunyuu\ ;
+標札 < hyousatsu\ ;
+出動 < shutsudou\ ;
+迫力 < hakuryoku\ ;
+屑鉄 < kuzutetsu\ ;
+髪綱 < kamidzuna\ ;
+選挙民 < senkyomin\ ;
+逐一 < chikuichi\ ;
+教唆者 < kyousasha\ ;
+料理人 < ryourinin\ ;
+自由席 < jiyuuseki\ ;
+月刊誌 < gekkanshi\ ;
+侵食 < shinshoku\ ;
+不熟練 < fujukuren\ ;
+古典的 < kotenteki\ ;
+花氷 < hanagoori\ ;
+俄雨 < niwakaame\ ;
+変死者 < henshisha\ ;
+本格化 < honkakuka\ ;
+仕上工 < shiagekou\ ;
+牡丹杏 < botankyou\ ;
+平方形 < heihoukei\ ;
+変化球 < henkakyuu\ ;
+遠隔視 < enkakushi\ ;
+茶室 < chashitsu\ ;
+雑記帳 < zakkichou\ ;
+在校生 < zaikousei\ ;
+白日 < hakujitsu\ ;
+侠骨 < kyoukotsu\ ;
+同位元素 < douigenso\ ;
+摩擦音 < masatsuon\ ;
+少食 < shoushoku\ ;
+巳年 < hebidoshi\ ;
+蛍烏賊 < hotaruika\ ;
+艶物 < tsuyamono\ ;
+再生法 < saiseihou\ ;
+多発機 < tahatsuki\ ;
+冷奴 < hiyayakko\ ;
+活版屋 < kappan''ya\ ;
+金剛手 < kongoushu\ ;
+被害額 < higaigaku\ ;
+再従兄弟 < futaitoko\ ;
+選挙権 < senkyoken\ ;
+基本給 < kihonkyuu\ ;
+非金属 < hikinzoku\ ;
+小頭 < kogashira\ ;
+猩猩緋 < shoujouhi\ ;
+回教徒 < kaikyouto\ ;
+指示先 < shijisaki\ ;
+備忘録 < bibouroku\ ;
+砂糖黍 < satoukibi\ ;
+案内書 < an''naisho\ ;
+功労金 < kouroukin\ ;
+被差別 < hisabetsu\ ;
+痘痕面 < abatazura\ ;
+朱文金 < shubunkin\ ;
+不謹慎 < fukinshin\ ;
+肝硬変 < kankouhen\ ;
+末期的 < makkiteki\ ;
+礼奉公 < reiboukou\ ;
+協技者 < kyougisha\ ;
+多足類 < tasokurui\ ;
+屈辱 < kutsujoku\ ;
+神秘性 < shinpisei\ ;
+沸騰点 < futtouten\ ;
+養魚池 < yougyochi\ ;
+魔法的 < mahouteki\ ;
+亜鉛凸版 < aentoppan\ ;
+製氷所 < seihyoujo\ ;
+関西弁 < kansaiben\ ;
+骨膜 < kotsumaku\ ;
+八千草 < yachigusa\ ;
+町角 < machikado\ ;
+辻君 < tsujigimi\ ;
+省力 < shouryoku\ ;
+鯉幟 < koinobori\ ;
+道交法 < doukouhou\ ;
+野菜汁 < yasaijiru\ ;
+斡旋料 < assenryou\ ;
+赤鰯 < akaiwashi\ ;
+航海士 < koukaishi\ ;
+浮動株 < fudoukabu\ ;
+骨肉 < kotsuniku\ ;
+内室 < naishitsu\ ;
+混交林 < konkourin\ ;
+模範囚 < mohanshuu\ ;
+川岸 < kawagishi\ ;
+講義録 < kougiroku\ ;
+幕下 < makushita\ ;
+目印 < mejirushi\ ;
+生存者 < seizonsha\ ;
+尻軽 < shirigaru\ ;
+不謬性 < fubyuusei\ ;
+導電性 < doudensei\ ;
+改革案 < kaikakuan\ ;
+磁気浮上 < jikifujou\ ;
+男衆 < otokoshuu\ ;
+法改正 < houkaisei\ ;
+生産性 < seisansei\ ;
+鰐口 < waniguchi\ ;
+上中下 < jouchuuge\ ;
+信越 < shin''etsu\ ;
+俊逸 < shun''itsu\ ;
+給水所 < kyuusuijo\ ;
+猜疑心 < saigishin\ ;
+不調法 < buchouhou\ ;
+属託 < shokutaku\ ;
+盲判 < mekuraban\ ;
+受動的 < judouteki\ ;
+調理台 < chouridai\ ;
+空閑地 < kuukanchi\ ;
+労働祭 < roudousai\ ;
+再来週 < saraishuu\ ;
+色沢 < shikitaku\ ;
+六尺 < rokushaku\ ;
+代表部 < daihyoubu\ ;
+僅少差 < kinshousa\ ;
+周期性 < shuukisei\ ;
+飛行服 < hikoufuku\ ;
+不特定 < futokutei\ ;
+表面化 < hyoumenka\ ;
+市有地 < shiyuuchi\ ;
+標準語 < hyoujungo\ ;
+辛口 < karakuchi\ ;
+水平面 < suiheimen\ ;
+交通路 < koutsuuro\ ;
+消費者 < shouhisha\ ;
+古道具 < furudougu\ ;
+基本的 < kihonteki\ ;
+草団子 < kusadango\ ;
+真珠色 < shinjuiro\ ;
+統帥権 < tousuiken\ ;
+色欲 < shikiyoku\ ;
+練習機 < renshuuki\ ;
+極熱 < gokunetsu\ ;
+跳虫 < tobimushi\ ;
+昇降舵 < shoukouda\ ;
+兵庫県 < hyougoken\ ;
+公海上 < koukaijou\ ;
+激戦区 < gekisenku\ ;
+儀礼的 < gireiteki\ ;
+有平糖 < aruheitou\ ;
+痛烈 < tsuuretsu\ ;
+交通費 < koutsuuhi\ ;
+臣節 < shinsetsu\ ;
+金魚草 < kingyosou\ ;
+着火点 < chakkaten\ ;
+選挙戦 < senkyosen\ ;
+骨箱 < kotsubako\ ;
+宗主権 < soushuken\ ;
+水酸根 < suisankon\ ;
+赤十字 < sekijuuji\ ;
+蓄音機 < chikuonki\ ;
+俗説 < zokusetsu\ ;
+自尊心 < jisonshin\ ;
+表記法 < hyoukihou\ ;
+露天商 < rotenshou\ ;
+休廷日 < kyuuteibi\ ;
+飲酒癖 < inshuheki\ ;
+一斉高 < isseidaka\ ;
+処刑台 < shokeidai\ ;
+冷房車 < reibousha\ ;
+検疫所 < ken''ekijo\ ;
+照度計 < shoudokei\ ;
+収税吏 < shuuzeiri\ ;
+喉自慢 < nodojiman\ ;
+金看板 < kinkanban\ ;
+散弾銃 < sandanjuu\ ;
+儲役 < moukeyaku\ ;
+培養液 < baiyoueki\ ;
+天狗風 < tengukaze\ ;
+一本杉 < ipponsugi\ ;
+測微計 < sokubikei\ ;
+風致林 < fuuchirin\ ;
+地理学 < chirigaku\ ;
+美食家 < bishokuka\ ;
+尿道炎 < nyoudouen\ ;
+螳螂拳 < tourouken\ ;
+調理人 < chourinin\ ;
+喫煙所 < kitsuenjo\ ;
+時分時 < jibundoki\ ;
+供述 < kyoujutsu\ ;
+八重桜 < yaezakura\ ;
+南蛮船 < nanbansen\ ;
+豌豆豆 < endoumame\ ;
+峻烈 < shunretsu\ ;
+男腹 < otokobara\ ;
+回数券 < kaisuuken\ ;
+製造者 < seizousha\ ;
+重役会 < juuyakkai\ ;
+北欧人 < hokuoujin\ ;
+一人子 < hitorikko\ ;
+極流 < kyokuryuu\ ;
+死生観 < shiseikan\ ;
+炭疽病 < tansobyou\ ;
+白地図 < hakuchizu\ ;
+略章 < ryakushou\ ;
+鼈甲色 < bekkouiro\ ;
+乗車券 < joushaken\ ;
+測程器 < sokuteiki\ ;
+円舞曲 < enbukyoku\ ;
+良日 < ryoujitsu\ ;
+消費税 < shouhizei\ ;
+壁一重 < kabehitoe\ ;
+四面体 < shimentai\ ;
+左前 < hidarimae\ ;
+在来線 < zairaisen\ ;
+大理石 < dairiseki\ ;
+生産地 < seisanchi\ ;
+対質 < taishitsu\ ;
+不法移民 < fuhouimin\ ;
+片田舎 < katainaka\ ;
+複写機 < fukushaki\ ;
+小説 < shousetsu\ ;
+風俗画 < fuuzokuga\ ;
+左党 < hidaritou\ ;
+脇道 < wakimichi\ ;
+側面図 < sokumenzu\ ;
+棹秤 < saobakari\ ;
+越権行為 < ekkenkoui\ ;
+言語学 < gengogaku\ ;
+巡航船 < junkousen\ ;
+原始林 < genshirin\ ;
+至上権 < shijouken\ ;
+小売商 < kourishou\ ;
+桜貝 < sakuragai\ ;
+統制品 < touseihin\ ;
+病没 < byoubotsu\ ;
+第一審 < daiisshin\ ;
+紅毛人 < koumoujin\ ;
+船橋 < funabashi\ ;
+謄写版 < toushaban\ ;
+控訴審 < kousoshin\ ;
+中古車 < chuukosha\ ;
+髪油 < kamiabura\ ;
+新紀元 < shinkigen\ ;
+練習所 < renshuujo\ ;
+立方根 < rippoukon\ ;
+短音階 < tan''onkai\ ;
+主意主義 < shuishugi\ ;
+宣誓書 < senseisho\ ;
+二拍子 < nibyoushi\ ;
+労農党 < rounoutou\ ;
+彼岸花 < higanbana\ ;
+忠魂碑 < chuukonhi\ ;
+有効性 < yuukousei\ ;
+三日月 < mikadzuki\ ;
+発振機 < hasshinki\ ;
+自己検査 < jikokensa\ ;
+総務庁 < soumuchou\ ;
+病欠 < byouketsu\ ;
+八切 < yatsugiri\ ;
+流行語 < ryuukougo\ ;
+内鮮人 < naisenjin\ ;
+入力 < nyuuryoku\ ;
+生理的 < seiriteki\ ;
+名誉慾 < meiyoyoku\ ;
+努力家 < doryokuka\ ;
+在来種 < zairaishu\ ;
+町筋 < machisuji\ ;
+多事多難 < tajitanan\ ;
+加硫法 < karyuuhou\ ;
+大家族 < daikazoku\ ;
+景教徒 < keikyouto\ ;
+ＡＢＣ順 < ēbīshījun\ ;
+脂足 < aburaashi\ ;
+町立 < chouritsu\ ;
+高積雲 < kousekiun\ ;
+意気揚揚 < ikiyouyou\ ;
+乗船券 < jousenken\ ;
+脚註 < kyakuchuu\ ;
+再審査 < saishinsa\ ;
+用語集 < yougoshuu\ ;
+極月 < gokugetsu\ ;
+負傷者 < fushousha\ ;
+脂質 < shishitsu\ ;
+労働法 < roudouhou\ ;
+汎用機 < han''youki\ ;
+舟橋 < funahashi\ ;
+供血 < kyouketsu\ ;
+名誉心 < meiyoshin\ ;
+鑑定人 < kanteinin\ ;
+川下 < kawashimo\ ;
+投票日 < touhyoubi\ ;
+先行詞 < senkoushi\ ;
+独演会 < dokuenkai\ ;
+音韻学 < on''ingaku\ ;
+功労者 < kourousha\ ;
+実録 < jitsuroku\ ;
+脳細胞 < nousaibou\ ;
+美文調 < bibunchou\ ;
+明細書 < meisaisho\ ;
+男文字 < otokomoji\ ;
+和英辞典 < waeijiten\ ;
+総勘定 < soukanjou\ ;
+色弱 < shikijaku\ ;
+回覧板 < kairanban\ ;
+任命状 < ninmeijou\ ;
+発出 < hasshutsu\ ;
+上納金 < jounoukin\ ;
+拷問台 < goumondai\ ;
+腰縄 < koshinawa\ ;
+生節 < namabushi\ ;
+上奏文 < jousoubun\ ;
+自責点 < jisekiten\ ;
+足腰 < ashikoshi\ ;
+助監督 < jokantoku\ ;
+入仏 < nyuubutsu\ ;
+処生訓 < shoseikun\ ;
+入交 < irimajiri\ ;
+腰紐 < koshihimo\ ;
+本試験 < honshiken\ ;
+外信部 < gaishinbu\ ;
+修築 < shuuchiku\ ;
+一人前 < hitorimae\ ;
+労働権 < roudouken\ ;
+肉食 < nikushoku\ ;
+地球儀 < chikyuugi\ ;
+地上権 < chijouken\ ;
+信約 < shin''yaku\ ;
+金屏風 < kinbyoubu\ ;
+導電体 < doudentai\ ;
+共益費 < kyouekihi\ ;
+脱落 < datsuraku\ ;
+不意試験 < fuishiken\ ;
+馬鹿面 < bakadzura\ ;
+土用波 < doyounami\ ;
+総選挙 < sousenkyo\ ;
+制御盤 < seigyoban\ ;
+心意気 < kokoroiki\ ;
+模範試合 < mohanjiai\ ;
+重労働 < juuroudou\ ;
+手榴弾 < teryuudan\ ;
+一枚上 < ichimaiue\ ;
+天井灯 < tenjoutou\ ;
+養魚場 < yougyojou\ ;
+投票所 < touhyoujo\ ;
+輩出 < haishutsu\ ;
+座標系 < zahyoukei\ ;
+円借款 < enshakkan\ ;
+絶対論 < zettairon\ ;
+捕虫網 < hochuuami\ ;
+出来星 < dekiboshi\ ;
+二重母音 < nijuuboin\ ;
+花柳界 < karyuukai\ ;
+公民権 < kouminken\ ;
+如何許 < ikabakari\ ;
+清教徒 < seikyouto\ ;
+紫外線 < shigaisen\ ;
+修祓 < shuufutsu\ ;
+同好会 < doukoukai\ ;
+洗車場 < senshajou\ ;
+展望車 < tenbousha\ ;
+学閥 < gakubatsu\ ;
+暗号帳 < angouchou\ ;
+位負 < kuraimake\ ;
+苗代 < nawashiro\ ;
+山男 < yamaotoko\ ;
+幌馬車 < horobasha\ ;
+大企業 < daikigyou\ ;
+売笑婦 < baishoufu\ ;
+採点者 < saitensha\ ;
+栄耀栄華 < eiyoueiga\ ;
+間隙比 < kangekihi\ ;
+壮行会 < soukoukai\ ;
+再生品 < saiseihin\ ;
+公社債 < koushasai\ ;
+桜草 < sakurasou\ ;
+客足 < kyakuashi\ ;
+属目 < shokumoku\ ;
+未来学 < miraigaku\ ;
+俗筆 < zokuhitsu\ ;
+末始終 < sueshijuu\ ;
+償却 < shoukyaku\ ;
+潜水艦 < sensuikan\ ;
+水道管 < suidoukan\ ;
+母語話者 < bogowasha\ ;
+天理教 < tenrikyou\ ;
+楽律 < gakuritsu\ ;
+桜色 < sakurairo\ ;
+予想高 < yosoudaka\ ;
+手柄顔 < tegaragao\ ;
+手芸品 < shugeihin\ ;
+平衡錘 < heikousui\ ;
+抗毒素 < koudokuso\ ;
+小羊 < kohitsuji\ ;
+大豆粕 < daizukasu\ ;
+研究費 < kenkyuuhi\ ;
+実質 < jisshitsu\ ;
+知能犯 < chinouhan\ ;
+選手権 < senshuken\ ;
+麝香鹿 < jakoujika\ ;
+海岸線 < kaigansen\ ;
+貿易港 < bouekikou\ ;
+暦年度 < rekinendo\ ;
+天宮図 < tenkyuuzu\ ;
+有権者 < yuukensha\ ;
+体裁上 < teisaijou\ ;
+伊達男 < dateotoko\ ;
+休刊日 < kyuukanbi\ ;
+肘鉄 < hijitetsu\ ;
+賃餅 < chinmochi\ ;
+古典学 < kotengaku\ ;
+宝貝 < takaragai\ ;
+軽口 < karukuchi\ ;
+改訂版 < kaiteiban\ ;
+生存権 < seizonken\ ;
+超脱 < choudatsu\ ;
+該問題 < gaimondai\ ;
+暗号学 < angougaku\ ;
+代行者 < daikousha\ ;
+男物 < otokomono\ ;
+八千歳 < yachitose\ ;
+口真似 < kuchimane\ ;
+出版部 < shuppanbu\ ;
+職長 < shokuchou\ ;
+観測所 < kansokujo\ ;
+経済界 < keizaikai\ ;
+不熱心 < funesshin\ ;
+公法人 < kouhoujin\ ;
+休眠期 < kyuuminki\ ;
+副総理 < fukusouri\ ;
+伴奏者 < bansousha\ ;
+対談者 < taidansha\ ;
+貿易法 < bouekihou\ ;
+園遊会 < en''yuukai\ ;
+賛成者 < sanseisha\ ;
+仏顔 < hotokegao\ ;
+芸能人 < geinoujin\ ;
+分譲地 < bunjouchi\ ;
+屈光性 < kukkousei\ ;
+真珠湾 < shinjuwan\ ;
+仏領 < futsuryou\ ;
+交通禍 < koutsuuka\ ;
+拝火教 < haikakyou\ ;
+箇条書 < kajougaki\ ;
+略歴 < ryakureki\ ;
+選挙人 < senkyonin\ ;
+酪農家 < rakunouka\ ;
+工芸品 < kougeihin\ ;
+未来型 < miraigata\ ;
+弁鰓類 < bensairui\ ;
+無資格 < mushikaku\ ;
+任命権 < ninmeiken\ ;
+虫垂炎 < chuusuien\ ;
+骨柄 < kotsugara\ ;
+木戸御免 < kidogomen\ ;
+破落戸 < gorotsuki\ ;
+緩下薬 < kangeyaku\ ;
+有機的 < yuukiteki\ ;
+赤色 < sekishoku\ ;
+正反対 < seihantai\ ;
+尻癖 < shirikuse\ ;
+青海原 < aounabara\ ;
+凹面鏡 < oumenkyou\ ;
+報道陣 < houdoujin\ ;
+極小 < kyokushou\ ;
+劣勢感 < resseikan\ ;
+自己疎外 < jikosogai\ ;
+俵物 < hyoumotsu\ ;
+御料地 < goryouchi\ ;
+生爪 < namadzume\ ;
+松風 < matsukaze\ ;
+計算者 < keisansha\ ;
+無駄口 < mudaguchi\ ;
+李承晩 < rishouban\ ;
+超絶 < chouzetsu\ ;
+船室 < senshitsu\ ;
+福音書 < fukuinsho\ ;
+八卦掌 < hakkeshou\ ;
+自主的 < jishuteki\ ;
+進歩党 < shinpotou\ ;
+相反性 < souhansei\ ;
+能動態 < noudoutai\ ;
+司令官 < shireikan\ ;
+地震計 < jishinkei\ ;
+紙一重 < kamihitoe\ ;
+水加減 < mizukagen\ ;
+出版費 < shuppanhi\ ;
+果報者 < kahoumono\ ;
+成長期 < seichouki\ ;
+腺熱 < sen''netsu\ ;
+浄土教 < joudokyou\ ;
+束髪 < sokuhatsu\ ;
+転出 < tenshutsu\ ;
+天井板 < tenjouita\ ;
+集塵機 < shuujinki\ ;
+凌波性 < ryouhasei\ ;
+快男子 < kaidanshi\ ;
+天狗茸 < tengutake\ ;
+狙撃兵 < sogekihei\ ;
+外輪山 < gairinzan\ ;
+昇降機 < shoukouki\ ;
+基礎控除 < kisokoujo\ ;
+島島 < shimajima\ ;
+放火狂 < houkakyou\ ;
+風馬牛 < fuubagyuu\ ;
+陶器商 < toukishou\ ;
+略服 < ryakufuku\ ;
+三塁線 < sanruisen\ ;
+島山 < shimayama\ ;
+道義心 < dougishin\ ;
+超時空 < choujikuu\ ;
+微粒子 < biryuushi\ ;
+水平線 < suiheisen\ ;
+再尋問 < saijinmon\ ;
+鬱勃 < utsubotsu\ ;
+東雲 < shinonome\ ;
+生滅 < shoumetsu\ ;
+清掃車 < seisousha\ ;
+俗物 < zokubutsu\ ;
+脱硫 < datsuryuu\ ;
+脈絡 < myakuraku\ ;
+一定温度 < itteiondo\ ;
+最前線 < saizensen\ ;
+絶対者 < zettaisha\ ;
+正確度 < seikakudo\ ;
+氷削機 < hyousakki\ ;
+分解能 < bunkainou\ ;
+四角形 < shikakkei\ ;
+宣言書 < sengensho\ ;
+司令塔 < shireitou\ ;
+学識 < gakushiki\ ;
+立太子 < rittaishi\ ;
+有蹄類 < yuuteirui\ ;
+使用者 < shiyousha\ ;
+侵略 < shinryaku\ ;
+天上界 < tenjoukai\ ;
+青海亀 < aoumigame\ ;
+来遊者 < raiyuusha\ ;
+巨人軍 < kyojingun\ ;
+学部生 < gakubusei\ ;
+工学部 < kougakubu\ ;
+教科書 < kyoukasho\ ;
+経済法 < keizaihou\ ;
+破傷風 < hashoufuu\ ;
+職責 < shokuseki\ ;
+持参人 < jisan''nin\ ;
+総督府 < soutokufu\ ;
+日本髪 < nihongami\ ;
+艶事 < tsuyagoto\ ;
+制御棒 < seigyobou\ ;
+検案書 < ken''ansho\ ;
+玉鴫 < tamashigi\ ;
+歩道橋 < hodoukyou\ ;
+地方紙 < chihoushi\ ;
+日傭取 < hiyoutori\ ;
+地獄変 < jigokuhen\ ;
+合奏団 < gassoudan\ ;
+瓦版 < kawaraban\ ;
+天井扇 < tenjousen\ ;
+傷口 < kizuguchi\ ;
+全反射 < zenhansha\ ;
+密約 < mitsuyaku\ ;
+変速機 < hensokuki\ ;
+無理式 < murishiki\ ;
+軽労働 < keiroudou\ ;
+学術 < gakujutsu\ ;
+正反合 < seihangou\ ;
+経済欄 < keizairan\ ;
+軒下 < nokishita\ ;
+車代 < kurumadai\ ;
+借料 < shakuryou\ ;
+生字引 < ikijibiki\ ;
+投票区 < touhyouku\ ;
+人達 < hitotachi\ ;
+木曜日 < mokuyoubi\ ;
+出木年 < dekidoshi\ ;
+候文 < souroubun\ ;
+碓氷峠 < usuitouge\ ;
+寺男 < teraotoko\ ;
+加入金 < kanyuukin\ ;
+民間人 < minkanjin\ ;
+公募株 < koubokabu\ ;
+極北 < kyokuhoku\ ;
+乗馬服 < joubafuku\ ;
+脱獄 < datsugoku\ ;
+日本領 < nihonryou\ ;
+著書名 < choshomei\ ;
+経営学 < keieigaku\ ;
+白鉛鉱 < hakuenkou\ ;
+町方 < machikata\ ;
+粗目糖 < zarametou\ ;
+手前味噌 < temaemiso\ ;
+内玄関 < naigenkan\ ;
+地方税 < chihouzei\ ;
+高坏 < takatsuki\ ;
+巡査長 < junsachou\ ;
+印刷機 < insatsuki\ ;
+凍死者 < toushisha\ ;
+白銅貨 < hakudouka\ ;
+貸賃 < kashichin\ ;
+原始人 < genshijin\ ;
+加工賃 < kakouchin\ ;
+允文允武 < inbuninbu\ ;
+竹輪麩 < chikuwafu\ ;
+一方的 < ippouteki\ ;
+出仕事 < deshigoto\ ;
+正念場 < shounenba\ ;
+倉敷 < kurashiki\ ;
+乞食 < kotsujiki\ ;
+柔道場 < juudoujou\ ;
+脊髄炎 < sekizuien\ ;
+二重釜 < nijuugama\ ;
+立方体 < rippoutai\ ;
+伸縮 < shinshuku\ ;
+遠隔性 < enkakusei\ ;
+軽歌劇 < keikageki\ ;
+制動灯 < seidoutou\ ;
+催眠剤 < saiminzai\ ;
+今一度 < imaichido\ ;
+攻防戦 < koubousen\ ;
+浄土宗 < joudoshuu\ ;
+操縦桿 < soujuukan\ ;
+文明館 < bunmeikan\ ;
+導関数 < doukansuu\ ;
+滞在地 < taizaichi\ ;
+人質 < hitojichi\ ;
+朝食 < choushoku\ ;
+上納米 < jounoumai\ ;
+宇宙服 < uchuufuku\ ;
+利口者 < rikoumono\ ;
+方法論 < houhouron\ ;
+蓋然性 < gaizensei\ ;
+半製品 < hanseihin\ ;
+峻別 < shunbetsu\ ;
+一場面 < ichibamen\ ;
+石版画 < sekibanga\ ;
+登録簿 < tourokubo\ ;
+自暴自棄 < jiboujiki\ ;
+一昨晩 < issakuban\ ;
+届書 < todokesho\ ;
+客筋 < kyakusuji\ ;
+多極化 < takyokuka\ ;
+大一番 < ooichiban\ ;
+衛星国 < eiseikoku\ ;
+相撲部屋 < sumoubeya\ ;
+服飾 < fukushoku\ ;
+傑出 < kesshutsu\ ;
+休職 < kyuushoku\ ;
+下級生 < kakyuusei\ ;
+標準時 < hyoujunji\ ;
+二道 < futamichi\ ;
+高齢者 < koureisha\ ;
+一丁前 < itchoumae\ ;
+船主 < funanushi\ ;
+食通 < shokutsuu\ ;
+横恋慕 < yokorenbo\ ;
+財産税 < zaisanzei\ ;
+自己保存 < jikohozon\ ;
+二重身 < nijuushin\ ;
+客種 < kyakudane\ ;
+賊虐 < zokugyaku\ ;
+生理学 < seirigaku\ ;
+熱器具 < netsukigu\ ;
+寒冷紗 < kanreisha\ ;
+水道栓 < suidousen\ ;
+探索木 < tansakugi\ ;
+研究科 < kenkyuuka\ ;
+乳鉢 < nyuubachi\ ;
+月額 < getsugaku\ ;
+実施例 < jisshirei\ ;
+長音階 < chouonkai\ ;
+不評判 < fuhyouban\ ;
+月頃 < tsukigoro\ ;
+選手団 < senshudan\ ;
+作男 < sakuotoko\ ;
+多事多端 < tajitatan\ ;
+功利的 < kouriteki\ ;
+天球儀 < tenkyuugi\ ;
+男役 < otokoyaku\ ;
+真珠層 < shinjusou\ ;
+平均点 < heikinten\ ;
+上鶲 < joubitaki\ ;
+腕枕 < udemakura\ ;
+連合会 < rengoukai\ ;
+工業化 < kougyouka\ ;
+赤道儀 < sekidougi\ ;
+赤熱 < sekinetsu\ ;
+文学座 < bungakuza\ ;
+曖昧模糊 < aimaimoko\ ;
+舌先 < shitasaki\ ;
+労働党 < roudoutou\ ;
+腹持 < haramochi\ ;
+経済戦 < keizaisen\ ;
+珍説 < chinsetsu\ ;
+米空軍 < beikuugun\ ;
+敷居置 < shikiichi\ ;
+付落 < tsukeochi\ ;
+配当金 < haitoukin\ ;
+腰掛 < koshikake\ ;
+久闊 < kyuukatsu\ ;
+飛蚊症 < hibunshou\ ;
+密猟 < mitsuryou\ ;
+赤痢菌 < sekirikin\ ;
+五十肩 < gojuukata\ ;
+高等官 < koutoukan\ ;
+地方版 < chihouban\ ;
+申年 < sarudoshi\ ;
+材質 < zaishitsu\ ;
+片脳油 < hen''nouyu\ ;
+松蝉 < matsuzemi\ ;
+事務次官 < jimujikan\ ;
+奉行所 < bugyousho\ ;
+肯定文 < kouteibun\ ;
+京表 < kyouomote\ ;
+芳香剤 < houkouzai\ ;
+火災流 < kasairyuu\ ;
+印刷所 < insatsujo\ ;
+梅暦 < umegoyomi\ ;
+大聖堂 < daiseidou\ ;
+経済性 < keizaisei\ ;
+蛇紋石 < jamonseki\ ;
+流行歌 < ryuukouka\ ;
+作物 < sakumotsu\ ;
+賞罰 < shoubatsu\ ;
+三角洲 < sankakusu\ ;
+室町 < muromachi\ ;
+三文判 < sanmonban\ ;
+三角波 < sankakuha\ ;
+実際性 < jissaisei\ ;
+竹矢来 < takeyarai\ ;
+平行線 < heikousen\ ;
+葱坊主 < negibouzu\ ;
+孫弟子 < magodeshi\ ;
+容積比 < yousekihi\ ;
+主眼点 < shuganten\ ;
+遠隔地 < enkakuchi\ ;
+三角比 < sankakuhi\ ;
+小曲 < shoukyoku\ ;
+長時間 < choujikan\ ;
+半端者 < hanpamono\ ;
+独禁法 < dokkinhou\ ;
+広告費 < koukokuhi\ ;
+検出 < kenshutsu\ ;
+最優遇 < saiyuuguu\ ;
+台風眼 < taifuugan\ ;
+未教育 < mikyouiku\ ;
+俊抜 < shunbatsu\ ;
+裁断師 < saidanshi\ ;
+肉筆 < nikuhitsu\ ;
+全単射 < zentansha\ ;
+腰弱 < koshiyowa\ ;
+効果的 < koukateki\ ;
+空手形 < kuutegata\ ;
+印刻師 < inkokushi\ ;
+胆玉 < kimottama\ ;
+青年輩 < seinenhai\ ;
+割烹店 < kappouten\ ;
+松茸 < matsutake\ ;
+貿易品 < bouekihin\ ;
+削岩機 < sakuganki\ ;
+桜桃 < sakuranbo\ ;
+寂滅 < jakumetsu\ ;
+本質 < honshitsu\ ;
+完了後 < kanryougo\ ;
+大上段 < daijoudan\ ;
+園芸学 < engeigaku\ ;
+指相撲 < yubizumou\ ;
+気宇広大 < kiukoudai\ ;
+肩甲帯 < kenkoutai\ ;
+正当性 < seitousei\ ;
+産室 < sanshitsu\ ;
+砂糖水 < satoumizu\ ;
+方錐形 < housuikei\ ;
+相当数 < soutousuu\ ;
+腰布 < koshinuno\ ;
+腰巻 < koshimaki\ ;
+佃煮 < tsukudani\ ;
+醸造酒 < jouzoushu\ ;
+左中間 < sachuukan\ ;
+伝令者 < denreisha\ ;
+木綿針 < momenbari\ ;
+桁橋 < ketabashi\ ;
+木版画 < mokuhanga\ ;
+検査役 < kensayaku\ ;
+忘年会 < bounenkai\ ;
+宇宙学 < uchuugaku\ ;
+朴訥 < bokutotsu\ ;
+食虫 < shokuchuu\ ;
+真理値 < shinrichi\ ;
+配水管 < haisuikan\ ;
+太陽風 < taiyoufuu\ ;
+松脂 < matsuyani\ ;
+七難 < shichinan\ ;
+使用法 < shiyouhou\ ;
+印刷屋 < insatsuya\ ;
+音声学 < onseigaku\ ;
+伊達女 < dateon''na\ ;
+男坂 < otokozaka\ ;
+宿泊 < shukuhaku\ ;
+伯爵 < hakushaku\ ;
+梓弓 < azusayumi\ ;
+副詞句 < fukushiku\ ;
+実数体 < jissuutai\ ;
+多数意見 < tasuuiken\ ;
+餅肌 < mochihada\ ;
+裏長屋 < uranagaya\ ;
+東工大 < toukoudai\ ;
+居室 < kyoshitsu\ ;
+額際 < hitaigiwa\ ;
+留別 < ryuubetsu\ ;
+歯科医師 < shikaishi\ ;
+花時計 < hanadokei\ ;
+製造品 < seizouhin\ ;
+計算書 < keisansho\ ;
+制動手 < seidoushu\ ;
+不規律 < fukiritsu\ ;
+口腔癌 < koukougan\ ;
+回答者 < kaitousha\ ;
+単従陣 < tanjuujin\ ;
+反英雄 < han''eiyuu\ ;
+主権者 < shukensha\ ;
+大本山 < daihonzan\ ;
+中和剤 < chuuwazai\ ;
+慈善箱 < jizenbako\ ;
+最左翼 < saisayoku\ ;
+三角旗 < sankakuki\ ;
+美化運動 < bikaundou\ ;
+加入者 < kanyuusha\ ;
+裾模様 < susomoyou\ ;
+一隻眼 < issekigan\ ;
+使用権 < shiyouken\ ;
+近体詩 < kintaishi\ ;
+天狼星 < tenrousei\ ;
+贈物 < okurimono\ ;
+再犯者 < saihansha\ ;
+哨戒機 < shoukaiki\ ;
+通過駅 < tsuukaeki\ ;
+大人共 < otonadomo\ ;
+駐日 < chuunichi\ ;
+苦心談 < kushindan\ ;
+操縦士 < soujuushi\ ;
+真珠光 < shinjukou\ ;
+柿渋 < kakishibu\ ;
+速度計 < sokudokei\ ;
+無責任 < musekinin\ ;
+播但線 < bantansen\ ;
+聖誕祭 < seitansai\ ;
+無一文 < muichimon\ ;
+常分数 < joubunsuu\ ;
+下金 < shitagane\ ;
+中越 < chuugoshi\ ;
+再考慮 < saikouryo\ ;
+儀典長 < gitenchou\ ;
+工学科 < kougakuka\ ;
+自己主義 < jikoshugi\ ;
+媒質 < baishitsu\ ;
+交歓会 < koukankai\ ;
+天象儀 < tenshougi\ ;
+乾草 < hoshigusa\ ;
+琴爪 < kotodzume\ ;
+腰垣 < koshigaki\ ;
+引用文 < in''youbun\ ;
+係官 < kakarikan\ ;
+荒法師 < arahoushi\ ;
+脈搏 < myakuhaku\ ;
+玉虫 < tamamushi\ ;
+生唾 < namatsuba\ ;
+実行委員 < jikkouiin\ ;
+療養費 < ryouyouhi\ ;
+機関長 < kikanchou\ ;
+向地性 < kouchisei\ ;
+凱旋門 < gaisenmon\ ;
+食肉 < shokuniku\ ;
+設備費 < setsubihi\ ;
+松笠 < matsukasa\ ;
+裁縫師 < saihoushi\ ;
+財産権 < zaisanken\ ;
+投石機 < tousekiki\ ;
+愛校心 < aikoushin\ ;
+伏魔殿 < fukumaden\ ;
+茶器組 < chakigumi\ ;
+三塁手 < sanruishu\ ;
+七道 < shichidou\ ;
+虚無的 < kyomuteki\ ;
+申入 < moushiire\ ;
+伝導性 < dendousei\ ;
+客様 < kyakusama\ ;
+文字列 < mojiretsu\ ;
+反芻類 < hansuurui\ ;
+定型詩 < teikeishi\ ;
+水菓子 < mizugashi\ ;
+借主 < karinushi\ ;
+黍団子 < kibidango\ ;
+軟口蓋 < nankougai\ ;
+乾肉 < hoshiniku\ ;
+闇相場 < yamisouba\ ;
+宿料 < shukuryou\ ;
+実業 < jitsugyou\ ;
+合気道家 < aikidouka\ ;
+宿敵 < shukuteki\ ;
+宇宙博 < uchuuhaku\ ;
+七輪 < shichirin\ ;
+産出 < sanshutsu\ ;
+芥子菜 < karashina\ ;
+珍道具 < chindougu\ ;
+何日 < nan''nichi\ ;
+質点 < shitsuten\ ;
+黄表紙 < kibyoushi\ ;
+脳室 < noushitsu\ ;
+従姉妹 < juushimai\ ;
+山伏 < yamabushi\ ;
+子福者 < kobukusha\ ;
+思想界 < shisoukai\ ;
+民衆化 < minshuuka\ ;
+鈍黄色 < nibukiiro\ ;
+実株 < jitsukabu\ ;
+三角形 < sankakkei\ ;
+侵奪 < shindatsu\ ;
+大本営 < daihon''ei\ ;
+猛特訓 < moutokkun\ ;
+町中 < machinaka\ ;
+町並 < machinami\ ;
+予告編 < yokokuhen\ ;
+冷湿布 < reishippu\ ;
+標準化 < hyoujunka\ ;
+上質 < joushitsu\ ;
+下貼 < shitabari\ ;
+食紅 < shokubeni\ ;
+南蛮人 < nanbanjin\ ;
+更衣 < koromogae\ ;
+食糧 < shokuryou\ ;
+田園詩 < den''enshi\ ;
+中表 < nakaomote\ ;
+三角座 < sankakuza\ ;
+小姑 < kojuutome\ ;
+再試験 < saishiken\ ;
+栃木 < tochinoki\ ;
+寒帯林 < kantairin\ ;
+脂性 < aburashou\ ;
+倉主 < kuranushi\ ;
+傾斜面 < keishamen\ ;
+死亡者 < shibousha\ ;
+七賢 < shichiken\ ;
+遺族扶助 < izokufujo\ ;
+娑羅双樹 < sarasouju\ ;
+三角帆 < sankakuho\ ;
+尻取 < shiritori\ ;
+婚姻法 < kon''inhou\ ;
+二重窓 < nijuumado\ ;
+自然類 < shizenrui\ ;
+専売品 < senbaihin\ ;
+格式 < kakushiki\ ;
+不統一 < futouitsu\ ;
+昼鳶 < hirutonbi\ ;
+夜会服 < yakaifuku\ ;
+亮直 < ryouchoku\ ;
+暢達 < choutatsu\ ;
+党派心 < touhashin\ ;
+思想犯 < shisouhan\ ;
+腰元 < koshimoto\ ;
+脇差 < wakizashi\ ;
+弁当代 < bentoudai\ ;
+杉箸 < sugibashi\ ;
+肝臓癌 < kanzougan\ ;
+付焼 < tsukeyaki\ ;
+経済人 < keizaijin\ ;
+仏教徒 < bukkyouto\ ;
+米海軍 < beikaigun\ ;
+含油層 < gan''yusou\ ;
+情報誌 < jouhoushi\ ;
+学殖 < gakushoku\ ;
+凱旋軍 < gaisengun\ ;
+融解点 < yuukaiten\ ;
+淋巴球 < rinpakyuu\ ;
+嫌煙権 < ken''enken\ ;
+夫婦仲 < fuufunaka\ ;
+感染原 < kansengen\ ;
+迎賓館 < geihinkan\ ;
+株式 < kabushiki\ ;
+評議会 < hyougikai\ ;
+好男子 < koudanshi\ ;
+早春賦 < soushunfu\ ;
+柏槙 < byakushin\ ;
+喉頭癌 < koutougan\ ;
+独酌 < dokushaku\ ;
+寝業師 < newazashi\ ;
+人格化 < jinkakuka\ ;
+寅年 < toradoshi\ ;
+綺麗事 < kireigoto\ ;
+記名株 < kimeikabu\ ;
+携帯品 < keitaihin\ ;
+駐屯所 < chuutonjo\ ;
+研究所 < kenkyuujo\ ;
+最先端 < saisentan\ ;
+居住者 < kyojuusha\ ;
+誇張法 < kochouhou\ ;
+小咄 < kobanashi\ ;
+丸腰 < marugoshi\ ;
+昼飯 < hirumeshi\ ;
+視覚化 < shikakuka\ ;
+伐木 < batsuboku\ ;
+俊傑 < shunketsu\ ;
+中華街 < chuukagai\ ;
+職歴 < shokureki\ ;
+連判状 < renbanjou\ ;
+麝香猫 < jakouneko\ ;
+変光星 < henkousei\ ;
+審査官 < shinsakan\ ;
+多用中 < tayouchuu\ ;
+早東戦 < soutousen\ ;
+黙秘権 < mokuhiken\ ;
+冒険談 < boukendan\ ;
+常備薬 < joubiyaku\ ;
+架橋 < kakehashi\ ;
+妊婦服 < ninpufuku\ ;
+柏木 < kashiwagi\ ;
+体重計 < taijuukei\ ;
+警官隊 < keikantai\ ;
+仮橋 < karibashi\ ;
+講談社 < koudansha\ ;
+豆粒 < mametsubu\ ;
+休日 < kyuujitsu\ ;
+上薬 < uwagusuri\ ;
+近代詩 < kindaishi\ ;
+煙草銭 < tabakosen\ ;
+間投詞 < kantoushi\ ;
+答弁者 < toubensha\ ;
+平行棒 < heikoubou\ ;
+蟻地獄 < arijigoku\ ;
+密室 < misshitsu\ ;
+扁桃腺 < hentousen\ ;
+公判廷 < kouhantei\ ;
+玉章 < gyokushou\ ;
+数億年 < suuokunen\ ;
+盆灯籠 < bondourou\ ;
+宿将 < shukushou\ ;
+終戦後 < shuusengo\ ;
+将卒 < shousotsu\ ;
+両舌 < ryouzetsu\ ;
+編集部 < henshuubu\ ;
+周囲長 < shuuichou\ ;
+公選制 < kousensei\ ;
+職業 < shokugyou\ ;
+修理工 < shuurikou\ ;
+最適化 < saitekika\ ;
+化学者 < kagakusha\ ;
+導出 < doushutsu\ ;
+贈賄罪 < zouwaizai\ ;
+宿学 < shukugaku\ ;
+不承認 < fushounin\ ;
+五重唱 < gojuushou\ ;
+小冊 < shousatsu\ ;
+自己顕示 < jikokenji\ ;
+年齢順 < nenreijun\ ;
+賭博場 < tobakujou\ ;
+両脚 < ryoukyaku\ ;
+看守者 < kanshusha\ ;
+脱出 < dasshutsu\ ;
+客席 < kyakuseki\ ;
+弱電器 < jakudenki\ ;
+下草 < shitakusa\ ;
+日本的 < nihonteki\ ;
+射出 < shashutsu\ ;
+開墾地 < kaikonchi\ ;
+暦術 < rekijutsu\ ;
+禁猟期 < kinryouki\ ;
+赤土 < akatsuchi\ ;
+前額部 < zengakubu\ ;
+評論家 < hyouronka\ ;
+自己負担 < jikofutan\ ;
+一斉安 < isseiyasu\ ;
+露天風呂 < rotenburo\ ;
+一親等 < isshintou\ ;
+再放送 < saihousou\ ;
+化学線 < kagakusen\ ;
+戦死者 < senshisha\ ;
+一文字 < ichimonji\ ;
+意気投合 < ikitougou\ ;
+文士連 < bunshiren\ ;
+木綿糸 < momen''ito\ ;
+焦電気 < shoudenki\ ;
+授与式 < juyoshiki\ ;
+目分量 < mebunryou\ ;
+天下一 < tenkaichi\ ;
+中古品 < chuukohin\ ;
+中絶 < chuuzetsu\ ;
+市場性 < shijousei\ ;
+中性塩 < chuuseien\ ;
+下腹 < shitabara\ ;
+脱俗 < datsuzoku\ ;
+文語調 < bungochou\ ;
+散兵線 < sanpeisen\ ;
+流行児 < ryuukouji\ ;
+腹時計 < haradokei\ ;
+布袋腹 < hoteibara\ ;
+無教育 < mukyouiku\ ;
+柏手 < kashiwade\ ;
+教区民 < kyoukumin\ ;
+地震帯 < jishintai\ ;
+長期戦 < choukisen\ ;
+通知簿 < tsuuchibo\ ;
+乾物 < hoshimono\ ;
+実学 < jitsugaku\ ;
+加工業 < kakougyou\ ;
+不行状 < fugyoujou\ ;
+桟俵 < sandawara\ ;
+胡麻油 < gomaabura\ ;
+日本猿 < nihonzaru\ ;
+猟色 < ryoushoku\ ;
+旧世界 < kyuusekai\ ;
+一脈 < ichimyaku\ ;
+水平動 < suiheidou\ ;
+赤口 < sekiguchi\ ;
+短大生 < tandaisei\ ;
+肖像画 < shouzouga\ ;
+一角獣 < ikkakujuu\ ;
+可変長 < kahenchou\ ;
+一要素 < ichiyouso\ ;
+児童劇 < jidougeki\ ;
+中立 < chuuritsu\ ;
+埋葬地 < maisouchi\ ;
+上製本 < jouseibon\ ;
+両性花 < ryouseika\ ;
+実行者 < jikkousha\ ;
+職掌 < shokushou\ ;
+傾斜計 < keishakei\ ;
+室外 < shitsugai\ ;
+犯罪者 < hanzaisha\ ;
+寒卵 < kantamago\ ;
+絶交状 < zekkoujou\ ;
+外来者 < gairaisha\ ;
+伝導体 < dendoutai\ ;
+質感 < shitsukan\ ;
+格別 < kakubetsu\ ;
+核力 < kakuryoku\ ;
+斜滑降 < shakakkou\ ;
+常平倉 < jouheisou\ ;
+主催者 < shusaisha\ ;
+柔軟性 < juunansei\ ;
+分担金 < buntankin\ ;
+冷蔵車 < reizousha\ ;
+最高裁 < saikousai\ ;
+両端 < ryouhashi\ ;
+加入権 < kanyuuken\ ;
+両立 < ryouritsu\ ;
+前住所 < zenjuusho\ ;
+展望塔 < tenboutou\ ;
+過敏症 < kabinshou\ ;
+人頭税 < nintouzei\ ;
+舞台劇 < butaigeki\ ;
+下紐 < shitahimo\ ;
+平均値 < heikinchi\ ;
+今日 < kon''nichi\ ;
+格子面 < koushimen\ ;
+早飯 < hayameshi\ ;
+水茶屋 < mizuchaya\ ;
+情報網 < jouhoumou\ ;
+巴旦杏 < hatankyou\ ;
+貸方 < kashikata\ ;
+審美眼 < shinbigan\ ;
+自然観 < shizenkan\ ;
+運否天賦 < unputenpu\ ;
+富栄養化 < fueiyouka\ ;
+脂肪酸 < shibousan\ ;
+門外漢 < mongaikan\ ;
+乾湿 < kanshitsu\ ;
+抗菌性 < koukinsei\ ;
+額縁 < gakubuchi\ ;
+伝染性 < densensei\ ;
+印度支那 < indoshina\ ;
+未組織 < misoshiki\ ;
+欧化主義 < oukashugi\ ;
+水様液 < suiyoueki\ ;
+救助隊 < kyuujotai\ ;
+無二無三 < munimuzan\ ;
+保存量 < hozonryou\ ;
+三日三夜 < mikkamiyo\ ;
+牡丹海老 < botan''ebi\ ;
+核兵器 < kakuheiki\ ;
+不満足 < fumanzoku\ ;
+長談議 < nagadangi\ ;
+冒険者 < boukensha\ ;
+一粒 < hitotsubu\ ;
+嫡流 < chakuryuu\ ;
+曲目 < kyokumoku\ ;
+食欲 < shokuyoku\ ;
+羽蒲団 < hanebuton\ ;
+柴垣 < shibagaki\ ;
+地方債 < chihousai\ ;
+亮月 < ryougetsu\ ;
+本場物 < honbamono\ ;
+語学者 < gogakusha\ ;
+下穿 < shitabaki\ ;
+再試行 < saishikou\ ;
+一節 < hitofushi\ ;
+居丈高 < itakedaka\ ;
+太陽系 < taiyoukei\ ;
+研究員 < kenkyuuin\ ;
+弥縫策 < bihousaku\ ;
+無報酬 < muhoushuu\ ;
+蘆溝橋 < rokoukyou\ ;
+絶対値 < zettaichi\ ;
+天頂儀 < tenchougi\ ;
+中略 < chuuryaku\ ;
+海賊王 < kaizokuou\ ;
+財界人 < zaikaijin\ ;
+風来坊 < fuuraibou\ ;
+状袋 < joubukuro\ ;
+寒冷地 < kanreichi\ ;
+前置詞 < zenchishi\ ;
+物量 < butsuryou\ ;
+加判人 < kahan''nin\ ;
+動滑車 < doukassha\ ;
+結氷期 < keppyouki\ ;
+電気機器 < denkikiki\ ;
+展望台 < tenboudai\ ;
+礼拝堂 < reihaidou\ ;
+高性能 < kouseinou\ ;
+乾海苔 < hoshinori\ ;
+使用例 < shiyourei\ ;
+有田焼 < aritayaki\ ;
+高周波 < koushuuha\ ;
+尿検査 < nyoukensa\ ;
+環状線 < kanjousen\ ;
+末流 < matsuryuu\ ;
+発想法 < hassouhou\ ;
+株主 < kabunushi\ ;
+下石 < shitaishi\ ;
+免税点 < menzeiten\ ;
+値段表 < nedanhyou\ ;
+飯時 < meshidoki\ ;
+直弟子 < jikideshi\ ;
+自己嫌悪 < jikoken''o\ ;
+連邦制 < renpousei\ ;
+使用人 < shiyounin\ ;
+植木鉢 < uekibachi\ ;
+照射野 < shoushaya\ ;
+作付 < sakudzuke\ ;
+慈善心 < jizenshin\ ;
+上瞼 < uwamabuta\ ;
+木煉瓦 < mokurenga\ ;
+木綿物 < momenmono\ ;
+六分儀 < rokubungi\ ;
+視地平 < shichihei\ ;
+工作員 < kousakuin\ ;
+伯叔 < hakushuku\ ;
+爪革 < tsumakawa\ ;
+室内 < shitsunai\ ;
+宿主 < yadonushi\ ;
+回漕店 < kaisouten\ ;
+石炭紀 < sekitanki\ ;
+投機的 < toukiteki\ ;
+猟犬座 < ryoukenza\ ;
+二月 < futatsuki\ ;
+日録 < nichiroku\ ;
+皮財布 < kawazaifu\ ;
+一瞥 < ichibetsu\ ;
+脳血栓 < noukessen\ ;
+正則化 < seisokuka\ ;
+大奥様 < oookusama\ ;
+令室 < reishitsu\ ;
+体中 < karadajuu\ ;
+欠陥車 < kekkansha\ ;
+一大事 < ichidaiji\ ;
+連分数 < renbunsuu\ ;
+修理代 < shuuridai\ ;
+仲好 < nakayoshi\ ;
+蕁麻疹 < jinmashin\ ;
+具申書 < gushinsho\ ;
+読書家 < dokushoka\ ;
+美術部 < bijutsubu\ ;
+感謝祭 < kanshasai\ ;
+貴方方 < anatagata\ ;
+調髪 < chouhatsu\ ;
+東京都 < toukyouto\ ;
+旧字体 < kyuujitai\ ;
+製作費 < seisakuhi\ ;
+二週間 < nishuukan\ ;
+部落民 < burakumin\ ;
+物質 < busshitsu\ ;
+早道 < hayamichi\ ;
+加盟国 < kameikoku\ ;
+一夜中 < hitoyajuu\ ;
+構造体 < kouzoutai\ ;
+中医学 < chuuigaku\ ;
+受信者 < jushinsha\ ;
+会議録 < kaigiroku\ ;
+禁煙車 < kin''ensha\ ;
+片道 < katamichi\ ;
+電子銃 < denshijuu\ ;
+具体策 < gutaisaku\ ;
+車掌区 < shashouku\ ;
+特設 < tokusetsu\ ;
+他国民 < takokumin\ ;
+儒学者 < jugakusha\ ;
+名探偵 < meitantei\ ;
+国連旗 < kokurenki\ ;
+鯣烏賊 < surumeika\ ;
+全市民 < zenshimin\ ;
+報道官 < houdoukan\ ;
+仏学 < butsugaku\ ;
+日本晴 < nihonbare\ ;
+布団皮 < futongawa\ ;
+修繕費 < shuuzenhi\ ;
+露霜 < tsuyujimo\ ;
+専門書 < senmonsho\ ;
+公用車 < kouyousha\ ;
+耐性菌 < taiseikin\ ;
+札束 < satsutaba\ ;
+同種類 < doushurui\ ;
+音域外 < on''ikigai\ ;
+夏鳥 < natsudori\ ;
+質問 < shitsumon\ ;
+親和性 < shinwasei\ ;
+前頭葉 < zentouyou\ ;
+珠暖簾 < tamanoren\ ;
+独立 < dokuritsu\ ;
+九星家 < kyuuseika\ ;
+通気孔 < tsuukikou\ ;
+月次 < tsukinami\ ;
+謬説 < byuusetsu\ ;
+隣人愛 < rinjin''ai\ ;
+不承知 < fushouchi\ ;
+死亡数 < shibousuu\ ;
+学卒 < gakusotsu\ ;
+居住権 < kyojuuken\ ;
+鉤括弧 < kagikakko\ ;
+倦怠感 < kentaikan\ ;
+冷蔵船 < reizousen\ ;
+奴輩 < yatsubara\ ;
+合成酒 < gouseishu\ ;
+味噌汁 < misoshiru\ ;
+指導者 < shidousha\ ;
+学力 < gakuryoku\ ;
+半可通 < hankatsuu\ ;
+無警告 < mukeikoku\ ;
+基本合意 < kihongoui\ ;
+大西郷 < daisaigou\ ;
+睡眠剤 < suiminzai\ ;
+旋盤工 < senbankou\ ;
+帯分数 < taibunsuu\ ;
+小児科医 < shounikai\ ;
+後継者 < koukeisha\ ;
+亮察 < ryousatsu\ ;
+天日塩 < tenpishio\ ;
+威圧的 < iatsuteki\ ;
+二重底 < nijuuzoko\ ;
+又弟子 < matadeshi\ ;
+救命具 < kyuumeigu\ ;
+中次 < nakatsugi\ ;
+禁猟区 < kinryouku\ ;
+弩級艦 < dokyuukan\ ;
+旧識 < kyuushiki\ ;
+人妻 < hitodzuma\ ;
+恒久化 < koukyuuka\ ;
+新釈 < shinshaku\ ;
+具体的 < gutaiteki\ ;
+腹一杯 < haraippai\ ;
+格理論 < kakuriron\ ;
+日諾 < nichidaku\ ;
+感謝状 < kanshajou\ ;
+股下 < matashita\ ;
+現行犯 < genkouhan\ ;
+珍客 < chinkyaku\ ;
+日付印 < hidzukein\ ;
+太陽灯 < taiyoutou\ ;
+我武者羅 < gamushara\ ;
+外面 < sotodzura\ ;
+情報源 < jouhougen\ ;
+春色 < shunshoku\ ;
+公使館 < koushikan\ ;
+翌月 < yokugetsu\ ;
+帆立貝 < hotategai\ ;
+若武者 < wakamusha\ ;
+京女 < kyouon''na\ ;
+清算書 < seisansho\ ;
+本街道 < honkaidou\ ;
+串柿 < kushigaki\ ;
+郵便車 < yuubinsha\ ;
+自己犠牲 < jikogisei\ ;
+翌日 < yokujitsu\ ;
+一点機 < ichitenki\ ;
+両極 < ryoukyoku\ ;
+夏風邪 < natsukaze\ ;
+仏名 < butsumyou\ ;
+特色 < tokushoku\ ;
+中道派 < chuudouha\ ;
+暴風域 < boufuuiki\ ;
+発禁本 < hakkinbon\ ;
+圧電気 < atsudenki\ ;
+巨人党 < kyojintou\ ;
+食客 < shokkyaku\ ;
+時代物 < jidaimono\ ;
+屏風岩 < byoubuiwa\ ;
+快記録 < kaikiroku\ ;
+父親 < chichioya\ ;
+暴風圏 < boufuuken\ ;
+仮住 < karizumai\ ;
+雪靴 < yukigutsu\ ;
+不成績 < fuseiseki\ ;
+現出 < genshutsu\ ;
+仏力 < butsuriki\ ;
+多音節 < taonsetsu\ ;
+連帯感 < rentaikan\ ;
+部分的 < bubunteki\ ;
+専門店 < senmonten\ ;
+慣用音 < kan''youon\ ;
+夜仕事 < yoshigoto\ ;
+演習林 < enshuurin\ ;
+下様 < shimozama\ ;
+某高校 < boukoukou\ ;
+繰越 < kurikoshi\ ;
+綿菓子 < watagashi\ ;
+跨線橋 < kosenkyou\ ;
+煙草盆 < tabakobon\ ;
+受験票 < jukenhyou\ ;
+内斜視 < naishashi\ ;
+電信機 < denshinki\ ;
+圧縮機 < asshukuki\ ;
+物腰 < monogoshi\ ;
+三椏 < mitsumata\ ;
+実行権 < jikkouken\ ;
+松原 < matsubara\ ;
+相互扶助 < sougofujo\ ;
+賃借 < chinshaku\ ;
+現行法 < genkouhou\ ;
+自然界 < shizenkai\ ;
+懸垂線 < kensuisen\ ;
+上手者 < jouzumono\ ;
+日本学 < nihongaku\ ;
+排障器 < haishouki\ ;
+真夏日 < manatsubi\ ;
+熟食 < jukushoku\ ;
+感無量 < kanmuryou\ ;
+給付金 < kyuufukin\ ;
+付人 < tsukebito\ ;
+代名詞 < daimeishi\ ;
+同音異義 < douon''igi\ ;
+救助船 < kyuujosen\ ;
+牽引車 < ken''insha\ ;
+居住性 < kyojuusei\ ;
+抗凝固 < kougyouko\ ;
+看護長 < kangochou\ ;
+低性能 < teiseinou\ ;
+無計画 < mukeikaku\ ;
+多面角 < tamenkaku\ ;
+低周波 < teishuuha\ ;
+理想郷 < risoukyou\ ;
+被爆者 < hibakusha\ ;
+精製糖 < seiseitou\ ;
+有用性 < yuuyousei\ ;
+娯楽街 < gorakugai\ ;
+後天性 < koutensei\ ;
+校友会 < kouyuukai\ ;
+単利表 < tanrihyou\ ;
+自己本位 < jikohon''i\ ;
+月影 < tsukikage\ ;
+療養所 < ryouyoujo\ ;
+保守的 < hoshuteki\ ;
+月形 < tsukigata\ ;
+皇民党 < koumintou\ ;
+二重唱 < nijuushou\ ;
+七曜 < shichiyou\ ;
+卵胎生 < rantaisei\ ;
+一月 < hitotsuki\ ;
+線香代 < senkoudai\ ;
+対角化 < taikakuka\ ;
+最高点 < saikouten\ ;
+天質 < tenshitsu\ ;
+下敷 < shitajiki\ ;
+最低限 < saiteigen\ ;
+七星 < shichisei\ ;
+歌合戦 < utagassen\ ;
+平和賞 < heiwashou\ ;
+数係数 < suukeisuu\ ;
+木炭画 < mokutanga\ ;
+再降臨 < saikourin\ ;
+星空 < hoshizora\ ;
+再調査 < saichousa\ ;
+高野槙 < kouyamaki\ ;
+定滑車 < teikassha\ ;
+似我蜂 < jigabachi\ ;
+旋光性 < senkousei\ ;
+名投手 < meitoushu\ ;
+特筆 < tokuhitsu\ ;
+一日 < tsuitachi\ ;
+採算性 < saisansei\ ;
+企業者 < kigyousha\ ;
+人伝 < hitodzute\ ;
+異常高温 < ijoukouon\ ;
+狐火 < kitsunebi\ ;
+銀砂子 < ginsunago\ ;
+爆裂 < bakuretsu\ ;
+特立 < tokuritsu\ ;
+人付 < hitodzuki\ ;
+国分寺 < kokubunji\ ;
+養豚場 < youtonjou\ ;
+非対称 < hitaishou\ ;
+不銹鋼 < fushuukou\ ;
+失言 < shitsugen\ ;
+一院制 < ichiinsei\ ;
+手仕事 < teshigoto\ ;
+胆嚢炎 < tan''nouen\ ;
+雪道 < yukimichi\ ;
+雑録 < zatsuroku\ ;
+強打者 < kyoudasha\ ;
+規範的 < kihanteki\ ;
+羅紗紙 < rashagami\ ;
+脱衣場 < datsuijou\ ;
+女腹 < on''nabara\ ;
+熱量 < netsuryou\ ;
+救助網 < kyuujomou\ ;
+雪辱 < setsujoku\ ;
+太陰暦 < taiinreki\ ;
+揚羽蝶 < agehachou\ ;
+頭株 < atamakabu\ ;
+士君子 < shikunshi\ ;
+腰羽目 < koshibame\ ;
+片一方 < kataippou\ ;
+阿片窟 < ahenkutsu\ ;
+失血 < shikketsu\ ;
+暦月 < rekigetsu\ ;
+吾木香 < waremokou\ ;
+変質 < henshitsu\ ;
+食出 < hamidashi\ ;
+大型車 < oogatasha\ ;
+夏季熱 < kakinetsu\ ;
+夜話 < yobanashi\ ;
+内陸霧 < nairikumu\ ;
+植字機 < shokujiki\ ;
+遊覧船 < yuuransen\ ;
+乳房炎 < nyuubouen\ ;
+脳挫傷 < nouzashou\ ;
+天袋 < tenbukuro\ ;
+学生課 < gakuseika\ ;
+靴紐 < kutsuhimo\ ;
+藁布団 < warabuton\ ;
+詳述 < shoujutsu\ ;
+投機心 < toukishin\ ;
+郵便船 < yuubinsen\ ;
+青年団 < seinendan\ ;
+勧告案 < kankokuan\ ;
+特発 < tokuhatsu\ ;
+軍事援助 < gunjienjo\ ;
+天文台 < tenmondai\ ;
+自然法 < shizenhou\ ;
+石灰洞 < sekkaidou\ ;
+弊衣破帽 < heiihabou\ ;
+靴篦 < kutsubera\ ;
+増刊号 < zoukangou\ ;
+下役 < shitayaku\ ;
+両岸 < ryougishi\ ;
+曲学 < kyokugaku\ ;
+内大臣 < naidaijin\ ;
+現在地 < genzaichi\ ;
+戦車隊 < senshatai\ ;
+熟達 < jukutatsu\ ;
+丑年 < ushidoshi\ ;
+二重丸 < nijuumaru\ ;
+露草 < tsuyukusa\ ;
+酒造場 < shuzoujou\ ;
+愛読者 < aidokusha\ ;
+七五三縄 < shimenawa\ ;
+文化遺産 < bunkaisan\ ;
+石灰水 < sekkaisui\ ;
+大地震 < daijishin\ ;
+評釈 < hyoushaku\ ;
+不拡大 < fukakudai\ ;
+主導者 < shudousha\ ;
+高蒔絵 < takamakie\ ;
+自然死 < shizenshi\ ;
+居住地 < kyojuuchi\ ;
+一律 < ichiritsu\ ;
+決死隊 < kesshitai\ ;
+主脳者 < shunousha\ ;
+舞楽面 < bugakumen\ ;
+魚介類 < gyokairui\ ;
+最高検 < saikouken\ ;
+熱汚染 < netsuosen\ ;
+恒星年 < kouseinen\ ;
+自在鉤 < jizaikagi\ ;
+競走馬 < kyousouba\ ;
+御手洗 < mitarashi\ ;
+増幅器 < zoufukuki\ ;
+日本側 < nihongawa\ ;
+人類史 < jinruishi\ ;
+苦労様 < kurousama\ ;
+禀請書 < rinseisho\ ;
+風口 < kazaguchi\ ;
+俳諧師 < haikaishi\ ;
+夏蝉 < natsuzemi\ ;
+自家受精 < jikajusei\ ;
+慣用語 < kan''yougo\ ;
+女学生 < jogakusei\ ;
+電子管 < denshikan\ ;
+梵天王 < bonten''ou\ ;
+霞草 < kasumisou\ ;
+合成紙 < gouseishi\ ;
+黄銅鉱 < koudoukou\ ;
+自家受粉 < jikajufun\ ;
+牧畜 < bokuchiku\ ;
+司教区 < shikyouku\ ;
+解散権 < kaisanken\ ;
+適齢期 < tekireiki\ ;
+威嚇的 < ikakuteki\ ;
+銃連射 < juurensha\ ;
+免税品 < menzeihin\ ;
+焼餅 < yakimochi\ ;
+高水準 < kousuijun\ ;
+太陽年 < taiyounen\ ;
+民生委員 < minseiiin\ ;
+石細工 < ishizaiku\ ;
+寝小便 < neshouben\ ;
+末僚 < batsuryou\ ;
+冷蔵法 < reizouhou\ ;
+配分法 < haibunhou\ ;
+耽美的 < tanbiteki\ ;
+註釈 < chuushaku\ ;
+潜航艇 < senkoutei\ ;
+同窓生 < dousousei\ ;
+放浪者 < hourousha\ ;
+種概念 < shugainen\ ;
+早明戦 < soumeisen\ ;
+微積分 < bisekibun\ ;
+鳥瞰図 < choukanzu\ ;
+女王蜂 < jooubachi\ ;
+新緑 < shinryoku\ ;
+失脚 < shikkyaku\ ;
+外交官 < gaikoukan\ ;
+歯肉炎 < shinikuen\ ;
+自然林 < shizenrin\ ;
+演習場 < enshuujou\ ;
+小麦色 < komugiiro\ ;
+復古調 < fukkochou\ ;
+反省会 < hanseikai\ ;
+熱帯魚 < nettaigyo\ ;
+失職 < shisshoku\ ;
+単葉機 < tan''youki\ ;
+愛他主義 < aitashugi\ ;
+所有者 < shoyuusha\ ;
+販売者 < hanbaisha\ ;
+主人顔 < shujingao\ ;
+滑稽者 < odokemono\ ;
+水飢饉 < mizukikin\ ;
+海上法 < kaijouhou\ ;
+熱可塑 < netsukaso\ ;
+夏菊 < natsugiku\ ;
+一党一派 < ittouippa\ ;
+化学品 < kagakuhin\ ;
+縞蛇 < shimahebi\ ;
+中哲 < chuutetsu\ ;
+子沢山 < kodakusan\ ;
+余水吐 < yosuihaki\ ;
+怪奇映画 < kaikieiga\ ;
+訳述 < yakujutsu\ ;
+新築 < shinchiku\ ;
+夏草 < natsugusa\ ;
+昨年度 < sakunendo\ ;
+玉串 < tamagushi\ ;
+自然数 < shizensuu\ ;
+再訂版 < saiteiban\ ;
+青年会 < seinenkai\ ;
+中口 < nakaguchi\ ;
+女癖 < on''naguse\ ;
+現地人 < genchijin\ ;
+懐疑心 < kaigishin\ ;
+姥桜 < ubazakura\ ;
+朝日影 < asahikage\ ;
+釈迦牟尼 < shakamuni\ ;
+誘導弾 < yuudoudan\ ;
+販売網 < hanbaimou\ ;
+中卒 < chuusotsu\ ;
+八百万 < yaoyorozu\ ;
+下坂 < shimosaka\ ;
+貧乏人 < binbounin\ ;
+工事中 < koujichuu\ ;
+窃盗罪 < settouzai\ ;
+風下 < kazashimo\ ;
+霞網 < kasumiami\ ;
+原裁判 < gensaiban\ ;
+点火薬 < tenkayaku\ ;
+海上権 < kaijouken\ ;
+化学剤 < kagakuzai\ ;
+精製法 < seiseihou\ ;
+両口 < ryouguchi\ ;
+方眼紙 < houganshi\ ;
+受賞者 < jushousha\ ;
+推薦者 < suisensha\ ;
+雪模様 < yukimoyou\ ;
+爆竹 < bakuchiku\ ;
+一級品 < ikkyuuhin\ ;
+格子点 < koushiten\ ;
+日独 < nichidoku\ ;
+購買者 < koubaisha\ ;
+一等賞 < ittoushou\ ;
+他国人 < takokujin\ ;
+空気浴 < kuukiyoku\ ;
+旧物 < kyuubutsu\ ;
+獣偏 < kemonohen\ ;
+外交団 < gaikoudan\ ;
+執行部 < shikkoubu\ ;
+露程 < tsuyuhodo\ ;
+調節 < chousetsu\ ;
+理神論 < rishinron\ ;
+受験料 < jukenryou\ ;
+頭字 < kashiraji\ ;
+勝手元 < kattemoto\ ;
+相対論 < soutairon\ ;
+刊行会 < kankoukai\ ;
+獄卒 < gokusotsu\ ;
+保育料 < hoikuryou\ ;
+総資産 < soushisan\ ;
+住民税 < juuminzei\ ;
+且又 < katsumata\ ;
+俸給日 < houkyuubi\ ;
+物流 < butsuryuu\ ;
+両凸 < ryoutotsu\ ;
+陳述 < chinjutsu\ ;
+行政府 < gyouseifu\ ;
+処女膜 < shojomaku\ ;
+随伴者 < zuihansha\ ;
+新着 < shinchaku\ ;
+女物 < on''namono\ ;
+不印 < fujirushi\ ;
+悪宣伝 < akusenden\ ;
+書付 < kakitsuke\ ;
+多面的 < tamenteki\ ;
+詰草 < tsumekusa\ ;
+対戦車 < taisensha\ ;
+中位 < chuugurai\ ;
+熊蜂 < kumabachi\ ;
+苦労性 < kuroushou\ ;
+恐妻家 < kyousaika\ ;
+半鹹水 < hankansui\ ;
+社会経済 < shakaikei\ ;
+結跏趺座 < kekkafuza\ ;
+密航者 < mikkousha\ ;
+一等親 < ittoushin\ ;
+教職 < kyoushoku\ ;
+失礼 < shitsurei\ ;
+補強筋 < hokyoukin\ ;
+看板屋 < kanban''ya\ ;
+社員寮 < shainryou\ ;
+呼吸法 < kokyuuhou\ ;
+物欲 < butsuyoku\ ;
+一口 < hitokuchi\ ;
+擂鉢 < suribachi\ ;
+体量器 < tairyouki\ ;
+化学上 < kagakujou\ ;
+伽藍鳥 < garanchou\ ;
+心臓部 < shinzoubu\ ;
+爆発 < bakuhatsu\ ;
+最高峰 < saikouhou\ ;
+競輪場 < keirinjou\ ;
+重婚者 < juukonsha\ ;
+要撃機 < yougekiki\ ;
+気化熱 < kikanetsu\ ;
+昨日 < sakujitsu\ ;
+日教組 < nikkyouso\ ;
+蓖麻子油 < himashiyu\ ;
+縮約 < shukuyaku\ ;
+三等星 < santousei\ ;
+命名法 < meimeihou\ ;
+参加国 < sankakoku\ ;
+未開拓 < mikaitaku\ ;
+再編成 < saihensei\ ;
+失着 < shitchaku\ ;
+透水性 < tousuisei\ ;
+一列 < ichiretsu\ ;
+反対論 < hantairon\ ;
+学芸員 < gakugeiin\ ;
+冷凍魚 < reitougyo\ ;
+敗残兵 < haizanhei\ ;
+下側 < shitagawa\ ;
+雀色 < suzumeiro\ ;
+書生論 < shoseiron\ ;
+財政難 < zaiseinan\ ;
+一儲 < hitomouke\ ;
+制癌剤 < seiganzai\ ;
+族滅 < zokumetsu\ ;
+発泡剤 < happouzai\ ;
+伝奇的 < denkiteki\ ;
+絆創膏 < bansoukou\ ;
+下作 < shitasaku\ ;
+石灰岩 < sekkaigan\ ;
+調略 < chouryaku\ ;
+兵学校 < heigakkou\ ;
+富山県 < toyamaken\ ;
+該当者 < gaitousha\ ;
+点数制 < tensuusei\ ;
+昔日 < sekijitsu\ ;
+高知県 < kouchiken\ ;
+口上書 < koujousho\ ;
+解放感 < kaihoukan\ ;
+平和的 < heiwateki\ ;
+自閉症 < jiheishou\ ;
+飲用水 < in''yousui\ ;
+太陽光 < taiyoukou\ ;
+橋頭保 < kyoutouho\ ;
+古書市 < koshoichi\ ;
+天然塩 < ten''nenen\ ;
+断熱 < dan''netsu\ ;
+明日 < myounichi\ ;
+下下 < shimojimo\ ;
+敷石 < shikiishi\ ;
+特撮 < tokusatsu\ ;
+公害罪 < kougaizai\ ;
+淫売宿 < inbaiyado\ ;
+起請文 < kishoumon\ ;
+願事 < negaigoto\ ;
+碁盤縞 < gobanjima\ ;
+頻出 < hinshutsu\ ;
+網袋 < amibukuro\ ;
+俗世間 < zokuseken\ ;
+甘納豆 < amanattou\ ;
+乾酪素 < kanrakuso\ ;
+冶金学 < yakingaku\ ;
+冗長度 < jouchoudo\ ;
+角逐 < kakuchiku\ ;
+私家集 < shikashuu\ ;
+七三 < shichisan\ ;
+細面 < hosoomote\ ;
+市街地 < shigaichi\ ;
+可読性 < kadokusei\ ;
+明示的 < meijiteki\ ;
+大回転 < daikaiten\ ;
+呉服店 < gofukuten\ ;
+中華丼 < chuukadon\ ;
+大西洋 < taiseiyou\ ;
+理想的 < risouteki\ ;
+妻帯者 < saitaisha\ ;
+八宝菜 < happousai\ ;
+双蹄獸 < souteijuu\ ;
+集結 < shuuketsu\ ;
+国全土 < kokuzendo\ ;
+二進法 < nishinhou\ ;
+西風 < nishikaze\ ;
+自然増 < shizenzou\ ;
+時代劇 < jidaigeki\ ;
+夏痩 < natsuyase\ ;
+混成酒 < konseishu\ ;
+公倍数 < koubaisuu\ ;
+処方箋 < shohousen\ ;
+癌細胞 < gansaibou\ ;
+累減税 < ruigenzei\ ;
+所作事 < shosagoto\ ;
+無限小 < mugenshou\ ;
+物指 < monosashi\ ;
+窃盗犯 < settouhan\ ;
+仕手株 < shitekabu\ ;
+口下手 < kuchibeta\ ;
+金曜日 < kin''youbi\ ;
+低水準 < teisuijun\ ;
+製作所 < seisakujo\ ;
+伝声管 < denseikan\ ;
+量子化 < ryoushika\ ;
+星影 < hoshikage\ ;
+独力 < dokuryoku\ ;
+好一対 < kouittsui\ ;
+触診 < shokushin\ ;
+事務局 < jimukyoku\ ;
+壺皿 < tsubozara\ ;
+副鼻腔 < fukubikuu\ ;
+浪費癖 < rouhiheki\ ;
+給費生 < kyuuhisei\ ;
+県人会 < kenjinkai\ ;
+主任者 < shuninsha\ ;
+公用文 < kouyoubun\ ;
+罪人 < tsumibito\ ;
+行政区 < gyouseiku\ ;
+推薦状 < suisenjou\ ;
+中距離 < chuukyori\ ;
+共産化 < kyousanka\ ;
+会期中 < kaikichuu\ ;
+野球場 < yakyuujou\ ;
+閑古鳥 < kankodori\ ;
+産褥期 < sanjokuki\ ;
+主導権 < shudouken\ ;
+募金箱 < bokinbako\ ;
+硬口蓋 < koukougai\ ;
+敷物 < shikimono\ ;
+史記抄 < shikishou\ ;
+年齢層 < nenreisou\ ;
+頭頂部 < touchoubu\ ;
+雪男 < yukiotoko\ ;
+早場米 < hayabamai\ ;
+口語訳 < kougoyaku\ ;
+油圧計 < yuatsukei\ ;
+夏物 < natsumono\ ;
+二毛作 < nimousaku\ ;
+検糖計 < kentoukei\ ;
+誘導体 < yuudoutai\ ;
+真四角 < mashikaku\ ;
+申命記 < shinmeiki\ ;
+脂肪層 < shibousou\ ;
+統計 < baratsuki\ ;
+物品税 < buppinzei\ ;
+鳳翅鐘 < houshitou\ ;
+女方 < on''nagata\ ;
+新橋 < shinbashi\ ;
+層積雲 < sousekiun\ ;
+秒時計 < byoudokei\ ;
+珊瑚礁 < sangoshou\ ;
+連体詞 < rentaishi\ ;
+熱病 < netsubyou\ ;
+電熱 < den''netsu\ ;
+星屑 < hoshikuzu\ ;
+天気具合 < tenkiguai\ ;
+屁理屈 < herikutsu\ ;
+志願者 < shigansha\ ;
+浪人生 < rouninsei\ ;
+不可逆 < fukagyaku\ ;
+隔絶 < kakuzetsu\ ;
+独仏 < dokufutsu\ ;
+大阪市 < oosakashi\ ;
+妻室 < saishitsu\ ;
+愛読書 < aidokusho\ ;
+可塑物 < kasobutsu\ ;
+新造語 < shinzougo\ ;
+物干 < monohoshi\ ;
+反対者 < hantaisha\ ;
+細道 < hosomichi\ ;
+黒砂糖 < kurozatou\ ;
+玄米茶 < genmaicha\ ;
+演繹法 < en''ekihou\ ;
+臨場感 < rinjoukan\ ;
+熱球 < netsukyuu\ ;
+偏西風 < henseifuu\ ;
+香味料 < koumiryou\ ;
+正甲板 < seikanpan\ ;
+審議会 < shingikai\ ;
+青森県 < aomoriken\ ;
+不感症 < fukanshou\ ;
+縞物 < shimamono\ ;
+禁衛隊 < kin''eitai\ ;
+新枕 < niimakura\ ;
+放水車 < housuisha\ ;
+耐水性 < taisuisei\ ;
+玄関番 < genkanban\ ;
+前夜祭 < zen''yasai\ ;
+月桂冠 < gekkeikan\ ;
+給血 < kyuuketsu\ ;
+二刀流 < nitouryuu\ ;
+新札 < shinsatsu\ ;
+所有権 < shoyuuken\ ;
+冷凍車 < reitousha\ ;
+新月 < shingetsu\ ;
+来会者 < raikaisha\ ;
+新曲 < shinkyoku\ ;
+一口同音 < ikkudouon\ ;
+上等品 < joutouhin\ ;
+荒療治 < araryouji\ ;
+楽観論 < rakkanron\ ;
+倶舎宗 < kushashuu\ ;
+無言劇 < mugongeki\ ;
+入苑券 < nyuuenken\ ;
+腱鞘炎 < kenshouen\ ;
+不可思議 < fukashigi\ ;
+高年者 < kounensha\ ;
+詰物 < tsumemono\ ;
+探海灯 < tankaitou\ ;
+無規律 < mukiritsu\ ;
+烏貝 < karasugai\ ;
+靴底 < kutsuzoko\ ;
+形容詞 < keiyoushi\ ;
+医事伝道 < ijidendou\ ;
+旧年 < furutoshi\ ;
+岩雲雀 < iwahibari\ ;
+星型 < hoshigata\ ;
+徒競走 < tokyousou\ ;
+不戦勝 < fusenshou\ ;
+自然人 < shizenjin\ ;
+家庭的 < kateiteki\ ;
+高気圧 < koukiatsu\ ;
+滑稽本 < kokkeibon\ ;
+女子寮 < joshiryou\ ;
+失望 < shitsubou\ ;
+政治的 < seijiteki\ ;
+上等兵 < joutouhei\ ;
+焼結 < shouketsu\ ;
+原稿紙 < genkoushi\ ;
+色眼鏡 < iromegane\ ;
+楽譜台 < gakufudai\ ;
+冷水塊 < reisuikai\ ;
+保護色 < hogoshoku\ ;
+塵紙 < chirigami\ ;
+色収差 < iroshuusa\ ;
+美術家 < bijutsuka\ ;
+再評価 < saihyouka\ ;
+失明 < shitsumei\ ;
+準備中 < junbichuu\ ;
+光合成 < kougousei\ ;
+悪条件 < akujouken\ ;
+三悪趣 < sanakushu\ ;
+主産地 < shusanchi\ ;
+音部記号 < onbukigou\ ;
+巻積雲 < kensekiun\ ;
+希硫酸 < kiryuusan\ ;
+文月 < fumidzuki\ ;
+脱穀機 < dakkokuki\ ;
+鼎談会 < teidankai\ ;
+複本位 < fukuhon''i\ ;
+俗趣味 < zokushumi\ ;
+終止符 < shuushifu\ ;
+炭質 < tanshitsu\ ;
+精製品 < seiseihin\ ;
+憲兵隊 < kenpeitai\ ;
+誅殺 < chuusatsu\ ;
+大昔 < oomukashi\ ;
+配偶者 < haiguusha\ ;
+充当金 < juutoukin\ ;
+消火栓 < shoukasen\ ;
+奈良時代 < narajidai\ ;
+寄留者 < kiryuusha\ ;
+灰神楽 < haikagura\ ;
+金一封 < kin''ippuu\ ;
+床運動 < yukaundou\ ;
+長靴 < nagagutsu\ ;
+寄生虫 < kiseichuu\ ;
+糸車 < itoguruma\ ;
+夜晒 < yozarashi\ ;
+三等分 < santoubun\ ;
+喫水線 < kissuisen\ ;
+夏服 < natsufuku\ ;
+悪玉化 < akudamaka\ ;
+超簡易 < choukan''i\ ;
+靴墨 < kutsuzumi\ ;
+裸馬 < hadakauma\ ;
+戯作者 < gesakusha\ ;
+妹分 < imoutobun\ ;
+日墨 < nichiboku\ ;
+新式 < shinshiki\ ;
+青瓢箪 < aobyoutan\ ;
+患者様 < kanjasama\ ;
+五寸釘 < gosunkugi\ ;
+仮登記 < karitouki\ ;
+合同軍 < goudougun\ ;
+夏時 < natsudoki\ ;
+炸裂 < sakuretsu\ ;
+特別 < tokubetsu\ ;
+複雑 < fukuzatsu\ ;
+靴型 < kutsugata\ ;
+粒食 < ryuushoku\ ;
+非現業 < higengyou\ ;
+勤労者 < kinrousha\ ;
+固定長 < koteichou\ ;
+殺菌剤 < sakkinzai\ ;
+結膜 < ketsumaku\ ;
+洋服屋 < youfukuya\ ;
+起爆剤 < kibakuzai\ ;
+表示灯 < hyoujitou\ ;
+便利帳 < benrichou\ ;
+取材班 < shuzaihan\ ;
+脂肪体 < shiboutai\ ;
+郵便屋 < yuubin''ya\ ;
+縞柄 < shimagara\ ;
+中辞典 < chuujiten\ ;
+洗面台 < senmendai\ ;
+失恋 < shitsuren\ ;
+内裏雛 < dairibina\ ;
+全二重 < zen''nijuu\ ;
+溶解性 < youkaisei\ ;
+失念 < shitsunen\ ;
+雨曇 < amagumori\ ;
+整数論 < seisuuron\ ;
+評決 < hyouketsu\ ;
+民社党 < minshatou\ ;
+企画書 < kikakusho\ ;
+生地獄 < ikijigoku\ ;
+純米酒 < junmaishu\ ;
+回遊魚 < kaiyuugyo\ ;
+無関心 < mukanshin\ ;
+耳鼻咽喉 < jibiinkou\ ;
+女坂 < on''nazaka\ ;
+続発 < zokuhatsu\ ;
+友人間 < yuujinkan\ ;
+有斐閣 < yuuhikaku\ ;
+販売店 < hanbaiten\ ;
+雑株 < zatsukabu\ ;
+志望校 < shiboukou\ ;
+奉迎門 < hougeimon\ ;
+牛刺 < gyuusashi\ ;
+執著 < shuuchaku\ ;
+面会人 < menkainin\ ;
+一箇月 < ikkagetsu\ ;
+送水管 < sousuikan\ ;
+糖質 < toushitsu\ ;
+冷凍船 < reitousen\ ;
+年配者 < nenpaisha\ ;
+手数料 < tesuuryou\ ;
+離魂病 < rikonbyou\ ;
+空気汚染 < kuukiosen\ ;
+片口 < katakuchi\ ;
+水中花 < suichuuka\ ;
+動名詞 < doumeishi\ ;
+細腰 < hosogoshi\ ;
+烏帽子貝 < eboshigai\ ;
+黄金色 < koganeiro\ ;
+二元的 < nigenteki\ ;
+縞栗鼠 < shimarisu\ ;
+娯楽場 < gorakujou\ ;
+遊覧地 < yuuranchi\ ;
+本因坊 < hon''inbou\ ;
+共栄圏 < kyoueiken\ ;
+相対死 < aitaijini\ ;
+国自慢 < kunijiman\ ;
+重大視 < juudaishi\ ;
+企業内 < kigyounai\ ;
+集札 < shuusatsu\ ;
+同窓会 < dousoukai\ ;
+法蓮草 < hourensou\ ;
+海外版 < kaigaiban\ ;
+扇状地 < senjouchi\ ;
+日出 < nisshutsu\ ;
+打撃戦 < dagekisen\ ;
+有象無象 < uzoumuzou\ ;
+透写紙 < toushashi\ ;
+人文史 < jinbunshi\ ;
+指定券 < shiteiken\ ;
+香水瓶 < kousuibin\ ;
+熱帯病 < netaibyou\ ;
+伝記物 < denkimono\ ;
+計量器 < keiryouki\ ;
+補償金 < hoshoukin\ ;
+軽犯罪 < keihanzai\ ;
+坪量 < tsuboryou\ ;
+合憲性 < goukensei\ ;
+地鎮祭 < jichinsai\ ;
+主体性 < shutaisei\ ;
+素粒子 < soryuushi\ ;
+蝿地獄 < haejigoku\ ;
+大災害 < daisaigai\ ;
+奴凧 < yakkodako\ ;
+楽天家 < rakutenka\ ;
+理性的 < riseiteki\ ;
+綿油 < wataabura\ ;
+然然 < shikajika\ ;
+鼓笛隊 < kotekitai\ ;
+起訴猶予 < kisoyuuyo\ ;
+寒暖計 < kandankei\ ;
+花粉症 < kafunshou\ ;
+人為的 < jin''iteki\ ;
+伊勢神宮 < isejinguu\ ;
+受領者 < juryousha\ ;
+企画性 < kikakusei\ ;
+内需型 < naijugata\ ;
+尸位素餐 < shiisosan\ ;
+焦熱 < shounetsu\ ;
+原成岩 < genseigan\ ;
+表示板 < hyoujiban\ ;
+夏山 < natsuyama\ ;
+爪切 < tsumekiri\ ;
+永久歯 < eikyuushi\ ;
+千社札 < senjafuda\ ;
+菩提心 < bodaishin\ ;
+政所 < mandokoro\ ;
+教式 < kyoushiki\ ;
+表示書 < hyoujisho\ ;
+放水管 < housuikan\ ;
+双子葉 < soushiyou\ ;
+性転換 < seitenkan\ ;
+輸送量 < yusouryou\ ;
+所有地 < shoyuuchi\ ;
+鼓手長 < koshuchou\ ;
+爪先 < tsumasaki\ ;
+総本店 < souhonten\ ;
+元気者 < genkimono\ ;
+代弁者 < daibensha\ ;
+野天風呂 < notenburo\ ;
+町医者 < machiisha\ ;
+製材所 < seizaisho\ ;
+塩漬 < shiodzuke\ ;
+反乱軍 < hanrangun\ ;
+総人口 < soujinkou\ ;
+店仕舞 < misejimai\ ;
+中保者 < chuuhosha\ ;
+奔出 < honshutsu\ ;
+立法者 < rippousha\ ;
+草相撲 < kusazumou\ ;
+予備錨 < yobiikari\ ;
+隔月 < kakugetsu\ ;
+歓送会 < kansoukai\ ;
+双翅類 < soushirui\ ;
+紙細工 < kamizaiku\ ;
+山水荘 < sansuisou\ ;
+表沙汰 < omotezata\ ;
+唐獅子 < karajishi\ ;
+平和国 < heiwakoku\ ;
+低気圧 < teikiatsu\ ;
+作業用 < sagyouyou\ ;
+撃発 < gekihatsu\ ;
+執筆 < shippitsu\ ;
+水害地 < suigaichi\ ;
+総本山 < souhonzan\ ;
+演説家 < enzetsuka\ ;
+盲腸炎 < mouchouen\ ;
+斥力 < sekiryoku\ ;
+終発 < shuuhatsu\ ;
+遣唐使 < kentoushi\ ;
+坂道 < sakamichi\ ;
+作業班 < sagyouhan\ ;
+活性炭 < kasseitan\ ;
+最小化 < saishouka\ ;
+乗降場 < joukoujou\ ;
+俗世界 < zokusekai\ ;
+毛織物 < keorimono\ ;
+志願書 < shigansho\ ;
+不死鳥 < fushichou\ ;
+悲観的 < hikanteki\ ;
+撲滅 < bokumetsu\ ;
+成功者 < seikousha\ ;
+看護学 < kangogaku\ ;
+上向線 < joukousen\ ;
+消炎剤 < shouenzai\ ;
+公休日 < koukyuubi\ ;
+総罷業 < souhigyou\ ;
+再投資 < saitoushi\ ;
+歌劇場 < kagekijou\ ;
+浄水場 < jousuijou\ ;
+雪女 < yukion''na\ ;
+詳密 < shoumitsu\ ;
+水耕法 < suikouhou\ ;
+大演習 < daienshuu\ ;
+無理無体 < murimutai\ ;
+実測図 < jissokuzu\ ;
+膨張度 < bouchoudo\ ;
+映写幕 < eishamaku\ ;
+上水道 < jousuidou\ ;
+全住民 < zenjuumin\ ;
+浄水地 < jousuichi\ ;
+雑学 < zatsugaku\ ;
+均質 < kinshitsu\ ;
+男性用 < danseiyou\ ;
+好奇心 < koukishin\ ;
+肉体美 < nikutaibi\ ;
+国家的 < kokkateki\ ;
+犠牲的 < giseiteki\ ;
+連子窓 < renjimado\ ;
+相対性 < soutaisei\ ;
+烏瓜 < karasuuri\ ;
+関心事 < kanshinji\ ;
+北斗星 < hokutosei\ ;
+本拠地 < honkyochi\ ;
+舞踏病 < butoubyou\ ;
+内外人 < naigaijin\ ;
+撲殺 < bokusatsu\ ;
+摘発 < tekihatsu\ ;
+下種女 < gesuon''na\ ;
+赤電車 < akadensha\ ;
+夏向 < natsumuki\ ;
+粘板岩 < nenbangan\ ;
+事業者 < jigyousha\ ;
+歓迎会 < kangeikai\ ;
+託児所 < takujisho\ ;
+水時計 < mizudokei\ ;
+捨鉢 < sutebachi\ ;
+盲導犬 < moudouken\ ;
+販売人 < hanbainin\ ;
+鯐 < subashiri\ ;
+人国記 < jinkokuki\ ;
+普及版 < fukyuuban\ ;
+鮗 < konoshiro\ ;
+半部族 < hanbuzoku\ ;
+飛道具 < tobidougu\ ;
+人間界 < ningenkai\ ;
+乳母車 < ubaguruma\ ;
+惨死体 < zanshitai\ ;
+堅物 < katabutsu\ ;
+運搬人 < unpan''nin\ ;
+抗生剤 < kouseizai\ ;
+国鉄 < kokutetsu\ ;
+角樽 < tsunodaru\ ;
+撃滅 < gekimetsu\ ;
+世迷言 < yomaigoto\ ;
+伝言板 < dengonban\ ;
+自立語 < jiritsugo\ ;
+糧秣 < ryoumatsu\ ;
+熱帯林 < nettairin\ ;
+永久性 < eikyuusei\ ;
+製本屋 < seihon''ya\ ;
+汽車賃 < kishachin\ ;
+隣室 < rinshitsu\ ;
+禁裏様 < kinrisama\ ;
+慣用句 < kan''youku\ ;
+観光地 < kankouchi\ ;
+会見者 < kaikensha\ ;
+東天紅 < toutenkou\ ;
+観光団 < kankoudan\ ;
+技巧的 < gikouteki\ ;
+楽隠居 < rakuinkyo\ ;
+高速度 < kousokudo\ ;
+私生子 < shiseishi\ ;
+日記帳 < nikkichou\ ;
+政治学 < seijigaku\ ;
+外付 < sotodzuke\ ;
+水理学 < suirigaku\ ;
+母子寮 < boshiryou\ ;
+着心地 < kigokochi\ ;
+夏作 < natsusaku\ ;
+戒厳令 < kaigenrei\ ;
+投与量 < touyoryou\ ;
+照尺 < shoushaku\ ;
+意気軒高 < ikikenkou\ ;
+雪兎 < yukiusagi\ ;
+哺乳類 < honyuurui\ ;
+大蝙蝠 < ookoumori\ ;
+無投票 < mutouhyou\ ;
+指了図 < shiryouzu\ ;
+適応性 < tekiousei\ ;
+襲爵 < shuushaku\ ;
+漫才師 < manzaishi\ ;
+事業税 < jigyouzei\ ;
+収容所 < shuuyoujo\ ;
+国璽書 < kokujisho\ ;
+感覚器 < kankakuki\ ;
+教育費 < kyouikuhi\ ;
+固定給 < koteikyuu\ ;
+展覧会 < tenrankai\ ;
+交代制 < koutaisei\ ;
+阝 < kozatohen\ ;
+覆滅 < fukumetsu\ ;
+巡視艇 < junshitei\ ;
+巡視船 < junshisen\ ;
+汎関数 < hankansuu\ ;
+全人生 < zenjinsei\ ;
+断強度 < dankyoudo\ ;
+処女作 < shojosaku\ ;
+個性的 < koseiteki\ ;
+墨壷 < sumitsubo\ ;
+全音階 < zen''onkai\ ;
+誅伐 < chuubatsu\ ;
+反乱者 < hanransha\ ;
+軽音楽 < keiongaku\ ;
+回復期 < kaifukuki\ ;
+不合格 < fugoukaku\ ;
+周波計 < shuuhakei\ ;
+不可欠 < fukaketsu\ ;
+放出 < houshutsu\ ;
+終極 < shuukyoku\ ;
+硬化症 < koukashou\ ;
+逆効果 < gyakkouka\ ;
+裸線 < hadakasen\ ;
+覆没 < fukubotsu\ ;
+一等国 < ittoukoku\ ;
+全封地 < zenhouchi\ ;
+分配金 < bunpaikin\ ;
+語尾変化 < gobihenka\ ;
+回遊船 < kaiyuusen\ ;
+公会堂 < koukaidou\ ;
+無表情 < muhyoujou\ ;
+煩型 < urusagata\ ;
+水餃子 < suigyouza\ ;
+詔勅 < shouchoku\ ;
+風土病 < fuudobyou\ ;
+支出 < shishutsu\ ;
+逃避的 < touhiteki\ ;
+古文学 < kobungaku\ ;
+優等生 < yuutousei\ ;
+綢密 < chuumitsu\ ;
+固定票 < koteihyou\ ;
+対向車 < taikousha\ ;
+組曲 < kumikyoku\ ;
+事業界 < jigyoukai\ ;
+批判的 < hihanteki\ ;
+天地人 < tenchijin\ ;
+血統書 < kettousho\ ;
+中二階 < chuunikai\ ;
+継室 < keishitsu\ ;
+国表 < kuniomote\ ;
+山葡萄 < yamabudou\ ;
+黄道面 < koudoumen\ ;
+受難週 < junanshuu\ ;
+尊厳死 < songenshi\ ;
+考古学 < koukogaku\ ;
+保険証 < hokenshou\ ;
+高分子 < koubunshi\ ;
+冥加金 < myougakin\ ;
+内地米 < naichimai\ ;
+枯葉剤 < karehazai\ ;
+締切 < shimekiri\ ;
+招待日 < shoutaibi\ ;
+誓願権 < seiganken\ ;
+愛国者 < aikokusha\ ;
+訴願人 < sogan''nin\ ;
+領事館 < ryoujikan\ ;
+主犯者 < shuhansha\ ;
+防護壁 < bougoheki\ ;
+資金源 < shikingen\ ;
+鼠咬症 < sokoushou\ ;
+三重盗 < sanjuutou\ ;
+連体形 < rentaikei\ ;
+土色 < tsuchiiro\ ;
+現段階 < gendankai\ ;
+成年者 < seinensha\ ;
+金解禁 < kinkaikin\ ;
+羽子突 < hanetsuki\ ;
+洗濯粉 < sentakuko\ ;
+光化学 < koukagaku\ ;
+農学部 < nougakubu\ ;
+主任制 < shuninsei\ ;
+舞踏服 < butoufuku\ ;
+経験論 < keikenron\ ;
+経験談 < keikendan\ ;
+接続 < setsuzoku\ ;
+擦過傷 < sakkashou\ ;
+米粒 < kometsubu\ ;
+糟漬 < kasudzuke\ ;
+四重奏 < shijuusou\ ;
+踝 < kurubushi\ ;
+相対値 < soutaichi\ ;
+母子共 < boshitomo\ ;
+鉄火巻 < tekkamaki\ ;
+英作文 < eisakubun\ ;
+戦車兵 < senshahei\ ;
+再投稿 < saitoukou\ ;
+教養部 < kyouyoubu\ ;
+立法権 < rippouken\ ;
+妥協点 < dakyouten\ ;
+雲仙岳 < unzendake\ ;
+受領書 < juryousho\ ;
+不活化 < fukatsuka\ ;
+文章語 < bunshougo\ ;
+青信号 < aoshingou\ ;
+時計皿 < tokeizara\ ;
+幽冥界 < yuumeikai\ ;
+執行吏 < shikkouri\ ;
+等高線 < toukousen\ ;
+絞首台 < koushudai\ ;
+破擦音 < hasatsuon\ ;
+送受信 < soujushin\ ;
+撫子 < nadeshiko\ ;
+一神論 < isshinron\ ;
+着道楽 < kidouraku\ ;
+明後年 < myougonen\ ;
+法務省 < houmushou\ ;
+酵素学 < kousogaku\ ;
+糠油 < nukaabura\ ;
+長物 < choubutsu\ ;
+図像学 < zuzougaku\ ;
+奉加帳 < hougachou\ ;
+感嘆詞 < kantanshi\ ;
+前売券 < maeuriken\ ;
+親心 < oyagokoro\ ;
+衆説 < shuusetsu\ ;
+志願兵 < shiganhei\ ;
+反射光 < hanshakou\ ;
+皮細工 < kawazaiku\ ;
+復水器 < fukusuiki\ ;
+関連性 < kanrensei\ ;
+統語学 < tougogaku\ ;
+絶妙 < zetsumyou\ ;
+講演料 < kouenryou\ ;
+敬老会 < keiroukai\ ;
+時間軸 < jikanjiku\ ;
+反対党 < hantaitou\ ;
+搭乗者 < toujousha\ ;
+九分九厘 < kubukurin\ ;
+糸桜 < itozakura\ ;
+社民党 < shamintou\ ;
+絞首刑 < koushukei\ ;
+創建者 < soukensha\ ;
+最大限 < saidaigen\ ;
+陳列 < chinretsu\ ;
+糸柳 < itoyanagi\ ;
+楓子香 < fuushikou\ ;
+混成岩 < konseigan\ ;
+執拗 < shitsuyou\ ;
+紙粘土 < kaminendo\ ;
+条件文 < joukenbun\ ;
+意識体 < ishikitai\ ;
+私企業 < shikigyou\ ;
+空模様 < soramoyou\ ;
+公有林 < kouyuurin\ ;
+山水楼 < sansuirou\ ;
+裃 < kamishimo\ ;
+寄留地 < kiryuuchi\ ;
+断剛性 < dangousei\ ;
+空元気 < karagenki\ ;
+衤 < koromohen\ ;
+打算的 < dasanteki\ ;
+退蔵品 < taizouhin\ ;
+親密 < shinmitsu\ ;
+影響圏 < eikyouken\ ;
+真善美 < shinzenbi\ ;
+手術衣 < shujutsui\ ;
+人間愛 < ningen''ai\ ;
+理知的 < richiteki\ ;
+筒音 < tsutsuoto\ ;
+琥珀色 < kohakuiro\ ;
+御蔭様 < okagesama\ ;
+毛細管 < mousaikan\ ;
+紋所 < mondokoro\ ;
+袋網 < fukuroami\ ;
+白胡麻 < shirogoma\ ;
+自己規制 < jikokisei\ ;
+主人公 < shujinkou\ ;
+同委員会 < douiinkai\ ;
+人間性 < ningensei\ ;
+単孔類 < tankourui\ ;
+同労者 < dourousha\ ;
+即時性 < sokujisei\ ;
+乳呑児 < chinomigo\ ;
+不徳漢 < futokukan\ ;
+遭遇戦 < souguusen\ ;
+言伝 < kotodzute\ ;
+又家来 < matagerai\ ;
+火柱 < hibashira\ ;
+一妻多夫 < issaitafu\ ;
+閥族 < batsuzoku\ ;
+正書法 < seishohou\ ;
+独自性 < dokujisei\ ;
+弁財天 < benzaiten\ ;
+勤務先 < kinmusaki\ ;
+角叉 < tsunomata\ ;
+持久戦 < jikyuusen\ ;
+重要視 < juuyoushi\ ;
+空梅雨 < karatsuyu\ ;
+混成団 < konseidan\ ;
+不正行為 < fuseikoui\ ;
+抜錨 < batsubyou\ ;
+火口壁 < kakouheki\ ;
+時間表 < jikanhyou\ ;
+砂利道 < jarimichi\ ;
+会計官 < kaikeikan\ ;
+賤業婦 < sengyoufu\ ;
+経験者 < keikensha\ ;
+韓国語 < hankokugo\ ;
+教材費 < kyouzaihi\ ;
+国立 < kokuritsu\ ;
+勝利者 < shourisha\ ;
+潜伏期 < senpukuki\ ;
+大団円 < daidan''en\ ;
+午前様 < gozensama\ ;
+海潮音 < kaichouon\ ;
+正犯者 < seihansha\ ;
+可圧性 < kaatsusei\ ;
+船大工 < funadaiku\ ;
+土地柄 < tochigara\ ;
+登舷礼 < tougenrei\ ;
+激突 < gekitotsu\ ;
+政府筋 < seifusuji\ ;
+活性剤 < kasseizai\ ;
+反体制 < hantaisei\ ;
+藻菌類 < soukinrui\ ;
+滑石粉 < kassekiko\ ;
+緩衝器 < kanshouki\ ;
+鳩羽色 < hatobairo\ ;
+顕微鏡 < kenbikyou\ ;
+名店街 < meitengai\ ;
+利休色 < rikyuuiro\ ;
+国事犯 < kokujihan\ ;
+門松 < kadomatsu\ ;
+混成品 < konseihin\ ;
+分配者 < bunpaisha\ ;
+半透明 < hantoumei\ ;
+分水線 < bunsuisen\ ;
+遊戯的 < yuugiteki\ ;
+近視眼 < kinshigan\ ;
+会計士 < kaikeishi\ ;
+抜道 < nukemichi\ ;
+初年兵 < shonenhei\ ;
+同年輩 < dounenpai\ ;
+珍無類 < chinmurui\ ;
+箝口令 < kankourei\ ;
+合法性 < gouhousei\ ;
+総領事 < souryouji\ ;
+州政府 < shuuseifu\ ;
+商務官 < shoumukan\ ;
+長月 < nagatsuki\ ;
+応接間 < ousetsuma\ ;
+血肉 < ketsuniku\ ;
+参会者 < sankaisha\ ;
+五人組 < goningumi\ ;
+黄水晶 < kizuishou\ ;
+内裏様 < dairisama\ ;
+大衆化 < taishuuka\ ;
+重大性 < juudaisei\ ;
+外国語 < gaikokugo\ ;
+現状維持 < genjouiji\ ;
+勢力家 < seiryokka\ ;
+声楽家 < seigakuka\ ;
+製靴業 < seikagyou\ ;
+紛失 < funshitsu\ ;
+箱馬車 < hakobasha\ ;
+宮内省 < kunaishou\ ;
+土牢 < tsuchirou\ ;
+事業所 < jigyousho\ ;
+穿山甲 < senzankou\ ;
+臨港線 < rinkousen\ ;
+唯名論 < yuimeiron\ ;
+米油 < komeabura\ ;
+改造車 < kaizousha\ ;
+黄金国 < ougonkoku\ ;
+芋羊羹 < imoyoukan\ ;
+更生品 < kouseihin\ ;
+広小路 < hirokouji\ ;
+筋道 < sujimichi\ ;
+空返事 < sorahenji\ ;
+篳篥 < hichiriki\ ;
+腐植土 < fushokudo\ ;
+次善策 < jizensaku\ ;
+美辞麗句 < bijireiku\ ;
+遠眼鏡 < toomegane\ ;
+創造者 < souzousha\ ;
+休電日 < kyuudenbi\ ;
+板門店 < hanmonten\ ;
+衝突 < shoutotsu\ ;
+導入部 < dounyuubu\ ;
+禅問答 < zenmondou\ ;
+複数個 < fukusuuko\ ;
+盲学校 < mougakkou\ ;
+研修課 < kenshuuka\ ;
+弾性体 < danseitai\ ;
+米櫃 < komebitsu\ ;
+献呈本 < kenteibon\ ;
+尾長鶏 < onagadori\ ;
+放送網 < housoumou\ ;
+麻酔薬 < masuiyaku\ ;
+千年紀 < sen''nenki\ ;
+僧帽弁 < soubouben\ ;
+太鼓腹 < taikobara\ ;
+不言不語 < fugenfugo\ ;
+前装砲 < zensouhou\ ;
+分遣隊 < bunkentai\ ;
+吹奏者 < suisousha\ ;
+竜骨 < ryuukotsu\ ;
+好角家 < koukakuka\ ;
+結了 < ketsuryou\ ;
+悪天候 < akutenkou\ ;
+推進機 < suishinki\ ;
+托鉢 < takuhatsu\ ;
+鉤十字 < kagijuuji\ ;
+乱気流 < rankiryuu\ ;
+冷凍剤 < reitouzai\ ;
+初対面 < shotaimen\ ;
+閏年 < uruudoshi\ ;
+竍 < dekaritto\ ;
+未収載 < mishuusai\ ;
+嗜好品 < shikouhin\ ;
+悪天使 < akutenshi\ ;
+強化米 < kyoukamai\ ;
+水雷艇 < suiraitei\ ;
+観楓会 < kanpuukai\ ;
+体験談 < taikendan\ ;
+無感覚 < mukankaku\ ;
+群速度 < gunsokudo\ ;
+電総研 < densouken\ ;
+不確定 < fukakutei\ ;
+白百合 < shirayuri\ ;
+舞踊劇 < buyougeki\ ;
+火口丘 < kakoukyuu\ ;
+不正確 < fuseikaku\ ;
+節約 < setsuyaku\ ;
+陽子線 < youshisen\ ;
+下部機関 < kabukikan\ ;
+個人誤差 < kojingosa\ ;
+時間給 < jikankyuu\ ;
+分水界 < bunsuikai\ ;
+乱反射 < ranhansha\ ;
+解答欄 < kaitouran\ ;
+魚雷艇 < gyoraitei\ ;
+公有地 < kouyuuchi\ ;
+欺瞞的 < gimanteki\ ;
+明瞭度 < meiryoudo\ ;
+会計係 < kaikeikei\ ;
+蟇蛙 < hikigaeru\ ;
+輸入税 < yunyuuzei\ ;
+蜀黍 < morokoshi\ ;
+不心得 < fukokoroe\ ;
+二業地 < nigyouchi\ ;
+単子論 < tanshiron\ ;
+証拠金 < shoukokin\ ;
+生演奏 < namaensou\ ;
+微分学 < bibungaku\ ;
+専従者 < senjuusha\ ;
+仙台侯 < sendaikou\ ;
+血眼 < chimanako\ ;
+箸箱 < hashibako\ ;
+複式 < fukushiki\ ;
+兄弟愛 < kyoudaiai\ ;
+万華鏡 < mangekyou\ ;
+西側 < nishigawa\ ;
+損失 < sonshitsu\ ;
+人間像 < ningenzou\ ;
+回帰的 < kaikiteki\ ;
+市民税 < shiminzei\ ;
+富士額 < fujibitai\ ;
+闖入 < chin''nyuu\ ;
+蜂鳥 < hachidori\ ;
+開票所 < kaihyoujo\ ;
+体育館 < taiikukan\ ;
+為体 < teitaraku\ ;
+変調波 < henchouha\ ;
+同盟軍 < doumeigun\ ;
+告訴人 < kokusonin\ ;
+学士院 < gakushiin\ ;
+倫理的 < rinriteki\ ;
+点鼻薬 < tenbiyaku\ ;
+投書欄 < toushoran\ ;
+訴訟法 < soshouhou\ ;
+溶質 < youshitsu\ ;
+四半分 < shihanbun\ ;
+吸音材 < kyuuonzai\ ;
+初体験 < shotaiken\ ;
+輸入盤 < yunyuuban\ ;
+不知火 < shiranuhi\ ;
+卵細胞 < ransaibou\ ;
+灰土 < haitsuchi\ ;
+二極化 < nikyokuka\ ;
+南京錠 < nankinjou\ ;
+鳩時計 < hatodokei\ ;
+哺乳瓶 < honyuubin\ ;
+西洋風 < seiyoufuu\ ;
+既製服 < kiseifuku\ ;
+自由意志 < jiyuuishi\ ;
+野外劇 < yagaigeki\ ;
+普遍的 < fuhenteki\ ;
+事業団 < jigyoudan\ ;
+小役人 < koyakunin\ ;
+鳥媒花 < choubaika\ ;
+自治領 < jichiryou\ ;
+裏扉 < uratobira\ ;
+破壊的 < hakaiteki\ ;
+搬出 < hanshutsu\ ;
+窮措大 < kyuusodai\ ;
+達磨船 < darumasen\ ;
+内在性 < naizaisei\ ;
+小荷物 < konimotsu\ ;
+日系人 < nikkeijin\ ;
+精神科 < seishinka\ ;
+一合目 < ichigoume\ ;
+住居跡 < juukyoato\ ;
+再抗弁 < saikouben\ ;
+農作業 < nousagyou\ ;
+螢光燈 < keikoutou\ ;
+付年表 < funenpyou\ ;
+正誤表 < seigohyou\ ;
+裏情 < uranasake\ ;
+四輪車 < yonrinsha\ ;
+蟇股 < kaerumata\ ;
+三重奏 < sanjuusou\ ;
+保証書 < hoshousho\ ;
+否定的 < hiteiteki\ ;
+不連続 < furenzoku\ ;
+武断的 < budanteki\ ;
+出穂期 < shussuiki\ ;
+上半期 < kamihanki\ ;
+単子葉 < tanshiyou\ ;
+微分商 < bibunshou\ ;
+血煙 < chikemuri\ ;
+義兄弟 < gikyoudai\ ;
+複素数 < fukusosuu\ ;
+転校生 < tenkousei\ ;
+昼夜帯 < chuuyaobi\ ;
+事件表 < jikenhyou\ ;
+強硬派 < kyoukouha\ ;
+排気量 < haikiryou\ ;
+二次記憶 < nijikioku\ ;
+女文字 < on''namoji\ ;
+無所属 < mushozoku\ ;
+周波数 < shuuhasuu\ ;
+猛禽類 < moukinrui\ ;
+生態系 < seitaikei\ ;
+滑落 < katsuraku\ ;
+持物 < mochimono\ ;
+散文詩 < sanbunshi\ ;
+栽培種 < saibaishu\ ;
+原著者 < genchosha\ ;
+電話料 < denwaryou\ ;
+技能賞 < ginoushou\ ;
+料金所 < ryoukinjo\ ;
+支配者 < shihaisha\ ;
+洗濯屋 < sentakuya\ ;
+側近者 < sokkinsha\ ;
+門口 < kadoguchi\ ;
+実社会 < jisshakai\ ;
+御連絡 < gorenraku\ ;
+香川県 < kagawaken\ ;
+点滴器 < tentekiki\ ;
+予定表 < yoteihyou\ ;
+弁護料 < bengoryou\ ;
+主要駅 < shuyoueki\ ;
+区会議員 < kukaigiin\ ;
+挟殺 < kyousatsu\ ;
+対応策 < taiousaku\ ;
+輸入港 < yunyuukou\ ;
+同志会 < doushikai\ ;
+迎撃機 < geigekiki\ ;
+人地名 < jinchimei\ ;
+保険料 < hokenryou\ ;
+大和芋 < yamatoimo\ ;
+高優先 < kouyuusen\ ;
+放送法 < housouhou\ ;
+示力図 < jiryokuzu\ ;
+古事記伝 < kojikiden\ ;
+雪女郎 < yukijorou\ ;
+表書 < omotegaki\ ;
+零細農 < reisainou\ ;
+糊代 < norishiro\ ;
+真清水 < mashimizu\ ;
+助太刀 < sukedachi\ ;
+克己心 < kokkishin\ ;
+設計者 < sekkeisha\ ;
+無神論 < mushinron\ ;
+無為無策 < muimusaku\ ;
+有袋類 < yuutairui\ ;
+一殺那 < issetsuna\ ;
+心理戦 < shinrisen\ ;
+御歴歴 < orekireki\ ;
+不平等 < fubyoudou\ ;
+利尿剤 < rinyouzai\ ;
+穴隙 < ketsugeki\ ;
+牧歌的 < bokkateki\ ;
+漸近線 < zenkinsen\ ;
+子安貝 < koyasukai\ ;
+旅日記 < tabinikki\ ;
+売上金 < uriagekin\ ;
+受給者 < jukyuusha\ ;
+明年度 < myounendo\ ;
+二枚舌 < nimaijita\ ;
+三重冠 < sanjuukan\ ;
+誘電子 < yuudenshi\ ;
+錯雑 < sakuzatsu\ ;
+圧密 < atsumitsu\ ;
+関係詞 < kankeishi\ ;
+紡錘形 < bousuikei\ ;
+奉幣使 < houheishi\ ;
+市民法 < shiminhou\ ;
+最敬礼 < saikeirei\ ;
+椴 < todomatsu\ ;
+苦学生 < kugakusei\ ;
+小生意気 < konamaiki\ ;
+得意先 < tokuisaki\ ;
+雨仕度 < amajitaku\ ;
+周波帯 < shuuhatai\ ;
+漬物 < tsukemono\ ;
+管制官 < kanseikan\ ;
+蜜豆 < mitsumame\ ;
+漂着 < hyouchaku\ ;
+燃料費 < nenryouhi\ ;
+量記号 < ryoukigou\ ;
+発光体 < hakkoutai\ ;
+半円形 < han''enkei\ ;
+汚染除去 < osenjokyo\ ;
+提出 < teishutsu\ ;
+円虫類 < enchuurui\ ;
+扶養義務 < fuyougimu\ ;
+懸想文 < kesoubumi\ ;
+検潮器 < kenchouki\ ;
+姉妹編 < shimaihen\ ;
+血糖値 < kettouchi\ ;
+深靴 < fukagutsu\ ;
+無重量 < mujuuryou\ ;
+電話帳 < denwachou\ ;
+午前中 < gozenchuu\ ;
+営業所 < eigyousho\ ;
+節欲 < setsuyoku\ ;
+米市場 < beiichiba\ ;
+不動心 < fudoushin\ ;
+袋帯 < fukuroobi\ ;
+小判形 < kobangata\ ;
+照明器 < shoumeiki\ ;
+徹甲弾 < tekkoudan\ ;
+宮内庁 < kunaichou\ ;
+擬古主義 < gikoshugi\ ;
+市民権 < shiminken\ ;
+穀食 < kokushoku\ ;
+半舷砲 < hangenhou\ ;
+権威筋 < ken''isuji\ ;
+変電所 < hendensho\ ;
+積雪 < sekisetsu\ ;
+電解液 < denkaieki\ ;
+雲上人 < unjoubito\ ;
+節榑 < fushikure\ ;
+一周年 < isshuunen\ ;
+血族 < ketsuzoku\ ;
+管制塔 < kanseitou\ ;
+華厳経 < kegonkyou\ ;
+対情報 < taijouhou\ ;
+格変化 < kakuhenka\ ;
+教育家 < kyouikuka\ ;
+安息香 < ansokukou\ ;
+石鹸水 < sekkensui\ ;
+不勉強 < fubenkyou\ ;
+塩化物 < enkabutsu\ ;
+九寸五分 < kusungobu\ ;
+両用機 < ryouyouki\ ;
+当世風 < touseifuu\ ;
+策略 < sakuryaku\ ;
+格天井 < goutenjou\ ;
+中耕機 < chuukouki\ ;
+不適格 < futekkaku\ ;
+遠心分 < enshinbun\ ;
+鍼術 < shinjutsu\ ;
+普通法 < futsuuhou\ ;
+媒染剤 < baisenzai\ ;
+破裂音 < haretsuon\ ;
+主観論 < shukanron\ ;
+二番作 < nibansaku\ ;
+生命線 < seimeisen\ ;
+空対空 < kuutaikuu\ ;
+猛吹雪 < moufubuki\ ;
+拓殖 < takushoku\ ;
+高射砲 < koushahou\ ;
+一歩銀 < ichibugin\ ;
+奈良漬 < naradzuke\ ;
+形象化 < keishouka\ ;
+内地人 < naichijin\ ;
+石南花 < shakunage\ ;
+傀儡師 < kairaishi\ ;
+一歩金 < ichibukin\ ;
+女郎蜘蛛 < jorougumo\ ;
+痩我慢 < yasegaman\ ;
+蛙跳 < kaerutobi\ ;
+悪因縁 < akuin''nen\ ;
+不眠症 < fuminshou\ ;
+電解槽 < denkaisou\ ;
+法華宗 < hokkeshuu\ ;
+一瞬間 < isshunkan\ ;
+正三位 < shousanmi\ ;
+弾道弾 < dandoudan\ ;
+混合林 < kongourin\ ;
+水墨画 < suibokuga\ ;
+交易会 < kouekikai\ ;
+高楊子 < takayouji\ ;
+権威的 < ken''iteki\ ;
+社用車 < shayousha\ ;
+分水嶺 < bunsuirei\ ;
+子供用 < kodomoyou\ ;
+親孝行 < oyakoukou\ ;
+発射筒 < hasshatou\ ;
+拾万円 < juuman''en\ ;
+勤皇家 < kin''nouka\ ;
+乳化剤 < nyuukazai\ ;
+近地点 < kinchiten\ ;
+圧力 < atsuryoku\ ;
+無競争 < mukyousou\ ;
+交際法 < kousaihou\ ;
+参与者 < san''yosha\ ;
+竹箒 < takebouki\ ;
+飲料水 < inryousui\ ;
+鼻面 < hanadzura\ ;
+秋日和 < akibiyori\ ;
+区役所 < kuyakusho\ ;
+立志伝 < risshiden\ ;
+天秤棒 < tenbinbou\ ;
+変調器 < henchouki\ ;
+関係者 < kankeisha\ ;
+不随意筋 < fuzuiikin\ ;
+大成功 < daiseikou\ ;
+二人称 < nininshou\ ;
+偶像視 < guuzoushi\ ;
+偶蹄類 < guuteirui\ ;
+来訪者 < raihousha\ ;
+騒乱罪 < souranzai\ ;
+完成品 < kanseihin\ ;
+移行期間 < ikoukikan\ ;
+袖口 < sodeguchi\ ;
+創造性 < souzousei\ ;
+捻出 < nenshutsu\ ;
+又請負 < mataukeoi\ ;
+金閣寺 < kinkakuji\ ;
+誘電体 < yuudentai\ ;
+南京米 < nankinmai\ ;
+無神経 < mushinkei\ ;
+銀交換 < ginkoukan\ ;
+嵙 < yamashina\ ;
+製塩業 < seiengyou\ ;
+教会員 < kyoukaiin\ ;
+啓蟄 < keichitsu\ ;
+搭乗券 < toujouken\ ;
+過硫酸 < karyuusan\ ;
+運命的 < unmeiteki\ ;
+観桜会 < kan''oukai\ ;
+涙雨 < namidaame\ ;
+無礼者 < bureimono\ ;
+構文法 < koubunpou\ ;
+篤実 < tokujitsu\ ;
+鎖糸 < kusariito\ ;
+禿鷲 < hagewashi\ ;
+血尿 < ketsunyou\ ;
+接近戦 < sekkinsen\ ;
+無法者 < muhoumono\ ;
+懲罰 < choubatsu\ ;
+不適当 < futekitou\ ;
+無水鍋 < musuinabe\ ;
+月給日 < gekkyuubi\ ;
+国力 < kokuryoku\ ;
+斥候隊 < sekkoutai\ ;
+創業費 < sougyouhi\ ;
+国別 < kunibetsu\ ;
+重要性 < juuyousei\ ;
+総売上 < souuriage\ ;
+十円玉 < juuendama\ ;
+抽斗 < hikidashi\ ;
+倫理学 < rinrigaku\ ;
+一週間 < isshuukan\ ;
+社内報 < shanaihou\ ;
+住宅費 < juutakuhi\ ;
+屈地性 < kutchisei\ ;
+付加価値 < fukakachi\ ;
+築山 < tsukiyama\ ;
+国有化 < kokuyuuka\ ;
+通風機 < tsuufuuki\ ;
+家屋敷 < ieyashiki\ ;
+山椒魚 < sanshouuo\ ;
+公文書 < koubunsho\ ;
+決定論 < ketteiron\ ;
+保証人 < hoshounin\ ;
+沿海州 < enkaishuu\ ;
+不道徳 < fudoutoku\ ;
+便乗者 < binjousha\ ;
+一升瓶 < isshoubin\ ;
+空腹時 < kuufukuji\ ;
+前衛戦 < zen''eisen\ ;
+袖付 < sodetsuke\ ;
+感情論 < kanjouron\ ;
+支配権 < shihaiken\ ;
+団子鼻 < dangobana\ ;
+全論点 < zenronten\ ;
+扼殺 < yakusatsu\ ;
+道化者 < doukemono\ ;
+西洋紙 < seiyoushi\ ;
+書記長 < shokichou\ ;
+土壌汚染 < dojouosen\ ;
+血塗 < chimidoro\ ;
+忌言葉 < imikotoba\ ;
+難事業 < nanjigyou\ ;
+付帯的 < futaiteki\ ;
+高飛車 < takabisha\ ;
+電話中 < denwachuu\ ;
+黄道帯 < koudoutai\ ;
+高校生 < koukousei\ ;
+麹黴 < koujikabi\ ;
+涙金 < namidakin\ ;
+肺水腫 < haisuishu\ ;
+商用語 < shouyougo\ ;
+略記法 < ryakkihou\ ;
+血圧 < ketsuatsu\ ;
+潮境 < shiozakai\ ;
+葡萄棚 < budoudana\ ;
+奉公人 < houkounin\ ;
+稟質 < hinshitsu\ ;
+湿田 < shitsuden\ ;
+仏法僧 < buppousou\ ;
+黒髪 < kokuhatsu\ ;
+体育祭 < taiikusai\ ;
+普通弾 < futsuudan\ ;
+戦中派 < senchuuha\ ;
+高山帯 < kouzantai\ ;
+性犯罪 < seihanzai\ ;
+民芸品 < mingeihin\ ;
+親会社 < oyagaisha\ ;
+打消 < uchikeshi\ ;
+参賀帳 < sangachou\ ;
+三輪車 < sanrinsha\ ;
+産科学 < sankagaku\ ;
+車内灯 < shanaitou\ ;
+医務室 < imushitsu\ ;
+永続性 < eizokusei\ ;
+表側 < omotegawa\ ;
+探検隊 < tankentai\ ;
+実務家 < jitsumuka\ ;
+必須格 < hissukaku\ ;
+大和歌 < yamatouta\ ;
+丸太材 < marutazai\ ;
+研修所 < kenshuujo\ ;
+公明党 < koumeitou\ ;
+絵空言 < esoragoto\ ;
+羅針盤 < rashinban\ ;
+上院議員 < jouingiin\ ;
+器量人 < kiryoujin\ ;
+国際語 < kokusaigo\ ;
+四辺形 < shihenkei\ ;
+発作的 < hossateki\ ;
+聾学校 < rougakkou\ ;
+鐘撞 < kanetsuki\ ;
+掃海艇 < soukaitei\ ;
+参考書 < sankousho\ ;
+化粧品 < keshouhin\ ;
+地平面 < chiheimen\ ;
+行列 < gyouretsu\ ;
+低能者 < teinousha\ ;
+先験論 < senkenron\ ;
+集英社 < shuueisha\ ;
+用水池 < yousuichi\ ;
+受難劇 < junangeki\ ;
+倉庫業 < soukogyou\ ;
+千六本 < senroppon\ ;
+輸入品 < yunyuuhin\ ;
+化粧台 < keshoudai\ ;
+塩加減 < shiokagen\ ;
+娘子軍 < joushigun\ ;
+自治省 < jichishou\ ;
+尾長猿 < onagazaru\ ;
+警防団 < keiboudan\ ;
+正解者 < seikaisha\ ;
+限度額 < gendogaku\ ;
+再洗礼 < saisenrei\ ;
+姉妹校 < shimaikou\ ;
+格闘技 < kakutougi\ ;
+青春期 < seishunki\ ;
+速記録 < sokkiroku\ ;
+優勝馬 < yuushouba\ ;
+凩 < kogarashi\ ;
+気候学 < kikougaku\ ;
+病院船 < byouinsen\ ;
+国文科 < kokubunka\ ;
+担当者 < tantousha\ ;
+来場者 < raijousha\ ;
+才槌 < saidzuchi\ ;
+排水溝 < haisuikou\ ;
+峻下剤 < shungezai\ ;
+外商部 < gaishoubu\ ;
+湿潤 < shitsujun\ ;
+鼻衝 < hanatsuki\ ;
+正方形 < seihoukei\ ;
+渋紙 < shibugami\ ;
+月経帯 < gekkeitai\ ;
+角行灯 < kakuandon\ ;
+課徴金 < kachoukin\ ;
+交換船 < koukansen\ ;
+保管証 < hokanshou\ ;
+添加物 < tenkamono\ ;
+鼠講 < nezumikou\ ;
+来観者 < raikansha\ ;
+御家騒動 < oiesoudou\ ;
+鏡板 < kagamiita\ ;
+綺羅星 < kiraboshi\ ;
+山岳部 < sangakubu\ ;
+発展性 < hattensei\ ;
+空穴 < karaketsu\ ;
+協定案 < kyouteian\ ;
+麦飯 < mugimeshi\ ;
+鋼色 < haganeiro\ ;
+注射器 < chuushaki\ ;
+払暁 < futsugyou\ ;
+司法権 < shihouken\ ;
+虫螻 < mushikera\ ;
+正攻法 < seikouhou\ ;
+手拍子 < tebyoushi\ ;
+社会面 < shakaimen\ ;
+象皮病 < zouhibyou\ ;
+禁反言 < kinhangen\ ;
+無双窓 < musoumado\ ;
+時間割 < jikanwari\ ;
+用心棒 < youjinbou\ ;
+再感染 < saikansen\ ;
+毛製品 < mouseihin\ ;
+二度三度 < nidosando\ ;
+高祖頭巾 < kosozukin\ ;
+格納庫 < kakunouko\ ;
+総索引 < sousakuin\ ;
+予審廷 < yoshintei\ ;
+茶屋酒 < chayazake\ ;
+四分円 < shibun''en\ ;
+佗住居 < wabizumai\ ;
+片手桶 < katateoke\ ;
+創刊号 < soukangou\ ;
+四分六 < shiburoku\ ;
+童歌 < warabeuta\ ;
+防潜網 < bousenmou\ ;
+打擲 < chouchaku\ ;
+名刺判 < meishiban\ ;
+河童巻 < kappamaki\ ;
+勲一等 < kun''ittou\ ;
+反物屋 < tanmonoya\ ;
+予備部品 < yobibuhin\ ;
+互譲的 < gojouteki\ ;
+世界的 < sekaiteki\ ;
+御迷惑 < gomeiwaku\ ;
+三部作 < sanbusaku\ ;
+活量 < katsuryou\ ;
+正面図 < shoumenzu\ ;
+表具師 < hyougushi\ ;
+不適任 < futekinin\ ;
+経企庁 < keikichou\ ;
+運動領 < undouryou\ ;
+先般来 < senpanrai\ ;
+定冠詞 < teikanshi\ ;
+自己批判 < jikohihan\ ;
+接尾辞 < setsubiji\ ;
+水無月 < minadzuki\ ;
+駐在員 < chuuzaiin\ ;
+噴出 < funshutsu\ ;
+渋皮 < shibukawa\ ;
+輸尿管 < yunyoukan\ ;
+藁靴 < waragutsu\ ;
+国防費 < kokubouhi\ ;
+侍従長 < jijuuchou\ ;
+鎖樋 < kusaritoi\ ;
+活軸 < katsujiku\ ;
+殺風景 < sappuukei\ ;
+中支那 < nakashina\ ;
+誤挿入 < gosounyuu\ ;
+正教授 < seikyouju\ ;
+休火山 < kyuukazan\ ;
+子守歌 < komoriuta\ ;
+決定稿 < ketteikou\ ;
+防火壁 < boukaheki\ ;
+湿板 < shitsuban\ ;
+浮袋 < ukibukuro\ ;
+台湾人 < taiwanjin\ ;
+活躍 < katsuyaku\ ;
+日章旗 < nisshouki\ ;
+部隊長 < butaichou\ ;
+御真影 < goshin''ei\ ;
+虫腹 < mushibara\ ;
+凝固点 < gyoukoten\ ;
+支店網 < shitenmou\ ;
+数表示 < suuhyouji\ ;
+風向計 < fuukoukei\ ;
+蛍光板 < keikouban\ ;
+新聞舗 < shinbunho\ ;
+西南西 < seinansei\ ;
+避雷針 < hiraishin\ ;
+獅子舞 < shishimai\ ;
+任期中 < ninkichuu\ ;
+方面隊 < houmentai\ ;
+風鈴草 < fuurinsou\ ;
+曲独楽 < kyokugoma\ ;
+真向法 < makkouhou\ ;
+商船旗 < shousenki\ ;
+鼠色 < nezumiiro\ ;
+泥靴 < dorogutsu\ ;
+研修員 < kenshuuin\ ;
+評判記 < hyoubanki\ ;
+普通便 < futsuubin\ ;
+副知事 < fukuchiji\ ;
+母集団 < boshuudan\ ;
+三冠王 < sankan''ou\ ;
+恋愛観 < ren''aikan\ ;
+筆墨 < hitsuboku\ ;
+針鰻 < hariunagi\ ;
+鼻綱 < hanadzuna\ ;
+地役権 < chiekiken\ ;
+筆塚 < fudedzuka\ ;
+普通人 < futsuujin\ ;
+滝壺 < takitsubo\ ;
+再協議 < saikyouki\ ;
+代赭色 < taishairo\ ;
+接尾語 < setsubigo\ ;
+劇作家 < gekisakka\ ;
+重戦車 < juusensha\ ;
+音楽隊 < ongakutai\ ;
+告達 < kokutatsu\ ;
+再禁止 < saikinshi\ ;
+燻蒸剤 < kunjouzai\ ;
+洋裁師 < yousaishi\ ;
+真正面 < mashoumen\ ;
+漏出 < roushutsu\ ;
+筆圧 < hitsuatsu\ ;
+月経前 < gekkeimae\ ;
+窮極 < kyuukyoku\ ;
+低山帯 < teizantai\ ;
+励振器 < reishinki\ ;
+金鯱 < kinshachi\ ;
+英雄的 < eiyuuteki\ ;
+記者席 < kishaseki\ ;
+健康者 < kenkousha\ ;
+肥満症 < himanshou\ ;
+最大値 < saidaichi\ ;
+計画案 < keikakuan\ ;
+華厳宗 < kegonshuu\ ;
+主要点 < shuyouten\ ;
+口髭 < kuchihige\ ;
+虫籠 < mushikago\ ;
+流血 < ryuuketsu\ ;
+憑物 < tsukimono\ ;
+積率 < sekiritsu\ ;
+会員証 < kaiinshou\ ;
+精薄児 < seihakuji\ ;
+挿入図 < sounyuuzu\ ;
+釜飯 < kamameshi\ ;
+丁年者 < teinensha\ ;
+深爪 < fukadzume\ ;
+竹帛 < chikuhaku\ ;
+監査役 < kansayaku\ ;
+薄化粧 < usugeshou\ ;
+出勤簿 < shukkinbo\ ;
+中央線 < chuuousen\ ;
+履歴書 < rirekisho\ ;
+泡銭 < abukuzeni\ ;
+養嗣子 < youshishi\ ;
+悪質 < akushitsu\ ;
+大海原 < oounabara\ ;
+低価格 < teikakaku\ ;
+交際上 < kousaijou\ ;
+麻袋 < asabukuro\ ;
+参考品 < sankouhin\ ;
+神経科 < shinkeika\ ;
+小作農 < kosakunou\ ;
+自画自賛 < jigajisan\ ;
+私文書 < shibunsho\ ;
+決定版 < ketteiban\ ;
+心不全 < shinfuzen\ ;
+乳幼児 < nyuuyouji\ ;
+規則書 < kisokusho\ ;
+滝口 < takiguchi\ ;
+加除式 < kajoshiki\ ;
+鼠算 < nezumizan\ ;
+湿式 < shisshiki\ ;
+司法官 < shihoukan\ ;
+穀物 < kokumotsu\ ;
+空対地 < kuutaichi\ ;
+正視眼 < seishigan\ ;
+早慶戦 < soukeisen\ ;
+泥道 < doromichi\ ;
+古靴 < furugutsu\ ;
+掘削機 < kussakuki\ ;
+未確定 < mikakutei\ ;
+高架橋 < koukakyou\ ;
+沈鬱 < chin''utsu\ ;
+個別化 < kobetsuka\ ;
+君達 < kimitachi\ ;
+挿入句 < sounyuuku\ ;
+鷲鼻 < washibana\ ;
+折伏 < shakubuku\ ;
+鼠穴 < nezumiana\ ;
+滑台 < suberidai\ ;
+政権党 < seikentou\ ;
+射利心 < sharishin\ ;
+竜巻 < tatsumaki\ ;
+釣鐘 < tsurigane\ ;
+監察医 < kansatsui\ ;
+道化方 < doukegata\ ;
+半二重 < han''nijuu\ ;
+禁治産 < kinchisan\ ;
+首位打者 < shuidasha\ ;
+単語集 < tangoshuu\ ;
+用水地 < yousuiike\ ;
+車高短 < shakoutan\ ;
+近海魚 < kinkaigyo\ ;
+木金土 < mokukindo\ ;
+持続性 < jizokusei\ ;
+名工大 < meikoudai\ ;
+支配人 < shihainin\ ;
+幹事長 < kanjichou\ ;
+長水路 < chousuiro\ ;
+平党員 < hiratouin\ ;
+循環線 < junkansen\ ;
+下剋上 < gekokujou\ ;
+満室 < manshitsu\ ;
+上層風 < jousoufuu\ ;
+圧延鋼 < atsuenkou\ ;
+因果応報 < ingaouhou\ ;
+準教員 < junkyouin\ ;
+鷦鷯 < misosazai\ ;
+凹眼鏡 < ougankyou\ ;
+物価高 < bukkadaka\ ;
+誘拐罪 < yuukaizai\ ;
+端女 < hashitame\ ;
+循環系 < junkankei\ ;
+釣針 < tsuribari\ ;
+派生的 < haseiteki\ ;
+素反応 < sohan''nou\ ;
+在郷者 < zaigousha\ ;
+金鎖 < kingusari\ ;
+北海道 < hokkaidou\ ;
+下女下男 < gejogenan\ ;
+林檎病 < ringobyou\ ;
+藤蔓 < fujidzuru\ ;
+薬事法 < yakujihou\ ;
+短毛種 < tanmoushu\ ;
+概念論 < gainenron\ ;
+鉛色 < namariiro\ ;
+道徳家 < doutokuka\ ;
+参与官 < san''yokan\ ;
+渋柿 < shibugaki\ ;
+最終案 < saishuuan\ ;
+世界新 < sekaishin\ ;
+参考人 < sankounin\ ;
+屋台骨 < yataibone\ ;
+大歓迎 < daikangei\ ;
+上層階 < jousoukai\ ;
+一切経 < issaikyou\ ;
+古鉄 < furutetsu\ ;
+再配置 < saihaichi\ ;
+肌襦袢 < hadajuban\ ;
+六角形 < rokkakkei\ ;
+新生児 < shinseiji\ ;
+鈴虫 < suzumushi\ ;
+醜業婦 < shugyoufu\ ;
+同質 < doushitsu\ ;
+裁判権 < saibanken\ ;
+大神宮 < daijinguu\ ;
+正教員 < seikyouin\ ;
+口金 < kuchigane\ ;
+突撃 < totsugeki\ ;
+悪戯着 < itazuragi\ ;
+昼行灯 < hiruandon\ ;
+地平線 < chiheisen\ ;
+安楽椅子 < anrakuisu\ ;
+配電線 < haidensen\ ;
+白頭翁 < hakutouou\ ;
+発射台 < hasshadai\ ;
+黒縁 < kurobuchi\ ;
+主陣地 < shujinchi\ ;
+感想文 < kansoubun\ ;
+消化系 < shoukakei\ ;
+鎮圧 < chin''atsu\ ;
+主観性 < shukansei\ ;
+大法廷 < daihoutei\ ;
+最終日 < saishuubi\ ;
+決定権 < ketteiken\ ;
+喪失 < soushitsu\ ;
+兎小屋 < usagigoya\ ;
+多神論 < tashinron\ ;
+委員付託 < iinfutaku\ ;
+後半生 < kouhansei\ ;
+種油 < taneabura\ ;
+増訂版 < zouteiban\ ;
+所在地 < shozaichi\ ;
+災害地 < saigaichi\ ;
+消化管 < shoukakan\ ;
+年代順 < nendaijun\ ;
+神経炎 < shinkeien\ ;
+奉仕者 < houshisha\ ;
+唐櫃 < karabitsu\ ;
+再受浸 < saijushin\ ;
+口軽 < kuchigaru\ ;
+窮屈 < kyuukutsu\ ;
+予備運動 < yobiundou\ ;
+二人前 < futarimae\ ;
+富士壺 < fujitsubo\ ;
+遺産管理 < isankanri\ ;
+百貨店 < hyakkaten\ ;
+横断幕 < oudanmaku\ ;
+二人分 < futaribun\ ;
+納税者 < nouzeisha\ ;
+酸性紙 < sanseishi\ ;
+左右軸 < sayuujiku\ ;
+天水桶 < tensuioke\ ;
+黒竹 < kurochiku\ ;
+友達 < tomodachi\ ;
+品物 < shinamono\ ;
+貴金属 < kikinzoku\ ;
+波羅蜜 < haramitsu\ ;
+狩猟期 < shuryouki\ ;
+文法書 < bunpousho\ ;
+竹光 < takemitsu\ ;
+藁苞 < waradzuto\ ;
+占領下 < senryouka\ ;
+燃焼炉 < nenshouro\ ;
+古筆家 < kohitsuka\ ;
+防衛庁 < boueichou\ ;
+大祭司 < daisaishi\ ;
+唐松 < karamatsu\ ;
+雛罌粟 < hinageshi\ ;
+全天候 < zentenkou\ ;
+超短波 < choutanpa\ ;
+放射能 < houshanou\ ;
+前科者 < zenkamono\ ;
+長野県 < naganoken\ ;
+知恵熱 < chienetsu\ ;
+包装紙 < housoushi\ ;
+争議行為 < sougikoui\ ;
+米産地 < beisanchi\ ;
+八角形 < hakkakkei\ ;
+五大洲 < godaishuu\ ;
+新学期 < shingakki\ ;
+麻婆豆腐 < mābodoufu\ ;
+配電盤 < haidenban\ ;
+英文学 < eibungaku\ ;
+蚊柱 < kabashira\ ;
+御兄弟 < gokyoudai\ ;
+裁判所 < saibansho\ ;
+参院選 < san''insen\ ;
+竹串 < takegushi\ ;
+軍人風 < gunjinfuu\ ;
+無得点 < mutokuten\ ;
+論理的 < ronriteki\ ;
+黒白 < kokubyaku\ ;
+劃期的 < kakkiteki\ ;
+神罰 < shinbatsu\ ;
+油蝉 < aburazemi\ ;
+三省堂 < sanseidou\ ;
+取説 < torisetsu\ ;
+虚弱児 < kyojakuji\ ;
+文化映画 < bunkaeiga\ ;
+当事国 < toujikoku\ ;
+論争者 < ronsousha\ ;
+放射線 < houshasen\ ;
+蛸壼 < takotsubo\ ;
+崇拝者 < suuhaisha\ ;
+健康法 < kenkouhou\ ;
+怪文書 < kaibunsho\ ;
+逮捕歴 < taihoreki\ ;
+筆頭者 < hittousha\ ;
+湧出 < youshutsu\ ;
+空室 < kuushitsu\ ;
+乾生姜 < kanshouga\ ;
+生残者 < seizansha\ ;
+淡水魚 < tansuigyo\ ;
+贈答品 < zoutouhin\ ;
+交換手 < koukanshu\ ;
+蛍光体 < keikoutai\ ;
+氷点下 < hyoutenka\ ;
+誘拐犯 < yuukaihan\ ;
+煎玉子 < iritamago\ ;
+興信所 < koushinjo\ ;
+甘味料 < kanmiryou\ ;
+試験紙 < shikenshi\ ;
+肉襦袢 < nikujuban\ ;
+監守人 < kanshunin\ ;
+増大号 < zoudaigou\ ;
+滑走輪 < kassourin\ ;
+再創造 < saisouzou\ ;
+戸籍法 < kosekihou\ ;
+錘形 < tsumugata\ ;
+荒物屋 < aramonoya\ ;
+中西部 < chuuseibu\ ;
+自動的 < jidouteki\ ;
+借家人 < shakkanin\ ;
+法学部 < hougakubu\ ;
+軍資金 < gunshikin\ ;
+文法性 < bunpousei\ ;
+農夫症 < noufushou\ ;
+材料費 < zairyouhi\ ;
+催涙銃 < sairuijuu\ ;
+変換子 < henkanshi\ ;
+材木屋 < zaimokuya\ ;
+貧窮化 < hinkyuuka\ ;
+早合点 < hayagaten\ ;
+車馬賃 < shabachin\ ;
+竜騎兵 < ryuukihei\ ;
+土台石 < dodaiishi\ ;
+試験管 < shikenkan\ ;
+大反対 < daihantai\ ;
+非国民 < hikokumin\ ;
+小豆鱒 < azukimasu\ ;
+莢豌豆 < sayaendou\ ;
+両替機 < ryougaeki\ ;
+綿火薬 < menkayaku\ ;
+人民軍 < jinmingun\ ;
+欠勤者 < kekkinsha\ ;
+小作米 < kosakumai\ ;
+泥板岩 < deibangan\ ;
+擬革紙 < gikakushi\ ;
+貴重品 < kichouhin\ ;
+火山礫 < kazanreki\ ;
+顔写真 < kaojashin\ ;
+共演者 < kyouensha\ ;
+救護班 < kyuugohan\ ;
+金蔓 < kanedzuru\ ;
+再循環 < saijunkan\ ;
+意味内容 < iminaiyou\ ;
+荻江節 < ogiebushi\ ;
+集光器 < shuukouki\ ;
+一部分 < ichibubun\ ;
+釣船 < tsuribune\ ;
+装甲車 < soukousha\ ;
+新世紀 < shinseiki\ ;
+予備判事 < yobihanji\ ;
+鉢物 < hachimono\ ;
+浚渫 < shunsetsu\ ;
+淑徳 < shukutoku\ ;
+祝福 < shukufuku\ ;
+裁判官 < saibankan\ ;
+出勤日 < shukkinbi\ ;
+送信機 < soushinki\ ;
+没落 < botsuraku\ ;
+窓口 < madoguchi\ ;
+雑居地 < zakkyochi\ ;
+英数国 < eisuukoku\ ;
+保管料 < hokanryou\ ;
+武家時代 < bukejidai\ ;
+半貴石 < hankiseki\ ;
+軍用機 < gun''youki\ ;
+品柄 < shinagara\ ;
+医療過誤 < iryoukago\ ;
+虎落笛 < mogaribue\ ;
+生還者 < seikansha\ ;
+懇談会 < kondankai\ ;
+未公表 < mikouhyou\ ;
+西洋人 < seiyoujin\ ;
+田舎者 < inakamono\ ;
+吸着 < kyuuchaku\ ;
+消化液 < shoukaeki\ ;
+武家政治 < bukeseiji\ ;
+女王陛下 < joouheika\ ;
+穴居人 < kekkyojin\ ;
+妨業員 < bougyouin\ ;
+風呂敷 < furoshiki\ ;
+口脇 < kuchiwaki\ ;
+何曜日 < nan''youbi\ ;
+警戒線 < keikaisen\ ;
+確説 < kakusetsu\ ;
+交換嬢 < koukanjou\ ;
+大道芸 < daidougei\ ;
+停止線 < teishisen\ ;
+薄緑 < usumidori\ ;
+品数 < shinakazu\ ;
+勉強家 < benkyouka\ ;
+浪漫的 < romanteki\ ;
+勧世縒 < kanzeyori\ ;
+竹細工 < takezaiku\ ;
+産卵口 < sanrankou\ ;
+感動詞 < kandoushi\ ;
+水圧機 < suiatsuki\ ;
+音楽祭 < ongakusai\ ;
+鹿皮 < shikagawa\ ;
+黙殺 < mokusatsu\ ;
+人情本 < ninjoubon\ ;
+皇霊殿 < koureiden\ ;
+恐縮 < kyoushuku\ ;
+使命者 < shimeisha\ ;
+突出 < tosshutsu\ ;
+代用品 < daiyouhin\ ;
+葉菜類 < yousairui\ ;
+都風 < miyakofuu\ ;
+油糟 < aburakasu\ ;
+写真機 < shashinki\ ;
+水質 < suishitsu\ ;
+男伊達 < otokodate\ ;
+兵站線 < heitansen\ ;
+帯電体 < taidentai\ ;
+突入 < totsunyuu\ ;
+文化的 < bunkateki\ ;
+未発表 < mihappyou\ ;
+先住民 < senjuumin\ ;
+途上国 < tojoukoku\ ;
+大気汚染 < taikiosen\ ;
+半音階 < han''onkai\ ;
+白木屋 < shirokiya\ ;
+仕様書 < shiyousho\ ;
+民事的 < minjiteki\ ;
+成層圏 < seisouken\ ;
+蒸気圧 < joukiatsu\ ;
+両替所 < ryougaejo\ ;
+稠密 < choumitsu\ ;
+黒樫 < kurogashi\ ;
+活歴 < katsureki\ ;
+後半戦 < kouhansen\ ;
+口紅 < kuchibeni\ ;
+右端 < migihashi\ ;
+幽寂味 < yuujakumi\ ;
+帝王学 < teiougaku\ ;
+貯水池 < chosuichi\ ;
+薬瓶 < kusuribin\ ;
+哲学 < tetsugaku\ ;
+新世界 < shinsekai\ ;
+命令法 < meireihou\ ;
+基礎工事 < kisokouji\ ;
+現像液 < genzoueki\ ;
+観覧車 < kanransha\ ;
+会社葬 < kaishasou\ ;
+鉄渋 < kanashibu\ ;
+禁酒法 < kinshuhou\ ;
+脳膜炎 < noumakuen\ ;
+収縮 < shuushuku\ ;
+台秤 < daibakari\ ;
+文部省 < monbushou\ ;
+軍事通 < gunjitsuu\ ;
+脳腫瘍 < noushuyou\ ;
+世界一 < sekaiichi\ ;
+必読 < hitsudoku\ ;
+博識 < hakushiki\ ;
+再分配 < saibunpai\ ;
+掛布団 < kakebuton\ ;
+外洋船 < gaiyousen\ ;
+黒松 < kuromatsu\ ;
+組職図 < soshokuzu\ ;
+無理往生 < murioujou\ ;
+交換品 < koukanhin\ ;
+火食鳥 < hikuidori\ ;
+貯水槽 < chosuisou\ ;
+海水魚 < kaisuigyo\ ;
+精進日 < shoujinbi\ ;
+卓識 < takushiki\ ;
+薬物 < yakubutsu\ ;
+三色旗 < sanshokki\ ;
+逃亡者 < toubousha\ ;
+道具箱 < dougubako\ ;
+出廷日 < shutteibi\ ;
+画学紙 < gagakushi\ ;
+氷蝕 < hyoushoku\ ;
+貯蔵所 < chozousho\ ;
+東海道 < toukaidou\ ;
+交換台 < koukandai\ ;
+戦時中 < senjichuu\ ;
+卓説 < takusetsu\ ;
+黒星 < kuroboshi\ ;
+混分数 < konbunsuu\ ;
+生石灰 < seisekkai\ ;
+不検束 < fukensoku\ ;
+小松菜 < komatsuna\ ;
+贈呈者 < zouteisha\ ;
+類概念 < ruigainen\ ;
+任天堂 < nintendou\ ;
+南方産 < nanpousan\ ;
+結納金 < yuinoukin\ ;
+秀抜 < shuubatsu\ ;
+心血 < shinketsu\ ;
+太刀筋 < tachisuji\ ;
+水虫 < mizumushi\ ;
+蔓草 < tsurukusa\ ;
+強飯 < kowameshi\ ;
+熟字訓 < jukujikun\ ;
+声明書 < seimeisho\ ;
+問題点 < mondaiten\ ;
+分工場 < bunkoujou\ ;
+定年制 < teinensei\ ;
+地元紙 < jimotoshi\ ;
+預託金 < yotakukin\ ;
+防空砲 < boukuuhou\ ;
+静圧比 < seiatsuhi\ ;
+葛餅 < kuzumochi\ ;
+回顧録 < kaikoroku\ ;
+鶉豆 < uzuramame\ ;
+両替屋 < ryougaeya\ ;
+人気者 < ninkimono\ ;
+不良品 < furyouhin\ ;
+小便所 < shoubenjo\ ;
+循環性 < junkansei\ ;
+商用化 < shouyouka\ ;
+交換円 < koukan''en\ ;
+試験法 < shikenhou\ ;
+学園祭 < gakuensai\ ;
+何時時分 < itsujibun\ ;
+金盥 < kanadarai\ ;
+口癖 < kuchiguse\ ;
+第六感 < dairokkan\ ;
+貧民街 < hinmingai\ ;
+命令書 < meireisho\ ;
+半導体 < handoutai\ ;
+石頭 < ishiatama\ ;
+鳥黐 < torimochi\ ;
+涙声 < namidagoe\ ;
+兵器廠 < heikishou\ ;
+落髪 < rakuhatsu\ ;
+裁判上 < saibanjou\ ;
+売春婦 < baishunpu\ ;
+勅額 < chokugaku\ ;
+配電所 < haidensho\ ;
+社交界 < shakoukai\ ;
+優勝旗 < yuushouki\ ;
+手品師 < tejinashi\ ;
+髄膜炎 < zuimakuen\ ;
+修道院 < shuudouin\ ;
+卵色 < tamagoiro\ ;
+海蛇座 < umihebiza\ ;
+稲光 < inabikari\ ;
+命令文 < meireibun\ ;
+東洋風 < touyoufuu\ ;
+弟息子 < otomusuko\ ;
+五大国 < godaikoku\ ;
+接骨医 < sekkotsui\ ;
+望遠鏡 < bouenkyou\ ;
+梅雨空 < tsuyuzora\ ;
+工員寮 < kouinryou\ ;
+無遊病 < muyuubyou\ ;
+殿達 < tonotachi\ ;
+国際化 < kokusaika\ ;
+驚異的 < kyouiteki\ ;
+落飾 < rakushoku\ ;
+関東弁 < kantouben\ ;
+相互依存 < sougoizon\ ;
+複合語 < fukugougo\ ;
+弘済会 < kousaikai\ ;
+至近弾 < shikindan\ ;
+本年度 < hon''nendo\ ;
+救護所 < kyuugosho\ ;
+沈着 < chinchaku\ ;
+呑気者 < nonkimono\ ;
+小作権 < kosakuken\ ;
+代理母 < dairihaha\ ;
+分界線 < bunkaisen\ ;
+端境期 < hazakaiki\ ;
+語源学 < gogengaku\ ;
+心電図 < shindenzu\ ;
+健康地 < kenkouchi\ ;
+語彙規則 < goikisoku\ ;
+氏子札 < ujikofuda\ ;
+諸問題 < shomondai\ ;
+口唇期 < koushinki\ ;
+将棋盤 < shougiban\ ;
+獅子唐 < shishitou\ ;
+平信徒 < heishinto\ ;
+祥月 < shoutsuki\ ;
+大気圧 < taikiatsu\ ;
+将軍家 < shougunke\ ;
+千代紙 < chiyogami\ ;
+主戦論 < shusenron\ ;
+劣等生 < rettousei\ ;
+新字体 < shinjitai\ ;
+収率 < shuuritsu\ ;
+納品書 < nouhinsho\ ;
+皇太子 < koutaishi\ ;
+確立 < kakuritsu\ ;
+騒擾罪 < soujouzai\ ;
+半官報 < hankanpou\ ;
+同伴者 < douhansha\ ;
+海鼠板 < namakoban\ ;
+准士官 < junshikan\ ;
+実験者 < jikkensha\ ;
+代理業 < dairigyou\ ;
+一次元 < ichijigen\ ;
+用益権 < youekiken\ ;
+上腕筋 < jouwankin\ ;
+参政権 < sanseiken\ ;
+巡礼者 < junreisha\ ;
+実験群 < jikkengun\ ;
+空景気 < karageiki\ ;
+占者 < uranaisha\ ;
+写真家 < shashinka\ ;
+車椅子 < kurumaisu\ ;
+揮毫料 < kigouryou\ ;
+自己弁護 < jikobengo\ ;
+警告音 < keikokuon\ ;
+教授陣 < kyoujujin\ ;
+初七日 < shonanoka\ ;
+安心感 < anshinkan\ ;
+忠節 < chuusetsu\ ;
+鉢巻 < hachimaki\ ;
+大入道 < oonyuudou\ ;
+社会悪 < shakaiaku\ ;
+咄家 < hanashika\ ;
+主製品 < shuseihin\ ;
+無気力 < mukiryoku\ ;
+社会性 < shakaisei\ ;
+脱脂綿 < dasshimen\ ;
+気象台 < kishoudai\ ;
+命令形 < meireikei\ ;
+論理学 < ronrigaku\ ;
+実体論 < jittairon\ ;
+小会派 < shoukaiha\ ;
+同値性 < douchisei\ ;
+酸性岩 < sanseigan\ ;
+矍鑠 < kakushaku\ ;
+下足番 < gesokuban\ ;
+五十音図 < gojuuonzu\ ;
+斥候兵 < sekkouhei\ ;
+好影響 < koueikyou\ ;
+生化学 < seikagaku\ ;
+試乗車 < shijousha\ ;
+圧制的 < asseiteki\ ;
+炭酸紙 < tansanshi\ ;
+利他主義 < ritashugi\ ;
+再従弟 < saijuutei\ ;
+余計者 < yokeimono\ ;
+毒虫 < dokumushi\ ;
+不寝番 < fushinban\ ;
+理屈屋 < rikutsuya\ ;
+保管人 < hokan''nin\ ;
+優良馬 < yuuryouba\ ;
+運輸量 < un''yuryou\ ;
+卓絶 < takuzetsu\ ;
+太平洋 < taiheiyou\ ;
+貯蔵品 < chozouhin\ ;
+単糖類 < tantourui\ ;
+取消 < torikeshi\ ;
+聚楽第 < jurakudai\ ;
+生半可 < namahanka\ ;
+周密 < shuumitsu\ ;
+蒟蒻 < kon''nyaku\ ;
+協議所 < kyougisho\ ;
+今年度 < kon''nendo\ ;
+各月 < kakutsuki\ ;
+段袋 < danbukuro\ ;
+社会層 < shakaisou\ ;
+思春期 < shishunki\ ;
+放射性 < houshasei\ ;
+虫媒花 < chuubaika\ ;
+加持祈祷 < kajikitou\ ;
+内向性 < naikousei\ ;
+優待券 < yuutaiken\ ;
+四人組 < yoningumi\ ;
+退嬰的 < taieiteki\ ;
+善後策 < zengosaku\ ;
+収没 < shuubotsu\ ;
+鉄屑 < tetsukuzu\ ;
+助手席 < joshuseki\ ;
+火木金 < kamokukin\ ;
+卓筆 < takuhitsu\ ;
+氏子帳 < ujikochou\ ;
+皇太后 < koutaigou\ ;
+取次 < toritsugi\ ;
+特攻隊 < tokkoutai\ ;
+卓立 < takuritsu\ ;
+遺言者 < yuigonsha\ ;
+郷土史 < kyoudoshi\ ;
+正道 < masamichi\ ;
+付属校 < fuzokukou\ ;
+沈没 < chinbotsu\ ;
+統治者 < touchisha\ ;
+名人芸 < meijingei\ ;
+凄文句 < sugomonku\ ;
+戦災者 < sensaisha\ ;
+試作機 < shisakuki\ ;
+黄枯茶 < kigaracha\ ;
+胃腸薬 < ichouyaku\ ;
+毒舌 < dokuzetsu\ ;
+陽電子 < youdenshi\ ;
+磨汁 < togishiru\ ;
+文殊様 < monjusama\ ;
+役職 < yakushoku\ ;
+付属書 < fuzokusho\ ;
+討論者 < touronsha\ ;
+多汗症 < takanshou\ ;
+碧玉 < hekigyoku\ ;
+投手陣 < toushujin\ ;
+中継所 < chuukeijo\ ;
+根拠地 < konkyochi\ ;
+法人税 < houjinzei\ ;
+地元民 < jimotomin\ ;
+年期者 < nenkimono\ ;
+酷熱 < kokunetsu\ ;
+花卉園芸 < kakiengei\ ;
+音楽性 < ongakusei\ ;
+被告人 < hikokunin\ ;
+文化庁 < bunkachou\ ;
+偏向板 < henkouban\ ;
+背任罪 < haininzai\ ;
+傍観者 < boukansha\ ;
+蔵浚 < kurazarae\ ;
+星状体 < seijoutai\ ;
+消化剤 < shoukazai\ ;
+欧州版 < oushuuban\ ;
+和製英語 < waseieigo\ ;
+口早 < kuchibaya\ ;
+小豆粥 < azukigayu\ ;
+汁物 < shirumono\ ;
+系図学 < keizugaku\ ;
+酷烈 < kokuretsu\ ;
+仮名手本 < kanadehon\ ;
+蓄積 < chikuseki\ ;
+書簡箋 < shokansen\ ;
+再配分 < saihaibun\ ;
+弱虫 < yowamushi\ ;
+協議官 < kyougikan\ ;
+同類項 < douruikou\ ;
+自転軸 < jitenjiku\ ;
+忠烈 < chuuretsu\ ;
+上甲板 < joukanpan\ ;
+惜別 < sekibetsu\ ;
+全地方 < zenchihou\ ;
+会社法 < kaishahou\ ;
+活劇 < katsugeki\ ;
+奉仕品 < houshihin\ ;
+截拳道 < sekkendou\ ;
+台所 < daidokoro\ ;
+仕舞屋 < shimotaya\ ;
+折衷案 < setchuuan\ ;
+航空隊 < koukuutai\ ;
+蝦蟇口 < gamaguchi\ ;
+禁止法 < kinshihou\ ;
+道具方 < dougukata\ ;
+後程 < nochihodo\ ;
+旦那芸 < dan''nagei\ ;
+扶養料 < fuyouryou\ ;
+弓術 < kyuujutsu\ ;
+不信心 < fushinjin\ ;
+遠近 < ochikochi\ ;
+力説 < rikisetsu\ ;
+平安朝 < heianchou\ ;
+内野席 < naiyaseki\ ;
+因果律 < ingaritsu\ ;
+英和辞典 < eiwajiten\ ;
+軽演劇 < keiengeki\ ;
+予備会議 < yobikaigi\ ;
+板金工 < bankinkou\ ;
+定価表 < teikahyou\ ;
+篤志家 < tokushika\ ;
+鴬色 < uguisuiro\ ;
+試験場 < shikenjou\ ;
+旅行者 < ryokousha\ ;
+歯齦炎 < shigin''en\ ;
+蛸坊主 < takobouzu\ ;
+博物 < hakubutsu\ ;
+参政官 < sanseikan\ ;
+軍事的 < gunjiteki\ ;
+古銭学 < kosengaku\ ;
+軍官憲 < gunkanken\ ;
+関数論 < kansuuron\ ;
+治療費 < chiryouhi\ ;
+毒筆 < dokuhitsu\ ;
+呑口 < nomiguchi\ ;
+命乞 < inochigoi\ ;
+板金屋 < bankin''ya\ ;
+操車場 < soushajou\ ;
+投融資 < touyuushi\ ;
+社交性 < shakousei\ ;
+擬爆弾 < gibakudan\ ;
+竹蜻蛉 < taketonbo\ ;
+恋心 < koigokoro\ ;
+超党派 < choutouha\ ;
+問題外 < mondaigai\ ;
+一般的 < ippanteki\ ;
+資本金 < shihonkin\ ;
+悪口 < waruguchi\ ;
+男子用 < danshiyou\ ;
+初雪 < hatsuyuki\ ;
+社会党 < shakaitou\ ;
+厭世的 < enseiteki\ ;
+弱腰 < yowagoshi\ ;
+訓練生 < kunrensei\ ;
+逆鞘 < gyakuzaya\ ;
+贈呈本 < zouteibon\ ;
+二院制度 < niinseido\ ;
+年頃 < toshigoro\ ;
+家族法 < kazokuhou\ ;
+人気株 < ninkikabu\ ;
+読後感 < dokugokan\ ;
+単細胞 < tansaibou\ ;
+鳴禽類 < meikinrui\ ;
+内部的 < naibuteki\ ;
+練兵場 < renpeijou\ ;
+夏期時間 < kakijikan\ ;
+大前提 < daizentei\ ;
+着陸 < chakuriku\ ;
+再従兄 < saijuukei\ ;
+告別 < kokubetsu\ ;
+可動橋 < kadoukyou\ ;
+水油 < mizuabura\ ;
+氷水 < koorimizu\ ;
+音楽堂 < ongakudou\ ;
+荒隠元 < sayaingen\ ;
+井戸屋形 < idoyakata\ ;
+洗礼名 < senreimei\ ;
+現業員 < gengyouin\ ;
+一工夫 < hitokufuu\ ;
+前輿 < sakigoshi\ ;
+号室 < goushitsu\ ;
+膝小僧 < hizakozou\ ;
+自己矛盾 < jikomujun\ ;
+作詞家 < sakushika\ ;
+作為的 < sakuiteki\ ;
+小宇宙 < shouuchuu\ ;
+風水害 < fuusuigai\ ;
+大車輪 < daisharin\ ;
+改定版 < kaiteihan\ ;
+社会人 < shakaijin\ ;
+悪影響 < akueikyou\ ;
+西部劇 < seibugeki\ ;
+雑貨商 < zakkashou\ ;
+劣等感 < rettoukan\ ;
+出願 < shutsugan\ ;
+透明性 < toumeisei\ ;
+出題 < shutsudai\ ;
+若夫婦 < wakafuufu\ ;
+鱗雲 < urokogumo\ ;
+鴃舌 < gekizetsu\ ;
+陰陽道 < onmyoudou\ ;
+休憩所 < kyuukeijo\ ;
+配給所 < haikyuujo\ ;
+装身具 < soushingu\ ;
+無欠席 < mukesseki\ ;
+自制心 < jiseishin\ ;
+通釈 < tsuushaku\ ;
+砂粒 < sunatsubu\ ;
+副作用 < fukusayou\ ;
+再選挙 < saisenkyo\ ;
+隠匿者 < intokusha\ ;
+同人種 < doujinshu\ ;
+運送業 < unsougyou\ ;
+内務省 < naimushou\ ;
+炭酸水 < tansansui\ ;
+衛生的 < eiseiteki\ ;
+再発行 < saihakkou\ ;
+遺言状 < yuigonjou\ ;
+速達 < sokutatsu\ ;
+点眼水 < tengansui\ ;
+軽合金 < keigoukin\ ;
+一発屋 < ippatsuya\ ;
+出陣 < shutsujin\ ;
+全製品 < zenseihin\ ;
+通達 < tsuutatsu\ ;
+応召者 < oushousha\ ;
+初釜 < hatsugama\ ;
+古印紙 < furuinshi\ ;
+資本財 < shihonzai\ ;
+回顧的 < kaikoteki\ ;
+二親等 < nishintou\ ;
+交戦権 < kousenken\ ;
+広報誌 < kouhoushi\ ;
+例年祭 < reinensai\ ;
+予防薬 < yobouyaku\ ;
+和声学 < waseigaku\ ;
+出門 < shutsumon\ ;
+音楽史 < ongakushi\ ;
+萎縮腎 < ishukujin\ ;
+盗聴器 < touchouki\ ;
+予約金 < yoyakukin\ ;
+釣堀 < tsuribori\ ;
+春場所 < harubasho\ ;
+租庸調 < soyouchou\ ;
+近頃 < chikagoro\ ;
+鳶職 < tobishoku\ ;
+原子論 < genshiron\ ;
+無機物 < mukibutsu\ ;
+決議案 < ketsugian\ ;
+創作家 < sousakuka\ ;
+爛熟期 < ranjukuki\ ;
+中間派 < chuukanha\ ;
+石筆 < sekihitsu\ ;
+里程標 < riteihyou\ ;
+資本論 < shihonron\ ;
+今様歌 < imayouuta\ ;
+石竹 < sekichiku\ ;
+引綱 < hikidzuna\ ;
+会津塗 < aidzunuri\ ;
+丸坊主 < marubouzu\ ;
+移植性 < ishokusei\ ;
+短筒 < tandzutsu\ ;
+別天地 < bettenchi\ ;
+毒物 < dokubutsu\ ;
+即日 < sokujitsu\ ;
+防空壕 < boukuugou\ ;
+逃道 < nigemichi\ ;
+運送料 < unsouryou\ ;
+神主 < kan''nushi\ ;
+幽霊船 < yuureisen\ ;
+伯備線 < hakubisen\ ;
+胃腸病 < ichoubyou\ ;
+危機管理 < kikikanri\ ;
+合印 < aijirushi\ ;
+基礎体温 < kisotaion\ ;
+卒業 < sotsugyou\ ;
+告示板 < kokujiban\ ;
+小作人 < kosakunin\ ;
+離間策 < rikansaku\ ;
+勝着 < shouchaku\ ;
+弱 < nayonayo\ ;
+蹲 < tsukubai\ ;
+姑 < shuutome\ ;
+塊 < katamari\ ;
+堤 < tsutsumi\ ;
+鼓 < tsudzumi\ ;
+源 < minamoto\ ;
+鶏 < niwatori\ ;
+叢 < kusamura\ ;
+印 < shirushi\ ;
+魂 < tamashii\ ;
+腸 < harawata\ ;
+杯 < sakazuki\ ;
+雷 < kaminari\ ;
+雁 < karigane\ ;
+暁 < akatsuki\ ;
+紫 < murasaki\ ;
+掌 < tenohira\ ;
+抑 < somosomo\ ;
+懐 < futokoro\ ;
+吐出 < toshutsu\ ;
+金型 < kanagata\ ;
+石神 < shakujin\ ;
+名刹 < meisatsu\ ;
+弾着 < danchaku\ ;
+落籍 < rakuseki\ ;
+矢筒 < yadzutsu\ ;
+心服 < shinpuku\ ;
+逆転 < gyakuten\ ;
+合力 < gouryoku\ ;
+薙刀 < naginata\ ;
+同列 < douretsu\ ;
+民数記 < minsuuki\ ;
+鉄砲座 < teppouza\ ;
+盂蘭盆会 < urabon''e\ ;
+文化人 < bunkajin\ ;
+木工所 < mokkoujo\ ;
+医科歯科 < ikashika\ ;
+直面 < chokumen\ ;
+一般法 < ippanhou\ ;
+復業 < fukugyou\ ;
+薄口 < usukuchi\ ;
+労務者 < roumusha\ ;
+草食 < soushoku\ ;
+文庫本 < bunkobon\ ;
+常闇 < tokoyami\ ;
+合冊 < gousatsu\ ;
+剥落 < hakuraku\ ;
+茶髪 < chapatsu\ ;
+速読 < sokudoku\ ;
+厳密 < genmitsu\ ;
+代理人 < dairinin\ ;
+海水着 < kaisuigi\ ;
+出郷 < shukkyou\ ;
+厚底 < atsuzoko\ ;
+自己流 < jikoryuu\ ;
+引窓 < hikimado\ ;
+丁寧語 < teineigo\ ;
+分轄 < bunkatsu\ ;
+音楽会 < ongakkai\ ;
+同胞愛 < douhouai\ ;
+通読 < tsuudoku\ ;
+毛唐人 < ketoujin\ ;
+民事上 < minjijou\ ;
+淡彩画 < tansaiga\ ;
+期待値 < kitaichi\ ;
+遜色 < sonshoku\ ;
+全裸体 < zenratai\ ;
+立体派 < rittaiha\ ;
+追跡 < tsuiseki\ ;
+勲爵 < kunshaku\ ;
+護送船 < gosousen\ ;
+通訳 < tsuuyaku\ ;
+野蛮人 < yabanjin\ ;
+只只 < tadatada\ ;
+友垣 < tomogaki\ ;
+女性軍 < joseigun\ ;
+同趣味 < doushumi\ ;
+半月 < hantsuki\ ;
+可動性 < kadousei\ ;
+不養生 < fuyoujou\ ;
+飽和点 < houwaten\ ;
+真迹 < shinseki\ ;
+既往症 < kioushou\ ;
+吉例 < kitsurei\ ;
+近鉄 < kintetsu\ ;
+茶飯 < chameshi\ ;
+別言 < betsugen\ ;
+殖産 < shokusan\ ;
+金口 < kinguchi\ ;
+造血 < zouketsu\ ;
+鳥籠 < torikago\ ;
+勃発 < boppatsu\ ;
+建築 < kenchiku\ ;
+一致点 < itchiten\ ;
+出身 < shusshin\ ;
+筆記者 < hikkisha\ ;
+十月 < juugatsu\ ;
+送風機 < soufuuki\ ;
+口占 < kuchiura\ ;
+姫御子 < himemiko\ ;
+手配書 < tehaisho\ ;
+正立 < seiritsu\ ;
+鯨骨 < geikotsu\ ;
+求心 < kyuushin\ ;
+相鎚 < aidzuchi\ ;
+眼識 < ganshiki\ ;
+脳珊瑚 < nousango\ ;
+上層土 < jousoudo\ ;
+心拍 < shinpaku\ ;
+予約語 < yoyakugo\ ;
+彼此 < karekore\ ;
+油槽船 < yusousen\ ;
+歯磨 < hamigaki\ ;
+帝闕 < teiketsu\ ;
+一寸見 < chottomi\ ;
+予防線 < yobousen\ ;
+勘定日 < kanjoubi\ ;
+内鰐 < uchiwani\ ;
+古創 < furukizu\ ;
+鴨猟 < kamoryou\ ;
+没却 < bokkyaku\ ;
+内帑金 < naidokin\ ;
+金力 < kinryoku\ ;
+右側 < migigawa\ ;
+出超 < shutchou\ ;
+口前 < kuchimae\ ;
+伝送路 < densouro\ ;
+刻薄 < kokuhaku\ ;
+銀細工 < ginzaiku\ ;
+人相見 < ninsoumi\ ;
+水性 < mizushou\ ;
+広袖 < hirosode\ ;
+重力 < juuryoku\ ;
+風刺画 < fuushiga\ ;
+相鉄 < soutetsu\ ;
+荷車 < niguruma\ ;
+動物 < doubutsu\ ;
+午餐会 < gosankai\ ;
+知略 < chiryaku\ ;
+目録 < mokuroku\ ;
+無欠勤 < mukekkin\ ;
+比重計 < hijuukei\ ;
+切論 < setsuron\ ;
+運送店 < unsouten\ ;
+凶賊 < kyouzoku\ ;
+操作盤 < sousaban\ ;
+着装 < chakusou\ ;
+在庫品 < zaikohin\ ;
+遅脈 < chimyaku\ ;
+水引 < mizuhiki\ ;
+橈骨 < toukotsu\ ;
+殲滅 < senmetsu\ ;
+冠雪 < kansetsu\ ;
+北極 < hokkyoku\ ;
+幻術 < genjutsu\ ;
+氷床 < hyoushou\ ;
+劃策 < kakusaku\ ;
+民主化 < minshuka\ ;
+即席 < sokuseki\ ;
+延滞金 < entaikin\ ;
+又又 < matamata\ ;
+水底 < minasoko\ ;
+唐破風 < karahafu\ ;
+直配 < chokuhai\ ;
+切言 < setsugen\ ;
+自公民 < jikoumin\ ;
+急告 < kyuukoku\ ;
+釈典 < shakuten\ ;
+賢夫人 < kenpujin\ ;
+毫末 < goumatsu\ ;
+半折 < hansetsu\ ;
+平袖 < hirasode\ ;
+二度手間 < nidodema\ ;
+鯛飯 < taimeshi\ ;
+運転者 < untensha\ ;
+切要 < setsuyou\ ;
+巻雲 < makigumo\ ;
+不格好 < bukakkou\ ;
+催淫剤 < saiinzai\ ;
+残物 < zanbutsu\ ;
+栄養短 < eiyoutan\ ;
+態々 < wazawaza\ ;
+劫略 < gouryaku\ ;
+反別 < tanbetsu\ ;
+正直 < shoujiki\ ;
+医学界 < igakukai\ ;
+効率 < kouritsu\ ;
+無常感 < mujoukan\ ;
+只事 < tadagoto\ ;
+碩学 < sekigaku\ ;
+背格好 < sekakkou\ ;
+山査子 < sanzashi\ ;
+医学生 < igakusei\ ;
+水嵩 < mizukasa\ ;
+開業医 < kaigyoui\ ;
+直送 < chokusou\ ;
+分裂 < bunretsu\ ;
+役柄 < yakugara\ ;
+凌辱 < ryoujoku\ ;
+律文 < ritsubun\ ;
+程々 < hodohodo\ ;
+収入 < shuunyuu\ ;
+便衣隊 < ben''itai\ ;
+若鶏 < wakadori\ ;
+沈勇 < chin''yuu\ ;
+双六 < sugoroku\ ;
+廃絶 < haizetsu\ ;
+幹事会 < kanjikai\ ;
+道糸 < michiito\ ;
+多原子 < tagenshi\ ;
+創立 < souritsu\ ;
+協心 < kyoushin\ ;
+北朝 < hokuchou\ ;
+勇烈 < yuuretsu\ ;
+性別 < seibetsu\ ;
+勃然 < botsuzen\ ;
+十字形 < juujikei\ ;
+単式 < tanshiki\ ;
+外野手 < gaiyashu\ ;
+健胃錠 < ken''ijou\ ;
+関西馬 < kansaiba\ ;
+指示詞 < shijishi\ ;
+参列 < sanretsu\ ;
+明日葉 < ashitaba\ ;
+気心 < kigokoro\ ;
+短距離 < tankyori\ ;
+一軒屋 < ikken''ya\ ;
+川風 < kawakaze\ ;
+芸備線 < geibisen\ ;
+刀術 < toujutsu\ ;
+匡救 < kyoukyuu\ ;
+死物 < shibutsu\ ;
+刳舟 < kuribune\ ;
+陣太鼓 < jindaiko\ ;
+真冬日 < mafuyubi\ ;
+四季報 < shikihou\ ;
+分蝕 < bunshoku\ ;
+白鳥 < hakuchou\ ;
+兵食 < heishoku\ ;
+殿様 < tonosama\ ;
+参入 < san''nyuu\ ;
+受付 < uketsuke\ ;
+単帯 < hitoeobi\ ;
+矯激 < kyougeki\ ;
+怪傑 < kaiketsu\ ;
+刺股 < sasumata\ ;
+汲取 < kumitori\ ;
+砂浜 < sunahama\ ;
+繁華街 < hankagai\ ;
+訓練所 < kunrenjo\ ;
+達筆 < tappitsu\ ;
+海水温 < kaisuion\ ;
+筋電図 < kindenzu\ ;
+割礼 < katsurei\ ;
+毎月 < maitsuki\ ;
+泌尿幾 < hinyouki\ ;
+升形 < masugata\ ;
+不安心 < fuanshin\ ;
+川霧 < kawagiri\ ;
+劇的 < gekiteki\ ;
+訪問着 < houmongi\ ;
+分蘖 < bunketsu\ ;
+会社員 < kaishain\ ;
+叔世 < shukusei\ ;
+兀鷹 < hagetaka\ ;
+法王権 < hououken\ ;
+勘決 < kanketsu\ ;
+不導体 < fudoutai\ ;
+単試合 < tanshiai\ ;
+即妙 < sokumyou\ ;
+剣突 < kentsuku\ ;
+必定 < hitsujou\ ;
+前約 < zen''yaku\ ;
+劇痛 < gekitsuu\ ;
+午年 < umadoshi\ ;
+平落 < hiraochi\ ;
+硬式 < koushiki\ ;
+写生画 < shaseiga\ ;
+常識 < joushiki\ ;
+管理人 < kanrinin\ ;
+心学 < shingaku\ ;
+毎日 < mainichi\ ;
+白骨 < hakkotsu\ ;
+一家言 < ikkagoto\ ;
+升席 < masuseki\ ;
+同期生 < doukisei\ ;
+横風 < yokokaze\ ;
+丁定規 < teijougi\ ;
+鰐足 < waniashi\ ;
+遅筆 < chihitsu\ ;
+母方 < hahakata\ ;
+守備隊 < shubitai\ ;
+氷壁 < hyouheki\ ;
+瞞着 < manchaku\ ;
+辛辛 < karagara\ ;
+相識 < soushiki\ ;
+菜箸 < saibashi\ ;
+併合罪 < heigozai\ ;
+週給 < shuukyuu\ ;
+八面 < hachimen\ ;
+博学 < hakugaku\ ;
+殖民 < shokumin\ ;
+進級 < shinkyuu\ ;
+気無精 < kibushou\ ;
+三枚目 < sanmaime\ ;
+前節 < zensetsu\ ;
+得心 < tokushin\ ;
+手配師 < tehaishi\ ;
+着船 < chakusen\ ;
+引潮 < hikishio\ ;
+常設 < jousetsu\ ;
+無自覚 < mujikaku\ ;
+得得 < tokutoku\ ;
+落潮 < rakuchou\ ;
+弱毒 < jakudoku\ ;
+厥冷 < ketsurei\ ;
+蔵元 < kuramoto\ ;
+建物 < tatemono\ ;
+死滅 < shimetsu\ ;
+勇決 < yuuketsu\ ;
+先高 < sakidaka\ ;
+発駅 < hatsueki\ ;
+火事泥 < kajidoro\ ;
+退色 < taishoku\ ;
+気室 < kishitsu\ ;
+人工語 < jinkougo\ ;
+既往歴 < kioureki\ ;
+円錐 < marugiri\ ;
+一般性 < ippansei\ ;
+勝楽 < shouraku\ ;
+年月日 < nengappi\ ;
+兎馬 < usagiuma\ ;
+当月 < tougetsu\ ;
+千島 < chishima\ ;
+横雲 < yokogumo\ ;
+変成器 < henseiki\ ;
+徐徐 < sorosoro\ ;
+元高 < motodaka\ ;
+未信者 < mishinja\ ;
+師説 < shisetsu\ ;
+包摂 < housetsu\ ;
+殿方 < tonogata\ ;
+民宿 < minshuku\ ;
+不案内 < fuan''nai\ ;
+自棄酒 < yakezake\ ;
+塑弾性 < sodansei\ ;
+武器倉 < bukigura\ ;
+連結 < renketsu\ ;
+聴音器 < chouonki\ ;
+直言 < chokugen\ ;
+平仮名 < hiragana\ ;
+彎月 < wangetsu\ ;
+感知器 < kanchiki\ ;
+巡錫 < junshaku\ ;
+彎曲 < wankyoku\ ;
+直角 < chokkaku\ ;
+廉直 < renchoku\ ;
+直視 < chokushi\ ;
+死活 < shikatsu\ ;
+心境 < shinkyou\ ;
+平脈 < heimyaku\ ;
+当日 < toujitsu\ ;
+前半期 < zenpanki\ ;
+復学 < fukugaku\ ;
+入閣 < nyuukaku\ ;
+空論家 < kuuronka\ ;
+恵比寿顔 < ebisugao\ ;
+横長 < yokonaga\ ;
+死没 < shibotsu\ ;
+包括 < houkatsu\ ;
+忠告 < chuukoku\ ;
+巻軸 < makijiku\ ;
+農閑期 < noukanki\ ;
+百雷 < hyakurai\ ;
+不賛成 < fusansei\ ;
+百難 < hyakunan\ ;
+養鶏家 < youkeika\ ;
+出芽 < shutsuga\ ;
+菅笠 < sugegasa\ ;
+剛直 < gouchoku\ ;
+十二支 < juunishi\ ;
+加湿 < kashitsu\ ;
+構成比 < kouseihi\ ;
+向日葵 < himawari\ ;
+発電 < hatsuden\ ;
+分脈 < bunmyaku\ ;
+監訳 < kan''yaku\ ;
+遅着 < chichaku\ ;
+機業家 < kigyouka\ ;
+党閥 < toubatsu\ ;
+別納 < betsunou\ ;
+刑罰 < keibatsu\ ;
+内達 < naitatsu\ ;
+水滸伝 < suikoden\ ;
+御嬢様 < ojousama\ ;
+心嚢 < shin''nou\ ;
+役得 < yakutoku\ ;
+臨床医 < rinshoui\ ;
+連立 < renritsu\ ;
+郷愁 < kyoushuu\ ;
+彷彿 < houfutsu\ ;
+庭石 < niwaishi\ ;
+切者 < kiremono\ ;
+遅発 < chihatsu\ ;
+栄養源 < eiyougen\ ;
+多年草 < tanensou\ ;
+荷厄介 < niyakkai\ ;
+元鞘 < motosaya\ ;
+励磁損 < reijison\ ;
+安全瓣 < anzenben\ ;
+重酸素 < juusanso\ ;
+忘却 < boukyaku\ ;
+歴歴 < rekireki\ ;
+二塁手 < niruishu\ ;
+確信 < kakushin\ ;
+石柱 < sekichuu\ ;
+木工具 < mokkougu\ ;
+欠番 < ketsuban\ ;
+彰徳 < shoutoku\ ;
+点眼器 < tenganki\ ;
+愚図愚図 < guzuguzu\ ;
+鱈腹 < tarafuku\ ;
+割物 < waremono\ ;
+幕臣 < bakushin\ ;
+入鋏 < nyuukyou\ ;
+莫大小 < meriyasu\ ;
+製鋼所 < seikoujo\ ;
+軽鴨 < karugamo\ ;
+隠蔽子 < inpeishi\ ;
+勘定場 < kanjouba\ ;
+羽団扇 < hauchiwa\ ;
+念仏 < nenbutsu\ ;
+破戒僧 < hakaisou\ ;
+瀬戸物 < setomono\ ;
+菊石 < kikuishi\ ;
+冷血 < reiketsu\ ;
+平絹 < hiraginu\ ;
+酒呑 < sakenomi\ ;
+葉桜 < hazakura\ ;
+着米 < chakubei\ ;
+大英断 < daieidan\ ;
+強敵 < kyouteki\ ;
+求償 < kyuushou\ ;
+通称 < tsuushou\ ;
+忠僕 < chuuboku\ ;
+水力 < suiryoku\ ;
+残月 < zangetsu\ ;
+勅書 < chokusho\ ;
+先議権 < sengiken\ ;
+共通 < kyoutsuu\ ;
+反抗期 < hankouki\ ;
+本会議 < honkaigi\ ;
+前略 < zenryaku\ ;
+殊更 < kotosara\ ;
+弦月 < gengetsu\ ;
+英米人 < eibeijin\ ;
+低順位 < teijun''i\ ;
+目薬 < megusuri\ ;
+不老泉 < furousen\ ;
+協商 < kyoushou\ ;
+百錬 < hyakuren\ ;
+公達 < koutatsu\ ;
+弱敵 < jakuteki\ ;
+逆算 < gyakusan\ ;
+黙々 < mokumoku\ ;
+八達 < hattatsu\ ;
+八道 < hachidou\ ;
+北山 < kitayama\ ;
+剿滅 < soumetsu\ ;
+名宛人 < naatenin\ ;
+和気藹藹 < wakiaiai\ ;
+自由詩 < jiyuushi\ ;
+廃物 < haibutsu\ ;
+公述 < koujutsu\ ;
+忠信 < chuushin\ ;
+皮質 < hishitsu\ ;
+石文 < ishibumi\ ;
+形式 < keishiki\ ;
+凋落 < chouraku\ ;
+意志的 < ishiteki\ ;
+卸値 < oroshine\ ;
+戦闘員 < sentouin\ ;
+原画像 < gengazou\ ;
+短日 < tanjitsu\ ;
+水先 < mizusaki\ ;
+巷説 < kousetsu\ ;
+大腿部 < daitaibu\ ;
+共軛 < kyouyaku\ ;
+黒々 < kuroguro\ ;
+剥焼 < sukiyaki\ ;
+滋賀県 < shigaken\ ;
+重水素 < juusuiso\ ;
+逢着 < houchaku\ ;
+廃熱 < hainetsu\ ;
+人造湖 < jinzouko\ ;
+役宅 < yakutaku\ ;
+到着 < touchaku\ ;
+請負師 < ukeoishi\ ;
+茹蛸 < yudedako\ ;
+水準器 < suijunki\ ;
+漫画本 < mangahon\ ;
+不真面目 < fumajime\ ;
+再説 < saisetsu\ ;
+連発 < renpatsu\ ;
+復唱 < fukushou\ ;
+知日 < chinichi\ ;
+徴収 < choushuu\ ;
+勅撰 < chokusen\ ;
+互換性 < gokansei\ ;
+分節 < bunsetsu\ ;
+配列 < hairetsu\ ;
+種種相 < shujusou\ ;
+処罰 < shobatsu\ ;
+予防法 < yobouhou\ ;
+安全灯 < anzentou\ ;
+歴朝 < rekichou\ ;
+劇毒 < gekidoku\ ;
+追究 < tsuikyuu\ ;
+歳末 < saimatsu\ ;
+横軸 < yokojiku\ ;
+分筆 < bunpitsu\ ;
+輯録 < shuuroku\ ;
+半口 < hankuchi\ ;
+運送人 < unsounin\ ;
+十哲 < juttetsu\ ;
+百選 < hyakusen\ ;
+上首尾 < joushubi\ ;
+仏舎利 < busshari\ ;
+與太者 < yotamono\ ;
+満天下 < mantenka\ ;
+得手勝手 < etekatte\ ;
+先金 < sakigane\ ;
+軽食 < keishoku\ ;
+分立 < bunritsu\ ;
+価格差 < kakakusa\ ;
+内訳 < uchiwake\ ;
+追福 < tsuifuku\ ;
+無花果 < ichijiku\ ;
+欲深 < yokubuka\ ;
+不人情 < funinjou\ ;
+土建屋 < doken''ya\ ;
+歪曲 < waikyoku\ ;
+入超 < nyuuchou\ ;
+割注 < warichuu\ ;
+民力 < minryoku\ ;
+遮断機 < shadanki\ ;
+乱杭歯 < ranguiba\ ;
+蝋細工 < rouzaiku\ ;
+北壁 < hokuheki\ ;
+糜爛性 < biransei\ ;
+貴公子 < kikoushi\ ;
+廃滅 < haimetsu\ ;
+水上 < minakami\ ;
+初盆 < hatsubon\ ;
+廉価版 < renkaban\ ;
+正札 < shoufuda\ ;
+入賞 < nyuushou\ ;
+先達 < sendatsu\ ;
+止木 < tomarigi\ ;
+着眼 < chakugan\ ;
+初発 < shohatsu\ ;
+原子炉 < genshiro\ ;
+転換炉 < tenkanro\ ;
+黎明期 < reimeiki\ ;
+軟骨 < nankotsu\ ;
+菖蒲湯 < shoubuyu\ ;
+無駄骨 < mudabone\ ;
+類似品 < ruijihin\ ;
+飛行隊 < hikoutai\ ;
+当局 < toukyoku\ ;
+殺害 < satsugai\ ;
+金鳳花 < kinpouge\ ;
+黒雲母 < kurounmo\ ;
+落掌 < rakushou\ ;
+相手方 < aitegata\ ;
+不完全 < fukanzen\ ;
+強弱 < kyoujaku\ ;
+心中 < shinchuu\ ;
+祖国愛 < sokokuai\ ;
+平皿 < hirazara\ ;
+募集費 < boshuuhi\ ;
+初産 < hatsuzan\ ;
+常緑 < jouryoku\ ;
+生産費 < seisanhi\ ;
+統合化 < tougouka\ ;
+旅行家 < ryokouka\ ;
+社外秘 < shagaihi\ ;
+南仏 < nanfutsu\ ;
+従価税 < juukazei\ ;
+十八 < juuhachi\ ;
+使徒書 < shitosho\ ;
+適業 < tekigyou\ ;
+鬱鬱 < utsuutsu\ ;
+追白 < tsuihaku\ ;
+従卒 < juusotsu\ ;
+御冠 < okanmuri\ ;
+律呂 < ritsuryo\ ;
+辣腕 < ratsuwan\ ;
+着用 < chakuyou\ ;
+逆用 < gyakuyou\ ;
+逆産 < gyakuzan\ ;
+六親 < rokushin\ ;
+後口 < atokuchi\ ;
+寝化粧 < negeshou\ ;
+創世期 < souseiki\ ;
+金目鯛 < kinmedai\ ;
+単一 < tan''itsu\ ;
+帯緑 < tairyoku\ ;
+石弓 < ishiyumi\ ;
+選曲 < senkyoku\ ;
+通牒 < tsuuchou\ ;
+上下線 < jougesen\ ;
+理事国 < rijikoku\ ;
+水準儀 < suijungi\ ;
+再保険 < saihoken\ ;
+県立 < kenritsu\ ;
+別状 < betsujou\ ;
+下馬先 < gebasaki\ ;
+凍結 < touketsu\ ;
+寄付行為 < kifukoui\ ;
+泉貨紙 < senkashi\ ;
+御令嬢 < goreijou\ ;
+川蝉 < kawasemi\ ;
+郷国 < kyoukoku\ ;
+追申 < tsuishin\ ;
+電気街 < denkigai\ ;
+砂山 < sunayama\ ;
+律動 < ritsudou\ ;
+正接 < seisetsu\ ;
+迫真 < hakushin\ ;
+軍政部 < gunseibu\ ;
+御題目 < odaimoku\ ;
+省筆 < seihitsu\ ;
+弟御 < otoutogo\ ;
+凄絶 < seizetsu\ ;
+後列 < kouretsu\ ;
+無保証 < muhoshou\ ;
+可分性 < kabunsei\ ;
+亜鉛鉄 < aentetsu\ ;
+動安定 < douantei\ ;
+年率 < nenritsu\ ;
+刑事上 < keijijou\ ;
+女性用 < joseiyou\ ;
+冗舌 < jouzetsu\ ;
+標註 < hyouchuu\ ;
+真白 < masshiro\ ;
+典薬 < ten''yaku\ ;
+乾燥炉 < kansouro\ ;
+弱少 < jakushou\ ;
+育児法 < ikujihou\ ;
+直答 < chokutou\ ;
+石山 < ishiyama\ ;
+茜色 < akaneiro\ ;
+発言 < hatsugen\ ;
+愛鳥家 < aichouka\ ;
+本舞台 < honbutai\ ;
+個人性 < kojinsei\ ;
+弓形 < yuminari\ ;
+副木 < fukuboku\ ;
+依存症 < izonshou\ ;
+真症 < shinshou\ ;
+劣情 < retsujou\ ;
+悪性度 < akuseido\ ;
+冥罰 < meibatsu\ ;
+神々 < kamigami\ ;
+劣悪 < retsuaku\ ;
+鮮血 < senketsu\ ;
+美男子 < binanshi\ ;
+役割 < yakuwari\ ;
+石室 < ishimuro\ ;
+若衆 < wakashuu\ ;
+母君 < hahagimi\ ;
+電波法 < denpahou\ ;
+軍事上 < gunjijou\ ;
+平熱 < heinetsu\ ;
+直税 < chokuzei\ ;
+近着 < kinchaku\ ;
+道板 < michiita\ ;
+烏犀角 < usaikaku\ ;
+矩尺 < kanejaku\ ;
+偏微分 < henbibun\ ;
+素寒貧 < sukanpin\ ;
+豚小屋 < butagoya\ ;
+延滞税 < entaizei\ ;
+選抜 < senbatsu\ ;
+冥王星 < meiousei\ ;
+円盤状 < enbanjou\ ;
+白蟻 < shiroari\ ;
+強奪 < goudatsu\ ;
+蔵書家 < zoushoka\ ;
+録音機 < rokuonki\ ;
+過般来 < kahanrai\ ;
+鑚孔機 < sankouki\ ;
+一般人 < ippanjin\ ;
+刺殺 < shisatsu\ ;
+凡百 < bonpyaku\ ;
+律令 < ritsurei\ ;
+相手役 < aiteyaku\ ;
+内腿 < uchimomo\ ;
+歩合給 < buaikyuu\ ;
+井戸綱 < idodzuna\ ;
+既知数 < kichisuu\ ;
+軍閥 < gunbatsu\ ;
+工務店 < koumuten\ ;
+幣物 < heimotsu\ ;
+逸楽 < itsuraku\ ;
+速決 < sokketsu\ ;
+北側 < hokusoku\ ;
+一朱銀 < isshugin\ ;
+彫刻 < choukoku\ ;
+逆潮 < sakashio\ ;
+砲列 < houretsu\ ;
+航空機 < koukuuki\ ;
+黒繻子 < kurojusu\ ;
+登記所 < toukisho\ ;
+正式 < seishiki\ ;
+適時打 < tekijida\ ;
+冠絶 < kanzetsu\ ;
+殿原 < tonobara\ ;
+凸状 < totsujou\ ;
+合理性 < gourisei\ ;
+達文 < tatsubun\ ;
+征伐 < seibatsu\ ;
+幻滅 < genmetsu\ ;
+弾圧 < dan''atsu\ ;
+軽軽 < karugaru\ ;
+陰電子 < indenshi\ ;
+充血 < juuketsu\ ;
+内職 < naishoku\ ;
+助動詞 < jodoushi\ ;
+慰藉料 < isharyou\ ;
+軟鉄 < nantetsu\ ;
+衛生兵 < eiseihei\ ;
+石墨 < sekiboku\ ;
+低物価 < teibukka\ ;
+個人展 < kojinten\ ;
+実体化 < jittaika\ ;
+判決 < hanketsu\ ;
+短夜 < mijikayo\ ;
+強圧 < kyouatsu\ ;
+邪魔者 < jamamono\ ;
+平滑 < heikatsu\ ;
+鬢長 < bin''naga\ ;
+米議会 < beigikai\ ;
+無尽蔵 < mujinzou\ ;
+円罐 < marugama\ ;
+直直 < jikijiki\ ;
+巻紙 < makigami\ ;
+兼職 < kenshoku\ ;
+転換期 < tenkanki\ ;
+欠文 < ketsubun\ ;
+代議士 < daigishi\ ;
+鼻濁音 < bidakuon\ ;
+冬空 < fuyuzora\ ;
+遅日 < chijitsu\ ;
+別殿 < betsuden\ ;
+別段 < betsudan\ ;
+逆浪 < sakanami\ ;
+白蓮 < byakuren\ ;
+石垣 < ishigaki\ ;
+高電位 < kouden''i\ ;
+持参金 < jisankin\ ;
+唯理論 < yuiriron\ ;
+軸足 < jikuashi\ ;
+名望家 < meibouka\ ;
+多元論 < tagenron\ ;
+目的 < mokuteki\ ;
+萩属 < hagizoku\ ;
+自棄糞 < yakekuso\ ;
+正符号 < seifugou\ ;
+無産者 < musansha\ ;
+速業 < hayawaza\ ;
+育児書 < ikujisho\ ;
+市立 < shiritsu\ ;
+若草 < wakakusa\ ;
+定期船 < teikisen\ ;
+着水 < chakusui\ ;
+手弁当 < tebentou\ ;
+乾燥機 < kansouki\ ;
+三日間 < mikkakan\ ;
+十二分 < juunibun\ ;
+稽古台 < keikodai\ ;
+転轍 < tentetsu\ ;
+鰐皮 < wanigawa\ ;
+止宿 < shishuku\ ;
+芸術 < geijutsu\ ;
+先頭伍 < sentougo\ ;
+正宗 < masamune\ ;
+横腹 < yokobara\ ;
+冗筆 < jouhitsu\ ;
+公職 < koushoku\ ;
+各々 < sorezore\ ;
+刃渡 < hawatari\ ;
+鳩尾 < mizoochi\ ;
+出来高 < dekidaka\ ;
+出演 < shutsuen\ ;
+適役 < tekiyaku\ ;
+身長 < shinchou\ ;
+三世相 < sanzesou\ ;
+力学 < rikigaku\ ;
+色道 < shikidou\ ;
+百芸 < hyakugei\ ;
+乎古止点 < okototen\ ;
+勢力 < seiryoku\ ;
+船霊 < funadama\ ;
+運根鈍 < unkondon\ ;
+砂原 < sunahara\ ;
+彎入 < wan''nyuu\ ;
+衛生上 < eiseijou\ ;
+制札 < seisatsu\ ;
+楽長 < gakuchou\ ;
+直球 < chokkyuu\ ;
+医学士 < igakushi\ ;
+請負人 < ukeoinin\ ;
+極限 < kyokugen\ ;
+鮫膚 < samehada\ ;
+断面図 < danmenzu\ ;
+発色 < hasshoku\ ;
+虚仮猿 < kokezaru\ ;
+未使用 < mishiyou\ ;
+電波星 < denpasei\ ;
+葬列 < souretsu\ ;
+勅問 < chokumon\ ;
+弾力 < danryoku\ ;
+式場 < shikijou\ ;
+高高 < takadaka\ ;
+音韻論 < on''inron\ ;
+割引 < waribiki\ ;
+機械工 < kikaikou\ ;
+欲心 < yokushin\ ;
+再封鎖 < saifuusa\ ;
+剔抉 < tekketsu\ ;
+防波堤 < bouhatei\ ;
+欲得 < yokutoku\ ;
+運転手 < untenshu\ ;
+鮮肉 < sen''niku\ ;
+逆様 < sakasama\ ;
+進撃 < shingeki\ ;
+争覇戦 < souhasen\ ;
+黒文字 < kuromoji\ ;
+無駄足 < mudaashi\ ;
+動力 < douryoku\ ;
+勅命 < chokumei\ ;
+着物地 < kimonoji\ ;
+外気圏 < gaikiken\ ;
+凛烈 < rinretsu\ ;
+開会日 < kaikaibi\ ;
+由来書 < yuraisho\ ;
+武士 < mononofu\ ;
+鵝口瘡 < gakousou\ ;
+殺人 < satsujin\ ;
+僭越 < sen''etsu\ ;
+連日 < renjitsu\ ;
+正夢 < masayume\ ;
+乾燥果 < kansouka\ ;
+刷数 < satsusuu\ ;
+軋轢 < atsureki\ ;
+安全性 < anzensei\ ;
+儲蓄 < chochiku\ ;
+富士五湖 < fujigoko\ ;
+円窓 < marumado\ ;
+若者 < wakamono\ ;
+車轄 < shakatsu\ ;
+恐々 < kowagowa\ ;
+通暁 < tsuugyou\ ;
+前払 < maebarai\ ;
+百聞 < hyakubun\ ;
+是是非非 < zezehihi\ ;
+発育 < hatsuiku\ ;
+逐条 < chikujou\ ;
+益益 < masumasu\ ;
+横縞 < yokojima\ ;
+達弁 < tatsuben\ ;
+栄養士 < eiyoushi\ ;
+台布巾 < daibukin\ ;
+巣窟 < soukutsu\ ;
+川筋 < kawasuji\ ;
+構成員 < kouseiin\ ;
+免職 < menshoku\ ;
+模範生 < mohansei\ ;
+駆動輪 < kudourin\ ;
+勇力 < yuuryoku\ ;
+川端 < kawabata\ ;
+勁卒 < keisotsu\ ;
+東洋史 < toyofumi\ ;
+内祝 < uchiiwai\ ;
+草物 < kusamono\ ;
+岳麓 < gakuroku\ ;
+分極 < bunkyoku\ ;
+槍術 < soujutsu\ ;
+連接 < rensetsu\ ;
+単精度 < tanseido\ ;
+火木土 < kamokudo\ ;
+代議制 < daigisei\ ;
+未定稿 < miteikou\ ;
+入籍 < nyuuseki\ ;
+世話物 < sewamono\ ;
+副審 < fukushin\ ;
+知力 < chiryoku\ ;
+割安 < wariyasu\ ;
+処決 < shoketsu\ ;
+年末 < nenmatsu\ ;
+幾日 < ikunichi\ ;
+年月 < nengetsu\ ;
+切株 < kirikabu\ ;
+効力 < kouryoku\ ;
+観戦記 < kansenki\ ;
+天瓜粉 < tenkafun\ ;
+骸骨 < gaikotsu\ ;
+形成期 < keiseiki\ ;
+放映権 < houeiken\ ;
+式台 < shikidai\ ;
+監視所 < kanshijo\ ;
+骨鱗 < kotsurin\ ;
+御本尊 < gohonzon\ ;
+単純化 < tanjunka\ ;
+個人名 < kojinmei\ ;
+検眼医 < kengan''i\ ;
+再発 < saihatsu\ ;
+死力 < shiryoku\ ;
+未踏峰 < mitouhou\ ;
+労力 < rouryoku\ ;
+横筋 < yokosuji\ ;
+断断固 < dandanko\ ;
+巌窟 < gankutsu\ ;
+冬物 < fuyumono\ ;
+逆数 < gyakusuu\ ;
+兎網 < usagiami\ ;
+暖房器 < danbouki\ ;
+白糸 < shiraito\ ;
+死別 < shibetsu\ ;
+切札 < kirifuda\ ;
+斡旋者 < assensha\ ;
+切望 < setsubou\ ;
+平日 < heijitsu\ ;
+左目 < hidarime\ ;
+軽蔑 < keibetsu\ ;
+仏生会 < busshoue\ ;
+剣客 < kenkyaku\ ;
+内発 < naihatsu\ ;
+規格化 < kikakuka\ ;
+司令部 < shireibu\ ;
+意匠権 < ishouken\ ;
+芋虫 < imomushi\ ;
+椋鳥 < mukudori\ ;
+平政 < hiramasa\ ;
+尊敬語 < sonkeigo\ ;
+骨髄 < kotsuzui\ ;
+形態素 < keitaiso\ ;
+目測 < mokusoku\ ;
+元締 < motojime\ ;
+我利我利 < garigari\ ;
+石亀 < ishigame\ ;
+先細 < sakiboso\ ;
+勅任 < chokunin\ ;
+矛先 < hokosaki\ ;
+美少女 < bishoujo\ ;
+度度 < tabitabi\ ;
+円運動 < en''undou\ ;
+勅令 < chokurei\ ;
+先約 < sen''yaku\ ;
+象牙色 < zougeiro\ ;
+萩原 < hagiwara\ ;
+入神 < nyuushin\ ;
+歯列 < shiretsu\ ;
+切断 < setsudan\ ;
+廃嫡 < haichaku\ ;
+歪力 < wairyoku\ ;
+式典 < shikiten\ ;
+許可書 < kyokasho\ ;
+追撃 < tsuigeki\ ;
+商議員 < shougiin\ ;
+御一新 < goisshin\ ;
+芋蔓 < imodzuru\ ;
+愉快犯 < yukaihan\ ;
+巻物 < makimono\ ;
+指示板 < shijiban\ ;
+相殺 < sousatsu\ ;
+冗物 < joubutsu\ ;
+鉄工所 < tekkoujo\ ;
+前屈 < zenkutsu\ ;
+刳形 < kurikata\ ;
+経営難 < keieinan\ ;
+正割 < seikatsu\ ;
+躍進 < yakushin\ ;
+弁別 < benbetsu\ ;
+陰陽師 < on''youji\ ;
+換気扇 < kankisen\ ;
+非合法 < higouhou\ ;
+飛行艇 < hikoutei\ ;
+着手 < chakushu\ ;
+飛行船 < hikousen\ ;
+経営陣 < keieijin\ ;
+御来光 < goraikou\ ;
+不断草 < fudansou\ ;
+茶漬 < chadzuke\ ;
+留鳥 < ryuuchou\ ;
+栄養剤 < eiyouzai\ ;
+船足 < funaashi\ ;
+連鎖店 < rensaten\ ;
+兵略 < heiryaku\ ;
+白票 < hakuhyou\ ;
+兵法家 < heihouka\ ;
+頻度数 < hindosuu\ ;
+資本家 < shihonka\ ;
+偏食 < henshoku\ ;
+最右翼 < saiuyoku\ ;
+栄養分 < eiyoubun\ ;
+歌合 < utaawase\ ;
+躑躅 < tsutsuji\ ;
+歌口 < utaguchi\ ;
+鰹木 < katsuogi\ ;
+迫撃 < hakugeki\ ;
+可処分 < kashobun\ ;
+汲々 < kyuukyuu\ ;
+蒙古斑 < moukohan\ ;
+初恋 < hatsukoi\ ;
+先程 < sakihodo\ ;
+船賃 < funachin\ ;
+茶渋 < chashibu\ ;
+透徹 < toutetsu\ ;
+病身 < byoushin\ ;
+寒稽古 < kangeiko\ ;
+第三紀 < daisanki\ ;
+概説 < gaisetsu\ ;
+床店 < tokomise\ ;
+砂風呂 < sunaburo\ ;
+運転士 < untenshi\ ;
+第一線 < daiissen\ ;
+良薬 < ryouyaku\ ;
+欠場 < ketsujou\ ;
+切戻 < setsurai\ ;
+標石 < hyouseki\ ;
+偽金 < nisegane\ ;
+目標 < mokuhyou\ ;
+銀行家 < ginkouka\ ;
+力倆 < rikiryou\ ;
+選別 < senbetsu\ ;
+刺客 < shikyaku\ ;
+三仙叉 < sansensa\ ;
+逐年 < chikunen\ ;
+鮫皮 < samegawa\ ;
+広広 < hirobiro\ ;
+再工事 < saikouji\ ;
+横町 < yokochou\ ;
+裏日本 < uranihon\ ;
+被傭者 < hiyousha\ ;
+近日 < kinjitsu\ ;
+広幅 < hirohaba\ ;
+力作 < rikisaku\ ;
+検閲 < ken''etsu\ ;
+瞬刻 < shunkoku\ ;
+発着 < hatchaku\ ;
+極論 < kyokuron\ ;
+着弾 < chakudan\ ;
+軽水炉 < keisuiro\ ;
+典物 < tenbutsu\ ;
+自由港 < jiyuukou\ ;
+御曹子 < onzoushi\ ;
+防水扉 < bousuihi\ ;
+白皙 < hakuseki\ ;
+居心地 < igokochi\ ;
+地下道 < chikadou\ ;
+白白 < hakuhaku\ ;
+切情 < setsujou\ ;
+刑律 < keiritsu\ ;
+標的 < hyouteki\ ;
+出所 < dedokoro\ ;
+無駄花 < mudabana\ ;
+追徴 < tsuichou\ ;
+着底 < chakutei\ ;
+党略 < touryaku\ ;
+無定見 < muteiken\ ;
+床山 < tokoyama\ ;
+痛覚 < tsuukaku\ ;
+年式 < nenshiki\ ;
+発癌 < hatsugan\ ;
+着帽 < chakubou\ ;
+内濠 < uchibori\ ;
+先着 < senchaku\ ;
+着帯 < chakutai\ ;
+常春 < tokoharu\ ;
+美容師 < biyoushi\ ;
+発火点 < hakkaten\ ;
+荷捌 < nisabaki\ ;
+平庭 < hiraniwa\ ;
+山鳩 < yamabato\ ;
+山鳥 < yamadori\ ;
+通学 < tsuugaku\ ;
+畜類 < chikurui\ ;
+平底 < hirazoko\ ;
+入獄 < nyuugoku\ ;
+公爵 < koushaku\ ;
+色艶 < irotsuya\ ;
+平幕 < hiramaku\ ;
+現代化 < gendaika\ ;
+先発 < senpatsu\ ;
+福井県 < fukuiken\ ;
+白瓜 < shirouri\ ;
+不敬虔 < fukeiken\ ;
+近接 < kinsetsu\ ;
+丁子油 < choujiyu\ ;
+転職 < tenshoku\ ;
+透察 < tousatsu\ ;
+劇作 < gekisaku\ ;
+財務官 < zaimukan\ ;
+料理屋 < ryouriya\ ;
+軸索 < jikusaku\ ;
+席料 < sekiryou\ ;
+欠号 < ketsugou\ ;
+停車場 < teishaba\ ;
+感光度 < kankoudo\ ;
+無能者 < munousha\ ;
+百獣 < hyakujuu\ ;
+僚船 < tomobune\ ;
+真心 < magokoro\ ;
+劇中 < gekichuu\ ;
+蹄鉄 < teitetsu\ ;
+交叉点 < kousaten\ ;
+氷河期 < hyougaki\ ;
+退屈 < taikutsu\ ;
+低電位 < teiden''i\ ;
+出世魚 < shusseuo\ ;
+運転台 < untendai\ ;
+前哲 < zentetsu\ ;
+出廬 < shutsuro\ ;
+適作 < tekisaku\ ;
+野心家 < yashinka\ ;
+内法 < uchinori\ ;
+出度 < shutsudo\ ;
+劃一 < kakuitsu\ ;
+自由権 < jiyuuken\ ;
+軸箱 < jikubako\ ;
+防水布 < bousuifu\ ;
+出席 < shusseki\ ;
+再臨派 < sairinha\ ;
+別売 < betsubai\ ;
+帝日 < teijitsu\ ;
+構築 < kouchiku\ ;
+目撃 < mokugeki\ ;
+軍職 < gunshoku\ ;
+名場面 < meibamen\ ;
+筆記体 < hikkitai\ ;
+弦楽器 < gengakki\ ;
+滞在費 < taizaihi\ ;
+規定値 < kiteichi\ ;
+一体感 < ittaikan\ ;
+冬服 < fuyufuku\ ;
+茶杓 < chashaku\ ;
+鮮烈 < senretsu\ ;
+赤砂糖 < akazatou\ ;
+牛小屋 < ushigoya\ ;
+廉価品 < renkahin\ ;
+民需品 < minjuhin\ ;
+真人間 < maningen\ ;
+写植 < shashoku\ ;
+金盞花 < kinsenka\ ;
+別堂 < betsudou\ ;
+分宿 < bunshuku\ ;
+全滅 < zenmetsu\ ;
+山風 < yamakaze\ ;
+草摺 < kusazuri\ ;
+江戸時代 < edojidai\ ;
+先物 < sakimono\ ;
+取沙汰 < torizata\ ;
+銀行員 < ginkouin\ ;
+層位学 < souigaku\ ;
+百点 < hyakuten\ ;
+逆夢 < sakayume\ ;
+透視図 < toushizu\ ;
+名義人 < meiginin\ ;
+給油所 < kyuuyujo\ ;
+光熱 < kounetsu\ ;
+自走砲 < jisouhou\ ;
+前列 < zenretsu\ ;
+寄稿者 < kikousha\ ;
+抒情詩 < jojoushi\ ;
+逆境 < gyakkyou\ ;
+円刃刀 < enjintou\ ;
+癇癪 < kanshaku\ ;
+軍縮 < gunshuku\ ;
+鮭漁 < sakeryou\ ;
+達人 < tatsujin\ ;
+色紙 < shikishi\ ;
+白濁 < hakudaku\ ;
+儁秀 < shunshuu\ ;
+幅広 < habahiro\ ;
+山霧 < yamagiri\ ;
+三七日 < minanoka\ ;
+逸出 < isshutsu\ ;
+入浴 < nyuuyoku\ ;
+欠便 < ketsubin\ ;
+軽石 < karuishi\ ;
+切妻 < kirizuma\ ;
+巻末 < kanmatsu\ ;
+寺小屋 < terakoya\ ;
+距骨 < kyokotsu\ ;
+田雲雀 < tahibari\ ;
+温湿布 < onshippu\ ;
+生首 < namakubi\ ;
+入洛 < nyuuraku\ ;
+直情 < chokujou\ ;
+凶宅 < kyoutaku\ ;
+山際 < yamagiwa\ ;
+庭先 < niwasaki\ ;
+御面相 < gomensou\ ;
+山陰 < yamakage\ ;
+剃刀 < kamisori\ ;
+横波 < yokonami\ ;
+着地 < chakuchi\ ;
+上景気 < joukeiki\ ;
+育英会 < ikueikai\ ;
+乗馬隊 < joubatai\ ;
+地下街 < chikagai\ ;
+盗掘 < toukutsu\ ;
+省庁 < shouchou\ ;
+留金 < tomegane\ ;
+橋梁 < kyouryou\ ;
+町長 < chouchou\ ;
+属領 < zokuryou\ ;
+通告 < tsuukoku\ ;
+前借 < zenshaku\ ;
+青懸巣 < aokakesu\ ;
+欠乏 < ketsubou\ ;
+極致 < kyokuchi\ ;
+不敬罪 < fukeizai\ ;
+原子価 < genshika\ ;
+別命 < betsumei\ ;
+良策 < ryousaku\ ;
+甘食 < amashoku\ ;
+内枠 < uchiwaku\ ;
+橋杭 < hashigui\ ;
+総武線 < soubusen\ ;
+不縹緻 < bukiryou\ ;
+別号 < betsugou\ ;
+借銭 < shakusen\ ;
+眉尻 < mayujiri\ ;
+真如 < shin''nyo\ ;
+解像度 < kaizoudo\ ;
+若水 < wakamizu\ ;
+控訴状 < kousojou\ ;
+通力 < tsuuriki\ ;
+店先 < misesaki\ ;
+畔道 < azemichi\ ;
+若殿 < wakatono\ ;
+再検査 < saikensa\ ;
+通則 < tsuusoku\ ;
+初口 < shokuchi\ ;
+樽柿 < tarugaki\ ;
+臭覚 < shuukaku\ ;
+複座機 < fukuzaki\ ;
+批評家 < hihyouka\ ;
+御中元 < ochuugen\ ;
+人真似 < hitomane\ ;
+横様 < yokozama\ ;
+横槍 < yokoyari\ ;
+冷徹 < reitetsu\ ;
+的地位 < tekichii\ ;
+督促 < tokusoku\ ;
+換気口 < kankikou\ ;
+調査員 < chousain\ ;
+世話役 < sewayaku\ ;
+判別 < hanbetsu\ ;
+常客 < joukyaku\ ;
+帳尻 < choujiri\ ;
+悪知恵 < warudjie\ ;
+苗水 < nawamizu\ ;
+短期間 < tankikan\ ;
+御主人 < goshujin\ ;
+山鉾 < yamaboko\ ;
+髄虫 < zuimushi\ ;
+皆様 < minasama\ ;
+別册 < bessatsu\ ;
+同時性 < doujisei\ ;
+帷子 < katabira\ ;
+草市 < kusaichi\ ;
+黄変米 < ouhenmai\ ;
+余所者 < yosomono\ ;
+白檀 < byakudan\ ;
+若様 < wakasama\ ;
+直射 < chokusha\ ;
+山里 < yamazato\ ;
+退却 < taikyaku\ ;
+滋養分 < jiyoubun\ ;
+槍玉 < yaridama\ ;
+棚牡丹 < tanabota\ ;
+甲鉄 < koutetsu\ ;
+銘酒屋 < meishuya\ ;
+塩類泉 < enruisen\ ;
+局面 < kyokumen\ ;
+保菌者 < hokinsha\ ;
+通信 < tsuushin\ ;
+極線 < kyokusen\ ;
+防砂林 < bousarin\ ;
+通俗 < tsuuzoku\ ;
+船縁 < funaberi\ ;
+皓月 < kougetsu\ ;
+色相 < shikisou\ ;
+色盲 < shikimou\ ;
+眉墨 < mayuzumi\ ;
+内接 < naisetsu\ ;
+閉世界 < heisekai\ ;
+巴戦 < tomoesen\ ;
+全曲 < zenkyoku\ ;
+軸物 < jikumono\ ;
+業績 < gyouseki\ ;
+地下茎 < chikakei\ ;
+多辺形 < tahenkei\ ;
+入木 < nyuuboku\ ;
+極細 < gokuboso\ ;
+不明朗 < fumeirou\ ;
+送別 < soubetsu\ ;
+足首 < ashikubi\ ;
+兼摂 < kensetsu\ ;
+別便 < betsubin\ ;
+年別 < nenbetsu\ ;
+泥火山 < deikazan\ ;
+生録 < namaroku\ ;
+京都府 < kyoutofu\ ;
+白梅 < shiraume\ ;
+臆説 < okusetsu\ ;
+令夫人 < reifujin\ ;
+先様 < sakisama\ ;
+全日 < zenjitsu\ ;
+布引 < nunobiki\ ;
+罷免権 < himenken\ ;
+丁字形 < teijikei\ ;
+監察 < kansatsu\ ;
+分力 < bunryoku\ ;
+候補者 < kouhosha\ ;
+傍耳 < katamimi\ ;
+略言 < ryakugen\ ;
+別人 < betsunin\ ;
+小魚 < kozakana\ ;
+左手 < hidarite\ ;
+色町 < iromachi\ ;
+色男 < irootoko\ ;
+楽章 < gakushou\ ;
+分別 < bunbetsu\ ;
+絵画館 < kaigakan\ ;
+鬱病 < utsubyou\ ;
+国営化 < kokueika\ ;
+逆修 < gyakushu\ ;
+物故者 < bukkosha\ ;
+前相撲 < maezumou\ ;
+研米機 < kenmaiki\ ;
+直売 < chokubai\ ;
+借貸 < shakutai\ ;
+暗黒期 < ankokuki\ ;
+借財 < shakuzai\ ;
+現時点 < genjiten\ ;
+隣保館 < rinpokan\ ;
+冬山 < fuyuyama\ ;
+分冊 < bunsatsu\ ;
+焼夷弾 < shouidan\ ;
+丁字帯 < teijitai\ ;
+軍略 < gunryaku\ ;
+加配米 < kahaimai\ ;
+用達 < youtatsu\ ;
+荒夷 < araebisu\ ;
+極端 < kyokutan\ ;
+真南 < maminami\ ;
+歯科医院 < shikaiin\ ;
+高精度 < kouseido\ ;
+略装 < ryakusou\ ;
+陰関数 < inkansuu\ ;
+水泳帽 < suieibou\ ;
+列伝 < retsuden\ ;
+貸費生 < taihisei\ ;
+船端 < funabata\ ;
+鯨座 < kujiraza\ ;
+着任 < chakunin\ ;
+増税案 < zouzeian\ ;
+辻堂 < tsujidou\ ;
+俺達 < oretachi\ ;
+餓鬼共 < gakidomo\ ;
+真勇 < shin''yuu\ ;
+傘紙 < kasagami\ ;
+許可制 < kyokasei\ ;
+白昼 < hakuchuu\ ;
+痼疾 < koshitsu\ ;
+偽者 < nisemono\ ;
+克服 < kokufuku\ ;
+女性像 < joseizou\ ;
+画質 < gashitsu\ ;
+跳躍 < chouyaku\ ;
+火星年 < kaseinen\ ;
+発明 < hatsumei\ ;
+亜硫酸 < aryuusan\ ;
+逆上 < gyakujou\ ;
+先月 < sengetsu\ ;
+平仄 < hyousoku\ ;
+円形 < marugata\ ;
+再軍備 < saigunbi\ ;
+板屋貝 < itayagai\ ;
+少額 < shougaku\ ;
+斡旋案 < assen''an\ ;
+花崗岩 < kakougan\ ;
+返却 < henkyaku\ ;
+凶兆 < kyouchou\ ;
+楓糖 < kaedetou\ ;
+幕内 < makuuchi\ ;
+未完成 < mikansei\ ;
+巻尺 < makijaku\ ;
+先日 < senjitsu\ ;
+無用心 < buyoujin\ ;
+成文化 < seibunka\ ;
+借覧 < shakuran\ ;
+粗悪品 < soakuhin\ ;
+控訴権 < kousoken\ ;
+駒鳥 < komadori\ ;
+調理場 < chouriba\ ;
+地下線 < chikasen\ ;
+幕僚 < bakuryou\ ;
+写実 < shajitsu\ ;
+亜硝酸 < ashousan\ ;
+元日 < ganjitsu\ ;
+白描 < hakubyou\ ;
+尻重 < shiriomo\ ;
+脛骨 < keikotsu\ ;
+体系化 < taikeika\ ;
+元方 < motokata\ ;
+発揚 < hatsuyou\ ;
+経営者 < keieisha\ ;
+茶壺 < chatsubo\ ;
+修身 < shuushin\ ;
+発掘 < hakkutsu\ ;
+川底 < kawazoko\ ;
+川床 < kawadoko\ ;
+凶作 < kyousaku\ ;
+概略 < gairyaku\ ;
+被写体 < hishatai\ ;
+川幅 < kawahaba\ ;
+傷病 < shoubyou\ ;
+椎茸 < shiitake\ ;
+州州 < shuushuu\ ;
+停職 < teishoku\ ;
+侑食 < yuushoku\ ;
+分娩期 < bunbenki\ ;
+後仕舞 < atojimai\ ;
+内局 < naikyoku\ ;
+男親 < otokooya\ ;
+裏面史 < rimenshi\ ;
+花柄 < hanagara\ ;
+見世物 < misemono\ ;
+山襞 < yamahida\ ;
+辻占 < tsujiura\ ;
+様様 < samazama\ ;
+真中 < man''naka\ ;
+内密 < naimitsu\ ;
+語彙力 < goiryoku\ ;
+花束 < hanataba\ ;
+内実 < naijitsu\ ;
+共布 < tomonuno\ ;
+山裾 < yamasuso\ ;
+高空 < takazora\ ;
+花札 < hanafuda\ ;
+魔法瓶 < mahoubin\ ;
+百態 < hyakutai\ ;
+分娩時 < bunbenji\ ;
+上下動 < jougedou\ ;
+平面図 < heimenzu\ ;
+耐火性 < taikasei\ ;
+痔疾 < jishitsu\ ;
+再定義 < saiteigi\ ;
+電気工 < denkikou\ ;
+反古籠 < hogukago\ ;
+八幡 < hachiman\ ;
+御降誕 < gokoutan\ ;
+巡察 < junsatsu\ ;
+軽業 < karuwaza\ ;
+川尻 < kawajiri\ ;
+明文化 < meibunka\ ;
+腹具合 < haraguai\ ;
+直前 < chokuzen\ ;
+選挙日 < senkyobi\ ;
+棒術 < boujutsu\ ;
+花時 < hanadoki\ ;
+入幕 < nyuumaku\ ;
+発情 < hatsujou\ ;
+俳謔 < haigyaku\ ;
+岩脈 < ganmyaku\ ;
+帳元 < choumoto\ ;
+病的 < byouteki\ ;
+横幅 < yokohaba\ ;
+輸精管 < yuseikan\ ;
+病癖 < byouheki\ ;
+小売店 < kouriten\ ;
+宇宙論 < uchuuron\ ;
+胸高 < munadaka\ ;
+鑑定家 < kanteika\ ;
+促進 < sokushin\ ;
+標徴 < hyouchou\ ;
+固溶体 < koyoutai\ ;
+案内所 < an''naijo\ ;
+病症 < byoushou\ ;
+自信家 < jishinka\ ;
+冷却 < reikyaku\ ;
+亜鉛末 < aenmatsu\ ;
+膏血 < kouketsu\ ;
+傷物 < kizumono\ ;
+導電度 < doudendo\ ;
+県知事 < kenchiji\ ;
+百弊 < hyakuhei\ ;
+凝乳 < gyounyuu\ ;
+畜舎 < chikusha\ ;
+意気阻喪 < ikisosou\ ;
+共学 < kyougaku\ ;
+宇宙観 < uchuukan\ ;
+電動機 < dendouki\ ;
+少量 < shouryou\ ;
+一丁目 < itchoume\ ;
+伊達衆 < dateshuu\ ;
+腋窩腺 < ekikasen\ ;
+不文法 < fubunpou\ ;
+百年 < hyakunen\ ;
+足軽 < ashigaru\ ;
+一貫性 < ikkansei\ ;
+口内炎 < kounaien\ ;
+健筆 < kenpitsu\ ;
+過不足 < kafusoku\ ;
+寒餅 < kanmochi\ ;
+寮長 < ryouchou\ ;
+愛用者 < aiyousha\ ;
+俊足 < shunsoku\ ;
+公民科 < kouminka\ ;
+入寂 < nyuujaku\ ;
+出格子 < degoushi\ ;
+信認 < shin''nin\ ;
+今世紀 < konseiki\ ;
+入学 < nyuugaku\ ;
+業物 < wazamono\ ;
+未婚者 < mikonsha\ ;
+赤靴 < akagutsu\ ;
+候補生 < kouhosei\ ;
+州境 < shuukyou\ ;
+東南亜 < tounan''a\ ;
+信託 < shintaku\ ;
+供養塔 < kuyoutou\ ;
+健胃剤 < ken''izai\ ;
+宿駅 < shukueki\ ;
+極点 < kyokuten\ ;
+俗調 < zokuchou\ ;
+舌癌 < zetsugan\ ;
+直中 < tadanaka\ ;
+花房 < hanafusa\ ;
+修験者 < shugenja\ ;
+疫病 < yakubyou\ ;
+若宮 < wakamiya\ ;
+元帳 < motochou\ ;
+寛闊 < kankatsu\ ;
+寸鉄 < suntetsu\ ;
+違犯行為 < ihankoui\ ;
+柔道着 < juudougi\ ;
+百害 < hyakugai\ ;
+微系数 < bikeisuu\ ;
+仕置場 < shiokiba\ ;
+偶発 < guuhatsu\ ;
+平方和 < heihouwa\ ;
+小身 < shoushin\ ;
+宿願 < shukugan\ ;
+伴奏部 < bansoubu\ ;
+生薬 < shouyaku\ ;
+宿題 < shukudai\ ;
+古写本 < koshahon\ ;
+瓶詰 < bindzume\ ;
+偏窟 < henkutsu\ ;
+先山 < sakiyama\ ;
+男色 < nanshoku\ ;
+脱輪 < datsurin\ ;
+出来物 < dekimono\ ;
+倹約 < ken''yaku\ ;
+草丈 < kusatake\ ;
+土饅頭 < domanjuu\ ;
+世話人 < sewabito\ ;
+入塾 < nyuujuku\ ;
+美顔水 < bigansui\ ;
+自由刑 < jiyuukei\ ;
+塩風呂 < shioburo\ ;
+充電器 < juudenki\ ;
+被験者 < hikensha\ ;
+小熊座 < kogumaza\ ;
+優形 < yasagata\ ;
+手信語 < teshingo\ ;
+先客 < senkyaku\ ;
+赤毛布 < akagetto\ ;
+俗衆 < zokushuu\ ;
+山膚 < yamahada\ ;
+榕樹 < gajumaru\ ;
+先安 < sakiyasu\ ;
+馬面 < umadzura\ ;
+水彩画 < suisaiga\ ;
+一人寝 < hitorine\ ;
+青味泥 < aomidoro\ ;
+百姓 < hyakusei\ ;
+自由党 < jiyuutou\ ;
+充実 < juujitsu\ ;
+芙蓉峰 < fuyouhou\ ;
+落花生 < rakkasei\ ;
+花形 < hanagata\ ;
+山間部 < sankanbu\ ;
+盗人 < nusubito\ ;
+同時代 < doujidai\ ;
+白妙 < shirotae\ ;
+山脈 < yamanami\ ;
+無宗派 < mushuuha\ ;
+花弁 < hanabira\ ;
+入国 < nyuukoku\ ;
+極洋 < kyokuyou\ ;
+軍政府 < gunseifu\ ;
+白壁 < hakuheki\ ;
+白墨 < hakuboku\ ;
+発売 < hatsubai\ ;
+内力 < nairyoku\ ;
+赤銅 < shakudou\ ;
+皮剥 < kawahagi\ ;
+婦人会 < fujinkai\ ;
+原繊維 < gensen''i\ ;
+巨刹 < kyosatsu\ ;
+骨盤 < kotsuban\ ;
+鯉口 < koiguchi\ ;
+生色 < seishoku\ ;
+継電気 < keidenki\ ;
+不文明 < fubunmei\ ;
+平土間 < hiradoma\ ;
+次男坊 < jinanbou\ ;
+先太 < sakibuto\ ;
+超越 < chouetsu\ ;
+膀胱炎 < boukouen\ ;
+有効打 < yuukouda\ ;
+雨量計 < uryoukei\ ;
+兵卒 < heisotsu\ ;
+宇宙船 < uchuusen\ ;
+減衰器 < gensuiki\ ;
+様式 < youshiki\ ;
+伴食 < banshoku\ ;
+多芸性 < tageisei\ ;
+兵力 < heiryoku\ ;
+赤切符 < akagippu\ ;
+楽楽 < rakuraku\ ;
+高潮 < takashio\ ;
+内側 < uchigawa\ ;
+脅迫 < kyouhaku\ ;
+腹膜 < fukumaku\ ;
+火星人 < kaseijin\ ;
+内倉 < uchigura\ ;
+日航機 < nikkouki\ ;
+今世界 < konsekai\ ;
+花守 < hanamori\ ;
+胸郭 < kyoukaku\ ;
+軍需品 < gunjuhin\ ;
+病毒 < byoudoku\ ;
+極楽 < gokuraku\ ;
+水蒸気 < suijouki\ ;
+極極 < gokugoku\ ;
+単漢字 < tankanji\ ;
+十文字 < juumonji\ ;
+守備兵 < shubihei\ ;
+病歴 < byoureki\ ;
+暗号文 < angoubun\ ;
+花嫁 < hanayome\ ;
+全力 < zenryoku\ ;
+共共 < tomodomo\ ;
+高等科 < koutouka\ ;
+花婿 < hanamuko\ ;
+贋首 < nisekubi\ ;
+若君 < wakagimi\ ;
+局舎 < kyokusha\ ;
+州俗 < shuuzoku\ ;
+添乗員 < tenjouin\ ;
+植生 < shokusei\ ;
+権力 < kenryoku\ ;
+優女 < yasaon''a\ ;
+宿酔 < shukusui\ ;
+赫赫 < kakukaku\ ;
+案内図 < an''naizu\ ;
+合言葉 < aikotoba\ ;
+密造 < mitsuzou\ ;
+楽曲 < gakkyoku\ ;
+高波 < takanami\ ;
+会食 < kaishoku\ ;
+定期券 < teikiken\ ;
+倒立 < touritsu\ ;
+色感 < shikikan\ ;
+左上 < hidariue\ ;
+予算案 < yosan''an\ ;
+多様性 < tayousei\ ;
+先哲 < sentetsu\ ;
+自賠法 < jibaihou\ ;
+極東 < kyokutou\ ;
+出不精 < debushou\ ;
+安山岩 < anzangan\ ;
+老大家 < routaika\ ;
+氏素性 < ujisujou\ ;
+上天気 < joutenki\ ;
+第一声 < daiissei\ ;
+導火線 < doukasen\ ;
+魚屋 < sakanaya\ ;
+依頼心 < iraishin\ ;
+跳箱 < tobibako\ ;
+軟式 < nanshiki\ ;
+負債者 < fusaisha\ ;
+高殿 < takadono\ ;
+後頭部 < koutoubu\ ;
+偏片 < katahara\ ;
+川上 < kawakami\ ;
+皮膚病 < hifubyou\ ;
+山程 < yamahodo\ ;
+発動 < hatsudou\ ;
+老夫婦 < roufuufu\ ;
+先口 < senkuchi\ ;
+地下水 < chikasui\ ;
+肋骨 < rokkotsu\ ;
+電気代 < denkidai\ ;
+定義域 < teigiiki\ ;
+畜産 < chikusan\ ;
+色彩 < shikisai\ ;
+良心 < ryoushin\ ;
+生米 < namagome\ ;
+用筆 < youhitsu\ ;
+放火罪 < houkazai\ ;
+雨合羽 < amagappa\ ;
+受刑者 < jukeisha\ ;
+臓物 < zoumotsu\ ;
+非公開 < hikoukai\ ;
+遙々 < harubaru\ ;
+骨灰 < kotsubai\ ;
+普請場 < fushinba\ ;
+多島海 < tatoukai\ ;
+船旅 < funatabi\ ;
+船方 < funakata\ ;
+労働歌 < roudouka\ ;
+寄港地 < kikouchi\ ;
+花園 < hanazono\ ;
+定期便 < teikibin\ ;
+軍律 < gunritsu\ ;
+軍役 < gun''yaku\ ;
+未来形 < miraikei\ ;
+百億 < hyakuoku\ ;
+屑籠 < kuzukago\ ;
+痛撃 < tsuugeki\ ;
+全乳 < zen''nyuu\ ;
+格調 < kakuchou\ ;
+輸出 < yushutsu\ ;
+飛行士 < hikoushi\ ;
+概括 < gaikatsu\ ;
+膠着 < kouchaku\ ;
+妊産婦 < ninsanpu\ ;
+短時間 < tanjikan\ ;
+併設 < heisetsu\ ;
+百倍 < hyakubai\ ;
+偏差値 < hensachi\ ;
+下降線 < kakousen\ ;
+洋菓子 < yougashi\ ;
+断裁機 < dansaiki\ ;
+車座 < kurumaza\ ;
+先入 < sen''nyuu\ ;
+飛行場 < hikoujou\ ;
+借用 < shakuyou\ ;
+宿賃 < yadochin\ ;
+畜犬 < chikuken\ ;
+恵比須講 < ebisukou\ ;
+傍杖 < sobadzue\ ;
+元元 < motomoto\ ;
+工具入 < kouguire\ ;
+体温計 < taionkei\ ;
+寝袋 < nebukuro\ ;
+発行日 < hakkoubi\ ;
+芝地 < shibachi\ ;
+拷問具 < goumongu\ ;
+的中 < tekichuu\ ;
+除外例 < jogairei\ ;
+就縛 < shuubaku\ ;
+寿老人 < juroujin\ ;
+密謀 < mitsubou\ ;
+公取委 < koutorii\ ;
+院外団 < ingaidan\ ;
+不変性 < fuhensei\ ;
+密談 < mitsudan\ ;
+多産系 < tasankei\ ;
+発令 < hatsurei\ ;
+小規模 < shoukibo\ ;
+合議制 < gougisei\ ;
+維管束 < ikansoku\ ;
+良将 < ryoushou\ ;
+客車 < kyakusha\ ;
+脱色 < dasshoku\ ;
+高温計 < kouonkei\ ;
+高札 < kousatsu\ ;
+初等科 < shotouka\ ;
+記憶法 < kiokuhou\ ;
+今朝方 < kesagata\ ;
+百万 < hyakuman\ ;
+破砕性 < hasaisei\ ;
+鹿野苑 < rokuyaon\ ;
+仙骨 < senkotsu\ ;
+安酒 < yasuzake\ ;
+僻境 < hekikyou\ ;
+車屋 < kurumaya\ ;
+舞台裏 < butaiura\ ;
+経営権 < keieiken\ ;
+身心 < shinshin\ ;
+痛惜 < tsuuseki\ ;
+不燃性 < funensei\ ;
+偽札 < nisefuda\ ;
+神祇官 < jingikan\ ;
+借物 < karimono\ ;
+赤蛙 < akagaeru\ ;
+被害者 < higaisha\ ;
+付馬 < tsukeuma\ ;
+水酸基 < suisanki\ ;
+天体図 < tentaizu\ ;
+近距離 < kinkyori\ ;
+準社員 < junshain\ ;
+赤虫 < akamushi\ ;
+佗言 < wabigoto\ ;
+人件費 < jinkenhi\ ;
+常得意 < joutokui\ ;
+生皮 < namakawa\ ;
+極性 < kyokusei\ ;
+色女 < iroon''na\ ;
+輪伐 < rinbatsu\ ;
+倍率 < bairitsu\ ;
+皮脂腺 < hishisen\ ;
+無定形 < muteikei\ ;
+可用性 < kayousei\ ;
+人生派 < jinseiha\ ;
+俗称 < zokushou\ ;
+山猿 < yamazaru\ ;
+山猫 < yamaneko\ ;
+伝達 < dentatsu\ ;
+発行所 < hakkoujo\ ;
+摩天楼 < matenrou\ ;
+寵臣 < choushin\ ;
+小間物 < komamono\ ;
+植毛 < shokumou\ ;
+御大層 < gotaisou\ ;
+警備隊 < keibitai\ ;
+割烹着 < kappougi\ ;
+協和音 < kyouwaon\ ;
+受動態 < judoutai\ ;
+総動員 < soudouin\ ;
+肉鍋 < nikunabe\ ;
+男爵 < danshaku\ ;
+花林糖 < karintou\ ;
+人魂 < hitodama\ ;
+腹痛 < fukutsuu\ ;
+船底 < funazoko\ ;
+船床 < funadoko\ ;
+駆落 < kakeochi\ ;
+極希 < gokumare\ ;
+人骨 < jinkotsu\ ;
+小結 < komusubi\ ;
+正社員 < seishain\ ;
+等温線 < touonsen\ ;
+実説 < jissetsu\ ;
+御霊屋 < mitamaya\ ;
+一夕話 < issekiwa\ ;
+小為替 < kogawase\ ;
+第一位 < daiichii\ ;
+履物 < hakimono\ ;
+病徴 < byouchou\ ;
+税関吏 < zeikanri\ ;
+養育費 < youikuhi\ ;
+定説 < teisetsu\ ;
+臨月 < ringetsu\ ;
+流鏑馬 < yabusame\ ;
+病弱 < byoujaku\ ;
+控訴人 < kousonin\ ;
+茶話会 < chawakai\ ;
+喫緊事 < kikkinji\ ;
+吸金剛 < kokongou\ ;
+骨材 < kotsuzai\ ;
+産物 < sanbutsu\ ;
+検札 < kensatsu\ ;
+貪食 < donshoku\ ;
+信用 < shin''you\ ;
+脇腹 < wakibara\ ;
+老練家 < rourenka\ ;
+不調和 < fuchouwa\ ;
+生物 < namamono\ ;
+局番 < kyokuban\ ;
+小策 < shousaku\ ;
+槍先 < yarisaki\ ;
+気管支 < kikanshi\ ;
+痰壺 < tantsubo\ ;
+髪床 < kamidoko\ ;
+水酸化 < suisanka\ ;
+大人気 < daininki\ ;
+寒色 < kanshoku\ ;
+青銅器 < seidouki\ ;
+植栽 < shokusai\ ;
+休足 < kyuusoku\ ;
+船宿 < funayado\ ;
+仏門 < butsumon\ ;
+飛行便 < hikoubin\ ;
+傍役 < wakiyaku\ ;
+肉迫 < nikuhaku\ ;
+可能法 < kanouhou\ ;
+真珠母 < shinjubo\ ;
+核膜 < kakumaku\ ;
+専攻科 < senkouka\ ;
+化膿菌 < kanoukin\ ;
+亡骸 < nakigara\ ;
+臘月 < rougetsu\ ;
+植林 < shokurin\ ;
+非常線 < hijousen\ ;
+精一杯 < seiippai\ ;
+遇不遇 < guufuguu\ ;
+胸膜 < kyoumaku\ ;
+飽食 < houshoku\ ;
+修熟 < shuujuku\ ;
+未耕地 < mikouchi\ ;
+門下生 < monkasei\ ;
+一風呂 < hitofuro\ ;
+宅診 < takushin\ ;
+小禄 < shouroku\ ;
+伝説 < densetsu\ ;
+足癖 < ashikuse\ ;
+脱税 < datsuzei\ ;
+京響 < kyoukyou\ ;
+培養基 < baiyouki\ ;
+転入 < ten''nyuu\ ;
+軍隊化 < guntaika\ ;
+演芸会 < engeikai\ ;
+対立 < tairitsu\ ;
+文人画 < bunjinga\ ;
+現時代 < genjidai\ ;
+腫物 < shumotsu\ ;
+広範囲 < kouhan''i\ ;
+極大 < kyokudai\ ;
+略書 < ryakusho\ ;
+宿舎 < shukusha\ ;
+軍卒 < gunsotsu\ ;
+円屋根 < maruyane\ ;
+峰峰 < minemine\ ;
+培養土 < baiyoudo\ ;
+寒気団 < kankidan\ ;
+容色 < youshoku\ ;
+粗利益 < ararieki\ ;
+介錯 < kaishaku\ ;
+予算外 < yosangai\ ;
+非民主 < himinshu\ ;
+嵌入 < kan''nyuu\ ;
+軒別 < kenbetsu\ ;
+側役 < sobayaku\ ;
+転借 < tenshaku\ ;
+受益者 < juekisha\ ;
+脊索 < sekisaku\ ;
+安定板 < anteiban\ ;
+記念館 < kinenkan\ ;
+一歩一歩 < ippoippo\ ;
+大宇宙 < daiuchuu\ ;
+財閥 < zaibatsu\ ;
+亜急性 < akyuusei\ ;
+木鼠 < kinezumi\ ;
+骨折 < kossetsu\ ;
+脚立 < kyatatsu\ ;
+僻事 < higagoto\ ;
+計算簿 < keisanbo\ ;
+略文 < ryakubun\ ;
+軒先 < nokisaki\ ;
+静止画 < seishiga\ ;
+不整合 < fuseigou\ ;
+二重顎 < nijuuago\ ;
+制御機 < seigyoki\ ;
+根絶 < konzetsu\ ;
+枝道 < edamichi\ ;
+二等分 < nitoubun\ ;
+宿老 < shukurou\ ;
+貸金 < kashikin\ ;
+平炉法 < heirohou\ ;
+高密 < koumitsu\ ;
+五稜堡 < goryouho\ ;
+未来像 < miraizou\ ;
+足温器 < sokuonki\ ;
+二等兵 < nitouhei\ ;
+貴族院 < kizokuin\ ;
+仏道 < butsudou\ ;
+何者 < nanimono\ ;
+良俗 < ryouzoku\ ;
+記号論 < kigouron\ ;
+住職 < juushoku\ ;
+柔術 < juujutsu\ ;
+生水 < namamizu\ ;
+名詞句 < meishiku\ ;
+胸糞 < munekuso\ ;
+客船 < kyakusen\ ;
+老骨 < roukotsu\ ;
+枕辺 < makurabe\ ;
+尤物 < yuubutsu\ ;
+伝馬船 < tenmasen\ ;
+乱髪 < ranpatsu\ ;
+銀河系 < gingakei\ ;
+体罰 < taibatsu\ ;
+人里 < hitozato\ ;
+客膳 < kyakuzen\ ;
+大宮司 < daiguuji\ ;
+肉親 < nikushin\ ;
+流行目 < hayarime\ ;
+遠視眼 < enshigan\ ;
+富籤 < tomikuji\ ;
+卵巣炎 < ransouen\ ;
+偵察 < teisatsu\ ;
+能筆 < nouhitsu\ ;
+乾風 < karakaze\ ;
+髪型 < kamigata\ ;
+未亡人 < miboujin\ ;
+引用符 < in''youfu\ ;
+良久 < ryoukyuu\ ;
+村雨 < murasame\ ;
+柔道家 < juudouka\ ;
+軒並 < nokinami\ ;
+不均衡 < fukinkou\ ;
+軒丈 < nokitake\ ;
+寒竹 < kanchiku\ ;
+月齢 < getsurei\ ;
+対話者 < taiwasha\ ;
+跳梁 < chouryou\ ;
+寒空 < samuzora\ ;
+訟務部 < shoumubu\ ;
+仰角 < gyoukaku\ ;
+御霊前 < goreizen\ ;
+兌換券 < dakanken\ ;
+不摂生 < fusessei\ ;
+楽劇 < gakugeki\ ;
+日本風 < nihonfuu\ ;
+飄飄 < hyouhyou\ ;
+木骨 < mokkotsu\ ;
+候補地 < kouhochi\ ;
+玉髄 < gyokuzui\ ;
+砂防林 < sabourin\ ;
+俗流 < zokuryuu\ ;
+下士官 < kashikan\ ;
+市議会 < shigikai\ ;
+一時期 < ichijiki\ ;
+健実 < kenjitsu\ ;
+自負心 < jifushin\ ;
+豪雪 < gousetsu\ ;
+相合傘 < aiaigasa\ ;
+聴覚 < choukaku\ ;
+謙譲語 < kenjougo\ ;
+珍重 < chinchou\ ;
+扶持米 < fuchimai\ ;
+再起動 < saikidou\ ;
+獣医学 < juuigaku\ ;
+非常用 < hijouyou\ ;
+破廉恥 < harenchi\ ;
+出放題 < dehoudai\ ;
+安定感 < anteikan\ ;
+側壁 < sokuheki\ ;
+検尿 < ken''nyou\ ;
+養老院 < yourouin\ ;
+乱雑 < ranzatsu\ ;
+属望 < shokubou\ ;
+野良猫 < noraneko\ ;
+中黒 < nakaguro\ ;
+未丁年 < miteinen\ ;
+人足 < hitoashi\ ;
+対物 < taibutsu\ ;
+安定性 < anteisei\ ;
+玉顔 < gyokugan\ ;
+颯颯 < sassatsu\ ;
+仏説 < bussetsu\ ;
+島台 < shimadai\ ;
+仇讎 < kyuushuu\ ;
+併発 < heihatsu\ ;
+駐留 < chuuryuu\ ;
+略帽 < ryakubou\ ;
+決算期 < kessanki\ ;
+朝飯 < asameshi\ ;
+自乗根 < jijoukon\ ;
+全荷重 < zenkajuu\ ;
+何程 < nanihodo\ ;
+奥御殿 < okugoten\ ;
+風食 < fuushoku\ ;
+畳屋 < tatamiya\ ;
+製造所 < seizoujo\ ;
+側圧 < sokuatsu\ ;
+贖罪 < shokuzai\ ;
+快男児 < kaidanji\ ;
+肩肘 < katahiji\ ;
+旺文社 < oubunsha\ ;
+染色 < senshoku\ ;
+超音波 < chouonpa\ ;
+守護霊 < shugorei\ ;
+無期延期 < mukienki\ ;
+木曾川 < kisogawa\ ;
+弱音器 < jakuonki\ ;
+村里 < murazato\ ;
+仙術 < senjutsu\ ;
+俗楽 < zokugaku\ ;
+首筋 < kubisuji\ ;
+佇立 < choritsu\ ;
+密着 < mitchaku\ ;
+決算日 < kessanbi\ ;
+腰板 < koshiita\ ;
+股肉 < momoniku\ ;
+脱漏 < datsurou\ ;
+自主権 < jishuken\ ;
+能弁家 < noubenka\ ;
+可能性 < kanousei\ ;
+大旦那 < oodan''na\ ;
+丸髷 < marumage\ ;
+印度教 < indokyou\ ;
+屈曲 < kukkyoku\ ;
+船人 < funabito\ ;
+骨太 < honebuto\ ;
+高卒 < kousotsu\ ;
+無人島 < mujintou\ ;
+就業 < shuugyou\ ;
+食道 < shokudou\ ;
+真似事 < manegoto\ ;
+谷風 < tanikaze\ ;
+謄写器 < toushaki\ ;
+仮葺 < karibuki\ ;
+風雪 < fuusetsu\ ;
+柔肌 < yawahada\ ;
+駐独 < chuudoku\ ;
+帰還者 < kikansha\ ;
+玉門 < gyokumon\ ;
+助産院 < josan''in\ ;
+月食 < gesshoku\ ;
+女店員 < joten''in\ ;
+栗石 < kuriishi\ ;
+小波 < sazanami\ ;
+蛸部屋 < takobeya\ ;
+予算上 < yosanjou\ ;
+定立 < teiritsu\ ;
+丸首 < marukubi\ ;
+中高 < nakadaka\ ;
+定時制 < teijisei\ ;
+官立 < kanritsu\ ;
+能率 < nouritsu\ ;
+正弦波 < seigenha\ ;
+余所事 < yosogoto\ ;
+足業 < ashiwaza\ ;
+木鐸 < bokutaku\ ;
+主食 < shushoku\ ;
+俗曲 < zokkyoku\ ;
+作病 < sakubyou\ ;
+何百 < nanbyaku\ ;
+仁術 < jinjutsu\ ;
+馬鹿者 < bakamono\ ;
+桜湯 < sakurayu\ ;
+検圧 < ken''atsu\ ;
+儀礼兵 < gireihei\ ;
+一齣 < hitokoma\ ;
+足械 < ashikase\ ;
+月面 < getsumen\ ;
+日本酒 < nihonshu\ ;
+尽日 < jinjitsu\ ;
+少欲 < shouyoku\ ;
+画引 < kakubiki\ ;
+早産児 < souzanji\ ;
+留学 < ryuugaku\ ;
+学習 < gakushuu\ ;
+跋文 < batsubun\ ;
+山彦 < yamabiko\ ;
+山形 < yamagata\ ;
+病中 < byouchuu\ ;
+採綿器 < saimenki\ ;
+偶力 < guuryoku\ ;
+英連邦 < eirenpou\ ;
+任職 < ninshoku\ ;
+脱毛 < datsumou\ ;
+早生児 < souseiji\ ;
+木鋏 < kibasami\ ;
+貧血 < hinketsu\ ;
+加盟者 < kameisha\ ;
+降雨量 < kouuryou\ ;
+耳許 < mimimoto\ ;
+傑人 < ketsujin\ ;
+対決 < taiketsu\ ;
+射殺 < shasatsu\ ;
+警備艇 < keibitei\ ;
+出来事 < dekigoto\ ;
+令色 < reishoku\ ;
+価電子 < kadenshi\ ;
+封殺 < fuusatsu\ ;
+古生界 < koseikai\ ;
+小槌 < kodzuchi\ ;
+学績 < gakuseki\ ;
+山川 < yamagawa\ ;
+高低 < takahiku\ ;
+中頃 < nakagoro\ ;
+職能 < shokunou\ ;
+屈折 < kussetsu\ ;
+実直 < jitchoku\ ;
+金魚屋 < kingyoya\ ;
+腰折 < koshiore\ ;
+木天蓼 < matatabi\ ;
+実益 < jitsueki\ ;
+半裸体 < hanratai\ ;
+定着 < teichaku\ ;
+梁木 < ryouboku\ ;
+日本軍 < nihongun\ ;
+日本車 < nihonsha\ ;
+偶偶 < tamatama\ ;
+修羅道 < shuradou\ ;
+足早 < ashibaya\ ;
+商行為 < shoukoui\ ;
+舌代 < zetsudai\ ;
+柱石 < chuuseki\ ;
+山山 < yamayama\ ;
+条里制 < jourisei\ ;
+中隔 < chuukaku\ ;
+局所 < kyokusho\ ;
+染筆 < senpitsu\ ;
+投影法 < toueihou\ ;
+信憑 < shinpyou\ ;
+桟橋 < sanbashi\ ;
+肉細 < nikuboso\ ;
+客用 < kyakuyou\ ;
+中限 < nakagiri\ ;
+有尾類 < yuubirui\ ;
+山寺 < yamadera\ ;
+欧羅巴 < youroppa\ ;
+万骨 < bankotsu\ ;
+世間体 < sekentei\ ;
+伊達巻 < datemaki\ ;
+修復 < shuufuku\ ;
+仏艦 < futsukan\ ;
+実用 < jitsuyou\ ;
+修得 < shuutoku\ ;
+胆略 < tanryaku\ ;
+水利権 < suiriken\ ;
+史学家 < shigakka\ ;
+丸鑿 < marunomi\ ;
+山守 < yamamori\ ;
+足摺 < ashizuri\ ;
+食言 < shokugen\ ;
+納付金 < noufukin\ ;
+蕎麦殻 < sobagara\ ;
+二言 < futakoto\ ;
+体熱 < tainetsu\ ;
+赤鳥赤腹 < akakokko\ ;
+方向舵 < houkouda\ ;
+仮綴 < karitoji\ ;
+夏至線 < geshisen\ ;
+不均等 < fukintou\ ;
+宇宙帽 < uchuubou\ ;
+無頼漢 < buraikan\ ;
+屈従 < kutsujuu\ ;
+実現 < jitsugen\ ;
+濃度計 < noudokei\ ;
+現職 < genshoku\ ;
+豁達 < kattatsu\ ;
+信念 < shin''nen\ ;
+顎骨 < gakkotsu\ ;
+一昨年 < ototoshi\ ;
+未経験 < mikeiken\ ;
+三食 < sanshoku\ ;
+朝寝坊 < asanebou\ ;
+了覚 < ryoukaku\ ;
+群雲 < murakumo\ ;
+月金 < getsukin\ ;
+赤沈 < sekichin\ ;
+下顎 < shitaago\ ;
+山姫 < yamahime\ ;
+脂汗 < aburaase\ ;
+腰弁 < koshiben\ ;
+宝玉 < hougyoku\ ;
+過大視 < kadaishi\ ;
+少敵 < shouteki\ ;
+翡翠色 < hisuiiro\ ;
+驍将 < gyoushou\ ;
+丘陵 < kyuuryou\ ;
+略名 < ryakumei\ ;
+土根性 < dokonjou\ ;
+略号 < ryakugou\ ;
+略史 < ryakushi\ ;
+番卒 < bansotsu\ ;
+総模様 < soumoyou\ ;
+略取 < ryakushu\ ;
+計算機 < keisanki\ ;
+弁当屋 < bentouya\ ;
+代打者 < daidasha\ ;
+実状 < jitsujou\ ;
+借地 < shakuchi\ ;
+併殺 < heisatsu\ ;
+腰帯 < koshiobi\ ;
+上靴 < uwagutsu\ ;
+膜壁 < makuheki\ ;
+風媒花 < fuubaika\ ;
+脱文 < datsubun\ ;
+存立 < sonritsu\ ;
+無試験 < mushiken\ ;
+宝物 < houmotsu\ ;
+醸造酢 < jouzousu\ ;
+俗形 < zokugyou\ ;
+反動派 < handouha\ ;
+経済家 < keizaika\ ;
+淋巴腺 < rinpasen\ ;
+人膚 < hitohada\ ;
+風足 < kazaashi\ ;
+乾裂 < kanretsu\ ;
+桎梏 < shikkoku\ ;
+一頃 < hitokoro\ ;
+自主性 < jishusei\ ;
+翌週 < yokushuu\ ;
+越天楽 < etenraku\ ;
+権利金 < kenrikin\ ;
+対日 < tainichi\ ;
+枠組 < wakugumi\ ;
+慢性化 < manseika\ ;
+翻訳 < hon''yaku\ ;
+人脈 < jinmyaku\ ;
+授乳期 < junyuuki\ ;
+専門語 < senmongo\ ;
+山城 < yamajiro\ ;
+前舞台 < maebutai\ ;
+天爾乎波 < teniwoha\ ;
+脚本 < kyakuhon\ ;
+選科生 < senkasei\ ;
+東芝 < toushiba\ ;
+赤樫 < akagashi\ ;
+脊椎 < sekitsui\ ;
+実際家 < jissaika\ ;
+柴犬 < shibainu\ ;
+修学 < shuugaku\ ;
+俊徳 < shuntoku\ ;
+一昼夜 < itchuuya\ ;
+月輪 < getsurin\ ;
+仲秋 < chuushuu\ ;
+主述 < shujutsu\ ;
+衆議院 < shuugiin\ ;
+人肉 < jin''niku\ ;
+媒酌 < baishaku\ ;
+日本製 < nihonsei\ ;
+例月 < reigetsu\ ;
+生娘 < kimusume\ ;
+印判師 < inbanshi\ ;
+代筆 < daihitsu\ ;
+密殺 < missatsu\ ;
+暴食 < boushoku\ ;
+山国 < yamaguni\ ;
+職種 < shokushu\ ;
+一際 < hitokiwa\ ;
+小火器 < shoukaki\ ;
+無風帯 < mufuutai\ ;
+一隅 < hitosumi\ ;
+就床 < shuushou\ ;
+丈長 < takenaga\ ;
+頭髪 < touhatsu\ ;
+猥雑 < waizatsu\ ;
+足形 < ashigata\ ;
+走査線 < sousasen\ ;
+安物 < yasumono\ ;
+空手家 < karateka\ ;
+天井値 < tenjoune\ ;
+寒極 < kankyoku\ ;
+足弱 < ashiyowa\ ;
+計算木 < keisangi\ ;
+候哉 < sourouya\ ;
+例日 < reijitsu\ ;
+中速 < chuusoku\ ;
+採炭所 < saitanjo\ ;
+弁務官 < benmukan\ ;
+受益権 < juekiken\ ;
+生壁 < namakabe\ ;
+加工紙 < kakoushi\ ;
+肉的 < nikuteki\ ;
+胸椎 < kyoutsui\ ;
+教務課 < kyoumuka\ ;
+桂月 < keigetsu\ ;
+室温 < shitsuon\ ;
+連動機 < rendouki\ ;
+仙窟 < senkutsu\ ;
+寧日 < neijitsu\ ;
+議事録 < gijiroku\ ;
+再来年 < sarainen\ ;
+一昨夜 < issakuya\ ;
+番付 < bandzuke\ ;
+宇宙塵 < uchuujin\ ;
+水道屋 < suidouya\ ;
+赤松 < akamatsu\ ;
+略体 < ryakutai\ ;
+梅干 < umeboshi\ ;
+腹壁 < fukuheki\ ;
+中軸 < chuujiku\ ;
+略伝 < ryakuden\ ;
+腸壁 < chouheki\ ;
+象虫 < zoumushi\ ;
+林立 < rinritsu\ ;
+重軌条 < juukijou\ ;
+質疑 < shitsugi\ ;
+山吹 < yamabuki\ ;
+踏切 < fumikiri\ ;
+違約金 < iyakukin\ ;
+杏茸 < anzutake\ ;
+生国 < shoukoku\ ;
+鸚鵡病 < oumubyou\ ;
+束脩 < sokushuu\ ;
+単性花 < tanseika\ ;
+宿業 < shukugou\ ;
+注意点 < chuuiten\ ;
+常備金 < joubikin\ ;
+申告 < shinkoku\ ;
+寒月 < kangetsu\ ;
+有識 < yuushiki\ ;
+転移性 < ten''isei\ ;
+餅網 < mochiami\ ;
+何様 < nanisama\ ;
+翁貝 < okinagai\ ;
+活火山 < kakkazan\ ;
+富札 < tomifuda\ ;
+局外 < kyokugai\ ;
+食膳 < shokuzen\ ;
+杉苔 < sugigoke\ ;
+密林 < mitsurin\ ;
+倉卒 < sousotsu\ ;
+客殿 < kyakuden\ ;
+並足 < namiashi\ ;
+加工税 < kakouzei\ ;
+畑作 < hatasaku\ ;
+瓦屋 < kawaraya\ ;
+客死 < kyakushi\ ;
+男前 < otokomae\ ;
+局報 < kyokuhou\ ;
+顰蹙 < hinshuku\ ;
+美粧院 < bishouin\ ;
+宮様 < miyasama\ ;
+作柄 < sakugara\ ;
+献酌 < kenshaku\ ;
+茶箪笥 < chadansu\ ;
+食育 < shokuiku\ ;
+噴火山 < funkazan\ ;
+地方時 < chihouji\ ;
+両足 < ryousoku\ ;
+悪餓鬼 < warugaki\ ;
+博愛家 < hakuaika\ ;
+二股 < futamata\ ;
+上達 < joutatsu\ ;
+情報部 < jouhoubu\ ;
+膝元 < hizamoto\ ;
+宿望 < shukubou\ ;
+日本茶 < nihoncha\ ;
+脱帽 < datsubou\ ;
+申出 < moushide\ ;
+柄物 < garamono\ ;
+上述 < joujutsu\ ;
+作曲 < sakkyoku\ ;
+耳糞 < mimikuso\ ;
+老若 < rounyaku\ ;
+光行差 < koukousa\ ;
+外耳道 < gaijidou\ ;
+肉牛 < nikugyuu\ ;
+山元 < yamamoto\ ;
+地震波 < jishinha\ ;
+三塁打 < sanruida\ ;
+束縛 < sokubaku\ ;
+勾引状 < kouinjou\ ;
+地雷源 < jiraigen\ ;
+電機子 < denkishi\ ;
+末葉 < matsuyou\ ;
+常備軍 < joubigun\ ;
+何月 < nangatsu\ ;
+豚草 < butakusa\ ;
+少少 < shoushou\ ;
+小型化 < kogataka\ ;
+刷毛先 < hakesaki\ ;
+暗闇 < kurayami\ ;
+玉葱 < tamanegi\ ;
+青内障 < aosokohi\ ;
+評議員 < hyougiin\ ;
+乳臭 < nyuushuu\ ;
+甘口 < amakuchi\ ;
+公分母 < koubunbo\ ;
+木菟 < mimizuku\ ;
+可聴度 < kachoudo\ ;
+無条件 < mujouken\ ;
+矢飛白 < yagasuri\ ;
+手腕家 < shuwanka\ ;
+産別 < sanbetsu\ ;
+検事正 < kenjisei\ ;
+便壺 < bentsubo\ ;
+一輛 < ichiryou\ ;
+賜物 < tamamono\ ;
+偽善者 < gizensha\ ;
+伝導度 < dendoudo\ ;
+公募債 < koubosai\ ;
+首枷 < kubikase\ ;
+子爵 < shishaku\ ;
+例式 < reishiki\ ;
+現生 < gen''nama\ ;
+木苺 < kiichigo\ ;
+機関銃 < kikanjuu\ ;
+犬鷲 < inuwashi\ ;
+本色 < honshoku\ ;
+乱脈 < ranmyaku\ ;
+密接 < missetsu\ ;
+一躍 < ichiyaku\ ;
+山人 < yamabito\ ;
+脇息 < kyousoku\ ;
+羽衣 < hagoromo\ ;
+服薬 < fukuyaku\ ;
+武勇伝 < buyuuden\ ;
+梵刹 < bonsetsu\ ;
+伏流 < fukuryuu\ ;
+制御下 < seigyoka\ ;
+対局 < taikyoku\ ;
+蓮華草 < rengesou\ ;
+報知機 < houchiki\ ;
+猫足 < nekoashi\ ;
+小娘 < komusume\ ;
+代物 < daibutsu\ ;
+姫鱒 < himemasu\ ;
+本腰 < hongoshi\ ;
+腹切 < harakiri\ ;
+晩飯 < banmeshi\ ;
+翼翼 < yokuyoku\ ;
+生傷 < namakizu\ ;
+豚肉 < butaniku\ ;
+夏至点 < geshiten\ ;
+頭金 < atamakin\ ;
+武芸者 < bugeisha\ ;
+美質 < bishitsu\ ;
+走馬灯 < soumatou\ ;
+届出 < todokede\ ;
+赤心 < sekishin\ ;
+状骨 < joukotsu\ ;
+翠色 < suishoku\ ;
+両袖 < ryousode\ ;
+丸薬 < gan''yaku\ ;
+宿所 < shukusho\ ;
+果物 < kudamono\ ;
+二重税 < nijuuzei\ ;
+現物 < genbutsu\ ;
+下請 < shitauke\ ;
+木耳 < kikurage\ ;
+尽力 < jinryoku\ ;
+正比例 < seihirei\ ;
+預金者 < yokinsha\ ;
+人畜 < jinchiku\ ;
+加速度 < kasokudo\ ;
+正当化 < seitouka\ ;
+手不足 < tebusoku\ ;
+側火山 < sokkazan\ ;
+過不及 < kafukyuu\ ;
+殺鼠剤 < sassozai\ ;
+記念祭 < kinensai\ ;
+係員 < kakariin\ ;
+不手際 < futegiwa\ ;
+不等辺 < futouhen\ ;
+被害地 < higaichi\ ;
+日本紙 < nihonshi\ ;
+一諾 < ichidaku\ ;
+潜水夫 < sensuifu\ ;
+御陀仏 < odabutsu\ ;
+学歴 < gakureki\ ;
+宿悪 < shukuaku\ ;
+胸座 < munagura\ ;
+一読 < ichidoku\ ;
+寥寥 < ryouryou\ ;
+来着 < raichaku\ ;
+休業 < kyuugyou\ ;
+夜学校 < yagakkou\ ;
+再上映 < saijouei\ ;
+修了 < shuuryou\ ;
+胸幅 < munehaba\ ;
+外来語 < gairaigo\ ;
+難破船 < nanpasen\ ;
+一言 < hitokoto\ ;
+宿志 < shukushi\ ;
+駒下駄 < komageta\ ;
+腕力 < wanryoku\ ;
+腹中 < fukuchuu\ ;
+一角 < hitokado\ ;
+肉欲 < nikuyoku\ ;
+注意書 < chuuisho\ ;
+珠玉 < shugyoku\ ;
+什物 < juumotsu\ ;
+五重奏 < gojuusou\ ;
+肩書 < katagaki\ ;
+漫談家 < mandanka\ ;
+倍精度 < baiseido\ ;
+納付者 < noufusha\ ;
+宿弊 < shukuhei\ ;
+噴火口 < funkakou\ ;
+介護人 < kaigonin\ ;
+乱筆 < ranpitsu\ ;
+人物 < jinbutsu\ ;
+俗信 < zokushin\ ;
+献血 < kenketsu\ ;
+格安 < kakuyasu\ ;
+両蓋 < ryoubuta\ ;
+学業 < gakugyou\ ;
+人爵 < jinshaku\ ;
+猥褻 < waisetsu\ ;
+道議会 < dougikai\ ;
+有機体 < yuukitai\ ;
+豚箱 < butabako\ ;
+仮殿 < karidono\ ;
+飛石 < tobiishi\ ;
+乱立 < ranritsu\ ;
+死産児 < shizanji\ ;
+宿帳 < yadochou\ ;
+寒寒 < samuzamu\ ;
+朱筆 < shuhitsu\ ;
+不規則 < fukisoku\ ;
+主脈 < shumyaku\ ;
+潜水器 < sensuiki\ ;
+付添 < tsukisoi\ ;
+本節 < honbushi\ ;
+曲芸 < kyokugei\ ;
+末節 < massetsu\ ;
+足元 < ashimoto\ ;
+財物 < zaibutsu\ ;
+小名 < shoumyou\ ;
+整備工 < seibikou\ ;
+乗組 < norikumi\ ;
+寝姿 < nesugata\ ;
+曳船 < hikibune\ ;
+末筆 < mappitsu\ ;
+荒武者 < aramusha\ ;
+遠地点 < enchiten\ ;
+昼頃 < hirugoro\ ;
+独身 < dokushin\ ;
+琴曲 < kinkyoku\ ;
+京物 < kyoumono\ ;
+某月 < bougetsu\ ;
+外字紙 < gaijishi\ ;
+今時分 < imajibun\ ;
+豆粕 < mamekasu\ ;
+中腹 < chuufuku\ ;
+反動家 < handouka\ ;
+順逆 < jungyaku\ ;
+大晦日 < oomisoka\ ;
+杉皮 < sugikawa\ ;
+将又 < hatamata\ ;
+不精巧 < fuseikou\ ;
+大丈夫 < daijoubu\ ;
+脱却 < dakkyaku\ ;
+寂寞 < sekibaku\ ;
+食用 < shokuyou\ ;
+某日 < boujitsu\ ;
+保全会 < hozenkai\ ;
+同素体 < dousotai\ ;
+晩酌 < banshaku\ ;
+中肉 < chuuniku\ ;
+依怙贔屓 < ekohiiki\ ;
+貞烈 < teiretsu\ ;
+再交付 < saikoufu\ ;
+飲物 < nomimono\ ;
+両膚 < ryouhada\ ;
+実弾 < jitsudan\ ;
+下萠 < shitamoe\ ;
+天日法 < tenpihou\ ;
+曲者 < kusemono\ ;
+守護神 < shugojin\ ;
+桃園 < momozono\ ;
+組合費 < kumiaihi\ ;
+首巻 < kubimaki\ ;
+仏気 < hotokegi\ ;
+春風 < harukaze\ ;
+荒蕪地 < koubuchi\ ;
+並肉 < naminiku\ ;
+愛媛県 < ehimeken\ ;
+未青年 < miseinen\ ;
+客年 < kyakunen\ ;
+越南 < betonamu\ ;
+両脇 < ryouwaki\ ;
+風窓 < kazamado\ ;
+人事欄 < jinjiran\ ;
+風穴 < fuuketsu\ ;
+仏殿 < butsuden\ ;
+胸壁 < kyouheki\ ;
+長音符 < chouonpu\ ;
+定式 < teishiki\ ;
+不均斉 < fukinsei\ ;
+両肘 < ryouhiji\ ;
+準備金 < junbikin\ ;
+嫡男 < chakunan\ ;
+乳白 < nyuuhaku\ ;
+淋巴液 < rinpaeki\ ;
+事務長 < jimuchou\ ;
+修理屋 < shuuriya\ ;
+低密 < teimitsu\ ;
+両耳 < ryoumimi\ ;
+懐疑論 < kaigiron\ ;
+喉頭炎 < koutouen\ ;
+暴虐 < bougyaku\ ;
+肘掛 < hijikake\ ;
+疎外感 < sogaikan\ ;
+両翼 < ryouyoku\ ;
+密売 < mitsubai\ ;
+木石 < bokuseki\ ;
+玉砕 < gyokusai\ ;
+七草 < nanakusa\ ;
+加速器 < kasokuki\ ;
+宮守 < miyamori\ ;
+玉石 < tamaishi\ ;
+庭下駄 < niwageta\ ;
+仲春 < chuushun\ ;
+桑原 < kuwabara\ ;
+識閾 < shikiiki\ ;
+人波 < hitonami\ ;
+春雨 < harusame\ ;
+翳目 < kasumime\ ;
+猿股 < sarumata\ ;
+休戚 < kyuuseki\ ;
+非常勤 < hijoukin\ ;
+野球部 < yakyuubu\ ;
+客層 < kyakusou\ ;
+前駆戦 < zenkusen\ ;
+春陽 < shun''you\ ;
+貞淑 < teishuku\ ;
+守役 < moriyaku\ ;
+主節 < shusetsu\ ;
+指導部 < shidoubu\ ;
+財産家 < zaisanka\ ;
+一花 < hitohana\ ;
+顔色 < ganshoku\ ;
+中細 < chuuboso\ ;
+中級 < chuukyuu\ ;
+居催促 < izaisoku\ ;
+率直 < sotchoku\ ;
+猫舌 < nekojita\ ;
+三脚 < sankyaku\ ;
+智識 < chishiki\ ;
+当歳馬 < tousaiba\ ;
+下肥 < shimogoe\ ;
+実害 < jitsugai\ ;
+小一 < shouichi\ ;
+貪欲 < don''yoku\ ;
+仁王力 < niouriki\ ;
+人欲 < jin''yoku\ ;
+多肉果 < tanikuka\ ;
+最盛期 < saiseiki\ ;
+実存 < jitsuzon\ ;
+反比例 < hanpirei\ ;
+領袖 < ryoushuu\ ;
+旱魃 < kanbatsu\ ;
+特集 < tokushuu\ ;
+末男 < batsunan\ ;
+音質 < onshitsu\ ;
+寸借 < sunshaku\ ;
+女子高 < joshikou\ ;
+開回路 < kaikairo\ ;
+超俗 < chouzoku\ ;
+曲管 < kyokukan\ ;
+審査員 < shinsain\ ;
+脈動 < myakudou\ ;
+肩幅 < katahaba\ ;
+事務機器 < jimukiki\ ;
+案出 < anshutsu\ ;
+麝香水 < jakousui\ ;
+日本犬 < nihonken\ ;
+事務量 < jimuryou\ ;
+股引 < momohiki\ ;
+丸禿 < maruhage\ ;
+引用句 < in''youku\ ;
+供人 < tomobito\ ;
+科学院 < kagakuin\ ;
+人様 < hitosama\ ;
+乳牛 < nyuugyuu\ ;
+専一 < sen''itsu\ ;
+前頭部 < zentoubu\ ;
+十四日 < juuyokka\ ;
+枕木 < makuragi\ ;
+股座 < matagura\ ;
+特長 < tokuchou\ ;
+狸藻 < tanukimo\ ;
+缶詰 < kandzume\ ;
+一翼 < ichiyoku\ ;
+実妹 < jitsumai\ ;
+中空 < nakazora\ ;
+飲水 < nomimizu\ ;
+中程 < nakahodo\ ;
+今月 < kongetsu\ ;
+貸本 < kashihon\ ;
+並立 < heiritsu\ ;
+安宿 < yasuyado\ ;
+自己暗示 < jikoanji\ ;
+能力 < nouryoku\ ;
+連歌師 < rengashi\ ;
+物陰 < monokage\ ;
+安安 < yasuyasu\ ;
+学徳 < gakutoku\ ;
+支援者 < shiensha\ ;
+習癖 < shuuheki\ ;
+梶木座 < kajikiza\ ;
+丸石 < maruishi\ ;
+地方区 < chihouku\ ;
+万緑 < banryoku\ ;
+宿命 < shukumei\ ;
+山火事 < yamakaji\ ;
+才未満 < saimiman\ ;
+仏文 < futsubun\ ;
+牛革 < gyuukawa\ ;
+聖日 < seijitsu\ ;
+人柄 < hitogara\ ;
+享楽 < kyouraku\ ;
+松柏 < shouhaku\ ;
+群竹 < muratake\ ;
+警蹕 < keihitsu\ ;
+乳濁 < nyuudaku\ ;
+翠玉 < suigyoku\ ;
+人類猿 < jinruien\ ;
+日食 < nisshoku\ ;
+仇敵 < kyuuteki\ ;
+靺鞨 < makkatsu\ ;
+姿見 < sugatami\ ;
+議定書 < giteisho\ ;
+実在 < jitsuzai\ ;
+月番 < tsukiban\ ;
+環七 < kan''nana\ ;
+胸先 < munasaki\ ;
+胸元 < munamoto\ ;
+一組 < hitokumi\ ;
+茶坊主 < chabouzu\ ;
+猫糞 < nekobaba\ ;
+加盟店 < kameiten\ ;
+靴音 < kutsuoto\ ;
+乗物 < norimono\ ;
+風物 < fuubutsu\ ;
+作劇 < sakugeki\ ;
+暖色 < danshoku\ ;
+何卒 < nanitozo\ ;
+緩下剤 < kangezai\ ;
+率然 < sotsuzen\ ;
+萌黄色 < moegiiro\ ;
+空気銃 < kuukijuu\ ;
+休学 < kyuugaku\ ;
+鹹水湖 < kansuiko\ ;
+三筆 < sanpitsu\ ;
+住友 < sumitomo\ ;
+海老腰 < ebigoshi\ ;
+松明 < taimatsu\ ;
+仮役 < kariyaku\ ;
+生計費 < seikeihi\ ;
+中皿 < chuuzara\ ;
+人数 < hitokazu\ ;
+婚約 < kon''yaku\ ;
+下穴 < shitaana\ ;
+宿六 < yadoroku\ ;
+参加者 < sankasha\ ;
+日本海 < nihonkai\ ;
+耳朶 < mimitabu\ ;
+書留 < kakitome\ ;
+一筋 < hitosuji\ ;
+学寮 < gakuryou\ ;
+一筆 < hitofude\ ;
+被乗数 < hijousuu\ ;
+片隅 < katasumi\ ;
+豁然 < katsuzen\ ;
+手風琴 < tefuukin\ ;
+片陰 < katakage\ ;
+亥月 < gaigetsu\ ;
+注意報 < chuuihou\ ;
+風景画 < fuukeiga\ ;
+質屋 < shichiya\ ;
+猪突 < chototsu\ ;
+京方 < kyougata\ ;
+電子音 < denshion\ ;
+牛鍋 < gyuunabe\ ;
+実名 < jitsumei\ ;
+転化糖 < tenkatou\ ;
+来月 < raigetsu\ ;
+胸中 < kyouchuu\ ;
+一種 < hitokusa\ ;
+閉経期 < heikeiki\ ;
+明達 < meitatsu\ ;
+宿便 < shukuben\ ;
+密令 < mitsurei\ ;
+一秒 < ichibyou\ ;
+互助的 < gojoteki\ ;
+乾所帯 < kanjotai\ ;
+大音声 < daionjou\ ;
+破産者 < hasansha\ ;
+閉回路 < heikairo\ ;
+主物 < shubutsu\ ;
+群発 < gunpatsu\ ;
+曲球 < kyokkyuu\ ;
+早鐘 < hayagane\ ;
+胡麻擂 < gomasuri\ ;
+機雷原 < kiraigen\ ;
+二桁 < futaketa\ ;
+来日 < rainichi\ ;
+爪音 < tsumaoto\ ;
+断髪 < danpatsu\ ;
+曲玉 < magatama\ ;
+多孔性 < takousei\ ;
+合成音 < gouseion\ ;
+破魔弓 < hamayumi\ ;
+客分 < kyakubun\ ;
+何何 < naninani\ ;
+造影剤 < zoueizai\ ;
+胆力 < tanryoku\ ;
+事柄 < kotogara\ ;
+仮宮 < karimiya\ ;
+書物 < shomotsu\ ;
+牛酪 < gyuuraku\ ;
+倦怠期 < kentaiki\ ;
+独習 < dokushuu\ ;
+仮宅 < karitaku\ ;
+子宝 < kodakara\ ;
+韮葱 < niranegi\ ;
+未納者 < minousha\ ;
+二重星 < nijuusei\ ;
+佗人 < wabibito\ ;
+仏式 < busshiki\ ;
+三直 < sanchoku\ ;
+何事 < nanigoto\ ;
+肉太 < nikubuto\ ;
+繁体字 < hantaiji\ ;
+三百 < sanbyaku\ ;
+特賞 < tokushou\ ;
+消音器 < shouonki\ ;
+顔着 < ganchaku\ ;
+多人数 < taninzuu\ ;
+赴任地 < funinchi\ ;
+古生代 < koseidai\ ;
+乳業 < nyuugyou\ ;
+日銀 < nichigin\ ;
+枕席 < chinseki\ ;
+賓客 < hinkyaku\ ;
+芝居気 < shibaige\ ;
+実像 < jitsuzou\ ;
+実働 < jitsudou\ ;
+横座標 < ouzahyou\ ;
+自警団 < jikeidan\ ;
+暫定案 < zanteian\ ;
+魚市場 < uoichiba\ ;
+宮人 < miyabito\ ;
+旧里 < furusato\ ;
+一皿 < hitosara\ ;
+一皮 < hitokawa\ ;
+二方 < futakata\ ;
+駅馬車 < ekibasha\ ;
+上略 < jouryaku\ ;
+貫徹 < kantetsu\ ;
+対話体 < taiwatai\ ;
+枢密 < suumitsu\ ;
+一癖 < hitokuse\ ;
+宮中 < kyuuchuu\ ;
+豆殻 < mamegara\ ;
+現尺 < genshaku\ ;
+人影 < hitokage\ ;
+客体 < kyakutai\ ;
+清掃夫 < seisoufu\ ;
+実例 < jitsurei\ ;
+高感度 < koukando\ ;
+木槌 < kidzuchi\ ;
+紀元前 < kigenzen\ ;
+磨研紙 < makenshi\ ;
+現実 < genjitsu\ ;
+客人 < kyakujin\ ;
+既婚者 < kikonsha\ ;
+霹靂 < hekireki\ ;
+搬送波 < hansouha\ ;
+譲葉 < yuzuriha\ ;
+疎開者 < sokaisha\ ;
+思想家 < shisouka\ ;
+谷水 < tanimizu\ ;
+豪日 < gounichi\ ;
+服毒 < fukudoku\ ;
+岩田帯 < iwataobi\ ;
+職域 < shokuiki\ ;
+暴発 < bouhatsu\ ;
+開閉機 < kaiheiki\ ;
+序破急 < johakyuu\ ;
+足忠実 < ashimame\ ;
+食指 < shokushi\ ;
+半減期 < hangenki\ ;
+日輪 < nichirin\ ;
+自然美 < shizenbi\ ;
+肩先 < katasaki\ ;
+外鰐 < sotowani\ ;
+頻発 < hinpatsu\ ;
+前世紀 < zenseiki\ ;
+本末 < honmatsu\ ;
+研磨紙 < kenmashi\ ;
+万物 < banmotsu\ ;
+玉杯 < gyokuhai\ ;
+献物 < kenmotsu\ ;
+人山 < hitoyama\ ;
+青写真 < aojashin\ ;
+早足 < hayaashi\ ;
+祈祷書 < kitousho\ ;
+霧雨 < kirisame\ ;
+帰還兵 < kikanhei\ ;
+閉経後 < heikeigo\ ;
+賢哲 < kentetsu\ ;
+片足 < kataashi\ ;
+一片 < hitohira\ ;
+多方面 < tahoumen\ ;
+燕尾服 < enbifuku\ ;
+禀議書 < ringisho\ ;
+本日 < honjitsu\ ;
+乾拭 < karabuki\ ;
+父兄会 < fukeikai\ ;
+高麗楽 < komagaku\ ;
+食感 < shokukan\ ;
+整髪 < seihatsu\ ;
+仏壇 < butsudan\ ;
+予想外 < yosougai\ ;
+扁桃油 < hentouyu\ ;
+学割 < gakuwari\ ;
+整骨 < seikotsu\ ;
+贋作 < nisesaku\ ;
+学則 < gakusoku\ ;
+曲水 < kyokusui\ ;
+青年期 < seinenki\ ;
+風月 < fuugetsu\ ;
+霜雪 < sousetsu\ ;
+均等化 < kintouka\ ;
+乱掘 < rankutsu\ ;
+受験者 < jukensha\ ;
+時代相 < jidaisou\ ;
+九日 < kokonoka\ ;
+日豪 < nichigou\ ;
+増加分 < zoukabun\ ;
+二連銃 < nirenjuu\ ;
+九族 < kyuuzoku\ ;
+読響 < yomikyou\ ;
+牛角 < gyuukaku\ ;
+大雪 < taisetsu\ ;
+外食 < gaishoku\ ;
+一回転 < ikkaiten\ ;
+夕飯 < yuumeshi\ ;
+職名 < shokumei\ ;
+晩節 < bansetsu\ ;
+二役 < futayaku\ ;
+主脳部 < shunoubu\ ;
+二形 < futanari\ ;
+春菊 < shungiku\ ;
+学僕 < gakuboku\ ;
+納付書 < noufusho\ ;
+豆料 < mameryou\ ;
+朝敵 < chouteki\ ;
+単弁花 < tanbenka\ ;
+流浪者 < rurousha\ ;
+散髪 < sanpatsu\ ;
+菓子盆 < kashibon\ ;
+謎謎 < nazonazo\ ;
+公用語 < kouyougo\ ;
+妄説 < mousetsu\ ;
+頓着 < tonchaku\ ;
+仏噸 < futsuton\ ;
+妖術 < youjutsu\ ;
+雛鳥 < hinadori\ ;
+電飾 < denshoku\ ;
+太陽炉 < taiyouro\ ;
+旧訳 < kyuuyaku\ ;
+月末 < tsukizue\ ;
+独白 < dokuhaku\ ;
+猛烈 < mouretsu\ ;
+受身形 < ukemikei\ ;
+民営化 < min''eika\ ;
+人望家 < jinbouka\ ;
+爪跡 < tsumeato\ ;
+仮初 < karisome\ ;
+来客 < raikyaku\ ;
+月曜 < getsuyou\ ;
+翌朝 < yokuchou\ ;
+総二階 < sounikai\ ;
+繁雑 < hanzatsu\ ;
+解雇者 < kaikosha\ ;
+漢時代 < kanjidai\ ;
+内外野 < naigaiya\ ;
+片仮名 < katakana\ ;
+脱衣所 < datsuijo\ ;
+職分 < shokubun\ ;
+乾式 < kanshiki\ ;
+面識 < menshiki\ ;
+人垣 < hitogaki\ ;
+贈与者 < zouyosha\ ;
+失錯 < shissaku\ ;
+久方 < hisakata\ ;
+月明 < getsumei\ ;
+声高 < kowadaka\ ;
+論述 < ronjutsu\ ;
+翌春 < yokushun\ ;
+保守系 < hoshukei\ ;
+諾諾 < dakudaku\ ;
+識者 < shikisha\ ;
+仕口 < shikuchi\ ;
+海馬回 < kaibakai\ ;
+自堕落 < jidaraku\ ;
+珍妙 < chinmyou\ ;
+貝塚 < kaidzuka\ ;
+本塁打 < honruida\ ;
+聖哲 < seitetsu\ ;
+愛餐会 < aisankai\ ;
+対抗馬 < taikouba\ ;
+面詰 < menkitsu\ ;
+縞馬 < shimauma\ ;
+仮名文 < kanabumi\ ;
+食尽 < shokujin\ ;
+賭事 < kakegoto\ ;
+一流 < ichiryuu\ ;
+中柄 < chuugara\ ;
+書札 < shosatsu\ ;
+妙薬 < myouyaku\ ;
+主日 < shujitsu\ ;
+諸諸 < moromoro\ ;
+胡麻塩 < gomashio\ ;
+加工品 < kakouhin\ ;
+権利書 < kenrisho\ ;
+諸説 < shosetsu\ ;
+廃要素 < haiyouso\ ;
+女親 < on''naoya\ ;
+更更 < sarasara\ ;
+杓子 < shakushi\ ;
+空想家 < kuusouka\ ;
+曲曲 < kumaguma\ ;
+明色 < meishoku\ ;
+販売部 < hanbaibu\ ;
+眼鏡屋 < meganeya\ ;
+他出 < tashutsu\ ;
+前世界 < zensekai\ ;
+本場所 < honbasho\ ;
+雨靴 < amagutsu\ ;
+虚無党 < kyomutou\ ;
+人類愛 < jinruiai\ ;
+二重奏 < nijuusou\ ;
+愛好者 < aikousha\ ;
+合成語 < gouseigo\ ;
+本式 < honshiki\ ;
+仏前 < butsuzen\ ;
+雪雲 < yukigumo\ ;
+雨霰 < amearare\ ;
+木彫 < mokuchou\ ;
+暑熱 < shonetsu\ ;
+石火矢 < ishibiya\ ;
+物色 < busshoku\ ;
+職人 < shokunin\ ;
+出納簿 < suitoubo\ ;
+諧謔 < kaigyaku\ ;
+独特 < dokutoku\ ;
+失速 < shissoku\ ;
+春繭 < harumayu\ ;
+熱願 < netsugan\ ;
+軍管区 < gunkanku\ ;
+末年 < matsunen\ ;
+嫡孫 < chakuson\ ;
+物臭 < monogusa\ ;
+嫡子 < chakushi\ ;
+諤諤 < gakugaku\ ;
+狡猾 < koukatsu\ ;
+雑食 < zasshoku\ ;
+主持 < shumochi\ ;
+嬰児 < midorigo\ ;
+秋田県 < akitaken\ ;
+縦長 < tatenaga\ ;
+儒学界 < jugakkai\ ;
+下手糞 < hetakuso\ ;
+争奪 < soudatsu\ ;
+仏像 < butsuzou\ ;
+未墾地 < mikonchi\ ;
+大多数 < daitasuu\ ;
+子午線 < shigosen\ ;
+老実 < roujitsu\ ;
+大逆 < daigyaku\ ;
+日蓮 < nichiren\ ;
+正常化 < seijouka\ ;
+発酵素 < hakkouso\ ;
+距離計 < kyorikei\ ;
+熱雷 < netsurai\ ;
+船小屋 < funagoya\ ;
+醸造所 < jouzoujo\ ;
+試食 < shishoku\ ;
+敷金 < shikikin\ ;
+嫡妻 < chakusai\ ;
+一棟 < hitomune\ ;
+大納言 < dainagon\ ;
+天文家 < tenmonka\ ;
+模造者 < mozousha\ ;
+失跡 < shisseki\ ;
+寝不足 < nebusoku\ ;
+人刺 < jinsashi\ ;
+電鉄 < dentetsu\ ;
+人別 < ninbetsu\ ;
+専門家 < senmonka\ ;
+論説 < ronsetsu\ ;
+未然形 < mizenkei\ ;
+本局 < honkyoku\ ;
+剪裁機 < sensaiki\ ;
+中指 < nakayubi\ ;
+購買部 < koubaibu\ ;
+貸借 < taishaku\ ;
+獲得 < kakutoku\ ;
+論詰 < ronkitsu\ ;
+慈善会 < jizenkai\ ;
+悪趣味 < akushumi\ ;
+一桁 < hitoketa\ ;
+施術 < shijutsu\ ;
+顛末 < tenmatsu\ ;
+贈与税 < zouyozei\ ;
+財力 < zairyoku\ ;
+語部 < kataribe\ ;
+保存系 < hozonkei\ ;
+三曲 < sankyoku\ ;
+気動車 < kidousha\ ;
+永住者 < eijuusha\ ;
+景物 < keibutsu\ ;
+方術 < houjutsu\ ;
+特約 < tokuyaku\ ;
+繰言 < kurigoto\ ;
+牛肉 < gyuuniku\ ;
+杉垣 < sugigaki\ ;
+王室 < oushitsu\ ;
+一束 < hitotaba\ ;
+牡羊 < ohitsuji\ ;
+谷底 < tanizoko\ ;
+未熟児 < mijukuji\ ;
+一木 < ichiboku\ ;
+人傑 < jinketsu\ ;
+記念品 < kinenhin\ ;
+破瓜病 < hakabyou\ ;
+昨秋 < sakushuu\ ;
+谷川 < tanigawa\ ;
+仄仄 < honobono\ ;
+破産法 < hasanhou\ ;
+停電日 < teidenbi\ ;
+買主 < kainushi\ ;
+受験生 < jukensei\ ;
+陸蒸気 < okajouki\ ;
+一時 < hitotoki\ ;
+昇給 < shoukyuu\ ;
+実行時 < jikkouji\ ;
+片膝 < katahiza\ ;
+飲助 < nomisuke\ ;
+曲悪 < kyokuaku\ ;
+模造紙 < mozoushi\ ;
+二原子 < nigenshi\ ;
+一旗 < hitohata\ ;
+一族 < ichizoku\ ;
+食品 < shokuhin\ ;
+物納 < butsunou\ ;
+失調 < shitchou\ ;
+煮魚 < nizakana\ ;
+失語 < shitsugo\ ;
+万国旗 < bankokki\ ;
+早耳 < hayamimi\ ;
+丸底 < maruzoko\ ;
+事務的 < jimuteki\ ;
+人人 < hitobito\ ;
+散逸 < san''itsu\ ;
+片肌 < katahada\ ;
+書式 < shoshiki\ ;
+人事 < hitogoto\ ;
+総髪 < souhatsu\ ;
+服属 < fukuzoku\ ;
+特種 < tokudane\ ;
+中形 < chuugata\ ;
+人中 < hitonaka\ ;
+推移的 < suiiteki\ ;
+一撃 < ichigeki\ ;
+空気穴 < kuukiana\ ;
+受容者 < juyousha\ ;
+糠味噌 < nukamiso\ ;
+方形波 < houkeiha\ ;
+戦前派 < senzenha\ ;
+処理場 < shorijou\ ;
+二弦琴 < nigenkin\ ;
+中庭 < nakaniwa\ ;
+始発 < shihatsu\ ;
+謝絶 < shazetsu\ ;
+乾咳 < karazeki\ ;
+酒造家 < shuzouka\ ;
+中幕 < nakamaku\ ;
+中幅 < chuuhaba\ ;
+掲示板 < keijiban\ ;
+内風呂 < uchiburo\ ;
+諸膝 < morohiza\ ;
+諸膚 < morohada\ ;
+中席 < nakaseki\ ;
+朝夕 < chouseki\ ;
+牧笛 < bokuteki\ ;
+両得 < ryoutoku\ ;
+縦軸 < tatejiku\ ;
+中労委 < chuuroui\ ;
+姦物 < kanbutsu\ ;
+食刻 < shokkoku\ ;
+玉垣 < tamagaki\ ;
+愛猫家 < aibyouka\ ;
+三回忌 < sankaiki\ ;
+総仕舞 < soujimai\ ;
+雲足 < kumoashi\ ;
+緑風 < ryokufuu\ ;
+物種 < monodane\ ;
+並幅 < namihaba\ ;
+妙策 < myousaku\ ;
+静脈 < joumyaku\ ;
+物税 < butsuzei\ ;
+主客 < shukyaku\ ;
+醸造家 < jouzouka\ ;
+交交 < komogomo\ ;
+爆薬 < bakuyaku\ ;
+中島 < nakajima\ ;
+交付金 < koufukin\ ;
+事共 < kotodomo\ ;
+扇風機 < senpuuki\ ;
+不悉 < fushitsu\ ;
+全候補 < zenkouho\ ;
+理想論 < risouron\ ;
+牧神 < bokushin\ ;
+緑青 < rokushou\ ;
+漢数字 < kansuuji\ ;
+輝煌帝 < kikoutei\ ;
+支持者 < shijisha\ ;
+方舟 < hakobune\ ;
+飯事 < mamagoto\ ;
+中小 < chuushou\ ;
+日米 < nichibei\ ;
+焼鳥 < yakitori\ ;
+大文字 < daimonji\ ;
+謹直 < kinchoku\ ;
+中学 < chuugaku\ ;
+練鉄 < rentetsu\ ;
+変説 < hensetsu\ ;
+敵襲 < tekishuu\ ;
+子午環 < shigokan\ ;
+放逐 < houchiku\ ;
+三役 < san''yaku\ ;
+認識 < ninshiki\ ;
+艶福家 < enpukuka\ ;
+専門医 < senmon''i\ ;
+更年期 < kounenki\ ;
+日本刀 < nihontou\ ;
+緑門 < ryokumon\ ;
+不行儀 < fugyougi\ ;
+帰巣性 < kisousei\ ;
+下手物 < getemono\ ;
+村人 < murabito\ ;
+提案者 < teiansha\ ;
+受信機 < jushinki\ ;
+下帯 < shitaobi\ ;
+一役 < hitoyaku\ ;
+豪傑 < gouketsu\ ;
+揚子江 < yousukou\ ;
+事事 < kotogoto\ ;
+綿雲 < watagumo\ ;
+乱入 < ran''nyuu\ ;
+綿雪 < watayuki\ ;
+経常費 < keijouhi\ ;
+予予 < kanegane\ ;
+世局 < seikyoku\ ;
+練達 < rentatsu\ ;
+暇暇 < himahima\ ;
+隆隆 < ryuuryuu\ ;
+海王星 < kaiousei\ ;
+一度 < hitotabi\ ;
+隅隅 < sumizumi\ ;
+幼稚園 < youchien\ ;
+一年 < hitotose\ ;
+静粛 < seishuku\ ;
+塩鮭 < shiozake\ ;
+族籍 < zokuseki\ ;
+大蒜 < nin''niku\ ;
+一幕 < hitomaku\ ;
+月桂樹 < gekkeiju\ ;
+未記入 < mikinyuu\ ;
+一巻 < hitomaki\ ;
+難詰 < nankitsu\ ;
+雀躍 < jakuyaku\ ;
+中塗 < nakanuri\ ;
+陪食 < baishoku\ ;
+研磨材 < kenmazai\ ;
+二年草 < ninensou\ ;
+頌春 < shoushun\ ;
+義勇軍 < giyuugun\ ;
+文語文 < bungobun\ ;
+誕生日 < tanjoubi\ ;
+伯剌西爾 < burajiru\ ;
+万屋 < yorozuya\ ;
+中垣 < nakagaki\ ;
+金時計 < kindokei\ ;
+風力 < fuuryoku\ ;
+空洞化 < kuudouka\ ;
+糞味噌 < kusomiso\ ;
+乱伐 < ranbatsu\ ;
+日本人 < nihonjin\ ;
+猫属 < nekozoku\ ;
+性遊戯 < seiyuugi\ ;
+中国 < chuugoku\ ;
+次点者 < jitensha\ ;
+頃日 < keijitsu\ ;
+防腐剤 < boufuzai\ ;
+詳註 < shouchuu\ ;
+日本中 < nihonjuu\ ;
+雑談 < zatsudan\ ;
+腕相撲 < udezumou\ ;
+地域差 < chiikisa\ ;
+保護鳥 < hogochou\ ;
+日直 < nitchoku\ ;
+緑酒 < ryokushu\ ;
+一室 < isshitsu\ ;
+太腿 < futomomo\ ;
+小手先 < kotesaki\ ;
+無降水 < mukousui\ ;
+断絶 < danzetsu\ ;
+一子 < hitorigo\ ;
+姫様 < himesama\ ;
+鼻呼吸 < bikokyuu\ ;
+電蓄 < denchiku\ ;
+重騎兵 < juukihei\ ;
+古代史 < kodaishi\ ;
+末代 < matsudai\ ;
+言霊 < kotodama\ ;
+両国 < ryougoku\ ;
+主取 < shuudori\ ;
+雨蛙 < amagaeru\ ;
+熟読 < jukudoku\ ;
+玉体 < gyokutai\ ;
+牧牛 < bokugyuu\ ;
+塾長 < jukuchou\ ;
+熱血 < nekketsu\ ;
+能舞台 < noubutai\ ;
+玉代 < gyokudai\ ;
+集註 < shuuchuu\ ;
+競馬馬 < keibauma\ ;
+隔週 < kakushuu\ ;
+免租地 < mensochi\ ;
+日用 < nichiyou\ ;
+書取 < kakitori\ ;
+二次的 < nijiteki\ ;
+演奏者 < ensousha\ ;
+主力 < shuryoku\ ;
+具体性 < gutaisei\ ;
+月内 < getsunai\ ;
+乞丐 < kotsugai\ ;
+七夕 < tanabata\ ;
+謡物 < utaimono\ ;
+頻尿 < hin''nyou\ ;
+天罰 < tenbatsu\ ;
+一等車 < ittousha\ ;
+面白 < omoshiro\ ;
+曲名 < kyokumei\ ;
+総轄 < soukatsu\ ;
+中古 < chuuburu\ ;
+不品行 < fuhinkou\ ;
+狼座 < ookamiza\ ;
+証跡 < shouseki\ ;
+特科兵 < tokkahei\ ;
+脂肪油 < shibouyu\ ;
+左大臣 < sadaijin\ ;
+金字塔 < kinjitou\ ;
+奮発 < funpatsu\ ;
+高野山 < kouyasan\ ;
+大熊座 < oogumaza\ ;
+明滅 < meimetsu\ ;
+陸釣 < okadzuri\ ;
+謀略 < bouryaku\ ;
+一塩 < hitoshio\ ;
+風上 < kazakami\ ;
+冒険家 < boukenka\ ;
+外股 < sotomata\ ;
+塩濃度 < en''noudo\ ;
+絶食 < zesshoku\ ;
+書初 < kakizome\ ;
+日乃丸 < hinomaru\ ;
+誦習 < shoushuu\ ;
+爆笑 < bakushou\ ;
+習作 < shuusaku\ ;
+特注 < tokuchuu\ ;
+暦学 < rekigaku\ ;
+丸傷 < tamakizu\ ;
+何処迄 < dokomade\ ;
+近似値 < kinjichi\ ;
+透磁性 < toujisei\ ;
+奉祝 < houshuku\ ;
+保護領 < hogoryou\ ;
+中共 < chuukyou\ ;
+特派員 < tokuhain\ ;
+並列 < heiretsu\ ;
+久久 < hisabisa\ ;
+唾液腺 < daekisen\ ;
+緑豆 < ryokutou\ ;
+好物 < koubutsu\ ;
+下院議員 < kaingiin\ ;
+庭木戸 < niwakido\ ;
+青畳 < aodatami\ ;
+雛菊 < hinagiku\ ;
+時時 < tokidoki\ ;
+後援者 < kouensha\ ;
+黄鉄鉱 < outekkou\ ;
+失笑 < shisshou\ ;
+敗色 < haishoku\ ;
+雪膚 < yukihada\ ;
+暗室 < anshitsu\ ;
+古代人 < kodaijin\ ;
+事務服 < jimufuku\ ;
+小麦粉 < komugiko\ ;
+下味 < shitaaji\ ;
+不溶性 < fuyousei\ ;
+結髪 < keppatsu\ ;
+顧問団 < komondan\ ;
+昼時 < hirudoki\ ;
+保有者 < hoyuusha\ ;
+避病院 < hibyouin\ ;
+前景気 < maegeiki\ ;
+丸事 < marugoto\ ;
+電気椅子 < denkiisu\ ;
+外交員 < gaikouin\ ;
+文箱 < fumibako\ ;
+大筒 < oodzutsu\ ;
+丸丸 < marumaru\ ;
+防雪 < bousetsu\ ;
+銅相場 < dousouba\ ;
+訳読 < yakudoku\ ;
+七味 < shichimi\ ;
+方略 < houryaku\ ;
+丸一 < maruichi\ ;
+中低 < nakabiku\ ;
+始末 < shimatsu\ ;
+大童 < oowarawa\ ;
+傾斜度 < keishado\ ;
+高度計 < koudokei\ ;
+青玉 < seigyoku\ ;
+近未来 < kinmirai\ ;
+捕鯨船 < hogeisen\ ;
+失神 < shisshin\ ;
+集落 < shuuraku\ ;
+静物 < seibutsu\ ;
+加害者 < kagaisha\ ;
+数珠玉 < juzudama\ ;
+一向 < hitasura\ ;
+独学 < dokugaku\ ;
+昨朝 < sakuchou\ ;
+一叢 < hitomura\ ;
+曲事 < kusegoto\ ;
+手羽先 < tebasaki\ ;
+補助翼 < hojoyoku\ ;
+中中 < nakanaka\ ;
+慈悲心 < jihishin\ ;
+類別 < ruibetsu\ ;
+外貨債 < gaikasai\ ;
+縮緬 < chirimen\ ;
+情報化 < jouhouka\ ;
+昨暁 < sakugyou\ ;
+総予算 < souyosan\ ;
+真夜中 < mayonaka\ ;
+結願 < kechigan\ ;
+昨春 < sakushun\ ;
+万別 < banbetsu\ ;
+頁岩 < ketsugan\ ;
+並並 < naminami\ ;
+縦縞 < tatejima\ ;
+覗魔 < nozokima\ ;
+増設 < zousetsu\ ;
+一割 < ichiwari\ ;
+夕立 < yuudachi\ ;
+塩辛 < shiokara\ ;
+旧流 < kyuuryuu\ ;
+下意識 < kaishiki\ ;
+代稽古 < daigeiko\ ;
+永住権 < eijuuken\ ;
+保有米 < hoyuumai\ ;
+自国語 < jikokugo\ ;
+反対語 < hantaigo\ ;
+変異体 < hen''itai\ ;
+絹針 < kinubari\ ;
+獄中 < gokuchuu\ ;
+利己的 < rikoteki\ ;
+一先 < hitomazu\ ;
+建具屋 < tateguya\ ;
+昇格 < shoukaku\ ;
+防寒具 < boukangu\ ;
+女学校 < jogakkou\ ;
+保守性 < hoshusei\ ;
+繭玉 < mayudama\ ;
+明月 < meigetsu\ ;
+鞭撻 < bentatsu\ ;
+雨粒 < ametsubu\ ;
+好景気 < koukeiki\ ;
+平和維持 < heiwaiji\ ;
+交付者 < koufusha\ ;
+可変数 < kahensuu\ ;
+花文字 < hanamoji\ ;
+暴力 < bouryoku\ ;
+面会日 < menkaibi\ ;
+観閲 < kan''etsu\ ;
+煙草屋 < tabakoya\ ;
+緑藻 < ryokusou\ ;
+壮絶 < souzetsu\ ;
+雨模様 < amemoyou\ ;
+教籍 < kyouseki\ ;
+明春 < myoushun\ ;
+万代 < yorozuyo\ ;
+支脈 < shimyaku\ ;
+揺籃期 < youranki\ ;
+突破口 < toppakou\ ;
+独国 < dokukoku\ ;
+近代化 < kindaika\ ;
+点火系 < tenkakei\ ;
+二年生 < ninensei\ ;
+星気体 < seikitai\ ;
+不等号 < fudougou\ ;
+有為転変 < uitenpen\ ;
+五辺形 < gohenkei\ ;
+二輪車 < nirinsha\ ;
+三下 < sanshita\ ;
+大略 < tairyaku\ ;
+用箪笥 < youdansu\ ;
+女気 < on''nakke\ ;
+塩豆 < shiomame\ ;
+冷蔵庫 < reizouko\ ;
+万一 < man''ichi\ ;
+雪空 < yukizora\ ;
+謀殺 < bousatsu\ ;
+組長 < kumichou\ ;
+言説 < gensetsu\ ;
+不所存 < fushozon\ ;
+角通 < kakutsuu\ ;
+投光器 < toukouki\ ;
+浜茄子 < hamanasu\ ;
+古書展 < koshoten\ ;
+二十代 < nijuudai\ ;
+一一 < itsuitsu\ ;
+統轄 < toukatsu\ ;
+謡曲 < youkyoku\ ;
+紅鱒 < benimasu\ ;
+市街図 < shigaizu\ ;
+独唱 < dokushou\ ;
+樹枝状 < jushijou\ ;
+緑茶 < ryokucha\ ;
+序盤戦 < jobansen\ ;
+昼席 < hiruseki\ ;
+火成岩 < kaseigan\ ;
+組合員 < kumiaiin\ ;
+亜脱臼 < adakkyuu\ ;
+紅鮭 < benizake\ ;
+納骨 < noukotsu\ ;
+鬱金色 < ukon''iro\ ;
+旧株 < kyuukabu\ ;
+姫宮 < himemiya\ ;
+墜落 < tsuiraku\ ;
+鬼武者 < onimusha\ ;
+斜投影 < shatouei\ ;
+数百 < suuhyaku\ ;
+集約 < shuuyaku\ ;
+誘発 < yuuhatsu\ ;
+滑空機 < kakkuuki\ ;
+片栗 < katakuri\ ;
+旬月 < jungetsu\ ;
+軽騎兵 < keikihei\ ;
+二元論 < nigenron\ ;
+手料理 < teryouri\ ;
+単利法 < tanrihou\ ;
+御神輿 < omikoshi\ ;
+先鋭化 < sen''eika\ ;
+電略 < denryaku\ ;
+撒布剤 < sappuzai\ ;
+文物 < bunbutsu\ ;
+呉服屋 < gofukuya\ ;
+改築 < kaichiku\ ;
+試筋 < tamesuji\ ;
+試筆 < shihitsu\ ;
+旧暦 < kyuureki\ ;
+旬日 < junjitsu\ ;
+雑税 < zatsuzei\ ;
+読物 < yomimono\ ;
+溶解炉 < youkairo\ ;
+雪盲 < setsumou\ ;
+可変性 < kahensei\ ;
+警察 < keisatsu\ ;
+年齢差 < nenreisa\ ;
+解説 < kaisetsu\ ;
+緩緩 < yuruyuru\ ;
+早早 < hayabaya\ ;
+角貝 < tsunogai\ ;
+刀圭家 < toukeika\ ;
+摂食 < sesshoku\ ;
+西陣 < nishijin\ ;
+鳳仙花 < housenka\ ;
+触角 < shokkaku\ ;
+壁紙 < kabegami\ ;
+導波管 < douhakan\ ;
+単比例 < tanpirei\ ;
+捕鯨砲 < hogeihou\ ;
+紐革 < himokawa\ ;
+直足袋 < jikatabi\ ;
+旧教 < kyuukyou\ ;
+集積 < shuuseki\ ;
+埋骨 < maikotsu\ ;
+旗本 < hatamoto\ ;
+外物 < gaibutsu\ ;
+悪太郎 < akutarou\ ;
+有理数 < yuurisuu\ ;
+部分品 < bubunhin\ ;
+可燃性 < kanensei\ ;
+不善感 < fuzenkan\ ;
+級長 < kyuuchou\ ;
+斬殺 < zansatsu\ ;
+洗面所 < senmenjo\ ;
+物情 < butsujou\ ;
+集票 < shuuhyou\ ;
+雨男 < ameotoko\ ;
+爆沈 < bakuchin\ ;
+夜烏 < yogarasu\ ;
+送油管 < souyukan\ ;
+格子戸 < koushido\ ;
+具体例 < gutairei\ ;
+姫垣 < himegaki\ ;
+支持杭 < shijikou\ ;
+熊笹 < kumazasa\ ;
+熱発 < neppatsu\ ;
+無限大 < mugendai\ ;
+順列 < junretsu\ ;
+墨繩 < suminawa\ ;
+精米所 < seimaijo\ ;
+謙抑 < ken''yoku\ ;
+撮要 < satsuyou\ ;
+変物 < henbutsu\ ;
+統語論 < tougoron\ ;
+未開墾 < mikaikon\ ;
+春宵 < shunshou\ ;
+作業費 < sagyouhi\ ;
+闇雲 < yamikumo\ ;
+大阪府 < oosakafu\ ;
+猊美渓 < geibikei\ ;
+打撃王 < dagekiou\ ;
+続落 < zokuraku\ ;
+雪玉 < yukidama\ ;
+摘録 < tekiroku\ ;
+広葉樹 < kouyouju\ ;
+緊縮 < kinshuku\ ;
+試着 < shichaku\ ;
+草創期 < sousouki\ ;
+侍衛長 < jieichou\ ;
+二進木 < nishingi\ ;
+外濠 < sotobori\ ;
+妾宅 < shoutaku\ ;
+顕在化 < kenzaika\ ;
+再試合 < saishiai\ ;
+伝音器 < den''onki\ ;
+義務的 < gimuteki\ ;
+輸卵管 < yurankan\ ;
+低利金 < teirikin\ ;
+戦利品 < senrihin\ ;
+文語体 < bungotai\ ;
+乾性油 < kanseiyu\ ;
+角袖 < kakusode\ ;
+擂粉木 < surikogi\ ;
+闇闇 < yamiyami\ ;
+指導員 < shidouin\ ;
+未開地 < mikaichi\ ;
+秘書官 < hishokan\ ;
+多湿 < tashitsu\ ;
+面接 < mensetsu\ ;
+雑用 < zatsuyou\ ;
+新株 < shinkabu\ ;
+摺足 < suriashi\ ;
+武家物 < bukemono\ ;
+整理券 < seiriken\ ;
+育雛器 < ikusuuki\ ;
+圧搾機 < assakuki\ ;
+旁旁 < katagata\ ;
+新柄 < shingara\ ;
+政略 < seiryaku\ ;
+見通 < mitooshi\ ;
+難物 < nanbutsu\ ;
+二分法 < nibunhou\ ;
+混成語 < konseigo\ ;
+珈琲苑 < kouhiien\ ;
+二部作 < nibusaku\ ;
+総会屋 < soukaiya\ ;
+見返 < mikaeshi\ ;
+仕手戦 < shitesen\ ;
+姫君 < himegimi\ ;
+攻略 < kouryaku\ ;
+結論 < ketsuron\ ;
+奏曲 < soukyoku\ ;
+好好爺 < koukouya\ ;
+税務署 < zeimusho\ ;
+販売機 < hanbaiki\ ;
+霽月 < seigetsu\ ;
+空気孔 < kuukikou\ ;
+疲労感 < hiroukan\ ;
+放水路 < housuiro\ ;
+新暦 < shinreki\ ;
+焼肉 < yakiniku\ ;
+結言 < ketsugen\ ;
+証票 < shouhyou\ ;
+随筆 < zuihitsu\ ;
+外法 < sotonori\ ;
+新春 < shinshun\ ;
+会議所 < kaigisho\ ;
+陸続 < rikuzoku\ ;
+熱熱 < atsuatsu\ ;
+増築 < zouchiku\ ;
+形容語 < keiyougo\ ;
+一回戦 < ikkaisen\ ;
+縮減 < shukugen\ ;
+繁殖 < hanshoku\ ;
+天極 < tenkyoku\ ;
+疑問詞 < gimonshi\ ;
+旧幕 < kyuubaku\ ;
+絹莢 < kinusaya\ ;
+苦労人 < kurounin\ ;
+失格 < shikkaku\ ;
+聖火台 < seikadai\ ;
+日常 < nichijou\ ;
+水位標 < suiihyou\ ;
+悲観論 < hikanron\ ;
+妄語戒 < mougokai\ ;
+雑然 < zatsuzen\ ;
+永小作 < eikosaku\ ;
+炭素鋼 < tansokou\ ;
+繊維束 < senisoku\ ;
+解放区 < kaihouku\ ;
+保守党 < hoshutou\ ;
+放熱 < hounetsu\ ;
+誘殺 < yuusatsu\ ;
+素質 < soshitsu\ ;
+紅一点 < kouitten\ ;
+垂髪 < taregami\ ;
+雁爪 < gandzume\ ;
+縦波 < tatenami\ ;
+診療 < shinryou\ ;
+続続 < zokuzoku\ ;
+爆撃 < bakugeki\ ;
+家庭用 < kateiyou\ ;
+見識 < kenshiki\ ;
+虚空蔵 < kokuuzou\ ;
+誰某 < daresore\ ;
+旋律 < senritsu\ ;
+会計課 < kaikeika\ ;
+熱源 < netsugen\ ;
+勤務者 < kinmusha\ ;
+夜桜 < yozakura\ ;
+文末 < bunmatsu\ ;
+距離感 < kyorikan\ ;
+旧宅 < kyuutaku\ ;
+調教 < choukyou\ ;
+時偶 < tokitama\ ;
+如実 < nyojitsu\ ;
+斎日 < saijitsu\ ;
+熱涙 < netsurui\ ;
+電極 < denkyoku\ ;
+塵箱 < gomibako\ ;
+敏活 < binkatsu\ ;
+開闢 < kaibyaku\ ;
+煥発 < kanpatsu\ ;
+看護法 < kangohou\ ;
+大日 < dainichi\ ;
+催事場 < saijijou\ ;
+鬼兵隊 < kiheitai\ ;
+女子大 < joshidai\ ;
+韓人 < karabito\ ;
+外枠 < sotowaku\ ;
+唯我論 < yuigaron\ ;
+未製品 < miseihin\ ;
+敷板 < shikiita\ ;
+説明 < setsumei\ ;
+無統制 < mutousei\ ;
+縦横 < tateyoko\ ;
+要訣 < youketsu\ ;
+増発 < zouhatsu\ ;
+造船所 < zousenjo\ ;
+身支度 < mijitaku\ ;
+明哲 < meitetsu\ ;
+夜昼 < yoruhiru\ ;
+金本位 < kinhon''i\ ;
+夕月 < yuudzuki\ ;
+多面性 < tamensei\ ;
+大型機 < oogataki\ ;
+方式 < houshiki\ ;
+未開人 < mikaijin\ ;
+門閥 < monbatsu\ ;
+藁屋根 < warayane\ ;
+月世界 < gessekai\ ;
+得意顔 < tokuigao\ ;
+手間隙 < temahima\ ;
+政治犯 < seijihan\ ;
+春先 < harusaki\ ;
+始値 < hajimene\ ;
+洗面器 < senmenki\ ;
+新形 < shingata\ ;
+人文字 < hitomoji\ ;
+模造品 < mozouhin\ ;
+陸相 < rikushou\ ;
+呼吸器 < kokyuuki\ ;
+絹綿 < kinuwata\ ;
+土地鑑 < tochikan\ ;
+牆壁 < shouheki\ ;
+壊滅 < kaimetsu\ ;
+際物 < kiwamono\ ;
+気送管 < kisoukan\ ;
+低金利 < teikinri\ ;
+夭折 < yousetsu\ ;
+英小文字 < eikomoji\ ;
+敵方 < tekigata\ ;
+長長 < naganaga\ ;
+帽子屋 < boushiya\ ;
+御成功 < goseikou\ ;
+珊瑚海 < sangokai\ ;
+約諾 < yakudaku\ ;
+数日 < suujitsu\ ;
+曳光弾 < eikoudan\ ;
+千里眼 < senrigan\ ;
+防縮 < boushuku\ ;
+落下傘 < rakkasan\ ;
+擁立 < youritsu\ ;
+渡航者 < tokousha\ ;
+数数 < kazukazu\ ;
+大所 < oodokoro\ ;
+地鼠 < jinezumi\ ;
+下手人 < geshunin\ ;
+処女林 < shojorin\ ;
+純血 < junketsu\ ;
+事業部 < jigyoubu\ ;
+富山房 < fuzanbou\ ;
+粉飾 < funshoku\ ;
+縦書 < tategaki\ ;
+擦疵 < surikizu\ ;
+塚穴 < tsukaana\ ;
+接待費 < settaihi\ ;
+繊維性 < sen''isei\ ;
+手話法 < shuwahou\ ;
+何処其処 < dokosoko\ ;
+保養地 < hoyouchi\ ;
+照焼 < teriyaki\ ;
+利己心 < rikoshin\ ;
+点火栓 < tenkasen\ ;
+絶筆 < zeppitsu\ ;
+難曲 < nankyoku\ ;
+計略 < keiryaku\ ;
+鎔鉱炉 < youkouro\ ;
+可換群 < kakangun\ ;
+会議場 < kaigijou\ ;
+人非人 < ninpinin\ ;
+見落 < miotoshi\ ;
+炸薬 < sakuyaku\ ;
+花粉管 < kafunkan\ ;
+埋設 < maisetsu\ ;
+過激派 < kagekiha\ ;
+接骨 < sekkotsu\ ;
+陽物 < youbutsu\ ;
+論客 < ronkyaku\ ;
+角笛 < tsunobue\ ;
+熱望 < netsubou\ ;
+溶解度 < youkaido\ ;
+閲読 < etsudoku\ ;
+句読点 < kutouten\ ;
+捜査陣 < sousajin\ ;
+誰彼 < tarekare\ ;
+米食 < beishoku\ ;
+索莫 < sakubaku\ ;
+営利的 < eiriteki\ ;
+被災者 < hisaisha\ ;
+不従順 < fujuujun\ ;
+反射炉 < hansharo\ ;
+雑曲 < zakkyoku\ ;
+佝僂病 < kurubyou\ ;
+太巻 < futomaki\ ;
+新妻 < niidzuma\ ;
+都会人 < tokaijin\ ;
+結紮 < kessatsu\ ;
+呪禁道 < jukondou\ ;
+古版本 < kohanbon\ ;
+測候所 < sokkoujo\ ;
+旧劇 < kyuugeki\ ;
+派遣隊 < hakentai\ ;
+摘芯 < tekishin\ ;
+歓迎宴 < kangeien\ ;
+物事 < monogoto\ ;
+成功裡 < seikouri\ ;
+訳注 < yakuchuu\ ;
+改札 < kaisatsu\ ;
+家庭欄 < kateiran\ ;
+煮沸 < shafutsu\ ;
+大嵐 < ooarashi\ ;
+多変数 < tahensuu\ ;
+男性美 < danseibi\ ;
+雑文 < zatsubun\ ;
+高機能 < koukinou\ ;
+紙花 < kamibana\ ;
+人間苦 < ningenku\ ;
+焼物 < yakimono\ ;
+結節 < kessetsu\ ;
+長軸 < choujiku\ ;
+外庭 < sotoniwa\ ;
+三味線 < shamisen\ ;
+組紐 < kumihimo\ ;
+粒銀 < tsubugin\ ;
+開豁 < kaikatsu\ ;
+縁日 < en''nichi\ ;
+同程度 < douteido\ ;
+夜嵐 < yoarashi\ ;
+数式 < suushiki\ ;
+好塩菌 < kouenkin\ ;
+送気管 < soukikan\ ;
+犠牲者 < giseisha\ ;
+花紋板 < kamonban\ ;
+電子化 < denshika\ ;
+牛乳 < gyuunyuu\ ;
+尽未来 < jinmirai\ ;
+句読法 < kutouhou\ ;
+好天気 < koutenki\ ;
+長足 < chousoku\ ;
+塩物 < shiomono\ ;
+片側 < katagawa\ ;
+浄化槽 < joukasou\ ;
+雀斑 < sobakasu\ ;
+有声音 < yuuseion\ ;
+雲形 < kumogata\ ;
+経穴 < keiketsu\ ;
+反作用 < hansayou\ ;
+撞着 < douchaku\ ;
+全自動 < zenjidou\ ;
+反対派 < hantaiha\ ;
+旧作 < kyuusaku\ ;
+紅花 < benibana\ ;
+処女性 < shojosei\ ;
+手間賃 < temachin\ ;
+陰湿 < inshitsu\ ;
+編曲 < henkyoku\ ;
+組立 < kumitate\ ;
+細細 < hosoboso\ ;
+試掘 < shikutsu\ ;
+塩焼 < shioyaki\ ;
+外局 < gaikyoku\ ;
+増殖 < zoushoku\ ;
+旧人 < furubito\ ;
+一回分 < ikkaibun\ ;
+罹災者 < risaisha\ ;
+訳業 < yakugyou\ ;
+排雪 < haisetsu\ ;
+粛軍 < shukugun\ ;
+熱感 < netsukan\ ;
+失墜 < shittsui\ ;
+国鳥 < kokuchou\ ;
+貯炭所 < chotanjo\ ;
+諸共 < morotomo\ ;
+有人化 < yuujinka\ ;
+外客 < gaikyaku\ ;
+印象派 < inshouha\ ;
+熱情 < netsujou\ ;
+外孫 < sotomago\ ;
+糖蜜 < toumitsu\ ;
+難役 < nan''yaku\ ;
+塗物 < nurimono\ ;
+版下 < hanshita\ ;
+槍騎兵 < soukihei\ ;
+除湿 < joshitsu\ ;
+逃避行 < touhikou\ ;
+内火艇 < naikatei\ ;
+統率 < tousotsu\ ;
+旅先 < tabisaki\ ;
+細筆 < saihitsu\ ;
+雪嶺 < setsurei\ ;
+絹物 < kinumono\ ;
+利権屋 < riken''ya\ ;
+訳柄 < wakegara\ ;
+襟腰 < erikoshi\ ;
+結着 < ketchaku\ ;
+緑林 < ryokurin\ ;
+閲兵台 < eppeidai\ ;
+結盟 < ketsumei\ ;
+混種語 < konshugo\ ;
+熱弁 < netsuben\ ;
+透過性 < toukasei\ ;
+会見記 < kaikenki\ ;
+雑念 < zatsunen\ ;
+討死 < uchijini\ ;
+相似点 < soujiten\ ;
+螺子釘 < nejikugi\ ;
+処女峰 < shojohou\ ;
+看護師 < kangoshi\ ;
+支払 < shiharai\ ;
+親睦 < shinboku\ ;
+堀端 < horibata\ ;
+陥没 < kanbotsu\ ;
+角牛 < kakugyuu\ ;
+雑役 < zatsueki\ ;
+雪山 < yukiyama\ ;
+有頂点 < uchouten\ ;
+諸人 < morobito\ ;
+一等星 < ittousei\ ;
+下水道 < gesuidou\ ;
+非人情 < hininjou\ ;
+陣没 < jinbotsu\ ;
+父上 < chichiue\ ;
+雪害 < setsugai\ ;
+長袖 < nagasode\ ;
+防熱 < bounetsu\ ;
+主義者 < shugisha\ ;
+縄張 < nawabari\ ;
+派遣軍 < hakengun\ ;
+再提案 < saiteian\ ;
+美意識 < biishiki\ ;
+裏道 < uramichi\ ;
+隣接 < rinsetsu\ ;
+継母 < mamahaha\ ;
+大喝 < daikatsu\ ;
+総本家 < souhonke\ ;
+度外視 < dogaishi\ ;
+出来具合 < dekiguai\ ;
+露出 < roshutsu\ ;
+訪日 < hounichi\ ;
+遠征隊 < enseitai\ ;
+塩水 < shiomizu\ ;
+理想型 < risoukei\ ;
+敷地 < shikichi\ ;
+仮分数 < kabunsuu\ ;
+隆昌 < ryuushou\ ;
+新修 < shinshuu\ ;
+助数詞 < josuushi\ ;
+精算所 < seisanjo\ ;
+大吉 < daikichi\ ;
+多面体 < tamentai\ ;
+新作 < shinsaku\ ;
+関脇 < sekiwake\ ;
+燭台 < shokudai\ ;
+炭窯 < sumigama\ ;
+電圧 < den''atsu\ ;
+雨女 < ameon''na\ ;
+激震 < gekishin\ ;
+変圧 < hen''atsu\ ;
+形骸化 < keigaika\ ;
+欧米人 < oubeijin\ ;
+大卒 < daisotsu\ ;
+経師屋 < kyoujiya\ ;
+誤変換 < gohenkan\ ;
+還付金 < kanpukin\ ;
+壁役 < kabeyaku\ ;
+掛軸 < kakejiku\ ;
+縄尻 < nawajiri\ ;
+裲襠 < uchikake\ ;
+基督 < kirisuto\ ;
+晩御飯 < bangohan\ ;
+腕自慢 < udejiman\ ;
+浄水器 < jousuiki\ ;
+助教諭 < jokyouyu\ ;
+大別 < taibetsu\ ;
+斉列 < seiretsu\ ;
+雪国 < yukiguni\ ;
+処女地 < shojochi\ ;
+大冊 < taisatsu\ ;
+緻密 < chimitsu\ ;
+変哲 < hentetsu\ ;
+糸竹 < shichiku\ ;
+開脚 < kaikyaku\ ;
+支局 < shikyoku\ ;
+失保 < shitsuho\ ;
+利用者 < riyousha\ ;
+終熄 < shuusoku\ ;
+無精卵 < museiran\ ;
+鱩 < hatahata\ ;
+無関係 < mukankei\ ;
+外力 < gairyoku\ ;
+調伏 < choubuku\ ;
+雛型 < hinagata\ ;
+正字法 < seijihou\ ;
+要略 < youryaku\ ;
+軍医監 < gun''ikan\ ;
+鯑 < kazunoko\ ;
+警世家 < keiseika\ ;
+来学期 < raigakki\ ;
+映画評 < eigahyou\ ;
+批判者 < hihansha\ ;
+門脈 < monmyaku\ ;
+平叙文 < heijobun\ ;
+褐色 < kasshoku\ ;
+三重苦 < sanjuuku\ ;
+魁 < sakigake\ ;
+模倣者 < mohousha\ ;
+鬣 < tategami\ ;
+電力 < denryoku\ ;
+予選会 < yosenkai\ ;
+演奏会 < ensoukai\ ;
+数列 < suuretsu\ ;
+放埒 < houratsu\ ;
+外側 < sotogawa\ ;
+表門 < omotemon\ ;
+数冊 < suusatsu\ ;
+雲助 < kumosuke\ ;
+雑嚢 < zatsunou\ ;
+不活性 < fukassei\ ;
+濁酒 < doburoku\ ;
+土質 < doshitsu\ ;
+開口部 < kaikoubu\ ;
+敵側 < tekigawa\ ;
+双胴機 < soudouki\ ;
+訥弁 < totsuben\ ;
+裏表 < uraomote\ ;
+読了 < dokuryou\ ;
+灰篩 < haifurui\ ;
+粥腹 < kayubara\ ;
+須弥山 < shumisen\ ;
+瀉血 < shaketsu\ ;
+偽造罪 < gizouzai\ ;
+堅炭 < katazumi\ ;
+綿弓 < watayumi\ ;
+餞 < hanamuke\ ;
+垂耳 < taremimi\ ;
+詰問 < kitsumon\ ;
+秀画家 < shuugaka\ ;
+交代員 < koutaiin\ ;
+売却 < baikyaku\ ;
+採血 < saiketsu\ ;
+縦列 < juuretsu\ ;
+赤電話 < akadenwa\ ;
+有期刑 < yuukikei\ ;
+口話法 < kouwahou\ ;
+戸主権 < koshuken\ ;
+絶望 < zetsubou\ ;
+公安官 < kouankan\ ;
+撃沈 < gekichin\ ;
+角柱 < kakuchuu\ ;
+国辱 < kokujoku\ ;
+歯牙状 < shigajou\ ;
+伝声器 < denseiki\ ;
+頑 < katakuna\ ;
+保険金 < hokenkin\ ;
+士卒 < shisotsu\ ;
+指数部 < shisuubu\ ;
+豪華船 < goukasen\ ;
+丸暗記 < maruanki\ ;
+地袋 < jibukuro\ ;
+売出 < uridashi\ ;
+緊密 < kinmitsu\ ;
+基準点 < kijunten\ ;
+揺篭 < yurikago\ ;
+雪像 < setsuzou\ ;
+紅玉 < kougyoku\ ;
+米蔵 < komegura\ ;
+後援会 < kouenkai\ ;
+潮風 < shiokaze\ ;
+型紙 < katagami\ ;
+県議会 < kengikai\ ;
+訪客 < houkyaku\ ;
+行在所 < anzaisho\ ;
+隼 < hayabusa\ ;
+許嫁 < iinazuke\ ;
+捏造 < netsuzou\ ;
+口語文 < kougobun\ ;
+寝煙草 < netabako\ ;
+断破壊 < danhakai\ ;
+陵 < misasagi\ ;
+磁鉄鉱 < jitekkou\ ;
+円為替 < engawase\ ;
+看護兵 < kangohei\ ;
+営業部 < eigyoubu\ ;
+閏秒 < uruubyou\ ;
+不消化 < fushouka\ ;
+潤飾 < junshoku\ ;
+拳骨 < genkotsu\ ;
+綿密 < menmitsu\ ;
+不徳義 < futokugi\ ;
+地吹雪 < jifubuki\ ;
+激越 < gekietsu\ ;
+須弥壇 < shumidan\ ;
+綿実 < menjitsu\ ;
+佐幕派 < sabakuha\ ;
+閊 < tsukaeru\ ;
+頓痴気 < tonchiki\ ;
+国賊 < kokuzoku\ ;
+多数党 < tasuutou\ ;
+点滅 < tenmetsu\ ;
+激賞 < gekishou\ ;
+採油権 < saiyuken\ ;
+来世紀 < raiseiki\ ;
+隔壁 < kakuheki\ ;
+山水画 < sansuiga\ ;
+掃除人 < soujinin\ ;
+意味部門 < imibumon\ ;
+一等地 < ittouchi\ ;
+税務官 < zeimukan\ ;
+看護人 < kangonin\ ;
+半切符 < hankippu\ ;
+圧瀘器 < atsuroki\ ;
+緑地 < ryokuchi\ ;
+基準法 < kijunhou\ ;
+節電 < setsuden\ ;
+受講者 < jukousha\ ;
+測距儀 < sokkyogi\ ;
+粘粘 < nebaneba\ ;
+冷凍機 < reitouki\ ;
+鋸 < nokogiri\ ;
+等距離 < toukyori\ ;
+炎熱 < en''netsu\ ;
+国許 < kunimoto\ ;
+不名数 < fumeisuu\ ;
+開発 < kaihatsu\ ;
+試運転 < shiunten\ ;
+義勇兵 < giyuuhei\ ;
+親画面 < oyagamen\ ;
+拒否権 < kyohiken\ ;
+二番線 < nibansen\ ;
+営業費 < eigyouhi\ ;
+相似形 < soujikei\ ;
+罹災民 < risaimin\ ;
+寄生木 < yadorigi\ ;
+親族 < shinzoku\ ;
+火薬庫 < kayakuko\ ;
+赤頭巾 < akazukin\ ;
+蜥蜴座 < tokageza\ ;
+警報音 < keihouon\ ;
+粉粉 < konagona\ ;
+大蜥蜴 < ootokage\ ;
+雇人 < yatoinin\ ;
+更生期 < kouseiki\ ;
+設問 < setsumon\ ;
+土左衛門 < dozaemon\ ;
+覚書 < oboegaki\ ;
+疑問文 < gimonbun\ ;
+荷為替 < nigawase\ ;
+編入 < hen''nyuu\ ;
+拒食 < kyoshoku\ ;
+腎臓炎 < jinzouen\ ;
+累月 < ruigetsu\ ;
+垂直 < suichoku\ ;
+寄贈者 < kizousha\ ;
+家庭内 < kateinai\ ;
+紅殻 < benigara\ ;
+落語家 < rakugoka\ ;
+無節操 < musessou\ ;
+角店 < kadomise\ ;
+練乳 < ren''nyuu\ ;
+容疑者 < yougisha\ ;
+米糠 < komenuka\ ;
+展開図 < tenkaizu\ ;
+私生児 < shiseiji\ ;
+躾 < shitsuke\ ;
+総力 < souryoku\ ;
+大手筋 < ootesuji\ ;
+累日 < ruijitsu\ ;
+公定価 < kouteika\ ;
+気分屋 < kibun''ya\ ;
+在職 < zaishoku\ ;
+埋没 < maibotsu\ ;
+一等兵 < ittouhei\ ;
+下水管 < gesuikan\ ;
+整数比 < seisuuhi\ ;
+粘着 < nenchaku\ ;
+糞溜 < kusodame\ ;
+築造 < chikuzou\ ;
+社務所 < shamusho\ ;
+触媒 < shokubai\ ;
+高層雲 < kousouun\ ;
+常套語 < joutougo\ ;
+船外機 < sengaiki\ ;
+隊列 < tairetsu\ ;
+双暗車 < souansha\ ;
+索敵 < sakuteki\ ;
+旅客機 < ryokakki\ ;
+増刷 < zousatsu\ ;
+緑便 < ryokuben\ ;
+潮足 < shioashi\ ;
+閲歴 < etsureki\ ;
+運営者 < un''eisha\ ;
+恣意的 < shiiteki\ ;
+納札 < nousatsu\ ;
+破天荒 < hatenkou\ ;
+熱帯夜 < nettaiya\ ;
+達成度 < tasseido\ ;
+多角形 < takakkei\ ;
+振袖 < furisode\ ;
+糟汁 < kasujiru\ ;
+入会権 < iriaiken\ ;
+千葉県 < chibaken\ ;
+五月雨 < samidare\ ;
+準会員 < junkaiin\ ;
+諺 < kotowaza\ ;
+約束 < yakusoku\ ;
+水曜日 < suiyoubi\ ;
+渇水期 < kassuiki\ ;
+抑鬱 < yokuutsu\ ;
+競馬場 < keibajou\ ;
+指貫 < yubinuki\ ;
+鳩小屋 < hatogoya\ ;
+激臭 < gekishuu\ ;
+不正視 < fuseishi\ ;
+見所 < midokoro\ ;
+四半期 < shihanki\ ;
+粗率 < araritsu\ ;
+作用点 < sayouten\ ;
+遊園地 < yuuenchi\ ;
+軌道船 < kidousen\ ;
+弁理士 < benrishi\ ;
+終幕 < shuumaku\ ;
+襲撃 < shuugeki\ ;
+麻酔銃 < masuijuu\ ;
+褌 < fundoshi\ ;
+木螺子 < mokuneji\ ;
+結局 < kekkyoku\ ;
+歩数計 < hosuukei\ ;
+主題歌 < shudaika\ ;
+筋骨 < sujibone\ ;
+正会員 < seikaiin\ ;
+微分法 < bibunhou\ ;
+動員令 < douinrei\ ;
+観客 < kankyaku\ ;
+接着 < setchaku\ ;
+青瓦台 < seigadai\ ;
+陣列 < jinretsu\ ;
+渡船場 < tosenjou\ ;
+土筆 < tsukushi\ ;
+粛然 < shukuzen\ ;
+意識下 < ishikika\ ;
+細引 < hosobiki\ ;
+親局 < oyakyoku\ ;
+保護国 < hogokoku\ ;
+同性愛 < douseiai\ ;
+油圧器 < yuatsuki\ ;
+燕青拳 < enseiken\ ;
+幼年期 < younenki\ ;
+豪華版 < goukaban\ ;
+表芸 < omotegei\ ;
+医原病 < igenbyou\ ;
+電話線 < denwasen\ ;
+冷凍庫 < reitouko\ ;
+還付税 < kanpuzei\ ;
+弁護者 < bengosha\ ;
+装着 < souchaku\ ;
+電話網 < denwamou\ ;
+登山道 < tozandou\ ;
+蛤 < hamaguri\ ;
+濃縮 < noushuku\ ;
+意味原理 < imigenri\ ;
+提灯 < chouchin\ ;
+阿房鳥 < ahoudori\ ;
+予備的 < yobiteki\ ;
+裏町 < uramachi\ ;
+土神 < uchigami\ ;
+扶助料 < fujoryou\ ;
+堀川 < horikawa\ ;
+猿知恵 < sarudjie\ ;
+地蔵顔 < jizougao\ ;
+絶命 < zetsumei\ ;
+陋劣 < rouretsu\ ;
+作業場 < sagyouba\ ;
+筆順 < hitsujun\ ;
+空相場 < kuusouba\ ;
+袴着 < hakamagi\ ;
+国籍 < kokuseki\ ;
+挽肉 < hikiniku\ ;
+混合語 < kongougo\ ;
+妥協案 < dakyouan\ ;
+細密 < saimitsu\ ;
+間柄 < aidagara\ ;
+無抵抗 < muteikou\ ;
+撃墜 < gekitsui\ ;
+葉節点 < hasetten\ ;
+他動詞 < tadoushi\ ;
+映画狂 < eigakyou\ ;
+国策 < kokusaku\ ;
+法華経 < hokekyou\ ;
+筆陣 < hitsujin\ ;
+酢料理 < suryouri\ ;
+政府米 < seifumai\ ;
+結団 < ketsudan\ ;
+螢雪 < keisetsu\ ;
+好結果 < koukekka\ ;
+活性化 < kasseika\ ;
+助言者 < jogonsha\ ;
+裏千家 < urasenke\ ;
+舎利塔 < sharitou\ ;
+蝶鮫 < chouzame\ ;
+搦手 < karamete\ ;
+不祝儀 < bushuugi\ ;
+団結 < danketsu\ ;
+過渡的 < katoteki\ ;
+陶芸家 < tougeika\ ;
+紙屑 < kamikuzu\ ;
+作業員 < sagyouin\ ;
+血色 < kesshoku\ ;
+多摩川 < tamagawa\ ;
+微苦笑 < bikushou\ ;
+欺瞞者 < gimansha\ ;
+門札 < monsatsu\ ;
+立法府 < rippoufu\ ;
+被災地 < hisaichi\ ;
+猛打者 < moudasha\ ;
+絶倫 < zetsurin\ ;
+型枠 < katawaku\ ;
+不祥事 < fushouji\ ;
+結果論 < kekkaron\ ;
+闇市 < yamiichi\ ;
+融雪 < yuusetsu\ ;
+簒立 < sanritsu\ ;
+下水溝 < gesuikou\ ;
+水風呂 < mizuburo\ ;
+方位角 < houikaku\ ;
+防塵着 < boujingi\ ;
+既視想 < kishikan\ ;
+地熱 < chinetsu\ ;
+聾 < mimishii\ ;
+口語体 < kougotai\ ;
+幹部会 < kanbukai\ ;
+交際費 < kousaihi\ ;
+筋金 < sujigane\ ;
+武士道 < bushidou\ ;
+魔方陣 < mahoujin\ ;
+算術 < sanjutsu\ ;
+葡萄酒 < budoushu\ ;
+長旅 < nagatabi\ ;
+双子座 < futagoza\ ;
+脱水機 < dassuiki\ ;
+火口原 < kakougen\ ;
+低次元 < teijigen\ ;
+防人 < sakimori\ ;
+厳冬期 < gentouki\ ;
+不退転 < futaiten\ ;
+蟻蜂 < aribachi\ ;
+手土産 < temiyage\ ;
+危険視 < kikenshi\ ;
+衝立 < tsuitate\ ;
+舞踊団 < butoudan\ ;
+不決定 < fukettei\ ;
+回帰線 < kaikisen\ ;
+綴 < tsudzuri\ ;
+区民税 < kuminzei\ ;
+何番目 < nanbanme\ ;
+簡略 < kanryaku\ ;
+脱気水 < dakkisui\ ;
+刑務所 < keimusho\ ;
+健啖家 < kentanka\ ;
+破壊者 < hakaisha\ ;
+自意識 < jiishiki\ ;
+七十路 < nanasoji\ ;
+観自在 < kanjizai\ ;
+遠心機 < enshinki\ ;
+捨猫 < suteneko\ ;
+朱印船 < shuinsen\ ;
+洗濯機 < sentakki\ ;
+不動産 < fudousan\ ;
+蟀谷 < komekami\ ;
+噴気孔 < funkikou\ ;
+蟯虫 < gyouchuu\ ;
+蝦夷松 < ezomatsu\ ;
+鬼刑事 < onikeiji\ ;
+感嘆符 < kantanfu\ ;
+法医学 < houigaku\ ;
+粉末 < funmatsu\ ;
+篁 < takamura\ ;
+埒外 < rachigai\ ;
+鳥小屋 < torigoya\ ;
+坪数 < tsubosuu\ ;
+筍 < takenoko\ ;
+自営業 < jieigyou\ ;
+糞尿 < fun''nyou\ ;
+表白 < hyouhaku\ ;
+精錬所 < seirenjo\ ;
+四百 < yonhyaku\ ;
+細別 < saibetsu\ ;
+手鏡 < tekagami\ ;
+黄菖蒲 < kishoubu\ ;
+亜大陸 < atairiku\ ;
+備考欄 < bikouran\ ;
+蠏股 < ganimata\ ;
+堀割 < horiwari\ ;
+片手間 < katatema\ ;
+人間味 < ningenmi\ ;
+関守 < sekimori\ ;
+無意識 < muishiki\ ;
+投資家 < toushika\ ;
+下水板 < gesuiita\ ;
+血税 < ketsuzei\ ;
+馬蹄形 < bateikei\ ;
+全音符 < zen''onpu\ ;
+執務 < shitsumu\ ;
+捕物 < torimono\ ;
+成香 < narikyou\ ;
+高輝度 < koukidou\ ;
+米松 < beimatsu\ ;
+節糸 < fushiito\ ;
+不可侵 < fukashin\ ;
+黄口児 < koukouji\ ;
+分科会 < bunkakai\ ;
+節米 < setsumai\ ;
+蜘蛛膜 < kumomaku\ ;
+事業家 < jigyouka\ ;
+承諾 < shoudaku\ ;
+入会地 < iriaichi\ ;
+筆談 < hitsudan\ ;
+図書館 < toshokan\ ;
+開局 < kaikyoku\ ;
+製版所 < seihanjo\ ;
+東大寺 < toudaiji\ ;
+鎌首 < kamakubi\ ;
+立食 < risshoku\ ;
+中位数 < chuuisuu\ ;
+衆目 < shuumoku\ ;
+筆触 < hisshoku\ ;
+参賀者 < sangasha\ ;
+批准書 < hijunsho\ ;
+垂幕 < taremaku\ ;
+立願 < ritsugan\ ;
+摂動 < setsudou\ ;
+舞踏会 < butoukai\ ;
+精密 < seimitsu\ ;
+理化学 < rikagaku\ ;
+節穴 < fushiana\ ;
+登山者 < tozansha\ ;
+助教授 < jokyouju\ ;
+刑務官 < keimukan\ ;
+癸 < mizunoto\ ;
+政務官 < seimukan\ ;
+節税 < setsuzei\ ;
+正義感 < seigikan\ ;
+糸口 < itoguchi\ ;
+医薬品 < iyakuhin\ ;
+化粧着 < keshougi\ ;
+手車 < teguruma\ ;
+火達磨 < hidaruma\ ;
+長尻 < nagajiri\ ;
+濁流 < dakuryuu\ ;
+素人 < shirouto\ ;
+不徹底 < futettei\ ;
+激流 < gekiryuu\ ;
+執事 < shitsuji\ ;
+留守宅 < rusutaku\ ;
+所轄 < shokatsu\ ;
+拒絶 < kyozetsu\ ;
+凡試合 < bonshiai\ ;
+万歩計 < manpokei\ ;
+二枚貝 < nimaigai\ ;
+排日 < hainichi\ ;
+用水路 < yousuiro\ ;
+系列 < keiretsu\ ;
+衰滅 < suimetsu\ ;
+時計店 < tokeiten\ ;
+固定子 < koteishi\ ;
+有煙炭 < yuuentan\ ;
+裏鬼門 < urakimon\ ;
+採掘 < saikutsu\ ;
+御母様 < okaasama\ ;
+埒内 < rachinai\ ;
+道祖神 < dousojin\ ;
+在日 < zainichi\ ;
+合法化 < gouhouka\ ;
+漁色 < gyoshoku\ ;
+拙筆 < seppitsu\ ;
+純一 < jun''itsu\ ;
+首都圏 < shutoken\ ;
+三毛猫 < mikeneko\ ;
+探知機 < tanchiki\ ;
+死火山 < shikazan\ ;
+色模様 < iromoyou\ ;
+糸電話 < itodenwa\ ;
+重大化 < juudaika\ ;
+搬入 < han''nyuu\ ;
+関取 < sekitori\ ;
+三段目 < sandanme\ ;
+祭壇座 < saidanza\ ;
+搾乳 < sakunyuu\ ;
+烏帽子名 < eboshina\ ;
+漫筆 < manpitsu\ ;
+兄弟子 < anideshi\ ;
+運命論 < unmeiron\ ;
+普通科 < futsuuka\ ;
+上古史 < joukoshi\ ;
+預貯金 < yochokin\ ;
+抜群 < batsugun\ ;
+妥当性 < datousei\ ;
+国柄 < kunigara\ ;
+葡萄色 < budouiro\ ;
+排水路 < haisuiro\ ;
+横断面 < oudanmen\ ;
+整経機 < seikeiki\ ;
+手袋 < tebukuro\ ;
+閣僚 < kakuryou\ ;
+簡体字 < kantaiji\ ;
+風邪気味 < kazegimi\ ;
+可溶片 < kayouhen\ ;
+儀仗兵 < gijouhei\ ;
+陸屋根 < rokuyane\ ;
+籤引 < kujibiki\ ;
+座談会 < zadankai\ ;
+帆前船 < homaesen\ ;
+指話法 < shiwahou\ ;
+偽造品 < gizouhin\ ;
+筋肉 < kin''niku\ ;
+世帯数 < setaisuu\ ;
+一周期 < isshuuki\ ;
+中耳炎 < chuujien\ ;
+窓際 < madogiwa\ ;
+富士通 < fujitsuu\ ;
+家屋税 < kaokuzei\ ;
+間八 < kanpachi\ ;
+笹舟 < sasabune\ ;
+機動隊 < kidoutai\ ;
+防火線 < boukasen\ ;
+教護院 < kyougoin\ ;
+接岸 < setsugan\ ;
+戯言 < tawagoto\ ;
+螺子山 < nejiyama\ ;
+乳児院 < nyuujiin\ ;
+血液 < ketsueki\ ;
+腕時計 < udedokei\ ;
+蠏玉 < kanitama\ ;
+血涙 < ketsurui\ ;
+戸袋 < tobukuro\ ;
+朱印状 < shuinjou\ ;
+推察 < suisatsu\ ;
+真意義 < shin''igi\ ;
+遊技場 < yuugijou\ ;
+勧工場 < kankouba\ ;
+接客 < sekkyaku\ ;
+三冠馬 < sankanba\ ;
+嗅覚 < kyuukaku\ ;
+天才児 < tensaiji\ ;
+逆茂木 < sakamogi\ ;
+折節 < orifushi\ ;
+補充兵 < hojuuhei\ ;
+建議者 < kengisha\ ;
+常夜灯 < jouyatou\ ;
+潤滑 < junkatsu\ ;
+鎌足 < kamaashi\ ;
+草屋根 < kusayane\ ;
+潮流 < chouryuu\ ;
+四月 < shigatsu\ ;
+嘲笑 < choushou\ ;
+権威者 < ken''isha\ ;
+窮追 < kyuutsui\ ;
+窮迫 < kyuuhaku\ ;
+握力 < akuryoku\ ;
+砕岩機 < saiganki\ ;
+葡萄糖 < budoutou\ ;
+白亜館 < hakuakan\ ;
+混和性 < konwasei\ ;
+左顧右眄 < sakouben\ ;
+化粧殿 < kewaiden\ ;
+鍛鉄 < tantetsu\ ;
+揚力 < youryoku\ ;
+千分比 < senbunhi\ ;
+竹薮 < takeyabu\ ;
+才色 < saishoku\ ;
+時計台 < tokeidai\ ;
+同母姉 < douboshi\ ;
+立論 < ritsuron\ ;
+米坪 < beitsubo\ ;
+楠 < kusunoki\ ;
+筆箱 < fudebako\ ;
+測量 < sokuryou\ ;
+等等 < nadonado\ ;
+立言 < ritsugen\ ;
+黄水仙 < kisuisen\ ;
+粛党 < shukutou\ ;
+弱味噌 < yowamiso\ ;
+裸出 < rashutsu\ ;
+鍋釜 < nabekama\ ;
+留守中 < rusuchuu\ ;
+衝撃 < shougeki\ ;
+混雑 < konzatsu\ ;
+小児科 < shounika\ ;
+長久 < choukyuu\ ;
+三十戸 < sanjikko\ ;
+電離層 < denrisou\ ;
+高踏派 < koutouha\ ;
+理工系 < rikoukei\ ;
+無礼講 < bureikou\ ;
+地境 < djizakai\ ;
+挿抜 < soubatsu\ ;
+仮名文字 < kanamoji\ ;
+不十分 < fujuubun\ ;
+哺乳期 < honyuuki\ ;
+石油王 < sekiyuou\ ;
+衣手 < koromode\ ;
+御利益 < goriyaku\ ;
+投書家 < toushoka\ ;
+遺留品 < iryuuhin\ ;
+蛸足 < takoashi\ ;
+遺伝病 < idenbyou\ ;
+揚炭機 < youtanki\ ;
+非変換 < hihenkan\ ;
+改正案 < kaiseian\ ;
+高高度 < koukoudo\ ;
+経産婦 < keisanpu\ ;
+接合 < setsugou\ ;
+裏口 < uraguchi\ ;
+抑留 < yokuryuu\ ;
+赤裸裸 < sekirara\ ;
+混合機 < kongouki\ ;
+潮時 < shiodoki\ ;
+寄贈品 < kizouhin\ ;
+濃密 < noumitsu\ ;
+夜行性 < yakousei\ ;
+前衛派 < zen''eiha\ ;
+未決算 < mikessan\ ;
+国学 < kokugaku\ ;
+漠漠 < bakubaku\ ;
+揉事 < momegoto\ ;
+主要部 < shuyoubu\ ;
+避寒地 < hikanchi\ ;
+水垢離 < mizugori\ ;
+委託生 < itakusei\ ;
+警報機 < keihouki\ ;
+温罨法 < on''anpou\ ;
+対応版 < taiouban\ ;
+喇嘛教 < ramakyou\ ;
+遺留分 < iryuubun\ ;
+昆布茶 < konbucha\ ;
+鼻髭 < hanahige\ ;
+乗算器 < jouzanki\ ;
+立葵 < tachiaoi\ ;
+粉乳 < fun''nyuu\ ;
+鼻高 < hanataka\ ;
+葬儀社 < sougisha\ ;
+判検事 < hankenji\ ;
+喀血 < kakketsu\ ;
+特異点 < tokuiten\ ;
+保険屋 < hoken''ya\ ;
+投物 < nagemono\ ;
+地卵 < jitamago\ ;
+不都合 < futsugou\ ;
+所持金 < shojikin\ ;
+虎河豚 < torafugu\ ;
+技能者 < ginousha\ ;
+抗議文 < kougibun\ ;
+袖垣 < sodegaki\ ;
+既製品 < kiseihin\ ;
+基礎的 < kisoteki\ ;
+深酒 < fukazake\ ;
+貝細工 < kaizaiku\ ;
+黒百合 < kuroyuri\ ;
+空豆 < soramame\ ;
+茶菓子 < chagashi\ ;
+鼻風 < hanakaze\ ;
+米仏 < beifutsu\ ;
+否定文 < hiteibun\ ;
+捕失 < hoshitsu\ ;
+抄物 < shoumono\ ;
+竹簡 < chikukan\ ;
+抹殺 < massatsu\ ;
+弁護士 < bengoshi\ ;
+手裏剣 < shuriken\ ;
+銀時計 < gindokei\ ;
+三連符 < sanrenpu\ ;
+裏付 < uradzuke\ ;
+唐鋤 < karasuki\ ;
+圧出 < asshutsu\ ;
+立脚 < rikkyaku\ ;
+竹箆 < takebera\ ;
+国国 < kuniguni\ ;
+簒奪 < sandatsu\ ;
+均一 < kin''itsu\ ;
+漏泄 < rousetsu\ ;
+鼻革 < hanagawa\ ;
+空説 < kuusetsu\ ;
+小切子 < kokiriko\ ;
+搭乗員 < toujouin\ ;
+世界観 < sekaikan\ ;
+圧入 < atsunyuu\ ;
+挙式 < kyoshiki\ ;
+空言 < soragoto\ ;
+唐金 < karakane\ ;
+倉庫番 < soukoban\ ;
+虎鬚 < torahige\ ;
+溶発 < youhatsu\ ;
+滴滴 < tekiteki\ ;
+漂流 < hyouryuu\ ;
+鏑矢 < kaburaya\ ;
+文科系 < bunkakei\ ;
+能文家 < noubunka\ ;
+弁護団 < bengodan\ ;
+巫 < kan''nagi\ ;
+銀世界 < ginsekai\ ;
+拙文 < setsubun\ ;
+螢火 < hotarubi\ ;
+匈牙利 < hangarii\ ;
+才略 < sairyaku\ ;
+銀鼠 < gin''nezu\ ;
+猿真似 < sarumane\ ;
+猪口才 < chokozai\ ;
+鋳物師 < imonoshi\ ;
+無鉄砲 < muteppou\ ;
+同分母 < doubunbo\ ;
+国原 < kunibara\ ;
+未消化 < mishouka\ ;
+蛞蝓 < namekuji\ ;
+空蝉 < utsusemi\ ;
+築庭 < chikutei\ ;
+篤学 < tokugaku\ ;
+広東語 < kantongo\ ;
+寿 < kotobuki\ ;
+一私人 < isshijin\ ;
+融熱 < yuunetsu\ ;
+漢蔵語 < kanzougo\ ;
+二人目 < futarime\ ;
+富士絹 < fujiginu\ ;
+肛門科 < koumonka\ ;
+静電気 < seidenki\ ;
+鍋蓋 < nabebuta\ ;
+原動機 < gendouki\ ;
+乾船渠 < kandokku\ ;
+鼓吹者 < kosuisha\ ;
+大和煮 < yamatoni\ ;
+筆洗 < fudearai\ ;
+茶道具 < chadougu\ ;
+困却 < konkyaku\ ;
+懸絶 < kenzetsu\ ;
+排気管 < haikikan\ ;
+黒黴 < kurokabi\ ;
+当事者 < toujisha\ ;
+墓誌銘 < boshimei\ ;
+黒麦 < kuromugi\ ;
+短水路 < tansuiro\ ;
+成程 < naruhodo\ ;
+喫茶店 < kissaten\ ;
+時間帯 < jikantai\ ;
+無水酸 < musuisan\ ;
+才物 < saibutsu\ ;
+黒鷺 < kurosagi\ ;
+鉤鼻 < kagibana\ ;
+破防法 < habouhou\ ;
+混血 < konketsu\ ;
+箱庭 < hakoniwa\ ;
+合歓木 < nemunoki\ ;
+拙悪 < setsuaku\ ;
+聖歌隊 < seikatai\ ;
+黒鴨 < kurogamo\ ;
+銀髪 < ginpatsu\ ;
+蛆虫 < ujimushi\ ;
+印紙税 < inshizei\ ;
+蠍座 < sasoriza\ ;
+袖丈 < sodetake\ ;
+戦略 < senryaku\ ;
+文房具 < bunbougu\ ;
+保管金 < hokankin\ ;
+回勅 < kaichoku\ ;
+最多数 < saitasuu\ ;
+不透明 < futoumei\ ;
+栽培所 < saibaijo\ ;
+林檎酒 < ringoshu\ ;
+国人 < kunibito\ ;
+母細胞 < bosaibou\ ;
+好打者 < koudasha\ ;
+円筒形 < entoukei\ ;
+摂関家 < sekkanke\ ;
+正規軍 < seikigun\ ;
+浜風 < hamakaze\ ;
+常套句 < joutouku\ ;
+竪琴 < tategoto\ ;
+渋茶 < shibucha\ ;
+未決済 < mikessai\ ;
+蚰蜒 < gejigeji\ ;
+納戸色 < nandoiro\ ;
+抗日 < kounichi\ ;
+非線形 < hisenkei\ ;
+風呂釜 < furogama\ ;
+弁護人 < bengonin\ ;
+渋色 < shibuiro\ ;
+鎮守府 < chinjufu\ ;
+一張羅 < itchoura\ ;
+子会社 < kogaisha\ ;
+不凍港 < futoukou\ ;
+活魚 < katsugyo\ ;
+卵塔場 < rantouba\ ;
+中央部 < chuuoubu\ ;
+不凍液 < futoueki\ ;
+天秤座 < tenbinza\ ;
+空耳 < soramimi\ ;
+危険性 < kikensei\ ;
+不凍海 < futoukai\ ;
+大真面目 < oomajime\ ;
+登山帽 < tozanbou\ ;
+銭金 < zenikane\ ;
+煎豆腐 < iridoufu\ ;
+券売機 < kenbaiki\ ;
+時間外 < jikangai\ ;
+拝察 < haisatsu\ ;
+気候帯 < kikoutai\ ;
+楽器店 < gakkiten\ ;
+承服 < shoufuku\ ;
+検非違使 < kebiishi\ ;
+截然 < setsuzen\ ;
+龍舟 < ryuushuu\ ;
+本金庫 < honkinko\ ;
+雄弁家 < yuubenka\ ;
+付帯犯 < futaihan\ ;
+西洋碁 < seiyougo\ ;
+戦争後 < sensougo\ ;
+敏腕家 < binwanka\ ;
+中以上 < chuuijou\ ;
+高下駄 < takageta\ ;
+非売品 < hibaihin\ ;
+混色 < konshoku\ ;
+何代目 < nandaime\ ;
+高架線 < koukasen\ ;
+水面下 < suimenka\ ;
+精油所 < seiyusho\ ;
+東西屋 < touzaiya\ ;
+溢流 < itsuryuu\ ;
+銅版画 < douhanga\ ;
+投技 < nagewaza\ ;
+炊飯器 < suihanki\ ;
+我物 < wagamono\ ;
+元帥府 < gensuifu\ ;
+鼻許 < hanamoto\ ;
+鳥之巣 < torinosu\ ;
+医療車 < iryousha\ ;
+特異性 < tokuisei\ ;
+溝泥 < dobudoro\ ;
+禄高 < rokudaka\ ;
+冬至線 < toujisen\ ;
+穿孔機 < senkouki\ ;
+無蓋車 < mugaisha\ ;
+溝水 < dobumizu\ ;
+空籤 < karakuji\ ;
+抵抗器 < teikouki\ ;
+蒸気船 < joukisen\ ;
+非許容 < hikyoyou\ ;
+遠近法 < enkinhou\ ;
+鉄骨 < tekkotsu\ ;
+湯煙 < yukemuri\ ;
+淡色 < tanshoku\ ;
+仮定法 < kateihou\ ;
+西洋画 < seiyouga\ ;
+私鉄 < shitetsu\ ;
+達磨忌 < darumaki\ ;
+秒速 < byousoku\ ;
+空箱 < karabako\ ;
+突立 < tottatsu\ ;
+畳成語 < jouseigo\ ;
+怪事件 < kaijiken\ ;
+所持者 < shojisha\ ;
+擬人法 < gijinhou\ ;
+唐草 < karakusa\ ;
+準大手 < jun''oote\ ;
+回転機 < kaitenki\ ;
+蟻塚 < aridzuka\ ;
+潮先 < shiosaki\ ;
+虚説 < kyosetsu\ ;
+血便 < ketsuben\ ;
+戦没 < senbotsu\ ;
+可哀相 < kawaisou\ ;
+指先 < yubisaki\ ;
+錦絵 < nishikie\ ;
+交際家 < kousaika\ ;
+離乳期 < rinyuuki\ ;
+磁性層 < jiseisou\ ;
+越冬隊 < ettoutai\ ;
+御無沙汰 < gobusata\ ;
+手枕 < temakura\ ;
+右顧左眄 < ukosaben\ ;
+譜面台 < fumendai\ ;
+秀逸 < shuuitsu\ ;
+仮小屋 < karigoya\ ;
+目論見 < mokuromi\ ;
+竹槍 < takeyari\ ;
+演算子 < enzanshi\ ;
+黒鉄 < kurogane\ ;
+有限個 < yuugenko\ ;
+戸障子 < toshouji\ ;
+可鍛性 < katansei\ ;
+太鼓判 < taikoban\ ;
+海坊主 < umibouzu\ ;
+等式 < toushiki\ ;
+藩閥 < hanbatsu\ ;
+流量 < ryuuryou\ ;
+黍魚子 < kibinago\ ;
+突発 < toppatsu\ ;
+鉤針 < kagibari\ ;
+投宿 < toushuku\ ;
+営林署 < eirinsho\ ;
+竹林 < chikurin\ ;
+固有値 < koyuuchi\ ;
+啓発 < keihatsu\ ;
+竹材 < chikuzai\ ;
+遺伝学 < idengaku\ ;
+育種所 < ikushujo\ ;
+空発 < kuuhatsu\ ;
+払拭 < fusshoku\ ;
+金鍍金 < kinmekki\ ;
+神風 < kamikaze\ ;
+流速 < ryuusoku\ ;
+流通 < ryuutsuu\ ;
+滝川 < takigawa\ ;
+参事官 < sanjikan\ ;
+相談所 < soudanjo\ ;
+無税品 < muzeihin\ ;
+穀粒 < kokuryuu\ ;
+端末 < tanmatsu\ ;
+唐紙 < karakami\ ;
+応答能 < outounou\ ;
+検問所 < kenmonjo\ ;
+岡場所 < okabasho\ ;
+地蔵尊 < jizouson\ ;
+空世辞 < karaseji\ ;
+表具屋 < hyouguya\ ;
+弔慰金 < chouikin\ ;
+初産婦 < shosanpu\ ;
+蛸焼 < takoyaki\ ;
+祝電 < shukuden\ ;
+恐龍 < kyouryuu\ ;
+暗記物 < ankimono\ ;
+麻酔剤 < masuizai\ ;
+藪医者 < yabuisha\ ;
+品薄 < shinausu\ ;
+拝借 < haishaku\ ;
+何時頃 < itsugoro\ ;
+種紙 < tanegami\ ;
+温熱 < on''netsu\ ;
+鉄鉢 < teppachi\ ;
+満月 < mangetsu\ ;
+鍋物 < nabemono\ ;
+二義的 < nigiteki\ ;
+雁皮紙 < ganpishi\ ;
+日和見 < hiyorimi\ ;
+波風 < namikaze\ ;
+社会部 < shakaibu\ ;
+鑑別 < kanbetsu\ ;
+黒豹 < kurohyou\ ;
+房房 < fusafusa\ ;
+黒豆 < kuromame\ ;
+別世界 < bessekai\ ;
+無名氏 < mumeishi\ ;
+雇傭者 < koyousha\ ;
+唐突 < toutotsu\ ;
+絢緞子 < ayadonsu\ ;
+渦状文 < kajoumon\ ;
+黙諾 < mokudaku\ ;
+自動車 < jidousha\ ;
+除草剤 < josouzai\ ;
+野鼠 < nonezumi\ ;
+不公正 < fukousei\ ;
+闘技場 < tougijou\ ;
+喬木 < kyouboku\ ;
+黙読 < mokudoku\ ;
+恥骨 < chikotsu\ ;
+主記憶 < shukioku\ ;
+手心 < tegokoro\ ;
+突然 < totsuzen\ ;
+鼻下長 < bikachou\ ;
+最大化 < saidaika\ ;
+押切 < oshikiri\ ;
+防炎剤 < bouenzai\ ;
+抑圧 < yokuatsu\ ;
+慶祝 < keishuku\ ;
+筆太 < fudebuto\ ;
+鉄道 < tetsudou\ ;
+何時間 < nanjikan\ ;
+系統樹 < keitouju\ ;
+御自身 < gojishin\ ;
+上菓子 < jougashi\ ;
+虚脱 < kyodatsu\ ;
+河鱒 < kawamasu\ ;
+被減数 < higensuu\ ;
+星条旗 < seijouki\ ;
+銭苔 < zenigoke\ ;
+立札 < tatefuda\ ;
+噛傷 < kamikizu\ ;
+野鶲 < nobitaki\ ;
+疎水性 < sosuisei\ ;
+自治権 < jichiken\ ;
+逮捕者 < taihosha\ ;
+演出 < enshutsu\ ;
+鼻紙 < hanagami\ ;
+温温 < nukunuku\ ;
+二頭筋 < nitoukin\ ;
+鼻糞 < hanakuso\ ;
+素浪人 < surounin\ ;
+秋場所 < akibasho\ ;
+船火事 < funakaji\ ;
+育種家 < ikushuka\ ;
+悪逆 < akugyaku\ ;
+正課外 < seikagai\ ;
+煉瓦塀 < rengabei\ ;
+悪辣 < akuratsu\ ;
+英文法 < eibunpou\ ;
+未決定 < mikettei\ ;
+黒表 < kokuhyou\ ;
+健康美 < kenkoubi\ ;
+両議院 < ryougiin\ ;
+愛唱歌 < aishouka\ ;
+二本棒 < nihonbou\ ;
+鼻筋 < hanasuji\ ;
+沈黙 < chinmoku\ ;
+青物屋 < aomonoya\ ;
+金髪 < kinpatsu\ ;
+仮定形 < kateikei\ ;
+鉈豆 < natamame\ ;
+磯鷸 < isoshigi\ ;
+溝川 < dobugawa\ ;
+自動詞 < jidoushi\ ;
+便宜上 < bengijou\ ;
+田舎風 < inakafuu\ ;
+鍵束 < kagitaba\ ;
+神速 < shinsoku\ ;
+朝御飯 < asagohan\ ;
+黒蛇 < kurohebi\ ;
+指揮権 < shikiken\ ;
+設計図 < sekkeizu\ ;
+満悦 < man''etsu\ ;
+我我 < wareware\ ;
+部外者 < bugaisha\ ;
+清潔 < seiketsu\ ;
+葬儀場 < sougijou\ ;
+磁性体 < jiseitai\ ;
+銀本位 < ginhon''i\ ;
+筆名 < hitsumei\ ;
+政党員 < seitouin\ ;
+対応値 < taiouchi\ ;
+軍艦旗 < gunkanki\ ;
+二乗根 < nijoukon\ ;
+種畜 < shuchiku\ ;
+指揮棒 < shikibou\ ;
+母国語 < bokokugo\ ;
+画用紙 < gayoushi\ ;
+銅色 < doushoku\ ;
+検温器 < ken''onki\ ;
+反骨 < hankotsu\ ;
+商況 < shoukyou\ ;
+駆潜艇 < kusentei\ ;
+堕胎罪 < dataizai\ ;
+湿度 < shitsudo\ ;
+磁気学 < jikigaku\ ;
+蟄伏 < chippuku\ ;
+浅葱 < asatsuki\ ;
+懐炉灰 < kairobai\ ;
+要注意 < youchuui\ ;
+初生児 < shoseiji\ ;
+戒律 < kairitsu\ ;
+不鮮明 < fusenmei\ ;
+竺学 < jikugaku\ ;
+天鵞絨 < biroudou\ ;
+吹貫 < fukinuki\ ;
+笹原 < sasahara\ ;
+窓枠 < madowaku\ ;
+唐物 < toumotsu\ ;
+製糖所 < seitoujo\ ;
+端局 < tankyoku\ ;
+択一 < takuitsu\ ;
+先駆者 < senkusha\ ;
+助成金 < joseikin\ ;
+渡来人 < toraijin\ ;
+筆先 < fudesaki\ ;
+速記者 < sokkisha\ ;
+銭箱 < zenibako\ ;
+錨泊 < byouhaku\ ;
+艦載機 < kansaiki\ ;
+混浴 < kon''yoku\ ;
+深深 < fukabuka\ ;
+藪蛇 < yabuhebi\ ;
+製粉機 < seifunki\ ;
+乱層雲 < ransouun\ ;
+参事会 < sanjikai\ ;
+種物 < tanemono\ ;
+種牛 < taneushi\ ;
+蛇毒 < hebidoku\ ;
+戌年 < inudoshi\ ;
+違法行為 < ihoukoui\ ;
+排気弁 < haikiben\ ;
+滑剤 < katsuzai\ ;
+黒船 < kurofune\ ;
+正統派 < seitouha\ ;
+銀翼 < gin''yoku\ ;
+泥足 < doroashi\ ;
+補佐役 < hosayaku\ ;
+鎌形 < kamagata\ ;
+未配当 < mihaitou\ ;
+滅却 < mekkyaku\ ;
+是非共 < zehitomo\ ;
+釣銭 < tsurisen\ ;
+未刊行 < mikankou\ ;
+枢機卿 < suukikei\ ;
+未遂罪 < misuizai\ ;
+文化財 < bunkazai\ ;
+武装船 < busousen\ ;
+記者団 < kishadan\ ;
+商業 < shougyou\ ;
+御用邸 < goyoutei\ ;
+御先棒 < osakibou\ ;
+鉱脈 < koumyaku\ ;
+蚊燻 < kaibushi\ ;
+吃逆 < shakkuri\ ;
+麹菌 < koujikin\ ;
+定比例 < teihirei\ ;
+命脈 < meimyaku\ ;
+富士川 < fujikawa\ ;
+黒肉 < kuroniku\ ;
+麦藁 < mugiwara\ ;
+産卵期 < sanranki\ ;
+竹垣 < takegaki\ ;
+分相機 < bunsouki\ ;
+鍛接 < tansetsu\ ;
+針金 < harigane\ ;
+会意文字 < kaiimoji\ ;
+銀縁 < ginbuchi\ ;
+上層雲 < jousouun\ ;
+金錆 < kanasabi\ ;
+税率 < zeiritsu\ ;
+立山 < tateyama\ ;
+三次元 < sanjigen\ ;
+群馬県 < gunmaken\ ;
+麦蒔 < mugimaki\ ;
+古金 < furugane\ ;
+啄木 < takuboku\ ;
+口重 < kuchiomo\ ;
+兵站部 < heitanbu\ ;
+不公平 < fukouhei\ ;
+渇望 < katsubou\ ;
+才力 < sairyoku\ ;
+古酒 < furuzake\ ;
+前鼻緒 < maehanao\ ;
+不凍剤 < futouzai\ ;
+鼻熊 < hanaguma\ ;
+錫杖 < shakujou\ ;
+空撮 < kuusatsu\ ;
+黙約 < mokuyaku\ ;
+物真似 < monomane\ ;
+遊歩道 < yuuhodou\ ;
+社説 < shasetsu\ ;
+浅緑 < senryoku\ ;
+手刀 < tegatana\ ;
+合縁奇縁 < aienkien\ ;
+無制限 < museigen\ ;
+積極 < sekkyoku\ ;
+打傷 < uchikizu\ ;
+鉄色 < tetsuiro\ ;
+体育家 < taiikuka\ ;
+分岐駅 < bunkieki\ ;
+福耳 < fukumimi\ ;
+滅亡 < metsubou\ ;
+医療用 < iryouyou\ ;
+慄然 < ritsuzen\ ;
+同説 < dousetsu\ ;
+窒息 < chissoku\ ;
+右足 < migiashi\ ;
+逮捕状 < taihojou\ ;
+沖釣 < okidzuri\ ;
+過去帳 < kakochou\ ;
+黒米 < kurogome\ ;
+機動性 < kidousei\ ;
+鉄腕 < tetsuwan\ ;
+叛逆 < hangyaku\ ;
+熱風炉 < neppuuro\ ;
+歩行者 < hokousha\ ;
+點穴 < tenketsu\ ;
+水鳥 < mizudori\ ;
+満喫 < mankitsu\ ;
+円錐形 < ensuikei\ ;
+我国 < wagakuni\ ;
+守銭奴 < shusendo\ ;
+道化師 < doukeshi\ ;
+悪舌 < akuzetsu\ ;
+虎猫 < toraneko\ ;
+下腹部 < kafukubu\ ;
+反政府 < hanseifu\ ;
+回転儀 < kaitengi\ ;
+上草履 < uwazouri\ ;
+米上院 < beijouin\ ;
+洒脱 < shadatsu\ ;
+麻綱 < asadzuna\ ;
+黐竿 < mochizao\ ;
+朝稽古 < asageiko\ ;
+含蓄 < ganchiku\ ;
+製粉所 < seifunjo\ ;
+被治者 < hichisha\ ;
+参酌 < sanshaku\ ;
+宮田家 < miyatake\ ;
+近衛兵 < konoehei\ ;
+岩手県 < iwateken\ ;
+連隊旗 < rentaiki\ ;
+管楽器 < kangakki\ ;
+謝恩会 < shaonkai\ ;
+養蜂家 < youhouka\ ;
+五線紙 < gosenshi\ ;
+各行 < kakugyou\ ;
+鍋底 < nabezoko\ ;
+平生着 < heizeigi\ ;
+機帆船 < kihansen\ ;
+悪者 < warumono\ ;
+鼻水 < hanamizu\ ;
+非排水 < hihaisui\ ;
+着番号 < kibangou\ ;
+不倫罪 < furinzai\ ;
+飴細工 < amezaiku\ ;
+偽似症 < gijishou\ ;
+大広間 < oohiroma\ ;
+避難者 < hinansha\ ;
+定常波 < teijouha\ ;
+付属語 < fuzokugo\ ;
+悶絶 < monzetsu\ ;
+年会費 < nenkaihi\ ;
+故買者 < kobaisha\ ;
+五大洋 < godaiyou\ ;
+立命 < ritsumei\ ;
+珪藻土 < keisoudo\ ;
+厳達 < gentatsu\ ;
+人名簿 < jinmeibo\ ;
+排気口 < haikikou\ ;
+避妊法 < hininhou\ ;
+特価品 < tokkahin\ ;
+重説 < juusetsu\ ;
+揚抗比 < youkouhi\ ;
+鍋尻 < nabejiri\ ;
+辞書類 < jishorui\ ;
+大往生 < daioujou\ ;
+追起訴 < tsuikiso\ ;
+氷震 < hyoushin\ ;
+過半数 < kahansuu\ ;
+鉄筆 < teppitsu\ ;
+安息日 < ansokubi\ ;
+再浮上 < saifujou\ ;
+活眼 < katsugan\ ;
+図書券 < toshoken\ ;
+発起人 < hokkinin\ ;
+洞窟 < doukutsu\ ;
+道具論 < douguron\ ;
+分相応 < bunsouou\ ;
+我儘 < wagamama\ ;
+立候補 < rikkouho\ ;
+避暑地 < hishochi\ ;
+水際 < mizugiwa\ ;
+接骨木 < niwatoko\ ;
+社会科 < shakaika\ ;
+重複 < choufuku\ ;
+活発 < kappatsu\ ;
+上機嫌 < joukigen\ ;
+交換所 < koukanjo\ ;
+喜歌劇 < kikageki\ ;
+添加剤 < tenkazai\ ;
+未復員 < mifukuin\ ;
+消沈 < shouchin\ ;
+謙遜語 < kensongo\ ;
+未処置 < mishochi\ ;
+悪筆 < akuhitsu\ ;
+地形図 < chikeizu\ ;
+未知数 < michisuu\ ;
+硬骨 < koukotsu\ ;
+八潮路 < yashioji\ ;
+沢蠏 < sawagani\ ;
+代理者 < dairisha\ ;
+憫察 < binsatsu\ ;
+麗筆 < reihitsu\ ;
+藁紙 < waragami\ ;
+軍令部 < gunreibu\ ;
+立像 < ritsuzou\ ;
+横文字 < yokomoji\ ;
+活用 < katsuyou\ ;
+消毒 < shoudoku\ ;
+太古代 < taikodai\ ;
+我人 < warehito\ ;
+鍋墨 < nabezumi\ ;
+黒猫 < kuroneko\ ;
+我事 < wagakoto\ ;
+幾何学 < kikagaku\ ;
+西洋化 < seiyouka\ ;
+刑余者 < keiyosha\ ;
+渡世人 < toseinin\ ;
+同胞 < harakara\ ;
+羅針儀 < rashingi\ ;
+子音群 < shiingun\ ;
+暗証化 < anshouka\ ;
+滑走路 < kassouro\ ;
+製図板 < seizuban\ ;
+皇統譜 < koutoufu\ ;
+理学部 < rigakubu\ ;
+空夢 < sorayume\ ;
+泥縄 < doronawa\ ;
+英語塾 < eigojuku\ ;
+酋長 < shuuchou\ ;
+悲喜劇 < hikigeki\ ;
+保管林 < hokanrin\ ;
+半靴 < hangutsu\ ;
+悶着 < monchaku\ ;
+再武装 < saibusou\ ;
+黒熊 < kuroguma\ ;
+蒲魚 < kamatoto\ ;
+喉元 < nodomoto\ ;
+空堀 < karabori\ ;
+赤蜻蛉 < akatonbo\ ;
+薄膜 < hakumaku\ ;
+窯元 < kamamoto\ ;
+減圧 < gen''atsu\ ;
+無辺際 < muhenzai\ ;
+不自然 < fushizen\ ;
+腎不全 < jinfuzen\ ;
+稚拙 < chisetsu\ ;
+祐筆 < yuuhitsu\ ;
+宴会場 < enkaijou\ ;
+古草 < furukusa\ ;
+不信者 < fushinja\ ;
+口荒 < kuchiara\ ;
+単本位 < tanhon''i\ ;
+円錐台 < ensuidai\ ;
+祝祭 < shukusai\ ;
+因果者 < ingamono\ ;
+不信義 < fushingi\ ;
+半長 < han''naga\ ;
+鉄瓶 < tetsubin\ ;
+水部 < mizunobu\ ;
+軍事面 < gunjimen\ ;
+恒河沙 < gougasha\ ;
+悪癖 < waruguse\ ;
+黒潮 < kuroshio\ ;
+蓄電 < chikuden\ ;
+母鳥 < hahadori\ ;
+自治体 < jichitai\ ;
+着尺地 < kijakuji\ ;
+後半期 < kouhanki\ ;
+口舌 < kouzetsu\ ;
+祝砲 < shukuhou\ ;
+毛髪 < mouhatsu\ ;
+自治会 < jichikai\ ;
+価値観 < kachikan\ ;
+西遊記 < seiyuuki\ ;
+監査委員 < kansaiin\ ;
+礼節 < reisetsu\ ;
+年代記 < nendaiki\ ;
+感情家 < kanjouka\ ;
+文化祭 < bunkasai\ ;
+及落 < kyuuraku\ ;
+銃殺 < juusatsu\ ;
+変換器 < henkanki\ ;
+情熱 < jounetsu\ ;
+世界史 < sekaishi\ ;
+受精卵 < juseiran\ ;
+金脈 < kinmyaku\ ;
+只者 < tadamono\ ;
+懇切 < konsetsu\ ;
+禁物 < kinmotsu\ ;
+年甲斐 < toshigai\ ;
+虐政 < gyakusei\ ;
+名筆 < meihitsu\ ;
+確証 < kakushou\ ;
+同筆 < douhitsu\ ;
+配達 < haitatsu\ ;
+泥仕合 < dorojiai\ ;
+清子音 < seishiin\ ;
+二期作 < nikisaku\ ;
+鋸屑 < nokokuzu\ ;
+横紋筋 < oumonkin\ ;
+淀川 < yodogawa\ ;
+運動界 < undoukai\ ;
+惑溺 < wakudeki\ ;
+未発見 < mihakken\ ;
+浅沓 < asagutsu\ ;
+同穴 < douketsu\ ;
+偶像化 < guuzouka\ ;
+補聴器 < hochouki\ ;
+英語劇 < eigogeki\ ;
+釣糸 < tsuriito\ ;
+電算機 < densanki\ ;
+洗熊 < araiguma\ ;
+再吟味 < saiginmi\ ;
+重罰 < juubatsu\ ;
+円錐体 < ensuitai\ ;
+流氷 < ryuuhyou\ ;
+注目 < chuumoku\ ;
+青天井 < aotenjou\ ;
+双脚 < soukyaku\ ;
+浪曲 < roukyoku\ ;
+非戦論 < hisenron\ ;
+未発行 < mihakkou\ ;
+相場師 < soubashi\ ;
+古戦場 < kosenjou\ ;
+三畳紀 < sanjouki\ ;
+好意的 < kouiteki\ ;
+御馳走 < gochisou\ ;
+金縁 < kinbuchi\ ;
+半道 < hanmichi\ ;
+北陸 < hokuriku\ ;
+扶養者 < fuyousha\ ;
+十字軍 < juujigun\ ;
+按手礼 < anshurei\ ;
+同位角 < douikaku\ ;
+原薬 < gen''yaku\ ;
+即諾 < sokudaku\ ;
+活殺 < kassatsu\ ;
+周流 < shuuryuu\ ;
+輪転機 < rintenki\ ;
+稲妻 < inadzuma\ ;
+厭人者 < enjinsha\ ;
+無配当 < muhaitou\ ;
+唐墨 < karasumi\ ;
+富裕税 < fuyuuzei\ ;
+異口同音 < ikudouon\ ;
+釣竿 < tsurizao\ ;
+過労死 < karoushi\ ;
+紅衛兵 < koueihei\ ;
+針箱 < haribako\ ;
+管理者 < kanrisha\ ;
+夜商人 < yoakindo\ ;
+舌下腺 < zekkasen\ ;
+所持品 < shojihin\ ;
+紀行文 < kikoubun\ ;
+火山灰 < kazanbai\ ;
+騎士道 < kishidou\ ;
+剰余金 < jouyokin\ ;
+卓越 < takuetsu\ ;
+豊水期 < housuiki\ ;
+低能児 < teinouji\ ;
+帰納法 < kinouhou\ ;
+獅子座 < shishiza\ ;
+交換器 < koukanki\ ;
+世界人 < sekaijin\ ;
+衛生隊 < eiseitai\ ;
+取組 < torikumi\ ;
+蒲鉾 < kamaboko\ ;
+海抜 < kaibatsu\ ;
+金箱 < kanebako\ ;
+理事長 < rijichou\ ;
+平屋根 < hirayane\ ;
+消息 < shousoku\ ;
+元老院 < genrouin\ ;
+棄権者 < kikensha\ ;
+世界中 < sekaijuu\ ;
+河口港 < kakoukou\ ;
+口笛 < kuchibue\ ;
+原茸 < haratake\ ;
+鴛鴦 < oshidori\ ;
+薬玉 < kusudama\ ;
+不体裁 < futeisai\ ;
+虐待 < gyakutai\ ;
+毒蜘蛛 < dokugumo\ ;
+単語篇 < tangohen\ ;
+黒枠 < kurowaku\ ;
+金穴 < kinketsu\ ;
+生徒数 < seitosuu\ ;
+黒服 < kurofuku\ ;
+羊皮紙 < youhishi\ ;
+勝馬 < kachiuma\ ;
+破鐘 < waregane\ ;
+必要 < hitsuyou\ ;
+混入 < kon''nyuu\ ;
+母系制 < bokeisei\ ;
+展示場 < tenjijou\ ;
+忍術 < ninjutsu\ ;
+厳罰 < genbatsu\ ;
+後遺症 < kouishou\ ;
+流木 < ryuuboku\ ;
+鈍物 < donbutsu\ ;
+引火温度 < inkaondo\ ;
+司直 < shichoku\ ;
+禁欲 < kin''yoku\ ;
+渇仰 < katsugou\ ;
+秩序 < chitsujo\ ;
+卒論 < sotsuron\ ;
+不定詞 < futeishi\ ;
+水蜜 < suimitsu\ ;
+加担者 < katansha\ ;
+石高 < kokudaka\ ;
+陽電気 < youdenki\ ;
+命日 < meinichi\ ;
+復讐 < fukushuu\ ;
+宣伝費 < sendenhi\ ;
+同率 < douritsu\ ;
+惜春 < sekishun\ ;
+劇映画 < gekieiga\ ;
+礼物 < reimotsu\ ;
+短髪 < tanpatsu\ ;
+虚実 < kyojitsu\ ;
+恋着 < renchaku\ ;
+阿古屋貝 < akoyagai\ ;
+遊蕩児 < yuutouji\ ;
+復調 < fukuchou\ ;
+金満家 < kinmanka\ ;
+錠前屋 < joumaeya\ ;
+知名度 < chimeido\ ;
+名物 < meibutsu\ ;
+北進 < hokushin\ ;
+出鱈目 < detarame\ ;
+黄昏 < tasogare\ ;
+懇話会 < konwakai\ ;
+避難民 < hinanmin\ ;
+史略 < shiryaku\ ;
+十字街 < juujigai\ ;
+主演者 < shuensha\ ;
+泥濘 < nukarumi\ ;
+藤棚 < fujidana\ ;
+世俗化 < sezokuka\ ;
+粗製品 < soseihin\ ;
+厳粛 < genshuku\ ;
+鉄棒 < tetsubou\ ;
+鳩麦 < hatomugi\ ;
+右心房 < ushinbou\ ;
+圧制者 < asseisha\ ;
+展示品 < tenjihin\ ;
+鉄梃 < kanateko\ ;
+落魄 < rakuhaku\ ;
+量的 < ryouteki\ ;
+忠良 < chuuryou\ ;
+書記官 < shokikan\ ;
+郷土愛 < kyoudoai\ ;
+貯蔵庫 < chozouko\ ;
+藩札 < hansatsu\ ;
+生真面目 < kimajime\ ;
+下馬評 < gebahyou\ ;
+不能者 < funousha\ ;
+勅願 < chokugan\ ;
+酒蔵 < sakagura\ ;
+勅題 < chokudai\ ;
+不良化 < furyouka\ ;
+薄荷糖 < hakkatou\ ;
+薄荷精 < hakkasei\ ;
+弱震 < jakushin\ ;
+比喩的 < hiyuteki\ ;
+禁札 < kinsatsu\ ;
+争議権 < sougiken\ ;
+重禁錮 < juukinko\ ;
+運動欄 < undouran\ ;
+種別 < shubetsu\ ;
+黒房 < kurobusa\ ;
+農繁期 < nouhanki\ ;
+悦楽 < etsuraku\ ;
+水草 < mizukusa\ ;
+愛子 < itoshigo\ ;
+鉄材 < tetsuzai\ ;
+弦音 < tsuruoto\ ;
+唐傘 < karakasa\ ;
+感受性 < kanjusei\ ;
+麦束 < mugitaba\ ;
+兵器工 < heikikou\ ;
+倪雲林 < geiunrin\ ;
+水茎 < mizuguki\ ;
+運送船 < unsousen\ ;
+憂事 < ureigoto\ ;
+短靴 < tangutsu\ ;
+水苔 < mizugoke\ ;
+遊冶郎 < yuuyarou\ ;
+画仙紙 < gasenshi\ ;
+洋梨 < younashi\ ;
+多段階 < tadankai\ ;
+試験機 < shikenki\ ;
+一般論 < ippanron\ ;
+加算税 < kasanzei\ ;
+残雪 < zansetsu\ ;
+厚紙 < atsugami\ ;
+浴客 < yokkyaku\ ;
+分岐線 < bunkisen\ ;
+喇叭手 < rappashu\ ;
+水船 < mizubune\ ;
+泥沼 < doronuma\ ;
+反発 < hanpatsu\ ;
+神様 < kamisama\ ;
+磨石 < togiishi\ ;
+弁髪 < benpatsu\ ;
+泥水 < doromizu\ ;
+泡沫 < houmatsu\ ;
+免罪符 < menzaifu\ ;
+犬黄楊 < inutsuge\ ;
+神業 < kamiwaza\ ;
+水腹 < mizubara\ ;
+参着 < sanchaku\ ;
+厭世観 < enseikan\ ;
+確約 < kakuyaku\ ;
+水脈 < suimyaku\ ;
+半世紀 < hanseiki\ ;
+酵母菌 < koubokin\ ;
+神棚 < kamidana\ ;
+冷罨法 < reianpou\ ;
+古物 < furumono\ ;
+愛蔵版 < aizouban\ ;
+快絶 < kaizetsu\ ;
+御偉方 < oeragata\ ;
+記数法 < kisuuhou\ ;
+空下手 < karaheta\ ;
+金物 < kanamono\ ;
+神格 < shinkaku\ ;
+禿山 < hageyama\ ;
+十薬 < dokudami\ ;
+不健康 < fukenkou\ ;
+沈痛 < chintsuu\ ;
+急病 < kyuubyou\ ;
+探検家 < tankenka\ ;
+石鏃 < sekizoku\ ;
+大気圏 < taikiken\ ;
+獅子吼 < shishiku\ ;
+税別 < zeibetsu\ ;
+代理権 < dairiken\ ;
+物件費 < bukkenhi\ ;
+黒幕 < kuromaku\ ;
+祝杯 < shukuhai\ ;
+悪擦 < waruzure\ ;
+正規兵 < seikihei\ ;
+再配布 < saihaifu\ ;
+鼻先 < hanasaki\ ;
+神月 < koudzuki\ ;
+民草 < tamigusa\ ;
+四畳半 < yojouhan\ ;
+活弁 < katsuben\ ;
+展示会 < tenjikai\ ;
+大都市 < daitoshi\ ;
+和室 < washitsu\ ;
+先学期 < sengakki\ ;
+悪洒落 < warujare\ ;
+釈然 < shakuzen\ ;
+自民党 < jimintou\ ;
+医療品 < iryouhin\ ;
+内沙汰 < uchizata\ ;
+哲人 < tetsujin\ ;
+福徳 < fukutoku\ ;
+黒山 < kuroyama\ ;
+勿論 < mochiron\ ;
+分光器 < bunkouki\ ;
+怪物 < kaibutsu\ ;
+親不孝 < oyafukou\ ;
+福引 < fukubiki\ ;
+卒者 < sotsusha\ ;
+縁起物 < engimono\ ;
+流星雨 < ryuuseiu\ ;
+原発 < genpatsu\ ;
+割高 < waridaka\ ;
+著述 < chojutsu\ ;
+年貢米 < nengumai\ ;
+厚皮 < atsukawa\ ;
+洗浄器 < senjouki\ ;
+毛虱 < kejirami\ ;
+循環器 < junkanki\ ;
+酒糟 < sakekasu\ ;
+無理矢理 < muriyari\ ;
+健康児 < kenkouji\ ;
+税理士 < zeirishi\ ;
+引金 < hikigane\ ;
+古河 < furukawa\ ;
+人情味 < ninjoumi\ ;
+等語線 < tougosen\ ;
+毒蛇 < dokuhebi\ ;
+十字線 < juujisen\ ;
+不使用 < fushiyou\ ;
+一生面 < isseimen\ ;
+旅行記 < ryokouki\ ;
+鉄床 < kanatoko\ ;
+個体群 < kotaigun\ ;
+名曲 < meikyoku\ ;
+口蓋音 < kougaion\ ;
+同月 < dougetsu\ ;
+圧延機 < atsuenki\ ;
+和声法 < waseihou\ ;
+占算 < urayasan\ ;
+高頻度 < kouhindo\ ;
+小豆色 < azukiiro\ ;
+毒薬 < dokuyaku\ ;
+厳美渓 < genbikei\ ;
+決然 < ketsuzen\ ;
+示威運動 < jiiundou\ ;
+火山弾 < kazandan\ ;
+半諧音 < hankaion\ ;
+情実 < joujitsu\ ;
+秋口 < akiguchi\ ;
+取決 < torikime\ ;
+同日 < doujitsu\ ;
+祭式 < saishiki\ ;
+虐使 < gyakushi\ ;
+沐浴 < mokuyoku\ ;
+鉄山 < tetsuzan\ ;
+求法者 < guhousha\ ;
+火山帯 < kazantai\ ;
+洞察 < dousatsu\ ;
+下駄箱 < getabako\ ;
+道順 < michijun\ ;
+神徳 < shintoku\ ;
+芝海老 < shibaebi\ ;
+大分県 < ooitaken\ ;
+復籍 < fukuseki\ ;
+山羊髭 < yagihige\ ;
+瀬戸際 < setogiwa\ ;
+毒茸 < dokutake\ ;
+延金 < nobegane\ ;
+碌碌 < rokuroku\ ;
+銭亀 < zenigame\ ;
+火山島 < kazantou\ ;
+一夫一婦 < ippuippu\ ;
+歯車 < haguruma\ ;
+不審火 < fushinbi\ ;
+奉仕女 < houshime\ ;
+火山岩 < kazangan\ ;
+引越 < hikkoshi\ ;
+剃髪 < teihatsu\ ;
+忽然 < kotsuzen\ ;
+玉砂利 < tamajari\ ;
+一分半 < ippunhan\ ;
+古株 < furukabu\ ;
+花鳥画 < kachouga\ ;
+無菌法 < mukinhou\ ;
+悄悄 < sugosugo\ ;
+無免許 < mumenkyo\ ;
+待避線 < taihisen\ ;
+硬筆 < kouhitsu\ ;
+年賀状 < nengajou\ ;
+古参者 < kosansha\ ;
+必着 < hitchaku\ ;
+五分五分 < gobugobu\ ;
+古服 < furufuku\ ;
+分岐点 < bunkiten\ ;
+侍従官 < jijuukan\ ;
+内野手 < naiyashu\ ;
+油送管 < yusoukan\ ;
+水瓶 < mizugame\ ;
+誘蛾灯 < yuugatou\ ;
+心的 < shinteki\ ;
+計理士 < keirishi\ ;
+雑貨店 < zakkaten\ ;
+座右銘 < zayuumei\ ;
+吾子 < wagimoko\ ;
+子音性 < shiinsei\ ;
+気短 < kimijika\ ;
+得策 < tokusaku\ ;
+勅裁 < chokusai\ ;
+期待感 < kitaikan\ ;
+適量 < tekiryou\ ;
+心痛 < shintsuu\ ;
+運動家 < undousha\ ;
+金星 < kinboshi\ ;
+愚連隊 < gurentai\ ;
+原子雲 < genshiun\ ;
+代理店 < dairiten\ ;
+弾薬 < dan''yaku\ ;
+水玉 < mizutama\ ;
+禁圧 < kin''atsu\ ;
+徳目 < tokumoku\ ;
+諸器械 < shokikai\ ;
+里方 < satokata\ ;
+法律 < houritsu\ ;
+釈明 < shakumei\ ;
+操舵手 < soudashu\ ;
+出歯亀 < debakame\ ;
+不健全 < fukenzen\ ;
+活動 < katsudou\ ;
+黒円 < kuromaru\ ;
+相補性 < souhosei\ ;
+水物 < mizumono\ ;
+得票 < tokuhyou\ ;
+初期値 < shokichi\ ;
+派出 < hashutsu\ ;
+釈放 < shakuhou\ ;
+接頭辞 < settouji\ ;
+生徒会 < seitokai\ ;
+流入 < ryuunyuu\ ;
+残虐 < zangyaku\ ;
+薬屋 < kusuriya\ ;
+薬局 < yakkyoku\ ;
+硬直 < kouchoku\ ;
+合式 < goushiki\ ;
+神妙 < shinmyou\ ;
+遠道 < toomichi\ ;
+預言者 < yogensha\ ;
+当職 < toushoku\ ;
+底革 < sokogawa\ ;
+薬学 < yakugaku\ ;
+福助 < fukusuke\ ;
+開催日 < kaisaibi\ ;
+胴間声 < doumagoe\ ;
+背番号 < sebangou\ ;
+浮浪者 < furousha\ ;
+会員券 < kaiinken\ ;
+会員制 < kaiinsei\ ;
+毛筆 < mouhitsu\ ;
+英米法 < eibeihou\ ;
+去月 < kyogetsu\ ;
+着駅 < chakueki\ ;
+合理論 < gouriron\ ;
+大部分 < daibubun\ ;
+恐悦 < kyouetsu\ ;
+蔭様 < kagesama\ ;
+神域 < shin''iki\ ;
+千生 < sen''nari\ ;
+薄弱 < hakujaku\ ;
+五角形 < gokakkei\ ;
+中規模 < chuukibo\ ;
+必然 < hitsuzen\ ;
+大都会 < daitokai\ ;
+護送車 < gosousha\ ;
+重手代 < omotedai\ ;
+同局 < doukyoku\ ;
+蒸着 < jouchaku\ ;
+広報部 < kouhoubu\ ;
+半玉 < hangyoku\ ;
+逆風 < gyakufuu\ ;
+分骨 < bunkotsu\ ;
+後鳥羽院 < gotobain\ ;
+幼顔 < osanagao\ ;
+同宿 < doushuku\ ;
+名実 < meijitsu\ ;
+止血 < shiketsu\ ;
+動脈 < doumyaku\ ;
+着順 < chakujun\ ;
+蒸発 < jouhatsu\ ;
+逆順 < gyakujun\ ;
+合宿 < gasshuku\ ;
+劇評 < gekihyou\ ;
+酸欠 < sanketsu\ ;
+後発 < kouhatsu\ ;
+三杯酢 < sanbaizu\ ;
+節炭器 < settanki\ ;
+鉄分 < tetsubun\ ;
+希望者 < kibousha\ ;
+外科学 < gekagaku\ ;
+刑事犯 < keijihan\ ;
+配線図 < haisenzu\ ;
+機械論 < kikairon\ ;
+着電 < chakuden\ ;
+川秋沙 < kawaaisa\ ;
+友成 < tomonari\ ;
+文化圏 < bunkaken\ ;
+接頭語 < settougo\ ;
+水洟 < mizubana\ ;
+事故歴 < jikoreki\ ;
+前述 < zenjutsu\ ;
+割譲 < katsujou\ ;
+山小屋 < yamagoya\ ;
+原曲 < genkyoku\ ;
+糸蜻蛉 < itotonbo\ ;
+十重二十重 < toehatae\ ;
+後産 < nochizan\ ;
+移転先 < itensaki\ ;
+落莫 < rakubaku\ ;
+適評 < tekihyou\ ;
+蓋物 < futamono\ ;
+出馬 < shutsuba\ ;
+水没 < suibotsu\ ;
+御物 < gyobutsu\ ;
+大勲位 < daikun''i\ ;
+当節 < tousetsu\ ;
+吸口 < suikuchi\ ;
+大目玉 < oomedama\ ;
+官公吏 < kankouri\ ;
+悋嗇 < rinshoku\ ;
+協議員 < kyougiin\ ;
+軍事犯 < gunjihan\ ;
+随行員 < zuikouin\ ;
+一辺倒 < ippentou\ ;
+針山 < hariyama\ ;
+取引 < torihiki\ ;
+没年 < botsunen\ ;
+史実 < shijitsu\ ;
+葉脈 < youmyaku\ ;
+台密 < taimitsu\ ;
+現代語 < gendaigo\ ;
+達識 < tasshiki\ ;
+麦作 < mugisaku\ ;
+不導性 < fudousei\ ;
+性悪 < shouwaru\ ;
+理容師 < riyoushi\ ;
+従物 < juubutsu\ ;
+乱高下 < rankouge\ ;
+役畜 < ekichiku\ ;
+凡骨 < bonkotsu\ ;
+金屑 < kanakuzu\ ;
+必殺 < hissatsu\ ;
+古寺 < furudera\ ;
+社交家 < shakouka\ ;
+洛中 < rakuchuu\ ;
+凸面 < totsumen\ ;
+文化史 < bunkashi\ ;
+吸入 < kyuunyuu\ ;
+不用品 < fuyouhin\ ;
+到達 < toutatsu\ ;
+口実 < koujitsu\ ;
+透明度 < toumeido\ ;
+不定法 < futeihou\ ;
+劇薬 < gekiyaku\ ;
+短縮 < tanshuku\ ;
+温排水 < onhaisui\ ;
+冷麦 < hiyamugi\ ;
+祝典 < shukuten\ ;
+出陳 < shutchin\ ;
+航空路 < koukuuro\ ;
+葛籠 < tsudzura\ ;
+資産家 < shisanka\ ;
+類似点 < ruijiten\ ;
+淡水湖 < tansuiko\ ;
+広報課 < kouhouka\ ;
+徳沢 < tokutaku\ ;
+釈尊 < shakuson\ ;
+平鍋 < hiranabe\ ;
+酒樽 < sakadaru\ ;
+弁舌 < benzetsu\ ;
+小人数 < koninzuu\ ;
+愛知県 < aichiken\ ;
+追録 < tsuiroku\ ;
+恋妻 < koidzuma\ ;
+復活 < fukkatsu\ ;
+人造藍 < jinzouai\ ;
+医学者 < igakusha\ ;
+悪感情 < akkanjou\ ;
+恫喝 < doukatsu\ ;
+未処分 < mishobun\ ;
+差配人 < sahainin\ ;
+低頻度 < teihindo\ ;
+作為犯 < sakuihan\ ;
+剣術 < kenjutsu\ ;
+厳律 < genritsu\ ;
+歯科用 < shikayou\ ;
+劫罰 < goubatsu\ ;
+彫琢 < choutaku\ ;
+化物 < bakemono\ ;
+薪割 < makiwari\ ;
+当直 < touchoku\ ;
+再処理 < saishori\ ;
+副虹 < fukuniji\ ;
+花茣蓙 < hanagoza\ ;
+北爆 < hokubaku\ ;
+玄武岩 < genbugan\ ;
+常食 < joushoku\ ;
+鰐鮫 < wanizame\ ;
+注入 < chuunyuu\ ;
+急峻 < kyuushun\ ;
+液状化 < ekijouka\ ;
+無利息 < murisoku\ ;
+陣羽織 < jinbaori\ ;
+鳩胸 < hatomune\ ;
+戦闘機 < sentouki\ ;
+有意的 < yuuiteki\ ;
+店賃 < tanachin\ ;
+問題児 < mondaiji\ ;
+心根 < kokorone\ ;
+冬鳥 < fuyudori\ ;
+協業 < kyougyou\ ;
+債務者 < saimusha\ ;
+凝集 < gyoushuu\ ;
+一騎討 < ikkiuchi\ ;
+補給路 < hokyuuro\ ;
+送達 < soutatsu\ ;
+彫物 < horimono\ ;
+底豆 < sokomame\ ;
+鳥肌 < torihada\ ;
+鳥肉 < toriniku\ ;
+母物 < hahamono\ ;
+形 < katachi\ ;
+轍 < wadachi\ ;
+巷 < chimata\ ;
+跣 < hadashi\ ;
+趣 < omomuki\ ;
+局 < tsubone\ ;
+寧 < mushiro\ ;
+獺 < kawauso\ ;
+狐 < kitsune\ ;
+嫂 < aniyome\ ;
+話 < hanashi\ ;
+燕 < tsubame\ ;
+滴 < shizuku\ ;
+湖 < mizuumi\ ;
+剣 < tsurugi\ ;
+凝 < shikori\ ;
+冠 < kanmuri\ ;
+椿 < tsubaki\ ;
+梟 < fukurou\ ;
+頂 < itadaki\ ;
+柱 < hashira\ ;
+俎 < manaita\ ;
+林 < hayashi\ ;
+侍 < samurai\ ;
+羊 < hitsuji\ ;
+東 < higashi\ ;
+昔 < mukashi\ ;
+経 < tateito\ ;
+錦 < nishiki\ ;
+私 < watashi\ ;
+祭 < matsuri\ ;
+社 < yashiro\ ;
+確 < tashika\ ;
+邸 < yashiki\ ;
+社共 < shakyou\ ;
+心材 < shinzai\ ;
+近間 < chikama\ ;
+去就 < kyoshuu\ ;
+前表 < zenpyou\ ;
+君側 < kunsoku\ ;
+追送 < tsuisou\ ;
+占有 < sen''yuu\ ;
+忌日 < kinichi\ ;
+占書 < urabumi\ ;
+帳面 < choumen\ ;
+直音 < chokuon\ ;
+功績 < kouseki\ ;
+民業 < mingyou\ ;
+薄命 < hakumei\ ;
+席順 < sekijun\ ;
+益鳥 < ekichou\ ;
+沖天 < chuuten\ ;
+下層土 < kasoudo\ ;
+応接 < ousetsu\ ;
+瞠若 < doujaku\ ;
+起動機 < kidouki\ ;
+後流 < kouryuu\ ;
+召喚 < shoukan\ ;
+引算 < hikizan\ ;
+帯革 < obikawa\ ;
+出金 < shukkin\ ;
+十字架 < juujika\ ;
+叫喚 < kyoukan\ ;
+吉凶 < kikkyou\ ;
+重圧 < juuatsu\ ;
+述部 < jutsubu\ ;
+鷲座 < washiza\ ;
+弓箭 < kyuusen\ ;
+分進 < bunshin\ ;
+菩薩 < bosatsu\ ;
+分速 < funsoku\ ;
+水撃 < suigeki\ ;
+沢地 < sawachi\ ;
+切迫 < seppaku\ ;
+南朝 < nanchou\ ;
+人工雨 < jinkouu\ ;
+念念 < nen''nen\ ;
+Ｎ響 < enukyou\ ;
+正続 < seizoku\ ;
+落第 < rakudai\ ;
+釣合 < tsuriai\ ;
+正絹 < shouken\ ;
+餓鬼道 < gakidou\ ;
+厳容 < gen''you\ ;
+進行 < shinkou\ ;
+吉兆 < kitchou\ ;
+不定期 < futeiki\ ;
+動的 < douteki\ ;
+同僚 < douryou\ ;
+正経 < seikyou\ ;
+北満 < hokuman\ ;
+半格 < hankaku\ ;
+通謀 < tsuubou\ ;
+模擬店 < mogiten\ ;
+召命 < shoumei\ ;
+通論 < tsuuron\ ;
+序説 < josetsu\ ;
+泥中 < deichuu\ ;
+底角 < teikaku\ ;
+割興 < warikou\ ;
+徳望 < tokubou\ ;
+急変 < kyuuhen\ ;
+口唇 < koushin\ ;
+鳥網 < toriami\ ;
+恭倹 < kyouken\ ;
+叫号 < kyougou\ ;
+古武道 < kobudou\ ;
+栄養素 < eiyouso\ ;
+刺衝 < shishou\ ;
+幽谷 < yuukoku\ ;
+鄙歌 < hinauta\ ;
+段物 < danmono\ ;
+同信 < doushin\ ;
+石盤 < sekiban\ ;
+死票 < shihyou\ ;
+割腹 < kappuku\ ;
+廐舎 < kyuusha\ ;
+通計 < tsuukei\ ;
+台北 < taihoku\ ;
+勤王 < kin''nou\ ;
+快復 < kaifuku\ ;
+民有 < min''yuu\ ;
+歴程 < rekitei\ ;
+破滅 < hametsu\ ;
+急増 < kyuuzou\ ;
+通解 < tsuukai\ ;
+判読 < handoku\ ;
+重唱 < juushou\ ;
+名作 < meisaku\ ;
+通観 < tsuukan\ ;
+弔祭 < chousai\ ;
+各停 < kakutei\ ;
+恩借 < onshaku\ ;
+史劇 < shigeki\ ;
+北洋 < hokuyou\ ;
+通覧 < tsuuran\ ;
+適者 < tekisha\ ;
+副腎 < fukujin\ ;
+社中 < shachuu\ ;
+追贈 < tsuizou\ ;
+急報 < kyuuhou\ ;
+師長 < shichou\ ;
+刀身 < toushin\ ;
+加筆 < kahitsu\ ;
+去声 < kyoshou\ ;
+名代 < myoudai\ ;
+匡正 < kyousei\ ;
+身勝手 < migatte\ ;
+合作 < gassaku\ ;
+無利子 < murishi\ ;
+従業 < juugyou\ ;
+半時 < hantoki\ ;
+落磐 < rakuban\ ;
+原審 < genshin\ ;
+毒液 < dokueki\ ;
+彼氏 < kareshi\ ;
+帝陵 < teiryou\ ;
+徳政 < tokusei\ ;
+民族 < minzoku\ ;
+遠耳 < toomimi\ ;
+瑠璃色 < ruriiro\ ;
+名主 < nanushi\ ;
+急坂 < kyuuhan\ ;
+初診 < shoshin\ ;
+広角 < koukaku\ ;
+吉事 < kitsuji\ ;
+氏族 < shizoku\ ;
+弔砲 < chouhou\ ;
+建策 < kensaku\ ;
+前葉 < zen''you\ ;
+通行 < tsuukou\ ;
+同一 < douitsu\ ;
+幾許 < ikubaku\ ;
+重厚 < choukou\ ;
+荷送 < niokuri\ ;
+復旧 < fukkyuu\ ;
+胃腸炎 < ichouen\ ;
+没収 < bosshuu\ ;
+廻章 < kaishou\ ;
+博捜 < hakusou\ ;
+知的 < chiteki\ ;
+各人 < kakujin\ ;
+残留 < zanryuu\ ;
+起動時 < kidouji\ ;
+幕軍 < bakugun\ ;
+建立 < konryuu\ ;
+沃地 < yokuchi\ ;
+遊興 < yuukyou\ ;
+復文 < fukubun\ ;
+合一 < gouitsu\ ;
+別表 < beppyou\ ;
+副署 < fukusho\ ;
+受取 < uketori\ ;
+心房 < shinbou\ ;
+古刹 < kosatsu\ ;
+労相 < roushou\ ;
+郭清 < kakusei\ ;
+出走 < shussou\ ;
+幻覚 < genkaku\ ;
+剛腹 < goufuku\ ;
+殺陣師 < tateshi\ ;
+類義語 < ruigigo\ ;
+歯石 < shiseki\ ;
+家計簿 < kakeibo\ ;
+恥丘 < chikyuu\ ;
+全麦 < zenbaku\ ;
+博打 < bakuchi\ ;
+追認 < tsuinin\ ;
+量刑 < ryoukei\ ;
+重刻 < juukoku\ ;
+確守 < kakushu\ ;
+登記簿 < toukibo\ ;
+追試 < tsuishi\ ;
+出資 < shusshi\ ;
+真贋 < shingan\ ;
+気持 < kimochi\ ;
+重母音 < juuboin\ ;
+平角 < heikaku\ ;
+正確 < seikaku\ ;
+追討 < tsuitou\ ;
+毬栗 < igaguri\ ;
+死病 < shibyou\ ;
+共鳴 < kyoumei\ ;
+反収 < tanshuu\ ;
+遅知恵 < osodjie\ ;
+忖度 < sontaku\ ;
+帯金 < obigane\ ;
+荘重 < souchou\ ;
+大過去 < daikako\ ;
+心情 < shinjou\ ;
+匹敵 < hitteki\ ;
+部活 < bukatsu\ ;
+野兎 < nousagi\ ;
+永年 < naganen\ ;
+加算器 < kasanki\ ;
+逆行 < gyakkou\ ;
+大相撲 < oozumou\ ;
+迅速 < jinsoku\ ;
+機能語 < kinougo\ ;
+後書 < atogaki\ ;
+前膊 < zenpaku\ ;
+金側 < kingawa\ ;
+心性 < shinsei\ ;
+述語 < jutsugo\ ;
+碧山 < hekizan\ ;
+沈吟 < chingin\ ;
+有気音 < yuukion\ ;
+前脳 < zen''nou\ ;
+年表 < nenpyou\ ;
+前脚 < maeashi\ ;
+歎称 < tanshou\ ;
+出講 < shukkou\ ;
+不条理 < fujouri\ ;
+刺草 < irakusa\ ;
+千振 < senburi\ ;
+心得 < kokoroe\ ;
+恒久 < koukyuu\ ;
+只今 < tadaima\ ;
+反則 < hansoku\ ;
+口供 < koukyou\ ;
+強火 < tsuyobi\ ;
+恋仲 < koinaka\ ;
+死球 < shikyuu\ ;
+助番 < sukeban\ ;
+後日 < gonichi\ ;
+配役 < haiyaku\ ;
+恋人 < koibito\ ;
+大道具 < oodougu\ ;
+定位置 < teiichi\ ;
+怪力 < kairiki\ ;
+征服 < seifuku\ ;
+母様 < kaasama\ ;
+真諦 < shintei\ ;
+弱点 < jakuten\ ;
+連荘 < renchan\ ;
+円顔 < marugao\ ;
+盲進 < moushin\ ;
+忠孝 < chuukou\ ;
+鳥瞰 < choukan\ ;
+幼虫 < youchuu\ ;
+落球 < rakkyuu\ ;
+巨額 < kyogaku\ ;
+割算 < warizan\ ;
+運送屋 < unsouya\ ;
+造営費 < zoueihi\ ;
+反共 < hankyou\ ;
+残照 < zanshou\ ;
+北東 < hokutou\ ;
+逸聞 < itsubun\ ;
+酒席 < shuseki\ ;
+石炭 < sekitan\ ;
+氷山 < hyouzan\ ;
+引率 < insotsu\ ;
+延着 < enchaku\ ;
+氷屋 < kooriya\ ;
+危局 < kikyoku\ ;
+蒙古語 < moukogo\ ;
+凸角 < tokkaku\ ;
+目送 < mokusou\ ;
+機械科 < kikaika\ ;
+直輸 < chokuyu\ ;
+砕氷 < saihyou\ ;
+真言 < shingon\ ;
+建白 < kenpaku\ ;
+武略 < buryaku\ ;
+性分 < shoubun\ ;
+冗長 < jouchou\ ;
+確報 < kakuhou\ ;
+座職 < zashoku\ ;
+口中 < kouchuu\ ;
+冷酷 < reikoku\ ;
+次年度 < jinendo\ ;
+殴殺 < ousatsu\ ;
+入魂 < nyuukon\ ;
+志学 < shigaku\ ;
+多重化 < tajuuka\ ;
+往日 < oujitsu\ ;
+求婚 < kyuukon\ ;
+延発 < enpatsu\ ;
+千代女 < chiyojo\ ;
+真西 < manishi\ ;
+古社寺 < koshaji\ ;
+弓状 < kyuujou\ ;
+醜名 < shuumei\ ;
+民心 < minshin\ ;
+権高 < kendaka\ ;
+一層目 < issoume\ ;
+民徳 < mintoku\ ;
+反俗 < hanzoku\ ;
+決勝 < kesshou\ ;
+内陸 < nairiku\ ;
+直路 < chokuro\ ;
+適確 < tekkaku\ ;
+茶釜 < chagama\ ;
+娑婆気 < shabake\ ;
+辛酸 < shinsan\ ;
+希釈 < kishaku\ ;
+凶行 < kyoukou\ ;
+毎朝 < maichou\ ;
+白鯨 < hakugei\ ;
+半弓 < hankyuu\ ;
+励磁機 < reijiki\ ;
+不首尾 < fushubi\ ;
+初荷 < hatsuni\ ;
+北支 < hokushi\ ;
+悪感化 < akkanka\ ;
+待避所 < taihijo\ ;
+内閲 < naietsu\ ;
+内閣 < naikaku\ ;
+配属 < haizoku\ ;
+蔵匿 < zoutoku\ ;
+師走 < shiwasu\ ;
+沈倫 < chinrin\ ;
+酒客 < shukaku\ ;
+比日 < hinichi\ ;
+原告 < genkoku\ ;
+四股名 < shikona\ ;
+白魚 < shirauo\ ;
+半年 < han''nen\ ;
+運筆 < unpitsu\ ;
+鷹匠 < takajou\ ;
+歴然 < rekizen\ ;
+不人気 < funinki\ ;
+公領 < kouryou\ ;
+近親 < kinshin\ ;
+急使 < kyuushi\ ;
+剽盗 < hyoutou\ ;
+幼若 < youjaku\ ;
+西欧化 < seiouka\ ;
+全額 < zengaku\ ;
+標高 < hyoukou\ ;
+即売 < sokubai\ ;
+二階屋 < nikaiya\ ;
+千度 < chitabi\ ;
+強気 < tsuyoki\ ;
+棒暗記 < bouanki\ ;
+庁舎 < chousha\ ;
+劇界 < gekikai\ ;
+千年 < chitose\ ;
+不一致 < fuitchi\ ;
+血反吐 < chihedo\ ;
+劇甚 < gekijin\ ;
+横顔 < yokogao\ ;
+曳火弾 < eikadan\ ;
+勧業 < kangyou\ ;
+凝視 < gyoushi\ ;
+刺繍 < shishuu\ ;
+瞠目 < doumoku\ ;
+再録 < sairoku\ ;
+真虫 < mamushi\ ;
+鳥獣 < choujuu\ ;
+徹宵 < tesshou\ ;
+卑屈 < hikutsu\ ;
+加熱 < kanetsu\ ;
+簡素化 < kansoka\ ;
+個体差 < kotaisa\ ;
+再鋳 < saichuu\ ;
+氷塊 < hyoukai\ ;
+同音語 < douongo\ ;
+卒寿 < sotsuju\ ;
+強欲 < gouyoku\ ;
+協定 < kyoutei\ ;
+兵長 < heichou\ ;
+酌婦 < shakufu\ ;
+砲撃 < hougeki\ ;
+気密 < kimitsu\ ;
+選球 < senkyuu\ ;
+原則 < gensoku\ ;
+共闘 < kyoutou\ ;
+乗務員 < joumuin\ ;
+直諫 < chokkan\ ;
+裏木戸 < urakido\ ;
+発馬 < hatsuba\ ;
+刺絡 < shiraku\ ;
+全集 < zenshuu\ ;
+卓子 < teiburu\ ;
+直談 < jikidan\ ;
+入電 < nyuuden\ ;
+前章 < zenshou\ ;
+石段 < ishidan\ ;
+武烈 < buretsu\ ;
+直話 < chokuwa\ ;
+磁力 < jiryoku\ ;
+水垢 < mizuaka\ ;
+平臼 < hirausu\ ;
+役所 < yakusho\ ;
+適用 < tekiyou\ ;
+連続 < renzoku\ ;
+卵嚢 < ran''nou\ ;
+氏寺 < ujidera\ ;
+入隊 < nyuutai\ ;
+心外 < shingai\ ;
+金毘羅 < konpira\ ;
+半宵 < hanshou\ ;
+連絡 < renraku\ ;
+制約 < seiyaku\ ;
+瞑目 < meimoku\ ;
+力点 < rikiten\ ;
+水圧 < suiatsu\ ;
+幻聴 < genchou\ ;
+標題 < hyoudai\ ;
+氷嚢 < hyounou\ ;
+念力 < nenriki\ ;
+無造作 < muzousa\ ;
+直覧 < jikiran\ ;
+千尋 < chihiro\ ;
+全長 < zenchou\ ;
+博大 < hakudai\ ;
+十二時 < juuniji\ ;
+落涙 < rakurui\ ;
+内金 < uchikin\ ;
+登頂 < touchou\ ;
+盗賊 < touzoku\ ;
+博士 < hakushi\ ;
+意想外 < isougai\ ;
+不安定 < fuantei\ ;
+発音 < hatsuon\ ;
+入門 < nyuumon\ ;
+毒手 < dokushu\ ;
+石橋 < sekkyou\ ;
+真菌 < shinkin\ ;
+白面 < hakumen\ ;
+徹夜 < tetsuya\ ;
+陰電気 < indenki\ ;
+石槨 < sekkaku\ ;
+切腹 < seppuku\ ;
+忠君 < chuukun\ ;
+薄馬鹿 < usubaka\ ;
+蔵人 < kuroudo\ ;
+年老 < toshioi\ ;
+苔類 < kokerui\ ;
+丁字路 < teijiro\ ;
+発露 < hatsuro\ ;
+兇類 < kyourui\ ;
+途絶 < tozetsu\ ;
+直行 < chokkou\ ;
+力漕 < rikisou\ ;
+占地 < shimeji\ ;
+心地 < kokochi\ ;
+提示部 < teijibu\ ;
+先頃 < senkoro\ ;
+死毒 < shidoku\ ;
+慰問品 < imonhin\ ;
+府立 < furitsu\ ;
+原作 < gensaku\ ;
+印哲 < intetsu\ ;
+冷評 < reihyou\ ;
+心因 < shin''in\ ;
+速算 < sokusan\ ;
+厄前 < yakumae\ ;
+残業 < zangyou\ ;
+荒行 < aragyou\ ;
+内通 < naitsuu\ ;
+親文字 < oyamoji\ ;
+勝景 < shoukei\ ;
+瞭然 < ryouzen\ ;
+従属 < juuzoku\ ;
+弦楽 < gengaku\ ;
+劃然 < kakuzen\ ;
+即吟 < sokugin\ ;
+千姫 < senhime\ ;
+忠勤 < chuukin\ ;
+忠勇 < chuuyuu\ ;
+理財家 < rizaika\ ;
+冷覚 < reikaku\ ;
+通算 < tsuusan\ ;
+逆縁 < gyakuen\ ;
+有耶無耶 < uyamuya\ ;
+稽古日 < keikobi\ ;
+初級 < shokyuu\ ;
+毒性 < dokusei\ ;
+巡遊 < jun''yuu\ ;
+従容 < shouyou\ ;
+南国 < nangoku\ ;
+二塁打 < niruida\ ;
+強暴 < kyoubou\ ;
+幕舎 < bakusha\ ;
+氷原 < hyougen\ ;
+平織 < hiraori\ ;
+応力 < ouryoku\ ;
+勝敗 < shouhai\ ;
+手相見 < tesoumi\ ;
+求刑 < kyuukei\ ;
+夜盗蛾 < yotouga\ ;
+巻貝 < makigai\ ;
+式次 < shikiji\ ;
+写象 < shashou\ ;
+女性美 < joseibi\ ;
+残柱 < zanchuu\ ;
+石材 < sekizai\ ;
+風邪声 < kazegoe\ ;
+厭世家 < enseika\ ;
+邦楽 < hougaku\ ;
+剣玉 < kendama\ ;
+北嶺 < hokurei\ ;
+年給 < nenkyuu\ ;
+全量 < zenryou\ ;
+後学 < kougaku\ ;
+還流 < kanryuu\ ;
+即刻 < sokkoku\ ;
+凶聞 < kyoubun\ ;
+民国 < minkoku\ ;
+入金 < nyuukin\ ;
+剛球 < goukyuu\ ;
+熨斗目 < noshime\ ;
+半国 < hangoku\ ;
+永別 < eibetsu\ ;
+酷使 < kokushi\ ;
+快作 < kaisaku\ ;
+印刷 < insatsu\ ;
+追納 < tsuinou\ ;
+氷刃 < hyoujin\ ;
+陰謀家 < inbouka\ ;
+六道 < rokudou\ ;
+北岸 < hokugan\ ;
+送籍 < souseki\ ;
+別称 < besshou\ ;
+随意筋 < zuiikin\ ;
+庭番 < niwaban\ ;
+農薬 < nouyaku\ ;
+遊猟 < yuuryou\ ;
+登録 < touroku\ ;
+占卜 < senboku\ ;
+手加減 < tekagen\ ;
+讚美歌 < sanbika\ ;
+葉月 < hadzuki\ ;
+巨賊 < kyozoku\ ;
+華燭 < kashoku\ ;
+当惑 < touwaku\ ;
+分納 < bun''nou\ ;
+初穂 < hatsuho\ ;
+必勝 < hisshou\ ;
+白銑 < hakusen\ ;
+全速 < zensoku\ ;
+入選 < nyuusen\ ;
+全通 < zentsuu\ ;
+白銅 < hakudou\ ;
+白銀 < hakugin\ ;
+入道 < nyuudou\ ;
+邪曲 < jakyoku\ ;
+卜占 < bokusen\ ;
+同位体 < douitai\ ;
+工賃 < kouchin\ ;
+氷像 < hyouzou\ ;
+類音語 < ruiongo\ ;
+遊牧 < yuuboku\ ;
+週番 < shuuban\ ;
+心労 < shinrou\ ;
+初秋 < shoshuu\ ;
+幾程 < ikuhodo\ ;
+残敵 < zanteki\ ;
+通研 < tsuuken\ ;
+協同 < kyoudou\ ;
+平等 < byoudou\ ;
+叉手網 < sadeami\ ;
+即値 < sokuchi\ ;
+通知 < tsuuchi\ ;
+療養 < ryouyou\ ;
+年端 < toshiha\ ;
+庭球 < teikyuu\ ;
+殉教 < junkyou\ ;
+歌沢 < utazawa\ ;
+勁敵 < keiteki\ ;
+再調 < saichou\ ;
+再読 < saidoku\ ;
+求人 < kyuujin\ ;
+功業 < kougyou\ ;
+色黒 < iroguro\ ;
+南北 < nanboku\ ;
+小綬鶏 < kojukei\ ;
+博労 < bakurou\ ;
+晴雨計 < seiukei\ ;
+文庫化 < bunkoka\ ;
+破局 < hakyoku\ ;
+正業 < seigyou\ ;
+野次馬 < yajiuma\ ;
+帯芯 < obishin\ ;
+半周 < hanshuu\ ;
+遡源 < sakugen\ ;
+全身 < zenshin\ ;
+毒害 < dokugai\ ;
+街路樹 < gairoju\ ;
+内諾 < naidaku\ ;
+幸福 < koufuku\ ;
+勤恪 < kinkaku\ ;
+出精 < shussei\ ;
+復命 < fukumei\ ;
+若造 < wakazou\ ;
+店番 < miseban\ ;
+魍魎 < mouryou\ ;
+控訴院 < kousoin\ ;
+適法 < tekihou\ ;
+優長 < yuuchou\ ;
+忙中 < bouchuu\ ;
+卑劣 < hiretsu\ ;
+利発 < rihatsu\ ;
+仙人掌 < saboten\ ;
+復号 < fukugou\ ;
+心像 < shinzou\ ;
+連用 < ren''you\ ;
+気力 < kiryoku\ ;
+段平 < danbira\ ;
+共販 < kyouhan\ ;
+内証 < naishou\ ;
+内診 < naishin\ ;
+削片 < sakuhen\ ;
+復原 < fukugen\ ;
+発進 < hasshin\ ;
+弔文 < choubun\ ;
+北天 < hokuten\ ;
+北大 < hokudai\ ;
+元金 < motokin\ ;
+若輩 < jakuhai\ ;
+益虫 < ekichuu\ ;
+徳利 < tokkuri\ ;
+勁捷 < keishou\ ;
+必修 < hisshuu\ ;
+盲腸 < mouchou\ ;
+徳分 < tokubun\ ;
+蒸器 < mushiki\ ;
+微力 < biryoku\ ;
+匿名 < tokumei\ ;
+庵点 < ioriten\ ;
+延棒 < nobebou\ ;
+常習 < joushuu\ ;
+制球 < seikyuu\ ;
+分秒 < funbyou\ ;
+歓楽 < kanraku\ ;
+水中 < suichuu\ ;
+部局 < bukyoku\ ;
+凍肉 < touniku\ ;
+通用 < tsuuyou\ ;
+草色 < kusairo\ ;
+北境 < hokkyou\ ;
+魂魄 < konpaku\ ;
+徴兵 < chouhei\ ;
+配信 < haishin\ ;
+逗留 < touryuu\ ;
+適正 < tekisei\ ;
+正朝 < seichou\ ;
+正朔 < seisaku\ ;
+凄腕 < sugoude\ ;
+光速 < kousoku\ ;
+勘忍 < kan''nin\ ;
+先進 < senshin\ ;
+先週 < senshuu\ ;
+入貢 < nyuukou\ ;
+酒代 < sakadai\ ;
+白身 < shiromi\ ;
+巫術 < fujutsu\ ;
+速球 < sokkyuu\ ;
+返納 < hen''nou\ ;
+復刻 < fukkoku\ ;
+軽震 < keishin\ ;
+荒肝 < aragimo\ ;
+出穂 < shussui\ ;
+引換 < hikikae\ ;
+輻輳 < fukusou\ ;
+欲求 < yokkyuu\ ;
+延板 < nobeita\ ;
+真空 < shinkuu\ ;
+眼目 < ganmoku\ ;
+引接 < insetsu\ ;
+色魔 < shikima\ ;
+必中 < hitchuu\ ;
+輪郭 < rinkaku\ ;
+義援金 < gienkin\ ;
+単作 < tansaku\ ;
+省線 < shousen\ ;
+弾幕 < danmaku\ ;
+年益 < nen''eki\ ;
+復党 < fukutou\ ;
+光軸 < koujiku\ ;
+廿日 < hatsuka\ ;
+弱志 < jakushi\ ;
+北国 < hokkoku\ ;
+強弁 < kyouben\ ;
+還暦 < kanreki\ ;
+励振 < reishin\ ;
+辞色 < jishoku\ ;
+出社 < shussha\ ;
+草肥 < kusagoe\ ;
+利率 < riritsu\ ;
+発足 < hossoku\ ;
+公評 < kouhyou\ ;
+公証 < koushou\ ;
+十六 < juuroku\ ;
+別珍 < betchin\ ;
+協会 < kyoukai\ ;
+俯瞰図 < fukanzu\ ;
+御新香 < oshinko\ ;
+亜米利加 < amerika\ ;
+区別 < kubetsu\ ;
+千億 < sen''oku\ ;
+気位 < kigurai\ ;
+御家人 < gokenin\ ;
+弱弟 < jakutei\ ;
+共襟 < tomoeri\ ;
+眼病 < ganbyou\ ;
+六角 < rokkaku\ ;
+卒伍 < sotsugo\ ;
+大寺院 < daijiin\ ;
+殯宮 < hinkyuu\ ;
+研学 < kengaku\ ;
+残念 < zan''nen\ ;
+荷積 < nidzumi\ ;
+南中 < nanchuu\ ;
+冷肉 < reiniku\ ;
+落手 < rakushu\ ;
+相続 < souzoku\ ;
+残忍 < zan''nin\ ;
+気付 < kidzuke\ ;
+入試 < nyuushi\ ;
+残心 < zanshin\ ;
+烏羽玉 < ubatama\ ;
+創業 < sougyou\ ;
+凡策 < bonsaku\ ;
+勉強 < benkyou\ ;
+共裏 < tomoura\ ;
+後厄 < atoyaku\ ;
+落成 < rakusei\ ;
+全角 < zenkaku\ ;
+弱年 < jakunen\ ;
+勧学 < kangaku\ ;
+半作 < hansaku\ ;
+庶流 < shoryuu\ ;
+性行為 < seikoui\ ;
+歴戦 < rekisen\ ;
+一般化 < ippanka\ ;
+川蝦 < kawaebi\ ;
+歌曲 < kakyoku\ ;
+待合 < machiai\ ;
+帰結 < kiketsu\ ;
+石庭 < sekitei\ ;
+卒中 < sotchuu\ ;
+卓上 < takujou\ ;
+充足 < juusoku\ ;
+茶腹 < chabara\ ;
+免責 < menseki\ ;
+荒縄 < aranawa\ ;
+僻隅 < hekiguu\ ;
+劇暑 < gekisho\ ;
+直経 < chokkei\ ;
+十五夜 < juugoya\ ;
+目縁 < mabuchi\ ;
+僻陬 < hekisuu\ ;
+遍歴 < henreki\ ;
+帯紙 < obigami\ ;
+干瓢 < kanpyou\ ;
+償金 < shoukin\ ;
+氏人 < ujihito\ ;
+知徳 < chitoku\ ;
+遊歴 < yuureki\ ;
+二院制 < niinsei\ ;
+公衆 < koushuu\ ;
+先負 < senmake\ ;
+眼球 < gankyuu\ ;
+帽章 < boushou\ ;
+近称 < kinshou\ ;
+発議 < hatsugi\ ;
+出監 < shukkan\ ;
+送球 < soukyuu\ ;
+家政婦 < kaseifu\ ;
+良風 < ryoufuu\ ;
+分留 < bunryuu\ ;
+勘審 < kanshin\ ;
+適材 < tekizai\ ;
+邀撃 < yougeki\ ;
+連濁 < rendaku\ ;
+第二義 < dainigi\ ;
+歿後 < botsugo\ ;
+円軌道 < enkidou\ ;
+真相 < shinsou\ ;
+真直 < massugu\ ;
+役名 < yakumei\ ;
+従僕 < juuboku\ ;
+道楽 < douraku\ ;
+瞬断 < shundan\ ;
+野葡萄 < nobudou\ ;
+発語 < hatsugo\ ;
+勧奨 < kanshou\ ;
+力投 < rikitou\ ;
+刑獄 < keigoku\ ;
+百計 < hyakkei\ ;
+千両 < senryou\ ;
+後先 < atosaki\ ;
+十九 < juukyuu\ ;
+発話 < hatsuwa\ ;
+北半 < hokuhan\ ;
+廃業 < haigyou\ ;
+発註 < hatchuu\ ;
+十両 < juuryou\ ;
+力戦 < rikisen\ ;
+十七 < juunana\ ;
+十一 < juuichi\ ;
+引当 < hikiate\ ;
+逸民 < itsumin\ ;
+律儀 < richigi\ ;
+応募者 < oubosha\ ;
+前歴 < zenreki\ ;
+副本 < fukuhon\ ;
+艱難 < kan''nan\ ;
+麻実油 < asamiyu\ ;
+茶飯事 < sahanji\ ;
+式微 < shikibi\ ;
+遊楽 < yuuraku\ ;
+軽量 < keiryou\ ;
+軽重 < keichou\ ;
+目算 < mokusan\ ;
+出産 < shussan\ ;
+発覚 < hakkaku\ ;
+進水 < shinsui\ ;
+八重雲 < yaeguma\ ;
+欲望 < yokubou\ ;
+勇将 < yuushou\ ;
+盟約 < meiyaku\ ;
+相称 < soushou\ ;
+彼処 < kashiko\ ;
+矮小 < waishou\ ;
+睫毛 < matsuge\ ;
+邸宅 < teitaku\ ;
+目端 < mehashi\ ;
+勉学 < bengaku\ ;
+鯨肉 < geiniku\ ;
+優越 < yuuetsu\ ;
+百行 < hyakkou\ ;
+近眼 < chikame\ ;
+菌毒 < kindoku\ ;
+歴年 < rekinen\ ;
+未踏査 < mitousa\ ;
+弓師 < yumishi\ ;
+先覚 < senkaku\ ;
+後作 < atosaku\ ;
+巨舶 < kyohaku\ ;
+底流 < teiryuu\ ;
+絵葉書 < ehagaki\ ;
+発表 < happyou\ ;
+選択 < sentaku\ ;
+欠格 < kekkaku\ ;
+共著 < kyoucho\ ;
+稽古場 < keikoba\ ;
+広漠 < koubaku\ ;
+草笛 < kusabue\ ;
+勝報 < shouhou\ ;
+初潮 < shochou\ ;
+助平 < sukebei\ ;
+安全期 < anzenki\ ;
+強大 < kyoudai\ ;
+反意語 < han''igo\ ;
+輪読 < rindoku\ ;
+知将 < chishou\ ;
+内膜 < naimaku\ ;
+強壮 < kyousou\ ;
+役僧 < yakusou\ ;
+個人差 < kojinsa\ ;
+劇戦 < gekisen\ ;
+総務部 < soumubu\ ;
+毒刃 < dokujin\ ;
+白蝋 < hakurou\ ;
+帆綱 < hodzuna\ ;
+軍長 < gunchou\ ;
+力役 < rikieki\ ;
+警部補 < keibuho\ ;
+冷笑 < reishou\ ;
+与太郎 < yotarou\ ;
+茶粥 < chagayu\ ;
+廻心 < kaishin\ ;
+看病 < kanbyou\ ;
+目礼 < mokurei\ ;
+輸血 < yuketsu\ ;
+位牌堂 < ihaidou\ ;
+勝地 < shouchi\ ;
+初湯 < hatsuyu\ ;
+義太夫 < gidayuu\ ;
+凶猛 < kyoumou\ ;
+三鞭酒 < shanpen\ ;
+艦長 < kanchou\ ;
+妃殿下 < hidenka\ ;
+凍石 < touseki\ ;
+制欲 < seiyoku\ ;
+出版 < shuppan\ ;
+弟嫁 < otoyome\ ;
+凶状 < kyoujou\ ;
+樺色 < kabairo\ ;
+退潮 < taichou\ ;
+砂地 < sunachi\ ;
+道教 < doukyou\ ;
+漫画家 < mangaka\ ;
+過日 < kajitsu\ ;
+転針 < tenshin\ ;
+茶箱 < chabako\ ;
+帰着 < kichaku\ ;
+適所 < tekisho\ ;
+僻邑 < hekiyuu\ ;
+不本意 < fuhon''i\ ;
+歎息 < tansoku\ ;
+苛虐 < kagyaku\ ;
+歩合算 < buaizan\ ;
+彫像 < chouzou\ ;
+語彙的 < goiteki\ ;
+石塔 < sekitou\ ;
+返球 < henkyuu\ ;
+石塀 < ishibei\ ;
+弟姫 < otohime\ ;
+利殖 < rishoku\ ;
+役人 < yakunin\ ;
+辱知 < jokuchi\ ;
+勧告 < kankoku\ ;
+盲目 < moumoku\ ;
+痛風 < tsuufuu\ ;
+逸材 < itsuzai\ ;
+第一課 < daiikka\ ;
+出炭 < shuttan\ ;
+弱国 < jakkoku\ ;
+荷物 < nimotsu\ ;
+北上 < hokujou\ ;
+井戸端 < idobata\ ;
+副手 < fukushu\ ;
+剽悍 < hyoukan\ ;
+色里 < irozato\ ;
+理事会 < rijikai\ ;
+盤石 < banjaku\ ;
+農相 < noushou\ ;
+遊撃 < yuugeki\ ;
+火曜日 < kayoubi\ ;
+入舎 < nyuusha\ ;
+御不浄 < gofujou\ ;
+逐次 < chikuji\ ;
+辺疆 < henkyou\ ;
+前方 < maekata\ ;
+白菜 < hakusai\ ;
+未定義 < miteigi\ ;
+割愛 < katsuai\ ;
+監督 < kantoku\ ;
+躁鬱 < souutsu\ ;
+楽隊 < gakutai\ ;
+殉国 < junkoku\ ;
+逆比 < gyakuhi\ ;
+対位法 < taiihou\ ;
+冥福 < meifuku\ ;
+睦月 < mutsuki\ ;
+刻本 < kokuhon\ ;
+正子 < shoushi\ ;
+幽欝 < yuuutsu\ ;
+殺傷 < sasshou\ ;
+浮浪児 < furouji\ ;
+婦人科 < fujinka\ ;
+内約 < naiyaku\ ;
+強味 < tsuyomi\ ;
+剣戟 < kengeki\ ;
+返照 < henshou\ ;
+艇長 < teichou\ ;
+他世界 < tasekai\ ;
+適当 < tekitou\ ;
+慰労金 < iroukin\ ;
+権能 < ken''nou\ ;
+正嫡 < seiteki\ ;
+欲情 < yokujou\ ;
+座敷 < zashiki\ ;
+楼閣 < roukaku\ ;
+分注 < bunchuu\ ;
+包丁 < houchou\ ;
+発芽 < hatsuga\ ;
+進数 < shinsuu\ ;
+理不尽 < rifujin\ ;
+百般 < hyappan\ ;
+出渠 < shukkyo\ ;
+単坐機 < tanzaki\ ;
+落城 < rakujou\ ;
+割当 < wariate\ ;
+欲念 < yokunen\ ;
+樟脳 < shounou\ ;
+不飽和 < fuhouwa\ ;
+近火 < chikabi\ ;
+別格 < bekkaku\ ;
+疾風 < shippuu\ ;
+落地 < rakuchi\ ;
+共編 < kyouhen\ ;
+此奴 < koyatsu\ ;
+盗癖 < touheki\ ;
+船長 < senchou\ ;
+代議員 < daigiin\ ;
+研修 < kenshuu\ ;
+刷新 < sasshin\ ;
+非合理 < higouri\ ;
+殿中 < denchuu\ ;
+強力 < gouriki\ ;
+序曲 < jokyoku\ ;
+総務課 < soumuka\ ;
+床板 < yukaita\ ;
+通有 < tsuuyuu\ ;
+兵糧 < hyourou\ ;
+盆石 < bonseki\ ;
+欣悦 < kinetsu\ ;
+典籍 < tenseki\ ;
+道徳 < doutoku\ ;
+病難 < byounan\ ;
+力士 < rikishi\ ;
+椰子油 < yashiyu\ ;
+車輛 < sharyou\ ;
+兵籍 < heiseki\ ;
+速断 < sokudan\ ;
+車軸 < shajiku\ ;
+内積 < naiseki\ ;
+剣形 < kengata\ ;
+荒物 < aramono\ ;
+盲爆 < moubaku\ ;
+僻論 < hekiron\ ;
+強兵 < kyouhei\ ;
+公約 < kouyaku\ ;
+段丘 < dankyuu\ ;
+農牧 < nouboku\ ;
+入綿 < irewata\ ;
+水泳着 < suieigi\ ;
+横線 < yokosen\ ;
+白羽 < shiraha\ ;
+峻険 < shunken\ ;
+巫祝 < fushuku\ ;
+軸装 < jikusou\ ;
+監獄 < kangoku\ ;
+別時 < betsuji\ ;
+弔問 < choumon\ ;
+全級 < zenkyuu\ ;
+内福 < naifuku\ ;
+写真 < shashin\ ;
+凝滞 < gyoutai\ ;
+道床 < doushou\ ;
+殊勝 < shushou\ ;
+軍足 < gunsoku\ ;
+僻言 < hekigen\ ;
+絵草紙 < ezoushi\ ;
+剣幕 < kenmaku\ ;
+凶歳 < kyousai\ ;
+剛強 < goukyou\ ;
+分業 < bungyou\ ;
+転調 < tenchou\ ;
+歌姫 < utahime\ ;
+遠山 < tooyama\ ;
+横糸 < yokoito\ ;
+次式 < jishiki\ ;
+遊弋 < yuuyoku\ ;
+遺失 < ishitsu\ ;
+選奨 < senshou\ ;
+僻見 < hekiken\ ;
+花葵 < hanaaoi\ ;
+落命 < rakumei\ ;
+遊廓 < yuukaku\ ;
+樹立 < juritsu\ ;
+魔術 < majutsu\ ;
+凡流 < bonryuu\ ;
+舌音 < zetsuon\ ;
+初日 < hatsuhi\ ;
+引受 < hikiuke\ ;
+劇変 < gekihen\ ;
+建国 < kenkoku\ ;
+短冊 < tanzaku\ ;
+石像 < sekizou\ ;
+督戦 < tokusen\ ;
+眺望 < choubou\ ;
+劇壇 < gekidan\ ;
+近況 < kinkyou\ ;
+欠席 < kesseki\ ;
+巨石 < kyoseki\ ;
+歴史 < rekishi\ ;
+平服 < heifuku\ ;
+転覆 < tenpuku\ ;
+機略 < kiryaku\ ;
+小犬座 < koinuza\ ;
+劇場 < gekijou\ ;
+身近 < midjika\ ;
+逆旅 < gekiryo\ ;
+身辺 < shinpen\ ;
+分析 < bunseki\ ;
+弱体 < jakutai\ ;
+横笛 < yokobue\ ;
+発給 < hakkyuu\ ;
+軽薄 < keihaku\ ;
+引力 < inryoku\ ;
+円盆 < marubon\ ;
+赤味噌 < akamiso\ ;
+著作 < chosaku\ ;
+痩身 < soushin\ ;
+花色 < hanairo\ ;
+速成 < sokusei\ ;
+左直 < sachoku\ ;
+前年 < zen''nen\ ;
+送料 < souryou\ ;
+鱗木 < rinboku\ ;
+白粉 < oshiroi\ ;
+内的 < naiteki\ ;
+苦節 < kusetsu\ ;
+白米 < hakumai\ ;
+短信 < tanshin\ ;
+横穴 < yokoana\ ;
+極道 < gokudou\ ;
+対義語 < taigigo\ ;
+眷族 < kenzoku\ ;
+道学 < dougaku\ ;
+側面 < sokumen\ ;
+幣束 < heisoku\ ;
+助勢 < sukezei\ ;
+功名 < koumyou\ ;
+艇身 < teishin\ ;
+汚染菌 < osenkin\ ;
+過密 < kamitsu\ ;
+三日路 < mikkaji\ ;
+努力 < doryoku\ ;
+居酒屋 < izakaya\ ;
+庭師 < niwashi\ ;
+骨骼 < kokkaku\ ;
+助力 < joryoku\ ;
+追放 < tsuihou\ ;
+自家製 < jikasei\ ;
+遊学 < yuugaku\ ;
+歳入 < sainyuu\ ;
+鳩合 < kyuugou\ ;
+欠字 < ketsuji\ ;
+塗布剤 < tofuzai\ ;
+正北 < seihoku\ ;
+傷跡 < kizuato\ ;
+武力 < buryoku\ ;
+適地 < tekichi\ ;
+功力 < kouriki\ ;
+古典語 < kotengo\ ;
+荒波 < aranami\ ;
+近業 < kingyou\ ;
+真書 < shinsho\ ;
+庵室 < anjitsu\ ;
+共益 < kyoueki\ ;
+通性 < tsuusei\ ;
+正則 < seisoku\ ;
+鬱血 < ukketsu\ ;
+兼用 < ken''you\ ;
+労作 < rousaku\ ;
+通念 < tsuunen\ ;
+凋残 < chouzan\ ;
+不景気 < fukeiki\ ;
+冷涼 < reiryou\ ;
+軽舟 < keishuu\ ;
+落体 < rakutai\ ;
+連年 < ren''nen\ ;
+切換 < kirikae\ ;
+痕跡 < konseki\ ;
+合理化 < gourika\ ;
+干拓 < kantaku\ ;
+死人 < shibito\ ;
+公的 < kouteki\ ;
+建前 < tatemae\ ;
+切掛 < kikkake\ ;
+進展 < shinten\ ;
+欠如 < ketsujo\ ;
+骨頂 < kotchou\ ;
+横着 < ouchaku\ ;
+分掌 < bunshou\ ;
+弁償 < benshou\ ;
+拉丁語 < ratengo\ ;
+刑戮 < keiriku\ ;
+通弊 < tsuuhei\ ;
+発祥 < hasshou\ ;
+通弁 < tsuuben\ ;
+歴伝 < rekiden\ ;
+幽愁 < yuushuu\ ;
+落人 < ochuudo\ ;
+入監 < nyuukan\ ;
+死中 < shichuu\ ;
+歴任 < rekinin\ ;
+別後 < betsugo\ ;
+電磁波 < denjiha\ ;
+歴代 < rekidai\ ;
+共用 < kyouyou\ ;
+極貧 < gokuhin\ ;
+共産 < kyousan\ ;
+権益 < ken''eki\ ;
+幻惑 < genwaku\ ;
+転落 < tenraku\ ;
+幕政 < bakusei\ ;
+県有 < ken''yuu\ ;
+追懐 < tsuikai\ ;
+魚腹 < gyofuku\ ;
+通常 < tsuujou\ ;
+追憶 < tsuioku\ ;
+躊躇 < chuucho\ ;
+鬼蓮 < onibasu\ ;
+真摯 < shinshi\ ;
+電磁気 < denjiki\ ;
+皆目 < kaimoku\ ;
+白砂 < hakusha\ ;
+概評 < gaihyou\ ;
+弋人 < yokujin\ ;
+凝望 < gyoubou\ ;
+傾角 < keikaku\ ;
+典獄 < tengoku\ ;
+鯛焼 < taiyaki\ ;
+適合 < tekigou\ ;
+劇剤 < gekizai\ ;
+別席 < besseki\ ;
+元禄 < genroku\ ;
+傾覆 < keifuku\ ;
+魚肉 < gyoniku\ ;
+入用 < nyuuyou\ ;
+白眼 < hakugan\ ;
+荒業 < arawaza\ ;
+刺子 < sashiko\ ;
+正体 < shoutai\ ;
+逆徒 < gyakuto\ ;
+山麓 < sanroku\ ;
+迎春 < geishun\ ;
+白目 < shirome\ ;
+列強 < rekkyou\ ;
+農業 < nougyou\ ;
+切愛 < setsuai\ ;
+候鳥 < kouchou\ ;
+栄養価 < eiyouka\ ;
+還俗 < genzoku\ ;
+速射 < sokusha\ ;
+迷惑 < meiwaku\ ;
+逼塞 < hissoku\ ;
+痛言 < tsuugen\ ;
+初巳 < hatsumi\ ;
+第二次 < dainiji\ ;
+疾走 < shissou\ ;
+列座 < retsuza\ ;
+着座 < chakuza\ ;
+茶殻 < chagara\ ;
+追従 < tsuijuu\ ;
+正中 < seichuu\ ;
+躬行 < kyuukou\ ;
+白痴 < hakuchi\ ;
+井戸水 < idomizu\ ;
+凶手 < kyoushu\ ;
+市況 < shikyou\ ;
+列席 < resseki\ ;
+帝業 < teigyou\ ;
+前垂 < maedare\ ;
+一個人 < ikkojin\ ;
+亡祖父 < bousofu\ ;
+御朱印 < goshuin\ ;
+着工 < chakkou\ ;
+割勘 < warikan\ ;
+異性体 < iseitai\ ;
+発疹 < hosshin\ ;
+鳥人 < choujin\ ;
+迎撃 < geigeki\ ;
+進塁 < shinrui\ ;
+剣呑 < ken''non\ ;
+冒涜 < boutoku\ ;
+検鏡 < kenkyou\ ;
+先皇 < sen''nou\ ;
+退席 < taiseki\ ;
+別宴 < betsuen\ ;
+週報 < shuuhou\ ;
+割前 < warimae\ ;
+円滑 < enkotsu\ ;
+別宅 < bettaku\ ;
+免疫 < men''eki\ ;
+割判 < warihan\ ;
+非同期 < hidouki\ ;
+軸線 < jikusen\ ;
+十露盤 < soroban\ ;
+側辺 < sokuhen\ ;
+欠員 < ketsuin\ ;
+棒鱈 < boudara\ ;
+入物 < iremono\ ;
+入牢 < nyuurou\ ;
+選任 < sen''nin\ ;
+凶悪 < kyouaku\ ;
+筆記具 < hikkigu\ ;
+番長 < banchou\ ;
+穏健派 < onkenha\ ;
+育児園 < ikujien\ ;
+幼少 < youshou\ ;
+電気炉 < denkiro\ ;
+草木 < soumoku\ ;
+目星 < meboshi\ ;
+依存性 < izonsei\ ;
+幽寂 < yuujaku\ ;
+僚艦 < ryoukan\ ;
+分巻 < bunmaki\ ;
+比叡山 < hieizan\ ;
+癩病 < raibyou\ ;
+通奏 < tsuusou\ ;
+疣足 < iboashi\ ;
+依頼者 < iraisha\ ;
+良能 < ryounou\ ;
+載積 < saiseki\ ;
+茶棚 < chadana\ ;
+幼子 < osanago\ ;
+適例 < tekirei\ ;
+検針 < kenshin\ ;
+出廷 < shuttei\ ;
+崩落 < houraku\ ;
+真影 < shin''ei\ ;
+年少 < nenshou\ ;
+幣帛 < heihaku\ ;
+凶弾 < kyoudan\ ;
+速報 < sokuhou\ ;
+甲高 < koudaka\ ;
+白状 < hakujou\ ;
+製油所 < seiyujo\ ;
+適任 < tekinin\ ;
+制圧 < seiatsu\ ;
+疾視 < shisshi\ ;
+苦熱 < kunetsu\ ;
+発狂 < hakkyou\ ;
+創作 < sousaku\ ;
+檄文 < gekibun\ ;
+内池 < uchiike\ ;
+目撥 < mebachi\ ;
+偏針 < henshin\ ;
+退学 < taigaku\ ;
+偏重 < henchou\ ;
+年子 < toshigo\ ;
+通報 < tsuuhou\ ;
+基本語 < kihongo\ ;
+剣先 < kensaki\ ;
+凶年 < kyounen\ ;
+真平 < mappira\ ;
+癒着 < yuchaku\ ;
+御三家 < gosanke\ ;
+副使 < fukushi\ ;
+莫大 < bakudai\ ;
+前厄 < maeyaku\ ;
+魚竜 < gyoryuu\ ;
+迷宮 < meikyuu\ ;
+遅刻 < chikoku\ ;
+幔幕 < manmaku\ ;
+五節句 < gosekku\ ;
+森閑 < shinkan\ ;
+辟易 < hekieki\ ;
+入漁 < nyuugyo\ ;
+直披 < chokuhi\ ;
+誤動作 < godousa\ ;
+発煙 < hatsuen\ ;
+舟行 < shuukou\ ;
+岸辺 < kishibe\ ;
+道俗 < douzoku\ ;
+進取 < shinshu\ ;
+膨隆 < bouryuu\ ;
+倍額 < baigaku\ ;
+目指 < mokushi\ ;
+影印本 < eiinhon\ ;
+魔窟 < makutsu\ ;
+凝念 < gyounen\ ;
+巡歴 < junreki\ ;
+山頂 < sanchou\ ;
+入湯 < nyuutou\ ;
+出展 < shutten\ ;
+入渠 < nyuukyo\ ;
+苛烈 < karetsu\ ;
+経営費 < keieihi\ ;
+迫害 < hakugai\ ;
+八洲 < yashima\ ;
+円相場 < ensouba\ ;
+轟沈 < gouchin\ ;
+県庁 < kenchou\ ;
+凡庸 < bon''you\ ;
+癇癖 < kanpeki\ ;
+色素 < shikiso\ ;
+近年 < kin''nen\ ;
+盆暮 < bonkure\ ;
+蹉跌 < satetsu\ ;
+年増 < toshima\ ;
+道主 < doushuu\ ;
+凋悴 < chousui\ ;
+道中 < douchuu\ ;
+山陽 < san''you\ ;
+山陵 < sanryou\ ;
+遊休 < yuukyuu\ ;
+痘苗 < toubyou\ ;
+週刊 < shuukan\ ;
+被疑者 < higisha\ ;
+庖厨 < houchuu\ ;
+倒閣 < toukaku\ ;
+列国 < rekkoku\ ;
+督励 < tokurei\ ;
+巡業 < jungyou\ ;
+標準 < hyoujun\ ;
+菊判 < kikuban\ ;
+産額 < sangaku\ ;
+週内 < shuunai\ ;
+鰻屋 < unagiya\ ;
+入水 < nyuusui\ ;
+制勝 < seishou\ ;
+刻刻 < kokkoku\ ;
+備蓄 < bichiku\ ;
+通名 < toorina\ ;
+軍籍 < gunseki\ ;
+船舶 < senpaku\ ;
+連勝 < renshou\ ;
+通史 < tsuushi\ ;
+直後 < chokugo\ ;
+直往 < chokuou\ ;
+放火魔 < houkama\ ;
+修養 < shuuyou\ ;
+不断着 < fudangi\ ;
+聖路加 < seiroka\ ;
+病菌 < byoukin\ ;
+出奔 < shuppon\ ;
+楽聖 < gakusei\ ;
+船腹 < senpuku\ ;
+下線部 < kasenbu\ ;
+白洲 < shirasu\ ;
+凡小 < bonshou\ ;
+前任 < zen''nin\ ;
+巨木 < kyoboku\ ;
+般若 < han''nya\ ;
+傷者 < shousha\ ;
+円曲 < enkyoku\ ;
+尾骨 < bikotsu\ ;
+広告 < koukoku\ ;
+芝生 < shibafu\ ;
+通勤 < tsuukin\ ;
+自説 < jisetsu\ ;
+充溢 < juuitsu\ ;
+看客 < kankaku\ ;
+茶托 < chataku\ ;
+真夏 < manatsu\ ;
+辺幅 < henpuku\ ;
+店内 < ten''nai\ ;
+多次元 < tajigen\ ;
+川柳 < senryuu\ ;
+業腹 < gouhara\ ;
+良種 < ryoushu\ ;
+借金 < shakkin\ ;
+削井 < sakusei\ ;
+似非者 < esemono\ ;
+序列 < joretsu\ ;
+倒錯 < tousaku\ ;
+帝徳 < teitoku\ ;
+脳外科 < nougeka\ ;
+通分 < tsuubun\ ;
+追善 < tsuizen\ ;
+凶報 < kyouhou\ ;
+御下問 < gokamon\ ;
+検認 < ken''nin\ ;
+荒巻 < aramaki\ ;
+病舎 < byousha\ ;
+舞茸 < maitake\ ;
+週令 < shuurei\ ;
+准州 < junshuu\ ;
+膃肭臍 < ottosei\ ;
+共栓 < tomosen\ ;
+女性器 < joseiki\ ;
+孵卵器 < furanki\ ;
+検証 < kenshou\ ;
+無理解 < murikai\ ;
+常宿 < jouyado\ ;
+信頼 < shinrai\ ;
+光沢 < koutaku\ ;
+帝廟 < teibyou\ ;
+凹地 < kubochi\ ;
+凸坊 < dekobou\ ;
+軍票 < gunpyou\ ;
+盛徳 < seitoku\ ;
+業者 < gyousha\ ;
+軍神 < gunshin\ ;
+蹈襲 < toushuu\ ;
+舟艇 < shuutei\ ;
+横棒 < yokobou\ ;
+年収 < nenshuu\ ;
+入梅 < nyuubai\ ;
+腓骨 < hikotsu\ ;
+共有 < kyouyuu\ ;
+鰤子 < burikko\ ;
+相客 < aikyaku\ ;
+父性愛 < fuseiai\ ;
+追号 < tsuigou\ ;
+連作 < rensaku\ ;
+兎欠 < toketsu\ ;
+兆民 < choumin\ ;
+別儀 < betsugi\ ;
+非武装 < hibusou\ ;
+良知 < ryouchi\ ;
+連休 < renkyuu\ ;
+切味 < kireaji\ ;
+造作 < zousaku\ ;
+六書 < rokusho\ ;
+着剣 < chakken\ ;
+分周 < bunshuu\ ;
+六曜 < rokuyou\ ;
+八朔 < hassaku\ ;
+刪修 < sanshuu\ ;
+准将 < junshou\ ;
+腕首 < udekubi\ ;
+眼力 < ganriki\ ;
+通例 < tsuurei\ ;
+標榜 < hyoubou\ ;
+入来 < nyuurai\ ;
+略譜 < ryakufu\ ;
+轢断 < rekidan\ ;
+転用 < ten''you\ ;
+皐月 < satsuki\ ;
+連中 < renchuu\ ;
+元歌 < motouta\ ;
+色白 < irojiro\ ;
+岩角 < iwakado\ ;
+同父母 < doufubo\ ;
+茶店 < chamise\ ;
+凝塊 < gyoukai\ ;
+出品 < shuppin\ ;
+農学 < nougaku\ ;
+通人 < tsuujin\ ;
+略語 < ryakugo\ ;
+僭用 < sen''you\ ;
+踊躍 < youyaku\ ;
+茶席 < chaseki\ ;
+追刊 < tsuikan\ ;
+用量 < youryou\ ;
+自虐 < jigyaku\ ;
+鬼畜 < kichiku\ ;
+腐食 < fushoku\ ;
+年内 < nen''nai\ ;
+傍聴 < bouchou\ ;
+左折 < sasetsu\ ;
+白桃 < hakutou\ ;
+女性化 < joseika\ ;
+若枝 < wakaeda\ ;
+近国 < kingoku\ ;
+船籍 < senseki\ ;
+元標 < genpyou\ ;
+出口 < deguchi\ ;
+切削 < sessaku\ ;
+略解 < ryakkai\ ;
+刀匠 < toushou\ ;
+発案 < hatsuan\ ;
+無期限 < mukigen\ ;
+軟球 < nankyuu\ ;
+修錬 < shuuren\ ;
+自家用 < jikayou\ ;
+直奏 < jikisou\ ;
+航続 < kouzoku\ ;
+良田 < ryouden\ ;
+足音 < ashioto\ ;
+先棒 < sakibou\ ;
+家系図 < kakeizu\ ;
+一世紀 < isseiki\ ;
+刈入 < kariire\ ;
+白木 < shiraki\ ;
+自由度 < jiyuudo\ ;
+標本 < hyouhon\ ;
+白書 < hakusho\ ;
+汚染源 < osengen\ ;
+軍用 < gun''you\ ;
+初乳 < shonyuu\ ;
+平信 < heishin\ ;
+荒壁 < arakabe\ ;
+八掛 < hakkake\ ;
+輪業 < ringyou\ ;
+茶寮 < charyou\ ;
+平作 < heisaku\ ;
+盲執 < moushuu\ ;
+甘酒 < amazake\ ;
+元栓 < motosen\ ;
+八挺 < hatchou\ ;
+真剣 < shinken\ ;
+依頼状 < iraijou\ ;
+凹凸 < outotsu\ ;
+辛子 < karashi\ ;
+凸凹 < totsuou\ ;
+百方 < hyappou\ ;
+側背 < sokuhai\ ;
+療法 < ryouhou\ ;
+入掛 < irekaku\ ;
+迷信 < meishin\ ;
+凶刃 < kyoujin\ ;
+第一歩 < daiippo\ ;
+出兵 < shuppei\ ;
+白斑 < hakuhan\ ;
+退京 < taikyou\ ;
+白文 < hakubun\ ;
+微塵子 < mijinko\ ;
+凸円 < totsuen\ ;
+山賊 < sanzoku\ ;
+眼中 < ganchuu\ ;
+贔屓目 < hiikime\ ;
+側聞 < sokubun\ ;
+業種 < gyoushu\ ;
+八手 < yatsude\ ;
+色物 < iromono\ ;
+痳病 < rinbyou\ ;
+元服 < genpuku\ ;
+修道 < shuudou\ ;
+克明 < kokumei\ ;
+年上 < toshiue\ ;
+保釈 < hoshaku\ ;
+入手 < nyuushu\ ;
+入所 < nyuusho\ ;
+述作 < jussaku\ ;
+電磁場 < denjiba\ ;
+直営 < chokuei\ ;
+小面 < shoumen\ ;
+尿酸 < nyousan\ ;
+辛夷 < kobushi\ ;
+六情 < rokujou\ ;
+一体化 < ittaika\ ;
+御日様 < ohisama\ ;
+音羽屋 < otowaya\ ;
+高粱 < kouryan\ ;
+小難 < shounan\ ;
+局部 < kyokubu\ ;
+医院長 < iinchou\ ;
+印欧語 < in''ougo\ ;
+帝国 < teikoku\ ;
+出会 < shukkai\ ;
+鬱然 < utsuzen\ ;
+傷痕 < shoukon\ ;
+再審 < saishin\ ;
+県内 < ken''nai\ ;
+尿道 < nyoudou\ ;
+側線 < sokusen\ ;
+公徳 < koutoku\ ;
+常勝 < joushou\ ;
+冥境 < meikyou\ ;
+真人 < shinjin\ ;
+冷嘲 < reichou\ ;
+馴鹿 < tonakai\ ;
+直参 < jikisan\ ;
+出来秋 < dekiaki\ ;
+飛行機 < hikouki\ ;
+入念 < nyuunen\ ;
+脊髄 < sekizui\ ;
+無作為 < musakui\ ;
+真下 < mashita\ ;
+円安 < en''yasu\ ;
+尊長 < sonchou\ ;
+偽筆 < gihitsu\ ;
+相剋 < soukoku\ ;
+膝行 < shikkou\ ;
+都市部 < toshibu\ ;
+転注 < tenchuu\ ;
+座蒲団 < zabuton\ ;
+入廷 < nyuutei\ ;
+俗輩 < zokuhai\ ;
+脚韻 < kyakuin\ ;
+凡俗 < bonzoku\ ;
+寒鮒 < kanbuna\ ;
+業病 < goubyou\ ;
+農博 < nouhaku\ ;
+農協 < noukyou\ ;
+全幅 < zenpuku\ ;
+放課後 < houkago\ ;
+全席 < zenseki\ ;
+高禄 < kouroku\ ;
+近作 < kinsaku\ ;
+荷主 < ninushi\ ;
+良港 < ryoukou\ ;
+寸隙 < sungeki\ ;
+一本気 < ippongi\ ;
+目前 < mokuzen\ ;
+岩肌 < iwahada\ ;
+凡人 < bon''nin\ ;
+信販 < shinpan\ ;
+電気屋 < denkiya\ ;
+俗趣 < zokushu\ ;
+修論 < shuuron\ ;
+兵学 < heigaku\ ;
+田螺 < tanishi\ ;
+産褥 < sanjoku\ ;
+小銃 < shoujuu\ ;
+便通 < bentsuu\ ;
+小鉢 < kobachi\ ;
+未来派 < miraiha\ ;
+赤飯 < sekihan\ ;
+帝劇 < teigeki\ ;
+共存 < kyouzon\ ;
+省令 < shourei\ ;
+自粛 < jishuku\ ;
+百度 < hyakudo\ ;
+栄誉礼 < eiyorei\ ;
+内壁 < naiheki\ ;
+疾病 < shippei\ ;
+元悪 < gen''aku\ ;
+糖衣錠 < touijou\ ;
+疼痛 < toutsuu\ ;
+害鳥 < gaichou\ ;
+傍白 < bouhaku\ ;
+良民 < ryoumin\ ;
+躁病 < soubyou\ ;
+理論家 < rironka\ ;
+田虫 < tamushi\ ;
+白帆 < shiraho\ ;
+高直 < koujiki\ ;
+打楽器 < dagakki\ ;
+生血 < namachi\ ;
+無作法 < busahou\ ;
+入定 < nyuujou\ ;
+転業 < tengyou\ ;
+屈託 < kuttaku\ ;
+直伝 < jikiden\ ;
+茶匙 < chasaji\ ;
+自筆 < jihitsu\ ;
+仁王門 < nioumon\ ;
+苗床 < naedoko\ ;
+赤面 < sekimen\ ;
+古典派 < kotenha\ ;
+内圧 < naiatsu\ ;
+痛点 < tsuuten\ ;
+素封家 < sohouka\ ;
+先年 < sen''nen\ ;
+疱疹 < houshin\ ;
+俗謡 < zokuyou\ ;
+小道 < komichi\ ;
+自立 < jiritsu\ ;
+修行 < shugyou\ ;
+内国 < naikoku\ ;
+俗諺 < zokugen\ ;
+至福 < shifuku\ ;
+寺銭 < terasen\ ;
+農作 < nousaku\ ;
+俗諦 < zokutai\ ;
+俊豪 < shungou\ ;
+俗論 < zokuron\ ;
+症状 < shoujou\ ;
+俗談 < zokudan\ ;
+導通 < doutsuu\ ;
+魚族 < gyozoku\ ;
+入婿 < irimuko\ ;
+僻村 < hekison\ ;
+鮨屋 < sushiya\ ;
+寄食 < kishoku\ ;
+白山 < hakusan\ ;
+病状 < byoujou\ ;
+元年 < gan''nen\ ;
+席上 < sekijou\ ;
+荒事 < aragoto\ ;
+監修 < kanshuu\ ;
+歩合制 < buaisei\ ;
+偸盗 < chuutou\ ;
+僻書 < hekisho\ ;
+留置 < ryuuchi\ ;
+辛党 < karatou\ ;
+格闘 < kakutou\ ;
+番組 < bangumi\ ;
+魂柱 < konchuu\ ;
+百官 < hyakkan\ ;
+作風 < sakufuu\ ;
+魚河岸 < uogashi\ ;
+馬食 < bashoku\ ;
+自由化 < jiyuuka\ ;
+艦橋 < kankyou\ ;
+標定 < hyoutei\ ;
+横奪 < oudatsu\ ;
+白子 < shiroko\ ;
+再告 < saikoku\ ;
+軍楽 < gungaku\ ;
+山芋 < yamaimo\ ;
+帝京 < teikyou\ ;
+輻射 < fukusha\ ;
+入声 < nisshou\ ;
+授産所 < jusanjo\ ;
+駆動機 < kudouki\ ;
+密雲 < mitsuun\ ;
+二箇所 < nikasho\ ;
+傾注 < keichuu\ ;
+入墨 < irezumi\ ;
+密集 < misshuu\ ;
+違犯者 < ihansha\ ;
+自画像 < jigazou\ ;
+色柄 < irogara\ ;
+形意拳 < keiiken\ ;
+背高 < seitaka\ ;
+将軍 < shougun\ ;
+概況 < gaikyou\ ;
+全域 < zen''iki\ ;
+母性愛 < boseiai\ ;
+井戸側 < idogawa\ ;
+山腹 < sanpuku\ ;
+先学 < sengaku\ ;
+脚部 < kyakubu\ ;
+胴長 < dounaga\ ;
+僧服 < soufuku\ ;
+再勝 < saishou\ ;
+腹蔵 < fukuzou\ ;
+良材 < ryouzai\ ;
+低額 < teigaku\ ;
+魚拓 < gyotaku\ ;
+輔弼 < hohitsu\ ;
+全国 < zengoku\ ;
+良書 < ryousho\ ;
+宰領 < sairyou\ ;
+白太 < shirata\ ;
+白夜 < byakuya\ ;
+蹴爪 < kedzume\ ;
+赤錆 < akasabi\ ;
+入団 < nyuudan\ ;
+工博 < kouhaku\ ;
+差別 < sabetsu\ ;
+冪乗 < bekijou\ ;
+軍服 < gunpuku\ ;
+甲胄 < katchuu\ ;
+自発 < jihatsu\ ;
+畢竟 < hikkyou\ ;
+校閲 < kouetsu\ ;
+疎略 < soryaku\ ;
+岩礁 < ganshou\ ;
+傷歎 < shoutan\ ;
+色文 < irobumi\ ;
+破砕機 < hasaiki\ ;
+首領 < shuryou\ ;
+違警罪 < ikeizai\ ;
+希土類 < kidorui\ ;
+赤金 < akagane\ ;
+驕肆 < kyoushi\ ;
+学齢 < gakurei\ ;
+宵闇 < yoiyami\ ;
+小論 < shouron\ ;
+亜鉛引 < aenbiki\ ;
+太宰府 < dazaifu\ ;
+岩石 < ganseki\ ;
+腹芸 < haragei\ ;
+白地 < shiroji\ ;
+核酸 < kakusan\ ;
+六合 < rikugou\ ;
+船歌 < funauta\ ;
+対象 < taishou\ ;
+騰落 < touraku\ ;
+偏癖 < henpeki\ ;
+典則 < tensoku\ ;
+棒縞 < boujima\ ;
+伊達者 < datesha\ ;
+六十 < rokujuu\ ;
+赤道 < sekidou\ ;
+生肉 < seiniku\ ;
+送話器 < souwaki\ ;
+植皮 < shokuhi\ ;
+実需 < jitsuju\ ;
+免囚 < menshuu\ ;
+伴天連 < bateren\ ;
+駆逐 < kuchiku\ ;
+亜麻布 < amanuno\ ;
+駐車 < chuusha\ ;
+株金 < kabukin\ ;
+自玉 < jigyoku\ ;
+女郎屋 < jorouya\ ;
+宿銭 < yadosen\ ;
+首長 < shuchou\ ;
+腹背 < fukuhai\ ;
+噴霧器 < funmuki\ ;
+病死 < byoushi\ ;
+射角 < shakaku\ ;
+英単語 < eitango\ ;
+客間 < kyakuma\ ;
+工作 < kousaku\ ;
+儀式 < gishiki\ ;
+田紳 < denshin\ ;
+対訳 < taiyaku\ ;
+赤軍 < sekigun\ ;
+脂身 < aburami\ ;
+峡湾 < kyouwan\ ;
+軍拡 < gunkaku\ ;
+百味 < hyakumi\ ;
+荷馬車 < nibasha\ ;
+擬態語 < gitaigo\ ;
+対角 < taikaku\ ;
+柱面 < chuumen\ ;
+巨乳 < kyonyuu\ ;
+異邦人 < ihoujin\ ;
+画筆 < gahitsu\ ;
+供覧 < kyouran\ ;
+怪我人 < keganin\ ;
+寸評 < sunpyou\ ;
+内中 < uchijuu\ ;
+効果音 < koukaon\ ;
+密通 < mittsuu\ ;
+倶発 < guhatsu\ ;
+公僕 < kouboku\ ;
+体量 < tairyou\ ;
+墓碑銘 < bohimei\ ;
+宗門 < shuumon\ ;
+臆病 < okubyou\ ;
+全優 < zen''yuu\ ;
+飛行家 < hikouka\ ;
+略画 < ryakuga\ ;
+俸給 < houkyuu\ ;
+宿運 < shukuun\ ;
+船板 < funaita\ ;
+俊英 < shun''ei\ ;
+芳墨 < houboku\ ;
+百匁 < hyakume\ ;
+生絹 < suzushi\ ;
+軟弱 < nanjaku\ ;
+休館 < kyuukan\ ;
+密輸 < mitsuyu\ ;
+党則 < tousoku\ ;
+修繕 < shuuzen\ ;
+休養 < kyuuyou\ ;
+榴弾 < ryuudan\ ;
+山積 < sanseki\ ;
+舶来 < hakurai\ ;
+赤貧 < sekihin\ ;
+英傑 < eiketsu\ ;
+極暑 < gokusho\ ;
+病棟 < byoutou\ ;
+火熨斗 < hinoshi\ ;
+肌骨 < kikotsu\ ;
+良性 < ryousei\ ;
+足芸 < ashigei\ ;
+腸線 < chousen\ ;
+輪唱 < rinshou\ ;
+偉物 < eramono\ ;
+白刃 < hakujin\ ;
+侮蔑 < bubetsu\ ;
+若党 < wakatou\ ;
+病根 < byoukon\ ;
+会集 < kaishuu\ ;
+屑糸 < kuzuito\ ;
+梟罪 < kyouzai\ ;
+白兵 < hakuhei\ ;
+低速 < teisoku\ ;
+入会 < nyuukai\ ;
+屑米 < kuzumai\ ;
+軽妙 < keimyou\ ;
+自滅 < jimetsu\ ;
+休電 < kyuuden\ ;
+島根 < shimane\ ;
+学風 < gakufuu\ ;
+僵屍 < kyonshi\ ;
+先刻 < senkoku\ ;
+優位性 < yuuisei\ ;
+肉饅 < nikuman\ ;
+併読 < heidoku\ ;
+馬跳 < umatobi\ ;
+転属 < tenzoku\ ;
+赤誠 < sekisei\ ;
+良師 < ryoushi\ ;
+会長 < kaichou\ ;
+格言 < kakugen\ ;
+駁論 < bakuron\ ;
+無趣味 < mushumi\ ;
+過現未 < kagenmi\ ;
+元凶 < genkyou\ ;
+肉類 < nikurui\ ;
+疼木 < hiiragi\ ;
+転宅 < tentaku\ ;
+栄達 < eitatsu\ ;
+転学 < tengaku\ ;
+自活 < jikatsu\ ;
+俸禄 < houroku\ ;
+若人 < wakoudo\ ;
+楽才 < gakusai\ ;
+密議 < mitsugi\ ;
+香車 < kyousha\ ;
+俗累 < zokurui\ ;
+長椅子 < nagaisu\ ;
+聾唖者 < rouasha\ ;
+停泊 < teihaku\ ;
+楊柳 < youryuu\ ;
+小舅 < kojuuto\ ;
+自決 < jiketsu\ ;
+百事 < hyakuji\ ;
+密語 < mitsugo\ ;
+胸襟 < kyoukin\ ;
+尿管 < nyoukan\ ;
+鬱屈 < ukkutsu\ ;
+軍属 < gunzoku\ ;
+文字盤 < mojiban\ ;
+痛憤 < tsuufun\ ;
+五十音 < gojuuon\ ;
+山番 < yamaban\ ;
+楽想 < gakusou\ ;
+自殺 < jisatsu\ ;
+脱臼 < dakkyuu\ ;
+首足 < shusoku\ ;
+脱臭 < dasshuu\ ;
+軍将 < gunshou\ ;
+傷悴 < shousui\ ;
+偏流 < henryuu\ ;
+脳膜 < noumaku\ ;
+現高 < gendaka\ ;
+臣民 < shinmin\ ;
+鬼婆 < onibaba\ ;
+作詩 < sakushi\ ;
+脱腸 < datchou\ ;
+宅配 < takuhai\ ;
+休錘 < kyuusui\ ;
+田畑 < denpata\ ;
+痛恨 < tsuukon\ ;
+至極 < shigoku\ ;
+極悪 < gokuaku\ ;
+安逸 < an''itsu\ ;
+天婦羅 < tenpura\ ;
+僻地 < hekichi\ ;
+僻在 < hekizai\ ;
+定跡 < jouseki\ ;
+輪作 < rinsaku\ ;
+岩波 < iwanami\ ;
+峻拒 < shunkyo\ ;
+良妻 < ryousai\ ;
+臆測 < okusoku\ ;
+産痛 < santsuu\ ;
+寝道具 < nedougu\ ;
+職階 < shokkai\ ;
+畝溝 < unemizo\ ;
+極微 < kyokubi\ ;
+異分子 < ibunshi\ ;
+膜状 < makujou\ ;
+甘皮 < amakawa\ ;
+赤蕪 < akakabu\ ;
+山犬 < yamainu\ ;
+俊童 < shundou\ ;
+楽師 < gakushi\ ;
+桑色 < kuwairo\ ;
+腕章 < wanshou\ ;
+馬術 < bajutsu\ ;
+病態 < byoutai\ ;
+腕立 < udetate\ ;
+腹癒 < haraise\ ;
+舞扇 < maiougi\ ;
+寮舎 < ryousha\ ;
+極度 < kyokudo\ ;
+偕楽 < kairaku\ ;
+球面 < kyuumen\ ;
+小編 < shouhen\ ;
+自販機 < jihanki\ ;
+病患 < byoukan\ ;
+客語 < kyakugo\ ;
+枕頭 < chintou\ ;
+極左 < kyokusa\ ;
+瓢箪 < hyoutan\ ;
+八重垣 < yaegaki\ ;
+芸事 < geigoto\ ;
+植樹 < shokuju\ ;
+実話 < jitsuwa\ ;
+疾患 < shikkan\ ;
+無価値 < mukachi\ ;
+桃色 < momoiro\ ;
+検校 < kengyou\ ;
+実証 < jisshou\ ;
+今頃 < imagoro\ ;
+腰痛 < youtsuu\ ;
+小粒 < kotsubu\ ;
+業師 < wazashi\ ;
+花代 < hanadai\ ;
+客観 < kyakkan\ ;
+俗眼 < zokugan\ ;
+使臣 < shishin\ ;
+寒菊 < kangiku\ ;
+人事院 < jinjiin\ ;
+休載 < kyuusai\ ;
+尻目 < shirime\ ;
+定評 < teihyou\ ;
+休転 < kyuuten\ ;
+病弊 < byouhei\ ;
+傷害 < shougai\ ;
+定訳 < teiyaku\ ;
+軍国 < gunkoku\ ;
+魔力 < maryoku\ ;
+検束 < kensoku\ ;
+不夜城 < fuyajou\ ;
+居留 < kyoryuu\ ;
+美丈夫 < bijoufu\ ;
+荏胡麻油 < egomayu\ ;
+岩棚 < iwadana\ ;
+仏陀 < butsuda\ ;
+害虫 < gaichuu\ ;
+就眠 < shuumin\ ;
+脇能 < wakinou\ ;
+億兆 < okuchou\ ;
+病巣 < byousou\ ;
+赤膚 < akahada\ ;
+小童 < kowappa\ ;
+仏閣 < bukkaku\ ;
+易損品 < isonhin\ ;
+仏間 < butsuma\ ;
+赤腹 < akahara\ ;
+尼僧院 < nisouin\ ;
+腎石 < jinseki\ ;
+良品 < ryouhin\ ;
+胃袋 < ibukuro\ ;
+無理数 < murisuu\ ;
+峻嶺 < shunrei\ ;
+儒仏 < jubutsu\ ;
+魅力 < miryoku\ ;
+貸間 < kashima\ ;
+胸臆 < kyouoku\ ;
+無韻詩 < muinshi\ ;
+魚信 < gyoshin\ ;
+腕白 < wanpaku\ ;
+多様化 < tayouka\ ;
+胸腺 < kyousen\ ;
+京風 < kyoufuu\ ;
+楽天 < rakuten\ ;
+良友 < ryouyuu\ ;
+脱穀 < dakkoku\ ;
+班長 < hanchou\ ;
+伝誦 < denshou\ ;
+尊称 < sonshou\ ;
+偃月 < engetsu\ ;
+対策 < taisaku\ ;
+借款 < shakkan\ ;
+楽壇 < gakudan\ ;
+便益 < ben''eki\ ;
+会読 < kaidoku\ ;
+棺桶 < kan''oke\ ;
+低落 < teiraku\ ;
+病害 < byougai\ ;
+偉方 < eragata\ ;
+皮膚科医 < hifukai\ ;
+界標 < kaihyou\ ;
+賃銭 < chinsen\ ;
+佞臣 < neishin\ ;
+余色 < yoshoku\ ;
+飲食 < inshoku\ ;
+屋根裏 < yaneura\ ;
+傾国 < keikoku\ ;
+暴風雨 < boufuuu\ ;
+係留 < keiryuu\ ;
+男気 < otokogi\ ;
+楓属 < fuuzoku\ ;
+胃薬 < igusuri\ ;
+仙郷 < senkyou\ ;
+栗色 < kuriiro\ ;
+購読 < koudoku\ ;
+生理日 < seiribi\ ;
+車力 < shariki\ ;
+分限者 < bugenja\ ;
+臥所 < fushido\ ;
+体臭 < taishuu\ ;
+馬脚 < bakyaku\ ;
+寸秒 < sunbyou\ ;
+人事部 < jinjibu\ ;
+起筆 < kihitsu\ ;
+駐米 < chuubei\ ;
+乾魚 < hoshiuo\ ;
+鸚鵡貝 < oumugai\ ;
+肝要 < kan''you\ ;
+森林 < shinrin\ ;
+赤組 < akagumi\ ;
+転任 < ten''nin\ ;
+格納 < kakunou\ ;
+小癪 < koshaku\ ;
+赤紙 < akagami\ ;
+驚歎 < kyoutan\ ;
+起立 < kiritsu\ ;
+一丁字 < itteiji\ ;
+作者 < sakusha\ ;
+食餌 < shokuji\ ;
+腸満 < chouman\ ;
+仲買 < nakagai\ ;
+分離派 < bunriha\ ;
+小細工 < kozaiku\ ;
+病変 < byouhen\ ;
+暗号化 < angouka\ ;
+僥倖 < gyoukou\ ;
+賠責 < baiseki\ ;
+賞賛 < shousan\ ;
+尊皇 < son''nou\ ;
+玄麦 < genbaku\ ;
+脈管 < myakkan\ ;
+枢軸 < suujiku\ ;
+舞姫 < maihime\ ;
+痛嘆 < tsuutan\ ;
+尨犬 < mukuinu\ ;
+棟梁 < touryou\ ;
+右往左往 < uousaou\ ;
+印度洋 < indoyou\ ;
+塩素酸 < ensosan\ ;
+屠殺 < tosatsu\ ;
+賊軍 < zokugun\ ;
+腸液 < choueki\ ;
+舎宅 < shataku\ ;
+身命 < shinmei\ ;
+依頼人 < irainin\ ;
+疫学 < ekigaku\ ;
+小町 < komachi\ ;
+小男 < kootoko\ ;
+腰湯 < koshiyu\ ;
+射的 < shateki\ ;
+脳病 < noubyou\ ;
+小生 < shousei\ ;
+父母会 < fubokai\ ;
+山椒 < sanshou\ ;
+佳節 < kasetsu\ ;
+今週 < konshuu\ ;
+聖週 < seishuu\ ;
+飲酒家 < inshuka\ ;
+不認可 < funinka\ ;
+低翼 < teiyoku\ ;
+色事 < irogoto\ ;
+柿色 < kakiiro\ ;
+田楽 < dengaku\ ;
+今迄 < imamade\ ;
+乾飯 < hoshiii\ ;
+良人 < ryoujin\ ;
+宿縁 < shukuen\ ;
+臣従 < shinjuu\ ;
+腹水 < fukusui\ ;
+跋渉 < basshou\ ;
+町村 < chouson\ ;
+倒木 < touboku\ ;
+慰労会 < iroukai\ ;
+臨席 < rinseki\ ;
+修正 < shuusei\ ;
+木魚 < mokugyo\ ;
+豆腐屋 < toufuya\ ;
+高声 < takagoe\ ;
+併称 < heishou\ ;
+分離機 < bunriki\ ;
+概則 < gaisoku\ ;
+耐震 < taishin\ ;
+栄職 < eishoku\ ;
+仏跡 < busseki\ ;
+火炎瓶 < kaenbin\ ;
+貫通 < kantsuu\ ;
+聖蹟 < seiseki\ ;
+島国 < tougoku\ ;
+産業 < sangyou\ ;
+腰気 < koshike\ ;
+傷創 < shousou\ ;
+食間 < shokkan\ ;
+御多分 < gotabun\ ;
+仮親 < karioya\ ;
+育苗 < ikubyou\ ;
+官能 < kan''nou\ ;
+賃貸 < chintai\ ;
+岡惚 < okabore\ ;
+枝豆 < edamame\ ;
+聴許 < choukyo\ ;
+生業 < nariwai\ ;
+代読 < daidoku\ ;
+現象 < genshou\ ;
+実習 < jisshuu\ ;
+仲裁 < chuusai\ ;
+小爪 < kodzume\ ;
+疎密 < somitsu\ ;
+聴解 < choukai\ ;
+貧農 < hin''nou\ ;
+臨時費 < rinjihi\ ;
+代診 < daishin\ ;
+聴視 < choushi\ ;
+属格 < zokkaku\ ;
+傷兵 < shouhei\ ;
+楽典 < gakuten\ ;
+画数 < kakusuu\ ;
+膺懲 < youchou\ ;
+倍旧 < baikyuu\ ;
+大太鼓 < oodaiko\ ;
+高圧 < kouatsu\ ;
+町政 < chousei\ ;
+極刑 < kyokkei\ ;
+如何程 < ikahodo\ ;
+牡牛座 < oushiza\ ;
+病名 < byoumei\ ;
+加工費 < kakouhi\ ;
+梶棒 < kajibou\ ;
+極冠 < kyokkan\ ;
+極内 < gokunai\ ;
+病友 < byouyuu\ ;
+骰子 < saikoro\ ;
+岡引 < okahiki\ ;
+傴僂 < semushi\ ;
+朱鞘 < shuzaya\ ;
+人事課 < jinjika\ ;
+実績 < jisseki\ ;
+病原 < byougen\ ;
+極光 < kyokkou\ ;
+亨通 < koutsuu\ ;
+本領 < honryou\ ;
+人跡 < hitoato\ ;
+付設 < fusetsu\ ;
+首級 < shukyuu\ ;
+供物 < kumotsu\ ;
+峻厳 < shungen\ ;
+象限 < shougen\ ;
+身体 < shintai\ ;
+至妙 < shimyou\ ;
+甘栗 < amaguri\ ;
+仕訳 < shiwake\ ;
+躍動 < yakudou\ ;
+代表 < daihyou\ ;
+野良犬 < norainu\ ;
+病勢 < byousei\ ;
+容積 < youseki\ ;
+仏語 < butsugo\ ;
+腰椎 < youtsui\ ;
+身代 < shindai\ ;
+日本間 < nihonma\ ;
+玉音 < gyokuon\ ;
+大豆油 < daizuyu\ ;
+寓目 < guumoku\ ;
+来週 < raishuu\ ;
+船側 < sensoku\ ;
+本震 < honshin\ ;
+木靴 < kigutsu\ ;
+香箱 < koubako\ ;
+朝風 < asakaze\ ;
+児童画 < jidouga\ ;
+演舞場 < enbujou\ ;
+岩山 < iwayama\ ;
+楽人 < gakujin\ ;
+豆類 < mamerui\ ;
+官給 < kankyuu\ ;
+玉露 < gyokuro\ ;
+船便 < funabin\ ;
+催促 < saisoku\ ;
+生新 < seishin\ ;
+超然 < chouzen\ ;
+伝習 < denshuu\ ;
+留年 < ryuunen\ ;
+贅肉 < zeiniku\ ;
+高台 < takadai\ ;
+岩室 < iwamuro\ ;
+俵数 < hyousuu\ ;
+学芸 < gakugei\ ;
+男手 < otokode\ ;
+似非事 < esegoto\ ;
+梅毒 < baidoku\ ;
+不結果 < fukekka\ ;
+朝靄 < asamoya\ ;
+屈服 < kuppuku\ ;
+朝霧 < asagiri\ ;
+肌色 < hadairo\ ;
+学舎 < gakusha\ ;
+極上 < gokujou\ ;
+症候 < shoukou\ ;
+船中 < senchuu\ ;
+肉色 < nikuiro\ ;
+修改 < shuukai\ ;
+岸壁 < ganpeki\ ;
+人証 < ninshou\ ;
+略字 < ryakuji\ ;
+修撰 < shuusen\ ;
+地下化 < chikaka\ ;
+伏罪 < fukuzai\ ;
+密画 < mitsuga\ ;
+八百長 < yaochou\ ;
+餡蜜 < anmitsu\ ;
+耽読 < tandoku\ ;
+肉腫 < nikushu\ ;
+俗書 < zokusho\ ;
+老醜 < roushuu\ ;
+驕慢 < kyouman\ ;
+倔強 < kukkyou\ ;
+病人 < byounin\ ;
+偏執 < henshuu\ ;
+過飽和 < kahouwa\ ;
+乳酸 < nyuusan\ ;
+佯狂 < youkyou\ ;
+曳馬 < hikiuma\ ;
+対流 < tairyuu\ ;
+顔黒 < ganguro\ ;
+伏縫 < fusenui\ ;
+曲馬 < kyokuba\ ;
+赤燐 < sekirin\ ;
+傑作 < kessaku\ ;
+瑞祥 < zuishou\ ;
+伏線 < fukusen\ ;
+傀儡 < kugutsu\ ;
+珍談 < chindan\ ;
+俗文 < zokubun\ ;
+倒幕 < toubaku\ ;
+家畜 < kachiku\ ;
+中飯 < chuuhan\ ;
+球菌 < kyuukin\ ;
+早少女 < saotome\ ;
+中風 < chuubuu\ ;
+風鎮 < fuuchin\ ;
+借屋 < shakuya\ ;
+島中 < touchuu\ ;
+宝石 < houseki\ ;
+胆石 < tanseki\ ;
+山師 < yamashi\ ;
+木金 < mokukin\ ;
+如何物 < ikamono\ ;
+属性 < zokusei\ ;
+来診 < raishin\ ;
+版画家 < hangaka\ ;
+便服 < benpuku\ ;
+亡親 < boushin\ ;
+仕草 < shigusa\ ;
+九重 < kokonoe\ ;
+俊敏 < shunbin\ ;
+踊字 < odoriji\ ;
+山峡 < yamakai\ ;
+赤潮 < akashio\ ;
+学級 < gakkyuu\ ;
+略図 < ryakuzu\ ;
+両頭 < ryoutou\ ;
+尚更 < naosara\ ;
+中隊 < chuutai\ ;
+木造 < mokuzou\ ;
+伝票 < denpyou\ ;
+朝酒 < asazake\ ;
+寂然 < sekizen\ ;
+専業 < sengyou\ ;
+跡形 < atokata\ ;
+偶作 < guusaku\ ;
+小柄 < kodzuka\ ;
+聴罪 < chouzai\ ;
+余熱 < yonetsu\ ;
+両面 < ryoumen\ ;
+信愛 < shin''ai\ ;
+俗才 < zokusai\ ;
+存続 < sonzoku\ ;
+望郷 < boukyou\ ;
+宝生 < houshou\ ;
+美髪 < bihatsu\ ;
+中間 < chuukan\ ;
+一髪 < ippatsu\ ;
+仲継 < chuukei\ ;
+安着 < anchaku\ ;
+季節 < kisetsu\ ;
+愛飲者 < aiinsha\ ;
+二親 < futaoya\ ;
+豚足 < tonsoku\ ;
+余烈 < yoretsu\ ;
+松葉 < matsuba\ ;
+安直 < anchoku\ ;
+風速 < fuusoku\ ;
+顎髭 < agohige\ ;
+翼賛 < yokusan\ ;
+属島 < zokutou\ ;
+肺病 < haibyou\ ;
+実理 < jitsuri\ ;
+学童 < gakudou\ ;
+安定器 < anteiki\ ;
+棋客 < kikyaku\ ;
+末路 < matsuro\ ;
+駄菓子 < dagashi\ ;
+将来 < shourai\ ;
+了解 < ryoukai\ ;
+畑地 < hatachi\ ;
+男娼 < danshou\ ;
+孤立 < koritsu\ ;
+唐胡麻 < tougoma\ ;
+腹帯 < fukutai\ ;
+俗情 < zokujou\ ;
+了見 < ryouken\ ;
+丸鋼 < marukou\ ;
+俊才 < shunsai\ ;
+停音符 < teionpu\ ;
+俗悪 < zokuaku\ ;
+職組 < shokuso\ ;
+群集 < gunshuu\ ;
+群雄 < gun''yuu\ ;
+山姥 < yamauba\ ;
+上顎 < jougaku\ ;
+寝殿 < shinden\ ;
+少数 < shousuu\ ;
+園芸家 < engeika\ ;
+小斎 < shousai\ ;
+投影機 < toueiki\ ;
+脂気 < aburake\ ;
+尽忠 < jinchuu\ ;
+英吉利 < igirisu\ ;
+条虫 < jouchuu\ ;
+略叙 < ryakujo\ ;
+美食 < bishoku\ ;
+山奥 < yamaoku\ ;
+珍蔵 < chinzou\ ;
+無声音 < museion\ ;
+俗念 < zokunen\ ;
+格段 < kakudan\ ;
+一食 < isshoku\ ;
+獄門 < gokumon\ ;
+唐茄子 < tounasu\ ;
+日本語 < nihongo\ ;
+乱調 < ranchou\ ;
+人臣 < jinshin\ ;
+一類 < ichirui\ ;
+乱読 < randoku\ ;
+亀裂 < kiretsu\ ;
+胸水 < kyousui\ ;
+枠線 < wakusen\ ;
+休眠 < kyuumin\ ;
+臨休 < rinkyuu\ ;
+従三位 < jusanmi\ ;
+婦女子 < fujoshi\ ;
+伏目 < fushime\ ;
+万難 < ban''nan\ ;
+屎尿 < shinyou\ ;
+上陸 < jouriku\ ;
+尺度 < shakudo\ ;
+万障 < banshou\ ;
+最適 < saiteki\ ;
+就役 < shuueki\ ;
+一面 < ichimen\ ;
+対敵 < taiteki\ ;
+工事費 < koujihi\ ;
+温度計 < ondokei\ ;
+仏縁 < butsuen\ ;
+仕組 < shikumi\ ;
+桐材 < kirizai\ ;
+射撃 < shageki\ ;
+安定化 < anteika\ ;
+一雨 < hitoame\ ;
+柱状 < chuujou\ ;
+作況 < sakkyou\ ;
+一難 < ichinan\ ;
+山地 < yamachi\ ;
+法螺貝 < horagai\ ;
+胴欲 < douyoku\ ;
+額面 < gakumen\ ;
+珍芸 < chingei\ ;
+森厳 < shingen\ ;
+男囚 < danshuu\ ;
+梯子 < hashigo\ ;
+枕絵 < makurae\ ;
+番傘 < bangasa\ ;
+非常時 < hijouji\ ;
+一陣 < ichijin\ ;
+仏経 < bukkyou\ ;
+頬髭 < hoohige\ ;
+未設 < misetsu\ ;
+略儀 < ryakugi\ ;
+主軸 < shujiku\ ;
+頬骨 < hoobone\ ;
+乱行 < rangyou\ ;
+肉眼 < nikugan\ ;
+中道 < chuudou\ ;
+客演 < kyakuen\ ;
+完熟 < kanjuku\ ;
+一門 < ichimon\ ;
+暗鬱 < an''utsu\ ;
+八千代 < yachiyo\ ;
+植付 < uetsuke\ ;
+理窟 < rikutsu\ ;
+実演 < jitsuen\ ;
+尼寺 < amadera\ ;
+中農 < chuunou\ ;
+村落 < sonraku\ ;
+末裔 < matsuei\ ;
+尺寸 < sekisun\ ;
+木製 < mokusei\ ;
+佗歌 < wabiuta\ ;
+修士 < shuushi\ ;
+風評 < fuuhyou\ ;
+番人 < ban''nin\ ;
+害毒 < gaidoku\ ;
+朗読 < roudoku\ ;
+実測 < jissoku\ ;
+生垣 < ikegaki\ ;
+属国 < zokkoku\ ;
+五色 < goshoku\ ;
+赤札 < akafuda\ ;
+不細工 < busaiku\ ;
+板締 < itajime\ ;
+珍聞 < chinbun\ ;
+余水路 < yosuiro\ ;
+町名 < choumei\ ;
+朝見 < chouken\ ;
+暮雪 < bosetsu\ ;
+佳月 < kagetsu\ ;
+肉界 < nikukai\ ;
+来聴 < raichou\ ;
+任用 < nin''you\ ;
+胸板 < munaita\ ;
+信奉 < shinpou\ ;
+板紙 < itagami\ ;
+二色 < nishoku\ ;
+駐支 < chuushi\ ;
+曲路 < kyokuro\ ;
+少弟 < shoutei\ ;
+相違点 < souiten\ ;
+両輪 < ryourin\ ;
+木蝋 < mokurou\ ;
+一錠 < ichijou\ ;
+実況 < jikkyou\ ;
+赤旗 < akahata\ ;
+係属 < keizoku\ ;
+両軍 < ryougun\ ;
+胎毒 < taidoku\ ;
+留任 < ryuunin\ ;
+朽葉 < kuchiba\ ;
+曼荼羅 < mandara\ ;
+山勘 < yamakan\ ;
+少年 < shounen\ ;
+今程 < imahodo\ ;
+駒損 < komason\ ;
+罪障 < zaishou\ ;
+小店 < shouten\ ;
+地雷火 < jiraika\ ;
+公務員 < koumuin\ ;
+宿根 < shukkon\ ;
+月評 < geppyou\ ;
+案山子 < kakashi\ ;
+下部 < shimobe\ ;
+束群 < sokugun\ ;
+実母 < jitsubo\ ;
+不達 < futatsu\ ;
+古代語 < kodaigo\ ;
+生一本 < kiippon\ ;
+下達 < katatsu\ ;
+飛脚 < hikyaku\ ;
+町内 < chounai\ ;
+月見 < tsukimi\ ;
+俗塵 < zokujin\ ;
+個別 < kobetsu\ ;
+属名 < zokumei\ ;
+付着 < fuchaku\ ;
+上進 < joushin\ ;
+猟銃 < ryoujuu\ ;
+交絡 < kouraku\ ;
+何某 < nanibou\ ;
+身贔屓 < mibiiki\ ;
+仕着 < shikise\ ;
+木蔦 < kidzuta\ ;
+肉片 < nikuhen\ ;
+男優 < dan''yuu\ ;
+木蓮 < mokuren\ ;
+未整理 < miseiri\ ;
+予科生 < yokasei\ ;
+曲譜 < kyokufu\ ;
+肥溜 < koedame\ ;
+賞玩 < shougan\ ;
+借人 < karinin\ ;
+俊士 < shunshi\ ;
+書評 < shohyou\ ;
+密教 < mikkyou\ ;
+一道 < ichidou\ ;
+一遇 < ichiguu\ ;
+書証 < shoshou\ ;
+貫禄 < kanroku\ ;
+未経過 < mikeika\ ;
+越年 < etsunen\ ;
+一連 < ichiren\ ;
+三軸 < sanjiku\ ;
+老臣 < roushin\ ;
+条約 < jouyaku\ ;
+豆蔵 < mamezou\ ;
+余日 < yojitsu\ ;
+球界 < kyuukai\ ;
+作文 < sakubun\ ;
+海松貝 < mirugai\ ;
+低木 < teiboku\ ;
+馬方 < umakata\ ;
+乱臣 < ranshin\ ;
+何時 < nandoki\ ;
+赤手 < sekishu\ ;
+倒伏 < toufuku\ ;
+曲解 < kyokkai\ ;
+一輪 < ichirin\ ;
+尊容 < son''you\ ;
+上足 < jousoku\ ;
+両論 < ryouron\ ;
+一軍 < ichigun\ ;
+町人 < chounin\ ;
+上越 < jouetsu\ ;
+局員 < kyokuin\ ;
+専属 < senzoku\ ;
+何故 < naniyue\ ;
+介病 < kaibyou\ ;
+仏画 < butsuga\ ;
+脱字 < datsuji\ ;
+猛追 < moutsui\ ;
+贅沢 < zeitaku\ ;
+信号 < shingou\ ;
+田作 < densaku\ ;
+兵児帯 < hekoobi\ ;
+山中 < sanchuu\ ;
+本腹 < honpuku\ ;
+五節 < gosetsu\ ;
+主虹 < shuniji\ ;
+並製 < namisei\ ;
+甚六 < jinroku\ ;
+赤恥 < akahaji\ ;
+身奇麗 < migirei\ ;
+朱肉 < shuniku\ ;
+余接 < yosetsu\ ;
+検査員 < kensain\ ;
+甲乙 < kouotsu\ ;
+井筒 < idzutsu\ ;
+本能 < hon''nou\ ;
+瑣末 < samatsu\ ;
+人皇 < nin''nou\ ;
+人的 < jinteki\ ;
+脆弱 < zeijaku\ ;
+饑渇 < kikatsu\ ;
+主薬 < shuyaku\ ;
+危機感 < kikikan\ ;
+赤茄子 < akanasu\ ;
+官有 < kan''yuu\ ;
+他物 < tabutsu\ ;
+羽虫 < hamushi\ ;
+産休 < sankyuu\ ;
+作戦 < sakusen\ ;
+伯林 < berurin\ ;
+背教 < haikyou\ ;
+豊胸 < houkyou\ ;
+柳条 < ryuujou\ ;
+端武者 < hamusha\ ;
+生乳 < seinyuu\ ;
+印度人 < indojin\ ;
+内安打 < naianda\ ;
+肉池 < nikuchi\ ;
+三角 < sankaku\ ;
+下見 < shitami\ ;
+伏樋 < fusedoi\ ;
+肉汁 < nikujuu\ ;
+屋根板 < yaneita\ ;
+無期刑 < mukikei\ ;
+玄翁 < gen''nou\ ;
+記念碑 < kinenhi\ ;
+一説 < issetsu\ ;
+駐屯 < chuuton\ ;
+就労 < shuurou\ ;
+買物 < kaimono\ ;
+都市化 < toshika\ ;
+居候 < isourou\ ;
+服膺 < fukuyou\ ;
+枯渇 < kokatsu\ ;
+風習 < fuushuu\ ;
+乗羃 < joubeki\ ;
+屈伸 < kusshin\ ;
+俗僧 < zokusou\ ;
+府知事 < fuchiji\ ;
+内耳炎 < naijien\ ;
+本給 < honkyuu\ ;
+中葉 < chuuyou\ ;
+罪跡 < zaiseki\ ;
+飛礫 < tsubute\ ;
+条目 < joumoku\ ;
+一覧 < ichiran\ ;
+密度 < mitsudo\ ;
+上表 < jouhyou\ ;
+北京語 < pekingo\ ;
+下血 < geketsu\ ;
+足労 < sokurou\ ;
+小善 < shouzen\ ;
+仮決 < kaketsu\ ;
+井目 < seimoku\ ;
+尚又 < naomata\ ;
+犬小屋 < inugoya\ ;
+暗躍 < an''yaku\ ;
+彼岸会 < higan''e\ ;
+貨物 < kamotsu\ ;
+実技 < jitsugi\ ;
+本籤 < honkuji\ ;
+脱営 < datsuei\ ;
+体得 < taitoku\ ;
+本籍 < honseki\ ;
+小品 < shouhin\ ;
+有職 < yuusoku\ ;
+佳客 < kakyaku\ ;
+美術 < bijutsu\ ;
+赤子 < sekishi\ ;
+害心 < gaishin\ ;
+昼餐 < chuusan\ ;
+二着 < nichaku\ ;
+相弟子 < aideshi\ ;
+俗伝 < zokuden\ ;
+核子 < kakushi\ ;
+本箱 < honbako\ ;
+二直 < nichoku\ ;
+馬市 < umaichi\ ;
+何年 < nan''nen\ ;
+小口 < koguchi\ ;
+松煤 < shoubai\ ;
+本筋 < honsuji\ ;
+東独 < toudoku\ ;
+獣肉 < juuniku\ ;
+二百 < nihyaku\ ;
+曲舞 < kusemai\ ;
+珍獣 < chinjuu\ ;
+本章 < honshou\ ;
+主翼 < shuyoku\ ;
+群落 < gunraku\ ;
+飴玉 < amedama\ ;
+耄碌 < mouroku\ ;
+宮廷 < kyuutei\ ;
+就任 < shuunin\ ;
+妙齢 < myourei\ ;
+時雨 < shigure\ ;
+木立 < kodachi\ ;
+王立 < ouritsu\ ;
+小勇 < shouyuu\ ;
+職権 < shokken\ ;
+寄宿 < kishuku\ ;
+鳳凰座 < hououza\ ;
+背徳 < haitoku\ ;
+格外 < kakugai\ ;
+咽頭炎 < intouen\ ;
+上蔟 < jouzoku\ ;
+中背 < chuuzei\ ;
+赤外 < sekigai\ ;
+両舷 < ryougen\ ;
+季末 < kimatsu\ ;
+松濤 < shoutou\ ;
+柄杓 < hishaku\ ;
+独走 < dokusou\ ;
+投影図 < toueizu\ ;
+玉稿 < gyokkou\ ;
+便侫 < ben''nei\ ;
+不衛生 < fueisei\ ;
+他殺 < tasatsu\ ;
+下葉 < shitaba\ ;
+足代 < ashidai\ ;
+中老 < chuurou\ ;
+月給 < gekkyuu\ ;
+駐在 < chuuzai\ ;
+両腕 < ryouude\ ;
+獄舎 < gokusha\ ;
+導入 < dounyuu\ ;
+整理部 < seiribu\ ;
+入母屋 < irimoya\ ;
+乙種 < otsushu\ ;
+牝鶏 < mendori\ ;
+多趣味 < tashumi\ ;
+孟春 < moushun\ ;
+供勢 < tomozei\ ;
+審問 < shinmon\ ;
+介殻 < kaikaku\ ;
+一葉 < ichiyou\ ;
+最終 < saishuu\ ;
+乳癌 < nyuugan\ ;
+耽溺 < tandeki\ ;
+住宅 < juutaku\ ;
+超勤 < choukin\ ;
+老病 < roubyou\ ;
+賓格 < hinkaku\ ;
+朝礼 < chourei\ ;
+音記号 < onkigou\ ;
+小便 < shonben\ ;
+封入 < fuunyuu\ ;
+春雷 < shunrai\ ;
+小坊主 < kobouzu\ ;
+中編 < chuuhen\ ;
+未着 < michaku\ ;
+書経 < shokyou\ ;
+寸刻 < sunkoku\ ;
+事物 < jibutsu\ ;
+仕業 < shiwaza\ ;
+日本画 < nihonga\ ;
+現業 < gengyou\ ;
+曳網 < hikiami\ ;
+尊信 < sonshin\ ;
+超凡 < choubon\ ;
+仲断 < chuudan\ ;
+小伝 < shouden\ ;
+鞦韆 < buranko\ ;
+紀元後 < kigengo\ ;
+乱用 < ran''you\ ;
+七色 < nanairo\ ;
+上膊 < jouhaku\ ;
+何奴 < doyatsu\ ;
+体温器 < taionki\ ;
+一芸 < ichigei\ ;
+犬釘 < inukugi\ ;
+未発 < mihatsu\ ;
+小人 < shounin\ ;
+佗声 < wabigoe\ ;
+一色 < hitoiro\ ;
+主筋 < shusuji\ ;
+中糸 < chuuito\ ;
+資格 < shikaku\ ;
+書籍 < shoseki\ ;
+宿場 < shukuba\ ;
+春闘 < shuntou\ ;
+暴落 < bouraku\ ;
+京洛 < keiraku\ ;
+万能 < man''nou\ ;
+三育 < san''iku\ ;
+三股 < sanmata\ ;
+一膳 < ichizen\ ;
+特電 < tokuden\ ;
+順調 < junchou\ ;
+羽箒 < habouki\ ;
+脚光 < kyakkou\ ;
+独裁 < dokusai\ ;
+羊膜 < youmaku\ ;
+末生 < suenari\ ;
+査察 < sasatsu\ ;
+上翼 < jouyoku\ ;
+休怠 < kyuutai\ ;
+乱獲 < rankaku\ ;
+義絶 < gizetsu\ ;
+昇順 < shoujun\ ;
+現有 < gen''yuu\ ;
+貝殼 < kaigara\ ;
+物音 < monooto\ ;
+微温湯 < biontou\ ;
+主神 < shushin\ ;
+玉璽 < gyokuji\ ;
+会席 < kaiseki\ ;
+狼藉 < rouzeki\ ;
+羊肉 < youniku\ ;
+預血 < yoketsu\ ;
+貴婦人 < kifujin\ ;
+風疹 < fuushin\ ;
+玉瑛 < gyokuei\ ;
+宿営 < shukuei\ ;
+他日 < tajitsu\ ;
+老熟 < roujuku\ ;
+資料 < shiryou\ ;
+駐兵 < chuuhei\ ;
+右大臣 < udaijin\ ;
+低圧 < teiatsu\ ;
+松楓 < shoufuu\ ;
+今朝 < konchou\ ;
+丹碧 < tanpeki\ ;
+暮色 < boshoku\ ;
+仕方 < shikata\ ;
+帰化人 < kikajin\ ;
+今更 < imasara\ ;
+密告 < mikkoku\ ;
+犯跡 < hanseki\ ;
+貴札 < kisatsu\ ;
+飄然 < hyouzen\ ;
+今暁 < kongyou\ ;
+早馬 < hayauma\ ;
+作品 < sakuhin\ ;
+負極 < fukyoku\ ;
+戦後派 < sengoha\ ;
+人格 < jinkaku\ ;
+本物 < honmono\ ;
+今時 < imadoki\ ;
+来歴 < raireki\ ;
+音訳 < on''yaku\ ;
+今春 < konshun\ ;
+貯木 < choboku\ ;
+買春 < baishun\ ;
+富力 < furyoku\ ;
+上級 < joukyuu\ ;
+上紙 < uwagami\ ;
+聚散 < shuusan\ ;
+上紐 < uwahimo\ ;
+今方 < imagata\ ;
+木版 < mokuhan\ ;
+木片 < mokuhen\ ;
+背圧 < haiatsu\ ;
+肉弾 < nikudan\ ;
+獄窓 < gokusou\ ;
+学年 < gakunen\ ;
+客土 < kyakudo\ ;
+譴責 < kenseki\ ;
+低唱 < teishou\ ;
+旧風 < kyuufuu\ ;
+存念 < zon''nen\ ;
+率爾 < sotsuji\ ;
+学帽 < gakubou\ ;
+本然 < hon''nen\ ;
+狂言 < kyougen\ ;
+仕掛 < shikake\ ;
+株券 < kabuken\ ;
+飛沫 < himatsu\ ;
+風狂 < fuukyou\ ;
+子息 < shisoku\ ;
+馬匹 < bahitsu\ ;
+書目 < shomoku\ ;
+上箱 < uwabako\ ;
+胸像 < kyouzou\ ;
+胴元 < doumoto\ ;
+暗色 < anshoku\ ;
+完壁 < kanbeki\ ;
+胆嚢 < tan''nou\ ;
+豊熟 < houjuku\ ;
+上策 < jousaku\ ;
+顎紐 < agohimo\ ;
+木炭 < mokutan\ ;
+余力 < yoryoku\ ;
+受像機 < juzouki\ ;
+中盤 < chuuban\ ;
+記念樹 < kinenju\ ;
+耳栓 < mimisen\ ;
+余割 < yokatsu\ ;
+万策 < bansaku\ ;
+令息 < reisoku\ ;
+粉微塵 < komijin\ ;
+片面 < katamen\ ;
+為政者 < iseisha\ ;
+特配 < tokuhai\ ;
+乳清 < nyuusei\ ;
+日露 < nichiro\ ;
+大犬座 < ooinuza\ ;
+日時計 < hidokei\ ;
+乳液 < nyuueki\ ;
+献立 < kondate\ ;
+両眼 < ryougan\ ;
+何処 < dokoira\ ;
+豆炭 < mametan\ ;
+実員 < jitsuin\ ;
+珍本 < chinpon\ ;
+代役 < daiyaku\ ;
+乱流 < ranryuu\ ;
+一端 < ippashi\ ;
+珍書 < chinsho\ ;
+何共 < nantomo\ ;
+寒中 < kanchuu\ ;
+時事論 < jijiron\ ;
+中瓶 < chuubin\ ;
+万福 < manpuku\ ;
+職工 < shokkou\ ;
+宅地 < takuchi\ ;
+乳汁 < nyuujuu\ ;
+校倉 < azekura\ ;
+翕然 < kyuuzen\ ;
+保養院 < hoyouin\ ;
+新鮮 < shinsen\ ;
+豊漁 < houryou\ ;
+譫言 < uwagoto\ ;
+朝潮 < asashio\ ;
+自然薯 < jinenjo\ ;
+保健所 < hokenjo\ ;
+風潮 < fuuchou\ ;
+胴中 < dounaka\ ;
+頚肉 < keiniku\ ;
+作例 < sakurei\ ;
+離弁花 < ribenka\ ;
+本流 < honryuu\ ;
+密事 < mitsuji\ ;
+仰山 < gyousan\ ;
+仏恩 < butsuon\ ;
+次世代 < jisedai\ ;
+他律 < taritsu\ ;
+来春 < raiharu\ ;
+不器用 < bukiyou\ ;
+現役 < gen''eki\ ;
+一礼 < ichirei\ ;
+順良 < junryou\ ;
+上石 < uwaishi\ ;
+実務 < jitsumu\ ;
+子局 < kokyoku\ ;
+手奇麗 < tegirei\ ;
+下着 < shitagi\ ;
+未決 < miketsu\ ;
+大黒 < daikoku\ ;
+塩基性 < enkisei\ ;
+仕度 < shitaku\ ;
+学外 < gakugai\ ;
+頬紅 < hoobeni\ ;
+面長 < omonaga\ ;
+識語 < shikigo\ ;
+低俗 < teizoku\ ;
+下目 < shitame\ ;
+杏林 < kyourin\ ;
+孑孑 < boufuri\ ;
+暗緑 < anryoku\ ;
+馬主 < banushi\ ;
+特赦 < tokusha\ ;
+不発 < fuhatsu\ ;
+何人 < nanpito\ ;
+記念日 < kinenbi\ ;
+高祖父 < kousofu\ ;
+今日中 < kyoujuu\ ;
+職安 < shokuan\ ;
+景色 < keshiki\ ;
+村有 < son''yuu\ ;
+材木 < zaimoku\ ;
+朧気 < oboroge\ ;
+万目 < banmoku\ ;
+露骨 < rokotsu\ ;
+仏座 < butsuza\ ;
+飛札 < hisatsu\ ;
+大鷺 < daisagi\ ;
+論駁 < ronbaku\ ;
+風流 < fuuryuu\ ;
+学報 < gakuhou\ ;
+肉声 < nikusei\ ;
+代将 < daishou\ ;
+豊沃 < houyoku\ ;
+萎黄病 < ioubyou\ ;
+聖廟 < seibyou\ ;
+家主 < yanushi\ ;
+一着 < itchaku\ ;
+一眼 < ichigan\ ;
+一眸 < ichibou\ ;
+識見 < shikken\ ;
+某国 < boukoku\ ;
+杉材 < sugizai\ ;
+一眠 < ichimin\ ;
+仁徳 < jintoku\ ;
+宛先 < atesaki\ ;
+擬古文 < gikobun\ ;
+新風 < shinpuu\ ;
+一直 < itchoku\ ;
+今年 < kon''nen\ ;
+胚乳 < hainyuu\ ;
+二日 < futsuka\ ;
+断食 < danjiki\ ;
+乳棒 < nyuubou\ ;
+下略 < geryaku\ ;
+瑞兆 < zuichou\ ;
+新顔 < shingao\ ;
+万病 < manbyou\ ;
+韻脚 < inkyaku\ ;
+地衣類 < chiirui\ ;
+翼棟 < yokutou\ ;
+三男 < san''nan\ ;
+材料 < zairyou\ ;
+婆羅門 < baramon\ ;
+官僚 < kanryou\ ;
+文鳥 < bunchou\ ;
+人徳 < nintoku\ ;
+仰天 < gyouten\ ;
+賊害 < zokugai\ ;
+題目 < daimoku\ ;
+人形 < ningyou\ ;
+牛車 < gyuusha\ ;
+賊子 < zokushi\ ;
+秘書課 < hishoka\ ;
+本業 < hongyou\ ;
+印画紙 < ingashi\ ;
+貧弱 < hinjaku\ ;
+爆風 < bakufuu\ ;
+老朽 < roukyuu\ ;
+早速 < sassoku\ ;
+旧道 < kyuudou\ ;
+老木 < rouboku\ ;
+特認 < tokunin\ ;
+本棚 < hondana\ ;
+妙趣 < myoushu\ ;
+物象 < busshou\ ;
+仏寺 < butsuji\ ;
+予想屋 < yosouya\ ;
+慈善家 < jizenka\ ;
+末梢 < masshou\ ;
+論難 < ron''nan\ ;
+土曜日 < doyoubi\ ;
+上玉 < joudama\ ;
+論集 < ronshuu\ ;
+林学 < ringaku\ ;
+学問 < gakumon\ ;
+豪族 < gouzoku\ ;
+職場 < shokuba\ ;
+本格 < honkaku\ ;
+会則 < kaisoku\ ;
+主流 < shuryuu\ ;
+既述 < kijutsu\ ;
+義烈 < giretsu\ ;
+降雨林 < kouurin\ ;
+物議 < butsugi\ ;
+貸家 < kashiya\ ;
+有毒 < yuudoku\ ;
+新開 < shinkai\ ;
+下物 < kabutsu\ ;
+仙女 < sen''nyo\ ;
+爆雷 < bakurai\ ;
+伏勢 < fusezei\ ;
+上物 < joumono\ ;
+朝風呂 < asaburo\ ;
+枠外 < wakugai\ ;
+本朝 < honchou\ ;
+特装 < tokusou\ ;
+領空 < ryoukuu\ ;
+学名 < gakumei\ ;
+旧蹟 < furuato\ ;
+末期 < matsugo\ ;
+木杯 < mokuhai\ ;
+再下付 < saikafu\ ;
+洋画家 < yougaka\ ;
+謬論 < byuuron\ ;
+木材 < mokuzai\ ;
+学友 < gakuyuu\ ;
+木本 < mokuhon\ ;
+下熱 < genetsu\ ;
+定規座 < jougiza\ ;
+来復 < raifuku\ ;
+木曜 < mokuyou\ ;
+曲浦 < kyokuho\ ;
+類焼 < ruishou\ ;
+風格 < fuukaku\ ;
+松屋 < matsuya\ ;
+頭目 < toumoku\ ;
+九月 < kugatsu\ ;
+伏兵 < fukuhei\ ;
+特融 < tokuyuu\ ;
+乱撃 < rangeki\ ;
+獣欲 < juuyoku\ ;
+天領 < tenryou\ ;
+需用家 < juyouka\ ;
+保健婦 < hokenfu\ ;
+豆板 < mameita\ ;
+購入 < kounyuu\ ;
+餅屋 < mochiya\ ;
+嫡披 < chakuhi\ ;
+朝来 < chourai\ ;
+謬見 < byuuken\ ;
+下火 < shitabi\ ;
+豆本 < mamehon\ ;
+高祖母 < kousobo\ ;
+妙計 < myoukei\ ;
+今夕 < kon''yuu\ ;
+九星 < kyuusei\ ;
+姿絵 < sugatae\ ;
+職員 < shokuin\ ;
+夜食 < yashoku\ ;
+球団 < kyuudan\ ;
+外耳炎 < gaijien\ ;
+多食 < tashoku\ ;
+肖像 < shouzou\ ;
+東屋 < azumaya\ ;
+天雲 < amagumo\ ;
+不潔 < fuketsu\ ;
+不裁可 < fusaika\ ;
+学内 < gakunai\ ;
+中正 < chuusei\ ;
+文革 < bunkaku\ ;
+束帯 < sokutai\ ;
+警備員 < keibiin\ ;
+期日 < kijitsu\ ;
+食後 < shokugo\ ;
+不滅 < fumetsu\ ;
+朝方 < asagata\ ;
+夕風 < yuukaze\ ;
+音節 < onsetsu\ ;
+大陸 < tairiku\ ;
+誤作動 < gosadou\ ;
+聴取 < choushu\ ;
+独眼 < dokugan\ ;
+下湯 < shimoyu\ ;
+夜露 < yotsuyu\ ;
+人声 < hitogoe\ ;
+珍宝 < chinpou\ ;
+妄評 < mouhyou\ ;
+職務 < shokumu\ ;
+飯屋 < meshiya\ ;
+板壁 < itakabe\ ;
+人境 < jinkyou\ ;
+乾徳 < kentoku\ ;
+仮名本 < kanahon\ ;
+書棚 < shodana\ ;
+夕靄 < yuumoya\ ;
+来宅 < raitaku\ ;
+置物 < okimono\ ;
+獄死 < gokushi\ ;
+末技 < matsugi\ ;
+札所 < fudasho\ ;
+夕霧 < yuugiri\ ;
+頒白 < hanpaku\ ;
+上海 < shanhai\ ;
+斤量 < kinryou\ ;
+新道 < shindou\ ;
+晩秋 < banshuu\ ;
+上流 < jouryuu\ ;
+乗換 < norikae\ ;
+三流 < sanryuu\ ;
+上洛 < jouraku\ ;
+末成 < uranari\ ;
+片親 < kataoya\ ;
+賠償 < baishou\ ;
+翌晩 < yokuban\ ;
+九拝 < kyuuhai\ ;
+仮免 < karimen\ ;
+丸材 < maruzai\ ;
+任侠 < ninkyou\ ;
+肉体 < nikutai\ ;
+月日 < tsukihi\ ;
+敵陣 < tekijin\ ;
+項目 < koumoku\ ;
+変革 < henkaku\ ;
+一浪 < ichirou\ ;
+料金 < ryoukin\ ;
+老弱 < roujaku\ ;
+夕闇 < yuuyami\ ;
+数隻 < suuseki\ ;
+新車 < shinsha\ ;
+中枢 < chuusuu\ ;
+事局 < jikyoku\ ;
+文鎮 < bunchin\ ;
+仮借 < kashaku\ ;
+代入 < dainyuu\ ;
+一泡 < hitoawa\ ;
+雨風 < amekaze\ ;
+豪州 < goushuu\ ;
+助産所 < josanjo\ ;
+革装 < kawasou\ ;
+仏印 < futsuin\ ;
+主教 < shukyou\ ;
+一決 < ikketsu\ ;
+事実 < jijitsu\ ;
+予察 < yosatsu\ ;
+一汗 < hitoase\ ;
+諸訳 < showake\ ;
+姦策 < kansaku\ ;
+仲仕 < nakashi\ ;
+仲介 < chuukai\ ;
+仲人 < nakoudo\ ;
+京地 < kyouchi\ ;
+買収 < baishuu\ ;
+一毫 < ichigou\ ;
+枠内 < wakunai\ ;
+一毛 < ichimou\ ;
+耳垢 < mimiaka\ ;
+牧草 < bokusou\ ;
+館内 < kan''nai\ ;
+中旬 < chuujun\ ;
+縦隔 < juukaku\ ;
+大時代 < oojidai\ ;
+枸櫞酸 < kuensan\ ;
+雑駁 < zappaku\ ;
+頓狂 < tonkyou\ ;
+虚無僧 < komusou\ ;
+失透 < shittou\ ;
+両替 < ryougae\ ;
+雪隠 < setchin\ ;
+嬰記号 < eikigou\ ;
+末座 < matsuza\ ;
+飴坊 < amenbou\ ;
+保健医 < hoken''i\ ;
+代作 < daisaku\ ;
+丸損 < maruzon\ ;
+林内 < rin''nai\ ;
+末広 < suehiro\ ;
+頭字語 < toujigo\ ;
+代休 < daikyuu\ ;
+牧舎 < bokusha\ ;
+仏具 < butsugu\ ;
+末席 < masseki\ ;
+謹聴 < kinchou\ ;
+諸行 < shogyou\ ;
+木太刀 < kidachi\ ;
+玉座 < gyokuza\ ;
+本州 < honshuu\ ;
+猛毒 < moudoku\ ;
+緘黙 < kanmoku\ ;
+介入 < kainyuu\ ;
+曝書 < bakusho\ ;
+豹変 < hyouhen\ ;
+救難 < kyuunan\ ;
+両断 < ryoudan\ ;
+奥行 < okuyuki\ ;
+朝廷 < choutei\ ;
+文通 < buntsuu\ ;
+食塩 < shokuen\ ;
+熱雲 < netsuun\ ;
+蓮華座 < rengeza\ ;
+教門 < kyoumon\ ;
+雑音 < zatsuon\ ;
+狛犬 < komainu\ ;
+珍問 < chinmon\ ;
+愛書家 < aishoka\ ;
+雁首 < gankubi\ ;
+暦法 < rekihou\ ;
+天軸 < tenjiku\ ;
+語釈 < goshaku\ ;
+人前 < hitomae\ ;
+馬刀貝 < mategai\ ;
+現任 < gen''nin\ ;
+夜道 < yomichi\ ;
+論調 < ronchou\ ;
+乙巡 < otsujun\ ;
+夏野 < natsuno\ ;
+外郭 < gaikaku\ ;
+珍品 < chinpin\ ;
+朝市 < asaichi\ ;
+奉読 < houdoku\ ;
+昼礼 < chuurei\ ;
+末尾 < matsubi\ ;
+下期 < shimoki\ ;
+数量 < suuryou\ ;
+燗酒 < kanzake\ ;
+仕事 < shigoto\ ;
+論評 < ronpyou\ ;
+上服 < uwafuku\ ;
+木履 < pokkuri\ ;
+末寺 < matsuji\ ;
+論証 < ronshou\ ;
+物置 < monooki\ ;
+服従 < fukujuu\ ;
+三月 < mitsuki\ ;
+趣意書 < shuisho\ ;
+服役 < fukueki\ ;
+両損 < ryouzon\ ;
+牛脂 < gyuushi\ ;
+牧羊 < bokuyou\ ;
+変量 < henryou\ ;
+万有 < ban''yuu\ ;
+本宅 < hontaku\ ;
+曲技 < kyokugi\ ;
+青蛙 < aogaeru\ ;
+有徳 < yuutoku\ ;
+特級 < tokkyuu\ ;
+献木 < kenboku\ ;
+飛地 < tobichi\ ;
+猫板 < nekoita\ ;
+日英 < nichiei\ ;
+請謁 < seietsu\ ;
+易経 < ekikyou\ ;
+貝割 < kaiwari\ ;
+不日 < fujitsu\ ;
+暖流 < danryuu\ ;
+青虫 < aomushi\ ;
+三春 < sanshun\ ;
+一札 < issatsu\ ;
+耐圧 < taiatsu\ ;
+縫針 < nuibari\ ;
+運搬費 < unpanhi\ ;
+頂点 < chouten\ ;
+一曲 < ikkyoku\ ;
+丹念 < tan''nen\ ;
+音物 < inmotsu\ ;
+日舞 < nichibu\ ;
+旧臘 < kyuurou\ ;
+獣心 < juushin\ ;
+請託 < seitaku\ ;
+老境 < roukyou\ ;
+攘夷論 < jouiron\ ;
+懐疑派 < kaigiha\ ;
+今一 < imaichi\ ;
+万斛 < bankoku\ ;
+無煙炭 < muentan\ ;
+三教 < sankyou\ ;
+一晩 < hitoban\ ;
+天象 < tenshou\ ;
+晩熟 < banjuku\ ;
+妥結 < daketsu\ ;
+春秋 < haruaki\ ;
+牛缶 < gyuukan\ ;
+安静時 < anseiji\ ;
+最強 < saikyou\ ;
+変速 < hensoku\ ;
+変通 < hentsuu\ ;
+暗殺 < ansatsu\ ;
+敵軍 < tekigun\ ;
+特等 < tokutou\ ;
+片腕 < kataude\ ;
+一旬 < ichijun\ ;
+女生徒 < joseito\ ;
+乞婿 < koimuko\ ;
+虎燕拳 < koenken\ ;
+頸椎 < keitsui\ ;
+責任 < sekinin\ ;
+顔料 < ganryou\ ;
+正常位 < seijoui\ ;
+末女 < matsujo\ ;
+朱墨 < shuboku\ ;
+丁数 < chousuu\ ;
+旗色 < hatairo\ ;
+補助金 < hojokin\ ;
+女色 < joshoku\ ;
+旧聞 < kyuubun\ ;
+阿婆擦 < abazure\ ;
+片肺 < katahai\ ;
+朱塗 < shunuri\ ;
+領水 < ryousui\ ;
+面舵 < omokaji\ ;
+丸帯 < maruobi\ ;
+琵琶行 < biwakou\ ;
+総高 < soudaka\ ;
+声量 < seiryou\ ;
+助産婦 < josanpu\ ;
+朧夜 < oboroyo\ ;
+壁面 < hekimen\ ;
+翰墨 < kanboku\ ;
+玄妙 < genmyou\ ;
+修羅場 < shuraba\ ;
+羸弱 < ruijaku\ ;
+九大 < kyuudai\ ;
+三振 < sanshin\ ;
+不抜 < fubatsu\ ;
+大詰 < oodzume\ ;
+豪商 < goushou\ ;
+手一杯 < teippai\ ;
+中年 < chuunen\ ;
+一握 < ichiaku\ ;
+曲庇 < kyokuhi\ ;
+説諭 < setsuyu\ ;
+無線機 < musenki\ ;
+中帽 < chuubou\ ;
+春眠 < shunmin\ ;
+頬桁 < hoogeta\ ;
+万灯会 < mandoue\ ;
+牧童 < bokudou\ ;
+東京 < toukyou\ ;
+本国 < hongoku\ ;
+説話 < setsuwa\ ;
+二列 < niretsu\ ;
+一括 < ikkatsu\ ;
+非職 < hishoku\ ;
+改鋳 < kaichuu\ ;
+猛撃 < mougeki\ ;
+敏速 < binsoku\ ;
+頬杖 < hoodzue\ ;
+新著 < shincho\ ;
+水位計 < suiikei\ ;
+羞恥 < shuuchi\ ;
+九地 < kyuuchi\ ;
+明確 < meikaku\ ;
+総額 < sougaku\ ;
+二八 < nihachi\ ;
+漢方医 < kanpoui\ ;
+景況 < keikyou\ ;
+日給 < nikkyuu\ ;
+羽目板 < hameita\ ;
+具体案 < gutaian\ ;
+集金 < shuukin\ ;
+雨足 < ameashi\ ;
+暦数 < rekisuu\ ;
+新茶 < shincha\ ;
+風圧 < fuuatsu\ ;
+総革 < sougawa\ ;
+中尊 < chuuzon\ ;
+明瞭 < meiryou\ ;
+縷説 < rusetsu\ ;
+集配 < shuuhai\ ;
+月央 < getsuou\ ;
+中宮 < chuuguu\ ;
+綿飴 < wataame\ ;
+月夜 < tsukiyo\ ;
+日本化 < nihonka\ ;
+三徳 < santoku\ ;
+陰鬱 < in''utsu\ ;
+緑陰 < ryokuin\ ;
+敵視 < tekishi\ ;
+放逸 < houitsu\ ;
+研磨機 < kenmaki\ ;
+上役 < uwayaku\ ;
+増額 < zougaku\ ;
+一息 < hitoiki\ ;
+乳剤 < nyuuzai\ ;
+明白 < meihaku\ ;
+大雑把 < oozappa\ ;
+下座 < shimoza\ ;
+古井戸 < furuido\ ;
+一念 < ichinen\ ;
+万引 < manbiki\ ;
+胃潰瘍 < ikaiyou\ ;
+特産 < tokusan\ ;
+木口 < kiguchi\ ;
+一徹 < ittetsu\ ;
+顔役 < kaoyaku\ ;
+翻刻 < honkoku\ ;
+三年 < san''nen\ ;
+日立 < hitachi\ ;
+救貧 < kyuuhin\ ;
+断腸 < danchou\ ;
+杏仁 < kyounin\ ;
+万年 < man''nen\ ;
+物的 < butteki\ ;
+陸風 < rikufuu\ ;
+多義性 < tagisei\ ;
+一式 < isshiki\ ;
+状況 < joukyou\ ;
+甘露煮 < kanroni\ ;
+新聞 < shinbun\ ;
+本則 < honsoku\ ;
+中外 < chuugai\ ;
+乙女座 < otomeza\ ;
+奴等 < yatsura\ ;
+独断 < dokudan\ ;
+詰責 < kisseki\ ;
+耐久 < taikyuu\ ;
+難読 < nandoku\ ;
+顧客 < kokyaku\ ;
+独文 < dokubun\ ;
+保守派 < hoshuha\ ;
+旗竿 < hatazao\ ;
+霊薬 < reiyaku\ ;
+教訓 < kyoukun\ ;
+不屈 < fukutsu\ ;
+木刀 < bokutou\ ;
+新羅 < shiragi\ ;
+増長 < zouchou\ ;
+暁星 < gyousei\ ;
+険難 < ken''nan\ ;
+叙事詩 < jojishi\ ;
+上履 < uwabaki\ ;
+本元 < honmoto\ ;
+大掃除 < oosouji\ ;
+烏龍茶 < ūroncha\ ;
+中堅 < chuuken\ ;
+夏蚕 < natsugo\ ;
+女王蟻 < joouari\ ;
+半母音 < hanboin\ ;
+三尺 < sanjaku\ ;
+天草 < tengusa\ ;
+月商 < gesshou\ ;
+無政府 < museifu\ ;
+下宿 < geshuku\ ;
+議決 < giketsu\ ;
+乱作 < ransaku\ ;
+下家 < shitaya\ ;
+牛痘 < gyuutou\ ;
+物理 < butsuri\ ;
+更地 < sarachi\ ;
+牛疫 < gyuueki\ ;
+義和団 < giwadan\ ;
+朝凪 < asanagi\ ;
+一尺 < isshaku\ ;
+独探 < dokutan\ ;
+緑野 < ryokuya\ ;
+七宝 < shippou\ ;
+旧盤 < kyuuban\ ;
+詳解 < shoukai\ ;
+契約 < keiyaku\ ;
+難行 < nangyou\ ;
+月収 < gesshuu\ ;
+雑話 < zatsuwa\ ;
+旧盆 < kyuubon\ ;
+一宿 < isshuku\ ;
+無骨 < bukotsu\ ;
+好事家 < kouzuka\ ;
+売行 < ureyuki\ ;
+頁数 < pējisuu\ ;
+断続 < danzoku\ ;
+音曲 < ongyoku\ ;
+一存 < ichizon\ ;
+夕菅 < yuusuge\ ;
+施策 < shisaku\ ;
+日白 < nippaku\ ;
+大腸 < daichou\ ;
+行為者 < kouisha\ ;
+牢獄 < rougoku\ ;
+犬橇 < inuzori\ ;
+与奪 < yodatsu\ ;
+本人 < hon''nin\ ;
+熟談 < jukudan\ ;
+機関庫 < kikanko\ ;
+機関座 < kikanza\ ;
+牡猫 < osuneko\ ;
+晩春 < banshun\ ;
+独房 < dokubou\ ;
+新米 < shinmai\ ;
+方策 < housaku\ ;
+犬槙 < inumaki\ ;
+木仏 < kibutsu\ ;
+早番 < hayaban\ ;
+本丸 < honmaru\ ;
+晩方 < bangata\ ;
+繭紬 < kenchuu\ ;
+青票 < seihyou\ ;
+猛将 < moushou\ ;
+同意見 < douiken\ ;
+丈夫 < masurao\ ;
+月利 < getsuri\ ;
+改訳 < kaiyaku\ ;
+増量 < zouryou\ ;
+零落 < reiraku\ ;
+丸十 < marujuu\ ;
+集計 < shuukei\ ;
+話術 < wajutsu\ ;
+牝犬 < mesuinu\ ;
+熟覧 < jukuran\ ;
+熟視 < jukushi\ ;
+面目 < menmoku\ ;
+煎鍋 < irinabe\ ;
+玄人 < kurouto\ ;
+断箱 < danbako\ ;
+議事堂 < gijidou\ ;
+填隙 < tengeki\ ;
+上塗 < uwanuri\ ;
+一如 < ichinyo\ ;
+不埒 < furachi\ ;
+緊迫 < kinpaku\ ;
+万境 < bankyou\ ;
+論策 < ronsaku\ ;
+訳載 < yakusai\ ;
+明澄 < meichou\ ;
+一大 < ichidai\ ;
+評論 < hyouron\ ;
+調練 < chouren\ ;
+中原 < chuugen\ ;
+誤脱 < godatsu\ ;
+読者 < dokusha\ ;
+売薬 < baiyaku\ ;
+豆乳 < tounyuu\ ;
+一声 < hitokoe\ ;
+天糸瓜 < hechima\ ;
+保安林 < hoanrin\ ;
+腐葉土 < fuyoudo\ ;
+下地 < shitaji\ ;
+増進 < zoushin\ ;
+面疔 < menchou\ ;
+頂戴 < choudai\ ;
+論究 < ronkyuu\ ;
+新税 < shinzei\ ;
+海豚座 < irukaza\ ;
+下図 < shitazu\ ;
+自衛隊 < jieitai\ ;
+改行 < kaigyou\ ;
+語脈 < gomyaku\ ;
+繊維素 < sen''iso\ ;
+三国 < sangoku\ ;
+両名 < ryoumei\ ;
+随身 < zuishin\ ;
+無雑 < muzatsu\ ;
+移行性 < ikousei\ ;
+中前 < chuuzen\ ;
+親鸞 < shinran\ ;
+電脳 < den''nou\ ;
+湯湯婆 < yutanpo\ ;
+中分 < chuubun\ ;
+絶頂 < zetchou\ ;
+頑強 < gankyou\ ;
+繋縛 < keibaku\ ;
+太糸 < futoito\ ;
+交尾期 < koubiki\ ;
+始業 < shigyou\ ;
+一団 < ichidan\ ;
+早熟 < soujuku\ ;
+誇色 < koshoku\ ;
+託送 < takusou\ ;
+雌蘂 < meshibe\ ;
+順応 < jun''nou\ ;
+陸送 < rikusou\ ;
+月事 < getsuji\ ;
+親鳥 < oyadori\ ;
+特段 < tokudan\ ;
+両前 < ryoumae\ ;
+大粒 < ootsubu\ ;
+訓迪 < kunteki\ ;
+陶磁器 < toujiki\ ;
+特殊 < tokushu\ ;
+境遇 < kyouguu\ ;
+試薬 < shiyaku\ ;
+重馬場 < omobaba\ ;
+詐術 < sajutsu\ ;
+両分 < ryoubun\ ;
+歳時記 < saijiki\ ;
+阿多福 < otafuku\ ;
+不吉 < fukitsu\ ;
+上告 < joukoku\ ;
+御節介 < osekkai\ ;
+陸軍 < rikugun\ ;
+亜麻仁油 < amaniyu\ ;
+新盤 < shinban\ ;
+韻律 < inritsu\ ;
+暴圧 < bouatsu\ ;
+許諾 < kyodaku\ ;
+爆砕 < bakusai\ ;
+両像 < ryouzou\ ;
+狂態 < kyoutai\ ;
+婿入 < mukoiri\ ;
+訳詩 < yakushi\ ;
+離脱 < ridatsu\ ;
+昇段 < shoudan\ ;
+牧民 < bokumin\ ;
+天窓 < tenmado\ ;
+一命 < ichimei\ ;
+教育 < kyouiku\ ;
+一味 < hitoaji\ ;
+失禁 < shikkin\ ;
+総評 < souhyou\ ;
+妙法 < myouhou\ ;
+親骨 < oyabone\ ;
+書中 < shochuu\ ;
+万博 < banpaku\ ;
+番小屋 < bangoya\ ;
+音律 < onritsu\ ;
+下劣 < geretsu\ ;
+愛犬家 < aikenka\ ;
+三助 < sansuke\ ;
+両便 < ryouben\ ;
+耽美派 < tanbiha\ ;
+春本 < shunpon\ ;
+七十 < nanajuu\ ;
+覿面 < tekimen\ ;
+万力 < manriki\ ;
+丁半 < chouhan\ ;
+大福 < daifuku\ ;
+天祐 < ten''yuu\ ;
+昨晩 < sakuban\ ;
+保育所 < hoikujo\ ;
+晩年 < ban''nen\ ;
+照覧 < shouran\ ;
+緊要 < kin''you\ ;
+妨業 < bougyou\ ;
+両人 < ryounin\ ;
+観音 < kan''non\ ;
+時折 < tokiori\ ;
+遊離基 < yuuriki\ ;
+撰録 < senroku\ ;
+互助会 < gojokai\ ;
+改良 < kairyou\ ;
+施物 < semotsu\ ;
+奮激 < fungeki\ ;
+両三 < ryousan\ ;
+電算 < densoro\ ;
+結露 < ketsuro\ ;
+教練 < kyouren\ ;
+上側 < uwagawa\ ;
+姦悪 < kan''aku\ ;
+補助線 < hojosen\ ;
+角錐 < kakusui\ ;
+結集 < kesshuu\ ;
+下値 < shitane\ ;
+女湯 < on''nayu\ ;
+一元 < ichigen\ ;
+羅列 < raretsu\ ;
+暖国 < dankoku\ ;
+事務所 < jimusho\ ;
+陳謝 < chinsha\ ;
+一億 < ichioku\ ;
+訓読 < kundoku\ ;
+爛熟 < ranjuku\ ;
+明朝 < minchou\ ;
+託言 < takugen\ ;
+領域 < ryouiki\ ;
+言責 < genseki\ ;
+保護金 < hogokin\ ;
+太白 < taihaku\ ;
+特旨 < tokushi\ ;
+天皇 < ten''nou\ ;
+数秒 < suubyou\ ;
+散策 < sansaku\ ;
+万作 < mansaku\ ;
+明晰 < meiseki\ ;
+晩学 < bangaku\ ;
+明晩 < myouban\ ;
+一倍 < ichibai\ ;
+終電 < shuuden\ ;
+日欧 < nichiou\ ;
+明星 < myoujou\ ;
+三人 < san''nin\ ;
+縦笛 < tatebue\ ;
+集群 < shuugun\ ;
+万人 < man''nin\ ;
+大病 < taibyou\ ;
+菓子器 < kashiki\ ;
+頭取 < toudori\ ;
+雨笠 < amagasa\ ;
+縦穴 < tateana\ ;
+一任 < ichinin\ ;
+大男 < oootoko\ ;
+罰則 < bassoku\ ;
+震盪 < shintou\ ;
+霊的 < reiteki\ ;
+愛妻家 < aisaika\ ;
+外相 < gaishou\ ;
+多発 < tahatsu\ ;
+雨空 < amazora\ ;
+然諾 < zendaku\ ;
+詮索 < sensaku\ ;
+散票 < sanpyou\ ;
+養父母 < youfubo\ ;
+練習 < renshuu\ ;
+評者 < hyousha\ ;
+熟練 < jukuren\ ;
+外的 < gaiteki\ ;
+障泥烏賊 < aoriika\ ;
+独善 < dokuzen\ ;
+夏着 < natsugi\ ;
+天球 < tenkyuu\ ;
+起電機 < kidenki\ ;
+妻戸 < tsumado\ ;
+二死後 < nishigo\ ;
+斑猫 < hanmyou\ ;
+晋山 < shinzan\ ;
+旋毛 < tsumuji\ ;
+報酬 < houshuu\ ;
+葉牡丹 < habotan\ ;
+已然形 < izenkei\ ;
+烈震 < resshin\ ;
+春情 < shunjou\ ;
+緬羊 < men''you\ ;
+縟礼 < jokurei\ ;
+大獄 < taigoku\ ;
+狂奔 < kyouhon\ ;
+墨色 < sumiiro\ ;
+総花 < soubana\ ;
+敦睦 < tonboku\ ;
+大規模 < daikibo\ ;
+独吟 < dokugin\ ;
+具体化 < gutaika\ ;
+覆面 < fukumen\ ;
+織物 < orimono\ ;
+保安官 < hoankan\ ;
+旧来 < kyuurai\ ;
+旧村 < kyuuson\ ;
+野獣派 < yajuuha\ ;
+独占 < dokusen\ ;
+電位差 < den''isa\ ;
+日朝 < nitchou\ ;
+如月 < nigatsu\ ;
+失点 < shitten\ ;
+雑穀 < zakkoku\ ;
+襟髪 < erigami\ ;
+親里 < oyazato\ ;
+照臨 < shourin\ ;
+早春 < soushun\ ;
+昨年 < sakunen\ ;
+天然 < ten''nen\ ;
+奥様 < okusama\ ;
+日時 < nichiji\ ;
+緑肥 < ryokuhi\ ;
+非対応 < hitaiou\ ;
+蓖麻子 < himashi\ ;
+裸体画 < rataiga\ ;
+領内 < ryounai\ ;
+事務官 < jimukan\ ;
+電球 < denkyuu\ ;
+片方 < katahou\ ;
+訳者 < yakusha\ ;
+特待 < tokutai\ ;
+起訴状 < kisojou\ ;
+襟首 < erikubi\ ;
+奪格 < dakkaku\ ;
+野暮用 < yaboyou\ ;
+敵状 < tekijou\ ;
+撃退 < gekitai\ ;
+無灯火 < mutouka\ ;
+難癖 < nankuse\ ;
+春嵐 < shunran\ ;
+襲雷 < shuurai\ ;
+妙所 < myousho\ ;
+明徳 < meitoku\ ;
+難症 < nanshou\ ;
+難病 < nanbyou\ ;
+無血 < muketsu\ ;
+無記名 < mukimei\ ;
+昔年 < sekinen\ ;
+炒飯 < chaahan\ ;
+誘爆 < yuubaku\ ;
+外為 < gaitame\ ;
+震災 < shinsai\ ;
+春寒 < shunkan\ ;
+爆死 < bakushi\ ;
+都議選 < togisen\ ;
+網膜 < moumaku\ ;
+熟知 < jukuchi\ ;
+明年 < myounen\ ;
+天減 < tenbiki\ ;
+保育園 < hoikuen\ ;
+姉婿 < anemuko\ ;
+終車 < shuusha\ ;
+精麦 < seibaku\ ;
+熟睡 < jukusui\ ;
+縫物 < nuimono\ ;
+緊縛 < kinbaku\ ;
+熟眠 < jukumin\ ;
+保育器 < hoikuki\ ;
+墨糸 < sumiito\ ;
+陰膳 < kagezen\ ;
+詩的 < shiteki\ ;
+星学 < seigaku\ ;
+愛好家 < aikouka\ ;
+青春 < seishun\ ;
+暇人 < himajin\ ;
+音力 < onryoku\ ;
+為銀 < tamegin\ ;
+訓育 < kun''iku\ ;
+奥方 < okugata\ ;
+狩人 < karyudo\ ;
+累進 < ruishin\ ;
+焼芋 < yakiimo\ ;
+委任状 < ininjou\ ;
+陪臣 < baishin\ ;
+牧師 < bokushi\ ;
+御披露目 < ohirome\ ;
+新案 < shin''an\ ;
+階級 < kaikyuu\ ;
+特定 < tokutei\ ;
+用器画 < youkiga\ ;
+昨夕 < sakuyuu\ ;
+隻眼 < sekigan\ ;
+保養所 < hoyoujo\ ;
+家庭科 < kateika\ ;
+増給 < zoukyuu\ ;
+不名誉 < fumeiyo\ ;
+旧悪 < kyuuaku\ ;
+数滴 < suuteki\ ;
+綾絹 < ayaginu\ ;
+索道 < sakudou\ ;
+結語 < ketsugo\ ;
+女手 < on''nade\ ;
+熱狂 < nekkyou\ ;
+女房 < nyoubou\ ;
+外海 < sotoumi\ ;
+大欲 < taiyoku\ ;
+結託 < kettaku\ ;
+外泊 < gaihaku\ ;
+覆輪 < fukurin\ ;
+整流 < seiryuu\ ;
+頂上 < choujou\ ;
+五輪旗 < gorinki\ ;
+熱燗 < atsukan\ ;
+日当 < hiatari\ ;
+糠雨 < nukaame\ ;
+旧弊 < kyuuhei\ ;
+特大 < tokudai\ ;
+親許 < oyamoto\ ;
+春坊 < harubou\ ;
+作業衣 < sagyoui\ ;
+詫状 < wabijou\ ;
+電流 < denryuu\ ;
+木戸銭 < kidosen\ ;
+特売 < tokubai\ ;
+耳下腺 < jikasen\ ;
+無色 < mushoku\ ;
+論敵 < ronteki\ ;
+家庭着 < kateigi\ ;
+雀球 < jankyuu\ ;
+文様 < mon''you\ ;
+大業 < taigyou\ ;
+旅所 < tabisho\ ;
+糸鋸 < itonoko\ ;
+外陰部 < gaiinbu\ ;
+特報 < tokuhou\ ;
+文楽 < bunraku\ ;
+無腰 < mugoshi\ ;
+面影 < omokage\ ;
+煙突 < entotsu\ ;
+墓穴 < boketsu\ ;
+和菓子 < wagashi\ ;
+調書 < chousho\ ;
+革帯 < kawaobi\ ;
+旅愁 < ryoshuu\ ;
+自在画 < jizaiga\ ;
+解脱 < gedatsu\ ;
+昼前 < hirumae\ ;
+続編 < zokuhen\ ;
+耕運機 < kouunki\ ;
+熱演 < netsuen\ ;
+雪洞 < bonbori\ ;
+総督 < soutoku\ ;
+一回忌 < ikkaiki\ ;
+間隙 < kangeki\ ;
+不可解 < fukakai\ ;
+靴屋 < kutsuya\ ;
+斎服 < saifuku\ ;
+旧居 < kyuukyo\ ;
+不可視 < fukashi\ ;
+大木 < taiboku\ ;
+城郭 < joukaku\ ;
+陸稲 < rikutou\ ;
+総理府 < sourifu\ ;
+失敬 < shikkei\ ;
+開陳 < kaichin\ ;
+失敗 < shippai\ ;
+奇抜 < kibatsu\ ;
+二分木 < nibungi\ ;
+失政 < shissei\ ;
+討究 < toukyuu\ ;
+霊柩 < reikyuu\ ;
+読本 < dokuhon\ ;
+防臭 < boushuu\ ;
+読書 < dokusho\ ;
+犯人 < han''nin\ ;
+奥庭 < okuniwa\ ;
+妊娠 < ninshin\ ;
+奥底 < okuzoko\ ;
+牧地 < bokuchi\ ;
+広辞苑 < koujien\ ;
+編物 < amimono\ ;
+天敵 < tenteki\ ;
+霊木 < reiboku\ ;
+夜曲 < yakyoku\ ;
+総画 < soukaku\ ;
+多数派 < tasuuha\ ;
+陣笠 < jingasa\ ;
+隆盛 < ryuusei\ ;
+評点 < hyouten\ ;
+保護者 < hogosha\ ;
+夜間部 < yakanbu\ ;
+文教 < bunkyou\ ;
+留守電 < rusuden\ ;
+変梃 < henteko\ ;
+米麦 < beibaku\ ;
+細螺 < kishago\ ;
+熱気 < netsuke\ ;
+昨冬 < sakutou\ ;
+春分 < shunbun\ ;
+長雨 < nagaame\ ;
+旧套 < kyuutou\ ;
+語末 < gomatsu\ ;
+糧道 < ryoudou\ ;
+掃除機 < soujiki\ ;
+襟足 < eriashi\ ;
+謹告 < kinkoku\ ;
+事務会 < jimukai\ ;
+断念 < dan''nen\ ;
+日夜 < nichiya\ ;
+日夕 < nisseki\ ;
+春光 < shunkou\ ;
+放流 < houryuu\ ;
+震旦 < shintan\ ;
+奥山 < okuyama\ ;
+静寂 < seijaku\ ;
+事前後 < jizengo\ ;
+菩提樹 < bodaiju\ ;
+火鉢 < hibachi\ ;
+絶縁 < zetsuen\ ;
+夕方 < yuugata\ ;
+粗食 < soshoku\ ;
+貝独楽 < baigoma\ ;
+境目 < sakaime\ ;
+無防備 < muboubi\ ;
+不思議 < fushigi\ ;
+旅客 < ryokaku\ ;
+不穏当 < fuontou\ ;
+昭代 < shoudai\ ;
+無筆 < muhitsu\ ;
+失態 < shittai\ ;
+結腸 < ketchou\ ;
+特典 < tokuten\ ;
+可塑材 < kasozai\ ;
+失意 < shitsui\ ;
+爆弾 < bakudan\ ;
+特免 < tokumen\ ;
+支流 < shiryuu\ ;
+揚陸 < youriku\ ;
+親船 < oyabune\ ;
+陸産 < rikusan\ ;
+陸生 < rikusei\ ;
+面壁 < menpeki\ ;
+探鳥 < tanchou\ ;
+約言 < yakugen\ ;
+梳綿機 < somenki\ ;
+粗雑 < sozatsu\ ;
+無手順 < mutejun\ ;
+電撃 < dengeki\ ;
+教書 < kyousho\ ;
+間近 < madjika\ ;
+新居 < shinkyo\ ;
+紺色 < kon''iro\ ;
+継目 < tsugime\ ;
+雷撃 < raigeki\ ;
+尾状花 < bijouka\ ;
+塾生 < jukusei\ ;
+調弦 < chougen\ ;
+燃料 < nenryou\ ;
+隠滅 < inmetsu\ ;
+大息 < taisoku\ ;
+集権 < shuuken\ ;
+便利屋 < benriya\ ;
+開通 < kaitsuu\ ;
+陣痛 < jintsuu\ ;
+外戚 < gaiseki\ ;
+網猟 < amiryou\ ;
+敵手 < tekishu\ ;
+大徳 < daitoku\ ;
+離日 < rinichi\ ;
+精進 < shoujin\ ;
+予知夢 < yochimu\ ;
+精通 < seitsuu\ ;
+煉獄 < rengoku\ ;
+御神籤 < omikuji\ ;
+諸国 < shokoku\ ;
+旧名 < kyuumei\ ;
+映写機 < eishaki\ ;
+難敵 < nanteki\ ;
+保護税 < hogozei\ ;
+瀝青 < rekisei\ ;
+叙事文 < jojibun\ ;
+旧友 < kyuuyuu\ ;
+結縁 < kechien\ ;
+袞龍 < konryou\ ;
+新婚 < shinkon\ ;
+英会話 < eikaiwa\ ;
+文弱 < bunjaku\ ;
+日収 < nisshuu\ ;
+不可能 < fukanou\ ;
+雑木 < zouboku\ ;
+説得 < settoku\ ;
+映画館 < eigakan\ ;
+靖国 < seikoku\ ;
+天幕 < tenmaku\ ;
+閲覧 < etsuran\ ;
+革命 < kakumei\ ;
+織布 < shokufu\ ;
+日印 < nichiin\ ;
+繊弱 < senjaku\ ;
+細腕 < hosoude\ ;
+零戦 < zerosen\ ;
+覚者 < kakusha\ ;
+組織 < soshiki\ ;
+謬伝 < byuuden\ ;
+誘惑 < yuuwaku\ ;
+牧人 < bokujin\ ;
+長辺 < chouhen\ ;
+霊廟 < reibyou\ ;
+詮方 < senkata\ ;
+片前 < katamae\ ;
+風雲児 < fuuunji\ ;
+垂迹 < suijaku\ ;
+墨汁 < bokujuu\ ;
+改暦 < kaireki\ ;
+阪神 < hanshin\ ;
+敵弾 < tekidan\ ;
+門跡 < monzeki\ ;
+粗金 < aragane\ ;
+親米 < shinbei\ ;
+敏捷 < binshou\ ;
+版元 < hanmoto\ ;
+楕円形 < daenkei\ ;
+見習 < minarai\ ;
+新地 < shinchi\ ;
+放擲 < houteki\ ;
+演奏家 < ensouka\ ;
+敷布 < shikifu\ ;
+牛丼 < gyuudon\ ;
+角盆 < kakubon\ ;
+詔書 < shousho\ ;
+大学 < daigaku\ ;
+可塑性 < kasosei\ ;
+壁板 < kabeita\ ;
+被除数 < hijosuu\ ;
+文学 < bungaku\ ;
+攻撃 < kougeki\ ;
+二次元 < nijigen\ ;
+緑樹 < ryokuju\ ;
+爪印 < tsumein\ ;
+手文庫 < tebunko\ ;
+旧例 < kyuurei\ ;
+糞蝿 < kusobae\ ;
+一箇所 < ikkasho\ ;
+予備隊 < yobitai\ ;
+疑問符 < gimonfu\ ;
+織姫 < orihime\ ;
+紅色 < beniiro\ ;
+陸海 < rikukai\ ;
+終端 < shuutan\ ;
+角番 < kadoban\ ;
+固定費 < koteihi\ ;
+精読 < seidoku\ ;
+織女 < shokujo\ ;
+日付 < hidzuke\ ;
+熱愛 < netsuai\ ;
+境涯 < kyougai\ ;
+霜夜 < shimoyo\ ;
+女傑 < joketsu\ ;
+天女 < ten''nyo\ ;
+角瓶 < kakubin\ ;
+紡績 < bouseki\ ;
+旧主 < kyuushu\ ;
+大女 < ooon''na\ ;
+敵対 < tekitai\ ;
+計測 < keisoku\ ;
+新品 < shinpin\ ;
+明治座 < meijiza\ ;
+理想家 < risouka\ ;
+無熱 < munetsu\ ;
+土壇場 < dotanba\ ;
+二次会 < nijikai\ ;
+総桐 < sougiri\ ;
+論告 < ronkoku\ ;
+熱心 < nesshin\ ;
+奉告 < houkoku\ ;
+失地 < shitchi\ ;
+義務感 < gimukan\ ;
+数学 < suugaku\ ;
+撃砕 < gekisai\ ;
+読売 < yomiuri\ ;
+掘鑿 < kussaku\ ;
+雹害 < hyougai\ ;
+総柄 < sougara\ ;
+霊妙 < reimyou\ ;
+三叉路 < sansaro\ ;
+変容 < hen''you\ ;
+旅僧 < tabisou\ ;
+熟慮 < jukuryo\ ;
+炎色 < enshoku\ ;
+訳本 < yakuhon\ ;
+墨書 < bokusho\ ;
+紛糾 < funkyuu\ ;
+推量 < suiryou\ ;
+撞球 < doukyuu\ ;
+夙夜 < shukuya\ ;
+熱度 < netsudo\ ;
+震央 < shin''ou\ ;
+波布茶 < habucha\ ;
+累積 < ruiseki\ ;
+裏釘 < urakugi\ ;
+裏金 < uragane\ ;
+攪拌 < kakuhan\ ;
+陸橋 < rikkyou\ ;
+証文 < shoumon\ ;
+赤啄木鳥 < akagera\ ;
+不愛想 < buaisou\ ;
+診断 < shindan\ ;
+大国 < taikoku\ ;
+註文 < chuumon\ ;
+紺碧 < konpeki\ ;
+一箇年 < ikkanen\ ;
+改悛 < kaishun\ ;
+絶無 < zetsumu\ ;
+外壁 < gaiheki\ ;
+塞源 < sokugen\ ;
+大嘴 < oohashi\ ;
+新兵 < shinpei\ ;
+訳文 < yakubun\ ;
+予備金 < yobikin\ ;
+掛金 < kakekin\ ;
+敗将 < haishou\ ;
+推進 < suishin\ ;
+雄心 < yuushin\ ;
+敵塁 < tekirui\ ;
+網棚 < amidana\ ;
+陸棚 < rikuhou\ ;
+不可知 < fukachi\ ;
+国風 < kokufuu\ ;
+隆替 < ryuutai\ ;
+線描 < senbyou\ ;
+調合 < chougou\ ;
+菩提寺 < bodaiji\ ;
+硫黄山 < iouyama\ ;
+陰極 < inkyoku\ ;
+夏場 < natsuba\ ;
+素因数 < soinsuu\ ;
+複製 < fukusei\ ;
+外圧 < gaiatsu\ ;
+仏蘭西 < furansu\ ;
+熟年 < jukunen\ ;
+結球 < kekkyuu\ ;
+外国 < gaikoku\ ;
+接辞 < setsuji\ ;
+不合理 < fugouri\ ;
+精薄 < seihaku\ ;
+掃除婦 < soujifu\ ;
+捕食 < hoshoku\ ;
+敵国 < tekkoku\ ;
+野暮天 < yaboten\ ;
+変域 < hen''iki\ ;
+保護委員 < hogoiin\ ;
+陽暦 < youreki\ ;
+家具等 < kagutou\ ;
+大名 < daimyou\ ;
+薔薇色 < barairo\ ;
+国電 < kokuden\ ;
+大口 < ooguchi\ ;
+不愉快 < fuyukai\ ;
+農機具 < noukigu\ ;
+国難 < kokunan\ ;
+輸送費 < yusouhi\ ;
+齲 < mushiba\ ;
+陽春 < youshun\ ;
+看護婦 < kangofu\ ;
+国際 < kokusai\ ;
+紋章 < monshou\ ;
+地道 < jimichi\ ;
+親玉 < oyadama\ ;
+御神火 < gojinka\ ;
+故実 < kojitsu\ ;
+国防 < kokubou\ ;
+放尿 < hounyou\ ;
+文博 < bunhaku\ ;
+予備軍 < yobigun\ ;
+擯斥 < hinseki\ ;
+縮図 < shukuzu\ ;
+間膜 < kanmaku\ ;
+大力 < dairiki\ ;
+推賞 < suishou\ ;
+激闘 < gekitou\ ;
+外周 < gaishuu\ ;
+古文書 < komonjo\ ;
+困難 < kon''nan\ ;
+縦坑 < tatekou\ ;
+給源 < kyuugen\ ;
+露仏 < rofutsu\ ;
+自衛権 < jieiken\ ;
+誡告 < kaikoku\ ;
+地軸 < chijiku\ ;
+大凶 < daikyou\ ;
+鶫 < tsugumi\ ;
+要目 < youmoku\ ;
+組版 < kumihan\ ;
+織元 < orimoto\ ;
+襟章 < erishou\ ;
+鵤 < ikaruga\ ;
+雛壇 < hinadan\ ;
+鵆 < chidori\ ;
+純真 < junshin\ ;
+隷属 < reizoku\ ;
+斜交 < hasukai\ ;
+繁劇 < hangeki\ ;
+煩悩 < bon''nou\ ;
+売国 < baikoku\ ;
+純益 < jun''eki\ ;
+料亭 < ryoutei\ ;
+緞帳 < donchou\ ;
+鰘 < muroaji\ ;
+敵勢 < tekizei\ ;
+表面 < hyoumen\ ;
+長芋 < nagaimo\ ;
+純白 < junpaku\ ;
+鯳 < sukesou\ ;
+防毒 < boudoku\ ;
+数匹 < suuhiki\ ;
+電卓 < dentaku\ ;
+終点 < shuuten\ ;
+緊急 < kinkyuu\ ;
+敵前 < tekizen\ ;
+夕凪 < yuunagi\ ;
+合氣道 < aikidou\ ;
+繚乱 < ryouran\ ;
+縄墨 < jouboku\ ;
+鬘 < katsura\ ;
+親潮 < oyashio\ ;
+点火器 < tenkaki\ ;
+補血 < hoketsu\ ;
+観測 < kansoku\ ;
+煮干 < niboshi\ ;
+綱手 < tsunade\ ;
+陸戦 < rikusen\ ;
+羽二重 < habutae\ ;
+集塵 < shuujin\ ;
+規準化 < kijunka\ ;
+隔年 < kakunen\ ;
+高度差 < koudosa\ ;
+無札 < musatsu\ ;
+無月 < mugetsu\ ;
+熱唱 < nesshou\ ;
+寄付金 < kifukin\ ;
+斉一 < seiitsu\ ;
+火口湖 < kakouko\ ;
+増強 < zoukyou\ ;
+険悪 < ken''aku\ ;
+長老 < chourou\ ;
+政治屋 < seijiya\ ;
+行頭 < gyoutou\ ;
+個々人 < kokojin\ ;
+隠密 < onmitsu\ ;
+霍乱 < kakuran\ ;
+国道 < kokudou\ ;
+結氷 < keppyou\ ;
+集団 < shuudan\ ;
+政治家 < seijika\ ;
+国連 < kokuren\ ;
+運営費 < un''eihi\ ;
+陳情 < chinjou\ ;
+火箸 < hibashi\ ;
+蝦夷菊 < ezogiku\ ;
+売卜 < baiboku\ ;
+敗北 < haiboku\ ;
+増幅 < zoufuku\ ;
+保護林 < hogorin\ ;
+潮騒 < shiosai\ ;
+木戸番 < kidoban\ ;
+索然 < sakuzen\ ;
+綾布 < ayanuno\ ;
+粘膜 < nenmaku\ ;
+摂理 < setsuri\ ;
+雪冤 < setsuen\ ;
+墨守 < bokushu\ ;
+粉茶 < konacha\ ;
+角材 < kakuzai\ ;
+経歴 < keireki\ ;
+離別 < ribetsu\ ;
+闘牛 < tougyuu\ ;
+摩滅 < mametsu\ ;
+国軍 < kokugun\ ;
+濫觴 < ranshou\ ;
+教典 < kyouten\ ;
+地表 < chihyou\ ;
+推薬 < suiyaku\ ;
+陳弁 < chinben\ ;
+炬燵 < kotatsu\ ;
+行間 < gyoukan\ ;
+開立 < kairyuu\ ;
+撞木 < shumoku\ ;
+浅知恵 < asadjie\ ;
+雑務 < zatsumu\ ;
+細流 < sairyuu\ ;
+集合 < shuugou\ ;
+地蜂 < jibachi\ ;
+青豌豆 < aoendou\ ;
+険峻 < kenshun\ ;
+街録 < gairoku\ ;
+女丈夫 < jojoubu\ ;
+円記号 < enkigou\ ;
+雑則 < zassoku\ ;
+装薬 < souyaku\ ;
+国賓 < kokuhin\ ;
+陸岸 < rikugan\ ;
+塗抹 < tomatsu\ ;
+陽射 < hizashi\ ;
+関白 < kanpaku\ ;
+焦慮 < shouryo\ ;
+亜寒帯 < akantai\ ;
+振鈴 < shinrei\ ;
+雑兵 < zouhyou\ ;
+隣国 < ringoku\ ;
+雀卓 < jantaku\ ;
+雪中 < setchuu\ ;
+墨堤 < bokutei\ ;
+託宣 < takusen\ ;
+損益 < son''eki\ ;
+陣幕 < jinmaku\ ;
+江戸川 < edogawa\ ;
+灰皿 < haizara\ ;
+結束 < kessoku\ ;
+灰白 < kaihaku\ ;
+親株 < oyakabu\ ;
+幼児語 < youjigo\ ;
+鎹 < kasugai\ ;
+国論 < kokuron\ ;
+緑土 < ryokudo\ ;
+激論 < gekiron\ ;
+暗暗裡 < an''anri\ ;
+不浄場 < fujouba\ ;
+要求 < youkyuu\ ;
+鋩 < kissaki\ ;
+熱中 < netchuu\ ;
+湯治場 < toujiba\ ;
+裏腹 < urahara\ ;
+評判 < hyouban\ ;
+納涼 < nouryou\ ;
+図説 < zusetsu\ ;
+間男 < maotoko\ ;
+摺本 < shouhon\ ;
+脳味噌 < noumiso\ ;
+雑事 < zatsuji\ ;
+子画面 < kogamen\ ;
+絶息 < zessoku\ ;
+陣容 < jin''you\ ;
+陸大 < rikudai\ ;
+褥瘡 < jokusou\ ;
+粗筋 < arasuji\ ;
+長短 < choutan\ ;
+親方 < oyakata\ ;
+可視化 < kashika\ ;
+設営 < setsuei\ ;
+絵心 < egokoro\ ;
+拝領 < hairyou\ ;
+絶後 < zetsugo\ ;
+不注意 < fuchuui\ ;
+粘稠 < nenchuu\ ;
+撮影 < satsuei\ ;
+護衛艦 < goeikan\ ;
+塩害 < shiogai\ ;
+補綴 < hotetsu\ ;
+篤農 < tokunou\ ;
+揮発 < kihatsu\ ;
+烏木 < kokutan\ ;
+次打者 < jidasha\ ;
+堆朱 < tsuishu\ ;
+陸地 < rikuchi\ ;
+境域 < kyouiki\ ;
+披露宴 < hirouen\ ;
+照合 < shougou\ ;
+評伝 < hyouden\ ;
+自衛官 < jieikan\ ;
+型番 < kataban\ ;
+焼売 < shuumai\ ;
+留守番 < rusuban\ ;
+複眼 < fukugan\ ;
+亜音速 < aonsoku\ ;
+無宿 < mushuku\ ;
+角帽 < kakubou\ ;
+長男 < chounan\ ;
+親指 < oyayubi\ ;
+角帯 < kakuobi\ ;
+無実 < mujitsu\ ;
+索条 < sakujou\ ;
+総則 < sousoku\ ;
+蹄 < hidzume\ ;
+増収 < zoushuu\ ;
+綾取 < ayatori\ ;
+続報 < zokuhou\ ;
+報徳 < houtoku\ ;
+摩擦 < masatsu\ ;
+報復 < houfuku\ ;
+御注意 < gochuui\ ;
+見料 < kenryou\ ;
+表装 < hyousou\ ;
+国葬 < kokusou\ ;
+西暦 < seireki\ ;
+籠絡 < rouraku\ ;
+医科学 < ikagaku\ ;
+粗皮 < arakawa\ ;
+炭柱 < tanchuu\ ;
+観念 < kan''nen\ ;
+純朴 < junboku\ ;
+訓告 < kunkoku\ ;
+西日 < nishibi\ ;
+米穀 < beikoku\ ;
+異方性 < ihousei\ ;
+擁壁 < youheki\ ;
+設備 < setsubi\ ;
+血豆 < chimame\ ;
+圧縮 < asshuku\ ;
+緒作 < shosaku\ ;
+無鑑査 < mukansa\ ;
+級数 < kyuusuu\ ;
+紋服 < monpuku\ ;
+裕福 < yuufuku\ ;
+掛算 < kakezan\ ;
+絵姿 < esugata\ ;
+謬 < ayamari\ ;
+地籍 < chiseki\ ;
+二番目 < nibanme\ ;
+探究 < tankyuu\ ;
+粒界 < ryuukai\ ;
+硬化油 < koukayu\ ;
+損流 < sonryuu\ ;
+誼 < yoshimi\ ;
+映画祭 < eigasai\ ;
+誮 < yasashi\ ;
+漆食 < shikkui\ ;
+映画社 < eigasha\ ;
+点描 < tenbyou\ ;
+不正規 < fuseiki\ ;
+荊棘線 < barasen\ ;
+拓銀 < takugin\ ;
+絶壁 < zeppeki\ ;
+慰霊祭 < ireisai\ ;
+学校医 < gakkoui\ ;
+陸兵 < rikuhei\ ;
+綱具 < tsunagu\ ;
+粗玉 < aratama\ ;
+網元 < amimoto\ ;
+言及 < genkyuu\ ;
+金文字 < kinmoji\ ;
+糸枠 < itowaku\ ;
+除却 < jokyaku\ ;
+漫録 < manroku\ ;
+随一 < zuiichi\ ;
+糸杉 < itosugi\ ;
+灰殻 < haigara\ ;
+摂政 < sesshou\ ;
+襅 < chihaya\ ;
+塩味 < shioaji\ ;
+結尾 < ketsubi\ ;
+約数 < yakusuu\ ;
+防壁 < bouheki\ ;
+御法度 < gohatto\ ;
+塁壁 < ruiheki\ ;
+結審 < kesshin\ ;
+拙速 < sessoku\ ;
+撮土 < satsudo\ ;
+気保養 < kihoyou\ ;
+蠎 < uwabami\ ;
+鉄火場 < tekkaba\ ;
+勤務員 < kinmuin\ ;
+角地 < kadochi\ ;
+経学 < keigaku\ ;
+粋狂 < suikyou\ ;
+裏白 < urajiro\ ;
+塵入 < gomiire\ ;
+異星人 < iseijin\ ;
+細帯 < hosoobi\ ;
+蜆 < shijimi\ ;
+無口 < mukuchi\ ;
+執念 < shuunen\ ;
+陸上 < rikujou\ ;
+映画界 < eigakai\ ;
+漫遊 < man''yuu\ ;
+絶唱 < zesshou\ ;
+虱 < shirami\ ;
+五畿内 < gokinai\ ;
+御破算 < gohasan\ ;
+地目 < chimoku\ ;
+否定語 < hiteigo\ ;
+無力 < muryoku\ ;
+蕾 < tsubomi\ ;
+抽選 < chuusen\ ;
+絶叫 < zekkyou\ ;
+違憲性 < ikensei\ ;
+塩化銀 < enkagin\ ;
+国粋 < kokusui\ ;
+閉業 < heigyou\ ;
+米独 < beidoku\ ;
+振舞 < furumai\ ;
+保護司 < hogoshi\ ;
+長歌 < nagauta\ ;
+納得 < nattoku\ ;
+土着 < dochaku\ ;
+国等 < kokutou\ ;
+堂守 < doumori\ ;
+拝謁 < haietsu\ ;
+得意気 < tokuige\ ;
+撤収 < tesshuu\ ;
+灯明 < toumyou\ ;
+拝読 < haidoku\ ;
+等閑 < naozari\ ;
+鏤骨 < rukotsu\ ;
+手細工 < tezaiku\ ;
+舎利塩 < sharien\ ;
+在留 < zairyuu\ ;
+損料 < sonryou\ ;
+圭璧 < keiheki\ ;
+描法 < byouhou\ ;
+親馬鹿 < oyabaka\ ;
+舞踊家 < butouka\ ;
+国税 < kokuzei\ ;
+奇形児 < kikeiji\ ;
+門柱 < monchuu\ ;
+午後中 < gogojuu\ ;
+艀 < hashike\ ;
+困窮 < konkyuu\ ;
+表紙 < hyoushi\ ;
+烈女 < retsujo\ ;
+詭弁家 < kibenka\ ;
+親善 < shinzen\ ;
+漫読 < mandoku\ ;
+関所 < sekisho\ ;
+糸底 < itozoko\ ;
+漫評 < manpyou\ ;
+見境 < misakai\ ;
+聢 < shikato\ ;
+胃洗浄 < isenjou\ ;
+折込 < orikomi\ ;
+不同化 < fudouka\ ;
+翼 < tsubasa\ ;
+異教徒 < ikyouto\ ;
+授爵 < jushaku\ ;
+鏡面 < kyoumen\ ;
+固着 < kochaku\ ;
+推測 < suisoku\ ;
+国益 < kokueki\ ;
+湯加減 < yukagen\ ;
+約定 < yakujou\ ;
+非課税 < hikazei\ ;
+和楽器 < wagakki\ ;
+統一 < touitsu\ ;
+開拓 < kaitaku\ ;
+補殺 < hosatsu\ ;
+糸屑 < itokuzu\ ;
+違法者 < ihousha\ ;
+撃剣 < gekiken\ ;
+扁額 < hengaku\ ;
+演説 < enzetsu\ ;
+所領 < shoryou\ ;
+竹馬 < chikuba\ ;
+国産 < kokusan\ ;
+血縁 < ketsuen\ ;
+複方 < fukuhou\ ;
+粗末 < somatsu\ ;
+鎮魂 < chingon\ ;
+複数 < fukusuu\ ;
+損得 < sontoku\ ;
+堕力 < daryoku\ ;
+輸送機 < yusouki\ ;
+与野党 < yoyatou\ ;
+血糊 < chinori\ ;
+引火点 < inkaten\ ;
+漸落 < zenraku\ ;
+粗方 < arakata\ ;
+糸姫 < itohime\ ;
+節義 < setsugi\ ;
+羽子板 < hagoita\ ;
+筆蹟 < hisseki\ ;
+音沙汰 < otosata\ ;
+禾本科 < kahonka\ ;
+不可分 < fukabun\ ;
+終値 < owarine\ ;
+血筋 < chisuji\ ;
+城壁 < jouheki\ ;
+鼠径部 < sokeibu\ ;
+地殻 < chikaku\ ;
+策謀 < sakubou\ ;
+融通 < yuudzuu\ ;
+開幕 < kaimaku\ ;
+喫驚 < bikkuri\ ;
+閉幕 < heimaku\ ;
+鎖骨 < sakotsu\ ;
+満額 < mangaku\ ;
+街着 < machigi\ ;
+圧殺 < assatsu\ ;
+鎮静 < chinsei\ ;
+無技巧 < mugikou\ ;
+蟋蟀 < koorogi\ ;
+拝聴 < haichou\ ;
+濁点 < dakuten\ ;
+蠏缶 < kanikan\ ;
+礎 < ishizue\ ;
+長径 < choukei\ ;
+都議会 < togikai\ ;
+推服 < suifuku\ ;
+閑寂 < kanjaku\ ;
+糾問 < kyuumon\ ;
+裏書 < uragaki\ ;
+予備校 < yobikou\ ;
+長幼 < chouyou\ ;
+搾取 < sakushu\ ;
+堅人 < katajin\ ;
+土橋 < dobashi\ ;
+観世音 < kanzeon\ ;
+手近 < tedjika\ ;
+裏方 < urakata\ ;
+半過去 < hankako\ ;
+不参加 < fusanka\ ;
+激減 < gekigen\ ;
+粗忽 < sokotsu\ ;
+納入 < nounyuu\ ;
+技術 < gijutsu\ ;
+投薬 < touyaku\ ;
+激浪 < gekirou\ ;
+恣意性 < shiisei\ ;
+国法 < kokuhou\ ;
+粒径 < ryuukei\ ;
+甦 < yomigae\ ;
+付加税 < fukazei\ ;
+国民 < kokumin\ ;
+精妙 < seimyou\ ;
+濁水 < dakusui\ ;
+時計座 < tokeiza\ ;
+排斥 < haiseki\ ;
+部屋代 < heyadai\ ;
+母音性 < boinsei\ ;
+行状 < gyoujou\ ;
+蝶貝 < chougai\ ;
+不得意 < futokui\ ;
+襟元 < erimoto\ ;
+電話機 < denwaki\ ;
+無担保 < mutanpo\ ;
+懸隔 < kenkaku\ ;
+裏技 < urawaza\ ;
+在方 < zaikata\ ;
+竹輪 < chikuwa\ ;
+排撃 < haigeki\ ;
+措辞法 < sojihou\ ;
+採択 < saitaku\ ;
+八九分 < hakkubu\ ;
+螟虫 < meichuu\ ;
+災厄 < saiyaku\ ;
+土日 < donichi\ ;
+根太板 < nedaita\ ;
+成銀 < narigin\ ;
+牜 < ushihen\ ;
+範疇 < hanchuu\ ;
+火加減 < hikagen\ ;
+亜燐酸 < arinsan\ ;
+時計屋 < tokeiya\ ;
+掌握 < shouaku\ ;
+成金 < narikin\ ;
+潔白 < keppaku\ ;
+青二才 < aonisai\ ;
+潔癖 < keppeki\ ;
+漢籍 < kanseki\ ;
+圧接 < assetsu\ ;
+野放図 < nohouzu\ ;
+粒子 < ryuushi\ ;
+才覚 < saikaku\ ;
+火口 < higuchi\ ;
+所謂 < iwayuru\ ;
+間口 < maguchi\ ;
+閣内 < kakunai\ ;
+幼児期 < youjiki\ ;
+満身 < manshin\ ;
+按摩膏 < anmakou\ ;
+気苦労 < kigurou\ ;
+裏庭 < uraniwa\ ;
+裏店 < uradana\ ;
+国有 < kokuyuu\ ;
+政府案 < seifuan\ ;
+国書 < kokusho\ ;
+火力 < karyoku\ ;
+竜車 < ryuusha\ ;
+予備役 < yobieki\ ;
+我輩 < wagahai\ ;
+満足 < manzoku\ ;
+血潮 < chishio\ ;
+漆絵 < urushie\ ;
+齷齪 < akuseku\ ;
+地心 < chishin\ ;
+空馬 < karauma\ ;
+国文 < kokubun\ ;
+国教 < kokkyou\ ;
+国政 < kokusei\ ;
+米審 < beishin\ ;
+坩堝 < rutsubo\ ;
+不道理 < fudouri\ ;
+金無垢 < kinmuku\ ;
+団栗 < donguri\ ;
+図星 < zuboshi\ ;
+裏山 < urayama\ ;
+折紙 < origami\ ;
+行水 < gyouzui\ ;
+粉壁 < funpeki\ ;
+偽造印 < gizouin\ ;
+立身 < risshin\ ;
+竹製 < takesei\ ;
+無批判 < muhihan\ ;
+血沈 < ketchin\ ;
+手蔓 < tedzuru\ ;
+毮 < mushiru\ ;
+図書費 < toshohi\ ;
+火付 < hitsuke\ ;
+幸運児 < kouunji\ ;
+唐黍 < toukibi\ ;
+地峡 < chikyou\ ;
+塩水湖 < ensuiko\ ;
+流布本 < rufubon\ ;
+築港 < chikkou\ ;
+空隙 < kuugeki\ ;
+抜穴 < nukeana\ ;
+山茶花 < sazanka\ ;
+移民法 < iminhou\ ;
+空陸 < kuuriku\ ;
+鬼百合 < oniyuri\ ;
+間中 < aidajuu\ ;
+排尿 < hainyou\ ;
+国手 < kokushu\ ;
+表明 < hyoumei\ ;
+奈良県 < naraken\ ;
+不勝手 < fukatte\ ;
+回教 < kaikyou\ ;
+地学 < chigaku\ ;
+漁礁 < gyoshou\ ;
+表敬 < hyoukei\ ;
+激憤 < gekifun\ ;
+潤沢 < juntaku\ ;
+振替 < furikae\ ;
+篦棒 < berabou\ ;
+投票 < touhyou\ ;
+国情 < kokujou\ ;
+在宅 < zaitaku\ ;
+不利益 < furieki\ ;
+在学 < zaigaku\ ;
+市吏員 < shiriin\ ;
+意見書 < ikensho\ ;
+慰霊塔 < ireitou\ ;
+立証 < risshou\ ;
+棗 < natsume\ ;
+掛声 < kakegoe\ ;
+梻 < shikimi\ ;
+我利勉 < gariben\ ;
+行末 < yukusue\ ;
+行書 < gyousho\ ;
+渾身 < konshin\ ;
+困惑 < konwaku\ ;
+衆望 < shuubou\ ;
+減量 < genryou\ ;
+曙 < akebono\ ;
+擬宝珠 < giboshi\ ;
+大和絵 < yamatoe\ ;
+行数 < gyousuu\ ;
+図式 < zushiki\ ;
+小切手 < kogitte\ ;
+漿液 < shoueki\ ;
+晒 < sarashi\ ;
+転路器 < tenroki\ ;
+穀類 < kokurui\ ;
+漠然 < bakuzen\ ;
+突進 < tosshin\ ;
+米収 < beishuu\ ;
+旁 < tsukuri\ ;
+判事補 < hanjiho\ ;
+屠蘇散 < tososan\ ;
+穿通 < sentsuu\ ;
+表情 < hyoujou\ ;
+噴流 < funryuu\ ;
+種馬 < taneuma\ ;
+淡雪 < awayuki\ ;
+参議院 < sangiin\ ;
+接受 < setsuju\ ;
+挨拶 < aisatsu\ ;
+挫折 < zasetsu\ ;
+接収 < sesshuu\ ;
+手綱 < tadzuna\ ;
+国対 < kokutai\ ;
+予備品 < yobihin\ ;
+漁獲 < gyokaku\ ;
+扉絵 < tobirae\ ;
+漁猟 < gyoryou\ ;
+国定 < kokutei\ ;
+理工科 < rikouka\ ;
+火葬場 < kasouba\ ;
+唇音 < shin''on\ ;
+寒垢離 < kangori\ ;
+行成 < ikinari\ ;
+滑石 < kasseki\ ;
+防衛費 < boueihi\ ;
+地口 < jiguchi\ ;
+手箒 < tebouki\ ;
+唐門 < karamon\ ;
+馬小屋 < umagoya\ ;
+竜脳 < ryuunou\ ;
+国大 < kokudai\ ;
+米俗 < beizoku\ ;
+国外 < kokugai\ ;
+裏側 < uragawa\ ;
+濁声 < damigoe\ ;
+米作 < beisaku\ ;
+予備兵 < yobihei\ ;
+唱道 < shoudou\ ;
+問責 < monseki\ ;
+空谷 < kuukoku\ ;
+激増 < gekizou\ ;
+小道具 < kodougu\ ;
+端綱 < hadzuna\ ;
+深遠 < shin''en\ ;
+裏作 < urasaku\ ;
+裂傷 < resshou\ ;
+蛮襟 < bankara\ ;
+希元素 < kigenso\ ;
+怺 < koraeru\ ;
+世界語 < sekaigo\ ;
+米中 < beichuu\ ;
+立腹 < rippuku\ ;
+税額 < zeigaku\ ;
+竿竹 < saodake\ ;
+淫逸 < in''itsu\ ;
+徤 < takeshi\ ;
+護衛兵 < goeihei\ ;
+空調 < kuuchou\ ;
+虫類 < chuurui\ ;
+形而下 < keijika\ ;
+捺印 < natsuin\ ;
+衆庶 < shuusho\ ;
+竹竿 < takezao\ ;
+青電話 < aodenwa\ ;
+二枚目 < nimaime\ ;
+問診 < monshin\ ;
+拓本 < takuhon\ ;
+積載 < sekisai\ ;
+空襲 < kuushuu\ ;
+他府県 < tafuken\ ;
+保線区 < hosenku\ ;
+巽 < tatsumi\ ;
+在俗 < zaizoku\ ;
+出稽古 < degeiko\ ;
+空行 < kuugyou\ ;
+地主 < jinushi\ ;
+不具者 < fugusha\ ;
+地中 < chichuu\ ;
+演算機 < enzanki\ ;
+遺伝法 < idenhou\ ;
+国号 < kokugou\ ;
+錯角 < sakkaku\ ;
+在京 < zaikyou\ ;
+拍数 < hakusuu\ ;
+遺家族 < ikazoku\ ;
+小利口 < korikou\ ;
+在中 < zaichuu\ ;
+表在 < hyouzai\ ;
+滴水 < tekisui\ ;
+打率 < daritsu\ ;
+鋳造 < chuuzou\ ;
+四国 < shikoku\ ;
+国労 < kokurou\ ;
+激動 < gekidou\ ;
+立米 < ryuubei\ ;
+筋注 < kinchuu\ ;
+激励 < gekirei\ ;
+抑止 < yokushi\ ;
+漢族 < kanzoku\ ;
+節度 < setsudo\ ;
+天気運 < tenkiun\ ;
+漁業 < gyogyou\ ;
+液量 < ekiryou\ ;
+府議会 < fugikai\ ;
+蛇蠍 < dakatsu\ ;
+国内 < kokunai\ ;
+国典 < kokuten\ ;
+蝋石 < rouseki\ ;
+竜神 < ryuujin\ ;
+消防 < shoubou\ ;
+流麗 < ryuurei\ ;
+端的 < tanteki\ ;
+温色 < onshoku\ ;
+準用 < jun''you\ ;
+穴蔵 < anagura\ ;
+拍手 < hakushu\ ;
+手燭 < teshoku\ ;
+壬 < mizunoe\ ;
+止音器 < shionki\ ;
+合気会 < aikikai\ ;
+醍醐味 < daigomi\ ;
+箱師 < hakoshi\ ;
+表号 < hyougou\ ;
+黄麻 < tsunaso\ ;
+虫酸 < mushizu\ ;
+満目 < manmoku\ ;
+拝復 < haifuku\ ;
+鐘楼 < shourou\ ;
+立秋 < risshuu\ ;
+秋風 < shuufuu\ ;
+押捺 < ounatsu\ ;
+意図的 < itoteki\ ;
+浦風 < urakaze\ ;
+空茶 < karacha\ ;
+竜眼 < ryuugan\ ;
+海陸 < kairiku\ ;
+地磁気 < chijiki\ ;
+税込 < zeikomi\ ;
+生意気 < namaiki\ ;
+黒鯛 < kurodai\ ;
+空色 < sorairo\ ;
+四次元 < yojigen\ ;
+挙国 < kyokoku\ ;
+衰兆 < suichou\ ;
+国中 < kunijuu\ ;
+秋霜 < shuusou\ ;
+喉笛 < nodobue\ ;
+秋霖 < shuurin\ ;
+御目玉 < omedama\ ;
+行啓 < gyoukei\ ;
+嚏 < kushami\ ;
+秋雨 < akisame\ ;
+空腹 < kuufuku\ ;
+挿入 < sounyuu\ ;
+和食 < washoku\ ;
+抜擢 < batteki\ ;
+鍵穴 < kagiana\ ;
+蟻巻 < arimaki\ ;
+指圧 < shiatsu\ ;
+投擲 < touteki\ ;
+公文所 < kumonjo\ ;
+指図 < sashizu\ ;
+御座所 < gozasho\ ;
+溺水 < dekisui\ ;
+大鋸屑 < ogakuzu\ ;
+築地 < tsukiji\ ;
+甘海苔 < amanori\ ;
+建議案 < kengian\ ;
+蝋燭 < rousoku\ ;
+溺死 < dekishi\ ;
+碁会所 < gokaijo\ ;
+拙宅 < settaku\ ;
+手沢 < shutaku\ ;
+抑揚 < yokuyou\ ;
+笊法 < zaruhou\ ;
+懇篤 < kontoku\ ;
+唐薯 < karaimo\ ;
+税調 < zeichou\ ;
+蘭鋳 < ranchuu\ ;
+拡大 < kakudai\ ;
+防火戸 < boukado\ ;
+銅鐸 < doutaku\ ;
+登山家 < tozanka\ ;
+炊事場 < suijiba\ ;
+成熟 < seijuku\ ;
+溜池 < tameike\ ;
+浦里 < urazato\ ;
+英文科 < eibunka\ ;
+湯熨 < yunoshi\ ;
+喫煙 < kitsuen\ ;
+満潮 < manchou\ ;
+嚇嚇 < kakkaku\ ;
+拓大 < takudai\ ;
+源流 < genryuu\ ;
+穎脱 < eidatsu\ ;
+突端 < toppana\ ;
+酸性雨 < sanseiu\ ;
+黄雀 < koujaku\ ;
+喀痰 < kakutan\ ;
+鼻血 < hanadji\ ;
+錯綜 < sakusou\ ;
+術中 < jutchuu\ ;
+派生語 < haseigo\ ;
+派閥 < habatsu\ ;
+遺伝性 < idensei\ ;
+医療費 < iryouhi\ ;
+大祖父 < daisofu\ ;
+麻雀 < mazejan\ ;
+篆刻 < tenkoku\ ;
+軍荼利 < gundari\ ;
+戯歌 < zareuta\ ;
+唐臼 < karausu\ ;
+満洲 < manshuu\ ;
+湾流 < wanryuu\ ;
+善玉 < zendama\ ;
+私通 < shitsuu\ ;
+種苗 < shubyou\ ;
+白亜紀 < hakuaki\ ;
+丼 < donburi\ ;
+海賊 < kaizoku\ ;
+種芋 < taneimo\ ;
+戦歴 < senreki\ ;
+騎馬戦 < kibasen\ ;
+目一杯 < meippai\ ;
+指値 < sashine\ ;
+記事文 < kijibun\ ;
+海象 < seiuchi\ ;
+押売 < oshiuri\ ;
+品評 < hinpyou\ ;
+惨酷 < zankoku\ ;
+和太鼓 < wadaiko\ ;
+悪食 < akujiki\ ;
+蛮的 < banteki\ ;
+予定案 < yoteian\ ;
+神髄 < shinzui\ ;
+蘇鉄 < sotetsu\ ;
+蟄居 < chikkyo\ ;
+愚説 < gusetsu\ ;
+懸濁 < kendaku\ ;
+溝板 < dobuita\ ;
+符号器 < fugouki\ ;
+嚢中 < nouchuu\ ;
+書記補 < shokiho\ ;
+秘訣 < hiketsu\ ;
+空白 < kuuhaku\ ;
+応援団 < ouendan\ ;
+遺伝子 < idenshi\ ;
+除草器 < josouki\ ;
+虹色 < nijiiro\ ;
+策定 < sakutei\ ;
+流連 < ryuuren\ ;
+積算 < sekisan\ ;
+予定日 < yoteibi\ ;
+悪阻 < tsuwari\ ;
+戯曲 < gikyoku\ ;
+保持者 < hojisha\ ;
+拡充 < kakujuu\ ;
+穀粉 < kokufun\ ;
+唐糸 < karaito\ ;
+鉄鎚 < tettsui\ ;
+空瓶 < karabin\ ;
+単位元 < tanigen\ ;
+意地悪 < ijiwaru\ ;
+満株 < mankabu\ ;
+秘術 < hijutsu\ ;
+蛋白 < tanpaku\ ;
+上出来 < joudeki\ ;
+周遊 < shuuyuu\ ;
+符号化 < fugouka\ ;
+滅度 < metsudo\ ;
+満更 < manzara\ ;
+周辺 < shuuhen\ ;
+成桂 < narikei\ ;
+海蛇 < umihebi\ ;
+活路 < katsuro\ ;
+黒貂 < kuroten\ ;
+不相応 < fusouou\ ;
+銭葵 < zeniaoi\ ;
+英語版 < eigoban\ ;
+重火器 < juukaki\ ;
+波音 < namioto\ ;
+摩利支 < marishi\ ;
+稜線 < ryousen\ ;
+異端視 < itanshi\ ;
+才徳 < saitoku\ ;
+立案 < ritsuan\ ;
+黙認 < mokunin\ ;
+空爆 < kuubaku\ ;
+各駅 < kakueki\ ;
+押入 < oshiire\ ;
+混用 < kon''you\ ;
+渦潮 < uzushio\ ;
+葬儀屋 < sougiya\ ;
+項位置 < kouichi\ ;
+釣魚 < chougyo\ ;
+我方 < wagahou\ ;
+穴熊 < anaguma\ ;
+所得 < shotoku\ ;
+医師法 < ishihou\ ;
+溜息 < tameiki\ ;
+恭順 < kyoujun\ ;
+漏刻 < roukoku\ ;
+葡萄園 < budouen\ ;
+薩長 < satchou\ ;
+流言 < ryuugen\ ;
+担任 < tan''nin\ ;
+立春 < risshun\ ;
+窯業 < yougyou\ ;
+抜去 < bakkyou\ ;
+温浴 < on''yoku\ ;
+禁足 < kinsoku\ ;
+準急 < junkyuu\ ;
+吃音 < kitsuon\ ;
+鉄路 < tetsuro\ ;
+五斗米 < gotobei\ ;
+社長 < shachou\ ;
+各面 < kakumen\ ;
+黒血 < kurochi\ ;
+消耗 < shoumou\ ;
+竣成 < shunsei\ ;
+黒蟻 < kuroari\ ;
+可愛気 < kawaige\ ;
+流行 < ryuukou\ ;
+窒死 < chisshi\ ;
+金高 < kindaka\ ;
+五線譜 < gosenfu\ ;
+各階 < kakukai\ ;
+秋草 < akikusa\ ;
+才学 < saigaku\ ;
+御府内 < gofunai\ ;
+子馬座 < koumaza\ ;
+愉色 < yushoku\ ;
+小芥子 < kokeshi\ ;
+清濁 < seidaku\ ;
+周覧 < shuuran\ ;
+恒温器 < kouonki\ ;
+所属 < shozoku\ ;
+戦役 < sen''eki\ ;
+知恵者 < chiesha\ ;
+薄雲 < usugumo\ ;
+薄雪 < usuyuki\ ;
+祝辞 < shukuji\ ;
+抑制 < yokusei\ ;
+恋風 < koikaze\ ;
+神輿 < mikoshi\ ;
+遺贈分 < izoubun\ ;
+鹿追 < shikaoi\ ;
+祖述 < sojutsu\ ;
+戊戌 < bojutsu\ ;
+薬酒 < yakushu\ ;
+呪術 < jujutsu\ ;
+古顔 < furugao\ ;
+太刀魚 < tachiuo\ ;
+手妻 < tedzuma\ ;
+混濁 < kondaku\ ;
+助演者 < joensha\ ;
+金額 < kingaku\ ;
+代理部 < dairibu\ ;
+惨落 < sanraku\ ;
+蘊蓄 < unchiku\ ;
+銀色 < gin''iro\ ;
+麦角 < bakkaku\ ;
+台閣 < daikaku\ ;
+満席 < manseki\ ;
+移動体 < idoutai\ ;
+運動費 < undouhi\ ;
+天鵝絨 < biroudo\ ;
+一酸化 < issanka\ ;
+祝賀 < shukuga\ ;
+悪評 < akuhyou\ ;
+悪訳 < akuyaku\ ;
+蕪雑 < buzatsu\ ;
+黒茶 < kurocha\ ;
+税目 < zeimoku\ ;
+遠距離 < enkyori\ ;
+佐賀県 < sagaken\ ;
+示達 < jitatsu\ ;
+虎穴 < koketsu\ ;
+高音部 < kouonbu\ ;
+鎮定 < chintei\ ;
+異端者 < itansha\ ;
+筒井 < tsutsui\ ;
+哲理 < tetsuri\ ;
+鈍足 < donsoku\ ;
+空桶 < karaoke\ ;
+薄鈍 < usunoro\ ;
+懲悪 < chouaku\ ;
+空株 < kuukabu\ ;
+蛮族 < banzoku\ ;
+笛吹 < fuefuki\ ;
+感化院 < kankain\ ;
+竜宮 < ryuuguu\ ;
+祝言 < shuugen\ ;
+恥辱 < chijoku\ ;
+不機嫌 < fukigen\ ;
+部外秘 < bugaihi\ ;
+善悪 < zen''aku\ ;
+重鎮 < juuchin\ ;
+薄遇 < hakuguu\ ;
+亜熱帯 < anettai\ ;
+手口 < teguchi\ ;
+沈降 < chinkou\ ;
+善徳 < zentoku\ ;
+淫欲 < in''yoku\ ;
+銀紙 < gingami\ ;
+富士山 < fujisan\ ;
+鈴蘭 < suzuran\ ;
+戦域 < sen''iki\ ;
+吟誦 < ginshou\ ;
+指揮所 < shikijo\ ;
+品目 < hinmoku\ ;
+醜類 < shuurui\ ;
+生醤油 < kijouyu\ ;
+銅箔 < douhaku\ ;
+戦国 < sengoku\ ;
+愛着 < aichaku\ ;
+浄瑠璃 < joururi\ ;
+補佐官 < hosakan\ ;
+鈍角 < donkaku\ ;
+麦茶 < mugicha\ ;
+黒線 < kokusen\ ;
+過去形 < kakokei\ ;
+草仮名 < sougana\ ;
+愚直 < guchoku\ ;
+銀箔 < ginpaku\ ;
+藤色 < fujiiro\ ;
+戸口 < toguchi\ ;
+空揚 < karaage\ ;
+銀笛 < ginteki\ ;
+御機嫌 < gokigen\ ;
+第一 < daiichi\ ;
+野道 < nomichi\ ;
+唐歌 < karauta\ ;
+同調 < douchou\ ;
+不履行 < furikou\ ;
+合調 < gouchou\ ;
+口輪 < kuchiwa\ ;
+忠魂 < chuukon\ ;
+各論 < kakuron\ ;
+合評 < gappyou\ ;
+叙述 < jojutsu\ ;
+立場 < tachiba\ ;
+唐様 < karayou\ ;
+阿弗利加 < afurika\ ;
+麻縄 < asanawa\ ;
+鶺鴒 < sekirei\ ;
+悪臭 < akushuu\ ;
+擬人化 < gijinka\ ;
+積木 < tsumiki\ ;
+準則 < junsoku\ ;
+鎮台 < chindai\ ;
+分度器 < bundoki\ ;
+沈酔 < chinsui\ ;
+黙祷 < mokutou\ ;
+金赤 < kin''aka\ ;
+立国 < rikkoku\ ;
+手中 < shuchuu\ ;
+手下 < teshita\ ;
+収載 < shuusai\ ;
+出目金 < demekin\ ;
+夜汽車 < yogisha\ ;
+満卓 < mantaku\ ;
+左派系 < sahakei\ ;
+渦巻 < uzumaki\ ;
+海猫 < umineko\ ;
+愚物 < gubutsu\ ;
+重責 < juuseki\ ;
+鼻汗 < hanaase\ ;
+急送 < kyuusou\ ;
+善女 < zen''nyo\ ;
+鉛筆 < enpitsu\ ;
+戒名 < kaimyou\ ;
+厄難 < yakunan\ ;
+海牛 < kaigyuu\ ;
+薬莢 < yakkyou\ ;
+鼻歌 < hanauta\ ;
+憑拠 < hyoukyo\ ;
+鉄索 < tessaku\ ;
+反越 < hanetsu\ ;
+吹聴 < fuichou\ ;
+湯口 < yuguchi\ ;
+古説 < kosetsu\ ;
+水飴 < mizuame\ ;
+即題 < sokudai\ ;
+口説 < kuzetsu\ ;
+詐欺罪 < sagizai\ ;
+種板 < taneita\ ;
+虫気 < mushike\ ;
+空席 < kuuseki\ ;
+測定 < sokutei\ ;
+饂飩屋 < udon''ya\ ;
+湾内 < wan''nai\ ;
+愕然 < gakuzen\ ;
+種本 < tanehon\ ;
+収賄 < shuuwai\ ;
+夢想家 < musouka\ ;
+記譜法 < kifuhou\ ;
+一死後 < isshigo\ ;
+重訳 < juuyaku\ ;
+鈍色 < nibiiro\ ;
+深慮 < shinryo\ ;
+非衛生 < hieisei\ ;
+種族 < shuzoku\ ;
+里親 < satooya\ ;
+黒痣 < kuroaza\ ;
+醋酸 < sakusan\ ;
+麦笛 < mugibue\ ;
+君臣 < kunshin\ ;
+洞穴 < horaana\ ;
+誤投下 < gotouka\ ;
+浸潤 < shinjun\ ;
+古血 < furuchi\ ;
+憂戚 < yuuseki\ ;
+含羞 < ganshuu\ ;
+空将 < kuushou\ ;
+水陸 < suiriku\ ;
+不自由 < fujiyuu\ ;
+流用 < ryuuyou\ ;
+満了 < manryou\ ;
+流産 < ryuuzan\ ;
+積悪 < sekiaku\ ;
+鉛直 < enchoku\ ;
+〃 < onajiku\ ;
+悪策 < akusaku\ ;
+麦秋 < mugiaki\ ;
+金融 < kin''yuu\ ;
+英数字 < eisuuji\ ;
+必需 < hitsuju\ ;
+神経 < shinkei\ ;
+反覆 < hanpuku\ ;
+突如 < totsujo\ ;
+液晶 < ekishou\ ;
+同腹 < doufuku\ ;
+積弊 < sekihei\ ;
+虚業 < kyogyou\ ;
+油菜 < aburana\ ;
+半額 < hangaku\ ;
+決議 < ketsugi\ ;
+鉄石 < tesseki\ ;
+快適 < kaiteki\ ;
+酷遇 < kokuguu\ ;
+黙然 < mokunen\ ;
+酪酸 < rakusan\ ;
+釉薬 < yuuyaku\ ;
+告知 < kokuchi\ ;
+知情意 < chijoui\ ;
+風呂桶 < furooke\ ;
+恋草 < koigusa\ ;
+浦波 < uranami\ ;
+薬籠 < yakurou\ ;
+英語圏 < eigoken\ ;
+空圧 < kuuatsu\ ;
+低音部 < teionbu\ ;
+秋水 < shuusui\ ;
+右腕 < migiude\ ;
+口茶 < kuchija\ ;
+徒食 < toshoku\ ;
+酪農 < rakunou\ ;
+薄肉 < usuniku\ ;
+北鮮 < hokusen\ ;
+黄熟 < koujuku\ ;
+二期制 < nikisei\ ;
+収蔵 < shuuzou\ ;
+浴槽 < yokusou\ ;
+金色 < konjiki\ ;
+擬声語 < giseigo\ ;
+原註 < genchuu\ ;
+悪症 < akushou\ ;
+悪病 < akubyou\ ;
+化骨 < kakotsu\ ;
+里芋 < satoimo\ ;
+反落 < hanraku\ ;
+心配 < shinpai\ ;
+氷輪 < hyourin\ ;
+感服 < kanpuku\ ;
+毒魚 < dokugyo\ ;
+私欲 < shiyoku\ ;
+鹿砦 < rokusai\ ;
+用務員 < youmuin\ ;
+窮乏 < kyuubou\ ;
+深夜 < shin''ya\ ;
+確認 < kakunin\ ;
+減収 < genshuu\ ;
+薬礼 < yakurei\ ;
+錨地 < byouchi\ ;
+薄縁 < usuberi\ ;
+御苦労 < gokurou\ ;
+未登記 < mitouki\ ;
+簡易化 < kan''ika\ ;
+薄絹 < usuginu\ ;
+快諾 < kaidaku\ ;
+北風 < hokufuu\ ;
+一過性 < ikkasei\ ;
+重聴 < juuchou\ ;
+銘柄 < meigara\ ;
+悪玉 < akudama\ ;
+秘曲 < hikyoku\ ;
+薄紙 < usugami\ ;
+薄紅 < usubeni\ ;
+運送費 < unsouhi\ ;
+渋味 < shibumi\ ;
+南進 < nanshin\ ;
+医師会 < ishikai\ ;
+銘木 < meiboku\ ;
+名称 < meishou\ ;
+流汗 < ryuukan\ ;
+北面 < hokumen\ ;
+悉皆 < shikkai\ ;
+流水 < ryuusui\ ;
+自叙伝 < jijoden\ ;
+突先 < tossaki\ ;
+活況 < kakkyou\ ;
+釈義 < shakugi\ ;
+天気屋 < tenkiya\ ;
+難易度 < nan''ido\ ;
+吉祥 < kisshou\ ;
+硫酸 < ryuusan\ ;
+弱齢 < jakurei\ ;
+泡盛 < awamori\ ;
+北限 < hokugen\ ;
+秋晴 < akibare\ ;
+穴凹 < anaboko\ ;
+金網 < kanaami\ ;
+号笛 < gouteki\ ;
+蛇口 < jaguchi\ ;
+淑女 < shukujo\ ;
+双翼 < souyoku\ ;
+仮数部 < kasuubu\ ;
+半農 < han''nou\ ;
+鈍痛 < dontsuu\ ;
+十字路 < juujiro\ ;
+北門 < kitamon\ ;
+吸物 < suimono\ ;
+十進 < jisshin\ ;
+薬用 < yakuyou\ ;
+銀杏 < gin''nan\ ;
+渡仏 < tofutsu\ ;
+磊落 < rairaku\ ;
+虚心 < kyoshin\ ;
+洗滌 < sendeki\ ;
+津波 < tsunami\ ;
+沖縄 < okinawa\ ;
+民踊 < min''you\ ;
+虚弱 < kyojaku\ ;
+古筆 < kohitsu\ ;
+後釜 < atogama\ ;
+重篤 < juutoku\ ;
+添削 < tensaku\ ;
+金筋 < kinsuji\ ;
+得道 < tokudou\ ;
+負符号 < fufugou\ ;
+重箱 < juubako\ ;
+各県 < kakuken\ ;
+可祝 < kashiku\ ;
+同病 < doubyou\ ;
+大御所 < oogosho\ ;
+収納 < shuunou\ ;
+空中 < kuuchuu\ ;
+黒板 < kokuban\ ;
+藁灰 < warabai\ ;
+分布図 < bunpuzu\ ;
+銃撃 < juugeki\ ;
+石鯛 < ishidai\ ;
+醜聞 < shuubun\ ;
+製図家 < seizuka\ ;
+後逸 < kouitsu\ ;
+台石 < daiishi\ ;
+卓論 < takuron\ ;
+殿閣 < denkaku\ ;
+薄皮 < usukawa\ ;
+戦時下 < senjika\ ;
+厚臼 < atsuusu\ ;
+博覧 < hakuran\ ;
+天気図 < tenkizu\ ;
+単角 < tankaku\ ;
+虎巻 < torakan\ ;
+当限 < tougiri\ ;
+積分 < sekibun\ ;
+錯乱 < sakuran\ ;
+黒斑 < kokuhan\ ;
+治療 < chiryou\ ;
+単複 < tanpuku\ ;
+残高 < zandaka\ ;
+鉄橋 < tekkyou\ ;
+軍事費 < gunjihi\ ;
+混作 < konsaku\ ;
+金石 < kinseki\ ;
+炎天下 < entenka\ ;
+今日明日 < kyouasu\ ;
+収税 < shuuzei\ ;
+惜敗 < sekihai\ ;
+稲叢 < inamura\ ;
+浮彫 < ukibori\ ;
+後足 < atoashi\ ;
+北辺 < hokuhen\ ;
+肥満児 < himanji\ ;
+釣瓶 < tsurube\ ;
+浪漫派 < romanha\ ;
+慟哭 < doukoku\ ;
+惑星 < wakusei\ ;
+半襟 < han''eri\ ;
+起重機 < kijuuki\ ;
+圧砕機 < assaiki\ ;
+死魄 < shihaku\ ;
+回路図 < kairozu\ ;
+確聞 < kakubun\ ;
+恋病 < koiyami\ ;
+金的 < kinteki\ ;
+半袖 < hansode\ ;
+吸殻 < suigara\ ;
+虫垂 < chuusui\ ;
+民衆 < minshuu\ ;
+兵器庫 < heikiko\ ;
+鉄柱 < tetchuu\ ;
+毎週 < maishuu\ ;
+残額 < zangaku\ ;
+息災 < sokusai\ ;
+岐阜県 < gifuken\ ;
+弱電 < jakuden\ ;
+蔵米 < kuramai\ ;
+海山 < umiyama\ ;
+残響 < zankyou\ ;
+洋楽 < yougaku\ ;
+重病 < juubyou\ ;
+薬液 < yakueki\ ;
+薄物 < usumono\ ;
+薄片 < hakuhen\ ;
+泥海 < doroumi\ ;
+庶務課 < shomuka\ ;
+御袋 < ofukuro\ ;
+水芸 < mizugei\ ;
+即興 < sokkyou\ ;
+秘密 < himitsu\ ;
+卵膜 < ranmaku\ ;
+反目 < hanmoku\ ;
+水色 < mizuiro\ ;
+離縁状 < rienjou\ ;
+蕃神 < banshin\ ;
+針状 < harijou\ ;
+殉難 < jun''nan\ ;
+律語 < ritsugo\ ;
+恋猫 < koineko\ ;
+和式 < washiki\ ;
+単葉 < tan''you\ ;
+黙従 < mokujuu\ ;
+金玉 < kintama\ ;
+銀幕 < ginmaku\ ;
+矢面 < yaomote\ ;
+税収 < zeishuu\ ;
+稲作 < inasaku\ ;
+洋服 < youfuku\ ;
+正規化 < seikika\ ;
+印肉 < in''niku\ ;
+性癖 < seiheki\ ;
+弁駁 < benpaku\ ;
+蘭学 < rangaku\ ;
+名流 < meiryuu\ ;
+恵沢 < keitaku\ ;
+形跡 < keiseki\ ;
+同流 < douryuu\ ;
+弔電 < chouden\ ;
+落雷 < rakurai\ ;
+双璧 < souheki\ ;
+悪方 < akugata\ ;
+合流 < gouryuu\ ;
+落雁 < rakugan\ ;
+社歴 < shareki\ ;
+落陽 < rakuyou\ ;
+重爆 < juubaku\ ;
+今出来 < imadeki\ ;
+黒帯 < kuroobi\ ;
+叙爵 < joshaku\ ;
+北西 < hokusei\ ;
+検波器 < kenpaki\ ;
+口火 < kuchibi\ ;
+叔父 < shukufu\ ;
+泥棒 < dorobou\ ;
+汁粉 < shiruko\ ;
+弱酸 < jakusan\ ;
+蔵相 < zoushou\ ;
+千草 < chigusa\ ;
+含有 < gan''yuu\ ;
+反物 < tanmono\ ;
+鳥類 < chourui\ ;
+弁難 < ben''nan\ ;
+即納 < sokunou\ ;
+社業 < shagyou\ ;
+気脈 < kimyaku\ ;
+礼楽 < reigaku\ ;
+母親 < hahaoya\ ;
+移出 < ishutsu\ ;
+徳育 < tokuiku\ ;
+磁石 < jishaku\ ;
+消去 < shoukyo\ ;
+醜男 < buotoko\ ;
+破裂 < haretsu\ ;
+消印 < keshiin\ ;
+同業 < dougyou\ ;
+私塾 < shijuku\ ;
+悪戯 < itazura\ ;
+動軸 < doujiku\ ;
+碧空 < hekikuu\ ;
+劈頭 < hekitou\ ;
+蘭国 < rankoku\ ;
+即答 < sokutou\ ;
+下付金 < kafukin\ ;
+鉄心 < tesshin\ ;
+毛虫 < kemushi\ ;
+避難所 < hinanjo\ ;
+恋河 < koikawa\ ;
+配給 < haikyuu\ ;
+同格 < doukaku\ ;
+片意地 < kataiji\ ;
+薬方 < yakuhou\ ;
+活字 < katsuji\ ;
+哀別 < aibetsu\ ;
+徒花 < adabana\ ;
+礼服 < reifuku\ ;
+恋水 < koimizu\ ;
+哀切 < aisetsu\ ;
+合格 < goukaku\ ;
+海原 < unabara\ ;
+麻屑 < asakuzu\ ;
+古池 < furuike\ ;
+愚劣 < guretsu\ ;
+短軸 < tanjiku\ ;
+醜状 < shuujou\ ;
+各校 < kakukou\ ;
+恋死 < koijini\ ;
+悪徳 < akutoku\ ;
+気絶 < kizetsu\ ;
+沈澱 < chinden\ ;
+劈開 < hekikai\ ;
+古歌 < furuuta\ ;
+落選 < rakusen\ ;
+副題 < fukudai\ ;
+式部 < shikibu\ ;
+卜筮 < bokuzei\ ;
+医学部 < igakubu\ ;
+呂律 < roretsu\ ;
+葉身 < youshin\ ;
+徐脈 < jomyaku\ ;
+碧眼 < hekigan\ ;
+後腹 < atobara\ ;
+歴遊 < rekiyuu\ ;
+予報音 < yohouon\ ;
+彬蔚 < hinutsu\ ;
+禅寺 < zendera\ ;
+風呂代 < furodai\ ;
+死軸 < shijiku\ ;
+流域 < ryuuiki\ ;
+後知恵 < atodjie\ ;
+鶴科 < tsuruka\ ;
+恭敬 < kyoukei\ ;
+汎用 < han''you\ ;
+差機関 < sakikan\ ;
+叔母 < shukubo\ ;
+秀吟 < shuugin\ ;
+前髪 < maegami\ ;
+咀嚼 < soshaku\ ;
+殺虫 < satchuu\ ;
+勤行 < gongyou\ ;
+詐欺師 < sagishi\ ;
+卵白 < ranpaku\ ;
+金棒 < kanabou\ ;
+座骨 < zakotsu\ ;
+徴税 < chouzei\ ;
+労賃 < rouchin\ ;
+合掌 < gasshou\ ;
+外祖父 < gaisofu\ ;
+勅許 < chokkyo\ ;
+短評 < tanpyou\ ;
+論理和 < ronriwa\ ;
+秘仏 < hibutsu\ ;
+野営地 < yaeichi\ ;
+海亀 < umigame\ ;
+邁進 < maishin\ ;
+雰囲気 < fun''iki\ ;
+因美線 < inbisen\ ;
+古本 < furubon\ ;
+反様 < kaisama\ ;
+民福 < minpuku\ ;
+気丈夫 < kijoubu\ ;
+初期化 < shokika\ ;
+遅霜 < osojimo\ ;
+洛外 < rakugai\ ;
+酒癖 < shuheki\ ;
+邪説 < jasetsu\ ;
+氏神 < ujigami\ ;
+段落 < danraku\ ;
+呻吟 < shingin\ ;
+鉄壁 < teppeki\ ;
+秋作 < akisaku\ ;
+区立 < kuritsu\ ;
+各所 < kakusho\ ;
+惨劇 < sangeki\ ;
+恋文 < koibumi\ ;
+法悦 < houetsu\ ;
+邦訳 < houyaku\ ;
+水球 < suikyuu\ ;
+浦人 < urabito\ ;
+銀側 < gingawa\ ;
+取替 < torikae\ ;
+歩行器 < hokouki\ ;
+前陳 < zenchin\ ;
+石蝋 < sekirou\ ;
+蓬生 < yomogiu\ ;
+流動 < ryuudou\ ;
+湯豆腐 < yudoufu\ ;
+裏背戸 < urasedo\ ;
+逆鱗 < gekirin\ ;
+知行 < chigyou\ ;
+同役 < douyaku\ ;
+酸漿 < hoozuki\ ;
+歴覧 < rekiran\ ;
+水牢 < mizurou\ ;
+水牛 < suigyuu\ ;
+放生会 < houjoue\ ;
+育児院 < ikujiin\ ;
+不作為 < fusakui\ ;
+鳥貝 < torigai\ ;
+水爆 < suibaku\ ;
+武装具 < busougu\ ;
+北米 < hokubei\ ;
+下駄番 < getaban\ ;
+卓用 < takuyou\ ;
+剽軽 < hyoukin\ ;
+咎人 < toganin\ ;
+葉蜂 < habachi\ ;
+徳用 < tokuyou\ ;
+十目 < juumoku\ ;
+同席 < douseki\ ;
+真黒 < makkuro\ ;
+自動化 < jidouka\ ;
+劣角 < rekkaku\ ;
+薬害 < yakugai\ ;
+禄命 < rokumei\ ;
+刻限 < kokugen\ ;
+君寵 < kunchou\ ;
+各店 < kakuten\ ;
+卓球 < takkyuu\ ;
+無遠慮 < buenryo\ ;
+運動場 < undouba\ ;
+家計費 < kakeihi\ ;
+禀告 < rinkoku\ ;
+周到 < shuutou\ ;
+汗水 < asemizu\ ;
+北端 < hokutan\ ;
+音楽家 < ongakka\ ;
+黒人 < kokujin\ ;
+彼程 < arehodo\ ;
+道辺 < michibe\ ;
+武術 < bujutsu\ ;
+外祖母 < gaisobo\ ;
+残菊 < zangiku\ ;
+没我 < botsuga\ ;
+流亡 < ryuubou\ ;
+労務課 < roumuka\ ;
+初音 < hatsune\ ;
+都立 < toritsu\ ;
+別離 < betsuri\ ;
+従的 < juuteki\ ;
+破竹 < hachiku\ ;
+蒼白 < souhaku\ ;
+水滴 < suiteki\ ;
+力行 < ryokkou\ ;
+無軌道 < mukidou\ ;
+選評 < senpyou\ ;
+礫岩 < rekigan\ ;
+各層 < kakusou\ ;
+別院 < betsuin\ ;
+劇詩 < gekishi\ ;
+鉄則 < tessoku\ ;
+遅速 < chisoku\ ;
+碧水 < hekisui\ ;
+石臼 < ishiusu\ ;
+年額 < nengaku\ ;
+別間 < betsuma\ ;
+汁気 < shiruke\ ;
+洛内 < rakunai\ ;
+毎秒 < maibyou\ ;
+微熱 < binetsu\ ;
+水浴 < suiyoku\ ;
+惑乱 < wakuran\ ;
+胃痙攣 < ikeiren\ ;
+古式 < koshiki\ ;
+運動員 < undouin\ ;
+機械語 < kikaigo\ ;
+半熟 < hanjuku\ ;
+水流 < suiryuu\ ;
+原木 < genboku\ ;
+勤続 < kinzoku\ ;
+逼迫 < hippaku\ ;
+厚板 < atsuita\ ;
+美容院 < biyouin\ ;
+弱者 < jakusha\ ;
+金平 < kinpira\ ;
+危気 < abunage\ ;
+急所 < kyuusho\ ;
+殻竿 < karasao\ ;
+一転機 < ittenki\ ;
+取得 < shutoku\ ;
+即死 < sokushi\ ;
+鴇色 < tokiiro\ ;
+台尻 < daijiri\ ;
+杓文字 < shamoji\ ;
+追随 < tsuizui\ ;
+勲章 < kunshou\ ;
+連量 < renryou\ ;
+探査機 < tansaki\ ;
+田舎家 < inakaya\ ;
+合壁 < gappeki\ ;
+出額 < debitai\ ;
+刹那 < setsuna\ ;
+年長 < nenchou\ ;
+出頭 < shuttou\ ;
+切除 < setsujo\ ;
+葭簀 < yoshizu\ ;
+運転費 < untenhi\ ;
+橙皮油 < touhiyu\ ;
+洋傘 < yougasa\ ;
+過年度 < kanendo\ ;
+研究 < kenkyuu\ ;
+進軍 < shingun\ ;
+酒毒 < shudoku\ ;
+薬品 < yakuhin\ ;
+沈思 < chinshi\ ;
+南洋 < nan''you\ ;
+死肉 < shiniku\ ;
+思惑 < omowaku\ ;
+鳶色 < tobiiro\ ;
+運動具 < undougu\ ;
+落胆 < rakutan\ ;
+鳥葬 < chousou\ ;
+沢山 < takusan\ ;
+御存知 < gozonji\ ;
+刺身 < sashimi\ ;
+各地 < kakuchi\ ;
+薄墨 < usuzumi\ ;
+家政科 < kaseika\ ;
+各国 < kakkoku\ ;
+葦笛 < ashibue\ ;
+小奇麗 < kogirei\ ;
+幕電 < makuden\ ;
+剥製 < hakusei\ ;
+醜態 < shuutai\ ;
+短絡 < tanraku\ ;
+移住者 < ijuusha\ ;
+民泊 < minpaku\ ;
+社告 < shakoku\ ;
+弁膜 < benmaku\ ;
+道具屋 < douguya\ ;
+醜悪 < shuuaku\ ;
+薬剤 < yakuzai\ ;
+比率 < hiritsu\ ;
+弊習 < heishuu\ ;
+役牛 < ekigyuu\ ;
+同義語 < dougigo\ ;
+沼地 < numachi\ ;
+莫連 < bakuren\ ;
+法名 < houmyou\ ;
+模擬戦 < mogisen\ ;
+初速 < shosoku\ ;
+名号 < myougou\ ;
+法博 < houhaku\ ;
+逆運 < gyakuun\ ;
+眉雪 < bisetsu\ ;
+凸鏡 < tokkyou\ ;
+合口 < aikuchi\ ;
+社則 < shasoku\ ;
+荒駒 < aragoma\ ;
+永日 < eijitsu\ ;
+分針 < funshin\ ;
+分量 < bunryou\ ;
+蒲公英 < tanpopo\ ;
+別路 < betsuro\ ;
+法力 < houriki\ ;
+比熱 < hinetsu\ ;
+法則 < housoku\ ;
+稽古着 < keikogi\ ;
+瞼 < mabuta\ ;
+辷 < suberu\ ;
+瞳 < hitomi\ ;
+輩 < yakara\ ;
+盲 < meshii\ ;
+車 < kuruma\ ;
+序 < tsuide\ ;
+皆 < min''na\ ;
+幕 < tobari\ ;
+帝 < mikado\ ;
+左 < hidari\ ;
+疾 < shitsu\ ;
+畳 < tatami\ ;
+畠 < hatake\ ;
+瓦 < kawara\ ;
+岬 < misaki\ ;
+届 < todoke\ ;
+尊 < mikoto\ ;
+宝 < takara\ ;
+獣 < kemono\ ;
+狼 < ookami\ ;
+独 < doitsu\ ;
+誠 < makoto\ ;
+証 < akashi\ ;
+父 < chichi\ ;
+訛 < namari\ ;
+娘 < musume\ ;
+姿 < sugata\ ;
+妾 < warawa\ ;
+妹 < imouto\ ;
+要 < kaname\ ;
+襷 < tasuki\ ;
+煙 < kemuri\ ;
+襖 < fusuma\ ;
+裸 < hadaka\ ;
+袴 < hakama\ ;
+袋 < fukuro\ ;
+衣 < koromo\ ;
+埃 < hokori\ ;
+蟀 < shutsu\ ;
+鼬 < itachi\ ;
+鼠 < nezumi\ ;
+土 < tsuchi\ ;
+漆 < urushi\ ;
+蛹 < sanagi\ ;
+蛙 < kawazu\ ;
+器 < utsuwa\ ;
+港 < minato\ ;
+薬 < kusuri\ ;
+薪 < takigi\ ;
+涙 < namida\ ;
+薇 < zenmai\ ;
+薄 < susuki\ ;
+鴉 < karasu\ ;
+厨 < kuriya\ ;
+卸 < oroshi\ ;
+卵 < tamago\ ;
+歪 < ibitsu\ ;
+魚 < sakana\ ;
+南 < minami\ ;
+匠 < takumi\ ;
+櫻 < sakura\ ;
+苺 < ichigo\ ;
+勢 < hazumi\ ;
+檜 < hinoki\ ;
+舅 < shuuto\ ;
+榊 < sakaki\ ;
+光 < hikari\ ;
+館 < yakata\ ;
+候 < sourou\ ;
+響 < hibiki\ ;
+柳 < yanagi\ ;
+俄 < niwaka\ ;
+係 < kakari\ ;
+便 < yosuga\ ;
+枕 < makura\ ;
+机 < tsukue\ ;
+仏 < hotoke\ ;
+曇 < kumori\ ;
+雀 < suzume\ ;
+京 < miyako\ ;
+隣 < tonari\ ;
+乙 < kinoto\ ;
+乍 < nagara\ ;
+万 < yorozu\ ;
+七 < shichi\ ;
+丁 < hinoto\ ;
+緑 < midori\ ;
+絣 < kasuri\ ;
+絆 < kizuna\ ;
+簾 < sudare\ ;
+鏡 < kagami\ ;
+鎖 < kusari\ ;
+筒 < tsutsu\ ;
+捌 < sabaki\ ;
+鋼 < hagane\ ;
+童 < warabe\ ;
+鋏 < hasami\ ;
+扉 < tobira\ ;
+所 < tokoro\ ;
+廃虚 < haikyo\ ;
+忿怒 < fun''nu\ ;
+送迎 < sougei\ ;
+迅雷 < jinrai\ ;
+志操 < shisou\ ;
+通貨 < tsuuka\ ;
+名刺 < meishi\ ;
+同前 < douzen\ ;
+礼典 < reiten\ ;
+前衛 < zen''ei\ ;
+矢筈 < yahazu\ ;
+金坑 < kinkou\ ;
+原形 < genkei\ ;
+復権 < fukken\ ;
+前行 < zenkou\ ;
+名分 < meibun\ ;
+形状 < keijou\ ;
+列車 < ressha\ ;
+名刀 < meitou\ ;
+廃藩 < haihan\ ;
+配本 < haihon\ ;
+厚志 < koushi\ ;
+薄味 < hakumi\ ;
+社僧 < shasou\ ;
+合剤 < gouzai\ ;
+同処 < dousho\ ;
+法典 < houten\ ;
+社債 < shasai\ ;
+年輪 < nenrin\ ;
+年輩 < nenpai\ ;
+磁心 < jishin\ ;
+分遣 < bunken\ ;
+友好 < yuukou\ ;
+勤番 < kinban\ ;
+石碑 < sekihi\ ;
+合切 < gassai\ ;
+退転 < taiten\ ;
+正編 < seihen\ ;
+反変 < hanpen\ ;
+叱咤 < shitta\ ;
+同党 < doutou\ ;
+幽趣 < yuushu\ ;
+加給 < kakyuu\ ;
+名優 < meiyuu\ ;
+厳封 < genpuu\ ;
+帯電 < taiden\ ;
+律法 < rippou\ ;
+凌雲 < ryouun\ ;
+快感 < kaikan\ ;
+選考 < senkou\ ;
+矢種 < yadane\ ;
+汎愛 < han''ai\ ;
+強盗 < goutou\ ;
+厳寒 < genkan\ ;
+量器 < ryouki\ ;
+名僧 < meisou\ ;
+正統 < seitou\ ;
+遊蕩 < yuutou\ ;
+決定 < kettei\ ;
+蒸民 < joumin\ ;
+弾痕 < dankon\ ;
+重噸 < juuton\ ;
+迂闊 < ukatsu\ ;
+造詣 < zoukei\ ;
+淡々 < tantan\ ;
+厳守 < genshu\ ;
+台名 < taimei\ ;
+厳存 < genson\ ;
+正系 < seikei\ ;
+邪神 < jashin\ ;
+辺陬 < hensuu\ ;
+造言 < zougen\ ;
+逃走 < tousou\ ;
+通語 < tsuugo\ ;
+分載 < bunsai\ ;
+酸性 < sansei\ ;
+相関 < soukan\ ;
+後段 < koudan\ ;
+社会 < shakai\ ;
+通話 < tsuuwa\ ;
+復校 < fukkou\ ;
+同値 < douchi\ ;
+切身 < kirimi\ ;
+君主 < kunshu\ ;
+草鞋 < waraji\ ;
+法例 < hourei\ ;
+制裁 < seisai\ ;
+南方 < nanpou\ ;
+北海 < hokkai\ ;
+忠愛 < chuuai\ ;
+金員 < kin''in\ ;
+単文 < tanbun\ ;
+確度 < kakudo\ ;
+民望 < minbou\ ;
+薄利 < hakuri\ ;
+社交 < shakou\ ;
+微服 < bifuku\ ;
+求愛 < kyuuai\ ;
+単数 < tansuu\ ;
+必携 < hikkei\ ;
+金品 < kinpin\ ;
+劣等 < rettou\ ;
+盤面 < banmen\ ;
+匠気 < shouki\ ;
+動産 < dousan\ ;
+延納 < en''nou\ ;
+砕片 < saihen\ ;
+真逆 < masaka\ ;
+同体 < doutai\ ;
+河北 < kahoku\ ;
+社主 < shashu\ ;
+南支 < nanshi\ ;
+口吻 < koufun\ ;
+弾琴 < dankin\ ;
+師門 < shimon\ ;
+気早 < kibaya\ ;
+急場 < kyuuba\ ;
+同伴 < douhan\ ;
+連衡 < renkou\ ;
+口吟 < kougin\ ;
+法人 < houjin\ ;
+冷静 < reisei\ ;
+返金 < henkin\ ;
+参堂 < sandou\ ;
+快弁 < kaiben\ ;
+忠恕 < chuujo\ ;
+召募 < shoubo\ ;
+合併 < gouhei\ ;
+吐乳 < tonyuu\ ;
+名人 < meijin\ ;
+合体 < gattai\ ;
+薄光 < hakkou\ ;
+蔓延 < man''en\ ;
+当然 < touzen\ ;
+反噬 < hanzei\ ;
+原寸 < gensun\ ;
+同仁 < doujin\ ;
+同人 < dounin\ ;
+典麗 < tenrei\ ;
+向上 < koujou\ ;
+巣鶏 < sudori\ ;
+十本 < juppon\ ;
+廃艦 < haikan\ ;
+江山 < kouzan\ ;
+座薬 < zayaku\ ;
+萎縮 < ishuku\ ;
+重合 < juugou\ ;
+広言 < kougen\ ;
+廃船 < haisen\ ;
+廐肥 < kyuuhi\ ;
+同乗 < doujou\ ;
+応急 < oukyuu\ ;
+遊芸 < yuugei\ ;
+残痕 < zankon\ ;
+前著 < zencho\ ;
+菖蒲 < shoubu\ ;
+野原 < nohara\ ;
+決壊 < kekkai\ ;
+原子 < genshi\ ;
+毛氈 < mousen\ ;
+占拠 < senkyo\ ;
+別製 < bessei\ ;
+弊社 < heisha\ ;
+比況 < hikyou\ ;
+透視 < toushi\ ;
+半数 < hansuu\ ;
+醜女 < shuujo\ ;
+効目 < kikime\ ;
+民政 < minsei\ ;
+鳴禽 < meikin\ ;
+民放 < minpou\ ;
+近郷 < kingou\ ;
+酒手 < sakate\ ;
+返還 < henkan\ ;
+弓矢 < yumiya\ ;
+前菜 < zensai\ ;
+反問 < hanmon\ ;
+処遇 < shoguu\ ;
+心技 < shingi\ ;
+初見 < shoken\ ;
+欠航 < kekkou\ ;
+盗電 < touden\ ;
+巨鯨 < kyogei\ ;
+沃土 < yokudo\ ;
+巻首 < kanshu\ ;
+出足 < deashi\ ;
+残生 < zansei\ ;
+北欧 < hokuou\ ;
+盗難 < tounan\ ;
+加禄 < karoku\ ;
+号俸 < gouhou\ ;
+危急 < kikyuu\ ;
+剛臆 < gouoku\ ;
+弾片 < danpen\ ;
+県道 < kendou\ ;
+即応 < sokuou\ ;
+武神 < bushin\ ;
+返送 < hensou\ ;
+復改 < fukkai\ ;
+金剛 < kongou\ ;
+幣貢 < heikou\ ;
+配所 < haisho\ ;
+卵形 < rankei\ ;
+金券 < kinken\ ;
+酔態 < suitai\ ;
+巨魁 < kyokai\ ;
+蕃地 < banchi\ ;
+十数 < juusuu\ ;
+汽圧 < kiatsu\ ;
+凡退 < bontai\ ;
+達者 < tassha\ ;
+従来 < juurai\ ;
+選管 < senkan\ ;
+分譲 < bunjou\ ;
+司会 < shikai\ ;
+御料 < goryou\ ;
+円高 < endaka\ ;
+近辺 < kinpen\ ;
+口内 < kounai\ ;
+出費 < shuppi\ ;
+金冠 < kinkan\ ;
+印形 < ingyou\ ;
+司令 < shirei\ ;
+重刑 < juukei\ ;
+追訴 < tsuiso\ ;
+号令 < gourei\ ;
+加硫 < karyuu\ ;
+剛胆 < goutan\ ;
+金具 < kanagu\ ;
+収受 < shuuju\ ;
+配慮 < hairyo\ ;
+迷論 < meiron\ ;
+毎毎 < maimai\ ;
+追記 < tsuiki\ ;
+睡蓮 < suiren\ ;
+心意 < shin''i\ ;
+割線 < kassen\ ;
+切諌 < sekkan\ ;
+忘年 < bounen\ ;
+即座 < sokuza\ ;
+巻頭 < kantou\ ;
+効用 < kouyou\ ;
+蒲柳 < horyuu\ ;
+恒例 < kourei\ ;
+史伝 < shiden\ ;
+忍従 < ninjuu\ ;
+酷寒 < kokkan\ ;
+勇猛 < yuumou\ ;
+毬果 < kyuuka\ ;
+荷足 < niashi\ ;
+常道 < joudou\ ;
+分詞 < bunshi\ ;
+治乱 < chiran\ ;
+卵巣 < ransou\ ;
+死産 < shizan\ ;
+死生 < shisei\ ;
+博愛 < hakuai\ ;
+常連 < jouren\ ;
+冒頭 < boutou\ ;
+性向 < seikou\ ;
+帰郷 < kikyou\ ;
+水平 < suihei\ ;
+治世 < chisei\ ;
+引用 < in''you\ ;
+鮮麗 < senrei\ ;
+目釘 < mekugi\ ;
+反動 < handou\ ;
+前腕 < maeude\ ;
+史乗 < shijou\ ;
+分解 < bunkai\ ;
+参向 < sankou\ ;
+右上 < migiue\ ;
+遣米 < kenbei\ ;
+古俗 < kozoku\ ;
+後景 < koukei\ ;
+厖大 < boudai\ ;
+退行 < taikou\ ;
+可也 < kanari\ ;
+座興 < zakyou\ ;
+正眼 < seigan\ ;
+待望 < taibou\ ;
+磁壁 < jiheki\ ;
+差額 < sagaku\ ;
+残片 < zanpen\ ;
+句作 < kusaku\ ;
+後昆 < koukon\ ;
+正目 < masame\ ;
+矢玉 < yadama\ ;
+十指 < jusshi\ ;
+単性 < tansei\ ;
+毛根 < moukon\ ;
+蒸散 < jousan\ ;
+後方 < kouhou\ ;
+配当 < haitou\ ;
+加療 < karyou\ ;
+律旋 < rissen\ ;
+口伝 < kouden\ ;
+酒店 < shuten\ ;
+師道 < shidou\ ;
+底荷 < sokoni\ ;
+刊行 < kankou\ ;
+出訴 < shusso\ ;
+博徒 < bakuto\ ;
+砂漠 < sabaku\ ;
+急募 < kyuubo\ ;
+弱火 < yowabi\ ;
+前者 < zensha\ ;
+急務 < kyuumu\ ;
+巨頭 < kyotou\ ;
+葉物 < hamono\ ;
+分袂 < bunbei\ ;
+円頂 < enchou\ ;
+気息 < kisoku\ ;
+後攻 < koukou\ ;
+鳩目 < hatome\ ;
+重体 < juutai\ ;
+厳命 < genmei\ ;
+下世話 < gesewa\ ;
+冒険 < bouken\ ;
+原因 < gen''in\ ;
+内項 < naikou\ ;
+前翅 < zenshi\ ;
+度胸 < dokyou\ ;
+看貫 < kankan\ ;
+博引 < hakuin\ ;
+機長 < kichou\ ;
+割符 < warifu\ ;
+気性 < kishou\ ;
+十戒 < jikkai\ ;
+受信 < jushin\ ;
+目途 < mokuto\ ;
+農道 < noudou\ ;
+石灰 < sekkai\ ;
+民情 < minjou\ ;
+厚地 < atsuji\ ;
+重任 < juunin\ ;
+迎賓 < geihin\ ;
+厳君 < genkun\ ;
+前置 < zenchi\ ;
+重代 < juudai\ ;
+列藩 < reppan\ ;
+鳥目 < torime\ ;
+単弁 < tanben\ ;
+段段 < dandan\ ;
+水屋 < mizuya\ ;
+往昔 < ouseki\ ;
+金主 < kinshu\ ;
+破格 < hakaku\ ;
+千慮 < senryo\ ;
+去勢 < kyosei\ ;
+当歳 < tousai\ ;
+皮革 < hikaku\ ;
+内面 < naimen\ ;
+巷間 < koukan\ ;
+冷酒 < reishu\ ;
+卵子 < ranshi\ ;
+怪光 < kaikou\ ;
+兼題 < kendai\ ;
+檀那 < dan''na\ ;
+野中 < nonaka\ ;
+造船 < zousen\ ;
+参内 < sandai\ ;
+水害 < suigai\ ;
+徹底 < tettei\ ;
+気弱 < kiyowa\ ;
+叛乱 < hanran\ ;
+御慶 < gyokei\ ;
+県警 < kenkei\ ;
+帝道 < teidou\ ;
+別荘 < bessou\ ;
+碁席 < goseki\ ;
+初葉 < shoyou\ ;
+彼方 < kanata\ ;
+盟邦 < meihou\ ;
+快報 < kaihou\ ;
+厭厭 < iyaiya\ ;
+水子 < mizugo\ ;
+再開 < saikai\ ;
+遠称 < enshou\ ;
+北方 < hoppou\ ;
+内陣 < naijin\ ;
+半径 < hankei\ ;
+葛湯 < kuzuyu\ ;
+鮮魚 < sengyo\ ;
+冷遇 < reiguu\ ;
+半影 < han''ei\ ;
+反例 < hanrei\ ;
+巣雛 < suhina\ ;
+迦楼羅 < karura\ ;
+微弱 < bijaku\ ;
+郷村 < gouson\ ;
+硬性 < kousei\ ;
+酒屋 < sakaya\ ;
+前編 < zenpen\ ;
+退蔵 < taizou\ ;
+凝議 < gyougi\ ;
+前線 < zensen\ ;
+川面 < kawamo\ ;
+原品 < genpin\ ;
+引照 < inshou\ ;
+全館 < zenkan\ ;
+近詠 < kin''ei\ ;
+蒙昧 < moumai\ ;
+残滓 < zanshi\ ;
+沙丘 < sakyuu\ ;
+死点 < shiten\ ;
+相貌 < soubou\ ;
+送葬 < sousou\ ;
+白魔 < hakuma\ ;
+卜居 < bokkyo\ ;
+碍子 < gaishi\ ;
+毎晩 < maiban\ ;
+厳冬 < gentou\ ;
+友人 < yuujin\ ;
+益金 < ekikin\ ;
+労災 < rousai\ ;
+南岸 < nangan\ ;
+手忠実 < temame\ ;
+着荷 < chakka\ ;
+葦毛 < ashige\ ;
+次第 < shidai\ ;
+厚味 < atsumi\ ;
+兵難 < heinan\ ;
+即夜 < sokuya\ ;
+形木 < katagi\ ;
+師資 < shishi\ ;
+南山 < nanzan\ ;
+看視 < kanshi\ ;
+近視 < kinshi\ ;
+巌頭 < gantou\ ;
+茶道 < chadou\ ;
+次章 < jishou\ ;
+具陳 < guchin\ ;
+怪人 < kaijin\ ;
+登高 < toukou\ ;
+盤踞 < bankyo\ ;
+兵隊 < heitai\ ;
+連署 < rensho\ ;
+駄洒落 < dajare\ ;
+正犯 < seihan\ ;
+単射 < tansha\ ;
+参会 < sankai\ ;
+劇画 < gekiga\ ;
+全音 < zen''on\ ;
+卵塔 < rantou\ ;
+党首 < toushu\ ;
+過称 < kashou\ ;
+十干 < jikkan\ ;
+英領 < eiryou\ ;
+卑屬 < hizoku\ ;
+巨鐘 < oogane\ ;
+横領 < ouryou\ ;
+石油 < sekiyu\ ;
+廻状 < kaijou\ ;
+下駄屋 < getaya\ ;
+達磨 < daruma\ ;
+原動 < gendou\ ;
+南宋 < nansou\ ;
+弱気 < yowaki\ ;
+全面 < zenmen\ ;
+御幸 < miyuki\ ;
+徘徊 < haikai\ ;
+郵政 < yuusei\ ;
+半島 < hantou\ ;
+卑小 < hishou\ ;
+白馬 < hakuba\ ;
+相談 < soudan\ ;
+欝積 < usseki\ ;
+征戦 < seisen\ ;
+割目 < wareme\ ;
+全霊 < zenrei\ ;
+連繋 < renkei\ ;
+当板 < ateita\ ;
+参与 < san''yo\ ;
+後悔 < koukai\ ;
+参上 < sanjou\ ;
+沈下 < chinka\ ;
+真薯 < shinjo\ ;
+函蓋 < kangai\ ;
+原初 < gensho\ ;
+前端 < zentan\ ;
+快哉 < kaisai\ ;
+気学 < kigaku\ ;
+水域 < suiiki\ ;
+微少 < bishou\ ;
+全隊 < zentai\ ;
+送致 < souchi\ ;
+連綿 < renmen\ ;
+創痕 < soukon\ ;
+欲目 < yokume\ ;
+得度 < tokudo\ ;
+従弟 < juutei\ ;
+部族 < buzoku\ ;
+蕃人 < banjin\ ;
+菜種 < natane\ ;
+直訴 < jikiso\ ;
+原典 < genten\ ;
+鱗茎 < rinkei\ ;
+入院 < nyuuin\ ;
+短毛 < tanmou\ ;
+荒誕 < koutan\ ;
+初老 < shorou\ ;
+酷吏 < kokuri\ ;
+連累 < renrui\ ;
+蕃主 < banshu\ ;
+師訓 < shikun\ ;
+権限 < kengen\ ;
+勘検 < kanken\ ;
+遺物 < ibutsu\ ;
+准許 < junkyo\ ;
+酒場 < sakaba\ ;
+全開 < zenkai\ ;
+殉死 < junshi\ ;
+原像 < genzou\ ;
+目許 < memoto\ ;
+水嚢 < suinou\ ;
+当方 < touhou\ ;
+出荷 < shukka\ ;
+真菰 < makomo\ ;
+南天 < nanten\ ;
+目角 < mekado\ ;
+再選 < saisen\ ;
+廃盤 < haiban\ ;
+硫安 < ryuuan\ ;
+機軸 < kijiku\ ;
+勢望 < seibou\ ;
+権門 < kenmon\ ;
+銘々 < meimei\ ;
+勘案 < kan''an\ ;
+後年 < kounen\ ;
+医局 < ikyoku\ ;
+再遊 < saiyuu\ ;
+砲手 < houshu\ ;
+白露 < hakuro\ ;
+花鳥 < kachou\ ;
+追肥 < tsuihi\ ;
+念写 < nensha\ ;
+知歯 < chishi\ ;
+帆走 < hansou\ ;
+往復 < oufuku\ ;
+石榴 < zakuro\ ;
+白雲 < hakuun\ ;
+再送 < saisou\ ;
+光頭 < koutou\ ;
+律師 < risshi\ ;
+愈々 < iyoiyo\ ;
+兵鋒 < heihou\ ;
+出花 < debana\ ;
+歩測 < hosoku\ ;
+先頭 < sentou\ ;
+広縁 < hiroen\ ;
+浪々 < rourou\ ;
+力演 < rikien\ ;
+邪欲 < jayoku\ ;
+駄法螺 < dabora\ ;
+心土 < shindo\ ;
+微妙 < bimyou\ ;
+径庭 < keitei\ ;
+別紙 < besshi\ ;
+応召 < oushou\ ;
+出船 < defune\ ;
+酷刑 < kokkei\ ;
+快刀 < kaitou\ ;
+先鞭 < senben\ ;
+巧遅 < kouchi\ ;
+座礁 < zashou\ ;
+選炭 < sentan\ ;
+弁済 < bensai\ ;
+半天 < hanten\ ;
+志向 < shikou\ ;
+出臍 < debeso\ ;
+彷徨 < houkou\ ;
+半夜 < han''ya\ ;
+制空 < seikuu\ ;
+原人 < genjin\ ;
+再転 < saiten\ ;
+形成 < keisei\ ;
+市販 < shihan\ ;
+硝安 < shouan\ ;
+初経 < shokei\ ;
+半壊 < hankai\ ;
+弔歌 < chouka\ ;
+近著 < kincho\ ;
+落款 < rakkan\ ;
+切羽 < kiriha\ ;
+硝子 < garasu\ ;
+幹線 < kansen\ ;
+都心 < toshin\ ;
+確保 < kakuho\ ;
+歳歳 < saisai\ ;
+充電 < juuden\ ;
+池亭 < chitei\ ;
+内輪 < uchiwa\ ;
+運用 < un''you\ ;
+盛観 < seikan\ ;
+千夜 < sen''ya\ ;
+序章 < joshou\ ;
+制禦 < seigyo\ ;
+分署 < bunsho\ ;
+形態 < keitai\ ;
+硬変 < kouhen\ ;
+先陣 < senjin\ ;
+公金 < koukin\ ;
+鳥渡 < chotto\ ;
+遅番 < osoban\ ;
+力泳 < rikiei\ ;
+正油 < shouyu\ ;
+印匣 < inbako\ ;
+即効 < sokkou\ ;
+荷船 < nibune\ ;
+広範 < kouhan\ ;
+石木 < ishiki\ ;
+碩儒 < sekiju\ ;
+著書 < chosho\ ;
+川辺 < kawabe\ ;
+鳩派 < hatoha\ ;
+母御 < hahago\ ;
+過保護 < kahogo\ ;
+鄭声 < teisei\ ;
+砲弾 < houdan\ ;
+当所 < tousho\ ;
+盛装 < seisou\ ;
+水勢 < suisei\ ;
+都庁 < tochou\ ;
+六部 < rokubu\ ;
+止水 < shisui\ ;
+鮮鋭 < sen''ei\ ;
+酒名 < shumei\ ;
+盛衰 < seisui\ ;
+民団 < mindan\ ;
+芸風 < geifuu\ ;
+弦材 < genzai\ ;
+初等 < shotou\ ;
+公邸 < koutei\ ;
+印刻 < inkoku\ ;
+割烹 < kappou\ ;
+蓮台 < rendai\ ;
+正殿 < seiden\ ;
+再販 < saihan\ ;
+切線 < sessen\ ;
+剣状 < kenjou\ ;
+卵円 < ran''en\ ;
+酷似 < kokuji\ ;
+別種 < besshu\ ;
+睥睨 < heigei\ ;
+葉柄 < youhei\ ;
+著明 < chomei\ ;
+従姉 < juushi\ ;
+殺意 < satsui\ ;
+辞表 < jihyou\ ;
+非営利 < hieiri\ ;
+公選 < kousen\ ;
+従妹 < juumai\ ;
+利福 < rifuku\ ;
+経緯儀 < keiigi\ ;
+占取 < senshu\ ;
+毎年 < mainen\ ;
+残暑 < zansho\ ;
+公道 < koudou\ ;
+正正 < seisei\ ;
+平米 < heibei\ ;
+配合 < haigou\ ;
+水分 < suibun\ ;
+真美 < shinbi\ ;
+幄舎 < akusha\ ;
+魚鱗 < gyorin\ ;
+矢柄 < yagara\ ;
+入部 < nyuubu\ ;
+石斧 < sekifu\ ;
+冗談 < joudan\ ;
+水冷 < suirei\ ;
+矮星 < waisei\ ;
+蒼天 < souten\ ;
+全道 < zendou\ ;
+幼童 < youdou\ ;
+轟轟 < gougou\ ;
+睡眠 < suimin\ ;
+巨資 < kyoshi\ ;
+葉書 < hagaki\ ;
+包帯 < houtai\ ;
+厄介 < yakkai\ ;
+民営 < min''ei\ ;
+勇断 < yuudan\ ;
+動揺 < douyou\ ;
+殿御 < tonogo\ ;
+十回 < jukkai\ ;
+十四 < juuyon\ ;
+巨財 < kyozai\ ;
+協和 < kyouwa\ ;
+幽窓 < yuusou\ ;
+川路 < kawaji\ ;
+勇敢 < yuukan\ ;
+巨象 < kyozou\ ;
+冗言 < jougen\ ;
+欠片 < kakera\ ;
+連盟 < renmei\ ;
+幼稚 < youchi\ ;
+後天 < kouten\ ;
+具足 < gusoku\ ;
+鱗粉 < rinpun\ ;
+化学 < kagaku\ ;
+遵法 < junpou\ ;
+白金 < hakkin\ ;
+適温 < tekion\ ;
+南半 < nanhan\ ;
+逸球 < ikkyuu\ ;
+配剤 < haizai\ ;
+歯根 < shikon\ ;
+卒去 < sokkyo\ ;
+再誕 < saitan\ ;
+選民 < senmin\ ;
+市街 < shigai\ ;
+嵩高 < suukou\ ;
+先鋒 < senpou\ ;
+真綿 < mawata\ ;
+欣然 < kinzen\ ;
+呑兵衛 < nonbee\ ;
+後塵 < koujin\ ;
+全軍 < zengun\ ;
+送稿 < soukou\ ;
+冷蔵 < reizou\ ;
+配分 < haibun\ ;
+復員 < fukuin\ ;
+出納 < suitou\ ;
+処置 < shochi\ ;
+再訪 < saihou\ ;
+草葉 < kusaba\ ;
+年税 < nenzei\ ;
+再訂 < saitei\ ;
+苛酷 < kakoku\ ;
+強打 < kyouda\ ;
+邪教 < jakyou\ ;
+矢文 < yabumi\ ;
+内談 < naidan\ ;
+氏名 < shimei\ ;
+具象 < gushou\ ;
+真紅 < shinku\ ;
+卓効 < takkou\ ;
+艦齢 < kanrei\ ;
+勤怠 < kintai\ ;
+即今 < sokkon\ ;
+連番 < renban\ ;
+徴募 < choubo\ ;
+邦文 < houbun\ ;
+当店 < touten\ ;
+欠点 < ketten\ ;
+弊村 < heison\ ;
+当年 < tounen\ ;
+年祭 < nensai\ ;
+彼女 < kanojo\ ;
+荷縄 < ninawa\ ;
+死文 < shibun\ ;
+荏苒 < jinzen\ ;
+歳晩 < saiban\ ;
+包容 < houyou\ ;
+農芸 < nougei\ ;
+年礼 < nenrei\ ;
+弔旗 < chouki\ ;
+退社 < taisha\ ;
+半半 < hanhan\ ;
+別盃 < beppai\ ;
+過激 < kageki\ ;
+内訓 < naikun\ ;
+皇軍 < kougun\ ;
+水仙 < suisen\ ;
+却下 < kyakka\ ;
+不義理 < fugiri\ ;
+再製 < saisei\ ;
+強慢 < gouman\ ;
+希薄 < kihaku\ ;
+単元 < tangen\ ;
+遠浅 < tooasa\ ;
+轆轤 < rokuro\ ;
+毒婦 < dokufu\ ;
+南光 < nankou\ ;
+配偶 < haiguu\ ;
+内観 < naikan\ ;
+発送 < hassou\ ;
+御告 < otsuge\ ;
+内覧 < nairan\ ;
+遠洋 < en''you\ ;
+弾性 < dansei\ ;
+内見 < naiken\ ;
+形容 < keiyou\ ;
+有意差 < yuuisa\ ;
+強情 < goujou\ ;
+千千 < chidji\ ;
+近縁 < kin''en\ ;
+真箇 < shinko\ ;
+魚類 < gyorui\ ;
+勇戦 < yuusen\ ;
+鶏口 < keikou\ ;
+常置 < jouchi\ ;
+卒先 < sossen\ ;
+遠沈 < enchin\ ;
+正本 < seihon\ ;
+正木 < masaki\ ;
+全貌 < zenbou\ ;
+部将 < bushou\ ;
+先遣 < senken\ ;
+硫化 < ryuuka\ ;
+遡求 < sokyuu\ ;
+眼瞼 < ganken\ ;
+半分 < hanpun\ ;
+分社 < bunsha\ ;
+正書 < seisho\ ;
+入費 < nyuuhi\ ;
+短所 < tansho\ ;
+午刻 < gokoku\ ;
+占住 < senjuu\ ;
+巡覧 < junran\ ;
+気儘 < kimama\ ;
+忌中 < kichuu\ ;
+内装 < naisou\ ;
+役場 < yakuba\ ;
+魔風 < makaze\ ;
+出窓 < demado\ ;
+目脂 < meyani\ ;
+助教 < jokyou\ ;
+酒仙 < shusen\ ;
+鶏卵 < keiran\ ;
+真竹 < madake\ ;
+看経 < kankin\ ;
+建材 < kenzai\ ;
+発車 < hassha\ ;
+民兵 < minpei\ ;
+復刊 < fukkan\ ;
+半円 < han''en\ ;
+勘当 < kandou\ ;
+弊政 < heisei\ ;
+匈奴 < kyoudo\ ;
+酒乱 < shuran\ ;
+盲者 < mousha\ ;
+廃液 < haieki\ ;
+左表 < sahyou\ ;
+遅滞 < chitai\ ;
+刀礼 < tourei\ ;
+弁明 < benmei\ ;
+心事 < shinji\ ;
+勘弁 < kanben\ ;
+欲気 < yokuke\ ;
+短慮 < tanryo\ ;
+千分 < senbun\ ;
+劣敗 < reppai\ ;
+毎夕 < maiyuu\ ;
+砲声 < housei\ ;
+光輪 < kourin\ ;
+卒倒 < sottou\ ;
+単体 < tantai\ ;
+百足 < mukade\ ;
+欧洲 < oushuu\ ;
+勅意 < chokui\ ;
+公論 < kouron\ ;
+十分 < juppun\ ;
+魚雷 < gyorai\ ;
+先輩 < senpai\ ;
+平目 < hirame\ ;
+郷士 < goushi\ ;
+此方 < konata\ ;
+剣法 < kenpou\ ;
+茶茶 < chacha\ ;
+正方 < seihou\ ;
+武教 < bukyou\ ;
+剪毛 < senmou\ ;
+配乗 < haijou\ ;
+矜持 < kyouji\ ;
+農耕 < noukou\ ;
+千円 < sen''en\ ;
+初生 < shosei\ ;
+公認 < kounin\ ;
+巡行 < junkou\ ;
+区劃 < kukaku\ ;
+正文 < seibun\ ;
+歌格 < kakaku\ ;
+幽界 < yuukai\ ;
+正数 < seisuu\ ;
+後味 < atoaji\ ;
+砲塔 < houtou\ ;
+硝化 < shouka\ ;
+兼行 < kenkou\ ;
+彫塑 < chouso\ ;
+十全 < juuzen\ ;
+公許 < koukyo\ ;
+南京 < nankin\ ;
+知慮 < chiryo\ ;
+死所 < shisho\ ;
+幼生 < yousei\ ;
+道民 < doumin\ ;
+半値 < han''ne\ ;
+悶々 < monmon\ ;
+返答 < hentou\ ;
+茶色 < chairo\ ;
+権謀 < kenbou\ ;
+鶏冠 < tosaka\ ;
+百貨 < hyakka\ ;
+廻文 < kaibun\ ;
+勁悍 < keikan\ ;
+元軍 < gengun\ ;
+十億 < juuoku\ ;
+引手 < hikite\ ;
+魔障 < mashou\ ;
+切目 < kireme\ ;
+引戸 < hikido\ ;
+軟風 < nanpuu\ ;
+眼界 < gankai\ ;
+茶臼 < chausu\ ;
+選書 < sensho\ ;
+英訳 < eiyaku\ ;
+転音 < ten''on\ ;
+残影 < zan''ei\ ;
+芳醇 < houjun\ ;
+年産 < nensan\ ;
+年生 < nensei\ ;
+千倍 < senbai\ ;
+廃残 < haizan\ ;
+良馬 < ryouba\ ;
+平生 < heizei\ ;
+遊民 < yuumin\ ;
+葛布 < kuzufu\ ;
+廃止 < haishi\ ;
+輪転 < rinten\ ;
+高緯度 < kouido\ ;
+帆船 < hobune\ ;
+十倍 < juubai\ ;
+剛毛 < goumou\ ;
+毎回 < maikai\ ;
+母国 < bokoku\ ;
+民人 < minjin\ ;
+真砂 < masago\ ;
+助手 < sukete\ ;
+止揚 < shiyou\ ;
+幽玄 < yuugen\ ;
+芸道 < geidou\ ;
+加振 < kashin\ ;
+盛者 < jousha\ ;
+役員 < yakuin\ ;
+微乳 < binyuu\ ;
+県税 < kenzei\ ;
+優遇 < yuuguu\ ;
+石工 < sekkou\ ;
+内蔵 < naizou\ ;
+民主 < minshu\ ;
+初犯 < shohan\ ;
+殿堂 < dendou\ ;
+庶民 < shomin\ ;
+瞬時 < shunji\ ;
+優退 < yuutai\ ;
+凹目 < kubome\ ;
+劣才 < ressai\ ;
+輪距 < rinkyo\ ;
+返礼 < henrei\ ;
+刀痕 < toukon\ ;
+鳴戸 < naruto\ ;
+勘定 < kanjou\ ;
+内蒙 < naimou\ ;
+目糞 < mekuso\ ;
+座浴 < zayoku\ ;
+標語 < hyougo\ ;
+白話 < hakuwa\ ;
+判然 < hanzen\ ;
+砂子 < sunago\ ;
+悠々 < yuuyuu\ ;
+労役 < roueki\ ;
+茗荷 < myouga\ ;
+目籠 < mekago\ ;
+着物 < kimono\ ;
+車風 < shafuu\ ;
+標記 < hyouki\ ;
+鬚髯 < shuzen\ ;
+前段 < zendan\ ;
+遮断 < shadan\ ;
+適時 < tekiji\ ;
+草紙 < soushi\ ;
+落後 < rakugo\ ;
+盲管 < moukan\ ;
+十三 < juusan\ ;
+十万 < juuman\ ;
+毒味 < dokumi\ ;
+葉巻 < hamaki\ ;
+張子 < hariko\ ;
+石屋 < ishiya\ ;
+御主 < onushi\ ;
+都合 < tsugou\ ;
+御中 < onchuu\ ;
+花輪 < hanawa\ ;
+弁慶 < benkei\ ;
+不貞寝 < futene\ ;
+免許 < menkyo\ ;
+干犯 < kanpan\ ;
+剪枝 < senshi\ ;
+花軸 < kajiku\ ;
+幽然 < yuuzen\ ;
+凹田 < kubota\ ;
+苦衷 < kuchuu\ ;
+発見 < hakken\ ;
+兎角 < tokaku\ ;
+当地 < touchi\ ;
+干物 < himono\ ;
+平版 < heihan\ ;
+苦行 < kugyou\ ;
+鯨脂 < geishi\ ;
+再興 < saikou\ ;
+落度 < ochido\ ;
+砲台 < houdai\ ;
+再臨 < sairin\ ;
+真田 < sanada\ ;
+助役 < joyaku\ ;
+毎号 < maigou\ ;
+劣性 < ressei\ ;
+目笊 < mezaru\ ;
+歯形 < hagata\ ;
+弾奏 < dansou\ ;
+包含 < hougan\ ;
+廃校 < haikou\ ;
+後便 < koubin\ ;
+匍匐 < hofuku\ ;
+郊外 < kougai\ ;
+強姦 < goukan\ ;
+白衣 < byakue\ ;
+巨艦 < kyokan\ ;
+進歩 < shinpo\ ;
+凡眼 < bongan\ ;
+僧門 < soumon\ ;
+返盃 < henpai\ ;
+工芸 < kougei\ ;
+軍隊 < guntai\ ;
+落差 < rakusa\ ;
+巨船 < kyosen\ ;
+鱗状 < rinjou\ ;
+軍陣 < gunjin\ ;
+輪講 < rinkou\ ;
+残存 < zanzon\ ;
+平然 < heizen\ ;
+切片 < seppen\ ;
+北光 < hokkou\ ;
+武徳 < butoku\ ;
+眉目 < bimoku\ ;
+眼点 < ganten\ ;
+動天 < douten\ ;
+功徳 < kudoku\ ;
+後件 < kouken\ ;
+艦隊 < kantai\ ;
+歯医者 < haisha\ ;
+苗裔 < byouei\ ;
+加役 < kayaku\ ;
+後代 < koudai\ ;
+鱗片 < rinpen\ ;
+弊店 < heiten\ ;
+真理 < shinri\ ;
+儕輩 < saihai\ ;
+皮膜 < himaku\ ;
+似顔絵 < nigaoe\ ;
+役儀 < yakugi\ ;
+真珠 < shinju\ ;
+剪断 < sendan\ ;
+公葬 < kousou\ ;
+砂場 < sunaba\ ;
+弁当 < bentou\ ;
+逓減 < teigen\ ;
+往信 < oushin\ ;
+軍門 < gunmon\ ;
+座標 < zahyou\ ;
+魚道 < gyodou\ ;
+艇首 < teishu\ ;
+邪宗 < jashuu\ ;
+正弦 < seigen\ ;
+勇姿 < yuushi\ ;
+分煙 < bun''en\ ;
+欠本 < keppon\ ;
+毎分 < maifun\ ;
+制止 < seishi\ ;
+郵券 < yuuken\ ;
+荒磯 < araiso\ ;
+軽輩 < keihai\ ;
+華族 < kazoku\ ;
+構造 < kouzou\ ;
+著大 < chodai\ ;
+出物 < demono\ ;
+茅舎 < bousha\ ;
+座業 < zagyou\ ;
+勝因 < shouin\ ;
+皮肉 < hiniku\ ;
+前栽 < senzai\ ;
+砲兵 < houhei\ ;
+内聞 < naibun\ ;
+分点 < bunten\ ;
+死守 < shishu\ ;
+底止 < teishi\ ;
+兵船 < heisen\ ;
+別法 < beppou\ ;
+凸版 < toppan\ ;
+通気 < tsuuki\ ;
+加州 < kashuu\ ;
+正常 < seijou\ ;
+廻廊 < kairou\ ;
+速歩 < sokuho\ ;
+干潟 < higata\ ;
+軽躁 < keisou\ ;
+遥拝 < youhai\ ;
+芸談 < geidan\ ;
+巧者 < kousha\ ;
+優諚 < yuujou\ ;
+鳩座 < hatoza\ ;
+短大 < tandai\ ;
+左翼 < sayoku\ ;
+茶筅 < chasen\ ;
+前板 < maeita\ ;
+僻遠 < hekien\ ;
+高麗 < kourai\ ;
+身頃 < migoro\ ;
+前条 < zenjou\ ;
+入荷 < nyuuka\ ;
+割拠 < kakkyo\ ;
+強固 < kyouko\ ;
+平準 < heijun\ ;
+弟妹 < teimai\ ;
+痛飲 < tsuuin\ ;
+劾奏 < gaisou\ ;
+干満 < kanman\ ;
+前書 < zensho\ ;
+延年 < en''nen\ ;
+病魔 < byouma\ ;
+利欲 < riyoku\ ;
+郭公 < kakkou\ ;
+庭木 < niwaki\ ;
+楽音 < gakuon\ ;
+残塁 < zanrui\ ;
+入苑 < nyuuen\ ;
+若葉 < wakaba\ ;
+准看 < junkan\ ;
+常用 < jouyou\ ;
+勲功 < kunkou\ ;
+弊害 < heigai\ ;
+此岸 < shigan\ ;
+平淡 < heitan\ ;
+火事場 < kajiba\ ;
+全般 < zenpan\ ;
+前景 < zenkei\ ;
+遠戚 < enseki\ ;
+殺到 < sattou\ ;
+目盛 < memori\ ;
+若菜 < wakana\ ;
+帆立 < hotate\ ;
+郡制 < gunsei\ ;
+郵便 < yuubin\ ;
+転送 < tensou\ ;
+目白 < mejiro\ ;
+盪盪 < toutou\ ;
+初段 < shodan\ ;
+船頭 < sendou\ ;
+当分 < toubun\ ;
+週期 < shuuki\ ;
+郎君 < roukun\ ;
+近状 < kinjou\ ;
+巨編 < kyohen\ ;
+花見 < hanami\ ;
+内線 < naisen\ ;
+欠損 < kesson\ ;
+内緒 < naisho\ ;
+刑法 < keihou\ ;
+鳴子 < naruko\ ;
+前文 < zenbun\ ;
+武学 < bugaku\ ;
+出潮 < deshio\ ;
+席画 < sekiga\ ;
+逆毛 < sakage\ ;
+適応 < tekiou\ ;
+魚貝 < gyobai\ ;
+若芽 < wakame\ ;
+転載 < tensai\ ;
+冷眼 < reigan\ ;
+勤勉 < kinben\ ;
+櫛比 < shippi\ ;
+送水 < sousui\ ;
+勤労 < kinrou\ ;
+市税 < shizei\ ;
+母乳 < bonyuu\ ;
+転転 < tenten\ ;
+達成 < tassei\ ;
+内紛 < naifun\ ;
+勿体 < mottai\ ;
+勘合 < kangou\ ;
+茶碗 < chawan\ ;
+軍配 < gunbai\ ;
+平水 < heisui\ ;
+鳥屋 < toriya\ ;
+平民 < heimin\ ;
+平氏 < heishi\ ;
+連枝 < renshi\ ;
+母上 < hahaue\ ;
+動向 < doukou\ ;
+疾駆 < shikku\ ;
+函渠 < kankyo\ ;
+農産 < nousan\ ;
+刑死 < keishi\ ;
+楼門 < roumon\ ;
+公署 < kousho\ ;
+年歯 < nenshi\ ;
+造林 < zourin\ ;
+船隊 < sentai\ ;
+遠心 < enshin\ ;
+苛苛 < iraira\ ;
+弱味 < yowami\ ;
+適度 < tekido\ ;
+削摩 < sakuma\ ;
+輪蔵 < rinzou\ ;
+弾劾 < dangai\ ;
+達意 < tatsui\ ;
+底本 < teihon\ ;
+到来 < tourai\ ;
+発艦 < hakkan\ ;
+刎死 < funshi\ ;
+軍道 < gundou\ ;
+創建 < souken\ ;
+前提 < zentei\ ;
+冬着 < fuyugi\ ;
+造本 < zouhon\ ;
+看点 < kanten\ ;
+欣懐 < kinkai\ ;
+薄々 < usuusu\ ;
+冬眠 < toumin\ ;
+豪雨禍 < gouuka\ ;
+勝利 < shouri\ ;
+登臨 < tourin\ ;
+車道 < shadou\ ;
+強化 < kyouka\ ;
+辛目 < karame\ ;
+動勢 < dousei\ ;
+痴鈍 < chidon\ ;
+残品 < zanpin\ ;
+庸才 < yousai\ ;
+動労 < dourou\ ;
+軒輊 < kenchi\ ;
+光芒 < koubou\ ;
+帯状 < obijou\ ;
+苦肉 < kuniku\ ;
+連星 < rensei\ ;
+目玉 < medama\ ;
+茶盆 < chabon\ ;
+郎党 < roudou\ ;
+布石 < fuseki\ ;
+臥龍 < garyou\ ;
+弁天 < benten\ ;
+切歯 < sesshi\ ;
+短命 < tanmei\ ;
+巣箱 < subako\ ;
+殿上 < tenjou\ ;
+舷門 < genmon\ ;
+選定 < sentei\ ;
+勇名 < yuumei\ ;
+正大 < seidai\ ;
+髑髏 < dokuro\ ;
+利札 < rifuda\ ;
+遷宮 < senguu\ ;
+転貸 < tentai\ ;
+弁士 < benshi\ ;
+亜麻製 < amasei\ ;
+道念 < dounen\ ;
+瞳子 < doushi\ ;
+当代 < toudai\ ;
+床机 < shougi\ ;
+先般 < senpan\ ;
+当人 < tounin\ ;
+遵守 < junshu\ ;
+車輪 < sharin\ ;
+初校 < shokou\ ;
+軍車 < gunsha\ ;
+連敗 < renpai\ ;
+底数 < teisuu\ ;
+出水 < demizu\ ;
+身銭 < mizeni\ ;
+艦載 < kansai\ ;
+広東 < kanton\ ;
+布目 < nunome\ ;
+典範 < tenpan\ ;
+病院 < byouin\ ;
+知命 < chimei\ ;
+盗用 < touyou\ ;
+剛性 < gousei\ ;
+当世 < tousei\ ;
+勉励 < benrei\ ;
+出殻 < degara\ ;
+兎肉 < toniku\ ;
+眠気 < nemuke\ ;
+茶番 < chaban\ ;
+真水 < mamizu\ ;
+左程 < sahodo\ ;
+高風 < koufuu\ ;
+幽林 < yuurin\ ;
+返済 < hensai\ ;
+冬瓜 < tougan\ ;
+殊勲 < shukun\ ;
+光背 < kouhai\ ;
+軌跡 < kiseki\ ;
+弱冠 < jakkan\ ;
+知友 < chiyuu\ ;
+加圧 < kaatsu\ ;
+茶瓶 < chabin\ ;
+利敵 < riteki\ ;
+判明 < hanmei\ ;
+適宜 < tekigi\ ;
+殊功 < shukou\ ;
+弥勒 < miroku\ ;
+冥界 < meikai\ ;
+芭蕉 < bashou\ ;
+運弓 < unkyuu\ ;
+剣帯 < kentai\ ;
+高音 < takane\ ;
+良貨 < ryouka\ ;
+短剣 < tanken\ ;
+先聖 < sensei\ ;
+全米 < zenbei\ ;
+盲点 < mouten\ ;
+判断 < handan\ ;
+歓声 < kansei\ ;
+欽定 < kintei\ ;
+透明 < toumei\ ;
+重々 < juujuu\ ;
+軟論 < nanron\ ;
+邸内 < teinai\ ;
+免罪 < menzai\ ;
+廃帝 < haitei\ ;
+短刀 < tantou\ ;
+公算 < kousan\ ;
+舌頭 < zettou\ ;
+選外 < sengai\ ;
+死去 < shikyo\ ;
+軍資 < gunshi\ ;
+引合 < hikiai\ ;
+幽景 < yuukei\ ;
+遊底 < yuutei\ ;
+矩則 < kusoku\ ;
+巡礼 < junrei\ ;
+年来 < nenrai\ ;
+初旬 < shojun\ ;
+平板 < heiban\ ;
+儀表 < gihyou\ ;
+兵種 < heishu\ ;
+巨砲 < kyohou\ ;
+皆納 < kainou\ ;
+残党 < zantou\ ;
+次席 < jiseki\ ;
+歌声 < utagoe\ ;
+模索 < mosaku\ ;
+残光 < zankou\ ;
+元老 < genrou\ ;
+芳草 < housou\ ;
+真横 < mayoko\ ;
+八端 < hattan\ ;
+分校 < bunkou\ ;
+連投 < rentou\ ;
+盗犯 < touhan\ ;
+弾丸 < dangan\ ;
+歌境 < kakyou\ ;
+写生 < shasei\ ;
+残像 < zanzou\ ;
+歩哨 < hoshou\ ;
+県民 < kenmin\ ;
+剣山 < kenzan\ ;
+労功 < roukou\ ;
+連戦 < rensen\ ;
+冷然 < reizen\ ;
+動乱 < douran\ ;
+制憲 < seiken\ ;
+弓勢 < yunzei\ ;
+内省 < naisei\ ;
+平明 < heimei\ ;
+死刑 < shikei\ ;
+眉毛 < mayuge\ ;
+造成 < zousei\ ;
+廃屋 < haioku\ ;
+切替 < settai\ ;
+逃散 < tousan\ ;
+身軽 < migaru\ ;
+矢先 < yasaki\ ;
+軍談 < gundan\ ;
+年数 < nensuu\ ;
+山羊座 < yagiza\ ;
+正味 < shoumi\ ;
+退散 < taisan\ ;
+芸能 < geinou\ ;
+連想 < rensou\ ;
+残余 < zan''yo\ ;
+遣外 < kengai\ ;
+弁口 < benkou\ ;
+皓礬 < kouban\ ;
+正号 < seigou\ ;
+苦笑 < kushou\ ;
+分明 < bunmei\ ;
+弓具 < kyuugu\ ;
+癌腫 < ganshu\ ;
+矮人 < waijin\ ;
+荒海 < araumi\ ;
+鳴動 < meidou\ ;
+内界 < naikai\ ;
+座席 < zaseki\ ;
+正南 < seinan\ ;
+芸者 < geisha\ ;
+正午 < shougo\ ;
+内用 < naiyou\ ;
+別懇 < bekkon\ ;
+分数 < bunsuu\ ;
+分散 < bunsan\ ;
+優者 < yuusha\ ;
+卒塔婆 < sotoba\ ;
+歯冠 < shikan\ ;
+再現 < saigen\ ;
+康寧 < kounei\ ;
+功労 < kourou\ ;
+欄干 < rankan\ ;
+列挙 < rekkyo\ ;
+前山 < zenzan\ ;
+弥久 < bikyuu\ ;
+発端 < hottan\ ;
+初戦 < shosen\ ;
+軍装 < gunsou\ ;
+別意 < betsui\ ;
+出時 < dedoki\ ;
+連弾 < rendan\ ;
+亜麻色 < amairo\ ;
+知人 < chijin\ ;
+茫然 < bouzen\ ;
+輔翼 < hoyoku\ ;
+農法 < nouhou\ ;
+利息 < risoku\ ;
+府庁 < fuchou\ ;
+庶子 < shoshi\ ;
+華奢 < kyasha\ ;
+至難 < shinan\ ;
+労使 < roushi\ ;
+廉売 < renbai\ ;
+死体 < shitai\ ;
+逢引 < aibiki\ ;
+停頓 < teiton\ ;
+遺告 < yuigou\ ;
+函数 < kansuu\ ;
+冷淡 < reitan\ ;
+真昼 < mahiru\ ;
+出方 < dekata\ ;
+剣士 < kenshi\ ;
+公益 < koueki\ ;
+船路 < funaji\ ;
+疎隔 < sokaku\ ;
+加入 < kanyuu\ ;
+農民 < noumin\ ;
+遠国 < ongoku\ ;
+具申 < gushin\ ;
+荷札 < nifuda\ ;
+席次 < sekiji\ ;
+利得 < ritoku\ ;
+全盲 < zenmou\ ;
+死亡 < shibou\ ;
+巨獣 < kyojuu\ ;
+正兵 < seihei\ ;
+全盛 < zensei\ ;
+蹈鞴 < tatara\ ;
+連帯 < rentai\ ;
+速度 < sokudo\ ;
+到底 < toutei\ ;
+免税 < menzei\ ;
+舌鋒 < zeppou\ ;
+造幣 < zouhei\ ;
+標示 < hyouji\ ;
+平手 < hirate\ ;
+停電 < teiden\ ;
+健闘 < kentou\ ;
+舟運 < shuuun\ ;
+横目 < yokome\ ;
+凱旋 < gaisen\ ;
+目次 < mokuji\ ;
+冷泉 < reisen\ ;
+全癒 < zen''yu\ ;
+白磁 < hakuji\ ;
+返本 < henpon\ ;
+別形 < bekkei\ ;
+幻想 < gensou\ ;
+看板 < kanban\ ;
+再燃 < sainen\ ;
+着意 < chakui\ ;
+内状 < naijou\ ;
+別当 < bettou\ ;
+近東 < kintou\ ;
+建具 < tategu\ ;
+近来 < kinrai\ ;
+返書 < hensho\ ;
+序幕 < jomaku\ ;
+側鎖 < sokusa\ ;
+概論 < gairon\ ;
+病躯 < byouku\ ;
+楽譜 < gakufu\ ;
+冷汗 < reikan\ ;
+分担 < buntan\ ;
+辣油 < razeyu\ ;
+劇化 < gekika\ ;
+冷水 < reisui\ ;
+還元 < kangen\ ;
+利幅 < rihaba\ ;
+凡書 < bonsho\ ;
+連峰 < renpou\ ;
+劇務 < gekimu\ ;
+切手 < kirete\ ;
+幻怪 < genkai\ ;
+追慕 < tsuibo\ ;
+発砲 < happou\ ;
+身許 < mimoto\ ;
+適否 < tekihi\ ;
+出掛 < degake\ ;
+円熟 < enjuku\ ;
+近景 < kinkei\ ;
+連山 < renzan\ ;
+高邁 < koumai\ ;
+前奏 < zensou\ ;
+店屋 < miseya\ ;
+処方 < shohou\ ;
+青海苔 < aonori\ ;
+遍在 < henzai\ ;
+別巻 < bekkan\ ;
+冗漫 < jouman\ ;
+概観 < gaikan\ ;
+前夜 < zen''ya\ ;
+建値 < tatene\ ;
+幻影 < gen''ei\ ;
+連射 < rensha\ ;
+前売 < maeuri\ ;
+概要 < gaiyou\ ;
+傍輩 < houbai\ ;
+白眉 < hakubi\ ;
+峡部 < kyoubu\ ;
+制定 < seitei\ ;
+軽罪 < keizai\ ;
+番頭 < bantou\ ;
+初年 < shonen\ ;
+辛気 < shinki\ ;
+割合 < wariai\ ;
+楼観 < roukan\ ;
+苦痛 < kutsuu\ ;
+幾年 < ikunen\ ;
+冬毛 < fuyuge\ ;
+先知 < senchi\ ;
+店子 < tanako\ ;
+魚群 < gyogun\ ;
+退役 < taieki\ ;
+幼年 < younen\ ;
+迂曲 < ukyoku\ ;
+割印 < wariin\ ;
+利尿 < rinyou\ ;
+似非親 < eseoya\ ;
+床屋 < tokoya\ ;
+退廷 < taitei\ ;
+権現 < gongen\ ;
+側部 < sokubu\ ;
+帰服 < kifuku\ ;
+眼底 < gantei\ ;
+退廃 < taihai\ ;
+別居 < bekkyo\ ;
+留飲 < ryuuin\ ;
+刪定 < santei\ ;
+欄外 < rangai\ ;
+冠水 < kansui\ ;
+別封 < beppuu\ ;
+眼帯 < gantai\ ;
+平年 < heinen\ ;
+平平 < heihei\ ;
+臆面 < okumen\ ;
+廃品 < haihin\ ;
+迷彩 < meisai\ ;
+市民 < shimin\ ;
+庄屋 < shouya\ ;
+色色 < iroiro\ ;
+冠毛 < kanmou\ ;
+常数 < jousuu\ ;
+農林 < nourin\ ;
+平常 < heijou\ ;
+苔癬 < taisen\ ;
+癲癇 < tenkan\ ;
+亜麻糸 < amaito\ ;
+判定 < hantei\ ;
+判官 < hangan\ ;
+川瀬 < kawase\ ;
+廷丁 < teitei\ ;
+発生 < hassei\ ;
+農村 < nouson\ ;
+側近 < sokkin\ ;
+盤根 < bankon\ ;
+魂胆 < kontan\ ;
+六十路 < musoji\ ;
+轟然 < gouzen\ ;
+別嬪 < beppin\ ;
+欠品 < keppin\ ;
+魚網 < gyomou\ ;
+内湯 < uchiyu\ ;
+亜温帯 < aontai\ ;
+生麩 < namafu\ ;
+幽居 < yuukyo\ ;
+連夜 < ren''ya\ ;
+巡演 < jun''en\ ;
+歌会 < utakai\ ;
+公然 < kouzen\ ;
+巻毛 < makige\ ;
+軍艦 < gunkan\ ;
+連声 < renjou\ ;
+余所見 < yosomi\ ;
+自重 < jichou\ ;
+内済 < naisai\ ;
+先番 < senban\ ;
+遊吟 < yuugin\ ;
+遊君 < yuukun\ ;
+軍船 < gunsen\ ;
+草本 < souhon\ ;
+盲断 < moudan\ ;
+着尺 < kijaku\ ;
+艨艟 < moudou\ ;
+偽足 < gisoku\ ;
+草書 < sousho\ ;
+全然 < zenzen\ ;
+列寧 < reenin\ ;
+魚精 < gyosei\ ;
+艦艇 < kantei\ ;
+目方 < mekata\ ;
+凡才 < bonsai\ ;
+凡手 < bonshu\ ;
+充用 < juuyou\ ;
+魚粉 < gyofun\ ;
+凡戦 < bonsen\ ;
+庸君 < youkun\ ;
+値頃 < negoro\ ;
+凶徒 < kyouto\ ;
+疎通 < sotsuu\ ;
+至近 < shikin\ ;
+幢幡 < douban\ ;
+平屋 < hiraya\ ;
+遅参 < chisan\ ;
+逆子 < sakago\ ;
+委員会 < iinkai\ ;
+白狐 < byakko\ ;
+値鞘 < nezaya\ ;
+出庫 < shukko\ ;
+追尾 < tsuibi\ ;
+出府 < shuppu\ ;
+初婚 < shokon\ ;
+出店 < demise\ ;
+内治 < naichi\ ;
+農政 < nousei\ ;
+剛勇 < gouyuu\ ;
+欠勤 < kekkin\ ;
+共演 < kyouen\ ;
+自適 < jiteki\ ;
+凡慮 < bonryo\ ;
+退官 < taikan\ ;
+眼孔 < gankou\ ;
+界面 < kaimen\ ;
+遯世 < tonsei\ ;
+平定 < heitei\ ;
+華冑 < kachuu\ ;
+輪番 < rinban\ ;
+依存度 < izondo\ ;
+出師 < suishi\ ;
+前名 < zenmei\ ;
+道元 < dougen\ ;
+前号 < zengou\ ;
+判士 < hanshi\ ;
+輪生 < rinsei\ ;
+内気 < uchiki\ ;
+傍訓 < boukun\ ;
+眸子 < boushi\ ;
+遅効 < chikou\ ;
+廃兵 < haihei\ ;
+免状 < menjou\ ;
+帆桁 < hogeta\ ;
+機業 < kigyou\ ;
+逓増 < teizou\ ;
+幕府 < bakufu\ ;
+席捲 < sekken\ ;
+荷役 < niyaku\ ;
+内殿 < naiden\ ;
+傍観 < boukan\ ;
+界隈 < kaiwai\ ;
+分封 < bunpou\ ;
+公準 < koujun\ ;
+傍視 < wakimi\ ;
+白煙 < hakuen\ ;
+苔状 < taijou\ ;
+魔笛 < mateki\ ;
+創世 < sousei\ ;
+跳馬 < chouba\ ;
+常態 < joutai\ ;
+広場 < hiroba\ ;
+山顛 < santen\ ;
+停車 < teisha\ ;
+高覧 < kouran\ ;
+甘鯛 < amadai\ ;
+広域 < kouiki\ ;
+横溢 < ouitsu\ ;
+冬日 < fuyubi\ ;
+高見 < takami\ ;
+僧綱 < sougou\ ;
+前前 < maemae\ ;
+座卓 < zataku\ ;
+冠木 < kabuki\ ;
+良縁 < ryouen\ ;
+剛健 < gouken\ ;
+偽証 < gishou\ ;
+市有 < shiyuu\ ;
+庭前 < teizen\ ;
+阿僧祇 < asougi\ ;
+検車 < kensha\ ;
+店員 < ten''in\ ;
+進化 < shinka\ ;
+樹氷 < juhyou\ ;
+庄園 < shouen\ ;
+自足 < jisoku\ ;
+骨身 < honemi\ ;
+六法 < roppou\ ;
+出家 < shukke\ ;
+高裁 < kousai\ ;
+画集 < gashuu\ ;
+分娩 < bunben\ ;
+色糸 < iroito\ ;
+画障 < gashou\ ;
+山霊 < sanrei\ ;
+写本 < shahon\ ;
+入海 < iriumi\ ;
+蹂躪 < juurin\ ;
+幕屋 < makuya\ ;
+刻印 < kokuin\ ;
+凡常 < bonjou\ ;
+迷妄 < meimou\ ;
+痛苦 < tsuuku\ ;
+盆景 < bonkei\ ;
+船荷 < funani\ ;
+連吟 < rengin\ ;
+初回 < shokai\ ;
+廃人 < haijin\ ;
+剛体 < goutai\ ;
+車線 < shasen\ ;
+連合 < rengou\ ;
+盲想 < mousou\ ;
+年報 < nenpou\ ;
+相性 < aishou\ ;
+若湯 < wakayu\ ;
+公民 < koumin\ ;
+市日 < ichibi\ ;
+様相 < yousou\ ;
+鱈子 < tarako\ ;
+分外 < bungai\ ;
+監房 < kanbou\ ;
+布教 < fukyou\ ;
+造反 < zouhan\ ;
+分売 < bunbai\ ;
+凄惨 < seisan\ ;
+盛挙 < seikyo\ ;
+軽目 < karume\ ;
+帰心 < kishin\ ;
+茘枝 < reishi\ ;
+相役 < aiyaku\ ;
+座元 < zamoto\ ;
+再来 < sairai\ ;
+兼業 < kengou\ ;
+盾座 < tateza\ ;
+冷房 < reibou\ ;
+制動 < seidou\ ;
+相当 < soutou\ ;
+巡検 < junken\ ;
+兵権 < heiken\ ;
+百済 < kudara\ ;
+至論 < shiron\ ;
+船艙 < sensou\ ;
+山間 < yamaai\ ;
+平均 < heikin\ ;
+山門 < sanmon\ ;
+傭船 < yousen\ ;
+円柱 < enchuu\ ;
+生類 < seirui\ ;
+平地 < heichi\ ;
+連動 < rendou\ ;
+前便 < zenbin\ ;
+庸人 < youjin\ ;
+年回 < nenkai\ ;
+退団 < taidan\ ;
+盲従 < moujuu\ ;
+冗文 < joubun\ ;
+全欧 < zen''ou\ ;
+睾丸 < kougan\ ;
+至言 < shigen\ ;
+連判 < renpan\ ;
+軒端 < nokiba\ ;
+師弟 < shitei\ ;
+前件 < zenken\ ;
+八十路 < yasoji\ ;
+屏風 < byoubu\ ;
+相席 < aiseki\ ;
+前代 < zendai\ ;
+生面 < seimen\ ;
+苦汁 < nigari\ ;
+伊勢蝦 < iseebi\ ;
+前人 < zenjin\ ;
+切地 < kireji\ ;
+凶夢 < kyoumu\ ;
+分地 < bunchi\ ;
+艶福 < enpuku\ ;
+若気 < wakage\ ;
+産院 < san''in\ ;
+分団 < bundan\ ;
+自註 < jichuu\ ;
+初号 < shogou\ ;
+逸事 < itsuji\ ;
+僻目 < higame\ ;
+刀圭 < toukei\ ;
+冊数 < sassuu\ ;
+画鋲 < gabyou\ ;
+出城 < dejiro\ ;
+幼名 < youmei\ ;
+小鼻 < kobana\ ;
+内旨 < naishi\ ;
+痛罵 < tsuuba\ ;
+自覚 < jikaku\ ;
+内方 < naihou\ ;
+偽薬 < giyaku\ ;
+病臥 < byouga\ ;
+共栄 < kyouei\ ;
+値遇 < chiguu\ ;
+并呑 < heidon\ ;
+幾千 < ikusen\ ;
+高著 < koucho\ ;
+小麦 < komugi\ ;
+分営 < bun''ei\ ;
+棒鋼 < boukou\ ;
+送呈 < soutei\ ;
+座中 < zachuu\ ;
+并合 < heigou\ ;
+修院 < shuuin\ ;
+底値 < sokone\ ;
+帰属 < kizoku\ ;
+工数 < kousuu\ ;
+兵曹 < heisou\ ;
+兵書 < heisho\ ;
+曾祖父 < hijiji\ ;
+刑名 < keimei\ ;
+軍礼 < gunrei\ ;
+樹木 < jumoku\ ;
+高菜 < takana\ ;
+相対 < soutai\ ;
+年号 < nengou\ ;
+見栄坊 < miebou\ ;
+花火 < hanabi\ ;
+展開 < tenkai\ ;
+相宿 < aiyado\ ;
+退去 < taikyo\ ;
+帯封 < obifuu\ ;
+亜鉛版 < aenban\ ;
+凍寒 < toukan\ ;
+平原 < heigen\ ;
+凍害 < tougai\ ;
+山野 < san''ya\ ;
+透写 < tousha\ ;
+制令 < seirei\ ;
+六本 < roppon\ ;
+苦楽 < kuraku\ ;
+帰宅 < kitaku\ ;
+疽腫 < soshou\ ;
+横根 < yokone\ ;
+幾分 < ikubun\ ;
+異説 < isetsu\ ;
+魔球 < makyuu\ ;
+凶器 < kyouki\ ;
+保革 < hokaku\ ;
+再挙 < saikyo\ ;
+俊馬 < shunme\ ;
+八本 < happon\ ;
+公有 < kouyuu\ ;
+偏見 < henken\ ;
+府中 < fuchuu\ ;
+目尻 < mejiri\ ;
+其方 < sonata\ ;
+盛年 < seinen\ ;
+小鴨 < kogamo\ ;
+退勢 < taisei\ ;
+返報 < henpou\ ;
+内探 < naitan\ ;
+権柄 < kenpei\ ;
+小鳥 < kotori\ ;
+年功 < nenkou\ ;
+田野 < den''ya\ ;
+兵数 < heisuu\ ;
+盪尽 < toujin\ ;
+眼前 < ganzen\ ;
+艦砲 < kanpou\ ;
+店主 < tenshu\ ;
+転生 < tensei\ ;
+足駄 < ashida\ ;
+八景 < hakkei\ ;
+登楼 < tourou\ ;
+目安 < meyasu\ ;
+概算 < gaisan\ ;
+分厘 < bunrin\ ;
+御猪口 < ochoko\ ;
+追加 < tsuika\ ;
+横木 < yokogi\ ;
+優渥 < yuuaku\ ;
+帆影 < hokage\ ;
+年初 < nensho\ ;
+腰間 < youkan\ ;
+草屋 < souoku\ ;
+公明 < koumei\ ;
+年刊 < nenkan\ ;
+年分 < nenbun\ ;
+幕営 < bakuei\ ;
+小鰭 < kohada\ ;
+平分 < heibun\ ;
+平凡 < heibon\ ;
+瘋癲 < fuuten\ ;
+追分 < oiwake\ ;
+鰥夫 < yamome\ ;
+用金 < youkin\ ;
+鮎並女 < ainame\ ;
+魔物 < mamono\ ;
+公文 < koubun\ ;
+茶巾 < chakin\ ;
+刑典 < keiten\ ;
+近在 < kinzai\ ;
+別件 < bekken\ ;
+山辺 < yamabe\ ;
+略記 < ryakki\ ;
+巧手 < koushu\ ;
+真味 < shinmi\ ;
+身空 < misora\ ;
+芋版 < imoban\ ;
+巡拝 < junpai\ ;
+産金 < sankin\ ;
+全数 < zensuu\ ;
+全敗 < zenpai\ ;
+真否 < shinpi\ ;
+若木 < wakagi\ ;
+列候 < rekkou\ ;
+追儺 < tsuina\ ;
+冷害 < reigai\ ;
+床上 < yukaue\ ;
+偽膜 < gimaku\ ;
+帆布 < honuno\ ;
+凝固 < gyouko\ ;
+途中 < tochuu\ ;
+内憂 < naiyuu\ ;
+俗間 < zokkan\ ;
+促音 < sokuon\ ;
+小骨 < kobone\ ;
+典拠 < tenkyo\ ;
+登板 < touban\ ;
+初代 < shodai\ ;
+刀剣 < touken\ ;
+幕吏 < bakuri\ ;
+魚灯 < gyotou\ ;
+膚身 < hadami\ ;
+癖毛 < kusege\ ;
+僭王 < sen''ou\ ;
+再思 < saishi\ ;
+県営 < ken''ei\ ;
+鮮明 < senmei\ ;
+生酒 < kizake\ ;
+分党 < buntou\ ;
+幾人 < ikunin\ ;
+脳髄 < nouzui\ ;
+真北 < makita\ ;
+巨悪 < kyoaku\ ;
+荊妻 < keisai\ ;
+全損 < zenson\ ;
+刃先 < hasaki\ ;
+山路 < yamaji\ ;
+帯域 < taiiki\ ;
+返品 < henpin\ ;
+小首 < kokubi\ ;
+年余 < nen''yo\ ;
+甘酸 < kansan\ ;
+騒霊 < sourei\ ;
+至芸 < shigei\ ;
+退会 < taikai\ ;
+寡黙 < kamoku\ ;
+刃傷 < ninjou\ ;
+再建 < saikon\ ;
+極秘 < gokuhi\ ;
+逃亡 < toubou\ ;
+退任 < tainin\ ;
+年代 < nendai\ ;
+傍線 < bousen\ ;
+省営 < shouei\ ;
+帰国 < kikoku\ ;
+着丈 < kitake\ ;
+農場 < noujou\ ;
+軽減 < keigen\ ;
+骨董 < kottou\ ;
+療治 < ryouji\ ;
+辺地 < henchi\ ;
+駝鳥 < dachou\ ;
+内径 < naikei\ ;
+腹部 < fukubu\ ;
+出先 < desaki\ ;
+元来 < ganrai\ ;
+真冬 < mafuyu\ ;
+輪栽 < rinsai\ ;
+巨弾 < kyodan\ ;
+元本 < genpon\ ;
+凶具 < kyougu\ ;
+自若 < jijaku\ ;
+年中 < nenjuu\ ;
+発散 < hassan\ ;
+師団 < shidan\ ;
+駱駝 < rakuda\ ;
+内廷 < naitei\ ;
+傍系 < boukei\ ;
+分体 < buntai\ ;
+平易化 < heiika\ ;
+迎合 < geigou\ ;
+安保理 < anpori\ ;
+修造 < shuzou\ ;
+草堂 < soudou\ ;
+干与 < kan''yo\ ;
+機屋 < hataya\ ;
+農地 < nouchi\ ;
+曾祖母 < hibaba\ ;
+航空 < koukuu\ ;
+市子 < ichiko\ ;
+尊顔 < songan\ ;
+軍犬 < genken\ ;
+修辞 < shuuji\ ;
+生身 < namami\ ;
+横手 < yokote\ ;
+停船 < teisen\ ;
+県勢 < kensei\ ;
+六感 < rokkan\ ;
+元旦 < gantan\ ;
+画調 < gachou\ ;
+冗官 < joukan\ ;
+処分 < shobun\ ;
+軽水 < keisui\ ;
+自腹 < jibara\ ;
+分与 < bun''yo\ ;
+処処 < shosho\ ;
+芒洋 < bouyou\ ;
+小雪 < koyuki\ ;
+小雨 < kosame\ ;
+導電 < douden\ ;
+兵役 < heieki\ ;
+小雀 < kogara\ ;
+籐椅子 < touisu\ ;
+函人 < kanjin\ ;
+盗塁 < tourui\ ;
+苦手 < nigate\ ;
+対顔 < taigan\ ;
+若手 < wakate\ ;
+冬場 < fuyuba\ ;
+催眠 < saimin\ ;
+優柔 < yuujuu\ ;
+小文字 < komoji\ ;
+芸林 < geirin\ ;
+相反 < souhan\ ;
+巨岩 < kyogan\ ;
+帯同 < taidou\ ;
+常勤 < joukin\ ;
+荘司 < shouji\ ;
+凍原 < tougen\ ;
+楽界 < gakkai\ ;
+荘厳 < sougon\ ;
+出世 < shusse\ ;
+凄味 < sugomi\ ;
+自習 < jishuu\ ;
+凡僧 < bonsou\ ;
+対面 < taimen\ ;
+番茶 < bancha\ ;
+異色 < ishoku\ ;
+円寂 < enjaku\ ;
+州崎 < susaki\ ;
+近傍 < kinbou\ ;
+入御 < nyuugo\ ;
+内宮 < naiguu\ ;
+市塵 < shijin\ ;
+践言 < sengen\ ;
+芳書 < housho\ ;
+用談 < youdan\ ;
+花木 < kaboku\ ;
+余所目 < yosome\ ;
+公平 < kouhei\ ;
+内孫 < naison\ ;
+保身 < hoshin\ ;
+発憤 < happun\ ;
+舌端 < zettan\ ;
+全店 < zenten\ ;
+対陣 < taijin\ ;
+例題 < reidai\ ;
+帯剣 < taiken\ ;
+帝命 < teimei\ ;
+軟泥 < nandei\ ;
+茅屋 < bouoku\ ;
+入庫 < nyuuko\ ;
+用言 < yougen\ ;
+発意 < hatsui\ ;
+入府 < nyuufu\ ;
+芸文 < geibun\ ;
+専門 < senmon\ ;
+帯刀 < taitou\ ;
+苦心 < kushin\ ;
+檀君 < dankun\ ;
+兼官 < kenkan\ ;
+尿路 < nyouro\ ;
+県会 < kenkai\ ;
+盤台 < bandai\ ;
+布地 < nunoji\ ;
+至純 < shijun\ ;
+草原 < sougen\ ;
+自縛 < jibaku\ ;
+梅酒 < umeshu\ ;
+元手 < motode\ ;
+下院議 < kaingi\ ;
+県令 < kenrei\ ;
+寝首 < nekubi\ ;
+生誕 < seitan\ ;
+軟水 < nansui\ ;
+近代 < kindai\ ;
+県人 < kenjin\ ;
+盆地 < bonchi\ ;
+孵化器 < fukaki\ ;
+軍港 < gunkou\ ;
+党弊 < touhei\ ;
+冷厳 < reigen\ ;
+臭素 < shuuso\ ;
+茄子 < nasubi\ ;
+盗品 < touhin\ ;
+舗石 < hoseki\ ;
+自給 < jikyuu\ ;
+返上 < henjou\ ;
+魚梯 < gyotei\ ;
+盛名 < seimei\ ;
+全島 < zentou\ ;
+赭顔 < shagan\ ;
+共寝 < tomone\ ;
+手真似 < temane\ ;
+小銭 < kozeni\ ;
+近世 < kinsei\ ;
+臨終 < rinjuu\ ;
+常例 < jourei\ ;
+全岸 < zengan\ ;
+巨大 < kyodai\ ;
+辛味 < karami\ ;
+内外 < naigai\ ;
+目先 < mesaki\ ;
+常住 < joujuu\ ;
+農兵 < nouhei\ ;
+傍目 < hatame\ ;
+展覧 < tenran\ ;
+常会 < joukai\ ;
+常任 < jounin\ ;
+俯角 < fukaku\ ;
+痴漢 < chikan\ ;
+軍法 < gunpou\ ;
+小金 < kogane\ ;
+冷剛 < reigou\ ;
+常人 < joujin\ ;
+魚板 < gyoban\ ;
+崩潰 < houkai\ ;
+不如意 < funyoi\ ;
+僧正 < soujou\ ;
+允恭 < inkyou\ ;
+軸木 < jikugi\ ;
+相伝 < souden\ ;
+帝冠 < teikan\ ;
+併音 < pin''in\ ;
+高目 < takame\ ;
+円域 < en''iki\ ;
+寒風 < kanpuu\ ;
+駅頭 < ekitou\ ;
+傾瀉 < keisha\ ;
+冷凍 < reitou\ ;
+軍民 < gunmin\ ;
+骨粉 < koppun\ ;
+病理 < byouri\ ;
+常世 < tokoyo\ ;
+膵臓 < suizou\ ;
+其奴 < soitsu\ ;
+充当 < juutou\ ;
+修補 < shuuho\ ;
+布告 < fukoku\ ;
+舎監 < shakan\ ;
+儒教 < jukyou\ ;
+俗議 < zokugi\ ;
+湯文字 < yumoji\ ;
+冷光 < reikou\ ;
+寝際 < negiwa\ ;
+的屋 < tekiya\ ;
+異機種 < ikishu\ ;
+益友 < ekiyuu\ ;
+内在 < naizai\ ;
+兵変 < heihen\ ;
+山葵 < wasabi\ ;
+偵知 < teichi\ ;
+疫癘 < ekirei\ ;
+盲人 < moujin\ ;
+皇宮 < kouguu\ ;
+能面 < noumen\ ;
+盛典 < seiten\ ;
+根雪 < neyuki\ ;
+茅場 < kayaba\ ;
+帰一 < kiitsu\ ;
+皇孫 < kouson\ ;
+侮辱 < bujoku\ ;
+番線 < bansen\ ;
+農会 < noukai\ ;
+俗語 < zokugo\ ;
+目今 < mokkon\ ;
+直下 < chokka\ ;
+山菜 < sansai\ ;
+転校 < tenkou\ ;
+俗話 < zokuwa\ ;
+疥癬 < kaisen\ ;
+苦学 < kugaku\ ;
+元帥 < gensui\ ;
+白寿 < hakuju\ ;
+冥利 < myouri\ ;
+発展 < hatten\ ;
+巡回 < junkai\ ;
+輪廻 < rin''ne\ ;
+典型 < tenkei\ ;
+山荘 < sansou\ ;
+公売 < koubai\ ;
+脱退 < dattai\ ;
+俗解 < zokkai\ ;
+背鰭 < sebire\ ;
+赤門 < akamon\ ;
+屍蝋 < shirou\ ;
+畝織 < uneori\ ;
+俗見 < zokken\ ;
+倉荷 < kurani\ ;
+芳情 < houjou\ ;
+首魁 < shukai\ ;
+生薑 < shouga\ ;
+兵団 < heidan\ ;
+対遇 < taiguu\ ;
+亜砒酸 < ahisan\ ;
+生蕃 < seiban\ ;
+免官 < menkan\ ;
+市内 < shinai\ ;
+軽挙 < keikyo\ ;
+良案 < ryouan\ ;
+容顔 < yougan\ ;
+円味 < marumi\ ;
+盛会 < seikai\ ;
+円周 < enshuu\ ;
+芸当 < geitou\ ;
+甘薯 < kansho\ ;
+内命 < naimei\ ;
+車検 < shaken\ ;
+芳志 < houshi\ ;
+小足 < koashi\ ;
+対辺 < taihen\ ;
+苗字 < myouji\ ;
+背骨 < sebone\ ;
+内含 < naigan\ ;
+馬革 < bakaku\ ;
+盟主 < meishu\ ;
+内合 < naigou\ ;
+巨口 < kyokou\ ;
+再勤 < saikin\ ;
+市債 < shisai\ ;
+岩穴 < iwaana\ ;
+元寇 < genkou\ ;
+余震 < yoshin\ ;
+冕冠 < benkan\ ;
+茶会 < chakai\ ;
+低頭 < teitou\ ;
+円卓 < entaku\ ;
+密閉 < mippei\ ;
+山背 < yamase\ ;
+様態 < youtai\ ;
+茶代 < chadai\ ;
+催涙 < sairui\ ;
+背馳 < haichi\ ;
+脱走 < dassou\ ;
+百夜 < momoyo\ ;
+苦境 < kukyou\ ;
+写像 < shazou\ ;
+実験 < jikken\ ;
+茶人 < chajin\ ;
+英国 < eikoku\ ;
+再刊 < saikan\ ;
+内勤 < naikin\ ;
+肺魚 < haigyo\ ;
+自白 < jihaku\ ;
+軍書 < gunsho\ ;
+傍点 < bouten\ ;
+便覧 < benran\ ;
+登壇 < toudan\ ;
+検眼 < kengan\ ;
+校門 < koumon\ ;
+首題 < shudai\ ;
+先妻 < sensai\ ;
+骨相 < kossou\ ;
+阿修羅 < ashura\ ;
+甘草 < kanzou\ ;
+甘茶 < amacha\ ;
+登場 < toujou\ ;
+寝酒 < nezake\ ;
+御雑煮 < ozouni\ ;
+兄妹 < keimai\ ;
+入営 < nyuuei\ ;
+兼勤 < kenkin\ ;
+軒数 < kensuu\ ;
+先天 < senten\ ;
+円内 < en''nai\ ;
+内内 < nainai\ ;
+軍旅 < gunryo\ ;
+内典 < naiten\ ;
+軽快 < keikai\ ;
+全員 < zen''in\ ;
+臨界 < rinkai\ ;
+高瀬 < takase\ ;
+全品 < zenpin\ ;
+検痰 < kentan\ ;
+入唐 < nittou\ ;
+小話 < shouwa\ ;
+背革 < segawa\ ;
+巨億 < kyooku\ ;
+背面 < haimen\ ;
+債権 < saiken\ ;
+輪姦 < rinkan\ ;
+疑獄 < gigoku\ ;
+皮膚科 < hifuka\ ;
+小言 < kogoto\ ;
+検番 < kenban\ ;
+充填 < juuten\ ;
+層群 < sougun\ ;
+花屋 < hanaya\ ;
+軟投 < nantou\ ;
+転戦 < tensen\ ;
+偶然 < guuzen\ ;
+生育 < seiiku\ ;
+岩盤 < ganban\ ;
+共助 < kyoujo\ ;
+較差 < kakusa\ ;
+兵刃 < heijin\ ;
+苗圃 < byouho\ ;
+再任 < sainin\ ;
+余録 < yoroku\ ;
+病気 < byouki\ ;
+駅逓 < ekitei\ ;
+実際 < jissai\ ;
+生者 < shouja\ ;
+由緒 < yuisho\ ;
+俳聖 < haisei\ ;
+山系 < sankei\ ;
+男系 < dankei\ ;
+対論 < tairon\ ;
+寮費 < ryouhi\ ;
+身柄 < migara\ ;
+倫社 < rinsha\ ;
+巨体 < kyotai\ ;
+内住 < naijuu\ ;
+皇后 < kougou\ ;
+小袖 < kosode\ ;
+対語 < tsuigo\ ;
+能辯 < nouben\ ;
+苦味 < nigami\ ;
+魅惑 < miwaku\ ;
+再三 < saisan\ ;
+巨人 < kyojin\ ;
+将補 < shouho\ ;
+芸大 < geidai\ ;
+舷梯 < gentei\ ;
+脱衣 < datsui\ ;
+円丘 < enkyuu\ ;
+芝居 < shibai\ ;
+軟性 < nansei\ ;
+皆勤 < kaikin\ ;
+巨万 < kyoman\ ;
+査閲 < saetsu\ ;
+寸言 < sungen\ ;
+密送 < missou\ ;
+用紙 < youshi\ ;
+体重 < taijuu\ ;
+棄約 < kiyaku\ ;
+侍読 < jidoku\ ;
+骨牌 < karuta\ ;
+骨片 < koppen\ ;
+儒学 < jugaku\ ;
+自然 < shizen\ ;
+赤赤 < akaaka\ ;
+色悪 < iroaku\ ;
+苦力 < kuurii\ ;
+身方 < mikata\ ;
+楷書 < kaisho\ ;
+宝鑑 < houkan\ ;
+弟小父 < otooji\ ;
+信者 < shinja\ ;
+膿瘍 < nouyou\ ;
+概数 < gaisuu\ ;
+芸域 < geiiki\ ;
+小虎 < kodora\ ;
+色恋 < irokoi\ ;
+肺門 < haimon\ ;
+畢生 < hissei\ ;
+生紙 < kigami\ ;
+先君 < senkun\ ;
+赤貝 < akagai\ ;
+例解 < reikai\ ;
+皆兵 < kaihei\ ;
+軍情 < gunjou\ ;
+高歯 < takaba\ ;
+兵乱 < heiran\ ;
+何遍 < nanben\ ;
+駄賃 < dachin\ ;
+尾翼 < biyoku\ ;
+髄液 < zuieki\ ;
+封蝋 < fuurou\ ;
+党内 < tounai\ ;
+公住 < koujuu\ ;
+生粋 < kissui\ ;
+俗耳 < zokuji\ ;
+宴遊 < en''yuu\ ;
+元号 < gengou\ ;
+骨炭 < kottan\ ;
+側泳 < sobaei\ ;
+英俊 < eishun\ ;
+脱藩 < dappan\ ;
+儀宸 < gishin\ ;
+係船 < keisen\ ;
+柔順 < juujun\ ;
+番犬 < banken\ ;
+馬身 < bashin\ ;
+痙攣 < keiren\ ;
+便船 < binsen\ ;
+腎臓 < jinzou\ ;
+馳走 < chisou\ ;
+主治医 < shujii\ ;
+腋臭 < wakiga\ ;
+不誠意 < fuseii\ ;
+停滞 < teitai\ ;
+英京 < eikyou\ ;
+寝言 < negoto\ ;
+偉烈 < iretsu\ ;
+魯国 < rokoku\ ;
+充分 < juubun\ ;
+皆伝 < kaiden\ ;
+痴情 < chijou\ ;
+崇敬 < suukei\ ;
+御詠歌 < goeika\ ;
+転寝 < gorone\ ;
+腐肉 < funiku\ ;
+輸入 < yunyuu\ ;
+先兵 < senpei\ ;
+軍帽 < gunbou\ ;
+俗縁 < zokuen\ ;
+腹筋 < fukkin\ ;
+自涜 < jitoku\ ;
+膚着 < hadagi\ ;
+容赦 < yousha\ ;
+尿素 < nyouso\ ;
+栄進 < eishin\ ;
+楓林 < fuurin\ ;
+余賊 < yozoku\ ;
+検温 < ken''on\ ;
+寓言 < guugen\ ;
+首輪 < kubiwa\ ;
+芸名 < geimei\ ;
+健気 < kenage\ ;
+栄辱 < eijoku\ ;
+胃下垂 < ikasui\ ;
+赤裸 < sekira\ ;
+小船 < kobune\ ;
+伍長 < gochou\ ;
+屈筋 < kukkin\ ;
+容貌 < youbou\ ;
+発会 < hakkai\ ;
+自沈 < jichin\ ;
+痛打 < tsuuda\ ;
+家賃 < yachin\ ;
+登仙 < tousen\ ;
+芳名 < houmei\ ;
+学院 < gakuin\ ;
+刷毛目 < hakeme\ ;
+魔境 < makyou\ ;
+甲烏賊 < kouika\ ;
+舌根 < zekkon\ ;
+崩御 < hougyo\ ;
+饅頭 < manjuu\ ;
+作譜 < sakufu\ ;
+先便 < senbin\ ;
+小膝 < kohiza\ ;
+岬湾 < kouwan\ ;
+小腹 < kobara\ ;
+元値 < motone\ ;
+骨法 < koppou\ ;
+良家 < ryouke\ ;
+光体 < koutai\ ;
+官辺 < kanpen\ ;
+実車 < jissha\ ;
+密計 < mikkei\ ;
+亜拉毘亜 < arabia\ ;
+介鱗 < kairin\ ;
+胸裏 < kyouri\ ;
+小脇 < kowaki\ ;
+伊達着 < dategi\ ;
+崇拝 < suuhai\ ;
+概念 < gainen\ ;
+用益 < youeki\ ;
+屯田 < tonden\ ;
+膾炙 < kaisha\ ;
+先代 < sendai\ ;
+小股 < komata\ ;
+転変 < tenpen\ ;
+転売 < tenbai\ ;
+御見舞 < omimai\ ;
+実践 < jissen\ ;
+官軍 < kangun\ ;
+背走 < haisou\ ;
+身形 < minari\ ;
+校訓 < koukun\ ;
+小耳 < komimi\ ;
+聴音 < chouon\ ;
+容認 < younin\ ;
+脱脂 < dasshi\ ;
+会釈 < eshaku\ ;
+孔雀 < kujaku\ ;
+小者 < komono\ ;
+代願 < daigan\ ;
+養鶏 < youkei\ ;
+背文字 < semoji\ ;
+係累 < keirui\ ;
+肝銘 < kanmei\ ;
+余角 < yokaku\ ;
+脱肛 < dakkou\ ;
+寝藁 < newara\ ;
+優曇華 < udonge\ ;
+偶有 < guuyuu\ ;
+密行 < mikkou\ ;
+元三 < ganzan\ ;
+体言 < taigen\ ;
+身幅 < mihaba\ ;
+仲間 < nakama\ ;
+伴走 < bansou\ ;
+転地 < tenchi\ ;
+良夜 < ryouya\ ;
+体要 < taiyou\ ;
+伝送 < densou\ ;
+贋造 < ganzou\ ;
+御襁褓 < omutsu\ ;
+臨検 < rinken\ ;
+対聯 < tairen\ ;
+首謀 < shubou\ ;
+僕婢 < bokuhi\ ;
+棒状 < boujou\ ;
+他領 < taryou\ ;
+寸胴 < zundou\ ;
+人魚 < ningyo\ ;
+体裁 < teisai\ ;
+偶数 < guusuu\ ;
+養魚 < yougyo\ ;
+導線 < dousen\ ;
+完走 < kansou\ ;
+馬蝿 < umabae\ ;
+令閨 < reikei\ ;
+対置 < taichi\ ;
+駐英 < chuuei\ ;
+西班牙 < supein\ ;
+肩身 < katami\ ;
+今風 < imafuu\ ;
+這々 < houhou\ ;
+芸人 < geinin\ ;
+柔道 < juudou\ ;
+脱線 < dassen\ ;
+根菜 < konsai\ ;
+胡蝶 < kochou\ ;
+小糠 < konuka\ ;
+検案 < ken''an\ ;
+定論 < teiron\ ;
+楽屋 < gakuya\ ;
+病後 < byougo\ ;
+膿汁 < noujuu\ ;
+傲岸 < gougan\ ;
+小米 < kogome\ ;
+学部 < gakubu\ ;
+臨書 < rinsho\ ;
+査読 < sadoku\ ;
+腫瘍 < shuyou\ ;
+楽寝 < rakune\ ;
+封緘 < fuukan\ ;
+根茎 < konkei\ ;
+膨満 < bouman\ ;
+修理 < shuuri\ ;
+脱糞 < dappun\ ;
+臘梅 < roubai\ ;
+査証 < sashou\ ;
+倒潰 < toukai\ ;
+舌戦 < zessen\ ;
+高慢 < kouman\ ;
+柔軟 < juunan\ ;
+小箱 < kobako\ ;
+尽瘁 < jinsui\ ;
+尊簡 < sonkan\ ;
+導管 < douken\ ;
+定見 < teiken\ ;
+瓦礫 < gareki\ ;
+実装 < jissou\ ;
+極寒 < gokkan\ ;
+駅舎 < ekisha\ ;
+来鮮 < raisen\ ;
+人類 < jinrui\ ;
+亡魂 < boukon\ ;
+贈賄 < zouwai\ ;
+使聘 < shihei\ ;
+人頭 < jintou\ ;
+走者 < sousha\ ;
+実行 < jikkou\ ;
+軍営 < gun''ei\ ;
+軽便 < keiben\ ;
+使者 < shisha\ ;
+偶成 < guusei\ ;
+転勤 < tenkin\ ;
+俗画 < zokuga\ ;
+対米 < taibei\ ;
+距爪 < kyosou\ ;
+人面 < jinmen\ ;
+老齢 < rourei\ ;
+良吏 < ryouri\ ;
+松露 < shouro\ ;
+封筒 < fuutou\ ;
+飛鳥 < hichou\ ;
+脚絆 < kyahan\ ;
+偶感 < guukan\ ;
+貝類 < kairui\ ;
+付録 < furoku\ ;
+偏旁 < henbou\ ;
+代金 < daikin\ ;
+偏斜 < hensha\ ;
+寒肥 < kangoe\ ;
+転写 < tensha\ ;
+会談 < kaidan\ ;
+舎弟 < shatei\ ;
+馴致 < junchi\ ;
+魚介 < gyokai\ ;
+傘屋 < kasaya\ ;
+伝言 < dengon\ ;
+車台 < shadai\ ;
+不見目 < mijime\ ;
+対空 < taikuu\ ;
+会計 < kaikei\ ;
+作興 < sakkou\ ;
+腸炎 < chouen\ ;
+人間 < ningen\ ;
+学費 < gakuhi\ ;
+東面 < toumen\ ;
+小破 < shouha\ ;
+飛魚 < tobiuo\ ;
+山水 < sansui\ ;
+余興 < yokyou\ ;
+山気 < yamake\ ;
+小石 < koishi\ ;
+蕎麦粉 < sobako\ ;
+軍勢 < gunzei\ ;
+余臭 < yoshuu\ ;
+会見 < kaiken\ ;
+封禅 < houzen\ ;
+贅言 < zeigen\ ;
+現金 < genkin\ ;
+居然 < kyozen\ ;
+億万 < okuman\ ;
+検挙 < kenkyo\ ;
+転倒 < tentou\ ;
+町歩 < choubu\ ;
+僧兵 < souhei\ ;
+疑惑 < giwaku\ ;
+代返 < daihen\ ;
+楽土 < rakudo\ ;
+臨戦 < rinsen\ ;
+宝蔵 < houzou\ ;
+楽園 < rakuen\ ;
+林野 < rin''ya\ ;
+京阪 < keihan\ ;
+赤線 < akasen\ ;
+他郷 < takyou\ ;
+軍刀 < guntou\ ;
+痴呆 < chihou\ ;
+条項 < joukou\ ;
+小目 < komoku\ ;
+栄落 < eiraku\ ;
+転住 < tenjuu\ ;
+用法 < youhou\ ;
+臆断 < okudan\ ;
+躍如 < yakujo\ ;
+小皿 < kozara\ ;
+小皺 < kojiwa\ ;
+亡霊 < bourei\ ;
+梭子魚 < kamasu\ ;
+船型 < senkei\ ;
+赤経 < sekkei\ ;
+佞者 < neisha\ ;
+馬肉 < baniku\ ;
+偕成 < kaisei\ ;
+軍兵 < gunpei\ ;
+来電 < raiden\ ;
+東門 < toumon\ ;
+用水 < yousui\ ;
+車内 < shanai\ ;
+馭者 < gyosha\ ;
+不随意 < fuzuii\ ;
+魅了 < miryou\ ;
+二食 < nijiki\ ;
+脂粉 < shifun\ ;
+至当 < shitou\ ;
+体育 < taiiku\ ;
+履歴 < rireki\ ;
+僧侶 < souryo\ ;
+林道 < rindou\ ;
+値札 < nefuda\ ;
+紫陽花 < ajisai\ ;
+低能 < teinou\ ;
+来阪 < raihan\ ;
+例祭 < reisai\ ;
+貴酬 < kishuu\ ;
+胚胎 < haitai\ ;
+僧伽 < sougya\ ;
+桧皮 < hiwada\ ;
+子豚 < kobuta\ ;
+貯金 < chokin\ ;
+代走 < daisou\ ;
+肺葉 < haiyou\ ;
+僭上 < senjou\ ;
+臨御 < ringyo\ ;
+貧鉱 < hinkou\ ;
+偏愛 < hen''ai\ ;
+偽学 < gigaku\ ;
+傑士 < kesshi\ ;
+野良着 < noragi\ ;
+首脳 < shunou\ ;
+生残 < seizan\ ;
+板金 < bankin\ ;
+棟木 < munagi\ ;
+番所 < bansho\ ;
+于蘭盆 < urabon\ ;
+路標 < rohyou\ ;
+車体 < shatai\ ;
+船員 < sen''in\ ;
+字訳 < jiyaku\ ;
+苦味素 < kumiso\ ;
+偏性 < hensei\ ;
+棍棒 < konbou\ ;
+停年 < teinen\ ;
+傘地 < kasaji\ ;
+官舎 < kansha\ ;
+騒然 < souzen\ ;
+山林 < sanrin\ ;
+極右 < kyokuu\ ;
+木魂 < kodama\ ;
+腎炎 < jin''en\ ;
+山村 < sanson\ ;
+人選 < jinsen\ ;
+小猫 < koneko\ ;
+仮託 < kataku\ ;
+棒杭 < bougui\ ;
+人道 < jindou\ ;
+馬糧 < baryou\ ;
+資財 < shizai\ ;
+馬糞 < maguso\ ;
+僅僅 < kinkin\ ;
+極印 < gokuin\ ;
+代講 < daikou\ ;
+会葬 < kaisou\ ;
+車上 < shajou\ ;
+至尊 < shison\ ;
+舅姑 < kyuuko\ ;
+肺臓 < haizou\ ;
+身内 < miuchi\ ;
+身共 < midomo\ ;
+至宝 < shihou\ ;
+体系 < taikei\ ;
+偏平 < henpei\ ;
+察知 < satchi\ ;
+末香 < makkou\ ;
+木馬 < mokuba\ ;
+側女 < sobame\ ;
+本館 < honkan\ ;
+代言 < daigen\ ;
+肺胞 < haihou\ ;
+人車 < jinsha\ ;
+朱顔 < shugan\ ;
+用材 < youzai\ ;
+足湯 < ashiyu\ ;
+傾倒 < keitou\ ;
+業務 < gyoumu\ ;
+倍数 < baisuu\ ;
+老雄 < rouyuu\ ;
+船出 < funade\ ;
+自宅 < jitaku\ ;
+脇目 < wakime\ ;
+本願 < hongan\ ;
+本題 < hondai\ ;
+乱雲 < ran''un\ ;
+疾呼 < shikko\ ;
+船具 < funagu\ ;
+家筋 < iesuji\ ;
+本音 < hon''ne\ ;
+付託 < futaku\ ;
+生来 < seirai\ ;
+倦憊 < kenpai\ ;
+枢要 < suuyou\ ;
+颱風 < taifuu\ ;
+寝癖 < neguse\ ;
+無事故 < mujiko\ ;
+臍帯 < seitai\ ;
+検定 < kentei\ ;
+来邸 < raitei\ ;
+腹案 < fukuan\ ;
+生木 < namaki\ ;
+余程 < yohodo\ ;
+傲倨 < goukyo\ ;
+骨子 < kosshi\ ;
+来遊 < raiyuu\ ;
+東軍 < tougun\ ;
+展望 < tenbou\ ;
+耳輪 < mimiwa\ ;
+小潮 < koshio\ ;
+梶木 < kajiki\ ;
+貧賤 < hinsen\ ;
+来迎 < raigou\ ;
+有髪 < uhatsu\ ;
+赤痢 < sekiri\ ;
+便法 < benpou\ ;
+低空 < teikuu\ ;
+伝聞 < denbun\ ;
+本隊 < hontai\ ;
+岩層 < gansou\ ;
+朝顔 < asagao\ ;
+身丈 < mitake\ ;
+本陣 < honjin\ ;
+本院 < hon''in\ ;
+尨毛 < mukuge\ ;
+定紋 < joumon\ ;
+養豚 < youton\ ;
+付表 < fuhyou\ ;
+朱門 < shumon\ ;
+併用 < heiyou\ ;
+木陰 < kokage\ ;
+債主 < saishu\ ;
+来車 < raisha\ ;
+背筋 < haikin\ ;
+山手 < yamate\ ;
+腋毛 < wakige\ ;
+便殿 < benden\ ;
+肝胆 < kantan\ ;
+朝露 < chouro\ ;
+屯所 < tonsho\ ;
+賀表 < gahyou\ ;
+宝算 < housan\ ;
+一昨日 < ototoi\ ;
+風霜 < fuusou\ ;
+起爆 < kibaku\ ;
+興味 < kyoumi\ ;
+肉芽 < nikuga\ ;
+孤舟 < koshuu\ ;
+二進 < nishin\ ;
+村道 < sondou\ ;
+偏好 < henkou\ ;
+二通 < nitsuu\ ;
+値幅 < nehaba\ ;
+風防 < fuubou\ ;
+枯葉 < kareha\ ;
+家督 < katoku\ ;
+偶吟 < guukin\ ;
+伝線 < densen\ ;
+自国 < jikoku\ ;
+臨在 < rinzai\ ;
+余白 < yohaku\ ;
+宿痾 < shukua\ ;
+密生 < missei\ ;
+寄留 < kiryuu\ ;
+来賓 < raihin\ ;
+伝統 < dentou\ ;
+画心 < gashin\ ;
+導水 < dousui\ ;
+来貢 < raikou\ ;
+脱法 < dappou\ ;
+値嵩 < negasa\ ;
+出来値 < dekine\ ;
+豪邸 < goutei\ ;
+余病 < yobyou\ ;
+老酒 < roushu\ ;
+低目 < hikume\ ;
+作画 < sakuga\ ;
+獣類 < juurui\ ;
+豪邁 < goumai\ ;
+射法 < shahou\ ;
+駄物 < damono\ ;
+脱水 < dassui\ ;
+飛躍 < hiyaku\ ;
+乱酔 < ransui\ ;
+乱酒 < ranshu\ ;
+舎兄 < shakei\ ;
+仰臥 < gyouga\ ;
+番外 < bangai\ ;
+岩塩 < gan''en\ ;
+何番 < nanban\ ;
+書風 < shofuu\ ;
+脳死 < noushi\ ;
+二足 < nisoku\ ;
+羽風 < hakaze\ ;
+豪農 < gounou\ ;
+画幅 < gafuku\ ;
+書類 < shorui\ ;
+生憎 < ainiku\ ;
+中飛 < chuuhi\ ;
+谷間 < tanima\ ;
+東西 < touzai\ ;
+臭味 < shuumi\ ;
+琴線 < kinsen\ ;
+胡瓜 < kyuuri\ ;
+飛越 < hietsu\ ;
+来談 < raidan\ ;
+倉廩 < sourin\ ;
+腐朽 < fukyuu\ ;
+安穏 < an''non\ ;
+値安 < neyasu\ ;
+代艦 < daikan\ ;
+寸法 < sunpou\ ;
+胎盤 < taiban\ ;
+老農 < rounou\ ;
+乱造 < ranzou\ ;
+傍人 < boujin\ ;
+屈指 < kusshi\ ;
+育種 < ikushu\ ;
+梅林 < bairin\ ;
+木釘 < kikugi\ ;
+男工 < dankou\ ;
+豼貅 < hikyuu\ ;
+月間 < gekkan\ ;
+仏葬 < bussou\ ;
+借家 < shakka\ ;
+書面 < shomen\ ;
+来訪 < raihou\ ;
+中音 < chuuon\ ;
+贈答 < zoutou\ ;
+老輩 < rouhai\ ;
+聾者 < rousha\ ;
+桑海 < soukai\ ;
+小楯 < kodate\ ;
+柱礎 < chuuso\ ;
+聚落 < juraku\ ;
+検品 < kenpin\ ;
+偶像 < guuzou\ ;
+存置 < sonchi\ ;
+本邸 < hontei\ ;
+本邦 < honpou\ ;
+来観 < raikan\ ;
+養蚕 < yousan\ ;
+本選 < honsen\ ;
+頽齢 < tairei\ ;
+環海 < kankai\ ;
+木部 < mokubu\ ;
+本道 < hondou\ ;
+居所 < kyosho\ ;
+路床 < roshou\ ;
+偽作 < gisaku\ ;
+乱軍 < rangun\ ;
+賞美 < shoubi\ ;
+貯蔵 < chozou\ ;
+倡婦 < shoufu\ ;
+朝野 < chouya\ ;
+胚珠 < haishu\ ;
+未進 < mishin\ ;
+休符 < kyuufu\ ;
+風采 < fuusai\ ;
+産廃 < sanpai\ ;
+令聞 < reibun\ ;
+自力 < jiriki\ ;
+係数 < keisuu\ ;
+中陰 < chuuin\ ;
+検印 < ken''in\ ;
+少林 < shorin\ ;
+健全 < kenzen\ ;
+寮母 < ryoubo\ ;
+画学 < gagaku\ ;
+互角 < gokaku\ ;
+質素 < shisso\ ;
+根源 < kongen\ ;
+柳眉 < ryuubi\ ;
+争論 < souron\ ;
+走法 < souhou\ ;
+上騰 < joutou\ ;
+山家 < yamaga\ ;
+実生 < mishou\ ;
+末輩 < mappai\ ;
+属差 < zokusa\ ;
+不馴 < funare\ ;
+椿事 < chinji\ ;
+首班 < shuhan\ ;
+定番 < teiban\ ;
+偶人 < guujin\ ;
+男子 < danshi\ ;
+代署 < daisho\ ;
+代置 < daichi\ ;
+伊勢丹 < isetan\ ;
+肺癌 < haigan\ ;
+饌米 < senmai\ ;
+趣旨 < shushi\ ;
+今般 < konpan\ ;
+尊来 < sonrai\ ;
+梯形 < teikei\ ;
+二見 < futami\ ;
+自儘 < jimama\ ;
+果肉 < kaniku\ ;
+検分 < kenbun\ ;
+両院 < ryouin\ ;
+甲子 < kasshi\ ;
+一驚 < ikkyou\ ;
+五行 < gogyou\ ;
+至便 < shiben\ ;
+尊書 < sonsho\ ;
+小昼 < kohiru\ ;
+曝露 < bakuro\ ;
+小春 < koharu\ ;
+余瀝 < yoreki\ ;
+献饌 < kensen\ ;
+信徒 < shinto\ ;
+番号 < bangou\ ;
+一駄 < ichida\ ;
+類題 < ruidai\ ;
+曜霊 < yourei\ ;
+根治 < konchi\ ;
+偉力 < iryoku\ ;
+寡欲 < kayoku\ ;
+有配 < yuuhai\ ;
+仕置 < shioki\ ;
+風車 < fuusha\ ;
+暗黙 < anmoku\ ;
+山女 < yamame\ ;
+暗黒 < ankoku\ ;
+封書 < fuusho\ ;
+仏者 < bussha\ ;
+棄子 < sutego\ ;
+倹吝 < kenrin\ ;
+自供 < jikyou\ ;
+三韓 < sankan\ ;
+予表 < yohyou\ ;
+万頃 < bankei\ ;
+一飛 < ichihi\ ;
+根毛 < konmou\ ;
+余滴 < yoteki\ ;
+倍大 < baidai\ ;
+自作 < jisaku\ ;
+育生 < ikusei\ ;
+画境 < gakyou\ ;
+木賊 < tokusa\ ;
+尊敬 < sonkei\ ;
+上面 < joumen\ ;
+居常 < kyojou\ ;
+代納 < dainou\ ;
+寒気 < samuke\ ;
+三面 < sanmen\ ;
+尊攘 < sonjou\ ;
+停会 < teikai\ ;
+倍増 < baizou\ ;
+検便 < kenben\ ;
+生存 < seizon\ ;
+屑屋 < kuzuya\ ;
+願面 < ganmen\ ;
+風趣 < fuushu\ ;
+胸毛 < munage\ ;
+山場 < yamaba\ ;
+屏居 < heikyo\ ;
+万雷 < banrai\ ;
+三階 < sangai\ ;
+寝様 < nezama\ ;
+此処等 < kokora\ ;
+番兵 < banpei\ ;
+朝賀 < chouga\ ;
+対数 < taisuu\ ;
+審査 < shinsa\ ;
+寝業 < newaza\ ;
+露西亜 < roshia\ ;
+本論 < honron\ ;
+借問 < shamon\ ;
+曾遊 < souyuu\ ;
+琢磨 < takuma\ ;
+腹子 < harako\ ;
+桟敷 < sajiki\ ;
+対支 < taishi\ ;
+養育 < youiku\ ;
+伯父 < hakufu\ ;
+本誌 < honshi\ ;
+子種 < kodane\ ;
+小指 < koyubi\ ;
+未読 < midoku\ ;
+目医者 < meisha\ ;
+一隻 < isseki\ ;
+寸断 < sundan\ ;
+老衰 < rousui\ ;
+腐心 < fushin\ ;
+暴風 < boufuu\ ;
+余沢 < yotaku\ ;
+定点 < teiten\ ;
+書道 < shodou\ ;
+中部 < chuubu\ ;
+偏人 < henjin\ ;
+倦厭 < ken''en\ ;
+学監 < gakkan\ ;
+養老 < yourou\ ;
+産声 < ubugoe\ ;
+飴色 < ameiro\ ;
+田地 < denchi\ ;
+朝議 < chougi\ ;
+田園 < den''en\ ;
+香港 < honkon\ ;
+桂林 < keirin\ ;
+一間 < hitoma\ ;
+存知 < zonchi\ ;
+中途 < chuuto\ ;
+琺瑯 < hourou\ ;
+頻頻 < hinpin\ ;
+尻尾 < shippo\ ;
+甚大 < jindai\ ;
+例数 < reisuu\ ;
+二葉 < futaba\ ;
+飼育 < shiiku\ ;
+俳壇 < haidan\ ;
+屯営 < ton''ei\ ;
+来臨 < rairin\ ;
+梵天 < bonten\ ;
+如何様 < ikayou\ ;
+寒梅 < kanbai\ ;
+根柢 < kontei\ ;
+何歳 < nansai\ ;
+栗毛 < kurige\ ;
+尊慮 < sonryo\ ;
+住民 < juumin\ ;
+少恩 < shouon\ ;
+産地 < sanchi\ ;
+企画 < kikaku\ ;
+甘塩 < amajio\ ;
+赤本 < akahon\ ;
+風解 < fuukai\ ;
+併有 < heiyuu\ ;
+屋外 < okugai\ ;
+馬橇 < basori\ ;
+中身 < nakami\ ;
+理神 < rishin\ ;
+根本 < nemoto\ ;
+人絹 < jinken\ ;
+主賓 < shuhin\ ;
+生地 < seichi\ ;
+風見 < kazami\ ;
+他称 < tashou\ ;
+香水 < kousui\ ;
+寒村 < kanson\ ;
+杉菜 < sugina\ ;
+留保 < ryuuho\ ;
+能書 < nousho\ ;
+作業 < sagyou\ ;
+倨傲 < kyogou\ ;
+根暗 < nekura\ ;
+跡地 < atochi\ ;
+人糞 < jinpun\ ;
+学理 < gakuri\ ;
+余業 < yogyou\ ;
+小形 < kogata\ ;
+月謝 < gessha\ ;
+密栓 < missen\ ;
+寒暖 < kandan\ ;
+風袋 < fuutai\ ;
+三重 < sanjuu\ ;
+財経 < zaikei\ ;
+存生 < zonjou\ ;
+万金 < mankin\ ;
+尊影 < son''ei\ ;
+根方 < nekata\ ;
+用品 < youhin\ ;
+仮病 < kebyou\ ;
+上酒 < joushu\ ;
+宗派 < shuuha\ ;
+定法 < jouhou\ ;
+家業 < kagyou\ ;
+胡椒 < koshou\ ;
+胆汁 < tanjuu\ ;
+琥珀 < kohaku\ ;
+能文 < noubun\ ;
+小幅 < kohaba\ ;
+孤独 < kodoku\ ;
+産品 < sanpin\ ;
+不適 < futeki\ ;
+密書 < missho\ ;
+股火 < matabi\ ;
+美醜 < bishuu\ ;
+一里 < ichiri\ ;
+寵愛 < chouai\ ;
+宝殿 < houden\ ;
+小差 < shousa\ ;
+珠算 < shuzan\ ;
+不通 < futsuu\ ;
+脳幹 < noukan\ ;
+供応 < kyouou\ ;
+玉藻 < tamamo\ ;
+肝炎 < kan''en\ ;
+三選 < sansen\ ;
+尋常 < jinjou\ ;
+修営 < shuuei\ ;
+胡桃 < kurumi\ ;
+万邦 < banpou\ ;
+老荘 < rousou\ ;
+官民 < kanmin\ ;
+破魔矢 < hamaya\ ;
+属吏 < zokuri\ ;
+枡目 < masume\ ;
+丁酉 < teiyuu\ ;
+越後 < echigo\ ;
+尚尚 < naonao\ ;
+三連 < sanren\ ;
+主計 < shukei\ ;
+校本 < kouhon\ ;
+暮鐘 < boshou\ ;
+封建 < houken\ ;
+倒像 < touzou\ ;
+羅針 < rashin\ ;
+梵唄 < bonbai\ ;
+上辺 < jouhen\ ;
+一郭 < ikkaku\ ;
+一部 < ichibu\ ;
+何枚 < nanmai\ ;
+寸志 < sunshi\ ;
+佞智 < neichi\ ;
+主観 < shukan\ ;
+家柄 < iegara\ ;
+小島 < kojima\ ;
+本葬 < honsou\ ;
+産卵 < sanran\ ;
+人種 < jinshu\ ;
+完治 < kanchi\ ;
+何条 < nanjou\ ;
+代用 < daiyou\ ;
+相部屋 < aibeya\ ;
+伯母 < hakubo\ ;
+俳名 < haimei\ ;
+孤児院 < kojiin\ ;
+義賊 < gizoku\ ;
+小山 < koyama\ ;
+尊崇 < sonsuu\ ;
+俳友 < haiyuu\ ;
+一週 < isshuu\ ;
+休演 < kyuuen\ ;
+一通 < ittsuu\ ;
+脇戸 < wakido\ ;
+尿器 < nyouki\ ;
+三軍 < sangun\ ;
+狭霧 < sagiri\ ;
+根拠 < konkyo\ ;
+井綱 < idzuna\ ;
+今日日 < kyoubi\ ;
+万軍 < bangun\ ;
+東端 < toutan\ ;
+本草 < honzou\ ;
+費目 < himoku\ ;
+仙界 < senkai\ ;
+産前 < sanzen\ ;
+玉菜 < tamana\ ;
+末茶 < matcha\ ;
+飯米 < hanmai\ ;
+順風 < junpuu\ ;
+朱色 < shuiro\ ;
+伝法 < denpou\ ;
+画伯 < gahaku\ ;
+狭隘 < kyouai\ ;
+獣行 < juukou\ ;
+不足 < fusoku\ ;
+資産 < shisan\ ;
+嫁菜 < yomena\ ;
+五経 < gokyou\ ;
+駅手 < ekishu\ ;
+生前 < seizen\ ;
+下足 < gesoku\ ;
+何方 < donata\ ;
+豚舎 < tonsha\ ;
+足場 < ashiba\ ;
+順順 < junjun\ ;
+荼枳尼 < dakini\ ;
+一身 < isshin\ ;
+肥沃 < hiyoku\ ;
+梱包 < konpou\ ;
+林産 < rinsan\ ;
+人知 < jinchi\ ;
+罰金 < bakkin\ ;
+令状 < reijou\ ;
+例年 < reinen\ ;
+狭間 < hazama\ ;
+脛巾 < habaki\ ;
+履修 < rishuu\ ;
+膝下 < shikka\ ;
+二級 < nikyuu\ ;
+海老錠 < ebijou\ ;
+本膳 < honzen\ ;
+一路 < ichiro\ ;
+脆性 < zeisei\ ;
+体操 < taisou\ ;
+使役 < shieki\ ;
+晩餐 < bansan\ ;
+肝油 < kan''yu\ ;
+群論 < gunron\ ;
+用便 < youben\ ;
+今生 < konjou\ ;
+少女 < shoujo\ ;
+人相 < ninsou\ ;
+予約 < yoyaku\ ;
+人目 < hitome\ ;
+甘党 < amatou\ ;
+貧相 < hinsou\ ;
+背景 < haikei\ ;
+駒座 < komaza\ ;
+安楽 < anraku\ ;
+世評 < sehyou\ ;
+班田 < handen\ ;
+有蓋 < yuugai\ ;
+用件 < youken\ ;
+乗船 < jousen\ ;
+実景 < jikkei\ ;
+屋内 < okunai\ ;
+学派 < gakuha\ ;
+風船 < fuusen\ ;
+柔毛 < juumou\ ;
+現状 < genjou\ ;
+音響 < onkyou\ ;
+木肌 < kihada\ ;
+尊大 < sondai\ ;
+脳天 < nouten\ ;
+媚薬 < biyaku\ ;
+風致 < fuuchi\ ;
+寝床 < nedoko\ ;
+世襲 < seshuu\ ;
+老練 < rouren\ ;
+不詳 < fushou\ ;
+実施 < jisshi\ ;
+万謝 < bansha\ ;
+三論 < sanron\ ;
+俗務 < zokumu\ ;
+駅弁 < ekiben\ ;
+本署 < honsho\ ;
+寝巻 < nemaki\ ;
+実数 < jissuu\ ;
+人生 < jinsei\ ;
+守株 < shushu\ ;
+蕎麦屋 < sobaya\ ;
+争端 < soutan\ ;
+一議 < ichigi\ ;
+伴星 < bansei\ ;
+飛竜 < hiryuu\ ;
+根幹 < konkan\ ;
+赤帽 < akabou\ ;
+養生 < youjou\ ;
+暴走 < bousou\ ;
+上計 < joukei\ ;
+宿意 < shukui\ ;
+完本 < kanpon\ ;
+耳目 < jimoku\ ;
+佞悪 < neiaku\ ;
+俯伏 < fufuku\ ;
+騙取 < henshu\ ;
+俯仰 < fugyou\ ;
+上覧 < jouran\ ;
+万言 < mangen\ ;
+対外 < taigai\ ;
+住所 < juusho\ ;
+財界 < zaikai\ ;
+風聞 < fuubun\ ;
+上覆 < uwaooi\ ;
+容態 < youdai\ ;
+財産 < zaisan\ ;
+雌捻子 < meneji\ ;
+両虎 < ryouko\ ;
+猥談 < waidan\ ;
+越境 < ekkyou\ ;
+上製 < jousei\ ;
+俗儒 < zokuju\ ;
+上裁 < jousai\ ;
+伝来 < denrai\ ;
+寝小 < neshou\ ;
+本絹 < honken\ ;
+飯盒 < hangou\ ;
+下表 < kahyou\ ;
+腕前 < udemae\ ;
+仮泊 < kahaku\ ;
+余徳 < yotoku\ ;
+佞弁 < neiben\ ;
+中華 < chuuka\ ;
+害悪 < gaiaku\ ;
+封地 < houchi\ ;
+完敗 < kanpai\ ;
+俚俗 < rizoku\ ;
+屋上 < okujou\ ;
+木組 < kigumi\ ;
+有能 < yuunou\ ;
+尚古 < shouko\ ;
+背戻 < hairei\ ;
+宣戦 < sensen\ ;
+五目 < gomoku\ ;
+寓居 < guukyo\ ;
+尋問 < jinmon\ ;
+暴論 < bouron\ ;
+条痕 < joukon\ ;
+併存 < heizon\ ;
+富岳 < fugaku\ ;
+胡弓 < kokyuu\ ;
+昼餉 < hiruge\ ;
+琴柱 < kotoji\ ;
+趨勢 < suusei\ ;
+頑迷 < ganmei\ ;
+宛所 < atesho\ ;
+某某 < boubou\ ;
+貯炭 < chotan\ ;
+二目 < futame\ ;
+暴言 < bougen\ ;
+俊偉 < shun''i\ ;
+尊命 < sonmei\ ;
+肥料 < hiryou\ ;
+実態 < jittai\ ;
+木箱 < kibako\ ;
+有罪 < yuuzai\ ;
+学校 < gakkou\ ;
+木管 < mokkan\ ;
+玄米 < genmai\ ;
+珈琲 < kouhii\ ;
+風紋 < fuumon\ ;
+株屋 < kabuya\ ;
+尊君 < sonkun\ ;
+実意 < jitsui\ ;
+低廉 < teiren\ ;
+飼犬 < kaiinu\ ;
+尊号 < songou\ ;
+他流 < taryuu\ ;
+末端 < mattan\ ;
+人災 < jinsai\ ;
+下薬 < geyaku\ ;
+密封 < mippuu\ ;
+小匙 < kosaji\ ;
+尊厳 < songen\ ;
+肉桂 < nikkei\ ;
+走塁 < sourui\ ;
+伝搬 < denpan\ ;
+寛大 < kandai\ ;
+古事記 < kojiki\ ;
+本稿 < honkou\ ;
+子様 < kosama\ ;
+宿屋 < yadoya\ ;
+寿命 < jumyou\ ;
+真面目 < majime\ ;
+三蔵 < sanzou\ ;
+音量 < onryou\ ;
+乗算 < jouzan\ ;
+根太 < nebuto\ ;
+議長 < gichou\ ;
+書翰 < shokan\ ;
+来状 < raijou\ ;
+仏法 < buppou\ ;
+安手 < yasude\ ;
+対句 < tsuiku\ ;
+中耳 < chuuji\ ;
+本社 < honsha\ ;
+下落 < geraku\ ;
+警防 < keibou\ ;
+寒夜 < kan''ya\ ;
+守成 < shusei\ ;
+特高 < tokkou\ ;
+末社 < massha\ ;
+佗寝 < wabine\ ;
+実弟 < jittei\ ;
+玲瓏 < reirou\ ;
+老眼 < rougan\ ;
+栽培 < saibai\ ;
+牡鶏 < ondori\ ;
+小兵 < kohyou\ ;
+月経 < gekkei\ ;
+背広 < sebiro\ ;
+季春 < kishun\ ;
+小児 < shouni\ ;
+豊稔 < hounen\ ;
+牝鷄 < hinkei\ ;
+象眼 < zougan\ ;
+玳瑁 < taimai\ ;
+暗誦 < anshou\ ;
+騒人 < soujin\ ;
+子株 < kokabu\ ;
+昼間 < hiruma\ ;
+低層 < teisou\ ;
+根城 < nejiro\ ;
+亀甲 < kikkou\ ;
+顕著 < kencho\ ;
+騒乱 < souran\ ;
+尊公 < sonkou\ ;
+宵宮 < yomiya\ ;
+住専 < juusen\ ;
+音速 < onsoku\ ;
+伐採 < bassai\ ;
+便乗 < binjou\ ;
+乾田 < kanden\ ;
+豆科 < mameka\ ;
+脱党 < dattou\ ;
+佞姦 < neikan\ ;
+住家 < sumika\ ;
+玲玲 < reirei\ ;
+侶伴 < ryohan\ ;
+賜杯 < shihai\ ;
+財源 < zaigen\ ;
+安息 < ansoku\ ;
+尊像 < sonzou\ ;
+不良 < furyou\ ;
+定常 < teijou\ ;
+献茶 < kencha\ ;
+一菊 < ikkiku\ ;
+宮家 < miyake\ ;
+風神 < fuujin\ ;
+対処 < taisho\ ;
+両義 < ryougi\ ;
+万芸 < bangei\ ;
+賢明 < kenmei\ ;
+貯水 < chosui\ ;
+枯木 < kareki\ ;
+一荘 < iichan\ ;
+寸前 < sunzen\ ;
+宏弁 < kouben\ ;
+対内 < tainai\ ;
+老生 < rousei\ ;
+獺祭 < dassai\ ;
+独語 < dokugo\ ;
+上臼 < uwausu\ ;
+小作 < kosaku\ ;
+本盗 < hontou\ ;
+飽満 < houman\ ;
+那由他 < nayuta\ ;
+寸分 < sunbun\ ;
+独話 < dokuwa\ ;
+万般 < banpan\ ;
+上臈 < jourou\ ;
+木目 < mokume\ ;
+宦官 < kangan\ ;
+更紗 < sarasa\ ;
+人気 < hitoke\ ;
+木皿 < kizara\ ;
+人民 < jinmin\ ;
+上腕 < jouwan\ ;
+尊体 < sontai\ ;
+木皮 < mokuhi\ ;
+代替 < daitai\ ;
+某所 < bousho\ ;
+子方 < kokata\ ;
+作場 < sakuba\ ;
+貧民 < hinmin\ ;
+今様 < imayou\ ;
+京浜 < keihin\ ;
+有税 < yuuzei\ ;
+脱会 < dakkai\ ;
+上背 < uwazei\ ;
+寵児 < chouji\ ;
+上肢 < joushi\ ;
+智謀 < chibou\ ;
+類聚 < ruijuu\ ;
+本番 < honban\ ;
+特需 < tokuju\ ;
+貴様 < kisama\ ;
+聰明 < soumei\ ;
+風眼 < fuugan\ ;
+老獪 < roukai\ ;
+家塾 < kajuku\ ;
+資本 < shihon\ ;
+作土 < sakudo\ ;
+会式 < eshiki\ ;
+羚羊 < reiyou\ ;
+三者 < sansha\ ;
+豪爽 < gousou\ ;
+作図 < sakuzu\ ;
+猫背 < nekoze\ ;
+飛火 < tobihi\ ;
+片鱗 < henrin\ ;
+駅名 < ekimei\ ;
+代数 < daisuu\ ;
+豐田 < toyota\ ;
+独行 < dokkou\ ;
+牛馬 < gyuuba\ ;
+丸秘 < maruhi\ ;
+飛瀑 < hibaku\ ;
+倶楽部 < kurabu\ ;
+頒行 < hankou\ ;
+東毎 < toumai\ ;
+胡国 < kokoku\ ;
+案内 < an''nai\ ;
+何回 < nankai\ ;
+護身 < goshin\ ;
+木琴 < mokkin\ ;
+仏書 < bussho\ ;
+類纂 < ruisan\ ;
+青黴 < aokabi\ ;
+木理 < mokuri\ ;
+供与 < kyouyo\ ;
+讒謗 < zanbou\ ;
+寝刃 < netaba\ ;
+一羽 < ichiwa\ ;
+肉感 < nikkan\ ;
+賢才 < kensai\ ;
+屋根屋 < yaneya\ ;
+安寧 < an''nei\ ;
+主砲 < shuhou\ ;
+寝具 < shingu\ ;
+貿易 < boueki\ ;
+現数 < gensuu\ ;
+音調 < onchou\ ;
+駅前 < ekimae\ ;
+守宮 < yamori\ ;
+音読 < ondoku\ ;
+枚数 < maisuu\ ;
+聡敏 < soubin\ ;
+貧棒 < binbou\ ;
+月相 < gessou\ ;
+青鷺 < aosagi\ ;
+学徒 < gakuto\ ;
+有益 < yuueki\ ;
+今晩 < konban\ ;
+寒剤 < kanzai\ ;
+賢慮 < kenryo\ ;
+下絵 < shitae\ ;
+讒言 < zangen\ ;
+赦免 < shamen\ ;
+予測 < yosoku\ ;
+風琴 < fuukin\ ;
+三組 < mikumi\ ;
+三絃 < sangen\ ;
+上納 < jounou\ ;
+王物 < oumono\ ;
+一縷 < ichiru\ ;
+二流 < niryuu\ ;
+海老茶 < ebicha\ ;
+聖断 < seidan\ ;
+佩剣 < haiken\ ;
+人材 < jinzai\ ;
+未熟 < mijuku\ ;
+上米 < joumai\ ;
+中破 < chuuha\ ;
+人望 < jinbou\ ;
+寡作 < kasaku\ ;
+中砥 < nakato\ ;
+颯爽 < sassou\ ;
+実地 < jitchi\ ;
+背嚢 < hainou\ ;
+賦役 < buyaku\ ;
+有用 < yuuyou\ ;
+有産 < yuusan\ ;
+月産 < gessan\ ;
+伏屋 < fuseya\ ;
+阿媽港 < amakou\ ;
+村民 < sonmin\ ;
+球技 < kyuugi\ ;
+枚挙 < maikyo\ ;
+日頃 < higoro\ ;
+下策 < gesaku\ ;
+青鮫 < aozame\ ;
+字引 < jibiki\ ;
+低吟 < teigin\ ;
+何千 < nanzen\ ;
+何十 < nanjuu\ ;
+馬力 < bariki\ ;
+存廃 < zonpai\ ;
+磁方位 < jihoui\ ;
+三等 < santou\ ;
+一籌 < itchuu\ ;
+子役 < koyaku\ ;
+伏字 < fuseji\ ;
+耐水 < taisui\ ;
+上端 < joutan\ ;
+駄作 < dasaku\ ;
+丹田 < tanden\ ;
+駅伝 < ekiden\ ;
+字幕 < jimaku\ ;
+万端 < bantan\ ;
+上空 < joukuu\ ;
+獰猛 < neimou\ ;
+片雲 < hen''un\ ;
+独英 < dokuei\ ;
+日雀 < higara\ ;
+題簽 < daisen\ ;
+密偵 < mittei\ ;
+頻繁 < hinpan\ ;
+一策 < issaku\ ;
+何分 < nanpun\ ;
+牽連 < kenren\ ;
+孫子 < magoko\ ;
+三種 < sanshu\ ;
+上程 < joutei\ ;
+日陰 < hikage\ ;
+馬克 < maruku\ ;
+官営 < kan''ei\ ;
+羽田 < haneda\ ;
+一笑 < isshou\ ;
+面頬 < menpoo\ ;
+日限 < higiri\ ;
+両目 < ryoume\ ;
+本源 < hongen\ ;
+肉屋 < nikuya\ ;
+姦計 < kankei\ ;
+静養 < seiyou\ ;
+財政 < zaisei\ ;
+孤客 < kokaku\ ;
+令弟 < reitei\ ;
+株価 < kabuka\ ;
+中生 < nakate\ ;
+独自 < dokuji\ ;
+代弁 < daiben\ ;
+密使 < misshi\ ;
+家元 < iemoto\ ;
+牧野 < bokuya\ ;
+面面 < menmen\ ;
+事業 < jigyou\ ;
+丁稚 < detchi\ ;
+来書 < raisho\ ;
+日長 < hinaga\ ;
+五桁 < goketa\ ;
+会堂 < kaidou\ ;
+密会 < mikkai\ ;
+賊徒 < zokuto\ ;
+猫科 < nekoka\ ;
+旅館 < ryokan\ ;
+任官 < ninkan\ ;
+孟子 < moushi\ ;
+群盲 < gunmou\ ;
+昏迷 < konmei\ ;
+乳母 < nyuubo\ ;
+他心 < tashin\ ;
+住僧 < juusou\ ;
+一票 < ippyou\ ;
+鍛冶屋 < kajiya\ ;
+査収 < sashuu\ ;
+二核 < nikaku\ ;
+実勢 < jissei\ ;
+仮屋 < kariya\ ;
+佞人 < neijin\ ;
+末法 < mappou\ ;
+来方 < kikata\ ;
+飲料 < inryou\ ;
+官印 < kan''in\ ;
+人手 < hitode\ ;
+書状 < shojou\ ;
+仮寝 < karine\ ;
+孔孟 < koumou\ ;
+仮家 < kariie\ ;
+仁愛 < jin''ai\ ;
+大麦 < oomugi\ ;
+狭義 < kyougi\ ;
+謝金 < shakin\ ;
+子守 < komori\ ;
+宿世 < sukuse\ ;
+奮闘 < funtou\ ;
+宗務 < shuumu\ ;
+婚礼 < konrei\ ;
+本殿 < honden\ ;
+猛禽 < moukin\ ;
+仁恵 < jinkei\ ;
+五日 < itsuka\ ;
+智能 < chinou\ ;
+一瞬 < isshun\ ;
+風洞 < fuudou\ ;
+斬首 < zanshu\ ;
+日銭 < hizeni\ ;
+本欄 < honran\ ;
+仏師 < busshi\ ;
+家並 < yanami\ ;
+豊水 < housui\ ;
+丁目 < choume\ ;
+令孫 < reison\ ;
+仏工 < bukkou\ ;
+塩基度 < enkido\ ;
+肉塊 < nikkai\ ;
+暮秋 < boshuu\ ;
+智者 < chisha\ ;
+方面 < houmen\ ;
+存外 < zongai\ ;
+美的 < biteki\ ;
+伶優 < reiyuu\ ;
+矢羽根 < yabane\ ;
+乗気 < noriki\ ;
+上番 < jouban\ ;
+風水 < fuusui\ ;
+付属 < fuzoku\ ;
+三番 < sanban\ ;
+学園 < gakuen\ ;
+謙遜 < kenson\ ;
+上田 < jouden\ ;
+夜鷹 < yotaka\ ;
+贈呈 < zoutei\ ;
+論題 < rondai\ ;
+会合 < kaigou\ ;
+理学 < rigaku\ ;
+旧都 < kyuuto\ ;
+贈号 < zougou\ ;
+中火 < chuubi\ ;
+伝単 < dentan\ ;
+宣伝 < senden\ ;
+贋印 < nisein\ ;
+背任 < hainin\ ;
+翻案 < hon''an\ ;
+王様 < ousama\ ;
+任地 < ninchi\ ;
+一疋 < ippiki\ ;
+老来 < rourai\ ;
+他宗 < tashuu\ ;
+老杉 < rousan\ ;
+完全 < kanzen\ ;
+断面 < danmen\ ;
+令妹 < reimai\ ;
+夜鳥 < yachou\ ;
+猛省 < mousei\ ;
+柔和 < nyuuwa\ ;
+定例 < teirei\ ;
+現存 < genzon\ ;
+乱杭 < rangui\ ;
+伴侶 < hanryo\ ;
+定住 < teijuu\ ;
+守兵 < shuhei\ ;
+背中 < senaka\ ;
+特許 < tokkyo\ ;
+存在 < sonzai\ ;
+背丈 < setake\ ;
+特訓 < tokkun\ ;
+爆音 < bakuon\ ;
+下獄 < gegoku\ ;
+今尚 < imanao\ ;
+人工 < jinkou\ ;
+乱暴 < ranbou\ ;
+望樓 < bourou\ ;
+三猿 < mizaru\ ;
+論陣 < ronjin\ ;
+伶人 < reijin\ ;
+謹言 < kingen\ ;
+朱書 < shusho\ ;
+館娃 < kan''ai\ ;
+片輪 < katawa\ ;
+安値 < yasune\ ;
+本来 < honrai\ ;
+明言 < meigen\ ;
+翰林 < kanrin\ ;
+令堂 < reidou\ ;
+万状 < banjou\ ;
+宗主 < soushu\ ;
+霊魂 < reikon\ ;
+本木 < motoki\ ;
+本望 < honmou\ ;
+罹病 < ribyou\ ;
+願状 < ganjou\ ;
+末末 < suezue\ ;
+百合根 < yurine\ ;
+子嚢 < shinou\ ;
+二手 < futate\ ;
+乱数 < ransuu\ ;
+春蚕 < harugo\ ;
+木末 < konure\ ;
+肌合 < hadaai\ ;
+王朝 < ouchou\ ;
+雷鳴 < raimei\ ;
+任命 < ninmei\ ;
+什宝 < juuhou\ ;
+人屋 < hitoya\ ;
+朦朧 < mourou\ ;
+朦朦 < moumou\ ;
+中洲 < nakasu\ ;
+賛嘆 < santan\ ;
+日足 < hiashi\ ;
+斜陽 < shayou\ ;
+大風 < ookaze\ ;
+奪還 < dakkan\ ;
+音締 < nejime\ ;
+天顔 < tengan\ ;
+物見 < monomi\ ;
+阿羅漢 < arakan\ ;
+学務 < gakumu\ ;
+替歌 < kaeuta\ ;
+存命 < zonmei\ ;
+奮迅 < funjin\ ;
+賭博 < tobaku\ ;
+杉戸 < sugido\ ;
+貧寒 < hinkan\ ;
+有様 < ariyou\ ;
+本文 < honmon\ ;
+来店 < raiten\ ;
+本数 < honsuu\ ;
+斧鑿 < fusaku\ ;
+来年 < rainen\ ;
+文題 < bundai\ ;
+王族 < ouzoku\ ;
+五徳 < gotoku\ ;
+万点 < manten\ ;
+今夜 < kon''ya\ ;
+中気 < chuuki\ ;
+伝令 < denrei\ ;
+仏塔 < buttou\ ;
+霜雰 < soufun\ ;
+頭痛 < zutsuu\ ;
+主権 < shuken\ ;
+雷魚 < raigyo\ ;
+万灯 < mandou\ ;
+財宝 < zaihou\ ;
+夜風 < yokaze\ ;
+貪婪 < donran\ ;
+伐倒 < battou\ ;
+野路子 < nojiko\ ;
+現地 < genchi\ ;
+猛犬 < mouken\ ;
+天雷 < tenrai\ ;
+朝晩 < asaban\ ;
+他国 < takoku\ ;
+仮名 < kemyou\ ;
+風景 < fuukei\ ;
+論鋒 < ronpou\ ;
+文面 < bunmen\ ;
+伎倆 < giryou\ ;
+餃子 < gyouza\ ;
+学兄 < gakkei\ ;
+犯罪 < hanzai\ ;
+大難 < tainan\ ;
+中欧 < chuuou\ ;
+伝世 < densei\ ;
+多額 < tagaku\ ;
+天険 < tenken\ ;
+会主 < kaishu\ ;
+東宮 < touguu\ ;
+聖域 < seiiki\ ;
+代品 < daihin\ ;
+頓知 < tonchi\ ;
+夕顔 < yuugao\ ;
+乱戦 < ransen\ ;
+考慮 < kouryo\ ;
+介在 < kaizai\ ;
+整風 < seifuu\ ;
+任免 < ninmen\ ;
+存分 < zonbun\ ;
+令名 < reimei\ ;
+飲屋 < nomiya\ ;
+人外 < ningai\ ;
+斧鉞 < fuetsu\ ;
+夜霧 < yogiri\ ;
+猛然 < mouzen\ ;
+人士 < jinshi\ ;
+面貌 < menbou\ ;
+販売 < hanbai\ ;
+主根 < shukon\ ;
+大関 < oozeki\ ;
+旧詠 < kyuuei\ ;
+今回 < konkai\ ;
+日誌 < nisshi\ ;
+早計 < soukei\ ;
+代参 < daisan\ ;
+大門 < daimon\ ;
+本拠 < honkyo\ ;
+有望 < yuubou\ ;
+整頓 < seiton\ ;
+旧記 < kyuuki\ ;
+妄言 < mougen\ ;
+旅路 < tabiji\ ;
+豪快 < goukai\ ;
+早見 < hayami\ ;
+電顕 < denken\ ;
+外電 < gaiden\ ;
+板塀 < itabei\ ;
+片言 < hengen\ ;
+罪状 < zaijou\ ;
+玩弄 < ganrou\ ;
+奉遷 < housen\ ;
+本懐 < honkai\ ;
+丹朱 < tanshu\ ;
+丸木 < maruki\ ;
+学事 < gakuji\ ;
+月旦 < gettan\ ;
+夜長 < yonaga\ ;
+面談 < mendan\ ;
+奉迎 < hougei\ ;
+有数 < yuusuu\ ;
+媒染 < baisen\ ;
+繁閑 < hankan\ ;
+仲値 < nakane\ ;
+上水 < jousui\ ;
+誘電 < yuuden\ ;
+晴着 < haregi\ ;
+罰点 < batten\ ;
+大鎌 < oogama\ ;
+亡妻 < bousai\ ;
+青豆 < aomame\ ;
+貧困 < hinkon\ ;
+仲保 < chuuho\ ;
+珍奇 < chinki\ ;
+大鍋 < oonabe\ ;
+最早 < mohaya\ ;
+万民 < banmin\ ;
+乗手 < norite\ ;
+仏参 < bussan\ ;
+一泊 < ippaku\ ;
+主文 < shubun\ ;
+現勢 < gensei\ ;
+老幼 < rouyou\ ;
+老年 < rounen\ ;
+三死 < sanshi\ ;
+他力 < tariki\ ;
+本性 < honsei\ ;
+翻弄 < honrou\ ;
+財団 < zaidan\ ;
+誌面 < shimen\ ;
+万死 < banshi\ ;
+万歳 < manzai\ ;
+子供 < kodomo\ ;
+存亡 < sonbou\ ;
+二子 < futago\ ;
+土下座 < dogeza\ ;
+順番 < junban\ ;
+雲集 < unshuu\ ;
+雲雀 < hibari\ ;
+現前 < genzen\ ;
+介卵 < kairan\ ;
+大鉈 < oonata\ ;
+難題 < nandai\ ;
+本影 < hon''ei\ ;
+並木 < namiki\ ;
+斜辺 < shahen\ ;
+賢主 < kenshu\ ;
+書斎 < shosai\ ;
+羊毛 < youmou\ ;
+大金 < taikin\ ;
+仁君 < jinkun\ ;
+不様 < buzama\ ;
+人員 < jin''in\ ;
+中日 < nakabi\ ;
+末弟 < mattei\ ;
+人品 < jinpin\ ;
+三権 < sanken\ ;
+一次 < ichiji\ ;
+熱風 < neppuu\ ;
+上様 < uezama\ ;
+大酒 < oozake\ ;
+人命 < jinmei\ ;
+縦陣 < juujin\ ;
+嫁御 < yomego\ ;
+賞与 < shouyo\ ;
+本店 < honten\ ;
+雲間 < kumoma\ ;
+始終 < shijuu\ ;
+論賛 < ronsan\ ;
+仏典 < butten\ ;
+三業 < sangou\ ;
+代任 < dainin\ ;
+羨望 < senbou\ ;
+試験 < shiken\ ;
+世柄 < yogara\ ;
+語録 < goroku\ ;
+天道 < tendou\ ;
+人参 < ninjin\ ;
+天運 < ten''un\ ;
+一樹 < ichiju\ ;
+今冬 < kontou\ ;
+大道 < daidou\ ;
+慰安者 < iansha\ ;
+離隔 < rikaku\ ;
+暴民 < boumin\ ;
+離陸 < ririku\ ;
+老害 < rougai\ ;
+文選 < bunsen\ ;
+木工 < mokkou\ ;
+乱射 < ransha\ ;
+天辺 < teppen\ ;
+責務 < sekimu\ ;
+文運 < bun''un\ ;
+旅装 < ryosou\ ;
+方言 < hougen\ ;
+三桁 < miketa\ ;
+老嬢 < roujou\ ;
+聖像 < seizou\ ;
+旅行 < ryokou\ ;
+難関 < nankan\ ;
+新語 < shingo\ ;
+大輪 < tairin\ ;
+本山 < honzan\ ;
+天軍 < tengun\ ;
+三枚 < sanmai\ ;
+板前 < itamae\ ;
+現代 < gendai\ ;
+頻死 < hinshi\ ;
+本屋 < hon''ya\ ;
+三板 < sanpan\ ;
+類本 < ruihon\ ;
+声門 < seimon\ ;
+現今 < genkon\ ;
+享受 < kyouju\ ;
+風師 < fuushi\ ;
+類書 < ruisho\ ;
+本尊 < honzon\ ;
+上期 < kamiki\ ;
+熱闘 < nettou\ ;
+珍味 < chinmi\ ;
+書房 < shobou\ ;
+一案 < ichian\ ;
+三本 < sanbon\ ;
+養分 < youbun\ ;
+豪奢 < gousha\ ;
+改題 < kaidai\ ;
+上書 < jousho\ ;
+木屑 < kikuzu\ ;
+仏会 < butsue\ ;
+亡命 < boumei\ ;
+断言 < dangen\ ;
+外遊 < gaiyuu\ ;
+玉屋 < tamaya\ ;
+仕上 < shiage\ ;
+願望 < ganmou\ ;
+爬虫 < hachuu\ ;
+献本 < kenpon\ ;
+最悪 < saiaku\ ;
+独演 < dokuen\ ;
+願書 < gansho\ ;
+末孫 < masson\ ;
+暗流 < anryuu\ ;
+末子 < masshi\ ;
+翠嵐 < suiran\ ;
+食器 < shokki\ ;
+大足 < ooashi\ ;
+亡友 < bouyuu\ ;
+今今 < imaima\ ;
+今人 < konjin\ ;
+聖人 < seijin\ ;
+獣性 < juusei\ ;
+雲量 < unryou\ ;
+上旬 < joujun\ ;
+一朝 < itchou\ ;
+夢路 < yumeji\ ;
+一服 < ippuku\ ;
+談論 < danron\ ;
+両拳 < janken\ ;
+飯台 < handai\ ;
+日航 < nikkou\ ;
+罷業 < higyou\ ;
+人偏 < ninben\ ;
+外輪 < gairin\ ;
+天賜 < tenshi\ ;
+三方 < sanpou\ ;
+青藍 < seiran\ ;
+韲物 < aemono\ ;
+主従 < shujuu\ ;
+断裁 < dansai\ ;
+人倫 < jinrin\ ;
+請訓 < seikun\ ;
+猥本 < waihon\ ;
+乾坤 < kenkon\ ;
+乱売 < ranbai\ ;
+変遷 < hensen\ ;
+題材 < daizai\ ;
+外車 < gaisha\ ;
+両手 < ryoute\ ;
+七日 < nanoka\ ;
+変造 < henzou\ ;
+願文 < ganmon\ ;
+奉行 < bugyou\ ;
+仁人 < jinjin\ ;
+本妻 < honsai\ ;
+風害 < fuugai\ ;
+嫉妬 < shitto\ ;
+謝罪 < shazai\ ;
+人体 < nintei\ ;
+文豪 < bungou\ ;
+施薬 < seyaku\ ;
+斜視 < shashi\ ;
+数軒 < suuken\ ;
+罪業 < zaigou\ ;
+電車 < densha\ ;
+類推 < ruisui\ ;
+変転 < henten\ ;
+一擲 < itteki\ ;
+猛暑 < mousho\ ;
+諸芸 < shogei\ ;
+予告 < yokoku\ ;
+書店 < shoten\ ;
+本塁 < honrui\ ;
+燻製 < kunsei\ ;
+離郷 < rikyou\ ;
+絵日記 < enikki\ ;
+青草 < aokusa\ ;
+外貌 < gaibou\ ;
+中座 < chuuza\ ;
+罰杯 < bappai\ ;
+頸木 < kubiki\ ;
+乙夜 < otsuya\ ;
+頓死 < tonshi\ ;
+春着 < harugi\ ;
+編隊 < hentai\ ;
+読誦 < dokuju\ ;
+京人 < keijin\ ;
+猛攻 < moukou\ ;
+二割 < niwari\ ;
+木型 < kigata\ ;
+望外 < bougai\ ;
+暮春 < boshun\ ;
+主導 < shudou\ ;
+娯楽 < goraku\ ;
+陀羅尼 < darani\ ;
+暴政 < bousei\ ;
+誤謬 < gobyuu\ ;
+亀卜 < kiboku\ ;
+読解 < dokkai\ ;
+主宰 < shusai\ ;
+王国 < oukoku\ ;
+多読 < tadoku\ ;
+乗場 < noriba\ ;
+夢見 < yumemi\ ;
+両度 < ryoudo\ ;
+頻数 < hinsuu\ ;
+誤読 < godoku\ ;
+晦渋 < kaijuu\ ;
+不惑 < fuwaku\ ;
+敗軍 < haigun\ ;
+来会 < raikai\ ;
+一手 < hitote\ ;
+羅方位 < rahoui\ ;
+来任 < rainin\ ;
+曾孫 < himago\ ;
+誤訳 < goyaku\ ;
+朗報 < rouhou\ ;
+多角 < takaku\ ;
+万感 < bankan\ ;
+奈落 < naraku\ ;
+夜襲 < yashuu\ ;
+犠牛 < gigyuu\ ;
+春画 < shunga\ ;
+条件 < jouken\ ;
+散財 < sanzai\ ;
+随順 < zuijun\ ;
+来世 < raisei\ ;
+縦貫 < juukan\ ;
+不徳 < futoku\ ;
+緑雨 < ryokuu\ ;
+外見 < sotomi\ ;
+昏睡 < konsui\ ;
+詩選 < shisen\ ;
+面繋 < omogai\ ;
+新芽 < shinme\ ;
+数詞 < suushi\ ;
+明眸 < meibou\ ;
+頭数 < tousuu\ ;
+暴挙 < boukyo\ ;
+隔離 < kakuri\ ;
+本命 < honmei\ ;
+類形 < ruikei\ ;
+中子 < nakago\ ;
+曳子 < hikiko\ ;
+天蚕 < tensan\ ;
+女給 < jokyuu\ ;
+電解 < denkai\ ;
+月報 < geppou\ ;
+最大 < saidai\ ;
+燻蒸 < kunjou\ ;
+云云 < un''nun\ ;
+隙間 < sukima\ ;
+最外 < saigai\ ;
+改造 < kaizou\ ;
+大虎 < oodora\ ;
+陵駕 < ryouga\ ;
+売買 < baibai\ ;
+丸太 < maruta\ ;
+村会 < sonkai\ ;
+美徳 < bitoku\ ;
+未収 < mishuu\ ;
+一応 < ichiou\ ;
+服地 < fukuji\ ;
+謝礼 < sharei\ ;
+木叢 < komura\ ;
+一徳 < ittoku\ ;
+二人 < futari\ ;
+老兵 < rouhei\ ;
+獄屋 < gokuya\ ;
+煎餅 < senbei\ ;
+上帯 < uwaobi\ ;
+雑踏 < zattou\ ;
+文藻 < bunsou\ ;
+熱賛 < nessan\ ;
+教護 < kyougo\ ;
+乳児 < nyuuji\ ;
+群居 < gunkyo\ ;
+纏綿 < tenmen\ ;
+異体字 < itaiji\ ;
+猛悪 < mouaku\ ;
+大蔵 < ookura\ ;
+万巻 < mangan\ ;
+日程 < nittei\ ;
+丁度 < choudo\ ;
+天蓋 < tengai\ ;
+教諭 < kyouyu\ ;
+一座 < ichiza\ ;
+乗合 < noriai\ ;
+音標 < onpyou\ ;
+乗号 < jougou\ ;
+暴悪 < bouaku\ ;
+風向 < fuukou\ ;
+本分 < honbun\ ;
+救護 < kyuugo\ ;
+縦覧 < juuran\ ;
+服喪 < fukumo\ ;
+木剣 < bokken\ ;
+大著 < taicho\ ;
+擬革 < gikaku\ ;
+論者 < ronsha\ ;
+論考 < ronkou\ ;
+音楽 < ongaku\ ;
+朗吟 < rougin\ ;
+雪見 < yukimi\ ;
+乱倫 < ranrin\ ;
+雲表 < unpyou\ ;
+牛皮 < gyuuhi\ ;
+上層 < jousou\ ;
+難訓 < nankun\ ;
+老体 < routai\ ;
+陸離 < rikuri\ ;
+断罪 < danzai\ ;
+訓電 < kunden\ ;
+牢番 < rouban\ ;
+時流 < jiryuu\ ;
+斬罪 < zanzai\ ;
+旅籠 < hatago\ ;
+晴朗 < seirou\ ;
+三封 < sanpuu\ ;
+熱誠 < nessei\ ;
+三寸 < sanzun\ ;
+老人 < roujin\ ;
+晴曇 < seidon\ ;
+風前 < fuuzen\ ;
+陣風 < jinpuu\ ;
+集貨 < shuuka\ ;
+隧道 < suidou\ ;
+最善 < saizen\ ;
+罪悪 < zaiaku\ ;
+暖房 < danbou\ ;
+敬虔 < keiken\ ;
+隣邦 < rinpou\ ;
+乱交 < rankou\ ;
+老中 < roujuu\ ;
+女神 < megami\ ;
+青筋 < aosuji\ ;
+諸種 < shoshu\ ;
+朋友 < houyuu\ ;
+文芸 < bungei\ ;
+陰陽 < on''you\ ;
+丁寧 < teinei\ ;
+一対 < ittsui\ ;
+義塾 < gijuku\ ;
+大船 < oobune\ ;
+青竹 < aodake\ ;
+革砥 < kawato\ ;
+雑誌 < zasshi\ ;
+片眼 < katame\ ;
+断線 < dansen\ ;
+乱世 < ransei\ ;
+熟議 < jukugi\ ;
+隠逸 < initsu\ ;
+大臣 < daijin\ ;
+美学 < bigaku\ ;
+政論 < seiron\ ;
+服務 < fukumu\ ;
+青空 < aozora\ ;
+有半 < yuuhan\ ;
+雑言 < zougon\ ;
+同意語 < douigo\ ;
+下姓 < geshou\ ;
+妙王 < myouou\ ;
+旅程 < ryotei\ ;
+奉納 < hounou\ ;
+熟語 < jukugo\ ;
+狙撃 < sogeki\ ;
+猶太 < yudaya\ ;
+夜船 < yofune\ ;
+大胆 < daitan\ ;
+上天 < jouten\ ;
+早産 < souzan\ ;
+大股 < oomata\ ;
+最南 < sainan\ ;
+天聞 < tenbun\ ;
+訴追 < sotsui\ ;
+詠誦 < eishou\ ;
+晦日 < misoka\ ;
+記録 < kiroku\ ;
+書名 < shomei\ ;
+万天 < banten\ ;
+中和 < chuuwa\ ;
+改訂 < kaitei\ ;
+日産 < nissan\ ;
+面相 < mensou\ ;
+評議 < hyougi\ ;
+大老 < tairou\ ;
+風体 < fuutei\ ;
+牝牛 < meushi\ ;
+増配 < zouhai\ ;
+一女 < ichijo\ ;
+上場 < joujou\ ;
+大群 < taigun\ ;
+院長 < inchou\ ;
+中句 < chuuku\ ;
+三塁 < sanrui\ ;
+隻語 < sekigo\ ;
+曇天 < donten\ ;
+月光 < gekkou\ ;
+霊能 < reinou\ ;
+姻族 < inzoku\ ;
+丹前 < tanzen\ ;
+丸剤 < ganzai\ ;
+一夢 < ichimu\ ;
+最初 < saisho\ ;
+一夜 < hitoyo\ ;
+万場 < manjou\ ;
+諸相 < shosou\ ;
+奇策 < kisaku\ ;
+婚姻 < kon''in\ ;
+与圧 < yoatsu\ ;
+熔解 < youkai\ ;
+多肉 < taniku\ ;
+暗幕 < anmaku\ ;
+隆運 < ryuuun\ ;
+韋駄天 < idaten\ ;
+誘致 < yuuchi\ ;
+暖帯 < dantai\ ;
+下国 < gekoku\ ;
+暫定 < zantei\ ;
+断種 < danshu\ ;
+独往 < dokuou\ ;
+三囲 < mitsui\ ;
+外聞 < gaibun\ ;
+特派 < tokuha\ ;
+主傘 < shusan\ ;
+為政家 < iseika\ ;
+天網 < tenmou\ ;
+陶酔 < tousui\ ;
+書写 < shosha\ ;
+二度目 < nidome\ ;
+獄吏 < gokuri\ ;
+独座 < dokuza\ ;
+一国 < ikkoku\ ;
+領布 < ryoufu\ ;
+片片 < henpen\ ;
+一因 < ichiin\ ;
+霧笛 < muteki\ ;
+陸運 < rikuun\ ;
+無闇 < muyami\ ;
+雄蜂 < obachi\ ;
+絹雲 < ken''un\ ;
+煮豆 < nimame\ ;
+熔融 < youyuu\ ;
+主体 < shutai\ ;
+訓連 < kunren\ ;
+万善 < manzen\ ;
+文系 < bunkei\ ;
+施療 < seryou\ ;
+主任 < shunin\ ;
+敬老 < keirou\ ;
+順当 < juntou\ ;
+陽転 < youten\ ;
+日焼 < hiyake\ ;
+上品 < joubon\ ;
+主人 < shujin\ ;
+雄蘂 < yuuzui\ ;
+難船 < nansen\ ;
+隆起 < ryuuki\ ;
+姻戚 < inseki\ ;
+類同 < ruidou\ ;
+誦経 < zukyou\ ;
+早瀬 < hayase\ ;
+書体 < shotai\ ;
+緒論 < choron\ ;
+主上 < shujou\ ;
+最中 < monaka\ ;
+雑菌 < zakkin\ ;
+文範 < bunpan\ ;
+新盆 < niibon\ ;
+増資 < zoushi\ ;
+最上 < mogami\ ;
+大筋 < oosuji\ ;
+媒体 < baitai\ ;
+爆破 < bakuha\ ;
+独居 < dokkyo\ ;
+特権 < tokken\ ;
+訳語 < yakugo\ ;
+中佐 < chuusa\ ;
+万口 < bankou\ ;
+雑草 < zassou\ ;
+上半 < jouhan\ ;
+陸路 < rikuro\ ;
+媒介 < baikai\ ;
+天空 < tenkuu\ ;
+緒言 < chogen\ ;
+需給 < jukyuu\ ;
+与力 < yoriki\ ;
+大空 < oozora\ ;
+外米 < gaimai\ ;
+天稟 < tenpin\ ;
+中二 < chuuni\ ;
+奇癖 < kiheki\ ;
+敏腕 < binwan\ ;
+天秤 < tenbin\ ;
+索麺 < soumen\ ;
+群像 < gunzou\ ;
+奮然 < funzen\ ;
+万劫 < mangou\ ;
+上前 < uwamae\ ;
+雌花 < mebana\ ;
+奇病 < kibyou\ ;
+青物 < aomono\ ;
+天神 < tenjin\ ;
+然迄 < samade\ ;
+題名 < daimei\ ;
+題号 < daigou\ ;
+大祭 < taisai\ ;
+三分 < sanpun\ ;
+義侠 < gikyou\ ;
+総裏 < souura\ ;
+物権 < bukken\ ;
+夜空 < yozora\ ;
+総裁 < sousai\ ;
+無量 < muryou\ ;
+雀荘 < jansou\ ;
+緊褌 < kinkon\ ;
+世俗 < sezoku\ ;
+牛歩 < gyuuho\ ;
+旧派 < kyuuha\ ;
+羅北 < rahoku\ ;
+細魚 < sayori\ ;
+下僕 < geboku\ ;
+大砲 < taihou\ ;
+数等 < suutou\ ;
+女滝 < medaki\ ;
+警手 < keishu\ ;
+随行 < zuikou\ ;
+如法 < nyohou\ ;
+一円 < ichien\ ;
+一具 < ichigu\ ;
+数寄屋 < sukiya\ ;
+編著 < hencho\ ;
+爛爛 < ranran\ ;
+暖地 < danchi\ ;
+綸言 < ringen\ ;
+放胆 < houtan\ ;
+訓諭 < kun''yu\ ;
+読破 < dokuha\ ;
+三倍 < sanbai\ ;
+猛勇 < mouyuu\ ;
+類例 < ruirei\ ;
+訓誡 < kunkai\ ;
+謹書 < kinsho\ ;
+明朗 < meirou\ ;
+天盃 < tenpai\ ;
+暴動 < boudou\ ;
+堤防 < teibou\ ;
+討論 < touron\ ;
+日毎 < higoto\ ;
+不仲 < funaka\ ;
+大皿 < oozara\ ;
+三体 < santai\ ;
+同意義 < douigi\ ;
+文盲 < monmou\ ;
+熱線 < nessen\ ;
+熟考 < jukkou\ ;
+猟具 < ryougu\ ;
+墓表 < bohyou\ ;
+昵懇 < jikkon\ ;
+女流 < joryuu\ ;
+霊知 < reichi\ ;
+上代 < joudai\ ;
+奇特 < kidoku\ ;
+美俗 < bizoku\ ;
+易断 < ekidan\ ;
+不乙 < fuitsu\ ;
+罪名 < zaimei\ ;
+昏昏 < konkon\ ;
+雑纂 < zassan\ ;
+妙案 < myouan\ ;
+女波 < menami\ ;
+離籍 < riseki\ ;
+明断 < meidan\ ;
+敬礼 < keirei\ ;
+雷神 < raijin\ ;
+調理 < chouri\ ;
+断然 < danzen\ ;
+明敏 < meibin\ ;
+版権 < hanken\ ;
+烈風 < reppuu\ ;
+万万 < manman\ ;
+言論 < genron\ ;
+陸行 < rikkou\ ;
+大生 < daisei\ ;
+雀羅 < jakura\ ;
+丁亥 < teigai\ ;
+議席 < giseki\ ;
+美事 < migoto\ ;
+姑息 < kosoku\ ;
+繁盛 < hanjou\ ;
+一人 < hitori\ ;
+放縦 < houjuu\ ;
+論点 < ronten\ ;
+詩編 < shihen\ ;
+日様 < hisama\ ;
+陪観 < baikan\ ;
+一二 < ichini\ ;
+素首 < sokubi\ ;
+爛漫 < ranman\ ;
+特措 < tokuso\ ;
+試練 < shiren\ ;
+言訳 < iiwake\ ;
+培養 < baiyou\ ;
+言言 < gengen\ ;
+総菜 < souzai\ ;
+多病 < tabyou\ ;
+撤退 < tettai\ ;
+改編 < kaihen\ ;
+無賃 < muchin\ ;
+雄編 < yuuhen\ ;
+縁組 < engumi\ ;
+特技 < tokugi\ ;
+教祖 < kyouso\ ;
+物損 < busson\ ;
+要項 < youkou\ ;
+罰俸 < bappou\ ;
+姉弟 < shimai\ ;
+離礁 < rishou\ ;
+音域 < on''iki\ ;
+報道 < houdou\ ;
+旭暉 < kyokki\ ;
+絶賛 < zessan\ ;
+如来 < nyorai\ ;
+大物 < oomono\ ;
+露滴 < roteki\ ;
+続行 < zokkou\ ;
+版本 < hanpon\ ;
+暖冬 < dantou\ ;
+電番 < denban\ ;
+大袈裟 < oogesa\ ;
+早晩 < souban\ ;
+霊獣 < reijuu\ ;
+編纂 < hensan\ ;
+新派 < shinpa\ ;
+雑種 < zasshu\ ;
+雪目 < yukime\ ;
+旧時 < kyuuji\ ;
+誕生 < tanjou\ ;
+昼寝 < hirune\ ;
+事務屋 < jimuya\ ;
+浮世絵 < ukiyoe\ ;
+特恵 < tokkei\ ;
+煙草 < tabako\ ;
+琵琶湖 < biwako\ ;
+謄本 < touhon\ ;
+改竄 < kaizan\ ;
+特快 < tokkai\ ;
+事務家 < jimuka\ ;
+日数 < hikazu\ ;
+断水 < dansui\ ;
+妙技 < myougi\ ;
+妻帯 < saitai\ ;
+威喝 < ikatsu\ ;
+煎茶 < sencha\ ;
+雷獣 < raijuu\ ;
+青桐 < aogiri\ ;
+大潮 < ooshio\ ;
+陶芸 < tougei\ ;
+旗日 < hatabi\ ;
+青柳 < aoyagi\ ;
+設置 < setchi\ ;
+物性 < bussei\ ;
+暗中 < anchuu\ ;
+昼夜 < chuuya\ ;
+言葉 < kotoba\ ;
+紡錘 < bousui\ ;
+外灯 < gaitou\ ;
+埼銀 < saigin\ ;
+不可避 < fukahi\ ;
+間鴨 < aigamo\ ;
+霧氷 < muhyou\ ;
+春季 < shunki\ ;
+増置 < zouchi\ ;
+綾羅 < ryoura\ ;
+狂句 < kyouku\ ;
+陳腐 < chinpu\ ;
+報謝 < housha\ ;
+煩累 < hanrui\ ;
+片手 < katate\ ;
+片戸 < katado\ ;
+斑気 < muraki\ ;
+敦煌 < tonkou\ ;
+大波 < oonami\ ;
+断案 < dan''an\ ;
+天水 < tensui\ ;
+外湯 < sotoyu\ ;
+晦冥 < kaimei\ ;
+教父 < kyoufu\ ;
+純銀 < jungin\ ;
+大水 < oomizu\ ;
+外港 < gaikou\ ;
+説法 < seppou\ ;
+見込 < mikomi\ ;
+訪米 < houbei\ ;
+細身 < hosomi\ ;
+文民 < bunmin\ ;
+炭鉱 < tankou\ ;
+旧恩 < kyuuon\ ;
+純金 < junkin\ ;
+事務器 < jimuki\ ;
+夜泊 < yahaku\ ;
+方方 < houbou\ ;
+綿糸 < menshi\ ;
+旨念 < shinen\ ;
+操船 < sousen\ ;
+綾糸 < ayaito\ ;
+電源 < dengen\ ;
+妄念 < mounen\ ;
+西遊 < seiyuu\ ;
+奮戦 < funsen\ ;
+炭酸 < tansan\ ;
+納金 < noukin\ ;
+納采 < nousai\ ;
+観覧 < kanran\ ;
+諸手 < morote\ ;
+音信 < onshin\ ;
+精魂 < seikon\ ;
+夜毎 < yogoto\ ;
+散漫 < sanman\ ;
+緩目 < yurume\ ;
+片影 < hen''ei\ ;
+妄弁 < bouben\ ;
+霊殿 < reiden\ ;
+既得 < kitoku\ ;
+論旨 < ronshi\ ;
+精髄 < seizui\ ;
+御洒落 < oshare\ ;
+事務員 < jimuin\ ;
+埴輪 < haniwa\ ;
+論断 < rondan\ ;
+論文 < ronbun\ ;
+煙管 < kiseru\ ;
+調査 < chousa\ ;
+植木屋 < uekiya\ ;
+無臭 < mushuu\ ;
+靱帯 < jintai\ ;
+明大 < meidai\ ;
+閉館 < heikan\ ;
+諸悪 < shoaku\ ;
+壁画 < hekiga\ ;
+素足 < suashi\ ;
+敵歩 < tekifu\ ;
+雄犬 < osuinu\ ;
+増税 < zouzei\ ;
+墾田 < konden\ ;
+改版 < kaihan\ ;
+父御 < tetego\ ;
+不可誤 < fukago\ ;
+関門 < kanmon\ ;
+大根 < daikon\ ;
+雑炊 < zousui\ ;
+夜業 < yagyou\ ;
+細論 < sairon\ ;
+牧夫 < bokufu\ ;
+文案 < bun''an\ ;
+旅情 < ryojou\ ;
+変死 < henshi\ ;
+外様 < tozama\ ;
+大柄 < oogara\ ;
+御釈迦 < oshaka\ ;
+諸彦 < shogen\ ;
+間際 < magiwa\ ;
+無聊 < buryou\ ;
+長駆 < chouku\ ;
+雲母 < kirara\ ;
+早寝 < hayane\ ;
+西貢 < saigon\ ;
+教派 < kyouha\ ;
+操縦 < soujuu\ ;
+大本 < taihon\ ;
+大望 < taimou\ ;
+論拠 < ronkyo\ ;
+日射 < nissha\ ;
+奉拝 < houhai\ ;
+牧場 < makiba\ ;
+計算 < keisan\ ;
+除籍 < joseki\ ;
+糸遊 < itoyuu\ ;
+難治 < nanchi\ ;
+墨痕 < bokkon\ ;
+印字機 < injiki\ ;
+論戦 < ronsen\ ;
+天明 < tenmei\ ;
+墓石 < boseki\ ;
+墨画 < bokuga\ ;
+難民 < nanmin\ ;
+素読 < sodoku\ ;
+要諦 < youtei\ ;
+天文 < tenmon\ ;
+大方 < ookata\ ;
+硫黄泉 < iousen\ ;
+開門 < kaimon\ ;
+練炭 < rentan\ ;
+閉門 < heimon\ ;
+増益 < zoueki\ ;
+外来 < gairai\ ;
+闇路 < yamiji\ ;
+外材 < gaizai\ ;
+門院 < mon''in\ ;
+納豆 < nattou\ ;
+門限 < mongen\ ;
+方形 < houkei\ ;
+文政 < bunsei\ ;
+女官 < nyokan\ ;
+無給 < mukyuu\ ;
+早大 < soudai\ ;
+要覧 < youran\ ;
+雛段 < suudan\ ;
+面子 < mentsu\ ;
+数枚 < suumai\ ;
+雨樋 < amadoi\ ;
+雄渾 < yuukon\ ;
+複音 < fukuon\ ;
+明君 < meikun\ ;
+険相 < kensou\ ;
+特務 < tokumu\ ;
+物品 < buppin\ ;
+増産 < zousan\ ;
+損金 < sonkin\ ;
+長閑 < nodoka\ ;
+語族 < gozoku\ ;
+偉丈夫 < ijoufu\ ;
+論弁 < ronben\ ;
+日報 < nippou\ ;
+門鑑 < monkan\ ;
+堕落 < daraku\ ;
+関連 < kanren\ ;
+煮物 < nimono\ ;
+旅寝 < tabine\ ;
+陳皮 < chinpi\ ;
+布海苔 < funori\ ;
+紫蘭 < shiran\ ;
+開銀 < kaigin\ ;
+無策 < musaku\ ;
+謦咳 < keigai\ ;
+妥協 < dakyou\ ;
+大技 < oowaza\ ;
+精錬 < seiren\ ;
+旧土 < kyuudo\ ;
+電断 < dendan\ ;
+霰弾 < sandan\ ;
+教案 < kyouan\ ;
+妙味 < myoumi\ ;
+明初 < meisho\ ;
+絞罪 < kouzai\ ;
+昨今 < sakkon\ ;
+絨緞 < juutan\ ;
+方寸 < housun\ ;
+変改 < henkai\ ;
+零敗 < reihai\ ;
+奥妙 < oumyou\ ;
+散文 < sanbun\ ;
+散散 < sanzan\ ;
+土龍 < mogura\ ;
+縦断 < juudan\ ;
+謚号 < shigou\ ;
+女囚 < joshuu\ ;
+断定 < dantei\ ;
+論定 < rontei\ ;
+塵界 < jinkai\ ;
+論孟 < ronmou\ ;
+日和 < hiyori\ ;
+網状 < moujou\ ;
+大形 < oogyou\ ;
+慰安会 < iankai\ ;
+難文 < nanbun\ ;
+披露目 < hirome\ ;
+米飯 < beihan\ ;
+網版 < amihan\ ;
+売文 < baibun\ ;
+日向 < hinata\ ;
+精農 < seinou\ ;
+新婦 < shinpu\ ;
+防空 < boukuu\ ;
+天底 < tentei\ ;
+太平 < taihei\ ;
+奥地 < okuchi\ ;
+大店 < oodana\ ;
+雑書 < zassho\ ;
+閣議 < kakugi\ ;
+灰貝 < haigai\ ;
+大幅 < oohaba\ ;
+大師 < daishi\ ;
+結納 < yuinou\ ;
+旅団 < ryodan\ ;
+繁忙 < hanbou\ ;
+地髪 < jigami\ ;
+防禦 < bougyo\ ;
+細胞 < saibou\ ;
+日勤 < nikkin\ ;
+点茶 < tencha\ ;
+長途 < chouto\ ;
+予備馬 < yobiba\ ;
+気化器 < kikaki\ ;
+摘芽 < tekiga\ ;
+雄松 < omatsu\ ;
+早出 < hayade\ ;
+奇妙 < kimyou\ ;
+外径 < gaikei\ ;
+外征 < gaisei\ ;
+接頭 < settou\ ;
+訓点 < kunten\ ;
+武者絵 < mushae\ ;
+論外 < rongai\ ;
+夜店 < yomise\ ;
+絃線 < gensen\ ;
+諾否 < dakuhi\ ;
+無痛 < mutsuu\ ;
+無病 < mubyou\ ;
+壟断 < roudan\ ;
+片刃 < kataha\ ;
+敵影 < tekiei\ ;
+絹目 < kinume\ ;
+煮汁 < nijiru\ ;
+裾野 < susono\ ;
+夜市 < yoichi\ ;
+大山 < taizan\ ;
+諸君 < shokun\ ;
+霜害 < sougai\ ;
+改易 < kaieki\ ;
+壮挙 < soukyo\ ;
+紅葉 < momiji\ ;
+斎宮 < saiguu\ ;
+難所 < nansho\ ;
+奪取 < dasshu\ ;
+太守 < taishu\ ;
+斉射 < seisha\ ;
+変形 < henkei\ ;
+素肌 < suhada\ ;
+太字 < futoji\ ;
+天孫 < tenson\ ;
+雑損 < zasson\ ;
+日傘 < higasa\ ;
+革具 < kawagu\ ;
+面前 < menzen\ ;
+霊峰 < reihou\ ;
+隷書 < reisho\ ;
+角皮 < kakuhi\ ;
+数年 < suunen\ ;
+奮励 < funrei\ ;
+非力 < hiriki\ ;
+諭告 < yukoku\ ;
+風土記 < fudoki\ ;
+文官 < bunkan\ ;
+旬余 < jun''yo\ ;
+紅茶 < koucha\ ;
+細緻 < saichi\ ;
+埋蔵 < maizou\ ;
+霊山 < reizan\ ;
+裏門 < uramon\ ;
+電工 < denkou\ ;
+斜塔 < shatou\ ;
+夜寒 < yozamu\ ;
+塩煮 < shioni\ ;
+諸刃 < moroha\ ;
+埋葬 < maisou\ ;
+綿毛 < watage\ ;
+結社 < kessha\ ;
+褒貶 < houhen\ ;
+累累 < ruirui\ ;
+地霊 < chirei\ ;
+夜学 < yagaku\ ;
+日伊 < nichii\ ;
+角界 < kakkai\ ;
+敏感 < binkan\ ;
+敷居 < shikii\ ;
+炭肺 < tanhai\ ;
+煙毒 < endoku\ ;
+熱意 < netsui\ ;
+地階 < chikai\ ;
+旅券 < ryoken\ ;
+隣村 < rinson\ ;
+面倒 < mendou\ ;
+日中 < hinaka\ ;
+契合 < keigou\ ;
+霊媒 < reibai\ ;
+米銭 < beisen\ ;
+語学 < gogaku\ ;
+誘導 < yuudou\ ;
+雑感 < zakkan\ ;
+斎場 < saijou\ ;
+女体 < nyotai\ ;
+面体 < mentei\ ;
+奉呈 < houtei\ ;
+撃破 < gekiha\ ;
+面会 < menkai\ ;
+売店 < baiten\ ;
+論叢 < ronsou\ ;
+電子 < denshi\ ;
+爵位 < shakui\ ;
+女人 < nyonin\ ;
+絶版 < zeppan\ ;
+雪崩 < nadare\ ;
+紛紛 < funpun\ ;
+壮年 < sounen\ ;
+大型 < oogata\ ;
+純綿 < junmen\ ;
+塩湯 < shioyu\ ;
+女中 < jochuu\ ;
+門衛 < mon''ei\ ;
+垂訓 < suikun\ ;
+防犯 < bouhan\ ;
+熱帯 < nettai\ ;
+焚火 < takibi\ ;
+改悪 < kaiaku\ ;
+純系 < junkei\ ;
+奥伝 < okuden\ ;
+塩浴 < enyoku\ ;
+談合 < dangou\ ;
+霊域 < reiiki\ ;
+論判 < ronpan\ ;
+煮方 < nikata\ ;
+熊手 < kumade\ ;
+純粋 < junsui\ ;
+読図 < dokuzu\ ;
+火蓋 < hibuta\ ;
+調和 < chouwa\ ;
+調味 < choumi\ ;
+旅人 < ryojin\ ;
+総数 < sousuu\ ;
+雑巾 < zoukin\ ;
+隅木 < sumiki\ ;
+親疎 < shinso\ ;
+方便 < houben\ ;
+離宮 < rikyuu\ ;
+絢爛 < kenran\ ;
+御河童 < okappa\ ;
+外地 < gaichi\ ;
+塩気 < shioke\ ;
+接近 < sekkin\ ;
+雄弁 < yuuben\ ;
+米軍 < beigun\ ;
+改廃 < kaihai\ ;
+階数 < kaisuu\ ;
+地金 < jigane\ ;
+調印 < chouin\ ;
+籤運 < kujiun\ ;
+濁音 < dakuon\ ;
+大和 < yamato\ ;
+談判 < danpan\ ;
+長蛇 < chouda\ ;
+方今 < houkon\ ;
+紅粉 < beniko\ ;
+地酒 < jizake\ ;
+隻影 < sekiei\ ;
+土鍋 < donabe\ ;
+灰色 < haiiro\ ;
+天台 < tendai\ ;
+大君 < taikun\ ;
+陰核 < inkaku\ ;
+細目 < hosome\ ;
+提要 < teiyou\ ;
+火花 < hibana\ ;
+雑居 < zakkyo\ ;
+埋線 < maisen\ ;
+数回 < suukai\ ;
+奕世 < ekisei\ ;
+齦 < haguki\ ;
+大半 < taihan\ ;
+鼈 < suppon\ ;
+褐藻 < kassou\ ;
+黜 < chutsu\ ;
+無毒 < mudoku\ ;
+大匙 < oosaji\ ;
+絶海 < zekkai\ ;
+雄峰 < yuuhou\ ;
+納税 < nouzei\ ;
+土釜 < dogama\ ;
+大勢 < taizei\ ;
+緒戦 < chosen\ ;
+麓 < fumoto\ ;
+大勇 < taiyuu\ ;
+裳裾 < mosuso\ ;
+除核 < jokaku\ ;
+解毒 < gedoku\ ;
+陰暦 < inreki\ ;
+無欲 < muyoku\ ;
+誣告 < bukoku\ ;
+大分 < daibun\ ;
+大刀 < daitou\ ;
+雑婚 < zakkon\ ;
+損耗 < sonmou\ ;
+圧迫 < appaku\ ;
+大凡 < ooyoso\ ;
+随所 < zuisho\ ;
+雅客 < gakaku\ ;
+天兵 < tenpei\ ;
+鵥 < kakesu\ ;
+隠忍 < in''nin\ ;
+除服 < jofuku\ ;
+鴬 < uguisu\ ;
+大全 < taizen\ ;
+鴎 < kamome\ ;
+電命 < denmei\ ;
+補註 < hochuu\ ;
+摸牌 < moupai\ ;
+愛煙家 < aienka\ ;
+部屋着 < heyagi\ ;
+霊剣 < reiken\ ;
+数名 < suumei\ ;
+表音 < hyouon\ ;
+予備費 < yobihi\ ;
+外勤 < gaikin\ ;
+随感 < zuikan\ ;
+鱸 < suzuki\ ;
+炯眼 < keigan\ ;
+鱰 < shiira\ ;
+夜凪 < yonagi\ ;
+随想 < zuisou\ ;
+鰹 < katsuo\ ;
+推論 < suiron\ ;
+鰯 < iwashi\ ;
+変名 < henmei\ ;
+給油 < kyuuyu\ ;
+鰚 < haraka\ ;
+終焉 < shuuen\ ;
+鰆 < sawara\ ;
+熱型 < nekkei\ ;
+雷同 < raidou\ ;
+霧中 < muchuu\ ;
+鯱 < shachi\ ;
+鯰 < namazu\ ;
+鯨 < kujira\ ;
+鯣 < surume\ ;
+数千 < suusen\ ;
+数十 < suujuu\ ;
+要用 < youyou\ ;
+続映 < zokuei\ ;
+埴生 < hanyuu\ ;
+外出 < sotode\ ;
+雲呑 < wantan\ ;
+鮪 < maguro\ ;
+結滞 < kettai\ ;
+鮖 < kajika\ ;
+炉端 < robata\ ;
+雑報 < zappou\ ;
+累犯 < ruihan\ ;
+推計 < suikei\ ;
+照応 < shouou\ ;
+縫合 < hougou\ ;
+四隣 < shirin\ ;
+外典 < gaiten\ ;
+瀘過器 < rokaki\ ;
+四隅 < yosumi\ ;
+堅牢 < kenrou\ ;
+火縄 < hinawa\ ;
+変動 < hendou\ ;
+随従 < zuijuu\ ;
+雄大 < yuudai\ ;
+文例 < bunrei\ ;
+難問 < nanmon\ ;
+教唆 < kyousa\ ;
+探訪 < tanbou\ ;
+捻転 < nenten\ ;
+教員 < kyouin\ ;
+図録 < zuroku\ ;
+大代 < daidai\ ;
+補助員 < hojoin\ ;
+裏襟 < uraeri\ ;
+土足 < dosoku\ ;
+外債 < gaisai\ ;
+授賞 < jushou\ ;
+見物 < mimono\ ;
+天丼 < tendon\ ;
+大乱 < tairan\ ;
+照度 < shoudo\ ;
+文人 < bunjin\ ;
+大乗 < daijou\ ;
+売品 < baihin\ ;
+天与 < ten''yo\ ;
+地謡 < jiutai\ ;
+製茶 < seicha\ ;
+夜伽 < yotogi\ ;
+多作 < tasaku\ ;
+長者 < chouja\ ;
+売名 < baimei\ ;
+塊根 < kaikon\ ;
+焚書 < funsho\ ;
+摂生 < sessei\ ;
+関空 < kankuu\ ;
+無明 < mumyou\ ;
+比丘尼 < bikuni\ ;
+国運 < kokuun\ ;
+閉経 < heikei\ ;
+血餅 < keppei\ ;
+電停 < dentei\ ;
+数値 < suuchi\ ;
+関税 < kanzei\ ;
+数倍 < suubai\ ;
+夜中 < yonaka\ ;
+散兵 < sanpei\ ;
+外人 < gaijin\ ;
+壇場 < danjou\ ;
+捨身 < sutemi\ ;
+塗料 < toryou\ ;
+素焼 < suyaki\ ;
+煙幕 < enmaku\ ;
+外乱 < gairan\ ;
+雑品 < zappin\ ;
+解散 < kaisan\ ;
+擱座 < kakuza\ ;
+精精 < seizei\ ;
+絶景 < zekkei\ ;
+許容 < kyoyou\ ;
+地裁 < chisai\ ;
+精粉 < seifun\ ;
+鞐 < kohaze\ ;
+捕逸 < hoitsu\ ;
+救助 < kyuujo\ ;
+精米 < seimai\ ;
+改善 < kaizen\ ;
+圧覚 < akkaku\ ;
+数人 < suunin\ ;
+陰徳 < intoku\ ;
+火種 < hidane\ ;
+霞 < kasumi\ ;
+霙 < mizore\ ;
+設定 < settei\ ;
+詩吟 < shigin\ ;
+雛 < hiyoko\ ;
+累減 < ruigen\ ;
+純然 < junzen\ ;
+数万 < suuman\ ;
+変乱 < henran\ ;
+波止場 < hatoba\ ;
+陪従 < baijuu\ ;
+衣鉢 < ihatsu\ ;
+被覆 < hifuku\ ;
+炯炯 < keikei\ ;
+炭火 < sumibi\ ;
+国費 < kokuhi\ ;
+地虫 < mimizu\ ;
+回遊 < kaiyuu\ ;
+観桜 < kan''ou\ ;
+易動度 < idoudo\ ;
+垂範 < suihan\ ;
+難件 < nanken\ ;
+訓導 < kundou\ ;
+鑢 < yasuri\ ;
+絵図面 < ezumen\ ;
+敗亡 < haibou\ ;
+売人 < bainin\ ;
+潮間 < shioma\ ;
+裸婦画 < rafuga\ ;
+離乳 < rinyuu\ ;
+裏芸 < uragei\ ;
+回転 < kaiten\ ;
+場数 < bakazu\ ;
+火皿 < hizara\ ;
+歩一歩 < hoippo\ ;
+増大 < zoudai\ ;
+縁先 < ensaki\ ;
+三十路 < misoji\ ;
+売上 < uriage\ ;
+雑俳 < zappai\ ;
+国語 < kokugo\ ;
+錺 < kazari\ ;
+経書 < keisho\ ;
+改元 < kaigen\ ;
+換算 < kanzan\ ;
+粗粗 < araara\ ;
+炊爨 < suisan\ ;
+激語 < gekigo\ ;
+紡毛 < boumou\ ;
+無心 < mushin\ ;
+紫檀 < shitan\ ;
+縁側 < engawa\ ;
+不沙汰 < busata\ ;
+銍 < chitsu\ ;
+補習 < hoshuu\ ;
+陣屋 < jin''ya\ ;
+雑件 < zakken\ ;
+鉋 < kan''na\ ;
+不死身 < fujimi\ ;
+雑人 < zounin\ ;
+練兵 < renpei\ ;
+墓場 < hakaba\ ;
+雅俗 < gazoku\ ;
+醪 < moromi\ ;
+放任 < hounin\ ;
+加奈陀 < kanada\ ;
+推考 < suikou\ ;
+純毛 < junmou\ ;
+紅涙 < kourui\ ;
+素樸 < soboku\ ;
+噴飯 < funpan\ ;
+継子 < mamako\ ;
+純正 < junsei\ ;
+覇業 < hagyou\ ;
+火玉 < hidama\ ;
+訪問 < houmon\ ;
+長目 < nagame\ ;
+統御 < tougyo\ ;
+遖 < appare\ ;
+蟻食 < arikui\ ;
+搾油 < sakuyu\ ;
+以遠権 < ienken\ ;
+衿裏 < eriura\ ;
+補給 < hokyuu\ ;
+施餓鬼 < segaki\ ;
+評価 < hyouka\ ;
+門番 < monban\ ;
+図表 < zuhyou\ ;
+迚 < totemo\ ;
+米綿 < beimen\ ;
+塹壕 < zangou\ ;
+三重県 < mieken\ ;
+緑化 < ryokka\ ;
+陋屋 < rouoku\ ;
+地肌 < jihada\ ;
+防弾 < boudan\ ;
+御沙汰 < gosata\ ;
+言外 < gengai\ ;
+総勢 < souzei\ ;
+回訓 < kaikun\ ;
+結成 < kessei\ ;
+軈 < yagate\ ;
+約款 < yakkan\ ;
+躻 < utsuke\ ;
+躮 < segare\ ;
+撤廃 < teppai\ ;
+因襲 < inshuu\ ;
+米粉 < beifun\ ;
+煩労 < hanrou\ ;
+墨刑 < bokkei\ ;
+無学 < mugaku\ ;
+毛繻子 < kejusu\ ;
+描破 < byouha\ ;
+摘果 < tekika\ ;
+陰嚢 < fuguri\ ;
+踵 < kakato\ ;
+不同意 < fudoui\ ;
+拳銃 < kenjuu\ ;
+節酒 < sesshu\ ;
+噴門 < funmon\ ;
+表裏 < hyouri\ ;
+随分 < zuibun\ ;
+絶対 < zettai\ ;
+粗目 < zarame\ ;
+漢音 < kan''on\ ;
+指輪 < yubiwa\ ;
+粉砕 < funsai\ ;
+陰唇 < inshin\ ;
+隣人 < rinjin\ ;
+米突 < mētoru\ ;
+素敵 < suteki\ ;
+増刊 < zoukan\ ;
+増分 < zoubun\ ;
+潮路 < shioji\ ;
+術計 < jukkei\ ;
+納杯 < nouhai\ ;
+衆議 < shuugi\ ;
+点数 < tensuu\ ;
+納本 < nouhon\ ;
+拳道 < kondou\ ;
+陣営 < jin''ei\ ;
+紙数 < shisuu\ ;
+紛擾 < funjou\ ;
+門灯 < montou\ ;
+拠金 < kyokin\ ;
+門火 < kadobi\ ;
+絶好 < zekkou\ ;
+素描 < sobyou\ ;
+袱紗 < fukusa\ ;
+随伴 < zuihan\ ;
+提琴 < teikin\ ;
+記入 < kinyuu\ ;
+在米 < zaibei\ ;
+覚悟 < kakugo\ ;
+増俸 < zouhou\ ;
+増便 < zoubin\ ;
+訁 < gonben\ ;
+漏電 < rouden\ ;
+予備科 < yobika\ ;
+褐炭 < kattan\ ;
+掻痒 < souyou\ ;
+炉棚 < rodana\ ;
+境内 < keidai\ ;
+推知 < suichi\ ;
+火水 < himizu\ ;
+要所 < yousho\ ;
+地税 < chizei\ ;
+絹地 < kinuji\ ;
+江戸前 < edomae\ ;
+精液 < seieki\ ;
+探知 < tanchi\ ;
+器量 < kiryou\ ;
+蠍 < sasori\ ;
+長湯 < nagayu\ ;
+漸近 < zenkin\ ;
+院内 < in''nai\ ;
+場外 < jougai\ ;
+垂準 < suijun\ ;
+無告 < mukoku\ ;
+訓令 < kunrei\ ;
+累年 < ruinen\ ;
+圧神 < asshin\ ;
+米産 < beisan\ ;
+結婚 < kekkon\ ;
+納所 < nassho\ ;
+蛍 < hotaru\ ;
+撤回 < tekkai\ ;
+籠目 < kagome\ ;
+純愛 < jun''ai\ ;
+手鼻 < tebana\ ;
+長波 < chouha\ ;
+垂涎 < zuizen\ ;
+索引 < sakuin\ ;
+純情 < junjou\ ;
+絶品 < zeppin\ ;
+探番 < tanban\ ;
+門歯 < monshi\ ;
+濃紺 < noukon\ ;
+約手 < yakute\ ;
+薺 < nazuna\ ;
+衰耗 < suimou\ ;
+筆頭 < hittou\ ;
+採用 < saiyou\ ;
+捕縛 < hobaku\ ;
+蕨 < warabi\ ;
+粉炭 < funtan\ ;
+陪乗 < baijou\ ;
+蔶 < sonoko\ ;
+圧着 < atsugi\ ;
+垣根 < kakine\ ;
+蓬 < yomogi\ ;
+解剖 < kaibou\ ;
+統合 < tougou\ ;
+土石 < doseki\ ;
+蒅 < sukumo\ ;
+地番 < chiban\ ;
+焚刑 < funkei\ ;
+細字 < hosoji\ ;
+無償 < mushou\ ;
+終夜 < shuuya\ ;
+言上 < gonjou\ ;
+保護区 < hogoku\ ;
+間服 < aifuku\ ;
+浅茅生 < asajiu\ ;
+無傷 < mukizu\ ;
+撤去 < tekkyo\ ;
+茸 < kinoko\ ;
+因縁 < in''nen\ ;
+嘆願 < tangan\ ;
+澱粉 < denpun\ ;
+要害 < yougai\ ;
+紙屋 < kamiya\ ;
+間数 < makazu\ ;
+国禁 < kokkin\ ;
+挿絵 < sashie\ ;
+地獄 < jigoku\ ;
+垂楊 < suiyou\ ;
+土産 < miyage\ ;
+解体 < kaitai\ ;
+接点 < setten\ ;
+国礎 < kokuso\ ;
+膠 < nikawa\ ;
+端麗 < tanrei\ ;
+血膿 < chiumi\ ;
+解任 < kainin\ ;
+紙子 < kamiko\ ;
+炭層 < tansou\ ;
+撤兵 < teppei\ ;
+累増 < ruizou\ ;
+行者 < gyouja\ ;
+烈士 < resshi\ ;
+漫談 < mandan\ ;
+手駒 < tegoma\ ;
+堅塁 < kenrui\ ;
+家具屋 < kaguya\ ;
+手首 < tekubi\ ;
+小気味 < kokimi\ ;
+炉心 < roshin\ ;
+筆鋒 < hippou\ ;
+堂堂 < doudou\ ;
+親和 < shinwa\ ;
+垂木 < taruki\ ;
+場内 < jounai\ ;
+按腹 < anpuku\ ;
+地点 < chiten\ ;
+闇屋 < yamiya\ ;
+絶世 < zessei\ ;
+組合 < kumiai\ ;
+手頃 < tegoro\ ;
+覆土 < fukudo\ ;
+培地 < baichi\ ;
+回礼 < kairei\ ;
+所願 < shogan\ ;
+結党 < kettou\ ;
+純増 < junzou\ ;
+縅 < odoshi\ ;
+製材 < seizai\ ;
+烙印 < rakuin\ ;
+手際 < tegiwa\ ;
+手隙 < tesuki\ ;
+親分 < oyabun\ ;
+等辺 < touhen\ ;
+点在 < tenzai\ ;
+給与 < kyuuyo\ ;
+炭塵 < tanjin\ ;
+粗服 < sofuku\ ;
+域外 < ikigai\ ;
+細君 < saikun\ ;
+天蚕糸 < tegusu\ ;
+糒 < hoshii\ ;
+拙著 < setcho\ ;
+手長 < tenaga\ ;
+闇夜 < yamiyo\ ;
+国王 < kokuou\ ;
+粉本 < funpon\ ;
+圏点 < kenten\ ;
+火床 < hidoko\ ;
+血管 < kekkan\ ;
+経伝 < keiden\ ;
+表皮 < hyouhi\ ;
+笂 < utsubo\ ;
+排水 < haisui\ ;
+国父 < kokufu\ ;
+細分 < saibun\ ;
+竈 < kamado\ ;
+持続 < jizoku\ ;
+握手 < akushu\ ;
+手鍋 < tenabe\ ;
+竜馬 < ryuume\ ;
+窮鼠 < kyuuso\ ;
+城塁 < jourui\ ;
+滑車 < kassha\ ;
+童顔 < dougan\ ;
+秤 < hakari\ ;
+門弟 < montei\ ;
+戦雲 < sen''un\ ;
+禊 < misogi\ ;
+手鉤 < tekagi\ ;
+湾頭 < wantou\ ;
+納品 < nouhin\ ;
+損害 < songai\ ;
+米材 < beizai\ ;
+異文化 < ibunka\ ;
+満面 < manmen\ ;
+竜頭 < ryuuzu\ ;
+喫飯 < kippan\ ;
+索具 < sakugu\ ;
+裏板 < uraita\ ;
+手酌 < tejaku\ ;
+拙者 < sessha\ ;
+砦 < toride\ ;
+長座 < chouza\ ;
+閉山 < heizan\ ;
+地検 < chiken\ ;
+開封 < kaifuu\ ;
+炭労 < tanrou\ ;
+純分 < junbun\ ;
+坦懐 < tankai\ ;
+満開 < mankai\ ;
+累乗 < ruijou\ ;
+推断 < suidan\ ;
+批評 < hihyou\ ;
+授業 < jugyou\ ;
+位相差 < isousa\ ;
+累世 < ruisei\ ;
+血相 < kessou\ ;
+複座 < fukuza\ ;
+濃淡 < noutan\ ;
+手軽 < tegaru\ ;
+在校 < zaikou\ ;
+褥婦 < jokufu\ ;
+長屋 < nagaya\ ;
+血痰 < kettan\ ;
+開始 < kaishi\ ;
+域内 < ikinai\ ;
+長寿 < chouju\ ;
+在来 < zairai\ ;
+裁断 < saidan\ ;
+瓼 < sarake\ ;
+抜萃 < bassui\ ;
+紛争 < funsou\ ;
+手足 < teashi\ ;
+圧服 < appuku\ ;
+紛乱 < funran\ ;
+潰瘍 < kaiyou\ ;
+推挙 < suikyo\ ;
+国母 < kokubo\ ;
+粒度 < ryuudo\ ;
+地文 < chimon\ ;
+薔薇園 < baraen\ ;
+游魚 < yuugyo\ ;
+土木 < doboku\ ;
+米懇 < beikon\ ;
+閣員 < kakuin\ ;
+門外 < mongai\ ;
+捺染 < nassen\ ;
+城兵 < jouhei\ ;
+漁船 < gyosen\ ;
+過渡期 < katoki\ ;
+闇値 < yamine\ ;
+狸 < tanuki\ ;
+持病 < jibyou\ ;
+長女 < choujo\ ;
+国権 < kokken\ ;
+紊乱 < bunran\ ;
+土方 < dokata\ ;
+打診 < dashin\ ;
+圧搾 < assaku\ ;
+演繹 < en''eki\ ;
+補強 < hokyou\ ;
+門地 < monchi\ ;
+立錐 < rissui\ ;
+善隣 < zenrin\ ;
+戦車 < sensha\ ;
+手許 < temoto\ ;
+衰残 < suizan\ ;
+粉屋 < konaya\ ;
+所論 < shoron\ ;
+団欒 < danran\ ;
+満載 < mansai\ ;
+居場所 < ibasho\ ;
+満車 < mansha\ ;
+在所 < zaisho\ ;
+米帝 < beitei\ ;
+喝采 < kassai\ ;
+蛮風 < banpuu\ ;
+懇願 < kongan\ ;
+筆致 < hitchi\ ;
+図柄 < zugara\ ;
+戊辰 < boshin\ ;
+国是 < kokuze\ ;
+糞便 < funben\ ;
+違和感 < iwakan\ ;
+潮瀬 < shiose\ ;
+童貞 < doutei\ ;
+突風 < toppuu\ ;
+火先 < hosaki\ ;
+米屋 < komeya\ ;
+火元 < himoto\ ;
+地形 < chikei\ ;
+渚 < nagisa\ ;
+精勤 < seikin\ ;
+抜糸 < basshi\ ;
+穴馬 < anauma\ ;
+火傷 < yakedo\ ;
+滅菌 < mekkin\ ;
+生蕎麦 < kisoba\ ;
+筆耕 < hikkou\ ;
+鎮護 < chingo\ ;
+蛮隷 < banrei\ ;
+涎 < yodare\ ;
+筆者 < hissha\ ;
+在役 < zaieki\ ;
+地平 < chihei\ ;
+推定 < suitei\ ;
+問題 < mondai\ ;
+門前 < monzen\ ;
+四桁 < yoketa\ ;
+行殊 < gyoujo\ ;
+空音 < sorane\ ;
+圧延 < atsuen\ ;
+門出 < kadode\ ;
+採寸 < saisun\ ;
+扶翼 < fuyoku\ ;
+汀 < migiwa\ ;
+氵 < sanzui\ ;
+籠居 < roukyo\ ;
+懸軍 < kengun\ ;
+空電 < kuuden\ ;
+製品 < seihin\ ;
+空際 < kuusai\ ;
+鍛錬 < tanren\ ;
+国技 < kokugi\ ;
+録音 < rokuon\ ;
+所蔵 < shozou\ ;
+開会 < kaikai\ ;
+潟湖 < sekiko\ ;
+不気味 < bukimi\ ;
+喉輪 < nodowa\ ;
+渋面 < juumen\ ;
+閉会 < heikai\ ;
+筆紙 < hisshi\ ;
+空閨 < kuukei\ ;
+演目 < enmoku\ ;
+空間 < kuukan\ ;
+樵 < kikori\ ;
+樮 < hokuso\ ;
+才芸 < saigei\ ;
+複利 < fukuri\ ;
+裏声 < uragoe\ ;
+滞納 < tainou\ ;
+拠点 < kyoten\ ;
+手芸 < shugei\ ;
+測鉛 < sokuen\ ;
+在官 < zaikan\ ;
+噴煙 < fun''en\ ;
+楔 < kusabi\ ;
+漂砂 < hyousa\ ;
+門人 < monjin\ ;
+椪 < kunugi\ ;
+筆算 < hissan\ ;
+国恩 < kokuon\ ;
+才腕 < saiwan\ ;
+困憊 < konpai\ ;
+節水 < sessui\ ;
+筆端 < hittan\ ;
+手腕 < shuwan\ ;
+潜水 < sensui\ ;
+激怒 < gekido\ ;
+才能 < sainou\ ;
+鍛造 < tanzou\ ;
+栞 < shiori\ ;
+地変 < chihen\ ;
+血栓 < kessen\ ;
+手職 < tejoku\ ;
+窓辺 < madobe\ ;
+術数 < jussuu\ ;
+李 < sumomo\ ;
+濁度 < dakudo\ ;
+在天 < zaiten\ ;
+在外 < zaigai\ ;
+血書 < kessho\ ;
+地域 < chiiki\ ;
+暦 < koyomi\ ;
+減配 < genpai\ ;
+積雲 < sekiun\ ;
+昴 < subaru\ ;
+満蒙 < manmou\ ;
+御歳暮 < oseibo\ ;
+漸減 < zengen\ ;
+滑空 < kakkuu\ ;
+深間 < fukama\ ;
+血斑 < keppan\ ;
+稚鰤 < warasa\ ;
+減退 < gentai\ ;
+端艇 < tantei\ ;
+接吻 < seppun\ ;
+拘泥 < koudei\ ;
+筋目 < sujime\ ;
+稚鮎 < chiayu\ ;
+予備員 < yobiin\ ;
+蜥蜴 < tokage\ ;
+拝殿 < haiden\ ;
+稚魚 < chigyo\ ;
+映画化 < eigaka\ ;
+噴水 < funsui\ ;
+手紙 < tegami\ ;
+篆書 < tensho\ ;
+種類 < shurui\ ;
+清酒 < seishu\ ;
+粉体 < funtai\ ;
+商運 < shouun\ ;
+空転 < kuuten\ ;
+欧印語 < ouingo\ ;
+均分 < kinbun\ ;
+滅私 < messhi\ ;
+空軍 < kuugun\ ;
+空車 < kuusha\ ;
+粋人 < suijin\ ;
+図案家 < zuanka\ ;
+手籠 < tekago\ ;
+満腔 < mankou\ ;
+披瀝 < hireki\ ;
+手箱 < tebako\ ;
+手管 < tekuda\ ;
+手筋 < tesuji\ ;
+手筈 < tehazu\ ;
+挙手 < kyoshu\ ;
+扖 < hameru\ ;
+突貫 < tokkan\ ;
+竹縁 < takeen\ ;
+排卵 < hairan\ ;
+湯花 < yubana\ ;
+懇請 < konsei\ ;
+懇談 < kondan\ ;
+捨場 < suteba\ ;
+湯船 < yubune\ ;
+衆愚 < shuugu\ ;
+憖 < namaji\ ;
+深部 < shinbu\ ;
+戸籍 < koseki\ ;
+節操 < sessou\ ;
+被告 < hikoku\ ;
+滅相 < messou\ ;
+端線 < tansen\ ;
+端緒 < tancho\ ;
+在勤 < zaikin\ ;
+潔斎 < kessai\ ;
+圧勝 < asshou\ ;
+海鼠 < namako\ ;
+接伴 < seppan\ ;
+竹簀 < takesu\ ;
+地元 < jimoto\ ;
+液面 < ekimen\ ;
+蛇足 < dasoku\ ;
+国土 < kokudo\ ;
+応援歌 < ouenka\ ;
+空論 < kuuron\ ;
+空談 < kuudan\ ;
+彠 < kuwaku\ ;
+漁港 < gyokou\ ;
+愛鳥 < aichou\ ;
+廓 < kuruwa\ ;
+蠱惑 < kowaku\ ;
+排便 < haiben\ ;
+国営 < kokuei\ ;
+幟 < nobori\ ;
+幉 < tazuna\ ;
+拮据 < kikkyo\ ;
+振子 < furiko\ ;
+噸数 < tonsuu\ ;
+漁法 < gyohou\ ;
+団塊 < dankai\ ;
+地代 < chidai\ ;
+喫緊 < kikkin\ ;
+手癖 < tekuse\ ;
+錯誤 < sakugo\ ;
+税関 < zeikan\ ;
+嵐 < arashi\ ;
+漁民 < gyomin\ ;
+在住 < zaijuu\ ;
+蚊鉤 < kabari\ ;
+在任 < zainin\ ;
+潮干 < shiohi\ ;
+海魚 < kaigyo\ ;
+算数 < sansuu\ ;
+土俵 < dohyou\ ;
+土俗 < dozoku\ ;
+打球 < dakyuu\ ;
+鼻鏡 < bikyou\ ;
+授乳 < junyuu\ ;
+海驢 < ashika\ ;
+漫文 < manbun\ ;
+表土 < hyoudo\ ;
+国務 < kokumu\ ;
+我等 < warera\ ;
+挽回 < bankai\ ;
+空虚 < kuukyo\ ;
+土中 < dochuu\ ;
+所産 < shosan\ ;
+嫟 < jiyuku\ ;
+融点 < yuuten\ ;
+漢文 < kanbun\ ;
+手玉 < tedama\ ;
+喪章 < moshou\ ;
+団員 < dan''in\ ;
+手狭 < tezema\ ;
+国光 < kokkou\ ;
+銀鱗 < ginrin\ ;
+阿蘭陀 < oranda\ ;
+啓蒙 < keimou\ ;
+衆多 < shuuta\ ;
+税金 < zeikin\ ;
+黒鵐 < kuroji\ ;
+蠏座 < kaniza\ ;
+漁村 < gyoson\ ;
+海難 < kainan\ ;
+空荷 < karani\ ;
+四千 < yonsen\ ;
+四十 < yonjuu\ ;
+国会 < kokkai\ ;
+圷 < akutsu\ ;
+図体 < zuutai\ ;
+箱屋 < hakoya\ ;
+滅法 < meppou\ ;
+抵抗 < teikou\ ;
+濁世 < dakuse\ ;
+無慈悲 < mujihi\ ;
+齲蝕 < ushoku\ ;
+表具 < hyougu\ ;
+漁撈 < gyorou\ ;
+減耗 < genmou\ ;
+行司 < gyouji\ ;
+受話器 < juwaki\ ;
+窒素 < chisso\ ;
+鋭角 < eikaku\ ;
+秘録 < hiroku\ ;
+翻車魚 < manbou\ ;
+不出来 < fudeki\ ;
+衰亡 < suibou\ ;
+竜王 < ryuuou\ ;
+噴射 < funsha\ ;
+后 < kisaki\ ;
+問罪 < monzai\ ;
+雑魚寝 < zakone\ ;
+厠 < kawaya\ ;
+蛇腹 < jabara\ ;
+伊太利 < itarii\ ;
+手水 < temizu\ ;
+愛郷 < aikyou\ ;
+饂飩粉 < udonko\ ;
+手毬 < temari\ ;
+折折 < oriori\ ;
+湯玉 < yudama\ ;
+挙動 < kyodou\ ;
+流音 < ryuuon\ ;
+手段 < shudan\ ;
+流露 < ryuuro\ ;
+把捉 < hasoku\ ;
+流離 < ryuuri\ ;
+鼠賊 < sozoku\ ;
+甘海老 < amaebi\ ;
+挙兵 < kyohei\ ;
+温突 < ondoru\ ;
+手機 < tebata\ ;
+兜 < kabuto\ ;
+拷問 < goumon\ ;
+融朗 < yuurou\ ;
+麺類 < menrui\ ;
+減算 < genzan\ ;
+手業 < tewaza\ ;
+漸増 < zenzou\ ;
+海軍 < kaigun\ ;
+消費 < shouhi\ ;
+浪速 < naniwa\ ;
+銀鉱 < ginkou\ ;
+問答 < mondou\ ;
+吹鳴 < suimei\ ;
+筆才 < hissai\ ;
+銀鈴 < ginrei\ ;
+清純 < seijun\ ;
+筆戦 < hissen\ ;
+小馬鹿 < kobaka\ ;
+虚誕 < kyotan\ ;
+淋菌 < rinkin\ ;
+減税 < genzei\ ;
+策応 < sakuou\ ;
+空空 < kuukuu\ ;
+競歩 < kyouho\ ;
+温石 < onjaku\ ;
+虚言 < kyogen\ ;
+手柄 < tegara\ ;
+手枷 < tekase\ ;
+混線 < konsen\ ;
+仇 < kataki\ ;
+筆意 < hitsui\ ;
+手札 < tefuda\ ;
+御菓子 < okashi\ ;
+答弁 < touben\ ;
+洗顔 < sengan\ ;
+浜辺 < hamabe\ ;
+黒鉛 < kokuen\ ;
+満水 < mansui\ ;
+戸棚 < todana\ ;
+鼎談 < teidan\ ;
+湿気 < shikke\ ;
+我流 < garyuu\ ;
+悪風 < akufuu\ ;
+洗面 < senmen\ ;
+洋風 < youfuu\ ;
+空砲 < kuuhou\ ;
+潜像 < senzou\ ;
+愛読 < aidoku\ ;
+所望 < shomou\ ;
+所有 < shoyuu\ ;
+黒酒 < kuroki\ ;
+打撲 < daboku\ ;
+禅門 < zenmon\ ;
+打撃 < dageki\ ;
+三知土 < tataki\ ;
+洞門 < doumon\ ;
+吸飲 < kyuuin\ ;
+空目 < sorame\ ;
+湯水 < yumizu\ ;
+悪霊 < akurei\ ;
+手摺 < tesuri\ ;
+節会 < sechie\ ;
+我欲 < gayoku\ ;
+湯殿 < yudono\ ;
+端株 < hakabu\ ;
+湧水 < yuusui\ ;
+営業 < eigyou\ ;
+減産 < gensan\ ;
+賓位語 < hinigo\ ;
+手拭 < tefuki\ ;
+吹雪 < fubuki\ ;
+溺愛 < dekiai\ ;
+筋子 < sujiko\ ;
+鉄鋼 < tekkou\ ;
+悌順 < teijun\ ;
+洗錬 < senren\ ;
+満杯 < manpai\ ;
+薬餌 < yakuji\ ;
+福運 < fukuun\ ;
+摩莫枳 < mamaki\ ;
+薫風 < kunpuu\ ;
+録画 < rokuga\ ;
+漆器 < shikki\ ;
+浄財 < jouzai\ ;
+虎落 < mogari\ ;
+温灸 < onkyuu\ ;
+悪銭 < akusen\ ;
+名香 < meikou\ ;
+和訳 < wayaku\ ;
+涙腺 < ruisen\ ;
+抱卵 < houran\ ;
+払底 < futtei\ ;
+洋銀 < yougin\ ;
+鎮撫 < chinbu\ ;
+喪服 < mofuku\ ;
+和親 < washin\ ;
+手役 < teyaku\ ;
+銀製 < ginsei\ ;
+黙許 < mokkyo\ ;
+手形 < tegata\ ;
+打席 < daseki\ ;
+薫陶 < kuntou\ ;
+手引 < tebiki\ ;
+渾沌 < konton\ ;
+演劇 < engeki\ ;
+禁輸 < kin''yu\ ;
+浮薄 < fuhaku\ ;
+同類 < dourui\ ;
+洋酒 < youshu\ ;
+手帳 < techou\ ;
+成敗 < seibai\ ;
+虚聞 < kyobun\ ;
+鈍間 < noroma\ ;
+針魚 < hariyo\ ;
+波間 < namima\ ;
+鼓膜 < komaku\ ;
+憫然 < binzen\ ;
+悪道 < akudou\ ;
+波長 < hachou\ ;
+鼓腹 < kofuku\ ;
+法難 < hounan\ ;
+沸騰 < futtou\ ;
+笠子 < kasago\ ;
+活計 < kakkei\ ;
+滞在 < taizai\ ;
+渡渉 < toshou\ ;
+金魚 < kingyo\ ;
+銘茶 < meicha\ ;
+私蔵 < shizou\ ;
+味覚 < mikaku\ ;
+龕灯 < gandou\ ;
+黴菌 < baikin\ ;
+抜剣 < bakken\ ;
+善根 < zenkon\ ;
+名門 < meimon\ ;
+空港 < kuukou\ ;
+錘状 < suijou\ ;
+溶媒 < youbai\ ;
+沿革 < enkaku\ ;
+小百合 < sayuri\ ;
+端役 < hayaku\ ;
+呉越 < goetsu\ ;
+混然 < konzen\ ;
+筋合 < sujiai\ ;
+減法 < genpou\ ;
+空洞 < kuudou\ ;
+源平 < genpei\ ;
+名鑑 < meikan\ ;
+野駒 < nogoma\ ;
+浮腫 < mukumi\ ;
+麻裏 < asaura\ ;
+種痘 < shutou\ ;
+鈍重 < donjuu\ ;
+所定 < shotei\ ;
+涙管 < ruikan\ ;
+所存 < shozon\ ;
+泥酔 < deisui\ ;
+減殺 < gensai\ ;
+減段 < gentan\ ;
+鎮座 < chinza\ ;
+合鍵 < aikagi\ ;
+立憲 < rikken\ ;
+礼金 < reikin\ ;
+満干 < mankan\ ;
+禽舎 < kinsha\ ;
+告諭 < kokuyu\ ;
+空欄 < kuuran\ ;
+没頭 < bottou\ ;
+句集 < kushuu\ ;
+手塩 < teshio\ ;
+湿布 < shippu\ ;
+端山 < hayama\ ;
+竜座 < ryuuza\ ;
+鉄製 < tessei\ ;
+受領 < juryou\ ;
+渇水 < kassui\ ;
+烏帽子 < eboshi\ ;
+合金 < goukin\ ;
+混淆 < konkou\ ;
+品等 < hintou\ ;
+悪言 < akugen\ ;
+喜悦 < kietsu\ ;
+鼓笛 < koteki\ ;
+麻薬 < mayaku\ ;
+端子 < tanshi\ ;
+虚礼 < kyorei\ ;
+融合 < yuugou\ ;
+同邦 < douhou\ ;
+懇書 < konsho\ ;
+湾岸 < wangan\ ;
+満山 < manzan\ ;
+才噸 < saiton\ ;
+稲熱 < imochi\ ;
+鎮守 < chinju\ ;
+品種 < hinshu\ ;
+黄菊 < kigiku\ ;
+愚策 < gusaku\ ;
+各部 < kakubu\ ;
+祖父母 < sofubo\ ;
+波路 < namiji\ ;
+反面 < hanmen\ ;
+十六夜 < izayoi\ ;
+所在 < shozai\ ;
+悪血 < oketsu\ ;
+慨然 < gaizen\ ;
+競売 < keibai\ ;
+藻草 < mogusa\ ;
+移着 < ichaku\ ;
+祝詞 < norito\ ;
+同輩 < douhai\ ;
+急須 < kyuusu\ ;
+秘策 < hisaku\ ;
+消磨 < shouma\ ;
+憎気 < nikuge\ ;
+同車 < dousha\ ;
+湖心 < koshin\ ;
+種火 < tanebi\ ;
+手品 < tejina\ ;
+我家 < wagaya\ ;
+空曹 < kuusou\ ;
+迂回路 < ukairo\ ;
+才名 < saimei\ ;
+社賓 < shahin\ ;
+液状 < ekijou\ ;
+襤褸家 < boroya\ ;
+恵贈 < keizou\ ;
+礼賛 < raisan\ ;
+穂波 < honami\ ;
+鏤刻 < rukoku\ ;
+金銀 < kingin\ ;
+銀経 < ginkei\ ;
+和綴 < watoji\ ;
+青紫蘇 < aojiso\ ;
+緑啄木鳥 < aogera\ ;
+銀糸 < ginshi\ ;
+淡水 < tansui\ ;
+空文 < kuubun\ ;
+吟詠 < gin''ei\ ;
+銀粉 < ginpun\ ;
+懦弱 < dajaku\ ;
+恭賀 < kyouga\ ;
+卵黄 < ran''ou\ ;
+満塁 < manrui\ ;
+恩賞 < onshou\ ;
+水黽 < amenbo\ ;
+哀痛 < aitsuu\ ;
+麦芽 < bakuga\ ;
+台車 < daisha\ ;
+品番 < hinban\ ;
+手写 < shusha\ ;
+法論 < houron\ ;
+手先 < tesaki\ ;
+恩讐 < onshuu\ ;
+原音 < gen''on\ ;
+空挺 < kuutei\ ;
+鈍行 < donkou\ ;
+手傷 < tekizu\ ;
+空拳 < kuuken\ ;
+針路 < shinro\ ;
+同訓 < doukun\ ;
+金輪 < kanawa\ ;
+沢辺 < sawabe\ ;
+鼈甲 < bekkou\ ;
+空手 < karate\ ;
+礼装 < reisou\ ;
+空所 < kuusho\ ;
+念願 < nengan\ ;
+合計 < goukei\ ;
+麻織 < asaori\ ;
+呪縛 < jubaku\ ;
+空戦 < kuusen\ ;
+慨歎 < gaitan\ ;
+念頭 < nentou\ ;
+科白 < serifu\ ;
+薮蚊 < yabuka\ ;
+満員 < man''in\ ;
+叛軍 < hangun\ ;
+黄粉 < kinako\ ;
+鎖国 < sakoku\ ;
+愁眉 < shuubi\ ;
+麻絲 < asaito\ ;
+才人 < saijin\ ;
+同衾 < doukin\ ;
+立地 < ritchi\ ;
+黒穂 < kurobo\ ;
+情緒 < joucho\ ;
+沃野 < yokuya\ ;
+愛猫 < aibyou\ ;
+醸造 < jouzou\ ;
+湾口 < wankou\ ;
+銃眼 < juugan\ ;
+章句 < shouku\ ;
+憶念 < okunen\ ;
+戦前 < senzen\ ;
+鸞輿 < ran''yo\ ;
+憧憬 < doukei\ ;
+液汁 < ekijuu\ ;
+憤懣 < funman\ ;
+可読 < kadoku\ ;
+懸垂 < kensui\ ;
+税法 < zeihou\ ;
+厳重 < genjuu\ ;
+銀盤 < ginban\ ;
+友軍 < yuugun\ ;
+和睦 < waboku\ ;
+銀盃 < ginpai\ ;
+憤慨 < fungai\ ;
+鉄線 < tessen\ ;
+鼻毛 < hanage\ ;
+口調 < kuchou\ ;
+端倪 < tangei\ ;
+金談 < kindan\ ;
+古註 < kochuu\ ;
+流石 < sasuga\ ;
+鉄粉 < teppun\ ;
+麦粉 < mugiko\ ;
+深手 < fukade\ ;
+黒目 < kurome\ ;
+憐憫 < renbin\ ;
+原野 < gen''ya\ ;
+受諾 < judaku\ ;
+気鬱 < kiutsu\ ;
+薬舗 < yakuho\ ;
+名著 < meicho\ ;
+鉄管 < tekkan\ ;
+重言 < juugon\ ;
+氷霧 < hyoumu\ ;
+金襴 < kinran\ ;
+水面 < minomo\ ;
+禍福 < kafuku\ ;
+氷雨 < hisame\ ;
+鉄筋 < tekkin\ ;
+酔顔 < suigan\ ;
+合著 < goucho\ ;
+禽獣 < kinjuu\ ;
+水雷 < suirai\ ;
+受註 < juchuu\ ;
+水難 < suinan\ ;
+君臨 < kunrin\ ;
+受託 < jutaku\ ;
+戦乱 < senran\ ;
+不具合 < fuguai\ ;
+問屋 < ton''ya\ ;
+鉄窓 < tessou\ ;
+慧敏 < keibin\ ;
+蛇座 < hebiza\ ;
+湯元 < yumoto\ ;
+鼻梁 < biryou\ ;
+反論 < hanron\ ;
+喜劇 < kigeki\ ;
+憂憤 < yuufun\ ;
+感涙 < kanrui\ ;
+穴居 < kekkyo\ ;
+立冬 < rittou\ ;
+憂慮 < yuuryo\ ;
+和独 < wadoku\ ;
+金蝿 < kinbae\ ;
+水門 < suimon\ ;
+善哉 < zenzai\ ;
+単音 < tan''on\ ;
+鉛白 < enpaku\ ;
+参謀 < sanbou\ ;
+憂悶 < yuumon\ ;
+鼻木 < hanagi\ ;
+和牛 < wagyuu\ ;
+薄葉 < usuyou\ ;
+唐戸 < karado\ ;
+合致 < gatchi\ ;
+南面 < nanmen\ ;
+海浜 < kaihin\ ;
+民風 < minpuu\ ;
+悪税 < akuzei\ ;
+吹管 < suikan\ ;
+鉄砲 < teppou\ ;
+各自 < kakuji\ ;
+麻疹 < mashin\ ;
+喧伝 < kenden\ ;
+薄茶 < usucha\ ;
+南隅 < nanguu\ ;
+悪神 < akujin\ ;
+立体 < rittai\ ;
+半音 < han''on\ ;
+南限 < nangen\ ;
+突堤 < tottei\ ;
+喪中 < mochuu\ ;
+減塩 < gen''en\ ;
+渥地 < akuchi\ ;
+淡彩 < tansai\ ;
+海水 < kaisui\ ;
+浮流 < furyuu\ ;
+金蔵 < kinzou\ ;
+愛欲 < aiyoku\ ;
+厳談 < gendan\ ;
+薄色 < usuiro\ ;
+祭礼 < sairei\ ;
+知恵歯 < chieba\ ;
+虚根 < kyokon\ ;
+微震 < bishin\ ;
+酩酊 < meitei\ ;
+同罪 < douzai\ ;
+浮沈 < fuchin\ ;
+水銀 < suigin\ ;
+御題 < gyodai\ ;
+哀楽 < airaku\ ;
+空域 < kuuiki\ ;
+銀漢 < ginkan\ ;
+深山 < miyama\ ;
+野蒜 < nobiru\ ;
+活版 < kappan\ ;
+気長 < kinaga\ ;
+空地 < akichi\ ;
+愛楽 < aigyou\ ;
+野菊 < nogiku\ ;
+民間 < minkan\ ;
+悪相 < akusou\ ;
+御霊 < mitama\ ;
+法網 < houmou\ ;
+悲痛 < hitsuu\ ;
+麦田 < mugita\ ;
+水郷 < suigou\ ;
+合繊 < gousen\ ;
+不起訴 < fukiso\ ;
+慢性 < mansei\ ;
+向米 < koubei\ ;
+銀泥 < gindei\ ;
+虚数 < kyosuu\ ;
+悪疫 < akueki\ ;
+水辺 < mizube\ ;
+稟性 < hinsei\ ;
+鍛冶 < tan''ya\ ;
+悪用 < akuyou\ ;
+愉楽 < yuraku\ ;
+無医村 < muison\ ;
+水車 < suisha\ ;
+虎斑 < torafu\ ;
+後難 < kounan\ ;
+空名 < kuumei\ ;
+錦地 < kinchi\ ;
+鼻息 < bisoku\ ;
+悪球 < akkyuu\ ;
+合算 < gassan\ ;
+海月 < kurage\ ;
+唐子 < karako\ ;
+流派 < ryuuha\ ;
+薄紗 < hakusa\ ;
+混在 < konzai\ ;
+同窓 < dousou\ ;
+銘板 < meiban\ ;
+油絵 < aburae\ ;
+半金 < hankin\ ;
+毛頭 < moutou\ ;
+同種 < doushu\ ;
+重罪 < juuzai\ ;
+酢豚 < subuta\ ;
+千鈞 < senkin\ ;
+空前 < kuuzen\ ;
+応諾 < oudaku\ ;
+減免 < genmen\ ;
+民選 < minsen\ ;
+空冷 < kuurei\ ;
+惚気 < noroke\ ;
+和楽 < waraku\ ;
+怪腕 < kaiwan\ ;
+合祭 < gousai\ ;
+商務 < shoumu\ ;
+悪熱 < anetsu\ ;
+黄水 < kimizu\ ;
+口絵 < kuchie\ ;
+御酌 < oshaku\ ;
+気軽 < kigaru\ ;
+果樹園 < kajuen\ ;
+海損 < kaison\ ;
+慮外 < ryogai\ ;
+酒豪 < shugou\ ;
+半輪 < hanrin\ ;
+金粉 < kinpun\ ;
+当駅 < toueki\ ;
+御遊 < gyoyuu\ ;
+法相 < hossou\ ;
+深味 < fukami\ ;
+原著 < gencho\ ;
+麦湯 < mugiyu\ ;
+同盟 < doumei\ ;
+洪水 < kouzui\ ;
+哀愁 < aishuu\ ;
+吉相 < kissou\ ;
+空似 < sorani\ ;
+和服 < wafuku\ ;
+御転婆 < otenba\ ;
+薬理 < yakuri\ ;
+後金 < atokin\ ;
+鹵獲 < rokaku\ ;
+命根 < meikon\ ;
+錠前 < joumae\ ;
+名産 < meisan\ ;
+愛息 < aisoku\ ;
+泥状 < deijou\ ;
+必見 < hikken\ ;
+反米 < hanbei\ ;
+破鏡 < hakyou\ ;
+重税 < juuzei\ ;
+酢蛸 < sudako\ ;
+叢祠 < hokora\ ;
+従軍 < juugun\ ;
+毛鈎 < kebari\ ;
+部長 < buchou\ ;
+惨敗 < zanpai\ ;
+悪法 < akuhou\ ;
+右目 < migime\ ;
+必衰 < hissui\ ;
+歯黒 < haguro\ ;
+民論 < minron\ ;
+参籠 < sanrou\ ;
+悪水 < akusui\ ;
+愉悦 < yuetsu\ ;
+針目 < harime\ ;
+北部 < hokubu\ ;
+悪気 < warugi\ ;
+矢鱈 < yatara\ ;
+礎石 < soseki\ ;
+浴後 < yokugo\ ;
+卓見 < takken\ ;
+命数 < meisuu\ ;
+残骸 < zangai\ ;
+風呂屋 < furoya\ ;
+泥炭 < deitan\ ;
+名状 < meijou\ ;
+葛餡 < kuzuan\ ;
+沼田 < numada\ ;
+祭殿 < saiden\ ;
+砲金 < houkin\ ;
+古着 < furugi\ ;
+銀扇 < ginsen\ ;
+重石 < omoshi\ ;
+強音 < kyouon\ ;
+汚職 < oshoku\ ;
+混乱 < konran\ ;
+金目 < kaneme\ ;
+意味論 < imiron\ ;
+研鑽 < kensan\ ;
+弱音 < yowane\ ;
+残飯 < zanpan\ ;
+水葬 < suisou\ ;
+半裁 < hansai\ ;
+唯一 < yuitsu\ ;
+無邪気 < mujaki\ ;
+御託 < gotaku\ ;
+微衷 < bichuu\ ;
+半衿 < haneri\ ;
+虚妄 < kyomou\ ;
+決算 < kessan\ ;
+化身 < keshin\ ;
+恬然 < tenzen\ ;
+薬湯 < yakuyu\ ;
+汽笛 < kiteki\ ;
+涼味 < ryoumi\ ;
+水菜 < mizuna\ ;
+海岸 < kaigan\ ;
+悪業 < akugou\ ;
+鉄板 < teppan\ ;
+蓴菜 < junsai\ ;
+含水 < gansui\ ;
+影身 < kagemi\ ;
+毛足 < keashi\ ;
+歯髄 < shizui\ ;
+落馬 < rakuba\ ;
+双眼 < sougan\ ;
+反省 < hansei\ ;
+注油 < chuuyu\ ;
+郷軍 < gougun\ ;
+沈砂 < chinsa\ ;
+勧銀 < kangin\ ;
+医術 < ijutsu\ ;
+風呂場 < furoba\ ;
+感奮 < kanpun\ ;
+涙嚢 < ruinou\ ;
+卵胞 < ranhou\ ;
+野球 < yakyuu\ ;
+呉服 < gofuku\ ;
+神楽 < kagura\ ;
+忠義 < chuugi\ ;
+水腫 < suishu\ ;
+藍染 < aizome\ ;
+悪書 < akusho\ ;
+洋本 < youhon\ ;
+君民 < kunmin\ ;
+葉陰 < hakage\ ;
+阿蘇山 < asosan\ ;
+沸点 < futten\ ;
+恬淡 < tentan\ ;
+黙座 < mokuza\ ;
+液剤 < ekizai\ ;
+殿軍 < dengun\ ;
+弊風 < heifuu\ ;
+金牌 < kinpai\ ;
+銅山 < douzan\ ;
+海外 < kaigai\ ;
+郵貯 < yuucho\ ;
+野牛 < yagyuu\ ;
+活性 < kassei\ ;
+社殿 < shaden\ ;
+重版 < juuhan\ ;
+悪文 < akubun\ ;
+御家芸 < oiegei\ ;
+配膳 < haizen\ ;
+銀山 < ginzan\ ;
+忍耐 < nintai\ ;
+悪政 < akusei\ ;
+祭文 < saimon\ ;
+各派 < kakuha\ ;
+遺骨 < ikotsu\ ;
+黒巾 < kurogo\ ;
+恩沢 < ontaku\ ;
+海域 < kaiiki\ ;
+愛国 < aikoku\ ;
+鉄拳 < tekken\ ;
+名残 < nagori\ ;
+虚名 < kyomei\ ;
+弾道 < dandou\ ;
+民芸 < mingei\ ;
+哺乳 < honyuu\ ;
+台湾 < taiwan\ ;
+永続 < eizoku\ ;
+正面 < matomo\ ;
+重灰 < juukai\ ;
+危絵 < abunae\ ;
+恥毛 < chimou\ ;
+助長 < jochou\ ;
+液体 < ekitai\ ;
+鈍根 < donkon\ ;
+情念 < jounen\ ;
+残金 < zankin\ ;
+毬藻 < marimo\ ;
+薫染 < kunsen\ ;
+毛蟹 < kegani\ ;
+品名 < hinmei\ ;
+悪投 < akutou\ ;
+原盤 < genban\ ;
+動輪 < dourin\ ;
+悪才 < akusai\ ;
+治水 < chisui\ ;
+黒子 < hokuro\ ;
+勇邁 < yuumai\ ;
+悲愁 < hishuu\ ;
+殊遇 < shuguu\ ;
+悪態 < akutai\ ;
+古流 < koryuu\ ;
+十能 < juunou\ ;
+銀塊 < ginkai\ ;
+藻屑 < mokuzu\ ;
+同根 < doukon\ ;
+黙契 < mokkei\ ;
+重液 < juueki\ ;
+毒蛾 < dokuga\ ;
+金泥 < kondei\ ;
+池畔 < chihan\ ;
+同村 < douson\ ;
+名札 < nafuda\ ;
+単純 < tanjun\ ;
+大部屋 < oobeya\ ;
+蘊奥 < un''nou\ ;
+快眠 < kaimin\ ;
+悪念 < akunen\ ;
+同朋 < doubou\ ;
+合板 < gouban\ ;
+金気 < kanake\ ;
+秘匿 < hitoku\ ;
+福寿 < fukuju\ ;
+合本 < gappon\ ;
+遭難 < sounan\ ;
+重水 < juusui\ ;
+水禽 < suikin\ ;
+虚伝 < kyoden\ ;
+南米 < nanbei\ ;
+鶏群 < keigun\ ;
+堕胎医 < dataii\ ;
+単簡 < tankan\ ;
+悪弊 < akuhei\ ;
+復縁 < fukuen\ ;
+黽勉 < binben\ ;
+禅尼 < zen''ni\ ;
+同断 < doudan\ ;
+取水 < shusui\ ;
+浄域 < jouiki\ ;
+酒税 < shuzei\ ;
+同文 < doubun\ ;
+勝訴 < shouso\ ;
+同数 < dousuu\ ;
+従者 < juusha\ ;
+合方 < aikata\ ;
+原版 < genpan\ ;
+薄板 < usuita\ ;
+南端 < nantan\ ;
+強談 < goudan\ ;
+秀句 < shuuku\ ;
+古楽 < kogaku\ ;
+鈍才 < donsai\ ;
+藻塩 < moshio\ ;
+反毛 < hanmou\ ;
+水着 < mizugi\ ;
+碑石 < hiseki\ ;
+加速 < kasoku\ ;
+汚物 < obutsu\ ;
+台本 < daihon\ ;
+鶏糞 < keifun\ ;
+水盤 < suiban\ ;
+千篇 < senpen\ ;
+鈍感 < donkan\ ;
+毛脛 < kezune\ ;
+鳳輦 < houren\ ;
+不用意 < fuyoui\ ;
+久慈目 < kujime\ ;
+建造 < kenzou\ ;
+刺魚 < togeuo\ ;
+部落 < buraku\ ;
+号数 < gousuu\ ;
+銃剣 < juuken\ ;
+参殿 < sanden\ ;
+水疱 < suihou\ ;
+右文 < yuubun\ ;
+古木 < koboku\ ;
+君恩 < kun''on\ ;
+大御代 < oomiyo\ ;
+微禄 < biroku\ ;
+碁石 < goishi\ ;
+水田 < suiden\ ;
+底魚 < sokouo\ ;
+秘中 < hichuu\ ;
+殺菌 < sakkin\ ;
+銘仙 < meisen\ ;
+弱行 < jakkou\ ;
+呼名 < yobina\ ;
+決水 < kessui\ ;
+同憂 < douyuu\ ;
+銅像 < douzou\ ;
+歓迎 < kangei\ ;
+鉄塔 < tettou\ ;
+同感 < doukan\ ;
+浪人 < rounin\ ;
+剔除 < tekijo\ ;
+没書 < bossho\ ;
+鷹派 < takaha\ ;
+前電 < zenden\ ;
+想像 < souzou\ ;
+取材 < shuzai\ ;
+蘭人 < ranjin\ ;
+菌類 < kinrui\ ;
+神宮 < jinguu\ ;
+卵状 < ranjou\ ;
+悪天 < akuten\ ;
+遭遇 < souguu\ ;
+削除 < sakujo\ ;
+半睡 < hansui\ ;
+吾妹 < wagimo\ ;
+右折 < usetsu\ ;
+原油 < gen''yu\ ;
+歳計 < saikei\ ;
+性根 < shoune\ ;
+葛藤 < kattou\ ;
+悪場 < waruba\ ;
+右手 < migite\ ;
+叉木 < matagi\ ;
+歩調 < hochou\ ;
+原民 < genmin\ ;
+名店 < meiten\ ;
+券面 < kenmen\ ;
+干鱈 < hidara\ ;
+合弁 < gouben\ ;
+弁論 < benron\ ;
+流儀 < ryuugi\ ;
+水煮 < mizuni\ ;
+座長 < zachou\ ;
+毒素 < dokuso\ ;
+底面 < teimen\ ;
+彼等 < karera\ ;
+厘毛 < rinmou\ ;
+去来 < kyorai\ ;
+弁解 < benkai\ ;
+運針 < unshin\ ;
+古手 < furute\ ;
+毛筋 < kesuji\ ;
+社屋 < shaoku\ ;
+可惜 < attara\ ;
+遊金 < yuukin\ ;
+君子 < kunshi\ ;
+利鞘 < rizaya\ ;
+怨敵 < onteki\ ;
+有意義 < yuuigi\ ;
+野薔薇 < nobara\ ;
+恋愛 < ren''ai\ ;
+欠配 < keppai\ ;
+命令 < meirei\ ;
+名山 < meizan\ ;
+真鴨 < magamo\ ;
+連関 < renkan\ ;
+汀渚 < teisho\ ;
+御目見得 < omemie\ ;
+同居 < doukyo\ ;
+遅配 < chihai\ ;
+梅雨期 < baiuki\ ;
+恵存 < keizon\ ;
+同封 < doufuu\ ;
+台形 < daikei\ ;
+恋恋 < renren\ ;
+遠足 < ensoku\ ;
+前金 < maekin\ ;
+剥身 < mukimi\ ;
+水源 < suigen\ ;
+送風 < soufuu\ ;
+遺言 < yuigon\ ;
+息子 < musuko\ ;
+悪名 < akumei\ ;
+原案 < gen''an\ ;
+祖国 < sokoku\ ;
+蔵書 < zousho\ ;
+悪友 < akuyuu\ ;
+幽霊 < yuurei\ ;
+悲劇 < higeki\ ;
+座金 < zagane\ ;
+反戦 < hansen\ ;
+度量 < doryou\ ;
+野心 < yashin\ ;
+勃興 < bokkou\ ;
+化石 < kaseki\ ;
+社外 < shagai\ ;
+古廟 < kobyou\ ;
+広間 < hiroma\ ;
+氷河 < hyouga\ ;
+平面 < heimen\ ;
+吻合 < fungou\ ;
+分類 < bunrui\ ;
+後生 < goshou\ ;
+快楽 < keraku\ ;
+薬園 < yakuen\ ;
+息女 < sokujo\ ;
+法外 < hougai\ ;
+鉄傘 < tessan\ ;
+幽閉 < yuuhei\ ;
+忍法 < ninpou\ ;
+同大 < doudai\ ;
+役目 < yakume\ ;
+著者 < chosha\ ;
+名声 < meisei\ ;
+古巣 < furusu\ ;
+水気 < mizuke\ ;
+年限 < nengen\ ;
+沢庵 < takuan\ ;
+毒矢 < dokuya\ ;
+合奏 < gassou\ ;
+毛皮 < kegawa\ ;
+南溟 < nanmei\ ;
+目鼻 < mehana\ ;
+都督 < totoku\ ;
+南満 < nanman\ ;
+運賃 < unchin\ ;
+原文 < genbun\ ;
+麦価 < bakuka\ ;
+禁令 < kinrei\ ;
+藩主 < hanshu\ ;
+知育 < chiiku\ ;
+効能 < kounou\ ;
+分際 < bunzai\ ;
+遁走 < tonsou\ ;
+吉報 < kippou\ ;
+怠慢 < taiman\ ;
+造酒 < zoushu\ ;
+分院 < bun''in\ ;
+分限 < bungen\ ;
+思慮 < shiryo\ ;
+凱風 < gaifuu\ ;
+怨念 < on''nen\ ;
+化生 < keshou\ ;
+金山 < kinzan\ ;
+悟入 < gonyuu\ ;
+逸足 < issoku\ ;
+砥石 < toishi\ ;
+古家 < furuie\ ;
+薬味 < yakumi\ ;
+眼鏡 < megane\ ;
+真青 < massao\ ;
+半減 < hangen\ ;
+号外 < gougai\ ;
+達観 < takkan\ ;
+出際 < degiwa\ ;
+収差 < shuusa\ ;
+決意 < ketsui\ ;
+底辺 < teihen\ ;
+君命 < kunmei\ ;
+野宿 < nojuku\ ;
+短編 < tanpen\ ;
+葛粉 < kuzuko\ ;
+通運 < tsuuun\ ;
+薄塩 < usujio\ ;
+悪人 < akunin\ ;
+連載 < rensai\ ;
+別邸 < bettei\ ;
+波及 < hakyuu\ ;
+原拠 < genkyo\ ;
+弩級 < dokyuu\ ;
+毛玉 < kedama\ ;
+里子 < satogo\ ;
+社命 < shamei\ ;
+歯肉 < haniku\ ;
+荷鞍 < nigura\ ;
+石粉 < ishiko\ ;
+悩乱 < nouran\ ;
+厄日 < yakubi\ ;
+南欧 < nan''ou\ ;
+耳鼻科 < jibika\ ;
+遊覧 < yuuran\ ;
+遮蔽 < shahei\ ;
+薬効 < yakkou\ ;
+名品 < meihin\ ;
+社友 < shayuu\ ;
+郡県 < gunken\ ;
+重婚 < juukon\ ;
+送金 < soukin\ ;
+厚手 < atsude\ ;
+幕間 < makuai\ ;
+年金 < nenkin\ ;
+反射 < hansha\ ;
+反対 < hantai\ ;
+名吟 < meigin\ ;
+目高 < medaka\ ;
+返電 < henden\ ;
+鈍刀 < dontou\ ;
+破獄 < hagoku\ ;
+油圧 < yuatsu\ ;
+卯月 < udzuki\ ;
+水木 < mizuki\ ;
+砂礫 < sareki\ ;
+怒張 < dochou\ ;
+画架座 < gakaza\ ;
+分銅 < fundou\ ;
+不安気 < fuange\ ;
+逸話 < itsuwa\ ;
+草魚 < sougyo\ ;
+即時 < sokuji\ ;
+弁者 < bensha\ ;
+通路 < tsuuro\ ;
+蓮根 < renkon\ ;
+合同 < goudou\ ;
+近隣 < kinrin\ ;
+大出来 < oodeki\ ;
+重変 < juuhen\ ;
+風邪気 < kazeke\ ;
+荒馬 < arauma\ ;
+快挙 < kaikyo\ ;
+分野 < bun''ya\ ;
+酒杯 < shuhai\ ;
+同勢 < douzei\ ;
+気楽 < kiraku\ ;
+民権 < minken\ ;
+刃針 < habari\ ;
+武器庫 < bukiko\ ;
+参宮 < sanguu\ ;
+分配 < bunpai\ ;
+遺脱 < idatsu\ ;
+述 < jutsu\ ;
+必 < hitsu\ ;
+辻 < tsuji\ ;
+徹 < tetsu\ ;
+瞥 < betsu\ ;
+後 < nochi\ ;
+律 < ritsu\ ;
+着 < chaku\ ;
+式 < shiki\ ;
+皺 < shiwa\ ;
+躅 < choku\ ;
+百 < hyaku\ ;
+白 < shiro\ ;
+發 < hotsu\ ;
+発 < hatsu\ ;
+幸 < sachi\ ;
+年 < toshi\ ;
+癪 < shaku\ ;
+巴 < tomoe\ ;
+病 < yamai\ ;
+略 < ryaku\ ;
+畜 < chiku\ ;
+町 < machi\ ;
+男 < otoko\ ;
+由 < yoshi\ ;
+島 < shima\ ;
+質 < tachi\ ;
+岸 < kishi\ ;
+屈 < kutsu\ ;
+尻 < shiri\ ;
+實 < jitsu\ ;
+察 < satsu\ ;
+密 < mitsu\ ;
+宴 < utage\ ;
+客 < kyaku\ ;
+猾 < katsu\ ;
+説 < setsu\ ;
+詰 < kitsu\ ;
+爺 < jijii\ ;
+爪 < tsume\ ;
+訣 < ketsu\ ;
+觸 < shoku\ ;
+角 < tsuno\ ;
+妻 < tsuma\ ;
+熱 < netsu\ ;
+西 < nishi\ ;
+奴 < yatsu\ ;
+奪 < datsu\ ;
+夏 < natsu\ ;
+烈 < retsu\ ;
+袷 < awase\ ;
+炎 < honoo\ ;
+境 < sakai\ ;
+塵 < chiri\ ;
+塚 < tsuka\ ;
+基 < motoi\ ;
+埒 < rachi\ ;
+齢 < yowai\ ;
+鼾 < ibiki\ ;
+蜂 < hachi\ ;
+黐 < mochi\ ;
+滅 < metsu\ ;
+蚕 < kaiko\ ;
+鹿 < shika\ ;
+虫 < mushi\ ;
+虞 < osore\ ;
+噂 < uwasa\ ;
+淵 < fuchi\ ;
+鷲 < washi\ ;
+淑 < shuku\ ;
+鶴 < tsuru\ ;
+喇 < ratsu\ ;
+唾 < tsuba\ ;
+泉 < izumi\ ;
+油 < abura\ ;
+没 < botsu\ ;
+咄 < totsu\ ;
+汁 < tsuyu\ ;
+鰌 < dojou\ ;
+吉 < kichi\ ;
+口 < kuchi\ ;
+単 < hitoe\ ;
+卒 < sotsu\ ;
+次 < tsugi\ ;
+櫛 < kushi\ ;
+芝 < shiba\ ;
+力 < ryoku\ ;
+艶 < tsuya\ ;
+橋 < hashi\ ;
+樫 < kashi\ ;
+舌 < shita\ ;
+刃 < yaiba\ ;
+腰 < koshi\ ;
+兎 < usagi\ ;
+兀 < kotsu\ ;
+脈 < myaku\ ;
+飯 < meshi\ ;
+梨 < nashi\ ;
+梢 < kozue\ ;
+梓 < azusa\ ;
+額 < hitai\ ;
+頁 < peiji\ ;
+翁 < okina\ ;
+鞭 < muchi\ ;
+鞄 < kaban\ ;
+松 < matsu\ ;
+罰 < batsu\ ;
+罪 < tsumi\ ;
+佛 < butsu\ ;
+位 < kurai\ ;
+伸 < noshi\ ;
+霰 < arare\ ;
+霜 < shimo\ ;
+月 < tsuki\ ;
+曲 < kyoku\ ;
+雜 < zatsu\ ;
+仙 < sento\ ;
+雇 < yatoi\ ;
+乾 < hoshi\ ;
+主 < nushi\ ;
+綱 < tsuna\ ;
+絶 < zetsu\ ;
+終 < owari\ ;
+操 < misao\ ;
+節 < bushi\ ;
+箒 < houki\ ;
+答 < kotae\ ;
+拂 < futsu\ ;
+戦 < ikusa\ ;
+道 < michi\ ;
+逹 < tatsu\ ;
+逆 < gyaku\ ;
+瞽者 < kosha\ ;
+名前 < namae\ ;
+帰順 < kijun\ ;
+座視 < zashi\ ;
+快打 < kaida\ ;
+送辞 < souji\ ;
+名利 < meiri\ ;
+眉間 < miken\ ;
+磁性 < jisei\ ;
+薬価 < yakka\ ;
+砲煙 < houen\ ;
+礼儀 < reigi\ ;
+法具 < hougu\ ;
+吏党 < ritou\ ;
+目顔 < megao\ ;
+碑文 < hibun\ ;
+連語 < rengo\ ;
+重囲 < choui\ ;
+沮喪 < sosou\ ;
+遺習 < ishuu\ ;
+選者 < senja\ ;
+歌聖 < kasei\ ;
+造語 < zougo\ ;
+砲火 < houka\ ;
+蒸気 < jouki\ ;
+怪奇 < kaiki\ ;
+連記 < renki\ ;
+重器 < juuki\ ;
+加糖 < katou\ ;
+恩典 < onten\ ;
+序論 < joron\ ;
+毅然 < kizen\ ;
+制覇 < seiha\ ;
+歎美 < tanbi\ ;
+退路 < tairo\ ;
+応手 < oushu\ ;
+速記 < sokki\ ;
+波乱 < haran\ ;
+応戦 < ousen\ ;
+連覇 < renpa\ ;
+怨声 < ensei\ ;
+油単 < yutan\ ;
+序詞 < joshi\ ;
+医業 < igyou\ ;
+序言 < jogen\ ;
+忘我 < bouga\ ;
+荷重 < kajuu\ ;
+区検 < kuken\ ;
+南斗 < nanto\ ;
+沽券 < koken\ ;
+半期 < hanki\ ;
+同価 < douka\ ;
+動画 < douga\ ;
+河南 < kanan\ ;
+薄刃 < usuba\ ;
+加算 < kasan\ ;
+年賦 < nenpu\ ;
+口味 < koumi\ ;
+迷路 < meiro\ ;
+油剤 < yuzai\ ;
+年賀 < nenga\ ;
+可動 < kadou\ ;
+年貢 < nengu\ ;
+御株 < okabu\ ;
+厨子 < zushi\ ;
+別記 < bekki\ ;
+吏人 < rijin\ ;
+各個 < kakko\ ;
+邪知 < jachi\ ;
+古参 < kosan\ ;
+法事 < houji\ ;
+蕃夷 < ban''i\ ;
+重味 < omomi\ ;
+樹齢 < jurei\ ;
+千木 < chigi\ ;
+恵与 < keiyo\ ;
+酸度 < sando\ ;
+励磁 < reiji\ ;
+剣舞 < kenbu\ ;
+法主 < hossu\ ;
+母港 < bokou\ ;
+野合 < yagou\ ;
+同事 < douji\ ;
+可分 < kabun\ ;
+野史 < yashi\ ;
+助祭 < josai\ ;
+各位 < kakui\ ;
+御札 < ofuda\ ;
+過般 < kahan\ ;
+分賦 < bunpu\ ;
+種々 < shuju\ ;
+忘恩 < bouon\ ;
+待機 < taiki\ ;
+恩人 < onjin\ ;
+忌憚 < kitan\ ;
+運航 < unkou\ ;
+河内 < hanoi\ ;
+恨事 < konji\ ;
+性器 < seiki\ ;
+怒声 < dosei\ ;
+機首 < kishu\ ;
+列記 < rekki\ ;
+古制 < kosei\ ;
+反哺 < hanpo\ ;
+十日 < tooka\ ;
+御昼 < ohiru\ ;
+都民 < tomin\ ;
+看過 < kanka\ ;
+古刀 < kotou\ ;
+弥生 < yayoi\ ;
+送話 < souwa\ ;
+平語 < heigo\ ;
+毒気 < dokke\ ;
+矛盾 < mujun\ ;
+破水 < hasui\ ;
+金利 < kinri\ ;
+泉下 < senka\ ;
+返辞 < henji\ ;
+鵞毛 < gamou\ ;
+叙勲 < jokun\ ;
+沖合 < okiai\ ;
+古典 < koten\ ;
+鯨飲 < geiin\ ;
+重利 < juuri\ ;
+印影 < in''ei\ ;
+単打 < tanda\ ;
+御数 < okazu\ ;
+受動 < judou\ ;
+道義 < dougi\ ;
+後架 < kouka\ ;
+遠縁 < tooen\ ;
+分課 < bunka\ ;
+邦画 < houga\ ;
+野党 < yatou\ ;
+着衣 < yakui\ ;
+受刑 < jukei\ ;
+毎次 < maiji\ ;
+後期 < kouki\ ;
+蕩児 < touji\ ;
+油井 < yusei\ ;
+建碑 < kenpi\ ;
+冥闇 < meian\ ;
+布陣 < fujin\ ;
+荒野 < kouya\ ;
+治下 < chika\ ;
+辺鄙 < henpi\ ;
+酒徒 < shuto\ ;
+機雷 < kirai\ ;
+歌稿 < kakou\ ;
+弧状 < kojou\ ;
+遷移 < sen''i\ ;
+帰還 < kikan\ ;
+歯痛 < haita\ ;
+民戸 < minko\ ;
+加盟 < kamei\ ;
+菊花 < kikka\ ;
+古例 < korei\ ;
+台下 < daika\ ;
+刻苦 < kokku\ ;
+母権 < boken\ ;
+古体 < kotai\ ;
+往来 < ourai\ ;
+受像 < juzou\ ;
+句会 < kukai\ ;
+古伝 < koden\ ;
+応対 < outai\ ;
+危峰 < kihou\ ;
+殺気 < sakki\ ;
+助産 < josan\ ;
+帰農 < kinou\ ;
+古代 < kodai\ ;
+古今 < kokon\ ;
+古人 < kojin\ ;
+違約 < iyaku\ ;
+原図 < genzu\ ;
+十手 < jitte\ ;
+民意 < min''i\ ;
+参加 < sanka\ ;
+冶金 < yakin\ ;
+石火 < sekka\ ;
+兵馬 < heiba\ ;
+御所 < gosho\ ;
+野人 < yajin\ ;
+弁疏 < benso\ ;
+原器 < genki\ ;
+造花 < zouka\ ;
+帝都 < teito\ ;
+英魂 < eikon\ ;
+厭味 < iyami\ ;
+危害 < kigai\ ;
+店舗 < tenpo\ ;
+配布 < haifu\ ;
+段歩 < tanbu\ ;
+単座 < tanza\ ;
+叙任 < jonin\ ;
+欧米 < oubei\ ;
+怒号 < dogou\ ;
+永存 < eizon\ ;
+工面 < kumen\ ;
+内需 < naiju\ ;
+受任 < junin\ ;
+後援 < kouen\ ;
+県議 < kengi\ ;
+勤求 < gongu\ ;
+看護 < kango\ ;
+円陣 < enjin\ ;
+酸基 < sanki\ ;
+帰趨 < kisuu\ ;
+当機 < touki\ ;
+弁理 < benri\ ;
+母材 < bozai\ ;
+徒手 < toshu\ ;
+盛運 < seiun\ ;
+歯牙 < shiga\ ;
+民度 < mindo\ ;
+運算 < unzan\ ;
+応変 < ouhen\ ;
+酒家 < shuka\ ;
+弥漫 < biman\ ;
+酒宴 < shuen\ ;
+鮟鱇 < ankou\ ;
+轟音 < gouon\ ;
+御念 < gonen\ ;
+得意 < tokui\ ;
+典雅 < tenga\ ;
+双互 < sougo\ ;
+勘気 < kanki\ ;
+辞退 < jitai\ ;
+原句 < genku\ ;
+遺留 < iryuu\ ;
+機銃 < kijuu\ ;
+都政 < tosei\ ;
+動気 < douki\ ;
+応報 < ouhou\ ;
+幼芽 < youga\ ;
+硬度 < koudo\ ;
+復帰 < fukki\ ;
+欺瞞 < giman\ ;
+遠矢 < tooya\ ;
+過程 < katei\ ;
+水夫 < suifu\ ;
+母斑 < bohan\ ;
+怜俐 < reiri\ ;
+市部 < shibu\ ;
+劫火 < gouka\ ;
+冥途 < meido\ ;
+参事 < sanji\ ;
+御幣 < gohei\ ;
+弾機 < danki\ ;
+遠眼 < engan\ ;
+破摧 < hasai\ ;
+近衛 < konoe\ ;
+短波 < tanpa\ ;
+遠目 < toome\ ;
+醇化 < junka\ ;
+判者 < hanja\ ;
+破損 < hason\ ;
+道破 < douha\ ;
+英霊 < eirei\ ;
+勇気 < yuuki\ ;
+気孔 < kikou\ ;
+加点 < katen\ ;
+酸味 < sanmi\ ;
+冠辞 < kanji\ ;
+英雄 < eiyuu\ ;
+快味 < kaimi\ ;
+平臥 < heiga\ ;
+厚利 < kouri\ ;
+徒弟 < totei\ ;
+短気 < tanki\ ;
+民家 < minka\ ;
+差金 < sakin\ ;
+部数 < busuu\ ;
+広義 < kougi\ ;
+勇武 < yuubu\ ;
+先駆 < senku\ ;
+邪法 < jahou\ ;
+忌垣 < igaki\ ;
+前科 < zenka\ ;
+氏子 < ujiko\ ;
+差配 < sahai\ ;
+短歌 < tanka\ ;
+内野 < naiya\ ;
+相補 < souho\ ;
+弦歌 < genka\ ;
+千家 < senke\ ;
+苦難 < kunan\ ;
+弘法 < guhou\ ;
+機転 < kiten\ ;
+破戒 < hakai\ ;
+毀損 < kison\ ;
+十字 < juuji\ ;
+差遣 < saken\ ;
+御宴 < gyoen\ ;
+勘査 < kansa\ ;
+矮樹 < waiju\ ;
+白雨 < hakuu\ ;
+御宅 < otaku\ ;
+内部 < naibu\ ;
+冷語 < reigo\ ;
+座禅 < zazen\ ;
+荷葉 < kayou\ ;
+苦闘 < kutou\ ;
+辞譲 < jijou\ ;
+医学 < igaku\ ;
+加減 < kagen\ ;
+座礼 < zarei\ ;
+酒器 < shuki\ ;
+左遷 < sasen\ ;
+登院 < touin\ ;
+先非 < senpi\ ;
+運痴 < unchi\ ;
+市費 < shihi\ ;
+往年 < ounen\ ;
+府税 < fuzei\ ;
+研摩 < kenma\ ;
+巡邏 < junra\ ;
+剣璽 < kenji\ ;
+免除 < menjo\ ;
+花魁 < oiran\ ;
+延滞 < entai\ ;
+左辺 < sahen\ ;
+微塵 < mijin\ ;
+部所 < busho\ ;
+匹婦 < hippu\ ;
+光陰 < kouin\ ;
+次男 < jinan\ ;
+加法 < kahou\ ;
+後尾 < koubi\ ;
+円転 < enten\ ;
+道理 < douri\ ;
+歳次 < saiji\ ;
+冗費 < jouhi\ ;
+別箇 < bekko\ ;
+茶話 < chawa\ ;
+母性 < bosei\ ;
+気圏 < kiken\ ;
+市議 < shigi\ ;
+気団 < kidan\ ;
+応分 < oubun\ ;
+御大 < ontai\ ;
+加水 < kasui\ ;
+毛布 < moufu\ ;
+再起 < saiki\ ;
+永劫 < eigou\ ;
+水化 < suika\ ;
+途端 < totan\ ;
+都度 < tsudo\ ;
+母形 < bokei\ ;
+平素 < heiso\ ;
+勿怪 < mokke\ ;
+写譜 < shafu\ ;
+正比 < seihi\ ;
+彼岸 < higan\ ;
+印判 < inpan\ ;
+毎度 < maido\ ;
+全都 < zento\ ;
+印刀 < intou\ ;
+全部 < zenbu\ ;
+水利 < suiri\ ;
+彩度 < saido\ ;
+形影 < keiei\ ;
+別科 < bekka\ ;
+遠火 < toobi\ ;
+葉末 < hazue\ ;
+快事 < kaiji\ ;
+府県 < fuken\ ;
+冗語 < jougo\ ;
+区域 < kuiki\ ;
+巨費 < kyohi\ ;
+御坊 < gobou\ ;
+矢来 < yarai\ ;
+化導 < kedou\ ;
+英邁 < eimai\ ;
+後妻 < gosai\ ;
+比島 < hitou\ ;
+単句 < tanku\ ;
+気品 < kihin\ ;
+再議 < saigi\ ;
+工費 < kouhi\ ;
+勝手 < katte\ ;
+眼窩 < ganka\ ;
+布袋 < hotei\ ;
+艶麗 < enrei\ ;
+優雅 < yuuga\ ;
+毛孔 < keana\ ;
+破屋 < haoku\ ;
+勤惰 < kinda\ ;
+内議 < naigi\ ;
+歔欷 < kyoki\ ;
+輸銀 < yugin\ ;
+全躯 < zenku\ ;
+平穏 < heion\ ;
+即位 < sokui\ ;
+序盤 < joban\ ;
+近習 < kinju\ ;
+模造 < mozou\ ;
+母屋 < omoya\ ;
+魑魅 < chimi\ ;
+永住 < eijuu\ ;
+目茶 < mecha\ ;
+公路 < kouro\ ;
+切符 < kippu\ ;
+横転 < outen\ ;
+年租 < nenso\ ;
+軍鼓 < gunko\ ;
+半可 < hanka\ ;
+半句 < hanku\ ;
+単利 < tanri\ ;
+徳化 < tokka\ ;
+利益 < rieki\ ;
+次点 < jiten\ ;
+当座 < touza\ ;
+従因 < juuin\ ;
+永代 < eitai\ ;
+気勢 < kisei\ ;
+歯朶 < shida\ ;
+歳暮 < seibo\ ;
+彼奴 < aitsu\ ;
+復古 < fukko\ ;
+凄艶 < seien\ ;
+母子 < boshi\ ;
+遠海 < enkai\ ;
+気前 < kimae\ ;
+千古 < senko\ ;
+冷菓 < reika\ ;
+引数 < insuu\ ;
+匪団 < hidan\ ;
+配備 < haibi\ ;
+微動 < bidou\ ;
+永世 < eisei\ ;
+段差 < dansa\ ;
+役夫 < ekifu\ ;
+気分 < kibun\ ;
+酒保 < shuho\ ;
+強意 < kyoui\ ;
+内規 < naiki\ ;
+遠泳 < en''ei\ ;
+草花 < souka\ ;
+酔余 < suiyo\ ;
+蒲団 < futon\ ;
+御台 < midai\ ;
+軍鶏 < shamo\ ;
+連理 < renri\ ;
+邪推 < jasui\ ;
+民利 < minri\ ;
+運漕 < unsou\ ;
+連珠 < renju\ ;
+利用 < riyou\ ;
+微分 < bibun\ ;
+午前 < gozen\ ;
+英資 < eishi\ ;
+内裏 < dairi\ ;
+輸送 < yusou\ ;
+先途 < sendo\ ;
+助攻 < jokou\ ;
+殿宇 < den''u\ ;
+芟除 < sanjo\ ;
+切磋 < sessa\ ;
+民具 < mingu\ ;
+鵄尾 < shibi\ ;
+医博 < ihaku\ ;
+茶菓 < chaka\ ;
+微光 < bikou\ ;
+歩数 < hosuu\ ;
+毎夜 < maiyo\ ;
+武断 < budan\ ;
+単位 < tan''i\ ;
+兼補 < kenpo\ ;
+加数 < kasuu\ ;
+当家 < touke\ ;
+強引 < gouin\ ;
+徒名 < adana\ ;
+御凸 < odeko\ ;
+当字 < ateji\ ;
+配下 < haika\ ;
+公訴 < kouso\ ;
+平癒 < heiyu\ ;
+発起 < hokki\ ;
+気体 < kitai\ ;
+邪慳 < jaken\ ;
+区分 < kubun\ ;
+避暑 < hisho\ ;
+遊泳 < yuuei\ ;
+区処 < kusho\ ;
+母堂 < bodou\ ;
+御免 < gomen\ ;
+御先 < osaki\ ;
+茶舗 < chaho\ ;
+勇往 < yuuou\ ;
+弓手 < yunde\ ;
+南下 < nanka\ ;
+区内 < kunai\ ;
+色香 < iroka\ ;
+徒労 < torou\ ;
+党議 < tougi\ ;
+邪悪 < jaaku\ ;
+年甫 < nenpo\ ;
+部外 < bugai\ ;
+歌書 < kasho\ ;
+剛気 < gouki\ ;
+弧形 < kokei\ ;
+勢家 < seika\ ;
+劃期 < kakki\ ;
+砂岩 < sagan\ ;
+邪恋 < jaren\ ;
+気丈 < kijou\ ;
+復位 < fukui\ ;
+徒刑 < tokei\ ;
+目線 < mesen\ ;
+萌木 < moegi\ ;
+冷罵 < reiba\ ;
+民事 < minji\ ;
+矩形 < kukei\ ;
+遺族 < izoku\ ;
+毛唐 < ketou\ ;
+全裸 < zenra\ ;
+邪念 < janen\ ;
+助成 < josei\ ;
+軍馬 < gunba\ ;
+創案 < souan\ ;
+模試 < moshi\ ;
+遊歩 < yuuho\ ;
+凹眼 < ougan\ ;
+当夜 < touya\ ;
+車馬 < shaba\ ;
+加担 < katan\ ;
+鴨居 < kamoi\ ;
+御供 < otomo\ ;
+徒党 < totou\ ;
+円蓋 < engai\ ;
+千代 < chiyo\ ;
+兄貴 < aniki\ ;
+苦言 < kugen\ ;
+御伽 < otogi\ ;
+化合 < kagou\ ;
+利点 < riten\ ;
+鬼面 < kimen\ ;
+輿論 < yoron\ ;
+十五 < juugo\ ;
+死後 < shigo\ ;
+十二 < juuni\ ;
+横行 < oukou\ ;
+御仁 < gojin\ ;
+後光 < gokou\ ;
+先議 < sengi\ ;
+遠来 < enrai\ ;
+前歯 < maeba\ ;
+遠望 < enbou\ ;
+出番 < deban\ ;
+知己 < chiki\ ;
+励弧 < reiko\ ;
+看破 < kanpa\ ;
+御上 < okami\ ;
+免訴 < menso\ ;
+役務 < ekimu\ ;
+蒙古 < mouko\ ;
+冠者 < kanja\ ;
+廃棄 < haiki\ ;
+利潤 < rijun\ ;
+僧院 < souin\ ;
+軍靴 < gunka\ ;
+冤罪 < enzai\ ;
+遠景 < enkei\ ;
+内苑 < naien\ ;
+廃案 < haian\ ;
+軍需 < gunju\ ;
+鬼門 < kimon\ ;
+遠方 < enpou\ ;
+左舷 < sagen\ ;
+允許 < inkyo\ ;
+帰社 < kisha\ ;
+劣弧 < rekko\ ;
+部品 < buhin\ ;
+砂塵 < sajin\ ;
+初演 < shoen\ ;
+歩廊 < horou\ ;
+歌手 < kashu\ ;
+後事 < kouji\ ;
+勇婦 < yuufu\ ;
+歪度 < waido\ ;
+平炉 < heiro\ ;
+農科 < nouka\ ;
+武弁 < buben\ ;
+都内 < tonai\ ;
+弟子 < deshi\ ;
+左脳 < sanou\ ;
+加年 < kanen\ ;
+近畿 < kinki\ ;
+弁座 < benza\ ;
+別派 < beppa\ ;
+正座 < seiza\ ;
+引導 < indou\ ;
+連歌 < renga\ ;
+魔道 < madou\ ;
+影像 < eizou\ ;
+巫者 < fusha\ ;
+凹版 < ouban\ ;
+内耳 < naiji\ ;
+当否 < touhi\ ;
+利水 < risui\ ;
+造次 < zouji\ ;
+六花 < rikka\ ;
+処理 < shori\ ;
+延引 < en''in\ ;
+睿智 < eichi\ ;
+八苦 < hakku\ ;
+比倫 < hirin\ ;
+過敏 < kabin\ ;
+延延 < en''en\ ;
+動因 < douin\ ;
+弊履 < heiri\ ;
+遺徳 < itoku\ ;
+破倫 < harin\ ;
+北京 < pekin\ ;
+砂嘴 < sashi\ ;
+前期 < zenki\ ;
+次数 < jisuu\ ;
+造機 < zouki\ ;
+比例 < hirei\ ;
+部分 < bubun\ ;
+再縁 < saien\ ;
+目眩 < memai\ ;
+樹脂 < jushi\ ;
+残基 < zanki\ ;
+逸書 < issho\ ;
+都会 < tokai\ ;
+欽慕 < kinbo\ ;
+部内 < bunai\ ;
+六腑 < roppu\ ;
+逓次 < teiji\ ;
+都人 < tojin\ ;
+運搬 < unpan\ ;
+前日 < maebi\ ;
+母体 < botai\ ;
+利権 < riken\ ;
+遷座 < senza\ ;
+加害 < kagai\ ;
+遠慮 < enryo\ ;
+勧化 < kange\ ;
+勇図 < yuuto\ ;
+菩提 < bodai\ ;
+僧都 < souzu\ ;
+武官 < bukan\ ;
+初歩 < shoho\ ;
+石器 < sekki\ ;
+退治 < taiji\ ;
+菲才 < hisai\ ;
+勤務 < kinmu\ ;
+正字 < seiji\ ;
+巨細 < kosai\ ;
+運指 < unshi\ ;
+鳥居 < torii\ ;
+平気 < heiki\ ;
+連架 < renka\ ;
+分派 < bunpa\ ;
+軍部 < gunbu\ ;
+出湯 < ideyu\ ;
+度数 < dosuu\ ;
+遊技 < yuugi\ ;
+退歩 < taiho\ ;
+邦土 < houdo\ ;
+避寒 < hikan\ ;
+部会 < bukai\ ;
+利根 < rikon\ ;
+崎陽 < kiyou\ ;
+年次 < nenji\ ;
+差等 < satou\ ;
+軌道 < kidou\ ;
+遺尿 < inyou\ ;
+死因 < shiin\ ;
+勲位 < kun''i\ ;
+葬具 < sougu\ ;
+円筒 < entou\ ;
+分母 < bunbo\ ;
+茶目 < chame\ ;
+店是 < tenze\ ;
+募兵 < bohei\ ;
+殿下 < denka\ ;
+欝憤 < uppun\ ;
+葬儀 < sougi\ ;
+違心 < ishin\ ;
+弱化 < jakka\ ;
+加増 < kazou\ ;
+遊惰 < yuuda\ ;
+募債 < bosai\ ;
+過怠 < katai\ ;
+出汁 < dashi\ ;
+監理 < kanri\ ;
+前戯 < zengi\ ;
+師父 < shifu\ ;
+庸愚 < yougu\ ;
+引喩 < in''yu\ ;
+帝王 < teiou\ ;
+避妊 < hinin\ ;
+内科 < naika\ ;
+序文 < jobun\ ;
+軍路 < gunro\ ;
+序数 < josuu\ ;
+残務 < zanmu\ ;
+初期 < shoki\ ;
+身重 < miomo\ ;
+座所 < zasho\ ;
+輪舞 < rinbu\ ;
+途方 < tohou\ ;
+儀装 < gisou\ ;
+幽暗 < yuuan\ ;
+英米 < eibei\ ;
+軍費 < gunpi\ ;
+魔街 < magai\ ;
+転訛 < tenka\ ;
+転記 < tenki\ ;
+凱歌 < gaika\ ;
+次年 < jinen\ ;
+遺墨 < iboku\ ;
+遅延 < chien\ ;
+幼時 < youji\ ;
+盆画 < bonga\ ;
+刑期 < keiki\ ;
+年期 < nenki\ ;
+動作 < dousa\ ;
+出様 < deyou\ ;
+芸苑 < geien\ ;
+弧光 < kokou\ ;
+歌壇 < kadan\ ;
+兵科 < heika\ ;
+助命 < jomei\ ;
+高雅 < kouga\ ;
+常温 < jouon\ ;
+前後 < zengo\ ;
+武問 < bumon\ ;
+労務 < roumu\ ;
+差益 < saeki\ ;
+連打 < renda\ ;
+優艶 < yuuen\ ;
+花茎 < kakei\ ;
+砂上 < sajou\ ;
+軍議 < gungi\ ;
+平時 < heiji\ ;
+伊呂波 < iroha\ ;
+円盤 < enban\ ;
+偽電 < giden\ ;
+皮相 < hisou\ ;
+返歌 < henka\ ;
+前座 < zenza\ ;
+痩躯 < souku\ ;
+分木 < bungi\ ;
+正員 < seiin\ ;
+内皮 < naihi\ ;
+模範 < mohan\ ;
+芽胞 < gahou\ ;
+刀架 < touka\ ;
+載荷 < saika\ ;
+皮癬 < hizen\ ;
+遊山 < yusan\ ;
+武名 < bumei\ ;
+亜鉛華 < aenka\ ;
+芙蓉 < fuyou\ ;
+死児 < shiji\ ;
+底意 < sokoi\ ;
+自首 < jishu\ ;
+軍記 < gunki\ ;
+劣化 < rekka\ ;
+遠大 < endai\ ;
+具眼 < gugan\ ;
+次官 < jikan\ ;
+次子 < jishi\ ;
+武勲 < bukun\ ;
+延命 < enmei\ ;
+元素 < genso\ ;
+武勇 < buyuu\ ;
+武功 < bukou\ ;
+廷吏 < teiri\ ;
+円環 < enkan\ ;
+岩魚 < iwana\ ;
+初手 < shote\ ;
+優美 < yuubi\ ;
+儒良 < jugon\ ;
+児童 < jidou\ ;
+歓呼 < kanko\ ;
+鳳凰 < houou\ ;
+知事 < chiji\ ;
+道央 < douou\ ;
+軍衣 < gun''i\ ;
+制度 < seido\ ;
+歩兵 < hohei\ ;
+停音 < teion\ ;
+引例 < inrei\ ;
+痴話 < chiwa\ ;
+加冠 < kakan\ ;
+連座 < renza\ ;
+遠地 < enchi\ ;
+白禍 < hakka\ ;
+過大 < kadai\ ;
+苛税 < kazei\ ;
+遊女 < yuujo\ ;
+輝線 < kisen\ ;
+入相 < iriai\ ;
+芋茎 < zuiki\ ;
+疎開 < sokai\ ;
+前婦 < zenpu\ ;
+偏頗 < henpa\ ;
+遷化 < senge\ ;
+維持費 < ijihi\ ;
+落下 < rakka\ ;
+具現 < gugen\ ;
+冷気 < reiki\ ;
+儒者 < jusha\ ;
+舗道 < hodou\ ;
+先祖 < senzo\ ;
+発破 < happa\ ;
+畳韻 < jouin\ ;
+相棒 < aibou\ ;
+廃園 < haien\ ;
+近時 < kinji\ ;
+魚肥 < gyohi\ ;
+躍起 < yakki\ ;
+花紋 < kamon\ ;
+元祖 < ganso\ ;
+盗汗 < nease\ ;
+武人 < bujin\ ;
+花粉 < kafun\ ;
+舞蹈 < butou\ ;
+幾度 < ikudo\ ;
+次回 < jikai\ ;
+鬱蒼 < ussou\ ;
+舞踊 < buyou\ ;
+輪禍 < rinka\ ;
+刑徒 < keito\ ;
+年後 < nengo\ ;
+連子 < renji\ ;
+相板 < aiban\ ;
+前場 < zenba\ ;
+田麩 < denbu\ ;
+凹所 < ousho\ ;
+偽造 < gizou\ ;
+苦界 < kugai\ ;
+常時 < jouji\ ;
+還付 < kanpu\ ;
+運営 < un''ei\ ;
+年度 < nendo\ ;
+逮夜 < taiya\ ;
+退座 < taiza\ ;
+利害 < rigai\ ;
+艱苦 < kanku\ ;
+次善 < jizen\ ;
+利子 < rishi\ ;
+別家 < bekke\ ;
+遺作 < isaku\ ;
+荒木 < araki\ ;
+岩間 < iwama\ ;
+庭園 < teien\ ;
+鯨波 < geiha\ ;
+年差 < nensa\ ;
+鯨油 < geiyu\ ;
+蹶起 < kekki\ ;
+円満 < enman\ ;
+農期 < nouki\ ;
+判子 < hanko\ ;
+華厳 < kegon\ ;
+遠出 < toode\ ;
+運命 < unmei\ ;
+道化 < douke\ ;
+歌仙 < kasen\ ;
+転義 < tengi\ ;
+次号 < jigou\ ;
+歌人 < kajin\ ;
+相撲 < sumou\ ;
+艶聞 < enbun\ ;
+序奏 < josou\ ;
+近所 < kinjo\ ;
+凡打 < bonda\ ;
+凹形 < oukei\ ;
+舎費 < shahi\ ;
+過勤 < kakin\ ;
+過労 < karou\ ;
+自邸 < jitei\ ;
+運勢 < unsei\ ;
+巨波 < kyoha\ ;
+運動 < undou\ ;
+辞柄 < jihei\ ;
+過剰 < kajou\ ;
+畝間 < unema\ ;
+自選 < jisen\ ;
+辞林 < jirin\ ;
+平家 < heike\ ;
+逸品 < ippin\ ;
+道具 < dougu\ ;
+平安 < heian\ ;
+皆無 < kaimu\ ;
+凡愚 < bongu\ ;
+分岐 < bunki\ ;
+前古 < zenko\ ;
+画餅 < gabei\ ;
+依估地 < ekoji\ ;
+辞書 < jisho\ ;
+造園 < zouen\ ;
+剰余 < jouyo\ ;
+庶務 < shomu\ ;
+画風 < gafuu\ ;
+儀範 < gihan\ ;
+芳眉 < houbi\ ;
+初夜 < shoya\ ;
+樹液 < jueki\ ;
+初夏 < shoka\ ;
+希望 < kibou\ ;
+巨歩 < kyoho\ ;
+幼女 < youjo\ ;
+画題 < gadai\ ;
+分家 < bunke\ ;
+希書 < kisho\ ;
+帰投 < kitou\ ;
+冤枉 < en''ou\ ;
+樹海 < jukai\ ;
+幾夜 < ikuyo\ ;
+幾多 < ikuta\ ;
+次兄 < jikei\ ;
+次元 < jigen\ ;
+迷子 < maigo\ ;
+機械 < kikai\ ;
+座右 < zayuu\ ;
+幻夢 < genmu\ ;
+先父 < senpu\ ;
+遡上 < sojou\ ;
+機根 < kikon\ ;
+偽誓 < gisei\ ;
+造営 < zouei\ ;
+舗装 < hosou\ ;
+異郷 < ikyou\ ;
+画面 < gamen\ ;
+倍音 < baion\ ;
+棋風 < kifuu\ ;
+偽計 < gikei\ ;
+相愛 < souai\ ;
+偽言 < gigen\ ;
+偶語 < guugo\ ;
+機材 < kizai\ ;
+次便 < jibin\ ;
+連呼 < renko\ ;
+左様 < sayou\ ;
+偶詠 < guuei\ ;
+魔神 < majin\ ;
+廊下 < rouka\ ;
+驟雨 < shuuu\ ;
+盲愛 < mouai\ ;
+再案 < saian\ ;
+意気地 < ikuji\ ;
+儀礼 < girei\ ;
+自賛 < jisan\ ;
+連句 < renku\ ;
+路頭 < rotou\ ;
+迷夢 < meimu\ ;
+英法 < eihou\ ;
+自販 < jihan\ ;
+苦渋 < kujuu\ ;
+相応 < souou\ ;
+次代 < jidai\ ;
+尾鰭 < obire\ ;
+師恩 < shion\ ;
+公武 < koubu\ ;
+転移 < ten''i\ ;
+路面 < romen\ ;
+岡辺 < okabe\ ;
+偉蹟 < iseki\ ;
+党派 < touha\ ;
+運上 < unjou\ ;
+業苦 < gouku\ ;
+層雲 < souun\ ;
+座像 < zazou\ ;
+帷幕 < ibaku\ ;
+帷帳 < ichou\ ;
+利口 < rikou\ ;
+機敏 < kibin\ ;
+入歯 < ireba\ ;
+庶事 < shoji\ ;
+魔睡 < masui\ ;
+横死 < oushi\ ;
+軌範 < kihan\ ;
+円本 < enpon\ ;
+儒生 < jusei\ ;
+巡査 < junsa\ ;
+再映 < saiei\ ;
+庵主 < anshu\ ;
+自認 < jinin\ ;
+花片 < kahen\ ;
+鬼神 < kijin\ ;
+輸液 < yueki\ ;
+甘露 < kanro\ ;
+檀徒 < danto\ ;
+異象 < ishou\ ;
+茂林 < morin\ ;
+保養 < hoyou\ ;
+光波 < kouha\ ;
+距離 < kyori\ ;
+左方 < sahou\ ;
+座乗 < zajou\ ;
+樹林 < jurin\ ;
+魔界 < makai\ ;
+平和 < heiwa\ ;
+具有 < guyuu\ ;
+公案 < kouan\ ;
+処女 < shojo\ ;
+帝座 < teiza\ ;
+刑吏 < keiri\ ;
+送受 < souju\ ;
+差損 < sason\ ;
+模様 < moyou\ ;
+機才 < kisai\ ;
+凡夫 < bonpu\ ;
+刻下 < kokka\ ;
+退化 < taika\ ;
+准尉 < jun''i\ ;
+冶工 < yakou\ ;
+横柄 < ouhei\ ;
+典故 < tenko\ ;
+色目 < irome\ ;
+利便 < riben\ ;
+画道 < gadou\ ;
+路銀 < rogin\ ;
+草履 < zouri\ ;
+保険 < hoken\ ;
+年利 < nenri\ ;
+英書 < eisho\ ;
+六日 < muika\ ;
+分区 < bunku\ ;
+八日 < youka\ ;
+公方 < kubou\ ;
+横暴 < oubou\ ;
+冥府 < meifu\ ;
+刑具 < keigu\ ;
+苦杯 < kuhai\ ;
+英明 < eimei\ ;
+檀家 < danka\ ;
+模本 < mohon\ ;
+入日 < irihi\ ;
+尾長 < onaga\ ;
+農婦 < noufu\ ;
+小鬢 < kobin\ ;
+判事 < hanji\ ;
+分利 < bunri\ ;
+英断 < eidan\ ;
+傅育 < fuiku\ ;
+横断 < oudan\ ;
+英文 < eibun\ ;
+凡器 < bonki\ ;
+英数 < eisuu\ ;
+冴寒 < gokan\ ;
+途上 < tojou\ ;
+布巾 < fukin\ ;
+相場 < souba\ ;
+騒音 < souon\ ;
+党是 < touze\ ;
+農奴 < noudo\ ;
+用途 < youto\ ;
+光栄 < kouei\ ;
+茶屋 < chaya\ ;
+輿望 < yobou\ ;
+自著 < jicho\ ;
+児曹 < jisou\ ;
+出前 < demae\ ;
+小馬 < kouma\ ;
+荷台 < nidai\ ;
+甘酢 < amazu\ ;
+苗木 < naegi\ ;
+駻馬 < kanba\ ;
+画賛 < gasan\ ;
+白旗 < hakki\ ;
+送付 < soufu\ ;
+内応 < naiou\ ;
+凍土 < toudo\ ;
+帯地 < obiji\ ;
+辺土 < hendo\ ;
+尾錠 < bijou\ ;
+刑事 < keiji\ ;
+円弾 < endan\ ;
+目垢 < meaka\ ;
+近古 < kinko\ ;
+軽浮 < keifu\ ;
+苛斂 < karen\ ;
+転炉 < tenro\ ;
+農園 < nouen\ ;
+巻尾 < kanbi\ ;
+秋刀魚 < sanma\ ;
+佳麗 < karei\ ;
+艶然 < enzen\ ;
+英才 < eisai\ ;
+腰部 < youbu\ ;
+軽油 < keiyu\ ;
+幇助 < houjo\ ;
+内帑 < naido\ ;
+画談 < gadan\ ;
+写字 < shaji\ ;
+供養 < kuyou\ ;
+倒語 < tougo\ ;
+鬼火 < onibi\ ;
+魚油 < gyoyu\ ;
+帝土 < teido\ ;
+機嫌 < kigen\ ;
+花梨 < karin\ ;
+兌換 < dakan\ ;
+魔法 < mahou\ ;
+苦戦 < kusen\ ;
+傷痍 < shoui\ ;
+候補 < kouho\ ;
+常務 < joumu\ ;
+帰参 < kisan\ ;
+円居 < madoi\ ;
+樹幹 < jukan\ ;
+苦慮 < kuryo\ ;
+馬齢 < barei\ ;
+余齢 < yorei\ ;
+痔瘻 < jirou\ ;
+巨富 < kyofu\ ;
+公庫 < kouko\ ;
+備砲 < bihou\ ;
+公序 < koujo\ ;
+苦情 < kujou\ ;
+茶園 < chaen\ ;
+苦悶 < kumon\ ;
+苦悩 < kunou\ ;
+用語 < yougo\ ;
+左官 < sakan\ ;
+槐樹 < kaiju\ ;
+冗多 < jouta\ ;
+軟派 < nanpa\ ;
+公布 < koufu\ ;
+異腹 < ifuku\ ;
+先手 < sente\ ;
+公差 < kousa\ ;
+茶器 < chaki\ ;
+臓腑 < zoufu\ ;
+鬱滞 < uttai\ ;
+桂馬 < keima\ ;
+返付 < henpu\ ;
+梅酢 < umezu\ ;
+農務 < noumu\ ;
+常備 < joubi\ ;
+苦役 < kueki\ ;
+舌禍 < zekka\ ;
+嵐気 < ranki\ ;
+梵語 < bongo\ ;
+県下 < kenka\ ;
+腕輪 < udewa\ ;
+起電 < kiden\ ;
+師儒 < shiju\ ;
+家鴨 < ahiru\ ;
+寝顔 < negao\ ;
+農具 < nougu\ ;
+市営 < shiei\ ;
+円墳 < enpun\ ;
+色気 < iroke\ ;
+辞去 < jikyo\ ;
+鬼歯 < oniba\ ;
+封鎖 < fuusa\ ;
+英屯 < eiton\ ;
+尖部 < senbu\ ;
+工場 < kouba\ ;
+発布 < happu\ ;
+帰任 < kinin\ ;
+兄後 < anigo\ ;
+八重歯 < yaeba\ ;
+倶者 < kusha\ ;
+俚諺 < rigen\ ;
+俎豆 < sotou\ ;
+生蝋 < kirou\ ;
+克己 < kokki\ ;
+内因 < naiin\ ;
+跛行 < hakou\ ;
+盲亀 < mouki\ ;
+苦寒 < kukan\ ;
+疫痢 < ekiri\ ;
+盛儀 < seigi\ ;
+市区 < shiku\ ;
+馬首 < bashu\ ;
+余香 < yokou\ ;
+登山 < tozan\ ;
+冗句 < jouku\ ;
+大伯父 < oooji\ ;
+農事 < nouji\ ;
+権威 < ken''i\ ;
+目下 < mokka\ ;
+嶮岨 < kenso\ ;
+自社 < jisha\ ;
+疣痔 < iboji\ ;
+余風 < yofuu\ ;
+余類 < yorui\ ;
+児孫 < jison\ ;
+馬頭 < batou\ ;
+甘藻 < amamo\ ;
+家風 < kafuu\ ;
+艶書 < ensho\ ;
+優弧 < yuuko\ ;
+辞令 < jirei\ ;
+棉花 < menka\ ;
+機内 < kinai\ ;
+公図 < kouzu\ ;
+兵営 < heiei\ ;
+田舎 < inaka\ ;
+左右 < sayuu\ ;
+全土 < zendo\ ;
+全図 < zenzu\ ;
+胯間 < kokan\ ;
+画聖 < gasei\ ;
+希代 < kidai\ ;
+小豆 < azuki\ ;
+兵員 < heiin\ ;
+案配 < anbai\ ;
+家電 < kaden\ ;
+内務 < naimu\ ;
+尊貴 < sonki\ ;
+差分 < sabun\ ;
+内助 < naijo\ ;
+瓦解 < gakai\ ;
+冠位 < kan''i\ ;
+梅見 < umemi\ ;
+工務 < koumu\ ;
+模型 < mokei\ ;
+栄養 < eiyou\ ;
+俘虜 < furyo\ ;
+魔手 < mashu\ ;
+低雲 < teiun\ ;
+布令 < furei\ ;
+白堊 < hakua\ ;
+兼務 < kenmu\ ;
+路肩 < roken\ ;
+似顔 < nigao\ ;
+甲羅 < koura\ ;
+自由 < jiyuu\ ;
+棄背 < kihai\ ;
+便衣 < ben''i\ ;
+円光 < enkou\ ;
+自用 < jiyou\ ;
+使途 < shito\ ;
+軽微 < keibi\ ;
+兵匪 < heihi\ ;
+工具 < kougu\ ;
+登坂 < tohan\ ;
+富鉱 < fukou\ ;
+侮言 < bugen\ ;
+輿地 < yochi\ ;
+芸子 < geiko\ ;
+背離 < hairi\ ;
+左傾 < sakei\ ;
+保菌 < hokin\ ;
+八卦 < hakke\ ;
+軽度 < keido\ ;
+巴人 < hajin\ ;
+画紙 < gashi\ ;
+公募 < koubo\ ;
+番目 < banme\ ;
+大伯母 < oooba\ ;
+兼備 < kenbi\ ;
+寄金 < kikin\ ;
+走路 < souro\ ;
+魔弾 < madan\ ;
+岡目 < okame\ ;
+官需 < kanju\ ;
+瑞雲 < zuiun\ ;
+高温 < kouon\ ;
+尾花 < obana\ ;
+対話 < taiwa\ ;
+伝馬 < tenma\ ;
+轍叉 < tessa\ ;
+依託 < itaku\ ;
+脳裡 < nouri\ ;
+権化 < gonge\ ;
+苦吟 < kugin\ ;
+芸妓 < geigi\ ;
+路線 < rosen\ ;
+赤身 < akami\ ;
+兵備 < heibi\ ;
+富農 < funou\ ;
+修羅 < shura\ ;
+芥子 < keshi\ ;
+疑点 < giten\ ;
+樽俎 < sonso\ ;
+侍講 < jikou\ ;
+軍手 < gunte\ ;
+権利 < kenri\ ;
+会飲 < kaiin\ ;
+典侍 < tenji\ ;
+安静 < ansei\ ;
+駅路 < ekiro\ ;
+入内 < judai\ ;
+党務 < toumu\ ;
+具体 < gutai\ ;
+発句 < hokku\ ;
+苦労 < kurou\ ;
+様子 < yousu\ ;
+保育 < hoiku\ ;
+画稿 < gakou\ ;
+例話 < reiwa\ ;
+全備 < zenbi\ ;
+党利 < touri\ ;
+自炊 < jisui\ ;
+佳賓 < kahin\ ;
+生糸 < kiito\ ;
+模写 < mosha\ ;
+僧徒 < souto\ ;
+疎漏 < sorou\ ;
+安閑 < ankan\ ;
+樹上 < jujou\ ;
+余輩 < yohai\ ;
+梅花 < baika\ ;
+儀容 < giyou\ ;
+田租 < denso\ ;
+馬車 < basha\ ;
+先務 < senmu\ ;
+俺等 < orera\ ;
+模倣 < mohou\ ;
+富豪 < fugou\ ;
+馬蹄 < batei\ ;
+践祚 < senso\ ;
+路程 < rotei\ ;
+紫雲英 < genge\ ;
+寄贈 < kizou\ ;
+体躯 < taiku\ ;
+痴愚 < chigu\ ;
+背部 < haibu\ ;
+保線 < hosen\ ;
+英主 < eishu\ ;
+元利 < genri\ ;
+倫理 < rinri\ ;
+車庫 < shako\ ;
+寓話 < guuwa\ ;
+疏水 < sosui\ ;
+余財 < yozai\ ;
+脾臟 < hizou\ ;
+僧尼 < souni\ ;
+発作 < hossa\ ;
+自治 < jichi\ ;
+癒合 < yugou\ ;
+充備 < juubi\ ;
+脾腫 < hishu\ ;
+尾籠 < birou\ ;
+痛手 < itade\ ;
+家財 < kazai\ ;
+転婆 < tenba\ ;
+鬼子 < onigo\ ;
+官途 < kanto\ ;
+自民 < jimin\ ;
+保管 < hokan\ ;
+栄転 < eiten\ ;
+検波 < kenpa\ ;
+字面 < jimen\ ;
+路盤 < roban\ ;
+舵手 < dashu\ ;
+余談 < yodan\ ;
+富裕 < fuyuu\ ;
+産着 < ubugi\ ;
+偏波 < henha\ ;
+偽本 < gihon\ ;
+艶姿 < enshi\ ;
+優利 < yuuri\ ;
+極意 < gokui\ ;
+仮面 < kamen\ ;
+偽書 < gisho\ ;
+岡湯 < okayu\ ;
+保税 < hozei\ ;
+余計 < yokei\ ;
+僅差 < kinsa\ ;
+俯瞰 < fukan\ ;
+臨機 < rinki\ ;
+未曾有 < mizou\ ;
+艇庫 < teiko\ ;
+尊者 < sonja\ ;
+跡目 < atome\ ;
+路用 < royou\ ;
+家訓 < kakun\ ;
+低語 < teigo\ ;
+実費 < jippi\ ;
+傾差 < keisa\ ;
+男猫 < oneko\ ;
+甦生 < sosei\ ;
+起草 < kisou\ ;
+余裕 < yoyuu\ ;
+嵩呼 < suuko\ ;
+官費 < kanpi\ ;
+養鯉 < youri\ ;
+軍夫 < gunpu\ ;
+疎林 < sorin\ ;
+家裁 < kasai\ ;
+俳画 < haiga\ ;
+他面 < tamen\ ;
+小紋 < komon\ ;
+生理 < seiri\ ;
+腋窩 < ekika\ ;
+付随 < fuzui\ ;
+家蝿 < iebae\ ;
+検査 < kensa\ ;
+備忘 < bibou\ ;
+小粋 < koiki\ ;
+実記 < jikki\ ;
+人馬 < jinba\ ;
+億劫 < okkuu\ ;
+自暴 < jibou\ ;
+便秘 < benpi\ ;
+官話 < kanwa\ ;
+伯父貴 < ojiki\ ;
+疎放 < sohou\ ;
+余薫 < yokun\ ;
+自明 < jimei\ ;
+臨時 < rinji\ ;
+餌食 < ejiki\ ;
+定規 < jougi\ ;
+船尾 < senbi\ ;
+今際 < imawa\ ;
+億円 < okuen\ ;
+儀刀 < gitou\ ;
+守護 < shugo\ ;
+会費 < kaihi\ ;
+岩根 < iwane\ ;
+男滝 < odaki\ ;
+瓜科 < urika\ ;
+軽侮 < keibu\ ;
+供米 < kumai\ ;
+栄螺 < sazae\ ;
+値段 < nedan\ ;
+孤軍 < kogun\ ;
+偽悪 < giaku\ ;
+亜麻仁 < amani\ ;
+疲弊 < hihei\ ;
+会議 < kaigi\ ;
+来駕 < raiga\ ;
+高座 < kouza\ ;
+良医 < ryoui\ ;
+伝記 < denki\ ;
+会話 < kaiwa\ ;
+余芳 < yohou\ ;
+乱麻 < ranma\ ;
+傘寿 < sanju\ ;
+山河 < sanga\ ;
+耳順 < jijun\ ;
+伽藍 < garan\ ;
+儀仗 < gijou\ ;
+守衛 < shuei\ ;
+軍務 < gunmu\ ;
+産湯 < ubuyu\ ;
+香華 < kouge\ ;
+尾燈 < bitou\ ;
+供祭 < gusai\ ;
+賓辞 < hinji\ ;
+五十路 < isoji\ ;
+舞子 < maiko\ ;
+自慢 < jiman\ ;
+楽器 < gakki\ ;
+疑念 < ginen\ ;
+余聞 < yobun\ ;
+学課 < gakka\ ;
+馬耕 < bakou\ ;
+踏査 < tousa\ ;
+画楼 < garou\ ;
+脱皮 < dappi\ ;
+来院 < raiin\ ;
+侍祭 < jisai\ ;
+軍備 < gunbi\ ;
+産気 < sanke\ ;
+産毛 < ubuge\ ;
+腐爛 < furan\ ;
+脱疽 < dasso\ ;
+岩戸 < iwato\ ;
+寿盃 < juhai\ ;
+自弁 < jiben\ ;
+番手 < bante\ ;
+偸安 < touan\ ;
+小琴 < ogoto\ ;
+俄然 < gazen\ ;
+画板 < gaban\ ;
+字訓 < jikun\ ;
+梳毛 < somou\ ;
+飛電 < hiden\ ;
+二階 < nikai\ ;
+画材 < gazai\ ;
+軍事 < gunji\ ;
+理財 < rizai\ ;
+画本 < gahon\ ;
+畸形 < kikei\ ;
+代議 < daigi\ ;
+走破 < souha\ ;
+債務 < saimu\ ;
+身分 < mibun\ ;
+賄賂 < wairo\ ;
+育英 < ikuei\ ;
+小犬 < koinu\ ;
+由来 < yurai\ ;
+伽羅 < kyara\ ;
+仏貨 < fukka\ ;
+東都 < touto\ ;
+東部 < toubu\ ;
+仮装 < kasou\ ;
+自尽 < jijin\ ;
+理論 < riron\ ;
+偏差 < hensa\ ;
+尊父 < sonpu\ ;
+偽報 < gihou\ ;
+定義 < teigi\ ;
+備品 < bihin\ ;
+貨車 < kasha\ ;
+俗気 < zokke\ ;
+自害 < jigai\ ;
+貸費 < taihi\ ;
+留意 < ryuui\ ;
+何箇 < nanko\ ;
+個数 < kosuu\ ;
+寝相 < nezou\ ;
+颶風 < gufuu\ ;
+桂皮 < keihi\ ;
+飲酒 < inshu\ ;
+亨運 < kouun\ ;
+理解 < rikai\ ;
+何等 < nanra\ ;
+販路 < hanro\ ;
+俗歌 < zokka\ ;
+乗馬 < jouba\ ;
+付言 < fugen\ ;
+赤目 < akame\ ;
+介護 < kaigo\ ;
+他言 < tagon\ ;
+五重 < gojuu\ ;
+舞台 < butai\ ;
+朝餉 < asage\ ;
+寡男 < yamoo\ ;
+他見 < taken\ ;
+舎営 < shaei\ ;
+伎芸 < gigei\ ;
+疎外 < sogai\ ;
+偶因 < guuin\ ;
+安置 < anchi\ ;
+傍受 < bouju\ ;
+岩屋 < iwaya\ ;
+二重 < futae\ ;
+肥育 < hiiku\ ;
+小滝 < otaki\ ;
+偽善 < gizen\ ;
+梧桐 < gotou\ ;
+画才 < gasai\ ;
+画手 < gashu\ ;
+風韻 < fuuin\ ;
+他行 < takou\ ;
+財貨 < zaika\ ;
+互選 < gosen\ ;
+風靡 < fuubi\ ;
+伎能 < ginou\ ;
+未開 < mikai\ ;
+貴覧 < kiran\ ;
+風雲 < fuuun\ ;
+乖離 < kairi\ ;
+疲労 < hirou\ ;
+偽名 < gimei\ ;
+人語 < jingo\ ;
+風雅 < fuuga\ ;
+五輪 < gorin\ ;
+偽史 < gishi\ ;
+予選 < yosen\ ;
+乗除 < joujo\ ;
+偏奇 < henki\ ;
+主馬 < shume\ ;
+保有 < hoyuu\ ;
+自在 < jizai\ ;
+二輪 < nirin\ ;
+朝間 < asama\ ;
+脳波 < nouha\ ;
+実科 < jikka\ ;
+屠所 < tosho\ ;
+疑問 < gimon\ ;
+舎利 < shari\ ;
+二軍 < nigun\ ;
+倒影 < touei\ ;
+他薦 < tazen\ ;
+駄犬 < daken\ ;
+飛車 < hisha\ ;
+屹度 < kitto\ ;
+倭寇 < wakou\ ;
+小歌 < kouta\ ;
+主音 < shuon\ ;
+容疑 < yougi\ ;
+余生 < yosei\ ;
+美麗 < birei\ ;
+定礎 < teiso\ ;
+岩場 < iwaba\ ;
+自問 < jimon\ ;
+偽兵 < gihei\ ;
+腕木 < udegi\ ;
+画帖 < gajou\ ;
+羽音 < haoto\ ;
+倉庫 < souko\ ;
+机辺 < kihen\ ;
+異国 < ikoku\ ;
+村費 < sonpi\ ;
+賢者 < kenja\ ;
+本部 < honbu\ ;
+互譲 < gojou\ ;
+対欧 < taiou\ ;
+老躯 < rouku\ ;
+産後 < sango\ ;
+用度 < youdo\ ;
+書院 < shoin\ ;
+桐油 < touyu\ ;
+未遂 < misui\ ;
+生徒 < seito\ ;
+生後 < seigo\ ;
+脚気 < kakke\ ;
+王道 < oudou\ ;
+賛美 < sanbi\ ;
+腐敗 < fuhai\ ;
+蹄叉 < teisa\ ;
+木通 < akebi\ ;
+仕舞 < jimai\ ;
+越権 < ekken\ ;
+跋扈 < bakko\ ;
+余燼 < yojin\ ;
+自前 < jimae\ ;
+胃痛 < itsuu\ ;
+小枝 < koeda\ ;
+胃病 < ibyou\ ;
+自分 < jibun\ ;
+起毛 < kimou\ ;
+瑪瑙 < menou\ ;
+風邪 < fuuja\ ;
+作為 < sakui\ ;
+安眠 < anmin\ ;
+自党 < jitou\ ;
+尿意 < nyoui\ ;
+望遠 < bouen\ ;
+予言 < yogen\ ;
+九輪 < kurin\ ;
+乱費 < ranpi\ ;
+他聞 < tabun\ ;
+未踏 < mitou\ ;
+対案 < taian\ ;
+予見 < yoken\ ;
+他者 < tasha\ ;
+仮納 < kanou\ ;
+猪首 < ikubi\ ;
+不順 < fujun\ ;
+一首 < isshu\ ;
+産屋 < ubuya\ ;
+仮粧 < kewai\ ;
+豪語 < gougo\ ;
+類韻 < ruiin\ ;
+類音 < ruion\ ;
+貧苦 < hinku\ ;
+男女 < danjo\ ;
+根気 < konki\ ;
+赤毛 < akage\ ;
+一飯 < ippan\ ;
+美風 < bifuu\ ;
+飛行 < hikou\ ;
+京華 < keika\ ;
+安産 < anzan\ ;
+一風 < ippuu\ ;
+美顔 < bigan\ ;
+実父 < jippu\ ;
+自伝 < jiden\ ;
+聖者 < seija\ ;
+便所 < benjo\ ;
+世間 < seken\ ;
+一頭 < ittou\ ;
+自今 < jikon\ ;
+主部 < shubu\ ;
+一項 < ikkou\ ;
+田夫 < denpu\ ;
+飛蝗 < batta\ ;
+理系 < rikei\ ;
+産婦 < sanpu\ ;
+寸暇 < sunka\ ;
+架空 < kakuu\ ;
+産婆 < sanba\ ;
+豌豆 < endou\ ;
+下阪 < gehan\ ;
+寸時 < sunji\ ;
+梵字 < bonji\ ;
+甘子 < amago\ ;
+体温 < taion\ ;
+仁義 < jingi\ ;
+主辞 < shuji\ ;
+暴飲 < bouin\ ;
+寝棺 < nekan\ ;
+走査 < sousa\ ;
+一階 < ikkai\ ;
+本訴 < honso\ ;
+一隊 < ittai\ ;
+曹達 < souda\ ;
+貧者 < hinja\ ;
+田圃 < denpo\ ;
+付箋 < fusen\ ;
+一閃 < issen\ ;
+侮慢 < buman\ ;
+作歌 < sakka\ ;
+木乃伊 < miira\ ;
+義金 < gikin\ ;
+保守 < hoshu\ ;
+風諭 < fuuyu\ ;
+世銀 < segin\ ;
+保存 < hozon\ ;
+甘夢 < kanmu\ ;
+尤度 < yuudo\ ;
+月賦 < geppu\ ;
+展墓 < tenbo\ ;
+珪素 < keiso\ ;
+核果 < kakka\ ;
+尊意 < son''i\ ;
+香油 < kouyu\ ;
+用器 < youki\ ;
+案文 < anmon\ ;
+朗詠 < rouei\ ;
+倒句 < touku\ ;
+倒叙 < toujo\ ;
+仮眠 < kamin\ ;
+五臓 < gozou\ ;
+背泳 < haiei\ ;
+亡者 < mouja\ ;
+万里 < banri\ ;
+理知 < richi\ ;
+仏祖 < busso\ ;
+駄文 < dabun\ ;
+義軍 < gigun\ ;
+倭人 < wajin\ ;
+七重 < nanae\ ;
+下郎 < gerou\ ;
+上部 < joubu\ ;
+頓馬 < tonma\ ;
+三部 < sanbu\ ;
+不遜 < fuson\ ;
+不遇 < fuguu\ ;
+便宜 < bengi\ ;
+不逞 < futei\ ;
+小川 < ogawa\ ;
+不退 < futai\ ;
+美酒 < bishu\ ;
+主訴 < shuso\ ;
+暗雲 < an''un\ ;
+二十重 < hatae\ ;
+男児 < danji\ ;
+二者 < nisha\ ;
+画像 < gazou\ ;
+俳味 < haimi\ ;
+用務 < youmu\ ;
+婦道 < fudou\ ;
+村翁 < sonou\ ;
+安泰 < antai\ ;
+肥満 < himan\ ;
+下輩 < gehai\ ;
+家来 < kerai\ ;
+値上 < neage\ ;
+甘味 < kanmi\ ;
+俳句 < haiku\ ;
+一遍 < ippen\ ;
+老舗 < rouho\ ;
+暗闘 < antou\ ;
+下車 < gesha\ ;
+甚句 < jinku\ ;
+些細 < sasai\ ;
+理由 < riyuu\ ;
+人祖 < jinso\ ;
+乱舞 < ranbu\ ;
+侍従 < jijuu\ ;
+娃鬟 < aikan\ ;
+会派 < kaiha\ ;
+他界 < takai\ ;
+五絃 < gogen\ ;
+小字 < koaza\ ;
+屋台 < yatai\ ;
+尊家 < sonka\ ;
+一転 < itten\ ;
+画人 < gajin\ ;
+題辞 < daiji\ ;
+一軒 < ikken\ ;
+実梅 < miume\ ;
+路傍 < robou\ ;
+本舗 < honpo\ ;
+不買 < fubai\ ;
+下賤 < gesen\ ;
+寝息 < neiki\ ;
+枯燥 < kosou\ ;
+木舞 < komai\ ;
+老翁 < rouou\ ;
+羽蟻 < haari\ ;
+寛恕 < kanjo\ ;
+費用 < hiyou\ ;
+代父 < daifu\ ;
+貫目 < kanme\ ;
+義訓 < gikun\ ;
+予納 < yonou\ ;
+万貨 < banka\ ;
+板目 < itame\ ;
+頭重 < zuomo\ ;
+梅園 < baien\ ;
+貴男 < takao\ ;
+定期 < teiki\ ;
+小声 < kogoe\ ;
+桂庵 < keian\ ;
+一貫 < ikkan\ ;
+生保 < seiho\ ;
+便器 < benki\ ;
+未聞 < mimon\ ;
+音韻 < on''in\ ;
+景雲 < keiun\ ;
+二等 < nitou\ ;
+上諭 < jouyu\ ;
+予算 < yosan\ ;
+類語 < ruigo\ ;
+路上 < rojou\ ;
+本義 < hongi\ ;
+豆腐 < toufu\ ;
+駄弁 < daben\ ;
+婦警 < fukei\ ;
+起居 < kikyo\ ;
+板画 < hanga\ ;
+体技 < taigi\ ;
+保冷 < horei\ ;
+余憤 < yofun\ ;
+上訴 < jouso\ ;
+保全 < hozen\ ;
+二種 < nishu\ ;
+果然 < kazen\ ;
+音階 < onkai\ ;
+美談 < bidan\ ;
+家憲 < kaken\ ;
+代演 < daien\ ;
+余情 < yojou\ ;
+寡居 < kakyo\ ;
+犬馬 < kenba\ ;
+尼僧 < nisou\ ;
+翡翠 < hisui\ ;
+枯淡 < kotan\ ;
+未練 < miren\ ;
+一計 < ikkei\ ;
+美観 < bikan\ ;
+預金 < yokin\ ;
+余念 < yonen\ ;
+題詠 < daiei\ ;
+木綿 < momen\ ;
+丹色 < niiro\ ;
+王統 < outou\ ;
+趣味 < shumi\ ;
+賢母 < kenbo\ ;
+暗転 < anten\ ;
+未納 < minou\ ;
+議題 < gidai\ ;
+余弊 < yohei\ ;
+赤字 < akaji\ ;
+養父 < youfu\ ;
+来由 < raiyu\ ;
+根子 < nekko\ ;
+寸土 < sundo\ ;
+何度 < nando\ ;
+胡座 < agura\ ;
+案外 < angai\ ;
+作務衣 < samue\ ;
+曳航 < eikou\ ;
+理法 < rihou\ ;
+風紀 < fuuki\ ;
+代母 < daibo\ ;
+人為 < jin''i\ ;
+伝播 < denpa\ ;
+罵言 < bagen\ ;
+騎兵 < kihei\ ;
+桑園 < souen\ ;
+互用 < goyou\ ;
+主義 < shugi\ ;
+条理 < jouri\ ;
+小勢 < kozei\ ;
+寄寓 < kiguu\ ;
+二番 < niban\ ;
+背後 < haigo\ ;
+牡鹿 < ojika\ ;
+本科 < honka\ ;
+馬屋 < umaya\ ;
+伝授 < denju\ ;
+小判 < koban\ ;
+羽翼 < uyoku\ ;
+枝毛 < edage\ ;
+寿司 < sushi\ ;
+首座 < shuza\ ;
+首府 < shufu\ ;
+亡父 < boufu\ ;
+普遍 < fuhen\ ;
+余寒 < yokan\ ;
+譜面 < fumen\ ;
+任期 < ninki\ ;
+赭土 < shado\ ;
+家屋 < kaoku\ ;
+聖油 < seiyu\ ;
+猟虎 < rakko\ ;
+寝坊 < nebou\ ;
+飴煮 < ameni\ ;
+枢機 < suuki\ ;
+住居 < sumai\ ;
+胃弱 < ijaku\ ;
+伝手 < tsute\ ;
+宵寝 < yoine\ ;
+足下 < sokka\ ;
+小僧 < kozou\ ;
+宝庫 < houko\ ;
+順路 < junro\ ;
+上荷 < uwani\ ;
+一葦 < ichii\ ;
+宮居 < miyai\ ;
+脱兎 < datto\ ;
+羽織 < haori\ ;
+暗視 < anshi\ ;
+林檎 < ringo\ ;
+代案 < daian\ ;
+首尾 < shubi\ ;
+越冬 < ettou\ ;
+安心 < anjin\ ;
+貪汚 < tan''o\ ;
+価値 < kachi\ ;
+妖魔 < youma\ ;
+一艘 < issou\ ;
+来演 < raien\ ;
+休意 < kyuui\ ;
+養母 < youbo\ ;
+一致 < itchi\ ;
+駅員 < ekiin\ ;
+会得 < etoku\ ;
+寝台 < nedai\ ;
+不老 < furou\ ;
+護送 < gosou\ ;
+他村 < tason\ ;
+杜漏 < zurou\ ;
+査定 < satei\ ;
+宗家 < souke\ ;
+牝馬 < hinba\ ;
+美育 < biiku\ ;
+案分 < anbun\ ;
+仏果 < bukka\ ;
+老爺 < rouya\ ;
+老父 < roufu\ ;
+頭蓋 < zugai\ ;
+理数 < risuu\ ;
+亜流 < aryuu\ ;
+象牙 < zouge\ ;
+警邏 < keira\ ;
+安居 < ankyo\ ;
+東欧 < touou\ ;
+駆動 < kudou\ ;
+贔屓 < hiiki\ ;
+寡兵 < kahei\ ;
+他方 < tahou\ ;
+任意 < nin''i\ ;
+類縁 < ruien\ ;
+余喘 < yozen\ ;
+讒誣 < zanbu\ ;
+亡母 < boubo\ ;
+居留守 < irusu\ ;
+安定 < antei\ ;
+下緒 < sageo\ ;
+宇宙 < uchuu\ ;
+讒訴 < zanso\ ;
+音詩 < onshi\ ;
+伎工 < gikou\ ;
+音訓 < onkun\ ;
+賢愚 < kengu\ ;
+胃壁 < iheki\ ;
+余命 < yomei\ ;
+不粋 < busui\ ;
+妖雲 < youun\ ;
+赴任 < funin\ ;
+賦性 < fusei\ ;
+代打 < daida\ ;
+案件 < anken\ ;
+獣皮 < juuhi\ ;
+五段 < godan\ ;
+賛意 < san''i\ ;
+板木 < hangi\ ;
+飢民 < kimin\ ;
+飛泉 < hisen\ ;
+未然 < mizen\ ;
+駐伊 < chuui\ ;
+映配 < eihai\ ;
+孤帆 < kohan\ ;
+作動 < sadou\ ;
+一糸 < isshi\ ;
+不等 < futou\ ;
+人時 < ninji\ ;
+頭脳 < zunou\ ;
+木灰 < kibai\ ;
+羅紗 < rasha\ ;
+奇麗 < kirei\ ;
+仕手 < shite\ ;
+馬券 < baken\ ;
+宮司 < guuji\ ;
+理想 < risou\ ;
+宥和 < yuuwa\ ;
+議論 < giron\ ;
+書画 < shoga\ ;
+獲物 < emono\ ;
+奮飛 < funpi\ ;
+肥大 < hidai\ ;
+余党 < yotou\ ;
+理性 < risei\ ;
+時論 < jiron\ ;
+警護 < keigo\ ;
+負数 < fusuu\ ;
+二様 < niyou\ ;
+義眼 < gigan\ ;
+査問 < samon\ ;
+理念 < rinen\ ;
+青馬 < aouma\ ;
+譫語 < sengo\ ;
+未満 < miman\ ;
+家内 < kanai\ ;
+世知 < sechi\ ;
+定員 < teiin\ ;
+買手 < kaite\ ;
+寝椅子 < neisu\ ;
+来期 < raiki\ ;
+井桁 < igeta\ ;
+暗翳 < an''ei\ ;
+未済 < misai\ ;
+姉貴 < aneki\ ;
+老母 < roubo\ ;
+他念 < tanen\ ;
+宛名 < atena\ ;
+女難 < jonan\ ;
+奴隷 < dorei\ ;
+世相 < sesou\ ;
+仲居 < nakai\ ;
+末派 < mappa\ ;
+非難 < hinan\ ;
+下知 < gedji\ ;
+太鼓 < taiko\ ;
+須臾 < shuyu\ ;
+朝湯 < asayu\ ;
+奔馬 < honba\ ;
+聖恩 < seion\ ;
+嫌気 < kenki\ ;
+不眠 < fumin\ ;
+亜族 < azoku\ ;
+仁慈 < jinji\ ;
+仮寓 < kaguu\ ;
+仏徒 < butto\ ;
+板戸 < itado\ ;
+人我 < jinga\ ;
+貧打 < hinda\ ;
+余人 < yonin\ ;
+他店 < taten\ ;
+大黄 < daiou\ ;
+上着 < uwagi\ ;
+大麻 < taima\ ;
+本気 < honki\ ;
+老樹 < rouju\ ;
+是認 < zenin\ ;
+負担 < futan\ ;
+暗線 < ansen\ ;
+上目 < uwame\ ;
+栄冠 < eikan\ ;
+低価 < teika\ ;
+王水 < ousui\ ;
+今後 < kongo\ ;
+世界 < sekai\ ;
+孟女 < moujo\ ;
+飛来 < hirai\ ;
+二更 < nikou\ ;
+馬上 < bajou\ ;
+家人 < kenin\ ;
+仁恕 < jinjo\ ;
+孟夏 < mouka\ ;
+斑鳩 < ikaru\ ;
+風波 < fuuha\ ;
+今度 < kondo\ ;
+下疳 < gekan\ ;
+音色 < neiro\ ;
+而来 < jirai\ ;
+杜撰 < zusan\ ;
+譎詐 < kissa\ ;
+下界 < gekai\ ;
+下男 < genan\ ;
+下田 < geden\ ;
+暖簾 < noren\ ;
+他山 < tazan\ ;
+子女 < shijo\ ;
+王権 < ouken\ ;
+飛散 < hisan\ ;
+嬌態 < shina\ ;
+美男 < binan\ ;
+美田 < biden\ ;
+一生 < issei\ ;
+安全 < anzen\ ;
+五指 < goshi\ ;
+仏家 < bukke\ ;
+特記 < tokki\ ;
+既遂 < kisui\ ;
+題画 < daiga\ ;
+聖寿 < seiju\ ;
+謹話 < kinwa\ ;
+不犯 < fubon\ ;
+今宵 < koyoi\ ;
+五戒 < gokai\ ;
+杞憂 < kiyuu\ ;
+面部 < menbu\ ;
+明記 < meiki\ ;
+他姓 < tasei\ ;
+女郎 < jorou\ ;
+財布 < saifu\ ;
+未来 < mirai\ ;
+不燃 < funen\ ;
+一献 < ikkon\ ;
+施錠 < sejou\ ;
+安住 < anjuu\ ;
+座椅子 < zaisu\ ;
+非道 < hidou\ ;
+霧雰 < mufun\ ;
+板屋 < itaya\ ;
+五悪 < goaku\ ;
+学区 < gakku\ ;
+人寿 < jinju\ ;
+与点 < yoten\ ;
+人家 < jinka\ ;
+未明 < mimei\ ;
+互恵 < gokei\ ;
+面輪 < omowa\ ;
+貧富 < hinpu\ ;
+現場 < genba\ ;
+貧家 < hinka\ ;
+類火 < ruika\ ;
+存否 < zonpi\ ;
+板子 < itago\ ;
+奠都 < tento\ ;
+聖夜 < seiya\ ;
+今夏 < konka\ ;
+予想 < yosou\ ;
+任務 < ninmu\ ;
+方里 < houri\ ;
+王政 < ousei\ ;
+美点 < biten\ ;
+二念 < ninen\ ;
+講話 < kouwa\ ;
+賛否 < sanpi\ ;
+大雨 < ooame\ ;
+夕餉 < yuuge\ ;
+太陰 < taiin\ ;
+朝日 < asahi\ ;
+代員 < daiin\ ;
+上演 < jouen\ ;
+文雅 < bunga\ ;
+不満 < fuman\ ;
+贈与 < zouyo\ ;
+乱打 < randa\ ;
+外題 < gedai\ ;
+牡蠣 < borei\ ;
+奮起 < funki\ ;
+人夫 < ninpu\ ;
+耶嬢 < yajou\ ;
+妄語 < mougo\ ;
+貞婦 < teifu\ ;
+義民 < gimin\ ;
+語類 < gorui\ ;
+方途 < houto\ ;
+仏器 < bukki\ ;
+日課 < nikka\ ;
+語順 < gojun\ ;
+主査 < shusa\ ;
+多難 < tanan\ ;
+不浄 < fujou\ ;
+日記 < nikki\ ;
+以北 < ihoku\ ;
+子分 < kobun\ ;
+外需 < gaiju\ ;
+学位 < gakui\ ;
+本手 < honte\ ;
+貞女 < teijo\ ;
+音程 < ontei\ ;
+翻意 < hon''i\ ;
+謀議 < bougi\ ;
+不法 < fuhou\ ;
+代務 < daimu\ ;
+羅漢 < rakan\ ;
+罹災 < risai\ ;
+未成 < misei\ ;
+最期 < saigo\ ;
+雪駄 < setta\ ;
+夕陽 < yuuhi\ ;
+夜間 < yakan\ ;
+老後 < rougo\ ;
+旅費 < ryohi\ ;
+井守 < imori\ ;
+青貝 < aogai\ ;
+下水 < gesui\ ;
+奈辺 < nahen\ ;
+整除 < seijo\ ;
+不毛 < fumou\ ;
+下民 < gemin\ ;
+嫌悪 < ken''o\ ;
+貧土 < hindo\ ;
+電離 < denri\ ;
+類比 < ruihi\ ;
+不死 < fushi\ ;
+下段 < gedan\ ;
+零露 < reiro\ ;
+二封 < nifuu\ ;
+雷雲 < raiun\ ;
+他動 < tadou\ ;
+上歯 < uwaba\ ;
+二宮 < niguu\ ;
+他励 < tarei\ ;
+班員 < hanin\ ;
+諷誦 < fuuju\ ;
+一水 < issui\ ;
+予定 < yotei\ ;
+貴君 < kikun\ ;
+断路 < danro\ ;
+狼煙 < rouen\ ;
+貴名 < kimei\ ;
+仮令 < tatoe\ ;
+一段 < ittan\ ;
+一歳 < issai\ ;
+来場 < raiba\ ;
+音盤 < onban\ ;
+介助 < kaijo\ ;
+万機 < banki\ ;
+雪花菜 < okara\ ;
+飯場 < hanba\ ;
+大部 < daibu\ ;
+時空 < jikuu\ ;
+音痴 < onchi\ ;
+文部 < monbu\ ;
+暗澹 < antan\ ;
+話題 < wadai\ ;
+多重 < tajuu\ ;
+話頭 < watou\ ;
+事変 < jihen\ ;
+晩生 < okute\ ;
+雨間 < amaai\ ;
+妖艶 < youen\ ;
+外野 < gaiya\ ;
+下校 < gekou\ ;
+論議 < rongi\ ;
+読過 < dokka\ ;
+明美 < meibi\ ;
+付会 < fukai\ ;
+請負 < ukeoi\ ;
+主我 < shuga\ ;
+飽和 < houwa\ ;
+二塁 < nirui\ ;
+誤配 < gohai\ ;
+離間 < rikan\ ;
+翻字 < honji\ ;
+飛報 < hihou\ ;
+他人 < tanin\ ;
+外部 < gaibu\ ;
+論語 < rongo\ ;
+曜日 < youbi\ ;
+外郎 < uirou\ ;
+青蝿 < aobae\ ;
+罨法 < anpou\ ;
+老婆 < rouba\ ;
+財務 < zaimu\ ;
+下書 < gesho\ ;
+施行 < sekou\ ;
+最愛 < saiai\ ;
+曖昧 < aimai\ ;
+早苗 < sanae\ ;
+万朶 < banda\ ;
+本家 < honke\ ;
+外道 < gedou\ ;
+媚態 < bitai\ ;
+時短 < jitan\ ;
+暗涙 < anrui\ ;
+有心 < ushin\ ;
+現世 < genze\ ;
+暢気 < nonki\ ;
+老妓 < rougi\ ;
+未定 < mitei\ ;
+不易 < fueki\ ;
+未完 < mikan\ ;
+不明 < fumei\ ;
+貼付 < tenpu\ ;
+末季 < makki\ ;
+老女 < roujo\ ;
+一杯 < ippai\ ;
+美本 < bihon\ ;
+上映 < jouei\ ;
+王孫 < ouson\ ;
+下旬 < gejun\ ;
+不断 < fudan\ ;
+一本 < ippon\ ;
+不文 < fubun\ ;
+材器 < zaiki\ ;
+八百屋 < yaoya\ ;
+三日 < mikka\ ;
+始祖 < shiso\ ;
+不敏 < fubin\ ;
+豊富 < houfu\ ;
+美景 < bikei\ ;
+義挙 < gikyo\ ;
+談話 < danwa\ ;
+敬遠 < keien\ ;
+未婚 < mikon\ ;
+朝寝 < asane\ ;
+貸与 < taiyo\ ;
+負債 < fusai\ ;
+乙子 < otogo\ ;
+大豆 < daizu\ ;
+雨量 < uryou\ ;
+義手 < gishu\ ;
+一方 < ippou\ ;
+一斤 < ikkin\ ;
+義戦 < gisen\ ;
+誹謗 < hibou\ ;
+緋鯉 < higoi\ ;
+羈旅 < kiryo\ ;
+義憤 < gifun\ ;
+二君 < nikun\ ;
+世才 < sesai\ ;
+二号 < nigou\ ;
+最左 < saisa\ ;
+亡児 < bouji\ ;
+書庫 < shoko\ ;
+電路 < denro\ ;
+乙女 < otome\ ;
+文語 < bungo\ ;
+世態 < setai\ ;
+玩味 < ganmi\ ;
+顧慮 < koryo\ ;
+夜警 < yakei\ ;
+隠顕 < inken\ ;
+王城 < oujou\ ;
+上手 < jouzu\ ;
+本土 < hondo\ ;
+美挙 < bikyo\ ;
+一挙 < ikkyo\ ;
+離農 < rinou\ ;
+万戸 < banko\ ;
+音源 < ongen\ ;
+二分 < nibun\ ;
+暫時 < zanji\ ;
+明示 < meiji\ ;
+隠面 < inmen\ ;
+訴願 < sogan\ ;
+義弟 < gitei\ ;
+率土 < sotto\ ;
+交互 < kougo\ ;
+誤認 < gonin\ ;
+面罵 < menba\ ;
+外語 < gaigo\ ;
+多言 < tagen\ ;
+五倍 < gobai\ ;
+順次 < junji\ ;
+願意 < gan''i\ ;
+風土 < fuudo\ ;
+難路 < nanro\ ;
+燃費 < nenpi\ ;
+五体 < gotai\ ;
+有夏 < yuuka\ ;
+二倍 < nibai\ ;
+下御 < gegyo\ ;
+玩具 < gangu\ ;
+詭辯 < kiben\ ;
+奥義 < okugi\ ;
+電話 < denwa\ ;
+猛打 < mouda\ ;
+需要 < juyou\ ;
+大蛇 < daija\ ;
+朱印 < shuin\ ;
+外被 < gaihi\ ;
+最多 < saita\ ;
+不平 < fuhei\ ;
+女系 < jokei\ ;
+谷地 < yachi\ ;
+上座 < jouza\ ;
+縁辺 < enpen\ ;
+事件 < jiken\ ;
+二乗 < nijou\ ;
+上布 < joufu\ ;
+本務 < honmu\ ;
+二世 < nisei\ ;
+二三 < nisan\ ;
+譲渡 < jouto\ ;
+風味 < fuumi\ ;
+護法 < gohou\ ;
+豚児 < tonji\ ;
+難語 < nango\ ;
+故買 < kobai\ ;
+雑費 < zappi\ ;
+雑貨 < zakka\ ;
+下山 < gezan\ ;
+敗訴 < haiso\ ;
+声誉 < seiyo\ ;
+上屋 < uwaya\ ;
+王冠 < oukan\ ;
+風化 < fuuka\ ;
+暴徒 < bouto\ ;
+義妹 < gimai\ ;
+万寿 < banju\ ;
+類字 < ruiji\ ;
+降魔 < gouma\ ;
+音栓 < onsen\ ;
+韻書 < insho\ ;
+施米 < semai\ ;
+譲歩 < jouho\ ;
+文苑 < bunen\ ;
+美容 < biyou\ ;
+談義 < dangi\ ;
+隠遁 < inton\ ;
+一定 < ittei\ ;
+頓挫 < tonza\ ;
+雑記 < zakki\ ;
+隠退 < intai\ ;
+靱皮 < jinpi\ ;
+風儀 < fuugi\ ;
+除霊 < jorei\ ;
+塩類 < enrui\ ;
+陰門 < inmon\ ;
+旧痾 < kyuua\ ;
+韻文 < inbun\ ;
+最古 < saiko\ ;
+繁茂 < hanmo\ ;
+多芸 < tagei\ ;
+除隊 < jotai\ ;
+外苑 < gaien\ ;
+末世 < masse\ ;
+万夫 < banpu\ ;
+主務 < shumu\ ;
+諭示 < yushi\ ;
+雅言 < gagen\ ;
+無風 < mufuu\ ;
+面皮 < menpi\ ;
+頭巾 < zukin\ ;
+無類 < murui\ ;
+美大 < bidai\ ;
+線路 < senro\ ;
+無題 < mudai\ ;
+無頼 < burai\ ;
+試補 < shiho\ ;
+美声 < bisei\ ;
+多能 < tanou\ ;
+下城 < gejou\ ;
+是正 < zesei\ ;
+散華 < sange\ ;
+夏至 < geshi\ ;
+総身 < soumi\ ;
+不在 < fuzai\ ;
+誤聞 < gobun\ ;
+面画 < menga\ ;
+無電 < muden\ ;
+無難 < bunan\ ;
+外耳 < gaiji\ ;
+非番 < hiban\ ;
+有余 < yuuyo\ ;
+無限 < mugen\ ;
+不善 < fuzen\ ;
+不問 < fumon\ ;
+有事 < yuuji\ ;
+硫黄華 < iouka\ ;
+義勇 < giyuu\ ;
+頒布 < hanpu\ ;
+論破 < ronpa\ ;
+罵声 < basei\ ;
+下品 < gehin\ ;
+月下 < gekka\ ;
+訓辞 < kunji\ ;
+夢精 < musei\ ;
+音感 < onkan\ ;
+不参 < fusan\ ;
+順序 < junjo\ ;
+類句 < ruiku\ ;
+上古 < jouko\ ;
+三叉 < sansa\ ;
+険路 < kenro\ ;
+防除 < boujo\ ;
+不勢 < buzei\ ;
+話芸 < wagei\ ;
+美名 < bimei\ ;
+塩酸 < ensan\ ;
+大穴 < ooana\ ;
+猪口 < choko\ ;
+斤目 < kinme\ ;
+牧歌 < bokka\ ;
+下剤 < gezai\ ;
+無銭 < musen\ ;
+場面 < bamen\ ;
+言辞 < genji\ ;
+無銘 < mumei\ ;
+誤算 < gosan\ ;
+爪牙 < souga\ ;
+太祖 < taiso\ ;
+暗夜 < an''ya\ ;
+天祖 < tenso\ ;
+護憲 < goken\ ;
+多端 < tatan\ ;
+詠草 < eisou\ ;
+壮美 < soubi\ ;
+多種 < tashu\ ;
+無配 < muhai\ ;
+犯意 < han''i\ ;
+下僧 < gesou\ ;
+義人 < gijin\ ;
+一分 < ippun\ ;
+奇瑞 < kizui\ ;
+論理 < ronri\ ;
+大破 < taiha\ ;
+雅致 < gachi\ ;
+不倫 < furin\ ;
+話者 < washa\ ;
+日波 < nippo\ ;
+世代 < sedai\ ;
+世人 < sejin\ ;
+故老 < korou\ ;
+上値 < uwane\ ;
+無道 < mudou\ ;
+不便 < fuben\ ;
+増補 < zouho\ ;
+織目 < orime\ ;
+訓話 < kunwa\ ;
+無辺 < muhen\ ;
+隠蔽 < inpei\ ;
+羅典 < raten\ ;
+陰謀 < inbou\ ;
+訓詁 < kunko\ ;
+妓楼 < girou\ ;
+文目 < ayame\ ;
+変移 < hen''i\ ;
+下人 < genin\ ;
+暴利 < bouri\ ;
+暗喩 < an''yu\ ;
+塑造 < sozou\ ;
+婚儀 < kongi\ ;
+紙魚 < shimi\ ;
+万事 < banji\ ;
+諸派 < shoha\ ;
+上下 < jouge\ ;
+三世 < sanze\ ;
+電磁 < denji\ ;
+頑固 < ganko\ ;
+美人 < bijin\ ;
+罷免 < himen\ ;
+大瓶 < oobin\ ;
+言語 < gengo\ ;
+夷狄 < iteki\ ;
+暗君 < ankun\ ;
+暗合 < angou\ ;
+護岸 < gogan\ ;
+御神酒 < omiki\ ;
+物故 < bukko\ ;
+天理 < tenri\ ;
+素養 < soyou\ ;
+姐御 < anego\ ;
+夜番 < yoban\ ;
+露点 < roten\ ;
+音大 < ondai\ ;
+音声 < onsei\ ;
+多用 < tayou\ ;
+多産 < tasan\ ;
+素顔 < sugao\ ;
+改組 < kaiso\ ;
+紫雲 < shiun\ ;
+編者 < henja\ ;
+女権 < joken\ ;
+天狗 < tengu\ ;
+奥歯 < okuba\ ;
+早期 < souki\ ;
+素面 < sumen\ ;
+縫目 < nuime\ ;
+無謀 < mubou\ ;
+旅次 < ryoji\ ;
+日本 < nihon\ ;
+無論 < muron\ ;
+非業 < higou\ ;
+旦暮 < tanbo\ ;
+糸魚 < itoyo\ ;
+雨着 < amagi\ ;
+威圧 < iatsu\ ;
+無言 < mugon\ ;
+如是 < nyoze\ ;
+威嚇 < ikaku\ ;
+数理 < suuri\ ;
+熱砂 < nessa\ ;
+天火 < tenpi\ ;
+猊下 < geika\ ;
+防護 < bougo\ ;
+頭上 < zujou\ ;
+青梅 < aoume\ ;
+塗装 < tosou\ ;
+故知 < kochi\ ;
+隠線 < insen\ ;
+視野 < shiya\ ;
+陰茎 < inkei\ ;
+燠火 < okibi\ ;
+音名 < onmei\ ;
+妥当 < datou\ ;
+時報 < jihou\ ;
+経路 < keiro\ ;
+塩蔵 < enzou\ ;
+映射 < eisha\ ;
+諺文 < onmon\ ;
+墨絵 < sumie\ ;
+細部 < saibu\ ;
+練磨 < renma\ ;
+謝恩 < shaon\ ;
+昆布 < konbu\ ;
+雲煙 < un''en\ ;
+好打 < kouda\ ;
+防衛 < bouei\ ;
+大河 < taiga\ ;
+雷火 < raika\ ;
+網羅 < moura\ ;
+訓義 < kungi\ ;
+昨夜 < yuube\ ;
+無蓋 < mugai\ ;
+覇道 < hadou\ ;
+西部 < seibu\ ;
+雇用 < koyou\ ;
+音像 < onzou\ ;
+伊佐木 < isaki\ ;
+妻女 < saijo\ ;
+大歌 < oouta\ ;
+文殊 < monju\ ;
+無菌 < mukin\ ;
+文武 < bunbu\ ;
+慰安婦 < ianfu\ ;
+無茶 < mucha\ ;
+音便 < onbin\ ;
+多毛 < tamou\ ;
+大樹 < taiju\ ;
+外気 < gaiki\ ;
+無芸 < mugei\ ;
+大様 < ooyou\ ;
+製麻 < seima\ ;
+総社 < souja\ ;
+警句 < keiku\ ;
+非情 < hijou\ ;
+時化 < shike\ ;
+雨滴 < uteki\ ;
+雲海 < unkai\ ;
+雑煮 < zouni\ ;
+星図 < seizu\ ;
+要路 < youro\ ;
+女御 < nyogo\ ;
+斡旋 < assen\ ;
+雲泥 < undei\ ;
+警務 < keimu\ ;
+無能 < munou\ ;
+犬儒 < kenju\ ;
+大見得 < oomie\ ;
+数次 < suuji\ ;
+敵機 < tekki\ ;
+雲水 < unsui\ ;
+妖婆 < youba\ ;
+青息 < aoiki\ ;
+閑雅 < kanga\ ;
+大枝 < ooeda\ ;
+売淫 < baiin\ ;
+霧散 < musan\ ;
+女帝 < jotei\ ;
+線画 < senga\ ;
+新手 < arate\ ;
+無罪 < muzai\ ;
+散歩 < sanpo\ ;
+雨氷 < uhyou\ ;
+文書 < monjo\ ;
+既定 < kitei\ ;
+紛議 < fungi\ ;
+除算 < jozan\ ;
+議会 < gikai\ ;
+射手座 < iteza\ ;
+試演 < shien\ ;
+撫育 < buiku\ ;
+語根 < gokon\ ;
+熱波 < neppa\ ;
+多望 < tabou\ ;
+女尊 < joson\ ;
+牢固 < rouko\ ;
+話法 < wahou\ ;
+炉辺 < rohen\ ;
+煩瑣 < hansa\ ;
+総理 < souri\ ;
+無糖 < mutou\ ;
+陽皮 < youhi\ ;
+大損 < oozon\ ;
+露悪 < roaku\ ;
+犀利 < sairi\ ;
+多数 < tasuu\ ;
+網目 < amime\ ;
+天授 < tenju\ ;
+外方 < soppo\ ;
+粗餐 < sosan\ ;
+粗飯 < sohan\ ;
+閉鎖 < heisa\ ;
+素行 < sokou\ ;
+絹絵 < kinue\ ;
+譜代 < fudai\ ;
+塩税 < enzei\ ;
+絵絹 < eginu\ ;
+隠然 < inzen\ ;
+語数 < gosuu\ ;
+映倫 < eirin\ ;
+精鋭 < seiei\ ;
+雲景 < unkei\ ;
+版図 < hanto\ ;
+奇巌 < kigan\ ;
+姉上 < aneue\ ;
+無稽 < mukei\ ;
+襲衣 < shuui\ ;
+間遠 < madoo\ ;
+無税 < muzei\ ;
+詠歎 < eitan\ ;
+大愚 < taigu\ ;
+雲散 < unsan\ ;
+離村 < rison\ ;
+夜戦 < yasen\ ;
+不意気 < buiki\ ;
+絵筆 < efude\ ;
+多才 < tasai\ ;
+文意 < bun''i\ ;
+襤褸 < ranru\ ;
+大悟 < daigo\ ;
+無礼 < burei\ ;
+繻子 < shusu\ ;
+開運 < kaiun\ ;
+大恩 < daion\ ;
+該案 < gaian\ ;
+夢想 < musou\ ;
+襦袢 < juban\ ;
+難易 < nan''i\ ;
+旨味 < umami\ ;
+話柄 < wahei\ ;
+奉安 < houan\ ;
+堕胎 < datai\ ;
+多感 < takan\ ;
+播種 < hashu\ ;
+課役 < kaeki\ ;
+院生 < insei\ ;
+補題 < hodai\ ;
+多情 < tajou\ ;
+離散 < risan\ ;
+試案 < shian\ ;
+多恨 < takon\ ;
+大度 < taido\ ;
+敵意 < tekii\ ;
+文庫 < bunko\ ;
+見舞 < mimai\ ;
+堕罪 < dazai\ ;
+塩田 < enden\ ;
+無益 < mueki\ ;
+大差 < taisa\ ;
+大工 < daiku\ ;
+多形 < takei\ ;
+敬慕 < keibo\ ;
+援軍 < engun\ ;
+敬愛 < keiai\ ;
+多弁 < taben\ ;
+非命 < himei\ ;
+謀叛 < muhon\ ;
+粗銅 < sodou\ ;
+摩耗 < mamou\ ;
+父君 < fukun\ ;
+放映 < houei\ ;
+紅蓮 < guren\ ;
+雁木 < gangi\ ;
+裏面 < rimen\ ;
+方図 < houzu\ ;
+雨戸 < amado\ ;
+無用 < muyou\ ;
+牡丹 < botan\ ;
+大尾 < taibi\ ;
+粗酒 < soshu\ ;
+売手 < urite\ ;
+増派 < zouha\ ;
+誘引 < yuuin\ ;
+大家 < taike\ ;
+雅文 < gabun\ ;
+覇者 < hasha\ ;
+数度 < suudo\ ;
+大字 < ooaza\ ;
+断固 < danko\ ;
+荏胡麻 < egoma\ ;
+文字 < monji\ ;
+燕巣 < ensou\ ;
+奥印 < okuin\ ;
+夫婦 < meoto\ ;
+多層 < tasou\ ;
+訴権 < soken\ ;
+零度 < reido\ ;
+点者 < tenja\ ;
+絵画 < kaiga\ ;
+非凡 < hibon\ ;
+女優 < joyuu\ ;
+誤射 < gosha\ ;
+外宮 < gekuu\ ;
+太夫 < tayuu\ ;
+大奥 < oooku\ ;
+排除 < haijo\ ;
+如上 < jojou\ ;
+大声 < oogoe\ ;
+擬毛 < gimou\ ;
+契印 < keiin\ ;
+要素 < youso\ ;
+雲居 < kumoi\ ;
+露命 < romei\ ;
+陰毛 < inmou\ ;
+織地 < oriji\ ;
+霊夢 < reimu\ ;
+多大 < tadai\ ;
+捕鯨 < hogei\ ;
+多売 < tabai\ ;
+露台 < rodai\ ;
+繁多 < hanta\ ;
+除法 < johou\ ;
+焜炉 < konro\ ;
+離岸 < rigan\ ;
+炭素 < tanso\ ;
+外場 < gaiba\ ;
+離山 < rizan\ ;
+大嘘 < oouso\ ;
+数多 < suuta\ ;
+随時 < zuiji\ ;
+霊園 < reien\ ;
+政府 < seifu\ ;
+阿漕 < akogi\ ;
+斗南 < tonan\ ;
+売子 < uriko\ ;
+電場 < denba\ ;
+外因 < gaiin\ ;
+防火 < bouka\ ;
+露光 < rokou\ ;
+大味 < ooaji\ ;
+施主 < seshu\ ;
+無法 < muhou\ ;
+故山 < kozan\ ;
+大台 < oodai\ ;
+在野 < zaiya\ ;
+火色 < hiiro\ ;
+文句 < monku\ ;
+鼿 < gotsu\ ;
+無水 < musui\ ;
+鼎 < kanae\ ;
+無毛 < mumou\ ;
+図面 < zumen\ ;
+放屁 < houhi\ ;
+売女 < baita\ ;
+天助 < tenjo\ ;
+米貨 < beika\ ;
+無残 < muzan\ ;
+開花 < kaika\ ;
+夜叉 < yasha\ ;
+基盤 < kiban\ ;
+鷩 < hetsu\ ;
+大判 < ooban\ ;
+素直 < sunao\ ;
+親爺 < oyaji\ ;
+需品 < juhin\ ;
+補講 < hokou\ ;
+難場 < nanba\ ;
+鶍 < isuka\ ;
+売場 < uriba\ ;
+鶉 < uzura\ ;
+院本 < inpon\ ;
+多勢 < tazei\ ;
+四顧 < shiko\ ;
+大儒 < daiju\ ;
+夜前 < yazen\ ;
+米語 < beigo\ ;
+阻止 < soshi\ ;
+外務 < gaimu\ ;
+雑多 < zatta\ ;
+夜分 < yabun\ ;
+敗因 < haiin\ ;
+米話 < beiwa\ ;
+鱗 < uroko\ ;
+鰻 < unagi\ ;
+斉備 < seibi\ ;
+絵文字 < emoji\ ;
+墓所 < bosho\ ;
+鰒 < awabi\ ;
+鰏 < hyoku\ ;
+語勢 < gosei\ ;
+鰍 < inada\ ;
+誤判 < gohan\ ;
+鰉 < higai\ ;
+鯏 < asari\ ;
+図鑑 < zukan\ ;
+鮭 < shake\ ;
+雲台 < undai\ ;
+認否 < ninpi\ ;
+無根 < mukon\ ;
+変化 < henge\ ;
+認可 < ninka\ ;
+髺 < gatsu\ ;
+網戸 < amido\ ;
+記憶 < kioku\ ;
+文事 < bunji\ ;
+擬態 < gitai\ ;
+粗茶 < socha\ ;
+夜会 < yakai\ ;
+純理 < junri\ ;
+離合 < rigou\ ;
+難句 < nanku\ ;
+緞子 < donsu\ ;
+離反 < rihan\ ;
+素片 < sohen\ ;
+誤伝 < goden\ ;
+糸目 < itome\ ;
+絵柄 < egara\ ;
+記念 < kinen\ ;
+無断 < mudan\ ;
+陰惨 < insan\ ;
+無数 < musuu\ ;
+絵札 < efuda\ ;
+数価 < suuka\ ;
+綿布 < menpu\ ;
+電位 < den''i\ ;
+精粗 < seiso\ ;
+雨具 < amagu\ ;
+靨 < ekubo\ ;
+掩蔽 < enpei\ ;
+難儀 < nangi\ ;
+隉 < getsu\ ;
+試合 < shiai\ ;
+隠士 < inshi\ ;
+墳墓 < funbo\ ;
+衰運 < suiun\ ;
+雅号 < gagou\ ;
+詠吟 < eigin\ ;
+政務 < seimu\ ;
+場末 < basue\ ;
+綾子 < rinzu\ ;
+無才 < musai\ ;
+炬火 < kyoka\ ;
+米英 < beiei\ ;
+隠坊 < onbou\ ;
+隻句 < sekku\ ;
+無慮 < muryo\ ;
+堀江 < horie\ ;
+離任 < rinin\ ;
+結果 < kekka\ ;
+衰躯 < suiku\ ;
+難事 < nanji\ ;
+地蔵 < jizou\ ;
+無情 < mujou\ ;
+鏉 < shyuu\ ;
+鎧 < yoroi\ ;
+詐取 < sashu\ ;
+雅兄 < gakei\ ;
+錨 < ikari\ ;
+錘 < tsumu\ ;
+無念 < munen\ ;
+回路 < kairo\ ;
+親木 < oyagi\ ;
+雑作 < zousa\ ;
+限度 < gendo\ ;
+鈺 < gyoku\ ;
+塁打 < ruida\ ;
+土蔵 < dozou\ ;
+見様 < miyou\ ;
+故主 < koshu\ ;
+西欧 < seiou\ ;
+覇権 < haken\ ;
+粗笨 < sohon\ ;
+紡機 < bouki\ ;
+図解 < zukai\ ;
+地色 < jiiro\ ;
+土葬 < dosou\ ;
+措置 < sochi\ ;
+墓地 < bochi\ ;
+在英 < zaiei\ ;
+糜爛 < biran\ ;
+場所 < basho\ ;
+街路 < gairo\ ;
+塗工 < tokou\ ;
+随員 < zuiin\ ;
+拗音 < youon\ ;
+見栄 < mibae\ ;
+絹布 < kenpu\ ;
+無尽 < mujin\ ;
+除外 < jogai\ ;
+増員 < zouin\ ;
+絵巻 < emaki\ ;
+見本 < mihon\ ;
+院外 < ingai\ ;
+総務 < soumu\ ;
+闊歩 < kappo\ ;
+躵 < nerau\ ;
+隠元 < ingen\ ;
+無官 < mukan\ ;
+基本 < kihon\ ;
+粗砥 < arato\ ;
+報恩 < houon\ ;
+素材 < sozai\ ;
+総出 < soude\ ;
+園芸 < engei\ ;
+跛 < bikko\ ;
+捕虜 < horyo\ ;
+隣保 < rinpo\ ;
+墓参 < bosan\ ;
+裸眼 < ragan\ ;
+絶家 < zekke\ ;
+記号 < kigou\ ;
+濾紙 < roshi\ ;
+摩損 < mason\ ;
+塔婆 < touba\ ;
+素数 < sosuu\ ;
+墓前 < bozen\ ;
+親御 < oyago\ ;
+点播 < tenpa\ ;
+訴人 < sonin\ ;
+街衢 < gaiku\ ;
+開演 < kaien\ ;
+紋日 < monbi\ ;
+除号 < jogou\ ;
+困苦 < konku\ ;
+除去 < jokyo\ ;
+院号 < ingou\ ;
+隊伍 < taigo\ ;
+蟻酸 < gisan\ ;
+地租 < chiso\ ;
+細微 < saibi\ ;
+拝辞 < haiji\ ;
+土管 < dokan\ ;
+塊土 < kaido\ ;
+裏目 < urame\ ;
+視度 < shido\ ;
+粗煮 < arani\ ;
+視差 < shisa\ ;
+素性 < sujou\ ;
+細工 < saiku\ ;
+陪侍 < baiji\ ;
+堰堤 < entei\ ;
+藜 < akaza\ ;
+圧砕 < assai\ ;
+無効 < mukou\ ;
+地盤 < jiban\ ;
+薊 < azami\ ;
+火桶 < hioke\ ;
+捕縄 < hojou\ ;
+絶句 < zekku\ ;
+簡素 < kanso\ ;
+蔦 < tsuta\ ;
+蔤 < bitsu\ ;
+押送 < ousou\ ;
+土砂 < dosha\ ;
+点差 < tensa\ ;
+堡塁 < horui\ ;
+純度 < jundo\ ;
+圧痕 < akkon\ ;
+茨 < ibara\ ;
+茜 < akane\ ;
+精査 < seisa\ ;
+茀 < hutsu\ ;
+苶 < detsu\ ;
+恵比寿 < ebisu\ ;
+場味 < baaji\ ;
+烈婦 < reppu\ ;
+授産 < jusan\ ;
+無体 < mutai\ ;
+行脚 < angya\ ;
+無住 < mujuu\ ;
+揺曳 < youei\ ;
+土用 < doyou\ ;
+螺鈿 < raden\ ;
+無人 < munin\ ;
+土瓶 < dobin\ ;
+防具 < bougu\ ;
+長柄 < nagae\ ;
+襟度 < kindo\ ;
+衣糧 < iryou\ ;
+防備 < boubi\ ;
+肭 < dotsu\ ;
+結句 < kekku\ ;
+肋 < abara\ ;
+打順 < dajun\ ;
+摂家 < sekke\ ;
+堅固 < kengo\ ;
+手順 < tejun\ ;
+打電 < daden\ ;
+提案 < teian\ ;
+圧点 < atten\ ;
+補正 < hosei\ ;
+握斧 < akufu\ ;
+打開 < dakai\ ;
+要図 < youzu\ ;
+要因 < youin\ ;
+競馬 < keiba\ ;
+漏話 < rouwa\ ;
+採油 < saiyu\ ;
+場代 < badai\ ;
+粗暴 < sobou\ ;
+地温 < chion\ ;
+裏毛 < urake\ ;
+門扉 < monpi\ ;
+門戸 < monko\ ;
+粒 < tsubu\ ;
+披見 < hiken\ ;
+篩 < furui\ ;
+炭団 < tadon\ ;
+回目 < kaime\ ;
+滅金 < mekki\ ;
+筏 < ikada\ ;
+地歩 < chiho\ ;
+手錠 < tejou\ ;
+地歌 < jiuta\ ;
+門徒 < monto\ ;
+秫 < jotsu\ ;
+図版 < zuhan\ ;
+火山 < kazan\ ;
+系図 < keizu\ ;
+圧死 < asshi\ ;
+手金 < tekin\ ;
+土民 < domin\ ;
+点前 < temae\ ;
+探査 < tansa\ ;
+納受 < nouju\ ;
+手配 < tehai\ ;
+授権 < juken\ ;
+筆記 < hikki\ ;
+粗悪 < soaku\ ;
+素体 < sotai\ ;
+糞土 < fundo\ ;
+留守居 < rusui\ ;
+長居 < nagai\ ;
+漫罵 < manba\ ;
+端銭 < hasen\ ;
+疙 < gitsu\ ;
+不得手 < fuete\ ;
+箪笥 < tansu\ ;
+図法 < zuhou\ ;
+潤目 < urume\ ;
+湖面 < komen\ ;
+揚屋 < ageya\ ;
+裏手 < urate\ ;
+螟蛾 < meiga\ ;
+圧政 < assei\ ;
+押絵 < oshie\ ;
+湯銭 < yusen\ ;
+閲兵 < eppei\ ;
+補弦 < hogen\ ;
+行灯 < andon\ ;
+手話 < shuwa\ ;
+圧排 < appai\ ;
+営農 < einou\ ;
+手製 < tesei\ ;
+城下 < jouka\ ;
+粗大 < sodai\ ;
+固有 < koyuu\ ;
+温顔 < ongan\ ;
+炊事 < suiji\ ;
+炎上 < enjou\ ;
+捻挫 < nenza\ ;
+演算 < enzan\ ;
+温順 < onjun\ ;
+突飛 < toppi\ ;
+無意義 < muigi\ ;
+米寿 < beiju\ ;
+投網 < toami\ ;
+損保 < sonpo\ ;
+裏屋 < uraya\ ;
+措定 < sotei\ ;
+戦記 < senki\ ;
+手薄 < teusu\ ;
+在庫 < zaiko\ ;
+童話 < douwa\ ;
+間代 < madai\ ;
+圧巻 < akkan\ ;
+漫画 < manga\ ;
+揚句 < ageku\ ;
+補填 < hoten\ ;
+粗品 < sohin\ ;
+土工 < dokou\ ;
+四日 < yokka\ ;
+手荒 < teara\ ;
+米塩 < beien\ ;
+掩壕 < engou\ ;
+在家 < zaike\ ;
+補回 < hokai\ ;
+楾 < hazou\ ;
+椣 < shide\ ;
+門下 < monka\ ;
+噴火 < funka\ ;
+粗利 < arari\ ;
+裏地 < uraji\ ;
+淫風 < inpuu\ ;
+打者 < dasha\ ;
+栃 < tochi\ ;
+地声 < jigoe\ ;
+国庫 < kokko\ ;
+杁 < eburi\ ;
+筆禍 < hikka\ ;
+蜻蛉 < tonbo\ ;
+行方 < yukue\ ;
+裸像 < razou\ ;
+図形 < zukei\ ;
+ＰＣ < pīshī\ ;
+打線 < dasen\ ;
+地図 < chizu\ ;
+表意 < hyoui\ ;
+技研 < giken\ ;
+手織 < teori\ ;
+裸体 < ratai\ ;
+図工 < zukou\ ;
+衰微 < suibi\ ;
+裏名 < urana\ ;
+土塊 < dokai\ ;
+手練 < teren\ ;
+土塁 < dorui\ ;
+土塀 < dobei\ ;
+唐音 < touon\ ;
+因循 < injun\ ;
+簿外 < bogai\ ;
+採否 < saihi\ ;
+撥 < bachi\ ;
+技監 < gikan\ ;
+空輸 < kuuyu\ ;
+補充 < hojuu\ ;
+坑儒 < kouju\ ;
+固定 < kotei\ ;
+挙措 < kyoso\ ;
+打算 < dasan\ ;
+掟 < okite\ ;
+土嚢 < donou\ ;
+漸次 < zenji\ ;
+空路 < kuuro\ ;
+国威 < kokui\ ;
+潜時 < senji\ ;
+懤 < chyuu\ ;
+補任 < honin\ ;
+漫歩 < manpo\ ;
+漁火 < gyoka\ ;
+懇話 < konwa\ ;
+空費 < kuuhi\ ;
+蛮語 < bango\ ;
+戯絵 < zaree\ ;
+団子 < dango\ ;
+土台 < dodai\ ;
+涼雨 < ryouu\ ;
+坊主 < bouzu\ ;
+営繕 < eizen\ ;
+移駐 < ichuu\ ;
+虎魚 < okoze\ ;
+算木 < sangi\ ;
+手相 < tesou\ ;
+圧倒 < attou\ ;
+海鰻 < anago\ ;
+嶍 < shihu\ ;
+憂身 < ukimi\ ;
+批点 < hiten\ ;
+土偶 < doguu\ ;
+行宮 < anguu\ ;
+峠 < touge\ ;
+岏 < guwan\ ;
+哀願 < aigan\ ;
+土人 < dojin\ ;
+孰 < izure\ ;
+愛餐 < aisan\ ;
+嬇 < kuwai\ ;
+蛇行 < dakou\ ;
+浅黄 < asagi\ ;
+慶賀 < keiga\ ;
+街図 < gaizu\ ;
+壷 < tsubo\ ;
+打点 < daten\ ;
+漏斗 < routo\ ;
+渡船 < tosen\ ;
+淫行 < inkou\ ;
+垔 < shyou\ ;
+垏 < rotsu\ ;
+囮 < otori\ ;
+温習 < sarai\ ;
+節婦 < seppu\ ;
+喝破 < kappa\ ;
+嗧 < garon\ ;
+嗖 < shuhu\ ;
+和風 < wafuu\ ;
+螺旋 < rasen\ ;
+稟議 < ringi\ ;
+憂虞 < yuugu\ ;
+打法 < dahou\ ;
+哘 < sasou\ ;
+扶桑 < fusou\ ;
+虚辞 < kyoji\ ;
+衛兵 < eihei\ ;
+愚鈍 < gudon\ ;
+鼠輩 < sohai\ ;
+吋 < inchi\ ;
+回付 < kaifu\ ;
+卍 < manji\ ;
+鼠蹊 < sokei\ ;
+匁 < monme\ ;
+把握 < haaku\ ;
+渡米 < tobei\ ;
+拳固 < genko\ ;
+投打 < touda\ ;
+麒麟 < kirin\ ;
+憂苦 < yuuku\ ;
+嗟歎 < satan\ ;
+儲 < mouke\ ;
+海辺 < umibe\ ;
+愛車 < aisha\ ;
+打棒 < dabou\ ;
+偟 < kuwau\ ;
+倌 < kuwan\ ;
+悪魔 < akuma\ ;
+湯灌 < yukan\ ;
+手桶 < teoke\ ;
+稲荷 < inari\ ;
+浦辺 < urabe\ ;
+和金 < wakin\ ;
+麝香 < jakou\ ;
+鈍麻 < donma\ ;
+悪馬 < akume\ ;
+手本 < tehon\ ;
+乄 < shime\ ;
+減磨 < genma\ ;
+突破 < toppa\ ;
+海豚 < iruka\ ;
+蛇管 < jakan\ ;
+哀詩 < aishi\ ;
+打数 < dasuu\ ;
+愚論 < guron\ ;
+手斧 < teono\ ;
+拝受 < haiju\ ;
+浪費 < rouhi\ ;
+手数 < tesuu\ ;
+戸板 < toita\ ;
+漢土 < kando\ ;
+愚計 < gukei\ ;
+鉛錘 < ensui\ ;
+立派 < rippa\ ;
+愚見 < guken\ ;
+惹起 < jakki\ ;
+味醂 < mirin\ ;
+命運 < meiun\ ;
+秘計 < hikei\ ;
+蘇連 < soren\ ;
+愚行 < gukou\ ;
+空疎 < kuuso\ ;
+漁夫 < gyofu\ ;
+拝具 < haigu\ ;
+銀貨 < ginka\ ;
+端本 < hahon\ ;
+流転 < ruten\ ;
+浴衣 < yokui\ ;
+漁場 < gyoba\ ;
+意表 < ihyou\ ;
+戯文 < gibun\ ;
+液肥 < ekihi\ ;
+空理 < kuuri\ ;
+満期 < manki\ ;
+湖水 < kosui\ ;
+和讚 < wasan\ ;
+端数 < hasuu\ ;
+嘘字 < usoji\ ;
+成案 < seian\ ;
+波頭 < hatou\ ;
+愛蔵 < aizou\ ;
+麦酒 < biiru\ ;
+名馬 < meiba\ ;
+和訓 < wakun\ ;
+和解 < wakai\ ;
+波面 < hamen\ ;
+手当 < teate\ ;
+稲穂 < inaho\ ;
+鼻緒 < hanao\ ;
+和製 < wasei\ ;
+鋤簾 < joren\ ;
+和装 < wasou\ ;
+担保 < tanpo\ ;
+和裁 < wasai\ ;
+憂目 < ukime\ ;
+温湯 < ontou\ ;
+同音 < douon\ ;
+憮然 < buzen\ ;
+悪運 < akuun\ ;
+懸架 < kenga\ ;
+患部 < kanbu\ ;
+銘菓 < meika\ ;
+黒衣 < kokue\ ;
+悟道 < godou\ ;
+味見 < ajimi\ ;
+無意味 < muimi\ ;
+温水 < onsui\ ;
+鼻端 < bitan\ ;
+渡洋 < toyou\ ;
+愛育 < aiiku\ ;
+滅多 < metta\ ;
+淫猥 < inwai\ ;
+漁具 < gyogu\ ;
+悪路 < akuro\ ;
+情話 < jouwa\ ;
+種皮 < shuhi\ ;
+愚者 < gusha\ ;
+扇子 < sensu\ ;
+野馬 < nouma\ ;
+禅話 < zenwa\ ;
+我慢 < gaman\ ;
+古風 < kofuu\ ;
+空気 < kuuki\ ;
+空母 < kuubo\ ;
+唾液 < daeki\ ;
+満座 < manza\ ;
+営庭 < eitei\ ;
+虚空 < kokuu\ ;
+淵源 < engen\ ;
+和船 < wasen\ ;
+社運 < shaun\ ;
+批判 < hihan\ ;
+手垢 < teaka\ ;
+悪計 < akkei\ ;
+批准 < hijun\ ;
+鼓童 < kodou\ ;
+吏道 < rodou\ ;
+投与 < touyo\ ;
+懸想 < kesou\ ;
+受難 < junan\ ;
+戸外 < kogai\ ;
+懺悔 < zange\ ;
+鋳物 < imono\ ;
+温暖 < ondan\ ;
+渡来 < torai\ ;
+恥部 < chibu\ ;
+懸念 < kenen\ ;
+悪行 < akkou\ ;
+淡湖 < tanko\ ;
+成就 < jouju\ ;
+租税 < sozei\ ;
+善意 < zen''i\ ;
+古銭 < kosen\ ;
+童女 < doujo\ ;
+鼠疫 < soeki\ ;
+流罪 < ruzai\ ;
+嗚咽 < oetsu\ ;
+恩赦 < onsha\ ;
+手勢 < tezei\ ;
+意固地 < ikoji\ ;
+淘汰 < touta\ ;
+洒落 < share\ ;
+海砂 < kaisa\ ;
+台輪 < daiwa\ ;
+湖岸 < kogan\ ;
+洵美 < junbi\ ;
+第二 < daini\ ;
+示談 < jidan\ ;
+野郎 < yarou\ ;
+法語 < hougo\ ;
+合議 < gougi\ ;
+懇意 < kon''i\ ;
+懊悩 < ounou\ ;
+名誉 < meiyo\ ;
+愚痴 < guchi\ ;
+水鶏 < kuina\ ;
+叉銃 < sajuu\ ;
+温情 < onjou\ ;
+愛用 < aiyou\ ;
+懈怠 < getai\ ;
+愚生 < gusei\ ;
+釈迦 < shaka\ ;
+湯垢 < yuaka\ ;
+恋路 < koiji\ ;
+派米 < habei\ ;
+法被 < happi\ ;
+藍色 < aiiro\ ;
+端午 < tango\ ;
+虚無 < kyomu\ ;
+手代 < tedai\ ;
+受身 < ukemi\ ;
+渡御 < togyo\ ;
+水魔 < suima\ ;
+野趣 < yashu\ ;
+快音 < kaion\ ;
+所作 < shosa\ ;
+古豪 < kogou\ ;
+金貨 < kinka\ ;
+愛犬 < aiken\ ;
+磯辺 < isobe\ ;
+鼻汁 < bijuu\ ;
+惰眠 < damin\ ;
+悪罵 < akuba\ ;
+成句 < seiku\ ;
+所与 < shoyo\ ;
+古諺 < kogen\ ;
+稲木 < inagi\ ;
+古訓 < kokun\ ;
+空巣 < akisu\ ;
+悪縁 < akuen\ ;
+温存 < onzon\ ;
+受講 < jukou\ ;
+叡覧 < eiran\ ;
+危難 < kinan\ ;
+御辞儀 < ojigi\ ;
+必須 < hissu\ ;
+反語 < hango\ ;
+鼻根 < bikon\ ;
+反訴 < hanso\ ;
+鋭敏 < eibin\ ;
+愛液 < aieki\ ;
+名舗 < meiho\ ;
+派生 < hasei\ ;
+喇叭 < rappa\ ;
+鍼医 < harii\ ;
+怪訝 < kegen\ ;
+野蛮 < yaban\ ;
+印鑑 < inkan\ ;
+汚辱 < ojoku\ ;
+銃火 < juuka\ ;
+愚民 < gumin\ ;
+喪主 < moshu\ ;
+南阿 < nan''a\ ;
+黄班 < ouhan\ ;
+名義 < meigi\ ;
+民需 < minju\ ;
+虚栄 < kyoei\ ;
+涅槃 < nehan\ ;
+添字 < soeji\ ;
+員数 < inzuu\ ;
+浮気 < uwaki\ ;
+波紋 < hamon\ ;
+禅画 < zenga\ ;
+穴場 < anaba\ ;
+和漢 < wakan\ ;
+意欲 < iyoku\ ;
+野菜 < yasai\ ;
+古茶 < kocha\ ;
+神社 < jinja\ ;
+黄燐 < ourin\ ;
+浅瀬 < asase\ ;
+御難 < gonan\ ;
+野草 < yasou\ ;
+御陰 < okage\ ;
+蚕座 < sanza\ ;
+温厚 < onkou\ ;
+銀波 < ginpa\ ;
+銀河 < ginga\ ;
+慕情 < bojou\ ;
+和洋 < wayou\ ;
+名簿 < meibo\ ;
+淋巴 < rinpa\ ;
+慇懃 < ingin\ ;
+念誦 < nenju\ ;
+愛書 < aisho\ ;
+沿線 < ensen\ ;
+金肥 < kinpi\ ;
+原被 < genpi\ ;
+蕗草 < rosou\ ;
+気重 < kiomo\ ;
+南部 < nanbu\ ;
+淫売 < inbai\ ;
+秘本 < hihon\ ;
+愚昧 < gumai\ ;
+流浪 < rurou\ ;
+水路 < suiro\ ;
+気配 < kehai\ ;
+薬研 < yagen\ ;
+受胎 < jutai\ ;
+微醺 < bikun\ ;
+半里 < hanri\ ;
+稲子 < inago\ ;
+比類 < hirui\ ;
+流民 < rumin\ ;
+千里 < senri\ ;
+同祖 < douso\ ;
+鉄火 < tekka\ ;
+破顔 < hagan\ ;
+卑近 < hikin\ ;
+御釜 < okama\ ;
+御金 < okane\ ;
+浦曲 < urawa\ ;
+重縁 < juuen\ ;
+部首 < bushu\ ;
+都電 < toden\ ;
+愚挙 < gukyo\ ;
+哀憫 < aibin\ ;
+哀憐 < airen\ ;
+彩雲 < saiun\ ;
+部類 < burui\ ;
+蔬菜 < sosai\ ;
+和本 < wahon\ ;
+液安 < ekian\ ;
+空佐 < kuusa\ ;
+受納 < junou\ ;
+哀情 < aijou\ ;
+哀悼 < aitou\ ;
+和書 < washo\ ;
+憂哭 < ukine\ ;
+受粉 < jufun\ ;
+部面 < bumen\ ;
+矮鶏 < chabo\ ;
+毫釐 < gouri\ ;
+愛想 < aisou\ ;
+黄楊 < tsuge\ ;
+鋳型 < igata\ ;
+微賤 < bisen\ ;
+和文 < wabun\ ;
+薄着 < usugi\ ;
+波状 < hajou\ ;
+薄目 < usume\ ;
+徒輩 < tohai\ ;
+里程 < ritei\ ;
+蛇体 < jatai\ ;
+稽古 < keiko\ ;
+愚弟 < gutei\ ;
+愚弄 < gurou\ ;
+薫煙 < kunen\ ;
+治癒 < chiyu\ ;
+悲歎 < hitan\ ;
+汚臭 < oshuu\ ;
+卑言 < higen\ ;
+民話 < minwa\ ;
+比重 < hijuu\ ;
+禍根 < kakon\ ;
+野砲 < yahou\ ;
+愉快 < yukai\ ;
+穏健 < onken\ ;
+原義 < gengi\ ;
+阿弥陀 < amida\ ;
+油田 < yuden\ ;
+弾雨 < dan''u\ ;
+都邑 < toyuu\ ;
+半裸 < hanra\ ;
+御詠 < gyoei\ ;
+重目 < omome\ ;
+砂防 < sabou\ ;
+呪文 < jumon\ ;
+御覧 < goran\ ;
+吐瀉 < tosha\ ;
+淫乱 < inran\ ;
+神武 < jinmu\ ;
+合点 < gaten\ ;
+愛孫 < aison\ ;
+浅手 < asade\ ;
+蚕具 < sangu\ ;
+惰性 < dasei\ ;
+居合道 < iadou\ ;
+油状 < yujou\ ;
+野生 < yasei\ ;
+波浪 < harou\ ;
+蓮華 < renge\ ;
+愛婿 < aisei\ ;
+忍苦 < ninku\ ;
+銃座 < juuza\ ;
+原簿 < genbo\ ;
+銀座 < ginza\ ;
+愛妻 < aisai\ ;
+税吏 < zeiri\ ;
+愛好 < aikou\ ;
+労音 < rouon\ ;
+野獣 < yajuu\ ;
+野猪 < yacho\ ;
+水肥 < suihi\ ;
+募金 < bokin\ ;
+酸素 < sanso\ ;
+野犬 < yaken\ ;
+延髄 < enzui\ ;
+税務 < zeimu\ ;
+悪日 < akubi\ ;
+稚児 < chigo\ ;
+忍者 < ninja\ ;
+鼻内 < binai\ ;
+句点 < kuten\ ;
+破談 < hadan\ ;
+和尚 < oshou\ ;
+当路 < touro\ ;
+情愛 < jouai\ ;
+部財 < buzai\ ;
+鉄扉 < teppi\ ;
+海図 < kaizu\ ;
+愚問 < gumon\ ;
+水素 < suiso\ ;
+哀号 < aigou\ ;
+悲憤 < hifun\ ;
+麻幹 < ogara\ ;
+印籠 < inrou\ ;
+移入 < inyuu\ ;
+泰斗 < taito\ ;
+愛吟 < aigin\ ;
+重湯 < omoyu\ ;
+欺騙 < gihen\ ;
+御腹 < onaka\ ;
+悲恋 < hiren\ ;
+句法 < kuhou\ ;
+微罪 < bizai\ ;
+原画 < genga\ ;
+古法 < kohou\ ;
+虚偽 < kyogi\ ;
+勲記 < kunki\ ;
+金波 < kinpa\ ;
+海参 < iriko\ ;
+秘史 < hishi\ ;
+邪道 < jadou\ ;
+厳父 < genpu\ ;
+銀地 < ginji\ ;
+社是 < shaze\ ;
+海区 < kaiku\ ;
+印税 < inzei\ ;
+重油 < juuyu\ ;
+矮躯 < waiku\ ;
+悪心 < oshin\ ;
+汗疹 < asemo\ ;
+悪徒 < akuto\ ;
+硼素 < houso\ ;
+受洗 < jusen\ ;
+銀器 < ginki\ ;
+快癒 < kaiyu\ ;
+金歯 < kinba\ ;
+短路 < tanro\ ;
+遠音 < toone\ ;
+微細 < bisai\ ;
+勃起 < bokki\ ;
+愚僧 < gusou\ ;
+禅家 < zenke\ ;
+加配 < kahai\ ;
+品位 < hin''i\ ;
+欧風 < oufuu\ ;
+浄土 < joudo\ ;
+未通女 < oboko\ ;
+怒濤 < dotou\ ;
+惹句 < jakku\ ;
+磨淬 < masai\ ;
+永眠 < eimin\ ;
+強訴 < gouso\ ;
+咄嗟 < tossa\ ;
+武道 < budou\ ;
+反比 < hanpi\ ;
+印相 < inzou\ ;
+次類 < jirui\ ;
+反歯 < soppa\ ;
+剪除 < senjo\ ;
+醸母 < joubo\ ;
+武辺 < buhen\ ;
+座高 < zakou\ ;
+和名 < wamei\ ;
+愛人 < aijin\ ;
+和合 < wagou\ ;
+半端 < hanpa\ ;
+薄日 < usubi\ ;
+愚人 < gujin\ ;
+応用 < ouyou\ ;
+否応 < iyaou\ ;
+母艦 < bokan\ ;
+油断 < yudan\ ;
+母船 < bosen\ ;
+古来 < korai\ ;
+古書 < kosho\ ;
+野末 < nozue\ ;
+野望 < yabou\ ;
+正路 < seiro\ ;
+鉱区 < kouku\ ;
+波形 < hakei\ ;
+前非 < zenpi\ ;
+汚濁 < odaku\ ;
+碁盤 < goban\ ;
+弘誓 < guzei\ ;
+浮世 < ukiyo\ ;
+座頭 < zatou\ ;
+吐息 < toiki\ ;
+悪女 < akujo\ ;
+毛織 < keori\ ;
+江湖 < gouko\ ;
+恩愛 < on''ai\ ;
+悪夢 < akumu\ ;
+北緯 < hokui\ ;
+薄手 < usude\ ;
+恩恵 < onkei\ ;
+永牢 < eirou\ ;
+午睡 < gosui\ ;
+流刑 < rukei\ ;
+銀位 < gin''i\ ;
+南画 < nanga\ ;
+囲炉裏 < irori\ ;
+弁護 < bengo\ ;
+勤苦 < kinku\ ;
+助言 < jogon\ ;
+法度 < hatto\ ;
+情味 < joumi\ ;
+否定 < hitei\ ;
+影絵 < kagee\ ;
+同座 < douza\ ;
+破綻 < hatan\ ;
+派兵 < hahei\ ;
+禅味 < zenmi\ ;
+悪因 < akuin\ ;
+蒔絵 < makie\ ;
+匕箸 < hicho\ ;
+半田 < handa\ ;
+恋慕 < renbo\ ;
+重手 < omode\ ;
+武装 < busou\ ;
+卑猥 < hiwai\ ;
+破算 < hasan\ ;
+呑吐 < donto\ ;
+油彩 < yusai\ ;
+叡慮 < eiryo\ ;
+流人 < runin\ ;
+御璽 < gyoji\ ;
+取手 < totte\ ;
+名宛 < naate\ ;
+着類 < kirui\ ;
+歌論 < karon\ ;
+重愛 < juuai\ ;
+台座 < daiza\ ;
+割賦 < wappu\ ;
+真鯉 < magoi\ ;
+残花 < zanka\ ;
+黄人 < oujin\ ;
+水温 < suion\ ;
+運輸 < un''yu\ ;
+藩儒 < hanju\ ;
+麗句 < reiku\ ;
+葉茶 < hadja\ ;
+御玉 < otama\ ;
+道路 < douro\ ;
+運転 < unten\ ;
+初陣 < uijin\ ;
+連鎖 < rensa\ ;
+遍路 < henro\ ;
+鉛丹 < entan\ ;
+水泳 < suiei\ ;
+泥土 < deido\ ;
+友愛 < yuuai\ ;
+同夜 < douya\ ;
+重度 < juudo\ ;
+前輪 < maewa\ ;
+治安 < chian\ ;
+鈍器 < donki\ ;
+性愛 < seiai\ ;
+砂絵 < sunae\ ;
+沙弥 < shami\ ;
+祭具 < saigu\ ;
+配流 < hairu\ ;
+刈除 < gaijo\ ;
+怨恨 < enkon\ ;
+遠見 < toomi\ ;
+荷馬 < niuma\ ;
+真顔 < magao\ ;
+利鈍 < ridon\ ;
+思慕 < shibo\ ;
+怠惰 < taida\ ;
+利金 < rikin\ ;
+酔歩 < suiho\ ;
+凹面 < oumen\ ;
+吟味 < ginmi\ ;
+武芸 < bugei\ ;
+徒然 < tozen\ ;
+金子 < kinsu\ ;
+単比 < tanpi\ ;
+過言 < kagon\ ;
+社員 < shain\ ;
+悪事 < akuji\ ;
+彩画 < saiga\ ;
+薫化 < kunka\ ;
+祖先 < sosen\ ;
+鈍化 < donka\ ;
+別途 < betto\ ;
+台場 < daiba\ ;
+薄地 < usuji\ ;
+印材 < inzai\ ;
+平野 < heiya\ ;
+息吹 < ibuki\ ;
+名句 < meiku\ ;
+武者 < musha\ ;
+社務 < shamu\ ;
+原意 < gen''i\ ;
+古墳 < kofun\ ;
+野天 < noten\ ;
+合否 < gouhi\ ;
+労組 < rouso\ ;
+野外 < yagai\ ;
+座談 < zadan\ ;
+弗素 < fusso\ ;
+法務 < houmu\ ;
+御世辞 < oseji\ ;
+破片 < hahen\ ;
+吐剤 < tozai\ ;
+御殿 < goten\ ;
+区民 < kumin\ ;
+石 < koku\ ;
+迫 < haku\ ;
+迄 < made\ ;
+心 < shin\ ;
+込 < komu\ ;
+徴 < chou\ ;
+徳 < toku\ ;
+辱 < joku\ ;
+瞭 < ryou\ ;
+瞬 < shun\ ;
+復 < fuku\ ;
+彼 < kare\ ;
+役 < yaku\ ;
+影 < kage\ ;
+睦 < boku\ ;
+弾 < tama\ ;
+強 < kyou\ ;
+輯 < shuu\ ;
+眉 < mayu\ ;
+較 < kaku\ ;
+直 < hita\ ;
+軒 < noki\ ;
+廂 < shou\ ;
+皿 < sara\ ;
+庵 < iori\ ;
+皮 < kawa\ ;
+庭 < niwa\ ;
+店 < mise\ ;
+底 < soko\ ;
+躑 < teki\ ;
+躊 < chuu\ ;
+床 < yuka\ ;
+的 < mato\ ;
+幹 < miki\ ;
+平 < hira\ ;
+蹠 < seki\ ;
+癖 < kuse\ ;
+幅 < haba\ ;
+常 < towa\ ;
+希 < mare\ ;
+布 < nuno\ ;
+巻 < maki\ ;
+足 < ashi\ ;
+越 < etsu\ ;
+留 < ryuu\ ;
+申 < saru\ ;
+生 < nama\ ;
+崖 < gake\ ;
+崎 < saki\ ;
+峰 < mine\ ;
+賊 < zoku\ ;
+賃 < chin\ ;
+山 < yama\ ;
+屑 < kuzu\ ;
+豆 < mame\ ;
+琴 < koto\ ;
+対 < tsui\ ;
+寺 < tera\ ;
+富 < tomi\ ;
+寂 < sabi\ ;
+宿 < yado\ ;
+宮 < miya\ ;
+室 < muro\ ;
+玖 < kyuu\ ;
+玉 < dama\ ;
+安 < yasu\ ;
+守 < mori\ ;
+宅 < taku\ ;
+學 < gaku\ ;
+孫 < mago\ ;
+獨 < doku\ ;
+獄 < goku\ ;
+猫 < neko\ ;
+謡 < utai\ ;
+謎 < nazo\ ;
+嫁 < yome\ ;
+誰 < dare\ ;
+婿 < muko\ ;
+物 < mono\ ;
+牛 < ushi\ ;
+評 < hyou\ ;
+婆 < baba\ ;
+訳 < wake\ ;
+爆 < baku\ ;
+姫 < hime\ ;
+妙 < myou\ ;
+熊 < kuma\ ;
+煤 < susu\ ;
+焼 < yaki\ ;
+夫 < otto\ ;
+夢 < yume\ ;
+夜 < yoru\ ;
+外 < hoka\ ;
+裾 < suso\ ;
+壱 < ichi\ ;
+壓 < atsu\ ;
+壁 < kabe\ ;
+為 < tame\ ;
+炭 < sumi\ ;
+袖 < sode\ ;
+墓 < haka\ ;
+塩 < shio\ ;
+塞 < soku\ ;
+術 < sube\ ;
+行 < gyou\ ;
+瀝 < reki\ ;
+堀 < hori\ ;
+濁 < daku\ ;
+激 < geki\ ;
+垣 < kaki\ ;
+型 < kata\ ;
+蝉 < semi\ ;
+坂 < saka\ ;
+鼻 < hana\ ;
+園 < sono\ ;
+国 < kuni\ ;
+黴 < kabi\ ;
+黙 < moku\ ;
+黒 < kuro\ ;
+黍 < kibi\ ;
+蛇 < hebi\ ;
+溺 < deki\ ;
+麦 < mugi\ ;
+蚤 < nomi\ ;
+溢 < itsu\ ;
+溝 < mizo\ ;
+虎 < tora\ ;
+鷹 < taka\ ;
+藤 < fuji\ ;
+藁 < wara\ ;
+喉 < nodo\ ;
+浴 < yoku\ ;
+浜 < hama\ ;
+唯 < tada\ ;
+洞 < hora\ ;
+洛 < raku\ ;
+唖 < oshi\ ;
+蓮 < hasu\ ;
+鳩 < hato\ ;
+鳥 < tori\ ;
+泥 < doro\ ;
+波 < nami\ ;
+蓋 < futa\ ;
+沼 < numa\ ;
+蒻 < jaku\ ;
+蒲 < gama\ ;
+沢 < sawa\ ;
+鱈 < tara\ ;
+落 < ochi\ ;
+水 < mizu\ ;
+民 < tami\ ;
+右 < migi\ ;
+古 < furu\ ;
+母 < haha\ ;
+菊 < kiku\ ;
+友 < tomo\ ;
+又 < mata\ ;
+殿 < dono\ ;
+殻 < kara\ ;
+莢 < saya\ ;
+原 < hara\ ;
+草 < kusa\ ;
+升 < masu\ ;
+鬱 < utsu\ ;
+鬚 < hige\ ;
+匙 < saji\ ;
+北 < hoku\ ;
+茎 < kuki\ ;
+茅 < kaya\ ;
+匂 < niou\ ;
+髷 < mage\ ;
+髪 < kami\ ;
+苔 < koke\ ;
+骨 < hone\ ;
+助 < suke\ ;
+割 < wari\ ;
+機 < hata\ ;
+削 < saku\ ;
+船 < fune\ ;
+刺 < toge\ ;
+横 < yoko\ ;
+刈 < kari\ ;
+樅 < momi\ ;
+駒 < koma\ ;
+臍 < heso\ ;
+冬 < fuyu\ ;
+膝 < hiza\ ;
+膜 < maku\ ;
+首 < kubi\ ;
+円 < maru\ ;
+内 < uchi\ ;
+共 < domo\ ;
+業 < waza\ ;
+六 < roku\ ;
+入 < nyuu\ ;
+元 < moto\ ;
+儘 < mama\ ;
+脇 < waki\ ;
+脂 < yani\ ;
+胸 < mune\ ;
+棚 < tana\ ;
+肝 < kimo\ ;
+肘 < hiji\ ;
+傘 < kasa\ ;
+肌 < hada\ ;
+肉 < niku\ ;
+梃 < teko\ ;
+偽 < nise\ ;
+桐 < kiri\ ;
+桃 < momo\ ;
+桁 < keta\ ;
+耳 < mimi\ ;
+頬 < hoho\ ;
+栗 < kuri\ ;
+頃 < goro\ ;
+柚 < yuzu\ ;
+価 < atai\ ;
+杖 < tsue\ ;
+村 < mura\ ;
+杏 < anzu\ ;
+杉 < sugi\ ;
+伽 < togi\ ;
+札 < fuda\ ;
+雲 < kumo\ ;
+仲 < naka\ ;
+雪 < yuki\ ;
+雌 < mesu\ ;
+人 < hito\ ;
+隙 < suki\ ;
+暇 < hima\ ;
+之 < kore\ ;
+時 < toki\ ;
+昼 < hiru\ ;
+縦 < tate\ ;
+春 < haru\ ;
+丈 < dake\ ;
+縄 < nawa\ ;
+闇 < yami\ ;
+旅 < tabi\ ;
+綿 < wata\ ;
+絹 < kinu\ ;
+組 < kumi\ ;
+紐 < himo\ ;
+紅 < beni\ ;
+粥 < kayu\ ;
+粉 < kona\ ;
+米 < kome\ ;
+籠 < kago\ ;
+鐘 < kane\ ;
+揺 < yuri\ ;
+描 < byou\ ;
+箱 < hako\ ;
+管 < kuda\ ;
+鍵 < kagi\ ;
+鍋 < nabe\ ;
+筋 < suji\ ;
+等 < nado\ ;
+筈 < hazu\ ;
+筆 < fude\ ;
+笹 < sasa\ ;
+指 < yubi\ ;
+竹 < take\ ;
+窓 < mado\ ;
+銑 < zuku\ ;
+空 < sora\ ;
+扇 < ougi\ ;
+房 < fusa\ ;
+鈴 < suzu\ ;
+種 < tane\ ;
+我 < ware\ ;
+稍 < yaya\ ;
+程 < hodo\ ;
+針 < hari\ ;
+釜 < kama\ ;
+釘 < kugi\ ;
+禿 < hage\ ;
+憩 < ikoi\ ;
+酒 < sake\ ;
+態 < zama\ ;
+惑 < waku\ ;
+悪 < waru\ ;
+碧 < heki\ ;
+恥 < haji\ ;
+通 < tsuu\ ;
+砂 < suna\ ;
+応援 < ouen\ ;
+古器 < koki\ ;
+凍雨 < touu\ ;
+徒歩 < toho\ ;
+可否 < kahi\ ;
+徐歩 < joho\ ;
+庇護 < higo\ ;
+野営 < yaei\ ;
+法会 < houe\ ;
+同位 < doui\ ;
+危懼 < kigu\ ;
+句句 < kuku\ ;
+口受 < kuju\ ;
+治具 < jigu\ ;
+冷雨 < reiu\ ;
+当為 < toui\ ;
+右党 < utou\ ;
+遺精 < isei\ ;
+野卑 < yahi\ ;
+右傾 < ukei\ ;
+医書 < isho\ ;
+違背 < ihai\ ;
+怨嗟 < ensa\ ;
+鸚哥 < inko\ ;
+破毀 < haki\ ;
+反吐 < hedo\ ;
+反古 < hogo\ ;
+古儀 < kogi\ ;
+印度 < indo\ ;
+遺稿 < ikou\ ;
+相違 < soui\ ;
+座臥 < zaga\ ;
+帰途 < kito\ ;
+円顱 < enro\ ;
+磁場 < jiba\ ;
+古事 < koji\ ;
+永寿 < eiju\ ;
+往時 < ouji\ ;
+磁土 < jido\ ;
+鴉片 < ahen\ ;
+印字 < inji\ ;
+違算 < isan\ ;
+叙事 < joji\ ;
+磁器 < jiki\ ;
+微微 < bibi\ ;
+帰路 < kiro\ ;
+御意 < gyoi\ ;
+砂洲 < sasu\ ;
+午後 < gogo\ ;
+毀棄 < kiki\ ;
+遠祖 < enso\ ;
+後手 < gote\ ;
+干葉 < hiba\ ;
+引火 < inka\ ;
+御影 < goei\ ;
+樹陰 < juin\ ;
+英音 < eion\ ;
+汚名 < omei\ ;
+磁区 < jiku\ ;
+邪淫 < jain\ ;
+迂言 < ugen\ ;
+磁化 < jika\ ;
+医師 < ishi\ ;
+彼我 < higa\ ;
+危坐 < kiza\ ;
+機運 < kiun\ ;
+助演 < joen\ ;
+邪気 < jaki\ ;
+弥次 < yaji\ ;
+往往 < ouou\ ;
+刀自 < toji\ ;
+御子 < miko\ ;
+医官 < ikan\ ;
+加温 < kaon\ ;
+過疎 < kaso\ ;
+応募 < oubo\ ;
+遺漏 < irou\ ;
+後家 < goke\ ;
+医大 < idai\ ;
+殴打 < ouda\ ;
+歩武 < hobu\ ;
+違犯 < ihan\ ;
+円貨 < enka\ ;
+気味 < gimi\ ;
+気合 < kiai\ ;
+布衍 < fuen\ ;
+魔魅 < mami\ ;
+後場 < goba\ ;
+破家 < baka\ ;
+気化 < kika\ ;
+征夷 < seii\ ;
+水位 < suii\ ;
+円規 < enki\ ;
+盈虧 < eiki\ ;
+御名 < mina\ ;
+部屋 < heya\ ;
+英貨 < eika\ ;
+過渡 < kato\ ;
+違法 < ihou\ ;
+殷富 < inpu\ ;
+茣蓙 < goza\ ;
+英語 < eigo\ ;
+運河 < unga\ ;
+知恵 < chie\ ;
+運気 < unki\ ;
+輸贏 < yuei\ ;
+勢子 < seko\ ;
+包囲 < houi\ ;
+往古 < ouko\ ;
+加持 < kaji\ ;
+弧度 < kodo\ ;
+都営 < toei\ ;
+比喩 < hiyu\ ;
+遺文 < ibun\ ;
+逢瀬 < ouse\ ;
+出目 < deme\ ;
+武技 < bugi\ ;
+座洲 < zasu\ ;
+御代 < miyo\ ;
+医会 < ikai\ ;
+得体 < etai\ ;
+影印 < eiin\ ;
+円舞 < enbu\ ;
+鵜匠 < ujou\ ;
+母印 < boin\ ;
+逸機 < ikki\ ;
+部員 < buin\ ;
+皮膚 < hifu\ ;
+刷毛 < hake\ ;
+武庫 < buko\ ;
+機縁 < kien\ ;
+砂土 < sado\ ;
+遺恨 < ikon\ ;
+花譜 < kafu\ ;
+比価 < hika\ ;
+武家 < buke\ ;
+横臥 < ouga\ ;
+鬱金 < ukon\ ;
+比丘 < biku\ ;
+都下 < toka\ ;
+矢場 < yaba\ ;
+違憲 < iken\ ;
+延寿 < enju\ ;
+百舌 < mozu\ ;
+武夫 < bufu\ ;
+砂利 < jari\ ;
+部下 < buka\ ;
+瞽女 < goze\ ;
+出歯 < deba\ ;
+過度 < kado\ ;
+武器 < buki\ ;
+運座 < unza\ ;
+次序 < jijo\ ;
+模糊 < moko\ ;
+花芽 < kaga\ ;
+平易 < heii\ ;
+歩合 < buai\ ;
+疎音 < soin\ ;
+樹皮 < juhi\ ;
+府庫 < fuko\ ;
+遺品 < ihin\ ;
+疑雲 < giun\ ;
+遺命 < imei\ ;
+此処 < koko\ ;
+武具 < bugu\ ;
+几案 < kian\ ;
+武備 < bubi\ ;
+追手 < otte\ ;
+異風 < ifuu\ ;
+異類 < irui\ ;
+利己 < riko\ ;
+武事 < buji\ ;
+荊棘 < bara\ ;
+魔羅 < mara\ ;
+遺体 < itai\ ;
+遺伝 < iden\ ;
+過去 < kako\ ;
+欧化 < ouka\ ;
+疎遠 < soen\ ;
+疑辞 < giji\ ;
+左派 < saha\ ;
+艶美 < enbi\ ;
+驢馬 < roba\ ;
+岐阜 < gifu\ ;
+座員 < zain\ ;
+永々 < eiei\ ;
+真帆 < maho\ ;
+相手 < aite\ ;
+度合 < doai\ ;
+違例 < irei\ ;
+利器 < riki\ ;
+色絵 < iroe\ ;
+廃位 < haii\ ;
+布施 < fuse\ ;
+自費 < jihi\ ;
+自負 < jifu\ ;
+入江 < irie\ ;
+騾馬 < raba\ ;
+花王 < kaou\ ;
+棋院 < kiin\ ;
+帷幄 < iaku\ ;
+英武 < eibu\ ;
+異趣 < ishu\ ;
+具案 < guan\ ;
+自衛 < jiei\ ;
+異論 < iron\ ;
+相子 < aiko\ ;
+府下 < fuka\ ;
+魔王 < maou\ ;
+利他 < rita\ ;
+騎馬 < kiba\ ;
+機影 < kiei\ ;
+発条 < bane\ ;
+内意 < naii\ ;
+機序 < kijo\ ;
+帝威 < teii\ ;
+迂回 < ukai\ ;
+退位 < taii\ ;
+梅雨 < baiu\ ;
+模擬 < mogi\ ;
+円弧 < enko\ ;
+痲痺 < mahi\ ;
+目地 < meji\ ;
+円座 < enza\ ;
+花樹 < kaju\ ;
+画譜 < gafu\ ;
+機宜 < kigi\ ;
+尾部 < bibu\ ;
+盲唖 < moua\ ;
+依願 < igan\ ;
+依頼 < irai\ ;
+疑義 < gigi\ ;
+真似 < mane\ ;
+棋譜 < kifu\ ;
+児戯 < jigi\ ;
+真上 < maue\ ;
+希土 < kido\ ;
+臙脂 < enji\ ;
+偃臥 < enga\ ;
+胡麻 < goma\ ;
+栗鼠 < risu\ ;
+寺院 < jiin\ ;
+目処 < medo\ ;
+駄馬 < daba\ ;
+公家 < kuge\ ;
+鬱気 < ukki\ ;
+軽易 < keii\ ;
+英字 < eiji\ ;
+俚語 < rigo\ ;
+屠蘇 < toso\ ;
+駆除 < kujo\ ;
+寝間 < nema\ ;
+目上 < meue\ ;
+輪差 < wasa\ ;
+余韻 < yoin\ ;
+異端 < itan\ ;
+工合 < guai\ ;
+花序 < kajo\ ;
+山羊 < yagi\ ;
+苦土 < kudo\ ;
+寿賀 < juga\ ;
+自画 < jiga\ ;
+石斑魚 < ugui\ ;
+英和 < eiwa\ ;
+画素 < gaso\ ;
+梨花 < rika\ ;
+由縁 < yuen\ ;
+魚座 < uoza\ ;
+具備 < gubi\ ;
+越訴 < esso\ ;
+儒家 < juka\ ;
+起訴 < kiso\ ;
+俚耳 < riji\ ;
+家運 < kaun\ ;
+異状 < ijou\ ;
+楚楚 < soso\ ;
+饑餓 < kiga\ ;
+皇位 < koui\ ;
+家路 < ieji\ ;
+魔女 < majo\ ;
+饂飩 < udon\ ;
+字音 < jion\ ;
+寄語 < kigo\ ;
+耳鼻 < jibi\ ;
+餓鬼 < gaki\ ;
+胤裔 < inei\ ;
+儲位 < choi\ ;
+自棄 < yake\ ;
+理非 < rihi\ ;
+優位 < yuui\ ;
+栄誉 < eiyo\ ;
+輔佐 < hosa\ ;
+伊達 < date\ ;
+異様 < iyou\ ;
+余蘊 < youn\ ;
+家蚊 < ieka\ ;
+尼甫 < jiho\ ;
+偉材 < izai\ ;
+異本 < ihon\ ;
+植木 < ueki\ ;
+胼胝 < tako\ ;
+航宇 < kouu\ ;
+疑懼 < giku\ ;
+異数 < isuu\ ;
+疑惧 < gigu\ ;
+魁偉 < kaii\ ;
+保無 < homu\ ;
+自愛 < jiai\ ;
+栄華 < eiga\ ;
+偉挙 < ikyo\ ;
+偉才 < isai\ ;
+理路 < riro\ ;
+賦詠 < fuei\ ;
+畏敬 < ikei\ ;
+保温 < hoon\ ;
+画架 < gaka\ ;
+二院 < niin\ ;
+自己 < jiko\ ;
+豪雨 < gouu\ ;
+付議 < fugi\ ;
+保母 < hobo\ ;
+安臥 < anga\ ;
+亜鈴 < arei\ ;
+付記 < fuki\ ;
+小火 < boya\ ;
+駄目 < dame\ ;
+屋根 < yane\ ;
+依然 < izen\ ;
+異存 < izon\ ;
+二部 < nibu\ ;
+風雨 < fuuu\ ;
+楕円 < daen\ ;
+偽印 < giin\ ;
+異変 < ihen\ ;
+留守 < rusu\ ;
+位相 < isou\ ;
+一鼓 < ikko\ ;
+用意 < youi\ ;
+耳語 < jigo\ ;
+異域 < iiki\ ;
+保持 < hoji\ ;
+興亜 < koua\ ;
+瓦斯 < gasu\ ;
+自利 < jiri\ ;
+余煙 < yoen\ ;
+下駄 < geta\ ;
+下馬 < geba\ ;
+假名 < kana\ ;
+異同 < idou\ ;
+耶蘇 < yaso\ ;
+瑠璃 < ruri\ ;
+偉勲 < ikun\ ;
+久遠 < kuon\ ;
+自余 < jiyo\ ;
+不離 < furi\ ;
+自他 < jita\ ;
+美音 < bion\ ;
+子等 < kora\ ;
+下院 < kain\ ;
+不間 < buma\ ;
+画因 < gain\ ;
+余波 < yoha\ ;
+畏友 < iyuu\ ;
+小手 < kote\ ;
+趣意 < shui\ ;
+偉人 < ijin\ ;
+保安 < hoan\ ;
+余殃 < yoou\ ;
+路地 < roji\ ;
+琵琶 < biwa\ ;
+暮雲 < boun\ ;
+胃液 < ieki\ ;
+亜聖 < asei\ ;
+下野 < geya\ ;
+上野 < ueno\ ;
+肌理 < kime\ ;
+馴染 < naji\ ;
+亜群 < agun\ ;
+世辞 < seji\ ;
+不運 < fuun\ ;
+余栄 < yoei\ ;
+梨園 < rien\ ;
+供御 < gugo\ ;
+路加 < ruka\ ;
+亜綱 < akou\ ;
+余暇 < yoka\ ;
+一過 < ikka\ ;
+小屋 < koya\ ;
+一途 < itto\ ;
+美辞 < biji\ ;
+安気 < anki\ ;
+栄枯 < eiko\ ;
+寓意 < guui\ ;
+世話 < sewa\ ;
+亜種 < ashu\ ;
+晴雨 < seiu\ ;
+小夜 < sayo\ ;
+飛簷 < hien\ ;
+音頭 < ondo\ ;
+余技 < yogi\ ;
+不語 < fugo\ ;
+余所 < yoso\ ;
+王者 < ouja\ ;
+暗部 < anbu\ ;
+供奉 < gubu\ ;
+害意 < gaii\ ;
+予示 < yoji\ ;
+安易 < an''i\ ;
+下衆 < gesu\ ;
+上衣 < joui\ ;
+字母 < jibo\ ;
+背戸 < sedo\ ;
+寄席 < yose\ ;
+佳宴 < kaen\ ;
+犠飛 < gihi\ ;
+不虞 < fugu\ ;
+腐儒 < fuju\ ;
+罵詈 < bari\ ;
+他派 < taha\ ;
+安打 < anda\ ;
+暗譜 < anpu\ ;
+是非 < zehi\ ;
+家家 < ieie\ ;
+枸杞 < kuko\ ;
+猿臂 < enpi\ ;
+云爾 < unji\ ;
+亜炭 < atan\ ;
+以東 < itou\ ;
+安座 < anza\ ;
+旗鼓 < kiko\ ;
+鞍馬 < anba\ ;
+一臂 < ippi\ ;
+木瓜 < boke\ ;
+肩巾 < hire\ ;
+時運 < jiun\ ;
+韻語 < ingo\ ;
+音譜 < onpu\ ;
+上絵 < uwae\ ;
+孤影 < koei\ ;
+案価 < anka\ ;
+猛者 < mosa\ ;
+羽目 < hame\ ;
+護謨 < gomu\ ;
+二次 < niji\ ;
+如露 < joro\ ;
+不穏 < fuon\ ;
+安堵 < ando\ ;
+馬具 < bagu\ ;
+他愛 < taai\ ;
+家出 < iede\ ;
+安固 < anko\ ;
+家具 < kagu\ ;
+不磨 < fuma\ ;
+日間 < hiai\ ;
+伎女 < gijo\ ;
+寄与 < kiyo\ ;
+青青 < aoao\ ;
+二期 < niki\ ;
+安否 < anpi\ ;
+胡乱 < uron\ ;
+予期 < yoki\ ;
+義理 < giri\ ;
+譏誹 < kihi\ ;
+下痢 < geri\ ;
+賭場 < toba\ ;
+賀宴 < gaen\ ;
+宇内 < udai\ ;
+以外 < igai\ ;
+夢魔 < muma\ ;
+来意 < raii\ ;
+暗示 < anji\ ;
+安保 < anpo\ ;
+非運 < hiun\ ;
+聾唖 < roua\ ;
+羽毛 < umou\ ;
+音素 < onso\ ;
+贈位 < zoui\ ;
+付図 < fuzu\ ;
+予後 < yogo\ ;
+二度 < nido\ ;
+義気 < giki\ ;
+義母 < gibo\ ;
+語音 < goon\ ;
+以南 < inan\ ;
+夜陰 < yain\ ;
+付和 < fuwa\ ;
+王手 < oute\ ;
+羽根 < hane\ ;
+非議 < higi\ ;
+以内 < inai\ ;
+一派 < ippa\ ;
+三毛 < mike\ ;
+雷雨 < raiu\ ;
+雑魚 < jako\ ;
+護符 < gofu\ ;
+雲霧 < unmu\ ;
+賦与 < fuyo\ ;
+大野 < oono\ ;
+一歩 < ippo\ ;
+斎部 < inbe\ ;
+代位 < daii\ ;
+王座 < ouza\ ;
+代代 < yoyo\ ;
+他事 < taji\ ;
+狒狒 < hihi\ ;
+狐狸 < kori\ ;
+露語 < rogo\ ;
+大路 < ooji\ ;
+王家 < ouke\ ;
+義援 < gien\ ;
+王妃 < ouhi\ ;
+王女 < oujo\ ;
+青葉 < aoba\ ;
+青菜 < aona\ ;
+互助 < gojo\ ;
+五分 < gobu\ ;
+事務 < jimu\ ;
+下手 < heta\ ;
+下戸 < geko\ ;
+東亞 < toua\ ;
+木地 < kiji\ ;
+王土 < oudo\ ;
+美技 < bigi\ ;
+誤記 < goki\ ;
+音波 < onpa\ ;
+韻母 < inbo\ ;
+予備 < yobi\ ;
+二価 < nika\ ;
+施肥 < sehi\ ;
+二佐 < nisa\ ;
+早稲 < wase\ ;
+煙霧 < enmu\ ;
+煙雨 < en''u\ ;
+風呂 < furo\ ;
+乾位 < keni\ ;
+擬音 < gion\ ;
+縁起 < engi\ ;
+九分 < kubu\ ;
+不安 < fuan\ ;
+父祖 < fuso\ ;
+一家 < ikke\ ;
+陰阜 < infu\ ;
+暗愚 < angu\ ;
+与太 < yota\ ;
+下女 < gejo\ ;
+無駄 < muda\ ;
+縁語 < engo\ ;
+雅語 < gago\ ;
+獣医 < juui\ ;
+美姫 < biki\ ;
+婦女 < fujo\ ;
+風位 < fuui\ ;
+美女 < bijo\ ;
+青砥 < aoto\ ;
+無音 < muon\ ;
+議案 < gian\ ;
+不図 < futo\ ;
+隘路 < airo\ ;
+猛威 < moui\ ;
+多義 < tagi\ ;
+暴威 < boui\ ;
+語義 < gogi\ ;
+陰部 < inbu\ ;
+女王 < joou\ ;
+非理 < hiri\ ;
+雲脂 < fuke\ ;
+義務 < gimu\ ;
+離苦 < riku\ ;
+青田 < aota\ ;
+不味 < fumi\ ;
+三味 < sami\ ;
+下句 < geku\ ;
+縷縷 < ruru\ ;
+壁蝨 < dani\ ;
+美味 < bimi\ ;
+下卑 < gebi\ ;
+護持 < goji\ ;
+一句 < ikku\ ;
+無鉛 < muen\ ;
+美化 < bika\ ;
+不備 < fubi\ ;
+犠打 < gida\ ;
+外科 < geka\ ;
+大目 < oome\ ;
+縁者 < enja\ ;
+日歩 < hibu\ ;
+音字 < onji\ ;
+院議 < ingi\ ;
+一佐 < issa\ ;
+父母 < fubo\ ;
+非毀 < hiki\ ;
+時差 < jisa\ ;
+細雨 < saiu\ ;
+霊異 < reii\ ;
+基音 < kion\ ;
+緯線 < isen\ ;
+隠者 < inja\ ;
+閻魔 < enma\ ;
+日日 < hibi\ ;
+数珠 < juzu\ ;
+陰萎 < in''i\ ;
+音吐 < onto\ ;
+音叉 < onsa\ ;
+青木 < aoki\ ;
+威厳 < igen\ ;
+謝意 < shai\ ;
+綺羅 < kira\ ;
+基部 < kibu\ ;
+如意 < nyoi\ ;
+好悪 < kouo\ ;
+音価 < onka\ ;
+既往 < kiou\ ;
+奥意 < okui\ ;
+墓碑 < bohi\ ;
+雨水 < usui\ ;
+夜暗 < yaan\ ;
+時事 < jiji\ ;
+委任 < inin\ ;
+奴婢 < nuhi\ ;
+大手 < oode\ ;
+露座 < roza\ ;
+陰画 < inga\ ;
+壊死 < eshi\ ;
+無碍 < muge\ ;
+詐欺 < sagi\ ;
+青地 < aoji\ ;
+青図 < aozu\ ;
+粗野 < soya\ ;
+大屋 < ooya\ ;
+誤差 < gosa\ ;
+無理 < muri\ ;
+夢寐 < mubi\ ;
+多岐 < taki\ ;
+煙波 < enpa\ ;
+旧事 < kuji\ ;
+語尾 < gobi\ ;
+露営 < roei\ ;
+陰気 < inki\ ;
+多多 < tata\ ;
+土間 < doma\ ;
+措辞 < soji\ ;
+無派 < muha\ ;
+濾過 < roka\ ;
+齱 < seku\ ;
+雨天 < uten\ ;
+雨声 < usei\ ;
+鼏 < beki\ ;
+無比 < muhi\ ;
+見目 < mime\ ;
+麿 < maro\ ;
+雨域 < uiki\ ;
+夜半 < yowa\ ;
+鶪 < keki\ ;
+無機 < muki\ ;
+鴨 < kamo\ ;
+隠微 < inbi\ ;
+補記 < hoki\ ;
+随意 < zuii\ ;
+鱧 < hamo\ ;
+鱚 < kisu\ ;
+鰤 < buri\ ;
+鰙 < haya\ ;
+鰐 < wani\ ;
+夜具 < yagu\ ;
+鯖 < saba\ ;
+鯔 < bora\ ;
+鯊 < haze\ ;
+鮴 < gori\ ;
+鮲 < mate\ ;
+鮫 < same\ ;
+鮒 < funa\ ;
+魹 < todo\ ;
+骭 < hagi\ ;
+骉 < hyuu\ ;
+粗菓 < soka\ ;
+火箭 < hiya\ ;
+絵本 < ehon\ ;
+韮 < nira\ ;
+鞠 < mari\ ;
+土語 < dogo\ ;
+靄 < moya\ ;
+地衣 < chii\ ;
+雇員 < koin\ ;
+雅味 < gami\ ;
+簿記 < boki\ ;
+閖 < yuru\ ;
+無手 < mute\ ;
+無我 < muga\ ;
+鑓 < yari\ ;
+鑃 < tyou\ ;
+阿房 < ahou\ ;
+鍬 < kuwa\ ;
+補肥 < hohi\ ;
+鉾 < hoko\ ;
+規模 < kibo\ ;
+袈裟 < kesa\ ;
+鄙 < hina\ ;
+塗布 < tofu\ ;
+逩 < kamu\ ;
+逧 < sako\ ;
+迍 < chun\ ;
+轌 < sori\ ;
+除夜 < joya\ ;
+火炉 < karo\ ;
+賭 < kake\ ;
+押韻 < ouin\ ;
+擬古 < giko\ ;
+豚 < buta\ ;
+無垢 < muku\ ;
+無地 < muji\ ;
+襞 < hida\ ;
+素手 < sude\ ;
+褱 < kaie\ ;
+裛 < youu\ ;
+袰 < horo\ ;
+蟹 < kani\ ;
+無味 < mumi\ ;
+蚋 < buyo\ ;
+虙 < huku\ ;
+藪 < yabu\ ;
+蕪 < kabu\ ;
+蔇 < kike\ ;
+蓼 < tade\ ;
+蓑 < mino\ ;
+葱 < negi\ ;
+院主 < inju\ ;
+堂宇 < douu\ ;
+阿兄 < akei\ ;
+苆 < susa\ ;
+芹 < seri\ ;
+無価 < muka\ ;
+芒 < nogi\ ;
+場合 < baai\ ;
+絵像 < ezou\ ;
+無二 < muni\ ;
+膃 < otsu\ ;
+脛 < sune\ ;
+衣紋 < emon\ ;
+納屋 < naya\ ;
+見場 < miba\ ;
+笑顔 < egao\ ;
+罠 < wana\ ;
+揶揄 < yayu\ ;
+綛 < kase\ ;
+粗朶 < soda\ ;
+糠 < nuka\ ;
+糊 < nori\ ;
+手間 < tema\ ;
+図画 < zuga\ ;
+粂 < kume\ ;
+簗 < yana\ ;
+箍 < taga\ ;
+箆 < hera\ ;
+笊 < zaru\ ;
+火屋 < hoya\ ;
+瀬戸 < seto\ ;
+螻蛄 < kera\ ;
+瘤 < kobu\ ;
+間夫 < mabu\ ;
+甕 < mika\ ;
+粗布 < sofu\ ;
+瑕 < kizu\ ;
+獶 < nyou\ ;
+蛙黽 < abou\ ;
+掏摸 < suri\ ;
+燸 < jiyu\ ;
+裸婦 < rafu\ ;
+図案 < zuan\ ;
+土手 < dote\ ;
+滓 < kasu\ ;
+温雅 < onga\ ;
+援助 < enjo\ ;
+齟齬 < sogo\ ;
+橳 < nude\ ;
+橲 < zusa\ ;
+四方 < yomo\ ;
+樽 < taru\ ;
+樺 < kaba\ ;
+楅 < hyku\ ;
+椨 < tafu\ ;
+椥 < nagi\ ;
+栂 < toga\ ;
+杣 < soma\ ;
+国府 < kofu\ ;
+捻子 < neji\ ;
+手羽 < teba\ ;
+淫雨 < in''u\ ;
+補助 < hojo\ ;
+湯葉 < yuba\ ;
+土器 < doki\ ;
+按摩 < anma\ ;
+扨 < sate\ ;
+授受 < juju\ ;
+打破 < daha\ ;
+拿捕 < daho\ ;
+土匪 < dohi\ ;
+彶 < kihu\ ;
+弶 < gyau\ ;
+弗 < doru\ ;
+弓 < yumi\ ;
+廧 < shau\ ;
+帤 < geyo\ ;
+帢 < kahu\ ;
+巤 < rehu\ ;
+嶯 < shiu\ ;
+嵀 < chiu\ ;
+在位 < zaii\ ;
+崨 < sehu\ ;
+峅 < kura\ ;
+浮塵子 < unka\ ;
+屶 < nata\ ;
+愛馬 < aiba\ ;
+宨 < tewa\ ;
+授与 < juyo\ ;
+四囲 < shii\ ;
+固化 < koka\ ;
+愛飲 < aiin\ ;
+嬼 < riwa\ ;
+哀音 < aion\ ;
+嬶 < kaka\ ;
+媃 < jyuu\ ;
+回向 < ekou\ ;
+戯画 < giga\ ;
+塾 < juku\ ;
+埖 < gomi\ ;
+慰謝 < isha\ ;
+圾 < gyuu\ ;
+嘸 < sazo\ ;
+嘁 < sahu\ ;
+嗽 < ugai\ ;
+喢 < tehu\ ;
+啦 < rahu\ ;
+和音 < waon\ ;
+咶 < kuui\ ;
+押忍 < ossu\ ;
+移転 < iten\ ;
+銅鑼 < dora\ ;
+劋 < syou\ ;
+凸 < deko\ ;
+愛輝 < aiki\ ;
+湯煮 < yuni\ ;
+悪鬼 < akki\ ;
+俇 < kyau\ ;
+侠 < kyan\ ;
+佗 < wabi\ ;
+亀 < kame\ ;
+也 < nari\ ;
+愛護 < aigo\ ;
+哀話 < aiwa\ ;
+哀訴 < aiso\ ;
+呉須 < gosu\ ;
+秘話 < hiwa\ ;
+湯気 < yuge\ ;
+黄身 < kimi\ ;
+和議 < wagi\ ;
+和語 < wago\ ;
+吐露 < toro\ ;
+恩顧 < onko\ ;
+恵雨 < keiu\ ;
+海芋 < kaiu\ ;
+浄衣 < joue\ ;
+蕎麦 < soba\ ;
+鸚鵡 < oumu\ ;
+合間 < aima\ ;
+右面 < umen\ ;
+鼻祖 < biso\ ;
+悪貨 < akka\ ;
+渡欧 < toou\ ;
+古音 < koon\ ;
+嘔吐 < outo\ ;
+和英 < waei\ ;
+古雅 < koga\ ;
+滋味 < jimi\ ;
+唖然 < azen\ ;
+蘇芳 < suou\ ;
+藍褸 < boro\ ;
+悪衣 < akui\ ;
+湯屋 < yuya\ ;
+唾棄 < daki\ ;
+右辺 < uhen\ ;
+喜寿 < kiju\ ;
+湯女 < yuna\ ;
+厭離 < onri\ ;
+鼻炎 < bien\ ;
+野辺 < nobe\ ;
+恩誼 < ongi\ ;
+野路 < noji\ ;
+呪符 < jufu\ ;
+古語 < kogo\ ;
+営利 < eiri\ ;
+応需 < ouju\ ;
+我利 < gari\ ;
+移民 < imin\ ;
+喇嘛 < rama\ ;
+憎悪 < zouo\ ;
+右葉 < uyou\ ;
+哀歌 < aika\ ;
+受蘊 < juun\ ;
+御顔 < okao\ ;
+鹵簿 < robo\ ;
+十雨 < juuu\ ;
+右脳 < unou\ ;
+温和 < onwa\ ;
+永遠 < eien\ ;
+野良 < nora\ ;
+海松 < miru\ ;
+和歌 < waka\ ;
+汚行 < okou\ ;
+破風 < hafu\ ;
+愛撫 < aibu\ ;
+黄泉 < yomi\ ;
+応訴 < ouso\ ;
+哀慕 < aibo\ ;
+合着 < aigi\ ;
+御身 < onmi\ ;
+慰問 < imon\ ;
+区費 < kuhi\ ;
+呆気 < akke\ ;
+邪魔 < jama\ ;
+都鄙 < tohi\ ;
+破邪 < haja\ ;
+往路 < ouro\ ;
+邪飛 < jahi\ ;
+祖母 < sobo\ ;
+派手 < hade\ ;
+弥陀 < mida\ ;
+野猿 < yaen\ ;
+受理 < juri\ ;
+呼応 < koou\ ;
+秘奥 < hiou\ ;
+汚穢 < owai\ ;
+愚図 < guzu\ ;
+流布 < rufu\ ;
+母語 < bogo\ ;
+野火 < nobi\ ;
+和字 < waji\ ;
+合歓 < nemu\ ;
+御茶 < ocha\ ;
+麻布 < mafu\ ;
+悪感 < okan\ ;
+移住 < ijuu\ ;
+虚位 < kyoi\ ;
+恵方 < ehou\ ;
+愛児 < aiji\ ;
+沙汰 < sata\ ;
+武運 < buun\ ;
+御簾 < misu\ ;
+味噌 < miso\ ;
+右方 < uhou\ ;
+亜細亜 < ajia\ ;
+廈門 < amoi\ ;
+汚点 < oten\ ;
+毛羽 < keba\ ;
+野暮 < yabo\ ;
+合意 < goui\ ;
+御礼 < orei\ ;
+波布 < habu\ ;
+御碗 < owan\ ;
+遺贈 < izou\ ;
+汚泥 < odei\ ;
+石蓴 < aosa\ ;
+御盆 < obon\ ;
+汚水 < osui\ ;
+南無 < namu\ ;
+追風 < oite\ ;
+砒素 < hiso\ ;
+怪我 < kega\ ;
+右岸 < ugan\ ;
+汚染 < osen\ ;
+恩威 < on''i\ ;
+荷駄 < nida\ ;
+合図 < aizu\ ;
+遺著 < icho\ ;
+幾重 < ikue\ ;
+汚損 < oson\ ;
+吏員 < riin\ ;
+厭悪 < en''o\ ;
+去年 < kozo\ ;
+名医 < meii\ ;
+吏務 < rimu\ ;
+迷 < mei\ ;
+念 < nen\ ;
+短 < tan\ ;
+快 < kai\ ;
+迥 < kei\ ;
+知 < chi\ ;
+矜 < kin\ ;
+忙 < bou\ ;
+返 < hen\ ;
+迎 < gei\ ;
+忍 < nin\ ;
+迅 < jin\ ;
+辿 < ten\ ;
+瞻 < sen\ ;
+農 < nou\ ;
+辯 < ben\ ;
+循 < jun\ ;
+瞠 < dou\ ;
+從 < juu\ ;
+待 < tai\ ;
+彩 < sai\ ;
+睡 < sui\ ;
+轟 < gou\ ;
+当 < tou\ ;
+彈 < dan\ ;
+眩 < gen\ ;
+眠 < min\ ;
+弟 < tei\ ;
+弛 < shi\ ;
+弘 < kou\ ;
+県 < ken\ ;
+看 < kan\ ;
+弄 < rou\ ;
+省 < sei\ ;
+相 < sou\ ;
+廢 < hai\ ;
+軍 < gun\ ;
+廉 < ren\ ;
+盆 < bon\ ;
+庸 < you\ ;
+皰 < hou\ ;
+躇 < cho\ ;
+幾 < iku\ ;
+幽 < yuu\ ;
+癌 < gan\ ;
+跡 < ato\ ;
+跟 < kon\ ;
+距 < kyo\ ;
+疊 < jou\ ;
+番 < ban\ ;
+畦 < aze\ ;
+畔 < han\ ;
+産 < san\ ;
+贅 < zei\ ;
+瓶 < bin\ ;
+賣 < bai\ ;
+瓜 < uri\ ;
+岩 < iwa\ ;
+財 < zai\ ;
+象 < zou\ ;
+屏 < hei\ ;
+尚 < nao\ ;
+射 < sha\ ;
+封 < fuu\ ;
+寸 < sun\ ;
+宵 < yoi\ ;
+害 < gai\ ;
+宛 < ate\ ;
+存 < son\ ;
+嬪 < hin\ ;
+諸 < sho\ ;
+論 < ron\ ;
+嫌 < iya\ ;
+犬 < inu\ ;
+誄 < rui\ ;
+牡 < osu\ ;
+牌 < pai\ ;
+爛 < ran\ ;
+燻 < kun\ ;
+姉 < ane\ ;
+親 < oya\ ;
+奮 < fun\ ;
+奥 < oku\ ;
+襟 < eri\ ;
+然 < zen\ ;
+声 < koe\ ;
+裏 < ura\ ;
+袂 < bei\ ;
+蟻 < ari\ ;
+濘 < nei\ ;
+埋 < mai\ ;
+垢 < aka\ ;
+蝿 < hae\ ;
+齡 < rei\ ;
+滿 < man\ ;
+蛛 < shu\ ;
+四 < yon\ ;
+麻 < asa\ ;
+湾 < wan\ ;
+虜 < ryo\ ;
+渦 < uzu\ ;
+嘘 < uso\ ;
+蘂 < zui\ ;
+淋 < rin\ ;
+液 < eki\ ;
+喰 < kuu\ ;
+海 < umi\ ;
+問 < mon\ ;
+泡 < awa\ ;
+蒙 < mou\ ;
+沖 < oki\ ;
+沌 < ton\ ;
+味 < aji\ ;
+池 < ike\ ;
+汗 < ase\ ;
+呑 < don\ ;
+氏 < uji\ ;
+台 < dai\ ;
+殘 < zan\ ;
+歌 < uta\ ;
+午 < uma\ ;
+十 < too\ ;
+鬼 < oni\ ;
+茶 < cha\ ;
+勤 < gon\ ;
+苗 < nae\ ;
+色 < iro\ ;
+前 < mae\ ;
+分 < bun\ ;
+臼 < usu\ ;
+馭 < gyo\ ;
+腕 < ude\ ;
+免 < men\ ;
+兄 < ani\ ;
+飴 < ame\ ;
+飜 < hon\ ;
+傳 < den\ ;
+梅 < ume\ ;
+桶 < oke\ ;
+偶 < guu\ ;
+顔 < kao\ ;
+顎 < ago\ ;
+頼 < rai\ ;
+俺 < ore\ ;
+枝 < eda\ ;
+板 < ita\ ;
+何 < nan\ ;
+隈 < wai\ ;
+織 < ori\ ;
+丘 < oka\ ;
+網 < ami\ ;
+長 < osa\ ;
+數 < suu\ ;
+故 < yue\ ;
+糸 < ito\ ;
+粗 < ara\ ;
+握 < aku\ ;
+笛 < fue\ ;
+竿 < sao\ ;
+稲 < ine\ ;
+或 < aru\ ;
+重 < omo\ ;
+秋 < aki\ ;
+禰 < dei\ ;
+息 < iki\ ;
+恋 < koi\ ;
+迂遠 < uen\ ;
+微意 < bii\ ;
+叙位 < joi\ ;
+迂路 < uro\ ;
+得手 < ete\ ;
+気宇 < kiu\ ;
+医家 < ika\ ;
+八重 < yae\ ;
+医員 < iin\ ;
+医務 < imu\ ;
+医事 < iji\ ;
+遺愛 < iai\ ;
+遺影 < iei\ ;
+部位 < bui\ ;
+遺孤 < iko\ ;
+異音 < ion\ ;
+希有 < keu\ ;
+迂愚 < ugu\ ;
+欧亜 < oua\ ;
+次位 < jii\ ;
+次亜 < jia\ ;
+眉宇 < biu\ ;
+異議 < igi\ ;
+居間 < ima\ ;
+帰依 < kie\ ;
+香魚 < ayu\ ;
+機位 < kii\ ;
+似非 < ese\ ;
+尾羽 < oha\ ;
+異父 < ifu\ ;
+会陰 < ein\ ;
+異母 < ibo\ ;
+亜麻 < ama\ ;
+以遠 < ien\ ;
+伊語 < igo\ ;
+亜鉛 < aen\ ;
+尾根 < one\ ;
+椅子 < isu\ ;
+依怙 < eko\ ;
+云為 < uni\ ;
+亜欧 < aou\ ;
+以往 < iou\ ;
+有無 < umu\ ;
+会厭 < een\ ;
+栄位 < eii\ ;
+井戸 < ido\ ;
+非違 < hii\ ;
+夜雨 < yau\ ;
+多雨 < tau\ ;
+二尉 < nii\ ;
+不意 < fui\ ;
+威武 < ibu\ ;
+有卦 < uke\ ;
+王位 < oui\ ;
+羅宇 < rao\ ;
+羽化 < uka\ ;
+絵馬 < ema\ ;
+壊疽 < eso\ ;
+雨気 < uki\ ;
+語意 < goi\ ;
+雨後 < ugo\ ;
+無為 < mui\ ;
+補遺 < hoi\ ;
+龒 < ryu\ ;
+黶 < aza\ ;
+阿比 < abi\ ;
+鳰 < nio\ ;
+鰕 < ebi\ ;
+鰓 < era\ ;
+餌 < esa\ ;
+鎊 < hau\ ;
+鍑 < huu\ ;
+錵 < nie\ ;
+鈖 < hun\ ;
+鄼 < sab\ ;
+鄞 < gin\ ;
+邾 < chu\ ;
+轑 < rau\ ;
+褜 < ena\ ;
+絵図 < ezu\ ;
+見得 < mie\ ;
+虻 < abu\ ;
+阿吽 < aun\ ;
+葵 < aoi\ ;
+荻 < ogi\ ;
+芋 < imo\ ;
+臑 < dau\ ;
+滋雨 < jiu\ ;
+稗 < hie\ ;
+瓴 < rii\ ;
+紆余 < uyo\ ;
+樋 < toi\ ;
+棰 < soi\ ;
+杭 < kui\ ;
+斧 < ono\ ;
+愰 < kau\ ;
+彯 < heu\ ;
+弨 < seu\ ;
+廇 < riu\ ;
+廅 < ahu\ ;
+庣 < teu\ ;
+嶆 < sau\ ;
+嵺 < reu\ ;
+嵶 < tao\ ;
+海髪 < ogo\ ;
+嬈 < deu\ ;
+嫹 < bau\ ;
+嫙 < seb\ ;
+意馬 < iba\ ;
+奡 < gau\ ;
+垚 < geu\ ;
+圦 < iri\ ;
+嚷 < jau\ ;
+図会 < zue\ ;
+嘫 < dam\ ;
+僠 < fan\ ;
+佂 < yai\ ;
+悪露 < oro\ ;
+蝦夷 < ezo\ ;
+穢多 < eta\ ;
+穢土 < edo\ ;
+慰安 < ian\ ;
+十重 < toe\ ;
+愚意 < gui\ ;
+右派 < uha\ ;
+意味 < imi\ ;
+萎靡 < ibi\ ;
+迦 < ka\ ;
+矢 < ya\ ;
+応 < ou\ ;
+忌 < ki\ ;
+辭 < ji\ ;
+微 < bi\ ;
+御 < go\ ;
+徒 < to\ ;
+徐 < jo\ ;
+眼 < me\ ;
+輪 < wa\ ;
+弥 < mi\ ;
+真 < ma\ ;
+引 < in\ ;
+弐 < ni\ ;
+延 < en\ ;
+庫 < ko\ ;
+座 < za\ ;
+度 < do\ ;
+府 < fu\ ;
+庇 < hi\ ;
+踰 < yu\ ;
+路 < ro\ ;
+差 < sa\ ;
+巣 < su\ ;
+痛 < ts\ ;
+疑 < gi\ ;
+疎 < so\ ;
+田 < ta\ ;
+甥 < oi\ ;
+豫 < yo\ ;
+履 < ri\ ;
+寝 < ne\ ;
+家 < ke\ ;
+訝 < ga\ ;
+營 < ei\ ;
+襦 < ju\ ;
+奈 < na\ ;
+無 < mu\ ;
+褞 < on\ ;
+褓 < ho\ ;
+裳 < mo\ ;
+墮 < da\ ;
+場 < ba\ ;
+瀬 < se\ ;
+螺 < ra\ ;
+図 < zu\ ;
+嗟 < aa\ ;
+藍 < ai\ ;
+鵡 < bu\ ;
+派 < ha\ ;
+莫 < bo\ ;
+苦 < ku\ ;
+出 < de\ ;
+具 < gu\ ;
+案 < an\ ;
+青 < ao\ ;
+云 < un\ ;
+乃 < no\ ;
+是 < ze\ ;
+手 < te\ ;
+惹 < ja\ ;
+伊井 < ii\ ;
+闞 < kn\ ;
+鈇 < hu\ ;
+讄 < ru\ ;
+曽 < zo\ ;
+搙 < nu\ ;
+庮 < iu\ ;
+嶴 < au\ ;
+岆 < eu\ ;
+屁 < he\ ;
+帷 < i\ ;
+尾 < o\ ;
+宇 < u\ ;
+江 < e\ ;
+亞 < a\ ;
+法学系大学院共通入学試験 > hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+朝鮮民主主義人民共和国 > chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 > jidoushasongaibaishousekininhoken\ ;
+米国大学入学共通試験 > beikokudaigakunyuugakukyoutsuushiken\ ;
+日本労働組合総評議会 > nihonroudoukumiaisouhyougikai\ ;
+拘束名簿式比例代表制 > kousokumeibohireidaihyousei\ ;
+臨兵闘者皆陣裂在前 > rinpyoutoushakaijinretsuzaizen\ ;
+太平洋機械翻訳協会 > taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 > kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+超々大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+太平洋安全保障条約 > taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 > soujuusekionseikirokusouchi\ ;
+航空宇宙技術研究所 > koukuuuchuugijutsukenkyuujo\ ;
+浮動小数点演算機構 > fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 > genkinjidouyokinshiharaiki\ ;
+主辞駆動句構造文法 > shujikudoukukouzoubunpou\ ;
+経済協力開発機構 > keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 > hokkaidoukaihatsuchouchoukan\ ;
+外国人登録証明書 > gaikokujintourokushoumeisho\ ;
+戦略兵器削減条約 > senryakuheikisakugenjouyaku\ ;
+国際機械翻訳協会 > kokusaikikaihon''yakukyoukai\ ;
+国際電気通信連合 > kokusaidenkitsuushinrengou\ ;
+海外経済協力基金 > kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 > nichibeianzenhoshoujouyaku\ ;
+戦没者追悼記念日 > senbotsushatsuitoukinenbi\ ;
+戦術航空統制本部 > senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 > kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 > kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 > choudaikiboshuusekikairo\ ;
+化学兵器禁止条約 > kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 > kanzeibouekiippankyoutei\ ;
+在留期間更新許可 > zairyuukikankoushinkyoka\ ;
+万国国際音標文字 > bankokukokusaionpyoumoji\ ;
+海洋投棄規制条約 > kaiyoutoukikiseijouyaku\ ;
+野生動物保護団体 > yaseidoubutsuhogodantai\ ;
+自動列車制御装置 > jidouresshaseigyosouchi\ ;
+天然資源保護論者 > ten''nenshigenhogoronsha\ ;
+非常事態対処計画 > hijoujitaitaishokeikaku\ ;
+自動列車停止装置 > jidouresshateishisouchi\ ;
+赤十字国際委員会 > sekijuujikokusaiiinkai\ ;
+談話表示構造理論 > danwahyoujikouzouriron\ ;
+共産党中央委員会 > kyousantouchuuouiinkai\ ;
+民主党全国委員会 > minshutouzenkokuiinkai\ ;
+英語基礎能力試験 > eigokisonouryokushiken\ ;
+一般命令演算機構 > ippanmeireienzankikou\ ;
+知識集約型産業 > chishikishuuyakugatasangyou\ ;
+自律神経失調症 > jiritsushinkeishitchoushou\ ;
+沖縄開発庁長官 > okinawakaihatsuchouchoukan\ ;
+弁証法的唯物論 > benshouhoutekiyuibutsuron\ ;
+国際協力事業団 > kokusaikyouryokujigyoudan\ ;
+総合的品質管理 > sougoutekihinshitsukanri\ ;
+疑似直接目的語 > gijichokusetsumokutekigo\ ;
+万国著作権条約 > bankokuchosakukenjouyaku\ ;
+言語学的実在論 > gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 > kanjoudoumyakukessenshou\ ;
+科学技術庁長官 > kagakugijutsuchouchoukan\ ;
+赤血球沈降速度 > sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 > sekiyuyushutsukokukikou\ ;
+公共職業安定所 > koukyoushokugyouanteijo\ ;
+戦術航空統制班 > senjutsukoukuutouseihan\ ;
+自動金銭出入機 > jidoukinsenshutsunyuuki\ ;
+地震雷火事親父 > jishinkaminarikajioyaji\ ;
+多肢選択式試問 > tashisentakushikishimon\ ;
+新関西国際空港 > shinkansaikokusaikuukou\ ;
+言語学的観念論 > gengogakutekikan''nenron\ ;
+後発発展途上国 > kouhatsuhattentojoukoku\ ;
+抹消登録証明書 > mashoutourokushoumeisho\ ;
+経済企画庁長官 > keizaikikakuchouchoukan\ ;
+再生不良性貧血 > saiseifuryouseihinketsu\ ;
+火力支援調整線 > karyokushienchouseisen\ ;
+破壊活動防止法 > hakaikatsudouboushihou\ ;
+国際返信切手券 > kokusaihenshinkitteken\ ;
+中華人民共和国 > chuukajinminkyouwakoku\ ;
+東海道五十三次 > toukaidougojuusantsugi\ ;
+宇宙開発事業団 > uchuukaihatsujigyoudan\ ;
+三軸圧縮試験機 > sanjikuasshukushikenki\ ;
+視聴者参加番組 > shichoushasankabangumi\ ;
+州際通商委員会 > shuusaitsuushouiinkai\ ;
+周波数変換装置 > shuuhasuuhenkansouchi\ ;
+慢性疲労症候群 > manseihiroushoukougun\ ;
+公害対策基本法 > kougaitaisakukihonhou\ ;
+経済団体連合会 > keizaidantairengoukai\ ;
+戦闘電子戦情報 > sentoudenshisenjouhou\ ;
+現金自動支払機 > genkinjidoushiharaiki\ ;
+最高経営責任者 > saikoukeieisekininsha\ ;
+装甲人員運搬車 > soukoujin''in''unpansha\ ;
+日本語能力試験 > nihongonouryokushiken\ ;
+音節主音的子音 > onsetsushuontekishiin\ ;
+証券取引委員会 > shoukentorihikiiinkai\ ;
+最高財務責任者 > saikouzaimusekininsha\ ;
+短距離離着陸機 > tankyoririchakurikuki\ ;
+機能単一化文法 > kinoutan''itsukabunpou\ ;
+知能情報研究部 > chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 > kaatsusuigatagenshiro\ ;
+環太平洋地震帯 > kantaiheiyoujishintai\ ;
+人種差別主義者 > jinshusabetsushugisha\ ;
+自然環境保全法 > shizenkankyouhozenhou\ ;
+環太平洋造山帯 > kantaiheiyouzouzantai\ ;
+行動主義心理学 > koudoushugishinrigaku\ ;
+第一次世界大戦 > daiichijisekaitaisen\ ;
+変動為替相場制 > hendoukawasesoubasei\ ;
+歯内療法専門医 > shikaryouhousenmon''i\ ;
+環太平洋火山帯 > kantaiheiyoukazantai\ ;
+実情調査委員会 > jitsujouchousaiinkai\ ;
+科学基礎研究所 > kagakukisokenkyuusho\ ;
+変形生成統語論 > henkeiseiseitougoron\ ;
+大規模集積回路 > daikiboshuusekikairo\ ;
+南無妙法蓮華経 > namumyouhourengekyou\ ;
+未確認飛行物体 > mikakuninhikoubuttai\ ;
+一酸化炭素中毒 > issankatansochuudoku\ ;
+公正取引委員会 > kouseitorihikiiinkai\ ;
+税引前当期利益 > zeibikimaetoukirieki\ ;
+連邦取引委員会 > renpoutorihikiiinkai\ ;
+流行性耳下腺炎 > ryuukouseijikasen''en\ ;
+総理府総務長官 > sourifusoumuchoukan\ ;
+環境保護主義者 > kankyouhogoshugisha\ ;
+日本陸上自衛隊 > nihonrikujoujieitai\ ;
+金地金本位制度 > kinjiganehon''iseido\ ;
+重要無形文化財 > juuyoumukeibunkazai\ ;
+経済社会理事会 > keizaishakairijikai\ ;
+主語助動詞倒置 > shugojodoushitouchi\ ;
+合同技術委員会 > goudougijutsuiinkai\ ;
+自動方向探知機 > jidouhoukoutanchiki\ ;
+帰還不能限界点 > kikanfunougenkaiten\ ;
+国家公安委員長 > kokkakouan''iinchou\ ;
+国会対策委員会 > kokkaitaisakuinkai\ ;
+第二次世界大戦 > dainijisekaitaisen\ ;
+亜米利加合衆国 > amerikagasshuukoku\ ;
+日本航空自衛隊 > nihonkoukuujieitai\ ;
+符号化文字集合 > fugoukamojishuugou\ ;
+日本海上自衛隊 > nihonkaijoujieitai\ ;
+下位範疇化素性 > kaihanchuukasosei\ ;
+選挙管理委員会 > senkyokanriiinkai\ ;
+下位範疇化原理 > kaihanchuukagenri\ ;
+耳鼻咽喉専門医 > jibiinkousenmon''i\ ;
+議院運営委員会 > giin''un''eiiinkai\ ;
+２０００年問題 > nisen''nenmondai\ ;
+宗教的独立性 > shuukyoutekidokuritsusei\ ;
+直接照準射撃 > chokusetsushoujunshageki\ ;
+特殊取扱郵便 > tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 > kanshitsukyuushitsudokei\ ;
+圧密降伏応力 > atsumitsukoufukuouryoku\ ;
+公認卸売業者 > kounin''oroshiurigyousha\ ;
+核分裂生成物 > kakubunretsuseiseibutsu\ ;
+職業別電話帳 > shokugyoubetsudenwachou\ ;
+入学共通試験 > nyuugakukyoutsuushiken\ ;
+室内管弦楽団 > shitsunaikangengakudan\ ;
+東京株式市場 > toukyoukabushikishijou\ ;
+確率密度関数 > kakuritsumitsudokansuu\ ;
+原子力発電所 > genshiryokuhatsudensho\ ;
+勧善懲悪小説 > kanzenchouakushousetsu\ ;
+杭周面摩擦力 > kuishuumenmasatsuryoku\ ;
+間接照準射撃 > kansetsushoujunshageki\ ;
+新規株式公開 > shinkikabushikikoukai\ ;
+学習指導要領 > gakushuushidouyouryou\ ;
+早発性痴呆症 > souhatsuseichihoushou\ ;
+信用協同組合 > shin''youkyoudoukumiai\ ;
+弦楽四重奏曲 > gengakushijuusoukyoku\ ;
+演繹的説明法 > en''ekitekisetsumeihou\ ;
+深在性真菌症 > shinzaiseishinkinshou\ ;
+統率束縛理論 > tousotsusokubakuriron\ ;
+本態性高血圧 > hontaiseikouketsuatsu\ ;
+陸上端局装置 > rikujoutankyokusouchi\ ;
+日米貿易摩擦 > nichibeibouekimasatsu\ ;
+通商産業大臣 > tsuushousangyoudaijin\ ;
+通商航海条約 > tsuushoukoukaijouyaku\ ;
+軟判定識別器 > nanhanteishikibetsuki\ ;
+空想科学小説 > kuusoukagakushousetsu\ ;
+新入社員教育 > shin''nyuushainkyouiku\ ;
+推奨文献目録 > suishoubunkenmokuroku\ ;
+徳川三代家光 > tokugawasandaiiemitsu\ ;
+生活協同組合 > seikatsukyoudoukumiai\ ;
+料金別納郵便 > ryoukinbetsunouyuubin\ ;
+中距離核戦力 > chuukyorikakusenryoku\ ;
+農業協同組合 > nougyoukyoudoukumiai\ ;
+大陸横断鉄道 > tairikuoudantetsudou\ ;
+高分子吸収体 > koubunshikyuushuutai\ ;
+日米構造協議 > nichibeikouzoukyougi\ ;
+機械翻訳協会 > kikaihon''yakukyoukai\ ;
+中央行政官庁 > chuuougyouseikanchou\ ;
+北大西洋条約 > kitataiseiyoujouyaku\ ;
+電気通信大学 > denkitsuushindaigaku\ ;
+芳香族化合物 > houkouzokukagoubutsu\ ;
+内閣官房長官 > naikakukanbouchoukan\ ;
+弦楽五重奏曲 > gengakugojuusoukyoku\ ;
+宇宙開発計画 > uchuukaihatsukeikaku\ ;
+米連邦航空局 > beirenpoukuukoukyoku\ ;
+外国人登録法 > gaikokujintourokuhou\ ;
+共産党政治局 > kyousantouseijikyoku\ ;
+束縛継承原理 > sokubakukeishougenri\ ;
+三軸圧縮試験 > sanjikuasshukushiken\ ;
+空軍連絡将校 > kuugunrenrakushoukou\ ;
+卸売物価指数 > oroshiuribukkashisuu\ ;
+写真判定決勝 > shashinhanteikesshou\ ;
+前立腺肥大症 > zenritsusenhidaishou\ ;
+説明的妥当性 > setsumeitekidatousei\ ;
+共通一次試験 > kyoutsuuichijishiken\ ;
+第三種郵便物 > daisanshuyuubinbutsu\ ;
+友好通商航海 > yuukoutsuushoukoukai\ ;
+無担保貸付金 > mutanpokashitsukekin\ ;
+必要十分条件 > hitsuyoujuubunjouken\ ;
+精神的指導者 > seishintekishidousha\ ;
+原子物理学者 > genshibutsurigakusha\ ;
+精密機械工業 > seimitsukikaikougyou\ ;
+再入国許可書 > sainyuukokukyoukasho\ ;
+定形外郵便物 > teikeigaiyuubinbutsu\ ;
+超並列計算機 > chouheiretsukeisanki\ ;
+中枢神経系統 > chuusuushinkeikeitou\ ;
+伝送制御拡張 > densouseigyokakuchou\ ;
+日中友好協会 > nitchuuyuukoukyoukai\ ;
+国民金融公庫 > kokuminkin''yuukouko\ ;
+口辺単純疱疹 > kouhentanjunhoushin\ ;
+集団安全保障 > shuudan''anzenhoshou\ ;
+名神高速道路 > meishinkousokudouro\ ;
+放射性降下物 > houshaseikoukabutsu\ ;
+劣性遺伝形質 > resseiidenkeishitsu\ ;
+初期選択項目 > shokisentakukoumoku\ ;
+全国津津浦浦 > zenkokutsutsuuraura\ ;
+信任統治制度 > shin''nintouchiseido\ ;
+主要部終端型 > shuyoubushuutangata\ ;
+合成化学工業 > gouseikagakukougyou\ ;
+国民体育大会 > kokumintaiikutaikai\ ;
+国際電信電話 > kokusaidenshindenwa\ ;
+電子資金振替 > denshishikinfurikae\ ;
+弦楽四重奏団 > gengakushijuusoudan\ ;
+航空交通管制 > koukuukoutsuukansei\ ;
+財政均衡計画 > zaiseikinkoukeikaku\ ;
+日本規格協会 > nipponkikakukyoukai\ ;
+動物愛護協会 > doubutsuaigokyoukai\ ;
+米航空宇宙局 > beikoukuuuchuukyoku\ ;
+全国津々浦々 > zenkokutsutsuuraura\ ;
+日本学術会議 > nihongakujutsukaigi\ ;
+人間環境宣言 > ningenkankyousengen\ ;
+家宅捜索令状 > katakusousakureijou\ ;
+安土桃山時代 > azuchimomoyamajidai\ ;
+生理的食塩水 > seiritekishokuensui\ ;
+環太平洋諸国 > kantaiheiyoushokoku\ ;
+火力支援計画 > karyokushienkeikaku\ ;
+著作権所有者 > chosakukenshoyuusha\ ;
+数学的帰納法 > suugakutekikinouhou\ ;
+日本国特許庁 > nihonkokutokkyochou\ ;
+食糧管理制度 > shokuryoukanriseido\ ;
+生物化学兵器 > seibutsukagakuheiki\ ;
+女権拡張論者 > jokenkakuchouronsha\ ;
+統合幕僚会議 > tougoubakuryoukaigi\ ;
+射撃禁止地域 > shagekikinshichiiki\ ;
+特命全権公使 > tokumeizenkenkoushi\ ;
+新聞倫理綱領 > shinbunrinrikouryou\ ;
+記述的妥当性 > kijutsutekidatousei\ ;
+万国郵便連合 > bankokuyuubinrengou\ ;
+住宅金融公庫 > juutakukin''yuukouko\ ;
+単位体積重量 > tan''itaisekijuuryou\ ;
+統一地方選挙 > touitsuchihousenkyo\ ;
+公開市場政策 > koukaishijouseisaku\ ;
+地球観測衛星 > chikyuukansokueisei\ ;
+重量拳闘選手 > juuryoukentousenshu\ ;
+人工気胸療法 > jinkoukikyouryouhou\ ;
+地方公共団体 > chihoukoukyoudantai\ ;
+手根管症候群 > shukonkanshoukougun\ ;
+高分子化合物 > koubunshikagoubutsu\ ;
+陸上作戦本部 > rikujousakusenhonbu\ ;
+放射性廃棄物 > houshaseihaikibutsu\ ;
+逆転分布係数 > gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 > kumomakukashukketsu\ ;
+共同救済基金 > kyoudoukyuusaikikin\ ;
+保険金受取人 > hokenkin''uketorinin\ ;
+陸軍士官学校 > rikugunshikangakkou\ ;
+漁業専管水域 > gyogyousenkansuiiki\ ;
+芸術至上主義 > geijutsushijoushugi\ ;
+特命全権大使 > tokumeizenkentaishi\ ;
+近接航空支援 > kinsetsukoukuushien\ ;
+有機水銀中毒 > yuukisuiginchuudoku\ ;
+環太平洋構想 > kantaiheiyoukousou\ ;
+公的不法妨害 > koutekifuhoubougai\ ;
+戦闘支援計画 > sentoushienkeikaku\ ;
+回線制御規則 > kaisenseigyokisoku\ ;
+港湾運送事業 > kouwan''unsoujigyou\ ;
+門戸開放政策 > monkokaihouseisaku\ ;
+東名高速道路 > toumeikousokudouro\ ;
+内閣総理大臣 > naikakusouridaijin\ ;
+日本放送協会 > nihonhousoukyoukai\ ;
+航空宇宙工業 > koukuuuchuukougyou\ ;
+安全保障条約 > anzenhoshoujouyaku\ ;
+主働土圧係数 > shudoudoatsukeisuu\ ;
+反射的半順序 > hanshatekihanjunjo\ ;
+国際通貨基金 > kokusaitsuukakikin\ ;
+短期集中講座 > tankishuuchuukouza\ ;
+日本農林規格 > nihon''nourinkikaku\ ;
+航空宇宙産業 > koukuuuchuusangyou\ ;
+品質保持期限 > hinshitsuhojikigen\ ;
+日本工業規格 > nihonkougyoukikaku\ ;
+中距離核兵器 > chuukyorikakuheiki\ ;
+酸化還元反応 > sankakangenhan''nou\ ;
+公務執行妨害 > koumushikkoubougai\ ;
+高等専門学校 > koutousenmongakkou\ ;
+歩兵戦闘車両 > hoheisentousharyou\ ;
+共同記者会見 > kyoudoukishakaiken\ ;
+太陽熱温水器 > taiyounetsuonsuiki\ ;
+静止土圧係数 > seishidoatsukeisuu\ ;
+人口動態統計 > jinkoudoutaitoukei\ ;
+国連事務総長 > kokurenjimusouchou\ ;
+不動産取得税 > fudousanshutokuzei\ ;
+年次有給休暇 > nenjiyuukyuukyuuka\ ;
+十二指腸潰瘍 > juunishichoukaiyou\ ;
+戦争犯罪法廷 > sensouhanzaihoutei\ ;
+年功序列制度 > nenkoujoretsuseido\ ;
+農林水産大臣 > nourinsuisandaijin\ ;
+主要部先導型 > shuyoubusendougata\ ;
+国民健康保険 > kokuminkenkouhoken\ ;
+不定計量空間 > futeikeiryoukuukan\ ;
+反帝国主義者 > hanteikokushugisha\ ;
+電荷結合素子 > denkaketsugousoshi\ ;
+有限状態文法 > yuugenjoutaibunpou\ ;
+修正資本主義 > shuuseishihonshugi\ ;
+一卵性双生児 > ichiranseisouseiji\ ;
+地中海性気候 > chichuukaiseikikou\ ;
+投資有価証券 > toushiyuukashouken\ ;
+前方再補給点 > zenpousaihokyuuten\ ;
+立憲君主政体 > rikkenkunshuseitai\ ;
+放送禁止用語 > housoukinshiyougo\ ;
+十一面観世音 > juuichimenkanzeon\ ;
+形状記憶合金 > keijoukiokugoukin\ ;
+行動発起時刻 > koudouhakkijikoku\ ;
+十部門分類法 > juubumonbunruihou\ ;
+世界一周旅行 > sekaiisshuuryokou\ ;
+世界人権宣言 > sekaijinkensengen\ ;
+公的医療機関 > koutekiiryoukikan\ ;
+受働土圧係数 > judoudoatsukeisuu\ ;
+不確定性原理 > fukakuteiseigenri\ ;
+二等辺三角形 > nitouhensankakkei\ ;
+政令指定都市 > seireishiteitoshi\ ;
+無担保借入金 > mutanpokariirekin\ ;
+単位労働組合 > tan''iroudoukumiai\ ;
+中央処理装置 > chuuoushorisouchi\ ;
+欧州通貨単位 > oushuutsuukatan''i\ ;
+自由貿易帯域 > jiyuubouekitaiiki\ ;
+恋愛至上主義 > ren''aishijoushugi\ ;
+自動車保険料 > jidoushahokenryou\ ;
+戦場航空阻止 > senjoukoukuusoshi\ ;
+統合参謀本部 > tougousanbouhonbu\ ;
+最長不倒距離 > saichoufutoukyori\ ;
+印象主義音楽 > inshoushugiongaku\ ;
+近代五種競技 > kindaigoshukyougi\ ;
+後方地域警備 > kouhouchiikikeibi\ ;
+自動操縦装置 > jidousoujuusouchi\ ;
+都市対抗野球 > toshitaikouyakyuu\ ;
+金剛夜叉妙王 > kongouyashamyouou\ ;
+高速演算機構 > kousokuenzankikou\ ;
+飛行禁止空域 > hikoukinshikuuiki\ ;
+環境保護論者 > kankyouhogoronsha\ ;
+週間天気予報 > shuukantenkiyohou\ ;
+放射線感受性 > houshasenkanjusei\ ;
+社会民主主義 > shakaiminshushugi\ ;
+部分情報構造 > bubunjouhoukouzou\ ;
+一挙手一投足 > ikkyoshuittousoku\ ;
+有形固定資産 > yuukeikoteishisan\ ;
+飛行記録装置 > hikoukirokusouchi\ ;
+被担保債権額 > hitanposaikengaku\ ;
+二交替制労働 > nikoutaiseiroudou\ ;
+保守系無所属 > hoshukeimushozoku\ ;
+反転分布係数 > hantenbunpukeisuu\ ;
+空挺降下地域 > kuuteikoukachiiki\ ;
+火力支援部隊 > karyokushienbutai\ ;
+歌舞伎十八番 > kabukijuuhachiban\ ;
+大量破壊兵器 > tairyouhakaiheiki\ ;
+反射係数線図 > hanshakeisuusenzu\ ;
+素粒子加速器 > soryuushikasokuki\ ;
+自由貿易地域 > jiyuubouekichiiki\ ;
+公開市場操作 > koukaishijousousa\ ;
+人身保護令状 > jinshinhogoreijou\ ;
+母子健康手帳 > boshikenkoutechou\ ;
+厚生年金保険 > kouseinenkinhoken\ ;
+性行為感染症 > seikouikansenshou\ ;
+生命保険会社 > seimeihokengaisha\ ;
+私有財産制度 > shiyuuzaisanseido\ ;
+一国一党主義 > ikkokuittoushugi\ ;
+日本道路公団 > nihondourokoudan\ ;
+実践理性批判 > jissenriseihihan\ ;
+多重名前空間 > tajuunamaekuukan\ ;
+平和維持活動 > heiwaijikatsudou\ ;
+二卵性双生児 > niranseisouseiji\ ;
+主辞素性規約 > shujisoseikiyaku\ ;
+女性解放運動 > joseikaihouundou\ ;
+炭酸同化作用 > tansandoukasayou\ ;
+二大政党主義 > nidaiseitoushugi\ ;
+不純異性交遊 > fujun''iseikouyuu\ ;
+骨皮筋右衛門 > honekawasujiemon\ ;
+浅間山荘事件 > asamasansoujiken\ ;
+環境保護主義 > kankyouhogoshugi\ ;
+世界貿易機関 > sekaibouekikikan\ ;
+無形固定資産 > mukeikoteishisan\ ;
+音声多重放送 > onseitajuuhousou\ ;
+脳性小児麻痺 > nouseishounimahi\ ;
+大東亜共栄圏 > daitouakyoueiken\ ;
+小売物価指数 > kouribukkashisuu\ ;
+自由主義経済 > jiyuushugikeizai\ ;
+夜間預金々庫 > yakan''yokinkinko\ ;
+連邦準備制度 > renpoujunbiseido\ ;
+超過勤務手当 > choukakinmuteate\ ;
+予備士官学校 > yobishikangakkou\ ;
+画像処理装置 > gazoushorisouchi\ ;
+六十四分音符 > rokujuushibuonpu\ ;
+放射性同位体 > houshaseidouitai\ ;
+夜間預金金庫 > yakan''yokinkinko\ ;
+亜熱帯高気圧 > anettaikoukiatsu\ ;
+磁気共鳴画像 > jikikyoumeigazou\ ;
+鳥獣保護区域 > choujuuhogokuiki\ ;
+国際援助機関 > kokusaienjokikan\ ;
+無政府主義者 > museifushugisha\ ;
+世界保健機関 > sekaihokenkikan\ ;
+二十四時間制 > nijuuyojikansei\ ;
+看護婦養成所 > kangofuyouseijo\ ;
+不当労働行為 > futouroudoukoui\ ;
+苦情処理機関 > kujoushorikikan\ ;
+補助記憶装置 > hojokiokusouchi\ ;
+文字多重放送 > mojitajuuhousou\ ;
+医師国家試験 > ishikokkashiken\ ;
+肢体不自由児 > shitaifujiyuuji\ ;
+仮名漢字変換 > kanakanjihenkan\ ;
+国家公務員法 > kokkakoumuinhou\ ;
+意志決定機関 > ishiketteikikan\ ;
+主辞素性原理 > shujisoseigenri\ ;
+弁護士事務所 > bengoshijimusho\ ;
+自由主義国家 > jiyuushugikokka\ ;
+生命維持装置 > seimeiijisouchi\ ;
+文字符号化法 > mojifugoukahou\ ;
+南無阿弥陀仏 > namuamidabutsu\ ;
+語彙機能文法 > goikinoubunpou\ ;
+倶梨伽羅紋紋 > kurikaramonmon\ ;
+三十二分音符 > sanjuunibuonpu\ ;
+我利我利亡者 > garigarimouja\ ;
+守秘義務違反 > shuhigimuihan\ ;
+是是非非主義 > zezehihishugi\ ;
+烏芻沙摩妙王 > ususamamyouou\ ;
+代表取締役 > daihyoutorishimariyaku\ ;
+取扱説明書 > toriatsukaisetsumeisho\ ;
+国立博物館 > kokuritsuhakubutsukan\ ;
+集中治療室 > shuuchuuchiryoushitsu\ ;
+直轄植民地 > chokkatsushokuminchi\ ;
+木造建築物 > mokuzoukenchikubutsu\ ;
+植物性蛋白 > shokubutsuseitanpaku\ ;
+信用取引先 > shin''youtorihikisaki\ ;
+常務取締役 > joumutorishimariyaku\ ;
+七星天道虫 > nanahoshitentoumushi\ ;
+民族大虐殺 > minzokudaigyakusatsu\ ;
+越年生植物 > etsunenseishokubutsu\ ;
+構成素統御 > kouseisokouzoutougyo\ ;
+直接目的語 > chokusetsumokutekigo\ ;
+専務取締役 > senmutorishimariyaku\ ;
+一年生植物 > ichinenseishokubutsu\ ;
+麻薬取締班 > mayakutorishimarihan\ ;
+麻薬取締法 > mayakutorishimarihou\ ;
+中心的役割 > chuushintekiyakuwari\ ;
+収縮期血圧 > shuushukukiketsuatsu\ ;
+単子葉植物 > tanshiyoushokubutsu\ ;
+連立方程式 > renritsuhouteishiki\ ;
+通商産業省 > tsuushousangyoushou\ ;
+原子力発電 > genshiryokuhatsuden\ ;
+直接民主制 > chokusetsuminshusei\ ;
+進出制限線 > shinshutsuseigensen\ ;
+株式取引所 > kabushikitorihikijo\ ;
+直接教授法 > chokusetsukyoujuhou\ ;
+双子葉植物 > soushiyoushokubutsu\ ;
+芥川龍之介 > akutagawaryuunosuke\ ;
+貸借対照表 > taishakutaishouhyou\ ;
+公定割引率 > kouteiwaribikiritsu\ ;
+強迫神経症 > kyouhakushinkeishou\ ;
+商業信用状 > shougyoushin''youjou\ ;
+輸出信用状 > yushutsushin''youjou\ ;
+旧新約全書 > kyuushin''yakuzensho\ ;
+出入国管理 > shutsunyuukokukanri\ ;
+障害物競走 > shougaibutsukyousou\ ;
+昼光色電球 > chuukoushokudenkyuu\ ;
+天然色写真 > ten''nenshokushashin\ ;
+水力発電所 > suiryokuhatsudensho\ ;
+素出力条件 > soshutsuryokujouken\ ;
+国民総支出 > kokuminsoushishutsu\ ;
+植物性脂肪 > shokubutsuseishibou\ ;
+旧新約聖書 > kyuushin''yakuseisho\ ;
+長期貸付金 > choukikashitsukekin\ ;
+生物物理学 > seibutsubutsurigaku\ ;
+平家物語抄 > heikemonogatarishou\ ;
+観察的研究 > kansatsutekikenkyuu\ ;
+賃貸借契約 > chintaishakukeiyaku\ ;
+徳川公爵邸 > tokugawakoushakutei\ ;
+精神分裂症 > seishinbunretsushou\ ;
+太陽熱発電 > taiyounetsuhatsuden\ ;
+海外留学熱 > kaigairyuugakunetsu\ ;
+妊娠中毒症 > ninshinchuudokushou\ ;
+独立採算制 > dokuritsusaisansei\ ;
+市場占有率 > shijousen''yuuritsu\ ;
+視聴覚教材 > shichoukakukyouzai\ ;
+内閣法制局 > naikakuhouseikyoku\ ;
+中小企業庁 > chuushoukigyouchou\ ;
+書簡体小説 > shokantaishousetsu\ ;
+社会生物学 > shakaiseibutsugaku\ ;
+軍隊行進曲 > guntaikoushinkyoku\ ;
+葬送行進曲 > sousoukoushinkyoku\ ;
+物理的現象 > butsuritekigenshou\ ;
+心臓弁膜症 > shinzoubenmakushou\ ;
+膝蓋腱反射 > shitsugaikenhansha\ ;
+俸給生活者 > houkyuuseikatsusha\ ;
+生物情報学 > seibutsujouhougaku\ ;
+多年生植物 > tanenseishokubutsu\ ;
+量子物理学 > ryoushibutsurigaku\ ;
+北米合衆国 > hokubeigasshuukoku\ ;
+来客芳名録 > raikyakuhoumeiroku\ ;
+地方検察庁 > chihoukensatsuchou\ ;
+専門的知識 > senmontekichishiki\ ;
+結婚行進曲 > kekkonkoushinkyoku\ ;
+株式配当金 > kabushikihaitoukin\ ;
+特別配当金 > tokubetsuhaitoukin\ ;
+経済成長率 > keizaiseichouritsu\ ;
+産業別組合 > sangyoubetsukumiai\ ;
+優等卒業生 > yuutousotsugyousei\ ;
+入国管理局 > nyuukokukanrikyoku\ ;
+間接撮影法 > kansetsusatsueihou\ ;
+実物大模型 > jitsubutsudaimokei\ ;
+軍事的侵略 > gunjitekishinryaku\ ;
+積分方程式 > sekibunhouteishiki\ ;
+積算電力計 > sekisandenryokukei\ ;
+二年生植物 > ninenseishokubutsu\ ;
+千九百年代 > senkyuuhyakunendai\ ;
+科学博物館 > kagakuhakubutsukan\ ;
+中国共産党 > chuugokukyousantou\ ;
+高分子物質 > koubunshibusshitsu\ ;
+発達心理学 > hattatsushinrigaku\ ;
+精神薄弱者 > seishinhakujakusha\ ;
+特別行政区 > tokubetsugyouseiku\ ;
+三色印刷法 > sanshokuinsatsuhou\ ;
+排卵誘発剤 > hairan''yuuhatsuzai\ ;
+生活必需品 > seikatsuhitsujuhin\ ;
+少年鑑別所 > shounenkanbetsusho\ ;
+座骨神経痛 > zakotsushinkeitsuu\ ;
+植民地政策 > shokuminchiseisaku\ ;
+証券取引法 > shoukentorihikihou\ ;
+商品回転率 > shouhinkaitenritsu\ ;
+節足動物門 > sessokudoubutsumon\ ;
+計算生物学 > keisanseibutsugaku\ ;
+就職情報誌 > shuushokujouhoushi\ ;
+建設的関係 > kensetsutekikankei\ ;
+客室乗務員 > kyakushitsujoumuin\ ;
+支持力定式 > shijiryokuteishiki\ ;
+動物行動学 > doubutsukoudougaku\ ;
+職能代表制 > shokunoudaihyousei\ ;
+最高検察庁 > saikoukensatsuchou\ ;
+心神耗弱者 > shinshinmoujakusha\ ;
+無脊椎動物 > musekitsuidoubutsu\ ;
+家宅侵入罪 > katakushin''nyuuzai\ ;
+分子生物学 > bunshiseibutsugaku\ ;
+天体写真術 > tentaishashinjutsu\ ;
+秘密漏洩罪 > himitsurousetsuzai\ ;
+間接目的語 > kansetsumokutekigo\ ;
+粘液分泌腺 > nen''ekibunpitsusen\ ;
+瞬間接着剤 > shunkansetchakuzai\ ;
+人口密集率 > jinkoumisshuuritsu\ ;
+原色写真版 > genshokushashinban\ ;
+量子色力学 > ryoushiirorikigaku\ ;
+在日米陸軍 > zainichibeirikugun\ ;
+食品添加物 > shokuhintenkabutsu\ ;
+動物性蛋白 > doubutsuseitanpaku\ ;
+特定郵便局 > tokuteiyuubinkyoku\ ;
+火力発電所 > karyokuhatsudensho\ ;
+多角式農業 > takakushikinougyou\ ;
+永世中立国 > eiseichuuritsukoku\ ;
+唯物弁証法 > yuibutsubenshouhou\ ;
+史的唯物論 > shitekiyuibutsuron\ ;
+宣誓供述書 > senseikyoujutsusho\ ;
+熱膨張係数 > netsubouchoukeisuu\ ;
+植物性繊維 > shokubutsuseisen''i\ ;
+過失傷害罪 > kashitsushougaizai\ ;
+共同創設者 > kyoudousousetsusha\ ;
+上級副社長 > joukyuufukushachou\ ;
+戦略的提携 > senryakutekiteikei\ ;
+環境庁長官 > kankyouchouchoukan\ ;
+圧力調整器 > atsuryokuchouseiki\ ;
+生鮮食料品 > seisenshokuryouhin\ ;
+放射性物質 > houshaseibusshitsu\ ;
+地球物理学 > chikyuubutsurigaku\ ;
+反宗教改革 > hanshuukyoukaikaku\ ;
+学識経験者 > gakushikikeikensha\ ;
+赤面恐怖症 > sekimenkyoufushou\ ;
+食品衛生法 > shokuhin''eiseihou\ ;
+教職員組合 > kyoushokuinkumiai\ ;
+毛沢東主席 > moutakutoushuseki\ ;
+別途積立金 > bettotsumitatekin\ ;
+返信料葉書 > henshinryouhagaki\ ;
+諸車通行止 > shoshatsuukoudome\ ;
+国土庁長官 > kokudochouchoukan\ ;
+勧善懲悪劇 > kanzenchouakugeki\ ;
+医学生物学 > igakuseibutsugaku\ ;
+非標準拡張 > hihyoujunkakuchou\ ;
+太陽光発電 > taiyoukouhatsuden\ ;
+返信用葉書 > henshin''youhagaki\ ;
+真珠養殖場 > shinjuyoushokujou\ ;
+肋間神経痛 > rokkanshinkeitsuu\ ;
+海洋物理学 > kaiyoubutsurigaku\ ;
+精神的苦痛 > seishintekikutsuu\ ;
+交流発電機 > kouryuuhatsudenki\ ;
+狩猟採集民 > shuryousaishuumin\ ;
+戦闘正面幅 > sentoushoumenhaba\ ;
+不信任投票 > fushin''nintouhyou\ ;
+送金受取人 > soukin''uketorinin\ ;
+ＤＲＳ理論 > di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 > shokuryoukanrihou\ ;
+盲腸炎手術 > mouchouenshujutsu\ ;
+第一級殺人 > daiikkyuusatsujin\ ;
+戦略核兵器 > senryakukakuheiki\ ;
+凍結防止剤 > touketsuboushizai\ ;
+中間配当額 > chuukanhaitougaku\ ;
+高速増殖炉 > kousokuzoushokuro\ ;
+返信料封筒 > henshinryoufuutou\ ;
+衛星地球局 > eiseichikyuukyoku\ ;
+在留外国人 > zairyuugaikokujin\ ;
+産業廃棄物 > sangyouhaikibutsu\ ;
+天然記念物 > ten''nenkinenbutsu\ ;
+出生証明書 > shusseishoumeisho\ ;
+上級管理職 > joukyuukanrishoku\ ;
+税関申告書 > zeikanshinkokusho\ ;
+返信用封筒 > henshin''youfuutou\ ;
+熱狂的信者 > nekkyoutekishinja\ ;
+企業間信用 > kigyoukanshin''you\ ;
+開拓者精神 > kaitakushaseishin\ ;
+深在性真菌 > shinzaiseishinkin\ ;
+村落共同体 > sonrakukyoudoutai\ ;
+上陸用舟艇 > jourikuyoushuutei\ ;
+古生物学者 > koseibutsugakusha\ ;
+開発途上国 > kaihatsutojoukoku\ ;
+血圧降下剤 > ketsuatsukoukazai\ ;
+無差別爆撃 > musabetsubakugeki\ ;
+平和的解決 > heiwatekikaisetsu\ ;
+食品加工業 > shokuhinkakougyou\ ;
+高級住宅地 > koukyuujuutakuchi\ ;
+過失致死罪 > kashitsuchishizai\ ;
+高額所得者 > kougakushotokusha\ ;
+十一面観音 > juuichimenkan''non\ ;
+月経困難症 > gekkeikon''nanshou\ ;
+国際見本市 > kokusaimihon''ichi\ ;
+緑地化計画 > ryokuchikakeikaku\ ;
+中枢神経系 > chuusuushinkeikei\ ;
+実験的研究 > jikkentekikenkyuu\ ;
+専用駐車場 > sen''youchuushajou\ ;
+無過失責任 > mukashitsusekinin\ ;
+一次方程式 > ichijihouteishiki\ ;
+就業時間中 > shuugyoujikanchuu\ ;
+国民休暇村 > kokuminkyuukamura\ ;
+子宮外妊娠 > shikyuugaininshin\ ;
+無担保貸付 > mutanpokashitsuke\ ;
+一粒子既約 > ichiryuushikiyaku\ ;
+企業別組合 > kigyoubetsukumiai\ ;
+不法侵入者 > fuhoushin''nyuusha\ ;
+収穫感謝祭 > shuukakukanshasai\ ;
+指向性爆薬 > shikouseibakuyaku\ ;
+心因性反応 > shin''inseihan''nou\ ;
+亜熱帯植物 > anettaishokubutsu\ ;
+内閣総辞職 > naikakusoujishoku\ ;
+証券取引所 > shoukentorihikijo\ ;
+屈折望遠鏡 > kussetsubouenkyou\ ;
+歯牙矯正術 > shigakyouseijutsu\ ;
+単細胞生物 > tansaibouseibutsu\ ;
+日本薬局方 > nihon''yakkyokuhou\ ;
+深層心理学 > shinsoushinrigaku\ ;
+精神薄弱児 > seishinhakujakuji\ ;
+化学方程式 > kagakuhouteishiki\ ;
+急降下爆撃 > kyuukoukabakugeki\ ;
+水上生活者 > suijouseikatsusha\ ;
+在学証明書 > zaigakushoumeisho\ ;
+植民地統治 > shokuminchitouchi\ ;
+関数方程式 > kansuuhouteishiki\ ;
+推進研究所 > suishinkenkyuusho\ ;
+戦術核兵器 > senjutsukakuheiki\ ;
+発展的解消 > hattentekikaishou\ ;
+国立図書館 > kokuritsutoshokan\ ;
+三行広告欄 > sangyoukoukokuran\ ;
+勧業博覧会 > kangyouhakurankai\ ;
+分析心理学 > bunsekishinrigaku\ ;
+教育心理学 > kyouikushinrigaku\ ;
+業務上過失 > gyoumujoukashitsu\ ;
+成績証明書 > seisekishoumeisho\ ;
+入学志願者 > nyuugakushigansha\ ;
+中央放送局 > chuuouhousoukyoku\ ;
+共同相続人 > kyoudousouzokunin\ ;
+研究発表会 > kenkyuuhappyoukai\ ;
+天体分光術 > tentaibunkoujutsu\ ;
+球面三角法 > kyuumensankakuhou\ ;
+計量経済学 > keiryoukeizaigaku\ ;
+著作権侵害 > chosakukenshingai\ ;
+特別弁護人 > tokubetsubengonin\ ;
+富国強兵策 > fukokukyouheisaku\ ;
+予想収穫高 > yosoushuukakudaka\ ;
+血友病患者 > ketsuyuubyoukanja\ ;
+直角三角形 > chokkakusankakkei\ ;
+闇価格協定 > yamikakakukyoutei\ ;
+赤外線写真 > sekigaisenshashin\ ;
+天皇機関説 > ten''noukikansetsu\ ;
+公証人役場 > koushounin''yakuba\ ;
+超現実主義 > chougenjitsushugi\ ;
+二極真空管 > nikyokushinkuukan\ ;
+阪神大震災 > hanshindaishinsai\ ;
+法定得票数 > houteitokuhyousuu\ ;
+設立趣意書 > setsuritsushuisho\ ;
+外国人登録 > gaikokujintouroku\ ;
+身体障害者 > shintaishougaisha\ ;
+消費者信用 > shouhishashin''you\ ;
+鈍角三角形 > donkakusankakukei\ ;
+海難審判庁 > kainanshinpanchou\ ;
+犯罪発生率 > hanzaihasseiritsu\ ;
+微生物学者 > biseibutsugakusha\ ;
+七色唐辛子 > nanairotougarashi\ ;
+公職選挙法 > koushokusenkyohou\ ;
+定形郵便物 > teikeiyuubinbutsu\ ;
+対中国関係 > taichuugokukankei\ ;
+科学技術庁 > kagakugijutsuchou\ ;
+大英博物館 > daieihakubutsukan\ ;
+動脈硬化症 > doumyakukoukashou\ ;
+帝王神権説 > teioushinkensetsu\ ;
+宇宙大爆発 > uchuudaibakuhatsu\ ;
+首相兼外相 > shushoukengaishou\ ;
+生物地理学 > seibutsuchirigaku\ ;
+原子物理学 > genshibutsurigaku\ ;
+略取誘拐罪 > ryakushuyuukaizai\ ;
+天体物理学 > tentaibutsurigaku\ ;
+降圧変圧器 > kouatsuhen''atsuki\ ;
+東印度会社 > higashiindogaisha\ ;
+物質主義者 > busshitsushugisha\ ;
+国際的貿易 > kokusaitekiboueki\ ;
+中性子爆弾 > chuuseishibakudan\ ;
+代数方程式 > daisuuhouteishiki\ ;
+平均太陽日 > heikintaiyoujitsu\ ;
+乳児死亡率 > nyuujishibouritsu\ ;
+万国博覧会 > bankokuhakurankai\ ;
+防衛施設庁 > boueishisetsuchou\ ;
+有料駐車場 > yuuryouchuushajou\ ;
+臨床心理学 > rinshoushinrigaku\ ;
+写真週刊誌 > shashinshuukanshi\ ;
+巨石記念物 > kyosekikinenbutsu\ ;
+二元方程式 > nigenhouteishiki\ ;
+道義的責任 > dougitekisekinin\ ;
+獅子唐辛子 > shishitougarashi\ ;
+気象観測船 > kishoukansokusen\ ;
+人猿同祖説 > jin''endousosetsu\ ;
+団体交渉権 > dantaikoushouken\ ;
+対人恐怖症 > taijinkyoufushou\ ;
+脳脊髄膜炎 > nousekizuimakuen\ ;
+要注意人物 > youchuuijinbutsu\ ;
+学校教育法 > gakkoukyouikuhou\ ;
+王権神授説 > oukenshinjusetsu\ ;
+真部分集合 > shinbubunshuugou\ ;
+独占禁止法 > dokusenkinshihou\ ;
+居間兼寝室 > imakenshinshitsu\ ;
+公称資本金 > koushoushihonkin\ ;
+電動発動機 > dendouhatsudouki\ ;
+応用物理学 > ouyoubutsurigaku\ ;
+三十八度線 > sanjuuhachidosen\ ;
+認知心理学 > ninchishinrigaku\ ;
+工業所有権 > kougyoushoyuuken\ ;
+多変量解析 > tahenryoukaiseki\ ;
+清涼飲料水 > seiryouinryousui\ ;
+金利生活者 > kinriseikatsusha\ ;
+遺言執行者 > yuigonshikkousha\ ;
+貿易外収支 > bouekigaishuushi\ ;
+染色体地図 > senshokutaichizu\ ;
+主席研究員 > shusekikenkyuuin\ ;
+高速度写真 > kousokudoshashin\ ;
+高次方程式 > koujihouteishiki\ ;
+微分方程式 > bibunhouteishiki\ ;
+郵便私書箱 > yuubinshishobako\ ;
+斜格性統御 > shakakuseitougyo\ ;
+経口避妊薬 > keikouhinin''yaku\ ;
+人材開発部 > jinzaikaihatsubu\ ;
+万国標準時 > bankokuhyoujunji\ ;
+防衛庁長官 > boueichouchoukan\ ;
+含水化合物 > gansuikagoubutsu\ ;
+関東大震災 > kantoudaishinsai\ ;
+装甲回収車 > soukoukaishuusha\ ;
+地方行財政 > chihougyouzaisei\ ;
+性表現情報 > seihyougenjouhou\ ;
+希望的観測 > kiboutekikansoku\ ;
+反射減衰量 > hanshagensuiryou\ ;
+変態心理学 > hentaishinrigaku\ ;
+欧州共同体 > oushuukyoudoutai\ ;
+紫外線療法 > shigaisenryouhou\ ;
+非武装中立 > hibusouchuuritsu\ ;
+主席外交官 > shusekigaikoukan\ ;
+細胞質遺伝 > saiboushitsuiden\ ;
+共産党宣言 > kyousantousengen\ ;
+巡回診療所 > junkaishinryoujo\ ;
+源泉所得税 > gensenshotokuzei\ ;
+組職労働者 > soshokuroudousha\ ;
+労働者階級 > roudoushakaikyuu\ ;
+拡大再生産 > kakudaisaiseisan\ ;
+上級裁判所 > joukyuusaibansho\ ;
+禁欲主義者 > kin''yokushugisha\ ;
+特殊潜航艇 > tokushusenkoutei\ ;
+最恵国待遇 > saikeikokutaiguu\ ;
+共産主義国 > kyousanshugikoku\ ;
+原告対被告 > genkokutaihikoku\ ;
+受託収賄罪 > jutakushuuwaizai\ ;
+流行性感冒 > ryuukouseikanbou\ ;
+国民総生産 > kokuminsouseisan\ ;
+中距離競走 > chuukyorikyousou\ ;
+全国的範囲 > zenkokutekihan''i\ ;
+連邦共和国 > renpoukyouwakoku\ ;
+普遍的法則 > fuhentekihousoku\ ;
+大統領選挙 > daitouryousenkyo\ ;
+日猶同祖論 > nichiyuudousoron\ ;
+両替手数料 > ryougaetesuuryou\ ;
+資本利益率 > shihonriekiritsu\ ;
+戦車揚陸艦 > senshayourikukan\ ;
+売春防止法 > baishunboushihou\ ;
+光化学反応 > koukagakuhan''nou\ ;
+軍事当局者 > gunjitoukyokusha\ ;
+肉体労働者 > nikutairoudousha\ ;
+自主流通米 > jishuryuutsuumai\ ;
+第一次産業 > daiichijisangyou\ ;
+実存主義者 > jitsuzonshugisha\ ;
+現実主義者 > genjitsushugisha\ ;
+反政府勢力 > hanseifuseiryoku\ ;
+免疫不全症 > men''ekifuzenshou\ ;
+十進分類法 > jisshinbunruihou\ ;
+偶像教徒的 > guuzoukyoutoteki\ ;
+紅白歌合戦 > kouhakuutagassen\ ;
+経済研究所 > keizaikenkyuusho\ ;
+軍事通信員 > gunjitsuushin''in\ ;
+基準内賃金 > kijun''naichingin\ ;
+県庁所在地 > kenchoushozaichi\ ;
+真宗大谷派 > shinshuuootaniha\ ;
+再入国許可 > sainyuukokukyoka\ ;
+英国国教会 > eikokukokkyoukai\ ;
+清教徒革命 > seikyoutokakumei\ ;
+太陽神経叢 > taiyoushinkeisou\ ;
+経営学修士 > keieigakushuushi\ ;
+健康証明書 > kenkoushoumeisho\ ;
+社会心理学 > shakaishinrigaku\ ;
+公共企業体 > koukyoukigyoutai\ ;
+都市再開発 > toshisaikaihatsu\ ;
+放射線療法 > houshasenryouhou\ ;
+国連分担金 > kokurenbuntankin\ ;
+定期刊行物 > teikikankoubutsu\ ;
+攻撃開始線 > kougekikaishisen\ ;
+平面三角法 > heimensankakuhou\ ;
+法定伝染病 > houteidensenbyou\ ;
+中距離競争 > chuukyorikyousou\ ;
+三叉神経痛 > sansashinkeitsuu\ ;
+優勝決定戦 > yuushouketteisen\ ;
+最低生活費 > saiteiseikatsuhi\ ;
+府県別人口 > fukenbetsujinkou\ ;
+推定相続人 > suiteisouzokunin\ ;
+多国籍企業 > takokusekikigyou\ ;
+晴一時小雨 > hareichijikosame\ ;
+季節労働者 > kisetsuroudousha\ ;
+中小諸国家 > choushoushokokka\ ;
+不平等条約 > fubyoudoujouyaku\ ;
+最低賃金制 > saiteichinginsei\ ;
+帝国主義的 > teikokushugiteki\ ;
+納税通知書 > nouzeitsuuchisho\ ;
+関税割当制 > kanzeiwariatesei\ ;
+居住証明書 > kyojuushoumeisho\ ;
+大使級会談 > taishikyuukaidan\ ;
+民主活動家 > minshukatsudouka\ ;
+客員研究員 > kyakuinkenkyuuin\ ;
+支持力係数 > shijiryokukeisuu\ ;
+直下型地震 > chokkagatajishin\ ;
+未解決問題 > mikaiketsumondai\ ;
+建築基準法 > kenchikukijunhou\ ;
+知的所有権 > chitekishoyuuken\ ;
+職業安定所 > shokugyouanteijo\ ;
+共産党細胞 > kyousantousaibou\ ;
+一年生草本 > ichinenseisouhon\ ;
+条約加盟国 > jouyakukameikoku\ ;
+立正佼成会 > risshoukouseikai\ ;
+共観福音書 > kyoukanfukuinsho\ ;
+高所恐怖症 > koushokyoufushou\ ;
+新聞販売店 > shinbunhanbaiten\ ;
+農林水産省 > nourinsuisanshou\ ;
+二者選一法 > nishasen''itsuhou\ ;
+境界値問題 > kyoukaichimondai\ ;
+社会人野球 > shakaijin''yakyuu\ ;
+菜食主義者 > saishokushugisha\ ;
+軍産複合体 > gunsanfukugoutai\ ;
+精神医学者 > seishin''igakusha\ ;
+経済企画庁 > keizaikikakuchou\ ;
+先端支持力 > sentanshijiryoku\ ;
+保健物理学 > hokenbutsurigaku\ ;
+分解蒸溜法 > bunkaijouryuuhou\ ;
+計量言語学 > keiryougengogaku\ ;
+地域振興券 > chiikishinkouken\ ;
+急進主義者 > kyuushinshugisha\ ;
+交通運輸業 > koutsuuun''yugyou\ ;
+無制限供給 > museigenkyoukyuu\ ;
+給与所得者 > kyuuyoshotokusha\ ;
+戦闘爆撃機 > sentoubakugekiki\ ;
+林業試験場 > ringyoushikenjou\ ;
+擲弾発射筒 > tekidanhasshatou\ ;
+産軍複合体 > sangunfukugoutai\ ;
+最大公約数 > saidaikouyakusuu\ ;
+国内消費税 > kokunaishouhizei\ ;
+少年審判所 > shounenshinpanjo\ ;
+流行性肝炎 > ryuukouseikan''en\ ;
+準準決勝戦 > junjunkesshousen\ ;
+不完全燃焼 > fukanzen''nenshou\ ;
+原子力時代 > genshiryokujidai\ ;
+農業試験場 > nougyoushikenjou\ ;
+高速度撮影 > kousokudosatsuei\ ;
+好気性生物 > koukiseiseibutsu\ ;
+家庭内暴力 > kateinaibouryoku\ ;
+在籍専従者 > zaisekisenjuusha\ ;
+官費留学生 > kanpiryuugakusei\ ;
+南北朝時代 > nanbokuchoujidai\ ;
+死亡診断書 > shiboushindansho\ ;
+弦楽四重奏 > gengakushijuusou\ ;
+仲裁裁判所 > chuusaisaibansho\ ;
+理論物理学 > rironbutsurigaku\ ;
+全般前哨線 > zenpanzenshousen\ ;
+十二指腸虫 > juunishichouchuu\ ;
+土木工学者 > dobokukougakusha\ ;
+日中韓統合 > nitchuukantougou\ ;
+拡張倍精度 > kakuchoubaiseido\ ;
+労働収容所 > roudoushuuyousho\ ;
+無着陸飛行 > muchakurikuhikou\ ;
+日付変更線 > hidzukehenkousen\ ;
+当事者能力 > toujishanouryoku\ ;
+損益計算書 > son''ekikeisansho\ ;
+急行停車駅 > kyuukouteishaeki\ ;
+反植民主義 > hanshokuminshugi\ ;
+極低温科学 > kyokuteionkagaku\ ;
+写真望遠鏡 > shashinbouenkyou\ ;
+妙法蓮華経 > myouhourengekyou\ ;
+実用主義者 > jitsuyoushugisha\ ;
+後方連絡線 > kouhourenrakusen\ ;
+実験心理学 > jikkenshinrigaku\ ;
+不法入国者 > fuhounyuukokusha\ ;
+多元方程式 > tagenhouteishiki\ ;
+国内総生産 > kokunaisouseisan\ ;
+鉄道公安官 > tetsudoukouankan\ ;
+平台型貨車 > hiradaigatakasha\ ;
+人称代名詞 > ninshoudaimeishi\ ;
+実業之日本 > jitsugyounonihon\ ;
+積層乾電池 > sekisoukandenchi\ ;
+行政管理庁 > gyouseikanrichou\ ;
+赤十字条約 > sekijuujijouyaku\ ;
+光学顕微鏡 > kougakukenbikyou\ ;
+強制収容所 > kyouseishuuyoujo\ ;
+犯罪心理学 > hanzaishinrigaku\ ;
+連邦捜査局 > renpousousakyoku\ ;
+大陸移動説 > tairikuidousetsu\ ;
+企業内教育 > kigyounaikyouiku\ ;
+窒素酸化物 > chissosankabutsu\ ;
+帝王切開術 > teiousekkaijutsu\ ;
+春機発動期 > shunkihatsudouki\ ;
+天幕製造人 > tenmakuseizounin\ ;
+最優秀選手 > saiyuushuusenshu\ ;
+勝利又勝利 > shourimatashouri\ ;
+女流文学者 > joryuubungakusha\ ;
+耐久消費財 > taikyuushouhizai\ ;
+非公式協議 > hikoushikikyougi\ ;
+空港使用料 > kuukoushiyouryou\ ;
+無重力状態 > mujuuryokujoutai\ ;
+天照皇大神 > tenshoukoudaijin\ ;
+精神安定剤 > seishin''anteizai\ ;
+酸性酸化物 > sanseisankabutsu\ ;
+写実主義者 > shajitsushugisha\ ;
+冷戦型思考 > reisengatashikou\ ;
+電子工業会 > denshikougyoukai\ ;
+電子工学者 > denshikougakusha\ ;
+民主共和国 > minshukyouwakoku\ ;
+独立記念日 > dokuritsukinenbi\ ;
+化学調味料 > kagakuchoumiryou\ ;
+終身雇用制 > shuushinkoyousei\ ;
+不定方程式 > futeihouteishiki\ ;
+大修道院長 > daishuudouinchou\ ;
+港湾運送業 > kouwan''unsougyou\ ;
+周波数変調 > shuuhasuuhenchou\ ;
+乾燥地農業 > kansouchinougyou\ ;
+環境配慮書 > kankyouhairyosho\ ;
+固体物理学 > kotaibutsurigaku\ ;
+組織労働者 > soshikiroudousha\ ;
+営業報告書 > eigyouhoukokusho\ ;
+広告代理店 > koukokudairiten\ ;
+戦時国際法 > senjikokusaihou\ ;
+多額納税者 > tagakunouzeisha\ ;
+太元帥妙王 > daigensuimyouou\ ;
+中部太平洋 > chuubutaiheiyou\ ;
+企業内組合 > kigyounaikumiai\ ;
+太平洋戦争 > taiheiyousensou\ ;
+連帯保証人 > rentaihoshounin\ ;
+軍国主義者 > gunkokushugisha\ ;
+反帝国主義 > hanteikokushugi\ ;
+会社更生法 > kaishakouseihou\ ;
+国選弁護人 > kokusenbengonin\ ;
+自然地理学 > shizenchirigaku\ ;
+地域的分布 > chiikitekibunpu\ ;
+剪断安定性 > sendan''anteisei\ ;
+高分子化学 > koubunshikagaku\ ;
+情報公開法 > jouhoukoukaihou\ ;
+反射望遠鏡 > hanshabouenkyou\ ;
+特別委員会 > tokubetsuiinkai\ ;
+内需主導型 > naijushudougata\ ;
+晴天乱気流 > seitenrankiryuu\ ;
+基本的人権 > kihontekijinken\ ;
+戦争犯罪人 > sensouhanzainin\ ;
+反対貿易風 > hantaibouekifuu\ ;
+道路交通法 > dourokoutsuuhou\ ;
+共産国家郡 > kyousankokkagun\ ;
+仮装巡洋艦 > kasoujun''youkan\ ;
+教育基本法 > kyouikukihonhou\ ;
+生産者価格 > seisanshakakaku\ ;
+最小二乗法 > saishounijouhou\ ;
+主幹研究員 > shukankenkyuuin\ ;
+官僚主義者 > kanryoushugisha\ ;
+小選挙区制 > shousenkyokusei\ ;
+自転車操業 > jitenshasougyou\ ;
+世界新記録 > sekaishinkiroku\ ;
+商工会議所 > shoukoukaigisho\ ;
+弾劾裁判所 > dangaisaibansho\ ;
+保護関税率 > hogokanzeiritsu\ ;
+準禁治産者 > junkinchisansha\ ;
+議院内閣制 > giin''naikakusei\ ;
+生活保護法 > seikatsuhogohou\ ;
+共産主義者 > kyousanshugisha\ ;
+正安息香酸 > seiansokukousan\ ;
+公害病患者 > kougaibyoukanja\ ;
+財政投融資 > zaiseitouyuushi\ ;
+港湾労働者 > kouwanroudousha\ ;
+内陸性気候 > nairikuseikikou\ ;
+中央標準時 > chuuouhyoujunji\ ;
+投光照明器 > toukoushoumeiki\ ;
+総同盟罷業 > soudoumeihigyou\ ;
+最高裁判所 > saikousaibansho\ ;
+営団地下鉄 > eidanchikatetsu\ ;
+飽和化合物 > houwakagoubutsu\ ;
+金属探知機 > kinzokutanchiki\ ;
+浮動小数点 > fudoushousuuten\ ;
+言語心理学 > gengoshinrigaku\ ;
+一姫二太郎 > ichihimenitarou\ ;
+界面活性剤 > kaimenkasseizai\ ;
+人生案内欄 > jinseian''nairan\ ;
+一分二十秒 > ippun''nijuubyou\ ;
+南阿共和国 > nan''akyouwakoku\ ;
+主戦闘戦車 > shusentousensha\ ;
+比較言語学 > hikakugengogaku\ ;
+内政不干渉 > naiseifukanshou\ ;
+高等裁判所 > koutousaibansho\ ;
+球面幾何学 > kyuumenkikagaku\ ;
+電子顕微鏡 > denshikenbikyou\ ;
+労働生産性 > roudouseisansei\ ;
+平行四辺形 > heikoushihenkei\ ;
+感傷主義者 > kanshoushugisha\ ;
+学生自治会 > gakuseijichikai\ ;
+年金受給者 > nenkinjukyuusha\ ;
+非同期通信 > hidoukitsuushin\ ;
+三十年戦争 > sanjuunensensou\ ;
+閉所恐怖症 > heijokyoufushou\ ;
+司法研修所 > shihoukenshuujo\ ;
+低金利政策 > teikinriseisaku\ ;
+麻薬常用者 > mayakujouyousha\ ;
+長距離列車 > choukyoriressha\ ;
+懲罰委員会 > choubatsuiinkai\ ;
+有機化合物 > yuukikagoubutsu\ ;
+楽天主義者 > rakutenshugisha\ ;
+無条件降伏 > mujoukenkoufuku\ ;
+運転免許証 > untenmenkyoshou\ ;
+格闘戦部隊 > kakutousenbutai\ ;
+展示即売会 > tenjisokubaikai\ ;
+軍事境界線 > gunjikyoukaisen\ ;
+消費者団体 > shouhishadantai\ ;
+全体主義国 > zentaishugikoku\ ;
+不可侵条約 > fukashinjouyaku\ ;
+座席指定券 > zasekishiteiken\ ;
+帰国子女枠 > kikokushijowaku\ ;
+遺言補足書 > yuigonhosokusho\ ;
+炭鉱労働者 > tankouroudousha\ ;
+解析幾何学 > kaisekikikagaku\ ;
+経済性向上 > keizaiseikoujou\ ;
+地下核実験 > chikakakujikken\ ;
+比例代表制 > hireidaihyousei\ ;
+立憲君主政 > rikkenkunshusei\ ;
+魚雷発射管 > gyoraihasshakan\ ;
+損益分岐点 > son''ekibunkiten\ ;
+社会保険庁 > shakaihokenchou\ ;
+歩行者天国 > hokoushatengoku\ ;
+国民皆保険 > kokuminkaihoken\ ;
+単純再生産 > tanjunsaiseisan\ ;
+被選挙資格 > hisenkyoshikaku\ ;
+基準外賃金 > kijungaichingin\ ;
+熱帯低気圧 > nettaiteikiatsu\ ;
+現在完了時 > genzaikanryouji\ ;
+等辺三角形 > touhensankakkei\ ;
+日常茶飯事 > nichijousahanji\ ;
+連鎖状球菌 > rensajoukyuukin\ ;
+原爆犠牲者 > genbakugiseisha\ ;
+外国投資家 > gaikokutoushika\ ;
+電波天文学 > denpatenmongaku\ ;
+構造言語学 > kouzougengogaku\ ;
+地域冷暖房 > chiikireidanbou\ ;
+人工呼吸法 > jinkoukokyuuhou\ ;
+実証主義者 > jisshoushugisha\ ;
+支持力理論 > shijiryokuriron\ ;
+公開討論会 > koukaitouronkai\ ;
+文部科学省 > monbukagakushou\ ;
+特許明細書 > tokkyomeisaisho\ ;
+税制調査会 > zeiseichousakai\ ;
+発展途上国 > hattentojoukoku\ ;
+公共図書館 > koukyoutoshokan\ ;
+国内規格化 > kokunaikikakuka\ ;
+創立記念日 > souritsukinenbi\ ;
+金銭登録器 > kinsentourokuki\ ;
+労働組合法 > roudoukumiaihou\ ;
+素形材産業 > sokeizaisangyou\ ;
+交換貿易制 > koukanbouekisei\ ;
+現地駐在員 > genchichuuzaiin\ ;
+最小自乗法 > saishoujijouhou\ ;
+小型乗用車 > kogatajouyousha\ ;
+属性値行列 > zokusegyouretsu\ ;
+海軍兵学校 > kaigunheigakkou\ ;
+黄道十二宮 > koudoujuunikyuu\ ;
+出来高仕事 > dekidakashigoto\ ;
+資産負債表 > shisanfusaihyou\ ;
+版権所有者 > hankenshoyuusha\ ;
+信徒伝動者 > shintodendousha\ ;
+官能主義者 > kan''noushugisha\ ;
+聖霊降臨祭 > seireikourinsai\ ;
+流行性脳炎 > ryuukouseinouen\ ;
+記念論文集 > kinenronbunshuu\ ;
+自動連結機 > jidourenketsuki\ ;
+大陸性気候 > tairikuseikikou\ ;
+核兵器実験 > kakuheikijikken\ ;
+誇大妄想狂 > kodaimousoukyou\ ;
+身分証明書 > mibunshoumeisho\ ;
+文化人類学 > bunkajinruigaku\ ;
+第三次産業 > daisanjisangyou\ ;
+文化大革命 > bunkadaikakumei\ ;
+非局所分岐 > hikyokushobunki\ ;
+関係代名詞 > kankeidaimeishi\ ;
+多国籍言語 > takokusekigengo\ ;
+水銀気圧計 > suiginkiatsukei\ ;
+児童心理学 > jidoushinrigaku\ ;
+空洞化現象 > kuudoukagenshou\ ;
+無理方程式 > murihouteishiki\ ;
+交差対称性 > kousataishousei\ ;
+喧嘩両成敗 > kenkaryouseibai\ ;
+視聴覚機器 > shichoukakukiki\ ;
+染色体異常 > senshokutaiijou\ ;
+結婚適齢期 > kekkontekireiki\ ;
+漸近的自由 > zenkintekijiyuu\ ;
+社会民主党 > shakaiminshutou\ ;
+私設応援団 > shisetsuouendan\ ;
+経済同友会 > keizaidouyuukai\ ;
+反証可能性 > hanshoukanousei\ ;
+搬送周波数 > hansoushuuhasuu\ ;
+最高指導者 > saikoushidousha\ ;
+葡萄状球菌 > budoujoukyuukin\ ;
+全翼飛行機 > zen''yokuhikouki\ ;
+速効性肥料 > sokkouseihiryou\ ;
+遅効性肥料 > chikouseihiryou\ ;
+国粋主義者 > kokusuishugisha\ ;
+断弾性係数 > dandanseikeisuu\ ;
+二次方程式 > nijihouteishiki\ ;
+応用心理学 > ouyoushinrigaku\ ;
+精神異常者 > seishin''ijousha\ ;
+出生年月日 > shusseinengappi\ ;
+動詞状名詞 > doushijoumeishi\ ;
+自由裁量権 > jiyuusairyouken\ ;
+中央集権化 > chuuoushuukenka\ ;
+無利息証券 > murisokushouken\ ;
+仁義礼智信 > jingireichishin\ ;
+更年期障害 > kounenkishougai\ ;
+国語審議会 > kokugoshingikai\ ;
+地方裁判所 > chihousaibansho\ ;
+自動改札機 > jidoukaisatsuki\ ;
+未就学児童 > mishuugakujidou\ ;
+実時間処理 > jitsujikanshori\ ;
+預金準備率 > yokinjunbiritsu\ ;
+天体望遠鏡 > tentaibouenkyou\ ;
+社会諸科学 > shakaishokagaku\ ;
+法律事務所 > houritsujimusho\ ;
+実利主義者 > jitsurishugisha\ ;
+未確認情報 > mikakuninjouhou\ ;
+老人性痴呆 > roujinseichihou\ ;
+在外研究員 > zaigaikenkyuuin\ ;
+客観主義者 > kyakkanshugisha\ ;
+選手権大会 > senshukentaikai\ ;
+下級裁判所 > kakyuusaibansho\ ;
+逓降変圧器 > teikouhenatsuki\ ;
+限界顕微鏡 > genkaikenbikyou\ ;
+要撃戦闘機 > yougekisentouki\ ;
+不公平競争 > fukouheikyousou\ ;
+公認会計士 > kouninkaikeishi\ ;
+犯行声明文 > hankouseimeibun\ ;
+消費者価格 > shouhishakakaku\ ;
+音楽評論家 > ongakuhyouronka\ ;
+公安調査庁 > kouanchousachou\ ;
+乗降車優先 > joukoushayuusen\ ;
+人工甘味料 > jinkoukanmiryou\ ;
+在郷軍人会 > zaigougunjinkai\ ;
+自記湿度計 > jikishitsudokei\ ;
+大統一理論 > daitouitsuriron\ ;
+検定教科書 > kenteikyoukasho\ ;
+医学技術士 > igakugijutsushi\ ;
+天皇誕生日 > ten''noutanjoubi\ ;
+太平洋地域 > taiheiyouchiiki\ ;
+資産再評価 > shisansaihyouka\ ;
+情緒障害児 > jouchoshougaiji\ ;
+日本国憲法 > nihonkokukenpou\ ;
+人民解放軍 > jinminkaihougun\ ;
+絶対君主制 > zettaikunshusei\ ;
+芸術愛好家 > geijutsuaikouka\ ;
+私生児出産 > shiseijishussan\ ;
+両院協議会 > ryouinkyougikai\ ;
+小田原提灯 > odawaradjouchin\ ;
+貨物自動車 > kamotsujidousha\ ;
+片手間仕事 > katatemashigoto\ ;
+神経回路網 > shinkeikairomou\ ;
+炭素化合物 > tansokagoubutsu\ ;
+気管支喘息 > kikanshizensoku\ ;
+不動産業者 > fudousangyousha\ ;
+海洋気象台 > kaiyoukishoudai\ ;
+自動翻訳機 > jidouhon''yakuki\ ;
+縄文式土器 > joumonshikidoki\ ;
+輸入課徴金 > yunyuukachoukin\ ;
+重商主義者 > juushoushugisha\ ;
+遺産相続税 > isansouzokuzei\ ;
+毘廬遮那仏 > birushanabutsu\ ;
+関税自主権 > kanzeijishuken\ ;
+基本周波数 > kihonshuuhasuu\ ;
+四輪駆動車 > yonrinkudousha\ ;
+静電気防止 > seidenkiboushi\ ;
+煙突掃除夫 > entotsusoujifu\ ;
+休戦記念日 > kyuusenkinenbi\ ;
+学校群制度 > gakkougunseido\ ;
+放射線技師 > houshasengishi\ ;
+家庭裁判所 > kateisaibansho\ ;
+長距離打者 > choukyoridasha\ ;
+日本標準時 > nihonhyoujunji\ ;
+誘導電動機 > yuudoudendouki\ ;
+建国記念日 > kenkokukinenbi\ ;
+伝統主義者 > dentoushugisha\ ;
+登記番号欄 > toukibangouran\ ;
+歩行者優先 > hokoushayuusen\ ;
+無人宇宙船 > mujin''uchuusen\ ;
+羅萄日辞典 > raponichijiten\ ;
+温暖化現象 > ondankagenshou\ ;
+婦人参政権 > fujinsanseiken\ ;
+自由民主党 > jiyuuminshutou\ ;
+個体発生論 > kotaihasseiron\ ;
+大威徳妙王 > daiitokumyouou\ ;
+大韓航空機 > taikankoukuuki\ ;
+不特定多数 > futokuteitasuu\ ;
+主情主義者 > shujoushugisha\ ;
+法定代理人 > houteidairinin\ ;
+公開図書館 > koukaitoshokan\ ;
+一時間以内 > ichijikan''inai\ ;
+数理言語学 > suurigengogaku\ ;
+遺産相続人 > isansouzokunin\ ;
+方向探知器 > houkoutanchiki\ ;
+熱可塑樹脂 > netsukasojushi\ ;
+無機化合物 > mukikagoubutsu\ ;
+重要文化財 > juuyoubunkazai\ ;
+居間兼食堂 > imakenshokudou\ ;
+異方導電膜 > ihoudoudenmaku\ ;
+指示代名詞 > shijidaimeishi\ ;
+回復不可能 > kaifukufukanou\ ;
+拝金主義者 > haikinshugisha\ ;
+人道主義者 > jindoushugisha\ ;
+中央分離帯 > chuuoubunritai\ ;
+温帯低気圧 > ontaiteikiatsu\ ;
+超国家主義 > choukokkashugi\ ;
+利害関係者 > rigaikankeisha\ ;
+衆議員議長 > shuugiingichou\ ;
+導波管定数 > douhakanteisuu\ ;
+丁字形定規 > teijigatajougi\ ;
+簡易裁判所 > kan''isaibansho\ ;
+反動主義者 > handoushugisha\ ;
+音楽図書館 > ongakutoshokan\ ;
+乗用自動車 > jouyoujidousha\ ;
+圧倒的多数 > attoutekitasuu\ ;
+非政府組織 > hiseifusoshiki\ ;
+自由労働者 > jiyuuroudousha\ ;
+博愛主義者 > hakuaishugisha\ ;
+定期乗車券 > teikijoushaken\ ;
+電気洗濯機 > denkisentakuki\ ;
+終戦記念日 > shuusenkinenbi\ ;
+社会主義者 > shakaishugisha\ ;
+小型自動車 > kogatajidousha\ ;
+民事訴訟法 > minjisoshouhou\ ;
+第二量子化 > dainiryoushika\ ;
+二原子分子 > nigenshibunshi\ ;
+常任指揮者 > jouninshikisha\ ;
+農事試験場 > noujishikenjou\ ;
+情報化社会 > jouhoukashakai\ ;
+主観主義者 > shukanshugisha\ ;
+無教会主義 > mukyoukaishugi\ ;
+米価審議会 > beikashingikai\ ;
+時間外労働 > jikangairoudou\ ;
+百科全書派 > hyakkazenshoha\ ;
+二百二十日 > nihyakuhatsuka\ ;
+二重価格制 > nijuukakakusei\ ;
+刑事訴訟法 > keijisoshouhou\ ;
+販売代理店 > hanbaidairiten\ ;
+東亜諸民族 > touashominzoku\ ;
+単葉飛行機 > tan''youhikouki\ ;
+国会議事録 > kokkaigijiroku\ ;
+政府保証債 > seifuhoshousai\ ;
+便乗主義者 > binjoushugisha\ ;
+二大政党制 > nidaiseitousei\ ;
+無利息公債 > murisokukousai\ ;
+足素性原理 > ashisujougenri\ ;
+資本主義者 > shihonshugisha\ ;
+文化地理学 > bunkachirigaku\ ;
+公認候補者 > kouninkouhosha\ ;
+世界選手権 > sekaisenshuken\ ;
+新石器時代 > shinsekkijidai\ ;
+受験参考書 > jukensankousho\ ;
+静止画放送 > seishigahousou\ ;
+少年感化院 > shounenkankain\ ;
+長距離輸送 > choukyoriyusou\ ;
+再帰代名詞 > saikidaimeishi\ ;
+控訴裁判所 > kousohaibansho\ ;
+文化功労者 > bunkakourousha\ ;
+真空掃除機 > shinkuusoujiki\ ;
+人形浄瑠璃 > ningyoujoururi\ ;
+政治評論家 > seijihyouronka\ ;
+伝承叙事詩 > denshoujojishi\ ;
+有視界飛行 > yuushikaihikou\ ;
+降三世妙王 > gouzanzemyouou\ ;
+等高線地図 > toukousenchizu\ ;
+製造年月日 > seizounengappi\ ;
+地方交付税 > chihoukoufuzei\ ;
+日本語教本 > nihongokyouhon\ ;
+俘虜収容所 > furyoshuuyoujo\ ;
+空気圧縮機 > kuukiasshukuki\ ;
+国連記念日 > kokurenkinenbi\ ;
+無記名投票 > mukimeitouhyou\ ;
+自然主義者 > shizenshugisha\ ;
+管区気象台 > kankukishoudai\ ;
+法定準備金 > houteijunbikin\ ;
+海洋性気候 > kaiyouseikikou\ ;
+外貨準備高 > gaikajunbidaka\ ;
+旅行代理店 > ryokoudairiten\ ;
+予選通過者 > yosentsuukasha\ ;
+女性解放論 > joseikaihouron\ ;
+遺伝子治療 > idenshichiryou\ ;
+絶対主義者 > zettaishugisha\ ;
+共同炊事場 > kyoudousuijiba\ ;
+福祉事務所 > fukushijimusho\ ;
+三角系異常 > sankakukeiijou\ ;
+水産試験所 > suisanshikenjo\ ;
+軍事裁判所 > gunjisaibansho\ ;
+隠退蔵物資 > intaizoubusshi\ ;
+参考図書館 > sankoutoshokan\ ;
+無線周波数 > musenshuuhasuu\ ;
+重農主義者 > juunoushugisha\ ;
+乗合自動車 > noriaijidousha\ ;
+細胞遺伝学 > saibouidengaku\ ;
+超音波洗浄 > chouonpasenjou\ ;
+刑事被告人 > keijihikokunin\ ;
+群伝搬時間 > gundenpanjikan\ ;
+健康保険法 > kenkouhokenhou\ ;
+常任理事国 > jouninrijikoku\ ;
+非金属元素 > hikinzokugenso\ ;
+陸上自衛隊 > rikujoujieitai\ ;
+保険勧誘員 > hokenkan''yuuin\ ;
+窒素固定法 > chissokoteihou\ ;
+相対性原理 > soutaiseigenri\ ;
+美術愛好家 > bijutsuaikouka\ ;
+中石器時代 > chuusekkijidai\ ;
+主知主義者 > shuchishugisha\ ;
+蚕糸試験所 > sanshishikenjo\ ;
+立体幾何学 > rittaikikagaku\ ;
+不動産鑑定 > fudousankantei\ ;
+長距離飛行 > choukyorihikou\ ;
+第二次性徴 > dainijiseichou\ ;
+句構造文法 > kukouzoubunpou\ ;
+士官候補生 > shikankouhosei\ ;
+巡回図書館 > junkaitoshokan\ ;
+徴兵忌避者 > chouheikihisha\ ;
+出訴期限法 > shussokigenhou\ ;
+軍用輸送機 > gun''youyusouki\ ;
+言語地理学 > gengochirigaku\ ;
+前方後円墳 > zenpoukouenfun\ ;
+虫様突起炎 > chuuyoutokkien\ ;
+有形文化財 > yuukeibunkazai\ ;
+旧石器時代 > kyuusekkijidai\ ;
+自由民権論 > jiyuuminkenron\ ;
+破産裁判所 > hasansaibansho\ ;
+人身保護法 > jinshinhogohou\ ;
+放射性元素 > houshaseigenso\ ;
+捕虜収容所 > horyoshuuyoujo\ ;
+生計費指数 > seikeihishisuu\ ;
+国会図書館 > kokkaitoshokan\ ;
+高等弁務官 > koutoubenmukan\ ;
+時間順序積 > jikanjunjoseki\ ;
+地球温暖化 > chikyuuondanka\ ;
+非常勤講師 > hijoukinkoushi\ ;
+自動車学校 > jidoushagakkou\ ;
+税金避難地 > zeikinhinanchi\ ;
+人道的援助 > jindoutekienjo\ ;
+消費者運動 > shouhishaundou\ ;
+労働基準法 > roudoukijunhou\ ;
+漢字制限論 > kanjiseigenron\ ;
+周波数偏移 > shuuhasuuhen''i\ ;
+無制限貿易 > museigenboueki\ ;
+次元正則化 > jigenseisokuka\ ;
+人名用漢字 > jinmeiyoukanji\ ;
+征夷大将軍 > seiitaishougun\ ;
+産業予備軍 > sangyouyobigun\ ;
+利子平衡税 > rishiheikouzei\ ;
+無任所大臣 > muninshodaijin\ ;
+二重盲検法 > nijuumoukenhou\ ;
+自賠責保険 > jibaisekihoken\ ;
+重炭酸曹達 > juutansansouda\ ;
+長距離電話 > choukyoridenwa\ ;
+遺伝子工学 > idenshikougaku\ ;
+不可能選択 > fukanousentaku\ ;
+句構造規則 > kukouzoukisoku\ ;
+手形交換所 > tegatakoukanjo\ ;
+地方自治体 > chihoujichitai\ ;
+不規則動詞 > fukisokudoushi\ ;
+完全主義者 > kanzenshugisha\ ;
+構成素構造 > kouseisokouzou\ ;
+載貨吃水線 > saikakissuisen\ ;
+水銀温度計 > suigin''ondokei\ ;
+数理論理学 > suurironrigaku\ ;
+皇太子殿下 > koutaishidenka\ ;
+戦争未亡人 > sensoumiboujin\ ;
+破産管財人 > hasankanzainin\ ;
+協定世界時 > kyouteisekaiji\ ;
+海上保安庁 > kaijouhoanchou\ ;
+特異値分解 > tokuichibunkai\ ;
+民営化企業 > min''eikakigyou\ ;
+大西洋横断 > taiseiyououdan\ ;
+人工避妊法 > jinkouhininhou\ ;
+魚群探知機 > gyoguntanchiki\ ;
+遊離基反応 > yuurikihan''nou\ ;
+小田原評定 > odawarahyoujou\ ;
+騒音防止法 > souonboushihou\ ;
+疑問代名詞 > gimondaimeishi\ ;
+相対性理論 > soutaiseiriron\ ;
+酸化防止剤 > sankaboushizai\ ;
+第二次産業 > dainijisangyou\ ;
+有機塩溶媒 > yuukien''youbai\ ;
+電子計算機 > denshikeisanki\ ;
+戦闘犠牲者 > sentougiseisha\ ;
+民間航空機 > minkankoukuuki\ ;
+反戦主義者 > hansenshugisha\ ;
+観光案内所 > kankouan''naijo\ ;
+高齢化社会 > koureikashakai\ ;
+記号論理学 > kigouronrigaku\ ;
+指名手配人 > shimeitehaijin\ ;
+自転車旅行 > jitensharyokou\ ;
+平均太陽時 > heikintaiyouji\ ;
+好気性細菌 > koukiseisaikin\ ;
+電波望遠鏡 > denpabouenkyou\ ;
+労働運動者 > roudouundousha\ ;
+震災記念日 > shinsaikinenbi\ ;
+悪徳政治家 > akutokuseijika\ ;
+情報主要素 > jouhoushuyouso\ ;
+公武合体論 > koubugattairon\ ;
+電光掲示板 > denkoukeijiban\ ;
+価電子状態 > kadenshijoutai\ ;
+水産加工品 > suisankakouhin\ ;
+平面幾何学 > heimenkikagaku\ ;
+自転車置場 > jitenshaokiba\ ;
+教育委員会 > kyouikuiinkai\ ;
+水上飛行機 > suijouhikouki\ ;
+厭世悲観者 > enseihikansha\ ;
+後期印象派 > koukiinshouha\ ;
+大規模戦争 > daikibosensou\ ;
+無担保社債 > mutanposhasai\ ;
+遠心分離機 > enshinbunriki\ ;
+電気冷蔵庫 > denkireizouko\ ;
+最低温度計 > saiteiondokei\ ;
+顧問弁護士 > komonbengoshi\ ;
+二硫化炭素 > niryuukatanso\ ;
+早期警戒機 > soukikeikaiki\ ;
+構造遺伝子 > kouzouidenshi\ ;
+青銅器時代 > seidoukijidai\ ;
+会計検査院 > kaikeikensain\ ;
+首位攻防戦 > shuikoubousen\ ;
+全方位外交 > zenhouigaikou\ ;
+無人化工場 > mujinkakoujou\ ;
+火事場泥棒 > kajibadorobou\ ;
+人工栄養児 > jinkoueiyouji\ ;
+欧米諸言語 > oubeishogengo\ ;
+人工孵化法 > jinkoufukahou\ ;
+軍事顧問団 > gunjikomondan\ ;
+高層天気図 > kousoutenkizu\ ;
+仮面舞踏会 > kamenbutoukai\ ;
+作業部会案 > sagyoubukaian\ ;
+映画評論家 > eigahyouronka\ ;
+第二次大戦 > dainijitaisen\ ;
+野次馬根性 > yajiumakonjou\ ;
+英会話学校 > eikaiwagakkou\ ;
+前方不注意 > zenpoufuchuui\ ;
+地方公務員 > chihoukoumuin\ ;
+自動販売機 > jidouhanbaiki\ ;
+電磁調理器 > denjichouriki\ ;
+航空自衛隊 > koukuujieitai\ ;
+機関投資家 > kikantoushika\ ;
+回路遮断機 > kairoshadanki\ ;
+聖路加病院 > seirokabyouin\ ;
+分離主義者 > bunrishugisha\ ;
+憲法記念日 > kenpoukinenbi\ ;
+加減抵抗器 > kagenteikouki\ ;
+自動販売器 > jidouhanbaiki\ ;
+無免許運転 > mumenkyounten\ ;
+不可視光線 > fukashikousen\ ;
+貿易自由化 > bouekijiyuuka\ ;
+空気制動機 > kuukiseidouki\ ;
+五十歩百歩 > gojuppohyappo\ ;
+原理主義者 > genrishugisha\ ;
+多元文化論 > tagenbunkaron\ ;
+譲渡性預金 > joutoseiyokin\ ;
+国家主義者 > kokkashugisha\ ;
+沿岸警備隊 > engankeibitai\ ;
+個人主義者 > kojinshugisha\ ;
+外交委員長 > gaikouiinchou\ ;
+無抵抗主義 > muteikoushugi\ ;
+放射能汚染 > houshanouosen\ ;
+電気自動車 > denkijidousha\ ;
+優生保護法 > yuuseihogohou\ ;
+地方事務所 > chihoujimusho\ ;
+輸入自由化 > yunyuujiyuuka\ ;
+無利息債務 > murisokusaimu\ ;
+硫黄酸化物 > iousankabutsu\ ;
+道路掃除人 > dourosoujijin\ ;
+仁輪加狂言 > niwakakyougen\ ;
+自自公３党 > jijikousantou\ ;
+気管支肺炎 > kikanshihaien\ ;
+多重債務者 > tajuusaimusha\ ;
+諮問委員会 > shimon''iinkai\ ;
+高高度飛行 > koukoudohikou\ ;
+国会議事堂 > kokkaigijidou\ ;
+二十四節気 > nijuushisekki\ ;
+無形文化財 > mukeibunkazai\ ;
+市場自由化 > shijoujiyuuka\ ;
+経営多角化 > keieitakakuka\ ;
+主我主義者 > shugashugisha\ ;
+暗号化手法 > angoukashuhou\ ;
+不見転芸者 > mizutengeisha\ ;
+功利主義者 > kourishugisha\ ;
+自動車保険 > jidoushahoken\ ;
+自己顕示欲 > jikokenjiyoku\ ;
+無配当保険 > muhaitouhoken\ ;
+果樹栽培者 > kajusaibaisha\ ;
+裁判官忌避 > saibankankihi\ ;
+非武装地帯 > hibusouchitai\ ;
+空気清浄機 > kuukiseijouki\ ;
+一事不再議 > ichijifusaigi\ ;
+創建記念日 > soukenkinenbi\ ;
+普遍妥当性 > fuhendatousei\ ;
+原子破壊機 > genshihakaiki\ ;
+結婚記念日 > kekkonkinenbi\ ;
+大雨注意報 > ooamechuuihou\ ;
+米東部時間 > beitoubujikan\ ;
+劣性遺伝子 > resseiidenshi\ ;
+無価値資産 > mukachishisan\ ;
+健康保険医 > kenkouhoken''i\ ;
+常任委員会 > jounin''iinkai\ ;
+自由主義者 > jiyuushugisha\ ;
+短波受信機 > tanpajushinki\ ;
+破壊主義者 > hakaishugisha\ ;
+御都合主義 > gotsugoushugi\ ;
+二十日大根 > hatsukadaikon\ ;
+落下傘部隊 > rakkasanbutai\ ;
+長距離依存 > choukyoriizon\ ;
+符号変換器 > fugouhenkanki\ ;
+送金小切手 > soukinkogitte\ ;
+対戦車火器 > taisenshakaki\ ;
+弗化水素酸 > fukkasuisosan\ ;
+相補性原理 > souhoseigenri\ ;
+蒸気機関車 > joukikikansha\ ;
+文化事業部 > bunkajigyoubu\ ;
+無記名社債 > mukimeishasai\ ;
+合同慰霊祭 > goudouireisai\ ;
+火災報知機 > kasaihouchiki\ ;
+電波探知機 > denpatanchiki\ ;
+可変抵抗器 > kahenteikouki\ ;
+公務員試験 > koumuinshiken\ ;
+宇宙飛行士 > uchuuhikoushi\ ;
+看護婦学院 > kangofugakuin\ ;
+十字軍騎士 > juujigunkishi\ ;
+無機高分子 > mukikoubunshi\ ;
+火災報知器 > kasaihouchiki\ ;
+電波探知器 > denpatanchiki\ ;
+指揮所演習 > shikijoenshuu\ ;
+二酸化窒素 > nisankachisso\ ;
+自動車電話 > jidoushadenwa\ ;
+情報可視化 > jouhoukashika\ ;
+摂氏２０度 > sesshinijuudo\ ;
+小型赤家蚊 > kogataakaieka\ ;
+結婚披露宴 > kekkonhirouen\ ;
+海上自衛隊 > kaijoujieitai\ ;
+原案委員会 > gen''an''iinkai\ ;
+選手権試合 > senshukenjiai\ ;
+日和見主義 > hiyorimishugi\ ;
+仮装舞踏会 > kasoubutoukai\ ;
+遮光器土偶 > shakoukidoguu\ ;
+下水処理場 > gesuishorijou\ ;
+合理主義者 > gourishugisha\ ;
+楽器演奏者 > gakkiensousha\ ;
+古典主義者 > kotenshugisha\ ;
+国土地理院 > kokudochiriin\ ;
+市街化区域 > shigaikakuiki\ ;
+電気機関車 > denkikikansha\ ;
+弥次馬根性 > yajiumakonjou\ ;
+開校記念日 > kaikoukinenbi\ ;
+不可知論者 > fukachironsha\ ;
+無記名債権 > mukimeisaiken\ ;
+全波受信機 > zenpajushinki\ ;
+平和主義者 > heiwashugisha\ ;
+青天井予算 > aotenjouyosan\ ;
+状況意味論 > joukyouimiron\ ;
+漢字文化圏 > kanjibunkaken\ ;
+歯科技工士 > shikagikoushi\ ;
+海上輸送路 > kaijouyusouro\ ;
+調停委員会 > chouteiiinkai\ ;
+行方不明者 > yukuefumeisha\ ;
+個人的意見 > kojintekiiken\ ;
+北国赤海老 > hokkokuakaebi\ ;
+使途不明金 > shitofumeikin\ ;
+民主化運動 > minshukaundou\ ;
+天気相談所 > tenkisoudanjo\ ;
+参加希望者 > sankakibousha\ ;
+懐疑主義者 > kaigishugisha\ ;
+市議会議員 > shigikaigiin\ ;
+中央委員会 > chuuouiinkai\ ;
+胃酸過多症 > isankatashou\ ;
+電気陰性度 > denkiinseido\ ;
+無記名預金 > mukimeiyokin\ ;
+利己主義者 > rikoshugisha\ ;
+国家公務員 > kokkakoumuin\ ;
+希土類元素 > kidoruigenso\ ;
+電気掃除機 > denkisoujiki\ ;
+薔薇十字団 > barajuujidan\ ;
+富士火山帯 > fujikazantai\ ;
+星座投影機 > seizatoueiki\ ;
+欧州委員会 > oushuuiinkai\ ;
+上位互換性 > jouigokansei\ ;
+放射線科医 > houshasenkai\ ;
+火炎放射器 > kaenhoushaki\ ;
+合同委員会 > goudouiinkai\ ;
+遺産管理人 > isankanrinin\ ;
+貿易依存度 > bouekiizondo\ ;
+労働委員会 > roudouiinkai\ ;
+模型飛行機 > mokeihikouki\ ;
+下位範疇化 > kaihanchuuka\ ;
+非営利団体 > hieiridantai\ ;
+亜熱帯気候 > anettaikikou\ ;
+無政府主義 > museifushugi\ ;
+移動図書館 > idoutoshokan\ ;
+実行委員会 > jikkouiinkai\ ;
+留守番電話 > rusubandenwa\ ;
+検討委員会 > kentouiinkai\ ;
+衆議院議員 > shuugiingiin\ ;
+選考委員会 > senkouiinkai\ ;
+類義語辞典 > ruigigojiten\ ;
+右方高麗楽 > uhoukomagaku\ ;
+肥厚性鼻炎 > hikouseibien\ ;
+亜酸化窒素 > asankachisso\ ;
+安定同位体 > anteidouitai\ ;
+文字符号系 > mojifugoukei\ ;
+医療輸送機 > iryouyusouki\ ;
+過酸化水素 > kasankasuiso\ ;
+代理委任状 > dairiininjou\ ;
+亜寒帯気候 > akantaikikou\ ;
+高音部記号 > kouonbukigou\ ;
+位相幾何学 > isoukikagaku\ ;
+伊勢大神宮 > isedaijinguu\ ;
+二酸化炭素 > nisankatanso\ ;
+低音部記号 > teionbukigou\ ;
+愛他主義者 > aitashugisha\ ;
+主意主義者 > shuishugisha\ ;
+次酸化炭素 > jisankatanso\ ;
+治安維持法 > chian''ijihou\ ;
+井戸端会議 > idobatakaigi\ ;
+度数分布図 > dosuubunpuzu\ ;
+自動車事故 > jidoushajiko\ ;
+農地委員会 > nouchiiinkai\ ;
+債務不履行 > saimufurikou\ ;
+一酸化炭素 > issankatanso\ ;
+付加価値税 > fukakachizei\ ;
+常置委員会 > jouchiiinkai\ ;
+公安委員会 > kouan''iinkai\ ;
+非営利事業 > hieirijigyou\ ;
+経営合理化 > keieigourika\ ;
+弁護依頼人 > bengoirainin\ ;
+利他主義者 > ritashugisha\ ;
+尊皇王攘夷 > son''noujoui\ ;
+非開示合意 > hikaijigoui\ ;
+見様見真似 > miyoumimane\ ;
+阿呆陀羅経 > ahodarakyou\ ;
+法務委員会 > houmuiinkai\ ;
+脊黄青鸚哥 > sekiseiinko\ ;
+屋根裏部屋 > yaneurabeya\ ;
+阿多福風邪 > otafukukaze\ ;
+不随意運動 > fuzuiiundou\ ;
+日本語文字 > nihongomoji\ ;
+平和維持軍 > heiwaijigun\ ;
+耳鼻咽喉科 > jibiinkouka\ ;
+参議院議員 > sangiingiin\ ;
+江戸前寿司 > edomaezushi\ ;
+自記温度計 > jikiondokei\ ;
+準備委員会 > junbiiinkai\ ;
+下位互換性 > kaigokansei\ ;
+亜鉛華軟膏 > aenkanankou\ ;
+亜米利加杉 > amerikasugi\ ;
+摩訶不思議 > makafushigi\ ;
+産婦人科医 > sanfujinkai\ ;
+運営委員会 > un''eiiinkai\ ;
+同音異義語 > douon''igigo\ ;
+出来不出来 > dekifudeki\ ;
+御高祖頭巾 > okosozukin\ ;
+二酸化硫黄 > nisankaiou\ ;
+十重二十重 > toehatae\ ;
+長日植物 > choujitsushokubutsu\ ;
+律令格式 > ritsuryoukyakushiki\ ;
+食肉植物 > shokunikushokubutsu\ ;
+直接接続 > chokusetsusetsuzoku\ ;
+食虫植物 > shokuchuushokubutsu\ ;
+一日一日 > ichinichiichinichi\ ;
+短日植物 > tanjitsushokubutsu\ ;
+標準出力 > hyoujunshutsuryoku\ ;
+信賞必罰 > shinshouhitsubatsu\ ;
+特徴抽出 > tokuchouchuushutsu\ ;
+着生植物 > chakuseishokubutsu\ ;
+実物取引 > jitsubutsutorihiki\ ;
+直接接触 > chokusetsusesshoku\ ;
+貸付信託 > kashitsukeshintaku\ ;
+即日速達 > sokujitsusokutatsu\ ;
+百発百中 > hyappatsuhyakuchuu\ ;
+取締役会 > torishimariyakukai\ ;
+出力装置 > shutsuryokusouchi\ ;
+複雑骨折 > fukuzatsukossetsu\ ;
+物的流通 > butsutekiryuutsuu\ ;
+十年一昔 > juunenhitomukashi\ ;
+祥月命日 > shoutsukimeinichi\ ;
+戦略物質 > senryakubusshitsu\ ;
+就職活動 > shuushokukatsudou\ ;
+弱肉強食 > jakunikukyoushoku\ ;
+伸縮税率 > shinshukuzeiritsu\ ;
+神出鬼没 > shinshutsukibotsu\ ;
+吸血動物 > kyuuketsudoubutsu\ ;
+熱力学的 > netsurikigakuteki\ ;
+植物採集 > shokubutsusaishuu\ ;
+出力端子 > shutsuryokutanshi\ ;
+標準入力 > hyoujun''nyuuryoku\ ;
+観葉植物 > kan''youshokubutsu\ ;
+七生報国 > shichishouhoukoku\ ;
+実物描写 > jitsubutsubyousha\ ;
+殺真菌薬 > satsushinkin''yaku\ ;
+標本抽出 > hyouhonchuushutsu\ ;
+総括質問 > soukatsushitsumon\ ;
+潮力発電 > chouryokuhatsuden\ ;
+直接購入 > chokusetsukounyuu\ ;
+窮極目的 > kyuukyokumokuteki\ ;
+天照大神 > amaterasuoomikami\ ;
+質実剛健 > shitsujitsugouken\ ;
+局外中立 > kyokugaichuuritsu\ ;
+色彩調節 > shikisaichousetsu\ ;
+薬用植物 > yakuyoushokubutsu\ ;
+秋霜烈日 > shuusouretsujitsu\ ;
+直接請求 > chokusetsuseikyuu\ ;
+宗教哲学 > shuukyoutetsugaku\ ;
+薬物中毒 > yakubutsuchuudoku\ ;
+小心翼翼 > shoushin''yokuyoku\ ;
+特別幕僚 > tokubetsubakuryou\ ;
+分裂物質 > bunretsubusshitsu\ ;
+直接照明 > chokusetsushoumei\ ;
+嘱託殺人 > shokutakusatsujin\ ;
+湿生植物 > shisseishokubutsu\ ;
+七十人訳 > shichijuunin''yaku\ ;
+発癌物質 > hatsuganbusshitsu\ ;
+白長須鯨 > shironagasukujira\ ;
+観賞植物 > kanshoushokubutsu\ ;
+心神喪失 > shinshinsoushitsu\ ;
+通俗小説 > tsuuzokushousetsu\ ;
+百戦百勝 > hyakusenhyakushou\ ;
+提灯行列 > chouchingyouretsu\ ;
+失業対策 > shitsugyoutaisaku\ ;
+小心翼々 > shoushin''yokuyoku\ ;
+左側通行 > hidarigawatsuukou\ ;
+救出作戦 > kyuushutsusakusen\ ;
+室内装飾 > shitsunaisoushoku\ ;
+直接競争 > chokusetsukyousou\ ;
+旭日昇天 > kyokujitsushouten\ ;
+蘚苔植物 > sentaishokubutsu\ ;
+研究室棟 > kenkyuushitsutou\ ;
+西側諸国 > nishigawashokoku\ ;
+脊椎動物 > sekitsuidoubutsu\ ;
+桑原桑原 > kuwabarakuwabara\ ;
+享楽生活 > kyourakuseikatsu\ ;
+入力電流 > nyuuryokudenryuu\ ;
+十年一日 > juunen''ichijitsu\ ;
+風俗小説 > fuuzokushousetsu\ ;
+低血圧症 > teiketsuatsushou\ ;
+虚々実々 > kyokyojitsujitsu\ ;
+技術協力 > gijutsukyouryoku\ ;
+空中衝突 > kuuchuushoutotsu\ ;
+千篇一律 > senpen''ichiritsu\ ;
+料理教室 > ryourikyoushitsu\ ;
+本格小説 > honkakushousetsu\ ;
+国立劇場 > kokuritsugekijou\ ;
+草食動物 > soushokudoubutsu\ ;
+直接選挙 > chokusetsusenkyo\ ;
+生者必滅 > shoujahitsumetsu\ ;
+熱帯植物 > nettaishokubutsu\ ;
+松下電工 > matsushitadenkou\ ;
+商業算術 > shougyousanjutsu\ ;
+戦戦栗栗 > sensenritsuritsu\ ;
+揮発物質 > kihatsubusshitsu\ ;
+発光植物 > hakkoushokubutsu\ ;
+電力供給 > denryokukyoukyuu\ ;
+戦略爆撃 > senryakubakugeki\ ;
+妊娠中絶 > ninshinchuuzetsu\ ;
+直接会談 > chokusetsukaidan\ ;
+割増賃金 > warimashichingin\ ;
+作付面積 > sakudzukemenseki\ ;
+日独協会 > nichidokukyoukai\ ;
+日常生活 > nichijouseikatsu\ ;
+歳入歳出 > sainyuusaishutsu\ ;
+特別急行 > tokubetsukyuukou\ ;
+転出証明 > tenshutsushoumei\ ;
+救荒作物 > kyuukousakumotsu\ ;
+地熱発電 > chinetsuhatsuden\ ;
+薬物療法 > yakubutsuryouhou\ ;
+食糧配給 > shokuryouhaikyuu\ ;
+直系血族 > chokkeiketsuzoku\ ;
+質問用紙 > shitsumon''youshi\ ;
+独身生活 > dokushinseikatsu\ ;
+警察当局 > keisatsutoukyoku\ ;
+直接伝染 > chokusetsudensen\ ;
+青空教室 > aozorakyoushitsu\ ;
+非嫡出子 > hichakushutsushi\ ;
+生活様式 > seikatsuyoushiki\ ;
+片道料金 > katamichiryoukin\ ;
+原油流出 > gen''yuryuushutsu\ ;
+略式命令 > ryakushikimeirei\ ;
+芸術活動 > geijutsukatsudou\ ;
+歴史哲学 > rekishitetsugaku\ ;
+下町言葉 > shitamachikotoba\ ;
+緊急着陸 > kinkyuuchakuriku\ ;
+冷血動物 > reiketsudoubutsu\ ;
+取扱注意 > toriatsukaichuui\ ;
+割増料金 > warimashiryoukin\ ;
+直截簡明 > chokusetsukanmei\ ;
+黄道吉日 > koudoukichinichi\ ;
+一触即発 > isshokusokuhatsu\ ;
+即日開票 > sokujitsukaihyou\ ;
+実質賃金 > jisshitsuchingin\ ;
+教養小説 > kyouyoushousetsu\ ;
+抽象芸術 > chuushougeijutsu\ ;
+直接支配 > chokusetsushihai\ ;
+集団就職 > shuudanshuushoku\ ;
+水生植物 > suiseishokubutsu\ ;
+職務質問 > shokumushitsumon\ ;
+乾生植物 > kanseishokubutsu\ ;
+宿泊設備 > shukuhakusetsubi\ ;
+国立大学 > kokuritsudaigaku\ ;
+一言二言 > hitokotofutakoto\ ;
+正面衝突 > shoumenshoutotsu\ ;
+一日千秋 > ichinichisenshuu\ ;
+商業目的 > shougyoumokuteki\ ;
+複式学級 > fukushikigakkyuu\ ;
+卒業証書 > sotsugyoushousho\ ;
+焼肉定食 > yakinikuteishoku\ ;
+表面張力 > hyoumenchouryoku\ ;
+特別番組 > tokubetsubangumi\ ;
+学習能力 > gakushuunouryoku\ ;
+信用取引 > shin''youtorihiki\ ;
+高血圧症 > kouketsuatsushou\ ;
+中心人物 > chuushinjinbutsu\ ;
+食料品商 > shokuryouhinshou\ ;
+超現実的 > chougenjitsuteki\ ;
+即身成仏 > sokushinjoubutsu\ ;
+国外脱出 > kokugaidasshutsu\ ;
+直接回答 > chokusetsukaitou\ ;
+先物取引 > sakimonotorihiki\ ;
+歴史小説 > rekishishousetsu\ ;
+煮沸消毒 > shafutsushoudoku\ ;
+海外進出 > kaigaishinshutsu\ ;
+水力発電 > suiryokuhatsuden\ ;
+形質導入 > keishitsudounyuu\ ;
+直接関係 > chokusetsukankei\ ;
+直接簡明 > chokusetsukanmei\ ;
+振替休日 > furikaekyuujitsu\ ;
+千編一律 > senpen''ichiritsu\ ;
+郵便小包 > yuubinkodzutsumi\ ;
+単一神教 > tan''itsushinkyou\ ;
+虚弱体質 > kyojakutaishitsu\ ;
+脊索動物 > sekisakudoubutsu\ ;
+武力衝突 > buryokushoutotsu\ ;
+熱核反応 > netsukakuhan''nou\ ;
+種子植物 > shushishokubutsu\ ;
+直接行動 > chokusetsukoudou\ ;
+求職広告 > kyuushokukoukoku\ ;
+実証哲学 > jisshoutetsugaku\ ;
+花嫁花婿 > hanayomehanamuko\ ;
+大名行列 > daimyougyouretsu\ ;
+高山植物 > kouzanshokubutsu\ ;
+特別料金 > tokubetsuryoukin\ ;
+中間小説 > chuukanshousetsu\ ;
+生物濃縮 > seibutsunoushuku\ ;
+入力信号 > nyuuryokushingou\ ;
+彫刻室座 > choukokushitsuza\ ;
+確率標本 > kakuritsuhyouhon\ ;
+州立大学 > shuuritsudaigaku\ ;
+多肉植物 > tanikushokubutsu\ ;
+熱伝導率 > netsudendouritsu\ ;
+植物人間 > shokubutsuningen\ ;
+虚虚実実 > kyokyojitsujitsu\ ;
+物物交換 > butsubutsukoukan\ ;
+実力行使 > jitsuryokukoushi\ ;
+型式証明 > katashikishoumei\ ;
+連勝複式 > renshoufukushiki\ ;
+直接協議 > chokusetsukyougi\ ;
+罪障消滅 > zaishoushoumetsu\ ;
+晩生植物 > banseishokubutsu\ ;
+潜在失業 > senzaishitsugyou\ ;
+直接比較 > chokusetsuhikaku\ ;
+核抑止力 > kakuyokushiryoku\ ;
+万物流転 > banbutsuryuuten\ ;
+軟式庭球 > nanshikiteikyuu\ ;
+修道生活 > shuudouseikatsu\ ;
+秘密警察 > himitsukeisatsu\ ;
+法人株主 > houjinkabunushi\ ;
+間接照明 > kansetsushoumei\ ;
+紛骨砕身 > funkotsusaishin\ ;
+両棲動物 > ryouseidoubutsu\ ;
+集約農業 > shuuyakunougyou\ ;
+廃疾条件 > haishitsujouken\ ;
+能率賃金 > nouritsuchingin\ ;
+単刀直入 > tantouchokunyuu\ ;
+三文小説 > sanmonshousetsu\ ;
+筋肉注射 > kin''nikuchuusha\ ;
+四通八達 > shitsuuhattatsu\ ;
+割増運賃 > warimashiunchin\ ;
+南極観測 > nankyokukansoku\ ;
+一目瞭然 > ichimokuryouzen\ ;
+素人下宿 > shiroutogeshuku\ ;
+学校給食 > gakkoukyuushoku\ ;
+間接撮影 > kansetsusatsuei\ ;
+白川夜船 > shirakawayofune\ ;
+特筆大書 > tokuhitsutaisho\ ;
+食品工業 > shokuhinkougyou\ ;
+棘皮動物 > kyokuhidoubutsu\ ;
+怪力乱神 > kairyokuranshin\ ;
+人生哲学 > jinseitetsugaku\ ;
+新婚生活 > shinkonseikatsu\ ;
+公開入札 > koukainyuusatsu\ ;
+株式市場 > kabushikishijou\ ;
+学業成績 > gakugyouseiseki\ ;
+物質名詞 > busshitsumeishi\ ;
+短編小説 > tanpenshousetsu\ ;
+商業数学 > shougyousuugaku\ ;
+脱出速度 > dasshutsusokudo\ ;
+特別総会 > tokubetsusoukai\ ;
+第一楽章 > daiichigakushou\ ;
+索条鉄道 > sakujoutetsudou\ ;
+軍記物語 > gunkimonogatari\ ;
+厳正中立 > genseichuuritsu\ ;
+一日一夜 > ichinichiichiya\ ;
+陰陰滅滅 > in''inmetsumetsu\ ;
+就職浪人 > shuushokurounin\ ;
+純潔教育 > junketsukyouiku\ ;
+宗教改革 > shuukyoukaikaku\ ;
+支離滅裂 > shirimetsuretsu\ ;
+国民宿舎 > kokuminshukusha\ ;
+独立宣言 > dokuritsusengen\ ;
+副腎皮質 > fukujinhishitsu\ ;
+国民生活 > kokuminseikatsu\ ;
+積載能力 > sekisainouryoku\ ;
+収容能力 > shuuyounouryoku\ ;
+腰高障子 > koshidakashouji\ ;
+年頃日頃 > toshigorohigoro\ ;
+通俗文学 > tsuuzokubungaku\ ;
+優先株主 > yuusenkabunushi\ ;
+写真測量 > shashinsokuryou\ ;
+企業体質 > kigyoutaishitsu\ ;
+猪突猛進 > chototsumoushin\ ;
+学生割引 > gakuseiwaribiki\ ;
+価格圧力 > kakakuatsuryoku\ ;
+表現形式 > hyougenkeishiki\ ;
+出願書類 > shutsuganshorui\ ;
+宗教教育 > shuukyoukyouiku\ ;
+余裕綽綽 > yoyuushakushaku\ ;
+知的能力 > chitekinouryoku\ ;
+反骨精神 > hankotsuseishin\ ;
+正確爆撃 > seikakubakugeki\ ;
+日英通訳 > nichieitsuuyaku\ ;
+食物繊維 > shokumotsusen''i\ ;
+算術級数 > sanjutsukyuusuu\ ;
+入力装置 > nyuuryokusouchi\ ;
+職業訓練 > shokugyoukunren\ ;
+探偵小説 > tanteishousetsu\ ;
+生活反応 > seikatsuhan''nou\ ;
+松下電器 > matsushitadenki\ ;
+知識階級 > chishikikaikyuu\ ;
+株式会社 > kabushikigaisha\ ;
+一時預所 > ichijiazukarijo\ ;
+拡大解釈 > kakudaikaishaku\ ;
+品質保証 > hinshitsuhoshou\ ;
+信仰告白 > shinkoukokuhaku\ ;
+格物致知 > kakubutsuchichi\ ;
+米穀通帳 > beikokutsuuchou\ ;
+実用新案 > jitsuyoushin''an\ ;
+心身障害 > shinshinshougai\ ;
+速戦即決 > sokusensokketsu\ ;
+化学吸着 > kagakukyuuchaku\ ;
+四方山話 > yomoyamabanashi\ ;
+皇室典範 > koushitsutenpan\ ;
+特別国会 > tokubetsukokkai\ ;
+一坪本社 > hitotsubohonsha\ ;
+早口言葉 > hayakuchikotoba\ ;
+深山幽谷 > shinzan''yuukoku\ ;
+通商産業 > tsuushousangyou\ ;
+建築面積 > kenchikumenseki\ ;
+盤根錯節 > bankonsakusetsu\ ;
+内的生活 > naitekiseikatsu\ ;
+秘密漏洩 > himitsurousetsu\ ;
+玉石混淆 > gyokusekikonkou\ ;
+雛鑑別者 > hinakanbetsusha\ ;
+終身年金 > shuushin''nenkin\ ;
+粉骨砕身 > funkotsusaishin\ ;
+人物寸描 > jinbutsusunbyou\ ;
+商品目録 > shouhinmokuroku\ ;
+外食産業 > gaishokusangyou\ ;
+資源節約 > shigensetsuyaku\ ;
+静脈注射 > joumyakuchuusha\ ;
+冒険小説 > boukenshousetsu\ ;
+熱硬化物 > netsukoukabutsu\ ;
+国有鉄道 > kokuyuutetsudou\ ;
+確率変数 > kakuritsuhensuu\ ;
+開発計画 > kaihatsukeikaku\ ;
+有害物質 > yuugaibusshitsu\ ;
+情状酌量 > joujoushakuryou\ ;
+侵略戦争 > shinryakusensou\ ;
+冒頭陳述 > boutouchinjutsu\ ;
+焼身自殺 > shoushinjisatsu\ ;
+大安吉日 > taiankichinichi\ ;
+矯正視力 > kyouseishiryoku\ ;
+研究開発 > kenkyuukaihatsu\ ;
+談合入札 > dangounyuusatsu\ ;
+陸生動物 > rikuseidoubutsu\ ;
+南太平洋 > minamitaiheiyou\ ;
+学生生活 > gakuseiseikatsu\ ;
+１１９番 > hyakujuukyuuban\ ;
+結合組織 > ketsugousoshiki\ ;
+彫心鏤骨 > choushinrukotsu\ ;
+縁日商人 > en''nichishounin\ ;
+心神耗弱 > shinshinmoujaku\ ;
+短期貸付 > tankikashitsuke\ ;
+玉石混交 > gyokusekikonkou\ ;
+左中括弧 > hidarichuukakko\ ;
+黒色人種 > kokushokujinshu\ ;
+公式発表 > koushikihappyou\ ;
+軟骨組織 > nankotsusoshiki\ ;
+星間物質 > seikanbusshitsu\ ;
+生涯学習 > shougaigakushuu\ ;
+知識表現 > chishikihyougen\ ;
+源氏物語 > genjimonogatari\ ;
+七転八倒 > shichitenbattou\ ;
+白色人種 > hakushokujinshu\ ;
+平家物語 > heikemonogatari\ ;
+余裕綽々 > yoyuushakushaku\ ;
+拒絶反応 > kyozetsuhan''nou\ ;
+特別待遇 > tokubetsutaiguu\ ;
+青天白日 > seitenhakujitsu\ ;
+天罰覿面 > tenbatsutekimen\ ;
+血族結婚 > ketsuzokukekkon\ ;
+発色現像 > hasshokugenshou\ ;
+入札価格 > nyuusatsukakaku\ ;
+連立内閣 > renritsunaikaku\ ;
+腹式呼吸 > fukushikikokyuu\ ;
+低開発国 > teikaihatsukoku\ ;
+軽妙洒脱 > keimyoushadatsu\ ;
+鋼索鉄道 > kousakutetsudou\ ;
+現有勢力 > gen''yuuseiryoku\ ;
+遊休施設 > yuukyuushisetsu\ ;
+跳躍振動 > chouyakushindou\ ;
+超然内閣 > chouzen''naikaku\ ;
+実業学校 > jitsugyougakkou\ ;
+私立大学 > shiritsudaigaku\ ;
+最低血圧 > saiteiketsuatsu\ ;
+尊属殺人 > sonzokusatsujin\ ;
+中立地帯 > chuuritsuchitai\ ;
+両極地方 > ryoukyokuchihou\ ;
+連続殺人 > renzokusatsujin\ ;
+垂直分業 > suichokubungyou\ ;
+洗濯石鹸 > sentakusetsuken\ ;
+闘病生活 > toubyouseikatsu\ ;
+同文通達 > doubuntsuutatsu\ ;
+円転滑脱 > entenkatsudatsu\ ;
+生物工学 > seibutsukougaku\ ;
+一律減反 > ichiritsugentan\ ;
+人員縮少 > jin''inshukushou\ ;
+独立変数 > dokuritsuhensuu\ ;
+人定質問 > jinteishitsumon\ ;
+新約聖書 > shin''yakuseisho\ ;
+生殺与奪 > seisatsuyodatsu\ ;
+殿様仕事 > tonosamashigoto\ ;
+台所用品 > daidokoroyouhin\ ;
+貴金属卸 > kikinzokuoroshi\ ;
+上方贅六 > kamigatazeiroku\ ;
+血族関係 > ketsuzokukankei\ ;
+子宮後屈 > shikyuukoukutsu\ ;
+南征北伐 > nanseihokubatsu\ ;
+真実一路 > shinjitsuichiro\ ;
+特別運賃 > tokubetsuunchin\ ;
+通常戦力 > tsuujousenryoku\ ;
+利害得失 > rigaitokushitsu\ ;
+浅酌低唱 > senshakuteishou\ ;
+裸子植物 > rashishokubutsu\ ;
+借用証書 > shakuyoushousho\ ;
+共有結合 > kyouyuuketsugou\ ;
+回折領域 > kaisetsuryouiki\ ;
+職業意識 > shokugyouishiki\ ;
+単式学級 > tanshikigakkyuu\ ;
+学術雑誌 > gakujutsuzasshi\ ;
+卒業試験 > sotsugyoushiken\ ;
+優性形質 > yuuseikeishitsu\ ;
+成長曲線 > seichoukyokusen\ ;
+百八十度 > hyakuhachijuudo\ ;
+大和撫子 > yamatonadeshiko\ ;
+好色文学 > koushokubungaku\ ;
+霊魂消滅 > reikonshoumetsu\ ;
+特別配当 > tokubetsuhaitou\ ;
+風力階級 > fuuryokukaikyuu\ ;
+流体力学 > ryuutairikigaku\ ;
+劣弱意識 > retsujakuishiki\ ;
+二股膏薬 > futamatakouyaku\ ;
+物質代謝 > busshitsutaisha\ ;
+管轄官庁 > kankatsukanchou\ ;
+修正申告 > shuuseishinkoku\ ;
+心理小説 > shinrishousetsu\ ;
+着陸地点 > chakurikuchiten\ ;
+実験小説 > jikkenshousetsu\ ;
+原子爆発 > genshibakuhatsu\ ;
+入力情報 > nyuuryokujouhou\ ;
+量子力学 > ryoushirikigaku\ ;
+奪三振王 > datsusanshin''ou\ ;
+年末調整 > nenmatsuchousei\ ;
+学術論文 > gakujutsuronbun\ ;
+生物学者 > seibutsugakusha\ ;
+六百六号 > roppyakurokugou\ ;
+思弁哲学 > shibentetsugaku\ ;
+抗生物質 > kouseibusshitsu\ ;
+活動写真 > katsudoushashin\ ;
+両生動物 > ryouseidoubutsu\ ;
+精神薄弱 > seishinhakujaku\ ;
+強迫観念 > kyouhakukan''nen\ ;
+軍縮協定 > gunshukukyoutei\ ;
+着陸地帯 > chakurikuchitai\ ;
+炭塵爆発 > tanjinbakuhatsu\ ;
+生活環境 > seikatsukankyou\ ;
+技術革新 > gijutsukakushin\ ;
+粟粒結核 > zokuryuukekkaku\ ;
+仮受取証 > kariuketorishou\ ;
+新聞配達 > shinbunhaitatsu\ ;
+卒業論文 > sotsugyouronbun\ ;
+登録商標 > tourokushouhyou\ ;
+信用銘柄 > shin''youmeigara\ ;
+操浄瑠璃 > ayatsurijoururi\ ;
+共同生活 > kyoudouseikatsu\ ;
+伝達特性 > dentatsutokusei\ ;
+信仰生活 > shinkouseikatsu\ ;
+郷土小説 > kyoudoshousetsu\ ;
+集団生活 > shuudanseikatsu\ ;
+駐日大使 > chuunichitaishi\ ;
+島国根性 > shimagunikonjou\ ;
+左小括弧 > hidarishoukakko\ ;
+民族宗教 > minzokushuukyou\ ;
+日中韓越 > nitchuukan''etsu\ ;
+黒色火薬 > kokushokukayaku\ ;
+万有神教 > ban''yuushinkyou\ ;
+頭脳流出 > zunouryuushutsu\ ;
+直接話法 > chokusetsuwahou\ ;
+形質転換 > keishitsutenkan\ ;
+正真正銘 > shoushinshoumei\ ;
+爆弾発言 > bakudanhatsugen\ ;
+直立不動 > chokuritsufudou\ ;
+商業道徳 > shougyoudoutoku\ ;
+特設会場 > tokusetsukaijou\ ;
+核物理学 > kakubutsurigaku\ ;
+直立猿人 > chokuritsuenjin\ ;
+超連結子 > chourenketsushi\ ;
+甲論乙駁 > kouron''otsubaku\ ;
+物的資源 > butsutekishigen\ ;
+直接支援 > chokusetsushien\ ;
+新制中学 > shinseichuugaku\ ;
+圧力団体 > atsuryokudantai\ ;
+温血動物 > onketsudoubutsu\ ;
+中立労連 > chuuritsurouren\ ;
+研究活動 > kenkyuukatsudou\ ;
+自然哲学 > shizentetsugaku\ ;
+株主総会 > kabunushisoukai\ ;
+性格判別 > seikakuhanbetsu\ ;
+過失傷害 > kashitsushougai\ ;
+通信工学 > tsuushinkougaku\ ;
+同一人物 > douitsujinbutsu\ ;
+商学博士 > shougakuhakushi\ ;
+心頭滅却 > shintoumekkyaku\ ;
+七顛八倒 > shichitenbattou\ ;
+強行採決 > kyoukousaiketsu\ ;
+就任演説 > shuunin''enzetsu\ ;
+名論卓説 > meirontakusetsu\ ;
+注入教育 > chuunyuukyouiku\ ;
+向精神薬 > kouseishin''yaku\ ;
+分列行進 > bunretsukoushin\ ;
+食料品店 > shokuryouhinten\ ;
+潮汐摩擦 > chousekimasatsu\ ;
+節足動物 > sessokudoubutsu\ ;
+食物連鎖 > shokumotsurensa\ ;
+中肉中背 > chuunikuchuuzei\ ;
+集中攻撃 > shuuchuukougeki\ ;
+確定判決 > kakuteihanketsu\ ;
+少女小説 > shoujoshousetsu\ ;
+博学力行 > hakugakuryokkou\ ;
+傍系血族 > boukeiketsuzoku\ ;
+中間内閣 > chuukan''naikaku\ ;
+単独供給 > tandokukyoukyuu\ ;
+失業保険 > shitsugyouhoken\ ;
+特別会計 > tokubetsukaikei\ ;
+振幅変調 > shinpukuhenchou\ ;
+広告収入 > koukokushuunyuu\ ;
+中国大陸 > chuugokutairiku\ ;
+放出物資 > houshutsubusshi\ ;
+配達証明 > haitatsushoumei\ ;
+最終目的 > saishuumokuteki\ ;
+一蓮托生 > ichirentakushou\ ;
+三角測量 > sankakusokuryou\ ;
+動物学者 > doubutsugakusha\ ;
+化学物質 > kagakubusshitsu\ ;
+熱原子核 > netsugenshikaku\ ;
+地質調査 > chishitsuchousa\ ;
+歯列矯正 > shiretsukyousei\ ;
+四十七士 > shijuushichishi\ ;
+十月革命 > juugatsukakumei\ ;
+文質彬彬 > bunshitsuhinpin\ ;
+信託契約 > shintakukeiyaku\ ;
+独立戦争 > dokuritsusensou\ ;
+火力発電 > karyokuhatsuden\ ;
+速達郵便 > sokutatsuyuubin\ ;
+四百四病 > shihyakushibyou\ ;
+元帳残高 > motochouzandaka\ ;
+抽象美術 > chuushoubijutsu\ ;
+物質文明 > busshitsubunmei\ ;
+超物理学 > choubutsurigaku\ ;
+食糧不足 > shokuryoubusoku\ ;
+公共施設 > koukyoushisetsu\ ;
+南極条約 > nankyokujouyaku\ ;
+兵力削減 > heiryokusakugen\ ;
+公職追放 > koushokutsuihou\ ;
+学術団体 > gakujutsudantai\ ;
+共生生物 > kyouseiseibutsu\ ;
+被子植物 > hishishokubutsu\ ;
+有畜農業 > yuuchikunougyou\ ;
+寄生植物 > kiseishokubutsu\ ;
+武侠小説 > bukyoushousetsu\ ;
+木質繊維 > mokushitsusen''i\ ;
+直通列車 > chokutsuuressha\ ;
+一一九番 > hyakujuukyuuban\ ;
+転置行列 > tenchigyouretsu\ ;
+出動命令 > shutsudoumeirei\ ;
+舌先三寸 > shitasakisanzun\ ;
+大衆食堂 > taishuushokudou\ ;
+内閣閣僚 > naikakukakuryou\ ;
+人口爆発 > jinkoubakuhatsu\ ;
+圧縮効率 > asshukukouritsu\ ;
+国立銀行 > kokuritsuginkou\ ;
+一病息災 > ichibyousokusai\ ;
+正金取引 > shoukintorihiki\ ;
+流通革命 > ryuutsuukakumei\ ;
+芸術作品 > geijutsusakuhin\ ;
+新興宗教 > shinkoushuukyou\ ;
+知識工学 > chishikikougaku\ ;
+体質改善 > taishitsukaizen\ ;
+片側通行 > katagawatsuukou\ ;
+南極大陸 > nankyokutairiku\ ;
+艶笑小話 > enshoukobanashi\ ;
+商業美術 > shougyoubijutsu\ ;
+神色自若 > shinshokujijaku\ ;
+水際作戦 > mizugiwasakusen\ ;
+物的証拠 > butsutekishouko\ ;
+操業短縮 > sougyoutanshuku\ ;
+内股膏薬 > uchimatagouyaku\ ;
+色彩感覚 > shikisaikankaku\ ;
+超能力者 > chounouryokusha\ ;
+木食上人 > mokujikishounin\ ;
+連載小説 > rensaishousetsu\ ;
+焦熱地獄 > shounetsujigoku\ ;
+骨粗鬆症 > kotsusoshoushou\ ;
+流通証券 > ryuutsuushouken\ ;
+差引勘定 > sashihikikanjou\ ;
+開腹手術 > kaifukushujutsu\ ;
+即日出荷 > sokujitsushukka\ ;
+株式配当 > kabushikihaitou\ ;
+蛍光物質 > keikoubusshitsu\ ;
+聴覚神経 > choukakushinkei\ ;
+懲戒免職 > choukaimenshoku\ ;
+確定申告 > kakuteishinkoku\ ;
+職業軍人 > shokugyougunjin\ ;
+白河夜船 > shirakawayofune\ ;
+株式公開 > kabushikikoukai\ ;
+廃仏毀釈 > haibutsukishaku\ ;
+眼底出血 > ganteishukketsu\ ;
+信任投票 > shin''nintouhyou\ ;
+関連質問 > kanrenshitsumon\ ;
+建築業者 > kenchikugyousha\ ;
+哲学史要 > tetsugakushiyou\ ;
+知識産業 > chishikisangyou\ ;
+浚渫作業 > shunsetsusagyou\ ;
+卸売市場 > oroshiurishijou\ ;
+通信教育 > tsuushinkyouiku\ ;
+北斗七星 > hokutoshichisei\ ;
+正式発表 > seishikihappyou\ ;
+暴力革命 > bouryokukakumei\ ;
+共産中国 > kyousanchuugoku\ ;
+森林鉄道 > shinrintetsudou\ ;
+経済協力 > keizaikyouryoku\ ;
+物的損害 > butsutekisongai\ ;
+空中爆撃 > kuuchuubakugeki\ ;
+年中失言 > nenjuushitsugen\ ;
+正方行列 > seihougyouretsu\ ;
+老若男女 > rounyakunan''nyo\ ;
+修了証書 > shuuryoushousho\ ;
+下等植物 > katoushokubutsu\ ;
+顕花植物 > kenkashokubutsu\ ;
+地元警察 > jimotokeisatsu\ ;
+中国地方 > chuugokuchihou\ ;
+三校終了 > sankoushuuryou\ ;
+人工血液 > jinkouketsueki\ ;
+有性生殖 > yuuseiseishoku\ ;
+錬金術師 > renkinjutsushi\ ;
+対日感情 > tainichikanjou\ ;
+猥褻文書 > waisetsubunsho\ ;
+仮装行列 > kasougyouretsu\ ;
+正弦曲線 > seigenkyokusen\ ;
+没個性的 > botsukoseiteki\ ;
+独立運動 > dokuritsuundou\ ;
+脱脂粉乳 > dasshifun''nyuu\ ;
+原子力船 > genshiryokusen\ ;
+三球三振 > sankyuusanshin\ ;
+面白半分 > omoshirohanbun\ ;
+商船大学 > shousendaigaku\ ;
+天地万物 > tenchibanbutsu\ ;
+耐熱合金 > tainetsugoukin\ ;
+政略結婚 > seiryakukekkon\ ;
+特高警察 > tokkoukeisatsu\ ;
+商慣習法 > shoukanshuuhou\ ;
+昆虫採集 > konchuusaishuu\ ;
+中国拳法 > chuugokukenpou\ ;
+美術監督 > bijutsukantoku\ ;
+副大統領 > fukudaitouryou\ ;
+焦性硫酸 > shouseiryuusan\ ;
+周旋業者 > shuusengyousha\ ;
+南回帰線 > minamikaikisen\ ;
+胎生動物 > taiseidoubutsu\ ;
+全国中継 > zenkokuchuukei\ ;
+牛歩戦術 > gyuuhosenjutsu\ ;
+突撃隊員 > totsugekitaiin\ ;
+約百万円 > yakuhyakumanen\ ;
+人海戦術 > jinkaisenjutsu\ ;
+天文学的 > tenmongakuteki\ ;
+思案投首 > shian''nagekubi\ ;
+裏口営業 > uraguchieigyou\ ;
+伝奇小説 > denkishousetsu\ ;
+中立主義 > chuuritsushugi\ ;
+研究資料 > kenkyuushiryou\ ;
+古生物学 > koseibutsugaku\ ;
+更生施設 > kouseishisetsu\ ;
+片道切符 > katamichikippu\ ;
+接続助詞 > setsuzokujoshi\ ;
+英仏海峡 > eifutsukaikyou\ ;
+稔実不良 > nenjitsufuryou\ ;
+公衆浴場 > koushuuyokujou\ ;
+端末装置 > tanmatsusouchi\ ;
+駐車料金 > chuusharyoukin\ ;
+資本取引 > shihontorihiki\ ;
+株式相場 > kabushikisouba\ ;
+免疫反応 > men''ekihan''nou\ ;
+建設会社 > kensetsugaisha\ ;
+本末顛倒 > honmatsutentou\ ;
+初志貫徹 > shoshikantetsu\ ;
+産業革命 > sangyoukakumei\ ;
+定年退職 > teinentaishoku\ ;
+国際親善 > kokusaishinzen\ ;
+性格診断 > seikakushindan\ ;
+全身衰弱 > zenshinsuijaku\ ;
+問題解決 > mondaikaiketsu\ ;
+哺乳動物 > honyuudoubutsu\ ;
+資本注入 > shihonchuunyuu\ ;
+修業年限 > shuugyounengen\ ;
+緑綬褒章 > ryokujuhoushou\ ;
+研究題目 > kenkyuudaimoku\ ;
+病床日誌 > byoushounisshi\ ;
+算術計算 > sanjutsukeisan\ ;
+帰化植物 > kikashokubutsu\ ;
+金融恐慌 > kin''yuukyoukou\ ;
+特別措置 > tokubetsusochi\ ;
+弛張振動 > shichoushindou\ ;
+戦戦兢兢 > sensenkyoukyou\ ;
+観光施設 > kankoushisetsu\ ;
+善男善女 > zen''nanzen''nyo\ ;
+信用販売 > shin''youhanbai\ ;
+末梢神経 > masshoushinkei\ ;
+骨髄移植 > kotsuzuiishoku\ ;
+道徳教育 > doutokukyouiku\ ;
+金殿玉楼 > kindengyokurou\ ;
+点滴注射 > tentekichuusha\ ;
+工学修士 > kougakushuushi\ ;
+門外不出 > mongaifushutsu\ ;
+通信装置 > tsuushinsouchi\ ;
+作戦計画 > sakusenkeikaku\ ;
+場外取引 > jougaitorihiki\ ;
+信託銀行 > shintakuginkou\ ;
+境界調整 > kyoukaichousei\ ;
+主力艦隊 > shuryokukantai\ ;
+職場環境 > shokubakankyou\ ;
+割引価格 > waribikikakaku\ ;
+整形手術 > seikeishujutsu\ ;
+酸性食品 > sanseishokuhin\ ;
+原子力学 > genshirikigaku\ ;
+水中翼船 > suichuuyokusen\ ;
+発達段階 > hattatsudankai\ ;
+諸説紛紛 > shosetsufunpun\ ;
+乳酸飲料 > nyuusan''inryou\ ;
+個々別別 > kokobetsubetsu\ ;
+口不調法 > kuchibuchouhou\ ;
+超自然的 > choushizenteki\ ;
+国防長官 > kokubouchoukan\ ;
+正統信教 > seitoushinkyou\ ;
+強化合宿 > kyoukagasshuku\ ;
+朝鮮人参 > chousen''ninjin\ ;
+束縛変項 > sokubakuhenkou\ ;
+神経組織 > shinkeisoshiki\ ;
+超越関数 > chouetsukansuu\ ;
+効率向上 > kouritsukoujou\ ;
+大脳皮質 > dainouhishitsu\ ;
+生体力学 > seitairikigaku\ ;
+山下公園 > yamashitakouen\ ;
+口述試験 > koujutsushiken\ ;
+一日片時 > ichinichihenji\ ;
+社会生活 > shakaiseikatsu\ ;
+出版目録 > shupanmokuroku\ ;
+別途支出 > bettoshishutsu\ ;
+申告納税 > shinkokunouzei\ ;
+即決裁判 > sokketsusaiban\ ;
+独立自尊 > dokuritsujison\ ;
+婚約指輪 > kon''yakuyubiwa\ ;
+血液凝固 > ketsuekigyouko\ ;
+出処進退 > shusshoshintai\ ;
+弓矢八幡 > yumiyahachiman\ ;
+警察手帳 > keisatsutechou\ ;
+職業婦人 > shokugyoufujin\ ;
+至福千年 > shifukusen''nen\ ;
+天地開闢 > tenchikaibyaku\ ;
+冷凍食品 > reitoushokuhin\ ;
+補足説明 > hosokusetsumei\ ;
+信用状態 > shin''youjoutai\ ;
+絶対湿度 > zettaishitsudo\ ;
+明明白白 > meimeihakuhaku\ ;
+軍備縮小 > gunbishukushou\ ;
+暴力団員 > bouryokudan''in\ ;
+大学教育 > daigakukyouiku\ ;
+第三人称 > daisan''ninshou\ ;
+永世中立 > eiseichuuritsu\ ;
+研究領域 > kenkyuuryouiki\ ;
+教育勅語 > kyouikuchokugo\ ;
+精神障害 > seishinshougai\ ;
+天空海濶 > tenkuukaikatsu\ ;
+食餌療法 > shokujiryouhou\ ;
+作者不知 > sakushashirazu\ ;
+生活水準 > seikatsusuijun\ ;
+卵生動物 > ranseidoubutsu\ ;
+筋肉労働 > kin''nikuroudou\ ;
+南支那海 > minamishinakai\ ;
+学術用語 > gakujutsuyougo\ ;
+自然食品 > shizenshokuhin\ ;
+商業組合 > shougyoukumiai\ ;
+職権乱用 > shokkenran''you\ ;
+伴食大臣 > banshokudaijin\ ;
+岡目八目 > okamehachimoku\ ;
+斬新奇抜 > zanshinkibatsu\ ;
+直情径行 > chokujoukeikou\ ;
+私立学校 > shiritsugakkou\ ;
+中日辞典 > chuunichijiten\ ;
+分類目録 > bunruimokuroku\ ;
+内分泌腺 > naibunpitsusen\ ;
+活路開拓 > katsurokaitaku\ ;
+平板測量 > heibansokuryou\ ;
+源泉徴収 > gensenchoushuu\ ;
+通信衛星 > tsuushin''eisei\ ;
+清算取引 > seisantorihiki\ ;
+特殊学級 > tokushugakkyuu\ ;
+信用調査 > shin''youchousa\ ;
+先物売買 > sakimonobaibai\ ;
+七難八苦 > shichinanhakku\ ;
+角膜移植 > kakumakuishoku\ ;
+救急病院 > kyuukyuubyouin\ ;
+接触感染 > sesshokukansen\ ;
+税金申告 > zeikinshinkoku\ ;
+絨毯爆撃 > juutanbakugeki\ ;
+七転八起 > shichitenhakki\ ;
+水銀中毒 > suiginchuudoku\ ;
+露出不足 > roshutsubusoku\ ;
+平上去入 > hyoujoukyonyuu\ ;
+国立公園 > kokuritsukouen\ ;
+公立学校 > kouritsugakkou\ ;
+通信圏外 > tsuushinkengai\ ;
+約束手形 > yakusokutegata\ ;
+召集令状 > shoushuureijou\ ;
+新入社員 > shin''nyuushain\ ;
+日南海岸 > nichinankaigan\ ;
+汎整数式 > hanseisuushiki\ ;
+古物商人 > kobutsushounin\ ;
+武力干渉 > buryokukanshou\ ;
+公衆道徳 > koushuudoutoku\ ;
+怪奇小説 > kaikishousetsu\ ;
+秘密投票 > himitsutouhyou\ ;
+圧力容器 > atsuryokuyouki\ ;
+傍目八目 > okamehachimoku\ ;
+求婚広告 > kyuukonkoukoku\ ;
+心因反応 > shin''inhan''nou\ ;
+麦藁帽子 > mugiwaraboushi\ ;
+納税申告 > nouzeishinkoku\ ;
+反対称的 > hantaishouteki\ ;
+住友銀行 > sumitomoginkou\ ;
+出所進退 > shusshoshintai\ ;
+就業人口 > shuugyoujinkou\ ;
+全勝優勝 > zenshouyuushou\ ;
+建設大臣 > kensetsudaijin\ ;
+非良心的 > hiryoushinteki\ ;
+絶対必要 > zettaihitsuyou\ ;
+蛸足配線 > takoashihaisen\ ;
+工業大学 > kougyoudaigaku\ ;
+金壱万円 > kin''ichiman''en\ ;
+旅客列車 > ryokyakuressha\ ;
+立会演説 > tachiaienzetsu\ ;
+奨学資金 > shougakushikin\ ;
+現金収入 > genkinshuunyuu\ ;
+学術会議 > gakujutsukaigi\ ;
+法律問題 > houritsumondai\ ;
+直通電話 > chokutsuudenwa\ ;
+台所道具 > daidokorodougu\ ;
+電源供給 > dengenkyoukyuu\ ;
+停年退職 > teinentaishoku\ ;
+水陸両用 > suirikuryouyou\ ;
+通信手段 > tsuushinshudan\ ;
+下請会社 > shitaukegaisha\ ;
+第一人称 > daiichininshou\ ;
+学歴社会 > gakurekishakai\ ;
+演奏曲目 > ensoukyokumoku\ ;
+思想警察 > shisoukeisatsu\ ;
+公益質屋 > kouekishichiya\ ;
+偕老同穴 > kairoudouketsu\ ;
+健康食品 > kenkoushokuhin\ ;
+抽象名詞 > chuushoumeishi\ ;
+小乗仏教 > shoujoubukkyou\ ;
+合目的性 > goumokutekisei\ ;
+電力会社 > denryokugaisha\ ;
+海洋開発 > kaiyoukaihatsu\ ;
+細胞分裂 > saiboubunretsu\ ;
+急行料金 > kyuukouryoukin\ ;
+丁丁発止 > chouchouhasshi\ ;
+教職課程 > kyoushokukatei\ ;
+出版業者 > shuppangyousha\ ;
+就職運動 > shuushokuundou\ ;
+略奪行為 > ryakudatsukoui\ ;
+理非曲直 > rihikyokuchoku\ ;
+別冊付録 > bessatsufuroku\ ;
+三権分立 > sankenbunritsu\ ;
+共同研究 > kyoudoukenkyuu\ ;
+新刊紹介 > shinkanshoukai\ ;
+棟割長屋 > munewarinagaya\ ;
+修好条約 > shuukoujouyaku\ ;
+冠状動脈 > kanjoudoumyaku\ ;
+空空漠漠 > kuukuubakubaku\ ;
+悪性貧血 > akuseihinketsu\ ;
+休戦協定 > kyuusenkyoutei\ ;
+神経衰弱 > shinkeisuijaku\ ;
+回折格子 > kaisetsukoushi\ ;
+先決問題 > senketsumondai\ ;
+就業日数 > shuugyounissuu\ ;
+実験動物 > jikkendoubutsu\ ;
+忠君愛国 > chuukun''aikoku\ ;
+求人広告 > kyuujinkoukoku\ ;
+独立独歩 > dokuritsudoppo\ ;
+諸説紛々 > shosetsufunpun\ ;
+有害食品 > yuugaishokuhin\ ;
+麻薬中毒 > mayakuchuudoku\ ;
+金属工業 > kinzokukougyou\ ;
+卸売物価 > oroshiuribukka\ ;
+共同出資 > kyoudoushusshi\ ;
+狭軌鉄道 > kyoukitetsudou\ ;
+商業手形 > shougyoutegata\ ;
+郵便配達 > yuubinhaitatsu\ ;
+港湾当局 > kouwantoukyoku\ ;
+商業銀行 > shougyouginkou\ ;
+省略記号 > shouryakukigou\ ;
+中間報告 > chuukanhoukoku\ ;
+中心思想 > chuushinshisou\ ;
+五月人形 > gogatsuningyou\ ;
+伝承文学 > denshoubungaku\ ;
+軟体動物 > nantaidoubutsu\ ;
+強制収容 > kyouseishuuyou\ ;
+一陽来腹 > ichiyouraifuku\ ;
+漁業協定 > gyogyoukyoutei\ ;
+水生動物 > suiseidoubutsu\ ;
+楔形文字 > kusabigatamoji\ ;
+信用組合 > shin''youkumiai\ ;
+研究報告 > kenkyuuhoukoku\ ;
+水天彷彿 > suitenhoufutsu\ ;
+住宅産業 > juutakusangyou\ ;
+泡沫会社 > houmatsugaisha\ ;
+談論風発 > danronfuuhatsu\ ;
+先発投手 > senpatsutoushu\ ;
+推理小説 > suirishousetsu\ ;
+紳士協定 > shinshikyoutei\ ;
+大名屋敷 > daimyouyashiki\ ;
+特異体質 > tokuitaishitsu\ ;
+中間搾取 > chuukansakushu\ ;
+協調作業 > kyouchousagyou\ ;
+指圧療法 > shiatsuryouhou\ ;
+工業技術 > kougyougijutsu\ ;
+総合芸術 > sougougeijutsu\ ;
+中産階級 > chuusankaikyuu\ ;
+南十字星 > minamijuujisei\ ;
+心霊手術 > shinreitejutsu\ ;
+成長産業 > seichousangyou\ ;
+国際収支 > kokusaishuushi\ ;
+厚生施設 > kouseishisetsu\ ;
+上陸作戦 > jourikusakusen\ ;
+動力資源 > douryokushigen\ ;
+必要条件 > hitsuyoujouken\ ;
+中流意識 > chuuryuuishiki\ ;
+出漁区域 > shutsugyokuiki\ ;
+財形貯蓄 > zaikeichochiku\ ;
+職人気質 > shokuninkatagi\ ;
+単位行列 > tan''igyouretsu\ ;
+国連憲章 > kokurenkenshou\ ;
+水先案内 > mizusakian''nai\ ;
+収容設備 > shuuyousetsubi\ ;
+深海漁業 > shinkaigyogyou\ ;
+直往邁進 > chokuoumaishin\ ;
+天体力学 > tentairikigaku\ ;
+真空電球 > shinkuudenkyuu\ ;
+上層建築 > jousoukenchiku\ ;
+役職手当 > yakushokuteate\ ;
+高圧電流 > kouatsudenryuu\ ;
+交通道徳 > koutsuudoutoku\ ;
+水準測量 > suijunsokuryou\ ;
+弁証法的 > benshouhouteki\ ;
+松茸御飯 > matsutakegohan\ ;
+関税障壁 > kanzeishouheki\ ;
+統括部長 > toukatsubuchou\ ;
+損失補填 > sonshitsuhoten\ ;
+事事物物 > jijibutsubutsu\ ;
+戦々恐々 > sensenkyoukyou\ ;
+連続写真 > renzokushashin\ ;
+四百余州 > shihyakuyoshuu\ ;
+一陽来復 > ichiyouraifuku\ ;
+心筋梗塞 > shinkinkousoku\ ;
+宗教裁判 > shuukyousaiban\ ;
+写真石版 > shashinsekiban\ ;
+隠花植物 > inkashokubutsu\ ;
+微生物学 > biseibutsugaku\ ;
+戦略空軍 > senryakukuugun\ ;
+恭賀新年 > kyougashin''nen\ ;
+国際協定 > kokusaikyoutei\ ;
+色即是空 > shikisokuzekuu\ ;
+頭寒足熱 > zukansokunetsu\ ;
+区検察庁 > kukensatsuchou\ ;
+核防衛力 > kakuboueiryoku\ ;
+完全燃焼 > kanzen''nenshou\ ;
+重量感覚 > juuryoukankaku\ ;
+雌雄鑑別 > shiyuukanbetsu\ ;
+原生動物 > genseidoubutsu\ ;
+目的意識 > mokutekiishiki\ ;
+海生動物 > kaiseidoubutsu\ ;
+攻撃精神 > kougekiseishin\ ;
+作成技術 > sakuseigijutsu\ ;
+金銭信託 > kinsenshintaku\ ;
+吸収合併 > kyuushuugappei\ ;
+換骨奪胎 > kankotsudattai\ ;
+硬質陶器 > koushitsutouki\ ;
+寝台料金 > shindairyoukin\ ;
+購入注文 > kounyuuchuumon\ ;
+焦土戦術 > shoudosenjutsu\ ;
+有職故実 > yuusokukojitsu\ ;
+無償信託 > mushoushintaku\ ;
+消費生活 > shouhiseikatsu\ ;
+室内遊戯 > shitsunaiyuugi\ ;
+宗教団体 > shuukyoudantai\ ;
+進行状況 > shinkoujoukyou\ ;
+高等動物 > koutoudoubutsu\ ;
+一膳飯屋 > ichizenmeshiya\ ;
+時代小説 > jidaishousetsu\ ;
+曲線座標 > kyokusenzahyou\ ;
+当該人物 > tougaijinbutsu\ ;
+要求送信 > youkyuusoushin\ ;
+百人一首 > hyakunin''isshu\ ;
+集団検診 > shuudankenshin\ ;
+安寧秩序 > an''neichitsujo\ ;
+極楽鳥花 > gokurakuchouka\ ;
+中越紛争 > chuuetsufunsou\ ;
+一括購入 > ikkatsukounyuu\ ;
+民族自決 > minzokujiketsu\ ;
+正面攻撃 > shoumenkougeki\ ;
+教育産業 > kyouikusangyou\ ;
+空調設備 > kuuchousetsubi\ ;
+単独内閣 > tandokunaikaku\ ;
+教育実習 > kyouikujisshuu\ ;
+就業規則 > shuugyoukisoku\ ;
+教養番組 > kyouyoubangumi\ ;
+凍結資産 > touketsushisan\ ;
+集団農場 > shuudan''noujou\ ;
+周辺諸国 > shuuhenshokoku\ ;
+国籍条項 > kokusekijoukou\ ;
+現物給与 > genbutsukyuuyo\ ;
+豪雪地帯 > gousetsuchitai\ ;
+海千山千 > umisen''yamasen\ ;
+革新政党 > kakushinseitou\ ;
+少数民族 > shousuuminzoku\ ;
+労働協約 > roudoukyouyaku\ ;
+電撃作戦 > dengekisakusen\ ;
+七顛八起 > shichitenhakki\ ;
+脊髄神経 > sekizuishinkei\ ;
+美術大学 > bijutsudaigaku\ ;
+選択項目 > sentakukoumoku\ ;
+間接選挙 > kansetsusenkyo\ ;
+貝殻追放 > kaigaratsuihou\ ;
+群発地震 > gunpatsujishin\ ;
+緊褌一番 > kinkon''ichiban\ ;
+独身貴族 > dokushinkizoku\ ;
+科学知識 > kagakuchishiki\ ;
+石部金吉 > ishibekinkichi\ ;
+花鳥風月 > kachoufuugetsu\ ;
+提出期限 > teishutsukigen\ ;
+天長地久 > tenchouchikyuu\ ;
+百万長者 > hyakumanchouja\ ;
+対症療法 > taishouryouhou\ ;
+中枢神経 > chuusuushinkei\ ;
+商工業者 > shoukougyousha\ ;
+開票速報 > kaihyousokuhou\ ;
+性的衝動 > seitekishoudou\ ;
+特殊撮影 > tokushusatsuei\ ;
+輸出手形 > yushutsutegata\ ;
+史料館学 > shiryoukangaku\ ;
+空中楼閣 > kuuchuuroukaku\ ;
+少年文学 > shounenbungaku\ ;
+調整攻撃 > chouseikougeki\ ;
+精神年齢 > seishin''nenrei\ ;
+居中調停 > kyochuuchoutei\ ;
+税別価格 > zeibetsukakaku\ ;
+軍人生活 > gunjinseikatsu\ ;
+皇宮警察 > kouguukeisatsu\ ;
+粒々辛苦 > ryuuryuushinku\ ;
+東京大学 > toukyoudaigaku\ ;
+興味津津 > kyoumishinshin\ ;
+千客万来 > senkyakubanrai\ ;
+選抜試験 > senbatsushiken\ ;
+航路標識 > kourohyoushiki\ ;
+緊急発進 > kinkyuuhasshin\ ;
+空中写真 > kuuchuushashin\ ;
+営業活動 > eigyoukatsudou\ ;
+救援活動 > kyuuenkatsudou\ ;
+天然硝子 > ten''nenshoushi\ ;
+信託資金 > shintakushikin\ ;
+市民生活 > shiminseikatsu\ ;
+絶対権力 > zettaikenryoku\ ;
+周章狼狽 > shuushouroubai\ ;
+民族学者 > minzokugakusha\ ;
+膠着状態 > kouchakujoutai\ ;
+面接試験 > mensetsushiken\ ;
+政策協定 > seisakukyoutei\ ;
+販売戦略 > hanbaisenryaku\ ;
+公設市場 > kousetsuichiba\ ;
+人物経済 > jinbutsukeizai\ ;
+心的状態 > shintekijoutai\ ;
+丘陵地帯 > kyuuryouchitai\ ;
+生涯教育 > shougaikyouiku\ ;
+旧約全書 > kyuuyakuzensho\ ;
+大根役者 > daikon''yakusha\ ;
+万年新造 > man''nenshinzou\ ;
+座骨神経 > zakotsushinkei\ ;
+長老教会 > chouroukyoukai\ ;
+貯蓄債券 > chochikusaiken\ ;
+武力介入 > buryokukainyuu\ ;
+精密科学 > seimitsukagaku\ ;
+私鉄総連 > shitetsusouren\ ;
+伝送終了 > densoushuuryou\ ;
+薫蒸消毒 > kunjoushoudoku\ ;
+麦稈帽子 > mugiwaraboushi\ ;
+法律相談 > houritsusoudan\ ;
+地域開発 > chiikikaihatsu\ ;
+国内産業 > kokunaisangyou\ ;
+一打逆転 > ichidagyakuten\ ;
+水生生物 > suiseiseibutsu\ ;
+有線通信 > yuusentsuushin\ ;
+起承転結 > kishoutenketsu\ ;
+物質主義 > busshitsushugi\ ;
+信託会社 > shintakugaisha\ ;
+中間商人 > chuukanshounin\ ;
+静電容量 > seiden''youryou\ ;
+中流社会 > chuuryuushakai\ ;
+私立探偵 > shiritsutantei\ ;
+国民投票 > kokumintouhyou\ ;
+有罪判決 > yuuzaihanketsu\ ;
+強化食品 > kyoukashokuhin\ ;
+伸縮自在 > shinshukujizai\ ;
+陸軍大学 > rikugundaigaku\ ;
+通信速度 > tsuushinsokudo\ ;
+黒金剛石 > kurokongouseki\ ;
+中国人街 > chuugokujingai\ ;
+学芸大学 > gakugeidaigaku\ ;
+大河小説 > taigashousetsu\ ;
+鉄道会社 > tetsudougaisha\ ;
+音楽形式 > ongakukeishiki\ ;
+性格分析 > seikakubunseki\ ;
+現金書留 > genkinkakitome\ ;
+休戦条約 > kyuusenjouyaku\ ;
+二足動物 > nisokudoubutsu\ ;
+心理学的 > shinrigakuteki\ ;
+侃々諤諤 > kankangakugaku\ ;
+直線運動 > chokusen''undou\ ;
+悪徳新聞 > akutokushinbun\ ;
+未決拘留 > miketsukouryuu\ ;
+定量分析 > teiryoubunseki\ ;
+紙屑同然 > kamikuzudouzen\ ;
+温室栽培 > onshitsusaibai\ ;
+針小棒大 > shinshouboudai\ ;
+太刀二腰 > tachifutakoshi\ ;
+認識不足 > ninshikibusoku\ ;
+団体協約 > dantaikyouyaku\ ;
+戦々兢々 > sensenkyoukyou\ ;
+信頼回復 > shinraikaifuku\ ;
+修学旅行 > shuugakuryokou\ ;
+電源開発 > dengenkaihatsu\ ;
+模式標本 > moshikihyouhon\ ;
+追跡調査 > tsuisekichousa\ ;
+割引手形 > waribikitegata\ ;
+直流回路 > chokuryuukairo\ ;
+興行成績 > kougyouseiseki\ ;
+北洋漁業 > hokuyougyogyou\ ;
+国文学史 > kokubungakushi\ ;
+永久脱毛 > eikyuudatsumou\ ;
+排出基準 > haishutsukijun\ ;
+組職改革 > soshokukaikaku\ ;
+過失致死 > kashitsuchishi\ ;
+交通信号 > koutsuushingou\ ;
+動物実験 > doubutsujikken\ ;
+水上警察 > suijoukeisatsu\ ;
+労作教育 > rousakukyouiku\ ;
+核廃棄物 > kakuhaikibutsu\ ;
+鎮魂曲歌 > chinkonkyokuka\ ;
+非鉄金属 > hitetsukinzoku\ ;
+三百代言 > sanbyakudaigen\ ;
+中国伝来 > chuugokudenrai\ ;
+筋無力症 > kinmuryokushou\ ;
+流通資本 > ryuutsuushihon\ ;
+空即是色 > kuusokuzeshiki\ ;
+教育改革 > kyouikukaikaku\ ;
+切開手術 > sekkaishujutsu\ ;
+救護活動 > kyuugokatsudou\ ;
+宣伝活動 > sendenkatsudou\ ;
+財産目録 > zaisanmokuroku\ ;
+正常終了 > seijoushuuryou\ ;
+亡命生活 > boumeiseikatsu\ ;
+優越複合 > yuuetsufukugou\ ;
+純日本式 > jun''nihonshiki\ ;
+手形割引 > tegatawaribiki\ ;
+動物崇拝 > doubutsusuuhai\ ;
+共同住宅 > kyoudoujuutaku\ ;
+有袋動物 > yuutaidoubutsu\ ;
+袋小路文 > fukurokoujibun\ ;
+白砂青松 > hakushaseishou\ ;
+花嫁御寮 > hanayomegoryou\ ;
+新陳代謝 > shinchintaisha\ ;
+一六銀行 > ichirokuginkou\ ;
+就職斡旋 > shuushokuassen\ ;
+鞭毛虫症 > benmouchuushou\ ;
+絶体絶命 > zettaizetsumei\ ;
+精神分析 > seishinbunseki\ ;
+系列会社 > keiretsugaisha\ ;
+分子間力 > bunshikanryoku\ ;
+企業戦略 > kigyousenryaku\ ;
+国民所得 > kokuminshotoku\ ;
+輸出制限 > yushutsuseigen\ ;
+特定銘柄 > tokuteimeigara\ ;
+財務体質 > zaimutaishitsu\ ;
+警察学校 > keisatsugakkou\ ;
+不法侵入 > fuhoushin''nyuu\ ;
+生活設計 > seikatsusekkei\ ;
+軽薄短小 > keihakutanshou\ ;
+算術平均 > sanjutsuheikin\ ;
+即席料理 > sokusekiryouri\ ;
+物理療法 > butsuriryouhou\ ;
+青酸中毒 > seisanchuudoku\ ;
+宗教法人 > shuukyouhoujin\ ;
+写真植字 > shashinshokuji\ ;
+緊縮財政 > kinshukuzaisei\ ;
+単性生殖 > tanseiseishoku\ ;
+高等生物 > koutouseibutsu\ ;
+興味津々 > kyoumishinshin\ ;
+保証牛乳 > hoshougyuunyuu\ ;
+受胎調節 > jutaichousetsu\ ;
+透析療法 > tousekiryouhou\ ;
+感覚神経 > kankakushinkei\ ;
+専門知識 > senmonchishiki\ ;
+軍拡競争 > gunkakukyousou\ ;
+登場人物 > toujoujinbutsu\ ;
+非現実的 > higenjitsuteki\ ;
+逆性石鹸 > gyakuseisekken\ ;
+幽門狭窄 > yuumonkyousaku\ ;
+連邦当局 > renpoutoukyoku\ ;
+直射日光 > chokushanikkou\ ;
+先任将校 > sen''ninshoukou\ ;
+謹厳実直 > kingenjitchoku\ ;
+店頭取引 > tentoutorihiki\ ;
+発売禁止 > hatsubaikinshi\ ;
+品質管理 > hinshitsukanri\ ;
+編入試験 > hen''nyuushiken\ ;
+伝達関数 > dentatsukansuu\ ;
+尽忠報国 > jinchuuhoukoku\ ;
+労使協調 > roushikyouchou\ ;
+百色眼鏡 > hyakuiromegane\ ;
+中性子束 > chuuseishisoku\ ;
+緊急対策 > kinkyuutaisaku\ ;
+印刷技術 > insatsugijutsu\ ;
+心的表示 > shintekihyouji\ ;
+名所旧跡 > meishokyuuseki\ ;
+投資信託 > toushishintaku\ ;
+新韓国党 > shinkankokutou\ ;
+国際条約 > kokusaijouyaku\ ;
+七堂伽藍 > shichidougaran\ ;
+親族関係 > shinzokukankei\ ;
+傘形碍子 > kasagatagaishi\ ;
+悪漢小説 > akkanshousetsu\ ;
+公敵一号 > koutekiichigou\ ;
+水質汚濁 > suishitsuodaku\ ;
+精神療法 > seishinryouhou\ ;
+茫然自失 > bouzenjishitsu\ ;
+地質時代 > chishitsujidai\ ;
+立入禁止 > tachiirikinshi\ ;
+大同団結 > daidoudanketsu\ ;
+貯金通帳 > chokintsuuchou\ ;
+斎戒沐浴 > saikaimokuyoku\ ;
+新制大学 > shinseidaigaku\ ;
+共同責任 > kyoudousekinin\ ;
+新聞発表 > shinbunhappyou\ ;
+車内改札 > shanaikaisatsu\ ;
+昆虫学者 > konchuugakusha\ ;
+退職年金 > taishokunenkin\ ;
+分割統治 > bunkatsutouchi\ ;
+確率過程 > kakuritsukatei\ ;
+研究発表 > kenkyuuhappyou\ ;
+旧約聖書 > kyuuyakuseisho\ ;
+蒲鉾兵舎 > kamabokoheisha\ ;
+経費節約 > keihisetsuyaku\ ;
+筋萎縮症 > kin''ishukushou\ ;
+優生手術 > yuuseishujutsu\ ;
+公共料金 > koukyouryoukin\ ;
+強制中断 > kyouseichuudan\ ;
+万有引力 > ban''yuuinryoku\ ;
+立太子式 > rittaishishiki\ ;
+日内周期 > nichinaishuuki\ ;
+憲法解釈 > kenpoukaishaku\ ;
+美的生活 > bitekiseikatsu\ ;
+団体割引 > dantaiwaribiki\ ;
+国際交流 > kokusaikouryuu\ ;
+冠状静脈 > kanjoujoumyaku\ ;
+逆三角形 > gyakusankakkei\ ;
+市立学校 > shiritsugakkou\ ;
+複雑怪奇 > fukuzatsukaiki\ ;
+高層建築 > kousougenchiku\ ;
+真珠養殖 > shinjuyoushoku\ ;
+申告用紙 > shinkokuyoushi\ ;
+局地戦争 > kyokuchisensou\ ;
+重要人物 > juuyoujinbutsu\ ;
+活版印刷 > kappan''insatsu\ ;
+連日連夜 > renjitsuren''ya\ ;
+三者対立 > sanshatairitsu\ ;
+求妻広告 > kyuusaikoukoku\ ;
+狂言自殺 > kyougenjisatsu\ ;
+性染色体 > seisenshokutai\ ;
+凸版印刷 > toppan''insatsu\ ;
+刺身包丁 > sashimibouchou\ ;
+日米貿易 > nichibeiboueki\ ;
+軍事協力 > gunjikyouryoku\ ;
+極限状態 > kyokugenjoutai\ ;
+物理現象 > butsurigenshou\ ;
+人身攻撃 > jinshinkougeki\ ;
+記憶喪失 > kiokusoushitsu\ ;
+社会秩序 > shakaichitsujo\ ;
+侃侃諤諤 > kankangakugaku\ ;
+減価償却 > genkashoukyaku\ ;
+空中査察 > kuuchuusasatsu\ ;
+素人芝居 > shiroutoshibai\ ;
+一六勝負 > ichirokushoubu\ ;
+交響楽団 > koukyougakudan\ ;
+血液銀行 > ketsuekiginkou\ ;
+商品在高 > shouhinzaidaka\ ;
+物理学者 > butsurigakusha\ ;
+年百年中 > nenbyakunenjuu\ ;
+枝葉末節 > shiyoumassetsu\ ;
+軍隊生活 > guntaiseikatsu\ ;
+比較的小 > hikakutekishou\ ;
+潜在能力 > senzainouryoku\ ;
+工学博士 > kougakuhakushi\ ;
+有償契約 > yuushoukeiyaku\ ;
+新聞広告 > shinbunkoukoku\ ;
+上級曹長 > joukyuusouchou\ ;
+乱診乱療 > ranshinranryou\ ;
+集合住宅 > shuugoujuutaku\ ;
+御食事処 > oshokujidokoro\ ;
+養殖真珠 > youshokushinju\ ;
+内部告発 > naibukokuhatsu\ ;
+名目賃金 > meimokuchingin\ ;
+相対湿度 > soutaishitsudo\ ;
+本末転倒 > honmatsutentou\ ;
+学校生活 > gakkouseikatsu\ ;
+入国査証 > nyuukokusashou\ ;
+自律神経 > jiritsushinkei\ ;
+姉様人形 > anesamaningyou\ ;
+戦戦恐恐 > sensenkyoukyou\ ;
+衝撃関数 > shougekikansuu\ ;
+巧言令色 > kougenreishoku\ ;
+変温動物 > hen''ondoubutsu\ ;
+原始動物 > genshidoubutsu\ ;
+空間芸術 > kuukangeijutsu\ ;
+侃々諤々 > kankangakugaku\ ;
+開店休業 > kaitenkyuugyou\ ;
+娯楽施設 > gorakushisetsu\ ;
+半永久的 > han''eikyuuteki\ ;
+食糧事情 > shokuryoujijou\ ;
+可逆反応 > kagyakuhan''nou\ ;
+特別会員 > tokubetsukaiin\ ;
+死活問題 > shikatsumondai\ ;
+系統神学 > keitoushingaku\ ;
+軟骨魚類 > nankotsugyorui\ ;
+各人各様 > kakujinkakuyou\ ;
+通信事業 > tsuushinjigyou\ ;
+貿易障壁 > bouekishouheki\ ;
+単一通貨 > tan''itsutsuuka\ ;
+千両役者 > senryouyakusha\ ;
+到着時刻 > touchakujikoku\ ;
+概算要求 > gaisan''youkyuu\ ;
+国民年金 > kokumin''nenkin\ ;
+泥水稼業 > doromizukagyou\ ;
+在日米軍 > zainichibeigun\ ;
+越境入学 > ekkyounyuugaku\ ;
+数理哲学 > suuritetsugaku\ ;
+唯物史観 > yuibutsushikan\ ;
+商業学校 > shougyougakkou\ ;
+左大括弧 > hidaridaikakko\ ;
+民族精神 > minzokuseishin\ ;
+実力行為 > jitsuryokukoui\ ;
+海綿動物 > kaimendoubutsu\ ;
+米軍兵力 > beigunheiryoku\ ;
+就学年齢 > shuugakunenrei\ ;
+鉱物資源 > koubutsushigen\ ;
+軟式野球 > nanshikiyakyuu\ ;
+信託統治 > shintakutouchi\ ;
+経済活動 > keizaikatsudou\ ;
+兵式体操 > heishikitaisou\ ;
+生殖細胞 > seishokusaibou\ ;
+地形測量 > chikeisokuryou\ ;
+商業資本 > shougyoushihon\ ;
+数値目標 > suuchimokuhyou\ ;
+一得一失 > ittokuisshitsu\ ;
+通信販売 > tsuushinhanbai\ ;
+強制執行 > kyouseishikkou\ ;
+幻覚症状 > genkakushoujou\ ;
+北陸地方 > hokurikuchihou\ ;
+割引発行 > waribikihakkou\ ;
+広報活動 > kouhoukatsudou\ ;
+山高帽子 > yamatakaboushi\ ;
+染色工場 > senshokukoujou\ ;
+公式訪問 > koushikihoumon\ ;
+総合開発 > sougoukaihatsu\ ;
+連立政権 > renritsuseiken\ ;
+差別表現 > sabetsuhyougen\ ;
+権力闘争 > kenryokutousou\ ;
+製品戦略 > seihinsenryaku\ ;
+分水山脈 > bunsuisanmyaku\ ;
+誘電正接 > yuudenseisetsu\ ;
+知覚神経 > chikakushinkei\ ;
+逐条審議 > chikujoushingi\ ;
+千島列島 > chishimarettou\ ;
+輸出超過 > yushutsuchouka\ ;
+尊王討幕 > son''noutoubaku\ ;
+情報通信 > jouhoutsuushin\ ;
+超越交代 > chouetsukoutai\ ;
+生活空間 > seikatsukuukan\ ;
+前立腺炎 > zenritsusen''en\ ;
+行政改革 > gyouseikaikaku\ ;
+律令国家 > ritsuryoukokka\ ;
+心霊現象 > shinreigenshou\ ;
+生誕百年 > seitanhyakunen\ ;
+自動着信 > jidouchakushin\ ;
+第三勢力 > daisanseiryoku\ ;
+書留郵便 > kakitomeyuubin\ ;
+知識体系 > chishikitaikei\ ;
+集合記述 > shuugoukijutsu\ ;
+三百諸侯 > sanbyakushokou\ ;
+大衆文学 > taishuubungaku\ ;
+中等教育 > chuutoukyouiku\ ;
+教育行政 > kyouikugyousei\ ;
+武装中立 > busouchuuritsu\ ;
+平和協力 > heiwakyouryoku\ ;
+電鉄会社 > dentetsugaisha\ ;
+出席日数 > shussekinissuu\ ;
+県立病院 > kenritsubyouin\ ;
+粒粒辛苦 > ryuuryuushinku\ ;
+偏旁冠脚 > henboukankyaku\ ;
+販売促進 > hanbaisokushin\ ;
+信託投資 > shintakutoushi\ ;
+中小企業 > chuushoukigyou\ ;
+三行広告 > sangyoukoukoku\ ;
+血液循環 > ketsuekijunkan\ ;
+連結決算 > renketsukessan\ ;
+骨軟化症 > kotsunankashou\ ;
+政治哲学 > seijitetsugaku\ ;
+商業放送 > shougyouhousou\ ;
+国防総省 > kokubousoushou\ ;
+生活指導 > seikatsushidou\ ;
+炎熱地獄 > en''netsujigoku\ ;
+八面玲瓏 > hachimenreirou\ ;
+面会謝絶 > menkaishazetsu\ ;
+道路標識 > dourohyoushiki\ ;
+国営通信 > kokueitsuushin\ ;
+適材適所 > tekizaitekisho\ ;
+劇症肝炎 > gekishoukan''en\ ;
+物情騒然 > butsujousouzen\ ;
+公民生活 > kouminseikatsu\ ;
+入学試験 > nyuugakushiken\ ;
+絶対絶命 > zettaizetsumei\ ;
+事々物々 > jijibutsubutsu\ ;
+個個別別 > kokobetsubetsu\ ;
+合唱隊長 > gasshoutaichou\ ;
+乾燥牛乳 > kansougyuunyuu\ ;
+直系尊属 > chokkeisonzoku\ ;
+入学願書 > nyuugakugansho\ ;
+出発時間 > shuppatsujikan\ ;
+主要人物 > shuyoujinbutsu\ ;
+文学作品 > bungakusakuhin\ ;
+軽便鉄道 > keibentetsudou\ ;
+割引市場 > waribikishijou\ ;
+失踪宣告 > shissousenkoku\ ;
+化学結合 > kagakuketsugou\ ;
+保険料率 > hokenryouritsu\ ;
+信越本線 > shinetsuhonsen\ ;
+神経中枢 > shinkeichuusuu\ ;
+発光動物 > hakkoudoubutsu\ ;
+複式火山 > fukushikikazan\ ;
+堅忍不抜 > ken''ninfubatsu\ ;
+耐乏生活 > taibouseikatsu\ ;
+社会通念 > shakaitsuunen\ ;
+接客態度 > sekkyakutaido\ ;
+軽爆撃機 > keibakugekiki\ ;
+署名捺印 > shomeinatsuin\ ;
+胸部疾患 > kyoubushikkan\ ;
+象牙取引 > zougetorihiki\ ;
+日曜大工 > nichiyoudaiku\ ;
+目玉商品 > medamashouhin\ ;
+製薬会社 > seiyakugaisha\ ;
+投光照明 > toukoushoumei\ ;
+清廉潔白 > seirenkeppaku\ ;
+敵前逃亡 > tekizentoubou\ ;
+日刊新聞 > nikkanshinbun\ ;
+抱腹絶倒 > houfukuzettou\ ;
+悪虐無道 > akugyakumudou\ ;
+国家権力 > kokkakenryoku\ ;
+南洋諸島 > nan''youshotou\ ;
+囚人労働 > shuujinroudou\ ;
+劣等観念 > rettoukan''nen\ ;
+関係官庁 > kankeikanchou\ ;
+農民文学 > nouminbungaku\ ;
+自然現象 > shizengenshou\ ;
+腎臓結石 > jinzoukesseki\ ;
+施政方針 > shiseihoushin\ ;
+天竺浪人 > tenjikurounin\ ;
+霊魂不滅 > reikonfumetsu\ ;
+公共組合 > koukyoukumiai\ ;
+有線電信 > yuusendenshin\ ;
+血行障害 > kekkoushougai\ ;
+人的資源 > jintekishigen\ ;
+地方行政 > chihougyousei\ ;
+震天動地 > shintendouchi\ ;
+第三帝国 > daisanteikoku\ ;
+天文学者 > tenmongakusha\ ;
+深夜放送 > shin''yahousou\ ;
+音声形式 > onseikeishiki\ ;
+交通問題 > koutsuumondai\ ;
+公共投資 > koukyoutoushi\ ;
+劃時代的 > kakujidaiteki\ ;
+同族会社 > douzokugaisha\ ;
+心理描写 > shinribyousha\ ;
+技術水準 > gijutsusuijun\ ;
+理学博士 > rigakuhakushi\ ;
+局所麻酔 > kyokushomasui\ ;
+産別会議 > sanbetsukaigi\ ;
+就学児童 > shuugakujidou\ ;
+空中給油 > kuuchuukyuuyu\ ;
+国際規格 > kokusaikikaku\ ;
+学校新聞 > gakkoushinbun\ ;
+情報産業 > jouhousangyou\ ;
+登録番号 > tourokubangou\ ;
+土木工学 > dobokukougaku\ ;
+生体反応 > seitaihan''nou\ ;
+象徴主義 > shouchoushugi\ ;
+音楽教育 > ongakukyouiku\ ;
+観測地点 > kansokuchiten\ ;
+技術同士 > gijutsudoushi\ ;
+応急攻撃 > oukyuukougeki\ ;
+同仁教会 > doujinkyoukai\ ;
+実働時間 > jitsudoujikan\ ;
+青空駐車 > aozorachuusha\ ;
+電力輸送 > denryokuyusou\ ;
+軍隊教育 > guntaikyouiku\ ;
+遠洋漁業 > en''yougyogyou\ ;
+保障占領 > hoshousenryou\ ;
+交換法則 > koukanhousoku\ ;
+牽引療法 > ken''inryouhou\ ;
+駅伝競走 > ekidenkyousou\ ;
+切歯扼腕 > sesshiyakuwan\ ;
+団体交渉 > dantaikoushou\ ;
+亭主関白 > teishukanpaku\ ;
+一段動詞 > ichidandoushi\ ;
+一般幕僚 > ippanbakuryou\ ;
+寝台列車 > shindairessha\ ;
+投擲競技 > toutekikyougi\ ;
+気象通報 > kishoutsuuhou\ ;
+開析台地 > kaisekidaichi\ ;
+実用主義 > jitsuyoushugi\ ;
+工場実習 > koujoujisshuu\ ;
+中継貿易 > chuukeiboueki\ ;
+性能特性 > seinoutokusei\ ;
+最後通牒 > saigotsuuchou\ ;
+国際結婚 > kokusaikekkon\ ;
+造本技術 > zouhongijutsu\ ;
+妨害工作 > bougaikousaku\ ;
+民族意識 > minzokuishiki\ ;
+贅沢三昧 > zeitakuzanmai\ ;
+写真製版 > shashinseihan\ ;
+学校教育 > gakkoukyouiku\ ;
+霧中信号 > muchuushingou\ ;
+精神状態 > seishinjoutai\ ;
+商科大学 > shoukadaigaku\ ;
+写真結婚 > shashinkekkon\ ;
+共同戦線 > kyoudousensen\ ;
+火山活動 > kazankatsudou\ ;
+麦稈細工 > mugiwarazaiku\ ;
+勤労所得 > kinroushotoku\ ;
+首相官邸 > shushoukantei\ ;
+読書三昧 > dokushozanmai\ ;
+中等教員 > chuutoukyouin\ ;
+一次電流 > ichijidenryuu\ ;
+台中関係 > taichuukankei\ ;
+秘密結社 > himitsukessha\ ;
+東方拡大 > touhoukakudai\ ;
+近隣諸国 > kinrinshokoku\ ;
+労働階級 > roudoukaikyuu\ ;
+貞操観念 > teisoukan''nen\ ;
+民間伝承 > minkandenshou\ ;
+膀胱結石 > boukoukesseki\ ;
+転居通知 > tenkyotsuuchi\ ;
+純正数学 > junseisuugaku\ ;
+男爵夫人 > danshakufujin\ ;
+塩蔵食品 > enzoushokuhin\ ;
+一致団結 > itchidanketsu\ ;
+警察国家 > keisatsukokka\ ;
+経済白書 > keizaihakusho\ ;
+穀倉地帯 > kokusouchitai\ ;
+環境事業 > kankyoujigyou\ ;
+総合商社 > sougoushousha\ ;
+少年労働 > shounenroudou\ ;
+一挙両得 > ikkyoryoutoku\ ;
+測定装置 > sokuteisouchi\ ;
+前衛美術 > zen''eibijutsu\ ;
+皆既月食 > kaikigesshoku\ ;
+公団住宅 > koudanjuutaku\ ;
+設備投資 > setsubitoushi\ ;
+日常茶飯 > nichijousahan\ ;
+群集心理 > gunshuushinri\ ;
+百戦練磨 > hyakusenrenma\ ;
+即興詩人 > sokkyoushijin\ ;
+善隣政策 > zenrinseisaku\ ;
+前受収益 > maeukeshuueki\ ;
+国民皆兵 > kokuminkaihei\ ;
+骨相学者 > kossougakusha\ ;
+戸別訪問 > kobetsuhoumon\ ;
+爆弾声明 > bakudanseimei\ ;
+道楽息子 > dourakumusuko\ ;
+癒傷組織 > yushousoshiki\ ;
+男子学生 > danshigakusei\ ;
+貫通銃創 > kantsuujuusou\ ;
+新郎新婦 > shinroushinpu\ ;
+空挺作戦 > kuuteisakusen\ ;
+配管工業 > haikankougyou\ ;
+宇宙通信 > uchuutsuushin\ ;
+等比数列 > touhisuuretsu\ ;
+床上浸水 > yukaueshinsui\ ;
+自然環境 > shizenkankyou\ ;
+日中戦争 > nitchuusensou\ ;
+標題音楽 > hyoudaiongaku\ ;
+劣等複合 > rettoufukugou\ ;
+眼球銀行 > gankyuuginkou\ ;
+市場分析 > shijoubunseki\ ;
+中間試験 > chuukanshiken\ ;
+証券会社 > shoukengaisha\ ;
+漏話結合 > rouwagetsugou\ ;
+国際紛争 > kokusaifunsou\ ;
+集団行動 > shuudankoudou\ ;
+車両縦隊 > sharyoujuutai\ ;
+交代操業 > koutaisougyou\ ;
+作者未詳 > sakushamishou\ ;
+西本願寺 > nishihonganji\ ;
+永代借地 > eitaishakuchi\ ;
+子宮筋腫 > shikyuukinshu\ ;
+切手蒐集 > kitteshuushuu\ ;
+官費留学 > kanpiryuugaku\ ;
+編集主幹 > henshuushukan\ ;
+生産技術 > seisangijutsu\ ;
+水平応力 > suiheiouryoku\ ;
+先端技術 > sentangijutsu\ ;
+神宮球場 > jinguukyuujou\ ;
+音楽大学 > ongakudaigaku\ ;
+侵略行為 > shinryakukoui\ ;
+入射光線 > nyuushakousen\ ;
+三角函数 > sankakukansuu\ ;
+立体写真 > rittaishashin\ ;
+国際関係 > kokusaikankei\ ;
+浄土真宗 > joudoshinshuu\ ;
+三国同盟 > sangokudoumei\ ;
+驚天動地 > kyoutendouchi\ ;
+空中滑走 > kuuchuukassou\ ;
+国際問題 > kokusaimondai\ ;
+社外発信 > shagaihasshin\ ;
+跳梁跋扈 > chouryoubakko\ ;
+集中砲火 > shuuchuuhouka\ ;
+人間工学 > ningenkougaku\ ;
+身元確認 > mimotokakunin\ ;
+差別待遇 > sabetsutaiguu\ ;
+千鳥格子 > chidorigoushi\ ;
+仏像二体 > butsuzounitai\ ;
+全景写真 > zenkeishashin\ ;
+公共団体 > koukyoudantai\ ;
+堆積輪廻 > taisekirin''ne\ ;
+一般生活 > ippanseikatsu\ ;
+横河電機 > yokogawadenki\ ;
+中継放送 > chuukeihousou\ ;
+禁止条約 > kinshijouyaku\ ;
+全国放送 > zenkokuhousou\ ;
+党利党略 > touritouryaku\ ;
+外交交渉 > gaikoukoushou\ ;
+学士院賞 > gakushiinshou\ ;
+行動計画 > koudoukeikaku\ ;
+共有財産 > kyouyuuzaisan\ ;
+逸失利益 > isshitsurieki\ ;
+農地改革 > nouchikaikaku\ ;
+交通渋滞 > koutsuujuutai\ ;
+神経細胞 > shinkeisaibou\ ;
+業界団体 > gyoukaidantai\ ;
+勧善懲悪 > kanzenchouaku\ ;
+共産陣営 > kyousanjin''ei\ ;
+欠席裁判 > kessekisaiban\ ;
+半革装丁 > hankawasoutei\ ;
+競争市場 > kyousoushijou\ ;
+知的財産 > chitekizaisan\ ;
+南北問題 > nanbokumondai\ ;
+突然変異 > totsuzenhen''i\ ;
+適応障害 > tekioushougai\ ;
+混載貨物 > konsaikamotsu\ ;
+耐障害性 > taishougaisei\ ;
+近親相姦 > kinshinsoukan\ ;
+大道商人 > daidoushounin\ ;
+不信任案 > fushin''nin''an\ ;
+宮廷音楽 > kyuuteiongaku\ ;
+緩衝地帯 > kanshouchitai\ ;
+血清注射 > kesseichuusha\ ;
+加糖粉乳 > katoufun''nyuu\ ;
+信販会社 > shinpangaisha\ ;
+十一献金 > juuichikenkin\ ;
+福祉事業 > fukushijigyou\ ;
+暖衣飽食 > dan''ihoushoku\ ;
+準決勝戦 > junkesshousen\ ;
+野生動物 > yaseidoubutsu\ ;
+社会現象 > shakaigenshou\ ;
+北欧諸国 > hokuoushokoku\ ;
+自然休会 > shizenkyuukai\ ;
+良二千石 > ryounisenseki\ ;
+文学青年 > bungakuseinen\ ;
+修道誓願 > shuudouseigan\ ;
+食糧援助 > shokuryouenjo\ ;
+衆議一決 > shuugiikketsu\ ;
+酸素吸入 > sansokyuunyuu\ ;
+生臭坊主 > namagusabouzu\ ;
+軍事施設 > gunjishisetsu\ ;
+郵便振替 > yuubinfurikae\ ;
+方針決定 > houshinkettei\ ;
+就業時間 > shuugyoujikan\ ;
+人口抑制 > jinkouyokusei\ ;
+軍人恩給 > gunjin''onkyuu\ ;
+人工流産 > jinkouryuuzan\ ;
+真剣勝負 > shinkenshoubu\ ;
+隠退生活 > intaiseikatsu\ ;
+役員報酬 > yakuinhoushuu\ ;
+割引時間 > waribikijikan\ ;
+白葡萄酒 > shirobudoushu\ ;
+制服制帽 > seifukuseibou\ ;
+古色蒼然 > koshokusouzen\ ;
+留置郵便 > tomeokiyuubin\ ;
+計画倒産 > keikakutousan\ ;
+皆既日食 > kaikinisshoku\ ;
+連戦連勝 > rensenrenshou\ ;
+享楽主義 > kyourakushugi\ ;
+広告媒体 > koukokubaitai\ ;
+国民審査 > kokuminshinsa\ ;
+混声合唱 > konseigasshou\ ;
+神道信者 > shintoushinja\ ;
+実況放送 > jikkyouhousou\ ;
+分光分析 > bunkoubunseki\ ;
+産業組合 > sangyoukumiai\ ;
+取捨選択 > shushasentaku\ ;
+地震学者 > jishingakusha\ ;
+大阪大学 > oosakadaigaku\ ;
+研究方法 > kenkyuuhouhou\ ;
+断郊競走 > dankoukyousou\ ;
+比較文学 > hikakubungaku\ ;
+士農工商 > shinoukoushou\ ;
+乾坤一擲 > kenkon''itteki\ ;
+停止信号 > teishishingou\ ;
+建築現場 > kenchikugenba\ ;
+国連大使 > kokurentaishi\ ;
+眉目秀麗 > bimokushuurei\ ;
+情緒障害 > joushoshougai\ ;
+謹賀新年 > kingashin''nen\ ;
+練習問題 > renshuumondai\ ;
+人畜無害 > jinchikumugai\ ;
+上流社会 > jouryuushakai\ ;
+陸海空軍 > rikukaikuugun\ ;
+真相調査 > shinsouchousa\ ;
+表敬訪問 > hyoukeihoumon\ ;
+普通教育 > futsuukyouiku\ ;
+公民教育 > kouminkyouiku\ ;
+水害対策 > suigaitaisaku\ ;
+将来展望 > shouraitenbou\ ;
+尋問調書 > jinmonchousho\ ;
+着弾距離 > chakudankyori\ ;
+天真爛漫 > tenshinranman\ ;
+反射神経 > hanshashinkei\ ;
+青色申告 > aoiroshinkoku\ ;
+造形美術 > zoukeibijutsu\ ;
+史的現在 > shitekigenzai\ ;
+内部生活 > naibuseikatsu\ ;
+構造記述 > kouzoukijutsu\ ;
+共存共栄 > kyouzonkyouei\ ;
+帯状疱疹 > taijouhoushin\ ;
+現実主義 > genjitsushugi\ ;
+年々歳々 > nen''nensaisai\ ;
+研究論文 > kenkyuuronbun\ ;
+最終編成 > saishuuhensei\ ;
+専修学校 > senshuugakkou\ ;
+右中括弧 > migichuukakko\ ;
+修道院長 > shuudouinchou\ ;
+家督相続 > katokusouzoku\ ;
+宿命論者 > shukumeironja\ ;
+温度調節 > ondochousetsu\ ;
+言語能力 > gengonouryoku\ ;
+利潤追求 > rijuntsuikyuu\ ;
+統率理論 > tousotsuriron\ ;
+良風美俗 > ryoufuubizoku\ ;
+国民学校 > kokumingakkou\ ;
+単為生殖 > tan''iseishoku\ ;
+二十日鼠 > hatsukanezumi\ ;
+貿易収支 > bouekishuushi\ ;
+人工心臓 > jinkoushinzou\ ;
+天津日嗣 > amatsuhitsugi\ ;
+群雄割拠 > gun''yuukakkyo\ ;
+先天梅毒 > sentenbaidoku\ ;
+人工心肺 > jinkoushinbai\ ;
+呼吸中枢 > kokyuuchuusuu\ ;
+駐留部隊 > chuuryuubutai\ ;
+殺生禁断 > sesshoukindan\ ;
+無銭遊興 > musen''yuukyou\ ;
+主席全権 > shusekizenken\ ;
+甲乙丙丁 > kouotsuheitei\ ;
+補欠選挙 > hoketsusenkyo\ ;
+微量分析 > biryoubunseki\ ;
+地域代表 > chiikidaihyou\ ;
+画一主義 > kakuitsushugi\ ;
+京都大学 > kyoutodaigaku\ ;
+生体工学 > seitaikougaku\ ;
+泡沫候補 > houmatsukouho\ ;
+相続財産 > souzokuzaisan\ ;
+対戦成績 > taisenseiseki\ ;
+国際空港 > kokusaikuukou\ ;
+国連総会 > kokurensoukai\ ;
+専門教育 > senmonkyouiku\ ;
+営業報告 > eigyouhoukoku\ ;
+血液検査 > ketsuekikensa\ ;
+革新主義 > kakushinshugi\ ;
+露出時間 > roshutsujikan\ ;
+投票用紙 > touhyouyoushi\ ;
+薬用石鹸 > yakuyousekken\ ;
+単独行動 > tandokukoudou\ ;
+夫婦生活 > fuufuseikatsu\ ;
+肉体関係 > nikutaikankei\ ;
+軍事警察 > gunjikeisatsu\ ;
+新婚旅行 > shinkonryokou\ ;
+陽性反応 > youseihan''nou\ ;
+軸差応力 > jikusaouryoku\ ;
+人類学者 > jinruigakusha\ ;
+武士気質 > bushikishitsu\ ;
+第一人者 > daiichininsha\ ;
+家庭生活 > kateiseikatsu\ ;
+危険人物 > kikenjinbutsu\ ;
+大学教授 > daigakukyouju\ ;
+前進運動 > zenshin''undou\ ;
+活動成果 > katsudouseika\ ;
+総合収支 > sougoushuushi\ ;
+各駅停車 > kakuekiteisha\ ;
+触媒作用 > shokubaisayou\ ;
+科学技術 > kagakugijutsu\ ;
+印刷用紙 > insatsuyoushi\ ;
+人的証拠 > jintekishouko\ ;
+抗議活動 > kougikatsudou\ ;
+先取得点 > senshutokuten\ ;
+複合企業 > fukugoukigyou\ ;
+無差別級 > musabetsukyuu\ ;
+多国籍軍 > takokusekigun\ ;
+競争価格 > kyousoukakaku\ ;
+社会人枠 > shakaijinwaku\ ;
+商業地区 > shougyouchiku\ ;
+表層構造 > hyousoukouzou\ ;
+精神衛生 > seishin''eisei\ ;
+航空写真 > koukuushashin\ ;
+上昇気流 > joushoukiryuu\ ;
+北大西洋 > kitataiseiyou\ ;
+行政指導 > gyouseishidou\ ;
+定置漁業 > teichigyogyou\ ;
+最高級品 > saikoukyuuhin\ ;
+出頭命令 > shuttoumeirei\ ;
+出血過多 > shukketsukata\ ;
+電子出版 > denshishuppan\ ;
+色素細胞 > shikisosaibou\ ;
+花嫁衣裳 > hanayomeishou\ ;
+小口現金 > koguchigenkin\ ;
+博学多才 > hakugakutasai\ ;
+外様大名 > tozamadaimyou\ ;
+国民主権 > kokuminshuken\ ;
+公金横領 > koukin''ouryou\ ;
+近郊農業 > kinkounougyou\ ;
+全国大会 > zenkokutaikai\ ;
+吟遊詩人 > gin''yuushijin\ ;
+冷水摩擦 > reisuimasatsu\ ;
+曲学阿世 > kyokugakuasei\ ;
+価格競争 > kakakukyousou\ ;
+禁断症状 > kindanshoujou\ ;
+竜攘虎搏 > ryuujoukohaku\ ;
+正味重量 > shoumijuuryou\ ;
+公証役場 > koushouyakuba\ ;
+清涼飲料 > seiryouinryou\ ;
+毛管現象 > moukangenshou\ ;
+作戦地域 > sakusenchiiki\ ;
+出張旅費 > shutchouryohi\ ;
+放送番組 > housoubangumi\ ;
+永久磁石 > eikyuujishaku\ ;
+売掛勘定 > urikakekanjou\ ;
+間宮海峡 > mamiyakaikyou\ ;
+獄中日記 > gokuchuunikki\ ;
+沈思黙考 > chinshimokkou\ ;
+超国家的 > choukokkateki\ ;
+防火建築 > boukakenchiku\ ;
+金融市場 > kin''yuushijou\ ;
+集団心理 > shuudanshinri\ ;
+入社試験 > nyuushashiken\ ;
+選択値群 > sentakuchigun\ ;
+確率誤差 > kakuritsugosa\ ;
+第四階級 > daiyonkaikyuu\ ;
+逍遥学派 > shouyougakuha\ ;
+黒点周期 > kokutenshuuki\ ;
+美術学校 > bijutsugakkou\ ;
+半死半生 > hanshihanshou\ ;
+快速電車 > kaisokudensha\ ;
+南北戦争 > nanbokusensou\ ;
+小児喘息 > shounizensoku\ ;
+内政干渉 > naiseikanshou\ ;
+公平政策 > kouheiseisaku\ ;
+工業規格 > kougyoukikaku\ ;
+四角四面 > shikakushimen\ ;
+少年少女 > shounenshoujo\ ;
+再販業者 > saihangyousha\ ;
+超高速度 > choukousokudo\ ;
+調査報告 > chousahoukoku\ ;
+海難審判 > kainanshinpan\ ;
+理学修士 > rigakushuushi\ ;
+外的根拠 > gaitekikonkyo\ ;
+生命工学 > seimeikougaku\ ;
+天佑神助 > ten''yuushinjo\ ;
+外国旅行 > gaikokuryokou\ ;
+共同水栓 > kyoudousuisen\ ;
+拡大均衡 > kakudaikinkou\ ;
+凱旋将軍 > gaisenshougun\ ;
+集積回路 > shuusekikairo\ ;
+裾野産業 > susonosangyou\ ;
+鎮魂帰神 > chinkonkishin\ ;
+合格者名 > goukakushamei\ ;
+有資格者 > yuushikakusha\ ;
+化学反応 > kagakuhan''nou\ ;
+需要供給 > juyoukyoukyuu\ ;
+召喚令状 > shoukanreijou\ ;
+試験勉強 > shikenbenkyou\ ;
+温室効果 > onshitsukouka\ ;
+有鉤条虫 > yuukoujouchuu\ ;
+内的根拠 > naitekikonkyo\ ;
+近海漁業 > kinkaigyogyou\ ;
+決戦投票 > kessentouhyou\ ;
+共同社会 > kyoudoushakai\ ;
+唐草模様 > karakusamoyou\ ;
+包皮切断 > houhisetsudan\ ;
+定期取引 > teikitorihiki\ ;
+乾燥洗濯 > kansousentaku\ ;
+集合名詞 > shuugoumeishi\ ;
+小型新聞 > kogatashinbun\ ;
+医療施設 > iryoushisetsu\ ;
+動物油脂 > doubutsuyushi\ ;
+反面教師 > hanmenkyoushi\ ;
+日常会話 > nichijoukaiwa\ ;
+輸入業者 > yunyuugyousha\ ;
+標準価格 > hyoujunkakaku\ ;
+不妊手術 > funinshujutsu\ ;
+山猫争議 > yamanekosougi\ ;
+出世間的 > shussekenteki\ ;
+年中行事 > nenchuugyouji\ ;
+鎌倉時代 > kamakurajidai\ ;
+炎症病巣 > enshoubyousou\ ;
+注意人物 > chuuijinbutsu\ ;
+日洪親善 > nikkoushinzen\ ;
+追加注文 > tsuikachuumon\ ;
+筆写略字 > hissharyakuji\ ;
+献血運動 > kenketsuundou\ ;
+舞台芸術 > butaigeijutsu\ ;
+試験監督 > shikenkantoku\ ;
+撤頭徹尾 > tettoutetsubi\ ;
+疾風迅雷 > shippuujinrai\ ;
+市場環境 > shijoukankyou\ ;
+原成岩石 > genseiganseki\ ;
+前大統領 > zendaitouryou\ ;
+強制送還 > kyouseisoukan\ ;
+同業組合 > dougyoukumiai\ ;
+電気剃刀 > denkikamisori\ ;
+事務局長 > jimukyokuchou\ ;
+経済改革 > keizaikaikaku\ ;
+民俗芸能 > minzokugeinou\ ;
+収穫予想 > shuukakuyosou\ ;
+塩辛蜻蛉 > shiokaratonbo\ ;
+紆余曲折 > uyokyokusetsu\ ;
+極超短波 > gokuchoutanpa\ ;
+主権侵犯 > shukenshinpan\ ;
+中性洗剤 > chuuseisenzai\ ;
+貨物列車 > kamotsuressha\ ;
+血清療法 > kesseiryouhou\ ;
+新案特許 > shin''antokkyo\ ;
+死後硬直 > shigokouchoku\ ;
+唯物主義 > yuibutsushugi\ ;
+日露戦争 > nichirosensou\ ;
+断郊競争 > dankoukyousou\ ;
+同盟条約 > doumeijouyaku\ ;
+一攫千金 > ikkakkusenkin\ ;
+階級闘争 > kaikyuutousou\ ;
+熱硬化剤 > netsukoukazai\ ;
+専用回線 > sen''youkaisen\ ;
+交換学生 > koukangakusei\ ;
+動線計画 > dousenkeikaku\ ;
+民政長官 > minseichoukan\ ;
+判断中止 > handanchuushi\ ;
+局所分岐 > kyokushobunki\ ;
+通常国会 > tsuujoukokkai\ ;
+数値解析 > suuchikaiseki\ ;
+軍備拡張 > gunbikakuchou\ ;
+適者生存 > tekishaseizon\ ;
+精神鑑定 > seishinkantei\ ;
+鉄道輸送 > tetsudouyusou\ ;
+第三階級 > daisankaikyuu\ ;
+千態万様 > sentaiban''you\ ;
+電子工学 > denshikougaku\ ;
+経済状況 > keizaijoukyou\ ;
+社会教育 > shakaikyouiku\ ;
+農耕民族 > noukouminzoku\ ;
+全身全霊 > zenshinzenrei\ ;
+公称資本 > koushoushihon\ ;
+大字片山 > ooazakatayama\ ;
+薬師如来 > yakushinyorai\ ;
+百戦錬磨 > hyakusenrenma\ ;
+同盟休校 > doumeikyuukou\ ;
+中央計画 > chuuoukeikaku\ ;
+中央集権 > chuuoushuuken\ ;
+三角貿易 > sankakuboueki\ ;
+分析化学 > bunsekikagaku\ ;
+少壮士官 > shousoushikan\ ;
+法的根拠 > houtekikonkyo\ ;
+殺害事件 > satsugaijiken\ ;
+自然増収 > shizenzoushuu\ ;
+良性腫瘍 > ryouseishuyou\ ;
+通勤電車 > tsuukindensha\ ;
+少年犯罪 > shounenhanzai\ ;
+水酸化物 > suisankabutsu\ ;
+親戚知己 > shinsekichiki\ ;
+単独決算 > tandokukessan\ ;
+国際情勢 > kokusaijousei\ ;
+街頭演説 > gaitouenzetsu\ ;
+欣喜雀躍 > kinkijakuyaku\ ;
+品種改良 > hinshukairyou\ ;
+公称馬力 > koushoubariki\ ;
+四六時中 > shirokujichuu\ ;
+交通遮断 > koutsuushadan\ ;
+大学紛争 > daigakufunsou\ ;
+財政収支 > zaiseishuushi\ ;
+衆参両院 > shuusanryouin\ ;
+耐火建築 > taikakenchiku\ ;
+視力検査 > shiryokukensa\ ;
+小刀細工 > kogatanazaiku\ ;
+質疑応答 > shitsugioutou\ ;
+捜査当局 > sousatoukyoku\ ;
+照葉狂言 > terihakyougen\ ;
+出征軍人 > shusseigunjin\ ;
+放射能雲 > houshanougumo\ ;
+社会政策 > shakaiseisaku\ ;
+電極電位 > denkyokuden''i\ ;
+人工透析 > jinkoutouseki\ ;
+複合媒体 > fukugoubaitai\ ;
+住民投票 > juumintouhyou\ ;
+工業地帯 > kougyouchitai\ ;
+呼吸困難 > kokyuukon''nan\ ;
+養護施設 > yougoshisetsu\ ;
+輸出規制 > yushutsukisei\ ;
+戦力組成 > senryokusosei\ ;
+決選投票 > kessentouhyou\ ;
+統一見解 > touitsukenkai\ ;
+催眠療法 > saiminryouhou\ ;
+工業製品 > kougyouseihin\ ;
+役人根性 > yakuninkonjou\ ;
+独房監禁 > dokuboukankin\ ;
+導通抵抗 > doutsuuteikou\ ;
+協調主義 > kyouchoushugi\ ;
+会計報告 > kaikeihoukoku\ ;
+台湾海峡 > taiwankaikyou\ ;
+日清戦争 > nisshinsensou\ ;
+宣言発表 > sengenhappyou\ ;
+天体写真 > tentaishashin\ ;
+重量噸数 > juuryoutonsuu\ ;
+明鏡止水 > meikyoushisui\ ;
+年間計画 > nenkankeikaku\ ;
+口述筆記 > koujutsuhikki\ ;
+国際通貨 > kokusaitsuuka\ ;
+健康診断 > kenkoushindan\ ;
+桃山時代 > momoyamajidai\ ;
+職場結婚 > shokubakekkon\ ;
+環境問題 > kankyoumondai\ ;
+証人喚問 > shouninkanmon\ ;
+攻撃方向 > kougekihoukou\ ;
+競争売買 > kyousoubaibai\ ;
+著作権法 > chosakukenhou\ ;
+国際社会 > kokusaishakai\ ;
+新制高校 > shinseikoukou\ ;
+寄生虫症 > kiseichuushou\ ;
+中折帽子 > nakaoreboushi\ ;
+公開練習 > koukairenshuu\ ;
+経済政策 > keizaiseisaku\ ;
+合成写真 > gouseishashin\ ;
+新進作家 > shinshinsakka\ ;
+酸素供給 > sansokyoukyuu\ ;
+交通公社 > koutsuukousha\ ;
+活殺自在 > kassatsujizai\ ;
+電送写真 > densoushashin\ ;
+全知全能 > zenchizen''nou\ ;
+国勢調査 > kokuseichousa\ ;
+流通機構 > ryuutsuukikou\ ;
+兵器輸出 > heikiyushutsu\ ;
+天皇崇拝 > ten''nousuuhai\ ;
+保証人要 > hoshounin''you\ ;
+浮遊生物 > fuyuuseibutsu\ ;
+終身保険 > shuushinhoken\ ;
+懸賞論文 > kenshouronbun\ ;
+市場改革 > shijoukaikaku\ ;
+電力需要 > denryokujuyou\ ;
+臨床尋問 > rinshoujinmon\ ;
+陰極線管 > inkyokusenkan\ ;
+旋光分析 > senkoubunseki\ ;
+化石燃料 > kasekinenryou\ ;
+電信為替 > denshinkawase\ ;
+懐中電灯 > kaichuudentou\ ;
+才色兼備 > saishokukenbi\ ;
+指導要領 > shidouyouryou\ ;
+郵便年金 > yuubin''nenkin\ ;
+関連商品 > kanrenshouhin\ ;
+限界状況 > genkaijoukyou\ ;
+現在完了 > genzaikanryou\ ;
+制約伝搬 > seiyakudenpan\ ;
+丸一週間 > maruisshuukan\ ;
+工業団地 > kougyoudanchi\ ;
+極楽浄土 > gokurakujoudo\ ;
+化学分析 > kagakubunseki\ ;
+同点決勝 > doutenkesshou\ ;
+体外離脱 > taigairidatsu\ ;
+生物兵器 > seibutsuheiki\ ;
+単音節語 > tan''onsetsugo\ ;
+攻撃隊形 > kougekitaikei\ ;
+法人所得 > houjinshotoku\ ;
+大逆事件 > taigyakujiken\ ;
+原始教会 > genshikyoukai\ ;
+価格協定 > kakakukyoutei\ ;
+寓意小説 > guuishousetsu\ ;
+専門技術 > senmongijutsu\ ;
+拡張可能 > kakuchoukanou\ ;
+急進主義 > kyuushinshugi\ ;
+記念式典 > kinenshikiten\ ;
+競合脱線 > kyougoudassen\ ;
+暑中休暇 > shochuukyuuka\ ;
+繁文縟礼 > hanbunjokurei\ ;
+目標管理 > mokuhyoukanri\ ;
+方向観念 > houkoukan''nen\ ;
+海底電信 > kaiteidenshin\ ;
+業界動向 > gyoukaidoukou\ ;
+必要経費 > hitsuyoukeihi\ ;
+水玉模様 > mizutamamoyou\ ;
+出征家族 > shusseikazoku\ ;
+経常収支 > keijoushuushi\ ;
+地球科学 > chikyuukagaku\ ;
+情報技術 > jouhougijutsu\ ;
+空中分解 > kuuchuubunkai\ ;
+強制労働 > kyouseiroudou\ ;
+階級意識 > kaikyuuishiki\ ;
+博士論文 > hakushironbun\ ;
+人格形成 > jinkakukeisei\ ;
+絹糸紡績 > kenshibouseki\ ;
+職場闘争 > shokubatousou\ ;
+教育学部 > kyouikugakubu\ ;
+変速装置 > hensokusouchi\ ;
+真円真珠 > shin''enshinju\ ;
+国民経済 > kokuminkeizai\ ;
+内面描写 > naimenbyousha\ ;
+媒体終端 > baitaishuutan\ ;
+心理療法 > shinriryouhou\ ;
+性的関係 > seitekikankei\ ;
+無銭飲食 > musen''inshoku\ ;
+範疇文法 > hanchuubunpou\ ;
+長期借款 > choukishakkan\ ;
+全体集合 > zentaishuugou\ ;
+右小括弧 > migishoukakko\ ;
+仮想敵国 > kasoutekikoku\ ;
+極楽往生 > gokurakuoujou\ ;
+初等教育 > shotoukyouiku\ ;
+行政命令 > gyouseimeirei\ ;
+対地攻撃 > taichikougeki\ ;
+自然描写 > shizenbyousha\ ;
+金融資本 > kin''yuushihon\ ;
+無能力者 > munouryokusha\ ;
+化学工業 > kagakukougyou\ ;
+行政区画 > gyouseikukaku\ ;
+学習辞典 > gakushuujiten\ ;
+閨閥政治 > keibatsuseiji\ ;
+事業拡充 > jigyoukakujuu\ ;
+農村工業 > nousonkougyou\ ;
+秋雨前線 > akisamezensen\ ;
+共同農場 > kyoudounoujou\ ;
+女権拡張 > jokenkakuchou\ ;
+講習会場 > koushuukaijou\ ;
+汚染物質 > osenbusshitsu\ ;
+状況判断 > joukyouhandan\ ;
+当該官庁 > tougaikanchou\ ;
+仲介貿易 > chuukaiboueki\ ;
+国内市場 > kokunaishijou\ ;
+一枚看板 > ichimaikanban\ ;
+無線通信 > musentsuushin\ ;
+経済大国 > keizaitaikoku\ ;
+反社会的 > hanshakaiteki\ ;
+一利一害 > ichiriichigai\ ;
+二律背反 > niritsuhaihan\ ;
+復元作業 > fukugensagyou\ ;
+人間爆弾 > ningenbakudan\ ;
+季節労働 > kisetsuroudou\ ;
+陸軍大臣 > rikugundaijin\ ;
+断抵抗角 > danteikoukaku\ ;
+通信機関 > tsuushinkikan\ ;
+写真凸版 > shashintoppan\ ;
+化学療法 > kagakuryouhou\ ;
+綱紀粛正 > koukishukusei\ ;
+税制改革 > zeiseikaikaku\ ;
+調停裁判 > chouteisaiban\ ;
+無罪判決 > muzaihanketsu\ ;
+軍事戦略 > gunjisenryaku\ ;
+臨床試験 > rinshoushiken\ ;
+防止指針 > boushishishin\ ;
+気象観測 > kishoukansoku\ ;
+舞台生活 > butaiseikatsu\ ;
+大名旅行 > daimyouryokou\ ;
+作業療法 > sagyouryouhou\ ;
+外国為替 > gaikokukawase\ ;
+都立高校 > toritsukoukou\ ;
+形式主義 > keishikishugi\ ;
+化学工学 > kagakukougaku\ ;
+角運動量 > kakuundouryou\ ;
+完全無欠 > kanzenmuketsu\ ;
+政策決定 > seisakukettei\ ;
+循環小数 > junkanshousuu\ ;
+大韓民国 > daikanminkoku\ ;
+適用業務 > tekiyougyoumu\ ;
+戦争文学 > sensoubungaku\ ;
+九天直下 > kyuutenchokka\ ;
+面従腹背 > menjuufukuhai\ ;
+確保失敗 > kakuhoshippai\ ;
+共通言語 > kyoutsuugengo\ ;
+強制処分 > kyouseishobun\ ;
+断崖絶壁 > dangaizeppeki\ ;
+産業社会 > sangyoushakai\ ;
+各種学校 > kakushugakkou\ ;
+分解写真 > bunkaishashin\ ;
+印刷媒体 > insatsubaitai\ ;
+研究所報 > kenkyuushohou\ ;
+乱射乱撃 > ransharangeki\ ;
+棒腹絶倒 > houfukuzettou\ ;
+特許侵害 > tokkyoshingai\ ;
+定額貯金 > teigakuchokin\ ;
+公衆伝動 > koushuudendou\ ;
+鉄道馬車 > tetsudoubasha\ ;
+内国為替 > naikokukawase\ ;
+種種様様 > shujusamazama\ ;
+喜色満面 > kishokumanmen\ ;
+弁別素性 > benbetsusosei\ ;
+作戦命令 > sakusenmeirei\ ;
+議長職権 > gichoushokken\ ;
+啓蒙思潮 > keimoushichou\ ;
+公娼全廃 > koushouzenpai\ ;
+対面交通 > taimenkoutsuu\ ;
+一問一答 > ichimon''ittou\ ;
+電子密度 > denshimitsudo\ ;
+超低価格 > chouteikakaku\ ;
+一括売買 > ikkatsubaibai\ ;
+制約条件 > seiyakujouken\ ;
+休戦会談 > kyuusenkaidan\ ;
+版権侵害 > hankenshingai\ ;
+隔離病棟 > kakuribyoutou\ ;
+生鮮料品 > seisenryouhin\ ;
+上昇傾向 > joushoukeikou\ ;
+不法入国 > fuhounyuugoku\ ;
+教養学部 > kyouyougakubu\ ;
+高信頼性 > koushinraisei\ ;
+家宅捜索 > katakusousaku\ ;
+計画経済 > keikakukeizai\ ;
+三軸試験 > sanjikushiken\ ;
+最終段階 > saishuudankai\ ;
+収入印紙 > shuunyuuinshi\ ;
+半熟練工 > hanjukurenkou\ ;
+写真判定 > shashinhantei\ ;
+経済観念 > keizaikan''nen\ ;
+賃金水準 > chinginsuijun\ ;
+営業収支 > eigyoushuushi\ ;
+三相交流 > sansoukouryuu\ ;
+経営戦略 > keieisenryaku\ ;
+春夏秋冬 > shunkashuutou\ ;
+焦点深度 > shoutenshindo\ ;
+一時所得 > ichijishotoku\ ;
+杉花粉症 > sugikafunshou\ ;
+人民投票 > jinmintouhyou\ ;
+合従連衡 > gasshourenkou\ ;
+烏野豌豆 > karasunoendou\ ;
+無芸大食 > mugeitaishoku\ ;
+国際連合 > kokusairengou\ ;
+熱交換器 > netsukoukanki\ ;
+宇宙開発 > uchuukaihatsu\ ;
+漢文訓読 > kanbunkundoku\ ;
+空間感覚 > kuukankankaku\ ;
+二人三脚 > nininsankyaku\ ;
+権力主義 > kenryokushugi\ ;
+募集広告 > boshuukoukoku\ ;
+学習理論 > gakushuuriron\ ;
+駐車禁止 > chuushakinshi\ ;
+共同宣言 > kyoudousengen\ ;
+天地神明 > tenchishinmei\ ;
+詳細情報 > shousaijouhou\ ;
+牛飲馬食 > gyuuinbashoku\ ;
+金城鉄壁 > kinjouteppeki\ ;
+集中講義 > shuuchuukougi\ ;
+変形虫類 > henkeichuurui\ ;
+公的年金 > koutekinenkin\ ;
+週刊雑誌 > shuukanzasshi\ ;
+紡績工場 > bousekikoujou\ ;
+初等数学 > shotousuugaku\ ;
+残存日数 > zanson''nissuu\ ;
+国際展開 > kokusaitenkai\ ;
+年功序列 > nenkoujoretsu\ ;
+商業都市 > shougyoutoshi\ ;
+中途退学 > chuutotaigaku\ ;
+共同会見 > kyoudoukaiken\ ;
+憲法学者 > kenpougakusha\ ;
+急転直下 > kyuutenchokka\ ;
+原子爆弾 > genshibakudan\ ;
+登山鉄道 > tozantetsudou\ ;
+物理化学 > butsurikagaku\ ;
+給水制限 > kyuusuiseigen\ ;
+朝鮮戦争 > chousensensou\ ;
+嫌気生物 > kenkiseibutsu\ ;
+選択状態 > sentakujoutai\ ;
+高峰八座 > kouhouhachiza\ ;
+不消化物 > fushoukabutsu\ ;
+法的文書 > houtekibunsho\ ;
+秘密選挙 > himitsusenkyo\ ;
+地球化学 > chikyuukagaku\ ;
+新熱帯区 > shin''nettaiku\ ;
+結婚指輪 > kekkon''yubiwa\ ;
+善隣友好 > zenrin''yuukou\ ;
+受取手形 > uketoritegata\ ;
+決算報告 > kessanhoukoku\ ;
+心理学者 > shinrigakusha\ ;
+論理形式 > ronrikeishiki\ ;
+低頭平身 > teitouheishin\ ;
+混合農業 > kongounougyou\ ;
+文芸作品 > bungeisakuhin\ ;
+有閑階級 > yuukankaikyuu\ ;
+友好条約 > yuukoujouyaku\ ;
+則天去私 > sokutenkyoshi\ ;
+写実主義 > shajitsushugi\ ;
+国際市場 > kokusaishijou\ ;
+二重生活 > nijuuseikatsu\ ;
+臨機目標 > rinkimokuhyou\ ;
+商業登記 > shougyoutouki\ ;
+黄色人種 > oushokujinshu\ ;
+周波変調 > shuuhahenchou\ ;
+欠陥商品 > kekkanshouhin\ ;
+従属変数 > juuzokuhensuu\ ;
+既約表現 > kiyakuhyougen\ ;
+不良少年 > furyoushounen\ ;
+測量技師 > sokuryougishi\ ;
+森羅万象 > shinrabanshou\ ;
+産業構造 > sangyoukouzou\ ;
+欧州諸国 > oushuushokoku\ ;
+通勤地獄 > tsuukinjigoku\ ;
+昼間人口 > chuukanjinkou\ ;
+性格判断 > seikakuhandan\ ;
+信頼関係 > shinraikankei\ ;
+同期通信 > doukitsuushin\ ;
+三重焦点 > sanjuushouten\ ;
+投票総数 > touhyousousuu\ ;
+大幅刷新 > oohabasasshin\ ;
+切断患者 > setsudankanja\ ;
+袖手傍観 > shuushuboukan\ ;
+拍手喝采 > hakushukassai\ ;
+作業仮説 > sagyoukasetsu\ ;
+経済成長 > keizaiseichou\ ;
+合成宝石 > gouseihouseki\ ;
+結締組織 > ketteisoshiki\ ;
+円錐曲線 > ensuikyokusen\ ;
+聖体拝領 > seitaihairyou\ ;
+庶民金融 > shominkin''yuu\ ;
+体積抵抗 > taisekiteikou\ ;
+協同組合 > kyoudoukumiai\ ;
+先住民族 > senjuuminzoku\ ;
+統一戦線 > touitsusensen\ ;
+同時通訳 > doujitsuuyaku\ ;
+周知徹底 > shuuchitettei\ ;
+艱難辛苦 > kan''nanshinku\ ;
+政党内閣 > seitounaikaku\ ;
+現地報告 > genchihoukoku\ ;
+懸賞問題 > kenshoumondai\ ;
+傭船契約 > yousenkeiyaku\ ;
+今上天皇 > kinjouten''nou\ ;
+他覚症状 > takakushoujou\ ;
+欠食児童 > kesshokujidou\ ;
+娯楽番組 > gorakubangumi\ ;
+精神医学 > seishin''igaku\ ;
+内容証明 > naiyoushoumei\ ;
+出港停止 > shukkouteishi\ ;
+夫婦約束 > fuufuyakusoku\ ;
+旅行業者 > ryokougyousha\ ;
+使徒信経 > shitoshinkyou\ ;
+外資導入 > gaishidounyuu\ ;
+成人教育 > seijinkyouiku\ ;
+公式主義 > koushikishugi\ ;
+一獲千金 > ikkakkusenkin\ ;
+複数業務 > fukusuugyoumu\ ;
+禁欲主義 > kin''yokushugi\ ;
+空襲警報 > kuushuukeihou\ ;
+産業再生 > sangyousaisei\ ;
+賃貸価格 > chintaikakaku\ ;
+戦闘前哨 > sentouzenshou\ ;
+一言一行 > ichigen''ikkou\ ;
+吹奏楽団 > suisougakudan\ ;
+直線距離 > chokusenkyori\ ;
+近親結婚 > kinshinkekkon\ ;
+米英仏蘭 > beieibutsuran\ ;
+共同作業 > kyoudousagyou\ ;
+減反政策 > gentanseisaku\ ;
+心理作戦 > shinrisakusen\ ;
+心臓移植 > shinzouishoku\ ;
+有限責任 > yuugensekinin\ ;
+組織再編 > soshikisaihen\ ;
+福音教会 > fukuinkyoukai\ ;
+関係副詞 > kankeifukushi\ ;
+史料編纂 > shiryouhensan\ ;
+猟官運動 > ryoukan''undou\ ;
+肉体労働 > nikutairoudou\ ;
+参照文献 > sanshoubunken\ ;
+音楽監督 > ongakukantoku\ ;
+平身低頭 > heishinteitou\ ;
+共産分子 > kyousanbunshi\ ;
+予約出版 > yoyakushuppan\ ;
+炭水化物 > tansuikabutsu\ ;
+近代文学 > kindaibungaku\ ;
+地方官庁 > chihoukanchou\ ;
+四分五裂 > shibungoretsu\ ;
+経済回復 > keizaikaifuku\ ;
+実存主義 > jitsuzonshugi\ ;
+恒温動物 > kouondoubutsu\ ;
+野菜一皿 > yasaihitosara\ ;
+形式論理 > keishikironri\ ;
+大学浪人 > daigakurounin\ ;
+暫定協定 > zanteikyoutei\ ;
+放送大学 > housoudaigaku\ ;
+法律制度 > houritsuseido\ ;
+信用金庫 > shin''youkinko\ ;
+有名無実 > yuumeimujitsu\ ;
+終身会員 > shuushinkaiin\ ;
+三角関数 > sankakukansuu\ ;
+笑止千万 > shoushisenban\ ;
+文学博士 > bungakuhakase\ ;
+庭先相場 > niwasakisouba\ ;
+消費者側 > shouhishagawa\ ;
+精神構造 > seishinkouzou\ ;
+鉄骨工事 > tekkotsukouji\ ;
+国利民福 > kokuriminpuku\ ;
+軽佻浮薄 > keichoufuhaku\ ;
+沖積平野 > chuusekiheiya\ ;
+酪農製品 > rakunouseihin\ ;
+謝罪広告 > shazaikoukoku\ ;
+富国強兵 > fukokukyouhei\ ;
+外郭団体 > gaikakudantai\ ;
+共同企業 > kyoudoukigyou\ ;
+階級社会 > kaikyuushakai\ ;
+対外政策 > taigaiseisaku\ ;
+精霊信仰 > seireishinkou\ ;
+ＧＢ理論 > ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 > shunpuutaitou\ ;
+死刑執行 > shikeishikkou\ ;
+二者択一 > nishatakuitsu\ ;
+酸性反応 > sanseihan''nou\ ;
+水道料金 > suidouryoukin\ ;
+空気力学 > kuukirikigaku\ ;
+商売気質 > shoubaikatagi\ ;
+記録文学 > kirokubungaku\ ;
+彼方此方 > achirakochira\ ;
+立身出世 > risshinshusse\ ;
+正金銀行 > shoukinginkou\ ;
+共済事業 > kyousaijigyou\ ;
+先行技術 > senkougijutsu\ ;
+図書目録 > toshomokuroku\ ;
+証拠隠滅 > shoukoinmetsu\ ;
+競争関係 > kyousoukankei\ ;
+事前検閲 > jizenken''etsu\ ;
+行政処分 > gyouseishobun\ ;
+全面広告 > zenmenkoukoku\ ;
+国務長官 > kokumuchoukan\ ;
+精神病院 > seishinbyouin\ ;
+四十九日 > shijuukunichi\ ;
+杓子定規 > shakushijougi\ ;
+可塑物質 > kasobusshitsu\ ;
+半農半漁 > han''nouhangyo\ ;
+暴飲暴食 > bouinboushoku\ ;
+研究分野 > kenkyuubun''ya\ ;
+人口密度 > jinkoumitsudo\ ;
+人身売買 > jinshinbaibai\ ;
+殺人未遂 > satsujinmisui\ ;
+足利時代 > ashikagajidai\ ;
+弾着距離 > danchakukyori\ ;
+動物検査 > doubutsukensa\ ;
+薬餌療法 > yakujiryouhou\ ;
+人間国宝 > ningenkokuhou\ ;
+緊要地形 > kin''youchikei\ ;
+市場成長 > shijouseichou\ ;
+指名投票 > shimeitouhyou\ ;
+呉越同舟 > goetsudoushuu\ ;
+宅地造成 > takuchizousei\ ;
+精神労働 > seishinroudou\ ;
+家族計画 > kazokukeikaku\ ;
+開口一番 > kaikouichiban\ ;
+直系卑属 > chokkeihizoku\ ;
+割賦方式 > kappuhoushiki\ ;
+勤労大衆 > kinroutaishuu\ ;
+未収入金 > mishuunyuukin\ ;
+風俗営業 > fuuzokueigyou\ ;
+民俗音楽 > minzokuongaku\ ;
+海水浴場 > kaisuiyokujou\ ;
+連合作戦 > rengousakusen\ ;
+両蓋時計 > ryoubutadokei\ ;
+主客転倒 > shukakutentou\ ;
+損益勘定 > son''ekikanjou\ ;
+動力降下 > douryokukouka\ ;
+三角闘争 > sankakutousou\ ;
+退学処分 > taigakushobun\ ;
+実験材料 > jikkenzairyou\ ;
+重要産業 > juuyousangyou\ ;
+液体燃料 > ekitainenryou\ ;
+伝道集会 > dendoushuukai\ ;
+八面六臂 > hachimenroppi\ ;
+才気煥発 > saikikanpatsu\ ;
+感情表現 > kanjouhyougen\ ;
+人種差別 > jinshusabetsu\ ;
+英国発音 > eikokuhatsuon\ ;
+無限数列 > mugensuuretsu\ ;
+悪逆無道 > akugyakumudou\ ;
+熟慮断行 > jukuryodankou\ ;
+直交座標 > chokkouzahyou\ ;
+北太平洋 > kitataiheiyou\ ;
+男声合唱 > danseigasshou\ ;
+胃腸病学 > ichoubyougaku\ ;
+三角関係 > sankakukankei\ ;
+民族音楽 > minzokuongaku\ ;
+単独会見 > tandokukaiken\ ;
+財産相続 > zaisansouzoku\ ;
+上智大学 > jouchidaigaku\ ;
+僧庵生活 > souanseikatsu\ ;
+法律用語 > houritsuyougo\ ;
+雌雄選択 > shiyuusentaku\ ;
+百花繚乱 > hyakkaryouran\ ;
+音楽療法 > ongakuryouhou\ ;
+住民登録 > juumintouroku\ ;
+断層写真 > dansoushashin\ ;
+占領地帯 > senryouchitai\ ;
+薬品会社 > yakuhingaisha\ ;
+出口調査 > deguchichousa\ ;
+能動免疫 > noudoumen''eki\ ;
+在留邦人 > zairyuuhoujin\ ;
+麦藁細工 > mugiwarasaiku\ ;
+工芸美術 > kougeibijutsu\ ;
+航空攻撃 > koukuukougeki\ ;
+重量選手 > juuryousenshu\ ;
+赤立羽蝶 > akatatehachou\ ;
+愛鳥週間 > aichoushuukan\ ;
+工業化学 > kougyoukagaku\ ;
+技術提携 > gijutsuteikei\ ;
+中性子星 > chuuseishisei\ ;
+公共事業 > koukyoujigyou\ ;
+上越本線 > jouetsuhonsen\ ;
+無償契約 > mushoukeiyaku\ ;
+閃光電球 > senkoudenkyuu\ ;
+国籍言語 > kokusekigengo\ ;
+定温動物 > teiondoubutsu\ ;
+空前絶後 > kuuzenzetsugo\ ;
+武力外交 > buryokugaikou\ ;
+戸籍抄本 > kosekishouhon\ ;
+朝鮮半島 > chousenhantou\ ;
+非常召集 > hijoushoushuu\ ;
+全般前哨 > zenpanzenshou\ ;
+大乗仏教 > daijoubukkyou\ ;
+分析試験 > bunsekishiken\ ;
+幽霊屋敷 > yuureiyashiki\ ;
+有産階級 > yuusankaikyuu\ ;
+権力政治 > kenryokuseiji\ ;
+脅迫電話 > kyouhakudenwa\ ;
+船荷証券 > funanishouken\ ;
+手旗信号 > tebatashingou\ ;
+栄養失調 > eiyoushitchou\ ;
+作況指数 > sakkyoushisuu\ ;
+相互通信 > sougotsuushin\ ;
+表層雪崩 > hyousounadare\ ;
+災害対策 > saigaitaisaku\ ;
+事実調査 > jijitsuchousa\ ;
+日経新聞 > nikkeishinbun\ ;
+中間選挙 > chuukansenkyo\ ;
+市長選挙 > shichousenkyo\ ;
+沈降海岸 > chinkoukaigan\ ;
+社会福祉 > shakaifukushi\ ;
+論功行賞 > ronkoukoushou\ ;
+実践躬行 > jissenkyuukou\ ;
+正副二通 > seifukunitsuu\ ;
+交感神経 > koukanshinkei\ ;
+消費革命 > shouhikakumei\ ;
+専任講師 > sen''ninkoushi\ ;
+大量生産 > tairyouseisan\ ;
+最高機密 > saikoukimitsu\ ;
+管弦楽法 > kangengakuhou\ ;
+新品同様 > shinpindouyou\ ;
+備荒貯蓄 > bikouchochiku\ ;
+薄志弱行 > hakushijakkou\ ;
+勤労階級 > kinroukaikyuu\ ;
+日印関係 > nichiinkankei\ ;
+長期計画 > choukikeikaku\ ;
+不時着陸 > fujichakuriku\ ;
+排泄器官 > haisetsukikan\ ;
+英文解釈 > eibunkaishaku\ ;
+免責条項 > mensekijoukou\ ;
+鉄道線路 > tetsudousenro\ ;
+攻撃態勢 > kougekitaisei\ ;
+定期昇給 > teikishoukyuu\ ;
+記述文法 > kijutsubunpou\ ;
+臣籍降下 > shinsekikouka\ ;
+炭酸飲料 > tansan''inryou\ ;
+市場拡大 > shijoukakudai\ ;
+精密機械 > seimitsukikai\ ;
+機動警察 > kidoukeisatsu\ ;
+年間収益 > nenkanshuueki\ ;
+仲裁裁定 > chuusaisaitei\ ;
+偵察要員 > teisatsuyouin\ ;
+文藝春秋 > bungeishunjuu\ ;
+人形芝居 > ningyoushibai\ ;
+水中眼鏡 > suichuumegane\ ;
+公序良俗 > koujoryouzoku\ ;
+婚前交渉 > konzenkoushou\ ;
+太陽黒点 > taiyoukokuten\ ;
+上御一人 > kamigoichinin\ ;
+主要工業 > shuyoukougyou\ ;
+下等動物 > katoudoubutsu\ ;
+臥薪嘗胆 > gashinshoutan\ ;
+診療支援 > shinryoushien\ ;
+転地療養 > tenchiryouyou\ ;
+万能選手 > ban''nousenshu\ ;
+教会音楽 > kyoukaiongaku\ ;
+千載一遇 > senzaiichiguu\ ;
+売買契約 > baibaikeiyaku\ ;
+住宅地帯 > juutakuchitai\ ;
+減速装置 > gensokusouchi\ ;
+住宅問題 > juutakumondai\ ;
+免疫血清 > men''ekikessei\ ;
+核反応炉 > kakuhan''nouro\ ;
+放射線学 > houshasengaku\ ;
+流通経路 > ryuutsuukeiro\ ;
+尋常一様 > jinjouichiyou\ ;
+国有財産 > kokuyuuzaisan\ ;
+市民階級 > shiminkaikyuu\ ;
+言語知識 > gengochishiki\ ;
+公共放送 > koukyouhousou\ ;
+斑状組織 > hanjousoshiki\ ;
+重爆撃機 > juubakugekiki\ ;
+婚外交渉 > kongaikoushou\ ;
+仲裁裁判 > chuusaisaiban\ ;
+侯爵夫人 > koushakufujin\ ;
+有色野菜 > yuushokuyasai\ ;
+集団訴訟 > shuudansoshou\ ;
+一次産業 > ichijisangyou\ ;
+練習不足 > renshuubusoku\ ;
+商船学校 > shousengakkou\ ;
+麦藁蜻蛉 > mugiwaratonbo\ ;
+有限集合 > yuugenshuugou\ ;
+追加料金 > tsuikaryoukin\ ;
+Π中間子 > paichuukanshi\ ;
+遠隔教育 > enkakukyouiku\ ;
+脳脊髄液 > nousekizuieki\ ;
+東西南北 > touzainanboku\ ;
+許容線量 > kyoyousenryou\ ;
+正札値段 > shoufudanedan\ ;
+差別関税 > sabetsukanzei\ ;
+中等学校 > chuutougakkou\ ;
+管弦楽団 > kangengakudan\ ;
+寄生生物 > kiseiseibutsu\ ;
+主権回復 > shukenkaifuku\ ;
+両部神道 > ryoubushintou\ ;
+終業時間 > shuugyoujikan\ ;
+絹布一巻 > kenpuhitomaki\ ;
+過圧密比 > kaatsumitsuhi\ ;
+自然選択 > shizensentaku\ ;
+反応速度 > han''nousokudo\ ;
+偵察衛星 > teisatsueisei\ ;
+正副議長 > seifukugichou\ ;
+神前結婚 > shinzenkekkon\ ;
+法的手段 > houtekishudan\ ;
+作業領域 > sagyouryouiki\ ;
+年金証書 > nenkinshousho\ ;
+交通妨害 > koutsuubougai\ ;
+町村合併 > chousongappei\ ;
+教会旋法 > kyoukaisenpou\ ;
+幕藩体制 > bakuhantaisei\ ;
+第一印象 > daiichiinshou\ ;
+真空包装 > shinkuuhousou\ ;
+監査証跡 > kansashouseki\ ;
+誘導電流 > yuudoudenryuu\ ;
+復旧作業 > fukkyuusagyou\ ;
+損害賠償 > songaibaishou\ ;
+想像妊娠 > souzouninshin\ ;
+虚心坦懐 > kyoshintankai\ ;
+耐震構造 > taishinkouzou\ ;
+有限級数 > yuugenkyuusuu\ ;
+国土計画 > kokudokeikaku\ ;
+生存競争 > seizonkyousou\ ;
+市民革命 > shiminkakumei\ ;
+大統領選 > daitouryousen\ ;
+補習教育 > hoshuukyouiku\ ;
+司令長官 > shireichoukan\ ;
+賃金体系 > chingintaikei\ ;
+全人教育 > zenjinkyouiku\ ;
+官房長官 > kanbouchoukan\ ;
+企業秘密 > kigyouhimitsu\ ;
+殺人事件 > satsujinjiken\ ;
+凶悪犯罪 > kyouakuhanzai\ ;
+天然資源 > ten''nenshigen\ ;
+百姓一揆 > hyakushouikki\ ;
+総合大学 > sougoudaigaku\ ;
+仏頂尊勝 > buchousonshou\ ;
+千差万別 > sensabanbetsu\ ;
+網状組織 > moujousoshiki\ ;
+第一部長 > daiichibuchou\ ;
+準準決勝 > junjunkesshou\ ;
+大和民族 > yamatominzoku\ ;
+年年歳歳 > nen''nensaisai\ ;
+地殻変動 > chikakuhendou\ ;
+財政改革 > zaiseikaikaku\ ;
+共同計算 > kyoudoukeisan\ ;
+写真電送 > shashindensou\ ;
+不良診断 > furyoushindan\ ;
+水産大学 > suisandaigaku\ ;
+単式火山 > tanshikikazan\ ;
+一分一厘 > ichibuichirin\ ;
+実地検証 > jitchikenshou\ ;
+北清事変 > hokushinjihen\ ;
+人面獣心 > ninmenjuushin\ ;
+計画段階 > keikakudankai\ ;
+社員食堂 > shainshokudou\ ;
+捧腹絶倒 > houfukuzettou\ ;
+郵便料金 > yuubinryoukin\ ;
+五十三次 > gojuusantsugi\ ;
+優勝劣敗 > yuushoureppai\ ;
+快速列車 > kaisokuressha\ ;
+難民条約 > nanminjouyaku\ ;
+国際放送 > kokusaihousou\ ;
+六十余州 > rokujuuyoshuu\ ;
+急行列車 > kyuukouressha\ ;
+森林地帯 > shinrinchitai\ ;
+鎖国政策 > sakokuseisaku\ ;
+具象美術 > gushoubijutsu\ ;
+懐石料理 > kaisekiryouri\ ;
+簡易食堂 > kan''ishokudou\ ;
+暗黒大陸 > ankokutairiku\ ;
+反動革命 > handoukakumei\ ;
+六根清浄 > rokkonshoujou\ ;
+商業主義 > shougyoushugi\ ;
+信頼醸成 > shinraijousei\ ;
+共同声明 > kyoudouseimei\ ;
+割引切符 > waribikikippu\ ;
+冷却期間 > reikyakukikan\ ;
+九死一生 > kyuushiisshou\ ;
+中華民国 > chuukaminkoku\ ;
+拡声装置 > kakuseisouchi\ ;
+道路建設 > dourokensetsu\ ;
+人造宝石 > jinzouhouseki\ ;
+輸出保険 > yushutsuhoken\ ;
+必修科目 > hisshuukamoku\ ;
+給与所得 > kyuuyoshotoku\ ;
+歴史学派 > rekishigakuha\ ;
+等差数列 > tousasuuretsu\ ;
+君子豹変 > kunshihyouhen\ ;
+下表参照 > kahyousanshou\ ;
+勢力範囲 > seiryokuhan''i\ ;
+通貨政策 > tsuukaseisaku\ ;
+独占企業 > dokusenkigyou\ ;
+特権階級 > tokkenkaikyuu\ ;
+正規曲線 > seikikyokusen\ ;
+傍聴無料 > bouchoumuryou\ ;
+産業資本 > sangyoushihon\ ;
+立石電機 > tateishidenki\ ;
+夜間中学 > yakanchuugaku\ ;
+貿易摩擦 > bouekimasatsu\ ;
+年輪史学 > nenrinshigaku\ ;
+機械翻訳 > kikaihon''yaku\ ;
+徹頭徹尾 > tettoutetsubi\ ;
+金科玉条 > kinkagyokujou\ ;
+民間療法 > minkanryouhou\ ;
+情況証拠 > joukyoushouko\ ;
+心悸亢進 > shinkikoushin\ ;
+定性分析 > teiseibunseki\ ;
+囃子言葉 > hayashikotoba\ ;
+特許技術 > tokkyogijutsu\ ;
+報道写真 > houdoushashin\ ;
+最低賃金 > saiteichingin\ ;
+瞬間電断 > shunkandendan\ ;
+年頭教書 > nentoukyousho\ ;
+東洋段通 > touyoudantsuu\ ;
+独占資本 > dokusenshihon\ ;
+東方教会 > touhoukyoukai\ ;
+自覚症状 > jikakushoujou\ ;
+天体観測 > tentaikansoku\ ;
+群集行動 > gunshuukoudou\ ;
+衆人環視 > shuujinkanshi\ ;
+迷走神経 > meisoushinkei\ ;
+戦略兵器 > senryakuheiki\ ;
+先制攻撃 > senseikougeki\ ;
+有給休暇 > yuukyuukyuuka\ ;
+見学旅行 > kengakuryokou\ ;
+国内経済 > kokunaikeizai\ ;
+対空射撃 > taikuushageki\ ;
+比較対照 > hikakutaishou\ ;
+市中銀行 > shichuuginkou\ ;
+定点観測 > teitenkansoku\ ;
+促成栽培 > sokuseisaibai\ ;
+賃金格差 > chinginkakusa\ ;
+支配階級 > shihaikaikyuu\ ;
+二重露出 > nijuuroshutsu\ ;
+動脈硬化 > doumyakukouka\ ;
+隣接部隊 > rinsetsubutai\ ;
+建設機械 > kensetsukikai\ ;
+上層階級 > jousoukaikyuu\ ;
+三拝九拝 > sanpaikyuuhai\ ;
+特殊法人 > tokushuhoujin\ ;
+士魂商才 > shikonshousai\ ;
+虚心担懐 > kyoshintankai\ ;
+傷病捕虜 > shoubyouhoryo\ ;
+無性生殖 > museiseishoku\ ;
+財政政策 > zaiseiseisaku\ ;
+陸上競技 > rikujoukyougi\ ;
+博覧強記 > hakurankyouki\ ;
+人権侵害 > jinkenshingai\ ;
+総領息子 > souryoumusuko\ ;
+菜食主義 > saishokushugi\ ;
+赤外発散 > sekigaihassan\ ;
+衛星通信 > eiseitsuushin\ ;
+人員削減 > jin''insakugen\ ;
+率先躬行 > sossenkyuukou\ ;
+免税所得 > menzeishotoku\ ;
+防縮加工 > boushukukakou\ ;
+複式簿記 > fukushikiboki\ ;
+責任分担 > sekininbuntan\ ;
+武力行使 > buryokukoushi\ ;
+番組編成 > bangumihensei\ ;
+休息時間 > kyuusokujikan\ ;
+二重関節 > nijuukansetsu\ ;
+観光産業 > kankousangyou\ ;
+博引旁証 > hakuinboushou\ ;
+共販会社 > kyouhangaisha\ ;
+揚陸艦艇 > yourikukantei\ ;
+主客顛倒 > shukakutentou\ ;
+公害対策 > kougaitaisaku\ ;
+陽動作戦 > youdousakusen\ ;
+誘拐犯人 > yuukaihan''nin\ ;
+内臓疾患 > naizoushikkan\ ;
+修士論文 > shuushironbun\ ;
+高等教育 > koutoukyouiku\ ;
+測量機械 > sokuryoukikai\ ;
+霊感商法 > reikanshouhou\ ;
+呪物崇拝 > jubutsusuuhai\ ;
+文人墨客 > bunjinbokkaku\ ;
+承知之助 > shouchinosuke\ ;
+越年草本 > etsunensouhon\ ;
+通勤列車 > tsuukinressha\ ;
+精進料理 > shoujinryouri\ ;
+主力部隊 > shuryokubutai\ ;
+郷土文学 > kyoudobungaku\ ;
+期末試験 > kimatsushiken\ ;
+連邦首相 > renpoushushou\ ;
+情報工学 > jouhoukougaku\ ;
+七分三分 > shichibusanbu\ ;
+公爵夫人 > koushakufujin\ ;
+参考資料 > sankoushiryou\ ;
+独断専行 > dokudansenkou\ ;
+入学考査 > nyuugakukousa\ ;
+遭難信号 > sounanshingou\ ;
+流動資産 > ryuudoushisan\ ;
+下四半期 > shimoshihanki\ ;
+選択科目 > sentakukamoku\ ;
+情報検索 > jouhoukensaku\ ;
+頂上会談 > choujoukaidan\ ;
+共済組合 > kyousaikumiai\ ;
+参考書目 > sankoushomoku\ ;
+治安警察 > chiankeisatsu\ ;
+興業銀行 > kougyouginkou\ ;
+行政書士 > gyouseishoshi\ ;
+関連項目 > kanrenkoumoku\ ;
+難行苦行 > nangyoukugyou\ ;
+預金通帳 > yokintsuuchou\ ;
+網膜剥離 > moumakuhakuri\ ;
+輸出検査 > yushutsukensa\ ;
+指定銘柄 > shiteimeigara\ ;
+酒池肉林 > shuchinikurin\ ;
+優等賞状 > yuutoushoujou\ ;
+黄金分割 > ougonbunkatsu\ ;
+修繕工場 > shuuzenkoujou\ ;
+二者選一 > nishasen''itsu\ ;
+状況証拠 > joukyoushouko\ ;
+菌類学者 > kinruigakusha\ ;
+仲裁々判 > chuusaisaiban\ ;
+外国郵便 > gaikokuyuubin\ ;
+交通地獄 > koutsuujigoku\ ;
+集団結婚 > shuudankekkon\ ;
+愛玩動物 > aigandoubutsu\ ;
+間接話法 > kansetsuwahou\ ;
+学生部長 > gakuseibuchou\ ;
+雲形定規 > kumogatajougi\ ;
+屋外広告 > okugaikoukoku\ ;
+亡命文学 > boumeibungaku\ ;
+連続関数 > renzokukansuu\ ;
+筆跡鑑定 > hissekikantei\ ;
+廃物利用 > haibutsuriyou\ ;
+車両会社 > sharyougaisha\ ;
+麻薬常習 > mayakujoushuu\ ;
+不得要領 > futokuyouryou\ ;
+山岳地帯 > sangakuchitai\ ;
+問題領域 > mondairyouiki\ ;
+個別販売 > kobetsuhanbai\ ;
+平衡感覚 > heikoukankaku\ ;
+内国郵便 > naikokuyuubin\ ;
+報道番組 > houdoubangumi\ ;
+共同組合 > kyoudoukumiai\ ;
+紙上計画 > shijoukeikaku\ ;
+二重国籍 > nijuukokuseki\ ;
+行政訴訟 > gyouseisoshou\ ;
+絶縁抵抗 > zetsuenteikou\ ;
+匿名批評 > tokumeihihyou\ ;
+長期国債 > choukikokusai\ ;
+光線療法 > kousenryouhou\ ;
+流動資本 > ryuudoushihon\ ;
+証券市場 > shoukenshijou\ ;
+建設工事 > kensetsukouji\ ;
+変態性欲 > hentaiseiyoku\ ;
+空中細菌 > kuuchuusaikin\ ;
+代金引換 > daikinhikikae\ ;
+茶番狂言 > chabankyougen\ ;
+交通規則 > koutsuukisoku\ ;
+会席料理 > kaisekiryouri\ ;
+現物相場 > genbutsusouba\ ;
+束縛理論 > sokubakuriron\ ;
+公正証書 > kouseishousho\ ;
+同盟怠業 > doumeitaigyou\ ;
+行動方針 > koudouhoushin\ ;
+適正価格 > tekiseikakaku\ ;
+人種改良 > jinshukairyou\ ;
+半流動体 > hanryuudoutai\ ;
+普仏戦争 > fufutsusensou\ ;
+二重結合 > nijuuketsugou\ ;
+免責特権 > mensekitokken\ ;
+懲戒処分 > choukaishobun\ ;
+不心得者 > fukokoroemono\ ;
+豪放磊落 > gouhourairaku\ ;
+艦砲射撃 > kanpoushageki\ ;
+関数解析 > kansuukaiseki\ ;
+通信講座 > tsuushinkouza\ ;
+外貨獲得 > gaikakakutoku\ ;
+心悸昂進 > shinkikoushin\ ;
+電気溶接 > denkiyousetsu\ ;
+吮癰舐痔 > sen''youshiji\ ;
+労働条件 > roudoujouken\ ;
+外国航路 > gaikokukouro\ ;
+伝送速度 > densousokudo\ ;
+一本調子 > ippondjoushi\ ;
+墜落事故 > tsuirakujiko\ ;
+線香花火 > senkouhanabi\ ;
+東京都政 > toukyoutosei\ ;
+軍事産業 > gunjisangyou\ ;
+代理牧師 > dairibokushi\ ;
+三十三所 > sanjuusansho\ ;
+一次線輪 > ichijisenrin\ ;
+価格変動 > kakakuhendou\ ;
+悠悠自適 > yuuyuujiteki\ ;
+山紫水明 > sanshisuimei\ ;
+空輸貨物 > kuuyukamotsu\ ;
+観光資源 > kankoushigen\ ;
+視覚言語 > shikakugengo\ ;
+麻薬常用 > mayakujouyou\ ;
+日朝辞典 > nitchoujiten\ ;
+店頭債券 > tentousaiken\ ;
+版権所有 > hankenshoyuu\ ;
+一泊行軍 > ippakukougun\ ;
+青空市場 > aozorashijou\ ;
+開票結果 > kaihyoukekka\ ;
+単独講和 > tandokukouwa\ ;
+近代科学 > kindaikagaku\ ;
+無神論者 > mushinronsha\ ;
+有形財産 > yuukeizaisan\ ;
+河岸段丘 > kagandankyuu\ ;
+太陽光線 > taiyoukousen\ ;
+億万長者 > okumanchouja\ ;
+化粧石鹸 > keshousekken\ ;
+言語療法 > gengoryouhou\ ;
+安定成長 > anteiseichou\ ;
+神権政治 > shinkenseiji\ ;
+至上命令 > shijoumeirei\ ;
+音楽美学 > ongakubigaku\ ;
+労働大臣 > roudoudaijin\ ;
+降格人事 > koukakujinji\ ;
+窒素肥料 > chissohiryou\ ;
+軍部独裁 > gunbudokusai\ ;
+公務疾病 > koumushippei\ ;
+花火大会 > hanabitaikai\ ;
+行雲流水 > kouunryuusui\ ;
+反対訊問 > hantaijinmon\ ;
+方向転換 > houkoutenkan\ ;
+無線技術 > musengijutsu\ ;
+艮下艮上 > gonkagonshou\ ;
+未来完了 > miraikanryou\ ;
+前進部隊 > zenshinbutai\ ;
+既約分数 > kiyakubunsuu\ ;
+公営住宅 > koueijuutaku\ ;
+監査報告 > kansahoukoku\ ;
+月経周期 > gekkeishuuki\ ;
+科学雑誌 > kagakuzasshi\ ;
+通貨統合 > tsuukatougou\ ;
+対地速度 > taichisokudo\ ;
+官僚主義 > kanryoushugi\ ;
+御調子者 > ochoushimono\ ;
+二足三文 > nisokusanmon\ ;
+酸性肥料 > sanseihiryou\ ;
+言文一致 > genbun''itchi\ ;
+共同管理 > kyoudoukanri\ ;
+海外旅行 > kaigairyokou\ ;
+不審尋問 > fushinjinmon\ ;
+責任転嫁 > sekinintenka\ ;
+長期手形 > choukitegata\ ;
+給与水準 > kyuuyosuijun\ ;
+少数精鋭 > shousuuseiei\ ;
+転換社債 > tenkanshasai\ ;
+沿岸漁業 > engangyogyou\ ;
+交際社会 > kousaishakai\ ;
+制限事項 > seigenjikoku\ ;
+刑事責任 > keijisekinin\ ;
+混合火薬 > kongoukayaku\ ;
+双務契約 > soumukeiyaku\ ;
+古典学者 > kotengakusha\ ;
+生活扶助 > seikatsufujo\ ;
+用益物権 > youekibukken\ ;
+出勤時間 > shukkinjikan\ ;
+相関係数 > soukankeisuu\ ;
+社会保障 > shakaihoshou\ ;
+協同動作 > kyoudoudousa\ ;
+情緒纒綿 > jouchotenmen\ ;
+立憲君主 > rikkenkunshu\ ;
+旅券査証 > ryokensashou\ ;
+落花狼藉 > rakkarouzeki\ ;
+化学製品 > kagakuseihin\ ;
+適性検査 > tekiseikensa\ ;
+生命科学 > seimeikagaku\ ;
+工作機械 > kousakukikai\ ;
+図書館学 > toshokangaku\ ;
+人口問題 > jinkoumondai\ ;
+御用学者 > goyougakusha\ ;
+気圧配置 > kiatsuhaichi\ ;
+時限爆弾 > jigenbakudan\ ;
+自然対数 > shizentaisuu\ ;
+夜間撮影 > yakansatsuei\ ;
+神経繊維 > shinkeisen''i\ ;
+流動負債 > ryuudoufusai\ ;
+最高記録 > saikoukiroku\ ;
+新規事業 > shinkijigyou\ ;
+姓名判断 > seimeihandan\ ;
+反対給付 > hantaikyuufu\ ;
+敗戦投手 > haisentoushu\ ;
+武漢三鎮 > bukansanchin\ ;
+一朝一夕 > itchouisseki\ ;
+家内工業 > kanaikougyou\ ;
+浅学菲才 > sengakuhisai\ ;
+混合経済 > kongoukeizai\ ;
+市民団体 > shimindantai\ ;
+企業連合 > kigyourengou\ ;
+時代感覚 > jidaikankaku\ ;
+共同因子 > kyoudouinshi\ ;
+一意専心 > ichiisenshin\ ;
+欧米諸国 > oubeishokoku\ ;
+革命運動 > kakumeiundou\ ;
+純粋培養 > junsuibaiyou\ ;
+再三再四 > saisansaishi\ ;
+形而上学 > keijijougaku\ ;
+地方団体 > chihoudantai\ ;
+公民学校 > koumingakkou\ ;
+価格統制 > kakakutousei\ ;
+意匠登録 > ishoutouroku\ ;
+受動喫煙 > judoukitsuen\ ;
+製缶工場 > seikankoujou\ ;
+固形燃料 > kokeinenryou\ ;
+郵便為替 > yuubinkawase\ ;
+口頭弁論 > koutoubenron\ ;
+立体化学 > rittaikagaku\ ;
+品行方正 > hinkouhousei\ ;
+販売価格 > hanbaikakaku\ ;
+恋愛結婚 > ren''aikekkon\ ;
+北米土人 > hokubeidojin\ ;
+臨海学校 > rinkaigakkou\ ;
+一語一語 > ichigoichigo\ ;
+半官半民 > hankanhanmin\ ;
+大国主義 > taikokushugi\ ;
+洋服箪笥 > youfukudansu\ ;
+一方通行 > ippoutsuukou\ ;
+参考文献 > sankoubunken\ ;
+信仰箇条 > shinkoukajou\ ;
+民間資本 > minkanshihon\ ;
+一汁一菜 > ichijuuissai\ ;
+十種競技 > jisshukyougi\ ;
+平和共存 > heiwakyouzon\ ;
+単線運転 > tansen''unten\ ;
+事後承諾 > jigoshoudaku\ ;
+映像信号 > eizoushingou\ ;
+安全対策 > anzentaisaku\ ;
+生産組合 > seisankumiai\ ;
+居住水準 > kyojuusuijun\ ;
+算用数字 > san''yousuuji\ ;
+姉妹会社 > shimaigaisha\ ;
+選挙公報 > senkyokouhou\ ;
+仏像二座 > butsuzouniza\ ;
+観光旅行 > kankouryokou\ ;
+研究課題 > kenkyuukadai\ ;
+金拾万円 > kinjuuman''en\ ;
+屎尿処理 > shinyoushori\ ;
+商事会社 > shoujigaisha\ ;
+集合場所 > shuugoubasho\ ;
+形容詞幹 > keiyoushikan\ ;
+条件反射 > joukenhansha\ ;
+信徒伝動 > shintodendou\ ;
+有料道路 > yuuryoudouro\ ;
+業務妨害 > gyoumubougai\ ;
+阿片中毒 > ahenchuudoku\ ;
+細胞融合 > saibouyuugou\ ;
+名人気質 > meijinkatagi\ ;
+郵政大臣 > yuuseidaijin\ ;
+人権擁護 > jinken''yougo\ ;
+兄弟喧嘩 > kyoudaigenka\ ;
+巡航速度 > junkousokudo\ ;
+一夜大臣 > ichiyadaijin\ ;
+獅子奮迅 > shishifunjin\ ;
+閨秀作家 > keishuusakka\ ;
+専門学校 > senmongakkou\ ;
+改革過程 > kaikakukatei\ ;
+緊急措置 > kinkyuusochi\ ;
+画竜天睛 > garyoutensei\ ;
+一進一退 > isshin''ittai\ ;
+定常状態 > teijoujoutai\ ;
+指数関数 > shisuukansuu\ ;
+試験科目 > shikenkamoku\ ;
+災害救助 > saigaikyuujo\ ;
+冶金学者 > yakingakusha\ ;
+地方銀行 > chihouginkou\ ;
+経済発展 > keizaihatten\ ;
+特殊兵器 > tokushuheiki\ ;
+海中公園 > kaichuukouen\ ;
+団体旅行 > dantairyokou\ ;
+三叉神経 > sansashinkei\ ;
+欲求不満 > yokkyuufuman\ ;
+終夜営業 > shuuyaeigyou\ ;
+地下組織 > chikasoshiki\ ;
+耐震家屋 > taishinkaoku\ ;
+正三角形 > seisankakkei\ ;
+走行車線 > soukoushasen\ ;
+空気調整 > kuukichousei\ ;
+運動神経 > undoushinkei\ ;
+受胎告知 > jutaikokuchi\ ;
+解答用紙 > kaitouyoushi\ ;
+不所存者 > fushozonmono\ ;
+加工産業 > kakousangyou\ ;
+規格原案 > kikakugen''an\ ;
+和魂洋才 > wakon''yousai\ ;
+反戦運動 > hansen''undou\ ;
+諸行無常 > shogyoumujou\ ;
+契約期間 > keiyakukikan\ ;
+人文科学 > jinbunkagaku\ ;
+一人一人 > hitoribitori\ ;
+励振素子 > reishinsoshi\ ;
+宇宙工学 > uchuukougaku\ ;
+事前日付 > jizenhidzuke\ ;
+自家撞着 > jikadouchaku\ ;
+石灰肥料 > sekkaihiryou\ ;
+公益優先 > kouekiyuusen\ ;
+日豊本線 > nippouhonsen\ ;
+石油化学 > sekiyukagaku\ ;
+相対速度 > soutaisokudo\ ;
+黒字倒産 > kurojitousan\ ;
+内憂外患 > naiyuugaikan\ ;
+関数空間 > kansuukuukan\ ;
+付属病院 > fuzokubyouin\ ;
+臨床医学 > rinshouigaku\ ;
+米海兵隊 > beikaiheitai\ ;
+拱手傍観 > koushuboukan\ ;
+順法闘争 > junpoutousou\ ;
+戦闘陣地 > sentoujinchi\ ;
+一挙一動 > ikkyoichidou\ ;
+威嚇射撃 > ikakushageki\ ;
+実地試験 > jitchishiken\ ;
+中間景気 > chuukankeiki\ ;
+司教権座 > shikyoukenza\ ;
+変更履歴 > henkourireki\ ;
+連戦連敗 > rensenrenpai\ ;
+歯槽膿漏 > shisounourou\ ;
+素粒子論 > soryuushiron\ ;
+衛星中継 > eiseichuukei\ ;
+圧延工場 > atsuenkoujou\ ;
+分娩臥床 > bunbengashou\ ;
+人造絹糸 > jinzoukenshi\ ;
+痕跡器官 > konsekikikan\ ;
+蛍光塗料 > keikoutoryou\ ;
+公判調査 > kouhanchousa\ ;
+連絡会議 > renrakukaigi\ ;
+公教要理 > koukyouyouri\ ;
+骨董品店 > kottouhinten\ ;
+十二指腸 > juunishichou\ ;
+財政問題 > zaiseimondai\ ;
+言語学者 > gengogakusha\ ;
+金融機関 > kin''yuukikan\ ;
+田園詩人 > den''enshijin\ ;
+等比級数 > touhikyuusuu\ ;
+道化役者 > doukeyakusha\ ;
+津津浦浦 > tsudzuuraura\ ;
+乾燥地帯 > kansouchitai\ ;
+音節主音 > onsetsushuon\ ;
+航海日誌 > koukainisshi\ ;
+半封建性 > hanhoukensei\ ;
+恋愛関係 > ren''aikankei\ ;
+成長過程 > seichoukatei\ ;
+連帯保証 > rentaihoshou\ ;
+心臓肥大 > shinzouhidai\ ;
+天壌無窮 > tenjoumukyuu\ ;
+全身麻酔 > zenshinmasui\ ;
+回線交換 > kaisenkoukan\ ;
+輸入制限 > yunyuuseigen\ ;
+構造不況 > kouzoufukyou\ ;
+自己共役 > jikokyouyaku\ ;
+構成分子 > kouseibunshi\ ;
+市場展開 > shijoutenkai\ ;
+店頭販売 > tentouhanbai\ ;
+合唱隊員 > gasshoutaiin\ ;
+経費削減 > keihisakugen\ ;
+文芸復興 > bungeifukkou\ ;
+環太平洋 > kantaiheiyou\ ;
+名義書換 > meigikakikae\ ;
+重大問題 > juudaimondai\ ;
+非科学的 > hikagakuteki\ ;
+限定戦争 > genteisensou\ ;
+不在証明 > fuzaishoumei\ ;
+医学博士 > igakuhakushi\ ;
+案内書呈 > an''naishotei\ ;
+専制君主 > senseikunshu\ ;
+勤務実績 > kinmujisseki\ ;
+機密事項 > kimitsujikou\ ;
+早期診断 > soukishindan\ ;
+停止価格 > teishikakaku\ ;
+記憶容量 > kiokuyouryou\ ;
+出生過剰 > shusseikajou\ ;
+引退興行 > intaikougyou\ ;
+三味線弾 > shamisenhiki\ ;
+試験段階 > shikendankai\ ;
+軍事介入 > gunjikainyuu\ ;
+政治道徳 > seijidoutoku\ ;
+国営企業 > kokueikigyou\ ;
+帰巣本能 > kisouhon''nou\ ;
+両性具有 > ryouseiguyuu\ ;
+黄金万能 > ougonban''nou\ ;
+担当課長 > tantoukachou\ ;
+混成競技 > konseikyougi\ ;
+労働攻勢 > roudoukousei\ ;
+閑話休題 > kanwakyuudai\ ;
+役務賠償 > ekimubaishou\ ;
+平和産業 > heiwasangyou\ ;
+印象批評 > inshouhihyou\ ;
+停滞前線 > teitaizensen\ ;
+民間放送 > minkanhousou\ ;
+属地主義 > zokuchishugi\ ;
+出版部数 > shuppanbusuu\ ;
+自動人形 > jidouningyou\ ;
+意志薄弱 > ishihakujaku\ ;
+心理戦争 > shinrisensou\ ;
+課税所得 > kazeishotoku\ ;
+流行作家 > ryuukousakka\ ;
+根気仕事 > konkishigoto\ ;
+軽犯罪法 > keihanzaihou\ ;
+揣摩憶測 > shimaokusoku\ ;
+改修工事 > kaishuukouji\ ;
+対抗意識 > taikouishiki\ ;
+道路交通 > dourokoutsuu\ ;
+法廷侮辱 > houteibujoku\ ;
+光学機械 > kougakukikai\ ;
+脱字記号 > datsujikigou\ ;
+公有水面 > kouyuusuimen\ ;
+陰性反応 > inseihan''nou\ ;
+均衡経済 > kinkoukeizai\ ;
+蘭栽培法 > ransaibaihou\ ;
+武装集団 > busoushuudan\ ;
+印鑑証明 > inkanshoumei\ ;
+域内貿易 > ikinaiboueki\ ;
+使徒行伝 > shitogyouden\ ;
+佳人薄命 > kajinhakumei\ ;
+有体資産 > yuutaishisan\ ;
+対泰関係 > taitaikankei\ ;
+欧州連合 > oushuurengou\ ;
+女子学生 > joshigakusei\ ;
+単純平均 > tanjunheikin\ ;
+再度確認 > saidokakunin\ ;
+鬼面伝心 > kimendenshin\ ;
+貿易黒字 > bouekikuroji\ ;
+組合員証 > kumiaiinshou\ ;
+熟柿主義 > jukushishugi\ ;
+冷房装置 > reibousouchi\ ;
+現地生産 > genchiseisan\ ;
+新聞記者 > shinbunkisha\ ;
+大山鳴動 > taizanmeidou\ ;
+波状攻撃 > hajoukougeki\ ;
+単記投票 > tankitouhyou\ ;
+一次関数 > ichijikansuu\ ;
+幼形進化 > youkeishinka\ ;
+青物市場 > aomonoichiba\ ;
+学生運動 > gakuseiundou\ ;
+報復措置 > houfukusochi\ ;
+回復可能 > kaifukukanou\ ;
+正角定木 > seikakujougi\ ;
+歴史地理 > rekishichiri\ ;
+年中無休 > nenjuumukyuu\ ;
+画竜点睛 > garyoutensei\ ;
+代数的和 > daisuutekiwa\ ;
+左右相称 > sayuusoushou\ ;
+帝国主義 > teikokushugi\ ;
+西洋松露 > seiyoushouro\ ;
+回転勘定 > kaitenkanjou\ ;
+依託射撃 > itakushageki\ ;
+正規表現 > seikihyougen\ ;
+総領事館 > souryoujikan\ ;
+盗難防止 > tounanboushi\ ;
+滅私奉公 > messhihoukou\ ;
+総合科学 > sougoukagaku\ ;
+拘束時間 > kousokujikan\ ;
+四方八方 > shihouhappou\ ;
+主要諸元 > shuyoushogen\ ;
+十分条件 > juubunjouken\ ;
+時代思潮 > jidaishichou\ ;
+代理投票 > dairitouhyou\ ;
+古典音楽 > koten''ongaku\ ;
+銀行強盗 > ginkougoutou\ ;
+起爆装置 > kibakusouchi\ ;
+逮捕許諾 > taihokyodaku\ ;
+歯牙疾患 > shigashikkan\ ;
+共同祖界 > kyoudousokai\ ;
+油断大敵 > yudantaiteki\ ;
+専業農家 > sengyounouka\ ;
+熱可塑性 > netsukasosei\ ;
+市有財産 > shiyuuzaisan\ ;
+国家賠償 > kokkabaishou\ ;
+静態総計 > seitaisoukei\ ;
+専門雑誌 > senmonzasshi\ ;
+弾丸列車 > danganressha\ ;
+大正時代 > taishoujidai\ ;
+設計変更 > sekkeihenkou\ ;
+了解事項 > ryoukaijikou\ ;
+実験段階 > jikkendankai\ ;
+官僚政治 > kanryouseiji\ ;
+人種問題 > jinshumondai\ ;
+演習問題 > enshuumondai\ ;
+労働組合 > roudoukumiai\ ;
+醇風美俗 > junpuubizoku\ ;
+造反有理 > zouhan''yuuri\ ;
+消費性向 > shouhiseikou\ ;
+御用新聞 > goyoushinbun\ ;
+公定価格 > kouteikakaku\ ;
+堆積作用 > taisekisayou\ ;
+攻守同盟 > koushudoumei\ ;
+工科大学 > koukadaigaku\ ;
+社公連合 > shakourengou\ ;
+軍事教練 > gunjikyouren\ ;
+平和条約 > heiwajouyaku\ ;
+無資格者 > mushikakusha\ ;
+相殺関税 > sousaikanzei\ ;
+即時停戦 > sokujiteisen\ ;
+測地衛星 > sokuchieisei\ ;
+空中浮遊 > kuuchuufuyuu\ ;
+信用詐欺 > shin''yousagi\ ;
+明眸皓歯 > meiboukoushi\ ;
+上等兵曹 > joutouheisou\ ;
+金利政策 > kinriseisaku\ ;
+草根木皮 > soukonmokuhi\ ;
+労働災害 > roudousaigai\ ;
+推定年齢 > suiteinenrei\ ;
+日本文学 > nihonbungaku\ ;
+実験科学 > jikkenkagaku\ ;
+危険信号 > kikenshingou\ ;
+西欧諸国 > seioushokoku\ ;
+夜間営業 > yakan''eigyou\ ;
+使徒承伝 > shitoshouden\ ;
+国家主席 > kokkashuseki\ ;
+雪見灯籠 > yukimidourou\ ;
+主席判事 > shusekihanji\ ;
+官製葉書 > kanseihagaki\ ;
+伝記文学 > denkibungaku\ ;
+制動放射 > seidouhousha\ ;
+法律行為 > houritsukoui\ ;
+共産国家 > kyousankokka\ ;
+教育機関 > kyouikukikan\ ;
+非常信号 > hijoushingou\ ;
+雪見障子 > yukimishouji\ ;
+機構改革 > kikoukaikaku\ ;
+御玉杓子 > otamajakushi\ ;
+最終結果 > saishuukekka\ ;
+特恵関税 > tokkeikanzei\ ;
+地震予知 > jishin''yochi\ ;
+共同募金 > kyoudoubokin\ ;
+事務当局 > jimutoukyoku\ ;
+三号雑誌 > sangouzasshi\ ;
+漏洩電流 > roueidenryuu\ ;
+宣戦布告 > sensenfukoku\ ;
+共産地区 > kyousanchiku\ ;
+代用教員 > daiyoukyouin\ ;
+三角定規 > sankakujougi\ ;
+西洋将棋 > seiyoushougi\ ;
+信号無視 > shingoumushi\ ;
+土地改革 > tochikaikaku\ ;
+瀬戸物市 > setomonoichi\ ;
+安倍川餅 > abekawamochi\ ;
+東欧諸国 > tououshokoku\ ;
+跡目相続 > atomesouzoku\ ;
+人工呼吸 > jinkoukokyuu\ ;
+航空郵便 > koukuuyuubin\ ;
+並行輸入 > heikouyunyuu\ ;
+経済格差 > keizaikakusa\ ;
+社会資本 > shakaishihon\ ;
+外交特権 > gaikoutokken\ ;
+業務提携 > gyoumuteikei\ ;
+潜在意識 > senzaiishiki\ ;
+制御装置 > seigyosouchi\ ;
+所所方方 > shoshohoubou\ ;
+固体燃料 > kotainenryou\ ;
+鼻元思案 > hanamotojian\ ;
+右折禁止 > usetsukinshi\ ;
+千思万考 > senshibankou\ ;
+依願退職 > igantaishoku\ ;
+三部合唱 > sanbugasshou\ ;
+言語中枢 > gengochuusuu\ ;
+現代文明 > gendaibunmei\ ;
+養護学級 > yougogakkyuu\ ;
+回転運動 > kaiten''undou\ ;
+運輸業者 > un''yugyousha\ ;
+石油公団 > sekiyukoudan\ ;
+局部麻酔 > kyokubumasui\ ;
+義太夫節 > gidayuubushi\ ;
+金属加工 > kinzokukakou\ ;
+悪性腫瘍 > akuseishuyou\ ;
+馬鹿正直 > bakashoujiki\ ;
+合弁会社 > goubengaisha\ ;
+公益事業 > kouekijigyou\ ;
+信号電波 > shingoudenpa\ ;
+津々浦々 > tsudzuuraura\ ;
+内輪同志 > uchiwadoushi\ ;
+社会事業 > shakaijigyou\ ;
+零細企業 > reisaikigyou\ ;
+国定公園 > kokuteikouen\ ;
+応力径路 > ouryokukeiro\ ;
+控訴棄却 > kousokikyaku\ ;
+通勤定期 > tsuukinteiki\ ;
+歴史地図 > rekishichizu\ ;
+電子郵便 > denshiyuubin\ ;
+人工知能 > jinkouchinou\ ;
+空中投下 > kuuchuutouka\ ;
+楽天主義 > rakutenshugi\ ;
+海外投資 > kaigaitoushi\ ;
+暗証番号 > anshoubangou\ ;
+年齢制限 > nenreiseigen\ ;
+価格戦争 > kakakusensou\ ;
+高速度鋼 > kousokudokou\ ;
+火力支援 > karyokushien\ ;
+高速道路 > kousokudouro\ ;
+使用禁止 > shiyoukinshi\ ;
+冠婚葬祭 > kankonsousai\ ;
+水平尾翼 > suiheibiyoku\ ;
+決議機関 > ketsugikikan\ ;
+連鎖反応 > rensahan''nou\ ;
+市民社会 > shiminshakai\ ;
+部分集合 > bubunshuugou\ ;
+四捨五入 > shishagonyuu\ ;
+受託会社 > jutakugaisha\ ;
+問題意識 > mondaiishiki\ ;
+金融公庫 > kin''yuukouko\ ;
+友達甲斐 > tomodachigai\ ;
+一般教養 > ippankyouyou\ ;
+安定恐慌 > anteikyoukou\ ;
+水素化物 > suisokabutsu\ ;
+環境変化 > kankyouhenka\ ;
+体格検査 > taikakukensa\ ;
+化学合成 > kagakugousei\ ;
+平平凡凡 > heiheibonbon\ ;
+市場価格 > shijoukakaku\ ;
+善隣関係 > zenrinkankei\ ;
+合成洗剤 > gouseisenzai\ ;
+観念主義 > kan''nenshugi\ ;
+通勤時間 > tsuukinjikan\ ;
+経済体制 > keizaitaisei\ ;
+住所氏名 > juushoshimei\ ;
+疾風怒濤 > shippuudotou\ ;
+医療材料 > iryouzairyou\ ;
+有機農業 > yuukinougyou\ ;
+妨害放送 > bougaihousou\ ;
+金属元素 > kinzokugenso\ ;
+歯内療法 > shikaryouhou\ ;
+悪戯小僧 > itazurakozou\ ;
+全権大使 > zenkentaishi\ ;
+危急存亡 > kikyuusonbou\ ;
+宇宙中継 > uchuuchuukei\ ;
+非人間的 > hiningenteki\ ;
+受信装置 > jushinsouchi\ ;
+数値計算 > suuchikeisan\ ;
+片言隻語 > hengensekigo\ ;
+懐中時計 > kaichuudokei\ ;
+競輪選手 > keirinsenshu\ ;
+暗号解読 > angoukaidoku\ ;
+反動思想 > handoushisou\ ;
+実証主義 > jisshoushugi\ ;
+標準偏差 > hyoujunhensa\ ;
+資源問題 > shigenmondai\ ;
+運送業者 > unsougyousha\ ;
+行動地帯 > koudouchitai\ ;
+平等主義 > byoudoushugi\ ;
+交代投手 > koutaitoushu\ ;
+国家独占 > kokkadokusen\ ;
+土地改良 > tochikairyou\ ;
+環境基準 > kankyoukijun\ ;
+外交文書 > gaikoubunsho\ ;
+軽挙妄動 > keikyomoudou\ ;
+防虫加工 > bouchuukakou\ ;
+不在投票 > fuzaitouhyou\ ;
+嫌煙運動 > ken''en''undou\ ;
+封緘葉書 > fuukanhagaki\ ;
+泰然自若 > taizenjijaku\ ;
+敗北主義 > haibokushugi\ ;
+価格性能 > kakakuseinou\ ;
+書類送検 > shoruisouken\ ;
+人権問題 > jinkenmondai\ ;
+一死報国 > isshihoukoku\ ;
+練馬大根 > nerimadaikon\ ;
+一糸一毫 > isshiichigou\ ;
+特殊事情 > tokushujijou\ ;
+老少不定 > roushoufutei\ ;
+相乗平均 > soujouheikin\ ;
+万年候補 > man''nenkouho\ ;
+安全教育 > anzenkyouiku\ ;
+無賃乗車 > muchinjousha\ ;
+片務契約 > henmukeiyaku\ ;
+一般大衆 > ippantaishuu\ ;
+古典文学 > kotenbungaku\ ;
+高校野球 > koukouyakyuu\ ;
+不審訊問 > fushinjinmon\ ;
+中華料理 > chuukaryouri\ ;
+健康状態 > kenkoujoutai\ ;
+鹿児島県 > kagoshimaken\ ;
+準備状況 > junbijoukyou\ ;
+選外佳作 > sengaikasaku\ ;
+言語教育 > gengokyouiku\ ;
+同文同種 > doubundoushu\ ;
+給与体系 > kyuuyotaikei\ ;
+麻薬犯罪 > mayakuhanzai\ ;
+朝令暮改 > choureibokai\ ;
+互恵条約 > gokeijouyaku\ ;
+一国一票 > ikkokuippyou\ ;
+砲艦外交 > houkangaikou\ ;
+流行言葉 > hayarikotoba\ ;
+交通機関 > koutsuukikan\ ;
+水銀電池 > suigindenchi\ ;
+追善供養 > tsuizenkuyou\ ;
+他力本願 > tarikihongan\ ;
+符号解読 > fugoukaidoku\ ;
+知能指数 > chinoushisuu\ ;
+当営業所 > toueigyousho\ ;
+職員会議 > shokuinkaigi\ ;
+言語特有 > gengotokuyuu\ ;
+最小限度 > saishougendo\ ;
+染井吉野 > someiyoshino\ ;
+完全犯罪 > kanzenhanzai\ ;
+教育制度 > kyouikuseido\ ;
+戦国時代 > sengokujidai\ ;
+前駆症状 > zenkushoujou\ ;
+紫綬褒賞 > shijuhoushou\ ;
+一言半句 > ichigonhanku\ ;
+不法占有 > fuhousen''yuu\ ;
+家庭環境 > kateikankyou\ ;
+舞台監督 > butaikantoku\ ;
+合成皮革 > gouseihikaku\ ;
+在宅勤務 > zaitakukinmu\ ;
+不在地主 > fuzaijinushi\ ;
+一宿一飯 > isshukuippan\ ;
+老人病院 > roujinbyouin\ ;
+片肺飛行 > katahaihikou\ ;
+対潜水艦 > taisensuikan\ ;
+警戒警報 > keikaikeihou\ ;
+累積赤字 > ruisekiakaji\ ;
+家族構成 > kazokukousei\ ;
+内柔外剛 > naijuugaigou\ ;
+属人主義 > zokujinshugi\ ;
+硬軟両派 > kounanryouha\ ;
+座席番号 > zasekibangou\ ;
+空中浮揚 > kuuchuufuyou\ ;
+丁稚奉公 > detchiboukou\ ;
+一方交通 > ippoukoutsuu\ ;
+三日月形 > mikadzukikei\ ;
+検事総長 > kenjisouchou\ ;
+新規投資 > shinkitoushi\ ;
+単語検索 > tangokensaku\ ;
+隠匿物資 > intokubusshi\ ;
+女人禁制 > nyoninkinsei\ ;
+大修道院 > daishuudouin\ ;
+森林公園 > shinrinkouen\ ;
+受験資格 > jukenshikaku\ ;
+大和言葉 > yamatokotoba\ ;
+儀式主義 > gishikishugi\ ;
+造山運動 > zouzan''undou\ ;
+一般教育 > ippankyouiku\ ;
+立体音響 > rittaionkyou\ ;
+特集記事 > tokushuukiji\ ;
+付帯決議 > futaiketsugi\ ;
+製紙工場 > seishikoujou\ ;
+救援投手 > kyuuentoushu\ ;
+財団法人 > zaidanhoujin\ ;
+民俗舞踊 > minzokubuyou\ ;
+戦争犯罪 > sensouhanzai\ ;
+難燃加工 > nan''nenkakou\ ;
+南船北馬 > nansenhokuba\ ;
+機能障害 > kinoushougai\ ;
+日本国民 > nihonkokumin\ ;
+舞踏教師 > butoukyoushi\ ;
+林間学校 > rinkangakkou\ ;
+花魁道中 > oirandouchuu\ ;
+滑降競技 > kakkoukyougi\ ;
+在外公館 > zaigaikoukan\ ;
+地方選挙 > chihousenkyo\ ;
+合成化学 > gouseikagaku\ ;
+私製葉書 > shiseihagaki\ ;
+不定積分 > futeisekibun\ ;
+正々堂々 > seiseidoudou\ ;
+半信半疑 > hanshinhangi\ ;
+輸入超過 > yunyuuchouka\ ;
+四元速度 > shigensokudo\ ;
+付属学校 > fuzokugakkou\ ;
+人工真珠 > jinkoushinju\ ;
+人権団体 > jinkendantai\ ;
+本文批評 > honmonhihyou\ ;
+画龍点睛 > garyoutensei\ ;
+乾地農法 > kanchinouhou\ ;
+喧喧囂囂 > kenkengougou\ ;
+人定尋問 > jinteijinmon\ ;
+任期満了 > ninkimanryou\ ;
+競馬新聞 > keibashinbun\ ;
+電気工学 > denkikougaku\ ;
+供給過多 > kyoukyuukata\ ;
+口頭審理 > koutoushinri\ ;
+平和教育 > heiwakyouiku\ ;
+総合病院 > sougoubyouin\ ;
+上層気流 > jousoukiryuu\ ;
+老齢年金 > roureinenkin\ ;
+演奏練習 > ensourenshuu\ ;
+仕掛地雷 > shikakejirai\ ;
+回転資金 > kaitenshikin\ ;
+暗中模索 > anchuumosaku\ ;
+唯我独尊 > yuigadokuson\ ;
+集散主義 > shuusanshugi\ ;
+土産物屋 > miyagemonoya\ ;
+自給自足 > jikyuujisoku\ ;
+和平協定 > waheikyoutei\ ;
+地方分権 > chihoubunken\ ;
+市内観光 > shinaikankou\ ;
+放射能雨 > houshanouame\ ;
+諜報機関 > chouhoukikan\ ;
+就学義務 > shuugakugimu\ ;
+航空優勢 > koukuuyuusei\ ;
+人才登用 > jinzaitouyou\ ;
+複本位制 > fukuhon''isei\ ;
+生活保護 > seikatsuhogo\ ;
+集中豪雨 > shuuchuugouu\ ;
+徴兵免除 > chouheimenjo\ ;
+公害問題 > kougaimondai\ ;
+単身赴任 > tanshinfunin\ ;
+差別用語 > sabetsuyougo\ ;
+人口動態 > jinkoudoutai\ ;
+宇宙物理 > uchuubutsuri\ ;
+全面戦争 > zenmensensou\ ;
+経済状態 > keizaijoutai\ ;
+委託研究 > itakukenkyuu\ ;
+千辛万苦 > senshinbanku\ ;
+医療報酬 > iryouhoushuu\ ;
+水晶時計 > suishoudokei\ ;
+三文文士 > sanmonbunshi\ ;
+回転木馬 > kaitenmokuba\ ;
+不戦条約 > fusenjouyaku\ ;
+一生懸命 > isshoukenmei\ ;
+日進月歩 > nisshingeppo\ ;
+受託販売 > jutakuhanbai\ ;
+文化勲章 > bunkakunshou\ ;
+悠悠閑閑 > yuuyuukankan\ ;
+仏英辞典 > futsueijiten\ ;
+衛生工学 > eiseikougaku\ ;
+政見放送 > seikenhousou\ ;
+水性塗料 > suiseitoryou\ ;
+先進兵器 > senshinheiki\ ;
+自己中心 > jikochuushin\ ;
+同和教育 > douwakyouiku\ ;
+学齢児童 > gakureijidou\ ;
+聖地巡礼 > seichijunrei\ ;
+社団法人 > shadanhoujin\ ;
+貨物輸送 > kamotsuyusou\ ;
+正多角形 > seitakakukei\ ;
+電気容量 > denkiyouryou\ ;
+準禁治産 > junkinchisan\ ;
+化学構造 > kagakukouzou\ ;
+一党独裁 > ittoudokusai\ ;
+無限小数 > mugenshousuu\ ;
+渾然一体 > konzen''ittai\ ;
+海底地震 > kaiteijishin\ ;
+博士課程 > hakushikatei\ ;
+平均寿命 > heikinjumyou\ ;
+市民運動 > shimin''undou\ ;
+記念出版 > kinenshuppan\ ;
+装置制御 > souchiseigyo\ ;
+原裁判所 > gensaibansho\ ;
+厚生大臣 > kouseidaijin\ ;
+油脂工業 > yushikougyou\ ;
+総支配人 > soushihainin\ ;
+日照時間 > nisshoujikan\ ;
+一般教書 > ippankyousho\ ;
+一部始終 > ichibushijuu\ ;
+関数原型 > kansuugenkei\ ;
+三重宝冠 > sanjuuhoukan\ ;
+歓送迎会 > kansougeikai\ ;
+緊急避難 > kinkyuuhinan\ ;
+刹那主義 > setsunashugi\ ;
+工業地区 > kougyouchiku\ ;
+我楽多市 > garakutaichi\ ;
+転写捺染 > tenshanassen\ ;
+自然災害 > shizensaigai\ ;
+天井棧敷 > tenjousajiki\ ;
+先行条件 > senkoujouken\ ;
+月下氷人 > gekkahyoujin\ ;
+医薬分業 > iyakubungyou\ ;
+身元保証 > mimotohoshou\ ;
+純正科学 > junseikagaku\ ;
+二重道徳 > nijuudoutoku\ ;
+悲喜交交 > hikikomogomo\ ;
+緊急動議 > kinkyuudougi\ ;
+太陽電池 > taiyoudenchi\ ;
+街頭録音 > gaitourokuon\ ;
+国際機関 > kokusaikikan\ ;
+前傾姿勢 > zenkeishisei\ ;
+帰属意識 > kizokuishiki\ ;
+公衆便所 > koushuubenjo\ ;
+日本国内 > nihonkokunai\ ;
+選民思想 > senminshisou\ ;
+咀嚼運動 > soshakuundou\ ;
+共同疎開 > kyoudousokai\ ;
+記念写真 > kinenshashin\ ;
+火燵布団 > kotatsubuton\ ;
+全面禁止 > zenmenkinshi\ ;
+北回帰線 > kitakaikisen\ ;
+連合艦隊 > rengoukantai\ ;
+人命救助 > jinmeikyuujo\ ;
+戦争状態 > sensoujoutai\ ;
+女子大学 > joshidaigaku\ ;
+国士無双 > kokushimusou\ ;
+平均余命 > heikin''yomei\ ;
+事例研究 > jireikenkyuu\ ;
+分散投資 > bunsantoushi\ ;
+偶像礼拝 > guuzoureihai\ ;
+効果覿面 > koukatekimen\ ;
+緊張緩和 > kinchoukanwa\ ;
+不許複製 > fukyofukusei\ ;
+北欧神話 > hokuoushinwa\ ;
+人事行政 > jinjigyousei\ ;
+昭和年間 > shouwanenkan\ ;
+国字問題 > kokujimondai\ ;
+国務大臣 > kokumudaijin\ ;
+言語障害 > gengoshougai\ ;
+再販価格 > saihankakaku\ ;
+平均株価 > heikinkabuka\ ;
+安息香酸 > ansokukousan\ ;
+譜代大名 > fudaidaimyou\ ;
+道路計画 > dourokeikaku\ ;
+古自動車 > furujidousha\ ;
+容姿端麗 > youshitanrei\ ;
+請負業者 > ukeoigyousha\ ;
+通常口語 > tsuujoukougo\ ;
+在外邦人 > zaigaihoujin\ ;
+開放経済 > kaihoukeizai\ ;
+体操競技 > taisoukyougi\ ;
+労働同盟 > roudoudoumei\ ;
+国際都市 > kokusaitoshi\ ;
+有刺鉄線 > yuushitessen\ ;
+団体行動 > dantaikoudou\ ;
+応用数学 > ouyousuugaku\ ;
+交通巡査 > koutsuujunsa\ ;
+無敵艦隊 > mutekikantai\ ;
+航空会社 > koukuugaisha\ ;
+大政奉還 > taiseihoukan\ ;
+不撓不屈 > futoufukutsu\ ;
+相関関係 > soukankankei\ ;
+同盟罷業 > doumeihigyou\ ;
+軍備競争 > gunbikyousou\ ;
+形容動詞 > keiyoudoushi\ ;
+補給幹線 > hokyuukansen\ ;
+為替裁定 > kawasesaitei\ ;
+表現主義 > hyougenshugi\ ;
+文教地区 > bunkyouchiku\ ;
+金属疲労 > kinzokuhirou\ ;
+強制疎開 > kyouseisokai\ ;
+警視総監 > keishisoukan\ ;
+代表社員 > daihyoushain\ ;
+借屋住居 > shakuyazumai\ ;
+徴兵制度 > chouheiseido\ ;
+短期大学 > tankidaigaku\ ;
+立体放送 > rittaihousou\ ;
+天井桟敷 > tenjousajiki\ ;
+圧迫包帯 > appakuhoutai\ ;
+通用期間 > tsuuyoukikan\ ;
+勉強時間 > benkyoujikan\ ;
+戸籍謄本 > kosekitouhon\ ;
+家庭教育 > kateikyouiku\ ;
+地震探鉱 > jishintankou\ ;
+避難梯子 > hinanbashigo\ ;
+社会奉仕 > shakaihoushi\ ;
+婚外性交 > kongaiseikou\ ;
+不可抗力 > fukakouryoku\ ;
+執行機関 > shikkoukikan\ ;
+勤務評定 > kinmuhyoutei\ ;
+常用対数 > jouyoutaisuu\ ;
+大道芸人 > daidougeinin\ ;
+黒風白雨 > kokufuuhakuu\ ;
+銀行業務 > ginkougyoumu\ ;
+現地調査 > genchichousa\ ;
+遠洋航海 > en''youkoukai\ ;
+外交関係 > gaikoukankei\ ;
+私学助成 > shigakujosei\ ;
+無痛分娩 > mutsuubunben\ ;
+不良債権 > furyousaiken\ ;
+地域時刻 > chiikijikoku\ ;
+凹版印刷 > ouhaninsatsu\ ;
+基幹産業 > kikansangyou\ ;
+路上駐車 > rojouchuusha\ ;
+首脳会談 > shunoukaidan\ ;
+独裁政治 > dokusaiseiji\ ;
+外交問題 > gaikoumondai\ ;
+破産申請 > hasanshinsei\ ;
+郷土芸能 > kyoudogeinou\ ;
+後方地域 > kouhouchiiki\ ;
+太陽放射 > taiyouhousha\ ;
+西洋文明 > seiyoubunmei\ ;
+振替輸送 > furikaeyusou\ ;
+交換条件 > koukanjouken\ ;
+発行市場 > hakkoushijou\ ;
+一昨昨年 > sakiototoshi\ ;
+製菓業者 > seikagyousha\ ;
+愛国団体 > aikokudantai\ ;
+変形規則 > henkeikisoku\ ;
+人気投票 > ninkitouhyou\ ;
+男女平等 > danjobyoudou\ ;
+郵便葉書 > yuubinhagaki\ ;
+浅学非才 > sengakuhisai\ ;
+市場撤退 > shijoutettai\ ;
+定期検診 > teikikenshin\ ;
+団体競技 > dantaikyougi\ ;
+民間団体 > minkandantai\ ;
+封建思想 > houkenshisou\ ;
+航続距離 > kouzokukyori\ ;
+双峰駱駝 > souhourakuda\ ;
+百科全書 > hyakkazensho\ ;
+試行錯誤 > shikousakugo\ ;
+工場地帯 > koujouchitai\ ;
+政治改革 > seijikaikaku\ ;
+市民会館 > shiminkaikan\ ;
+有限会社 > yuugengaisha\ ;
+重商主義 > juushoushugi\ ;
+駅前広場 > ekimaehiroba\ ;
+政治責任 > seijisekinin\ ;
+専業主婦 > sengyoushufu\ ;
+現場監督 > genbakantoku\ ;
+公転周期 > koutenshuuki\ ;
+口三味線 > kuchijamisen\ ;
+一昨昨夜 > issakusakuya\ ;
+血清肝炎 > kesseikan''en\ ;
+人跡未踏 > jinsekimitou\ ;
+強制保険 > kyouseihoken\ ;
+一望千里 > ichibousenri\ ;
+刑務所長 > keimushochou\ ;
+場内放送 > jounaihousou\ ;
+朝三暮四 > chousanboshi\ ;
+福祉国家 > fukushikokka\ ;
+長刀一枝 > choutouisshi\ ;
+悲喜交々 > hikikomogomo\ ;
+無線工学 > musenkougaku\ ;
+勝利投手 > shouritoushu\ ;
+天気概況 > tenkigaikyou\ ;
+無常迅速 > mujoujinsoku\ ;
+行動科学 > koudoukagaku\ ;
+予防注射 > yobouchuusha\ ;
+極秘情報 > gokuhijouhou\ ;
+封建社会 > houkenshakai\ ;
+労使紛争 > roushifunsou\ ;
+自学自習 > jigakujishuu\ ;
+不連続線 > furenzokusen\ ;
+治外法権 > chigaihouken\ ;
+経済外交 > keizaigaikou\ ;
+刃物三昧 > hamonozanmai\ ;
+光学繊維 > kougakusen''i\ ;
+全休止符 > zenkyuushifu\ ;
+和洋折衷 > wayousetchuu\ ;
+清算会社 > seisangaisha\ ;
+廃藩置県 > haihanchiken\ ;
+臨床講義 > rinshoukougi\ ;
+純日本風 > jun''nihonfuu\ ;
+挙国一致 > kyokokuitchi\ ;
+大衆運動 > taishuuundou\ ;
+市場調査 > shijouchousa\ ;
+公開外交 > koukaigaikou\ ;
+大蔵大臣 > ookuradaijin\ ;
+修正予算 > shuuseiyosan\ ;
+行政機関 > gyouseikikan\ ;
+政教分離 > seikyoubunri\ ;
+搭乗案内 > toujouan''nai\ ;
+五人囃子 > goninbayashi\ ;
+独善主義 > dokuzenshugi\ ;
+航空書簡 > koukuushokan\ ;
+賛否同票 > sanpidouhyou\ ;
+人文学派 > jinbungakuha\ ;
+援用生産 > en''youseisan\ ;
+不耕作地 > fukousakuchi\ ;
+大使公邸 > taishikoutei\ ;
+決議事項 > ketsugijikou\ ;
+温泉療法 > onsenryouhou\ ;
+一顰一笑 > ippin''isshou\ ;
+電気信号 > denkishingou\ ;
+専管水域 > senkansuiiki\ ;
+天体崇拝 > tentaisuuhai\ ;
+相互参照 > sougosanshou\ ;
+割烹料理 > kappouryouri\ ;
+郊外電車 > kougaidensha\ ;
+修正主義 > shuuseishugi\ ;
+補強証拠 > hokyoushouko\ ;
+人材銀行 > jinzaiginkou\ ;
+近代音楽 > kindaiongaku\ ;
+裏面工作 > rimenkousaku\ ;
+法治社会 > houchishakai\ ;
+大盤振舞 > oobanburumai\ ;
+三岐代表 > sangidaihyou\ ;
+教員組合 > kyouinkumiai\ ;
+海難救助 > kainankyuujo\ ;
+録音放送 > rokuonhousou\ ;
+三者凡退 > sanshabontai\ ;
+日本海流 > nihonkairyuu\ ;
+史上最大 > shijousaidai\ ;
+記憶障害 > kiokushougai\ ;
+不労所得 > furoushotoku\ ;
+老荘思想 > rousoushisou\ ;
+軍需工業 > gunjukougyou\ ;
+離合集散 > rigoushuusan\ ;
+良妻賢母 > ryousaikenbo\ ;
+軍司令官 > gunshireikan\ ;
+貿易会社 > bouekigaisha\ ;
+燐酸肥料 > rinsanhiryou\ ;
+無限責任 > mugensekinin\ ;
+科学思想 > kagakushisou\ ;
+四海同胞 > shikaidouhou\ ;
+健康問題 > kenkoumondai\ ;
+感傷主義 > kanshoushugi\ ;
+馬頭観音 > batoukan''non\ ;
+天頂距離 > tenchoukyori\ ;
+調査部長 > chousabuchou\ ;
+千紫万紅 > senshibankou\ ;
+行動命令 > koudoumeirei\ ;
+為替手形 > kawasetegata\ ;
+赤道気団 > sekidoukidan\ ;
+空中落下 > kuuchuurakka\ ;
+定格荷重 > teikakukajuu\ ;
+為替銀行 > kawaseginkou\ ;
+官能主義 > kan''noushugi\ ;
+家庭教師 > kateikyoushi\ ;
+昼夜兼行 > chuuyakenkou\ ;
+会社営業 > kaishaeigyou\ ;
+啓蒙思想 > keimoushisou\ ;
+非循環的 > hijunkanteki\ ;
+文民統制 > bunmintousei\ ;
+過酸化物 > kasankabutsu\ ;
+一念発起 > ichinenhokki\ ;
+育成栽培 > ikuseisaibai\ ;
+現場検証 > genbakenshou\ ;
+時代考証 > jidaikoushou\ ;
+感度良好 > kandoryoukou\ ;
+透明人間 > toumeiningen\ ;
+常套手段 > joutoushudan\ ;
+和平工作 > waheikousaku\ ;
+暗中飛躍 > anchuuhiyaku\ ;
+人民裁判 > jinminsaiban\ ;
+施行規則 > shikoukisoku\ ;
+半身不随 > hanshinfuzui\ ;
+普通名詞 > futsuumeishi\ ;
+対象範囲 > taishouhan''i\ ;
+人民戦線 > jinminsensen\ ;
+簡明強固 > kanmeikyouko\ ;
+可能選択 > kanousentaku\ ;
+屋内競技 > okunaikyougi\ ;
+多情仏心 > tajoubusshin\ ;
+単純計算 > tanjunkeisan\ ;
+公衆電話 > koushuudenwa\ ;
+花自動車 > hanajidousha\ ;
+放蕩息子 > houtoumusuko\ ;
+写真機店 > shashinkiten\ ;
+三等軍曹 > santougunsou\ ;
+緊急逮捕 > kinkyuutaiho\ ;
+貞操蹂躪 > teisoujuurin\ ;
+心肺機能 > shinpaikinou\ ;
+雌雄同株 > shiyuudoushu\ ;
+順風満帆 > junpuumanpan\ ;
+学校法人 > gakkouhoujin\ ;
+変位電流 > hen''idenryuu\ ;
+前哨勤務 > zenshoukinmu\ ;
+海洋科学 > kaiyoukagaku\ ;
+農民運動 > noumin''undou\ ;
+責任範囲 > sekininhan''i\ ;
+発光塗料 > hakkoutoryou\ ;
+感応作用 > kan''nousayou\ ;
+子持昆布 > komochikonbu\ ;
+市営住宅 > shieijuutaku\ ;
+事業部長 > jigyoubuchou\ ;
+大胆不敵 > daitanfuteki\ ;
+天地創造 > tenchisouzou\ ;
+市場経済 > shijoukeizai\ ;
+予定期日 > yoteikijitsu\ ;
+医療技術 > iryougijutsu\ ;
+使役動詞 > shiekidoushi\ ;
+徴兵検査 > chouheikensa\ ;
+自家発電 > jikahatsuden\ ;
+同語反復 > dougohanpuku\ ;
+弁論大会 > benrontaikai\ ;
+一般投票 > ippantouhyou\ ;
+一人息子 > hitorimusuko\ ;
+退役軍人 > taiekigunjin\ ;
+人生最悪 > jinseisaiaku\ ;
+印加電圧 > inkaden''atsu\ ;
+液性限界 > ekiseigenkai\ ;
+栄養学者 > eiyougakusha\ ;
+都市交通 > toshikoutsuu\ ;
+交換教授 > koukankyouju\ ;
+学生時代 > gakuseijidai\ ;
+愛社精神 > aishaseishin\ ;
+老化現象 > roukagenshou\ ;
+社会問題 > shakaimondai\ ;
+盲管銃創 > moukanjuusou\ ;
+東海地方 > toukaichihou\ ;
+発行会社 > hakkougaisha\ ;
+近所合壁 > kinjogappeki\ ;
+音声圧縮 > onseiasshuku\ ;
+民族主義 > minzokushugi\ ;
+専門科目 > senmonkamoku\ ;
+減量経営 > genryoukeiei\ ;
+睡眠不足 > suiminbusoku\ ;
+兄妹喧嘩 > kyoudaigenka\ ;
+運送契約 > unsoukeiyaku\ ;
+舞台中継 > butaichuukei\ ;
+下層階級 > kasoukaikyuu\ ;
+経済闘争 > keizaitousou\ ;
+不良少女 > furyoushoujo\ ;
+応援演説 > ouen''enzetsu\ ;
+行動半径 > koudouhankei\ ;
+地震地帯 > jishinchitai\ ;
+通過貿易 > tsuukaboueki\ ;
+統計年鑑 > toukeinenkan\ ;
+人手不足 > hitodebusoku\ ;
+十中八九 > jitchuuhakku\ ;
+滋強飲料 > jikyouinryou\ ;
+四角号碼 > shikakugouma\ ;
+固定観念 > koteikan''nen\ ;
+経験科学 > keikenkagagu\ ;
+荷電粒子 > kadenryuushi\ ;
+人工生命 > jinkouseimei\ ;
+電気料金 > denkiryoukin\ ;
+往復葉書 > oufukuhagaki\ ;
+人造石油 > jinzousekiyu\ ;
+天竺牡丹 > tenjikubotan\ ;
+御馳走様 > gochisousama\ ;
+天路歴程 > tenrorekitei\ ;
+共同便所 > kyoudoubenjo\ ;
+暗殺未遂 > ansatsumisui\ ;
+未払費用 > miharaihiyou\ ;
+相互配属 > sougohaizoku\ ;
+破顔一笑 > hagan''isshou\ ;
+治療効果 > chiryoukouka\ ;
+猟官制度 > ryoukanseido\ ;
+収容患者 > shuuyoukanja\ ;
+武陵桃源 > buryoutougen\ ;
+人民所有 > jinminshoyuu\ ;
+反射係数 > hanshakeisuu\ ;
+工業意匠 > kougyouishou\ ;
+相対評価 > soutaihyouka\ ;
+経済問題 > keizaimondai\ ;
+三十六計 > sanjuurokkei\ ;
+残業手当 > zangyouteate\ ;
+投球動作 > toukyuudousa\ ;
+防災訓練 > bousaikunren\ ;
+耐用年数 > taiyounensuu\ ;
+民定憲法 > minteikenpou\ ;
+福利厚生 > fukurikousei\ ;
+消耗品費 > shoumouhinhi\ ;
+私有財産 > shiyuuzaisan\ ;
+学級閉鎖 > gakkyuuheisa\ ;
+人生記録 > jinseikiroku\ ;
+実利主義 > jitsurishugi\ ;
+公使館員 > koushikan''in\ ;
+進化論者 > shinkaronsha\ ;
+空中機動 > kuuchuukidou\ ;
+投票結果 > touhyoukekka\ ;
+前提条件 > zenteijouken\ ;
+外人選手 > gaijinsenshu\ ;
+巨大分子 > kyodaibunshi\ ;
+贋造紙幣 > ganzoushihei\ ;
+検定試験 > kenteishiken\ ;
+藍綬褒章 > ranjuhoushou\ ;
+司法試験 > shihoushiken\ ;
+柔軟体操 > juunantaisou\ ;
+不良導体 > furyoudoutai\ ;
+対戦車砲 > taisenshahou\ ;
+死体解剖 > shitaikaibou\ ;
+兼業農家 > kengyounouka\ ;
+公開録音 > koukairokuon\ ;
+海軍大臣 > kaigundaijin\ ;
+南京花火 > nankinhanabi\ ;
+扁桃腺炎 > hentousen''en\ ;
+中央銀行 > chuuouginkou\ ;
+圧縮空気 > asshukukuuki\ ;
+決済手段 > kessaishudan\ ;
+代理業者 > dairigyousha\ ;
+配置転換 > haichitenkan\ ;
+禁治産者 > kinchisansha\ ;
+全身不随 > zenshinfuzui\ ;
+運転技術 > untengijutsu\ ;
+電子音楽 > denshiongaku\ ;
+千万無量 > senmanmuryou\ ;
+自殺幇助 > jisatsuhoujo\ ;
+代数関数 > daisuukansuu\ ;
+音響設計 > onkyousekkei\ ;
+乳様突起 > nyuuyoutokki\ ;
+事前割当 > jizenwariate\ ;
+兵役免状 > heiekimenjou\ ;
+天涯孤独 > tengaikodoku\ ;
+不承不承 > fushoubushou\ ;
+無所属現 > mushozokugen\ ;
+木造家屋 > mokuzoukaoku\ ;
+養老年金 > yourounenkin\ ;
+悠々自適 > yuuyuujiteki\ ;
+事前研修 > jizenkenshuu\ ;
+体系文法 > taikeibunpou\ ;
+雌雄同体 > shiyuudoutai\ ;
+構造汚職 > kouzouoshoku\ ;
+基礎知識 > kisochishiki\ ;
+地域紛争 > chiikifunsou\ ;
+単峰駱駝 > tanpourakuda\ ;
+人気商売 > ninkishoubai\ ;
+姉妹喧嘩 > kyoudaigenka\ ;
+千姿万態 > senshibantai\ ;
+公有財産 > kouyuuzaisan\ ;
+先行投資 > senkoutoushi\ ;
+製造工程 > seizoukoutei\ ;
+自由競争 > jiyuukyousou\ ;
+川魚料理 > kawauoryouri\ ;
+現代科学 > gendaikagaku\ ;
+産業機械 > sangyoukikai\ ;
+不合格者 > fugoukakusha\ ;
+暑中見舞 > shochuumimai\ ;
+誘導尋問 > yuudoujinmon\ ;
+瑠璃唐草 > rurikarakusa\ ;
+定形動詞 > teikeidoushi\ ;
+喧々囂々 > kenkengougou\ ;
+人間関係 > ningenkankei\ ;
+赤十字社 > sekijuujisha\ ;
+無産階級 > musankaikyuu\ ;
+六法全書 > roppouzensho\ ;
+集権排除 > shuukenhaijo\ ;
+国際会議 > kokusaikaigi\ ;
+児童文学 > jidoubungaku\ ;
+軍事秘密 > gunjihimitsu\ ;
+任意出頭 > nin''ishuttou\ ;
+付随現象 > fuzuigenshou\ ;
+唇歯輔車 > shinshihosha\ ;
+原因調査 > gen''inchousa\ ;
+人跡未到 > jinsekimitou\ ;
+担当部長 > tantoubuchou\ ;
+主任教授 > shuninkyouju\ ;
+軍備削減 > gunbisakugen\ ;
+公開裁判 > koukaisaiban\ ;
+分解修理 > bunkaishuuri\ ;
+百花斉放 > hyakkaseihou\ ;
+人造真珠 > jinzoushinju\ ;
+神経過敏 > shinkeikabin\ ;
+送金為替 > soukinkawase\ ;
+厳正科学 > genseikagaku\ ;
+司法書士 > shihoushoshi\ ;
+在外資産 > zaigaishisan\ ;
+法律違反 > houritsuihan\ ;
+進路指導 > shinroshidou\ ;
+予備協約 > yobikyouyaku\ ;
+教育玩具 > kyouikugangu\ ;
+文法規則 > bunpoukisoku\ ;
+完了時制 > kanryoujisei\ ;
+事実誤認 > jijitsugonin\ ;
+軍需産業 > gunjusangyou\ ;
+自然科学 > shizenkagaku\ ;
+武者修行 > mushashugyou\ ;
+生成文法 > seiseibunpou\ ;
+司法大臣 > shihoudaijin\ ;
+主脳会談 > shunoukaidan\ ;
+御用商人 > goyoushounin\ ;
+使徒信条 > shitoshinjou\ ;
+証拠物件 > shoukobukken\ ;
+予備知識 > yobichishiki\ ;
+合名会社 > goumeigaisha\ ;
+共同一致 > kyoudouitchi\ ;
+武力政治 > buryokuseiji\ ;
+軌道修正 > kidoushuusei\ ;
+湾岸戦争 > wangansensou\ ;
+合格祈願 > goukakukigan\ ;
+化学肥料 > kagakuhiryou\ ;
+独裁国家 > dokusaikokka\ ;
+低利金融 > teirikin''yuu\ ;
+土類金属 > doruikinzoku\ ;
+共和政体 > kyouwaseitai\ ;
+法廷闘争 > houteitousou\ ;
+再生装置 > saiseisouchi\ ;
+北方領土 > hoppouryoudo\ ;
+全廃論者 > zenpaironsha\ ;
+累進課税 > ruishinkazei\ ;
+国防会議 > kokuboukaigi\ ;
+二百十日 > nihyakutooka\ ;
+事前通報 > jizentsuuhou\ ;
+社会意識 > shakaiishiki\ ;
+援助凍結 > enjotouketsu\ ;
+安全第一 > anzendaiichi\ ;
+個人攻撃 > kojinkougeki\ ;
+悪戯坊主 > itazurabouzu\ ;
+遊動円木 > yuudouenboku\ ;
+円形劇場 > enkeigekijou\ ;
+芭蕉梶木 > bashoukajiki\ ;
+情報科学 > jouhoukagaku\ ;
+傷害保険 > shougaihoken\ ;
+破産宣告 > hasansenkoku\ ;
+癩病患者 > raibyoukanja\ ;
+正正堂堂 > seiseidoudou\ ;
+因子分析 > inshibunseki\ ;
+待合政治 > machiaiseiji\ ;
+末法思想 > mappoushisou\ ;
+航続時間 > kouzokujikan\ ;
+専売特許 > senbaitokkyo\ ;
+同種同文 > doushudoubun\ ;
+鉄道事故 > tetsudoujiko\ ;
+真理関数 > shinrikansuu\ ;
+子子孫孫 > shishisonson\ ;
+英国石油 > eikokusekiyu\ ;
+保護観察 > hogokansatsu\ ;
+秘密兵器 > himitsuheiki\ ;
+郵便貯金 > yuubinchokin\ ;
+二重人格 > nijuujinkaku\ ;
+白衣明妃 > byakuemyouhi\ ;
+生体解剖 > seitaikaibou\ ;
+立太子礼 > rittaishirei\ ;
+実際問題 > jissaimondai\ ;
+公転速度 > koutensokudo\ ;
+一石二鳥 > issekinichou\ ;
+教育課程 > kyouikukatei\ ;
+人代名詞 > jindaimeishi\ ;
+優生結婚 > yuuseikekkon\ ;
+口頭試問 > koutoushimon\ ;
+交通安全 > koutsuuanzen\ ;
+和文英訳 > wabun''eiyaku\ ;
+本家本元 > honkehonmoto\ ;
+盲目飛行 > moumokuhikou\ ;
+滞空記録 > taikuukiroku\ ;
+立体裁断 > rittaisaidan\ ;
+国内事情 > kokunaijijou\ ;
+接触事故 > sesshokujiko\ ;
+乾燥腐朽 > kansoufukyuu\ ;
+合資会社 > goushigaisha\ ;
+彫刻具座 > choukokuguza\ ;
+戸外撮影 > kogaisatsuei\ ;
+応急修理 > oukyuushuuri\ ;
+麻酔注射 > masuichuusha\ ;
+末端価格 > mattankakaku\ ;
+偶像崇拝 > guuzousuuhai\ ;
+普通列車 > futsuuressha\ ;
+和平交渉 > waheikoushou\ ;
+循環論法 > junkanronpou\ ;
+飽食暖衣 > houshokudani\ ;
+機械工業 > kikaikougyou\ ;
+無限集合 > mugenshuugou\ ;
+有価証券 > yuukashouken\ ;
+総統選挙 > soutousenkyo\ ;
+人気役者 > ninkiyakusha\ ;
+市内通話 > shinaitsuuwa\ ;
+一等陸士 > ittourikushi\ ;
+講和条約 > kouwajouyaku\ ;
+工業都市 > kougyoutoshi\ ;
+卓上電話 > takujoudenwa\ ;
+客観主義 > kyakkanshugi\ ;
+共同謀議 > kyoudoubougi\ ;
+購買組合 > koubaikumiai\ ;
+請負仕事 > ukeoishigoto\ ;
+雇用契約 > koyoukeiyaku\ ;
+当意即妙 > touisokumyou\ ;
+労働市場 > roudoushijou\ ;
+反対尋問 > hantaijinmon\ ;
+士官学校 > shikangakkou\ ;
+名誉会長 > meiyokaichou\ ;
+平均給与 > heikinkyuuyo\ ;
+小便小僧 > shoubenkozou\ ;
+人権蹂躪 > jinkenjuurin\ ;
+圧縮酸素 > asshukusanso\ ;
+人権蹂躙 > jinkenjuurin\ ;
+年次報告 > nenjihoukoku\ ;
+郵便番号 > yuubinbangou\ ;
+計算問題 > keisanmondai\ ;
+総合雑誌 > sougouzasshi\ ;
+土地収用 > tochishuuyou\ ;
+広告効果 > koukokukouka\ ;
+幼児教育 > youjikyouiku\ ;
+近所迷惑 > kinjomeiwaku\ ;
+無限級数 > mugenkyuusuu\ ;
+一刻千金 > ikkokusenkin\ ;
+陪審制度 > baishinseido\ ;
+編集機能 > henshuukinou\ ;
+先取特権 > senshutokken\ ;
+専門分野 > senmonbun''ya\ ;
+担子菌類 > tanshikinrui\ ;
+関係強化 > kankeikyouka\ ;
+攻撃部隊 > kougekibutai\ ;
+秘密会議 > himitsukaigi\ ;
+武者修業 > mushashugyou\ ;
+消音装置 > shouonsouchi\ ;
+満州事変 > manshuujihen\ ;
+資産評価 > shisanhyouka\ ;
+出版許可 > shuppankyoka\ ;
+国内需要 > kokunaijuyou\ ;
+千万長者 > senbanchouja\ ;
+化学試験 > kagakushiken\ ;
+細胞培養 > saiboubaiyou\ ;
+音韻組織 > on''insoshiki\ ;
+処処方方 > shoshohoubou\ ;
+座標変換 > zahyouhenkan\ ;
+機械工学 > kikaikougaku\ ;
+第三部長 > daisanbuchou\ ;
+奇岩怪石 > kigankaiseki\ ;
+耐風構造 > taifuukouzou\ ;
+石鹸工場 > sekkenkoujou\ ;
+在郷軍人 > zaigougunjin\ ;
+幽霊会社 > yuureigaisha\ ;
+環境破壊 > kankyouhakai\ ;
+国際主義 > kokusaishugi\ ;
+御節料理 > osechiryouri\ ;
+修理工場 > shuurikoujou\ ;
+拒否反応 > kyohihan''nou\ ;
+一言一句 > ichigon''ikku\ ;
+単独飛行 > tandokuhikou\ ;
+主権在民 > shukenzaimin\ ;
+人格主義 > jinkakushugi\ ;
+自殺未遂 > jisatsumisui\ ;
+出家遁世 > shukketonsei\ ;
+紐革饂飩 > himokawaudon\ ;
+愚民政策 > guminseisaku\ ;
+単科大学 > tankadaigaku\ ;
+適正利潤 > tekiseirijun\ ;
+発音記号 > hatsuonkigou\ ;
+軍事協定 > gunjikyoutei\ ;
+西高東低 > seikoutoutei\ ;
+損耗人員 > sonmoujin''in\ ;
+実勢価格 > jisseikakaku\ ;
+援用設計 > en''yousekkei\ ;
+現場中継 > genbachuukei\ ;
+感知装置 > kanchisouchi\ ;
+議決機関 > giketsukikan\ ;
+安心立命 > anjinryoumei\ ;
+合同事業 > goudoujigyou\ ;
+同期信号 > doukishingou\ ;
+仲間意識 > nakamaishiki\ ;
+媒介変数 > baikaihensuu\ ;
+寒中水泳 > kanchuusuiei\ ;
+被保険物 > hihokenbutsu\ ;
+暗殺事件 > ansatsujiken\ ;
+折衷主義 > setchuushugi\ ;
+単式簿記 > tanshikiboki\ ;
+教養課程 > kyouyoukatei\ ;
+三者会談 > sanshakaidan\ ;
+連記投票 > renkitouhyou\ ;
+心理状態 > shinrijoutai\ ;
+海外市場 > kaigaishijou\ ;
+既成事実 > kiseijijitsu\ ;
+事務総局 > jimusoukyoku\ ;
+前進基地 > zenshinkichi\ ;
+同工異曲 > doukouikyoku\ ;
+命題関数 > meidaikansuu\ ;
+北西航路 > hokuseikouro\ ;
+合同会合 > goudoukaigou\ ;
+立地条件 > ritchijouken\ ;
+地理学者 > chirigakusha\ ;
+大所高所 > taishokousho\ ;
+重複保険 > juufukuhoken\ ;
+通常兵器 > tsuujouheiki\ ;
+外国部隊 > gaikokubutai\ ;
+文化交流 > bunkakouryuu\ ;
+市外通話 > shigaitsuuwa\ ;
+毛細血管 > mousaikekkan\ ;
+動態統計 > doutaitoukei\ ;
+社内情報 > shanaijouhou\ ;
+中公文庫 > chuukoubunko\ ;
+圧電効果 > atsudenkouka\ ;
+魑魅魍魎 > chimimouryou\ ;
+循環系統 > junkankeitou\ ;
+対人関係 > taijinkankei\ ;
+普通選挙 > futsuusenkyo\ ;
+条件闘争 > joukentousou\ ;
+千状万態 > senjoubantai\ ;
+化成工業 > kaseikougyou\ ;
+経済原論 > keizaigenron\ ;
+権謀術数 > kenboujussuu\ ;
+不揮発性 > fukihatsusei\ ;
+高等学校 > koutougakkou\ ;
+連合王国 > rengououkoku\ ;
+郵便書簡 > yuubinshokan\ ;
+深謀遠慮 > shinbouenryo\ ;
+住民運動 > juumin''undou\ ;
+法文学部 > houbungakubu\ ;
+普通郵便 > futsuuyuubin\ ;
+君主政体 > kunshuseitai\ ;
+捲土重来 > kendochourai\ ;
+女声合唱 > joseigasshou\ ;
+米西戦争 > beiseisensou\ ;
+高度成長 > koudoseichou\ ;
+乾布摩擦 > kanpumasatsu\ ;
+中華思想 > chuukashisou\ ;
+贈与証書 > zouyoshousho\ ;
+公衆衛生 > koushuueisei\ ;
+社会科学 > shakaikagaku\ ;
+農芸化学 > nougeikagaku\ ;
+交通整理 > koutsuuseiri\ ;
+特殊部隊 > tokushubutai\ ;
+事実無根 > jijitsumukon\ ;
+孔雀妙王 > kujakumyouou\ ;
+財産分与 > zaisanbun''yo\ ;
+邦字新聞 > houjishinbun\ ;
+機動計画 > kidoukeikaku\ ;
+孤立主義 > koritsushugi\ ;
+明治天皇 > meijiten''nou\ ;
+焦点距離 > shoutenkyori\ ;
+集合時間 > shuugoujikan\ ;
+住宅地区 > juutakuchiku\ ;
+多角貿易 > takakuboueki\ ;
+非喫煙者 > hikitsuensha\ ;
+消化不良 > shoukafuryou\ ;
+舞台照明 > butaishoumei\ ;
+不生産的 > fuseisanteki\ ;
+非生産的 > hiseisanteki\ ;
+募集人員 > boshuujin''in\ ;
+原稿用紙 > genkouyoushi\ ;
+無意識的 > muishikiteki\ ;
+総司令官 > soushireikan\ ;
+譲渡所得 > joutoshotoku\ ;
+学童保育 > gakudouhoiku\ ;
+最終兵器 > saishuuheiki\ ;
+滑走車輪 > kassousharin\ ;
+月刊雑誌 > gekkanzasshi\ ;
+傍若無人 > boujakubujin\ ;
+勤労奉仕 > kinrouhoushi\ ;
+性腺摘除 > seisentekijo\ ;
+憲法改正 > kenpoukaisei\ ;
+行路病者 > kourobyousha\ ;
+一人芝居 > hitorishibai\ ;
+共同防衛 > kyoudoubouei\ ;
+闘志満満 > toushimanman\ ;
+市勢調査 > shiseichousa\ ;
+会厭軟骨 > een''nankotsu\ ;
+軍用地図 > gun''youchizu\ ;
+東奔西走 > touhonseisou\ ;
+交代作業 > koutaisagyou\ ;
+日記文学 > nikkibungaku\ ;
+日系米人 > nikkeibeijin\ ;
+至公至平 > shikoushihei\ ;
+関連会社 > kanrengaisha\ ;
+人権宣言 > jinkensengen\ ;
+人造人間 > jinzouningen\ ;
+傾斜家賃 > keishayachin\ ;
+自民党則 > jimintousoku\ ;
+反復記号 > hanpukukigou\ ;
+日本航空 > nipponkoukuu\ ;
+英才教育 > eisaikyouiku\ ;
+排水条件 > haisuijouken\ ;
+英国航空 > eikokukoukuu\ ;
+暗中摸索 > anchuumosaku\ ;
+前哨騎兵 > zenshoukihei\ ;
+水素爆弾 > suisobakudan\ ;
+潅漑用水 > kangaiyousui\ ;
+一斉射撃 > isseishageki\ ;
+基軸通貨 > kijikutsuuka\ ;
+傾斜生産 > keishaseisan\ ;
+境界理論 > kyoukairiron\ ;
+天皇陛下 > ten''nouheika\ ;
+天然果汁 > ten''nenkajuu\ ;
+霊肉一致 > reinikuitchi\ ;
+経済復興 > keizaifukkou\ ;
+人口統計 > jinkoutoukei\ ;
+戦時産業 > senjisangyou\ ;
+古銭学者 > kosengakusha\ ;
+対弾道弾 > taidandoudan\ ;
+製造番号 > seizoubangou\ ;
+多重人格 > tajuujinkaku\ ;
+一刀両断 > ittouryoudan\ ;
+共産主義 > kyousanshugi\ ;
+記名投票 > kimeitouhyou\ ;
+休憩時間 > kyuukeijikan\ ;
+丸太足場 > marutaashiba\ ;
+桃色遊戯 > momoiroyuugi\ ;
+武士階級 > bushikaikyuu\ ;
+国際電話 > kokusaidenwa\ ;
+人工地震 > jinkoujishin\ ;
+潜在主権 > senzaishuken\ ;
+過小評価 > kashouhyouka\ ;
+範疇部門 > hanchuubumon\ ;
+修道制度 > shuudouseido\ ;
+統語範疇 > tougohanchuu\ ;
+衛生設備 > eiseisetsubi\ ;
+一次産品 > ichijisanpin\ ;
+公明正大 > koumeiseidai\ ;
+花火線香 > hanabisenkou\ ;
+舶用機関 > hakuyoukikan\ ;
+公民権法 > kouminkenhou\ ;
+昏睡状態 > konsuijoutai\ ;
+対向車線 > taikoushasen\ ;
+鉄拳制裁 > tekkenseisai\ ;
+桂冠詩人 > keikanshijin\ ;
+人口調査 > jinkouchousa\ ;
+司法解剖 > shihoukaibou\ ;
+人口静態 > jinkouseitai\ ;
+有体動産 > yuutaidousan\ ;
+採用試験 > saiyoushiken\ ;
+気象情報 > kishoujouhou\ ;
+有線放送 > yuusenhousou\ ;
+喀痰検査 > kakutankensa\ ;
+郷土料理 > kyoudoryouri\ ;
+三段論法 > sandanronpou\ ;
+時代精神 > jidaiseishin\ ;
+誇大広告 > kodaikoukoku\ ;
+一昨々夜 > issakusakuya\ ;
+都市計画 > toshikeikaku\ ;
+関東一円 > kantouichien\ ;
+自然発生 > shizenhassei\ ;
+欽定憲法 > kinteikenpou\ ;
+数値制御 > suuchiseigyo\ ;
+武者人形 > mushaningyou\ ;
+分周回路 > bunshuukairo\ ;
+臥龍点睛 > garyoutensei\ ;
+市民大会 > shimintaikai\ ;
+赤字国債 > akajikokusai\ ;
+使用方法 > shiyouhouhou\ ;
+小春日和 > koharubiyori\ ;
+公式試合 > koushikijiai\ ;
+照射処理 > shoushashori\ ;
+参勤交替 > sankinkoutai\ ;
+羊頭狗肉 > youtoukuniku\ ;
+斡旋業者 > assengyousha\ ;
+会社概要 > kaishagaiyou\ ;
+民主政体 > minshuseitai\ ;
+粗放農業 > sohounougyou\ ;
+財務諸表 > zaimushohyou\ ;
+蚊取線香 > katorisenkou\ ;
+広報情報 > kouhoujouhou\ ;
+緊急事態 > kinkyuujitai\ ;
+均衡価格 > kinkoukakaku\ ;
+季節変異 > kisetsuhen''i\ ;
+有感地震 > yuukanjishin\ ;
+緩和振動 > kanwashindou\ ;
+幽霊人口 > yuureijinkou\ ;
+統語指標 > tougoshihyou\ ;
+最高価格 > saikoukakaku\ ;
+酸性白土 > sanseihakudo\ ;
+民族衣装 > minzokuishou\ ;
+修士課程 > shuushikatei\ ;
+公益法人 > kouekihoujin\ ;
+歴史主義 > rekishishugi\ ;
+弁慶格子 > benkeigoushi\ ;
+第二人称 > dainininshou\ ;
+下流社会 > karyuushakai\ ;
+快楽主義 > kairakushugi\ ;
+不精不精 > fushoubushou\ ;
+制限速度 > seigensokudo\ ;
+文武両道 > bunburyoudou\ ;
+上昇限度 > joushougendo\ ;
+作用積分 > sayousekibun\ ;
+腹筋運動 > fukkin''undou\ ;
+公認記録 > kouninkiroku\ ;
+一網打尽 > ichimoudajin\ ;
+学校用品 > gakkouyouhin\ ;
+住宅手当 > juutakuteate\ ;
+認知科学 > ninchikagaku\ ;
+商売道具 > shoubaidougu\ ;
+原子戦争 > genshisensou\ ;
+二重焦点 > nijuushouten\ ;
+口答試問 > koutoushimon\ ;
+図書館長 > toshokanchou\ ;
+在庫調整 > zaikochousei\ ;
+対数関数 > taisuukansuu\ ;
+政教一致 > seikyouitchi\ ;
+文芸批評 > bungeihihyou\ ;
+線形代数 > senkeidaisuu\ ;
+連合政権 > rengouseiken\ ;
+頼母子講 > tanomoshikou\ ;
+在韓米軍 > zaikanbeigun\ ;
+一夜乞食 > ichiyakojiki\ ;
+異常終了 > ijoushuuryou\ ;
+試験地獄 > shikenjigoku\ ;
+社員教育 > shainkyouiku\ ;
+企業年金 > kigyounenkin\ ;
+乞食根性 > kojikikonjou\ ;
+企業合同 > kigyougoudou\ ;
+自主指針 > jishushishin\ ;
+感慨無量 > kangaimuryou\ ;
+敵性国家 > tekiseikokka\ ;
+等差級数 > tousakyuusuu\ ;
+師範学校 > shihangakkou\ ;
+経済社会 > keizaishakai\ ;
+改良主義 > kairyoushugi\ ;
+経済制裁 > keizaiseisai\ ;
+主戦投手 > shusentoushu\ ;
+遊撃隊員 > yuugekitaiin\ ;
+一時帰休 > ichijikikyuu\ ;
+受益証券 > juekishouken\ ;
+拙速主義 > sessokushugi\ ;
+未開拓地 > mikaitakuchi\ ;
+全権公使 > zenkenkoushi\ ;
+統制経済 > touseikeizai\ ;
+田園風景 > den''enfuukei\ ;
+旅行日程 > ryokounittei\ ;
+無量大数 > muryoudaisuu\ ;
+割引歩合 > waribikibuai\ ;
+反核運動 > hankakuundou\ ;
+香港返還 > honkonhenkan\ ;
+企業合併 > kigyougappei\ ;
+非行少年 > hikoushounen\ ;
+野外撮影 > yagaisatsuei\ ;
+千手観音 > senjukan''non\ ;
+精神主義 > seishinshugi\ ;
+終始一貫 > shuushiikkan\ ;
+県民会館 > kenminkaikan\ ;
+教条主義 > kyoujoushugi\ ;
+更生会社 > kouseigaisha\ ;
+繊維工業 > sen''ikougyou\ ;
+人間同士 > ningendoushi\ ;
+勘合貿易 > kangouboueki\ ;
+百家争鳴 > hyakkasoumei\ ;
+世界政策 > sekaiseisaku\ ;
+家屋台帳 > kaokudaichou\ ;
+東海道線 > toukaidousen\ ;
+過当競争 > katoukyousou\ ;
+液体窒素 > ekitaichisso\ ;
+平和協定 > heiwakyoutei\ ;
+無線電信 > musendenshin\ ;
+専門用語 > senmon''yougo\ ;
+人造肥料 > jinzouhiryou\ ;
+大砲三門 > taihousanmon\ ;
+実験装置 > jikkensouchi\ ;
+中央労働 > chuuouroudou\ ;
+内線番号 > naisenbangou\ ;
+伝記作者 > denkisakusha\ ;
+人民公社 > jinminkousha\ ;
+連絡切符 > renrakukippu\ ;
+共同墓地 > kyoudoubochi\ ;
+実態調査 > jittaichousa\ ;
+総務長官 > soumuchoukan\ ;
+混乱状態 > konranjoutai\ ;
+家族意識 > kazokuishiki\ ;
+外柔内剛 > gaijuunaigou\ ;
+訪問販売 > houmonhanbai\ ;
+排斥運動 > haisekiundou\ ;
+原子弾頭 > genshidantou\ ;
+営業案内 > eigyouan''nai\ ;
+天文航法 > tenmonkouhou\ ;
+非実際的 > hijissaiteki\ ;
+参勤交代 > sankinkoutai\ ;
+裏書譲渡 > uragakijouto\ ;
+関係書類 > kankeishorui\ ;
+免許皆伝 > menkyokaiden\ ;
+回転競技 > kaitenkyougi\ ;
+経済水域 > keizaisuiiki\ ;
+無欲恬淡 > muyokutentan\ ;
+自我実現 > jigajitsugen\ ;
+執行猶予 > shikkouyuuyo\ ;
+融通手形 > yuuzuutegata\ ;
+厚生年金 > kouseinenkin\ ;
+院内感染 > in''naikansen\ ;
+悪性水腫 > akuseisuishu\ ;
+団十郎丈 > danjuuroujou\ ;
+以心伝心 > ishindenshin\ ;
+一字千金 > ichijisenkin\ ;
+業績悪化 > gyousekiakka\ ;
+二束三文 > nisokusanmon\ ;
+兵器拡散 > heikikakusan\ ;
+交友関係 > kouyuukankei\ ;
+国際政治 > kokusaiseiji\ ;
+書面審理 > shomenshinri\ ;
+人間社会 > ningenshakai\ ;
+軍国主義 > gunkokushugi\ ;
+水上競技 > suijoukyougi\ ;
+河原乞食 > kawarakojiki\ ;
+二重撮影 > nijuusatsuei\ ;
+絶対評価 > zettaihyouka\ ;
+在米邦人 > zaibeihoujin\ ;
+四月馬鹿 > shigatsubaka\ ;
+新進気鋭 > shinshinkiei\ ;
+所得控除 > shotokukoujo\ ;
+関係会社 > kankeigaisha\ ;
+自信満満 > jishinmanman\ ;
+日本学者 > nihongakusha\ ;
+春日大社 > kasugataisha\ ;
+文明社会 > bunmeishakai\ ;
+同人雑誌 > doujinzasshi\ ;
+司法裁判 > shihousaiban\ ;
+人体実験 > jintaijikken\ ;
+亡命政権 > boumeiseiken\ ;
+仲間同士 > nakamadoushi\ ;
+経営工学 > keieikougaku\ ;
+賛否両論 > sanpiryouron\ ;
+不法集会 > fuhoushuukai\ ;
+眼高手低 > gankoushutei\ ;
+自動小銃 > jidoushoujuu\ ;
+地域社会 > chiikishakai\ ;
+交流人事 > kouryuujinji\ ;
+特殊効果 > tokushukouka\ ;
+自家中毒 > jikachuudoku\ ;
+盲貫銃創 > moukanjuusou\ ;
+人気番組 > ninkibangumi\ ;
+敵本主義 > tekihonshugi\ ;
+口内性交 > kounaiseikou\ ;
+脳軟化症 > nounankashou\ ;
+現地法人 > genchihoujin\ ;
+自動車泥 > jidoushadoro\ ;
+一時停止 > ichijiteishi\ ;
+学園紛争 > gakuenfunsou\ ;
+最高学府 > saikougakufu\ ;
+保険契約 > hokenkeiyaku\ ;
+女性差別 > joseisabetsu\ ;
+児童福祉 > jidoufukushi\ ;
+試験問題 > shikenmondai\ ;
+漸進主義 > zenshinshugi\ ;
+音信不通 > onshinfutsuu\ ;
+勇往邁進 > yuuoumaishin\ ;
+静止状態 > seishijoutai\ ;
+北支事変 > hokushijihen\ ;
+寸借詐欺 > sunshakusagi\ ;
+指名通話 > shimeitsuuwa\ ;
+苦心惨憺 > kushinsantan\ ;
+牽強付会 > kenkyoufukai\ ;
+寒冷前線 > kanreizensen\ ;
+速度制限 > sokudoseigen\ ;
+四部合唱 > shibugasshou\ ;
+電電公社 > dendenkousha\ ;
+優勝候補 > yuushoukouho\ ;
+友好関係 > yuukoukankei\ ;
+救援物資 > kyuuenbusshi\ ;
+神社仏閣 > jinjabukkaku\ ;
+水平思考 > suiheishikou\ ;
+音感教育 > onkankyouiku\ ;
+滞納処分 > tainoushobun\ ;
+共同経営 > kyoudoukeiei\ ;
+二六時中 > nirokujichuu\ ;
+一時賜金 > ichijishikin\ ;
+自然崇拝 > shizensuuhai\ ;
+審議未了 > shingimiryou\ ;
+養子縁組 > youshiengumi\ ;
+氏族制度 > shizokuseido\ ;
+軍陣医学 > gunjin''igaku\ ;
+正四面体 > seishimentai\ ;
+定格請負 > teikakuukeoi\ ;
+待遇改善 > taiguukaizen\ ;
+繊維光学 > sen''ikougaku\ ;
+黒人霊歌 > kokujinreika\ ;
+特殊機能 > tokushukinou\ ;
+経路積分 > keirosekibun\ ;
+国営農場 > kokueinoujou\ ;
+国粋主義 > kokusuishugi\ ;
+甲状腺炎 > koujousen''en\ ;
+資産合計 > shisangoukei\ ;
+鯨飲馬食 > geiinbashoku\ ;
+心臓発作 > shinzouhossa\ ;
+新人歌手 > shinjinkashu\ ;
+輸入手形 > yunyuutegata\ ;
+圧着端子 > atsugitanshi\ ;
+未改心者 > mikaishinsha\ ;
+無効投票 > mukoutouhyou\ ;
+難攻不落 > nankoufuraku\ ;
+一心同体 > isshindoutai\ ;
+宥和政策 > yuuwaseisaku\ ;
+限界効用 > genkaikouyou\ ;
+十万億土 > juuman''okudo\ ;
+変態心理 > hentaishinri\ ;
+拍子記号 > hyoushikigou\ ;
+公会問答 > koukaimondou\ ;
+考古学者 > koukogakusha\ ;
+野球選手 > yakyuusenshu\ ;
+夢遊病者 > muyuubyousha\ ;
+要所要所 > youshoyousho\ ;
+使徒継承 > shitokeishou\ ;
+励磁電流 > reijidenryuu\ ;
+社会制度 > shakaiseido\ ;
+代理領事 > dairiryouji\ ;
+点数切符 > tensuukippu\ ;
+化成肥料 > kaseihiryou\ ;
+未成年者 > miseinensha\ ;
+一天万乗 > ittenbanjou\ ;
+親子関係 > oyakokankei\ ;
+恐怖政治 > kyoufuseiji\ ;
+虚数単位 > kyosuutan''i\ ;
+選挙制度 > senkyoseido\ ;
+大願成就 > daiganjouju\ ;
+円卓会議 > entakukaigi\ ;
+大宮御所 > oomiyagosho\ ;
+上下関係 > jougekankei\ ;
+公営企業 > koueikigyou\ ;
+重液分離 > juuekibunri\ ;
+実践理性 > jissenrisei\ ;
+行住坐臥 > gyoujuuzaga\ ;
+言行一致 > genkouitchi\ ;
+広大無辺 > koudaimuhen\ ;
+優先事項 > yuusenjikou\ ;
+携帯電話 > keitaidenwa\ ;
+時代錯誤 > jidaisakugo\ ;
+人工衛星 > jinkoueisei\ ;
+線形順序 > senkeijunjo\ ;
+外交官補 > gaikoukanho\ ;
+住居手当 > juukyoteate\ ;
+道路標示 > dourohyouji\ ;
+予備将校 > yobishoukou\ ;
+民間飛行 > minkanhikou\ ;
+永子作権 > eikosakuken\ ;
+社会運動 > shakaiundou\ ;
+移行計画 > ikoukeikaku\ ;
+接近経路 > sekkinkeiro\ ;
+世界経済 > sekaikeizai\ ;
+浮世草子 > ukiyozoushi\ ;
+定数是正 > teisuuzesei\ ;
+安保条約 > anpojouyaku\ ;
+販売値段 > hanbainedan\ ;
+基底構造 > kiteikouzou\ ;
+必須条件 > hissujouken\ ;
+区裁判所 > kusaibansho\ ;
+予行演習 > yokouenshuu\ ;
+選挙運動 > senkyoundou\ ;
+国際規模 > kokusaikibo\ ;
+運転免許 > untenmenkyo\ ;
+線形論理 > senkeironri\ ;
+年賀郵便 > nengayuubin\ ;
+温風暖房 > onpuudanbou\ ;
+内部構造 > naibukouzou\ ;
+不定型詩 > futeikeishi\ ;
+黄金崇拝 > ougonsuuhai\ ;
+世話女房 > sewanyoubou\ ;
+犬儒学派 > kenjugakuha\ ;
+一品料理 > ippinryouri\ ;
+亜硫酸塩 > aryuusan''en\ ;
+有声子音 > yuuseishiin\ ;
+皆兵制度 > kaiheiseido\ ;
+未経験者 > mikeikensha\ ;
+上意下達 > jouikatatsu\ ;
+車間距離 > shakankyori\ ;
+氷河時代 > hyougajidai\ ;
+情報理論 > jouhouriron\ ;
+御多忙中 > gotabouchuu\ ;
+愛染明王 > aizenmyouou\ ;
+平面交差 > heimenkousa\ ;
+経験主義 > keikenshugi\ ;
+弁護士会 > bengoshikai\ ;
+純情可憐 > junjoukaren\ ;
+載貨吃水 > saikakissui\ ;
+半濁音符 > handakuonfu\ ;
+愛染妙王 > aizenmyouou\ ;
+閨秀画家 > keishuugaka\ ;
+三半規管 > sanhankikan\ ;
+封建時代 > houkenjidai\ ;
+越冬資金 > ettoushikin\ ;
+所帯道具 > shotaidougu\ ;
+傲岸無礼 > gouganburei\ ;
+社会保険 > shakaihoken\ ;
+較優位論 > kakuyuuiron\ ;
+世論調査 > yoronchousa\ ;
+冬期休暇 > toukikyuuka\ ;
+上部構造 > joubukouzou\ ;
+象形文字 > shoukeimoji\ ;
+農本主義 > nouhonshugi\ ;
+一切衆生 > issaishujou\ ;
+旧態依然 > kyuutaiizen\ ;
+整理番号 > seiribangou\ ;
+当座資産 > touzashisan\ ;
+残品整理 > zanpinseiri\ ;
+宇宙速度 > uchuusokudo\ ;
+加水分解 > kasuibunkai\ ;
+宣伝価値 > sendenkachi\ ;
+年季奉公 > nenkiboukou\ ;
+貨幣経済 > kaheikeizai\ ;
+無期懲役 > mukichoueki\ ;
+市場区分 > shijoukubun\ ;
+初期設定 > shokisettei\ ;
+人造繊維 > jinzousen''i\ ;
+普通預金 > futsuuyokin\ ;
+低利資金 > teirishikin\ ;
+真珠細工 > shinjuzaiku\ ;
+主知主義 > shuchishugi\ ;
+二項係数 > nikoukeisuu\ ;
+素性構造 > soseikouzou\ ;
+愛国主義 > aikokushugi\ ;
+戦闘支援 > sentoushien\ ;
+人名辞書 > jinmeijisho\ ;
+前輪駆動 > zenrinkudou\ ;
+価格操作 > kakakusousa\ ;
+形而下学 > keijikagaku\ ;
+一期一会 > ichigoichie\ ;
+土木工事 > dobokukouji\ ;
+女子高生 > joshikousei\ ;
+王道楽土 > oudourakudo\ ;
+悪戦苦闘 > akusenkutou\ ;
+神経外科 > shinkeigeka\ ;
+不眠不休 > fuminfukyuu\ ;
+名誉教授 > meiyokyouju\ ;
+図書館員 > toshokan''in\ ;
+高歌放吟 > koukahougin\ ;
+構成単位 > kouseitan''i\ ;
+外人記者 > gaijinkisha\ ;
+例外処理 > reigaishori\ ;
+夫婦茶碗 > meotodjawan\ ;
+全面講和 > zenmenkouwa\ ;
+義務教育 > gimukyouiku\ ;
+悲観論者 > hikanronsha\ ;
+個人情報 > kojinjouhou\ ;
+町段畝歩 > choutansebu\ ;
+代理大使 > dairitaishi\ ;
+構造主義 > kouzoushugi\ ;
+内線電話 > naisendenwa\ ;
+公示価格 > koujikakaku\ ;
+液体酸素 > ekitaisanso\ ;
+沃度丁幾 > youdochinki\ ;
+刑事訴訟 > keijisoshou\ ;
+稼働人口 > kadoujinkou\ ;
+軽機関銃 > keikikanjuu\ ;
+機密保護 > kimitsuhogo\ ;
+予備交渉 > yobikoushou\ ;
+透視図法 > toushizuhou\ ;
+練習試合 > renshuujiai\ ;
+可視光線 > kashikousen\ ;
+筆記試験 > hikkishiken\ ;
+公定相場 > kouteisouba\ ;
+価格規制 > kakakukisei\ ;
+加重平均 > kajuuheikin\ ;
+武装警官 > busoukeikan\ ;
+水子供養 > mizugokuyou\ ;
+千変万化 > senpenbanka\ ;
+査定価格 > sateikakaku\ ;
+下層社会 > kasoushakai\ ;
+自然主義 > shizenshugi\ ;
+興味本位 > kyoumihon''i\ ;
+無体資産 > mutaishisan\ ;
+経済封鎖 > keizaifuusa\ ;
+競争相手 > kyousouaite\ ;
+五輪大会 > gorintaikai\ ;
+日本三景 > nihonsankei\ ;
+油性塗料 > yuseitoryou\ ;
+改訂増補 > kaiteizouho\ ;
+一般概念 > ippangainen\ ;
+小一時間 > koichijikan\ ;
+三脚椅子 > sankyakuisu\ ;
+皮膚感覚 > hifukankaku\ ;
+権利行使 > kenrikoushi\ ;
+漢字変換 > kanjihenkan\ ;
+無体財産 > mutaizaisan\ ;
+全体会議 > zentaikaigi\ ;
+二重抵当 > nijuuteitou\ ;
+機械文明 > kikaibunmei\ ;
+天津乙女 > amatsuotome\ ;
+利害関係 > rigaikankei\ ;
+多角経営 > takakukeiei\ ;
+夫婦別姓 > fuufubessei\ ;
+日本語訳 > nihongoyaku\ ;
+交換機能 > koukankinou\ ;
+産卵場所 > sanranbasho\ ;
+走行距離 > soukoukyori\ ;
+無尽組合 > mujinkumiai\ ;
+再生利用 > saiseiriyou\ ;
+航空母艦 > koukuubokan\ ;
+人名辞典 > jinmeijiten\ ;
+昨非今是 > sakuhikonze\ ;
+新古典派 > shinkotenha\ ;
+経営資源 > keieishigen\ ;
+被害妄想 > higaimousou\ ;
+細菌兵器 > saikinheiki\ ;
+飽和溶液 > houwayoueki\ ;
+一般会計 > ippankaikei\ ;
+準備資金 > junbishikin\ ;
+政党政治 > seitouseiji\ ;
+母子年金 > boshinenkin\ ;
+美容整形 > biyouseikei\ ;
+初期投資 > shokitoushi\ ;
+最短距離 > saitankyori\ ;
+周辺機器 > shuuhenkiki\ ;
+制限時間 > seigenjikan\ ;
+勤労意欲 > kinrouiyoku\ ;
+倉庫会社 > soukogaisha\ ;
+未開社会 > mikaishakai\ ;
+過大評価 > kadaihyouka\ ;
+破廉恥罪 > harenchizai\ ;
+時限装置 > jigensouchi\ ;
+景気変動 > keikihendou\ ;
+一次記憶 > ichijikioku\ ;
+衝動行為 > shoudoukoui\ ;
+許容範囲 > kyoyouhan''i\ ;
+生産管理 > seisankanri\ ;
+医療伝道 > iryoudendou\ ;
+突貫工事 > tokkankouji\ ;
+選考基準 > senkoukijun\ ;
+都市銀行 > toshiginkou\ ;
+宣伝映画 > senden''eiga\ ;
+慈善事業 > jizenjigyou\ ;
+加速度計 > kasokudokei\ ;
+傲慢不遜 > goumanfuson\ ;
+刑務作業 > keimusagyou\ ;
+地球規模 > chikyuukibo\ ;
+途中計時 > tochuukeiji\ ;
+高射特科 > koushatokka\ ;
+三面六臂 > sanmenroppi\ ;
+微分断面 > bibundanmen\ ;
+分娩作用 > bunbensayou\ ;
+保健体育 > hokentaiiku\ ;
+暴走運転 > bousouunten\ ;
+諮問機関 > shimonkikan\ ;
+田舎芝居 > inakashibai\ ;
+癌遺伝子 > gan''idenshi\ ;
+百鬼夜行 > hyakkiyakou\ ;
+永小作権 > eikosakuken\ ;
+無死満塁 > mushimanrui\ ;
+二番抵当 > nibanteitou\ ;
+総務部長 > soumubuchou\ ;
+自由貿易 > jiyuuboueki\ ;
+平和条項 > heiwajoukou\ ;
+気分転換 > kibuntenkan\ ;
+儒教主義 > jukyoushugi\ ;
+女歌舞伎 > on''nakabuki\ ;
+飛行機雲 > hikoukigumo\ ;
+路面電車 > romendensha\ ;
+単独行為 > tandokukoui\ ;
+誠心誠意 > seishinseii\ ;
+日本料理 > nihonryouri\ ;
+故事来歴 > kojiraireki\ ;
+内輪喧嘩 > uchiwagenka\ ;
+亜硝酸塩 > ashousan''en\ ;
+一角獣座 > ikkakujuuza\ ;
+反体制派 > hantaiseiha\ ;
+区劃整理 > kukakuseiri\ ;
+放任主義 > houninshugi\ ;
+遺族給付 > izokukyuufu\ ;
+変位制御 > hen''iseigyo\ ;
+文部大臣 > monbudaijin\ ;
+女権論者 > jokenronsha\ ;
+下士官兵 > kashikanhei\ ;
+中禅寺湖 > chuuzenjiko\ ;
+製品原価 > seihingenka\ ;
+人民主義 > jinminshugi\ ;
+勉強部屋 > benkyoubeya\ ;
+神宮外苑 > jinguugaien\ ;
+全般支援 > zenpanshien\ ;
+少壮有為 > shousouyuui\ ;
+経口投与 > keikoutouyo\ ;
+換気装置 > kankisouchi\ ;
+共和制度 > kyouwaseido\ ;
+二課勉強 > nikabenkyou\ ;
+予防接種 > yobousesshu\ ;
+異国情緒 > ikokujoucho\ ;
+運転停止 > untenteishi\ ;
+悪口雑言 > akkouzougon\ ;
+軍法会議 > gunpoukaigi\ ;
+天地無用 > tenchimuyou\ ;
+異常性欲 > ijouseiyoku\ ;
+人工受胎 > jinkoujutai\ ;
+日本文法 > nihonbunpou\ ;
+上下水道 > jougesuidou\ ;
+銀行口座 > ginkoukouza\ ;
+夏期大学 > kakidaigaku\ ;
+連邦議会 > renpougikai\ ;
+末期症状 > makkijoutai\ ;
+五段動詞 > godandoushi\ ;
+立法機関 > rippoukikan\ ;
+因循姑息 > injunkosoku\ ;
+大山椒魚 > oosanshouuo\ ;
+虎視眈眈 > koshitantan\ ;
+背面飛行 > haimenhikou\ ;
+弾丸道路 > dangandouro\ ;
+優先外貨 > yuusengaika\ ;
+当用漢字 > touyoukanji\ ;
+民本主義 > minponshugi\ ;
+人工受紛 > jinkoujufun\ ;
+主要物価 > shuyoubukka\ ;
+人工受精 > jinkoujusei\ ;
+登山電車 > tozandensha\ ;
+暫定政府 > zanteiseifu\ ;
+乗合馬車 > noriaibasha\ ;
+期成同盟 > kiseidoumei\ ;
+散光星雲 > sankouseiun\ ;
+飢餓療法 > kigaryouhou\ ;
+糸偏景気 > itohenkeiki\ ;
+物価変動 > bukkahendou\ ;
+近郊都市 > kinkoutoshi\ ;
+公開期間 > koukaikikan\ ;
+前後不覚 > zengofukaku\ ;
+準備体操 > junbitaisou\ ;
+母系家族 > bokeikazoku\ ;
+歯科医術 > shikaijutsu\ ;
+金管楽器 > kinkangakki\ ;
+切磋琢磨 > sessatakuma\ ;
+一時解雇 > ichijikaiko\ ;
+運転資金 > untenshikin\ ;
+塑性限界 > soseigenkai\ ;
+金権政治 > kinkenseiji\ ;
+防御部隊 > bougyobutai\ ;
+静止衛星 > seishieisei\ ;
+再度協議 > saidokyougi\ ;
+一切合財 > issaigassai\ ;
+遺産相続 > isansouzoku\ ;
+塑性変形 > soseihenkei\ ;
+一天四海 > ittenshikai\ ;
+音響効果 > onkyoukouka\ ;
+単本位性 > tanhon''isei\ ;
+雲散霧消 > unsanmushou\ ;
+全体主義 > zentaishugi\ ;
+停止時間 > teishijikan\ ;
+低空飛行 > teikuuhikou\ ;
+支度部屋 > shitakubeya\ ;
+加工貿易 > kakouboueki\ ;
+衛星放送 > eiseihousou\ ;
+電気分解 > denkibunkai\ ;
+風致地区 > fuuchichiku\ ;
+密閉容器 > mippeiyouki\ ;
+連帯債務 > rentaisaimu\ ;
+金剛薩堕 > kongousatta\ ;
+一人天下 > hitoridenka\ ;
+時間反転 > jikanhanten\ ;
+西欧文明 > seioubunmei\ ;
+下部組織 > kabusoshiki\ ;
+相乗効果 > soujoukouka\ ;
+水平距離 > suiheikyori\ ;
+軍備撤廃 > gunbiteppai\ ;
+固有名詞 > koyuumeishi\ ;
+人間疎外 > ningensogai\ ;
+有機化学 > yuukikagaku\ ;
+仲間値段 > nakamanedan\ ;
+温故知新 > onkochishin\ ;
+暗視装置 > anshisouchi\ ;
+国家試験 > kokkashiken\ ;
+青果市場 > seikaichiba\ ;
+民事裁判 > minjisaiban\ ;
+原子兵器 > genshiheiki\ ;
+肯定応答 > kouteioutou\ ;
+変更不能 > henkoufunou\ ;
+紀勢本線 > kiseihonsen\ ;
+麻裏草履 > asaurazouri\ ;
+台湾坊主 > taiwanbouzu\ ;
+季刊雑誌 > kikanzasshi\ ;
+南阿戦争 > nan''asensou\ ;
+無線周波 > musenshuuha\ ;
+長期金利 > choukikinri\ ;
+飛行機等 > hikoukinado\ ;
+傀儡政府 > kairaiseifu\ ;
+市外電話 > shigaidenwa\ ;
+連邦政府 > renpouseifu\ ;
+放歌高吟 > houkakougin\ ;
+微量元素 > biryougenso\ ;
+英字新聞 > eijishinbun\ ;
+満身創痍 > manshinsoui\ ;
+第二組合 > dainikumiai\ ;
+婦人警官 > fujinkeikan\ ;
+第三世界 > daisansekai\ ;
+毘沙門天 > bishamonten\ ;
+社会主義 > shakaishugi\ ;
+学位論文 > gakuironbun\ ;
+社交辞令 > shakoujirei\ ;
+徴兵忌避 > chouheikihi\ ;
+機会均等 > kikaikintou\ ;
+暫定措置 > zanteisochi\ ;
+方向音痴 > houkouonchi\ ;
+世界銀行 > sekaiginkou\ ;
+全権委任 > zenken''inin\ ;
+自然言語 > shizengengo\ ;
+誇大妄想 > kodaimousou\ ;
+化粧道具 > keshoudougu\ ;
+不変資本 > fuhenshihon\ ;
+賞味期限 > shoumikigen\ ;
+心臓外科 > shinzougeka\ ;
+幾何級数 > kikakyuusuu\ ;
+三部合奏 > sanbugassou\ ;
+蒙古人種 > moukojinshu\ ;
+電気化学 > denkikagaku\ ;
+豆腐一丁 > toufuitchou\ ;
+消費都市 > shouhitoshi\ ;
+一一〇番 > hyakutooban\ ;
+家族制度 > kazokuseido\ ;
+生存期間 > seizonkikan\ ;
+野良仕事 > norashigoto\ ;
+日伊辞典 > nichiijiten\ ;
+不正乗車 > fuseijousha\ ;
+調査結果 > chousakekka\ ;
+不当廉売 > futourenbai\ ;
+滅多矢鱈 > mettayatara\ ;
+前人未踏 > zenjinmitou\ ;
+不当利得 > futouritoku\ ;
+回教寺院 > kaikyoujiin\ ;
+軍事訓練 > gunjikunren\ ;
+総合口座 > sougoukouza\ ;
+郡県制度 > gunkenseido\ ;
+使用可能 > shiyoukanou\ ;
+内部留保 > naiburyuuho\ ;
+再販制度 > saihanseido\ ;
+被選挙権 > hisenkyoken\ ;
+物価統制 > bukkatousei\ ;
+因数分解 > insuubunkai\ ;
+生生流転 > seiseiruten\ ;
+無知蒙昧 > muchimoumai\ ;
+堕落坊主 > darakubouzu\ ;
+舞台度胸 > butaidokyou\ ;
+泰西名画 > taiseimeiga\ ;
+法治国家 > houchikokka\ ;
+優先順位 > yuusenjun''i\ ;
+単位組合 > tan''ikumiai\ ;
+管理情報 > kanrijouhou\ ;
+完全主義 > kanzenshugi\ ;
+七不思議 > nanafushigi\ ;
+報復行為 > houfukukoui\ ;
+宣伝文句 > sendenmonku\ ;
+二成文系 > niseibunkei\ ;
+体内時計 > tainaidokei\ ;
+区画整理 > kukakuseiri\ ;
+終夜運転 > shuuyaunten\ ;
+加速運動 > kasokuundou\ ;
+対抗部隊 > taikoubutai\ ;
+結婚費用 > kekkonhiyou\ ;
+軍事政権 > gunjiseiken\ ;
+有機農法 > yuukinouhou\ ;
+防衛部長 > boueibuchou\ ;
+運営資金 > un''eishikin\ ;
+月見蕎麦 > tsukimisoba\ ;
+人生航路 > jinseikouro\ ;
+生命保険 > seimeihoken\ ;
+応急手当 > oukyuuteate\ ;
+有形無形 > yuukeimukei\ ;
+受信回路 > jushinkairo\ ;
+参考図書 > sankoutosho\ ;
+英雄崇拝 > eiyuusuuhai\ ;
+受験番号 > jukenbangou\ ;
+重農主義 > juunoushugi\ ;
+護国神社 > gokokujinja\ ;
+明治神宮 > meijijinguu\ ;
+少数意見 > shousuuiken\ ;
+比翼連理 > hiyokurenri\ ;
+有期年金 > yuukinenkin\ ;
+二元放送 > nigenhousou\ ;
+自信過剰 > jishinkajou\ ;
+奉納相撲 > hounouzumou\ ;
+人身御供 > hitomigokuu\ ;
+保護検束 > hogokensoku\ ;
+分県地図 > bunkenchizu\ ;
+阿諛追従 > ayutsuishou\ ;
+電光石火 > denkousekka\ ;
+波瀾万丈 > haranbanjou\ ;
+相互関係 > sougokankei\ ;
+内部仕様 > naibushiyou\ ;
+皮下注射 > hikachuusha\ ;
+乾燥野菜 > kansouyasai\ ;
+短機関銃 > tankikanjuu\ ;
+現地時間 > genchijikan\ ;
+一等軍曹 > ittougunsou\ ;
+家庭用品 > kateiyouhin\ ;
+鉱山技師 > kouzangishi\ ;
+一子相伝 > isshisouden\ ;
+時限立法 > jigenrippou\ ;
+愛別離苦 > aibetsuriku\ ;
+固定資産 > koteishisan\ ;
+和独辞典 > wadokujiten\ ;
+登校拒否 > toukoukyohi\ ;
+演奏旅行 > ensouryokou\ ;
+書画骨董 > shogakottou\ ;
+運動選手 > undousenshu\ ;
+学園都市 > gakuentoshi\ ;
+東洋主義 > touyoushugi\ ;
+大風呂敷 > ooburoshiki\ ;
+有蓋貨車 > yuugaikasha\ ;
+政治資金 > seijishikin\ ;
+言論機関 > genronkikan\ ;
+養護学校 > yougogakkou\ ;
+走行時間 > soukoujikan\ ;
+評価基準 > hyoukakijun\ ;
+新聞記事 > shinbunkiji\ ;
+夫唱婦随 > fushoufuzui\ ;
+電子辞書 > denshijisho\ ;
+同時録音 > doujirokuon\ ;
+管理社会 > kanrishakai\ ;
+一視同仁 > isshidoujin\ ;
+一視同人 > isshidoujin\ ;
+構造変化 > kouzouhenka\ ;
+女流作家 > joryuusakka\ ;
+１１０番 > hyakutooban\ ;
+司法制度 > shihouseido\ ;
+勤務交代 > kinmukoutai\ ;
+短編映画 > tanpen''eiga\ ;
+会員規約 > kaiinkiyaku\ ;
+二点先取 > nitensenshu\ ;
+反戦主義 > hansenshugi\ ;
+暴虎馮河 > boukohyouga\ ;
+左腕投手 > sawantoushu\ ;
+前期試験 > zenkishiken\ ;
+被選挙人 > hisenkyonin\ ;
+背後関係 > haigokankei\ ;
+餓鬼大将 > gakidaishou\ ;
+番号記号 > bangoukigou\ ;
+刑事補償 > keijihoshou\ ;
+一体全体 > ittaizentai\ ;
+海運同盟 > kaiundoumei\ ;
+専守防衛 > senshubouei\ ;
+南阿連邦 > nan''arenpou\ ;
+発行部数 > hakkoubusuu\ ;
+刑事裁判 > keijisaiban\ ;
+公平無私 > kouheimushi\ ;
+物価指数 > bukkashisuu\ ;
+刑事被告 > keijihikoku\ ;
+記者会見 > kishakaiken\ ;
+従軍記者 > juugunkisha\ ;
+空気抵抗 > kuukiteikou\ ;
+現金正価 > genkinseika\ ;
+大同小異 > daidoushoui\ ;
+生命倫理 > seimeirinri\ ;
+駆動装置 > kudousouchi\ ;
+千軍万馬 > sengunbanba\ ;
+変幻自在 > hengenjizai\ ;
+相対主義 > soutaishugi\ ;
+軍医学校 > gun''igakkou\ ;
+都民会館 > tominkaikan\ ;
+市場価値 > shijoukachi\ ;
+平和論者 > heiwaronsha\ ;
+尿素樹脂 > nyousojushi\ ;
+掃除当番 > soujitouban\ ;
+代理戦争 > dairisensou\ ;
+地盤沈下 > jibanchinka\ ;
+構成主義 > kouseishugi\ ;
+正多面体 > seitamentai\ ;
+一切合切 > issaigassai\ ;
+保税地域 > hozeichiiki\ ;
+人員整理 > jin''inseiri\ ;
+人間以前 > ningen''izen\ ;
+平面図形 > heimenzukei\ ;
+宇宙旅行 > uchuuryokou\ ;
+荘園制度 > shouenseido\ ;
+自社製品 > jishaseihin\ ;
+初期段階 > shokidankai\ ;
+前途遼遠 > zentoryouen\ ;
+赤葡萄酒 > akabudoushu\ ;
+原始時代 > genshijidai\ ;
+参謀本部 > sanbouhonbu\ ;
+女子大生 > joshidaisei\ ;
+排外運動 > haigaiundou\ ;
+水平飛行 > suiheihikou\ ;
+低回趣味 > teikaishumi\ ;
+互恵貿易 > gokeiboueki\ ;
+人間以上 > ningen''ijou\ ;
+傲慢無礼 > goumanburei\ ;
+徒手空拳 > toshukuuken\ ;
+亜炭化物 > atankabutsu\ ;
+水泳大会 > suieitaikai\ ;
+男女同権 > danjodouken\ ;
+年金制度 > nenkinseido\ ;
+空軍基地 > kuugunkichi\ ;
+大和時代 > yamatojidai\ ;
+帝王切開 > teiousekkai\ ;
+反政府党 > hanseifutou\ ;
+虎視眈々 > koshitantan\ ;
+歯科病院 > shikabyouin\ ;
+載貨屯数 > saikatonsuu\ ;
+論説委員 > ronsetsuiin\ ;
+勝手次第 > katteshidai\ ;
+空挺隊員 > kuuteitaiin\ ;
+自由経済 > jiyuukeizai\ ;
+財政破綻 > zaiseihatan\ ;
+政治献金 > seijikenkin\ ;
+手間仕事 > temashigoto\ ;
+一本勝負 > ipponshoubu\ ;
+中途半端 > chuutohanpa\ ;
+通過儀礼 > tsuukagirei\ ;
+英字集合 > eijishuugou\ ;
+署名運動 > shomeiundou\ ;
+塑性指数 > soseishisuu\ ;
+合同労組 > goudourouso\ ;
+主管機関 > shukankikan\ ;
+天気都合 > tenkitsugou\ ;
+兵器工場 > heikikoujou\ ;
+平民主義 > heiminshugi\ ;
+家族会議 > kazokukaigi\ ;
+減債基金 > gensaikikin\ ;
+祖先崇拝 > sosensuuhai\ ;
+事大思想 > jidaishisou\ ;
+地場産業 > jibasangyou\ ;
+連邦国家 > renpoukokka\ ;
+立憲主義 > rikkenshugi\ ;
+八方美人 > happoubijin\ ;
+世界情勢 > sekaijousei\ ;
+不快指数 > fukaishisuu\ ;
+遠洋航路 > en''youkouro\ ;
+国家経済 > kokkakeizai\ ;
+臨時増刊 > rinjizoukan\ ;
+公武合体 > koubugattai\ ;
+予讚本線 > yosanhonsen\ ;
+根本主義 > konponshugi\ ;
+非常警戒 > hijoukeikai\ ;
+中央政府 > chuuouseifu\ ;
+刺状突起 > shijoutokki\ ;
+公的扶助 > koutekifujo\ ;
+合成樹脂 > gouseijushi\ ;
+割賦購買 > kappukoubai\ ;
+未来指向 > miraishikou\ ;
+自由放任 > jiyuuhounin\ ;
+自転周期 > jitenshuuki\ ;
+自己主張 > jikoshuchou\ ;
+千言万語 > sengenbango\ ;
+徒歩競走 > tohokyousou\ ;
+親善試合 > shinzenjiai\ ;
+窒素固定 > chissokotei\ ;
+海上保険 > kaijouhoken\ ;
+飛行甲板 > hikoukouban\ ;
+指導主事 > shidoushuji\ ;
+相互銀行 > sougoginkou\ ;
+軍司令部 > gunshireibu\ ;
+諸事万端 > shojibantan\ ;
+労災保険 > rousaihoken\ ;
+時輪金剛 > jirinkongou\ ;
+意気銷沈 > ikishouchin\ ;
+関税回避 > kanzeikaihi\ ;
+意気消沈 > ikishouchin\ ;
+前人未到 > zenjinmitou\ ;
+共和主義 > kyouwashugi\ ;
+予防戦争 > yobousensou\ ;
+酸性土壌 > sanseidojou\ ;
+人身保護 > jinshinhogo\ ;
+年金保険 > nenkinhoken\ ;
+指向言語 > shikougengo\ ;
+巡査部長 > junsabuchou\ ;
+保証期間 > hoshoukikan\ ;
+不法監禁 > fuhoukankin\ ;
+御苦労様 > gokurousama\ ;
+行住座臥 > gyoujuuzaga\ ;
+自治大臣 > jichidaijin\ ;
+立体交差 > rittaikousa\ ;
+竜頭蛇尾 > ryuutoudabi\ ;
+充電期間 > juudenkikan\ ;
+記憶媒体 > kiokubaitai\ ;
+養護教諭 > yougokyouyu\ ;
+人本主義 > jinponshugi\ ;
+海洋投棄 > kaiyoutouki\ ;
+和歌山県 > wakayamaken\ ;
+太陽電波 > taiyoudenpa\ ;
+理科大学 > rikadaigaku\ ;
+近衛師団 > konoeshidan\ ;
+一衣帯水 > ichiitaisui\ ;
+資本主義 > shihonshugi\ ;
+自由結婚 > jiyuukekkon\ ;
+必須科目 > hissukamoku\ ;
+近代主義 > kindaishugi\ ;
+守護天使 > shugotenshi\ ;
+作業部会 > sagyoubukai\ ;
+都市再生 > toshisaisei\ ;
+幼生器官 > youseikikan\ ;
+御用組合 > goyoukumiai\ ;
+軍事演習 > gunjienshuu\ ;
+人道主義 > jindoushugi\ ;
+前史時代 > zenshijidai\ ;
+海上封鎖 > kaijoufuusa\ ;
+意味深長 > imishinchou\ ;
+交通違反 > koutsuuihan\ ;
+四十八手 > yonjuuhatte\ ;
+手巻寿司 > temakizushi\ ;
+公開講座 > koukaikouza\ ;
+片言隻句 > hengensekku\ ;
+高関税化 > koukanzeika\ ;
+運送会社 > unsougaisha\ ;
+東宮御所 > touguugosho\ ;
+延滞利息 > entairisoku\ ;
+火災警報 > kasaikeihou\ ;
+総指揮官 > soushikikan\ ;
+放送時間 > housoujikan\ ;
+有害無益 > yuugaimueki\ ;
+婦人問題 > fujinmondai\ ;
+晴耕雨読 > seikouudoku\ ;
+尊皇攘夷 > son''noujoui\ ;
+不文憲法 > fubunkenpou\ ;
+一寸法師 > issunboushi\ ;
+可能動詞 > kanoudoushi\ ;
+古事来歴 > kojiraireki\ ;
+完全雇用 > kanzenkoyou\ ;
+副鼻腔炎 > fukubikuuen\ ;
+多元放送 > tagenhousou\ ;
+気息奄奄 > kisokuen''en\ ;
+釈迦如来 > shakanyorai\ ;
+予約名簿 > yoyakumeibo\ ;
+不買同盟 > fubaidoumei\ ;
+非買同盟 > hibaidoumei\ ;
+相対敬語 > soutaikeigo\ ;
+経済特区 > keizaitokku\ ;
+任意団体 > nin''idantai\ ;
+接敵移動 > settekiidou\ ;
+鰥寡孤独 > kankakodoku\ ;
+相対売買 > aitaibaibai\ ;
+無人工場 > mujinkoujou\ ;
+不換紙幣 > fukanshihei\ ;
+相乗作用 > soujousayou\ ;
+予算不足 > yosanfusoku\ ;
+薬理作用 > yakurisayou\ ;
+為替管理 > kawasekanri\ ;
+事前協議 > jisenkyougi\ ;
+厚顔無恥 > kouganmuchi\ ;
+安全装置 > anzensouchi\ ;
+空気感染 > kuukikansen\ ;
+水道工事 > suidoukouji\ ;
+一紙半銭 > isshihansen\ ;
+反射運動 > hanshaundou\ ;
+塩類溶液 > enruiyoueki\ ;
+外人部隊 > gaijinbutai\ ;
+拝金主義 > haikinshugi\ ;
+異体同心 > itaidoushin\ ;
+乗数効果 > jousuukouka\ ;
+全盛時代 > zenseijidai\ ;
+面向不背 > menkoufuhai\ ;
+空理空論 > kuurikuuron\ ;
+非常階段 > hijoukaidan\ ;
+傷痍軍人 > shouigunjin\ ;
+月賦販売 > geppuhanbai\ ;
+万世一系 > banseiikkei\ ;
+第二部長 > dainibuchou\ ;
+行儀作法 > gyougisahou\ ;
+重加算税 > juukasanzei\ ;
+一心不乱 > isshinfuran\ ;
+軍事裁判 > gunjisaiban\ ;
+照明器具 > shoumeikigu\ ;
+屍陀林王 > shidarin''ou\ ;
+過去完了 > kakokanryou\ ;
+戦後欧州 > sengooushuu\ ;
+首脳会議 > shunoukaigi\ ;
+家庭料理 > kateiryouri\ ;
+日本銀行 > nihonginkou\ ;
+遠交近攻 > enkoukinkou\ ;
+旋回運動 > senkaiundou\ ;
+帰国子女 > kikokushijo\ ;
+雌雄淘汰 > shiyuutouta\ ;
+銀本位制 > ginhon''isei\ ;
+自業自得 > jigoujitoku\ ;
+主格補語 > shukakuhogo\ ;
+傘形器官 > sankeikikan\ ;
+電化製品 > denkaseihin\ ;
+資産価値 > shisankachi\ ;
+中央競馬 > chuuoukeiba\ ;
+赤字財政 > akajizaisei\ ;
+政治亡命 > seijiboumei\ ;
+五十年祭 > gojuunensai\ ;
+遺族年金 > izokunenkin\ ;
+人工栄養 > jinkoueiyou\ ;
+擬古典的 > gikotenteki\ ;
+電気会社 > denkigaisha\ ;
+気随気儘 > kizuikimama\ ;
+無反動銃 > muhandoujuu\ ;
+遠心分離 > enshinbunri\ ;
+場外馬券 > jougaibaken\ ;
+青年時代 > seinenjidai\ ;
+自由問題 > jiyuumondai\ ;
+漫画雑誌 > mangazasshi\ ;
+亜鉛中毒 > aenchuudoku\ ;
+祖先伝来 > sosendenrai\ ;
+一党支配 > ittoushihai\ ;
+主観主義 > shukanshugi\ ;
+呼吸器系 > kokyuukikei\ ;
+為替投機 > kawasetouki\ ;
+一知半解 > itchihankai\ ;
+不定冠詞 > futeikanshi\ ;
+代議政体 > daigiseitai\ ;
+平和攻勢 > heiwakousei\ ;
+低価格化 > teikakakuka\ ;
+肘掛椅子 > hijikakeisu\ ;
+公務災害 > koumusaigai\ ;
+景気循環 > keikijunkan\ ;
+関係法規 > kankeihouki\ ;
+賀詞交換 > gashikoukan\ ;
+耕地整理 > kouchiseiri\ ;
+表裏一体 > hyouriittai\ ;
+奴隷解放 > doreikaihou\ ;
+阿多福豆 > otafukumame\ ;
+企業整備 > kigyouseibi\ ;
+軍事行動 > gunjikoudou\ ;
+地方自治 > chihoujichi\ ;
+世俗主義 > sezokushugi\ ;
+高炭素鋼 > koutansokou\ ;
+有機肥料 > yuukihiryou\ ;
+比例配分 > hireihaibun\ ;
+反対運動 > hantaiundou\ ;
+添付書類 > tenpushorui\ ;
+恋愛遊戯 > ren''aiyuugi\ ;
+投射原理 > toushagenri\ ;
+大言壮語 > taigensougo\ ;
+金本位制 > kinhon''isei\ ;
+造語成分 > zougoseibun\ ;
+百科辞典 > hyakkajiten\ ;
+万代不易 > bandaifueki\ ;
+危険角度 > kikenkakudo\ ;
+化学兵器 > kagakuheiki\ ;
+漢字制限 > kanjiseigen\ ;
+年功制度 > nenkouseido\ ;
+海底火山 > kaiteikazan\ ;
+隔靴掻痒 > kakkasouyou\ ;
+非戦論者 > hisenronsha\ ;
+万世不易 > banseifueki\ ;
+再生繊維 > saiseisen''i\ ;
+運転系統 > untenkeitou\ ;
+任意同行 > nin''idoukou\ ;
+臨時国会 > rinjikokkai\ ;
+試験期間 > shikenkikan\ ;
+年功加俸 > nenkoukahou\ ;
+応援団長 > ouendanchou\ ;
+軍医総監 > gun''isoukan\ ;
+慈善団体 > jizendantai\ ;
+自習時間 > jishuujikan\ ;
+国家補償 > kokkahoshou\ ;
+盛者必衰 > seijahissui\ ;
+人文主義 > jinbunshugi\ ;
+電話番号 > denwabangou\ ;
+理論体系 > rirontaikei\ ;
+日本海溝 > nihonkaikou\ ;
+経常利益 > keijourieki\ ;
+引責辞任 > insekijinin\ ;
+処女航海 > shojokoukai\ ;
+一軒一軒 > ikken''ikken\ ;
+問答無用 > mondoumuyou\ ;
+運命論者 > unmeironsha\ ;
+菜種梅雨 > natanedzuyu\ ;
+課外授業 > kagaijugyou\ ;
+難民帰還 > nanminkikan\ ;
+偶像破壊 > guuzouhakai\ ;
+指示装置 > shijisouchi\ ;
+安全地帯 > anzenchitai\ ;
+自己複製 > jikofukusei\ ;
+他人行儀 > taningyougi\ ;
+判官贔屓 > houganbiiki\ ;
+圧搾空気 > assakukuuki\ ;
+健康管理 > kenkoukanri\ ;
+試験飛行 > shikenhikou\ ;
+生産過剰 > seisankajou\ ;
+生理休暇 > seirikyuuka\ ;
+交際場裏 > kousaijouri\ ;
+豊肥本線 > houhihonsen\ ;
+判断規準 > handankijun\ ;
+気息奄々 > kisokuen''en\ ;
+判断基準 > handankijun\ ;
+天資英邁 > tenshieimai\ ;
+抵抗運動 > teikouundou\ ;
+郵便切手 > yuubinkitte\ ;
+田園都市 > den''entoshi\ ;
+衣料品店 > iryouhinten\ ;
+二部合唱 > nibugasshou\ ;
+電子頭脳 > denshizunou\ ;
+割賦販売 > kappuhanbai\ ;
+骨董趣味 > kottoushumi\ ;
+軍備制限 > gunbiseigen\ ;
+運動不足 > undoubusoku\ ;
+制限漢字 > seigenkanji\ ;
+無反動砲 > muhandouhou\ ;
+原因不明 > gen''infumei\ ;
+軽自動車 > keijidousha\ ;
+原子時代 > genshijidai\ ;
+狐疑逡巡 > kogishunjun\ ;
+程度問題 > teidomondai\ ;
+規定打席 > kiteidaseki\ ;
+風紀紊乱 > fuukibinran\ ;
+市参事会 > shisanjikai\ ;
+記憶装置 > kiokusouchi\ ;
+電気伝導 > denkidendou\ ;
+海外派兵 > kaigaihahei\ ;
+天賦人権 > tenpujinken\ ;
+懸垂運動 > kensuiundou\ ;
+神秘主義 > shinpishugi\ ;
+遠慮会釈 > enryoeshaku\ ;
+暗号手法 > angoushuhou\ ;
+運輸大臣 > un''yudaijin\ ;
+非論理的 > hironriteki\ ;
+右翼団体 > uyokudantai\ ;
+保健衛生 > hoken''eisei\ ;
+盗品故買 > touhinkobai\ ;
+静止軌道 > seishikidou\ ;
+慶應義塾 > keiougijuku\ ;
+快刀乱麻 > kaitouranma\ ;
+至近距離 > shikinkyori\ ;
+損害保険 > songaihoken\ ;
+構成要素 > kouseiyouso\ ;
+協議事項 > kyougijikou\ ;
+舞台俳優 > butaihaiyuu\ ;
+危機一髪 > kikiippatsu\ ;
+医学雑誌 > igakuzasshi\ ;
+物価水準 > bukkasuijun\ ;
+赤十字附 > sekijuujifu\ ;
+扶養家族 > fuyoukazoku\ ;
+立憲政治 > rikkenseiji\ ;
+人工臓器 > jinkouzouki\ ;
+祭政一致 > saiseiitchi\ ;
+不言実行 > fugenjikkou\ ;
+仕事部屋 > shigotobeya\ ;
+成人映画 > seijin''eiga\ ;
+自由営業 > jiyuueigyou\ ;
+標準誤差 > hyoujungosa\ ;
+乳児脚気 > nyuujikakke\ ;
+軍需工場 > gunjukoujou\ ;
+相加平均 > soukaheikin\ ;
+粗製乱造 > soseiranzou\ ;
+御名御璽 > gyomeigyoji\ ;
+文治主義 > bunchishugi\ ;
+自然淘汰 > shizentouta\ ;
+家宅捜査 > katakusousa\ ;
+既成概念 > kiseigainen\ ;
+整備工場 > seibikoujou\ ;
+対空砲火 > taikuuhouka\ ;
+滞空時間 > taikuujikan\ ;
+貿易赤字 > bouekiakaji\ ;
+一言居士 > ichigenkoji\ ;
+屋上庭園 > okujouteien\ ;
+音声表記 > onseihyouki\ ;
+審美主義 > shinbishugi\ ;
+応用問題 > ouyoumondai\ ;
+互恵関税 > gokeikanzei\ ;
+軟性下疳 > nanseigekan\ ;
+国語辞典 > kokugojiten\ ;
+公認候補 > kouninkouho\ ;
+生年月日 > seinengappi\ ;
+奇策縦横 > kisakujuuou\ ;
+光学文字 > kougakumoji\ ;
+停車時間 > teishajikan\ ;
+共和政治 > kyouwaseiji\ ;
+国庫債権 > kokkosaiken\ ;
+声帯模写 > seitaimosha\ ;
+最大限度 > saidaigendo\ ;
+八分音符 > hachibuonpu\ ;
+仮想空間 > kasoukuukan\ ;
+平成時代 > heiseijidai\ ;
+利益社会 > riekishakai\ ;
+家庭訪問 > kateihoumon\ ;
+薄利多売 > hakuritabai\ ;
+民主主義 > minshushugi\ ;
+女性名詞 > joseimeishi\ ;
+愛憎併存 > aizouheison\ ;
+反射作用 > hanshasayou\ ;
+有事立法 > yuujirippou\ ;
+発声器官 > hasseikikan\ ;
+婚礼衣装 > konreiishou\ ;
+中央突破 > chuuoutoppa\ ;
+三頭政治 > santouseiji\ ;
+危険地帯 > kikenchitai\ ;
+化学作用 > kagakusayou\ ;
+無間地獄 > mugenjigoku\ ;
+往復切符 > oufukukippu\ ;
+存在理由 > sonzairiyuu\ ;
+非社交的 > hijakouteki\ ;
+封建制度 > houkenseido\ ;
+人身事故 > jinshinjiko\ ;
+公開捜査 > koukaisousa\ ;
+我田引水 > gaden''insui\ ;
+動作記録 > dousakiroku\ ;
+成層火山 > seisoukazan\ ;
+利益配当 > riekihaitou\ ;
+一所懸命 > isshokenmei\ ;
+源泉課税 > gensenkazei\ ;
+政治結社 > seijikessha\ ;
+騎馬民族 > kibaminzoku\ ;
+隔世遺伝 > kakuseiiden\ ;
+古道具屋 > furudouguya\ ;
+吹奏楽器 > suisougakki\ ;
+機銃掃射 > kijuusousha\ ;
+武家屋敷 > bukeyashiki\ ;
+睡眠時間 > suiminjikan\ ;
+無記名株 > mukimeikabu\ ;
+事務総長 > jimusouchou\ ;
+主治効能 > shujikounou\ ;
+天津御祖 > amatsumioya\ ;
+気象衛星 > kishoueisei\ ;
+有効期限 > yuukoukigen\ ;
+農奴解放 > noudokaihou\ ;
+心臓麻痺 > shinzoumahi\ ;
+酔生夢死 > suiseimushi\ ;
+有効期間 > yuukoukigen\ ;
+無法地帯 > muhouchitai\ ;
+街頭募金 > gaitoubokin\ ;
+荒唐無稽 > koutoumukei\ ;
+栄養不足 > eiyoufusoku\ ;
+名誉市民 > meiyoshimin\ ;
+軍事同盟 > gunjidoumei\ ;
+有効作用 > yuukousayou\ ;
+先遣部隊 > senkenbutai\ ;
+嘉言善行 > kagenzenkou\ ;
+合同会議 > goudoukaigi\ ;
+起死回生 > kishikaisei\ ;
+透視画法 > toushigahou\ ;
+無銭旅行 > musenryokou\ ;
+保安設備 > hoansetsubi\ ;
+内部闘争 > naibutousou\ ;
+不正融資 > fuseiyuushi\ ;
+漢英辞典 > kan''eijiten\ ;
+領土保全 > ryoudohozen\ ;
+無事息災 > bujisokusai\ ;
+指名手配 > shimeitehai\ ;
+遊覧飛行 > yuuranhikou\ ;
+受験地獄 > jukenjigoku\ ;
+警備強化 > keibikyouka\ ;
+心理主義 > shinrishugi\ ;
+離婚訴訟 > rikonsoshou\ ;
+音訓索引 > onkunsakuin\ ;
+危険因子 > kiken''inshi\ ;
+超過勤務 > choukakinmu\ ;
+進歩主義 > shinposhugi\ ;
+保全会社 > hozenkaisha\ ;
+自己紹介 > jikoshoukai\ ;
+人道支援 > jindoushien\ ;
+希少価値 > kishoukachi\ ;
+婦人科学 > fujinkagaku\ ;
+支援団体 > shiendantai\ ;
+宇宙空間 > uchuukuukan\ ;
+化粧煉瓦 > keshourenga\ ;
+早期発見 > soukihakken\ ;
+自然治癒 > shizenchiyu\ ;
+不可知的 > fukachiteki\ ;
+訴訟費用 > soshouhiyou\ ;
+災害保険 > saigaihoken\ ;
+大器晩成 > taikibansei\ ;
+数珠一連 > juzuichiren\ ;
+文明開化 > bunmeikaika\ ;
+反動主義 > handoushugi\ ;
+政府高官 > seifukoukan\ ;
+京都府警 > kyoutofukei\ ;
+勤王攘夷 > kin''noujoui\ ;
+空挺部隊 > kuuteibutai\ ;
+多士済済 > tashiseisei\ ;
+不器用者 > bukiyoumono\ ;
+兵站基地 > heitankichi\ ;
+有理関数 > yuurikansuu\ ;
+低徊趣味 > teikaishumi\ ;
+人工頭脳 > jinkouzunou\ ;
+十六音符 > juurokuonpu\ ;
+奇想天外 > kisoutengai\ ;
+内容見本 > naiyoumihon\ ;
+料理道具 > ryouridougu\ ;
+大圏航路 > taikenkouro\ ;
+準備管制 > junbikansei\ ;
+主脳会議 > shunoukaigi\ ;
+陣頭指揮 > jintoushiki\ ;
+臓器移植 > zoukiishoku\ ;
+基本概念 > kihongainen\ ;
+会議日程 > kaiginittei\ ;
+公定地価 > kouteichika\ ;
+基礎研究 > kisokenkyuu\ ;
+環境汚染 > kankyouosen\ ;
+疑心暗鬼 > gishin''anki\ ;
+総理大臣 > souridaijin\ ;
+自己満足 > jikomanzoku\ ;
+絶対主義 > zettaishugi\ ;
+正味値段 > shouminedan\ ;
+個人教授 > kojinkyouju\ ;
+少壮気鋭 > shousoukiei\ ;
+東亜諸国 > touashokoku\ ;
+喇叭水仙 > rappazuisen\ ;
+実行可能 > jikkoukanou\ ;
+事前運動 > jizen''undou\ ;
+外来患者 > gairaikanja\ ;
+避難訓練 > hinankunren\ ;
+販売部門 > hanbaibumon\ ;
+労働運動 > roudouundou\ ;
+準備銀行 > junbiginkou\ ;
+幹線道路 > kansendouro\ ;
+不透明性 > futoumeisei\ ;
+加圧水炉 > kaatsusuiro\ ;
+年期奉公 > nenkiboukou\ ;
+表音文字 > hyouonmonji\ ;
+指名打者 > shimeidasha\ ;
+総司令部 > soushireibu\ ;
+伝統主義 > dentoushugi\ ;
+主要都市 > shuyoutoshi\ ;
+低温殺菌 > teionsakkin\ ;
+夫婦関係 > fuufukankei\ ;
+作業時間 > sagyoujikan\ ;
+非常手段 > hijoushudan\ ;
+専制政治 > senseiseiji\ ;
+映画監督 > eigakantoku\ ;
+濃淡画像 > noutangazou\ ;
+灯火管制 > toukakansei\ ;
+重要事項 > juuyoujikou\ ;
+非常呼集 > hijoukoshuu\ ;
+立候補者 > rikkouhosha\ ;
+浄化装置 > joukasouchi\ ;
+御生憎様 > oainikusama\ ;
+人員淘汰 > jin''intouta\ ;
+交通事故 > koutsuujiko\ ;
+四輪駆動 > yonrinkudou\ ;
+代理公使 > dairikoushi\ ;
+外務大臣 > gaimudaijin\ ;
+野戦砲兵 > yasenhouhei\ ;
+地名辞典 > chimeijiten\ ;
+不動産屋 > fudousan''ya\ ;
+体感温度 > taikan''ondo\ ;
+観光都市 > kankoutoshi\ ;
+同性愛者 > douseiaisha\ ;
+部隊撤退 > butaitettai\ ;
+協議会員 > kyougikaiin\ ;
+啓蒙運動 > keimouundou\ ;
+亀甲模様 > kikkoumoyou\ ;
+衛生状態 > eiseijoutai\ ;
+鎖国主義 > sakokushugi\ ;
+器用貧乏 > kiyoubinbou\ ;
+眼精疲労 > ganseihirou\ ;
+宣伝機関 > sendenkikan\ ;
+何時何時 > itsunandoki\ ;
+民権主義 > minkenshugi\ ;
+年次総会 > nenjisoukai\ ;
+温古知新 > onkochishin\ ;
+無償交付 > mushoukoufu\ ;
+短期手形 > tankitegata\ ;
+内務大臣 > naimudaijin\ ;
+一世一代 > isseichidai\ ;
+事項索引 > jikousakuin\ ;
+放射線科 > houshasenka\ ;
+皇太子妃 > koutaishihi\ ;
+妖怪変化 > youkaihenge\ ;
+変形部門 > henkeibumon\ ;
+野戦病院 > yasenbyouin\ ;
+戦災地区 > sensaichiku\ ;
+特務機関 > tokumukikan\ ;
+砂糖大根 > satoudaikon\ ;
+半加工品 > hankakouhin\ ;
+二等分線 > nitoubunsen\ ;
+授業時間 > jugyoujikan\ ;
+天神地祇 > tenjinchigi\ ;
+追加予算 > tsuikayosan\ ;
+非合理的 > higouriteki\ ;
+労農政府 > rounouseifu\ ;
+下意上達 > kaijoutatsu\ ;
+乗車拒否 > joushakyohi\ ;
+水洗便所 > suisenbenjo\ ;
+収納家具 > shuunoukagu\ ;
+未開墾地 > mikaikonchi\ ;
+正当防衛 > seitoubouei\ ;
+学科試験 > gakkashiken\ ;
+潜水母艦 > sensuibokan\ ;
+使用価値 > shiyoukachi\ ;
+官尊民卑 > kansonminpi\ ;
+普遍文法 > fuhenbunpou\ ;
+過剰人口 > kajoujinkou\ ;
+出先機関 > desakikikan\ ;
+宣伝効果 > sendenkouka\ ;
+時々刻々 > jijikokkoku\ ;
+近似計算 > kinjikeisan\ ;
+護憲運動 > goken''undou\ ;
+原因結果 > gen''inkekka\ ;
+友軍部隊 > yuugunbutai\ ;
+無尽会社 > mujingaisha\ ;
+古今東西 > kokontouzai\ ;
+看護婦長 > kangofuchou\ ;
+悲憤慷慨 > hifunkougai\ ;
+古代文明 > kodaibunmei\ ;
+無産政党 > musanseitou\ ;
+選挙準備 > senkyojunbi\ ;
+意識不明 > ishikifumei\ ;
+組合主義 > kumiaishugi\ ;
+個体発生 > kotaihassei\ ;
+四分音符 > shibun''onpu\ ;
+使徒書簡 > shitoshokan\ ;
+優柔不断 > yuujuufudan\ ;
+煎餅蒲団 > senbeibuton\ ;
+予定調和 > yoteichouwa\ ;
+先祖伝来 > senzodenrai\ ;
+事業部制 > jigyoubusei\ ;
+臨時列車 > rinjiressha\ ;
+定期試験 > teikishiken\ ;
+総合課税 > sougoukazei\ ;
+遠隔講義 > enkakukougi\ ;
+海底油田 > kaiteiyuden\ ;
+真一文字 > maichimonji\ ;
+電話調査 > denwachousa\ ;
+技術援助 > gijutsuenjo\ ;
+偏向回路 > henkoukairo\ ;
+予定納税 > yoteinouzei\ ;
+皇后陛下 > kougouheika\ ;
+連邦制度 > renpouseido\ ;
+電気電子 > denkidenshi\ ;
+代行機関 > daikoukikan\ ;
+疲労困憊 > hiroukonpai\ ;
+盗難保険 > tounanhoken\ ;
+純真無垢 > junshinmuku\ ;
+法務大臣 > houmudaijin\ ;
+刑事処分 > keijishobun\ ;
+駐車違反 > chuushaihan\ ;
+時機尚早 > jikishousou\ ;
+年金基金 > nenkinkikin\ ;
+適法行為 > tekihoukoui\ ;
+物見遊山 > monomiyusan\ ;
+得意満面 > tokuimanmen\ ;
+時差出勤 > jisashukkin\ ;
+政治問題 > seijimondai\ ;
+絶対敬語 > zettaikeigo\ ;
+鍵盤楽器 > kenbangakki\ ;
+訴訟事件 > soshoujiken\ ;
+意味役割 > imiyakuwari\ ;
+価格安定 > kakakuantei\ ;
+今上陛下 > kinjouheika\ ;
+電気系統 > denkikeitou\ ;
+兌換銀行 > dakanginkou\ ;
+百科事典 > hyakkajiten\ ;
+全会一致 > zenkaiitchi\ ;
+麻薬患者 > mayakukanja\ ;
+心機一転 > shinkiitten\ ;
+無名戦士 > mumeisenshi\ ;
+唯一無二 > yuiitsumuni\ ;
+財政安定 > zaiseiantei\ ;
+看護学校 > kangogakkou\ ;
+分類基準 > bunruikijun\ ;
+文書偽造 > bunshogizou\ ;
+孤軍奮闘 > kogunfuntou\ ;
+数次旅券 > suujiryoken\ ;
+合成繊維 > gouseisen''i\ ;
+貴族政治 > kizokuseiji\ ;
+博愛主義 > hakuaishugi\ ;
+一斉検挙 > isseikenkyo\ ;
+低温輸送 > teion''yusou\ ;
+風光明媚 > fuukoumeibi\ ;
+後部座席 > koubuzaseki\ ;
+個人投資 > kojintoushi\ ;
+保険会社 > hokengaisha\ ;
+硫化水素 > ryuukasuiso\ ;
+日本列島 > nihonrettou\ ;
+戦時公債 > senjikousai\ ;
+海員組合 > kaiinkumiai\ ;
+修辞疑問 > shuujigimon\ ;
+法定貨幣 > houteikahei\ ;
+体内受精 > tainaijusei\ ;
+楽観主義 > rakkanshugi\ ;
+入院患者 > nyuuinkanja\ ;
+関連事項 > kanrenjikou\ ;
+原価計算 > genkakeisan\ ;
+電子回路 > denshikairo\ ;
+重点主義 > juutenshugi\ ;
+価電子帯 > kadenshitai\ ;
+有効需要 > yuukoujuyou\ ;
+事業年度 > jigyounendo\ ;
+相反定理 > souhanteiri\ ;
+六分儀座 > rokubungiza\ ;
+安定状態 > anteijoutai\ ;
+民主政治 > minshuseiji\ ;
+化学繊維 > kagakusen''i\ ;
+絶対音感 > zettaionkan\ ;
+自然破壊 > shizenhakai\ ;
+報道機関 > houdoukikan\ ;
+捕虜交換 > horyokoukan\ ;
+価値判断 > kachihandan\ ;
+手練手管 > terentekuda\ ;
+器械体操 > kikaitaisou\ ;
+養老保険 > yourouhoken\ ;
+不当表示 > futouhyouji\ ;
+安全運転 > anzen''unten\ ;
+交際範囲 > kousaihan''i\ ;
+応用科学 > ouyoukagaku\ ;
+不整合人 > fuseigoujin\ ;
+単元制度 > tangenseido\ ;
+一歩前進 > ippozenshin\ ;
+国王陛下 > kokuouheika\ ;
+放送衛星 > housoueisei\ ;
+寂光浄土 > jakkoujoudo\ ;
+後生大事 > goshoudaiji\ ;
+三民主義 > sanminshugi\ ;
+気管切開 > kikansekkai\ ;
+傲岸不遜 > gouganfuson\ ;
+家父長制 > kafuchousei\ ;
+暗黒星雲 > ankokuseiun\ ;
+近代国家 > kindaikokka\ ;
+前途有望 > zentoyuubou\ ;
+音楽理論 > ongakuriron\ ;
+委託販売 > itakuhanbai\ ;
+三寒四温 > sankanshion\ ;
+貧乏所帯 > binboujotai\ ;
+御伽草子 > otogizoushi\ ;
+神奈川県 > kanagawaken\ ;
+輿論調査 > yoronchousa\ ;
+電気装置 > denkisouchi\ ;
+地方議会 > chihougikai\ ;
+装甲部隊 > soukoubutai\ ;
+不可入性 > fukanyuusei\ ;
+南京木綿 > nankinmomen\ ;
+印象主義 > inshoushugi\ ;
+多士済々 > tashiseisei\ ;
+一張一弛 > itchouisshi\ ;
+区間列車 > kukanressha\ ;
+相思相愛 > soushisouai\ ;
+航空基地 > koukuukichi\ ;
+監査記録 > kansakiroku\ ;
+技術移転 > gijutsuiten\ ;
+産児制限 > sanjiseigen\ ;
+飽和状態 > houwajoutai\ ;
+知能検査 > chinoukensa\ ;
+孤影悄然 > koeishouzen\ ;
+五種競技 > goshukyougi\ ;
+団体保険 > dantaihoken\ ;
+姉妹都市 > shimaitoshi\ ;
+不通箇所 > futsuukasho\ ;
+破邪顕正 > hajakenshou\ ;
+政治団体 > seijidantai\ ;
+一喜一憂 > ikkiichiyuu\ ;
+準備命令 > junbimeirei\ ;
+受験科目 > jukenkamoku\ ;
+木管楽器 > mokkangakki\ ;
+中高音部 > chuukouonbu\ ;
+友愛結婚 > yuuaikekkon\ ;
+海軍基地 > kaigunkichi\ ;
+電子素子 > denshisoshi\ ;
+愛国運動 > aikokuundou\ ;
+人文地理 > jinmonchiri\ ;
+労働争議 > roudousougi\ ;
+情報処理 > jouhoushori\ ;
+可変資本 > kahenshihon\ ;
+為替差益 > kawasesaeki\ ;
+誘拐事件 > yuukaijiken\ ;
+三大都市 > sandaitoshi\ ;
+所要時間 > shoyoujikan\ ;
+女権運動 > joken''undou\ ;
+分散処理 > bunsanshori\ ;
+走行可能 > soukoukanou\ ;
+流言飛語 > ryuugenhigo\ ;
+一新紀元 > isshinkigen\ ;
+徒手体操 > toshutaisou\ ;
+封建主義 > houkenshugi\ ;
+受験戦争 > jukensensou\ ;
+出雲大社 > izumotaisha\ ;
+権門勢家 > kenmonseika\ ;
+無線操縦 > musensoujuu\ ;
+借家争議 > shakkasougi\ ;
+宇宙科学 > uchuukagaku\ ;
+古典芸能 > kotengeinou\ ;
+豪華絢爛 > goukakenran\ ;
+漢英字典 > kan''eijiten\ ;
+婦人運動 > fujin''undou\ ;
+不動明王 > fudoumyouou\ ;
+体外受精 > taigaijusei\ ;
+勤務年限 > kinmunengen\ ;
+満場一致 > manjouitchi\ ;
+前世生存 > zenseseizon\ ;
+会計年度 > kaikeinendo\ ;
+万葉仮名 > man''yougana\ ;
+傍聴随意 > bouchouzuii\ ;
+絶対多数 > zettaitasuu\ ;
+紅白試合 > kouhakujiai\ ;
+会計監査 > kaikeikansa\ ;
+八紘一宇 > hakkouichiu\ ;
+舞台装置 > butaisouchi\ ;
+事務長官 > jimuchoukan\ ;
+一般社会 > ippanshakai\ ;
+日帝時代 > nitteijidai\ ;
+登坂車線 > tohanshasen\ ;
+世界最大 > sekaisaidai\ ;
+指導原理 > shidougenri\ ;
+造次顛沛 > zoujitenpai\ ;
+航空管理 > koukuukanri\ ;
+感染経路 > kansenkeiro\ ;
+二等軍曹 > nitougunsou\ ;
+防火塗料 > boukatoryou\ ;
+自縄自縛 > jijoujibaku\ ;
+途中下車 > tochuugesha\ ;
+煎餅布団 > senbeibuton\ ;
+環境保護 > kankyouhogo\ ;
+嘘発見器 > usohakkenki\ ;
+面会時間 > menkaijikan\ ;
+重機関銃 > juukikanjuu\ ;
+法案審議 > houanshingi\ ;
+自動制御 > jidouseigyo\ ;
+個人指導 > kojinshidou\ ;
+自然発火 > shizenhakka\ ;
+主務大臣 > shumudaijin\ ;
+短期決戦 > tankikessen\ ;
+言語運用 > gengoun''you\ ;
+粗製濫造 > soseiranzou\ ;
+危険思想 > kikenshisou\ ;
+空域管理 > kuuikikanri\ ;
+御殿女中 > gotenjochuu\ ;
+隣保事業 > rinpojigyou\ ;
+合意心中 > gouishinjuu\ ;
+世界記録 > sekaikiroku\ ;
+基本条件 > kihonjouken\ ;
+農民一揆 > noumin''ikki\ ;
+前代未聞 > zendaimimon\ ;
+複合汚染 > fukugouosen\ ;
+絶対零度 > zettaireido\ ;
+構成可能 > kouseikanou\ ;
+一人舞台 > hitoributai\ ;
+皮下組織 > hikasoshiki\ ;
+地下資源 > chikashigen\ ;
+白化個体 > hakukakotai\ ;
+電話回線 > denwakaisen\ ;
+不正咬合 > fuseikougou\ ;
+美容体操 > biyoutaisou\ ;
+協議離婚 > kyougirikon\ ;
+温暖前線 > ondanzensen\ ;
+新規保管 > shinkihokan\ ;
+一貫番号 > ikkanbangou\ ;
+現行法規 > genkouhouki\ ;
+祖国復帰 > sokokufukki\ ;
+含水炭素 > gansuitanso\ ;
+労働時間 > roudoujikan\ ;
+為替相場 > kawasesouba\ ;
+世界一周 > sekaiisshuu\ ;
+医療法人 > iryouhoujin\ ;
+鼓舞激励 > kobugekirei\ ;
+時期尚早 > jikishousou\ ;
+粒度分布 > ryuudobunpu\ ;
+投下資本 > toukashihon\ ;
+用意周到 > youishuutou\ ;
+内燃機関 > nainenkikan\ ;
+防水加工 > bousuikakou\ ;
+個人消費 > kojinshouhi\ ;
+仮性近視 > kaseikinshi\ ;
+尊王攘夷 > son''noujoui\ ;
+空気伝染 > kuukidensen\ ;
+幼年時代 > younenjidai\ ;
+社会復帰 > shakaifukki\ ;
+電気製品 > denkiseihin\ ;
+時時刻刻 > jijikokkoku\ ;
+一貫作業 > ikkansagyou\ ;
+滞在期間 > taizaikikan\ ;
+無形財産 > mukeizaisan\ ;
+無断転載 > mudantensai\ ;
+均衡予算 > kinkouyosan\ ;
+付帯条件 > futaijouken\ ;
+軍事工場 > gunjikoujou\ ;
+有効数字 > yuukousuuji\ ;
+臍下丹田 > seikatanden\ ;
+試用期間 > shiyoukikan\ ;
+化学変化 > kagakuhenka\ ;
+自動車税 > jidoushazei\ ;
+言語道断 > gongodoudan\ ;
+担保物権 > tanpobukken\ ;
+営業時間 > eigyoujikan\ ;
+愛妻弁当 > aisaibentou\ ;
+美的嫌悪 > bitekiken''o\ ;
+三千世界 > sanzensekai\ ;
+多重放送 > tajuuhousou\ ;
+二重外交 > nijuugaikou\ ;
+予備工作 > yobikousaku\ ;
+肱掛椅子 > hijikakeisu\ ;
+短波放送 > tanpahousou\ ;
+風光絶佳 > fuukouzekka\ ;
+主情主義 > shujoushugi\ ;
+行動主義 > koudoushugi\ ;
+自分自身 > jibunjishin\ ;
+夜光塗料 > yakoutoryou\ ;
+帰無仮説 > kimukasetsu\ ;
+市場原理 > shijougenri\ ;
+京滋地方 > keijichihou\ ;
+大義名分 > taigimeibun\ ;
+呼吸運動 > kokyuuundou\ ;
+螺旋階段 > rasenkaidan\ ;
+英語教育 > eigokyouiku\ ;
+象牙海岸 > zougekaigan\ ;
+日本脳炎 > nihon''nouen\ ;
+和魂漢才 > wakonkansai\ ;
+経営再建 > keieisaiken\ ;
+脳下垂体 > noukasuitai\ ;
+募金運動 > bokin''undou\ ;
+刻苦勉励 > kokkubenrei\ ;
+既婚男性 > kikondansei\ ;
+治水工事 > chisuikouji\ ;
+日本人論 > nihonjinron\ ;
+軍事公債 > gunjikousai\ ;
+十人十色 > juunintoiro\ ;
+無配会社 > muhaigaisha\ ;
+家族手当 > kazokuteate\ ;
+羅針盤座 > rashinbanza\ ;
+福祉機器 > fukushikiki\ ;
+暫定予算 > zanteiyosan\ ;
+自費出版 > jihishuppan\ ;
+常用漢字 > jouyoukanji\ ;
+王侯貴族 > oukoukizoku\ ;
+人体模型 > jintaimokei\ ;
+日西辞典 > nisseijiten\ ;
+感情移入 > kanjouinyuu\ ;
+地方競馬 > chihoukeiba\ ;
+経済効果 > keizaikouka\ ;
+民事訴訟 > minjisoshou\ ;
+化学記号 > kagakukigou\ ;
+参加意識 > sankaishiki\ ;
+戦時体制 > senjitaisei\ ;
+自由市場 > jiyuushijou\ ;
+冷房完備 > reiboukanbi\ ;
+自己双対 > jikosoutsui\ ;
+火燵掛布 > kotatsugake\ ;
+希望価格 > kiboukakaku\ ;
+選対本部 > sentaihonbu\ ;
+先頭打者 > sentoudasha\ ;
+名前空間 > namaekuukan\ ;
+浅草海苔 > asakusanori\ ;
+事業本部 > jigyouhonbu\ ;
+理論闘争 > rirontousou\ ;
+人口増加 > jinkouzouka\ ;
+外交辞令 > gaikoujirei\ ;
+氏姓制度 > shiseiseido\ ;
+縄文時代 > joumonjidai\ ;
+世界大戦 > sekaitaisen\ ;
+機動演習 > kidouenshuu\ ;
+自警団員 > jikeidan''in\ ;
+電気抵抗 > denkiteikou\ ;
+防音装置 > bouonsouchi\ ;
+負債合計 > fusaigoukei\ ;
+遊軍記者 > yuugunkisha\ ;
+価値体系 > kachitaikei\ ;
+二重結婚 > nijuukekkon\ ;
+一長一短 > itchouittan\ ;
+護送船団 > gosousendan\ ;
+犯行現場 > hankougenba\ ;
+意見広告 > ikenkoukoku\ ;
+善因善果 > zen''inzenka\ ;
+無人地帯 > mujinchitai\ ;
+経営転換 > keieitenkan\ ;
+販売機会 > hanbaikikai\ ;
+遠隔操作 > enkakusousa\ ;
+慣用語句 > kan''yougoku\ ;
+液体空気 > ekitaikuuki\ ;
+出刃包丁 > debabouchou\ ;
+土讚本線 > dosanhonsen\ ;
+財政支援 > zaiseishien\ ;
+宮廷画家 > kyuuteigaka\ ;
+最後列車 > saigoressha\ ;
+理工学部 > rikougakubu\ ;
+保管会社 > hokangaisha\ ;
+配合禁忌 > haigoukinki\ ;
+過剰投資 > kajoutoushi\ ;
+家長制度 > kachouseido\ ;
+可聴距離 > kachoukyori\ ;
+親類縁者 > shinruienja\ ;
+宇宙化学 > uchuukagaku\ ;
+無理心中 > murishinjuu\ ;
+年賀葉書 > nengahagaki\ ;
+連邦予算 > renpouyosan\ ;
+創価学会 > soukagakkai\ ;
+利子補給 > rishihokyuu\ ;
+根本原理 > konpongenri\ ;
+安全保障 > anzenhoshou\ ;
+健康保険 > kenkouhoken\ ;
+暗黒時代 > ankokujidai\ ;
+世代交代 > sedaikoutai\ ;
+転送電話 > tensoudenwa\ ;
+昭和時代 > shouwajidai\ ;
+使用許可 > shiyoukyoka\ ;
+音楽映画 > ongakueiga\ ;
+宇宙遊泳 > uchuuyuuei\ ;
+保健制度 > hokenseido\ ;
+準備運動 > junbiundou\ ;
+代議制度 > daigiseido\ ;
+模型地図 > mokeichizu\ ;
+無茶苦茶 > muchakucha\ ;
+古往今来 > kooukonrai\ ;
+摩利支天 > marishiten\ ;
+人為淘汰 > jin''itouta\ ;
+稼働時間 > kadoujikan\ ;
+医療制度 > iryouseido\ ;
+面罵罵倒 > menbabatou\ ;
+選挙違反 > senkyoihan\ ;
+日本時間 > nihonjikan\ ;
+奴隷制度 > doreiseido\ ;
+構造保持 > kouzouhoji\ ;
+自動車化 > jidoushaka\ ;
+日本書紀 > nihonshoki\ ;
+不空成就 > fukuujouju\ ;
+平和運動 > heiwaundou\ ;
+公定歩合 > kouteibuai\ ;
+天衣無縫 > ten''imuhou\ ;
+理路整然 > riroseizen\ ;
+南京繻子 > nankinjusu\ ;
+虚無主義 > kyomushugi\ ;
+権威主義 > ken''ishugi\ ;
+気炎万丈 > kienbanjou\ ;
+三三九度 > sansankudo\ ;
+計算機間 > keisankima\ ;
+礼儀作法 > reigisahou\ ;
+滅茶苦茶 > mechakucha\ ;
+耳下腺炎 > jikasen''en\ ;
+石油危機 > sekiyukiki\ ;
+刑事事件 > keijijiken\ ;
+利用価値 > riyoukachi\ ;
+回線負荷 > kaisenfuka\ ;
+首尾一貫 > shubiikkan\ ;
+医療保険 > iryouhoken\ ;
+武装解除 > busoukaijo\ ;
+表意文字 > hyouimonji\ ;
+都市国家 > toshikokka\ ;
+無為徒食 > muitoshoku\ ;
+映画音楽 > eigaongaku\ ;
+前後左右 > zengosayuu\ ;
+野戦特科 > yasentokka\ ;
+不羈奔放 > fukihonpou\ ;
+一手販売 > ittehanbai\ ;
+当座預金 > touzayokin\ ;
+桜花爛漫 > oukaranman\ ;
+自由自在 > jiyuujizai\ ;
+乾燥無味 > kansoumumi\ ;
+二項定理 > nikouteiri\ ;
+活性汚泥 > kasseiodei\ ;
+三三五五 > sansangogo\ ;
+在庫管理 > zaikokanri\ ;
+火災保険 > kasaihoken\ ;
+罵詈雑言 > barizougon\ ;
+道路封鎖 > dourofuusa\ ;
+小委員会 > shouiinkai\ ;
+交渉委員 > koushouiin\ ;
+合同行為 > goudoukoui\ ;
+炉辺談話 > rohendanwa\ ;
+過去分詞 > kakobunshi\ ;
+営利会社 > eirigaisha\ ;
+人事不省 > jinjifusei\ ;
+異性関係 > iseikankei\ ;
+事故原因 > jikogen''in\ ;
+家出少女 > iedeshoujo\ ;
+古典主義 > kotenshugi\ ;
+不法投棄 > fuhoutouki\ ;
+二重螺旋 > nijuurasen\ ;
+位相速度 > isousokudo\ ;
+音韻部門 > on''inbumon\ ;
+機能主義 > kinoushugi\ ;
+機械警備 > kikaikeibi\ ;
+基礎試験 > kisoshiken\ ;
+家庭菜園 > kateisaien\ ;
+道路工事 > dourokouji\ ;
+亜爾然丁 > aruzenchin\ ;
+四苦八苦 > shikuhakku\ ;
+委細面談 > isaimendan\ ;
+対校試合 > taikoujiai\ ;
+人気作家 > ninkisakka\ ;
+暖冬異変 > dantouihen\ ;
+女性一般 > joseiippan\ ;
+怪獣映画 > kaijuueiga\ ;
+多種多様 > tashutayou\ ;
+二部教授 > nibukyouju\ ;
+速度違反 > sokudoihan\ ;
+横断歩道 > oudanhodou\ ;
+舗装道路 > hosoudouro\ ;
+無線技師 > musengishi\ ;
+飛鳥時代 > asukajidai\ ;
+回路基板 > kairokiban\ ;
+形成外科 > keiseigeka\ ;
+宇宙兵器 > uchuuheiki\ ;
+異常気象 > ijoukishou\ ;
+無機化学 > mukikagaku\ ;
+自由主義 > jiyuushugi\ ;
+位記追贈 > ikitsuisou\ ;
+実写映画 > jisshaeiga\ ;
+自由時間 > jiyuujikan\ ;
+御礼奉公 > oreiboukou\ ;
+園芸用具 > engeiyougu\ ;
+破茶目茶 > hachamecha\ ;
+不穏文書 > fuonbunsho\ ;
+漢字文化 > kanjibunka\ ;
+予備試験 > yobishiken\ ;
+労務管理 > roumukanri\ ;
+平和会議 > heiwakaigi\ ;
+任務部隊 > ninmubutai\ ;
+小間物屋 > komamonoya\ ;
+縦横無尽 > juuoumujin\ ;
+国家主義 > kokkashugi\ ;
+過剰投与 > kajoutouyo\ ;
+論理回路 > ronrikairo\ ;
+自壊作用 > jikaisayou\ ;
+準備期間 > junbikikan\ ;
+天下無双 > tenkamusou\ ;
+一瀉千里 > isshasenri\ ;
+横行闊歩 > oukoukappo\ ;
+剰余価値 > jouyokachi\ ;
+文化国家 > bunkakokka\ ;
+舞台稽古 > butaigeiko\ ;
+伊勢大廟 > isetaibyou\ ;
+相互支援 > sougoshien\ ;
+普遍原理 > fuhengenri\ ;
+不即不離 > fusokufuri\ ;
+悪因悪果 > akuin''akka\ ;
+三々九度 > sansankudo\ ;
+附和雷同 > fuwaraidou\ ;
+化粧部屋 > keshoubeya\ ;
+磨製石器 > maseisekki\ ;
+父子家庭 > fushikatei\ ;
+余韻嫋嫋 > yoinjoujou\ ;
+縄文土器 > joumondoki\ ;
+財務管理 > zaimukanri\ ;
+穂状花序 > suijoukajo\ ;
+辞書部門 > jishobumon\ ;
+機動部隊 > kidoubutai\ ;
+保安処分 > hoanshobun\ ;
+意思表示 > ishihyouji\ ;
+営利事業 > eirijigyou\ ;
+皮膚移植 > hifuishoku\ ;
+議事妨害 > gijibougai\ ;
+付和雷同 > fuwaraidou\ ;
+一騎当千 > ikkitousen\ ;
+阿鼻叫喚 > abikyoukan\ ;
+絶対温度 > zettaiondo\ ;
+黄金世界 > ougonsekai\ ;
+棒温度計 > bouondokei\ ;
+反対意見 > hantaiiken\ ;
+欣求浄土 > gongujoudo\ ;
+金貨準備 > kinkajunbi\ ;
+論理素子 > ronrisoshi\ ;
+露地栽培 > rojisaibai\ ;
+古墳時代 > kofunjidai\ ;
+無煙火薬 > muenkayaku\ ;
+政治機構 > seijikikou\ ;
+意志決定 > ishikettei\ ;
+負荷分散 > fukabunsan\ ;
+不偏不党 > fuhenfutou\ ;
+同床異夢 > doushouimu\ ;
+無限軌道 > mugenkidou\ ;
+軍事顧問 > gunjikomon\ ;
+耽美主義 > tanbishugi\ ;
+喜劇映画 > kigekieiga\ ;
+曼珠沙華 > manjushage\ ;
+模擬試験 > mogishiken\ ;
+規則違反 > kisokuihan\ ;
+夏炉冬扇 > karotousen\ ;
+雨天決行 > utenkekkou\ ;
+意見交換 > ikenkoukan\ ;
+不乾性油 > fukanseiyu\ ;
+泌尿器科 > hinyoukika\ ;
+帷幄上奏 > iakujousou\ ;
+全権委員 > zenken''iin\ ;
+演算機構 > enzankikou\ ;
+無蓋貨車 > mugaikasha\ ;
+二十世紀 > nijisseiki\ ;
+保護処分 > hogoshobun\ ;
+皮膚科学 > hifukagaku\ ;
+衆愚政治 > shuguseiji\ ;
+侍従武官 > jijuubukan\ ;
+控訴期間 > kousokikan\ ;
+上位構造 > jouikouzou\ ;
+常任委員 > jounin''iin\ ;
+芝居小屋 > shibaigoya\ ;
+公租公課 > kousokouka\ ;
+易感染性 > ikansensei\ ;
+紀伊國屋 > kinokuniya\ ;
+夜鷹蕎麦 > yotakasoba\ ;
+勤務時間 > kinmujikan\ ;
+厭世主義 > enseishugi\ ;
+単位記号 > tan''ikigou\ ;
+排他主義 > haitashugi\ ;
+宇宙飛行 > uchuuhikou\ ;
+仮名草紙 > kanazoushi\ ;
+坑内事故 > kounaijiko\ ;
+論理演算 > ronrienzan\ ;
+電気毛布 > denkimoufu\ ;
+雲鬢花顔 > unbinkagan\ ;
+御前会議 > gozenkaigi\ ;
+予備調査 > yobichousa\ ;
+平和主義 > heiwashugi\ ;
+稲荷寿司 > inarizushi\ ;
+注意事項 > chuuijikou\ ;
+胸部外科 > kyoubugeka\ ;
+非可換群 > hikakangun\ ;
+遺伝情報 > idenjouhou\ ;
+寄生火山 > kiseikazan\ ;
+二部授業 > nibujugyou\ ;
+非営利的 > hieiriteki\ ;
+河川工事 > kasenkouji\ ;
+相手次第 > aiteshidai\ ;
+便宜主義 > bengishugi\ ;
+皮膚呼吸 > hifukokyuu\ ;
+亜成層圏 > aseisouken\ ;
+空軍大尉 > kuuguntaii\ ;
+三々五々 > sansangogo\ ;
+梵和辞典 > bonwajiten\ ;
+控訴理由 > kousoriyuu\ ;
+部隊区分 > butaikubun\ ;
+悪魔主義 > akumashugi\ ;
+護岸工事 > gogankouji\ ;
+余韻嫋々 > yoinjoujou\ ;
+田夫野人 > denpuyajin\ ;
+奇奇怪怪 > kikikaikai\ ;
+神代文字 > jindaimoji\ ;
+古典時代 > kotenjidai\ ;
+市会議員 > shikaigiin\ ;
+危険負担 > kikenfutan\ ;
+健康不安 > kenkoufuan\ ;
+応急渡河 > oukyuutoka\ ;
+二重否定 > nijuuhitei\ ;
+意気衝天 > ikishouten\ ;
+医学用語 > igakuyougo\ ;
+舞台効果 > butaikouka\ ;
+電位差計 > den''isakei\ ;
+度数分布 > dosuubunpu\ ;
+運送保険 > unsouhoken\ ;
+高手小手 > takatekote\ ;
+無味乾燥 > mumikansou\ ;
+下院議長 > kaingichou\ ;
+軍備管理 > gunbikanri\ ;
+樹脂加工 > jushikakou\ ;
+利水工事 > risuikouji\ ;
+非常事態 > hijoujitai\ ;
+武装蜂起 > busouhouki\ ;
+有声音化 > yuuseionka\ ;
+価値基準 > kachikijun\ ;
+調理器具 > chourikigu\ ;
+砲煙弾雨 > houendan''u\ ;
+馬耳東風 > bajitoufuu\ ;
+平行移動 > heikouidou\ ;
+補助動詞 > hojodoushi\ ;
+否定応答 > hiteioutou\ ;
+自己資本 > jikoshihon\ ;
+黄金時代 > ougonjidai\ ;
+命令一下 > meireiikka\ ;
+納付期限 > noufukigen\ ;
+摸擬試験 > mogishiken\ ;
+小児麻痺 > shounimahi\ ;
+宣伝記事 > sendenkiji\ ;
+夏季休暇 > kakikyuuka\ ;
+臨時政府 > rinjiseifu\ ;
+三日三晩 > mikkamiban\ ;
+無理難題 > murinandai\ ;
+予備装置 > yobisouchi\ ;
+果樹栽培 > kajusaibai\ ;
+粗衣粗食 > soisoshoku\ ;
+人民委員 > jinmin''iin\ ;
+飽和蒸気 > houwajouki\ ;
+匹夫匹婦 > hippuhippu\ ;
+二分音符 > nibun''onpu\ ;
+千波万波 > senpabanpa\ ;
+異常発生 > ijouhassei\ ;
+治安部隊 > chianbutai\ ;
+刃傷沙汰 > ninjouzata\ ;
+不活性化 > fukasseika\ ;
+工事現場 > koujigenba\ ;
+自己宣伝 > jikosenden\ ;
+気管支炎 > kikanshien\ ;
+手前勝手 > temaegatte\ ;
+保守主義 > hoshushugi\ ;
+木端微塵 > koppamijin\ ;
+死亡記事 > shiboukiji\ ;
+過剰利益 > kajourieki\ ;
+女尊男卑 > josondanpi\ ;
+十二単衣 > juunihitoe\ ;
+分離課税 > bunrikazei\ ;
+任意捜査 > nin''isousa\ ;
+上位概念 > jouigainen\ ;
+舞台道具 > butaidougu\ ;
+上映時間 > joueijikan\ ;
+計器飛行 > keikihikou\ ;
+戦災孤児 > sensaikoji\ ;
+基本原理 > kihongenri\ ;
+情意投合 > jouitougou\ ;
+管理機能 > kanrikinou\ ;
+臨時記号 > rinjikigou\ ;
+兵役忌避 > heiekikihi\ ;
+戦争映画 > sensoueiga\ ;
+財政危機 > zaiseikiki\ ;
+有限花序 > yuugenkajo\ ;
+軍事基地 > gunjikichi\ ;
+不正事件 > fuseijiken\ ;
+出来次第 > dekishidai\ ;
+変体仮名 > hentaigana\ ;
+英雄主義 > eiyuushugi\ ;
+痴話喧嘩 > chiwagenka\ ;
+烏有先生 > uyuusensei\ ;
+憲法違反 > kenpouihan\ ;
+回転椅子 > kaiten''isu\ ;
+能登半島 > notohantou\ ;
+劣性遺伝 > resseiiden\ ;
+請負制度 > ukeoiseido\ ;
+水車小屋 > suishagoya\ ;
+褐毛和種 > akagewashu\ ;
+固定負債 > koteifusai\ ;
+依願免官 > iganmenkan\ ;
+政府機関 > seifukikan\ ;
+事件記者 > jikenkisha\ ;
+平安後期 > heiankouki\ ;
+雇用保険 > koyouhoken\ ;
+保護貿易 > hogoboueki\ ;
+世界制覇 > sekaiseiha\ ;
+無機肥料 > mukihiryou\ ;
+高野豆腐 > kouyadoufu\ ;
+代議政治 > daigiseiji\ ;
+意馬心猿 > ibashin''en\ ;
+交通遺児 > koutsuuiji\ ;
+遺棄貨物 > ikikamotsu\ ;
+炭化水素 > tankasuiso\ ;
+囲碁三級 > igosankyuu\ ;
+産婦人科 > sanfujinka\ ;
+理想主義 > risoushugi\ ;
+十字砲火 > juujihouka\ ;
+都道府県 > todoufuken\ ;
+麝香豌豆 > jakouendou\ ;
+盲唖学校 > mouagakkou\ ;
+保安条例 > hoanjourei\ ;
+石器時代 > sekkijidai\ ;
+似非理屈 > eserikutsu\ ;
+記念切手 > kinenkitte\ ;
+個人個人 > kojinkojin\ ;
+延滞利子 > entairishi\ ;
+分派主義 > bunpashugi\ ;
+毀誉褒貶 > kiyohouhen\ ;
+唯美主義 > yuibishugi\ ;
+軍事衛星 > gunjieisei\ ;
+無我夢中 > mugamuchuu\ ;
+予定期限 > yoteikigen\ ;
+立体映画 > rittaieiga\ ;
+天気模様 > tenkimoyou\ ;
+火口原湖 > kakougenko\ ;
+表音字母 > hyouonjibo\ ;
+音声言語 > onseigengo\ ;
+一昨昨日 > sakiototoi\ ;
+脱法行為 > dappoukoui\ ;
+個人主義 > kojinshugi\ ;
+不正規軍 > fuseikigun\ ;
+准看護婦 > junkangofu\ ;
+母子家庭 > boshikatei\ ;
+同名異人 > doumeiijin\ ;
+育児時間 > ikujijikan\ ;
+時価発行 > jikahakkou\ ;
+会議事項 > kaigijikou\ ;
+仮想記憶 > kasoukioku\ ;
+部分麻酔 > bubunmasui\ ;
+検事控訴 > kenjikouso\ ;
+経営管理 > keieikanri\ ;
+飛行時間 > hikoujikan\ ;
+四字熟語 > yojijukugo\ ;
+臨機応変 > rinkiouhen\ ;
+定期保険 > teikihoken\ ;
+造言飛語 > zougenhigo\ ;
+事務用品 > jimuyouhin\ ;
+言語地理 > gengochiri\ ;
+犯罪行為 > hanzaikoui\ ;
+輸送機関 > yusoukikan\ ;
+補助艦艇 > hojokantei\ ;
+五里霧中 > gorimuchuu\ ;
+三日天下 > mikkatenka\ ;
+基本単位 > kihontan''i\ ;
+猶予期間 > yuuyokikan\ ;
+請負工事 > ukeoikouji\ ;
+意思決定 > ishikettei\ ;
+後退文字 > koutaimoji\ ;
+男尊女卑 > dansonjohi\ ;
+大慈大悲 > daijidaihi\ ;
+如何様師 > ikasamashi\ ;
+臨界事故 > rinkaijiko\ ;
+因果関係 > ingakankei\ ;
+異種交配 > ishukouhai\ ;
+夜間勤務 > yakankinmu\ ;
+御国自慢 > okunijiman\ ;
+神経科医 > shinkeikai\ ;
+完全試合 > kanzenjiai\ ;
+公示地価 > koujichika\ ;
+一字一句 > ichijiikku\ ;
+原理主義 > genrishugi\ ;
+童話作家 > douwasakka\ ;
+妨害行為 > bougaikoui\ ;
+運営経費 > un''eikeihi\ ;
+二部合奏 > nibugassou\ ;
+名誉毀損 > meiyokison\ ;
+記録映画 > kirokueiga\ ;
+運搬管理 > unpankanri\ ;
+医科大学 > ikadaigaku\ ;
+加減乗除 > kagenjoujo\ ;
+阿片戦争 > ahensensou\ ;
+唯唯諾諾 > iidakudaku\ ;
+相対誤差 > soutaigosa\ ;
+飲酒運転 > inshuunten\ ;
+指名試合 > shimeijiai\ ;
+徒弟制度 > toteiseido\ ;
+紋羽二重 > monhabutae\ ;
+貨幣制度 > kaheiseido\ ;
+日和下駄 > hiyorigeta\ ;
+世界平和 > sekaiheiwa\ ;
+無理関数 > murikansuu\ ;
+音吐朗朗 > ontorourou\ ;
+梅雨前線 > baiuzensen\ ;
+電気時計 > denkidokei\ ;
+二十四日 > nijuuyokka\ ;
+悲歌慷慨 > hikakougai\ ;
+予防医学 > yobouigaku\ ;
+当期利益 > toukirieki\ ;
+皮下脂肪 > hikashibou\ ;
+陶磁器店 > toujikiten\ ;
+切符売場 > kippuuriba\ ;
+裸体主義 > rataishugi\ ;
+音標文字 > onpyoumoji\ ;
+不正規戦 > fuseikisen\ ;
+絶対位置 > zettaiichi\ ;
+簡易保険 > kan''ihoken\ ;
+寡頭政治 > katouseiji\ ;
+下水処理 > gesuishori\ ;
+記憶素子 > kiokusoshi\ ;
+音声記号 > onseikigou\ ;
+和平会議 > waheikaigi\ ;
+破壊主義 > hakaishugi\ ;
+宇宙基地 > uchuukichi\ ;
+不可知論 > fukachiron\ ;
+自衛手段 > jieishudan\ ;
+小売値段 > kourinedan\ ;
+市場規模 > shijoukibo\ ;
+議員立法 > giinrippou\ ;
+学級委員 > gakkyuuiin\ ;
+議会主義 > gikaishugi\ ;
+基礎科学 > kisokagaku\ ;
+捜査本部 > sousahonbu\ ;
+宇宙探査 > uchuutansa\ ;
+亜麻織物 > amaorimono\ ;
+順序不同 > junjofudou\ ;
+経済援助 > keizaienjo\ ;
+累算温度 > ruisanondo\ ;
+浪漫主義 > romanshugi\ ;
+武装都市 > busoutoshi\ ;
+平和国家 > heiwakokka\ ;
+道路地図 > dourochizu\ ;
+御朱印船 > goshuinsen\ ;
+夜郎自大 > yaroujidai\ ;
+部分否定 > bubunhitei\ ;
+講和会議 > kouwakaigi\ ;
+編組機械 > hensokikai\ ;
+医療器械 > iryoukikai\ ;
+正規分布 > seikibunpu\ ;
+会員名簿 > kaiinmeibo\ ;
+天変地異 > tenpenchii\ ;
+有史以来 > yuushiirai\ ;
+保護関税 > hogokanzei\ ;
+未帰還者 > mikikansha\ ;
+三日坊主 > mikkabouzu\ ;
+確固不動 > kakkofudou\ ;
+不側不離 > fusokufuri\ ;
+文房具屋 > bunbouguya\ ;
+康煕字典 > koukijiten\ ;
+未来永劫 > miraieigou\ ;
+無理算段 > murisandan\ ;
+虞美人草 > gubijinsou\ ;
+象牙細工 > zougezaiku\ ;
+滅茶滅茶 > mechamecha\ ;
+風車小屋 > fuushagoya\ ;
+子供部屋 > kodomobeya\ ;
+求愛誇示 > kyuuaikoji\ ;
+王政復古 > ouseifukko\ ;
+一人部屋 > hitoribeya\ ;
+不買運動 > fubaiundou\ ;
+吝嗇吝嗇 > kechikechi\ ;
+定期預金 > teikiyokin\ ;
+一定期間 > itteikikan\ ;
+地下運動 > chikaundou\ ;
+懐疑主義 > kaigishugi\ ;
+融通無碍 > yuuzuumuge\ ;
+保安要員 > hoan''youin\ ;
+主我主義 > shugashugi\ ;
+不作為犯 > fusakuihan\ ;
+舗装煉瓦 > hosourenga\ ;
+投影図法 > toueizuhou\ ;
+総状花序 > soujoukajo\ ;
+清浄無垢 > seijoumuku\ ;
+三面記事 > sanmenkiji\ ;
+才気縦横 > saikijuuou\ ;
+本位貨幣 > hon''ikahei\ ;
+馬鹿丁寧 > bakateinei\ ;
+日葡辞書 > nippojisho\ ;
+位相空間 > isoukuukan\ ;
+海事衛星 > kaijieisei\ ;
+空気機械 > kuukikikai\ ;
+共同井戸 > kyoudouido\ ;
+合理主義 > gourishugi\ ;
+天津御姉 > amatsumiko\ ;
+天手古舞 > tentekomai\ ;
+夜光時計 > yakoudokei\ ;
+自転車屋 > jitenshaya\ ;
+自家用車 > jikayousha\ ;
+単位制度 > tan''iseido\ ;
+文字情報 > mojijouhou\ ;
+規制解除 > kiseikaijo\ ;
+気焔万丈 > kienbanjou\ ;
+下水工事 > gesuikouji\ ;
+合意情死 > gouijoushi\ ;
+武装平和 > busouheiwa\ ;
+付帯事項 > futaijikou\ ;
+行方不明 > yukuefumei\ ;
+天気予報 > tenkiyohou\ ;
+不平不満 > fuheifuman\ ;
+被保険者 > hihokensha\ ;
+親子電話 > oyakodenwa\ ;
+多情多恨 > tajoutakon\ ;
+経営破綻 > keieihatan\ ;
+賛助会員 > sanjokaiin\ ;
+下部構造 > kabukouzou\ ;
+毎土曜日 > maidoyoubi\ ;
+予算措置 > yosansochi\ ;
+不穏分子 > fuonbunshi\ ;
+喜怒哀楽 > kidoairaku\ ;
+漢和辞典 > kanwajiten\ ;
+友誼国家 > yuugikokka\ ;
+相互保険 > sougohoken\ ;
+事大主義 > jidaishugi\ ;
+五輪会議 > gorinkaigi\ ;
+語形変化 > gokeihenka\ ;
+非戦闘員 > hisentouin\ ;
+無念無想 > munenmusou\ ;
+演算手順 > enzantejun\ ;
+武断主義 > budanshugi\ ;
+世話人間 > sewaningen\ ;
+幾何平均 > kikaheikin\ ;
+人工降雨 > jinkoukouu\ ;
+自問自答 > jimonjitou\ ;
+皇紀年度 > koukinendo\ ;
+口腔外科 > koukougeka\ ;
+脳性麻痺 > nouseimahi\ ;
+五十音順 > gojuuonjun\ ;
+演算精度 > enzanseido\ ;
+十字架状 > juujikajou\ ;
+不老不死 > furoufushi\ ;
+世界主義 > sekaishugi\ ;
+螺鈿細工 > radenzaiku\ ;
+記載事項 > kisaijikou\ ;
+炭素繊維 > tansosen''i\ ;
+無線電話 > musendenwa\ ;
+温情主義 > onjoushugi\ ;
+個人経営 > kojinkeiei\ ;
+奔放不羈 > honpoufuki\ ;
+鉄器時代 > tekkijidai\ ;
+物価騰貴 > bukkatouki\ ;
+日本舞踊 > nihonbuyou\ ;
+聾唖学校 > rouagakkou\ ;
+現代英語 > gendaieigo\ ;
+十二使徒 > juunishito\ ;
+日本庭園 > nihonteien\ ;
+遺伝暗号 > iden''angou\ ;
+軍事輸送 > gunjiyusou\ ;
+伴性遺伝 > hanseiiden\ ;
+経営参加 > keieisanka\ ;
+予備選挙 > yobisenkyo\ ;
+予備艦隊 > yobikantai\ ;
+予備選手 > yobisenshu\ ;
+不倶戴天 > fugutaiten\ ;
+平和部隊 > heiwabutai\ ;
+唯々諾々 > iidakudaku\ ;
+裁判沙汰 > saibanzata\ ;
+営利法人 > eirihoujin\ ;
+議会政治 > gikaiseiji\ ;
+雨天順延 > utenjun''en\ ;
+付帯費用 > futaihiyou\ ;
+代議員団 > daigiindan\ ;
+二重課税 > nijuukazei\ ;
+扶養控除 > fuyoukoujo\ ;
+衛星都市 > eiseitoshi\ ;
+電気回路 > denkikairo\ ;
+地下二階 > chikanikai\ ;
+預金口座 > yokinkouza\ ;
+色恋沙汰 > irokoizata\ ;
+貨幣価値 > kaheikachi\ ;
+残務整理 > zanmuseiri\ ;
+公営保険 > koueihoken\ ;
+譲渡担保 > joutotanpo\ ;
+一家団欒 > ikkadanran\ ;
+代議員会 > daigiinkai\ ;
+補正予算 > hoseiyosan\ ;
+過剰防衛 > kajoubouei\ ;
+予備座席 > yobizaseki\ ;
+衛生基準 > eiseikijun\ ;
+保護団体 > hogodantai\ ;
+儀装馬車 > gisoubasha\ ;
+時事問題 > jijimondai\ ;
+夫婦喧嘩 > fuufugenka\ ;
+断固抗議 > dankokougi\ ;
+五輪聖火 > gorinseika\ ;
+自分勝手 > jibunkatte\ ;
+軍需景気 > gunjukeiki\ ;
+基底部門 > kiteibumon\ ;
+丸太小屋 > marutagoya\ ;
+予想利益 > yosourieki\ ;
+五音音階 > goon''onkai\ ;
+火気厳禁 > kakigenkin\ ;
+十字架像 > juujikazou\ ;
+処理過程 > shorikatei\ ;
+一定不変 > itteifuhen\ ;
+月下美人 > gekkabijin\ ;
+瀬戸内海 > setonaikai\ ;
+老政治家 > rouseijika\ ;
+功利主義 > kourishugi\ ;
+規制緩和 > kiseikanwa\ ;
+如是我聞 > nyozegamon\ ;
+明治時代 > meijijidai\ ;
+同化作用 > doukasayou\ ;
+別途預金 > bettoyokin\ ;
+下種根性 > gesukonjou\ ;
+援助交際 > enjokousai\ ;
+国会議員 > kokkaigiin\ ;
+土地利用 > tochiriyou\ ;
+栄枯盛衰 > eikoseisui\ ;
+相互作用 > sougosayou\ ;
+舞台衣装 > butaiishou\ ;
+合議制度 > gougiseido\ ;
+雌雄異株 > shiyuuishu\ ;
+反射誤差 > hanshagosa\ ;
+塩素酸塩 > ensosan''en\ ;
+絶対誤差 > zettaigosa\ ;
+物損事故 > bussonjiko\ ;
+全部保険 > zenbuhoken\ ;
+悪巫山戯 > warufuzake\ ;
+整形外科 > seikeigeka\ ;
+武家政権 > bukeseiken\ ;
+二項分布 > nikoubunpu\ ;
+映画会社 > eigagaisha\ ;
+鉄砲百合 > teppouyuri\ ;
+名誉会員 > meiyokaiin\ ;
+応募用紙 > ouboyoushi\ ;
+自浄作用 > jijousayou\ ;
+外貨預金 > gaikayokin\ ;
+恐怖映画 > kyoufueiga\ ;
+課税控除 > kazeikoujo\ ;
+許容誤差 > kyoyougosa\ ;
+不定期刑 > futeikikei\ ;
+明治維新 > meijiishin\ ;
+言語機能 > gengokinou\ ;
+保税倉庫 > hozeisouko\ ;
+医療機関 > iryoukikan\ ;
+石井聰互 > ishiisougo\ ;
+軍事封鎖 > gunjifuusa\ ;
+位階勲等 > ikaikuntou\ ;
+耐火煉瓦 > taikarenga\ ;
+古今無類 > kokonmurui\ ;
+電波管理 > denpakanri\ ;
+民事事件 > minjijiken\ ;
+自然保護 > shizenhogo\ ;
+画像処理 > gazoushori\ ;
+種種雑多 > shujuzatta\ ;
+映画俳優 > eigahaiyuu\ ;
+目茶目茶 > mechamecha\ ;
+磁気録音 > jikirokuon\ ;
+不協和音 > fukyouwaon\ ;
+本位記号 > hon''ikigou\ ;
+衛生管理 > eiseikanri\ ;
+相互主義 > sougoshugi\ ;
+応募資金 > ouboshikin\ ;
+復古主義 > fukkoshugi\ ;
+次亜硫酸 > jiaryuusan\ ;
+平安時代 > heianjidai\ ;
+情報機器 > jouhoukiki\ ;
+三位一体 > sanmiittai\ ;
+政務次官 > seimujikan\ ;
+雌雄異体 > shiyuuitai\ ;
+武断政治 > budanseiji\ ;
+酸化炭素 > sankatanso\ ;
+水彩画家 > suisaigaka\ ;
+基礎代謝 > kisotaisha\ ;
+一杯機嫌 > ippaikigen\ ;
+道路輸送 > douroyusou\ ;
+亜熱帯林 > anettairin\ ;
+青息吐息 > aoikitoiki\ ;
+慇懃無礼 > inginburei\ ;
+糞真面目 > kusomajime\ ;
+自主規制 > jishukisei\ ;
+弥生時代 > yayoijidai\ ;
+目茶苦茶 > mechakucha\ ;
+予備会談 > yobikaidan\ ;
+等位構造 > touikouzou\ ;
+他流試合 > taryuujiai\ ;
+安定操作 > anteisousa\ ;
+無償行為 > mushoukoui\ ;
+夏期休暇 > kakikyuuka\ ;
+夏期学校 > kakigakkou\ ;
+宇宙医学 > uchuuigaku\ ;
+名誉除隊 > meiyojotai\ ;
+五臓六腑 > gozouroppu\ ;
+執行委員 > shikkouiin\ ;
+四面楚歌 > shimensoka\ ;
+威風堂堂 > ifuudoudou\ ;
+軍事会議 > gunjikaigi\ ;
+跛行景気 > hakoukeiki\ ;
+饂飩粉病 > udonkobyou\ ;
+天下一品 > tenkaippin\ ;
+基地閉鎖 > kichiheisa\ ;
+筆記用具 > hikkiyougu\ ;
+蒸気機関 > joukikikan\ ;
+磁気抵抗 > jikiteikou\ ;
+丁字定規 > teijijougi\ ;
+固定金利 > koteikinri\ ;
+起動時間 > kidoujikan\ ;
+自己欺瞞 > jikogiman\ ;
+慰安旅行 > ianryokou\ ;
+電気器具 > denkikigu\ ;
+危機打者 > kikidasha\ ;
+塩化水素 > enkasuiso\ ;
+人事異動 > jinjiidou\ ;
+亜鉛鉄板 > aenteppan\ ;
+遮二無二 > shanimuni\ ;
+遺伝地図 > idenchizu\ ;
+不法行為 > fuhoukoui\ ;
+死体遺棄 > shitaiiki\ ;
+内野安打 > naiyaanda\ ;
+平穏無事 > heionbuji\ ;
+明明後日 > shiasatte\ ;
+一気呵成 > ikkikasei\ ;
+武器貸与 > bukitaiyo\ ;
+一夫多妻 > ipputasai\ ;
+危機突破 > kikitoppa\ ;
+医療機器 > iryoukiki\ ;
+天下無比 > tenkamuhi\ ;
+掩護部隊 > engobutai\ ;
+馬鹿野郎 > bakayarou\ ;
+口語英語 > kougoeigo\ ;
+鉄火味噌 > tekkamiso\ ;
+阿弥陀経 > amidakyou\ ;
+阿弥陀籤 > amidakuji\ ;
+存在意義 > sonzaiigi\ ;
+又従兄弟 > mataitoko\ ;
+羽毛布団 > umoufuton\ ;
+利己主義 > rikoshugi\ ;
+営利主義 > eirishugi\ ;
+無声映画 > museieiga\ ;
+補助漢字 > hojokanji\ ;
+和英辞書 > waeijisho\ ;
+同位元素 > douigenso\ ;
+再従兄弟 > futaitoko\ ;
+亜鉛凸版 > aentoppan\ ;
+磁気浮上 > jikifujou\ ;
+不法移民 > fuhouimin\ ;
+越権行為 > ekkenkoui\ ;
+主意主義 > shuishugi\ ;
+自己検査 > jikokensa\ ;
+多事多難 > tajitanan\ ;
+ＡＢＣ順 > ēbīshījun\ ;
+意気揚揚 > ikiyouyou\ ;
+和英辞典 > waeijiten\ ;
+不意試験 > fuishiken\ ;
+模範試合 > mohanjiai\ ;
+二重母音 > nijuuboin\ ;
+栄耀栄華 > eiyoueiga\ ;
+母語話者 > bogowasha\ ;
+木戸御免 > kidogomen\ ;
+自己疎外 > jikosogai\ ;
+基礎控除 > kisokoujo\ ;
+一定温度 > itteiondo\ ;
+手前味噌 > temaemiso\ ;
+允文允武 > inbuninbu\ ;
+自暴自棄 > jiboujiki\ ;
+相撲部屋 > sumoubeya\ ;
+自己保存 > jikohozon\ ;
+多事多端 > tajitatan\ ;
+明々後日 > shiasatte\ ;
+曖昧模糊 > aimaimoko\ ;
+事務次官 > jimujikan\ ;
+気宇広大 > kiukoudai\ ;
+多数意見 > tasuuiken\ ;
+歯科医師 > shikaishi\ ;
+美化運動 > bikaundou\ ;
+自己主義 > jikoshugi\ ;
+実行委員 > jikkouiin\ ;
+合気道家 > aikidouka\ ;
+遺族扶助 > izokufujo\ ;
+娑羅双樹 > sarasouju\ ;
+意気揚々 > ikiyouyou\ ;
+自己顕示 > jikokenji\ ;
+自己負担 > jikofutan\ ;
+露天風呂 > rotenburo\ ;
+意気投合 > ikitougou\ ;
+運否天賦 > unputenpu\ ;
+富栄養化 > fueiyouka\ ;
+印度支那 > indoshina\ ;
+欧化主義 > oukashugi\ ;
+無二無三 > munimuzan\ ;
+三日三夜 > mikkamiyo\ ;
+牡丹海老 > botan''ebi\ ;
+電気機器 > denkikiki\ ;
+自己嫌悪 > jikoken''o\ ;
+基本合意 > kihongoui\ ;
+小児科医 > shounikai\ ;
+我武者羅 > gamushara\ ;
+自己犠牲 > jikogisei\ ;
+相互扶助 > sougofujo\ ;
+同音異義 > douon''igi\ ;
+自己本位 > jikohon''i\ ;
+異常高温 > ijoukouon\ ;
+軍事援助 > gunjienjo\ ;
+弊衣破帽 > heiihabou\ ;
+七五三縄 > shimenawa\ ;
+文化遺産 > bunkaisan\ ;
+又従姉妹 > mataitoko\ ;
+自家受精 > jikajusei\ ;
+自家受粉 > jikajufun\ ;
+民生委員 > minseiiin\ ;
+愛他主義 > aitashugi\ ;
+一党一派 > ittouippa\ ;
+怪奇映画 > kaikieiga\ ;
+釈迦牟尼 > shakamuni\ ;
+社会経済 > shakaikei\ ;
+結跏趺座 > kekkafuza\ ;
+蓖麻子油 > himashiyu\ ;
+天気具合 > tenkiguai\ ;
+一口同音 > ikkudouon\ ;
+不可思議 > fukashigi\ ;
+医事伝道 > ijidendou\ ;
+音部記号 > onbukigou\ ;
+奈良時代 > narajidai\ ;
+耳鼻咽喉 > jibiinkou\ ;
+空気汚染 > kuukiosen\ ;
+烏帽子貝 > eboshigai\ ;
+有象無象 > uzoumuzou\ ;
+起訴猶予 > kisoyuuyo\ ;
+伊勢神宮 > isejinguu\ ;
+尸位素餐 > shiisosan\ ;
+野天風呂 > notenburo\ ;
+無理無体 > murimutai\ ;
+意気軒高 > ikikenkou\ ;
+語尾変化 > gobihenka\ ;
+九分九厘 > kubukurin\ ;
+自己規制 > jikokisei\ ;
+同委員会 > douiinkai\ ;
+沙羅双樹 > sarasouju\ ;
+一妻多夫 > issaitafu\ ;
+不正行為 > fuseikoui\ ;
+現状維持 > genjouiji\ ;
+美辞麗句 > bijireiku\ ;
+不言不語 > fugenfugo\ ;
+下部機関 > kabukikan\ ;
+個人誤差 > kojingosa\ ;
+自由意志 > jiyuuishi\ ;
+二次記憶 > nijikioku\ ;
+区会議員 > kukaigiin\ ;
+古事記伝 > kojikiden\ ;
+無為無策 > muimusaku\ ;
+小生意気 > konamaiki\ ;
+汚染除去 > osenjokyo\ ;
+扶養義務 > fuyougimu\ ;
+擬古主義 > gikoshugi\ ;
+九寸五分 > kusungobu\ ;
+意気軒昂 > ikikenkou\ ;
+女郎蜘蛛 > jorougumo\ ;
+不随意筋 > fuzuiikin\ ;
+移行期間 > ikoukikan\ ;
+付加価値 > fukakachi\ ;
+土壌汚染 > dojouosen\ ;
+上院議員 > jouingiin\ ;
+御家騒動 > oiesoudou\ ;
+二度三度 > nidosando\ ;
+高祖頭巾 > kosozukin\ ;
+予備部品 > yobibuhin\ ;
+自己批判 > jikohihan\ ;
+自画自賛 > jigajisan\ ;
+自画自讚 > jigajisan\ ;
+首位打者 > shuidasha\ ;
+因果応報 > ingaouhou\ ;
+下女下男 > gejogenan\ ;
+安楽椅子 > anrakuisu\ ;
+委員付託 > iinfutaku\ ;
+予備運動 > yobiundou\ ;
+遺産管理 > isankanri\ ;
+争議行為 > sougikoui\ ;
+麻婆豆腐 > mābodoufu\ ;
+文化映画 > bunkaeiga\ ;
+意味内容 > iminaiyou\ ;
+予備判事 > yobihanji\ ;
+武家時代 > bukejidai\ ;
+医療過誤 > iryoukago\ ;
+武家政治 > bukeseiji\ ;
+女王陛下 > joouheika\ ;
+大気汚染 > taikiosen\ ;
+基礎工事 > kisokouji\ ;
+無理往生 > murioujou\ ;
+何時時分 > itsujibun\ ;
+相互依存 > sougoizon\ ;
+語彙規則 > goikisoku\ ;
+自己弁護 > jikobengo\ ;
+五十音図 > gojuuonzu\ ;
+利他主義 > ritashugi\ ;
+加持祈祷 > kajikitou\ ;
+花卉園芸 > kakiengei\ ;
+和製英語 > waseieigo\ ;
+仮名手本 > kanadehon\ ;
+英和辞典 > eiwajiten\ ;
+予備会議 > yobikaigi\ ;
+二院制度 > niinseido\ ;
+夏期時間 > kakijikan\ ;
+井戸屋形 > idoyakata\ ;
+自己矛盾 > jikomujun\ ;
+危機管理 > kikikanri\ ;
+基礎体温 > kisotaion\ ;
+盂蘭盆会 > urabon''e\ ;
+医科歯科 > ikashika\ ;
+二度手間 > nidodema\ ;
+于蘭盆会 > urabon''e\ ;
+恵比寿顔 > ebisugao\ ;
+愚図愚図 > guzuguzu\ ;
+和気藹藹 > wakiaiai\ ;
+不真面目 > fumajime\ ;
+得手勝手 > etekatte\ ;
+寄付行為 > kifukoui\ ;
+乎古止点 > okototen\ ;
+富士五湖 > fujigoko\ ;
+是是非非 > zezehihi\ ;
+我利我利 > garigari\ ;
+江戸時代 > edojidai\ ;
+歯科医院 > shikaiin\ ;
+意気阻喪 > ikisosou\ ;
+違犯行為 > ihankoui\ ;
+恵比須講 > ebisukou\ ;
+一歩一歩 > ippoippo\ ;
+和気藹々 > wakiaiai\ ;
+無期延期 > mukienki\ ;
+赤鳥赤腹 > akakokko\ ;
+天爾乎波 > teniwoha\ ;
+依怙贔屓 > ekohiiki\ ;
+事務機器 > jimukiki\ ;
+自己暗示 > jikoanji\ ;
+伯剌西爾 > burajiru\ ;
+下院議員 > kaingiin\ ;
+電気椅子 > denkiisu\ ;
+平和維持 > heiwaiji\ ;
+有為転変 > uitenpen\ ;
+英小文字 > eikomoji\ ;
+何処其処 > dokosoko\ ;
+弖爾乎波 > teniwoha\ ;
+出来具合 > dekiguai\ ;
+意味部門 > imibumon\ ;
+土左衛門 > dozaemon\ ;
+意味原理 > imigenri\ ;
+依估贔屓 > ekohiiki\ ;
+婦人科医 > fujinkai\ ;
+烏帽子名 > eboshina\ ;
+風邪気味 > kazegimi\ ;
+左顧右眄 > sakouben\ ;
+仮名文字 > kanamoji\ ;
+地下足袋 > jikatabi\ ;
+大真面目 > oomajime\ ;
+検非違使 > kebiishi\ ;
+御無沙汰 > gobusata\ ;
+右顧左眄 > ukosaben\ ;
+違法行為 > ihoukoui\ ;
+会意文字 > kaiimoji\ ;
+合縁奇縁 > aienkien\ ;
+監査委員 > kansaiin\ ;
+異口同音 > ikudouon\ ;
+引火温度 > inkaondo\ ;
+阿古屋貝 > akoyagai\ ;
+生真面目 > kimajime\ ;
+是々非々 > zezehihi\ ;
+無理矢理 > muriyari\ ;
+示威運動 > jiiundou\ ;
+一夫一婦 > ippuippu\ ;
+五分五分 > gobugobu\ ;
+天爾遠波 > teniwoha\ ;
+後鳥羽院 > gotobain\ ;
+有耶無耶 > uyamuya\ ;
+亜米利加 > amerika\ ;
+荏胡麻油 > egomayu\ ;
+皮膚科医 > hifukai\ ;
+右往左往 > uousaou\ ;
+亜麻仁油 > amaniyu\ ;
+障泥烏賊 > aoriika\ ;
+御披露目 > ohirome\ ;
+赤啄木鳥 > akagera\ ;
+保護委員 > hogoiin\ ;
+阿弗利加 > afurika\ ;
+今日明日 > kyouasu\ ;
+亜拉毘亜 > arabia\ ;
+伊勢海老 > iseebi\ ;
+亜剌比亜 > arabia\ ;
+緑啄木鳥 > aogera\ ;
+御目見得 > omemie\ ;
+寿教室 > kotobukikyoushitsu\ ;
+私小説 > watakushishousetsu\ ;
+七七日 > shichishichinichi\ ;
+紫露草 > murasakitsuyukusa\ ;
+七々日 > shichishichinichi\ ;
+軽口話 > karukuchibanashi\ ;
+植物質 > shokubutsushitsu\ ;
+宿直室 > shukuchokushitsu\ ;
+一口話 > hitokuchibanashi\ ;
+筍生活 > takenokoseikatsu\ ;
+譲渡人 > yuzuriwatashinin\ ;
+内幕話 > uchimakubanashi\ ;
+集札係 > shuusatsugakari\ ;
+金槌頭 > kanadzuchiatama\ ;
+出札掛 > shussatsugakari\ ;
+三指鴎 > mitsuyubikamome\ ;
+出札係 > shussatsugakari\ ;
+腰赤燕 > koshiakatsubame\ ;
+診察室 > shinsatsushitsu\ ;
+識別力 > shikibetsuryoku\ ;
+私自身 > watakushijishin\ ;
+平清盛 > tairanokiyomori\ ;
+入出力 > nyuushutsuryoku\ ;
+紛失届 > funshitsutodoke\ ;
+求職係 > kyuushokugakari\ ;
+金壺眼 > kanatsubomanako\ ;
+陳列室 > chinretsushitsu\ ;
+特別室 > tokubetsushitsu\ ;
+紫水晶 > murasakizuishou\ ;
+取締役 > torishimariyaku\ ;
+片口鰯 > katakuchiiwashi\ ;
+不倒翁 > okiagarikoboshi\ ;
+不肖私 > fushouwatakushi\ ;
+失業率 > shitsugyouritsu\ ;
+抽出物 > chuushutsubutsu\ ;
+女友達 > on''natomodachi\ ;
+百日咳 > hyakunichizeki\ ;
+行列式 > gyouretsushiki\ ;
+取扱人 > toriatsukainin\ ;
+出入国 > shutsunyuukoku\ ;
+才槌頭 > saidzuchiatama\ ;
+逆説的 > gyakusetsuteki\ ;
+副食物 > fukushokubutsu\ ;
+瓢箪鯰 > hyoutan''namazu\ ;
+東半球 > higashihankyuu\ ;
+動物質 > doubutsushitsu\ ;
+越中褌 > etchuufundoshi\ ;
+印半纏 > shirushibanten\ ;
+仕方話 > shikatabanashi\ ;
+改札係 > kaisatsugakari\ ;
+剃刀触 > kamisorikabure\ ;
+売渡証 > uriwatashishou\ ;
+告別式 > kokubetsushiki\ ;
+夾雑物 > kyouzatsubutsu\ ;
+緑白色 > ryokuhakushoku\ ;
+膝関節 > shitsukansetsu\ ;
+接続口 > setsuzokuguchi\ ;
+凝着力 > gyouchakuryoku\ ;
+懐勘定 > futokorokanjou\ ;
+提出物 > teishutsubutsu\ ;
+出札口 > shussatsuguchi\ ;
+天日瓦 > tenjitsugawara\ ;
+夢物語 > yumemonogatari\ ;
+一昔前 > hitomukashimae\ ;
+百卒長 > hyakusotsuchou\ ;
+逆行列 > gyakugyouretsu\ ;
+旭日章 > kyokujitsushou\ ;
+幼友達 > osanatomodachi\ ;
+尻軽女 > shirigaruon''na\ ;
+白鉢巻 > shirohachimaki\ ;
+薄紫色 > usumurasakiiro\ ;
+出塁率 > shutsuruiritsu\ ;
+電信柱 > denshinbashira\ ;
+内証話 > naishoubanashi\ ;
+緑玉石 > ryokugyokuseki\ ;
+膝蓋骨 > shitsugaikotsu\ ;
+仮出獄 > karishutsugoku\ ;
+特別職 > tokubetsushoku\ ;
+命辛辛 > inochigaragara\ ;
+転入届 > ten''nyuutodoke\ ;
+受付係 > uketsukegakari\ ;
+就職率 > shuushokuritsu\ ;
+給料袋 > kyuuryoubukuro\ ;
+植物学 > shokubutsugaku\ ;
+大和魂 > yamatodamashii\ ;
+下台所 > shimodaidokoro\ ;
+就職口 > shuushokuguchi\ ;
+筋肉質 > kin''nikushitsu\ ;
+力仕事 > chikarashigoto\ ;
+嫡出子 > chakushutsushi\ ;
+片袖机 > katasodedzukue\ ;
+卒業式 > sotsugyoushiki\ ;
+光通信 > hikaritsuushin\ ;
+取締法 > torishimarihou\ ;
+手術室 > shujutsushitsu\ ;
+試着室 > shichakushitsu\ ;
+爆発物 > bakuhatsubutsu\ ;
+猪武者 > inoshishimusha\ ;
+大黒柱 > daikokubashira\ ;
+鎖帷子 > kusarikatabira\ ;
+不躾者 > bushitsukemono\ ;
+三色菫 > sanshokusumire\ ;
+命辛々 > inochigaragara\ ;
+出力線 > shutsuryokusen\ ;
+爆発力 > bakuhatsuryoku\ ;
+着信局 > chakushinkyoku\ ;
+排出物 > haishutsubutsu\ ;
+鉱物質 > koubutsushitsu\ ;
+振出局 > furidashikyoku\ ;
+執務室 > shitsumushitsu\ ;
+発熱量 > hatsunetsuryou\ ;
+大八車 > daihachiguruma\ ;
+直接的 > chokusetsuteki\ ;
+θ理論 > shi\ ̄ta\ ̄riron\ ;
+改札鋏 > kaisatsuhasami\ ;
+不束者 > futsutsukamono\ ;
+燕千鳥 > tsubamechidori\ ;
+休憩室 > kyuukeishitsu\ ;
+日没前 > nichibotsuzen\ ;
+狐格子 > kitsunegoushi\ ;
+閲覧室 > etsuranshitsu\ ;
+建築物 > kenchikubutsu\ ;
+実質的 > jisshitsuteki\ ;
+翌々日 > yokuyokujitsu\ ;
+試聴室 > shichoushitsu\ ;
+古強者 > furutsuwamono\ ;
+狸囃子 > tanukibayashi\ ;
+植毛術 > shokumoujutsu\ ;
+旧正月 > kyuushougatsu\ ;
+丸鼻蜂 > maruhanabachi\ ;
+脚色者 > kyakushokusha\ ;
+東海岸 > higashikaigan\ ;
+直立茎 > chokuritsukei\ ;
+白雪姫 > shirayukihime\ ;
+断熱的 > dan''netsuteki\ ;
+泥縄式 > doronawashiki\ ;
+観閲式 > kan''etsushiki\ ;
+吸湿性 > kyuushitsusei\ ;
+消極的 > shoukyokuteki\ ;
+漂流物 > hyouryuubutsu\ ;
+下二桁 > shimofutaketa\ ;
+憂鬱質 > yuuutsushitsu\ ;
+俄成金 > niwakanarikin\ ;
+収穫物 > shuukakubutsu\ ;
+貸付金 > kashitsukekin\ ;
+動物達 > doubutsutachi\ ;
+食糧庁 > shokuryouchou\ ;
+腺病質 > senbyoushitsu\ ;
+民約説 > min''yakusetsu\ ;
+吸湿剤 > kyuushitsuzai\ ;
+二筋道 > futasujimichi\ ;
+半長靴 > han''nagagutsu\ ;
+校長室 > kouchoushitsu\ ;
+決断力 > ketsudanryoku\ ;
+差出人 > sashidashinin\ ;
+七曜表 > shichiyouhyou\ ;
+灰緑色 > kairyokushoku\ ;
+本質的 > honshitsuteki\ ;
+求心力 > kyuushinryoku\ ;
+結団式 > ketsudanshiki\ ;
+改札口 > kaisatsuguchi\ ;
+繁殖力 > hanshokuryoku\ ;
+囃子詞 > hayashikotoba\ ;
+人差指 > hitosashiyubi\ ;
+七面鳥 > shichimenchou\ ;
+発言力 > hatsugenryoku\ ;
+出世頭 > shussegashira\ ;
+集中力 > shuuchuuryoku\ ;
+屈辱的 > kutsujokuteki\ ;
+商売敵 > shoubaigataki\ ;
+出生届 > shusseitodoke\ ;
+脱獄囚 > datsugokushuu\ ;
+古武士 > furutsuwamono\ ;
+土産話 > miyagebanashi\ ;
+白装束 > shiroshouzoku\ ;
+腰巾着 > koshiginchaku\ ;
+半熟卵 > hanjukutamago\ ;
+没常識 > botsujoushiki\ ;
+集塵袋 > shuujinbukuro\ ;
+三下奴 > sanshitayakko\ ;
+地質学 > chishitsugaku\ ;
+楽屋話 > gakuyabanashi\ ;
+強奪物 > goudatsubutsu\ ;
+閑日月 > kanjitsugetsu\ ;
+挑発的 > chouhatsuteki\ ;
+祝祭日 > shukusaijitsu\ ;
+彫刻術 > choukokujutsu\ ;
+中立国 > chuuritsukoku\ ;
+喫煙室 > kitsuenshitsu\ ;
+一両日 > ichiryoujitsu\ ;
+橋脚舟 > kyoukyakushuu\ ;
+漬物石 > tsukemonoishi\ ;
+外出中 > gaishutsuchuu\ ;
+鉄染色 > tetsusenshoku\ ;
+独立心 > dokuritsushin\ ;
+今月末 > kongetsumatsu\ ;
+実物大 > jitsubutsudai\ ;
+拾得物 > shuutokubutsu\ ;
+倉敷料 > kurashikiryou\ ;
+資料室 > shiryoushitsu\ ;
+買物袋 > kaimonobukuro\ ;
+吸収力 > kyuushuuryoku\ ;
+独立国 > dokuritsukoku\ ;
+血尿症 > ketsunyoushou\ ;
+彫刻物 > choukokubutsu\ ;
+堪忍袋 > kan''ninbukuro\ ;
+社長室 > shachoushitsu\ ;
+丼勘定 > donburikanjou\ ;
+玉子丼 > tamagodonburi\ ;
+縮刷版 > shukusatsuban\ ;
+今日的 > kon''nichiteki\ ;
+洞察力 > dousatsuryoku\ ;
+松食虫 > matsukuimushi\ ;
+芋蔓式 > imodzurushiki\ ;
+質量数 > shitsuryousuu\ ;
+別配達 > betsuhaitatsu\ ;
+今日様 > kon''nichisama\ ;
+冠大会 > kanmuritaikai\ ;
+追複曲 > tsuifukukyoku\ ;
+組合頭 > kumiaigashira\ ;
+散歩旁 > sanpokatagata\ ;
+供託物 > kyoutakubutsu\ ;
+出願人 > shutsugan''nin\ ;
+粘着力 > nenchakuryoku\ ;
+宿泊料 > shukuhakuryou\ ;
+枝垂桜 > shidarezakura\ ;
+古代紫 > kodaimurasaki\ ;
+枝垂柳 > shidareyanagi\ ;
+深緑色 > fukamidoriiro\ ;
+積雪量 > sekisetsuryou\ ;
+研究室 > kenkyuushitsu\ ;
+工作室 > kousakushitsu\ ;
+作劇術 > sakugekijutsu\ ;
+短日月 > tanjitsugetsu\ ;
+車掌室 > shashoushitsu\ ;
+診察料 > shinsatsuryou\ ;
+俸給袋 > houkyuubukuro\ ;
+消失点 > shoushitsuten\ ;
+読書室 > dokushoshitsu\ ;
+宿泊先 > shukuhakusaki\ ;
+識別子 > shikibetsushi\ ;
+南半球 > minamihankyuu\ ;
+職員室 > shokuinshitsu\ ;
+信玄袋 > shingenbukuro\ ;
+恋物語 > koimonogatari\ ;
+一粒種 > hitotsubudane\ ;
+緑柱石 > ryokuchuuseki\ ;
+昔気質 > mukashikatagi\ ;
+俄勉強 > niwakabenkyou\ ;
+進学率 > shingakuritsu\ ;
+殿様蛙 > tonosamagaeru\ ;
+静脈血 > joumyakuketsu\ ;
+一筋道 > hitosujimichi\ ;
+就業率 > shuugyouritsu\ ;
+内緒話 > naishobanashi\ ;
+躁鬱質 > souutsushitsu\ ;
+熱効率 > netsukouritsu\ ;
+目的物 > mokutekibutsu\ ;
+反発力 > hanpatsuryoku\ ;
+植物誌 > shokubutsushi\ ;
+警察力 > keisatsuryoku\ ;
+貨物室 > kamotsushitsu\ ;
+懐中鏡 > kaichuukagami\ ;
+淡緑色 > tanryokushoku\ ;
+天竺鼠 > tenjikunezumi\ ;
+統率力 > touritsuryoku\ ;
+実録物 > jitsurokumono\ ;
+密入国 > mitsunyuugoku\ ;
+直輸出 > chokuyushutsu\ ;
+惚気話 > norokebanashi\ ;
+休養室 > kyuuyoushitsu\ ;
+陳列窓 > chinretsumado\ ;
+百分率 > hyakubunritsu\ ;
+出血症 > shukketsushou\ ;
+密輸出 > mitsuyushutsu\ ;
+判別式 > hanbetsushiki\ ;
+植物界 > shokubutsukai\ ;
+熱力学 > netsurikigaku\ ;
+新正月 > shinshougatsu\ ;
+主食物 > shushokubutsu\ ;
+陳列棚 > chinretsudana\ ;
+雑収入 > zatsushuunyuu\ ;
+翌翌日 > yokuyokujitsu\ ;
+話半分 > hanashihanbun\ ;
+力不足 > chikarabusoku\ ;
+就学率 > shuugakuritsu\ ;
+水上町 > minakamimachi\ ;
+親切心 > shinsetsushin\ ;
+制作室 > seisakushitsu\ ;
+即物的 > sokubutsuteki\ ;
+汲取口 > kumitoriguchi\ ;
+廿日鼠 > hatsukanezumi\ ;
+総領娘 > souryoumusume\ ;
+七福神 > shichifukujin\ ;
+特別席 > tokubetsuseki\ ;
+多血質 > taketsushitsu\ ;
+核爆発 > kakubakuhatsu\ ;
+得票率 > tokuhyouritsu\ ;
+表彰式 > hyoushoushiki\ ;
+入学式 > nyuugakushiki\ ;
+灰白質 > kaihakushitsu\ ;
+食用油 > shokuyouabura\ ;
+職業的 > shokugyouteki\ ;
+食生活 > shokuseikatsu\ ;
+丸一月 > maruhitotsuki\ ;
+職業病 > shokugyoubyou\ ;
+丸一日 > maruichinichi\ ;
+毒物学 > dokubutsugaku\ ;
+就職先 > shuushokusaki\ ;
+口約束 > kuchiyakusoku\ ;
+実力者 > jitsuryokusha\ ;
+湧出量 > yuushutsuryou\ ;
+筒井筒 > tsutsuidzutsu\ ;
+会堂司 > kaidoudzukasa\ ;
+間歇熱 > kanketsunetsu\ ;
+哲学的 > tetsugakuteki\ ;
+読唇術 > dokushinjutsu\ ;
+間欠熱 > kanketsunetsu\ ;
+裸電球 > hadakadenkyuu\ ;
+蛋白質 > tanpakushitsu\ ;
+排泄物 > haisetsubutsu\ ;
+食肉目 > shokunikumoku\ ;
+活動力 > katsudouryoku\ ;
+侵略的 > shinryakuteki\ ;
+凝集力 > gyoushuuryoku\ ;
+俄狂言 > niwakakyougen\ ;
+獅子頭 > shishigashira\ ;
+観察力 > kansatsuryoku\ ;
+脱力感 > datsuryokukan\ ;
+支出額 > shishutsugaku\ ;
+大虐殺 > daigyakusatsu\ ;
+前渡金 > maewatashikin\ ;
+乳白色 > nyuuhakushoku\ ;
+終業式 > shuugyoushiki\ ;
+爆発的 > bakuhatsuteki\ ;
+清元節 > kiyomotobushi\ ;
+雷親父 > kaminarioyaji\ ;
+神経質 > shinkeishitsu\ ;
+接着力 > setchakuryoku\ ;
+五月幟 > satsukinobori\ ;
+逆輸出 > gyakuyushutsu\ ;
+的中率 > tekichuuritsu\ ;
+建設費 > kensetsuhiyou\ ;
+屈折率 > kussetsuritsu\ ;
+船長室 > senchoushitsu\ ;
+主教室 > shukyoushitsu\ ;
+室内楽 > shitsunaigaku\ ;
+人情話 > ninjoubanashi\ ;
+濃緑色 > nouryokushoku\ ;
+応接室 > ousetsushitsu\ ;
+侵略国 > shinryakukoku\ ;
+侍気質 > samuraikatagi\ ;
+申込書 > moushikomisho\ ;
+直説法 > chokusetsuhou\ ;
+下町風 > shitamachifuu\ ;
+食中毒 > shokuchuudoku\ ;
+産出高 > sanshutsudaka\ ;
+供出米 > kyoushutsumai\ ;
+増設率 > zousetsuritsu\ ;
+圧力鍋 > atsuryokunabe\ ;
+団栗眼 > dongurimanako\ ;
+圧力釜 > atsuryokugama\ ;
+気密室 > kimitsushitsu\ ;
+応接係 > ousetsugakari\ ;
+女房詞 > nyouboukotoba\ ;
+分列式 > bunretsushiki\ ;
+親任式 > shin''ninshiki\ ;
+生活力 > seikatsuryoku\ ;
+読心術 > dokushinjutsu\ ;
+駅長室 > ekichoushitsu\ ;
+家付娘 > ietsukimusume\ ;
+百日草 > hyakunichisou\ ;
+両三日 > ryousan''nichi\ ;
+旗行列 > hatagyouretsu\ ;
+眉唾物 > mayutsubamono\ ;
+進行係 > shinkougakari\ ;
+動植物 > doushokubutsu\ ;
+必要物 > hitsuyoubutsu\ ;
+三軸室 > sanjikushitsu\ ;
+待合室 > machiaishitsu\ ;
+博物学 > hakubutsugaku\ ;
+結紮術 > kessatsujutsu\ ;
+混入物 > kon''nyuubutsu\ ;
+人情噺 > ninjoubanashi\ ;
+出席率 > shussekiritsu\ ;
+直接税 > chokusetsuzei\ ;
+失業者 > shitsugyousha\ ;
+牧畜業 > bokuchikugyou\ ;
+構築物 > kouchikubutsu\ ;
+設立者 > setsuritsusha\ ;
+足長蜂 > ashinagabachi\ ;
+粘液質 > nen''ekishitsu\ ;
+直接法 > chokusetsuhou\ ;
+幽霊話 > yuureibanashi\ ;
+同質的 > doushitsuteki\ ;
+執着心 > shuuchakushin\ ;
+力関係 > chikarakankei\ ;
+物質的 > busshitsuteki\ ;
+蒸発熱 > jouhatsunetsu\ ;
+薩摩閥 > satsumabatsu\ ;
+視聴率 > shichouritsu\ ;
+畳水練 > tatamisuiren\ ;
+幕僚長 > bakuryouchou\ ;
+現実的 > genjitsuteki\ ;
+画一的 > kakuitsuteki\ ;
+卸酒販 > oroshishuhan\ ;
+親日家 > shin''nichika\ ;
+内出血 > naishukketsu\ ;
+潤筆料 > junpitsuryou\ ;
+田舎侍 > inakazamurai\ ;
+金釘流 > kanakugiryuu\ ;
+創作力 > sousakuryoku\ ;
+即戦力 > sokusenryoku\ ;
+括約筋 > katsuyakukin\ ;
+説得力 > settokuryoku\ ;
+鐘撞堂 > kanetsukidou\ ;
+旧形式 > kyuukeishiki\ ;
+黄玉石 > kougyokuseki\ ;
+実験室 > jikkenshitsu\ ;
+密漁者 > mitsuryousha\ ;
+潮汐表 > chousekihyou\ ;
+白熱戦 > hakunetsusen\ ;
+従属節 > juuzokusetsu\ ;
+押切帳 > oshikirichou\ ;
+鉱物学 > koubutsugaku\ ;
+左心室 > sashinshitsu\ ;
+極彩色 > gokusaishiki\ ;
+肝心要 > kanjinkaname\ ;
+建築業 > kenchikugyou\ ;
+拒食症 > kyoshokushou\ ;
+熱電対 > netsudentsui\ ;
+鎖伝動 > kusaridendou\ ;
+拡大率 > kakudairitsu\ ;
+狂信的 > kyoushinteki\ ;
+表現力 > hyougenryoku\ ;
+中立面 > chuuritsumen\ ;
+貝殻虫 > kaigaramushi\ ;
+一番星 > ichibanboshi\ ;
+賃借人 > chinshakunin\ ;
+装飾的 > soushokuteki\ ;
+澱粉質 > denpunshitsu\ ;
+千日草 > sen''nichisou\ ;
+七五調 > shichigochou\ ;
+中国服 > chuugokufuku\ ;
+高天原 > takamagahara\ ;
+勘定係 > kanjougakari\ ;
+拘束力 > kousokuryoku\ ;
+沈澱物 > chindenbutsu\ ;
+器質的 > kishitsuteki\ ;
+千日紅 > sen''nichikou\ ;
+建築学 > kenchikugaku\ ;
+敗血症 > haiketsushou\ ;
+十一月 > juuichigatsu\ ;
+袋戸棚 > fukurotodana\ ;
+拝物教 > haibutsukyou\ ;
+復讐心 > fukushuushin\ ;
+旧年末 > kyuunenmatsu\ ;
+失職者 > shisshokusha\ ;
+内割引 > uchiwaribiki\ ;
+出産率 > shussanritsu\ ;
+写実的 > shajitsuteki\ ;
+接続駅 > setsuzokueki\ ;
+製鉄業 > seitetsugyou\ ;
+出生率 > shusseiritsu\ ;
+着物姿 > kimonosugata\ ;
+積極策 > sekkyokusaku\ ;
+小文節 > shoubunsetsu\ ;
+組織力 > soshikiryoku\ ;
+断熱材 > dan''netsuzai\ ;
+著作物 > chosakubutsu\ ;
+盲滅法 > mekurameppou\ ;
+附着力 > fuchakuryoku\ ;
+漂流木 > hyouryuuboku\ ;
+紳士靴 > shinshigutsu\ ;
+浚渫船 > shunsetsusen\ ;
+深山烏 > miyamagarasu\ ;
+生臭物 > namagusamono\ ;
+審判役 > shinpan''yaku\ ;
+積極的 > sekkyokuteki\ ;
+発売元 > hatsubaimoto\ ;
+仏頂面 > butchoudzura\ ;
+取引高 > torihikidaka\ ;
+闖入者 > chin''nyuusha\ ;
+毬栗頭 > igaguriatama\ ;
+建築中 > kenchikuchuu\ ;
+弱小国 > jakushoukoku\ ;
+発売中 > hatsubaichuu\ ;
+復讐劇 > fukushuugeki\ ;
+下仕事 > shitashigoto\ ;
+消極性 > shoukyokusei\ ;
+金欠病 > kinketsubyou\ ;
+聴視率 > choushiritsu\ ;
+深山桜 > miyamazakura\ ;
+質問者 > shitsumonsha\ ;
+空約束 > karayakusoku\ ;
+接続詞 > setsuzokushi\ ;
+抹香鯨 > makkoukujira\ ;
+花盗人 > hananusubito\ ;
+乾燥室 > kansoushitsu\ ;
+尿毒症 > nyoudokushou\ ;
+癇癪玉 > kanshakudama\ ;
+一人物 > ichijinbutsu\ ;
+協約国 > kyouyakukoku\ ;
+末代物 > matsudaimono\ ;
+剃刀負 > kamisorimake\ ;
+一足先 > hitoashisaki\ ;
+果物籠 > kudamonokago\ ;
+世間話 > sekenbanashi\ ;
+行楽客 > kourakukyaku\ ;
+紋白蝶 > monshirochou\ ;
+入湯客 > nyuutoukyaku\ ;
+闇取引 > yamitorihiki\ ;
+進水式 > shinsuishiki\ ;
+仮払金 > karibaraikin\ ;
+紙屑籠 > kamikuzukago\ ;
+乾燥卵 > kansoutamago\ ;
+緑内障 > ryokunaishou\ ;
+極楽鳥 > gokurakuchou\ ;
+賃貸借 > chintaishaku\ ;
+告発者 > kokuhatsusha\ ;
+白血病 > hakketsubyou\ ;
+真珠質 > shinjushitsu\ ;
+片山里 > katayamazato\ ;
+独立祭 > dokuritsusai\ ;
+予約係 > yoyakugakari\ ;
+黄緑色 > ouryokushoku\ ;
+前進力 > zenshinryoku\ ;
+確率論 > kakuritsuron\ ;
+独立班 > dokuritsuhan\ ;
+等圧式 > touatsushiki\ ;
+素人筋 > shiroutosuji\ ;
+美人局 > tsutsumotase\ ;
+借地料 > shakuchiryou\ ;
+黄熱病 > kounetsubyou\ ;
+投票率 > touhyouritsu\ ;
+脅迫的 > kyouhakuteki\ ;
+団結心 > danketsushin\ ;
+質問書 > shitsumonsho\ ;
+中立性 > chuuritsusei\ ;
+告発状 > kokuhatsujou\ ;
+反復説 > hanpukusetsu\ ;
+印刷術 > insatsujutsu\ ;
+能力給 > nouryokukyuu\ ;
+練習曲 > renshuukyoku\ ;
+超能力 > chounouryoku\ ;
+核分裂 > kakubunretsu\ ;
+独立権 > dokuritsuken\ ;
+待宵草 > matsuyoigusa\ ;
+一人娘 > hitorimusume\ ;
+国税局 > kokuzeikyoku\ ;
+一面識 > ichimenshiki\ ;
+出願者 > shutsugansha\ ;
+勿忘草 > wasurenagusa\ ;
+強綿薬 > kyoumen''yaku\ ;
+梶木鮪 > kajikimaguro\ ;
+失明者 > shitsumeisha\ ;
+女道楽 > on''nadouraku\ ;
+成長率 > seichouritsu\ ;
+確実性 > kakujitsusei\ ;
+黒装束 > kuroshouzoku\ ;
+熱拡散 > netsukakusan\ ;
+忠臣蔵 > chuushingura\ ;
+動物学 > doubutsugaku\ ;
+一枚下 > ichimaishita\ ;
+至東京 > itarutoukyou\ ;
+独立性 > dokuritsusei\ ;
+雨後雪 > amenochiyuki\ ;
+八目鰻 > yatsumeunagi\ ;
+天狗話 > tengubanashi\ ;
+案内係 > an''naigakari\ ;
+流行色 > ryuukoushoku\ ;
+鍾乳石 > shounyuuseki\ ;
+接続性 > setsuzokusei\ ;
+真実性 > shinjitsusei\ ;
+骨肉腫 > kotsunikushu\ ;
+犬畜生 > inuchikushou\ ;
+領収証 > ryoushuushou\ ;
+昼光色 > chuukoushoku\ ;
+北極熊 > hokkyokuguma\ ;
+司令室 > shireishitsu\ ;
+印刷物 > insatsubutsu\ ;
+抽象的 > chuushouteki\ ;
+白拍子 > shirabyoushi\ ;
+提出者 > teishutsusha\ ;
+耐圧力 > taiatsuryoku\ ;
+凸面鏡 > totsumenkyou\ ;
+高血圧 > kouketsuatsu\ ;
+柱時計 > hashiradokei\ ;
+傘歯車 > kasahaguruma\ ;
+軍国色 > gunkokushoku\ ;
+八郎潟 > hachirougata\ ;
+宿命的 > shukumeiteki\ ;
+中心角 > chuushinkaku\ ;
+長須鯨 > nagasukujira\ ;
+修了証 > shuuryoushou\ ;
+段々畠 > dandanbatake\ ;
+段々畑 > dandanbatake\ ;
+多肉質 > tanikushitsu\ ;
+進入灯 > shin''nyuutou\ ;
+集約的 > shuuyakuteki\ ;
+兵六玉 > hyourokudama\ ;
+摩擦熱 > masatsunetsu\ ;
+技術力 > gijutsuryoku\ ;
+仮溶接 > kariyousetsu\ ;
+高品質 > kouhinshitsu\ ;
+晒木綿 > sarashimomen\ ;
+伸縮法 > shinshukuhou\ ;
+六連発 > rokurenpatsu\ ;
+併発症 > heihatsushou\ ;
+欠乏症 > ketsuboushou\ ;
+関節技 > kansetsuwaza\ ;
+沈没船 > chinbotsusen\ ;
+容積率 > yousekiritsu\ ;
+主力株 > shuryokukabu\ ;
+乾湿計 > kanshitsukei\ ;
+九星術 > kyuuseijutsu\ ;
+口八丁 > kuchihatchou\ ;
+検察庁 > kensatsuchou\ ;
+表表紙 > omotebyoushi\ ;
+直取引 > jikitorihiki\ ;
+大学卒 > daigakusotsu\ ;
+失語症 > shitsugoshou\ ;
+降雪量 > kousetsuryou\ ;
+漁師町 > ryoushimachi\ ;
+物見櫓 > monomiyagura\ ;
+取次店 > toritsugiten\ ;
+朧月夜 > oborodzukiyo\ ;
+享楽的 > kyourakuteki\ ;
+水力学 > suiryokugaku\ ;
+取引先 > torihikisaki\ ;
+入力線 > nyuuryokusen\ ;
+低血圧 > teiketsuatsu\ ;
+伸縮性 > shinshukusei\ ;
+律令制 > ritsuryousei\ ;
+形式的 > keishikiteki\ ;
+仲立人 > nakadachinin\ ;
+昇降口 > shoukouguchi\ ;
+記録係 > kirokugakari\ ;
+工作物 > kousakubutsu\ ;
+正直者 > shoujikimono\ ;
+中心的 > chuushinteki\ ;
+自習室 > jishuushitsu\ ;
+今明日 > konmyounichi\ ;
+間接的 > kansetsuteki\ ;
+出版物 > shuppanbutsu\ ;
+核軍縮 > kakugunshuku\ ;
+一見識 > ichikenshiki\ ;
+攻撃力 > kougekiryoku\ ;
+整髪料 > seihatsuryou\ ;
+七面倒 > shichimendou\ ;
+耐湿性 > taishitsusei\ ;
+仏文学 > futsubungaku\ ;
+畑水練 > hatakesuiren\ ;
+勅撰集 > chokusenshuu\ ;
+七面体 > shichimentai\ ;
+効率的 > kouritsuteki\ ;
+熱量計 > netsuryoukei\ ;
+注釈者 > chuushakusha\ ;
+狭心症 > kyoushinshou\ ;
+弥猛心 > yatakegokoro\ ;
+総花式 > soubanashiki\ ;
+協商国 > kyoushoukoku\ ;
+七絃琴 > shichigenkin\ ;
+爆裂弾 > bakuretsudan\ ;
+宗教心 > shuukyoushin\ ;
+公共物 > koukyoubutsu\ ;
+救急箱 > kyuukyuubako\ ;
+狂詩曲 > kyoushikyoku\ ;
+俄分限 > niwakabungen\ ;
+宗教学 > shuukyougaku\ ;
+一日中 > ichinichijuu\ ;
+求職者 > kyuushokusha\ ;
+畜殺場 > chikusatsuba\ ;
+学年末 > gakunenmatsu\ ;
+穀象虫 > kokuzoumushi\ ;
+無響室 > mukyoushitsu\ ;
+筍医者 > takenokoisha\ ;
+潛心力 > senshinryoku\ ;
+興行主 > kougyounushi\ ;
+修飾子 > shuushokushi\ ;
+収益率 > shuuekiritsu\ ;
+祝儀袋 > shuugibukuro\ ;
+婚姻届 > kon''intodoke\ ;
+障害物 > shougaibutsu\ ;
+黒銹病 > kurosabibyou\ ;
+人物評 > jinbutsuhyou\ ;
+雑所得 > zatsushotoku\ ;
+剥製術 > hakuseijutsu\ ;
+独占欲 > dokusen''yoku\ ;
+絶望的 > zetsubouteki\ ;
+天然色 > ten''nenshoku\ ;
+脂肪質 > shiboushitsu\ ;
+宗教劇 > shuukyougeki\ ;
+出場者 > shutsujousha\ ;
+乾漆像 > kanshitsuzou\ ;
+内罰的 > naibatsuteki\ ;
+七角形 > shichikakkei\ ;
+即興曲 > sokkyoukyoku\ ;
+散発的 > sanpatsuteki\ ;
+広口瓶 > hirokuchibin\ ;
+圧縮率 > asshukuritsu\ ;
+宿泊人 > shukuhakunin\ ;
+猩紅熱 > shoukounetsu\ ;
+協力鋼 > kyouryokukou\ ;
+所番地 > tokorobanchi\ ;
+注釈書 > chuushakusho\ ;
+特徴量 > tokuchouryou\ ;
+懐工合 > futokoroguai\ ;
+描写力 > byousharyoku\ ;
+生物学 > seibutsugaku\ ;
+懐具合 > futokoroguai\ ;
+読書力 > dokushoryoku\ ;
+知識欲 > chishikiyoku\ ;
+全速力 > zensokuryoku\ ;
+表々紙 > omotebyoushi\ ;
+深紅色 > shinkoushoku\ ;
+軟着陸 > nanchakuriku\ ;
+色情狂 > shikijoukyou\ ;
+郵便袋 > yuubinbukuro\ ;
+診察台 > shinsatsudai\ ;
+泡沫的 > houmatsuteki\ ;
+仮釈放 > karishakuhou\ ;
+急進的 > kyuushinteki\ ;
+診察券 > shinsatsuken\ ;
+極小値 > kyokushouchi\ ;
+供血者 > kyouketsusha\ ;
+収入役 > shuunyuuyaku\ ;
+段段畠 > dandanbatake\ ;
+段段畑 > dandanbatake\ ;
+節用集 > setsuyoushuu\ ;
+配達料 > haitatsuryou\ ;
+新卒者 > shinsotsusha\ ;
+収監力 > shuukanryoku\ ;
+百葉箱 > hyakuyoubako\ ;
+協力者 > kyouryokusha\ ;
+速達便 > sokutatsubin\ ;
+銀白色 > ginhakushoku\ ;
+夾竹桃 > kyouchikutou\ ;
+畜生道 > chikushoudou\ ;
+雪辱戦 > setsujokusen\ ;
+東京着 > toukyouchaku\ ;
+電信局 > denshinkyoku\ ;
+青色症 > seishokushou\ ;
+広告主 > koukokunushi\ ;
+東京発 > toukyouhatsu\ ;
+全身浴 > zenshin''yoku\ ;
+変質者 > henshitsusha\ ;
+夏木立 > natsukodachi\ ;
+警察庁 > keisatsuchou\ ;
+業界初 > gyoukaihatsu\ ;
+天長節 > tenchousetsu\ ;
+産褥熱 > sanjokunetsu\ ;
+単勝式 > tanshoushiki\ ;
+頭頂骨 > touchoukotsu\ ;
+壊血病 > kaiketsubyou\ ;
+看板娘 > kanbanmusume\ ;
+編集局 > henshuukyoku\ ;
+晴後雨 > harenochiame\ ;
+流動食 > ryuudoushoku\ ;
+食道楽 > shokudouraku\ ;
+毛織錦 > keorinishiki\ ;
+求人口 > kyuujinguchi\ ;
+終着駅 > shuuchakueki\ ;
+黒水熱 > kokusuinetsu\ ;
+仮進級 > karishinkyuu\ ;
+配達先 > haitatsusaki\ ;
+寝物語 > nemonogatari\ ;
+若殿原 > wakatonobara\ ;
+冷蔵室 > reizoushitsu\ ;
+没交渉 > botsukoushou\ ;
+静脈瘤 > joumyakuryuu\ ;
+骨組織 > kotsusoshiki\ ;
+千卒長 > sensotsuchou\ ;
+直轄地 > chokkatsuchi\ ;
+一筋繩 > hitosujinawa\ ;
+一筋縄 > hitosujinawa\ ;
+就職難 > shuushokunan\ ;
+説経節 > sekkyoubushi\ ;
+心身症 > shinshinshou\ ;
+面会室 > menkaishitsu\ ;
+独創力 > dokusouryoku\ ;
+始業式 > shigyoushiki\ ;
+来客筋 > raikyakusuji\ ;
+進学塾 > shingakujuku\ ;
+目的格 > mokutekikaku\ ;
+校正係 > kouseigakari\ ;
+力自慢 > chikarajiman\ ;
+屋敷町 > yashikimachi\ ;
+服飾品 > fukushokuhin\ ;
+膨張率 > bouchouritsu\ ;
+良心的 > ryoushinteki\ ;
+空念仏 > soranenbutsu\ ;
+皆皆様 > minaminasama\ ;
+能率給 > nouritsukyuu\ ;
+堆積物 > taisekibutsu\ ;
+出納係 > suitougakari\ ;
+蓄積管 > chikusekikan\ ;
+独身者 > dokushinmono\ ;
+石竹色 > sekichikuiro\ ;
+直腸癌 > chokuchougan\ ;
+突発的 > toppatsuteki\ ;
+芸術的 > geijutsuteki\ ;
+非晶質 > hishoushitsu\ ;
+玉蜀黍 > toumorokoshi\ ;
+小心者 > shoushinmono\ ;
+黒水引 > kuromizuhiki\ ;
+感熱剤 > kan''netsuzai\ ;
+娯楽室 > gorakushitsu\ ;
+鎮痛薬 > chintsuuyaku\ ;
+能率的 > nouritsuteki\ ;
+合唱曲 > gasshoukyoku\ ;
+丹頂鶴 > tanchoudzuru\ ;
+革新的 > kakushinteki\ ;
+客商売 > kyakushoubai\ ;
+一括式 > ikkatsushiki\ ;
+畜産業 > chikusangyou\ ;
+出血死 > shukketsushi\ ;
+白髪頭 > shiragaatama\ ;
+新形式 > shinkeishiki\ ;
+共有物 > kyouyuubutsu\ ;
+申告箱 > shinkokubako\ ;
+書留料 > kakitomeryou\ ;
+希釈熱 > kishakunetsu\ ;
+山口県 > yamaguchiken\ ;
+執筆者 > shippitsusha\ ;
+商取引 > shoutorihiki\ ;
+植物油 > shokubutsuyu\ ;
+出血斑 > shukketsuhan\ ;
+企画室 > kikakushitsu\ ;
+侵入軍 > shin''nyuugun\ ;
+漁獲物 > gyokakubutsu\ ;
+力学的 > rikigakuteki\ ;
+疳癪玉 > kanshakudama\ ;
+約束事 > yakusokugoto\ ;
+経帷子 > kyoukatabira\ ;
+火消壷 > hikeshitsubo\ ;
+利休鼠 > rikyuunezumi\ ;
+順応力 > jun''nouryoku\ ;
+下半身 > shimohanshin\ ;
+表決権 > hyouketsuken\ ;
+択一的 > takuitsuteki\ ;
+流動物 > ryuudoubutsu\ ;
+陳述書 > chinjutsusho\ ;
+追悼式 > tsuitoushiki\ ;
+飲食物 > inshokubutsu\ ;
+昼食会 > chuushokukai\ ;
+畜産学 > chikusangaku\ ;
+識字率 > shikijiritsu\ ;
+鼻高高 > hanatakadaka\ ;
+特別法 > tokubetsuhou\ ;
+出漁権 > shutsugyoken\ ;
+鳶職人 > tobishokunin\ ;
+鎮魂曲 > chinkonkyoku\ ;
+出演料 > shutsuenryou\ ;
+通俗的 > tsuuzokuteki\ ;
+侵入者 > shin''nyuusha\ ;
+空出張 > karashutchou\ ;
+血圧計 > ketsuatsukei\ ;
+胆汁質 > tanjuushitsu\ ;
+黄碧玉 > kouhekigyoku\ ;
+隔月刊 > kakugetsukan\ ;
+復原力 > fukugenryoku\ ;
+竣工式 > shunkoushiki\ ;
+競争率 > kyousouritsu\ ;
+積立金 > tsumitatekin\ ;
+植物園 > shokubutsuen\ ;
+独身寮 > dokushinryou\ ;
+入札者 > nyuusatsusha\ ;
+新入生 > shin''nyuusei\ ;
+神謡集 > shin''youshuu\ ;
+両極端 > ryoukyokutan\ ;
+帳面面 > choumendzura\ ;
+見積書 > mitsumorisho\ ;
+研削代 > kensakushiro\ ;
+活動的 > katsudouteki\ ;
+全能力 > zen''nouryoku\ ;
+食肉類 > shokunikurui\ ;
+肺活量 > haikatsuryou\ ;
+開票率 > kaihyouritsu\ ;
+常識的 > joushikiteki\ ;
+収容力 > shuuyouryoku\ ;
+象徴的 > shouchouteki\ ;
+自慢話 > jimanbanashi\ ;
+招待客 > shoutaikyaku\ ;
+交響曲 > koukyoukyoku\ ;
+電解質 > denkaishitsu\ ;
+平底船 > hirasokobune\ ;
+就任式 > shuuninshiki\ ;
+冷凍室 > reitoushitsu\ ;
+配膳室 > haizenshitsu\ ;
+広島県 > hiroshimaken\ ;
+暦改正 > koyomikaisei\ ;
+徳川方 > tokugawagata\ ;
+仮入学 > karinyuugaku\ ;
+原形質 > genkeishitsu\ ;
+黒色腫 > kokushokushu\ ;
+卒業生 > sotsugyousei\ ;
+回復力 > kaifukuryoku\ ;
+入会式 > nyuukaishiki\ ;
+向心力 > koushinryoku\ ;
+玉虫色 > tamamushiiro\ ;
+特別号 > tokubetsugou\ ;
+脱毛症 > datsumoushou\ ;
+始球式 > shikyuushiki\ ;
+何色搨 > nanshokuzuri\ ;
+信託業 > shintakugyou\ ;
+僻根性 > higamikonjou\ ;
+奪三振 > datsusanshin\ ;
+鉄火丼 > tekkadonburi\ ;
+大福餅 > daifukumochi\ ;
+侵略軍 > shinryakugun\ ;
+反物質 > hanbusshitsu\ ;
+制球力 > seikyuuryoku\ ;
+陸産物 > rikusanbutsu\ ;
+農作物 > nousakubutsu\ ;
+竜舌蘭 > ryuuzetsuran\ ;
+営業畑 > eigyoubatake\ ;
+肉食獣 > nikushokujuu\ ;
+法律学 > houritsugaku\ ;
+新発明 > shinhatsumei\ ;
+逗留客 > touryuukyaku\ ;
+徳島県 > tokushimaken\ ;
+清水寺 > kiyomizudera\ ;
+熱容量 > netsuyouryou\ ;
+文筆業 > bunpitsugyou\ ;
+脳出血 > noushukketsu\ ;
+露出症 > roshutsushou\ ;
+高足蟹 > takaashigani\ ;
+私娼窟 > shishoukutsu\ ;
+黒色癌 > kokushokugan\ ;
+貧血症 > hinketsushou\ ;
+認識票 > ninshikihyou\ ;
+疫病神 > yakubyougami\ ;
+露出狂 > roshutsukyou\ ;
+密猟者 > mitsuryousha\ ;
+八丈島 > hachijoujima\ ;
+降神術 > koushinjutsu\ ;
+哲学者 > tetsugakusha\ ;
+力一杯 > chikaraippai\ ;
+出品物 > shuppinbutsu\ ;
+灰白色 > kaihakushoku\ ;
+独居室 > dokkyoshitsu\ ;
+接待係 > settaigakari\ ;
+万年雪 > man''nen''yuki\ ;
+狂想曲 > kyousoukyoku\ ;
+侵略者 > shinryakusha\ ;
+町役人 > machiyakunin\ ;
+蚰蜒眉 > gejigejimayu\ ;
+学習塾 > gakushuujuku\ ;
+新発売 > shinhatsubai\ ;
+競争力 > kyousouryoku\ ;
+失名氏 > shitsumeishi\ ;
+表座敷 > omotezashiki\ ;
+徴発令 > chouhatsurei\ ;
+副収入 > fukushuunyuu\ ;
+恐喝罪 > kyoukatsuzai\ ;
+屈折軸 > kussetsujiku\ ;
+合切袋 > gassaibukuro\ ;
+消息通 > shousokutsuu\ ;
+株主権 > kabunushiken\ ;
+占有率 > sen''yuuritsu\ ;
+南京袋 > nankinbukuro\ ;
+高高指 > takatakayubi\ ;
+白色光 > hakushokukou\ ;
+鐘乳石 > shounyuuseki\ ;
+日米協 > nichibeikyou\ ;
+屈折角 > kussetsukaku\ ;
+殺人的 > satsujinteki\ ;
+左団扇 > hidariuchiwa\ ;
+防塵室 > boujinshitsu\ ;
+含有率 > gan''yuuritsu\ ;
+脈搏数 > myakuhakusuu\ ;
+推進力 > suishinryoku\ ;
+聾桟敷 > tsunbosajiki\ ;
+縮緬皺 > chirimenjiwa\ ;
+殺人狂 > satsujinkyou\ ;
+輸出入 > yushutsunyuu\ ;
+観客席 > kankyakuseki\ ;
+命冥加 > inochimyouga\ ;
+表六玉 > hyourokudama\ ;
+森林浴 > shinrin''yoku\ ;
+耕作物 > kousakubutsu\ ;
+爆発管 > bakuhatsukan\ ;
+黒八丈 > kurohachijou\ ;
+半身浴 > hanshin''yoku\ ;
+暗緑色 > anryokushoku\ ;
+筋肉痛 > kin''nikutsuu\ ;
+職能給 > shokunoukyuu\ ;
+新生物 > shinseibutsu\ ;
+凌霄花 > nouzenkazura\ ;
+黒色尉 > kokushikijou\ ;
+偶発的 > guuhatsuteki\ ;
+特産物 > tokusanbutsu\ ;
+化粧室 > keshoushitsu\ ;
+総支出 > soushishutsu\ ;
+哲学書 > tetsugakusho\ ;
+博物館 > hakubutsukan\ ;
+仲介物 > chuukaibutsu\ ;
+白頭鷲 > hakutouwashi\ ;
+最新式 > saishinshiki\ ;
+山躑躅 > yamatsutsuji\ ;
+省電力 > shoudenryoku\ ;
+一匹狼 > ippikiookami\ ;
+消息筋 > shousokusuji\ ;
+万年筆 > man''nenhitsu\ ;
+仇同氏 > katakidoushi\ ;
+局地的 > kyokuchiteki\ ;
+革手袋 > kawatebukuro\ ;
+七分袖 > shichibusode\ ;
+心霊術 > shinreijutsu\ ;
+松竹梅 > shouchikubai\ ;
+核開発 > kakukaihatsu\ ;
+国際色 > kokusaishoku\ ;
+子供心 > kodomogokoro\ ;
+勅選集 > chokusenshuu\ ;
+精神力 > seishinryoku\ ;
+再突入 > saitotsunyuu\ ;
+発信局 > hasshinkyoku\ ;
+大和心 > yamatogokoro\ ;
+調律師 > chouritsushi\ ;
+辞職願 > jishokunegai\ ;
+親密感 > shinmitsukan\ ;
+窓際族 > madogiwazoku\ ;
+写真術 > shashinjutsu\ ;
+復元力 > fukugenryoku\ ;
+輻射熱 > fukushanetsu\ ;
+供述者 > kyoujutsusha\ ;
+神経節 > shinkeisetsu\ ;
+爆発性 > bakuhatsusei\ ;
+全日制 > zen''nichisei\ ;
+消毒薬 > shoudokuyaku\ ;
+道徳律 > doutokuritsu\ ;
+国防色 > kokuboushoku\ ;
+終末論 > shuumatsuron\ ;
+将軍職 > shougunshoku\ ;
+草月流 > sougetsuryuu\ ;
+明赤色 > meisekishoku\ ;
+付着力 > fuchakuryoku\ ;
+解決策 > kaiketsusaku\ ;
+口唇裂 > koushinretsu\ ;
+七草粥 > nanakusagayu\ ;
+商業学 > shougyougaku\ ;
+建設省 > kensetsushou\ ;
+分別心 > funbetsushin\ ;
+建設的 > kensetsuteki\ ;
+二翻役 > ryanfan''yaku\ ;
+口拍子 > kuchibyoushi\ ;
+認証式 > ninshoushiki\ ;
+総括的 > soukatsuteki\ ;
+托鉢僧 > takuhatsuzou\ ;
+商業国 > shougyoukoku\ ;
+仲人口 > nakoudoguchi\ ;
+桜前線 > sakurazensen\ ;
+龍舌蘭 > ryuuzetsuran\ ;
+強制力 > kyouseiryoku\ ;
+必読書 > hitsudokusho\ ;
+圧力計 > atsuryokukei\ ;
+随筆集 > zuihitsushuu\ ;
+猫目石 > nekomokuseki\ ;
+勉強机 > benkyouzukue\ ;
+白玉楼 > hakugyokurou\ ;
+開通式 > kaitsuushiki\ ;
+西半球 > nishihankyuu\ ;
+啄木鳥 > takubokuchou\ ;
+単一形 > tan''ichigata\ ;
+必然的 > hitsuzenteki\ ;
+水蟷螂 > mizukamakiri\ ;
+星月夜 > hoshidzukuyo\ ;
+縞織物 > shimaorimono\ ;
+建設業 > kensetsugyou\ ;
+鼻高々 > hanatakadaka\ ;
+商人街 > shouninmachi\ ;
+一幕物 > hitomakumono\ ;
+百人力 > hyakuninriki\ ;
+供述書 > kyoujutsusho\ ;
+実業界 > jitsugyoukai\ ;
+行平鍋 > yukihiranabe\ ;
+落成式 > rakuseishiki\ ;
+柳川鍋 > yanagawanabe\ ;
+航続力 > kouzokuryoku\ ;
+直接費 > chokusetsuhi\ ;
+山梨県 > yamanashiken\ ;
+棗椰子 > natsumeyashi\ ;
+刺激物 > shigekibutsu\ ;
+漫遊客 > man''yuukyaku\ ;
+食物油 > shokubutsuyu\ ;
+瓦煎餅 > kawarasenbei\ ;
+親子丼 > oyakodonburi\ ;
+著述業 > chojutsugyou\ ;
+蒼白色 > souhakushoku\ ;
+七辺形 > shichihenkei\ ;
+年末迄 > nenmatsumade\ ;
+売春宿 > baishun''yado\ ;
+質点系 > shitsutenkei\ ;
+御伽話 > otogibanashi\ ;
+操業率 > sougyouritsu\ ;
+枕屏風 > makurabyoubu\ ;
+血液学 > ketsuekigaku\ ;
+基督教 > kirisutokyou\ ;
+鼠花火 > nezumihanabi\ ;
+捕物帳 > torimonochou\ ;
+捕物帖 > torimonochou\ ;
+貯蔵室 > chozoushitsu\ ;
+弔問客 > choumonkyaku\ ;
+遺失物 > ishitsubutsu\ ;
+動脈血 > doumyakketsu\ ;
+入場式 > nyuujoushiki\ ;
+細胞質 > saiboushitsu\ ;
+血液型 > ketsuekigata\ ;
+標識灯 > hyoushikitou\ ;
+包括的 > houkatsuteki\ ;
+劇中劇 > gekichuugeki\ ;
+実用的 > jitsuyouteki\ ;
+侍八騎 > samuraihakki\ ;
+中間色 > chuukanshoku\ ;
+開腹術 > kaifukujutsu\ ;
+直撃弾 > chokugekidan\ ;
+副産物 > fukusanbutsu\ ;
+命中率 > meichuuritsu\ ;
+血友病 > ketsuyuubyou\ ;
+精白率 > seihakuritsu\ ;
+均質性 > kinshitsusei\ ;
+戸籍係 > kosekigakari\ ;
+接客業 > sekkyakugyou\ ;
+蓄膿症 > chikunoushou\ ;
+花形株 > hanagatakabu\ ;
+振出人 > furidashinin\ ;
+註釈者 > chuushakusha\ ;
+禁欲的 > kin''yokuteki\ ;
+一分別 > hitofunbetsu\ ;
+半独立 > handokuritsu\ ;
+執務中 > shitsumuchuu\ ;
+親日派 > shin''nichiha\ ;
+福島県 > fukushimaken\ ;
+調色板 > choushokuban\ ;
+剪定鋏 > senteibasami\ ;
+緑黄色 > ryokuoushoku\ ;
+下屋敷 > shimoyashiki\ ;
+車用品 > kurumayouhin\ ;
+耐久力 > taikyuuryoku\ ;
+寝台虫 > shindaimushi\ ;
+嗜虐的 > shigyakuteki\ ;
+中継局 > chuukeikyoku\ ;
+長広舌 > choukouzetsu\ ;
+日没後 > nichibotsugo\ ;
+動脈瘤 > doumyakuryuu\ ;
+一輪挿 > ichirinzashi\ ;
+蒸発皿 > jouhatsuzara\ ;
+賃借権 > chinshakuken\ ;
+卸問屋 > oroshidon''ya\ ;
+防湿剤 > boushitsuzai\ ;
+収穫高 > shuukakudaka\ ;
+再出発 > saishuppatsu\ ;
+協奏曲 > kyousoukyoku\ ;
+周極星 > shuukyokusei\ ;
+零行列 > reigyouretsu\ ;
+出発点 > shuppatsuten\ ;
+合格率 > goukakuritsu\ ;
+行進曲 > koushinkyoku\ ;
+白熱灯 > hakunetsutou\ ;
+食料品 > shokuryouhin\ ;
+操車係 > soushagakari\ ;
+刺戟物 > shigekibutsu\ ;
+湿電池 > shitsudenchi\ ;
+観掌術 > kanshoujutsu\ ;
+真骨頂 > shinkotchou\ ;
+必要品 > hitsuyouhin\ ;
+画世的 > kakuseiteki\ ;
+熨斗袋 > noshibukuro\ ;
+測地学 > sokuchigaku\ ;
+雁木鑢 > gangiyasuri\ ;
+再割引 > saiwaribiki\ ;
+奉献式 > houkenshiki\ ;
+初誕生 > hatsutanjou\ ;
+三本足 > sanbon''ashi\ ;
+判断力 > handanryoku\ ;
+協調性 > kyouchousei\ ;
+天道乾 > tentouboshi\ ;
+白日夢 > hakujitsumu\ ;
+分析表 > bunsekihyou\ ;
+承諾書 > shoudakusho\ ;
+少食家 > shoushokuka\ ;
+仮執行 > karishikkou\ ;
+握力計 > akuryokukei\ ;
+不足勝 > fusokugachi\ ;
+後進国 > koushinkoku\ ;
+洗眼薬 > sengan''yaku\ ;
+復習文 > fukushuubun\ ;
+止血帯 > shiketsutai\ ;
+下宿料 > geshukuryou\ ;
+重量級 > juuryoukyuu\ ;
+前進軸 > zenshinjiku\ ;
+鉄石心 > tessekishin\ ;
+甘茶蔓 > amachadzuru\ ;
+署名式 > shomeishiki\ ;
+人心地 > hitogokochi\ ;
+囚人服 > shuujinfuku\ ;
+律儀者 > richigimono\ ;
+雁木車 > gangiguruma\ ;
+憂欝症 > yuuutsushou\ ;
+実験式 > jikkenshiki\ ;
+狂信者 > kyoushinsha\ ;
+民族的 > minzokuteki\ ;
+発言者 > hatsugensha\ ;
+単縦列 > tanjuuretsu\ ;
+三人組 > san''ningumi\ ;
+黒斑病 > kokuhanbyou\ ;
+悪悪戯 > waruitazura\ ;
+実用品 > jitsuyouhin\ ;
+大腿骨 > daitaikotsu\ ;
+水蜜桃 > suimitsutou\ ;
+漂流船 > hyouryuusen\ ;
+頸動脈 > keidoumyaku\ ;
+生兵法 > namabyouhou\ ;
+烏羽色 > karasubairo\ ;
+弟弟子 > otoutodeshi\ ;
+劇文学 > gekibungaku\ ;
+加薬飯 > kayakumeshi\ ;
+北半球 > kitahankyuu\ ;
+集中線 > shuuchuusen\ ;
+得業士 > tokugyoushi\ ;
+前進角 > zenshinkaku\ ;
+養殖池 > youshokuchi\ ;
+嗜虐性 > shigyakusei\ ;
+三人称 > san''ninshou\ ;
+中級品 > chuukyuuhin\ ;
+漂流者 > hyouryuusha\ ;
+誘惑物 > yuuwakumono\ ;
+頭蓋骨 > tougaikotsu\ ;
+発明品 > hatsumeihin\ ;
+失格者 > shikkakusha\ ;
+成績表 > seisekihyou\ ;
+注文先 > chuumonsaki\ ;
+既決囚 > kiketsushuu\ ;
+摂動論 > setsudouron\ ;
+伏流水 > fukuryuusui\ ;
+独裁的 > dokusaiteki\ ;
+高調子 > takachoushi\ ;
+立脚地 > rikkyakuchi\ ;
+再構築 > saikouchiku\ ;
+櫓太鼓 > yaguradaiko\ ;
+止血剤 > shiketsuzai\ ;
+両方共 > ryouhoutomo\ ;
+松葉杖 > matsubadzue\ ;
+沖積統 > chuusekitou\ ;
+仕事箱 > shigotobako\ ;
+氷醋酸 > hyousakusan\ ;
+書籍商 > shosekishou\ ;
+仮綴本 > karitojihon\ ;
+発電所 > hatsudensho\ ;
+官能的 > kan''nouteki\ ;
+末梢的 > masshouteki\ ;
+中間国 > chuukankoku\ ;
+思索的 > shisakuteki\ ;
+出身校 > shusshinkou\ ;
+灰青色 > haiseishoku\ ;
+航海術 > koukaijutsu\ ;
+小東京 > shoutoukyou\ ;
+千人力 > sen''ninriki\ ;
+人工芝 > jinkoushiba\ ;
+軽量級 > keiryoukyuu\ ;
+拘束圧 > kousokuatsu\ ;
+戦闘力 > sentouryoku\ ;
+球面鏡 > kyuumenkyou\ ;
+人形劇 > ningyougeki\ ;
+無骨者 > bukotsumono\ ;
+町奉行 > machibugyou\ ;
+空証文 > karashoumon\ ;
+氷酢酸 > hyousakusan\ ;
+放物線 > houbutsusen\ ;
+調子者 > choushimono\ ;
+現実感 > genjitsukan\ ;
+積分学 > sekibungaku\ ;
+現実性 > genjitsusei\ ;
+高電圧 > kouden''atsu\ ;
+学問的 > gakumonteki\ ;
+学究的 > gakkyuuteki\ ;
+収穫祭 > shuukakusai\ ;
+物理学 > butsurigaku\ ;
+垂直線 > suichokusen\ ;
+歴史学 > rekishigaku\ ;
+潤滑剤 > junkatsuzai\ ;
+組織学 > soshikigaku\ ;
+発電子 > hatsudenshi\ ;
+三尊仏 > sanzonbutsu\ ;
+引取人 > hikitorinin\ ;
+漂泊者 > hyouhakusha\ ;
+真田虫 > sanadamushi\ ;
+闇商人 > yamishounin\ ;
+入漁料 > nyuugyoryou\ ;
+七宝焼 > shippouyaki\ ;
+鋼鉄板 > koutetsuban\ ;
+優良株 > yuuryoukabu\ ;
+本格的 > honkakuteki\ ;
+復讐戦 > fukushuusen\ ;
+暴力団 > bouryokudan\ ;
+初診料 > shoshinryou\ ;
+口達者 > kuchidassha\ ;
+耐熱性 > tainetsusei\ ;
+増血剤 > zouketsuzai\ ;
+北北東 > hokuhokutou\ ;
+発言権 > hatsugenken\ ;
+急成長 > kyuuseichou\ ;
+出資額 > shusshigaku\ ;
+内分泌 > naibunpitsu\ ;
+四旬節 > shijunsetsu\ ;
+九官鳥 > kyuukanchou\ ;
+老人力 > roujinryoku\ ;
+建築士 > kenchikushi\ ;
+太極拳 > taikyokuken\ ;
+生番組 > namabangumi\ ;
+養殖場 > youshokujou\ ;
+虚脱感 > kyodatsukan\ ;
+象牙質 > zougeshitsu\ ;
+隆鼻術 > ryuubijutsu\ ;
+表面積 > hyoumenseki\ ;
+努力賞 > doryokushou\ ;
+十人並 > juunin''nami\ ;
+薬鑵頭 > yakan''atama\ ;
+商売筋 > shoubaisuji\ ;
+港湾局 > kouwankyoku\ ;
+水商売 > mizushoubai\ ;
+鉄道便 > tetsudoubin\ ;
+民族学 > minzokugaku\ ;
+歴史劇 > rekishigeki\ ;
+溝形鋼 > mizogatakou\ ;
+明晰夢 > meisekiyume\ ;
+造血剤 > zouketsuzai\ ;
+断続的 > danzokuteki\ ;
+式部省 > shikibushou\ ;
+極道者 > gokudoumono\ ;
+開校式 > kaikoushiki\ ;
+民約論 > min''yakuron\ ;
+防御率 > bougyoritsu\ ;
+表面的 > hyoumenteki\ ;
+計時係 > keijigakari\ ;
+後発品 > kouhatsuhin\ ;
+薩摩焼 > satsumayaki\ ;
+出身地 > shusshinchi\ ;
+護身術 > goshinjutsu\ ;
+与太話 > yotabanashi\ ;
+再入学 > sainyuugaku\ ;
+協約書 > kyouyakusho\ ;
+調子物 > choushimono\ ;
+三羽烏 > sanbagarasu\ ;
+訪問客 > houmonkyaku\ ;
+治験薬 > chiken''yaku\ ;
+性善説 > seizensetsu\ ;
+仕事柄 > shigotogara\ ;
+大根足 > daikon''ashi\ ;
+光瀬龍 > mitsuseryuu\ ;
+狼藉者 > rouzekimono\ ;
+心拍数 > shinpakusuu\ ;
+動物誌 > doubutsushi\ ;
+返却値 > henkyakuchi\ ;
+無駄話 > mudabanashi\ ;
+分子式 > bunshishiki\ ;
+降車口 > koushaguchi\ ;
+検出器 > kenshutsuki\ ;
+落葉松 > rakuyoushou\ ;
+極前線 > kyokuzensen\ ;
+超越点 > chouetsuten\ ;
+黒猩々 > kuroshoujou\ ;
+国慶節 > kokkeisetsu\ ;
+天産物 > tensanbutsu\ ;
+紳士録 > shinshiroku\ ;
+再入国 > sainyuukoku\ ;
+簡潔性 > kanketsusei\ ;
+切断面 > setsudanmen\ ;
+引込線 > hikikomisen\ ;
+粗忽者 > sokotsumono\ ;
+開会式 > kaikaishiki\ ;
+感傷的 > kanshouteki\ ;
+市有物 > shiyuubutsu\ ;
+聖職者 > seishokusha\ ;
+中衣嚢 > nakagakushi\ ;
+独立語 > dokuritsugo\ ;
+育児室 > ikujishitsu\ ;
+繁殖地 > hanshokuchi\ ;
+一人称 > ichininshou\ ;
+長崎県 > nagasakiken\ ;
+電力計 > denryokukei\ ;
+製氷皿 > seihyouzara\ ;
+主税局 > shuzeikyoku\ ;
+接続語 > setsuzokugo\ ;
+特集号 > tokushuugou\ ;
+黒褐色 > kokkasshoku\ ;
+中国人 > chuugokujin\ ;
+従属国 > juuzokukoku\ ;
+口返答 > kuchihentou\ ;
+減衰率 > gensuiritsu\ ;
+導電率 > doudenritsu\ ;
+一了簡 > ichiryoukan\ ;
+再輸出 > saiyushutsu\ ;
+青銅色 > seidoushoku\ ;
+隊商宿 > taishouyado\ ;
+式次第 > shikishidai\ ;
+生産物 > seisanbutsu\ ;
+幻覚症 > genkakushou\ ;
+投手力 > toushuryoku\ ;
+閉会式 > heikaishiki\ ;
+沖積層 > chuusekisou\ ;
+催眠術 > saiminjutsu\ ;
+蝙蝠傘 > koumorigasa\ ;
+向日性 > kounichisei\ ;
+吸取紙 > suitorigami\ ;
+憂鬱症 > yuuutsushou\ ;
+高圧的 > kouatsuteki\ ;
+有力者 > yuuryokusha\ ;
+別問題 > betsumondai\ ;
+代数式 > daisuushiki\ ;
+入港料 > nyuukouryou\ ;
+無宿者 > mushukumono\ ;
+原子力 > genshiryoku\ ;
+成文律 > seibunritsu\ ;
+男一匹 > otokoippiki\ ;
+塞栓症 > sokusenshou\ ;
+商売柄 > shoubaigara\ ;
+腹足類 > fukusokurui\ ;
+東印度 > higashiindo\ ;
+資本力 > shihonryoku\ ;
+祇園祭 > gionmatsuri\ ;
+上京中 > joukyouchuu\ ;
+催眠薬 > saimin''yaku\ ;
+現象学 > genshougaku\ ;
+秋津島 > akitsushima\ ;
+羊小屋 > hitsujigoya\ ;
+装飾品 > soushokuhin\ ;
+千日手 > sen''nichite\ ;
+植民地 > shokuminchi\ ;
+外分泌 > gaibunpitsu\ ;
+隣近所 > tonarikinjo\ ;
+対頂角 > taichoukaku\ ;
+肩甲骨 > kenkoukotsu\ ;
+腰弁当 > koshibentou\ ;
+口巧者 > kuchigousha\ ;
+不世出 > fuseishutsu\ ;
+先日付 > sakihidzuke\ ;
+透視力 > toushiryoku\ ;
+創設者 > sousetsusha\ ;
+金魚鉢 > kingyobachi\ ;
+衒学的 > gengakuteki\ ;
+金石学 > kinsekigaku\ ;
+野菜畑 > yasaibatake\ ;
+直感的 > chokkanteki\ ;
+動物相 > doubutsusou\ ;
+賃仕事 > chinshigoto\ ;
+特許主 > tokkyonushi\ ;
+奉納物 > hounoubutsu\ ;
+保釈中 > hoshakuchuu\ ;
+青藍色 > seiranshoku\ ;
+脅迫者 > kyouhakusha\ ;
+動物界 > doubutsukai\ ;
+通行上 > tsuukoudome\ ;
+強奪者 > goudatsusha\ ;
+脅迫罪 > kyouhakuzai\ ;
+団結権 > danketsuken\ ;
+約半年 > yakuhan''nen\ ;
+投票箱 > touhyoubako\ ;
+素人芸 > shiroutogei\ ;
+積極性 > sekkyokusei\ ;
+極座標 > kyokuzahyou\ ;
+寝正月 > neshougatsu\ ;
+浚渫機 > shunsetsuki\ ;
+翼面積 > yokumenseki\ ;
+総目録 > soumokuroku\ ;
+核反応 > kakuhan''nou\ ;
+制酸薬 > seisan''yaku\ ;
+超人的 > choujinteki\ ;
+第一流 > daiichiryuu\ ;
+足拍子 > ashibyoushi\ ;
+弱材料 > yowazairyou\ ;
+接触線 > sesshokusen\ ;
+役力士 > yakurikishi\ ;
+統轄者 > toukatsusha\ ;
+仕事中 > shigotochuu\ ;
+土百姓 > dobyakushou\ ;
+文学賞 > bungakushou\ ;
+招請国 > shouseikoku\ ;
+総収入 > soushuunyuu\ ;
+測量船 > sokuryousen\ ;
+借地権 > shakuchiken\ ;
+沖積世 > chuusekisei\ ;
+口述書 > koujutsusho\ ;
+殉職者 > junshokusha\ ;
+病虫害 > byouchuugai\ ;
+技術的 > gijutsuteki\ ;
+小説家 > shousetsuka\ ;
+特約店 > tokuyakuten\ ;
+交通量 > koutsuuryou\ ;
+道案内 > michian''nai\ ;
+道普請 > michibushin\ ;
+好色者 > koushokusha\ ;
+消臭剤 > shoushuuzai\ ;
+独善的 > dokuzenteki\ ;
+解像力 > kaizouryoku\ ;
+浸透圧 > shintouatsu\ ;
+熱血漢 > nekketsukan\ ;
+岩石学 > gansekigaku\ ;
+蜜柑畑 > mikanbatake\ ;
+烏天狗 > karasutengu\ ;
+紳士的 > shinshiteki\ ;
+窒息死 > chissokushi\ ;
+三大節 > sandaisetsu\ ;
+活断層 > katsudansou\ ;
+目鼻立 > mehanadachi\ ;
+周期律 > shuukiritsu\ ;
+退紅色 > taikoushoku\ ;
+撮像管 > satsuzoukan\ ;
+腹八分 > harahachibu\ ;
+進入路 > shin''nyuuro\ ;
+背日性 > haijitsusei\ ;
+間奏曲 > kansoukyoku\ ;
+指南役 > shinan''yaku\ ;
+脅迫状 > kyouhakujou\ ;
+功名心 > koumyoushin\ ;
+回教国 > kaikyoukoku\ ;
+骨膜炎 > kotsumakuen\ ;
+沢庵漬 > takuandzuke\ ;
+根切虫 > nekirimushi\ ;
+送料共 > souryoutomo\ ;
+張本人 > chouhon''nin\ ;
+乗車口 > joushaguchi\ ;
+一日路 > ichinichiji\ ;
+地質図 > chishitsuzu\ ;
+立明戦 > ritsumeisen\ ;
+抽象論 > chuushouron\ ;
+仕訳表 > shiwakehyou\ ;
+国税庁 > kokuzeichou\ ;
+性悪説 > seiakusetsu\ ;
+懐郷病 > kaikyoubyou\ ;
+柑橘類 > kankitsurui\ ;
+一音節 > ichionsetsu\ ;
+肩胛骨 > kenkoukotsu\ ;
+脱炭酸 > datsutansan\ ;
+新技術 > shingijutsu\ ;
+逆探知 > gyakutanchi\ ;
+拾得者 > shuutokusha\ ;
+宝物殿 > houmotsuden\ ;
+喫煙席 > kitsuenseki\ ;
+冷血漢 > reiketsukan\ ;
+主力艦 > shuryokukan\ ;
+車大工 > kurumadaiku\ ;
+過食症 > kashokushou\ ;
+宿命論 > shukumeiron\ ;
+入金票 > nyuukinhyou\ ;
+花屋敷 > hanayashiki\ ;
+共白髪 > tomoshiraga\ ;
+口座係 > kouzakakari\ ;
+生存率 > seizonritsu\ ;
+熊本県 > kumamotoken\ ;
+直銭形 > chokusenkei\ ;
+動物性 > doubutsusei\ ;
+原爆症 > genbakushou\ ;
+電動式 > dendoushiki\ ;
+生産力 > seisanryoku\ ;
+副牧師 > fukubokushi\ ;
+聖餐式 > seisanshiki\ ;
+逆関数 > gyakukansuu\ ;
+七五三 > shichigosan\ ;
+駐留軍 > chuuryuugun\ ;
+唯物論 > yuibutsuron\ ;
+旅商人 > tabishounin\ ;
+技術料 > gijutsuryou\ ;
+練習帳 > renshuuchou\ ;
+造石高 > zoukokudaka\ ;
+軍隊式 > guntaishiki\ ;
+翻訳者 > hon''yakusha\ ;
+潤目鰯 > urumeiwashi\ ;
+茶褐色 > chakasshoku\ ;
+確実度 > kakujitsudo\ ;
+総力戦 > souryokusen\ ;
+好色漢 > koushokukan\ ;
+初投稿 > hatsutoukou\ ;
+万万一 > manman''ichi\ ;
+紳士服 > shinshifuku\ ;
+一仕事 > hitoshigoto\ ;
+嗅神経 > kyuushinkei\ ;
+継続的 > keizokuteki\ ;
+文学的 > bungakuteki\ ;
+六重唱 > rokujuushou\ ;
+玄人筋 > kuroutosuji\ ;
+囃子方 > hayashikata\ ;
+大人物 > daijinbutsu\ ;
+同系色 > doukeishoku\ ;
+紅白粉 > benioshiroi\ ;
+宣誓式 > senseishiki\ ;
+中和熱 > chuuwanetsu\ ;
+消耗的 > shoukouteki\ ;
+攻撃的 > kougekiteki\ ;
+埋蔵物 > maizoubutsu\ ;
+副読本 > fukudokuhon\ ;
+麝香鼠 > jakounezumi\ ;
+木賃宿 > kichin''yado\ ;
+四角柱 > shikakuchuu\ ;
+中空壁 > chuukuukabe\ ;
+考証学 > koushougaku\ ;
+実証的 > jisshouteki\ ;
+救済策 > kyuusaisaku\ ;
+軍国調 > gunkokuchou\ ;
+白蝋病 > hakuroubyou\ ;
+狂犬病 > kyoukenbyou\ ;
+民衆的 > minshuuteki\ ;
+一両年 > ichiryounen\ ;
+大仏殿 > daibutsuden\ ;
+刹那的 > setsunateki\ ;
+勅任官 > chokuninkan\ ;
+双十節 > soujuusetsu\ ;
+好色本 > koushokubon\ ;
+窒化物 > chikkabutsu\ ;
+三角翼 > sankakuyoku\ ;
+成長株 > seichoukabu\ ;
+石材商 > sekizaishou\ ;
+供託金 > kyoutakukin\ ;
+猫額大 > byougakudai\ ;
+地方色 > chihoushoku\ ;
+生中継 > namachuukei\ ;
+吸収剤 > kyuushuuzai\ ;
+建蔽率 > kenpeiritsu\ ;
+客観的 > kyakkanteki\ ;
+律義者 > richigimono\ ;
+下級職 > kakyuushoku\ ;
+修飾語 > shuushokugo\ ;
+大食漢 > taishokukan\ ;
+冷笑的 > reishouteki\ ;
+支給額 > shikyuugaku\ ;
+不均質 > fukinshitsu\ ;
+代表的 > daihyouteki\ ;
+入道雲 > nyuudougumo\ ;
+共通点 > kyoutsuuten\ ;
+公徳心 > koutokushin\ ;
+形式論 > keishikiron\ ;
+金環食 > kinkanshoku\ ;
+出札所 > shussatsujo\ ;
+北極海 > hokkyokukai\ ;
+行官庁 > gyoukanchou\ ;
+保身術 > hoshinjutsu\ ;
+鑑識眼 > kanshikigan\ ;
+北極洋 > hokkyokuyou\ ;
+彫刻界 > choukokukai\ ;
+馬鹿話 > bakabanashi\ ;
+物納税 > butsunouzei\ ;
+下女中 > shimojochuu\ ;
+地下室 > chikashitsu\ ;
+貸本屋 > kashihon''ya\ ;
+鍾乳洞 > shounyuudou\ ;
+職員録 > shokuinroku\ ;
+梯子酒 > hashigozake\ ;
+滞在客 > taizaikyaku\ ;
+蓄電池 > chikudenchi\ ;
+試掘者 > shikutsusha\ ;
+大学寮 > daigakuryou\ ;
+姫小松 > himekomatsu\ ;
+真実味 > shinjitsumi\ ;
+旅役者 > tabiyakusha\ ;
+国民的 > kokuminteki\ ;
+戦没者 > senbotsusha\ ;
+流行病 > ryuukoubyou\ ;
+彫刻版 > choukokuban\ ;
+周旋業 > shuusengyou\ ;
+団扇虫 > uchiwamushi\ ;
+口小言 > kuchikogoto\ ;
+任命式 > ninmeishiki\ ;
+電力債 > denryokusai\ ;
+力動的 > rikidouteki\ ;
+夏帽子 > natsuboushi\ ;
+睡眠薬 > suimin''yaku\ ;
+卸相場 > oroshisouba\ ;
+印刷業 > insatsugyou\ ;
+伝導率 > dendouritsu\ ;
+蛸入道 > takonyuudou\ ;
+談話室 > danwashitsu\ ;
+安月給 > yasugekkyuu\ ;
+北極星 > hokkyokusei\ ;
+御霊代 > mitamashiro\ ;
+測量士 > sokuryoushi\ ;
+出願時 > shutsuganji\ ;
+三角琴 > sankakugoto\ ;
+鉄条網 > tetsujoumou\ ;
+翻訳権 > hon''yakuken\ ;
+玉杓子 > tamajakushi\ ;
+工業国 > kougyoukoku\ ;
+周旋料 > shuusenryou\ ;
+追撃戦 > tsuigekisen\ ;
+傷病兵 > shoubyouhei\ ;
+彼岸桜 > higanzakura\ ;
+一時払 > ichijibarai\ ;
+内容物 > naiyoubutsu\ ;
+無一物 > muichimotsu\ ;
+労働力 > roudouryoku\ ;
+若竹亭 > wakataketei\ ;
+翻訳書 > hon''yakusho\ ;
+到着駅 > touchakueki\ ;
+少国民 > shoukokumin\ ;
+生学問 > namagakumon\ ;
+今月分 > kongetsubun\ ;
+分数式 > bunsuushiki\ ;
+授賞式 > jushoushiki\ ;
+掌中本 > shouchuubon\ ;
+省力化 > shouryokuka\ ;
+代表格 > daihyoukaku\ ;
+昼興行 > hirukougyou\ ;
+黙示録 > mokushiroku\ ;
+検察官 > kensatsukan\ ;
+供託者 > kyoutakusha\ ;
+海産物 > kaisanbutsu\ ;
+褪紅色 > taikoushoku\ ;
+返信用 > henshin''you\ ;
+遁走曲 > tonsoukyoku\ ;
+辻強盗 > tsujigoutou\ ;
+公式戦 > koushikisen\ ;
+金環蝕 > kinkanshoku\ ;
+靴一足 > kutsuissoku\ ;
+浪花節 > naniwabushi\ ;
+各大学 > kakudaigaku\ ;
+総退却 > soutaikyaku\ ;
+国民服 > kokuminfuku\ ;
+実在論 > jitsuzairon\ ;
+救急車 > kyuukyuusha\ ;
+間接税 > kansetsuzei\ ;
+乱開発 > rankaihatsu\ ;
+所帯主 > shotainushi\ ;
+防寒靴 > boukangutsu\ ;
+三角柱 > sankakuchuu\ ;
+仕訳帳 > shiwakechou\ ;
+粘着性 > nenchakusei\ ;
+密造酒 > mitsuzoushu\ ;
+一夜漬 > ichiyadzuke\ ;
+斜角柱 > shakakuchuu\ ;
+対照的 > taishouteki\ ;
+役人風 > yakuninkaze\ ;
+船舶業 > senpakugyou\ ;
+水道局 > suidoukyoku\ ;
+始発駅 > shihatsueki\ ;
+北極圏 > hokkyokuken\ ;
+日用品 > nichiyouhin\ ;
+反逆者 > hangyakusha\ ;
+登録済 > tourokuzumi\ ;
+専売局 > senbaikyoku\ ;
+権力者 > kenryokusha\ ;
+恒久的 > koukyuuteki\ ;
+反逆罪 > hangyakuzai\ ;
+特等席 > tokutouseki\ ;
+内服薬 > naifukuyaku\ ;
+臆病風 > okubyoukaze\ ;
+供給者 > kyoukyuusha\ ;
+彫刻師 > choukokushi\ ;
+求人難 > kyuujin''nan\ ;
+頚動脈 > keidoumyaku\ ;
+試掘権 > shikutsuken\ ;
+在京中 > zaikyouchuu\ ;
+方程式 > houteishiki\ ;
+静力学 > seirikigaku\ ;
+一覧表 > ichiranhyou\ ;
+北朝鮮 > kitachousen\ ;
+百千鳥 > momochidori\ ;
+銃剣術 > juukenjutsu\ ;
+納骨堂 > noukotsudou\ ;
+耳小骨 > jishoukotsu\ ;
+大静脈 > daijoumyaku\ ;
+経済力 > keizairyoku\ ;
+学協会 > gakukyoukai\ ;
+中心点 > chuushinten\ ;
+北極光 > hokkyokukou\ ;
+食品店 > shokuhinten\ ;
+領収書 > ryoushuusho\ ;
+通知表 > tsuuchihyou\ ;
+連発銃 > renpatsujuu\ ;
+攻撃側 > kougekigawa\ ;
+大中小 > daichuushou\ ;
+平均律 > heikinritsu\ ;
+赤棟蛇 > yamakagashi\ ;
+観念的 > kan''nenteki\ ;
+専門職 > senmonshoku\ ;
+共進会 > kyoushinkai\ ;
+信用状 > shin''youjou\ ;
+織物業 > orimonogyou\ ;
+超特急 > choutokkyuu\ ;
+返信料 > henshinryou\ ;
+壁新聞 > kabeshinbun\ ;
+融解熱 > yuukainetsu\ ;
+節博士 > fushihakase\ ;
+見物人 > kenbutsunin\ ;
+登録料 > tourokuryou\ ;
+周旋人 > shuusen''nin\ ;
+高麗芝 > kouraishiba\ ;
+不親切 > fushinsetsu\ ;
+親告罪 > shinkokuzai\ ;
+蔦紅葉 > tsutamomiji\ ;
+五目鮨 > gomokuzushi\ ;
+編集長 > henshuuchou\ ;
+出版業 > shuppangyou\ ;
+調教師 > choukyoushi\ ;
+進駐軍 > shinchuugun\ ;
+別動隊 > betsudoutai\ ;
+逆噴射 > gyakufunsha\ ;
+二口目 > futakuchime\ ;
+逆命題 > gyakumeidai\ ;
+粘着剤 > nenchakuzai\ ;
+生物界 > seibutsukai\ ;
+五目飯 > gomokumeshi\ ;
+採掘権 > saikutsuken\ ;
+全幅的 > zenpukuteki\ ;
+彫刻刀 > choukokutou\ ;
+研究心 > kenkyuushin\ ;
+独占的 > dokusenteki\ ;
+酸中毒 > sanchuudoku\ ;
+超新星 > choushinsei\ ;
+頂戴物 > choudaimono\ ;
+宿泊所 > shukuhakujo\ ;
+売却益 > baikyakueki\ ;
+構造式 > kouzoushiki\ ;
+代表作 > daihyousaku\ ;
+過失犯 > kashitsuhan\ ;
+紙一枚 > kamiichimai\ ;
+再認識 > saininshiki\ ;
+風物詩 > fuubutsushi\ ;
+実関数 > jitsukansuu\ ;
+大好物 > daikoubutsu\ ;
+乳濁液 > nyuudakueki\ ;
+水冷式 > suireishiki\ ;
+心配性 > shinpaishou\ ;
+後始末 > atoshimatsu\ ;
+全勢力 > zenseiryoku\ ;
+離心率 > rishinritsu\ ;
+供給源 > kyoukyuugen\ ;
+大文節 > daibunsetsu\ ;
+一夜妻 > hitoyodzuma\ ;
+結合子 > ketsugoushi\ ;
+死亡率 > shibouritsu\ ;
+時局柄 > jikyokugara\ ;
+配当率 > haitouritsu\ ;
+整骨師 > seikotsushi\ ;
+関税率 > kanzeiritsu\ ;
+中毒死 > chuudokushi\ ;
+最前列 > saizenretsu\ ;
+御所車 > goshoguruma\ ;
+内曲球 > naikyokkyuu\ ;
+解散説 > kaisansetsu\ ;
+建造物 > kenzoubutsu\ ;
+献血車 > kenketsusha\ ;
+小品集 > shouhinshuu\ ;
+霊安室 > reianshitsu\ ;
+離着陸 > richakuriku\ ;
+高野聖 > kouyahijiri\ ;
+整髪剤 > seihatsuzai\ ;
+処世術 > shoseijutsu\ ;
+八幡宮 > hachimanguu\ ;
+歌唱力 > kashouryoku\ ;
+回折損 > kaisetsuson\ ;
+骨仕事 > honeshigoto\ ;
+臆病者 > okubyoumono\ ;
+朝飯前 > asameshimae\ ;
+刊行物 > kankoubutsu\ ;
+眼鏡橋 > meganebashi\ ;
+購入先 > kounyuusaki\ ;
+弘仁格 > kouninkyaku\ ;
+旧大陸 > kyuutairiku\ ;
+診察日 > shinsatsubi\ ;
+東宮職 > touguushoku\ ;
+警察署 > keisatsusho\ ;
+冗談口 > joudanguchi\ ;
+織物商 > orimonoshou\ ;
+八辺形 > hachihenkei\ ;
+針仕事 > harishigoto\ ;
+好人物 > koujinbutsu\ ;
+征服欲 > seifukuyoku\ ;
+解説者 > kaisetsusha\ ;
+広告業 > koukokugyou\ ;
+創立者 > souritsusha\ ;
+解熱薬 > genetsuyaku\ ;
+日曜版 > nichiyouban\ ;
+新快速 > shinkaisoku\ ;
+中年者 > chuunenmono\ ;
+戴冠式 > taikanshiki\ ;
+軽業師 > karuwazashi\ ;
+中心地 > chuushinchi\ ;
+商慣習 > shoukanshuu\ ;
+生物戦 > seibutsusen\ ;
+救急法 > kyuukyuuhou\ ;
+食前酒 > shokuzenshu\ ;
+深夜族 > shin''yazoku\ ;
+迫撃砲 > hakugekihou\ ;
+進軍中 > shingunchuu\ ;
+媒酌人 > baishakunin\ ;
+両性的 > ryouseiteki\ ;
+潜勢力 > senseiryoku\ ;
+武骨者 > bukotsumono\ ;
+保健室 > hokenshitsu\ ;
+広告料 > koukokuryou\ ;
+速力度 > sokuryokudo\ ;
+盆提灯 > bondjouchin\ ;
+聴神経 > choushinkei\ ;
+超大国 > choutaikoku\ ;
+出版元 > shuppanmoto\ ;
+馬鹿力 > bakadjikara\ ;
+陸半球 > rikuhankyuu\ ;
+統率者 > tousotsusha\ ;
+公共心 > koukyoushin\ ;
+中共軍 > chuukyougun\ ;
+漂白剤 > hyouhakuzai\ ;
+収入源 > shuunyuugen\ ;
+殿様風 > tonosamafuu\ ;
+心配事 > shinpaigoto\ ;
+太陽熱 > taiyounetsu\ ;
+判決文 > hanketsubun\ ;
+信仰的 > shinkouteki\ ;
+膝拍子 > hizabyoushi\ ;
+跡始末 > atoshimatsu\ ;
+盲目的 > moumokuteki\ ;
+神通力 > jintsuuriki\ ;
+恐妻病 > kyousaibyou\ ;
+忠実度 > chuujitsudo\ ;
+信任状 > shin''ninjou\ ;
+新参者 > shinzanmono\ ;
+真犯人 > shinhan''nin\ ;
+警察犬 > keisatsuken\ ;
+叢時雨 > murashigure\ ;
+海食洞 > kaishokudou\ ;
+参列者 > sanretsusha\ ;
+生物圏 > seibutsuken\ ;
+供給地 > kyoukyuuchi\ ;
+干渉縞 > kanshoujima\ ;
+独創的 > dokusouteki\ ;
+染色体 > senshokutai\ ;
+座頭鯨 > zatoukujira\ ;
+目的論 > mokutekiron\ ;
+省略時 > shouryakuji\ ;
+石炭殻 > sekitangara\ ;
+分裂性 > bunretsusei\ ;
+短縮形 > tanshukukei\ ;
+有職者 > yuushokusha\ ;
+親和力 > shinwaryoku\ ;
+先々月 > sensengetsu\ ;
+有体物 > yuutaibutsu\ ;
+短絡的 > tanrakuteki\ ;
+魅力的 > miryokuteki\ ;
+化学式 > kagakushiki\ ;
+太陽日 > taiyoujitsu\ ;
+野球熱 > yakyuunetsu\ ;
+警察権 > keisatsuken\ ;
+熱気球 > netsukikyuu\ ;
+空想力 > kuusouryoku\ ;
+静岡県 > shizuokaken\ ;
+反逆人 > hangyakunin\ ;
+染髪剤 > senpatsuzai\ ;
+全身病 > zenshinbyou\ ;
+腹話術 > fukuwajutsu\ ;
+流量計 > ryuuryoukei\ ;
+線織面 > senshikimen\ ;
+完結編 > kanketsuhen\ ;
+学生証 > gakuseishou\ ;
+造幣局 > zouheikyoku\ ;
+説明書 > setsumeisho\ ;
+自給率 > jikyuuritsu\ ;
+打物師 > uchimonoshi\ ;
+惨殺者 > zansatsusha\ ;
+磯巾着 > isoginchaku\ ;
+証人席 > shouninseki\ ;
+若白髪 > wakashiraga\ ;
+数学的 > suugakuteki\ ;
+直円柱 > chokuenchuu\ ;
+説明文 > setsumeibun\ ;
+水産物 > suisanbutsu\ ;
+教則本 > kyousokubon\ ;
+乙女心 > otomegokoro\ ;
+戦勝国 > senshoukoku\ ;
+南北朝 > nanbokuchou\ ;
+幻想曲 > gensoukyoku\ ;
+旅興行 > tabikougyou\ ;
+豆電球 > mamedenkyuu\ ;
+解説書 > kaisetsusho\ ;
+翼手目 > yokushumoku\ ;
+婚約者 > kon''yakusha\ ;
+郡役所 > gun''yakusho\ ;
+知識層 > chishikisou\ ;
+撞木鮫 > shumokuzame\ ;
+硼酸末 > housanmatsu\ ;
+妖術者 > youjutsusha\ ;
+余白頁 > yohakupeeji\ ;
+統一的 > touitsuteki\ ;
+身障者 > shinshousha\ ;
+食卓塩 > shokutakuen\ ;
+八字髭 > hachijihige\ ;
+復活祭 > fukkatsusai\ ;
+主産物 > shusanbutsu\ ;
+美術的 > bijutsuteki\ ;
+珍現象 > chingenshou\ ;
+三稜鏡 > sanryoukyou\ ;
+大陸棚 > tairikudana\ ;
+殿様芸 > tonosamagei\ ;
+海食崖 > kaishokugai\ ;
+元禄袖 > genrokusode\ ;
+文教族 > bunkyouzoku\ ;
+湿度計 > shitsudokei\ ;
+召集者 > shoushuusha\ ;
+八極拳 > hakkyokuken\ ;
+信仰心 > shinkoushin\ ;
+人一倍 > hitoichibai\ ;
+合衆国 > gasshuukoku\ ;
+機関室 > kikanshitsu\ ;
+冷却液 > reikyakueki\ ;
+漁獲高 > gyokakudaka\ ;
+公用物 > kouyoubutsu\ ;
+単発銃 > tanpatsujuu\ ;
+冷却水 > reikyakusui\ ;
+献立表 > kondatehyou\ ;
+若草色 > wakakusairo\ ;
+三国一 > sangokuichi\ ;
+督促状 > tokusokujou\ ;
+仮受取 > kariuketori\ ;
+袋小路 > fukurokouji\ ;
+警察官 > keisatsukan\ ;
+自然律 > shizenritsu\ ;
+職務給 > shokumukyuu\ ;
+療養中 > ryouyouchuu\ ;
+合成物 > gouseibutsu\ ;
+三行半 > mikudarihan\ ;
+行政学 > gyouseigaku\ ;
+実行力 > jikkouryoku\ ;
+長火鉢 > nagahibachi\ ;
+海食台 > kaishokudai\ ;
+郵便物 > yuubinbutsu\ ;
+空気枕 > kuukimakura\ ;
+奨学金 > shougakukin\ ;
+公生活 > kouseikatsu\ ;
+遮蔽物 > shaheibutsu\ ;
+絹織物 > kinuorimono\ ;
+芸術論 > geijutsuron\ ;
+薬効物 > yakkoubutsu\ ;
+庭仕事 > niwashigoto\ ;
+悪質化 > akushitsuka\ ;
+知識人 > chishikijin\ ;
+白内障 > hakunaishou\ ;
+楽天的 > rakutenteki\ ;
+別勘定 > betsukanjou\ ;
+金杓子 > kanajakushi\ ;
+長大息 > choutaisoku\ ;
+聴取料 > choushuryou\ ;
+頸静脈 > keijoumyaku\ ;
+漁獲量 > gyokakuryou\ ;
+語学力 > gogakuryoku\ ;
+準備室 > junbishitsu\ ;
+中年増 > chuudoshima\ ;
+背筋力 > haikinryoku\ ;
+所有物 > shoyuubutsu\ ;
+産土神 > ubusunagami\ ;
+暗赤色 > ansekishoku\ ;
+仕立物 > shitatemono\ ;
+七回忌 > shichikaiki\ ;
+溶解熱 > youkainetsu\ ;
+米十粒 > komejuuryuu\ ;
+特注品 > tokuchuuhin\ ;
+別働隊 > betsudoutai\ ;
+古新聞 > furushinbun\ ;
+配達人 > haitatsunin\ ;
+京人形 > kyouningyou\ ;
+完結文 > kanketsubun\ ;
+反対色 > hantaishoku\ ;
+商品学 > shouhingaku\ ;
+入射角 > nyuushakaku\ ;
+消防庁 > shoubouchou\ ;
+奇麗所 > kireidokoro\ ;
+山吹色 > yamabukiiro\ ;
+打撃率 > dagekiritsu\ ;
+請求額 > seikyuugaku\ ;
+百年祭 > hyakunensai\ ;
+抑留者 > yokuryuusha\ ;
+食連星 > shokurensei\ ;
+落札値 > rakusatsune\ ;
+自然力 > shizenryoku\ ;
+秘書室 > hishoshitsu\ ;
+千秋楽 > senshuuraku\ ;
+探究心 > tankyuushin\ ;
+副社長 > fukushachou\ ;
+月例会 > getsureikai\ ;
+数日間 > suujitsukan\ ;
+命名式 > meimeishiki\ ;
+指導力 > shidouryoku\ ;
+感覚的 > kankakuteki\ ;
+再開発 > saikaihatsu\ ;
+入学難 > nyuugakunan\ ;
+分折学 > bunsekigaku\ ;
+若輩者 > jakuhaimono\ ;
+幅変調 > habahenchou\ ;
+小惑星 > shouwakusei\ ;
+人物像 > jinbutsuzou\ ;
+躁鬱病 > souutsubyou\ ;
+直輸入 > chokuyunyuu\ ;
+促進剤 > sokushinzai\ ;
+鼻出血 > bishukketsu\ ;
+急進党 > kyuushintou\ ;
+金婚式 > kinkonshiki\ ;
+満艦飾 > mankanshoku\ ;
+傍迷惑 > hatameiwaku\ ;
+昼食時 > chuushokuji\ ;
+芸術祭 > geijutsusai\ ;
+学生服 > gakuseifuku\ ;
+就業地 > shuugyouchi\ ;
+表示物 > hyoujibutsu\ ;
+転入生 > ten''nyuusei\ ;
+入学金 > nyuugakukin\ ;
+革新系 > kakushinkei\ ;
+陽極線 > youkyokusen\ ;
+出演者 > shutsuensha\ ;
+会議室 > kaigishitsu\ ;
+陸運局 > rikuunkyoku\ ;
+追徴金 > tsuichoukin\ ;
+殺菌力 > sakkinryoku\ ;
+投宿者 > toushukusha\ ;
+新庁舎 > shinchousha\ ;
+冷却剤 > reikyakuzai\ ;
+遊覧客 > yuurankyaku\ ;
+黄金虫 > koganemushi\ ;
+黒死病 > kokushibyou\ ;
+郵便局 > yuubinkyoku\ ;
+反射率 > hansharitsu\ ;
+教皇庁 > kyoukouchou\ ;
+若鳥丼 > wakadoridon\ ;
+美術商 > bijutsushou\ ;
+滴定量 > tekiteiryou\ ;
+神学者 > shingakusha\ ;
+密輸入 > mitsuyunyuu\ ;
+踏切番 > fumikiriban\ ;
+前奏曲 > zensoukyoku\ ;
+裸一貫 > hadakaikkan\ ;
+奏鳴曲 > soumeikyoku\ ;
+私生活 > shiseikatsu\ ;
+甲鉄艦 > koutetsukan\ ;
+心臓病 > shinzoubyou\ ;
+錬金術 > renkinjutsu\ ;
+黒内障 > kokunaishou\ ;
+有識者 > yuushikisha\ ;
+山津波 > yamatsunami\ ;
+袖珍本 > shuuchinbon\ ;
+先着順 > senchakujun\ ;
+実名詞 > jitsumeishi\ ;
+防食剤 > boushokuzai\ ;
+対称軸 > taishoujiku\ ;
+近日点 > kinjitsuten\ ;
+藍晶石 > ranshouseki\ ;
+女子供 > on''nakodomo\ ;
+没食子 > mosshokushi\ ;
+修繕中 > shuuzenchuu\ ;
+耳学問 > mimigakumon\ ;
+長粒米 > chouryuumai\ ;
+神信心 > kamishinjin\ ;
+奨学生 > shougakusei\ ;
+観兵式 > kanpeishiki\ ;
+若年型 > jakunengata\ ;
+鼠海豚 > nezumiiruka\ ;
+集積場 > shuusekijou\ ;
+指人形 > yubiningyou\ ;
+曲芸師 > kyokugeishi\ ;
+麦粒腫 > bakuryuushu\ ;
+目的地 > mokutekichi\ ;
+学生寮 > gakuseiryou\ ;
+合成力 > gouseiryoku\ ;
+提供側 > teikyougawa\ ;
+乗降客 > joukoukyaku\ ;
+内親王 > naishin''nou\ ;
+糞勉強 > kusobenkyou\ ;
+矢継早 > yatsugibaya\ ;
+変曲点 > henkyokuten\ ;
+長四角 > nagashikaku\ ;
+親切気 > shinsetsugi\ ;
+副神経 > fukushinkei\ ;
+葉緑体 > youryokutai\ ;
+菊人形 > kikuningyou\ ;
+玩弄物 > ganroubutsu\ ;
+口言葉 > kuchikotoba\ ;
+集合的 > shuugouteki\ ;
+割当額 > wariategaku\ ;
+常習的 > joushuuteki\ ;
+感圧紙 > kan''atsushi\ ;
+紅猿子 > benimashiko\ ;
+弾性率 > danseiritsu\ ;
+淡紅色 > tankoushoku\ ;
+柳行李 > yanagigouri\ ;
+流動的 > ryuudouteki\ ;
+環境庁 > kankyouchou\ ;
+昆虫学 > konchuugaku\ ;
+常日頃 > tsunehigoro\ ;
+比翼塚 > hiyokudzuka\ ;
+混成物 > konseibutsu\ ;
+溶解力 > youkairyoku\ ;
+教育長 > kyouikuchou\ ;
+焼却炉 > shoukyakuro\ ;
+白檀油 > byakudan''yu\ ;
+牽引力 > ken''inryoku\ ;
+観光局 > kankoukyoku\ ;
+入学者 > nyuugakusha\ ;
+国学者 > kokugakusha\ ;
+活動誌 > katsudoushi\ ;
+出土品 > shutsudohin\ ;
+紙表紙 > kamibyoushi\ ;
+観光客 > kankoukyaku\ ;
+共学制 > kyougakusei\ ;
+羞恥心 > shuuchishin\ ;
+虫眼鏡 > mushimegane\ ;
+言葉質 > kotobajichi\ ;
+学者膚 > gakushahada\ ;
+通信網 > tsuushinmou\ ;
+普及率 > fukyuuritsu\ ;
+千鳥足 > chidoriashi\ ;
+転轍手 > tentetsushu\ ;
+購買力 > koubairyoku\ ;
+学者肌 > gakushahada\ ;
+入賞者 > nyuushousha\ ;
+陸軍省 > rikugunshou\ ;
+仮出所 > karishussho\ ;
+古物商 > kobutsushou\ ;
+象徴詩 > shouchoushi\ ;
+下協議 > shitakyougi\ ;
+召集令 > shoushuurei\ ;
+照会先 > shoukaisaki\ ;
+堆積学 > taisekigaku\ ;
+読解力 > dokkairyoku\ ;
+腸結核 > choukekkaku\ ;
+年恰好 > toshikakkou\ ;
+通産省 > tsuusanshou\ ;
+通産相 > tsuusanshou\ ;
+督学官 > tokugakukan\ ;
+懐中物 > kaichuumono\ ;
+通信社 > tsuushinsha\ ;
+千石船 > sengokubune\ ;
+金牛宮 > kingyuukyuu\ ;
+接合子 > setsugoushi\ ;
+皇室費 > koushitsuhi\ ;
+追徴税 > tsuichouzei\ ;
+局外者 > kyokugaisha\ ;
+翌翌年 > yokuyokunen\ ;
+特別機 > tokubetsuki\ ;
+淡褐色 > tankasshoku\ ;
+偏執病 > henshuubyou\ ;
+学習者 > gakushuusha\ ;
+防音室 > bouonshitsu\ ;
+肉体的 > nikutaiteki\ ;
+料金表 > ryoukinhyou\ ;
+内陸国 > nairikukoku\ ;
+包容力 > houyouryoku\ ;
+出漁期 > shutsugyoki\ ;
+主人役 > shujin''yaku\ ;
+成功率 > seikouritsu\ ;
+公有物 > kouyuubutsu\ ;
+観艦式 > kankanshiki\ ;
+月夜茸 > tsukiyotake\ ;
+入学生 > nyuugakusei\ ;
+明後日 > myougonichi\ ;
+活動者 > katsudousha\ ;
+三原色 > sangenshoku\ ;
+偏執狂 > henshuukyou\ ;
+蒋介石 > shoukaiseki\ ;
+申告書 > shinkokusho\ ;
+編笠茸 > amigasatake\ ;
+小半日 > kohan''nichi\ ;
+表彰状 > hyoushoujou\ ;
+内証事 > naishougoto\ ;
+診断学 > shindangaku\ ;
+南極点 > nankyokuten\ ;
+曲射砲 > kyokushahou\ ;
+対称的 > taishouteki\ ;
+甲鉄板 > koutetsuban\ ;
+先発隊 > senpatsutai\ ;
+性生活 > seiseikatsu\ ;
+検閲官 > ken''etsukan\ ;
+流通税 > ryuutsuuzei\ ;
+洗濯糊 > sentakunori\ ;
+半直線 > hanchokusen\ ;
+洗濯籠 > sentakukago\ ;
+接合剤 > setsugouzai\ ;
+農産物 > nousanbutsu\ ;
+接受国 > setsujukoku\ ;
+南極海 > nankyokukai\ ;
+結膜炎 > ketsumakuen\ ;
+親睦会 > shinbokukai\ ;
+硫化物 > ryuukabutsu\ ;
+想像力 > souzouryoku\ ;
+芸術品 > geijutsuhin\ ;
+南極洋 > nankyokuyou\ ;
+再測量 > saisokuryou\ ;
+露出計 > roshutsukei\ ;
+留学生 > ryuugakusei\ ;
+水仕事 > mizushigoto\ ;
+学習用 > gakushuuyou\ ;
+注射針 > chuushabari\ ;
+観察者 > kansatsusha\ ;
+通信欄 > tsuushinran\ ;
+五月闇 > satsukiyami\ ;
+発着場 > hatchakujou\ ;
+輸出税 > yushutsuzei\ ;
+就職時 > shuushokuji\ ;
+着眼点 > chakuganten\ ;
+空冷式 > kuureishiki\ ;
+溶接工 > yousetsukou\ ;
+丸木橋 > marukibashi\ ;
+山形県 > yamagataken\ ;
+交霊術 > koureijutsu\ ;
+創造説 > souzousetsu\ ;
+招待席 > shoutaiseki\ ;
+雪上車 > setsujousha\ ;
+交響楽 > koukyougaku\ ;
+農業国 > nougyoukoku\ ;
+卓越風 > takuetsufuu\ ;
+鎮痛性 > chintsuusei\ ;
+認識論 > ninshikiron\ ;
+就寝前 > shuushinzen\ ;
+双曲線 > soukyokusen\ ;
+夏時刻 > natsujikoku\ ;
+夏大根 > natsudaikon\ ;
+村八分 > murahachibu\ ;
+傘伐林 > sanbatsurin\ ;
+常設館 > jousetsukan\ ;
+南極星 > nankyokusei\ ;
+神学士 > shingakushi\ ;
+上告審 > joukokushin\ ;
+先入観 > sen''nyuukan\ ;
+先入見 > sen''nyuuken\ ;
+洗濯物 > sentakumono\ ;
+万葉集 > man''youshuu\ ;
+満州国 > manshuukoku\ ;
+表忠塔 > hyouchuutou\ ;
+三重殺 > sanjuusatsu\ ;
+分泌液 > bunpitsueki\ ;
+隣接県 > rinsetsuken\ ;
+嘘八百 > usohappyaku\ ;
+舞踏室 > butoushitsu\ ;
+当局者 > toukyokusha\ ;
+緩衝国 > kanshoukoku\ ;
+藁人形 > waraningyou\ ;
+影響力 > eikyouryoku\ ;
+文節数 > bunsetsusuu\ ;
+悪推量 > waruzuiryou\ ;
+含有量 > gan''yuuryou\ ;
+誘電率 > yuudenritsu\ ;
+観察眼 > kansatsugan\ ;
+抛物線 > houbutsusen\ ;
+裏切者 > uragirimono\ ;
+防雪林 > bousetsurin\ ;
+天神髭 > tenshinhige\ ;
+殺害者 > satsugaisha\ ;
+教育省 > kyouikushou\ ;
+離乳食 > rinyuushoku\ ;
+教育的 > kyouikuteki\ ;
+特別区 > tokubetsuku\ ;
+財政力 > zaiseiryoku\ ;
+強硬策 > kyoukousaku\ ;
+新年号 > shin''nengou\ ;
+磯馴松 > sonarematsu\ ;
+入館料 > nyuukanryou\ ;
+物相飯 > mossoumeshi\ ;
+製革業 > seikakugyou\ ;
+中学生 > chuugakusei\ ;
+輸出港 > yushutsukou\ ;
+南極帯 > nankyokutai\ ;
+溶接剤 > yousetsuzai\ ;
+急病人 > kyuubyounin\ ;
+寄宿料 > kishukuryou\ ;
+高島田 > takashimada\ ;
+小正月 > koshougatsu\ ;
+動力計 > douryokukei\ ;
+極大値 > kyokudaichi\ ;
+出金額 > shukkingaku\ ;
+申告制 > shinkokusei\ ;
+子供達 > kodomotachi\ ;
+媒介物 > baikaibutsu\ ;
+黄道色 > koudoushoku\ ;
+三葉虫 > san''youchuu\ ;
+全質化 > zenshitsuka\ ;
+生活難 > seikatsunan\ ;
+細動脈 > saidoumyaku\ ;
+私有物 > shiyuubutsu\ ;
+複雑化 > fukuzatsuka\ ;
+勢力圏 > seiryokuken\ ;
+複複線 > fukufukusen\ ;
+新年会 > shin''nenkai\ ;
+不確実 > fukakujitsu\ ;
+鎮痛剤 > chintsuuzai\ ;
+怪人物 > kaijinbutsu\ ;
+通学生 > tsuugakusei\ ;
+爆心地 > bakushinchi\ ;
+始末書 > shimatsusho\ ;
+競争心 > kyousoushin\ ;
+剽軽者 > hyoukinmono\ ;
+腸閉塞 > chouheisoku\ ;
+軍当局 > guntoukyoku\ ;
+白子鳩 > shirakobato\ ;
+町役場 > machiyakuba\ ;
+不忠実 > fuchuujitsu\ ;
+博学者 > hakugakusha\ ;
+戦略上 > senryakujou\ ;
+南極圏 > nankyokuken\ ;
+両脚規 > ryoukyakuki\ ;
+共訳者 > kyouyakusha\ ;
+忍耐力 > nintairyoku\ ;
+集金人 > shuukin''nin\ ;
+十八金 > juuhachikin\ ;
+借用者 > shakuyousha\ ;
+持久力 > jikyuuryoku\ ;
+局地風 > kyokuchifuu\ ;
+発癌性 > hatsugansei\ ;
+揚陸料 > yourikuryou\ ;
+密貿易 > mitsuboueki\ ;
+通信員 > tsuushin''in\ ;
+冠動脈 > kandoumyaku\ ;
+変奏曲 > hensoukyoku\ ;
+表彰台 > hyoushoudai\ ;
+葬送曲 > sousoukyoku\ ;
+千分率 > senbunritsu\ ;
+丸一年 > maruichinen\ ;
+老廃物 > rouhaibutsu\ ;
+南極光 > nankyokukou\ ;
+皮算用 > kawazan''you\ ;
+追分節 > oiwakebushi\ ;
+徳川勢 > tokugawazei\ ;
+創造物 > souzoubutsu\ ;
+初航海 > hatsukoukai\ ;
+購読料 > koudokuryou\ ;
+得票数 > tokuhyousuu\ ;
+雪景色 > yukigeshiki\ ;
+精神的 > seishinteki\ ;
+徳川公 > tokugawakou\ ;
+活動家 > katsudousha\ ;
+自立心 > jiritsushin\ ;
+漸進的 > zenshinteki\ ;
+教会暦 > kyoukaireki\ ;
+殺人者 > satsujinsha\ ;
+精神病 > seishinbyou\ ;
+殺人罪 > satsujinzai\ ;
+成年式 > seinenshiki\ ;
+脱石油 > datsusekiyu\ ;
+先進国 > senshinkoku\ ;
+土団子 > tsuchidango\ ;
+混合物 > kongoubutsu\ ;
+軍楽長 > gungakuchou\ ;
+法律上 > houritsujou\ ;
+畜犬税 > chikukenzei\ ;
+梁山泊 > ryouzanpaku\ ;
+彫塑術 > chousojutsu\ ;
+代用食 > daiyoushoku\ ;
+並木道 > namikimichi\ ;
+帳本人 > chouhon''nin\ ;
+宝石箱 > housekibako\ ;
+卒業後 > sotsugyougo\ ;
+口角力 > kuchidzumou\ ;
+事業主 > jigyounushi\ ;
+自虐的 > jigyakuteki\ ;
+下相談 > shitasoudan\ ;
+禿頭病 > tokutoubyou\ ;
+弾着点 > danchakuten\ ;
+五月病 > gogatsubyou\ ;
+弾力性 > danryokusei\ ;
+核爆弾 > kakubakudan\ ;
+並木路 > namikimichi\ ;
+商業街 > shougyougai\ ;
+頭文字 > kashiramoji\ ;
+縮緬紙 > chirimenshi\ ;
+截断面 > setsudanmen\ ;
+南京虫 > nankinmushi\ ;
+裁決書 > saiketsusho\ ;
+核燃料 > kakunenryou\ ;
+逐字訳 > chikujiyaku\ ;
+一徹者 > ittetsumono\ ;
+御協力 > gokyouryoku\ ;
+係属中 > keizokuchuu\ ;
+病中吟 > byouchuugin\ ;
+極限値 > kyokugenchi\ ;
+教育学 > kyouikugaku\ ;
+電話室 > denwashitsu\ ;
+遠心力 > enshinryoku\ ;
+宮崎県 > miyazakiken\ ;
+商工業 > shoukougyou\ ;
+衝動的 > shoudouteki\ ;
+胆石症 > tansekishou\ ;
+輸出品 > yushutsuhin\ ;
+三眠蚕 > sanminkaiko\ ;
+間欠泉 > kanketsusen\ ;
+天龍川 > tenryuukawa\ ;
+教習生 > kyoushuusei\ ;
+隣接地 > rinsetsuchi\ ;
+発生率 > hasseiritsu\ ;
+葡萄畑 > budoubatake\ ;
+境界標 > kyoukaihyou\ ;
+空軍力 > kuugunryoku\ ;
+交声曲 > kouseikyoku\ ;
+現内閣 > gen''naikaku\ ;
+占星術 > senseijutsu\ ;
+香辛料 > koushinryou\ ;
+町道場 > machidoujou\ ;
+動力源 > douryokugen\ ;
+恒等式 > koutoushiki\ ;
+討伐軍 > toubatsugun\ ;
+表看板 > omotekanban\ ;
+濃青色 > nouseishoku\ ;
+殺人犯 > satsujinhan\ ;
+残念賞 > zan''nenshou\ ;
+脳充血 > noujuuketsu\ ;
+食人種 > shokujinshu\ ;
+赤褐色 > sekkasshoku\ ;
+興信録 > koushinroku\ ;
+電熱器 > den''netsuki\ ;
+作曲者 > sakkyokusha\ ;
+商標権 > shouhyouken\ ;
+常識人 > joushikijin\ ;
+観客層 > kankyakusou\ ;
+一重桜 > hitoezakura\ ;
+先先月 > sensengetsu\ ;
+地動説 > chidousetsu\ ;
+白亜質 > hakuashitsu\ ;
+膠着剤 > kouchakuzai\ ;
+一段落 > ichidanraku\ ;
+軍用鳩 > gun''youbato\ ;
+俗文学 > zokubungaku\ ;
+電圧計 > den''atsukei\ ;
+薬局方 > yakkyokuhou\ ;
+法制局 > houseikyoku\ ;
+薬学者 > yakugakusha\ ;
+係争物 > keisoubutsu\ ;
+鐘乳洞 > shounyuudou\ ;
+脱毛剤 > datsumouzai\ ;
+管轄権 > kankatsuken\ ;
+借用書 > shakuyousho\ ;
+奉公口 > houkouguchi\ ;
+放送局 > housoukyoku\ ;
+黄白色 > kohakushoku\ ;
+羽織袴 > haorihakama\ ;
+除幕式 > jomakushiki\ ;
+強制的 > kyouseiteki\ ;
+強心剤 > kyoushinzai\ ;
+生活環 > seikatsukan\ ;
+春一番 > haruichiban\ ;
+十八番 > juuhachiban\ ;
+終身官 > shuushinkan\ ;
+月長石 > getchouseki\ ;
+教職員 > kyoushokuin\ ;
+送別会 > soubetsukai\ ;
+出品国 > shuppinkoku\ ;
+南京町 > nankinmachi\ ;
+道徳的 > doutokuteki\ ;
+商業界 > shougyoukai\ ;
+収納額 > shuunougaku\ ;
+鼎立戦 > teiritsusen\ ;
+原則的 > gensokuteki\ ;
+傍聴料 > bouchouryou\ ;
+千円札 > sen''ensatsu\ ;
+定収入 > teishuunyuu\ ;
+六大州 > rokudaishuu\ ;
+割引券 > waribikiken\ ;
+住生活 > juuseikatsu\ ;
+前立腺 > zenritsusen\ ;
+写真集 > shashinshuu\ ;
+百万遍 > hyakumanben\ ;
+蝉時雨 > semishigure\ ;
+割引債 > waribikisai\ ;
+接着剤 > setchakuzai\ ;
+手術台 > shujutsudai\ ;
+防火扉 > boukatobira\ ;
+乱入者 > ran''nyuusha\ ;
+計画的 > keikakuteki\ ;
+調印式 > chouinshiki\ ;
+逆転層 > gyakutensou\ ;
+黄色虫 > koganemushi\ ;
+生活法 > seikatsuhou\ ;
+粘土質 > nendoshitsu\ ;
+逆輸入 > gyakuyunyuu\ ;
+新興国 > shinkoukoku\ ;
+創造力 > souzouryoku\ ;
+合目的 > goumokuteki\ ;
+新人賞 > shinjinshou\ ;
+頚静脈 > keijoumyaku\ ;
+電報局 > denpoukyoku\ ;
+三幕物 > sanmakumono\ ;
+白木蓮 > hakumokuren\ ;
+商業港 > shougyoukou\ ;
+薬罐頭 > yakan''atama\ ;
+一里塚 > ichiridzuka\ ;
+終身刑 > shuushinkei\ ;
+動力学 > dourikigaku\ ;
+節料理 > sechiryouri\ ;
+出品人 > shuppin''nin\ ;
+傍聴席 > bouchouseki\ ;
+不適切 > futekisetsu\ ;
+学際的 > gakusaiteki\ ;
+竜骨座 > ryuukotsuza\ ;
+仮条約 > karijouyaku\ ;
+階級章 > kaikyuushou\ ;
+抵抗力 > teikouryoku\ ;
+森林学 > shinringaku\ ;
+百万言 > hyakumangen\ ;
+化粧下 > keshoushita\ ;
+赤提灯 > akachouchin\ ;
+創造主 > souzounushi\ ;
+候孝賢 > houshaushen\ ;
+薬缶頭 > yakan''atama\ ;
+冬将軍 > fuyushougun\ ;
+独習書 > dokushuusho\ ;
+公証料 > koushouryou\ ;
+綿織物 > men''orimono\ ;
+先入主 > sen''nyuushu\ ;
+最終的 > saishuuteki\ ;
+本建築 > honkenchiku\ ;
+狗尾草 > enokorogusa\ ;
+行商人 > gyoushounin\ ;
+切分法 > setsubunhou\ ;
+小百姓 > kobyakushou\ ;
+心丈夫 > kokorojoubu\ ;
+鳥類学 > chouruigaku\ ;
+弱年者 > jakunenmono\ ;
+中隊長 > chuutaichou\ ;
+相談役 > soudan''yaku\ ;
+食事時 > shokujidoki\ ;
+八面体 > hachimentai\ ;
+原判決 > genhanketsu\ ;
+極地圏 > kyokuchiken\ ;
+監察官 > kansatsukan\ ;
+白玉粉 > shiratamako\ ;
+商業文 > shougyoubun\ ;
+天動説 > tendousetsu\ ;
+辻説法 > tsujiseppou\ ;
+煉丹術 > rentanjutsu\ ;
+西海岸 > nishikaigan\ ;
+急上昇 > kyuujoushou\ ;
+宝石商 > housekishou\ ;
+換算率 > kansanritsu\ ;
+建設者 > kensetsusha\ ;
+北々西 > hokuhokusei\ ;
+銀婚式 > ginkonshiki\ ;
+両脚器 > ryoukyakuki\ ;
+原動力 > gendouryoku\ ;
+俄景気 > niwakageiki\ ;
+悪戯者 > itazuramono\ ;
+大福帳 > daifukuchou\ ;
+時節柄 > jisetsugara\ ;
+吸血鬼 > kyuuketsuki\ ;
+糖尿病 > tounyoubyou\ ;
+転任先 > ten''ninsaki\ ;
+支配力 > shihairyoku\ ;
+単音節 > tan''onsetsu\ ;
+新聞種 > shinbundane\ ;
+弟々子 > otoutodeshi\ ;
+低丘陵 > teikyuuryou\ ;
+国際的 > kokusaiteki\ ;
+郷土色 > kyoudoshoku\ ;
+竜田姫 > tatsutahime\ ;
+小学館 > shougakukan\ ;
+使節団 > shisetsudan\ ;
+消息文 > shousokubun\ ;
+緋衣草 > higoromosou\ ;
+主計局 > shukeikyoku\ ;
+道徳心 > doutokushin\ ;
+未決囚 > miketsushuu\ ;
+愛唱曲 > aishoukyoku\ ;
+山棟蛇 > yamakagashi\ ;
+偵察隊 > teisatsutai\ ;
+発信側 > hasshingawa\ ;
+遠山里 > tooyamazato\ ;
+神経痛 > shinkeitsuu\ ;
+神経症 > shinkeishou\ ;
+神経病 > shinkeibyou\ ;
+定着液 > teichakueki\ ;
+弁証学 > benshougaku\ ;
+発信人 > hasshin''nin\ ;
+緑地帯 > ryokuchitai\ ;
+生活圏 > seikatsuken\ ;
+熱伝導 > netsudendou\ ;
+道徳学 > doutokugaku\ ;
+適格者 > tekikakusha\ ;
+図書室 > toshoshitsu\ ;
+観音様 > kan''nonsama\ ;
+結婚式 > kekkonshiki\ ;
+西洋式 > seiyoushiki\ ;
+男冥利 > otokomyouri\ ;
+上腕骨 > jouwankotsu\ ;
+生命力 > seimeiryoku\ ;
+硬骨漢 > koukotsukan\ ;
+商業地 > shougyouchi\ ;
+万年床 > man''nendoko\ ;
+講釈師 > koushakushi\ ;
+淡黄色 > tankoushoku\ ;
+三幅対 > sanpukutsui\ ;
+蛋白尿 > tanpakunyou\ ;
+刺激臭 > shigekishuu\ ;
+草鞋虫 > warajimushi\ ;
+金融業 > kin''yuugyou\ ;
+菜種油 > nataneabura\ ;
+雛人形 > hinaningyou\ ;
+無着陸 > muchakuriku\ ;
+上分別 > joufunbetsu\ ;
+大動脈 > daidoumyaku\ ;
+神無月 > kan''nadzuki\ ;
+幼馴染 > osananajimi\ ;
+円周率 > enshuuritsu\ ;
+商業史 > shougyoushi\ ;
+山岳病 > sangakubyou\ ;
+親任官 > shin''ninkan\ ;
+追跡者 > tsuisekisha\ ;
+発会式 > hakkaishiki\ ;
+天道虫 > tentoumushi\ ;
+床面積 > yukamenseki\ ;
+狸親父 > tanukioyaji\ ;
+木石漢 > bokusekikan\ ;
+国防省 > kokuboushou\ ;
+国文学 > kokubungaku\ ;
+民俗学 > minzokugaku\ ;
+生殖腺 > seishokusen\ ;
+自殺的 > jisatsuteki\ ;
+造物主 > zoubutsushu\ ;
+用兵術 > youheijutsu\ ;
+退職金 > taishokukin\ ;
+彎月状 > wangetsujou\ ;
+生没年 > seibotsunen\ ;
+単一性 > tan''itsusei\ ;
+持続力 > jizokuryoku\ ;
+新聞業 > shinbungyou\ ;
+神経核 > shinkeikaku\ ;
+枢軸国 > suujikukoku\ ;
+三色版 > sanshokuban\ ;
+直観的 > chokkanteki\ ;
+中間駅 > chuukan''eki\ ;
+能装束 > noushouzoku\ ;
+結晶学 > kesshougaku\ ;
+解決法 > kaiketsuhou\ ;
+警戒色 > keikaishoku\ ;
+一毛作 > ichimousaku\ ;
+温熱性 > on''netsusei\ ;
+内反脚 > naihankyaku\ ;
+延縄漁 > haenawaryou\ ;
+直方体 > chokuhoutai\ ;
+家族達 > kazokutachi\ ;
+刺激的 > shigekiteki\ ;
+交換局 > koukankyoku\ ;
+七年忌 > shichinenki\ ;
+悪戯書 > itazuragaki\ ;
+千人針 > sen''ninbari\ ;
+消毒液 > shoudokueki\ ;
+油砥石 > aburatoishi\ ;
+狐饂飩 > kitsuneudon\ ;
+合州国 > gasshuukoku\ ;
+濃褐色 > noukasshoku\ ;
+材木商 > zaimokushou\ ;
+原色版 > genshokuban\ ;
+単項式 > tankoushiki\ ;
+土気色 > tsuchikeiro\ ;
+付属節 > fuzokusetsu\ ;
+一番鶏 > ichibandori\ ;
+紋章学 > monshougaku\ ;
+真只中 > mattadanaka\ ;
+出席者 > shussekisha\ ;
+門前町 > monzenmachi\ ;
+教訓的 > kyoukunteki\ ;
+貯金局 > chokinkyoku\ ;
+官僚臭 > kanryoushuu\ ;
+蹄鉄工 > teitetsukou\ ;
+神経学 > shinkeigaku\ ;
+表玄関 > omotegenkan\ ;
+出張店 > shutchouten\ ;
+旅行鞄 > ryokoukaban\ ;
+北々東 > hokuhokutou\ ;
+減塩食 > gen''enshoku\ ;
+団体客 > dantaikyaku\ ;
+心霊学 > shinreigaku\ ;
+大正琴 > taishougoto\ ;
+欠勤率 > kekkinritsu\ ;
+定着剤 > teichakuzai\ ;
+入場料 > nyuujouryou\ ;
+逐語訳 > chikugoyaku\ ;
+思考力 > shikouryoku\ ;
+乳用牛 > nyuuyougyuu\ ;
+正覚坊 > shougakubou\ ;
+緑藻類 > ryokusourui\ ;
+目撃者 > mokugekisha\ ;
+黒曜石 > kokuyouseki\ ;
+満一年 > man''ichinen\ ;
+没我的 > botsugateki\ ;
+含塵率 > ganjinritsu\ ;
+退職者 > taishokusha\ ;
+蔵屋敷 > kurayashiki\ ;
+再建築 > saikenchiku\ ;
+献身的 > kenshinteki\ ;
+妨害物 > bougaibutsu\ ;
+点眼薬 > tengan''yaku\ ;
+元首相 > motoshushou\ ;
+恐水病 > kyousuibyou\ ;
+密売品 > mitsubaihin\ ;
+石川県 > ishikawaken\ ;
+副会長 > fukukaichou\ ;
+発明者 > hatsumeisha\ ;
+創作的 > sousakuteki\ ;
+大逆罪 > taigyakuzai\ ;
+一元的 > ichigenteki\ ;
+百面相 > hyakumensou\ ;
+不侵略 > fushinryaku\ ;
+小学生 > shougakusei\ ;
+付属物 > fuzokubutsu\ ;
+勉強中 > benkyouchuu\ ;
+写真帳 > shashinchou\ ;
+一目散 > ichimokusan\ ;
+風力計 > fuuryokukei\ ;
+活用形 > katsuyoukei\ ;
+自動扉 > jidoutobira\ ;
+会社立 > kaisharitsu\ ;
+見目形 > mimekatachi\ ;
+鑑別所 > kanbetsusho\ ;
+仮契約 > karikeiyaku\ ;
+核拡散 > kakukakusan\ ;
+周辺国 > shuuhenkoku\ ;
+必然性 > hitsuzensei\ ;
+黒猩猩 > kuroshoujou\ ;
+両替商 > ryougaeshou\ ;
+脱色剤 > dasshokuzai\ ;
+右心室 > ushinshitsu\ ;
+中央口 > chuuouguchi\ ;
+真菌症 > shinkinshou\ ;
+圧力波 > atsuryokuha\ ;
+全国的 > zenkokuteki\ ;
+縄梯子 > nawabashigo\ ;
+我物顔 > wagamonogao\ ;
+食堂車 > shokudousha\ ;
+善知識 > zenchishiki\ ;
+一円札 > ichiensatsu\ ;
+視聴覚 > shichoukaku\ ;
+耐熱鋼 > tainetsukou\ ;
+革命的 > kakumeiteki\ ;
+小休止 > shoukyuushi\ ;
+好取組 > koutorikumi\ ;
+博奕宿 > bakuchiyado\ ;
+脳貧血 > nouhinketsu\ ;
+悪々戯 > waruitazura\ ;
+洗礼式 > senreishiki\ ;
+甲骨文 > koukotsubun\ ;
+日銀券 > nichiginken\ ;
+貧民窟 > hinminkutsu\ ;
+奉献物 > houkenbutsu\ ;
+実業家 > jitsugyouka\ ;
+胸算用 > munezan''you\ ;
+冬木立 > fuyukodachi\ ;
+結紮糸 > kessatsushi\ ;
+逆宣伝 > gyakusenden\ ;
+鮮紅色 > senkoushoku\ ;
+入国税 > nyuukokuzei\ ;
+拡大鏡 > kakudaikyou\ ;
+道楽者 > dourakumono\ ;
+女房役 > nyoubouyaku\ ;
+条約国 > jouyakukoku\ ;
+代替物 > daitaibutsu\ ;
+混凝土 > konkurizeto\ ;
+消毒剤 > shoudokuzai\ ;
+万能薬 > man''nouyaku\ ;
+信憑性 > shinpyousei\ ;
+列伝体 > retsudentai\ ;
+口可笑 > kuchiokashi\ ;
+実生活 > jisseikatsu\ ;
+百姓家 > hyakushouya\ ;
+一局部 > ichikyokubu\ ;
+間一髪 > kan''ippatsu\ ;
+年格好 > toshikakkou\ ;
+鎧一具 > yoroiichigu\ ;
+町人物 > chouninmono\ ;
+通訳官 > tsuuyakukan\ ;
+必要悪 > hitsuyouaku\ ;
+鉄道網 > tetsudoumou\ ;
+原産物 > gensanbutsu\ ;
+器楽曲 > kigakukyoku\ ;
+必要性 > hitsuyousei\ ;
+半面識 > hanmenshiki\ ;
+夢心地 > yumegokochi\ ;
+今週中 > konshuuchuu\ ;
+話下手 > hanashibeta\ ;
+防蝕剤 > boushokuzai\ ;
+小乗的 > shoujouteki\ ;
+立脚点 > rikkyakuten\ ;
+不信実 > fushinjitsu\ ;
+争奪戦 > soudatsusen\ ;
+商学士 > shougakushi\ ;
+上屋敷 > kamiyashiki\ ;
+若大将 > wakadaishou\ ;
+操舵室 > soudashitsu\ ;
+成人式 > seijinshiki\ ;
+新面目 > shinmenmoku\ ;
+注文服 > chuumonfuku\ ;
+上棟式 > joutoushiki\ ;
+赤銅色 > shakudouiro\ ;
+向学心 > kougakushin\ ;
+渇望者 > katsubousha\ ;
+汽缶室 > kikanshitsu\ ;
+執達吏 > shittatsuri\ ;
+乗心地 > norigokochi\ ;
+弔祭料 > chousairyou\ ;
+刺戟的 > shigekiteki\ ;
+下検分 > shitakenbun\ ;
+開催式 > kaisaishiki\ ;
+田舎娘 > inakamusume\ ;
+箱火鉢 > hakohibachi\ ;
+副首相 > fukushushou\ ;
+敵愾心 > tekigaishin\ ;
+釈空海 > shakukuukai\ ;
+北北西 > hokuhokusei\ ;
+組織票 > soshikihyou\ ;
+出身者 > shusshinsha\ ;
+仕事量 > shigotoryou\ ;
+半月形 > hangetsukei\ ;
+分子説 > bunshisetsu\ ;
+半月弁 > hangetsuben\ ;
+正答率 > seitouritsu\ ;
+季節的 > kisetsuteki\ ;
+原子説 > genshisetsu\ ;
+神嘗祭 > kan''namesai\ ;
+桧舞台 > hinokibutai\ ;
+対局者 > taikyokusha\ ;
+貝殻骨 > kaigarabone\ ;
+千両箱 > senryoubako\ ;
+純収入 > junshuunyuu\ ;
+物理的 > butsuriteki\ ;
+林産物 > rinsanbutsu\ ;
+突然死 > totsuzenshi\ ;
+証取法 > shoutorihou\ ;
+歴史的 > rekishiteki\ ;
+組織的 > soshikiteki\ ;
+贈呈式 > zouteishiki\ ;
+積載量 > sekisairyou\ ;
+自発的 > jihatsuteki\ ;
+土石流 > dosekiryuu\ ;
+市町村 > shichouson\ ;
+食塩水 > shokuensui\ ;
+潤滑油 > junkatsuyu\ ;
+流星群 > ryuuseigun\ ;
+契約金 > keiyakukin\ ;
+決議文 > ketsugibun\ ;
+蒸留酒 > jouryuushu\ ;
+針葉樹 > shin''youju\ ;
+猛勉強 > moubenkyou\ ;
+深刻化 > shinkokuka\ ;
+所得顔 > tokoroegao\ ;
+御客様 > okyakusama\ ;
+蔵書票 > zoushohyou\ ;
+人工雪 > jinkouyuki\ ;
+同腹仔 > doufukushi\ ;
+射倖心 > shakoushin\ ;
+博士号 > hakushigou\ ;
+入漁者 > nyuugyosha\ ;
+別除権 > betsujoken\ ;
+戦闘服 > sentoufuku\ ;
+養鶏業 > youkeigyou\ ;
+議決権 > giketsuken\ ;
+入園料 > nyuuenryou\ ;
+優先的 > yuusenteki\ ;
+同一視 > douitsushi\ ;
+難行道 > nangyoudou\ ;
+遺失品 > ishitsuhin\ ;
+食文化 > shokubunka\ ;
+民主国 > minshukoku\ ;
+再帰熱 > saikinetsu\ ;
+炭化物 > tankabutsu\ ;
+断片的 > danpenteki\ ;
+溺死体 > dekishitai\ ;
+海洋学 > kaiyougaku\ ;
+歯神経 > shishinkei\ ;
+反抗的 > hankouteki\ ;
+開催国 > kaisaikoku\ ;
+御両親 > goryoushin\ ;
+修正液 > shuuseieki\ ;
+厚生省 > kouseishou\ ;
+高級車 > koukyuusha\ ;
+軟文学 > nanbungaku\ ;
+試作品 > shisakuhin\ ;
+観覧料 > kanranryou\ ;
+不信任 > fushin''nin\ ;
+三脚架 > sankyakuka\ ;
+変態的 > hentaiteki\ ;
+乞高評 > koukouhyou\ ;
+毛氈苔 > mousengoke\ ;
+三尺帯 > sanjakuobi\ ;
+応急策 > oukyuusaku\ ;
+人道的 > jindouteki\ ;
+海酸漿 > umihoozuki\ ;
+承認状 > shouninjou\ ;
+随筆家 > zuihitsuka\ ;
+核融合 > kakuyuugou\ ;
+抽選券 > chuusenken\ ;
+免許証 > menkyoshou\ ;
+美容術 > biyoujutsu\ ;
+裏貸屋 > uragashiya\ ;
+防毒面 > boudokumen\ ;
+弁慶蟹 > benkeigani\ ;
+二線式 > nisenshiki\ ;
+必要事 > hitsuyouji\ ;
+発明家 > hatsumeika\ ;
+独裁者 > dokusaisha\ ;
+眺望権 > choubouken\ ;
+内通者 > naitsuusha\ ;
+中長期 > chuuchouki\ ;
+現象論 > genshouron\ ;
+魔術師 > majutsushi\ ;
+国土庁 > kokudochou\ ;
+積分法 > sekibunhou\ ;
+信号灯 > shingoutou\ ;
+半陰陽 > han''in''you\ ;
+平面鏡 > heimenkyou\ ;
+宅配便 > takuhaibin\ ;
+萎縮症 > ishukushou\ ;
+天目山 > tenmokuzan\ ;
+偏平足 > henpeisoku\ ;
+法学士 > hougakushi\ ;
+発煙筒 > hatsuentou\ ;
+側頭葉 > sokutouyou\ ;
+天皇杯 > ten''nouhai\ ;
+細胞核 > saiboukaku\ ;
+独擅場 > dokusenjou\ ;
+製鋼業 > seikougyou\ ;
+光熱費 > kounetsuhi\ ;
+愛郷心 > aikyoushin\ ;
+生産高 > seisandaka\ ;
+海水浴 > kaisuiyoku\ ;
+仮繃帯 > karihoutai\ ;
+及第者 > kyuudaisha\ ;
+米陸軍 > beirikugun\ ;
+注文品 > chuumonhin\ ;
+恒常的 > koujouteki\ ;
+人形師 > ningyoushi\ ;
+榴散弾 > ryuusandan\ ;
+発電機 > hatsudenki\ ;
+旧市街 > kyuushigai\ ;
+観覧席 > kanranseki\ ;
+実用化 > jitsuyouka\ ;
+考現学 > kougengaku\ ;
+開催中 > kaisaichuu\ ;
+産業界 > sangyoukai\ ;
+庶民劇 > shomingeki\ ;
+不仕末 > fushimatsu\ ;
+呆気者 > utsukemono\ ;
+解剖学 > kaibougaku\ ;
+仮埋葬 > karimaisou\ ;
+釣道具 > tsuridougu\ ;
+生産額 > seisangaku\ ;
+悲劇的 > higekiteki\ ;
+北氷洋 > hoppyouyou\ ;
+十二月 > juunigatsu\ ;
+同学年 > dougakunen\ ;
+現代的 > gendaiteki\ ;
+夢判断 > yumehandan\ ;
+岳友会 > gakuyuukai\ ;
+勘定尻 > kanjoujiri\ ;
+合宿所 > gasshukujo\ ;
+蠱惑的 > kowakuteki\ ;
+空間軸 > kuukanjiku\ ;
+中間層 > chuukansou\ ;
+特級酒 > tokkyuushu\ ;
+署名国 > shomeikoku\ ;
+演劇的 > engekiteki\ ;
+交戦国 > kousenkoku\ ;
+外形的 > gaikeiteki\ ;
+中間子 > chuukanshi\ ;
+整流子 > seiryuushi\ ;
+優先株 > yuusenkabu\ ;
+短兵急 > tanpeikyuu\ ;
+弁慶縞 > benkeijima\ ;
+牡丹雪 > botan''yuki\ ;
+斜格性 > shakakusei\ ;
+高角砲 > koukakuhou\ ;
+歴年齢 > rekinenrei\ ;
+無分別 > mufunbetsu\ ;
+刺戟性 > shigekisei\ ;
+通行税 > tsuukouzei\ ;
+超自然 > choushizen\ ;
+削氷機 > sakuhyouki\ ;
+契約者 > keiyakusha\ ;
+夜盗虫 > yotoumushi\ ;
+安全率 > anzenritsu\ ;
+原子症 > genshishou\ ;
+原子病 > genshibyou\ ;
+季節感 > kisetsukan\ ;
+旧勘定 > kyuukanjou\ ;
+仮調印 > karichouin\ ;
+乗車賃 > joushachin\ ;
+防虫剤 > bouchuuzai\ ;
+核戦争 > kakusensou\ ;
+発売日 > hatsubaibi\ ;
+定足数 > teisokusuu\ ;
+里神楽 > satokagura\ ;
+薩摩芋 > satsumaimo\ ;
+姦通罪 > kantsuuzai\ ;
+山林学 > sanringaku\ ;
+副議長 > fukugichou\ ;
+航空病 > koukuubyou\ ;
+漢越音 > kan''etsuon\ ;
+出入口 > deiriguchi\ ;
+仮納税 > karinouzei\ ;
+総合的 > sougouteki\ ;
+仲裁者 > chuusaisha\ ;
+出展者 > shuttensha\ ;
+活字体 > katsujitai\ ;
+肘鉄砲 > hijideppou\ ;
+対蹠地 > taisekichi\ ;
+廻漕業 > kaisougyou\ ;
+低障碍 > teishougai\ ;
+残余額 > zan''yogaku\ ;
+治療法 > chiryouhou\ ;
+機械油 > kikaiabura\ ;
+自発性 > jihatsusei\ ;
+信号手 > shingoushu\ ;
+栃木県 > tochigiken\ ;
+調査票 > chousahyou\ ;
+編年史 > hen''nenshi\ ;
+土着民 > dochakumin\ ;
+進呈本 > shinteibon\ ;
+瑞宝章 > zuihoushou\ ;
+落選者 > rakusensha\ ;
+内勘定 > uchikanjou\ ;
+奉納額 > hounougaku\ ;
+細胞学 > saibougaku\ ;
+果実店 > kajitsuten\ ;
+実時間 > jitsujikan\ ;
+入漁権 > nyuugyoken\ ;
+著作者 > chosakusha\ ;
+脱脂乳 > dasshinyuu\ ;
+祭祀料 > saishiryou\ ;
+内弁慶 > uchibenkei\ ;
+向上心 > koujoushin\ ;
+牧羊者 > bokuyousha\ ;
+参観人 > sankan''nin\ ;
+均一化 > kin''itsuka\ ;
+共同者 > kyoudousha\ ;
+明朝体 > minchoutai\ ;
+塩胡椒 > shiokoshou\ ;
+耐震性 > taishinsei\ ;
+新西蘭 > nyūjīrando\ ;
+一枚貝 > ichimaigai\ ;
+乱暴者 > ranboumono\ ;
+各一部 > kakuichibu\ ;
+陰日向 > kagehinata\ ;
+紫宸殿 > shishinden\ ;
+幽霊株 > yuureikabu\ ;
+所得者 > shotokusha\ ;
+軍事力 > gunjiryoku\ ;
+勝負事 > shoubugoto\ ;
+給水車 > kyuusuisha\ ;
+細胞壁 > saibouheki\ ;
+可逆性 > kagyakusei\ ;
+懸賞金 > kenshoukin\ ;
+暦年齢 > rekinenrei\ ;
+含嗽薬 > gansouyaku\ ;
+見学者 > kengakusha\ ;
+優先席 > yuusenseki\ ;
+少数者 > shousuusha\ ;
+共同線 > kyoudousen\ ;
+及第点 > kyuudaiten\ ;
+分類表 > bunruihyou\ ;
+近眼鏡 > kingankyou\ ;
+関数族 > kansuuzoku\ ;
+町村制 > chousonsei\ ;
+極悪人 > gokuakunin\ ;
+引受人 > hikiukenin\ ;
+編年体 > hen''nentai\ ;
+代願人 > daigan''nin\ ;
+有力馬 > yuuryokuba\ ;
+除雪車 > josetsusha\ ;
+大審院 > daishin''in\ ;
+税関長 > zeikanchou\ ;
+中間体 > chuukantai\ ;
+滋養物 > jiyoubutsu\ ;
+九工大 > kyuukoudai\ ;
+加湿器 > kashitsuki\ ;
+新訂版 > shinteiban\ ;
+十人力 > juuninriki\ ;
+下宿人 > geshukunin\ ;
+大業物 > oowazamono\ ;
+側面観 > sokumenkan\ ;
+現象界 > genshoukai\ ;
+追試験 > tsuishiken\ ;
+先天的 > sententeki\ ;
+建築家 > kenchikuka\ ;
+水量計 > suiryoukei\ ;
+親衛隊 > shin''eitai\ ;
+先天病 > sentenbyou\ ;
+繁殖期 > hanshokuki\ ;
+船幽霊 > funayuurei\ ;
+民族性 > minzokusei\ ;
+御了承 > goryoushou\ ;
+水蛇座 > mizuhebiza\ ;
+拝外的 > haigaiteki\ ;
+刺戟剤 > shigekizai\ ;
+所得税 > shotokuzei\ ;
+棉実油 > menjitsuyu\ ;
+勤続者 > kinzokusha\ ;
+天皇制 > ten''nousei\ ;
+喫煙車 > kitsuensha\ ;
+実習生 > jisshuusei\ ;
+体系的 > taikeiteki\ ;
+遊興税 > yuukyouzei\ ;
+修道士 > shuudoushi\ ;
+新教徒 > shinkyouto\ ;
+博覧会 > hakurankai\ ;
+前登録 > zentouroku\ ;
+東洋学 > touyougaku\ ;
+大将軍 > daishougun\ ;
+信号塔 > shingoutou\ ;
+原子核 > genshikaku\ ;
+大公国 > taikoukoku\ ;
+休息所 > kyuusokujo\ ;
+高障害 > koushougai\ ;
+求道者 > kyuudousha\ ;
+天守閣 > tenshukaku\ ;
+乾物屋 > kanbutsuya\ ;
+水鉄砲 > mizudeppou\ ;
+千三屋 > senmitsuya\ ;
+入港税 > nyuukouzei\ ;
+銀行業 > ginkougyou\ ;
+休泊所 > kyuuhakujo\ ;
+人工的 > jinkouteki\ ;
+聴視者 > choushisha\ ;
+両国語 > ryoukokugo\ ;
+高瀬舟 > takasebune\ ;
+組織名 > soshikimei\ ;
+同期式 > doukishiki\ ;
+大腸菌 > daichoukin\ ;
+半狂乱 > hankyouran\ ;
+贅沢品 > zeitakuhin\ ;
+一本道 > ipponmichi\ ;
+利潤率 > rijunritsu\ ;
+迫害者 > hakugaisha\ ;
+大極殿 > daigokuden\ ;
+重量感 > juuryoukan\ ;
+美学的 > bigakuteki\ ;
+写生帳 > shaseichou\ ;
+廃棄物 > haikibutsu\ ;
+電磁石 > denjishaku\ ;
+写生帖 > shaseichou\ ;
+造営物 > zoueibutsu\ ;
+技術面 > gijutsumen\ ;
+仕置者 > shiokimono\ ;
+時刻表 > jikokuhyou\ ;
+毒科学 > dokukagaku\ ;
+直行便 > chokkoubin\ ;
+手内職 > tenaishoku\ ;
+旅行先 > ryokousaki\ ;
+核弾頭 > kakudantou\ ;
+空集合 > kuushuugou\ ;
+特許料 > tokkyoryou\ ;
+主情的 > shujouteki\ ;
+更衣室 > kouishitsu\ ;
+会席膳 > kaisekizen\ ;
+千一夜 > sen''ichiya\ ;
+真田紐 > sanadahimo\ ;
+道学者 > dougakusha\ ;
+揮発性 > kihatsusei\ ;
+出資金 > shusshikin\ ;
+牧羊犬 > bokuyouken\ ;
+蒸留水 > jouryuusui\ ;
+等圧線 > touatsusen\ ;
+毒味役 > dokumiyaku\ ;
+優良店 > yuuryouten\ ;
+内芸者 > uchigeisha\ ;
+悪達者 > warudassha\ ;
+三面鏡 > sanmenkyou\ ;
+狸蕎麦 > tanukisoba\ ;
+裏書人 > uragakinin\ ;
+特大号 > tokudaigou\ ;
+組織体 > soshikitai\ ;
+現実化 > genjitsuka\ ;
+多目的 > tamokuteki\ ;
+将来性 > shouraisei\ ;
+一人腹 > hitoribara\ ;
+画一化 > kakuitsuka\ ;
+重金属 > juukinzoku\ ;
+立会人 > tachiainin\ ;
+歴史上 > rekishijou\ ;
+製鉄所 > seitetsujo\ ;
+一人者 > hitorimono\ ;
+遮断壁 > shadanpeki\ ;
+特売場 > tokubaijou\ ;
+告知板 > kokuchiban\ ;
+沖積期 > chuusekiki\ ;
+仮記入 > karikinyuu\ ;
+修道会 > shuudoukai\ ;
+桟梯子 > sanbashigo\ ;
+番号札 > bangoufuda\ ;
+少数点 > shousuuten\ ;
+山猫座 > yamanekoza\ ;
+寝台券 > shindaiken\ ;
+水銀柱 > suiginchuu\ ;
+赤海亀 > akaumigame\ ;
+骨相学 > kossougaku\ ;
+大臼歯 > daikyuushi\ ;
+民族史 > minzokushi\ ;
+五稜郭 > goryoukaku\ ;
+扁平足 > henpeisoku\ ;
+契約書 > keiyakusho\ ;
+影法師 > kageboushi\ ;
+金剛石 > kongouseki\ ;
+特許庁 > tokkyochou\ ;
+特売品 > tokubaihin\ ;
+下請負 > shitaukeoi\ ;
+収穫期 > shuukakuki\ ;
+陸戦隊 > rikusentai\ ;
+給水管 > kyuusuikan\ ;
+神秘的 > shinpiteki\ ;
+重量噸 > juuryouton\ ;
+収穫時 > shuukakuji\ ;
+高圧縮 > kouasshuku\ ;
+著作権 > chosakuken\ ;
+代執行 > daishikkou\ ;
+限定的 > genteiteki\ ;
+高圧線 > kouatsusen\ ;
+仮採用 > karisaiyou\ ;
+改革者 > kaikakusha\ ;
+地下鉄 > chikatetsu\ ;
+尊王党 > son''noutou\ ;
+喫煙者 > kitsuensha\ ;
+土俵際 > dohyougiwa\ ;
+大山猫 > ooyamaneko\ ;
+航空学 > koukuugaku\ ;
+原材料 > genzairyou\ ;
+出産数 > shussansuu\ ;
+欄参照 > ransanshou\ ;
+出生数 > shusseisuu\ ;
+守備率 > shubiritsu\ ;
+文芸学 > bungeigaku\ ;
+紅冠鳥 > koukanchou\ ;
+初場所 > hatsubasho\ ;
+乳状液 > nyuujoueki\ ;
+単坐式 > tanzashiki\ ;
+在留民 > zairyuumin\ ;
+美顔術 > biganjutsu\ ;
+煮沸器 > shafutsuki\ ;
+優良品 > yuuryouhin\ ;
+戦術家 > senjutsuka\ ;
+仕事師 > shigotoshi\ ;
+無生物 > museibutsu\ ;
+雑文家 > zatsubunka\ ;
+同調者 > douchousha\ ;
+予約席 > yoyakuseki\ ;
+金石文 > kinsekibun\ ;
+練習船 > renshuusen\ ;
+測深機 > sokushinki\ ;
+発見料 > hakkenryou\ ;
+衒学者 > gengakusha\ ;
+小数点 > shousuuten\ ;
+引出物 > hikidemono\ ;
+開架式 > kaikashiki\ ;
+包含的 > houganteki\ ;
+合奏調 > gassouchou\ ;
+共和国 > kyouwakoku\ ;
+審判員 > shinpan''in\ ;
+清朝体 > seichoutai\ ;
+表日本 > omotenihon\ ;
+現代劇 > gendaigeki\ ;
+即効薬 > sokkouyaku\ ;
+日運動 > nichiundou\ ;
+職階制 > shokkaisei\ ;
+前車軸 > zenshajiku\ ;
+上昇線 > joushousen\ ;
+機密性 > kimitsusei\ ;
+明細表 > meisaihyou\ ;
+修辞学 > shuujigaku\ ;
+名誉職 > meiyoshoku\ ;
+四天王 > shiten''nou\ ;
+人相学 > ninsougaku\ ;
+授業料 > jugyouryou\ ;
+鉛中毒 > enchuudoku\ ;
+治療代 > chiryoudai\ ;
+帯黄色 > taioushoku\ ;
+起工式 > kikoushiki\ ;
+取得者 > shutokusha\ ;
+悪平等 > akubyoudou\ ;
+朱子学 > shushigaku\ ;
+軽金属 > keikinzoku\ ;
+健脚家 > kenkyakuka\ ;
+先覚者 > senkakusha\ ;
+不整脈 > fuseimyaku\ ;
+仲間内 > nakamauchi\ ;
+将来像 > shouraizou\ ;
+低教会 > teikyoukai\ ;
+性衝動 > seishoudou\ ;
+紙芝居 > kamishibai\ ;
+作成者 > sakuseisha\ ;
+回春剤 > kaishunzai\ ;
+消費量 > shouhiryou\ ;
+並製品 > namiseihin\ ;
+専有権 > sen''yuuken\ ;
+乗馬靴 > joubagutsu\ ;
+出資者 > shusshisha\ ;
+化石学 > kasekigaku\ ;
+聴診器 > choushinki\ ;
+猩猩蠅 > shoujoubae\ ;
+乱数表 > ransuuhyou\ ;
+埋立地 > umetatechi\ ;
+共同性 > kyoudousei\ ;
+熟練者 > jukurensha\ ;
+東北東 > touhokutou\ ;
+生体膜 > seitaimaku\ ;
+民衆駅 > minshuueki\ ;
+宇宙食 > uchuushoku\ ;
+日光浴 > nikkouyoku\ ;
+代数学 > daisuugaku\ ;
+能役者 > nouyakusha\ ;
+沖積土 > chuusekido\ ;
+引力圏 > inryokuken\ ;
+中折帽 > nakaorebou\ ;
+非活動 > hikatsudou\ ;
+不始末 > fushimatsu\ ;
+有功章 > yuukoushou\ ;
+投票者 > touhyousha\ ;
+攻撃隊 > kougekitai\ ;
+報告者 > houkokusha\ ;
+発表者 > happyousha\ ;
+惣管領 > soukanryou\ ;
+選択肢 > sentakushi\ ;
+技術者 > gijutsusha\ ;
+進歩的 > shinpoteki\ ;
+埋蔵量 > maizouryou\ ;
+仕事台 > shigotodai\ ;
+性成熟 > seiseijuku\ ;
+永年間 > naganenkan\ ;
+背教者 > haikyousha\ ;
+手工業 > shukougyou\ ;
+申請者 > shinseisha\ ;
+演出家 > enshutsuka\ ;
+一安心 > hitoanshin\ ;
+行楽地 > kourakuchi\ ;
+食管法 > shokkanhou\ ;
+観測船 > kansokusen\ ;
+競合者 > kyougousha\ ;
+健脳剤 > ken''nouzai\ ;
+金剛杖 > kongoudzue\ ;
+謝肉祭 > shanikusai\ ;
+複写紙 > fukushashi\ ;
+週刊誌 > shuukanshi\ ;
+収税所 > shuuzeisho\ ;
+通行人 > tsuukounin\ ;
+鑑定料 > kanteiryou\ ;
+同一人 > douitsunin\ ;
+高潮線 > kouchousen\ ;
+浸透性 > shintousei\ ;
+血色素 > kesshikiso\ ;
+脳震盪 > noushintou\ ;
+賃貸人 > chintainin\ ;
+出生地 > shusseichi\ ;
+練習生 > renshuusei\ ;
+座席表 > zasekihyou\ ;
+観測者 > kansokusha\ ;
+地獄耳 > jigokumimi\ ;
+高級品 > koukyuuhin\ ;
+遠日点 > enjitsuten\ ;
+漢学者 > kangakusha\ ;
+牧場鳥 > makibatori\ ;
+死刑囚 > shikeishuu\ ;
+氷砂糖 > koorizatou\ ;
+共著者 > kyouchosha\ ;
+骨髄炎 > kotsuzuien\ ;
+放牧地 > houbokuchi\ ;
+白血球 > hakkekkyuu\ ;
+溶岩流 > youganryuu\ ;
+死傷者 > shishousha\ ;
+式部官 > shikibukan\ ;
+脆弱性 > zeijakusei\ ;
+給水栓 > kyuusuisen\ ;
+観測網 > kansokumou\ ;
+急行券 > kyuukouken\ ;
+御鞭撻 > gobentatsu\ ;
+緑十字 > ryokujuuji\ ;
+流線形 > ryuusenkei\ ;
+原始的 > genshiteki\ ;
+牧羊地 > bokuyouchi\ ;
+埼玉県 > saitamaken\ ;
+攻撃軍 > kougekigun\ ;
+敵艦隊 > tekikantai\ ;
+食器棚 > shokkidana\ ;
+伝送先 > densousaki\ ;
+稲荷鮨 > inarizushi\ ;
+復調器 > fukuchouki\ ;
+大病人 > daibyounin\ ;
+共労者 > kyourousha\ ;
+病原菌 > byougenkin\ ;
+朝鮮人 > chousenjin\ ;
+優越権 > yuuetsuken\ ;
+一人旅 > hitoritabi\ ;
+文学論 > bungakuron\ ;
+肉感的 > nikkanteki\ ;
+急行便 > kyuukoubin\ ;
+甲乙丙 > kouotsuhei\ ;
+中波長 > chuuhachou\ ;
+無職者 > mushokusha\ ;
+収税官 > shuuzeikan\ ;
+学部長 > gakubuchou\ ;
+超格子 > choukoushi\ ;
+闊葉樹 > katsuyouju\ ;
+共鳴者 > kyoumeisha\ ;
+無体物 > mutaibutsu\ ;
+浮気女 > uwakion''na\ ;
+登竜門 > touryuumon\ ;
+一義的 > ichigiteki\ ;
+第一条 > daiichijou\ ;
+内用薬 > naiyouyaku\ ;
+座標軸 > zahyoujiku\ ;
+策源地 > sakugenchi\ ;
+優生学 > yuuseigaku\ ;
+分隊長 > buntaichou\ ;
+前借金 > zenshakkin\ ;
+仲裁人 > chuusainin\ ;
+赤道祭 > sekidousai\ ;
+東北大 > touhokudai\ ;
+実証論 > jisshouron\ ;
+不燃物 > funenbutsu\ ;
+全強風 > zenkyoufuu\ ;
+小天地 > shoutenchi\ ;
+酢酸塩 > sakusan''en\ ;
+超音速 > chouonsoku\ ;
+密告者 > mikkokusha\ ;
+分類学 > bunruigaku\ ;
+彫金師 > choukinshi\ ;
+共通語 > kyoutsuugo\ ;
+神秘学 > shinhigaku\ ;
+一本橋 > ipponbashi\ ;
+第五列 > daigoretsu\ ;
+紳士用 > shinshiyou\ ;
+一枚岩 > ichimaiiwa\ ;
+流線型 > ryuusenkei\ ;
+一本槍 > ippon''yari\ ;
+困窮者 > konkyuusha\ ;
+冬支度 > fuyujitaku\ ;
+共同体 > kyoudoutai\ ;
+少数党 > shousuutou\ ;
+全民衆 > zenminshuu\ ;
+相反的 > souhanteki\ ;
+浮遊物 > fuyuubutsu\ ;
+労働省 > roudoushou\ ;
+孫息子 > magomusuko\ ;
+労働相 > roudoushou\ ;
+供養塚 > kuyoudzuka\ ;
+駆逐艦 > kuchikukan\ ;
+素人目 > shiroutome\ ;
+週刊紙 > shuukanshi\ ;
+精肉店 > seinikuten\ ;
+双殻類 > soukakurui\ ;
+奨励金 > shoureikin\ ;
+不精髭 > bushouhige\ ;
+能動的 > noudouteki\ ;
+約半分 > yakuhanbun\ ;
+網漁業 > amigyogyou\ ;
+授業中 > jugyouchuu\ ;
+岩石圏 > gansekiken\ ;
+役目柄 > yakumegara\ ;
+一本松 > ipponmatsu\ ;
+塩煎餅 > shiosenbei\ ;
+不如帰 > hototogisu\ ;
+南々西 > nan''nansei\ ;
+在学生 > zaigakusei\ ;
+剃刀砥 > kamisorido\ ;
+多発性 > tahatsusei\ ;
+優越感 > yuuetsukan\ ;
+特級品 > tokkyuuhin\ ;
+三角錐 > sankakusui\ ;
+必治薬 > hitchiyaku\ ;
+単振動 > tanshindou\ ;
+主張者 > shuchousha\ ;
+排他律 > haitaritsu\ ;
+優越性 > yuuetsusei\ ;
+形態学 > keitaigaku\ ;
+工業界 > kougyoukai\ ;
+工業用 > kougyouyou\ ;
+積乱雲 > sekiran''un\ ;
+拝観料 > haikanryou\ ;
+領海線 > ryoukaisen\ ;
+角分散 > kakubunsan\ ;
+不見識 > fukenshiki\ ;
+大学生 > daigakusei\ ;
+最北端 > saihokutan\ ;
+表面上 > hyoumenjou\ ;
+濃硫酸 > nouryuusan\ ;
+水化物 > suikabutsu\ ;
+超伝導 > choudendou\ ;
+文学者 > bungakusha\ ;
+粗目雪 > zarameyuki\ ;
+史学者 > shigakusha\ ;
+国民軍 > kokumingun\ ;
+咀嚼筋 > soshakukin\ ;
+住所録 > juushoroku\ ;
+駐停車 > chuuteisha\ ;
+植樹祭 > shokujusai\ ;
+角速度 > kakusokudo\ ;
+大赤斑 > daisekihan\ ;
+地中海 > chichuukai\ ;
+商売人 > shoubainin\ ;
+受取人 > uketorinin\ ;
+見本市 > mihon''ichi\ ;
+投票権 > touhyouken\ ;
+探照灯 > tanshoutou\ ;
+全勝軍 > zenshougun\ ;
+給水塔 > kyuusuitou\ ;
+潮干狩 > shiohigari\ ;
+牡羊座 > ohitsujiza\ ;
+収税人 > shuuzeinin\ ;
+選択権 > sentakuken\ ;
+採点表 > saitenhyou\ ;
+工工四 > kunkunshii\ ;
+記録的 > kirokuteki\ ;
+豆板銀 > mameitagin\ ;
+絶対量 > zettairyou\ ;
+東北人 > touhokujin\ ;
+海軍省 > kaigunshou\ ;
+金剛力 > kongouriki\ ;
+真暗闇 > makurayami\ ;
+検疫官 > ken''ekikan\ ;
+対象外 > taishougai\ ;
+新潟県 > niigataken\ ;
+闇再販 > yamisaihan\ ;
+動物愛 > doubutsuai\ ;
+使用量 > shiyouryou\ ;
+藁半紙 > warabanshi\ ;
+新開地 > shinkaichi\ ;
+非常識 > hijoushiki\ ;
+一面観 > ichimenkan\ ;
+管絃楽 > kangengaku\ ;
+最恵国 > saikeikoku\ ;
+慢性的 > manseiteki\ ;
+推計学 > suikeigaku\ ;
+副領事 > fukuryouji\ ;
+印刷者 > insatsusha\ ;
+耐火力 > taikaryoku\ ;
+友禅染 > yuuzenzome\ ;
+報告書 > houkokusho\ ;
+骨格筋 > kokkakukin\ ;
+藻塩草 > moshiogusa\ ;
+集大成 > shuutaisei\ ;
+慢性病 > manseibyou\ ;
+宣言的 > sengenteki\ ;
+六重奏 > rokujuusou\ ;
+音響学 > onkyougaku\ ;
+工業港 > kougyoukou\ ;
+総辞職 > soujishoku\ ;
+軍団長 > gundanchou\ ;
+年長者 > nenchousha\ ;
+総務局 > soumukyoku\ ;
+面相筆 > mensoufude\ ;
+散歩道 > sanpomichi\ ;
+示圧計 > shiatsukei\ ;
+世紀末 > seikimatsu\ ;
+第三国 > daisangoku\ ;
+投票数 > touhyousuu\ ;
+何箇月 > nankagetsu\ ;
+申請書 > shinseisho\ ;
+腹膜炎 > fukumakuen\ ;
+温泉町 > onsenmachi\ ;
+主動的 > shudouteki\ ;
+不文律 > fubunritsu\ ;
+弁当箱 > bentoubako\ ;
+天体学 > tentaigaku\ ;
+印刷紙 > insatsushi\ ;
+低成長 > teiseichou\ ;
+俯仰角 > fugyoukaku\ ;
+放熱器 > hounetsuki\ ;
+純良品 > junryouhin\ ;
+備後表 > bingoomote\ ;
+暗殺者 > ansatsusha\ ;
+平教員 > hirakyouin\ ;
+不覚者 > fukakumono\ ;
+成長点 > seichouten\ ;
+東横線 > touyokosen\ ;
+救済者 > kyuusaisha\ ;
+知能的 > chinouteki\ ;
+幻覚剤 > genkakuzai\ ;
+果物屋 > kudamonoya\ ;
+人格者 > jinkakusha\ ;
+金属間 > kinzokukan\ ;
+花柳病 > karyuubyou\ ;
+老大国 > routaikoku\ ;
+代言人 > daigen''nin\ ;
+心得顔 > kokoroegao\ ;
+代表者 > daihyousha\ ;
+主知的 > shuchiteki\ ;
+文学界 > bungakukai\ ;
+切断機 > setsudanki\ ;
+一時的 > ichijiteki\ ;
+交通網 > koutsuumou\ ;
+地球人 > chikyuujin\ ;
+地球上 > chikyuujou\ ;
+逆提案 > gyakuteian\ ;
+対数表 > taisuuhyou\ ;
+敗戦国 > haisenkoku\ ;
+印刷社 > insatsusha\ ;
+新製品 > shinseihin\ ;
+極距離 > kyokukyori\ ;
+熟練工 > jukurenkou\ ;
+色素体 > shikisotai\ ;
+丸砥石 > marutoishi\ ;
+同族会 > douzokukai\ ;
+経済的 > keizaiteki\ ;
+牛乳屋 > gyuunyuuya\ ;
+練習場 > renshuujou\ ;
+特製品 > tokuseihin\ ;
+不誠実 > fuseijitsu\ ;
+従来型 > juuraigata\ ;
+対象体 > taishoutai\ ;
+粉石鹸 > konasekken\ ;
+夜尿症 > yanyoushou\ ;
+超文面 > choubunmen\ ;
+動物園 > doubutsuen\ ;
+総監督 > soukantoku\ ;
+実際的 > jissaiteki\ ;
+頼信紙 > raishinshi\ ;
+宣教師 > senkyoushi\ ;
+責任者 > sekininsha\ ;
+関節炎 > kansetsuen\ ;
+共鳴板 > kyoumeiban\ ;
+宗主国 > soushukoku\ ;
+旧軍人 > kyuugunjin\ ;
+半濁点 > handakuten\ ;
+半長形 > hanchoukei\ ;
+中水道 > chuusuidou\ ;
+選手村 > senshumura\ ;
+印刷用 > insatsuyou\ ;
+霊柩車 > reikyuusha\ ;
+海岸端 > kaiganbata\ ;
+外用薬 > gaiyouyaku\ ;
+紫斑病 > shihanbyou\ ;
+蛸配当 > takohaitou\ ;
+高所病 > koushobyou\ ;
+大小便 > daishouben\ ;
+米国民 > beikokumin\ ;
+吸水性 > kyuusuisei\ ;
+念五日 > nengonichi\ ;
+出来心 > dekigokoro\ ;
+中心部 > chuushinbu\ ;
+生体学 > seitaigaku\ ;
+肯定的 > kouteiteki\ ;
+選択子 > sentakushi\ ;
+動物化 > doubutsuka\ ;
+水平翼 > suiheiyoku\ ;
+貿易業 > bouekigyou\ ;
+腰布団 > koshibuton\ ;
+爆撃機 > bakugekiki\ ;
+言行録 > genkouroku\ ;
+団地族 > danchizoku\ ;
+乱調子 > ranchoushi\ ;
+備蓄米 > bichikumai\ ;
+大乗的 > daijouteki\ ;
+無能力 > munouryoku\ ;
+酪農場 > rakunoujou\ ;
+貨客船 > kakyakusen\ ;
+感染症 > kansenshou\ ;
+真理教 > shinrikyou\ ;
+慈善鍋 > jizen''nabe\ ;
+技術士 > gijutsushi\ ;
+哨戒艇 > shoukaitei\ ;
+酒石酸 > shusekisan\ ;
+敷布団 > shikibuton\ ;
+反則金 > hansokukin\ ;
+有機物 > yuukibutsu\ ;
+抽象画 > chuushouga\ ;
+租借権 > soshakuken\ ;
+内申書 > naishinsho\ ;
+同級生 > doukyuusei\ ;
+向米的 > koubeiteki\ ;
+親衛兵 > shin''eihei\ ;
+仏文科 > futsubunka\ ;
+取引所 > torihikijo\ ;
+電車賃 > denshachin\ ;
+集散地 > shuusanchi\ ;
+綺想曲 > kisoukyoku\ ;
+上調子 > uwachoushi\ ;
+内臓弓 > naizoukyuu\ ;
+半開国 > hankaikoku\ ;
+製造業 > seizougyou\ ;
+追撃機 > tsuigekiki\ ;
+三角筋 > sankakukin\ ;
+等深線 > toushinsen\ ;
+駆動力 > kudouryoku\ ;
+重工業 > juukougyou\ ;
+麻織物 > asaorimono\ ;
+日射病 > nisshabyou\ ;
+熱血児 > nekketsuji\ ;
+金属製 > kinzokusei\ ;
+本契約 > honkeiyaku\ ;
+黄褐色 > oukasshoku\ ;
+購入者 > kounyuusha\ ;
+不精者 > bushoumono\ ;
+主応力 > shuouryoku\ ;
+埼玉勢 > saitamazei\ ;
+重傷者 > juushousha\ ;
+傷害罪 > shougaizai\ ;
+作戦上 > sakusenjou\ ;
+潜水病 > sensuibyou\ ;
+中性紙 > chuuseishi\ ;
+診療所 > shinryoujo\ ;
+日本食 > nihonshoku\ ;
+稼働率 > kadouritsu\ ;
+連合国 > rengoukoku\ ;
+公民学 > koumingaku\ ;
+研究者 > kenkyuusha\ ;
+静水圧 > seisuiatsu\ ;
+登録者 > tourokusha\ ;
+興行界 > kougyoukai\ ;
+準決勝 > junkesshou\ ;
+天王星 > ten''nousei\ ;
+梯子車 > hashigosha\ ;
+三親等 > sanshintou\ ;
+不純物 > fujunbutsu\ ;
+上女中 > kamijochuu\ ;
+鳥取県 > tottoriken\ ;
+重症者 > juushousha\ ;
+貧乏鬮 > binboukuji\ ;
+唯一度 > tadaichido\ ;
+好色家 > koushokuka\ ;
+毛皮商 > kegawashou\ ;
+比較級 > hikakukyuu\ ;
+現在高 > genzaidaka\ ;
+陸海空 > rikukaikuu\ ;
+双眼鏡 > sougankyou\ ;
+駐輪場 > chuurinjou\ ;
+白鉄鉱 > hakutekkou\ ;
+大宮人 > oomiyabito\ ;
+雪合戦 > yukigassen\ ;
+片栗粉 > katakuriko\ ;
+発表会 > happyoukai\ ;
+吐瀉物 > toshabutsu\ ;
+裏表紙 > urabyoushi\ ;
+切断図 > setsudanzu\ ;
+思惑買 > omowakugai\ ;
+観念論 > kan''nenron\ ;
+玉音盤 > gyokuonban\ ;
+反動的 > handouteki\ ;
+救命艇 > kyuumeitei\ ;
+絶対的 > zettaiteki\ ;
+測量図 > sokuryouzu\ ;
+三大国 > sandaikoku\ ;
+地方病 > chihoubyou\ ;
+出版者 > shuppansha\ ;
+供給路 > kyoukyuuro\ ;
+竜涎香 > ryuuzenkou\ ;
+射爆場 > shabakujou\ ;
+測量器 > sokuryouki\ ;
+土俗学 > dozokugaku\ ;
+美女桜 > bijozakura\ ;
+南々東 > nan''nantou\ ;
+人格権 > jinkakuken\ ;
+分解的 > bunkaiteki\ ;
+他覚的 > takakuteki\ ;
+天主教 > tenshukyou\ ;
+雪化粧 > yukigeshou\ ;
+形式美 > keishikibi\ ;
+電通大 > dentsuudai\ ;
+研究社 > kenkyuusha\ ;
+三角点 > sankakuten\ ;
+伝書鳩 > denshobato\ ;
+他覚症 > takakushou\ ;
+消耗戦 > shoumousen\ ;
+仕訳書 > shiwakesho\ ;
+遊休地 > yuukyuuchi\ ;
+反応性 > han''nousei\ ;
+暴走族 > bousouzoku\ ;
+紀元節 > kigensetsu\ ;
+温泉宿 > onsen''yado\ ;
+唐辛子 > tougarashi\ ;
+日中韓 > nitchuukan\ ;
+理解力 > rikairyoku\ ;
+公共財 > koukyouzai\ ;
+検定料 > kenteiryou\ ;
+市長選 > shichousen\ ;
+安普請 > yasubushin\ ;
+水道料 > suidouryou\ ;
+両成敗 > ryouseibai\ ;
+初節句 > hatsuzekku\ ;
+比較的 > hikakuteki\ ;
+国連軍 > kokurengun\ ;
+上級生 > joukyuusei\ ;
+無頓着 > mutonchaku\ ;
+学友会 > gakuyuukai\ ;
+再来月 > saraigetsu\ ;
+後日談 > gojitsudan\ ;
+備荒食 > bikoushoku\ ;
+不行跡 > fugyouseki\ ;
+斜陽族 > shayouzoku\ ;
+青化物 > seikabutsu\ ;
+天王山 > ten''nouzan\ ;
+厄介者 > yakkaimono\ ;
+勇猛心 > yuumoushin\ ;
+武力戦 > buryokusen\ ;
+三角法 > sankakuhou\ ;
+宗教画 > shuukyouga\ ;
+研究生 > kenkyuusei\ ;
+出奔者 > shupponsha\ ;
+収益金 > shuuekikin\ ;
+氷菓子 > koorigashi\ ;
+軽工業 > keikougyou\ ;
+記憶力 > kiokuryoku\ ;
+即興詩 > sokkyoushi\ ;
+古生物 > koseibutsu\ ;
+熱愛者 > netsuaisha\ ;
+天頂点 > tenchouten\ ;
+無資力 > mushiryoku\ ;
+興行権 > kougyouken\ ;
+松根油 > shoukon''yu\ ;
+百済楽 > kudaragaku\ ;
+在任中 > zaininchuu\ ;
+滞在中 > taizaichuu\ ;
+出版社 > shuppansha\ ;
+製茶業 > seichagyou\ ;
+貿易商 > bouekishou\ ;
+国務省 > kokumushou\ ;
+中南米 > chuunanbei\ ;
+桐一葉 > kirihitoha\ ;
+初節供 > hatsuzekku\ ;
+入選者 > nyuusensha\ ;
+縦社会 > tateshakai\ ;
+操縦席 > soujuuseki\ ;
+周旋屋 > shuusen''ya\ ;
+文学士 > bungakushi\ ;
+工学者 > kougakusha\ ;
+古伝説 > kodensetsu\ ;
+印刷工 > insatsukou\ ;
+潜水服 > sensuifuku\ ;
+大主教 > daishukyou\ ;
+上場株 > joujoukabu\ ;
+類型的 > ruikeiteki\ ;
+吹出物 > fukidemono\ ;
+抗真菌 > koushinkin\ ;
+難波潟 > naniwagata\ ;
+租借地 > soshakuchi\ ;
+加農砲 > kan''nonhou\ ;
+造石税 > zoukokuzei\ ;
+駐車場 > chuushajou\ ;
+試算表 > shisanhyou\ ;
+経済学 > keizaigaku\ ;
+急勾配 > kyuukoubai\ ;
+儀式用 > gishikiyou\ ;
+血栓症 > kessenshou\ ;
+伊達姿 > datesugata\ ;
+病原体 > byougentai\ ;
+八分目 > hachibunme\ ;
+解析性 > kaisekisei\ ;
+客観性 > kyakkansei\ ;
+超媒体 > choubaitai\ ;
+水芭蕉 > mizubashou\ ;
+長期的 > choukiteki\ ;
+眼鏡蛇 > meganehebi\ ;
+出版界 > shuppankai\ ;
+弁償金 > benshoukin\ ;
+排外的 > haigaiteki\ ;
+未熟者 > mijukumono\ ;
+分散型 > bunsangata\ ;
+短編集 > tanpenshuu\ ;
+淡路島 > awajishima\ ;
+増殖炉 > zoushokuro\ ;
+下見板 > shitamiita\ ;
+分教場 > bunkyoujou\ ;
+史料館 > shiryoukan\ ;
+血小板 > kesshouban\ ;
+金色堂 > konjikidou\ ;
+漢方薬 > kanpouyaku\ ;
+翻訳家 > hon''yakuka\ ;
+平等観 > byoudoukan\ ;
+検査官 > kenshoukan\ ;
+文学史 > bungakushi\ ;
+変分学 > henbungaku\ ;
+前栽物 > senzaimono\ ;
+強壮剤 > kyousouzai\ ;
+海産業 > kaisangyou\ ;
+献納者 > ken''nousha\ ;
+六連星 > rokurensei\ ;
+勅願寺 > chokuganji\ ;
+伝染病 > densenbyou\ ;
+中華鍋 > chuukanabe\ ;
+天上川 > tenjougawa\ ;
+洋芥子 > yougarashi\ ;
+皆勤賞 > kaikinshou\ ;
+金属片 > kinzokuhen\ ;
+奇術師 > kijutsushi\ ;
+増加率 > zoukaritsu\ ;
+標準型 > hyoujunkei\ ;
+金赤色 > kin''akairo\ ;
+責任感 > sekininkan\ ;
+淋巴節 > rinpasetsu\ ;
+供物台 > kumotsudai\ ;
+米国人 > beikokujin\ ;
+等温式 > touonshiki\ ;
+前任者 > zen''ninsha\ ;
+製造元 > seizoumoto\ ;
+情報量 > jouhouryou\ ;
+消耗品 > shoumouhin\ ;
+両手利 > ryoutekiki\ ;
+蓄電器 > chikudenki\ ;
+対角線 > taikakusen\ ;
+一晩中 > hitobanjuu\ ;
+暗剣殺 > ankensatsu\ ;
+頭足類 > tousokurui\ ;
+在東京 > zaitoukyou\ ;
+棄言葉 > sutekotoba\ ;
+免税表 > menzeihyou\ ;
+国民性 > kokuminsei\ ;
+彫刻家 > choukokuka\ ;
+読書界 > dokushokai\ ;
+使用料 > shiyouryou\ ;
+居留民 > kyoryuumin\ ;
+旋光角 > senkoukaku\ ;
+小間使 > komadzukai\ ;
+角膜炎 > kakumakuen\ ;
+鰭脚類 > kikyakurui\ ;
+鑑識家 > kanshikika\ ;
+興行師 > kougyoushi\ ;
+嬶天下 > kakaadenka\ ;
+固形物 > kokeibutsu\ ;
+紡績糸 > bousekiito\ ;
+吝嗇家 > rinshokuka\ ;
+為替尻 > kawasejiri\ ;
+読者欄 > dokusharan\ ;
+厄介物 > yakkaimono\ ;
+出世作 > shussesaku\ ;
+動摩擦 > doumasatsu\ ;
+部分食 > bubunshoku\ ;
+出版法 > shuppanhou\ ;
+課題曲 > kadaikyoku\ ;
+殺虫剤 > satchuuzai\ ;
+薄雪草 > usuyukisou\ ;
+人体学 > jintaigaku\ ;
+平城京 > heijoukyou\ ;
+三角帽 > sankakubou\ ;
+衝撃波 > shougekiha\ ;
+三角巾 > sankakukin\ ;
+郵送料 > yuusouryou\ ;
+石炭酸 > sekitansan\ ;
+征服者 > seifukusha\ ;
+強行軍 > kyoukougun\ ;
+代表団 > daihyoudan\ ;
+脚本家 > kyakuhonka\ ;
+菓子鉢 > kashibachi\ ;
+直円錐 > chokuensui\ ;
+出版権 > shuppanken\ ;
+再服役 > saifukueki\ ;
+生放送 > namahousou\ ;
+計算尺 > keisanjaku\ ;
+通勤者 > tsuukinsha\ ;
+一塁線 > ichiruisen\ ;
+液量計 > ekiryoukei\ ;
+切支丹 > kirishitan\ ;
+闇市場 > yamishijou\ ;
+障害者 > shougaisha\ ;
+貴族的 > kizokuteki\ ;
+印刷人 > insatsunin\ ;
+海賊船 > kaizokusen\ ;
+南南西 > nan''nansei\ ;
+脳振盪 > noushintou\ ;
+抽象化 > chuushouka\ ;
+講習会 > koushuukai\ ;
+愛玩物 > aiganbutsu\ ;
+麻雀屋 > mazejan''ya\ ;
+伝染毒 > densendoku\ ;
+他国者 > takokumono\ ;
+重層的 > juusouteki\ ;
+五重塔 > gojuunotou\ ;
+下級審 > kakyuushin\ ;
+低所得 > teishotoku\ ;
+専門章 > senmonshou\ ;
+鋳造所 > chuuzousho\ ;
+短時日 > tanjijitsu\ ;
+休業日 > kyuugyoubi\ ;
+先端的 > sentanteki\ ;
+喧嘩腰 > kenkagoshi\ ;
+草双紙 > kusazoushi\ ;
+空想的 > kuusouteki\ ;
+雪達磨 > yukidaruma\ ;
+内交渉 > naikoushou\ ;
+広告社 > koukokusha\ ;
+貨物駅 > kamotsueki\ ;
+貧乏籤 > binbouguji\ ;
+対話式 > taiwashiki\ ;
+共産軍 > kyousangun\ ;
+不承諾 > fushoudaku\ ;
+求人誌 > kyuujinshi\ ;
+鞭毛虫 > benmouchuu\ ;
+簡単服 > kantanfuku\ ;
+中性子 > chuuseishi\ ;
+黒穂病 > kurohobyou\ ;
+分担額 > buntangaku\ ;
+太陽虫 > taiyouchuu\ ;
+暫定的 > zanteiteki\ ;
+代表例 > daihyourei\ ;
+同国民 > doukokumin\ ;
+記念物 > kinenbutsu\ ;
+旧体制 > kyuutaisei\ ;
+南洋材 > nan''youzai\ ;
+非常口 > hijouguchi\ ;
+上表紙 > uwabyoushi\ ;
+面白味 > omoshiromi\ ;
+保存食 > hozonshoku\ ;
+半意識 > han''ishiki\ ;
+本調子 > honchoushi\ ;
+織女星 > shokujosei\ ;
+専門的 > senmonteki\ ;
+報償金 > houshoukin\ ;
+擲弾筒 > tekidantou\ ;
+貧乏神 > binbougami\ ;
+回漕業 > kaisougyou\ ;
+大統領 > daitouryou\ ;
+量子論 > ryoushiron\ ;
+中力粉 > chuurikiko\ ;
+眼鏡猿 > meganezaru\ ;
+業界紙 > gyoukaishi\ ;
+非公式 > hikoushiki\ ;
+水兵服 > suiheifuku\ ;
+貯木場 > chobokujou\ ;
+梯子段 > hashigodan\ ;
+当歳駒 > tousaigoma\ ;
+宗教家 > shuukyouka\ ;
+研究官 > kenkyuukan\ ;
+殉教者 > junkyousha\ ;
+殉難者 > jun''nansha\ ;
+壁訴訟 > kabezoshou\ ;
+玉整理 > gyokuseiri\ ;
+茨城県 > ibarakiken\ ;
+屈曲部 > kukkyokubu\ ;
+褒奨金 > houshoukin\ ;
+消防隊 > shouboutai\ ;
+朧昆布 > oborokonbu\ ;
+看病人 > kanbyounin\ ;
+花電車 > hanadensha\ ;
+地文学 > chimongaku\ ;
+口供書 > koukyousho\ ;
+金属性 > kinzokusei\ ;
+草野球 > kusayakyuu\ ;
+検事局 > kenjikyoku\ ;
+六辺形 > rokuhenkei\ ;
+読者層 > dokushasou\ ;
+催促状 > saisokujou\ ;
+傾斜角 > keishakaku\ ;
+収監状 > shuukanjou\ ;
+地震学 > jishingaku\ ;
+在世中 > zaiseichuu\ ;
+奥座敷 > okuzashiki\ ;
+美術館 > bijutsukan\ ;
+許容量 > kyoyouryou\ ;
+射撃場 > shagekijou\ ;
+後天的 > koutenteki\ ;
+駐屯地 > chuutonchi\ ;
+脳溢血 > nouikketsu\ ;
+存命中 > zonmeichuu\ ;
+系列化 > keiretsuka\ ;
+出版屋 > shuppan''ya\ ;
+審美的 > shinbiteki\ ;
+恒久性 > koukyuusei\ ;
+片貿易 > kataboueki\ ;
+文献学 > bunkengaku\ ;
+時代色 > jidaishoku\ ;
+大大的 > daidaiteki\ ;
+二重橋 > nijuubashi\ ;
+地誌学 > chishigaku\ ;
+化学的 > kagakuteki\ ;
+肉弾戦 > nikudansen\ ;
+一絃琴 > ichigenkin\ ;
+遊牧民 > yuubokumin\ ;
+核実験 > kakujikken\ ;
+貨物車 > kamotsusha\ ;
+求人者 > kyuujinsha\ ;
+地震国 > jishinkoku\ ;
+居留地 > kyoryuuchi\ ;
+障子紙 > shoujigami\ ;
+潜函病 > senkanbyou\ ;
+引率者 > insotsusha\ ;
+海賊版 > kaizokuban\ ;
+信仰者 > shinkousha\ ;
+消防車 > shoubousha\ ;
+三等賞 > santoushou\ ;
+無警察 > mukeisatsu\ ;
+彩色画 > saishokuga\ ;
+勧告者 > kankokusha\ ;
+広告欄 > koukokuran\ ;
+賞金王 > shoukin''ou\ ;
+通知状 > tsuuchijou\ ;
+工作品 > kousakuhin\ ;
+地政学 > chiseigaku\ ;
+太陽神 > taiyoushin\ ;
+継承者 > keishousha\ ;
+乳製品 > nyuuseihin\ ;
+遊撃隊 > yuugekitai\ ;
+卑怯者 > hikyoumono\ ;
+再教育 > saikyouiku\ ;
+国内線 > kokunaisen\ ;
+噛煙草 > kamitabako\ ;
+慈善市 > jizen''ichi\ ;
+回想録 > kaisouroku\ ;
+外交的 > gaikouteki\ ;
+修理中 > shuurichuu\ ;
+三等親 > santoushin\ ;
+地表面 > chihyoumen\ ;
+干渉計 > kanshoukei\ ;
+研究会 > kenkyuukai\ ;
+肖像権 > shouzouken\ ;
+役不足 > yakubusoku\ ;
+注意力 > chuuiryoku\ ;
+腹上死 > fukujoushi\ ;
+編集者 > henshuusha\ ;
+広告板 > koukokuban\ ;
+渉禽類 > shoukinrui\ ;
+倒錯者 > tousakusha\ ;
+水疱瘡 > mizubousou\ ;
+平等権 > byoudouken\ ;
+大震災 > daishinsai\ ;
+重症例 > juushourei\ ;
+地域的 > chiikiteki\ ;
+共産系 > kyousankei\ ;
+開閉橋 > kaiheikyou\ ;
+超電導 > choudendou\ ;
+陳情書 > chinjousho\ ;
+投機熱 > toukinetsu\ ;
+冗談事 > joudankoto\ ;
+最高級 > saikoukyuu\ ;
+思惑師 > omowakushi\ ;
+西日本 > nishinihon\ ;
+近代的 > kindaiteki\ ;
+超大型 > chouoogata\ ;
+砕氷船 > saihyousen\ ;
+漁業法 > gyogyouhou\ ;
+未解決 > mikaiketsu\ ;
+巨人国 > kyojinkoku\ ;
+最小限 > saishougen\ ;
+公共性 > koukyousei\ ;
+無精髭 > bushouhige\ ;
+工学士 > kougakushi\ ;
+酒造業 > shuzougyou\ ;
+色鉛筆 > iroenpitsu\ ;
+火打石 > hiuchiishi\ ;
+醸造業 > jouzougyou\ ;
+単眼鏡 > tangankyou\ ;
+漁業権 > gyogyouken\ ;
+石灯籠 > ishidourou\ ;
+南氷洋 > nanpyouyou\ ;
+鱈場蟹 > tarabagani\ ;
+岡山県 > okayamaken\ ;
+紡績工 > bousekikou\ ;
+起爆薬 > kibakuyaku\ ;
+確認書 > kakuninsho\ ;
+誕生石 > tanjouseki\ ;
+防臭剤 > boushuuzai\ ;
+錫製品 > suzuseihin\ ;
+貨物船 > kamotsusen\ ;
+一塁手 > ichiruishu\ ;
+脚線美 > kyakusenbi\ ;
+有価物 > yuukabutsu\ ;
+植生図 > shokuseizu\ ;
+発情期 > hatsujouki\ ;
+白水社 > hakusuisha\ ;
+採算株 > saisankabu\ ;
+長丁場 > nagachouba\ ;
+有孔虫 > yuukouchuu\ ;
+天然痘 > ten''nentou\ ;
+四拍子 > yonbyoushi\ ;
+冗長系 > jouchoukei\ ;
+日本式 > nihonshiki\ ;
+満年齢 > man''nenrei\ ;
+消防艇 > shouboutei\ ;
+小液胞 > shouekihou\ ;
+首唱者 > shushousha\ ;
+日本平 > nihondaira\ ;
+鉄面皮 > tetsumenpi\ ;
+主権国 > shukenkoku\ ;
+買掛金 > kaikakekin\ ;
+石灰石 > sekkaiseki\ ;
+米問屋 > komedon''ya\ ;
+思想劇 > shisougeki\ ;
+万国民 > bankokumin\ ;
+勧告状 > kankokujou\ ;
+敗北感 > haibokukan\ ;
+密輸船 > mitsuyusen\ ;
+可変翼 > kahen''yoku\ ;
+偏頭痛 > hentoutsuu\ ;
+年齢給 > nenreikyuu\ ;
+透磁率 > toujiritsu\ ;
+厄介事 > yakkaigoto\ ;
+伏射濠 > fukushagou\ ;
+懸壅垂 > ken''yousui\ ;
+界磁極 > kaijikyoku\ ;
+応用力 > ouyouryoku\ ;
+日曜日 > nichiyoubi\ ;
+消防署 > shoubousho\ ;
+貧乏性 > binboushou\ ;
+核崩壊 > kakuhoukai\ ;
+読書会 > dokushokai\ ;
+不潔感 > fuketsukan\ ;
+数学者 > suugakusha\ ;
+聴取者 > choushusha\ ;
+読書人 > dokushojin\ ;
+前任地 > zen''ninchi\ ;
+漁色家 > gyoshokuka\ ;
+製作者 > seisakusha\ ;
+没個性 > botsukosei\ ;
+全店中 > zentenchuu\ ;
+官給品 > kankyuuhin\ ;
+白金族 > hakkinzoku\ ;
+天文学 > tenmongaku\ ;
+兵学者 > heigakusha\ ;
+合唱隊 > gasshoutai\ ;
+不成立 > fuseiritsu\ ;
+献納品 > ken''nouhin\ ;
+細粒分 > sairyuubun\ ;
+猛練習 > mourenshuu\ ;
+例外的 > reigaiteki\ ;
+効率化 > kouritsuka\ ;
+除虫菊 > jochuugiku\ ;
+紅生姜 > benishouga\ ;
+干拓地 > kantakuchi\ ;
+凍傷者 > toushousha\ ;
+南南東 > nan''nantou\ ;
+同国人 > doukokujin\ ;
+目的語 > mokutekigo\ ;
+三国志 > sangokushi\ ;
+人物画 > jinbutsuga\ ;
+吸入器 > kyuunyuuki\ ;
+防寒服 > boukanfuku\ ;
+修院長 > shuuinchou\ ;
+国内法 > kokunaihou\ ;
+探究者 > tankyuusha\ ;
+初心者 > shoshinsha\ ;
+未開発 > mikaihatsu\ ;
+広告塔 > koukokutou\ ;
+開拓者 > kaitakusha\ ;
+人類学 > jinruigaku\ ;
+知日派 > chinichiha\ ;
+最高潮 > saikouchou\ ;
+天然港 > ten''nenkou\ ;
+反逆児 > hangyakuji\ ;
+一国者 > ikkokumono\ ;
+好材料 > kouzairyou\ ;
+太陽暦 > taiyoureki\ ;
+常用癖 > jouyouheki\ ;
+早教育 > soukyouiku\ ;
+格子縞 > koushijima\ ;
+反軍的 > hangunteki\ ;
+薬包紙 > yakuhoushi\ ;
+兵曹長 > heisouchou\ ;
+漢文学 > kanbungaku\ ;
+急先鋒 > kyuusenpou\ ;
+口奇麗 > kuchigirei\ ;
+行政法 > gyouseihou\ ;
+花言葉 > hanakotoba\ ;
+送金額 > soukingaku\ ;
+求婚者 > kyuukonsha\ ;
+再調整 > saichousei\ ;
+風見鶏 > kazamidori\ ;
+執政官 > shisseikan\ ;
+能楽堂 > nougakudou\ ;
+好下物 > koukabutsu\ ;
+双発機 > souhatsuki\ ;
+公共債 > koukyousai\ ;
+昨年来 > sakunenrai\ ;
+提供者 > teikyousha\ ;
+醸造学 > jouzougaku\ ;
+得点圏 > tokutenken\ ;
+審美学 > shinbigaku\ ;
+女便所 > on''nabenjo\ ;
+呉服物 > gofukumono\ ;
+症候群 > shoukougun\ ;
+格子窓 > koushimado\ ;
+文明国 > bunmeikoku\ ;
+行政権 > gyouseiken\ ;
+金木犀 > kinmokusei\ ;
+科学的 > kagakuteki\ ;
+手札型 > tefudagata\ ;
+全般的 > zenpanteki\ ;
+特殊鋼 > tokushukou\ ;
+圧縮性 > asshukusei\ ;
+官房長 > kanbouchou\ ;
+白砂糖 > shirozatou\ ;
+春分点 > shunbunten\ ;
+旧主人 > kyuushujin\ ;
+葉緑素 > youryokuso\ ;
+内面的 > naimenteki\ ;
+肺結核 > haikekkaku\ ;
+回収金 > kaishuukin\ ;
+綿帽子 > wataboushi\ ;
+急進派 > kyuushinha\ ;
+芸術院 > geijutsuin\ ;
+榴弾砲 > ryuudanpou\ ;
+冒険心 > boukenshin\ ;
+可燃物 > kanenbutsu\ ;
+日本一 > nihon''ichi\ ;
+修練者 > shuurensha\ ;
+反射鏡 > hanshakyou\ ;
+二直角 > nichokkaku\ ;
+型変換 > katahenkan\ ;
+去勢牛 > kyoseiushi\ ;
+犯罪学 > hanzaigaku\ ;
+原籍地 > gensekichi\ ;
+性道徳 > seidoutoku\ ;
+平滑化 > heikatsuka\ ;
+郵便箱 > yuubinbako\ ;
+受信料 > jushinryou\ ;
+再組織 > saisoshiki\ ;
+美術界 > bijutsukai\ ;
+不等式 > fudoushiki\ ;
+約定書 > yakujousho\ ;
+三箇日 > sanganichi\ ;
+発祥地 > hasshouchi\ ;
+勝手口 > katteguchi\ ;
+夕食後 > yuushokugo\ ;
+搬入日 > han''nyuubi\ ;
+豪商層 > goushousou\ ;
+奴豆腐 > yakkodoufu\ ;
+感覚論 > kankakuron\ ;
+国産車 > kokusansha\ ;
+不流通 > furyuutsuu\ ;
+橋頭堡 > kyoutouhou\ ;
+夏時間 > natsujikan\ ;
+石炭層 > sekitansou\ ;
+絹一匹 > kinuippiki\ ;
+建白書 > kenpakusho\ ;
+消防法 > shoubouhou\ ;
+中近東 > chuukintou\ ;
+証人台 > shounindai\ ;
+水産業 > suisangyou\ ;
+奇想曲 > kisoukyoku\ ;
+比例式 > hireishiki\ ;
+男所帯 > otokojotai\ ;
+修整版 > shuuseihan\ ;
+冷水浴 > reisuiyoku\ ;
+夏羽織 > natsubaori\ ;
+褒言葉 > homekotoba\ ;
+事務机 > jimudzukue\ ;
+主催国 > shusaikoku\ ;
+大外刈 > oosotogari\ ;
+清算人 > seisan''nin\ ;
+住民票 > juuminhyou\ ;
+無線局 > musenkyoku\ ;
+悪材料 > akuzairyou\ ;
+日照計 > nisshoukei\ ;
+支持率 > shijiritsu\ ;
+二連発 > nirenpatsu\ ;
+具象的 > gushouteki\ ;
+副抵当 > fukuteitou\ ;
+胸膜炎 > kyoumakuen\ ;
+除湿器 > joshitsuki\ ;
+乗換駅 > norikaeeki\ ;
+古本屋 > furuhon''ya\ ;
+巨大症 > kyodaishou\ ;
+知日家 > chinichika\ ;
+白眼視 > hakuganshi\ ;
+照射法 > shoushahou\ ;
+赤信号 > akashingou\ ;
+長方形 > chouhoukei\ ;
+万国史 > bankokushi\ ;
+造兵廠 > zouheishou\ ;
+東京湾 > toukyouwan\ ;
+独創性 > dokusousei\ ;
+放浪癖 > hourouheki\ ;
+行政官 > gyouseikan\ ;
+没趣味 > botsushumi\ ;
+陶酔境 > tousuikyou\ ;
+反射角 > hanshakaku\ ;
+公生涯 > koushougai\ ;
+特効薬 > tokkouyaku\ ;
+多項式 > takoushiki\ ;
+表情筋 > hyoujoukin\ ;
+利益率 > riekiritsu\ ;
+三拍子 > sanbyoushi\ ;
+量販店 > ryouhanten\ ;
+編集子 > henshuushi\ ;
+冗長性 > jouchousei\ ;
+鼻眼鏡 > hanamegane\ ;
+内視鏡 > naishikyou\ ;
+赤翡翠 > akashoubin\ ;
+熱機関 > netsukikan\ ;
+摂護腺 > setsugosen\ ;
+対抗策 > taikousaku\ ;
+近代劇 > kindaigeki\ ;
+徹底的 > tetteiteki\ ;
+歴代史 > rekidaishi\ ;
+早見表 > hayamihyou\ ;
+投射角 > toushakaku\ ;
+監督者 > kantokusha\ ;
+共産圏 > kyousanken\ ;
+実行中 > jikkouchuu\ ;
+猛攻撃 > moukougeki\ ;
+電子殻 > denshikaku\ ;
+村役場 > murayakuba\ ;
+陸軟風 > rikunanpuu\ ;
+政治色 > seijishoku\ ;
+母子草 > hahakogusa\ ;
+特待生 > tokutaisei\ ;
+中盤戦 > chuubansen\ ;
+舞踏靴 > butougutsu\ ;
+大陪審 > daibaishin\ ;
+無縁仏 > muenbotoke\ ;
+認定証 > ninteishou\ ;
+美術書 > bijutsusho\ ;
+計量法 > keiryouhou\ ;
+原振動 > genshindou\ ;
+学芸会 > gakugeikai\ ;
+脂肪心 > shiboushin\ ;
+狸饂飩 > tanukiudon\ ;
+水産庁 > suisanchou\ ;
+合憲的 > goukenteki\ ;
+主体的 > shutaiteki\ ;
+窃盗狂 > settoukyou\ ;
+女一般 > on''naippan\ ;
+決勝線 > kesshousen\ ;
+口上手 > kuchijouzu\ ;
+工場長 > koujouchou\ ;
+旗二流 > hataniryuu\ ;
+即位式 > sokuishiki\ ;
+懐柔策 > kaijuusaku\ ;
+幻想劇 > gensougeki\ ;
+事務室 > jimushitsu\ ;
+超規則 > choukisoku\ ;
+核家族 > kakukazoku\ ;
+夕月夜 > yuudzukeyo\ ;
+大衆車 > daishuusha\ ;
+無籍者 > musekimono\ ;
+日独伊 > nichidokui\ ;
+悪習慣 > akushuukan\ ;
+硫酸銅 > ryuusandou\ ;
+水産学 > suisangaku\ ;
+幸福感 > koufukukan\ ;
+賠償金 > baishoukin\ ;
+共産党 > kyousantou\ ;
+船板塀 > funaitabei\ ;
+全学連 > zengakuren\ ;
+直走路 > chokusouro\ ;
+氷豆腐 > kooridoufu\ ;
+入居者 > nyuukyosha\ ;
+日陰者 > hikagemono\ ;
+絶縁線 > zetsuensen\ ;
+品評会 > hinpyoukai\ ;
+水瓶座 > mizugameza\ ;
+各団体 > kakudantai\ ;
+来来週 > rairaishuu\ ;
+四十雀 > shijuukara\ ;
+通用門 > tsuuyoumon\ ;
+爪楊枝 > tsumayouji\ ;
+散髪屋 > sanpatsuya\ ;
+校正刷 > kouseizuri\ ;
+黒眼鏡 > kuromegane\ ;
+造船業 > zousengyou\ ;
+観劇会 > kangekikai\ ;
+公害病 > kougaibyou\ ;
+受信側 > jushingawa\ ;
+企業心 > kigyoushin\ ;
+修繕工 > shuuzenkou\ ;
+単身銃 > tanshinjuu\ ;
+百年目 > hyakunenme\ ;
+没理想 > botsurisou\ ;
+静脈炎 > joumyakuen\ ;
+全能者 > zen''nousha\ ;
+呉服商 > gofukushou\ ;
+省資源 > shoushigen\ ;
+集合論 > shuugouron\ ;
+禁煙席 > kin''enseki\ ;
+長方体 > chouhoutai\ ;
+受信人 > jushin''nin\ ;
+旗二旒 > hataniryuu\ ;
+急停車 > kyuuteisha\ ;
+糞度胸 > kusodokyou\ ;
+消防士 > shouboushi\ ;
+有理式 > yuurishiki\ ;
+終列車 > shuuressha\ ;
+所有格 > shoyuukaku\ ;
+知覚知 > chikakuchi\ ;
+遊撃手 > yuugekishu\ ;
+解熱剤 > genetsuzai\ ;
+店屋物 > ten''yamono\ ;
+遊撃戦 > yuugekisen\ ;
+山水閣 > sansuikaku\ ;
+説教師 > sekkyoushi\ ;
+島帝国 > touteikoku\ ;
+卑劣漢 > hiretsukan\ ;
+全生涯 > zenshougai\ ;
+全会衆 > zenkaishuu\ ;
+収容者 > shuuyousha\ ;
+解集合 > kaishuugou\ ;
+相対的 > soutaiteki\ ;
+石灰乳 > sekkainyuu\ ;
+共有者 > kyouyuusha\ ;
+指定席 > shiteiseki\ ;
+商品名 > shouhinmei\ ;
+根本的 > konponteki\ ;
+美術展 > bijutsuten\ ;
+縞模様 > shimamoyou\ ;
+消防団 > shouboudan\ ;
+乾葡萄 > hoshibudou\ ;
+羽根車 > haneguruma\ ;
+発動機 > hatsudouki\ ;
+闘牛士 > tougyuushi\ ;
+同情票 > doujouhyou\ ;
+入会金 > nyuukaikin\ ;
+熱硬化 > netsukouka\ ;
+闘牛場 > tougyuujou\ ;
+反対票 > hantaihyou\ ;
+冷却器 > reikyakuki\ ;
+借入金 > kariirekin\ ;
+商品券 > shouhinken\ ;
+歓楽街 > kanrakugai\ ;
+研削盤 > kensakuban\ ;
+本籍地 > honsekichi\ ;
+気欝症 > kiutsushou\ ;
+恋女房 > koinyoubou\ ;
+脳神経 > noushinkei\ ;
+膠原病 > kougenbyou\ ;
+牽制球 > kenseikyuu\ ;
+新造船 > shinzousen\ ;
+感覚点 > kankakuten\ ;
+偽君子 > nisekunshi\ ;
+決勝点 > kesshouten\ ;
+多数決 > tasuuketsu\ ;
+意識的 > ishikiteki\ ;
+反射的 > hanshateki\ ;
+不活発 > fukappatsu\ ;
+受領証 > juryoushou\ ;
+純文学 > junbungaku\ ;
+特急券 > tokkyuuken\ ;
+黄金術 > ougonjutsu\ ;
+仮勘定 > karikanjou\ ;
+霊長類 > reichourui\ ;
+全身像 > zenshinzou\ ;
+密輸品 > mitsuyuhin\ ;
+既設線 > kisetsusen\ ;
+二連式 > nirenshiki\ ;
+減速材 > gensokuzai\ ;
+光磁気 > hikarijiki\ ;
+証明書 > shoumeisho\ ;
+開拓地 > kaitakuchi\ ;
+記述子 > kijutsushi\ ;
+仮免許 > karimenkyo\ ;
+印象的 > inshouteki\ ;
+旧教徒 > kyuukyouto\ ;
+貨物便 > kamotsubin\ ;
+有望株 > yuuboukabu\ ;
+慣例的 > kanreiteki\ ;
+観相学 > kansougaku\ ;
+肉用種 > nikuyoushu\ ;
+基地局 > kichikyoku\ ;
+視神経 > shishinkei\ ;
+適応症 > tekioushou\ ;
+中高生 > chuukousei\ ;
+下準備 > shitajunbi\ ;
+信頼感 > shinraikan\ ;
+発酵乳 > hakkounyuu\ ;
+旅芸人 > tabigeinin\ ;
+人雪崩 > hitonadare\ ;
+主信号 > shushingou\ ;
+信奉者 > shinpousha\ ;
+尺貫法 > shakkanhou\ ;
+美術品 > bijutsuhin\ ;
+通信費 > tsuushinhi\ ;
+信頼性 > shinraisei\ ;
+感覚毛 > kankakumou\ ;
+順応性 > jun''nousei\ ;
+常習者 > joushuusha\ ;
+美術史 > bijutsushi\ ;
+檀那寺 > dan''nadera\ ;
+千歳飴 > chitoseame\ ;
+製材業 > seizaigyou\ ;
+新機軸 > shinkijiku\ ;
+肉饅頭 > nikumanjuu\ ;
+水資源 > mizushigen\ ;
+白鳥座 > hakuchouza\ ;
+百分比 > hyakubunhi\ ;
+試金石 > shikinseki\ ;
+優等賞 > yuutoushou\ ;
+大衆紙 > taishuushi\ ;
+花見時 > hanamidoki\ ;
+塗擦剤 > tosatsuzai\ ;
+木製品 > mokuseihin\ ;
+内角球 > naikakkyuu\ ;
+饒舌家 > jouzetsuka\ ;
+熱処理 > netsushori\ ;
+新幹線 > shinkansen\ ;
+動向表 > doukouhyou\ ;
+交響詩 > koukyoushi\ ;
+挨拶状 > aisatsujou\ ;
+陥没湖 > kanbotsuko\ ;
+不活溌 > fukappatsu\ ;
+信天翁 > shinten''ou\ ;
+起電力 > kidenryoku\ ;
+鎮魂祭 > chinkonsai\ ;
+舶来品 > hakuraihin\ ;
+手塩皿 > teshiozara\ ;
+黒底翳 > kurosokohi\ ;
+学生帽 > gakuseibou\ ;
+水栽培 > mizusaibai\ ;
+営造物 > eizoubutsu\ ;
+日照権 > nisshouken\ ;
+光量子 > kouryoushi\ ;
+万愚節 > bangusetsu\ ;
+能狂言 > noukyougen\ ;
+支持力 > shijiryoku\ ;
+統計表 > toukeihyou\ ;
+先史学 > senshigaku\ ;
+硫酸紙 > ryuusanshi\ ;
+性差別 > seisabetsu\ ;
+本国人 > hongokujin\ ;
+巨視的 > kyoshiteki\ ;
+転轍機 > tentetsuki\ ;
+表忠碑 > hyouchuuhi\ ;
+収賄罪 > shuuwaizai\ ;
+薬剤師 > yakuzaishi\ ;
+後見人 > kouken''nin\ ;
+連用形 > ren''youkei\ ;
+余白注 > yohakuchuu\ ;
+伝統的 > dentouteki\ ;
+親権者 > shinkensha\ ;
+円天井 > marutenjou\ ;
+少年院 > shounen''in\ ;
+歴青炭 > rekiseitan\ ;
+蠏工船 > kanikousen\ ;
+目八分 > mehachibun\ ;
+四十肩 > shijuukata\ ;
+楽観的 > rakkanteki\ ;
+心停止 > shinteishi\ ;
+速射砲 > sokushahou\ ;
+多角的 > takakuteki\ ;
+新建材 > shinkenzai\ ;
+決勝戦 > kesshousen\ ;
+不必要 > fuhitsuyou\ ;
+扁青石 > henseiseki\ ;
+双球菌 > soukyuukin\ ;
+水羊羮 > mizuyoukan\ ;
+抜本的 > bapponteki\ ;
+単発機 > tanpatsuki\ ;
+転送先 > tensousaki\ ;
+入会者 > nyuukaisha\ ;
+丸木船 > marukibune\ ;
+丸木舟 > marukibune\ ;
+希釈液 > kishakueki\ ;
+月曜日 > getsuyoubi\ ;
+最賃法 > saichinhou\ ;
+革新派 > kakushinha\ ;
+探求者 > tankyuusha\ ;
+戦病死 > senbyoushi\ ;
+男性的 > danseiteki\ ;
+乳酸菌 > nyuusankin\ ;
+前照灯 > zenshoutou\ ;
+腸捻転 > chounenten\ ;
+親分株 > oyabunkabu\ ;
+学用品 > gakuyouhin\ ;
+特殊性 > tokushusei\ ;
+単色画 > tanshokuga\ ;
+仕立券 > shitateken\ ;
+陰弁慶 > kagebenkei\ ;
+混血児 > konketsuji\ ;
+販売元 > hanbaimoto\ ;
+常習犯 > joushuuhan\ ;
+清涼剤 > seiryouzai\ ;
+最小値 > saishouchi\ ;
+水族館 > suizokukan\ ;
+共犯者 > kyouhansha\ ;
+寿司飯 > sushimeshi\ ;
+急転換 > kyuutenkan\ ;
+招待状 > shoutaijou\ ;
+打撲傷 > dabokushou\ ;
+特待券 > tokutaiken\ ;
+毒人参 > dokuninjin\ ;
+天竺葵 > tenjikuaoi\ ;
+女世帯 > on''najotai\ ;
+人間的 > ningenteki\ ;
+診断書 > shindansho\ ;
+蘚苔学 > sentaigaku\ ;
+原稿料 > genkouryou\ ;
+監督官 > kantokukan\ ;
+商務省 > shoumushou\ ;
+宣告書 > senkokusho\ ;
+夜夜中 > yoruyonaka\ ;
+通信簿 > tsuushinbo\ ;
+堆積岩 > taisekigan\ ;
+抑留所 > yokuryuujo\ ;
+撞木杖 > shumokuzue\ ;
+黄金率 > ougonritsu\ ;
+堆積層 > taisekisou\ ;
+合唱団 > gasshoudan\ ;
+好敵手 > koutekishu\ ;
+文章題 > bunshoudai\ ;
+金物屋 > kanamonoya\ ;
+団菊祭 > dangikusai\ ;
+緩衝液 > kanshoueki\ ;
+寄宿舎 > kishukusha\ ;
+潜望鏡 > senboukyou\ ;
+新左翼 > shinsayoku\ ;
+遡及的 > sokyuuteki\ ;
+同情心 > doujoushin\ ;
+下稽古 > shitageiko\ ;
+競争者 > kyousousha\ ;
+商店街 > shoutengai\ ;
+玉手箱 > tamatebako\ ;
+上半身 > jouhanshin\ ;
+測定法 > sokuteihou\ ;
+降圧剤 > kouatsuzai\ ;
+急傾斜 > kyuukeisha\ ;
+両棲類 > ryouseirui\ ;
+最上級 > saijoukyuu\ ;
+偃月刀 > engetsutou\ ;
+看護卒 > kangosotsu\ ;
+罫線表 > keisenhyou\ ;
+針土竜 > harimogura\ ;
+灯台守 > toudaimori\ ;
+仮免状 > karimenjou\ ;
+弾薬庫 > dan''yakuko\ ;
+合法的 > gouhouteki\ ;
+挫折感 > zasetsukan\ ;
+干葡萄 > hoshibudou\ ;
+赤新聞 > akashinbun\ ;
+膠着語 > kouchakugo\ ;
+終止形 > shuushikei\ ;
+出港船 > shukkousen\ ;
+輸入額 > yunyuugaku\ ;
+甲殻類 > koukakurui\ ;
+障壁画 > shouhekiga\ ;
+溶接機 > yousetsuki\ ;
+乗組員 > norikumiin\ ;
+腎臓病 > jinzoubyou\ ;
+可搬式 > kahanshiki\ ;
+健筆家 > kenpitsuka\ ;
+正中線 > seichuusen\ ;
+千年間 > sen''nenkan\ ;
+棒磁石 > boujishaku\ ;
+観賞魚 > kanshougyo\ ;
+神学校 > shingakkou\ ;
+作業服 > sagyoufuku\ ;
+発着所 > hatchakujo\ ;
+親近感 > shinkinkan\ ;
+乱泥流 > randeiryuu\ ;
+当直員 > touchokuin\ ;
+統計的 > toukeiteki\ ;
+芸術家 > geijutsuka\ ;
+玄関先 > genkansaki\ ;
+深海魚 > shinkaigyo\ ;
+同志的 > doushiteki\ ;
+価千金 > ataisenkin\ ;
+九回戦 > kyuukaisen\ ;
+半永久 > han''eikyuu\ ;
+雑役婦 > zatsuekifu\ ;
+冷凍業 > reitougyou\ ;
+両生類 > ryouseirui\ ;
+儒教的 > jukyouteki\ ;
+揚陸艦 > yourikukan\ ;
+重謹慎 > juukinshin\ ;
+凍豆腐 > shimidoufu\ ;
+永谷園 > nagatanien\ ;
+二槽式 > nisoushiki\ ;
+相乗積 > soujouseki\ ;
+菌類学 > kinruigaku\ ;
+雑役夫 > zatsuekifu\ ;
+新刊書 > shinkansho\ ;
+青少年 > seishounen\ ;
+推進者 > suishinsha\ ;
+列席者 > ressekisha\ ;
+国産品 > kokusanhin\ ;
+懐旧談 > kaikyuudan\ ;
+枯草熱 > kosounetsu\ ;
+中甲板 > chuukanpan\ ;
+綿実油 > menjitsuyu\ ;
+埋伏歯 > maifukushi\ ;
+内緒事 > naishogoto\ ;
+一等卒 > ittousotsu\ ;
+神代杉 > jindaisugi\ ;
+値嵩株 > negasakabu\ ;
+政治力 > seijiryoku\ ;
+答申書 > toushinsho\ ;
+乱心者 > ranshinsha\ ;
+人間業 > ningenwaza\ ;
+共謀者 > kyoubousha\ ;
+来賓席 > raihinseki\ ;
+舞踏曲 > butoukyoku\ ;
+修行者 > shugyousha\ ;
+島根県 > shimaneken\ ;
+強硬論 > kyoukouron\ ;
+法治国 > houchikoku\ ;
+不得策 > futokusaku\ ;
+在米中 > zaibeichuu\ ;
+匿名性 > tokumeisei\ ;
+登山靴 > tozangutsu\ ;
+座敷牢 > zashikirou\ ;
+神格化 > shinkakuka\ ;
+赤外線 > sekigaisen\ ;
+薬用酒 > yakuyoushu\ ;
+結核菌 > kekkakukin\ ;
+草履虫 > zourimushi\ ;
+大衆性 > taishuusei\ ;
+寄宿生 > kishukusei\ ;
+昇汞水 > shoukousui\ ;
+武者慄 > mushaburui\ ;
+文章論 > bunshouron\ ;
+特選品 > tokusenhin\ ;
+近親者 > kinshinsha\ ;
+複数形 > fukusuukei\ ;
+幽邃境 > yuusuikyou\ ;
+再投票 > saitouhyou\ ;
+不活動 > fukatsudou\ ;
+全寮制 > zenryousei\ ;
+追悼会 > tsuitoukai\ ;
+白兵戦 > hakuheisen\ ;
+請求権 > seikyuuken\ ;
+忠霊塔 > chuureitou\ ;
+隙間風 > sukimakaze\ ;
+共有地 > kyouyuuchi\ ;
+片為替 > katagawase\ ;
+緩衝弁 > kanshouben\ ;
+宿根草 > shukkonsou\ ;
+大立者 > oodatemono\ ;
+泰山木 > taisanboku\ ;
+抽籤券 > chuusenken\ ;
+糸状虫 > shijouchuu\ ;
+絶縁体 > zetsuentai\ ;
+青果物 > seikabutsu\ ;
+里言葉 > satokotoba\ ;
+購読者 > koudokusha\ ;
+売買高 > baibaidaka\ ;
+挺進隊 > teishintai\ ;
+脱水症 > dassuishou\ ;
+勧進帳 > kanjinchou\ ;
+拡張化 > kakuchouka\ ;
+殺人鬼 > satsujinki\ ;
+流動性 > ryuudousei\ ;
+四重唱 > shijuushou\ ;
+教育者 > kyouikusha\ ;
+反対側 > hantaigawa\ ;
+琴一張 > kotoitchou\ ;
+内在的 > naizaiteki\ ;
+三段跳 > sandantobi\ ;
+飛躍的 > hiyakuteki\ ;
+手長猿 > tenagazaru\ ;
+老眼鏡 > rougankyou\ ;
+仮処分 > karishobun\ ;
+全人格 > zenjinkaku\ ;
+分泌物 > bunpibutsu\ ;
+請求書 > seikyuusho\ ;
+不決断 > fuketsudan\ ;
+先先週 > sensenshuu\ ;
+致命的 > chimeiteki\ ;
+乳石英 > nyuusekiei\ ;
+財政学 > zaiseigaku\ ;
+管弦楽 > kangengaku\ ;
+飲食店 > inshokuten\ ;
+紙製品 > kamiseihin\ ;
+黄金律 > ougonritsu\ ;
+法律案 > houritsuan\ ;
+半盲症 > hanmoushou\ ;
+硝酸銀 > shousangin\ ;
+防総省 > bousoushou\ ;
+逆比例 > gyakuhirei\ ;
+投書箱 > toushobako\ ;
+城下町 > joukamachi\ ;
+特別委 > tokubetsui\ ;
+村芝居 > murashibai\ ;
+継息子 > mamamusuko\ ;
+発信音 > hasshin''on\ ;
+四死球 > shishikyuu\ ;
+献金箱 > kenkinbako\ ;
+戦略家 > senryakuka\ ;
+公聴会 > kouchoukai\ ;
+気鬱症 > kiutsushou\ ;
+複数回 > fukusuukai\ ;
+会計学 > kaikeigaku\ ;
+簡略化 > kanryakuka\ ;
+給電線 > kyuudensen\ ;
+吉祥天 > kisshouten\ ;
+御影石 > mikageishi\ ;
+内国産 > naikokusan\ ;
+雪月花 > setsugekka\ ;
+私書箱 > shishobako\ ;
+直映館 > chokueikan\ ;
+病理学 > byourigaku\ ;
+復刻版 > fukkokuban\ ;
+退廃的 > taihaiteki\ ;
+人間学 > ningengaku\ ;
+下着類 > shitagirui\ ;
+唐変木 > touhenboku\ ;
+線撮影 > sensatsuei\ ;
+新生面 > shinseimen\ ;
+数日後 > suujitsugo\ ;
+超合金 > chougoukin\ ;
+多国籍 > takokuseki\ ;
+積算法 > sekisanhou\ ;
+外為法 > gaitamehou\ ;
+出品者 > shuppinsha\ ;
+覚醒剤 > kakuseizai\ ;
+高山蝶 > kouzanchou\ ;
+近縁属 > kin''enzoku\ ;
+上達部 > kandachime\ ;
+可鍛鉄 > katantetsu\ ;
+心理的 > shinriteki\ ;
+乗換券 > norikaeken\ ;
+教育界 > kyouikukai\ ;
+陰極線 > inkyokusen\ ;
+半艇身 > hanteishin\ ;
+親兄弟 > oyakyoudai\ ;
+旅館業 > ryokangyou\ ;
+学期末 > gakkimatsu\ ;
+到来物 > touraimono\ ;
+沖仲仕 > okinakashi\ ;
+外国製 > gaikokusei\ ;
+終盤戦 > shuubansen\ ;
+逆光線 > gyakkousen\ ;
+象徴派 > shouchouha\ ;
+勧進元 > kanjinmoto\ ;
+魚類学 > gyoruigaku\ ;
+縞瑪瑙 > shimamenou\ ;
+真空管 > shinkuukan\ ;
+舎利別 > sharibetsu\ ;
+京阪神 > keihanshin\ ;
+慣習法 > kanshuuhou\ ;
+頭陀袋 > zudabukuro\ ;
+陰極管 > inkyokukan\ ;
+混和物 > konwabutsu\ ;
+刀鍛冶 > katanakaji\ ;
+潜伏性 > senpukusei\ ;
+招待券 > shoutaiken\ ;
+受難節 > junansetsu\ ;
+測定値 > sokuteichi\ ;
+化粧紙 > keshougami\ ;
+大憲章 > daikenshou\ ;
+単色光 > tanshokkou\ ;
+甲殻綱 > koukakukou\ ;
+集合体 > shuugoutai\ ;
+立往生 > tachioujou\ ;
+子宮頸 > shikyuukei\ ;
+経験的 > keikenteki\ ;
+化粧箱 > keshoubako\ ;
+二番星 > nibanboshi\ ;
+法律家 > houritsuka\ ;
+洗濯板 > sentakuita\ ;
+滑沢剤 > kattakuzai\ ;
+対称性 > taishousei\ ;
+少年法 > shounenhou\ ;
+徳川家 > tokugawake\ ;
+流動体 > ryuudoutai\ ;
+終刊号 > shuukangou\ ;
+監修者 > kanshuusha\ ;
+共編者 > kyouhensha\ ;
+統計学 > toukeigaku\ ;
+輪郭線 > rinkakusen\ ;
+軍艦鳥 > gunkandori\ ;
+商船隊 > shousentai\ ;
+超満員 > chouman''in\ ;
+片手鍋 > katatenabe\ ;
+股関節 > kokansetsu\ ;
+調味料 > choumiryou\ ;
+又小作 > matakosaku\ ;
+不正直 > fushoujiki\ ;
+洪積層 > kousekisou\ ;
+検圧器 > ken''atsuki\ ;
+染物屋 > somemonoya\ ;
+配膳人 > haizen''nin\ ;
+境界線 > kyoukaisen\ ;
+静物画 > seibutsuga\ ;
+教育法 > kyouikuhou\ ;
+収集魔 > shuushuuma\ ;
+離職者 > rishokusha\ ;
+報奨金 > houshoukin\ ;
+股間節 > kokansetsu\ ;
+牧師館 > bokushikan\ ;
+占領軍 > senryougun\ ;
+中生代 > chuuseidai\ ;
+下半期 > shimohanki\ ;
+教会法 > kyoukaihou\ ;
+原水爆 > gensuibaku\ ;
+刺繍糸 > shishuuito\ ;
+搭乗橋 > toujoukyou\ ;
+石鹸箱 > sekkenbako\ ;
+回転軸 > kaitenjiku\ ;
+刻一刻 > kokuikkoku\ ;
+創造的 > souzouteki\ ;
+痴呆症 > chihoushou\ ;
+排水量 > haisuiryou\ ;
+各情報 > kakujouhou\ ;
+核文法 > kakubunpou\ ;
+大々的 > daidaiteki\ ;
+売上高 > uriagedaka\ ;
+深成岩 > shinseigan\ ;
+胸三寸 > munesanzun\ ;
+得意客 > tokuikyaku\ ;
+徴兵制 > chouheisei\ ;
+性本能 > seihon''nou\ ;
+休診日 > kyuushinbi\ ;
+執金鋼 > shikkongou\ ;
+竜皮巻 > ryuuhimaki\ ;
+回帰熱 > kaikinetsu\ ;
+祝賀会 > shukugakai\ ;
+生活費 > seikatsuhi\ ;
+法務局 > houmukyoku\ ;
+中学校 > chuugakkou\ ;
+月見草 > tsukimisou\ ;
+通俗化 > tsuuzokuka\ ;
+直交性 > chokkousei\ ;
+稲熱病 > imochibyou\ ;
+高踏的 > koutouteki\ ;
+給料日 > kyuuryoubi\ ;
+万年青 > man''nensei\ ;
+小前提 > shouzentei\ ;
+六三制 > rokusansei\ ;
+造林学 > zouringaku\ ;
+全責任 > zensekinin\ ;
+照明弾 > shoumeidan\ ;
+愛国心 > aikokushin\ ;
+石鹸皿 > sekkenzara\ ;
+予定説 > yoteisetsu\ ;
+脳硬塞 > noukousoku\ ;
+総大将 > soudaishou\ ;
+始末屋 > shimatsuya\ ;
+国有林 > kokuyuurin\ ;
+薬学部 > yakugakubu\ ;
+批判力 > hihanryoku\ ;
+等身大 > toushindai\ ;
+総攻撃 > soukougeki\ ;
+高山病 > kouzanbyou\ ;
+五月祭 > gogatsusai\ ;
+軍楽隊 > gungakutai\ ;
+三重唱 > sanjuushou\ ;
+南京豆 > nankinmame\ ;
+曲馬師 > kyokubashi\ ;
+副司令 > fukushirei\ ;
+昼日中 > hiruhinaka\ ;
+常識家 > joushikika\ ;
+言葉尻 > kotobajiri\ ;
+肺浸潤 > haishinjun\ ;
+耕作者 > kousakusha\ ;
+同心円 > doushin''en\ ;
+致死量 > chishiryou\ ;
+弁証論 > benshouron\ ;
+新登場 > shintoujou\ ;
+強力粉 > kyourikiko\ ;
+予備室 > yobishitsu\ ;
+店頭株 > tentoukabu\ ;
+発射薬 > hasshayaku\ ;
+化粧水 > keshoumizu\ ;
+十進法 > jisshinhou\ ;
+文筆家 > bunpitsuka\ ;
+従量税 > juuryouzei\ ;
+瓦屋根 > kawarayane\ ;
+関係調 > kankeichou\ ;
+唯心論 > yuishinron\ ;
+励振管 > reishinkan\ ;
+全日空 > zen''nikkuu\ ;
+二枚腰 > nimaigoshi\ ;
+流刑地 > ryuukeichi\ ;
+洪積世 > kousekisei\ ;
+震災地 > shinsaichi\ ;
+眼軟膏 > gan''nankou\ ;
+水晶体 > suishoutai\ ;
+点滅器 > tenmetsuki\ ;
+兄弟分 > kyoudaibun\ ;
+金門橋 > kinmonkyou\ ;
+景勝地 > keishouchi\ ;
+内接円 > naisetsuen\ ;
+生活苦 > seikatsuku\ ;
+東照宮 > toushouguu\ ;
+受難曲 > junankyoku\ ;
+対流圏 > tairyuuken\ ;
+危険物 > kikenbutsu\ ;
+研修生 > kenshuusei\ ;
+近親婚 > kinshinkon\ ;
+交読文 > koudokubun\ ;
+脳卒中 > nousotchuu\ ;
+焼死体 > shoushitai\ ;
+一神教 > isshinkyou\ ;
+派出所 > hashutsujo\ ;
+振動計 > shindoukei\ ;
+屈折語 > kussetsugo\ ;
+曲馬団 > kyokubadan\ ;
+注射液 > chuushaeki\ ;
+福禄寿 > fukurokuju\ ;
+紙吹雪 > kamifubuki\ ;
+仲介者 > chuukaisha\ ;
+集配人 > shuuhainin\ ;
+定礎式 > teisoshiki\ ;
+裁判長 > saibanchou\ ;
+電話局 > denwakyoku\ ;
+俸祿米 > hourokumai\ ;
+花吹雪 > hanafubuki\ ;
+兵糧米 > hyouroumai\ ;
+角細工 > tsunozaiku\ ;
+輸送力 > yusouryoku\ ;
+林野庁 > rin''yachou\ ;
+支配的 > shihaiteki\ ;
+太鼓橋 > taikobashi\ ;
+箔力粉 > hakurikiko\ ;
+獅子鼻 > shishibana\ ;
+連隊長 > rentaichou\ ;
+端末機 > tanmatsuki\ ;
+吹奏楽 > suisougaku\ ;
+熱射病 > nesshabyou\ ;
+徳用瓶 > tokuyoubin\ ;
+天津神 > amatsukami\ ;
+降水量 > kousuiryou\ ;
+出金者 > shukkinsha\ ;
+典型的 > tenkeiteki\ ;
+中枢性 > chuusuusei\ ;
+迷彩服 > meisaifuku\ ;
+住宅難 > juutakunan\ ;
+化粧料 > keshouryou\ ;
+心理学 > shinrigaku\ ;
+芳名録 > houmeiroku\ ;
+動力炉 > douryokuro\ ;
+小児病 > shounibyou\ ;
+少年団 > shounendan\ ;
+全面的 > zenmenteki\ ;
+小市民 > shoushimin\ ;
+副次的 > fukujiteki\ ;
+椎間板 > tsuikanban\ ;
+課税率 > kazeiritsu\ ;
+郵政省 > yuuseishou\ ;
+夏場所 > natsubasho\ ;
+厚化粧 > atsugeshou\ ;
+二人組 > futarigumi\ ;
+致命傷 > chimeishou\ ;
+副都心 > fukutoshin\ ;
+発案者 > hatsuansha\ ;
+強力犯 > gourikihan\ ;
+洗濯代 > sentakudai\ ;
+遊泳術 > yuueijutsu\ ;
+製陶業 > seitougyou\ ;
+球座標 > kyuuzahyou\ ;
+占有権 > sen''yuuken\ ;
+沈丁花 > chinchouge\ ;
+葡萄牙 > porutogaru\ ;
+教会堂 > kyoukaidou\ ;
+支店長 > shitenchou\ ;
+御年玉 > otoshidama\ ;
+西洋葱 > seiyounegi\ ;
+瓜実顔 > urizanegao\ ;
+真空帯 > shinkuutai\ ;
+追送検 > tsuisouken\ ;
+未決監 > miketsukan\ ;
+普通株 > futsuukabu\ ;
+商店主 > shoutenshu\ ;
+採石場 > saisekijou\ ;
+牢名主 > rounanushi\ ;
+累進税 > ruishinzei\ ;
+大競争 > daikyousou\ ;
+森林法 > shinrinhou\ ;
+同郷人 > doukyoujin\ ;
+派出婦 > hashutsufu\ ;
+内国債 > naikokusai\ ;
+支度金 > shitakukin\ ;
+再浸礼 > saishinrei\ ;
+国有地 > kokuyuuchi\ ;
+親展書 > shintensho\ ;
+廉恥心 > renchishin\ ;
+皆既食 > kaikishoku\ ;
+転居先 > tenkyosaki\ ;
+連絡駅 > renrakueki\ ;
+電話口 > denwaguchi\ ;
+精勤賞 > seikinshou\ ;
+健忘症 > kenboushou\ ;
+教会史 > kyoukaishi\ ;
+少年会 > shounenkai\ ;
+贋手紙 > nisetegami\ ;
+出征軍 > shusseigun\ ;
+計画者 > keikakusha\ ;
+散文的 > sanbunteki\ ;
+挺身隊 > teishintai\ ;
+友好的 > yuukouteki\ ;
+召喚状 > shoukanjou\ ;
+認証者 > ninshousha\ ;
+年産額 > nensangaku\ ;
+換算表 > kanzanhyou\ ;
+沖縄県 > okinawaken\ ;
+救世軍 > kyuuseigun\ ;
+満足感 > manzokukan\ ;
+奉公先 > houkousaki\ ;
+電報料 > denpouryou\ ;
+荒事師 > aragotoshi\ ;
+桃源郷 > tougenkyou\ ;
+蓮月尼 > rengetsuni\ ;
+羽斑蚊 > hamadaraka\ ;
+私書函 > shishobako\ ;
+朴念仁 > bokunenjin\ ;
+子宮癌 > shikyuugan\ ;
+磁力計 > jiryokukei\ ;
+根粒菌 > konryuukin\ ;
+縦旋盤 > tatesenban\ ;
+市役所 > shiyakusho\ ;
+検流計 > kenryuukei\ ;
+即売会 > sokubaikai\ ;
+延人員 > nobejin''in\ ;
+調合剤 > chougouzai\ ;
+要確認 > youkakunin\ ;
+常緑樹 > jouryokuju\ ;
+選球眼 > senkyuugan\ ;
+石合戦 > ishigassen\ ;
+封建的 > houkenteki\ ;
+駐在所 > chuuzaisho\ ;
+世帯主 > setainushi\ ;
+平常心 > heijoushin\ ;
+豆台風 > mametaifuu\ ;
+鉱山業 > kouzangyou\ ;
+構文木 > koubunmoku\ ;
+参謀長 > sanbouchou\ ;
+写真館 > shashinkan\ ;
+戦時色 > senjishoku\ ;
+住宅街 > juutakugai\ ;
+頓珍漢 > tonchinkan\ ;
+弱酸性 > jakusansei\ ;
+中仕切 > nakajikiri\ ;
+初舞台 > hatsubutai\ ;
+写真顔 > shashingao\ ;
+南京玉 > nankindama\ ;
+船籍港 > sensekikou\ ;
+燐灰石 > rinkaiseki\ ;
+一年間 > ichinenkan\ ;
+非接触 > hisesshoku\ ;
+持続的 > jizokuteki\ ;
+営業中 > eigyouchuu\ ;
+超過額 > choukagaku\ ;
+預貸率 > yotairitsu\ ;
+代用肉 > daiyouniku\ ;
+時系列 > jikeiretsu\ ;
+子供服 > kodomofuku\ ;
+警視庁 > keishichou\ ;
+免疫性 > men''ekisei\ ;
+系統的 > keitouteki\ ;
+軍用金 > gun''youkin\ ;
+荒仕事 > arashigoto\ ;
+登山客 > tozankyaku\ ;
+低賃金 > teichingin\ ;
+侵害者 > shingaisha\ ;
+売上票 > uriagepyou\ ;
+放送劇 > housougeki\ ;
+日程表 > nitteihyou\ ;
+副葬品 > fukusouhin\ ;
+挿入文 > sounyuubun\ ;
+初学者 > shogakusha\ ;
+教習所 > kyoushuujo\ ;
+入場門 > nyuujoumon\ ;
+官庁街 > kanchougai\ ;
+規則的 > kisokuteki\ ;
+小冊子 > shousasshi\ ;
+輻射線 > fukushasen\ ;
+十進制 > jisshinsei\ ;
+複製品 > fukuseihin\ ;
+蟹工船 > kanikousen\ ;
+森林帯 > shinrintai\ ;
+結晶系 > kesshoukei\ ;
+無秩序 > muchitsujo\ ;
+主観的 > shukanteki\ ;
+破壊力 > hakairyoku\ ;
+三毛作 > sanmousaku\ ;
+桧皮葺 > hiwadabuki\ ;
+力織機 > rikishokki\ ;
+六面体 > rokumentai\ ;
+白人種 > hakujinshu\ ;
+汎神論 > hanshinron\ ;
+仮定款 > kariteikan\ ;
+納税額 > nouzeigaku\ ;
+諸外国 > shogaikoku\ ;
+外接円 > gaisetsuen\ ;
+製紙業 > seishigyou\ ;
+鉛直線 > enchokusen\ ;
+心電計 > shindenkei\ ;
+福利表 > fukurihyou\ ;
+微生物 > biseibutsu\ ;
+宝石店 > housekiten\ ;
+創業者 > sougyousha\ ;
+革製品 > kawaseihin\ ;
+平年作 > heinensaku\ ;
+生態学 > seitaigaku\ ;
+猿芝居 > sarushibai\ ;
+場外株 > jougaikabu\ ;
+弁証法 > benshouhou\ ;
+協定書 > kyouteisho\ ;
+五旬節 > gojunsetsu\ ;
+初任給 > shoninkyuu\ ;
+陸曹等 > rikusoutou\ ;
+好成績 > kouseiseki\ ;
+通有性 > tsuuyuusei\ ;
+聴導犬 > choudouken\ ;
+磁力線 > jiryokusen\ ;
+離婚率 > rikonritsu\ ;
+硝酸塩 > shousan''en\ ;
+再確認 > saikakunin\ ;
+発案権 > hatsuanken\ ;
+皆既蝕 > kaikishoku\ ;
+酪製品 > rakuseihin\ ;
+土性骨 > doshoubone\ ;
+避妊薬 > hinin''yaku\ ;
+発生学 > hasseigaku\ ;
+人種的 > jinshuteki\ ;
+磁石盤 > jishakuban\ ;
+大蔵経 > daizoukyou\ ;
+河原鶸 > kawarahiwa\ ;
+留置場 > ryuuchijou\ ;
+通風孔 > tsuufuukou\ ;
+要求者 > youkyuusha\ ;
+製糸業 > seishigyou\ ;
+知恵袋 > chiebukuro\ ;
+紙鉄砲 > kamideppou\ ;
+初飛行 > hatsuhikou\ ;
+登山口 > tozanguchi\ ;
+貯水量 > chosuiryou\ ;
+社会鍋 > shakainabe\ ;
+殊勲賞 > shukunshou\ ;
+運動靴 > undougutsu\ ;
+交際国 > kousaikoku\ ;
+八文字 > hachimonji\ ;
+開発部 > kaihatsubu\ ;
+調印国 > chouinkoku\ ;
+相続税 > souzokuzei\ ;
+蝋人形 > rouningyou\ ;
+人名録 > jinmeiroku\ ;
+落第生 > rakudaisei\ ;
+凝灰岩 > gyoukaigan\ ;
+利付債 > ritsukisai\ ;
+体腔壁 > taikouheki\ ;
+指掌紋 > shishoumon\ ;
+奇跡的 > kisekiteki\ ;
+蛋白源 > tanpakugen\ ;
+断末魔 > danmatsuma\ ;
+詳伝社 > shoudensha\ ;
+葬儀式 > sougishiki\ ;
+損害額 > songaigaku\ ;
+鉄鋼業 > tekkougyou\ ;
+一弦琴 > ichigenkin\ ;
+暗紫色 > anshishoku\ ;
+先任順 > sen''ninjun\ ;
+好戦的 > kousenteki\ ;
+防長官 > bouchoukan\ ;
+水圧計 > suiatsukei\ ;
+外国勢 > gaikokuzei\ ;
+韓国人 > kankokujin\ ;
+敢闘賞 > kantoushou\ ;
+毒見役 > dokumiyaku\ ;
+機内食 > kinaishoku\ ;
+裏番組 > urabangumi\ ;
+国防論 > kokubouron\ ;
+官求品 > kankyuuhin\ ;
+国際線 > kokusaisen\ ;
+貸金庫 > kashikinko\ ;
+速記術 > sokkijutsu\ ;
+国言葉 > kunikotoba\ ;
+匐行疹 > fukkoushin\ ;
+町工場 > machikouba\ ;
+至急便 > shikyuubin\ ;
+宝冠章 > houkanshou\ ;
+製糖業 > seitougyou\ ;
+若旦那 > wakadan''na\ ;
+挑戦者 > chousensha\ ;
+鉄鉱石 > tekkouseki\ ;
+横隔膜 > oukakumaku\ ;
+同業者 > dougyousha\ ;
+活用語 > katsuyougo\ ;
+深呼吸 > shinkokyuu\ ;
+三番鶏 > sanbandori\ ;
+判任官 > han''ninkan\ ;
+出勤者 > shukkinsha\ ;
+外国債 > gaikokusai\ ;
+連絡船 > renrakusen\ ;
+落第点 > rakudaiten\ ;
+進行相 > shinkousou\ ;
+三番鳥 > sanbandori\ ;
+決定的 > ketteiteki\ ;
+肉料理 > nikuryouri\ ;
+文法的 > bunpouteki\ ;
+国文法 > kokubunpou\ ;
+超弩級 > choudokyuu\ ;
+大蔵省 > ookurashou\ ;
+感情的 > kanjouteki\ ;
+乗合船 > noriaibune\ ;
+徳用品 > tokuyouhin\ ;
+燃料棒 > nenryoubou\ ;
+二日酔 > futsukayoi\ ;
+神経系 > shinkeikei\ ;
+仮議長 > karigichou\ ;
+独断論 > dokudanron\ ;
+外国人 > gaikokujin\ ;
+珍糞漢 > chinpunkan\ ;
+振動板 > shindouban\ ;
+主教冠 > shukyoukan\ ;
+正教師 > seikyoushi\ ;
+細菌学 > saikingaku\ ;
+耕作地 > kousakuchi\ ;
+改進党 > kaishintou\ ;
+三分搗 > sanbutsuki\ ;
+休閑地 > kyuukanchi\ ;
+軍用艦 > gun''youkan\ ;
+新聞紙 > shinbunshi\ ;
+輻射点 > fukushaten\ ;
+世俗的 > sezokuteki\ ;
+重圧感 > juuatsukan\ ;
+豆鉄砲 > mamedeppou\ ;
+優秀品 > yuushuuhin\ ;
+金融界 > kin''yuukai\ ;
+傍聴券 > bouchouken\ ;
+貯金箱 > chokinbako\ ;
+国境線 > kokkyousen\ ;
+蚕糸業 > sanshigyou\ ;
+一年草 > ichinensou\ ;
+高密度 > koumitsudo\ ;
+免疫体 > men''ekitai\ ;
+磁気嵐 > jikiarashi\ ;
+振動数 > shindousuu\ ;
+大礼服 > taireifuku\ ;
+改良種 > kairyoushu\ ;
+北国人 > hokkokujin\ ;
+連絡線 > renrakusen\ ;
+牢役人 > rouyakunin\ ;
+内祝言 > naishuugen\ ;
+半身像 > hanshinzou\ ;
+大黒天 > daikokuten\ ;
+不分割 > fubunkatsu\ ;
+西北西 > seihokusei\ ;
+中世史 > chuuseishi\ ;
+怒髪天 > dohatsuten\ ;
+反革命 > hankakumei\ ;
+新聞社 > shinbunsha\ ;
+一機軸 > ichikijiku\ ;
+集魚灯 > shuugyotou\ ;
+雪見酒 > yukimizake\ ;
+坊主頭 > bouzuatama\ ;
+先験的 > senkenteki\ ;
+闇給与 > yamikyuuyo\ ;
+傍聴人 > bouchounin\ ;
+事実上 > jijitsujou\ ;
+義侠心 > gikyoushin\ ;
+用水堀 > yousuibori\ ;
+仮普請 > karibushin\ ;
+占領地 > senryouchi\ ;
+寝装品 > shinsouhin\ ;
+町内会 > chounaikai\ ;
+同盟国 > doumeikoku\ ;
+発育期 > hatsuikuki\ ;
+誓約書 > seiyakusho\ ;
+発展中 > hattenchuu\ ;
+茶番的 > chabanteki\ ;
+特産品 > tokusanhin\ ;
+製粉業 > seifungyou\ ;
+消去法 > shoukyohou\ ;
+肛門学 > koumongaku\ ;
+大司教 > daishikyou\ ;
+妄想症 > mousoushou\ ;
+御用達 > goyoudatsu\ ;
+展示物 > tenjibutsu\ ;
+自殺者 > jisatsusha\ ;
+射幸心 > shakoushin\ ;
+作曲家 > sakkyokuka\ ;
+公教会 > koukyoukai\ ;
+計画性 > keikakusei\ ;
+切迫感 > seppakukan\ ;
+丸天井 > marutenjou\ ;
+枢密院 > suumitsuin\ ;
+四六判 > shirokuban\ ;
+追体験 > tsuitaiken\ ;
+入場者 > nyuujousha\ ;
+半病人 > hanbyounin\ ;
+捜索隊 > sousakutai\ ;
+友好国 > yuukoukoku\ ;
+殿上人 > tenjoubito\ ;
+截断機 > setsudanki\ ;
+無水物 > musuibutsu\ ;
+健康的 > kenkouteki\ ;
+新体操 > shintaisou\ ;
+空中線 > kuuchuusen\ ;
+田舎道 > inakamichi\ ;
+波乃花 > naminohana\ ;
+偶像教 > guuzoukyou\ ;
+神話学 > shinwagaku\ ;
+相続権 > souzokuken\ ;
+性教育 > seikyouiku\ ;
+前哨線 > zenshousen\ ;
+独奏者 > dokusousha\ ;
+赤血球 > sekkekkyuu\ ;
+天台宗 > tendaishuu\ ;
+軍楽手 > gungakushu\ ;
+軍艦巻 > gunkanmaki\ ;
+暗褐色 > ankasshoku\ ;
+逆作用 > gyakusayou\ ;
+挑戦状 > chousenjou\ ;
+検量線 > kenryousen\ ;
+網杓子 > amijakushi\ ;
+再注文 > saichuumon\ ;
+内反足 > naihansoku\ ;
+社用族 > shayouzoku\ ;
+年少者 > nenshousha\ ;
+新生代 > shinseidai\ ;
+保管物 > hokanbutsu\ ;
+優勝者 > yuushousha\ ;
+改良点 > kairyouten\ ;
+給排水 > kyuuhaisui\ ;
+天眼鏡 > tengankyou\ ;
+三連勝 > sanrenshou\ ;
+不発弾 > fuhatsudan\ ;
+半官的 > hankanteki\ ;
+振動子 > shindoushi\ ;
+活発化 > kappatsuka\ ;
+収集家 > shuushuuka\ ;
+酸化鉄 > sankatetsu\ ;
+新人王 > shinjin''ou\ ;
+延日数 > nobenissuu\ ;
+奉献頌 > houkenshou\ ;
+貸店舗 > kashitenpo\ ;
+二人共 > futaritomo\ ;
+収斂剤 > shuurenzai\ ;
+国際法 > kokusaihou\ ;
+高学年 > kougakunen\ ;
+核災害 > kakusaigai\ ;
+伽草子 > togizoushi\ ;
+煽情的 > senjouteki\ ;
+認証官 > ninshoukan\ ;
+養蚕業 > yousangyou\ ;
+火山脈 > kazanmyaku\ ;
+菜種殻 > natanegara\ ;
+避暑客 > hishokyaku\ ;
+汎心論 > hanshinron\ ;
+書評欄 > shohyouran\ ;
+入場税 > nyuujouzei\ ;
+試作車 > shisakusha\ ;
+獄中記 > gokuchuuki\ ;
+乳兄弟 > chikyoudai\ ;
+二七日 > futananoka\ ;
+正教会 > seikyoukai\ ;
+先生方 > senseigata\ ;
+草雲雀 > kusahibari\ ;
+侍従職 > jijuushoku\ ;
+地形学 > chikeigaku\ ;
+一直線 > itchokusen\ ;
+天眼通 > tengantsuu\ ;
+仲買人 > nakagainin\ ;
+薬理学 > yakurigaku\ ;
+国文専 > kokubunsen\ ;
+一年生 > ichinensei\ ;
+定式化 > teishikika\ ;
+商業化 > shougyouka\ ;
+一輪車 > ichirinsha\ ;
+滲炭鋼 > shintankou\ ;
+軍用犬 > gun''youken\ ;
+六角堂 > rokkakudou\ ;
+床暖房 > yukadanbou\ ;
+筆不精 > fudebushou\ ;
+公証人 > koushounin\ ;
+薄力粉 > hakurikiko\ ;
+牧草地 > bokusouchi\ ;
+属性値 > zokuseichi\ ;
+解毒薬 > gedokuyaku\ ;
+満期日 > mankijitsu\ ;
+名作選 > meisakusen\ ;
+商用文 > shouyoubun\ ;
+国語学 > kokugogaku\ ;
+可及的 > kakyuuteki\ ;
+写真班 > shashinhan\ ;
+一元論 > ichigenron\ ;
+調剤師 > chouzaishi\ ;
+単三形 > tansangata\ ;
+甲冑師 > katchuushi\ ;
+先任者 > sen''ninsha\ ;
+曲線美 > kyokusenbi\ ;
+公約数 > kouyakusuu\ ;
+熱狂者 > nekkyousha\ ;
+水紋学 > suimongaku\ ;
+人種学 > jinshugaku\ ;
+残忍性 > zan''ninsei\ ;
+相関的 > soukanteki\ ;
+写真版 > shashinban\ ;
+生息地 > seisokuchi\ ;
+知性的 > chiseiteki\ ;
+未発達 > mihattatsu\ ;
+開幕戦 > kaimakusen\ ;
+後配株 > kouhaikabu\ ;
+停泊地 > teihakuchi\ ;
+罹患率 > rikanritsu\ ;
+進行形 > shinkoukei\ ;
+道徳上 > doutokujou\ ;
+社会的 > shakaiteki\ ;
+震源地 > shingenchi\ ;
+星雲説 > seiunsetsu\ ;
+河原者 > kawaramono\ ;
+溺死者 > dekishisha\ ;
+海商法 > kaishouhou\ ;
+理髪店 > rihatsuten\ ;
+革命軍 > kakumeigun\ ;
+書誌学 > shoshigaku\ ;
+理髪師 > rihatsushi\ ;
+世俗心 > sezokushin\ ;
+適任者 > tekininsha\ ;
+変圧所 > hen''atsujo\ ;
+漢民族 > kanminzoku\ ;
+適用性 > tekiyousei\ ;
+直談判 > jikadanpan\ ;
+背信者 > haishinsha\ ;
+筆耕料 > hikkouryou\ ;
+伝法肌 > denbouhada\ ;
+繊毛虫 > senmouchuu\ ;
+競売人 > kyoubainin\ ;
+作詞者 > sakushisha\ ;
+安死術 > anshijutsu\ ;
+機動力 > kidouryoku\ ;
+最終回 > saishuukai\ ;
+主要国 > shuyoukoku\ ;
+反陽子 > han''youshi\ ;
+内向的 > naikouteki\ ;
+防潮堤 > bouchoutei\ ;
+液晶盤 > ekishouban\ ;
+神経戦 > shinkeisen\ ;
+黄八丈 > kihachijou\ ;
+表二階 > omotenikai\ ;
+試験的 > shikenteki\ ;
+屠殺場 > tosatsujou\ ;
+旅支度 > tabijitaku\ ;
+書簡集 > shokanshuu\ ;
+好戦国 > kousenkoku\ ;
+営林局 > eirinkyoku\ ;
+無重力 > mujuuryoku\ ;
+遺失者 > ishitsusha\ ;
+生得権 > seitokuken\ ;
+米騒動 > komesoudou\ ;
+新体制 > shintaisei\ ;
+血清学 > kesseigaku\ ;
+部長閲 > buchouetsu\ ;
+夜想曲 > yasoukyoku\ ;
+概念的 > gainenteki\ ;
+空中権 > kuuchuuken\ ;
+周遊券 > shuuyuuken\ ;
+創作者 > sousakusha\ ;
+含糖量 > gantouryou\ ;
+倹約家 > ken''yakuka\ ;
+出張所 > shutchoujo\ ;
+管理職 > kanrishoku\ ;
+恐怖症 > kyoufushou\ ;
+政略家 > seiryakuka\ ;
+公衆網 > koushuumou\ ;
+入場権 > nyuujouken\ ;
+督戦隊 > tokusentai\ ;
+千羽鶴 > senbadzuru\ ;
+住宅地 > juutakuchi\ ;
+内惑星 > naiwakusei\ ;
+真正直 > mashoujiki\ ;
+季節風 > kisetsufuu\ ;
+低学年 > teigakunen\ ;
+学籍簿 > gakusekibo\ ;
+立体鏡 > rittaikyou\ ;
+二項式 > nikoushiki\ ;
+百日紅 > sarusuberi\ ;
+軍略家 > gunryakuka\ ;
+民譚集 > mindanshuu\ ;
+慰問袋 > imonbukuro\ ;
+消石灰 > shousekkai\ ;
+単一化 > tan''itsuka\ ;
+専用車 > sen''yousha\ ;
+仕舞物 > shimaimono\ ;
+大白鳥 > oohakuchou\ ;
+緩徐曲 > kanjokyoku\ ;
+刀剣商 > toukenshou\ ;
+伽芝居 > togishibai\ ;
+夜々中 > yoruyonaka\ ;
+気象庁 > kishouchou\ ;
+瀝青炭 > rekiseitan\ ;
+一円玉 > ichiendama\ ;
+獅子宮 > shishikyuu\ ;
+巡洋艦 > jun''youkan\ ;
+必需品 > hitsujuhin\ ;
+不信用 > fushin''you\ ;
+測地線 > sokuchisen\ ;
+高木層 > koubokusou\ ;
+桃源境 > tougenkyou\ ;
+表層性 > hyousousei\ ;
+出席簿 > shussekibo\ ;
+親王妃 > shin''nouhi\ ;
+配給系 > haikyuukei\ ;
+変圧器 > hen''atsuki\ ;
+実体鏡 > jittaikyou\ ;
+優勝杯 > yuushouhai\ ;
+適不適 > tekifuteki\ ;
+社交的 > shakouteki\ ;
+配給米 > haikyuumai\ ;
+書記局 > shokikyoku\ ;
+贈収賄 > zoushuuwai\ ;
+凸凹紙 > totsuoushi\ ;
+裁判人 > saiban''nin\ ;
+今道心 > imadoushin\ ;
+紹介者 > shoukaisha\ ;
+空中戦 > kuuchuusen\ ;
+気象学 > kishougaku\ ;
+相続人 > souzokunin\ ;
+被告席 > hikokuseki\ ;
+乳脂肪 > nyuushibou\ ;
+農牧地 > noubokuchi\ ;
+悪戯子 > itazurakko\ ;
+射的場 > shatekijou\ ;
+前哨戦 > zenshousen\ ;
+法学者 > hougakusha\ ;
+全国紙 > zenkokushi\ ;
+救難船 > kyuunansen\ ;
+金融債 > kin''yuusai\ ;
+上載圧 > jousaiatsu\ ;
+口喧嘩 > kuchigenka\ ;
+成人病 > seijinbyou\ ;
+花水木 > hanamizuki\ ;
+造園術 > zouenjutsu\ ;
+乳腺炎 > nyuusen''en\ ;
+海流瓶 > kairyuubin\ ;
+分光学 > bunkougaku\ ;
+民主的 > minshuteki\ ;
+精白糖 > seihakutou\ ;
+無機質 > mukishitsu\ ;
+通話料 > tsuuwaryou\ ;
+改良品 > kairyouhin\ ;
+精白米 > seihakumai\ ;
+快削鋼 > kaisakukou\ ;
+日向水 > hinatamizu\ ;
+扇情的 > senjouteki\ ;
+陪審員 > baishin''in\ ;
+師団長 > shidanchou\ ;
+組職体 > soshokutai\ ;
+果実酒 > kajitsushu\ ;
+婿養子 > mukoyoushi\ ;
+写真師 > shashinshi\ ;
+下検査 > shitakensa\ ;
+風邪薬 > kazegusuri\ ;
+優勝戦 > yuushousen\ ;
+連続体 > renzokutai\ ;
+天刑病 > tenkeibyou\ ;
+半翅目 > hanshimoku\ ;
+茶番劇 > chabangeki\ ;
+写真屋 > shashin''ya\ ;
+良導体 > ryoudoutai\ ;
+救世主 > kyuuseishu\ ;
+沓手鳥 > hototogisu\ ;
+未着手 > michakushu\ ;
+作詩法 > sakushihou\ ;
+真魚鰹 > managatsuo\ ;
+出張員 > shutchouin\ ;
+人力車 > jinrikisha\ ;
+国際人 > kokusaijin\ ;
+測長機 > sokuchouki\ ;
+小主観 > shoushukan\ ;
+実践的 > jissenteki\ ;
+連結器 > renketsuki\ ;
+耐久性 > taikyuusei\ ;
+杉並木 > suginamiki\ ;
+終了後 > shuuryougo\ ;
+天道様 > tentousama\ ;
+撮影隊 > satsueitai\ ;
+花菖蒲 > hanashoubu\ ;
+検眼鏡 > kengankyou\ ;
+酸化物 > sankabutsu\ ;
+小作料 > kosakuryou\ ;
+庶民的 > shominteki\ ;
+輪舞曲 > rinbukyoku\ ;
+凍結器 > touketsuki\ ;
+夏蜜柑 > natsumikan\ ;
+等方的 > touhouteki\ ;
+岩清水 > iwashimizu\ ;
+立案者 > ritsuansha\ ;
+著述家 > chojutsuka\ ;
+脳梅毒 > noubaidoku\ ;
+軍用品 > gun''youhin\ ;
+僕仲間 > bokunakama\ ;
+難視聴 > nanshichou\ ;
+徳義心 > tokugishin\ ;
+刺激性 > shigekisei\ ;
+連絡先 > renrakusen\ ;
+近海物 > kinkaimono\ ;
+東洋通 > touyoutsuu\ ;
+鉄砲玉 > teppoudama\ ;
+価格表 > kakakuhyou\ ;
+調停者 > chouteisha\ ;
+歴史観 > rekishikan\ ;
+建築費 > kenchikuhi\ ;
+人情劇 > ninjougeki\ ;
+多神教 > tashinkyou\ ;
+前哨地 > zenshouchi\ ;
+一度丈 > ichidodake\ ;
+連絡会 > renrakukai\ ;
+一般職 > ippanshoku\ ;
+社会学 > shakaigaku\ ;
+偵察機 > teisatsuki\ ;
+寝台車 > shindaisha\ ;
+年代物 > nendaimono\ ;
+両替人 > ryougaenin\ ;
+合格者 > goukakusha\ ;
+専用線 > sen''yousen\ ;
+帯域幅 > taiikihaba\ ;
+初一念 > shoichinen\ ;
+紹介状 > shoukaijou\ ;
+消毒器 > shoudokuki\ ;
+旦那衆 > dan''nashuu\ ;
+堅信礼 > kenshinrei\ ;
+官公庁 > kankouchou\ ;
+聴聞僧 > choumonsou\ ;
+太平楽 > taiheiraku\ ;
+両天秤 > ryoutenbin\ ;
+孔雀石 > kujakuseki\ ;
+創作権 > sousakuken\ ;
+色事師 > irogotoshi\ ;
+降魔術 > koumajutsu\ ;
+少資本 > shoushihon\ ;
+資産株 > shisankabu\ ;
+恐怖心 > kyoufushin\ ;
+実験的 > jikkenteki\ ;
+使徒達 > shitotachi\ ;
+安酒場 > yasusakaba\ ;
+聴聞会 > choumonkai\ ;
+育児食 > ikujishoku\ ;
+男便所 > otokobenjo\ ;
+首実検 > kubijikken\ ;
+細胞膜 > saiboumaku\ ;
+名人肌 > meijinhada\ ;
+小学校 > shougakkou\ ;
+旧藩主 > kyuuhanshu\ ;
+民有林 > min''yuurin\ ;
+赤鉄鉱 > sekitekkou\ ;
+本草学 > honzougaku\ ;
+修正者 > shuuseisha\ ;
+風速計 > fuusokukei\ ;
+潜在的 > senzaiteki\ ;
+変拍子 > henbyoushi\ ;
+旧思想 > kyuushisou\ ;
+雑木林 > zoubokurin\ ;
+入場券 > nyuujouken\ ;
+戦闘的 > sentouteki\ ;
+終電車 > shuudensha\ ;
+背美鯨 > semikujira\ ;
+穴杓子 > anajakushi\ ;
+一年中 > ichinenjuu\ ;
+鉄砲水 > teppoumizu\ ;
+全国民 > zenkokumin\ ;
+人口学 > jinkougaku\ ;
+直滑降 > chokkakkou\ ;
+上申書 > joushinsho\ ;
+針千本 > harisenbon\ ;
+三業地 > sangyouchi\ ;
+並大抵 > namitaitei\ ;
+白雲石 > hakuunseki\ ;
+欠席者 > kessekisha\ ;
+引当金 > hikiatekin\ ;
+装飾音 > soushokuon\ ;
+視聴者 > shichousha\ ;
+乳臭児 > nyuushuuji\ ;
+手沢本 > shutakubon\ ;
+警戒心 > keikaishin\ ;
+中国語 > chuugokugo\ ;
+入手難 > nyuushunan\ ;
+電流計 > denryuukei\ ;
+山梔子 > kuchinashi\ ;
+君主国 > kunshukoku\ ;
+音楽学 > ongakugaku\ ;
+錯字症 > sakujishou\ ;
+大盤石 > daibanjaku\ ;
+分子量 > bunshiryou\ ;
+一番茶 > ichibancha\ ;
+遅刻者 > chikokusha\ ;
+再発足 > saihossoku\ ;
+対蹠的 > taishoteki\ ;
+槍術家 > soujutsuka\ ;
+歌謡曲 > kayoukyoku\ ;
+活人画 > katsujinga\ ;
+二言目 > futakotome\ ;
+原子量 > genshiryou\ ;
+大幅物 > oohabamono\ ;
+独奏会 > dokusoukai\ ;
+脱臭剤 > dasshuuzai\ ;
+快速船 > kaisokusen\ ;
+生殖器 > seishokuki\ ;
+車中談 > shachuudan\ ;
+鎮静剤 > chinseizai\ ;
+合併症 > gappeishou\ ;
+懇親会 > konshinkai\ ;
+牽牛星 > kengyuusei\ ;
+刺激剤 > shigekizai\ ;
+茶柄杓 > chabishaku\ ;
+有神論 > yuushinron\ ;
+命中数 > meichuusuu\ ;
+方解石 > houkaiseki\ ;
+売掛金 > urikakekin\ ;
+超巨星 > choukyosei\ ;
+立体的 > rittaiteki\ ;
+白昼夢 > hakuchuumu\ ;
+新記録 > shinkiroku\ ;
+注解者 > chuukaisha\ ;
+保釈金 > hoshakukin\ ;
+反粒子 > hanryuushi\ ;
+下足料 > gesokuryou\ ;
+注文書 > chuumonsho\ ;
+化合物 > kagoubutsu\ ;
+屋形船 > yakatabune\ ;
+運動力 > undouryoku\ ;
+銘銘皿 > meimeizara\ ;
+黒曜岩 > kokuyougan\ ;
+原作者 > gensakusha\ ;
+兵站学 > heitangaku\ ;
+細密画 > saimitsuga\ ;
+一番線 > ichibansen\ ;
+半人前 > han''ninmae\ ;
+脳梗塞 > noukousoku\ ;
+劇場街 > gekijougai\ ;
+来々週 > rairaishuu\ ;
+決議権 > ketsugiken\ ;
+劃一化 > kakuitsuka\ ;
+一槽式 > issoushiki\ ;
+宅急便 > takkyuubin\ ;
+老人病 > roujinbyou\ ;
+合格点 > goukakuten\ ;
+試供品 > shikyouhin\ ;
+中堅手 > chuukenshu\ ;
+葛饅頭 > kuzumanjuu\ ;
+接客婦 > sekkyakufu\ ;
+活字本 > katsujihon\ ;
+霍公鳥 > hototogisu\ ;
+問題劇 > mondaigeki\ ;
+聴講生 > choukousei\ ;
+賽銭箱 > saisenbako\ ;
+提唱者 > teishousha\ ;
+噴飯物 > funpanmono\ ;
+分極化 > bunkyokuka\ ;
+管理局 > kanrikyoku\ ;
+角錐台 > kakusuidai\ ;
+福岡県 > fukuokaken\ ;
+独壇場 > dokudanjou\ ;
+仲間褒 > nakamabome\ ;
+随想録 > zuisouroku\ ;
+撮影者 > satsueisha\ ;
+如菩薩 > nyobosatsu\ ;
+命中弾 > meichuudan\ ;
+真分数 > shinbunsuu\ ;
+雇用主 > koyounushi\ ;
+鉄砲弾 > teppoudama\ ;
+屯田兵 > tondenhei\ ;
+敵部隊 > tekibutai\ ;
+抵当権 > teitouken\ ;
+村夫子 > sonpuushi\ ;
+揚水車 > yousuisha\ ;
+救援軍 > kyuuengun\ ;
+育毛剤 > ikumouzai\ ;
+黒頭巾 > kurozukin\ ;
+解毒剤 > gedokuzai\ ;
+高姿勢 > koushisei\ ;
+屋台店 > yataimise\ ;
+起磁力 > kijiryoku\ ;
+原生林 > genseirin\ ;
+歴史画 > rekishiga\ ;
+前半生 > zenhansei\ ;
+存在論 > sonzairon\ ;
+希望的 > kibouteki\ ;
+人工雷 > jinkourai\ ;
+専用機 > sen''youki\ ;
+度量衡 > doryoukou\ ;
+党大会 > toutaikai\ ;
+同乗者 > doujousha\ ;
+労動者 > roudousha\ ;
+単数型 > tansuukei\ ;
+従兄弟 > juukeitei\ ;
+齧歯類 > gesshirui\ ;
+冠木門 > kabukimon\ ;
+付属品 > fuzokuhin\ ;
+訪問者 > houmonsha\ ;
+発頭人 > hottounin\ ;
+文選工 > bunsenkou\ ;
+同居人 > doukyonin\ ;
+参詣人 > sankeinin\ ;
+役員会 > yakuinkai\ ;
+孤立語 > koritsugo\ ;
+生菓子 > namagashi\ ;
+勘定書 > kanjousho\ ;
+開催地 > kaisaichi\ ;
+落後者 > rakugosha\ ;
+男子校 > danshikou\ ;
+一苦労 > hitokurou\ ;
+催涙弾 > sairuidan\ ;
+統治権 > touchiken\ ;
+禁転載 > kintensai\ ;
+港湾税 > kouwanzei\ ;
+不寛容 > fukan''you\ ;
+不信仰 > fushinkou\ ;
+太公望 > taikoubou\ ;
+丸括弧 > marugakko\ ;
+外向性 > gaikousei\ ;
+不足前 > tarazumae\ ;
+二国間 > nikokukan\ ;
+会葬者 > kaisousha\ ;
+福寿草 > fukujusou\ ;
+法曹界 > housoukai\ ;
+運輸省 > un''yushou\ ;
+運輸相 > un''yushou\ ;
+乗車駅 > joushaeki\ ;
+朝鮮語 > chousengo\ ;
+革命家 > kakumeika\ ;
+機密費 > kimitsuhi\ ;
+人造米 > jinzoumai\ ;
+洋品店 > youhinten\ ;
+個人的 > kojinteki\ ;
+一元化 > ichigenka\ ;
+伝道船 > dendousen\ ;
+圧迫感 > appakukan\ ;
+予防策 > yobousaku\ ;
+若隠居 > wakainkyo\ ;
+定住者 > teijuusha\ ;
+水溶性 > suiyousei\ ;
+遺言書 > yuigonsho\ ;
+代燃車 > dainensha\ ;
+変成岩 > henseigan\ ;
+一定量 > itteiryou\ ;
+苦灰石 > kukaiseki\ ;
+左心房 > sashinbou\ ;
+輪番制 > rinbansei\ ;
+請願者 > seigansha\ ;
+圧迫性 > appakusei\ ;
+羅生門 > rashoumon\ ;
+個人用 > kojin''you\ ;
+享受者 > kyoujusha\ ;
+御足労 > gosokurou\ ;
+爬虫類 > hachuurui\ ;
+迷信家 > meishinka\ ;
+書簡文 > shokanbun\ ;
+許可証 > kyokashou\ ;
+民主党 > minshutou\ ;
+太刀先 > tachisaki\ ;
+伝道者 > dendousha\ ;
+監視船 > kanshisen\ ;
+縄暖簾 > nawanoren\ ;
+綿製品 > menseihin\ ;
+出走馬 > shussouba\ ;
+二階建 > nikaidate\ ;
+修正案 > shuuseian\ ;
+宣伝戦 > sendensen\ ;
+請負業 > ukeoigyou\ ;
+類人猿 > ruijin''en\ ;
+合理的 > gouriteki\ ;
+勝負師 > shoubushi\ ;
+糸蚯蚓 > itomimizu\ ;
+延長戦 > enchousen\ ;
+土建業 > dokengyou\ ;
+贈呈品 > zouteihin\ ;
+金鉱地 > kinkouchi\ ;
+昼御飯 > hirugohan\ ;
+蒙古襞 > moukohida\ ;
+半月刊 > hangekkan\ ;
+県民税 > kenminzei\ ;
+扇動者 > sendousha\ ;
+集会所 > shuukaijo\ ;
+木工場 > mokkoujou\ ;
+洒落者 > sharemono\ ;
+戦闘帽 > sentoubou\ ;
+夕化粧 > yuugeshou\ ;
+可動堰 > kadouzeki\ ;
+大年増 > ootoshima\ ;
+法理学 > hourigaku\ ;
+黄頷蛇 > aodaishou\ ;
+透明体 > toumeitai\ ;
+故障車 > koshousha\ ;
+監視者 > kanshisha\ ;
+弁慶草 > benkeisou\ ;
+存在者 > sonzaisha\ ;
+全国区 > zenkokuku\ ;
+天皇旗 > ten''nouki\ ;
+官僚化 > kanryouka\ ;
+既得権 > kitokuken\ ;
+光線銃 > kousenjuu\ ;
+仮面劇 > kamengeki\ ;
+機械的 > kikaiteki\ ;
+熨斗紙 > noshigami\ ;
+写植機 > shashokki\ ;
+本体論 > hontairon\ ;
+発声法 > hasseihou\ ;
+給湯器 > kyuutouki\ ;
+遊興費 > yuukyouhi\ ;
+平安京 > heiankyou\ ;
+生欠伸 > namaakubi\ ;
+送付先 > soufusaki\ ;
+外野席 > gaiyaseki\ ;
+立体戦 > rittaisen\ ;
+監視網 > kanshimou\ ;
+月水金 > gessuikin\ ;
+正投手 > seitoushu\ ;
+遠赤外 > ensekigai\ ;
+指示薬 > shijiyaku\ ;
+信号機 > shingouki\ ;
+井戸車 > idoguruma\ ;
+有名税 > yuumeizei\ ;
+立体感 > rittaikan\ ;
+優先権 > yuusenken\ ;
+実験場 > jikkenjou\ ;
+牡丹餅 > botamochi\ ;
+経団連 > keidanren\ ;
+断頭台 > dantoudai\ ;
+予約者 > yoyakusha\ ;
+終夜灯 > shuuyatou\ ;
+暗黒面 > ankokumen\ ;
+宣伝屋 > senden''ya\ ;
+代替品 > daitaihin\ ;
+炭酸塩 > tansan''en\ ;
+下宿屋 > geshukuya\ ;
+補給線 > hokyuusen\ ;
+名人戦 > meijinsen\ ;
+一般席 > ippanseki\ ;
+遭難者 > sounansha\ ;
+原子砲 > genshihou\ ;
+倒置法 > touchihou\ ;
+照準器 > shoujunki\ ;
+原住民 > genjuumin\ ;
+聖公会 > seikoukai\ ;
+原産地 > gensanchi\ ;
+革命児 > kakumeiji\ ;
+優駿馬 > yuushunba\ ;
+主情論 > shujouron\ ;
+骨董品 > kottouhin\ ;
+管財人 > kanzainin\ ;
+演劇界 > engekikai\ ;
+銀閣寺 > ginkakuji\ ;
+風鳥座 > fuuchouza\ ;
+挟瞼器 > kyoukenki\ ;
+教授法 > kyoujuhou\ ;
+電気釜 > denkigama\ ;
+電気量 > denkiryou\ ;
+点光源 > tenkougen\ ;
+日刊紙 > nikkanshi\ ;
+間狂言 > aikyougen\ ;
+老人性 > roujinsei\ ;
+計数管 > keisuukan\ ;
+金利鞘 > kinrishou\ ;
+仮政府 > kariseifu\ ;
+現代版 > gendaiban\ ;
+低姿勢 > teishisei\ ;
+急降下 > kyuukouka\ ;
+信号旗 > shingouki\ ;
+童話劇 > douwageki\ ;
+実験台 > jikkendai\ ;
+水成岩 > suiseigan\ ;
+御寮人 > goryounin\ ;
+自身番 > jishinban\ ;
+砂時計 > sunadokei\ ;
+血達磨 > chidaruma\ ;
+養鶏場 > youkeijou\ ;
+脱走兵 > dassouhei\ ;
+荘園制 > shouensei\ ;
+前半戦 > zenpansen\ ;
+訓詁学 > kunkogaku\ ;
+車井戸 > kurumaido\ ;
+外務省 > gaimushou\ ;
+新時代 > shinjidai\ ;
+渉外部 > shougaibu\ ;
+感光紙 > kankoushi\ ;
+撮影機 > satsueiki\ ;
+一生涯 > isshougai\ ;
+水源地 > suigenchi\ ;
+整流器 > seiryuuki\ ;
+銀行界 > ginkoukai\ ;
+現住所 > genjuusho\ ;
+前口上 > maekoujou\ ;
+地対空 > chitaikuu\ ;
+第一集 > daiisshuu\ ;
+天皇家 > ten''nouke\ ;
+給油船 > kyuuyusen\ ;
+代書人 > daishonin\ ;
+創始者 > soushisha\ ;
+価格帯 > kakakutai\ ;
+場所柄 > bashogara\ ;
+信号所 > shingoujo\ ;
+悪循環 > akujunkan\ ;
+実験値 > jikkenchi\ ;
+不風流 > bufuuryuu\ ;
+宣伝員 > senden''in\ ;
+除電針 > jodenbari\ ;
+衛生学 > eiseigaku\ ;
+発見者 > hakkensha\ ;
+法王庁 > hououchou\ ;
+一番手 > ichibante\ ;
+限界点 > genkaiten\ ;
+板目紙 > itamegami\ ;
+愁嘆場 > shuutanba\ ;
+花相撲 > hanazumou\ ;
+歯科学 > shikagaku\ ;
+仕事着 > shigotogi\ ;
+光文社 > koubunsha\ ;
+高燥地 > kousouchi\ ;
+農地法 > nouchihou\ ;
+葛根湯 > kakkontou\ ;
+光電管 > koudenkan\ ;
+身分柄 > mibungara\ ;
+観覧券 > kanranken\ ;
+禁制品 > kinseihin\ ;
+当籤者 > tousensha\ ;
+進化論 > shinkaron\ ;
+再検討 > saikentou\ ;
+半夏生 > hangeshou\ ;
+御飯時 > gohandoki\ ;
+愛弟子 > manadeshi\ ;
+手引書 > tebikisho\ ;
+揮発油 > kihatsuyu\ ;
+翰林院 > kanrin''in\ ;
+整合性 > seigousei\ ;
+料理番 > ryouriban\ ;
+十二宮 > juunikyuu\ ;
+生産財 > seisanzai\ ;
+一代記 > ichidaiki\ ;
+元始祭 > genshisai\ ;
+亡命者 > boumeisha\ ;
+有税品 > yuuzeihin\ ;
+大使館 > taishikan\ ;
+限定詞 > genteishi\ ;
+無駄飯 > mudameshi\ ;
+総決算 > soukessan\ ;
+歴史家 > rekishika\ ;
+海水帽 > kaisuibou\ ;
+控除額 > koujogaku\ ;
+家政学 > kaseigaku\ ;
+内弟子 > uchideshi\ ;
+多忙中 > tabouchuu\ ;
+原寸大 > gensundai\ ;
+機能的 > kinouteki\ ;
+女性的 > joseiteki\ ;
+滑翔機 > kasshouki\ ;
+年始状 > nenshijou\ ;
+子煩悩 > kobon''nou\ ;
+指南車 > shinansha\ ;
+写生文 > shaseibun\ ;
+内遊星 > naiyuusei\ ;
+苦行者 > kugyousha\ ;
+罪悪感 > zaiakukan\ ;
+無症状 > mushoujou\ ;
+角砂糖 > kakuzatou\ ;
+生返事 > namahenji\ ;
+単純性 > tanjunsei\ ;
+大僧正 > daisoujou\ ;
+一身上 > isshinjou\ ;
+修道尼 > shuudouni\ ;
+軍放送 > gunhousou\ ;
+登記料 > toukiryou\ ;
+英国人 > eikokujin\ ;
+偽証者 > gishousha\ ;
+道路橋 > dourokyou\ ;
+撮影所 > satsueijo\ ;
+形態論 > keitairon\ ;
+偽証罪 > gishouzai\ ;
+首謀者 > shubousha\ ;
+複号化 > fukugouka\ ;
+第一輯 > daiisshuu\ ;
+始祖鳥 > shisochou\ ;
+特許法 > tokkyohou\ ;
+養毛剤 > youmouzai\ ;
+浮気者 > uwakimono\ ;
+暗黒街 > ankokugai\ ;
+大元帥 > daigensui\ ;
+免許状 > menkyojou\ ;
+夜光虫 > yakouchuu\ ;
+奇天烈 > kiteretsu\ ;
+匙加減 > sajikagen\ ;
+投手板 > toushuban\ ;
+従業員 > juugyouin\ ;
+批評眼 > hihyougan\ ;
+修道女 > shuudoujo\ ;
+圧痛点 > attsuuten\ ;
+海兵隊 > kaiheitai\ ;
+考課表 > koukahyou\ ;
+麦芽糖 > bakugatou\ ;
+文芸欄 > bungeiran\ ;
+夜盲症 > yamoushou\ ;
+投稿者 > toukousha\ ;
+無差別 > musabetsu\ ;
+空挺隊 > kuuteitai\ ;
+微調整 > bichousei\ ;
+口忠実 > kuchimame\ ;
+花模様 > hanamoyou\ ;
+有名校 > yuumeikou\ ;
+特許権 > tokkyoken\ ;
+構成子 > kouseishi\ ;
+請願書 > seigansho\ ;
+拡声機 > kakuseiki\ ;
+討論会 > touronkai\ ;
+拘置所 > kouchisho\ ;
+交渉員 > koushouin\ ;
+労役場 > rouekijou\ ;
+長尾鶏 > nagaodori\ ;
+水銀灯 > suigintou\ ;
+主成分 > shuseibun\ ;
+修辞法 > shuujihou\ ;
+卓話会 > takuwakai\ ;
+手工芸 > shukougei\ ;
+料理法 > ryourihou\ ;
+承認図 > shouninzu\ ;
+本島人 > hontoujin\ ;
+恒常性 > koujousei\ ;
+長尾鳥 > nagaodori\ ;
+組織化 > soshikika\ ;
+御新造 > goshinzou\ ;
+乾電池 > kandenchi\ ;
+自作農 > jisakunou\ ;
+制空権 > seikuuken\ ;
+花椰菜 > hanayasai\ ;
+競技場 > kyougijou\ ;
+旧制度 > kyuuseido\ ;
+共和政 > kyouwasei\ ;
+尊王家 > son''nouka\ ;
+遅進児 > chishinji\ ;
+栄養学 > eiyougaku\ ;
+不介入 > fukainyuu\ ;
+投手戦 > toushusen\ ;
+犬張子 > inuhariko\ ;
+送電線 > soudensen\ ;
+卵黄嚢 > ran''ounou\ ;
+気圧計 > kiatsukei\ ;
+駆虫剤 > kuchuuzai\ ;
+犬追物 > inuoumono\ ;
+三斑鶉 > mifuuzura\ ;
+拍子木 > hyoushigi\ ;
+多毛作 > tamousaku\ ;
+手荷物 > tenimotsu\ ;
+几帳面 > kichoumen\ ;
+模範的 > mohanteki\ ;
+筆記帳 > hikkichou\ ;
+長距離 > choukyori\ ;
+美少年 > bishounen\ ;
+乾燥材 > kansouzai\ ;
+生産者 > seisansha\ ;
+不服従 > fufukujuu\ ;
+本格派 > honkakuha\ ;
+原子戦 > genshisen\ ;
+不変量 > fuhenryou\ ;
+顔馴染 > kaonajimi\ ;
+落葉樹 > rakuyouju\ ;
+三頭筋 > santoukin\ ;
+代言者 > daigensha\ ;
+揮発度 > kihatsudo\ ;
+大自然 > daishizen\ ;
+不時着 > fujichaku\ ;
+統制線 > touseisen\ ;
+光電池 > koudenchi\ ;
+花供養 > hanakuyou\ ;
+難問題 > nanmondai\ ;
+継電鍵 > keidenken\ ;
+機械学 > kikaigaku\ ;
+婦人病 > fujinbyou\ ;
+同好者 > doukousha\ ;
+偽妊娠 > gininshin\ ;
+火縄銃 > hinawajuu\ ;
+前勘定 > maekanjou\ ;
+既発表 > kihappyou\ ;
+甲状腺 > koujousen\ ;
+稽古事 > keikogoto\ ;
+成文法 > seibunhou\ ;
+規格品 > kikakuhin\ ;
+仕事日 > shigotobi\ ;
+分与税 > bun''yozei\ ;
+白無垢 > shiromuku\ ;
+二等賞 > nitoushou\ ;
+定休日 > teikyuubi\ ;
+白灯油 > hakutouyu\ ;
+運転席 > untenseki\ ;
+公民館 > kouminkan\ ;
+篤農家 > tokunouka\ ;
+茉莉花 > matsurika\ ;
+人工港 > jinkoukou\ ;
+高陵土 > kouryoudo\ ;
+感光板 > kankouban\ ;
+三乗根 > sanjoukon\ ;
+男風呂 > otokoburo\ ;
+女郎花 > ominaeshi\ ;
+滞納者 > tainousha\ ;
+伝道師 > dendoushi\ ;
+応召兵 > oushouhei\ ;
+複十字 > fukujuuji\ ;
+再構成 > saikousei\ ;
+有段者 > yuudansha\ ;
+単衣物 > hitoemono\ ;
+規格判 > kikakuban\ ;
+第三者 > daisansha\ ;
+体操場 > taisoujou\ ;
+主流派 > shuryuuha\ ;
+広報官 > kouhoukan\ ;
+人工池 > jinkouike\ ;
+口蓋垂 > kougaisui\ ;
+金剛砂 > kongousha\ ;
+十三夜 > juusan''ya\ ;
+大学院 > daigakuin\ ;
+乗用車 > jouyousha\ ;
+不明確 > fumeikaku\ ;
+蜃気楼 > shinkirou\ ;
+複葉機 > fukuyouki\ ;
+二等親 > nitoushin\ ;
+草競馬 > kusakeiba\ ;
+隠元豆 > ingenmame\ ;
+累乗根 > ruijoukon\ ;
+東洋人 > touyoujin\ ;
+競技会 > kyougikai\ ;
+勧誘員 > kan''yuuin\ ;
+老婆心 > roubashin\ ;
+債権者 > saikensha\ ;
+第一義 > daiichigi\ ;
+圧倒的 > attouteki\ ;
+不明瞭 > fumeiryou\ ;
+放電管 > houdenkan\ ;
+前身頃 > maemigoro\ ;
+少数派 > shousuuha\ ;
+特捜部 > tokusoubu\ ;
+調馬師 > choubashi\ ;
+理論的 > rironteki\ ;
+飲水量 > insuiryou\ ;
+調理法 > chourihou\ ;
+累犯者 > ruihansha\ ;
+好都合 > koutsugou\ ;
+安全域 > anzen''iki\ ;
+虚栄心 > kyoeishin\ ;
+定期的 > teikiteki\ ;
+認可証 > ninkashou\ ;
+信心家 > shinjinka\ ;
+強姦罪 > goukanzai\ ;
+教授会 > kyoujukai\ ;
+連合軍 > rengougun\ ;
+重合体 > juugoutai\ ;
+加虐愛 > kagyakuai\ ;
+河川敷 > kasenjiki\ ;
+軍隊葬 > guntaisou\ ;
+数年間 > suunenkan\ ;
+軽気球 > keikikyuu\ ;
+青浮草 > aoukikusa\ ;
+安楽死 > anrakushi\ ;
+金平糖 > konpeitou\ ;
+定住地 > teijuuchi\ ;
+金輪際 > konrinzai\ ;
+料理店 > ryouriten\ ;
+貿易風 > bouekifuu\ ;
+人工林 > jinkourin\ ;
+海運業 > kaiungyou\ ;
+衣食住 > ishokujuu\ ;
+寝具類 > shingurui\ ;
+東南東 > tounantou\ ;
+甲板員 > kouhan''in\ ;
+現代史 > gendaishi\ ;
+根菜類 > konsairui\ ;
+定例会 > teireikai\ ;
+決闘状 > kettoujou\ ;
+蚕卵紙 > sanranshi\ ;
+外蒙古 > sotomouko\ ;
+車両化 > sharyouka\ ;
+感光性 > kankousei\ ;
+第一章 > daiisshou\ ;
+臨界点 > rinkaiten\ ;
+商売気 > shoubaigi\ ;
+国憲法 > kokkenpou\ ;
+両陛下 > ryouheika\ ;
+限定版 > genteiban\ ;
+前車輪 > zensharin\ ;
+雄牛糞 > oushikuso\ ;
+不妊症 > funinshou\ ;
+変流器 > henryuuki\ ;
+針供養 > harikuyou\ ;
+微視的 > bishiteki\ ;
+監視塔 > kanshitou\ ;
+占拠地 > senkyochi\ ;
+指向性 > shikousei\ ;
+一人用 > hitoriyou\ ;
+調馬場 > choubajou\ ;
+再輸入 > saiyunyuu\ ;
+綿津見 > watatsumi\ ;
+優良児 > yuuryouji\ ;
+浮動票 > fudouhyou\ ;
+先天性 > sentensei\ ;
+形成層 > keiseisou\ ;
+師範代 > shihandai\ ;
+休止符 > kyuushifu\ ;
+不面目 > fumenmoku\ ;
+小糠雨 > konukaame\ ;
+本予算 > hon''yosan\ ;
+指南番 > shinanban\ ;
+拡声器 > kakuseiki\ ;
+自由業 > jiyuugyou\ ;
+禁輸品 > kin''yuhin\ ;
+司会者 > shikaisha\ ;
+投稿欄 > toukouran\ ;
+挿話的 > souwateki\ ;
+道中記 > douchuuki\ ;
+半塩水 > han''ensui\ ;
+排他的 > haitateki\ ;
+大腸炎 > daichouen\ ;
+尼法師 > amahoushi\ ;
+定置網 > teichiami\ ;
+芸能界 > geinoukai\ ;
+半濁音 > handakuon\ ;
+配管工 > haikankou\ ;
+現代人 > gendaijin\ ;
+農漁民 > nougyomin\ ;
+女性学 > joseigaku\ ;
+乾燥地 > kansouchi\ ;
+分類法 > bunruihou\ ;
+石膏像 > sekkouzou\ ;
+影武者 > kagemusha\ ;
+活版本 > kappanbon\ ;
+仕事場 > shigotoba\ ;
+婦人服 > fujinfuku\ ;
+寝心地 > negokochi\ ;
+絵巻物 > emakimono\ ;
+不料簡 > furyouken\ ;
+化石層 > kasekisou\ ;
+晩餐会 > bansankai\ ;
+仕放題 > shihoudai\ ;
+共和制 > kyouwasei\ ;
+案内状 > an''naijou\ ;
+多元的 > tagenteki\ ;
+制海権 > seikaiken\ ;
+交配種 > kouhaishu\ ;
+在住者 > zaijuusha\ ;
+成熟期 > seijukuki\ ;
+共和党 > kyouwatou\ ;
+平方根 > heihoukon\ ;
+諜報員 > chouhouin\ ;
+興奮剤 > koufunzai\ ;
+先見者 > senkensha\ ;
+航空券 > koukuuken\ ;
+光電子 > koudenshi\ ;
+売国奴 > baikokudo\ ;
+繁分数 > hanbunsuu\ ;
+性行動 > seikoudou\ ;
+銀行券 > ginkouken\ ;
+万万歳 > banbanzai\ ;
+停船場 > teisenjou\ ;
+嘆願書 > tangansho\ ;
+再生産 > saiseisan\ ;
+地対地 > chitaichi\ ;
+文体論 > buntairon\ ;
+調査団 > chousadan\ ;
+単行本 > tankoubon\ ;
+小夜曲 > sayokyoku\ ;
+出世間 > shusseken\ ;
+単行書 > tankousho\ ;
+一時間 > ichijikan\ ;
+温泉郷 > onsenkyou\ ;
+有名人 > yuumeijin\ ;
+後甲板 > koukanpan\ ;
+弱体化 > jakutaika\ ;
+経済面 > keizaimen\ ;
+修験道 > shugendou\ ;
+往生際 > oujougiwa\ ;
+残存者 > zanzonsha\ ;
+航空便 > koukuubin\ ;
+核武装 > kakubusou\ ;
+埋蔵金 > maizoukin\ ;
+孤立化 > koritsuka\ ;
+聖家族 > seikazoku\ ;
+乾燥剤 > kansouzai\ ;
+泥炭地 > deitanchi\ ;
+外輪船 > gairinsen\ ;
+複利法 > fukurihou\ ;
+蒸留器 > jouryuuki\ ;
+鑑定書 > kanteisho\ ;
+製氷機 > seihyouki\ ;
+巻寿司 > makizushi\ ;
+消費財 > shouhizai\ ;
+著作家 > chosakuka\ ;
+市販品 > shihanhin\ ;
+巻頭言 > kantougen\ ;
+調理師 > chourishi\ ;
+真桑瓜 > makuwauri\ ;
+随従者 > zuijuusha\ ;
+一寸先 > issunsaki\ ;
+文学部 > bungakubu\ ;
+予約制 > yoyakusei\ ;
+線速度 > sensokudo\ ;
+平面形 > heimenkei\ ;
+複比例 > fukuhirei\ ;
+散水車 > sansuisha\ ;
+一時金 > ichijikin\ ;
+前年度 > zen''nendo\ ;
+発行者 > hakkousha\ ;
+停留所 > teiryuujo\ ;
+宮城県 > miyagiken\ ;
+前前回 > zenzenkai\ ;
+燗徳利 > kandokuri\ ;
+死刑場 > shikeijou\ ;
+巻子本 > kanshihon\ ;
+町議会 > chougikai\ ;
+人生観 > jinseikan\ ;
+真珠貝 > shinjugai\ ;
+京都市 > kyoutoshi\ ;
+雨台風 > ametaifuu\ ;
+自由形 > jiyuugata\ ;
+免許制 > menkyosei\ ;
+雑報欄 > zappouran\ ;
+愛党心 > aitoushin\ ;
+防止法 > boushihou\ ;
+選挙法 > senkyohou\ ;
+天井裏 > tenjouura\ ;
+半陰影 > han''in''ei\ ;
+最重点 > saijuuten\ ;
+一対一 > ittaiichi\ ;
+選挙民 > senkyomin\ ;
+教唆者 > kyousasha\ ;
+料理人 > ryourinin\ ;
+自由席 > jiyuuseki\ ;
+月刊誌 > gekkanshi\ ;
+不熟練 > fujukuren\ ;
+古典的 > kotenteki\ ;
+変死者 > henshisha\ ;
+本格化 > honkakuka\ ;
+仕上工 > shiagekou\ ;
+牡丹杏 > botankyou\ ;
+平方形 > heihoukei\ ;
+労働者 > roudousha\ ;
+変化球 > henkakyuu\ ;
+遠隔視 > enkakushi\ ;
+雑記帳 > zakkichou\ ;
+在校生 > zaikousei\ ;
+摩擦音 > masatsuon\ ;
+蛍烏賊 > hotaruika\ ;
+再生法 > saiseihou\ ;
+多発機 > tahatsuki\ ;
+活版屋 > kappan''ya\ ;
+金剛手 > kongoushu\ ;
+被害額 > higaigaku\ ;
+選挙権 > senkyoken\ ;
+基本給 > kihonkyuu\ ;
+非金属 > hikinzoku\ ;
+猩猩緋 > shoujouhi\ ;
+回教徒 > kaikyouto\ ;
+指示先 > shijisaki\ ;
+備忘録 > bibouroku\ ;
+砂糖黍 > satoukibi\ ;
+案内書 > an''naisho\ ;
+功労金 > kouroukin\ ;
+被差別 > hisabetsu\ ;
+痘痕面 > abatazura\ ;
+朱文金 > shubunkin\ ;
+不謹慎 > fukinshin\ ;
+肝硬変 > kankouhen\ ;
+末期的 > makkiteki\ ;
+礼奉公 > reiboukou\ ;
+協技者 > kyougisha\ ;
+多足類 > tasokurui\ ;
+神秘性 > shinpisei\ ;
+沸騰点 > futtouten\ ;
+養魚池 > yougyochi\ ;
+魔法的 > mahouteki\ ;
+製氷所 > seihyoujo\ ;
+関西弁 > kansaiben\ ;
+八千草 > yachigusa\ ;
+道交法 > doukouhou\ ;
+野菜汁 > yasaijiru\ ;
+斡旋料 > assenryou\ ;
+航海士 > koukaishi\ ;
+浮動株 > fudoukabu\ ;
+混交林 > konkourin\ ;
+模範囚 > mohanshuu\ ;
+講義録 > kougiroku\ ;
+生存者 > seizonsha\ ;
+不謬性 > fubyuusei\ ;
+導電性 > doudensei\ ;
+改革案 > kaikakuan\ ;
+法改正 > houkaisei\ ;
+生産性 > seisansei\ ;
+上中下 > jouchuuge\ ;
+給水所 > kyuusuijo\ ;
+猜疑心 > saigishin\ ;
+不調法 > buchouhou\ ;
+受動的 > judouteki\ ;
+自由型 > jiyuugata\ ;
+調理台 > chouridai\ ;
+空閑地 > kuukanchi\ ;
+労働祭 > roudousai\ ;
+再来週 > saraishuu\ ;
+代表部 > daihyoubu\ ;
+僅少差 > kinshousa\ ;
+周期性 > shuukisei\ ;
+飛行服 > hikoufuku\ ;
+不特定 > futokutei\ ;
+表面化 > hyoumenka\ ;
+市有地 > shiyuuchi\ ;
+標準語 > hyoujungo\ ;
+水平面 > suiheimen\ ;
+交通路 > koutsuuro\ ;
+消費者 > shouhisha\ ;
+古道具 > furudougu\ ;
+基本的 > kihonteki\ ;
+草団子 > kusadango\ ;
+真珠色 > shinjuiro\ ;
+統帥権 > tousuiken\ ;
+練習機 > renshuuki\ ;
+昇降舵 > shoukouda\ ;
+兵庫県 > hyougoken\ ;
+公海上 > koukaijou\ ;
+激戦区 > gekisenku\ ;
+儀礼的 > gireiteki\ ;
+有平糖 > aruheitou\ ;
+交通費 > koutsuuhi\ ;
+金魚草 > kingyosou\ ;
+着火点 > chakkaten\ ;
+選挙戦 > senkyosen\ ;
+宗主権 > soushuken\ ;
+水酸根 > suisankon\ ;
+赤十字 > sekijuuji\ ;
+蓄音機 > chikuonki\ ;
+自尊心 > jisonshin\ ;
+表記法 > hyoukihou\ ;
+露天商 > rotenshou\ ;
+休廷日 > kyuuteibi\ ;
+飲酒癖 > inshuheki\ ;
+一斉高 > isseidaka\ ;
+処刑台 > shokeidai\ ;
+冷房車 > reibousha\ ;
+検疫所 > ken''ekijo\ ;
+照度計 > shoudokei\ ;
+収税吏 > shuuzeiri\ ;
+喉自慢 > nodojiman\ ;
+金看板 > kinkanban\ ;
+散弾銃 > sandanjuu\ ;
+培養液 > baiyoueki\ ;
+天狗風 > tengukaze\ ;
+一本杉 > ipponsugi\ ;
+測微計 > sokubikei\ ;
+風致林 > fuuchirin\ ;
+地理学 > chirigaku\ ;
+美食家 > bishokuka\ ;
+尿道炎 > nyoudouen\ ;
+螳螂拳 > tourouken\ ;
+調理人 > chourinin\ ;
+喫煙所 > kitsuenjo\ ;
+時分時 > jibundoki\ ;
+八重桜 > yaezakura\ ;
+南蛮船 > nanbansen\ ;
+豌豆豆 > endoumame\ ;
+回数券 > kaisuuken\ ;
+製造者 > seizousha\ ;
+重役会 > juuyakkai\ ;
+北欧人 > hokuoujin\ ;
+一人子 > hitorikko\ ;
+死生観 > shiseikan\ ;
+炭疽病 > tansobyou\ ;
+白地図 > hakuchizu\ ;
+鼈甲色 > bekkouiro\ ;
+乗車券 > joushaken\ ;
+測程器 > sokuteiki\ ;
+案内嬢 > an''naijou\ ;
+円舞曲 > enbukyoku\ ;
+消費税 > shouhizei\ ;
+壁一重 > kabehitoe\ ;
+四面体 > shimentai\ ;
+在来線 > zairaisen\ ;
+大理石 > dairiseki\ ;
+生産地 > seisanchi\ ;
+片田舎 > katainaka\ ;
+複写機 > fukushaki\ ;
+風俗画 > fuuzokuga\ ;
+側面図 > sokumenzu\ ;
+言語学 > gengogaku\ ;
+巡航船 > junkousen\ ;
+原始林 > genshirin\ ;
+至上権 > shijouken\ ;
+小売商 > kourishou\ ;
+統制品 > touseihin\ ;
+第一審 > daiisshin\ ;
+紅毛人 > koumoujin\ ;
+謄写版 > toushaban\ ;
+控訴審 > kousoshin\ ;
+中古車 > chuukosha\ ;
+新紀元 > shinkigen\ ;
+練習所 > renshuujo\ ;
+立方根 > rippoukon\ ;
+短音階 > tan''onkai\ ;
+宣誓書 > senseisho\ ;
+二拍子 > nibyoushi\ ;
+労農党 > rounoutou\ ;
+彼岸花 > higanbana\ ;
+忠魂碑 > chuukonhi\ ;
+有効性 > yuukousei\ ;
+三日月 > mikadzuki\ ;
+発振機 > hasshinki\ ;
+総務庁 > soumuchou\ ;
+流行語 > ryuukougo\ ;
+内鮮人 > naisenjin\ ;
+生理的 > seiriteki\ ;
+名誉慾 > meiyoyoku\ ;
+努力家 > doryokuka\ ;
+在来種 > zairaishu\ ;
+加硫法 > karyuuhou\ ;
+大家族 > daikazoku\ ;
+景教徒 > keikyouto\ ;
+高積雲 > kousekiun\ ;
+乗船券 > jousenken\ ;
+再審査 > saishinsa\ ;
+用語集 > yougoshuu\ ;
+負傷者 > fushousha\ ;
+労働法 > roudouhou\ ;
+汎用機 > han''youki\ ;
+名誉心 > meiyoshin\ ;
+鑑定人 > kanteinin\ ;
+投票日 > touhyoubi\ ;
+先行詞 > senkoushi\ ;
+独演会 > dokuenkai\ ;
+音韻学 > on''ingaku\ ;
+功労者 > kourousha\ ;
+脳細胞 > nousaibou\ ;
+美文調 > bibunchou\ ;
+明細書 > meisaisho\ ;
+男文字 > otokomoji\ ;
+総勘定 > soukanjou\ ;
+回覧板 > kairanban\ ;
+任命状 > ninmeijou\ ;
+上納金 > jounoukin\ ;
+拷問台 > goumondai\ ;
+上奏文 > jousoubun\ ;
+自責点 > jisekiten\ ;
+助監督 > jokantoku\ ;
+処生訓 > shoseikun\ ;
+本試験 > honshiken\ ;
+外信部 > gaishinbu\ ;
+一人前 > hitorimae\ ;
+労働権 > roudouken\ ;
+地球儀 > chikyuugi\ ;
+地上権 > chijouken\ ;
+金屏風 > kinbyoubu\ ;
+導電体 > doudentai\ ;
+共益費 > kyouekihi\ ;
+不認承 > funinshou\ ;
+馬鹿面 > bakadzura\ ;
+土用波 > doyounami\ ;
+総選挙 > sousenkyo\ ;
+制御盤 > seigyoban\ ;
+心意気 > kokoroiki\ ;
+重労働 > juuroudou\ ;
+手榴弾 > teryuudan\ ;
+一枚上 > ichimaiue\ ;
+天井灯 > tenjoutou\ ;
+養魚場 > yougyojou\ ;
+投票所 > touhyoujo\ ;
+座標系 > zahyoukei\ ;
+円借款 > enshakkan\ ;
+絶対論 > zettairon\ ;
+捕虫網 > hochuuami\ ;
+出来星 > dekiboshi\ ;
+花柳界 > karyuukai\ ;
+公民権 > kouminken\ ;
+如何許 > ikabakari\ ;
+清教徒 > seikyouto\ ;
+紫外線 > shigaisen\ ;
+同好会 > doukoukai\ ;
+洗車場 > senshajou\ ;
+展望車 > tenbousha\ ;
+暗号帳 > angouchou\ ;
+幌馬車 > horobasha\ ;
+大企業 > daikigyou\ ;
+売笑婦 > baishoufu\ ;
+採点者 > saitensha\ ;
+間隙比 > kangekihi\ ;
+壮行会 > soukoukai\ ;
+再生品 > saiseihin\ ;
+公社債 > koushasai\ ;
+未来学 > miraigaku\ ;
+末始終 > sueshijuu\ ;
+潜水艦 > sensuikan\ ;
+水道管 > suidoukan\ ;
+天理教 > tenrikyou\ ;
+予想高 > yosoudaka\ ;
+手柄顔 > tegaragao\ ;
+手芸品 > shugeihin\ ;
+平衡錘 > heikousui\ ;
+抗毒素 > koudokuso\ ;
+大豆粕 > daizukasu\ ;
+研究費 > kenkyuuhi\ ;
+知能犯 > chinouhan\ ;
+選手権 > senshuken\ ;
+麝香鹿 > jakoujika\ ;
+海岸線 > kaigansen\ ;
+貿易港 > bouekikou\ ;
+暦年度 > rekinendo\ ;
+天宮図 > tenkyuuzu\ ;
+有権者 > yuukensha\ ;
+体裁上 > teisaijou\ ;
+伊達男 > dateotoko\ ;
+休刊日 > kyuukanbi\ ;
+古典学 > kotengaku\ ;
+改訂版 > kaiteiban\ ;
+生存権 > seizonken\ ;
+該問題 > gaimondai\ ;
+暗号学 > angougaku\ ;
+代行者 > daikousha\ ;
+八千歳 > yachitose\ ;
+口真似 > kuchimane\ ;
+出版部 > shuppanbu\ ;
+観測所 > kansokujo\ ;
+経済界 > keizaikai\ ;
+不熱心 > funesshin\ ;
+公法人 > kouhoujin\ ;
+休眠期 > kyuuminki\ ;
+副総理 > fukusouri\ ;
+伴奏者 > bansousha\ ;
+対談者 > taidansha\ ;
+貿易法 > bouekihou\ ;
+園遊会 > en''yuukai\ ;
+賛成者 > sanseisha\ ;
+芸能人 > geinoujin\ ;
+分譲地 > bunjouchi\ ;
+屈光性 > kukkousei\ ;
+真珠湾 > shinjuwan\ ;
+交通禍 > koutsuuka\ ;
+拝火教 > haikakyou\ ;
+箇条書 > kajougaki\ ;
+選挙人 > senkyonin\ ;
+酪農家 > rakunouka\ ;
+工芸品 > kougeihin\ ;
+未来型 > miraigata\ ;
+弁鰓類 > bensairui\ ;
+無資格 > mushikaku\ ;
+任命権 > ninmeiken\ ;
+虫垂炎 > chuusuien\ ;
+破落戸 > gorotsuki\ ;
+蓄音器 > chikuonki\ ;
+緩下薬 > kangeyaku\ ;
+有機的 > yuukiteki\ ;
+正反対 > seihantai\ ;
+青海原 > aounabara\ ;
+凹面鏡 > oumenkyou\ ;
+報道陣 > houdoujin\ ;
+劣勢感 > resseikan\ ;
+御料地 > goryouchi\ ;
+計算者 > keisansha\ ;
+無駄口 > mudaguchi\ ;
+李承晩 > rishouban\ ;
+福音書 > fukuinsho\ ;
+八卦掌 > hakkeshou\ ;
+自主的 > jishuteki\ ;
+進歩党 > shinpotou\ ;
+相反性 > souhansei\ ;
+能動態 > noudoutai\ ;
+司令官 > shireikan\ ;
+地震計 > jishinkei\ ;
+紙一重 > kamihitoe\ ;
+水加減 > mizukagen\ ;
+出版費 > shuppanhi\ ;
+果報者 > kahoumono\ ;
+成長期 > seichouki\ ;
+浄土教 > joudokyou\ ;
+天井板 > tenjouita\ ;
+集塵機 > shuujinki\ ;
+凌波性 > ryouhasei\ ;
+快男子 > kaidanshi\ ;
+天狗茸 > tengutake\ ;
+狙撃兵 > sogekihei\ ;
+外輪山 > gairinzan\ ;
+昇降機 > shoukouki\ ;
+放火狂 > houkakyou\ ;
+風馬牛 > fuubagyuu\ ;
+陶器商 > toukishou\ ;
+三塁線 > sanruisen\ ;
+道義心 > dougishin\ ;
+超時空 > choujikuu\ ;
+微粒子 > biryuushi\ ;
+水平線 > suiheisen\ ;
+再尋問 > saijinmon\ ;
+清掃車 > seisousha\ ;
+最前線 > saizensen\ ;
+絶対者 > zettaisha\ ;
+正確度 > seikakudo\ ;
+氷削機 > hyousakki\ ;
+分解能 > bunkainou\ ;
+四角形 > shikakkei\ ;
+宣言書 > sengensho\ ;
+司令塔 > shireitou\ ;
+立太子 > rittaishi\ ;
+有蹄類 > yuuteirui\ ;
+使用者 > shiyousha\ ;
+天上界 > tenjoukai\ ;
+青海亀 > aoumigame\ ;
+来遊者 > raiyuusha\ ;
+巨人軍 > kyojingun\ ;
+学部生 > gakubusei\ ;
+工学部 > kougakubu\ ;
+教科書 > kyoukasho\ ;
+経済法 > keizaihou\ ;
+破傷風 > hashoufuu\ ;
+持参人 > jisan''nin\ ;
+総督府 > soutokufu\ ;
+日本髪 > nihongami\ ;
+制御棒 > seigyobou\ ;
+検案書 > ken''ansho\ ;
+歩道橋 > hodoukyou\ ;
+地方紙 > chihoushi\ ;
+日傭取 > hiyoutori\ ;
+地獄変 > jigokuhen\ ;
+合奏団 > gassoudan\ ;
+発振器 > hasshinki\ ;
+天井扇 > tenjousen\ ;
+全反射 > zenhansha\ ;
+変速機 > hensokuki\ ;
+無理式 > murishiki\ ;
+軽労働 > keiroudou\ ;
+正反合 > seihangou\ ;
+経済欄 > keizairan\ ;
+生字引 > ikijibiki\ ;
+投票区 > touhyouku\ ;
+木曜日 > mokuyoubi\ ;
+出木年 > dekidoshi\ ;
+碓氷峠 > usuitouge\ ;
+加入金 > kanyuukin\ ;
+民間人 > minkanjin\ ;
+公募株 > koubokabu\ ;
+乗馬服 > joubafuku\ ;
+日本領 > nihonryou\ ;
+著書名 > choshomei\ ;
+経営学 > keieigaku\ ;
+白鉛鉱 > hakuenkou\ ;
+粗目糖 > zarametou\ ;
+内玄関 > naigenkan\ ;
+地方税 > chihouzei\ ;
+巡査長 > junsachou\ ;
+印刷機 > insatsuki\ ;
+凍死者 > toushisha\ ;
+白銅貨 > hakudouka\ ;
+天球図 > tenkyuuzu\ ;
+八千年 > yachitose\ ;
+原始人 > genshijin\ ;
+加工賃 > kakouchin\ ;
+竹輪麩 > chikuwafu\ ;
+一方的 > ippouteki\ ;
+出仕事 > deshigoto\ ;
+正念場 > shounenba\ ;
+柔道場 > juudoujou\ ;
+脊髄炎 > sekizuien\ ;
+二重釜 > nijuugama\ ;
+立方体 > rippoutai\ ;
+遠隔性 > enkakusei\ ;
+軽歌劇 > keikageki\ ;
+制動灯 > seidoutou\ ;
+催眠剤 > saiminzai\ ;
+今一度 > imaichido\ ;
+攻防戦 > koubousen\ ;
+浄土宗 > joudoshuu\ ;
+操縦桿 > soujuukan\ ;
+文明館 > bunmeikan\ ;
+導関数 > doukansuu\ ;
+滞在地 > taizaichi\ ;
+上納米 > jounoumai\ ;
+宇宙服 > uchuufuku\ ;
+利口者 > rikoumono\ ;
+方法論 > houhouron\ ;
+蓋然性 > gaizensei\ ;
+半製品 > hanseihin\ ;
+一場面 > ichibamen\ ;
+石版画 > sekibanga\ ;
+登録簿 > tourokubo\ ;
+一昨晩 > issakuban\ ;
+多極化 > takyokuka\ ;
+大一番 > ooichiban\ ;
+衛星国 > eiseikoku\ ;
+下級生 > kakyuusei\ ;
+標準時 > hyoujunji\ ;
+高齢者 > koureisha\ ;
+一丁前 > itchoumae\ ;
+横恋慕 > yokorenbo\ ;
+財産税 > zaisanzei\ ;
+二重身 > nijuushin\ ;
+生理学 > seirigaku\ ;
+熱器具 > netsukigu\ ;
+寒冷紗 > kanreisha\ ;
+水道栓 > suidousen\ ;
+探索木 > tansakugi\ ;
+研究科 > kenkyuuka\ ;
+実施例 > jisshirei\ ;
+長音階 > chouonkai\ ;
+不評判 > fuhyouban\ ;
+選手団 > senshudan\ ;
+功利的 > kouriteki\ ;
+天球儀 > tenkyuugi\ ;
+真珠層 > shinjusou\ ;
+平均点 > heikinten\ ;
+連合会 > rengoukai\ ;
+工業化 > kougyouka\ ;
+赤道儀 > sekidougi\ ;
+文学座 > bungakuza\ ;
+労働党 > roudoutou\ ;
+経済戦 > keizaisen\ ;
+米空軍 > beikuugun\ ;
+敷居置 > shikiichi\ ;
+配当金 > haitoukin\ ;
+飛蚊症 > hibunshou\ ;
+赤痢菌 > sekirikin\ ;
+五十肩 > gojuukata\ ;
+高等官 > koutoukan\ ;
+地方版 > chihouban\ ;
+片脳油 > hen''nouyu\ ;
+奉行所 > bugyousho\ ;
+肯定文 > kouteibun\ ;
+芳香剤 > houkouzai\ ;
+火災流 > kasairyuu\ ;
+印刷所 > insatsujo\ ;
+大聖堂 > daiseidou\ ;
+経済性 > keizaisei\ ;
+蛇紋石 > jamonseki\ ;
+流行歌 > ryuukouka\ ;
+三角洲 > sankakusu\ ;
+三文判 > sanmonban\ ;
+三角波 > sankakuha\ ;
+実際性 > jissaisei\ ;
+竹矢来 > takeyarai\ ;
+平行線 > heikousen\ ;
+葱坊主 > negibouzu\ ;
+孫弟子 > magodeshi\ ;
+容積比 > yousekihi\ ;
+制酸剤 > seisanzai\ ;
+占取権 > senshuken\ ;
+主眼点 > shuganten\ ;
+遠隔地 > enkakuchi\ ;
+三角比 > sankakuhi\ ;
+長時間 > choujikan\ ;
+半端者 > hanpamono\ ;
+独禁法 > dokkinhou\ ;
+広告費 > koukokuhi\ ;
+最優遇 > saiyuuguu\ ;
+台風眼 > taifuugan\ ;
+未教育 > mikyouiku\ ;
+裁断師 > saidanshi\ ;
+全単射 > zentansha\ ;
+効果的 > koukateki\ ;
+空手形 > kuutegata\ ;
+印刻師 > inkokushi\ ;
+青年輩 > seinenhai\ ;
+割烹店 > kappouten\ ;
+貿易品 > bouekihin\ ;
+削岩機 > sakuganki\ ;
+完了後 > kanryougo\ ;
+大上段 > daijoudan\ ;
+園芸学 > engeigaku\ ;
+指相撲 > yubizumou\ ;
+肩甲帯 > kenkoutai\ ;
+正当性 > seitousei\ ;
+砂糖水 > satoumizu\ ;
+方錐形 > housuikei\ ;
+相当数 > soutousuu\ ;
+醸造酒 > jouzoushu\ ;
+左中間 > sachuukan\ ;
+伝令者 > denreisha\ ;
+木綿針 > momenbari\ ;
+木版画 > mokuhanga\ ;
+検査役 > kensayaku\ ;
+忘年会 > bounenkai\ ;
+宇宙学 > uchuugaku\ ;
+真理値 > shinrichi\ ;
+配水管 > haisuikan\ ;
+太陽風 > taiyoufuu\ ;
+使用法 > shiyouhou\ ;
+印刷屋 > insatsuya\ ;
+音声学 > onseigaku\ ;
+伊達女 > dateon''na\ ;
+副詞句 > fukushiku\ ;
+実数体 > jissuutai\ ;
+裏長屋 > uranagaya\ ;
+東工大 > toukoudai\ ;
+花時計 > hanadokei\ ;
+製造品 > seizouhin\ ;
+計算書 > keisansho\ ;
+制動手 > seidoushu\ ;
+不規律 > fukiritsu\ ;
+口腔癌 > koukougan\ ;
+回答者 > kaitousha\ ;
+単従陣 > tanjuujin\ ;
+反英雄 > han''eiyuu\ ;
+主権者 > shukensha\ ;
+大本山 > daihonzan\ ;
+中和剤 > chuuwazai\ ;
+慈善箱 > jizenbako\ ;
+最左翼 > saisayoku\ ;
+三角旗 > sankakuki\ ;
+加入者 > kanyuusha\ ;
+裾模様 > susomoyou\ ;
+一隻眼 > issekigan\ ;
+使用権 > shiyouken\ ;
+近体詩 > kintaishi\ ;
+天狼星 > tenrousei\ ;
+再犯者 > saihansha\ ;
+哨戒機 > shoukaiki\ ;
+通過駅 > tsuukaeki\ ;
+大人共 > otonadomo\ ;
+為放題 > shihoudai\ ;
+苦心談 > kushindan\ ;
+操縦士 > soujuushi\ ;
+真珠光 > shinjukou\ ;
+速度計 > sokudokei\ ;
+無責任 > musekinin\ ;
+播但線 > bantansen\ ;
+聖誕祭 > seitansai\ ;
+無一文 > muichimon\ ;
+常分数 > joubunsuu\ ;
+再考慮 > saikouryo\ ;
+儀典長 > gitenchou\ ;
+工学科 > kougakuka\ ;
+交歓会 > koukankai\ ;
+天象儀 > tenshougi\ ;
+引用文 > in''youbun\ ;
+荒法師 > arahoushi\ ;
+療養費 > ryouyouhi\ ;
+機関長 > kikanchou\ ;
+向地性 > kouchisei\ ;
+凱旋門 > gaisenmon\ ;
+設備費 > setsubihi\ ;
+裁縫師 > saihoushi\ ;
+財産権 > zaisanken\ ;
+同行者 > doukousha\ ;
+投石機 > tousekiki\ ;
+愛校心 > aikoushin\ ;
+伏魔殿 > fukumaden\ ;
+茶器組 > chakigumi\ ;
+三塁手 > sanruishu\ ;
+虚無的 > kyomuteki\ ;
+伝導性 > dendousei\ ;
+文字列 > mojiretsu\ ;
+反芻類 > hansuurui\ ;
+定型詩 > teikeishi\ ;
+水菓子 > mizugashi\ ;
+使用方 > shiyouhou\ ;
+黍団子 > kibidango\ ;
+軟口蓋 > nankougai\ ;
+闇相場 > yamisouba\ ;
+宇宙博 > uchuuhaku\ ;
+最前戦 > saizensen\ ;
+芥子菜 > karashina\ ;
+珍道具 > chindougu\ ;
+黄表紙 > kibyoushi\ ;
+従姉妹 > juushimai\ ;
+子福者 > kobukusha\ ;
+思想界 > shisoukai\ ;
+民衆化 > minshuuka\ ;
+鈍黄色 > nibukiiro\ ;
+三角形 > sankakkei\ ;
+大本営 > daihon''ei\ ;
+猛特訓 > moutokkun\ ;
+予告編 > yokokuhen\ ;
+冷湿布 > reishippu\ ;
+標準化 > hyoujunka\ ;
+南蛮人 > nanbanjin\ ;
+田園詩 > den''enshi\ ;
+三角座 > sankakuza\ ;
+再試験 > saishiken\ ;
+寒帯林 > kantairin\ ;
+傾斜面 > keishamen\ ;
+死亡者 > shibousha\ ;
+三角帆 > sankakuho\ ;
+半端物 > hanpamono\ ;
+婚姻法 > kon''inhou\ ;
+三角州 > sankakusu\ ;
+二重窓 > nijuumado\ ;
+自然類 > shizenrui\ ;
+専売品 > senbaihin\ ;
+不統一 > futouitsu\ ;
+夜会服 > yakaifuku\ ;
+予告篇 > yokokuhen\ ;
+党派心 > touhashin\ ;
+思想犯 > shisouhan\ ;
+弁当代 > bentoudai\ ;
+肝臓癌 > kanzougan\ ;
+経済人 > keizaijin\ ;
+仏教徒 > bukkyouto\ ;
+米海軍 > beikaigun\ ;
+含油層 > gan''yusou\ ;
+情報誌 > jouhoushi\ ;
+凱旋軍 > gaisengun\ ;
+落伍者 > rakugosha\ ;
+融解点 > yuukaiten\ ;
+淋巴球 > rinpakyuu\ ;
+嫌煙権 > ken''enken\ ;
+夫婦仲 > fuufunaka\ ;
+感染原 > kansengen\ ;
+迎賓館 > geihinkan\ ;
+評議会 > hyougikai\ ;
+好男子 > koudanshi\ ;
+早春賦 > soushunfu\ ;
+喉頭癌 > koutougan\ ;
+寝業師 > newazashi\ ;
+人格化 > jinkakuka\ ;
+綺麗事 > kireigoto\ ;
+記名株 > kimeikabu\ ;
+携帯品 > keitaihin\ ;
+駐屯所 > chuutonjo\ ;
+研究所 > kenkyuujo\ ;
+最先端 > saisentan\ ;
+居住者 > kyojuusha\ ;
+誇張法 > kochouhou\ ;
+視覚化 > shikakuka\ ;
+中華街 > chuukagai\ ;
+連判状 > renbanjou\ ;
+麝香猫 > jakouneko\ ;
+変光星 > henkousei\ ;
+審査官 > shinsakan\ ;
+多用中 > tayouchuu\ ;
+早東戦 > soutousen\ ;
+黙秘権 > mokuhiken\ ;
+冒険談 > boukendan\ ;
+常備薬 > joubiyaku\ ;
+妊婦服 > ninpufuku\ ;
+体重計 > taijuukei\ ;
+警官隊 > keikantai\ ;
+講談社 > koudansha\ ;
+近代詩 > kindaishi\ ;
+煙草銭 > tabakosen\ ;
+間投詞 > kantoushi\ ;
+答弁者 > toubensha\ ;
+平行棒 > heikoubou\ ;
+蟻地獄 > arijigoku\ ;
+扁桃腺 > hentousen\ ;
+公判廷 > kouhantei\ ;
+数億年 > suuokunen\ ;
+盆灯籠 > bondourou\ ;
+終戦後 > shuusengo\ ;
+編集部 > henshuubu\ ;
+周囲長 > shuuichou\ ;
+公選制 > kousensei\ ;
+修理工 > shuurikou\ ;
+最適化 > saitekika\ ;
+化学者 > kagakusha\ ;
+贈賄罪 > zouwaizai\ ;
+不承認 > fushounin\ ;
+五重唱 > gojuushou\ ;
+年齢順 > nenreijun\ ;
+賭博場 > tobakujou\ ;
+看守者 > kanshusha\ ;
+弱電器 > jakudenki\ ;
+日本的 > nihonteki\ ;
+開墾地 > kaikonchi\ ;
+禁猟期 > kinryouki\ ;
+前額部 > zengakubu\ ;
+評論家 > hyouronka\ ;
+一斉安 > isseiyasu\ ;
+一親等 > isshintou\ ;
+再放送 > saihousou\ ;
+興行化 > kougyouka\ ;
+化学線 > kagakusen\ ;
+戦死者 > senshisha\ ;
+一文字 > ichimonji\ ;
+文士連 > bunshiren\ ;
+木綿糸 > momen''ito\ ;
+焦電気 > shoudenki\ ;
+授与式 > juyoshiki\ ;
+目分量 > mebunryou\ ;
+天下一 > tenkaichi\ ;
+中古品 > chuukohin\ ;
+市場性 > shijousei\ ;
+中性塩 > chuuseien\ ;
+文語調 > bungochou\ ;
+散兵線 > sanpeisen\ ;
+流行児 > ryuukouji\ ;
+又従弟 > mataitoko\ ;
+腹時計 > haradokei\ ;
+布袋腹 > hoteibara\ ;
+無教育 > mukyouiku\ ;
+研究家 > kenkyuuka\ ;
+教区民 > kyoukumin\ ;
+地震帯 > jishintai\ ;
+長期戦 > choukisen\ ;
+通知簿 > tsuuchibo\ ;
+加工業 > kakougyou\ ;
+不行状 > fugyoujou\ ;
+胡麻油 > gomaabura\ ;
+日本猿 > nihonzaru\ ;
+旧世界 > kyuusekai\ ;
+水平動 > suiheidou\ ;
+短大生 > tandaisei\ ;
+肖像画 > shouzouga\ ;
+一角獣 > ikkakujuu\ ;
+可変長 > kahenchou\ ;
+一要素 > ichiyouso\ ;
+児童劇 > jidougeki\ ;
+埋葬地 > maisouchi\ ;
+上製本 > jouseibon\ ;
+両性花 > ryouseika\ ;
+実行者 > jikkousha\ ;
+傾斜計 > keishakei\ ;
+犯罪者 > hanzaisha\ ;
+絶交状 > zekkoujou\ ;
+外来者 > gairaisha\ ;
+伝導体 > dendoutai\ ;
+斜滑降 > shakakkou\ ;
+常平倉 > jouheisou\ ;
+主催者 > shusaisha\ ;
+柔軟性 > juunansei\ ;
+分担金 > buntankin\ ;
+冷蔵車 > reizousha\ ;
+最高裁 > saikousai\ ;
+加入権 > kanyuuken\ ;
+前住所 > zenjuusho\ ;
+展望塔 > tenboutou\ ;
+過敏症 > kabinshou\ ;
+人頭税 > nintouzei\ ;
+舞台劇 > butaigeki\ ;
+平均値 > heikinchi\ ;
+格子面 > koushimen\ ;
+水茶屋 > mizuchaya\ ;
+情報網 > jouhoumou\ ;
+巴旦杏 > hatankyou\ ;
+審美眼 > shinbigan\ ;
+処世訓 > shoseikun\ ;
+自然観 > shizenkan\ ;
+脂肪酸 > shibousan\ ;
+門外漢 > mongaikan\ ;
+抗菌性 > koukinsei\ ;
+伝染性 > densensei\ ;
+未組織 > misoshiki\ ;
+水様液 > suiyoueki\ ;
+救助隊 > kyuujotai\ ;
+保存量 > hozonryou\ ;
+核兵器 > kakuheiki\ ;
+不満足 > fumanzoku\ ;
+長談議 > nagadangi\ ;
+冒険者 > boukensha\ ;
+羽蒲団 > hanebuton\ ;
+地方債 > chihousai\ ;
+本場物 > honbamono\ ;
+語学者 > gogakusha\ ;
+再試行 > saishikou\ ;
+居丈高 > itakedaka\ ;
+太陽系 > taiyoukei\ ;
+研究員 > kenkyuuin\ ;
+弥縫策 > bihousaku\ ;
+無報酬 > muhoushuu\ ;
+蘆溝橋 > rokoukyou\ ;
+絶対値 > zettaichi\ ;
+天頂儀 > tenchougi\ ;
+海賊王 > kaizokuou\ ;
+財界人 > zaikaijin\ ;
+風来坊 > fuuraibou\ ;
+寒冷地 > kanreichi\ ;
+前置詞 > zenchishi\ ;
+加判人 > kahan''nin\ ;
+動滑車 > doukassha\ ;
+結氷期 > keppyouki\ ;
+展望台 > tenboudai\ ;
+礼拝堂 > reihaidou\ ;
+高性能 > kouseinou\ ;
+乾海苔 > hoshinori\ ;
+使用例 > shiyourei\ ;
+有田焼 > aritayaki\ ;
+高周波 > koushuuha\ ;
+尿検査 > nyoukensa\ ;
+環状線 > kanjousen\ ;
+発想法 > hassouhou\ ;
+免税点 > menzeiten\ ;
+値段表 > nedanhyou\ ;
+直弟子 > jikideshi\ ;
+連邦制 > renpousei\ ;
+使用人 > shiyounin\ ;
+植木鉢 > uekibachi\ ;
+照射野 > shoushaya\ ;
+慈善心 > jizenshin\ ;
+木煉瓦 > mokurenga\ ;
+木綿物 > momenmono\ ;
+六分儀 > rokubungi\ ;
+視地平 > shichihei\ ;
+工作員 > kousakuin\ ;
+回漕店 > kaisouten\ ;
+石炭紀 > sekitanki\ ;
+投機的 > toukiteki\ ;
+猟犬座 > ryoukenza\ ;
+皮財布 > kawazaifu\ ;
+脳血栓 > noukessen\ ;
+正則化 > seisokuka\ ;
+大奥様 > oookusama\ ;
+欠陥車 > kekkansha\ ;
+一大事 > ichidaiji\ ;
+連分数 > renbunsuu\ ;
+修理代 > shuuridai\ ;
+蕁麻疹 > jinmashin\ ;
+具申書 > gushinsho\ ;
+読書家 > dokushoka\ ;
+美術部 > bijutsubu\ ;
+感謝祭 > kanshasai\ ;
+貴方方 > anatagata\ ;
+東京都 > toukyouto\ ;
+旧字体 > kyuujitai\ ;
+無調法 > buchouhou\ ;
+製作費 > seisakuhi\ ;
+二週間 > nishuukan\ ;
+部落民 > burakumin\ ;
+加盟国 > kameikoku\ ;
+一夜中 > hitoyajuu\ ;
+構造体 > kouzoutai\ ;
+中医学 > chuuigaku\ ;
+受信者 > jushinsha\ ;
+会議録 > kaigiroku\ ;
+禁煙車 > kin''ensha\ ;
+電子銃 > denshijuu\ ;
+具体策 > gutaisaku\ ;
+車掌区 > shashouku\ ;
+他国民 > takokumin\ ;
+儒学者 > jugakusha\ ;
+名探偵 > meitantei\ ;
+国連旗 > kokurenki\ ;
+又従兄 > mataitoko\ ;
+鯣烏賊 > surumeika\ ;
+全市民 > zenshimin\ ;
+報道官 > houdoukan\ ;
+日本晴 > nihonbare\ ;
+布団皮 > futongawa\ ;
+修繕費 > shuuzenhi\ ;
+専門書 > senmonsho\ ;
+公用車 > kouyousha\ ;
+耐性菌 > taiseikin\ ;
+同種類 > doushurui\ ;
+音域外 > on''ikigai\ ;
+親和性 > shinwasei\ ;
+前頭葉 > zentouyou\ ;
+珠暖簾 > tamanoren\ ;
+九星家 > kyuuseika\ ;
+通気孔 > tsuukikou\ ;
+隣人愛 > rinjin''ai\ ;
+不承知 > fushouchi\ ;
+死亡数 > shibousuu\ ;
+居住権 > kyojuuken\ ;
+鉤括弧 > kagikakko\ ;
+倦怠感 > kentaikan\ ;
+冷蔵船 > reizousen\ ;
+合成酒 > gouseishu\ ;
+味噌汁 > misoshiru\ ;
+指導者 > shidousha\ ;
+半可通 > hankatsuu\ ;
+無警告 > mukeikoku\ ;
+大西郷 > daisaigou\ ;
+睡眠剤 > suiminzai\ ;
+旋盤工 > senbankou\ ;
+帯分数 > taibunsuu\ ;
+後継者 > koukeisha\ ;
+長談義 > nagadangi\ ;
+天日塩 > tenpishio\ ;
+威圧的 > iatsuteki\ ;
+二重底 > nijuuzoko\ ;
+又弟子 > matadeshi\ ;
+救命具 > kyuumeigu\ ;
+禁猟区 > kinryouku\ ;
+弩級艦 > dokyuukan\ ;
+恒久化 > koukyuuka\ ;
+具体的 > gutaiteki\ ;
+腹一杯 > haraippai\ ;
+格理論 > kakuriron\ ;
+感謝状 > kanshajou\ ;
+現行犯 > genkouhan\ ;
+日付印 > hidzukein\ ;
+太陽灯 > taiyoutou\ ;
+常用者 > jouyousha\ ;
+情報源 > jouhougen\ ;
+公使館 > koushikan\ ;
+帆立貝 > hotategai\ ;
+若武者 > wakamusha\ ;
+清算書 > seisansho\ ;
+本街道 > honkaidou\ ;
+郵便車 > yuubinsha\ ;
+一点機 > ichitenki\ ;
+夏風邪 > natsukaze\ ;
+中道派 > chuudouha\ ;
+暴風域 > boufuuiki\ ;
+発禁本 > hakkinbon\ ;
+圧電気 > atsudenki\ ;
+巨人党 > kyojintou\ ;
+時代物 > jidaimono\ ;
+屏風岩 > byoubuiwa\ ;
+快記録 > kaikiroku\ ;
+暴風圏 > boufuuken\ ;
+講談師 > koudanshi\ ;
+不成績 > fuseiseki\ ;
+多音節 > taonsetsu\ ;
+連帯感 > rentaikan\ ;
+部分的 > bubunteki\ ;
+専門店 > senmonten\ ;
+慣用音 > kan''youon\ ;
+夜仕事 > yoshigoto\ ;
+演習林 > enshuurin\ ;
+某高校 > boukoukou\ ;
+綿菓子 > watagashi\ ;
+跨線橋 > kosenkyou\ ;
+煙草盆 > tabakobon\ ;
+受験票 > jukenhyou\ ;
+内斜視 > naishashi\ ;
+電信機 > denshinki\ ;
+圧縮機 > asshukuki\ ;
+実行権 > jikkouken\ ;
+科学者 > kagakusha\ ;
+現行法 > genkouhou\ ;
+自然界 > shizenkai\ ;
+懸垂線 > kensuisen\ ;
+上手者 > jouzumono\ ;
+日本学 > nihongaku\ ;
+排障器 > haishouki\ ;
+真夏日 > manatsubi\ ;
+感無量 > kanmuryou\ ;
+給付金 > kyuufukin\ ;
+代名詞 > daimeishi\ ;
+救助船 > kyuujosen\ ;
+牽引車 > ken''insha\ ;
+居住性 > kyojuusei\ ;
+抗凝固 > kougyouko\ ;
+看護長 > kangochou\ ;
+低性能 > teiseinou\ ;
+無計画 > mukeikaku\ ;
+多面角 > tamenkaku\ ;
+低周波 > teishuuha\ ;
+理想郷 > risoukyou\ ;
+被爆者 > hibakusha\ ;
+精製糖 > seiseitou\ ;
+化学戦 > kagakusen\ ;
+有用性 > yuuyousei\ ;
+娯楽街 > gorakugai\ ;
+後天性 > koutensei\ ;
+校友会 > kouyuukai\ ;
+単利表 > tanrihyou\ ;
+療養所 > ryouyoujo\ ;
+保守的 > hoshuteki\ ;
+皇民党 > koumintou\ ;
+二重唱 > nijuushou\ ;
+免税店 > menzeiten\ ;
+卵胎生 > rantaisei\ ;
+線香代 > senkoudai\ ;
+対角化 > taikakuka\ ;
+最高点 > saikouten\ ;
+最低限 > saiteigen\ ;
+歌合戦 > utagassen\ ;
+平和賞 > heiwashou\ ;
+数係数 > suukeisuu\ ;
+木炭画 > mokutanga\ ;
+再降臨 > saikourin\ ;
+再調査 > saichousa\ ;
+高野槙 > kouyamaki\ ;
+定滑車 > teikassha\ ;
+似我蜂 > jigabachi\ ;
+旋光性 > senkousei\ ;
+名投手 > meitoushu\ ;
+採算性 > saisansei\ ;
+企業者 > kigyousha\ ;
+銀砂子 > ginsunago\ ;
+国分寺 > kokubunji\ ;
+養豚場 > youtonjou\ ;
+非対称 > hitaishou\ ;
+不銹鋼 > fushuukou\ ;
+一院制 > ichiinsei\ ;
+手仕事 > teshigoto\ ;
+胆嚢炎 > tan''nouen\ ;
+強打者 > kyoudasha\ ;
+規範的 > kihanteki\ ;
+羅紗紙 > rashagami\ ;
+脱衣場 > datsuijou\ ;
+救助網 > kyuujomou\ ;
+当選者 > tousensha\ ;
+太陰暦 > taiinreki\ ;
+揚羽蝶 > agehachou\ ;
+士君子 > shikunshi\ ;
+腰羽目 > koshibame\ ;
+片一方 > kataippou\ ;
+阿片窟 > ahenkutsu\ ;
+吾木香 > waremokou\ ;
+大型車 > oogatasha\ ;
+夏季熱 > kakinetsu\ ;
+内陸霧 > nairikumu\ ;
+植字機 > shokujiki\ ;
+遊覧船 > yuuransen\ ;
+乳房炎 > nyuubouen\ ;
+脳挫傷 > nouzashou\ ;
+学生課 > gakuseika\ ;
+藁布団 > warabuton\ ;
+投機心 > toukishin\ ;
+郵便船 > yuubinsen\ ;
+青年団 > seinendan\ ;
+勧告案 > kankokuan\ ;
+天文台 > tenmondai\ ;
+自然法 > shizenhou\ ;
+石灰洞 > sekkaidou\ ;
+増刊号 > zoukangou\ ;
+内大臣 > naidaijin\ ;
+現在地 > genzaichi\ ;
+戦車隊 > senshatai\ ;
+二重丸 > nijuumaru\ ;
+酒造場 > shuzoujou\ ;
+愛読者 > aidokusha\ ;
+石灰水 > sekkaisui\ ;
+大地震 > daijishin\ ;
+不拡大 > fukakudai\ ;
+主導者 > shudousha\ ;
+高蒔絵 > takamakie\ ;
+自然死 > shizenshi\ ;
+居住地 > kyojuuchi\ ;
+決死隊 > kesshitai\ ;
+主脳者 > shunousha\ ;
+舞楽面 > bugakumen\ ;
+魚介類 > gyokairui\ ;
+最高検 > saikouken\ ;
+熱汚染 > netsuosen\ ;
+恒星年 > kouseinen\ ;
+自在鉤 > jizaikagi\ ;
+競走馬 > kyousouba\ ;
+御手洗 > mitarashi\ ;
+増幅器 > zoufukuki\ ;
+日本側 > nihongawa\ ;
+人類史 > jinruishi\ ;
+苦労様 > kurousama\ ;
+禀請書 > rinseisho\ ;
+俳諧師 > haikaishi\ ;
+慣用語 > kan''yougo\ ;
+女学生 > jogakusei\ ;
+電子管 > denshikan\ ;
+梵天王 > bonten''ou\ ;
+合成紙 > gouseishi\ ;
+黄銅鉱 > koudoukou\ ;
+司教区 > shikyouku\ ;
+解散権 > kaisanken\ ;
+適齢期 > tekireiki\ ;
+威嚇的 > ikakuteki\ ;
+銃連射 > juurensha\ ;
+免税品 > menzeihin\ ;
+高水準 > kousuijun\ ;
+太陽年 > taiyounen\ ;
+石細工 > ishizaiku\ ;
+寝小便 > neshouben\ ;
+冷蔵法 > reizouhou\ ;
+配分法 > haibunhou\ ;
+耽美的 > tanbiteki\ ;
+潜航艇 > senkoutei\ ;
+同窓生 > dousousei\ ;
+放浪者 > hourousha\ ;
+種概念 > shugainen\ ;
+早明戦 > soumeisen\ ;
+微積分 > bisekibun\ ;
+鳥瞰図 > choukanzu\ ;
+女王蜂 > jooubachi\ ;
+外交官 > gaikoukan\ ;
+歯肉炎 > shinikuen\ ;
+自然林 > shizenrin\ ;
+演習場 > enshuujou\ ;
+小麦色 > komugiiro\ ;
+魚貝類 > gyokairui\ ;
+復古調 > fukkochou\ ;
+反省会 > hanseikai\ ;
+熱帯魚 > nettaigyo\ ;
+単葉機 > tan''youki\ ;
+所有者 > shoyuusha\ ;
+販売者 > hanbaisha\ ;
+主人顔 > shujingao\ ;
+滑稽者 > odokemono\ ;
+水飢饉 > mizukikin\ ;
+海上法 > kaijouhou\ ;
+熱可塑 > netsukaso\ ;
+化学品 > kagakuhin\ ;
+子沢山 > kodakusan\ ;
+余水吐 > yosuihaki\ ;
+昨年度 > sakunendo\ ;
+自然数 > shizensuu\ ;
+再訂版 > saiteiban\ ;
+青年会 > seinenkai\ ;
+現地人 > genchijin\ ;
+市街戦 > shigaisen\ ;
+懐疑心 > kaigishin\ ;
+朝日影 > asahikage\ ;
+誘導弾 > yuudoudan\ ;
+販売網 > hanbaimou\ ;
+八百万 > yaoyorozu\ ;
+貧乏人 > binbounin\ ;
+工事中 > koujichuu\ ;
+窃盗罪 > settouzai\ ;
+原裁判 > gensaiban\ ;
+点火薬 > tenkayaku\ ;
+海上権 > kaijouken\ ;
+化学剤 > kagakuzai\ ;
+精製法 > seiseihou\ ;
+方眼紙 > houganshi\ ;
+受賞者 > jushousha\ ;
+推薦者 > suisensha\ ;
+雪模様 > yukimoyou\ ;
+一級品 > ikkyuuhin\ ;
+格子点 > koushiten\ ;
+購買者 > koubaisha\ ;
+一等賞 > ittoushou\ ;
+他国人 > takokujin\ ;
+空気浴 > kuukiyoku\ ;
+外交団 > gaikoudan\ ;
+執行部 > shikkoubu\ ;
+理神論 > rishinron\ ;
+受験料 > jukenryou\ ;
+勝手元 > kattemoto\ ;
+相対論 > soutairon\ ;
+刊行会 > kankoukai\ ;
+卑金属 > hikinzoku\ ;
+保育料 > hoikuryou\ ;
+総資産 > soushisan\ ;
+住民税 > juuminzei\ ;
+圧縮器 > asshukuki\ ;
+俸給日 > houkyuubi\ ;
+行政府 > gyouseifu\ ;
+処女膜 > shojomaku\ ;
+随伴者 > zuihansha\ ;
+車海老 > kurumaebi\ ;
+悪宣伝 > akusenden\ ;
+多面的 > tamenteki\ ;
+対戦車 > taisensha\ ;
+苦労性 > kuroushou\ ;
+恐妻家 > kyousaika\ ;
+主宰者 > shusaisha\ ;
+半鹹水 > hankansui\ ;
+密航者 > mikkousha\ ;
+一等親 > ittoushin\ ;
+注連縄 > shimenawa\ ;
+補強筋 > hokyoukin\ ;
+看板屋 > kanban''ya\ ;
+社員寮 > shainryou\ ;
+呼吸法 > kokyuuhou\ ;
+体量器 > tairyouki\ ;
+化学上 > kagakujou\ ;
+伽藍鳥 > garanchou\ ;
+心臓部 > shinzoubu\ ;
+最高峰 > saikouhou\ ;
+競輪場 > keirinjou\ ;
+重婚者 > juukonsha\ ;
+要撃機 > yougekiki\ ;
+気化熱 > kikanetsu\ ;
+日教組 > nikkyouso\ ;
+三等星 > santousei\ ;
+命名法 > meimeihou\ ;
+参加国 > sankakoku\ ;
+未開拓 > mikaitaku\ ;
+再編成 > saihensei\ ;
+透水性 > tousuisei\ ;
+反対論 > hantairon\ ;
+学芸員 > gakugeiin\ ;
+冷凍魚 > reitougyo\ ;
+敗残兵 > haizanhei\ ;
+書生論 > shoseiron\ ;
+志望者 > shibousha\ ;
+財政難 > zaiseinan\ ;
+制癌剤 > seiganzai\ ;
+発泡剤 > happouzai\ ;
+伝奇的 > denkiteki\ ;
+絆創膏 > bansoukou\ ;
+保存料 > hozonryou\ ;
+石灰岩 > sekkaigan\ ;
+兵学校 > heigakkou\ ;
+富山県 > toyamaken\ ;
+近代史 > kindaishi\ ;
+該当者 > gaitousha\ ;
+点数制 > tensuusei\ ;
+高知県 > kouchiken\ ;
+口上書 > koujousho\ ;
+解放感 > kaihoukan\ ;
+平和的 > heiwateki\ ;
+自閉症 > jiheishou\ ;
+飲用水 > in''yousui\ ;
+太陽光 > taiyoukou\ ;
+橋頭保 > kyoutouho\ ;
+古書市 > koshoichi\ ;
+天然塩 > ten''nenen\ ;
+公害罪 > kougaizai\ ;
+淫売宿 > inbaiyado\ ;
+起請文 > kishoumon\ ;
+碁盤縞 > gobanjima\ ;
+俗世間 > zokuseken\ ;
+甘納豆 > amanattou\ ;
+乾酪素 > kanrakuso\ ;
+冶金学 > yakingaku\ ;
+冗長度 > jouchoudo\ ;
+私家集 > shikashuu\ ;
+市街地 > shigaichi\ ;
+可読性 > kadokusei\ ;
+明示的 > meijiteki\ ;
+大回転 > daikaiten\ ;
+呉服店 > gofukuten\ ;
+中華丼 > chuukadon\ ;
+大西洋 > taiseiyou\ ;
+理想的 > risouteki\ ;
+妻帯者 > saitaisha\ ;
+八宝菜 > happousai\ ;
+双蹄獸 > souteijuu\ ;
+国全土 > kokuzendo\ ;
+二進法 > nishinhou\ ;
+羽布団 > hanebuton\ ;
+自然増 > shizenzou\ ;
+時代劇 > jidaigeki\ ;
+混成酒 > konseishu\ ;
+公倍数 > koubaisuu\ ;
+処方箋 > shohousen\ ;
+癌細胞 > gansaibou\ ;
+累減税 > ruigenzei\ ;
+所作事 > shosagoto\ ;
+無限小 > mugenshou\ ;
+窃盗犯 > settouhan\ ;
+仕手株 > shitekabu\ ;
+口下手 > kuchibeta\ ;
+金曜日 > kin''youbi\ ;
+低水準 > teisuijun\ ;
+製作所 > seisakujo\ ;
+伝声管 > denseikan\ ;
+陰武者 > kagemusha\ ;
+量子化 > ryoushika\ ;
+好一対 > kouittsui\ ;
+事務局 > jimukyoku\ ;
+副鼻腔 > fukubikuu\ ;
+浪費癖 > rouhiheki\ ;
+給費生 > kyuuhisei\ ;
+県人会 > kenjinkai\ ;
+主任者 > shuninsha\ ;
+公用文 > kouyoubun\ ;
+行政区 > gyouseiku\ ;
+推薦状 > suisenjou\ ;
+中距離 > chuukyori\ ;
+共産化 > kyousanka\ ;
+会期中 > kaikichuu\ ;
+野球場 > yakyuujou\ ;
+閑古鳥 > kankodori\ ;
+産褥期 > sanjokuki\ ;
+主導権 > shudouken\ ;
+募金箱 > bokinbako\ ;
+硬口蓋 > koukougai\ ;
+史記抄 > shikishou\ ;
+年齢層 > nenreisou\ ;
+頭頂部 > touchoubu\ ;
+早場米 > hayabamai\ ;
+口語訳 > kougoyaku\ ;
+油圧計 > yuatsukei\ ;
+二毛作 > nimousaku\ ;
+検糖計 > kentoukei\ ;
+誘導体 > yuudoutai\ ;
+真四角 > mashikaku\ ;
+申命記 > shinmeiki\ ;
+脂肪層 > shibousou\ ;
+物品税 > buppinzei\ ;
+鳳翅鐘 > houshitou\ ;
+層積雲 > sousekiun\ ;
+秒時計 > byoudokei\ ;
+珊瑚礁 > sangoshou\ ;
+連体詞 > rentaishi\ ;
+屁理屈 > herikutsu\ ;
+同情者 > doujousha\ ;
+志願者 > shigansha\ ;
+浪人生 > rouninsei\ ;
+不可逆 > fukagyaku\ ;
+大阪市 > oosakashi\ ;
+愛読書 > aidokusho\ ;
+可塑物 > kasobutsu\ ;
+新造語 > shinzougo\ ;
+反対者 > hantaisha\ ;
+黒砂糖 > kurozatou\ ;
+玄米茶 > genmaicha\ ;
+演繹法 > en''ekihou\ ;
+臨場感 > rinjoukan\ ;
+偏西風 > henseifuu\ ;
+香味料 > koumiryou\ ;
+正甲板 > seikanpan\ ;
+審議会 > shingikai\ ;
+青森県 > aomoriken\ ;
+不感症 > fukanshou\ ;
+禁衛隊 > kin''eitai\ ;
+放水車 > housuisha\ ;
+耐水性 > taisuisei\ ;
+玄関番 > genkanban\ ;
+前夜祭 > zen''yasai\ ;
+月桂冠 > gekkeikan\ ;
+二刀流 > nitouryuu\ ;
+所有権 > shoyuuken\ ;
+冷凍車 > reitousha\ ;
+来会者 > raikaisha\ ;
+上等品 > joutouhin\ ;
+荒療治 > araryouji\ ;
+楽観論 > rakkanron\ ;
+倶舎宗 > kushashuu\ ;
+無言劇 > mugongeki\ ;
+入苑券 > nyuuenken\ ;
+腱鞘炎 > kenshouen\ ;
+高年者 > kounensha\ ;
+探海灯 > tankaitou\ ;
+無規律 > mukiritsu\ ;
+形容詞 > keiyoushi\ ;
+岩雲雀 > iwahibari\ ;
+徒競走 > tokyousou\ ;
+不戦勝 > fusenshou\ ;
+自然人 > shizenjin\ ;
+家庭的 > kateiteki\ ;
+高気圧 > koukiatsu\ ;
+滑稽本 > kokkeibon\ ;
+女子寮 > joshiryou\ ;
+政治的 > seijiteki\ ;
+上等兵 > joutouhei\ ;
+原稿紙 > genkoushi\ ;
+色眼鏡 > iromegane\ ;
+楽譜台 > gakufudai\ ;
+冷水塊 > reisuikai\ ;
+保護色 > hogoshoku\ ;
+色収差 > iroshuusa\ ;
+美術家 > bijutsuka\ ;
+再評価 > saihyouka\ ;
+競争馬 > kyousouba\ ;
+準備中 > junbichuu\ ;
+光合成 > kougousei\ ;
+悪条件 > akujouken\ ;
+三悪趣 > sanakushu\ ;
+主産地 > shusanchi\ ;
+貴方々 > anatagata\ ;
+巻積雲 > kensekiun\ ;
+希硫酸 > kiryuusan\ ;
+脱穀機 > dakkokuki\ ;
+鼎談会 > teidankai\ ;
+複本位 > fukuhon''i\ ;
+俗趣味 > zokushumi\ ;
+終止符 > shuushifu\ ;
+精製品 > seiseihin\ ;
+憲兵隊 > kenpeitai\ ;
+配偶者 > haiguusha\ ;
+充当金 > juutoukin\ ;
+消火栓 > shoukasen\ ;
+寄留者 > kiryuusha\ ;
+灰神楽 > haikagura\ ;
+不量見 > furyouken\ ;
+金一封 > kin''ippuu\ ;
+床運動 > yukaundou\ ;
+寄生虫 > kiseichuu\ ;
+三等分 > santoubun\ ;
+喫水線 > kissuisen\ ;
+悪玉化 > akudamaka\ ;
+超簡易 > choukan''i\ ;
+戯作者 > gesakusha\ ;
+青瓢箪 > aobyoutan\ ;
+患者様 > kanjasama\ ;
+五寸釘 > gosunkugi\ ;
+仮登記 > karitouki\ ;
+合同軍 > goudougun\ ;
+非現業 > higengyou\ ;
+勤労者 > kinrousha\ ;
+固定長 > koteichou\ ;
+殺菌剤 > sakkinzai\ ;
+洋服屋 > youfukuya\ ;
+起爆剤 > kibakuzai\ ;
+表示灯 > hyoujitou\ ;
+便利帳 > benrichou\ ;
+取材班 > shuzaihan\ ;
+脂肪体 > shiboutai\ ;
+郵便屋 > yuubin''ya\ ;
+中辞典 > chuujiten\ ;
+洗面台 > senmendai\ ;
+内裏雛 > dairibina\ ;
+全二重 > zen''nijuu\ ;
+溶解性 > youkaisei\ ;
+整数論 > seisuuron\ ;
+民社党 > minshatou\ ;
+企画書 > kikakusho\ ;
+生地獄 > ikijigoku\ ;
+純米酒 > junmaishu\ ;
+回遊魚 > kaiyuugyo\ ;
+無関心 > mukanshin\ ;
+友人間 > yuujinkan\ ;
+有斐閣 > yuuhikaku\ ;
+販売店 > hanbaiten\ ;
+志望校 > shiboukou\ ;
+奉迎門 > hougeimon\ ;
+面会人 > menkainin\ ;
+一箇月 > ikkagetsu\ ;
+送水管 > sousuikan\ ;
+冷凍船 > reitousen\ ;
+年配者 > nenpaisha\ ;
+手数料 > tesuuryou\ ;
+離魂病 > rikonbyou\ ;
+水中花 > suichuuka\ ;
+動名詞 > doumeishi\ ;
+黄金色 > koganeiro\ ;
+二元的 > nigenteki\ ;
+縞栗鼠 > shimarisu\ ;
+娯楽場 > gorakujou\ ;
+遊覧地 > yuuranchi\ ;
+本因坊 > hon''inbou\ ;
+共栄圏 > kyoueiken\ ;
+相対死 > aitaijini\ ;
+国自慢 > kunijiman\ ;
+重大視 > juudaishi\ ;
+企業内 > kigyounai\ ;
+同窓会 > dousoukai\ ;
+法蓮草 > hourensou\ ;
+海外版 > kaigaiban\ ;
+扇状地 > senjouchi\ ;
+打撃戦 > dagekisen\ ;
+透写紙 > toushashi\ ;
+人文史 > jinbunshi\ ;
+指定券 > shiteiken\ ;
+香水瓶 > kousuibin\ ;
+熱帯病 > netaibyou\ ;
+伝記物 > denkimono\ ;
+計量器 > keiryouki\ ;
+補償金 > hoshoukin\ ;
+軽犯罪 > keihanzai\ ;
+霰弾銃 > sandanjuu\ ;
+合憲性 > goukensei\ ;
+地鎮祭 > jichinsai\ ;
+主体性 > shutaisei\ ;
+素粒子 > soryuushi\ ;
+奇麗事 > kireigoto\ ;
+蝿地獄 > haejigoku\ ;
+大災害 > daisaigai\ ;
+楽天家 > rakutenka\ ;
+理性的 > riseiteki\ ;
+鼓笛隊 > kotekitai\ ;
+寒暖計 > kandankei\ ;
+花粉症 > kafunshou\ ;
+人為的 > jin''iteki\ ;
+受領者 > juryousha\ ;
+企画性 > kikakusei\ ;
+内需型 > naijugata\ ;
+原成岩 > genseigan\ ;
+表示板 > hyoujiban\ ;
+永久歯 > eikyuushi\ ;
+千社札 > senjafuda\ ;
+菩提心 > bodaishin\ ;
+表示書 > hyoujisho\ ;
+精算書 > seisansho\ ;
+放水管 > housuikan\ ;
+双子葉 > soushiyou\ ;
+性転換 > seitenkan\ ;
+輸送量 > yusouryou\ ;
+所有地 > shoyuuchi\ ;
+鼓手長 > koshuchou\ ;
+総本店 > souhonten\ ;
+元気者 > genkimono\ ;
+代弁者 > daibensha\ ;
+町医者 > machiisha\ ;
+製材所 > seizaisho\ ;
+反乱軍 > hanrangun\ ;
+総人口 > soujinkou\ ;
+店仕舞 > misejimai\ ;
+中保者 > chuuhosha\ ;
+立法者 > rippousha\ ;
+草相撲 > kusazumou\ ;
+予備錨 > yobiikari\ ;
+歓送会 > kansoukai\ ;
+双翅類 > soushirui\ ;
+紙細工 > kamizaiku\ ;
+山水荘 > sansuisou\ ;
+表沙汰 > omotezata\ ;
+唐獅子 > karajishi\ ;
+平和国 > heiwakoku\ ;
+低気圧 > teikiatsu\ ;
+作業用 > sagyouyou\ ;
+水害地 > suigaichi\ ;
+総本山 > souhonzan\ ;
+演説家 > enzetsuka\ ;
+盲腸炎 > mouchouen\ ;
+稀硫酸 > kiryuusan\ ;
+遣唐使 > kentoushi\ ;
+作業班 > sagyouhan\ ;
+活性炭 > kasseitan\ ;
+最小化 > saishouka\ ;
+乗降場 > joukoujou\ ;
+俗世界 > zokusekai\ ;
+毛織物 > keorimono\ ;
+志願書 > shigansho\ ;
+不死鳥 > fushichou\ ;
+悲観的 > hikanteki\ ;
+成功者 > seikousha\ ;
+看護学 > kangogaku\ ;
+上向線 > joukousen\ ;
+消炎剤 > shouenzai\ ;
+公休日 > koukyuubi\ ;
+総罷業 > souhigyou\ ;
+再投資 > saitoushi\ ;
+歌劇場 > kagekijou\ ;
+浄水場 > jousuijou\ ;
+水耕法 > suikouhou\ ;
+大演習 > daienshuu\ ;
+実測図 > jissokuzu\ ;
+膨張度 > bouchoudo\ ;
+映写幕 > eishamaku\ ;
+上水道 > jousuidou\ ;
+全住民 > zenjuumin\ ;
+浄水地 > jousuichi\ ;
+男性用 > danseiyou\ ;
+好奇心 > koukishin\ ;
+肉体美 > nikutaibi\ ;
+国家的 > kokkateki\ ;
+犠牲的 > giseiteki\ ;
+連子窓 > renjimado\ ;
+相対性 > soutaisei\ ;
+関心事 > kanshinji\ ;
+蒲団皮 > futongawa\ ;
+北斗星 > hokutosei\ ;
+本拠地 > honkyochi\ ;
+舞踏病 > butoubyou\ ;
+内外人 > naigaijin\ ;
+下種女 > gesuon''na\ ;
+赤電車 > akadensha\ ;
+粘板岩 > nenbangan\ ;
+事業者 > jigyousha\ ;
+歓迎会 > kangeikai\ ;
+託児所 > takujisho\ ;
+保証金 > hoshoukin\ ;
+猩々緋 > shoujouhi\ ;
+水時計 > mizudokei\ ;
+盲導犬 > moudouken\ ;
+販売人 > hanbainin\ ;
+人国記 > jinkokuki\ ;
+普及版 > fukyuuban\ ;
+半部族 > hanbuzoku\ ;
+飛道具 > tobidougu\ ;
+人間界 > ningenkai\ ;
+乳母車 > ubaguruma\ ;
+惨死体 > zanshitai\ ;
+運搬人 > unpan''nin\ ;
+抗生剤 > kouseizai\ ;
+世迷言 > yomaigoto\ ;
+伝言板 > dengonban\ ;
+自立語 > jiritsugo\ ;
+熱帯林 > nettairin\ ;
+永久性 > eikyuusei\ ;
+製本屋 > seihon''ya\ ;
+汽車賃 > kishachin\ ;
+禁裏様 > kinrisama\ ;
+慣用句 > kan''youku\ ;
+観光地 > kankouchi\ ;
+会見者 > kaikensha\ ;
+東天紅 > toutenkou\ ;
+観光団 > kankoudan\ ;
+技巧的 > gikouteki\ ;
+楽隠居 > rakuinkyo\ ;
+高速度 > kousokudo\ ;
+私生子 > shiseishi\ ;
+日記帳 > nikkichou\ ;
+政治学 > seijigaku\ ;
+水理学 > suirigaku\ ;
+母子寮 > boshiryou\ ;
+着心地 > kigokochi\ ;
+戒厳令 > kaigenrei\ ;
+投与量 > touyoryou\ ;
+哺乳類 > honyuurui\ ;
+大蝙蝠 > ookoumori\ ;
+無投票 > mutouhyou\ ;
+指了図 > shiryouzu\ ;
+適応性 > tekiousei\ ;
+回送車 > kaisousha\ ;
+漫才師 > manzaishi\ ;
+花火師 > hanabishi\ ;
+事業税 > jigyouzei\ ;
+収容所 > shuuyoujo\ ;
+国璽書 > kokujisho\ ;
+感覚器 > kankakuki\ ;
+教育費 > kyouikuhi\ ;
+固定給 > koteikyuu\ ;
+展覧会 > tenrankai\ ;
+交代制 > koutaisei\ ;
+巡視艇 > junshitei\ ;
+巡視船 > junshisen\ ;
+汎関数 > hankansuu\ ;
+全人生 > zenjinsei\ ;
+断強度 > dankyoudo\ ;
+処女作 > shojosaku\ ;
+個性的 > koseiteki\ ;
+全音階 > zen''onkai\ ;
+反乱者 > hanransha\ ;
+軽音楽 > keiongaku\ ;
+鑿岩機 > sakuganki\ ;
+回復期 > kaifukuki\ ;
+不合格 > fugoukaku\ ;
+周波計 > shuuhakei\ ;
+不可欠 > fukaketsu\ ;
+硬化症 > koukashou\ ;
+逆効果 > gyakkouka\ ;
+一等国 > ittoukoku\ ;
+全封地 > zenhouchi\ ;
+分配金 > bunpaikin\ ;
+回遊船 > kaiyuusen\ ;
+公会堂 > koukaidou\ ;
+無表情 > muhyoujou\ ;
+水餃子 > suigyouza\ ;
+風土病 > fuudobyou\ ;
+逃避的 > touhiteki\ ;
+古文学 > kobungaku\ ;
+優等生 > yuutousei\ ;
+固定票 > koteihyou\ ;
+対向車 > taikousha\ ;
+事業界 > jigyoukai\ ;
+批判的 > hihanteki\ ;
+天地人 > tenchijin\ ;
+血統書 > kettousho\ ;
+中二階 > chuunikai\ ;
+山葡萄 > yamabudou\ ;
+黄道面 > koudoumen\ ;
+受難週 > junanshuu\ ;
+尊厳死 > songenshi\ ;
+考古学 > koukogaku\ ;
+保険証 > hokenshou\ ;
+高分子 > koubunshi\ ;
+冥加金 > myougakin\ ;
+内地米 > naichimai\ ;
+枯葉剤 > karehazai\ ;
+招待日 > shoutaibi\ ;
+誓願権 > seiganken\ ;
+愛国者 > aikokusha\ ;
+訴願人 > sogan''nin\ ;
+領事館 > ryoujikan\ ;
+主犯者 > shuhansha\ ;
+防護壁 > bougoheki\ ;
+資金源 > shikingen\ ;
+鼠咬症 > sokoushou\ ;
+三重盗 > sanjuutou\ ;
+連体形 > rentaikei\ ;
+現段階 > gendankai\ ;
+成年者 > seinensha\ ;
+金解禁 > kinkaikin\ ;
+羽子突 > hanetsuki\ ;
+洗濯粉 > sentakuko\ ;
+光化学 > koukagaku\ ;
+農学部 > nougakubu\ ;
+主任制 > shuninsei\ ;
+舞踏服 > butoufuku\ ;
+経験論 > keikenron\ ;
+経験談 > keikendan\ ;
+擦過傷 > sakkashou\ ;
+再製品 > saiseihin\ ;
+四重奏 > shijuusou\ ;
+相対値 > soutaichi\ ;
+母子共 > boshitomo\ ;
+鉄火巻 > tekkamaki\ ;
+英作文 > eisakubun\ ;
+戦車兵 > senshahei\ ;
+再投稿 > saitoukou\ ;
+教養部 > kyouyoubu\ ;
+立法権 > rippouken\ ;
+妥協点 > dakyouten\ ;
+雲仙岳 > unzendake\ ;
+受領書 > juryousho\ ;
+不活化 > fukatsuka\ ;
+文章語 > bunshougo\ ;
+青信号 > aoshingou\ ;
+時計皿 > tokeizara\ ;
+幽冥界 > yuumeikai\ ;
+執行吏 > shikkouri\ ;
+等高線 > toukousen\ ;
+絞首台 > koushudai\ ;
+破擦音 > hasatsuon\ ;
+送受信 > soujushin\ ;
+一神論 > isshinron\ ;
+着道楽 > kidouraku\ ;
+明後年 > myougonen\ ;
+法務省 > houmushou\ ;
+酵素学 > kousogaku\ ;
+混合酒 > kongoushu\ ;
+図像学 > zuzougaku\ ;
+奉加帳 > hougachou\ ;
+感嘆詞 > kantanshi\ ;
+前売券 > maeuriken\ ;
+志願兵 > shiganhei\ ;
+反射光 > hanshakou\ ;
+皮細工 > kawazaiku\ ;
+復水器 > fukusuiki\ ;
+関連性 > kanrensei\ ;
+統語学 > tougogaku\ ;
+晴眼者 > seigansha\ ;
+講演料 > kouenryou\ ;
+敬老会 > keiroukai\ ;
+時間軸 > jikanjiku\ ;
+反対党 > hantaitou\ ;
+搭乗者 > toujousha\ ;
+社民党 > shamintou\ ;
+絞首刑 > koushukei\ ;
+創建者 > soukensha\ ;
+最大限 > saidaigen\ ;
+楓子香 > fuushikou\ ;
+混成岩 > konseigan\ ;
+紙粘土 > kaminendo\ ;
+条件文 > joukenbun\ ;
+意識体 > ishikitai\ ;
+私企業 > shikigyou\ ;
+空模様 > soramoyou\ ;
+公有林 > kouyuurin\ ;
+山水楼 > sansuirou\ ;
+寄留地 > kiryuuchi\ ;
+断剛性 > dangousei\ ;
+空元気 > karagenki\ ;
+打算的 > dasanteki\ ;
+退蔵品 > taizouhin\ ;
+影響圏 > eikyouken\ ;
+真善美 > shinzenbi\ ;
+仲保者 > chuuhosha\ ;
+手術衣 > shujutsui\ ;
+人間愛 > ningen''ai\ ;
+理知的 > richiteki\ ;
+琥珀色 > kohakuiro\ ;
+御蔭様 > okagesama\ ;
+毛細管 > mousaikan\ ;
+白胡麻 > shirogoma\ ;
+主人公 > shujinkou\ ;
+人間性 > ningensei\ ;
+単孔類 > tankourui\ ;
+同労者 > dourousha\ ;
+即時性 > sokujisei\ ;
+乳呑児 > chinomigo\ ;
+不徳漢 > futokukan\ ;
+遭遇戦 > souguusen\ ;
+又家来 > matagerai\ ;
+正書法 > seishohou\ ;
+独自性 > dokujisei\ ;
+弁財天 > benzaiten\ ;
+勤務先 > kinmusaki\ ;
+持久戦 > jikyuusen\ ;
+重要視 > juuyoushi\ ;
+空梅雨 > karatsuyu\ ;
+混成団 > konseidan\ ;
+火口壁 > kakouheki\ ;
+時間表 > jikanhyou\ ;
+砂利道 > jarimichi\ ;
+会計官 > kaikeikan\ ;
+賤業婦 > sengyoufu\ ;
+経験者 > keikensha\ ;
+韓国語 > hankokugo\ ;
+教材費 > kyouzaihi\ ;
+勝利者 > shourisha\ ;
+潜伏期 > senpukuki\ ;
+大団円 > daidan''en\ ;
+午前様 > gozensama\ ;
+海潮音 > kaichouon\ ;
+正犯者 > seihansha\ ;
+可圧性 > kaatsusei\ ;
+船大工 > funadaiku\ ;
+土地柄 > tochigara\ ;
+登舷礼 > tougenrei\ ;
+政府筋 > seifusuji\ ;
+活性剤 > kasseizai\ ;
+反体制 > hantaisei\ ;
+藻菌類 > soukinrui\ ;
+滑石粉 > kassekiko\ ;
+緩衝器 > kanshouki\ ;
+鳩羽色 > hatobairo\ ;
+顕微鏡 > kenbikyou\ ;
+測定器 > sokuteiki\ ;
+名店街 > meitengai\ ;
+利休色 > rikyuuiro\ ;
+国事犯 > kokujihan\ ;
+混成品 > konseihin\ ;
+分配者 > bunpaisha\ ;
+半透明 > hantoumei\ ;
+分水線 > bunsuisen\ ;
+遊戯的 > yuugiteki\ ;
+近視眼 > kinshigan\ ;
+主謀者 > shubousha\ ;
+会計士 > kaikeishi\ ;
+初年兵 > shonenhei\ ;
+同年輩 > dounenpai\ ;
+珍無類 > chinmurui\ ;
+箝口令 > kankourei\ ;
+合法性 > gouhousei\ ;
+総領事 > souryouji\ ;
+州政府 > shuuseifu\ ;
+商務官 > shoumukan\ ;
+応接間 > ousetsuma\ ;
+参会者 > sankaisha\ ;
+五人組 > goningumi\ ;
+黄水晶 > kizuishou\ ;
+内裏様 > dairisama\ ;
+大衆化 > taishuuka\ ;
+重大性 > juudaisei\ ;
+外国語 > gaikokugo\ ;
+勢力家 > seiryokka\ ;
+声楽家 > seigakuka\ ;
+製靴業 > seikagyou\ ;
+箱馬車 > hakobasha\ ;
+宮内省 > kunaishou\ ;
+事業所 > jigyousho\ ;
+穿山甲 > senzankou\ ;
+臨港線 > rinkousen\ ;
+唯名論 > yuimeiron\ ;
+改造車 > kaizousha\ ;
+黄金国 > ougonkoku\ ;
+芋羊羹 > imoyoukan\ ;
+更生品 > kouseihin\ ;
+芋羊羮 > imoyoukan\ ;
+広小路 > hirokouji\ ;
+空返事 > sorahenji\ ;
+腐植土 > fushokudo\ ;
+次善策 > jizensaku\ ;
+遠眼鏡 > toomegane\ ;
+創造者 > souzousha\ ;
+休電日 > kyuudenbi\ ;
+板門店 > hanmonten\ ;
+導入部 > dounyuubu\ ;
+禅問答 > zenmondou\ ;
+複数個 > fukusuuko\ ;
+盲学校 > mougakkou\ ;
+詞華集 > shikashuu\ ;
+研修課 > kenshuuka\ ;
+弾性体 > danseitai\ ;
+献呈本 > kenteibon\ ;
+尾長鶏 > onagadori\ ;
+放送網 > housoumou\ ;
+麻酔薬 > masuiyaku\ ;
+千年紀 > sen''nenki\ ;
+僧帽弁 > soubouben\ ;
+太鼓腹 > taikobara\ ;
+前装砲 > zensouhou\ ;
+分遣隊 > bunkentai\ ;
+吹奏者 > suisousha\ ;
+好角家 > koukakuka\ ;
+悪天候 > akutenkou\ ;
+推進機 > suishinki\ ;
+鉤十字 > kagijuuji\ ;
+乱気流 > rankiryuu\ ;
+冷凍剤 > reitouzai\ ;
+初対面 > shotaimen\ ;
+未収載 > mishuusai\ ;
+嗜好品 > shikouhin\ ;
+火砕流 > kasairyuu\ ;
+悪天使 > akutenshi\ ;
+強化米 > kyoukamai\ ;
+水雷艇 > suiraitei\ ;
+観楓会 > kanpuukai\ ;
+体験談 > taikendan\ ;
+無感覚 > mukankaku\ ;
+群速度 > gunsokudo\ ;
+電総研 > densouken\ ;
+不確定 > fukakutei\ ;
+白百合 > shirayuri\ ;
+舞踊劇 > buyougeki\ ;
+火口丘 > kakoukyuu\ ;
+不正確 > fuseikaku\ ;
+陽子線 > youshisen\ ;
+時間給 > jikankyuu\ ;
+分水界 > bunsuikai\ ;
+乱反射 > ranhansha\ ;
+解答欄 > kaitouran\ ;
+魚雷艇 > gyoraitei\ ;
+公有地 > kouyuuchi\ ;
+欺瞞的 > gimanteki\ ;
+明瞭度 > meiryoudo\ ;
+会計係 > kaikeikei\ ;
+輸入税 > yunyuuzei\ ;
+不心得 > fukokoroe\ ;
+二業地 > nigyouchi\ ;
+単子論 > tanshiron\ ;
+証拠金 > shoukokin\ ;
+生演奏 > namaensou\ ;
+微分学 > bibungaku\ ;
+専従者 > senjuusha\ ;
+仙台侯 > sendaikou\ ;
+兄弟愛 > kyoudaiai\ ;
+万華鏡 > mangekyou\ ;
+禁漁期 > kinryouki\ ;
+人間像 > ningenzou\ ;
+回帰的 > kaikiteki\ ;
+市民税 > shiminzei\ ;
+富士額 > fujibitai\ ;
+光速度 > kousokudo\ ;
+開票所 > kaihyoujo\ ;
+体育館 > taiikukan\ ;
+変調波 > henchouha\ ;
+同盟軍 > doumeigun\ ;
+告訴人 > kokusonin\ ;
+学士院 > gakushiin\ ;
+倫理的 > rinriteki\ ;
+点鼻薬 > tenbiyaku\ ;
+投書欄 > toushoran\ ;
+訴訟法 > soshouhou\ ;
+四半分 > shihanbun\ ;
+吸音材 > kyuuonzai\ ;
+初体験 > shotaiken\ ;
+輸入盤 > yunyuuban\ ;
+不知火 > shiranuhi\ ;
+卵細胞 > ransaibou\ ;
+二極化 > nikyokuka\ ;
+南京錠 > nankinjou\ ;
+鳩時計 > hatodokei\ ;
+哺乳瓶 > honyuubin\ ;
+西洋風 > seiyoufuu\ ;
+既製服 > kiseifuku\ ;
+野外劇 > yagaigeki\ ;
+普遍的 > fuhenteki\ ;
+事業団 > jigyoudan\ ;
+小役人 > koyakunin\ ;
+鳥媒花 > choubaika\ ;
+自治領 > jichiryou\ ;
+破壊的 > hakaiteki\ ;
+窮措大 > kyuusodai\ ;
+達磨船 > darumasen\ ;
+内在性 > naizaisei\ ;
+小荷物 > konimotsu\ ;
+日系人 > nikkeijin\ ;
+精神科 > seishinka\ ;
+一合目 > ichigoume\ ;
+住居跡 > juukyoato\ ;
+再抗弁 > saikouben\ ;
+農作業 > nousagyou\ ;
+螢光燈 > keikoutou\ ;
+付年表 > funenpyou\ ;
+正誤表 > seigohyou\ ;
+四輪車 > yonrinsha\ ;
+金米糖 > konpeitou\ ;
+三重奏 > sanjuusou\ ;
+保証書 > hoshousho\ ;
+否定的 > hiteiteki\ ;
+不連続 > furenzoku\ ;
+武断的 > budanteki\ ;
+出穂期 > shussuiki\ ;
+上半期 > kamihanki\ ;
+単子葉 > tanshiyou\ ;
+微分商 > bibunshou\ ;
+義兄弟 > gikyoudai\ ;
+複素数 > fukusosuu\ ;
+転校生 > tenkousei\ ;
+昼夜帯 > chuuyaobi\ ;
+事件表 > jikenhyou\ ;
+螢光灯 > keikoutou\ ;
+強硬派 > kyoukouha\ ;
+排気量 > haikiryou\ ;
+女文字 > on''namoji\ ;
+無所属 > mushozoku\ ;
+周波数 > shuuhasuu\ ;
+猛禽類 > moukinrui\ ;
+生態系 > seitaikei\ ;
+散文詩 > sanbunshi\ ;
+栽培種 > saibaishu\ ;
+原著者 > genchosha\ ;
+電話料 > denwaryou\ ;
+技能賞 > ginoushou\ ;
+料金所 > ryoukinjo\ ;
+支配者 > shihaisha\ ;
+洗濯屋 > sentakuya\ ;
+側近者 > sokkinsha\ ;
+実社会 > jisshakai\ ;
+御連絡 > gorenraku\ ;
+香川県 > kagawaken\ ;
+点滴器 > tentekiki\ ;
+予定表 > yoteihyou\ ;
+弁護料 > bengoryou\ ;
+主要駅 > shuyoueki\ ;
+対応策 > taiousaku\ ;
+輸入港 > yunyuukou\ ;
+同志会 > doushikai\ ;
+迎撃機 > geigekiki\ ;
+人地名 > jinchimei\ ;
+保険料 > hokenryou\ ;
+大和芋 > yamatoimo\ ;
+高優先 > kouyuusen\ ;
+放送法 > housouhou\ ;
+示力図 > jiryokuzu\ ;
+雪女郎 > yukijorou\ ;
+零細農 > reisainou\ ;
+真清水 > mashimizu\ ;
+助太刀 > sukedachi\ ;
+克己心 > kokkishin\ ;
+設計者 > sekkeisha\ ;
+無神論 > mushinron\ ;
+有袋類 > yuutairui\ ;
+一殺那 > issetsuna\ ;
+心理戦 > shinrisen\ ;
+御歴歴 > orekireki\ ;
+不平等 > fubyoudou\ ;
+利尿剤 > rinyouzai\ ;
+絹積雲 > kensekiun\ ;
+牧歌的 > bokkateki\ ;
+漸近線 > zenkinsen\ ;
+子安貝 > koyasukai\ ;
+旅日記 > tabinikki\ ;
+売上金 > uriagekin\ ;
+受給者 > jukyuusha\ ;
+明年度 > myounendo\ ;
+二枚舌 > nimaijita\ ;
+三重冠 > sanjuukan\ ;
+誘電子 > yuudenshi\ ;
+関係詞 > kankeishi\ ;
+紡錘形 > bousuikei\ ;
+奉幣使 > houheishi\ ;
+革細工 > kawazaiku\ ;
+市民法 > shiminhou\ ;
+最敬礼 > saikeirei\ ;
+苦学生 > kugakusei\ ;
+得意先 > tokuisaki\ ;
+雨仕度 > amajitaku\ ;
+周波帯 > shuuhatai\ ;
+管制官 > kanseikan\ ;
+燃料費 > nenryouhi\ ;
+年輩者 > nenpaisha\ ;
+量記号 > ryoukigou\ ;
+発光体 > hakkoutai\ ;
+半円形 > han''enkei\ ;
+円虫類 > enchuurui\ ;
+懸想文 > kesoubumi\ ;
+検潮器 > kenchouki\ ;
+姉妹編 > shimaihen\ ;
+血糖値 > kettouchi\ ;
+無重量 > mujuuryou\ ;
+電話帳 > denwachou\ ;
+午前中 > gozenchuu\ ;
+営業所 > eigyousho\ ;
+米市場 > beiichiba\ ;
+不動心 > fudoushin\ ;
+推進器 > suishinki\ ;
+小判形 > kobangata\ ;
+回送店 > kaisouten\ ;
+照明器 > shoumeiki\ ;
+徹甲弾 > tekkoudan\ ;
+宮内庁 > kunaichou\ ;
+市民権 > shiminken\ ;
+千年期 > sen''nenki\ ;
+半舷砲 > hangenhou\ ;
+権威筋 > ken''isuji\ ;
+変電所 > hendensho\ ;
+電解液 > denkaieki\ ;
+雲上人 > unjoubito\ ;
+一周年 > isshuunen\ ;
+管制塔 > kanseitou\ ;
+華厳経 > kegonkyou\ ;
+対情報 > taijouhou\ ;
+格変化 > kakuhenka\ ;
+教育家 > kyouikuka\ ;
+安息香 > ansokukou\ ;
+石鹸水 > sekkensui\ ;
+不勉強 > fubenkyou\ ;
+塩化物 > enkabutsu\ ;
+両用機 > ryouyouki\ ;
+当世風 > touseifuu\ ;
+格天井 > goutenjou\ ;
+中耕機 > chuukouki\ ;
+不適格 > futekkaku\ ;
+遠心分 > enshinbun\ ;
+普通法 > futsuuhou\ ;
+媒染剤 > baisenzai\ ;
+破裂音 > haretsuon\ ;
+主観論 > shukanron\ ;
+二番作 > nibansaku\ ;
+生命線 > seimeisen\ ;
+空対空 > kuutaikuu\ ;
+猛吹雪 > moufubuki\ ;
+高射砲 > koushahou\ ;
+一歩銀 > ichibugin\ ;
+禁漁区 > kinryouku\ ;
+奈良漬 > naradzuke\ ;
+形象化 > keishouka\ ;
+内地人 > naichijin\ ;
+石南花 > shakunage\ ;
+傀儡師 > kairaishi\ ;
+一歩金 > ichibukin\ ;
+痩我慢 > yasegaman\ ;
+悪因縁 > akuin''nen\ ;
+不眠症 > fuminshou\ ;
+電解槽 > denkaisou\ ;
+法華宗 > hokkeshuu\ ;
+一瞬間 > isshunkan\ ;
+正三位 > shousanmi\ ;
+弾道弾 > dandoudan\ ;
+混合林 > kongourin\ ;
+水墨画 > suibokuga\ ;
+交易会 > kouekikai\ ;
+高楊子 > takayouji\ ;
+権威的 > ken''iteki\ ;
+社用車 > shayousha\ ;
+分水嶺 > bunsuirei\ ;
+子供用 > kodomoyou\ ;
+親孝行 > oyakoukou\ ;
+発射筒 > hasshatou\ ;
+拾万円 > juuman''en\ ;
+勤皇家 > kin''nouka\ ;
+乳化剤 > nyuukazai\ ;
+近地点 > kinchiten\ ;
+無競争 > mukyousou\ ;
+交際法 > kousaihou\ ;
+私有地 > shiyuuchi\ ;
+参与者 > san''yosha\ ;
+飲料水 > inryousui\ ;
+秋日和 > akibiyori\ ;
+区役所 > kuyakusho\ ;
+立志伝 > risshiden\ ;
+天秤棒 > tenbinbou\ ;
+変調器 > henchouki\ ;
+小判型 > kobangata\ ;
+関係者 > kankeisha\ ;
+大成功 > daiseikou\ ;
+二人称 > nininshou\ ;
+偶像視 > guuzoushi\ ;
+偶蹄類 > guuteirui\ ;
+来訪者 > raihousha\ ;
+騒乱罪 > souranzai\ ;
+完成品 > kanseihin\ ;
+創造性 > souzousei\ ;
+排水管 > haisuikan\ ;
+又請負 > mataukeoi\ ;
+金閣寺 > kinkakuji\ ;
+誘電体 > yuudentai\ ;
+南京米 > nankinmai\ ;
+無神経 > mushinkei\ ;
+銀交換 > ginkoukan\ ;
+不干渉 > fukanshou\ ;
+製塩業 > seiengyou\ ;
+教会員 > kyoukaiin\ ;
+搭乗券 > toujouken\ ;
+過硫酸 > karyuusan\ ;
+運命的 > unmeiteki\ ;
+観桜会 > kan''oukai\ ;
+無礼者 > bureimono\ ;
+構文法 > koubunpou\ ;
+接近戦 > sekkinsen\ ;
+無法者 > muhoumono\ ;
+不適当 > futekitou\ ;
+無水鍋 > musuinabe\ ;
+月給日 > gekkyuubi\ ;
+斥候隊 > sekkoutai\ ;
+創業費 > sougyouhi\ ;
+重要性 > juuyousei\ ;
+総売上 > souuriage\ ;
+十円玉 > juuendama\ ;
+倫理学 > rinrigaku\ ;
+一週間 > isshuukan\ ;
+社内報 > shanaihou\ ;
+住宅費 > juutakuhi\ ;
+屈地性 > kutchisei\ ;
+国有化 > kokuyuuka\ ;
+通風機 > tsuufuuki\ ;
+家屋敷 > ieyashiki\ ;
+山椒魚 > sanshouuo\ ;
+公文書 > koubunsho\ ;
+決定論 > ketteiron\ ;
+保証人 > hoshounin\ ;
+沿海州 > enkaishuu\ ;
+不道徳 > fudoutoku\ ;
+便乗者 > binjousha\ ;
+一升瓶 > isshoubin\ ;
+空腹時 > kuufukuji\ ;
+前衛戦 > zen''eisen\ ;
+感情論 > kanjouron\ ;
+支配権 > shihaiken\ ;
+団子鼻 > dangobana\ ;
+全論点 > zenronten\ ;
+道化者 > doukemono\ ;
+西洋紙 > seiyoushi\ ;
+書記長 > shokichou\ ;
+忌言葉 > imikotoba\ ;
+難事業 > nanjigyou\ ;
+付帯的 > futaiteki\ ;
+高飛車 > takabisha\ ;
+電話中 > denwachuu\ ;
+黄道帯 > koudoutai\ ;
+高校生 > koukousei\ ;
+肺水腫 > haisuishu\ ;
+商用語 > shouyougo\ ;
+略記法 > ryakkihou\ ;
+葡萄棚 > budoudana\ ;
+奉公人 > houkounin\ ;
+仏法僧 > buppousou\ ;
+体育祭 > taiikusai\ ;
+普通弾 > futsuudan\ ;
+戦中派 > senchuuha\ ;
+高山帯 > kouzantai\ ;
+性犯罪 > seihanzai\ ;
+民芸品 > mingeihin\ ;
+親会社 > oyagaisha\ ;
+参賀帳 > sangachou\ ;
+三輪車 > sanrinsha\ ;
+産科学 > sankagaku\ ;
+車内灯 > shanaitou\ ;
+医務室 > imushitsu\ ;
+永続性 > eizokusei\ ;
+探検隊 > tankentai\ ;
+実務家 > jitsumuka\ ;
+必須格 > hissukaku\ ;
+大和歌 > yamatouta\ ;
+丸太材 > marutazai\ ;
+研修所 > kenshuujo\ ;
+一刹那 > issetsuna\ ;
+公明党 > koumeitou\ ;
+絵空言 > esoragoto\ ;
+羅針盤 > rashinban\ ;
+器量人 > kiryoujin\ ;
+国際語 > kokusaigo\ ;
+四辺形 > shihenkei\ ;
+発作的 > hossateki\ ;
+聾学校 > rougakkou\ ;
+掃海艇 > soukaitei\ ;
+参考書 > sankousho\ ;
+化粧品 > keshouhin\ ;
+地平面 > chiheimen\ ;
+低能者 > teinousha\ ;
+先験論 > senkenron\ ;
+集英社 > shuueisha\ ;
+用水池 > yousuichi\ ;
+受難劇 > junangeki\ ;
+倉庫業 > soukogyou\ ;
+千六本 > senroppon\ ;
+輸入品 > yunyuuhin\ ;
+化粧台 > keshoudai\ ;
+塩加減 > shiokagen\ ;
+蛍光燈 > keikoutou\ ;
+娘子軍 > joushigun\ ;
+自治省 > jichishou\ ;
+尾長猿 > onagazaru\ ;
+警防団 > keiboudan\ ;
+正解者 > seikaisha\ ;
+限度額 > gendogaku\ ;
+再洗礼 > saisenrei\ ;
+姉妹校 > shimaikou\ ;
+格闘技 > kakutougi\ ;
+青春期 > seishunki\ ;
+速記録 > sokkiroku\ ;
+優勝馬 > yuushouba\ ;
+気候学 > kikougaku\ ;
+病院船 > byouinsen\ ;
+国文科 > kokubunka\ ;
+担当者 > tantousha\ ;
+来場者 > raijousha\ ;
+蛍光灯 > keikoutou\ ;
+排水溝 > haisuikou\ ;
+峻下剤 > shungezai\ ;
+外商部 > gaishoubu\ ;
+正方形 > seihoukei\ ;
+月経帯 > gekkeitai\ ;
+角行灯 > kakuandon\ ;
+課徴金 > kachoukin\ ;
+交換船 > koukansen\ ;
+保管証 > hokanshou\ ;
+添加物 > tenkamono\ ;
+一分銀 > ichibugin\ ;
+来観者 > raikansha\ ;
+綺羅星 > kiraboshi\ ;
+山岳部 > sangakubu\ ;
+発展性 > hattensei\ ;
+一分金 > ichibukin\ ;
+協定案 > kyouteian\ ;
+注射器 > chuushaki\ ;
+司法権 > shihouken\ ;
+正攻法 > seikouhou\ ;
+手拍子 > tebyoushi\ ;
+社会面 > shakaimen\ ;
+象皮病 > zouhibyou\ ;
+禁反言 > kinhangen\ ;
+無双窓 > musoumado\ ;
+時間割 > jikanwari\ ;
+用心棒 > youjinbou\ ;
+再感染 > saikansen\ ;
+毛製品 > mouseihin\ ;
+化粧代 > keshoudai\ ;
+格納庫 > kakunouko\ ;
+総索引 > sousakuin\ ;
+予審廷 > yoshintei\ ;
+茶屋酒 > chayazake\ ;
+四分円 > shibun''en\ ;
+佗住居 > wabizumai\ ;
+片手桶 > katateoke\ ;
+創刊号 > soukangou\ ;
+四分六 > shiburoku\ ;
+防潜網 > bousenmou\ ;
+名刺判 > meishiban\ ;
+河童巻 > kappamaki\ ;
+向光性 > koukousei\ ;
+勲一等 > kun''ittou\ ;
+反物屋 > tanmonoya\ ;
+互譲的 > gojouteki\ ;
+世界的 > sekaiteki\ ;
+御迷惑 > gomeiwaku\ ;
+三部作 > sanbusaku\ ;
+正面図 > shoumenzu\ ;
+表具師 > hyougushi\ ;
+不適任 > futekinin\ ;
+経企庁 > keikichou\ ;
+運動領 > undouryou\ ;
+先般来 > senpanrai\ ;
+定冠詞 > teikanshi\ ;
+黄道光 > koudoukou\ ;
+接尾辞 > setsubiji\ ;
+水無月 > minadzuki\ ;
+駐在員 > chuuzaiin\ ;
+輸尿管 > yunyoukan\ ;
+国防費 > kokubouhi\ ;
+侍従長 > jijuuchou\ ;
+殺風景 > sappuukei\ ;
+中支那 > nakashina\ ;
+誤挿入 > gosounyuu\ ;
+正教授 > seikyouju\ ;
+休火山 > kyuukazan\ ;
+子守歌 > komoriuta\ ;
+決定稿 > ketteikou\ ;
+防火壁 > boukaheki\ ;
+台湾人 > taiwanjin\ ;
+日章旗 > nisshouki\ ;
+部隊長 > butaichou\ ;
+御真影 > goshin''ei\ ;
+凝固点 > gyoukoten\ ;
+支店網 > shitenmou\ ;
+数表示 > suuhyouji\ ;
+風向計 > fuukoukei\ ;
+蛍光板 > keikouban\ ;
+新聞舗 > shinbunho\ ;
+西南西 > seinansei\ ;
+避雷針 > hiraishin\ ;
+獅子舞 > shishimai\ ;
+任期中 > ninkichuu\ ;
+方面隊 > houmentai\ ;
+風鈴草 > fuurinsou\ ;
+花野菜 > hanayasai\ ;
+曲独楽 > kyokugoma\ ;
+真向法 > makkouhou\ ;
+商船旗 > shousenki\ ;
+研修員 > kenshuuin\ ;
+評判記 > hyoubanki\ ;
+普通便 > futsuubin\ ;
+副知事 > fukuchiji\ ;
+母集団 > boshuudan\ ;
+三冠王 > sankan''ou\ ;
+恋愛観 > ren''aikan\ ;
+併行線 > heikousen\ ;
+地役権 > chiekiken\ ;
+普通人 > futsuujin\ ;
+先導者 > sendousha\ ;
+再協議 > saikyouki\ ;
+投降者 > toukousha\ ;
+代赭色 > taishairo\ ;
+接尾語 > setsubigo\ ;
+劇作家 > gekisakka\ ;
+重戦車 > juusensha\ ;
+音楽隊 > ongakutai\ ;
+再禁止 > saikinshi\ ;
+燻蒸剤 > kunjouzai\ ;
+洋裁師 > yousaishi\ ;
+真正面 > mashoumen\ ;
+月経前 > gekkeimae\ ;
+運動量 > undouryou\ ;
+低山帯 > teizantai\ ;
+励振器 > reishinki\ ;
+英雄的 > eiyuuteki\ ;
+記者席 > kishaseki\ ;
+健康者 > kenkousha\ ;
+肥満症 > himanshou\ ;
+最大値 > saidaichi\ ;
+計画案 > keikakuan\ ;
+華厳宗 > kegonshuu\ ;
+主要点 > shuyouten\ ;
+仮住居 > karizumai\ ;
+会員証 > kaiinshou\ ;
+精薄児 > seihakuji\ ;
+挿入図 > sounyuuzu\ ;
+丁年者 > teinensha\ ;
+監査役 > kansayaku\ ;
+薄化粧 > usugeshou\ ;
+出勤簿 > shukkinbo\ ;
+中央線 > chuuousen\ ;
+履歴書 > rirekisho\ ;
+養嗣子 > youshishi\ ;
+大海原 > oounabara\ ;
+低価格 > teikakaku\ ;
+交際上 > kousaijou\ ;
+参考品 > sankouhin\ ;
+神経科 > shinkeika\ ;
+小作農 > kosakunou\ ;
+私文書 > shibunsho\ ;
+決定版 > ketteiban\ ;
+心不全 > shinfuzen\ ;
+乳幼児 > nyuuyouji\ ;
+規則書 > kisokusho\ ;
+加除式 > kajoshiki\ ;
+司法官 > shihoukan\ ;
+空対地 > kuutaichi\ ;
+正視眼 > seishigan\ ;
+早慶戦 > soukeisen\ ;
+掘削機 > kussakuki\ ;
+未確定 > mikakutei\ ;
+高架橋 > koukakyou\ ;
+個別化 > kobetsuka\ ;
+挿入句 > sounyuuku\ ;
+政権党 > seikentou\ ;
+射利心 > sharishin\ ;
+監察医 > kansatsui\ ;
+道化方 > doukegata\ ;
+半二重 > han''nijuu\ ;
+禁治産 > kinchisan\ ;
+単語集 > tangoshuu\ ;
+用水地 > yousuiike\ ;
+車高短 > shakoutan\ ;
+消化腺 > shoukasen\ ;
+近海魚 > kinkaigyo\ ;
+排水孔 > haisuikou\ ;
+木金土 > mokukindo\ ;
+持続性 > jizokusei\ ;
+名工大 > meikoudai\ ;
+支配人 > shihainin\ ;
+幹事長 > kanjichou\ ;
+長水路 > chousuiro\ ;
+平党員 > hiratouin\ ;
+循環線 > junkansen\ ;
+下剋上 > gekokujou\ ;
+上層風 > jousoufuu\ ;
+圧延鋼 > atsuenkou\ ;
+菠薐草 > hourensou\ ;
+準教員 > junkyouin\ ;
+凹眼鏡 > ougankyou\ ;
+物価高 > bukkadaka\ ;
+誘拐罪 > yuukaizai\ ;
+循環系 > junkankei\ ;
+派生的 > haseiteki\ ;
+素反応 > sohan''nou\ ;
+在郷者 > zaigousha\ ;
+北海道 > hokkaidou\ ;
+林檎病 > ringobyou\ ;
+薬事法 > yakujihou\ ;
+短毛種 > tanmoushu\ ;
+概念論 > gainenron\ ;
+道徳家 > doutokuka\ ;
+参与官 > san''yokan\ ;
+最終案 > saishuuan\ ;
+世界新 > sekaishin\ ;
+参考人 > sankounin\ ;
+屋台骨 > yataibone\ ;
+大歓迎 > daikangei\ ;
+上層階 > jousoukai\ ;
+一切経 > issaikyou\ ;
+再配置 > saihaichi\ ;
+肌襦袢 > hadajuban\ ;
+六角形 > rokkakkei\ ;
+新生児 > shinseiji\ ;
+先住者 > senjuusha\ ;
+醜業婦 > shugyoufu\ ;
+裁判権 > saibanken\ ;
+大神宮 > daijinguu\ ;
+正教員 > seikyouin\ ;
+悪戯着 > itazuragi\ ;
+昼行灯 > hiruandon\ ;
+地平線 > chiheisen\ ;
+配電線 > haidensen\ ;
+白頭翁 > hakutouou\ ;
+発射台 > hasshadai\ ;
+主陣地 > shujinchi\ ;
+感想文 > kansoubun\ ;
+消化系 > shoukakei\ ;
+主観性 > shukansei\ ;
+大法廷 > daihoutei\ ;
+最終日 > saishuubi\ ;
+決定権 > ketteiken\ ;
+兎小屋 > usagigoya\ ;
+多神論 > tashinron\ ;
+後半生 > kouhansei\ ;
+増訂版 > zouteiban\ ;
+所在地 > shozaichi\ ;
+災害地 > saigaichi\ ;
+消化管 > shoukakan\ ;
+年代順 > nendaijun\ ;
+神経炎 > shinkeien\ ;
+奉仕者 > houshisha\ ;
+再受浸 > saijushin\ ;
+操業費 > sougyouhi\ ;
+二人前 > futarimae\ ;
+富士壺 > fujitsubo\ ;
+百貨店 > hyakkaten\ ;
+横断幕 > oudanmaku\ ;
+二人分 > futaribun\ ;
+納税者 > nouzeisha\ ;
+酸性紙 > sanseishi\ ;
+左右軸 > sayuujiku\ ;
+天水桶 > tensuioke\ ;
+公開状 > koukaijou\ ;
+貴金属 > kikinzoku\ ;
+波羅蜜 > haramitsu\ ;
+狩猟期 > shuryouki\ ;
+文法書 > bunpousho\ ;
+占領下 > senryouka\ ;
+燃焼炉 > nenshouro\ ;
+古筆家 > kohitsuka\ ;
+防衛庁 > boueichou\ ;
+大祭司 > daisaishi\ ;
+雛罌粟 > hinageshi\ ;
+全天候 > zentenkou\ ;
+超短波 > choutanpa\ ;
+放射能 > houshanou\ ;
+前科者 > zenkamono\ ;
+長野県 > naganoken\ ;
+青大将 > aodaishou\ ;
+知恵熱 > chienetsu\ ;
+包装紙 > housoushi\ ;
+会員章 > kaiinshou\ ;
+米産地 > beisanchi\ ;
+八角形 > hakkakkei\ ;
+五大洲 > godaishuu\ ;
+新学期 > shingakki\ ;
+配電盤 > haidenban\ ;
+英文学 > eibungaku\ ;
+子守唄 > komoriuta\ ;
+御兄弟 > gokyoudai\ ;
+裁判所 > saibansho\ ;
+参院選 > san''insen\ ;
+軍人風 > gunjinfuu\ ;
+無得点 > mutokuten\ ;
+論理的 > ronriteki\ ;
+劃期的 > kakkiteki\ ;
+三省堂 > sanseidou\ ;
+虚弱児 > kyojakuji\ ;
+当事国 > toujikoku\ ;
+論争者 > ronsousha\ ;
+放射線 > houshasen\ ;
+崇拝者 > suuhaisha\ ;
+健康法 > kenkouhou\ ;
+怪文書 > kaibunsho\ ;
+逮捕歴 > taihoreki\ ;
+筆頭者 > hittousha\ ;
+乾生姜 > kanshouga\ ;
+生残者 > seizansha\ ;
+淡水魚 > tansuigyo\ ;
+贈答品 > zoutouhin\ ;
+交換手 > koukanshu\ ;
+蛍光体 > keikoutai\ ;
+氷点下 > hyoutenka\ ;
+誘拐犯 > yuukaihan\ ;
+煎玉子 > iritamago\ ;
+興信所 > koushinjo\ ;
+甘味料 > kanmiryou\ ;
+試験紙 > shikenshi\ ;
+熏蒸剤 > kunjouzai\ ;
+肉襦袢 > nikujuban\ ;
+監守人 > kanshunin\ ;
+増大号 > zoudaigou\ ;
+滑走輪 > kassourin\ ;
+再創造 > saisouzou\ ;
+西洋史 > seiyoushi\ ;
+戸籍法 > kosekihou\ ;
+荒物屋 > aramonoya\ ;
+中西部 > chuuseibu\ ;
+自動的 > jidouteki\ ;
+借家人 > shakkanin\ ;
+法学部 > hougakubu\ ;
+軍資金 > gunshikin\ ;
+文法性 > bunpousei\ ;
+農夫症 > noufushou\ ;
+材料費 > zairyouhi\ ;
+催涙銃 > sairuijuu\ ;
+変換子 > henkanshi\ ;
+材木屋 > zaimokuya\ ;
+貧窮化 > hinkyuuka\ ;
+早合点 > hayagaten\ ;
+肥満性 > himanshou\ ;
+車馬賃 > shabachin\ ;
+竜騎兵 > ryuukihei\ ;
+土台石 > dodaiishi\ ;
+帰納的 > kinouteki\ ;
+試験管 > shikenkan\ ;
+男子高 > danshikou\ ;
+大反対 > daihantai\ ;
+非国民 > hikokumin\ ;
+小豆鱒 > azukimasu\ ;
+莢豌豆 > sayaendou\ ;
+両替機 > ryougaeki\ ;
+綿火薬 > menkayaku\ ;
+人民軍 > jinmingun\ ;
+欠勤者 > kekkinsha\ ;
+小作米 > kosakumai\ ;
+泥板岩 > deibangan\ ;
+擬革紙 > gikakushi\ ;
+貴重品 > kichouhin\ ;
+火山礫 > kazanreki\ ;
+顔写真 > kaojashin\ ;
+共演者 > kyouensha\ ;
+救護班 > kyuugohan\ ;
+再循環 > saijunkan\ ;
+荻江節 > ogiebushi\ ;
+集光器 > shuukouki\ ;
+一部分 > ichibubun\ ;
+装甲車 > soukousha\ ;
+新世紀 > shinseiki\ ;
+裁判官 > saibankan\ ;
+出勤日 > shukkinbi\ ;
+送信機 > soushinki\ ;
+雑居地 > zakkyochi\ ;
+英数国 > eisuukoku\ ;
+保管料 > hokanryou\ ;
+半貴石 > hankiseki\ ;
+軍用機 > gun''youki\ ;
+虎落笛 > mogaribue\ ;
+生還者 > seikansha\ ;
+懇談会 > kondankai\ ;
+未公表 > mikouhyou\ ;
+西洋人 > seiyoujin\ ;
+田舎者 > inakamono\ ;
+消化液 > shoukaeki\ ;
+健康方 > kenkouhou\ ;
+穴居人 > kekkyojin\ ;
+妨業員 > bougyouin\ ;
+風呂敷 > furoshiki\ ;
+何曜日 > nan''youbi\ ;
+警戒線 > keikaisen\ ;
+交換嬢 > koukanjou\ ;
+大道芸 > daidougei\ ;
+停止線 > teishisen\ ;
+勉強家 > benkyouka\ ;
+浪漫的 > romanteki\ ;
+勧世縒 > kanzeyori\ ;
+竹細工 > takezaiku\ ;
+産卵口 > sanrankou\ ;
+感動詞 > kandoushi\ ;
+水圧機 > suiatsuki\ ;
+音楽祭 > ongakusai\ ;
+人情本 > ninjoubon\ ;
+皇霊殿 > koureiden\ ;
+使命者 > shimeisha\ ;
+代用品 > daiyouhin\ ;
+葉菜類 > yousairui\ ;
+写真機 > shashinki\ ;
+男伊達 > otokodate\ ;
+兵站線 > heitansen\ ;
+帯電体 > taidentai\ ;
+文化的 > bunkateki\ ;
+未発表 > mihappyou\ ;
+先住民 > senjuumin\ ;
+途上国 > tojoukoku\ ;
+半音階 > han''onkai\ ;
+白木屋 > shirokiya\ ;
+仕様書 > shiyousho\ ;
+民事的 > minjiteki\ ;
+成層圏 > seisouken\ ;
+蒸気圧 > joukiatsu\ ;
+両替所 > ryougaejo\ ;
+後半戦 > kouhansen\ ;
+幽寂味 > yuujakumi\ ;
+帝王学 > teiougaku\ ;
+貯水池 > chosuichi\ ;
+新世界 > shinsekai\ ;
+命令法 > meireihou\ ;
+現像液 > genzoueki\ ;
+観覧車 > kanransha\ ;
+会社葬 > kaishasou\ ;
+禁酒法 > kinshuhou\ ;
+脳膜炎 > noumakuen\ ;
+五大州 > godaishuu\ ;
+文部省 > monbushou\ ;
+軍事通 > gunjitsuu\ ;
+脳腫瘍 > noushuyou\ ;
+世界一 > sekaiichi\ ;
+再分配 > saibunpai\ ;
+掛布団 > kakebuton\ ;
+外洋船 > gaiyousen\ ;
+組職図 > soshokuzu\ ;
+交換品 > koukanhin\ ;
+火食鳥 > hikuidori\ ;
+貯水槽 > chosuisou\ ;
+海水魚 > kaisuigyo\ ;
+精進日 > shoujinbi\ ;
+三色旗 > sanshokki\ ;
+逃亡者 > toubousha\ ;
+道具箱 > dougubako\ ;
+出廷日 > shutteibi\ ;
+画学紙 > gagakushi\ ;
+貯蔵所 > chozousho\ ;
+東海道 > toukaidou\ ;
+交換台 > koukandai\ ;
+戦時中 > senjichuu\ ;
+混分数 > konbunsuu\ ;
+生石灰 > seisekkai\ ;
+不検束 > fukensoku\ ;
+小松菜 > komatsuna\ ;
+舟大工 > funadaiku\ ;
+贈呈者 > zouteisha\ ;
+類概念 > ruigainen\ ;
+任天堂 > nintendou\ ;
+南方産 > nanpousan\ ;
+結納金 > yuinoukin\ ;
+太刀筋 > tachisuji\ ;
+熟字訓 > jukujikun\ ;
+声明書 > seimeisho\ ;
+問題点 > mondaiten\ ;
+分工場 > bunkoujou\ ;
+定年制 > teinensei\ ;
+地元紙 > jimotoshi\ ;
+預託金 > yotakukin\ ;
+防空砲 > boukuuhou\ ;
+静圧比 > seiatsuhi\ ;
+回顧録 > kaikoroku\ ;
+両替屋 > ryougaeya\ ;
+人気者 > ninkimono\ ;
+不良品 > furyouhin\ ;
+小便所 > shoubenjo\ ;
+循環性 > junkansei\ ;
+商用化 > shouyouka\ ;
+交換円 > koukan''en\ ;
+試験法 > shikenhou\ ;
+学園祭 > gakuensai\ ;
+感歎詞 > kantanshi\ ;
+第六感 > dairokkan\ ;
+貧民街 > hinmingai\ ;
+命令書 > meireisho\ ;
+半導体 > handoutai\ ;
+兵器廠 > heikishou\ ;
+裁判上 > saibanjou\ ;
+売春婦 > baishunpu\ ;
+下克上 > gekokujou\ ;
+配電所 > haidensho\ ;
+社交界 > shakoukai\ ;
+優勝旗 > yuushouki\ ;
+手品師 > tejinashi\ ;
+髄膜炎 > zuimakuen\ ;
+雨支度 > amajitaku\ ;
+修道院 > shuudouin\ ;
+海蛇座 > umihebiza\ ;
+命令文 > meireibun\ ;
+東洋風 > touyoufuu\ ;
+弟息子 > otomusuko\ ;
+五大国 > godaikoku\ ;
+接骨医 > sekkotsui\ ;
+望遠鏡 > bouenkyou\ ;
+梅雨空 > tsuyuzora\ ;
+工員寮 > kouinryou\ ;
+無遊病 > muyuubyou\ ;
+国際化 > kokusaika\ ;
+驚異的 > kyouiteki\ ;
+関東弁 > kantouben\ ;
+複合語 > fukugougo\ ;
+弘済会 > kousaikai\ ;
+至近弾 > shikindan\ ;
+本年度 > hon''nendo\ ;
+救護所 > kyuugosho\ ;
+呑気者 > nonkimono\ ;
+小作権 > kosakuken\ ;
+代理母 > dairihaha\ ;
+分界線 > bunkaisen\ ;
+端境期 > hazakaiki\ ;
+前々回 > zenzenkai\ ;
+語源学 > gogengaku\ ;
+心電図 > shindenzu\ ;
+健康地 > kenkouchi\ ;
+氏子札 > ujikofuda\ ;
+諸問題 > shomondai\ ;
+口唇期 > koushinki\ ;
+将棋盤 > shougiban\ ;
+獅子唐 > shishitou\ ;
+平信徒 > heishinto\ ;
+大気圧 > taikiatsu\ ;
+将軍家 > shougunke\ ;
+千代紙 > chiyogami\ ;
+主戦論 > shusenron\ ;
+劣等生 > rettousei\ ;
+新字体 > shinjitai\ ;
+納品書 > nouhinsho\ ;
+皇太子 > koutaishi\ ;
+騒擾罪 > soujouzai\ ;
+半官報 > hankanpou\ ;
+同伴者 > douhansha\ ;
+海鼠板 > namakoban\ ;
+准士官 > junshikan\ ;
+実験者 > jikkensha\ ;
+代理業 > dairigyou\ ;
+一次元 > ichijigen\ ;
+用益権 > youekiken\ ;
+上腕筋 > jouwankin\ ;
+参政権 > sanseiken\ ;
+巡礼者 > junreisha\ ;
+実験群 > jikkengun\ ;
+空景気 > karageiki\ ;
+写真家 > shashinka\ ;
+車椅子 > kurumaisu\ ;
+揮毫料 > kigouryou\ ;
+警告音 > keikokuon\ ;
+教授陣 > kyoujujin\ ;
+初七日 > shonanoka\ ;
+安心感 > anshinkan\ ;
+大入道 > oonyuudou\ ;
+社会悪 > shakaiaku\ ;
+主製品 > shuseihin\ ;
+無気力 > mukiryoku\ ;
+社会性 > shakaisei\ ;
+脱脂綿 > dasshimen\ ;
+気象台 > kishoudai\ ;
+命令形 > meireikei\ ;
+論理学 > ronrigaku\ ;
+実体論 > jittairon\ ;
+小会派 > shoukaiha\ ;
+同値性 > douchisei\ ;
+酸性岩 > sanseigan\ ;
+下足番 > gesokuban\ ;
+斥候兵 > sekkouhei\ ;
+好影響 > koueikyou\ ;
+邯鄲師 > kantanshi\ ;
+生化学 > seikagaku\ ;
+試乗車 > shijousha\ ;
+観覧者 > kanransha\ ;
+奉賀帳 > hougachou\ ;
+圧制的 > asseiteki\ ;
+炭酸紙 > tansanshi\ ;
+再従弟 > saijuutei\ ;
+余計者 > yokeimono\ ;
+不寝番 > fushinban\ ;
+理屈屋 > rikutsuya\ ;
+保管人 > hokan''nin\ ;
+優良馬 > yuuryouba\ ;
+運輸量 > un''yuryou\ ;
+太平洋 > taiheiyou\ ;
+貯蔵品 > chozouhin\ ;
+単糖類 > tantourui\ ;
+聚楽第 > jurakudai\ ;
+生半可 > namahanka\ ;
+協議所 > kyougisho\ ;
+今年度 > kon''nendo\ ;
+准教員 > junkyouin\ ;
+社会層 > shakaisou\ ;
+健康体 > kenkoutai\ ;
+思春期 > shishunki\ ;
+放射性 > houshasei\ ;
+虫媒花 > chuubaika\ ;
+写真器 > shashinki\ ;
+内向性 > naikousei\ ;
+改宗者 > kaisousha\ ;
+優待券 > yuutaiken\ ;
+四人組 > yoningumi\ ;
+退嬰的 > taieiteki\ ;
+善後策 > zengosaku\ ;
+助手席 > joshuseki\ ;
+火木金 > kamokukin\ ;
+氏子帳 > ujikochou\ ;
+皇太后 > koutaigou\ ;
+特攻隊 > tokkoutai\ ;
+遺言者 > yuigonsha\ ;
+郷土史 > kyoudoshi\ ;
+付属校 > fuzokukou\ ;
+統治者 > touchisha\ ;
+名人芸 > meijingei\ ;
+凄文句 > sugomonku\ ;
+戦災者 > sensaisha\ ;
+試作機 > shisakuki\ ;
+黄枯茶 > kigaracha\ ;
+胃腸薬 > ichouyaku\ ;
+陽電子 > youdenshi\ ;
+文殊様 > monjusama\ ;
+付属書 > fuzokusho\ ;
+討論者 > touronsha\ ;
+多汗症 > takanshou\ ;
+投手陣 > toushujin\ ;
+中継所 > chuukeijo\ ;
+根拠地 > konkyochi\ ;
+法人税 > houjinzei\ ;
+地元民 > jimotomin\ ;
+年期者 > nenkimono\ ;
+音楽性 > ongakusei\ ;
+被告人 > hikokunin\ ;
+文化庁 > bunkachou\ ;
+偏向板 > henkouban\ ;
+背任罪 > haininzai\ ;
+傍観者 > boukansha\ ;
+星状体 > seijoutai\ ;
+消化剤 > shoukazai\ ;
+欧州版 > oushuuban\ ;
+小豆粥 > azukigayu\ ;
+系図学 > keizugaku\ ;
+試験官 > shikenkan\ ;
+石楠花 > shakunage\ ;
+書簡箋 > shokansen\ ;
+再配分 > saihaibun\ ;
+協議官 > kyougikan\ ;
+同類項 > douruikou\ ;
+自転軸 > jitenjiku\ ;
+上甲板 > joukanpan\ ;
+全地方 > zenchihou\ ;
+会社法 > kaishahou\ ;
+奉仕品 > houshihin\ ;
+截拳道 > sekkendou\ ;
+仕舞屋 > shimotaya\ ;
+折衷案 > setchuuan\ ;
+航空隊 > koukuutai\ ;
+蝦蟇口 > gamaguchi\ ;
+禁止法 > kinshihou\ ;
+道具方 > dougukata\ ;
+旦那芸 > dan''nagei\ ;
+扶養料 > fuyouryou\ ;
+不信心 > fushinjin\ ;
+平安朝 > heianchou\ ;
+内野席 > naiyaseki\ ;
+因果律 > ingaritsu\ ;
+軽演劇 > keiengeki\ ;
+板金工 > bankinkou\ ;
+定価表 > teikahyou\ ;
+篤志家 > tokushika\ ;
+試験場 > shikenjou\ ;
+旅行者 > ryokousha\ ;
+歯齦炎 > shigin''en\ ;
+蛸坊主 > takobouzu\ ;
+参政官 > sanseikan\ ;
+軍事的 > gunjiteki\ ;
+古銭学 > kosengaku\ ;
+軍官憲 > gunkanken\ ;
+関数論 > kansuuron\ ;
+治療費 > chiryouhi\ ;
+板金屋 > bankin''ya\ ;
+操車場 > soushajou\ ;
+投融資 > touyuushi\ ;
+革命歌 > kakumeika\ ;
+社交性 > shakousei\ ;
+擬爆弾 > gibakudan\ ;
+竹蜻蛉 > taketonbo\ ;
+超党派 > choutouha\ ;
+問題外 > mondaigai\ ;
+一般的 > ippanteki\ ;
+資本金 > shihonkin\ ;
+男子用 > danshiyou\ ;
+対生葉 > taiseiyou\ ;
+社会党 > shakaitou\ ;
+厭世的 > enseiteki\ ;
+訓練生 > kunrensei\ ;
+贈呈本 > zouteibon\ ;
+夢遊病 > muyuubyou\ ;
+家族法 > kazokuhou\ ;
+人気株 > ninkikabu\ ;
+読後感 > dokugokan\ ;
+単細胞 > tansaibou\ ;
+鳴禽類 > meikinrui\ ;
+内部的 > naibuteki\ ;
+練兵場 > renpeijou\ ;
+大前提 > daizentei\ ;
+再従兄 > saijuukei\ ;
+可動橋 > kadoukyou\ ;
+画期的 > kakkiteki\ ;
+音楽堂 > ongakudou\ ;
+荒隠元 > sayaingen\ ;
+洗礼名 > senreimei\ ;
+現業員 > gengyouin\ ;
+一工夫 > hitokufuu\ ;
+膝小僧 > hizakozou\ ;
+作詞家 > sakushika\ ;
+作為的 > sakuiteki\ ;
+小宇宙 > shouuchuu\ ;
+風水害 > fuusuigai\ ;
+単数形 > tansuukei\ ;
+水溶液 > suiyoueki\ ;
+大車輪 > daisharin\ ;
+改定版 > kaiteihan\ ;
+社会人 > shakaijin\ ;
+悪影響 > akueikyou\ ;
+西部劇 > seibugeki\ ;
+雑貨商 > zakkashou\ ;
+劣等感 > rettoukan\ ;
+透明性 > toumeisei\ ;
+若夫婦 > wakafuufu\ ;
+現代詩 > gendaishi\ ;
+陰陽道 > onmyoudou\ ;
+休憩所 > kyuukeijo\ ;
+配給所 > haikyuujo\ ;
+装身具 > soushingu\ ;
+無欠席 > mukesseki\ ;
+自制心 > jiseishin\ ;
+副作用 > fukusayou\ ;
+再選挙 > saisenkyo\ ;
+隠匿者 > intokusha\ ;
+同人種 > doujinshu\ ;
+運送業 > unsougyou\ ;
+内務省 > naimushou\ ;
+炭酸水 > tansansui\ ;
+勤王家 > kin''nouka\ ;
+衛生的 > eiseiteki\ ;
+競技者 > kyougisha\ ;
+再発行 > saihakkou\ ;
+遺言状 > yuigonjou\ ;
+点眼水 > tengansui\ ;
+軽合金 > keigoukin\ ;
+一発屋 > ippatsuya\ ;
+全製品 > zenseihin\ ;
+応召者 > oushousha\ ;
+古印紙 > furuinshi\ ;
+資本財 > shihonzai\ ;
+回顧的 > kaikoteki\ ;
+二親等 > nishintou\ ;
+交戦権 > kousenken\ ;
+広報誌 > kouhoushi\ ;
+例年祭 > reinensai\ ;
+予防薬 > yobouyaku\ ;
+和声学 > waseigaku\ ;
+音楽史 > ongakushi\ ;
+萎縮腎 > ishukujin\ ;
+盗聴器 > touchouki\ ;
+予約金 > yoyakukin\ ;
+春場所 > harubasho\ ;
+租庸調 > soyouchou\ ;
+原子論 > genshiron\ ;
+無機物 > mukibutsu\ ;
+決議案 > ketsugian\ ;
+創作家 > sousakuka\ ;
+爛熟期 > ranjukuki\ ;
+中間派 > chuukanha\ ;
+里程標 > riteihyou\ ;
+資本論 > shihonron\ ;
+今様歌 > imayouuta\ ;
+会津塗 > aidzunuri\ ;
+丸坊主 > marubouzu\ ;
+移植性 > ishokusei\ ;
+前後策 > zengosaku\ ;
+別天地 > bettenchi\ ;
+協議会 > kyougikai\ ;
+防空壕 > boukuugou\ ;
+運送料 > unsouryou\ ;
+幽霊船 > yuureisen\ ;
+伯備線 > hakubisen\ ;
+胃腸病 > ichoubyou\ ;
+告示板 > kokujiban\ ;
+小作人 > kosakunin\ ;
+離間策 > rikansaku\ ;
+民数記 > minsuuki\ ;
+鉄砲座 > teppouza\ ;
+文化人 > bunkajin\ ;
+木工所 > mokkoujo\ ;
+一般法 > ippanhou\ ;
+労務者 > roumusha\ ;
+文庫本 > bunkobon\ ;
+代理人 > dairinin\ ;
+海水着 > kaisuigi\ ;
+自己流 > jikoryuu\ ;
+丁寧語 > teineigo\ ;
+音楽会 > ongakkai\ ;
+同胞愛 > douhouai\ ;
+毛唐人 > ketoujin\ ;
+民事上 > minjijou\ ;
+淡彩画 > tansaiga\ ;
+期待値 > kitaichi\ ;
+全裸体 > zenratai\ ;
+立体派 > rittaiha\ ;
+護送船 > gosousen\ ;
+野蛮人 > yabanjin\ ;
+女性軍 > joseigun\ ;
+同趣味 > doushumi\ ;
+可動性 > kadousei\ ;
+不養生 > fuyoujou\ ;
+飽和点 > houwaten\ ;
+既往症 > kioushou\ ;
+一致点 > itchiten\ ;
+筆記者 > hikkisha\ ;
+送風機 > soufuuki\ ;
+姫御子 > himemiko\ ;
+手配書 > tehaisho\ ;
+脳珊瑚 > nousango\ ;
+上層土 > jousoudo\ ;
+予約語 > yoyakugo\ ;
+油槽船 > yusousen\ ;
+一寸見 > chottomi\ ;
+予防線 > yobousen\ ;
+勘定日 > kanjoubi\ ;
+内帑金 > naidokin\ ;
+伝送路 > densouro\ ;
+銀細工 > ginzaiku\ ;
+人相見 > ninsoumi\ ;
+風刺画 > fuushiga\ ;
+午餐会 > gosankai\ ;
+無欠勤 > mukekkin\ ;
+比重計 > hijuukei\ ;
+運送店 > unsouten\ ;
+操作盤 > sousaban\ ;
+在庫品 > zaikohin\ ;
+民主化 > minshuka\ ;
+延滞金 > entaikin\ ;
+唐破風 > karahafu\ ;
+自公民 > jikoumin\ ;
+賢夫人 > kenpujin\ ;
+運転者 > untensha\ ;
+不格好 > bukakkou\ ;
+催淫剤 > saiinzai\ ;
+栄養短 > eiyoutan\ ;
+医学界 > igakukai\ ;
+無常感 > mujoukan\ ;
+背格好 > sekakkou\ ;
+山査子 > sanzashi\ ;
+医学生 > igakusei\ ;
+開業医 > kaigyoui\ ;
+便衣隊 > ben''itai\ ;
+幹事会 > kanjikai\ ;
+多原子 > tagenshi\ ;
+十字形 > juujikei\ ;
+外野手 > gaiyashu\ ;
+健胃錠 > ken''ijou\ ;
+関西馬 > kansaiba\ ;
+指示詞 > shijishi\ ;
+明日葉 > ashitaba\ ;
+短距離 > tankyori\ ;
+一軒屋 > ikken''ya\ ;
+芸備線 > geibisen\ ;
+陣太鼓 > jindaiko\ ;
+真冬日 > mafuyubi\ ;
+四季報 > shikihou\ ;
+一軒家 > ikken''ya\ ;
+繁華街 > hankagai\ ;
+訓練所 > kunrenjo\ ;
+海水温 > kaisuion\ ;
+筋電図 > kindenzu\ ;
+泌尿幾 > hinyouki\ ;
+不安心 > fuanshin\ ;
+訪問着 > houmongi\ ;
+会社員 > kaishain\ ;
+法王権 > hououken\ ;
+不導体 > fudoutai\ ;
+単試合 > tanshiai\ ;
+写生画 > shaseiga\ ;
+管理人 > kanrinin\ ;
+一家言 > ikkagoto\ ;
+同期生 > doukisei\ ;
+丁定規 > teijougi\ ;
+守備隊 > shubitai\ ;
+併合罪 > heigozai\ ;
+気無精 > kibushou\ ;
+三枚目 > sanmaime\ ;
+手配師 > tehaishi\ ;
+無自覚 > mujikaku\ ;
+火事泥 > kajidoro\ ;
+人工語 > jinkougo\ ;
+既往歴 > kioureki\ ;
+一般性 > ippansei\ ;
+年月日 > nengappi\ ;
+変成器 > henseiki\ ;
+未信者 > mishinja\ ;
+不案内 > fuan''nai\ ;
+自棄酒 > yakezake\ ;
+塑弾性 > sodansei\ ;
+武器倉 > bukigura\ ;
+聴音器 > chouonki\ ;
+平仮名 > hiragana\ ;
+感知器 > kanchiki\ ;
+前半期 > zenpanki\ ;
+空論家 > kuuronka\ ;
+農閑期 > noukanki\ ;
+不賛成 > fusansei\ ;
+養鶏家 > youkeika\ ;
+十二支 > juunishi\ ;
+構成比 > kouseihi\ ;
+向日葵 > himawari\ ;
+機業家 > kigyouka\ ;
+水滸伝 > suikoden\ ;
+御嬢様 > ojousama\ ;
+臨床医 > rinshoui\ ;
+栄養源 > eiyougen\ ;
+多年草 > tanensou\ ;
+荷厄介 > niyakkai\ ;
+励磁損 > reijison\ ;
+安全瓣 > anzenben\ ;
+重酸素 > juusanso\ ;
+二塁手 > niruishu\ ;
+木工具 > mokkougu\ ;
+点眼器 > tenganki\ ;
+莫大小 > meriyasu\ ;
+製鋼所 > seikoujo\ ;
+隠蔽子 > inpeishi\ ;
+勘定場 > kanjouba\ ;
+羽団扇 > hauchiwa\ ;
+破戒僧 > hakaisou\ ;
+瀬戸物 > setomono\ ;
+大英断 > daieidan\ ;
+泌尿器 > hinyouki\ ;
+先議権 > sengiken\ ;
+反抗期 > hankouki\ ;
+本会議 > honkaigi\ ;
+英米人 > eibeijin\ ;
+低順位 > teijun''i\ ;
+不老泉 > furousen\ ;
+名宛人 > naatenin\ ;
+自由詩 > jiyuushi\ ;
+意志的 > ishiteki\ ;
+戦闘員 > sentouin\ ;
+原画像 > gengazou\ ;
+大腿部 > daitaibu\ ;
+滋賀県 > shigaken\ ;
+重水素 > juusuiso\ ;
+人造湖 > jinzouko\ ;
+請負師 > ukeoishi\ ;
+水準器 > suijunki\ ;
+漫画本 > mangahon\ ;
+互換性 > gokansei\ ;
+種種相 > shujusou\ ;
+予防法 > yobouhou\ ;
+安全灯 > anzentou\ ;
+運送人 > unsounin\ ;
+上首尾 > joushubi\ ;
+仏舎利 > busshari\ ;
+與太者 > yotamono\ ;
+満天下 > mantenka\ ;
+価格差 > kakakusa\ ;
+無花果 > ichijiku\ ;
+不人情 > funinjou\ ;
+土建屋 > doken''ya\ ;
+遮断機 > shadanki\ ;
+乱杭歯 > ranguiba\ ;
+蝋細工 > rouzaiku\ ;
+糜爛性 > biransei\ ;
+貴公子 > kikoushi\ ;
+廉価版 > renkaban\ ;
+原子炉 > genshiro\ ;
+転換炉 > tenkanro\ ;
+黎明期 > reimeiki\ ;
+菖蒲湯 > shoubuyu\ ;
+無駄骨 > mudabone\ ;
+類似品 > ruijihin\ ;
+飛行隊 > hikoutai\ ;
+金鳳花 > kinpouge\ ;
+黒雲母 > kurounmo\ ;
+相手方 > aitegata\ ;
+不完全 > fukanzen\ ;
+祖国愛 > sokokuai\ ;
+募集費 > boshuuhi\ ;
+生産費 > seisanhi\ ;
+統合化 > tougouka\ ;
+旅行家 > ryokouka\ ;
+社外秘 > shagaihi\ ;
+従価税 > juukazei\ ;
+使徒書 > shitosho\ ;
+寝化粧 > negeshou\ ;
+創世期 > souseiki\ ;
+金目鯛 > kinmedai\ ;
+上下線 > jougesen\ ;
+理事国 > rijikoku\ ;
+水準儀 > suijungi\ ;
+再保険 > saihoken\ ;
+下馬先 > gebasaki\ ;
+泉貨紙 > senkashi\ ;
+御令嬢 > goreijou\ ;
+電気街 > denkigai\ ;
+軍政部 > gunseibu\ ;
+御題目 > odaimoku\ ;
+無保証 > muhoshou\ ;
+可分性 > kabunsei\ ;
+亜鉛鉄 > aentetsu\ ;
+動安定 > douantei\ ;
+刑事上 > keijijou\ ;
+女性用 > joseiyou\ ;
+乾燥炉 > kansouro\ ;
+育児法 > ikujihou\ ;
+愛鳥家 > aichouka\ ;
+本舞台 > honbutai\ ;
+個人性 > kojinsei\ ;
+依存症 > izonshou\ ;
+悪性度 > akuseido\ ;
+美男子 > binanshi\ ;
+電波法 > denpahou\ ;
+軍事上 > gunjijou\ ;
+烏犀角 > usaikaku\ ;
+偏微分 > henbibun\ ;
+素寒貧 > sukanpin\ ;
+豚小屋 > butagoya\ ;
+延滞税 > entaizei\ ;
+冥王星 > meiousei\ ;
+円盤状 > enbanjou\ ;
+蔵書家 > zoushoka\ ;
+録音機 > rokuonki\ ;
+過般来 > kahanrai\ ;
+鑚孔機 > sankouki\ ;
+一般人 > ippanjin\ ;
+相手役 > aiteyaku\ ;
+歩合給 > buaikyuu\ ;
+井戸綱 > idodzuna\ ;
+既知数 > kichisuu\ ;
+工務店 > koumuten\ ;
+一朱銀 > isshugin\ ;
+航空機 > koukuuki\ ;
+黒繻子 > kurojusu\ ;
+登記所 > toukisho\ ;
+適時打 > tekijida\ ;
+合理性 > gourisei\ ;
+陰電子 > indenshi\ ;
+助動詞 > jodoushi\ ;
+慰藉料 > isharyou\ ;
+衛生兵 > eiseihei\ ;
+低物価 > teibukka\ ;
+個人展 > kojinten\ ;
+実体化 > jittaika\ ;
+邪魔者 > jamamono\ ;
+米議会 > beigikai\ ;
+無尽蔵 > mujinzou\ ;
+転換期 > tenkanki\ ;
+代議士 > daigishi\ ;
+鼻濁音 > bidakuon\ ;
+高電位 > kouden''i\ ;
+持参金 > jisankin\ ;
+唯理論 > yuiriron\ ;
+名望家 > meibouka\ ;
+多元論 > tagenron\ ;
+自棄糞 > yakekuso\ ;
+正符号 > seifugou\ ;
+無産者 > musansha\ ;
+育児書 > ikujisho\ ;
+定期船 > teikisen\ ;
+手弁当 > tebentou\ ;
+乾燥機 > kansouki\ ;
+三日間 > mikkakan\ ;
+十二分 > juunibun\ ;
+稽古台 > keikodai\ ;
+先頭伍 > sentougo\ ;
+出来高 > dekidaka\ ;
+三世相 > sanzesou\ ;
+運根鈍 > unkondon\ ;
+衛生上 > eiseijou\ ;
+医学士 > igakushi\ ;
+請負人 > ukeoinin\ ;
+断面図 > danmenzu\ ;
+虚仮猿 > kokezaru\ ;
+未使用 > mishiyou\ ;
+電波星 > denpasei\ ;
+音韻論 > on''inron\ ;
+機械工 > kikaikou\ ;
+再封鎖 > saifuusa\ ;
+防波堤 > bouhatei\ ;
+運転手 > untenshu\ ;
+争覇戦 > souhasen\ ;
+黒文字 > kuromoji\ ;
+無駄足 > mudaashi\ ;
+着物地 > kimonoji\ ;
+外気圏 > gaikiken\ ;
+開会日 > kaikaibi\ ;
+由来書 > yuraisho\ ;
+鵝口瘡 > gakousou\ ;
+乾燥果 > kansouka\ ;
+安全性 > anzensei\ ;
+乾燥期 > kansouki\ ;
+栄養士 > eiyoushi\ ;
+台布巾 > daibukin\ ;
+構成員 > kouseiin\ ;
+模範生 > mohansei\ ;
+安全弁 > anzenben\ ;
+駆動輪 > kudourin\ ;
+東洋史 > toyofumi\ ;
+単精度 > tanseido\ ;
+火木土 > kamokudo\ ;
+代議制 > daigisei\ ;
+未定稿 > miteikou\ ;
+世話物 > sewamono\ ;
+観戦記 > kansenki\ ;
+天瓜粉 > tenkafun\ ;
+形成期 > keiseiki\ ;
+放映権 > houeiken\ ;
+監視所 > kanshijo\ ;
+御本尊 > gohonzon\ ;
+単純化 > tanjunka\ ;
+個人名 > kojinmei\ ;
+検眼医 > kengan''i\ ;
+医学史 > igakushi\ ;
+未踏峰 > mitouhou\ ;
+断断固 > dandanko\ ;
+暖房器 > danbouki\ ;
+斡旋者 > assensha\ ;
+仏生会 > busshoue\ ;
+規格化 > kikakuka\ ;
+司令部 > shireibu\ ;
+意匠権 > ishouken\ ;
+尊敬語 > sonkeigo\ ;
+形態素 > keitaiso\ ;
+美少女 > bishoujo\ ;
+円運動 > en''undou\ ;
+象牙色 > zougeiro\ ;
+遮断器 > shadanki\ ;
+許可書 > kyokasho\ ;
+商議員 > shougiin\ ;
+御一新 > goisshin\ ;
+愉快犯 > yukaihan\ ;
+指示板 > shijiban\ ;
+鉄工所 > tekkoujo\ ;
+経営難 > keieinan\ ;
+陰陽師 > on''youji\ ;
+換気扇 > kankisen\ ;
+非合法 > higouhou\ ;
+飛行艇 > hikoutei\ ;
+飛行船 > hikousen\ ;
+経営陣 > keieijin\ ;
+御来光 > goraikou\ ;
+不断草 > fudansou\ ;
+栄養剤 > eiyouzai\ ;
+連鎖店 > rensaten\ ;
+兵法家 > heihouka\ ;
+頻度数 > hindosuu\ ;
+資本家 > shihonka\ ;
+最右翼 > saiuyoku\ ;
+栄養分 > eiyoubun\ ;
+可処分 > kashobun\ ;
+蒙古斑 > moukohan\ ;
+寒稽古 > kangeiko\ ;
+第三紀 > daisanki\ ;
+砂風呂 > sunaburo\ ;
+運転士 > untenshi\ ;
+第一線 > daiissen\ ;
+邪魔物 > jamamono\ ;
+銀行家 > ginkouka\ ;
+三仙叉 > sansensa\ ;
+再工事 > saikouji\ ;
+裏日本 > uranihon\ ;
+被傭者 > hiyousha\ ;
+軽水炉 > keisuiro\ ;
+自由港 > jiyuukou\ ;
+御曹子 > onzoushi\ ;
+防水扉 > bousuihi\ ;
+居心地 > igokochi\ ;
+地下道 > chikadou\ ;
+無駄花 > mudabana\ ;
+与太者 > yotamono\ ;
+無定見 > muteiken\ ;
+美容師 > biyoushi\ ;
+発火点 > hakkaten\ ;
+現代化 > gendaika\ ;
+福井県 > fukuiken\ ;
+不敬虔 > fukeiken\ ;
+丁子油 > choujiyu\ ;
+乾燥季 > kansouki\ ;
+断断乎 > dandanko\ ;
+財務官 > zaimukan\ ;
+料理屋 > ryouriya\ ;
+停車場 > teishaba\ ;
+感光度 > kankoudo\ ;
+無能者 > munousha\ ;
+交叉点 > kousaten\ ;
+氷河期 > hyougaki\ ;
+低電位 > teiden''i\ ;
+出世魚 > shusseuo\ ;
+運転台 > untendai\ ;
+野心家 > yashinka\ ;
+自由権 > jiyuuken\ ;
+防水布 > bousuifu\ ;
+再臨派 > sairinha\ ;
+名場面 > meibamen\ ;
+筆記体 > hikkitai\ ;
+弦楽器 > gengakki\ ;
+滞在費 > taizaihi\ ;
+規定値 > kiteichi\ ;
+一体感 > ittaikan\ ;
+赤砂糖 > akazatou\ ;
+牛小屋 > ushigoya\ ;
+廉価品 > renkahin\ ;
+民需品 > minjuhin\ ;
+真人間 > maningen\ ;
+金盞花 > kinsenka\ ;
+取沙汰 > torizata\ ;
+銀行員 > ginkouin\ ;
+層位学 > souigaku\ ;
+透視図 > toushizu\ ;
+名義人 > meiginin\ ;
+給油所 > kyuuyujo\ ;
+自走砲 > jisouhou\ ;
+寄稿者 > kikousha\ ;
+抒情詩 > jojoushi\ ;
+円刃刀 > enjintou\ ;
+乾燥器 > kansouki\ ;
+三七日 > minanoka\ ;
+寺小屋 > terakoya\ ;
+御曹司 > onzoushi\ ;
+田雲雀 > tahibari\ ;
+温湿布 > onshippu\ ;
+御面相 > gomensou\ ;
+上景気 > joukeiki\ ;
+育英会 > ikueikai\ ;
+乗馬隊 > joubatai\ ;
+地下街 > chikagai\ ;
+青懸巣 > aokakesu\ ;
+不敬罪 > fukeizai\ ;
+原子価 > genshika\ ;
+総武線 > soubusen\ ;
+不縹緻 > bukiryou\ ;
+解像度 > kaizoudo\ ;
+控訴状 > kousojou\ ;
+再検査 > saikensa\ ;
+複座機 > fukuzaki\ ;
+批評家 > hihyouka\ ;
+御中元 > ochuugen\ ;
+人真似 > hitomane\ ;
+的地位 > tekichii\ ;
+換気口 > kankikou\ ;
+調査員 > chousain\ ;
+世話役 > sewayaku\ ;
+悪知恵 > warudjie\ ;
+短期間 > tankikan\ ;
+御主人 > goshujin\ ;
+同時性 > doujisei\ ;
+黄変米 > ouhenmai\ ;
+余所者 > yosomono\ ;
+滋養分 > jiyoubun\ ;
+棚牡丹 > tanabota\ ;
+銘酒屋 > meishuya\ ;
+塩類泉 > enruisen\ ;
+保菌者 > hokinsha\ ;
+防砂林 > bousarin\ ;
+閉世界 > heisekai\ ;
+地下茎 > chikakei\ ;
+多辺形 > tahenkei\ ;
+不明朗 > fumeirou\ ;
+泥火山 > deikazan\ ;
+京都府 > kyoutofu\ ;
+令夫人 > reifujin\ ;
+罷免権 > himenken\ ;
+丁字形 > teijikei\ ;
+候補者 > kouhosha\ ;
+絵画館 > kaigakan\ ;
+国営化 > kokueika\ ;
+物故者 > bukkosha\ ;
+前相撲 > maezumou\ ;
+研米機 > kenmaiki\ ;
+暗黒期 > ankokuki\ ;
+現時点 > genjiten\ ;
+隣保館 > rinpokan\ ;
+焼夷弾 > shouidan\ ;
+丁字帯 > teijitai\ ;
+加配米 > kahaimai\ ;
+高精度 > kouseido\ ;
+陰関数 > inkansuu\ ;
+水泳帽 > suieibou\ ;
+貸費生 > taihisei\ ;
+増税案 > zouzeian\ ;
+餓鬼共 > gakidomo\ ;
+許可制 > kyokasei\ ;
+女性像 > joseizou\ ;
+火星年 > kaseinen\ ;
+亜硫酸 > aryuusan\ ;
+再軍備 > saigunbi\ ;
+板屋貝 > itayagai\ ;
+斡旋案 > assen''an\ ;
+花崗岩 > kakougan\ ;
+未完成 > mikansei\ ;
+無用心 > buyoujin\ ;
+成文化 > seibunka\ ;
+粗悪品 > soakuhin\ ;
+控訴権 > kousoken\ ;
+調理場 > chouriba\ ;
+地下線 > chikasen\ ;
+亜硝酸 > ashousan\ ;
+定期戦 > teikisen\ ;
+体系化 > taikeika\ ;
+経営者 > keieisha\ ;
+被写体 > hishatai\ ;
+分娩期 > bunbenki\ ;
+後仕舞 > atojimai\ ;
+裏面史 > rimenshi\ ;
+見世物 > misemono\ ;
+被用者 > hiyousha\ ;
+語彙力 > goiryoku\ ;
+魔法瓶 > mahoubin\ ;
+分娩時 > bunbenji\ ;
+上下動 > jougedou\ ;
+平面図 > heimenzu\ ;
+耐火性 > taikasei\ ;
+再定義 > saiteigi\ ;
+電気工 > denkikou\ ;
+反古籠 > hogukago\ ;
+御降誕 > gokoutan\ ;
+明文化 > meibunka\ ;
+腹具合 > haraguai\ ;
+選挙日 > senkyobi\ ;
+輸精管 > yuseikan\ ;
+小売店 > kouriten\ ;
+宇宙論 > uchuuron\ ;
+鑑定家 > kanteika\ ;
+固溶体 > koyoutai\ ;
+案内所 > an''naijo\ ;
+自信家 > jishinka\ ;
+亜鉛末 > aenmatsu\ ;
+導電度 > doudendo\ ;
+県知事 > kenchiji\ ;
+宇宙観 > uchuukan\ ;
+電動機 > dendouki\ ;
+一丁目 > itchoume\ ;
+伊達衆 > dateshuu\ ;
+腋窩腺 > ekikasen\ ;
+不文法 > fubunpou\ ;
+一貫性 > ikkansei\ ;
+口内炎 > kounaien\ ;
+過不足 > kafusoku\ ;
+愛用者 > aiyousha\ ;
+公民科 > kouminka\ ;
+出格子 > degoushi\ ;
+今世紀 > konseiki\ ;
+未婚者 > mikonsha\ ;
+候補生 > kouhosei\ ;
+東南亜 > tounan''a\ ;
+供養塔 > kuyoutou\ ;
+健胃剤 > ken''izai\ ;
+修験者 > shugenja\ ;
+柔道着 > juudougi\ ;
+微系数 > bikeisuu\ ;
+仕置場 > shiokiba\ ;
+平方和 > heihouwa\ ;
+伴奏部 > bansoubu\ ;
+古写本 > koshahon\ ;
+出来物 > dekimono\ ;
+土饅頭 > domanjuu\ ;
+世話人 > sewabito\ ;
+美顔水 > bigansui\ ;
+自由刑 > jiyuukei\ ;
+塩風呂 > shioburo\ ;
+充電器 > juudenki\ ;
+被験者 > hikensha\ ;
+小熊座 > kogumaza\ ;
+手信語 > teshingo\ ;
+赤毛布 > akagetto\ ;
+水彩画 > suisaiga\ ;
+一人寝 > hitorine\ ;
+青味泥 > aomidoro\ ;
+自由党 > jiyuutou\ ;
+芙蓉峰 > fuyouhou\ ;
+落花生 > rakkasei\ ;
+山間部 > sankanbu\ ;
+同時代 > doujidai\ ;
+無宗派 > mushuuha\ ;
+軍政府 > gunseifu\ ;
+婦人会 > fujinkai\ ;
+寺子屋 > terakoya\ ;
+原繊維 > gensen''i\ ;
+継電気 > keidenki\ ;
+右中間 > uchuukan\ ;
+不文明 > fubunmei\ ;
+平土間 > hiradoma\ ;
+次男坊 > jinanbou\ ;
+膀胱炎 > boukouen\ ;
+有効打 > yuukouda\ ;
+雨量計 > uryoukei\ ;
+宇宙船 > uchuusen\ ;
+減衰器 > gensuiki\ ;
+繰糸機 > soushiki\ ;
+多芸性 > tageisei\ ;
+赤切符 > akagippu\ ;
+火星人 > kaseijin\ ;
+日航機 > nikkouki\ ;
+今世界 > konsekai\ ;
+軍需品 > gunjuhin\ ;
+水蒸気 > suijouki\ ;
+単漢字 > tankanji\ ;
+十文字 > juumonji\ ;
+守備兵 > shubihei\ ;
+暗号文 > angoubun\ ;
+高等科 > koutouka\ ;
+添乗員 > tenjouin\ ;
+案内図 > an''naizu\ ;
+合言葉 > aikotoba\ ;
+定期券 > teikiken\ ;
+予算案 > yosan''an\ ;
+多様性 > tayousei\ ;
+名文家 > meibunka\ ;
+自賠法 > jibaihou\ ;
+出不精 > debushou\ ;
+安山岩 > anzangan\ ;
+老大家 > routaika\ ;
+氏素性 > ujisujou\ ;
+上天気 > joutenki\ ;
+第一声 > daiissei\ ;
+導火線 > doukasen\ ;
+依頼心 > iraishin\ ;
+宇宙線 > uchuusen\ ;
+負債者 > fusaisha\ ;
+後頭部 > koutoubu\ ;
+皮膚病 > hifubyou\ ;
+老夫婦 > roufuufu\ ;
+地下水 > chikasui\ ;
+電気代 > denkidai\ ;
+定義域 > teigiiki\ ;
+放火罪 > houkazai\ ;
+雨合羽 > amagappa\ ;
+受刑者 > jukeisha\ ;
+非公開 > hikoukai\ ;
+普請場 > fushinba\ ;
+多島海 > tatoukai\ ;
+労働歌 > roudouka\ ;
+寄港地 > kikouchi\ ;
+定期便 > teikibin\ ;
+未来形 > miraikei\ ;
+飛行士 > hikoushi\ ;
+妊産婦 > ninsanpu\ ;
+短時間 > tanjikan\ ;
+偏差値 > hensachi\ ;
+下降線 > kakousen\ ;
+洋菓子 > yougashi\ ;
+断裁機 > dansaiki\ ;
+飛行場 > hikoujou\ ;
+工具入 > kouguire\ ;
+体温計 > taionkei\ ;
+発行日 > hakkoubi\ ;
+拷問具 > goumongu\ ;
+除外例 > jogairei\ ;
+寿老人 > juroujin\ ;
+公取委 > koutorii\ ;
+院外団 > ingaidan\ ;
+不変性 > fuhensei\ ;
+多産系 > tasankei\ ;
+小規模 > shoukibo\ ;
+合議制 > gougisei\ ;
+維管束 > ikansoku\ ;
+高温計 > kouonkei\ ;
+初等科 > shotouka\ ;
+記憶法 > kiokuhou\ ;
+今朝方 > kesagata\ ;
+選挙区 > senkyoku\ ;
+破砕性 > hasaisei\ ;
+鹿野苑 > rokuyaon\ ;
+舞台裏 > butaiura\ ;
+経営権 > keieiken\ ;
+不燃性 > funensei\ ;
+神祇官 > jingikan\ ;
+氏素姓 > ujisujou\ ;
+被害者 > higaisha\ ;
+水酸基 > suisanki\ ;
+天体図 > tentaizu\ ;
+近距離 > kinkyori\ ;
+準社員 > junshain\ ;
+人件費 > jinkenhi\ ;
+常得意 > joutokui\ ;
+皮脂腺 > hishisen\ ;
+無定形 > muteikei\ ;
+可用性 > kayousei\ ;
+人生派 > jinseiha\ ;
+発行所 > hakkoujo\ ;
+摩天楼 > matenrou\ ;
+小間物 > komamono\ ;
+御大層 > gotaisou\ ;
+警備隊 > keibitai\ ;
+割烹着 > kappougi\ ;
+協和音 > kyouwaon\ ;
+受動態 > judoutai\ ;
+総動員 > soudouin\ ;
+花林糖 > karintou\ ;
+正社員 > seishain\ ;
+等温線 > touonsen\ ;
+御霊屋 > mitamaya\ ;
+一夕話 > issekiwa\ ;
+小為替 > kogawase\ ;
+第一位 > daiichii\ ;
+税関吏 > zeikanri\ ;
+養育費 > youikuhi\ ;
+流鏑馬 > yabusame\ ;
+控訴人 > kousonin\ ;
+茶話会 > chawakai\ ;
+喫緊事 > kikkinji\ ;
+吸金剛 > kokongou\ ;
+老練家 > rourenka\ ;
+不調和 > fuchouwa\ ;
+気管支 > kikanshi\ ;
+水酸化 > suisanka\ ;
+大人気 > daininki\ ;
+青銅器 > seidouki\ ;
+飛行便 > hikoubin\ ;
+可能法 > kanouhou\ ;
+真珠母 > shinjubo\ ;
+専攻科 > senkouka\ ;
+化膿菌 > kanoukin\ ;
+非常線 > hijousen\ ;
+精一杯 > seiippai\ ;
+遇不遇 > guufuguu\ ;
+未耕地 > mikouchi\ ;
+門下生 > monkasei\ ;
+一風呂 > hitofuro\ ;
+培養基 > baiyouki\ ;
+軍隊化 > guntaika\ ;
+演芸会 > engeikai\ ;
+文人画 > bunjinga\ ;
+現時代 > genjidai\ ;
+広範囲 > kouhan''i\ ;
+円屋根 > maruyane\ ;
+培養土 > baiyoudo\ ;
+寒気団 > kankidan\ ;
+粗利益 > ararieki\ ;
+予算外 > yosangai\ ;
+非民主 > himinshu\ ;
+受益者 > juekisha\ ;
+安定板 > anteiban\ ;
+記念館 > kinenkan\ ;
+大宇宙 > daiuchuu\ ;
+亜急性 > akyuusei\ ;
+計算簿 > keisanbo\ ;
+静止画 > seishiga\ ;
+不整合 > fuseigou\ ;
+二重顎 > nijuuago\ ;
+制御機 > seigyoki\ ;
+二等分 > nitoubun\ ;
+平炉法 > heirohou\ ;
+五稜堡 > goryouho\ ;
+未来像 > miraizou\ ;
+足温器 > sokuonki\ ;
+二等兵 > nitouhei\ ;
+貴族院 > kizokuin\ ;
+継電器 > keidenki\ ;
+記号論 > kigouron\ ;
+名詞句 > meishiku\ ;
+伝馬船 > tenmasen\ ;
+銀河系 > gingakei\ ;
+大宮司 > daiguuji\ ;
+流行目 > hayarime\ ;
+遠視眼 > enshigan\ ;
+卵巣炎 > ransouen\ ;
+未亡人 > miboujin\ ;
+不経済 > fukeizai\ ;
+引用符 > in''youfu\ ;
+柔道家 > juudouka\ ;
+不均衡 > fukinkou\ ;
+対話者 > taiwasha\ ;
+訟務部 > shoumubu\ ;
+御霊前 > goreizen\ ;
+兌換券 > dakanken\ ;
+不摂生 > fusessei\ ;
+日本風 > nihonfuu\ ;
+候補地 > kouhochi\ ;
+砂防林 > sabourin\ ;
+下士官 > kashikan\ ;
+市議会 > shigikai\ ;
+一時期 > ichijiki\ ;
+自負心 > jifushin\ ;
+相合傘 > aiaigasa\ ;
+謙譲語 > kenjougo\ ;
+扶持米 > fuchimai\ ;
+再起動 > saikidou\ ;
+獣医学 > juuigaku\ ;
+非常用 > hijouyou\ ;
+破廉恥 > harenchi\ ;
+出放題 > dehoudai\ ;
+安定感 > anteikan\ ;
+養老院 > yourouin\ ;
+野良猫 > noraneko\ ;
+未丁年 > miteinen\ ;
+安定性 > anteisei\ ;
+決算期 > kessanki\ ;
+自乗根 > jijoukon\ ;
+全荷重 > zenkajuu\ ;
+奥御殿 > okugoten\ ;
+製造所 > seizoujo\ ;
+快男児 > kaidanji\ ;
+旺文社 > oubunsha\ ;
+超音波 > chouonpa\ ;
+守護霊 > shugorei\ ;
+木曾川 > kisogawa\ ;
+弱音器 > jakuonki\ ;
+決算日 > kessanbi\ ;
+自主権 > jishuken\ ;
+能弁家 > noubenka\ ;
+可能性 > kanousei\ ;
+大旦那 > oodan''na\ ;
+印度教 > indokyou\ ;
+無人島 > mujintou\ ;
+真似事 > manegoto\ ;
+謄写器 > toushaki\ ;
+帰還者 > kikansha\ ;
+助産院 > josan''in\ ;
+女店員 > joten''in\ ;
+蛸部屋 > takobeya\ ;
+予算上 > yosanjou\ ;
+定時制 > teijisei\ ;
+正弦波 > seigenha\ ;
+余所事 > yosogoto\ ;
+馬鹿者 > bakamono\ ;
+儀礼兵 > gireihei\ ;
+日本酒 > nihonshu\ ;
+早産児 > souzanji\ ;
+採綿器 > saimenki\ ;
+英連邦 > eirenpou\ ;
+早生児 > souseiji\ ;
+加盟者 > kameisha\ ;
+降雨量 > kouuryou\ ;
+警備艇 > keibitei\ ;
+出来事 > dekigoto\ ;
+価電子 > kadenshi\ ;
+古生界 > koseikai\ ;
+制動機 > seidouki\ ;
+金魚屋 > kingyoya\ ;
+木天蓼 > matatabi\ ;
+半裸体 > hanratai\ ;
+日本軍 > nihongun\ ;
+日本車 > nihonsha\ ;
+修羅道 > shuradou\ ;
+商行為 > shoukoui\ ;
+条里制 > jourisei\ ;
+投影法 > toueihou\ ;
+有尾類 > yuubirui\ ;
+欧羅巴 > youroppa\ ;
+世間体 > sekentei\ ;
+伊達巻 > datemaki\ ;
+水利権 > suiriken\ ;
+史学家 > shigakka\ ;
+納付金 > noufukin\ ;
+蕎麦殻 > sobagara\ ;
+方向舵 > houkouda\ ;
+夏至線 > geshisen\ ;
+不均等 > fukintou\ ;
+宇宙帽 > uchuubou\ ;
+無頼漢 > buraikan\ ;
+濃度計 > noudokei\ ;
+一昨年 > ototoshi\ ;
+未経験 > mikeiken\ ;
+朝寝坊 > asanebou\ ;
+過大視 > kadaishi\ ;
+翡翠色 > hisuiiro\ ;
+土根性 > dokonjou\ ;
+総模様 > soumoyou\ ;
+計算機 > keisanki\ ;
+弁当屋 > bentouya\ ;
+代打者 > daidasha\ ;
+風媒花 > fuubaika\ ;
+無試験 > mushiken\ ;
+醸造酢 > jouzousu\ ;
+反動派 > handouha\ ;
+経済家 > keizaika\ ;
+淋巴腺 > rinpasen\ ;
+自主性 > jishusei\ ;
+越天楽 > etenraku\ ;
+権利金 > kenrikin\ ;
+慢性化 > manseika\ ;
+授乳期 > junyuuki\ ;
+専門語 > senmongo\ ;
+前舞台 > maebutai\ ;
+選科生 > senkasei\ ;
+季刊誌 > kikanshi\ ;
+実際家 > jissaika\ ;
+一昼夜 > itchuuya\ ;
+衆議院 > shuugiin\ ;
+日本製 > nihonsei\ ;
+印判師 > inbanshi\ ;
+小火器 > shoukaki\ ;
+無風帯 > mufuutai\ ;
+制御器 > seigyoki\ ;
+走査線 > sousasen\ ;
+空手家 > karateka\ ;
+不器量 > bukiryou\ ;
+天井値 > tenjoune\ ;
+計算木 > keisangi\ ;
+採炭所 > saitanjo\ ;
+弁務官 > benmukan\ ;
+受益権 > juekiken\ ;
+加工紙 > kakoushi\ ;
+教務課 > kyoumuka\ ;
+連動機 > rendouki\ ;
+交差点 > kousaten\ ;
+議事録 > gijiroku\ ;
+再来年 > sarainen\ ;
+一昨夜 > issakuya\ ;
+宇宙塵 > uchuujin\ ;
+水道屋 > suidouya\ ;
+重軌条 > juukijou\ ;
+違約金 > iyakukin\ ;
+鸚鵡病 > oumubyou\ ;
+単性花 > tanseika\ ;
+注意点 > chuuiten\ ;
+常備金 > joubikin\ ;
+転移性 > ten''isei\ ;
+活火山 > kakkazan\ ;
+加工税 > kakouzei\ ;
+美粧院 > bishouin\ ;
+茶箪笥 > chadansu\ ;
+噴火山 > funkazan\ ;
+地方時 > chihouji\ ;
+悪餓鬼 > warugaki\ ;
+博愛家 > hakuaika\ ;
+情報部 > jouhoubu\ ;
+日本茶 > nihoncha\ ;
+光行差 > koukousa\ ;
+外耳道 > gaijidou\ ;
+地震波 > jishinha\ ;
+三塁打 > sanruida\ ;
+勾引状 > kouinjou\ ;
+地雷源 > jiraigen\ ;
+電機子 > denkishi\ ;
+常備軍 > joubigun\ ;
+小型化 > kogataka\ ;
+刷毛先 > hakesaki\ ;
+青内障 > aosokohi\ ;
+評議員 > hyougiin\ ;
+公分母 > koubunbo\ ;
+可聴度 > kachoudo\ ;
+無条件 > mujouken\ ;
+矢飛白 > yagasuri\ ;
+手腕家 > shuwanka\ ;
+検事正 > kenjisei\ ;
+偽善者 > gizensha\ ;
+伝導度 > dendoudo\ ;
+公募債 > koubosai\ ;
+機関銃 > kikanjuu\ ;
+武勇伝 > buyuuden\ ;
+制御下 > seigyoka\ ;
+蓮華草 > rengesou\ ;
+報知機 > houchiki\ ;
+夏至点 > geshiten\ ;
+武芸者 > bugeisha\ ;
+走馬灯 > soumatou\ ;
+歯軌条 > shikijou\ ;
+二重税 > nijuuzei\ ;
+正比例 > seihirei\ ;
+預金者 > yokinsha\ ;
+加速度 > kasokudo\ ;
+正当化 > seitouka\ ;
+手不足 > tebusoku\ ;
+側火山 > sokkazan\ ;
+過不及 > kafukyuu\ ;
+殺鼠剤 > sassozai\ ;
+記念祭 > kinensai\ ;
+不手際 > futegiwa\ ;
+不等辺 > futouhen\ ;
+被害地 > higaichi\ ;
+機関車 > kikansha\ ;
+日本紙 > nihonshi\ ;
+宇宙人 > uchuujin\ ;
+潜水夫 > sensuifu\ ;
+御陀仏 > odabutsu\ ;
+夜学校 > yagakkou\ ;
+再上映 > saijouei\ ;
+外来語 > gairaigo\ ;
+難破船 > nanpasen\ ;
+駒下駄 > komageta\ ;
+注意書 > chuuisho\ ;
+五重奏 > gojuusou\ ;
+漫談家 > mandanka\ ;
+倍精度 > baiseido\ ;
+納付者 > noufusha\ ;
+噴火口 > funkakou\ ;
+介護人 > kaigonin\ ;
+道議会 > dougikai\ ;
+有機体 > yuukitai\ ;
+死産児 > shizanji\ ;
+不規則 > fukisoku\ ;
+潜水器 > sensuiki\ ;
+整備工 > seibikou\ ;
+荒武者 > aramusha\ ;
+遠地点 > enchiten\ ;
+外字紙 > gaijishi\ ;
+今時分 > imajibun\ ;
+反動家 > handouka\ ;
+機関誌 > kikanshi\ ;
+大晦日 > oomisoka\ ;
+不精巧 > fuseikou\ ;
+大丈夫 > daijoubu\ ;
+保全会 > hozenkai\ ;
+同素体 > dousotai\ ;
+再交付 > saikoufu\ ;
+天日法 > tenpihou\ ;
+守護神 > shugojin\ ;
+組合費 > kumiaihi\ ;
+荒蕪地 > koubuchi\ ;
+愛媛県 > ehimeken\ ;
+計算器 > keisanki\ ;
+未青年 > miseinen\ ;
+人事欄 > jinjiran\ ;
+長音符 > chouonpu\ ;
+不均斉 > fukinsei\ ;
+準備金 > junbikin\ ;
+淋巴液 > rinpaeki\ ;
+事務長 > jimuchou\ ;
+修理屋 > shuuriya\ ;
+懐疑論 > kaigiron\ ;
+喉頭炎 > koutouen\ ;
+疎外感 > sogaikan\ ;
+加速器 > kasokuki\ ;
+加工歯 > kakoushi\ ;
+庭下駄 > niwageta\ ;
+非常勤 > hijoukin\ ;
+野球部 > yakyuubu\ ;
+前駆戦 > zenkusen\ ;
+指導部 > shidoubu\ ;
+財産家 > zaisanka\ ;
+居催促 > izaisoku\ ;
+当歳馬 > tousaiba\ ;
+仁王力 > niouriki\ ;
+多肉果 > tanikuka\ ;
+最盛期 > saiseiki\ ;
+反比例 > hanpirei\ ;
+女子高 > joshikou\ ;
+開回路 > kaikairo\ ;
+審査員 > shinsain\ ;
+麝香水 > jakousui\ ;
+日本犬 > nihonken\ ;
+事務量 > jimuryou\ ;
+引用句 > in''youku\ ;
+科学院 > kagakuin\ ;
+前頭部 > zentoubu\ ;
+十四日 > juuyokka\ ;
+連歌師 > rengashi\ ;
+支援者 > shiensha\ ;
+梶木座 > kajikiza\ ;
+地方区 > chihouku\ ;
+山火事 > yamakaji\ ;
+才未満 > saimiman\ ;
+人類猿 > jinruien\ ;
+議定書 > giteisho\ ;
+茶坊主 > chabouzu\ ;
+加盟店 > kameiten\ ;
+緩下剤 > kangezai\ ;
+萌黄色 > moegiiro\ ;
+空気銃 > kuukijuu\ ;
+鹹水湖 > kansuiko\ ;
+海老腰 > ebigoshi\ ;
+生計費 > seikeihi\ ;
+参加者 > sankasha\ ;
+日本海 > nihonkai\ ;
+被乗数 > hijousuu\ ;
+手風琴 > tefuukin\ ;
+注意報 > chuuihou\ ;
+風景画 > fuukeiga\ ;
+電子音 > denshion\ ;
+転化糖 > tenkatou\ ;
+閉経期 > heikeiki\ ;
+出無精 > debushou\ ;
+互助的 > gojoteki\ ;
+乾所帯 > kanjotai\ ;
+大音声 > daionjou\ ;
+破産者 > hasansha\ ;
+閉回路 > heikairo\ ;
+機関紙 > kikanshi\ ;
+胡麻擂 > gomasuri\ ;
+機雷原 > kiraigen\ ;
+多孔性 > takousei\ ;
+合成音 > gouseion\ ;
+破魔弓 > hamayumi\ ;
+造影剤 > zoueizai\ ;
+倦怠期 > kentaiki\ ;
+未納者 > minousha\ ;
+二重星 > nijuusei\ ;
+繁体字 > hantaiji\ ;
+消音器 > shouonki\ ;
+多人数 > taninzuu\ ;
+赴任地 > funinchi\ ;
+古生代 > koseidai\ ;
+芝居気 > shibaige\ ;
+横座標 > ouzahyou\ ;
+自警団 > jikeidan\ ;
+暫定案 > zanteian\ ;
+魚市場 > uoichiba\ ;
+駅馬車 > ekibasha\ ;
+対話体 > taiwatai\ ;
+清掃夫 > seisoufu\ ;
+高感度 > koukando\ ;
+紀元前 > kigenzen\ ;
+磨研紙 > makenshi\ ;
+火蜥蜴 > hitokage\ ;
+既婚者 > kikonsha\ ;
+搬送波 > hansouha\ ;
+疎開者 > sokaisha\ ;
+思想家 > shisouka\ ;
+岩田帯 > iwataobi\ ;
+開閉機 > kaiheiki\ ;
+序破急 > johakyuu\ ;
+足忠実 > ashimame\ ;
+半減期 > hangenki\ ;
+自然美 > shizenbi\ ;
+前世紀 > zenseiki\ ;
+研磨紙 > kenmashi\ ;
+青写真 > aojashin\ ;
+祈祷書 > kitousho\ ;
+帰還兵 > kikanhei\ ;
+閉経後 > heikeigo\ ;
+多方面 > tahoumen\ ;
+燕尾服 > enbifuku\ ;
+禀議書 > ringisho\ ;
+父兄会 > fukeikai\ ;
+高麗楽 > komagaku\ ;
+全盛期 > zenseiki\ ;
+予想外 > yosougai\ ;
+扁桃油 > hentouyu\ ;
+青年期 > seinenki\ ;
+均等化 > kintouka\ ;
+受験者 > jukensha\ ;
+時代相 > jidaisou\ ;
+増加分 > zoukabun\ ;
+二連銃 > nirenjuu\ ;
+一回転 > ikkaiten\ ;
+主脳部 > shunoubu\ ;
+納付書 > noufusho\ ;
+単弁花 > tanbenka\ ;
+流浪者 > rurousha\ ;
+荒利益 > ararieki\ ;
+菓子盆 > kashibon\ ;
+公用語 > kouyougo\ ;
+太陽炉 > taiyouro\ ;
+受身形 > ukemikei\ ;
+民営化 > min''eika\ ;
+人望家 > jinbouka\ ;
+総二階 > sounikai\ ;
+解雇者 > kaikosha\ ;
+漢時代 > kanjidai\ ;
+内外野 > naigaiya\ ;
+片仮名 > katakana\ ;
+脱衣所 > datsuijo\ ;
+不錆鋼 > fuseikou\ ;
+贈与者 > zouyosha\ ;
+保守系 > hoshukei\ ;
+海馬回 > kaibakai\ ;
+自堕落 > jidaraku\ ;
+本塁打 > honruida\ ;
+愛餐会 > aisankai\ ;
+対抗馬 > taikouba\ ;
+仮名文 > kanabumi\ ;
+胡麻塩 > gomashio\ ;
+加工品 > kakouhin\ ;
+権利書 > kenrisho\ ;
+廃要素 > haiyouso\ ;
+空想家 > kuusouka\ ;
+既定値 > kiteichi\ ;
+販売部 > hanbaibu\ ;
+眼鏡屋 > meganeya\ ;
+前世界 > zensekai\ ;
+本場所 > honbasho\ ;
+虚無党 > kyomutou\ ;
+人類愛 > jinruiai\ ;
+二重奏 > nijuusou\ ;
+愛好者 > aikousha\ ;
+合成語 > gouseigo\ ;
+石火矢 > ishibiya\ ;
+出納簿 > suitoubo\ ;
+軍管区 > gunkanku\ ;
+秋田県 > akitaken\ ;
+儒学界 > jugakkai\ ;
+下手糞 > hetakuso\ ;
+未墾地 > mikonchi\ ;
+大多数 > daitasuu\ ;
+子午線 > shigosen\ ;
+正常化 > seijouka\ ;
+発酵素 > hakkouso\ ;
+距離計 > kyorikei\ ;
+船小屋 > funagoya\ ;
+醸造所 > jouzoujo\ ;
+大納言 > dainagon\ ;
+天文家 > tenmonka\ ;
+模造者 > mozousha\ ;
+寝不足 > nebusoku\ ;
+専門家 > senmonka\ ;
+未然形 > mizenkei\ ;
+剪裁機 > sensaiki\ ;
+購買部 > koubaibu\ ;
+慈善会 > jizenkai\ ;
+悪趣味 > akushumi\ ;
+贈与税 > zouyozei\ ;
+保存系 > hozonkei\ ;
+気動車 > kidousha\ ;
+永住者 > eijuusha\ ;
+未熟児 > mijukuji\ ;
+記念品 > kinenhin\ ;
+破瓜病 > hakabyou\ ;
+破産法 > hasanhou\ ;
+停電日 > teidenbi\ ;
+受験生 > jukensei\ ;
+陸蒸気 > okajouki\ ;
+実行時 > jikkouji\ ;
+模造紙 > mozoushi\ ;
+二原子 > nigenshi\ ;
+他所者 > yosomono\ ;
+秋田犬 > akitaken\ ;
+万国旗 > bankokki\ ;
+事務的 > jimuteki\ ;
+推移的 > suiiteki\ ;
+空気穴 > kuukiana\ ;
+受容者 > juyousha\ ;
+糠味噌 > nukamiso\ ;
+方形波 > houkeiha\ ;
+戦前派 > senzenha\ ;
+処理場 > shorijou\ ;
+二弦琴 > nigenkin\ ;
+酒造家 > shuzouka\ ;
+掲示板 > keijiban\ ;
+内風呂 > uchiburo\ ;
+中労委 > chuuroui\ ;
+愛猫家 > aibyouka\ ;
+三回忌 > sankaiki\ ;
+総仕舞 > soujimai\ ;
+醸造家 > jouzouka\ ;
+交付金 > koufukin\ ;
+扇風機 > senpuuki\ ;
+全候補 > zenkouho\ ;
+理想論 > risouron\ ;
+日本史 > nihonshi\ ;
+漢数字 > kansuuji\ ;
+輝煌帝 > kikoutei\ ;
+支持者 > shijisha\ ;
+大文字 > daimonji\ ;
+子午環 > shigokan\ ;
+艶福家 > enpukuka\ ;
+開閉器 > kaiheiki\ ;
+専門医 > senmon''i\ ;
+更年期 > kounenki\ ;
+専門化 > senmonka\ ;
+日本刀 > nihontou\ ;
+不行儀 > fugyougi\ ;
+帰巣性 > kisousei\ ;
+下手物 > getemono\ ;
+提案者 > teiansha\ ;
+受信機 > jushinki\ ;
+揚子江 > yousukou\ ;
+経常費 > keijouhi\ ;
+海王星 > kaiousei\ ;
+幼稚園 > youchien\ ;
+企画課 > kikakuka\ ;
+月桂樹 > gekkeiju\ ;
+未記入 > mikinyuu\ ;
+研磨材 > kenmazai\ ;
+二年草 > ninensou\ ;
+義勇軍 > giyuugun\ ;
+文語文 > bungobun\ ;
+誕生日 > tanjoubi\ ;
+金時計 > kindokei\ ;
+空洞化 > kuudouka\ ;
+糞味噌 > kusomiso\ ;
+日本人 > nihonjin\ ;
+性遊戯 > seiyuugi\ ;
+次点者 > jitensha\ ;
+防腐剤 > boufuzai\ ;
+日本中 > nihonjuu\ ;
+腕相撲 > udezumou\ ;
+不節制 > fusessei\ ;
+地域差 > chiikisa\ ;
+保護鳥 > hogochou\ ;
+小手先 > kotesaki\ ;
+無降水 > mukousui\ ;
+鼻呼吸 > bikokyuu\ ;
+重騎兵 > juukihei\ ;
+古代史 > kodaishi\ ;
+能舞台 > noubutai\ ;
+競馬馬 > keibauma\ ;
+免租地 > mensochi\ ;
+二次的 > nijiteki\ ;
+演奏者 > ensousha\ ;
+具体性 > gutaisei\ ;
+一等車 > ittousha\ ;
+不品行 > fuhinkou\ ;
+特科兵 > tokkahei\ ;
+脂肪油 > shibouyu\ ;
+左大臣 > sadaijin\ ;
+金字塔 > kinjitou\ ;
+高野山 > kouyasan\ ;
+大熊座 > oogumaza\ ;
+冒険家 > boukenka\ ;
+塩濃度 > en''noudo\ ;
+日乃丸 > hinomaru\ ;
+何処迄 > dokomade\ ;
+近似値 > kinjichi\ ;
+透磁性 > toujisei\ ;
+保護領 > hogoryou\ ;
+特派員 > tokuhain\ ;
+唾液腺 > daekisen\ ;
+庭木戸 > niwakido\ ;
+後援者 > kouensha\ ;
+黄鉄鉱 > outekkou\ ;
+古代人 > kodaijin\ ;
+事務服 > jimufuku\ ;
+小麦粉 > komugiko\ ;
+不溶性 > fuyousei\ ;
+顧問団 > komondan\ ;
+保有者 > hoyuusha\ ;
+避病院 > hibyouin\ ;
+前景気 > maegeiki\ ;
+機関士 > kikanshi\ ;
+外交員 > gaikouin\ ;
+銅相場 > dousouba\ ;
+傾斜度 > keishado\ ;
+高度計 > koudokei\ ;
+近未来 > kinmirai\ ;
+捕鯨船 > hogeisen\ ;
+加害者 > kagaisha\ ;
+数珠玉 > juzudama\ ;
+手羽先 > tebasaki\ ;
+補助翼 > hojoyoku\ ;
+慈悲心 > jihishin\ ;
+外貨債 > gaikasai\ ;
+情報化 > jouhouka\ ;
+総予算 > souyosan\ ;
+真夜中 > mayonaka\ ;
+下意識 > kaishiki\ ;
+代稽古 > daigeiko\ ;
+永住権 > eijuuken\ ;
+保有米 > hoyuumai\ ;
+自国語 > jikokugo\ ;
+反対語 > hantaigo\ ;
+変異体 > hen''itai\ ;
+利己的 > rikoteki\ ;
+建具屋 > tateguya\ ;
+防寒具 > boukangu\ ;
+女学校 > jogakkou\ ;
+保守性 > hoshusei\ ;
+好景気 > koukeiki\ ;
+交付者 > koufusha\ ;
+可変数 > kahensuu\ ;
+花文字 > hanamoji\ ;
+面会日 > menkaibi\ ;
+煙草屋 > tabakoya\ ;
+雨模様 > amemoyou\ ;
+揺籃期 > youranki\ ;
+突破口 > toppakou\ ;
+近代化 > kindaika\ ;
+点火系 > tenkakei\ ;
+二年生 > ninensei\ ;
+星気体 > seikitai\ ;
+不等号 > fudougou\ ;
+五辺形 > gohenkei\ ;
+二輪車 > nirinsha\ ;
+用箪笥 > youdansu\ ;
+冷蔵庫 > reizouko\ ;
+不所存 > fushozon\ ;
+投光器 > toukouki\ ;
+女子校 > joshikou\ ;
+浜茄子 > hamanasu\ ;
+古書展 > koshoten\ ;
+二十代 > nijuudai\ ;
+市街図 > shigaizu\ ;
+樹枝状 > jushijou\ ;
+序盤戦 > jobansen\ ;
+火成岩 > kaseigan\ ;
+組合員 > kumiaiin\ ;
+亜脱臼 > adakkyuu\ ;
+鬱金色 > ukon''iro\ ;
+鬼武者 > onimusha\ ;
+斜投影 > shatouei\ ;
+滑空機 > kakkuuki\ ;
+軽騎兵 > keikihei\ ;
+二元論 > nigenron\ ;
+手料理 > teryouri\ ;
+単利法 > tanrihou\ ;
+御神輿 > omikoshi\ ;
+先鋭化 > sen''eika\ ;
+撒布剤 > sappuzai\ ;
+呉服屋 > gofukuya\ ;
+受信器 > jushinki\ ;
+溶解炉 > youkairo\ ;
+可変性 > kahensei\ ;
+年齢差 > nenreisa\ ;
+刀圭家 > toukeika\ ;
+鳳仙花 > housenka\ ;
+導波管 > douhakan\ ;
+単比例 > tanpirei\ ;
+捕鯨砲 > hogeihou\ ;
+直足袋 > jikatabi\ ;
+悪太郎 > akutarou\ ;
+有理数 > yuurisuu\ ;
+部分品 > bubunhin\ ;
+可燃性 > kanensei\ ;
+不善感 > fuzenkan\ ;
+洗面所 > senmenjo\ ;
+送油管 > souyukan\ ;
+格子戸 > koushido\ ;
+具体例 > gutairei\ ;
+支持杭 > shijikou\ ;
+無限大 > mugendai\ ;
+精米所 > seimaijo\ ;
+統語論 > tougoron\ ;
+未開墾 > mikaikon\ ;
+作業費 > sagyouhi\ ;
+大阪府 > oosakafu\ ;
+猊美渓 > geibikei\ ;
+打撃王 > dagekiou\ ;
+広葉樹 > kouyouju\ ;
+草創期 > sousouki\ ;
+侍衛長 > jieichou\ ;
+二進木 > nishingi\ ;
+顕在化 > kenzaika\ ;
+再試合 > saishiai\ ;
+伝音器 > den''onki\ ;
+義務的 > gimuteki\ ;
+輸卵管 > yurankan\ ;
+低利金 > teirikin\ ;
+戦利品 > senrihin\ ;
+文語体 > bungotai\ ;
+乾性油 > kanseiyu\ ;
+擂粉木 > surikogi\ ;
+指導員 > shidouin\ ;
+未開地 > mikaichi\ ;
+秘書官 > hishokan\ ;
+武家物 > bukemono\ ;
+整理券 > seiriken\ ;
+育雛器 > ikusuuki\ ;
+圧搾機 > assakuki\ ;
+二分法 > nibunhou\ ;
+混成語 > konseigo\ ;
+珈琲苑 > kouhiien\ ;
+二部作 > nibusaku\ ;
+総会屋 > soukaiya\ ;
+仕手戦 > shitesen\ ;
+好好爺 > koukouya\ ;
+税務署 > zeimusho\ ;
+販売機 > hanbaiki\ ;
+空気孔 > kuukikou\ ;
+疲労感 > hiroukan\ ;
+放水路 > housuiro\ ;
+会議所 > kaigisho\ ;
+形容語 > keiyougo\ ;
+一回戦 > ikkaisen\ ;
+疑問詞 > gimonshi\ ;
+苦労人 > kurounin\ ;
+聖火台 > seikadai\ ;
+水位標 > suiihyou\ ;
+悲観論 > hikanron\ ;
+妄語戒 > mougokai\ ;
+永小作 > eikosaku\ ;
+炭素鋼 > tansokou\ ;
+繊維束 > senisoku\ ;
+解放区 > kaihouku\ ;
+保守党 > hoshutou\ ;
+紅一点 > kouitten\ ;
+企業家 > kigyouka\ ;
+家庭用 > kateiyou\ ;
+虚空蔵 > kokuuzou\ ;
+会計課 > kaikeika\ ;
+勤務者 > kinmusha\ ;
+距離感 > kyorikan\ ;
+不成功 > fuseikou\ ;
+祈年祭 > kinensai\ ;
+看護法 > kangohou\ ;
+催事場 > saijijou\ ;
+鬼兵隊 > kiheitai\ ;
+女子大 > joshidai\ ;
+唯我論 > yuigaron\ ;
+未製品 > miseihin\ ;
+無統制 > mutousei\ ;
+造船所 > zousenjo\ ;
+身支度 > mijitaku\ ;
+金本位 > kinhon''i\ ;
+多面性 > tamensei\ ;
+大型機 > oogataki\ ;
+未開人 > mikaijin\ ;
+藁屋根 > warayane\ ;
+月世界 > gessekai\ ;
+得意顔 > tokuigao\ ;
+手間隙 > temahima\ ;
+空気口 > kuukikou\ ;
+政治犯 > seijihan\ ;
+洗面器 > senmenki\ ;
+人文字 > hitomoji\ ;
+模造品 > mozouhin\ ;
+呼吸器 > kokyuuki\ ;
+土地鑑 > tochikan\ ;
+気送管 > kisoukan\ ;
+低金利 > teikinri\ ;
+帽子屋 > boushiya\ ;
+御成功 > goseikou\ ;
+珊瑚海 > sangokai\ ;
+曳光弾 > eikoudan\ ;
+千里眼 > senrigan\ ;
+落下傘 > rakkasan\ ;
+渡航者 > tokousha\ ;
+下手人 > geshunin\ ;
+処女林 > shojorin\ ;
+事業部 > jigyoubu\ ;
+富山房 > fuzanbou\ ;
+接待費 > settaihi\ ;
+繊維性 > sen''isei\ ;
+手話法 > shuwahou\ ;
+保養地 > hoyouchi\ ;
+利己心 > rikoshin\ ;
+点火栓 > tenkasen\ ;
+鎔鉱炉 > youkouro\ ;
+可換群 > kakangun\ ;
+会議場 > kaigijou\ ;
+人非人 > ninpinin\ ;
+花粉管 > kafunkan\ ;
+過激派 > kagekiha\ ;
+溶解度 > youkaido\ ;
+句読点 > kutouten\ ;
+捜査陣 > sousajin\ ;
+企業化 > kigyouka\ ;
+営利的 > eiriteki\ ;
+被災者 > hisaisha\ ;
+不従順 > fujuujun\ ;
+反射炉 > hansharo\ ;
+佝僂病 > kurubyou\ ;
+都会人 > tokaijin\ ;
+呪禁道 > jukondou\ ;
+古版本 > kohanbon\ ;
+測候所 > sokkoujo\ ;
+派遣隊 > hakentai\ ;
+歓迎宴 > kangeien\ ;
+成功裡 > seikouri\ ;
+家庭欄 > kateiran\ ;
+多変数 > tahensuu\ ;
+男性美 > danseibi\ ;
+高機能 > koukinou\ ;
+人間苦 > ningenku\ ;
+三味線 > shamisen\ ;
+寿喜焼 > sukiyaki\ ;
+同程度 > douteido\ ;
+好塩菌 > kouenkin\ ;
+送気管 > soukikan\ ;
+犠牲者 > giseisha\ ;
+花紋板 > kamonban\ ;
+電子化 > denshika\ ;
+尽未来 > jinmirai\ ;
+句読法 > kutouhou\ ;
+好天気 > koutenki\ ;
+浄化槽 > joukasou\ ;
+有声音 > yuuseion\ ;
+反作用 > hansayou\ ;
+全自動 > zenjidou\ ;
+反対派 > hantaiha\ ;
+処女性 > shojosei\ ;
+手間賃 > temachin\ ;
+一回分 > ikkaibun\ ;
+罹災者 > risaisha\ ;
+貯炭所 > chotanjo\ ;
+有人化 > yuujinka\ ;
+印象派 > inshouha\ ;
+講演者 > kouensha\ ;
+槍騎兵 > soukihei\ ;
+逃避行 > touhikou\ ;
+内火艇 > naikatei\ ;
+圧搾器 > assakuki\ ;
+利権屋 > riken''ya\ ;
+光度計 > koudokei\ ;
+閲兵台 > eppeidai\ ;
+混種語 > konshugo\ ;
+透過性 > toukasei\ ;
+会見記 > kaikenki\ ;
+相似点 > soujiten\ ;
+螺子釘 > nejikugi\ ;
+処女峰 > shojohou\ ;
+看護師 > kangoshi\ ;
+有頂点 > uchouten\ ;
+一等星 > ittousei\ ;
+下水道 > gesuidou\ ;
+非人情 > hininjou\ ;
+主義者 > shugisha\ ;
+派遣軍 > hakengun\ ;
+再提案 > saiteian\ ;
+美意識 > biishiki\ ;
+総本家 > souhonke\ ;
+度外視 > dogaishi\ ;
+遠征隊 > enseitai\ ;
+理想型 > risoukei\ ;
+仮分数 > kabunsuu\ ;
+助数詞 > josuushi\ ;
+精算所 > seisanjo\ ;
+消火器 > shoukaki\ ;
+多面体 > tamentai\ ;
+形骸化 > keigaika\ ;
+欧米人 > oubeijin\ ;
+経師屋 > kyoujiya\ ;
+誤変換 > gohenkan\ ;
+還付金 > kanpukin\ ;
+晩御飯 > bangohan\ ;
+腕自慢 > udejiman\ ;
+浄水器 > jousuiki\ ;
+助教諭 > jokyouyu\ ;
+看護士 > kangoshi\ ;
+永子作 > eikosaku\ ;
+処女地 > shojochi\ ;
+利用者 > riyousha\ ;
+無精卵 > museiran\ ;
+無関係 > mukankei\ ;
+正字法 > seijihou\ ;
+軍医監 > gun''ikan\ ;
+警世家 > keiseika\ ;
+来学期 > raigakki\ ;
+映画評 > eigahyou\ ;
+批判者 > hihansha\ ;
+平叙文 > heijobun\ ;
+三重苦 > sanjuuku\ ;
+模倣者 > mohousha\ ;
+予選会 > yosenkai\ ;
+演奏会 > ensoukai\ ;
+不活性 > fukassei\ ;
+開口部 > kaikoubu\ ;
+双胴機 > soudouki\ ;
+須弥山 > shumisen\ ;
+偽造罪 > gizouzai\ ;
+秀画家 > shuugaka\ ;
+交代員 > koutaiin\ ;
+赤電話 > akadenwa\ ;
+有期刑 > yuukikei\ ;
+口話法 > kouwahou\ ;
+戸主権 > koshuken\ ;
+公安官 > kouankan\ ;
+歯牙状 > shigajou\ ;
+伝声器 > denseiki\ ;
+保険金 > hokenkin\ ;
+指数部 > shisuubu\ ;
+豪華船 > goukasen\ ;
+丸暗記 > maruanki\ ;
+基準点 > kijunten\ ;
+後援会 > kouenkai\ ;
+県議会 > kengikai\ ;
+行在所 > anzaisho\ ;
+口語文 > kougobun\ ;
+寝煙草 > netabako\ ;
+断破壊 > danhakai\ ;
+磁鉄鉱 > jitekkou\ ;
+円為替 > engawase\ ;
+看護兵 > kangohei\ ;
+営業部 > eigyoubu\ ;
+不消化 > fushouka\ ;
+不徳義 > futokugi\ ;
+地吹雪 > jifubuki\ ;
+須弥壇 > shumidan\ ;
+佐幕派 > sabakuha\ ;
+頓痴気 > tonchiki\ ;
+多数党 > tasuutou\ ;
+輸送船 > yusousen\ ;
+採油権 > saiyuken\ ;
+来世紀 > raiseiki\ ;
+山水画 > sansuiga\ ;
+掃除人 > soujinin\ ;
+一等地 > ittouchi\ ;
+税務官 > zeimukan\ ;
+看護人 > kangonin\ ;
+半切符 > hankippu\ ;
+圧瀘器 > atsuroki\ ;
+基準法 > kijunhou\ ;
+受講者 > jukousha\ ;
+測距儀 > sokkyogi\ ;
+冷凍機 > reitouki\ ;
+等距離 > toukyori\ ;
+不名数 > fumeisuu\ ;
+試運転 > shiunten\ ;
+義勇兵 > giyuuhei\ ;
+親画面 > oyagamen\ ;
+拒否権 > kyohiken\ ;
+二番線 > nibansen\ ;
+営業費 > eigyouhi\ ;
+相似形 > soujikei\ ;
+双生児 > souseiji\ ;
+罹災民 > risaimin\ ;
+寄生木 > yadorigi\ ;
+火薬庫 > kayakuko\ ;
+赤頭巾 > akazukin\ ;
+蜥蜴座 > tokageza\ ;
+警報音 > keihouon\ ;
+大蜥蜴 > ootokage\ ;
+更生期 > kouseiki\ ;
+疑問文 > gimonbun\ ;
+荷為替 > nigawase\ ;
+圧濾器 > atsuroki\ ;
+腎臓炎 > jinzouen\ ;
+線維束 > senisoku\ ;
+寄贈者 > kizousha\ ;
+家庭内 > kateinai\ ;
+落語家 > rakugoka\ ;
+無節操 > musessou\ ;
+容疑者 > yougisha\ ;
+展開図 > tenkaizu\ ;
+私生児 > shiseiji\ ;
+大手筋 > ootesuji\ ;
+公定価 > kouteika\ ;
+気分屋 > kibun''ya\ ;
+一等兵 > ittouhei\ ;
+下水管 > gesuikan\ ;
+整数比 > seisuuhi\ ;
+社務所 > shamusho\ ;
+高層雲 > kousouun\ ;
+常套語 > joutougo\ ;
+船外機 > sengaiki\ ;
+双暗車 > souansha\ ;
+旅客機 > ryokakki\ ;
+運営者 > un''eisha\ ;
+恣意的 > shiiteki\ ;
+破天荒 > hatenkou\ ;
+熱帯夜 > nettaiya\ ;
+達成度 > tasseido\ ;
+多角形 > takakkei\ ;
+入会権 > iriaiken\ ;
+千葉県 > chibaken\ ;
+五月雨 > samidare\ ;
+有頂天 > uchouten\ ;
+準会員 > junkaiin\ ;
+水曜日 > suiyoubi\ ;
+渇水期 > kassuiki\ ;
+競馬場 > keibajou\ ;
+鳩小屋 > hatogoya\ ;
+不正視 > fuseishi\ ;
+四半期 > shihanki\ ;
+熔鉱炉 > youkouro\ ;
+作用点 > sayouten\ ;
+遊園地 > yuuenchi\ ;
+軌道船 > kidousen\ ;
+弁理士 > benrishi\ ;
+麻酔銃 > masuijuu\ ;
+木螺子 > mokuneji\ ;
+歩数計 > hosuukei\ ;
+主題歌 > shudaika\ ;
+正会員 > seikaiin\ ;
+微分法 > bibunhou\ ;
+動員令 > douinrei\ ;
+青瓦台 > seigadai\ ;
+渡船場 > tosenjou\ ;
+意識下 > ishikika\ ;
+保護国 > hogokoku\ ;
+同性愛 > douseiai\ ;
+油圧器 > yuatsuki\ ;
+燕青拳 > enseiken\ ;
+幼年期 > younenki\ ;
+豪華版 > goukaban\ ;
+医原病 > igenbyou\ ;
+電話線 > denwasen\ ;
+冷凍庫 > reitouko\ ;
+還付税 > kanpuzei\ ;
+弁護者 > bengosha\ ;
+電話網 > denwamou\ ;
+登山道 > tozandou\ ;
+重電機 > juudenki\ ;
+不恰好 > bukakkou\ ;
+阿房鳥 > ahoudori\ ;
+予備的 > yobiteki\ ;
+扶助料 > fujoryou\ ;
+猿知恵 > sarudjie\ ;
+地蔵顔 > jizougao\ ;
+作業場 > sagyouba\ ;
+空相場 > kuusouba\ ;
+混合語 > kongougo\ ;
+妥協案 > dakyouan\ ;
+慰謝料 > isharyou\ ;
+無抵抗 > muteikou\ ;
+葉節点 > hasetten\ ;
+他動詞 > tadoushi\ ;
+未成年 > miseinen\ ;
+拘引状 > kouinjou\ ;
+映画狂 > eigakyou\ ;
+法華経 > hokekyou\ ;
+酢料理 > suryouri\ ;
+政府米 > seifumai\ ;
+好結果 > koukekka\ ;
+活性化 > kasseika\ ;
+助言者 > jogonsha\ ;
+裏千家 > urasenke\ ;
+舎利塔 > sharitou\ ;
+不祝儀 > bushuugi\ ;
+過渡的 > katoteki\ ;
+陶芸家 > tougeika\ ;
+作業員 > sagyouin\ ;
+全世界 > zensekai\ ;
+多摩川 > tamagawa\ ;
+微苦笑 > bikushou\ ;
+欺瞞者 > gimansha\ ;
+立法府 > rippoufu\ ;
+被災地 > hisaichi\ ;
+猛打者 > moudasha\ ;
+不祥事 > fushouji\ ;
+結果論 > kekkaron\ ;
+下水溝 > gesuikou\ ;
+水風呂 > mizuburo\ ;
+方位角 > houikaku\ ;
+防塵着 > boujingi\ ;
+既視想 > kishikan\ ;
+口語体 > kougotai\ ;
+幹部会 > kanbukai\ ;
+交際費 > kousaihi\ ;
+手間暇 > temahima\ ;
+武士道 > bushidou\ ;
+魔方陣 > mahoujin\ ;
+葡萄酒 > budoushu\ ;
+冷凍器 > reitouki\ ;
+双子座 > futagoza\ ;
+脱水機 > dassuiki\ ;
+火口原 > kakougen\ ;
+低次元 > teijigen\ ;
+厳冬期 > gentouki\ ;
+丸諳記 > maruanki\ ;
+不退転 > futaiten\ ;
+手土産 > temiyage\ ;
+危険視 > kikenshi\ ;
+舞踊団 > butoudan\ ;
+不決定 > fukettei\ ;
+回帰線 > kaikisen\ ;
+区民税 > kuminzei\ ;
+何番目 > nanbanme\ ;
+脱気水 > dakkisui\ ;
+刑務所 > keimusho\ ;
+健啖家 > kentanka\ ;
+破壊者 > hakaisha\ ;
+自意識 > jiishiki\ ;
+七十路 > nanasoji\ ;
+観自在 > kanjizai\ ;
+遠心機 > enshinki\ ;
+朱印船 > shuinsen\ ;
+洗濯機 > sentakki\ ;
+不動産 > fudousan\ ;
+噴気孔 > funkikou\ ;
+蝦夷松 > ezomatsu\ ;
+鬼刑事 > onikeiji\ ;
+感嘆符 > kantanfu\ ;
+法医学 > houigaku\ ;
+鳥小屋 > torigoya\ ;
+自営業 > jieigyou\ ;
+精錬所 > seirenjo\ ;
+黄菖蒲 > kishoubu\ ;
+亜大陸 > atairiku\ ;
+備考欄 > bikouran\ ;
+未成品 > miseihin\ ;
+片手間 > katatema\ ;
+人間味 > ningenmi\ ;
+無意識 > muishiki\ ;
+投資家 > toushika\ ;
+下水板 > gesuiita\ ;
+馬蹄形 > bateikei\ ;
+全音符 > zen''onpu\ ;
+高輝度 > koukidou\ ;
+不可侵 > fukashin\ ;
+黄口児 > koukouji\ ;
+分科会 > bunkakai\ ;
+蜘蛛膜 > kumomaku\ ;
+事業家 > jigyouka\ ;
+入会地 > iriaichi\ ;
+図書館 > toshokan\ ;
+製版所 > seihanjo\ ;
+東大寺 > toudaiji\ ;
+中位数 > chuuisuu\ ;
+参賀者 > sangasha\ ;
+批准書 > hijunsho\ ;
+舞踏会 > butoukai\ ;
+理化学 > rikagaku\ ;
+登山者 > tozansha\ ;
+助教授 > jokyouju\ ;
+刑務官 > keimukan\ ;
+政務官 > seimukan\ ;
+正義感 > seigikan\ ;
+医薬品 > iyakuhin\ ;
+化粧着 > keshougi\ ;
+火達磨 > hidaruma\ ;
+不徹底 > futettei\ ;
+留守宅 > rusutaku\ ;
+凡試合 > bonshiai\ ;
+万歩計 > manpokei\ ;
+二枚貝 > nimaigai\ ;
+用水路 > yousuiro\ ;
+時計店 > tokeiten\ ;
+固定子 > koteishi\ ;
+有煙炭 > yuuentan\ ;
+講演会 > kouenkai\ ;
+裏鬼門 > urakimon\ ;
+御母様 > okaasama\ ;
+道祖神 > dousojin\ ;
+合法化 > gouhouka\ ;
+首都圏 > shutoken\ ;
+三毛猫 > mikeneko\ ;
+探知機 > tanchiki\ ;
+死火山 > shikazan\ ;
+色模様 > iromoyou\ ;
+糸電話 > itodenwa\ ;
+重大化 > juudaika\ ;
+三段目 > sandanme\ ;
+祭壇座 > saidanza\ ;
+兄弟子 > anideshi\ ;
+運命論 > unmeiron\ ;
+普通科 > futsuuka\ ;
+上古史 > joukoshi\ ;
+預貯金 > yochokin\ ;
+妥当性 > datousei\ ;
+葡萄色 > budouiro\ ;
+排水路 > haisuiro\ ;
+横断面 > oudanmen\ ;
+整経機 > seikeiki\ ;
+事業化 > jigyouka\ ;
+簡体字 > kantaiji\ ;
+可溶片 > kayouhen\ ;
+儀仗兵 > gijouhei\ ;
+陸屋根 > rokuyane\ ;
+座談会 > zadankai\ ;
+帆前船 > homaesen\ ;
+指話法 > shiwahou\ ;
+偽造品 > gizouhin\ ;
+世帯数 > setaisuu\ ;
+一周期 > isshuuki\ ;
+中耳炎 > chuujien\ ;
+富士通 > fujitsuu\ ;
+家屋税 > kaokuzei\ ;
+機動隊 > kidoutai\ ;
+防火線 > boukasen\ ;
+教護院 > kyougoin\ ;
+螺子山 > nejiyama\ ;
+乳児院 > nyuujiin\ ;
+腕時計 > udedokei\ ;
+朱印状 > shuinjou\ ;
+真意義 > shin''igi\ ;
+遊技場 > yuugijou\ ;
+勧工場 > kankouba\ ;
+三冠馬 > sankanba\ ;
+天才児 > tensaiji\ ;
+逆茂木 > sakamogi\ ;
+補充兵 > hojuuhei\ ;
+建議者 > kengisha\ ;
+常夜灯 > jouyatou\ ;
+草屋根 > kusayane\ ;
+権威者 > ken''isha\ ;
+砕岩機 > saiganki\ ;
+葡萄糖 > budoutou\ ;
+白亜館 > hakuakan\ ;
+混和性 > konwasei\ ;
+化粧殿 > kewaiden\ ;
+千分比 > senbunhi\ ;
+時計台 > tokeidai\ ;
+同母姉 > douboshi\ ;
+上得意 > joutokui\ ;
+黄水仙 > kisuisen\ ;
+弱味噌 > yowamiso\ ;
+留守中 > rusuchuu\ ;
+変声期 > henseiki\ ;
+小児科 > shounika\ ;
+三十戸 > sanjikko\ ;
+電離層 > denrisou\ ;
+高踏派 > koutouha\ ;
+理工系 > rikoukei\ ;
+無礼講 > bureikou\ ;
+一周忌 > isshuuki\ ;
+不十分 > fujuubun\ ;
+哺乳期 > honyuuki\ ;
+石油王 > sekiyuou\ ;
+可鎔片 > kayouhen\ ;
+御利益 > goriyaku\ ;
+投書家 > toushoka\ ;
+遺留品 > iryuuhin\ ;
+遺伝病 > idenbyou\ ;
+揚炭機 > youtanki\ ;
+非変換 > hihenkan\ ;
+改正案 > kaiseian\ ;
+高高度 > koukoudo\ ;
+経産婦 > keisanpu\ ;
+赤裸裸 > sekirara\ ;
+混合機 > kongouki\ ;
+寄贈品 > kizouhin\ ;
+夜行性 > yakousei\ ;
+鑽孔機 > sankouki\ ;
+前衛派 > zen''eiha\ ;
+未決算 > mikessan\ ;
+主要部 > shuyoubu\ ;
+避寒地 > hikanchi\ ;
+水垢離 > mizugori\ ;
+委託生 > itakusei\ ;
+警報機 > keihouki\ ;
+温罨法 > on''anpou\ ;
+対応版 > taiouban\ ;
+喇嘛教 > ramakyou\ ;
+遺留分 > iryuubun\ ;
+昆布茶 > konbucha\ ;
+乗算器 > jouzanki\ ;
+葬儀社 > sougisha\ ;
+判検事 > hankenji\ ;
+特異点 > tokuiten\ ;
+保険屋 > hoken''ya\ ;
+不都合 > futsugou\ ;
+所持金 > shojikin\ ;
+虎河豚 > torafugu\ ;
+技能者 > ginousha\ ;
+抗議文 > kougibun\ ;
+既製品 > kiseihin\ ;
+基礎的 > kisoteki\ ;
+貝細工 > kaizaiku\ ;
+黒百合 > kuroyuri\ ;
+茶菓子 > chagashi\ ;
+否定文 > hiteibun\ ;
+弁護士 > bengoshi\ ;
+手裏剣 > shuriken\ ;
+銀時計 > gindokei\ ;
+三連符 > sanrenpu\ ;
+小切子 > kokiriko\ ;
+形而上 > keijijou\ ;
+搭乗員 > toujouin\ ;
+世界観 > sekaikan\ ;
+探知器 > tanchiki\ ;
+倉庫番 > soukoban\ ;
+文科系 > bunkakei\ ;
+能文家 > noubunka\ ;
+弁護団 > bengodan\ ;
+銀世界 > ginsekai\ ;
+普遍性 > fuhensei\ ;
+可溶性 > kayousei\ ;
+匈牙利 > hangarii\ ;
+猿真似 > sarumane\ ;
+猪口才 > chokozai\ ;
+鋳物師 > imonoshi\ ;
+無鉄砲 > muteppou\ ;
+同分母 > doubunbo\ ;
+未消化 > mishouka\ ;
+広東語 > kantongo\ ;
+一私人 > isshijin\ ;
+漢蔵語 > kanzougo\ ;
+二人目 > futarime\ ;
+富士絹 > fujiginu\ ;
+肛門科 > koumonka\ ;
+静電気 > seidenki\ ;
+原動機 > gendouki\ ;
+乾船渠 > kandokku\ ;
+鼓吹者 > kosuisha\ ;
+大和煮 > yamatoni\ ;
+茶道具 > chadougu\ ;
+排気管 > haikikan\ ;
+当事者 > toujisha\ ;
+墓誌銘 > boshimei\ ;
+短水路 > tansuiro\ ;
+喫茶店 > kissaten\ ;
+時間帯 > jikantai\ ;
+無水酸 > musuisan\ ;
+破防法 > habouhou\ ;
+合歓木 > nemunoki\ ;
+聖歌隊 > seikatai\ ;
+印紙税 > inshizei\ ;
+指揮者 > shikisha\ ;
+文房具 > bunbougu\ ;
+保管金 > hokankin\ ;
+最多数 > saitasuu\ ;
+不透明 > futoumei\ ;
+栽培所 > saibaijo\ ;
+林檎酒 > ringoshu\ ;
+母細胞 > bosaibou\ ;
+好打者 > koudasha\ ;
+円筒形 > entoukei\ ;
+摂関家 > sekkanke\ ;
+正規軍 > seikigun\ ;
+常套句 > joutouku\ ;
+未決済 > mikessai\ ;
+絃楽器 > gengakki\ ;
+納戸色 > nandoiro\ ;
+非線形 > hisenkei\ ;
+風呂釜 > furogama\ ;
+弁護人 > bengonin\ ;
+鎮守府 > chinjufu\ ;
+一張羅 > itchoura\ ;
+子会社 > kogaisha\ ;
+不凍港 > futoukou\ ;
+卵塔場 > rantouba\ ;
+中央部 > chuuoubu\ ;
+不凍液 > futoueki\ ;
+天秤座 > tenbinza\ ;
+危険性 > kikensei\ ;
+不凍海 > futoukai\ ;
+登山帽 > tozanbou\ ;
+煎豆腐 > iridoufu\ ;
+券売機 > kenbaiki\ ;
+時間外 > jikangai\ ;
+気候帯 > kikoutai\ ;
+楽器店 > gakkiten\ ;
+不分明 > fubunmei\ ;
+正電気 > seidenki\ ;
+本金庫 > honkinko\ ;
+可鎔性 > kayousei\ ;
+雄弁家 > yuubenka\ ;
+付帯犯 > futaihan\ ;
+西洋碁 > seiyougo\ ;
+戦争後 > sensougo\ ;
+敏腕家 > binwanka\ ;
+中以上 > chuuijou\ ;
+高下駄 > takageta\ ;
+非売品 > hibaihin\ ;
+何代目 > nandaime\ ;
+高架線 > koukasen\ ;
+水面下 > suimenka\ ;
+精油所 > seiyusho\ ;
+東西屋 > touzaiya\ ;
+銅版画 > douhanga\ ;
+炊飯器 > suihanki\ ;
+元帥府 > gensuifu\ ;
+鳥之巣 > torinosu\ ;
+医療車 > iryousha\ ;
+特異性 > tokuisei\ ;
+冬至線 > toujisen\ ;
+穿孔機 > senkouki\ ;
+無蓋車 > mugaisha\ ;
+抵抗器 > teikouki\ ;
+蒸気船 > joukisen\ ;
+非許容 > hikyoyou\ ;
+遠近法 > enkinhou\ ;
+仮定法 > kateihou\ ;
+混合器 > kongouki\ ;
+西洋画 > seiyouga\ ;
+達磨忌 > darumaki\ ;
+畳成語 > jouseigo\ ;
+怪事件 > kaijiken\ ;
+所持者 > shojisha\ ;
+擬人法 > gijinhou\ ;
+準大手 > jun''oote\ ;
+回転機 > kaitenki\ ;
+可哀相 > kawaisou\ ;
+交際家 > kousaika\ ;
+離乳期 > rinyuuki\ ;
+磁性層 > jiseisou\ ;
+越冬隊 > ettoutai\ ;
+譜面台 > fumendai\ ;
+仮小屋 > karigoya\ ;
+目論見 > mokuromi\ ;
+仙花紙 > senkashi\ ;
+演算子 > enzanshi\ ;
+有限個 > yuugenko\ ;
+戸障子 > toshouji\ ;
+可鍛性 > katansei\ ;
+太鼓判 > taikoban\ ;
+海坊主 > umibouzu\ ;
+黍魚子 > kibinago\ ;
+営林署 > eirinsho\ ;
+普辺性 > fuhensei\ ;
+固有値 > koyuuchi\ ;
+遺伝学 > idengaku\ ;
+育種所 > ikushujo\ ;
+金鍍金 > kinmekki\ ;
+鼻風邪 > hanakaze\ ;
+参事官 > sanjikan\ ;
+相談所 > soudanjo\ ;
+無税品 > muzeihin\ ;
+応答能 > outounou\ ;
+検問所 > kenmonjo\ ;
+岡場所 > okabasho\ ;
+地蔵尊 > jizouson\ ;
+空世辞 > karaseji\ ;
+表具屋 > hyouguya\ ;
+弔慰金 > chouikin\ ;
+初産婦 > shosanpu\ ;
+暗記物 > ankimono\ ;
+麻酔剤 > masuizai\ ;
+藪医者 > yabuisha\ ;
+何時頃 > itsugoro\ ;
+二義的 > nigiteki\ ;
+雁皮紙 > ganpishi\ ;
+日和見 > hiyorimi\ ;
+社会部 > shakaibu\ ;
+別世界 > bessekai\ ;
+無名氏 > mumeishi\ ;
+雇傭者 > koyousha\ ;
+絢緞子 > ayadonsu\ ;
+渦状文 > kajoumon\ ;
+自動車 > jidousha\ ;
+除草剤 > josouzai\ ;
+不公正 > fukousei\ ;
+闘技場 > tougijou\ ;
+主記憶 > shukioku\ ;
+鼻下長 > bikachou\ ;
+最大化 > saidaika\ ;
+防炎剤 > bouenzai\ ;
+溶鉱炉 > youkouro\ ;
+何時間 > nanjikan\ ;
+系統樹 > keitouju\ ;
+御自身 > gojishin\ ;
+上菓子 > jougashi\ ;
+被減数 > higensuu\ ;
+星条旗 > seijouki\ ;
+疎水性 > sosuisei\ ;
+自治権 > jichiken\ ;
+逮捕者 > taihosha\ ;
+二頭筋 > nitoukin\ ;
+素浪人 > surounin\ ;
+秋場所 > akibasho\ ;
+船火事 > funakaji\ ;
+育種家 > ikushuka\ ;
+正課外 > seikagai\ ;
+煉瓦塀 > rengabei\ ;
+英文法 > eibunpou\ ;
+未決定 > mikettei\ ;
+首脳部 > shunoubu\ ;
+健康美 > kenkoubi\ ;
+両議院 > ryougiin\ ;
+愛唱歌 > aishouka\ ;
+二本棒 > nihonbou\ ;
+青物屋 > aomonoya\ ;
+仮定形 > kateikei\ ;
+自動詞 > jidoushi\ ;
+便宜上 > bengijou\ ;
+田舎風 > inakafuu\ ;
+朝御飯 > asagohan\ ;
+指揮権 > shikiken\ ;
+設計図 > sekkeizu\ ;
+部外者 > bugaisha\ ;
+葬儀場 > sougijou\ ;
+磁性体 > jiseitai\ ;
+銀本位 > ginhon''i\ ;
+政党員 > seitouin\ ;
+対応値 > taiouchi\ ;
+軍艦旗 > gunkanki\ ;
+二乗根 > nijoukon\ ;
+指揮棒 > shikibou\ ;
+母国語 > bokokugo\ ;
+画用紙 > gayoushi\ ;
+検温器 > ken''onki\ ;
+駆潜艇 > kusentei\ ;
+堕胎罪 > dataizai\ ;
+磁気学 > jikigaku\ ;
+懐炉灰 > kairobai\ ;
+要注意 > youchuui\ ;
+初生児 > shoseiji\ ;
+不鮮明 > fusenmei\ ;
+天鵞絨 > biroudou\ ;
+製糖所 > seitoujo\ ;
+先駆者 > senkusha\ ;
+助成金 > joseikin\ ;
+渡来人 > toraijin\ ;
+速記者 > sokkisha\ ;
+艦載機 > kansaiki\ ;
+無名指 > mumeishi\ ;
+製粉機 > seifunki\ ;
+乱層雲 > ransouun\ ;
+参事会 > sanjikai\ ;
+排気弁 > haikiben\ ;
+正統派 > seitouha\ ;
+補佐役 > hosayaku\ ;
+未配当 > mihaitou\ ;
+是非共 > zehitomo\ ;
+未刊行 > mikankou\ ;
+枢機卿 > suukikei\ ;
+未遂罪 > misuizai\ ;
+文化財 > bunkazai\ ;
+武装船 > busousen\ ;
+記者団 > kishadan\ ;
+御用邸 > goyoutei\ ;
+御先棒 > osakibou\ ;
+定比例 > teihirei\ ;
+富士川 > fujikawa\ ;
+産卵期 > sanranki\ ;
+分相機 > bunsouki\ ;
+上層雲 > jousouun\ ;
+三次元 > sanjigen\ ;
+群馬県 > gunmaken\ ;
+兵站部 > heitanbu\ ;
+不公平 > fukouhei\ ;
+前鼻緒 > maehanao\ ;
+不凍剤 > futouzai\ ;
+物真似 > monomane\ ;
+遊歩道 > yuuhodou\ ;
+可哀想 > kawaisou\ ;
+稟議書 > ringisho\ ;
+無制限 > museigen\ ;
+体育家 > taiikuka\ ;
+分岐駅 > bunkieki\ ;
+医療用 > iryouyou\ ;
+逮捕状 > taihojou\ ;
+過去帳 > kakochou\ ;
+機動性 > kidousei\ ;
+熱風炉 > neppuuro\ ;
+歩行者 > hokousha\ ;
+円錐形 > ensuikei\ ;
+守銭奴 > shusendo\ ;
+道化師 > doukeshi\ ;
+下腹部 > kafukubu\ ;
+反政府 > hanseifu\ ;
+回転儀 > kaitengi\ ;
+上草履 > uwazouri\ ;
+米上院 > beijouin\ ;
+一帳羅 > itchoura\ ;
+朝稽古 > asageiko\ ;
+製粉所 > seifunjo\ ;
+被治者 > hichisha\ ;
+宮田家 > miyatake\ ;
+近衛兵 > konoehei\ ;
+岩手県 > iwateken\ ;
+連隊旗 > rentaiki\ ;
+管楽器 > kangakki\ ;
+謝恩会 > shaonkai\ ;
+養蜂家 > youhouka\ ;
+五線紙 > gosenshi\ ;
+平生着 > heizeigi\ ;
+機帆船 > kihansen\ ;
+非排水 > hihaisui\ ;
+着番号 > kibangou\ ;
+不倫罪 > furinzai\ ;
+飴細工 > amezaiku\ ;
+偽似症 > gijishou\ ;
+大広間 > oohiroma\ ;
+避難者 > hinansha\ ;
+定常波 > teijouha\ ;
+指揮官 > shikikan\ ;
+付属語 > fuzokugo\ ;
+年会費 > nenkaihi\ ;
+故買者 > kobaisha\ ;
+五大洋 > godaiyou\ ;
+珪藻土 > keisoudo\ ;
+人名簿 > jinmeibo\ ;
+排気口 > haikikou\ ;
+避妊法 > hininhou\ ;
+萌木色 > moegiiro\ ;
+特価品 > tokkahin\ ;
+揚抗比 > youkouhi\ ;
+雇用者 > koyousha\ ;
+辞書類 > jishorui\ ;
+大往生 > daioujou\ ;
+追起訴 > tsuikiso\ ;
+過半数 > kahansuu\ ;
+安息日 > ansokubi\ ;
+再浮上 > saifujou\ ;
+図書券 > toshoken\ ;
+発起人 > hokkinin\ ;
+道具論 > douguron\ ;
+分相応 > bunsouou\ ;
+立候補 > rikkouho\ ;
+避暑地 > hishochi\ ;
+接骨木 > niwatoko\ ;
+社会科 > shakaika\ ;
+上機嫌 > joukigen\ ;
+交換所 > koukanjo\ ;
+喜歌劇 > kikageki\ ;
+添加剤 > tenkazai\ ;
+未復員 > mifukuin\ ;
+謙遜語 > kensongo\ ;
+未処置 > mishochi\ ;
+地形図 > chikeizu\ ;
+未知数 > michisuu\ ;
+八潮路 > yashioji\ ;
+代理者 > dairisha\ ;
+軍令部 > gunreibu\ ;
+横文字 > yokomoji\ ;
+太古代 > taikodai\ ;
+幾何学 > kikagaku\ ;
+西洋化 > seiyouka\ ;
+刑余者 > keiyosha\ ;
+渡世人 > toseinin\ ;
+羅針儀 > rashingi\ ;
+子音群 > shiingun\ ;
+暗証化 > anshouka\ ;
+滑走路 > kassouro\ ;
+製図板 > seizuban\ ;
+皇統譜 > koutoufu\ ;
+理学部 > rigakubu\ ;
+英語塾 > eigojuku\ ;
+悲喜劇 > hikigeki\ ;
+保管林 > hokanrin\ ;
+再武装 > saibusou\ ;
+赤蜻蛉 > akatonbo\ ;
+予饌会 > yosenkai\ ;
+無辺際 > muhenzai\ ;
+不自然 > fushizen\ ;
+腎不全 > jinfuzen\ ;
+宴会場 > enkaijou\ ;
+経世家 > keiseika\ ;
+不信者 > fushinja\ ;
+単本位 > tanhon''i\ ;
+円錐台 > ensuidai\ ;
+因果者 > ingamono\ ;
+不信義 > fushingi\ ;
+軍事面 > gunjimen\ ;
+恒河沙 > gougasha\ ;
+創案者 > souansha\ ;
+自治体 > jichitai\ ;
+着尺地 > kijakuji\ ;
+後半期 > kouhanki\ ;
+自治会 > jichikai\ ;
+価値観 > kachikan\ ;
+西遊記 > seiyuuki\ ;
+年代記 > nendaiki\ ;
+感情家 > kanjouka\ ;
+文化祭 > bunkasai\ ;
+変換器 > henkanki\ ;
+世界史 > sekaishi\ ;
+受精卵 > juseiran\ ;
+総指揮 > soushiki\ ;
+年甲斐 > toshigai\ ;
+不充分 > fujuubun\ ;
+泥仕合 > dorojiai\ ;
+清子音 > seishiin\ ;
+二期作 > nikisaku\ ;
+横紋筋 > oumonkin\ ;
+運動界 > undoukai\ ;
+未発見 > mihakken\ ;
+偶像化 > guuzouka\ ;
+補聴器 > hochouki\ ;
+英語劇 > eigogeki\ ;
+電算機 > densanki\ ;
+再吟味 > saiginmi\ ;
+円錐体 > ensuitai\ ;
+予餞会 > yosenkai\ ;
+青天井 > aotenjou\ ;
+非戦論 > hisenron\ ;
+未発行 > mihakkou\ ;
+相場師 > soubashi\ ;
+古戦場 > kosenjou\ ;
+三畳紀 > sanjouki\ ;
+好意的 > kouiteki\ ;
+御馳走 > gochisou\ ;
+扶養者 > fuyousha\ ;
+十字軍 > juujigun\ ;
+按手礼 > anshurei\ ;
+同位角 > douikaku\ ;
+輪転機 > rintenki\ ;
+厭人者 > enjinsha\ ;
+無配当 > muhaitou\ ;
+富裕税 > fuyuuzei\ ;
+過労死 > karoushi\ ;
+紅衛兵 > koueihei\ ;
+管理者 > kanrisha\ ;
+夜商人 > yoakindo\ ;
+舌下腺 > zekkasen\ ;
+所持品 > shojihin\ ;
+紀行文 > kikoubun\ ;
+火山灰 > kazanbai\ ;
+騎士道 > kishidou\ ;
+剰余金 > jouyokin\ ;
+豊水期 > housuiki\ ;
+低能児 > teinouji\ ;
+帰納法 > kinouhou\ ;
+獅子座 > shishiza\ ;
+交換器 > koukanki\ ;
+世界人 > sekaijin\ ;
+衛生隊 > eiseitai\ ;
+理事長 > rijichou\ ;
+平屋根 > hirayane\ ;
+元老院 > genrouin\ ;
+棄権者 > kikensha\ ;
+世界中 > sekaijuu\ ;
+河口港 > kakoukou\ ;
+不体裁 > futeisai\ ;
+毒蜘蛛 > dokugumo\ ;
+単語篇 > tangohen\ ;
+生徒数 > seitosuu\ ;
+羊皮紙 > youhishi\ ;
+母系制 > bokeisei\ ;
+展示場 > tenjijou\ ;
+後遺症 > kouishou\ ;
+不定詞 > futeishi\ ;
+加担者 > katansha\ ;
+陽電気 > youdenki\ ;
+宣伝費 > sendenhi\ ;
+劇映画 > gekieiga\ ;
+無常観 > mujoukan\ ;
+遊蕩児 > yuutouji\ ;
+金満家 > kinmanka\ ;
+錠前屋 > joumaeya\ ;
+知名度 > chimeido\ ;
+出鱈目 > detarame\ ;
+懇話会 > konwakai\ ;
+避難民 > hinanmin\ ;
+十字街 > juujigai\ ;
+主演者 > shuensha\ ;
+世俗化 > sezokuka\ ;
+粗製品 > soseihin\ ;
+右心房 > ushinbou\ ;
+圧制者 > asseisha\ ;
+展示品 > tenjihin\ ;
+書記官 > shokikan\ ;
+郷土愛 > kyoudoai\ ;
+貯蔵庫 > chozouko\ ;
+下馬評 > gebahyou\ ;
+不能者 > funousha\ ;
+不良化 > furyouka\ ;
+薄荷糖 > hakkatou\ ;
+薄荷精 > hakkasei\ ;
+比喩的 > hiyuteki\ ;
+争議権 > sougiken\ ;
+重禁錮 > juukinko\ ;
+運動欄 > undouran\ ;
+普偏性 > fuhensei\ ;
+農繁期 > nouhanki\ ;
+感受性 > kanjusei\ ;
+兵器工 > heikikou\ ;
+倪雲林 > geiunrin\ ;
+運送船 > unsousen\ ;
+遊冶郎 > yuuyarou\ ;
+画仙紙 > gasenshi\ ;
+多段階 > tadankai\ ;
+試験機 > shikenki\ ;
+一般論 > ippanron\ ;
+加算税 > kasanzei\ ;
+分岐線 > bunkisen\ ;
+喇叭手 > rappashu\ ;
+免罪符 > menzaifu\ ;
+犬黄楊 > inutsuge\ ;
+厭世観 > enseikan\ ;
+半世紀 > hanseiki\ ;
+酵母菌 > koubokin\ ;
+冷罨法 > reianpou\ ;
+愛蔵版 > aizouban\ ;
+御偉方 > oeragata\ ;
+記数法 > kisuuhou\ ;
+空下手 > karaheta\ ;
+不健康 > fukenkou\ ;
+探検家 > tankenka\ ;
+大気圏 > taikiken\ ;
+獅子吼 > shishiku\ ;
+代理権 > dairiken\ ;
+物件費 > bukkenhi\ ;
+正規兵 > seikihei\ ;
+再配布 > saihaifu\ ;
+四畳半 > yojouhan\ ;
+展示会 > tenjikai\ ;
+大都市 > daitoshi\ ;
+先学期 > sengakki\ ;
+悪洒落 > warujare\ ;
+自民党 > jimintou\ ;
+医療品 > iryouhin\ ;
+内沙汰 > uchizata\ ;
+分光器 > bunkouki\ ;
+親不孝 > oyafukou\ ;
+縁起物 > engimono\ ;
+流星雨 > ryuuseiu\ ;
+年貢米 > nengumai\ ;
+洗浄器 > senjouki\ ;
+油送船 > yusousen\ ;
+循環器 > junkanki\ ;
+健康児 > kenkouji\ ;
+税理士 > zeirishi\ ;
+人情味 > ninjoumi\ ;
+嫌疑者 > kengisha\ ;
+等語線 > tougosen\ ;
+十字線 > juujisen\ ;
+不使用 > fushiyou\ ;
+一生面 > isseimen\ ;
+旅行記 > ryokouki\ ;
+個体群 > kotaigun\ ;
+口蓋音 > kougaion\ ;
+圧延機 > atsuenki\ ;
+和声法 > waseihou\ ;
+高頻度 > kouhindo\ ;
+小豆色 > azukiiro\ ;
+厳美渓 > genbikei\ ;
+火山弾 > kazandan\ ;
+半諧音 > hankaion\ ;
+消化器 > shoukaki\ ;
+求法者 > guhousha\ ;
+火山帯 > kazantai\ ;
+下駄箱 > getabako\ ;
+芝海老 > shibaebi\ ;
+大分県 > ooitaken\ ;
+山羊髭 > yagihige\ ;
+瀬戸際 > setogiwa\ ;
+火山島 > kazantou\ ;
+不審火 > fushinbi\ ;
+奉仕女 > houshime\ ;
+火山岩 > kazangan\ ;
+玉砂利 > tamajari\ ;
+一分半 > ippunhan\ ;
+花鳥画 > kachouga\ ;
+無菌法 > mukinhou\ ;
+無免許 > mumenkyo\ ;
+待避線 > taihisen\ ;
+等時性 > toujisei\ ;
+年賀状 > nengajou\ ;
+古参者 > kosansha\ ;
+感歎符 > kantanfu\ ;
+分岐点 > bunkiten\ ;
+侍従官 > jijuukan\ ;
+内野手 > naiyashu\ ;
+油送管 > yusoukan\ ;
+不用心 > buyoujin\ ;
+誘蛾灯 > yuugatou\ ;
+計理士 > keirishi\ ;
+雑貨店 > zakkaten\ ;
+座右銘 > zayuumei\ ;
+子音性 > shiinsei\ ;
+期待感 > kitaikan\ ;
+運動家 > undousha\ ;
+愚連隊 > gurentai\ ;
+原子雲 > genshiun\ ;
+代理店 > dairiten\ ;
+諸器械 > shokikai\ ;
+操舵手 > soudashu\ ;
+出歯亀 > debakame\ ;
+不健全 > fukenzen\ ;
+相補性 > souhosei\ ;
+自転車 > jitensha\ ;
+初期値 > shokichi\ ;
+接頭辞 > settouji\ ;
+生徒会 > seitokai\ ;
+赤裸々 > sekirara\ ;
+預言者 > yogensha\ ;
+開催日 > kaisaibi\ ;
+胴間声 > doumagoe\ ;
+背番号 > sebangou\ ;
+浮浪者 > furousha\ ;
+会員券 > kaiinken\ ;
+会員制 > kaiinsei\ ;
+英米法 > eibeihou\ ;
+合理論 > gouriron\ ;
+大部分 > daibubun\ ;
+五角形 > gokakkei\ ;
+社会化 > shakaika\ ;
+中規模 > chuukibo\ ;
+大都会 > daitokai\ ;
+護送車 > gosousha\ ;
+重手代 > omotedai\ ;
+広報部 > kouhoubu\ ;
+創世記 > souseiki\ ;
+三杯酢 > sanbaizu\ ;
+節炭器 > settanki\ ;
+希望者 > kibousha\ ;
+外科学 > gekagaku\ ;
+刑事犯 > keijihan\ ;
+配線図 > haisenzu\ ;
+機械論 > kikairon\ ;
+川秋沙 > kawaaisa\ ;
+文化圏 > bunkaken\ ;
+接頭語 > settougo\ ;
+事故歴 > jikoreki\ ;
+山小屋 > yamagoya\ ;
+糸蜻蛉 > itotonbo\ ;
+移転先 > itensaki\ ;
+大勲位 > daikun''i\ ;
+大目玉 > oomedama\ ;
+官公吏 > kankouri\ ;
+協議員 > kyougiin\ ;
+軍事犯 > gunjihan\ ;
+随行員 > zuikouin\ ;
+一辺倒 > ippentou\ ;
+現代語 > gendaigo\ ;
+聴音機 > chouonki\ ;
+不導性 > fudousei\ ;
+理容師 > riyoushi\ ;
+乱高下 > rankouge\ ;
+叙情詩 > jojoushi\ ;
+社交家 > shakouka\ ;
+文化史 > bunkashi\ ;
+不用品 > fuyouhin\ ;
+透明度 > toumeido\ ;
+不定法 > futeihou\ ;
+温排水 > onhaisui\ ;
+天花粉 > tenkafun\ ;
+航空路 > koukuuro\ ;
+資産家 > shisanka\ ;
+類似点 > ruijiten\ ;
+淡水湖 > tansuiko\ ;
+予言者 > yogensha\ ;
+広報課 > kouhouka\ ;
+小人数 > koninzuu\ ;
+愛知県 > aichiken\ ;
+人造藍 > jinzouai\ ;
+医学者 > igakusha\ ;
+悪感情 > akkanjou\ ;
+仮納金 > kanoukin\ ;
+未処分 > mishobun\ ;
+差配人 > sahainin\ ;
+低頻度 > teihindo\ ;
+作為犯 > sakuihan\ ;
+歯科用 > shikayou\ ;
+再処理 > saishori\ ;
+運動会 > undoukai\ ;
+花茣蓙 > hanagoza\ ;
+玄武岩 > genbugan\ ;
+液状化 > ekijouka\ ;
+無利息 > murisoku\ ;
+陣羽織 > jinbaori\ ;
+戦闘機 > sentouki\ ;
+有意的 > yuuiteki\ ;
+問題児 > mondaiji\ ;
+債務者 > saimusha\ ;
+一騎討 > ikkiuchi\ ;
+補給路 > hokyuuro\ ;
+下層土 > kasoudo\ ;
+起動機 > kidouki\ ;
+十字架 > juujika\ ;
+人工雨 > jinkouu\ ;
+餓鬼道 > gakidou\ ;
+不定期 > futeiki\ ;
+模擬店 > mogiten\ ;
+古武道 > kobudou\ ;
+栄養素 > eiyouso\ ;
+身勝手 > migatte\ ;
+無利子 > murishi\ ;
+瑠璃色 > ruriiro\ ;
+胃腸炎 > ichouen\ ;
+起動時 > kidouji\ ;
+殺陣師 > tateshi\ ;
+類義語 > ruigigo\ ;
+家計簿 > kakeibo\ ;
+登記簿 > toukibo\ ;
+重母音 > juuboin\ ;
+遅知恵 > osodjie\ ;
+大過去 > daikako\ ;
+加算器 > kasanki\ ;
+大相撲 > oozumou\ ;
+機能語 > kinougo\ ;
+有気音 > yuukion\ ;
+不条理 > fujouri\ ;
+大道具 > oodougu\ ;
+定位置 > teiichi\ ;
+運送屋 > unsouya\ ;
+造営費 > zoueihi\ ;
+蒙古語 > moukogo\ ;
+機械科 > kikaika\ ;
+次年度 > jinendo\ ;
+多重化 > tajuuka\ ;
+千代女 > chiyojo\ ;
+古社寺 > koshaji\ ;
+一層目 > issoume\ ;
+娑婆気 > shabake\ ;
+励磁機 > reijiki\ ;
+不首尾 > fushubi\ ;
+悪感化 > akkanka\ ;
+待避所 > taihijo\ ;
+四股名 > shikona\ ;
+不人気 > funinki\ ;
+西欧化 > seiouka\ ;
+二階屋 > nikaiya\ ;
+棒暗記 > bouanki\ ;
+不一致 > fuitchi\ ;
+血反吐 > chihedo\ ;
+曳火弾 > eikadan\ ;
+二階家 > nikaiya\ ;
+簡素化 > kansoka\ ;
+個体差 > kotaisa\ ;
+同音語 > douongo\ ;
+乗務員 > joumuin\ ;
+裏木戸 > urakido\ ;
+金毘羅 > konpira\ ;
+無造作 > muzousa\ ;
+十二時 > juuniji\ ;
+意想外 > isougai\ ;
+不安定 > fuantei\ ;
+陰電気 > indenki\ ;
+薄馬鹿 > usubaka\ ;
+丁字路 > teijiro\ ;
+提示部 > teijibu\ ;
+慰問品 > imonhin\ ;
+親文字 > oyamoji\ ;
+理財家 > rizaika\ ;
+稽古日 > keikobi\ ;
+二塁打 > niruida\ ;
+手相見 > tesoumi\ ;
+夜盗蛾 > yotouga\ ;
+女性美 > joseibi\ ;
+風邪声 > kazegoe\ ;
+厭世家 > enseika\ ;
+熨斗目 > noshime\ ;
+陰謀家 > inbouka\ ;
+随意筋 > zuiikin\ ;
+手加減 > tekagen\ ;
+讚美歌 > sanbika\ ;
+同位体 > douitai\ ;
+類音語 > ruiongo\ ;
+叉手網 > sadeami\ ;
+小綬鶏 > kojukei\ ;
+晴雨計 > seiukei\ ;
+文庫化 > bunkoka\ ;
+野次馬 > yajiuma\ ;
+街路樹 > gairoju\ ;
+控訴院 > kousoin\ ;
+仙人掌 > saboten\ ;
+義援金 > gienkin\ ;
+俯瞰図 > fukanzu\ ;
+御新香 > oshinko\ ;
+御家人 > gokenin\ ;
+大寺院 > daijiin\ ;
+烏羽玉 > ubatama\ ;
+性行為 > seikoui\ ;
+一般化 > ippanka\ ;
+十五夜 > juugoya\ ;
+二院制 > niinsei\ ;
+家政婦 > kaseifu\ ;
+第二義 > dainigi\ ;
+真魚板 > manaita\ ;
+円軌道 > enkidou\ ;
+野葡萄 > nobudou\ ;
+応募者 > oubosha\ ;
+麻実油 > asamiyu\ ;
+茶飯事 > sahanji\ ;
+八重雲 > yaeguma\ ;
+未踏査 > mitousa\ ;
+絵葉書 > ehagaki\ ;
+稽古場 > keikoba\ ;
+安全期 > anzenki\ ;
+反意語 > han''igo\ ;
+個人差 > kojinsa\ ;
+総務部 > soumubu\ ;
+警部補 > keibuho\ ;
+与太郎 > yotarou\ ;
+位牌堂 > ihaidou\ ;
+義太夫 > gidayuu\ ;
+三鞭酒 > shanpen\ ;
+妃殿下 > hidenka\ ;
+漫画家 > mangaka\ ;
+不本意 > fuhon''i\ ;
+歩合算 > buaizan\ ;
+語彙的 > goiteki\ ;
+第一課 > daiikka\ ;
+井戸端 > idobata\ ;
+理事会 > rijikai\ ;
+火曜日 > kayoubi\ ;
+御不浄 > gofujou\ ;
+未定義 > miteigi\ ;
+対位法 > taiihou\ ;
+浮浪児 > furouji\ ;
+婦人科 > fujinka\ ;
+他世界 > tasekai\ ;
+慰労金 > iroukin\ ;
+理不尽 > rifujin\ ;
+単坐機 > tanzaki\ ;
+不飽和 > fuhouwa\ ;
+代議員 > daigiin\ ;
+非合理 > higouri\ ;
+総務課 > soumuka\ ;
+椰子油 > yashiyu\ ;
+水泳着 > suieigi\ ;
+絵草紙 > ezoushi\ ;
+小犬座 > koinuza\ ;
+赤味噌 > akamiso\ ;
+対義語 > taigigo\ ;
+汚染菌 > osenkin\ ;
+三日路 > mikkaji\ ;
+居酒屋 > izakaya\ ;
+自家製 > jikasei\ ;
+塗布剤 > tofuzai\ ;
+古典語 > kotengo\ ;
+義捐金 > gienkin\ ;
+不景気 > fukeiki\ ;
+合理化 > gourika\ ;
+拉丁語 > ratengo\ ;
+電磁波 > denjiha\ ;
+電磁気 > denjiki\ ;
+安全器 > anzenki\ ;
+機械化 > kikaika\ ;
+栄養価 > eiyouka\ ;
+第二次 > dainiji\ ;
+井戸水 > idomizu\ ;
+一個人 > ikkojin\ ;
+亡祖父 > bousofu\ ;
+御朱印 > goshuin\ ;
+異性体 > iseitai\ ;
+非同期 > hidouki\ ;
+十露盤 > soroban\ ;
+筆記具 > hikkigu\ ;
+穏健派 > onkenha\ ;
+育児園 > ikujien\ ;
+電気炉 > denkiro\ ;
+依存性 > izonsei\ ;
+比叡山 > hieizan\ ;
+依頼者 > iraisha\ ;
+製油所 > seiyujo\ ;
+基本語 > kihongo\ ;
+御三家 > gosanke\ ;
+五節句 > gosekku\ ;
+誤動作 > godousa\ ;
+影印本 > eiinhon\ ;
+経営費 > keieihi\ ;
+円相場 > ensouba\ ;
+被疑者 > higisha\ ;
+放火魔 > houkama\ ;
+不断着 > fudangi\ ;
+聖路加 > seiroka\ ;
+下線部 > kasenbu\ ;
+多次元 > tajigen\ ;
+似非者 > esemono\ ;
+脳外科 > nougeka\ ;
+御下問 > gokamon\ ;
+膃肭臍 > ottosei\ ;
+女性器 > joseiki\ ;
+孵卵器 > furanki\ ;
+無理解 > murikai\ ;
+父性愛 > fuseiai\ ;
+非武装 > hibusou\ ;
+同父母 > doufubo\ ;
+女性化 > joseika\ ;
+無期限 > mukigen\ ;
+自家用 > jikayou\ ;
+家系図 > kakeizu\ ;
+一世紀 > isseiki\ ;
+自由度 > jiyuudo\ ;
+汚染源 > osengen\ ;
+依頼状 > iraijou\ ;
+第一歩 > daiippo\ ;
+微塵子 > mijinko\ ;
+贔屓目 > hiikime\ ;
+電磁場 > denjiba\ ;
+一体化 > ittaika\ ;
+御日様 > ohisama\ ;
+音羽屋 > otowaya\ ;
+医院長 > iinchou\ ;
+印欧語 > in''ougo\ ;
+出来秋 > dekiaki\ ;
+飛行機 > hikouki\ ;
+無作為 > musakui\ ;
+都市部 > toshibu\ ;
+座蒲団 > zabuton\ ;
+放課後 > houkago\ ;
+一本気 > ippongi\ ;
+電気屋 > denkiya\ ;
+未来派 > miraiha\ ;
+栄誉礼 > eiyorei\ ;
+糖衣錠 > touijou\ ;
+理論家 > rironka\ ;
+打楽器 > dagakki\ ;
+無作法 > busahou\ ;
+仁王門 > nioumon\ ;
+古典派 > kotenha\ ;
+素封家 > sohouka\ ;
+歩合制 > buaisei\ ;
+魚河岸 > uogashi\ ;
+自由化 > jiyuuka\ ;
+授産所 > jusanjo\ ;
+駆動機 > kudouki\ ;
+二箇所 > nikasho\ ;
+違犯者 > ihansha\ ;
+自画像 > jigazou\ ;
+形意拳 > keiiken\ ;
+母性愛 > boseiai\ ;
+井戸側 > idogawa\ ;
+破砕機 > hasaiki\ ;
+違警罪 > ikeizai\ ;
+希土類 > kidorui\ ;
+亜鉛引 > aenbiki\ ;
+太宰府 > dazaifu\ ;
+伊達者 > datesha\ ;
+送話器 > souwaki\ ;
+伴天連 > bateren\ ;
+亜麻布 > amanuno\ ;
+女郎屋 > jorouya\ ;
+噴霧器 > funmuki\ ;
+英単語 > eitango\ ;
+荷馬車 > nibasha\ ;
+擬態語 > gitaigo\ ;
+異邦人 > ihoujin\ ;
+怪我人 > keganin\ ;
+効果音 > koukaon\ ;
+墓碑銘 > bohimei\ ;
+飛行家 > hikouka\ ;
+火熨斗 > hinoshi\ ;
+優位性 > yuuisei\ ;
+無趣味 > mushumi\ ;
+過現未 > kagenmi\ ;
+長椅子 > nagaisu\ ;
+聾唖者 > rouasha\ ;
+文字盤 > mojiban\ ;
+五十音 > gojuuon\ ;
+天婦羅 > tenpura\ ;
+寝道具 > nedougu\ ;
+異分子 > ibunshi\ ;
+自販機 > jihanki\ ;
+八重垣 > yaegaki\ ;
+無価値 > mukachi\ ;
+人事院 > jinjiin\ ;
+不夜城 > fuyajou\ ;
+美丈夫 > bijoufu\ ;
+易損品 > isonhin\ ;
+尼僧院 > nisouin\ ;
+無理数 > murisuu\ ;
+無韻詩 > muinshi\ ;
+多様化 > tayouka\ ;
+甲斐性 > kaishou\ ;
+屋根裏 > yaneura\ ;
+暴風雨 > boufuuu\ ;
+生理日 > seiribi\ ;
+分限者 > bugenja\ ;
+人事部 > jinjibu\ ;
+鸚鵡貝 > oumugai\ ;
+一丁字 > itteiji\ ;
+分離派 > bunriha\ ;
+小細工 > kozaiku\ ;
+暗号化 > angouka\ ;
+印度洋 > indoyou\ ;
+塩素酸 > ensosan\ ;
+依頼人 > irainin\ ;
+父母会 > fubokai\ ;
+飲酒家 > inshuka\ ;
+不認可 > funinka\ ;
+慰労会 > iroukai\ ;
+豆腐屋 > toufuya\ ;
+分離機 > bunriki\ ;
+火炎瓶 > kaenbin\ ;
+御多分 > gotabun\ ;
+臨時費 > rinjihi\ ;
+大太鼓 > oodaiko\ ;
+如何程 > ikahodo\ ;
+牡牛座 > oushiza\ ;
+加工費 > kakouhi\ ;
+人事課 > jinjika\ ;
+野良犬 > norainu\ ;
+讃美歌 > sanbika\ ;
+日本間 > nihonma\ ;
+大豆油 > daizuyu\ ;
+児童画 > jidouga\ ;
+演舞場 > enbujou\ ;
+似非事 > esegoto\ ;
+不結果 > fukekka\ ;
+地下化 > chikaka\ ;
+八百長 > yaochou\ ;
+過飽和 > kahouwa\ ;
+早少女 > saotome\ ;
+如何物 > ikamono\ ;
+版画家 > hangaka\ ;
+愛飲者 > aiinsha\ ;
+安定器 > anteiki\ ;
+駄菓子 > dagashi\ ;
+唐胡麻 > tougoma\ ;
+停音符 > teionpu\ ;
+園芸家 > engeika\ ;
+投影機 > toueiki\ ;
+英吉利 > igirisu\ ;
+座布団 > zabuton\ ;
+無声音 > museion\ ;
+唐茄子 > tounasu\ ;
+日本語 > nihongo\ ;
+従三位 > jusanmi\ ;
+婦女子 > fujoshi\ ;
+工事費 > koujihi\ ;
+温度計 > ondokei\ ;
+安定化 > anteika\ ;
+法螺貝 > horagai\ ;
+非常時 > hijouji\ ;
+八千代 > yachiyo\ ;
+不細工 > busaiku\ ;
+余水路 > yosuiro\ ;
+相違点 > souiten\ ;
+曼荼羅 > mandara\ ;
+地雷火 > jiraika\ ;
+公務員 > koumuin\ ;
+案山子 > kakashi\ ;
+古代語 > kodaigo\ ;
+生一本 > kiippon\ ;
+身贔屓 > mibiiki\ ;
+未整理 > miseiri\ ;
+予科生 > yokasei\ ;
+未経過 > mikeika\ ;
+海松貝 > mirugai\ ;
+兵児帯 > hekoobi\ ;
+身奇麗 > migirei\ ;
+検査員 > kensain\ ;
+危機感 > kikikan\ ;
+赤茄子 > akanasu\ ;
+端武者 > hamusha\ ;
+印度人 > indojin\ ;
+内安打 > naianda\ ;
+屋根板 > yaneita\ ;
+無期刑 > mukikei\ ;
+記念碑 > kinenhi\ ;
+都市化 > toshika\ ;
+府知事 > fuchiji\ ;
+内耳炎 > naijien\ ;
+北京語 > pekingo\ ;
+犬小屋 > inugoya\ ;
+彼岸会 > higan''e\ ;
+相弟子 > aideshi\ ;
+鳳凰座 > hououza\ ;
+咽頭炎 > intouen\ ;
+投影図 > toueizu\ ;
+不衛生 > fueisei\ ;
+整理部 > seiribu\ ;
+入母屋 > irimoya\ ;
+多趣味 > tashumi\ ;
+音記号 > onkigou\ ;
+小坊主 > kobouzu\ ;
+日本画 > nihonga\ ;
+紀元後 > kigengo\ ;
+体温器 > taionki\ ;
+微温湯 > biontou\ ;
+貴婦人 > kifujin\ ;
+右大臣 > udaijin\ ;
+帰化人 > kikajin\ ;
+戦後派 > sengoha\ ;
+受像機 > juzouki\ ;
+記念樹 > kinenju\ ;
+粉微塵 > komijin\ ;
+為政者 > iseisha\ ;
+大犬座 > ooinuza\ ;
+日時計 > hidokei\ ;
+時事論 > jijiron\ ;
+保養院 > hoyouin\ ;
+自然薯 > jinenjo\ ;
+保健所 > hokenjo\ ;
+離弁花 > ribenka\ ;
+次世代 > jisedai\ ;
+不器用 > bukiyou\ ;
+手奇麗 > tegirei\ ;
+塩基性 > enkisei\ ;
+記念日 > kinenbi\ ;
+高祖父 > kousofu\ ;
+今日中 > kyoujuu\ ;
+身綺麗 > migirei\ ;
+萎黄病 > ioubyou\ ;
+擬古文 > gikobun\ ;
+地衣類 > chiirui\ ;
+婆羅門 > baramon\ ;
+秘書課 > hishoka\ ;
+印画紙 > ingashi\ ;
+予想屋 > yosouya\ ;
+慈善家 > jizenka\ ;
+早乙女 > saotome\ ;
+土曜日 > doyoubi\ ;
+降雨林 > kouurin\ ;
+朝風呂 > asaburo\ ;
+再下付 > saikafu\ ;
+洋画家 > yougaka\ ;
+定規座 > jougiza\ ;
+需用家 > juyouka\ ;
+保健婦 > hokenfu\ ;
+高祖母 > kousobo\ ;
+外耳炎 > gaijien\ ;
+不裁可 > fusaika\ ;
+警備員 > keibiin\ ;
+誤作動 > gosadou\ ;
+仮名本 > kanahon\ ;
+助産所 > josanjo\ ;
+大時代 > oojidai\ ;
+枸櫞酸 > kuensan\ ;
+虚無僧 > komusou\ ;
+嬰記号 > eikigou\ ;
+保健医 > hoken''i\ ;
+二十歳 > hatachi\ ;
+頭字語 > toujigo\ ;
+木太刀 > kidachi\ ;
+蓮華座 > rengeza\ ;
+愛書家 > aishoka\ ;
+馬刀貝 > mategai\ ;
+趣意書 > shuisho\ ;
+運搬費 > unpanhi\ ;
+攘夷論 > jouiron\ ;
+懐疑派 > kaigiha\ ;
+無煙炭 > muentan\ ;
+安静時 > anseiji\ ;
+女生徒 > joseito\ ;
+虎燕拳 > koenken\ ;
+正常位 > seijoui\ ;
+補助金 > hojokin\ ;
+阿婆擦 > abazure\ ;
+二十日 > hatsuka\ ;
+琵琶行 > biwakou\ ;
+秘書科 > hishoka\ ;
+助産婦 > josanpu\ ;
+修羅場 > shuraba\ ;
+手一杯 > teippai\ ;
+無線機 > musenki\ ;
+万灯会 > mandoue\ ;
+手綺麗 > tegirei\ ;
+水位計 > suiikei\ ;
+漢方医 > kanpoui\ ;
+羽目板 > hameita\ ;
+具体案 > gutaian\ ;
+日本化 > nihonka\ ;
+研磨機 > kenmaki\ ;
+大雑把 > oozappa\ ;
+古井戸 > furuido\ ;
+胃潰瘍 > ikaiyou\ ;
+多義性 > tagisei\ ;
+甘露煮 > kanroni\ ;
+乙女座 > otomeza\ ;
+保守派 > hoshuha\ ;
+叙事詩 > jojishi\ ;
+大掃除 > oosouji\ ;
+烏龍茶 > ūroncha\ ;
+女王蟻 > joouari\ ;
+半母音 > hanboin\ ;
+無政府 > museifu\ ;
+義和団 > giwadan\ ;
+好事家 > kouzuka\ ;
+行為者 > kouisha\ ;
+機関庫 > kikanko\ ;
+機関座 > kikanza\ ;
+同意見 > douiken\ ;
+議事堂 > gijidou\ ;
+天糸瓜 > hechima\ ;
+保安林 > hoanrin\ ;
+腐葉土 > fuyoudo\ ;
+海豚座 > irukaza\ ;
+自衛隊 > jieitai\ ;
+繊維素 > sen''iso\ ;
+移行性 > ikousei\ ;
+湯湯婆 > yutanpo\ ;
+交尾期 > koubiki\ ;
+陶磁器 > toujiki\ ;
+重馬場 > omobaba\ ;
+歳時記 > saijiki\ ;
+阿多福 > otafuku\ ;
+御節介 > osekkai\ ;
+菓子屋 > kashiya\ ;
+番小屋 > bangoya\ ;
+愛犬家 > aikenka\ ;
+耽美派 > tanbiha\ ;
+保育所 > hoikujo\ ;
+遊離基 > yuuriki\ ;
+互助会 > gojokai\ ;
+補助線 > hojosen\ ;
+事務所 > jimusho\ ;
+保護金 > hogokin\ ;
+菓子器 > kashiki\ ;
+愛妻家 > aisaika\ ;
+養父母 > youfubo\ ;
+起電機 > kidenki\ ;
+二死後 > nishigo\ ;
+葉牡丹 > habotan\ ;
+已然形 > izenkei\ ;
+単座機 > tanzaki\ ;
+大規模 > daikibo\ ;
+具体化 > gutaika\ ;
+保安官 > hoankan\ ;
+野獣派 > yajuuha\ ;
+電位差 > den''isa\ ;
+非対応 > hitaiou\ ;
+蓖麻子 > himashi\ ;
+裸体画 > rataiga\ ;
+事務官 > jimukan\ ;
+起訴状 > kisojou\ ;
+野暮用 > yaboyou\ ;
+無灯火 > mutouka\ ;
+無記名 > mukimei\ ;
+都議選 > togisen\ ;
+保育園 > hoikuen\ ;
+保育器 > hoikuki\ ;
+愛好家 > aikouka\ ;
+委任状 > ininjou\ ;
+用器画 > youkiga\ ;
+保養所 > hoyoujo\ ;
+家庭科 > kateika\ ;
+不名誉 > fumeiyo\ ;
+五輪旗 > gorinki\ ;
+作業衣 > sagyoui\ ;
+木戸銭 > kidosen\ ;
+耳下腺 > jikasen\ ;
+家庭着 > kateigi\ ;
+外陰部 > gaiinbu\ ;
+和菓子 > wagashi\ ;
+自在画 > jizaiga\ ;
+耕運機 > kouunki\ ;
+一回忌 > ikkaiki\ ;
+不可解 > fukakai\ ;
+不可視 > fukashi\ ;
+総理府 > sourifu\ ;
+二分木 > nibungi\ ;
+広辞苑 > koujien\ ;
+多数派 > tasuuha\ ;
+保護者 > hogosha\ ;
+夜間部 > yakanbu\ ;
+留守電 > rusuden\ ;
+掃除機 > soujiki\ ;
+事務会 > jimukai\ ;
+事前後 > jizengo\ ;
+菩提樹 > bodaiju\ ;
+貝独楽 > baigoma\ ;
+無防備 > muboubi\ ;
+不思議 > fushigi\ ;
+不穏当 > fuontou\ ;
+可塑材 > kasozai\ ;
+梳綿機 > somenki\ ;
+無手順 > mutejun\ ;
+尾状花 > bijouka\ ;
+便利屋 > benriya\ ;
+予知夢 > yochimu\ ;
+御神籤 > omikuji\ ;
+映写機 > eishaki\ ;
+保護税 > hogozei\ ;
+叙事文 > jojibun\ ;
+英会話 > eikaiwa\ ;
+不可能 > fukanou\ ;
+映画館 > eigakan\ ;
+風雲児 > fuuunji\ ;
+楕円形 > daenkei\ ;
+演奏家 > ensouka\ ;
+可塑性 > kasosei\ ;
+被除数 > hijosuu\ ;
+二次元 > nijigen\ ;
+手文庫 > tebunko\ ;
+一箇所 > ikkasho\ ;
+予備隊 > yobitai\ ;
+疑問符 > gimonfu\ ;
+固定費 > koteihi\ ;
+明治座 > meijiza\ ;
+理想家 > risouka\ ;
+土壇場 > dotanba\ ;
+二次会 > nijikai\ ;
+義務感 > gimukan\ ;
+三叉路 > sansaro\ ;
+波布茶 > habucha\ ;
+不愛想 > buaisou\ ;
+一箇年 > ikkanen\ ;
+予備金 > yobikin\ ;
+不可知 > fukachi\ ;
+菩提寺 > bodaiji\ ;
+硫黄山 > iouyama\ ;
+素因数 > soinsuu\ ;
+仏蘭西 > furansu\ ;
+不合理 > fugouri\ ;
+掃除婦 > soujifu\ ;
+野暮天 > yaboten\ ;
+家具等 > kagutou\ ;
+薔薇色 > barairo\ ;
+不愉快 > fuyukai\ ;
+農機具 > noukigu\ ;
+輸送費 > yusouhi\ ;
+看護婦 > kangofu\ ;
+御神火 > gojinka\ ;
+予備軍 > yobigun\ ;
+古文書 > komonjo\ ;
+自衛権 > jieiken\ ;
+掃除器 > soujiki\ ;
+理想化 > risouka\ ;
+合氣道 > aikidou\ ;
+点火器 > tenkaki\ ;
+羽二重 > habutae\ ;
+規準化 > kijunka\ ;
+高度差 > koudosa\ ;
+合気道 > aikidou\ ;
+無器用 > bukiyou\ ;
+寄付金 > kifukin\ ;
+火口湖 > kakouko\ ;
+政治屋 > seijiya\ ;
+個々人 > kokojin\ ;
+可塑剤 > kasozai\ ;
+政治家 > seijika\ ;
+運営費 > un''eihi\ ;
+蝦夷菊 > ezogiku\ ;
+保護林 > hogorin\ ;
+木戸番 > kidoban\ ;
+浅知恵 > asadjie\ ;
+青豌豆 > aoendou\ ;
+女丈夫 > jojoubu\ ;
+円記号 > enkigou\ ;
+亜寒帯 > akantai\ ;
+江戸川 > edogawa\ ;
+比電荷 > hidenka\ ;
+幼児語 > youjigo\ ;
+暗暗裡 > an''anri\ ;
+不浄場 > fujouba\ ;
+暗暗裏 > an''anri\ ;
+湯治場 > toujiba\ ;
+脳味噌 > noumiso\ ;
+子画面 > kogamen\ ;
+可視化 > kashika\ ;
+不注意 > fuchuui\ ;
+護衛艦 > goeikan\ ;
+次打者 > jidasha\ ;
+披露宴 > hirouen\ ;
+自衛官 > jieikan\ ;
+留守番 > rusuban\ ;
+亜音速 > aonsoku\ ;
+御注意 > gochuui\ ;
+医科学 > ikagaku\ ;
+異方性 > ihousei\ ;
+無鑑査 > mukansa\ ;
+二番目 > nibanme\ ;
+硬化油 > koukayu\ ;
+映画祭 > eigasai\ ;
+映画社 > eigasha\ ;
+不正規 > fuseiki\ ;
+荊棘線 > barasen\ ;
+慰霊祭 > ireisai\ ;
+学校医 > gakkoui\ ;
+金文字 > kinmoji\ ;
+御法度 > gohatto\ ;
+気保養 > kihoyou\ ;
+鉄火場 > tekkaba\ ;
+勤務員 > kinmuin\ ;
+異星人 > iseijin\ ;
+映画界 > eigakai\ ;
+五畿内 > gokinai\ ;
+御破算 > gohasan\ ;
+普段着 > fudangi\ ;
+否定語 > hiteigo\ ;
+違憲性 > ikensei\ ;
+塩化銀 > enkagin\ ;
+保護司 > hogoshi\ ;
+得意気 > tokuige\ ;
+手細工 > tezaiku\ ;
+舎利塩 > sharien\ ;
+親馬鹿 > oyabaka\ ;
+舞踊家 > butouka\ ;
+奇形児 > kikeiji\ ;
+午後中 > gogojuu\ ;
+詭弁家 > kibenka\ ;
+胃洗浄 > isenjou\ ;
+不同化 > fudouka\ ;
+異教徒 > ikyouto\ ;
+湯加減 > yukagen\ ;
+非課税 > hikazei\ ;
+和楽器 > wagakki\ ;
+違法者 > ihousha\ ;
+輸送機 > yusouki\ ;
+与野党 > yoyatou\ ;
+引火点 > inkaten\ ;
+羽子板 > hagoita\ ;
+音沙汰 > otosata\ ;
+禾本科 > kahonka\ ;
+不可分 > fukabun\ ;
+鼠径部 > sokeibu\ ;
+乾菓子 > higashi\ ;
+無技巧 > mugikou\ ;
+都議会 > togikai\ ;
+予備校 > yobikou\ ;
+観世音 > kanzeon\ ;
+半過去 > hankako\ ;
+不参加 > fusanka\ ;
+違反者 > ihansha\ ;
+恣意性 > shiisei\ ;
+付加税 > fukazei\ ;
+時計座 > tokeiza\ ;
+部屋代 > heyadai\ ;
+母音性 > boinsei\ ;
+不得意 > futokui\ ;
+電話機 > denwaki\ ;
+無担保 > mutanpo\ ;
+措辞法 > sojihou\ ;
+八九分 > hakkubu\ ;
+根太板 > nedaita\ ;
+火加減 > hikagen\ ;
+亜燐酸 > arinsan\ ;
+時計屋 > tokeiya\ ;
+青二才 > aonisai\ ;
+野放図 > nohouzu\ ;
+幼児期 > youjiki\ ;
+按摩膏 > anmakou\ ;
+気苦労 > kigurou\ ;
+政府案 > seifuan\ ;
+二王門 > nioumon\ ;
+予備役 > yobieki\ ;
+不道理 > fudouri\ ;
+金無垢 > kinmuku\ ;
+偽造印 > gizouin\ ;
+無批判 > muhihan\ ;
+図書費 > toshohi\ ;
+幸運児 > kouunji\ ;
+塩水湖 > ensuiko\ ;
+流布本 > rufubon\ ;
+山茶花 > sazanka\ ;
+移民法 > iminhou\ ;
+鬼百合 > oniyuri\ ;
+奈良県 > naraken\ ;
+不勝手 > fukatte\ ;
+天麩羅 > tenpura\ ;
+不利益 > furieki\ ;
+市吏員 > shiriin\ ;
+意見書 > ikensho\ ;
+慰霊塔 > ireitou\ ;
+我利勉 > gariben\ ;
+擬宝珠 > giboshi\ ;
+大和絵 > yamatoe\ ;
+小切手 > kogitte\ ;
+転路器 > tenroki\ ;
+判事補 > hanjiho\ ;
+屠蘇散 > tososan\ ;
+御広目 > ohirome\ ;
+参議院 > sangiin\ ;
+予備品 > yobihin\ ;
+理工科 > rikouka\ ;
+火葬場 > kasouba\ ;
+寒垢離 > kangori\ ;
+防衛費 > boueihi\ ;
+馬小屋 > umagoya\ ;
+予備兵 > yobihei\ ;
+小道具 > kodougu\ ;
+希元素 > kigenso\ ;
+世界語 > sekaigo\ ;
+護衛兵 > goeihei\ ;
+形而下 > keijika\ ;
+青電話 > aodenwa\ ;
+二枚目 > nimaime\ ;
+三差路 > sansaro\ ;
+他府県 > tafuken\ ;
+保線区 > hosenku\ ;
+出稽古 > degeiko\ ;
+不具者 > fugusha\ ;
+演算機 > enzanki\ ;
+干菓子 > higashi\ ;
+遺伝法 > idenhou\ ;
+医化学 > ikagaku\ ;
+遺家族 > ikazoku\ ;
+小利口 > korikou\ ;
+天気運 > tenkiun\ ;
+府議会 > fugikai\ ;
+保険医 > hoken''i\ ;
+止音器 > shionki\ ;
+合気会 > aikikai\ ;
+醍醐味 > daigomi\ ;
+意図的 > itoteki\ ;
+地磁気 > chijiki\ ;
+生意気 > namaiki\ ;
+四次元 > yojigen\ ;
+御目玉 > omedama\ ;
+公文所 > kumonjo\ ;
+御座所 > gozasho\ ;
+大鋸屑 > ogakuzu\ ;
+甘海苔 > amanori\ ;
+建議案 > kengian\ ;
+碁会所 > gokaijo\ ;
+防火戸 > boukado\ ;
+登山家 > tozanka\ ;
+炊事場 > suijiba\ ;
+無愛想 > buaisou\ ;
+英文科 > eibunka\ ;
+酸性雨 > sanseiu\ ;
+尊皇王 > son''nou\ ;
+派生語 > haseigo\ ;
+遺伝性 > idensei\ ;
+医療費 > iryouhi\ ;
+大祖父 > daisofu\ ;
+軍荼利 > gundari\ ;
+白亜紀 > hakuaki\ ;
+騎馬戦 > kibasen\ ;
+目一杯 > meippai\ ;
+記事文 > kijibun\ ;
+和太鼓 > wadaiko\ ;
+予定案 > yoteian\ ;
+符号器 > fugouki\ ;
+書記補 > shokiho\ ;
+応援団 > ouendan\ ;
+遺伝子 > idenshi\ ;
+除草器 > josouki\ ;
+予定日 > yoteibi\ ;
+保持者 > hojisha\ ;
+曼陀羅 > mandara\ ;
+単位元 > tanigen\ ;
+意地悪 > ijiwaru\ ;
+益荒男 > masurao\ ;
+上出来 > joudeki\ ;
+符号化 > fugouka\ ;
+不相応 > fusouou\ ;
+英語版 > eigoban\ ;
+重火器 > juukaki\ ;
+摩利支 > marishi\ ;
+異端視 > itanshi\ ;
+葬儀屋 > sougiya\ ;
+項位置 > kouichi\ ;
+医師法 > ishihou\ ;
+葡萄園 > budouen\ ;
+五斗米 > gotobei\ ;
+可愛気 > kawaige\ ;
+五線譜 > gosenfu\ ;
+御府内 > gofunai\ ;
+子馬座 > koumaza\ ;
+小芥子 > kokeshi\ ;
+恒温器 > kouonki\ ;
+知恵者 > chiesha\ ;
+遺贈分 > izoubun\ ;
+太刀魚 > tachiuo\ ;
+助演者 > joensha\ ;
+代理部 > dairibu\ ;
+移動体 > idoutai\ ;
+運動費 > undouhi\ ;
+天鵝絨 > biroudo\ ;
+一酸化 > issanka\ ;
+遠距離 > enkyori\ ;
+佐賀県 > sagaken\ ;
+高音部 > kouonbu\ ;
+異端者 > itansha\ ;
+弥次馬 > yajiuma\ ;
+耕耘機 > kouunki\ ;
+感化院 > kankain\ ;
+不機嫌 > fukigen\ ;
+部外秘 > bugaihi\ ;
+亜熱帯 > anettai\ ;
+富士山 > fujisan\ ;
+指揮所 > shikijo\ ;
+生醤油 > kijouyu\ ;
+浄瑠璃 > joururi\ ;
+補佐官 > hosakan\ ;
+過去形 > kakokei\ ;
+草仮名 > sougana\ ;
+御機嫌 > gokigen\ ;
+不履行 > furikou\ ;
+擬人化 > gijinka\ ;
+分度器 > bundoki\ ;
+出目金 > demekin\ ;
+夜汽車 > yogisha\ ;
+左派系 > sahakei\ ;
+詐欺罪 > sagizai\ ;
+饂飩屋 > udon''ya\ ;
+夢想家 > musouka\ ;
+記譜法 > kifuhou\ ;
+一死後 > isshigo\ ;
+非衛生 > hieisei\ ;
+誤投下 > gotouka\ ;
+不自由 > fujiyuu\ ;
+英数字 > eisuuji\ ;
+知情意 > chijoui\ ;
+風呂桶 > furooke\ ;
+英語圏 > eigoken\ ;
+低音部 > teionbu\ ;
+二期制 > nikisei\ ;
+擬声語 > giseigo\ ;
+用務員 > youmuin\ ;
+御苦労 > gokurou\ ;
+未登記 > mitouki\ ;
+簡易化 > kan''ika\ ;
+一過性 > ikkasei\ ;
+運送費 > unsouhi\ ;
+医師会 > ishikai\ ;
+自叙伝 > jijoden\ ;
+天気屋 > tenkiya\ ;
+難易度 > nan''ido\ ;
+仮数部 > kasuubu\ ;
+十字路 > juujiro\ ;
+鼠蹊部 > sokeibu\ ;
+負符号 > fufugou\ ;
+大御所 > oogosho\ ;
+分布図 > bunpuzu\ ;
+製図家 > seizuka\ ;
+戦時下 > senjika\ ;
+天気図 > tenkizu\ ;
+賛美歌 > sanbika\ ;
+軍事費 > gunjihi\ ;
+炎天下 > entenka\ ;
+肥満児 > himanji\ ;
+浪漫派 > romanha\ ;
+起重機 > kijuuki\ ;
+圧砕機 > assaiki\ ;
+回路図 > kairozu\ ;
+兵器庫 > heikiko\ ;
+岐阜県 > gifuken\ ;
+庶務課 > shomuka\ ;
+離縁状 > rienjou\ ;
+正規化 > seikika\ ;
+今出来 > imadeki\ ;
+検波器 > kenpaki\ ;
+絵双紙 > ezoushi\ ;
+下付金 > kafukin\ ;
+避難所 > hinanjo\ ;
+片意地 > kataiji\ ;
+医学部 > igakubu\ ;
+予報音 > yohouon\ ;
+風呂代 > furodai\ ;
+後知恵 > atodjie\ ;
+差機関 > sakikan\ ;
+委員長 > iinchou\ ;
+詐欺師 > sagishi\ ;
+外祖父 > gaisofu\ ;
+論理和 > ronriwa\ ;
+野営地 > yaeichi\ ;
+雰囲気 > fun''iki\ ;
+因美線 > inbisen\ ;
+気丈夫 > kijoubu\ ;
+初期化 > shokika\ ;
+歩行器 > hokouki\ ;
+湯豆腐 > yudoufu\ ;
+裏背戸 > urasedo\ ;
+加算機 > kasanki\ ;
+放生会 > houjoue\ ;
+育児院 > ikujiin\ ;
+不作為 > fusakui\ ;
+武装具 > busougu\ ;
+下駄番 > getaban\ ;
+自動化 > jidouka\ ;
+無遠慮 > buenryo\ ;
+運動場 > undouba\ ;
+家計費 > kakeihi\ ;
+音楽家 > ongakka\ ;
+外祖母 > gaisobo\ ;
+労務課 > roumuka\ ;
+無軌道 > mukidou\ ;
+不作法 > busahou\ ;
+十字火 > juujika\ ;
+胃痙攣 > ikeiren\ ;
+運動員 > undouin\ ;
+機械語 > kikaigo\ ;
+美容院 > biyouin\ ;
+一転機 > ittenki\ ;
+杓文字 > shamoji\ ;
+探査機 > tansaki\ ;
+田舎家 > inakaya\ ;
+運転費 > untenhi\ ;
+橙皮油 > touhiyu\ ;
+過年度 > kanendo\ ;
+運動具 > undougu\ ;
+御存知 > gozonji\ ;
+家政科 > kaseika\ ;
+小奇麗 > kogirei\ ;
+移住者 > ijuusha\ ;
+道具屋 > douguya\ ;
+同義語 > dougigo\ ;
+模擬戦 > mogisen\ ;
+蒲公英 > tanpopo\ ;
+稽古着 > keikogi\ ;
+下世話 > gesewa\ ;
+迦楼羅 > karura\ ;
+手忠実 > temame\ ;
+駄洒落 > dajare\ ;
+下駄屋 > getaya\ ;
+駄法螺 > dabora\ ;
+過保護 > kahogo\ ;
+非営利 > hieiri\ ;
+経緯儀 > keiigi\ ;
+呑兵衛 > nonbee\ ;
+不義理 > fugiri\ ;
+有意差 > yuuisa\ ;
+高緯度 > kouido\ ;
+不貞寝 > futene\ ;
+歯医者 > haisha\ ;
+似顔絵 > nigaoe\ ;
+歯科医 > shikai\ ;
+火事場 > kajiba\ ;
+豪雨禍 > gouuka\ ;
+亜麻製 > amasei\ ;
+似顔画 > nigaoe\ ;
+駄酒落 > dajare\ ;
+山羊座 > yagiza\ ;
+卒塔婆 > sotoba\ ;
+亜麻色 > amairo\ ;
+青海苔 > aonori\ ;
+似非親 > eseoya\ ;
+亜麻糸 > amaito\ ;
+六十路 > musoji\ ;
+亜温帯 > aontai\ ;
+余所見 > yosomi\ ;
+委員会 > iinkai\ ;
+依存度 > izondo\ ;
+阿僧祇 > asougi\ ;
+八十路 > yasoji\ ;
+伊勢蝦 > iseebi\ ;
+伊勢蛯 > iseebi\ ;
+曾祖父 > hijiji\ ;
+見栄坊 > miebou\ ;
+亜鉛版 > aenban\ ;
+御猪口 > ochoko\ ;
+鮎並女 > ainame\ ;
+平易化 > heiika\ ;
+安保理 > anpori\ ;
+曾祖母 > hibaba\ ;
+籐椅子 > touisu\ ;
+小文字 > komoji\ ;
+余所目 > yosome\ ;
+下院議 > kaingi\ ;
+孵化器 > fukaki\ ;
+亜鉛板 > aenban\ ;
+手真似 > temane\ ;
+不如意 > funyoi\ ;
+湯文字 > yumoji\ ;
+異機種 > ikishu\ ;
+亜砒酸 > ahisan\ ;
+阿修羅 > ashura\ ;
+御雑煮 > ozouni\ ;
+皮膚科 > hifuka\ ;
+弟小父 > otooji\ ;
+主治医 > shujii\ ;
+不誠意 > fuseii\ ;
+御詠歌 > goeika\ ;
+胃下垂 > ikasui\ ;
+刷毛目 > hakeme\ ;
+甲烏賊 > kouika\ ;
+伊達着 > dategi\ ;
+御見舞 > omimai\ ;
+背文字 > semoji\ ;
+優曇華 > udonge\ ;
+御襁褓 > omutsu\ ;
+西班牙 > supein\ ;
+不見目 > mijime\ ;
+蕎麦粉 > sobako\ ;
+梭子魚 > kamasu\ ;
+不随意 > fuzuii\ ;
+紫陽花 > ajisai\ ;
+野良着 > noragi\ ;
+于蘭盆 > urabon\ ;
+苦味素 > kumiso\ ;
+無事故 > mujiko\ ;
+一昨日 > ototoi\ ;
+出来値 > dekine\ ;
+伊勢丹 > isetan\ ;
+飲兵衛 > nonbee\ ;
+此処等 > kokora\ ;
+露西亜 > roshia\ ;
+目医者 > meisha\ ;
+如何様 > ikayou\ ;
+破魔矢 > hamaya\ ;
+相部屋 > aibeya\ ;
+孤児院 > kojiin\ ;
+今日日 > kyoubi\ ;
+荼枳尼 > dakini\ ;
+海老錠 > ebijou\ ;
+蕎麦屋 > sobaya\ ;
+雌捻子 > meneji\ ;
+古事記 > kojiki\ ;
+真面目 > majime\ ;
+那由他 > nayuta\ ;
+倶楽部 > kurabu\ ;
+屋根屋 > yaneya\ ;
+海老茶 > ebicha\ ;
+阿媽港 > amakou\ ;
+磁方位 > jihoui\ ;
+鍛冶屋 > kajiya\ ;
+塩基度 > enkido\ ;
+矢羽根 > yabane\ ;
+百合根 > yurine\ ;
+阿羅漢 > arakan\ ;
+野路子 > nojiko\ ;
+雌螺子 > meneji\ ;
+土下座 > dogeza\ ;
+慰安者 > iansha\ ;
+絵日記 > enikki\ ;
+陀羅尼 > darani\ ;
+羅方位 > rahoui\ ;
+異体字 > itaiji\ ;
+同意語 > douigo\ ;
+韋駄天 > idaten\ ;
+為政家 > iseika\ ;
+二度目 > nidome\ ;
+数寄屋 > sukiya\ ;
+同意義 > douigi\ ;
+大袈裟 > oogesa\ ;
+事務屋 > jimuya\ ;
+浮世絵 > ukiyoe\ ;
+琵琶湖 > biwako\ ;
+事務家 > jimuka\ ;
+加留多 > karuta\ ;
+不可避 > fukahi\ ;
+事務器 > jimuki\ ;
+御洒落 > oshare\ ;
+事務員 > jimuin\ ;
+植木屋 > uekiya\ ;
+不可誤 > fukago\ ;
+御釈迦 > oshaka\ ;
+印字機 > injiki\ ;
+硫黄泉 > iousen\ ;
+卒都婆 > sotoba\ ;
+偉丈夫 > ijoufu\ ;
+布海苔 > funori\ ;
+眼医者 > meisha\ ;
+眼科医 > gankai\ ;
+慰安会 > iankai\ ;
+披露目 > hirome\ ;
+予備馬 > yobiba\ ;
+気化器 > kikaki\ ;
+武者絵 > mushae\ ;
+風土記 > fudoki\ ;
+御河童 > okappa\ ;
+愛煙家 > aienka\ ;
+部屋着 > heyagi\ ;
+予備費 > yobihi\ ;
+瀘過器 > rokaki\ ;
+補助員 > hojoin\ ;
+比丘尼 > bikuni\ ;
+波止場 > hatoba\ ;
+易動度 > idoudo\ ;
+絵図面 > ezumen\ ;
+裸婦画 > rafuga\ ;
+歩一歩 > hoippo\ ;
+三十路 > misoji\ ;
+不沙汰 > busata\ ;
+不死身 > fujimi\ ;
+告天子 > hibari\ ;
+加奈陀 > kanada\ ;
+以遠権 > ienken\ ;
+施餓鬼 > segaki\ ;
+三重県 > mieken\ ;
+御沙汰 > gosata\ ;
+毛繻子 > kejusu\ ;
+不同意 > fudoui\ ;
+予備科 > yobika\ ;
+江戸前 > edomae\ ;
+盂蘭盆 > urabon\ ;
+保護区 > hogoku\ ;
+浅茅生 > asajiu\ ;
+家具屋 > kaguya\ ;
+小気味 > kokimi\ ;
+天蚕糸 > tegusu\ ;
+異文化 > ibunka\ ;
+夜見世 > yomise\ ;
+位相差 > isousa\ ;
+数奇屋 > sukiya\ ;
+薔薇園 > baraen\ ;
+過渡期 > katoki\ ;
+居場所 > ibasho\ ;
+違和感 > iwakan\ ;
+生蕎麦 > kisoba\ ;
+寝間着 > nemaki\ ;
+三十日 > misoka\ ;
+不気味 > bukimi\ ;
+最下位 > saikai\ ;
+御歳暮 > oseibo\ ;
+予備員 > yobiin\ ;
+映画化 > eigaka\ ;
+欧印語 > ouingo\ ;
+図案家 > zuanka\ ;
+応援歌 > ouenka\ ;
+韋陀天 > idaten\ ;
+歌舞伎 > kabuki\ ;
+阿蘭陀 > oranda\ ;
+歌留多 > karuta\ ;
+無慈悲 > mujihi\ ;
+受話器 > juwaki\ ;
+翻車魚 > manbou\ ;
+不出来 > fudeki\ ;
+雑魚寝 > zakone\ ;
+伊太利 > itarii\ ;
+饂飩粉 > udonko\ ;
+甘海老 > amaebi\ ;
+小馬鹿 > kobaka\ ;
+御菓子 > okashi\ ;
+産科医 > sankai\ ;
+三知土 > tataki\ ;
+賓位語 > hinigo\ ;
+摩莫枳 > mamaki\ ;
+小百合 > sayuri\ ;
+無沙汰 > busata\ ;
+烏帽子 > eboshi\ ;
+祖父母 > sofubo\ ;
+十六夜 > izayoi\ ;
+迂回路 > ukairo\ ;
+襤褸家 > boroya\ ;
+青紫蘇 > aojiso\ ;
+濾過器 > rokaki\ ;
+不具合 > fuguai\ ;
+知恵歯 > chieba\ ;
+不起訴 > fukiso\ ;
+無医村 > muison\ ;
+果樹園 > kajuen\ ;
+御転婆 > otenba\ ;
+風呂屋 > furoya\ ;
+意味論 > imiron\ ;
+無邪気 > mujaki\ ;
+風呂場 > furoba\ ;
+阿蘇山 > asosan\ ;
+鮎魚女 > ainame\ ;
+御家芸 > oiegei\ ;
+無気味 > bukimi\ ;
+内科医 > naikai\ ;
+大部屋 > oobeya\ ;
+堕胎医 > dataii\ ;
+不用意 > fuyoui\ ;
+久慈目 > kujime\ ;
+大御代 > oomiyo\ ;
+有意義 > yuuigi\ ;
+野薔薇 > nobara\ ;
+梅雨期 > baiuki\ ;
+耳鼻科 > jibika\ ;
+画架座 > gakaza\ ;
+不安気 > fuange\ ;
+大出来 > oodeki\ ;
+風邪気 > kazeke\ ;
+武器庫 > bukiko\ ;
+伊呂波 > iroha\ ;
+亜鉛華 > aenka\ ;
+維持費 > ijihi\ ;
+依估地 > ekoji\ ;
+意気地 > ikuji\ ;
+秋刀魚 > sanma\ ;
+八重歯 > yaeba\ ;
+大伯父 > oooji\ ;
+大伯母 > oooba\ ;
+紫雲英 > genge\ ;
+未曾有 > mizou\ ;
+伯父貴 > ojiki\ ;
+亜麻仁 > amani\ ;
+五十路 > isoji\ ;
+木乃伊 > miira\ ;
+二十重 > hatae\ ;
+作務衣 > samue\ ;
+居留守 > irusu\ ;
+寝椅子 > neisu\ ;
+座椅子 > zaisu\ ;
+雪花菜 > okara\ ;
+八百屋 > yaoya\ ;
+硫黄華 > iouka\ ;
+小意気 > koiki\ ;
+御神酒 > omiki\ ;
+伊佐木 > isaki\ ;
+慰安婦 > ianfu\ ;
+大見得 > oomie\ ;
+射手座 > iteza\ ;
+不意気 > buiki\ ;
+荏胡麻 > egoma\ ;
+絵文字 > emoji\ ;
+五倍子 > fushi\ ;
+恵比寿 > ebisu\ ;
+留守居 > rusui\ ;
+不得手 > fuete\ ;
+無意義 > muigi\ ;
+依怙地 > ekoji\ ;
+香具師 > yashi\ ;
+大叔父 > oooji\ ;
+無意味 > muimi\ ;
+大叔母 > oooba\ ;
+意固地 > ikoji\ ;
+御辞儀 > ojigi\ ;
+阿弥陀 > amida\ ;
+居合道 > iadou\ ;
+未通女 > oboko\ ;
+囲炉裏 > irori\ ;
+御世辞 > oseji\ ;
+外科医 > gekai\ ;
+石斑魚 > ugui\ ;
+如雨露 > joro\ ;
+百舌鳥 > mozu\ ;
+浮塵子 > unka\ ;
+亜細亜 > ajia\ ;
+似而非 > ese\ ;
+昔話 > mukashibanashi\ ;
+亥年 > inoshishidoshi\ ;
+話話 > hanashibanashi\ ;
+下唇 > shitakuchibiru\ ;
+昔昔 > mukashimukashi\ ;
+昔々 > mukashimukashi\ ;
+話々 > hanashibanashi\ ;
+私立 > watakushiritsu\ ;
+懐刀 > futokorogatana\ ;
+忝涙 > katajikenamida\ ;
+南東 > minamihigashi\ ;
+古兵 > furutsuwamono\ ;
+内踝 > uchikurubushi\ ;
+舌鼓 > shitatsudzumi\ ;
+健者 > shitatakamono\ ;
+桜祭 > sakuramatsuri\ ;
+乳窄 > chichishibori\ ;
+賢所 > kashikodokoro\ ;
+面魂 > tsuradamashii\ ;
+仏作 > hotokedzukuru\ ;
+東南 > higashiminami\ ;
+天牛 > kamikirimushi\ ;
+夢幻 > yumemaboroshi\ ;
+恙虫 > tsutsugamushi\ ;
+私共 > watakushidomo\ ;
+私事 > watakushigoto\ ;
+都忘 > miyakowasure\ ;
+道標 > michishirube\ ;
+辻社 > tsujiyashiro\ ;
+若紫 > wakamurasaki\ ;
+畳鰯 > tatamiiwashi\ ;
+盲暦 > mekuragoyomi\ ;
+腹鼓 > haratsudzumi\ ;
+内懐 > uchibutokoro\ ;
+鰻丼 > unagidonburi\ ;
+躾方 > shitsukekata\ ;
+僻心 > higamigokoro\ ;
+椿油 > tsubakiabura\ ;
+柏餅 > kashiwamochi\ ;
+柄頭 > tsukagashira\ ;
+俄盲 > niwakamekura\ ;
+枕詞 > makurakotoba\ ;
+候所 > souroutokoro\ ;
+桂男 > katsuraotoko\ ;
+山懐 > yamafutokoro\ ;
+丼飯 > donburimeshi\ ;
+丼鉢 > donburibachi\ ;
+倒事 > sakasamagoto\ ;
+暁闇 > akatsukiyami\ ;
+松毬 > matsupokkuri\ ;
+頭虱 > atamashirami\ ;
+松林 > matsubayashi\ ;
+束柱 > tsukabashira\ ;
+仏心 > hotokegokoro\ ;
+未年 > hitsujidoshi\ ;
+谷懐 > tanibutokoro\ ;
+雁骨 > kariganebone\ ;
+東口 > higashiguchi\ ;
+杯事 > sakazukigoto\ ;
+独枕 > hitorimakura\ ;
+一塊 > hitokatamari\ ;
+娘心 > musumegokoro\ ;
+夏祭 > natsumatsuri\ ;
+昔式 > mukashishiki\ ;
+妹娘 > imoutomusume\ ;
+霜柱 > shimobashira\ ;
+星印 > hoshijirushi\ ;
+袋鼠 > fukuronezumi\ ;
+続柄 > tsudzukigara\ ;
+土蛍 > tsuchibotaru\ ;
+土煙 > tsuchikemuri\ ;
+懐銭 > futokorozeni\ ;
+鋸鮫 > nokogirizame\ ;
+土埃 > tsuchibokori\ ;
+蛍袋 > hotarubukuro\ ;
+懐紙 > futokorogami\ ;
+私達 > watashitachi\ ;
+所所 > tokorodokoro\ ;
+金鋸 > kanenokogiri\ ;
+戯事 > tawamuregoto\ ;
+品形 > shinakatachi\ ;
+勢車 > hazumiguruma\ ;
+哀哉 > kanashiikana\ ;
+所々 > tokorodokoro\ ;
+水盃 > mizusakazuki\ ;
+包紙 > tsutsumigami\ ;
+水杯 > mizusakazuki\ ;
+帯鋸 > obinokogiri\ ;
+召使 > meshitsukai\ ;
+力石 > chikaraishi\ ;
+白鼠 > shironezumi\ ;
+力瘤 > chikarakobu\ ;
+力水 > chikaramizu\ ;
+南口 > minamiguchi\ ;
+力業 > chikarawaza\ ;
+逆睫 > sakamatsuge\ ;
+鰹節 > katsuobushi\ ;
+兜虫 > kabutomushi\ ;
+形体 > narikatachi\ ;
+床柱 > tokobashira\ ;
+出没 > shutsubotsu\ ;
+左端 > hidarihashi\ ;
+巴瓦 > tomoegawara\ ;
+切日 > shimekiribi\ ;
+幼心 > osanagokoro\ ;
+花筵 > hanamushiro\ ;
+男鰥 > otokoyamome\ ;
+花祭 > hanamatsuri\ ;
+初姿 > hatsusugata\ ;
+高話 > takabanashi\ ;
+膝頭 > hizagashira\ ;
+巻柱 > makibashira\ ;
+底力 > sokodjikara\ ;
+畳表 > tatamiomote\ ;
+出力 > shutsuryoku\ ;
+桜餅 > sakuramochi\ ;
+桜飯 > sakurameshi\ ;
+直出 > chokushutsu\ ;
+畳職 > tatamishoku\ ;
+草冠 > kusakanmuri\ ;
+瓢虫 > tentoumushi\ ;
+左下 > hidarishita\ ;
+百出 > hyakushutsu\ ;
+若侍 > wakazamurai\ ;
+候由 > sourouyoshi\ ;
+伽話 > togibanashi\ ;
+松飾 > matsukazari\ ;
+東風 > higashikaze\ ;
+赤紫 > akamurasaki\ ;
+柳腰 > yanagigoshi\ ;
+男心 > otokogokoro\ ;
+人虱 > hitoshirami\ ;
+獣道 > kemonomichi\ ;
+一雫 > hitoshizuku\ ;
+羊雲 > hitsujigumo\ ;
+猿轡 > sarugutsuwa\ ;
+脈所 > myakudokoro\ ;
+但書 > tadashigaki\ ;
+腰刀 > koshigatana\ ;
+貢物 > mitsugimono\ ;
+客室 > kyakushitsu\ ;
+人柱 > hitobashira\ ;
+旗頭 > hatagashira\ ;
+子年 > nezumidoshi\ ;
+旋風 > tsumujikaze\ ;
+質実 > shitsujitsu\ ;
+丼物 > donburimono\ ;
+杖柱 > tsuehashira\ ;
+下瞼 > shitamabuta\ ;
+杉林 > sugibayashi\ ;
+晒者 > sarashimono\ ;
+一滴 > hitoshizuku\ ;
+中柱 > nakabashira\ ;
+狸爺 > tanukijijii\ ;
+嫡室 > chakushitsu\ ;
+狐猿 > kitsunezaru\ ;
+東北 > higashikita\ ;
+七月 > shichigatsu\ ;
+一昔 > hitomukashi\ ;
+東側 > higashigawa\ ;
+一撮 > hitotsumami\ ;
+飾付 > kazaritsuke\ ;
+嫡出 > chakushutsu\ ;
+下心 > shitagokoro\ ;
+夏衣 > natsugoromo\ ;
+不嗜 > butashinami\ ;
+雀蜂 > suzumebachi\ ;
+組頭 > kumigashira\ ;
+緑虫 > midorimushi\ ;
+雪礫 > yukitsubute\ ;
+旗標 > hatajirushi\ ;
+夢現 > yumeutsutsu\ ;
+雛祭 > hinamatsuri\ ;
+女旱 > on''nahideri\ ;
+女心 > on''nagokoro\ ;
+握鮨 > nigirizushi\ ;
+静心 > shizugokoro\ ;
+隣町 > tonarimachi\ ;
+大晦 > ootsugomori\ ;
+握飯 > nigirimeshi\ ;
+紫色 > murasakiiro\ ;
+旗印 > hatajirushi\ ;
+雪庇 > yukibisashi\ ;
+長話 > nagabanashi\ ;
+紙礫 > kamitsubute\ ;
+裸虫 > hadakamushi\ ;
+話中 > hanashichuu\ ;
+塵埃 > chirihokori\ ;
+鏡餅 > kagamimochi\ ;
+烏口 > karasuguchi\ ;
+端金 > hashitagane\ ;
+控室 > hikaeshitsu\ ;
+米印 > komejirushi\ ;
+唐錦 > karanishiki\ ;
+蝸牛 > dendenmushi\ ;
+黒鶫 > kurotsugumi\ ;
+錦蛇 > nishikihebi\ ;
+国侍 > kunizamurai\ ;
+港町 > minatomachi\ ;
+虫薬 > mushigusuri\ ;
+唐紅 > karakurenai\ ;
+磯鵯 > isohiyodori\ ;
+命綱 > inochidzuna\ ;
+金轡 > kanagutsuwa\ ;
+口車 > kuchiguruma\ ;
+取調 > torishirabe\ ;
+鼻柱 > hanabashira\ ;
+窯印 > kamajirushi\ ;
+蔦蘿 > tsutakazura\ ;
+取締 > torishimari\ ;
+蔦蔓 > tsutakazura\ ;
+氷袋 > kooribukuro\ ;
+南西 > minaminishi\ ;
+包金 > tsutsumikin\ ;
+古狐 > furugitsune\ ;
+力革 > chikaragawa\ ;
+私儀 > watakushigi\ ;
+力足 > chikaraashi\ ;
+私供 > watashidomo\ ;
+力負 > chikaramake\ ;
+水澄 > mizusumashi\ ;
+取扱 > toriatsukai\ ;
+鉄兜 > tetsukabuto\ ;
+氷枕 > koorimakura\ ;
+水柱 > mizubashira\ ;
+切通 > kiridooshi\ ;
+鯰髭 > namazuhige\ ;
+口口 > kuchiguchi\ ;
+初詣 > hatsumoude\ ;
+石畳 > ishidatami\ ;
+逆説 > gyakusetsu\ ;
+茸雲 > kinokogumo\ ;
+近道 > chikamichi\ ;
+近近 > chikadjika\ ;
+水心 > mizugokoro\ ;
+砂煙 > sunakemuri\ ;
+川魚 > kawazakana\ ;
+卯年 > usagidoshi\ ;
+近路 > chikamichi\ ;
+辻辻 > tsujitsuji\ ;
+北枕 > kitamakura\ ;
+確執 > kakushitsu\ ;
+氷室 > hyoushitsu\ ;
+決別 > ketsubetsu\ ;
+後技 > ushirowaza\ ;
+卍巴 > manjidomoe\ ;
+心室 > shinshitsu\ ;
+着色 > chakushoku\ ;
+円鏡 > marukagami\ ;
+遣直 > yarinaoshi\ ;
+着脱 > chakudatsu\ ;
+彗星 > houkiboshi\ ;
+円鉋 > marugan''na\ ;
+後後 > nochinochi\ ;
+卸商 > oroshishou\ ;
+辻褄 > tsujitsuma\ ;
+花鰹 > hanagatsuo\ ;
+鶴嘴 > tsuruhashi\ ;
+先隣 > sakidonari\ ;
+左足 > hidariashi\ ;
+得失 > tokushitsu\ ;
+咄々 > totsutotsu\ ;
+酒処 > sakedokoro\ ;
+歳月 > toshitsuki\ ;
+横車 > yokoguruma\ ;
+卓出 > takushutsu\ ;
+式日 > shikijitsu\ ;
+入質 > nyuushichi\ ;
+着着 > chakuchaku\ ;
+南側 > minamigawa\ ;
+皮衣 > kawagoromo\ ;
+区区 > machimachi\ ;
+着発 > chakuhatsu\ ;
+花鋏 > hanabasami\ ;
+庭漆 > niwaurushi\ ;
+砂嵐 > sunaarashi\ ;
+年男 > toshiotoko\ ;
+次次 > tsugitsugi\ ;
+刀疵 > katanakizu\ ;
+違棚 > chigaidana\ ;
+直筆 > chokuhitsu\ ;
+弐心 > futagokoro\ ;
+直立 > chokuritsu\ ;
+兜蟹 > kabutogani\ ;
+盲窓 > mekuramado\ ;
+出獄 > shutsugoku\ ;
+出猟 > shutsuryou\ ;
+砂埃 > sunabokori\ ;
+左耳 > hidarimimi\ ;
+力帯 > chikaraobi\ ;
+砂嚢 > sunabukuro\ ;
+光蘚 > hikarigoke\ ;
+花詞 > hanakotoba\ ;
+初氷 > hatsugoori\ ;
+苦艾 > nigayomogi\ ;
+出漁 > shutsuryou\ ;
+皿秤 > sarabakari\ ;
+殺伐 > satsubatsu\ ;
+沸々 > futsufutsu\ ;
+兎脣 > mitsukuchi\ ;
+座技 > suwariwaza\ ;
+口々 > kuchiguchi\ ;
+良質 > ryoushitsu\ ;
+槍衾 > yaribusuma\ ;
+逐日 > chikujitsu\ ;
+若緑 > wakamidori\ ;
+車賃 > kurumachin\ ;
+逆接 > gyakusetsu\ ;
+畑鼠 > hatanezumi\ ;
+着払 > chakubarai\ ;
+出撃 > shutsugeki\ ;
+峠道 > tougemichi\ ;
+年強 > toshidzuyo\ ;
+艶艶 > tsuyatsuya\ ;
+田鵑 > hototogisu\ ;
+山鯨 > yamakujira\ ;
+草枕 > kusamakura\ ;
+着実 > chakujitsu\ ;
+傷薬 > kizugusuri\ ;
+茶柱 > chabashira\ ;
+帚星 > houkiboshi\ ;
+直接 > chokusetsu\ ;
+底土 > sokotsuchi\ ;
+畳針 > tatamihari\ ;
+発熱 > hatsunetsu\ ;
+切実 > setsujitsu\ ;
+山颪 > yamaoroshi\ ;
+光物 > hikarimono\ ;
+剔出 > tekishutsu\ ;
+生魚 > namazakana\ ;
+直截 > chokusetsu\ ;
+偏辺 > katahorori\ ;
+花畑 > hanabatake\ ;
+候間 > sourouaida\ ;
+進出 > shinshutsu\ ;
+店卸 > tanaoroshi\ ;
+略述 > ryakujutsu\ ;
+常常 > tsunedzune\ ;
+疵薬 > kizugusuri\ ;
+別口 > betsukuchi\ ;
+八橋 > yatsuhashi\ ;
+辰年 > tatsudoshi\ ;
+別別 > betsubetsu\ ;
+尻餠 > shirimochi\ ;
+出国 > shutsugoku\ ;
+尻餅 > shirimochi\ ;
+区々 > machimachi\ ;
+白樺 > shirakanba\ ;
+八月 > hachigatsu\ ;
+踏車 > fumiguruma\ ;
+後々 > nochinochi\ ;
+略説 > ryakusetsu\ ;
+申込 > moushikomi\ ;
+切切 > setsusetsu\ ;
+盲壁 > mekurakabe\ ;
+鯨幕 > kujiramaku\ ;
+白星 > shiroboshi\ ;
+百日 > hyakunichi\ ;
+膜質 > makushitsu\ ;
+出入 > shutsunyuu\ ;
+年下 > toshishita\ ;
+係長 > kakarichou\ ;
+候調 > sourouchou\ ;
+鯨尺 > kujirajaku\ ;
+盛土 > moritsuchi\ ;
+花暦 > hanagoyomi\ ;
+直列 > chokuretsu\ ;
+甲蟹 > kabutogani\ ;
+冽冽 > retsuretsu\ ;
+入室 > nyuushitsu\ ;
+山荒 > yamaarashi\ ;
+傑物 > ketsubutsu\ ;
+略筆 > ryakuhitsu\ ;
+左利 > hidarikiki\ ;
+伸餅 > noshimochi\ ;
+内冑 > uchikabuto\ ;
+内兜 > uchikabuto\ ;
+左側 > hidarigawa\ ;
+入口 > hairiguchi\ ;
+室長 > shitsuchou\ ;
+優姿 > yasasugata\ ;
+兎口 > mitsukuchi\ ;
+申立 > moushitate\ ;
+核質 > kakushitsu\ ;
+植物 > shokubutsu\ ;
+岩燕 > iwatsubame\ ;
+次々 > tsugitsugi\ ;
+儲口 > moukeguchi\ ;
+棟瓦 > munagawara\ ;
+高枕 > takamakura\ ;
+脹脛 > fukurahagi\ ;
+高曇 > takagumori\ ;
+桜花 > sakurabana\ ;
+桑苺 > kuwaichigo\ ;
+脚色 > kyakushoku\ ;
+桜肉 > sakuraniku\ ;
+肩車 > kataguruma\ ;
+別々 > betsubetsu\ ;
+質量 > shitsuryou\ ;
+畜殺 > chikusatsu\ ;
+杜鵑 > hototogisu\ ;
+脈脈 > myakumyaku\ ;
+着々 > chakuchaku\ ;
+楔形 > kusabigata\ ;
+桜紙 > sakuragami\ ;
+切々 > setsusetsu\ ;
+病室 > byoushitsu\ ;
+芋侍 > imozamurai\ ;
+肉質 > nikushitsu\ ;
+近々 > chikadjika\ ;
+宝船 > takarabune\ ;
+山桜 > yamazakura\ ;
+側室 > sokushitsu\ ;
+膝枕 > hizamakura\ ;
+乳首 > chichikubi\ ;
+常々 > tsunedzune\ ;
+子規 > hototogisu\ ;
+極力 > kyokuryoku\ ;
+辻々 > tsujitsuji\ ;
+桑畑 > kuwabatake\ ;
+略式 > ryakushiki\ ;
+冽々 > retsuretsu\ ;
+枕許 > makuramoto\ ;
+宝籤 > takarakuji\ ;
+宝箱 > takarabako\ ;
+質草 > shichigusa\ ;
+骨壷 > kotsutsubo\ ;
+宿直 > shukuchoku\ ;
+備付 > sonaetsuke\ ;
+略奪 > ryakudatsu\ ;
+山嵐 > yamaarashi\ ;
+松虫 > matsumushi\ ;
+乳質 > nyuushitsu\ ;
+両隣 > ryoudonari\ ;
+屡屡 > shibashiba\ ;
+群雀 > murasuzume\ ;
+木質 > mokushitsu\ ;
+実物 > jitsubutsu\ ;
+質種 > shichigusa\ ;
+下露 > shitatsuyu\ ;
+畜力 > chikuryoku\ ;
+寒椿 > kantsubaki\ ;
+質的 > shitsuteki\ ;
+棚卸 > tanaoroshi\ ;
+梔子 > kuchinashi\ ;
+驀地 > masshigura\ ;
+山刀 > yamagatana\ ;
+下道 > shitamichi\ ;
+不躾 > bushitsuke\ ;
+生卵 > namatamago\ ;
+風薬 > kazegusuri\ ;
+曲説 > kyokusetsu\ ;
+丸裸 > maruhadaka\ ;
+飯粒 > meshitsubu\ ;
+猫車 > nekoguruma\ ;
+三越 > mitsukoshi\ ;
+客月 > kyakugetsu\ ;
+時鳥 > hototogisu\ ;
+顔貌 > kaokatachi\ ;
+室料 > shitsuryou\ ;
+尺八 > shakuhachi\ ;
+艶々 > tsuyatsuya\ ;
+東男 > azumaotoko\ ;
+寝室 > shinshitsu\ ;
+質樸 > shitsuboku\ ;
+肘枕 > hijimakura\ ;
+仏滅 > butsumetsu\ ;
+小包 > kodzutsumi\ ;
+密密 > mitsumitsu\ ;
+就中 > nakandzuku\ ;
+上蓆 > uwamushiro\ ;
+質朴 > shitsuboku\ ;
+脱力 > datsuryoku\ ;
+質札 > shichifuda\ ;
+三菱 > mitsubishi\ ;
+仮枕 > karimakura\ ;
+供出 > kyoushutsu\ ;
+宮室 > kyuushitsu\ ;
+春霞 > harugasumi\ ;
+食物 > shokumotsu\ ;
+昔風 > mukashifuu\ ;
+宝島 > takarajima\ ;
+仏様 > hotokesama\ ;
+脚力 > kyakuryoku\ ;
+下職 > shitashoku\ ;
+曲節 > kyokusetsu\ ;
+曲筆 > kyokuhitsu\ ;
+一纏 > hitomatome\ ;
+飯櫃 > meshibitsu\ ;
+貝柱 > kaibashira\ ;
+上筵 > uwamushiro\ ;
+曲直 > kyokuchoku\ ;
+丸瓦 > marugawara\ ;
+七竈 > nanakamado\ ;
+一穴 > hitotsuana\ ;
+孫娘 > magomusume\ ;
+仏性 > hotokeshou\ ;
+静静 > shizushizu\ ;
+実力 > jitsuryoku\ ;
+曲率 > kyokuritsu\ ;
+大鼓 > ootsudzumi\ ;
+狐色 > kitsuneiro\ ;
+特質 > tokushitsu\ ;
+一睡 > hitonemuri\ ;
+下町 > shitamachi\ ;
+人心 > hitogokoro\ ;
+七生 > shichishou\ ;
+燕麦 > karasumugi\ ;
+一番 > hitotsugai\ ;
+物語 > monogatari\ ;
+女達 > on''natachi\ ;
+朧月 > oborodzuki\ ;
+片跛 > katachinba\ ;
+末日 > matsujitsu\ ;
+望月 > mochidzuki\ ;
+二心 > futagokoro\ ;
+革質 > kakushitsu\ ;
+大隼 > oohayabusa\ ;
+月月 > tsukidzuki\ ;
+一渡 > hitowatari\ ;
+屡々 > shibashiba\ ;
+杜宇 > hototogisu\ ;
+妾腹 > mekakebara\ ;
+雲霞 > kumokasumi\ ;
+革袋 > kawabukuro\ ;
+析出 > sekishutsu\ ;
+枕元 > makuramoto\ ;
+不束 > futsutsuka\ ;
+猫柳 > nekoyanagi\ ;
+曲折 > kyokusetsu\ ;
+貸付 > kashitsuke\ ;
+狸汁 > tanukijiru\ ;
+不抱 > kakawarazu\ ;
+一所 > hitotokoro\ ;
+曲尺 > kyokushaku\ ;
+雪質 > yukishitsu\ ;
+顔形 > kaokatachi\ ;
+犇犇 > hishihishi\ ;
+雛豆 > hiyokomame\ ;
+網頭 > amigashira\ ;
+塩魚 > shiozakana\ ;
+中執 > chuushitsu\ ;
+夏虫 > natsumushi\ ;
+綾錦 > ayanishiki\ ;
+月別 > tsukibetsu\ ;
+奪略 > datsuryaku\ ;
+繁繁 > shigeshige\ ;
+烏麦 > karasumugi\ ;
+一周 > hitomeguri\ ;
+烏鳩 > karasubato\ ;
+訥訥 > totsutotsu\ ;
+旅烏 > tabigarasu\ ;
+七光 > nanahikari\ ;
+娘婿 > musumemuko\ ;
+日没 > nichibotsu\ ;
+細雪 > sasameyuki\ ;
+頭分 > kashirabun\ ;
+斑牛 > madaraushi\ ;
+緑色 > ryokushoku\ ;
+日月 > nichigetsu\ ;
+旭日 > kyokujitsu\ ;
+角質 > kakushitsu\ ;
+隣組 > tonarigumi\ ;
+烏金 > karasugane\ ;
+隼科 > hayabusaka\ ;
+物心 > monogokoro\ ;
+旅枕 > tabimakura\ ;
+紅雀 > benisuzume\ ;
+父方 > chichikata\ ;
+塵芥 > chiriakuta\ ;
+雨燕 > amatsubame\ ;
+妹婿 > imoutomuko\ ;
+雪煙 > yukikemuri\ ;
+奪掠 > datsuryaku\ ;
+角蛙 > tsunogaeru\ ;
+失業 > shitsugyou\ ;
+設立 > setsuritsu\ ;
+雑物 > zatsubutsu\ ;
+熱烈 > netsuretsu\ ;
+随神 > kan''nagara\ ;
+裸麦 > hadakamugi\ ;
+霜月 > shimotsuki\ ;
+夢枕 > yumemakura\ ;
+旅心 > tabigokoro\ ;
+犬侍 > inuzamurai\ ;
+識別 > shikibetsu\ ;
+妾出 > shoushutsu\ ;
+緑玉 > ryokugyoku\ ;
+烏蛇 > karasuhebi\ ;
+特出 > tokushutsu\ ;
+紙袋 > kamibukuro\ ;
+雪柳 > yukiyanagi\ ;
+春休 > haruyasumi\ ;
+月々 > tsukidzuki\ ;
+触発 > shokuhatsu\ ;
+継父 > mamachichi\ ;
+烏紙 > karasugami\ ;
+日仏 > nichifutsu\ ;
+掛長 > kakarichou\ ;
+靴下 > kutsushita\ ;
+縮尺 > shukushaku\ ;
+女主 > on''naaruji\ ;
+敵失 > tekishitsu\ ;
+教室 > kyoushitsu\ ;
+絶滅 > zetsumetsu\ ;
+要石 > kanameishi\ ;
+裏話 > urabanashi\ ;
+粉薬 > konagusuri\ ;
+縮刷 > shukusatsu\ ;
+土豚 > tsuchibuta\ ;
+烈烈 > retsuretsu\ ;
+救出 > kyuushutsu\ ;
+壁土 > kabetsuchi\ ;
+結末 > ketsumatsu\ ;
+親柱 > oyabashira\ ;
+粛粛 > shukushuku\ ;
+国訛 > kuninamari\ ;
+綿埃 > watabokori\ ;
+親日 > shin''nichi\ ;
+灼熱 > shakunetsu\ ;
+雇主 > yatoinushi\ ;
+継娘 > mamamusume\ ;
+焼失 > shoushitsu\ ;
+訳出 > yakushutsu\ ;
+烈日 > retsujitsu\ ;
+締付 > shimetsuke\ ;
+訣別 > ketsubetsu\ ;
+筒鳥 > tsutsudori\ ;
+袋耳 > fukuromimi\ ;
+結実 > ketsujitsu\ ;
+続出 > zokushutsu\ ;
+濃紫 > komurasaki\ ;
+溝鼠 > dobunezumi\ ;
+粛殺 > shukusatsu\ ;
+血脈 > ketsumyaku\ ;
+鎌鼬 > kamaitachi\ ;
+袋物 > fukuromono\ ;
+西口 > nishiguchi\ ;
+摘出 > tekishutsu\ ;
+節節 > fushibushi\ ;
+筒袖 > tsutsusode\ ;
+糸印 > itojirushi\ ;
+為人 > hitotonari\ ;
+炭俵 > sumidawara\ ;
+蜀魂 > hototogisu\ ;
+米所 > komedokoro\ ;
+端近 > hashidjika\ ;
+鎖鎌 > kusarigama\ ;
+滅裂 > metsuretsu\ ;
+潮煙 > shiokemuri\ ;
+筆舌 > hitsuzetsu\ ;
+錦鯉 > nishikigoi\ ;
+滑脱 > katsudatsu\ ;
+掠奪 > ryakudatsu\ ;
+筆筒 > fudedzutsu\ ;
+描出 > byoushutsu\ ;
+土壁 > tsuchikabe\ ;
+手続 > tetsudzuki\ ;
+螢石 > hotaruishi\ ;
+蜜蜂 > mitsubachi\ ;
+箱柳 > hakoyanagi\ ;
+箱枕 > hakomakura\ ;
+米俵 > komedawara\ ;
+蜂蜜 > hachimitsu\ ;
+竹筒 > takedzutsu\ ;
+端端 > hashibashi\ ;
+箒星 > houkiboshi\ ;
+蝶番 > choutsugai\ ;
+拠所 > yoridokoro\ ;
+黒鼠 > kuronezumi\ ;
+表口 > omoteguchi\ ;
+竈神 > kamadogami\ ;
+黒鮪 > kuromaguro\ ;
+簇出 > zokushutsu\ ;
+表出 > hyoushutsu\ ;
+唐衣 > karakoromo\ ;
+筆旁 > fudezukuri\ ;
+齣落 > komaotoshi\ ;
+錨綱 > ikaridzuna\ ;
+筒形 > tsutsugata\ ;
+深緑 > fukamidori\ ;
+鼻薬 > hanagusuri\ ;
+所柄 > tokorogara\ ;
+持主 > mochinushi\ ;
+拙劣 > setsuretsu\ ;
+蛍石 > hotaruishi\ ;
+漂失 > hyoushitsu\ ;
+針鼠 > harinezumi\ ;
+流質 > ryuushichi\ ;
+抽出 > chuushutsu\ ;
+蜜月 > mitsugetsu\ ;
+空涙 > soranamida\ ;
+渋渋 > shibushibu\ ;
+滲出 > shinshutsu\ ;
+福袋 > fukubukuro\ ;
+筒先 > tsutsusaki\ ;
+筆力 > hitsuryoku\ ;
+抄出 > shoushutsu\ ;
+我心 > wagakokoro\ ;
+黒苺 > kuroichigo\ ;
+秩禄 > chitsuroku\ ;
+又隣 > matadonari\ ;
+金鋏 > kanabasami\ ;
+懐手 > futokorode\ ;
+黒緑 > kuromidori\ ;
+慄烈 > ritsuretsu\ ;
+鋸歯 > nokogiriba\ ;
+溌剌 > hatsuratsu\ ;
+惟神 > kan''nagara\ ;
+海燕 > umitsubame\ ;
+金袋 > kanabukuro\ ;
+油虫 > aburamushi\ ;
+銀狐 > gingitsune\ ;
+南風 > minamikaze\ ;
+虐殺 > gyakusatsu\ ;
+水鏡 > mizukagami\ ;
+活物 > katsubutsu\ ;
+卵酒 > tamagozake\ ;
+節々 > fushibushi\ ;
+都鳥 > miyakodori\ ;
+決裂 > ketsuretsu\ ;
+薬箱 > kusuribako\ ;
+麦畑 > mugibatake\ ;
+黒漆 > kokushitsu\ ;
+喉仏 > nodobotoke\ ;
+金聾 > kanatsunbo\ ;
+吸湿 > kyuushitsu\ ;
+水薬 > mizugusuri\ ;
+泉熱 > izuminetsu\ ;
+浴室 > yokushitsu\ ;
+愛娘 > manamusume\ ;
+古狸 > furudanuki\ ;
+河烏 > kawagarasu\ ;
+私宛 > watashiate\ ;
+必罰 > hitsubatsu\ ;
+祝日 > shukujitsu\ ;
+吊橋 > tsuribashi\ ;
+形許 > katabakari\ ;
+沸沸 > futsufutsu\ ;
+波枕 > namimakura\ ;
+碇綱 > ikaridzuna\ ;
+水秤 > mizubakari\ ;
+流失 > ryuushitsu\ ;
+浸出 > shinshutsu\ ;
+鉋屑 > kan''nakuzu\ ;
+菱餅 > hishimochi\ ;
+吉日 > kichinichi\ ;
+薬指 > kusuriyubi\ ;
+各方 > onoonogata\ ;
+金槌 > kanadzuchi\ ;
+砂袋 > sunabukuro\ ;
+咄咄 > totsutotsu\ ;
+前頭 > maegashira\ ;
+流出 > ryuushutsu\ ;
+活力 > katsuryoku\ ;
+卵焼 > tamagoyaki\ ;
+水煙 > mizukemuri\ ;
+道道 > michimichi\ ;
+強腰 > tsuyogoshi\ ;
+活仏 > katsubutsu\ ;
+初霜 > hatsushimo\ ;
+右左 > migihidari\ ;
+各室 > kakushitsu\ ;
+着雪 > chakusetsu\ ;
+必滅 > hitsumetsu\ ;
+里心 > satogokoro\ ;
+葵祭 > aoimatsuri\ ;
+油壷 > aburatsubo\ ;
+渋々 > shibushibu\ ;
+刻足 > kizamiashi\ ;
+水枕 > mizumakura\ ;
+勅筆 > chokuhitsu\ ;
+鰯雲 > iwashigumo\ ;
+心柄 > kokorogara\ ;
+睦言 > mutsugoto\ ;
+収奪 > shuudatsu\ ;
+恐喝 > kyoukatsu\ ;
+目頭 > megashira\ ;
+草餠 > kusamochi\ ;
+劇職 > gekishoku\ ;
+薬代 > kusuridai\ ;
+強直 > kyouchoku\ ;
+各冊 > kakusatsu\ ;
+通説 > tsuusetsu\ ;
+河口 > kawaguchi\ ;
+逆賊 > gyakuzoku\ ;
+道草 > michikusa\ ;
+死神 > shinigami\ ;
+適職 > tekishoku\ ;
+欠落 > ketsuraku\ ;
+巻鮨 > makizushi\ ;
+勝率 > shouritsu\ ;
+出軍 > shutsugun\ ;
+半日 > han''nichi\ ;
+厄年 > yakudoshi\ ;
+剥脱 > hakudatsu\ ;
+徒桜 > adazakura\ ;
+千日 > sen''nichi\ ;
+別行 > betsugyou\ ;
+落着 > rakuchaku\ ;
+逆襲 > gyakushuu\ ;
+毒殺 > dokusatsu\ ;
+確実 > kakujitsu\ ;
+重出 > juushutsu\ ;
+口先 > kuchisaki\ ;
+口元 > kuchimoto\ ;
+式目 > shikimoku\ ;
+卓抜 > takubatsu\ ;
+没入 > botsunyuu\ ;
+右下 > migishita\ ;
+強烈 > kyouretsu\ ;
+逸脱 > itsudatsu\ ;
+白黒 > shirokuro\ ;
+直達 > jikitatsu\ ;
+恋仇 > koigataki\ ;
+直進 > chokushin\ ;
+直通 > chokutsuu\ ;
+剽窃 > hyousetsu\ ;
+割箸 > waribashi\ ;
+免黜 > menchutsu\ ;
+金仏 > kanabutsu\ ;
+白鷺 > shirasagi\ ;
+醵出 > kyoshutsu\ ;
+直轄 > chokkatsu\ ;
+占師 > uranaishi\ ;
+皮靴 > kawagutsu\ ;
+急切 > kyuusetsu\ ;
+酉年 > toridoshi\ ;
+真裸 > mappadaka\ ;
+出血 > shukketsu\ ;
+白鱚 > shirogisu\ ;
+道筋 > michisuji\ ;
+道端 > michibata\ ;
+卸売 > oroshiuri\ ;
+忘失 > boushitsu\ ;
+蔭口 > kageguchi\ ;
+卵大 > tamagodai\ ;
+初花 > hatsuhana\ ;
+道程 > michinori\ ;
+白髪 > hakuhatsu\ ;
+磔刑 > haritsuke\ ;
+彦星 > hikoboshi\ ;
+辛辣 > shinratsu\ ;
+正物 > shoubutsu\ ;
+品々 > shinajina\ ;
+出藍 > shutsuran\ ;
+年若 > toshiwaka\ ;
+逆臣 > gyakushin\ ;
+平芝 > hirashiba\ ;
+横面 > yokotsura\ ;
+直読 > chokudoku\ ;
+凝血 > gyouketsu\ ;
+逃腰 > nigegoshi\ ;
+心太 > tokoroten\ ;
+心天 > tokoroten\ ;
+直訳 > chokuyaku\ ;
+初耳 > hatsumimi\ ;
+白雪 > hakusetsu\ ;
+出色 > shusshoku\ ;
+廃疾 > haishitsu\ ;
+劇烈 > gekiretsu\ ;
+速筆 > sokuhitsu\ ;
+水口 > mizuguchi\ ;
+殺戮 > satsuriku\ ;
+後室 > koushitsu\ ;
+蓄妾 > chikushou\ ;
+出群 > shutsugun\ ;
+進発 > shinpatsu\ ;
+茶袋 > chabukuro\ ;
+初空 > hatsuzora\ ;
+横道 > yokomichi\ ;
+落札 > rakusatsu\ ;
+刮目 > katsumoku\ ;
+白酒 > shirozake\ ;
+勘所 > kandokoro\ ;
+追突 > tsuitotsu\ ;
+式服 > shikifuku\ ;
+協力 > kyouryoku\ ;
+石持 > ishimochi\ ;
+落日 > rakujitsu\ ;
+逸物 > ichimotsu\ ;
+直腸 > chokuchou\ ;
+歴日 > rekijitsu\ ;
+進物 > shinmotsu\ ;
+出立 > shuttatsu\ ;
+真筆 > shinpitsu\ ;
+正月 > shougatsu\ ;
+凝縮 > gyoushuku\ ;
+着目 > chakumoku\ ;
+六識 > rokushiki\ ;
+凝結 > gyouketsu\ ;
+眼疾 > ganshitsu\ ;
+歌枕 > utamakura\ ;
+Ｘ線 > ekkususen\ ;
+知悉 > chishitsu\ ;
+別物 > betsumono\ ;
+直結 > chokketsu\ ;
+凝立 > gyouritsu\ ;
+常節 > tokobushi\ ;
+標識 > hyoushiki\ ;
+後出 > koushutsu\ ;
+初物 > hatsumono\ ;
+花道 > hanamichi\ ;
+出発 > shuppatsu\ ;
+北口 > kitaguchi\ ;
+年玉 > toshidama\ ;
+橙色 > daidaiiro\ ;
+矩差 > kanezashi\ ;
+千万 > chiyorozu\ ;
+弓弦 > yumidzuru\ ;
+盲穴 > mekuraana\ ;
+草箒 > kusabouki\ ;
+出現 > shutsugen\ ;
+凝着 > gyouchaku\ ;
+劣弱 > retsujaku\ ;
+真率 > shinsotsu\ ;
+苦虫 > nigamushi\ ;
+橋脚 > kyoukyaku\ ;
+左腕 > hidariude\ ;
+高鼾 > takaibiki\ ;
+真物 > shinbutsu\ ;
+弔客 > choukyaku\ ;
+百薬 > hyakuyaku\ ;
+茶筒 > chadzutsu\ ;
+弟娘 > otomusume\ ;
+省略 > shouryaku\ ;
+逆流 > gyakuryuu\ ;
+歌心 > utagokoro\ ;
+週末 > shuumatsu\ ;
+着氷 > chakuhyou\ ;
+白菊 > shiragiku\ ;
+年波 > toshinami\ ;
+正室 > seishitsu\ ;
+菊月 > kikudzuki\ ;
+別業 > betsugyou\ ;
+年毎 > toshigoto\ ;
+週日 > shuujitsu\ ;
+花街 > hanamachi\ ;
+川縁 > kawabuchi\ ;
+形代 > katashiro\ ;
+白色 > hakushoku\ ;
+別棟 > betsumune\ ;
+冊立 > sakuritsu\ ;
+島風 > shimakaze\ ;
+弱卒 > jakusotsu\ ;
+僕達 > bokutachi\ ;
+髭面 > higedzura\ ;
+張力 > chouryoku\ ;
+軟質 > nanshitsu\ ;
+菱形 > hishigata\ ;
+進捗 > shinchoku\ ;
+僻説 > hekisetsu\ ;
+茶畑 > chabatake\ ;
+横綱 > yokodzuna\ ;
+兎耳 > usagimimi\ ;
+出欠 > shukketsu\ ;
+島陰 > shimakage\ ;
+矢印 > yajirushi\ ;
+着服 > chakufuku\ ;
+建坪 > tatetsubo\ ;
+副尺 > fukushaku\ ;
+初春 > hatsuharu\ ;
+共立 > kyouritsu\ ;
+花菱 > hanabishi\ ;
+延坪 > nobetsubo\ ;
+極量 > kyokuryou\ ;
+良識 > ryoushiki\ ;
+弟分 > otoutobun\ ;
+色調 > shikichou\ ;
+鳶口 > tobiguchi\ ;
+八福 > hachifuku\ ;
+色覚 > shikikaku\ ;
+石仏 > sekibutsu\ ;
+歳出 > saishutsu\ ;
+直流 > chokuryuu\ ;
+芍薬 > shakuyaku\ ;
+出札 > shussatsu\ ;
+割増 > warimashi\ ;
+芝草 > shibakusa\ ;
+真東 > mahigashi\ ;
+樸直 > bokuchoku\ ;
+剥奪 > hakudatsu\ ;
+幕末 > bakumatsu\ ;
+椎骨 > tsuikotsu\ ;
+正出 > seishutsu\ ;
+凶日 > kyoujitsu\ ;
+遊失 > yuushitsu\ ;
+車蝦 > kurumaebi\ ;
+初役 > hatsuyaku\ ;
+選出 > senshutsu\ ;
+逆心 > gyakushin\ ;
+迫持 > serimochi\ ;
+着床 > chakushou\ ;
+年弱 > toshiyowa\ ;
+山鶉 > yamauzura\ ;
+Ｗ杯 > daburuhai\ ;
+着席 > chakuseki\ ;
+辻札 > tsujifuda\ ;
+適切 > tekisetsu\ ;
+発病 > hatsubyou\ ;
+病識 > byoushiki\ ;
+創出 > soushutsu\ ;
+別室 > besshitsu\ ;
+年嵩 > toshikasa\ ;
+初孫 > hatsumago\ ;
+出御 > shutsugyo\ ;
+幽室 > yuushitsu\ ;
+白玉 > shiratama\ ;
+直撃 > chokugeki\ ;
+年寄 > toshiyori\ ;
+榎茸 > enokitake\ ;
+船虫 > funamushi\ ;
+白熱 > hakunetsu\ ;
+極薄 > kyokuhaku\ ;
+白熊 > shirokuma\ ;
+帆柱 > hobashira\ ;
+割付 > waritsuke\ ;
+初夢 > hatsuyume\ ;
+分室 > bunshitsu\ ;
+庶出 > shoshutsu\ ;
+入滅 > nyuumetsu\ ;
+割下 > warishita\ ;
+市松 > ichimatsu\ ;
+優男 > yasaotoko\ ;
+花町 > hanamachi\ ;
+轢殺 > rekisatsu\ ;
+癈疾 > haishitsu\ ;
+真実 > shinjitsu\ ;
+白滝 > shirataki\ ;
+速口 > hayakuchi\ ;
+進入 > shin''nyuu\ ;
+儲物 > moukemono\ ;
+腰高 > koshidaka\ ;
+橋桁 > hashigeta\ ;
+骨質 > kosshitsu\ ;
+腰骨 > koshibone\ ;
+修飾 > shuushoku\ ;
+白浪 > shiranami\ ;
+白浜 > shirahama\ ;
+艶種 > tsuyadane\ ;
+速力 > sokuryoku\ ;
+辻店 > tsujimise\ ;
+白波 > shiranami\ ;
+茶所 > chadokoro\ ;
+広口 > hirokuchi\ ;
+尺骨 > shakkotsu\ ;
+出塁 > shutsurui\ ;
+目庇 > mabisashi\ ;
+白水 > shiromizu\ ;
+色神 > shikishin\ ;
+入植 > nyuushoku\ ;
+直属 > chokuzoku\ ;
+初出 > shoshutsu\ ;
+凡失 > bonshitsu\ ;
+六月 > rokugatsu\ ;
+入札 > nyuusatsu\ ;
+送出 > soushutsu\ ;
+山道 > yamamichi\ ;
+退出 > taishutsu\ ;
+楽節 > gakusetsu\ ;
+常夏 > tokonatsu\ ;
+申達 > shintatsu\ ;
+若松 > wakamatsu\ ;
+局長 > kyokuchou\ ;
+鬼瓦 > onigawara\ ;
+帝室 > teishitsu\ ;
+床下 > yukashita\ ;
+着信 > chakushin\ ;
+白札 > shirofuda\ ;
+切入 > setsunyuu\ ;
+標札 > hyousatsu\ ;
+出動 > shutsudou\ ;
+迫力 > hakuryoku\ ;
+屑鉄 > kuzutetsu\ ;
+髪綱 > kamidzuna\ ;
+逐一 > chikuichi\ ;
+侵食 > shinshoku\ ;
+花氷 > hanagoori\ ;
+俄雨 > niwakaame\ ;
+膠質 > koushitsu\ ;
+茶室 > chashitsu\ ;
+白日 > hakujitsu\ ;
+侠骨 > kyoukotsu\ ;
+少食 > shoushoku\ ;
+巳年 > hebidoshi\ ;
+艶物 > tsuyamono\ ;
+小食 > shoushoku\ ;
+冷奴 > hiyayakko\ ;
+小頭 > kogashira\ ;
+屈辱 > kutsujoku\ ;
+骨膜 > kotsumaku\ ;
+町角 > machikado\ ;
+辻君 > tsujigimi\ ;
+省力 > shouryoku\ ;
+鯉幟 > koinobori\ ;
+赤鰯 > akaiwashi\ ;
+骨肉 > kotsuniku\ ;
+内室 > naishitsu\ ;
+川岸 > kawagishi\ ;
+幕下 > makushita\ ;
+目印 > mejirushi\ ;
+尻軽 > shirigaru\ ;
+男衆 > otokoshuu\ ;
+鰐口 > waniguchi\ ;
+信越 > shin''etsu\ ;
+俊逸 > shun''itsu\ ;
+属託 > shokutaku\ ;
+盲判 > mekuraban\ ;
+胸骨 > kyoukotsu\ ;
+寝食 > shinshoku\ ;
+色沢 > shikitaku\ ;
+六尺 > rokushaku\ ;
+辛口 > karakuchi\ ;
+色欲 > shikiyoku\ ;
+極熱 > gokunetsu\ ;
+跳虫 > tobimushi\ ;
+痛烈 > tsuuretsu\ ;
+臣節 > shinsetsu\ ;
+骨箱 > kotsubako\ ;
+皇室 > koushitsu\ ;
+俗説 > zokusetsu\ ;
+儲役 > moukeyaku\ ;
+供述 > kyoujutsu\ ;
+峻烈 > shunretsu\ ;
+男腹 > otokobara\ ;
+極流 > kyokuryuu\ ;
+略章 > ryakushou\ ;
+再出 > saishutsu\ ;
+川口 > kawaguchi\ ;
+良日 > ryoujitsu\ ;
+略称 > ryakushou\ ;
+左前 > hidarimae\ ;
+対質 > taishitsu\ ;
+小説 > shousetsu\ ;
+左党 > hidaritou\ ;
+脇道 > wakimichi\ ;
+棹秤 > saobakari\ ;
+桜貝 > sakuragai\ ;
+病没 > byoubotsu\ ;
+共力 > kyouryoku\ ;
+船橋 > funabashi\ ;
+髪油 > kamiabura\ ;
+病歿 > byoubotsu\ ;
+侵蝕 > shinshoku\ ;
+病欠 > byouketsu\ ;
+八切 > yatsugiri\ ;
+入力 > nyuuryoku\ ;
+町筋 > machisuji\ ;
+色慾 > shikiyoku\ ;
+脂足 > aburaashi\ ;
+町立 > chouritsu\ ;
+脚註 > kyakuchuu\ ;
+極月 > gokugetsu\ ;
+脂質 > shishitsu\ ;
+舟橋 > funahashi\ ;
+供血 > kyouketsu\ ;
+川下 > kawashimo\ ;
+実録 > jitsuroku\ ;
+畜生 > chikushou\ ;
+色弱 > shikijaku\ ;
+発出 > hasshutsu\ ;
+腰縄 > koshinawa\ ;
+生節 > namabushi\ ;
+就職 > shuushoku\ ;
+足腰 > ashikoshi\ ;
+入仏 > nyuubutsu\ ;
+入交 > irimajiri\ ;
+腰紐 > koshihimo\ ;
+修築 > shuuchiku\ ;
+肉食 > nikushoku\ ;
+信約 > shin''yaku\ ;
+脱落 > datsuraku\ ;
+体質 > taishitsu\ ;
+輩出 > haishutsu\ ;
+修祓 > shuufutsu\ ;
+学閥 > gakubatsu\ ;
+位負 > kuraimake\ ;
+苗代 > nawashiro\ ;
+山男 > yamaotoko\ ;
+桜草 > sakurasou\ ;
+客足 > kyakuashi\ ;
+属目 > shokumoku\ ;
+俗筆 > zokuhitsu\ ;
+小職 > shoushoku\ ;
+償却 > shoukyaku\ ;
+楽律 > gakuritsu\ ;
+桜色 > sakurairo\ ;
+小羊 > kohitsuji\ ;
+実質 > jisshitsu\ ;
+肘鉄 > hijitetsu\ ;
+賃餅 > chinmochi\ ;
+宝貝 > takaragai\ ;
+軽口 > karukuchi\ ;
+超脱 > choudatsu\ ;
+男物 > otokomono\ ;
+職長 > shokuchou\ ;
+仏顔 > hotokegao\ ;
+仏領 > futsuryou\ ;
+略歴 > ryakureki\ ;
+骨柄 > kotsugara\ ;
+赤色 > sekishoku\ ;
+小節 > shousetsu\ ;
+尻癖 > shirikuse\ ;
+膠漆 > koushitsu\ ;
+島影 > shimakage\ ;
+極小 > kyokushou\ ;
+俵物 > hyoumotsu\ ;
+生爪 > namadzume\ ;
+松風 > matsukaze\ ;
+超絶 > chouzetsu\ ;
+船室 > senshitsu\ ;
+腺熱 > sen''netsu\ ;
+束髪 > sokuhatsu\ ;
+転出 > tenshutsu\ ;
+脩竹 > shuuchiku\ ;
+島島 > shimajima\ ;
+略服 > ryakufuku\ ;
+島山 > shimayama\ ;
+鬱勃 > utsubotsu\ ;
+東雲 > shinonome\ ;
+生滅 > shoumetsu\ ;
+俗物 > zokubutsu\ ;
+脱硫 > datsuryuu\ ;
+脈絡 > myakuraku\ ;
+学識 > gakushiki\ ;
+侵略 > shinryaku\ ;
+学説 > gakusetsu\ ;
+職責 > shokuseki\ ;
+艶事 > tsuyagoto\ ;
+玉鴫 > tamashigi\ ;
+瓦版 > kawaraban\ ;
+傷口 > kizuguchi\ ;
+密約 > mitsuyaku\ ;
+学術 > gakujutsu\ ;
+軒下 > nokishita\ ;
+車代 > kurumadai\ ;
+借料 > shakuryou\ ;
+資質 > shishitsu\ ;
+人達 > hitotachi\ ;
+候文 > souroubun\ ;
+寺男 > teraotoko\ ;
+極北 > kyokuhoku\ ;
+脱獄 > datsugoku\ ;
+町方 > machikata\ ;
+痛切 > tsuusetsu\ ;
+高坏 > takatsuki\ ;
+貸賃 > kashichin\ ;
+倉敷 > kurashiki\ ;
+乞食 > kotsujiki\ ;
+伸縮 > shinshuku\ ;
+人質 > hitojichi\ ;
+朝食 > choushoku\ ;
+疵口 > kizuguchi\ ;
+峻別 > shunbetsu\ ;
+届書 > todokesho\ ;
+客筋 > kyakusuji\ ;
+服飾 > fukushoku\ ;
+傑出 > kesshutsu\ ;
+休職 > kyuushoku\ ;
+甲所 > kandokoro\ ;
+二道 > futamichi\ ;
+船主 > funanushi\ ;
+食通 > shokutsuu\ ;
+客種 > kyakudane\ ;
+賊虐 > zokugyaku\ ;
+乳鉢 > nyuubachi\ ;
+月額 > getsugaku\ ;
+月頃 > tsukigoro\ ;
+作男 > sakuotoko\ ;
+男役 > otokoyaku\ ;
+上鶲 > joubitaki\ ;
+腕枕 > udemakura\ ;
+赤熱 > sekinetsu\ ;
+舌先 > shitasaki\ ;
+腹持 > haramochi\ ;
+珍説 > chinsetsu\ ;
+付落 > tsukeochi\ ;
+腰掛 > koshikake\ ;
+久闊 > kyuukatsu\ ;
+密猟 > mitsuryou\ ;
+申年 > sarudoshi\ ;
+材質 > zaishitsu\ ;
+松蝉 > matsuzemi\ ;
+京表 > kyouomote\ ;
+脚注 > kyakuchuu\ ;
+梅暦 > umegoyomi\ ;
+作物 > sakumotsu\ ;
+賞罰 > shoubatsu\ ;
+子羊 > kohitsuji\ ;
+室町 > muromachi\ ;
+小曲 > shoukyoku\ ;
+検出 > kenshutsu\ ;
+俊抜 > shunbatsu\ ;
+密漁 > mitsuryou\ ;
+肉筆 > nikuhitsu\ ;
+腰弱 > koshiyowa\ ;
+胆玉 > kimottama\ ;
+松茸 > matsutake\ ;
+桜桃 > sakuranbo\ ;
+寂滅 > jakumetsu\ ;
+本質 > honshitsu\ ;
+仔羊 > kohitsuji\ ;
+産室 > sanshitsu\ ;
+腰布 > koshinuno\ ;
+腰巻 > koshimaki\ ;
+佃煮 > tsukudani\ ;
+侵掠 > shinryaku\ ;
+桁橋 > ketabashi\ ;
+朴訥 > bokutotsu\ ;
+食虫 > shokuchuu\ ;
+松脂 > matsuyani\ ;
+七難 > shichinan\ ;
+低湿 > teishitsu\ ;
+男坂 > otokozaka\ ;
+宿泊 > shukuhaku\ ;
+伯爵 > hakushaku\ ;
+梓弓 > azusayumi\ ;
+餅肌 > mochihada\ ;
+居室 > kyoshitsu\ ;
+木訥 > bokutotsu\ ;
+額際 > hitaigiwa\ ;
+留別 > ryuubetsu\ ;
+信実 > shinjitsu\ ;
+贈物 > okurimono\ ;
+駐日 > chuunichi\ ;
+柿渋 > kakishibu\ ;
+下金 > shitagane\ ;
+中越 > chuugoshi\ ;
+媒質 > baishitsu\ ;
+乾草 > hoshigusa\ ;
+琴爪 > kotodzume\ ;
+腰垣 > koshigaki\ ;
+係官 > kakarikan\ ;
+脈搏 > myakuhaku\ ;
+玉虫 > tamamushi\ ;
+生唾 > namatsuba\ ;
+食肉 > shokuniku\ ;
+松笠 > matsukasa\ ;
+脈拍 > myakuhaku\ ;
+七道 > shichidou\ ;
+申入 > moushiire\ ;
+客様 > kyakusama\ ;
+乳色 > nyuushoku\ ;
+曲調 > kyokuchou\ ;
+借主 > karinushi\ ;
+乾肉 > hoshiniku\ ;
+宿料 > shukuryou\ ;
+実業 > jitsugyou\ ;
+宿敵 > shukuteki\ ;
+七輪 > shichirin\ ;
+産出 > sanshutsu\ ;
+何日 > nan''nichi\ ;
+質点 > shitsuten\ ;
+脳室 > noushitsu\ ;
+山伏 > yamabushi\ ;
+実株 > jitsukabu\ ;
+侵奪 > shindatsu\ ;
+町中 > machinaka\ ;
+町並 > machinami\ ;
+上質 > joushitsu\ ;
+下貼 > shitabari\ ;
+食紅 > shokubeni\ ;
+侠客 > kyoukyaku\ ;
+更衣 > koromogae\ ;
+食糧 > shokuryou\ ;
+中表 > nakaomote\ ;
+小姑 > kojuutome\ ;
+栃木 > tochinoki\ ;
+脂性 > aburashou\ ;
+倉主 > kuranushi\ ;
+七賢 > shichiken\ ;
+尻取 > shiritori\ ;
+格式 > kakushiki\ ;
+昼鳶 > hirutonbi\ ;
+亮直 > ryouchoku\ ;
+暢達 > choutatsu\ ;
+腰元 > koshimoto\ ;
+脇差 > wakizashi\ ;
+杉箸 > sugibashi\ ;
+付焼 > tsukeyaki\ ;
+学殖 > gakushoku\ ;
+株式 > kabushiki\ ;
+柏槙 > byakushin\ ;
+独酌 > dokushaku\ ;
+寅年 > toradoshi\ ;
+質権 > shichiken\ ;
+小咄 > kobanashi\ ;
+丸腰 > marugoshi\ ;
+昼飯 > hirumeshi\ ;
+伐木 > batsuboku\ ;
+俊傑 > shunketsu\ ;
+職歴 > shokureki\ ;
+之繞 > shin''nyuu\ ;
+架橋 > kakehashi\ ;
+柏木 > kashiwagi\ ;
+仮橋 > karibashi\ ;
+豆粒 > mametsubu\ ;
+休日 > kyuujitsu\ ;
+中腰 > chuugoshi\ ;
+上薬 > uwagusuri\ ;
+密室 > misshitsu\ ;
+玉章 > gyokushou\ ;
+侵入 > shin''nyuu\ ;
+宿将 > shukushou\ ;
+将卒 > shousotsu\ ;
+両舌 > ryouzetsu\ ;
+職業 > shokugyou\ ;
+導出 > doushutsu\ ;
+宿学 > shukugaku\ ;
+小冊 > shousatsu\ ;
+両脚 > ryoukyaku\ ;
+脱出 > dasshutsu\ ;
+客席 > kyakuseki\ ;
+下草 > shitakusa\ ;
+射出 > shashutsu\ ;
+暦術 > rekijutsu\ ;
+朴直 > bokuchoku\ ;
+赤土 > akatsuchi\ ;
+脅喝 > kyoukatsu\ ;
+中絶 > chuuzetsu\ ;
+下腹 > shitabara\ ;
+脱俗 > datsuzoku\ ;
+柏手 > kashiwade\ ;
+乾物 > hoshimono\ ;
+実学 > jitsugaku\ ;
+桟俵 > sandawara\ ;
+猟色 > ryoushoku\ ;
+一脈 > ichimyaku\ ;
+赤口 > sekiguchi\ ;
+中立 > chuuritsu\ ;
+職掌 > shokushou\ ;
+室外 > shitsugai\ ;
+寒卵 > kantamago\ ;
+島々 > shimajima\ ;
+質感 > shitsukan\ ;
+格別 > kakubetsu\ ;
+核力 > kakuryoku\ ;
+両端 > ryouhashi\ ;
+両立 > ryouritsu\ ;
+耐湿 > taishitsu\ ;
+下紐 > shitahimo\ ;
+今日 > kon''nichi\ ;
+早飯 > hayameshi\ ;
+貸方 > kashikata\ ;
+乾湿 > kanshitsu\ ;
+額縁 > gakubuchi\ ;
+一粒 > hitotsubu\ ;
+嫡流 > chakuryuu\ ;
+曲目 > kyokumoku\ ;
+食欲 > shokuyoku\ ;
+柴垣 > shibagaki\ ;
+亮月 > ryougetsu\ ;
+下穿 > shitabaki\ ;
+一節 > hitofushi\ ;
+革靴 > kawagutsu\ ;
+中略 > chuuryaku\ ;
+状袋 > joubukuro\ ;
+物量 > butsuryou\ ;
+末流 > matsuryuu\ ;
+株主 > kabunushi\ ;
+下石 > shitaishi\ ;
+飯時 > meshidoki\ ;
+作付 > sakudzuke\ ;
+上瞼 > uwamabuta\ ;
+伯叔 > hakushuku\ ;
+爪革 > tsumakawa\ ;
+室内 > shitsunai\ ;
+宿主 > yadonushi\ ;
+久濶 > kyuukatsu\ ;
+二月 > futatsuki\ ;
+日録 > nichiroku\ ;
+一瞥 > ichibetsu\ ;
+令室 > reishitsu\ ;
+体中 > karadajuu\ ;
+仲好 > nakayoshi\ ;
+食料 > shokuryou\ ;
+調髪 > chouhatsu\ ;
+物質 > busshitsu\ ;
+早道 > hayamichi\ ;
+新雪 > shinsetsu\ ;
+片道 > katamichi\ ;
+特設 > tokusetsu\ ;
+仏学 > butsugaku\ ;
+露霜 > tsuyujimo\ ;
+札束 > satsutaba\ ;
+夏鳥 > natsudori\ ;
+質問 > shitsumon\ ;
+独立 > dokuritsu\ ;
+月次 > tsukinami\ ;
+謬説 > byuusetsu\ ;
+学卒 > gakusotsu\ ;
+曲流 > kyokuryuu\ ;
+食慾 > shokuyoku\ ;
+一物 > ichimotsu\ ;
+奴輩 > yatsubara\ ;
+学力 > gakuryoku\ ;
+亮察 > ryousatsu\ ;
+中次 > nakatsugi\ ;
+質券 > shichiken\ ;
+孤児 > minashigo\ ;
+旧識 > kyuushiki\ ;
+人妻 > hitodzuma\ ;
+新釈 > shinshaku\ ;
+日諾 > nichidaku\ ;
+旧説 > kyuusetsu\ ;
+股下 > matashita\ ;
+珍客 > chinkyaku\ ;
+外面 > sotodzura\ ;
+春色 > shunshoku\ ;
+翌月 > yokugetsu\ ;
+聴力 > chouryoku\ ;
+京女 > kyouon''na\ ;
+串柿 > kushigaki\ ;
+九折 > kyuusetsu\ ;
+翌日 > yokujitsu\ ;
+斟酌 > shinshaku\ ;
+両極 > ryoukyoku\ ;
+仏名 > butsumyou\ ;
+特色 > tokushoku\ ;
+亡失 > boushitsu\ ;
+食客 > shokkyaku\ ;
+父親 > chichioya\ ;
+仮住 > karizumai\ ;
+了察 > ryousatsu\ ;
+雪靴 > yukigutsu\ ;
+現出 > genshutsu\ ;
+仏力 > butsuriki\ ;
+調達 > choutatsu\ ;
+下様 > shimozama\ ;
+繰越 > kurikoshi\ ;
+物腰 > monogoshi\ ;
+三椏 > mitsumata\ ;
+両日 > ryoujitsu\ ;
+松原 > matsubara\ ;
+賃借 > chinshaku\ ;
+熟食 > jukushoku\ ;
+新説 > shinsetsu\ ;
+付人 > tsukebito\ ;
+新訳 > shin''yaku\ ;
+新設 > shinsetsu\ ;
+玉将 > gyokushou\ ;
+月影 > tsukikage\ ;
+月形 > tsukigata\ ;
+七曜 > shichiyou\ ;
+一月 > hitotsuki\ ;
+天質 > tenshitsu\ ;
+下敷 > shitajiki\ ;
+七星 > shichisei\ ;
+星空 > hoshizora\ ;
+特筆 > tokuhitsu\ ;
+一日 > tsuitachi\ ;
+人伝 > hitodzute\ ;
+狐火 > kitsunebi\ ;
+爆裂 > bakuretsu\ ;
+特立 > tokuritsu\ ;
+人付 > hitodzuki\ ;
+青萍 > aoukikusa\ ;
+失言 > shitsugen\ ;
+雪道 > yukimichi\ ;
+雑録 > zatsuroku\ ;
+女腹 > on''nabara\ ;
+食卓 > shokutaku\ ;
+熱量 > netsuryou\ ;
+雪辱 > setsujoku\ ;
+新薬 > shin''yaku\ ;
+頭株 > atamakabu\ ;
+失血 > shikketsu\ ;
+暦月 > rekigetsu\ ;
+変質 > henshitsu\ ;
+食出 > hamidashi\ ;
+夜話 > yobanashi\ ;
+一抹 > ichimatsu\ ;
+天袋 > tenbukuro\ ;
+靴紐 > kutsuhimo\ ;
+暦日 > rekijitsu\ ;
+詳述 > shoujutsu\ ;
+食傷 > shokushou\ ;
+特発 > tokuhatsu\ ;
+靴篦 > kutsubera\ ;
+下役 > shitayaku\ ;
+両岸 > ryougishi\ ;
+曲学 > kyokugaku\ ;
+熟達 > jukutatsu\ ;
+靴箆 > kutsubera\ ;
+丑年 > ushidoshi\ ;
+露草 > tsuyukusa\ ;
+評釈 > hyoushaku\ ;
+一律 > ichiritsu\ ;
+物療 > butsuryou\ ;
+風口 > kazaguchi\ ;
+夏蝉 > natsuzemi\ ;
+霞草 > kasumisou\ ;
+牧畜 > bokuchiku\ ;
+調色 > choushoku\ ;
+焼餅 > yakimochi\ ;
+末僚 > batsuryou\ ;
+註釈 > chuushaku\ ;
+詳説 > shousetsu\ ;
+新緑 > shinryoku\ ;
+失脚 > shikkyaku\ ;
+失職 > shisshoku\ ;
+新約 > shin''yaku\ ;
+夏菊 > natsugiku\ ;
+縞蛇 > shimahebi\ ;
+中哲 > chuutetsu\ ;
+訳述 > yakujutsu\ ;
+新築 > shinchiku\ ;
+夏草 > natsugusa\ ;
+玉串 > tamagushi\ ;
+中口 > nakaguchi\ ;
+女癖 > on''naguse\ ;
+姥桜 > ubazakura\ ;
+中卒 > chuusotsu\ ;
+下坂 > shimosaka\ ;
+風下 > kazashimo\ ;
+霞網 > kasumiami\ ;
+両口 > ryouguchi\ ;
+爪皮 > tsumakawa\ ;
+爆竹 > bakuchiku\ ;
+日独 > nichidoku\ ;
+旧物 > kyuubutsu\ ;
+獣偏 > kemonohen\ ;
+露程 > tsuyuhodo\ ;
+調節 > chousetsu\ ;
+頭字 > kashiraji\ ;
+獄卒 > gokusotsu\ ;
+給食 > kyuushoku\ ;
+且又 > katsumata\ ;
+月並 > tsukinami\ ;
+物流 > butsuryuu\ ;
+両凸 > ryoutotsu\ ;
+陳述 > chinjutsu\ ;
+新着 > shinchaku\ ;
+女物 > on''namono\ ;
+不印 > fujirushi\ ;
+書付 > kakitsuke\ ;
+詰草 > tsumekusa\ ;
+中位 > chuugurai\ ;
+熊蜂 > kumabachi\ ;
+教職 > kyoushoku\ ;
+失礼 > shitsurei\ ;
+七厘 > shichirin\ ;
+物欲 > butsuyoku\ ;
+一口 > hitokuchi\ ;
+擂鉢 > suribachi\ ;
+爆発 > bakuhatsu\ ;
+昨日 > sakujitsu\ ;
+縮約 > shukuyaku\ ;
+失着 > shitchaku\ ;
+一別 > ichibetsu\ ;
+一列 > ichiretsu\ ;
+下側 > shitagawa\ ;
+雀色 > suzumeiro\ ;
+一儲 > hitomouke\ ;
+族滅 > zokumetsu\ ;
+下作 > shitasaku\ ;
+調略 > chouryaku\ ;
+昔日 > sekijitsu\ ;
+断熱 > dan''netsu\ ;
+明日 > myounichi\ ;
+下下 > shimojimo\ ;
+敷石 > shikiishi\ ;
+特撮 > tokusatsu\ ;
+親閲 > shin''etsu\ ;
+願事 > negaigoto\ ;
+頻出 > hinshutsu\ ;
+網袋 > amibukuro\ ;
+料率 > ryouritsu\ ;
+角逐 > kakuchiku\ ;
+七三 > shichisan\ ;
+細面 > hosoomote\ ;
+集結 > shuuketsu\ ;
+西風 > nishikaze\ ;
+夏痩 > natsuyase\ ;
+物指 > monosashi\ ;
+星影 > hoshikage\ ;
+独力 > dokuryoku\ ;
+触診 > shokushin\ ;
+壺皿 > tsubozara\ ;
+罪人 > tsumibito\ ;
+物慾 > butsuyoku\ ;
+敷物 > shikimono\ ;
+雪男 > yukiotoko\ ;
+夏物 > natsumono\ ;
+統計 > baratsuki\ ;
+女方 > on''nagata\ ;
+新橋 > shinbashi\ ;
+熱病 > netsubyou\ ;
+電熱 > den''netsu\ ;
+星屑 > hoshikuzu\ ;
+隔絶 > kakuzetsu\ ;
+独仏 > dokufutsu\ ;
+妻室 > saishitsu\ ;
+物干 > monohoshi\ ;
+細道 > hosomichi\ ;
+糧食 > ryoushoku\ ;
+物差 > monosashi\ ;
+熱球 > netsukyuu\ ;
+縞物 > shimamono\ ;
+新枕 > niimakura\ ;
+給血 > kyuuketsu\ ;
+新札 > shinsatsu\ ;
+新月 > shingetsu\ ;
+新曲 > shinkyoku\ ;
+旧式 > kyuushiki\ ;
+詰物 > tsumemono\ ;
+烏貝 > karasugai\ ;
+靴底 > kutsuzoko\ ;
+旧年 > furutoshi\ ;
+星型 > hoshigata\ ;
+長髪 > chouhatsu\ ;
+女形 > on''nagata\ ;
+失望 > shitsubou\ ;
+焼結 > shouketsu\ ;
+塵紙 > chirigami\ ;
+失明 > shitsumei\ ;
+紙質 > shishitsu\ ;
+雪沓 > yukigutsu\ ;
+文月 > fumidzuki\ ;
+炭質 > tanshitsu\ ;
+誅殺 > chuusatsu\ ;
+大昔 > oomukashi\ ;
+長靴 > nagagutsu\ ;
+糸車 > itoguruma\ ;
+夜晒 > yozarashi\ ;
+夏服 > natsufuku\ ;
+靴墨 > kutsuzumi\ ;
+裸馬 > hadakauma\ ;
+妹分 > imoutobun\ ;
+日墨 > nichiboku\ ;
+新式 > shinshiki\ ;
+夏時 > natsudoki\ ;
+炸裂 > sakuretsu\ ;
+特別 > tokubetsu\ ;
+複雑 > fukuzatsu\ ;
+靴型 > kutsugata\ ;
+粒食 > ryuushoku\ ;
+結膜 > ketsumaku\ ;
+縞柄 > shimagara\ ;
+失恋 > shitsuren\ ;
+失念 > shitsunen\ ;
+雨曇 > amagumori\ ;
+評決 > hyouketsu\ ;
+調律 > chouritsu\ ;
+女坂 > on''nazaka\ ;
+続発 > zokuhatsu\ ;
+雑株 > zatsukabu\ ;
+諒察 > ryousatsu\ ;
+牛刺 > gyuusashi\ ;
+執著 > shuuchaku\ ;
+早口 > hayakuchi\ ;
+糖質 > toushitsu\ ;
+片口 > katakuchi\ ;
+細腰 > hosogoshi\ ;
+集札 > shuusatsu\ ;
+日出 > nisshutsu\ ;
+終結 > shuuketsu\ ;
+坪量 > tsuboryou\ ;
+奴凧 > yakkodako\ ;
+親筆 > shinpitsu\ ;
+綿油 > wataabura\ ;
+然然 > shikajika\ ;
+焦熱 > shounetsu\ ;
+夏山 > natsuyama\ ;
+爪切 > tsumekiri\ ;
+政所 > mandokoro\ ;
+教式 > kyoushiki\ ;
+爪先 > tsumasaki\ ;
+塩漬 > shiodzuke\ ;
+縮小 > shukushou\ ;
+下々 > shimojimo\ ;
+奔出 > honshutsu\ ;
+隔月 > kakugetsu\ ;
+撃発 > gekihatsu\ ;
+執筆 > shippitsu\ ;
+隔日 > kakujitsu\ ;
+新入 > shin''nyuu\ ;
+斥力 > sekiryoku\ ;
+終発 > shuuhatsu\ ;
+失命 > shitsumei\ ;
+坂道 > sakamichi\ ;
+失名 > shitsumei\ ;
+撲滅 > bokumetsu\ ;
+詳察 > shousatsu\ ;
+雪女 > yukion''na\ ;
+詳密 > shoumitsu\ ;
+雑学 > zatsugaku\ ;
+防湿 > boushitsu\ ;
+均質 > kinshitsu\ ;
+執着 > shuuchaku\ ;
+烏瓜 > karasuuri\ ;
+撲殺 > bokusatsu\ ;
+摘発 > tekihatsu\ ;
+夏向 > natsumuki\ ;
+捨鉢 > sutebachi\ ;
+地質 > chishitsu\ ;
+堅物 > katabutsu\ ;
+国鉄 > kokutetsu\ ;
+角樽 > tsunodaru\ ;
+撃滅 > gekimetsu\ ;
+糧秣 > ryoumatsu\ ;
+隣室 > rinshitsu\ ;
+診察 > shinsatsu\ ;
+外付 > sotodzuke\ ;
+夏作 > natsusaku\ ;
+照尺 > shoushaku\ ;
+雪兎 > yukiusagi\ ;
+終決 > shuuketsu\ ;
+襲爵 > shuushaku\ ;
+覆滅 > fukumetsu\ ;
+墨壷 > sumitsubo\ ;
+誅伐 > chuubatsu\ ;
+放出 > houshutsu\ ;
+終極 > shuukyoku\ ;
+裸線 > hadakasen\ ;
+覆没 > fukubotsu\ ;
+煩型 > urusagata\ ;
+詔勅 > shouchoku\ ;
+支出 > shishutsu\ ;
+綢密 > chuumitsu\ ;
+組曲 > kumikyoku\ ;
+終末 > shuumatsu\ ;
+終曲 > shuukyoku\ ;
+継室 > keishitsu\ ;
+国表 > kuniomote\ ;
+終日 > shuujitsu\ ;
+締切 > shimekiri\ ;
+土色 > tsuchiiro\ ;
+接続 > setsuzoku\ ;
+米粒 > kometsubu\ ;
+糟漬 > kasudzuke\ ;
+粛白 > shukuhaku\ ;
+街角 > machikado\ ;
+撫子 > nadeshiko\ ;
+糠油 > nukaabura\ ;
+長物 > choubutsu\ ;
+陰口 > kageguchi\ ;
+親心 > oyagokoro\ ;
+衆説 > shuusetsu\ ;
+絶妙 > zetsumyou\ ;
+糸桜 > itozakura\ ;
+陳列 > chinretsu\ ;
+糸柳 > itoyanagi\ ;
+執拗 > shitsuyou\ ;
+焼却 > shoukyaku\ ;
+激職 > gekishoku\ ;
+親密 > shinmitsu\ ;
+終局 > shuukyoku\ ;
+筒音 > tsutsuoto\ ;
+紋所 > mondokoro\ ;
+袋網 > fukuroami\ ;
+言伝 > kotodzute\ ;
+火柱 > hibashira\ ;
+閥族 > batsuzoku\ ;
+褶曲 > shuukyoku\ ;
+角叉 > tsunomata\ ;
+抜錨 > batsubyou\ ;
+国立 > kokuritsu\ ;
+激突 > gekitotsu\ ;
+門松 > kadomatsu\ ;
+抜道 > nukemichi\ ;
+長月 > nagatsuki\ ;
+血肉 > ketsuniku\ ;
+紛失 > funshitsu\ ;
+振粛 > shinshuku\ ;
+土牢 > tsuchirou\ ;
+激発 > gekihatsu\ ;
+米油 > komeabura\ ;
+筋道 > sujimichi\ ;
+篳篥 > hichiriki\ ;
+衝突 > shoutotsu\ ;
+親切 > shinsetsu\ ;
+米櫃 > komebitsu\ ;
+竜骨 > ryuukotsu\ ;
+結了 > ketsuryou\ ;
+托鉢 > takuhatsu\ ;
+閏年 > uruudoshi\ ;
+等質 > toushitsu\ ;
+嘱託 > shokutaku\ ;
+節約 > setsuyaku\ ;
+激烈 > gekiretsu\ ;
+蟇蛙 > hikigaeru\ ;
+蜀黍 > morokoshi\ ;
+血眼 > chimanako\ ;
+箸箱 > hashibako\ ;
+複式 > fukushiki\ ;
+西側 > nishigawa\ ;
+損失 > sonshitsu\ ;
+闖入 > chin''nyuu\ ;
+蜂鳥 > hachidori\ ;
+為体 > teitaraku\ ;
+挑発 > chouhatsu\ ;
+溶質 > youshitsu\ ;
+灰土 > haitsuchi\ ;
+裏扉 > uratobira\ ;
+搬出 > hanshutsu\ ;
+粛学 > shukugaku\ ;
+閾値 > shikiichi\ ;
+裏情 > uranasake\ ;
+蟇股 > kaerumata\ ;
+血煙 > chikemuri\ ;
+表決 > hyouketsu\ ;
+滑落 > katsuraku\ ;
+持物 > mochimono\ ;
+門口 > kadoguchi\ ;
+潜熱 > sen''netsu\ ;
+挟殺 > kyousatsu\ ;
+表札 > hyousatsu\ ;
+表書 > omotegaki\ ;
+糊代 > norishiro\ ;
+穴隙 > ketsugeki\ ;
+錯雑 > sakuzatsu\ ;
+圧密 > atsumitsu\ ;
+在室 > zaishitsu\ ;
+漬物 > tsukemono\ ;
+蜜豆 > mitsumame\ ;
+漂着 > hyouchaku\ ;
+提出 > teishutsu\ ;
+深靴 > fukagutsu\ ;
+節欲 > setsuyoku\ ;
+袋帯 > fukuroobi\ ;
+嘱目 > shokumoku\ ;
+穀食 > kokushoku\ ;
+積雪 > sekisetsu\ ;
+節榑 > fushikure\ ;
+血族 > ketsuzoku\ ;
+策略 > sakuryaku\ ;
+鍼術 > shinjutsu\ ;
+挑撥 > chouhatsu\ ;
+拓殖 > takushoku\ ;
+蛙跳 > kaerutobi\ ;
+排出 > haishutsu\ ;
+圧力 > atsuryoku\ ;
+竹箒 > takebouki\ ;
+鼻面 > hanadzura\ ;
+竿秤 > saobakari\ ;
+袖口 > sodeguchi\ ;
+捻出 > nenshutsu\ ;
+鋳鉄 > chuutetsu\ ;
+章節 > shousetsu\ ;
+啓蟄 > keichitsu\ ;
+涙雨 > namidaame\ ;
+篤実 > tokujitsu\ ;
+鎖糸 > kusariito\ ;
+禿鷲 > hagewashi\ ;
+血尿 > ketsunyou\ ;
+懲罰 > choubatsu\ ;
+国力 > kokuryoku\ ;
+国別 > kunibetsu\ ;
+抽斗 > hikidashi\ ;
+浸食 > shinshoku\ ;
+築山 > tsukiyama\ ;
+袖付 > sodetsuke\ ;
+扼殺 > yakusatsu\ ;
+血塗 > chimidoro\ ;
+麹黴 > koujikabi\ ;
+涙金 > namidakin\ ;
+血圧 > ketsuatsu\ ;
+潮境 > shiozakai\ ;
+稟質 > hinshitsu\ ;
+湿田 > shitsuden\ ;
+黒髪 > kokuhatsu\ ;
+打消 > uchikeshi\ ;
+表側 > omotegawa\ ;
+蛙股 > kaerumata\ ;
+鐘撞 > kanetsuki\ ;
+行列 > gyouretsu\ ;
+笑殺 > shousatsu\ ;
+才槌 > saidzuchi\ ;
+湿潤 > shitsujun\ ;
+街並 > machinami\ ;
+鼻衝 > hanatsuki\ ;
+渋紙 > shibugami\ ;
+品質 > hinshitsu\ ;
+鼠講 > nezumikou\ ;
+鏡板 > kagamiita\ ;
+空穴 > karaketsu\ ;
+麦飯 > mugimeshi\ ;
+鋼色 > haganeiro\ ;
+払暁 > futsugyou\ ;
+虫螻 > mushikera\ ;
+童歌 > warabeuta\ ;
+打擲 > chouchaku\ ;
+活量 > katsuryou\ ;
+拠出 > kyoshutsu\ ;
+噴出 > funshutsu\ ;
+渋皮 > shibukawa\ ;
+藁靴 > waragutsu\ ;
+算出 > sanshutsu\ ;
+鎖樋 > kusaritoi\ ;
+活軸 > katsujiku\ ;
+湿板 > shitsuban\ ;
+浮袋 > ukibukuro\ ;
+浸蝕 > shinshoku\ ;
+商略 > shouryaku\ ;
+活躍 > katsuyaku\ ;
+鉱質 > koushitsu\ ;
+虫腹 > mushibara\ ;
+鼠色 > nezumiiro\ ;
+泥靴 > dorogutsu\ ;
+涜職 > tokushoku\ ;
+筆墨 > hitsuboku\ ;
+針鰻 > hariunagi\ ;
+鼻綱 > hanadzuna\ ;
+筆塚 > fudedzuka\ ;
+滝壺 > takitsubo\ ;
+滝壷 > takitsubo\ ;
+告達 > kokutatsu\ ;
+漏出 > roushutsu\ ;
+筆圧 > hitsuatsu\ ;
+窮極 > kyuukyoku\ ;
+金鯱 > kinshachi\ ;
+禀質 > hinshitsu\ ;
+口髭 > kuchihige\ ;
+虫籠 > mushikago\ ;
+流血 > ryuuketsu\ ;
+憑物 > tsukimono\ ;
+積率 > sekiritsu\ ;
+鼻突 > hanatsuki\ ;
+釜飯 > kamameshi\ ;
+深爪 > fukadzume\ ;
+竹帛 > chikuhaku\ ;
+秋色 > shuushoku\ ;
+泡銭 > abukuzeni\ ;
+注釈 > chuushaku\ ;
+愁色 > shuushoku\ ;
+悪質 > akushitsu\ ;
+淋疾 > rinshitsu\ ;
+麗質 > reishitsu\ ;
+麻袋 > asabukuro\ ;
+滝口 > takiguchi\ ;
+鼠算 > nezumizan\ ;
+湿式 > shisshiki\ ;
+穀物 > kokumotsu\ ;
+泥道 > doromichi\ ;
+古靴 > furugutsu\ ;
+沈鬱 > chin''utsu\ ;
+君達 > kimitachi\ ;
+鷲鼻 > washibana\ ;
+折伏 > shakubuku\ ;
+鼠穴 > nezumiana\ ;
+滑台 > suberidai\ ;
+竜巻 > tatsumaki\ ;
+釣鐘 > tsurigane\ ;
+黒色 > kokushoku\ ;
+究極 > kyuukyoku\ ;
+満室 > manshitsu\ ;
+鷦鷯 > misosazai\ ;
+端女 > hashitame\ ;
+釣針 > tsuribari\ ;
+金鎖 > kingusari\ ;
+藤蔓 > fujidzuru\ ;
+鉛色 > namariiro\ ;
+渋柿 > shibugaki\ ;
+吸血 > kyuuketsu\ ;
+古鉄 > furutetsu\ ;
+海神 > watatsumi\ ;
+鈴虫 > suzumushi\ ;
+同質 > doushitsu\ ;
+口金 > kuchigane\ ;
+突撃 > totsugeki\ ;
+鷓鴣 > yamauzura\ ;
+黒縁 > kurobuchi\ ;
+鎮圧 > chin''atsu\ ;
+喪失 > soushitsu\ ;
+種油 > taneabura\ ;
+唐櫃 > karabitsu\ ;
+口軽 > kuchigaru\ ;
+窮屈 > kyuukutsu\ ;
+黒竹 > kurochiku\ ;
+友達 > tomodachi\ ;
+品物 > shinamono\ ;
+竹光 > takemitsu\ ;
+藁苞 > waradzuto\ ;
+湿原 > shitsugen\ ;
+神色 > shinshoku\ ;
+唐松 > karamatsu\ ;
+神職 > shinshoku\ ;
+口許 > kuchimoto\ ;
+蚊柱 > kabashira\ ;
+竹串 > takegushi\ ;
+消滅 > shoumetsu\ ;
+針術 > shinjutsu\ ;
+黒白 > kokubyaku\ ;
+神罰 > shinbatsu\ ;
+油蝉 > aburazemi\ ;
+性質 > seishitsu\ ;
+取説 > torisetsu\ ;
+氷雪 > hyousetsu\ ;
+蛸壼 > takotsubo\ ;
+蛸壷 > takotsubo\ ;
+湧出 > youshutsu\ ;
+空室 > kuushitsu\ ;
+錘形 > tsumugata\ ;
+憩室 > keishitsu\ ;
+急設 > kyuusetsu\ ;
+金蔓 > kanedzuru\ ;
+消極 > shoukyoku\ ;
+釣船 > tsuribune\ ;
+氷釈 > hyoushaku\ ;
+鉢物 > hachimono\ ;
+浚渫 > shunsetsu\ ;
+淑徳 > shukutoku\ ;
+祝福 > shukufuku\ ;
+没落 > botsuraku\ ;
+窓口 > madoguchi\ ;
+告発 > kokuhatsu\ ;
+品柄 > shinagara\ ;
+悪疾 > akushitsu\ ;
+吸着 > kyuuchaku\ ;
+酌量 > shakuryou\ ;
+口脇 > kuchiwaki\ ;
+確説 > kakusetsu\ ;
+薄緑 > usumidori\ ;
+品数 > shinakazu\ ;
+鹿皮 > shikagawa\ ;
+蛙又 > kaerumata\ ;
+黙殺 > mokusatsu\ ;
+恐縮 > kyoushuku\ ;
+蚕室 > sanshitsu\ ;
+突出 > tosshutsu\ ;
+都風 > miyakofuu\ ;
+油糟 > aburakasu\ ;
+水質 > suishitsu\ ;
+突入 > totsunyuu\ ;
+油粕 > aburakasu\ ;
+稠密 > choumitsu\ ;
+黒樫 > kurogashi\ ;
+活歴 > katsureki\ ;
+口紅 > kuchibeni\ ;
+秋日 > shuujitsu\ ;
+右端 > migihashi\ ;
+薬瓶 > kusuribin\ ;
+哲学 > tetsugaku\ ;
+鉄渋 > kanashibu\ ;
+収縮 > shuushuku\ ;
+忌詞 > imikotoba\ ;
+台秤 > daibakari\ ;
+海扇 > hotategai\ ;
+必読 > hitsudoku\ ;
+博識 > hakushiki\ ;
+黒松 > kuromatsu\ ;
+〆切 > shimekiri\ ;
+卓識 > takushiki\ ;
+薬物 > yakubutsu\ ;
+深切 > shinsetsu\ ;
+硬質 > koushitsu\ ;
+氷蝕 > hyoushoku\ ;
+卓説 > takusetsu\ ;
+黒星 > kuroboshi\ ;
+秀抜 > shuubatsu\ ;
+心血 > shinketsu\ ;
+水虫 > mizumushi\ ;
+蔓草 > tsurukusa\ ;
+強飯 > kowameshi\ ;
+票決 > hyouketsu\ ;
+葛餅 > kuzumochi\ ;
+鶉豆 > uzuramame\ ;
+金盥 > kanadarai\ ;
+矯飾 > kyoushoku\ ;
+口癖 > kuchiguse\ ;
+石頭 > ishiatama\ ;
+鳥黐 > torimochi\ ;
+涙声 > namidagoe\ ;
+落髪 > rakuhatsu\ ;
+勅額 > chokugaku\ ;
+卵色 > tamagoiro\ ;
+稲光 > inabikari\ ;
+収着 > shuuchaku\ ;
+消失 > soushitsu\ ;
+殿達 > tonotachi\ ;
+求職 > kyuushoku\ ;
+落飾 > rakushoku\ ;
+沈着 > chinchaku\ ;
+薬殺 > yakusatsu\ ;
+祥月 > shoutsuki\ ;
+私室 > shishitsu\ ;
+形質 > keishitsu\ ;
+収率 > shuuritsu\ ;
+神曲 > shinkyoku\ ;
+確立 > kakuritsu\ ;
+占者 > uranaisha\ ;
+品品 > shinajina\ ;
+氷結 > hyouketsu\ ;
+忠節 > chuusetsu\ ;
+鉢巻 > hachimaki\ ;
+咄家 > hanashika\ ;
+銷却 > shoukyaku\ ;
+消却 > shoukyaku\ ;
+矍鑠 > kakushaku\ ;
+復職 > fukushoku\ ;
+毒虫 > dokumushi\ ;
+卓絶 > takuzetsu\ ;
+取消 > torikeshi\ ;
+周密 > shuumitsu\ ;
+副食 > fukushoku\ ;
+蒟蒻 > kon''nyaku\ ;
+各月 > kakutsuki\ ;
+段袋 > danbukuro\ ;
+浸入 > shin''nyuu\ ;
+収没 > shuubotsu\ ;
+鉄屑 > tetsukuzu\ ;
+卓筆 > takuhitsu\ ;
+確率 > kakuritsu\ ;
+取次 > toritsugi\ ;
+卓立 > takuritsu\ ;
+神式 > shinshiki\ ;
+正道 > masamichi\ ;
+沈没 > chinbotsu\ ;
+毒舌 > dokuzetsu\ ;
+磨汁 > togishiru\ ;
+役職 > yakushoku\ ;
+洋室 > youshitsu\ ;
+碧玉 > hekigyoku\ ;
+歯質 > shishitsu\ ;
+酷熱 > kokunetsu\ ;
+蔵浚 > kurazarae\ ;
+恋敵 > koigataki\ ;
+口早 > kuchibaya\ ;
+汁物 > shirumono\ ;
+酷烈 > kokuretsu\ ;
+蓄積 > chikuseki\ ;
+弱虫 > yowamushi\ ;
+徴発 > chouhatsu\ ;
+忠烈 > chuuretsu\ ;
+惜別 > sekibetsu\ ;
+活劇 > katsugeki\ ;
+台所 > daidokoro\ ;
+後程 > nochihodo\ ;
+反日 > han''nichi\ ;
+弓術 > kyuujutsu\ ;
+遠近 > ochikochi\ ;
+力説 > rikisetsu\ ;
+鴬色 > uguisuiro\ ;
+博物 > hakubutsu\ ;
+単物 > hitoemono\ ;
+毒筆 > dokuhitsu\ ;
+呑口 > nomiguchi\ ;
+命乞 > inochigoi\ ;
+同室 > doushitsu\ ;
+恋心 > koigokoro\ ;
+悪口 > waruguchi\ ;
+初雪 > hatsuyuki\ ;
+弱腰 > yowagoshi\ ;
+逆鞘 > gyakuzaya\ ;
+年頃 > toshigoro\ ;
+着陸 > chakuriku\ ;
+告別 > kokubetsu\ ;
+水油 > mizuabura\ ;
+氷水 > koorimizu\ ;
+呈出 > teishutsu\ ;
+前輿 > sakigoshi\ ;
+号室 > goushitsu\ ;
+河岸 > kawagishi\ ;
+強縮 > kyoushuku\ ;
+出願 > shutsugan\ ;
+出題 > shutsudai\ ;
+恐察 > kyousatsu\ ;
+鱗雲 > urokogumo\ ;
+鴃舌 > gekizetsu\ ;
+神勅 > shinchoku\ ;
+祝勝 > shukushou\ ;
+通釈 > tsuushaku\ ;
+砂粒 > sunatsubu\ ;
+速達 > sokutatsu\ ;
+出陣 > shutsujin\ ;
+通達 > tsuutatsu\ ;
+初釜 > hatsugama\ ;
+出門 > shutsumon\ ;
+釣堀 > tsuribori\ ;
+近頃 > chikagoro\ ;
+鳶職 > tobishoku\ ;
+石筆 > sekihitsu\ ;
+石竹 > sekichiku\ ;
+引綱 > hikidzuna\ ;
+神仏 > shinbutsu\ ;
+短筒 > tandzutsu\ ;
+毒物 > dokubutsu\ ;
+即日 > sokujitsu\ ;
+逃道 > nigemichi\ ;
+神主 > kan''nushi\ ;
+合印 > aijirushi\ ;
+卒業 > sotsugyou\ ;
+勝着 > shouchaku\ ;
+吐出 > toshutsu\ ;
+金型 > kanagata\ ;
+石神 > shakujin\ ;
+名刹 > meisatsu\ ;
+弾着 > danchaku\ ;
+落籍 > rakuseki\ ;
+矢筒 > yadzutsu\ ;
+心服 > shinpuku\ ;
+逆転 > gyakuten\ ;
+合力 > gouryoku\ ;
+薙刀 > naginata\ ;
+同列 > douretsu\ ;
+直面 > chokumen\ ;
+復業 > fukugyou\ ;
+薄口 > usukuchi\ ;
+草食 > soushoku\ ;
+常闇 > tokoyami\ ;
+合冊 > gousatsu\ ;
+剥落 > hakuraku\ ;
+茶髪 > chapatsu\ ;
+速読 > sokudoku\ ;
+厳密 > genmitsu\ ;
+出郷 > shukkyou\ ;
+厚底 > atsuzoko\ ;
+引窓 > hikimado\ ;
+分轄 > bunkatsu\ ;
+通読 > tsuudoku\ ;
+遜色 > sonshoku\ ;
+追跡 > tsuiseki\ ;
+勲爵 > kunshaku\ ;
+通訳 > tsuuyaku\ ;
+只只 > tadatada\ ;
+友垣 > tomogaki\ ;
+半月 > hantsuki\ ;
+真迹 > shinseki\ ;
+吉例 > kitsurei\ ;
+近鉄 > kintetsu\ ;
+茶飯 > chameshi\ ;
+別言 > betsugen\ ;
+殖産 > shokusan\ ;
+金口 > kinguchi\ ;
+造血 > zouketsu\ ;
+鳥籠 > torikago\ ;
+勃発 > boppatsu\ ;
+建築 > kenchiku\ ;
+出身 > shusshin\ ;
+十月 > juugatsu\ ;
+口占 > kuchiura\ ;
+正立 > seiritsu\ ;
+鯨骨 > geikotsu\ ;
+求心 > kyuushin\ ;
+相鎚 > aidzuchi\ ;
+眼識 > ganshiki\ ;
+心拍 > shinpaku\ ;
+彼此 > karekore\ ;
+歯磨 > hamigaki\ ;
+落石 > rakuseki\ ;
+帝闕 > teiketsu\ ;
+内鰐 > uchiwani\ ;
+真蹟 > shinseki\ ;
+古創 > furukizu\ ;
+鴨猟 > kamoryou\ ;
+没却 > bokkyaku\ ;
+金力 > kinryoku\ ;
+右側 > migigawa\ ;
+出超 > shutchou\ ;
+口前 > kuchimae\ ;
+刻薄 > kokuhaku\ ;
+真跡 > shinseki\ ;
+水性 > mizushou\ ;
+広袖 > hirosode\ ;
+重力 > juuryoku\ ;
+相鉄 > soutetsu\ ;
+荷車 > niguruma\ ;
+動物 > doubutsu\ ;
+知略 > chiryaku\ ;
+目録 > mokuroku\ ;
+切論 > setsuron\ ;
+凶賊 > kyouzoku\ ;
+着装 > chakusou\ ;
+遅脈 > chimyaku\ ;
+水引 > mizuhiki\ ;
+橈骨 > toukotsu\ ;
+殲滅 > senmetsu\ ;
+古傷 > furukizu\ ;
+冠雪 > kansetsu\ ;
+北極 > hokkyoku\ ;
+幻術 > genjutsu\ ;
+氷床 > hyoushou\ ;
+劃策 > kakusaku\ ;
+即席 > sokuseki\ ;
+又又 > matamata\ ;
+水底 > minasoko\ ;
+直配 > chokuhai\ ;
+切言 > setsugen\ ;
+急告 > kyuukoku\ ;
+釈典 > shakuten\ ;
+毫末 > goumatsu\ ;
+半折 > hansetsu\ ;
+平袖 > hirasode\ ;
+鯛飯 > taimeshi\ ;
+切要 > setsuyou\ ;
+巻雲 > makigumo\ ;
+残物 > zanbutsu\ ;
+態々 > wazawaza\ ;
+劫略 > gouryaku\ ;
+反別 > tanbetsu\ ;
+正直 > shoujiki\ ;
+効率 > kouritsu\ ;
+只事 > tadagoto\ ;
+碩学 > sekigaku\ ;
+水嵩 > mizukasa\ ;
+直送 > chokusou\ ;
+分裂 > bunretsu\ ;
+役柄 > yakugara\ ;
+凌辱 > ryoujoku\ ;
+律文 > ritsubun\ ;
+程々 > hodohodo\ ;
+収入 > shuunyuu\ ;
+若鶏 > wakadori\ ;
+沈勇 > chin''yuu\ ;
+双六 > sugoroku\ ;
+廃絶 > haizetsu\ ;
+道糸 > michiito\ ;
+創立 > souritsu\ ;
+協心 > kyoushin\ ;
+北朝 > hokuchou\ ;
+勇烈 > yuuretsu\ ;
+性別 > seibetsu\ ;
+勃然 > botsuzen\ ;
+単式 > tanshiki\ ;
+参列 > sanretsu\ ;
+気心 > kigokoro\ ;
+川風 > kawakaze\ ;
+刀術 > toujutsu\ ;
+匡救 > kyoukyuu\ ;
+死物 > shibutsu\ ;
+刳舟 > kuribune\ ;
+彼是 > karekore\ ;
+分蝕 > bunshoku\ ;
+白鳥 > hakuchou\ ;
+兵食 > heishoku\ ;
+殿様 > tonosama\ ;
+参入 > san''nyuu\ ;
+受付 > uketsuke\ ;
+単帯 > hitoeobi\ ;
+矯激 > kyougeki\ ;
+怪傑 > kaiketsu\ ;
+刺股 > sasumata\ ;
+汲取 > kumitori\ ;
+砂浜 > sunahama\ ;
+達筆 > tappitsu\ ;
+割礼 > katsurei\ ;
+毎月 > maitsuki\ ;
+升形 > masugata\ ;
+川霧 > kawagiri\ ;
+劇的 > gekiteki\ ;
+分蘖 > bunketsu\ ;
+叔世 > shukusei\ ;
+兀鷹 > hagetaka\ ;
+勘決 > kanketsu\ ;
+即妙 > sokumyou\ ;
+剣突 > kentsuku\ ;
+必定 > hitsujou\ ;
+急信 > kyuushin\ ;
+前約 > zen''yaku\ ;
+劇痛 > gekitsuu\ ;
+午年 > umadoshi\ ;
+平落 > hiraochi\ ;
+硬式 > koushiki\ ;
+常識 > joushiki\ ;
+心学 > shingaku\ ;
+毎日 > mainichi\ ;
+白骨 > hakkotsu\ ;
+升席 > masuseki\ ;
+横風 > yokokaze\ ;
+急伸 > kyuushin\ ;
+鰐足 > waniashi\ ;
+遅筆 > chihitsu\ ;
+母方 > hahakata\ ;
+氷壁 > hyouheki\ ;
+瞞着 > manchaku\ ;
+辛辛 > karagara\ ;
+相識 > soushiki\ ;
+菜箸 > saibashi\ ;
+週給 > shuukyuu\ ;
+八面 > hachimen\ ;
+博学 > hakugaku\ ;
+殖民 > shokumin\ ;
+進級 > shinkyuu\ ;
+前節 > zensetsu\ ;
+得心 > tokushin\ ;
+着船 > chakusen\ ;
+引潮 > hikishio\ ;
+常設 > jousetsu\ ;
+得得 > tokutoku\ ;
+落潮 > rakuchou\ ;
+弱毒 > jakudoku\ ;
+厥冷 > ketsurei\ ;
+蔵元 > kuramoto\ ;
+建物 > tatemono\ ;
+死滅 > shimetsu\ ;
+勇決 > yuuketsu\ ;
+先高 > sakidaka\ ;
+発駅 > hatsueki\ ;
+退色 > taishoku\ ;
+気室 > kishitsu\ ;
+円錐 > marugiri\ ;
+勝楽 > shouraku\ ;
+兎馬 > usagiuma\ ;
+欠礼 > ketsurei\ ;
+当月 > tougetsu\ ;
+千島 > chishima\ ;
+横雲 > yokogumo\ ;
+徐徐 > sorosoro\ ;
+元高 > motodaka\ ;
+師説 > shisetsu\ ;
+包摂 > housetsu\ ;
+殿方 > tonogata\ ;
+民宿 > minshuku\ ;
+連結 > renketsu\ ;
+直言 > chokugen\ ;
+彎月 > wangetsu\ ;
+巡錫 > junshaku\ ;
+彎曲 > wankyoku\ ;
+直角 > chokkaku\ ;
+廉直 > renchoku\ ;
+直覚 > chokkaku\ ;
+直視 > chokushi\ ;
+死活 > shikatsu\ ;
+心境 > shinkyou\ ;
+平脈 > heimyaku\ ;
+当日 > toujitsu\ ;
+復学 > fukugaku\ ;
+入閣 > nyuukaku\ ;
+横長 > yokonaga\ ;
+死没 > shibotsu\ ;
+包括 > houkatsu\ ;
+退職 > taishoku\ ;
+忠告 > chuukoku\ ;
+巻軸 > makijiku\ ;
+百雷 > hyakurai\ ;
+百難 > hyakunan\ ;
+出芽 > shutsuga\ ;
+菅笠 > sugegasa\ ;
+剛直 > gouchoku\ ;
+加湿 > kashitsu\ ;
+発電 > hatsuden\ ;
+分脈 > bunmyaku\ ;
+監訳 > kan''yaku\ ;
+式法 > shikihou\ ;
+遅着 > chichaku\ ;
+党閥 > toubatsu\ ;
+別納 > betsunou\ ;
+刑罰 > keibatsu\ ;
+内達 > naitatsu\ ;
+死歿 > shibotsu\ ;
+心嚢 > shin''nou\ ;
+役得 > yakutoku\ ;
+連立 > renritsu\ ;
+郷愁 > kyoushuu\ ;
+彷彿 > houfutsu\ ;
+庭石 > niwaishi\ ;
+切者 > kiremono\ ;
+遅発 > chihatsu\ ;
+元鞘 > motosaya\ ;
+忘却 > boukyaku\ ;
+歴歴 > rekireki\ ;
+確信 > kakushin\ ;
+石柱 > sekichuu\ ;
+欠番 > ketsuban\ ;
+彰徳 > shoutoku\ ;
+鱈腹 > tarafuku\ ;
+割物 > waremono\ ;
+幕臣 > bakushin\ ;
+入鋏 > nyuukyou\ ;
+軽鴨 > karugamo\ ;
+弯曲 > wankyoku\ ;
+念仏 > nenbutsu\ ;
+菊石 > kikuishi\ ;
+冷血 > reiketsu\ ;
+平絹 > hiraginu\ ;
+酒呑 > sakenomi\ ;
+葉桜 > hazakura\ ;
+着米 > chakubei\ ;
+強敵 > kyouteki\ ;
+求償 > kyuushou\ ;
+通称 > tsuushou\ ;
+忠僕 > chuuboku\ ;
+水力 > suiryoku\ ;
+残月 > zangetsu\ ;
+勅書 > chokusho\ ;
+共通 > kyoutsuu\ ;
+前略 > zenryaku\ ;
+殊更 > kotosara\ ;
+弦月 > gengetsu\ ;
+目薬 > megusuri\ ;
+協商 > kyoushou\ ;
+百錬 > hyakuren\ ;
+公達 > koutatsu\ ;
+弱敵 > jakuteki\ ;
+逆算 > gyakusan\ ;
+黙々 > mokumoku\ ;
+八達 > hattatsu\ ;
+八道 > hachidou\ ;
+北山 > kitayama\ ;
+剿滅 > soumetsu\ ;
+廃物 > haibutsu\ ;
+公述 > koujutsu\ ;
+忠信 > chuushin\ ;
+皮質 > hishitsu\ ;
+石文 > ishibumi\ ;
+形式 > keishiki\ ;
+凋落 > chouraku\ ;
+勅旨 > chokushi\ ;
+卸値 > oroshine\ ;
+短日 > tanjitsu\ ;
+水先 > mizusaki\ ;
+巷説 > kousetsu\ ;
+共軛 > kyouyaku\ ;
+黒々 > kuroguro\ ;
+剥焼 > sukiyaki\ ;
+逢着 > houchaku\ ;
+廃熱 > hainetsu\ ;
+役宅 > yakutaku\ ;
+到着 > touchaku\ ;
+茹蛸 > yudedako\ ;
+強振 > kyoushin\ ;
+再説 > saisetsu\ ;
+連発 > renpatsu\ ;
+復唱 > fukushou\ ;
+知日 > chinichi\ ;
+徴収 > choushuu\ ;
+勅撰 > chokusen\ ;
+分節 > bunsetsu\ ;
+配列 > hairetsu\ ;
+処罰 > shobatsu\ ;
+再設 > saisetsu\ ;
+歴朝 > rekichou\ ;
+劇毒 > gekidoku\ ;
+追究 > tsuikyuu\ ;
+歳末 > saimatsu\ ;
+横軸 > yokojiku\ ;
+分筆 > bunpitsu\ ;
+輯録 > shuuroku\ ;
+半口 > hankuchi\ ;
+十哲 > juttetsu\ ;
+百選 > hyakusen\ ;
+廉潔 > renketsu\ ;
+先金 > sakigane\ ;
+軽食 > keishoku\ ;
+分立 > bunritsu\ ;
+内訳 > uchiwake\ ;
+追福 > tsuifuku\ ;
+発達 > hattatsu\ ;
+欲深 > yokubuka\ ;
+歪曲 > waikyoku\ ;
+入超 > nyuuchou\ ;
+割注 > warichuu\ ;
+民力 > minryoku\ ;
+北壁 > hokuheki\ ;
+廃滅 > haimetsu\ ;
+水上 > minakami\ ;
+初盆 > hatsubon\ ;
+正札 > shoufuda\ ;
+葬式 > soushiki\ ;
+入賞 > nyuushou\ ;
+先達 > sendatsu\ ;
+止木 > tomarigi\ ;
+着眼 > chakugan\ ;
+半切 > hansetsu\ ;
+初発 > shohatsu\ ;
+軟骨 > nankotsu\ ;
+当局 > toukyoku\ ;
+殺害 > satsugai\ ;
+落掌 > rakushou\ ;
+共訳 > kyouyaku\ ;
+強弱 > kyoujaku\ ;
+心中 > shinchuu\ ;
+平皿 > hirazara\ ;
+初産 > hatsuzan\ ;
+常緑 > jouryoku\ ;
+南仏 > nanfutsu\ ;
+劫掠 > gouryaku\ ;
+十八 > juuhachi\ ;
+公設 > kousetsu\ ;
+適業 > tekigyou\ ;
+鬱鬱 > utsuutsu\ ;
+追白 > tsuihaku\ ;
+従卒 > juusotsu\ ;
+御冠 > okanmuri\ ;
+律呂 > ritsuryo\ ;
+辣腕 > ratsuwan\ ;
+着用 > chakuyou\ ;
+逆用 > gyakuyou\ ;
+逆産 > gyakuzan\ ;
+六親 > rokushin\ ;
+後口 > atokuchi\ ;
+全訳 > zen''yaku\ ;
+単一 > tan''itsu\ ;
+帯緑 > tairyoku\ ;
+石弓 > ishiyumi\ ;
+選曲 > senkyoku\ ;
+通牒 > tsuuchou\ ;
+直線 > chokusen\ ;
+県立 > kenritsu\ ;
+別状 > betsujou\ ;
+凍結 > touketsu\ ;
+川蝉 > kawasemi\ ;
+郷国 > kyoukoku\ ;
+副業 > fukugyou\ ;
+追申 > tsuishin\ ;
+砂山 > sunayama\ ;
+律動 > ritsudou\ ;
+正接 > seisetsu\ ;
+迫真 > hakushin\ ;
+省筆 > seihitsu\ ;
+弟御 > otoutogo\ ;
+兇賊 > kyouzoku\ ;
+凄絶 > seizetsu\ ;
+後列 > kouretsu\ ;
+強将 > kyoushou\ ;
+年率 > nenritsu\ ;
+冗舌 > jouzetsu\ ;
+標註 > hyouchuu\ ;
+真白 > masshiro\ ;
+典薬 > ten''yaku\ ;
+弱少 > jakushou\ ;
+弱小 > jakushou\ ;
+直答 > chokutou\ ;
+石山 > ishiyama\ ;
+茜色 > akaneiro\ ;
+発言 > hatsugen\ ;
+弓形 > yuminari\ ;
+副木 > fukuboku\ ;
+真症 > shinshou\ ;
+劣情 > retsujou\ ;
+冥罰 > meibatsu\ ;
+神々 > kamigami\ ;
+劣悪 > retsuaku\ ;
+鮮血 > senketsu\ ;
+役割 > yakuwari\ ;
+石室 > ishimuro\ ;
+若衆 > wakashuu\ ;
+母君 > hahagimi\ ;
+平熱 > heinetsu\ ;
+直税 > chokuzei\ ;
+近着 > kinchaku\ ;
+道板 > michiita\ ;
+勅宣 > chokusen\ ;
+矩尺 > kanejaku\ ;
+切物 > kiremono\ ;
+選抜 > senbatsu\ ;
+白蟻 > shiroari\ ;
+強奪 > goudatsu\ ;
+刺殺 > shisatsu\ ;
+凡百 > bonpyaku\ ;
+律令 > ritsurei\ ;
+内腿 > uchimomo\ ;
+軍閥 > gunbatsu\ ;
+幣物 > heimotsu\ ;
+逸楽 > itsuraku\ ;
+速決 > sokketsu\ ;
+北側 > hokusoku\ ;
+彫刻 > choukoku\ ;
+逆潮 > sakashio\ ;
+砲列 > houretsu\ ;
+正式 > seishiki\ ;
+冠絶 > kanzetsu\ ;
+殿原 > tonobara\ ;
+凸状 > totsujou\ ;
+内股 > uchimomo\ ;
+達文 > tatsubun\ ;
+征伐 > seibatsu\ ;
+幻滅 > genmetsu\ ;
+弾圧 > dan''atsu\ ;
+軽軽 > karugaru\ ;
+充血 > juuketsu\ ;
+内職 > naishoku\ ;
+軟鉄 > nantetsu\ ;
+干潮 > hikishio\ ;
+石墨 > sekiboku\ ;
+判決 > hanketsu\ ;
+短夜 > mijikayo\ ;
+強圧 > kyouatsu\ ;
+平滑 > heikatsu\ ;
+強国 > kyoukoku\ ;
+鬢長 > bin''naga\ ;
+円罐 > marugama\ ;
+直直 > jikijiki\ ;
+巻紙 > makigami\ ;
+兼職 > kenshoku\ ;
+欠文 > ketsubun\ ;
+冬空 > fuyuzora\ ;
+遅日 > chijitsu\ ;
+別殿 > betsuden\ ;
+別段 > betsudan\ ;
+逆浪 > sakanami\ ;
+白蓮 > byakuren\ ;
+石垣 > ishigaki\ ;
+郷俗 > kyouzoku\ ;
+軸足 > jikuashi\ ;
+逆波 > sakanami\ ;
+目的 > mokuteki\ ;
+萩属 > hagizoku\ ;
+速業 > hayawaza\ ;
+段別 > tanbetsu\ ;
+市立 > shiritsu\ ;
+若草 > wakakusa\ ;
+着水 > chakusui\ ;
+転轍 > tentetsu\ ;
+鰐皮 > wanigawa\ ;
+止宿 > shishuku\ ;
+芸術 > geijutsu\ ;
+正宗 > masamune\ ;
+横腹 > yokobara\ ;
+冗筆 > jouhitsu\ ;
+公職 > koushoku\ ;
+各々 > sorezore\ ;
+刃渡 > hawatari\ ;
+鳩尾 > mizoochi\ ;
+髣髴 > houfutsu\ ;
+出演 > shutsuen\ ;
+適役 > tekiyaku\ ;
+身長 > shinchou\ ;
+力学 > rikigaku\ ;
+色道 > shikidou\ ;
+百芸 > hyakugei\ ;
+勢力 > seiryoku\ ;
+船霊 > funadama\ ;
+追求 > tsuikyuu\ ;
+砂原 > sunahara\ ;
+彎入 > wan''nyuu\ ;
+制札 > seisatsu\ ;
+楽長 > gakuchou\ ;
+直球 > chokkyuu\ ;
+分泌 > bunpitsu\ ;
+極限 > kyokugen\ ;
+鮫膚 > samehada\ ;
+発色 > hasshoku\ ;
+葬列 > souretsu\ ;
+勅問 > chokumon\ ;
+弾力 > danryoku\ ;
+式場 > shikijou\ ;
+高高 > takadaka\ ;
+割引 > waribiki\ ;
+欲心 > yokushin\ ;
+選局 > senkyoku\ ;
+剔抉 > tekketsu\ ;
+欲得 > yokutoku\ ;
+鮮肉 > sen''niku\ ;
+逆様 > sakasama\ ;
+進撃 > shingeki\ ;
+動力 > douryoku\ ;
+勅命 > chokumei\ ;
+凛烈 > rinretsu\ ;
+武士 > mononofu\ ;
+鮫肌 > samehada\ ;
+殺人 > satsujin\ ;
+僭越 > sen''etsu\ ;
+連日 > renjitsu\ ;
+正夢 > masayume\ ;
+刷数 > satsusuu\ ;
+軋轢 > atsureki\ ;
+別条 > betsujou\ ;
+儲蓄 > chochiku\ ;
+円窓 > marumado\ ;
+若者 > wakamono\ ;
+車轄 > shakatsu\ ;
+恐々 > kowagowa\ ;
+通暁 > tsuugyou\ ;
+前払 > maebarai\ ;
+百聞 > hyakubun\ ;
+発育 > hatsuiku\ ;
+只々 > tadatada\ ;
+逐条 > chikujou\ ;
+益益 > masumasu\ ;
+横縞 > yokojima\ ;
+達弁 > tatsuben\ ;
+巣窟 > soukutsu\ ;
+川筋 > kawasuji\ ;
+僣越 > sen''etsu\ ;
+巾着 > kinchaku\ ;
+免職 > menshoku\ ;
+勇力 > yuuryoku\ ;
+川端 > kawabata\ ;
+勁卒 > keisotsu\ ;
+内祝 > uchiiwai\ ;
+草物 > kusamono\ ;
+岳麓 > gakuroku\ ;
+分極 > bunkyoku\ ;
+槍術 > soujutsu\ ;
+連接 > rensetsu\ ;
+入籍 > nyuuseki\ ;
+副将 > fukushou\ ;
+副審 > fukushin\ ;
+知力 > chiryoku\ ;
+割安 > wariyasu\ ;
+処決 > shoketsu\ ;
+年末 > nenmatsu\ ;
+幾日 > ikunichi\ ;
+年月 > nengetsu\ ;
+切株 > kirikabu\ ;
+効力 > kouryoku\ ;
+骸骨 > gaikotsu\ ;
+公立 > kouritsu\ ;
+式台 > shikidai\ ;
+骨鱗 > kotsurin\ ;
+再発 > saihatsu\ ;
+死力 > shiryoku\ ;
+労力 > rouryoku\ ;
+横筋 > yokosuji\ ;
+巌窟 > gankutsu\ ;
+冬物 > fuyumono\ ;
+逆数 > gyakusuu\ ;
+兎網 > usagiami\ ;
+白糸 > shiraito\ ;
+死別 > shibetsu\ ;
+切札 > kirifuda\ ;
+切望 > setsubou\ ;
+平日 > heijitsu\ ;
+左目 > hidarime\ ;
+軽蔑 > keibetsu\ ;
+剣客 > kenkyaku\ ;
+内発 > naihatsu\ ;
+勅使 > chokushi\ ;
+芋虫 > imomushi\ ;
+又々 > matamata\ ;
+椋鳥 > mukudori\ ;
+平政 > hiramasa\ ;
+骨髄 > kotsuzui\ ;
+目測 > mokusoku\ ;
+元締 > motojime\ ;
+石亀 > ishigame\ ;
+先細 > sakiboso\ ;
+勅任 > chokunin\ ;
+矛先 > hokosaki\ ;
+度度 > tabitabi\ ;
+勅令 > chokurei\ ;
+先約 > sen''yaku\ ;
+萩原 > hagiwara\ ;
+入神 > nyuushin\ ;
+歯列 > shiretsu\ ;
+切断 > setsudan\ ;
+廃嫡 > haichaku\ ;
+歪力 > wairyoku\ ;
+式典 > shikiten\ ;
+追撃 > tsuigeki\ ;
+芋蔓 > imodzuru\ ;
+標章 > hyoushou\ ;
+巻物 > makimono\ ;
+相殺 > sousatsu\ ;
+冗物 > joubutsu\ ;
+前屈 > zenkutsu\ ;
+刳形 > kurikata\ ;
+正割 > seikatsu\ ;
+躍進 > yakushin\ ;
+弁別 > benbetsu\ ;
+着手 > chakushu\ ;
+正切 > seisetsu\ ;
+茶漬 > chadzuke\ ;
+怖々 > kowagowa\ ;
+留鳥 > ryuuchou\ ;
+過失 > kashitsu\ ;
+船足 > funaashi\ ;
+兵略 > heiryaku\ ;
+白票 > hakuhyou\ ;
+偏食 > henshoku\ ;
+工率 > kouritsu\ ;
+歌合 > utaawase\ ;
+躑躅 > tsutsuji\ ;
+歌口 > utaguchi\ ;
+鰹木 > katsuogi\ ;
+迫撃 > hakugeki\ ;
+相槌 > aidzuchi\ ;
+汲々 > kyuukyuu\ ;
+初恋 > hatsukoi\ ;
+先程 > sakihodo\ ;
+着想 > chakusou\ ;
+船賃 > funachin\ ;
+茶渋 > chashibu\ ;
+透徹 > toutetsu\ ;
+病身 > byoushin\ ;
+進学 > shingaku\ ;
+概説 > gaisetsu\ ;
+落丁 > rakuchou\ ;
+通帳 > tsuuchou\ ;
+床店 > tokomise\ ;
+良薬 > ryouyaku\ ;
+欠場 > ketsujou\ ;
+切戻 > setsurai\ ;
+標石 > hyouseki\ ;
+偽金 > nisegane\ ;
+目標 > mokuhyou\ ;
+楽調 > gakuchou\ ;
+力倆 > rikiryou\ ;
+選別 > senbetsu\ ;
+刺客 > shikyaku\ ;
+帝欠 > teiketsu\ ;
+出捐 > shutsuen\ ;
+着心 > kigokoro\ ;
+逐年 > chikunen\ ;
+鮫皮 > samegawa\ ;
+広広 > hirobiro\ ;
+横町 > yokochou\ ;
+近日 > kinjitsu\ ;
+広幅 > hirohaba\ ;
+力作 > rikisaku\ ;
+鳩信 > kyuushin\ ;
+検閲 > ken''etsu\ ;
+瞬刻 > shunkoku\ ;
+発着 > hatchaku\ ;
+極論 > kyokuron\ ;
+着弾 > chakudan\ ;
+典物 > tenbutsu\ ;
+白皙 > hakuseki\ ;
+白白 > hakuhaku\ ;
+切情 > setsujou\ ;
+刑律 > keiritsu\ ;
+標的 > hyouteki\ ;
+出所 > dedokoro\ ;
+追徴 > tsuichou\ ;
+着底 > chakutei\ ;
+党略 > touryaku\ ;
+極言 > kyokugen\ ;
+床山 > tokoyama\ ;
+痛覚 > tsuukaku\ ;
+年式 > nenshiki\ ;
+発癌 > hatsugan\ ;
+着帽 > chakubou\ ;
+内濠 > uchibori\ ;
+先着 > senchaku\ ;
+着帯 > chakutai\ ;
+常春 > tokoharu\ ;
+追弔 > tsuichou\ ;
+荷捌 > nisabaki\ ;
+平庭 > hiraniwa\ ;
+山鳩 > yamabato\ ;
+進境 > shinkyou\ ;
+山鳥 > yamadori\ ;
+通学 > tsuugaku\ ;
+畜類 > chikurui\ ;
+平底 > hirazoko\ ;
+入獄 > nyuugoku\ ;
+公爵 > koushaku\ ;
+色艶 > irotsuya\ ;
+平幕 > hiramaku\ ;
+先発 > senpatsu\ ;
+剴切 > gaisetsu\ ;
+白瓜 > shirouri\ ;
+近接 > kinsetsu\ ;
+蹲踞 > tsukubai\ ;
+転職 > tenshoku\ ;
+透察 > tousatsu\ ;
+劇作 > gekisaku\ ;
+着岸 > chakugan\ ;
+軸索 > jikusaku\ ;
+席料 > sekiryou\ ;
+欠号 > ketsugou\ ;
+発現 > hatsugen\ ;
+百獣 > hyakujuu\ ;
+僚船 > tomobune\ ;
+真心 > magokoro\ ;
+劇中 > gekichuu\ ;
+蹄鉄 > teitetsu\ ;
+出張 > shutchou\ ;
+僧職 > soushoku\ ;
+退屈 > taikutsu\ ;
+前哲 > zentetsu\ ;
+出廬 > shutsuro\ ;
+適作 > tekisaku\ ;
+内法 > uchinori\ ;
+出度 > shutsudo\ ;
+劃一 > kakuitsu\ ;
+軸箱 > jikubako\ ;
+峡谷 > kyoukoku\ ;
+出席 > shusseki\ ;
+別売 > betsubai\ ;
+帝日 > teijitsu\ ;
+構築 > kouchiku\ ;
+目撃 > mokugeki\ ;
+軍職 > gunshoku\ ;
+分局 > bunkyoku\ ;
+冬服 > fuyufuku\ ;
+茶杓 > chashaku\ ;
+鮮烈 > senretsu\ ;
+高説 > kousetsu\ ;
+写植 > shashoku\ ;
+別堂 > betsudou\ ;
+分宿 > bunshuku\ ;
+全滅 > zenmetsu\ ;
+山風 > yamakaze\ ;
+草摺 > kusazuri\ ;
+先物 > sakimono\ ;
+百点 > hyakuten\ ;
+逆夢 > sakayume\ ;
+光熱 > kounetsu\ ;
+前列 > zenretsu\ ;
+逆境 > gyakkyou\ ;
+癇癪 > kanshaku\ ;
+軍縮 > gunshuku\ ;
+鮭漁 > sakeryou\ ;
+達人 > tatsujin\ ;
+色紙 > shikishi\ ;
+白濁 > hakudaku\ ;
+儁秀 > shunshuu\ ;
+幅広 > habahiro\ ;
+平声 > hyoushou\ ;
+山霧 > yamagiri\ ;
+逸出 > isshutsu\ ;
+盗撮 > tousatsu\ ;
+入浴 > nyuuyoku\ ;
+欠便 > ketsubin\ ;
+軽石 > karuishi\ ;
+切妻 > kirizuma\ ;
+巻末 > kanmatsu\ ;
+通商 > tsuushou\ ;
+距骨 > kyokotsu\ ;
+入津 > nyuushin\ ;
+生首 > namakubi\ ;
+入洛 > nyuuraku\ ;
+直情 > chokujou\ ;
+凶宅 > kyoutaku\ ;
+山際 > yamagiwa\ ;
+庭先 > niwasaki\ ;
+山陰 > yamakage\ ;
+剃刀 > kamisori\ ;
+横波 > yokonami\ ;
+着地 > chakuchi\ ;
+盗掘 > toukutsu\ ;
+省庁 > shouchou\ ;
+留金 > tomegane\ ;
+橋梁 > kyouryou\ ;
+町長 > chouchou\ ;
+属領 > zokuryou\ ;
+通告 > tsuukoku\ ;
+前借 > zenshaku\ ;
+欠乏 > ketsubou\ ;
+極致 > kyokuchi\ ;
+別命 > betsumei\ ;
+良策 > ryousaku\ ;
+甘食 > amashoku\ ;
+内枠 > uchiwaku\ ;
+別名 > betsumei\ ;
+橋杭 > hashigui\ ;
+別号 > betsugou\ ;
+橋杙 > hashigui\ ;
+借銭 > shakusen\ ;
+眉尻 > mayujiri\ ;
+真如 > shin''nyo\ ;
+若水 > wakamizu\ ;
+通力 > tsuuriki\ ;
+店先 > misesaki\ ;
+畔道 > azemichi\ ;
+若殿 > wakatono\ ;
+通則 > tsuusoku\ ;
+初口 > shokuchi\ ;
+樽柿 > tarugaki\ ;
+臭覚 > shuukaku\ ;
+週休 > shuukyuu\ ;
+省察 > seisatsu\ ;
+横様 > yokozama\ ;
+横槍 > yokoyari\ ;
+冷徹 > reitetsu\ ;
+督促 > tokusoku\ ;
+判別 > hanbetsu\ ;
+芳烈 > houretsu\ ;
+常客 > joukyaku\ ;
+帳尻 > choujiri\ ;
+出土 > shutsudo\ ;
+苗水 > nawamizu\ ;
+先決 > senketsu\ ;
+軽率 > keisotsu\ ;
+山鉾 > yamaboko\ ;
+髄虫 > zuimushi\ ;
+皆様 > minasama\ ;
+別册 > bessatsu\ ;
+別冊 > bessatsu\ ;
+帷子 > katabira\ ;
+草市 > kusaichi\ ;
+白檀 > byakudan\ ;
+若様 > wakasama\ ;
+直射 > chokusha\ ;
+山里 > yamazato\ ;
+退却 > taikyaku\ ;
+追及 > tsuikyuu\ ;
+槍玉 > yaridama\ ;
+甲鉄 > koutetsu\ ;
+局面 > kyokumen\ ;
+通信 > tsuushin\ ;
+極線 > kyokusen\ ;
+通俗 > tsuuzoku\ ;
+船縁 > funaberi\ ;
+皓月 > kougetsu\ ;
+色相 > shikisou\ ;
+色盲 > shikimou\ ;
+眉墨 > mayuzumi\ ;
+内接 > naisetsu\ ;
+巴戦 > tomoesen\ ;
+全曲 > zenkyoku\ ;
+徐々 > sorosoro\ ;
+軸物 > jikumono\ ;
+業績 > gyouseki\ ;
+入木 > nyuuboku\ ;
+登極 > toukyoku\ ;
+極細 > gokuboso\ ;
+入朝 > nyuuchou\ ;
+送別 > soubetsu\ ;
+足首 > ashikubi\ ;
+兼摂 > kensetsu\ ;
+別便 > betsubin\ ;
+年別 > nenbetsu\ ;
+局限 > kyokugen\ ;
+生録 > namaroku\ ;
+巧拙 > kousetsu\ ;
+白梅 > shiraume\ ;
+臆説 > okusetsu\ ;
+先様 > sakisama\ ;
+全日 > zenjitsu\ ;
+布引 > nunobiki\ ;
+監察 > kansatsu\ ;
+分力 > bunryoku\ ;
+傍耳 > katamimi\ ;
+略言 > ryakugen\ ;
+別人 > betsunin\ ;
+分割 > bunkatsu\ ;
+小魚 > kozakana\ ;
+左手 > hidarite\ ;
+色町 > iromachi\ ;
+色男 > irootoko\ ;
+楽章 > gakushou\ ;
+分別 > bunbetsu\ ;
+分列 > bunretsu\ ;
+鬱病 > utsubyou\ ;
+逆修 > gyakushu\ ;
+直売 > chokubai\ ;
+借貸 > shakutai\ ;
+借財 > shakuzai\ ;
+冬山 > fuyuyama\ ;
+分冊 > bunsatsu\ ;
+軍略 > gunryaku\ ;
+用達 > youtatsu\ ;
+荒夷 > araebisu\ ;
+極端 > kyokutan\ ;
+真南 > maminami\ ;
+略装 > ryakusou\ ;
+列伝 > retsuden\ ;
+共振 > kyoushin\ ;
+船端 > funabata\ ;
+鯨座 > kujiraza\ ;
+着任 > chakunin\ ;
+辻堂 > tsujidou\ ;
+俺達 > oretachi\ ;
+真勇 > shin''yuu\ ;
+傘紙 > kasagami\ ;
+白昼 > hakuchuu\ ;
+痼疾 > koshitsu\ ;
+出処 > dedokoro\ ;
+偽者 > nisemono\ ;
+克服 > kokufuku\ ;
+画質 > gashitsu\ ;
+跳躍 > chouyaku\ ;
+追伸 > tsuishin\ ;
+発明 > hatsumei\ ;
+逆上 > gyakujou\ ;
+先月 > sengetsu\ ;
+平仄 > hyousoku\ ;
+円形 > marugata\ ;
+少額 > shougaku\ ;
+返却 > henkyaku\ ;
+小額 > shougaku\ ;
+凶兆 > kyouchou\ ;
+驀進 > bakushin\ ;
+楓糖 > kaedetou\ ;
+幕内 > makuuchi\ ;
+巻尺 > makijaku\ ;
+先日 > senjitsu\ ;
+借覧 > shakuran\ ;
+駒鳥 > komadori\ ;
+健脚 > kenkyaku\ ;
+幕僚 > bakuryou\ ;
+写実 > shajitsu\ ;
+元日 > ganjitsu\ ;
+白描 > hakubyou\ ;
+尻重 > shiriomo\ ;
+脛骨 > keikotsu\ ;
+元方 > motokata\ ;
+発揚 > hatsuyou\ ;
+茶壺 > chatsubo\ ;
+修身 > shuushin\ ;
+発掘 > hakkutsu\ ;
+川底 > kawazoko\ ;
+川床 > kawadoko\ ;
+凶作 > kyousaku\ ;
+概略 > gairyaku\ ;
+川幅 > kawahaba\ ;
+出京 > shukkyou\ ;
+傷病 > shoubyou\ ;
+椎茸 > shiitake\ ;
+州州 > shuushuu\ ;
+停職 > teishoku\ ;
+侑食 > yuushoku\ ;
+内局 > naikyoku\ ;
+男親 > otokooya\ ;
+凛冽 > rinretsu\ ;
+花柄 > hanagara\ ;
+公式 > koushiki\ ;
+山襞 > yamahida\ ;
+辻占 > tsujiura\ ;
+様様 > samazama\ ;
+真中 > man''naka\ ;
+内密 > naimitsu\ ;
+花束 > hanataba\ ;
+内実 > naijitsu\ ;
+共布 > tomonuno\ ;
+山裾 > yamasuso\ ;
+高空 > takazora\ ;
+花札 > hanafuda\ ;
+百態 > hyakutai\ ;
+痔疾 > jishitsu\ ;
+八幡 > hachiman\ ;
+巡察 > junsatsu\ ;
+軽業 > karuwaza\ ;
+川尻 > kawajiri\ ;
+直前 > chokuzen\ ;
+棒術 > boujutsu\ ;
+草叢 > kusamura\ ;
+花時 > hanadoki\ ;
+入幕 > nyuumaku\ ;
+直刀 > chokutou\ ;
+発情 > hatsujou\ ;
+俳謔 > haigyaku\ ;
+岩脈 > ganmyaku\ ;
+帳元 > choumoto\ ;
+病的 > byouteki\ ;
+横幅 > yokohaba\ ;
+病癖 > byouheki\ ;
+胸高 > munadaka\ ;
+促進 > sokushin\ ;
+標徴 > hyouchou\ ;
+病症 > byoushou\ ;
+冷却 > reikyaku\ ;
+膏血 > kouketsu\ ;
+傷物 > kizumono\ ;
+百弊 > hyakuhei\ ;
+凝乳 > gyounyuu\ ;
+畜舎 > chikusha\ ;
+共学 > kyougaku\ ;
+内壕 > uchibori\ ;
+少量 > shouryou\ ;
+全局 > zenkyoku\ ;
+克復 > kokufuku\ ;
+百年 > hyakunen\ ;
+足軽 > ashigaru\ ;
+小量 > shouryou\ ;
+健筆 > kenpitsu\ ;
+寒餅 > kanmochi\ ;
+寮長 > ryouchou\ ;
+先役 > sen''yaku\ ;
+俊足 > shunsoku\ ;
+内堀 > uchibori\ ;
+入寂 > nyuujaku\ ;
+臣籍 > shinseki\ ;
+信認 > shin''nin\ ;
+円型 > marugata\ ;
+辛勝 > shinshou\ ;
+入学 > nyuugaku\ ;
+業物 > wazamono\ ;
+赤靴 > akagutsu\ ;
+足跡 > sokuseki\ ;
+信証 > shinshou\ ;
+州境 > shuukyou\ ;
+信託 > shintaku\ ;
+宿駅 > shukueki\ ;
+極点 > kyokuten\ ;
+俗調 > zokuchou\ ;
+舌癌 > zetsugan\ ;
+直中 > tadanaka\ ;
+花房 > hanafusa\ ;
+直上 > chokujou\ ;
+疫病 > yakubyou\ ;
+若宮 > wakamiya\ ;
+元帳 > motochou\ ;
+寛闊 > kankatsu\ ;
+寸鉄 > suntetsu\ ;
+百害 > hyakugai\ ;
+偶発 > guuhatsu\ ;
+小身 > shoushin\ ;
+宿願 > shukugan\ ;
+生薬 > shouyaku\ ;
+宿題 > shukudai\ ;
+瓶詰 > bindzume\ ;
+偏窟 > henkutsu\ ;
+先山 > sakiyama\ ;
+男色 > nanshoku\ ;
+脱輪 > datsurin\ ;
+蹴球 > shuukyuu\ ;
+倹約 > ken''yaku\ ;
+草丈 > kusatake\ ;
+入塾 > nyuujuku\ ;
+高率 > kouritsu\ ;
+駿足 > shunsoku\ ;
+優形 > yasagata\ ;
+先客 > senkyaku\ ;
+疵物 > kizumono\ ;
+俗衆 > zokushuu\ ;
+山膚 > yamahada\ ;
+榕樹 > gajumaru\ ;
+先安 > sakiyasu\ ;
+馬面 > umadzura\ ;
+盗伐 > toubatsu\ ;
+百姓 > hyakusei\ ;
+岩窟 > gankutsu\ ;
+歴々 > rekireki\ ;
+充実 > juujitsu\ ;
+花形 > hanagata\ ;
+盗人 > nusubito\ ;
+白妙 > shirotae\ ;
+山脈 > yamanami\ ;
+花弁 > hanabira\ ;
+山肌 > yamahada\ ;
+入国 > nyuukoku\ ;
+極洋 > kyokuyou\ ;
+白壁 > hakuheki\ ;
+高熱 > kounetsu\ ;
+白墨 > hakuboku\ ;
+発売 > hatsubai\ ;
+内力 > nairyoku\ ;
+赤銅 > shakudou\ ;
+偽物 > nisemono\ ;
+皮剥 > kawahagi\ ;
+巨刹 > kyosatsu\ ;
+骨盤 > kotsuban\ ;
+鯉口 > koiguchi\ ;
+生色 > seishoku\ ;
+先太 > sakibuto\ ;
+超越 > chouetsu\ ;
+定食 > teishoku\ ;
+兵卒 > heisotsu\ ;
+様式 > youshiki\ ;
+伴食 > banshoku\ ;
+兵力 > heiryoku\ ;
+楽楽 > rakuraku\ ;
+高潮 > takashio\ ;
+内側 > uchigawa\ ;
+脅迫 > kyouhaku\ ;
+高潔 > kouketsu\ ;
+腹膜 > fukumaku\ ;
+内倉 > uchigura\ ;
+花守 > hanamori\ ;
+胸郭 > kyoukaku\ ;
+其其 > sorezore\ ;
+病毒 > byoudoku\ ;
+極楽 > gokuraku\ ;
+極極 > gokugoku\ ;
+病歴 > byoureki\ ;
+花嫁 > hanayome\ ;
+全力 > zenryoku\ ;
+共共 > tomodomo\ ;
+花婿 > hanamuko\ ;
+贋首 > nisekubi\ ;
+供託 > kyoutaku\ ;
+若君 > wakagimi\ ;
+局舎 > kyokusha\ ;
+州俗 > shuuzoku\ ;
+信腹 > shinpuku\ ;
+植生 > shokusei\ ;
+権力 > kenryoku\ ;
+優女 > yasaon''a\ ;
+画策 > kakusaku\ ;
+染髪 > senpatsu\ ;
+宿酔 > shukusui\ ;
+赫赫 > kakukaku\ ;
+伸長 > shinchou\ ;
+密造 > mitsuzou\ ;
+楽曲 > gakkyoku\ ;
+高波 > takanami\ ;
+会食 > kaishoku\ ;
+倒立 > touritsu\ ;
+俗臭 > zokushuu\ ;
+色感 > shikikan\ ;
+左上 > hidariue\ ;
+先哲 > sentetsu\ ;
+極東 > kyokutou\ ;
+色情 > shikijou\ ;
+魚屋 > sakanaya\ ;
+跳箱 > tobibako\ ;
+軟式 > nanshiki\ ;
+高殿 > takadono\ ;
+偏片 > katahara\ ;
+川上 > kawakami\ ;
+山程 > yamahodo\ ;
+発動 > hatsudou\ ;
+先口 > senkuchi\ ;
+肋骨 > rokkotsu\ ;
+畜産 > chikusan\ ;
+色彩 > shikisai\ ;
+良心 > ryoushin\ ;
+生米 > namagome\ ;
+用筆 > youhitsu\ ;
+入信 > nyuushin\ ;
+臓物 > zoumotsu\ ;
+俗習 > zokushuu\ ;
+遙々 > harubaru\ ;
+骨灰 > kotsubai\ ;
+船旅 > funatabi\ ;
+船方 > funakata\ ;
+花園 > hanazono\ ;
+入伸 > nyuushin\ ;
+光力 > kouryoku\ ;
+軍律 > gunritsu\ ;
+軍役 > gun''yaku\ ;
+百億 > hyakuoku\ ;
+屑籠 > kuzukago\ ;
+痛撃 > tsuugeki\ ;
+全乳 > zen''nyuu\ ;
+格調 > kakuchou\ ;
+入京 > nyuukyou\ ;
+輸出 > yushutsu\ ;
+概括 > gaikatsu\ ;
+膠着 > kouchaku\ ;
+信経 > shinkyou\ ;
+併設 > heisetsu\ ;
+百倍 > hyakubai\ ;
+車座 > kurumaza\ ;
+先入 > sen''nyuu\ ;
+横丁 > yokochou\ ;
+借用 > shakuyou\ ;
+宿賃 > yadochin\ ;
+畜犬 > chikuken\ ;
+傍杖 > sobadzue\ ;
+元元 > motomoto\ ;
+寝袋 > nebukuro\ ;
+芝地 > shibachi\ ;
+的中 > tekichuu\ ;
+就縛 > shuubaku\ ;
+密謀 > mitsubou\ ;
+密談 > mitsudan\ ;
+発令 > hatsurei\ ;
+良将 > ryoushou\ ;
+客車 > kyakusha\ ;
+脱色 > dasshoku\ ;
+百世 > hyakusei\ ;
+高札 > kousatsu\ ;
+百万 > hyakuman\ ;
+小腸 > shouchou\ ;
+仙骨 > senkotsu\ ;
+安酒 > yasuzake\ ;
+僻境 > hekikyou\ ;
+学長 > gakuchou\ ;
+車屋 > kurumaya\ ;
+優劣 > yuuretsu\ ;
+身心 > shinshin\ ;
+痛惜 > tsuuseki\ ;
+偽札 > nisefuda\ ;
+贋金 > nisegane\ ;
+借物 > karimono\ ;
+度々 > tabitabi\ ;
+赤蛙 > akagaeru\ ;
+傷心 > shoushin\ ;
+付馬 > tsukeuma\ ;
+赤虫 > akamushi\ ;
+佗言 > wabigoto\ ;
+生皮 > namakawa\ ;
+側杖 > sobadzue\ ;
+極性 > kyokusei\ ;
+痛心 > tsuushin\ ;
+色女 > iroon''na\ ;
+輪伐 > rinbatsu\ ;
+倍率 > bairitsu\ ;
+俗称 > zokushou\ ;
+山猿 > yamazaru\ ;
+山猫 > yamaneko\ ;
+伝達 > dentatsu\ ;
+植民 > shokumin\ ;
+寵臣 > choushin\ ;
+植毛 > shokumou\ ;
+肉鍋 > nikunabe\ ;
+男爵 > danshaku\ ;
+人魂 > hitodama\ ;
+腹痛 > fukutsuu\ ;
+船底 > funazoko\ ;
+船床 > funadoko\ ;
+駆落 > kakeochi\ ;
+極希 > gokumare\ ;
+俊秀 > shunshuu\ ;
+人骨 > jinkotsu\ ;
+小結 > komusubi\ ;
+実説 > jissetsu\ ;
+履物 > hakimono\ ;
+病徴 > byouchou\ ;
+定説 > teisetsu\ ;
+臨月 > ringetsu\ ;
+病弱 > byoujaku\ ;
+広々 > hirobiro\ ;
+骨材 > kotsuzai\ ;
+産物 > sanbutsu\ ;
+官設 > kansetsu\ ;
+検札 > kensatsu\ ;
+臣服 > shinpuku\ ;
+貪食 > donshoku\ ;
+病床 > byoushou\ ;
+信用 > shin''you\ ;
+脇腹 > wakibara\ ;
+生物 > namamono\ ;
+供給 > kyoukyuu\ ;
+局番 > kyokuban\ ;
+小策 > shousaku\ ;
+槍先 > yarisaki\ ;
+痰壺 > tantsubo\ ;
+髪床 > kamidoko\ ;
+寒色 > kanshoku\ ;
+植栽 > shokusai\ ;
+休足 > kyuusoku\ ;
+船宿 > funayado\ ;
+仏門 > butsumon\ ;
+船客 > senkyaku\ ;
+傍役 > wakiyaku\ ;
+肉迫 > nikuhaku\ ;
+核膜 > kakumaku\ ;
+亡骸 > nakigara\ ;
+臘月 > rougetsu\ ;
+植林 > shokurin\ ;
+完訳 > kan''yaku\ ;
+胸膜 > kyoumaku\ ;
+飽食 > houshoku\ ;
+修熟 > shuujuku\ ;
+宅診 > takushin\ ;
+小禄 > shouroku\ ;
+伝説 > densetsu\ ;
+足癖 > ashikuse\ ;
+脱税 > datsuzei\ ;
+京響 > kyoukyou\ ;
+転入 > ten''nyuu\ ;
+対立 > tairitsu\ ;
+腫物 > shumotsu\ ;
+極大 > kyokudai\ ;
+略書 > ryakusho\ ;
+宿舎 > shukusha\ ;
+軍卒 > gunsotsu\ ;
+峰峰 > minemine\ ;
+容色 > youshoku\ ;
+介錯 > kaishaku\ ;
+森森 > shinshin\ ;
+嵌入 > kan''nyuu\ ;
+軒別 > kenbetsu\ ;
+側役 > sobayaku\ ;
+転借 > tenshaku\ ;
+脊索 > sekisaku\ ;
+休診 > kyuushin\ ;
+財閥 > zaibatsu\ ;
+環節 > kansetsu\ ;
+木鼠 > kinezumi\ ;
+骨折 > kossetsu\ ;
+脚立 > kyatatsu\ ;
+僻事 > higagoto\ ;
+略文 > ryakubun\ ;
+軒先 > nokisaki\ ;
+根絶 > konzetsu\ ;
+極地 > kyokuchi\ ;
+枝道 > edamichi\ ;
+宿老 > shukurou\ ;
+使節 > shisetsu\ ;
+貸金 > kashikin\ ;
+高察 > kousatsu\ ;
+倒様 > sakasama\ ;
+生活 > seikatsu\ ;
+高密 > koumitsu\ ;
+仏道 > butsudou\ ;
+何者 > nanimono\ ;
+良俗 > ryouzoku\ ;
+住職 > juushoku\ ;
+柔術 > juujutsu\ ;
+生水 > namamizu\ ;
+胸糞 > munekuso\ ;
+客船 > kyakusen\ ;
+耐食 > taishoku\ ;
+老骨 > roukotsu\ ;
+枕辺 > makurabe\ ;
+尤物 > yuubutsu\ ;
+客舎 > kyakusha\ ;
+乱髪 > ranpatsu\ ;
+体罰 > taibatsu\ ;
+痛哭 > tsuukoku\ ;
+生殖 > seishoku\ ;
+人里 > hitozato\ ;
+客膳 > kyakuzen\ ;
+肉親 > nikushin\ ;
+富籤 > tomikuji\ ;
+偵察 > teisatsu\ ;
+能筆 > nouhitsu\ ;
+乾風 > karakaze\ ;
+髪型 > kamigata\ ;
+良久 > ryoukyuu\ ;
+村雨 > murasame\ ;
+軒並 > nokinami\ ;
+軒丈 > nokitake\ ;
+寒竹 > kanchiku\ ;
+月齢 > getsurei\ ;
+楽匠 > gakushou\ ;
+楽勝 > rakushou\ ;
+跳梁 > chouryou\ ;
+寒空 > samuzora\ ;
+仰角 > gyoukaku\ ;
+楽劇 > gakugeki\ ;
+飄飄 > hyouhyou\ ;
+木骨 > mokkotsu\ ;
+侯爵 > koushaku\ ;
+玉髄 > gyokuzui\ ;
+聴診 > choushin\ ;
+俗流 > zokuryuu\ ;
+定職 > teishoku\ ;
+官職 > kanshoku\ ;
+健実 > kenjitsu\ ;
+豪雪 > gousetsu\ ;
+聴覚 > choukaku\ ;
+珍重 > chinchou\ ;
+直々 > jikijiki\ ;
+自室 > jishitsu\ ;
+側壁 > sokuheki\ ;
+検尿 > ken''nyou\ ;
+乱雑 > ranzatsu\ ;
+属望 > shokubou\ ;
+聴衆 > choushuu\ ;
+中黒 > nakaguro\ ;
+検察 > kensatsu\ ;
+人足 > hitoashi\ ;
+対物 > taibutsu\ ;
+肉薄 > nikuhaku\ ;
+玉顔 > gyokugan\ ;
+颯颯 > sassatsu\ ;
+偏屈 > henkutsu\ ;
+仏説 > bussetsu\ ;
+島台 > shimadai\ ;
+仇讎 > kyuushuu\ ;
+併発 > heihatsu\ ;
+駐留 > chuuryuu\ ;
+略帽 > ryakubou\ ;
+朝飯 > asameshi\ ;
+何程 > nanihodo\ ;
+風食 > fuushoku\ ;
+畳屋 > tatamiya\ ;
+側圧 > sokuatsu\ ;
+贖罪 > shokuzai\ ;
+肩肘 > katahiji\ ;
+染色 > senshoku\ ;
+身中 > shinchuu\ ;
+村里 > murazato\ ;
+仙術 > senjutsu\ ;
+自失 > jishitsu\ ;
+俗楽 > zokugaku\ ;
+首筋 > kubisuji\ ;
+佇立 > choritsu\ ;
+贋者 > nisemono\ ;
+密着 > mitchaku\ ;
+腰板 > koshiita\ ;
+股肉 > momoniku\ ;
+脱漏 > datsurou\ ;
+胸痛 > kyoutsuu\ ;
+丸髷 > marumage\ ;
+屈曲 > kukkyoku\ ;
+船人 > funabito\ ;
+骨太 > honebuto\ ;
+高卒 > kousotsu\ ;
+就業 > shuugyou\ ;
+食道 > shokudou\ ;
+谷風 > tanikaze\ ;
+信服 > shinpuku\ ;
+仮葺 > karibuki\ ;
+風雪 > fuusetsu\ ;
+完結 > kanketsu\ ;
+柔肌 > yawahada\ ;
+駐独 > chuudoku\ ;
+玉門 > gyokumon\ ;
+饒舌 > jouzetsu\ ;
+月食 > gesshoku\ ;
+栗石 > kuriishi\ ;
+小波 > sazanami\ ;
+益々 > masumasu\ ;
+定立 > teiritsu\ ;
+丸首 > marukubi\ ;
+中高 > nakadaka\ ;
+官立 > kanritsu\ ;
+能率 > nouritsu\ ;
+足業 > ashiwaza\ ;
+木鐸 > bokutaku\ ;
+主食 > shushoku\ ;
+驚愕 > kyougaku\ ;
+俗曲 > zokkyoku\ ;
+仙薬 > sen''yaku\ ;
+作病 > sakubyou\ ;
+何百 > nanbyaku\ ;
+仁術 > jinjutsu\ ;
+信教 > shinkyou\ ;
+桜湯 > sakurayu\ ;
+検圧 > ken''atsu\ ;
+一齣 > hitokoma\ ;
+足械 > ashikase\ ;
+月面 > getsumen\ ;
+乳酪 > nyuuraku\ ;
+尽日 > jinjitsu\ ;
+少欲 > shouyoku\ ;
+画引 > kakubiki\ ;
+留学 > ryuugaku\ ;
+学習 > gakushuu\ ;
+跋文 > batsubun\ ;
+山彦 > yamabiko\ ;
+山形 > yamagata\ ;
+病中 > byouchuu\ ;
+小欲 > shouyoku\ ;
+偶力 > guuryoku\ ;
+染織 > senshoku\ ;
+任職 > ninshoku\ ;
+脱毛 > datsumou\ ;
+専決 > senketsu\ ;
+梟敵 > kyouteki\ ;
+木鋏 > kibasami\ ;
+舟人 > funabito\ ;
+貧血 > hinketsu\ ;
+足枷 > ashikase\ ;
+耳許 > mimimoto\ ;
+傑人 > ketsujin\ ;
+対決 > taiketsu\ ;
+射殺 > shasatsu\ ;
+令色 > reishoku\ ;
+封殺 > fuusatsu\ ;
+小槌 > kodzuchi\ ;
+学績 > gakuseki\ ;
+山川 > yamagawa\ ;
+高低 > takahiku\ ;
+中頃 > nakagoro\ ;
+職能 > shokunou\ ;
+屈折 > kussetsu\ ;
+実直 > jitchoku\ ;
+腰折 > koshiore\ ;
+実益 > jitsueki\ ;
+定着 > teichaku\ ;
+梁木 > ryouboku\ ;
+偶偶 > tamatama\ ;
+曲面 > kyokumen\ ;
+足早 > ashibaya\ ;
+中震 > chuushin\ ;
+舌代 > zetsudai\ ;
+柱石 > chuuseki\ ;
+山山 > yamayama\ ;
+中隔 > chuukaku\ ;
+局所 > kyokusho\ ;
+貯蓄 > chochiku\ ;
+低率 > teiritsu\ ;
+州々 > shuushuu\ ;
+染筆 > senpitsu\ ;
+信憑 > shinpyou\ ;
+桟橋 > sanbashi\ ;
+画室 > gashitsu\ ;
+肉細 > nikuboso\ ;
+客用 > kyakuyou\ ;
+中限 > nakagiri\ ;
+何物 > nanimono\ ;
+山寺 > yamadera\ ;
+猟鳥 > ryouchou\ ;
+学籍 > gakuseki\ ;
+万骨 > bankotsu\ ;
+修復 > shuufuku\ ;
+仏艦 > futsukan\ ;
+腹心 > fukushin\ ;
+実用 > jitsuyou\ ;
+修得 > shuutoku\ ;
+胆略 > tanryaku\ ;
+其々 > sorezore\ ;
+丸鑿 > marunomi\ ;
+山守 > yamamori\ ;
+足摺 > ashizuri\ ;
+食言 > shokugen\ ;
+個室 > koshitsu\ ;
+二言 > futakoto\ ;
+体熱 > tainetsu\ ;
+共々 > tomodomo\ ;
+仮綴 > karitoji\ ;
+休祥 > kyuushou\ ;
+屈従 > kutsujuu\ ;
+実現 > jitsugen\ ;
+現職 > genshoku\ ;
+豁達 > kattatsu\ ;
+信念 > shin''nen\ ;
+顎骨 > gakkotsu\ ;
+三食 > sanshoku\ ;
+了覚 > ryoukaku\ ;
+一駒 > hitokoma\ ;
+群雲 > murakumo\ ;
+月金 > getsukin\ ;
+赤沈 > sekichin\ ;
+下顎 > shitaago\ ;
+山姫 > yamahime\ ;
+脂汗 > aburaase\ ;
+腰弁 > koshiben\ ;
+宝玉 > hougyoku\ ;
+少敵 > shouteki\ ;
+侵撃 > shingeki\ ;
+驍将 > gyoushou\ ;
+丘陵 > kyuuryou\ ;
+略名 > ryakumei\ ;
+小敵 > shouteki\ ;
+略号 > ryakugou\ ;
+足技 > ashiwaza\ ;
+略史 > ryakushi\ ;
+定率 > teiritsu\ ;
+番卒 > bansotsu\ ;
+略取 > ryakushu\ ;
+実状 > jitsujou\ ;
+借地 > shakuchi\ ;
+併殺 > heisatsu\ ;
+聖職 > seishoku\ ;
+腰帯 > koshiobi\ ;
+上靴 > uwagutsu\ ;
+膜壁 > makuheki\ ;
+脱文 > datsubun\ ;
+存立 > sonritsu\ ;
+宝物 > houmotsu\ ;
+俗形 > zokugyou\ ;
+人膚 > hitohada\ ;
+風足 > kazaashi\ ;
+乾裂 > kanretsu\ ;
+桎梏 > shikkoku\ ;
+一頃 > hitokoro\ ;
+翌週 > yokushuu\ ;
+対日 > tainichi\ ;
+枠組 > wakugumi\ ;
+人脚 > hitoashi\ ;
+翻訳 > hon''yaku\ ;
+人脈 > jinmyaku\ ;
+山城 > yamajiro\ ;
+頸骨 > keikotsu\ ;
+供料 > kyouryou\ ;
+脚本 > kyakuhon\ ;
+東芝 > toushiba\ ;
+赤樫 > akagashi\ ;
+耐蝕 > taishoku\ ;
+脊椎 > sekitsui\ ;
+柴犬 > shibainu\ ;
+修学 > shuugaku\ ;
+俊徳 > shuntoku\ ;
+月輪 > getsurin\ ;
+仲秋 > chuushuu\ ;
+主述 > shujutsu\ ;
+人肌 > hitohada\ ;
+人肉 > jin''niku\ ;
+媒酌 > baishaku\ ;
+例月 > reigetsu\ ;
+生娘 > kimusume\ ;
+代筆 > daihitsu\ ;
+脊梁 > sekiryou\ ;
+密殺 > missatsu\ ;
+暴食 > boushoku\ ;
+山国 > yamaguni\ ;
+職種 > shokushu\ ;
+一際 > hitokiwa\ ;
+乾蝕 > kanshoku\ ;
+一隅 > hitosumi\ ;
+就床 > shuushou\ ;
+丈長 > takenaga\ ;
+頭髪 > touhatsu\ ;
+猥雑 > waizatsu\ ;
+聯立 > renritsu\ ;
+脊柱 > sekichuu\ ;
+頭骨 > toukotsu\ ;
+足形 > ashigata\ ;
+安物 > yasumono\ ;
+寒極 > kankyoku\ ;
+足弱 > ashiyowa\ ;
+候哉 > sourouya\ ;
+例日 > reijitsu\ ;
+中速 > chuusoku\ ;
+生壁 > namakabe\ ;
+更迭 > koutetsu\ ;
+梟将 > kyoushou\ ;
+元々 > motomoto\ ;
+肉的 > nikuteki\ ;
+胸椎 > kyoutsui\ ;
+風説 > fuusetsu\ ;
+桂月 > keigetsu\ ;
+室温 > shitsuon\ ;
+仙窟 > senkutsu\ ;
+寧日 > neijitsu\ ;
+贋物 > nisemono\ ;
+番付 > bandzuke\ ;
+赤松 > akamatsu\ ;
+略体 > ryakutai\ ;
+梅干 > umeboshi\ ;
+俗学 > zokugaku\ ;
+腹壁 > fukuheki\ ;
+中軸 > chuujiku\ ;
+略伝 > ryakuden\ ;
+腸壁 > chouheki\ ;
+象虫 > zoumushi\ ;
+林立 > rinritsu\ ;
+嬌羞 > kyoushuu\ ;
+質疑 > shitsugi\ ;
+山吹 > yamabuki\ ;
+踏切 > fumikiri\ ;
+就寝 > shuushin\ ;
+杏茸 > anzutake\ ;
+生国 > shoukoku\ ;
+信女 > shin''nyo\ ;
+束脩 > sokushuu\ ;
+小心 > shoushin\ ;
+宿業 > shukugou\ ;
+申告 > shinkoku\ ;
+寒月 > kangetsu\ ;
+有識 > yuushiki\ ;
+佚楽 > itsuraku\ ;
+就学 > shuugaku\ ;
+餅網 > mochiami\ ;
+何様 > nanisama\ ;
+翁貝 > okinagai\ ;
+富札 > tomifuda\ ;
+局外 > kyokugai\ ;
+食膳 > shokuzen\ ;
+杉苔 > sugigoke\ ;
+密林 > mitsurin\ ;
+倉卒 > sousotsu\ ;
+甲卒 > kousotsu\ ;
+客殿 > kyakuden\ ;
+並足 > namiashi\ ;
+交織 > koushoku\ ;
+畑作 > hatasaku\ ;
+瓦屋 > kawaraya\ ;
+客死 > kyakushi\ ;
+男前 > otokomae\ ;
+局報 > kyokuhou\ ;
+顰蹙 > hinshuku\ ;
+宮様 > miyasama\ ;
+作柄 > sakugara\ ;
+献酌 > kenshaku\ ;
+食育 > shokuiku\ ;
+風蝕 > fuushoku\ ;
+両足 > ryousoku\ ;
+二股 > futamata\ ;
+瓦家 > kawaraya\ ;
+上達 > joutatsu\ ;
+膝元 > hizamoto\ ;
+望蜀 > boushoku\ ;
+宿望 > shukubou\ ;
+脱帽 > datsubou\ ;
+申出 > moushide\ ;
+柄物 > garamono\ ;
+上述 > joujutsu\ ;
+作曲 > sakkyoku\ ;
+耳糞 > mimikuso\ ;
+老若 > rounyaku\ ;
+肉牛 > nikugyuu\ ;
+山元 > yamamoto\ ;
+局地 > kyokuchi\ ;
+貞節 > teisetsu\ ;
+束縛 > sokubaku\ ;
+末葉 > matsuyou\ ;
+何月 > nangatsu\ ;
+尺地 > shakuchi\ ;
+豚草 > butakusa\ ;
+曲論 > kyokuron\ ;
+山側 > yamagawa\ ;
+少少 > shoushou\ ;
+少将 > shoushou\ ;
+暗闇 > kurayami\ ;
+休漁 > kyuuryou\ ;
+玉葱 > tamanegi\ ;
+乳臭 > nyuushuu\ ;
+甘口 > amakuchi\ ;
+木菟 > mimizuku\ ;
+嬌笑 > kyoushou\ ;
+産別 > sanbetsu\ ;
+月蝕 > gesshoku\ ;
+小学 > shougaku\ ;
+様々 > samazama\ ;
+便壺 > bentsubo\ ;
+一輛 > ichiryou\ ;
+賜物 > tamamono\ ;
+生別 > seibetsu\ ;
+首枷 > kubikase\ ;
+子爵 > shishaku\ ;
+例式 > reishiki\ ;
+現生 > gen''nama\ ;
+木苺 > kiichigo\ ;
+犬鷲 > inuwashi\ ;
+本色 > honshoku\ ;
+乱脈 > ranmyaku\ ;
+定植 > teishoku\ ;
+軽々 > karugaru\ ;
+密接 > missetsu\ ;
+一躍 > ichiyaku\ ;
+山人 > yamabito\ ;
+脇息 > kyousoku\ ;
+羽衣 > hagoromo\ ;
+服薬 > fukuyaku\ ;
+属僚 > zokuryou\ ;
+足型 > ashigata\ ;
+画一 > kakuitsu\ ;
+梵刹 > bonsetsu\ ;
+伏流 > fukuryuu\ ;
+対局 > taikyoku\ ;
+猫足 > nekoashi\ ;
+小娘 > komusume\ ;
+代物 > daibutsu\ ;
+姫鱒 > himemasu\ ;
+本腰 > hongoshi\ ;
+一足 > hitoashi\ ;
+腹切 > harakiri\ ;
+両親 > ryoushin\ ;
+晩飯 > banmeshi\ ;
+翼翼 > yokuyoku\ ;
+生傷 > namakizu\ ;
+豚肉 > butaniku\ ;
+脇役 > wakiyaku\ ;
+頭金 > atamakin\ ;
+美質 > bishitsu\ ;
+届出 > todokede\ ;
+赤心 > sekishin\ ;
+本職 > honshoku\ ;
+状骨 > joukotsu\ ;
+翠色 > suishoku\ ;
+両袖 > ryousode\ ;
+核心 > kakushin\ ;
+丸薬 > gan''yaku\ ;
+伸暢 > shinchou\ ;
+朝臣 > choushin\ ;
+宿所 > shukusho\ ;
+果物 > kudamono\ ;
+現物 > genbutsu\ ;
+下請 > shitauke\ ;
+木耳 > kikurage\ ;
+尽力 > jinryoku\ ;
+人畜 > jinchiku\ ;
+仮漆 > kashitsu\ ;
+村立 > sonritsu\ ;
+風脚 > kazaashi\ ;
+係員 > kakariin\ ;
+一諾 > ichidaku\ ;
+小国 > shoukoku\ ;
+学歴 > gakureki\ ;
+宿悪 > shukuaku\ ;
+胸座 > munagura\ ;
+一読 > ichidoku\ ;
+宗教 > shuukyou\ ;
+寥寥 > ryouryou\ ;
+有色 > yuushoku\ ;
+狭量 > kyouryou\ ;
+来着 > raichaku\ ;
+休業 > kyuugyou\ ;
+月色 > gesshoku\ ;
+修了 > shuuryou\ ;
+胸幅 > munehaba\ ;
+一言 > hitokoto\ ;
+宿志 > shukushi\ ;
+耳疾 > jishitsu\ ;
+腕力 > wanryoku\ ;
+腹中 > fukuchuu\ ;
+一角 > hitokado\ ;
+肉欲 > nikuyoku\ ;
+珠玉 > shugyoku\ ;
+什物 > juumotsu\ ;
+主色 > shushoku\ ;
+贋札 > nisefuda\ ;
+肩書 > katagaki\ ;
+信伏 > shinpuku\ ;
+信任 > shin''nin\ ;
+宿弊 > shukuhei\ ;
+鬱々 > utsuutsu\ ;
+乱筆 > ranpitsu\ ;
+人物 > jinbutsu\ ;
+俗信 > zokushin\ ;
+献血 > kenketsu\ ;
+格安 > kakuyasu\ ;
+両蓋 > ryoubuta\ ;
+学業 > gakugyou\ ;
+人爵 > jinshaku\ ;
+猥褻 > waisetsu\ ;
+豚箱 > butabako\ ;
+仮殿 > karidono\ ;
+飛石 > tobiishi\ ;
+乱立 > ranritsu\ ;
+宿帳 > yadochou\ ;
+寒寒 > samuzamu\ ;
+朱筆 > shuhitsu\ ;
+主脈 > shumyaku\ ;
+付添 > tsukisoi\ ;
+本節 > honbushi\ ;
+曲芸 > kyokugei\ ;
+末節 > massetsu\ ;
+足元 > ashimoto\ ;
+財物 > zaibutsu\ ;
+小名 > shoumyou\ ;
+乗組 > norikumi\ ;
+寝姿 > nesugata\ ;
+曳船 > hikibune\ ;
+翌翌 > yokuyoku\ ;
+末筆 > mappitsu\ ;
+昼頃 > hirugoro\ ;
+股旅 > matatabi\ ;
+独身 > dokushin\ ;
+琴曲 > kinkyoku\ ;
+京物 > kyoumono\ ;
+某月 > bougetsu\ ;
+豆粕 > mamekasu\ ;
+実情 > jitsujou\ ;
+中腹 > chuufuku\ ;
+順逆 > jungyaku\ ;
+杉皮 > sugikawa\ ;
+将又 > hatamata\ ;
+脱却 > dakkyaku\ ;
+寂寥 > sekiryou\ ;
+寂寞 > sekibaku\ ;
+食用 > shokuyou\ ;
+某日 > boujitsu\ ;
+晩酌 > banshaku\ ;
+中肉 > chuuniku\ ;
+貞烈 > teiretsu\ ;
+飲物 > nomimono\ ;
+両膚 > ryouhada\ ;
+仲核 > chuukaku\ ;
+九穀 > kyuukoku\ ;
+実弾 > jitsudan\ ;
+下萠 > shitamoe\ ;
+曲者 > kusemono\ ;
+定律 > teiritsu\ ;
+桃園 > momozono\ ;
+首巻 > kubimaki\ ;
+仏気 > hotokegi\ ;
+春風 > harukaze\ ;
+並肉 > naminiku\ ;
+客年 > kyakunen\ ;
+越南 > betonamu\ ;
+両脇 > ryouwaki\ ;
+伸張 > shinchou\ ;
+風窓 > kazamado\ ;
+風穴 > fuuketsu\ ;
+仏殿 > butsuden\ ;
+胸壁 > kyouheki\ ;
+定式 > teishiki\ ;
+星食 > seishoku\ ;
+両肘 > ryouhiji\ ;
+両肌 > ryouhada\ ;
+貞潔 > teiketsu\ ;
+嫡男 > chakunan\ ;
+乳白 > nyuuhaku\ ;
+低密 > teimitsu\ ;
+両耳 > ryoumimi\ ;
+乱発 > ranpatsu\ ;
+脅嚇 > kyoukaku\ ;
+暴虐 > bougyaku\ ;
+肘掛 > hijikake\ ;
+両翼 > ryouyoku\ ;
+密売 > mitsubai\ ;
+木石 > bokuseki\ ;
+玉砕 > gyokusai\ ;
+七草 > nanakusa\ ;
+宮守 > miyamori\ ;
+曠職 > koushoku\ ;
+玉石 > tamaishi\ ;
+三色 > sanshoku\ ;
+仲春 > chuushun\ ;
+桑原 > kuwabara\ ;
+識閾 > shikiiki\ ;
+人波 > hitonami\ ;
+春雨 > harusame\ ;
+翳目 > kasumime\ ;
+猿股 > sarumata\ ;
+曲線 > kyokusen\ ;
+休戚 > kyuuseki\ ;
+客層 > kyakusou\ ;
+春陽 > shun''you\ ;
+貞淑 > teishuku\ ;
+守役 > moriyaku\ ;
+主節 > shusetsu\ ;
+一花 > hitohana\ ;
+顔色 > ganshoku\ ;
+中細 > chuuboso\ ;
+中級 > chuukyuu\ ;
+超克 > choukoku\ ;
+主筆 > shuhitsu\ ;
+率直 > sotchoku\ ;
+猫舌 > nekojita\ ;
+三脚 > sankyaku\ ;
+智識 > chishiki\ ;
+下肥 > shimogoe\ ;
+実害 > jitsugai\ ;
+養殖 > youshoku\ ;
+小一 > shouichi\ ;
+貪欲 > don''yoku\ ;
+人欲 > jin''yoku\ ;
+耐熱 > tainetsu\ ;
+実存 > jitsuzon\ ;
+領袖 > ryoushuu\ ;
+休息 > kyuusoku\ ;
+旱魃 > kanbatsu\ ;
+特集 > tokushuu\ ;
+末男 > batsunan\ ;
+宿坊 > shukubou\ ;
+音質 > onshitsu\ ;
+丸窓 > marumado\ ;
+猫脚 > nekoashi\ ;
+寸借 > sunshaku\ ;
+超俗 > chouzoku\ ;
+曲管 > kyokukan\ ;
+休心 > kyuushin\ ;
+脈動 > myakudou\ ;
+顕職 > kenshoku\ ;
+肩幅 > katahaba\ ;
+案出 > anshutsu\ ;
+股引 > momohiki\ ;
+丸禿 > maruhage\ ;
+供人 > tomobito\ ;
+人様 > hitosama\ ;
+乳牛 > nyuugyuu\ ;
+専一 > sen''itsu\ ;
+枕木 > makuragi\ ;
+股座 > matagura\ ;
+特長 > tokuchou\ ;
+頂角 > choukaku\ ;
+狸藻 > tanukimo\ ;
+缶詰 > kandzume\ ;
+一翼 > ichiyoku\ ;
+実妹 > jitsumai\ ;
+中空 > nakazora\ ;
+柔弱 > nyuujaku\ ;
+飲水 > nomimizu\ ;
+中程 > nakahodo\ ;
+今月 > kongetsu\ ;
+貸本 > kashihon\ ;
+並立 > heiritsu\ ;
+安宿 > yasuyado\ ;
+能力 > nouryoku\ ;
+中秋 > chuushuu\ ;
+物陰 > monokage\ ;
+安安 > yasuyasu\ ;
+学徳 > gakutoku\ ;
+習癖 > shuuheki\ ;
+丸石 > maruishi\ ;
+万緑 > banryoku\ ;
+宿命 > shukumei\ ;
+仏文 > futsubun\ ;
+牛革 > gyuukawa\ ;
+聖日 > seijitsu\ ;
+人柄 > hitogara\ ;
+高々 > takadaka\ ;
+享楽 > kyouraku\ ;
+松柏 > shouhaku\ ;
+群竹 > muratake\ ;
+警蹕 > keihitsu\ ;
+乳濁 > nyuudaku\ ;
+翠玉 > suigyoku\ ;
+日食 > nisshoku\ ;
+仇敵 > kyuuteki\ ;
+靺鞨 > makkatsu\ ;
+姿見 > sugatami\ ;
+実在 > jitsuzai\ ;
+月番 > tsukiban\ ;
+環七 > kan''nana\ ;
+胸先 > munasaki\ ;
+胸元 > munamoto\ ;
+一組 > hitokumi\ ;
+猫糞 > nekobaba\ ;
+旧領 > kyuuryou\ ;
+靴音 > kutsuoto\ ;
+乗物 > norimono\ ;
+風物 > fuubutsu\ ;
+作劇 > sakugeki\ ;
+暖色 > danshoku\ ;
+何卒 > nanitozo\ ;
+率然 > sotsuzen\ ;
+休学 > kyuugaku\ ;
+三筆 > sanpitsu\ ;
+住友 > sumitomo\ ;
+松明 > taimatsu\ ;
+偶々 > tamatama\ ;
+仮役 > kariyaku\ ;
+中皿 > chuuzara\ ;
+胸倉 > munagura\ ;
+人数 > hitokazu\ ;
+婚約 > kon''yaku\ ;
+下穴 > shitaana\ ;
+体力 > tairyoku\ ;
+宿六 > yadoroku\ ;
+耳朶 > mimitabu\ ;
+書留 > kakitome\ ;
+一筋 > hitosuji\ ;
+学寮 > gakuryou\ ;
+一筆 > hitofude\ ;
+片隅 > katasumi\ ;
+豁然 > katsuzen\ ;
+低劣 > teiretsu\ ;
+片陰 > katakage\ ;
+亥月 > gaigetsu\ ;
+特進 > tokushin\ ;
+質屋 > shichiya\ ;
+猪突 > chototsu\ ;
+京方 > kyougata\ ;
+牛鍋 > gyuunabe\ ;
+実名 > jitsumei\ ;
+来月 > raigetsu\ ;
+胸中 > kyouchuu\ ;
+一種 > hitokusa\ ;
+習熟 > shuujuku\ ;
+明達 > meitatsu\ ;
+枡形 > masugata\ ;
+宿便 > shukuben\ ;
+密令 > mitsurei\ ;
+特輯 > tokushuu\ ;
+一秒 > ichibyou\ ;
+主物 > shubutsu\ ;
+群発 > gunpatsu\ ;
+曲球 > kyokkyuu\ ;
+早鐘 > hayagane\ ;
+賢察 > kensatsu\ ;
+二桁 > futaketa\ ;
+来日 > rainichi\ ;
+昇進 > shoushin\ ;
+爪音 > tsumaoto\ ;
+断髪 > danpatsu\ ;
+曲玉 > magatama\ ;
+客分 > kyakubun\ ;
+丘疹 > kyuushin\ ;
+何何 > naninani\ ;
+胆力 > tanryoku\ ;
+事柄 > kotogara\ ;
+仮宮 > karimiya\ ;
+書物 > shomotsu\ ;
+牛酪 > gyuuraku\ ;
+独習 > dokushuu\ ;
+仮宅 > karitaku\ ;
+子宝 > kodakara\ ;
+韮葱 > niranegi\ ;
+佗人 > wabibito\ ;
+仏式 > busshiki\ ;
+頸筋 > kubisuji\ ;
+貪慾 > don''yoku\ ;
+講釈 > koushaku\ ;
+三直 > sanchoku\ ;
+何事 > nanigoto\ ;
+肉太 > nikubuto\ ;
+三百 > sanbyaku\ ;
+族長 > zokuchou\ ;
+特賞 > tokushou\ ;
+客僧 > kyakusou\ ;
+交接 > kousetsu\ ;
+顔着 > ganchaku\ ;
+乳業 > nyuugyou\ ;
+日銀 > nichigin\ ;
+枕席 > chinseki\ ;
+賓客 > hinkyaku\ ;
+実像 > jitsuzou\ ;
+実働 > jitsudou\ ;
+宮人 > miyabito\ ;
+旧里 > furusato\ ;
+一皿 > hitosara\ ;
+一皮 > hitokawa\ ;
+二方 > futakata\ ;
+上略 > jouryaku\ ;
+賊将 > zokushou\ ;
+貫徹 > kantetsu\ ;
+枢密 > suumitsu\ ;
+一癖 > hitokuse\ ;
+球審 > kyuushin\ ;
+宮中 > kyuuchuu\ ;
+豆殻 > mamegara\ ;
+現尺 > genshaku\ ;
+人影 > hitokage\ ;
+客体 > kyakutai\ ;
+実例 > jitsurei\ ;
+木槌 > kidzuchi\ ;
+令姪 > reitetsu\ ;
+現実 > genjitsu\ ;
+肇国 > choukoku\ ;
+客人 > kyakujin\ ;
+霹靂 > hekireki\ ;
+譲葉 > yuzuriha\ ;
+谷水 > tanimizu\ ;
+豪日 > gounichi\ ;
+服毒 > fukudoku\ ;
+職域 > shokuiki\ ;
+暴発 > bouhatsu\ ;
+京形 > kyougata\ ;
+食指 > shokushi\ ;
+牴触 > teishoku\ ;
+日輪 > nichirin\ ;
+肩先 > katasaki\ ;
+外鰐 > sotowani\ ;
+頻発 > hinpatsu\ ;
+伯仲 > hakuchuu\ ;
+本本 > motomoto\ ;
+本末 > honmatsu\ ;
+万物 > banmotsu\ ;
+狭窄 > kyousaku\ ;
+玉杯 > gyokuhai\ ;
+献物 > kenmotsu\ ;
+人山 > hitoyama\ ;
+早足 > hayaashi\ ;
+了承 > ryoushou\ ;
+中流 > chuuryuu\ ;
+霧雨 > kirisame\ ;
+大食 > taishoku\ ;
+文飾 > bunshoku\ ;
+賢哲 > kentetsu\ ;
+片足 > kataashi\ ;
+一片 > hitohira\ ;
+本日 > honjitsu\ ;
+乾拭 > karabuki\ ;
+食感 > shokukan\ ;
+整髪 > seihatsu\ ;
+仏壇 > butsudan\ ;
+学割 > gakuwari\ ;
+整骨 > seikotsu\ ;
+贋作 > nisesaku\ ;
+学則 > gakusoku\ ;
+曲水 > kyokusui\ ;
+風月 > fuugetsu\ ;
+霜雪 > sousetsu\ ;
+乱掘 > rankutsu\ ;
+中毒 > chuudoku\ ;
+九日 > kokonoka\ ;
+日豪 > nichigou\ ;
+仏堂 > butsudou\ ;
+九族 > kyuuzoku\ ;
+響笛 > kyouteki\ ;
+読響 > yomikyou\ ;
+講説 > kousetsu\ ;
+牛角 > gyuukaku\ ;
+大雪 > taisetsu\ ;
+外食 > gaishoku\ ;
+耳屎 > mimikuso\ ;
+夕飯 > yuumeshi\ ;
+職名 > shokumei\ ;
+晩節 > bansetsu\ ;
+二役 > futayaku\ ;
+夕食 > yuushoku\ ;
+二形 > futanari\ ;
+春菊 > shungiku\ ;
+学僕 > gakuboku\ ;
+豆料 > mameryou\ ;
+玉摧 > gyokusai\ ;
+朝敵 > chouteki\ ;
+散髪 > sanpatsu\ ;
+謎謎 > nazonazo\ ;
+山々 > yamayama\ ;
+妄説 > mousetsu\ ;
+頓着 > tonchaku\ ;
+仏噸 > futsuton\ ;
+妖術 > youjutsu\ ;
+雛鳥 > hinadori\ ;
+電飾 > denshoku\ ;
+学修 > gakushuu\ ;
+旧訳 > kyuuyaku\ ;
+月末 > tsukizue\ ;
+独白 > dokuhaku\ ;
+猛烈 > mouretsu\ ;
+爪跡 > tsumeato\ ;
+仮初 > karisome\ ;
+来客 > raikyaku\ ;
+月曜 > getsuyou\ ;
+翌朝 > yokuchou\ ;
+繁雑 > hanzatsu\ ;
+職制 > shokusei\ ;
+新進 > shinshin\ ;
+職分 > shokubun\ ;
+乾式 > kanshiki\ ;
+面識 > menshiki\ ;
+人垣 > hitogaki\ ;
+失錯 > shissaku\ ;
+久方 > hisakata\ ;
+月明 > getsumei\ ;
+声高 > kowadaka\ ;
+論述 > ronjutsu\ ;
+翌春 > yokushun\ ;
+諾諾 > dakudaku\ ;
+識者 > shikisha\ ;
+仕口 > shikuchi\ ;
+中核 > chuukaku\ ;
+象徴 > shouchou\ ;
+珍妙 > chinmyou\ ;
+貝塚 > kaidzuka\ ;
+聖哲 > seitetsu\ ;
+面詰 > menkitsu\ ;
+縞馬 > shimauma\ ;
+食尽 > shokujin\ ;
+賭事 > kakegoto\ ;
+一流 > ichiryuu\ ;
+中柄 > chuugara\ ;
+書札 > shosatsu\ ;
+妙薬 > myouyaku\ ;
+主日 > shujitsu\ ;
+諸諸 > moromoro\ ;
+静謐 > seihitsu\ ;
+諸説 > shosetsu\ ;
+資力 > shiryoku\ ;
+女親 > on''naoya\ ;
+更更 > sarasara\ ;
+杓子 > shakushi\ ;
+曲曲 > kumaguma\ ;
+智略 > chiryaku\ ;
+明色 > meishoku\ ;
+日蝕 > nisshoku\ ;
+他出 > tashutsu\ ;
+雨靴 > amagutsu\ ;
+本式 > honshiki\ ;
+仏前 > butsuzen\ ;
+調進 > choushin\ ;
+雪雲 > yukigumo\ ;
+雨霰 > amearare\ ;
+仏刹 > bussetsu\ ;
+木彫 > mokuchou\ ;
+暑熱 > shonetsu\ ;
+物色 > busshoku\ ;
+職人 > shokunin\ ;
+諧謔 > kaigyaku\ ;
+独特 > dokutoku\ ;
+失速 > shissoku\ ;
+春繭 > harumayu\ ;
+餞別 > senbetsu\ ;
+熱願 > netsugan\ ;
+末年 > matsunen\ ;
+嫡孫 > chakuson\ ;
+物臭 > monogusa\ ;
+聖別 > seibetsu\ ;
+嫡子 > chakushi\ ;
+諤諤 > gakugaku\ ;
+狡猾 > koukatsu\ ;
+考察 > kousatsu\ ;
+雑食 > zasshoku\ ;
+主持 > shumochi\ ;
+嬰児 > midorigo\ ;
+縦長 > tatenaga\ ;
+施設 > shisetsu\ ;
+狂的 > kyouteki\ ;
+争奪 > soudatsu\ ;
+鞏膜 > kyoumaku\ ;
+仏像 > butsuzou\ ;
+老実 > roujitsu\ ;
+大逆 > daigyaku\ ;
+日蓮 > nichiren\ ;
+熱雷 > netsurai\ ;
+試食 > shishoku\ ;
+敷金 > shikikin\ ;
+人力 > jinryoku\ ;
+九州 > kyuushuu\ ;
+新調 > shinchou\ ;
+食堂 > shokudou\ ;
+嫡妻 > chakusai\ ;
+一棟 > hitomune\ ;
+失跡 > shisseki\ ;
+人刺 > jinsashi\ ;
+電鉄 > dentetsu\ ;
+人別 > ninbetsu\ ;
+論説 > ronsetsu\ ;
+本局 > honkyoku\ ;
+中指 > nakayubi\ ;
+貸借 > taishaku\ ;
+獲得 > kakutoku\ ;
+論詰 > ronkitsu\ ;
+一桁 > hitoketa\ ;
+施術 > shijutsu\ ;
+顛末 > tenmatsu\ ;
+貫入 > kan''nyuu\ ;
+財力 > zairyoku\ ;
+語部 > kataribe\ ;
+習得 > shuutoku\ ;
+三曲 > sankyoku\ ;
+景物 > keibutsu\ ;
+方術 > houjutsu\ ;
+特約 > tokuyaku\ ;
+一枚 > hitohira\ ;
+繰言 > kurigoto\ ;
+牛肉 > gyuuniku\ ;
+杉垣 > sugigaki\ ;
+王室 > oushitsu\ ;
+一束 > hitotaba\ ;
+京劇 > kyougeki\ ;
+牡羊 > ohitsuji\ ;
+谷底 > tanizoko\ ;
+一木 > ichiboku\ ;
+人傑 > jinketsu\ ;
+韜略 > touryaku\ ;
+旧臣 > kyuushin\ ;
+昨秋 > sakushuu\ ;
+好色 > koushoku\ ;
+谷川 > tanigawa\ ;
+仄仄 > honobono\ ;
+買主 > kainushi\ ;
+一時 > hitotoki\ ;
+昇給 > shoukyuu\ ;
+片膝 > katahiza\ ;
+乗客 > joukyaku\ ;
+丸形 > marugata\ ;
+飲助 > nomisuke\ ;
+曲悪 > kyokuaku\ ;
+昇級 > shoukyuu\ ;
+一旗 > hitohata\ ;
+一族 > ichizoku\ ;
+食品 > shokuhin\ ;
+物納 > butsunou\ ;
+失調 > shitchou\ ;
+煮魚 > nizakana\ ;
+失語 > shitsugo\ ;
+耳元 > mimimoto\ ;
+早耳 > hayamimi\ ;
+丸底 > maruzoko\ ;
+面色 > menshoku\ ;
+人人 > hitobito\ ;
+散逸 > san''itsu\ ;
+中心 > chuushin\ ;
+片肌 > katahada\ ;
+詳録 > shouroku\ ;
+嫡嗣 > chakushi\ ;
+書式 > shoshiki\ ;
+人事 > hitogoto\ ;
+総髪 > souhatsu\ ;
+服属 > fukuzoku\ ;
+特種 > tokudane\ ;
+中形 > chuugata\ ;
+片耳 > katamimi\ ;
+旧習 > kyuushuu\ ;
+人中 > hitonaka\ ;
+人並 > hitonami\ ;
+特称 > tokushou\ ;
+一撃 > ichigeki\ ;
+中庭 > nakaniwa\ ;
+少々 > shoushou\ ;
+始発 > shihatsu\ ;
+謝絶 > shazetsu\ ;
+乾咳 > karazeki\ ;
+中幕 > nakamaku\ ;
+中幅 > chuuhaba\ ;
+諸膝 > morohiza\ ;
+諸膚 > morohada\ ;
+中席 > nakaseki\ ;
+朝夕 > chouseki\ ;
+牧笛 > bokuteki\ ;
+両得 > ryoutoku\ ;
+縦軸 > tatejiku\ ;
+青色 > seishoku\ ;
+食前 > shokuzen\ ;
+姦物 > kanbutsu\ ;
+食刻 > shokkoku\ ;
+玉垣 > tamagaki\ ;
+集録 > shuuroku\ ;
+雲足 > kumoashi\ ;
+緑風 > ryokufuu\ ;
+物種 > monodane\ ;
+並幅 > namihaba\ ;
+妙策 > myousaku\ ;
+静脈 > joumyaku\ ;
+物税 > butsuzei\ ;
+主客 > shukyaku\ ;
+飼主 > kainushi\ ;
+諸肌 > morohada\ ;
+並巾 > namihaba\ ;
+交交 > komogomo\ ;
+爆薬 > bakuyaku\ ;
+中島 > nakajima\ ;
+故郷 > furusato\ ;
+事共 > kotodomo\ ;
+不悉 > fushitsu\ ;
+旧約 > kyuuyaku\ ;
+牧神 > bokushin\ ;
+緑青 > rokushou\ ;
+方舟 > hakobune\ ;
+飯事 > mamagoto\ ;
+中小 > chuushou\ ;
+曲射 > kyokusha\ ;
+雁金 > karigane\ ;
+日米 > nichibei\ ;
+焼鳥 > yakitori\ ;
+謹直 > kinchoku\ ;
+中学 > chuugaku\ ;
+練鉄 > rentetsu\ ;
+調薬 > chouyaku\ ;
+変説 > hensetsu\ ;
+敵襲 > tekishuu\ ;
+放逐 > houchiku\ ;
+三役 > san''yaku\ ;
+煩雑 > hanzatsu\ ;
+認識 > ninshiki\ ;
+旧章 > kyuushou\ ;
+緑門 > ryokumon\ ;
+村人 > murabito\ ;
+下帯 > shitaobi\ ;
+一役 > hitoyaku\ ;
+豪傑 > gouketsu\ ;
+事事 > kotogoto\ ;
+綿雲 > watagumo\ ;
+乱入 > ran''nyuu\ ;
+綿雪 > watayuki\ ;
+予予 > kanegane\ ;
+旧称 > kyuushou\ ;
+世局 > seikyoku\ ;
+練達 > rentatsu\ ;
+暇暇 > himahima\ ;
+一廉 > hitokado\ ;
+隆隆 > ryuuryuu\ ;
+一度 > hitotabi\ ;
+隅隅 > sumizumi\ ;
+一年 > hitotose\ ;
+静粛 > seishuku\ ;
+塩鮭 > shiozake\ ;
+族籍 > zokuseki\ ;
+大蒜 > nin''niku\ ;
+一幕 > hitomaku\ ;
+丸型 > marugata\ ;
+奉職 > houshoku\ ;
+赫々 > kakukaku\ ;
+一巻 > hitomaki\ ;
+難詰 > nankitsu\ ;
+雀躍 > jakuyaku\ ;
+中塗 > nakanuri\ ;
+陪食 > baishoku\ ;
+頌春 > shoushun\ ;
+万屋 > yorozuya\ ;
+中垣 > nakagaki\ ;
+中型 > chuugata\ ;
+風力 > fuuryoku\ ;
+上客 > joukyaku\ ;
+乱伐 > ranbatsu\ ;
+智日 > chinichi\ ;
+猫属 > nekozoku\ ;
+寒々 > samuzamu\ ;
+一山 > hitoyama\ ;
+中国 > chuugoku\ ;
+天色 > tenshoku\ ;
+頃日 > keijitsu\ ;
+詳註 > shouchuu\ ;
+雑談 > zatsudan\ ;
+族称 > zokushou\ ;
+日直 > nitchoku\ ;
+緑酒 > ryokushu\ ;
+一室 > isshitsu\ ;
+太腿 > futomomo\ ;
+領承 > ryoushou\ ;
+断絶 > danzetsu\ ;
+一子 > hitorigo\ ;
+姫様 > himesama\ ;
+電蓄 > denchiku\ ;
+末代 > matsudai\ ;
+壜詰 > bindzume\ ;
+言霊 > kotodama\ ;
+両国 > ryougoku\ ;
+主取 > shuudori\ ;
+雨蛙 > amagaeru\ ;
+熟読 > jukudoku\ ;
+玉体 > gyokutai\ ;
+牧牛 > bokugyuu\ ;
+塾長 > jukuchou\ ;
+太股 > futomomo\ ;
+有力 > yuuryoku\ ;
+熱血 > nekketsu\ ;
+散薬 > san''yaku\ ;
+玉代 > gyokudai\ ;
+天職 > tenshoku\ ;
+文脈 > bunmyaku\ ;
+集註 > shuuchuu\ ;
+隔週 > kakushuu\ ;
+日用 > nichiyou\ ;
+書取 > kakitori\ ;
+主力 > shuryoku\ ;
+月内 > getsunai\ ;
+七夜 > shichiya\ ;
+乞丐 > kotsugai\ ;
+七夕 > tanabata\ ;
+謡物 > utaimono\ ;
+頻尿 > hin''nyou\ ;
+天罰 > tenbatsu\ ;
+面白 > omoshiro\ ;
+曲名 > kyokumei\ ;
+総轄 > soukatsu\ ;
+中古 > chuuburu\ ;
+何々 > naninani\ ;
+一失 > isshitsu\ ;
+狼座 > ookamiza\ ;
+証跡 > shouseki\ ;
+奮発 > funpatsu\ ;
+新穀 > shinkoku\ ;
+評註 > hyouchuu\ ;
+変色 > henshoku\ ;
+明滅 > meimetsu\ ;
+陸釣 > okadzuri\ ;
+謀略 > bouryaku\ ;
+一塩 > hitoshio\ ;
+風上 > kazakami\ ;
+外股 > sotomata\ ;
+習俗 > shuuzoku\ ;
+降雪 > kousetsu\ ;
+独得 > dokutoku\ ;
+絶食 > zesshoku\ ;
+書初 > kakizome\ ;
+訓釈 > kunshaku\ ;
+誦習 > shoushuu\ ;
+爆笑 > bakushou\ ;
+習作 > shuusaku\ ;
+書冊 > shosatsu\ ;
+特注 > tokuchuu\ ;
+月例 > getsurei\ ;
+暦学 > rekigaku\ ;
+丸傷 > tamakizu\ ;
+奉祝 > houshuku\ ;
+頌徳 > shoutoku\ ;
+防食 > boushoku\ ;
+爪痕 > tsumeato\ ;
+中共 > chuukyou\ ;
+並列 > heiretsu\ ;
+久久 > hisabisa\ ;
+緑豆 > ryokutou\ ;
+好物 > koubutsu\ ;
+雲脚 > kumoashi\ ;
+青畳 > aodatami\ ;
+雛菊 > hinagiku\ ;
+失策 > shissaku\ ;
+時時 > tokidoki\ ;
+中傷 > chuushou\ ;
+失笑 > shisshou\ ;
+敗色 > haishoku\ ;
+雪膚 > yukihada\ ;
+難色 > nanshoku\ ;
+暗室 > anshitsu\ ;
+陵辱 > ryoujoku\ ;
+下味 > shitaaji\ ;
+結髪 > keppatsu\ ;
+焼酎 > shouchuu\ ;
+昼時 > hirudoki\ ;
+声色 > seishoku\ ;
+丸事 > marugoto\ ;
+文節 > bunsetsu\ ;
+文箱 > fumibako\ ;
+大筒 > oodzutsu\ ;
+丸丸 > marumaru\ ;
+防雪 > bousetsu\ ;
+雪肌 > yukihada\ ;
+訳読 > yakudoku\ ;
+七味 > shichimi\ ;
+方略 > houryaku\ ;
+丸一 > maruichi\ ;
+狭小 > kyoushou\ ;
+中低 > nakabiku\ ;
+総説 > sousetsu\ ;
+始末 > shimatsu\ ;
+文筆 > bunpitsu\ ;
+大童 > oowarawa\ ;
+青玉 > seigyoku\ ;
+両側 > ryousoku\ ;
+失神 > shisshin\ ;
+集落 > shuuraku\ ;
+静物 > seibutsu\ ;
+万卒 > bansotsu\ ;
+中京 > chuukyou\ ;
+一向 > hitasura\ ;
+独学 > dokugaku\ ;
+昨朝 > sakuchou\ ;
+一叢 > hitomura\ ;
+曲事 > kusegoto\ ;
+雑色 > zasshoku\ ;
+中中 > nakanaka\ ;
+安々 > yasuyasu\ ;
+教習 > kyoushuu\ ;
+陞進 > shoushin\ ;
+類別 > ruibetsu\ ;
+縮緬 > chirimen\ ;
+昨暁 > sakugyou\ ;
+結願 > kechigan\ ;
+昨春 > sakushun\ ;
+万別 > banbetsu\ ;
+焼身 > shoushin\ ;
+頁岩 > ketsugan\ ;
+並並 > naminami\ ;
+縦縞 > tatejima\ ;
+覗魔 > nozokima\ ;
+増設 > zousetsu\ ;
+一割 > ichiwari\ ;
+夕立 > yuudachi\ ;
+塩辛 > shiokara\ ;
+解釈 > kaishaku\ ;
+旧流 > kyuuryuu\ ;
+両両 > ryouryou\ ;
+警抜 > keibatsu\ ;
+変節 > hensetsu\ ;
+絹針 > kinubari\ ;
+獄中 > gokuchuu\ ;
+一入 > hitoshio\ ;
+一先 > hitomazu\ ;
+昇格 > shoukaku\ ;
+繭玉 > mayudama\ ;
+明月 > meigetsu\ ;
+鞭撻 > bentatsu\ ;
+雨粒 > ametsubu\ ;
+増血 > zouketsu\ ;
+暴力 > bouryoku\ ;
+観閲 > kan''etsu\ ;
+易易 > yasuyasu\ ;
+緑藻 > ryokusou\ ;
+壮絶 > souzetsu\ ;
+教籍 > kyouseki\ ;
+領国 > ryougoku\ ;
+明春 > myoushun\ ;
+万代 > yorozuyo\ ;
+支脈 > shimyaku\ ;
+独国 > dokukoku\ ;
+撰述 > senjutsu\ ;
+三下 > sanshita\ ;
+大略 > tairyaku\ ;
+女気 > on''nakke\ ;
+塩豆 > shiomame\ ;
+万世 > yorozuyo\ ;
+万一 > man''ichi\ ;
+雪空 > yukizora\ ;
+謀殺 > bousatsu\ ;
+組長 > kumichou\ ;
+言説 > gensetsu\ ;
+早業 > hayawaza\ ;
+角通 > kakutsuu\ ;
+一両 > ichiryou\ ;
+一一 > itsuitsu\ ;
+統轄 > toukatsu\ ;
+謡曲 > youkyoku\ ;
+紅鱒 > benimasu\ ;
+独唱 > dokushou\ ;
+新潮 > shinchou\ ;
+緑茶 > ryokucha\ ;
+昼席 > hiruseki\ ;
+紅鮭 > benizake\ ;
+納骨 > noukotsu\ ;
+旧株 > kyuukabu\ ;
+姫宮 > himemiya\ ;
+墜落 > tsuiraku\ ;
+数百 > suuhyaku\ ;
+集約 > shuuyaku\ ;
+誘発 > yuuhatsu\ ;
+領収 > ryoushuu\ ;
+片栗 > katakuri\ ;
+旬月 > jungetsu\ ;
+天爵 > tenshaku\ ;
+煎薬 > sen''yaku\ ;
+電略 > denryaku\ ;
+文物 > bunbutsu\ ;
+改築 > kaichiku\ ;
+試筋 > tamesuji\ ;
+試筆 > shihitsu\ ;
+旧暦 > kyuureki\ ;
+日曜 > nichiyou\ ;
+隔膜 > kakumaku\ ;
+旬日 > junjitsu\ ;
+散発 > sanpatsu\ ;
+雑税 > zatsuzei\ ;
+読物 > yomimono\ ;
+雪盲 > setsumou\ ;
+警察 > keisatsu\ ;
+解説 > kaisetsu\ ;
+緩緩 > yuruyuru\ ;
+早早 > hayabaya\ ;
+角貝 > tsunogai\ ;
+摂食 > sesshoku\ ;
+西陣 > nishijin\ ;
+触角 > shokkaku\ ;
+壁紙 > kabegami\ ;
+触覚 > shokkaku\ ;
+旧敵 > kyuuteki\ ;
+特徴 > tokuchou\ ;
+紐革 > himokawa\ ;
+旧教 > kyuukyou\ ;
+集積 > shuuseki\ ;
+埋骨 > maikotsu\ ;
+旗本 > hatamoto\ ;
+外物 > gaibutsu\ ;
+觝触 > teishoku\ ;
+級長 > kyuuchou\ ;
+斬殺 > zansatsu\ ;
+物情 > butsujou\ ;
+締結 > teiketsu\ ;
+革新 > kakushin\ ;
+集票 > shuuhyou\ ;
+智力 > chiryoku\ ;
+雨男 > ameotoko\ ;
+爆沈 > bakuchin\ ;
+夜烏 > yogarasu\ ;
+姫垣 > himegaki\ ;
+熊笹 > kumazasa\ ;
+熱発 > neppatsu\ ;
+順列 > junretsu\ ;
+墨繩 > suminawa\ ;
+謙抑 > ken''yoku\ ;
+撮要 > satsuyou\ ;
+独修 > dokushuu\ ;
+変物 > henbutsu\ ;
+墨縄 > suminawa\ ;
+春宵 > shunshou\ ;
+物影 > monokage\ ;
+闇雲 > yamikumo\ ;
+続落 > zokuraku\ ;
+雪玉 > yukidama\ ;
+摘録 > tekiroku\ ;
+仄々 > honobono\ ;
+早技 > hayawaza\ ;
+終身 > shuushin\ ;
+緊縮 > kinshuku\ ;
+試着 > shichaku\ ;
+外濠 > sotobori\ ;
+妾宅 > shoutaku\ ;
+星宿 > seishuku\ ;
+角袖 > kakusode\ ;
+闇闇 > yamiyami\ ;
+多湿 > tashitsu\ ;
+人々 > hitobito\ ;
+面接 > mensetsu\ ;
+雑用 > zatsuyou\ ;
+新株 > shinkabu\ ;
+摺足 > suriashi\ ;
+旁旁 > katagata\ ;
+新柄 > shingara\ ;
+政略 > seiryaku\ ;
+見通 > mitooshi\ ;
+難物 > nanbutsu\ ;
+見返 > mikaeshi\ ;
+増結 > zouketsu\ ;
+明察 > meisatsu\ ;
+姫君 > himegimi\ ;
+攻略 > kouryaku\ ;
+結論 > ketsuron\ ;
+奏曲 > soukyoku\ ;
+霽月 > seigetsu\ ;
+防蝕 > boushoku\ ;
+新暦 > shinreki\ ;
+焼肉 > yakiniku\ ;
+熾烈 > shiretsu\ ;
+結言 > ketsugen\ ;
+証票 > shouhyou\ ;
+随筆 > zuihitsu\ ;
+外法 > sotonori\ ;
+新春 > shinshun\ ;
+新旧 > shinkyuu\ ;
+陸続 > rikuzoku\ ;
+熱熱 > atsuatsu\ ;
+増築 > zouchiku\ ;
+交々 > komogomo\ ;
+間食 > kanshoku\ ;
+縮減 > shukugen\ ;
+新教 > shinkyou\ ;
+壮烈 > souretsu\ ;
+繁殖 > hanshoku\ ;
+天極 > tenkyoku\ ;
+狂信 > kyoushin\ ;
+旧幕 > kyuubaku\ ;
+絹莢 > kinusaya\ ;
+失格 > shikkaku\ ;
+閨閥 > keibatsu\ ;
+日常 > nichijou\ ;
+雑然 > zatsuzen\ ;
+敗滅 > haimetsu\ ;
+放熱 > hounetsu\ ;
+誘殺 > yuusatsu\ ;
+闊達 > kattatsu\ ;
+降職 > koushoku\ ;
+素質 > soshitsu\ ;
+垂髪 > taregami\ ;
+雁爪 > gandzume\ ;
+縦波 > tatenami\ ;
+細説 > saisetsu\ ;
+診療 > shinryou\ ;
+続続 > zokuzoku\ ;
+爆撃 > bakugeki\ ;
+見識 > kenshiki\ ;
+誰某 > daresore\ ;
+焼糞 > yakekuso\ ;
+旋律 > senritsu\ ;
+諸式 > shoshiki\ ;
+熱源 > netsugen\ ;
+解職 > kaishoku\ ;
+事々 > kotogoto\ ;
+夜桜 > yozakura\ ;
+文末 > bunmatsu\ ;
+旧宅 > kyuutaku\ ;
+調教 > choukyou\ ;
+予々 > kanegane\ ;
+時偶 > tokitama\ ;
+如実 > nyojitsu\ ;
+斎日 > saijitsu\ ;
+角膜 > kakumaku\ ;
+熱涙 > netsurui\ ;
+諒承 > ryoushou\ ;
+電極 > denkyoku\ ;
+塵箱 > gomibako\ ;
+敏活 > binkatsu\ ;
+開闢 > kaibyaku\ ;
+煥発 > kanpatsu\ ;
+大日 > dainichi\ ;
+韓人 > karabito\ ;
+外枠 > sotowaku\ ;
+敷板 > shikiita\ ;
+説明 > setsumei\ ;
+縦横 > tateyoko\ ;
+要訣 > youketsu\ ;
+増発 > zouhatsu\ ;
+明哲 > meitetsu\ ;
+夜昼 > yoruhiru\ ;
+点訳 > ten''yaku\ ;
+夕月 > yuudzuki\ ;
+方式 > houshiki\ ;
+門閥 > monbatsu\ ;
+飄々 > hyouhyou\ ;
+春先 > harusaki\ ;
+始値 > hajimene\ ;
+新形 > shingata\ ;
+翼々 > yokuyoku\ ;
+陸相 > rikushou\ ;
+絹綿 > kinuwata\ ;
+牆壁 > shouheki\ ;
+壊滅 > kaimetsu\ ;
+際物 > kiwamono\ ;
+夭折 > yousetsu\ ;
+奨学 > shougaku\ ;
+集注 > shuuchuu\ ;
+敵方 > tekigata\ ;
+長長 > naganaga\ ;
+新年 > shin''nen\ ;
+爆心 > bakushin\ ;
+約諾 > yakudaku\ ;
+数日 > suujitsu\ ;
+本々 > motomoto\ ;
+防縮 > boushuku\ ;
+擁立 > youritsu\ ;
+数数 > kazukazu\ ;
+大所 > oodokoro\ ;
+旧国 > kyuukoku\ ;
+地鼠 > jinezumi\ ;
+純血 > junketsu\ ;
+粉飾 > funshoku\ ;
+縦書 > tategaki\ ;
+擦疵 > surikizu\ ;
+粉食 > funshoku\ ;
+塚穴 > tsukaana\ ;
+外接 > gaisetsu\ ;
+評注 > hyouchuu\ ;
+照焼 > teriyaki\ ;
+失心 > shisshin\ ;
+絶筆 > zeppitsu\ ;
+難曲 > nankyoku\ ;
+計略 > keiryaku\ ;
+夙成 > shukusei\ ;
+見落 > miotoshi\ ;
+点薬 > ten''yaku\ ;
+炸薬 > sakuyaku\ ;
+新宅 > shintaku\ ;
+埋設 > maisetsu\ ;
+接骨 > sekkotsu\ ;
+陽物 > youbutsu\ ;
+論客 > ronkyaku\ ;
+角笛 > tsunobue\ ;
+熱望 > netsubou\ ;
+長針 > choushin\ ;
+閲読 > etsudoku\ ;
+誰彼 > tarekare\ ;
+米食 > beishoku\ ;
+索莫 > sakubaku\ ;
+結縄 > ketsujou\ ;
+久々 > hisabisa\ ;
+雑曲 > zakkyoku\ ;
+太巻 > futomaki\ ;
+新妻 > niidzuma\ ;
+結紮 > kessatsu\ ;
+夙志 > shukushi\ ;
+翌々 > yokuyoku\ ;
+旧劇 > kyuugeki\ ;
+摘芯 > tekishin\ ;
+関説 > kansetsu\ ;
+物事 > monogoto\ ;
+訳注 > yakuchuu\ ;
+改札 > kaisatsu\ ;
+煮沸 > shafutsu\ ;
+大嵐 > ooarashi\ ;
+製鉄 > seitetsu\ ;
+装飾 > soushoku\ ;
+雑文 > zatsubun\ ;
+丸々 > marumaru\ ;
+紙花 > kamibana\ ;
+焼物 > yakimono\ ;
+敵役 > tekiyaku\ ;
+結節 > kessetsu\ ;
+長軸 > choujiku\ ;
+外庭 > sotoniwa\ ;
+組紐 > kumihimo\ ;
+粒銀 > tsubugin\ ;
+震幅 > shinpuku\ ;
+整式 > seishiki\ ;
+開豁 > kaikatsu\ ;
+長身 > choushin\ ;
+縁日 > en''nichi\ ;
+大局 > taikyoku\ ;
+新型 > shingata\ ;
+夜嵐 > yoarashi\ ;
+数式 > suushiki\ ;
+更々 > sarasara\ ;
+牛乳 > gyuunyuu\ ;
+中々 > nakanaka\ ;
+曲々 > kumaguma\ ;
+長足 > chousoku\ ;
+塩物 > shiomono\ ;
+要職 > youshoku\ ;
+片側 > katagawa\ ;
+褶襞 > shuuheki\ ;
+雀斑 > sobakasu\ ;
+旧俗 > kyuuzoku\ ;
+雲形 > kumogata\ ;
+経穴 > keiketsu\ ;
+並々 > naminami\ ;
+撞着 > douchaku\ ;
+旧作 > kyuusaku\ ;
+紅花 > benibana\ ;
+陰湿 > inshitsu\ ;
+編曲 > henkyoku\ ;
+組立 > kumitate\ ;
+開設 > kaisetsu\ ;
+両々 > ryouryou\ ;
+細細 > hosoboso\ ;
+試掘 > shikutsu\ ;
+塩焼 > shioyaki\ ;
+外局 > gaikyoku\ ;
+増殖 > zoushoku\ ;
+旧人 > furubito\ ;
+訳業 > yakugyou\ ;
+排雪 > haisetsu\ ;
+粛軍 > shukugun\ ;
+熱感 > netsukan\ ;
+失墜 > shittsui\ ;
+国鳥 > kokuchou\ ;
+諸共 > morotomo\ ;
+夫夫 > sorezore\ ;
+紡織 > boushoku\ ;
+外客 > gaikyaku\ ;
+熱情 > netsujou\ ;
+外孫 > sotomago\ ;
+糖蜜 > toumitsu\ ;
+誠実 > seijitsu\ ;
+難役 > nan''yaku\ ;
+救急 > kyuukyuu\ ;
+塗物 > nurimono\ ;
+版下 > hanshita\ ;
+除湿 > joshitsu\ ;
+熔接 > yousetsu\ ;
+統率 > tousotsu\ ;
+長調 > chouchou\ ;
+旅先 > tabisaki\ ;
+点綴 > tentetsu\ ;
+細筆 > saihitsu\ ;
+雪嶺 > setsurei\ ;
+絹物 > kinumono\ ;
+訳柄 > wakegara\ ;
+襟腰 > erikoshi\ ;
+結着 > ketchaku\ ;
+緑林 > ryokurin\ ;
+結盟 > ketsumei\ ;
+熱弁 > netsuben\ ;
+雑念 > zatsunen\ ;
+討死 > uchijini\ ;
+支払 > shiharai\ ;
+親睦 > shinboku\ ;
+堀端 > horibata\ ;
+陥没 > kanbotsu\ ;
+新劇 > shingeki\ ;
+角牛 > kakugyuu\ ;
+雑役 > zatsueki\ ;
+雪山 > yukiyama\ ;
+諸人 > morobito\ ;
+陣没 > jinbotsu\ ;
+陽極 > youkyoku\ ;
+父上 > chichiue\ ;
+雪害 > setsugai\ ;
+長袖 > nagasode\ ;
+一々 > itsuitsu\ ;
+防熱 > bounetsu\ ;
+難局 > nankyoku\ ;
+縄張 > nawabari\ ;
+外堀 > sotobori\ ;
+経略 > keiryaku\ ;
+裏道 > uramichi\ ;
+隣接 > rinsetsu\ ;
+継母 > mamahaha\ ;
+大喝 > daikatsu\ ;
+紙筆 > shihitsu\ ;
+教学 > kyougaku\ ;
+露出 > roshutsu\ ;
+訪日 > hounichi\ ;
+塩水 > shiomizu\ ;
+敷地 > shikichi\ ;
+隆昌 > ryuushou\ ;
+新修 > shinshuu\ ;
+大吉 > daikichi\ ;
+新作 > shinsaku\ ;
+関脇 > sekiwake\ ;
+燭台 > shokudai\ ;
+炭窯 > sumigama\ ;
+電圧 > den''atsu\ ;
+雨女 > ameon''na\ ;
+爆傷 > bakushou\ ;
+新任 > shin''nin\ ;
+激震 > gekishin\ ;
+間色 > kanshoku\ ;
+変圧 > hen''atsu\ ;
+親王 > shin''nou\ ;
+大卒 > daisotsu\ ;
+総括 > soukatsu\ ;
+解決 > kaiketsu\ ;
+政局 > seikyoku\ ;
+壁役 > kabeyaku\ ;
+掛軸 > kakejiku\ ;
+縄尻 > nawajiri\ ;
+裲襠 > uchikake\ ;
+基督 > kirisuto\ ;
+褪色 > taishoku\ ;
+大別 > taibetsu\ ;
+大切 > taisetsu\ ;
+斉列 > seiretsu\ ;
+雪国 > yukiguni\ ;
+大冊 > taisatsu\ ;
+緻密 > chimitsu\ ;
+閑職 > kanshoku\ ;
+変哲 > hentetsu\ ;
+糸竹 > shichiku\ ;
+開脚 > kaikyaku\ ;
+支局 > shikyoku\ ;
+失保 > shitsuho\ ;
+終熄 > shuusoku\ ;
+外力 > gairyoku\ ;
+調伏 > choubuku\ ;
+雛型 > hinagata\ ;
+要略 > youryaku\ ;
+救国 > kyuukoku\ ;
+門脈 > monmyaku\ ;
+褐色 > kasshoku\ ;
+整列 > seiretsu\ ;
+電力 > denryoku\ ;
+接触 > sesshoku\ ;
+数列 > suuretsu\ ;
+大仏 > daibutsu\ ;
+関節 > kansetsu\ ;
+放埒 > houratsu\ ;
+絞殺 > kousatsu\ ;
+外側 > sotogawa\ ;
+表門 > omotemon\ ;
+数冊 > suusatsu\ ;
+雲助 > kumosuke\ ;
+雪原 > setsugen\ ;
+雑嚢 > zatsunou\ ;
+濁酒 > doburoku\ ;
+土質 > doshitsu\ ;
+敵側 > tekigawa\ ;
+訥弁 > totsuben\ ;
+裏表 > uraomote\ ;
+読了 > dokuryou\ ;
+灰篩 > haifurui\ ;
+粥腹 > kayubara\ ;
+瀉血 > shaketsu\ ;
+堅炭 > katazumi\ ;
+綿弓 > watayumi\ ;
+縮写 > shukusha\ ;
+教卓 > kyoutaku\ ;
+垂耳 > taremimi\ ;
+詰問 > kitsumon\ ;
+売却 > baikyaku\ ;
+採血 > saiketsu\ ;
+縦列 > juuretsu\ ;
+行革 > gyoukaku\ ;
+絶望 > zetsubou\ ;
+撃沈 > gekichin\ ;
+角柱 > kakuchuu\ ;
+国辱 > kokujoku\ ;
+教則 > kyousoku\ ;
+墨客 > bokkyaku\ ;
+士卒 > shisotsu\ ;
+地袋 > jibukuro\ ;
+敵中 > tekichuu\ ;
+売出 > uridashi\ ;
+緊密 > kinmitsu\ ;
+揺篭 > yurikago\ ;
+雪像 > setsuzou\ ;
+紅玉 > kougyoku\ ;
+米蔵 > komegura\ ;
+潮風 > shiokaze\ ;
+型紙 > katagami\ ;
+訪客 > houkyaku\ ;
+許嫁 > iinazuke\ ;
+捏造 > netsuzou\ ;
+散佚 > san''itsu\ ;
+許婚 > iinazuke\ ;
+索漠 > sakubaku\ ;
+閏秒 > uruubyou\ ;
+潤飾 > junshoku\ ;
+拳骨 > genkotsu\ ;
+綿密 > menmitsu\ ;
+激越 > gekietsu\ ;
+綿実 > menjitsu\ ;
+細波 > sazanami\ ;
+障壁 > shouheki\ ;
+国賊 > kokuzoku\ ;
+点滅 > tenmetsu\ ;
+触手 > shokushu\ ;
+節食 > sesshoku\ ;
+激賞 > gekishou\ ;
+製織 > seishoku\ ;
+給料 > kyuuryou\ ;
+純潔 > junketsu\ ;
+隔壁 > kakuheki\ ;
+放列 > houretsu\ ;
+陸将 > rikushou\ ;
+終業 > shuugyou\ ;
+雪上 > setsujou\ ;
+粟粒 > zokuryuu\ ;
+観月 > kangetsu\ ;
+統括 > toukatsu\ ;
+拾集 > shuushuu\ ;
+緑地 > ryokuchi\ ;
+焦心 > shoushin\ ;
+節電 > setsuden\ ;
+粘粘 > nebaneba\ ;
+炎熱 > en''netsu\ ;
+国許 > kunimoto\ ;
+開発 > kaihatsu\ ;
+粒粒 > ryuuryuu\ ;
+時々 > tokidoki\ ;
+解式 > kaishiki\ ;
+親族 > shinzoku\ ;
+長石 > chouseki\ ;
+粉粉 > konagona\ ;
+損率 > sonritsu\ ;
+表象 > hyoushou\ ;
+雇人 > yatoinin\ ;
+設問 > setsumon\ ;
+覚書 > oboegaki\ ;
+漆黒 > shikkoku\ ;
+編入 > hen''nyuu\ ;
+拒食 > kyoshoku\ ;
+集中 > shuuchuu\ ;
+累月 > ruigetsu\ ;
+垂直 > suichoku\ ;
+紅殻 > benigara\ ;
+招集 > shoushuu\ ;
+撥弦 > hatsugen\ ;
+行跡 > gyouseki\ ;
+角店 > kadomise\ ;
+練乳 > ren''nyuu\ ;
+米糠 > komenuka\ ;
+総力 > souryoku\ ;
+累日 > ruijitsu\ ;
+在職 > zaishoku\ ;
+総別 > soubetsu\ ;
+埋没 > maibotsu\ ;
+親戚 > shinseki\ ;
+粘着 > nenchaku\ ;
+糞溜 > kusodame\ ;
+緊切 > kinsetsu\ ;
+築造 > chikuzou\ ;
+触媒 > shokubai\ ;
+隊列 > tairetsu\ ;
+索敵 > sakuteki\ ;
+増刷 > zousatsu\ ;
+易々 > yasuyasu\ ;
+緑便 > ryokuben\ ;
+潮足 > shioashi\ ;
+閲歴 > etsureki\ ;
+納札 > nousatsu\ ;
+終息 > shuusoku\ ;
+振袖 > furisode\ ;
+糟汁 > kasujiru\ ;
+約束 > yakusoku\ ;
+衆評 > shuuhyou\ ;
+抑鬱 > yokuutsu\ ;
+指貫 > yubinuki\ ;
+絶大 > zetsudai\ ;
+激臭 > gekishuu\ ;
+見所 > midokoro\ ;
+換物 > kanbutsu\ ;
+粗率 > araritsu\ ;
+終幕 > shuumaku\ ;
+襲撃 > shuugeki\ ;
+結局 > kekkyoku\ ;
+筋骨 > sujibone\ ;
+擦傷 > surikizu\ ;
+観察 > kansatsu\ ;
+観客 > kankyaku\ ;
+濫立 > ranritsu\ ;
+接着 > setchaku\ ;
+陣列 > jinretsu\ ;
+間歇 > kanketsu\ ;
+土筆 > tsukushi\ ;
+衰色 > suishoku\ ;
+粛然 > shukuzen\ ;
+間欠 > kanketsu\ ;
+細引 > hosobiki\ ;
+親局 > oyakyoku\ ;
+管轄 > kankatsu\ ;
+陥入 > kan''nyuu\ ;
+表芸 > omotegei\ ;
+早々 > hayabaya\ ;
+装着 > souchaku\ ;
+終審 > shuushin\ ;
+濃縮 > noushuku\ ;
+討伐 > toubatsu\ ;
+謎々 > nazonazo\ ;
+終宵 > shuushou\ ;
+執心 > shuushin\ ;
+提灯 > chouchin\ ;
+摘心 > tekishin\ ;
+裏町 > uramachi\ ;
+煉乳 > ren''nyuu\ ;
+土神 > uchigami\ ;
+堀川 > horikawa\ ;
+絶命 > zetsumei\ ;
+陋劣 > rouretsu\ ;
+要式 > youshiki\ ;
+筆順 > hitsujun\ ;
+袴着 > hakamagi\ ;
+視察 > shisatsu\ ;
+簡約 > kan''yaku\ ;
+国籍 > kokuseki\ ;
+挽肉 > hikiniku\ ;
+続伸 > zokushin\ ;
+粛清 > shukusei\ ;
+細密 > saimitsu\ ;
+間柄 > aidagara\ ;
+撃墜 > gekitsui\ ;
+堅実 > kenjitsu\ ;
+諸々 > moromoro\ ;
+国策 > kokusaku\ ;
+濫発 > ranpatsu\ ;
+筆陣 > hitsujin\ ;
+結団 > ketsudan\ ;
+螢雪 > keisetsu\ ;
+閏月 > jungetsu\ ;
+覆審 > fukushin\ ;
+開札 > kaisatsu\ ;
+索寞 > sakubaku\ ;
+蝶鮫 > chouzame\ ;
+搦手 > karamete\ ;
+団結 > danketsu\ ;
+旁々 > katagata\ ;
+紙屑 > kamikuzu\ ;
+粕汁 > kasujiru\ ;
+血色 > kesshoku\ ;
+粛正 > shukusei\ ;
+門札 > monsatsu\ ;
+諤々 > gakugaku\ ;
+絶倫 > zetsurin\ ;
+型枠 > katawaku\ ;
+抽象 > chuushou\ ;
+抄録 > shouroku\ ;
+鑑識 > kanshiki\ ;
+闇市 > yamiichi\ ;
+融雪 > yuusetsu\ ;
+簒立 > sanritsu\ ;
+結合 > ketsugou\ ;
+地熱 > chinetsu\ ;
+間接 > kansetsu\ ;
+筋金 > sujigane\ ;
+親告 > shinkoku\ ;
+算術 > sanjutsu\ ;
+潤色 > junshoku\ ;
+表章 > hyoushou\ ;
+親友 > shin''yuu\ ;
+漢訳 > kan''yaku\ ;
+長旅 > nagatabi\ ;
+防人 > sakimori\ ;
+紳商 > shinshou\ ;
+蟻蜂 > aribachi\ ;
+激痛 > gekitsuu\ ;
+観入 > kan''nyuu\ ;
+衝立 > tsuitate\ ;
+抵触 > teishoku\ ;
+簡略 > kanryaku\ ;
+採決 > saiketsu\ ;
+捨猫 > suteneko\ ;
+箱船 > hakobune\ ;
+箱舟 > hakobune\ ;
+蟀谷 > komekami\ ;
+蟯虫 > gyouchuu\ ;
+夫々 > sorezore\ ;
+裁決 > saiketsu\ ;
+視力 > shiryoku\ ;
+粉末 > funmatsu\ ;
+掃滅 > soumetsu\ ;
+埒外 > rachigai\ ;
+排泄 > haisetsu\ ;
+西哲 > seitetsu\ ;
+坪数 > tsubosuu\ ;
+糞尿 > fun''nyou\ ;
+表白 > hyouhaku\ ;
+四百 > yonhyaku\ ;
+細別 > saibetsu\ ;
+手鏡 > tekagami\ ;
+親任 > shin''nin\ ;
+蠏股 > ganimata\ ;
+堀割 > horiwari\ ;
+関守 > sekimori\ ;
+血税 > ketsuzei\ ;
+執務 > shitsumu\ ;
+捕物 > torimono\ ;
+成香 > narikyou\ ;
+終了 > shuuryou\ ;
+米松 > beimatsu\ ;
+節糸 > fushiito\ ;
+型式 > keishiki\ ;
+節米 > setsumai\ ;
+数々 > kazukazu\ ;
+承諾 > shoudaku\ ;
+筆談 > hitsudan\ ;
+抄訳 > shouyaku\ ;
+開局 > kaikyoku\ ;
+窮鳥 > kyuuchou\ ;
+蟹股 > ganimata\ ;
+鎌首 > kamakubi\ ;
+立食 > risshoku\ ;
+衆目 > shuumoku\ ;
+筆触 > hisshoku\ ;
+簡潔 > kanketsu\ ;
+垂幕 > taremaku\ ;
+立願 > ritsugan\ ;
+摂動 > setsudou\ ;
+精密 > seimitsu\ ;
+節穴 > fushiana\ ;
+接断 > setsudan\ ;
+血盟 > ketsumei\ ;
+節税 > setsuzei\ ;
+糸口 > itoguchi\ ;
+手車 > teguruma\ ;
+長尻 > nagajiri\ ;
+濁流 > dakuryuu\ ;
+素人 > shirouto\ ;
+激流 > gekiryuu\ ;
+執事 > shitsuji\ ;
+所轄 > shokatsu\ ;
+拒絶 > kyozetsu\ ;
+排日 > hainichi\ ;
+系列 > keiretsu\ ;
+熱々 > atsuatsu\ ;
+衰滅 > suimetsu\ ;
+採掘 > saikutsu\ ;
+埒内 > rachinai\ ;
+在日 > zainichi\ ;
+漁色 > gyoshoku\ ;
+拙筆 > seppitsu\ ;
+純一 > jun''itsu\ ;
+搬入 > han''nyuu\ ;
+関取 > sekitori\ ;
+搾乳 > sakunyuu\ ;
+蛮骨 > bankotsu\ ;
+漫筆 > manpitsu\ ;
+節用 > setsuyou\ ;
+抜群 > batsugun\ ;
+所説 > shosetsu\ ;
+国柄 > kunigara\ ;
+溶血 > youketsu\ ;
+閑却 > kankyaku\ ;
+手袋 > tebukuro\ ;
+閣僚 > kakuryou\ ;
+手術 > shujutsu\ ;
+緩々 > yuruyuru\ ;
+籤引 > kujibiki\ ;
+簡札 > kansatsu\ ;
+蝶蝶 > chouchou\ ;
+筋肉 > kin''niku\ ;
+窓際 > madogiwa\ ;
+間八 > kanpachi\ ;
+減食 > genshoku\ ;
+笹舟 > sasabune\ ;
+接岸 > setsugan\ ;
+戯言 > tawagoto\ ;
+精力 > seiryoku\ ;
+血液 > ketsueki\ ;
+空風 > karakaze\ ;
+蠏玉 > kanitama\ ;
+血涙 > ketsurui\ ;
+潰滅 > kaimetsu\ ;
+戸袋 > tobukuro\ ;
+推察 > suisatsu\ ;
+接客 > sekkyaku\ ;
+嗅覚 > kyuukaku\ ;
+折節 > orifushi\ ;
+潤滑 > junkatsu\ ;
+間伐 > kanbatsu\ ;
+鎌足 > kamaashi\ ;
+潮流 > chouryuu\ ;
+四月 > shigatsu\ ;
+長刀 > naginata\ ;
+嘲笑 > choushou\ ;
+窮追 > kyuutsui\ ;
+窮迫 > kyuuhaku\ ;
+戦術 > senjutsu\ ;
+握力 > akuryoku\ ;
+複勝 > fukushou\ ;
+蟹玉 > kanitama\ ;
+潮汐 > chouseki\ ;
+簡抜 > kanbatsu\ ;
+潮水 > shiomizu\ ;
+節減 > setsugen\ ;
+鍛鉄 > tantetsu\ ;
+隆々 > ryuuryuu\ ;
+隅々 > sumizumi\ ;
+揚力 > youryoku\ ;
+竹薮 > takeyabu\ ;
+才色 > saishoku\ ;
+蛍雪 > keisetsu\ ;
+立論 > ritsuron\ ;
+米坪 > beitsubo\ ;
+筆箱 > fudebako\ ;
+測量 > sokuryou\ ;
+等等 > nadonado\ ;
+立言 > ritsugen\ ;
+粛党 > shukutou\ ;
+裸出 > rashutsu\ ;
+鍋釜 > nabekama\ ;
+衝撃 > shougeki\ ;
+漂白 > hyouhaku\ ;
+混雑 > konzatsu\ ;
+長久 > choukyuu\ ;
+回折 > kaisetsu\ ;
+地境 > djizakai\ ;
+挿抜 > soubatsu\ ;
+蝦腰 > ebigoshi\ ;
+衣手 > koromode\ ;
+衷心 > chuushin\ ;
+蛸足 > takoashi\ ;
+続々 > zokuzoku\ ;
+深長 > shinchou\ ;
+商量 > shouryou\ ;
+挟撃 > kyougeki\ ;
+接合 > setsugou\ ;
+裏口 > uraguchi\ ;
+蚕食 > sanshoku\ ;
+抑留 > yokuryuu\ ;
+錬鉄 > rentetsu\ ;
+潮時 > shiodoki\ ;
+濃密 > noumitsu\ ;
+表徴 > hyouchou\ ;
+表彰 > hyoushou\ ;
+国学 > kokugaku\ ;
+漠漠 > bakubaku\ ;
+推力 > suiryoku\ ;
+揉事 > momegoto\ ;
+競翔 > kyoushou\ ;
+鼻髭 > hanahige\ ;
+立葵 > tachiaoi\ ;
+粉乳 > fun''nyuu\ ;
+衝心 > shoushin\ ;
+鼻高 > hanataka\ ;
+喀血 > kakketsu\ ;
+才筆 > saihitsu\ ;
+投物 > nagemono\ ;
+地卵 > jitamago\ ;
+米倉 > komegura\ ;
+袖垣 > sodegaki\ ;
+深酒 > fukazake\ ;
+地力 > chiryoku\ ;
+空豆 > soramame\ ;
+振幅 > shinpuku\ ;
+鼻風 > hanakaze\ ;
+排列 > hairetsu\ ;
+米仏 > beifutsu\ ;
+捕失 > hoshitsu\ ;
+竪縞 > tatejima\ ;
+抄物 > shoumono\ ;
+竹簡 > chikukan\ ;
+漂漂 > hyouhyou\ ;
+抹殺 > massatsu\ ;
+裏付 > uradzuke\ ;
+唐鋤 > karasuki\ ;
+憶説 > okusetsu\ ;
+圧出 > asshutsu\ ;
+立脚 > rikkyaku\ ;
+竹箆 > takebera\ ;
+国国 > kuniguni\ ;
+簒奪 > sandatsu\ ;
+均一 > kin''itsu\ ;
+漏泄 > rousetsu\ ;
+鼻革 > hanagawa\ ;
+空説 > kuusetsu\ ;
+圧入 > atsunyuu\ ;
+挙式 > kyoshiki\ ;
+濫入 > ran''nyuu\ ;
+鋼鉄 > koutetsu\ ;
+空言 > soragoto\ ;
+唐金 > karakane\ ;
+虎鬚 > torahige\ ;
+溶発 > youhatsu\ ;
+滴滴 > tekiteki\ ;
+漂流 > hyouryuu\ ;
+虎髭 > torahige\ ;
+鏑矢 > kaburaya\ ;
+漂泊 > hyouhaku\ ;
+虚飾 > kyoshoku\ ;
+拙文 > setsubun\ ;
+箏曲 > soukyoku\ ;
+螢火 > hotarubi\ ;
+鑑札 > kansatsu\ ;
+才略 > sairyaku\ ;
+銀鼠 > gin''nezu\ ;
+濫伐 > ranbatsu\ ;
+拾得 > shuutoku\ ;
+国原 > kunibara\ ;
+蛞蝓 > namekuji\ ;
+掌中 > shouchuu\ ;
+禿鷹 > hagetaka\ ;
+空蝉 > utsusemi\ ;
+築庭 > chikutei\ ;
+篤学 > tokugaku\ ;
+融熱 > yuunetsu\ ;
+黙黙 > mokumoku\ ;
+鍋蓋 > nabebuta\ ;
+成立 > seiritsu\ ;
+筆洗 > fudearai\ ;
+困却 > konkyaku\ ;
+懸絶 > kenzetsu\ ;
+黒黴 > kurokabi\ ;
+海食 > kaishoku\ ;
+黒黒 > kuroguro\ ;
+慎重 > shinchou\ ;
+黒麦 > kuromugi\ ;
+成程 > naruhodo\ ;
+国元 > kunimoto\ ;
+才物 > saibutsu\ ;
+黒鷺 > kurosagi\ ;
+鉤鼻 > kagibana\ ;
+混血 > konketsu\ ;
+箱庭 > hakoniwa\ ;
+拙悪 > setsuaku\ ;
+消長 > shouchou\ ;
+細々 > hosoboso\ ;
+黒鴨 > kurogamo\ ;
+拡張 > kakuchou\ ;
+銀髪 > ginpatsu\ ;
+蛆虫 > ujimushi\ ;
+蝕甚 > shokujin\ ;
+蚕豆 > soramame\ ;
+蠍座 > sasoriza\ ;
+袖丈 > sodetake\ ;
+戦略 > senryaku\ ;
+回勅 > kaichoku\ ;
+国人 > kunibito\ ;
+湿疹 > shisshin\ ;
+嘱望 > shokubou\ ;
+浜風 > hamakaze\ ;
+竪琴 > tategoto\ ;
+渋茶 > shibucha\ ;
+行商 > gyoushou\ ;
+窮策 > kyuusaku\ ;
+蚰蜒 > gejigeji\ ;
+抗日 > kounichi\ ;
+渋色 > shibuiro\ ;
+活魚 > katsugyo\ ;
+築堤 > chikutei\ ;
+空耳 > soramimi\ ;
+銭金 > zenikane\ ;
+拝察 > haisatsu\ ;
+承服 > shoufuku\ ;
+截然 > setsuzen\ ;
+龍舟 > ryuushuu\ ;
+混色 > konshoku\ ;
+溢流 > itsuryuu\ ;
+滞日 > tainichi\ ;
+投技 > nagewaza\ ;
+戛然 > katsuzen\ ;
+我物 > wagamono\ ;
+鼻許 > hanamoto\ ;
+秒針 > byoushin\ ;
+振作 > shinsaku\ ;
+溝泥 > dobudoro\ ;
+銑鉄 > sentetsu\ ;
+禄高 > rokudaka\ ;
+溝水 > dobumizu\ ;
+憂色 > yuushoku\ ;
+空籤 > karakuji\ ;
+鉄骨 > tekkotsu\ ;
+湯煙 > yukemuri\ ;
+洗髪 > senpatsu\ ;
+淡色 > tanshoku\ ;
+私鉄 > shitetsu\ ;
+秒速 > byousoku\ ;
+篤信 > tokushin\ ;
+空箱 > karabako\ ;
+突立 > tottatsu\ ;
+唐草 > karakusa\ ;
+蟻塚 > aridzuka\ ;
+潮先 > shiosaki\ ;
+虚説 > kyosetsu\ ;
+血便 > ketsuben\ ;
+行中 > gyouchuu\ ;
+洋髪 > youhatsu\ ;
+戦没 > senbotsu\ ;
+指先 > yubisaki\ ;
+錦絵 > nishikie\ ;
+商策 > shousaku\ ;
+手枕 > temakura\ ;
+秀逸 > shuuitsu\ ;
+節分 > setsubun\ ;
+戦歿 > senbotsu\ ;
+竹槍 > takeyari\ ;
+融接 > yuusetsu\ ;
+黒鉄 > kurogane\ ;
+潜入 > sen''nyuu\ ;
+黒金 > kurogane\ ;
+洋食 > youshoku\ ;
+等式 > toushiki\ ;
+藩閥 > hanbatsu\ ;
+流量 > ryuuryou\ ;
+感触 > kanshoku\ ;
+鍼灸 > shinkyuu\ ;
+突発 > toppatsu\ ;
+鉤針 > kagibari\ ;
+投宿 > toushuku\ ;
+竹林 > chikurin\ ;
+溶接 > yousetsu\ ;
+啓発 > keihatsu\ ;
+竹材 > chikuzai\ ;
+空発 > kuuhatsu\ ;
+払拭 > fusshoku\ ;
+神風 > kamikaze\ ;
+窃用 > setsuyou\ ;
+流速 > ryuusoku\ ;
+流通 > ryuutsuu\ ;
+滝川 > takigawa\ ;
+穀粒 > kokuryuu\ ;
+筑子 > kokiriko\ ;
+端末 > tanmatsu\ ;
+唐紙 > karakami\ ;
+薦骨 > senkotsu\ ;
+長々 > naganaga\ ;
+蛸焼 > takoyaki\ ;
+祝電 > shukuden\ ;
+恐龍 > kyouryuu\ ;
+私説 > shisetsu\ ;
+品薄 > shinausu\ ;
+拝借 > haishaku\ ;
+截断 > setsudan\ ;
+海蝕 > kaishoku\ ;
+算入 > san''nyuu\ ;
+種紙 > tanegami\ ;
+温熱 > on''netsu\ ;
+鉄鉢 > teppachi\ ;
+私設 > shisetsu\ ;
+満月 > mangetsu\ ;
+鍋物 > nabemono\ ;
+湾曲 > wankyoku\ ;
+波風 > namikaze\ ;
+鑑別 > kanbetsu\ ;
+黒豹 > kurohyou\ ;
+房房 > fusafusa\ ;
+黒豆 > kuromame\ ;
+唐突 > toutotsu\ ;
+黙諾 > mokudaku\ ;
+野鼠 > nonezumi\ ;
+喬木 > kyouboku\ ;
+黙読 > mokudoku\ ;
+恥骨 > chikotsu\ ;
+手心 > tegokoro\ ;
+突然 > totsuzen\ ;
+押切 > oshikiri\ ;
+抑圧 > yokuatsu\ ;
+慶祝 > keishuku\ ;
+筆太 > fudebuto\ ;
+鉄道 > tetsudou\ ;
+粘々 > nebaneba\ ;
+神鏡 > shinkyou\ ;
+渉猟 > shouryou\ ;
+虚脱 > kyodatsu\ ;
+河鱒 > kawamasu\ ;
+銭苔 > zenigoke\ ;
+立札 > tatefuda\ ;
+噛傷 > kamikizu\ ;
+野鶲 > nobitaki\ ;
+演出 > enshutsu\ ;
+測深 > sokushin\ ;
+鼻紙 > hanagami\ ;
+温温 > nukunuku\ ;
+鼻糞 > hanakuso\ ;
+粉々 > konagona\ ;
+悪逆 > akugyaku\ ;
+悪辣 > akuratsu\ ;
+戦慄 > senritsu\ ;
+黒表 > kokuhyou\ ;
+涼秋 > ryoushuu\ ;
+鼻筋 > hanasuji\ ;
+麩質 > fushitsu\ ;
+沈黙 > chinmoku\ ;
+蛍火 > hotarubi\ ;
+金髪 > kinpatsu\ ;
+鉈豆 > natamame\ ;
+磯鷸 > isoshigi\ ;
+溝川 > dobugawa\ ;
+鎔接 > yousetsu\ ;
+鍵束 > kagitaba\ ;
+神速 > shinsoku\ ;
+黒蛇 > kurohebi\ ;
+満悦 > man''etsu\ ;
+我我 > wareware\ ;
+清潔 > seiketsu\ ;
+筆名 > hitsumei\ ;
+程程 > hodohodo\ ;
+蝎座 > sasoriza\ ;
+種畜 > shuchiku\ ;
+筋力 > kinryoku\ ;
+銅色 > doushoku\ ;
+反骨 > hankotsu\ ;
+準尺 > junshaku\ ;
+召集 > shoushuu\ ;
+注進 > chuushin\ ;
+商況 > shoukyou\ ;
+鋼玉 > kougyoku\ ;
+湿度 > shitsudo\ ;
+蟄伏 > chippuku\ ;
+浅葱 > asatsuki\ ;
+戒律 > kairitsu\ ;
+竺学 > jikugaku\ ;
+吹貫 > fukinuki\ ;
+笹原 > sasahara\ ;
+窓枠 > madowaku\ ;
+唐物 > toumotsu\ ;
+叢雲 > murakumo\ ;
+叢雨 > murasame\ ;
+涜神 > tokushin\ ;
+端局 > tankyoku\ ;
+択一 > takuitsu\ ;
+戦局 > senkyoku\ ;
+筆先 > fudesaki\ ;
+銭箱 > zenibako\ ;
+錨泊 > byouhaku\ ;
+鉄血 > tekketsu\ ;
+混浴 > kon''yoku\ ;
+深深 > fukabuka\ ;
+藪蛇 > yabuhebi\ ;
+種物 > tanemono\ ;
+種牛 > taneushi\ ;
+蛇毒 > hebidoku\ ;
+戌年 > inudoshi\ ;
+鼻疾 > bishitsu\ ;
+滑剤 > katsuzai\ ;
+黒船 > kurofune\ ;
+商標 > shouhyou\ ;
+鼎立 > teiritsu\ ;
+銀翼 > gin''yoku\ ;
+泥足 > doroashi\ ;
+鎌形 > kamagata\ ;
+滅却 > mekkyaku\ ;
+釣銭 > tsurisen\ ;
+商業 > shougyou\ ;
+鉱脈 > koumyaku\ ;
+収集 > shuushuu\ ;
+蚊燻 > kaibushi\ ;
+各週 > kakushuu\ ;
+神託 > shintaku\ ;
+承伏 > shoufuku\ ;
+吃逆 > shakkuri\ ;
+麹菌 > koujikin\ ;
+黄色 > koushoku\ ;
+命脈 > meimyaku\ ;
+黒肉 > kuroniku\ ;
+麦藁 > mugiwara\ ;
+竹垣 > takegaki\ ;
+鍛接 > tansetsu\ ;
+針金 > harigane\ ;
+銀縁 > ginbuchi\ ;
+金錆 > kanasabi\ ;
+税率 > zeiritsu\ ;
+立山 > tateyama\ ;
+麦蒔 > mugimaki\ ;
+金鉄 > kintetsu\ ;
+古金 > furugane\ ;
+古里 > furusato\ ;
+啄木 > takuboku\ ;
+口重 > kuchiomo\ ;
+渇望 > katsubou\ ;
+才力 > sairyoku\ ;
+古酒 > furuzake\ ;
+清朝 > shinchou\ ;
+鼻熊 > hanaguma\ ;
+笑劇 > shougeki\ ;
+錫杖 > shakujou\ ;
+空撮 > kuusatsu\ ;
+黙約 > mokuyaku\ ;
+社説 > shasetsu\ ;
+浅緑 > senryoku\ ;
+収録 > shuuroku\ ;
+手刀 > tegatana\ ;
+積極 > sekkyoku\ ;
+打傷 > uchikizu\ ;
+鉄色 > tetsuiro\ ;
+国々 > kuniguni\ ;
+福耳 > fukumimi\ ;
+滅亡 > metsubou\ ;
+慄然 > ritsuzen\ ;
+口述 > koujutsu\ ;
+同説 > dousetsu\ ;
+窒息 > chissoku\ ;
+右足 > migiashi\ ;
+沖釣 > okidzuri\ ;
+竹叢 > takamura\ ;
+黒米 > kurogome\ ;
+収量 > shuuryou\ ;
+鉄腕 > tetsuwan\ ;
+叛逆 > hangyaku\ ;
+點穴 > tenketsu\ ;
+水鳥 > mizudori\ ;
+満喫 > mankitsu\ ;
+呈色 > teishoku\ ;
+我国 > wagakuni\ ;
+薮蛇 > yabuhebi\ ;
+叱責 > shisseki\ ;
+悪舌 > akuzetsu\ ;
+虎猫 > toraneko\ ;
+洒脱 > shadatsu\ ;
+麻綱 > asadzuna\ ;
+黐竿 > mochizao\ ;
+含蓄 > ganchiku\ ;
+反逆 > hangyaku\ ;
+参酌 > sanshaku\ ;
+戦力 > senryoku\ ;
+収輯 > shuushuu\ ;
+各行 > kakugyou\ ;
+戦列 > senretsu\ ;
+鍋底 > nabezoko\ ;
+急進 > kyuushin\ ;
+悪者 > warumono\ ;
+急速 > kyuusoku\ ;
+急追 > kyuutsui\ ;
+急迫 > kyuuhaku\ ;
+鼻水 > hanamizu\ ;
+悽絶 > seizetsu\ ;
+窮境 > kyuukyou\ ;
+悶絶 > monzetsu\ ;
+周章 > shuushou\ ;
+快闊 > kaikatsu\ ;
+水食 > suishoku\ ;
+競作 > kyousaku\ ;
+立命 > ritsumei\ ;
+厳達 > gentatsu\ ;
+厳逹 > gentatsu\ ;
+湾入 > wan''nyuu\ ;
+温室 > onshitsu\ ;
+重説 > juusetsu\ ;
+鍋尻 > nabejiri\ ;
+深憂 > shin''yuu\ ;
+氷震 > hyoushin\ ;
+鉄筆 > teppitsu\ ;
+活眼 > katsugan\ ;
+口裏 > kuchiura\ ;
+洞窟 > doukutsu\ ;
+我儘 > wagamama\ ;
+水際 > mizugiwa\ ;
+重複 > choufuku\ ;
+私物 > shibutsu\ ;
+活発 > kappatsu\ ;
+麦稈 > mugiwara\ ;
+窒塞 > chissoku\ ;
+消沈 > shouchin\ ;
+同色 > doushoku\ ;
+悪筆 > akuhitsu\ ;
+硬骨 > koukotsu\ ;
+我侭 > wagamama\ ;
+沢蠏 > sawagani\ ;
+沢蟹 > sawagani\ ;
+憫察 > binsatsu\ ;
+麗筆 > reihitsu\ ;
+藁紙 > waragami\ ;
+立像 > ritsuzou\ ;
+活用 > katsuyou\ ;
+消毒 > shoudoku\ ;
+商学 > shougaku\ ;
+我人 > warehito\ ;
+鍋墨 > nabezumi\ ;
+成仏 > joubutsu\ ;
+黒猫 > kuroneko\ ;
+我事 > wagakoto\ ;
+同胞 > harakara\ ;
+鉱物 > koubutsu\ ;
+急襲 > kyuushuu\ ;
+同職 > doushoku\ ;
+空夢 > sorayume\ ;
+泥縄 > doronawa\ ;
+徴集 > choushuu\ ;
+酋長 > shuuchou\ ;
+半靴 > hangutsu\ ;
+悶着 > monchaku\ ;
+黄玉 > kougyoku\ ;
+黒熊 > kuroguma\ ;
+蒲魚 > kamatoto\ ;
+惨烈 > sanretsu\ ;
+喉元 > nodomoto\ ;
+空堀 > karabori\ ;
+薄膜 > hakumaku\ ;
+窯元 > kamamoto\ ;
+減圧 > gen''atsu\ ;
+私淑 > shishuku\ ;
+稚拙 > chisetsu\ ;
+祐筆 > yuuhitsu\ ;
+古草 > furukusa\ ;
+口荒 > kuchiara\ ;
+神神 > kamigami\ ;
+祝祷 > shukutou\ ;
+神祐 > shin''yuu\ ;
+祝祭 > shukusai\ ;
+告白 > kokuhaku\ ;
+黄熱 > kounetsu\ ;
+半長 > han''naga\ ;
+鉄瓶 > tetsubin\ ;
+水部 > mizunobu\ ;
+悪癖 > waruguse\ ;
+黒潮 > kuroshio\ ;
+蓄電 > chikuden\ ;
+母鳥 > hahadori\ ;
+口舌 > kouzetsu\ ;
+祝砲 > shukuhou\ ;
+毛髪 > mouhatsu\ ;
+礼節 > reisetsu\ ;
+及落 > kyuuraku\ ;
+銃殺 > juusatsu\ ;
+清国 > shinkoku\ ;
+情熱 > jounetsu\ ;
+空咳 > karazeki\ ;
+蛮力 > banryoku\ ;
+態態 > wazawaza\ ;
+金脈 > kinmyaku\ ;
+只者 > tadamono\ ;
+懇切 > konsetsu\ ;
+禁物 > kinmotsu\ ;
+虐政 > gyakusei\ ;
+名筆 > meihitsu\ ;
+確証 > kakushou\ ;
+社稷 > shashoku\ ;
+同筆 > douhitsu\ ;
+急落 > kyuuraku\ ;
+活溌 > kappatsu\ ;
+配達 > haitatsu\ ;
+鋸屑 > nokokuzu\ ;
+重職 > juushoku\ ;
+流流 > ryuuryuu\ ;
+淀川 > yodogawa\ ;
+惑溺 > wakudeki\ ;
+浅沓 > asagutsu\ ;
+同穴 > douketsu\ ;
+惨殺 > zansatsu\ ;
+酷評 > kokuhyou\ ;
+釣糸 > tsuriito\ ;
+洗熊 > araiguma\ ;
+心身 > shinshin\ ;
+重罰 > juubatsu\ ;
+流氷 > ryuuhyou\ ;
+注目 > chuumoku\ ;
+双脚 > soukyaku\ ;
+汗血 > kanketsu\ ;
+浪曲 > roukyoku\ ;
+金縁 > kinbuchi\ ;
+半道 > hanmichi\ ;
+北陸 > hokuriku\ ;
+原薬 > gen''yaku\ ;
+即諾 > sokudaku\ ;
+活殺 > kassatsu\ ;
+唯唯 > tadatada\ ;
+周流 > shuuryuu\ ;
+稲妻 > inadzuma\ ;
+右筆 > yuuhitsu\ ;
+唐墨 > karasumi\ ;
+史筆 > shihitsu\ ;
+釣竿 > tsurizao\ ;
+針箱 > haribako\ ;
+私曲 > shikyoku\ ;
+心象 > shinshou\ ;
+唱名 > shoumyou\ ;
+只管 > hitasura\ ;
+同着 > douchaku\ ;
+津津 > shinshin\ ;
+卓越 > takuetsu\ ;
+恐竜 > kyouryuu\ ;
+鼻屎 > hanakuso\ ;
+清冽 > seiretsu\ ;
+蒐集 > shuushuu\ ;
+取組 > torikumi\ ;
+蒲鉾 > kamaboko\ ;
+海抜 > kaibatsu\ ;
+金箱 > kanebako\ ;
+虚式 > kyoshiki\ ;
+消息 > shousoku\ ;
+気質 > kishitsu\ ;
+殻頂 > kakuchou\ ;
+口笛 > kuchibue\ ;
+各省 > kakushou\ ;
+原茸 > haratake\ ;
+鴛鴦 > oshidori\ ;
+薬玉 > kusudama\ ;
+虐待 > gyakutai\ ;
+黒枠 > kurowaku\ ;
+酷薄 > kokuhaku\ ;
+心証 > shinshou\ ;
+金穴 > kinketsu\ ;
+原色 > genshoku\ ;
+黒服 > kurofuku\ ;
+勝馬 > kachiuma\ ;
+深刻 > shinkoku\ ;
+破鐘 > waregane\ ;
+必要 > hitsuyou\ ;
+混入 > kon''nyuu\ ;
+忍術 > ninjutsu\ ;
+厳罰 > genbatsu\ ;
+流木 > ryuuboku\ ;
+鈍物 > donbutsu\ ;
+司直 > shichoku\ ;
+協調 > kyouchou\ ;
+後述 > koujutsu\ ;
+禁欲 > kin''yoku\ ;
+渇仰 > katsugou\ ;
+秩序 > chitsujo\ ;
+卒論 > sotsuron\ ;
+水蝕 > suishoku\ ;
+流暢 > ryuuchou\ ;
+水蜜 > suimitsu\ ;
+石高 > kokudaka\ ;
+漂々 > hyouhyou\ ;
+徴証 > choushou\ ;
+命日 > meinichi\ ;
+復讐 > fukushuu\ ;
+復讎 > fukushuu\ ;
+同率 > douritsu\ ;
+惜春 > sekishun\ ;
+礼物 > reimotsu\ ;
+短髪 > tanpatsu\ ;
+虚実 > kyojitsu\ ;
+沖積 > chuuseki\ ;
+蓄財 > chikuzai\ ;
+収穫 > shuukaku\ ;
+恋着 > renchaku\ ;
+復調 > fukuchou\ ;
+悩殺 > nousatsu\ ;
+復誦 > fukushou\ ;
+治略 > chiryaku\ ;
+名物 > meibutsu\ ;
+北進 > hokushin\ ;
+黄昏 > tasogare\ ;
+史略 > shiryaku\ ;
+泥濘 > nukarumi\ ;
+藤棚 > fujidana\ ;
+北辰 > hokushin\ ;
+厳粛 > genshuku\ ;
+鉄棒 > tetsubou\ ;
+鼓室 > koshitsu\ ;
+鳩麦 > hatomugi\ ;
+沈積 > chinseki\ ;
+鉄梃 > kanateko\ ;
+強震 > kyoushin\ ;
+落魄 > rakuhaku\ ;
+量的 > ryouteki\ ;
+忠良 > chuuryou\ ;
+藩札 > hansatsu\ ;
+古疵 > furukizu\ ;
+勅願 > chokugan\ ;
+酒蔵 > sakagura\ ;
+勅題 > chokudai\ ;
+忠臣 > chuushin\ ;
+弱震 > jakushin\ ;
+等々 > nadonado\ ;
+禁札 > kinsatsu\ ;
+種別 > shubetsu\ ;
+黒房 > kurobusa\ ;
+悦楽 > etsuraku\ ;
+水草 > mizukusa\ ;
+愛子 > itoshigo\ ;
+鉄材 > tetsuzai\ ;
+弦音 > tsuruoto\ ;
+唐傘 > karakasa\ ;
+麦束 > mugitaba\ ;
+水茎 > mizuguki\ ;
+憂事 > ureigoto\ ;
+短靴 > tangutsu\ ;
+水苔 > mizugoke\ ;
+洋梨 > younashi\ ;
+残雪 > zansetsu\ ;
+厚紙 > atsugami\ ;
+浴客 > yokkyaku\ ;
+神橋 > shinkyou\ ;
+水船 > mizubune\ ;
+泥沼 > doronuma\ ;
+反発 > hanpatsu\ ;
+神様 > kamisama\ ;
+双発 > souhatsu\ ;
+磨石 > togiishi\ ;
+弁髪 > benpatsu\ ;
+泥水 > doromizu\ ;
+泡沫 > houmatsu\ ;
+神業 > kamiwaza\ ;
+水腹 > mizubara\ ;
+参着 > sanchaku\ ;
+薬毒 > yakudoku\ ;
+確約 > kakuyaku\ ;
+酒色 > shushoku\ ;
+水脈 > suimyaku\ ;
+神棚 > kamidana\ ;
+古物 > furumono\ ;
+快絶 > kaizetsu\ ;
+配色 > haishoku\ ;
+金物 > kanamono\ ;
+神格 > shinkaku\ ;
+禿山 > hageyama\ ;
+十薬 > dokudami\ ;
+沈痛 > chintsuu\ ;
+急病 > kyuubyou\ ;
+針灸 > shinkyuu\ ;
+石鏃 > sekizoku\ ;
+祭日 > saijitsu\ ;
+単色 > tanshoku\ ;
+心腹 > shinpuku\ ;
+決着 > ketchaku\ ;
+税別 > zeibetsu\ ;
+黒幕 > kuromaku\ ;
+祝杯 > shukuhai\ ;
+神木 > shinboku\ ;
+悪擦 > waruzure\ ;
+鼻先 > hanasaki\ ;
+鼻元 > hanamoto\ ;
+神月 > koudzuki\ ;
+収獲 > shuukaku\ ;
+民草 > tamigusa\ ;
+活弁 > katsuben\ ;
+硝薬 > shouyaku\ ;
+和室 > washitsu\ ;
+釈然 > shakuzen\ ;
+称名 > shoumyou\ ;
+禁慾 > kin''yoku\ ;
+哲人 > tetsujin\ ;
+福徳 > fukutoku\ ;
+黒山 > kuroyama\ ;
+勿論 > mochiron\ ;
+強迫 > kyouhaku\ ;
+弔鐘 > choushou\ ;
+怪物 > kaibutsu\ ;
+福引 > fukubiki\ ;
+沼沢 > shoutaku\ ;
+蝶々 > chouchou\ ;
+薄氷 > hakuhyou\ ;
+卒者 > sotsusha\ ;
+油汗 > aburaase\ ;
+原発 > genpatsu\ ;
+割高 > waridaka\ ;
+著述 > chojutsu\ ;
+砲術 > houjutsu\ ;
+厚皮 > atsukawa\ ;
+勅選 > chokusen\ ;
+求積 > kyuuseki\ ;
+毛虱 > kejirami\ ;
+酒糟 > sakekasu\ ;
+酒粕 > sakekasu\ ;
+劇震 > gekishin\ ;
+引金 > hikigane\ ;
+古河 > furukawa\ ;
+復習 > fukushuu\ ;
+毒蛇 > dokuhebi\ ;
+鉄床 > kanatoko\ ;
+名月 > meigetsu\ ;
+名曲 > meikyoku\ ;
+鉄帽 > tetsubou\ ;
+同月 > dougetsu\ ;
+急激 > kyuugeki\ ;
+占算 > urayasan\ ;
+協約 > kyouyaku\ ;
+毒薬 > dokuyaku\ ;
+決然 > ketsuzen\ ;
+殖財 > shokuzai\ ;
+重殺 > juusatsu\ ;
+情実 > joujitsu\ ;
+秋口 > akiguchi\ ;
+金欠 > kinketsu\ ;
+単節 > tansetsu\ ;
+洋式 > youshiki\ ;
+取決 > torikime\ ;
+同日 > doujitsu\ ;
+祭式 > saishiki\ ;
+虐使 > gyakushi\ ;
+沐浴 > mokuyoku\ ;
+徒者 > tadamono\ ;
+鉄山 > tetsuzan\ ;
+原物 > genbutsu\ ;
+力量 > rikiryou\ ;
+洞察 > dousatsu\ ;
+強調 > kyouchou\ ;
+道順 > michijun\ ;
+神徳 > shintoku\ ;
+心神 > shinshin\ ;
+遊食 > yuushoku\ ;
+復籍 > fukuseki\ ;
+欠食 > kesshoku\ ;
+急流 > kyuuryuu\ ;
+毒茸 > dokutake\ ;
+延金 > nobegane\ ;
+碌碌 > rokuroku\ ;
+銭亀 > zenigame\ ;
+歯車 > haguruma\ ;
+強襲 > kyoushuu\ ;
+引越 > hikkoshi\ ;
+剃髪 > teihatsu\ ;
+忽然 > kotsuzen\ ;
+金梃 > kanateko\ ;
+古株 > furukabu\ ;
+勅諚 > chokujou\ ;
+菜食 > saishoku\ ;
+悄悄 > sugosugo\ ;
+硬筆 > kouhitsu\ ;
+神州 > shinshuu\ ;
+彩色 > saishoku\ ;
+必着 > hitchaku\ ;
+知識 > chishiki\ ;
+我々 > wareware\ ;
+進駐 > shinchuu\ ;
+愁傷 > shuushou\ ;
+古服 > furufuku\ ;
+水瓶 > mizugame\ ;
+心的 > shinteki\ ;
+黙劇 > mokugeki\ ;
+吾子 > wagimoko\ ;
+気短 > kimijika\ ;
+蕃殖 > hanshoku\ ;
+得策 > tokusaku\ ;
+勅裁 > chokusai\ ;
+従節 > juusetsu\ ;
+適量 > tekiryou\ ;
+心痛 > shintsuu\ ;
+劇通 > gekitsuu\ ;
+金星 > kinboshi\ ;
+汲汲 > kyuukyuu\ ;
+弾薬 > dan''yaku\ ;
+単発 > tanpatsu\ ;
+必用 > hitsuyou\ ;
+卒直 > sotchoku\ ;
+水玉 > mizutama\ ;
+神学 > shingaku\ ;
+禁圧 > kin''atsu\ ;
+秀作 > shuusaku\ ;
+徳目 > tokumoku\ ;
+里方 > satokata\ ;
+法律 > houritsu\ ;
+礼式 > reishiki\ ;
+収束 > shuusoku\ ;
+釈明 > shakumei\ ;
+活動 > katsudou\ ;
+黒円 > kuromaru\ ;
+法式 > houshiki\ ;
+水物 > mizumono\ ;
+得票 > tokuhyou\ ;
+遥遥 > harubaru\ ;
+派出 > hashutsu\ ;
+釈放 > shakuhou\ ;
+流入 > ryuunyuu\ ;
+残虐 > zangyaku\ ;
+薬屋 > kusuriya\ ;
+薬局 > yakkyoku\ ;
+硬直 > kouchoku\ ;
+合式 > goushiki\ ;
+神妙 > shinmyou\ ;
+遠道 > toomichi\ ;
+当職 > toushoku\ ;
+底革 > sokogawa\ ;
+醜業 > shuugyou\ ;
+薬学 > yakugaku\ ;
+硝石 > shouseki\ ;
+遙遙 > harubaru\ ;
+福助 > fukusuke\ ;
+毛筆 > mouhitsu\ ;
+快活 > kaikatsu\ ;
+去月 > kyogetsu\ ;
+正覚 > shougaku\ ;
+着駅 > chakueki\ ;
+反撥 > hanpatsu\ ;
+建設 > kensetsu\ ;
+恐悦 > kyouetsu\ ;
+蔭様 > kagesama\ ;
+神域 > shin''iki\ ;
+千生 > sen''nari\ ;
+薄弱 > hakujaku\ ;
+恍惚 > koukotsu\ ;
+必然 > hitsuzen\ ;
+恐恐 > kowagowa\ ;
+同局 > doukyoku\ ;
+黒丸 > kuromaru\ ;
+蒸着 > jouchaku\ ;
+半玉 > hangyoku\ ;
+逆風 > gyakufuu\ ;
+分骨 > bunkotsu\ ;
+神国 > shinkoku\ ;
+幼顔 > osanagao\ ;
+強膜 > kyoumaku\ ;
+同宿 > doushuku\ ;
+名実 > meijitsu\ ;
+止血 > shiketsu\ ;
+逐電 > chikuden\ ;
+収拾 > shuushuu\ ;
+動脈 > doumyaku\ ;
+着順 > chakujun\ ;
+蒸発 > jouhatsu\ ;
+逆順 > gyakujun\ ;
+合宿 > gasshuku\ ;
+劇評 > gekihyou\ ;
+酸欠 > sanketsu\ ;
+鉄剤 > tetsuzai\ ;
+硬玉 > kougyoku\ ;
+決断 > ketsudan\ ;
+後発 > kouhatsu\ ;
+副賞 > fukushou\ ;
+鉄分 > tetsubun\ ;
+河底 > kawazoko\ ;
+卒然 > sotsuzen\ ;
+着電 > chakuden\ ;
+広闊 > koukatsu\ ;
+友成 > tomonari\ ;
+水洟 > mizubana\ ;
+即決 > sokketsu\ ;
+後略 > kouryaku\ ;
+前述 > zenjutsu\ ;
+割譲 > katsujou\ ;
+原曲 > genkyoku\ ;
+切願 > setsugan\ ;
+出駕 > shutsuga\ ;
+後産 > nochizan\ ;
+落莫 > rakubaku\ ;
+適評 > tekihyou\ ;
+忙殺 > bousatsu\ ;
+蓋物 > futamono\ ;
+温々 > nukunuku\ ;
+出馬 > shutsuba\ ;
+適訳 > tekiyaku\ ;
+水没 > suibotsu\ ;
+御物 > gyobutsu\ ;
+当節 > tousetsu\ ;
+吸口 > suikuchi\ ;
+悋嗇 > rinshoku\ ;
+吸収 > kyuushuu\ ;
+古川 > furukawa\ ;
+創設 > sousetsu\ ;
+針山 > hariyama\ ;
+殉職 > junshoku\ ;
+取引 > torihiki\ ;
+没年 > botsunen\ ;
+史実 > shijitsu\ ;
+葉脈 > youmyaku\ ;
+台密 > taimitsu\ ;
+達識 > tasshiki\ ;
+収得 > shuutoku\ ;
+麦作 > mugisaku\ ;
+性悪 > shouwaru\ ;
+卑湿 > hishitsu\ ;
+吝嗇 > rinshoku\ ;
+従物 > juubutsu\ ;
+役畜 > ekichiku\ ;
+鉄人 > tetsujin\ ;
+死脈 > shimyaku\ ;
+凡骨 > bonkotsu\ ;
+金屑 > kanakuzu\ ;
+必殺 > hissatsu\ ;
+古寺 > furudera\ ;
+洛中 > rakuchuu\ ;
+凸面 > totsumen\ ;
+吸入 > kyuunyuu\ ;
+到達 > toutatsu\ ;
+口実 > koujitsu\ ;
+劇薬 > gekiyaku\ ;
+短縮 > tanshuku\ ;
+冷麦 > hiyamugi\ ;
+祝典 > shukuten\ ;
+出陳 > shutchin\ ;
+正色 > seishoku\ ;
+葛籠 > tsudzura\ ;
+徳沢 > tokutaku\ ;
+釈尊 > shakuson\ ;
+平鍋 > hiranabe\ ;
+酒樽 > sakadaru\ ;
+弁舌 > benzetsu\ ;
+追録 > tsuiroku\ ;
+恋妻 > koidzuma\ ;
+怖怖 > kowagowa\ ;
+復活 > fukkatsu\ ;
+氷柱 > hyouchuu\ ;
+恫喝 > doukatsu\ ;
+適薬 > tekiyaku\ ;
+剣術 > kenjutsu\ ;
+厳律 > genritsu\ ;
+劫罰 > goubatsu\ ;
+彫琢 > choutaku\ ;
+化物 > bakemono\ ;
+薪割 > makiwari\ ;
+当直 > touchoku\ ;
+前説 > zensetsu\ ;
+副虹 > fukuniji\ ;
+北爆 > hokubaku\ ;
+矢絣 > yagasuri\ ;
+莫逆 > bakugeki\ ;
+常食 > joushoku\ ;
+鰐鮫 > wanizame\ ;
+注入 > chuunyuu\ ;
+急峻 > kyuushun\ ;
+鳩胸 > hatomune\ ;
+勅答 > chokutou\ ;
+氷晶 > hyoushou\ ;
+店賃 > tanachin\ ;
+辮髪 > benpatsu\ ;
+南極 > nankyoku\ ;
+心根 > kokorone\ ;
+冬鳥 > fuyudori\ ;
+破物 > waremono\ ;
+唯々 > tadatada\ ;
+協業 > kyougyou\ ;
+凝集 > gyoushuu\ ;
+各各 > sorezore\ ;
+送達 > soutatsu\ ;
+彫物 > horimono\ ;
+底豆 > sokomame\ ;
+鳥肌 > torihada\ ;
+勾玉 > magatama\ ;
+鳥肉 > toriniku\ ;
+劇臭 > gekishuu\ ;
+母物 > hahamono\ ;
+恐嚇 > kyoukaku\ ;
+深々 > fukabuka\ ;
+真鍮 > shinchuu\ ;
+怠屈 > taikutsu\ ;
+社共 > shakyou\ ;
+心材 > shinzai\ ;
+近間 > chikama\ ;
+去就 > kyoshuu\ ;
+前表 > zenpyou\ ;
+君側 > kunsoku\ ;
+追送 > tsuisou\ ;
+占有 > sen''yuu\ ;
+忌日 > kinichi\ ;
+占書 > urabumi\ ;
+帳面 > choumen\ ;
+直音 > chokuon\ ;
+功績 > kouseki\ ;
+民業 > mingyou\ ;
+薄命 > hakumei\ ;
+席順 > sekijun\ ;
+益鳥 > ekichou\ ;
+沖天 > chuuten\ ;
+応接 > ousetsu\ ;
+瞠若 > doujaku\ ;
+後流 > kouryuu\ ;
+召喚 > shoukan\ ;
+引算 > hikizan\ ;
+卜書 > urabumi\ ;
+帯革 > obikawa\ ;
+出金 > shukkin\ ;
+叫喚 > kyoukan\ ;
+吉凶 > kikkyou\ ;
+重圧 > juuatsu\ ;
+述部 > jutsubu\ ;
+鷲座 > washiza\ ;
+弓箭 > kyuusen\ ;
+分進 > bunshin\ ;
+菩薩 > bosatsu\ ;
+分速 > funsoku\ ;
+水撃 > suigeki\ ;
+沢地 > sawachi\ ;
+切迫 > seppaku\ ;
+南朝 > nanchou\ ;
+念念 > nen''nen\ ;
+Ｎ響 > enukyou\ ;
+正続 > seizoku\ ;
+落第 > rakudai\ ;
+釣合 > tsuriai\ ;
+正絹 > shouken\ ;
+厳容 > gen''you\ ;
+進行 > shinkou\ ;
+吉兆 > kitchou\ ;
+動的 > douteki\ ;
+同僚 > douryou\ ;
+正経 > seikyou\ ;
+北満 > hokuman\ ;
+半格 > hankaku\ ;
+通謀 > tsuubou\ ;
+召命 > shoumei\ ;
+通論 > tsuuron\ ;
+序説 > josetsu\ ;
+泥中 > deichuu\ ;
+底角 > teikaku\ ;
+割興 > warikou\ ;
+徳望 > tokubou\ ;
+急変 > kyuuhen\ ;
+口唇 > koushin\ ;
+鳥網 > toriami\ ;
+恭倹 > kyouken\ ;
+叫号 > kyougou\ ;
+分身 > bunshin\ ;
+刺衝 > shishou\ ;
+幽谷 > yuukoku\ ;
+鄙歌 > hinauta\ ;
+段物 > danmono\ ;
+同信 > doushin\ ;
+石盤 > sekiban\ ;
+死票 > shihyou\ ;
+割腹 > kappuku\ ;
+廐舎 > kyuusha\ ;
+通計 > tsuukei\ ;
+同侶 > douryou\ ;
+台北 > taihoku\ ;
+勤王 > kin''nou\ ;
+廏舎 > kyuusha\ ;
+快復 > kaifuku\ ;
+民有 > min''yuu\ ;
+歴程 > rekitei\ ;
+破滅 > hametsu\ ;
+急増 > kyuuzou\ ;
+通解 > tsuukai\ ;
+判読 > handoku\ ;
+重唱 > juushou\ ;
+名作 > meisaku\ ;
+通観 > tsuukan\ ;
+弔祭 > chousai\ ;
+各停 > kakutei\ ;
+恩借 > onshaku\ ;
+史劇 > shigeki\ ;
+北洋 > hokuyou\ ;
+通覧 > tsuuran\ ;
+適者 > tekisha\ ;
+副腎 > fukujin\ ;
+社中 > shachuu\ ;
+追贈 > tsuizou\ ;
+急報 > kyuuhou\ ;
+師長 > shichou\ ;
+刀身 > toushin\ ;
+加筆 > kahitsu\ ;
+去声 > kyoshou\ ;
+名代 > myoudai\ ;
+匡正 > kyousei\ ;
+合作 > gassaku\ ;
+従業 > juugyou\ ;
+半時 > hantoki\ ;
+落磐 > rakuban\ ;
+原審 > genshin\ ;
+毒液 > dokueki\ ;
+彼氏 > kareshi\ ;
+帝陵 > teiryou\ ;
+徳政 > tokusei\ ;
+民族 > minzoku\ ;
+遠耳 > toomimi\ ;
+名主 > nanushi\ ;
+急坂 > kyuuhan\ ;
+初診 > shoshin\ ;
+広角 > koukaku\ ;
+吉事 > kitsuji\ ;
+氏族 > shizoku\ ;
+弔砲 > chouhou\ ;
+建策 > kensaku\ ;
+前葉 > zen''you\ ;
+通行 > tsuukou\ ;
+同一 > douitsu\ ;
+幾許 > ikubaku\ ;
+重厚 > choukou\ ;
+荷送 > niokuri\ ;
+復旧 > fukkyuu\ ;
+没収 > bosshuu\ ;
+廻章 > kaishou\ ;
+博捜 > hakusou\ ;
+知的 > chiteki\ ;
+各人 > kakujin\ ;
+残留 > zanryuu\ ;
+幕軍 > bakugun\ ;
+建立 > konryuu\ ;
+沃地 > yokuchi\ ;
+遊興 > yuukyou\ ;
+復文 > fukubun\ ;
+合一 > gouitsu\ ;
+別表 > beppyou\ ;
+副署 > fukusho\ ;
+受取 > uketori\ ;
+心房 > shinbou\ ;
+古刹 > kosatsu\ ;
+労相 > roushou\ ;
+郭清 > kakusei\ ;
+出走 > shussou\ ;
+幻覚 > genkaku\ ;
+剛腹 > goufuku\ ;
+歯石 > shiseki\ ;
+恥丘 > chikyuu\ ;
+落盤 > rakuban\ ;
+全麦 > zenbaku\ ;
+博打 > bakuchi\ ;
+追認 > tsuinin\ ;
+量刑 > ryoukei\ ;
+確定 > kakutei\ ;
+重刻 > juukoku\ ;
+確守 > kakushu\ ;
+追試 > tsuishi\ ;
+出資 > shusshi\ ;
+真贋 > shingan\ ;
+気持 > kimochi\ ;
+平角 > heikaku\ ;
+正確 > seikaku\ ;
+追討 > tsuitou\ ;
+毬栗 > igaguri\ ;
+死病 > shibyou\ ;
+共鳴 > kyoumei\ ;
+反収 > tanshuu\ ;
+忖度 > sontaku\ ;
+帯金 > obigane\ ;
+荘重 > souchou\ ;
+心情 > shinjou\ ;
+匹敵 > hitteki\ ;
+部活 > bukatsu\ ;
+野兎 > nousagi\ ;
+永年 > naganen\ ;
+逆行 > gyakkou\ ;
+迅速 > jinsoku\ ;
+後書 > atogaki\ ;
+前膊 > zenpaku\ ;
+金側 > kingawa\ ;
+心性 > shinsei\ ;
+石版 > sekiban\ ;
+述語 > jutsugo\ ;
+碧山 > hekizan\ ;
+沈吟 > chingin\ ;
+重傷 > juushou\ ;
+前脳 > zen''nou\ ;
+年表 > nenpyou\ ;
+前脚 > maeashi\ ;
+歎称 > tanshou\ ;
+出講 > shukkou\ ;
+刺草 > irakusa\ ;
+千振 > senburi\ ;
+進航 > shinkou\ ;
+心得 > kokoroe\ ;
+恒久 > koukyuu\ ;
+只今 > tadaima\ ;
+反則 > hansoku\ ;
+口供 > koukyou\ ;
+強火 > tsuyobi\ ;
+恋仲 > koinaka\ ;
+前肢 > maeashi\ ;
+死球 > shikyuu\ ;
+助番 > sukeban\ ;
+後日 > gonichi\ ;
+配役 > haiyaku\ ;
+恋人 > koibito\ ;
+市長 > shichou\ ;
+怪力 > kairiki\ ;
+征服 > seifuku\ ;
+母様 > kaasama\ ;
+真諦 > shintei\ ;
+弱点 > jakuten\ ;
+連荘 > renchan\ ;
+円顔 > marugao\ ;
+盲進 > moushin\ ;
+忠孝 > chuukou\ ;
+鳥瞰 > choukan\ ;
+幼虫 > youchuu\ ;
+落球 > rakkyuu\ ;
+巨額 > kyogaku\ ;
+割算 > warizan\ ;
+反共 > hankyou\ ;
+残照 > zanshou\ ;
+北東 > hokutou\ ;
+心底 > shintei\ ;
+逸聞 > itsubun\ ;
+酒席 > shuseki\ ;
+石炭 > sekitan\ ;
+氷山 > hyouzan\ ;
+引率 > insotsu\ ;
+延着 > enchaku\ ;
+氷屋 > kooriya\ ;
+危局 > kikyoku\ ;
+凸角 > tokkaku\ ;
+目送 > mokusou\ ;
+徳性 > tokusei\ ;
+直輸 > chokuyu\ ;
+砕氷 > saihyou\ ;
+真言 > shingon\ ;
+建白 > kenpaku\ ;
+武略 > buryaku\ ;
+性分 > shoubun\ ;
+冗長 > jouchou\ ;
+確報 > kakuhou\ ;
+座職 > zashoku\ ;
+口中 > kouchuu\ ;
+眞言 > shingon\ ;
+冷酷 > reikoku\ ;
+殴殺 > ousatsu\ ;
+入魂 > nyuukon\ ;
+志学 > shigaku\ ;
+往日 > oujitsu\ ;
+求婚 > kyuukon\ ;
+反側 > hansoku\ ;
+延発 > enpatsu\ ;
+真西 > manishi\ ;
+弓状 > kyuujou\ ;
+醜名 > shuumei\ ;
+民心 > minshin\ ;
+権高 > kendaka\ ;
+民徳 > mintoku\ ;
+反俗 > hanzoku\ ;
+決勝 > kesshou\ ;
+内陸 > nairiku\ ;
+直路 > chokuro\ ;
+適確 > tekkaku\ ;
+茶釜 > chagama\ ;
+通航 > tsuukou\ ;
+辛酸 > shinsan\ ;
+希釈 > kishaku\ ;
+凶行 > kyoukou\ ;
+毎朝 > maichou\ ;
+白鯨 > hakugei\ ;
+半弓 > hankyuu\ ;
+初荷 > hatsuni\ ;
+北支 > hokushi\ ;
+内閲 > naietsu\ ;
+内閣 > naikaku\ ;
+配属 > haizoku\ ;
+蔵匿 > zoutoku\ ;
+師走 > shiwasu\ ;
+沈倫 > chinrin\ ;
+彰明 > shoumei\ ;
+酒客 > shukaku\ ;
+比日 > hinichi\ ;
+原告 > genkoku\ ;
+白魚 > shirauo\ ;
+半年 > han''nen\ ;
+前納 > zen''nou\ ;
+運筆 > unpitsu\ ;
+鷹匠 > takajou\ ;
+歴然 > rekizen\ ;
+公領 > kouryou\ ;
+近親 > kinshin\ ;
+急使 > kyuushi\ ;
+剽盗 > hyoutou\ ;
+幼若 > youjaku\ ;
+全額 > zengaku\ ;
+標高 > hyoukou\ ;
+即売 > sokubai\ ;
+千度 > chitabi\ ;
+強気 > tsuyoki\ ;
+庁舎 > chousha\ ;
+劇界 > gekikai\ ;
+千年 > chitose\ ;
+劇甚 > gekijin\ ;
+横顔 > yokogao\ ;
+勧業 > kangyou\ ;
+凝視 > gyoushi\ ;
+刺繍 > shishuu\ ;
+瞠目 > doumoku\ ;
+再録 > sairoku\ ;
+真虫 > mamushi\ ;
+鳥獣 > choujuu\ ;
+徹宵 > tesshou\ ;
+卑屈 > hikutsu\ ;
+加熱 > kanetsu\ ;
+再鋳 > saichuu\ ;
+氷塊 > hyoukai\ ;
+卒寿 > sotsuju\ ;
+強欲 > gouyoku\ ;
+協定 > kyoutei\ ;
+兵長 > heichou\ ;
+酌婦 > shakufu\ ;
+砲撃 > hougeki\ ;
+気密 > kimitsu\ ;
+選球 > senkyuu\ ;
+原則 > gensoku\ ;
+共闘 > kyoutou\ ;
+直諫 > chokkan\ ;
+発馬 > hatsuba\ ;
+刺絡 > shiraku\ ;
+全集 > zenshuu\ ;
+卓子 > teiburu\ ;
+直諌 > chokkan\ ;
+直談 > jikidan\ ;
+入電 > nyuuden\ ;
+前章 > zenshou\ ;
+石段 > ishidan\ ;
+武烈 > buretsu\ ;
+直話 > chokuwa\ ;
+磁力 > jiryoku\ ;
+水垢 > mizuaka\ ;
+平臼 > hirausu\ ;
+役所 > yakusho\ ;
+適用 > tekiyou\ ;
+連続 > renzoku\ ;
+強権 > kyouken\ ;
+卵嚢 > ran''nou\ ;
+氏寺 > ujidera\ ;
+入隊 > nyuutai\ ;
+心外 > shingai\ ;
+半宵 > hanshou\ ;
+連絡 > renraku\ ;
+制約 > seiyaku\ ;
+瞑目 > meimoku\ ;
+力点 > rikiten\ ;
+水圧 > suiatsu\ ;
+幻聴 > genchou\ ;
+矯正 > kyousei\ ;
+標題 > hyoudai\ ;
+氷嚢 > hyounou\ ;
+念力 > nenriki\ ;
+直観 > chokkan\ ;
+博奕 > bakuchi\ ;
+直覧 > jikiran\ ;
+千尋 > chihiro\ ;
+全長 > zenchou\ ;
+博大 > hakudai\ ;
+落涙 > rakurui\ ;
+内金 > uchikin\ ;
+登頂 > touchou\ ;
+盗賊 > touzoku\ ;
+博士 > hakushi\ ;
+皇陵 > kouryou\ ;
+発音 > hatsuon\ ;
+入門 > nyuumon\ ;
+毒手 > dokushu\ ;
+石橋 > sekkyou\ ;
+真菌 > shinkin\ ;
+白面 > hakumen\ ;
+徹夜 > tetsuya\ ;
+石槨 > sekkaku\ ;
+快勝 > kaishou\ ;
+切腹 > seppuku\ ;
+忠君 > chuukun\ ;
+蔵人 > kuroudo\ ;
+凶荒 > kyoukou\ ;
+年老 > toshioi\ ;
+苔類 > kokerui\ ;
+発露 > hatsuro\ ;
+兇類 > kyourui\ ;
+途絶 > tozetsu\ ;
+直行 > chokkou\ ;
+力漕 > rikisou\ ;
+占地 > shimeji\ ;
+心地 > kokochi\ ;
+先頃 > senkoro\ ;
+死毒 > shidoku\ ;
+府立 > furitsu\ ;
+師表 > shihyou\ ;
+原作 > gensaku\ ;
+印哲 > intetsu\ ;
+冷評 > reihyou\ ;
+心因 > shin''in\ ;
+出航 > shukkou\ ;
+速算 > sokusan\ ;
+厄前 > yakumae\ ;
+残業 > zangyou\ ;
+荒行 > aragyou\ ;
+内通 > naitsuu\ ;
+勝景 > shoukei\ ;
+瞭然 > ryouzen\ ;
+従属 > juuzoku\ ;
+弦楽 > gengaku\ ;
+劃然 > kakuzen\ ;
+即吟 > sokugin\ ;
+千姫 > senhime\ ;
+忠勤 > chuukin\ ;
+忠勇 > chuuyuu\ ;
+冷覚 > reikaku\ ;
+通算 > tsuusan\ ;
+逆縁 > gyakuen\ ;
+初級 > shokyuu\ ;
+毒性 > dokusei\ ;
+巡遊 > jun''yuu\ ;
+従容 > shouyou\ ;
+南国 > nangoku\ ;
+強暴 > kyoubou\ ;
+幕舎 > bakusha\ ;
+氷原 > hyougen\ ;
+平織 > hiraori\ ;
+応力 > ouryoku\ ;
+勝敗 > shouhai\ ;
+求刑 > kyuukei\ ;
+巻貝 > makigai\ ;
+式次 > shikiji\ ;
+石板 > sekiban\ ;
+写象 > shashou\ ;
+残柱 > zanchuu\ ;
+石材 > sekizai\ ;
+後宮 > koukyuu\ ;
+邦楽 > hougaku\ ;
+剣玉 > kendama\ ;
+北嶺 > hokurei\ ;
+年給 > nenkyuu\ ;
+全量 > zenryou\ ;
+後学 > kougaku\ ;
+還流 > kanryuu\ ;
+即刻 > sokkoku\ ;
+凶聞 > kyoubun\ ;
+民国 > minkoku\ ;
+入金 > nyuukin\ ;
+剛球 > goukyuu\ ;
+半国 > hangoku\ ;
+永別 > eibetsu\ ;
+酷使 > kokushi\ ;
+快作 > kaisaku\ ;
+印刷 > insatsu\ ;
+追納 > tsuinou\ ;
+氷刃 > hyoujin\ ;
+六道 > rokudou\ ;
+北岸 > hokugan\ ;
+前生 > zenshou\ ;
+送籍 > souseki\ ;
+別称 > besshou\ ;
+庭番 > niwaban\ ;
+農薬 > nouyaku\ ;
+近臣 > kinshin\ ;
+遊猟 > yuuryou\ ;
+登録 > touroku\ ;
+占卜 > senboku\ ;
+葉月 > hadzuki\ ;
+巨賊 > kyozoku\ ;
+華燭 > kashoku\ ;
+当惑 > touwaku\ ;
+彫工 > choukou\ ;
+分納 > bun''nou\ ;
+初穂 > hatsuho\ ;
+必勝 > hisshou\ ;
+白銑 > hakusen\ ;
+全速 > zensoku\ ;
+入選 > nyuusen\ ;
+全通 > zentsuu\ ;
+白銅 > hakudou\ ;
+白銀 > hakugin\ ;
+入道 > nyuudou\ ;
+邪曲 > jakyoku\ ;
+卜占 > bokusen\ ;
+工賃 > kouchin\ ;
+氷像 > hyouzou\ ;
+遊牧 > yuuboku\ ;
+週番 > shuuban\ ;
+心労 > shinrou\ ;
+初秋 > shoshuu\ ;
+幾程 > ikuhodo\ ;
+残敵 > zanteki\ ;
+通研 > tsuuken\ ;
+協同 > kyoudou\ ;
+平等 > byoudou\ ;
+過熱 > kanetsu\ ;
+即値 > sokuchi\ ;
+通知 > tsuuchi\ ;
+療養 > ryouyou\ ;
+年端 > toshiha\ ;
+庭球 > teikyuu\ ;
+殉教 > junkyou\ ;
+歌沢 > utazawa\ ;
+勁敵 > keiteki\ ;
+再調 > saichou\ ;
+凝脂 > gyoushi\ ;
+再読 > saidoku\ ;
+求人 > kyuujin\ ;
+功業 > kougyou\ ;
+色黒 > iroguro\ ;
+南北 > nanboku\ ;
+博労 > bakurou\ ;
+破局 > hakyoku\ ;
+単勝 > tanshou\ ;
+正業 > seigyou\ ;
+帯芯 > obishin\ ;
+半周 > hanshuu\ ;
+遡源 > sakugen\ ;
+全身 > zenshin\ ;
+毒害 > dokugai\ ;
+内謁 > naietsu\ ;
+内諾 > naidaku\ ;
+幸福 > koufuku\ ;
+勤恪 > kinkaku\ ;
+出精 > shussei\ ;
+復命 > fukumei\ ;
+若造 > wakazou\ ;
+庚申 > koushin\ ;
+直航 > chokkou\ ;
+店番 > miseban\ ;
+魍魎 > mouryou\ ;
+光量 > kouryou\ ;
+廓清 > kakusei\ ;
+適法 > tekihou\ ;
+優長 > yuuchou\ ;
+忙中 > bouchuu\ ;
+卑劣 > hiretsu\ ;
+利発 > rihatsu\ ;
+復号 > fukugou\ ;
+心像 > shinzou\ ;
+連用 > ren''you\ ;
+気力 > kiryoku\ ;
+氷人 > hyoujin\ ;
+段平 > danbira\ ;
+共販 > kyouhan\ ;
+内証 > naishou\ ;
+内診 > naishin\ ;
+削片 > sakuhen\ ;
+正格 > seikaku\ ;
+強慾 > gouyoku\ ;
+復原 > fukugen\ ;
+発進 > hasshin\ ;
+弔文 > choubun\ ;
+北天 > hokuten\ ;
+北大 > hokudai\ ;
+元金 > motokin\ ;
+内角 > naikaku\ ;
+若輩 > jakuhai\ ;
+益虫 > ekichuu\ ;
+徳利 > tokkuri\ ;
+勁捷 > keishou\ ;
+必修 > hisshuu\ ;
+盲腸 > mouchou\ ;
+徳分 > tokubun\ ;
+蒸器 > mushiki\ ;
+微力 > biryoku\ ;
+匿名 > tokumei\ ;
+庵点 > ioriten\ ;
+延棒 > nobebou\ ;
+常習 > joushuu\ ;
+制球 > seikyuu\ ;
+分秒 > funbyou\ ;
+歓楽 > kanraku\ ;
+水中 > suichuu\ ;
+部局 > bukyoku\ ;
+凍肉 > touniku\ ;
+通用 > tsuuyou\ ;
+草色 > kusairo\ ;
+北境 > hokkyou\ ;
+魂魄 > konpaku\ ;
+徴兵 > chouhei\ ;
+配信 > haishin\ ;
+逗留 > touryuu\ ;
+適正 > tekisei\ ;
+正朝 > seichou\ ;
+正朔 > seisaku\ ;
+全豹 > zenpyou\ ;
+凄腕 > sugoude\ ;
+正服 > seifuku\ ;
+協働 > kyoudou\ ;
+光速 > kousoku\ ;
+勘忍 > kan''nin\ ;
+先進 > senshin\ ;
+先週 > senshuu\ ;
+入貢 > nyuukou\ ;
+酒代 > sakadai\ ;
+白身 > shiromi\ ;
+巫術 > fujutsu\ ;
+速球 > sokkyuu\ ;
+返納 > hen''nou\ ;
+復刻 > fukkoku\ ;
+共謀 > kyoubou\ ;
+軽震 > keishin\ ;
+荒肝 > aragimo\ ;
+出穂 > shussui\ ;
+引換 > hikikae\ ;
+輻輳 > fukusou\ ;
+欲求 > yokkyuu\ ;
+延板 > nobeita\ ;
+真空 > shinkuu\ ;
+眼目 > ganmoku\ ;
+引接 > insetsu\ ;
+色魔 > shikima\ ;
+必中 > hitchuu\ ;
+輪郭 > rinkaku\ ;
+単作 > tansaku\ ;
+省線 > shousen\ ;
+徴候 > choukou\ ;
+弾幕 > danmaku\ ;
+年益 > nen''eki\ ;
+復党 > fukutou\ ;
+光軸 > koujiku\ ;
+廿日 > hatsuka\ ;
+弱志 > jakushi\ ;
+北国 > hokkoku\ ;
+強弓 > goukyuu\ ;
+復元 > fukugen\ ;
+強弁 > kyouben\ ;
+還暦 > kanreki\ ;
+励振 > reishin\ ;
+辞色 > jishoku\ ;
+出社 > shussha\ ;
+草肥 > kusagoe\ ;
+利率 > riritsu\ ;
+発足 > hossoku\ ;
+公評 > kouhyou\ ;
+正教 > seikyou\ ;
+公証 > koushou\ ;
+十六 > juuroku\ ;
+別珍 > betchin\ ;
+協会 > kyoukai\ ;
+先蹴 > senshuu\ ;
+区別 > kubetsu\ ;
+千億 > sen''oku\ ;
+気位 > kigurai\ ;
+弱弟 > jakutei\ ;
+共襟 > tomoeri\ ;
+眼病 > ganbyou\ ;
+六角 > rokkaku\ ;
+卒伍 > sotsugo\ ;
+民俗 > minzoku\ ;
+殯宮 > hinkyuu\ ;
+研学 > kengaku\ ;
+残念 > zan''nen\ ;
+荷積 > nidzumi\ ;
+南中 > nanchuu\ ;
+冷肉 > reiniku\ ;
+落手 > rakushu\ ;
+相続 > souzoku\ ;
+残忍 > zan''nin\ ;
+気付 > kidzuke\ ;
+入試 > nyuushi\ ;
+残心 > zanshin\ ;
+創業 > sougyou\ ;
+凡策 > bonsaku\ ;
+勉強 > benkyou\ ;
+共裏 > tomoura\ ;
+後厄 > atoyaku\ ;
+落成 > rakusei\ ;
+全角 > zenkaku\ ;
+弱年 > jakunen\ ;
+勧学 > kangaku\ ;
+半作 > hansaku\ ;
+得分 > tokubun\ ;
+載録 > sairoku\ ;
+庶流 > shoryuu\ ;
+歴戦 > rekisen\ ;
+川蝦 > kawaebi\ ;
+歌曲 > kakyoku\ ;
+待合 > machiai\ ;
+帰結 > kiketsu\ ;
+石庭 > sekitei\ ;
+卒中 > sotchuu\ ;
+卓上 > takujou\ ;
+削減 > sakugen\ ;
+充足 > juusoku\ ;
+半休 > hankyuu\ ;
+茶腹 > chabara\ ;
+免責 > menseki\ ;
+匹儔 > hitchuu\ ;
+適格 > tekkaku\ ;
+荒縄 > aranawa\ ;
+僻隅 > hekiguu\ ;
+劇暑 > gekisho\ ;
+直経 > chokkei\ ;
+目縁 > mabuchi\ ;
+僻陬 > hekisuu\ ;
+遍歴 > henreki\ ;
+帯紙 > obigami\ ;
+広狭 > koukyou\ ;
+刺激 > shigeki\ ;
+干瓢 > kanpyou\ ;
+鄙劣 > hiretsu\ ;
+辞職 > jishoku\ ;
+償金 > shoukin\ ;
+氏人 > ujihito\ ;
+直系 > chokkei\ ;
+盗聴 > touchou\ ;
+公表 > kouhyou\ ;
+知徳 > chitoku\ ;
+遊歴 > yuureki\ ;
+公衆 > koushuu\ ;
+先負 > senmake\ ;
+知得 > chitoku\ ;
+眼球 > gankyuu\ ;
+帽章 > boushou\ ;
+近称 > kinshou\ ;
+復仇 > fukkyuu\ ;
+発議 > hatsugi\ ;
+出監 > shukkan\ ;
+送球 > soukyuu\ ;
+良風 > ryoufuu\ ;
+分留 > bunryuu\ ;
+勘審 > kanshin\ ;
+適材 > tekizai\ ;
+邀撃 > yougeki\ ;
+連濁 > rendaku\ ;
+歿後 > botsugo\ ;
+真相 > shinsou\ ;
+真直 > massugu\ ;
+役名 > yakumei\ ;
+従僕 > juuboku\ ;
+道楽 > douraku\ ;
+瞬断 > shundan\ ;
+発語 > hatsugo\ ;
+勧奨 > kanshou\ ;
+力投 > rikitou\ ;
+刑獄 > keigoku\ ;
+百計 > hyakkei\ ;
+償還 > shoukan\ ;
+千両 > senryou\ ;
+後先 > atosaki\ ;
+十九 > juukyuu\ ;
+発話 > hatsuwa\ ;
+較量 > kouryou\ ;
+北半 > hokuhan\ ;
+廃業 > haigyou\ ;
+発註 > hatchuu\ ;
+十両 > juuryou\ ;
+力戦 > rikisen\ ;
+十七 > juunana\ ;
+十一 > juuichi\ ;
+引当 > hikiate\ ;
+逸民 > itsumin\ ;
+律儀 > richigi\ ;
+前歴 > zenreki\ ;
+副本 > fukuhon\ ;
+艱難 > kan''nan\ ;
+式微 > shikibi\ ;
+遊楽 > yuuraku\ ;
+軽量 > keiryou\ ;
+軽重 > keichou\ ;
+目算 > mokusan\ ;
+副書 > fukusho\ ;
+出産 > shussan\ ;
+出生 > shussei\ ;
+発覚 > hakkaku\ ;
+進水 > shinsui\ ;
+欲望 > yokubou\ ;
+勇将 > yuushou\ ;
+盟約 > meiyaku\ ;
+相称 > soushou\ ;
+彼処 > kashiko\ ;
+矮小 > waishou\ ;
+睫毛 > matsuge\ ;
+邸宅 > teitaku\ ;
+短小 > tanshou\ ;
+目端 > mehashi\ ;
+勉学 > bengaku\ ;
+鯨肉 > geiniku\ ;
+茉莉 > matsuri\ ;
+優越 > yuuetsu\ ;
+百行 > hyakkou\ ;
+近眼 > chikame\ ;
+菌毒 > kindoku\ ;
+歴年 > rekinen\ ;
+弓師 > yumishi\ ;
+光覚 > koukaku\ ;
+先覚 > senkaku\ ;
+後作 > atosaku\ ;
+巨舶 > kyohaku\ ;
+底流 > teiryuu\ ;
+近目 > chikame\ ;
+発表 > happyou\ ;
+選択 > sentaku\ ;
+欠格 > kekkaku\ ;
+共著 > kyoucho\ ;
+広漠 > koubaku\ ;
+草笛 > kusabue\ ;
+勝報 > shouhou\ ;
+初潮 > shochou\ ;
+助平 > sukebei\ ;
+強大 > kyoudai\ ;
+輪読 > rindoku\ ;
+知将 > chishou\ ;
+内膜 > naimaku\ ;
+強壮 > kyousou\ ;
+役僧 > yakusou\ ;
+劇戦 > gekisen\ ;
+毒刃 > dokujin\ ;
+白蝋 > hakurou\ ;
+帆綱 > hodzuna\ ;
+軍長 > gunchou\ ;
+力役 > rikieki\ ;
+冷笑 > reishou\ ;
+茶粥 > chagayu\ ;
+廻心 > kaishin\ ;
+看病 > kanbyou\ ;
+目礼 > mokurei\ ;
+輸血 > yuketsu\ ;
+勝地 > shouchi\ ;
+初湯 > hatsuyu\ ;
+兇行 > kyoukou\ ;
+凶猛 > kyoumou\ ;
+艦長 > kanchou\ ;
+凍石 > touseki\ ;
+制欲 > seiyoku\ ;
+形勝 > keishou\ ;
+出版 > shuppan\ ;
+弟嫁 > otoyome\ ;
+凶状 > kyoujou\ ;
+樺色 > kabairo\ ;
+退潮 > taichou\ ;
+砂地 > sunachi\ ;
+道教 > doukyou\ ;
+過日 > kajitsu\ ;
+郷党 > kyoutou\ ;
+転針 > tenshin\ ;
+茶箱 > chabako\ ;
+帰着 > kichaku\ ;
+適所 > tekisho\ ;
+僻邑 > hekiyuu\ ;
+歎息 > tansoku\ ;
+苛虐 > kagyaku\ ;
+写経 > shakyou\ ;
+歓心 > kanshin\ ;
+彫像 > chouzou\ ;
+石塔 > sekitou\ ;
+返球 > henkyuu\ ;
+石塀 > ishibei\ ;
+弟姫 > otohime\ ;
+利殖 > rishoku\ ;
+役人 > yakunin\ ;
+帯皮 > obikawa\ ;
+辱知 > jokuchi\ ;
+勧告 > kankoku\ ;
+盲目 > moumoku\ ;
+痛風 > tsuufuu\ ;
+逸材 > itsuzai\ ;
+出炭 > shuttan\ ;
+弱国 > jakkoku\ ;
+幹流 > kanryuu\ ;
+歯学 > shigaku\ ;
+干渉 > kanshou\ ;
+荷物 > nimotsu\ ;
+北上 > hokujou\ ;
+副手 > fukushu\ ;
+剽悍 > hyoukan\ ;
+色里 > irozato\ ;
+転進 > tenshin\ ;
+盤石 > banjaku\ ;
+農相 > noushou\ ;
+遊撃 > yuugeki\ ;
+入船 > nyuusen\ ;
+分溜 > bunryuu\ ;
+入舎 > nyuusha\ ;
+逐次 > chikuji\ ;
+辺疆 > henkyou\ ;
+前方 > maekata\ ;
+白菜 > hakusai\ ;
+割愛 > katsuai\ ;
+適性 > tekisei\ ;
+監督 > kantoku\ ;
+躁鬱 > souutsu\ ;
+研削 > kensaku\ ;
+楽隊 > gakutai\ ;
+正客 > seikaku\ ;
+殉国 > junkoku\ ;
+全能 > zen''nou\ ;
+逆比 > gyakuhi\ ;
+冥福 > meifuku\ ;
+睦月 > mutsuki\ ;
+逸文 > itsubun\ ;
+刻本 > kokuhon\ ;
+正子 > shoushi\ ;
+幽欝 > yuuutsu\ ;
+殺傷 > sasshou\ ;
+内約 > naiyaku\ ;
+強味 > tsuyomi\ ;
+剣戟 > kengeki\ ;
+返照 > henshou\ ;
+艇長 > teichou\ ;
+適当 > tekitou\ ;
+転身 > tenshin\ ;
+分流 > bunryuu\ ;
+権能 > ken''nou\ ;
+凶漢 > kyoukan\ ;
+正嫡 > seiteki\ ;
+欲情 > yokujou\ ;
+座敷 > zashiki\ ;
+楼閣 > roukaku\ ;
+分注 > bunchuu\ ;
+包丁 > houchou\ ;
+制服 > seifuku\ ;
+発芽 > hatsuga\ ;
+進数 > shinsuu\ ;
+出港 > shukkou\ ;
+百般 > hyappan\ ;
+出渠 > shukkyo\ ;
+進攻 > shinkou\ ;
+落城 > rakujou\ ;
+割当 > wariate\ ;
+欲念 > yokunen\ ;
+樟脳 > shounou\ ;
+近火 > chikabi\ ;
+別格 > bekkaku\ ;
+疾風 > shippuu\ ;
+落地 > rakuchi\ ;
+共編 > kyouhen\ ;
+此奴 > koyatsu\ ;
+強勢 > kyousei\ ;
+盗癖 > touheki\ ;
+船長 > senchou\ ;
+研修 > kenshuu\ ;
+刷新 > sasshin\ ;
+殿中 > denchuu\ ;
+強力 > gouriki\ ;
+序曲 > jokyoku\ ;
+床板 > yukaita\ ;
+通有 > tsuuyuu\ ;
+剛愎 > goufuku\ ;
+兵糧 > hyourou\ ;
+遷客 > senkaku\ ;
+強剛 > kyougou\ ;
+盆石 > bonseki\ ;
+欣悦 > kinetsu\ ;
+強制 > kyousei\ ;
+兵粮 > hyourou\ ;
+道心 > doushin\ ;
+典籍 > tenseki\ ;
+道徳 > doutoku\ ;
+病難 > byounan\ ;
+力士 > rikishi\ ;
+車輛 > sharyou\ ;
+車輌 > sharyou\ ;
+兵籍 > heiseki\ ;
+劃定 > kakutei\ ;
+速断 > sokudan\ ;
+車軸 > shajiku\ ;
+内積 > naiseki\ ;
+透析 > touseki\ ;
+冠省 > kanshou\ ;
+剣形 > kengata\ ;
+荒物 > aramono\ ;
+盲爆 > moubaku\ ;
+僻論 > hekiron\ ;
+強兵 > kyouhei\ ;
+公約 > kouyaku\ ;
+段丘 > dankyuu\ ;
+農牧 > nouboku\ ;
+入綿 > irewata\ ;
+横線 > yokosen\ ;
+白羽 > shiraha\ ;
+峻険 > shunken\ ;
+巫祝 > fushuku\ ;
+軸装 > jikusou\ ;
+監獄 > kangoku\ ;
+別時 > betsuji\ ;
+弔問 > choumon\ ;
+勅勘 > chokkan\ ;
+全級 > zenkyuu\ ;
+内福 > naifuku\ ;
+写真 > shashin\ ;
+全納 > zen''nou\ ;
+凝滞 > gyoutai\ ;
+道床 > doushou\ ;
+殊勝 > shushou\ ;
+軍足 > gunsoku\ ;
+高額 > kougaku\ ;
+僻言 > hekigen\ ;
+剣幕 > kenmaku\ ;
+凶歳 > kyousai\ ;
+剛強 > goukyou\ ;
+分業 > bungyou\ ;
+真正 > shinsei\ ;
+転調 > tenchou\ ;
+歌姫 > utahime\ ;
+遠山 > tooyama\ ;
+横糸 > yokoito\ ;
+次式 > jishiki\ ;
+強健 > kyouken\ ;
+遊弋 > yuuyoku\ ;
+遺失 > ishitsu\ ;
+選奨 > senshou\ ;
+僻見 > hekiken\ ;
+花葵 > hanaaoi\ ;
+落命 > rakumei\ ;
+遊廓 > yuukaku\ ;
+軟調 > nanchou\ ;
+樹立 > juritsu\ ;
+魔術 > majutsu\ ;
+凡流 > bonryuu\ ;
+市町 > shichou\ ;
+舌音 > zetsuon\ ;
+初日 > hatsuhi\ ;
+引受 > hikiuke\ ;
+劇変 > gekihen\ ;
+建国 > kenkoku\ ;
+短冊 > tanzaku\ ;
+石像 > sekizou\ ;
+督戦 > tokusen\ ;
+刺戟 > shigeki\ ;
+眺望 > choubou\ ;
+劇壇 > gekidan\ ;
+近況 > kinkyou\ ;
+欠席 > kesseki\ ;
+巨石 > kyoseki\ ;
+前徴 > zenchou\ ;
+歴史 > rekishi\ ;
+白線 > hakusen\ ;
+平服 > heifuku\ ;
+転覆 > tenpuku\ ;
+機略 > kiryaku\ ;
+劇場 > gekijou\ ;
+身近 > midjika\ ;
+優良 > yuuryou\ ;
+逆旅 > gekiryo\ ;
+身辺 > shinpen\ ;
+分析 > bunseki\ ;
+弱体 > jakutai\ ;
+出棺 > shukkan\ ;
+白紙 > hakushi\ ;
+党籍 > touseki\ ;
+横笛 > yokobue\ ;
+発給 > hakkyuu\ ;
+軽薄 > keihaku\ ;
+引力 > inryoku\ ;
+内相 > naishou\ ;
+公称 > koushou\ ;
+円盆 > marubon\ ;
+著作 > chosaku\ ;
+痩身 > soushin\ ;
+花色 > hanairo\ ;
+速成 > sokusei\ ;
+高閣 > koukaku\ ;
+左直 > sachoku\ ;
+前年 > zen''nen\ ;
+送料 > souryou\ ;
+鱗木 > rinboku\ ;
+白粉 > oshiroi\ ;
+内的 > naiteki\ ;
+苦節 > kusetsu\ ;
+白米 > hakumai\ ;
+短信 > tanshin\ ;
+華実 > kajitsu\ ;
+横穴 > yokoana\ ;
+興隆 > kouryuu\ ;
+極道 > gokudou\ ;
+良計 > ryoukei\ ;
+眷族 > kenzoku\ ;
+道学 > dougaku\ ;
+側面 > sokumen\ ;
+出校 > shukkou\ ;
+幣束 > heisoku\ ;
+助勢 > sukezei\ ;
+功名 > koumyou\ ;
+艇身 > teishin\ ;
+過密 > kamitsu\ ;
+劇団 > gekidan\ ;
+努力 > doryoku\ ;
+庭師 > niwashi\ ;
+石亭 > sekitei\ ;
+骨骼 > kokkaku\ ;
+助力 > joryoku\ ;
+廟堂 > byoudou\ ;
+追放 > tsuihou\ ;
+峡間 > kyoukan\ ;
+荒涼 > kouryou\ ;
+死傷 > shishou\ ;
+遊客 > yuukaku\ ;
+入社 > nyuusha\ ;
+橋畔 > kyouhan\ ;
+遊学 > yuugaku\ ;
+歳入 > sainyuu\ ;
+内申 > naishin\ ;
+鳩合 > kyuugou\ ;
+欠字 > ketsuji\ ;
+正北 > seihoku\ ;
+傷跡 > kizuato\ ;
+武力 > buryoku\ ;
+適地 > tekichi\ ;
+功力 > kouriki\ ;
+荒波 > aranami\ ;
+近業 > kingyou\ ;
+真書 > shinsho\ ;
+舶載 > hakusai\ ;
+庵室 > anjitsu\ ;
+凶暴 > kyoubou\ ;
+共益 > kyoueki\ ;
+正副 > seifuku\ ;
+通性 > tsuusei\ ;
+正則 > seisoku\ ;
+前審 > zenshin\ ;
+鬱血 > ukketsu\ ;
+兼用 > ken''you\ ;
+労作 > rousaku\ ;
+通念 > tsuunen\ ;
+凋残 > chouzan\ ;
+冷涼 > reiryou\ ;
+軽舟 > keishuu\ ;
+落体 > rakutai\ ;
+的確 > tekkaku\ ;
+連年 > ren''nen\ ;
+切換 > kirikae\ ;
+痕跡 > konseki\ ;
+干拓 > kantaku\ ;
+死人 > shibito\ ;
+公的 > kouteki\ ;
+建前 > tatemae\ ;
+切掛 > kikkake\ ;
+進展 > shinten\ ;
+欠如 > ketsujo\ ;
+骨頂 > kotchou\ ;
+横着 > ouchaku\ ;
+分掌 > bunshou\ ;
+弁償 > benshou\ ;
+刑戮 > keiriku\ ;
+通弊 > tsuuhei\ ;
+発祥 > hasshou\ ;
+通弁 > tsuuben\ ;
+歴伝 > rekiden\ ;
+幽愁 > yuushuu\ ;
+落人 > ochuudo\ ;
+入監 > nyuukan\ ;
+死中 > shichuu\ ;
+歴任 > rekinin\ ;
+別後 > betsugo\ ;
+歴代 > rekidai\ ;
+歴仕 > rekishi\ ;
+共用 > kyouyou\ ;
+極貧 > gokuhin\ ;
+共産 > kyousan\ ;
+共生 > kyousei\ ;
+権益 > ken''eki\ ;
+幻惑 > genwaku\ ;
+転落 > tenraku\ ;
+幕政 > bakusei\ ;
+県有 > ken''yuu\ ;
+追懐 > tsuikai\ ;
+魚腹 > gyofuku\ ;
+通常 > tsuujou\ ;
+追憶 > tsuioku\ ;
+盛況 > seikyou\ ;
+初心 > shoshin\ ;
+躊躇 > chuucho\ ;
+川獺 > kawauso\ ;
+鬼蓮 > onibasu\ ;
+真摯 > shinshi\ ;
+皆目 > kaimoku\ ;
+白砂 > hakusha\ ;
+通巻 > tsuukan\ ;
+歴世 > rekishi\ ;
+概評 > gaihyou\ ;
+弋人 > yokujin\ ;
+航跡 > kouseki\ ;
+凝望 > gyoubou\ ;
+傾角 > keikaku\ ;
+典獄 > tengoku\ ;
+鯛焼 > taiyaki\ ;
+適合 > tekigou\ ;
+劇剤 > gekizai\ ;
+別席 > besseki\ ;
+元禄 > genroku\ ;
+追想 > tsuisou\ ;
+傾覆 > keifuku\ ;
+魚肉 > gyoniku\ ;
+追悼 > tsuitou\ ;
+入用 > nyuuyou\ ;
+白眼 > hakugan\ ;
+高進 > koushin\ ;
+荒業 > arawaza\ ;
+痛論 > tsuuron\ ;
+刺子 > sashiko\ ;
+正体 > shoutai\ ;
+逆徒 > gyakuto\ ;
+高速 > kousoku\ ;
+山麓 > sanroku\ ;
+幼弱 > youjaku\ ;
+迎春 > geishun\ ;
+白目 > shirome\ ;
+列強 > rekkyou\ ;
+農業 > nougyou\ ;
+切愛 > setsuai\ ;
+候鳥 > kouchou\ ;
+還俗 > genzoku\ ;
+速射 > sokusha\ ;
+迷惑 > meiwaku\ ;
+広州 > koushuu\ ;
+逼塞 > hissoku\ ;
+平復 > heifuku\ ;
+白癬 > hakusen\ ;
+痛言 > tsuugen\ ;
+初巳 > hatsumi\ ;
+疾走 > shissou\ ;
+列座 > retsuza\ ;
+着座 > chakuza\ ;
+共犯 > kyouhan\ ;
+茶殻 > chagara\ ;
+追従 > tsuijuu\ ;
+正中 > seichuu\ ;
+躬行 > kyuukou\ ;
+白痴 > hakuchi\ ;
+凶手 > kyoushu\ ;
+市況 > shikyou\ ;
+列席 > resseki\ ;
+帝業 > teigyou\ ;
+前垂 > maedare\ ;
+眩惑 > genwaku\ ;
+念々 > nen''nen\ ;
+着工 > chakkou\ ;
+割勘 > warikan\ ;
+退庁 > taichou\ ;
+発疹 > hosshin\ ;
+年年 > nen''nen\ ;
+鳥人 > choujin\ ;
+迎撃 > geigeki\ ;
+進塁 > shinrui\ ;
+剣呑 > ken''non\ ;
+冒涜 > boutoku\ ;
+検鏡 > kenkyou\ ;
+先皇 > sen''nou\ ;
+退席 > taiseki\ ;
+別宴 > betsuen\ ;
+週報 > shuuhou\ ;
+割前 > warimae\ ;
+円滑 > enkotsu\ ;
+別宅 > bettaku\ ;
+免疫 > men''eki\ ;
+盛業 > seigyou\ ;
+岡陵 > kouryou\ ;
+割判 > warihan\ ;
+軸線 > jikusen\ ;
+高足 > kousoku\ ;
+優秀 > yuushuu\ ;
+側辺 > sokuhen\ ;
+欠員 > ketsuin\ ;
+棒鱈 > boudara\ ;
+入物 > iremono\ ;
+入牢 > nyuurou\ ;
+真情 > shinjou\ ;
+選任 > sen''nin\ ;
+凶悪 > kyouaku\ ;
+初審 > shoshin\ ;
+番長 > banchou\ ;
+幼少 > youshou\ ;
+草木 > soumoku\ ;
+再注 > saichuu\ ;
+目星 > meboshi\ ;
+真性 > shinsei\ ;
+幽寂 > yuujaku\ ;
+創傷 > soushou\ ;
+側車 > sokusha\ ;
+全焼 > zenshou\ ;
+初子 > hatsugo\ ;
+僚艦 > ryoukan\ ;
+出征 > shussei\ ;
+幽客 > yuukaku\ ;
+分巻 > bunmaki\ ;
+通好 > tsuukou\ ;
+興趣 > kyoushu\ ;
+剣劇 > kengeki\ ;
+癩病 > raibyou\ ;
+通奏 > tsuusou\ ;
+疣足 > iboashi\ ;
+良能 > ryounou\ ;
+載積 > saiseki\ ;
+茶棚 > chadana\ ;
+幼子 > osanago\ ;
+適例 > tekirei\ ;
+検針 > kenshin\ ;
+出廷 > shuttei\ ;
+前哨 > zenshou\ ;
+崩落 > houraku\ ;
+真影 > shin''ei\ ;
+年少 > nenshou\ ;
+幣帛 > heihaku\ ;
+凶弾 > kyoudan\ ;
+速報 > sokuhou\ ;
+甲高 > koudaka\ ;
+白状 > hakujou\ ;
+適任 > tekinin\ ;
+制圧 > seiatsu\ ;
+剛力 > gouriki\ ;
+疾視 > shisshi\ ;
+苦熱 > kunetsu\ ;
+発狂 > hakkyou\ ;
+創作 > sousaku\ ;
+檄文 > gekibun\ ;
+内池 > uchiike\ ;
+目撥 > mebachi\ ;
+偏針 > henshin\ ;
+退学 > taigaku\ ;
+偏重 > henchou\ ;
+年子 > toshigo\ ;
+通報 > tsuuhou\ ;
+傍証 > boushou\ ;
+傍註 > bouchuu\ ;
+出帆 > shuppan\ ;
+剣先 > kensaki\ ;
+先王 > sen''nou\ ;
+凶年 > kyounen\ ;
+真平 > mappira\ ;
+癒着 > yuchaku\ ;
+副使 > fukushi\ ;
+高調 > kouchou\ ;
+莫大 > bakudai\ ;
+前厄 > maeyaku\ ;
+魚竜 > gyoryuu\ ;
+共済 > kyousai\ ;
+兇猛 > kyoumou\ ;
+迷宮 > meikyuu\ ;
+遅刻 > chikoku\ ;
+相承 > soushou\ ;
+高評 > kouhyou\ ;
+幔幕 > manmaku\ ;
+森閑 > shinkan\ ;
+進呈 > shintei\ ;
+辟易 > hekieki\ ;
+兇状 > kyoujou\ ;
+入漁 > nyuugyo\ ;
+直披 > chokuhi\ ;
+発煙 > hatsuen\ ;
+舟行 > shuukou\ ;
+岸辺 > kishibe\ ;
+高角 > koukaku\ ;
+道俗 > douzoku\ ;
+進取 > shinshu\ ;
+膨隆 > bouryuu\ ;
+倍額 > baigaku\ ;
+目指 > mokushi\ ;
+魔窟 > makutsu\ ;
+凝念 > gyounen\ ;
+巡歴 > junreki\ ;
+山頂 > sanchou\ ;
+転籍 > tenseki\ ;
+入湯 > nyuutou\ ;
+幽境 > yuukyou\ ;
+出展 > shutten\ ;
+荒技 > arawaza\ ;
+入港 > nyuukou\ ;
+入渠 > nyuukyo\ ;
+苛烈 > karetsu\ ;
+光照 > koushou\ ;
+迫害 > hakugai\ ;
+八洲 > yashima\ ;
+轟沈 > gouchin\ ;
+県庁 > kenchou\ ;
+凡庸 > bon''you\ ;
+癇癖 > kanpeki\ ;
+色素 > shikiso\ ;
+近年 > kin''nen\ ;
+直感 > chokkan\ ;
+盆暮 > bonkure\ ;
+蹉跌 > satetsu\ ;
+年増 > toshima\ ;
+遊侠 > yuukyou\ ;
+前兆 > zenchou\ ;
+癇症 > kanshou\ ;
+轢死 > rekishi\ ;
+道主 > doushuu\ ;
+凋悴 > chousui\ ;
+僧籍 > souseki\ ;
+道中 > douchuu\ ;
+山陽 > san''you\ ;
+工業 > kougyou\ ;
+山陵 > sanryou\ ;
+欠伸 > kenshin\ ;
+遊休 > yuukyuu\ ;
+痘苗 > toubyou\ ;
+幽囚 > yuushuu\ ;
+週刊 > shuukan\ ;
+庖厨 > houchuu\ ;
+倒閣 > toukaku\ ;
+列国 > rekkoku\ ;
+督励 > tokurei\ ;
+巡業 > jungyou\ ;
+標準 > hyoujun\ ;
+菊判 > kikuban\ ;
+産額 > sangaku\ ;
+週内 > shuunai\ ;
+傾聴 > keichou\ ;
+鰻屋 > unagiya\ ;
+帯心 > obishin\ ;
+入水 > nyuusui\ ;
+制勝 > seishou\ ;
+刻刻 > kokkoku\ ;
+備蓄 > bichiku\ ;
+興行 > kougyou\ ;
+通名 > toorina\ ;
+軍籍 > gunseki\ ;
+船舶 > senpaku\ ;
+連勝 > renshou\ ;
+通史 > tsuushi\ ;
+直後 > chokugo\ ;
+直径 > chokkei\ ;
+直往 > chokuou\ ;
+修養 > shuuyou\ ;
+兇漢 > kyoukan\ ;
+病菌 > byoukin\ ;
+僭称 > senshou\ ;
+出奔 > shuppon\ ;
+辛抱 > shinbou\ ;
+楽聖 > gakusei\ ;
+健診 > kenshin\ ;
+軽症 > keishou\ ;
+船腹 > senpuku\ ;
+白洲 > shirasu\ ;
+凡小 > bonshou\ ;
+前任 > zen''nin\ ;
+巨木 > kyoboku\ ;
+般若 > han''nya\ ;
+傷者 > shousha\ ;
+円曲 > enkyoku\ ;
+尾骨 > bikotsu\ ;
+内服 > naifuku\ ;
+広告 > koukoku\ ;
+芝生 > shibafu\ ;
+通勤 > tsuukin\ ;
+自説 > jisetsu\ ;
+充溢 > juuitsu\ ;
+看客 > kankaku\ ;
+茶托 > chataku\ ;
+真夏 > manatsu\ ;
+凶変 > kyouhen\ ;
+辺幅 > henpuku\ ;
+店内 > ten''nai\ ;
+刺傷 > shishou\ ;
+川柳 > senryuu\ ;
+発注 > hatchuu\ ;
+業腹 > gouhara\ ;
+良種 > ryoushu\ ;
+共棲 > kyousei\ ;
+借金 > shakkin\ ;
+削井 > sakusei\ ;
+異質 > ishitsu\ ;
+序列 > joretsu\ ;
+速写 > sokusha\ ;
+倒錯 > tousaku\ ;
+帝徳 > teitoku\ ;
+通分 > tsuubun\ ;
+追善 > tsuizen\ ;
+兼有 > ken''yuu\ ;
+凶報 > kyouhou\ ;
+検認 > ken''nin\ ;
+荒巻 > aramaki\ ;
+病舎 > byousha\ ;
+舞茸 > maitake\ ;
+梟首 > kyoushu\ ;
+週令 > shuurei\ ;
+准州 > junshuu\ ;
+共栓 > tomosen\ ;
+検証 > kenshou\ ;
+検診 > kenshin\ ;
+常宿 > jouyado\ ;
+信頼 > shinrai\ ;
+光沢 > koutaku\ ;
+帝廟 > teibyou\ ;
+凹地 > kubochi\ ;
+凸坊 > dekobou\ ;
+腱鞘 > kenshou\ ;
+軍票 > gunpyou\ ;
+盛徳 > seitoku\ ;
+生長 > seichou\ ;
+業者 > gyousha\ ;
+軍神 > gunshin\ ;
+入棺 > nyuukan\ ;
+蹈襲 > toushuu\ ;
+進上 > shinjou\ ;
+舟艇 > shuutei\ ;
+幽勝 > yuushou\ ;
+巨擘 > kyohaku\ ;
+舟航 > shuukou\ ;
+横棒 > yokobou\ ;
+制作 > seisaku\ ;
+年収 > nenshuu\ ;
+凋尽 > choujin\ ;
+盗心 > toushin\ ;
+入梅 > nyuubai\ ;
+腓骨 > hikotsu\ ;
+共有 > kyouyuu\ ;
+鰤子 > burikko\ ;
+相客 > aikyaku\ ;
+真因 > shin''in\ ;
+追号 > tsuigou\ ;
+連作 > rensaku\ ;
+兎欠 > toketsu\ ;
+兆民 > choumin\ ;
+別儀 > betsugi\ ;
+入校 > nyuukou\ ;
+良知 > ryouchi\ ;
+連休 > renkyuu\ ;
+切味 > kireaji\ ;
+造作 > zousaku\ ;
+六書 > rokusho\ ;
+着剣 > chakken\ ;
+分周 > bunshuu\ ;
+六曜 > rokuyou\ ;
+八朔 > hassaku\ ;
+刪修 > sanshuu\ ;
+准将 > junshou\ ;
+県境 > kenkyou\ ;
+腕首 > udekubi\ ;
+眼力 > ganriki\ ;
+荒寥 > kouryou\ ;
+通例 > tsuurei\ ;
+岬角 > koukaku\ ;
+標榜 > hyoubou\ ;
+入来 > nyuurai\ ;
+略譜 > ryakufu\ ;
+轢断 > rekidan\ ;
+転用 > ten''you\ ;
+皐月 > satsuki\ ;
+連中 > renchuu\ ;
+元歌 > motouta\ ;
+色白 > irojiro\ ;
+岩角 > iwakado\ ;
+逓信 > teishin\ ;
+庖丁 > houchou\ ;
+茶店 > chamise\ ;
+凝塊 > gyoukai\ ;
+逆光 > gyakkou\ ;
+梟雄 > kyouyuu\ ;
+出品 > shuppin\ ;
+梵鐘 > bonshou\ ;
+船級 > senkyuu\ ;
+農学 > nougaku\ ;
+通人 > tsuujin\ ;
+略語 > ryakugo\ ;
+僭用 > sen''you\ ;
+通交 > tsuukou\ ;
+踊躍 > youyaku\ ;
+茶席 > chaseki\ ;
+追刊 > tsuikan\ ;
+用量 > youryou\ ;
+自虐 > jigyaku\ ;
+鬼畜 > kichiku\ ;
+腐食 > fushoku\ ;
+年内 > nen''nai\ ;
+公敵 > kouteki\ ;
+傍聴 > bouchou\ ;
+左折 > sasetsu\ ;
+公教 > koukyou\ ;
+白桃 > hakutou\ ;
+若枝 > wakaeda\ ;
+出向 > shukkou\ ;
+近国 > kingoku\ ;
+船籍 > senseki\ ;
+元標 > genpyou\ ;
+出口 > deguchi\ ;
+切削 > sessaku\ ;
+略解 > ryakkai\ ;
+刀匠 > toushou\ ;
+発案 > hatsuan\ ;
+産量 > sanryou\ ;
+軟球 > nankyuu\ ;
+別事 > betsuji\ ;
+修錬 > shuuren\ ;
+直奏 > jikisou\ ;
+市庁 > shichou\ ;
+航続 > kouzoku\ ;
+良田 > ryouden\ ;
+足音 > ashioto\ ;
+先棒 > sakibou\ ;
+刈入 > kariire\ ;
+白木 > shiraki\ ;
+標本 > hyouhon\ ;
+皇族 > kouzoku\ ;
+出勤 > shukkin\ ;
+白書 > hakusho\ ;
+辺境 > henkyou\ ;
+送信 > soushin\ ;
+軍用 > gun''you\ ;
+初乳 > shonyuu\ ;
+平信 > heishin\ ;
+百景 > hyakkei\ ;
+荒壁 > arakabe\ ;
+八掛 > hakkake\ ;
+輪業 > ringyou\ ;
+茶寮 > charyou\ ;
+平作 > heisaku\ ;
+盲執 > moushuu\ ;
+甘酒 > amazake\ ;
+光束 > kousoku\ ;
+元栓 > motosen\ ;
+八挺 > hatchou\ ;
+真剣 > shinken\ ;
+凹凸 > outotsu\ ;
+辛子 > karashi\ ;
+凸凹 > totsuou\ ;
+百方 > hyappou\ ;
+平伏 > heifuku\ ;
+内心 > naishin\ ;
+側背 > sokuhai\ ;
+療法 > ryouhou\ ;
+入掛 > irekaku\ ;
+迷信 > meishin\ ;
+凶刃 > kyoujin\ ;
+出典 > shutten\ ;
+出兵 > shuppei\ ;
+白斑 > hakuhan\ ;
+刀傷 > toushou\ ;
+退京 > taikyou\ ;
+白文 > hakubun\ ;
+凸円 > totsuen\ ;
+山賊 > sanzoku\ ;
+眼中 > ganchuu\ ;
+側聞 > sokubun\ ;
+業種 > gyoushu\ ;
+兇暴 > kyoubou\ ;
+八手 > yatsude\ ;
+色物 > iromono\ ;
+元朝 > genchou\ ;
+痳病 > rinbyou\ ;
+元服 > genpuku\ ;
+修道 > shuudou\ ;
+凶党 > kyoutou\ ;
+克明 > kokumei\ ;
+年上 > toshiue\ ;
+信金 > shinkin\ ;
+光明 > koumyou\ ;
+共感 > kyoukan\ ;
+工廠 > koushou\ ;
+高給 > koukyuu\ ;
+保釈 > hoshaku\ ;
+入手 > nyuushu\ ;
+入所 > nyuusho\ ;
+述作 > jussaku\ ;
+内幕 > naimaku\ ;
+機密 > kimitsu\ ;
+踏襲 > toushuu\ ;
+高級 > koukyuu\ ;
+直営 > chokuei\ ;
+直喩 > chokuyu\ ;
+小面 > shoumen\ ;
+尿酸 > nyousan\ ;
+辛夷 > kobushi\ ;
+六情 > rokujou\ ;
+高粱 > kouryan\ ;
+小難 > shounan\ ;
+局部 > kyokubu\ ;
+帝国 > teikoku\ ;
+出会 > shukkai\ ;
+小隊 > shoutai\ ;
+鬱然 > utsuzen\ ;
+共役 > kyoueki\ ;
+出仕 > shusshi\ ;
+傷痕 > shoukon\ ;
+再審 > saishin\ ;
+県内 > ken''nai\ ;
+申請 > shinsei\ ;
+発振 > hasshin\ ;
+尿道 > nyoudou\ ;
+側線 > sokusen\ ;
+公徳 > koutoku\ ;
+少関 > shoukan\ ;
+常勝 > joushou\ ;
+少閑 > shoukan\ ;
+冥境 > meikyou\ ;
+真人 > shinjin\ ;
+白扇 > hakusen\ ;
+小閑 > shoukan\ ;
+冷嘲 > reichou\ ;
+全心 > zenshin\ ;
+痛痒 > tsuuyou\ ;
+馴鹿 > tonakai\ ;
+直参 > jikisan\ ;
+入念 > nyuunen\ ;
+脊髄 > sekizui\ ;
+真下 > mashita\ ;
+円安 > en''yasu\ ;
+尊長 > sonchou\ ;
+公庁 > kouchou\ ;
+返信 > henshin\ ;
+偽筆 > gihitsu\ ;
+相剋 > soukoku\ ;
+師匠 > shishou\ ;
+膝行 > shikkou\ ;
+転注 > tenchuu\ ;
+入廷 > nyuutei\ ;
+俗輩 > zokuhai\ ;
+脚韻 > kyakuin\ ;
+工学 > kougaku\ ;
+凡俗 > bonzoku\ ;
+寒鮒 > kanbuna\ ;
+業病 > goubyou\ ;
+農博 > nouhaku\ ;
+農協 > noukyou\ ;
+兇手 > kyoushu\ ;
+全幅 > zenpuku\ ;
+八州 > yashima\ ;
+全席 > zenseki\ ;
+高禄 > kouroku\ ;
+近作 > kinsaku\ ;
+荷主 > ninushi\ ;
+良港 > ryoukou\ ;
+寸隙 > sungeki\ ;
+凡作 > bonsaku\ ;
+業界 > gyoukai\ ;
+相克 > soukoku\ ;
+目前 > mokuzen\ ;
+岩肌 > iwahada\ ;
+凡人 > bon''nin\ ;
+信販 > shinpan\ ;
+俗趣 > zokushu\ ;
+修論 > shuuron\ ;
+巧妙 > koumyou\ ;
+兵学 > heigaku\ ;
+田螺 > tanishi\ ;
+発心 > hosshin\ ;
+凍傷 > toushou\ ;
+産褥 > sanjoku\ ;
+小銃 > shoujuu\ ;
+良法 > ryouhou\ ;
+兇悪 > kyouaku\ ;
+便通 > bentsuu\ ;
+小鉢 > kobachi\ ;
+若年 > jakunen\ ;
+兇悍 > kyoukan\ ;
+赤飯 > sekihan\ ;
+帝劇 > teigeki\ ;
+共存 > kyouzon\ ;
+省令 > shourei\ ;
+自粛 > jishuku\ ;
+百度 > hyakudo\ ;
+内壁 > naiheki\ ;
+修訂 > shuutei\ ;
+免役 > men''eki\ ;
+疾病 > shippei\ ;
+元悪 > gen''aku\ ;
+疼痛 > toutsuu\ ;
+害鳥 > gaichou\ ;
+傍白 > bouhaku\ ;
+検索 > kensaku\ ;
+良民 > ryoumin\ ;
+全寮 > zenryou\ ;
+入居 > nyuukyo\ ;
+甲虫 > kouchuu\ ;
+躁病 > soubyou\ ;
+登庁 > touchou\ ;
+全容 > zen''you\ ;
+入射 > nyuusha\ ;
+田虫 > tamushi\ ;
+盲信 > moushin\ ;
+白帆 > shiraho\ ;
+高直 > koujiki\ ;
+膿胸 > noukyou\ ;
+尊重 > sonchou\ ;
+生血 > namachi\ ;
+入寇 > nyuukou\ ;
+全学 > zengaku\ ;
+兇弾 > kyoudan\ ;
+入定 > nyuujou\ ;
+転業 > tengyou\ ;
+屈託 > kuttaku\ ;
+直伝 > jikiden\ ;
+茶匙 > chasaji\ ;
+自筆 > jihitsu\ ;
+苗床 > naedoko\ ;
+赤面 > sekimen\ ;
+辛労 > shinrou\ ;
+兄弟 > kyoudai\ ;
+俊賢 > shunken\ ;
+公娼 > koushou\ ;
+内圧 > naiatsu\ ;
+痛点 > tsuuten\ ;
+直交 > chokkou\ ;
+先年 > sen''nen\ ;
+疱疹 > houshin\ ;
+俗謡 > zokuyou\ ;
+鮮少 > senshou\ ;
+小道 > komichi\ ;
+自立 > jiritsu\ ;
+修行 > shugyou\ ;
+内国 > naikoku\ ;
+俗諺 > zokugen\ ;
+膏薬 > kouyaku\ ;
+至福 > shifuku\ ;
+寺銭 > terasen\ ;
+農作 > nousaku\ ;
+俗諦 > zokutai\ ;
+小逕 > shoukei\ ;
+俊豪 > shungou\ ;
+俗論 > zokuron\ ;
+症状 > shoujou\ ;
+俗談 > zokudan\ ;
+導通 > doutsuu\ ;
+魚族 > gyozoku\ ;
+入婿 > irimuko\ ;
+臼砲 > kyuuhou\ ;
+僻村 > hekison\ ;
+鮨屋 > sushiya\ ;
+健祥 > kenshou\ ;
+寄食 > kishoku\ ;
+白山 > hakusan\ ;
+病状 > byoujou\ ;
+元年 > gan''nen\ ;
+小農 > shounou\ ;
+席上 > sekijou\ ;
+荒事 > aragoto\ ;
+監修 > kanshuu\ ;
+偸盗 > chuutou\ ;
+僻書 > hekisho\ ;
+留置 > ryuuchi\ ;
+辛党 > karatou\ ;
+格闘 > kakutou\ ;
+番組 > bangumi\ ;
+俗言 > zokugen\ ;
+魂柱 > konchuu\ ;
+輪廓 > rinkaku\ ;
+百官 > hyakkan\ ;
+作風 > sakufuu\ ;
+馬食 > bashoku\ ;
+艦橋 > kankyou\ ;
+標定 > hyoutei\ ;
+膨脹 > bouchou\ ;
+倖臣 > koushin\ ;
+横奪 > oudatsu\ ;
+白子 > shiroko\ ;
+巨商 > kyoshou\ ;
+再告 > saikoku\ ;
+駅長 > ekichou\ ;
+軍楽 > gungaku\ ;
+山芋 > yamaimo\ ;
+帝京 > teikyou\ ;
+輻射 > fukusha\ ;
+入声 > nisshou\ ;
+軽捷 > keishou\ ;
+密雲 > mitsuun\ ;
+傾注 > keichuu\ ;
+入墨 > irezumi\ ;
+密集 > misshuu\ ;
+胸間 > kyoukan\ ;
+色柄 > irogara\ ;
+背高 > seitaka\ ;
+将軍 > shougun\ ;
+概況 > gaikyou\ ;
+全域 > zen''iki\ ;
+芳心 > houshin\ ;
+入場 > nyuujou\ ;
+盗作 > tousaku\ ;
+光学 > kougaku\ ;
+山腹 > sanpuku\ ;
+先学 > sengaku\ ;
+脚部 > kyakubu\ ;
+公国 > koukoku\ ;
+入城 > nyuujou\ ;
+胴長 > dounaga\ ;
+橋台 > kyoudai\ ;
+僧服 > soufuku\ ;
+馘首 > kakushu\ ;
+再勝 > saishou\ ;
+腹蔵 > fukuzou\ ;
+良材 > ryouzai\ ;
+癇性 > kanshou\ ;
+低額 > teigaku\ ;
+魚拓 > gyotaku\ ;
+輔弼 > hohitsu\ ;
+全国 > zengoku\ ;
+入坑 > nyuukou\ ;
+辛亥 > shingai\ ;
+良書 > ryousho\ ;
+宰領 > sairyou\ ;
+白太 > shirata\ ;
+白夜 > byakuya\ ;
+蹴爪 > kedzume\ ;
+巨匠 > kyoshou\ ;
+赤錆 > akasabi\ ;
+入団 > nyuudan\ ;
+工博 > kouhaku\ ;
+兄嫁 > aniyome\ ;
+差別 > sabetsu\ ;
+冪乗 > bekijou\ ;
+軍服 > gunpuku\ ;
+工匠 > koushou\ ;
+甲胄 > katchuu\ ;
+自発 > jihatsu\ ;
+畢竟 > hikkyou\ ;
+校閲 > kouetsu\ ;
+疎略 > soryaku\ ;
+岩礁 > ganshou\ ;
+校長 > kouchou\ ;
+傷歎 > shoutan\ ;
+色文 > irobumi\ ;
+皇国 > koukoku\ ;
+首領 > shuryou\ ;
+赤金 > akagane\ ;
+驕肆 > kyoushi\ ;
+学齢 > gakurei\ ;
+共同 > kyoudou\ ;
+宵闇 > yoiyami\ ;
+小論 > shouron\ ;
+兇変 > kyouhen\ ;
+体長 > taichou\ ;
+停留 > teiryuu\ ;
+市中 > shichuu\ ;
+岩石 > ganseki\ ;
+腹芸 > haragei\ ;
+公告 > koukoku\ ;
+白地 > shiroji\ ;
+核酸 > kakusan\ ;
+六合 > rikugou\ ;
+船歌 > funauta\ ;
+対象 > taishou\ ;
+騰落 > touraku\ ;
+検疫 > ken''eki\ ;
+腐蝕 > fushoku\ ;
+定額 > teigaku\ ;
+偏癖 > henpeki\ ;
+小計 > shoukei\ ;
+内傷 > naishou\ ;
+典則 > tensoku\ ;
+充塞 > juusoku\ ;
+棒縞 > boujima\ ;
+六十 > rokujuu\ ;
+赤道 > sekidou\ ;
+併進 > heishin\ ;
+生肉 > seiniku\ ;
+植皮 > shokuhi\ ;
+実需 > jitsuju\ ;
+免囚 > menshuu\ ;
+駆逐 > kuchiku\ ;
+駐車 > chuusha\ ;
+株金 > kabukin\ ;
+自玉 > jigyoku\ ;
+宿銭 > yadosen\ ;
+首長 > shuchou\ ;
+腹背 > fukuhai\ ;
+全勝 > zenshou\ ;
+柱頭 > chuutou\ ;
+痛棒 > tsuubou\ ;
+病死 > byoushi\ ;
+傍流 > bouryuu\ ;
+射角 > shakaku\ ;
+客間 > kyakuma\ ;
+工作 > kousaku\ ;
+儀式 > gishiki\ ;
+車掌 > shashou\ ;
+田紳 > denshin\ ;
+傍注 > bouchuu\ ;
+対訳 > taiyaku\ ;
+兼修 > kenshuu\ ;
+赤軍 > sekigun\ ;
+脂身 > aburami\ ;
+峡湾 > kyouwan\ ;
+軍拡 > gunkaku\ ;
+百味 > hyakumi\ ;
+対角 > taikaku\ ;
+柱面 > chuumen\ ;
+巨乳 > kyonyuu\ ;
+公共 > koukyou\ ;
+共働 > kyoudou\ ;
+画筆 > gahitsu\ ;
+供覧 > kyouran\ ;
+寸評 > sunpyou\ ;
+共催 > kyousai\ ;
+内中 > uchijuu\ ;
+容量 > youryou\ ;
+腫脹 > shuchou\ ;
+密通 > mittsuu\ ;
+舟歌 > funauta\ ;
+倶発 > guhatsu\ ;
+兼任 > ken''nin\ ;
+公僕 > kouboku\ ;
+入冦 > nyuukou\ ;
+体量 > tairyou\ ;
+公傷 > koushou\ ;
+宗門 > shuumon\ ;
+臆病 > okubyou\ ;
+全優 > zen''yuu\ ;
+軽少 > keishou\ ;
+入党 > nyuutou\ ;
+侑觴 > yuushou\ ;
+偏狭 > henkyou\ ;
+略画 > ryakuga\ ;
+俸給 > houkyuu\ ;
+宿運 > shukuun\ ;
+船板 > funaita\ ;
+俊英 > shun''ei\ ;
+芳墨 > houboku\ ;
+偏狂 > henkyou\ ;
+百匁 > hyakume\ ;
+生絹 > suzushi\ ;
+軟弱 > nanjaku\ ;
+休館 > kyuukan\ ;
+密輸 > mitsuyu\ ;
+党則 > tousoku\ ;
+修繕 > shuuzen\ ;
+就航 > shuukou\ ;
+休養 > kyuuyou\ ;
+例証 > reishou\ ;
+榴弾 > ryuudan\ ;
+山積 > sanseki\ ;
+舶来 > hakurai\ ;
+山稜 > sanryou\ ;
+赤貧 > sekihin\ ;
+修練 > shuuren\ ;
+英傑 > eiketsu\ ;
+極暑 > gokusho\ ;
+病棟 > byoutou\ ;
+肌骨 > kikotsu\ ;
+良性 > ryousei\ ;
+足芸 > ashigei\ ;
+腸線 > chousen\ ;
+僧形 > sougyou\ ;
+輪唱 > rinshou\ ;
+偉物 > eramono\ ;
+白刃 > hakujin\ ;
+公休 > koukyuu\ ;
+侮蔑 > bubetsu\ ;
+若党 > wakatou\ ;
+病根 > byoukon\ ;
+会集 > kaishuu\ ;
+屑糸 > kuzuito\ ;
+梟罪 > kyouzai\ ;
+若僧 > wakazou\ ;
+白兵 > hakuhei\ ;
+先勝 > senshou\ ;
+低速 > teisoku\ ;
+入会 > nyuukai\ ;
+屑米 > kuzumai\ ;
+軽妙 > keimyou\ ;
+自滅 > jimetsu\ ;
+休電 > kyuuden\ ;
+島根 > shimane\ ;
+学風 > gakufuu\ ;
+僵屍 > kyonshi\ ;
+八丁 > hatchou\ ;
+先刻 > senkoku\ ;
+肉饅 > nikuman\ ;
+併読 > heidoku\ ;
+馬跳 > umatobi\ ;
+転属 > tenzoku\ ;
+赤誠 > sekisei\ ;
+良師 > ryoushi\ ;
+会長 > kaichou\ ;
+兇刃 > kyoujin\ ;
+定量 > teiryou\ ;
+良工 > ryoukou\ ;
+格言 > kakugen\ ;
+駁論 > bakuron\ ;
+元凶 > genkyou\ ;
+肉類 > nikurui\ ;
+臼歯 > kyuushi\ ;
+疼木 > hiiragi\ ;
+転宅 > tentaku\ ;
+栄達 > eitatsu\ ;
+転学 > tengaku\ ;
+発信 > hasshin\ ;
+休閑 > kyuukan\ ;
+舞曲 > bukyoku\ ;
+自活 > jikatsu\ ;
+俸禄 > houroku\ ;
+俸祿 > houroku\ ;
+若人 > wakoudo\ ;
+楽才 > gakusai\ ;
+密議 > mitsugi\ ;
+興業 > kougyou\ ;
+元兇 > genkyou\ ;
+香車 > kyousha\ ;
+俗累 > zokurui\ ;
+学際 > gakusai\ ;
+停泊 > teihaku\ ;
+楊柳 > youryuu\ ;
+白人 > hakujin\ ;
+信管 > shinkan\ ;
+小舅 > kojuuto\ ;
+自決 > jiketsu\ ;
+百事 > hyakuji\ ;
+岩漿 > ganshou\ ;
+理髪 > rihatsu\ ;
+密語 > mitsugo\ ;
+兆候 > choukou\ ;
+胸襟 > kyoukin\ ;
+高木 > kouboku\ ;
+尿管 > nyoukan\ ;
+鬱屈 > ukkutsu\ ;
+軍属 > gunzoku\ ;
+痛憤 > tsuufun\ ;
+山番 > yamaban\ ;
+楽想 > gakusou\ ;
+自殺 > jisatsu\ ;
+小脳 > shounou\ ;
+優勝 > yuushou\ ;
+脱臼 > dakkyuu\ ;
+首足 > shusoku\ ;
+脱臭 > dasshuu\ ;
+軍将 > gunshou\ ;
+傷悴 > shousui\ ;
+偏流 > henryuu\ ;
+脳膜 > noumaku\ ;
+寒行 > kangyou\ ;
+先任 > sen''nin\ ;
+小胞 > shouhou\ ;
+痛感 > tsuukan\ ;
+現高 > gendaka\ ;
+小胆 > shoutan\ ;
+臣民 > shinmin\ ;
+軍容 > gun''you\ ;
+鬼婆 > onibaba\ ;
+作詩 > sakushi\ ;
+作詞 > sakushi\ ;
+脱腸 > datchou\ ;
+宅配 > takuhai\ ;
+軍学 > gungaku\ ;
+校註 > kouchuu\ ;
+休錘 > kyuusui\ ;
+田畑 > denpata\ ;
+傷忰 > shousui\ ;
+少者 > shousha\ ;
+痛恨 > tsuukon\ ;
+至極 > shigoku\ ;
+極悪 > gokuaku\ ;
+安逸 > an''itsu\ ;
+体調 > taichou\ ;
+僻地 > hekichi\ ;
+僻在 > hekizai\ ;
+定跡 > jouseki\ ;
+高教 > koukyou\ ;
+業態 > gyoutai\ ;
+輪作 > rinsaku\ ;
+痛快 > tsuukai\ ;
+岩波 > iwanami\ ;
+峻拒 > shunkyo\ ;
+低調 > teichou\ ;
+良妻 > ryousai\ ;
+刻々 > kokkoku\ ;
+臆測 > okusoku\ ;
+作製 > sakusei\ ;
+産痛 > santsuu\ ;
+職階 > shokkai\ ;
+良好 > ryoukou\ ;
+畝溝 > unemizo\ ;
+極微 > kyokubi\ ;
+果食 > kashoku\ ;
+桑苗 > soubyou\ ;
+膜状 > makujou\ ;
+甘皮 > amakawa\ ;
+赤蕪 > akakabu\ ;
+山犬 > yamainu\ ;
+俊童 > shundou\ ;
+楽師 > gakushi\ ;
+桑色 > kuwairo\ ;
+腕章 > wanshou\ ;
+馬術 > bajutsu\ ;
+病態 > byoutai\ ;
+腕立 > udetate\ ;
+柩車 > kyuusha\ ;
+腹癒 > haraise\ ;
+舞扇 > maiougi\ ;
+僅少 > kinshou\ ;
+寮舎 > ryousha\ ;
+極度 > kyokudo\ ;
+偕楽 > kairaku\ ;
+球面 > kyuumen\ ;
+小編 > shouhen\ ;
+芳信 > houshin\ ;
+病患 > byoukan\ ;
+画然 > kakuzen\ ;
+球電 > kyuuden\ ;
+客語 > kyakugo\ ;
+枕頭 > chintou\ ;
+船幅 > senpuku\ ;
+極左 > kyokusa\ ;
+瓢箪 > hyoutan\ ;
+芸事 > geigoto\ ;
+植樹 > shokuju\ ;
+実話 > jitsuwa\ ;
+疾患 > shikkan\ ;
+骨格 > kokkaku\ ;
+桃色 > momoiro\ ;
+検校 > kengyou\ ;
+実証 > jisshou\ ;
+今頃 > imagoro\ ;
+腰痛 > youtsuu\ ;
+小粒 > kotsubu\ ;
+業師 > wazashi\ ;
+花代 > hanadai\ ;
+客観 > kyakkan\ ;
+俗眼 > zokugan\ ;
+使臣 > shishin\ ;
+寒菊 > kangiku\ ;
+休載 > kyuusai\ ;
+尻目 > shirime\ ;
+定評 > teihyou\ ;
+休転 > kyuuten\ ;
+病弊 > byouhei\ ;
+傷害 > shougai\ ;
+定訳 > teiyaku\ ;
+軍国 > gunkoku\ ;
+魔力 > maryoku\ ;
+検束 > kensoku\ ;
+居留 > kyoryuu\ ;
+軽傷 > keishou\ ;
+館長 > kanchou\ ;
+岩棚 > iwadana\ ;
+仏陀 > butsuda\ ;
+害虫 > gaichuu\ ;
+就眠 > shuumin\ ;
+脇能 > wakinou\ ;
+億兆 > okuchou\ ;
+病巣 > byousou\ ;
+赤膚 > akahada\ ;
+賞金 > shoukin\ ;
+小童 > kowappa\ ;
+仏閣 > bukkaku\ ;
+俐発 > rihatsu\ ;
+仏間 > butsuma\ ;
+赤腹 > akahara\ ;
+軽信 > keishin\ ;
+腎石 > jinseki\ ;
+島庁 > touchou\ ;
+良品 > ryouhin\ ;
+俗用 > zokuyou\ ;
+胃袋 > ibukuro\ ;
+軽佻 > keichou\ ;
+峻嶺 > shunrei\ ;
+峻嶮 > shunken\ ;
+年々 > nen''nen\ ;
+儒仏 > jubutsu\ ;
+魅力 > miryoku\ ;
+高徳 > koutoku\ ;
+貸間 > kashima\ ;
+胸臆 > kyouoku\ ;
+魚信 > gyoshin\ ;
+腕白 > wanpaku\ ;
+赤肌 > akahada\ ;
+胸腺 > kyousen\ ;
+京風 > kyoufuu\ ;
+胸腔 > kyoukou\ ;
+楽天 > rakuten\ ;
+良友 > ryouyuu\ ;
+脱穀 > dakkoku\ ;
+班長 > hanchou\ ;
+伝誦 > denshou\ ;
+尊称 > sonshou\ ;
+偃月 > engetsu\ ;
+修煉 > shuuren\ ;
+対策 > taisaku\ ;
+小社 > shousha\ ;
+楽士 > gakushi\ ;
+借款 > shakkan\ ;
+楽壇 > gakudan\ ;
+便益 > ben''eki\ ;
+会読 > kaidoku\ ;
+棺桶 > kan''oke\ ;
+起結 > kiketsu\ ;
+航宙 > kouchuu\ ;
+低落 > teiraku\ ;
+病害 > byougai\ ;
+偉方 > eragata\ ;
+梟猛 > kyoumou\ ;
+界標 > kaihyou\ ;
+賃銭 > chinsen\ ;
+佞臣 > neishin\ ;
+余色 > yoshoku\ ;
+飲食 > inshoku\ ;
+僚友 > ryouyuu\ ;
+休講 > kyuukou\ ;
+賃銀 > chingin\ ;
+学資 > gakushi\ ;
+町民 > choumin\ ;
+傾国 > keikoku\ ;
+交響 > koukyou\ ;
+良剤 > ryouzai\ ;
+係留 > keiryuu\ ;
+男気 > otokogi\ ;
+小知 > shouchi\ ;
+対称 > taishou\ ;
+賃金 > chingin\ ;
+楓属 > fuuzoku\ ;
+胃薬 > igusuri\ ;
+仙郷 > senkyou\ ;
+栗色 > kuriiro\ ;
+購読 > koudoku\ ;
+車力 > shariki\ ;
+楽団 > gakudan\ ;
+臥所 > fushido\ ;
+体臭 > taishuu\ ;
+馬脚 > bakyaku\ ;
+侍立 > jiritsu\ ;
+寸秒 > sunbyou\ ;
+甲殻 > koukaku\ ;
+起筆 > kihitsu\ ;
+駐米 > chuubei\ ;
+乾魚 > hoshiuo\ ;
+至急 > shikyuu\ ;
+肝要 > kan''you\ ;
+生涯 > shougai\ ;
+会衆 > kaishuu\ ;
+森林 > shinrin\ ;
+赤組 > akagumi\ ;
+転任 > ten''nin\ ;
+格納 > kakunou\ ;
+高尚 > koushou\ ;
+小癪 > koshaku\ ;
+赤紙 > akagami\ ;
+驚歎 > kyoutan\ ;
+起立 > kiritsu\ ;
+傷嘆 > shoutan\ ;
+作者 > sakusha\ ;
+食餌 > shokuji\ ;
+腸満 > chouman\ ;
+仲買 > nakagai\ ;
+病変 > byouhen\ ;
+僥倖 > gyoukou\ ;
+賠責 > baiseki\ ;
+僧俗 > souzoku\ ;
+賞賛 > shousan\ ;
+尊皇 > son''nou\ ;
+玄麦 > genbaku\ ;
+脈管 > myakkan\ ;
+枢軸 > suujiku\ ;
+舞姫 > maihime\ ;
+痛嘆 > tsuutan\ ;
+尨犬 > mukuinu\ ;
+棟梁 > touryou\ ;
+家職 > kashoku\ ;
+根粒 > konryuu\ ;
+屠殺 > tosatsu\ ;
+賊軍 > zokugun\ ;
+腸液 > choueki\ ;
+舎宅 > shataku\ ;
+宸翰 > shinkan\ ;
+身命 > shinmei\ ;
+疫学 > ekigaku\ ;
+小町 > komachi\ ;
+小男 > kootoko\ ;
+腰湯 > koshiyu\ ;
+射的 > shateki\ ;
+小用 > shouyou\ ;
+脳症 > noushou\ ;
+脳病 > noubyou\ ;
+小生 > shousei\ ;
+自律 > jiritsu\ ;
+山椒 > sanshou\ ;
+佳節 > kasetsu\ ;
+修法 > shuuhou\ ;
+今週 > konshuu\ ;
+聖週 > seishuu\ ;
+低翼 > teiyoku\ ;
+色事 > irogoto\ ;
+柿色 > kakiiro\ ;
+環礁 > kanshou\ ;
+田楽 > dengaku\ ;
+今迄 > imamade\ ;
+乾飯 > hoshiii\ ;
+良人 > ryoujin\ ;
+宿縁 > shukuen\ ;
+臣従 > shinjuu\ ;
+側射 > sokusha\ ;
+腹水 > fukusui\ ;
+臨床 > rinshou\ ;
+跋渉 > basshou\ ;
+侵犯 > shinpan\ ;
+対症 > taishou\ ;
+乳香 > nyuukou\ ;
+仮説 > kasetsu\ ;
+専用 > sen''you\ ;
+町村 > chouson\ ;
+倒木 > touboku\ ;
+偏心 > henshin\ ;
+臨席 > rinseki\ ;
+賞詞 > shoushi\ ;
+架設 > kasetsu\ ;
+修正 > shuusei\ ;
+木魚 > mokugyo\ ;
+聴講 > choukou\ ;
+催告 > saikoku\ ;
+高声 > takagoe\ ;
+併称 > heishou\ ;
+交錯 > kousaku\ ;
+概則 > gaisoku\ ;
+仮設 > kasetsu\ ;
+耐震 > taishin\ ;
+栄職 > eishoku\ ;
+仏跡 > busseki\ ;
+供用 > kyouyou\ ;
+貫通 > kantsuu\ ;
+聖蹟 > seiseki\ ;
+島国 > tougoku\ ;
+尊王 > son''nou\ ;
+産業 > sangyou\ ;
+腰気 > koshike\ ;
+車中 > shachuu\ ;
+仰視 > gyoushi\ ;
+傷創 > shousou\ ;
+車両 > sharyou\ ;
+食間 > shokkan\ ;
+仮親 > karioya\ ;
+育苗 > ikubyou\ ;
+官能 > kan''nou\ ;
+賃貸 > chintai\ ;
+岡惚 > okabore\ ;
+聖跡 > seiseki\ ;
+枝豆 > edamame\ ;
+村長 > sonchou\ ;
+聴許 > choukyo\ ;
+朝鮮 > chousen\ ;
+生業 > nariwai\ ;
+代読 > daidoku\ ;
+現象 > genshou\ ;
+乳頭 > nyuutou\ ;
+小片 > shouhen\ ;
+実習 > jisshuu\ ;
+仲裁 > chuusai\ ;
+小爪 > kodzume\ ;
+疎密 > somitsu\ ;
+聴解 > choukai\ ;
+貧農 > hin''nou\ ;
+代診 > daishin\ ;
+聴視 > choushi\ ;
+腺様 > sen''you\ ;
+属格 > zokkaku\ ;
+傷兵 > shouhei\ ;
+楽典 > gakuten\ ;
+画数 > kakusuu\ ;
+低級 > teikyuu\ ;
+膺懲 > youchou\ ;
+倍旧 > baikyuu\ ;
+高圧 > kouatsu\ ;
+肝葉 > kan''you\ ;
+町政 > chousei\ ;
+修業 > shugyou\ ;
+極刑 > kyokkei\ ;
+岩床 > ganshou\ ;
+寮生 > ryousei\ ;
+病名 > byoumei\ ;
+東進 > toushin\ ;
+校章 > koushou\ ;
+梶棒 > kajibou\ ;
+極冠 > kyokkan\ ;
+極内 > gokunai\ ;
+病友 > byouyuu\ ;
+骰子 > saikoro\ ;
+岡引 > okahiki\ ;
+傴僂 > semushi\ ;
+停学 > teigaku\ ;
+朱鞘 > shuzaya\ ;
+実績 > jisseki\ ;
+病原 > byougen\ ;
+極光 > kyokkou\ ;
+亨通 > koutsuu\ ;
+本領 > honryou\ ;
+人跡 > hitoato\ ;
+付設 > fusetsu\ ;
+首級 > shukyuu\ ;
+供物 > kumotsu\ ;
+峻厳 > shungen\ ;
+象限 > shougen\ ;
+身体 > shintai\ ;
+至妙 > shimyou\ ;
+甘栗 > amaguri\ ;
+仕訳 > shiwake\ ;
+興国 > koukoku\ ;
+交通 > koutsuu\ ;
+躍動 > yakudou\ ;
+代表 > daihyou\ ;
+亢進 > koushin\ ;
+病勢 > byousei\ ;
+棲息 > seisoku\ ;
+背約 > haiyaku\ ;
+容積 > youseki\ ;
+仏語 > butsugo\ ;
+腰椎 > youtsui\ ;
+身代 > shindai\ ;
+玉音 > gyokuon\ ;
+寓目 > guumoku\ ;
+来週 > raishuu\ ;
+船側 > sensoku\ ;
+本震 > honshin\ ;
+体積 > taiseki\ ;
+木靴 > kigutsu\ ;
+香箱 > koubako\ ;
+休航 > kyuukou\ ;
+朝風 > asakaze\ ;
+対照 > taishou\ ;
+舷側 > gensoku\ ;
+根瘤 > konryuu\ ;
+岩山 > iwayama\ ;
+楽人 > gakujin\ ;
+豆類 > mamerui\ ;
+官給 > kankyuu\ ;
+玉露 > gyokuro\ ;
+身上 > shinjou\ ;
+船便 > funabin\ ;
+催促 > saisoku\ ;
+生新 > seishin\ ;
+脳漿 > noushou\ ;
+脹満 > chouman\ ;
+超然 > chouzen\ ;
+伝習 > denshuu\ ;
+留年 > ryuunen\ ;
+贅肉 > zeiniku\ ;
+高台 > takadai\ ;
+岩室 > iwamuro\ ;
+俵数 > hyousuu\ ;
+朔風 > sakufuu\ ;
+学芸 > gakugei\ ;
+首章 > shushou\ ;
+男手 > otokode\ ;
+梅毒 > baidoku\ ;
+植字 > shokuji\ ;
+朝靄 > asamoya\ ;
+屈服 > kuppuku\ ;
+朝霧 > asagiri\ ;
+信条 > shinjou\ ;
+翰長 > kanchou\ ;
+肌色 > hadairo\ ;
+学舎 > gakusha\ ;
+信望 > shinbou\ ;
+修整 > shuusei\ ;
+信書 > shinsho\ ;
+極上 > gokujou\ ;
+症候 > shoukou\ ;
+休耕 > kyuukou\ ;
+船中 > senchuu\ ;
+伸筋 > shinkin\ ;
+肉色 > nikuiro\ ;
+修改 > shuukai\ ;
+岸壁 > ganpeki\ ;
+完納 > kan''nou\ ;
+人証 > ninshou\ ;
+乾酪 > kanraku\ ;
+症例 > shourei\ ;
+略字 > ryakuji\ ;
+膨張 > bouchou\ ;
+屋敷 > yashiki\ ;
+修撰 > shuusen\ ;
+伏罪 > fukuzai\ ;
+密画 > mitsuga\ ;
+病体 > byoutai\ ;
+考量 > kouryou\ ;
+餡蜜 > anmitsu\ ;
+官窯 > kan''you\ ;
+仔虫 > shichuu\ ;
+耽読 > tandoku\ ;
+小水 > shousui\ ;
+肉腫 > nikushu\ ;
+俗書 > zokusho\ ;
+老醜 > roushuu\ ;
+驕慢 > kyouman\ ;
+倔強 > kukkyou\ ;
+病人 > byounin\ ;
+偏執 > henshuu\ ;
+俎板 > manaita\ ;
+乳酸 > nyuusan\ ;
+学者 > gakusha\ ;
+宰相 > saishou\ ;
+主領 > shuryou\ ;
+岩壁 > ganpeki\ ;
+佯狂 > youkyou\ ;
+丸顔 > marugao\ ;
+曳馬 > hikiuma\ ;
+対流 > tairyuu\ ;
+顔黒 > ganguro\ ;
+伏縫 > fusenui\ ;
+曲馬 > kyokuba\ ;
+赤燐 > sekirin\ ;
+傑作 > kessaku\ ;
+瑞祥 > zuishou\ ;
+驕恣 > kyoushi\ ;
+伏線 > fukusen\ ;
+傀儡 > kugutsu\ ;
+珍談 > chindan\ ;
+俗文 > zokubun\ ;
+交読 > koudoku\ ;
+倒幕 > toubaku\ ;
+家畜 > kachiku\ ;
+中飯 > chuuhan\ ;
+球菌 > kyuukin\ ;
+首相 > shushou\ ;
+中風 > chuubuu\ ;
+風鎮 > fuuchin\ ;
+借屋 > shakuya\ ;
+島中 > touchuu\ ;
+宝石 > houseki\ ;
+胆石 > tanseki\ ;
+山師 > yamashi\ ;
+食費 > shokuhi\ ;
+交角 > koukaku\ ;
+木金 > mokukin\ ;
+定石 > jouseki\ ;
+属性 > zokusei\ ;
+脳橋 > noukyou\ ;
+中項 > chuukou\ ;
+来診 > raishin\ ;
+球茎 > kyuukei\ ;
+山嶽 > sangaku\ ;
+肩章 > kenshou\ ;
+生息 > seisoku\ ;
+便服 > benpuku\ ;
+亡親 > boushin\ ;
+健勝 > kenshou\ ;
+仕草 > shigusa\ ;
+九重 > kokonoe\ ;
+俊敏 > shunbin\ ;
+来襲 > raishuu\ ;
+主長 > shuchou\ ;
+踊字 > odoriji\ ;
+山峡 > yamakai\ ;
+赤潮 > akashio\ ;
+最長 > saichou\ ;
+学級 > gakkyuu\ ;
+聴聞 > choumon\ ;
+山岳 > sangaku\ ;
+生得 > seitoku\ ;
+略図 > ryakuzu\ ;
+両頭 > ryoutou\ ;
+尚更 > naosara\ ;
+屏息 > heisoku\ ;
+中隊 > chuutai\ ;
+木造 > mokuzou\ ;
+伝票 > denpyou\ ;
+朝酒 > asazake\ ;
+容物 > iremono\ ;
+画定 > kakutei\ ;
+寂然 > sekizen\ ;
+甘心 > kanshin\ ;
+専業 > sengyou\ ;
+跡形 > atokata\ ;
+偶作 > guusaku\ ;
+曹長 > souchou\ ;
+小柄 > kodzuka\ ;
+孝経 > koukyou\ ;
+聴罪 > chouzai\ ;
+余熱 > yonetsu\ ;
+山容 > san''you\ ;
+両面 > ryoumen\ ;
+信愛 > shin''ai\ ;
+俗才 > zokusai\ ;
+存続 > sonzoku\ ;
+望郷 > boukyou\ ;
+猛鳥 > mouchou\ ;
+宝生 > houshou\ ;
+美髪 > bihatsu\ ;
+尚早 > shousou\ ;
+中間 > chuukan\ ;
+一髪 > ippatsu\ ;
+仲継 > chuukei\ ;
+将校 > shoukou\ ;
+安着 > anchaku\ ;
+両雄 > ryouyuu\ ;
+季節 > kisetsu\ ;
+争訟 > soushou\ ;
+二親 > futaoya\ ;
+豚足 > tonsoku\ ;
+官用 > kan''you\ ;
+余烈 > yoretsu\ ;
+松葉 > matsuba\ ;
+安直 > anchoku\ ;
+風速 > fuusoku\ ;
+顎髭 > agohige\ ;
+翼賛 > yokusan\ ;
+属島 > zokutou\ ;
+肺病 > haibyou\ ;
+小智 > shouchi\ ;
+実理 > jitsuri\ ;
+小景 > shoukei\ ;
+学童 > gakudou\ ;
+棋客 > kikyaku\ ;
+末路 > matsuro\ ;
+侵攻 > shinkou\ ;
+将来 > shourai\ ;
+了解 > ryoukai\ ;
+畑地 > hatachi\ ;
+信心 > shinjin\ ;
+対格 > taikaku\ ;
+屈強 > kukkyou\ ;
+学窓 > gakusou\ ;
+梟悪 > kyouaku\ ;
+男娼 > danshou\ ;
+孤立 > koritsu\ ;
+腹帯 > fukutai\ ;
+学究 > gakkyuu\ ;
+俗情 > zokujou\ ;
+了見 > ryouken\ ;
+丸鋼 > marukou\ ;
+俊才 > shunsai\ ;
+俗悪 > zokuaku\ ;
+職組 > shokuso\ ;
+寒流 > kanryuu\ ;
+群集 > gunshuu\ ;
+群雄 > gun''yuu\ ;
+山姥 > yamauba\ ;
+上顎 > jougaku\ ;
+寝殿 > shinden\ ;
+少数 > shousuu\ ;
+男妾 > danshou\ ;
+小斎 > shousai\ ;
+脂気 > aburake\ ;
+専有 > sen''yuu\ ;
+尽忠 > jinchuu\ ;
+小数 > shousuu\ ;
+条虫 > jouchuu\ ;
+略叙 > ryakujo\ ;
+美食 > bishoku\ ;
+山奥 > yamaoku\ ;
+珍蔵 > chinzou\ ;
+尊族 > sonzoku\ ;
+俗念 > zokunen\ ;
+格段 > kakudan\ ;
+一食 > isshoku\ ;
+将星 > shousei\ ;
+聯絡 > renraku\ ;
+学祭 > gakusai\ ;
+獄門 > gokumon\ ;
+促成 > sokusei\ ;
+考証 > koushou\ ;
+完璧 > kanpeki\ ;
+生害 > shougai\ ;
+乱調 > ranchou\ ;
+人臣 > jinshin\ ;
+一類 > ichirui\ ;
+乱読 > randoku\ ;
+亀裂 > kiretsu\ ;
+胸水 > kyousui\ ;
+枠線 > wakusen\ ;
+休眠 > kyuumin\ ;
+臨休 > rinkyuu\ ;
+仄聞 > sokubun\ ;
+低潮 > teichou\ ;
+伏目 > fushime\ ;
+万難 > ban''nan\ ;
+驕奢 > kyousha\ ;
+屎尿 > shinyou\ ;
+上陸 > jouriku\ ;
+尺度 > shakudo\ ;
+賤称 > senshou\ ;
+万障 > banshou\ ;
+最適 > saiteki\ ;
+就役 > shuueki\ ;
+一面 > ichimen\ ;
+対敵 > taiteki\ ;
+朝貢 > choukou\ ;
+仏縁 > butsuen\ ;
+仕組 > shikumi\ ;
+桐材 > kirizai\ ;
+射撃 > shageki\ ;
+校注 > kouchuu\ ;
+一雨 > hitoame\ ;
+柱状 > chuujou\ ;
+作況 > sakkyou\ ;
+一難 > ichinan\ ;
+山地 > yamachi\ ;
+俊彦 > shungen\ ;
+胴欲 > douyoku\ ;
+額面 > gakumen\ ;
+上長 > jouchou\ ;
+珍芸 > chingei\ ;
+森厳 > shingen\ ;
+男囚 > danshuu\ ;
+梯子 > hashigo\ ;
+枕絵 > makurae\ ;
+番傘 > bangasa\ ;
+一陣 > ichijin\ ;
+仏経 > bukkyou\ ;
+頬髭 > hoohige\ ;
+未設 > misetsu\ ;
+略儀 > ryakugi\ ;
+駿才 > shunsai\ ;
+能楽 > nougaku\ ;
+小才 > shousai\ ;
+主軸 > shujiku\ ;
+頬骨 > hoobone\ ;
+乱行 > rangyou\ ;
+嫉視 > shisshi\ ;
+小成 > shousei\ ;
+肉眼 > nikugan\ ;
+中道 > chuudou\ ;
+少憩 > shoukei\ ;
+客演 > kyakuen\ ;
+完熟 > kanjuku\ ;
+一門 > ichimon\ ;
+暗鬱 > an''utsu\ ;
+小憩 > shoukei\ ;
+中退 > chuutai\ ;
+植付 > uetsuke\ ;
+理窟 > rikutsu\ ;
+実演 > jitsuen\ ;
+修好 > shuukou\ ;
+尼寺 > amadera\ ;
+中農 > chuunou\ ;
+村落 > sonraku\ ;
+末裔 > matsuei\ ;
+尺寸 > sekisun\ ;
+驚嘆 > kyoutan\ ;
+梢子 > shoushi\ ;
+寸描 > sunbyou\ ;
+木製 > mokusei\ ;
+佗歌 > wabiuta\ ;
+並進 > heishin\ ;
+修士 > shuushi\ ;
+風評 > fuuhyou\ ;
+番人 > ban''nin\ ;
+害毒 > gaidoku\ ;
+学生 > gakusei\ ;
+朗読 > roudoku\ ;
+朗誦 > roushou\ ;
+実測 > jissoku\ ;
+生垣 > ikegaki\ ;
+属国 > zokkoku\ ;
+五色 > goshoku\ ;
+赤札 > akafuda\ ;
+板締 > itajime\ ;
+珍聞 > chinbun\ ;
+町名 > choumei\ ;
+朝見 > chouken\ ;
+暮雪 > bosetsu\ ;
+仕種 > shigusa\ ;
+佳月 > kagetsu\ ;
+肉界 > nikukai\ ;
+宮殿 > kyuuden\ ;
+来聴 > raichou\ ;
+頭領 > touryou\ ;
+任用 > nin''you\ ;
+胸板 > munaita\ ;
+信奉 > shinpou\ ;
+梓宮 > shikyuu\ ;
+板紙 > itagami\ ;
+頭頂 > touchou\ ;
+二色 > nishoku\ ;
+駐支 > chuushi\ ;
+小径 > shoukei\ ;
+曲路 > kyokuro\ ;
+少弟 > shoutei\ ;
+両輪 > ryourin\ ;
+木蝋 > mokurou\ ;
+一錠 > ichijou\ ;
+実況 > jikkyou\ ;
+赤旗 > akahata\ ;
+小弟 > shoutei\ ;
+俗姓 > zokusei\ ;
+係属 > keizoku\ ;
+佳日 > kajitsu\ ;
+両軍 > ryougun\ ;
+胎毒 > taidoku\ ;
+留任 > ryuunin\ ;
+朽葉 > kuchiba\ ;
+松籟 > shourai\ ;
+小康 > shoukou\ ;
+山勘 > yamakan\ ;
+少年 > shounen\ ;
+今程 > imahodo\ ;
+駒損 > komason\ ;
+罪障 > zaishou\ ;
+小店 > shouten\ ;
+宿根 > shukkon\ ;
+月評 > geppyou\ ;
+署長 > shochou\ ;
+今秋 > konshuu\ ;
+町制 > chousei\ ;
+下部 > shimobe\ ;
+専念 > sen''nen\ ;
+束群 > sokugun\ ;
+実母 > jitsubo\ ;
+専心 > senshin\ ;
+献酬 > kenshuu\ ;
+丁重 > teichou\ ;
+不達 > futatsu\ ;
+主調 > shuchou\ ;
+下達 > katatsu\ ;
+飛脚 > hikyaku\ ;
+町内 > chounai\ ;
+月見 > tsukimi\ ;
+俗塵 > zokujin\ ;
+個別 > kobetsu\ ;
+属名 > zokumei\ ;
+倡佯 > shouyou\ ;
+付着 > fuchaku\ ;
+上進 > joushin\ ;
+服装 > fukusou\ ;
+体格 > taikaku\ ;
+猟銃 > ryoujuu\ ;
+交絡 > kouraku\ ;
+棄却 > kikyaku\ ;
+何某 > nanibou\ ;
+校服 > koufuku\ ;
+仕着 > shikise\ ;
+木蔦 > kidzuta\ ;
+貧窮 > hinkyuu\ ;
+肉片 > nikuhen\ ;
+将帥 > shousui\ ;
+男優 > dan''yuu\ ;
+木蓮 > mokuren\ ;
+曲譜 > kyokufu\ ;
+梗塞 > kousoku\ ;
+甲冑 > katchuu\ ;
+侵害 > shingai\ ;
+肥溜 > koedame\ ;
+賞玩 > shougan\ ;
+借人 > karinin\ ;
+人称 > ninshou\ ;
+俊士 > shunshi\ ;
+有衆 > yuushuu\ ;
+書評 > shohyou\ ;
+密教 > mikkyou\ ;
+豪腹 > goufuku\ ;
+一道 > ichidou\ ;
+一遇 > ichiguu\ ;
+書証 > shoshou\ ;
+貫禄 > kanroku\ ;
+越年 > etsunen\ ;
+一連 > ichiren\ ;
+生協 > seikyou\ ;
+三軸 > sanjiku\ ;
+老臣 > roushin\ ;
+条約 > jouyaku\ ;
+修史 > shuushi\ ;
+豆蔵 > mamezou\ ;
+余日 > yojitsu\ ;
+球界 > kyuukai\ ;
+作文 > sakubun\ ;
+小寒 > shoukan\ ;
+賞状 > shoujou\ ;
+杜絶 > tozetsu\ ;
+低木 > teiboku\ ;
+尊属 > sonzoku\ ;
+馬方 > umakata\ ;
+乱臣 > ranshin\ ;
+何時 > nandoki\ ;
+赤手 > sekishu\ ;
+小官 > shoukan\ ;
+乳腺 > nyuusen\ ;
+少子 > shoushi\ ;
+献身 > kenshin\ ;
+倒伏 > toufuku\ ;
+賞牌 > shouhai\ ;
+曲解 > kyokkai\ ;
+珍答 > chintou\ ;
+一輪 > ichirin\ ;
+寵幸 > choukou\ ;
+町会 > choukai\ ;
+定業 > teigyou\ ;
+驕傲 > kyougou\ ;
+驚倒 > kyoutou\ ;
+尊容 > son''you\ ;
+現用 > gen''you\ ;
+上足 > jousoku\ ;
+官業 > kangyou\ ;
+両論 > ryouron\ ;
+一軍 > ichigun\ ;
+町人 > chounin\ ;
+上越 > jouetsu\ ;
+尊宅 > sontaku\ ;
+項領 > kouryou\ ;
+香木 > kouboku\ ;
+局員 > kyokuin\ ;
+専属 > senzoku\ ;
+何故 > naniyue\ ;
+亢竜 > kouryou\ ;
+猛進 > moushin\ ;
+介病 > kaibyou\ ;
+将官 > shoukan\ ;
+仏画 > butsuga\ ;
+脱字 > datsuji\ ;
+猛追 > moutsui\ ;
+贅沢 > zeitaku\ ;
+信号 > shingou\ ;
+田作 > densaku\ ;
+伯楽 > bakurou\ ;
+定格 > teikaku\ ;
+山中 > sanchuu\ ;
+胸懐 > kyoukai\ ;
+本腹 > honpuku\ ;
+対審 > taishin\ ;
+五節 > gosetsu\ ;
+主虹 > shuniji\ ;
+並製 > namisei\ ;
+甚六 > jinroku\ ;
+狂騒 > kyousou\ ;
+赤恥 > akahaji\ ;
+朱肉 > shuniku\ ;
+余接 > yosetsu\ ;
+甲乙 > kouotsu\ ;
+井筒 > idzutsu\ ;
+本能 > hon''nou\ ;
+万象 > banshou\ ;
+瑣末 > samatsu\ ;
+香料 > kouryou\ ;
+俗名 > zokumei\ ;
+球状 > kyuujou\ ;
+胴慾 > douyoku\ ;
+人皇 > nin''nou\ ;
+人的 > jinteki\ ;
+伏水 > fukusui\ ;
+少壮 > shousou\ ;
+脆弱 > zeijaku\ ;
+饑渇 > kikatsu\ ;
+小変 > shouhen\ ;
+主薬 > shuyaku\ ;
+購求 > koukyuu\ ;
+官有 > kan''yuu\ ;
+休止 > kyuushi\ ;
+了簡 > ryouken\ ;
+他物 > tabutsu\ ;
+羽虫 > hamushi\ ;
+産休 > sankyuu\ ;
+胎教 > taikyou\ ;
+作戦 > sakusen\ ;
+伯林 > berurin\ ;
+作成 > sakusei\ ;
+寒心 > kanshin\ ;
+狂風 > kyoufuu\ ;
+宣教 > senkyou\ ;
+背教 > haikyou\ ;
+豊胸 > houkyou\ ;
+柳条 > ryuujou\ ;
+将士 > shoushi\ ;
+生乳 > seinyuu\ ;
+宗旨 > shuushi\ ;
+侯国 > koukoku\ ;
+群衆 > gunshuu\ ;
+宗族 > souzoku\ ;
+肉池 > nikuchi\ ;
+梓匠 > shishou\ ;
+三角 > sankaku\ ;
+下見 > shitami\ ;
+伏樋 > fusedoi\ ;
+肉汁 > nikujuu\ ;
+乳糖 > nyuutou\ ;
+玄翁 > gen''nou\ ;
+一説 > issetsu\ ;
+駐屯 > chuuton\ ;
+就労 > shuurou\ ;
+胸底 > kyoutei\ ;
+宣揚 > sen''you\ ;
+買物 > kaimono\ ;
+顛覆 > tenpuku\ ;
+修交 > shuukou\ ;
+居候 > isourou\ ;
+服膺 > fukuyou\ ;
+宿怨 > shukuen\ ;
+而立 > jiritsu\ ;
+枯渇 > kokatsu\ ;
+風習 > fuushuu\ ;
+乗羃 > joubeki\ ;
+屈伸 > kusshin\ ;
+俗僧 > zokusou\ ;
+顕要 > ken''you\ ;
+肇歳 > chousai\ ;
+屈伏 > kuppuku\ ;
+本給 > honkyuu\ ;
+中葉 > chuuyou\ ;
+罪跡 > zaiseki\ ;
+飛礫 > tsubute\ ;
+条目 > joumoku\ ;
+一覧 > ichiran\ ;
+密度 > mitsudo\ ;
+上表 > jouhyou\ ;
+下血 > geketsu\ ;
+最良 > sairyou\ ;
+足労 > sokurou\ ;
+守旧 > shukyuu\ ;
+小善 > shouzen\ ;
+仮決 > kaketsu\ ;
+寛容 > kan''you\ ;
+休校 > kyuukou\ ;
+信仰 > shinkou\ ;
+栖息 > seisoku\ ;
+井目 > seimoku\ ;
+尚又 > naomata\ ;
+暗躍 > an''yaku\ ;
+考究 > koukyuu\ ;
+晩鐘 > banshou\ ;
+貨物 > kamotsu\ ;
+実技 > jitsugi\ ;
+本籤 > honkuji\ ;
+脱営 > datsuei\ ;
+体得 > taitoku\ ;
+本籍 > honseki\ ;
+木精 > mokusei\ ;
+小品 > shouhin\ ;
+有職 > yuusoku\ ;
+佳客 > kakyaku\ ;
+美術 > bijutsu\ ;
+罪責 > zaiseki\ ;
+赤子 > sekishi\ ;
+害心 > gaishin\ ;
+俗体 > zokutai\ ;
+昼餐 > chuusan\ ;
+二着 > nichaku\ ;
+俗伝 > zokuden\ ;
+了知 > ryouchi\ ;
+核子 > kakushi\ ;
+本箱 > honbako\ ;
+服罪 > fukuzai\ ;
+二直 > nichoku\ ;
+馬市 > umaichi\ ;
+環境 > kankyou\ ;
+小史 > shoushi\ ;
+俗人 > zokujin\ ;
+何年 > nan''nen\ ;
+猛襲 > moushuu\ ;
+小口 > koguchi\ ;
+松煤 > shoubai\ ;
+本筋 > honsuji\ ;
+東独 > toudoku\ ;
+獣肉 > juuniku\ ;
+中興 > chuukou\ ;
+二百 > nihyaku\ ;
+曲舞 > kusemai\ ;
+珍獣 > chinjuu\ ;
+本章 > honshou\ ;
+主翼 > shuyoku\ ;
+俗世 > zokusei\ ;
+群落 > gunraku\ ;
+飴玉 > amedama\ ;
+耄碌 > mouroku\ ;
+宮廷 > kyuutei\ ;
+就任 > shuunin\ ;
+妙齢 > myourei\ ;
+時雨 > shigure\ ;
+宮庭 > kyuutei\ ;
+中脳 > chuunou\ ;
+木立 > kodachi\ ;
+王立 > ouritsu\ ;
+小勇 > shouyuu\ ;
+職権 > shokken\ ;
+侵冦 > shinkou\ ;
+現況 > genkyou\ ;
+寄宿 > kishuku\ ;
+背徳 > haitoku\ ;
+習練 > shuuren\ ;
+格外 > kakugai\ ;
+上蔟 > jouzoku\ ;
+中背 > chuuzei\ ;
+赤外 > sekigai\ ;
+両舷 > ryougen\ ;
+季末 > kimatsu\ ;
+染料 > senryou\ ;
+松濤 > shoutou\ ;
+柄杓 > hishaku\ ;
+独走 > dokusou\ ;
+仮植 > kashoku\ ;
+玉稿 > gyokkou\ ;
+小刀 > shoutou\ ;
+便侫 > ben''nei\ ;
+頭註 > touchuu\ ;
+他殺 > tasatsu\ ;
+下葉 > shitaba\ ;
+足代 > ashidai\ ;
+有給 > yuukyuu\ ;
+便佞 > ben''nei\ ;
+中老 > chuurou\ ;
+月給 > gekkyuu\ ;
+駐在 > chuuzai\ ;
+首席 > shuseki\ ;
+有終 > yuushuu\ ;
+両腕 > ryouude\ ;
+獄舎 > gokusha\ ;
+頭角 > toukaku\ ;
+顛落 > tenraku\ ;
+小党 > shoutou\ ;
+侠勇 > kyouyuu\ ;
+導入 > dounyuu\ ;
+伝承 > denshou\ ;
+胸声 > kyousei\ ;
+乙種 > otsushu\ ;
+乗積 > jouseki\ ;
+牝鶏 > mendori\ ;
+群臣 > gunshin\ ;
+孟春 > moushun\ ;
+供勢 > tomozei\ ;
+乾留 > kanryuu\ ;
+審問 > shinmon\ ;
+賎業 > sengyou\ ;
+賞杯 > shouhai\ ;
+介殻 > kaikaku\ ;
+一葉 > ichiyou\ ;
+最終 > saishuu\ ;
+乳癌 > nyuugan\ ;
+将兵 > shouhei\ ;
+牝鳥 > mendori\ ;
+仰望 > gyoubou\ ;
+宗廟 > soubyou\ ;
+乾瓢 > kanpyou\ ;
+耽溺 > tandeki\ ;
+住宅 > juutaku\ ;
+両者 > ryousha\ ;
+超勤 > choukin\ ;
+貫流 > kanryuu\ ;
+官庁 > kanchou\ ;
+老病 > roubyou\ ;
+定席 > jouseki\ ;
+賓格 > hinkaku\ ;
+朝礼 > chourei\ ;
+小便 > shonben\ ;
+寸劇 > sungeki\ ;
+封入 > fuunyuu\ ;
+警鐘 > keishou\ ;
+春雷 > shunrai\ ;
+寒国 > kankoku\ ;
+侯伯 > kouhaku\ ;
+中編 > chuuhen\ ;
+未着 > michaku\ ;
+本省 > honshou\ ;
+書経 > shokyou\ ;
+寸刻 > sunkoku\ ;
+事物 > jibutsu\ ;
+仕業 > shiwaza\ ;
+首将 > shushou\ ;
+休戦 > kyuusen\ ;
+現業 > gengyou\ ;
+曳網 > hikiami\ ;
+尊信 > sonshin\ ;
+中継 > chuukei\ ;
+超凡 > choubon\ ;
+仲断 > chuudan\ ;
+小伝 > shouden\ ;
+鞦韆 > buranko\ ;
+豪球 > goukyuu\ ;
+乱用 > ran''you\ ;
+領解 > ryoukai\ ;
+七色 > nanairo\ ;
+上膊 > jouhaku\ ;
+何奴 > doyatsu\ ;
+林業 > ringyou\ ;
+一芸 > ichigei\ ;
+休憩 > kyuukei\ ;
+東清 > toushin\ ;
+犬釘 > inukugi\ ;
+球根 > kyuukon\ ;
+未発 > mihatsu\ ;
+小人 > shounin\ ;
+佗声 > wabigoe\ ;
+一色 > hitoiro\ ;
+主筋 > shusuji\ ;
+下脚 > kakyaku\ ;
+中糸 > chuuito\ ;
+群羊 > gun''you\ ;
+資格 > shikaku\ ;
+書籍 > shoseki\ ;
+宿場 > shukuba\ ;
+春闘 > shuntou\ ;
+専修 > senshuu\ ;
+小乗 > shoujou\ ;
+伸展 > shinten\ ;
+例刻 > reikoku\ ;
+暴落 > bouraku\ ;
+狂躁 > kyousou\ ;
+貨殖 > kashoku\ ;
+京洛 > keiraku\ ;
+会心 > kaishin\ ;
+中米 > chuubei\ ;
+交渉 > koushou\ ;
+頌詞 > shoushi\ ;
+万能 > man''nou\ ;
+三育 > san''iku\ ;
+三股 > sanmata\ ;
+一膳 > ichizen\ ;
+学才 > gakusai\ ;
+特電 > tokuden\ ;
+順調 > junchou\ ;
+羽箒 > habouki\ ;
+脚光 > kyakkou\ ;
+定宿 > jouyado\ ;
+審判 > shinpan\ ;
+独裁 > dokusai\ ;
+羊膜 > youmaku\ ;
+末生 > suenari\ ;
+査察 > sasatsu\ ;
+豪物 > eramono\ ;
+中篇 > chuuhen\ ;
+専任 > sen''nin\ ;
+羊腸 > youchou\ ;
+上翼 > jouyoku\ ;
+休怠 > kyuutai\ ;
+乱獲 > rankaku\ ;
+交流 > kouryuu\ ;
+姦通 > kantsuu\ ;
+義絶 > gizetsu\ ;
+昇順 > shoujun\ ;
+貝毒 > kaidoku\ ;
+官学 > kangaku\ ;
+現有 > gen''yuu\ ;
+貝殼 > kaigara\ ;
+貝殻 > kaigara\ ;
+賞揚 > shouyou\ ;
+中等 > chuutou\ ;
+物音 > monooto\ ;
+乳状 > nyuujou\ ;
+主神 > shushin\ ;
+林木 > rinboku\ ;
+玉璽 > gyokuji\ ;
+会席 > kaiseki\ ;
+狼藉 > rouzeki\ ;
+羊肉 > youniku\ ;
+翼状 > yokujou\ ;
+預血 > yoketsu\ ;
+風疹 > fuushin\ ;
+休廷 > kyuutei\ ;
+玉瑛 > gyokuei\ ;
+宮城 > kyuujou\ ;
+超人 > choujin\ ;
+宿営 > shukuei\ ;
+枝族 > shizoku\ ;
+他日 > tajitsu\ ;
+老熟 > roujuku\ ;
+讃賞 > sanshou\ ;
+資料 > shiryou\ ;
+駐兵 > chuuhei\ ;
+一群 > ichigun\ ;
+低圧 > teiatsu\ ;
+松楓 > shoufuu\ ;
+今朝 > konchou\ ;
+丹碧 > tanpeki\ ;
+暮色 > boshoku\ ;
+仕方 > shikata\ ;
+飢渇 > kikatsu\ ;
+今更 > imasara\ ;
+密告 > mikkoku\ ;
+昇降 > shoukou\ ;
+犯跡 > hanseki\ ;
+貴札 > kisatsu\ ;
+飄然 > hyouzen\ ;
+今暁 > kongyou\ ;
+早馬 > hayauma\ ;
+作品 > sakuhin\ ;
+負極 > fukyoku\ ;
+人格 > jinkaku\ ;
+本物 > honmono\ ;
+今時 > imadoki\ ;
+来歴 > raireki\ ;
+音訳 > on''yaku\ ;
+今春 > konshun\ ;
+今昔 > konseki\ ;
+聚斂 > shuuren\ ;
+仏教 > bukkyou\ ;
+貯木 > choboku\ ;
+木犀 > mokusei\ ;
+買春 > baishun\ ;
+富力 > furyoku\ ;
+上級 > joukyuu\ ;
+上紙 > uwagami\ ;
+聚散 > shuusan\ ;
+上紐 > uwahimo\ ;
+三級 > sankyuu\ ;
+今方 > imagata\ ;
+両種 > ryoushu\ ;
+木版 > mokuhan\ ;
+木片 > mokuhen\ ;
+孝心 > koushin\ ;
+狂詩 > kyoushi\ ;
+背圧 > haiatsu\ ;
+乾溜 > kanryuu\ ;
+肉弾 > nikudan\ ;
+獄窓 > gokusou\ ;
+学年 > gakunen\ ;
+聖教 > seikyou\ ;
+客土 > kyakudo\ ;
+譴責 > kenseki\ ;
+服用 > fukuyou\ ;
+低唱 > teishou\ ;
+旧風 > kyuufuu\ ;
+献納 > ken''nou\ ;
+存念 > zon''nen\ ;
+率爾 > sotsuji\ ;
+学帽 > gakubou\ ;
+明鏡 > meikyou\ ;
+本然 > hon''nen\ ;
+狂言 > kyougen\ ;
+仕掛 > shikake\ ;
+株券 > kabuken\ ;
+飛沫 > himatsu\ ;
+風狂 > fuukyou\ ;
+子息 > shisoku\ ;
+馬匹 > bahitsu\ ;
+書目 > shomoku\ ;
+上箱 > uwabako\ ;
+胸像 > kyouzou\ ;
+伏射 > fukusha\ ;
+胴元 > doumoto\ ;
+定圧 > teiatsu\ ;
+暗色 > anshoku\ ;
+完壁 > kanbeki\ ;
+胆嚢 > tan''nou\ ;
+豊熟 > houjuku\ ;
+上策 > jousaku\ ;
+顎紐 > agohimo\ ;
+木炭 > mokutan\ ;
+余力 > yoryoku\ ;
+体協 > taikyou\ ;
+首唱 > shushou\ ;
+中盤 > chuuban\ ;
+校則 > kousoku\ ;
+耳栓 > mimisen\ ;
+余割 > yokatsu\ ;
+万策 > bansaku\ ;
+令息 > reisoku\ ;
+片面 > katamen\ ;
+密儀 > mitsugi\ ;
+特配 > tokuhai\ ;
+乳清 > nyuusei\ ;
+日露 > nichiro\ ;
+献策 > kensaku\ ;
+余切 > yosetsu\ ;
+享有 > kyouyuu\ ;
+聴従 > choujuu\ ;
+乳液 > nyuueki\ ;
+核仁 > kakujin\ ;
+客員 > kyakuin\ ;
+星辰 > seishin\ ;
+献立 > kondate\ ;
+両眼 > ryougan\ ;
+何処 > dokoira\ ;
+豆炭 > mametan\ ;
+実員 > jitsuin\ ;
+特選 > tokusen\ ;
+宣告 > senkoku\ ;
+佝僂 > semushi\ ;
+珍本 > chinpon\ ;
+代役 > daiyaku\ ;
+乱流 > ranryuu\ ;
+一端 > ippashi\ ;
+三秋 > sanshuu\ ;
+容共 > youkyou\ ;
+校僕 > kouboku\ ;
+珍書 > chinsho\ ;
+何共 > nantomo\ ;
+寒中 > kanchuu\ ;
+丞相 > joushou\ ;
+中瓶 > chuubin\ ;
+万福 > manpuku\ ;
+来朝 > raichou\ ;
+職工 > shokkou\ ;
+宅地 > takuchi\ ;
+乳汁 > nyuujuu\ ;
+宮刑 > kyuukei\ ;
+飼料 > shiryou\ ;
+伏奏 > fukusou\ ;
+実収 > jisshuu\ ;
+校倉 > azekura\ ;
+翕然 > kyuuzen\ ;
+新鮮 > shinsen\ ;
+豊漁 > houryou\ ;
+譫言 > uwagoto\ ;
+朝潮 > asashio\ ;
+風潮 > fuuchou\ ;
+球形 > kyuukei\ ;
+胴中 > dounaka\ ;
+頚肉 > keiniku\ ;
+実印 > jitsuin\ ;
+作例 > sakurei\ ;
+本流 > honryuu\ ;
+密事 > mitsuji\ ;
+仰山 > gyousan\ ;
+仏恩 > butsuon\ ;
+他律 > taritsu\ ;
+来春 > raiharu\ ;
+乳歯 > nyuushi\ ;
+休場 > kyuujou\ ;
+現役 > gen''eki\ ;
+一礼 > ichirei\ ;
+順良 > junryou\ ;
+仕形 > shikata\ ;
+上石 > uwaishi\ ;
+両用 > ryouyou\ ;
+両生 > ryousei\ ;
+実務 > jitsumu\ ;
+五月 > satsuki\ ;
+子局 > kokyoku\ ;
+不着 > fuchaku\ ;
+下着 > shitagi\ ;
+未決 > miketsu\ ;
+大黒 > daikoku\ ;
+校了 > kouryou\ ;
+昂進 > koushin\ ;
+仕度 > shitaku\ ;
+学外 > gakugai\ ;
+実利 > jitsuri\ ;
+宗匠 > soushou\ ;
+頬紅 > hoobeni\ ;
+子宮 > shikyuu\ ;
+面長 > omonaga\ ;
+識語 > shikigo\ ;
+低俗 > teizoku\ ;
+学士 > gakushi\ ;
+下目 > shitame\ ;
+奇骨 > kikotsu\ ;
+杏林 > kyourin\ ;
+孑孑 > boufuri\ ;
+聖徳 > seitoku\ ;
+暗緑 > anryoku\ ;
+馬主 > banushi\ ;
+特赦 > tokusha\ ;
+不発 > fuhatsu\ ;
+九泉 > kyuusen\ ;
+何人 > nanpito\ ;
+伏在 > fukuzai\ ;
+職安 > shokuan\ ;
+定則 > teisoku\ ;
+新香 > shinkou\ ;
+景色 > keshiki\ ;
+定刻 > teikoku\ ;
+村有 > son''yuu\ ;
+材木 > zaimoku\ ;
+朧気 > oboroge\ ;
+万目 > banmoku\ ;
+買得 > kaidoku\ ;
+露骨 > rokotsu\ ;
+仏座 > butsuza\ ;
+飛札 > hisatsu\ ;
+伝唱 > denshou\ ;
+大鷺 > daisagi\ ;
+上白 > jouhaku\ ;
+論駁 > ronbaku\ ;
+風流 > fuuryuu\ ;
+学報 > gakuhou\ ;
+肉声 > nikusei\ ;
+代将 > daishou\ ;
+豊沃 > houyoku\ ;
+新館 > shinkan\ ;
+会商 > kaishou\ ;
+聖廟 > seibyou\ ;
+家主 > yanushi\ ;
+一着 > itchaku\ ;
+一眼 > ichigan\ ;
+一眸 > ichibou\ ;
+識見 > shikken\ ;
+某国 > boukoku\ ;
+杉材 > sugizai\ ;
+仁心 > jinshin\ ;
+一眠 > ichimin\ ;
+仁徳 > jintoku\ ;
+宛先 > atesaki\ ;
+理屈 > rikutsu\ ;
+新風 > shinpuu\ ;
+一直 > itchoku\ ;
+今年 > kon''nen\ ;
+胚乳 > hainyuu\ ;
+二日 > futsuka\ ;
+断食 > danjiki\ ;
+完勝 > kanshou\ ;
+乳棒 > nyuubou\ ;
+九死 > kyuushi\ ;
+下略 > geryaku\ ;
+瑞兆 > zuichou\ ;
+新顔 > shingao\ ;
+万病 > manbyou\ ;
+背信 > haishin\ ;
+讒臣 > zanshin\ ;
+主潮 > shuchou\ ;
+韻脚 > inkyaku\ ;
+一発 > ippatsu\ ;
+上申 > joushin\ ;
+翼棟 > yokutou\ ;
+三男 > san''nan\ ;
+材料 > zairyou\ ;
+官僚 > kanryou\ ;
+文鳥 > bunchou\ ;
+人徳 > nintoku\ ;
+仰天 > gyouten\ ;
+賊害 > zokugai\ ;
+中点 > chuuten\ ;
+題目 > daimoku\ ;
+人形 > ningyou\ ;
+牛車 > gyuusha\ ;
+賊子 > zokushi\ ;
+本業 > hongyou\ ;
+老松 > roushou\ ;
+旧邦 > kyuuhou\ ;
+果実 > kajitsu\ ;
+一畳 > ichijou\ ;
+貧弱 > hinjaku\ ;
+爆風 > bakufuu\ ;
+老朽 > roukyuu\ ;
+早速 > sassoku\ ;
+旧道 > kyuudou\ ;
+老木 > rouboku\ ;
+特認 > tokunin\ ;
+一男 > ichinan\ ;
+本棚 > hondana\ ;
+妙趣 > myoushu\ ;
+霊鳥 > reichou\ ;
+物象 > busshou\ ;
+仏寺 > butsuji\ ;
+末梢 > masshou\ ;
+論難 > ron''nan\ ;
+上玉 > joudama\ ;
+定休 > teikyuu\ ;
+論集 > ronshuu\ ;
+林学 > ringaku\ ;
+学問 > gakumon\ ;
+豪族 > gouzoku\ ;
+職場 > shokuba\ ;
+本格 > honkaku\ ;
+好適 > kouteki\ ;
+会則 > kaisoku\ ;
+主流 > shuryuu\ ;
+既述 > kijutsu\ ;
+義烈 > giretsu\ ;
+物議 > butsugi\ ;
+貸家 > kashiya\ ;
+有毒 > yuudoku\ ;
+新開 > shinkai\ ;
+下物 > kabutsu\ ;
+仙女 > sen''nyo\ ;
+爆雷 > bakurai\ ;
+伏勢 > fusezei\ ;
+特製 > tokusei\ ;
+上物 > joumono\ ;
+狂者 > kyousha\ ;
+枠外 > wakugai\ ;
+本朝 > honchou\ ;
+特装 > tokusou\ ;
+領空 > ryoukuu\ ;
+学名 > gakumei\ ;
+旧蹟 > furuato\ ;
+末期 > matsugo\ ;
+木杯 > mokuhai\ ;
+謬論 > byuuron\ ;
+木材 > mokuzai\ ;
+享年 > kyounen\ ;
+学友 > gakuyuu\ ;
+猩猩 > shoujou\ ;
+休刊 > kyuukan\ ;
+木本 > mokuhon\ ;
+下熱 > genetsu\ ;
+物証 > busshou\ ;
+安佚 > an''itsu\ ;
+来復 > raifuku\ ;
+旧跡 > furuato\ ;
+雷鳥 > raichou\ ;
+仙境 > senkyou\ ;
+丹毒 > tandoku\ ;
+旧趾 > kyuushi\ ;
+木曜 > mokuyou\ ;
+曲浦 > kyokuho\ ;
+類焼 > ruishou\ ;
+風格 > fuukaku\ ;
+球場 > kyuujou\ ;
+松屋 > matsuya\ ;
+完了 > kanryou\ ;
+頭目 > toumoku\ ;
+九月 > kugatsu\ ;
+伏兵 > fukuhei\ ;
+特融 > tokuyuu\ ;
+乱撃 > rangeki\ ;
+獣欲 > juuyoku\ ;
+天領 > tenryou\ ;
+貨客 > kakyaku\ ;
+豆板 > mameita\ ;
+天頂 > tenchou\ ;
+木星 > mokusei\ ;
+期末 > kimatsu\ ;
+購入 > kounyuu\ ;
+餅屋 > mochiya\ ;
+嫡披 > chakuhi\ ;
+朝来 > chourai\ ;
+謬見 > byuuken\ ;
+震駭 > shingai\ ;
+下火 > shitabi\ ;
+豆本 > mamehon\ ;
+賞品 > shouhin\ ;
+学制 > gakusei\ ;
+妙計 > myoukei\ ;
+今夕 > kon''yuu\ ;
+猟犬 > ryouken\ ;
+九星 > kyuusei\ ;
+姿絵 > sugatae\ ;
+失陥 > shikkan\ ;
+職員 > shokuin\ ;
+方針 > houshin\ ;
+夜食 > yashoku\ ;
+球団 > kyuudan\ ;
+新鋭 > shin''ei\ ;
+中段 > chuudan\ ;
+両洋 > ryouyou\ ;
+多食 > tashoku\ ;
+肖像 > shouzou\ ;
+東屋 > azumaya\ ;
+講読 > koudoku\ ;
+天雲 > amagumo\ ;
+不潔 > fuketsu\ ;
+学内 > gakunai\ ;
+中正 > chuusei\ ;
+中止 > chuushi\ ;
+文革 > bunkaku\ ;
+束帯 > sokutai\ ;
+期日 > kijitsu\ ;
+講評 > kouhyou\ ;
+食後 > shokugo\ ;
+不滅 > fumetsu\ ;
+猛爆 > moubaku\ ;
+学僧 > gakusou\ ;
+朝方 > asagata\ ;
+夕風 > yuukaze\ ;
+音節 > onsetsu\ ;
+大陸 > tairiku\ ;
+乳房 > nyuubou\ ;
+休会 > kyuukai\ ;
+文集 > bunshuu\ ;
+両氏 > ryoushi\ ;
+仏国 > fukkoku\ ;
+聴取 > choushu\ ;
+職印 > shokuin\ ;
+独眼 > dokugan\ ;
+朝政 > chousei\ ;
+下湯 > shimoyu\ ;
+風教 > fuukyou\ ;
+新酒 > shinshu\ ;
+夜露 > yotsuyu\ ;
+面責 > menseki\ ;
+人声 > hitogoe\ ;
+珍宝 > chinpou\ ;
+纒足 > tensoku\ ;
+主格 > shukaku\ ;
+村庄 > sonshou\ ;
+妄評 > mouhyou\ ;
+職務 > shokumu\ ;
+飯屋 > meshiya\ ;
+昆虫 > konchuu\ ;
+板壁 > itakabe\ ;
+新郎 > shinrou\ ;
+人境 > jinkyou\ ;
+纏足 > tensoku\ ;
+仲冬 > chuutou\ ;
+乾徳 > kentoku\ ;
+書棚 > shodana\ ;
+好調 > kouchou\ ;
+夕靄 > yuumoya\ ;
+新選 > shinsen\ ;
+来宅 > raitaku\ ;
+置物 > okimono\ ;
+獄死 > gokushi\ ;
+末技 > matsugi\ ;
+札所 > fudasho\ ;
+夕霧 > yuugiri\ ;
+頒白 > hanpaku\ ;
+旧観 > kyuukan\ ;
+上海 > shanhai\ ;
+斤量 > kinryou\ ;
+新道 > shindou\ ;
+仲兄 > chuukei\ ;
+既設 > kisetsu\ ;
+賊名 > zokumei\ ;
+晩秋 > banshuu\ ;
+好評 > kouhyou\ ;
+上流 > jouryuu\ ;
+嬌姿 > kyoushi\ ;
+新造 > shinzou\ ;
+乗換 > norikae\ ;
+三流 > sanryuu\ ;
+上洛 > jouraku\ ;
+雌鶏 > mendori\ ;
+末成 > uranari\ ;
+片親 > kataoya\ ;
+賠償 > baishou\ ;
+三洋 > san''you\ ;
+翌晩 > yokuban\ ;
+九拝 > kyuuhai\ ;
+仮免 > karimen\ ;
+丸材 > maruzai\ ;
+任侠 > ninkyou\ ;
+京大 > kyoudai\ ;
+旧製 > kyuusei\ ;
+丸本 > marubon\ ;
+肉体 > nikutai\ ;
+月日 > tsukihi\ ;
+両様 > ryouyou\ ;
+霊長 > reichou\ ;
+有料 > yuuryou\ ;
+雌鳥 > mendori\ ;
+敵陣 > tekijin\ ;
+項目 > koumoku\ ;
+変革 > henkaku\ ;
+乱心 > ranshin\ ;
+一浪 > ichirou\ ;
+放鳥 > houchou\ ;
+嬌声 > kyousei\ ;
+料金 > ryoukin\ ;
+老弱 > roujaku\ ;
+夕闇 > yuuyami\ ;
+数隻 > suuseki\ ;
+朽廃 > kyuuhai\ ;
+象形 > shoukei\ ;
+新車 > shinsha\ ;
+中枢 > chuusuu\ ;
+事局 > jikyoku\ ;
+文鎮 > bunchin\ ;
+両棲 > ryousei\ ;
+仮借 > kashaku\ ;
+中東 > chuutou\ ;
+代入 > dainyuu\ ;
+一泡 > hitoawa\ ;
+教養 > kyouyou\ ;
+雨風 > amekaze\ ;
+下歯 > shitaba\ ;
+豪州 > goushuu\ ;
+最新 > saishin\ ;
+代償 > daishou\ ;
+革装 > kawasou\ ;
+仏印 > futsuin\ ;
+主教 > shukyou\ ;
+一決 > ikketsu\ ;
+事実 > jijitsu\ ;
+中更 > chuukou\ ;
+予察 > yosatsu\ ;
+一汗 > hitoase\ ;
+諸訳 > showake\ ;
+朝憲 > chouken\ ;
+姦策 > kansaku\ ;
+仲仕 > nakashi\ ;
+本心 > honshin\ ;
+仲介 > chuukai\ ;
+仲人 > nakoudo\ ;
+京地 > kyouchi\ ;
+本復 > honpuku\ ;
+買収 > baishuu\ ;
+教頭 > kyoutou\ ;
+一毫 > ichigou\ ;
+枠内 > wakunai\ ;
+中景 > chuukei\ ;
+一毛 > ichimou\ ;
+耳垢 > mimiaka\ ;
+牧草 > bokusou\ ;
+時節 > jisetsu\ ;
+顕正 > kenshou\ ;
+東国 > tougoku\ ;
+大量 > tairyou\ ;
+教鞭 > kyouben\ ;
+館内 > kan''nai\ ;
+中旬 > chuujun\ ;
+狩猟 > shuryou\ ;
+更新 > koushin\ ;
+縦隔 > juukaku\ ;
+中断 > chuudan\ ;
+雑駁 > zappaku\ ;
+頓狂 > tonkyou\ ;
+雨雲 > amagumo\ ;
+失透 > shittou\ ;
+両替 > ryougae\ ;
+雪隠 > setchin\ ;
+旧藩 > kyuuhan\ ;
+中数 > chuusuu\ ;
+末座 > matsuza\ ;
+飴坊 > amenbou\ ;
+代作 > daisaku\ ;
+本庁 > honchou\ ;
+丸損 > maruzon\ ;
+林内 > rin''nai\ ;
+本年 > hon''nen\ ;
+諧調 > kaichou\ ;
+末広 > suehiro\ ;
+中支 > chuushi\ ;
+旁註 > bouchuu\ ;
+代休 > daikyuu\ ;
+牧舎 > bokusha\ ;
+仏具 > butsugu\ ;
+亡国 > boukoku\ ;
+警笛 > keiteki\ ;
+末席 > masseki\ ;
+謹聴 > kinchou\ ;
+諸行 > shogyou\ ;
+玉座 > gyokuza\ ;
+老少 > roushou\ ;
+本州 > honshuu\ ;
+旧蔵 > kyuuzou\ ;
+久懐 > kyuukai\ ;
+老将 > roushou\ ;
+猛毒 > moudoku\ ;
+緘黙 > kanmoku\ ;
+介入 > kainyuu\ ;
+昨紙 > sakushi\ ;
+一様 > ichiyou\ ;
+習慣 > shuukan\ ;
+曝書 > bakusho\ ;
+両方 > ryouhou\ ;
+豹変 > hyouhen\ ;
+救難 > kyuunan\ ;
+球体 > kyuutai\ ;
+両断 > ryoudan\ ;
+奥行 > okuyuki\ ;
+朝廷 > choutei\ ;
+文通 > buntsuu\ ;
+食塩 > shokuen\ ;
+熱雲 > netsuun\ ;
+電鋳 > denchuu\ ;
+教門 > kyoumon\ ;
+雑音 > zatsuon\ ;
+方角 > hougaku\ ;
+狛犬 > komainu\ ;
+珍問 > chinmon\ ;
+失踪 > shissou\ ;
+牛舎 > gyuusha\ ;
+仙人 > sen''nin\ ;
+雁首 > gankubi\ ;
+暦法 > rekihou\ ;
+天軸 > tenjiku\ ;
+語釈 > goshaku\ ;
+人前 > hitomae\ ;
+現任 > gen''nin\ ;
+夜道 > yomichi\ ;
+論調 > ronchou\ ;
+乙巡 > otsujun\ ;
+夏野 > natsuno\ ;
+習性 > shuusei\ ;
+外郭 > gaikaku\ ;
+珍品 > chinpin\ ;
+朝市 > asaichi\ ;
+奉読 > houdoku\ ;
+嬌名 > kyoumei\ ;
+昼礼 > chuurei\ ;
+牧者 > bokusha\ ;
+獣慾 > juuyoku\ ;
+末尾 > matsubi\ ;
+下期 > shimoki\ ;
+大身 > taishin\ ;
+頭注 > touchuu\ ;
+数量 > suuryou\ ;
+燗酒 > kanzake\ ;
+仕事 > shigoto\ ;
+新訂 > shintei\ ;
+論評 > ronpyou\ ;
+上服 > uwafuku\ ;
+木履 > pokkuri\ ;
+末寺 > matsuji\ ;
+論証 > ronshou\ ;
+物置 > monooki\ ;
+服従 > fukujuu\ ;
+三月 > mitsuki\ ;
+服役 > fukueki\ ;
+両損 > ryouzon\ ;
+牛脂 > gyuushi\ ;
+牧羊 > bokuyou\ ;
+文身 > bunshin\ ;
+士長 > shichou\ ;
+変量 > henryou\ ;
+万有 > ban''yuu\ ;
+本宅 > hontaku\ ;
+曲技 > kyokugi\ ;
+青蛙 > aogaeru\ ;
+有徳 > yuutoku\ ;
+特級 > tokkyuu\ ;
+献木 > kenboku\ ;
+飛地 > tobichi\ ;
+猫板 > nekoita\ ;
+日英 > nichiei\ ;
+仏事 > butsuji\ ;
+請謁 > seietsu\ ;
+易経 > ekikyou\ ;
+詩集 > shishuu\ ;
+貝割 > kaiwari\ ;
+不日 > fujitsu\ ;
+暖流 > danryuu\ ;
+一条 > ichijou\ ;
+青虫 > aomushi\ ;
+諒解 > ryoukai\ ;
+改革 > kaikaku\ ;
+上昇 > joushou\ ;
+三春 > sanshun\ ;
+朽壊 > kyuukai\ ;
+一札 > issatsu\ ;
+耐圧 > taiatsu\ ;
+一望 > ichibou\ ;
+新装 > shinsou\ ;
+縫針 > nuibari\ ;
+仁侠 > jinkyou\ ;
+頂点 > chouten\ ;
+一曲 > ikkyoku\ ;
+丹念 > tan''nen\ ;
+音物 > inmotsu\ ;
+日舞 > nichibu\ ;
+旧臘 > kyuurou\ ;
+獣心 > juushin\ ;
+請託 > seitaku\ ;
+丹心 > tanshin\ ;
+老境 > roukyou\ ;
+主役 > shuyaku\ ;
+大賞 > taishou\ ;
+今一 > imaichi\ ;
+万斛 > bankoku\ ;
+三教 > sankyou\ ;
+一晩 > hitoban\ ;
+領海 > ryoukai\ ;
+主張 > shuchou\ ;
+天象 > tenshou\ ;
+晩熟 > banjuku\ ;
+妥結 > daketsu\ ;
+春秋 > haruaki\ ;
+販促 > hansoku\ ;
+牛缶 > gyuukan\ ;
+最強 > saikyou\ ;
+変速 > hensoku\ ;
+変通 > hentsuu\ ;
+狂犬 > kyouken\ ;
+翌年 > yokunen\ ;
+晩照 > banshou\ ;
+講習 > koushuu\ ;
+文責 > bunseki\ ;
+暗殺 > ansatsu\ ;
+敵軍 > tekigun\ ;
+特等 > tokutou\ ;
+片腕 > kataude\ ;
+奇術 > kijutsu\ ;
+一旬 > ichijun\ ;
+乞婿 > koimuko\ ;
+頸椎 > keitsui\ ;
+責任 > sekinin\ ;
+顔料 > ganryou\ ;
+誕辰 > tanshin\ ;
+斜角 > shakaku\ ;
+末女 > matsujo\ ;
+顕教 > kenkyou\ ;
+中性 > chuusei\ ;
+朱墨 > shuboku\ ;
+丁数 > chousuu\ ;
+一文 > ichimon\ ;
+旗色 > hatairo\ ;
+暗欝 > an''utsu\ ;
+女色 > joshoku\ ;
+旧聞 > kyuubun\ ;
+片肺 > katahai\ ;
+主席 > shuseki\ ;
+支障 > shishou\ ;
+朱塗 > shunuri\ ;
+什一 > juuichi\ ;
+領水 > ryousui\ ;
+面舵 > omokaji\ ;
+領民 > ryoumin\ ;
+丸帯 > maruobi\ ;
+総高 > soudaka\ ;
+謀臣 > boushin\ ;
+声量 > seiryou\ ;
+朧夜 > oboroyo\ ;
+変身 > henshin\ ;
+壁面 > hekimen\ ;
+翰墨 > kanboku\ ;
+乙姫 > otohime\ ;
+玄妙 > genmyou\ ;
+羸弱 > ruijaku\ ;
+天誅 > tenchuu\ ;
+九天 > kyuuten\ ;
+九大 > kyuudai\ ;
+三振 > sanshin\ ;
+二十 > hatachi\ ;
+不抜 > fubatsu\ ;
+中庸 > chuuyou\ ;
+顕揚 > ken''you\ ;
+大詰 > oodzume\ ;
+両性 > ryousei\ ;
+調製 > chousei\ ;
+豪商 > goushou\ ;
+文調 > bunchou\ ;
+大詔 > taishou\ ;
+曲度 > kyokudo\ ;
+中年 > chuunen\ ;
+編集 > henshuu\ ;
+一握 > ichiaku\ ;
+曲庇 > kyokuhi\ ;
+婉曲 > enkyoku\ ;
+説諭 > setsuyu\ ;
+狂瀾 > kyouran\ ;
+交信 > koushin\ ;
+中帽 > chuubou\ ;
+春眠 > shunmin\ ;
+頬桁 > hoogeta\ ;
+中巻 > chuukan\ ;
+牧童 > bokudou\ ;
+東京 > toukyou\ ;
+本国 > hongoku\ ;
+説話 > setsuwa\ ;
+食券 > shokken\ ;
+主将 > shushou\ ;
+来信 > raishin\ ;
+最少 > saishou\ ;
+最小 > saishou\ ;
+主審 > shushin\ ;
+二列 > niretsu\ ;
+一括 > ikkatsu\ ;
+非職 > hishoku\ ;
+改鋳 > kaichuu\ ;
+猛撃 > mougeki\ ;
+敏速 > binsoku\ ;
+頬杖 > hoodzue\ ;
+新著 > shincho\ ;
+珍什 > chinjuu\ ;
+羞恥 > shuuchi\ ;
+九地 > kyuuchi\ ;
+明確 > meikaku\ ;
+総額 > sougaku\ ;
+二八 > nihachi\ ;
+諫臣 > kanshin\ ;
+静聴 > seichou\ ;
+景況 > keikyou\ ;
+総領 > souryou\ ;
+日給 > nikkyuu\ ;
+大衆 > taishuu\ ;
+朱唇 > shushin\ ;
+集金 > shuukin\ ;
+雨足 > ameashi\ ;
+整調 > seichou\ ;
+敷設 > fusetsu\ ;
+暦数 > rekisuu\ ;
+新茶 > shincha\ ;
+風圧 > fuuatsu\ ;
+総革 > sougawa\ ;
+中尊 > chuuzon\ ;
+外角 > gaikaku\ ;
+中将 > chuujou\ ;
+明瞭 > meiryou\ ;
+縷説 > rusetsu\ ;
+集配 > shuuhai\ ;
+月央 > getsuou\ ;
+中宮 > chuuguu\ ;
+綿飴 > wataame\ ;
+月夜 > tsukiyo\ ;
+版籍 > hanseki\ ;
+変調 > henchou\ ;
+三徳 > santoku\ ;
+陰鬱 > in''utsu\ ;
+緑陰 > ryokuin\ ;
+敵視 > tekishi\ ;
+講究 > koukyuu\ ;
+放逸 > houitsu\ ;
+上役 > uwayaku\ ;
+増額 > zougaku\ ;
+一息 > hitoiki\ ;
+新興 > shinkou\ ;
+乳剤 > nyuuzai\ ;
+明白 > meihaku\ ;
+改進 > kaishin\ ;
+下座 > shimoza\ ;
+謙称 > kenshou\ ;
+領有 > ryouyuu\ ;
+一念 > ichinen\ ;
+万引 > manbiki\ ;
+耕作 > kousaku\ ;
+特産 > tokusan\ ;
+顕彰 > kenshou\ ;
+木口 > kiguchi\ ;
+一徹 > ittetsu\ ;
+顔役 > kaoyaku\ ;
+翻刻 > honkoku\ ;
+食事 > shokuji\ ;
+総長 > souchou\ ;
+三年 > san''nen\ ;
+日立 > hitachi\ ;
+救貧 > kyuuhin\ ;
+断腸 > danchou\ ;
+上席 > jouseki\ ;
+認証 > ninshou\ ;
+杏仁 > kyounin\ ;
+万年 > man''nen\ ;
+物的 > butteki\ ;
+旧稿 > kyuukou\ ;
+陸風 > rikufuu\ ;
+一式 > isshiki\ ;
+朗唱 > roushou\ ;
+狂死 > kyoushi\ ;
+老僕 > rouboku\ ;
+群小 > gunshou\ ;
+状況 > joukyou\ ;
+新聞 > shinbun\ ;
+中夭 > chuuyou\ ;
+本則 > honsoku\ ;
+中天 > chuuten\ ;
+綱領 > kouryou\ ;
+中外 > chuugai\ ;
+教誨 > kyoukai\ ;
+奴等 > yatsura\ ;
+独断 > dokudan\ ;
+詰責 > kisseki\ ;
+耐久 > taikyuu\ ;
+隊長 > taichou\ ;
+難読 > nandoku\ ;
+顧客 > kokyaku\ ;
+独文 > dokubun\ ;
+一帖 > ichijou\ ;
+旗竿 > hatazao\ ;
+霊薬 > reiyaku\ ;
+一巡 > ichijun\ ;
+焼香 > shoukou\ ;
+教訓 > kyoukun\ ;
+不屈 > fukutsu\ ;
+木刀 > bokutou\ ;
+続騰 > zokutou\ ;
+新羅 > shiragi\ ;
+声調 > seichou\ ;
+増長 > zouchou\ ;
+暁星 > gyousei\ ;
+険難 > ken''nan\ ;
+上履 > uwabaki\ ;
+本元 > honmoto\ ;
+中堅 > chuuken\ ;
+中堂 > chuudou\ ;
+夏蚕 > natsugo\ ;
+三尺 > sanjaku\ ;
+天草 > tengusa\ ;
+月商 > gesshou\ ;
+線量 > senryou\ ;
+不実 > fujitsu\ ;
+面積 > menseki\ ;
+下宿 > geshuku\ ;
+議決 > giketsu\ ;
+乱作 > ransaku\ ;
+下家 > shitaya\ ;
+上宿 > jouyado\ ;
+豊凶 > houkyou\ ;
+猟師 > ryoushi\ ;
+旧知 > kyuuchi\ ;
+牛痘 > gyuutou\ ;
+詳論 > shouron\ ;
+物理 > butsuri\ ;
+更地 > sarachi\ ;
+牛疫 > gyuueki\ ;
+木像 > mokuzou\ ;
+朝刊 > choukan\ ;
+朝凪 > asanagi\ ;
+主唱 > shushou\ ;
+編輯 > henshuu\ ;
+一局 > ikkyoku\ ;
+一尺 > isshaku\ ;
+独探 > dokutan\ ;
+緑野 > ryokuya\ ;
+七宝 > shippou\ ;
+詳言 > shougen\ ;
+総量 > souryou\ ;
+旧盤 > kyuuban\ ;
+詳解 > shoukai\ ;
+契約 > keiyaku\ ;
+難行 > nangyou\ ;
+月収 > gesshuu\ ;
+雑話 > zatsuwa\ ;
+旧盆 > kyuubon\ ;
+一宿 > isshuku\ ;
+乱丁 > ranchou\ ;
+無骨 > bukotsu\ ;
+売行 > ureyuki\ ;
+頁数 > pējisuu\ ;
+断続 > danzoku\ ;
+音曲 > ongyoku\ ;
+一存 > ichizon\ ;
+夕菅 > yuusuge\ ;
+施策 > shisaku\ ;
+日白 > nippaku\ ;
+大腸 > daichou\ ;
+牢獄 > rougoku\ ;
+犬橇 > inuzori\ ;
+与奪 > yodatsu\ ;
+本人 > hon''nin\ ;
+除雪 > josetsu\ ;
+熟談 > jukudan\ ;
+失考 > shikkou\ ;
+牡猫 > osuneko\ ;
+晩春 > banshun\ ;
+夜色 > yashoku\ ;
+独房 > dokubou\ ;
+景教 > keikyou\ ;
+中啓 > chuukei\ ;
+新米 > shinmai\ ;
+方策 > housaku\ ;
+犬槙 > inumaki\ ;
+木仏 > kibutsu\ ;
+早番 > hayaban\ ;
+多色 > tashoku\ ;
+暦年 > rekinen\ ;
+本丸 > honmaru\ ;
+晩方 > bangata\ ;
+天聴 > tenchou\ ;
+繭紬 > kenchuu\ ;
+猟官 > ryoukan\ ;
+青票 > seihyou\ ;
+豊作 > housaku\ ;
+猛将 > moushou\ ;
+風俗 > fuuzoku\ ;
+狂暴 > kyoubou\ ;
+上声 > joushou\ ;
+丈夫 > masurao\ ;
+月利 > getsuri\ ;
+改訳 > kaiyaku\ ;
+増量 > zouryou\ ;
+零落 > reiraku\ ;
+丸十 > marujuu\ ;
+集計 > shuukei\ ;
+話術 > wajutsu\ ;
+牝犬 > mesuinu\ ;
+熟覧 > jukuran\ ;
+熟視 > jukushi\ ;
+面目 > menmoku\ ;
+煎鍋 > irinabe\ ;
+玄人 > kurouto\ ;
+断箱 > danbako\ ;
+朝会 > choukai\ ;
+填隙 > tengeki\ ;
+上塗 > uwanuri\ ;
+一如 > ichinyo\ ;
+不埒 > furachi\ ;
+緊迫 > kinpaku\ ;
+万境 > bankyou\ ;
+論策 > ronsaku\ ;
+訳載 > yakusai\ ;
+有償 > yuushou\ ;
+明澄 > meichou\ ;
+一大 > ichidai\ ;
+評論 > hyouron\ ;
+調練 > chouren\ ;
+中原 > chuugen\ ;
+誤脱 > godatsu\ ;
+狂文 > kyoubun\ ;
+読者 > dokusha\ ;
+売薬 > baiyaku\ ;
+豆乳 > tounyuu\ ;
+一声 > hitokoe\ ;
+霊肉 > reiniku\ ;
+中半 > chuuhan\ ;
+料紙 > ryoushi\ ;
+整腸 > seichou\ ;
+下地 > shitaji\ ;
+新種 > shinshu\ ;
+増進 > zoushin\ ;
+面疔 > menchou\ ;
+頂戴 > choudai\ ;
+論究 > ronkyuu\ ;
+新税 > shinzei\ ;
+降雹 > kouhyou\ ;
+静的 > seiteki\ ;
+評言 > hyougen\ ;
+下図 > shitazu\ ;
+一塁 > ichirui\ ;
+改行 > kaigyou\ ;
+一場 > ichijou\ ;
+丸公 > marukou\ ;
+語脈 > gomyaku\ ;
+好球 > koukyuu\ ;
+三国 > sangoku\ ;
+両名 > ryoumei\ ;
+随身 > zuishin\ ;
+一堂 > ichidou\ ;
+万国 > bankoku\ ;
+無雑 > muzatsu\ ;
+中前 > chuuzen\ ;
+親鸞 > shinran\ ;
+料簡 > ryouken\ ;
+電脳 > den''nou\ ;
+中判 > chuuban\ ;
+中分 > chuubun\ ;
+絶頂 > zetchou\ ;
+頑強 > gankyou\ ;
+旧版 > kyuuban\ ;
+繋縛 > keibaku\ ;
+族生 > zokusei\ ;
+談笑 > danshou\ ;
+太糸 > futoito\ ;
+始業 > shigyou\ ;
+一団 > ichidan\ ;
+記述 > kijutsu\ ;
+早熟 > soujuku\ ;
+誇色 > koshoku\ ;
+託送 > takusou\ ;
+計量 > keiryou\ ;
+統領 > touryou\ ;
+雌蘂 > meshibe\ ;
+中元 > chuugen\ ;
+順応 > jun''nou\ ;
+陸送 > rikusou\ ;
+月事 > getsuji\ ;
+親鳥 > oyadori\ ;
+給養 > kyuuyou\ ;
+特段 > tokudan\ ;
+両前 > ryoumae\ ;
+大粒 > ootsubu\ ;
+三唱 > sanshou\ ;
+上唇 > joushin\ ;
+訓迪 > kunteki\ ;
+特殊 > tokushu\ ;
+説経 > sekkyou\ ;
+境遇 > kyouguu\ ;
+日照 > nisshou\ ;
+救荒 > kyuukou\ ;
+試薬 > shiyaku\ ;
+詐術 > sajutsu\ ;
+両分 > ryoubun\ ;
+雌蕊 > meshibe\ ;
+両刀 > ryoutou\ ;
+撥音 > hatsuon\ ;
+書信 > shoshin\ ;
+時日 > jijitsu\ ;
+一喝 > ikkatsu\ ;
+不吉 > fukitsu\ ;
+緩衝 > kanshou\ ;
+上告 > joukoku\ ;
+両全 > ryouzen\ ;
+陸軍 > rikugun\ ;
+両党 > ryoutou\ ;
+一問 > ichimon\ ;
+証言 > shougen\ ;
+昇汞 > shoukou\ ;
+雨脚 > ameashi\ ;
+新盤 > shinban\ ;
+註解 > chuukai\ ;
+韻律 > inritsu\ ;
+暴圧 > bouatsu\ ;
+天竺 > tenjiku\ ;
+許諾 > kyodaku\ ;
+爆砕 > bakusai\ ;
+両像 > ryouzou\ ;
+狂態 > kyoutai\ ;
+大笑 > taishou\ ;
+婿入 > mukoiri\ ;
+訳詩 > yakushi\ ;
+昇殿 > shouden\ ;
+離脱 > ridatsu\ ;
+訳詞 > yakushi\ ;
+昇段 > shoudan\ ;
+牧民 > bokumin\ ;
+天窓 > tenmado\ ;
+一命 > ichimei\ ;
+教育 > kyouiku\ ;
+一味 > hitoaji\ ;
+失禁 > shikkin\ ;
+総評 > souhyou\ ;
+妙法 > myouhou\ ;
+給電 > kyuuden\ ;
+中仕 > nakashi\ ;
+親骨 > oyabone\ ;
+文章 > bunshou\ ;
+書中 > shochuu\ ;
+万博 > banpaku\ ;
+一名 > ichimei\ ;
+一同 > ichidou\ ;
+音律 > onritsu\ ;
+下劣 > geretsu\ ;
+難聴 > nanchou\ ;
+一号 > ichigou\ ;
+一台 > ichidai\ ;
+離職 > rishoku\ ;
+三助 > sansuke\ ;
+両便 > ryouben\ ;
+春本 > shunpon\ ;
+七十 > nanajuu\ ;
+中世 > chuusei\ ;
+覿面 > tekimen\ ;
+天福 > tenpuku\ ;
+新田 > shinden\ ;
+万力 > manriki\ ;
+新生 > shinsei\ ;
+上刻 > joukoku\ ;
+丁半 > chouhan\ ;
+大福 > daifuku\ ;
+願力 > ganriki\ ;
+天祐 > ten''yuu\ ;
+昨晩 > sakuban\ ;
+晩年 > ban''nen\ ;
+照覧 > shouran\ ;
+春暖 > shundan\ ;
+緊要 > kin''you\ ;
+一勺 > isshaku\ ;
+誓約 > seiyaku\ ;
+智将 > chishou\ ;
+妨業 > bougyou\ ;
+詩興 > shikyou\ ;
+両人 > ryounin\ ;
+観音 > kan''non\ ;
+時折 > tokiori\ ;
+牽束 > kensoku\ ;
+撰録 > senroku\ ;
+改良 > kairyou\ ;
+施物 > semotsu\ ;
+奮激 > fungeki\ ;
+両三 > ryousan\ ;
+電算 > densoro\ ;
+親類 > shinrui\ ;
+独奏 > dokusou\ ;
+結露 > ketsuro\ ;
+旧法 > kyuuhou\ ;
+教練 > kyouren\ ;
+特有 > tokuyuu\ ;
+上側 > uwagawa\ ;
+晶子 > shoushi\ ;
+縦糸 > tateito\ ;
+一冊 > issatsu\ ;
+姦悪 > kan''aku\ ;
+角錐 > kakusui\ ;
+結集 > kesshuu\ ;
+下値 > shitane\ ;
+女湯 > on''nayu\ ;
+一元 > ichigen\ ;
+羅列 > raretsu\ ;
+暖国 > dankoku\ ;
+爽涼 > souryou\ ;
+天真 > tenshin\ ;
+陳謝 > chinsha\ ;
+斑白 > hanpaku\ ;
+一億 > ichioku\ ;
+訓読 > kundoku\ ;
+丘上 > kyuujou\ ;
+爛熟 > ranjuku\ ;
+好況 > koukyou\ ;
+既決 > kiketsu\ ;
+試聴 > shichou\ ;
+明朝 > minchou\ ;
+託言 > takugen\ ;
+領域 > ryouiki\ ;
+暁天 > gyouten\ ;
+言責 > genseki\ ;
+新版 > shinpan\ ;
+親電 > shinden\ ;
+太白 > taihaku\ ;
+特旨 > tokushi\ ;
+上作 > jousaku\ ;
+天皇 > ten''nou\ ;
+上伸 > joushin\ ;
+数秒 > suubyou\ ;
+散策 > sansaku\ ;
+文相 > bunshou\ ;
+売約 > baiyaku\ ;
+三伸 > sanshin\ ;
+旧歓 > kyuukan\ ;
+大白 > taihaku\ ;
+万作 > mansaku\ ;
+明晰 > meiseki\ ;
+晩学 > bangaku\ ;
+領地 > ryouchi\ ;
+焦躁 > shousou\ ;
+明晩 > myouban\ ;
+一倍 > ichibai\ ;
+敬称 > keishou\ ;
+終電 > shuuden\ ;
+上人 > shounin\ ;
+日欧 > nichiou\ ;
+上京 > joukyou\ ;
+明星 > myoujou\ ;
+三人 > san''nin\ ;
+縦笛 > tatebue\ ;
+集群 > shuugun\ ;
+万人 > man''nin\ ;
+教範 > kyouhan\ ;
+一例 > ichirei\ ;
+大病 > taibyou\ ;
+敬神 > keishin\ ;
+特撰 > tokusen\ ;
+調琴 > choukin\ ;
+頭取 > toudori\ ;
+順境 > junkyou\ ;
+雨笠 > amagasa\ ;
+給金 > kyuukin\ ;
+詳細 > shousai\ ;
+縦穴 > tateana\ ;
+一任 > ichinin\ ;
+大男 > oootoko\ ;
+一代 > ichidai\ ;
+罰則 > bassoku\ ;
+震盪 > shintou\ ;
+霊的 > reiteki\ ;
+静注 > jouchuu\ ;
+外相 > gaishou\ ;
+多発 > tahatsu\ ;
+雨空 > amazora\ ;
+然諾 > zendaku\ ;
+詮索 > sensaku\ ;
+繋留 > keiryuu\ ;
+散票 > sanpyou\ ;
+練習 > renshuu\ ;
+評者 > hyousha\ ;
+熟練 > jukuren\ ;
+一丸 > ichigan\ ;
+外的 > gaiteki\ ;
+独善 > dokuzen\ ;
+夏着 > natsugi\ ;
+詩経 > shikyou\ ;
+特捜 > tokusou\ ;
+天球 > tenkyuu\ ;
+旧棲 > kyuusei\ ;
+妻戸 > tsumado\ ;
+教程 > kyoutei\ ;
+斑猫 > hanmyou\ ;
+晋山 > shinzan\ ;
+猟人 > ryoujin\ ;
+旋毛 > tsumuji\ ;
+報酬 > houshuu\ ;
+烈震 > resshin\ ;
+春情 > shunjou\ ;
+緬羊 > men''you\ ;
+旧栖 > kyuusei\ ;
+縟礼 > jokurei\ ;
+大獄 > taigoku\ ;
+大猟 > tairyou\ ;
+狂奔 > kyouhon\ ;
+墨色 > sumiiro\ ;
+総花 > soubana\ ;
+敦睦 > tonboku\ ;
+要領 > youryou\ ;
+独吟 > dokugin\ ;
+覆面 > fukumen\ ;
+織物 > orimono\ ;
+敬白 > keihaku\ ;
+奔流 > honryuu\ ;
+旧来 > kyuurai\ ;
+早朝 > souchou\ ;
+旧村 > kyuuson\ ;
+時局 > jikyoku\ ;
+支給 > shikyuu\ ;
+政策 > seisaku\ ;
+独占 > dokusen\ ;
+変症 > henshou\ ;
+日朝 > nitchou\ ;
+支索 > shisaku\ ;
+如月 > nigatsu\ ;
+早暁 > sougyou\ ;
+失点 > shitten\ ;
+雑穀 > zakkoku\ ;
+襟髪 > erigami\ ;
+親里 > oyazato\ ;
+照臨 > shourin\ ;
+早春 > soushun\ ;
+昨年 > sakunen\ ;
+謹慎 > kinshin\ ;
+解読 > kaidoku\ ;
+天然 > ten''nen\ ;
+新法 > shinpou\ ;
+奥様 > okusama\ ;
+独創 > dokusou\ ;
+日時 > nichiji\ ;
+緑肥 > ryokuhi\ ;
+領分 > ryoubun\ ;
+緯糸 > yokoito\ ;
+雪白 > seppaku\ ;
+特性 > tokusei\ ;
+特急 > tokkyuu\ ;
+攻究 > koukyuu\ ;
+領内 > ryounai\ ;
+附設 > fusetsu\ ;
+電球 > denkyuu\ ;
+牽強 > kenkyou\ ;
+片方 > katahou\ ;
+教皇 > kyoukou\ ;
+詞章 > shishou\ ;
+訳者 > yakusha\ ;
+特待 > tokutai\ ;
+襟首 > erikubi\ ;
+奪格 > dakkaku\ ;
+敵状 > tekijou\ ;
+撃退 > gekitai\ ;
+難癖 > nankuse\ ;
+改称 > kaishou\ ;
+妙手 > myoushu\ ;
+春嵐 > shunran\ ;
+襲雷 > shuurai\ ;
+妙所 > myousho\ ;
+親近 > shinkin\ ;
+明徴 > meichou\ ;
+明徳 > meitoku\ ;
+難症 > nanshou\ ;
+難病 > nanbyou\ ;
+無血 > muketsu\ ;
+覚醒 > kakusei\ ;
+締約 > teiyaku\ ;
+識字 > shikiji\ ;
+防諜 > bouchou\ ;
+暁光 > gyoukou\ ;
+教生 > kyousei\ ;
+昔年 > sekinen\ ;
+請求 > seikyuu\ ;
+大漁 > tairyou\ ;
+炒飯 > chaahan\ ;
+頃刻 > keikoku\ ;
+陥落 > kanraku\ ;
+誘爆 > yuubaku\ ;
+青松 > seishou\ ;
+外為 > gaitame\ ;
+証紙 > shoushi\ ;
+震災 > shinsai\ ;
+景勝 > keishou\ ;
+春寒 > shunkan\ ;
+統覚 > toukaku\ ;
+爆死 > bakushi\ ;
+網膜 > moumaku\ ;
+熟知 > jukuchi\ ;
+明年 > myounen\ ;
+天測 > tensoku\ ;
+天減 > tenbiki\ ;
+奏楽 > sougaku\ ;
+領会 > ryoukai\ ;
+調法 > chouhou\ ;
+昌平 > shouhei\ ;
+姉婿 > anemuko\ ;
+終車 > shuusha\ ;
+暑中 > shochuu\ ;
+綿羊 > men''you\ ;
+精麦 > seibaku\ ;
+熟睡 > jukusui\ ;
+縫物 > nuimono\ ;
+斯業 > shigyou\ ;
+晶光 > shoukou\ ;
+緊縛 > kinbaku\ ;
+観賞 > kanshou\ ;
+韓国 > kankoku\ ;
+難球 > nankyuu\ ;
+熟眠 > jukumin\ ;
+墨糸 > sumiito\ ;
+陰膳 > kagezen\ ;
+詩的 > shiteki\ ;
+領主 > ryoushu\ ;
+星学 > seigaku\ ;
+天津 > tenshin\ ;
+青春 > seishun\ ;
+暇人 > himajin\ ;
+観象 > kanshou\ ;
+音力 > onryoku\ ;
+為銀 > tamegin\ ;
+訓育 > kun''iku\ ;
+奥方 > okugata\ ;
+狩人 > karyudo\ ;
+累進 > ruishin\ ;
+天泣 > tenkyuu\ ;
+奮撃 > fungeki\ ;
+焼芋 > yakiimo\ ;
+旧懐 > kyuukai\ ;
+陪臣 > baishin\ ;
+牧師 > bokushi\ ;
+新案 > shin''an\ ;
+震源 > shingen\ ;
+旧慣 > kyuukan\ ;
+階級 > kaikyuu\ ;
+旧態 > kyuutai\ ;
+特定 > tokutei\ ;
+昨夕 > sakuyuu\ ;
+隻眼 > sekigan\ ;
+燃焼 > nenshou\ ;
+新来 > shinrai\ ;
+易学 > ekigaku\ ;
+増給 > zoukyuu\ ;
+旧悪 > kyuuaku\ ;
+数滴 > suuteki\ ;
+綾絹 > ayaginu\ ;
+索道 > sakudou\ ;
+妻妾 > saishou\ ;
+旧恨 > kyuukon\ ;
+早急 > soukyuu\ ;
+結語 > ketsugo\ ;
+新書 > shinsho\ ;
+純量 > junryou\ ;
+女手 > on''nade\ ;
+熱狂 > nekkyou\ ;
+女房 > nyoubou\ ;
+外海 > sotoumi\ ;
+大正 > taishou\ ;
+失権 > shikken\ ;
+大欲 > taiyoku\ ;
+結託 > kettaku\ ;
+外注 > gaichuu\ ;
+防虫 > bouchuu\ ;
+外泊 > gaihaku\ ;
+新星 > shinsei\ ;
+覆輪 > fukurin\ ;
+整流 > seiryuu\ ;
+頂上 > choujou\ ;
+熱燗 > atsukan\ ;
+日当 > hiatari\ ;
+糠雨 > nukaame\ ;
+総称 > soushou\ ;
+旧弊 > kyuuhei\ ;
+火食 > kashoku\ ;
+特大 > tokudai\ ;
+親許 > oyamoto\ ;
+春坊 > harubou\ ;
+詫状 > wabijou\ ;
+電流 > denryuu\ ;
+警告 > keikoku\ ;
+特売 > tokubai\ ;
+新政 > shinsei\ ;
+斬新 > zanshin\ ;
+犯則 > hansoku\ ;
+障碍 > shougai\ ;
+無色 > mushoku\ ;
+外殻 > gaikaku\ ;
+雌犬 > mesuinu\ ;
+天業 > tengyou\ ;
+論敵 > ronteki\ ;
+雀球 > jankyuu\ ;
+文様 > mon''you\ ;
+大業 > taigyou\ ;
+旧師 > kyuushi\ ;
+旅所 > tabisho\ ;
+糸鋸 > itonoko\ ;
+新撰 > shinsen\ ;
+観衆 > kanshuu\ ;
+放牧 > houboku\ ;
+特報 > tokuhou\ ;
+文楽 > bunraku\ ;
+無腰 > mugoshi\ ;
+親裁 > shinsai\ ;
+面影 > omokage\ ;
+煙突 > entotsu\ ;
+墓穴 > boketsu\ ;
+狂人 > kyoujin\ ;
+調書 > chousho\ ;
+昇天 > shouten\ ;
+親衛 > shin''ei\ ;
+狂乱 > kyouran\ ;
+革帯 > kawaobi\ ;
+天柱 > tenchuu\ ;
+旅愁 > ryoshuu\ ;
+解脱 > gedatsu\ ;
+昼前 > hirumae\ ;
+続編 > zokuhen\ ;
+熱演 > netsuen\ ;
+雪洞 > bonbori\ ;
+無職 > mushoku\ ;
+総督 > soutoku\ ;
+間隙 > kangeki\ ;
+視診 > shishin\ ;
+間隔 > kankaku\ ;
+靴屋 > kutsuya\ ;
+堅調 > kenchou\ ;
+斎服 > saifuku\ ;
+旧居 > kyuukyo\ ;
+緩球 > kankyuu\ ;
+継続 > keizoku\ ;
+天朝 > tenchou\ ;
+視角 > shikaku\ ;
+旧封 > kyuuhou\ ;
+誤植 > goshoku\ ;
+陋習 > roushuu\ ;
+大木 > taiboku\ ;
+城郭 > joukaku\ ;
+救済 > kyuusai\ ;
+視覚 > shikaku\ ;
+総皮 > sougawa\ ;
+陸稲 > rikutou\ ;
+教法 > kyouhou\ ;
+調整 > chousei\ ;
+旧官 > kyuukan\ ;
+失敬 > shikkei\ ;
+開陳 > kaichin\ ;
+失敗 > shippai\ ;
+好尚 > koushou\ ;
+奇抜 > kibatsu\ ;
+失政 > shissei\ ;
+討究 > toukyuu\ ;
+霊柩 > reikyuu\ ;
+読本 > dokuhon\ ;
+防臭 > boushuu\ ;
+読書 > dokusho\ ;
+犯人 > han''nin\ ;
+奥庭 > okuniwa\ ;
+説服 > seppuku\ ;
+妊娠 > ninshin\ ;
+奥底 > okuzoko\ ;
+牧地 > bokuchi\ ;
+敦樸 > tonboku\ ;
+好学 > kougaku\ ;
+編物 > amimono\ ;
+続篇 > zokuhen\ ;
+天敵 > tenteki\ ;
+経蔵 > kyouzou\ ;
+霊木 > reiboku\ ;
+夜曲 > yakyoku\ ;
+総画 > soukaku\ ;
+大敵 > taiteki\ ;
+特命 > tokumei\ ;
+陣笠 > jingasa\ ;
+隆盛 > ryuusei\ ;
+評点 > hyouten\ ;
+新患 > shinkan\ ;
+救民 > kyuumin\ ;
+要訳 > youyaku\ ;
+旧姓 > kyuusei\ ;
+降給 > koukyuu\ ;
+旧妻 > kyuusai\ ;
+文教 > bunkyou\ ;
+面容 > men''you\ ;
+変梃 > henteko\ ;
+米麦 > beibaku\ ;
+細螺 > kishago\ ;
+熱気 > netsuke\ ;
+昨冬 > sakutou\ ;
+春分 > shunbun\ ;
+観菊 > kangiku\ ;
+旧好 > kyuukou\ ;
+電柱 > denchuu\ ;
+開鑿 > kaisaku\ ;
+長雨 > nagaame\ ;
+変格 > henkaku\ ;
+旧套 > kyuutou\ ;
+語末 > gomatsu\ ;
+糧道 > ryoudou\ ;
+襟足 > eriashi\ ;
+謹告 > kinkoku\ ;
+説教 > sekkyou\ ;
+摘要 > tekiyou\ ;
+證券 > shouken\ ;
+教権 > kyouken\ ;
+旦夕 > tanseki\ ;
+断念 > dan''nen\ ;
+日夜 > nichiya\ ;
+城跡 > jouseki\ ;
+日夕 > nisseki\ ;
+春光 > shunkou\ ;
+放流 > houryuu\ ;
+震旦 > shintan\ ;
+奥山 > okuyama\ ;
+旧墟 > kyuukyo\ ;
+静寂 > seijaku\ ;
+解約 > kaiyaku\ ;
+失投 > shittou\ ;
+綱目 > koumoku\ ;
+火鉢 > hibachi\ ;
+絶縁 > zetsuen\ ;
+夕方 > yuugata\ ;
+執行 > shikkou\ ;
+粗食 > soshoku\ ;
+敬服 > keifuku\ ;
+外敵 > gaiteki\ ;
+故殺 > kosatsu\ ;
+要衝 > youshou\ ;
+妄執 > moushuu\ ;
+境目 > sakaime\ ;
+夏日 > kajitsu\ ;
+震撼 > shinkan\ ;
+敦朴 > tonboku\ ;
+声楽 > seigaku\ ;
+旧型 > kyuukei\ ;
+旅客 > ryokaku\ ;
+面妖 > men''you\ ;
+昭代 > shoudai\ ;
+無筆 > muhitsu\ ;
+特写 > tokusha\ ;
+失態 > shittai\ ;
+旧址 > kyuushi\ ;
+結腸 > ketchou\ ;
+旧地 > kyuuchi\ ;
+特典 > tokuten\ ;
+堪能 > tan''nou\ ;
+製革 > seikaku\ ;
+失意 > shitsui\ ;
+爆弾 > bakudan\ ;
+特免 > tokumen\ ;
+支流 > shiryuu\ ;
+揚陸 > youriku\ ;
+親船 > oyabune\ ;
+陸産 > rikusan\ ;
+陸生 > rikusei\ ;
+面壁 > menpeki\ ;
+探鳥 > tanchou\ ;
+親臨 > shinrin\ ;
+約言 > yakugen\ ;
+境界 > kyoukai\ ;
+教条 > kyoujou\ ;
+粗雑 > sozatsu\ ;
+教材 > kyouzai\ ;
+教本 > kyouhon\ ;
+電撃 > dengeki\ ;
+教書 > kyousho\ ;
+降神 > koushin\ ;
+間近 > madjika\ ;
+新居 > shinkyo\ ;
+紺色 > kon''iro\ ;
+継目 > tsugime\ ;
+雷撃 > raigeki\ ;
+塾生 > jukusei\ ;
+調弦 > chougen\ ;
+失当 > shittou\ ;
+燃料 > nenryou\ ;
+計画 > keikaku\ ;
+特例 > tokurei\ ;
+隠滅 > inmetsu\ ;
+特使 > tokushi\ ;
+大息 > taisoku\ ;
+集権 > shuuken\ ;
+開通 > kaitsuu\ ;
+陣痛 > jintsuu\ ;
+外戚 > gaiseki\ ;
+天心 > tenshin\ ;
+組職 > soshoku\ ;
+網猟 > amiryou\ ;
+斯学 > shigaku\ ;
+敵手 > tekishu\ ;
+売春 > baishun\ ;
+大徳 > daitoku\ ;
+離日 > rinichi\ ;
+精進 > shoujin\ ;
+大役 > taiyaku\ ;
+精通 > seitsuu\ ;
+煉獄 > rengoku\ ;
+親署 > shinsho\ ;
+諸国 > shokoku\ ;
+旧名 > kyuumei\ ;
+牛刀 > gyuutou\ ;
+難敵 > nanteki\ ;
+旧号 > kyuugou\ ;
+瀝青 > rekisei\ ;
+大弓 > daikyuu\ ;
+旧友 > kyuuyuu\ ;
+結縁 > kechien\ ;
+袞龍 > konryou\ ;
+新婚 > shinkon\ ;
+文弱 > bunjaku\ ;
+日収 > nisshuu\ ;
+雑木 > zouboku\ ;
+説得 > settoku\ ;
+靖国 > seikoku\ ;
+明亮 > meiryou\ ;
+天幕 > tenmaku\ ;
+士族 > shizoku\ ;
+熟柿 > jukushi\ ;
+閲覧 > etsuran\ ;
+革命 > kakumei\ ;
+織布 > shokufu\ ;
+日印 > nichiin\ ;
+繊弱 > senjaku\ ;
+細腕 > hosoude\ ;
+織工 > shokkou\ ;
+照準 > shoujun\ ;
+零戦 > zerosen\ ;
+敵情 > tekijou\ ;
+昇任 > shounin\ ;
+覚者 > kakusha\ ;
+視聴 > shichou\ ;
+組織 > soshiki\ ;
+長逝 > chousei\ ;
+附着 > fuchaku\ ;
+謬伝 > byuuden\ ;
+外心 > gaishin\ ;
+敵性 > tekisei\ ;
+誠忠 > seichuu\ ;
+誘惑 > yuuwaku\ ;
+牧人 > bokujin\ ;
+旧制 > kyuusei\ ;
+経糸 > tateito\ ;
+長辺 > chouhen\ ;
+誠心 > seishin\ ;
+霊廟 > reibyou\ ;
+詮方 > senkata\ ;
+旧刊 > kyuukan\ ;
+旭光 > kyokkou\ ;
+失対 > shittai\ ;
+片前 > katamae\ ;
+諜報 > chouhou\ ;
+墨池 > bokuchi\ ;
+垂迹 > suijaku\ ;
+整復 > seifuku\ ;
+旧冬 > kyuutou\ ;
+支柱 > shichuu\ ;
+墨汁 > bokujuu\ ;
+改暦 > kaireki\ ;
+新報 > shinpou\ ;
+外廓 > gaikaku\ ;
+阪神 > hanshin\ ;
+調子 > choushi\ ;
+旧典 > kyuuten\ ;
+敵弾 > tekidan\ ;
+門跡 > monzeki\ ;
+粗金 > aragane\ ;
+政敵 > seiteki\ ;
+親米 > shinbei\ ;
+敏捷 > binshou\ ;
+版元 > hanmoto\ ;
+政教 > seikyou\ ;
+試料 > shiryou\ ;
+襁褓 > mutsuki\ ;
+純良 > junryou\ ;
+変心 > henshin\ ;
+教戒 > kyoukai\ ;
+大小 > daishou\ ;
+大将 > daishou\ ;
+旧債 > kyuusai\ ;
+間諜 > kanchou\ ;
+見習 > minarai\ ;
+改新 > kaishin\ ;
+新地 > shinchi\ ;
+繋属 > keizoku\ ;
+放擲 > houteki\ ;
+敷布 > shikifu\ ;
+集散 > shuusan\ ;
+採集 > saishuu\ ;
+牛丼 > gyuudon\ ;
+角盆 > kakubon\ ;
+爽凉 > souryou\ ;
+詔書 > shousho\ ;
+大学 > daigaku\ ;
+親等 > shintou\ ;
+壁板 > kabeita\ ;
+妄信 > moushin\ ;
+文学 > bungaku\ ;
+攻撃 > kougeki\ ;
+緑樹 > ryokuju\ ;
+爪印 > tsumein\ ;
+旧例 > kyuurei\ ;
+支族 > shizoku\ ;
+糞蝿 > kusobae\ ;
+墜死 > tsuishi\ ;
+奨励 > shourei\ ;
+織姫 > orihime\ ;
+調声 > chousei\ ;
+褒賞 > houshou\ ;
+紅色 > beniiro\ ;
+陸海 > rikukai\ ;
+終端 > shuutan\ ;
+日伯 > nippaku\ ;
+旋削 > sensaku\ ;
+角番 > kadoban\ ;
+精読 > seidoku\ ;
+織女 > shokujo\ ;
+旧交 > kyuukou\ ;
+日付 > hidzuke\ ;
+熱愛 > netsuai\ ;
+境涯 > kyougai\ ;
+霜夜 > shimoyo\ ;
+焦燥 > shousou\ ;
+女傑 > joketsu\ ;
+天女 > ten''nyo\ ;
+角瓶 > kakubin\ ;
+紡績 > bouseki\ ;
+詩抄 > shishou\ ;
+旧主 > kyuushu\ ;
+大女 > ooon''na\ ;
+敵対 > tekitai\ ;
+計測 > keisoku\ ;
+新品 > shinpin\ ;
+奉唱 > houshou\ ;
+親祭 > shinsai\ ;
+料地 > ryouchi\ ;
+無熱 > munetsu\ ;
+結石 > kesseki\ ;
+長講 > choukou\ ;
+総桐 > sougiri\ ;
+焦点 > shouten\ ;
+熟成 > jukusei\ ;
+証書 > shousho\ ;
+論告 > ronkoku\ ;
+熱心 > nesshin\ ;
+解熱 > genetsu\ ;
+奉告 > houkoku\ ;
+失地 > shitchi\ ;
+新参 > shinzan\ ;
+集成 > shuusei\ ;
+数学 > suugaku\ ;
+教師 > kyoushi\ ;
+撃砕 > gekisai\ ;
+読売 > yomiuri\ ;
+掘鑿 > kussaku\ ;
+雹害 > hyougai\ ;
+総柄 > sougara\ ;
+霊妙 > reimyou\ ;
+変容 > hen''you\ ;
+旅僧 > tabisou\ ;
+裸足 > hadashi\ ;
+論及 > ronkyuu\ ;
+採録 > sairoku\ ;
+熟慮 > jukuryo\ ;
+要約 > youyaku\ ;
+炎色 > enshoku\ ;
+熱延 > netsuen\ ;
+訳本 > yakuhon\ ;
+証明 > shoumei\ ;
+墨書 > bokusho\ ;
+紛糾 > funkyuu\ ;
+訳書 > yakusho\ ;
+推量 > suiryou\ ;
+撞球 > doukyuu\ ;
+夙夜 > shukuya\ ;
+熱度 > netsudo\ ;
+震央 > shin''ou\ ;
+堆積 > taiseki\ ;
+累積 > ruiseki\ ;
+隻手 > sekishu\ ;
+天国 > tengoku\ ;
+裏釘 > urakugi\ ;
+裏金 > uragane\ ;
+攪拌 > kakuhan\ ;
+焙烙 > houroku\ ;
+陸橋 > rikkyou\ ;
+認容 > nin''you\ ;
+証文 > shoumon\ ;
+診断 > shindan\ ;
+大国 > taikoku\ ;
+陰欝 > in''utsu\ ;
+註文 > chuumon\ ;
+紺碧 > konpeki\ ;
+新制 > shinsei\ ;
+改悛 > kaishun\ ;
+詩心 > shishin\ ;
+絶無 > zetsumu\ ;
+外壁 > gaiheki\ ;
+熟思 > jukushi\ ;
+新刊 > shinkan\ ;
+新刀 > shintou\ ;
+霄壌 > shoujou\ ;
+放心 > houshin\ ;
+猩々 > shoujou\ ;
+塞源 > sokugen\ ;
+大嘴 > oohashi\ ;
+終盤 > shuuban\ ;
+納経 > noukyou\ ;
+教導 > kyoudou\ ;
+新兵 > shinpei\ ;
+焼死 > shoushi\ ;
+訳文 > yakubun\ ;
+新党 > shintou\ ;
+改心 > kaishin\ ;
+照星 > shousei\ ;
+掛金 > kakekin\ ;
+敗将 > haishou\ ;
+推進 > suishin\ ;
+照明 > shoumei\ ;
+雄心 > yuushin\ ;
+陸棲 > rikusei\ ;
+複視 > fukushi\ ;
+精虫 > seichuu\ ;
+敵塁 > tekirui\ ;
+網棚 > amidana\ ;
+陸棚 > rikuhou\ ;
+教官 > kyoukan\ ;
+国風 > kokufuu\ ;
+隆替 > ryuutai\ ;
+線描 > senbyou\ ;
+見神 > kenshin\ ;
+裁量 > sairyou\ ;
+調合 > chougou\ ;
+政庁 > seichou\ ;
+調号 > chougou\ ;
+陰極 > inkyoku\ ;
+夏場 > natsuba\ ;
+紅組 > akagumi\ ;
+角灯 > kakutou\ ;
+複製 > fukusei\ ;
+外圧 > gaiatsu\ ;
+斉唱 > seishou\ ;
+熟年 > jukunen\ ;
+結球 > kekkyuu\ ;
+堆石 > taiseki\ ;
+外国 > gaikoku\ ;
+接辞 > setsuji\ ;
+精薄 > seihaku\ ;
+敵地 > tekichi\ ;
+捕食 > hoshoku\ ;
+敵国 > tekkoku\ ;
+終生 > shuusei\ ;
+解消 > kaishou\ ;
+変域 > hen''iki\ ;
+陽暦 > youreki\ ;
+大名 > daimyou\ ;
+失効 > shikkou\ ;
+新体 > shintai\ ;
+国電 > kokuden\ ;
+大口 > ooguchi\ ;
+掘進 > kusshin\ ;
+調剤 > chouzai\ ;
+陸曹 > rikusou\ ;
+国難 > kokunan\ ;
+緩急 > kankyuu\ ;
+支度 > shitaku\ ;
+陽春 > youshun\ ;
+国際 > kokusai\ ;
+大厄 > taiyaku\ ;
+紋章 > monshou\ ;
+支庁 > shichou\ ;
+地道 > jimichi\ ;
+親玉 > oyadama\ ;
+新人 > shinjin\ ;
+故実 > kojitsu\ ;
+外商 > gaishou\ ;
+国防 > kokubou\ ;
+放尿 > hounyou\ ;
+解氷 > kaihyou\ ;
+文博 > bunhaku\ ;
+擯斥 > hinseki\ ;
+大勝 > taishou\ ;
+教壇 > kyoudan\ ;
+縮図 > shukuzu\ ;
+間膜 > kanmaku\ ;
+大力 > dairiki\ ;
+操業 > sougyou\ ;
+天則 > tensoku\ ;
+推賞 > suishou\ ;
+無欠 > muketsu\ ;
+詩学 > shigaku\ ;
+激闘 > gekitou\ ;
+観照 > kanshou\ ;
+外周 > gaishuu\ ;
+間脳 > kan''nou\ ;
+教場 > kyoujou\ ;
+困難 > kon''nan\ ;
+縦坑 > tatekou\ ;
+給源 > kyuugen\ ;
+露仏 > rofutsu\ ;
+誡告 > kaikoku\ ;
+給湯 > kyuutou\ ;
+地軸 > chijiku\ ;
+為着 > shikise\ ;
+大凶 > daikyou\ ;
+要目 > youmoku\ ;
+攻学 > kougaku\ ;
+組版 > kumihan\ ;
+調停 > choutei\ ;
+改宗 > kaishuu\ ;
+織元 > orimoto\ ;
+襟章 > erishou\ ;
+開腹 > kaifuku\ ;
+雛壇 > hinadan\ ;
+大兵 > daihyou\ ;
+燭光 > shokkou\ ;
+表題 > hyoudai\ ;
+震動 > shindou\ ;
+教団 > kyoudan\ ;
+純真 > junshin\ ;
+隷属 > reizoku\ ;
+斜交 > hasukai\ ;
+繁劇 > hangeki\ ;
+煩悩 > bon''nou\ ;
+製薬 > seiyaku\ ;
+売国 > baikoku\ ;
+失体 > shittai\ ;
+純益 > jun''eki\ ;
+料亭 > ryoutei\ ;
+親炙 > shinsha\ ;
+複葉 > fukuyou\ ;
+詳報 > shouhou\ ;
+緞帳 > donchou\ ;
+敵勢 > tekizei\ ;
+表面 > hyoumen\ ;
+長芋 > nagaimo\ ;
+隣席 > rinseki\ ;
+純白 > junpaku\ ;
+評定 > hyoutei\ ;
+防毒 > boudoku\ ;
+数匹 > suuhiki\ ;
+夕刻 > yuukoku\ ;
+電卓 > dentaku\ ;
+終点 > shuuten\ ;
+緊急 > kinkyuu\ ;
+降格 > koukaku\ ;
+給水 > kyuusui\ ;
+精肉 > seiniku\ ;
+敵前 > tekizen\ ;
+夕凪 > yuunagi\ ;
+塞栓 > sokusen\ ;
+繚乱 > ryouran\ ;
+天佑 > ten''yuu\ ;
+詩境 > shikyou\ ;
+縄墨 > jouboku\ ;
+大作 > taisaku\ ;
+親潮 > oyashio\ ;
+団長 > danchou\ ;
+闘病 > toubyou\ ;
+補血 > hoketsu\ ;
+観測 > kansoku\ ;
+煮干 > niboshi\ ;
+四阿 > azumaya\ ;
+綱手 > tsunade\ ;
+陸戦 > rikusen\ ;
+天人 > ten''nin\ ;
+灌腸 > kanchou\ ;
+緊張 > kinchou\ ;
+集塵 > shuujin\ ;
+隔年 > kakunen\ ;
+降服 > koufuku\ ;
+外傷 > gaishou\ ;
+変則 > hensoku\ ;
+集塊 > shuukai\ ;
+無札 > musatsu\ ;
+紅白 > kouhaku\ ;
+解析 > kaiseki\ ;
+無月 > mugetsu\ ;
+増徴 > zouchou\ ;
+襲用 > shuuyou\ ;
+説伏 > seppuku\ ;
+熱唱 > nesshou\ ;
+斉一 > seiitsu\ ;
+外信 > gaishin\ ;
+文中 > bunchuu\ ;
+増強 > zoukyou\ ;
+険悪 > ken''aku\ ;
+長考 > choukou\ ;
+長老 > chourou\ ;
+行頭 > gyoutou\ ;
+線審 > senshin\ ;
+西独 > seidoku\ ;
+救命 > kyuumei\ ;
+隠密 > onmitsu\ ;
+閨秀 > keishuu\ ;
+霍乱 > kakuran\ ;
+国道 > kokudou\ ;
+結氷 > keppyou\ ;
+集団 > shuudan\ ;
+国連 > kokuren\ ;
+陳情 > chinjou\ ;
+火箸 > hibashi\ ;
+売卜 > baiboku\ ;
+敗北 > haiboku\ ;
+障害 > shougai\ ;
+増幅 > zoufuku\ ;
+擲弾 > tekidan\ ;
+潮騒 > shiosai\ ;
+索然 > sakuzen\ ;
+焼成 > shousei\ ;
+電信 > denshin\ ;
+続投 > zokutou\ ;
+濫読 > randoku\ ;
+継承 > keishou\ ;
+綾布 > ayanuno\ ;
+粘膜 > nenmaku\ ;
+摂理 > setsuri\ ;
+雪冤 > setsuen\ ;
+政商 > seishou\ ;
+墨守 > bokushu\ ;
+粉茶 > konacha\ ;
+角材 > kakuzai\ ;
+経歴 > keireki\ ;
+離別 > ribetsu\ ;
+闘牛 > tougyuu\ ;
+照射 > shousha\ ;
+摩滅 > mametsu\ ;
+国軍 > kokugun\ ;
+塗擦 > tosatsu\ ;
+濫觴 > ranshou\ ;
+長編 > chouhen\ ;
+教典 > kyouten\ ;
+地表 > chihyou\ ;
+該博 > gaihaku\ ;
+推薬 > suiyaku\ ;
+陳弁 > chinben\ ;
+糸瓜 > hechima\ ;
+炬燵 > kotatsu\ ;
+行間 > gyoukan\ ;
+雨傘 > amagasa\ ;
+開立 > kairyuu\ ;
+終止 > shuushi\ ;
+撞木 > shumoku\ ;
+雑務 > zatsumu\ ;
+細流 > sairyuu\ ;
+討幕 > toubaku\ ;
+集合 > shuugou\ ;
+捨象 > shashou\ ;
+炮烙 > houroku\ ;
+地蜂 > jibachi\ ;
+険峻 > kenshun\ ;
+親権 > shinken\ ;
+街録 > gairoku\ ;
+複線 > fukusen\ ;
+雑則 > zassoku\ ;
+装薬 > souyaku\ ;
+国賓 > kokuhin\ ;
+点滴 > tenteki\ ;
+陸岸 > rikugan\ ;
+塗抹 > tomatsu\ ;
+詩劇 > shigeki\ ;
+開票 > kaihyou\ ;
+撹拌 > kakuhan\ ;
+陽射 > hizashi\ ;
+熱傷 > nesshou\ ;
+関白 > kanpaku\ ;
+補色 > hoshoku\ ;
+焦慮 > shouryo\ ;
+陪席 > baiseki\ ;
+結核 > kekkaku\ ;
+振鈴 > shinrei\ ;
+教会 > kyoukai\ ;
+雑兵 > zouhyou\ ;
+隣国 > ringoku\ ;
+絃楽 > gengaku\ ;
+雀卓 > jantaku\ ;
+陸封 > rikufuu\ ;
+雪中 > setchuu\ ;
+墨堤 > bokutei\ ;
+託宣 > takusen\ ;
+精神 > seishin\ ;
+損益 > son''eki\ ;
+陣幕 > jinmaku\ ;
+灰皿 > haizara\ ;
+粗縄 > aranawa\ ;
+挌闘 > kakutou\ ;
+挺進 > teishin\ ;
+糸爪 > hechima\ ;
+褒章 > houshou\ ;
+結束 > kessoku\ ;
+灰白 > kaihaku\ ;
+教主 > kyoushu\ ;
+触感 > shokkan\ ;
+招魂 > shoukon\ ;
+親株 > oyakabu\ ;
+精確 > seikaku\ ;
+国論 > kokuron\ ;
+緑土 > ryokudo\ ;
+集光 > shuukou\ ;
+結晶 > kesshou\ ;
+補職 > hoshoku\ ;
+激論 > gekiron\ ;
+詳伝 > shouden\ ;
+紅潮 > kouchou\ ;
+救世 > kyuusei\ ;
+要求 > youkyuu\ ;
+陪審 > baishin\ ;
+挺身 > teishin\ ;
+熱中 > netchuu\ ;
+親書 > shinsho\ ;
+裏腹 > urahara\ ;
+評判 > hyouban\ ;
+納涼 > nouryou\ ;
+図説 > zusetsu\ ;
+詩作 > shisaku\ ;
+間男 > maotoko\ ;
+摺本 > shouhon\ ;
+雑事 > zatsuji\ ;
+改修 > kaishuu\ ;
+雌伏 > shifuku\ ;
+経文 > kyoumon\ ;
+絶息 > zessoku\ ;
+陣容 > jin''you\ ;
+試作 > shisaku\ ;
+陸大 > rikudai\ ;
+褥瘡 > jokusou\ ;
+粗筋 > arasuji\ ;
+精白 > seihaku\ ;
+行進 > koushin\ ;
+長短 > choutan\ ;
+掣肘 > seichuu\ ;
+親方 > oyakata\ ;
+改作 > kaisaku\ ;
+設営 > setsuei\ ;
+集会 > shuukai\ ;
+執権 > shikken\ ;
+絵心 > egokoro\ ;
+拝領 > hairyou\ ;
+絶後 > zetsugo\ ;
+親政 > shinsei\ ;
+管領 > kanryou\ ;
+粘稠 > nenchuu\ ;
+撮影 > satsuei\ ;
+塩害 > shiogai\ ;
+補綴 > hotetsu\ ;
+篤農 > tokunou\ ;
+揮発 > kihatsu\ ;
+訳名 > yakumei\ ;
+烏木 > kokutan\ ;
+隊商 > taishou\ ;
+堆朱 > tsuishu\ ;
+陸地 > rikuchi\ ;
+境域 > kyouiki\ ;
+指針 > shishin\ ;
+回読 > kaidoku\ ;
+照合 > shougou\ ;
+証券 > shouken\ ;
+評伝 > hyouden\ ;
+灸点 > kyuuten\ ;
+型番 > kataban\ ;
+焼売 > shuumai\ ;
+回診 > kaishin\ ;
+複眼 > fukugan\ ;
+詔令 > shourei\ ;
+境地 > kyouchi\ ;
+編修 > henshuu\ ;
+統幕 > toubaku\ ;
+火燵 > kotatsu\ ;
+播州 > banshuu\ ;
+無宿 > mushuku\ ;
+角帽 > kakubou\ ;
+火熱 > kanetsu\ ;
+長男 > chounan\ ;
+親指 > oyayubi\ ;
+角帯 > kakuobi\ ;
+無実 > mujitsu\ ;
+長生 > chousei\ ;
+索条 > sakujou\ ;
+表解 > hyoukai\ ;
+総則 > sousoku\ ;
+四角 > shikaku\ ;
+紋様 > mon''you\ ;
+増収 > zoushuu\ ;
+行賞 > koushou\ ;
+管長 > kanchou\ ;
+綾取 > ayatori\ ;
+続報 > zokuhou\ ;
+探索 > tansaku\ ;
+血路 > ketsuro\ ;
+報徳 > houtoku\ ;
+摩擦 > masatsu\ ;
+報復 > houfuku\ ;
+提督 > teitoku\ ;
+見料 > kenryou\ ;
+表装 > hyousou\ ;
+終戦 > shuusen\ ;
+国葬 > kokusou\ ;
+西暦 > seireki\ ;
+籠絡 > rouraku\ ;
+粗皮 > arakawa\ ;
+炭柱 > tanchuu\ ;
+堪忍 > kan''nin\ ;
+親愛 > shin''ai\ ;
+術語 > jutsugo\ ;
+観念 > kan''nen\ ;
+純朴 > junboku\ ;
+訓告 > kunkoku\ ;
+西日 > nishibi\ ;
+襲来 > shuurai\ ;
+米穀 > beikoku\ ;
+節迫 > seppaku\ ;
+執政 > shissei\ ;
+擁壁 > youheki\ ;
+設備 > setsubi\ ;
+血豆 > chimame\ ;
+証人 > shounin\ ;
+圧縮 > asshuku\ ;
+掌編 > shouhen\ ;
+緒作 > shosaku\ ;
+塁審 > ruishin\ ;
+墳丘 > funkyuu\ ;
+粗略 > soryaku\ ;
+級数 > kyuusuu\ ;
+紋服 > monpuku\ ;
+裕福 > yuufuku\ ;
+掛算 > kakezan\ ;
+衆論 > shuuron\ ;
+回虫 > kaichuu\ ;
+推称 > suishou\ ;
+絵姿 > esugata\ ;
+要撃 > yougeki\ ;
+地籍 > chiseki\ ;
+探究 > tankyuu\ ;
+掌紋 > shoumon\ ;
+粒界 > ryuukai\ ;
+捧腹 > houfuku\ ;
+損流 > sonryuu\ ;
+漆食 > shikkui\ ;
+照会 > shoukai\ ;
+挙証 > kyoshou\ ;
+点描 > tenbyou\ ;
+在籍 > zaiseki\ ;
+拓銀 > takugin\ ;
+絶壁 > zeppeki\ ;
+隔世 > kakusei\ ;
+陸兵 > rikuhei\ ;
+綱具 > tsunagu\ ;
+粗玉 > aratama\ ;
+網元 > amimoto\ ;
+言及 > genkyuu\ ;
+糸枠 > itowaku\ ;
+除却 > jokyaku\ ;
+漫録 > manroku\ ;
+随一 > zuiichi\ ;
+糸杉 > itosugi\ ;
+灰殻 > haigara\ ;
+訪中 > houchuu\ ;
+摂政 > sesshou\ ;
+塩味 > shioaji\ ;
+地積 > chiseki\ ;
+結尾 > ketsubi\ ;
+約数 > yakusuu\ ;
+防壁 > bouheki\ ;
+糾明 > kyuumei\ ;
+塁壁 > ruiheki\ ;
+結審 > kesshin\ ;
+細心 > saishin\ ;
+採石 > saiseki\ ;
+堅忍 > ken''nin\ ;
+粒状 > ryuujou\ ;
+拙速 > sessoku\ ;
+潮解 > choukai\ ;
+撮土 > satsudo\ ;
+漸進 > zenshin\ ;
+親展 > shinten\ ;
+規律 > kiritsu\ ;
+持説 > jisetsu\ ;
+視床 > shishou\ ;
+角地 > kadochi\ ;
+経学 > keigaku\ ;
+粋狂 > suikyou\ ;
+裏白 > urajiro\ ;
+塵入 > gomiire\ ;
+報奨 > houshou\ ;
+細帯 > hosoobi\ ;
+親子 > shinshi\ ;
+無口 > mukuchi\ ;
+執念 > shuunen\ ;
+陸上 > rikujou\ ;
+漫遊 > man''yuu\ ;
+絶唱 > zesshou\ ;
+回腸 > kaichou\ ;
+長江 > choukou\ ;
+地目 > chimoku\ ;
+拍車 > hakusha\ ;
+無力 > muryoku\ ;
+抽選 > chuusen\ ;
+捜索 > sousaku\ ;
+開業 > kaigyou\ ;
+絶叫 > zekkyou\ ;
+国粋 > kokusui\ ;
+掛留 > keiryuu\ ;
+親好 > shinkou\ ;
+閉業 > heigyou\ ;
+報国 > houkoku\ ;
+米独 > beidoku\ ;
+振舞 > furumai\ ;
+箴言 > shingen\ ;
+終始 > shuushi\ ;
+長歎 > choutan\ ;
+長歌 > nagauta\ ;
+振興 > shinkou\ ;
+視学 > shigaku\ ;
+陞任 > shounin\ ;
+紙幅 > shifuku\ ;
+紙帳 > shichou\ ;
+経堂 > kyoudou\ ;
+陣中 > jinchuu\ ;
+納得 > nattoku\ ;
+絶勝 > zesshou\ ;
+粘液 > nen''eki\ ;
+土着 > dochaku\ ;
+国等 > kokutou\ ;
+堂守 > doumori\ ;
+拝謁 > haietsu\ ;
+撤収 > tesshuu\ ;
+籠球 > roukyuu\ ;
+灯明 > toumyou\ ;
+拝読 > haidoku\ ;
+蟶貝 > mategai\ ;
+等閑 > naozari\ ;
+招請 > shousei\ ;
+鏤骨 > rukotsu\ ;
+見学 > kengaku\ ;
+投錨 > toubyou\ ;
+経国 > keikoku\ ;
+在留 > zairyuu\ ;
+損料 > sonryou\ ;
+紐帯 > chuutai\ ;
+鏡高 > kyoukou\ ;
+圭璧 > keiheki\ ;
+描法 > byouhou\ ;
+製氷 > seihyou\ ;
+地球 > chikyuu\ ;
+鑑賞 > kanshou\ ;
+国税 > kokuzei\ ;
+濫用 > ran''you\ ;
+紀律 > kiritsu\ ;
+門柱 > monchuu\ ;
+降伏 > koufuku\ ;
+報告 > houkoku\ ;
+紳士 > shinshi\ ;
+糾弾 > kyuudan\ ;
+衒耀 > gen''you\ ;
+困窮 > konkyuu\ ;
+表紙 > hyoushi\ ;
+烈女 > retsujo\ ;
+防共 > boukyou\ ;
+撰修 > senshuu\ ;
+闘将 > toushou\ ;
+親善 > shinzen\ ;
+濫獲 > rankaku\ ;
+漫読 > mandoku\ ;
+関所 > sekisho\ ;
+瀟洒 > shousha\ ;
+城廓 > joukaku\ ;
+糸底 > itozoko\ ;
+漫評 > manpyou\ ;
+灌木 > kanboku\ ;
+見境 > misakai\ ;
+経史 > kyoushi\ ;
+折込 > orikomi\ ;
+回章 > kaishou\ ;
+授爵 > jushaku\ ;
+等量 > touryou\ ;
+鏡面 > kyoumen\ ;
+経協 > keikyou\ ;
+固着 > kochaku\ ;
+推測 > suisoku\ ;
+国益 > kokueki\ ;
+滲透 > shintou\ ;
+観劇 > kangeki\ ;
+約定 > yakujou\ ;
+報償 > houshou\ ;
+複本 > fukuhon\ ;
+長文 > choubun\ ;
+撩乱 > ryouran\ ;
+探測 > tansoku\ ;
+投身 > toushin\ ;
+統一 > touitsu\ ;
+開拓 > kaitaku\ ;
+関心 > kanshin\ ;
+補殺 > hosatsu\ ;
+糸屑 > itokuzu\ ;
+撃剣 > gekiken\ ;
+扁額 > hengaku\ ;
+演説 > enzetsu\ ;
+垂教 > suikyou\ ;
+複星 > fukusei\ ;
+等速 > tousoku\ ;
+所領 > shoryou\ ;
+竹馬 > chikuba\ ;
+補欠 > hoketsu\ ;
+国産 > kokusan\ ;
+血縁 > ketsuen\ ;
+複方 > fukuhou\ ;
+粗末 > somatsu\ ;
+術策 > jussaku\ ;
+複文 > fukubun\ ;
+激甚 > gekijin\ ;
+鎮魂 > chingon\ ;
+複数 > fukusuu\ ;
+灯心 > toushin\ ;
+損得 > sontoku\ ;
+堕力 > daryoku\ ;
+終刊 > shuukan\ ;
+探求 > tankyuu\ ;
+親元 > oyamoto\ ;
+成鳥 > seichou\ ;
+鏡鑑 > kyoukan\ ;
+血糊 > chinori\ ;
+等身 > toushin\ ;
+漸落 > zenraku\ ;
+粗方 > arakata\ ;
+糸姫 > itohime\ ;
+節義 > setsugi\ ;
+筆蹟 > hisseki\ ;
+長所 > chousho\ ;
+筆跡 > hisseki\ ;
+潮紅 > choukou\ ;
+所長 > shochou\ ;
+終値 > owarine\ ;
+細則 > saisoku\ ;
+血筋 > chisuji\ ;
+潅腸 > kanchou\ ;
+城壁 > jouheki\ ;
+地殻 > chikaku\ ;
+摘取 > tekishu\ ;
+招致 > shouchi\ ;
+策謀 > sakubou\ ;
+親交 > shinkou\ ;
+精強 > seikyou\ ;
+折角 > sekkaku\ ;
+融通 > yuudzuu\ ;
+開幕 > kaimaku\ ;
+喫驚 > bikkuri\ ;
+開帳 > kaichou\ ;
+簇生 > zokusei\ ;
+坑木 > kouboku\ ;
+級友 > kyuuyuu\ ;
+閉幕 > heimaku\ ;
+鎖骨 > sakotsu\ ;
+満額 > mangaku\ ;
+街着 > machigi\ ;
+振盪 > shintou\ ;
+西北 > seihoku\ ;
+覆刻 > fukkoku\ ;
+圧殺 > assatsu\ ;
+鎮静 > chinsei\ ;
+蟋蟀 > koorogi\ ;
+濠洲 > goushuu\ ;
+拝聴 > haichou\ ;
+才量 > sairyou\ ;
+濁点 > dakuten\ ;
+終世 > shuusei\ ;
+蠏缶 > kanikan\ ;
+竜顔 > ryougan\ ;
+長径 > choukei\ ;
+長征 > chousei\ ;
+執刀 > shittou\ ;
+折衷 > setchuu\ ;
+襲名 > shuumei\ ;
+招聘 > shouhei\ ;
+折衝 > sesshou\ ;
+紹介 > shoukai\ ;
+紅唇 > koushin\ ;
+表現 > hyougen\ ;
+四球 > shikyuu\ ;
+垂心 > suishin\ ;
+推服 > suifuku\ ;
+衆知 > shuuchi\ ;
+閑寂 > kanjaku\ ;
+糾問 > kyuumon\ ;
+裏書 > uragaki\ ;
+筆誅 > hitchuu\ ;
+承認 > shounin\ ;
+長幼 > chouyou\ ;
+長年 > naganen\ ;
+閣外 > kakugai\ ;
+要償 > youshou\ ;
+等角 > toukaku\ ;
+嘆賞 > tanshou\ ;
+等親 > toushin\ ;
+搾取 > sakushu\ ;
+堅人 > katajin\ ;
+装束 > souzoku\ ;
+土橋 > dobashi\ ;
+地核 > chikaku\ ;
+手近 > tedjika\ ;
+裏方 > urakata\ ;
+糾合 > kyuugou\ ;
+蟹缶 > kanikan\ ;
+激減 > gekigen\ ;
+粗忽 > sokotsu\ ;
+納入 > nounyuu\ ;
+技術 > gijutsu\ ;
+投薬 > touyaku\ ;
+激浪 > gekirou\ ;
+約分 > yakubun\ ;
+国法 > kokuhou\ ;
+手蹟 > shuseki\ ;
+成長 > seichou\ ;
+粒径 > ryuukei\ ;
+長官 > choukan\ ;
+手跡 > shuseki\ ;
+長子 > choushi\ ;
+国民 > kokumin\ ;
+精妙 > seimyou\ ;
+濁水 > dakusui\ ;
+蛟龍 > kouryou\ ;
+排斥 > haiseki\ ;
+閉塞 > heisoku\ ;
+行状 > gyoujou\ ;
+蝶貝 > chougai\ ;
+襟元 > erimoto\ ;
+血球 > kekkyuu\ ;
+拙策 > sessaku\ ;
+懸隔 > kenkaku\ ;
+裏技 > urawaza\ ;
+在方 > zaikata\ ;
+竹輪 > chikuwa\ ;
+排撃 > haigeki\ ;
+節目 > fushime\ ;
+採択 > saitaku\ ;
+捕殺 > hosatsu\ ;
+開国 > kaikoku\ ;
+螟虫 > meichuu\ ;
+災厄 > saiyaku\ ;
+土日 > donichi\ ;
+褒奨 > houshou\ ;
+長大 > choudai\ ;
+成銀 > narigin\ ;
+範疇 > hanchuu\ ;
+回流 > kairyuu\ ;
+粗密 > somitsu\ ;
+掌握 > shouaku\ ;
+成金 > narikin\ ;
+潔白 > keppaku\ ;
+潔癖 > keppeki\ ;
+漢籍 > kanseki\ ;
+圧接 > assetsu\ ;
+抽籤 > chuusen\ ;
+競走 > kyousou\ ;
+粒子 > ryuushi\ ;
+才覚 > saikaku\ ;
+火口 > higuchi\ ;
+所謂 > iwayuru\ ;
+笑覧 > shouran\ ;
+間口 > maguchi\ ;
+搏動 > hakudou\ ;
+戦跡 > senseki\ ;
+閣内 > kakunai\ ;
+満身 > manshin\ ;
+国本 > kokuhon\ ;
+裏庭 > uraniwa\ ;
+裏店 > uradana\ ;
+国有 > kokuyuu\ ;
+国書 > kokusho\ ;
+火力 > karyoku\ ;
+長嘆 > choutan\ ;
+竜車 > ryuusha\ ;
+我輩 > wagahai\ ;
+満足 > manzoku\ ;
+血潮 > chishio\ ;
+漆絵 > urushie\ ;
+粗壁 > arakabe\ ;
+血漿 > kesshou\ ;
+齷齪 > akuseku\ ;
+激暑 > gekisho\ ;
+商魂 > shoukon\ ;
+地心 > chishin\ ;
+空馬 > karauma\ ;
+長唄 > nagauta\ ;
+損傷 > sonshou\ ;
+算盤 > soroban\ ;
+国文 > kokubun\ ;
+開削 > kaisaku\ ;
+所行 > shogyou\ ;
+国教 > kokkyou\ ;
+長命 > choumei\ ;
+国政 > kokusei\ ;
+溢血 > ikketsu\ ;
+米審 > beishin\ ;
+坩堝 > rutsubo\ ;
+節煙 > setsuen\ ;
+団栗 > donguri\ ;
+減額 > gengaku\ ;
+図星 > zuboshi\ ;
+裏山 > urayama\ ;
+折紙 > origami\ ;
+拘留 > kouryuu\ ;
+行水 > gyouzui\ ;
+粉壁 > funpeki\ ;
+立身 > risshin\ ;
+接尾 > setsubi\ ;
+竹製 > takesei\ ;
+商館 > shoukan\ ;
+算用 > san''you\ ;
+血沈 > ketchin\ ;
+間作 > kansaku\ ;
+手蔓 > tedzuru\ ;
+複合 > fukugou\ ;
+長剣 > chouken\ ;
+火付 > hitsuke\ ;
+唐黍 > toukibi\ ;
+地峡 > chikyou\ ;
+築港 > chikkou\ ;
+提唱 > teishou\ ;
+空隙 > kuugeki\ ;
+抜穴 > nukeana\ ;
+閑人 > himajin\ ;
+空陸 > kuuriku\ ;
+蝙蝠 > henpuku\ ;
+抄紙 > shoushi\ ;
+回春 > kaishun\ ;
+間中 > aidajuu\ ;
+承継 > shoukei\ ;
+等級 > toukyuu\ ;
+排尿 > hainyou\ ;
+捷径 > shoukei\ ;
+国手 > kokushu\ ;
+推奨 > suishou\ ;
+行楽 > kouraku\ ;
+長兄 > choukei\ ;
+表明 > hyoumei\ ;
+激戦 > gekisen\ ;
+回教 > kaikyou\ ;
+地学 > chigaku\ ;
+漁礁 > gyoshou\ ;
+表敬 > hyoukei\ ;
+憂鬱 > yuuutsu\ ;
+懸賞 > kenshou\ ;
+激憤 > gekifun\ ;
+穿鑿 > sensaku\ ;
+潤沢 > juntaku\ ;
+振替 > furikae\ ;
+篦棒 > berabou\ ;
+複写 > fukusha\ ;
+投票 > touhyou\ ;
+国情 > kokujou\ ;
+在宅 > zaitaku\ ;
+在学 > zaigaku\ ;
+懐郷 > kaikyou\ ;
+激情 > gekijou\ ;
+精一 > seiitsu\ ;
+器物 > kibutsu\ ;
+米国 > beikoku\ ;
+立証 > risshou\ ;
+掛声 > kakegoe\ ;
+行末 > yukusue\ ;
+行書 > gyousho\ ;
+渾身 > konshin\ ;
+扁舟 > henshuu\ ;
+投石 > touseki\ ;
+指標 > shihyou\ ;
+困惑 > konwaku\ ;
+挟書 > kyousho\ ;
+描写 > byousha\ ;
+衆望 > shuubou\ ;
+長上 > choujou\ ;
+衷情 > chuujou\ ;
+減量 > genryou\ ;
+澄明 > choumei\ ;
+衆智 > shuuchi\ ;
+嘉節 > kasetsu\ ;
+行数 > gyousuu\ ;
+図式 > zushiki\ ;
+行政 > gyousei\ ;
+成虫 > seichuu\ ;
+漿液 > shoueki\ ;
+地坪 > jitsubo\ ;
+穀類 > kokurui\ ;
+漠然 > bakuzen\ ;
+競艇 > kyoutei\ ;
+製作 > seisaku\ ;
+突進 > tosshin\ ;
+提供 > teikyou\ ;
+深閑 > shinkan\ ;
+米収 > beishuu\ ;
+穿通 > sentsuu\ ;
+減速 > gensoku\ ;
+表情 > hyoujou\ ;
+符節 > fusetsu\ ;
+噴流 > funryuu\ ;
+承知 > shouchi\ ;
+種馬 > taneuma\ ;
+淡雪 > awayuki\ ;
+啓迪 > keiteki\ ;
+接受 > setsuju\ ;
+挨拶 > aisatsu\ ;
+挫折 > zasetsu\ ;
+接収 > sesshuu\ ;
+手綱 > tadzuna\ ;
+衰弱 > suijaku\ ;
+回心 > kaishin\ ;
+国対 > kokutai\ ;
+漁獲 > gyokaku\ ;
+回復 > kaifuku\ ;
+答申 > toushin\ ;
+扉絵 > tobirae\ ;
+国宝 > kokuhou\ ;
+漁猟 > gyoryou\ ;
+国定 > kokutei\ ;
+国守 > kokushu\ ;
+笑納 > shounou\ ;
+投球 > toukyuu\ ;
+囚役 > shuueki\ ;
+唇音 > shin''on\ ;
+捷報 > shouhou\ ;
+探勝 > tanshou\ ;
+投獄 > tougoku\ ;
+行成 > ikinari\ ;
+滑石 > kasseki\ ;
+清適 > seiteki\ ;
+満腹 > manpuku\ ;
+鼻骨 > bikotsu\ ;
+地口 > jiguchi\ ;
+手箒 > tebouki\ ;
+漂然 > hyouzen\ ;
+唐門 > karamon\ ;
+涼風 > ryoufuu\ ;
+滞留 > tairyuu\ ;
+指摘 > shiteki\ ;
+涵養 > kan''you\ ;
+抹消 > masshou\ ;
+竜脳 > ryuunou\ ;
+国大 > kokudai\ ;
+米俗 > beizoku\ ;
+国外 > kokugai\ ;
+掘削 > kussaku\ ;
+術後 > jutsugo\ ;
+国士 > kokushi\ ;
+裏側 > uragawa\ ;
+濁声 > damigoe\ ;
+米作 > beisaku\ ;
+激変 > gekihen\ ;
+唱道 > shoudou\ ;
+問責 > monseki\ ;
+挑戦 > chousen\ ;
+国境 > kokkyou\ ;
+表層 > hyousou\ ;
+空谷 > kuukoku\ ;
+戦績 > senseki\ ;
+激増 > gekizou\ ;
+懇親 > konshin\ ;
+端綱 > hadzuna\ ;
+深遠 > shin''en\ ;
+渓谷 > keikoku\ ;
+篤志 > tokushi\ ;
+裏作 > urasaku\ ;
+喜色 > kishoku\ ;
+裂傷 > resshou\ ;
+蛮襟 > bankara\ ;
+米中 > beichuu\ ;
+立腹 > rippuku\ ;
+税額 > zeigaku\ ;
+招来 > shourai\ ;
+竿竹 > saodake\ ;
+漫楽 > mangaku\ ;
+淫逸 > in''itsu\ ;
+拘束 > kousoku\ ;
+空調 > kuuchou\ ;
+突角 > tokkaku\ ;
+虫類 > chuurui\ ;
+捺印 > natsuin\ ;
+衆庶 > shuusho\ ;
+竹竿 > takezao\ ;
+問診 > monshin\ ;
+拓本 > takuhon\ ;
+漂浪 > hyourou\ ;
+拡散 > kakusan\ ;
+蛹虫 > youchuu\ ;
+鋳鋼 > chuukou\ ;
+積載 > sekisai\ ;
+海鳥 > kaichou\ ;
+国喪 > kokusou\ ;
+商談 > shoudan\ ;
+空襲 > kuushuu\ ;
+成績 > seiseki\ ;
+箆棒 > berabou\ ;
+在俗 > zaizoku\ ;
+拱手 > kyoushu\ ;
+善良 > zenryou\ ;
+衒学 > gengaku\ ;
+鋳金 > chuukin\ ;
+空行 > kuugyou\ ;
+地主 > jinushi\ ;
+地中 > chichuu\ ;
+成約 > seiyaku\ ;
+囃子 > hayashi\ ;
+秀麗 > shuurei\ ;
+濫作 > ransaku\ ;
+街娼 > gaishou\ ;
+国名 > kokumei\ ;
+国司 > kokushi\ ;
+国号 > kokugou\ ;
+国史 > kokushi\ ;
+錯角 > sakkaku\ ;
+在京 > zaikyou\ ;
+衝天 > shouten\ ;
+箇月 > kagetsu\ ;
+圏内 > ken''nai\ ;
+錯覚 > sakkaku\ ;
+拍数 > hakusuu\ ;
+漢朝 > kanchou\ ;
+管掌 > kanshou\ ;
+在中 > zaichuu\ ;
+潜心 > senshin\ ;
+回国 > kaikoku\ ;
+潛心 > senshin\ ;
+表在 > hyouzai\ ;
+滴水 > tekisui\ ;
+打率 > daritsu\ ;
+鋳造 > chuuzou\ ;
+国勢 > kokusei\ ;
+四国 > shikoku\ ;
+国労 > kokurou\ ;
+深謝 > shinsha\ ;
+拝承 > haishou\ ;
+深謀 > shinbou\ ;
+嚮導 > kyoudou\ ;
+激動 > gekidou\ ;
+立米 > ryuubei\ ;
+筋注 > kinchuu\ ;
+激励 > gekirei\ ;
+抑止 > yokushi\ ;
+漢族 > kanzoku\ ;
+満票 > manpyou\ ;
+節度 > setsudo\ ;
+禽鳥 > kinchou\ ;
+戴白 > taihaku\ ;
+拙技 > setsugi\ ;
+漁業 > gyogyou\ ;
+演曲 > enkyoku\ ;
+液量 > ekiryou\ ;
+蛇蠍 > dakatsu\ ;
+国内 > kokunai\ ;
+鼎革 > teikaku\ ;
+蛔虫 > kaichuu\ ;
+国典 > kokuten\ ;
+蝋石 > rouseki\ ;
+竜神 > ryuujin\ ;
+消防 > shoubou\ ;
+流麗 > ryuurei\ ;
+端的 > tanteki\ ;
+温色 > onshoku\ ;
+蛇蝎 > dakatsu\ ;
+国債 > kokusai\ ;
+準用 > jun''you\ ;
+穴蔵 > anagura\ ;
+拍手 > hakushu\ ;
+消閑 > shoukan\ ;
+手燭 > teshoku\ ;
+喪神 > soushin\ ;
+四周 > shishuu\ ;
+回収 > kaishuu\ ;
+箱師 > hakoshi\ ;
+表号 > hyougou\ ;
+黄麻 > tsunaso\ ;
+虫酸 > mushizu\ ;
+満目 > manmoku\ ;
+拝復 > haifuku\ ;
+鐘楼 > shourou\ ;
+立秋 > risshuu\ ;
+秋風 > shuufuu\ ;
+押捺 > ounatsu\ ;
+国使 > kokushi\ ;
+招待 > shoutai\ ;
+浦風 > urakaze\ ;
+空茶 > karacha\ ;
+国体 > kokutai\ ;
+竜眼 > ryuugan\ ;
+海陸 > kairiku\ ;
+稀釈 > kishaku\ ;
+税込 > zeikomi\ ;
+黒鯛 > kurodai\ ;
+空色 > sorairo\ ;
+挙国 > kyokoku\ ;
+国主 > kokushu\ ;
+衰兆 > suichou\ ;
+国中 > kunijuu\ ;
+秋霜 > shuusou\ ;
+喉笛 > nodobue\ ;
+秋霖 > shuurin\ ;
+蛮習 > banshuu\ ;
+黄鳥 > kouchou\ ;
+行啓 > gyoukei\ ;
+秋雨 > akisame\ ;
+空腹 > kuufuku\ ;
+滋殖 > jishoku\ ;
+衝動 > shoudou\ ;
+挿入 > sounyuu\ ;
+和食 > washoku\ ;
+抜擢 > batteki\ ;
+溯源 > sakugen\ ;
+抛擲 > houteki\ ;
+商船 > shousen\ ;
+鍵穴 > kagiana\ ;
+振動 > shindou\ ;
+蟻巻 > arimaki\ ;
+扶植 > fushoku\ ;
+抄本 > shouhon\ ;
+指圧 > shiatsu\ ;
+投擲 > touteki\ ;
+指図 > sashizu\ ;
+溺水 > dekisui\ ;
+築地 > tsukiji\ ;
+黒風 > kokufuu\ ;
+蝋燭 > rousoku\ ;
+溺死 > dekishi\ ;
+拙宅 > settaku\ ;
+手沢 > shutaku\ ;
+惣領 > souryou\ ;
+禁鳥 > kinchou\ ;
+抑揚 > yokuyou\ ;
+囚人 > shuujin\ ;
+清聴 > seichou\ ;
+笊法 > zaruhou\ ;
+懇篤 > kontoku\ ;
+競漕 > kyousou\ ;
+淳良 > junryou\ ;
+減給 > genkyuu\ ;
+鏖殺 > ousatsu\ ;
+唐薯 > karaimo\ ;
+税調 > zeichou\ ;
+笑止 > shoushi\ ;
+蘭鋳 > ranchuu\ ;
+拡大 > kakudai\ ;
+銅鐸 > doutaku\ ;
+拍子 > hyoushi\ ;
+銅鏡 > doukyou\ ;
+浸透 > shintou\ ;
+策戦 > sakusen\ ;
+成熟 > seijuku\ ;
+溜池 > tameike\ ;
+浦里 > urazato\ ;
+湯熨 > yunoshi\ ;
+喫煙 > kitsuen\ ;
+嘉日 > kajitsu\ ;
+満潮 > manchou\ ;
+称賛 > shousan\ ;
+嚇嚇 > kakkaku\ ;
+商経 > shoukei\ ;
+拓大 > takudai\ ;
+源流 > genryuu\ ;
+穎脱 > eidatsu\ ;
+突端 > toppana\ ;
+行体 > gyoutai\ ;
+漢学 > kangaku\ ;
+黄雀 > koujaku\ ;
+喀痰 > kakutan\ ;
+鼻血 > hanadji\ ;
+錯綜 > sakusou\ ;
+深耕 > shinkou\ ;
+術中 > jutchuu\ ;
+派閥 > habatsu\ ;
+善用 > zen''you\ ;
+蛟竜 > kouryou\ ;
+漆工 > shikkou\ ;
+憲章 > kenshou\ ;
+麻雀 > mazejan\ ;
+戦況 > senkyou\ ;
+漁師 > ryoushi\ ;
+篆刻 > tenkoku\ ;
+衆人 > shuujin\ ;
+所業 > shogyou\ ;
+究竟 > kukkyou\ ;
+嘲弄 > chourou\ ;
+戯歌 > zareuta\ ;
+蠢動 > shundou\ ;
+唐臼 > karausu\ ;
+満洲 > manshuu\ ;
+湾流 > wanryuu\ ;
+善玉 > zendama\ ;
+私通 > shitsuu\ ;
+種苗 > shubyou\ ;
+海賊 > kaizoku\ ;
+種芋 > taneimo\ ;
+湮滅 > inmetsu\ ;
+戦歴 > senreki\ ;
+指値 > sashine\ ;
+海豹 > kaihyou\ ;
+海象 > seiuchi\ ;
+窮状 > kyuujou\ ;
+押売 > oshiuri\ ;
+品評 > hinpyou\ ;
+惨酷 > zankoku\ ;
+悪食 > akujiki\ ;
+蛮的 > banteki\ ;
+深紅 > shinkou\ ;
+神髄 > shinzui\ ;
+蘇鉄 > sotetsu\ ;
+等張 > touchou\ ;
+蟄居 > chikkyo\ ;
+愚説 > gusetsu\ ;
+懸濁 > kendaku\ ;
+商社 > shousha\ ;
+銃身 > juushin\ ;
+溝板 > dobuita\ ;
+清秋 > seishuu\ ;
+感覚 > kankaku\ ;
+清福 > seifuku\ ;
+減益 > gen''eki\ ;
+清祥 > seishou\ ;
+嚢中 > nouchuu\ ;
+神饌 > shinsen\ ;
+龍神 > ryuujin\ ;
+秘訣 > hiketsu\ ;
+空白 > kuuhaku\ ;
+潜伏 > senpuku\ ;
+嘆息 > tansoku\ ;
+虹色 > nijiiro\ ;
+策定 > sakutei\ ;
+流連 > ryuuren\ ;
+浮説 > fusetsu\ ;
+積算 > sekisan\ ;
+悪阻 > tsuwari\ ;
+憶病 > okubyou\ ;
+慣習 > kanshuu\ ;
+深窓 > shinsou\ ;
+戯曲 > gikyoku\ ;
+手掌 > shushou\ ;
+患難 > kan''nan\ ;
+拡充 > kakujuu\ ;
+神韻 > shin''in\ ;
+穀粉 > kokufun\ ;
+哨舎 > shousha\ ;
+管内 > kan''nai\ ;
+鑿井 > sakusei\ ;
+唐糸 > karaito\ ;
+鉄鎚 > tettsui\ ;
+空瓶 > karabin\ ;
+満株 > mankabu\ ;
+鋼索 > kousaku\ ;
+拍動 > hakudou\ ;
+手抄 > shushou\ ;
+秘術 > hijutsu\ ;
+滑席 > kasseki\ ;
+神霊 > shinrei\ ;
+成業 > seigyou\ ;
+蛋白 > tanpaku\ ;
+周遊 > shuuyuu\ ;
+悠長 > yuuchou\ ;
+商用 > shouyou\ ;
+滅度 > metsudo\ ;
+満更 > manzara\ ;
+策士 > sakushi\ ;
+周辺 > shuuhen\ ;
+成桂 > narikei\ ;
+海蛇 > umihebi\ ;
+活路 > katsuro\ ;
+黒貂 > kuroten\ ;
+鐘声 > shousei\ ;
+拙作 > sessaku\ ;
+銭葵 > zeniaoi\ ;
+漆喰 > shikkui\ ;
+波音 > namioto\ ;
+稜線 > ryousen\ ;
+窮民 > kyuumin\ ;
+才徳 > saitoku\ ;
+立案 > ritsuan\ ;
+黙認 > mokunin\ ;
+慶福 > keifuku\ ;
+呵責 > kashaku\ ;
+空爆 > kuubaku\ ;
+吃驚 > bikkuri\ ;
+蝿帳 > haichou\ ;
+窮死 > kyuushi\ ;
+各駅 > kakueki\ ;
+商状 > shoujou\ ;
+秋蚕 > shuusan\ ;
+押入 > oshiire\ ;
+混用 > kon''you\ ;
+渦潮 > uzushio\ ;
+黙視 > mokushi\ ;
+蘭虫 > ranchuu\ ;
+釣魚 > chougyo\ ;
+我方 > wagahou\ ;
+同額 > dougaku\ ;
+穴熊 > anaguma\ ;
+流説 > rusetsu\ ;
+所得 > shotoku\ ;
+溜息 > tameiki\ ;
+深甚 > shinjin\ ;
+恭順 > kyoujun\ ;
+漏刻 > roukoku\ ;
+薩長 > satchou\ ;
+流言 > ryuugen\ ;
+担任 > tan''nin\ ;
+感興 > kankyou\ ;
+淡白 > tanpaku\ ;
+立春 > risshun\ ;
+窯業 > yougyou\ ;
+抜去 > bakkyou\ ;
+抗告 > koukoku\ ;
+温浴 > on''yoku\ ;
+禁足 > kinsoku\ ;
+準急 > junkyuu\ ;
+吃音 > kitsuon\ ;
+鉄路 > tetsuro\ ;
+社長 > shachou\ ;
+空漠 > kuubaku\ ;
+各面 > kakumen\ ;
+黒血 > kurochi\ ;
+消耗 > shoumou\ ;
+竣成 > shunsei\ ;
+洗足 > sensoku\ ;
+黒蟻 > kuroari\ ;
+憶測 > okusoku\ ;
+流行 > ryuukou\ ;
+窒死 > chisshi\ ;
+金高 > kindaka\ ;
+筺体 > kyoutai\ ;
+各階 > kakukai\ ;
+含量 > ganryou\ ;
+秋草 > akikusa\ ;
+才学 > saigaku\ ;
+神道 > shintou\ ;
+吾輩 > wagahai\ ;
+憤激 > fungeki\ ;
+情調 > jouchou\ ;
+愉色 > yushoku\ ;
+種目 > shumoku\ ;
+清濁 > seidaku\ ;
+策動 > sakudou\ ;
+周覧 > shuuran\ ;
+清澄 > seichou\ ;
+所属 > shozoku\ ;
+策励 > sakurei\ ;
+戦役 > sen''eki\ ;
+薄雲 > usugumo\ ;
+薄雪 > usuyuki\ ;
+祝辞 > shukuji\ ;
+抑制 > yokusei\ ;
+恋風 > koikaze\ ;
+商港 > shoukou\ ;
+神輿 > mikoshi\ ;
+蕁麻 > irakusa\ ;
+渓流 > keiryuu\ ;
+湿性 > shissei\ ;
+童心 > doushin\ ;
+戒慎 > kaishin\ ;
+投入 > tounyuu\ ;
+鹿追 > shikaoi\ ;
+祖述 > sojutsu\ ;
+淋病 > rinbyou\ ;
+戊戌 > bojutsu\ ;
+薬酒 > yakushu\ ;
+呪術 > jujutsu\ ;
+古顔 > furugao\ ;
+浅薄 > senpaku\ ;
+手妻 > tedzuma\ ;
+混濁 > kondaku\ ;
+金額 > kingaku\ ;
+鉤虫 > kouchuu\ ;
+浣腸 > kanchou\ ;
+清涼 > seiryou\ ;
+惨落 > sanraku\ ;
+商法 > shouhou\ ;
+慣用 > kan''you\ ;
+銅臭 > doushuu\ ;
+笑声 > shousei\ ;
+蘊蓄 > unchiku\ ;
+銀色 > gin''iro\ ;
+麦角 > bakkaku\ ;
+戒心 > kaishin\ ;
+投信 > toushin\ ;
+清流 > seiryuu\ ;
+私腹 > shifuku\ ;
+満幅 > manpuku\ ;
+台閣 > daikaku\ ;
+満席 > manseki\ ;
+承前 > shouzen\ ;
+喬志 > kyoushi\ ;
+深潭 > shintan\ ;
+反駁 > hanpaku\ ;
+竣工 > shunkou\ ;
+満州 > manshuu\ ;
+喪心 > soushin\ ;
+同量 > douryou\ ;
+祝賀 > shukuga\ ;
+悪評 > akuhyou\ ;
+哄笑 > koushou\ ;
+悪訳 > akuyaku\ ;
+急騰 > kyuutou\ ;
+蕪雑 > buzatsu\ ;
+黒茶 > kurocha\ ;
+税目 > zeimoku\ ;
+折中 > setchuu\ ;
+秘結 > hiketsu\ ;
+同郷 > doukyou\ ;
+懲戒 > choukai\ ;
+示達 > jitatsu\ ;
+重陽 > chouyou\ ;
+深淵 > shin''en\ ;
+懐旧 > kaikyuu\ ;
+筐体 > kyoutai\ ;
+虎穴 > koketsu\ ;
+喘息 > zensoku\ ;
+反響 > hankyou\ ;
+鎮定 > chintei\ ;
+深海 > shinkai\ ;
+商権 > shouken\ ;
+筒井 > tsutsui\ ;
+深浅 > shinsen\ ;
+哲理 > tetsuri\ ;
+鈍足 > donsoku\ ;
+空桶 > karaoke\ ;
+薄鈍 > usunoro\ ;
+懲悪 > chouaku\ ;
+空株 > kuukabu\ ;
+蛮族 > banzoku\ ;
+蕉風 > shoufuu\ ;
+笛吹 > fuefuki\ ;
+法身 > hosshin\ ;
+竜宮 > ryuuguu\ ;
+祝言 > shuugen\ ;
+鏡台 > kyoudai\ ;
+恥辱 > chijoku\ ;
+沈静 > chinsei\ ;
+懲役 > choueki\ ;
+善悪 > zen''aku\ ;
+滞京 > taikyou\ ;
+重鎮 > juuchin\ ;
+名跡 > meiseki\ ;
+急難 > kyuunan\ ;
+薄遇 > hakuguu\ ;
+参集 > sanshuu\ ;
+淡泊 > tanpaku\ ;
+手口 > teguchi\ ;
+沈降 > chinkou\ ;
+浸礼 > shinrei\ ;
+周航 > shuukou\ ;
+善心 > zenshin\ ;
+善徳 > zentoku\ ;
+打力 > daryoku\ ;
+淫欲 > in''yoku\ ;
+銀紙 > gingami\ ;
+鈴蘭 > suzuran\ ;
+戦域 > sen''iki\ ;
+吟誦 > ginshou\ ;
+究明 > kyuumei\ ;
+品目 > hinmoku\ ;
+醜類 > shuurui\ ;
+齲歯 > mushiba\ ;
+召還 > shoukan\ ;
+注解 > chuukai\ ;
+可逆 > kagyaku\ ;
+憂欝 > yuuutsu\ ;
+銅箔 > douhaku\ ;
+注視 > chuushi\ ;
+重量 > juuryou\ ;
+戦国 > sengoku\ ;
+所収 > shoshuu\ ;
+愛着 > aichaku\ ;
+鈍角 > donkaku\ ;
+麦茶 > mugicha\ ;
+黒線 > kokusen\ ;
+愚直 > guchoku\ ;
+銀箔 > ginpaku\ ;
+鏡像 > kyouzou\ ;
+藤色 > fujiiro\ ;
+史蹟 > shiseki\ ;
+戸口 > toguchi\ ;
+空揚 > karaage\ ;
+銀笛 > ginteki\ ;
+湿地 > shitchi\ ;
+海相 > kaishou\ ;
+第一 > daiichi\ ;
+清新 > seishin\ ;
+恭謙 > kyouken\ ;
+野道 > nomichi\ ;
+唐歌 > karauta\ ;
+同調 > douchou\ ;
+史跡 > shiseki\ ;
+鷹隼 > youshun\ ;
+競合 > kyougou\ ;
+名訳 > meiyaku\ ;
+収金 > shuukin\ ;
+合調 > gouchou\ ;
+口輪 > kuchiwa\ ;
+淳朴 > junboku\ ;
+黄緑 > ouryoku\ ;
+忠魂 > chuukon\ ;
+各論 > kakuron\ ;
+涸渇 > kokatsu\ ;
+合評 > gappyou\ ;
+叙述 > jojutsu\ ;
+深更 > shinkou\ ;
+洗脳 > sen''nou\ ;
+戸別 > kobetsu\ ;
+神葬 > shinsou\ ;
+立場 > tachiba\ ;
+唐様 > karayou\ ;
+麻縄 > asanawa\ ;
+鶺鴒 > sekirei\ ;
+悪臭 > akushuu\ ;
+積木 > tsumiki\ ;
+古跡 > furuato\ ;
+準則 > junsoku\ ;
+戦友 > sen''yuu\ ;
+浴用 > yokuyou\ ;
+吐血 > toketsu\ ;
+鈎虫 > kouchuu\ ;
+薄謝 > hakusha\ ;
+鎮台 > chindai\ ;
+沈酔 > chinsui\ ;
+商才 > shousai\ ;
+黙祷 > mokutou\ ;
+金赤 > kin''aka\ ;
+所信 > shoshin\ ;
+商戦 > shousen\ ;
+立国 > rikkoku\ ;
+黙礼 > mokurei\ ;
+黙示 > mokushi\ ;
+蚕業 > sangyou\ ;
+戦勝 > senshou\ ;
+叛跡 > hanseki\ ;
+思量 > shiryou\ ;
+手中 > shuchuu\ ;
+消燈 > shoutou\ ;
+神苑 > shin''en\ ;
+手下 > teshita\ ;
+収載 > shuusai\ ;
+急遽 > kyuukyo\ ;
+私的 > shiteki\ ;
+満卓 > mantaku\ ;
+急造 > kyuuzou\ ;
+急逝 > kyuusei\ ;
+渦巻 > uzumaki\ ;
+海猫 > umineko\ ;
+愚物 > gubutsu\ ;
+重責 > juuseki\ ;
+鼻汗 > hanaase\ ;
+反身 > hanshin\ ;
+急送 > kyuusou\ ;
+戒告 > kaikoku\ ;
+善女 > zen''nyo\ ;
+神興 > mikoshi\ ;
+悪習 > akushuu\ ;
+召請 > shousei\ ;
+鉛筆 > enpitsu\ ;
+叛賊 > hanzoku\ ;
+戒名 > kaimyou\ ;
+厳酷 > genkoku\ ;
+竣功 > shunkou\ ;
+唐朝 > touchou\ ;
+消灯 > shoutou\ ;
+心魂 > shinkon\ ;
+厄難 > yakunan\ ;
+房中 > bouchuu\ ;
+反跳 > hanchou\ ;
+海牛 > kaigyuu\ ;
+鉱石 > kouseki\ ;
+薬莢 > yakkyou\ ;
+鼻歌 > hanauta\ ;
+憑拠 > hyoukyo\ ;
+鉄索 > tessaku\ ;
+心髄 > shinzui\ ;
+急転 > kyuuten\ ;
+反越 > hanetsu\ ;
+吹聴 > fuichou\ ;
+湯口 > yuguchi\ ;
+戦傷 > senshou\ ;
+古説 > kosetsu\ ;
+水飴 > mizuame\ ;
+名薬 > meiyaku\ ;
+稿料 > kouryou\ ;
+即題 > sokudai\ ;
+忠霊 > chuurei\ ;
+口説 > kuzetsu\ ;
+口誦 > koushou\ ;
+薬草 > yakusou\ ;
+種板 > taneita\ ;
+虫気 > mushike\ ;
+空席 > kuuseki\ ;
+測定 > sokutei\ ;
+流砂 > ryuusha\ ;
+湾内 > wan''nai\ ;
+愕然 > gakuzen\ ;
+種本 > tanehon\ ;
+神聖 > shinsei\ ;
+収賄 > shuuwai\ ;
+反賊 > hanzoku\ ;
+感激 > kangeki\ ;
+鶴首 > kakushu\ ;
+虫歯 > mushiba\ ;
+各藩 > kakuhan\ ;
+洪積 > kouseki\ ;
+競争 > kyousou\ ;
+口角 > koukaku\ ;
+窮地 > kyuuchi\ ;
+商店 > shouten\ ;
+氷面 > hyoumen\ ;
+重訳 > juuyaku\ ;
+鈍色 > nibiiro\ ;
+千鳥 > chidori\ ;
+叙説 > josetsu\ ;
+志集 > shishuu\ ;
+窪地 > kubochi\ ;
+憔悴 > shousui\ ;
+深慮 > shinryo\ ;
+福祉 > fukushi\ ;
+禎祥 > teishou\ ;
+気骨 > kikotsu\ ;
+種族 > shuzoku\ ;
+里親 > satooya\ ;
+商工 > shoukou\ ;
+減少 > genshou\ ;
+黒痣 > kuroaza\ ;
+醋酸 > sakusan\ ;
+麦笛 > mugibue\ ;
+君臣 > kunshin\ ;
+洞穴 > horaana\ ;
+懸吊 > kenchou\ ;
+銃猟 > juuryou\ ;
+心願 > shingan\ ;
+淫慾 > in''yoku\ ;
+浸潤 > shinjun\ ;
+満作 > mansaku\ ;
+古血 > furuchi\ ;
+憂戚 > yuuseki\ ;
+含羞 > ganshuu\ ;
+空将 > kuushou\ ;
+心頭 > shintou\ ;
+唐揚 > karaage\ ;
+戦中 > senchuu\ ;
+水陸 > suiriku\ ;
+占領 > senryou\ ;
+浸漬 > shinshi\ ;
+心音 > shin''on\ ;
+周知 > shuuchi\ ;
+啓学 > keigaku\ ;
+薫育 > kun''iku\ ;
+愁然 > shuuzen\ ;
+黄白 > kouhaku\ ;
+反証 > hanshou\ ;
+流用 > ryuuyou\ ;
+満了 > manryou\ ;
+流産 > ryuuzan\ ;
+積悪 > sekiaku\ ;
+鉛直 > enchoku\ ;
+悪策 > akusaku\ ;
+麦秋 > mugiaki\ ;
+金融 > kin''yuu\ ;
+必需 > hitsuju\ ;
+憂愁 > yuushuu\ ;
+神経 > shinkei\ ;
+心霊 > shinrei\ ;
+感泣 > kankyuu\ ;
+収覧 > shuuran\ ;
+同舟 > doushuu\ ;
+惇睦 > tonboku\ ;
+海深 > kaishin\ ;
+蛮境 > bankyou\ ;
+反覆 > hanpuku\ ;
+福相 > fukusou\ ;
+突如 > totsujo\ ;
+液晶 > ekishou\ ;
+同腹 > doufuku\ ;
+海流 > kairyuu\ ;
+各般 > kakuhan\ ;
+測地 > sokuchi\ ;
+憂心 > yuushin\ ;
+積弊 > sekihei\ ;
+虚業 > kyogyou\ ;
+油菜 > aburana\ ;
+半額 > hangaku\ ;
+決議 > ketsugi\ ;
+鉄石 > tesseki\ ;
+快適 > kaiteki\ ;
+積年 > sekinen\ ;
+浸水 > shinsui\ ;
+酷遇 > kokuguu\ ;
+秘決 > hiketsu\ ;
+快速 > kaisoku\ ;
+黙然 > mokunen\ ;
+酪酸 > rakusan\ ;
+神童 > shindou\ ;
+釉薬 > yuuyaku\ ;
+唱導 > shoudou\ ;
+告知 > kokuchi\ ;
+急行 > kyuukou\ ;
+商大 > shoudai\ ;
+深層 > shinsou\ ;
+商売 > shoubai\ ;
+恋草 > koigusa\ ;
+慶弔 > keichou\ ;
+酢酸 > sakusan\ ;
+求道 > kyuudou\ ;
+浦波 > uranami\ ;
+薬籠 > yakurou\ ;
+渉外 > shougai\ ;
+黒点 > kokuten\ ;
+黒炭 > kokutan\ ;
+水量 > suiryou\ ;
+空圧 > kuuatsu\ ;
+秋水 > shuusui\ ;
+右腕 > migiude\ ;
+口茶 > kuchija\ ;
+品格 > hinkaku\ ;
+徒食 > toshoku\ ;
+酪農 > rakunou\ ;
+薄肉 > usuniku\ ;
+召致 > shouchi\ ;
+北鮮 > hokusen\ ;
+黴毒 > baidoku\ ;
+黄熟 > koujuku\ ;
+呪物 > jubutsu\ ;
+快足 > kaisoku\ ;
+収蔵 > shuuzou\ ;
+古色 > koshoku\ ;
+浴槽 > yokusou\ ;
+涼感 > ryoukan\ ;
+金色 > konjiki\ ;
+酒量 > shuryou\ ;
+慢心 > manshin\ ;
+同級 > doukyuu\ ;
+原註 > genchuu\ ;
+愁歎 > shuutan\ ;
+口臭 > koushuu\ ;
+嚇々 > kakkaku\ ;
+悪症 > akushou\ ;
+悪病 > akubyou\ ;
+化骨 > kakotsu\ ;
+里芋 > satoimo\ ;
+醜行 > shuukou\ ;
+哨戒 > shoukai\ ;
+反落 > hanraku\ ;
+半鐘 > hanshou\ ;
+薬種 > yakushu\ ;
+口腹 > koufuku\ ;
+心酔 > shinsui\ ;
+心配 > shinpai\ ;
+禁獄 > kingoku\ ;
+氷輪 > hyourin\ ;
+感服 > kanpuku\ ;
+毒魚 > dokugyo\ ;
+禁猟 > kinryou\ ;
+重臣 > juushin\ ;
+善人 > zen''nin\ ;
+吸盤 > kyuuban\ ;
+蛮勇 > ban''yuu\ ;
+深奥 > shin''ou\ ;
+各紙 > kakushi\ ;
+私欲 > shiyoku\ ;
+鹿砦 > rokusai\ ;
+祉福 > shifuku\ ;
+叛臣 > hanshin\ ;
+社章 > shashou\ ;
+窮乏 > kyuubou\ ;
+浸染 > shinsen\ ;
+鋳工 > chuukou\ ;
+深夜 > shin''ya\ ;
+確認 > kakunin\ ;
+減収 > genshuu\ ;
+薬礼 > yakurei\ ;
+錨地 > byouchi\ ;
+薄縁 > usuberi\ ;
+治績 > chiseki\ ;
+消散 > shousan\ ;
+票田 > hyouden\ ;
+確言 > kakugen\ ;
+薄絹 > usuginu\ ;
+快諾 > kaidaku\ ;
+北風 > hokufuu\ ;
+薄給 > hakkyuu\ ;
+重聴 > juuchou\ ;
+商品 > shouhin\ ;
+快調 > kaichou\ ;
+銘柄 > meigara\ ;
+悪玉 > akudama\ ;
+秘曲 > hikyoku\ ;
+薄紙 > usugami\ ;
+薄紅 > usubeni\ ;
+称揚 > shouyou\ ;
+蓚酸 > shuusan\ ;
+渋味 > shibumi\ ;
+南進 > nanshin\ ;
+黙止 > mokushi\ ;
+銘木 > meiboku\ ;
+鉱毒 > koudoku\ ;
+名称 > meishou\ ;
+商号 > shougou\ ;
+怨色 > enshoku\ ;
+流汗 > ryuukan\ ;
+北面 > hokumen\ ;
+悉皆 > shikkai\ ;
+流水 > ryuusui\ ;
+突先 > tossaki\ ;
+活況 > kakkyou\ ;
+釈義 > shakugi\ ;
+復配 > fukuhai\ ;
+忠誠 > chuusei\ ;
+原虫 > genchuu\ ;
+各種 > kakushu\ ;
+史籍 > shiseki\ ;
+吉祥 > kisshou\ ;
+硫酸 > ryuusan\ ;
+懐中 > kaichuu\ ;
+単身 > tanshin\ ;
+弱齢 > jakurei\ ;
+鄭重 > teichou\ ;
+忠言 > chuugen\ ;
+泡盛 > awamori\ ;
+北限 > hokugen\ ;
+升遷 > shousen\ ;
+秋晴 > akibare\ ;
+穴凹 > anaboko\ ;
+金網 > kanaami\ ;
+号笛 > gouteki\ ;
+蛇口 > jaguchi\ ;
+黒檀 > kokutan\ ;
+淑女 > shukujo\ ;
+憂国 > yuukoku\ ;
+洗濯 > sentaku\ ;
+各社 > kakusha\ ;
+双翼 > souyoku\ ;
+半農 > han''nou\ ;
+禁漁 > kinryou\ ;
+口約 > kouyaku\ ;
+清勝 > seishou\ ;
+鈍痛 > dontsuu\ ;
+私服 > shifuku\ ;
+口糧 > kouryou\ ;
+金納 > kin''nou\ ;
+北門 > kitamon\ ;
+吸物 > suimono\ ;
+厚薄 > kouhaku\ ;
+鉱業 > kougyou\ ;
+十進 > jisshin\ ;
+薬用 > yakuyou\ ;
+永訣 > eiketsu\ ;
+積善 > sekizen\ ;
+銀杏 > gin''nan\ ;
+渡仏 > tofutsu\ ;
+硝酸 > shousan\ ;
+磊落 > rairaku\ ;
+虚心 > kyoshin\ ;
+減作 > gensaku\ ;
+半身 > hanshin\ ;
+情況 > joukyou\ ;
+洗滌 > sendeki\ ;
+氷解 > hyoukai\ ;
+名目 > meimoku\ ;
+句節 > kusetsu\ ;
+同省 > doushou\ ;
+津波 > tsunami\ ;
+収繭 > shuuken\ ;
+法的 > houteki\ ;
+泉石 > senseki\ ;
+沖縄 > okinawa\ ;
+民踊 > min''you\ ;
+虚弱 > kyojaku\ ;
+協賛 > kyousan\ ;
+即製 > sokusei\ ;
+金箔 > kinpaku\ ;
+古筆 > kohitsu\ ;
+後釜 > atogama\ ;
+深厚 > shinkou\ ;
+御輿 > mikoshi\ ;
+重篤 > juutoku\ ;
+添削 > tensaku\ ;
+金策 > kinsaku\ ;
+鉱柱 > kouchuu\ ;
+金筋 > kinsuji\ ;
+得道 > tokudou\ ;
+礦石 > kouseki\ ;
+郷関 > kyoukan\ ;
+重箱 > juubako\ ;
+各県 > kakuken\ ;
+厩舎 > kyuusha\ ;
+可祝 > kashiku\ ;
+同病 > doubyou\ ;
+情欲 > jouyoku\ ;
+収納 > shuunou\ ;
+空中 > kuuchuu\ ;
+黒板 > kokuban\ ;
+神灯 > shintou\ ;
+藁灰 > warabai\ ;
+同町 > douchou\ ;
+虫害 > chuugai\ ;
+感応 > kan''nou\ ;
+商会 > shoukai\ ;
+感心 > kanshin\ ;
+単調 > tanchou\ ;
+銃撃 > juugeki\ ;
+黄梢 > koushou\ ;
+感得 > kantoku\ ;
+惇樸 > tonboku\ ;
+石鯛 > ishidai\ ;
+醜聞 > shuubun\ ;
+商人 > shounin\ ;
+後逸 > kouitsu\ ;
+後進 > koushin\ ;
+重積 > juuseki\ ;
+台石 > daiishi\ ;
+卓論 > takuron\ ;
+殿閣 > denkaku\ ;
+薄皮 > usukawa\ ;
+厚臼 > atsuusu\ ;
+博覧 > hakuran\ ;
+単角 > tankaku\ ;
+虎巻 > torakan\ ;
+当限 > tougiri\ ;
+積分 > sekibun\ ;
+悄然 > shouzen\ ;
+民謡 > min''you\ ;
+錯乱 > sakuran\ ;
+黒斑 > kokuhan\ ;
+流星 > ryuusei\ ;
+治療 > chiryou\ ;
+史的 > shiteki\ ;
+混信 > konshin\ ;
+郡長 > gunchou\ ;
+単複 > tanpuku\ ;
+残高 > zandaka\ ;
+思索 > shisaku\ ;
+及第 > kyuudai\ ;
+秀才 > shuusai\ ;
+鉄橋 > tekkyou\ ;
+強風 > kyoufuu\ ;
+薪炭 > shintan\ ;
+混作 > konsaku\ ;
+金石 > kinseki\ ;
+鉄槌 > tettsui\ ;
+収税 > shuuzei\ ;
+惜敗 > sekihai\ ;
+稲叢 > inamura\ ;
+私慾 > shiyoku\ ;
+硬調 > kouchou\ ;
+半角 > hankaku\ ;
+彫金 > choukin\ ;
+毒酒 > dokushu\ ;
+浮彫 > ukibori\ ;
+秋思 > shuushi\ ;
+後足 > atoashi\ ;
+北辺 > hokuhen\ ;
+唯今 > tadaima\ ;
+釣瓶 > tsurube\ ;
+慟哭 > doukoku\ ;
+惑星 > wakusei\ ;
+半襟 > han''eri\ ;
+惇朴 > tonboku\ ;
+死魄 > shihaku\ ;
+強靭 > kyoujin\ ;
+吸水 > kyuusui\ ;
+確聞 > kakubun\ ;
+恋病 > koiyami\ ;
+金的 > kinteki\ ;
+深交 > shinkou\ ;
+周易 > shuueki\ ;
+矯風 > kyoufuu\ ;
+慶兆 > keichou\ ;
+半袖 > hansode\ ;
+吸殻 > suigara\ ;
+郷邑 > kyouyuu\ ;
+虫垂 > chuusui\ ;
+周旋 > shuusen\ ;
+正鵠 > seikoku\ ;
+民衆 > minshuu\ ;
+海峡 > kaikyou\ ;
+鉄柵 > tessaku\ ;
+鉄柱 > tetchuu\ ;
+毎週 > maishuu\ ;
+私心 > shishin\ ;
+神殿 > shinden\ ;
+残額 > zangaku\ ;
+息災 > sokusai\ ;
+弱電 > jakuden\ ;
+蔵米 > kuramai\ ;
+海山 > umiyama\ ;
+残響 > zankyou\ ;
+洋楽 > yougaku\ ;
+穀倉 > kokusou\ ;
+重症 > juushou\ ;
+重病 > juubyou\ ;
+薬液 > yakueki\ ;
+海将 > kaishou\ ;
+薄物 > usumono\ ;
+原級 > genkyuu\ ;
+重畳 > choujou\ ;
+薄片 > hakuhen\ ;
+黙想 > mokusou\ ;
+量産 > ryousan\ ;
+泥海 > doroumi\ ;
+鼻唄 > hanauta\ ;
+否決 > hiketsu\ ;
+御袋 > ofukuro\ ;
+怪石 > kaiseki\ ;
+水芸 > mizugei\ ;
+重用 > chouyou\ ;
+落首 > rakushu\ ;
+即興 > sokkyou\ ;
+秘密 > himitsu\ ;
+咫尺 > shiseki\ ;
+当量 > touryou\ ;
+収監 > shuukan\ ;
+卵膜 > ranmaku\ ;
+反目 > hanmoku\ ;
+水色 > mizuiro\ ;
+砲身 > houshin\ ;
+収益 > shuueki\ ;
+神権 > shinken\ ;
+原籍 > genseki\ ;
+悲曲 > hikyoku\ ;
+蕃神 > banshin\ ;
+針状 > harijou\ ;
+殉難 > jun''nan\ ;
+律語 > ritsugo\ ;
+銃床 > juushou\ ;
+黙思 > mokushi\ ;
+注水 > chuusui\ ;
+召状 > shoujou\ ;
+黙念 > mokunen\ ;
+恋猫 > koineko\ ;
+適齢 > tekirei\ ;
+武骨 > bukotsu\ ;
+和式 > washiki\ ;
+虜囚 > ryoshuu\ ;
+流感 > ryuukan\ ;
+銚子 > choushi\ ;
+禁教 > kinkyou\ ;
+単葉 > tan''you\ ;
+黙従 > mokujuu\ ;
+金玉 > kintama\ ;
+銀幕 > ginmaku\ ;
+薪水 > shinsui\ ;
+矢面 > yaomote\ ;
+税収 > zeishuu\ ;
+稲作 > inasaku\ ;
+洋服 > youfuku\ ;
+祭服 > saifuku\ ;
+性的 > seiteki\ ;
+収用 > shuuyou\ ;
+印肉 > in''niku\ ;
+性癖 > seiheki\ ;
+酒興 > shukyou\ ;
+弁駁 > benpaku\ ;
+蘭学 > rangaku\ ;
+名流 > meiryuu\ ;
+恵沢 > keitaku\ ;
+形跡 > keiseki\ ;
+同流 > douryuu\ ;
+重犯 > chouhan\ ;
+砂鉄 > satetsu\ ;
+性病 > seibyou\ ;
+告文 > kokubun\ ;
+心臓 > shinzou\ ;
+弔電 > chouden\ ;
+落雷 > rakurai\ ;
+双璧 > souheki\ ;
+悪方 > akugata\ ;
+鉱床 > koushou\ ;
+合流 > gouryuu\ ;
+落雁 > rakugan\ ;
+流弾 > ryuudan\ ;
+社歴 > shareki\ ;
+私宅 > shitaku\ ;
+落陽 > rakuyou\ ;
+重爆 > juubaku\ ;
+確答 > kakutou\ ;
+鳩首 > kyuushu\ ;
+私学 > shigaku\ ;
+参画 > sankaku\ ;
+勧農 > kan''nou\ ;
+原票 > genpyou\ ;
+正風 > shoufuu\ ;
+急用 > kyuuyou\ ;
+黒帯 > kuroobi\ ;
+動量 > douryou\ ;
+哨兵 > shouhei\ ;
+銀将 > ginshou\ ;
+叙爵 > joshaku\ ;
+心胆 > shintan\ ;
+情慾 > jouyoku\ ;
+北西 > hokusei\ ;
+浴場 > yokujou\ ;
+形象 > keishou\ ;
+気色 > kishoku\ ;
+心肝 > shinkan\ ;
+忠純 > chuujun\ ;
+磐石 > banjaku\ ;
+票数 > hyousuu\ ;
+口火 > kuchibi\ ;
+叔父 > shukufu\ ;
+反独 > handoku\ ;
+私娼 > shishou\ ;
+泥棒 > dorobou\ ;
+秋声 > shuusei\ ;
+神明 > shinmei\ ;
+汁粉 > shiruko\ ;
+弱酸 > jakusan\ ;
+海国 > kaikoku\ ;
+蔵相 > zoushou\ ;
+千草 > chigusa\ ;
+勘進 > kanshin\ ;
+博聞 > hakubun\ ;
+含有 > gan''yuu\ ;
+反物 > tanmono\ ;
+原石 > genseki\ ;
+卜者 > bokusha\ ;
+鳥類 > chourui\ ;
+称号 > shougou\ ;
+弁難 > ben''nan\ ;
+即納 > sokunou\ ;
+社業 > shagyou\ ;
+気脈 > kimyaku\ ;
+号泣 > goukyuu\ ;
+礼楽 > reigaku\ ;
+神政 > shinsei\ ;
+短針 > tanshin\ ;
+母親 > hahaoya\ ;
+酷税 > kokuzei\ ;
+移出 > ishutsu\ ;
+徳育 > tokuiku\ ;
+磁石 > jishaku\ ;
+残酷 > zankoku\ ;
+法楽 > houraku\ ;
+反照 > hanshou\ ;
+消去 > shoukyo\ ;
+醜男 > buotoko\ ;
+破裂 > haretsu\ ;
+水精 > suishou\ ;
+周年 > shuunen\ ;
+蔑称 > besshou\ ;
+消印 > keshiin\ ;
+同業 > dougyou\ ;
+私塾 > shijuku\ ;
+勧賞 > kanshou\ ;
+悪戯 > itazura\ ;
+動軸 > doujiku\ ;
+浅学 > sengaku\ ;
+碧空 > hekikuu\ ;
+劈頭 > hekitou\ ;
+厚相 > koushou\ ;
+力闘 > rikitou\ ;
+石造 > sekizou\ ;
+油気 > aburake\ ;
+蘭国 > rankoku\ ;
+心緒 > shincho\ ;
+可決 > kaketsu\ ;
+勇進 > yuushin\ ;
+即答 > sokutou\ ;
+弱輩 > jakuhai\ ;
+鉄心 > tesshin\ ;
+毛虫 > kemushi\ ;
+弔銃 > choujuu\ ;
+参照 > sanshou\ ;
+恋河 > koikawa\ ;
+配給 > haikyuu\ ;
+同格 > doukaku\ ;
+注文 > chuumon\ ;
+叱正 > shissei\ ;
+薬方 > yakuhou\ ;
+活字 > katsuji\ ;
+原由 > gen''yuu\ ;
+哀別 > aibetsu\ ;
+徒花 > adabana\ ;
+週齡 > shuurei\ ;
+礼服 > reifuku\ ;
+選集 > senshuu\ ;
+恋水 > koimizu\ ;
+哀切 > aisetsu\ ;
+合格 > goukaku\ ;
+愁嘆 > shuutan\ ;
+礦業 > kougyou\ ;
+海原 > unabara\ ;
+麻屑 > asakuzu\ ;
+古池 > furuike\ ;
+鶏肉 > keiniku\ ;
+法服 > houfuku\ ;
+勘責 > kanseki\ ;
+愚劣 > guretsu\ ;
+消光 > shoukou\ ;
+単級 > tankyuu\ ;
+名木 > meiboku\ ;
+短軸 > tanjiku\ ;
+勇躍 > yuuyaku\ ;
+醜状 > shuujou\ ;
+各校 > kakukou\ ;
+叢氷 > souhyou\ ;
+恋死 > koijini\ ;
+勧誘 > kan''yuu\ ;
+悪徳 > akutoku\ ;
+気絶 > kizetsu\ ;
+黒壇 > kokutan\ ;
+心算 > shinzan\ ;
+沈澱 > chinden\ ;
+強豪 > kyougou\ ;
+悪役 > akuyaku\ ;
+劈開 > hekikai\ ;
+悪形 > akugata\ ;
+心筋 > shinkin\ ;
+古歌 > furuuta\ ;
+落選 > rakusen\ ;
+沈潜 > chinsen\ ;
+神慮 > shinryo\ ;
+副題 > fukudai\ ;
+式部 > shikibu\ ;
+弓道 > kyuudou\ ;
+正銘 > shoumei\ ;
+卜筮 > bokuzei\ ;
+呂律 > roretsu\ ;
+葉身 > youshin\ ;
+徐脈 > jomyaku\ ;
+感傷 > kanshou\ ;
+碧眼 > hekigan\ ;
+後腹 > atobara\ ;
+洋弓 > youkyuu\ ;
+瞬間 > shunkan\ ;
+短足 > tansoku\ ;
+示教 > shikyou\ ;
+卿相 > keishou\ ;
+歴遊 > rekiyuu\ ;
+沈滞 > chintai\ ;
+同族 > douzoku\ ;
+剳青 > irezumi\ ;
+彬蔚 > hinutsu\ ;
+禅寺 > zendera\ ;
+後脚 > atoashi\ ;
+思潮 > shichou\ ;
+浮力 > furyoku\ ;
+磨滅 > mametsu\ ;
+死軸 > shijiku\ ;
+正金 > shoukin\ ;
+流域 > ryuuiki\ ;
+禅宗 > zenshuu\ ;
+鶴科 > tsuruka\ ;
+藩学 > hangaku\ ;
+恭敬 > kyoukei\ ;
+汎用 > han''you\ ;
+急減 > kyuugen\ ;
+神性 > shinsei\ ;
+悔悛 > kaishun\ ;
+禅学 > zengaku\ ;
+叔母 > shukubo\ ;
+式辞 > shikiji\ ;
+秀吟 > shuugin\ ;
+過食 > kashoku\ ;
+原爆 > genbaku\ ;
+鳥銃 > choujuu\ ;
+前髪 > maegami\ ;
+咀嚼 > soshaku\ ;
+租借 > soshaku\ ;
+殺虫 > satchuu\ ;
+勤行 > gongyou\ ;
+悖徳 > haitoku\ ;
+毒草 > dokusou\ ;
+卵白 > ranpaku\ ;
+秋分 > shuubun\ ;
+参洛 > sanraku\ ;
+咬傷 > koushou\ ;
+律義 > richigi\ ;
+秋冷 > shuurei\ ;
+強要 > kyouyou\ ;
+金棒 > kanabou\ ;
+薄明 > hakumei\ ;
+座骨 > zakotsu\ ;
+剣難 > ken''nan\ ;
+徴税 > chouzei\ ;
+復答 > fukutou\ ;
+勅諭 > chokuyu\ ;
+労賃 > rouchin\ ;
+弱視 > jakushi\ ;
+合掌 > gasshou\ ;
+勅語 > chokugo\ ;
+短調 > tanchou\ ;
+司教 > shikyou\ ;
+沈殿 > chinden\ ;
+鵬翼 > houyoku\ ;
+勅許 > chokkyo\ ;
+短評 > tanpyou\ ;
+秘仏 > hibutsu\ ;
+急死 > kyuushi\ ;
+強行 > kyoukou\ ;
+性欲 > seiyoku\ ;
+海亀 > umigame\ ;
+毒腺 > dokusen\ ;
+史料 > shiryou\ ;
+氷田 > hyouden\ ;
+心眼 > shingan\ ;
+邁進 > maishin\ ;
+古本 > furubon\ ;
+確然 > kakuzen\ ;
+洋学 > yougaku\ ;
+役者 > yakusha\ ;
+惰力 > daryoku\ ;
+反様 > kaisama\ ;
+民福 > minpuku\ ;
+前額 > zengaku\ ;
+海中 > kaichuu\ ;
+後続 > kouzoku\ ;
+古曲 > kokyoku\ ;
+遅霜 > osojimo\ ;
+周回 > shuukai\ ;
+洛外 > rakugai\ ;
+半神 > hanshin\ ;
+当落 > touraku\ ;
+酒癖 > shuheki\ ;
+邪説 > jasetsu\ ;
+欠除 > ketsujo\ ;
+氏神 > ujigami\ ;
+金曜 > kin''you\ ;
+段落 > danraku\ ;
+座食 > zashoku\ ;
+呻吟 > shingin\ ;
+鉄壁 > teppeki\ ;
+秋作 > akisaku\ ;
+千秋 > senshuu\ ;
+区立 > kuritsu\ ;
+忠犬 > chuuken\ ;
+各所 > kakusho\ ;
+劇道 > gekidou\ ;
+惨劇 > sangeki\ ;
+恋文 > koibumi\ ;
+銃傷 > juushou\ ;
+法悦 > houetsu\ ;
+知覚 > chikaku\ ;
+邦訳 > houyaku\ ;
+水球 > suikyuu\ ;
+私信 > shishin\ ;
+力走 > rikisou\ ;
+浦人 > urabito\ ;
+反核 > hankaku\ ;
+幽鳥 > yuuchou\ ;
+薬師 > yakushi\ ;
+神宝 > shinpou\ ;
+神官 > shinkan\ ;
+祝宴 > shukuen\ ;
+銀側 > gingawa\ ;
+取替 > torikae\ ;
+弔詞 > choushi\ ;
+占用 > sen''you\ ;
+前陳 > zenchin\ ;
+石蝋 > sekirou\ ;
+死角 > shikaku\ ;
+蓬生 > yomogiu\ ;
+流動 > ryuudou\ ;
+厄災 > yakusai\ ;
+叫換 > kyoukan\ ;
+怠業 > taigyou\ ;
+歴訪 > rekihou\ ;
+同心 > doushin\ ;
+原注 > genchuu\ ;
+逆鱗 > gekirin\ ;
+知行 > chigyou\ ;
+性格 > seikaku\ ;
+同役 > douyaku\ ;
+酸漿 > hoozuki\ ;
+吉徴 > kitchou\ ;
+歴覧 > rekiran\ ;
+水牢 > mizurou\ ;
+水牛 > suigyuu\ ;
+合従 > gasshou\ ;
+半白 > hanpaku\ ;
+鳥貝 > torigai\ ;
+池沼 > chishou\ ;
+配球 > haikyuu\ ;
+幽鬱 > yuuutsu\ ;
+水爆 > suibaku\ ;
+北米 > hokubei\ ;
+卓用 > takuyou\ ;
+蕃椒 > banshou\ ;
+剽軽 > hyoukin\ ;
+注射 > chuusha\ ;
+徴用 > chouyou\ ;
+酔狂 > suikyou\ ;
+咎人 > toganin\ ;
+葉蜂 > habachi\ ;
+心猿 > shin''en\ ;
+徳用 > tokuyou\ ;
+恰幅 > kappuku\ ;
+迷鳥 > meichou\ ;
+通風 > tsuufuu\ ;
+十目 > juumoku\ ;
+薄情 > hakujou\ ;
+正調 > seichou\ ;
+同席 > douseki\ ;
+参朝 > sanchou\ ;
+真黒 > makkuro\ ;
+劣角 > rekkaku\ ;
+薬害 > yakugai\ ;
+恢復 > kaifuku\ ;
+週間 > shuukan\ ;
+禄命 > rokumei\ ;
+古拙 > kosetsu\ ;
+刻限 > kokugen\ ;
+収斂 > shuuren\ ;
+神変 > shinpen\ ;
+氷点 > hyouten\ ;
+弁証 > benshou\ ;
+氷炭 > hyoutan\ ;
+歎賞 > tanshou\ ;
+吸塵 > kyuujin\ ;
+君寵 > kunchou\ ;
+干魚 > hoshiuo\ ;
+収支 > shuushi\ ;
+収攬 > shuuran\ ;
+各店 > kakuten\ ;
+卓球 > takkyuu\ ;
+恐慌 > kyoukou\ ;
+口承 > koushou\ ;
+厳格 > genkaku\ ;
+薄志 > hakushi\ ;
+禀告 > rinkoku\ ;
+周到 > shuutou\ ;
+汗水 > asemizu\ ;
+北端 > hokutan\ ;
+単独 > tandoku\ ;
+各市 > kakushi\ ;
+反撃 > hangeki\ ;
+流体 > ryuutai\ ;
+黒人 > kokujin\ ;
+彼程 > arehodo\ ;
+社宅 > shataku\ ;
+流会 > ryuukai\ ;
+半球 > hankyuu\ ;
+遊郭 > yuukaku\ ;
+道辺 > michibe\ ;
+店長 > tenchou\ ;
+恒心 > koushin\ ;
+武術 > bujutsu\ ;
+残菊 > zangiku\ ;
+名将 > meishou\ ;
+没我 > botsuga\ ;
+同小 > doushou\ ;
+流亡 > ryuubou\ ;
+初音 > hatsune\ ;
+都立 > toritsu\ ;
+后宮 > koukyuu\ ;
+別離 > betsuri\ ;
+従的 > juuteki\ ;
+命中 > meichuu\ ;
+破竹 > hachiku\ ;
+蒼白 > souhaku\ ;
+水滴 > suiteki\ ;
+量感 > ryoukan\ ;
+法学 > hougaku\ ;
+劇論 > gekiron\ ;
+卒爾 > sotsuji\ ;
+劇談 > gekidan\ ;
+思料 > shiryou\ ;
+硬球 > koukyuu\ ;
+力行 > ryokkou\ ;
+同宗 > doushuu\ ;
+蕃族 > banzoku\ ;
+禁則 > kinsoku\ ;
+選評 > senpyou\ ;
+礫岩 > rekigan\ ;
+各層 > kakusou\ ;
+別院 > betsuin\ ;
+同学 > dougaku\ ;
+磁極 > jikyoku\ ;
+通関 > tsuukan\ ;
+勝者 > shousha\ ;
+劇詩 > gekishi\ ;
+干飯 > hoshiii\ ;
+鉄則 > tessoku\ ;
+遅速 > chisoku\ ;
+碧水 > hekisui\ ;
+石臼 > ishiusu\ ;
+年額 > nengaku\ ;
+強肩 > kyouken\ ;
+台帳 > daichou\ ;
+水深 > suishin\ ;
+氷海 > hyoukai\ ;
+泰国 > taikoku\ ;
+別間 > betsuma\ ;
+汁気 > shiruke\ ;
+洛内 > rakunai\ ;
+毎秒 > maibyou\ ;
+微熱 > binetsu\ ;
+水浴 > suiyoku\ ;
+惑乱 > wakuran\ ;
+落葉 > rakuyou\ ;
+加虐 > kagyaku\ ;
+強者 > kyousha\ ;
+古式 > koshiki\ ;
+蒸留 > jouryuu\ ;
+重心 > juushin\ ;
+半熟 > hanjuku\ ;
+水流 > suiryuu\ ;
+真髄 > shinzui\ ;
+前進 > zenshin\ ;
+前週 > zenshuu\ ;
+原木 > genboku\ ;
+重役 > juuyaku\ ;
+叛心 > hanshin\ ;
+勤続 > kinzoku\ ;
+逼迫 > hippaku\ ;
+半焼 > hanshou\ ;
+神品 > shinpin\ ;
+厚板 > atsuita\ ;
+没後 > botsugo\ ;
+泥坊 > dorobou\ ;
+弱者 > jakusha\ ;
+卵殻 > rankaku\ ;
+金平 > kinpira\ ;
+危気 > abunage\ ;
+急所 > kyuusho\ ;
+殻竿 > karasao\ ;
+醇朴 > junboku\ ;
+取得 > shutoku\ ;
+即死 > sokushi\ ;
+鴇色 > tokiiro\ ;
+台尻 > daijiri\ ;
+君国 > kunkoku\ ;
+性慾 > seiyoku\ ;
+追随 > tsuizui\ ;
+勲章 > kunshou\ ;
+進退 > shintai\ ;
+連量 > renryou\ ;
+前身 > zenshin\ ;
+原料 > genryou\ ;
+死臭 > shishuu\ ;
+邑落 > yuuraku\ ;
+副詞 > fukushi\ ;
+合壁 > gappeki\ ;
+前蹤 > zenshou\ ;
+史学 > shigaku\ ;
+反応 > han''nou\ ;
+出額 > debitai\ ;
+刹那 > setsuna\ ;
+年長 > nenchou\ ;
+反復 > hanpuku\ ;
+出頭 > shuttou\ ;
+切除 > setsujo\ ;
+葭簀 > yoshizu\ ;
+凶類 > kyourui\ ;
+碇泊 > teihaku\ ;
+急患 > kyuukan\ ;
+前足 > maeashi\ ;
+吟唱 > ginshou\ ;
+洋傘 > yougasa\ ;
+研究 > kenkyuu\ ;
+進軍 > shingun\ ;
+性急 > seikyuu\ ;
+禁中 > kinchuu\ ;
+神剣 > shinken\ ;
+酒毒 > shudoku\ ;
+神前 > shinzen\ ;
+金属 > kinzoku\ ;
+急性 > kyuusei\ ;
+葦簾 > yoshizu\ ;
+薬品 > yakuhin\ ;
+沈思 > chinshi\ ;
+南洋 > nan''you\ ;
+同国 > doukoku\ ;
+死肉 > shiniku\ ;
+性徴 > seichou\ ;
+平鑿 > heisaku\ ;
+葦簀 > yoshizu\ ;
+勝算 > shousan\ ;
+金将 > kinshou\ ;
+思惑 > omowaku\ ;
+鳶色 > tobiiro\ ;
+石綿 > sekimen\ ;
+落胆 > rakutan\ ;
+鳥葬 > chousou\ ;
+危極 > kikyoku\ ;
+沢山 > takusan\ ;
+得点 > tokuten\ ;
+叉庫 > azekura\ ;
+酷暑 > kokusho\ ;
+双幅 > soufuku\ ;
+当確 > toukaku\ ;
+刺身 > sashimi\ ;
+広量 > kouryou\ ;
+各地 > kakuchi\ ;
+薄墨 > usuzumi\ ;
+泊地 > hakuchi\ ;
+厨房 > chuubou\ ;
+叛将 > hanshou\ ;
+各国 > kakkoku\ ;
+葦笛 > ashibue\ ;
+重宝 > chouhou\ ;
+量子 > ryoushi\ ;
+幕電 > makuden\ ;
+剥製 > hakusei\ ;
+醜態 > shuutai\ ;
+功臣 > koushin\ ;
+短絡 > tanraku\ ;
+薬包 > yakuhou\ ;
+民泊 > minpaku\ ;
+社告 > shakoku\ ;
+弁膜 > benmaku\ ;
+進貢 > shinkou\ ;
+常駐 > jouchuu\ ;
+醜悪 > shuuaku\ ;
+決心 > kesshin\ ;
+砕石 > saiseki\ ;
+正腹 > seifuku\ ;
+鳩舎 > kyuusha\ ;
+薬剤 > yakuzai\ ;
+比率 > hiritsu\ ;
+合唱 > gasshou\ ;
+勾留 > kouryuu\ ;
+別辞 > betsuji\ ;
+弊習 > heishuu\ ;
+役牛 > ekigyuu\ ;
+逍遥 > shouyou\ ;
+沼地 > numachi\ ;
+逍遙 > shouyou\ ;
+莫連 > bakuren\ ;
+法名 > houmyou\ ;
+廷臣 > teishin\ ;
+石筍 > sekijun\ ;
+神体 > shintai\ ;
+収容 > shuuyou\ ;
+悠久 > yuukyuu\ ;
+治国 > chikoku\ ;
+初速 > shosoku\ ;
+名号 > myougou\ ;
+心棒 > shinbou\ ;
+神仙 > shinsen\ ;
+進講 > shinkou\ ;
+法博 > houhaku\ ;
+神人 > shinjin\ ;
+逆運 > gyakuun\ ;
+眉雪 > bisetsu\ ;
+選良 > senryou\ ;
+凸鏡 > tokkyou\ ;
+蒸溜 > jouryuu\ ;
+合口 > aikuchi\ ;
+社則 > shasoku\ ;
+欝血 > ukketsu\ ;
+水晶 > suishou\ ;
+荒駒 > aragoma\ ;
+名匠 > meishou\ ;
+永日 > eijitsu\ ;
+殺生 > sesshou\ ;
+即断 > sokudan\ ;
+分針 > funshin\ ;
+千歳 > chitose\ ;
+分量 > bunryou\ ;
+名勝 > meishou\ ;
+別路 > betsuro\ ;
+法力 > houriki\ ;
+比熱 > hinetsu\ ;
+勤皇 > kin''nou\ ;
+強硬 > kyoukou\ ;
+法則 > housoku\ ;
+進言 > shingen\ ;
+廃虚 > haikyo\ ;
+忿怒 > fun''nu\ ;
+送迎 > sougei\ ;
+迅雷 > jinrai\ ;
+志操 > shisou\ ;
+通貨 > tsuuka\ ;
+名刺 > meishi\ ;
+同前 > douzen\ ;
+礼典 > reiten\ ;
+前衛 > zen''ei\ ;
+矢筈 > yahazu\ ;
+金坑 > kinkou\ ;
+原形 > genkei\ ;
+復権 > fukken\ ;
+前行 > zenkou\ ;
+名分 > meibun\ ;
+形状 > keijou\ ;
+列車 > ressha\ ;
+名刀 > meitou\ ;
+廃藩 > haihan\ ;
+配本 > haihon\ ;
+厚志 > koushi\ ;
+薄味 > hakumi\ ;
+社僧 > shasou\ ;
+合剤 > gouzai\ ;
+同処 > dousho\ ;
+法典 > houten\ ;
+社債 > shasai\ ;
+年輪 > nenrin\ ;
+年輩 > nenpai\ ;
+磁心 > jishin\ ;
+分遣 > bunken\ ;
+友好 > yuukou\ ;
+勤番 > kinban\ ;
+石碑 > sekihi\ ;
+合切 > gassai\ ;
+退転 > taiten\ ;
+正編 > seihen\ ;
+反変 > hanpen\ ;
+叱咤 > shitta\ ;
+同党 > doutou\ ;
+幽趣 > yuushu\ ;
+加給 > kakyuu\ ;
+名優 > meiyuu\ ;
+厳封 > genpuu\ ;
+帯電 > taiden\ ;
+律法 > rippou\ ;
+凌雲 > ryouun\ ;
+快感 > kaikan\ ;
+選考 > senkou\ ;
+矢種 > yadane\ ;
+汎愛 > han''ai\ ;
+強盗 > goutou\ ;
+厳寒 > genkan\ ;
+量器 > ryouki\ ;
+名僧 > meisou\ ;
+正統 > seitou\ ;
+遊蕩 > yuutou\ ;
+決定 > kettei\ ;
+蒸民 > joumin\ ;
+弾痕 > dankon\ ;
+重噸 > juuton\ ;
+迂闊 > ukatsu\ ;
+造詣 > zoukei\ ;
+淡々 > tantan\ ;
+厳守 > genshu\ ;
+台名 > taimei\ ;
+厳存 > genson\ ;
+正系 > seikei\ ;
+邪神 > jashin\ ;
+辺陬 > hensuu\ ;
+造言 > zougen\ ;
+逃走 > tousou\ ;
+通語 > tsuugo\ ;
+分載 > bunsai\ ;
+酸性 > sansei\ ;
+相関 > soukan\ ;
+後段 > koudan\ ;
+社会 > shakai\ ;
+通話 > tsuuwa\ ;
+復校 > fukkou\ ;
+同値 > douchi\ ;
+切身 > kirimi\ ;
+君主 > kunshu\ ;
+草鞋 > waraji\ ;
+法例 > hourei\ ;
+河原 > kawara\ ;
+制裁 > seisai\ ;
+南方 > nanpou\ ;
+北海 > hokkai\ ;
+忠愛 > chuuai\ ;
+金員 > kin''in\ ;
+単文 > tanbun\ ;
+確度 > kakudo\ ;
+民望 > minbou\ ;
+薄利 > hakuri\ ;
+社交 > shakou\ ;
+微服 > bifuku\ ;
+求愛 > kyuuai\ ;
+単数 > tansuu\ ;
+必携 > hikkei\ ;
+金品 > kinpin\ ;
+劣等 > rettou\ ;
+盤面 > banmen\ ;
+匠気 > shouki\ ;
+動産 > dousan\ ;
+延納 > en''nou\ ;
+砕片 > saihen\ ;
+真逆 > masaka\ ;
+同体 > doutai\ ;
+河北 > kahoku\ ;
+社主 > shashu\ ;
+南支 > nanshi\ ;
+口吻 > koufun\ ;
+弾琴 > dankin\ ;
+師門 > shimon\ ;
+気早 > kibaya\ ;
+法令 > hourei\ ;
+急場 > kyuuba\ ;
+同伴 > douhan\ ;
+連衡 > renkou\ ;
+口吟 > kougin\ ;
+連行 > renkou\ ;
+法人 > houjin\ ;
+冷静 > reisei\ ;
+返金 > henkin\ ;
+参堂 > sandou\ ;
+快弁 > kaiben\ ;
+忠恕 > chuujo\ ;
+召募 > shoubo\ ;
+合併 > gouhei\ ;
+吐乳 > tonyuu\ ;
+迷走 > meisou\ ;
+正答 > seitou\ ;
+名人 > meijin\ ;
+合体 > gattai\ ;
+薄光 > hakkou\ ;
+蔓延 > man''en\ ;
+当然 > touzen\ ;
+反噬 > hanzei\ ;
+原寸 > gensun\ ;
+同仁 > doujin\ ;
+同人 > dounin\ ;
+典麗 > tenrei\ ;
+向上 > koujou\ ;
+巣鶏 > sudori\ ;
+十本 > juppon\ ;
+廃艦 > haikan\ ;
+江山 > kouzan\ ;
+座薬 > zayaku\ ;
+萎縮 > ishuku\ ;
+重合 > juugou\ ;
+広言 > kougen\ ;
+廃船 > haisen\ ;
+廐肥 > kyuuhi\ ;
+同乗 > doujou\ ;
+応急 > oukyuu\ ;
+金印 > kin''in\ ;
+遊芸 > yuugei\ ;
+残痕 > zankon\ ;
+前著 > zencho\ ;
+菖蒲 > shoubu\ ;
+野原 > nohara\ ;
+決壊 > kekkai\ ;
+原子 > genshi\ ;
+毛氈 > mousen\ ;
+占拠 > senkyo\ ;
+同上 > doujou\ ;
+別製 > bessei\ ;
+弊社 > heisha\ ;
+比況 > hikyou\ ;
+透視 > toushi\ ;
+半数 > hansuu\ ;
+醜女 > shuujo\ ;
+効目 > kikime\ ;
+民政 > minsei\ ;
+鳴禽 > meikin\ ;
+民放 > minpou\ ;
+近郷 > kingou\ ;
+酒手 > sakate\ ;
+返還 > henkan\ ;
+弓矢 > yumiya\ ;
+前菜 > zensai\ ;
+反問 > hanmon\ ;
+処遇 > shoguu\ ;
+心技 > shingi\ ;
+近郊 > kinkou\ ;
+薄倖 > hakkou\ ;
+初見 > shoken\ ;
+欠航 > kekkou\ ;
+盗電 > touden\ ;
+巨鯨 > kyogei\ ;
+沃土 > yokudo\ ;
+巻首 > kanshu\ ;
+出足 > deashi\ ;
+残生 > zansei\ ;
+北欧 > hokuou\ ;
+盗難 > tounan\ ;
+加禄 > karoku\ ;
+号俸 > gouhou\ ;
+死相 > shisou\ ;
+危急 > kikyuu\ ;
+剛臆 > gouoku\ ;
+弾片 > danpen\ ;
+県道 > kendou\ ;
+即応 > sokuou\ ;
+武神 > bushin\ ;
+返送 > hensou\ ;
+復改 > fukkai\ ;
+金剛 > kongou\ ;
+幣貢 > heikou\ ;
+配所 > haisho\ ;
+卵形 > rankei\ ;
+金券 > kinken\ ;
+酔態 > suitai\ ;
+幻視 > genshi\ ;
+巨魁 > kyokai\ ;
+蕃地 > banchi\ ;
+十数 > juusuu\ ;
+汽圧 > kiatsu\ ;
+凡退 > bontai\ ;
+達者 > tassha\ ;
+従来 > juurai\ ;
+選管 > senkan\ ;
+分譲 > bunjou\ ;
+司会 > shikai\ ;
+御料 > goryou\ ;
+円高 > endaka\ ;
+近辺 > kinpen\ ;
+原始 > genshi\ ;
+口内 > kounai\ ;
+出費 > shuppi\ ;
+金冠 > kinkan\ ;
+印形 > ingyou\ ;
+司令 > shirei\ ;
+重刑 > juukei\ ;
+追訴 > tsuiso\ ;
+号令 > gourei\ ;
+加硫 > karyuu\ ;
+剛胆 > goutan\ ;
+金具 > kanagu\ ;
+収受 > shuuju\ ;
+配慮 > hairyo\ ;
+迷論 > meiron\ ;
+毎毎 > maimai\ ;
+追記 > tsuiki\ ;
+睡蓮 > suiren\ ;
+心意 > shin''i\ ;
+割線 > kassen\ ;
+切諌 > sekkan\ ;
+忘年 > bounen\ ;
+即座 > sokuza\ ;
+巻頭 > kantou\ ;
+効用 > kouyou\ ;
+劫盗 > goutou\ ;
+蒲柳 > horyuu\ ;
+恒例 > kourei\ ;
+史伝 > shiden\ ;
+忍従 > ninjuu\ ;
+酷寒 > kokkan\ ;
+市電 > shiden\ ;
+勇猛 > yuumou\ ;
+毬果 > kyuuka\ ;
+荷足 > niashi\ ;
+常道 > joudou\ ;
+分詞 > bunshi\ ;
+治乱 > chiran\ ;
+卵巣 > ransou\ ;
+死産 > shizan\ ;
+死生 > shisei\ ;
+博愛 > hakuai\ ;
+常連 > jouren\ ;
+冒頭 > boutou\ ;
+性向 > seikou\ ;
+帰郷 > kikyou\ ;
+水平 > suihei\ ;
+治世 > chisei\ ;
+引用 > in''you\ ;
+鮮麗 > senrei\ ;
+目釘 > mekugi\ ;
+反動 > handou\ ;
+前腕 > maeude\ ;
+史乗 > shijou\ ;
+分解 > bunkai\ ;
+参向 > sankou\ ;
+右上 > migiue\ ;
+遣米 > kenbei\ ;
+古俗 > kozoku\ ;
+後景 > koukei\ ;
+史上 > shijou\ ;
+厖大 > boudai\ ;
+退行 > taikou\ ;
+可也 > kanari\ ;
+平衡 > heikou\ ;
+座興 > zakyou\ ;
+正眼 > seigan\ ;
+平行 > heikou\ ;
+待望 > taibou\ ;
+磁壁 > jiheki\ ;
+差額 > sagaku\ ;
+残片 > zanpen\ ;
+句作 > kusaku\ ;
+後昆 > koukon\ ;
+正目 > masame\ ;
+矢玉 > yadama\ ;
+十指 > jusshi\ ;
+単性 > tansei\ ;
+原型 > genkei\ ;
+毛根 > moukon\ ;
+市門 > shimon\ ;
+蒸散 > jousan\ ;
+後方 > kouhou\ ;
+配当 > haitou\ ;
+加療 > karyou\ ;
+律旋 > rissen\ ;
+口伝 > kouden\ ;
+酒店 > shuten\ ;
+師道 > shidou\ ;
+底荷 > sokoni\ ;
+刊行 > kankou\ ;
+出訴 > shusso\ ;
+博徒 > bakuto\ ;
+廃線 > haisen\ ;
+砂漠 > sabaku\ ;
+急募 > kyuubo\ ;
+弱火 > yowabi\ ;
+前者 > zensha\ ;
+急務 > kyuumu\ ;
+巨頭 > kyotou\ ;
+葉物 > hamono\ ;
+分袂 > bunbei\ ;
+円頂 > enchou\ ;
+気息 > kisoku\ ;
+後攻 > koukou\ ;
+鳩目 > hatome\ ;
+重体 > juutai\ ;
+厳命 > genmei\ ;
+冒険 > bouken\ ;
+原因 > gen''in\ ;
+内項 > naikou\ ;
+前翅 > zenshi\ ;
+度胸 > dokyou\ ;
+看貫 > kankan\ ;
+卑怯 > hikyou\ ;
+博引 > hakuin\ ;
+機長 > kichou\ ;
+割符 > warifu\ ;
+気性 > kishou\ ;
+十戒 > jikkai\ ;
+友党 > yuutou\ ;
+受信 > jushin\ ;
+目途 > mokuto\ ;
+農道 > noudou\ ;
+石灰 > sekkai\ ;
+民情 > minjou\ ;
+厚地 > atsuji\ ;
+重任 > juunin\ ;
+迎賓 > geihin\ ;
+厳君 > genkun\ ;
+前置 > zenchi\ ;
+重代 > juudai\ ;
+列藩 > reppan\ ;
+鳥目 > torime\ ;
+単弁 > tanben\ ;
+段段 > dandan\ ;
+水屋 > mizuya\ ;
+往昔 > ouseki\ ;
+金主 > kinshu\ ;
+破格 > hakaku\ ;
+千慮 > senryo\ ;
+去勢 > kyosei\ ;
+口上 > koujou\ ;
+当歳 > tousai\ ;
+皮革 > hikaku\ ;
+内面 > naimen\ ;
+巷間 > koukan\ ;
+冷酒 > reishu\ ;
+卵子 > ranshi\ ;
+怪光 > kaikou\ ;
+兼題 > kendai\ ;
+檀那 > dan''na\ ;
+野中 > nonaka\ ;
+造船 > zousen\ ;
+参内 > sandai\ ;
+水害 > suigai\ ;
+徹底 > tettei\ ;
+気弱 > kiyowa\ ;
+叛乱 > hanran\ ;
+御慶 > gyokei\ ;
+県警 > kenkei\ ;
+帝道 > teidou\ ;
+別荘 > bessou\ ;
+碁席 > goseki\ ;
+初葉 > shoyou\ ;
+彼方 > kanata\ ;
+盟邦 > meihou\ ;
+快報 > kaihou\ ;
+厭厭 > iyaiya\ ;
+水子 > mizugo\ ;
+再開 > saikai\ ;
+遠称 > enshou\ ;
+北方 > hoppou\ ;
+内陣 > naijin\ ;
+半径 > hankei\ ;
+葛湯 > kuzuyu\ ;
+鮮魚 > sengyo\ ;
+冷遇 > reiguu\ ;
+半影 > han''ei\ ;
+反例 > hanrei\ ;
+巣雛 > suhina\ ;
+微弱 > bijaku\ ;
+郷村 > gouson\ ;
+硬性 > kousei\ ;
+酒屋 > sakaya\ ;
+公館 > koukan\ ;
+前編 > zenpen\ ;
+退蔵 > taizou\ ;
+凝議 > gyougi\ ;
+前線 > zensen\ ;
+歯状 > shijou\ ;
+川面 > kawamo\ ;
+原品 > genpin\ ;
+引照 > inshou\ ;
+占居 > senkyo\ ;
+全館 > zenkan\ ;
+厳刑 > genkei\ ;
+近詠 > kin''ei\ ;
+蒙昧 > moumai\ ;
+残滓 > zanshi\ ;
+沙丘 > sakyuu\ ;
+死点 > shiten\ ;
+相貌 > soubou\ ;
+送葬 > sousou\ ;
+白魔 > hakuma\ ;
+卜居 > bokkyo\ ;
+碍子 > gaishi\ ;
+毎晩 > maiban\ ;
+厳冬 > gentou\ ;
+死灰 > shikai\ ;
+友人 > yuujin\ ;
+益金 > ekikin\ ;
+労災 > rousai\ ;
+反乱 > hanran\ ;
+南岸 > nangan\ ;
+着荷 > chakka\ ;
+友交 > yuukou\ ;
+葦毛 > ashige\ ;
+次第 > shidai\ ;
+厚味 > atsumi\ ;
+兵難 > heinan\ ;
+即夜 > sokuya\ ;
+形木 > katagi\ ;
+師資 > shishi\ ;
+南山 > nanzan\ ;
+志士 > shishi\ ;
+看視 > kanshi\ ;
+近視 > kinshi\ ;
+巌頭 > gantou\ ;
+茶道 > chadou\ ;
+次章 > jishou\ ;
+具陳 > guchin\ ;
+怪人 > kaijin\ ;
+登高 > toukou\ ;
+盤踞 > bankyo\ ;
+兵隊 > heitai\ ;
+連署 > rensho\ ;
+正犯 > seihan\ ;
+単射 > tansha\ ;
+参会 > sankai\ ;
+劇画 > gekiga\ ;
+全音 > zen''on\ ;
+卵塔 > rantou\ ;
+党首 > toushu\ ;
+過称 > kashou\ ;
+性交 > seikou\ ;
+十干 > jikkan\ ;
+英領 > eiryou\ ;
+卑屬 > hizoku\ ;
+巨鐘 > oogane\ ;
+横領 > ouryou\ ;
+卑属 > hizoku\ ;
+石油 > sekiyu\ ;
+廻状 > kaijou\ ;
+前篇 > zenpen\ ;
+達磨 > daruma\ ;
+原動 > gendou\ ;
+南宋 > nansou\ ;
+公電 > kouden\ ;
+弱気 > yowaki\ ;
+全面 > zenmen\ ;
+御幸 > miyuki\ ;
+徘徊 > haikai\ ;
+郵政 > yuusei\ ;
+半島 > hantou\ ;
+卑小 > hishou\ ;
+白馬 > hakuba\ ;
+相談 > soudan\ ;
+欝積 > usseki\ ;
+征戦 > seisen\ ;
+割目 > wareme\ ;
+菌糸 > kinshi\ ;
+全霊 > zenrei\ ;
+後患 > koukan\ ;
+市道 > shidou\ ;
+連繋 > renkei\ ;
+当板 > ateita\ ;
+参与 > san''yo\ ;
+後悔 > koukai\ ;
+参上 > sanjou\ ;
+沈下 > chinka\ ;
+真薯 > shinjo\ ;
+函蓋 > kangai\ ;
+原初 > gensho\ ;
+前端 > zentan\ ;
+快哉 > kaisai\ ;
+気学 > kigaku\ ;
+水域 > suiiki\ ;
+微少 > bishou\ ;
+微小 > bishou\ ;
+全隊 > zentai\ ;
+送致 > souchi\ ;
+連綿 > renmen\ ;
+創痕 > soukon\ ;
+欲目 > yokume\ ;
+得度 > tokudo\ ;
+従弟 > juutei\ ;
+部族 > buzoku\ ;
+蕃人 > banjin\ ;
+菜種 > natane\ ;
+直訴 > jikiso\ ;
+原典 > genten\ ;
+公開 > koukai\ ;
+鱗茎 > rinkei\ ;
+入院 > nyuuin\ ;
+短毛 > tanmou\ ;
+幻肢 > genshi\ ;
+荒誕 > koutan\ ;
+初老 > shorou\ ;
+酷吏 > kokuri\ ;
+連累 > renrui\ ;
+死海 > shikai\ ;
+蕃主 > banshu\ ;
+師訓 > shikun\ ;
+権限 > kengen\ ;
+勘検 > kanken\ ;
+遺物 > ibutsu\ ;
+准許 > junkyo\ ;
+酒場 > sakaba\ ;
+全開 > zenkai\ ;
+殉死 > junshi\ ;
+原像 > genzou\ ;
+延焼 > enshou\ ;
+目許 > memoto\ ;
+水嚢 > suinou\ ;
+当方 > touhou\ ;
+出荷 > shukka\ ;
+真菰 > makomo\ ;
+元首 > genshu\ ;
+南天 > nanten\ ;
+目角 > mekado\ ;
+再選 > saisen\ ;
+廃盤 > haiban\ ;
+硫安 > ryuuan\ ;
+機軸 > kijiku\ ;
+勢望 > seibou\ ;
+権門 > kenmon\ ;
+銘々 > meimei\ ;
+勘案 > kan''an\ ;
+後年 > kounen\ ;
+医局 > ikyoku\ ;
+再遊 > saiyuu\ ;
+砲手 > houshu\ ;
+白露 > hakuro\ ;
+花鳥 > kachou\ ;
+追肥 > tsuihi\ ;
+勘校 > kankou\ ;
+念写 > nensha\ ;
+知歯 > chishi\ ;
+帆走 > hansou\ ;
+往復 > oufuku\ ;
+石榴 > zakuro\ ;
+白雲 > hakuun\ ;
+再送 > saisou\ ;
+光頭 > koutou\ ;
+律師 > risshi\ ;
+愈々 > iyoiyo\ ;
+兵鋒 > heihou\ ;
+出花 > debana\ ;
+歩測 > hosoku\ ;
+先頭 > sentou\ ;
+広縁 > hiroen\ ;
+浪々 > rourou\ ;
+力演 > rikien\ ;
+邪欲 > jayoku\ ;
+心土 > shindo\ ;
+微妙 > bimyou\ ;
+径庭 > keitei\ ;
+別紙 > besshi\ ;
+応召 > oushou\ ;
+出船 > defune\ ;
+酷刑 > kokkei\ ;
+快刀 > kaitou\ ;
+石棺 > sekkan\ ;
+先鞭 > senben\ ;
+巧遅 > kouchi\ ;
+座礁 > zashou\ ;
+選炭 > sentan\ ;
+弁済 > bensai\ ;
+半天 > hanten\ ;
+志向 > shikou\ ;
+監視 > kanshi\ ;
+出臍 > debeso\ ;
+彷徨 > houkou\ ;
+半夜 > han''ya\ ;
+制空 > seikuu\ ;
+原人 > genjin\ ;
+再転 > saiten\ ;
+形成 > keisei\ ;
+市販 > shihan\ ;
+州都 > shuuto\ ;
+光電 > kouden\ ;
+硝安 > shouan\ ;
+初経 > shokei\ ;
+半壊 > hankai\ ;
+弔歌 > chouka\ ;
+近著 > kincho\ ;
+落款 > rakkan\ ;
+切羽 > kiriha\ ;
+硝子 > garasu\ ;
+幹線 > kansen\ ;
+都心 > toshin\ ;
+確保 > kakuho\ ;
+歳歳 > saisai\ ;
+充電 > juuden\ ;
+池亭 > chitei\ ;
+内輪 > uchiwa\ ;
+運用 > un''you\ ;
+盛観 > seikan\ ;
+千夜 > sen''ya\ ;
+序章 > joshou\ ;
+制禦 > seigyo\ ;
+分署 > bunsho\ ;
+形態 > keitai\ ;
+硬変 > kouhen\ ;
+先陣 > senjin\ ;
+気圧 > kiatsu\ ;
+公金 > koukin\ ;
+鳥渡 > chotto\ ;
+遅番 > osoban\ ;
+力泳 > rikiei\ ;
+正油 > shouyu\ ;
+印匣 > inbako\ ;
+即効 > sokkou\ ;
+荷船 > nibune\ ;
+広範 > kouhan\ ;
+石木 > ishiki\ ;
+江上 > koujou\ ;
+即功 > sokkou\ ;
+碩儒 > sekiju\ ;
+著書 > chosho\ ;
+川辺 > kawabe\ ;
+鳩派 > hatoha\ ;
+母御 > hahago\ ;
+鄭声 > teisei\ ;
+砲弾 > houdan\ ;
+当所 > tousho\ ;
+盛装 > seisou\ ;
+芳香 > houkou\ ;
+快便 > kaiben\ ;
+水勢 > suisei\ ;
+都庁 > tochou\ ;
+六部 > rokubu\ ;
+止水 > shisui\ ;
+鮮鋭 > sen''ei\ ;
+酒名 > shumei\ ;
+盛衰 > seisui\ ;
+民団 > mindan\ ;
+芸風 > geifuu\ ;
+弦材 > genzai\ ;
+初等 > shotou\ ;
+公邸 > koutei\ ;
+印刻 > inkoku\ ;
+割烹 > kappou\ ;
+蓮台 > rendai\ ;
+正殿 > seiden\ ;
+冠詞 > kanshi\ ;
+再販 > saihan\ ;
+切線 > sessen\ ;
+剣状 > kenjou\ ;
+卵円 > ran''en\ ;
+酷似 > kokuji\ ;
+別種 > besshu\ ;
+睥睨 > heigei\ ;
+葉柄 > youhei\ ;
+著明 > chomei\ ;
+従姉 > juushi\ ;
+殺意 > satsui\ ;
+辞表 > jihyou\ ;
+公選 > kousen\ ;
+従妹 > juumai\ ;
+利福 > rifuku\ ;
+占取 > senshu\ ;
+歯槽 > shisou\ ;
+真義 > shingi\ ;
+毎年 > mainen\ ;
+残暑 > zansho\ ;
+公道 > koudou\ ;
+正正 > seisei\ ;
+平米 > heibei\ ;
+配合 > haigou\ ;
+水分 > suibun\ ;
+真美 > shinbi\ ;
+幄舎 > akusha\ ;
+魚鱗 > gyorin\ ;
+矢柄 > yagara\ ;
+入部 > nyuubu\ ;
+石斧 > sekifu\ ;
+冗談 > joudan\ ;
+水冷 > suirei\ ;
+兵車 > heisha\ ;
+矮星 > waisei\ ;
+蒼天 > souten\ ;
+全道 > zendou\ ;
+幼童 > youdou\ ;
+轟轟 > gougou\ ;
+睡眠 > suimin\ ;
+巨資 > kyoshi\ ;
+葉書 > hagaki\ ;
+公辺 > kouhen\ ;
+包帯 > houtai\ ;
+厄介 > yakkai\ ;
+民営 > min''ei\ ;
+勇断 > yuudan\ ;
+動揺 > douyou\ ;
+殿御 > tonogo\ ;
+水兵 > suihei\ ;
+十回 > jukkai\ ;
+十四 > juuyon\ ;
+巨財 > kyozai\ ;
+協和 > kyouwa\ ;
+幽窓 > yuusou\ ;
+川路 > kawaji\ ;
+巷談 > koudan\ ;
+目蓋 > mabuta\ ;
+勇敢 > yuukan\ ;
+巨象 > kyozou\ ;
+権道 > kendou\ ;
+冗言 > jougen\ ;
+短文 > tanbun\ ;
+欠片 > kakera\ ;
+連盟 > renmei\ ;
+幼稚 > youchi\ ;
+後天 > kouten\ ;
+具足 > gusoku\ ;
+鱗粉 > rinpun\ ;
+化学 > kagaku\ ;
+遵法 > junpou\ ;
+白金 > hakkin\ ;
+公転 > kouten\ ;
+適温 > tekion\ ;
+南半 > nanhan\ ;
+逸球 > ikkyuu\ ;
+配剤 > haizai\ ;
+皇道 > koudou\ ;
+歯根 > shikon\ ;
+卒去 > sokkyo\ ;
+再誕 > saitan\ ;
+先鋭 > sen''ei\ ;
+選民 > senmin\ ;
+市街 > shigai\ ;
+嵩高 > suukou\ ;
+先鋒 > senpou\ ;
+真綿 > mawata\ ;
+欣然 > kinzen\ ;
+後塵 > koujin\ ;
+全軍 > zengun\ ;
+送稿 > soukou\ ;
+冷蔵 > reizou\ ;
+配分 > haibun\ ;
+復員 > fukuin\ ;
+出納 > suitou\ ;
+処置 > shochi\ ;
+徘回 > haikai\ ;
+迷答 > meitou\ ;
+発酵 > hakkou\ ;
+再訪 > saihou\ ;
+後報 > kouhou\ ;
+草葉 > kusaba\ ;
+彩層 > saisou\ ;
+年税 > nenzei\ ;
+再訂 > saitei\ ;
+苛酷 > kakoku\ ;
+強打 > kyouda\ ;
+邪教 > jakyou\ ;
+矢文 > yabumi\ ;
+内談 > naidan\ ;
+氏名 > shimei\ ;
+具象 > gushou\ ;
+真紅 > shinku\ ;
+卓効 > takkou\ ;
+艦齢 > kanrei\ ;
+勤怠 > kintai\ ;
+即今 > sokkon\ ;
+連番 > renban\ ;
+徴募 > choubo\ ;
+邦文 > houbun\ ;
+当店 > touten\ ;
+欠点 > ketten\ ;
+弊村 > heison\ ;
+当年 > tounen\ ;
+年祭 > nensai\ ;
+彼女 > kanojo\ ;
+死斑 > shihan\ ;
+荷縄 > ninawa\ ;
+死文 > shibun\ ;
+荏苒 > jinzen\ ;
+歳晩 > saiban\ ;
+包容 > houyou\ ;
+農芸 > nougei\ ;
+年礼 > nenrei\ ;
+弔旗 > chouki\ ;
+退社 > taisha\ ;
+半半 > hanhan\ ;
+別盃 > beppai\ ;
+過激 > kageki\ ;
+内訓 > naikun\ ;
+皇軍 > kougun\ ;
+内訌 > naikou\ ;
+水仙 > suisen\ ;
+草草 > sousou\ ;
+却下 > kyakka\ ;
+動態 > doutai\ ;
+再製 > saisei\ ;
+歳星 > saisei\ ;
+強慢 > gouman\ ;
+巧言 > kougen\ ;
+希薄 > kihaku\ ;
+単元 > tangen\ ;
+遠浅 > tooasa\ ;
+轆轤 > rokuro\ ;
+毒婦 > dokufu\ ;
+歳旦 > saitan\ ;
+南光 > nankou\ ;
+十台 > juudai\ ;
+配偶 > haiguu\ ;
+内観 > naikan\ ;
+発送 > hassou\ ;
+御告 > otsuge\ ;
+内覧 > nairan\ ;
+遠洋 > en''you\ ;
+弾性 > dansei\ ;
+内見 > naiken\ ;
+形容 > keiyou\ ;
+部属 > buzoku\ ;
+正東 > seitou\ ;
+強情 > goujou\ ;
+千千 > chidji\ ;
+近縁 > kin''en\ ;
+真箇 > shinko\ ;
+魚類 > gyorui\ ;
+勇戦 > yuusen\ ;
+鶏口 > keikou\ ;
+常置 > jouchi\ ;
+卒先 > sossen\ ;
+出端 > debana\ ;
+遠沈 > enchin\ ;
+正本 > seihon\ ;
+正木 > masaki\ ;
+全貌 > zenbou\ ;
+部将 > bushou\ ;
+先遣 > senken\ ;
+硫化 > ryuuka\ ;
+遡求 > sokyuu\ ;
+眼瞼 > ganken\ ;
+半分 > hanpun\ ;
+分社 > bunsha\ ;
+正書 > seisho\ ;
+入費 > nyuuhi\ ;
+短所 > tansho\ ;
+午刻 > gokoku\ ;
+登載 > tousai\ ;
+弊方 > heihou\ ;
+占住 > senjuu\ ;
+巡覧 > junran\ ;
+気儘 > kimama\ ;
+忌中 > kichuu\ ;
+内装 > naisou\ ;
+勧工 > kankou\ ;
+役場 > yakuba\ ;
+魔風 > makaze\ ;
+出窓 > demado\ ;
+後嗣 > koushi\ ;
+目脂 > meyani\ ;
+巡視 > junshi\ ;
+助教 > jokyou\ ;
+酒仙 > shusen\ ;
+鶏卵 > keiran\ ;
+真竹 > madake\ ;
+看経 > kankin\ ;
+建材 > kenzai\ ;
+発車 > hassha\ ;
+民兵 > minpei\ ;
+復刊 > fukkan\ ;
+半円 > han''en\ ;
+勘当 > kandou\ ;
+弊政 > heisei\ ;
+匈奴 > kyoudo\ ;
+酒乱 > shuran\ ;
+盲者 > mousha\ ;
+廃液 > haieki\ ;
+矇昧 > moumai\ ;
+左表 > sahyou\ ;
+遅滞 > chitai\ ;
+刀礼 > tourei\ ;
+弁明 > benmei\ ;
+心事 > shinji\ ;
+勘弁 > kanben\ ;
+欲気 > yokuke\ ;
+短慮 > tanryo\ ;
+千分 > senbun\ ;
+劣敗 > reppai\ ;
+毎夕 > maiyuu\ ;
+砲声 > housei\ ;
+光輪 > kourin\ ;
+卒倒 > sottou\ ;
+単体 > tantai\ ;
+百足 > mukade\ ;
+欧洲 > oushuu\ ;
+勅意 > chokui\ ;
+公論 > kouron\ ;
+十分 > juppun\ ;
+魚雷 > gyorai\ ;
+先輩 > senpai\ ;
+平目 > hirame\ ;
+郷士 > goushi\ ;
+此方 > konata\ ;
+剣法 > kenpou\ ;
+微傷 > bishou\ ;
+茶茶 > chacha\ ;
+正方 > seihou\ ;
+武教 > bukyou\ ;
+剪毛 > senmou\ ;
+辛苦 > shinku\ ;
+配乗 > haijou\ ;
+市葬 > shisou\ ;
+矜持 > kyouji\ ;
+農耕 > noukou\ ;
+卑俗 > hizoku\ ;
+千円 > sen''en\ ;
+初生 > shosei\ ;
+公認 > kounin\ ;
+巡行 > junkou\ ;
+区劃 > kukaku\ ;
+正文 > seibun\ ;
+公試 > koushi\ ;
+気侭 > kimama\ ;
+歌格 > kakaku\ ;
+幽界 > yuukai\ ;
+正数 > seisuu\ ;
+後味 > atoaji\ ;
+砲塔 > houtou\ ;
+硝化 > shouka\ ;
+兼行 > kenkou\ ;
+強度 > kyoudo\ ;
+彫塑 > chouso\ ;
+十全 > juuzen\ ;
+公許 > koukyo\ ;
+発走 > hassou\ ;
+南京 > nankin\ ;
+知慮 > chiryo\ ;
+死所 > shisho\ ;
+幼生 > yousei\ ;
+道民 > doumin\ ;
+半値 > han''ne\ ;
+公言 > kougen\ ;
+悶々 > monmon\ ;
+返答 > hentou\ ;
+茶色 > chairo\ ;
+権謀 > kenbou\ ;
+鶏冠 > tosaka\ ;
+百貨 > hyakka\ ;
+廻文 > kaibun\ ;
+勁悍 > keikan\ ;
+元軍 > gengun\ ;
+十億 > juuoku\ ;
+引手 > hikite\ ;
+形声 > keisei\ ;
+魔障 > mashou\ ;
+切目 > kireme\ ;
+引戸 > hikido\ ;
+軟風 > nanpuu\ ;
+幸甚 > koujin\ ;
+待命 > taimei\ ;
+眼界 > gankai\ ;
+茶臼 > chausu\ ;
+選書 > sensho\ ;
+英訳 > eiyaku\ ;
+転音 > ten''on\ ;
+残影 > zan''ei\ ;
+後半 > kouhan\ ;
+芳醇 > houjun\ ;
+年産 > nensan\ ;
+年生 > nensei\ ;
+千倍 > senbai\ ;
+廃残 > haizan\ ;
+良馬 > ryouba\ ;
+従前 > juuzen\ ;
+平生 > heizei\ ;
+郷土 > kyoudo\ ;
+遊民 > yuumin\ ;
+葛布 > kuzufu\ ;
+廃止 > haishi\ ;
+輪転 > rinten\ ;
+帆船 > hobune\ ;
+十倍 > juubai\ ;
+知性 > chisei\ ;
+剛毛 > goumou\ ;
+毎回 > maikai\ ;
+母国 > bokoku\ ;
+民人 > minjin\ ;
+真砂 > masago\ ;
+助手 > sukete\ ;
+止揚 > shiyou\ ;
+幽玄 > yuugen\ ;
+芸道 > geidou\ ;
+先賢 > senken\ ;
+加振 > kashin\ ;
+盛者 > jousha\ ;
+役員 > yakuin\ ;
+微乳 > binyuu\ ;
+県税 > kenzei\ ;
+帳簿 > choubo\ ;
+邪心 > jashin\ ;
+優遇 > yuuguu\ ;
+石工 > sekkou\ ;
+内蔵 > naizou\ ;
+船齢 > senrei\ ;
+民主 > minshu\ ;
+初犯 > shohan\ ;
+後刻 > gokoku\ ;
+殿堂 > dendou\ ;
+復交 > fukkou\ ;
+庶民 > shomin\ ;
+瞬時 > shunji\ ;
+優退 > yuutai\ ;
+凹目 > kubome\ ;
+従兄 > juukei\ ;
+劣才 > ressai\ ;
+千仭 > senjin\ ;
+分界 > bunkai\ ;
+千仞 > senjin\ ;
+輪距 > rinkyo\ ;
+艦首 > kanshu\ ;
+返礼 > henrei\ ;
+刀痕 > toukon\ ;
+初版 > shohan\ ;
+鳴戸 > naruto\ ;
+十代 > juudai\ ;
+勘定 > kanjou\ ;
+内蒙 > naimou\ ;
+目糞 > mekuso\ ;
+座浴 > zayoku\ ;
+標語 > hyougo\ ;
+白話 > hakuwa\ ;
+判然 > hanzen\ ;
+砂子 > sunago\ ;
+弁才 > bensai\ ;
+悠々 > yuuyuu\ ;
+権衡 > kenkou\ ;
+労役 > roueki\ ;
+茗荷 > myouga\ ;
+目籠 > mekago\ ;
+着物 > kimono\ ;
+車風 > shafuu\ ;
+標記 > hyouki\ ;
+鬚髯 > shuzen\ ;
+前段 > zendan\ ;
+遮断 > shadan\ ;
+茎葉 > keiyou\ ;
+適時 > tekiji\ ;
+師範 > shihan\ ;
+草紙 > soushi\ ;
+落後 > rakugo\ ;
+盲管 > moukan\ ;
+十三 > juusan\ ;
+十万 > juuman\ ;
+毒味 > dokumi\ ;
+葉巻 > hamaki\ ;
+市肆 > shishi\ ;
+張子 > hariko\ ;
+石屋 > ishiya\ ;
+御主 > onushi\ ;
+都合 > tsugou\ ;
+幻燈 > gentou\ ;
+御中 > onchuu\ ;
+花輪 > hanawa\ ;
+弁慶 > benkei\ ;
+免許 > menkyo\ ;
+干犯 > kanpan\ ;
+剪枝 > senshi\ ;
+花軸 > kajiku\ ;
+幽然 > yuuzen\ ;
+凹田 > kubota\ ;
+苦衷 > kuchuu\ ;
+発見 > hakken\ ;
+兎角 > tokaku\ ;
+当地 > touchi\ ;
+干物 > himono\ ;
+平版 > heihan\ ;
+苦行 > kugyou\ ;
+鯨脂 > geishi\ ;
+再興 > saikou\ ;
+落度 > ochido\ ;
+砲台 > houdai\ ;
+再臨 > sairin\ ;
+砲口 > houkou\ ;
+真田 > sanada\ ;
+助役 > joyaku\ ;
+毎号 > maigou\ ;
+劣性 > ressei\ ;
+目笊 > mezaru\ ;
+歯形 > hagata\ ;
+弾奏 > dansou\ ;
+包含 > hougan\ ;
+廃校 > haikou\ ;
+後便 > koubin\ ;
+選挙 > senkyo\ ;
+匍匐 > hofuku\ ;
+郊外 > kougai\ ;
+強姦 > goukan\ ;
+白衣 > byakue\ ;
+剖検 > bouken\ ;
+巨艦 > kyokan\ ;
+進歩 > shinpo\ ;
+凡眼 > bongan\ ;
+僧門 > soumon\ ;
+返盃 > henpai\ ;
+工芸 > kougei\ ;
+軍隊 > guntai\ ;
+近県 > kinken\ ;
+落差 > rakusa\ ;
+幻灯 > gentou\ ;
+巨船 > kyosen\ ;
+鱗状 > rinjou\ ;
+内航 > naikou\ ;
+先見 > senken\ ;
+軍陣 > gunjin\ ;
+輪講 > rinkou\ ;
+残存 > zanzon\ ;
+着火 > chakka\ ;
+平然 > heizen\ ;
+切片 > seppen\ ;
+発行 > hakkou\ ;
+北光 > hokkou\ ;
+武徳 > butoku\ ;
+眉目 > bimoku\ ;
+眈眈 > tantan\ ;
+眼点 > ganten\ ;
+動天 > douten\ ;
+功徳 > kudoku\ ;
+後任 > kounin\ ;
+廃材 > haizai\ ;
+内臓 > naizou\ ;
+後件 > kouken\ ;
+艦隊 > kantai\ ;
+苗裔 > byouei\ ;
+加役 > kayaku\ ;
+選手 > senshu\ ;
+後代 > koudai\ ;
+鱗片 > rinpen\ ;
+弊店 > heiten\ ;
+真理 > shinri\ ;
+刃物 > hamono\ ;
+儕輩 > saihai\ ;
+皮膜 > himaku\ ;
+後人 > koujin\ ;
+役儀 > yakugi\ ;
+真珠 > shinju\ ;
+否々 > iyaiya\ ;
+剪断 > sendan\ ;
+公葬 > kousou\ ;
+砂場 > sunaba\ ;
+弁当 > bentou\ ;
+内腔 > naikou\ ;
+逓減 > teigen\ ;
+巡航 > junkou\ ;
+往信 > oushin\ ;
+軍門 > gunmon\ ;
+座標 > zahyou\ ;
+正当 > seitou\ ;
+荒神 > koujin\ ;
+魚道 > gyodou\ ;
+死屍 > shishi\ ;
+艇首 > teishu\ ;
+邪宗 > jashuu\ ;
+正弦 > seigen\ ;
+草稿 > soukou\ ;
+勇姿 > yuushi\ ;
+再考 > saikou\ ;
+分煙 > bun''en\ ;
+欠本 > keppon\ ;
+後世 > kousei\ ;
+先行 > senkou\ ;
+軟鋼 > nankou\ ;
+毎分 > maifun\ ;
+制止 > seishi\ ;
+郵券 > yuuken\ ;
+荒磯 > araiso\ ;
+軽輩 > keihai\ ;
+華族 > kazoku\ ;
+形勢 > keisei\ ;
+構造 > kouzou\ ;
+著大 > chodai\ ;
+出物 > demono\ ;
+茅舎 > bousha\ ;
+座業 > zagyou\ ;
+勝因 > shouin\ ;
+白虹 > hakkou\ ;
+皮肉 > hiniku\ ;
+前栽 > senzai\ ;
+高齢 > kourei\ ;
+砲兵 > houhei\ ;
+内聞 > naibun\ ;
+分点 > bunten\ ;
+死守 > shishu\ ;
+底止 > teishi\ ;
+兵船 > heisen\ ;
+別法 > beppou\ ;
+凸版 > toppan\ ;
+八荒 > hakkou\ ;
+通気 > tsuuki\ ;
+加州 > kashuu\ ;
+正帽 > seibou\ ;
+兵舎 > heisha\ ;
+正常 > seijou\ ;
+廻廊 > kairou\ ;
+速歩 > sokuho\ ;
+干潟 > higata\ ;
+軽躁 > keisou\ ;
+遥拝 > youhai\ ;
+遊星 > yuusei\ ;
+芸談 > geidan\ ;
+過料 > karyou\ ;
+勇壮 > yuusou\ ;
+勇士 > yuushi\ ;
+監禁 > kankin\ ;
+巧者 > kousha\ ;
+優諚 > yuujou\ ;
+鳩座 > hatoza\ ;
+短大 > tandai\ ;
+左翼 > sayoku\ ;
+茶筅 > chasen\ ;
+前板 > maeita\ ;
+僻遠 > hekien\ ;
+高麗 > kourai\ ;
+身頃 > migoro\ ;
+石塊 > sekkai\ ;
+前条 > zenjou\ ;
+入荷 > nyuuka\ ;
+崇高 > suukou\ ;
+割拠 > kakkyo\ ;
+強固 > kyouko\ ;
+歓待 > kantai\ ;
+平準 > heijun\ ;
+船首 > senshu\ ;
+弟妹 > teimai\ ;
+痛飲 > tsuuin\ ;
+劾奏 > gaisou\ ;
+干満 > kanman\ ;
+前書 > zensho\ ;
+延年 > en''nen\ ;
+病魔 > byouma\ ;
+広汎 > kouhan\ ;
+利欲 > riyoku\ ;
+郭公 > kakkou\ ;
+公舎 > kousha\ ;
+庭木 > niwaki\ ;
+楽音 > gakuon\ ;
+残塁 > zanrui\ ;
+入苑 > nyuuen\ ;
+若葉 > wakaba\ ;
+准看 > junkan\ ;
+再編 > saihen\ ;
+凍瘡 > tousou\ ;
+常用 > jouyou\ ;
+勲功 > kunkou\ ;
+弊害 > heigai\ ;
+此岸 > shigan\ ;
+全船 > zensen\ ;
+平淡 > heitan\ ;
+全般 > zenpan\ ;
+前景 > zenkei\ ;
+遠戚 > enseki\ ;
+殺到 > sattou\ ;
+出火 > shukka\ ;
+目盛 > memori\ ;
+若菜 > wakana\ ;
+帆立 > hotate\ ;
+郡制 > gunsei\ ;
+郵便 > yuubin\ ;
+転送 > tensou\ ;
+遷延 > sen''en\ ;
+武将 > bushou\ ;
+目白 > mejiro\ ;
+庶政 > shosei\ ;
+盪盪 > toutou\ ;
+初段 > shodan\ ;
+当初 > tousho\ ;
+船頭 > sendou\ ;
+当分 > toubun\ ;
+週期 > shuuki\ ;
+郎君 > roukun\ ;
+弘大 > koudai\ ;
+近状 > kinjou\ ;
+巨編 > kyohen\ ;
+残在 > zanzon\ ;
+花見 > hanami\ ;
+毀傷 > kishou\ ;
+内線 > naisen\ ;
+巧緻 > kouchi\ ;
+欠損 > kesson\ ;
+内緒 > naisho\ ;
+遷幸 > senkou\ ;
+刑法 > keihou\ ;
+鳴子 > naruko\ ;
+前文 > zenbun\ ;
+舷頭 > gentou\ ;
+武学 > bugaku\ ;
+遣悶 > kenmon\ ;
+出潮 > deshio\ ;
+席画 > sekiga\ ;
+逆毛 > sakage\ ;
+適応 > tekiou\ ;
+魚貝 > gyobai\ ;
+若芽 > wakame\ ;
+転載 > tensai\ ;
+冷眼 > reigan\ ;
+勤勉 > kinben\ ;
+励声 > reisei\ ;
+櫛比 > shippi\ ;
+送水 > sousui\ ;
+勤労 > kinrou\ ;
+市税 > shizei\ ;
+砲丸 > hougan\ ;
+母乳 > bonyuu\ ;
+転転 > tenten\ ;
+達成 > tassei\ ;
+内紛 > naifun\ ;
+勿体 > mottai\ ;
+勘合 > kangou\ ;
+茶碗 > chawan\ ;
+軍配 > gunbai\ ;
+平水 > heisui\ ;
+弘報 > kouhou\ ;
+鳥屋 > toriya\ ;
+款待 > kantai\ ;
+平民 > heimin\ ;
+平氏 > heishi\ ;
+百花 > hyakka\ ;
+連枝 > renshi\ ;
+母上 > hahaue\ ;
+動向 > doukou\ ;
+疾駆 > shikku\ ;
+函渠 > kankyo\ ;
+農産 > nousan\ ;
+刑死 > keishi\ ;
+楼門 > roumon\ ;
+公署 > kousho\ ;
+瞑想 > meisou\ ;
+年歯 > nenshi\ ;
+造林 > zourin\ ;
+船隊 > sentai\ ;
+遠心 > enshin\ ;
+苛苛 > iraira\ ;
+弱味 > yowami\ ;
+適度 > tekido\ ;
+削摩 > sakuma\ ;
+輪蔵 > rinzou\ ;
+弾劾 > dangai\ ;
+達意 > tatsui\ ;
+底本 > teihon\ ;
+到来 > tourai\ ;
+発艦 > hakkan\ ;
+刎死 > funshi\ ;
+軍道 > gundou\ ;
+創建 > souken\ ;
+前提 > zentei\ ;
+死地 > shichi\ ;
+冬着 > fuyugi\ ;
+造本 > zouhon\ ;
+看点 > kanten\ ;
+欣懐 > kinkai\ ;
+薄々 > usuusu\ ;
+前掲 > zenkei\ ;
+冬眠 > toumin\ ;
+発航 > hakkou\ ;
+勝利 > shouri\ ;
+巨篇 > kyohen\ ;
+登臨 > tourin\ ;
+車道 > shadou\ ;
+強化 > kyouka\ ;
+正妻 > seisai\ ;
+辛目 > karame\ ;
+動勢 > dousei\ ;
+痴鈍 > chidon\ ;
+著名 > chomei\ ;
+残品 > zanpin\ ;
+庸才 > yousai\ ;
+動労 > dourou\ ;
+軒輊 > kenchi\ ;
+光芒 > koubou\ ;
+帯状 > obijou\ ;
+苦肉 > kuniku\ ;
+鳳声 > housei\ ;
+連星 > rensei\ ;
+皇考 > koukou\ ;
+目玉 > medama\ ;
+高騰 > koutou\ ;
+茶盆 > chabon\ ;
+郎党 > roudou\ ;
+布石 > fuseki\ ;
+臥龍 > garyou\ ;
+弁天 > benten\ ;
+切歯 > sesshi\ ;
+軽視 > keishi\ ;
+短命 > tanmei\ ;
+巣箱 > subako\ ;
+殿上 > tenjou\ ;
+舷門 > genmon\ ;
+選定 > sentei\ ;
+勇名 > yuumei\ ;
+正大 > seidai\ ;
+髑髏 > dokuro\ ;
+利札 > rifuda\ ;
+遷宮 > senguu\ ;
+転貸 > tentai\ ;
+幽棲 > yuusei\ ;
+歯垢 > shikou\ ;
+弁士 > benshi\ ;
+道念 > dounen\ ;
+瞳孔 > doukou\ ;
+瞳子 > doushi\ ;
+歯型 > hagata\ ;
+当代 > toudai\ ;
+床机 > shougi\ ;
+別杯 > beppai\ ;
+先般 > senpan\ ;
+当今 > toukon\ ;
+勤倹 > kinken\ ;
+剛情 > goujou\ ;
+当人 > tounin\ ;
+遵守 > junshu\ ;
+車輪 > sharin\ ;
+初校 > shokou\ ;
+軍車 > gunsha\ ;
+歌学 > kagaku\ ;
+連敗 > renpai\ ;
+全編 > zenpen\ ;
+底数 > teisuu\ ;
+出水 > demizu\ ;
+全線 > zensen\ ;
+軽装 > keisou\ ;
+身銭 > mizeni\ ;
+艦載 > kansai\ ;
+傍題 > boudai\ ;
+違式 > ishiki\ ;
+広東 > kanton\ ;
+布目 > nunome\ ;
+典範 > tenpan\ ;
+当主 > toushu\ ;
+病院 > byouin\ ;
+送検 > souken\ ;
+峰頭 > houtou\ ;
+知命 > chimei\ ;
+幽栖 > yuusei\ ;
+盗用 > touyou\ ;
+剛性 > gousei\ ;
+欣快 > kinkai\ ;
+当世 > tousei\ ;
+八紘 > hakkou\ ;
+勉励 > benrei\ ;
+速攻 > sokkou\ ;
+出殻 > degara\ ;
+兎肉 > toniku\ ;
+眠気 > nemuke\ ;
+茶番 > chaban\ ;
+真水 > mamizu\ ;
+左程 > sahodo\ ;
+分権 > bunken\ ;
+高風 > koufuu\ ;
+知名 > chimei\ ;
+工程 > koutei\ ;
+幽林 > yuurin\ ;
+返済 > hensai\ ;
+全紙 > zenshi\ ;
+冬瓜 > tougan\ ;
+殊勲 > shukun\ ;
+光背 > kouhai\ ;
+軌跡 > kiseki\ ;
+弱冠 > jakkan\ ;
+弾倉 > dansou\ ;
+知友 > chiyuu\ ;
+加圧 > kaatsu\ ;
+茶瓶 > chabin\ ;
+連携 > renkei\ ;
+初更 > shokou\ ;
+利敵 > riteki\ ;
+判明 > hanmei\ ;
+死命 > shimei\ ;
+適宜 > tekigi\ ;
+殊功 > shukou\ ;
+弥勒 > miroku\ ;
+冥界 > meikai\ ;
+芭蕉 > bashou\ ;
+運弓 > unkyuu\ ;
+剣帯 > kentai\ ;
+退校 > taikou\ ;
+高音 > takane\ ;
+良貨 > ryouka\ ;
+兵端 > heitan\ ;
+短剣 > tanken\ ;
+先聖 > sensei\ ;
+全米 > zenbei\ ;
+盲点 > mouten\ ;
+判断 > handan\ ;
+兵站 > heitan\ ;
+歓声 > kansei\ ;
+欽定 > kintei\ ;
+透明 > toumei\ ;
+重々 > juujuu\ ;
+軟論 > nanron\ ;
+邸内 > teinai\ ;
+皇統 > koutou\ ;
+近海 > kinkai\ ;
+免罪 > menzai\ ;
+廃帝 > haitei\ ;
+先考 > senkou\ ;
+短刀 > tantou\ ;
+勘例 > kanrei\ ;
+公算 > kousan\ ;
+舌頭 > zettou\ ;
+選外 > sengai\ ;
+死去 > shikyo\ ;
+軍資 > gunshi\ ;
+欧州 > oushuu\ ;
+引合 > hikiai\ ;
+幽景 > yuukei\ ;
+遊底 > yuutei\ ;
+知勇 > chiyuu\ ;
+矩則 > kusoku\ ;
+巡礼 > junrei\ ;
+遵奉 > junpou\ ;
+年来 > nenrai\ ;
+初旬 > shojun\ ;
+平板 > heiban\ ;
+儀表 > gihyou\ ;
+歎声 > tansei\ ;
+全篇 > zenpen\ ;
+兵種 > heishu\ ;
+巨砲 > kyohou\ ;
+皆納 > kainou\ ;
+至高 > shikou\ ;
+幽明 > yuumei\ ;
+残党 > zantou\ ;
+次席 > jiseki\ ;
+歌声 > utagoe\ ;
+模索 > mosaku\ ;
+残光 > zankou\ ;
+動体 > doutai\ ;
+元老 > genrou\ ;
+鮮紅 > senkou\ ;
+副官 > fukkan\ ;
+芳草 > housou\ ;
+真横 > mayoko\ ;
+八端 > hattan\ ;
+巧知 > kouchi\ ;
+分校 > bunkou\ ;
+連投 > rentou\ ;
+典礼 > tenrei\ ;
+盗犯 > touhan\ ;
+弾丸 > dangan\ ;
+歌境 > kakyou\ ;
+写生 > shasei\ ;
+残像 > zanzou\ ;
+労動 > roudou\ ;
+歩哨 > hoshou\ ;
+県民 > kenmin\ ;
+勇健 > yuuken\ ;
+冗用 > jouyou\ ;
+剪定 > sentei\ ;
+剣山 > kenzan\ ;
+労功 > roukou\ ;
+連戦 > rensen\ ;
+冷然 > reizen\ ;
+砂丘 > sakyuu\ ;
+動乱 > douran\ ;
+制憲 > seiken\ ;
+弓勢 > yunzei\ ;
+内省 > naisei\ ;
+廃山 > haizan\ ;
+前庭 > zentei\ ;
+平明 > heimei\ ;
+死刑 > shikei\ ;
+創始 > soushi\ ;
+眉毛 > mayuge\ ;
+造成 > zousei\ ;
+巨盗 > kyotou\ ;
+廃屋 > haioku\ ;
+切替 > settai\ ;
+公私 > koushi\ ;
+死処 > shisho\ ;
+逃散 > tousan\ ;
+身軽 > migaru\ ;
+光線 > kousen\ ;
+廣報 > kouhou\ ;
+矢先 > yasaki\ ;
+平方 > heihou\ ;
+軍談 > gundan\ ;
+華客 > kakaku\ ;
+過少 > kashou\ ;
+過小 > kashou\ ;
+年数 > nensuu\ ;
+正味 > shoumi\ ;
+退散 > taisan\ ;
+公社 > kousha\ ;
+芸能 > geinou\ ;
+連想 > rensou\ ;
+再生 > saisei\ ;
+残余 > zan''yo\ ;
+過客 > kakaku\ ;
+遣外 > kengai\ ;
+冠状 > kanjou\ ;
+次将 > jishou\ ;
+弁口 > benkou\ ;
+干支 > kanshi\ ;
+皓礬 > kouban\ ;
+正号 > seigou\ ;
+正史 > seishi\ ;
+苦笑 > kushou\ ;
+全社 > zensha\ ;
+分明 > bunmei\ ;
+弓具 > kyuugu\ ;
+進度 > shindo\ ;
+癌腫 > ganshu\ ;
+劣勢 > ressei\ ;
+労働 > roudou\ ;
+矮人 > waijin\ ;
+廻向 > kaikou\ ;
+荒海 > araumi\ ;
+鳴動 > meidou\ ;
+内界 > naikai\ ;
+座席 > zaseki\ ;
+正南 > seinan\ ;
+芸者 > geisha\ ;
+遊子 > yuushi\ ;
+正午 > shougo\ ;
+内用 > naiyou\ ;
+別懇 > bekkon\ ;
+制御 > seigyo\ ;
+分数 > bunsuu\ ;
+分散 > bunsan\ ;
+優者 > yuusha\ ;
+登第 > toudai\ ;
+歯冠 > shikan\ ;
+再現 > saigen\ ;
+康寧 > kounei\ ;
+公知 > kouchi\ ;
+功労 > kourou\ ;
+欄干 > rankan\ ;
+列挙 > rekkyo\ ;
+前山 > zenzan\ ;
+弥久 > bikyuu\ ;
+発端 > hottan\ ;
+初戦 > shosen\ ;
+軍装 > gunsou\ ;
+別意 > betsui\ ;
+出時 > dedoki\ ;
+連弾 > rendan\ ;
+全知 > zenchi\ ;
+知人 > chijin\ ;
+茫然 > bouzen\ ;
+輔翼 > hoyoku\ ;
+農法 > nouhou\ ;
+歌唱 > kashou\ ;
+利息 > risoku\ ;
+府庁 > fuchou\ ;
+真暗 > makura\ ;
+庶子 > shoshi\ ;
+華奢 > kyasha\ ;
+至難 > shinan\ ;
+凍死 > toushi\ ;
+労使 > roushi\ ;
+廉売 > renbai\ ;
+造形 > zoukei\ ;
+死体 > shitai\ ;
+逢引 > aibiki\ ;
+停頓 > teiton\ ;
+百科 > hyakka\ ;
+遺告 > yuigou\ ;
+函数 > kansuu\ ;
+冷淡 > reitan\ ;
+逆手 > sakate\ ;
+真昼 > mahiru\ ;
+出方 > dekata\ ;
+道士 > doushi\ ;
+前官 > zenkan\ ;
+剣士 > kenshi\ ;
+公益 > koueki\ ;
+船路 > funaji\ ;
+邦人 > houjin\ ;
+疎隔 > sokaku\ ;
+制帽 > seibou\ ;
+加入 > kanyuu\ ;
+再犯 > saihan\ ;
+先端 > sentan\ ;
+農民 > noumin\ ;
+遠国 > ongoku\ ;
+具申 > gushin\ ;
+荷札 > nifuda\ ;
+席次 > sekiji\ ;
+利得 > ritoku\ ;
+全盲 > zenmou\ ;
+死亡 > shibou\ ;
+巨獣 > kyojuu\ ;
+岸頭 > gantou\ ;
+落伍 > rakugo\ ;
+正兵 > seihei\ ;
+全盛 > zensei\ ;
+蹈鞴 > tatara\ ;
+連帯 > rentai\ ;
+速度 > sokudo\ ;
+到底 > toutei\ ;
+免税 > menzei\ ;
+再版 > saihan\ ;
+副因 > fukuin\ ;
+発禁 > hakkin\ ;
+舌鋒 > zeppou\ ;
+造幣 > zouhei\ ;
+道場 > doujou\ ;
+標示 > hyouji\ ;
+廃墟 > haikyo\ ;
+平手 > hirate\ ;
+返杯 > henpai\ ;
+停電 > teiden\ ;
+健闘 > kentou\ ;
+舟運 > shuuun\ ;
+横目 > yokome\ ;
+平成 > heisei\ ;
+凱旋 > gaisen\ ;
+厭々 > iyaiya\ ;
+目次 > mokuji\ ;
+冷泉 > reisen\ ;
+全癒 > zen''yu\ ;
+白磁 > hakuji\ ;
+返本 > henpon\ ;
+別形 > bekkei\ ;
+幻想 > gensou\ ;
+看板 > kanban\ ;
+再燃 > sainen\ ;
+着意 > chakui\ ;
+内状 > naijou\ ;
+別当 > bettou\ ;
+近東 > kintou\ ;
+建具 > tategu\ ;
+近来 > kinrai\ ;
+返書 > hensho\ ;
+序幕 > jomaku\ ;
+側鎖 > sokusa\ ;
+概論 > gairon\ ;
+病躯 > byouku\ ;
+楽譜 > gakufu\ ;
+冷汗 > reikan\ ;
+分担 > buntan\ ;
+辣油 > razeyu\ ;
+高配 > kouhai\ ;
+廷内 > teinai\ ;
+劇化 > gekika\ ;
+冷水 > reisui\ ;
+初志 > shoshi\ ;
+公田 > kouden\ ;
+還元 > kangen\ ;
+逕庭 > keitei\ ;
+利幅 > rihaba\ ;
+公用 > kouyou\ ;
+凡書 > bonsho\ ;
+連峰 > renpou\ ;
+劇務 > gekimu\ ;
+巡狩 > junshu\ ;
+切手 > kirete\ ;
+幻怪 > genkai\ ;
+追慕 > tsuibo\ ;
+武侠 > bukyou\ ;
+発砲 > happou\ ;
+廃坑 > haikou\ ;
+身許 > mimoto\ ;
+適否 > tekihi\ ;
+出掛 > degake\ ;
+円熟 > enjuku\ ;
+全甲 > zenkou\ ;
+近景 > kinkei\ ;
+歌劇 > kageki\ ;
+連山 > renzan\ ;
+高邁 > koumai\ ;
+前奏 > zensou\ ;
+店屋 > miseya\ ;
+処方 > shohou\ ;
+航走 > kousou\ ;
+処断 > shodan\ ;
+遍在 > henzai\ ;
+正使 > seishi\ ;
+刻字 > kokuji\ ;
+別巻 > bekkan\ ;
+冗漫 > jouman\ ;
+概観 > gaikan\ ;
+前夜 > zen''ya\ ;
+建値 > tatene\ ;
+幻影 > gen''ei\ ;
+連射 > rensha\ ;
+前売 > maeuri\ ;
+概要 > gaiyou\ ;
+傍輩 > houbai\ ;
+白眉 > hakubi\ ;
+峡部 > kyoubu\ ;
+制定 > seitei\ ;
+正伝 > seiden\ ;
+軽罪 > keizai\ ;
+番頭 > bantou\ ;
+初年 > shonen\ ;
+述懐 > jukkai\ ;
+辛気 > shinki\ ;
+楽観 > rakkan\ ;
+割合 > wariai\ ;
+楼観 > roukan\ ;
+苦痛 > kutsuu\ ;
+希求 > kikyuu\ ;
+幾年 > ikunen\ ;
+冬毛 > fuyuge\ ;
+先知 > senchi\ ;
+店子 > tanako\ ;
+魚群 > gyogun\ ;
+遡及 > sokyuu\ ;
+退役 > taieki\ ;
+幼年 > younen\ ;
+迂曲 > ukyoku\ ;
+優等 > yuutou\ ;
+軍葬 > gunsou\ ;
+割印 > wariin\ ;
+華商 > kashou\ ;
+利尿 > rinyou\ ;
+兵燹 > heisen\ ;
+延伸 > enshin\ ;
+床屋 > tokoya\ ;
+退廷 > taitei\ ;
+権現 > gongen\ ;
+側部 > sokubu\ ;
+帰朝 > kichou\ ;
+帰服 > kifuku\ ;
+眼底 > gantei\ ;
+退廃 > taihai\ ;
+別居 > bekkyo\ ;
+留飲 > ryuuin\ ;
+刪定 > santei\ ;
+遮光 > shakou\ ;
+前坊 > zenbou\ ;
+軟膏 > nankou\ ;
+欄外 > rangai\ ;
+冠水 > kansui\ ;
+別封 > beppuu\ ;
+眼帯 > gantai\ ;
+平年 > heinen\ ;
+平平 > heihei\ ;
+臆面 > okumen\ ;
+廃品 > haihin\ ;
+迷彩 > meisai\ ;
+市民 > shimin\ ;
+庄屋 > shouya\ ;
+色色 > iroiro\ ;
+高踏 > koutou\ ;
+冠毛 > kanmou\ ;
+巨漢 > kyokan\ ;
+常数 > jousuu\ ;
+創刊 > soukan\ ;
+先登 > sentou\ ;
+前回 > zenkai\ ;
+農林 > nourin\ ;
+平常 > heijou\ ;
+苔癬 > taisen\ ;
+癲癇 > tenkan\ ;
+草根 > soukon\ ;
+登用 > touyou\ ;
+高距 > koukyo\ ;
+判定 > hantei\ ;
+判官 > hangan\ ;
+川瀬 > kawase\ ;
+廷丁 > teitei\ ;
+発生 > hassei\ ;
+農村 > nouson\ ;
+側近 > sokkin\ ;
+盤根 > bankon\ ;
+莚席 > enseki\ ;
+真意 > shin''i\ ;
+魂胆 > kontan\ ;
+列島 > rettou\ ;
+轟然 > gouzen\ ;
+廃合 > haigou\ ;
+別嬪 > beppin\ ;
+欠品 > keppin\ ;
+魚網 > gyomou\ ;
+連奏 > rensou\ ;
+内湯 > uchiyu\ ;
+生麩 > namafu\ ;
+幽居 > yuukyo\ ;
+連夜 > ren''ya\ ;
+巡演 > jun''en\ ;
+分店 > bunten\ ;
+歌会 > utakai\ ;
+内港 > naikou\ ;
+公然 > kouzen\ ;
+巻毛 > makige\ ;
+軍艦 > gunkan\ ;
+連声 > renjou\ ;
+自重 > jichou\ ;
+内済 > naisai\ ;
+先番 > senban\ ;
+遊吟 > yuugin\ ;
+遊君 > yuukun\ ;
+軍船 > gunsen\ ;
+華北 > kahoku\ ;
+草本 > souhon\ ;
+盲断 > moudan\ ;
+着尺 > kijaku\ ;
+艨艟 > moudou\ ;
+返戻 > henrei\ ;
+先生 > sensei\ ;
+剪刀 > sentou\ ;
+偽足 > gisoku\ ;
+草書 > sousho\ ;
+全然 > zenzen\ ;
+列寧 > reenin\ ;
+魚精 > gyosei\ ;
+艦艇 > kantei\ ;
+艦船 > kansen\ ;
+内海 > naikai\ ;
+目方 > mekata\ ;
+凡才 > bonsai\ ;
+凡手 > bonshu\ ;
+光環 > koukan\ ;
+充用 > juuyou\ ;
+輝石 > kiseki\ ;
+魚粉 > gyofun\ ;
+凡戦 > bonsen\ ;
+庸君 > youkun\ ;
+値頃 > negoro\ ;
+凶徒 > kyouto\ ;
+疎通 > sotsuu\ ;
+至近 > shikin\ ;
+幢幡 > douban\ ;
+平屋 > hiraya\ ;
+遅参 > chisan\ ;
+逆子 > sakago\ ;
+白狐 > byakko\ ;
+値鞘 > nezaya\ ;
+出庫 > shukko\ ;
+追尾 > tsuibi\ ;
+刀工 > toukou\ ;
+出府 > shuppu\ ;
+初婚 > shokon\ ;
+出店 > demise\ ;
+内治 > naichi\ ;
+農政 > nousei\ ;
+剛勇 > gouyuu\ ;
+欠勤 > kekkin\ ;
+共演 > kyouen\ ;
+自適 > jiteki\ ;
+凡慮 > bonryo\ ;
+廃刊 > haikan\ ;
+退官 > taikan\ ;
+眼孔 > gankou\ ;
+界面 > kaimen\ ;
+工法 > kouhou\ ;
+遯世 > tonsei\ ;
+平定 > heitei\ ;
+華冑 > kachuu\ ;
+輪番 > rinban\ ;
+干害 > kangai\ ;
+出師 > suishi\ ;
+造型 > zoukei\ ;
+航行 > koukou\ ;
+前名 > zenmei\ ;
+函嶺 > kanrei\ ;
+道元 > dougen\ ;
+癌研 > ganken\ ;
+前号 > zengou\ ;
+判士 > hanshi\ ;
+前史 > zenshi\ ;
+輪生 > rinsei\ ;
+内気 > uchiki\ ;
+傍訓 > boukun\ ;
+眸子 > boushi\ ;
+遅効 > chikou\ ;
+盛暑 > seisho\ ;
+近情 > kinjou\ ;
+廃兵 > haihei\ ;
+免状 > menjou\ ;
+全潰 > zenkai\ ;
+広大 > koudai\ ;
+高論 > kouron\ ;
+帆桁 > hogeta\ ;
+高談 > koudan\ ;
+機業 > kigyou\ ;
+逓増 > teizou\ ;
+幕府 > bakufu\ ;
+席捲 > sekken\ ;
+荷役 > niyaku\ ;
+幻姿 > genshi\ ;
+内殿 > naiden\ ;
+広壮 > kousou\ ;
+傍観 > boukan\ ;
+華僑 > kakyou\ ;
+帝政 > teisei\ ;
+界隈 > kaiwai\ ;
+分封 > bunpou\ ;
+別報 > beppou\ ;
+公準 > koujun\ ;
+傍視 > wakimi\ ;
+前半 > zenpan\ ;
+白煙 > hakuen\ ;
+幽契 > yuukei\ ;
+生鮮 > seisen\ ;
+苔状 > taijou\ ;
+魔笛 > mateki\ ;
+創世 > sousei\ ;
+盆栽 > bonsai\ ;
+高言 > kougen\ ;
+跳馬 > chouba\ ;
+常態 > joutai\ ;
+広場 > hiroba\ ;
+広報 > kouhou\ ;
+山顛 > santen\ ;
+分子 > bunshi\ ;
+自身 > jishin\ ;
+兵法 > heihou\ ;
+停車 > teisha\ ;
+年始 > nenshi\ ;
+高覧 > kouran\ ;
+甘鯛 > amadai\ ;
+近影 > kin''ei\ ;
+広域 > kouiki\ ;
+横溢 > ouitsu\ ;
+冬日 > fuyubi\ ;
+高見 > takami\ ;
+僧綱 > sougou\ ;
+前前 > maemae\ ;
+座卓 > zataku\ ;
+公海 > koukai\ ;
+冠木 > kabuki\ ;
+良縁 > ryouen\ ;
+剛健 > gouken\ ;
+偽証 > gishou\ ;
+過信 > kashin\ ;
+市有 > shiyuu\ ;
+庭前 > teizen\ ;
+優生 > yuusei\ ;
+検車 > kensha\ ;
+店員 > ten''in\ ;
+進化 > shinka\ ;
+樹氷 > juhyou\ ;
+庄園 > shouen\ ;
+自足 > jisoku\ ;
+骨身 > honemi\ ;
+六法 > roppou\ ;
+出家 > shukke\ ;
+干天 > kanten\ ;
+凡庶 > bonsho\ ;
+高裁 > kousai\ ;
+画集 > gashuu\ ;
+公法 > kouhou\ ;
+分娩 > bunben\ ;
+輪状 > rinjou\ ;
+色糸 > iroito\ ;
+画障 > gashou\ ;
+平壌 > heijou\ ;
+山霊 > sanrei\ ;
+写本 > shahon\ ;
+入海 > iriumi\ ;
+蹂躪 > juurin\ ;
+蹂躙 > juurin\ ;
+幕屋 > makuya\ ;
+鬼籍 > kiseki\ ;
+刻印 > kokuin\ ;
+光点 > kouten\ ;
+凡常 > bonjou\ ;
+迷妄 > meimou\ ;
+痛苦 > tsuuku\ ;
+盆景 > bonkei\ ;
+船荷 > funani\ ;
+連吟 > rengin\ ;
+初回 > shokai\ ;
+廃人 > haijin\ ;
+剛体 > goutai\ ;
+車線 > shasen\ ;
+几帳 > kichou\ ;
+全治 > zenchi\ ;
+連名 > renmei\ ;
+連合 > rengou\ ;
+皆済 > kaisai\ ;
+盲想 > mousou\ ;
+刑場 > keijou\ ;
+年報 > nenpou\ ;
+退場 > taijou\ ;
+内検 > naiken\ ;
+再校 > saikou\ ;
+相性 > aishou\ ;
+若湯 > wakayu\ ;
+運休 > unkyuu\ ;
+相思 > soushi\ ;
+公民 > koumin\ ;
+市日 > ichibi\ ;
+花環 > hanawa\ ;
+様相 > yousou\ ;
+華中 > kachuu\ ;
+偸視 > toushi\ ;
+前傾 > zenkei\ ;
+鱈子 > tarako\ ;
+屍骸 > shigai\ ;
+自責 > jiseki\ ;
+分外 > bungai\ ;
+監房 > kanbou\ ;
+布教 > fukyou\ ;
+造反 > zouhan\ ;
+分売 > bunbai\ ;
+凄惨 > seisan\ ;
+盛挙 > seikyo\ ;
+干城 > kanjou\ ;
+軽目 > karume\ ;
+帰心 > kishin\ ;
+茘枝 > reishi\ ;
+相役 > aiyaku\ ;
+市政 > shisei\ ;
+座元 > zamoto\ ;
+再来 > sairai\ ;
+公正 > kousei\ ;
+兼業 > kengou\ ;
+盾座 > tateza\ ;
+冷房 > reibou\ ;
+制動 > seidou\ ;
+艶笑 > enshou\ ;
+相当 > soutou\ ;
+巡検 > junken\ ;
+平坦 > heitan\ ;
+兵権 > heiken\ ;
+冷戦 > reisen\ ;
+百済 > kudara\ ;
+全段 > zendan\ ;
+至論 > shiron\ ;
+船艙 > sensou\ ;
+逝去 > seikyo\ ;
+山間 > yamaai\ ;
+刺刺 > iraira\ ;
+皓歯 > koushi\ ;
+別品 > beppin\ ;
+平均 > heikin\ ;
+山門 > sanmon\ ;
+傭船 > yousen\ ;
+円柱 > enchuu\ ;
+生類 > seirui\ ;
+平地 > heichi\ ;
+連動 > rendou\ ;
+前便 > zenbin\ ;
+至誠 > shisei\ ;
+庸人 > youjin\ ;
+年回 > nenkai\ ;
+退団 > taidan\ ;
+盲従 > moujuu\ ;
+前例 > zenrei\ ;
+冗文 > joubun\ ;
+橋架 > kyouka\ ;
+全欧 > zen''ou\ ;
+軟禁 > nankin\ ;
+速効 > sokkou\ ;
+睾丸 > kougan\ ;
+至言 > shigen\ ;
+巨材 > kyozai\ ;
+光源 > kougen\ ;
+連判 > renpan\ ;
+軒端 > nokiba\ ;
+師弟 > shitei\ ;
+前件 > zenken\ ;
+公権 > kouken\ ;
+屏風 > byoubu\ ;
+相席 > aiseki\ ;
+前代 > zendai\ ;
+生面 > seimen\ ;
+苦汁 > nigari\ ;
+前人 > zenjin\ ;
+切地 > kireji\ ;
+半々 > hanhan\ ;
+遁世 > tonsei\ ;
+至要 > shiyou\ ;
+凶夢 > kyoumu\ ;
+分地 > bunchi\ ;
+看守 > kanshu\ ;
+艶福 > enpuku\ ;
+充満 > juuman\ ;
+若気 > wakage\ ;
+病苦 > byouku\ ;
+全権 > zenken\ ;
+荒廃 > kouhai\ ;
+発泡 > happou\ ;
+産院 > san''in\ ;
+分団 > bundan\ ;
+自註 > jichuu\ ;
+広原 > kougen\ ;
+初号 > shogou\ ;
+席巻 > sekken\ ;
+再敗 > saihai\ ;
+前世 > zensei\ ;
+造兵 > zouhei\ ;
+逸事 > itsuji\ ;
+僻目 > higame\ ;
+傭聘 > youhei\ ;
+鬱積 > usseki\ ;
+巨星 > kyosei\ ;
+刀圭 > toukei\ ;
+冊数 > sassuu\ ;
+幼君 > youkun\ ;
+発汗 > hakkan\ ;
+画鋲 > gabyou\ ;
+出城 > dejiro\ ;
+幼名 > youmei\ ;
+車窓 > shasou\ ;
+小鼻 > kobana\ ;
+内旨 > naishi\ ;
+痛罵 > tsuuba\ ;
+自覚 > jikaku\ ;
+疾苦 > shikku\ ;
+内方 > naihou\ ;
+偽薬 > giyaku\ ;
+病臥 > byouga\ ;
+帽子 > boushi\ ;
+共栄 > kyouei\ ;
+車種 > shashu\ ;
+値遇 > chiguu\ ;
+并呑 > heidon\ ;
+床几 > shougi\ ;
+幾千 > ikusen\ ;
+高著 > koucho\ ;
+農工 > noukou\ ;
+小麦 > komugi\ ;
+検討 > kentou\ ;
+分営 > bun''ei\ ;
+棒鋼 > boukou\ ;
+送呈 > soutei\ ;
+座中 > zachuu\ ;
+内政 > naisei\ ;
+内攻 > naikou\ ;
+并合 > heigou\ ;
+公栽 > kousai\ ;
+修院 > shuuin\ ;
+底値 > sokone\ ;
+帰属 > kizoku\ ;
+工数 > kousuu\ ;
+兵曹 > heisou\ ;
+兵書 > heisho\ ;
+刑名 > keimei\ ;
+軍礼 > gunrei\ ;
+樹木 > jumoku\ ;
+高菜 > takana\ ;
+相対 > soutai\ ;
+連係 > renkei\ ;
+年号 > nengou\ ;
+検視 > kenshi\ ;
+冥想 > meisou\ ;
+花火 > hanabi\ ;
+展開 > tenkai\ ;
+相宿 > aiyado\ ;
+舞舞 > maimai\ ;
+退去 > taikyo\ ;
+全校 > zenkou\ ;
+帯封 > obifuu\ ;
+凍寒 > toukan\ ;
+平原 > heigen\ ;
+県外 > kengai\ ;
+凍害 > tougai\ ;
+山野 > san''ya\ ;
+透写 > tousha\ ;
+制令 > seirei\ ;
+六本 > roppon\ ;
+苦楽 > kuraku\ ;
+帰宅 > kitaku\ ;
+盲射 > mousha\ ;
+疽腫 > soshou\ ;
+横根 > yokone\ ;
+幾分 > ikubun\ ;
+異説 > isetsu\ ;
+魔球 > makyuu\ ;
+凶器 > kyouki\ ;
+初冬 > shotou\ ;
+保革 > hokaku\ ;
+再挙 > saikyo\ ;
+目屎 > mekuso\ ;
+俊馬 > shunme\ ;
+甲鈑 > kouban\ ;
+八本 > happon\ ;
+公有 > kouyuu\ ;
+偏見 > henken\ ;
+府中 > fuchuu\ ;
+目尻 > mejiri\ ;
+其方 > sonata\ ;
+盛年 > seinen\ ;
+小鴨 > kogamo\ ;
+再拝 > saihai\ ;
+退勢 > taisei\ ;
+返報 > henpou\ ;
+連亘 > renkou\ ;
+幽冥 > yuumei\ ;
+載炭 > saitan\ ;
+内探 > naitan\ ;
+権柄 > kenpei\ ;
+小鳥 > kotori\ ;
+年功 > nenkou\ ;
+田野 > den''ya\ ;
+兵数 > heisuu\ ;
+盪尽 > toujin\ ;
+眼前 > ganzen\ ;
+全書 > zensho\ ;
+艦砲 > kanpou\ ;
+店主 > tenshu\ ;
+転生 > tensei\ ;
+足駄 > ashida\ ;
+八景 > hakkei\ ;
+登楼 > tourou\ ;
+保障 > hoshou\ ;
+目安 > meyasu\ ;
+内挿 > naisou\ ;
+概算 > gaisan\ ;
+分厘 > bunrin\ ;
+追加 > tsuika\ ;
+横木 > yokogi\ ;
+優渥 > yuuaku\ ;
+再戦 > saisen\ ;
+帆影 > hokage\ ;
+年初 > nensho\ ;
+腰間 > youkan\ ;
+草屋 > souoku\ ;
+公明 > koumei\ ;
+年刊 > nenkan\ ;
+年分 > nenbun\ ;
+全智 > zenchi\ ;
+逆児 > sakago\ ;
+全景 > zenkei\ ;
+幕営 > bakuei\ ;
+小鰭 > kohada\ ;
+別使 > besshi\ ;
+平分 > heibun\ ;
+相姦 > soukan\ ;
+六方 > roppou\ ;
+判例 > hanrei\ ;
+平凡 > heibon\ ;
+瘋癲 > fuuten\ ;
+幻像 > genzou\ ;
+八方 > happou\ ;
+追分 > oiwake\ ;
+鰥夫 > yamome\ ;
+用金 > youkin\ ;
+魔物 > mamono\ ;
+公文 > koubun\ ;
+眼光 > gankou\ ;
+茶巾 > chakin\ ;
+相好 > sougou\ ;
+刑典 > keiten\ ;
+近在 > kinzai\ ;
+別件 > bekken\ ;
+逓伝 > teiden\ ;
+山辺 > yamabe\ ;
+内所 > naisho\ ;
+略記 > ryakki\ ;
+巧手 > koushu\ ;
+内戦 > naisen\ ;
+真味 > shinmi\ ;
+身空 > misora\ ;
+近因 > kin''in\ ;
+草子 > soushi\ ;
+芋版 > imoban\ ;
+全文 > zenbun\ ;
+巡拝 > junpai\ ;
+産金 > sankin\ ;
+登校 > toukou\ ;
+全数 > zensuu\ ;
+監守 > kanshu\ ;
+工手 > koushu\ ;
+工房 > koubou\ ;
+全敗 > zenpai\ ;
+真否 > shinpi\ ;
+若木 > wakagi\ ;
+列候 > rekkou\ ;
+追儺 > tsuina\ ;
+冷害 > reigai\ ;
+床上 > yukaue\ ;
+偽膜 > gimaku\ ;
+帆布 > honuno\ ;
+凝固 > gyouko\ ;
+途中 > tochuu\ ;
+内憂 > naiyuu\ ;
+俗間 > zokkan\ ;
+促音 > sokuon\ ;
+小骨 > kobone\ ;
+幽体 > yuutai\ ;
+典拠 > tenkyo\ ;
+登板 > touban\ ;
+初代 > shodai\ ;
+刀剣 > touken\ ;
+帳場 > chouba\ ;
+幕吏 > bakuri\ ;
+魚灯 > gyotou\ ;
+膚身 > hadami\ ;
+癖毛 > kusege\ ;
+幸便 > koubin\ ;
+僭王 > sen''ou\ ;
+幣制 > heisei\ ;
+再思 > saishi\ ;
+県営 > ken''ei\ ;
+鮮明 > senmei\ ;
+荒天 > kouten\ ;
+生酒 > kizake\ ;
+分党 > buntou\ ;
+年俸 > nenpou\ ;
+分光 > bunkou\ ;
+刀刃 > toujin\ ;
+幾人 > ikunin\ ;
+脳髄 > nouzui\ ;
+驥足 > kisoku\ ;
+内情 > naijou\ ;
+真北 > makita\ ;
+巨悪 > kyoaku\ ;
+内患 > naikan\ ;
+荊妻 > keisai\ ;
+全損 > zenson\ ;
+刃先 > hasaki\ ;
+山路 > yamaji\ ;
+再征 > saisei\ ;
+駿馬 > shunme\ ;
+産道 > sandou\ ;
+帯域 > taiiki\ ;
+希少 > kishou\ ;
+船窓 > sensou\ ;
+返品 > henpin\ ;
+小首 > kokubi\ ;
+年余 > nen''yo\ ;
+甘酸 > kansan\ ;
+生還 > seikan\ ;
+舷窓 > gensou\ ;
+騒霊 > sourei\ ;
+幅員 > fukuin\ ;
+光来 > kourai\ ;
+至芸 > shigei\ ;
+年会 > nenkai\ ;
+退会 > taikai\ ;
+寡黙 > kamoku\ ;
+刃傷 > ninjou\ ;
+再建 > saikon\ ;
+極秘 > gokuhi\ ;
+逃亡 > toubou\ ;
+退任 > tainin\ ;
+円心 > enshin\ ;
+年令 > nenrei\ ;
+年代 > nendai\ ;
+傍線 > bousen\ ;
+標旗 > hyouki\ ;
+省営 > shouei\ ;
+帰国 > kikoku\ ;
+着丈 > kitake\ ;
+農場 > noujou\ ;
+軽減 > keigen\ ;
+骨董 > kottou\ ;
+荒城 > koujou\ ;
+践踏 > sentou\ ;
+荘園 > shouen\ ;
+療治 > ryouji\ ;
+辺地 > henchi\ ;
+駝鳥 > dachou\ ;
+内径 > naikei\ ;
+腹部 > fukubu\ ;
+出先 > desaki\ ;
+元来 > ganrai\ ;
+真冬 > mafuyu\ ;
+輪栽 > rinsai\ ;
+巨弾 > kyodan\ ;
+元本 > genpon\ ;
+光景 > koukei\ ;
+凶具 > kyougu\ ;
+自若 > jijaku\ ;
+年中 > nenjuu\ ;
+看取 > kanshu\ ;
+発散 > hassan\ ;
+師団 > shidan\ ;
+駱駝 > rakuda\ ;
+内廷 > naitei\ ;
+傍系 > boukei\ ;
+分体 > buntai\ ;
+迎合 > geigou\ ;
+毎々 > maimai\ ;
+修造 > shuzou\ ;
+登攀 > touhan\ ;
+草堂 > soudou\ ;
+干与 > kan''yo\ ;
+分会 > bunkai\ ;
+髀肉 > hiniku\ ;
+機屋 > hataya\ ;
+内庭 > naitei\ ;
+農地 > nouchi\ ;
+公憤 > koufun\ ;
+盛大 > seidai\ ;
+航空 > koukuu\ ;
+市子 > ichiko\ ;
+尊顔 > songan\ ;
+軍犬 > genken\ ;
+先方 > senpou\ ;
+修辞 > shuuji\ ;
+生身 > namami\ ;
+横手 > yokote\ ;
+停船 > teisen\ ;
+県勢 > kensei\ ;
+六感 > rokkan\ ;
+真偽 > shingi\ ;
+航程 > koutei\ ;
+分乗 > bunjou\ ;
+草地 > souchi\ ;
+元旦 > gantan\ ;
+先攻 > senkou\ ;
+処刑 > shokei\ ;
+画調 > gachou\ ;
+冗官 > joukan\ ;
+処分 > shobun\ ;
+軽水 > keisui\ ;
+自腹 > jibara\ ;
+真個 > shinko\ ;
+価額 > kagaku\ ;
+分与 > bun''yo\ ;
+較正 > kousei\ ;
+処処 > shosho\ ;
+芒洋 > bouyou\ ;
+小雪 > koyuki\ ;
+小雨 > kosame\ ;
+巡幸 > junkou\ ;
+導電 > douden\ ;
+兵役 > heieki\ ;
+小雀 > kogara\ ;
+真価 > shinka\ ;
+近刊 > kinkan\ ;
+函人 > kanjin\ ;
+盗塁 > tourui\ ;
+兼帯 > kentai\ ;
+苦手 > nigate\ ;
+対顔 > taigan\ ;
+若手 > wakate\ ;
+巨峰 > kyohou\ ;
+冬場 > fuyuba\ ;
+催眠 > saimin\ ;
+優柔 > yuujuu\ ;
+芸林 > geirin\ ;
+軒灯 > kentou\ ;
+相反 > souhan\ ;
+巨岩 > kyogan\ ;
+帯同 > taidou\ ;
+常勤 > joukin\ ;
+荘司 > shouji\ ;
+公役 > koueki\ ;
+全快 > zenkai\ ;
+内層 > naisou\ ;
+高等 > koutou\ ;
+凍原 > tougen\ ;
+楽界 > gakkai\ ;
+花柳 > karyuu\ ;
+花柱 > kachuu\ ;
+荘厳 > sougon\ ;
+出世 > shusse\ ;
+凶事 > kyouji\ ;
+市外 > shigai\ ;
+痘瘡 > tousou\ ;
+凄味 > sugomi\ ;
+自習 > jishuu\ ;
+凡僧 > bonsou\ ;
+対面 > taimen\ ;
+番茶 > bancha\ ;
+冊子 > soushi\ ;
+異色 > ishoku\ ;
+師友 > shiyuu\ ;
+痘痕 > toukon\ ;
+円寂 > enjaku\ ;
+全形 > zenkei\ ;
+段々 > dandan\ ;
+州崎 > susaki\ ;
+近傍 > kinbou\ ;
+入御 > nyuugo\ ;
+内容 > naiyou\ ;
+内宮 > naiguu\ ;
+公庭 > koutei\ ;
+内定 > naitei\ ;
+市塵 > shijin\ ;
+践言 > sengen\ ;
+芳書 > housho\ ;
+用談 > youdan\ ;
+花木 > kaboku\ ;
+荒原 > kougen\ ;
+公平 > kouhei\ ;
+内孫 > naison\ ;
+市場 > shijou\ ;
+男装 > dansou\ ;
+保身 > hoshin\ ;
+発憤 > happun\ ;
+再婚 > saikon\ ;
+舌端 > zettan\ ;
+全廃 > zenpai\ ;
+先投 > sentou\ ;
+偕老 > kairou\ ;
+全店 > zenten\ ;
+盲動 > moudou\ ;
+対陣 > taijin\ ;
+例題 > reidai\ ;
+帯剣 > taiken\ ;
+帝命 > teimei\ ;
+軟泥 > nandei\ ;
+茅屋 > bouoku\ ;
+入庫 > nyuuko\ ;
+用言 > yougen\ ;
+発意 > hatsui\ ;
+入府 > nyuufu\ ;
+芸文 > geibun\ ;
+凡例 > hanrei\ ;
+専門 > senmon\ ;
+発想 > hassou\ ;
+帯刀 > taitou\ ;
+近体 > kintai\ ;
+苦心 > kushin\ ;
+檀君 > dankun\ ;
+兼官 > kenkan\ ;
+全市 > zenshi\ ;
+尖鋭 > sen''ei\ ;
+全巻 > zenkan\ ;
+尿路 > nyouro\ ;
+県会 > kenkai\ ;
+盤台 > bandai\ ;
+布地 > nunoji\ ;
+至純 > shijun\ ;
+草原 > sougen\ ;
+自縛 > jibaku\ ;
+梅酒 > umeshu\ ;
+元手 > motode\ ;
+県令 > kenrei\ ;
+寝首 > nekubi\ ;
+生誕 > seitan\ ;
+俳諧 > haikai\ ;
+軟水 > nansui\ ;
+近代 > kindai\ ;
+県人 > kenjin\ ;
+盆地 > bonchi\ ;
+再変 > saihen\ ;
+偽称 > gishou\ ;
+軍港 > gunkou\ ;
+党弊 > touhei\ ;
+処世 > shosei\ ;
+冷厳 > reigen\ ;
+臭素 > shuuso\ ;
+内妻 > naisai\ ;
+茄子 > nasubi\ ;
+盟友 > meiyuu\ ;
+盗品 > touhin\ ;
+生計 > seikei\ ;
+舗石 > hoseki\ ;
+自給 > jikyuu\ ;
+返上 > henjou\ ;
+魚梯 > gyotei\ ;
+盛名 > seimei\ ;
+全島 > zentou\ ;
+赭顔 > shagan\ ;
+共寝 > tomone\ ;
+小銭 > kozeni\ ;
+皇帝 > koutei\ ;
+内奏 > naisou\ ;
+近世 > kinsei\ ;
+臨終 > rinjuu\ ;
+常例 > jourei\ ;
+草創 > sousou\ ;
+全岸 > zengan\ ;
+巨大 > kyodai\ ;
+辛味 > karami\ ;
+内外 > naigai\ ;
+若干 > jakkan\ ;
+屍諌 > shikan\ ;
+目先 > mesaki\ ;
+師僧 > shisou\ ;
+常体 > joutai\ ;
+目元 > memoto\ ;
+常住 > joujuu\ ;
+全山 > zenzan\ ;
+農兵 > nouhei\ ;
+傍目 > hatame\ ;
+展観 > tenkan\ ;
+展覧 > tenran\ ;
+甘言 > kangen\ ;
+常会 > joukai\ ;
+工大 > koudai\ ;
+公害 > kougai\ ;
+帥先 > sossen\ ;
+常任 > jounin\ ;
+俯角 > fukaku\ ;
+若布 > wakame\ ;
+帝制 > teisei\ ;
+痴漢 > chikan\ ;
+公定 > koutei\ ;
+軍法 > gunpou\ ;
+小金 > kogane\ ;
+登庸 > touyou\ ;
+全射 > zensha\ ;
+荊冠 > keikan\ ;
+冷剛 > reigou\ ;
+常人 > joujin\ ;
+魚板 > gyoban\ ;
+崩潰 > houkai\ ;
+公子 > koushi\ ;
+僧正 > soujou\ ;
+桑門 > soumon\ ;
+内報 > naihou\ ;
+允恭 > inkyou\ ;
+光彩 > kousai\ ;
+軸木 > jikugi\ ;
+兇徒 > kyouto\ ;
+相伝 > souden\ ;
+足蹴 > ashige\ ;
+帝冠 > teikan\ ;
+併音 > pin''in\ ;
+高目 > takame\ ;
+円域 > en''iki\ ;
+寒風 > kanpuu\ ;
+駅頭 > ekitou\ ;
+傾瀉 > keisha\ ;
+冷凍 > reitou\ ;
+軍民 > gunmin\ ;
+骨粉 > koppun\ ;
+病理 > byouri\ ;
+帰休 > kikyuu\ ;
+帰伏 > kifuku\ ;
+常世 > tokoyo\ ;
+傲然 > gouzen\ ;
+膵臓 > suizou\ ;
+其奴 > soitsu\ ;
+充当 > juutou\ ;
+修補 > shuuho\ ;
+布告 > fukoku\ ;
+皇居 > koukyo\ ;
+舎監 > shakan\ ;
+疱瘡 > housou\ ;
+権官 > kenkan\ ;
+儒教 > jukyou\ ;
+帰京 > kikyou\ ;
+俗議 > zokugi\ ;
+冷光 > reikou\ ;
+相乗 > soujou\ ;
+寝際 > negiwa\ ;
+師伝 > shiden\ ;
+内地 > naichi\ ;
+光年 > kounen\ ;
+的屋 > tekiya\ ;
+益友 > ekiyuu\ ;
+内在 > naizai\ ;
+兵変 > heihen\ ;
+山葵 > wasabi\ ;
+小過 > shouka\ ;
+兵士 > heishi\ ;
+偵知 > teichi\ ;
+疫癘 > ekirei\ ;
+盲人 > moujin\ ;
+皇宮 > kouguu\ ;
+能面 > noumen\ ;
+盛典 > seiten\ ;
+保証 > hoshou\ ;
+検算 > kenzan\ ;
+皇宗 > kousou\ ;
+先師 > senshi\ ;
+先帝 > sentei\ ;
+根雪 > neyuki\ ;
+茅場 > kayaba\ ;
+帰一 > kiitsu\ ;
+皇孫 > kouson\ ;
+侮辱 > bujoku\ ;
+番線 > bansen\ ;
+農会 > noukai\ ;
+俗語 > zokugo\ ;
+目今 > mokkon\ ;
+冥加 > myouga\ ;
+臥竜 > garyou\ ;
+直下 > chokka\ ;
+尸諌 > shikan\ ;
+山菜 > sansai\ ;
+転校 > tenkou\ ;
+輪形 > rinkei\ ;
+俗話 > zokuwa\ ;
+疥癬 > kaisen\ ;
+船灯 > sentou\ ;
+自称 > jishou\ ;
+苦学 > kugaku\ ;
+元帥 > gensui\ ;
+草体 > soutai\ ;
+白寿 > hakuju\ ;
+冥利 > myouri\ ;
+市勢 > shisei\ ;
+体験 > taiken\ ;
+発展 > hatten\ ;
+巡回 > junkai\ ;
+構文 > koubun\ ;
+舷灯 > gentou\ ;
+輪廻 > rin''ne\ ;
+典型 > tenkei\ ;
+山荘 > sansou\ ;
+公売 > koubai\ ;
+馨香 > keikou\ ;
+脱退 > dattai\ ;
+俗解 > zokkai\ ;
+背鰭 > sebire\ ;
+発射 > hassha\ ;
+僚機 > ryouki\ ;
+全天 > zenten\ ;
+校風 > koufuu\ ;
+赤門 > akamon\ ;
+冥冥 > meimei\ ;
+屍蝋 > shirou\ ;
+畝織 > uneori\ ;
+俗見 > zokken\ ;
+倉荷 > kurani\ ;
+芳情 > houjou\ ;
+市制 > shisei\ ;
+首魁 > shukai\ ;
+入夫 > nyuufu\ ;
+全壊 > zenkai\ ;
+生薑 > shouga\ ;
+公報 > kouhou\ ;
+優性 > yuusei\ ;
+兵団 > heidan\ ;
+対遇 > taiguu\ ;
+生蕃 > seiban\ ;
+供進 > gushin\ ;
+免官 > menkan\ ;
+桟道 > sandou\ ;
+先導 > sendou\ ;
+市内 > shinai\ ;
+小路 > shouji\ ;
+軽挙 > keikyo\ ;
+良案 > ryouan\ ;
+容顔 > yougan\ ;
+兼営 > ken''ei\ ;
+円味 > marumi\ ;
+盛会 > seikai\ ;
+円周 > enshuu\ ;
+芸当 > geitou\ ;
+優待 > yuutai\ ;
+甘薯 > kansho\ ;
+内命 > naimei\ ;
+車検 > shaken\ ;
+芳志 > houshi\ ;
+小足 > koashi\ ;
+皇天 > kouten\ ;
+対辺 > taihen\ ;
+超過 > chouka\ ;
+盛代 > seidai\ ;
+苗字 > myouji\ ;
+背骨 > sebone\ ;
+内含 > naigan\ ;
+馬革 > bakaku\ ;
+盟主 > meishu\ ;
+内向 > naikou\ ;
+光子 > koushi\ ;
+香香 > koukou\ ;
+内合 > naigou\ ;
+船渠 > senkyo\ ;
+甘蔗 > kansho\ ;
+巨口 > kyokou\ ;
+公団 > koudan\ ;
+再勤 > saikin\ ;
+市債 > shisai\ ;
+岩穴 > iwaana\ ;
+元寇 > genkou\ ;
+余震 > yoshin\ ;
+全地 > zenchi\ ;
+畏縮 > ishuku\ ;
+冕冠 > benkan\ ;
+茶会 > chakai\ ;
+瑶顔 > yougan\ ;
+低頭 > teitou\ ;
+円卓 > entaku\ ;
+密閉 > mippei\ ;
+山背 > yamase\ ;
+様態 > youtai\ ;
+茶代 > chadai\ ;
+体面 > taimen\ ;
+催涙 > sairui\ ;
+背馳 > haichi\ ;
+共営 > kyouei\ ;
+脱走 > dassou\ ;
+百夜 > momoyo\ ;
+苦境 > kukyou\ ;
+写像 > shazou\ ;
+実験 > jikken\ ;
+入園 > nyuuen\ ;
+茶人 > chajin\ ;
+苦塩 > nigari\ ;
+発奮 > happun\ ;
+英国 > eikoku\ ;
+内包 > naihou\ ;
+再刊 > saikan\ ;
+用船 > yousen\ ;
+高燥 > kousou\ ;
+内勤 > naikin\ ;
+花床 > kashou\ ;
+肺魚 > haigyo\ ;
+自白 > jihaku\ ;
+家集 > kashuu\ ;
+軍曹 > gunsou\ ;
+軍書 > gunsho\ ;
+傍点 > bouten\ ;
+便覧 > benran\ ;
+発声 > hassei\ ;
+登壇 > toudan\ ;
+構成 > kousei\ ;
+検眼 > kengan\ ;
+再再 > saisai\ ;
+倒置 > touchi\ ;
+校門 > koumon\ ;
+首題 > shudai\ ;
+内剛 > naigou\ ;
+軒昂 > kenkou\ ;
+先妻 > sensai\ ;
+川原 > kawara\ ;
+市会 > shikai\ ;
+骨相 > kossou\ ;
+転換 > tenkan\ ;
+共和 > kyouwa\ ;
+甘草 > kanzou\ ;
+内分 > naibun\ ;
+甘茶 > amacha\ ;
+登場 > toujou\ ;
+寝酒 > nezake\ ;
+兄姉 > keishi\ ;
+正々 > seisei\ ;
+市人 > shijin\ ;
+兄妹 > keimai\ ;
+入営 > nyuuei\ ;
+兼勤 > kenkin\ ;
+元始 > genshi\ ;
+膏肓 > koukou\ ;
+高点 > kouten\ ;
+軒数 > kensuu\ ;
+先天 > senten\ ;
+先夜 > sen''ya\ ;
+市井 > shisei\ ;
+円内 > en''nai\ ;
+内内 > nainai\ ;
+軍旅 > gunryo\ ;
+内典 > naiten\ ;
+軽快 > keikai\ ;
+航海 > koukai\ ;
+構想 > kousou\ ;
+家長 > kachou\ ;
+全員 > zen''in\ ;
+臨界 > rinkai\ ;
+高瀬 > takase\ ;
+全品 > zenpin\ ;
+検痰 > kentan\ ;
+入唐 > nittou\ ;
+市上 > shijou\ ;
+小話 > shouwa\ ;
+皇嗣 > koushi\ ;
+工兵 > kouhei\ ;
+背革 > segawa\ ;
+巨億 > kyooku\ ;
+背面 > haimen\ ;
+軍政 > gunsei\ ;
+債権 > saiken\ ;
+先塔 > sentou\ ;
+公司 > koushi\ ;
+輪姦 > rinkan\ ;
+航法 > kouhou\ ;
+巨像 > kyozou\ ;
+疑獄 > gigoku\ ;
+小言 > kogoto\ ;
+内債 > naisai\ ;
+検番 > kenban\ ;
+充填 > juuten\ ;
+層群 > sougun\ ;
+花屋 > hanaya\ ;
+軟投 > nantou\ ;
+内偵 > naitei\ ;
+全史 > zenshi\ ;
+転戦 > tensen\ ;
+偶然 > guuzen\ ;
+生育 > seiiku\ ;
+膀胱 > boukou\ ;
+転成 > tensei\ ;
+兵制 > heisei\ ;
+岩盤 > ganban\ ;
+魔性 > mashou\ ;
+共助 > kyoujo\ ;
+較差 > kakusa\ ;
+棒線 > bousen\ ;
+八十 > yasoji\ ;
+兵刃 > heijin\ ;
+再会 > saikai\ ;
+花客 > kakaku\ ;
+花実 > hanami\ ;
+苗圃 > byouho\ ;
+再任 > sainin\ ;
+余録 > yoroku\ ;
+病気 > byouki\ ;
+胸部 > kyoubu\ ;
+駅逓 > ekitei\ ;
+先在 > senzai\ ;
+実際 > jissai\ ;
+生者 > shouja\ ;
+由緒 > yuisho\ ;
+俳聖 > haisei\ ;
+山系 > sankei\ ;
+男系 > dankei\ ;
+佳辰 > kashin\ ;
+対論 > tairon\ ;
+権原 > kengen\ ;
+寮費 > ryouhi\ ;
+対談 > taidan\ ;
+身柄 > migara\ ;
+倫社 > rinsha\ ;
+巨体 > kyotai\ ;
+内住 > naijuu\ ;
+皇后 > kougou\ ;
+小袖 > kosode\ ;
+対語 > tsuigo\ ;
+能辯 > nouben\ ;
+苦味 > nigami\ ;
+僧房 > soubou\ ;
+公判 > kouhan\ ;
+魅惑 > miwaku\ ;
+公刊 > koukan\ ;
+再三 > saisan\ ;
+兇器 > kyouki\ ;
+島民 > toumin\ ;
+権勢 > kensei\ ;
+巨人 > kyojin\ ;
+内争 > naisou\ ;
+将補 > shouho\ ;
+内乱 > nairan\ ;
+兎唇 > toshin\ ;
+兼併 > kenpei\ ;
+工人 > koujin\ ;
+芸大 > geidai\ ;
+公党 > koutou\ ;
+自爆 > jibaku\ ;
+舷梯 > gentei\ ;
+脱衣 > datsui\ ;
+円丘 > enkyuu\ ;
+会館 > kaikan\ ;
+芝居 > shibai\ ;
+軟性 > nansei\ ;
+皆勤 > kaikin\ ;
+巨万 > kyoman\ ;
+軍扇 > gunsen\ ;
+査閲 > saetsu\ ;
+寸言 > sungen\ ;
+密送 > missou\ ;
+輪回 > rin''ne\ ;
+用紙 > youshi\ ;
+寄進 > kishin\ ;
+痔核 > jikaku\ ;
+全免 > zenmen\ ;
+発向 > hakkou\ ;
+体重 > taijuu\ ;
+公債 > kousai\ ;
+党勢 > tousei\ ;
+棄約 > kiyaku\ ;
+侍読 > jidoku\ ;
+骨牌 > karuta\ ;
+側溝 > sokkou\ ;
+審議 > shingi\ ;
+骨片 > koppen\ ;
+傾斜 > keisha\ ;
+儒学 > jugaku\ ;
+自然 > shizen\ ;
+専行 > senkou\ ;
+赤赤 > akaaka\ ;
+色悪 > iroaku\ ;
+苦力 > kuurii\ ;
+身方 > mikata\ ;
+楷書 > kaisho\ ;
+宝鑑 > houkan\ ;
+会頭 > kaitou\ ;
+信者 > shinja\ ;
+起請 > kishou\ ;
+膿瘍 > nouyou\ ;
+概数 > gaisuu\ ;
+芸域 > geiiki\ ;
+小虎 > kodora\ ;
+色恋 > irokoi\ ;
+肺門 > haimon\ ;
+兵仗 > heijou\ ;
+家郷 > kakyou\ ;
+畢生 > hissei\ ;
+信義 > shingi\ ;
+岳父 > gakufu\ ;
+高段 > koudan\ ;
+生紙 > kigami\ ;
+膿疱 > nouhou\ ;
+例言 > reigen\ ;
+皇典 > kouten\ ;
+先君 > senkun\ ;
+佳賞 > kashou\ ;
+公侯 > koukou\ ;
+赤貝 > akagai\ ;
+例解 > reikai\ ;
+皆兵 > kaihei\ ;
+軍情 > gunjou\ ;
+高歯 > takaba\ ;
+兵乱 > heiran\ ;
+何遍 > nanben\ ;
+公使 > koushi\ ;
+先取 > senshu\ ;
+発勁 > hakkei\ ;
+駄賃 > dachin\ ;
+発効 > hakkou\ ;
+尾翼 > biyoku\ ;
+髄液 > zuieki\ ;
+封蝋 > fuurou\ ;
+党内 > tounai\ ;
+用箋 > yousen\ ;
+公住 > koujuu\ ;
+全便 > zenbin\ ;
+生粋 > kissui\ ;
+甲種 > koushu\ ;
+俗耳 > zokuji\ ;
+高欄 > kouran\ ;
+桿菌 > kankin\ ;
+公会 > koukai\ ;
+舞楽 > bugaku\ ;
+宴遊 > en''yuu\ ;
+元号 > gengou\ ;
+骨炭 > kottan\ ;
+発券 > hakken\ ;
+側泳 > sobaei\ ;
+英俊 > eishun\ ;
+異物 > ibutsu\ ;
+全体 > zentai\ ;
+環視 > kanshi\ ;
+脱藩 > dappan\ ;
+発刊 > hakkan\ ;
+公人 > koujin\ ;
+儀宸 > gishin\ ;
+係船 > keisen\ ;
+柔順 > juujun\ ;
+全会 > zenkai\ ;
+番犬 > banken\ ;
+馬身 > bashin\ ;
+白光 > hakkou\ ;
+痙攣 > keiren\ ;
+低迷 > teimei\ ;
+芯地 > shinji\ ;
+便船 > binsen\ ;
+全人 > zenjin\ ;
+腎臓 > jinzou\ ;
+馳走 > chisou\ ;
+発光 > hakkou\ ;
+元勲 > genkun\ ;
+腋臭 > wakiga\ ;
+停滞 > teitai\ ;
+先制 > sensei\ ;
+香道 > koudou\ ;
+英京 > eikyou\ ;
+痴態 > chitai\ ;
+山砦 > sansai\ ;
+寝言 > negoto\ ;
+佳調 > kachou\ ;
+高楼 > kourou\ ;
+転居 > tenkyo\ ;
+偉烈 > iretsu\ ;
+光冠 > koukan\ ;
+魯国 > rokoku\ ;
+脇見 > wakimi\ ;
+充分 > juubun\ ;
+模作 > mosaku\ ;
+皆伝 > kaiden\ ;
+痴情 > chijou\ ;
+孝養 > kouyou\ ;
+臨港 > rinkou\ ;
+崇敬 > suukei\ ;
+転寝 > gorone\ ;
+腐肉 > funiku\ ;
+官金 > kankin\ ;
+輸入 > yunyuu\ ;
+先兵 > senpei\ ;
+軍帽 > gunbou\ ;
+兇具 > kyougu\ ;
+俗縁 > zokuen\ ;
+軍師 > gunshi\ ;
+腹筋 > fukkin\ ;
+自涜 > jitoku\ ;
+膚着 > hadagi\ ;
+走行 > soukou\ ;
+容赦 > yousha\ ;
+尿素 > nyouso\ ;
+栄進 > eishin\ ;
+構外 > kougai\ ;
+楓林 > fuurin\ ;
+党人 > toujin\ ;
+臨海 > rinkai\ ;
+余賊 > yozoku\ ;
+検温 > ken''on\ ;
+寓言 > guugen\ ;
+党争 > tousou\ ;
+遅々 > chichi\ ;
+首輪 > kubiwa\ ;
+芸名 > geimei\ ;
+健気 > kenage\ ;
+高校 > koukou\ ;
+孝順 > koujun\ ;
+肛門 > koumon\ ;
+自注 > jichuu\ ;
+栄辱 > eijoku\ ;
+官邸 > kantei\ ;
+赤裸 > sekira\ ;
+致死 > chishi\ ;
+小船 > kobune\ ;
+伍長 > gochou\ ;
+艶容 > en''you\ ;
+屈筋 > kukkin\ ;
+容貌 > youbou\ ;
+小舟 > kobune\ ;
+発会 > hakkai\ ;
+自沈 > jichin\ ;
+官選 > kansen\ ;
+痛打 > tsuuda\ ;
+臭気 > shuuki\ ;
+家賃 > yachin\ ;
+登仙 > tousen\ ;
+芳名 > houmei\ ;
+学院 > gakuin\ ;
+魔境 > makyou\ ;
+舌根 > zekkon\ ;
+倉皇 > soukou\ ;
+崩御 > hougyo\ ;
+体貌 > taibou\ ;
+饅頭 > manjuu\ ;
+作譜 > sakufu\ ;
+併行 > heikou\ ;
+先便 > senbin\ ;
+小膝 > kohiza\ ;
+前々 > maemae\ ;
+岬湾 > kouwan\ ;
+倒産 > tousan\ ;
+小腹 > kobara\ ;
+先例 > senrei\ ;
+元値 > motone\ ;
+低資 > teishi\ ;
+骨法 > koppou\ ;
+生硬 > seikou\ ;
+良家 > ryouke\ ;
+光体 > koutai\ ;
+官辺 > kanpen\ ;
+苟且 > kousho\ ;
+層相 > sousou\ ;
+実車 > jissha\ ;
+先住 > senjuu\ ;
+密計 > mikkei\ ;
+優勢 > yuusei\ ;
+傲慢 > gouman\ ;
+介鱗 > kairin\ ;
+胸裏 > kyouri\ ;
+小脇 > kowaki\ ;
+寄託 > kitaku\ ;
+崇拝 > suuhai\ ;
+概念 > gainen\ ;
+用益 > youeki\ ;
+屯田 > tonden\ ;
+膾炙 > kaisha\ ;
+癸丑 > kichuu\ ;
+先代 > sendai\ ;
+駘蕩 > taitou\ ;
+停止 > teishi\ ;
+小股 > komata\ ;
+先人 > senjin\ ;
+転変 > tenpen\ ;
+転売 > tenbai\ ;
+側根 > sokkon\ ;
+完遂 > kansui\ ;
+実践 > jissen\ ;
+官軍 > kangun\ ;
+背走 > haisou\ ;
+身形 > minari\ ;
+校訓 > koukun\ ;
+小耳 > komimi\ ;
+聴音 > chouon\ ;
+校訂 > koutei\ ;
+興替 > koutai\ ;
+容認 > younin\ ;
+脱脂 > dasshi\ ;
+先主 > senshu\ ;
+会釈 > eshaku\ ;
+孔雀 > kujaku\ ;
+検死 > kenshi\ ;
+小者 > komono\ ;
+代願 > daigan\ ;
+養鶏 > youkei\ ;
+係累 > keirui\ ;
+肝銘 > kanmei\ ;
+体認 > tainin\ ;
+余角 > yokaku\ ;
+脱肛 > dakkou\ ;
+寝藁 > newara\ ;
+優先 > yuusen\ ;
+賽銭 > saisen\ ;
+偶有 > guuyuu\ ;
+密行 > mikkou\ ;
+元三 > ganzan\ ;
+膠状 > koujou\ ;
+体言 > taigen\ ;
+健棒 > kenbou\ ;
+刺々 > iraira\ ;
+身幅 > mihaba\ ;
+仲間 > nakama\ ;
+伝道 > dendou\ ;
+伴走 > bansou\ ;
+身巾 > mihaba\ ;
+孔門 > koumon\ ;
+転地 > tenchi\ ;
+良夜 > ryouya\ ;
+体要 > taiyou\ ;
+伝送 > densou\ ;
+贋造 > ganzou\ ;
+鮎並 > ainame\ ;
+船影 > sen''ei\ ;
+興敗 > kouhai\ ;
+転回 > tenkai\ ;
+臨検 > rinken\ ;
+対聯 > tairen\ ;
+癈兵 > haihei\ ;
+首謀 > shubou\ ;
+僕婢 > bokuhi\ ;
+棒状 > boujou\ ;
+高揚 > kouyou\ ;
+他領 > taryou\ ;
+聯隊 > rentai\ ;
+寸胴 > zundou\ ;
+僧堂 > soudou\ ;
+侍臣 > jishin\ ;
+験算 > kenzan\ ;
+生産 > seisan\ ;
+生生 > seisei\ ;
+人魚 > ningyo\ ;
+体裁 > teisai\ ;
+軍士 > gunshi\ ;
+便管 > benkan\ ;
+偶数 > guusuu\ ;
+便箋 > binsen\ ;
+養魚 > yougyo\ ;
+導線 > dousen\ ;
+聖餐 > seisan\ ;
+完走 > kansou\ ;
+伉配 > kouhai\ ;
+馬蝿 > umabae\ ;
+花信 > kashin\ ;
+宣誓 > sensei\ ;
+令閨 > reikei\ ;
+僧坊 > soubou\ ;
+対置 > taichi\ ;
+駐英 > chuuei\ ;
+肩身 > katami\ ;
+今風 > imafuu\ ;
+這々 > houhou\ ;
+芸人 > geinin\ ;
+柔道 > juudou\ ;
+層状 > soujou\ ;
+脱線 > dassen\ ;
+根菜 > konsai\ ;
+宣言 > sengen\ ;
+胡蝶 > kochou\ ;
+小糠 > konuka\ ;
+検案 > ken''an\ ;
+枝隊 > shitai\ ;
+定論 > teiron\ ;
+楽屋 > gakuya\ ;
+高所 > kousho\ ;
+病後 > byougo\ ;
+膿汁 > noujuu\ ;
+傲岸 > gougan\ ;
+小米 > kogome\ ;
+学部 > gakubu\ ;
+臨書 > rinsho\ ;
+査読 > sadoku\ ;
+腫瘍 > shuyou\ ;
+楽寝 > rakune\ ;
+封緘 > fuukan\ ;
+根茎 > konkei\ ;
+膨満 > bouman\ ;
+修理 > shuuri\ ;
+脱糞 > dappun\ ;
+信疑 > shingi\ ;
+実見 > jikken\ ;
+軍団 > gundan\ ;
+臘梅 > roubai\ ;
+定言 > teigen\ ;
+査証 > sashou\ ;
+倒潰 > toukai\ ;
+舌戦 > zessen\ ;
+尖端 > sentan\ ;
+官許 > kankyo\ ;
+高慢 > kouman\ ;
+柔軟 > juunan\ ;
+小箱 > kobako\ ;
+聖霊 > seirei\ ;
+癈人 > haijin\ ;
+転向 > tenkou\ ;
+密葬 > missou\ ;
+尽瘁 > jinsui\ ;
+佳良 > karyou\ ;
+尊簡 > sonkan\ ;
+導管 > douken\ ;
+射精 > shasei\ ;
+定見 > teiken\ ;
+保留 > horyuu\ ;
+構内 > kounai\ ;
+瓦礫 > gareki\ ;
+実装 > jissou\ ;
+極寒 > gokkan\ ;
+駅舎 > ekisha\ ;
+来鮮 > raisen\ ;
+人類 > jinrui\ ;
+林間 > rinkan\ ;
+宗規 > shuuki\ ;
+審美 > shinbi\ ;
+崩壊 > houkai\ ;
+亡魂 > boukon\ ;
+贈賄 > zouwai\ ;
+使聘 > shihei\ ;
+人頭 > jintou\ ;
+走者 > sousha\ ;
+孝道 > koudou\ ;
+実行 > jikkou\ ;
+軍営 > gun''ei\ ;
+僭取 > senshu\ ;
+様体 > youtai\ ;
+賜金 > shikin\ ;
+校葬 > kousou\ ;
+軽便 > keiben\ ;
+使者 > shisha\ ;
+官製 > kansei\ ;
+偶成 > guusei\ ;
+俗界 > zokkai\ ;
+転勤 > tenkin\ ;
+交驩 > koukan\ ;
+俗画 > zokuga\ ;
+松韻 > shouin\ ;
+対米 > taibei\ ;
+宋詞 > soushi\ ;
+平々 > heihei\ ;
+距爪 > kyosou\ ;
+僧号 > sougou\ ;
+脂肪 > shibou\ ;
+人面 > jinmen\ ;
+専管 > senkan\ ;
+肌身 > hadami\ ;
+良否 > ryouhi\ ;
+飼養 > shiyou\ ;
+島嶼 > tousho\ ;
+老齢 > rourei\ ;
+良吏 > ryouri\ ;
+松露 > shouro\ ;
+封筒 > fuutou\ ;
+飛鳥 > hichou\ ;
+脚絆 > kyahan\ ;
+偶感 > guukan\ ;
+貝類 > kairui\ ;
+付録 > furoku\ ;
+偏旁 > henbou\ ;
+代金 > daikin\ ;
+高弟 > koutei\ ;
+購買 > koubai\ ;
+脱稿 > dakkou\ ;
+偏斜 > hensha\ ;
+山海 > sankai\ ;
+密航 > mikkou\ ;
+寒肥 > kangoe\ ;
+対等 > taitou\ ;
+転写 > tensha\ ;
+会談 > kaidan\ ;
+舎弟 > shatei\ ;
+傾城 > keisei\ ;
+健投 > kentou\ ;
+馴致 > junchi\ ;
+魚介 > gyokai\ ;
+傘屋 > kasaya\ ;
+高年 > kounen\ ;
+併置 > heichi\ ;
+射程 > shatei\ ;
+伝言 > dengon\ ;
+車台 > shadai\ ;
+畳数 > jousuu\ ;
+対空 > taikuu\ ;
+会計 > kaikei\ ;
+作興 > sakkou\ ;
+聯邦 > renpou\ ;
+腸炎 > chouen\ ;
+人間 > ningen\ ;
+学費 > gakuhi\ ;
+東面 > toumen\ ;
+高工 > koukou\ ;
+校舎 > kousha\ ;
+小破 > shouha\ ;
+資金 > shikin\ ;
+高嶺 > takane\ ;
+飛魚 > tobiuo\ ;
+山水 > sansui\ ;
+余興 > yokyou\ ;
+山気 > yamake\ ;
+小石 > koishi\ ;
+興廃 > kouhai\ ;
+軍勢 > gunzei\ ;
+余臭 > yoshuu\ ;
+会見 > kaiken\ ;
+倒死 > toushi\ ;
+封禅 > houzen\ ;
+贅言 > zeigen\ ;
+現金 > genkin\ ;
+居然 > kyozen\ ;
+億万 > okuman\ ;
+検挙 > kenkyo\ ;
+軍功 > gunkou\ ;
+転倒 > tentou\ ;
+町歩 > choubu\ ;
+僧兵 > souhei\ ;
+疑惑 > giwaku\ ;
+島守 > toushu\ ;
+代返 > daihen\ ;
+停戦 > teisen\ ;
+楽土 > rakudo\ ;
+臨戦 > rinsen\ ;
+宝蔵 > houzou\ ;
+楽園 > rakuen\ ;
+至情 > shijou\ ;
+高峰 > kouhou\ ;
+林野 > rin''ya\ ;
+軍制 > gunsei\ ;
+京阪 > keihan\ ;
+赤線 > akasen\ ;
+家臣 > kashin\ ;
+交霊 > kourei\ ;
+他郷 > takyou\ ;
+軍刀 > guntou\ ;
+香草 > kousou\ ;
+痴呆 > chihou\ ;
+条項 > joukou\ ;
+軟便 > nanben\ ;
+小目 > komoku\ ;
+某誌 > boushi\ ;
+栄落 > eiraku\ ;
+車券 > shaken\ ;
+転住 > tenjuu\ ;
+用法 > youhou\ ;
+艙口 > soukou\ ;
+臆断 > okudan\ ;
+高山 > kouzan\ ;
+躍如 > yakujo\ ;
+高層 > kousou\ ;
+小皿 > kozara\ ;
+小皺 > kojiwa\ ;
+亡霊 > bourei\ ;
+交際 > kousai\ ;
+船型 > senkei\ ;
+赤経 > sekkei\ ;
+佞者 > neisha\ ;
+業報 > gouhou\ ;
+馬肉 > baniku\ ;
+体腔 > taikou\ ;
+偕成 > kaisei\ ;
+疑心 > gishin\ ;
+軍兵 > gunpei\ ;
+来電 > raiden\ ;
+東門 > toumon\ ;
+高専 > kousen\ ;
+健忘 > kenbou\ ;
+用水 > yousui\ ;
+車内 > shanai\ ;
+馭者 > gyosha\ ;
+魅了 > miryou\ ;
+二食 > nijiki\ ;
+船団 > sendan\ ;
+脂粉 > shifun\ ;
+現送 > gensou\ ;
+高官 > koukan\ ;
+至当 > shitou\ ;
+玄黄 > genkou\ ;
+体育 > taiiku\ ;
+軍僧 > gunsou\ ;
+履歴 > rireki\ ;
+僧侶 > souryo\ ;
+林道 > rindou\ ;
+貴重 > kichou\ ;
+余習 > yoshuu\ ;
+豊麗 > hourei\ ;
+値札 > nefuda\ ;
+低能 > teinou\ ;
+来阪 > raihan\ ;
+僧体 > soutai\ ;
+例祭 > reisai\ ;
+貴酬 > kishuu\ ;
+胚胎 > haitai\ ;
+僧伽 > sougya\ ;
+桧皮 > hiwada\ ;
+傾向 > keikou\ ;
+子豚 > kobuta\ ;
+貯金 > chokin\ ;
+楽員 > gakuin\ ;
+健康 > kenkou\ ;
+自得 > jitoku\ ;
+僭主 > senshu\ ;
+代走 > daisou\ ;
+代赭 > taisha\ ;
+肺葉 > haiyou\ ;
+僭上 > senjou\ ;
+臨御 > ringyo\ ;
+貧鉱 > hinkou\ ;
+偏愛 > hen''ai\ ;
+偽学 > gigaku\ ;
+傑士 > kesshi\ ;
+首脳 > shunou\ ;
+軍使 > gunshi\ ;
+生残 > seizan\ ;
+生死 > seishi\ ;
+板金 > bankin\ ;
+棟木 > munagi\ ;
+番所 > bansho\ ;
+路標 > rohyou\ ;
+眈々 > tantan\ ;
+男根 > dankon\ ;
+低置 > teichi\ ;
+首肯 > shukou\ ;
+車体 > shatai\ ;
+船員 > sen''in\ ;
+病因 > byouin\ ;
+字訳 > jiyaku\ ;
+軍令 > gunrei\ ;
+偏性 > hensei\ ;
+棍棒 > konbou\ ;
+層楼 > sourou\ ;
+停年 > teinen\ ;
+傘地 > kasaji\ ;
+臨幸 > rinkou\ ;
+軍人 > gunjin\ ;
+自席 > jiseki\ ;
+予震 > yoshin\ ;
+官舎 > kansha\ ;
+騒然 > souzen\ ;
+高大 > koudai\ ;
+臥床 > gashou\ ;
+山林 > sanrin\ ;
+極右 > kyokuu\ ;
+木魂 > kodama\ ;
+高士 > koushi\ ;
+腎炎 > jin''en\ ;
+山村 > sanson\ ;
+人選 > jinsen\ ;
+小猫 > koneko\ ;
+仮託 > kataku\ ;
+対生 > taisei\ ;
+棒杭 > bougui\ ;
+船台 > sendai\ ;
+人道 > jindou\ ;
+骨幹 > kokkan\ ;
+棒杙 > bougui\ ;
+馬糧 > baryou\ ;
+資財 > shizai\ ;
+馬糞 > maguso\ ;
+人造 > jinzou\ ;
+僅僅 > kinkin\ ;
+極印 > gokuin\ ;
+代謝 > taisha\ ;
+代講 > daikou\ ;
+会葬 > kaisou\ ;
+孝行 > koukou\ ;
+甲板 > kouhan\ ;
+車上 > shajou\ ;
+至尊 > shison\ ;
+舅姑 > kyuuko\ ;
+争闘 > soutou\ ;
+興奮 > koufun\ ;
+艦上 > kanjou\ ;
+肺臓 > haizou\ ;
+身内 > miuchi\ ;
+小物 > komono\ ;
+高堂 > koudou\ ;
+小牛 > koushi\ ;
+身共 > midomo\ ;
+瑶緘 > youkan\ ;
+債券 > saiken\ ;
+至宝 > shihou\ ;
+体系 > taikei\ ;
+偏平 > henpei\ ;
+身元 > mimoto\ ;
+察知 > satchi\ ;
+生検 > seiken\ ;
+京都 > kyouto\ ;
+末香 > makkou\ ;
+至孝 > shikou\ ;
+木馬 > mokuba\ ;
+側女 > sobame\ ;
+本館 > honkan\ ;
+代言 > daigen\ ;
+東郊 > toukou\ ;
+肺胞 > haihou\ ;
+高地 > kouchi\ ;
+東邦 > touhou\ ;
+聖賢 > seiken\ ;
+人車 > jinsha\ ;
+痴人 > chijin\ ;
+朱顔 > shugan\ ;
+人身 > hitomi\ ;
+用材 > youzai\ ;
+交配 > kouhai\ ;
+東遷 > tousen\ ;
+肺肝 > haikan\ ;
+足湯 > ashiyu\ ;
+定置 > teichi\ ;
+傾倒 > keitou\ ;
+業務 > gyoumu\ ;
+倍数 > baisuu\ ;
+桑田 > souden\ ;
+老雄 > rouyuu\ ;
+船出 > funade\ ;
+自宅 > jitaku\ ;
+脇目 > wakime\ ;
+検屍 > kenshi\ ;
+本願 > hongan\ ;
+本題 > hondai\ ;
+乱雲 > ran''un\ ;
+疾呼 > shikko\ ;
+傭兵 > youhei\ ;
+船具 > funagu\ ;
+家筋 > iesuji\ ;
+豊饒 > houjou\ ;
+本音 > hon''ne\ ;
+付託 > futaku\ ;
+会舘 > kaikan\ ;
+末項 > makkou\ ;
+生来 > seirai\ ;
+交遊 > kouyuu\ ;
+倦憊 > kenpai\ ;
+枢要 > suuyou\ ;
+颱風 > taifuu\ ;
+実線 > jissen\ ;
+寝癖 > neguse\ ;
+臍帯 > seitai\ ;
+検定 > kentei\ ;
+来邸 > raitei\ ;
+腹案 > fukuan\ ;
+生木 > namaki\ ;
+草々 > sousou\ ;
+余程 > yohodo\ ;
+代行 > daikou\ ;
+島司 > toushi\ ;
+傲倨 > goukyo\ ;
+骨子 > kosshi\ ;
+至大 > shidai\ ;
+使用 > shiyou\ ;
+乱闘 > rantou\ ;
+来遊 > raiyuu\ ;
+東軍 > tougun\ ;
+展望 > tenbou\ ;
+耳輪 > mimiwa\ ;
+余禄 > yoroku\ ;
+小潮 > koshio\ ;
+審理 > shinri\ ;
+梶木 > kajiki\ ;
+貧賤 > hinsen\ ;
+貧賎 > hinsen\ ;
+来迎 > raigou\ ;
+有髪 > uhatsu\ ;
+赤痢 > sekiri\ ;
+便法 > benpou\ ;
+船倉 > sensou\ ;
+低空 > teikuu\ ;
+木霊 > kodama\ ;
+伝聞 > denbun\ ;
+本隊 > hontai\ ;
+岩層 > gansou\ ;
+肝臓 > kanzou\ ;
+朝顔 > asagao\ ;
+身丈 > mitake\ ;
+倦怠 > kentai\ ;
+本陣 > honjin\ ;
+本院 > hon''in\ ;
+尨毛 > mukuge\ ;
+定紋 > joumon\ ;
+養豚 > youton\ ;
+付表 > fuhyou\ ;
+家禄 > karoku\ ;
+朱門 > shumon\ ;
+肝腎 > kanjin\ ;
+併用 > heiyou\ ;
+高吟 > kougin\ ;
+木陰 > kokage\ ;
+船体 > sentai\ ;
+高名 > koumei\ ;
+倒懸 > touken\ ;
+債主 > saishu\ ;
+現行 > genkou\ ;
+環状 > kanjou\ ;
+来車 > raisha\ ;
+背筋 > haikin\ ;
+山手 > yamate\ ;
+腋毛 > wakige\ ;
+俳文 > haibun\ ;
+便殿 > benden\ ;
+最高 > saikou\ ;
+梗概 > kougai\ ;
+肝胆 > kantan\ ;
+高原 > kougen\ ;
+朝露 > chouro\ ;
+屯所 > tonsho\ ;
+傭人 > younin\ ;
+賀表 > gahyou\ ;
+朝霞 > chouka\ ;
+宝算 > housan\ ;
+茶々 > chacha\ ;
+風霜 > fuusou\ ;
+起爆 > kibaku\ ;
+興味 > kyoumi\ ;
+耐酸 > taisan\ ;
+健在 > kenzai\ ;
+肉芽 > nikuga\ ;
+臨場 > rinjou\ ;
+島内 > tounai\ ;
+用捨 > yousha\ ;
+孤舟 > koshuu\ ;
+二進 > nishin\ ;
+村道 > sondou\ ;
+偏好 > henkou\ ;
+二通 > nitsuu\ ;
+冥々 > meimei\ ;
+子葉 > shiyou\ ;
+肯綮 > koukei\ ;
+佩用 > haiyou\ ;
+乗降 > joukou\ ;
+事迹 > jiseki\ ;
+官等 > kantou\ ;
+値幅 > nehaba\ ;
+玄関 > genkan\ ;
+風防 > fuubou\ ;
+尚武 > shoubu\ ;
+枯葉 > kareha\ ;
+家督 > katoku\ ;
+偶吟 > guukin\ ;
+伝線 > densen\ ;
+値巾 > nehaba\ ;
+自国 > jikoku\ ;
+臨在 > rinzai\ ;
+余白 > yohaku\ ;
+宿痾 > shukua\ ;
+密生 > missei\ ;
+寄留 > kiryuu\ ;
+来賓 > raihin\ ;
+至善 > shizen\ ;
+伝統 > dentou\ ;
+画心 > gashin\ ;
+導水 > dousui\ ;
+来貢 > raikou\ ;
+男性 > dansei\ ;
+居敷 > ishiki\ ;
+脱法 > dappou\ ;
+値嵩 > negasa\ ;
+検地 > kenchi\ ;
+豪邸 > goutei\ ;
+健啖 > kentan\ ;
+余病 > yobyou\ ;
+自嘲 > jichou\ ;
+負託 > futaku\ ;
+老酒 > roushu\ ;
+主題 > shudai\ ;
+低目 > hikume\ ;
+作画 > sakuga\ ;
+獣類 > juurui\ ;
+豪邁 > goumai\ ;
+射法 > shahou\ ;
+交譲 > koujou\ ;
+事蹟 > jiseki\ ;
+山径 > sankei\ ;
+環濠 > kangou\ ;
+駄物 > damono\ ;
+脱水 > dassui\ ;
+豪遊 > gouyuu\ ;
+飛躍 > hiyaku\ ;
+高僧 > kousou\ ;
+致命 > chimei\ ;
+乱酔 > ransui\ ;
+乱酒 > ranshu\ ;
+舎兄 > shakei\ ;
+仰臥 > gyouga\ ;
+番外 > bangai\ ;
+岩塩 > gan''en\ ;
+生成 > seisei\ ;
+偏在 > henzai\ ;
+事跡 > jiseki\ ;
+何番 > nanban\ ;
+書風 > shofuu\ ;
+脳死 > noushi\ ;
+二足 > nisoku\ ;
+宗祖 > shuuso\ ;
+羽風 > hakaze\ ;
+豪農 > gounou\ ;
+島人 > toujin\ ;
+侠気 > kyouki\ ;
+画幅 > gafuku\ ;
+有限 > yuugen\ ;
+書類 > shorui\ ;
+香盒 > kougou\ ;
+画帳 > gachou\ ;
+生憎 > ainiku\ ;
+高値 > takane\ ;
+中飛 > chuuhi\ ;
+枝葉 > shiyou\ ;
+谷間 > tanima\ ;
+交詢 > koujun\ ;
+丹青 > tansei\ ;
+東西 > touzai\ ;
+臭味 > shuumi\ ;
+琴線 > kinsen\ ;
+胡瓜 > kyuuri\ ;
+再々 > saisai\ ;
+飛越 > hietsu\ ;
+生態 > seitai\ ;
+島主 > toushu\ ;
+来談 > raidan\ ;
+倉廩 > sourin\ ;
+腐朽 > fukyuu\ ;
+安穏 > an''non\ ;
+値安 > neyasu\ ;
+代艦 > daikan\ ;
+寸法 > sunpou\ ;
+胎盤 > taiban\ ;
+老農 > rounou\ ;
+乱造 > ranzou\ ;
+傍人 > boujin\ ;
+屈指 > kusshi\ ;
+育種 > ikushu\ ;
+検問 > kenmon\ ;
+梅林 > bairin\ ;
+木釘 > kikugi\ ;
+有閑 > yuukan\ ;
+用心 > youjin\ ;
+男工 > dankou\ ;
+豼貅 > hikyuu\ ;
+月間 > gekkan\ ;
+山巓 > santen\ ;
+仏葬 > bussou\ ;
+借家 > shakka\ ;
+書面 > shomen\ ;
+山嶺 > sanrei\ ;
+来訪 > raihou\ ;
+中音 > chuuon\ ;
+用役 > youeki\ ;
+珪藻 > keisou\ ;
+贈答 > zoutou\ ;
+老輩 > rouhai\ ;
+聾者 > rousha\ ;
+桑海 > soukai\ ;
+小楯 > kodate\ ;
+柱礎 > chuuso\ ;
+養蜂 > youhou\ ;
+実相 > jissou\ ;
+事象 > jishou\ ;
+寒点 > kanten\ ;
+聚落 > juraku\ ;
+検品 > kenpin\ ;
+内々 > nainai\ ;
+偶像 > guuzou\ ;
+存置 > sonchi\ ;
+本邸 > hontei\ ;
+体現 > taigen\ ;
+番地 > banchi\ ;
+東行 > toukou\ ;
+本邦 > honpou\ ;
+甲巡 > koujun\ ;
+来観 > raikan\ ;
+養蚕 > yousan\ ;
+本選 > honsen\ ;
+頽齢 > tairei\ ;
+環海 > kankai\ ;
+木部 > mokubu\ ;
+桃源 > tougen\ ;
+本道 > hondou\ ;
+居所 > kyosho\ ;
+風鈴 > fuurin\ ;
+路床 > roshou\ ;
+偽作 > gisaku\ ;
+乱軍 > rangun\ ;
+賞美 > shoubi\ ;
+展性 > tensei\ ;
+貯蔵 > chozou\ ;
+専横 > sen''ou\ ;
+専権 > senken\ ;
+倡婦 > shoufu\ ;
+朝野 > chouya\ ;
+胚珠 > haishu\ ;
+未進 > mishin\ ;
+休符 > kyuufu\ ;
+生彩 > seisai\ ;
+風采 > fuusai\ ;
+胎生 > taisei\ ;
+産廃 > sanpai\ ;
+令聞 > reibun\ ;
+俳徊 > haikai\ ;
+自力 > jiriki\ ;
+係数 > keisuu\ ;
+中陰 > chuuin\ ;
+検印 > ken''in\ ;
+町家 > chouka\ ;
+少林 > shorin\ ;
+健全 > kenzen\ ;
+偏向 > henkou\ ;
+寮母 > ryoubo\ ;
+興亡 > koubou\ ;
+画学 > gagaku\ ;
+将棋 > shougi\ ;
+互角 > gokaku\ ;
+質素 > shisso\ ;
+根源 > kongen\ ;
+柳眉 > ryuubi\ ;
+争論 > souron\ ;
+走法 > souhou\ ;
+上騰 > joutou\ ;
+山家 > yamaga\ ;
+会社 > kaisha\ ;
+実生 > mishou\ ;
+末輩 > mappai\ ;
+属差 > zokusa\ ;
+不馴 > funare\ ;
+生年 > seinen\ ;
+騒擾 > soujou\ ;
+椿事 > chinji\ ;
+寮歌 > ryouka\ ;
+首班 > shuhan\ ;
+定番 > teiban\ ;
+偶人 > guujin\ ;
+男子 > danshi\ ;
+代署 > daisho\ ;
+代置 > daichi\ ;
+肺癌 > haigan\ ;
+価格 > kakaku\ ;
+臨写 > rinsha\ ;
+官界 > kankai\ ;
+饌米 > senmai\ ;
+趣旨 > shushi\ ;
+今般 > konpan\ ;
+尊来 > sonrai\ ;
+梯形 > teikei\ ;
+轟々 > gougou\ ;
+膨大 > boudai\ ;
+二見 > futami\ ;
+自儘 > jimama\ ;
+果肉 > kaniku\ ;
+検分 > kenbun\ ;
+両院 > ryouin\ ;
+甲子 > kasshi\ ;
+一驚 > ikkyou\ ;
+少時 > shouji\ ;
+五行 > gogyou\ ;
+群青 > gunjou\ ;
+至便 > shiben\ ;
+尊書 > sonsho\ ;
+予覚 > yokaku\ ;
+小昼 > kohiru\ ;
+何点 > nanten\ ;
+曝露 > bakuro\ ;
+小春 > koharu\ ;
+余瀝 > yoreki\ ;
+宝珠 > houshu\ ;
+対校 > taikou\ ;
+子細 > shisai\ ;
+献饌 > kensen\ ;
+信徒 > shinto\ ;
+番号 > bangou\ ;
+番台 > bandai\ ;
+一駄 > ichida\ ;
+脇毛 > wakige\ ;
+類題 > ruidai\ ;
+曜霊 > yourei\ ;
+根治 > konchi\ ;
+寺格 > jikaku\ ;
+偉力 > iryoku\ ;
+寡欲 > kayoku\ ;
+有配 > yuuhai\ ;
+致仕 > chishi\ ;
+乗車 > jousha\ ;
+自修 > jishuu\ ;
+自信 > jishin\ ;
+仕置 > shioki\ ;
+風車 > fuusha\ ;
+暗黙 > anmoku\ ;
+山女 > yamame\ ;
+京葉 > keiyou\ ;
+暗黒 > ankoku\ ;
+封書 > fuusho\ ;
+仏者 > bussha\ ;
+棄子 > sutego\ ;
+倹吝 > kenrin\ ;
+胸泳 > kyouei\ ;
+属官 > zokkan\ ;
+倒壊 > toukai\ ;
+自供 > jikyou\ ;
+三韓 > sankan\ ;
+予表 > yohyou\ ;
+万頃 > bankei\ ;
+一飛 > ichihi\ ;
+起業 > kigyou\ ;
+偏光 > henkou\ ;
+桔梗 > kikyou\ ;
+根毛 > konmou\ ;
+余滴 > yoteki\ ;
+倍大 > baidai\ ;
+自作 > jisaku\ ;
+育生 > ikusei\ ;
+画境 > gakyou\ ;
+木賊 > tokusa\ ;
+尊敬 > sonkei\ ;
+男声 > dansei\ ;
+上面 > joumen\ ;
+居常 > kyojou\ ;
+代納 > dainou\ ;
+寒気 > samuke\ ;
+至上 > shijou\ ;
+三面 > sanmen\ ;
+尊攘 > sonjou\ ;
+停会 > teikai\ ;
+倍増 > baizou\ ;
+検便 > kenben\ ;
+生存 > seizon\ ;
+屑屋 > kuzuya\ ;
+願面 > ganmen\ ;
+山塞 > sansai\ ;
+風趣 > fuushu\ ;
+甲声 > kangoe\ ;
+暴騰 > boutou\ ;
+山塊 > sankai\ ;
+専断 > sendan\ ;
+胸毛 > munage\ ;
+山場 > yamaba\ ;
+屏居 > heikyo\ ;
+万雷 > banrai\ ;
+検体 > kentai\ ;
+官版 > kanpan\ ;
+三階 > sangai\ ;
+寝様 > nezama\ ;
+顔面 > ganmen\ ;
+上限 > jougen\ ;
+朋輩 > houbai\ ;
+専攻 > senkou\ ;
+仁者 > jinsha\ ;
+番兵 > banpei\ ;
+乱視 > ranshi\ ;
+朝賀 > chouga\ ;
+対数 > taisuu\ ;
+審査 > shinsa\ ;
+寝業 > newaza\ ;
+本論 > honron\ ;
+借問 > shamon\ ;
+曾遊 > souyuu\ ;
+臣事 > shinji\ ;
+琢磨 > takuma\ ;
+腹子 > harako\ ;
+桟敷 > sajiki\ ;
+対支 > taishi\ ;
+養育 > youiku\ ;
+風貌 > fuubou\ ;
+伯父 > hakufu\ ;
+本誌 > honshi\ ;
+子種 > kodane\ ;
+仔細 > shisai\ ;
+東航 > toukou\ ;
+小指 > koyubi\ ;
+最近 > saikin\ ;
+未読 > midoku\ ;
+仮称 > kashou\ ;
+体液 > taieki\ ;
+一隻 > isseki\ ;
+寸断 > sundan\ ;
+生姜 > shouga\ ;
+三門 > sanmon\ ;
+老衰 > rousui\ ;
+苛々 > iraira\ ;
+低減 > teigen\ ;
+臣下 > shinka\ ;
+倡和 > shouwa\ ;
+未詳 > mishou\ ;
+腐心 > fushin\ ;
+暴風 > boufuu\ ;
+余沢 > yotaku\ ;
+定点 > teiten\ ;
+書道 > shodou\ ;
+中部 > chuubu\ ;
+偏人 > henjin\ ;
+倦厭 > ken''en\ ;
+学監 > gakkan\ ;
+養老 > yourou\ ;
+肌着 > hadagi\ ;
+産声 > ubugoe\ ;
+飴色 > ameiro\ ;
+田地 > denchi\ ;
+朝議 > chougi\ ;
+田園 > den''en\ ;
+小我 > shouga\ ;
+婦長 > fuchou\ ;
+香港 > honkon\ ;
+梵妻 > bonsai\ ;
+桂林 > keirin\ ;
+一間 > hitoma\ ;
+存知 > zonchi\ ;
+中途 > chuuto\ ;
+琺瑯 > hourou\ ;
+画商 > gashou\ ;
+来航 > raikou\ ;
+頻頻 > hinpin\ ;
+尻尾 > shippo\ ;
+校正 > kousei\ ;
+例文 > reibun\ ;
+甚大 > jindai\ ;
+例数 > reisuu\ ;
+二葉 > futaba\ ;
+飼育 > shiiku\ ;
+俳壇 > haidan\ ;
+屯営 > ton''ei\ ;
+来臨 > rairin\ ;
+梵天 > bonten\ ;
+用地 > youchi\ ;
+貴紳 > kishin\ ;
+暴露 > bakuro\ ;
+寒梅 > kanbai\ ;
+根柢 > kontei\ ;
+射手 > shashu\ ;
+何歳 > nansai\ ;
+瑶池 > youchi\ ;
+学界 > gakkai\ ;
+栗毛 > kurige\ ;
+尊慮 > sonryo\ ;
+住民 > juumin\ ;
+驚喜 > kyouki\ ;
+少恩 > shouon\ ;
+産地 > sanchi\ ;
+俗字 > zokuji\ ;
+対抗 > taikou\ ;
+企画 > kikaku\ ;
+甘塩 > amajio\ ;
+赤本 > akahon\ ;
+風解 > fuukai\ ;
+併有 > heiyuu\ ;
+屋外 > okugai\ ;
+馬橇 > basori\ ;
+中身 > nakami\ ;
+理神 > rishin\ ;
+佳木 > kaboku\ ;
+根本 > nemoto\ ;
+聖算 > seisan\ ;
+人絹 > jinken\ ;
+主賓 > shuhin\ ;
+生地 > seichi\ ;
+風見 > kazami\ ;
+対戦 > taisen\ ;
+他称 > tashou\ ;
+望見 > bouken\ ;
+香水 > kousui\ ;
+寒村 > kanson\ ;
+杉菜 > sugina\ ;
+留保 > ryuuho\ ;
+能書 > nousho\ ;
+作業 > sagyou\ ;
+付票 > fuhyou\ ;
+倨傲 > kyogou\ ;
+根暗 > nekura\ ;
+跡地 > atochi\ ;
+人糞 > jinpun\ ;
+学理 > gakuri\ ;
+脳性 > nousei\ ;
+画匠 > gashou\ ;
+余業 > yogyou\ ;
+小形 > kogata\ ;
+信士 > shinji\ ;
+腫大 > shudai\ ;
+乾菜 > kansai\ ;
+月謝 > gessha\ ;
+密栓 > missen\ ;
+寒暖 > kandan\ ;
+寒暑 > kansho\ ;
+子癇 > shikan\ ;
+風袋 > fuutai\ ;
+倥偬 > kousou\ ;
+小引 > shouin\ ;
+体様 > taiyou\ ;
+人籟 > jinrai\ ;
+三重 > sanjuu\ ;
+財経 > zaikei\ ;
+存生 > zonjou\ ;
+字画 > jikaku\ ;
+万金 > mankin\ ;
+尊影 > son''ei\ ;
+根方 > nekata\ ;
+用品 > youhin\ ;
+仮病 > kebyou\ ;
+上酒 > joushu\ ;
+宗派 > shuuha\ ;
+定法 > jouhou\ ;
+家業 > kagyou\ ;
+献金 > kenkin\ ;
+環指 > kanshi\ ;
+用命 > youmei\ ;
+胡椒 > koshou\ ;
+聯盟 > renmei\ ;
+胆汁 > tanjuu\ ;
+琥珀 > kohaku\ ;
+能文 > noubun\ ;
+居城 > kyojou\ ;
+主謀 > shubou\ ;
+宗法 > souhou\ ;
+小幅 > kohaba\ ;
+孤独 > kodoku\ ;
+産品 > sanpin\ ;
+願酒 > ganshu\ ;
+東経 > toukei\ ;
+乾芻 > kansuu\ ;
+完済 > kansai\ ;
+不適 > futeki\ ;
+密書 > missho\ ;
+股火 > matabi\ ;
+須髯 > shuzen\ ;
+導師 > doushi\ ;
+美醜 > bishuu\ ;
+専従 > senjuu\ ;
+一里 > ichiri\ ;
+寵愛 > chouai\ ;
+宝殿 > houden\ ;
+乳菓 > nyuuka\ ;
+小差 > shousa\ ;
+珠算 > shuzan\ ;
+不通 > futsuu\ ;
+脳幹 > noukan\ ;
+供応 > kyouou\ ;
+玉藻 > tamamo\ ;
+肝炎 > kan''en\ ;
+三選 > sansen\ ;
+尋常 > jinjou\ ;
+修営 > shuuei\ ;
+丹誠 > tansei\ ;
+胡桃 > kurumi\ ;
+万邦 > banpou\ ;
+老荘 > rousou\ ;
+官民 > kanmin\ ;
+乾舷 > kangen\ ;
+属吏 > zokuri\ ;
+枡目 > masume\ ;
+丁酉 > teiyuu\ ;
+聞知 > bunchi\ ;
+家格 > kakaku\ ;
+越後 > echigo\ ;
+生命 > seimei\ ;
+尚尚 > naonao\ ;
+三連 > sanren\ ;
+義足 > gisoku\ ;
+主計 > shukei\ ;
+校本 > kouhon\ ;
+暮鐘 > boshou\ ;
+封建 > houken\ ;
+対当 > taitou\ ;
+木蔭 > kokage\ ;
+倒像 > touzou\ ;
+羅針 > rashin\ ;
+射幸 > shakou\ ;
+梵唄 > bonbai\ ;
+上辺 > jouhen\ ;
+一郭 > ikkaku\ ;
+一部 > ichibu\ ;
+定款 > teikan\ ;
+何枚 > nanmai\ ;
+寸志 > sunshi\ ;
+佞智 > neichi\ ;
+主観 > shukan\ ;
+家柄 > iegara\ ;
+小島 > kojima\ ;
+本葬 > honsou\ ;
+産卵 > sanran\ ;
+人種 > jinshu\ ;
+完治 > kanchi\ ;
+何条 > nanjou\ ;
+主要 > shuyou\ ;
+代用 > daiyou\ ;
+書誌 > shoshi\ ;
+甲兵 > kouhei\ ;
+伯母 > hakubo\ ;
+俳名 > haimei\ ;
+実権 > jikken\ ;
+俳号 > haigou\ ;
+越度 > ochido\ ;
+飛翔 > hishou\ ;
+予習 > yoshuu\ ;
+義賊 > gizoku\ ;
+寝技 > newaza\ ;
+小山 > koyama\ ;
+三輪 > sanrin\ ;
+尊崇 > sonsuu\ ;
+俳友 > haiyuu\ ;
+一週 > isshuu\ ;
+休演 > kyuuen\ ;
+一通 > ittsuu\ ;
+脇戸 > wakido\ ;
+三軽 > sankei\ ;
+尿器 > nyouki\ ;
+寝所 > shinjo\ ;
+尨大 > boudai\ ;
+三軍 > sangun\ ;
+狭霧 > sagiri\ ;
+子猫 > koneko\ ;
+根拠 > konkyo\ ;
+寡慾 > kayoku\ ;
+井綱 > idzuna\ ;
+万軍 > bangun\ ;
+驕児 > kyouji\ ;
+豪胆 > goutan\ ;
+東端 > toutan\ ;
+本草 > honzou\ ;
+生動 > seidou\ ;
+費目 > himoku\ ;
+書見 > shoken\ ;
+仙界 > senkai\ ;
+官権 > kanken\ ;
+更訂 > koutei\ ;
+産前 > sanzen\ ;
+小宴 > shouen\ ;
+玉菜 > tamana\ ;
+産制 > sansei\ ;
+孔版 > kouhan\ ;
+末茶 > matcha\ ;
+飯米 > hanmai\ ;
+順風 > junpuu\ ;
+朱色 > shuiro\ ;
+実検 > jikken\ ;
+伝法 > denpou\ ;
+画伯 > gahaku\ ;
+用兵 > youhei\ ;
+狭隘 > kyouai\ ;
+獣行 > juukou\ ;
+不足 > fusoku\ ;
+資産 > shisan\ ;
+嫁菜 > yomena\ ;
+五経 > gokyou\ ;
+駅手 > ekishu\ ;
+嬉笑 > kishou\ ;
+事績 > jiseki\ ;
+生前 > seizen\ ;
+棄児 > sutego\ ;
+子牛 > koushi\ ;
+他生 > tashou\ ;
+下足 > gesoku\ ;
+何方 > donata\ ;
+豚舎 > tonsha\ ;
+足場 > ashiba\ ;
+家族 > kazoku\ ;
+順順 > junjun\ ;
+一身 > isshin\ ;
+本船 > honsen\ ;
+肥沃 > hiyoku\ ;
+対岸 > taigan\ ;
+梱包 > konpou\ ;
+一蹴 > isshuu\ ;
+林産 > rinsan\ ;
+人知 > jinchi\ ;
+罰金 > bakkin\ ;
+家教 > kakyou\ ;
+令状 > reijou\ ;
+例年 > reinen\ ;
+狭間 > hazama\ ;
+脛巾 > habaki\ ;
+趣好 > shukou\ ;
+履修 > rishuu\ ;
+信受 > shinju\ ;
+膝下 > shikka\ ;
+二級 > nikyuu\ ;
+赫怒 > kakudo\ ;
+本膳 > honzen\ ;
+起床 > kishou\ ;
+一路 > ichiro\ ;
+脆性 > zeisei\ ;
+体操 > taisou\ ;
+使役 > shieki\ ;
+中衛 > chuuei\ ;
+晩餐 > bansan\ ;
+介甲 > kaikou\ ;
+肝油 > kan''yu\ ;
+山上 > sanjou\ ;
+群論 > gunron\ ;
+小姓 > koshou\ ;
+用便 > youben\ ;
+俳優 > haiyuu\ ;
+今生 > konjou\ ;
+少女 > shoujo\ ;
+人相 > ninsou\ ;
+予約 > yoyaku\ ;
+供宴 > kyouen\ ;
+人目 > hitome\ ;
+用例 > yourei\ ;
+甘党 > amatou\ ;
+貧相 > hinsou\ ;
+背景 > haikei\ ;
+駒座 > komaza\ ;
+俗吏 > zokuri\ ;
+安楽 > anraku\ ;
+根性 > konjou\ ;
+尖塔 > sentou\ ;
+世評 > sehyou\ ;
+乗艦 > joukan\ ;
+並行 > heikou\ ;
+班田 > handen\ ;
+有蓋 > yuugai\ ;
+仔猫 > koneko\ ;
+定本 > teihon\ ;
+用件 > youken\ ;
+乗船 > jousen\ ;
+騰勢 > tousei\ ;
+実景 > jikkei\ ;
+屋内 > okunai\ ;
+学派 > gakuha\ ;
+風船 > fuusen\ ;
+用人 > younin\ ;
+柔毛 > juumou\ ;
+来社 > raisha\ ;
+現状 > genjou\ ;
+音響 > onkyou\ ;
+木肌 > kihada\ ;
+尊大 > sondai\ ;
+脳天 > nouten\ ;
+媚薬 > biyaku\ ;
+風致 > fuuchi\ ;
+不調 > fuchou\ ;
+寝床 > nedoko\ ;
+某氏 > boushi\ ;
+五穀 > gokoku\ ;
+世襲 > seshuu\ ;
+老練 > rouren\ ;
+生体 > seitai\ ;
+仔牛 > koushi\ ;
+不詳 > fushou\ ;
+実施 > jisshi\ ;
+頸輪 > kubiwa\ ;
+万謝 > bansha\ ;
+三論 > sanron\ ;
+不評 > fuhyou\ ;
+俗務 > zokumu\ ;
+駅弁 > ekiben\ ;
+晩霜 > bansou\ ;
+侠女 > kyoujo\ ;
+本署 > honsho\ ;
+寝巻 > nemaki\ ;
+村童 > sondou\ ;
+実数 > jissuu\ ;
+能弁 > nouben\ ;
+人生 > jinsei\ ;
+守株 > shushu\ ;
+何才 > nansai\ ;
+争端 > soutan\ ;
+根底 > kontei\ ;
+中蘇 > chuuso\ ;
+一議 > ichigi\ ;
+伴星 > bansei\ ;
+飛竜 > hiryuu\ ;
+根幹 > konkan\ ;
+赤帽 > akabou\ ;
+小型 > kogata\ ;
+養生 > youjou\ ;
+杯盤 > haiban\ ;
+暴走 > bousou\ ;
+上計 > joukei\ ;
+尊堂 > sondou\ ;
+格差 > kakusa\ ;
+専売 > senbai\ ;
+宿意 > shukui\ ;
+不覚 > fukaku\ ;
+俳人 > haijin\ ;
+完本 > kanpon\ ;
+耳目 > jimoku\ ;
+定数 > teisuu\ ;
+佞悪 > neiaku\ ;
+俯伏 > fufuku\ ;
+献詠 > ken''ei\ ;
+富強 > fukyou\ ;
+騙取 > henshu\ ;
+俯仰 > fugyou\ ;
+上覧 > jouran\ ;
+万言 > mangen\ ;
+対外 > taigai\ ;
+住所 > juusho\ ;
+財界 > zaikai\ ;
+耕種 > koushu\ ;
+風聞 > fuubun\ ;
+上覆 > uwaooi\ ;
+容態 > youdai\ ;
+射場 > shajou\ ;
+屍体 > shitai\ ;
+財産 > zaisan\ ;
+一語 > ichigo\ ;
+寒帯 > kantai\ ;
+寵姫 > chouki\ ;
+献言 > kengen\ ;
+伝染 > densen\ ;
+寡少 > kashou\ ;
+両虎 > ryouko\ ;
+猥談 > waidan\ ;
+越境 > ekkyou\ ;
+小器 > shouki\ ;
+上製 > jousei\ ;
+本線 > honsen\ ;
+伎楽 > gigaku\ ;
+体感 > taikan\ ;
+俗儒 > zokuju\ ;
+乃至 > naishi\ ;
+上裁 > jousai\ ;
+伝来 > denrai\ ;
+色々 > iroiro\ ;
+寝小 > neshou\ ;
+本絹 > honken\ ;
+飯盒 > hangou\ ;
+下表 > kahyou\ ;
+賤民 > senmin\ ;
+居住 > kyojuu\ ;
+腕前 > udemae\ ;
+仮泊 > kahaku\ ;
+余徳 > yotoku\ ;
+本紙 > honshi\ ;
+趨向 > suukou\ ;
+佞弁 > neiben\ ;
+中華 > chuuka\ ;
+余得 > yotoku\ ;
+害悪 > gaiaku\ ;
+封地 > houchi\ ;
+完敗 > kanpai\ ;
+交番 > kouban\ ;
+俚俗 > rizoku\ ;
+題言 > daigen\ ;
+屋上 > okujou\ ;
+木組 > kigumi\ ;
+有能 > yuunou\ ;
+尚古 > shouko\ ;
+騒動 > soudou\ ;
+背戻 > hairei\ ;
+例外 > reigai\ ;
+宣戦 > sensen\ ;
+耳環 > mimiwa\ ;
+五目 > gomoku\ ;
+寓居 > guukyo\ ;
+趣向 > shukou\ ;
+貢献 > kouken\ ;
+独逸 > doitsu\ ;
+校庭 > koutei\ ;
+資源 > shigen\ ;
+寡婦 > yamome\ ;
+尋問 > jinmon\ ;
+暴論 > bouron\ ;
+条痕 > joukon\ ;
+格子 > koushi\ ;
+企業 > kigyou\ ;
+併存 > heizon\ ;
+飲用 > in''you\ ;
+体形 > taikei\ ;
+富岳 > fugaku\ ;
+実戦 > jissen\ ;
+主脳 > shunou\ ;
+胡弓 > kokyuu\ ;
+昼餉 > hiruge\ ;
+琴柱 > kotoji\ ;
+趨勢 > suusei\ ;
+依嘱 > ishoku\ ;
+昼食 > hiruge\ ;
+寒害 > kangai\ ;
+頑迷 > ganmei\ ;
+宛所 > atesho\ ;
+某某 > boubou\ ;
+獣脂 > juushi\ ;
+低徊 > teikai\ ;
+本管 > honkan\ ;
+貯炭 > chotan\ ;
+二目 > futame\ ;
+小吏 > shouri\ ;
+人煙 > jin''en\ ;
+暴言 > bougen\ ;
+俊偉 > shun''i\ ;
+尊命 > sonmei\ ;
+官房 > kanbou\ ;
+松煙 > shouen\ ;
+肥料 > hiryou\ ;
+休暇 > kyuuka\ ;
+俗事 > zokuji\ ;
+実態 > jittai\ ;
+木箱 > kibako\ ;
+有罪 > yuuzai\ ;
+狭軌 > kyouki\ ;
+購書 > kousho\ ;
+学校 > gakkou\ ;
+木管 > mokkan\ ;
+玄米 > genmai\ ;
+珈琲 > kouhii\ ;
+風紋 > fuumon\ ;
+株屋 > kabuya\ ;
+実感 > jikkan\ ;
+尊君 > sonkun\ ;
+実意 > jitsui\ ;
+尊名 > sonmei\ ;
+低廉 > teiren\ ;
+飼犬 > kaiinu\ ;
+尊号 > songou\ ;
+他流 > taryuu\ ;
+尊台 > sondai\ ;
+末端 > mattan\ ;
+官憲 > kanken\ ;
+付注 > fuchuu\ ;
+飛白 > kasuri\ ;
+賎民 > senmin\ ;
+佐幕 > sabaku\ ;
+人災 > jinsai\ ;
+下薬 > geyaku\ ;
+密封 > mippuu\ ;
+宴席 > enseki\ ;
+小匙 > kosaji\ ;
+尊厳 > songen\ ;
+肉桂 > nikkei\ ;
+走塁 > sourui\ ;
+格好 > kakkou\ ;
+伝搬 > denpan\ ;
+寛大 > kandai\ ;
+本稿 > honkou\ ;
+書肆 > shoshi\ ;
+完投 > kantou\ ;
+子様 > kosama\ ;
+宿屋 > yadoya\ ;
+書聖 > shosei\ ;
+寿命 > jumyou\ ;
+三蔵 > sanzou\ ;
+音量 > onryou\ ;
+亡状 > boujou\ ;
+費消 > hishou\ ;
+尖兵 > senpei\ ;
+乗算 > jouzan\ ;
+暴行 > boukou\ ;
+根太 > nebuto\ ;
+議長 > gichou\ ;
+乾盃 > kanpai\ ;
+完成 > kansei\ ;
+小利 > shouri\ ;
+書翰 > shokan\ ;
+来状 > raijou\ ;
+有線 > yuusen\ ;
+仏法 > buppou\ ;
+安手 > yasude\ ;
+僅々 > kinkin\ ;
+対向 > taikou\ ;
+定性 > teisei\ ;
+豪盛 > gousei\ ;
+乾癬 > kansen\ ;
+対句 > tsuiku\ ;
+中耳 > chuuji\ ;
+育成 > ikusei\ ;
+守戦 > shusen\ ;
+校定 > koutei\ ;
+寒天 > kanten\ ;
+本社 > honsha\ ;
+下落 > geraku\ ;
+警防 > keibou\ ;
+寒夜 > kan''ya\ ;
+守成 > shusei\ ;
+特高 > tokkou\ ;
+末社 > massha\ ;
+胸奥 > kyouou\ ;
+佳境 > kakyou\ ;
+普通 > futsuu\ ;
+佗寝 > wabine\ ;
+実弟 > jittei\ ;
+玲瓏 > reirou\ ;
+老眼 > rougan\ ;
+豊穣 > houjou\ ;
+栽培 > saibai\ ;
+義臣 > gishin\ ;
+牡鶏 > ondori\ ;
+小兵 > kohyou\ ;
+月経 > gekkei\ ;
+背広 > sebiro\ ;
+季春 > kishun\ ;
+小児 > shouni\ ;
+豊稔 > hounen\ ;
+牝鷄 > hinkei\ ;
+定形 > teikei\ ;
+条片 > jouhen\ ;
+係争 > keisou\ ;
+象眼 > zougan\ ;
+玳瑁 > taimai\ ;
+暗誦 > anshou\ ;
+騒人 > soujin\ ;
+宗徒 > shuuto\ ;
+子株 > kokabu\ ;
+昼間 > hiruma\ ;
+低層 > teisou\ ;
+根城 > nejiro\ ;
+亀甲 > kikkou\ ;
+賀正 > gashou\ ;
+顕著 > kencho\ ;
+牡鳥 > ondori\ ;
+騒乱 > souran\ ;
+尊公 > sonkou\ ;
+宵宮 > yomiya\ ;
+交点 > kouten\ ;
+住専 > juusen\ ;
+音速 > onsoku\ ;
+伐採 > bassai\ ;
+家宅 > kataku\ ;
+飛球 > hikyuu\ ;
+暗証 > anshou\ ;
+尊兄 > sonkei\ ;
+便乗 > binjou\ ;
+専制 > sensei\ ;
+乾田 > kanden\ ;
+家学 > kagaku\ ;
+伸度 > shindo\ ;
+会所 > kaisho\ ;
+使嗾 > shisou\ ;
+豆科 > mameka\ ;
+脱党 > dattou\ ;
+会戦 > kaisen\ ;
+佞姦 > neikan\ ;
+住家 > sumika\ ;
+玲玲 > reirei\ ;
+侶伴 > ryohan\ ;
+胞子 > houshi\ ;
+定年 > teinen\ ;
+時鐘 > jishou\ ;
+賜杯 > shihai\ ;
+財源 > zaigen\ ;
+並置 > heichi\ ;
+安息 > ansoku\ ;
+尊像 > sonzou\ ;
+不良 > furyou\ ;
+仕樣 > shiyou\ ;
+東漸 > touzen\ ;
+定常 > teijou\ ;
+佞奸 > neikan\ ;
+献茶 > kencha\ ;
+一菊 > ikkiku\ ;
+宮家 > miyake\ ;
+風神 > fuujin\ ;
+胚子 > haishi\ ;
+孝敬 > koukei\ ;
+対処 > taisho\ ;
+両義 > ryougi\ ;
+丹精 > tansei\ ;
+仕様 > shiyou\ ;
+寒地 > kanchi\ ;
+不興 > fukyou\ ;
+万芸 > bangei\ ;
+不臣 > fushin\ ;
+脚半 > kyahan\ ;
+賢明 > kenmei\ ;
+上船 > jousen\ ;
+貯水 > chosui\ ;
+容姿 > youshi\ ;
+上航 > joukou\ ;
+少佐 > shousa\ ;
+枯木 > kareki\ ;
+一荘 > iichan\ ;
+寸前 > sunzen\ ;
+宏弁 > kouben\ ;
+対内 > tainai\ ;
+老生 > rousei\ ;
+件数 > kensuu\ ;
+下臣 > kashin\ ;
+獺祭 > dassai\ ;
+独語 > dokugo\ ;
+上臼 > uwausu\ ;
+小作 > kosaku\ ;
+本盗 > hontou\ ;
+飽満 > houman\ ;
+校外 > kougai\ ;
+寸分 > sunbun\ ;
+独話 > dokuwa\ ;
+導体 > doutai\ ;
+万般 > banpan\ ;
+上臈 > jourou\ ;
+星霜 > seisou\ ;
+使命 > shimei\ ;
+物騒 > bussou\ ;
+木目 > mokume\ ;
+主管 > shukan\ ;
+令望 > reibou\ ;
+上腿 > joutai\ ;
+宦官 > kangan\ ;
+富国 > fukoku\ ;
+更紗 > sarasa\ ;
+人気 > hitoke\ ;
+木皿 > kizara\ ;
+人民 > jinmin\ ;
+射倖 > shakou\ ;
+上腕 > jouwan\ ;
+尊体 > sontai\ ;
+木皮 > mokuhi\ ;
+代替 > daitai\ ;
+代書 > daisho\ ;
+某所 > bousho\ ;
+昂騰 > koutou\ ;
+子方 > kokata\ ;
+小事 > shouji\ ;
+作場 > sakuba\ ;
+貧民 > hinmin\ ;
+今様 > imayou\ ;
+実射 > jissha\ ;
+対偶 > taiguu\ ;
+京浜 > keihin\ ;
+書簡 > shokan\ ;
+不肖 > fushou\ ;
+東海 > toukai\ ;
+有税 > yuuzei\ ;
+体外 > taigai\ ;
+果核 > kakaku\ ;
+預託 > yotaku\ ;
+脱会 > dakkai\ ;
+一興 > ikkyou\ ;
+上背 > uwazei\ ;
+寵児 > chouji\ ;
+完工 > kankou\ ;
+上肢 > joushi\ ;
+智謀 > chibou\ ;
+類聚 > ruijuu\ ;
+本番 > honban\ ;
+東洋 > touyou\ ;
+特需 > tokuju\ ;
+貴様 > kisama\ ;
+聰明 > soumei\ ;
+風眼 > fuugan\ ;
+上聞 > joubun\ ;
+実子 > jisshi\ ;
+老獪 > roukai\ ;
+杯洗 > haisen\ ;
+家塾 > kajuku\ ;
+令旨 > reishi\ ;
+併呑 > heidon\ ;
+資材 > shizai\ ;
+低声 > teisei\ ;
+争点 > souten\ ;
+資本 > shihon\ ;
+作土 > sakudo\ ;
+尊上 > sonjou\ ;
+寛厳 > kangen\ ;
+会式 > eshiki\ ;
+羚羊 > reiyou\ ;
+併合 > heigou\ ;
+乾燥 > kansou\ ;
+伶官 > reikan\ ;
+寛厚 > kankou\ ;
+三者 > sansha\ ;
+豪爽 > gousou\ ;
+作図 > sakuzu\ ;
+猫背 > nekoze\ ;
+飛火 > tobihi\ ;
+片鱗 > henrin\ ;
+警醒 > keisei\ ;
+駅名 > ekimei\ ;
+代数 > daisuu\ ;
+香奠 > kouden\ ;
+豐田 > toyota\ ;
+翔破 > shouha\ ;
+独行 > dokkou\ ;
+根号 > kongou\ ;
+肝心 > kanjin\ ;
+牛馬 > gyuuba\ ;
+人権 > jinken\ ;
+肺尖 > haisen\ ;
+丸秘 > maruhi\ ;
+飛瀑 > hibaku\ ;
+体型 > taikei\ ;
+頒行 > hankou\ ;
+東毎 > toumai\ ;
+須要 > shuyou\ ;
+対人 > taijin\ ;
+胡国 > kokoku\ ;
+案内 > an''nai\ ;
+何回 > nankai\ ;
+普請 > fushin\ ;
+時速 > jisoku\ ;
+孤愁 > koshuu\ ;
+護身 > goshin\ ;
+木琴 > mokkin\ ;
+実姉 > jisshi\ ;
+仏書 > bussho\ ;
+完封 > kanpuu\ ;
+耳殻 > jikaku\ ;
+類纂 > ruisan\ ;
+青黴 > aokabi\ ;
+木理 > mokuri\ ;
+供与 > kyouyo\ ;
+聡明 > soumei\ ;
+讒謗 > zanbou\ ;
+寝刃 > netaba\ ;
+一羽 > ichiwa\ ;
+肉感 > nikkan\ ;
+賢才 > kensai\ ;
+一義 > ichigi\ ;
+低地 > teichi\ ;
+桂冠 > keikan\ ;
+安寧 > an''nei\ ;
+能動 > noudou\ ;
+羊羹 > youkan\ ;
+饗応 > kyouou\ ;
+羊羮 > youkan\ ;
+聖書 > seisho\ ;
+主砲 > shuhou\ ;
+低回 > teikai\ ;
+寝具 > shingu\ ;
+貿易 > boueki\ ;
+現数 > gensuu\ ;
+音調 > onchou\ ;
+交歓 > koukan\ ;
+駅前 > ekimae\ ;
+守宮 > yamori\ ;
+景観 > keikan\ ;
+音読 > ondoku\ ;
+交款 > koukan\ ;
+枚数 > maisuu\ ;
+聡敏 > soubin\ ;
+貧棒 > binbou\ ;
+上線 > jousen\ ;
+順行 > junkou\ ;
+月相 > gessou\ ;
+子房 > shibou\ ;
+例会 > reikai\ ;
+最短 > saitan\ ;
+青鷺 > aosagi\ ;
+学徒 > gakuto\ ;
+丹砂 > tansha\ ;
+有益 > yuueki\ ;
+今晩 > konban\ ;
+井泉 > seisen\ ;
+寒剤 > kanzai\ ;
+賢慮 > kenryo\ ;
+孝悌 > koutei\ ;
+肯定 > koutei\ ;
+下絵 > shitae\ ;
+讒言 > zangen\ ;
+赦免 > shamen\ ;
+予測 > yosoku\ ;
+翻然 > honzen\ ;
+伴奏 > bansou\ ;
+賛成 > sansei\ ;
+風琴 > fuukin\ ;
+伝導 > dendou\ ;
+林政 > rinsei\ ;
+根冠 > konkan\ ;
+起伏 > kifuku\ ;
+下級 > kakyuu\ ;
+主眼 > shugan\ ;
+三組 > mikumi\ ;
+三絃 > sangen\ ;
+宝塔 > houtou\ ;
+聖旨 > seishi\ ;
+不精 > bushou\ ;
+上納 > jounou\ ;
+王物 > oumono\ ;
+一縷 > ichiru\ ;
+二流 > niryuu\ ;
+脚下 > kyakka\ ;
+根元 > nemoto\ ;
+寒冷 > kanrei\ ;
+聖断 > seidan\ ;
+佩剣 > haiken\ ;
+嫌煙 > ken''en\ ;
+校合 > kougou\ ;
+条款 > joukan\ ;
+学府 > gakufu\ ;
+仁智 > jinchi\ ;
+人材 > jinzai\ ;
+校友 > kouyuu\ ;
+佩刀 > haitou\ ;
+未熟 > mijuku\ ;
+朱点 > shuten\ ;
+上米 > joumai\ ;
+中破 > chuuha\ ;
+人望 > jinbou\ ;
+貴族 > kizoku\ ;
+寡作 > kasaku\ ;
+官報 > kanpou\ ;
+中砥 > nakato\ ;
+宏大 > koudai\ ;
+颯爽 > sassou\ ;
+実地 > jitchi\ ;
+孝弟 > koutei\ ;
+板書 > bansho\ ;
+背嚢 > hainou\ ;
+賦役 > buyaku\ ;
+有用 > yuuyou\ ;
+宏壮 > kousou\ ;
+有産 > yuusan\ ;
+丙種 > heishu\ ;
+定型 > teikei\ ;
+月産 > gessan\ ;
+伏屋 > fuseya\ ;
+一級 > ikkyuu\ ;
+人智 > jinchi\ ;
+完売 > kanbai\ ;
+村民 > sonmin\ ;
+球技 > kyuugi\ ;
+枚挙 > maikyo\ ;
+日頃 > higoro\ ;
+下策 > gesaku\ ;
+青鮫 > aozame\ ;
+字引 > jibiki\ ;
+仁政 > jinsei\ ;
+低吟 > teigin\ ;
+日韓 > nikkan\ ;
+球戯 > kyuugi\ ;
+何千 > nanzen\ ;
+何十 > nanjuu\ ;
+賢弟 > kentei\ ;
+上等 > joutou\ ;
+馬力 > bariki\ ;
+存廃 > zonpai\ ;
+聯想 > rensou\ ;
+使丁 > shitei\ ;
+三等 > santou\ ;
+主用 > shuyou\ ;
+一籌 > itchuu\ ;
+佳作 > kasaku\ ;
+寛仁 > kanjin\ ;
+瑶台 > youdai\ ;
+子役 > koyaku\ ;
+伏字 > fuseji\ ;
+耐水 > taisui\ ;
+上端 > joutan\ ;
+駄作 > dasaku\ ;
+丹田 > tanden\ ;
+三竿 > sankan\ ;
+人文 > jinmon\ ;
+駅伝 > ekiden\ ;
+体勢 > taisei\ ;
+字幕 > jimaku\ ;
+伝奏 > densou\ ;
+子弟 > shitei\ ;
+万端 > bantan\ ;
+上空 > joukuu\ ;
+獰猛 > neimou\ ;
+香合 > kougou\ ;
+片雲 > hen''un\ ;
+独英 > dokuei\ ;
+校内 > kounai\ ;
+日雀 > higara\ ;
+題簽 > daisen\ ;
+密偵 > mittei\ ;
+頻繁 > hinpan\ ;
+一策 > issaku\ ;
+何分 > nanpun\ ;
+牽連 > kenren\ ;
+孫子 > magoko\ ;
+介抱 > kaihou\ ;
+三種 > sanshu\ ;
+体制 > taisei\ ;
+饗宴 > kyouen\ ;
+上程 > joutei\ ;
+日陰 > hikage\ ;
+書生 > shosei\ ;
+旬間 > junkan\ ;
+馬克 > maruku\ ;
+官営 > kan''ei\ ;
+体刑 > taikei\ ;
+羽田 > haneda\ ;
+顆粒 > karyuu\ ;
+主班 > shuhan\ ;
+一笑 > isshou\ ;
+面頬 > menpoo\ ;
+日限 > higiri\ ;
+不祥 > fushou\ ;
+両目 > ryoume\ ;
+本源 > hongen\ ;
+肉屋 > nikuya\ ;
+胴体 > doutai\ ;
+姦計 > kankei\ ;
+交替 > koutai\ ;
+静養 > seiyou\ ;
+財政 > zaisei\ ;
+孤客 > kokaku\ ;
+令弟 > reitei\ ;
+株価 > kabuka\ ;
+美空 > misora\ ;
+更生 > kousei\ ;
+寄信 > kishin\ ;
+聖戦 > seisen\ ;
+中生 > nakate\ ;
+体内 > tainai\ ;
+背反 > haihan\ ;
+独自 > dokuji\ ;
+代弁 > daiben\ ;
+密使 > misshi\ ;
+東方 > touhou\ ;
+謹選 > kinsen\ ;
+豊潤 > houjun\ ;
+会場 > kaijou\ ;
+会報 > kaihou\ ;
+時評 > jihyou\ ;
+家元 > iemoto\ ;
+牧野 > bokuya\ ;
+面面 > menmen\ ;
+資性 > shisei\ ;
+事業 > jigyou\ ;
+丁稚 > detchi\ ;
+来書 > raisho\ ;
+日長 > hinaga\ ;
+五桁 > goketa\ ;
+会堂 > kaidou\ ;
+美称 > bishou\ ;
+密会 > mikkai\ ;
+賊徒 > zokuto\ ;
+猫科 > nekoka\ ;
+旅館 > ryokan\ ;
+胴乱 > douran\ ;
+任官 > ninkan\ ;
+貞操 > teisou\ ;
+交易 > koueki\ ;
+官命 > kanmei\ ;
+家僕 > kaboku\ ;
+主犯 > shuhan\ ;
+罫線 > keisen\ ;
+孟子 > moushi\ ;
+群盲 > gunmou\ ;
+胎動 > taidou\ ;
+昏迷 > konmei\ ;
+並用 > heiyou\ ;
+乳母 > nyuubo\ ;
+群盗 > guntou\ ;
+他心 > tashin\ ;
+老死 > roushi\ ;
+孝子 > koushi\ ;
+纏頭 > tentou\ ;
+犯行 > hankou\ ;
+豊満 > houman\ ;
+住僧 > juusou\ ;
+官名 > kanmei\ ;
+一票 > ippyou\ ;
+奔騰 > hontou\ ;
+査収 > sashuu\ ;
+二核 > nikaku\ ;
+実勢 > jissei\ ;
+仮屋 > kariya\ ;
+佞人 > neijin\ ;
+末法 > mappou\ ;
+香典 > kouden\ ;
+実効 > jikkou\ ;
+来方 > kikata\ ;
+警視 > keishi\ ;
+飲料 > inryou\ ;
+家信 > kashin\ ;
+官印 > kan''in\ ;
+人才 > jinsai\ ;
+人手 > hitode\ ;
+書状 > shojou\ ;
+容体 > youdai\ ;
+仮寝 > karine\ ;
+孔孟 > koumou\ ;
+仮家 > kariie\ ;
+孔子 > koushi\ ;
+胎内 > tainai\ ;
+仁愛 > jin''ai\ ;
+来攻 > raikou\ ;
+宝剣 > houken\ ;
+家作 > kasaku\ ;
+大麦 > oomugi\ ;
+狭義 > kyougi\ ;
+謝金 > shakin\ ;
+実刑 > jikkei\ ;
+養成 > yousei\ ;
+条文 > joubun\ ;
+校主 > koushu\ ;
+子守 > komori\ ;
+宿世 > sukuse\ ;
+奮闘 > funtou\ ;
+宗務 > shuumu\ ;
+婚礼 > konrei\ ;
+子孫 > shison\ ;
+三省 > sansei\ ;
+本殿 > honden\ ;
+三相 > sansou\ ;
+猛禽 > moukin\ ;
+宝刀 > houtou\ ;
+群生 > gunsei\ ;
+一石 > isseki\ ;
+実写 > jissha\ ;
+仁恵 > jinkei\ ;
+五日 > itsuka\ ;
+風浪 > fuurou\ ;
+智能 > chinou\ ;
+上皇 > joukou\ ;
+交換 > koukan\ ;
+享持 > kyouji\ ;
+一瞬 > isshun\ ;
+宝冠 > houkan\ ;
+官制 > kansei\ ;
+実兄 > jikkei\ ;
+宝典 > houten\ ;
+風洞 > fuudou\ ;
+斬首 > zanshu\ ;
+日銭 > hizeni\ ;
+乗法 > jouhou\ ;
+本欄 > honran\ ;
+献盃 > kenpai\ ;
+人情 > ninjou\ ;
+住人 > juunin\ ;
+仏師 > busshi\ ;
+家中 > kachuu\ ;
+家並 > yanami\ ;
+豊水 > housui\ ;
+賢妻 > kensai\ ;
+代官 > daikan\ ;
+丁目 > choume\ ;
+令孫 > reison\ ;
+仏工 > bukkou\ ;
+一目 > hitome\ ;
+肉塊 > nikkai\ ;
+京成 > keisei\ ;
+暮秋 > boshuu\ ;
+智者 > chisha\ ;
+方面 > houmen\ ;
+乾板 > kanpan\ ;
+存外 > zongai\ ;
+令嬢 > reijou\ ;
+美的 > biteki\ ;
+伶優 > reiyuu\ ;
+乾杯 > kanpai\ ;
+人性 > jinsei\ ;
+乗気 > noriki\ ;
+上番 > jouban\ ;
+狗肉 > kuniku\ ;
+風水 > fuusui\ ;
+乾材 > kanzai\ ;
+譜表 > fuhyou\ ;
+付属 > fuzoku\ ;
+上界 > joukai\ ;
+三番 > sanban\ ;
+学園 > gakuen\ ;
+旨酒 > shishu\ ;
+謙遜 > kenson\ ;
+上田 > jouden\ ;
+三界 > sangai\ ;
+夜鷹 > yotaka\ ;
+仲夏 > chuuka\ ;
+守勢 > shusei\ ;
+贈呈 > zoutei\ ;
+論題 > rondai\ ;
+伴僧 > bansou\ ;
+会同 > kaidou\ ;
+会合 > kaigou\ ;
+理学 > rigaku\ ;
+伺候 > shikou\ ;
+令婿 > reisei\ ;
+球宴 > kyuuen\ ;
+交戦 > kousen\ ;
+旧都 > kyuuto\ ;
+伯兄 > hakkei\ ;
+贈号 > zougou\ ;
+中火 > chuubi\ ;
+伝単 > dentan\ ;
+宣伝 > senden\ ;
+木槿 > mukuge\ ;
+方陣 > houjin\ ;
+贋印 > nisein\ ;
+令娘 > reijou\ ;
+背任 > hainin\ ;
+翻案 > hon''an\ ;
+王様 > ousama\ ;
+任地 > ninchi\ ;
+実体 > jittai\ ;
+一疋 > ippiki\ ;
+老来 > rourai\ ;
+物資 > busshi\ ;
+他宗 > tashuu\ ;
+旦那 > dan''na\ ;
+好配 > kouhai\ ;
+老杉 > rousan\ ;
+令姉 > reishi\ ;
+仕官 > shikan\ ;
+完全 > kanzen\ ;
+伝動 > dendou\ ;
+断面 > danmen\ ;
+令妹 > reimai\ ;
+夜鳥 > yachou\ ;
+猛省 > mousei\ ;
+一画 > ikkaku\ ;
+柔和 > nyuuwa\ ;
+早退 > soutai\ ;
+定例 > teirei\ ;
+現存 > genzon\ ;
+乱杭 > rangui\ ;
+伴侶 > hanryo\ ;
+交感 > koukan\ ;
+定住 > teijuu\ ;
+請願 > seigan\ ;
+守兵 > shuhei\ ;
+財形 > zaikei\ ;
+背中 > senaka\ ;
+特許 > tokkyo\ ;
+調馬 > chouba\ ;
+存在 > sonzai\ ;
+背丈 > setake\ ;
+特訓 > tokkun\ ;
+不猟 > furyou\ ;
+爆音 > bakuon\ ;
+交情 > koujou\ ;
+本案 > hon''an\ ;
+下獄 > gegoku\ ;
+今尚 > imanao\ ;
+本校 > honkou\ ;
+人工 > jinkou\ ;
+乱暴 > ranbou\ ;
+望樓 > bourou\ ;
+三猿 > mizaru\ ;
+論陣 > ronjin\ ;
+顕現 > kengen\ ;
+伶人 > reijin\ ;
+東征 > tousei\ ;
+斜頸 > shakei\ ;
+豪放 > gouhou\ ;
+一理 > ichiri\ ;
+主法 > shuhou\ ;
+謹言 > kingen\ ;
+朱書 > shusho\ ;
+館娃 > kan''ai\ ;
+片輪 > katawa\ ;
+望楼 > bourou\ ;
+安値 > yasune\ ;
+本来 > honrai\ ;
+明言 > meigen\ ;
+翰林 > kanrin\ ;
+令堂 > reidou\ ;
+明解 > meikai\ ;
+万状 > banjou\ ;
+宗主 > soushu\ ;
+霊魂 > reikon\ ;
+本木 > motoki\ ;
+青銅 > seidou\ ;
+一獲 > ikkaku\ ;
+本望 > honmou\ ;
+罹病 > ribyou\ ;
+願状 > ganjou\ ;
+末末 > suezue\ ;
+子嚢 > shinou\ ;
+本書 > honsho\ ;
+暗礁 > anshou\ ;
+明視 > meishi\ ;
+斜面 > shamen\ ;
+片身 > katami\ ;
+二手 > futate\ ;
+諒闇 > ryouan\ ;
+乱数 > ransuu\ ;
+調音 > chouon\ ;
+春蚕 > harugo\ ;
+好転 > kouten\ ;
+木末 > konure\ ;
+肌合 > hadaai\ ;
+京師 > keishi\ ;
+王朝 > ouchou\ ;
+館外 > kangai\ ;
+企及 > kikyuu\ ;
+謹製 > kinsei\ ;
+犬舎 > kensha\ ;
+雷鳴 > raimei\ ;
+任命 > ninmei\ ;
+書法 > shohou\ ;
+什宝 > juuhou\ ;
+人屋 > hitoya\ ;
+朦朧 > mourou\ ;
+朦朦 > moumou\ ;
+代地 > daichi\ ;
+中洲 > nakasu\ ;
+賛嘆 > santan\ ;
+日足 > hiashi\ ;
+青酸 > seisan\ ;
+斜陽 > shayou\ ;
+大風 > ookaze\ ;
+諸道 > shodou\ ;
+奪還 > dakkan\ ;
+中波 > chuuha\ ;
+音締 > nejime\ ;
+霊験 > reigen\ ;
+不為 > futame\ ;
+天顔 > tengan\ ;
+物見 > monomi\ ;
+本旨 > honshi\ ;
+壮齢 > sourei\ ;
+学務 > gakumu\ ;
+替歌 > kaeuta\ ;
+存命 > zonmei\ ;
+奮迅 > funjin\ ;
+賭博 > tobaku\ ;
+大願 > taigan\ ;
+杉戸 > sugido\ ;
+貧寒 > hinkan\ ;
+媾曳 > aibiki\ ;
+有様 > ariyou\ ;
+本文 > honmon\ ;
+件名 > kenmei\ ;
+来店 > raiten\ ;
+本数 > honsuu\ ;
+斧鑿 > fusaku\ ;
+来年 > rainen\ ;
+猛獣 > moujuu\ ;
+文題 > bundai\ ;
+王族 > ouzoku\ ;
+企劃 > kikaku\ ;
+五徳 > gotoku\ ;
+三災 > sansai\ ;
+好走 > kousou\ ;
+万点 > manten\ ;
+今夜 > kon''ya\ ;
+飯店 > hanten\ ;
+養子 > youshi\ ;
+中気 > chuuki\ ;
+顕然 > kenzen\ ;
+令嗣 > reishi\ ;
+謙譲 > kenjou\ ;
+壮麗 > sourei\ ;
+東岸 > tougan\ ;
+伝令 > denrei\ ;
+仏塔 > buttou\ ;
+霜雰 > soufun\ ;
+賞味 > shoumi\ ;
+頭痛 > zutsuu\ ;
+主権 > shuken\ ;
+雷魚 > raigyo\ ;
+万灯 > mandou\ ;
+聖壇 > seidan\ ;
+財宝 > zaihou\ ;
+講談 > koudan\ ;
+夜風 > yokaze\ ;
+貪婪 > donran\ ;
+献灯 > kentou\ ;
+伐倒 > battou\ ;
+現地 > genchi\ ;
+肢体 > shitai\ ;
+猛犬 > mouken\ ;
+更正 > kousei\ ;
+天雷 > tenrai\ ;
+朝晩 > asaban\ ;
+現在 > genzai\ ;
+他国 > takoku\ ;
+朗朗 > rourou\ ;
+仮名 > kemyou\ ;
+風景 > fuukei\ ;
+論鋒 > ronpou\ ;
+文面 > bunmen\ ;
+伎倆 > giryou\ ;
+餃子 > gyouza\ ;
+井底 > seitei\ ;
+学兄 > gakkei\ ;
+犯罪 > hanzai\ ;
+大難 > tainan\ ;
+中欧 > chuuou\ ;
+伝世 > densei\ ;
+賛同 > sandou\ ;
+不漁 > furyou\ ;
+太陽 > taiyou\ ;
+天際 > tensai\ ;
+暴状 > boujou\ ;
+旋転 > senten\ ;
+多額 > tagaku\ ;
+天険 > tenken\ ;
+聖堂 > seidou\ ;
+老手 > roushu\ ;
+会主 > kaishu\ ;
+東宮 > touguu\ ;
+東宝 > touhou\ ;
+聖域 > seiiki\ ;
+大隊 > daitai\ ;
+代品 > daihin\ ;
+月桂 > gekkei\ ;
+頓知 > tonchi\ ;
+老成 > rousei\ ;
+耐性 > taisei\ ;
+敵飛 > tekihi\ ;
+順礼 > junrei\ ;
+乗数 > jousuu\ ;
+夕顔 > yuugao\ ;
+乱戦 > ransen\ ;
+時習 > jishuu\ ;
+考慮 > kouryo\ ;
+断金 > dankin\ ;
+不測 > fusoku\ ;
+介在 > kaizai\ ;
+太閤 > taikou\ ;
+旧誼 > kyuugi\ ;
+整風 > seifuu\ ;
+任免 > ninmen\ ;
+存分 > zonbun\ ;
+令名 > reimei\ ;
+飲屋 > nomiya\ ;
+聖地 > seichi\ ;
+人外 > ningai\ ;
+斧鉞 > fuetsu\ ;
+夜霧 > yogiri\ ;
+猛然 > mouzen\ ;
+聯合 > rengou\ ;
+人士 > jinshi\ ;
+面貌 > menbou\ ;
+販売 > hanbai\ ;
+乾性 > kansei\ ;
+主根 > shukon\ ;
+大関 > oozeki\ ;
+旧詠 > kyuuei\ ;
+今回 > konkai\ ;
+日誌 > nisshi\ ;
+早計 > soukei\ ;
+代参 > daisan\ ;
+大門 > daimon\ ;
+本拠 > honkyo\ ;
+有望 > yuubou\ ;
+狡知 > kouchi\ ;
+飮屋 > nomiya\ ;
+整頓 > seiton\ ;
+旧記 > kyuuki\ ;
+課長 > kachou\ ;
+妄言 > mougen\ ;
+諸賢 > shoken\ ;
+晩稲 > bantou\ ;
+些少 > sashou\ ;
+亡子 > boushi\ ;
+貴国 > kikoku\ ;
+旅路 > tabiji\ ;
+豪快 > goukai\ ;
+日計 > nikkei\ ;
+早見 > hayami\ ;
+電顕 > denken\ ;
+館員 > kan''in\ ;
+賢兄 > kenkei\ ;
+外電 > gaiden\ ;
+現員 > gen''in\ ;
+板塀 > itabei\ ;
+片言 > hengen\ ;
+交媾 > koukou\ ;
+下流 > karyuu\ ;
+罪状 > zaijou\ ;
+旧規 > kyuuki\ ;
+斯道 > shidou\ ;
+現品 > genpin\ ;
+玩弄 > ganrou\ ;
+放鷹 > houyou\ ;
+学会 > gakkai\ ;
+奉還 > houkan\ ;
+不況 > fukyou\ ;
+奉遷 > housen\ ;
+誓願 > seigan\ ;
+本懐 > honkai\ ;
+丹朱 > tanshu\ ;
+大鑑 > taikan\ ;
+丸木 > maruki\ ;
+学事 > gakuji\ ;
+月旦 > gettan\ ;
+夜長 > yonaga\ ;
+東天 > touten\ ;
+奉送 > housou\ ;
+東大 > toudai\ ;
+面談 > mendan\ ;
+奉迎 > hougei\ ;
+書林 > shorin\ ;
+奸計 > kankei\ ;
+燕雀 > enjaku\ ;
+有数 > yuusuu\ ;
+狼狽 > roubai\ ;
+媒染 > baisen\ ;
+繁閑 > hankan\ ;
+仲値 > nakane\ ;
+上水 > jousui\ ;
+誘電 > yuuden\ ;
+時給 > jikyuu\ ;
+雄鶏 > ondori\ ;
+晴着 > haregi\ ;
+罰点 > batten\ ;
+亡姉 > boushi\ ;
+大鎌 > oogama\ ;
+亡妻 > bousai\ ;
+青豆 > aomame\ ;
+貧困 > hinkon\ ;
+仲保 > chuuho\ ;
+珍奇 > chinki\ ;
+謀計 > boukei\ ;
+主旨 > shushi\ ;
+亢奮 > koufun\ ;
+版行 > hankou\ ;
+大鍋 > oonabe\ ;
+暴漢 > boukan\ ;
+上段 > joudan\ ;
+最早 > mohaya\ ;
+雷電 > raiden\ ;
+万民 > banmin\ ;
+老廃 > rouhai\ ;
+令兄 > reikei\ ;
+委縮 > ishuku\ ;
+乗手 > norite\ ;
+仏参 > bussan\ ;
+昇華 > shouka\ ;
+一泊 > ippaku\ ;
+諷諌 > fuukan\ ;
+主文 > shubun\ ;
+雄鳥 > ondori\ ;
+現勢 > gensei\ ;
+老幼 > rouyou\ ;
+語長 > gochou\ ;
+奔走 > honsou\ ;
+老年 > rounen\ ;
+中期 > chuuki\ ;
+三死 > sanshi\ ;
+他力 > tariki\ ;
+本性 > honsei\ ;
+付則 > fusoku\ ;
+翻弄 > honrou\ ;
+財団 > zaidan\ ;
+謙虚 > kenkyo\ ;
+代僧 > daisou\ ;
+予審 > yoshin\ ;
+主攻 > shukou\ ;
+誌面 > shimen\ ;
+万死 > banshi\ ;
+老師 > roushi\ ;
+万歳 > manzai\ ;
+子供 > kodomo\ ;
+存亡 > sonbou\ ;
+二子 > futago\ ;
+上欄 > jouran\ ;
+仮作 > kasaku\ ;
+順番 > junban\ ;
+賢人 > kenjin\ ;
+雲集 > unshuu\ ;
+諳誦 > anshou\ ;
+雲雀 > hibari\ ;
+現前 > genzen\ ;
+老巧 > roukou\ ;
+介卵 > kairan\ ;
+大鉈 > oonata\ ;
+詩魂 > shikon\ ;
+奇蹟 > kiseki\ ;
+羊水 > yousui\ ;
+群棲 > gunsei\ ;
+難題 > nandai\ ;
+天金 > tenkin\ ;
+本影 > hon''ei\ ;
+耐寒 > taikan\ ;
+天重 > tenjuu\ ;
+並木 > namiki\ ;
+本当 > hontou\ ;
+斜辺 > shahen\ ;
+賢主 > kenshu\ ;
+書斎 > shosai\ ;
+羊毛 > youmou\ ;
+大金 > taikin\ ;
+静観 > seikan\ ;
+奇跡 > kiseki\ ;
+仁君 > jinkun\ ;
+不様 > buzama\ ;
+人員 > jin''in\ ;
+中日 > nakabi\ ;
+末弟 > mattei\ ;
+人品 > jinpin\ ;
+三権 > sanken\ ;
+諮詢 > shijun\ ;
+縦隊 > juutai\ ;
+一次 > ichiji\ ;
+熱風 > neppuu\ ;
+象嵌 > zougan\ ;
+大酔 > taisui\ ;
+上様 > uezama\ ;
+大酒 > oozake\ ;
+人命 > jinmei\ ;
+縦陣 > juujin\ ;
+嫁御 > yomego\ ;
+賞与 > shouyo\ ;
+朝恩 > chouon\ ;
+本店 > honten\ ;
+雲間 > kumoma\ ;
+始終 > shijuu\ ;
+論賛 > ronsan\ ;
+更改 > koukai\ ;
+敢闘 > kantou\ ;
+人君 > jinkun\ ;
+現像 > genzou\ ;
+人名 > jinmei\ ;
+夭逝 > yousei\ ;
+散開 > sankai\ ;
+仏典 > butten\ ;
+三業 > sangou\ ;
+諫言 > kangen\ ;
+代任 > dainin\ ;
+羨望 > senbou\ ;
+試験 > shiken\ ;
+世柄 > yogara\ ;
+人口 > jinkou\ ;
+語録 > goroku\ ;
+易者 > ekisha\ ;
+天道 > tendou\ ;
+人参 > ninjin\ ;
+天遍 > tenpen\ ;
+天運 > ten''un\ ;
+一樹 > ichiju\ ;
+代人 > dainin\ ;
+今冬 > kontou\ ;
+上棟 > joutou\ ;
+大道 > daidou\ ;
+離隔 > rikaku\ ;
+仏僧 > bussou\ ;
+多量 > taryou\ ;
+日蔭 > hikage\ ;
+聖典 > seiten\ ;
+暴民 > boumin\ ;
+離陸 > ririku\ ;
+老害 > rougai\ ;
+文選 > bunsen\ ;
+上梓 > joushi\ ;
+木工 > mokkou\ ;
+乱射 > ransha\ ;
+天辺 > teppen\ ;
+責務 > sekimu\ ;
+文運 > bun''un\ ;
+旅装 > ryosou\ ;
+諦観 > teikan\ ;
+老子 > roushi\ ;
+豊年 > hounen\ ;
+大農 > dainou\ ;
+方言 > hougen\ ;
+奏請 > sousei\ ;
+三桁 > miketa\ ;
+本島 > hontou\ ;
+主戦 > shusen\ ;
+老嬢 > roujou\ ;
+聖像 > seizou\ ;
+三校 > sankou\ ;
+旅行 > ryokou\ ;
+難関 > nankan\ ;
+新語 > shingo\ ;
+大輪 > tairin\ ;
+不朽 > fukyuu\ ;
+放題 > houdai\ ;
+本山 > honzan\ ;
+天軍 > tengun\ ;
+三枚 > sanmai\ ;
+板前 > itamae\ ;
+現代 > gendai\ ;
+頻死 > hinshi\ ;
+燐鉱 > rinkou\ ;
+仁兄 > jinkei\ ;
+本屋 > hon''ya\ ;
+不服 > fufuku\ ;
+電鈴 > denrei\ ;
+三板 > sanpan\ ;
+類本 > ruihon\ ;
+声門 > seimon\ ;
+曚昧 > moumai\ ;
+現今 > genkon\ ;
+風帯 > fuutai\ ;
+享受 > kyouju\ ;
+風師 > fuushi\ ;
+仙丹 > sentan\ ;
+人出 > hitode\ ;
+類書 > ruisho\ ;
+本尊 > honzon\ ;
+上期 > kamiki\ ;
+熱闘 > nettou\ ;
+珍味 > chinmi\ ;
+書房 > shobou\ ;
+一案 > ichian\ ;
+三本 > sanbon\ ;
+養分 > youbun\ ;
+有性 > yuusei\ ;
+万来 > banrai\ ;
+豪奢 > gousha\ ;
+改題 > kaidai\ ;
+上書 > jousho\ ;
+木屑 > kikuzu\ ;
+仏会 > butsue\ ;
+館主 > kanshu\ ;
+三曹 > sansou\ ;
+三更 > sankou\ ;
+献杯 > kenpai\ ;
+亡命 > boumei\ ;
+東半 > touhan\ ;
+故障 > koshou\ ;
+断言 > dangen\ ;
+外遊 > gaiyuu\ ;
+有志 > yuushi\ ;
+本官 > honkan\ ;
+玉屋 > tamaya\ ;
+交合 > kougou\ ;
+新規 > shinki\ ;
+老妻 > rousai\ ;
+王将 > oushou\ ;
+仕上 > shiage\ ;
+豪壮 > gousou\ ;
+願望 > ganmou\ ;
+爬虫 > hachuu\ ;
+聖体 > seitai\ ;
+献本 > kenpon\ ;
+耕地 > kouchi\ ;
+中手 > nakate\ ;
+上智 > jouchi\ ;
+最悪 > saiaku\ ;
+燐酸 > rinsan\ ;
+独演 > dokuen\ ;
+失費 > shippi\ ;
+交友 > kouyuu\ ;
+願書 > gansho\ ;
+末孫 > masson\ ;
+亡君 > boukun\ ;
+警砲 > keihou\ ;
+暗流 > anryuu\ ;
+聖伝 > seiden\ ;
+末子 > masshi\ ;
+三景 > sankei\ ;
+王宮 > oukyuu\ ;
+嫌嫌 > iyaiya\ ;
+放電 > houden\ ;
+雌雄 > shiyuu\ ;
+有形 > yuukei\ ;
+翠嵐 > suiran\ ;
+食器 > shokki\ ;
+大足 > ooashi\ ;
+聖代 > seidai\ ;
+亡友 > bouyuu\ ;
+美服 > bifuku\ ;
+今今 > imaima\ ;
+三昧 > sanmai\ ;
+一朶 > ichida\ ;
+今人 > konjin\ ;
+聖人 > seijin\ ;
+獣性 > juusei\ ;
+雲量 > unryou\ ;
+上旬 > joujun\ ;
+大赦 > taisha\ ;
+上旨 > joushi\ ;
+一朝 > itchou\ ;
+夢路 > yumeji\ ;
+一服 > ippuku\ ;
+奇襲 > kishuu\ ;
+不敵 > futeki\ ;
+談論 > danron\ ;
+両拳 > janken\ ;
+上方 > jouhou\ ;
+玉子 > tamago\ ;
+飯台 > handai\ ;
+日航 > nikkou\ ;
+明細 > meisai\ ;
+羈束 > kisoku\ ;
+罷業 > higyou\ ;
+人偏 > ninben\ ;
+外輪 > gairin\ ;
+天賜 > tenshi\ ;
+三方 > sanpou\ ;
+青藍 > seiran\ ;
+天資 > tenshi\ ;
+韲物 > aemono\ ;
+上文 > joubun\ ;
+主従 > shujuu\ ;
+断裁 > dansai\ ;
+人倫 > jinrin\ ;
+請訓 > seikun\ ;
+猥本 > waihon\ ;
+乾坤 > kenkon\ ;
+乱売 > ranbai\ ;
+三文 > sanmon\ ;
+大賢 > taiken\ ;
+万方 > banpou\ ;
+変遷 > hensen\ ;
+題材 > daizai\ ;
+今上 > kinjou\ ;
+聖上 > seijou\ ;
+外車 > gaisha\ ;
+電送 > densou\ ;
+玄孫 > genson\ ;
+攻防 > koubou\ ;
+両手 > ryoute\ ;
+七日 > nanoka\ ;
+断行 > dankou\ ;
+朝家 > chouka\ ;
+変造 > henzou\ ;
+願文 > ganmon\ ;
+本姓 > honsei\ ;
+一昨 > issaku\ ;
+奉行 > bugyou\ ;
+負傷 > fushou\ ;
+仁人 > jinjin\ ;
+本妻 > honsai\ ;
+風害 > fuugai\ ;
+嫉妬 > shitto\ ;
+謝罪 > shazai\ ;
+猟期 > ryouki\ ;
+人体 > nintei\ ;
+日脚 > hiashi\ ;
+文豪 > bungou\ ;
+一新 > isshin\ ;
+主幹 > shukan\ ;
+施薬 > seyaku\ ;
+独泳 > dokuei\ ;
+斜視 > shashi\ ;
+天譴 > tenken\ ;
+数軒 > suuken\ ;
+天警 > tenkei\ ;
+誹諧 > haikai\ ;
+罪業 > zaigou\ ;
+支隊 > shitai\ ;
+早老 > sourou\ ;
+電車 > densha\ ;
+獣帯 > juutai\ ;
+一攫 > ikkaku\ ;
+主帆 > shuhan\ ;
+類推 > ruisui\ ;
+明答 > meitou\ ;
+上提 > joutei\ ;
+線香 > senkou\ ;
+変転 > henten\ ;
+一擲 > itteki\ ;
+上掲 > joukei\ ;
+来冦 > raikou\ ;
+猛暑 > mousho\ ;
+諸芸 > shogei\ ;
+亡兄 > boukei\ ;
+予告 > yokoku\ ;
+不振 > fushin\ ;
+書店 > shoten\ ;
+人世 > jinsei\ ;
+本塁 > honrui\ ;
+貧乏 > binbou\ ;
+来光 > raikou\ ;
+外資 > gaishi\ ;
+燻製 > kunsei\ ;
+風姿 > fuushi\ ;
+離郷 > rikyou\ ;
+本堂 > hondou\ ;
+九夏 > kyuuka\ ;
+青草 > aokusa\ ;
+諸般 > shohan\ ;
+外貌 > gaibou\ ;
+既習 > kishuu\ ;
+中座 > chuuza\ ;
+犬猿 > ken''en\ ;
+主峰 > shuhou\ ;
+不承 > fushou\ ;
+罰杯 > bappai\ ;
+頸木 > kubiki\ ;
+三拝 > sanpai\ ;
+妖精 > yousei\ ;
+乙夜 > otsuya\ ;
+頓死 > tonshi\ ;
+有害 > yuugai\ ;
+習字 > shuuji\ ;
+大計 > taikei\ ;
+春着 > harugi\ ;
+一掬 > ikkiku\ ;
+編隊 > hentai\ ;
+亭亭 > teitei\ ;
+天覧 > tenran\ ;
+読誦 > dokuju\ ;
+順法 > junpou\ ;
+京人 > keijin\ ;
+敗退 > haitai\ ;
+猛攻 > moukou\ ;
+大観 > taikan\ ;
+二割 > niwari\ ;
+木型 > kigata\ ;
+三才 > sansai\ ;
+望外 > bougai\ ;
+中州 > nakasu\ ;
+義心 > gishin\ ;
+大要 > taiyou\ ;
+一挺 > itchou\ ;
+暮春 > boshun\ ;
+主導 > shudou\ ;
+娯楽 > goraku\ ;
+亭主 > teishu\ ;
+万才 > manzai\ ;
+暴政 > bousei\ ;
+誤謬 > gobyuu\ ;
+旧縁 > kyuuen\ ;
+亀卜 > kiboku\ ;
+読解 > dokkai\ ;
+主宰 > shusai\ ;
+王国 > oukoku\ ;
+多読 > tadoku\ ;
+風塵 > fuujin\ ;
+士道 > shidou\ ;
+頌歌 > shouka\ ;
+交代 > koutai\ ;
+乗場 > noriba\ ;
+東上 > toujou\ ;
+夢見 > yumemi\ ;
+両度 > ryoudo\ ;
+変貌 > henbou\ ;
+頻数 > hinsuu\ ;
+誤読 > godoku\ ;
+一把 > ichiwa\ ;
+頭書 > tousho\ ;
+晦渋 > kaijuu\ ;
+不惑 > fuwaku\ ;
+珍事 > chinji\ ;
+敗軍 > haigun\ ;
+来会 > raikai\ ;
+一打 > ichida\ ;
+条例 > jourei\ ;
+一手 > hitote\ ;
+来任 > rainin\ ;
+智歯 > chishi\ ;
+曾孫 > himago\ ;
+誤診 > goshin\ ;
+誤訳 > goyaku\ ;
+曽孫 > himago\ ;
+縦走 > juusou\ ;
+本営 > hon''ei\ ;
+日経 > nikkei\ ;
+朗報 > rouhou\ ;
+多角 > takaku\ ;
+万感 > bankan\ ;
+奈落 > naraku\ ;
+妨碍 > bougai\ ;
+語調 > gochou\ ;
+夜襲 > yashuu\ ;
+犠牛 > gigyuu\ ;
+豪勢 > gousei\ ;
+不急 > fukyuu\ ;
+日系 > nikkei\ ;
+春画 > shunga\ ;
+条件 > jouken\ ;
+雅量 > garyou\ ;
+条令 > jourei\ ;
+豪勇 > gouyuu\ ;
+散財 > sanzai\ ;
+熔銑 > yousen\ ;
+不忠 > fuchuu\ ;
+既約 > kiyaku\ ;
+外観 > gaikan\ ;
+随順 > zuijun\ ;
+来世 > raisei\ ;
+縦貫 > juukan\ ;
+不徳 > futoku\ ;
+緑雨 > ryokuu\ ;
+本員 > hon''in\ ;
+電請 > densei\ ;
+外見 > sotomi\ ;
+三思 > sanshi\ ;
+昏睡 > konsui\ ;
+詩選 > shisen\ ;
+面繋 > omogai\ ;
+際限 > saigen\ ;
+新芽 > shinme\ ;
+有声 > yuusei\ ;
+乳化 > nyuuka\ ;
+敗走 > haisou\ ;
+政道 > seidou\ ;
+数詞 > suushi\ ;
+訪韓 > houkan\ ;
+明眸 > meibou\ ;
+頭数 > tousuu\ ;
+暴挙 > boukyo\ ;
+獣姦 > juukan\ ;
+隔離 > kakuri\ ;
+本命 > honmei\ ;
+類形 > ruikei\ ;
+中子 > nakago\ ;
+老功 > roukou\ ;
+曳子 > hikiko\ ;
+天蚕 > tensan\ ;
+放送 > housou\ ;
+太虚 > taikyo\ ;
+外装 > gaisou\ ;
+本名 > honmei\ ;
+改選 > kaisen\ ;
+上弦 > jougen\ ;
+女給 > jokyuu\ ;
+電解 > denkai\ ;
+三弦 > sangen\ ;
+置換 > chikan\ ;
+誓詞 > seishi\ ;
+二伸 > nishin\ ;
+月報 > geppou\ ;
+最大 > saidai\ ;
+燻蒸 > kunjou\ ;
+云云 > un''nun\ ;
+隙間 > sukima\ ;
+最外 > saigai\ ;
+婦徳 > futoku\ ;
+暴戻 > bourei\ ;
+改造 > kaizou\ ;
+大虎 > oodora\ ;
+陵駕 > ryouga\ ;
+売買 > baibai\ ;
+支配 > shihai\ ;
+並存 > heizon\ ;
+丸太 > maruta\ ;
+村会 > sonkai\ ;
+美徳 > bitoku\ ;
+未収 > mishuu\ ;
+一応 > ichiou\ ;
+詠進 > eishin\ ;
+群島 > guntou\ ;
+誓言 > seigen\ ;
+群峰 > gunpou\ ;
+服地 > fukuji\ ;
+謝礼 > sharei\ ;
+一心 > isshin\ ;
+木叢 > komura\ ;
+両家 > ryouke\ ;
+一徳 > ittoku\ ;
+二人 > futari\ ;
+老兵 > rouhei\ ;
+狂気 > kyouki\ ;
+一得 > ittoku\ ;
+総門 > soumon\ ;
+老公 > roukou\ ;
+片端 > katawa\ ;
+獄屋 > gokuya\ ;
+講社 > kousha\ ;
+一往 > ichiou\ ;
+頌栄 > shouei\ ;
+煎餅 > senbei\ ;
+上帯 > uwaobi\ ;
+雑踏 > zattou\ ;
+更始 > koushi\ ;
+文藻 > bunsou\ ;
+上帝 > joutei\ ;
+老優 > rouyuu\ ;
+熱賛 > nessan\ ;
+教護 > kyougo\ ;
+乳児 > nyuuji\ ;
+一張 > itchou\ ;
+上巻 > joukan\ ;
+暴慢 > bouman\ ;
+上巳 > joushi\ ;
+群居 > gunkyo\ ;
+纏綿 > tenmen\ ;
+媾合 > kougou\ ;
+老僧 > rousou\ ;
+争乱 > souran\ ;
+猛悪 > mouaku\ ;
+奏聞 > soumon\ ;
+大蔵 > ookura\ ;
+変装 > hensou\ ;
+万巻 > mangan\ ;
+頓智 > tonchi\ ;
+狂歌 > kyouka\ ;
+日程 > nittei\ ;
+姦淫 > kan''in\ ;
+丁度 > choudo\ ;
+天蓋 > tengai\ ;
+教諭 > kyouyu\ ;
+獅子 > shishi\ ;
+一座 > ichiza\ ;
+中央 > chuuou\ ;
+奏者 > sousha\ ;
+丁年 > teinen\ ;
+乗合 > noriai\ ;
+音標 > onpyou\ ;
+散見 > sanken\ ;
+乗号 > jougou\ ;
+暴悪 > bouaku\ ;
+本初 > honsho\ ;
+風向 > fuukou\ ;
+詩趣 > shishu\ ;
+本分 > honbun\ ;
+救護 > kyuugo\ ;
+縦覧 > juuran\ ;
+一幅 > ippuku\ ;
+耐乏 > taibou\ ;
+服喪 > fukumo\ ;
+木剣 > bokken\ ;
+縫製 > housei\ ;
+一席 > isseki\ ;
+大葬 > taisou\ ;
+大著 > taicho\ ;
+擬革 > gikaku\ ;
+世子 > seishi\ ;
+論者 > ronsha\ ;
+論考 > ronkou\ ;
+音楽 > ongaku\ ;
+朗吟 > rougin\ ;
+雪見 > yukimi\ ;
+物産 > bussan\ ;
+乱倫 > ranrin\ ;
+雲表 > unpyou\ ;
+牛皮 > gyuuhi\ ;
+上層 > jousou\ ;
+難訓 > nankun\ ;
+乳価 > nyuuka\ ;
+不審 > fushin\ ;
+翻倒 > hontou\ ;
+老体 > routai\ ;
+陸離 > rikuri\ ;
+擡頭 > taitou\ ;
+奇習 > kishuu\ ;
+難解 > nankai\ ;
+断罪 > danzai\ ;
+訓電 > kunden\ ;
+牢番 > rouban\ ;
+時流 > jiryuu\ ;
+斬罪 > zanzai\ ;
+旅籠 > hatago\ ;
+敢行 > kankou\ ;
+赤々 > akaaka\ ;
+晴朗 > seirou\ ;
+三封 > sanpuu\ ;
+熱誠 > nessei\ ;
+三寸 > sanzun\ ;
+不学 > fugaku\ ;
+万尋 > banjin\ ;
+老人 > roujin\ ;
+猶子 > yuushi\ ;
+晴曇 > seidon\ ;
+上官 > joukan\ ;
+三宝 > sanpou\ ;
+風前 > fuuzen\ ;
+陣風 > jinpuu\ ;
+玄冬 > gentou\ ;
+集貨 > shuuka\ ;
+率先 > sossen\ ;
+風刺 > fuushi\ ;
+隧道 > suidou\ ;
+壮観 > soukan\ ;
+最善 > saizen\ ;
+罪悪 > zaiaku\ ;
+万宝 > banpou\ ;
+暖房 > danbou\ ;
+敬虔 > keiken\ ;
+隣邦 > rinpou\ ;
+乱交 > rankou\ ;
+老中 > roujuu\ ;
+本俸 > honpou\ ;
+女神 > megami\ ;
+犬歯 > kenshi\ ;
+青筋 > aosuji\ ;
+諸種 > shoshu\ ;
+陣頭 > jintou\ ;
+頽廃 > taihai\ ;
+有名 > yuumei\ ;
+朋友 > houyuu\ ;
+文芸 > bungei\ ;
+陰陽 > on''you\ ;
+有司 > yuushi\ ;
+有史 > yuushi\ ;
+詳記 > shouki\ ;
+丁寧 > teinei\ ;
+一将 > isshou\ ;
+一対 > ittsui\ ;
+義塾 > gijuku\ ;
+一寸 > chotto\ ;
+大船 > oobune\ ;
+青竹 > aodake\ ;
+一審 > isshin\ ;
+革砥 > kawato\ ;
+雑誌 > zasshi\ ;
+片眼 > katame\ ;
+断線 > dansen\ ;
+乱世 > ransei\ ;
+熟議 > jukugi\ ;
+世変 > seihen\ ;
+本体 > hontai\ ;
+風光 > fuukou\ ;
+主命 > shumei\ ;
+隠逸 > initsu\ ;
+大臣 > daijin\ ;
+美学 > bigaku\ ;
+一宗 > isshuu\ ;
+詩論 > shiron\ ;
+片目 > katame\ ;
+政論 > seiron\ ;
+丁子 > chouji\ ;
+率倒 > sottou\ ;
+服務 > fukumu\ ;
+青空 > aozora\ ;
+政談 > seidan\ ;
+有半 > yuuhan\ ;
+一字 > ichiji\ ;
+雑言 > zougon\ ;
+繋船 > keisen\ ;
+本件 > honken\ ;
+放談 > houdan\ ;
+主君 > shukun\ ;
+丸味 > marumi\ ;
+本代 > hondai\ ;
+大腿 > daitai\ ;
+試論 > shiron\ ;
+晩景 > bankei\ ;
+下姓 > geshou\ ;
+壮行 > soukou\ ;
+妙王 > myouou\ ;
+大脳 > dainou\ ;
+旅程 > ryotei\ ;
+奉納 > hounou\ ;
+熟語 > jukugo\ ;
+霊芝 > reishi\ ;
+有効 > yuukou\ ;
+狙撃 > sogeki\ ;
+有功 > yuukou\ ;
+猶太 > yudaya\ ;
+夜船 > yofune\ ;
+未了 > miryou\ ;
+姓氏 > seishi\ ;
+上奏 > jousou\ ;
+放言 > hougen\ ;
+大胆 > daitan\ ;
+上天 > jouten\ ;
+早産 > souzan\ ;
+大股 > oomata\ ;
+最南 > sainan\ ;
+天聞 > tenbun\ ;
+訴追 > sotsui\ ;
+猛射 > mousha\ ;
+詠誦 > eishou\ ;
+晦日 > misoka\ ;
+繭糸 > kenshi\ ;
+政見 > seiken\ ;
+猟季 > ryouki\ ;
+妄用 > bouyou\ ;
+曹司 > soushi\ ;
+記録 > kiroku\ ;
+書名 > shomei\ ;
+大聖 > taisei\ ;
+月刊 > gekkan\ ;
+万天 > banten\ ;
+三士 > sanshi\ ;
+中和 > chuuwa\ ;
+主動 > shudou\ ;
+改訂 > kaitei\ ;
+中味 > nakami\ ;
+日産 > nissan\ ;
+面相 > mensou\ ;
+美妙 > bimyou\ ;
+評議 > hyougi\ ;
+斜線 > shasen\ ;
+大老 > tairou\ ;
+朋党 > houtou\ ;
+風体 > fuutei\ ;
+牝牛 > meushi\ ;
+増配 > zouhai\ ;
+面皰 > menbou\ ;
+乃公 > naikou\ ;
+陣門 > jinmon\ ;
+昂然 > kouzen\ ;
+一女 > ichijo\ ;
+上場 > joujou\ ;
+降順 > koujun\ ;
+大群 > taigun\ ;
+院長 > inchou\ ;
+中句 > chuuku\ ;
+三塁 > sanrui\ ;
+最前 > saizen\ ;
+隻語 > sekigo\ ;
+曇天 > donten\ ;
+月光 > gekkou\ ;
+謝状 > shajou\ ;
+霊能 > reinou\ ;
+主刑 > shukei\ ;
+続開 > zokkai\ ;
+姻族 > inzoku\ ;
+丹前 > tanzen\ ;
+奉答 > houtou\ ;
+丸剤 > ganzai\ ;
+大罪 > daizai\ ;
+一夢 > ichimu\ ;
+最初 > saisho\ ;
+一夜 > hitoyo\ ;
+一夕 > isseki\ ;
+万場 > manjou\ ;
+諸相 > shosou\ ;
+類型 > ruikei\ ;
+奇策 > kisaku\ ;
+評語 > hyougo\ ;
+婚姻 > kon''in\ ;
+与圧 > yoatsu\ ;
+熔解 > youkai\ ;
+解題 > kaidai\ ;
+多肉 > taniku\ ;
+与国 > yokoku\ ;
+改装 > kaisou\ ;
+試行 > shikou\ ;
+暗幕 > anmaku\ ;
+隆運 > ryuuun\ ;
+旋盤 > senban\ ;
+降霜 > kousou\ ;
+誘致 > yuuchi\ ;
+暖帯 > dantai\ ;
+下国 > gekoku\ ;
+暫定 > zantei\ ;
+智慮 > chiryo\ ;
+警棒 > keibou\ ;
+断種 > danshu\ ;
+独往 > dokuou\ ;
+韜晦 > toukai\ ;
+晋書 > shinjo\ ;
+猟奇 > ryouki\ ;
+三囲 > mitsui\ ;
+外聞 > gaibun\ ;
+三回 > sankai\ ;
+月俸 > geppou\ ;
+特派 > tokuha\ ;
+主催 > shusai\ ;
+主傘 > shusan\ ;
+雁行 > gankou\ ;
+天網 > tenmou\ ;
+陶酔 > tousui\ ;
+書写 > shosha\ ;
+斑紋 > hanmon\ ;
+顕在 > kenzai\ ;
+有体 > yuutai\ ;
+大綱 > taikou\ ;
+姦智 > kanchi\ ;
+熏製 > kunsei\ ;
+獄吏 > gokuri\ ;
+独座 > dokuza\ ;
+緩解 > kankai\ ;
+三嘆 > santan\ ;
+奉祀 > houshi\ ;
+一国 > ikkoku\ ;
+娼家 > shouka\ ;
+晃曜 > kouyou\ ;
+猟場 > ryouba\ ;
+領布 > ryoufu\ ;
+片片 > henpen\ ;
+一因 > ichiin\ ;
+霧笛 > muteki\ ;
+陸運 > rikuun\ ;
+有人 > yuujin\ ;
+無闇 > muyami\ ;
+晩成 > bansei\ ;
+雄蜂 > obachi\ ;
+防風 > boufuu\ ;
+詩藻 > shisou\ ;
+大系 > taikei\ ;
+絹雲 > ken''un\ ;
+煮豆 > nimame\ ;
+熔融 > youyuu\ ;
+主体 > shutai\ ;
+訓連 > kunren\ ;
+万善 > manzen\ ;
+天籟 > tenrai\ ;
+文系 > bunkei\ ;
+最低 > saitei\ ;
+繋累 > keirui\ ;
+読経 > dokyou\ ;
+繊細 > sensai\ ;
+施療 > seryou\ ;
+主任 > shunin\ ;
+敬老 > keirou\ ;
+順当 > juntou\ ;
+陽転 > youten\ ;
+両刃 > ryouba\ ;
+絞首 > koushu\ ;
+日焼 > hiyake\ ;
+上品 > joubon\ ;
+放蕩 > houtou\ ;
+主人 > shujin\ ;
+顫動 > sendou\ ;
+雄蘂 > yuuzui\ ;
+阻隔 > sokaku\ ;
+難船 > nansen\ ;
+隆起 > ryuuki\ ;
+順延 > jun''en\ ;
+難航 > nankou\ ;
+娼婦 > shoufu\ ;
+委曲 > ikyoku\ ;
+中値 > nakane\ ;
+奇矯 > kikyou\ ;
+緩行 > kankou\ ;
+外線 > gaisen\ ;
+姻戚 > inseki\ ;
+昭栄 > shouei\ ;
+類同 > ruidou\ ;
+誦経 > zukyou\ ;
+早瀬 > hayase\ ;
+詞藻 > shisou\ ;
+書体 > shotai\ ;
+中保 > chuuho\ ;
+緒論 > choron\ ;
+上向 > joukou\ ;
+註記 > chuuki\ ;
+主上 > shujou\ ;
+最中 > monaka\ ;
+上司 > joushi\ ;
+姿態 > shitai\ ;
+雑菌 > zakkin\ ;
+文範 > bunpan\ ;
+新盆 > niibon\ ;
+増資 > zoushi\ ;
+雄蕊 > yuuzui\ ;
+最上 > mogami\ ;
+大筋 > oosuji\ ;
+媒体 > baitai\ ;
+爆破 > bakuha\ ;
+総論 > souron\ ;
+一員 > ichiin\ ;
+天童 > tendou\ ;
+献呈 > kentei\ ;
+独居 > dokkyo\ ;
+娼妓 > shougi\ ;
+特権 > tokken\ ;
+訳語 > yakugo\ ;
+外紙 > gaishi\ ;
+中佐 > chuusa\ ;
+万口 > bankou\ ;
+雑草 > zassou\ ;
+上半 > jouhan\ ;
+陸路 > rikuro\ ;
+媒介 > baikai\ ;
+天空 > tenkuu\ ;
+緒言 > chogen\ ;
+更代 > koutai\ ;
+訴訟 > soshou\ ;
+需給 > jukyuu\ ;
+頭声 > tousei\ ;
+三千 > sanzen\ ;
+三十 > sanjuu\ ;
+改葬 > kaisou\ ;
+与力 > yoriki\ ;
+経験 > keiken\ ;
+早漏 > sourou\ ;
+電線 > densen\ ;
+大空 > oozora\ ;
+外米 > gaimai\ ;
+総計 > soukei\ ;
+万千 > bansen\ ;
+天稟 > tenpin\ ;
+訳解 > yakkai\ ;
+繁簡 > hankan\ ;
+中二 > chuuni\ ;
+奇癖 > kiheki\ ;
+敏腕 > binwan\ ;
+天秤 > tenbin\ ;
+索麺 > soumen\ ;
+総覧 > souran\ ;
+群像 > gunzou\ ;
+総見 > souken\ ;
+素麺 > soumen\ ;
+曙光 > shokou\ ;
+敗者 > haisha\ ;
+奮然 > funzen\ ;
+万劫 > mangou\ ;
+上前 > uwamae\ ;
+設計 > sekkei\ ;
+斯界 > shikai\ ;
+新甫 > shinpo\ ;
+集荷 > shuuka\ ;
+附録 > furoku\ ;
+教義 > kyougi\ ;
+雌花 > mebana\ ;
+奇病 > kibyou\ ;
+晴嵐 > seiran\ ;
+青物 > aomono\ ;
+牢死 > roushi\ ;
+状態 > joutai\ ;
+天神 > tenjin\ ;
+然迄 > samade\ ;
+題名 > daimei\ ;
+一升 > isshou\ ;
+好漢 > koukan\ ;
+一匹 > ippiki\ ;
+題号 > daigou\ ;
+大祭 > taisai\ ;
+三分 > sanpun\ ;
+義侠 > gikyou\ ;
+熏蒸 > kunjou\ ;
+零細 > reisai\ ;
+大社 > taisha\ ;
+大礼 > tairei\ ;
+誓紙 > seishi\ ;
+総裏 > souura\ ;
+物権 > bukken\ ;
+夜空 > yozora\ ;
+一勝 > isshou\ ;
+壮者 > sousha\ ;
+総裁 > sousai\ ;
+無量 > muryou\ ;
+三冬 > santou\ ;
+一助 > ichijo\ ;
+雀荘 > jansou\ ;
+緊褌 > kinkon\ ;
+世俗 > sezoku\ ;
+頽唐 > taitou\ ;
+縦線 > juusen\ ;
+牛歩 > gyuuho\ ;
+万円 > man''en\ ;
+増訂 > zoutei\ ;
+順守 > junshu\ ;
+万全 > manzen\ ;
+一刻 > ikkoku\ ;
+旧派 > kyuuha\ ;
+羅北 > rahoku\ ;
+雪線 > sessen\ ;
+群体 > guntai\ ;
+下僚 > karyou\ ;
+細魚 > sayori\ ;
+下僕 > geboku\ ;
+一利 > ichiri\ ;
+大砲 > taihou\ ;
+暴君 > boukun\ ;
+旧波 > kyuuha\ ;
+数等 > suutou\ ;
+女滝 > medaki\ ;
+世伝 > seiden\ ;
+警手 > keishu\ ;
+随行 > zuikou\ ;
+操車 > sousha\ ;
+如法 > nyohou\ ;
+与信 > yoshin\ ;
+記誦 > kishou\ ;
+雷管 > raikan\ ;
+多祥 > tashou\ ;
+一円 > ichien\ ;
+一具 > ichigu\ ;
+不信 > fushin\ ;
+編著 > hencho\ ;
+警戒 > keikai\ ;
+塊鉱 > kaikou\ ;
+爛爛 > ranran\ ;
+暖地 > danchi\ ;
+綸言 > ringen\ ;
+放胆 > houtan\ ;
+訓諭 > kun''yu\ ;
+曠世 > kousei\ ;
+天眼 > tengan\ ;
+読破 > dokuha\ ;
+三倍 > sanbai\ ;
+顛倒 > tentou\ ;
+旁点 > bouten\ ;
+詩聖 > shisei\ ;
+猛勇 > mouyuu\ ;
+放肆 > houshi\ ;
+奉献 > houken\ ;
+一儀 > ichigi\ ;
+継走 > keisou\ ;
+日永 > hinaga\ ;
+類例 > ruirei\ ;
+訓誡 > kunkai\ ;
+不作 > fusaku\ ;
+言質 > genchi\ ;
+謹書 > kinsho\ ;
+署名 > shomei\ ;
+明朗 > meirou\ ;
+上例 > jourei\ ;
+闘鶏 > toukei\ ;
+天盃 > tenpai\ ;
+上使 > joushi\ ;
+昔時 > sekiji\ ;
+暴動 > boudou\ ;
+堤防 > teibou\ ;
+討論 > touron\ ;
+日毎 > higoto\ ;
+上体 > joutai\ ;
+不仲 > funaka\ ;
+課目 > kamoku\ ;
+大盃 > taihai\ ;
+大皿 > oozara\ ;
+三体 > santai\ ;
+文盲 > monmou\ ;
+熱線 > nessen\ ;
+頽勢 > taisei\ ;
+熟考 > jukkou\ ;
+変種 > henshu\ ;
+断片 > danpen\ ;
+猟具 > ryougu\ ;
+某々 > boubou\ ;
+墓表 > bohyou\ ;
+訓解 > kunkai\ ;
+昵懇 > jikkon\ ;
+女流 > joryuu\ ;
+音容 > on''you\ ;
+降車 > kousha\ ;
+霊知 > reichi\ ;
+声紋 > seimon\ ;
+上代 > joudai\ ;
+奇特 > kidoku\ ;
+領土 > ryoudo\ ;
+美俗 > bizoku\ ;
+順奉 > junpou\ ;
+易断 > ekidan\ ;
+三代 > sandai\ ;
+一俵 > ippyou\ ;
+綱要 > kouyou\ ;
+放置 > houchi\ ;
+闇黒 > ankoku\ ;
+不乙 > fuitsu\ ;
+献体 > kentai\ ;
+罪名 > zaimei\ ;
+昏昏 > konkon\ ;
+雑纂 > zassan\ ;
+妙案 > myouan\ ;
+女波 > menami\ ;
+明明 > akaaka\ ;
+万仞 > banjin\ ;
+離籍 > riseki\ ;
+不一 > fuitsu\ ;
+料理 > ryouri\ ;
+上乗 > joujou\ ;
+暗唱 > anshou\ ;
+三乗 > sanjou\ ;
+明断 > meidan\ ;
+紺青 > konjou\ ;
+敬礼 > keirei\ ;
+雷神 > raijin\ ;
+陶製 > tousei\ ;
+上世 > jousei\ ;
+上上 > joujou\ ;
+明文 > meibun\ ;
+晴天 > seiten\ ;
+万乗 > banjou\ ;
+調理 > chouri\ ;
+断然 > danzen\ ;
+天産 > tensan\ ;
+天生 > tensei\ ;
+晩婚 > bankon\ ;
+明敏 > meibin\ ;
+願主 > ganshu\ ;
+版権 > hanken\ ;
+烈風 > reppuu\ ;
+組閣 > sokaku\ ;
+万丈 > banjou\ ;
+万万 > manman\ ;
+言論 > genron\ ;
+陸行 > rikkou\ ;
+大生 > daisei\ ;
+雀羅 > jakura\ ;
+丁亥 > teigai\ ;
+議席 > giseki\ ;
+美事 > migoto\ ;
+姑息 > kosoku\ ;
+繁盛 > hanjou\ ;
+一人 > hitori\ ;
+放縦 > houjuu\ ;
+論点 > ronten\ ;
+詩編 > shihen\ ;
+献上 > kenjou\ ;
+日様 > hisama\ ;
+陪観 > baikan\ ;
+一二 > ichini\ ;
+一事 > ichiji\ ;
+素首 > sokubi\ ;
+爛漫 > ranman\ ;
+闘魂 > toukon\ ;
+特措 > tokuso\ ;
+政綱 > seikou\ ;
+試練 > shiren\ ;
+誇称 > koshou\ ;
+奉灯 > houtou\ ;
+言訳 > iiwake\ ;
+培養 > baiyou\ ;
+支署 > shisho\ ;
+丁丁 > toutou\ ;
+諸氏 > shoshi\ ;
+言言 > gengen\ ;
+一丁 > itchou\ ;
+総菜 > souzai\ ;
+政経 > seikei\ ;
+多病 > tabyou\ ;
+零砕 > reisai\ ;
+撤退 > tettai\ ;
+見頃 > migoro\ ;
+改編 > kaihen\ ;
+無賃 > muchin\ ;
+計装 > keisou\ ;
+雄編 > yuuhen\ ;
+教科 > kyouka\ ;
+綜覧 > souran\ ;
+霊界 > reikai\ ;
+智嚢 > chinou\ ;
+縁組 > engumi\ ;
+多生 > tashou\ ;
+講書 > kousho\ ;
+紫電 > shiden\ ;
+静止 > seishi\ ;
+特技 > tokugi\ ;
+独和 > dokuwa\ ;
+教祖 > kyouso\ ;
+教示 > kyouji\ ;
+堅陣 > kenjin\ ;
+認知 > ninchi\ ;
+狂女 > kyoujo\ ;
+外用 > gaiyou\ ;
+物損 > busson\ ;
+要項 > youkou\ ;
+要頂 > youkou\ ;
+点頭 > tentou\ ;
+支線 > shisen\ ;
+罰俸 > bappou\ ;
+文献 > bunken\ ;
+詩篇 > shihen\ ;
+日柄 > higara\ ;
+姉弟 > shimai\ ;
+縁籍 > enseki\ ;
+離礁 > rishou\ ;
+音域 > on''iki\ ;
+言行 > genkou\ ;
+角距 > kakkyo\ ;
+報道 > houdou\ ;
+方法 > houhou\ ;
+旭暉 > kyokki\ ;
+絶賛 > zessan\ ;
+如来 > nyorai\ ;
+大物 > oomono\ ;
+昂揚 > kouyou\ ;
+露滴 > roteki\ ;
+続行 > zokkou\ ;
+試算 > shisan\ ;
+諫死 > kanshi\ ;
+降誕 > koutan\ ;
+版本 > hanpon\ ;
+諫止 > kanshi\ ;
+暖冬 > dantou\ ;
+電番 > denban\ ;
+電界 > denkai\ ;
+讚嘆 > santan\ ;
+早晩 > souban\ ;
+霊獣 > reijuu\ ;
+編纂 > hensan\ ;
+時宗 > jishuu\ ;
+新派 > shinpa\ ;
+旭旗 > kyokki\ ;
+雄篇 > yuuhen\ ;
+雑種 > zasshu\ ;
+紙面 > shimen\ ;
+奏法 > souhou\ ;
+失火 > shikka\ ;
+斑点 > hanten\ ;
+雪目 > yukime\ ;
+好望 > koubou\ ;
+旧時 > kyuuji\ ;
+誕生 > tanjou\ ;
+昼寝 > hirune\ ;
+操行 > soukou\ ;
+特恵 > tokkei\ ;
+昼寐 > hirune\ ;
+煙草 > tabako\ ;
+詩稿 > shikou\ ;
+警官 > keikan\ ;
+絶讃 > zessan\ ;
+方正 > housei\ ;
+論法 > ronpou\ ;
+爛死 > ranshi\ ;
+敵王 > tekiou\ ;
+鞅掌 > oushou\ ;
+謄本 > touhon\ ;
+改竄 > kaizan\ ;
+妄断 > moudan\ ;
+特快 > tokkai\ ;
+天災 > tensai\ ;
+青楼 > seirou\ ;
+附託 > futaku\ ;
+旧故 > kyuuko\ ;
+牽引 > ken''in\ ;
+景品 > keihin\ ;
+日数 > hikazu\ ;
+版数 > hansuu\ ;
+断水 > dansui\ ;
+給費 > kyuuhi\ ;
+燦然 > sanzen\ ;
+妙技 > myougi\ ;
+紅顔 > kougan\ ;
+妻帯 > saitai\ ;
+雅称 > gashou\ ;
+威喝 > ikatsu\ ;
+頑冥 > ganmei\ ;
+読点 > touten\ ;
+煎茶 > sencha\ ;
+明快 > meikai\ ;
+妬心 > toshin\ ;
+智勇 > chiyuu\ ;
+譫妄 > senmou\ ;
+晶化 > shouka\ ;
+整版 > seihan\ ;
+雷獣 > raijuu\ ;
+青桐 > aogiri\ ;
+大潮 > ooshio\ ;
+普及 > fukyuu\ ;
+狂喜 > kyouki\ ;
+天漢 > tenkan\ ;
+陶芸 > tougei\ ;
+旗日 > hatabi\ ;
+青柳 > aoyagi\ ;
+設置 > setchi\ ;
+物性 > bussei\ ;
+附表 > fuhyou\ ;
+難産 > nanzan\ ;
+讒口 > zankou\ ;
+今々 > imaima\ ;
+頑健 > ganken\ ;
+暗中 > anchuu\ ;
+護国 > gokoku\ ;
+昼夜 > chuuya\ ;
+言葉 > kotoba\ ;
+親身 > shinmi\ ;
+整然 > seizen\ ;
+紡錘 > bousui\ ;
+諌止 > kanshi\ ;
+外灯 > gaitou\ ;
+妄挙 > boukyo\ ;
+縁石 > enseki\ ;
+埼銀 > saigin\ ;
+間鴨 > aigamo\ ;
+霧氷 > muhyou\ ;
+支社 > shisha\ ;
+青書 > seisho\ ;
+春季 > shunki\ ;
+教理 > kyouri\ ;
+諸方 > shohou\ ;
+増置 > zouchi\ ;
+天涯 > tengai\ ;
+詐称 > sashou\ ;
+摂関 > sekkan\ ;
+警報 > keihou\ ;
+綾羅 > ryoura\ ;
+総統 > soutou\ ;
+領事 > ryouji\ ;
+狂句 > kyouku\ ;
+妖怪 > youkai\ ;
+教王 > kyouou\ ;
+諸政 > shosei\ ;
+施条 > shijou\ ;
+陳腐 > chinpu\ ;
+大海 > taikai\ ;
+姉妹 > shimai\ ;
+報謝 > housha\ ;
+妻子 > saishi\ ;
+独乙 > doitsu\ ;
+煩累 > hanrui\ ;
+片手 > katate\ ;
+電灯 > dentou\ ;
+片戸 > katado\ ;
+大洋 > taiyou\ ;
+姿勢 > shisei\ ;
+角行 > kakkou\ ;
+威力 > iryoku\ ;
+好投 > koutou\ ;
+斑気 > muraki\ ;
+敦煌 > tonkou\ ;
+雪片 > seppen\ ;
+大波 > oonami\ ;
+変災 > hensai\ ;
+大法 > taihou\ ;
+零点 > reiten\ ;
+好手 > koushu\ ;
+晩冬 > bantou\ ;
+好戦 > kousen\ ;
+断案 > dan''an\ ;
+文法 > bunpou\ ;
+天水 > tensui\ ;
+頑丈 > ganjou\ ;
+外湯 > sotoyu\ ;
+文治 > bunchi\ ;
+敢然 > kanzen\ ;
+晦冥 > kaimei\ ;
+教父 > kyoufu\ ;
+妄想 > mousou\ ;
+純銀 > jungin\ ;
+夭死 > youshi\ ;
+政界 > seikai\ ;
+大水 > oomizu\ ;
+綿綿 > menmen\ ;
+外港 > gaikou\ ;
+説法 > seppou\ ;
+見込 > mikomi\ ;
+訪米 > houbei\ ;
+試用 > shiyou\ ;
+細身 > hosomi\ ;
+城門 > joumon\ ;
+文民 > bunmin\ ;
+炭鉱 > tankou\ ;
+旧恩 > kyuuon\ ;
+綿紡 > menbou\ ;
+好感 > koukan\ ;
+純金 > junkin\ ;
+西郊 > seikou\ ;
+夜泊 > yahaku\ ;
+施政 > shisei\ ;
+旧怨 > kyuuen\ ;
+方方 > houbou\ ;
+綿糸 > menshi\ ;
+旨念 > shinen\ ;
+操船 > sousen\ ;
+妨害 > bougai\ ;
+霊泉 > reisen\ ;
+綾糸 > ayaito\ ;
+電源 > dengen\ ;
+妄念 > mounen\ ;
+状勢 > jousei\ ;
+委嘱 > ishoku\ ;
+繊毛 > senmou\ ;
+関頭 > kantou\ ;
+奉書 > housho\ ;
+外洋 > gaiyou\ ;
+西遊 > seiyuu\ ;
+織機 > shokki\ ;
+奮戦 > funsen\ ;
+講師 > koushi\ ;
+霊水 > reisui\ ;
+炭酸 > tansan\ ;
+奔放 > honpou\ ;
+納金 > noukin\ ;
+景仰 > keikou\ ;
+納采 > nousai\ ;
+斃死 > heishi\ ;
+観覧 > kanran\ ;
+諸手 > morote\ ;
+音信 > onshin\ ;
+糖類 > tourui\ ;
+精魂 > seikon\ ;
+訓練 > kunren\ ;
+基軸 > kijiku\ ;
+難点 > nanten\ ;
+夜毎 > yogoto\ ;
+日影 > hikage\ ;
+散漫 > sanman\ ;
+緩目 > yurume\ ;
+片影 > hen''ei\ ;
+災難 > sainan\ ;
+妄弁 > bouben\ ;
+霊殿 > reiden\ ;
+既得 > kitoku\ ;
+大権 > taiken\ ;
+論旨 > ronshi\ ;
+精髄 > seizui\ ;
+斯文 > shibun\ ;
+埴輪 > haniwa\ ;
+論断 > rondan\ ;
+論文 > ronbun\ ;
+煙管 > kiseru\ ;
+爽快 > soukai\ ;
+降臨 > kourin\ ;
+大概 > taigai\ ;
+調査 > chousa\ ;
+静態 > seitai\ ;
+雌牛 > meushi\ ;
+締盟 > teimei\ ;
+開館 > kaikan\ ;
+課業 > kagyou\ ;
+無臭 > mushuu\ ;
+変法 > henpou\ ;
+靱帯 > jintai\ ;
+明大 > meidai\ ;
+牟子 > boushi\ ;
+電池 > denchi\ ;
+閉館 > heikan\ ;
+諸悪 > shoaku\ ;
+星団 > seidan\ ;
+壁画 > hekiga\ ;
+姓名 > seimei\ ;
+素足 > suashi\ ;
+敵歩 > tekifu\ ;
+雪渓 > sekkei\ ;
+雄犬 > osuinu\ ;
+靭帯 > jintai\ ;
+増税 > zouzei\ ;
+時刻 > jikoku\ ;
+墾田 > konden\ ;
+改版 > kaihan\ ;
+父御 > tetego\ ;
+関門 > kanmon\ ;
+細謹 > saikin\ ;
+塊茎 > kaikei\ ;
+隕石 > inseki\ ;
+昭和 > shouwa\ ;
+大根 > daikon\ ;
+斑条 > hanjou\ ;
+閑静 > kansei\ ;
+閑靖 > kansei\ ;
+静思 > seishi\ ;
+旱害 > kangai\ ;
+雑炊 > zousui\ ;
+夜業 > yagyou\ ;
+記章 > kishou\ ;
+昂奮 > koufun\ ;
+細論 > sairon\ ;
+試煉 > shiren\ ;
+牧夫 > bokufu\ ;
+文案 > bun''an\ ;
+旅情 > ryojou\ ;
+云々 > un''nun\ ;
+変死 > henshi\ ;
+難渋 > nanjuu\ ;
+外様 > tozama\ ;
+大柄 > oogara\ ;
+諸彦 > shogen\ ;
+間際 > magiwa\ ;
+天杯 > tenpai\ ;
+天来 > tenrai\ ;
+大枚 > taimai\ ;
+無聊 > buryou\ ;
+長駆 > chouku\ ;
+始原 > shigen\ ;
+散水 > sansui\ ;
+大杯 > taihai\ ;
+雲母 > kirara\ ;
+早寝 > hayane\ ;
+西貢 > saigon\ ;
+教派 > kyouha\ ;
+操縦 > soujuu\ ;
+総監 > soukan\ ;
+大本 > taihon\ ;
+熱湯 > nettou\ ;
+大望 > taimou\ ;
+論拠 > ronkyo\ ;
+日射 > nissha\ ;
+累計 > ruikei\ ;
+註疏 > chuuso\ ;
+奉拝 > houhai\ ;
+大書 > taisho\ ;
+旧家 > kyuuka\ ;
+牧場 > makiba\ ;
+計算 > keisan\ ;
+旋廻 > senkai\ ;
+除籍 > joseki\ ;
+始動 > shidou\ ;
+細見 > saiken\ ;
+繊条 > senjou\ ;
+糸遊 > itoyuu\ ;
+旧字 > kyuuji\ ;
+大暑 > taisho\ ;
+難治 > nanchi\ ;
+墨痕 > bokkon\ ;
+煙硝 > enshou\ ;
+関鍵 > kanken\ ;
+論戦 > ronsen\ ;
+精霊 > seirei\ ;
+日子 > nisshi\ ;
+奉戴 > houtai\ ;
+天明 > tenmei\ ;
+基調 > kichou\ ;
+繁栄 > han''ei\ ;
+墓石 > boseki\ ;
+見解 > kenkai\ ;
+放漫 > houman\ ;
+好守 > koushu\ ;
+雌滝 > medaki\ ;
+姦人 > kanjin\ ;
+墨画 > bokuga\ ;
+難民 > nanmin\ ;
+早婚 > soukon\ ;
+素読 > sodoku\ ;
+要諦 > youtei\ ;
+天文 > tenmon\ ;
+大方 > ookata\ ;
+要請 > yousei\ ;
+支点 > shiten\ ;
+要談 > youdan\ ;
+文明 > bunmei\ ;
+青年 > seinen\ ;
+開閉 > kaihei\ ;
+語格 > gokaku\ ;
+長音 > chouon\ ;
+旧婦 > kyuufu\ ;
+開門 > kaimon\ ;
+旱天 > kanten\ ;
+搬送 > hansou\ ;
+鞏固 > kyouko\ ;
+文旦 > buntan\ ;
+謹啓 > kinkei\ ;
+練炭 > rentan\ ;
+大数 > taisuu\ ;
+解纜 > kairan\ ;
+閉門 > heimon\ ;
+議了 > giryou\ ;
+奥州 > oushuu\ ;
+敗残 > haizan\ ;
+増益 > zoueki\ ;
+大敗 > taihai\ ;
+講壇 > koudan\ ;
+外来 > gairai\ ;
+闇路 > yamiji\ ;
+諸島 > shotou\ ;
+外材 > gaizai\ ;
+大政 > taisei\ ;
+女将 > joshou\ ;
+門院 > mon''in\ ;
+納豆 > nattou\ ;
+門限 > mongen\ ;
+方形 > houkei\ ;
+陥穽 > kansei\ ;
+霊智 > reichi\ ;
+文政 > bunsei\ ;
+女官 > nyokan\ ;
+搭載 > tousai\ ;
+無給 > mukyuu\ ;
+早天 > souten\ ;
+早大 > soudai\ ;
+講堂 > koudou\ ;
+要覧 > youran\ ;
+青嵐 > seiran\ ;
+雛段 > suudan\ ;
+面子 > mentsu\ ;
+謹呈 > kintei\ ;
+数枚 > suumai\ ;
+雨樋 > amadoi\ ;
+旧夫 > kyuufu\ ;
+旧夢 > kyuumu\ ;
+雄渾 > yuukon\ ;
+繁昌 > hanjou\ ;
+放浪 > hourou\ ;
+続稿 > zokkou\ ;
+雑沓 > zattou\ ;
+複音 > fukuon\ ;
+明君 > meikun\ ;
+旬報 > junpou\ ;
+険相 > kensou\ ;
+無精 > bushou\ ;
+警乗 > keijou\ ;
+謹厳 > kingen\ ;
+然程 > sahodo\ ;
+特務 > tokumu\ ;
+物品 > buppin\ ;
+警世 > keisei\ ;
+増産 > zousan\ ;
+損金 > sonkin\ ;
+青山 > seizan\ ;
+特効 > tokkou\ ;
+諸子 > shoshi\ ;
+牽制 > kensei\ ;
+好天 > kouten\ ;
+特功 > tokkou\ ;
+変更 > henkou\ ;
+長閑 > nodoka\ ;
+語族 > gozoku\ ;
+論弁 > ronben\ ;
+日報 > nippou\ ;
+門鑑 > monkan\ ;
+大挙 > taikyo\ ;
+堕落 > daraku\ ;
+関連 > kanren\ ;
+煮物 > nimono\ ;
+旅寝 > tabine\ ;
+嫌々 > iyaiya\ ;
+放水 > housui\ ;
+昇叙 > shoujo\ ;
+絹糸 > kenshi\ ;
+降等 > koutou\ ;
+陳皮 > chinpi\ ;
+整斉 > seisei\ ;
+整数 > seisuu\ ;
+大抵 > taitei\ ;
+紫蘭 > shiran\ ;
+開銀 > kaigin\ ;
+無策 > musaku\ ;
+謦咳 > keigai\ ;
+妥協 > dakyou\ ;
+斎戒 > saikai\ ;
+天才 > tensai\ ;
+末々 > suezue\ ;
+奉幣 > houhei\ ;
+大技 > oowaza\ ;
+精錬 > seiren\ ;
+旧土 > kyuudo\ ;
+電断 > dendan\ ;
+霰弾 > sandan\ ;
+教案 > kyouan\ ;
+天成 > tensei\ ;
+繊指 > senshi\ ;
+妙味 > myoumi\ ;
+電文 > denbun\ ;
+大戦 > taisen\ ;
+諸姉 > shoshi\ ;
+解答 > kaitou\ ;
+明初 > meisho\ ;
+絞罪 > kouzai\ ;
+大成 > taisei\ ;
+無窮 > mukyuu\ ;
+文才 > bunsai\ ;
+昨今 > sakkon\ ;
+精銅 > seidou\ ;
+変数 > hensuu\ ;
+絨緞 > juutan\ ;
+方寸 > housun\ ;
+誓文 > seimon\ ;
+変改 > henkai\ ;
+改正 > kaisei\ ;
+繊手 > senshu\ ;
+大慶 > taikei\ ;
+零敗 > reihai\ ;
+間道 > kandou\ ;
+製陶 > seitou\ ;
+断崖 > dangai\ ;
+襯衣 > shin''i\ ;
+奥妙 > oumyou\ ;
+総点 > souten\ ;
+政権 > seiken\ ;
+雪景 > sekkei\ ;
+操短 > soutan\ ;
+細菌 > saikin\ ;
+散文 > sanbun\ ;
+天恵 > tenkei\ ;
+散散 > sanzan\ ;
+天恩 > ten''on\ ;
+大患 > taikan\ ;
+断層 > dansou\ ;
+土龍 > mogura\ ;
+縦断 > juudan\ ;
+声望 > seibou\ ;
+謚号 > shigou\ ;
+天性 > tensei\ ;
+青天 > seiten\ ;
+電探 > dentan\ ;
+解禁 > kaikin\ ;
+変換 > henkan\ ;
+昏倒 > kontou\ ;
+朗々 > rourou\ ;
+調度 > choudo\ ;
+女囚 > joshuu\ ;
+夫役 > buyaku\ ;
+附票 > fuhyou\ ;
+新字 > shinji\ ;
+撚糸 > nenshi\ ;
+大志 > taishi\ ;
+断定 > dantei\ ;
+論定 > rontei\ ;
+粉雪 > koyuki\ ;
+精選 > seisen\ ;
+塵界 > jinkai\ ;
+雅楽 > gagaku\ ;
+霊感 > reikan\ ;
+携行 > keikou\ ;
+論孟 > ronmou\ ;
+日和 > hiyori\ ;
+網状 > moujou\ ;
+誘拐 > yuukai\ ;
+声明 > seimei\ ;
+大形 > oogyou\ ;
+難文 > nanbun\ ;
+諧声 > kaisei\ ;
+米飯 > beihan\ ;
+網版 > amihan\ ;
+売文 > baibun\ ;
+日向 > hinata\ ;
+精農 > seinou\ ;
+新婦 > shinpu\ ;
+奪回 > dakkai\ ;
+火足 > hiashi\ ;
+焦眉 > shoubi\ ;
+放校 > houkou\ ;
+防空 > boukuu\ ;
+天底 > tentei\ ;
+太平 > taihei\ ;
+読後 > dokugo\ ;
+日参 > nissan\ ;
+際涯 > saigai\ ;
+旋回 > senkai\ ;
+奥地 > okuchi\ ;
+天平 > tenbin\ ;
+霊性 > reisei\ ;
+大店 > oodana\ ;
+外患 > gaikan\ ;
+雑書 > zassho\ ;
+閣議 > kakugi\ ;
+灰貝 > haigai\ ;
+変成 > hensei\ ;
+天帝 > tentei\ ;
+経線 > keisen\ ;
+物体 > mottai\ ;
+大幅 > oohaba\ ;
+経綸 > keirin\ ;
+明主 > meishu\ ;
+大師 > daishi\ ;
+天工 > tenkou\ ;
+大帝 > taitei\ ;
+製錬 > seiren\ ;
+妄動 > moudou\ ;
+焔硝 > enshou\ ;
+結納 > yuinou\ ;
+旅団 > ryodan\ ;
+繁忙 > hanbou\ ;
+地髪 > jigami\ ;
+防禦 > bougyo\ ;
+細胞 > saibou\ ;
+物件 > bukken\ ;
+天嶮 > tenken\ ;
+製鋼 > seikou\ ;
+日勤 > nikkin\ ;
+大巧 > taikou\ ;
+点茶 > tencha\ ;
+旬刊 > junkan\ ;
+紅藻 > kousou\ ;
+新奇 > shinki\ ;
+陶然 > touzen\ ;
+長途 > chouto\ ;
+摘芽 > tekiga\ ;
+変態 > hentai\ ;
+換金 > kankin\ ;
+教授 > kyouju\ ;
+故旧 > kokyuu\ ;
+雄松 > omatsu\ ;
+早出 > hayade\ ;
+奇妙 > kimyou\ ;
+外径 > gaikei\ ;
+外征 > gaisei\ ;
+接頭 > settou\ ;
+外形 > gaikei\ ;
+訓点 > kunten\ ;
+論外 > rongai\ ;
+限界 > genkai\ ;
+夜店 > yomise\ ;
+絃線 > gensen\ ;
+諾否 > dakuhi\ ;
+探題 > tandai\ ;
+繊巧 > senkou\ ;
+無痛 > mutsuu\ ;
+無病 > mubyou\ ;
+日刊 > nikkan\ ;
+救援 > kyuuen\ ;
+論壇 > rondan\ ;
+壟断 > roudan\ ;
+片刃 > kataha\ ;
+敵影 > tekiei\ ;
+絹目 > kinume\ ;
+煮汁 > nijiru\ ;
+裾野 > susono\ ;
+訴求 > sokyuu\ ;
+煉炭 > rentan\ ;
+震度 > shindo\ ;
+整形 > seikei\ ;
+夜市 > yoichi\ ;
+増減 > zougen\ ;
+雁書 > gansho\ ;
+繃帯 > houtai\ ;
+詩文 > shibun\ ;
+変性 > hensei\ ;
+見聞 > kenmon\ ;
+大山 > taizan\ ;
+諸君 > shokun\ ;
+諮問 > shimon\ ;
+関西 > kansai\ ;
+長躯 > chouku\ ;
+大層 > taisou\ ;
+霜害 > sougai\ ;
+縄文 > joumon\ ;
+日光 > nikkou\ ;
+改易 > kaieki\ ;
+旧儀 > kyuugi\ ;
+大尽 > daijin\ ;
+壮挙 > soukyo\ ;
+紅葉 > momiji\ ;
+放散 > housan\ ;
+斎宮 > saiguu\ ;
+見者 > kensha\ ;
+難所 > nansho\ ;
+敗戦 > haisen\ ;
+奪取 > dasshu\ ;
+摸索 > mosaku\ ;
+牀几 > shougi\ ;
+太守 > taishu\ ;
+斉射 > seisha\ ;
+統監 > toukan\ ;
+大寒 > daikan\ ;
+坊間 > boukan\ ;
+夫子 > fuushi\ ;
+天守 > tenshu\ ;
+変形 > henkei\ ;
+素肌 > suhada\ ;
+雄断 > yuudan\ ;
+太字 > futoji\ ;
+太子 > taishi\ ;
+天孫 > tenson\ ;
+雑損 > zasson\ ;
+閑談 > kandan\ ;
+日傘 > higasa\ ;
+大宗 > taisou\ ;
+天子 > tenshi\ ;
+革具 > kawagu\ ;
+面前 > menzen\ ;
+霊峰 > reihou\ ;
+隷書 > reisho\ ;
+角皮 > kakuhi\ ;
+謄写 > tousha\ ;
+探険 > tanken\ ;
+視線 > shisen\ ;
+数年 > suunen\ ;
+奮励 > funrei\ ;
+非力 > hiriki\ ;
+諭告 > yukoku\ ;
+開講 > kaikou\ ;
+文官 > bunkan\ ;
+旬余 > jun''yo\ ;
+階段 > kaidan\ ;
+青史 > seishi\ ;
+紙背 > shihai\ ;
+紅茶 > koucha\ ;
+細緻 > saichi\ ;
+埋蔵 > maizou\ ;
+製造 > seizou\ ;
+霊山 > reizan\ ;
+熱戦 > nessen\ ;
+裏門 > uramon\ ;
+変幻 > hengen\ ;
+霊屋 > tamaya\ ;
+増水 > zousui\ ;
+講中 > koujuu\ ;
+離愁 > rishuu\ ;
+電工 > denkou\ ;
+散弾 > sandan\ ;
+斜塔 > shatou\ ;
+多少 > tashou\ ;
+夜寒 > yozamu\ ;
+諷刺 > fuushi\ ;
+塩煮 > shioni\ ;
+夜宮 > yomiya\ ;
+露国 > rokoku\ ;
+諸刃 > moroha\ ;
+外層 > gaisou\ ;
+埋葬 > maisou\ ;
+綿毛 > watage\ ;
+結社 > kessha\ ;
+褒貶 > houhen\ ;
+累累 > ruirui\ ;
+地霊 > chirei\ ;
+霊宝 > reihou\ ;
+地震 > jishin\ ;
+報知 > houchi\ ;
+細糸 > saishi\ ;
+夜学 > yagaku\ ;
+誤審 > goshin\ ;
+日伊 > nichii\ ;
+防疫 > boueki\ ;
+角界 > kakkai\ ;
+敏感 > binkan\ ;
+敷居 > shikii\ ;
+炭肺 > tanhai\ ;
+好例 > kourei\ ;
+奔命 > honmei\ ;
+煙毒 > endoku\ ;
+誇張 > kochou\ ;
+熱意 > netsui\ ;
+方向 > houkou\ ;
+紫紺 > shikon\ ;
+地階 > chikai\ ;
+教徒 > kyouto\ ;
+規約 > kiyaku\ ;
+諸兄 > shokei\ ;
+諸元 > shogen\ ;
+早世 > sousei\ ;
+開襟 > kaikin\ ;
+斜坑 > shakou\ ;
+縫工 > houkou\ ;
+旅券 > ryoken\ ;
+隣村 > rinson\ ;
+天外 > tengai\ ;
+詩才 > shisai\ ;
+堡礁 > hoshou\ ;
+天変 > tenpen\ ;
+面倒 > mendou\ ;
+日中 > hinaka\ ;
+天声 > tensei\ ;
+旋光 > senkou\ ;
+契合 > keigou\ ;
+霊媒 > reibai\ ;
+線条 > senjou\ ;
+解版 > kaihan\ ;
+整容 > seiyou\ ;
+新味 > shinmi\ ;
+天壌 > tenjou\ ;
+大変 > taihen\ ;
+続演 > zokuen\ ;
+壮快 > soukai\ ;
+裸身 > rashin\ ;
+米銭 > beisen\ ;
+熱性 > nessei\ ;
+語学 > gogaku\ ;
+誘導 > yuudou\ ;
+雑感 > zakkan\ ;
+斎場 > saijou\ ;
+要綱 > youkou\ ;
+累算 > ruisan\ ;
+文士 > bunshi\ ;
+点線 > tensen\ ;
+女体 > nyotai\ ;
+縁戚 > enseki\ ;
+面体 > mentei\ ;
+文壇 > bundan\ ;
+奉呈 > houtei\ ;
+撃破 > gekiha\ ;
+精製 > seisei\ ;
+面会 > menkai\ ;
+紡糸 > boushi\ ;
+天堂 > tendou\ ;
+離床 > rishou\ ;
+墓標 > bohyou\ ;
+階梯 > kaitei\ ;
+売店 > baiten\ ;
+論叢 > ronsou\ ;
+諸侯 > shokou\ ;
+電子 > denshi\ ;
+爵位 > shakui\ ;
+西経 > seikei\ ;
+詩想 > shisou\ ;
+塊状 > kaijou\ ;
+観相 > kansou\ ;
+女人 > nyonin\ ;
+改憲 > kaiken\ ;
+大域 > taiiki\ ;
+絶版 > zeppan\ ;
+雪崩 > nadare\ ;
+詩情 > shijou\ ;
+外姓 > gaisei\ ;
+言海 > genkai\ ;
+照査 > shousa\ ;
+政情 > seijou\ ;
+紛紛 > funpun\ ;
+奏効 > soukou\ ;
+壮年 > sounen\ ;
+大型 > oogata\ ;
+声帯 > seitai\ ;
+上々 > joujou\ ;
+奏功 > soukou\ ;
+純綿 > junmen\ ;
+天地 > tenchi\ ;
+塩湯 > shioyu\ ;
+該当 > gaitou\ ;
+坑道 > koudou\ ;
+女中 > jochuu\ ;
+激高 > gekkou\ ;
+探鉱 > tankou\ ;
+総書 > sousho\ ;
+外套 > gaitou\ ;
+綿棒 > menbou\ ;
+支所 > shisho\ ;
+採鉱 > saikou\ ;
+大地 > daichi\ ;
+純絹 > junken\ ;
+放恣 > houshi\ ;
+文型 > bunkei\ ;
+門衛 > mon''ei\ ;
+雌性 > shisei\ ;
+万々 > manman\ ;
+垂訓 > suikun\ ;
+大圏 > taiken\ ;
+防犯 > bouhan\ ;
+認定 > nintei\ ;
+火薬 > kayaku\ ;
+熱帯 > nettai\ ;
+練成 > rensei\ ;
+焚火 > takibi\ ;
+改悪 > kaiaku\ ;
+放念 > hounen\ ;
+奇勝 > kishou\ ;
+霊場 > reijou\ ;
+純系 > junkei\ ;
+奢侈 > shashi\ ;
+奥伝 > okuden\ ;
+塩浴 > enyoku\ ;
+談合 > dangou\ ;
+丁々 > toutou\ ;
+詩形 > shikei\ ;
+霊域 > reiiki\ ;
+論判 > ronpan\ ;
+煮方 > nikata\ ;
+熊手 > kumade\ ;
+純粋 > junsui\ ;
+読図 > dokuzu\ ;
+雄性 > yuusei\ ;
+火蓋 > hibuta\ ;
+装釘 > soutei\ ;
+調和 > chouwa\ ;
+訂正 > teisei\ ;
+照映 > shouei\ ;
+雄志 > yuushi\ ;
+調味 > choumi\ ;
+掲載 > keisai\ ;
+旅人 > ryojin\ ;
+旅亭 > ryotei\ ;
+換言 > kangen\ ;
+総数 > sousuu\ ;
+霊地 > reichi\ ;
+揚言 > yougen\ ;
+大喪 > taisou\ ;
+雑巾 > zoukin\ ;
+天啓 > tenkei\ ;
+隅木 > sumiki\ ;
+奉公 > houkou\ ;
+総攬 > souran\ ;
+編成 > hensei\ ;
+親疎 > shinso\ ;
+方便 > houben\ ;
+離宮 > rikyuu\ ;
+絢爛 > kenran\ ;
+外地 > gaichi\ ;
+外在 > gaizai\ ;
+塩気 > shioke\ ;
+接近 > sekkin\ ;
+雄弁 > yuuben\ ;
+米軍 > beigun\ ;
+詩巻 > shikan\ ;
+改廃 > kaihai\ ;
+階数 > kaisuu\ ;
+園長 > enchou\ ;
+地金 > jigane\ ;
+緩慢 > kanman\ ;
+電報 > denpou\ ;
+調印 > chouin\ ;
+防災 > bousai\ ;
+天命 > tenmei\ ;
+籤運 > kujiun\ ;
+補足 > hosoku\ ;
+濁音 > dakuon\ ;
+大和 > yamato\ ;
+談判 > danpan\ ;
+整地 > seichi\ ;
+大命 > taimei\ ;
+長蛇 > chouda\ ;
+方今 > houkon\ ;
+提言 > teigen\ ;
+証拠 > shouko\ ;
+紅粉 > beniko\ ;
+太后 > taikou\ ;
+地酒 > jizake\ ;
+隻影 > sekiei\ ;
+士官 > shikan\ ;
+土鍋 > donabe\ ;
+天后 > tenkou\ ;
+灰色 > haiiro\ ;
+天台 > tendai\ ;
+系統 > keitou\ ;
+大君 > taikun\ ;
+陰核 > inkaku\ ;
+大同 > daidou\ ;
+隷従 > reijuu\ ;
+細目 > hosome\ ;
+支弁 > shiben\ ;
+提要 > teiyou\ ;
+火花 > hibana\ ;
+変型 > henkei\ ;
+純種 > junshu\ ;
+雑居 > zakkyo\ ;
+降水 > kousui\ ;
+方丈 > houjou\ ;
+埋線 > maisen\ ;
+数回 > suukai\ ;
+文名 > bunmei\ ;
+奕世 > ekisei\ ;
+緩怠 > kantai\ ;
+解法 > kaihou\ ;
+支店 > shiten\ ;
+基石 > kiseki\ ;
+製袋 > seitai\ ;
+頻々 > hinpin\ ;
+斜光 > shakou\ ;
+奉体 > houtai\ ;
+附注 > fuchuu\ ;
+斥候 > sekkou\ ;
+関聯 > kanren\ ;
+奉伺 > houshi\ ;
+大半 > taihan\ ;
+褐藻 > kassou\ ;
+煽情 > senjou\ ;
+敵営 > tekiei\ ;
+無毒 > mudoku\ ;
+大匙 > oosaji\ ;
+在郷 > zaigou\ ;
+絶海 > zekkai\ ;
+雄峰 > yuuhou\ ;
+奉仕 > houshi\ ;
+納税 > nouzei\ ;
+土釜 > dogama\ ;
+大勢 > taizei\ ;
+奏上 > soujou\ ;
+断交 > dankou\ ;
+緒戦 > chosen\ ;
+放射 > housha\ ;
+大勇 > taiyuu\ ;
+視界 > shikai\ ;
+論争 > ronsou\ ;
+裳裾 > mosuso\ ;
+試射 > shisha\ ;
+除核 > jokaku\ ;
+大功 > taikou\ ;
+解毒 > gedoku\ ;
+詩宗 > shisou\ ;
+文勢 > bunsei\ ;
+陰暦 > inreki\ ;
+無欲 > muyoku\ ;
+太初 > taisho\ ;
+散在 > sanzai\ ;
+炭礦 > tankou\ ;
+火脚 > hiashi\ ;
+誣告 > bukoku\ ;
+天刑 > tenkei\ ;
+天分 > tenbun\ ;
+壮大 > soudai\ ;
+衰頽 > suitai\ ;
+点睛 > tensei\ ;
+大分 > daibun\ ;
+壮士 > soushi\ ;
+敗報 > haihou\ ;
+外向 > gaikou\ ;
+大刀 > daitou\ ;
+攻守 > koushu\ ;
+雑婚 > zakkon\ ;
+損耗 > sonmou\ ;
+点眼 > tengan\ ;
+圧迫 > appaku\ ;
+外史 > gaishi\ ;
+大凡 > ooyoso\ ;
+濫造 > ranzou\ ;
+熔岩 > yougan\ ;
+随所 > zuisho\ ;
+改定 > kaitei\ ;
+雅客 > gakaku\ ;
+統治 > touchi\ ;
+天兵 > tenpei\ ;
+観点 > kanten\ ;
+隠忍 > in''nin\ ;
+大典 > taiten\ ;
+除服 > jofuku\ ;
+大公 > taikou\ ;
+大全 > taizen\ ;
+整合 > seigou\ ;
+精舎 > shouja\ ;
+大兄 > taikei\ ;
+詞宗 > shisou\ ;
+声域 > seiiki\ ;
+電命 > denmei\ ;
+補註 > hochuu\ ;
+衣食 > ishoku\ ;
+無様 > buzama\ ;
+摸牌 > moupai\ ;
+文典 > bunten\ ;
+線形 > senkei\ ;
+霊剣 > reiken\ ;
+数名 > suumei\ ;
+表音 > hyouon\ ;
+外勤 > gaikin\ ;
+霊前 > reizen\ ;
+補角 > hokaku\ ;
+随感 > zuikan\ ;
+炯眼 > keigan\ ;
+煩悶 > hanmon\ ;
+計数 > keisuu\ ;
+夜凪 > yonagi\ ;
+随想 > zuisou\ ;
+防水 > bousui\ ;
+推論 > suiron\ ;
+変名 > henmei\ ;
+給油 > kyuuyu\ ;
+言明 > genmei\ ;
+天候 > tenkou\ ;
+終焉 > shuuen\ ;
+熱型 > nekkei\ ;
+雷名 > raimei\ ;
+雷同 > raidou\ ;
+霧中 > muchuu\ ;
+四面 > shimen\ ;
+糟糠 > soukou\ ;
+数千 > suusen\ ;
+数十 > suujuu\ ;
+要用 > youyou\ ;
+続映 > zokuei\ ;
+除斥 > joseki\ ;
+雄姿 > yuushi\ ;
+改姓 > kaisei\ ;
+外分 > gaibun\ ;
+煖房 > danbou\ ;
+政変 > seihen\ ;
+埴生 > hanyuu\ ;
+外出 > sotode\ ;
+雲呑 > wantan\ ;
+夕刊 > yuukan\ ;
+煩忙 > hanbou\ ;
+結滞 > kettai\ ;
+絨毯 > juutan\ ;
+炉端 > robata\ ;
+雑報 > zappou\ ;
+詩壇 > shidan\ ;
+大便 > daiben\ ;
+絨毛 > juumou\ ;
+天使 > tenshi\ ;
+防止 > boushi\ ;
+累犯 > ruihan\ ;
+推計 > suikei\ ;
+照応 > shouou\ ;
+天体 > tentai\ ;
+縫合 > hougou\ ;
+電動 > dendou\ ;
+然斯 > soukou\ ;
+大使 > taishi\ ;
+証左 > shousa\ ;
+四隣 > shirin\ ;
+電効 > denkou\ ;
+外典 > gaiten\ ;
+細片 > saihen\ ;
+見猿 > mizaru\ ;
+大体 > daitai\ ;
+四隅 > yosumi\ ;
+堅牢 > kenrou\ ;
+火縄 > hinawa\ ;
+敦厚 > tonkou\ ;
+改変 > kaihen\ ;
+変動 > hendou\ ;
+照影 > shouei\ ;
+随従 > zuijuu\ ;
+雄大 > yuudai\ ;
+文例 > bunrei\ ;
+降板 > kouban\ ;
+大会 > taikai\ ;
+難問 > nanmon\ ;
+教唆 > kyousa\ ;
+探訪 > tanbou\ ;
+捻転 > nenten\ ;
+街頭 > gaitou\ ;
+大任 > tainin\ ;
+雄壮 > yuusou\ ;
+文体 > buntai\ ;
+大仰 > oogyou\ ;
+教員 > kyouin\ ;
+図録 > zuroku\ ;
+大代 > daidai\ ;
+天井 > tenjou\ ;
+接見 > sekken\ ;
+裏襟 > uraeri\ ;
+土足 > dosoku\ ;
+大人 > dainin\ ;
+斎主 > saishu\ ;
+訓戒 > kunkai\ ;
+外債 > gaisai\ ;
+故国 > kokoku\ ;
+授賞 > jushou\ ;
+詩型 > shikei\ ;
+見物 > mimono\ ;
+経済 > keizai\ ;
+総帥 > sousui\ ;
+天丼 > tendon\ ;
+天主 > tenshu\ ;
+大乱 > tairan\ ;
+炭田 > tanden\ ;
+照度 > shoudo\ ;
+隊形 > taikei\ ;
+城砦 > jousai\ ;
+終演 > shuuen\ ;
+文人 > bunjin\ ;
+読会 > dokkai\ ;
+大乗 > daijou\ ;
+売品 > baihin\ ;
+天与 > ten''yo\ ;
+天上 > tenjou\ ;
+均衡 > kinkou\ ;
+攻城 > koujou\ ;
+地謡 > jiutai\ ;
+視点 > shiten\ ;
+撒水 > sansui\ ;
+製茶 > seicha\ ;
+灯籠 > tourou\ ;
+誤信 > goshin\ ;
+電光 > denkou\ ;
+夜伽 > yotogi\ ;
+繋争 > keisou\ ;
+無暗 > muyami\ ;
+裁許 > saikyo\ ;
+擅断 > sendan\ ;
+多作 > tasaku\ ;
+燐光 > rinkou\ ;
+長者 > chouja\ ;
+散剤 > sanzai\ ;
+地誌 > chishi\ ;
+売名 > baimei\ ;
+陽性 > yousei\ ;
+夢中 > muchuu\ ;
+雷光 > raikou\ ;
+塊根 > kaikon\ ;
+焚書 > funsho\ ;
+褪紅 > taikou\ ;
+摂生 > sessei\ ;
+関空 > kankuu\ ;
+無明 > mumyou\ ;
+教区 > kyouku\ ;
+精緻 > seichi\ ;
+精練 > seiren\ ;
+国運 > kokuun\ ;
+閉経 > heikei\ ;
+教化 > kyouka\ ;
+絹本 > kenpon\ ;
+血餅 > keppei\ ;
+外伝 > gaiden\ ;
+電停 > dentei\ ;
+順々 > junjun\ ;
+数値 > suuchi\ ;
+関税 > kanzei\ ;
+教務 > kyoumu\ ;
+数倍 > suubai\ ;
+無料 > muryou\ ;
+夜中 > yonaka\ ;
+解明 > kaimei\ ;
+無敵 > muteki\ ;
+散兵 > sanpei\ ;
+経水 > keisui\ ;
+外人 > gaijin\ ;
+紙片 > shihen\ ;
+外交 > gaikou\ ;
+壇場 > danjou\ ;
+散光 > sankou\ ;
+捨身 > sutemi\ ;
+障子 > shouji\ ;
+精細 > seisai\ ;
+塗料 > toryou\ ;
+素焼 > suyaki\ ;
+継投 > keitou\ ;
+煙幕 > enmaku\ ;
+外乱 > gairan\ ;
+雑品 > zappin\ ;
+解散 > kaisan\ ;
+精糖 > seitou\ ;
+闘犬 > touken\ ;
+擱座 > kakuza\ ;
+精精 > seizei\ ;
+解放 > kaihou\ ;
+絶景 > zekkei\ ;
+試問 > shimon\ ;
+許容 > kyoyou\ ;
+階層 > kaisou\ ;
+地裁 > chisai\ ;
+精粋 > seisui\ ;
+精粉 > seifun\ ;
+揺籃 > youran\ ;
+捕逸 > hoitsu\ ;
+紛然 > funzen\ ;
+救助 > kyuujo\ ;
+精米 > seimai\ ;
+改善 > kaizen\ ;
+変体 > hentai\ ;
+敬体 > keitai\ ;
+要点 > youten\ ;
+圧覚 > akkaku\ ;
+数人 > suunin\ ;
+陰徳 > intoku\ ;
+教具 > kyougu\ ;
+火種 > hidane\ ;
+点点 > tenten\ ;
+記帳 > kichou\ ;
+設定 > settei\ ;
+推薦 > suisen\ ;
+炎症 > enshou\ ;
+掃討 > soutou\ ;
+衆院 > shuuin\ ;
+詩吟 > shigin\ ;
+点灯 > tentou\ ;
+烝民 > joumin\ ;
+詠唱 > eishou\ ;
+変人 > henjin\ ;
+累減 > ruigen\ ;
+籐製 > tousei\ ;
+綱常 > koujou\ ;
+精管 > seikan\ ;
+純然 > junzen\ ;
+防暑 > bousho\ ;
+精算 > seisan\ ;
+数万 > suuman\ ;
+垂線 > suisen\ ;
+閉端 > heitan\ ;
+変乱 > henran\ ;
+関知 > kanchi\ ;
+詩友 > shiyuu\ ;
+結構 > kekkou\ ;
+士分 > shibun\ ;
+陪従 > baijuu\ ;
+衣鉢 > ihatsu\ ;
+四重 > shijuu\ ;
+潮音 > chouon\ ;
+被覆 > hifuku\ ;
+声優 > seiyuu\ ;
+陶工 > toukou\ ;
+散会 > sankai\ ;
+指頭 > shitou\ ;
+改名 > kaimei\ ;
+炯炯 > keikei\ ;
+改号 > kaigou\ ;
+製缶 > seikan\ ;
+誌代 > shidai\ ;
+西漸 > seizen\ ;
+衰退 > suitai\ ;
+散乱 > sanran\ ;
+陣形 > jinkei\ ;
+炭火 > sumibi\ ;
+国費 > kokuhi\ ;
+政労 > seirou\ ;
+地虫 > mimizu\ ;
+壮健 > souken\ ;
+観梅 > kanbai\ ;
+回遊 > kaiyuu\ ;
+観桜 > kan''ou\ ;
+攻勢 > kousei\ ;
+誌上 > shijou\ ;
+細民 > saimin\ ;
+回送 > kaisou\ ;
+要港 > youkou\ ;
+堅気 > katagi\ ;
+雄勁 > yuukei\ ;
+垂範 > suihan\ ;
+無慾 > muyoku\ ;
+陽子 > youshi\ ;
+難件 > nanken\ ;
+除幕 > jomaku\ ;
+絢文 > kenbun\ ;
+訓導 > kundou\ ;
+四辺 > shihen\ ;
+敗亡 > haibou\ ;
+離京 > rikyou\ ;
+紅灯 > koutou\ ;
+売人 > bainin\ ;
+政党 > seitou\ ;
+試写 > shisha\ ;
+潮間 > shioma\ ;
+離乳 > rinyuu\ ;
+放免 > houmen\ ;
+裏芸 > uragei\ ;
+放光 > houkou\ ;
+観望 > kanbou\ ;
+回転 > kaiten\ ;
+討尋 > toujin\ ;
+製紙 > seishi\ ;
+場数 > bakazu\ ;
+火皿 > hizara\ ;
+篆隷 > tenrei\ ;
+製糸 > seishi\ ;
+製糖 > seitou\ ;
+増大 > zoudai\ ;
+西洋 > seiyou\ ;
+縁先 > ensaki\ ;
+経木 > kyougi\ ;
+売上 > uriage\ ;
+雑俳 > zappai\ ;
+国語 > kokugo\ ;
+製粉 > seifun\ ;
+経書 > keisho\ ;
+練功 > renkou\ ;
+改元 > kaigen\ ;
+換算 > kanzan\ ;
+開眼 > kaigen\ ;
+行金 > koukin\ ;
+粗粗 > araara\ ;
+炊爨 > suisan\ ;
+激語 > gekigo\ ;
+街道 > kaidou\ ;
+紡毛 > boumou\ ;
+壮丁 > soutei\ ;
+無心 > mushin\ ;
+紫檀 > shitan\ ;
+点水 > tensui\ ;
+縁側 > engawa\ ;
+補習 > hoshuu\ ;
+陣屋 > jin''ya\ ;
+雑件 > zakken\ ;
+掃蕩 > soutou\ ;
+防戦 > bousen\ ;
+終期 > shuuki\ ;
+雑人 > zounin\ ;
+練兵 > renpei\ ;
+墓場 > hakaba\ ;
+垂示 > suishi\ ;
+政体 > seitai\ ;
+雅俗 > gazoku\ ;
+純水 > junsui\ ;
+詩仙 > shisen\ ;
+政令 > seirei\ ;
+放任 > hounin\ ;
+粉糠 > konuka\ ;
+詩人 > shijin\ ;
+推考 > suikou\ ;
+陽報 > youhou\ ;
+編制 > hensei\ ;
+純毛 > junmou\ ;
+拳闘 > kentou\ ;
+紅涙 > kourui\ ;
+政争 > seisou\ ;
+終映 > shuuei\ ;
+素樸 > soboku\ ;
+拝顔 > haigan\ ;
+紅海 > koukai\ ;
+陋巷 > roukou\ ;
+緘口 > kankou\ ;
+粉米 > kogome\ ;
+探聞 > tanbun\ ;
+噴飯 > funpan\ ;
+煽動 > sendou\ ;
+継子 > mamako\ ;
+純正 > junsei\ ;
+覇業 > hagyou\ ;
+陵墓 > ryoubo\ ;
+簡裁 > kansai\ ;
+証印 > shouin\ ;
+試乗 > shijou\ ;
+隠匿 > intoku\ ;
+規格 > kikaku\ ;
+火玉 > hidama\ ;
+訪問 > houmon\ ;
+長目 > nagame\ ;
+操守 > soushu\ ;
+統御 > tougyo\ ;
+蟻食 > arikui\ ;
+搾油 > sakuyu\ ;
+衿裏 > eriura\ ;
+振起 > shinki\ ;
+総合 > sougou\ ;
+補給 > hokyuu\ ;
+摂氏 > sesshi\ ;
+行軍 > kougun\ ;
+評価 > hyouka\ ;
+門番 > monban\ ;
+堅材 > kenzai\ ;
+図表 > zuhyou\ ;
+堅木 > katagi\ ;
+援用 > en''you\ ;
+防御 > bougyo\ ;
+米綿 > beimen\ ;
+灰燼 > kaijin\ ;
+点検 > tenken\ ;
+塹壕 > zangou\ ;
+紅毛 > koumou\ ;
+線分 > senbun\ ;
+緑化 > ryokka\ ;
+陋屋 > rouoku\ ;
+地肌 > jihada\ ;
+防弾 > boudan\ ;
+限定 > gentei\ ;
+装置 > souchi\ ;
+階名 > kaimei\ ;
+言外 > gengai\ ;
+角度 > kakudo\ ;
+垣牆 > enshou\ ;
+総勢 > souzei\ ;
+回訓 > kaikun\ ;
+壊乱 > kairan\ ;
+統帥 > tousui\ ;
+観戦 > kansen\ ;
+接線 > sessen\ ;
+結成 > kessei\ ;
+約款 > yakkan\ ;
+表記 > hyouki\ ;
+撤廃 > teppai\ ;
+附属 > fuzoku\ ;
+因襲 > inshuu\ ;
+回覧 > kairan\ ;
+米粉 > beifun\ ;
+煩労 > hanrou\ ;
+墨刑 > bokkei\ ;
+無学 > mugaku\ ;
+被膜 > himaku\ ;
+城池 > jouchi\ ;
+描破 > byouha\ ;
+摘果 > tekika\ ;
+絶島 > zettou\ ;
+陰嚢 > fuguri\ ;
+壇上 > danjou\ ;
+裏紋 > uramon\ ;
+素朴 > soboku\ ;
+間然 > kanzen\ ;
+抹香 > makkou\ ;
+拳銃 > kenjuu\ ;
+紫斑 > shihan\ ;
+要望 > youbou\ ;
+観想 > kansou\ ;
+節酒 > sesshu\ ;
+見方 > mikata\ ;
+納棺 > noukan\ ;
+裁縫 > saihou\ ;
+噴門 > funmon\ ;
+為替 > kawase\ ;
+表裏 > hyouri\ ;
+随分 > zuibun\ ;
+絶対 > zettai\ ;
+随処 > zuisho\ ;
+粗目 > zarame\ ;
+陣地 > jinchi\ ;
+漢音 > kan''on\ ;
+指輪 > yubiwa\ ;
+推算 > suisan\ ;
+均等 > kintou\ ;
+点景 > tenkei\ ;
+限外 > gengai\ ;
+粉砕 > funsai\ ;
+基教 > kikyou\ ;
+陰唇 > inshin\ ;
+要旨 > youshi\ ;
+訊問 > jinmon\ ;
+隣人 > rinjin\ ;
+米突 > mētoru\ ;
+素敵 > suteki\ ;
+増刊 > zoukan\ ;
+増分 > zoubun\ ;
+精煉 > seiren\ ;
+潮路 > shioji\ ;
+紅梅 > koubai\ ;
+降壇 > koudan\ ;
+西方 > seihou\ ;
+術計 > jukkei\ ;
+採算 > saisan\ ;
+納杯 > nouhai\ ;
+潰走 > kaisou\ ;
+衆議 > shuugi\ ;
+褒状 > houjou\ ;
+防寒 > boukan\ ;
+際会 > saikai\ ;
+点数 > tensuu\ ;
+納本 > nouhon\ ;
+拳道 > kondou\ ;
+増兵 > zouhei\ ;
+明々 > akaaka\ ;
+陣営 > jin''ei\ ;
+坐礁 > zashou\ ;
+紙数 > shisuu\ ;
+継嗣 > keishi\ ;
+総体 > soutai\ ;
+描画 > byouga\ ;
+紛擾 > funjou\ ;
+灸治 > kyuuji\ ;
+総会 > soukai\ ;
+接種 > sesshu\ ;
+総代 > soudai\ ;
+門灯 > montou\ ;
+拠金 > kyokin\ ;
+門火 > kadobi\ ;
+煎剤 > senzai\ ;
+絶好 > zekkou\ ;
+焦土 > shoudo\ ;
+素描 > sobyou\ ;
+紆曲 > ukyoku\ ;
+拝金 > haikin\ ;
+袱紗 > fukusa\ ;
+随伴 > zuihan\ ;
+陽光 > youkou\ ;
+経常 > keijou\ ;
+提琴 > teikin\ ;
+経師 > kyouji\ ;
+記入 > kinyuu\ ;
+在米 > zaibei\ ;
+覚悟 > kakugo\ ;
+増俸 > zouhou\ ;
+袢纏 > hanten\ ;
+開港 > kaikou\ ;
+増便 > zoubin\ ;
+綜合 > sougou\ ;
+陰刻 > inkoku\ ;
+漏電 > rouden\ ;
+褐炭 > kattan\ ;
+階乗 > kaijou\ ;
+掻痒 > souyou\ ;
+炉棚 > rodana\ ;
+解団 > kaidan\ ;
+境内 > keidai\ ;
+階上 > kaijou\ ;
+陞叙 > shoujo\ ;
+推知 > suichi\ ;
+擾乱 > jouran\ ;
+火水 > himizu\ ;
+製版 > seihan\ ;
+篤行 > tokkou\ ;
+要所 > yousho\ ;
+地税 > chizei\ ;
+絹地 > kinuji\ ;
+言動 > gendou\ ;
+精液 > seieki\ ;
+防塵 > boujin\ ;
+探知 > tanchi\ ;
+堅志 > kenshi\ ;
+防塞 > bousai\ ;
+器量 > kiryou\ ;
+挙行 > kyokou\ ;
+灌漑 > kangai\ ;
+阪大 > handai\ ;
+血行 > kekkou\ ;
+長湯 > nagayu\ ;
+続刊 > zokkan\ ;
+土竜 > mogura\ ;
+漸近 > zenkin\ ;
+土窯 > dogama\ ;
+院内 > in''nai\ ;
+場外 > jougai\ ;
+製炭 > seitan\ ;
+垂準 > suijun\ ;
+粉状 > funjou\ ;
+無告 > mukoku\ ;
+訓令 > kunrei\ ;
+見当 > kentou\ ;
+累年 > ruinen\ ;
+回船 > kaisen\ ;
+降参 > kousan\ ;
+圧神 > asshin\ ;
+米産 > beisan\ ;
+結婚 > kekkon\ ;
+回航 > kaikou\ ;
+閉止 > heishi\ ;
+納所 > nassho\ ;
+撤回 > tekkai\ ;
+籠目 > kagome\ ;
+純愛 > jun''ai\ ;
+投降 > toukou\ ;
+紺屋 > kon''ya\ ;
+手鼻 > tebana\ ;
+長波 > chouha\ ;
+操典 > souten\ ;
+垂涎 > zuizen\ ;
+索引 > sakuin\ ;
+純情 > junjou\ ;
+点心 > tenjin\ ;
+関東 > kantou\ ;
+煉丹 > rentan\ ;
+絶品 > zeppin\ ;
+探番 > tanban\ ;
+訌争 > kousou\ ;
+門歯 > monshi\ ;
+濃紺 > noukon\ ;
+約手 > yakute\ ;
+地相 > chisou\ ;
+衰耗 > suimou\ ;
+筆頭 > hittou\ ;
+採用 > saiyou\ ;
+灌水 > kansui\ ;
+捕縛 > hobaku\ ;
+裂痔 > kireji\ ;
+粉炭 > funtan\ ;
+陪乗 > baijou\ ;
+四肢 > shishi\ ;
+管財 > kanzai\ ;
+装甲 > soukou\ ;
+装用 > souyou\ ;
+計上 > keijou\ ;
+闘志 > toushi\ ;
+圧着 > atsugi\ ;
+垣根 > kakine\ ;
+因習 > inshuu\ ;
+面々 > menmen\ ;
+四聖 > shisei\ ;
+解剖 > kaibou\ ;
+統合 > tougou\ ;
+土石 > doseki\ ;
+開梱 > kaikon\ ;
+附則 > fusoku\ ;
+潜行 > senkou\ ;
+紙幣 > shihei\ ;
+襟懐 > kinkai\ ;
+解凍 > kaitou\ ;
+地番 > chiban\ ;
+焚刑 > funkei\ ;
+垂死 > suishi\ ;
+細字 > hosoji\ ;
+細孔 > saikou\ ;
+堅守 > kenshu\ ;
+無償 > mushou\ ;
+火木 > kamoku\ ;
+終夜 > shuuya\ ;
+地界 > chikai\ ;
+関数 > kansuu\ ;
+絃声 > gensei\ ;
+言上 > gonjou\ ;
+開校 > kaikou\ ;
+拝謝 > haisha\ ;
+間服 > aifuku\ ;
+解党 > kaitou\ ;
+閉校 > heikou\ ;
+無傷 > mukizu\ ;
+揚水 > yousui\ ;
+撤去 > tekkyo\ ;
+製法 > seihou\ ;
+滞陣 > taijin\ ;
+精根 > seikon\ ;
+因縁 > in''nen\ ;
+西岸 > seigan\ ;
+嘆願 > tangan\ ;
+澱粉 > denpun\ ;
+統制 > tousei\ ;
+持薬 > jiyaku\ ;
+回線 > kaisen\ ;
+間断 > kandan\ ;
+拝観 > haikan\ ;
+要害 > yougai\ ;
+紙屋 > kamiya\ ;
+降任 > kounin\ ;
+拝見 > haiken\ ;
+蟠踞 > bankyo\ ;
+間数 > makazu\ ;
+国禁 > kokkin\ ;
+挿絵 > sashie\ ;
+地獄 > jigoku\ ;
+無休 > mukyuu\ ;
+垂楊 > suiyou\ ;
+掌理 > shouri\ ;
+細大 > saidai\ ;
+閑散 > kansan\ ;
+開明 > kaimei\ ;
+土産 > miyage\ ;
+解体 > kaitai\ ;
+接点 > setten\ ;
+国礎 > kokuso\ ;
+滑降 > kakkou\ ;
+閨房 > keibou\ ;
+開方 > kaihou\ ;
+端麗 > tanrei\ ;
+血膿 > chiumi\ ;
+解任 > kainin\ ;
+方々 > houbou\ ;
+絶倒 > zettou\ ;
+紙子 > kamiko\ ;
+炭層 > tansou\ ;
+撤兵 > teppei\ ;
+紫外 > shigai\ ;
+累増 > ruizou\ ;
+行者 > gyouja\ ;
+採点 > saiten\ ;
+携帯 > keitai\ ;
+採炭 > saitan\ ;
+烈士 > resshi\ ;
+開放 > kaihou\ ;
+漫談 > mandan\ ;
+手駒 > tegoma\ ;
+堅塁 > kenrui\ ;
+手首 > tekubi\ ;
+堂塔 > doutou\ ;
+長期 > chouki\ ;
+堅城 > kenjou\ ;
+炉心 > roshin\ ;
+筆鋒 > hippou\ ;
+堂堂 > doudou\ ;
+漫言 > mangen\ ;
+回答 > kaitou\ ;
+親和 > shinwa\ ;
+経口 > keikou\ ;
+城市 > joushi\ ;
+絶交 > zekkou\ ;
+垂木 > taruki\ ;
+場内 > jounai\ ;
+按腹 > anpuku\ ;
+補注 > hochuu\ ;
+地点 > chiten\ ;
+漢詩 > kanshi\ ;
+闇屋 > yamiya\ ;
+絶世 > zessei\ ;
+技量 > giryou\ ;
+手頸 > tekubi\ ;
+組合 > kumiai\ ;
+炉床 > roshou\ ;
+手頃 > tegoro\ ;
+見地 > kenchi\ ;
+要塞 > yousai\ ;
+被爆 > hibaku\ ;
+蟷螂 > tourou\ ;
+覆土 > fukudo\ ;
+培地 > baichi\ ;
+潜航 > senkou\ ;
+西域 > seiiki\ ;
+給付 > kyuufu\ ;
+給仕 > kyuuji\ ;
+回礼 > kairei\ ;
+所願 > shogan\ ;
+闘士 > toushi\ ;
+結党 > kettou\ ;
+瀕死 > hinshi\ ;
+純増 > junzou\ ;
+開戦 > kaisen\ ;
+観光 > kankou\ ;
+製材 > seizai\ ;
+溜飲 > ryuuin\ ;
+表示 > hyouji\ ;
+要地 > youchi\ ;
+製本 > seihon\ ;
+烙印 > rakuin\ ;
+手際 > tegiwa\ ;
+手隙 > tesuki\ ;
+経典 > keiten\ ;
+親分 > oyabun\ ;
+紙型 > shikei\ ;
+等辺 > touhen\ ;
+点在 > tenzai\ ;
+地溝 > chikou\ ;
+給与 > kyuuyo\ ;
+炭塵 > tanjin\ ;
+国璽 > kokuji\ ;
+粗服 > sofuku\ ;
+血統 > kettou\ ;
+火急 > kakyuu\ ;
+域外 > ikigai\ ;
+竿頭 > kantou\ ;
+細君 > saikun\ ;
+灯影 > hokage\ ;
+投資 > toushi\ ;
+拙著 > setcho\ ;
+血糖 > kettou\ ;
+手長 > tenaga\ ;
+火影 > hokage\ ;
+排液 > haieki\ ;
+炭坑 > tankou\ ;
+闇夜 > yamiyo\ ;
+国王 > kokuou\ ;
+紅塵 > koujin\ ;
+見台 > kendai\ ;
+粉本 > funpon\ ;
+長打 > chouda\ ;
+見参 > kenzan\ ;
+精悍 > seikan\ ;
+圏点 > kenten\ ;
+火床 > hidoko\ ;
+血管 > kekkan\ ;
+経伝 > keiden\ ;
+捕球 > hokyuu\ ;
+成魚 > seigyo\ ;
+表皮 > hyouhi\ ;
+行程 > koutei\ ;
+揚揚 > youyou\ ;
+城外 > jougai\ ;
+指紋 > shimon\ ;
+排水 > haisui\ ;
+国父 > kokufu\ ;
+細分 > saibun\ ;
+災害 > saigai\ ;
+開廷 > kaitei\ ;
+嘉辰 > kashin\ ;
+捕獲 > hokaku\ ;
+持続 > jizoku\ ;
+溶銑 > yousen\ ;
+規則 > kisoku\ ;
+閉廷 > heitei\ ;
+握手 > akushu\ ;
+開店 > kaiten\ ;
+精彩 > seisai\ ;
+提携 > teikei\ ;
+手鍋 > tenabe\ ;
+掃海 > soukai\ ;
+竜馬 > ryuume\ ;
+城塞 > jousai\ ;
+経世 > keisei\ ;
+開平 > kaihei\ ;
+抗言 > kougen\ ;
+窮鼠 > kyuuso\ ;
+閉店 > heiten\ ;
+城塁 > jourui\ ;
+滑車 > kassha\ ;
+童顔 > dougan\ ;
+回生 > kaisei\ ;
+満願 > mangan\ ;
+開巻 > kaikan\ ;
+西南 > seinan\ ;
+探検 > tanken\ ;
+門弟 > montei\ ;
+戦雲 > sen''un\ ;
+手鉤 > tekagi\ ;
+湾頭 > wantou\ ;
+納品 > nouhin\ ;
+喧騒 > kensou\ ;
+損害 > songai\ ;
+米材 > beizai\ ;
+城址 > joushi\ ;
+戦隊 > sentai\ ;
+拝聞 > haibun\ ;
+蜚鳥 > hichou\ ;
+戦陣 > senjin\ ;
+精巧 > seikou\ ;
+精巣 > seisou\ ;
+満面 > manmen\ ;
+閑居 > kankyo\ ;
+竜頭 > ryuuzu\ ;
+滑走 > kassou\ ;
+喫飯 > kippan\ ;
+索具 > sakugu\ ;
+裏板 > uraita\ ;
+蝦錠 > ebijou\ ;
+火宅 > kataku\ ;
+戦闘 > sentou\ ;
+手酌 > tejaku\ ;
+拙者 > sessha\ ;
+開山 > kaisan\ ;
+長座 > chouza\ ;
+漢英 > kan''ei\ ;
+閉山 > heizan\ ;
+嘉賞 > kashou\ ;
+地検 > chiken\ ;
+閉居 > heikyo\ ;
+開封 > kaifuu\ ;
+摂取 > sesshu\ ;
+関大 > kandai\ ;
+国漢 > kokkan\ ;
+点光 > tenkou\ ;
+炭労 > tanrou\ ;
+抹茶 > matcha\ ;
+回状 > kaijou\ ;
+累代 > ruidai\ ;
+拘置 > kouchi\ ;
+純分 > junbun\ ;
+坦懐 > tankai\ ;
+均斉 > kinsei\ ;
+満開 > mankai\ ;
+均整 > kinsei\ ;
+累乗 > ruijou\ ;
+推断 > suidan\ ;
+散々 > sanzan\ ;
+批評 > hihyou\ ;
+授業 > jugyou\ ;
+融資 > yuushi\ ;
+推敲 > suikou\ ;
+累世 > ruisei\ ;
+血相 > kessou\ ;
+粘性 > nensei\ ;
+複座 > fukuza\ ;
+濃淡 > noutan\ ;
+掲揚 > keiyou\ ;
+見事 > migoto\ ;
+精子 > seishi\ ;
+堂上 > doujou\ ;
+螳螂 > tourou\ ;
+手軽 > tegaru\ ;
+灰塵 > haijin\ ;
+在校 > zaikou\ ;
+褥婦 > jokufu\ ;
+漕艇 > soutei\ ;
+長屋 > nagaya\ ;
+血痰 > kettan\ ;
+開始 > kaishi\ ;
+衆生 > shujou\ ;
+要件 > youken\ ;
+血痕 > kekkon\ ;
+域内 > ikinai\ ;
+長寿 > chouju\ ;
+要人 > youjin\ ;
+在来 > zairai\ ;
+挙用 > kyoyou\ ;
+長家 > nagaya\ ;
+裁断 > saidan\ ;
+抜萃 > bassui\ ;
+紛争 > funsou\ ;
+所載 > shosai\ ;
+手足 > teashi\ ;
+圧服 > appuku\ ;
+紛乱 > funran\ ;
+潰瘍 > kaiyou\ ;
+開墾 > kaikon\ ;
+地方 > chihou\ ;
+推挙 > suikyo\ ;
+国母 > kokubo\ ;
+粒度 > ryuudo\ ;
+地文 > chimon\ ;
+街燈 > gaitou\ ;
+游魚 > yuugyo\ ;
+抗菌 > koukin\ ;
+紙上 > shijou\ ;
+開場 > kaijou\ ;
+融解 > yuukai\ ;
+回漕 > kaisou\ ;
+土木 > doboku\ ;
+閉場 > heijou\ ;
+被服 > hifuku\ ;
+喉頭 > koutou\ ;
+閑地 > kanchi\ ;
+米懇 > beikon\ ;
+闘争 > tousou\ ;
+納会 > noukai\ ;
+開城 > kaijou\ ;
+閣員 > kakuin\ ;
+門外 > mongai\ ;
+捺染 > nassen\ ;
+被曝 > hibaku\ ;
+推戴 > suitai\ ;
+城内 > jounai\ ;
+管端 > kantan\ ;
+城兵 > jouhei\ ;
+漁船 > gyosen\ ;
+闇値 > yamine\ ;
+演習 > enshuu\ ;
+接戦 > sessen\ ;
+回游 > kaiyuu\ ;
+街灯 > gaitou\ ;
+競輪 > keirin\ ;
+持病 > jibyou\ ;
+長女 > choujo\ ;
+国権 > kokken\ ;
+紊乱 > bunran\ ;
+長夜 > chouya\ ;
+指環 > yubiwa\ ;
+拙稿 > sekkou\ ;
+土方 > dokata\ ;
+打診 > dashin\ ;
+善霊 > zenrei\ ;
+拝礼 > hairei\ ;
+四海 > shikai\ ;
+圧搾 > assaku\ ;
+溶解 > youkai\ ;
+演繹 > en''eki\ ;
+補強 > hokyou\ ;
+門地 > monchi\ ;
+拘禁 > koukin\ ;
+立錐 > rissui\ ;
+精嚢 > seinou\ ;
+善隣 > zenrin\ ;
+笑話 > shouwa\ ;
+鎔銑 > yousen\ ;
+戦車 > sensha\ ;
+坑底 > koutei\ ;
+灯台 > toudai\ ;
+算程 > santei\ ;
+手許 > temoto\ ;
+渠魁 > kyokai\ ;
+衰残 > suizan\ ;
+衰死 > suishi\ ;
+粉屋 > konaya\ ;
+城代 > joudai\ ;
+所論 > shoron\ ;
+四民 > shimin\ ;
+団欒 > danran\ ;
+満載 > mansai\ ;
+接待 > settai\ ;
+満車 > mansha\ ;
+所詮 > shosen\ ;
+城主 > joushu\ ;
+在所 > zaisho\ ;
+瀑布 > bakufu\ ;
+米帝 > beitei\ ;
+糖分 > toubun\ ;
+搭乗 > toujou\ ;
+喝采 > kassai\ ;
+開口 > kaikou\ ;
+溶融 > youyuu\ ;
+灰分 > kaibun\ ;
+嘲罵 > chouba\ ;
+筋腫 > kinshu\ ;
+閉口 > heikou\ ;
+蛮風 > banpuu\ ;
+懇願 > kongan\ ;
+筆致 > hitchi\ ;
+所見 > shoken\ ;
+所要 > shoyou\ ;
+図柄 > zugara\ ;
+装弾 > soudan\ ;
+戊辰 > boshin\ ;
+漁網 > gyomou\ ;
+国是 > kokuze\ ;
+灯光 > toukou\ ;
+糞便 > funben\ ;
+蝴蝶 > kochou\ ;
+潮瀬 > shiose\ ;
+関係 > kankei\ ;
+童貞 > doutei\ ;
+突風 > toppuu\ ;
+激昂 > gekkou\ ;
+折線 > sessen\ ;
+火先 > hosaki\ ;
+米屋 > komeya\ ;
+火元 > himoto\ ;
+地形 > chikei\ ;
+満貫 > mangan\ ;
+装幀 > soutei\ ;
+揺動 > youdou\ ;
+簡明 > kanmei\ ;
+戯評 > gihyou\ ;
+精勤 > seikin\ ;
+抜糸 > basshi\ ;
+血清 > kessei\ ;
+穴馬 > anauma\ ;
+精励 > seirei\ ;
+火傷 > yakedo\ ;
+滅菌 > mekkin\ ;
+筆耕 > hikkou\ ;
+鎮護 > chingo\ ;
+蛮隷 > banrei\ ;
+筆者 > hissha\ ;
+抜粋 > bassui\ ;
+地底 > chitei\ ;
+在役 > zaieki\ ;
+才藻 > saisou\ ;
+地平 > chihei\ ;
+精到 > seitou\ ;
+換喩 > kan''yu\ ;
+粉塵 > funjin\ ;
+地帯 > chitai\ ;
+節点 > setten\ ;
+推定 > suitei\ ;
+童謡 > douyou\ ;
+問題 > mondai\ ;
+門前 > monzen\ ;
+四桁 > yoketa\ ;
+行殊 > gyoujo\ ;
+坦坦 > tantan\ ;
+空音 > sorane\ ;
+関与 > kan''yo\ ;
+圧延 > atsuen\ ;
+衰替 > suitai\ ;
+開催 > kaisai\ ;
+門出 > kadode\ ;
+精兵 > seihei\ ;
+採寸 > saisun\ ;
+開傘 > kaisan\ ;
+扶翼 > fuyoku\ ;
+損亡 > sonbou\ ;
+閃光 > senkou\ ;
+籠居 > roukyo\ ;
+坑外 > kougai\ ;
+懸軍 > kengun\ ;
+龍馬 > ryuume\ ;
+空電 > kuuden\ ;
+四書 > shisho\ ;
+挙止 > kyoshi\ ;
+製品 > seihin\ ;
+空際 > kuusai\ ;
+善道 > zendou\ ;
+清風 > seifuu\ ;
+管状 > kanjou\ ;
+鍛錬 > tanren\ ;
+地層 > chisou\ ;
+火中 > kachuu\ ;
+国技 > kokugi\ ;
+録音 > rokuon\ ;
+鍛鋼 > tankou\ ;
+裁定 > seitei\ ;
+所蔵 > shozou\ ;
+長円 > chouen\ ;
+開会 > kaikai\ ;
+測鎖 > sokusa\ ;
+潟湖 > sekiko\ ;
+喉輪 > nodowa\ ;
+渋面 > juumen\ ;
+閉会 > heikai\ ;
+回旋 > kaisen\ ;
+筆紙 > hisshi\ ;
+捕捉 > hosoku\ ;
+空閨 > kuukei\ ;
+潮気 > shioke\ ;
+回文 > kaibun\ ;
+演目 > enmoku\ ;
+空間 > kuukan\ ;
+国憲 > kokken\ ;
+回数 > kaisuu\ ;
+投稿 > toukou\ ;
+国慶 > kokkei\ ;
+才芸 > saigei\ ;
+複利 > fukuri\ ;
+裏声 > uragoe\ ;
+滞納 > tainou\ ;
+四散 > shisan\ ;
+渓間 > keikan\ ;
+拠点 > kyoten\ ;
+手芸 > shugei\ ;
+測鉛 > sokuen\ ;
+在官 > zaikan\ ;
+噴煙 > fun''en\ ;
+滞米 > taibei\ ;
+漂砂 > hyousa\ ;
+門人 > monjin\ ;
+筆算 > hissan\ ;
+国恩 > kokuon\ ;
+掃射 > sousha\ ;
+鎔解 > youkai\ ;
+筆答 > hittou\ ;
+才腕 > saiwan\ ;
+困憊 > konpai\ ;
+節水 > sessui\ ;
+潅漑 > kangai\ ;
+筆端 > hittan\ ;
+答礼 > tourei\ ;
+手腕 > shuwan\ ;
+潜水 > sensui\ ;
+激怒 > gekido\ ;
+才能 > sainou\ ;
+装填 > souten\ ;
+拳法 > kenpou\ ;
+清閑 > seikan\ ;
+接地 > setchi\ ;
+鍛造 > tanzou\ ;
+竜蝦 > iseebi\ ;
+地変 > chihen\ ;
+血栓 > kessen\ ;
+排外 > haigai\ ;
+団扇 > uchiwa\ ;
+手職 > tejoku\ ;
+窓辺 > madobe\ ;
+術数 > jussuu\ ;
+籠城 > roujou\ ;
+漫然 > manzen\ ;
+滞空 > taikuu\ ;
+深雪 > miyuki\ ;
+地塊 > chikai\ ;
+回戦 > kaisen\ ;
+濁度 > dakudo\ ;
+手翰 > shukan\ ;
+在天 > zaiten\ ;
+行旅 > kouryo\ ;
+稽首 > keishu\ ;
+竜虎 > ryouko\ ;
+在外 > zaigai\ ;
+衰態 > suitai\ ;
+行文 > koubun\ ;
+血書 > kessho\ ;
+裂地 > kireji\ ;
+坑口 > koukou\ ;
+地域 > chiiki\ ;
+減配 > genpai\ ;
+積雲 > sekiun\ ;
+満蒙 > manmou\ ;
+漸減 > zengen\ ;
+回想 > kaisou\ ;
+滑空 > kakkuu\ ;
+深間 > fukama\ ;
+滑稽 > kokkei\ ;
+漫漫 > manman\ ;
+錬鋼 > renkou\ ;
+血斑 > keppan\ ;
+稚鰤 > warasa\ ;
+減退 > gentai\ ;
+端艇 > tantei\ ;
+接吻 > seppun\ ;
+推参 > suisan\ ;
+拘泥 > koudei\ ;
+筋目 > sujime\ ;
+戦艦 > senkan\ ;
+補則 > hosoku\ ;
+捨子 > sutego\ ;
+噴泉 > funsen\ ;
+稚鮎 > chiayu\ ;
+蜥蜴 > tokage\ ;
+拝殿 > haiden\ ;
+稚魚 > chigyo\ ;
+均勢 > kinsei\ ;
+国富 > kokufu\ ;
+採取 > saishu\ ;
+坑内 > kounai\ ;
+噴水 > funsui\ ;
+手紙 > tegami\ ;
+算法 > sanpou\ ;
+国字 > kokuji\ ;
+囚徒 > shuuto\ ;
+衰幣 > suihei\ ;
+篆書 > tensho\ ;
+種類 > shurui\ ;
+清酒 > seishu\ ;
+粉体 > funtai\ ;
+圏外 > kengai\ ;
+補償 > hoshou\ ;
+商運 > shouun\ ;
+回廊 > kairou\ ;
+空転 > kuuten\ ;
+均分 > kinbun\ ;
+滅私 > messhi\ ;
+空軍 > kuugun\ ;
+空車 > kuusha\ ;
+粋人 > suijin\ ;
+手籠 > tekago\ ;
+空身 > karami\ ;
+指数 > shisuu\ ;
+善行 > zenkou\ ;
+錚錚 > sousou\ ;
+手簡 > shukan\ ;
+算段 > sandan\ ;
+清遊 > seiyuu\ ;
+地名 > chimei\ ;
+満腔 > mankou\ ;
+披瀝 > hireki\ ;
+拒止 > kyoshi\ ;
+手箱 > tebako\ ;
+手管 > tekuda\ ;
+筆生 > hissei\ ;
+補修 > hoshuu\ ;
+接写 > sessha\ ;
+四川 > shisen\ ;
+手筋 > tesuji\ ;
+手筈 > tehazu\ ;
+挙手 > kyoshu\ ;
+突貫 > tokkan\ ;
+衡平 > kouhei\ ;
+準縄 > junjou\ ;
+竹縁 > takeen\ ;
+排卵 > hairan\ ;
+湯花 > yubana\ ;
+減資 > genshi\ ;
+血戦 > kessen\ ;
+懇請 > konsei\ ;
+懇談 > kondan\ ;
+捨場 > suteba\ ;
+採光 > saikou\ ;
+地勢 > chisei\ ;
+湯船 > yubune\ ;
+筒状 > toujou\ ;
+衆愚 > shuugu\ ;
+稲門 > toumon\ ;
+裁判 > saiban\ ;
+竜胆 > rindou\ ;
+所管 > shokan\ ;
+深部 > shinbu\ ;
+戸籍 > koseki\ ;
+探偵 > tantei\ ;
+節操 > sessou\ ;
+被告 > hikoku\ ;
+混迷 > konmei\ ;
+滅相 > messou\ ;
+端線 > tansen\ ;
+端緒 > tancho\ ;
+在勤 > zaikin\ ;
+潔斎 > kessai\ ;
+成育 > seiiku\ ;
+蜈蚣 > mukade\ ;
+圧勝 > asshou\ ;
+海鼠 > namako\ ;
+戦線 > sensen\ ;
+漿果 > shouka\ ;
+固執 > koshuu\ ;
+接伴 > seppan\ ;
+竹簀 > takesu\ ;
+器楽 > kigaku\ ;
+地元 > jimoto\ ;
+混載 > konsai\ ;
+液面 > ekimen\ ;
+蛇足 > dasoku\ ;
+滾滾 > konkon\ ;
+国土 > kokudo\ ;
+虹霓 > kougei\ ;
+行幸 > miyuki\ ;
+行年 > kounen\ ;
+空論 > kuuron\ ;
+空談 > kuudan\ ;
+漁港 > gyokou\ ;
+清貧 > seihin\ ;
+才知 > saichi\ ;
+蝋紙 > roushi\ ;
+愛鳥 > aichou\ ;
+蛮行 > bankou\ ;
+漏水 > rousui\ ;
+商議 > shougi\ ;
+蠱惑 > kowaku\ ;
+戯笑 > gishou\ ;
+筋炎 > kin''en\ ;
+排便 > haiben\ ;
+国営 > kokuei\ ;
+四姓 > shisei\ ;
+拮据 > kikkyo\ ;
+披歴 > hireki\ ;
+捕囚 > hoshuu\ ;
+回天 > kaiten\ ;
+振子 > furiko\ ;
+噸数 > tonsuu\ ;
+漁法 > gyohou\ ;
+装丁 > soutei\ ;
+団塊 > dankai\ ;
+捧呈 > houtei\ ;
+減衰 > gensui\ ;
+地代 > chidai\ ;
+戦端 > sentan\ ;
+喫緊 > kikkin\ ;
+四声 > shisei\ ;
+手癖 > tekuse\ ;
+拮抗 > kikkou\ ;
+錯誤 > sakugo\ ;
+税関 > zeikan\ ;
+漁民 > gyomin\ ;
+在住 > zaijuu\ ;
+蚊鉤 > kabari\ ;
+指弾 > shidan\ ;
+回報 > kaihou\ ;
+地上 > chijou\ ;
+在任 > zainin\ ;
+圧伏 > appuku\ ;
+潮干 > shiohi\ ;
+海魚 > kaigyo\ ;
+嗜眠 > shimin\ ;
+算数 > sansuu\ ;
+土俵 > dohyou\ ;
+園内 > en''nai\ ;
+団地 > danchi\ ;
+土俗 > dozoku\ ;
+蚊針 > kabari\ ;
+衆寡 > shuuka\ ;
+抜歯 > basshi\ ;
+潮差 > chousa\ ;
+濃厚 > noukou\ ;
+漢書 > kansho\ ;
+打球 > dakyuu\ ;
+鼻鏡 > bikyou\ ;
+符牒 > fuchou\ ;
+在世 > zaisei\ ;
+授乳 > junyuu\ ;
+海驢 > ashika\ ;
+漫文 > manbun\ ;
+表土 > hyoudo\ ;
+成算 > seisan\ ;
+国務 > kokumu\ ;
+消音 > shouon\ ;
+簡単 > kantan\ ;
+我等 > warera\ ;
+挽回 > bankai\ ;
+折檻 > sekkan\ ;
+空虚 > kuukyo\ ;
+激務 > gekimu\ ;
+土中 > dochuu\ ;
+所用 > shoyou\ ;
+所産 > shosan\ ;
+漢方 > kanpou\ ;
+淺見 > senken\ ;
+融点 > yuuten\ ;
+国利 > kokuri\ ;
+漢文 > kanbun\ ;
+手玉 > tedama\ ;
+滔滔 > toutou\ ;
+喪章 > moshou\ ;
+成空 > seikuu\ ;
+嚇怒 > kakudo\ ;
+団員 > dan''in\ ;
+筆法 > hippou\ ;
+海風 > kaifuu\ ;
+手狭 > tezema\ ;
+国光 > kokkou\ ;
+指導 > shidou\ ;
+鼾酔 > kansui\ ;
+銀鱗 > ginrin\ ;
+感電 > kanden\ ;
+啓蒙 > keimou\ ;
+衆多 > shuuta\ ;
+税金 > zeikin\ ;
+指定 > shitei\ ;
+温良 > onryou\ ;
+喪祭 > sousai\ ;
+懐胎 > kaitai\ ;
+海面 > kaimen\ ;
+黒鵐 > kuroji\ ;
+累々 > ruirui\ ;
+漫才 > manzai\ ;
+蠏座 > kaniza\ ;
+衰勢 > suisei\ ;
+漁村 > gyoson\ ;
+海難 > kainan\ ;
+堂々 > doudou\ ;
+囂囂 > gougou\ ;
+漁期 > ryouki\ ;
+空荷 > karani\ ;
+抱擁 > houyou\ ;
+鋳貨 > chuuka\ ;
+血塊 > kekkai\ ;
+四千 > yonsen\ ;
+四十 > yonjuu\ ;
+簡便 > kanben\ ;
+国会 > kokkai\ ;
+管弦 > kangen\ ;
+海防 > kaibou\ ;
+唐詩 > toushi\ ;
+鼻輪 > hanawa\ ;
+国交 > kokkou\ ;
+国事 > kokuji\ ;
+海関 > kaikan\ ;
+投書 > tousho\ ;
+海門 > kaimon\ ;
+図体 > zuutai\ ;
+箱屋 > hakoya\ ;
+滅法 > meppou\ ;
+四分 > shibun\ ;
+抵抗 > teikou\ ;
+鑽孔 > sankou\ ;
+濁世 > dakuse\ ;
+点々 > tenten\ ;
+齲蝕 > ushoku\ ;
+手漉 > tesuki\ ;
+表具 > hyougu\ ;
+鍛練 > tanren\ ;
+蟹座 > kaniza\ ;
+蚯蚓 > mimizu\ ;
+溶液 > youeki\ ;
+漁撈 > gyorou\ ;
+節奏 > sessou\ ;
+商舗 > shouho\ ;
+鋼製 > kousei\ ;
+拐帯 > kaitai\ ;
+減耗 > genmou\ ;
+端物 > hamono\ ;
+感銘 > kanmei\ ;
+戦犯 > senpan\ ;
+抱懐 > houkai\ ;
+行司 > gyouji\ ;
+担当 > tantou\ ;
+築城 > tsuiki\ ;
+窒素 > chisso\ ;
+団体 > dantai\ ;
+拠守 > kyoshu\ ;
+鋭角 > eikaku\ ;
+秘録 > hiroku\ ;
+招宴 > shouen\ ;
+私闘 > shitou\ ;
+衰亡 > suibou\ ;
+竜王 > ryuuou\ ;
+端然 > tanzen\ ;
+団交 > dankou\ ;
+噴射 > funsha\ ;
+行動 > koudou\ ;
+問罪 > monzai\ ;
+手法 > shuhou\ ;
+黛青 > taisei\ ;
+拙守 > sesshu\ ;
+衰世 > suisei\ ;
+蛇腹 > jabara\ ;
+等方 > touhou\ ;
+命題 > meidai\ ;
+潜在 > senzai\ ;
+慣行 > kankou\ ;
+手水 > temizu\ ;
+抵当 > teitou\ ;
+愛郷 > aikyou\ ;
+笑気 > shouki\ ;
+溝渠 > koukyo\ ;
+抗拒 > koukyo\ ;
+戦災 > sensai\ ;
+銘銘 > meimei\ ;
+手毬 > temari\ ;
+折折 > oriori\ ;
+湯玉 > yudama\ ;
+挫傷 > zashou\ ;
+算定 > santei\ ;
+競演 > kyouen\ ;
+挙動 > kyodou\ ;
+流音 > ryuuon\ ;
+手段 > shudan\ ;
+成犬 > seiken\ ;
+鎮火 > chinka\ ;
+抗戦 > kousen\ ;
+黒雲 > kokuun\ ;
+投手 > toushu\ ;
+満点 > manten\ ;
+行儀 > gyougi\ ;
+鍵盤 > kenban\ ;
+流露 > ryuuro\ ;
+把捉 > hasoku\ ;
+指向 > shikou\ ;
+血判 > keppan\ ;
+指名 > shimei\ ;
+藻類 > sourui\ ;
+流離 > ryuuri\ ;
+銘酒 > meishu\ ;
+海道 > kaidou\ ;
+鼠賊 > sozoku\ ;
+挙兵 > kyohei\ ;
+温突 > ondoru\ ;
+手機 > tebata\ ;
+鑑定 > kantei\ ;
+挙党 > kyotou\ ;
+拷問 > goumon\ ;
+指南 > shinan\ ;
+融朗 > yuurou\ ;
+麺類 > menrui\ ;
+減算 > genzan\ ;
+銅銭 > dousen\ ;
+競泳 > kyouei\ ;
+行使 > koushi\ ;
+戸毎 > kogoto\ ;
+銅鉱 > doukou\ ;
+減等 > gentou\ ;
+手業 > tewaza\ ;
+漸増 > zenzou\ ;
+福音 > fukuin\ ;
+源泉 > gensen\ ;
+海軍 > kaigun\ ;
+消費 > shouhi\ ;
+満満 > manman\ ;
+浪速 > naniwa\ ;
+銀鉱 > ginkou\ ;
+行人 > koujin\ ;
+問答 > mondou\ ;
+吹鳴 > suimei\ ;
+筆才 > hissai\ ;
+行事 > gyouji\ ;
+銀鈴 > ginrei\ ;
+清純 > seijun\ ;
+筆戦 > hissen\ ;
+移設 > isetsu\ ;
+虚誕 > kyotan\ ;
+戦法 > senpou\ ;
+淋菌 > rinkin\ ;
+溶材 > youzai\ ;
+減税 > genzei\ ;
+抗弁 > kouben\ ;
+策応 > sakuou\ ;
+空空 > kuukuu\ ;
+競歩 > kyouho\ ;
+清粋 > seisui\ ;
+私邸 > shitei\ ;
+麪類 > menrui\ ;
+温石 > onjaku\ ;
+虚言 > kyogen\ ;
+黒鍵 > kokken\ ;
+手柄 > tegara\ ;
+私選 > shisen\ ;
+手枷 > tekase\ ;
+混線 > konsen\ ;
+私道 > shidou\ ;
+筆意 > hitsui\ ;
+節制 > sessei\ ;
+端正 > tansei\ ;
+手札 > tefuda\ ;
+清算 > seisan\ ;
+答弁 > touben\ ;
+扁桃 > hentou\ ;
+潜函 > senkan\ ;
+洗顔 > sengan\ ;
+拝啓 > haikei\ ;
+戦死 > senshi\ ;
+手書 > shusho\ ;
+混紡 > konbou\ ;
+哀調 > aichou\ ;
+浜辺 > hamabe\ ;
+感謝 > kansha\ ;
+黒鉛 > kokuen\ ;
+才智 > saichi\ ;
+品詞 > hinshi\ ;
+満水 > mansui\ ;
+戸棚 > todana\ ;
+洋館 > youkan\ ;
+鼎談 > teidan\ ;
+湿気 > shikke\ ;
+蠕動 > zendou\ ;
+我流 > garyuu\ ;
+商科 > shouka\ ;
+拝命 > haimei\ ;
+悪風 > akufuu\ ;
+洗面 > senmen\ ;
+拝呈 > haitei\ ;
+潰乱 > kairan\ ;
+洋風 > youfuu\ ;
+空砲 > kuuhou\ ;
+潜像 > senzou\ ;
+愛読 > aidoku\ ;
+手旗 > tebata\ ;
+愛誦 > aishou\ ;
+所望 > shomou\ ;
+所有 > shoyuu\ ;
+黒酒 > kuroki\ ;
+打撲 > daboku\ ;
+指令 > shirei\ ;
+窃盗 > settou\ ;
+銀輪 > ginrin\ ;
+禅門 > zenmon\ ;
+打撃 > dageki\ ;
+節倹 > sekken\ ;
+承引 > shouin\ ;
+範例 > hanrei\ ;
+黄銅 > koudou\ ;
+意識 > ishiki\ ;
+洞門 > doumon\ ;
+神馬 > shinme\ ;
+投射 > tousha\ ;
+箝口 > kankou\ ;
+喫水 > kissui\ ;
+吸飲 > kyuuin\ ;
+空目 > sorame\ ;
+品行 > hinkou\ ;
+湯水 > yumizu\ ;
+扁旁 > henbou\ ;
+悪霊 > akurei\ ;
+黄金 > kogane\ ;
+手摺 > tesuri\ ;
+稀薄 > kihaku\ ;
+立法 > rippou\ ;
+持久 > jikyuu\ ;
+節会 > sechie\ ;
+我欲 > gayoku\ ;
+湯殿 > yudono\ ;
+端株 > hakabu\ ;
+節介 > sekkai\ ;
+精々 > seizei\ ;
+拐取 > kaishu\ ;
+私財 > shizai\ ;
+吸音 > kyuuon\ ;
+管制 > kansei\ ;
+湧水 > yuusui\ ;
+蝋梅 > roubai\ ;
+渚畔 > shohan\ ;
+営業 > eigyou\ ;
+減産 > gensan\ ;
+鋼線 > kousen\ ;
+準星 > junsei\ ;
+合鴨 > aigamo\ ;
+手指 > shushi\ ;
+黄道 > koudou\ ;
+手拭 > tefuki\ ;
+競映 > kyouei\ ;
+吹雪 > fubuki\ ;
+溺愛 > dekiai\ ;
+湯槽 > yubune\ ;
+筋子 > sujiko\ ;
+愁訴 > shuuso\ ;
+薫香 > kunkou\ ;
+鉄鋼 > tekkou\ ;
+私論 > shiron\ ;
+漢名 > kanmei\ ;
+湖沼 > koshou\ ;
+蚕紙 > sanshi\ ;
+蚕糸 > sanshi\ ;
+悌順 > teijun\ ;
+洗錬 > senren\ ;
+満杯 > manpai\ ;
+薬餌 > yakuji\ ;
+鍼治 > shinji\ ;
+鉄鉱 > tekkou\ ;
+福運 > fukuun\ ;
+押収 > oushuu\ ;
+端整 > tansei\ ;
+薫風 > kunpuu\ ;
+究理 > kyuuri\ ;
+録画 > rokuga\ ;
+銓衡 > senkou\ ;
+河鹿 > kajika\ ;
+鋼管 > koukan\ ;
+鼻翼 > biyoku\ ;
+漆器 > shikki\ ;
+禁酒 > kinshu\ ;
+藩邸 > hantei\ ;
+戦敗 > senpai\ ;
+私見 > shiken\ ;
+浄財 > jouzai\ ;
+虎落 > mogari\ ;
+海蘿 > funori\ ;
+所懐 > shokai\ ;
+温灸 > onkyuu\ ;
+海藻 > kaisou\ ;
+扇情 > senjou\ ;
+私製 > shisei\ ;
+悪銭 > akusen\ ;
+社風 > shafuu\ ;
+名香 > meikou\ ;
+和訳 > wayaku\ ;
+銅製 > dousei\ ;
+準拠 > junkyo\ ;
+涙腺 > ruisen\ ;
+等外 > tougai\ ;
+抱卵 > houran\ ;
+払底 > futtei\ ;
+所感 > shokan\ ;
+洋銀 > yougin\ ;
+秘薬 > hiyaku\ ;
+鎮撫 > chinbu\ ;
+社頭 > shatou\ ;
+私行 > shikou\ ;
+喪服 > mofuku\ ;
+算体 > santai\ ;
+和親 > washin\ ;
+手役 > teyaku\ ;
+銀製 > ginsei\ ;
+黙許 > mokkyo\ ;
+手形 > tegata\ ;
+競技 > kyougi\ ;
+蚕種 > sanshu\ ;
+打席 > daseki\ ;
+港湾 > kouwan\ ;
+薫陶 > kuntou\ ;
+手引 > tebiki\ ;
+渾沌 > konton\ ;
+減点 > genten\ ;
+扇形 > senkei\ ;
+演劇 > engeki\ ;
+悪酒 > akushu\ ;
+所思 > shoshi\ ;
+禁輸 > kin''yu\ ;
+浮薄 > fuhaku\ ;
+同類 > dourui\ ;
+銀行 > ginkou\ ;
+才幹 > saikan\ ;
+洋酒 > youshu\ ;
+龍王 > ryuuou\ ;
+情趣 > joushu\ ;
+成文 > seibun\ ;
+懸案 > ken''an\ ;
+手帳 > techou\ ;
+成敗 > seibai\ ;
+虚聞 > kyobun\ ;
+担体 > tantai\ ;
+手帖 > techou\ ;
+鈍間 > noroma\ ;
+針魚 > hariyo\ ;
+手工 > shukou\ ;
+波間 > namima\ ;
+鼓膜 > komaku\ ;
+憫然 > binzen\ ;
+悪道 > akudou\ ;
+浅見 > senken\ ;
+野鳥 > yachou\ ;
+波長 > hachou\ ;
+鼓腹 > kofuku\ ;
+鼓腸 > kochou\ ;
+治験 > chiken\ ;
+溶岩 > yougan\ ;
+海草 > kaisou\ ;
+法難 > hounan\ ;
+味読 > midoku\ ;
+洗車 > sensha\ ;
+告辞 > kokuji\ ;
+各項 > kakkou\ ;
+沸騰 > futtou\ ;
+温海 > atsumi\ ;
+善業 > zengou\ ;
+扁平 > henpei\ ;
+立方 > rippou\ ;
+笠子 > kasago\ ;
+活計 > kakkei\ ;
+投合 > tougou\ ;
+憤然 > funzen\ ;
+号館 > goukan\ ;
+滞在 > taizai\ ;
+渡渉 > toshou\ ;
+所帯 > shotai\ ;
+抗原 > kougen\ ;
+渦流 > karyuu\ ;
+漢人 > kanjin\ ;
+漁労 > gyorou\ ;
+浪華 > naniwa\ ;
+折半 > seppan\ ;
+金魚 > kingyo\ ;
+嘆声 > tansei\ ;
+銘茶 > meicha\ ;
+称美 > shoubi\ ;
+私蔵 > shizou\ ;
+味覚 > mikaku\ ;
+龕灯 > gandou\ ;
+黴菌 > baikin\ ;
+抜剣 > bakken\ ;
+善根 > zenkon\ ;
+名門 > meimon\ ;
+空港 > kuukou\ ;
+同門 > doumon\ ;
+蛮民 > banmin\ ;
+抜刀 > battou\ ;
+台風 > taifuu\ ;
+慧眼 > keigan\ ;
+才子 > saishi\ ;
+錘状 > suijou\ ;
+溶媒 > youbai\ ;
+禅譲 > zenjou\ ;
+沿革 > enkaku\ ;
+浪花 > naniwa\ ;
+端役 > hayaku\ ;
+台顔 > daigan\ ;
+呉越 > goetsu\ ;
+台頭 > taitou\ ;
+渋滞 > juutai\ ;
+混然 > konzen\ ;
+筋合 > sujiai\ ;
+減法 > genpou\ ;
+投函 > toukan\ ;
+善書 > zensho\ ;
+空洞 > kuudou\ ;
+鈑金 > bankin\ ;
+源平 > genpei\ ;
+名鑑 > meikan\ ;
+等号 > tougou\ ;
+嗣子 > shishi\ ;
+野駒 > nogoma\ ;
+浮腫 > mukumi\ ;
+減水 > gensui\ ;
+麻裏 > asaura\ ;
+種痘 > shutou\ ;
+鈍重 > donjuu\ ;
+叩頭 > koutou\ ;
+憲法 > kenpou\ ;
+所定 > shotei\ ;
+釘頭 > teitou\ ;
+禀請 > rinsei\ ;
+涙管 > ruikan\ ;
+所存 > shozon\ ;
+泥酔 > deisui\ ;
+減殺 > gensai\ ;
+減段 > gentan\ ;
+鎮座 > chinza\ ;
+穂状 > suijou\ ;
+口頭 > koutou\ ;
+清清 > seisei\ ;
+合鍵 > aikagi\ ;
+筆勢 > hissei\ ;
+立憲 > rikken\ ;
+善政 > zensei\ ;
+洞見 > douken\ ;
+礼金 > reikin\ ;
+懐柔 > kaijuu\ ;
+反騰 > hantou\ ;
+蘚苔 > sentai\ ;
+満干 > mankan\ ;
+禽舎 > kinsha\ ;
+告諭 > kokuyu\ ;
+清浄 > seijou\ ;
+等分 > toubun\ ;
+空欄 > kuuran\ ;
+没頭 > bottou\ ;
+抗体 > koutai\ ;
+句集 > kushuu\ ;
+手塩 > teshio\ ;
+湿布 > shippu\ ;
+端山 > hayama\ ;
+惣菜 > souzai\ ;
+成形 > seikei\ ;
+竜座 > ryuuza\ ;
+鉄製 > tessei\ ;
+告訴 > kokuso\ ;
+海綿 > kaimen\ ;
+嗜好 > shikou\ ;
+受領 > juryou\ ;
+筆写 > hissha\ ;
+渇水 > kassui\ ;
+済民 > saimin\ ;
+禁衛 > kin''ei\ ;
+抗争 > kousou\ ;
+清水 > seisui\ ;
+合金 > goukin\ ;
+混淆 > konkou\ ;
+品等 > hintou\ ;
+承允 > shouin\ ;
+悪言 > akugen\ ;
+礼遇 > reiguu\ ;
+喜悦 > kietsu\ ;
+立志 > risshi\ ;
+鼓笛 > koteki\ ;
+成年 > seinen\ ;
+私考 > shikou\ ;
+憤死 > funshi\ ;
+麻薬 > mayaku\ ;
+渇死 > kasshi\ ;
+端子 > tanshi\ ;
+懇望 > konmou\ ;
+虚礼 > kyorei\ ;
+融合 > yuugou\ ;
+同邦 > douhou\ ;
+沈香 > jinkou\ ;
+懇書 > konsho\ ;
+黄葉 > kouyou\ ;
+等値 > touchi\ ;
+湾岸 > wangan\ ;
+満山 > manzan\ ;
+螢光 > keikou\ ;
+双頭 > soutou\ ;
+商機 > shouki\ ;
+才噸 > saiton\ ;
+同道 > doudou\ ;
+稲熱 > imochi\ ;
+鎮守 > chinju\ ;
+滴下 > tekika\ ;
+品種 > hinshu\ ;
+黄菊 > kigiku\ ;
+技倆 > giryou\ ;
+愚策 > gusaku\ ;
+混沌 > konton\ ;
+各部 > kakubu\ ;
+波路 > namiji\ ;
+反面 > hanmen\ ;
+善戦 > zensen\ ;
+洋装 > yousou\ ;
+洋裁 > yousai\ ;
+所在 > shozai\ ;
+悪血 > oketsu\ ;
+神話 > shinwa\ ;
+慨然 > gaizen\ ;
+競売 > keibai\ ;
+藻草 > mogusa\ ;
+移着 > ichaku\ ;
+祝詞 > norito\ ;
+洋行 > youkou\ ;
+同輩 > douhai\ ;
+急須 > kyuusu\ ;
+秘策 > hisaku\ ;
+消磨 > shouma\ ;
+黙考 > mokkou\ ;
+憎気 > nikuge\ ;
+同車 > dousha\ ;
+消磁 > shouji\ ;
+唱歌 > shouka\ ;
+愛称 > aishou\ ;
+湖心 > koshin\ ;
+淡淡 > tantan\ ;
+善感 > zenkan\ ;
+沙門 > shamon\ ;
+種火 > tanebi\ ;
+銅線 > dousen\ ;
+怨霊 > onryou\ ;
+手品 > tejina\ ;
+我家 > wagaya\ ;
+空曹 > kuusou\ ;
+戦士 > senshi\ ;
+反間 > hankan\ ;
+才名 > saimei\ ;
+社賓 > shahin\ ;
+液状 > ekijou\ ;
+恵贈 > keizou\ ;
+口銭 > kousen\ ;
+善性 > zensei\ ;
+礼賛 > raisan\ ;
+戦塵 > senjin\ ;
+金銭 > kinsen\ ;
+懸巣 > kakesu\ ;
+穂波 > honami\ ;
+懐抱 > kaihou\ ;
+参院 > san''in\ ;
+鏤刻 > rukoku\ ;
+金銀 > kingin\ ;
+銀経 > ginkei\ ;
+戦場 > senjou\ ;
+金鉱 > kinkou\ ;
+憶断 > okudan\ ;
+減数 > gensuu\ ;
+満天 > manten\ ;
+和綴 > watoji\ ;
+浄罪 > jouzai\ ;
+感知 > kanchi\ ;
+泰西 > taisei\ ;
+洋蘭 > youran\ ;
+銀糸 > ginshi\ ;
+淡水 > tansui\ ;
+溶剤 > youzai\ ;
+空文 > kuubun\ ;
+黄肌 > kihada\ ;
+成婚 > seikon\ ;
+注記 > chuuki\ ;
+吟詠 > gin''ei\ ;
+懸崖 > kengai\ ;
+鍛成 > tansei\ ;
+銀粉 > ginpun\ ;
+懦弱 > dajaku\ ;
+恭賀 > kyouga\ ;
+卵黄 > ran''ou\ ;
+手動 > shudou\ ;
+藍藻 > ransou\ ;
+憲政 > kensei\ ;
+戦地 > senchi\ ;
+礼讃 > raisan\ ;
+満塁 > manrui\ ;
+合資 > goushi\ ;
+満場 > manjou\ ;
+号車 > gousha\ ;
+泣訴 > kyuuso\ ;
+重重 > juujuu\ ;
+恩賞 > onshou\ ;
+清書 > seisho\ ;
+満堂 > mandou\ ;
+扇動 > sendou\ ;
+才分 > saibun\ ;
+減損 > genson\ ;
+水黽 > amenbo\ ;
+神蛇 > shinja\ ;
+哀痛 > aitsuu\ ;
+戒壇 > kaidan\ ;
+麦芽 > bakuga\ ;
+台車 > daisha\ ;
+品番 > hinban\ ;
+薫製 > kunsei\ ;
+手写 > shusha\ ;
+清明 > seimei\ ;
+法論 > houron\ ;
+決闘 > kettou\ ;
+法談 > houdan\ ;
+原題 > gendai\ ;
+手兵 > shuhei\ ;
+所労 > shorou\ ;
+原頭 > gentou\ ;
+采配 > saihai\ ;
+名論 > meiron\ ;
+浅紅 > senkou\ ;
+第三 > daisan\ ;
+添書 > tensho\ ;
+手先 > tesaki\ ;
+手元 > temoto\ ;
+恩讐 > onshuu\ ;
+恩讎 > onshuu\ ;
+口辺 > kouhen\ ;
+原音 > gen''on\ ;
+我執 > gashuu\ ;
+空挺 > kuutei\ ;
+活線 > kassen\ ;
+同誌 > doushi\ ;
+厚顔 > kougan\ ;
+名詞 > meishi\ ;
+鈍行 > donkou\ ;
+懇情 > konjou\ ;
+添景 > tenkei\ ;
+手傷 > tekizu\ ;
+空拳 > kuuken\ ;
+針路 > shinro\ ;
+符丁 > fuchou\ ;
+名言 > meigen\ ;
+同訓 > doukun\ ;
+金輪 > kanawa\ ;
+成型 > seikei\ ;
+沢辺 > sawabe\ ;
+法要 > houyou\ ;
+科目 > kamoku\ ;
+鼈甲 > bekkou\ ;
+蜂巣 > housou\ ;
+空手 > karate\ ;
+礼装 > reisou\ ;
+同視 > doushi\ ;
+善導 > zendou\ ;
+空所 > kuusho\ ;
+念願 > nengan\ ;
+合計 > goukei\ ;
+麻織 > asaori\ ;
+古蹟 > koseki\ ;
+呪縛 > jubaku\ ;
+空戦 > kuusen\ ;
+慨歎 > gaitan\ ;
+汗顔 > kangan\ ;
+念頭 > nentou\ ;
+科白 > serifu\ ;
+原隊 > gentai\ ;
+醵金 > kyokin\ ;
+稼業 > kagyou\ ;
+端厳 > tangen\ ;
+薮蚊 > yabuka\ ;
+周縁 > shuuen\ ;
+喚声 > kansei\ ;
+海産 > kaisan\ ;
+戦史 > senshi\ ;
+満員 > man''in\ ;
+叛軍 > hangun\ ;
+黄粉 > kinako\ ;
+税源 > zeigen\ ;
+友邦 > yuuhou\ ;
+鎖国 > sakoku\ ;
+竹刀 > shinai\ ;
+愁眉 > shuubi\ ;
+黙秘 > mokuhi\ ;
+清掃 > seisou\ ;
+麻絲 > asaito\ ;
+銃砲 > juuhou\ ;
+才人 > saijin\ ;
+測度 > sokudo\ ;
+同衾 > doukin\ ;
+鍛工 > tankou\ ;
+酸類 > sanrui\ ;
+涼気 > ryouki\ ;
+立地 > ritchi\ ;
+同行 > doukou\ ;
+空想 > kuusou\ ;
+手交 > shukou\ ;
+黒穂 > kurobo\ ;
+情緒 > joucho\ ;
+沃野 > yokuya\ ;
+麻糸 > asaito\ ;
+喧噪 > kensou\ ;
+温床 > onshou\ ;
+感状 > kanjou\ ;
+合衾 > goukin\ ;
+愛猫 > aibyou\ ;
+醸造 > jouzou\ ;
+戦功 > senkou\ ;
+私益 > shieki\ ;
+湾口 > wankou\ ;
+史論 > shiron\ ;
+銃眼 > juugan\ ;
+史談 > shidan\ ;
+章句 > shouku\ ;
+銅盤 > douban\ ;
+憶念 > okunen\ ;
+呼称 > koshou\ ;
+戦前 > senzen\ ;
+鸞輿 > ran''yo\ ;
+憧憬 > doukei\ ;
+双輪 > sourin\ ;
+参道 > sandou\ ;
+液汁 > ekijuu\ ;
+稿本 > kouhon\ ;
+海獣 > kaijuu\ ;
+憤懣 > funman\ ;
+史詩 > shishi\ ;
+反転 > hanten\ ;
+反軍 > hangun\ ;
+可読 > kadoku\ ;
+懸垂 > kensui\ ;
+税法 > zeihou\ ;
+厳重 > genjuu\ ;
+薫蒸 > kunjou\ ;
+台詞 > serifu\ ;
+錬成 > rensei\ ;
+銀盤 > ginban\ ;
+友軍 > yuugun\ ;
+和睦 > waboku\ ;
+銀盃 > ginpai\ ;
+憤慨 > fungai\ ;
+唐本 > touhon\ ;
+鉄線 > tessen\ ;
+鋼板 > kouban\ ;
+鼻毛 > hanage\ ;
+史観 > shikan\ ;
+双蹄 > soutei\ ;
+受賞 > jushou\ ;
+消火 > shouka\ ;
+戒厳 > kaigen\ ;
+鋼材 > kouzai\ ;
+洗練 > senren\ ;
+台覧 > tairan\ ;
+私用 > shiyou\ ;
+志願 > shigan\ ;
+同藩 > douhan\ ;
+口論 > kouron\ ;
+口調 > kuchou\ ;
+叢談 > soudan\ ;
+厳選 > gensen\ ;
+端倪 > tangei\ ;
+金談 > kindan\ ;
+混戦 > konsen\ ;
+戯作 > gesaku\ ;
+混成 > konsei\ ;
+喚問 > kanmon\ ;
+社葬 > shasou\ ;
+憤怒 > fun''nu\ ;
+古註 > kochuu\ ;
+流石 > sasuga\ ;
+鉄粉 > teppun\ ;
+醗酵 > hakkou\ ;
+原鉱 > genkou\ ;
+温容 > on''you\ ;
+麦粉 > mugiko\ ;
+成功 > seikou\ ;
+深手 > fukade\ ;
+黒目 > kurome\ ;
+金言 > kingen\ ;
+洗米 > senmai\ ;
+憐憫 > renbin\ ;
+原野 > gen''ya\ ;
+気魄 > kihaku\ ;
+受諾 > judaku\ ;
+気鬱 > kiutsu\ ;
+成分 > seibun\ ;
+薬舗 > yakuho\ ;
+名著 > meicho\ ;
+鉄管 > tekkan\ ;
+重言 > juugon\ ;
+氷霧 > hyoumu\ ;
+愍然 > binzen\ ;
+金襴 > kinran\ ;
+懐妊 > kainin\ ;
+水面 > minomo\ ;
+禍福 > kafuku\ ;
+氷雨 > hisame\ ;
+鉄筋 > tekkin\ ;
+懸命 > kenmei\ ;
+酔顔 > suigan\ ;
+憐愍 > renbin\ ;
+洋紙 > youshi\ ;
+重視 > juushi\ ;
+成典 > seiten\ ;
+銭湯 > sentou\ ;
+清廉 > seiren\ ;
+洋紅 > youkou\ ;
+重要 > juuyou\ ;
+金製 > kinsei\ ;
+酒類 > shurui\ ;
+合著 > goucho\ ;
+鶏鳴 > keimei\ ;
+禽獣 > kinjuu\ ;
+水雷 > suirai\ ;
+受註 > juchuu\ ;
+受診 > jushin\ ;
+口装 > kousou\ ;
+深意 > shin''i\ ;
+磁針 > jishin\ ;
+憐情 > renjou\ ;
+水難 > suinan\ ;
+君臨 > kunrin\ ;
+戦争 > sensou\ ;
+受託 > jutaku\ ;
+戦乱 > senran\ ;
+浩然 > kouzen\ ;
+窓外 > sougai\ ;
+問屋 > ton''ya\ ;
+鉄窓 > tessou\ ;
+名茶 > meicha\ ;
+慧敏 > keibin\ ;
+港外 > kougai\ ;
+蛇座 > hebiza\ ;
+穿孔 > senkou\ ;
+湯元 > yumoto\ ;
+鼻梁 > biryou\ ;
+私版 > shihan\ ;
+反論 > hanron\ ;
+空寝 > sorane\ ;
+浄界 > joukai\ ;
+薄薄 > usuusu\ ;
+水防 > suibou\ ;
+銅牌 > douhai\ ;
+喜劇 > kigeki\ ;
+憂憤 > yuufun\ ;
+感涙 > kanrui\ ;
+穴居 > kekkyo\ ;
+立冬 > rittou\ ;
+憂慮 > yuuryo\ ;
+海溝 > kaikou\ ;
+立党 > rittou\ ;
+厚遇 > kouguu\ ;
+和独 > wadoku\ ;
+怪談 > kaidan\ ;
+浩瀚 > koukan\ ;
+金蝿 > kinbae\ ;
+銀牌 > ginpai\ ;
+水門 > suimon\ ;
+蛮声 > bansei\ ;
+善哉 > zenzai\ ;
+吏臭 > rishuu\ ;
+同船 > dousen\ ;
+単項 > tankou\ ;
+単音 > tan''on\ ;
+海港 > kaikou\ ;
+鉛白 > enpaku\ ;
+参謀 > sanbou\ ;
+悪童 > akudou\ ;
+憂悶 > yuumon\ ;
+憂患 > yuukan\ ;
+浮漂 > fuhyou\ ;
+鼻木 > hanagi\ ;
+配電 > haiden\ ;
+和牛 > wagyuu\ ;
+薄葉 > usuyou\ ;
+成体 > seitai\ ;
+唐手 > karate\ ;
+淫心 > inshin\ ;
+商家 > shouka\ ;
+唐戸 > karado\ ;
+洗礼 > senrei\ ;
+合致 > gatchi\ ;
+南面 > nanmen\ ;
+参詣 > sankei\ ;
+憂思 > yuushi\ ;
+向背 > kouhai\ ;
+深度 > shindo\ ;
+慷慨 > kougai\ ;
+惨状 > sanjou\ ;
+吾等 > warera\ ;
+海浜 > kaihin\ ;
+民風 > minpuu\ ;
+虚構 > kyokou\ ;
+博雅 > bakuga\ ;
+成人 > seijin\ ;
+悪税 > akuzei\ ;
+黄瓜 > kyuuri\ ;
+吹管 > suikan\ ;
+洋種 > youshu\ ;
+海洋 > kaiyou\ ;
+移植 > ishoku\ ;
+鉄砲 > teppou\ ;
+各自 > kakuji\ ;
+麻疹 > mashin\ ;
+喧伝 > kenden\ ;
+薄茶 > usucha\ ;
+参観 > sankan\ ;
+告示 > kokuji\ ;
+感歎 > kantan\ ;
+南隅 > nanguu\ ;
+含糖 > gantou\ ;
+蛮地 > banchi\ ;
+悪神 > akujin\ ;
+名聞 > meibun\ ;
+立体 > rittai\ ;
+半音 > han''on\ ;
+南限 > nangen\ ;
+情痴 > jouchi\ ;
+突堤 > tottei\ ;
+喪中 > mochuu\ ;
+減塩 > gen''en\ ;
+渥地 > akuchi\ ;
+淡彩 > tansai\ ;
+海水 > kaisui\ ;
+浮流 > furyuu\ ;
+祭神 > saijin\ ;
+神符 > shinpu\ ;
+金蔵 > kinzou\ ;
+愛欲 > aiyoku\ ;
+祭祀 > saishi\ ;
+厳談 > gendan\ ;
+薄色 > usuiro\ ;
+祭礼 > sairei\ ;
+民青 > minsei\ ;
+半面 > hanmen\ ;
+口蓋 > kougai\ ;
+浪浪 > rourou\ ;
+渓声 > keisei\ ;
+虚根 > kyokon\ ;
+微震 > bishin\ ;
+応酬 > oushuu\ ;
+南門 > nanmon\ ;
+原資 > genshi\ ;
+洗眼 > sengan\ ;
+酩酊 > meitei\ ;
+性行 > seikou\ ;
+善処 > zensho\ ;
+同罪 > douzai\ ;
+浮沈 > fuchin\ ;
+水銀 > suigin\ ;
+黒煙 > kokuen\ ;
+御題 > gyodai\ ;
+厳訓 > genkun\ ;
+即金 > sokkin\ ;
+哀楽 > airaku\ ;
+空域 > kuuiki\ ;
+銀漢 > ginkan\ ;
+深山 > miyama\ ;
+野蒜 > nobiru\ ;
+浮氷 > fuhyou\ ;
+鶏頭 > keitou\ ;
+秋波 > shuuha\ ;
+活版 > kappan\ ;
+社線 > shasen\ ;
+気長 > kinaga\ ;
+神秘 > shinpi\ ;
+空地 > akichi\ ;
+台臨 > tairin\ ;
+惨澹 > santan\ ;
+愛楽 > aigyou\ ;
+野菊 > nogiku\ ;
+秋気 > shuuki\ ;
+法線 > housen\ ;
+民間 > minkan\ ;
+懇命 > konmei\ ;
+港口 > koukou\ ;
+悪相 > akusou\ ;
+御霊 > mitama\ ;
+決裁 > kessai\ ;
+半開 > hankai\ ;
+法網 > houmou\ ;
+悲痛 > hitsuu\ ;
+麦田 > mugita\ ;
+鵞鳥 > gachou\ ;
+水郷 > suigou\ ;
+合繊 > gousen\ ;
+私法 > shihou\ ;
+鵝鳥 > gachou\ ;
+慣性 > kansei\ ;
+原論 > genron\ ;
+決行 > kekkou\ ;
+慢性 > mansei\ ;
+御陵 > goryou\ ;
+快走 > kaisou\ ;
+従順 > juujun\ ;
+鼠族 > sozoku\ ;
+治者 > chisha\ ;
+原詩 > genshi\ ;
+水道 > suidou\ ;
+感染 > kansen\ ;
+懐剣 > kaiken\ ;
+情状 > joujou\ ;
+同紙 > doushi\ ;
+鉱滓 > koushi\ ;
+向米 > koubei\ ;
+鉄琴 > tekkin\ ;
+同系 > doukei\ ;
+窮余 > kyuuyo\ ;
+浮標 > fuhyou\ ;
+銀泥 > gindei\ ;
+可聴 > kachou\ ;
+虚数 > kyosuu\ ;
+海棠 > kaidou\ ;
+悪疫 > akueki\ ;
+減員 > gen''in\ ;
+吃緊 > kikkin\ ;
+恩給 > onkyuu\ ;
+水辺 > mizube\ ;
+御門 > mikado\ ;
+双葉 > futaba\ ;
+後項 > koukou\ ;
+稟性 > hinsei\ ;
+混声 > konsei\ ;
+口腔 > koukou\ ;
+鍛冶 > tan''ya\ ;
+悪用 > akuyou\ ;
+窃取 > sesshu\ ;
+愉楽 > yuraku\ ;
+秀歌 > shuuka\ ;
+区長 > kuchou\ ;
+減号 > gengou\ ;
+港内 > kounai\ ;
+水車 > suisha\ ;
+減反 > gentan\ ;
+酒造 > shuzou\ ;
+虎斑 > torafu\ ;
+黒海 > kokkai\ ;
+名答 > meitou\ ;
+後難 > kounan\ ;
+空名 > kuumei\ ;
+浅海 > senkai\ ;
+錦地 > kinchi\ ;
+反英 > han''ei\ ;
+同等 > doutou\ ;
+液性 > ekisei\ ;
+鼻息 > bisoku\ ;
+悪球 > akkyuu\ ;
+合算 > gassan\ ;
+反芻 > hansuu\ ;
+洋琴 > youkin\ ;
+私権 > shiken\ ;
+鉄片 > teppen\ ;
+硼酸 > housan\ ;
+鉱泉 > kousen\ ;
+海月 > kurage\ ;
+海曹 > kaisou\ ;
+配送 > haisou\ ;
+後陣 > koujin\ ;
+南郊 > nankou\ ;
+汎論 > hanron\ ;
+唐子 > karako\ ;
+流派 > ryuuha\ ;
+薄紗 > hakusa\ ;
+虹彩 > kousai\ ;
+混在 > konzai\ ;
+同窓 > dousou\ ;
+禁煙 > kin''en\ ;
+銘板 > meiban\ ;
+鉱水 > kousui\ ;
+微量 > biryou\ ;
+油絵 > aburae\ ;
+海景 > kaikei\ ;
+空包 > kuuhou\ ;
+半金 > hankin\ ;
+毛頭 > moutou\ ;
+愛敬 > aikyou\ ;
+同種 > doushu\ ;
+穿刺 > senshi\ ;
+形骸 > keigai\ ;
+惨死 > zanshi\ ;
+海星 > hitode\ ;
+慈心 > jishin\ ;
+後門 > koumon\ ;
+浄水 > jousui\ ;
+減刑 > genkei\ ;
+重罪 > juuzai\ ;
+酢豚 > subuta\ ;
+千鈞 > senkin\ ;
+黄海 > koukai\ ;
+台紙 > daishi\ ;
+配車 > haisha\ ;
+神璽 > shinji\ ;
+空前 > kuuzen\ ;
+洗煉 > senren\ ;
+洋犬 > youken\ ;
+洸洸 > koukou\ ;
+印象 > inshou\ ;
+千金 > senkin\ ;
+種子 > shushi\ ;
+洸洋 > kouyou\ ;
+秋期 > shuuki\ ;
+気迫 > kihaku\ ;
+同社 > dousha\ ;
+影響 > eikyou\ ;
+蔑視 > besshi\ ;
+応諾 > oudaku\ ;
+減免 > genmen\ ;
+民選 > minsen\ ;
+空冷 > kuurei\ ;
+惚気 > noroke\ ;
+礼砲 > reihou\ ;
+単車 > tansha\ ;
+慶大 > keidai\ ;
+和楽 > waraku\ ;
+怪腕 > kaiwan\ ;
+合祭 > gousai\ ;
+双肩 > souken\ ;
+商務 > shoumu\ ;
+悪熱 > anetsu\ ;
+合祀 > goushi\ ;
+性腺 > seisen\ ;
+憲兵 > kenpei\ ;
+減債 > gensai\ ;
+黄水 > kimizu\ ;
+銘文 > meibun\ ;
+口絵 > kuchie\ ;
+科料 > karyou\ ;
+御酌 > oshaku\ ;
+気軽 > kigaru\ ;
+性能 > seinou\ ;
+呆然 > bouzen\ ;
+注疏 > chuuso\ ;
+注疎 > chuuso\ ;
+商利 > shouri\ ;
+銅板 > douban\ ;
+酒販 > shuhan\ ;
+蛮人 > banjin\ ;
+唱和 > shouwa\ ;
+周波 > shuuha\ ;
+海損 > kaison\ ;
+怪聞 > kaibun\ ;
+私有 > shiyuu\ ;
+慮外 > ryogai\ ;
+酒豪 > shugou\ ;
+私書 > shisho\ ;
+金糸 > kinshi\ ;
+減俸 > genpou\ ;
+半輪 > hanrin\ ;
+法眼 > hougen\ ;
+混同 > kondou\ ;
+銀杯 > ginpai\ ;
+混合 > kongou\ ;
+石鹸 > sekken\ ;
+金粉 > kinpun\ ;
+鉛毒 > endoku\ ;
+当駅 > toueki\ ;
+御遊 > gyoyuu\ ;
+渦中 > kachuu\ ;
+法相 > hossou\ ;
+深味 > fukami\ ;
+神父 > shinpu\ ;
+原著 > gencho\ ;
+悠然 > yuuzen\ ;
+感懐 > kankai\ ;
+麦湯 > mugiyu\ ;
+想望 > soubou\ ;
+参考 > sankou\ ;
+同県 > douken\ ;
+名盤 > meiban\ ;
+司祭 > shisai\ ;
+受給 > jukyuu\ ;
+同相 > dousou\ ;
+同盟 > doumei\ ;
+洪水 > kouzui\ ;
+哀愁 > aishuu\ ;
+感慨 > kangai\ ;
+千載 > senzai\ ;
+蛍光 > keikou\ ;
+哀惜 > aiseki\ ;
+吉相 > kissou\ ;
+空似 > sorani\ ;
+和服 > wafuku\ ;
+硬軟 > kounan\ ;
+金管 > kinkan\ ;
+薬理 > yakuri\ ;
+愛憎 > ainiku\ ;
+口答 > koutou\ ;
+後金 > atokin\ ;
+愛慾 > aiyoku\ ;
+感想 > kansou\ ;
+社用 > shayou\ ;
+銀映 > gin''ei\ ;
+鹵獲 > rokaku\ ;
+砲門 > houmon\ ;
+海戦 > kaisen\ ;
+感情 > kanjou\ ;
+思考 > shikou\ ;
+品性 > hinsei\ ;
+復路 > fukuro\ ;
+命根 > meikon\ ;
+情死 > joushi\ ;
+錠剤 > jouzai\ ;
+深化 > shinka\ ;
+即行 > sokkou\ ;
+錠前 > joumae\ ;
+気象 > kishou\ ;
+愛惜 > aiseki\ ;
+号砲 > gouhou\ ;
+法界 > hokkai\ ;
+啓上 > keijou\ ;
+洗浄 > senjou\ ;
+感性 > kansei\ ;
+神火 > shinka\ ;
+双紙 > soushi\ ;
+名産 > meisan\ ;
+愛息 > aisoku\ ;
+藤氏 > toushi\ ;
+協議 > kyougi\ ;
+黒木 > kuroki\ ;
+愚息 > gusoku\ ;
+古称 > koshou\ ;
+鴕鳥 > dachou\ ;
+泥状 > deijou\ ;
+当面 > toumen\ ;
+必見 > hikken\ ;
+鼓弓 > kokyuu\ ;
+哀弔 > aichou\ ;
+悲況 > hikyou\ ;
+泰然 > taizen\ ;
+反米 > hanbei\ ;
+活栓 > kassen\ ;
+浄書 > jousho\ ;
+破鏡 > hakyou\ ;
+稀少 > kishou\ ;
+商事 > shouji\ ;
+禁止 > kinshi\ ;
+後送 > kousou\ ;
+後退 > koutai\ ;
+受章 > jushou\ ;
+重税 > juuzei\ ;
+酢蛸 > sudako\ ;
+歯齦 > shigin\ ;
+各界 > kakkai\ ;
+叢祠 > hokora\ ;
+慨嘆 > gaitan\ ;
+従軍 > juugun\ ;
+毛鈎 > kebari\ ;
+部長 > buchou\ ;
+史眼 > shigan\ ;
+悶死 > monshi\ ;
+段階 > dankai\ ;
+鼾声 > kansei\ ;
+惨敗 > zanpai\ ;
+悪法 > akuhou\ ;
+待遇 > taiguu\ ;
+洋洋 > youyou\ ;
+麺棒 > menbou\ ;
+右目 > migime\ ;
+必衰 > hissui\ ;
+歯黒 > haguro\ ;
+重祚 > chouso\ ;
+後輪 > kourin\ ;
+後輩 > kouhai\ ;
+黎明 > reimei\ ;
+愈愈 > iyoiyo\ ;
+礼状 > reijou\ ;
+民論 > minron\ ;
+参籠 > sanrou\ ;
+悪水 > akusui\ ;
+滾々 > konkon\ ;
+匪躬 > hikyuu\ ;
+後軍 > kougun\ ;
+後車 > kousha\ ;
+愉悦 > yuetsu\ ;
+針目 > harime\ ;
+北部 > hokubu\ ;
+弾頭 > dantou\ ;
+悪気 > warugi\ ;
+矢鱈 > yatara\ ;
+礎石 > soseki\ ;
+浴後 > yokugo\ ;
+卓見 > takken\ ;
+命数 > meisuu\ ;
+北郊 > hokkou\ ;
+残骸 > zangai\ ;
+折々 > oriori\ ;
+泥炭 > deitan\ ;
+金砂 > kinsha\ ;
+名状 > meijou\ ;
+勧降 > kankou\ ;
+葛餡 > kuzuan\ ;
+浮心 > fushin\ ;
+重砲 > juuhou\ ;
+私憤 > shifun\ ;
+汗腺 > kansen\ ;
+海底 > kaitei\ ;
+怪童 > kaidou\ ;
+沼田 > numada\ ;
+祭殿 > saiden\ ;
+単行 > tankou\ ;
+砲金 > houkin\ ;
+古着 > furugi\ ;
+半解 > hankai\ ;
+南行 > nankou\ ;
+銀扇 > ginsen\ ;
+重石 > omoshi\ ;
+治産 > chisan\ ;
+募集 > boshuu\ ;
+添乗 > tenjou\ ;
+郷里 > kyouri\ ;
+周期 > shuuki\ ;
+原罪 > genzai\ ;
+錦上 > kinjou\ ;
+味方 > mikata\ ;
+種名 > shumei\ ;
+強音 > kyouon\ ;
+混交 > konkou\ ;
+蚕卵 > sanran\ ;
+私感 > shikan\ ;
+十誡 > jikkai\ ;
+残香 > zankou\ ;
+麪棒 > menbou\ ;
+汚職 > oshoku\ ;
+藩校 > hankou\ ;
+混乱 > konran\ ;
+穂先 > hosaki\ ;
+金目 > kaneme\ ;
+私情 > shijou\ ;
+海嶺 > kairei\ ;
+動静 > dousei\ ;
+恒産 > kousan\ ;
+量目 > ryoume\ ;
+徳行 > tokkou\ ;
+研鑽 > kensan\ ;
+弱音 > yowane\ ;
+匪賊 > hizoku\ ;
+吸気 > kyuuki\ ;
+勢門 > seimon\ ;
+快腕 > kaiwan\ ;
+私恨 > shikon\ ;
+残飯 > zanpan\ ;
+水葬 > suisou\ ;
+半裁 > hansai\ ;
+禅林 > zenrin\ ;
+唯一 > yuitsu\ ;
+重盗 > juutou\ ;
+同然 > douzen\ ;
+死骸 > shigai\ ;
+御託 > gotaku\ ;
+微衷 > bichuu\ ;
+御言 > mikoto\ ;
+氷菓 > hyouka\ ;
+神気 > shinki\ ;
+効験 > kouken\ ;
+南蛮 > nanban\ ;
+半衿 > haneri\ ;
+虚妄 > kyomou\ ;
+決算 > kessan\ ;
+感官 > kankan\ ;
+化身 > keshin\ ;
+恬然 > tenzen\ ;
+情景 > joukei\ ;
+薬湯 > yakuyu\ ;
+汽笛 > kiteki\ ;
+法灯 > houtou\ ;
+涼味 > ryoumi\ ;
+同点 > douten\ ;
+水菜 > mizuna\ ;
+海岸 > kaigan\ ;
+勾配 > koubai\ ;
+悪業 > akugou\ ;
+参禅 > sanzen\ ;
+原綿 > genmen\ ;
+惨憺 > santan\ ;
+藤本 > touhon\ ;
+鉄板 > teppan\ ;
+郵送 > yuusou\ ;
+比較 > hikaku\ ;
+浅才 > sensai\ ;
+短音 > tan''on\ ;
+禁書 > kinsho\ ;
+葉風 > hakaze\ ;
+叢生 > sousei\ ;
+御製 > gyosei\ ;
+蓴菜 > junsai\ ;
+含水 > gansui\ ;
+想念 > sounen\ ;
+影身 > kagemi\ ;
+原紙 > genshi\ ;
+愛嬌 > aikyou\ ;
+銷夏 > shouka\ ;
+毛足 > keashi\ ;
+原糸 > genshi\ ;
+歯髄 > shizui\ ;
+海容 > kaiyou\ ;
+銃弾 > juudan\ ;
+虚報 > kyohou\ ;
+原糖 > gentou\ ;
+落馬 > rakuba\ ;
+金環 > kinkan\ ;
+砕鉱 > saikou\ ;
+弓馬 > kyuuba\ ;
+双眼 > sougan\ ;
+双眸 > soubou\ ;
+鹹水 > kansui\ ;
+砲車 > housha\ ;
+憂世 > yuusei\ ;
+反省 > hansei\ ;
+注油 > chuuyu\ ;
+浅慮 > senryo\ ;
+郷軍 > gougun\ ;
+情操 > jousou\ ;
+神樹 > shinju\ ;
+消夏 > shouka\ ;
+沈砂 > chinsa\ ;
+勧銀 > kangin\ ;
+医術 > ijutsu\ ;
+邦題 > houdai\ ;
+蕃社 > bansha\ ;
+稿人 > koujin\ ;
+禁断 > kindan\ ;
+萌黎 > hourei\ ;
+惰弱 > dajaku\ ;
+律詩 > risshi\ ;
+感奮 > kanpun\ ;
+厳禁 > genkin\ ;
+涙嚢 > ruinou\ ;
+穂並 > honami\ ;
+卵胞 > ranhou\ ;
+同源 > dougen\ ;
+愛妾 > aishou\ ;
+名湯 > meitou\ ;
+野球 > yakyuu\ ;
+怪盗 > kaitou\ ;
+呉服 > gofuku\ ;
+神楽 > kagura\ ;
+忠義 > chuugi\ ;
+葷酒 > kunshu\ ;
+水腫 > suishu\ ;
+科学 > kagaku\ ;
+藍染 > aizome\ ;
+唐人 > toujin\ ;
+油然 > yuuzen\ ;
+悪書 > akusho\ ;
+当選 > tousen\ ;
+洋本 > youhon\ ;
+後見 > kouken\ ;
+君民 > kunmin\ ;
+洋書 > yousho\ ;
+葉陰 > hakage\ ;
+銀嶺 > ginrei\ ;
+礼法 > reihou\ ;
+沸点 > futten\ ;
+秋季 > shuuki\ ;
+態勢 > taisei\ ;
+和布 > wakame\ ;
+恬淡 > tentan\ ;
+黙座 > mokuza\ ;
+液剤 > ekizai\ ;
+死霊 > shirei\ ;
+殿軍 > dengun\ ;
+黒影 > kokuei\ ;
+弊風 > heifuu\ ;
+双生 > sousei\ ;
+必至 > hisshi\ ;
+往診 > oushin\ ;
+征討 > seitou\ ;
+蔗糖 > shotou\ ;
+金牌 > kinpai\ ;
+配船 > haisen\ ;
+銅山 > douzan\ ;
+慣例 > kanrei\ ;
+法治 > houchi\ ;
+海外 > kaigai\ ;
+原稿 > genkou\ ;
+原種 > genshu\ ;
+水耕 > suikou\ ;
+郵貯 > yuucho\ ;
+野牛 > yagyuu\ ;
+活性 > kassei\ ;
+社殿 > shaden\ ;
+愛執 > aishuu\ ;
+勧進 > kanjin\ ;
+重版 > juuhan\ ;
+悪文 > akubun\ ;
+砂金 > shakin\ ;
+正餐 > seisan\ ;
+配膳 > haizen\ ;
+求縁 > kyuuen\ ;
+銀山 > ginzan\ ;
+税制 > zeisei\ ;
+忍耐 > nintai\ ;
+悪政 > akusei\ ;
+歯面 > shimen\ ;
+合法 > gouhou\ ;
+死闘 > shitou\ ;
+祭文 > saimon\ ;
+各派 > kakuha\ ;
+遺髪 > ihatsu\ ;
+南航 > nankou\ ;
+慨世 > gaisei\ ;
+秘境 > hikyou\ ;
+酒肴 > shukou\ ;
+汀線 > teisen\ ;
+去痰 > kyotan\ ;
+海堡 > kaihou\ ;
+同氏 > doushi\ ;
+祭政 > saisei\ ;
+遺骨 > ikotsu\ ;
+黒巾 > kurogo\ ;
+恩沢 > ontaku\ ;
+海域 > kaiiki\ ;
+径行 > keikou\ ;
+愛国 > aikoku\ ;
+鉄拳 > tekken\ ;
+名残 > nagori\ ;
+沼湖 > shouko\ ;
+葬送 > sousou\ ;
+破調 > hachou\ ;
+想定 > soutei\ ;
+情感 > joukan\ ;
+虚名 > kyomei\ ;
+厚礼 > kourei\ ;
+禁所 > kinsho\ ;
+弾道 > dandou\ ;
+民芸 > mingei\ ;
+感嘆 > kantan\ ;
+哺乳 > honyuu\ ;
+重点 > juuten\ ;
+吃水 > kissui\ ;
+称呼 > shouko\ ;
+台湾 > taiwan\ ;
+泉水 > sensui\ ;
+鉄扇 > tessen\ ;
+怪獣 > kaijuu\ ;
+周忌 > shuuki\ ;
+永続 > eizoku\ ;
+正面 > matomo\ ;
+重灰 > juukai\ ;
+水練 > suiren\ ;
+短銃 > tanjuu\ ;
+哀哭 > aikoku\ ;
+水線 > suisen\ ;
+鉱山 > kouzan\ ;
+危絵 > abunae\ ;
+鉱層 > kousou\ ;
+恥毛 > chimou\ ;
+北行 > hokkou\ ;
+沛然 > haizen\ ;
+殷賑 > inshin\ ;
+毒見 > dokumi\ ;
+助長 > jochou\ ;
+液体 > ekitai\ ;
+司法 > shihou\ ;
+鈍根 > donkon\ ;
+情念 > jounen\ ;
+悽惨 > seisan\ ;
+惨害 > sangai\ ;
+虚勢 > kyosei\ ;
+碇置 > teichi\ ;
+配置 > haichi\ ;
+気胸 > kikyou\ ;
+咳嗽 > gaisou\ ;
+残金 > zankin\ ;
+復航 > fukkou\ ;
+同権 > douken\ ;
+毬藻 > marimo\ ;
+薫染 > kunsen\ ;
+私大 > shidai\ ;
+毛蟹 > kegani\ ;
+復興 > fukkou\ ;
+愛唱 > aishou\ ;
+性状 > seijou\ ;
+品名 > hinmei\ ;
+鉱害 > kougai\ ;
+同様 > douyou\ ;
+千般 > senpan\ ;
+水系 > suikei\ ;
+悠揚 > yuuyou\ ;
+悪投 > akutou\ ;
+原盤 > genban\ ;
+鳴門 > naruto\ ;
+動輪 > dourin\ ;
+河流 > karyuu\ ;
+厚着 > atsugi\ ;
+悪才 > akusai\ ;
+悪手 > akushu\ ;
+感吟 > kangin\ ;
+沼気 > shouki\ ;
+治水 > chisui\ ;
+悪所 > akusho\ ;
+銃声 > juusei\ ;
+卵管 > rankan\ ;
+歎願 > tangan\ ;
+黒字 > kuroji\ ;
+黒子 > hokuro\ ;
+悶悶 > monmon\ ;
+悪戦 > akusen\ ;
+動転 > douten\ ;
+禀性 > rinsei\ ;
+勇邁 > yuumai\ ;
+危篤 > kitoku\ ;
+私報 > shihou\ ;
+悲愁 > hishuu\ ;
+消化 > shouka\ ;
+正閏 > seijun\ ;
+正門 > seimon\ ;
+形見 > katami\ ;
+同棲 > dousei\ ;
+鶏舎 > keisha\ ;
+包装 > housou\ ;
+徳義 > tokugi\ ;
+葉酸 > yousan\ ;
+労銀 > rougin\ ;
+印箱 > inbako\ ;
+後葉 > kouyou\ ;
+郵袋 > yuutai\ ;
+配線 > haisen\ ;
+勇退 > yuutai\ ;
+吹挙 > suikyo\ ;
+殊遇 > shuguu\ ;
+蒼茫 > soubou\ ;
+水管 > suikan\ ;
+神授 > shinju\ ;
+悪態 > akutai\ ;
+古流 > koryuu\ ;
+十能 > juunou\ ;
+銀塊 > ginkai\ ;
+藻屑 > mokuzu\ ;
+虚像 > kyozou\ ;
+酒精 > shusei\ ;
+同根 > doukon\ ;
+沙漠 > sabaku\ ;
+水筒 > suitou\ ;
+黙契 > mokkei\ ;
+感動 > kandou\ ;
+同校 > doukou\ ;
+重液 > juueki\ ;
+古注 > kochuu\ ;
+単線 > tansen\ ;
+当該 > tougai\ ;
+印章 > inshou\ ;
+毒蛾 > dokuga\ ;
+原産 > gensan\ ;
+勝負 > shoubu\ ;
+原生 > gensei\ ;
+延長 > enchou\ ;
+金泥 > kondei\ ;
+知遇 > chiguu\ ;
+歌集 > kashuu\ ;
+池畔 > chihan\ ;
+卦算 > keisan\ ;
+黒奴 > kokudo\ ;
+急火 > kyuuka\ ;
+神技 > shingi\ ;
+銀坑 > ginkou\ ;
+法曹 > housou\ ;
+同村 > douson\ ;
+厚生 > kousei\ ;
+名札 > nafuda\ ;
+悪性 > akusei\ ;
+単純 > tanjun\ ;
+名望 > meibou\ ;
+勧説 > kanzei\ ;
+向暑 > kousho\ ;
+蘊奥 > un''nou\ ;
+快眠 > kaimin\ ;
+悪念 > akunen\ ;
+半纏 > hanten\ ;
+御者 > gyosha\ ;
+水稲 > suitou\ ;
+同朋 > doubou\ ;
+合板 > gouban\ ;
+同書 > dousho\ ;
+金気 > kanake\ ;
+秘匿 > hitoku\ ;
+感冒 > kanbou\ ;
+福寿 > fukuju\ ;
+怪漢 > kaikan\ ;
+鉄工 > tekkou\ ;
+合本 > gappon\ ;
+遭難 > sounan\ ;
+重水 > juusui\ ;
+水禽 > suikin\ ;
+感光 > kankou\ ;
+虚伝 > kyoden\ ;
+合服 > aifuku\ ;
+悠悠 > yuuyuu\ ;
+南米 > nanbei\ ;
+鶏群 > keigun\ ;
+配管 > haikan\ ;
+哀傷 > aishou\ ;
+受注 > juchuu\ ;
+労連 > rouren\ ;
+勦討 > soutou\ ;
+厳然 > genzen\ ;
+鉗子 > kanshi\ ;
+単簡 > tankan\ ;
+蔵版 > zouhan\ ;
+水神 > suijin\ ;
+悪弊 > akuhei\ ;
+創面 > soumen\ ;
+労農 > rounou\ ;
+復縁 > fukuen\ ;
+神意 > shin''i\ ;
+黽勉 > binben\ ;
+意力 > iryoku\ ;
+当行 > toukou\ ;
+禅尼 > zen''ni\ ;
+祝意 > shukui\ ;
+法文 > houbun\ ;
+加重 > kachou\ ;
+同断 > doudan\ ;
+取水 > shusui\ ;
+浄域 > jouiki\ ;
+名文 > meibun\ ;
+半紙 > hanshi\ ;
+弔辞 > chouji\ ;
+鉱坑 > koukou\ ;
+名数 > meisuu\ ;
+酒税 > shuzei\ ;
+同文 > doubun\ ;
+勝訴 > shouso\ ;
+原状 > genjou\ ;
+海内 > kaidai\ ;
+同数 > dousuu\ ;
+海兵 > kaihei\ ;
+従者 > juusha\ ;
+包蔵 > houzou\ ;
+徽章 > kishou\ ;
+毛茸 > moujou\ ;
+禅定 > zenjou\ ;
+合方 > aikata\ ;
+黒地 > kuroji\ ;
+沈渣 > chinsa\ ;
+後肢 > koushi\ ;
+黒土 > kokudo\ ;
+原版 > genpan\ ;
+薄板 > usuita\ ;
+短資 > tanshi\ ;
+金権 > kinken\ ;
+南端 > nantan\ ;
+強請 > gousei\ ;
+強談 > goudan\ ;
+銘刀 > meitou\ ;
+悔恨 > kaikon\ ;
+遠隔 > enkaku\ ;
+決潰 > kekkai\ ;
+薦挙 > senkyo\ ;
+黄塵 > koujin\ ;
+動詞 > doushi\ ;
+秀句 > shuuku\ ;
+釣果 > chouka\ ;
+古楽 > kogaku\ ;
+司書 > shisho\ ;
+後者 > kousha\ ;
+北航 > hokkou\ ;
+鈍才 > donsai\ ;
+吸引 > kyuuin\ ;
+廃頽 > haitai\ ;
+藻塩 > moshio\ ;
+銃口 > juukou\ ;
+強記 > kyouki\ ;
+急派 > kyuuha\ ;
+創開 > soukai\ ;
+反毛 > hanmou\ ;
+薄暮 > hakubo\ ;
+矩象 > kushou\ ;
+水着 > mizugi\ ;
+満々 > manman\ ;
+碑石 > hiseki\ ;
+愚作 > gusaku\ ;
+加速 > kasoku\ ;
+後置 > kouchi\ ;
+汚物 > obutsu\ ;
+史書 > shisho\ ;
+洪大 > koudai\ ;
+台本 > daihon\ ;
+鶏糞 > keifun\ ;
+水盤 > suiban\ ;
+包莖 > houkei\ ;
+咆哮 > houkou\ ;
+礼拝 > reihai\ ;
+微笑 > bishou\ ;
+剥離 > hakuri\ ;
+選鉱 > senkou\ ;
+原点 > genten\ ;
+蒐荷 > shuuka\ ;
+千篇 > senpen\ ;
+古格 > kokaku\ ;
+決済 > kessai\ ;
+卑称 > hishou\ ;
+鈍感 > donkan\ ;
+包茎 > houkei\ ;
+毛脛 > kezune\ ;
+毛脚 > keashi\ ;
+鳳輦 > houren\ ;
+労資 > roushi\ ;
+怪死 > kaishi\ ;
+砲艦 > houkan\ ;
+私刑 > shikei\ ;
+酔眼 > suigan\ ;
+幼齢 > yourei\ ;
+廻送 > kaisou\ ;
+建造 > kenzou\ ;
+刺魚 > togeuo\ ;
+部落 > buraku\ ;
+号数 > gousuu\ ;
+銃創 > juusou\ ;
+祖廟 > sobyou\ ;
+卵生 > ransei\ ;
+銃剣 > juuken\ ;
+参殿 > sanden\ ;
+引責 > inseki\ ;
+藩士 > hanshi\ ;
+水痘 > suitou\ ;
+金柑 > kinkan\ ;
+短詩 > tanshi\ ;
+恒星 > kousei\ ;
+情報 > jouhou\ ;
+麗容 > reiyou\ ;
+鄭箋 > teisen\ ;
+水疱 > suihou\ ;
+叢林 > sourin\ ;
+右文 > yuubun\ ;
+銃刑 > juukei\ ;
+郵船 > yuusen\ ;
+名手 > meishu\ ;
+後編 > kouhen\ ;
+私兵 > shihei\ ;
+名所 > meisho\ ;
+邂逅 > kaikou\ ;
+古木 > koboku\ ;
+金杯 > kinpai\ ;
+知謀 > chibou\ ;
+私党 > shitou\ ;
+同所 > dousho\ ;
+同房 > doubou\ ;
+君恩 > kun''on\ ;
+合抱 > gouhou\ ;
+想到 > soutou\ ;
+原潜 > gensen\ ;
+醤油 > shouyu\ ;
+微禄 > biroku\ ;
+碁石 > goishi\ ;
+後継 > koukei\ ;
+泰平 > taihei\ ;
+台数 > daisuu\ ;
+水田 > suiden\ ;
+海上 > kaijou\ ;
+水産 > suisan\ ;
+年齢 > nenrei\ ;
+水生 > suisei\ ;
+遼遠 > ryouen\ ;
+底魚 > sokouo\ ;
+恒数 > kousuu\ ;
+秘中 > hichuu\ ;
+前項 > zenkou\ ;
+叢書 > sousho\ ;
+殺菌 > sakkin\ ;
+廻転 > kaiten\ ;
+欠陥 > kekkan\ ;
+銘仙 > meisen\ ;
+短見 > tanken\ ;
+呼吸 > kokyuu\ ;
+弱行 > jakkou\ ;
+命名 > meimei\ ;
+禅堂 > zendou\ ;
+合戦 > kassen\ ;
+呼名 > yobina\ ;
+歓送 > kansou\ ;
+合成 > gousei\ ;
+決水 > kessui\ ;
+同憂 > douyuu\ ;
+銅像 > douzou\ ;
+同慶 > doukei\ ;
+単眼 > tangan\ ;
+歓迎 > kangei\ ;
+重曹 > juusou\ ;
+前面 > zenmen\ ;
+古昔 > koseki\ ;
+蒸籠 > seirou\ ;
+比翼 > hiyoku\ ;
+合憲 > gouken\ ;
+単相 > tansou\ ;
+鉄塔 > tettou\ ;
+同感 > doukan\ ;
+浪人 > rounin\ ;
+剔除 > tekijo\ ;
+合憎 > ainiku\ ;
+没書 > bossho\ ;
+次長 > jichou\ ;
+鷹派 > takaha\ ;
+悪妻 > akusai\ ;
+麗姿 > reishi\ ;
+前電 > zenden\ ;
+知見 > chiken\ ;
+決死 > kesshi\ ;
+想像 > souzou\ ;
+取材 > shuzai\ ;
+同情 > doujou\ ;
+制馭 > seigyo\ ;
+向性 > kousei\ ;
+蘭人 > ranjin\ ;
+殿舎 > densha\ ;
+菌類 > kinrui\ ;
+神宮 > jinguu\ ;
+悲境 > hikyou\ ;
+厳正 > gensei\ ;
+落語 > rakugo\ ;
+黄吻 > koufun\ ;
+重星 > juusei\ ;
+口数 > kousuu\ ;
+卵状 > ranjou\ ;
+正賓 > seihin\ ;
+引証 > inshou\ ;
+悪天 > akuten\ ;
+後篇 > kouhen\ ;
+黄口 > koukou\ ;
+同性 > dousei\ ;
+悪声 > akusei\ ;
+泰山 > taizan\ ;
+遭遇 > souguu\ ;
+重文 > juubun\ ;
+削除 > sakujo\ ;
+半睡 > hansui\ ;
+同志 > doushi\ ;
+吾妹 > wagimo\ ;
+半眼 > hangan\ ;
+合性 > aishou\ ;
+私人 > shijin\ ;
+右折 > usetsu\ ;
+祭壇 > saidan\ ;
+原油 > gen''yu\ ;
+歳計 > saikei\ ;
+性根 > shoune\ ;
+葛藤 > kattou\ ;
+半盲 > hanmou\ ;
+後端 > koutan\ ;
+浄写 > jousha\ ;
+同形 > doukei\ ;
+前門 > zenmon\ ;
+悪場 > waruba\ ;
+悪報 > akuhou\ ;
+法廷 > houtei\ ;
+右手 > migite\ ;
+双書 > sousho\ ;
+心理 > shinri\ ;
+友朋 > yuuhou\ ;
+快漢 > kaikan\ ;
+升目 > masume\ ;
+礼帽 > reibou\ ;
+出鼻 > debana\ ;
+叉木 > matagi\ ;
+歩調 > hochou\ ;
+店頭 > tentou\ ;
+祭場 > saijou\ ;
+幽魂 > yuukon\ ;
+神威 > shin''i\ ;
+又木 > matagi\ ;
+幼魚 > yougyo\ ;
+刺青 > shisei\ ;
+原民 > genmin\ ;
+創造 > souzou\ ;
+恰度 > choudo\ ;
+吹奏 > suisou\ ;
+名店 > meiten\ ;
+券面 > kenmen\ ;
+原毛 > genmou\ ;
+銃丸 > juugan\ ;
+干鱈 > hidara\ ;
+同店 > douten\ ;
+可成 > kanari\ ;
+到頭 > toutou\ ;
+合弁 > gouben\ ;
+法師 > houshi\ ;
+弁論 > benron\ ;
+反映 > han''ei\ ;
+同年 > dounen\ ;
+法帖 > houjou\ ;
+流儀 > ryuugi\ ;
+正論 > seiron\ ;
+情史 > joushi\ ;
+活写 > kassha\ ;
+水煮 > mizuni\ ;
+励行 > reikou\ ;
+惇厚 > tonkou\ ;
+座長 > zachou\ ;
+恐懼 > kyouku\ ;
+別館 > bekkan\ ;
+毒素 > dokuso\ ;
+名工 > meikou\ ;
+同市 > doushi\ ;
+氾濫 > hanran\ ;
+底面 > teimen\ ;
+双方 > souhou\ ;
+半畳 > hanjou\ ;
+破約 > hayaku\ ;
+彼等 > karera\ ;
+過量 > karyou\ ;
+厘毛 > rinmou\ ;
+反数 > hansuu\ ;
+民生 > minsei\ ;
+毛管 > moukan\ ;
+半生 > hansei\ ;
+正訓 > seikun\ ;
+反攻 > hankou\ ;
+去来 > kyorai\ ;
+弁解 > benkai\ ;
+運針 > unshin\ ;
+過酷 > kakoku\ ;
+古手 > furute\ ;
+正解 > seikai\ ;
+制限 > seigen\ ;
+毛筋 > kesuji\ ;
+社屋 > shaoku\ ;
+気球 > kikyuu\ ;
+可惜 > attara\ ;
+連隊 > rentai\ ;
+遊金 > yuukin\ ;
+口才 > kousai\ ;
+醇正 > junsei\ ;
+情勢 > jousei\ ;
+幽香 > yuukou\ ;
+金扇 > kinsen\ ;
+正視 > seishi\ ;
+君子 > kunshi\ ;
+止観 > shikan\ ;
+利鞘 > rizaya\ ;
+別項 > bekkou\ ;
+正西 > seisei\ ;
+福利 > fukuri\ ;
+遅鈍 > chidon\ ;
+取捨 > shusha\ ;
+剣道 > kendou\ ;
+怨敵 > onteki\ ;
+循環 > junkan\ ;
+建言 > kengen\ ;
+恋愛 > ren''ai\ ;
+欠配 > keppai\ ;
+鵬程 > houtei\ ;
+蕃書 > bansho\ ;
+恒性 > kousei\ ;
+廻覧 > kairan\ ;
+命令 > meirei\ ;
+名山 > meizan\ ;
+真鴨 > magamo\ ;
+連関 > renkan\ ;
+向寒 > koukan\ ;
+汀渚 > teisho\ ;
+恋情 > renjou\ ;
+歓談 > kandan\ ;
+恐怖 > kyoufu\ ;
+正装 > seisou\ ;
+参政 > sansei\ ;
+同居 > doukyo\ ;
+初頭 > shotou\ ;
+遅配 > chihai\ ;
+廃退 > haitai\ ;
+汁液 > juueki\ ;
+通院 > tsuuin\ ;
+恵存 > keizon\ ;
+薄幸 > hakkou\ ;
+同封 > doufuu\ ;
+台形 > daikei\ ;
+法定 > houtei\ ;
+法官 > houkan\ ;
+恋恋 > renren\ ;
+石英 > sekiei\ ;
+彩管 > saikan\ ;
+遠足 > ensoku\ ;
+区画 > kukaku\ ;
+厳暑 > gensho\ ;
+次週 > jishuu\ ;
+前金 > maekin\ ;
+重態 > juutai\ ;
+死蔵 > shizou\ ;
+治平 > chihei\ ;
+洋品 > youhin\ ;
+同定 > doutei\ ;
+名字 > myouji\ ;
+剥身 > mukimi\ ;
+水準 > suijun\ ;
+水源 > suigen\ ;
+禁制 > kinsei\ ;
+送風 > soufuu\ ;
+遺言 > yuigon\ ;
+息子 > musuko\ ;
+恩寵 > onchou\ ;
+遅遅 > chichi\ ;
+悪名 > akumei\ ;
+蔵本 > zouhon\ ;
+厳旨 > genshi\ ;
+原案 > gen''an\ ;
+重患 > juukan\ ;
+反抗 > hankou\ ;
+祖国 > sokoku\ ;
+廃車 > haisha\ ;
+蔵書 > zousho\ ;
+悪友 > akuyuu\ ;
+酔漢 > suikan\ ;
+重恩 > chouon\ ;
+年頭 > nentou\ ;
+河床 > kashou\ ;
+洗剤 > senzai\ ;
+幽霊 > yuurei\ ;
+祭司 > saishi\ ;
+勘考 > kankou\ ;
+恒常 > koujou\ ;
+悲劇 > higeki\ ;
+座金 > zagane\ ;
+禅僧 > zensou\ ;
+口径 > koukei\ ;
+双手 > morote\ ;
+石膏 > sekkou\ ;
+短艇 > tantei\ ;
+水涯 > suigai\ ;
+反戦 > hansen\ ;
+刎頸 > funkei\ ;
+度量 > doryou\ ;
+蒼生 > sousei\ ;
+分館 > bunkan\ ;
+分餐 > bunsan\ ;
+遊軍 > yuugun\ ;
+原板 > genpan\ ;
+郵税 > yuuzei\ ;
+野心 > yashin\ ;
+勃興 > bokkou\ ;
+化石 > kaseki\ ;
+社外 > shagai\ ;
+怯懦 > kyouda\ ;
+口弁 > kouben\ ;
+古廟 > kobyou\ ;
+当籤 > tousen\ ;
+広間 > hiroma\ ;
+原本 > genpon\ ;
+水洗 > suisen\ ;
+氷河 > hyouga\ ;
+醸成 > jousei\ ;
+参拝 > sanpai\ ;
+平面 > heimen\ ;
+平静 > heisei\ ;
+同姓 > dousei\ ;
+藉口 > shakou\ ;
+原書 > gensho\ ;
+含嗽 > gansou\ ;
+水泡 > suihou\ ;
+吻合 > fungou\ ;
+郷社 > gousha\ ;
+送電 > souden\ ;
+分類 > bunrui\ ;
+治山 > chisan\ ;
+後生 > goshou\ ;
+恰好 > kakkou\ ;
+加薬 > kayaku\ ;
+快楽 > keraku\ ;
+反感 > hankan\ ;
+同好 > doukou\ ;
+薬園 > yakuen\ ;
+藩侯 > hankou\ ;
+息女 > sokujo\ ;
+法外 > hougai\ ;
+鉄傘 > tessan\ ;
+江村 > kouson\ ;
+念校 > nenkou\ ;
+単漢 > tankan\ ;
+磁束 > jisoku\ ;
+名大 > meidai\ ;
+幽閑 > yuukan\ ;
+幽閉 > yuuhei\ ;
+忍法 > ninpou\ ;
+幽門 > yuumon\ ;
+参戦 > sansen\ ;
+同大 > doudai\ ;
+勲等 > kuntou\ ;
+役目 > yakume\ ;
+情人 > jounin\ ;
+著者 > chosha\ ;
+瞥見 > bekken\ ;
+名声 > meisei\ ;
+情交 > joukou\ ;
+古巣 > furusu\ ;
+名士 > meishi\ ;
+遵行 > junkou\ ;
+退陣 > taijin\ ;
+剣豪 > kengou\ ;
+水気 > mizuke\ ;
+同士 > doushi\ ;
+年限 > nengen\ ;
+友情 > yuujou\ ;
+沢庵 > takuan\ ;
+過賞 > kashou\ ;
+毒矢 > dokuya\ ;
+厳探 > gentan\ ;
+合奏 > gassou\ ;
+悲傷 > hishou\ ;
+金工 > kinkou\ ;
+毛皮 > kegawa\ ;
+南溟 > nanmei\ ;
+葉腋 > youeki\ ;
+前軍 > zengun\ ;
+勇者 > yuusha\ ;
+前車 > zensha\ ;
+水母 > kurage\ ;
+目鼻 > mehana\ ;
+都督 > totoku\ ;
+南満 > nanman\ ;
+悪党 > akutou\ ;
+史官 > shikan\ ;
+運賃 > unchin\ ;
+性感 > seikan\ ;
+水死 > suishi\ ;
+原文 > genbun\ ;
+遊資 > yuushi\ ;
+麦価 > bakuka\ ;
+重工 > juukou\ ;
+知能 > chinou\ ;
+創見 > souken\ ;
+祭典 > saiten\ ;
+動線 > dousen\ ;
+念書 > nensho\ ;
+年間 > nenkan\ ;
+必治 > hitchi\ ;
+禁令 > kinrei\ ;
+歯茎 > haguki\ ;
+性情 > seijou\ ;
+悪僧 > akusou\ ;
+従犯 > juuhan\ ;
+神化 > shinka\ ;
+藩主 > hanshu\ ;
+占法 > senpou\ ;
+知育 > chiiku\ ;
+社団 > shadan\ ;
+効能 > kounou\ ;
+分際 > bunzai\ ;
+遁走 > tonsou\ ;
+萵苣 > chisha\ ;
+吉報 > kippou\ ;
+分隊 > buntai\ ;
+反影 > han''ei\ ;
+怠慢 > taiman\ ;
+破目 > wareme\ ;
+造酒 > zoushu\ ;
+創製 > sousei\ ;
+分院 > bun''in\ ;
+神助 > shinjo\ ;
+分限 > bungen\ ;
+南海 > nankai\ ;
+同型 > doukei\ ;
+思慮 > shiryo\ ;
+決戦 > kessen\ ;
+連邦 > renpou\ ;
+凱風 > gaifuu\ ;
+怨念 > on''nen\ ;
+化生 > keshou\ ;
+金山 > kinzan\ ;
+知者 > chisha\ ;
+否否 > iyaiya\ ;
+厳戒 > genkai\ ;
+凶音 > kyouin\ ;
+心気 > shinki\ ;
+悟入 > gonyuu\ ;
+同地 > douchi\ ;
+硝煙 > shouen\ ;
+配水 > haisui\ ;
+逸足 > issoku\ ;
+思想 > shisou\ ;
+砥石 > toishi\ ;
+切開 > sekkai\ ;
+年鑑 > nenkan\ ;
+必死 > hisshi\ ;
+古家 > furuie\ ;
+当社 > tousha\ ;
+落胤 > rakuin\ ;
+薬味 > yakumi\ ;
+水槽 > suisou\ ;
+郎等 > roudou\ ;
+重層 > juusou\ ;
+前賢 > zenken\ ;
+眼鏡 > megane\ ;
+真面 > matomo\ ;
+悪例 > akurei\ ;
+口宣 > kousen\ ;
+矢羽 > yabane\ ;
+真青 > massao\ ;
+半減 > hangen\ ;
+気流 > kiryuu\ ;
+進路 > shinro\ ;
+古学 > kogaku\ ;
+号外 > gougai\ ;
+蒼然 > souzen\ ;
+欠講 > kekkou\ ;
+蕩尽 > toujin\ ;
+反帝 > hantei\ ;
+死者 > shisha\ ;
+快晴 > kaisei\ ;
+達観 > takkan\ ;
+出際 > degiwa\ ;
+収差 > shuusa\ ;
+形相 > keisou\ ;
+決意 > ketsui\ ;
+底辺 > teihen\ ;
+道観 > doukan\ ;
+君命 > kunmei\ ;
+達見 > takken\ ;
+野宿 > nojuku\ ;
+遊説 > yuuzei\ ;
+短編 > tanpen\ ;
+剪裁 > sensai\ ;
+葛粉 > kuzuko\ ;
+悪令 > akurei\ ;
+通過 > tsuuka\ ;
+思念 > shinen\ ;
+通運 > tsuuun\ ;
+薄塩 > usujio\ ;
+真際 > magiwa\ ;
+各回 > kakkai\ ;
+悪人 > akunin\ ;
+死罪 > shizai\ ;
+連載 > rensai\ ;
+祝儀 > shuugi\ ;
+水棲 > suisei\ ;
+武臣 > bushin\ ;
+別邸 > bettei\ ;
+快方 > kaihou\ ;
+波及 > hakyuu\ ;
+這這 > houhou\ ;
+原拠 > genkyo\ ;
+薨去 > koukyo\ ;
+弩級 > dokyuu\ ;
+毛玉 > kedama\ ;
+麗人 > reijin\ ;
+里子 > satogo\ ;
+社命 > shamei\ ;
+心機 > shinki\ ;
+歯肉 > haniku\ ;
+荷鞍 > nigura\ ;
+石粉 > ishiko\ ;
+悩乱 > nouran\ ;
+民法 > minpou\ ;
+酸敗 > sanpai\ ;
+厄日 > yakubi\ ;
+呈上 > teijou\ ;
+南欧 > nan''ou\ ;
+金婚 > kinkon\ ;
+遊覧 > yuuran\ ;
+清々 > seisei\ ;
+廻船 > kaisen\ ;
+匍球 > hokyuu\ ;
+遮蔽 > shahei\ ;
+社名 > shamei\ ;
+薬効 > yakkou\ ;
+葬祭 > sousai\ ;
+思弁 > shiben\ ;
+別送 > bessou\ ;
+社史 > shashi\ ;
+祭主 > saishu\ ;
+洋上 > youjou\ ;
+水栓 > suisen\ ;
+華表 > kahyou\ ;
+名品 > meihin\ ;
+葬礼 > sourei\ ;
+逓送 > teisou\ ;
+社友 > shayuu\ ;
+郡県 > gunken\ ;
+重婚 > juukon\ ;
+弛緩 > chikan\ ;
+志望 > shibou\ ;
+送金 > soukin\ ;
+厚手 > atsude\ ;
+幕間 > makuai\ ;
+年金 > nenkin\ ;
+反射 > hansha\ ;
+反対 > hantai\ ;
+氷期 > hyouki\ ;
+悟了 > goryou\ ;
+忿懣 > funman\ ;
+法号 > hougou\ ;
+劣者 > ressha\ ;
+死線 > shisen\ ;
+双射 > sousha\ ;
+名吟 > meigin\ ;
+双対 > soutai\ ;
+名君 > meikun\ ;
+目高 > medaka\ ;
+返電 > henden\ ;
+幽邃 > yuusui\ ;
+鈍刀 > dontou\ ;
+破獄 > hagoku\ ;
+口外 > kougai\ ;
+油圧 > yuatsu\ ;
+凌駕 > ryouga\ ;
+同名 > doumei\ ;
+短篇 > tanpen\ ;
+卯月 > udzuki\ ;
+水木 > mizuki\ ;
+半死 > hanshi\ ;
+砂礫 > sareki\ ;
+次表 > jihyou\ ;
+怒張 > dochou\ ;
+各員 > kakuin\ ;
+年配 > nenpai\ ;
+前言 > zengen\ ;
+硬水 > kousui\ ;
+神代 > jindai\ ;
+遊行 > yuukou\ ;
+古墨 > koboku\ ;
+台地 > daichi\ ;
+分銅 > fundou\ ;
+逸話 > itsuwa\ ;
+草魚 > sougyo\ ;
+即時 > sokuji\ ;
+水曜 > suiyou\ ;
+重奏 > juusou\ ;
+弁者 > bensha\ ;
+通路 > tsuuro\ ;
+蓮根 > renkon\ ;
+庭訓 > teikin\ ;
+双子 > futago\ ;
+合同 > goudou\ ;
+重大 > juudai\ ;
+近隣 > kinrin\ ;
+神事 > shinji\ ;
+凍餒 > toudai\ ;
+重変 > juuhen\ ;
+毒牙 > dokuga\ ;
+忌服 > kifuku\ ;
+徒渉 > toshou\ ;
+功罪 > kouzai\ ;
+送還 > soukan\ ;
+荒馬 > arauma\ ;
+金塊 > kinkai\ ;
+快挙 > kaikyo\ ;
+分野 > bun''ya\ ;
+当番 > touban\ ;
+水星 > suisei\ ;
+厚情 > koujou\ ;
+酒杯 > shuhai\ ;
+水明 > suimei\ ;
+同勢 > douzei\ ;
+金堂 > kondou\ ;
+叮嚀 > teinei\ ;
+遂行 > suikou\ ;
+気楽 > kiraku\ ;
+蒼海 > soukai\ ;
+民権 > minken\ ;
+刃針 > habari\ ;
+当用 > touyou\ ;
+幇間 > houkan\ ;
+励精 > reisei\ ;
+参宮 > sanguu\ ;
+同労 > dourou\ ;
+金城 > kinjou\ ;
+別趣 > besshu\ ;
+前装 > zensou\ ;
+社内 > shanai\ ;
+分配 > bunpai\ ;
+法制 > housei\ ;
+遺脱 > idatsu\ ;
+瞽者 > kosha\ ;
+名前 > namae\ ;
+古址 > koshi\ ;
+帰順 > kijun\ ;
+座視 > zashi\ ;
+快打 > kaida\ ;
+送辞 > souji\ ;
+名利 > meiri\ ;
+眉間 > miken\ ;
+磁性 > jisei\ ;
+薬価 > yakka\ ;
+砲煙 > houen\ ;
+礼儀 > reigi\ ;
+法具 > hougu\ ;
+吏党 > ritou\ ;
+目顔 > megao\ ;
+碑文 > hibun\ ;
+連語 > rengo\ ;
+重囲 > choui\ ;
+沮喪 > sosou\ ;
+遺習 > ishuu\ ;
+選者 > senja\ ;
+歌聖 > kasei\ ;
+造語 > zougo\ ;
+砲火 > houka\ ;
+蒸気 > jouki\ ;
+怪奇 > kaiki\ ;
+連記 > renki\ ;
+重器 > juuki\ ;
+加糖 > katou\ ;
+恩典 > onten\ ;
+徒死 > toshi\ ;
+序論 > joron\ ;
+毅然 > kizen\ ;
+制覇 > seiha\ ;
+歎美 > tanbi\ ;
+退路 > tairo\ ;
+応手 > oushu\ ;
+速記 > sokki\ ;
+波乱 > haran\ ;
+応戦 > ousen\ ;
+連覇 > renpa\ ;
+怨声 > ensei\ ;
+油単 > yutan\ ;
+序詞 > joshi\ ;
+医業 > igyou\ ;
+序言 > jogen\ ;
+忘我 > bouga\ ;
+荷重 > kajuu\ ;
+区検 > kuken\ ;
+南斗 > nanto\ ;
+沽券 > koken\ ;
+半期 > hanki\ ;
+同価 > douka\ ;
+動画 > douga\ ;
+河南 > kanan\ ;
+薄刃 > usuba\ ;
+加算 > kasan\ ;
+年賦 > nenpu\ ;
+口味 > koumi\ ;
+迷路 > meiro\ ;
+油剤 > yuzai\ ;
+年賀 > nenga\ ;
+可動 > kadou\ ;
+年貢 > nengu\ ;
+御株 > okabu\ ;
+厨子 > zushi\ ;
+別記 > bekki\ ;
+古史 > koshi\ ;
+吏人 > rijin\ ;
+各個 > kakko\ ;
+邪知 > jachi\ ;
+古参 > kosan\ ;
+法事 > houji\ ;
+蕃夷 > ban''i\ ;
+重味 > omomi\ ;
+樹齢 > jurei\ ;
+千木 > chigi\ ;
+歯科 > shika\ ;
+恵与 > keiyo\ ;
+酸度 > sando\ ;
+励磁 > reiji\ ;
+剣舞 > kenbu\ ;
+法主 > hossu\ ;
+母港 > bokou\ ;
+野合 > yagou\ ;
+同事 > douji\ ;
+可分 > kabun\ ;
+野史 > yashi\ ;
+助祭 > josai\ ;
+半旗 > hanki\ ;
+各位 > kakui\ ;
+御札 > ofuda\ ;
+過般 > kahan\ ;
+分賦 > bunpu\ ;
+種々 > shuju\ ;
+忘恩 > bouon\ ;
+待機 > taiki\ ;
+恩人 > onjin\ ;
+年譜 > nenpu\ ;
+忌憚 > kitan\ ;
+運航 > unkou\ ;
+河内 > hanoi\ ;
+恨事 > konji\ ;
+性器 > seiki\ ;
+怒声 > dosei\ ;
+機首 > kishu\ ;
+列記 > rekki\ ;
+古制 > kosei\ ;
+反哺 > hanpo\ ;
+十日 > tooka\ ;
+御昼 > ohiru\ ;
+都民 > tomin\ ;
+看過 > kanka\ ;
+古刀 > kotou\ ;
+弥生 > yayoi\ ;
+送話 > souwa\ ;
+平語 > heigo\ ;
+毒気 > dokke\ ;
+矛盾 > mujun\ ;
+破水 > hasui\ ;
+金利 > kinri\ ;
+泉下 > senka\ ;
+返辞 > henji\ ;
+鵞毛 > gamou\ ;
+叙勲 > jokun\ ;
+沖合 > okiai\ ;
+鵝毛 > gamou\ ;
+古典 > koten\ ;
+鯨飲 > geiin\ ;
+重利 > juuri\ ;
+印影 > in''ei\ ;
+単打 > tanda\ ;
+御数 > okazu\ ;
+受動 > judou\ ;
+道義 > dougi\ ;
+後架 > kouka\ ;
+遠縁 > tooen\ ;
+分課 > bunka\ ;
+邦画 > houga\ ;
+野党 > yatou\ ;
+着衣 > yakui\ ;
+受刑 > jukei\ ;
+毎次 > maiji\ ;
+後期 > kouki\ ;
+蕩児 > touji\ ;
+油井 > yusei\ ;
+建碑 > kenpi\ ;
+冥闇 > meian\ ;
+布陣 > fujin\ ;
+荒野 > kouya\ ;
+治下 > chika\ ;
+辺鄙 > henpi\ ;
+酒徒 > shuto\ ;
+機雷 > kirai\ ;
+歌稿 > kakou\ ;
+弧状 > kojou\ ;
+遷移 > sen''i\ ;
+選科 > senka\ ;
+帰還 > kikan\ ;
+歯痛 > haita\ ;
+民戸 > minko\ ;
+加盟 > kamei\ ;
+菊花 > kikka\ ;
+古例 > korei\ ;
+台下 > daika\ ;
+刻苦 > kokku\ ;
+母権 > boken\ ;
+古体 > kotai\ ;
+往来 > ourai\ ;
+受像 > juzou\ ;
+句会 > kukai\ ;
+古伝 > koden\ ;
+応対 > outai\ ;
+危峰 > kihou\ ;
+殺気 > sakki\ ;
+助産 > josan\ ;
+常軌 > jouki\ ;
+帰農 > kinou\ ;
+古代 > kodai\ ;
+古今 > kokon\ ;
+古人 > kojin\ ;
+違約 > iyaku\ ;
+原図 > genzu\ ;
+十手 > jitte\ ;
+機関 > kikan\ ;
+民意 > min''i\ ;
+参加 > sanka\ ;
+冶金 > yakin\ ;
+石火 > sekka\ ;
+兵馬 > heiba\ ;
+御所 > gosho\ ;
+野人 > yajin\ ;
+弁疏 > benso\ ;
+原器 > genki\ ;
+造花 > zouka\ ;
+帝都 > teito\ ;
+英魂 > eikon\ ;
+里人 > rijin\ ;
+厭味 > iyami\ ;
+危害 > kigai\ ;
+店舗 > tenpo\ ;
+配布 > haifu\ ;
+段歩 > tanbu\ ;
+単座 > tanza\ ;
+叙任 > jonin\ ;
+欧米 > oubei\ ;
+弧灯 > kotou\ ;
+怒号 > dogou\ ;
+永存 > eizon\ ;
+工面 > kumen\ ;
+内需 > naiju\ ;
+受任 > junin\ ;
+母校 > bokou\ ;
+後援 > kouen\ ;
+県議 > kengi\ ;
+勤求 > gongu\ ;
+看護 > kango\ ;
+円陣 > enjin\ ;
+酸基 > sanki\ ;
+確固 > kakko\ ;
+帰趨 > kisuu\ ;
+帰趣 > kishu\ ;
+当機 > touki\ ;
+弁理 > benri\ ;
+母材 > bozai\ ;
+徒手 > toshu\ ;
+盛運 > seiun\ ;
+歯牙 > shiga\ ;
+民度 > mindo\ ;
+運算 > unzan\ ;
+応変 > ouhen\ ;
+酒家 > shuka\ ;
+弥漫 > biman\ ;
+酒宴 > shuen\ ;
+鮟鱇 > ankou\ ;
+轟音 > gouon\ ;
+御念 > gonen\ ;
+得意 > tokui\ ;
+機鋒 > kihou\ ;
+典雅 > tenga\ ;
+双互 > sougo\ ;
+勘気 > kanki\ ;
+毎時 > maiji\ ;
+辞退 > jitai\ ;
+原句 > genku\ ;
+遺留 > iryuu\ ;
+機銃 > kijuu\ ;
+都政 > tosei\ ;
+動気 > douki\ ;
+応報 > ouhou\ ;
+幼芽 > youga\ ;
+硬度 > koudo\ ;
+復帰 > fukki\ ;
+欺瞞 > giman\ ;
+遠矢 > tooya\ ;
+過程 > katei\ ;
+水夫 > suifu\ ;
+母斑 > bohan\ ;
+怜俐 > reiri\ ;
+市部 > shibu\ ;
+劫火 > gouka\ ;
+冥途 > meido\ ;
+参事 > sanji\ ;
+御幣 > gohei\ ;
+弾機 > danki\ ;
+遠眼 > engan\ ;
+破摧 > hasai\ ;
+近衛 > konoe\ ;
+短波 > tanpa\ ;
+遠目 > toome\ ;
+醇化 > junka\ ;
+判者 > hanja\ ;
+破損 > hason\ ;
+道破 > douha\ ;
+英霊 > eirei\ ;
+勇気 > yuuki\ ;
+当期 > touki\ ;
+動機 > douki\ ;
+気孔 > kikou\ ;
+加点 > katen\ ;
+酸味 > sanmi\ ;
+冠辞 > kanji\ ;
+英雄 > eiyuu\ ;
+快味 > kaimi\ ;
+危地 > kichi\ ;
+平臥 > heiga\ ;
+厚利 > kouri\ ;
+徒弟 > totei\ ;
+短気 > tanki\ ;
+民家 > minka\ ;
+化成 > kasei\ ;
+差金 > sakin\ ;
+横隊 > outai\ ;
+部数 > busuu\ ;
+広義 > kougi\ ;
+勇武 > yuubu\ ;
+先駆 > senku\ ;
+邪法 > jahou\ ;
+半季 > hanki\ ;
+忌垣 > igaki\ ;
+当時 > touji\ ;
+前科 > zenka\ ;
+氏子 > ujiko\ ;
+差配 > sahai\ ;
+短歌 > tanka\ ;
+監護 > kango\ ;
+内野 > naiya\ ;
+相補 > souho\ ;
+弦歌 > genka\ ;
+千家 > senke\ ;
+苦難 > kunan\ ;
+弘法 > guhou\ ;
+厭人 > enjin\ ;
+酸化 > sanka\ ;
+機転 > kiten\ ;
+破戒 > hakai\ ;
+毀損 > kison\ ;
+十字 > juuji\ ;
+差遣 > saken\ ;
+御宴 > gyoen\ ;
+勘査 > kansa\ ;
+矮樹 > waiju\ ;
+白雨 > hakuu\ ;
+厭世 > ensei\ ;
+御宅 > otaku\ ;
+内部 > naibu\ ;
+原価 > genka\ ;
+冷語 > reigo\ ;
+座禅 > zazen\ ;
+荷葉 > kayou\ ;
+苦闘 > kutou\ ;
+辞譲 > jijou\ ;
+医学 > igaku\ ;
+加減 > kagen\ ;
+座礼 > zarei\ ;
+酒器 > shuki\ ;
+左遷 > sasen\ ;
+登院 > touin\ ;
+華甲 > kakou\ ;
+先非 > senpi\ ;
+運痴 > unchi\ ;
+市費 > shihi\ ;
+往年 > ounen\ ;
+府税 > fuzei\ ;
+研摩 > kenma\ ;
+巡邏 > junra\ ;
+剣璽 > kenji\ ;
+免除 > menjo\ ;
+花魁 > oiran\ ;
+延滞 > entai\ ;
+左辺 > sahen\ ;
+微塵 > mijin\ ;
+部所 > busho\ ;
+匹婦 > hippu\ ;
+光陰 > kouin\ ;
+次男 > jinan\ ;
+加法 > kahou\ ;
+後尾 > koubi\ ;
+円転 > enten\ ;
+道理 > douri\ ;
+歳次 > saiji\ ;
+冗費 > jouhi\ ;
+別箇 > bekko\ ;
+茶話 > chawa\ ;
+母性 > bosei\ ;
+遅疑 > chigi\ ;
+気圏 > kiken\ ;
+巨躯 > kyoku\ ;
+市議 > shigi\ ;
+気団 > kidan\ ;
+応分 > oubun\ ;
+御大 > ontai\ ;
+加水 > kasui\ ;
+化工 > kakou\ ;
+毛布 > moufu\ ;
+再起 > saiki\ ;
+永劫 > eigou\ ;
+気嚢 > kinou\ ;
+水化 > suika\ ;
+途端 > totan\ ;
+都度 > tsudo\ ;
+母形 > bokei\ ;
+正気 > seiki\ ;
+匹夫 > hippu\ ;
+平素 > heiso\ ;
+花香 > kakou\ ;
+勿怪 > mokke\ ;
+写譜 > shafu\ ;
+確乎 > kakko\ ;
+短期 > tanki\ ;
+正比 > seihi\ ;
+彼岸 > higan\ ;
+印判 > inpan\ ;
+都市 > toshi\ ;
+毎度 > maido\ ;
+全都 > zento\ ;
+印刀 > intou\ ;
+全部 > zenbu\ ;
+水利 > suiri\ ;
+連破 > renpa\ ;
+彩度 > saido\ ;
+形影 > keiei\ ;
+別科 > bekka\ ;
+遠火 > toobi\ ;
+葉末 > hazue\ ;
+効果 > kouka\ ;
+快事 > kaiji\ ;
+府県 > fuken\ ;
+冗語 > jougo\ ;
+区域 > kuiki\ ;
+勾引 > kouin\ ;
+巨費 > kyohi\ ;
+御坊 > gobou\ ;
+矢来 > yarai\ ;
+化導 > kedou\ ;
+英邁 > eimai\ ;
+後妻 > gosai\ ;
+比島 > hitou\ ;
+単句 > tanku\ ;
+気品 > kihin\ ;
+再議 > saigi\ ;
+工費 > kouhi\ ;
+勝手 > katte\ ;
+死期 > shiki\ ;
+眼窩 > ganka\ ;
+布袋 > hotei\ ;
+艶麗 > enrei\ ;
+優雅 > yuuga\ ;
+毛孔 > keana\ ;
+破屋 > haoku\ ;
+勤惰 > kinda\ ;
+内議 > naigi\ ;
+轗軻 > kanka\ ;
+歔欷 > kyoki\ ;
+輸銀 > yugin\ ;
+全躯 > zenku\ ;
+平穏 > heion\ ;
+即位 > sokui\ ;
+帰艦 > kikan\ ;
+序盤 > joban\ ;
+近習 > kinju\ ;
+模造 > mozou\ ;
+母屋 > omoya\ ;
+魑魅 > chimi\ ;
+永住 > eijuu\ ;
+眼科 > ganka\ ;
+目茶 > mecha\ ;
+公路 > kouro\ ;
+切符 > kippu\ ;
+帰航 > kikou\ ;
+横転 > outen\ ;
+年租 > nenso\ ;
+軍鼓 > gunko\ ;
+半可 > hanka\ ;
+半句 > hanku\ ;
+選歌 > senka\ ;
+単利 > tanri\ ;
+徳化 > tokka\ ;
+利益 > rieki\ ;
+次点 > jiten\ ;
+当座 > touza\ ;
+従因 > juuin\ ;
+永代 > eitai\ ;
+気勢 > kisei\ ;
+歯朶 > shida\ ;
+歳暮 > seibo\ ;
+母家 > omoya\ ;
+彼奴 > aitsu\ ;
+気功 > kikou\ ;
+復古 > fukko\ ;
+目色 > meiro\ ;
+凄艶 > seien\ ;
+母子 > boshi\ ;
+遠海 > enkai\ ;
+気前 > kimae\ ;
+千古 > senko\ ;
+冷菓 > reika\ ;
+引数 > insuu\ ;
+匪団 > hidan\ ;
+配備 > haibi\ ;
+微動 > bidou\ ;
+永世 > eisei\ ;
+段差 > dansa\ ;
+役夫 > ekifu\ ;
+気分 > kibun\ ;
+酒保 > shuho\ ;
+公費 > kouhi\ ;
+強意 > kyoui\ ;
+内規 > naiki\ ;
+遠泳 > en''ei\ ;
+草花 > souka\ ;
+分科 > bunka\ ;
+酔余 > suiyo\ ;
+動悸 > douki\ ;
+蒲団 > futon\ ;
+御台 > midai\ ;
+軍鶏 > shamo\ ;
+連理 > renri\ ;
+邪推 > jasui\ ;
+民利 > minri\ ;
+遺業 > igyou\ ;
+運漕 > unsou\ ;
+硬化 > kouka\ ;
+連珠 > renju\ ;
+利用 > riyou\ ;
+微分 > bibun\ ;
+短打 > tanda\ ;
+午前 > gozen\ ;
+英資 > eishi\ ;
+内裏 > dairi\ ;
+輸送 > yusou\ ;
+先途 > sendo\ ;
+兵語 > heigo\ ;
+助攻 > jokou\ ;
+殿宇 > den''u\ ;
+芟除 > sanjo\ ;
+切磋 > sessa\ ;
+民具 > mingu\ ;
+公議 > kougi\ ;
+鵄尾 > shibi\ ;
+医博 > ihaku\ ;
+茶菓 > chaka\ ;
+微光 > bikou\ ;
+単価 > tanka\ ;
+配付 > haifu\ ;
+歩数 > hosuu\ ;
+破壊 > hakai\ ;
+毎夜 > maiyo\ ;
+武断 > budan\ ;
+単位 > tan''i\ ;
+光輝 > kouki\ ;
+気候 > kikou\ ;
+兼補 > kenpo\ ;
+加数 > kasuu\ ;
+御前 > gozen\ ;
+公課 > kouka\ ;
+当家 > touke\ ;
+強引 > gouin\ ;
+徒名 > adana\ ;
+御凸 > odeko\ ;
+当字 > ateji\ ;
+配下 > haika\ ;
+公訴 > kouso\ ;
+平癒 > heiyu\ ;
+発起 > hokki\ ;
+選果 > senka\ ;
+気体 > kitai\ ;
+邪慳 > jaken\ ;
+区分 > kubun\ ;
+華氏 > kashi\ ;
+避暑 > hisho\ ;
+遊泳 > yuuei\ ;
+区処 > kusho\ ;
+母堂 > bodou\ ;
+御免 > gomen\ ;
+御先 > osaki\ ;
+冬至 > touji\ ;
+茶舗 > chaho\ ;
+英詩 > eishi\ ;
+勇往 > yuuou\ ;
+弓手 > yunde\ ;
+半価 > hanka\ ;
+南下 > nanka\ ;
+区内 > kunai\ ;
+色香 > iroka\ ;
+徒労 > torou\ ;
+母型 > bokei\ ;
+道歌 > douka\ ;
+党議 > tougi\ ;
+邪悪 > jaaku\ ;
+年甫 > nenpo\ ;
+部外 > bugai\ ;
+歌書 > kasho\ ;
+剛気 > gouki\ ;
+弧形 > kokei\ ;
+勢家 > seika\ ;
+劃期 > kakki\ ;
+砂岩 > sagan\ ;
+邪恋 > jaren\ ;
+帰納 > kinou\ ;
+弔慰 > choui\ ;
+気丈 > kijou\ ;
+剛毅 > gouki\ ;
+復位 > fukui\ ;
+徒刑 > tokei\ ;
+目線 > mesen\ ;
+萌木 > moegi\ ;
+冷罵 > reiba\ ;
+民事 > minji\ ;
+矩形 > kukei\ ;
+遺族 > izoku\ ;
+毛唐 > ketou\ ;
+全裸 > zenra\ ;
+邪念 > janen\ ;
+助成 > josei\ ;
+軍馬 > gunba\ ;
+弔意 > choui\ ;
+創案 > souan\ ;
+模試 > moshi\ ;
+遊歩 > yuuho\ ;
+凹眼 > ougan\ ;
+当夜 > touya\ ;
+車馬 > shaba\ ;
+加担 > katan\ ;
+鴨居 > kamoi\ ;
+御供 > otomo\ ;
+徒党 > totou\ ;
+円蓋 > engai\ ;
+千代 > chiyo\ ;
+兄貴 > aniki\ ;
+苦言 > kugen\ ;
+御伽 > otogi\ ;
+化合 > kagou\ ;
+利点 > riten\ ;
+鬼面 > kimen\ ;
+輿論 > yoron\ ;
+党規 > touki\ ;
+十五 > juugo\ ;
+死後 > shigo\ ;
+十二 > juuni\ ;
+横行 > oukou\ ;
+医伯 > ihaku\ ;
+御仁 > gojin\ ;
+後光 > gokou\ ;
+千世 > chiyo\ ;
+先議 > sengi\ ;
+区会 > kukai\ ;
+遠来 > enrai\ ;
+鴟尾 > shibi\ ;
+登記 > touki\ ;
+前歯 > maeba\ ;
+遠望 > enbou\ ;
+出番 > deban\ ;
+知己 > chiki\ ;
+励弧 > reiko\ ;
+後備 > koubi\ ;
+看破 > kanpa\ ;
+御上 > okami\ ;
+免訴 > menso\ ;
+役務 > ekimu\ ;
+機能 > kinou\ ;
+蒙古 > mouko\ ;
+冠者 > kanja\ ;
+廃棄 > haiki\ ;
+利潤 > rijun\ ;
+僧院 > souin\ ;
+軍靴 > gunka\ ;
+冤罪 > enzai\ ;
+遠景 > enkei\ ;
+内苑 > naien\ ;
+廃案 > haian\ ;
+母后 > bokou\ ;
+軍需 > gunju\ ;
+布置 > fuchi\ ;
+鬼門 > kimon\ ;
+儒道 > judou\ ;
+遠方 > enpou\ ;
+従事 > juuji\ ;
+債鬼 > saiki\ ;
+左舷 > sagen\ ;
+允許 > inkyo\ ;
+帰社 > kisha\ ;
+劣弧 > rekko\ ;
+部品 > buhin\ ;
+砂塵 > sajin\ ;
+剛果 > gouka\ ;
+初演 > shoen\ ;
+歩廊 > horou\ ;
+歌手 > kashu\ ;
+後事 > kouji\ ;
+勇婦 > yuufu\ ;
+歪度 > waido\ ;
+平炉 > heiro\ ;
+農科 > nouka\ ;
+次条 > jijou\ ;
+武弁 > buben\ ;
+軌間 > kikan\ ;
+都内 > tonai\ ;
+弟子 > deshi\ ;
+左脳 > sanou\ ;
+延性 > ensei\ ;
+邦家 > houka\ ;
+加年 > kanen\ ;
+近畿 > kinki\ ;
+弁座 > benza\ ;
+別派 > beppa\ ;
+正座 > seiza\ ;
+引導 > indou\ ;
+連歌 > renga\ ;
+魔道 > madou\ ;
+影像 > eizou\ ;
+巫者 > fusha\ ;
+邦字 > houji\ ;
+凹版 > ouban\ ;
+内耳 > naiji\ ;
+加工 > kakou\ ;
+勇夫 > yuufu\ ;
+欧文 > oubun\ ;
+当否 > touhi\ ;
+利水 > risui\ ;
+造次 > zouji\ ;
+六花 > rikka\ ;
+処理 > shori\ ;
+延引 > en''in\ ;
+睿智 > eichi\ ;
+八苦 > hakku\ ;
+比倫 > hirin\ ;
+帰省 > kisei\ ;
+過敏 > kabin\ ;
+序歯 > joshi\ ;
+延延 > en''en\ ;
+動因 > douin\ ;
+弊履 > heiri\ ;
+遺徳 > itoku\ ;
+破倫 > harin\ ;
+北京 > pekin\ ;
+砂嘴 > sashi\ ;
+前期 > zenki\ ;
+次数 > jisuu\ ;
+造機 > zouki\ ;
+比例 > hirei\ ;
+部分 > bubun\ ;
+平温 > heion\ ;
+再縁 > saien\ ;
+目眩 > memai\ ;
+樹脂 > jushi\ ;
+残基 > zanki\ ;
+逸書 > issho\ ;
+都会 > tokai\ ;
+欽慕 > kinbo\ ;
+部内 > bunai\ ;
+六腑 > roppu\ ;
+逓次 > teiji\ ;
+都人 > tojin\ ;
+運搬 > unpan\ ;
+前日 > maebi\ ;
+母体 > botai\ ;
+利権 > riken\ ;
+内縁 > naien\ ;
+遷座 > senza\ ;
+加害 > kagai\ ;
+遠慮 > enryo\ ;
+勧化 > kange\ ;
+勇図 > yuuto\ ;
+菩提 > bodai\ ;
+僧都 > souzu\ ;
+武官 > bukan\ ;
+初歩 > shoho\ ;
+石器 > sekki\ ;
+退治 > taiji\ ;
+動員 > douin\ ;
+菲才 > hisai\ ;
+勤務 > kinmu\ ;
+弥四 > yashi\ ;
+正字 > seiji\ ;
+巨細 > kosai\ ;
+運指 > unshi\ ;
+鳥居 > torii\ ;
+平気 > heiki\ ;
+連架 > renka\ ;
+分派 > bunpa\ ;
+軍部 > gunbu\ ;
+公義 > kougi\ ;
+出湯 > ideyu\ ;
+機種 > kishu\ ;
+度数 > dosuu\ ;
+遊技 > yuugi\ ;
+退歩 > taiho\ ;
+皇胤 > kouin\ ;
+邦土 > houdo\ ;
+避寒 > hikan\ ;
+部会 > bukai\ ;
+利根 > rikon\ ;
+崎陽 > kiyou\ ;
+年次 > nenji\ ;
+遊戯 > yuugi\ ;
+遠征 > ensei\ ;
+差等 > satou\ ;
+軌道 > kidou\ ;
+遺尿 > inyou\ ;
+死因 > shiin\ ;
+勲位 > kun''i\ ;
+葬具 > sougu\ ;
+円筒 > entou\ ;
+分母 > bunbo\ ;
+茶目 > chame\ ;
+店是 > tenze\ ;
+募兵 > bohei\ ;
+殿下 > denka\ ;
+欝憤 > uppun\ ;
+葬儀 > sougi\ ;
+違心 > ishin\ ;
+弱化 > jakka\ ;
+加増 > kazou\ ;
+遊惰 > yuuda\ ;
+募債 > bosai\ ;
+短句 > tanku\ ;
+当事 > touji\ ;
+過怠 > katai\ ;
+出汁 > dashi\ ;
+石化 > sekka\ ;
+監理 > kanri\ ;
+前戯 > zengi\ ;
+師父 > shifu\ ;
+正塩 > seien\ ;
+機知 > kichi\ ;
+庸愚 > yougu\ ;
+引喩 > in''yu\ ;
+帝王 > teiou\ ;
+避妊 > hinin\ ;
+内科 > naika\ ;
+逮捕 > taiho\ ;
+序文 > jobun\ ;
+過当 > katou\ ;
+軍路 > gunro\ ;
+序数 > josuu\ ;
+残務 > zanmu\ ;
+初期 > shoki\ ;
+遠島 > entou\ ;
+工科 > kouka\ ;
+身重 > miomo\ ;
+座所 > zasho\ ;
+内示 > naiji\ ;
+正坐 > seiza\ ;
+輪舞 > rinbu\ ;
+途方 > tohou\ ;
+儀装 > gisou\ ;
+幽暗 > yuuan\ ;
+英米 > eibei\ ;
+軍費 > gunpi\ ;
+魔街 > magai\ ;
+転訛 > tenka\ ;
+転記 > tenki\ ;
+凱歌 > gaika\ ;
+次年 > jinen\ ;
+遺墨 > iboku\ ;
+皇紀 > kouki\ ;
+遅延 > chien\ ;
+幼時 > youji\ ;
+盆画 > bonga\ ;
+刑期 > keiki\ ;
+年期 > nenki\ ;
+動作 > dousa\ ;
+出様 > deyou\ ;
+芸苑 > geien\ ;
+弧光 > kokou\ ;
+歌壇 > kadan\ ;
+兵科 > heika\ ;
+助命 > jomei\ ;
+高雅 > kouga\ ;
+常温 > jouon\ ;
+党紀 > touki\ ;
+前後 > zengo\ ;
+兵禍 > heika\ ;
+機甲 > kikou\ ;
+武問 > bumon\ ;
+労務 > roumu\ ;
+差益 > saeki\ ;
+連打 > renda\ ;
+優艶 > yuuen\ ;
+庶幾 > shoki\ ;
+花茎 > kakei\ ;
+砂上 > sajou\ ;
+軍議 > gungi\ ;
+転補 > tenpo\ ;
+平時 > heiji\ ;
+円盤 > enban\ ;
+偽電 > giden\ ;
+皮相 > hisou\ ;
+帰港 > kikou\ ;
+返歌 > henka\ ;
+前座 > zenza\ ;
+公租 > kouso\ ;
+痩躯 > souku\ ;
+分木 > bungi\ ;
+正員 > seiin\ ;
+内皮 > naihi\ ;
+道家 > douka\ ;
+模範 > mohan\ ;
+芽胞 > gahou\ ;
+刀架 > touka\ ;
+載荷 > saika\ ;
+皮癬 > hizen\ ;
+遊山 > yusan\ ;
+武名 > bumei\ ;
+全科 > zenka\ ;
+加号 > kagou\ ;
+芙蓉 > fuyou\ ;
+廃家 > haika\ ;
+公示 > kouji\ ;
+死児 > shiji\ ;
+正否 > seihi\ ;
+底意 > sokoi\ ;
+自首 > jishu\ ;
+軍記 > gunki\ ;
+荒淫 > kouin\ ;
+劣化 > rekka\ ;
+遠大 > endai\ ;
+別戸 > bekko\ ;
+歓喜 > kanki\ ;
+具眼 > gugan\ ;
+次官 > jikan\ ;
+眩暈 > memai\ ;
+軍規 > gunki\ ;
+次子 > jishi\ ;
+武勲 > bukun\ ;
+延命 > enmei\ ;
+加勢 > kasei\ ;
+元素 > genso\ ;
+武勇 > buyuu\ ;
+武功 > bukou\ ;
+廷吏 > teiri\ ;
+円環 > enkan\ ;
+岩魚 > iwana\ ;
+初手 > shote\ ;
+皇祖 > kouso\ ;
+優美 > yuubi\ ;
+儒良 > jugon\ ;
+儒艮 > jugon\ ;
+児童 > jidou\ ;
+歓呼 > kanko\ ;
+加判 > kahan\ ;
+功利 > kouri\ ;
+鳳凰 > houou\ ;
+知事 > chiji\ ;
+道央 > douou\ ;
+軍衣 > gun''i\ ;
+制度 > seido\ ;
+歩兵 > hohei\ ;
+英知 > eichi\ ;
+停音 > teion\ ;
+引例 > inrei\ ;
+痴話 > chiwa\ ;
+加冠 > kakan\ ;
+連座 > renza\ ;
+艤装 > gisou\ ;
+遠地 > enchi\ ;
+華壇 > kadan\ ;
+登科 > touka\ ;
+白禍 > hakka\ ;
+過大 > kadai\ ;
+苛税 > kazei\ ;
+遠因 > en''in\ ;
+遊女 > yuujo\ ;
+輝線 > kisen\ ;
+入相 > iriai\ ;
+免租 > menso\ ;
+芋茎 > zuiki\ ;
+菓子 > kashi\ ;
+干戈 > kanka\ ;
+疎開 > sokai\ ;
+前婦 > zenpu\ ;
+偏頗 > henpa\ ;
+遷化 > senge\ ;
+落下 > rakka\ ;
+具現 > gugen\ ;
+加俸 > kahou\ ;
+冷気 > reiki\ ;
+儒者 > jusha\ ;
+舗道 > hodou\ ;
+先祖 > senzo\ ;
+航路 > kouro\ ;
+発破 > happa\ ;
+畳韻 > jouin\ ;
+相棒 > aibou\ ;
+幽微 > yuubi\ ;
+芳紀 > houki\ ;
+廃園 > haien\ ;
+正価 > seika\ ;
+近時 > kinji\ ;
+魚肥 > gyohi\ ;
+躍起 > yakki\ ;
+高遠 > kouen\ ;
+前夫 > zenpu\ ;
+花紋 > kamon\ ;
+元祖 > ganso\ ;
+剰員 > jouin\ ;
+花糸 > kashi\ ;
+盗汗 > nease\ ;
+公理 > kouri\ ;
+武人 > bujin\ ;
+花粉 > kafun\ ;
+帰校 > kikou\ ;
+舞蹈 > butou\ ;
+幾度 > ikudo\ ;
+次回 > jikai\ ;
+年忌 > nenki\ ;
+舞踏 > butou\ ;
+鬱蒼 > ussou\ ;
+舞踊 > buyou\ ;
+内炎 > naien\ ;
+輪禍 > rinka\ ;
+刑徒 > keito\ ;
+年後 > nengo\ ;
+連子 > renji\ ;
+相板 > aiban\ ;
+前場 > zenba\ ;
+田麩 > denbu\ ;
+凹所 > ousho\ ;
+偽造 > gizou\ ;
+帰来 > kirai\ ;
+苦界 > kugai\ ;
+再演 > saien\ ;
+帰村 > kison\ ;
+常時 > jouji\ ;
+延会 > enkai\ ;
+欣喜 > kinki\ ;
+還付 > kanpu\ ;
+運営 > un''ei\ ;
+菜園 > saien\ ;
+年度 > nendo\ ;
+逮夜 > taiya\ ;
+退座 > taiza\ ;
+利害 > rigai\ ;
+艱苦 > kanku\ ;
+次善 > jizen\ ;
+利子 > rishi\ ;
+荷担 > katan\ ;
+別家 > bekke\ ;
+遺作 > isaku\ ;
+草案 > souan\ ;
+荒木 > araki\ ;
+岩間 > iwama\ ;
+庭園 > teien\ ;
+鯨波 > geiha\ ;
+年差 > nensa\ ;
+鯨油 > geiyu\ ;
+蹶起 > kekki\ ;
+円満 > enman\ ;
+花穂 > kasui\ ;
+農期 > nouki\ ;
+判子 > hanko\ ;
+華厳 > kegon\ ;
+遠出 > toode\ ;
+運命 > unmei\ ;
+兵火 > heika\ ;
+監査 > kansa\ ;
+華南 > kanan\ ;
+道化 > douke\ ;
+歌仙 > kasen\ ;
+転義 > tengi\ ;
+次号 > jigou\ ;
+歌人 > kajin\ ;
+高貴 > kouki\ ;
+過半 > kahan\ ;
+分布 > bunpu\ ;
+相撲 > sumou\ ;
+艶聞 > enbun\ ;
+序奏 > josou\ ;
+近所 > kinjo\ ;
+凡打 > bonda\ ;
+凹形 > oukei\ ;
+興起 > kouki\ ;
+舎費 > shahi\ ;
+過勤 > kakin\ ;
+通夜 > tsuya\ ;
+過労 > karou\ ;
+自邸 > jitei\ ;
+運勢 > unsei\ ;
+巨波 > kyoha\ ;
+運動 > undou\ ;
+辞柄 > jihei\ ;
+過剰 > kajou\ ;
+畝間 > unema\ ;
+自選 > jisen\ ;
+辞林 > jirin\ ;
+盛期 > seiki\ ;
+平家 > heike\ ;
+連坐 > renza\ ;
+逸品 > ippin\ ;
+道具 > dougu\ ;
+過分 > kabun\ ;
+平安 > heian\ ;
+年季 > nenki\ ;
+皆無 > kaimu\ ;
+凡愚 > bongu\ ;
+機構 > kikou\ ;
+分岐 > bunki\ ;
+前古 > zenko\ ;
+画餅 > gabei\ ;
+公演 > kouen\ ;
+辞書 > jisho\ ;
+造園 > zouen\ ;
+冬期 > touki\ ;
+高誼 > kougi\ ;
+剰余 > jouyo\ ;
+庶務 > shomu\ ;
+画風 > gafuu\ ;
+盛時 > seiji\ ;
+儀範 > gihan\ ;
+芳眉 > houbi\ ;
+初夜 > shoya\ ;
+傍見 > okami\ ;
+樹液 > jueki\ ;
+初夏 > shoka\ ;
+希望 > kibou\ ;
+巨歩 > kyoho\ ;
+幼女 > youjo\ ;
+画題 > gadai\ ;
+分家 > bunke\ ;
+希書 > kisho\ ;
+帰投 > kitou\ ;
+冤枉 > en''ou\ ;
+樹海 > jukai\ ;
+幾夜 > ikuyo\ ;
+幾多 > ikuta\ ;
+次兄 > jikei\ ;
+次元 > jigen\ ;
+迷子 > maigo\ ;
+自転 > jiten\ ;
+機械 > kikai\ ;
+座右 > zayuu\ ;
+幻夢 > genmu\ ;
+廉価 > renka\ ;
+先父 > senpu\ ;
+遡上 > sojou\ ;
+機根 > kikon\ ;
+偽誓 > gisei\ ;
+與論 > yoron\ ;
+造営 > zouei\ ;
+冥暗 > meian\ ;
+舗装 > hosou\ ;
+異郷 > ikyou\ ;
+画面 > gamen\ ;
+倍音 > baion\ ;
+棋風 > kifuu\ ;
+発火 > hakka\ ;
+偽計 > gikei\ ;
+相愛 > souai\ ;
+偽言 > gigen\ ;
+光焔 > kouen\ ;
+偶語 > guugo\ ;
+機材 > kizai\ ;
+次便 > jibin\ ;
+連呼 > renko\ ;
+左様 > sayou\ ;
+偶詠 > guuei\ ;
+魔神 > majin\ ;
+廊下 > rouka\ ;
+驟雨 > shuuu\ ;
+盲愛 > mouai\ ;
+花瓶 > kabin\ ;
+光炎 > kouen\ ;
+再案 > saian\ ;
+儀礼 > girei\ ;
+自賛 > jisan\ ;
+連句 > renku\ ;
+路頭 > rotou\ ;
+次会 > jikai\ ;
+迷夢 > meimu\ ;
+英法 > eihou\ ;
+自販 > jihan\ ;
+機智 > kichi\ ;
+苦渋 > kujuu\ ;
+偽装 > gisou\ ;
+相応 > souou\ ;
+次代 > jidai\ ;
+軍紀 > gunki\ ;
+尾鰭 > obire\ ;
+師恩 > shion\ ;
+公武 > koubu\ ;
+転移 > ten''i\ ;
+路面 > romen\ ;
+岡辺 > okabe\ ;
+偉蹟 > iseki\ ;
+転科 > tenka\ ;
+臀部 > denbu\ ;
+党派 > touha\ ;
+運上 > unjou\ ;
+業苦 > gouku\ ;
+層雲 > souun\ ;
+座像 > zazou\ ;
+帷幕 > ibaku\ ;
+造化 > zouka\ ;
+帷帳 > ichou\ ;
+自讃 > jisan\ ;
+利口 > rikou\ ;
+機敏 > kibin\ ;
+自警 > jikei\ ;
+偉跡 > iseki\ ;
+入歯 > ireba\ ;
+庶事 > shoji\ ;
+魔睡 > masui\ ;
+横死 > oushi\ ;
+軌範 > kihan\ ;
+円本 > enpon\ ;
+儒生 > jusei\ ;
+巡査 > junsa\ ;
+再映 > saiei\ ;
+庵主 > anshu\ ;
+自認 > jinin\ ;
+備荒 > bikou\ ;
+帰帆 > kihan\ ;
+花片 > kahen\ ;
+鬼神 > kijin\ ;
+膳部 > zenbu\ ;
+輸液 > yueki\ ;
+甘露 > kanro\ ;
+檀徒 > danto\ ;
+利刃 > rijin\ ;
+利刀 > ritou\ ;
+異象 > ishou\ ;
+茂林 > morin\ ;
+保養 > hoyou\ ;
+光波 > kouha\ ;
+距離 > kyori\ ;
+左方 > sahou\ ;
+座乗 > zajou\ ;
+草庵 > souan\ ;
+樹林 > jurin\ ;
+魔界 > makai\ ;
+平和 > heiwa\ ;
+省字 > seiji\ ;
+具有 > guyuu\ ;
+鰥寡 > kanka\ ;
+公案 > kouan\ ;
+自製 > jisei\ ;
+処女 > shojo\ ;
+帝座 > teiza\ ;
+刑吏 > keiri\ ;
+送受 > souju\ ;
+差損 > sason\ ;
+模様 > moyou\ ;
+機才 > kisai\ ;
+畳語 > jougo\ ;
+凡夫 > bonpu\ ;
+寿齢 > jurei\ ;
+元気 > genki\ ;
+刻下 > kokka\ ;
+退化 > taika\ ;
+准尉 > jun''i\ ;
+冶工 > yakou\ ;
+師家 > shika\ ;
+横柄 > ouhei\ ;
+典故 > tenko\ ;
+色目 > irome\ ;
+利便 > riben\ ;
+公暇 > kouka\ ;
+備考 > bikou\ ;
+別個 > bekko\ ;
+画道 > gadou\ ;
+路銀 > rogin\ ;
+幼児 > youji\ ;
+農家 > nouka\ ;
+草履 > zouri\ ;
+保険 > hoken\ ;
+年利 > nenri\ ;
+英書 > eisho\ ;
+六日 > muika\ ;
+分区 > bunku\ ;
+八日 > youka\ ;
+分化 > bunka\ ;
+公方 > kubou\ ;
+横暴 > oubou\ ;
+冥府 > meifu\ ;
+刑具 > keigu\ ;
+巧技 > kougi\ ;
+苦杯 > kuhai\ ;
+英明 > eimei\ ;
+檀家 > danka\ ;
+模本 > mohon\ ;
+入日 > irihi\ ;
+自薦 > jisen\ ;
+尾長 > onaga\ ;
+農婦 > noufu\ ;
+小鬢 > kobin\ ;
+棋道 > kidou\ ;
+判事 > hanji\ ;
+分利 > bunri\ ;
+英断 > eidan\ ;
+傅育 > fuiku\ ;
+横断 > oudan\ ;
+英文 > eibun\ ;
+凡器 > bonki\ ;
+英数 > eisuu\ ;
+横文 > oubun\ ;
+冴寒 > gokan\ ;
+途上 > tojou\ ;
+山車 > dashi\ ;
+布巾 > fukin\ ;
+相場 > souba\ ;
+盛宴 > seien\ ;
+騒音 > souon\ ;
+皆既 > kaiki\ ;
+党是 > touze\ ;
+農奴 > noudo\ ;
+用途 > youto\ ;
+光栄 > kouei\ ;
+茶屋 > chaya\ ;
+芳気 > houki\ ;
+輿望 > yobou\ ;
+農夫 > noufu\ ;
+自著 > jicho\ ;
+児曹 > jisou\ ;
+出前 > demae\ ;
+平価 > heika\ ;
+小馬 > kouma\ ;
+機巧 > kikou\ ;
+刑余 > keiyo\ ;
+荷台 > nidai\ ;
+甘酢 > amazu\ ;
+冬季 > touki\ ;
+苗木 > naegi\ ;
+兵戈 > heika\ ;
+幹事 > kanji\ ;
+駻馬 > kanba\ ;
+画賛 > gasan\ ;
+白旗 > hakki\ ;
+送付 > soufu\ ;
+内応 > naiou\ ;
+凍土 > toudo\ ;
+帯地 > obiji\ ;
+再度 > saido\ ;
+辺土 > hendo\ ;
+尾錠 > bijou\ ;
+刑事 > keiji\ ;
+円弾 > endan\ ;
+目垢 > meaka\ ;
+眼下 > ganka\ ;
+再帰 > saiki\ ;
+冷夏 > reika\ ;
+近古 > kinko\ ;
+己巳 > kishi\ ;
+軽浮 > keifu\ ;
+荒土 > koudo\ ;
+苛斂 > karen\ ;
+転炉 > tenro\ ;
+全戸 > zenko\ ;
+苛政 > kasei\ ;
+画讚 > gasan\ ;
+画讃 > gasan\ ;
+農園 > nouen\ ;
+巻尾 > kanbi\ ;
+盛夏 > seika\ ;
+佳麗 > karei\ ;
+艶然 > enzen\ ;
+英才 > eisai\ ;
+腰部 > youbu\ ;
+軽油 > keiyu\ ;
+幇助 > houjo\ ;
+内帑 > naido\ ;
+画談 > gadan\ ;
+写字 > shaji\ ;
+供養 > kuyou\ ;
+倒語 > tougo\ ;
+発揮 > hakki\ ;
+鬼火 > onibi\ ;
+魚油 > gyoyu\ ;
+帝土 > teido\ ;
+機嫌 > kigen\ ;
+生起 > seiki\ ;
+花梨 > karin\ ;
+兌換 > dakan\ ;
+刀下 > touka\ ;
+魔法 > mahou\ ;
+苦戦 > kusen\ ;
+傷痍 > shoui\ ;
+候補 > kouho\ ;
+常務 > joumu\ ;
+帰参 > kisan\ ;
+左岸 > sagan\ ;
+円居 > madoi\ ;
+皮層 > hisou\ ;
+樹幹 > jukan\ ;
+苦慮 > kuryo\ ;
+馬齢 > barei\ ;
+余齢 > yorei\ ;
+軽機 > keiki\ ;
+痔瘻 > jirou\ ;
+巨富 > kyofu\ ;
+再嫁 > saika\ ;
+内宴 > naien\ ;
+自署 > jisho\ ;
+公庫 > kouko\ ;
+備砲 > bihou\ ;
+公序 > koujo\ ;
+苦情 > kujou\ ;
+茶園 > chaen\ ;
+苦悶 > kumon\ ;
+苦悩 > kunou\ ;
+異臭 > ishuu\ ;
+用語 > yougo\ ;
+左官 > sakan\ ;
+槐樹 > kaiju\ ;
+冗多 > jouta\ ;
+軟派 > nanpa\ ;
+冥土 > meido\ ;
+公布 > koufu\ ;
+異腹 > ifuku\ ;
+先手 > sente\ ;
+公差 > kousa\ ;
+茶器 > chaki\ ;
+臓腑 > zoufu\ ;
+近侍 > kinji\ ;
+鬱滞 > uttai\ ;
+桂馬 > keima\ ;
+近似 > kinji\ ;
+返付 > henpu\ ;
+高祖 > kouso\ ;
+梅酢 > umezu\ ;
+農務 > noumu\ ;
+常備 > joubi\ ;
+苦役 > kueki\ ;
+布団 > futon\ ;
+返事 > henji\ ;
+舌禍 > zekka\ ;
+兵家 > heika\ ;
+近事 > kinji\ ;
+嵐気 > ranki\ ;
+鮮度 > sendo\ ;
+苛性 > kasei\ ;
+梵語 > bongo\ ;
+騰貴 > touki\ ;
+履行 > rikou\ ;
+県下 > kenka\ ;
+内奥 > naiou\ ;
+腕輪 > udewa\ ;
+起電 > kiden\ ;
+師儒 > shiju\ ;
+家鴨 > ahiru\ ;
+寝顔 > negao\ ;
+農具 > nougu\ ;
+市営 > shiei\ ;
+円墳 > enpun\ ;
+色気 > iroke\ ;
+工夫 > koufu\ ;
+辞去 > jikyo\ ;
+転機 > tenki\ ;
+鬼歯 > oniba\ ;
+封鎖 > fuusa\ ;
+英屯 > eiton\ ;
+公安 > kouan\ ;
+尖部 > senbu\ ;
+辭典 > jiten\ ;
+常事 > jouji\ ;
+全家 > zenka\ ;
+相似 > souji\ ;
+偉績 > iseki\ ;
+工場 > kouba\ ;
+発布 > happu\ ;
+帰任 > kinin\ ;
+兄後 > anigo\ ;
+相互 > sougo\ ;
+倶者 > kusha\ ;
+俚謡 > riyou\ ;
+光度 > koudo\ ;
+馳駆 > chiku\ ;
+俚諺 > rigen\ ;
+先度 > sendo\ ;
+俎豆 > sotou\ ;
+冗員 > jouin\ ;
+軍歌 > gunka\ ;
+生蝋 > kirou\ ;
+克己 > kokki\ ;
+内因 > naiin\ ;
+跛行 > hakou\ ;
+盲亀 > mouki\ ;
+師事 > shiji\ ;
+苦寒 > kukan\ ;
+辞典 > jiten\ ;
+疫痢 > ekiri\ ;
+盛儀 > seigi\ ;
+市区 > shiku\ ;
+馬首 > bashu\ ;
+俚言 > rigen\ ;
+余香 > yokou\ ;
+登山 > tozan\ ;
+疵瑕 > shika\ ;
+軍機 > gunki\ ;
+英姿 > eishi\ ;
+冗句 > jouku\ ;
+農事 > nouji\ ;
+権威 > ken''i\ ;
+目下 > mokka\ ;
+嶮岨 > kenso\ ;
+業火 > gouka\ ;
+自社 > jisha\ ;
+疣痔 > iboji\ ;
+余風 > yofuu\ ;
+機動 > kidou\ ;
+余類 > yorui\ ;
+児孫 > jison\ ;
+監事 > kanji\ ;
+馬頭 > batou\ ;
+倹素 > kenso\ ;
+甘藻 > amamo\ ;
+皇妃 > kouhi\ ;
+尾行 > bikou\ ;
+皇女 > koujo\ ;
+家風 > kafuu\ ;
+工員 > kouin\ ;
+兵器 > heiki\ ;
+艶書 > ensho\ ;
+優弧 > yuuko\ ;
+公園 > kouen\ ;
+辞任 > jinin\ ;
+盛事 > seiji\ ;
+辞令 > jirei\ ;
+棉花 > menka\ ;
+機内 > kinai\ ;
+公図 > kouzu\ ;
+兵営 > heiei\ ;
+田舎 > inaka\ ;
+左右 > sayuu\ ;
+機先 > kisen\ ;
+全土 > zendo\ ;
+全図 > zenzu\ ;
+胯間 > kokan\ ;
+異称 > ishou\ ;
+画聖 > gasei\ ;
+公器 > kouki\ ;
+低音 > teion\ ;
+自省 > jisei\ ;
+希代 > kidai\ ;
+辞世 > jisei\ ;
+先婦 > senpu\ ;
+軌条 > kijou\ ;
+小豆 > azuki\ ;
+兵員 > heiin\ ;
+案配 > anbai\ ;
+家電 > kaden\ ;
+内務 > naimu\ ;
+尊貴 > sonki\ ;
+市価 > shika\ ;
+差分 > sabun\ ;
+公営 > kouei\ ;
+内助 > naijo\ ;
+瓦解 > gakai\ ;
+冠位 > kan''i\ ;
+英噸 > eiton\ ;
+梅見 > umemi\ ;
+工務 > koumu\ ;
+模型 > mokei\ ;
+希世 > kisei\ ;
+栄養 > eiyou\ ;
+俘虜 > furyo\ ;
+魔手 > mashu\ ;
+生花 > seika\ ;
+偽版 > gihan\ ;
+低雲 > teiun\ ;
+先妣 > senpi\ ;
+布令 > furei\ ;
+巨利 > kyori\ ;
+白堊 > hakua\ ;
+棋聖 > kisei\ ;
+先夫 > zenpu\ ;
+兼務 > kenmu\ ;
+機体 > kitai\ ;
+甘苦 > kanku\ ;
+香露 > kouro\ ;
+高炉 > kouro\ ;
+登城 > tojou\ ;
+軍旗 > gunki\ ;
+佳醸 > kajou\ ;
+路肩 > roken\ ;
+機会 > kikai\ ;
+似顔 > nigao\ ;
+甲羅 > koura\ ;
+家門 > kamon\ ;
+自由 > jiyuu\ ;
+棄背 > kihai\ ;
+便衣 > ben''i\ ;
+円光 > enkou\ ;
+自用 > jiyou\ ;
+自生 > jisei\ ;
+使途 > shito\ ;
+軽微 > keibi\ ;
+兵匪 > heihi\ ;
+佳酒 > kashu\ ;
+工具 > kougu\ ;
+登坂 > tohan\ ;
+富鉱 > fukou\ ;
+公吏 > kouri\ ;
+内儀 > naigi\ ;
+侮言 > bugen\ ;
+騎行 > kikou\ ;
+輿地 > yochi\ ;
+延々 > en''en\ ;
+棄老 > kirou\ ;
+芸子 > geiko\ ;
+背離 > hairi\ ;
+左傾 > sakei\ ;
+保菌 > hokin\ ;
+機上 > kijou\ ;
+公印 > kouin\ ;
+輔導 > hodou\ ;
+八卦 > hakke\ ;
+軽度 > keido\ ;
+巴人 > hajin\ ;
+画紙 > gashi\ ;
+英名 > eimei\ ;
+腹腔 > fukko\ ;
+公募 > koubo\ ;
+公務 > koumu\ ;
+番目 > banme\ ;
+党員 > touin\ ;
+内侍 > naiji\ ;
+兼備 > kenbi\ ;
+鬼才 > kisai\ ;
+寄金 > kikin\ ;
+走路 > souro\ ;
+魔弾 > madan\ ;
+岡目 > okame\ ;
+官需 > kanju\ ;
+儀形 > gikei\ ;
+優婉 > yuuen\ ;
+瑞雲 > zuiun\ ;
+高温 > kouon\ ;
+尾花 > obana\ ;
+対話 > taiwa\ ;
+伝馬 > tenma\ ;
+轍叉 > tessa\ ;
+依託 > itaku\ ;
+脳裡 > nouri\ ;
+権化 > gonge\ ;
+脳裏 > nouri\ ;
+苦吟 > kugin\ ;
+芸妓 > geigi\ ;
+路線 > rosen\ ;
+赤身 > akami\ ;
+兵備 > heibi\ ;
+内事 > naiji\ ;
+甘美 > kanbi\ ;
+富農 > funou\ ;
+修羅 > shura\ ;
+芥子 > keshi\ ;
+疑点 > giten\ ;
+工事 > kouji\ ;
+樽俎 > sonso\ ;
+侍講 > jikou\ ;
+軍手 > gunte\ ;
+権利 > kenri\ ;
+会飲 > kaiin\ ;
+典侍 > tenji\ ;
+公儀 > kougi\ ;
+安静 > ansei\ ;
+駅路 > ekiro\ ;
+儒官 > jukan\ ;
+入内 > judai\ ;
+党務 > toumu\ ;
+具体 > gutai\ ;
+発句 > hokku\ ;
+併起 > heiki\ ;
+鬱憤 > uppun\ ;
+苦労 > kurou\ ;
+佳趣 > kashu\ ;
+様子 > yousu\ ;
+保育 > hoiku\ ;
+画稿 > gakou\ ;
+山窩 > sanka\ ;
+例話 > reiwa\ ;
+充員 > juuin\ ;
+花壇 > kadan\ ;
+全備 > zenbi\ ;
+党利 > touri\ ;
+踏破 > touha\ ;
+孤高 > kokou\ ;
+自炊 > jisui\ ;
+業果 > gouka\ ;
+佳賓 > kahin\ ;
+生糸 > kiito\ ;
+兵事 > heiji\ ;
+先古 > senko\ ;
+模写 > mosha\ ;
+僧徒 > souto\ ;
+胃鏡 > ikyou\ ;
+高歌 > kouka\ ;
+例規 > reiki\ ;
+高次 > kouji\ ;
+疎漏 > sorou\ ;
+安閑 > ankan\ ;
+樹上 > jujou\ ;
+余輩 > yohai\ ;
+梅花 > baika\ ;
+儀容 > giyou\ ;
+田租 > denso\ ;
+僧庵 > souan\ ;
+馬車 > basha\ ;
+公事 > kouji\ ;
+先務 > senmu\ ;
+俺等 > orera\ ;
+富貴 > fukki\ ;
+寡言 > kagen\ ;
+首都 > shuto\ ;
+模倣 > mohou\ ;
+富豪 > fugou\ ;
+饑饉 > kikin\ ;
+馬蹄 > batei\ ;
+践祚 > senso\ ;
+路程 > rotei\ ;
+寄贈 > kizou\ ;
+体躯 > taiku\ ;
+痴愚 > chigu\ ;
+背部 > haibu\ ;
+保線 > hosen\ ;
+英主 > eishu\ ;
+季題 > kidai\ ;
+元利 > genri\ ;
+併記 > heiki\ ;
+倫理 > rinri\ ;
+車庫 > shako\ ;
+股間 > kokan\ ;
+産科 > sanka\ ;
+寓話 > guuwa\ ;
+佳言 > kagen\ ;
+自浄 > jijou\ ;
+疏水 > sosui\ ;
+疎水 > sosui\ ;
+余財 > yozai\ ;
+脾臟 > hizou\ ;
+子馬 > kouma\ ;
+脾臓 > hizou\ ;
+僧尼 > souni\ ;
+発作 > hossa\ ;
+転嫁 > tenka\ ;
+自治 > jichi\ ;
+癒合 > yugou\ ;
+充備 > juubi\ ;
+僧寺 > souji\ ;
+脾腫 > hishu\ ;
+高架 > kouka\ ;
+尾籠 > birou\ ;
+痛手 > itade\ ;
+白亜 > hakua\ ;
+僧家 > souka\ ;
+家財 > kazai\ ;
+転婆 > tenba\ ;
+健歩 > kenpo\ ;
+鬼子 > onigo\ ;
+楊枝 > youji\ ;
+展示 > tenji\ ;
+官途 > kanto\ ;
+自民 > jimin\ ;
+保管 > hokan\ ;
+栄転 > eiten\ ;
+検波 > kenpa\ ;
+仮題 > kadai\ ;
+字面 > jimen\ ;
+路盤 > roban\ ;
+元価 > genka\ ;
+舵手 > dashu\ ;
+宏遠 > kouen\ ;
+子音 > shiin\ ;
+艦尾 > kanbi\ ;
+余談 > yodan\ ;
+儀型 > gikei\ ;
+富裕 > fuyuu\ ;
+構図 > kouzu\ ;
+産着 > ubugi\ ;
+偏波 > henha\ ;
+驚異 > kyoui\ ;
+偽本 > gihon\ ;
+艶姿 > enshi\ ;
+優利 > yuuri\ ;
+極意 > gokui\ ;
+仮面 > kamen\ ;
+偽書 > gisho\ ;
+岡湯 > okayu\ ;
+棋界 > kikai\ ;
+保税 > hozei\ ;
+余計 > yokei\ ;
+僅差 > kinsa\ ;
+兄事 > keiji\ ;
+躯幹 > kukan\ ;
+傾度 > keido\ ;
+俯瞰 > fukan\ ;
+校規 > kouki\ ;
+臨機 > rinki\ ;
+肩部 > kenbu\ ;
+艇庫 > teiko\ ;
+尊者 > sonja\ ;
+跡目 > atome\ ;
+路用 > royou\ ;
+家訓 > kakun\ ;
+字間 > jikan\ ;
+家計 > kakei\ ;
+花冠 > kakan\ ;
+低語 > teigo\ ;
+実費 > jippi\ ;
+傾差 > keisa\ ;
+男猫 > oneko\ ;
+甦生 > sosei\ ;
+起草 > kisou\ ;
+架間 > kakan\ ;
+余裕 > yoyuu\ ;
+嵩呼 > suuko\ ;
+官費 > kanpi\ ;
+養鯉 > youri\ ;
+軍夫 > gunpu\ ;
+疎林 > sorin\ ;
+家裁 > kasai\ ;
+俳画 > haiga\ ;
+車夫 > shafu\ ;
+他面 > tamen\ ;
+小紋 > komon\ ;
+桃花 > touka\ ;
+生理 > seiri\ ;
+腋窩 > ekika\ ;
+付随 > fuzui\ ;
+高批 > kouhi\ ;
+家蝿 > iebae\ ;
+検査 > kensa\ ;
+備忘 > bibou\ ;
+小粋 > koiki\ ;
+実記 > jikki\ ;
+自書 > jisho\ ;
+貫首 > kanju\ ;
+偉業 > igyou\ ;
+人馬 > jinba\ ;
+億劫 > okkuu\ ;
+貴顕 > kiken\ ;
+侍者 > jisha\ ;
+自暴 > jibou\ ;
+便秘 > benpi\ ;
+官話 > kanwa\ ;
+崎崖 > kigai\ ;
+疎放 > sohou\ ;
+余薫 > yokun\ ;
+自明 > jimei\ ;
+臨時 > rinji\ ;
+餌食 > ejiki\ ;
+軍器 > gunki\ ;
+定規 > jougi\ ;
+船尾 > senbi\ ;
+儀刑 > gikei\ ;
+今際 > imawa\ ;
+億円 > okuen\ ;
+儀刀 > gitou\ ;
+守護 > shugo\ ;
+会費 > kaihi\ ;
+岩根 > iwane\ ;
+饋還 > kikan\ ;
+寡聞 > kabun\ ;
+高恩 > kouon\ ;
+男滝 > odaki\ ;
+転化 > tenka\ ;
+儀典 > giten\ ;
+瓜科 > urika\ ;
+軽侮 > keibu\ ;
+家蔵 > kazou\ ;
+供米 > kumai\ ;
+栄螺 > sazae\ ;
+軟化 > nanka\ ;
+値段 > nedan\ ;
+孤軍 > kogun\ ;
+偽悪 > giaku\ ;
+異朝 > ichou\ ;
+佳肴 > kakou\ ;
+疲弊 > hihei\ ;
+会議 > kaigi\ ;
+甘煮 > amani\ ;
+偽性 > gisei\ ;
+来駕 > raiga\ ;
+画法 > gahou\ ;
+寄航 > kikou\ ;
+高座 > kouza\ ;
+高度 > koudo\ ;
+良医 > ryoui\ ;
+伝記 > denki\ ;
+会話 > kaiwa\ ;
+余芳 > yohou\ ;
+乱麻 > ranma\ ;
+傘寿 > sanju\ ;
+山河 > sanga\ ;
+尾状 > bijou\ ;
+耳順 > jijun\ ;
+伽藍 > garan\ ;
+賛辞 > sanji\ ;
+軍医 > gun''i\ ;
+専科 > senka\ ;
+異教 > ikyou\ ;
+儀仗 > gijou\ ;
+守衛 > shuei\ ;
+富者 > fusha\ ;
+会規 > kaiki\ ;
+軍務 > gunmu\ ;
+産湯 > ubuyu\ ;
+香華 > kouge\ ;
+自戒 > jikai\ ;
+尾燈 > bitou\ ;
+供祭 > gusai\ ;
+賓辞 > hinji\ ;
+胚芽 > haiga\ ;
+起算 > kisan\ ;
+舞子 > maiko\ ;
+佳編 > kahen\ ;
+自慢 > jiman\ ;
+転位 > ten''i\ ;
+飢饉 > kikin\ ;
+楽器 > gakki\ ;
+疑念 > ginen\ ;
+寺社 > jisha\ ;
+余聞 > yobun\ ;
+交附 > koufu\ ;
+学課 > gakka\ ;
+僭位 > sen''i\ ;
+付近 > fukin\ ;
+尾灯 > bitou\ ;
+馬耕 > bakou\ ;
+瓜田 > kaden\ ;
+踏査 > tousa\ ;
+高宜 > kougi\ ;
+起稿 > kikou\ ;
+画楼 > garou\ ;
+脱皮 > dappi\ ;
+畏服 > ifuku\ ;
+来院 > raiin\ ;
+侍祭 > jisai\ ;
+軍備 > gunbi\ ;
+産気 > sanke\ ;
+楊子 > youji\ ;
+小異 > shoui\ ;
+舞妓 > maiko\ ;
+棄死 > kishi\ ;
+余罪 > yozai\ ;
+産毛 > ubuge\ ;
+業因 > gouin\ ;
+例示 > reiji\ ;
+家老 > karou\ ;
+生気 > seiki\ ;
+事項 > jikou\ ;
+腐爛 > furan\ ;
+小瓶 > kobin\ ;
+佳篇 > kahen\ ;
+脱疽 > dasso\ ;
+岩戸 > iwato\ ;
+寿盃 > juhai\ ;
+生母 > seibo\ ;
+自弁 > jiben\ ;
+番手 > bante\ ;
+偸安 > touan\ ;
+小琴 > ogoto\ ;
+俄然 > gazen\ ;
+棄権 > kiken\ ;
+豪飲 > gouin\ ;
+亀頭 > kitou\ ;
+画板 > gaban\ ;
+字訓 > jikun\ ;
+梳毛 > somou\ ;
+飛電 > hiden\ ;
+二階 > nikai\ ;
+画材 > gazai\ ;
+字解 > jikai\ ;
+軍事 > gunji\ ;
+理財 > rizai\ ;
+画本 > gahon\ ;
+画期 > kakki\ ;
+自工 > jikou\ ;
+胃腸 > ichou\ ;
+校紀 > kouki\ ;
+畸形 > kikei\ ;
+代議 > daigi\ ;
+仮言 > kagen\ ;
+走破 > souha\ ;
+債務 > saimu\ ;
+身分 > mibun\ ;
+個条 > kajou\ ;
+赤禍 > sekka\ ;
+予防 > yobou\ ;
+偉徳 > itoku\ ;
+賄賂 > wairo\ ;
+育英 > ikuei\ ;
+小犬 > koinu\ ;
+栄耀 > eiyou\ ;
+由来 > yurai\ ;
+異心 > ishin\ ;
+船医 > sen''i\ ;
+椰子 > yashi\ ;
+家紋 > kamon\ ;
+家系 > kakei\ ;
+異形 > igyou\ ;
+伽羅 > kyara\ ;
+肺腑 > haifu\ ;
+仏貨 > fukka\ ;
+東都 > touto\ ;
+東部 > toubu\ ;
+仮装 > kasou\ ;
+自尽 > jijin\ ;
+理論 > riron\ ;
+偏差 > hensa\ ;
+尊父 > sonpu\ ;
+自尊 > jison\ ;
+偽報 > gihou\ ;
+定義 > teigi\ ;
+備品 > bihin\ ;
+貨車 > kasha\ ;
+俗気 > zokke\ ;
+自害 > jigai\ ;
+貸費 > taihi\ ;
+寄稿 > kikou\ ;
+留意 > ryuui\ ;
+何箇 > nanko\ ;
+個数 > kosuu\ ;
+寝相 > nezou\ ;
+颶風 > gufuu\ ;
+貴賤 > kisen\ ;
+自存 > jison\ ;
+桂皮 > keihi\ ;
+飲酒 > inshu\ ;
+貴賓 > kihin\ ;
+亨運 > kouun\ ;
+理解 > rikai\ ;
+貴賎 > kisen\ ;
+起用 > kiyou\ ;
+何等 > nanra\ ;
+販路 > hanro\ ;
+期首 > kishu\ ;
+俗歌 > zokka\ ;
+乗馬 > jouba\ ;
+付言 > fugen\ ;
+赤目 > akame\ ;
+介護 > kaigo\ ;
+他言 > tagon\ ;
+亀鑑 > kikan\ ;
+脳炎 > nouen\ ;
+検字 > kenji\ ;
+五重 > gojuu\ ;
+賀詞 > gashi\ ;
+舞台 > butai\ ;
+朝餉 > asage\ ;
+寡男 > yamoo\ ;
+他見 > taken\ ;
+舎営 > shaei\ ;
+伎芸 > gigei\ ;
+疎外 > sogai\ ;
+偶因 > guuin\ ;
+安置 > anchi\ ;
+貨財 > kazai\ ;
+傍受 > bouju\ ;
+胴着 > dougi\ ;
+家禽 > kakin\ ;
+岩屋 > iwaya\ ;
+二重 > futae\ ;
+肥育 > hiiku\ ;
+小滝 > otaki\ ;
+予鈴 > yorei\ ;
+偽善 > gizen\ ;
+梧桐 > gotou\ ;
+貢賦 > koufu\ ;
+画才 > gasai\ ;
+画手 > gashu\ ;
+官紀 > kanki\ ;
+貴誌 > kishi\ ;
+風韻 > fuuin\ ;
+畳字 > jouji\ ;
+他行 > takou\ ;
+股肱 > kokou\ ;
+財貨 > zaika\ ;
+異宗 > ishuu\ ;
+互選 > gosen\ ;
+自壊 > jikai\ ;
+棄損 > kison\ ;
+風靡 > fuubi\ ;
+養護 > yougo\ ;
+貝貨 > baika\ ;
+伎能 > ginou\ ;
+未開 > mikai\ ;
+個所 > kasho\ ;
+貴覧 > kiran\ ;
+走狗 > souku\ ;
+風雲 > fuuun\ ;
+乖離 > kairi\ ;
+疲労 > hirou\ ;
+仮葬 > kasou\ ;
+偽名 > gimei\ ;
+人語 > jingo\ ;
+風雅 > fuuga\ ;
+五輪 > gorin\ ;
+偽史 > gishi\ ;
+期限 > kigen\ ;
+予選 > yosen\ ;
+乗除 > joujo\ ;
+偏奇 > henki\ ;
+主馬 > shume\ ;
+保有 > hoyuu\ ;
+自在 > jizai\ ;
+高利 > kouri\ ;
+期間 > kikan\ ;
+起点 > kiten\ ;
+二輪 > nirin\ ;
+朝間 > asama\ ;
+脳波 > nouha\ ;
+実科 > jikka\ ;
+家相 > kasou\ ;
+来賀 > raiga\ ;
+屠所 > tosho\ ;
+疑問 > gimon\ ;
+舎利 > shari\ ;
+寄生 > kisei\ ;
+二軍 > nigun\ ;
+倒影 > touei\ ;
+他薦 > tazen\ ;
+個性 > kosei\ ;
+駄犬 > daken\ ;
+飛車 > hisha\ ;
+屹度 > kitto\ ;
+作用 > sayou\ ;
+倭寇 > wakou\ ;
+小歌 > kouta\ ;
+主音 > shuon\ ;
+異境 > ikyou\ ;
+容疑 > yougi\ ;
+画廊 > garou\ ;
+余生 > yosei\ ;
+美麗 > birei\ ;
+定礎 > teiso\ ;
+偏土 > hendo\ ;
+岩場 > iwaba\ ;
+自問 > jimon\ ;
+偽兵 > gihei\ ;
+交誼 > kougi\ ;
+腕木 > udegi\ ;
+傘下 > sanka\ ;
+健否 > kenpi\ ;
+画師 > gashi\ ;
+画帖 > gajou\ ;
+家産 > kasan\ ;
+画工 > gakou\ ;
+起源 > kigen\ ;
+羽音 > haoto\ ;
+高価 > kouka\ ;
+倉庫 > souko\ ;
+果菜 > kasai\ ;
+机辺 > kihen\ ;
+対比 > taihi\ ;
+異国 > ikoku\ ;
+村費 > sonpi\ ;
+賢者 > kenja\ ;
+本部 > honbu\ ;
+互譲 > gojou\ ;
+臓器 > zouki\ ;
+対欧 > taiou\ ;
+老躯 > rouku\ ;
+産後 > sango\ ;
+用度 > youdo\ ;
+書院 > shoin\ ;
+桐油 > touyu\ ;
+未遂 > misui\ ;
+生徒 > seito\ ;
+生後 > seigo\ ;
+条規 > jouki\ ;
+脚気 > kakke\ ;
+高下 > kouge\ ;
+自動 > jidou\ ;
+王道 > oudou\ ;
+賛美 > sanbi\ ;
+腐敗 > fuhai\ ;
+蹄叉 > teisa\ ;
+争議 > sougi\ ;
+木通 > akebi\ ;
+仕舞 > jimai\ ;
+越権 > ekken\ ;
+跋扈 > bakko\ ;
+余燼 > yojin\ ;
+個展 > koten\ ;
+自前 > jimae\ ;
+自制 > jisei\ ;
+健児 > kenji\ ;
+胃痛 > itsuu\ ;
+予謀 > yobou\ ;
+骨化 > kokka\ ;
+小枝 > koeda\ ;
+胃病 > ibyou\ ;
+自分 > jibun\ ;
+自刃 > jijin\ ;
+起毛 > kimou\ ;
+瑪瑙 > menou\ ;
+風邪 > fuuja\ ;
+起死 > kishi\ ;
+架線 > kasen\ ;
+上馬 > jouba\ ;
+作為 > sakui\ ;
+背理 > hairi\ ;
+安眠 > anmin\ ;
+自党 > jitou\ ;
+尿意 > nyoui\ ;
+望遠 > bouen\ ;
+田家 > denka\ ;
+予言 > yogen\ ;
+九輪 > kurin\ ;
+乱費 > ranpi\ ;
+他聞 > tabun\ ;
+未踏 > mitou\ ;
+争覇 > souha\ ;
+寝汗 > nease\ ;
+健保 > kenpo\ ;
+対案 > taian\ ;
+瑕疵 > kashi\ ;
+予見 > yoken\ ;
+下風 > kafuu\ ;
+他者 > tasha\ ;
+畿内 > kinai\ ;
+仮納 > kanou\ ;
+猪首 > ikubi\ ;
+定理 > teiri\ ;
+不順 > fujun\ ;
+一首 > isshu\ ;
+産屋 > ubuya\ ;
+仮粧 > kewai\ ;
+豪語 > gougo\ ;
+類韻 > ruiin\ ;
+類音 > ruion\ ;
+寒波 > kanpa\ ;
+用字 > youji\ ;
+学科 > gakka\ ;
+貧苦 > hinku\ ;
+男女 > danjo\ ;
+考課 > kouka\ ;
+根気 > konki\ ;
+赤毛 > akage\ ;
+一飯 > ippan\ ;
+画壇 > gadan\ ;
+寄港 > kikou\ ;
+香煙 > kouen\ ;
+美風 > bifuu\ ;
+飛行 > hikou\ ;
+予行 > yokou\ ;
+京華 > keika\ ;
+安産 > anzan\ ;
+自体 > jitai\ ;
+一風 > ippuu\ ;
+美顔 > bigan\ ;
+生家 > seika\ ;
+実父 > jippu\ ;
+自伝 > jiden\ ;
+聖者 > seija\ ;
+便所 > benjo\ ;
+画報 > gahou\ ;
+自任 > jinin\ ;
+世間 > seken\ ;
+一頭 > ittou\ ;
+甲夜 > kouya\ ;
+自今 > jikon\ ;
+不随 > fuzui\ ;
+香炉 > kouro\ ;
+主部 > shubu\ ;
+一項 > ikkou\ ;
+騎手 > kishu\ ;
+田夫 > denpu\ ;
+賦税 > fuzei\ ;
+飛蝗 > batta\ ;
+璽書 > jisho\ ;
+尻座 > kouza\ ;
+貴翰 > kikan\ ;
+理系 > rikei\ ;
+自乗 > jijou\ ;
+産婦 > sanpu\ ;
+下限 > kagen\ ;
+下降 > kakou\ ;
+上院 > jouin\ ;
+自主 > jishu\ ;
+寸暇 > sunka\ ;
+架空 > kakuu\ ;
+産婆 > sanba\ ;
+棋士 > kishi\ ;
+豌豆 > endou\ ;
+下阪 > gehan\ ;
+寸時 > sunji\ ;
+梵字 > bonji\ ;
+甘子 > amago\ ;
+体温 > taion\ ;
+便意 > ben''i\ ;
+仁義 > jingi\ ;
+宛然 > enzen\ ;
+作法 > sahou\ ;
+検事 > kenji\ ;
+主辞 > shuji\ ;
+暴飲 > bouin\ ;
+寝棺 > nekan\ ;
+果糖 > katou\ ;
+低温 > teion\ ;
+走査 > sousa\ ;
+一階 > ikkai\ ;
+本訴 > honso\ ;
+一隊 > ittai\ ;
+曹達 > souda\ ;
+畸人 > kijin\ ;
+貧者 > hinja\ ;
+俐巧 > rikou\ ;
+例時 > reiji\ ;
+家法 > kahou\ ;
+田圃 > denpo\ ;
+屠場 > tojou\ ;
+付箋 > fusen\ ;
+未見 > miken\ ;
+耳腔 > jikou\ ;
+一閃 > issen\ ;
+少慰 > shoui\ ;
+侮慢 > buman\ ;
+作歌 > sakka\ ;
+桃李 > touri\ ;
+校歌 > kouka\ ;
+義金 > gikin\ ;
+保守 > hoshu\ ;
+風諭 > fuuyu\ ;
+世銀 > segin\ ;
+保存 > hozon\ ;
+肺炎 > haien\ ;
+甘夢 > kanmu\ ;
+尤度 > yuudo\ ;
+耽美 > tanbi\ ;
+曠野 > kouya\ ;
+貴紙 > kishi\ ;
+月賦 > geppu\ ;
+展墓 > tenbo\ ;
+便座 > benza\ ;
+五芒 > gobou\ ;
+珪素 > keiso\ ;
+核果 > kakka\ ;
+尊意 > son''i\ ;
+香油 > kouyu\ ;
+用器 > youki\ ;
+案文 > anmon\ ;
+仮睡 > kasui\ ;
+朗詠 > rouei\ ;
+倒句 > touku\ ;
+倒叙 > toujo\ ;
+仮眠 > kamin\ ;
+貴簡 > kikan\ ;
+臍下 > seika\ ;
+定温 > teion\ ;
+仮相 > kasou\ ;
+五臓 > gozou\ ;
+背泳 > haiei\ ;
+香気 > kouki\ ;
+亡者 > mouja\ ;
+膠化 > kouka\ ;
+頭韻 > touin\ ;
+佳景 > kakei\ ;
+尖度 > sendo\ ;
+他社 > tasha\ ;
+豪華 > gouka\ ;
+富有 > fuyuu\ ;
+世途 > seito\ ;
+仮痘 > katou\ ;
+万里 > banri\ ;
+理知 > richi\ ;
+丘辺 > okabe\ ;
+腹囲 > fukui\ ;
+佐様 > sayou\ ;
+仏祖 > busso\ ;
+駄文 > dabun\ ;
+義軍 > gigun\ ;
+倍加 > baika\ ;
+倭人 > wajin\ ;
+七重 > nanae\ ;
+下郎 > gerou\ ;
+上部 > joubu\ ;
+頓馬 > tonma\ ;
+三部 > sanbu\ ;
+貴種 > kishu\ ;
+不遜 > fuson\ ;
+射影 > shaei\ ;
+不遇 > fuguu\ ;
+一重 > hitoe\ ;
+主語 > shugo\ ;
+便宜 > bengi\ ;
+騎射 > kisha\ ;
+寄書 > kisho\ ;
+不逞 > futei\ ;
+小川 > ogawa\ ;
+対応 > taiou\ ;
+不退 > futai\ ;
+美酒 > bishu\ ;
+瑞気 > zuiki\ ;
+主訴 > shuso\ ;
+暗雲 > an''un\ ;
+貴社 > kisha\ ;
+男児 > danji\ ;
+二者 > nisha\ ;
+画像 > gazou\ ;
+他県 > taken\ ;
+俳味 > haimi\ ;
+佚書 > issho\ ;
+婦選 > fusen\ ;
+用務 > youmu\ ;
+婦道 > fudou\ ;
+村翁 > sonou\ ;
+安泰 > antai\ ;
+肥満 > himan\ ;
+下輩 > gehai\ ;
+家来 > kerai\ ;
+対座 > taiza\ ;
+値上 > neage\ ;
+甘味 > kanmi\ ;
+俳句 > haiku\ ;
+一遍 > ippen\ ;
+老舗 > rouho\ ;
+暗闘 > antou\ ;
+書記 > shoki\ ;
+下車 > gesha\ ;
+少尉 > shoui\ ;
+甚句 > jinku\ ;
+家書 > kasho\ ;
+些細 > sasai\ ;
+理由 > riyuu\ ;
+人祖 > jinso\ ;
+小尉 > shoui\ ;
+校旗 > kouki\ ;
+乱舞 > ranbu\ ;
+五線 > gosen\ ;
+甘受 > kanju\ ;
+一辺 > ippen\ ;
+侍従 > jijuu\ ;
+孤灯 > kotou\ ;
+代理 > dairi\ ;
+貢租 > kouso\ ;
+娃鬟 > aikan\ ;
+会派 > kaiha\ ;
+子犬 > koinu\ ;
+聯珠 > renju\ ;
+用具 > yougu\ ;
+画会 > gakai\ ;
+他界 > takai\ ;
+五絃 > gogen\ ;
+小字 > koaza\ ;
+屋号 > yagou\ ;
+屋台 > yatai\ ;
+尊家 > sonka\ ;
+一転 > itten\ ;
+画人 > gajin\ ;
+題辞 > daiji\ ;
+一軒 > ikken\ ;
+実梅 > miume\ ;
+個体 > kotai\ ;
+騎士 > kishi\ ;
+対峙 > taiji\ ;
+産児 > sanji\ ;
+路傍 > robou\ ;
+本舗 > honpo\ ;
+群議 > gungi\ ;
+不買 > fubai\ ;
+家政 > kasei\ ;
+下賤 > gesen\ ;
+寝息 > neiki\ ;
+不貞 > futei\ ;
+下賜 > kashi\ ;
+下賎 > gesen\ ;
+枯燥 > kosou\ ;
+個人 > kojin\ ;
+木舞 > komai\ ;
+使徒 > shito\ ;
+老翁 > rouou\ ;
+羽蟻 > haari\ ;
+寛恕 > kanjo\ ;
+費用 > hiyou\ ;
+頸部 > keibu\ ;
+代父 > daifu\ ;
+貫目 > kanme\ ;
+小委 > shoui\ ;
+義訓 > gikun\ ;
+予納 > yonou\ ;
+万貨 > banka\ ;
+世論 > yoron\ ;
+豊艶 > houen\ ;
+起工 > kikou\ ;
+板目 > itame\ ;
+頭重 > zuomo\ ;
+梅園 > baien\ ;
+貴男 > takao\ ;
+定木 > jougi\ ;
+定期 > teiki\ ;
+小売 > kouri\ ;
+美貌 > bibou\ ;
+小声 > kogoe\ ;
+桂庵 > keian\ ;
+一貫 > ikkan\ ;
+上議 > jougi\ ;
+生保 > seiho\ ;
+便器 > benki\ ;
+与論 > yoron\ ;
+未聞 > mimon\ ;
+音韻 > on''in\ ;
+用事 > youji\ ;
+景雲 > keiun\ ;
+頭部 > toubu\ ;
+仔犬 > koinu\ ;
+二等 > nitou\ ;
+罪過 > zaika\ ;
+上諭 > jouyu\ ;
+俗化 > zokka\ ;
+字源 > jigen\ ;
+予算 > yosan\ ;
+類語 > ruigo\ ;
+路上 > rojou\ ;
+本義 > hongi\ ;
+賀状 > gajou\ ;
+定時 > teiji\ ;
+棄世 > kisei\ ;
+豆腐 > toufu\ ;
+駄弁 > daben\ ;
+婦警 > fukei\ ;
+起居 > kikyo\ ;
+獄衣 > gokui\ ;
+板画 > hanga\ ;
+不言 > fugen\ ;
+住持 > juuji\ ;
+体技 > taigi\ ;
+保冷 > horei\ ;
+余憤 > yofun\ ;
+上訴 > jouso\ ;
+上記 > jouki\ ;
+余慶 > yokei\ ;
+作意 > sakui\ ;
+保全 > hozen\ ;
+二種 > nishu\ ;
+果然 > kazen\ ;
+不要 > fuyou\ ;
+音階 > onkai\ ;
+美談 > bidan\ ;
+家憲 > kaken\ ;
+予稿 > yokou\ ;
+導因 > douin\ ;
+代演 > daien\ ;
+余情 > yojou\ ;
+寡居 > kakyo\ ;
+犬馬 > kenba\ ;
+餓狼 > garou\ ;
+尼僧 > nisou\ ;
+保健 > hoken\ ;
+翡翠 > hisui\ ;
+枯淡 > kotan\ ;
+頚部 > keibu\ ;
+未練 > miren\ ;
+一計 > ikkei\ ;
+美観 > bikan\ ;
+預金 > yokin\ ;
+余念 > yonen\ ;
+下行 > kakou\ ;
+題詠 > daiei\ ;
+木綿 > momen\ ;
+丹花 > tanka\ ;
+一見 > ikken\ ;
+丹色 > niiro\ ;
+王統 > outou\ ;
+会期 > kaiki\ ;
+封土 > houdo\ ;
+趣味 > shumi\ ;
+賢母 > kenbo\ ;
+暗転 > anten\ ;
+未納 > minou\ ;
+対坐 > taiza\ ;
+余弦 > yogen\ ;
+議題 > gidai\ ;
+聖火 > seika\ ;
+小唄 > kouta\ ;
+余弊 > yohei\ ;
+腐刑 > fukei\ ;
+佳容 > kayou\ ;
+家従 > kajuu\ ;
+赤字 > akaji\ ;
+養父 > youfu\ ;
+来由 > raiyu\ ;
+予知 > yochi\ ;
+仮死 > kashi\ ;
+一行 > ikkou\ ;
+便利 > benri\ ;
+仮歯 > kashi\ ;
+根子 > nekko\ ;
+寸土 > sundo\ ;
+何度 > nando\ ;
+二相 > nisou\ ;
+胡座 > agura\ ;
+賛歌 > sanka\ ;
+珊瑚 > sango\ ;
+案外 > angai\ ;
+事相 > jisou\ ;
+家庭 > katei\ ;
+枯死 > koshi\ ;
+脅威 > kyoui\ ;
+曳航 > eikou\ ;
+理法 > rihou\ ;
+風紀 > fuuki\ ;
+代母 > daibo\ ;
+瓦全 > gazen\ ;
+家常 > kajou\ ;
+人為 > jin''i\ ;
+伝播 > denpa\ ;
+罵言 > bagen\ ;
+騎兵 > kihei\ ;
+低度 > teido\ ;
+桑園 > souen\ ;
+互用 > goyou\ ;
+主義 > shugi\ ;
+条理 > jouri\ ;
+小勢 > kozei\ ;
+寄寓 > kiguu\ ;
+尊卑 > sonpi\ ;
+学期 > gakki\ ;
+二番 > niban\ ;
+時限 > jigen\ ;
+背後 > haigo\ ;
+牡鹿 > ojika\ ;
+企望 > kibou\ ;
+本科 > honka\ ;
+果汁 > kajuu\ ;
+馬屋 > umaya\ ;
+駅夫 > ekifu\ ;
+伝授 > denju\ ;
+事由 > jiyuu\ ;
+俎上 > sojou\ ;
+小判 > koban\ ;
+乾皮 > kanpi\ ;
+羽翼 > uyoku\ ;
+枝毛 > edage\ ;
+寿司 > sushi\ ;
+作家 > sakka\ ;
+首座 > shuza\ ;
+普選 > fusen\ ;
+首府 > shufu\ ;
+亡父 > boufu\ ;
+普遍 > fuhen\ ;
+余寒 > yokan\ ;
+時間 > jikan\ ;
+封印 > fuuin\ ;
+譜面 > fumen\ ;
+任期 > ninki\ ;
+赭土 > shado\ ;
+家屋 > kaoku\ ;
+家居 > kakyo\ ;
+讚辞 > sanji\ ;
+聖油 > seiyu\ ;
+腐乱 > furan\ ;
+専務 > senmu\ ;
+猟虎 > rakko\ ;
+普辺 > fuhen\ ;
+寝坊 > nebou\ ;
+飴煮 > ameni\ ;
+枢機 > suuki\ ;
+群舞 > gunbu\ ;
+根基 > konki\ ;
+住居 > sumai\ ;
+胃弱 > ijaku\ ;
+伝手 > tsute\ ;
+宵寝 > yoine\ ;
+宣布 > senpu\ ;
+足下 > sokka\ ;
+小僧 > kozou\ ;
+宝庫 > houko\ ;
+順路 > junro\ ;
+上荷 > uwani\ ;
+家宝 > kahou\ ;
+射利 > shari\ ;
+猛虎 > mouko\ ;
+字書 > jisho\ ;
+一葦 > ichii\ ;
+宮居 > miyai\ ;
+赤地 > akaji\ ;
+佐官 > sakan\ ;
+脱兎 > datto\ ;
+聖母 > seibo\ ;
+羽織 > haori\ ;
+腋下 > ekika\ ;
+義肢 > gishi\ ;
+騎乗 > kijou\ ;
+侍史 > jishi\ ;
+官府 > kanpu\ ;
+未知 > michi\ ;
+暗視 > anshi\ ;
+林檎 > ringo\ ;
+代案 > daian\ ;
+聖歌 > seika\ ;
+今次 > konji\ ;
+貴殿 > kiden\ ;
+下船 > gesen\ ;
+事犯 > jihan\ ;
+首尾 > shubi\ ;
+越冬 > ettou\ ;
+安心 > anjin\ ;
+献花 > kenka\ ;
+耳漏 > jirou\ ;
+賜暇 > shika\ ;
+一茎 > ikkei\ ;
+起原 > kigen\ ;
+胸囲 > kyoui\ ;
+字数 > jisuu\ ;
+貪汚 > tan''o\ ;
+班次 > hanji\ ;
+下腿 > katai\ ;
+餓死 > gashi\ ;
+星雲 > seiun\ ;
+寿像 > juzou\ ;
+価値 > kachi\ ;
+不能 > funou\ ;
+妖魔 > youma\ ;
+環化 > kanka\ ;
+一艘 > issou\ ;
+来演 > raien\ ;
+嫌疑 > kengi\ ;
+起動 > kidou\ ;
+仮数 > kasuu\ ;
+余塵 > yojin\ ;
+普賢 > fugen\ ;
+一般 > ippan\ ;
+休意 > kyuui\ ;
+養母 > youbo\ ;
+家声 > kasei\ ;
+実家 > jikka\ ;
+下肢 > kashi\ ;
+預言 > yogen\ ;
+一致 > itchi\ ;
+駅員 > ekiin\ ;
+会得 > etoku\ ;
+寝台 > nedai\ ;
+下聞 > kabun\ ;
+佳品 > kahin\ ;
+寡占 > kasen\ ;
+不老 > furou\ ;
+赤味 > akami\ ;
+護送 > gosou\ ;
+対価 > taika\ ;
+侏儒 > shuju\ ;
+尊下 > sonka\ ;
+他村 > tason\ ;
+杜漏 > zurou\ ;
+寡勢 > kazei\ ;
+宛字 > ateji\ ;
+査定 > satei\ ;
+宗家 > souke\ ;
+侍僧 > jisou\ ;
+余地 > yochi\ ;
+牝馬 > hinba\ ;
+美育 > biiku\ ;
+案分 > anbun\ ;
+能吏 > nouri\ ;
+仏果 > bukka\ ;
+耐火 > taika\ ;
+老爺 > rouya\ ;
+老父 > roufu\ ;
+警部 > keibu\ ;
+頭蓋 > zugai\ ;
+赤化 > sekka\ ;
+理数 > risuu\ ;
+亜流 > aryuu\ ;
+起債 > kisai\ ;
+象牙 > zouge\ ;
+一考 > ikkou\ ;
+東歌 > touka\ ;
+警邏 > keira\ ;
+安居 > ankyo\ ;
+東欧 > touou\ ;
+駆動 > kudou\ ;
+容器 > youki\ ;
+贔屓 > hiiki\ ;
+寡兵 > kahei\ ;
+世紀 > seiki\ ;
+他方 > tahou\ ;
+今期 > konki\ ;
+果断 > kadan\ ;
+任意 > nin''i\ ;
+類縁 > ruien\ ;
+余喘 > yozen\ ;
+讒誣 > zanbu\ ;
+亡母 > boubo\ ;
+果敢 > kakan\ ;
+安定 > antei\ ;
+下線 > kasen\ ;
+下緒 > sageo\ ;
+宇宙 > uchuu\ ;
+讒訴 > zanso\ ;
+官女 > kanjo\ ;
+音詩 > onshi\ ;
+不純 > fujun\ ;
+不納 > funou\ ;
+伎工 > gikou\ ;
+音訓 > onkun\ ;
+賢愚 > kengu\ ;
+胃壁 > iheki\ ;
+余命 > yomei\ ;
+伝家 > denka\ ;
+杜氏 > touji\ ;
+不粋 > busui\ ;
+妖雲 > youun\ ;
+赴任 > funin\ ;
+賦性 > fusei\ ;
+馴化 > junka\ ;
+一線 > issen\ ;
+一緒 > issho\ ;
+代打 > daida\ ;
+仮想 > kasou\ ;
+案件 > anken\ ;
+獣皮 > juuhi\ ;
+五段 > godan\ ;
+賛意 > san''i\ ;
+板木 > hangi\ ;
+貴方 > kihou\ ;
+飢民 > kimin\ ;
+一統 > ittou\ ;
+飛泉 > hisen\ ;
+未然 > mizen\ ;
+駐伊 > chuui\ ;
+好餌 > kouji\ ;
+映配 > eihai\ ;
+家君 > kakun\ ;
+孤帆 > kohan\ ;
+家名 > kamei\ ;
+一系 > ikkei\ ;
+寡人 > kajin\ ;
+仮性 > kasei\ ;
+作動 > sadou\ ;
+一糸 > isshi\ ;
+字形 > jikei\ ;
+不等 > futou\ ;
+校務 > koumu\ ;
+人時 > ninji\ ;
+羈絆 > kihan\ ;
+頭脳 > zunou\ ;
+余勢 > yosei\ ;
+下等 > katou\ ;
+駆使 > kushi\ ;
+佳例 > karei\ ;
+二死 > nishi\ ;
+宝器 > houki\ ;
+木灰 > kibai\ ;
+下端 > katan\ ;
+余剰 > yojou\ ;
+羅紗 > rasha\ ;
+奇麗 > kirei\ ;
+仕手 > shite\ ;
+孤島 > kotou\ ;
+馬券 > baken\ ;
+宮司 > guuji\ ;
+香味 > koumi\ ;
+余分 > yobun\ ;
+伝奇 > denki\ ;
+理想 > risou\ ;
+佳什 > kajuu\ ;
+佳人 > kajin\ ;
+一管 > ikkan\ ;
+宥和 > yuuwa\ ;
+佑助 > yuujo\ ;
+校具 > kougu\ ;
+議論 > giron\ ;
+一等 > ittou\ ;
+書画 > shoga\ ;
+獲物 > emono\ ;
+能事 > nouji\ ;
+奮飛 > funpi\ ;
+肥大 > hidai\ ;
+余党 > yotou\ ;
+余光 > yokou\ ;
+豪気 > gouki\ ;
+理性 > risei\ ;
+時論 > jiron\ ;
+警護 > keigo\ ;
+負数 > fusuu\ ;
+二様 > niyou\ ;
+義眼 > gigan\ ;
+査問 > samon\ ;
+理念 > rinen\ ;
+青馬 > aouma\ ;
+低利 > teiri\ ;
+譫語 > sengo\ ;
+未満 > miman\ ;
+家内 > kanai\ ;
+世知 > sechi\ ;
+定員 > teiin\ ;
+買手 > kaite\ ;
+容儀 > yougi\ ;
+実否 > jippi\ ;
+来期 > raiki\ ;
+乃父 > daifu\ ;
+家兄 > kakei\ ;
+季子 > kishi\ ;
+井桁 > igeta\ ;
+暗翳 > an''ei\ ;
+未済 > misai\ ;
+貴所 > kisho\ ;
+姉貴 > aneki\ ;
+時計 > tokei\ ;
+老母 > roubo\ ;
+他念 > tanen\ ;
+宛名 > atena\ ;
+女難 > jonan\ ;
+奴隷 > dorei\ ;
+世相 > sesou\ ;
+仲居 > nakai\ ;
+顕示 > kenji\ ;
+不知 > fuchi\ ;
+官吏 > kanri\ ;
+末派 > mappa\ ;
+何個 > nanko\ ;
+非難 > hinan\ ;
+下知 > gedji\ ;
+太鼓 > taiko\ ;
+下瞰 > kakan\ ;
+香具 > kougu\ ;
+須臾 > shuyu\ ;
+朝湯 > asayu\ ;
+五書 > gosho\ ;
+五更 > gokou\ ;
+奔馬 > honba\ ;
+聖恩 > seion\ ;
+嫌気 > kenki\ ;
+委託 > itaku\ ;
+不眠 > fumin\ ;
+亜族 > azoku\ ;
+王法 > ouhou\ ;
+仁慈 > jinji\ ;
+仮寓 > kaguu\ ;
+仏徒 > butto\ ;
+理工 > rikou\ ;
+板戸 > itado\ ;
+人我 > jinga\ ;
+家例 > karei\ ;
+貧打 > hinda\ ;
+余人 > yonin\ ;
+他店 > taten\ ;
+大黄 > daiou\ ;
+上着 > uwagi\ ;
+大麻 > taima\ ;
+本気 > honki\ ;
+仮定 > katei\ ;
+他年 > tanen\ ;
+老樹 > rouju\ ;
+付帯 > futai\ ;
+胎児 > taiji\ ;
+是認 > zenin\ ;
+負担 > futan\ ;
+家伝 > kaden\ ;
+暗線 > ansen\ ;
+上目 > uwame\ ;
+栄冠 > eikan\ ;
+低価 > teika\ ;
+王水 > ousui\ ;
+今後 > kongo\ ;
+聖徒 > seito\ ;
+世界 > sekai\ ;
+栄典 > eiten\ ;
+孟女 > moujo\ ;
+飛来 > hirai\ ;
+家令 > karei\ ;
+二曹 > nisou\ ;
+二更 > nikou\ ;
+宴会 > enkai\ ;
+青雲 > seiun\ ;
+馬上 > bajou\ ;
+上皮 > jouhi\ ;
+一矢 > isshi\ ;
+余世 > yosei\ ;
+馬丁 > batei\ ;
+家什 > kajuu\ ;
+栄光 > eikou\ ;
+家人 > kenin\ ;
+警衛 > keiei\ ;
+孝女 > koujo\ ;
+仁恕 > jinjo\ ;
+孟夏 > mouka\ ;
+斑鳩 > ikaru\ ;
+風波 > fuuha\ ;
+来援 > raien\ ;
+今度 > kondo\ ;
+下疳 > gekan\ ;
+会員 > kaiin\ ;
+乾枯 > kanko\ ;
+孤城 > kojou\ ;
+音色 > neiro\ ;
+乾果 > kanka\ ;
+而来 > jirai\ ;
+杜撰 > zusan\ ;
+譎詐 > kissa\ ;
+上疏 > jouso\ ;
+下番 > kaban\ ;
+不用 > fuyou\ ;
+考案 > kouan\ ;
+下界 > gekai\ ;
+下男 > genan\ ;
+下田 > geden\ ;
+低下 > teika\ ;
+理容 > riyou\ ;
+暖簾 > noren\ ;
+貴店 > kiten\ ;
+乾期 > kanki\ ;
+考査 > kousa\ ;
+他山 > tazan\ ;
+伝受 > denju\ ;
+主演 > shuen\ ;
+謝辞 > shaji\ ;
+予断 > yodan\ ;
+子女 > shijo\ ;
+人後 > jingo\ ;
+王権 > ouken\ ;
+飛散 > hisan\ ;
+暗算 > anzan\ ;
+胎仔 > taiji\ ;
+仮声 > kasei\ ;
+嬌態 > shina\ ;
+罪科 > zaika\ ;
+肥厚 > hikou\ ;
+負性 > fusei\ ;
+互換 > gokan\ ;
+美男 > binan\ ;
+露顕 > roken\ ;
+美田 > biden\ ;
+伶俐 > reiri\ ;
+天魔 > tenma\ ;
+定価 > teika\ ;
+露頭 > rotou\ ;
+讚美 > sanbi\ ;
+一生 > issei\ ;
+安全 > anzen\ ;
+五指 > goshi\ ;
+育児 > ikuji\ ;
+罌粟 > keshi\ ;
+宣下 > senge\ ;
+仏家 > bukke\ ;
+特記 > tokki\ ;
+貨幣 > kahei\ ;
+官位 > kan''i\ ;
+一環 > ikkan\ ;
+既遂 > kisui\ ;
+孵卵 > furan\ ;
+完備 > kanbi\ ;
+題画 > daiga\ ;
+好運 > kouun\ ;
+聖寿 > seiju\ ;
+飛揚 > hiyou\ ;
+球威 > kyuui\ ;
+謹話 > kinwa\ ;
+不犯 > fubon\ ;
+今宵 > koyoi\ ;
+守備 > shubi\ ;
+五戒 > gokai\ ;
+猜疑 > saigi\ ;
+官事 > kanji\ ;
+杞憂 > kiyuu\ ;
+今季 > konki\ ;
+理外 > rigai\ ;
+面部 > menbu\ ;
+明記 > meiki\ ;
+他姓 > tasei\ ;
+女郎 > jorou\ ;
+天馬 > tenba\ ;
+財布 > saifu\ ;
+未来 > mirai\ ;
+不燃 > funen\ ;
+一献 > ikkon\ ;
+五感 > gokan\ ;
+施錠 > sejou\ ;
+安住 > anjuu\ ;
+耳底 > jitei\ ;
+非道 > hidou\ ;
+五情 > gojou\ ;
+霧雰 > mufun\ ;
+板屋 > itaya\ ;
+一犬 > ikken\ ;
+五悪 > goaku\ ;
+学区 > gakku\ ;
+人寿 > jinju\ ;
+有機 > yuuki\ ;
+讃美 > sanbi\ ;
+与点 > yoten\ ;
+一版 > ippan\ ;
+人家 > jinka\ ;
+頭皮 > touhi\ ;
+未明 > mimei\ ;
+互恵 > gokei\ ;
+事態 > jitai\ ;
+果報 > kahou\ ;
+面輪 > omowa\ ;
+貧富 > hinpu\ ;
+現場 > genba\ ;
+貧家 > hinka\ ;
+養家 > youka\ ;
+課題 > kadai\ ;
+類火 > ruika\ ;
+存否 > zonpi\ ;
+交差 > kousa\ ;
+板子 > itago\ ;
+奠都 > tento\ ;
+事情 > jijou\ ;
+貴姉 > kishi\ ;
+予感 > yokan\ ;
+聖夜 > seiya\ ;
+今夏 > konka\ ;
+字号 > jigou\ ;
+予想 > yosou\ ;
+五彩 > gosai\ ;
+任務 > ninmu\ ;
+方里 > houri\ ;
+王政 > ousei\ ;
+季刊 > kikan\ ;
+架台 > kadai\ ;
+美点 > biten\ ;
+二念 > ninen\ ;
+講話 > kouwa\ ;
+一点 > itten\ ;
+賛否 > sanpi\ ;
+大雨 > ooame\ ;
+夕餉 > yuuge\ ;
+太陰 > taiin\ ;
+朝日 > asahi\ ;
+代員 > daiin\ ;
+上演 > jouen\ ;
+雲高 > unkou\ ;
+五常 > gojou\ ;
+文雅 > bunga\ ;
+交尾 > koubi\ ;
+不満 > fuman\ ;
+贈与 > zouyo\ ;
+乱打 > randa\ ;
+外題 > gedai\ ;
+牡蠣 > borei\ ;
+奮起 > funki\ ;
+人夫 > ninpu\ ;
+耶嬢 > yajou\ ;
+互市 > goshi\ ;
+養女 > youjo\ ;
+妄語 > mougo\ ;
+貞婦 > teifu\ ;
+義民 > gimin\ ;
+多面 > tamen\ ;
+耳孔 > jikou\ ;
+語類 > gorui\ ;
+方途 > houto\ ;
+仏器 > bukki\ ;
+交宜 > kougi\ ;
+日課 > nikka\ ;
+聯句 > renku\ ;
+語頭 > gotou\ ;
+亜属 > azoku\ ;
+有期 > yuuki\ ;
+賛助 > sanjo\ ;
+語順 > gojun\ ;
+主査 > shusa\ ;
+季候 > kikou\ ;
+多難 > tanan\ ;
+字典 > jiten\ ;
+貴地 > kichi\ ;
+代印 > daiin\ ;
+義歯 > gishi\ ;
+好誼 > kougi\ ;
+不浄 > fujou\ ;
+日記 > nikki\ ;
+以北 > ihoku\ ;
+子分 > kobun\ ;
+猛火 > mouka\ ;
+外需 > gaiju\ ;
+学位 > gakui\ ;
+本手 > honte\ ;
+来季 > raiki\ ;
+貞女 > teijo\ ;
+音程 > ontei\ ;
+翻意 > hon''i\ ;
+謀議 > bougi\ ;
+不法 > fuhou\ ;
+美港 > bikou\ ;
+代務 > daimu\ ;
+不治 > fuchi\ ;
+羅漢 > rakan\ ;
+餬口 > kokou\ ;
+罹災 > risai\ ;
+未成 > misei\ ;
+最期 > saigo\ ;
+雪駄 > setta\ ;
+夕陽 > yuuhi\ ;
+夜間 > yakan\ ;
+亡婦 > boufu\ ;
+奇遇 > kiguu\ ;
+書架 > shoka\ ;
+老後 > rougo\ ;
+什器 > juuki\ ;
+旅費 > ryohi\ ;
+井守 > imori\ ;
+青貝 > aogai\ ;
+下水 > gesui\ ;
+五官 > gokan\ ;
+奈辺 > nahen\ ;
+整除 > seijo\ ;
+不毛 > fumou\ ;
+下民 > gemin\ ;
+本意 > hon''i\ ;
+嫌悪 > ken''o\ ;
+旧衣 > kyuui\ ;
+貧土 > hindo\ ;
+既製 > kisei\ ;
+電離 > denri\ ;
+上気 > jouki\ ;
+類比 > ruihi\ ;
+飢寒 > kikan\ ;
+一洗 > issen\ ;
+下殿 > geden\ ;
+不死 > fushi\ ;
+下段 > gedan\ ;
+零露 > reiro\ ;
+不正 > fusei\ ;
+二封 > nifuu\ ;
+雷雲 > raiun\ ;
+字体 > jitai\ ;
+期成 > kisei\ ;
+他動 > tadou\ ;
+類歌 > ruika\ ;
+謁見 > ekken\ ;
+亡夫 > boufu\ ;
+上歯 > uwaba\ ;
+二宮 > niguu\ ;
+斗酒 > toshu\ ;
+他励 > tarei\ ;
+不欄 > furan\ ;
+班員 > hanin\ ;
+諷誦 > fuuju\ ;
+嫌忌 > kengi\ ;
+今古 > kinko\ ;
+諮議 > shigi\ ;
+三次 > sanji\ ;
+一水 > issui\ ;
+仇名 > adana\ ;
+予定 > yotei\ ;
+貴君 > kikun\ ;
+断路 > danro\ ;
+狼煙 > rouen\ ;
+貴名 > kimei\ ;
+貴台 > kidai\ ;
+仮令 > tatoe\ ;
+一段 > ittan\ ;
+女装 > josou\ ;
+牛蒡 > gobou\ ;
+暗然 > anzen\ ;
+一死 > isshi\ ;
+一歳 > issai\ ;
+来場 > raiba\ ;
+課金 > kakin\ ;
+音盤 > onban\ ;
+介助 > kaijo\ ;
+万機 > banki\ ;
+飯場 > hanba\ ;
+羊歯 > shida\ ;
+風情 > fuzei\ ;
+代価 > daika\ ;
+架上 > kajou\ ;
+声音 > seion\ ;
+暗点 > anten\ ;
+狼火 > rouka\ ;
+仕儀 > shigi\ ;
+暖炉 > danro\ ;
+非行 > hikou\ ;
+乾季 > kanki\ ;
+大部 > daibu\ ;
+奉賀 > houga\ ;
+豪家 > gouka\ ;
+時空 > jikuu\ ;
+音痴 > onchi\ ;
+期待 > kitai\ ;
+文部 > monbu\ ;
+井堰 > iseki\ ;
+大過 > taika\ ;
+暗澹 > antan\ ;
+王師 > oushi\ ;
+話題 > wadai\ ;
+事大 > jidai\ ;
+多重 > tajuu\ ;
+話頭 > watou\ ;
+二士 > nishi\ ;
+事変 > jihen\ ;
+晩生 > okute\ ;
+雨間 > amaai\ ;
+妖艶 > youen\ ;
+外野 > gaiya\ ;
+下校 > gekou\ ;
+現価 > genka\ ;
+論議 > rongi\ ;
+負号 > fugou\ ;
+試飲 > shiin\ ;
+読過 > dokka\ ;
+明美 > meibi\ ;
+付会 > fukai\ ;
+貴公 > kikou\ ;
+請負 > ukeoi\ ;
+主我 > shuga\ ;
+飽和 > houwa\ ;
+二塁 > nirui\ ;
+誤配 > gohai\ ;
+貴兄 > kikei\ ;
+奇警 > kikei\ ;
+離間 > rikan\ ;
+翻字 > honji\ ;
+飛報 > hihou\ ;
+貴僧 > kisou\ ;
+繋辞 > keiji\ ;
+日華 > nikka\ ;
+予報 > yohou\ ;
+他人 > tanin\ ;
+雄飛 > yuuhi\ ;
+外部 > gaibu\ ;
+論語 > rongo\ ;
+曜日 > youbi\ ;
+老婦 > roufu\ ;
+外郎 > uirou\ ;
+青蝿 > aobae\ ;
+罨法 > anpou\ ;
+暗渠 > ankyo\ ;
+老婆 > rouba\ ;
+奇談 > kidan\ ;
+財務 > zaimu\ ;
+下書 > gesho\ ;
+亭午 > teigo\ ;
+施行 > sekou\ ;
+一校 > ikkou\ ;
+最愛 > saiai\ ;
+曖昧 > aimai\ ;
+早苗 > sanae\ ;
+万朶 > banda\ ;
+本家 > honke\ ;
+外道 > gedou\ ;
+媚態 > bitai\ ;
+時短 > jitan\ ;
+暗涙 > anrui\ ;
+有心 > ushin\ ;
+現世 > genze\ ;
+二回 > nikai\ ;
+現下 > genka\ ;
+暢気 > nonki\ ;
+老妓 > rougi\ ;
+未定 > mitei\ ;
+耕土 > koudo\ ;
+本字 > honji\ ;
+不易 > fueki\ ;
+交叉 > kousa\ ;
+未完 > mikan\ ;
+奇計 > kikei\ ;
+不明 > fumei\ ;
+貼付 > tenpu\ ;
+末季 > makki\ ;
+老女 > roujo\ ;
+主恩 > shuon\ ;
+一杯 > ippai\ ;
+美本 > bihon\ ;
+三時 > sanji\ ;
+上映 > jouei\ ;
+奇観 > kikan\ ;
+王孫 > ouson\ ;
+下旬 > gejun\ ;
+不断 > fudan\ ;
+一本 > ippon\ ;
+不斉 > fusei\ ;
+不文 > fubun\ ;
+材器 > zaiki\ ;
+下方 > kahou\ ;
+不整 > fusei\ ;
+不敬 > fukei\ ;
+三日 > mikka\ ;
+一曹 > issou\ ;
+一書 > issho\ ;
+時相 > jisou\ ;
+一更 > ikkou\ ;
+始祖 > shiso\ ;
+不敗 > fuhai\ ;
+不敏 > fubin\ ;
+天賦 > tenpu\ ;
+豎子 > jushi\ ;
+豊富 > houfu\ ;
+美景 > bikei\ ;
+露見 > roken\ ;
+義挙 > gikyo\ ;
+下放 > kahou\ ;
+談話 > danwa\ ;
+最後 > saigo\ ;
+貴人 > kijin\ ;
+敬遠 > keien\ ;
+未婚 > mikon\ ;
+朝寝 > asane\ ;
+貸与 > taiyo\ ;
+亘古 > kouko\ ;
+暖気 > nonki\ ;
+乾固 > kanko\ ;
+不撓 > futou\ ;
+綺麗 > kirei\ ;
+負債 > fusai\ ;
+乙子 > otogo\ ;
+婚期 > konki\ ;
+大豆 > daizu\ ;
+講義 > kougi\ ;
+雨量 > uryou\ ;
+一旦 > ittan\ ;
+奇行 > kikou\ ;
+人位 > jin''i\ ;
+義手 > gishu\ ;
+美文 > bibun\ ;
+一方 > ippou\ ;
+暑気 > shoki\ ;
+一斤 > ikkin\ ;
+義戦 > gisen\ ;
+一斑 > ippan\ ;
+一斉 > issei\ ;
+誹謗 > hibou\ ;
+旗艦 > kikan\ ;
+緋鯉 > higoi\ ;
+一敗 > ippai\ ;
+羈旅 > kiryo\ ;
+五十 > gojuu\ ;
+義憤 > gifun\ ;
+二君 > nikun\ ;
+世才 > sesai\ ;
+貫主 > kanju\ ;
+二号 > nigou\ ;
+最左 > saisa\ ;
+未墾 > mikon\ ;
+亡児 > bouji\ ;
+書庫 > shoko\ ;
+本場 > honba\ ;
+電路 > denro\ ;
+外貨 > gaika\ ;
+乙女 > otome\ ;
+文語 > bungo\ ;
+世態 > setai\ ;
+玩味 > ganmi\ ;
+顧慮 > koryo\ ;
+誘起 > yuuki\ ;
+不才 > fusai\ ;
+夜警 > yakei\ ;
+隠顕 > inken\ ;
+不戦 > fusen\ ;
+王城 > oujou\ ;
+一掃 > issou\ ;
+上手 > jouzu\ ;
+本土 > hondo\ ;
+世情 > sejou\ ;
+上戸 > jougo\ ;
+美挙 > bikyo\ ;
+多謝 > tasha\ ;
+不憫 > fubin\ ;
+事前 > jizen\ ;
+一挙 > ikkyo\ ;
+離農 > rinou\ ;
+万戸 > banko\ ;
+一指 > isshi\ ;
+音源 > ongen\ ;
+不慮 > furyo\ ;
+耳介 > jikai\ ;
+二分 > nibun\ ;
+暫時 > zanji\ ;
+明示 > meiji\ ;
+壮途 > souto\ ;
+主家 > shuka\ ;
+隠面 > inmen\ ;
+交付 > koufu\ ;
+訴願 > sogan\ ;
+不愍 > fubin\ ;
+義弟 > gitei\ ;
+父老 > furou\ ;
+率土 > sotto\ ;
+交互 > kougo\ ;
+誤認 > gonin\ ;
+雪踏 > setta\ ;
+天衣 > ten''i\ ;
+面罵 > menba\ ;
+一才 > issai\ ;
+事典 > jiten\ ;
+外語 > gaigo\ ;
+多言 > tagen\ ;
+一戦 > issen\ ;
+下情 > kajou\ ;
+五倫 > gorin\ ;
+耕具 > kougu\ ;
+五倍 > gobai\ ;
+順次 > junji\ ;
+犠牲 > gisei\ ;
+誤解 > gokai\ ;
+誣言 > fugen\ ;
+書家 > shoka\ ;
+願意 > gan''i\ ;
+語誌 > goshi\ ;
+詭道 > kidou\ ;
+主婦 > shufu\ ;
+景気 > keiki\ ;
+不快 > fukai\ ;
+風土 > fuudo\ ;
+中尉 > chuui\ ;
+難路 > nanro\ ;
+燃費 > nenpi\ ;
+美感 > bikan\ ;
+有夫 > yuufu\ ;
+五体 > gotai\ ;
+老化 > rouka\ ;
+有夏 > yuuka\ ;
+嫌味 > iyami\ ;
+一意 > ichii\ ;
+普段 > fudan\ ;
+二倍 > nibai\ ;
+讚歌 > sanka\ ;
+下御 > gegyo\ ;
+玩具 > gangu\ ;
+詭辯 > kiben\ ;
+不当 > futou\ ;
+奥義 > okugi\ ;
+電話 > denwa\ ;
+世帯 > setai\ ;
+時点 > jiten\ ;
+敬語 > keigo\ ;
+夜行 > yakou\ ;
+猛打 > mouda\ ;
+需要 > juyou\ ;
+大蛇 > daija\ ;
+下弦 > kagen\ ;
+朱印 > shuin\ ;
+事例 > jirei\ ;
+外被 > gaihi\ ;
+事体 > jitai\ ;
+最多 > saita\ ;
+特異 > tokui\ ;
+不幸 > fukou\ ;
+風喩 > fuuyu\ ;
+不平 > fuhei\ ;
+顕微 > kenbi\ ;
+女系 > jokei\ ;
+谷地 > yachi\ ;
+上座 > jouza\ ;
+縁辺 > enpen\ ;
+雄途 > yuuto\ ;
+事件 > jiken\ ;
+三度 > sando\ ;
+三府 > sanpu\ ;
+支部 > shibu\ ;
+美形 > bikei\ ;
+媾和 > kouwa\ ;
+父系 > fukei\ ;
+乗員 > jouin\ ;
+予令 > yorei\ ;
+支那 > shina\ ;
+下巻 > gekan\ ;
+二乗 > nijou\ ;
+上布 > joufu\ ;
+老儒 > rouju\ ;
+本務 > honmu\ ;
+二世 > nisei\ ;
+二三 > nisan\ ;
+譲渡 > jouto\ ;
+風味 > fuumi\ ;
+義子 > gishi\ ;
+九十 > kujuu\ ;
+罹患 > rikan\ ;
+未到 > mitou\ ;
+護法 > gohou\ ;
+而今 > jikon\ ;
+豚児 > tonji\ ;
+一帯 > ittai\ ;
+讃歌 > sanka\ ;
+旺盛 > ousei\ ;
+未刊 > mikan\ ;
+難語 > nango\ ;
+故買 > kobai\ ;
+雑費 > zappi\ ;
+王制 > ousei\ ;
+主因 > shuin\ ;
+朱儒 > shuju\ ;
+雑貨 > zakka\ ;
+奇聞 > kibun\ ;
+不尽 > fujin\ ;
+下山 > gezan\ ;
+敗訴 > haiso\ ;
+下層 > kasou\ ;
+声誉 > seiyo\ ;
+雅趣 > gashu\ ;
+上屋 > uwaya\ ;
+王冠 > oukan\ ;
+風化 > fuuka\ ;
+壮語 > sougo\ ;
+乗務 > joumu\ ;
+暴徒 > bouto\ ;
+王公 > oukou\ ;
+義姉 > gishi\ ;
+不宣 > fusen\ ;
+義妹 > gimai\ ;
+王党 > outou\ ;
+不定 > futei\ ;
+三尉 > san''i\ ;
+険阻 > kenso\ ;
+不孝 > fukou\ ;
+万寿 > banju\ ;
+詮議 > sengi\ ;
+類字 > ruiji\ ;
+降魔 > gouma\ ;
+天花 > tenka\ ;
+音栓 > onsen\ ;
+義士 > gishi\ ;
+一層 > issou\ ;
+韻書 > insho\ ;
+施米 > semai\ ;
+詞賦 > shifu\ ;
+期内 > kinai\ ;
+既知 > kichi\ ;
+譲歩 > jouho\ ;
+詭謀 > kibou\ ;
+文苑 > bunen\ ;
+静穏 > seion\ ;
+机上 > kijou\ ;
+陰険 > inken\ ;
+一尉 > ichii\ ;
+一封 > ippuu\ ;
+美容 > biyou\ ;
+晩期 > banki\ ;
+繁華 > hanka\ ;
+頻度 > hindo\ ;
+談義 > dangi\ ;
+隠遁 > inton\ ;
+非礼 > hirei\ ;
+本位 > hon''i\ ;
+一定 > ittei\ ;
+王侯 > oukou\ ;
+頓挫 > tonza\ ;
+丁字 > teiji\ ;
+雑記 > zakki\ ;
+不姙 > funin\ ;
+隠退 > intai\ ;
+靱皮 > jinpi\ ;
+風儀 > fuugi\ ;
+詩語 > shigo\ ;
+詭計 > kikei\ ;
+除霜 > josou\ ;
+威服 > ifuku\ ;
+除霊 > jorei\ ;
+不妊 > funin\ ;
+塩類 > enrui\ ;
+陰門 > inmon\ ;
+旧痾 > kyuua\ ;
+韻文 > inbun\ ;
+縁談 > endan\ ;
+靭皮 > jinpi\ ;
+最古 > saiko\ ;
+繁茂 > hanmo\ ;
+多芸 > tagei\ ;
+除隊 > jotai\ ;
+婚家 > konka\ ;
+不変 > fuhen\ ;
+題字 > daiji\ ;
+三女 > sanjo\ ;
+外苑 > gaien\ ;
+末世 > masse\ ;
+有利 > yuuri\ ;
+下士 > kashi\ ;
+三夏 > sanka\ ;
+牡牛 > oushi\ ;
+万夫 > banpu\ ;
+主務 > shumu\ ;
+版画 > hanga\ ;
+諭示 > yushi\ ;
+電荷 > denka\ ;
+雅言 > gagen\ ;
+不堪 > fukan\ ;
+暗影 > an''ei\ ;
+青磁 > seiji\ ;
+無風 > mufuu\ ;
+面皮 > menpi\ ;
+頭巾 > zukin\ ;
+大義 > taigi\ ;
+無類 > murui\ ;
+美大 > bidai\ ;
+線路 > senro\ ;
+無題 > mudai\ ;
+無頼 > burai\ ;
+試補 > shiho\ ;
+頑愚 > gangu\ ;
+一天 > itten\ ;
+美声 > bisei\ ;
+多能 > tanou\ ;
+下城 > gejou\ ;
+是正 > zesei\ ;
+一変 > ippen\ ;
+罷官 > hikan\ ;
+散華 > sange\ ;
+一士 > isshi\ ;
+下垂 > kasui\ ;
+夏至 > geshi\ ;
+総身 > soumi\ ;
+不在 > fuzai\ ;
+中医 > chuui\ ;
+誤聞 > gobun\ ;
+一報 > ippou\ ;
+上図 > jouzu\ ;
+面画 > menga\ ;
+煙道 > endou\ ;
+女生 > josei\ ;
+無電 > muden\ ;
+無難 > bunan\ ;
+外耳 > gaiji\ ;
+非番 > hiban\ ;
+顧問 > komon\ ;
+有価 > yuuka\ ;
+有余 > yuuyo\ ;
+解離 > kairi\ ;
+無限 > mugen\ ;
+解雇 > kaiko\ ;
+不善 > fuzen\ ;
+雪花 > sekka\ ;
+曠古 > kouko\ ;
+解除 > kaijo\ ;
+不問 > fumon\ ;
+一回 > ikkai\ ;
+附随 > fuzui\ ;
+繊維 > sen''i\ ;
+有事 > yuuji\ ;
+下問 > kamon\ ;
+明治 > meiji\ ;
+丙午 > heigo\ ;
+義勇 > giyuu\ ;
+頒布 > hanpu\ ;
+論破 > ronpa\ ;
+罵声 > basei\ ;
+下品 > gehin\ ;
+防音 > bouon\ ;
+月下 > gekka\ ;
+記載 > kisai\ ;
+訓辞 > kunji\ ;
+夢精 > musei\ ;
+下命 > kamei\ ;
+主事 > shuji\ ;
+外縁 > gaien\ ;
+不同 > fudou\ ;
+音感 > onkan\ ;
+時文 > jibun\ ;
+奇知 > kichi\ ;
+総譜 > soufu\ ;
+下向 > gekou\ ;
+下名 > kamei\ ;
+講演 > kouen\ ;
+不参 > fusan\ ;
+順序 > junjo\ ;
+類句 > ruiku\ ;
+上句 > jouku\ ;
+上古 > jouko\ ;
+最下 > saika\ ;
+隠見 > inken\ ;
+義兵 > gihei\ ;
+三叉 > sansa\ ;
+一品 > ippin\ ;
+義兄 > gikei\ ;
+万古 > banko\ ;
+険路 > kenro\ ;
+始期 > shiki\ ;
+下半 > kahan\ ;
+防除 > boujo\ ;
+不勢 > buzei\ ;
+話芸 > wagei\ ;
+不動 > fudou\ ;
+不労 > furou\ ;
+美名 > bimei\ ;
+塩酸 > ensan\ ;
+大穴 > ooana\ ;
+猪口 > choko\ ;
+露盤 > roban\ ;
+万化 > banka\ ;
+威徳 > itoku\ ;
+一反 > ittan\ ;
+一双 > issou\ ;
+斤目 > kinme\ ;
+牧歌 > bokka\ ;
+下剤 > gezai\ ;
+無銭 > musen\ ;
+場面 > bamen\ ;
+言辞 > genji\ ;
+課税 > kazei\ ;
+課程 > katei\ ;
+無銘 > mumei\ ;
+誤算 > gosan\ ;
+不凡 > fubon\ ;
+爪牙 > souga\ ;
+太祖 > taiso\ ;
+暗夜 > an''ya\ ;
+不凍 > futou\ ;
+天祖 > tenso\ ;
+一半 > ippan\ ;
+一千 > issen\ ;
+妖気 > youki\ ;
+好演 > kouen\ ;
+誤答 > gotou\ ;
+文科 > bunka\ ;
+護憲 > goken\ ;
+多端 > tatan\ ;
+与党 > yotou\ ;
+不全 > fuzen\ ;
+詠草 > eisou\ ;
+不党 > futou\ ;
+雄花 > obana\ ;
+既済 > kisai\ ;
+壮美 > soubi\ ;
+墓誌 > boshi\ ;
+多種 > tashu\ ;
+綺談 > kidan\ ;
+無配 > muhai\ ;
+犯意 > han''i\ ;
+下僧 > gesou\ ;
+義人 > gijin\ ;
+一切 > issai\ ;
+一分 > ippun\ ;
+一刀 > ittou\ ;
+奇瑞 > kizui\ ;
+論理 > ronri\ ;
+大破 > taiha\ ;
+不偏 > fuhen\ ;
+雅致 > gachi\ ;
+不倫 > furin\ ;
+話者 > washa\ ;
+署員 > shoin\ ;
+講武 > koubu\ ;
+日波 > nippo\ ;
+世代 > sedai\ ;
+一再 > issai\ ;
+世人 > sejin\ ;
+故老 > korou\ ;
+猿人 > enjin\ ;
+星斗 > seito\ ;
+上値 > uwane\ ;
+一党 > ittou\ ;
+無道 > mudou\ ;
+不便 > fuben\ ;
+討議 > tougi\ ;
+増補 > zouho\ ;
+不例 > furei\ ;
+織目 > orime\ ;
+継起 > keiki\ ;
+訓話 > kunwa\ ;
+無辺 > muhen\ ;
+世上 > sejou\ ;
+与件 > yoken\ ;
+下体 > katai\ ;
+類似 > ruiji\ ;
+隠蔽 > inpei\ ;
+羅典 > raten\ ;
+陰謀 > inbou\ ;
+訓詁 > kunko\ ;
+三佐 > sansa\ ;
+三位 > sanmi\ ;
+娑婆 > shaba\ ;
+不仁 > fujin\ ;
+丈余 > jouyo\ ;
+明暗 > meian\ ;
+妓楼 > girou\ ;
+文目 > ayame\ ;
+好気 > kouki\ ;
+猶予 > yuuyo\ ;
+変移 > hen''i\ ;
+附近 > fukin\ ;
+下人 > genin\ ;
+暴利 > bouri\ ;
+暗喩 > an''yu\ ;
+塑造 > sozou\ ;
+婚儀 > kongi\ ;
+下乗 > gejou\ ;
+擬製 > gisei\ ;
+紙魚 > shimi\ ;
+万事 > banji\ ;
+擬装 > gisou\ ;
+一体 > ittai\ ;
+一位 > ichii\ ;
+諸派 > shoha\ ;
+上下 > jouge\ ;
+夜盗 > yatou\ ;
+三世 > sanze\ ;
+電磁 > denji\ ;
+晴夜 > seiya\ ;
+婦人 > fujin\ ;
+頑固 > ganko\ ;
+時弊 > jihei\ ;
+一件 > ikken\ ;
+美人 > bijin\ ;
+一介 > ikkai\ ;
+罷免 > himen\ ;
+大瓶 > oobin\ ;
+言語 > gengo\ ;
+好機 > kouki\ ;
+故紙 > koshi\ ;
+夷狄 > iteki\ ;
+暗君 > ankun\ ;
+外皮 > gaihi\ ;
+暗合 > angou\ ;
+暗号 > angou\ ;
+護岸 > gogan\ ;
+一世 > issei\ ;
+物故 > bukko\ ;
+天理 > tenri\ ;
+夏眠 > kamin\ ;
+素養 > soyou\ ;
+姐御 > anego\ ;
+夜番 > yoban\ ;
+露点 > roten\ ;
+晩夏 > banka\ ;
+音大 > ondai\ ;
+音声 > onsei\ ;
+文理 > bunri\ ;
+多用 > tayou\ ;
+多産 > tasan\ ;
+大王 > daiou\ ;
+罵倒 > batou\ ;
+素顔 > sugao\ ;
+改組 > kaiso\ ;
+紫雲 > shiun\ ;
+編者 > henja\ ;
+女権 > joken\ ;
+誤用 > goyou\ ;
+姉御 > anego\ ;
+外界 > gekai\ ;
+擁護 > yougo\ ;
+天狗 > tengu\ ;
+父権 > fuken\ ;
+奥歯 > okuba\ ;
+早期 > souki\ ;
+素面 > sumen\ ;
+議定 > gitei\ ;
+天父 > tenpu\ ;
+需用 > juyou\ ;
+縫目 > nuime\ ;
+無謀 > mubou\ ;
+旅次 > ryoji\ ;
+日本 > nihon\ ;
+版木 > hangi\ ;
+靈氣 > reiki\ ;
+無論 > muron\ ;
+非業 > higou\ ;
+填補 > tenpo\ ;
+難破 > nanpa\ ;
+旦暮 > tanbo\ ;
+変異 > hen''i\ ;
+既望 > kibou\ ;
+陛衛 > heiei\ ;
+糸魚 > itoyo\ ;
+雨着 > amagi\ ;
+威圧 > iatsu\ ;
+好期 > kouki\ ;
+姦婦 > kanpu\ ;
+解語 > kaigo\ ;
+整理 > seiri\ ;
+無言 > mugon\ ;
+如是 > nyoze\ ;
+爾来 > jirai\ ;
+片時 > henji\ ;
+綿花 > menka\ ;
+陰蔽 > inpei\ ;
+天為 > ten''i\ ;
+威嚇 > ikaku\ ;
+無視 > mushi\ ;
+数理 > suuri\ ;
+経過 > keika\ ;
+熱砂 > nessa\ ;
+星座 > seiza\ ;
+天火 > tenpi\ ;
+埠頭 > futou\ ;
+猊下 > geika\ ;
+附言 > fugen\ ;
+大火 > taika\ ;
+姦夫 > kanpu\ ;
+順化 > junka\ ;
+防護 > bougo\ ;
+非望 > hibou\ ;
+頭上 > zujou\ ;
+議士 > gishi\ ;
+時好 > jikou\ ;
+青梅 > aoume\ ;
+塗装 > tosou\ ;
+詩碑 > shihi\ ;
+故知 > kochi\ ;
+隠線 > insen\ ;
+契機 > keiki\ ;
+視野 > shiya\ ;
+議場 > gijou\ ;
+摸造 > mozou\ ;
+陰茎 > inkei\ ;
+斧正 > fusei\ ;
+青果 > seika\ ;
+燠火 > okibi\ ;
+音名 > onmei\ ;
+明度 > meido\ ;
+妥当 > datou\ ;
+時報 > jihou\ ;
+経路 > keiro\ ;
+斯様 > kayou\ ;
+塩蔵 > enzou\ ;
+映射 > eisha\ ;
+頒価 > hanka\ ;
+諺文 > onmon\ ;
+墨絵 > sumie\ ;
+細部 > saibu\ ;
+練磨 > renma\ ;
+除草 > josou\ ;
+譏嫌 > kigen\ ;
+奥旨 > oushi\ ;
+基金 > kikin\ ;
+経費 > keihi\ ;
+記者 > kisha\ ;
+謝恩 > shaon\ ;
+昆布 > konbu\ ;
+雲煙 > un''en\ ;
+天河 > tenga\ ;
+諭旨 > yushi\ ;
+燐火 > rinka\ ;
+好打 > kouda\ ;
+既成 > kisei\ ;
+防衛 > bouei\ ;
+大河 > taiga\ ;
+雷火 > raika\ ;
+緇素 > shiso\ ;
+網羅 > moura\ ;
+天気 > tenki\ ;
+順位 > jun''i\ ;
+訓義 > kungi\ ;
+昨夜 > yuube\ ;
+大気 > taiki\ ;
+無蓋 > mugai\ ;
+語源 > gogen\ ;
+覇道 > hadou\ ;
+普偏 > fuhen\ ;
+敢為 > kan''i\ ;
+陰翳 > in''ei\ ;
+旗手 > kishu\ ;
+西部 > seibu\ ;
+雇用 > koyou\ ;
+音像 > onzou\ ;
+妻女 > saijo\ ;
+操舵 > souda\ ;
+大歌 > oouta\ ;
+講座 > kouza\ ;
+文殊 > monju\ ;
+星夜 > seiya\ ;
+無菌 > mukin\ ;
+文武 > bunbu\ ;
+非才 > hisai\ ;
+奇書 > kisho\ ;
+夫権 > fuken\ ;
+天機 > tenki\ ;
+霊気 > reiki\ ;
+明媚 > meibi\ ;
+無茶 > mucha\ ;
+音便 > onbin\ ;
+牢屋 > rouya\ ;
+奇智 > kichi\ ;
+多毛 > tamou\ ;
+威信 > ishin\ ;
+語法 > gohou\ ;
+大樹 > taiju\ ;
+外気 > gaiki\ ;
+無芸 > mugei\ ;
+大様 > ooyou\ ;
+奥手 > okute\ ;
+綱紀 > kouki\ ;
+製麻 > seima\ ;
+総社 > souja\ ;
+電波 > denpa\ ;
+時半 > jihan\ ;
+警句 > keiku\ ;
+非情 > hijou\ ;
+請暇 > seika\ ;
+時化 > shike\ ;
+女性 > josei\ ;
+雨滴 > uteki\ ;
+奇数 > kisuu\ ;
+雄猫 > oneko\ ;
+時勢 > jisei\ ;
+斧斤 > fukin\ ;
+雲海 > unkai\ ;
+雑煮 > zouni\ ;
+時効 > jikou\ ;
+星図 > seizu\ ;
+父性 > fusei\ ;
+要路 > youro\ ;
+女御 > nyogo\ ;
+電気 > denki\ ;
+斡旋 > assen\ ;
+雲泥 > undei\ ;
+警務 > keimu\ ;
+時制 > jisei\ ;
+雄牛 > oushi\ ;
+時分 > jibun\ ;
+無能 > munou\ ;
+多様 > tayou\ ;
+犬儒 > kenju\ ;
+火難 > kanan\ ;
+数次 > suuji\ ;
+妖婦 > youfu\ ;
+敵機 > tekki\ ;
+雲水 > unsui\ ;
+妖婆 > youba\ ;
+旗幟 > kishi\ ;
+青息 > aoiki\ ;
+閑雅 > kanga\ ;
+大枝 > ooeda\ ;
+売淫 > baiin\ ;
+霧散 > musan\ ;
+女帝 > jotei\ ;
+雨注 > uchuu\ ;
+放火 > houka\ ;
+奉持 > houji\ ;
+女工 > jokou\ ;
+電機 > denki\ ;
+線画 > senga\ ;
+非常 > hijou\ ;
+妖女 > youjo\ ;
+新手 > arate\ ;
+静座 > seiza\ ;
+無罪 > muzai\ ;
+散歩 > sanpo\ ;
+雨氷 > uhyou\ ;
+文書 > monjo\ ;
+開院 > kaiin\ ;
+妊婦 > ninpu\ ;
+時候 > jikou\ ;
+閉院 > heiin\ ;
+既定 > kitei\ ;
+警備 > keibi\ ;
+奇才 > kisai\ ;
+奇手 > kishu\ ;
+天日 > tenpi\ ;
+大映 > daiei\ ;
+夜来 > yarai\ ;
+好宜 > kougi\ ;
+紛議 > fungi\ ;
+除算 > jozan\ ;
+既存 > kison\ ;
+議会 > gikai\ ;
+離水 > risui\ ;
+訓示 > kunji\ ;
+試演 > shien\ ;
+撫育 > buiku\ ;
+防腐 > boufu\ ;
+語根 > gokon\ ;
+撰者 > senja\ ;
+熱波 > neppa\ ;
+多望 > tabou\ ;
+陶磁 > touji\ ;
+女尊 > joson\ ;
+奇態 > kitai\ ;
+時代 > jidai\ ;
+譲与 > jouyo\ ;
+無線 > musen\ ;
+牢固 > rouko\ ;
+夜景 > yakei\ ;
+摘記 > tekki\ ;
+既婚 > kikon\ ;
+時人 > jijin\ ;
+雄滝 > odaki\ ;
+牙城 > gajou\ ;
+奇想 > kisou\ ;
+士気 > shiki\ ;
+話法 > wahou\ ;
+炉辺 > rohen\ ;
+女子 > joshi\ ;
+煩瑣 > hansa\ ;
+総理 > souri\ ;
+時世 > jisei\ ;
+父子 > fushi\ ;
+無糖 > mutou\ ;
+陽皮 > youhi\ ;
+施工 > sekou\ ;
+大損 > oozon\ ;
+解組 > kaiso\ ;
+奇怪 > kikai\ ;
+諸家 > shoka\ ;
+特化 > tokka\ ;
+露悪 > roaku\ ;
+犀利 > sairi\ ;
+多数 > tasuu\ ;
+大揚 > ooyou\ ;
+無粋 > busui\ ;
+網目 > amime\ ;
+天授 > tenju\ ;
+映写 > eisha\ ;
+夕日 > yuuhi\ ;
+女婿 > josei\ ;
+好奇 > kouki\ ;
+外方 > soppo\ ;
+政治 > seiji\ ;
+粗餐 > sosan\ ;
+粗飯 > sohan\ ;
+閉鎖 > heisa\ ;
+素行 > sokou\ ;
+絹絵 > kinue\ ;
+譜代 > fudai\ ;
+訴状 > sojou\ ;
+奇形 > kikei\ ;
+塩税 > enzei\ ;
+映像 > eizou\ ;
+絵絹 > eginu\ ;
+雑歌 > zouka\ ;
+隠然 > inzen\ ;
+奇弁 > kiben\ ;
+語数 > gosuu\ ;
+既報 > kihou\ ;
+陽画 > youga\ ;
+火酒 > kashu\ ;
+紫蘇 > shiso\ ;
+製靴 > seika\ ;
+零時 > reiji\ ;
+映倫 > eirin\ ;
+詩歌 > shika\ ;
+精鋭 > seiei\ ;
+女声 > josei\ ;
+放歌 > houka\ ;
+附箋 > fusen\ ;
+系譜 > keifu\ ;
+雲景 > unkei\ ;
+誉望 > yobou\ ;
+版図 > hanto\ ;
+露店 > roten\ ;
+奇巌 > kigan\ ;
+姉上 > aneue\ ;
+斜影 > shaei\ ;
+無稽 > mukei\ ;
+襲衣 > shuui\ ;
+間遠 > madoo\ ;
+露帝 > rotei\ ;
+雄武 > yuubu\ ;
+無税 > muzei\ ;
+天意 > ten''i\ ;
+詠歎 > eitan\ ;
+静夜 > seiya\ ;
+講和 > kouwa\ ;
+大愚 > taigu\ ;
+無私 > mushi\ ;
+煉瓦 > renga\ ;
+雲散 > unsan\ ;
+離村 > rison\ ;
+夜戦 > yasen\ ;
+紀要 > kiyou\ ;
+煤煙 > baien\ ;
+絵筆 > efude\ ;
+多才 > tasai\ ;
+文意 > bun''i\ ;
+襤褸 > ranru\ ;
+大悟 > daigo\ ;
+特価 > tokka\ ;
+奇岩 > kigan\ ;
+無礼 > burei\ ;
+繻子 > shusu\ ;
+開運 > kaiun\ ;
+大恩 > daion\ ;
+該案 > gaian\ ;
+夢想 > musou\ ;
+襦袢 > juban\ ;
+難易 > nan''i\ ;
+旨味 > umami\ ;
+話柄 > wahei\ ;
+奉安 > houan\ ;
+堕胎 > datai\ ;
+紀行 > kikou\ ;
+放棄 > houki\ ;
+多感 > takan\ ;
+播種 > hashu\ ;
+課役 > kaeki\ ;
+院生 > insei\ ;
+補題 > hodai\ ;
+多情 > tajou\ ;
+無知 > muchi\ ;
+離散 > risan\ ;
+試案 > shian\ ;
+天府 > tenpu\ ;
+多恨 > takon\ ;
+大度 > taido\ ;
+物価 > bukka\ ;
+語感 > gokan\ ;
+敵意 > tekii\ ;
+好古 > kouko\ ;
+文庫 > bunko\ ;
+多忙 > tabou\ ;
+見舞 > mimai\ ;
+煖炉 > danro\ ;
+堕罪 > dazai\ ;
+塩田 > enden\ ;
+故智 > kochi\ ;
+無益 > mueki\ ;
+陽炎 > youen\ ;
+大差 > taisa\ ;
+繊度 > sendo\ ;
+大工 > daiku\ ;
+諷喩 > fuuyu\ ;
+多彩 > tasai\ ;
+閉路 > heiro\ ;
+多形 > takei\ ;
+敬慕 > keibo\ ;
+堆肥 > taihi\ ;
+日加 > nikka\ ;
+援軍 > engun\ ;
+粗鋼 > sokou\ ;
+敬愛 > keiai\ ;
+多弁 > taben\ ;
+声援 > seien\ ;
+熨斗 > noshi\ ;
+非命 > himei\ ;
+謀叛 > muhon\ ;
+女史 > joshi\ ;
+謀反 > muhon\ ;
+粗銅 > sodou\ ;
+褒辞 > houji\ ;
+摩耗 > mamou\ ;
+粗鉱 > sokou\ ;
+父君 > fukun\ ;
+放映 > houei\ ;
+外延 > gaien\ ;
+多幸 > takou\ ;
+多年 > tanen\ ;
+紅蓮 > guren\ ;
+雁木 > gangi\ ;
+奇声 > kisei\ ;
+語形 > gokei\ ;
+奄奄 > en''en\ ;
+裏面 > rimen\ ;
+既刊 > kikan\ ;
+方図 > houzu\ ;
+雨戸 > amado\ ;
+露天 > roten\ ;
+補間 > hokan\ ;
+語弊 > gohei\ ;
+牢乎 > rouko\ ;
+無用 > muyou\ ;
+無産 > musan\ ;
+牡丹 > botan\ ;
+大尾 > taibi\ ;
+天寿 > tenju\ ;
+語幹 > gokan\ ;
+粗酒 > soshu\ ;
+控除 > koujo\ ;
+売手 > urite\ ;
+増派 > zouha\ ;
+誘引 > yuuin\ ;
+大家 > taike\ ;
+雅文 > gabun\ ;
+覇者 > hasha\ ;
+斉家 > seika\ ;
+露場 > rojou\ ;
+大安 > daian\ ;
+数度 > suudo\ ;
+大字 > ooaza\ ;
+閑話 > kanwa\ ;
+地頭 > jitou\ ;
+陸湯 > okayu\ ;
+断固 > danko\ ;
+雲影 > un''ei\ ;
+文字 > monji\ ;
+燕巣 > ensou\ ;
+奥印 > okuin\ ;
+夫婦 > meoto\ ;
+多層 > tasou\ ;
+訴権 > soken\ ;
+零度 > reido\ ;
+点者 > tenja\ ;
+絵画 > kaiga\ ;
+隠棲 > insei\ ;
+要義 > yougi\ ;
+非凡 > hibon\ ;
+訪欧 > houou\ ;
+地面 > jimen\ ;
+好個 > kouko\ ;
+女優 > joyuu\ ;
+天威 > ten''i\ ;
+夫妻 > fusai\ ;
+誤射 > gosha\ ;
+父兄 > fukei\ ;
+地雷 > jirai\ ;
+記法 > kihou\ ;
+煖気 > danki\ ;
+隠栖 > insei\ ;
+多孔 > takou\ ;
+外宮 > gekuu\ ;
+煙死 > enshi\ ;
+太夫 > tayuu\ ;
+陽気 > youki\ ;
+基線 > kisen\ ;
+大奥 > oooku\ ;
+排除 > haijo\ ;
+外字 > gaiji\ ;
+散布 > sanpu\ ;
+奇問 > kimon\ ;
+如上 > jojou\ ;
+好事 > kouzu\ ;
+大声 > oogoe\ ;
+課外 > kagai\ ;
+夷国 > ikoku\ ;
+支援 > shien\ ;
+擬毛 > gimou\ ;
+素絹 > soken\ ;
+契印 > keiin\ ;
+難度 > nando\ ;
+規範 > kihan\ ;
+擬死 > gishi\ ;
+数字 > suuji\ ;
+多妻 > tasai\ ;
+斎垣 > igaki\ ;
+要素 > youso\ ;
+旗亭 > kitei\ ;
+支持 > shiji\ ;
+雅懐 > gakai\ ;
+提起 > teiki\ ;
+雲居 > kumoi\ ;
+露命 > romei\ ;
+無灯 > mutou\ ;
+陰毛 > inmou\ ;
+変字 > henji\ ;
+西紀 > seiki\ ;
+織地 > oriji\ ;
+霊夢 > reimu\ ;
+露呈 > rotei\ ;
+多大 > tadai\ ;
+掃除 > souji\ ;
+塗炭 > totan\ ;
+捕鯨 > hogei\ ;
+非人 > hinin\ ;
+多売 > tabai\ ;
+露台 > rodai\ ;
+繁多 > hanta\ ;
+除法 > johou\ ;
+焜炉 > konro\ ;
+方円 > houen\ ;
+諸事 > shoji\ ;
+改悟 > kaigo\ ;
+継泳 > keiei\ ;
+奉加 > houga\ ;
+規程 > kitei\ ;
+離島 > ritou\ ;
+奇効 > kikou\ ;
+詭弁 > kiben\ ;
+隕星 > insei\ ;
+大器 > taiki\ ;
+離岸 > rigan\ ;
+炭素 > tanso\ ;
+誤報 > gohou\ ;
+外場 > gaiba\ ;
+数奇 > suuki\ ;
+離山 > rizan\ ;
+大嘘 > oouso\ ;
+糖菓 > touka\ ;
+数多 > suuta\ ;
+提議 > teigi\ ;
+随時 > zuiji\ ;
+経由 > keiyu\ ;
+火葬 > kasou\ ;
+霊園 > reien\ ;
+政府 > seifu\ ;
+奇兵 > kihei\ ;
+阿漕 > akogi\ ;
+防炎 > bouen\ ;
+斗南 > tonan\ ;
+売子 > uriko\ ;
+電場 > denba\ ;
+外因 > gaiin\ ;
+防火 > bouka\ ;
+提訴 > teiso\ ;
+露光 > rokou\ ;
+夫君 > fukun\ ;
+複衣 > fukui\ ;
+経理 > keiri\ ;
+大呼 > taiko\ ;
+大味 > ooaji\ ;
+施主 > seshu\ ;
+雲壌 > unjou\ ;
+奇偶 > kiguu\ ;
+太古 > taiko\ ;
+無法 > muhou\ ;
+故山 > kozan\ ;
+濃霧 > noumu\ ;
+離婚 > rikon\ ;
+大台 > oodai\ ;
+在野 > zaiya\ ;
+点示 > tenji\ ;
+教委 > kyoui\ ;
+誇大 > kodai\ ;
+火色 > hiiro\ ;
+然様 > sayou\ ;
+衣魚 > shimi\ ;
+誘因 > yuuin\ ;
+粗製 > sosei\ ;
+文句 > monku\ ;
+無水 > musui\ ;
+烽火 > houka\ ;
+精華 > seika\ ;
+奇体 > kitai\ ;
+無毛 > mumou\ ;
+繭価 > kenka\ ;
+電器 > denki\ ;
+図面 > zumen\ ;
+緩徐 > kanjo\ ;
+放屁 > houhi\ ;
+売女 > baita\ ;
+天助 > tenjo\ ;
+米貨 > beika\ ;
+固陋 > korou\ ;
+無残 > muzan\ ;
+開花 > kaika\ ;
+無死 > mushi\ ;
+文化 > bunka\ ;
+奇人 > kijin\ ;
+断乎 > danko\ ;
+増援 > zouen\ ;
+夜叉 > yasha\ ;
+基盤 > kiban\ ;
+太刀 > tachi\ ;
+陰晴 > insei\ ;
+士女 > shijo\ ;
+大判 > ooban\ ;
+素直 > sunao\ ;
+親爺 > oyaji\ ;
+親父 > oyaji\ ;
+課制 > kasei\ ;
+需品 > juhin\ ;
+補講 > hokou\ ;
+難場 > nanba\ ;
+維新 > ishin\ ;
+売場 > uriba\ ;
+夷俗 > izoku\ ;
+回顧 > kaiko\ ;
+夜勤 > yakin\ ;
+大円 > daien\ ;
+計時 > keiji\ ;
+塩梅 > anbai\ ;
+陰文 > inbun\ ;
+院本 > inpon\ ;
+多勢 > tazei\ ;
+隔意 > kakui\ ;
+四顧 > shiko\ ;
+間者 > kanja\ ;
+大儒 > daiju\ ;
+語原 > gogen\ ;
+大儀 > taigi\ ;
+夜前 > yazen\ ;
+補訂 > hotei\ ;
+米語 > beigo\ ;
+阻止 > soshi\ ;
+外務 > gaimu\ ;
+雑多 > zatta\ ;
+夜分 > yabun\ ;
+敗因 > haiin\ ;
+米話 > beiwa\ ;
+坐視 > zashi\ ;
+斉備 > seibi\ ;
+多分 > tabun\ ;
+墓所 > bosho\ ;
+語勢 > gosei\ ;
+誤判 > gohan\ ;
+採譜 > saifu\ ;
+壇家 > danka\ ;
+壮図 > souto\ ;
+図鑑 > zukan\ ;
+夜光 > yakou\ ;
+点画 > tenga\ ;
+除数 > josuu\ ;
+電化 > denka\ ;
+誤写 > gosha\ ;
+控訴 > kouso\ ;
+多元 > tagen\ ;
+天位 > ten''i\ ;
+雲台 > undai\ ;
+西瓜 > suika\ ;
+認否 > ninpi\ ;
+無根 > mukon\ ;
+変化 > henge\ ;
+院政 > insei\ ;
+大佐 > taisa\ ;
+認可 > ninka\ ;
+夫人 > fujin\ ;
+火線 > kasen\ ;
+網戸 > amido\ ;
+精義 > seigi\ ;
+誰何 > suika\ ;
+記憶 > kioku\ ;
+製菓 > seika\ ;
+大事 > daiji\ ;
+濫費 > ranpi\ ;
+天下 > tenka\ ;
+文事 > bunji\ ;
+擬態 > gitai\ ;
+隠居 > inkyo\ ;
+整備 > seibi\ ;
+紫煙 > shien\ ;
+敬具 > keigu\ ;
+粗茶 > socha\ ;
+夜会 > yakai\ ;
+無智 > muchi\ ;
+隣家 > rinka\ ;
+純理 > junri\ ;
+離合 > rigou\ ;
+難句 > nanku\ ;
+糊精 > kosei\ ;
+緞子 > donsu\ ;
+離反 > rihan\ ;
+素片 > sohen\ ;
+煙弾 > endan\ ;
+誤伝 > goden\ ;
+雪加 > sekka\ ;
+糸目 > itome\ ;
+絵柄 > egara\ ;
+記念 > kinen\ ;
+褒美 > houbi\ ;
+雄図 > yuuto\ ;
+災禍 > saika\ ;
+無断 > mudan\ ;
+烈火 > rekka\ ;
+数個 > suuko\ ;
+陰惨 > insan\ ;
+無数 > musuu\ ;
+絵札 > efuda\ ;
+外事 > gaiji\ ;
+数価 > suuka\ ;
+綿布 > menpu\ ;
+蠧魚 > shimi\ ;
+基点 > kiten\ ;
+陰性 > insei\ ;
+電位 > den''i\ ;
+詠嘆 > eitan\ ;
+精粗 > seiso\ ;
+雨具 > amagu\ ;
+変位 > hen''i\ ;
+陰影 > in''ei\ ;
+規準 > kijun\ ;
+総嫁 > souka\ ;
+点火 > tenka\ ;
+離党 > ritou\ ;
+掩蔽 > enpei\ ;
+変事 > henji\ ;
+詩句 > shiku\ ;
+難儀 > nangi\ ;
+絃歌 > genka\ ;
+試合 > shiai\ ;
+隠士 > inshi\ ;
+掩蓋 > engai\ ;
+墳墓 > funbo\ ;
+縁台 > endai\ ;
+雲井 > kumoi\ ;
+衰運 > suiun\ ;
+基準 > kijun\ ;
+零下 > reika\ ;
+雅号 > gagou\ ;
+基源 > kigen\ ;
+詠吟 > eigin\ ;
+土製 > dosei\ ;
+詠史 > eishi\ ;
+煙害 > engai\ ;
+政務 > seimu\ ;
+場末 > basue\ ;
+回避 > kaihi\ ;
+雲上 > unjou\ ;
+改印 > kaiin\ ;
+綾子 > rinzu\ ;
+無才 > musai\ ;
+炬火 > kyoka\ ;
+開祖 > kaiso\ ;
+火砲 > kahou\ ;
+開示 > kaiji\ ;
+売価 > baika\ ;
+米英 > beiei\ ;
+煩多 > hanta\ ;
+声価 > seika\ ;
+隠坊 > onbou\ ;
+綸子 > rinzu\ ;
+隻句 > sekku\ ;
+無慮 > muryo\ ;
+雪下 > sekka\ ;
+堀江 > horie\ ;
+離任 > rinin\ ;
+結果 > kekka\ ;
+雨中 > uchuu\ ;
+衰躯 > suiku\ ;
+紅炎 > kouen\ ;
+綴字 > teiji\ ;
+難事 > nanji\ ;
+地蔵 > jizou\ ;
+無想 > musou\ ;
+無惨 > muzan\ ;
+累次 > ruiji\ ;
+無情 > mujou\ ;
+緩和 > kanwa\ ;
+規正 > kisei\ ;
+詐取 > sashu\ ;
+無恥 > muchi\ ;
+装荷 > souka\ ;
+無性 > musei\ ;
+雅兄 > gakei\ ;
+粗糖 > sotou\ ;
+隠喩 > in''yu\ ;
+無念 > munen\ ;
+回路 > kairo\ ;
+雇傭 > koyou\ ;
+親木 > oyagi\ ;
+雑作 > zousa\ ;
+無形 > mukei\ ;
+限度 > gendo\ ;
+煙塵 > enjin\ ;
+塁打 > ruida\ ;
+故人 > kojin\ ;
+土蔵 > dozou\ ;
+西武 > seibu\ ;
+炎炎 > en''en\ ;
+見様 > miyou\ ;
+故主 > koshu\ ;
+西欧 > seiou\ ;
+覇権 > haken\ ;
+院宣 > inzen\ ;
+粗笨 > sohon\ ;
+紡機 > bouki\ ;
+図解 > zukai\ ;
+在荷 > zaika\ ;
+闘気 > touki\ ;
+地色 > jiiro\ ;
+無帽 > mubou\ ;
+無常 > mujou\ ;
+土葬 > dosou\ ;
+政事 > seiji\ ;
+措置 > sochi\ ;
+墓地 > bochi\ ;
+総員 > souin\ ;
+随喜 > zuiki\ ;
+在英 > zaiei\ ;
+糜爛 > biran\ ;
+総和 > souwa\ ;
+雅人 > gajin\ ;
+場所 > basho\ ;
+街路 > gairo\ ;
+附帯 > futai\ ;
+塗工 > tokou\ ;
+回議 > kaigi\ ;
+随員 > zuiin\ ;
+堅果 > kenka\ ;
+許否 > kyohi\ ;
+拗音 > youon\ ;
+許可 > kyoka\ ;
+見栄 > mibae\ ;
+絹布 > kenpu\ ;
+隊員 > taiin\ ;
+陶土 > toudo\ ;
+提示 > teiji\ ;
+按配 > anbai\ ;
+無尽 > mujin\ ;
+除外 > jogai\ ;
+増員 > zouin\ ;
+絵巻 > emaki\ ;
+行路 > kouro\ ;
+挿話 > souwa\ ;
+見本 > mihon\ ;
+院外 > ingai\ ;
+総務 > soumu\ ;
+闊歩 > kappo\ ;
+噪音 > souon\ ;
+基板 > kiban\ ;
+陶器 > touki\ ;
+継夫 > keifu\ ;
+無害 > mugai\ ;
+隠元 > ingen\ ;
+無官 > mukan\ ;
+訃報 > fuhou\ ;
+基本 > kihon\ ;
+粗砥 > arato\ ;
+報恩 > houon\ ;
+隷下 > reika\ ;
+素材 > sozai\ ;
+降嫁 > kouka\ ;
+総出 > soude\ ;
+見映 > mibae\ ;
+綽名 > adana\ ;
+園芸 > engei\ ;
+灯火 > touka\ ;
+解字 > kaiji\ ;
+捕虜 > horyo\ ;
+隣保 > rinpo\ ;
+墓参 > bosan\ ;
+火災 > kasai\ ;
+計器 > keiki\ ;
+組成 > sosei\ ;
+裸眼 > ragan\ ;
+粗相 > sosou\ ;
+拾遺 > shuui\ ;
+絶家 > zekke\ ;
+記名 > kimei\ ;
+衣裳 > ishou\ ;
+増加 > zouka\ ;
+記号 > kigou\ ;
+濾紙 > roshi\ ;
+阻害 > sogai\ ;
+地縁 > chien\ ;
+無始 > mushi\ ;
+囚衣 > shuui\ ;
+衣装 > ishou\ ;
+摩損 > mason\ ;
+基数 > kisuu\ ;
+衛視 > eishi\ ;
+国華 > kokka\ ;
+塔婆 > touba\ ;
+素数 > sosuu\ ;
+坐禅 > zazen\ ;
+墓前 > bozen\ ;
+隠亡 > onbou\ ;
+無声 > musei\ ;
+地紋 > jimon\ ;
+掲示 > keiji\ ;
+演題 > endai\ ;
+納期 > nouki\ ;
+撒布 > sanpu\ ;
+堅持 > kenji\ ;
+擬勢 > gisei\ ;
+国花 > kokka\ ;
+地米 > jimai\ ;
+親御 > oyago\ ;
+点播 > tenpa\ ;
+濃艶 > nouen\ ;
+訴人 > sonin\ ;
+街衢 > gaiku\ ;
+開演 > kaien\ ;
+討匪 > touhi\ ;
+経度 > keido\ ;
+擬制 > gisei\ ;
+紋日 > monbi\ ;
+授精 > jusei\ ;
+除名 > jomei\ ;
+灯油 > touyu\ ;
+除号 > jogou\ ;
+陶冶 > touya\ ;
+困苦 > konku\ ;
+披露 > hirou\ ;
+除去 > jokyo\ ;
+院号 > ingou\ ;
+隊伍 > taigo\ ;
+紅旗 > kouki\ ;
+階下 > kaika\ ;
+投飛 > touhi\ ;
+蟻酸 > gisan\ ;
+素懐 > sokai\ ;
+地租 > chiso\ ;
+細微 > saibi\ ;
+訛伝 > kaden\ ;
+拝辞 > haiji\ ;
+土管 > dokan\ ;
+地祇 > chigi\ ;
+塊土 > kaido\ ;
+裏目 > urame\ ;
+持論 > jiron\ ;
+視度 > shido\ ;
+炎暑 > ensho\ ;
+精油 > seiyu\ ;
+粗煮 > arani\ ;
+闘技 > tougi\ ;
+挿花 > souka\ ;
+擬人 > gijin\ ;
+精気 > seiki\ ;
+視差 > shisa\ ;
+無名 > mumei\ ;
+素性 > sujou\ ;
+親字 > oyaji\ ;
+阻喪 > sosou\ ;
+納戸 > nando\ ;
+無双 > musou\ ;
+塩分 > enbun\ ;
+素志 > soshi\ ;
+細工 > saiku\ ;
+陪侍 > baiji\ ;
+堰堤 > entei\ ;
+無勢 > buzei\ ;
+基底 > kitei\ ;
+掻爬 > souha\ ;
+圧砕 > assai\ ;
+基幹 > kikan\ ;
+揮毫 > kigou\ ;
+無効 > mukou\ ;
+地盤 > jiban\ ;
+囲繞 > inyou\ ;
+拝賀 > haiga\ ;
+火桶 > hioke\ ;
+推理 > suiri\ ;
+粗漏 > sorou\ ;
+扶養 > fuyou\ ;
+捕縄 > hojou\ ;
+絶句 > zekku\ ;
+四股 > shiko\ ;
+簡素 > kanso\ ;
+押送 > ousou\ ;
+土砂 > dosha\ ;
+無冠 > mukan\ ;
+点差 > tensa\ ;
+堡塁 > horui\ ;
+操作 > sousa\ ;
+純度 > jundo\ ;
+言下 > genka\ ;
+規定 > kitei\ ;
+火曜 > kayou\ ;
+滋養 > jiyou\ ;
+換気 > kanki\ ;
+開架 > kaika\ ;
+圧痕 > akkon\ ;
+批難 > hinan\ ;
+製油 > seiyu\ ;
+器財 > kizai\ ;
+閑暇 > kanka\ ;
+火星 > kasei\ ;
+陛下 > heika\ ;
+角力 > sumou\ ;
+精査 > seisa\ ;
+地理 > chiri\ ;
+場味 > baaji\ ;
+算譜 > sanpu\ ;
+烈婦 > reppu\ ;
+塑像 > sozou\ ;
+授産 > jusan\ ;
+無体 > mutai\ ;
+行脚 > angya\ ;
+無住 > mujuu\ ;
+揺曳 > youei\ ;
+素子 > soshi\ ;
+経営 > keiei\ ;
+土用 > doyou\ ;
+無代 > mudai\ ;
+蠑螺 > sazae\ ;
+螺鈿 > raden\ ;
+点字 > tenji\ ;
+無人 > munin\ ;
+土瓶 > dobin\ ;
+堂奥 > douou\ ;
+防具 > bougu\ ;
+降下 > kouka\ ;
+紺地 > konji\ ;
+長柄 > nagae\ ;
+襟度 > kindo\ ;
+無上 > mujou\ ;
+衣糧 > iryou\ ;
+絶佳 > zekka\ ;
+素姓 > sujou\ ;
+防備 > boubi\ ;
+図示 > zushi\ ;
+結句 > kekku\ ;
+城府 > joufu\ ;
+融除 > yuujo\ ;
+扣除 > koujo\ ;
+阿亀 > okame\ ;
+打順 > dajun\ ;
+抱負 > houfu\ ;
+排煙 > haien\ ;
+漢語 > kango\ ;
+摂家 > sekke\ ;
+堅固 > kengo\ ;
+火手 > kashu\ ;
+手順 > tejun\ ;
+打電 > daden\ ;
+答辞 > touji\ ;
+提案 > teian\ ;
+基地 > kichi\ ;
+圧点 > atten\ ;
+開扉 > kaihi\ ;
+補正 > hosei\ ;
+握斧 > akufu\ ;
+披講 > hikou\ ;
+打開 > dakai\ ;
+要図 > youzu\ ;
+西土 > seido\ ;
+要因 > youin\ ;
+競馬 > keiba\ ;
+粗木 > araki\ ;
+漏話 > rouwa\ ;
+採油 > saiyu\ ;
+被災 > hisai\ ;
+場代 > badai\ ;
+粗暴 > sobou\ ;
+地温 > chion\ ;
+措止 > soshi\ ;
+裏毛 > urake\ ;
+門扉 > monpi\ ;
+門戸 > monko\ ;
+糖度 > toudo\ ;
+開悟 > kaigo\ ;
+紙器 > shiki\ ;
+披見 > hiken\ ;
+摸写 > mosha\ ;
+表着 > uwagi\ ;
+炭団 > tadon\ ;
+回目 > kaime\ ;
+抗議 > kougi\ ;
+滅金 > mekki\ ;
+粗放 > sohou\ ;
+要員 > youin\ ;
+打鍵 > daken\ ;
+累加 > ruika\ ;
+蝟集 > ishuu\ ;
+炊婦 > suifu\ ;
+点呼 > tenko\ ;
+排気 > haiki\ ;
+摸倣 > mohou\ ;
+規制 > kisei\ ;
+炎天 > enten\ ;
+因由 > in''yu\ ;
+地歩 > chiho\ ;
+手錠 > tejou\ ;
+濶歩 > kappo\ ;
+地歌 > jiuta\ ;
+門徒 > monto\ ;
+営養 > eiyou\ ;
+炊夫 > suifu\ ;
+挿画 > souga\ ;
+図版 > zuhan\ ;
+精度 > seido\ ;
+援引 > en''in\ ;
+滞貨 > taika\ ;
+要務 > youmu\ ;
+火山 > kazan\ ;
+系図 > keizu\ ;
+圧死 > asshi\ ;
+手金 > tekin\ ;
+土民 > domin\ ;
+点前 > temae\ ;
+探査 > tansa\ ;
+純化 > junka\ ;
+納受 > nouju\ ;
+手配 > tehai\ ;
+拉致 > rachi\ ;
+衛生 > eisei\ ;
+補整 > hosei\ ;
+要具 > yougu\ ;
+補数 > hosuu\ ;
+炭化 > tanka\ ;
+授権 > juken\ ;
+純利 > junri\ ;
+筆記 > hikki\ ;
+細事 > saiji\ ;
+指示 > shiji\ ;
+粗悪 > soaku\ ;
+素体 > sotai\ ;
+演芸 > engei\ ;
+糞土 > fundo\ ;
+長居 > nagai\ ;
+漫罵 > manba\ ;
+紙価 > shika\ ;
+端銭 > hasen\ ;
+嘉言 > kagen\ ;
+粘度 > nendo\ ;
+箪笥 > tansu\ ;
+紀元 > kigen\ ;
+図法 > zuhou\ ;
+潤目 > urume\ ;
+国歌 > kokka\ ;
+開基 > kaiki\ ;
+湖面 > komen\ ;
+揚屋 > ageya\ ;
+土曜 > doyou\ ;
+納付 > noufu\ ;
+裏手 > urate\ ;
+螟蛾 > meiga\ ;
+圧政 > assei\ ;
+開園 > kaien\ ;
+土星 > dosei\ ;
+炎光 > enkou\ ;
+押絵 > oshie\ ;
+湯銭 > yusen\ ;
+閲兵 > eppei\ ;
+補弦 > hogen\ ;
+糸価 > shika\ ;
+行灯 > andon\ ;
+手話 > shuwa\ ;
+圧排 > appai\ ;
+手記 > shuki\ ;
+営造 > eizou\ ;
+地所 > jisho\ ;
+糖化 > touka\ ;
+営農 > einou\ ;
+補巻 > hokan\ ;
+裕度 > yuudo\ ;
+糊口 > kokou\ ;
+技芸 > gigei\ ;
+閹人 > enjin\ ;
+捜査 > sousa\ ;
+手製 > tesei\ ;
+城下 > jouka\ ;
+火勢 > kasei\ ;
+拝眉 > haibi\ ;
+挽歌 > banka\ ;
+授戒 > jukai\ ;
+粗大 > sodai\ ;
+戦費 > senpi\ ;
+固有 > koyuu\ ;
+温顔 > ongan\ ;
+炊事 > suiji\ ;
+炎上 > enjou\ ;
+捻挫 > nenza\ ;
+製塩 > seien\ ;
+火刑 > kakei\ ;
+演算 > enzan\ ;
+温順 > onjun\ ;
+開化 > kaika\ ;
+補導 > hodou\ ;
+因業 > ingou\ ;
+技能 > ginou\ ;
+突飛 > toppi\ ;
+国旗 > kokki\ ;
+図書 > tosho\ ;
+火光 > kakou\ ;
+補完 > hokan\ ;
+簡易 > kan''i\ ;
+衒気 > genki\ ;
+米寿 > beiju\ ;
+投網 > toami\ ;
+製図 > seizu\ ;
+粘土 > nendo\ ;
+損保 > sonpo\ ;
+裏屋 > uraya\ ;
+措定 > sotei\ ;
+扶育 > fuiku\ ;
+閣下 > kakka\ ;
+戦記 > senki\ ;
+手薄 > teusu\ ;
+管理 > kanri\ ;
+在庫 > zaiko\ ;
+捧持 > houji\ ;
+童話 > douwa\ ;
+蝦蛄 > shako\ ;
+援兵 > enpei\ ;
+坑夫 > koufu\ ;
+被弾 > hidan\ ;
+血気 > kekki\ ;
+嘉肴 > kakou\ ;
+器用 > kiyou\ ;
+間代 > madai\ ;
+圧巻 > akkan\ ;
+戒護 > kaigo\ ;
+灯下 > touka\ ;
+漫画 > manga\ ;
+揚句 > ageku\ ;
+喚起 > kanki\ ;
+補填 > hoten\ ;
+衣服 > ifuku\ ;
+粗品 > sohin\ ;
+土工 > dokou\ ;
+清音 > seion\ ;
+因数 > insuu\ ;
+成語 > seigo\ ;
+四日 > yokka\ ;
+手荒 > teara\ ;
+米塩 > beien\ ;
+掩壕 > engou\ ;
+嘆美 > tanbi\ ;
+蝗虫 > batta\ ;
+衣料 > iryou\ ;
+捕手 > hoshu\ ;
+在家 > zaike\ ;
+補回 > hokai\ ;
+衛星 > eisei\ ;
+門下 > monka\ ;
+行李 > kouri\ ;
+噴火 > funka\ ;
+粗利 > arari\ ;
+被害 > higai\ ;
+節気 > sekki\ ;
+裏地 > uraji\ ;
+鍍金 > mekki\ ;
+嘉納 > kanou\ ;
+淫風 > inpuu\ ;
+打者 > dasha\ ;
+地声 > jigoe\ ;
+蜿蜒 > en''en\ ;
+添附 > tenpu\ ;
+固形 > kokei\ ;
+折目 > orime\ ;
+国庫 > kokko\ ;
+濃度 > noudo\ ;
+筆禍 > hikka\ ;
+蜻蛉 > tonbo\ ;
+行方 > yukue\ ;
+衍文 > enbun\ ;
+裸像 > razou\ ;
+四手 > shide\ ;
+図形 > zukei\ ;
+垂下 > suika\ ;
+蜂起 > houki\ ;
+ＰＣ > pīshī\ ;
+打線 > dasen\ ;
+地図 > chizu\ ;
+表意 > hyoui\ ;
+技研 > giken\ ;
+土壌 > dojou\ ;
+手織 > teori\ ;
+裸体 > ratai\ ;
+図工 > zukou\ ;
+衛所 > eisho\ ;
+衰微 > suibi\ ;
+裏名 > urana\ ;
+土塊 > dokai\ ;
+手練 > teren\ ;
+土塁 > dorui\ ;
+土塀 > dobei\ ;
+唐音 > touon\ ;
+因循 > injun\ ;
+簿外 > bogai\ ;
+回忌 > kaiki\ ;
+採否 > saihi\ ;
+技監 > gikan\ ;
+国家 > kokka\ ;
+戎葵 > juuki\ ;
+噴気 > funki\ ;
+空輸 > kuuyu\ ;
+土地 > tochi\ ;
+補充 > hojuu\ ;
+坑儒 > kouju\ ;
+固定 > kotei\ ;
+地唄 > jiuta\ ;
+固守 > koshu\ ;
+挙措 > kyoso\ ;
+打算 > dasan\ ;
+坐像 > zazou\ ;
+土嚢 > donou\ ;
+裁可 > saika\ ;
+地味 > chimi\ ;
+突起 > tokki\ ;
+営舎 > eisha\ ;
+回帰 > kaiki\ ;
+漸次 > zenji\ ;
+喫茶 > kissa\ ;
+空路 > kuuro\ ;
+国威 > kokui\ ;
+潜時 > senji\ ;
+地区 > chiku\ ;
+指揮 > shiki\ ;
+按排 > anbai\ ;
+補任 > honin\ ;
+漫歩 > manpo\ ;
+米価 > beika\ ;
+衆意 > shuui\ ;
+漁火 > gyoka\ ;
+懇話 > konwa\ ;
+空費 > kuuhi\ ;
+蜉蝣 > fuyuu\ ;
+蛮語 > bango\ ;
+装具 > sougu\ ;
+戯絵 > zaree\ ;
+坐乗 > zajou\ ;
+団子 > dango\ ;
+土台 > dodai\ ;
+涼雨 > ryouu\ ;
+装備 > soubi\ ;
+因子 > inshi\ ;
+按手 > anshu\ ;
+坊主 > bouzu\ ;
+衆徒 > shuto\ ;
+漏洩 > rouei\ ;
+圧制 > assei\ ;
+四季 > shiki\ ;
+営繕 > eizen\ ;
+器械 > kikai\ ;
+移駐 > ichuu\ ;
+持戒 > jikai\ ;
+虎魚 > okoze\ ;
+算木 > sangi\ ;
+地価 > chika\ ;
+手相 > tesou\ ;
+器材 > kizai\ ;
+鑑査 > kansa\ ;
+圧倒 > attou\ ;
+海鰻 > anago\ ;
+担架 > tanka\ ;
+鋭鋒 > eihou\ ;
+排他 > haita\ ;
+憂身 > ukimi\ ;
+批点 > hiten\ ;
+土偶 > doguu\ ;
+行宮 > anguu\ ;
+地下 > chika\ ;
+箇条 > kajou\ ;
+土侯 > dokou\ ;
+戦禍 > senka\ ;
+等温 > touon\ ;
+濃化 > nouka\ ;
+哀願 > aigan\ ;
+挿図 > souzu\ ;
+土人 > dojin\ ;
+激化 > gekka\ ;
+愛餐 > aisan\ ;
+咽頭 > intou\ ;
+箇数 > kosuu\ ;
+善美 > zenbi\ ;
+投機 > touki\ ;
+蛇行 > dakou\ ;
+技法 > gihou\ ;
+衡器 > kouki\ ;
+浅黄 > asagi\ ;
+慶賀 > keiga\ ;
+括弧 > kakko\ ;
+等比 > touhi\ ;
+抛棄 > houki\ ;
+街図 > gaizu\ ;
+園丁 > entei\ ;
+拇指 > boshi\ ;
+投棄 > touki\ ;
+打点 > daten\ ;
+海霧 > kaimu\ ;
+漏斗 > routo\ ;
+篆字 > tenji\ ;
+渡船 > tosen\ ;
+渡航 > tokou\ ;
+滞欧 > taiou\ ;
+淫行 > inkou\ ;
+節季 > sekki\ ;
+箇所 > kasho\ ;
+固体 > kotai\ ;
+答案 > touan\ ;
+拘引 > kouin\ ;
+童画 > douga\ ;
+温習 > sarai\ ;
+節婦 > seppu\ ;
+拐引 > kaiin\ ;
+喝破 > kappa\ ;
+行員 > kouin\ ;
+街区 > gaiku\ ;
+黄鯛 > kidai\ ;
+和風 > wafuu\ ;
+螺旋 > rasen\ ;
+稟議 > ringi\ ;
+憂虞 > yuugu\ ;
+手淫 > shuin\ ;
+鋒起 > houki\ ;
+打法 > dahou\ ;
+淫蕩 > intou\ ;
+秘鍵 > hiken\ ;
+扶桑 > fusou\ ;
+虚辞 > kyoji\ ;
+衛兵 > eihei\ ;
+渦線 > kasen\ ;
+窺知 > kichi\ ;
+愚鈍 > gudon\ ;
+行務 > koumu\ ;
+鼠輩 > sohai\ ;
+挙句 > ageku\ ;
+回付 > kaifu\ ;
+範囲 > han''i\ ;
+渦紋 > kamon\ ;
+才気 > saiki\ ;
+海里 > kairi\ ;
+鼠蹊 > sokei\ ;
+戦火 > senka\ ;
+把握 > haaku\ ;
+悲鳴 > himei\ ;
+渡米 > tobei\ ;
+拳固 > genko\ ;
+投打 > touda\ ;
+指呼 > shiko\ ;
+麒麟 > kirin\ ;
+拷器 > gouki\ ;
+器官 > kikan\ ;
+鎖状 > sajou\ ;
+溢水 > issui\ ;
+慈訓 > jikun\ ;
+湖畔 > kohan\ ;
+海運 > kaiun\ ;
+憂苦 > yuuku\ ;
+嗟歎 > satan\ ;
+海辺 > umibe\ ;
+愛車 > aisha\ ;
+把手 > hashu\ ;
+持参 > jisan\ ;
+打棒 > dabou\ ;
+湯煎 > yusen\ ;
+浮遊 > fuyuu\ ;
+漢字 > kanji\ ;
+抒情 > jojou\ ;
+節句 > sekku\ ;
+移調 > ichou\ ;
+按分 > anbun\ ;
+悪魔 > akuma\ ;
+技手 > gishu\ ;
+湯灌 > yukan\ ;
+手桶 > teoke\ ;
+稲荷 > inari\ ;
+源氏 > genji\ ;
+投影 > touei\ ;
+海路 > kairo\ ;
+扶持 > fuchi\ ;
+浦辺 > urabe\ ;
+和金 > wakin\ ;
+麝香 > jakou\ ;
+鈍麻 > donma\ ;
+啓示 > keiji\ ;
+悪馬 > akume\ ;
+手本 > tehon\ ;
+減磨 > genma\ ;
+悲願 > higan\ ;
+突破 > toppa\ ;
+海豚 > iruka\ ;
+懐疑 > kaigi\ ;
+蛇管 > jakan\ ;
+哀詩 > aishi\ ;
+潮位 > choui\ ;
+哀詞 > aishi\ ;
+打数 > dasuu\ ;
+愚論 > guron\ ;
+戦機 > senki\ ;
+所期 > shoki\ ;
+漁家 > gyoka\ ;
+手斧 > teono\ ;
+演奏 > ensou\ ;
+黙過 > mokka\ ;
+拝受 > haiju\ ;
+浪費 > rouhi\ ;
+手数 > tesuu\ ;
+戸板 > toita\ ;
+漢土 > kando\ ;
+演壇 > endan\ ;
+愚計 > gukei\ ;
+湯治 > touji\ ;
+鉛錘 > ensui\ ;
+節供 > sekku\ ;
+立派 > rippa\ ;
+泥鰌 > dojou\ ;
+等差 > tousa\ ;
+管区 > kanku\ ;
+愚見 > guken\ ;
+技師 > gishi\ ;
+惹起 > jakki\ ;
+拒否 > kyohi\ ;
+鉛鉱 > enkou\ ;
+味醂 > mirin\ ;
+命運 > meiun\ ;
+技巧 > gikou\ ;
+技工 > gikou\ ;
+鼻茸 > bijou\ ;
+錬磨 > renma\ ;
+秘計 > hikei\ ;
+私費 > shihi\ ;
+意訳 > iyaku\ ;
+蘇連 > soren\ ;
+哺育 > hoiku\ ;
+派遣 > haken\ ;
+想起 > souki\ ;
+銅貨 > douka\ ;
+悍馬 > kanba\ ;
+戯書 > gisho\ ;
+銘記 > meiki\ ;
+愚行 > gukou\ ;
+空疎 > kuuso\ ;
+浮言 > fugen\ ;
+漁夫 > gyofu\ ;
+拝具 > haigu\ ;
+戸数 > kosuu\ ;
+波高 > hakou\ ;
+戦果 > senka\ ;
+銀貨 > ginka\ ;
+端本 > hahon\ ;
+麻酔 > masui\ ;
+洋間 > youma\ ;
+鉄鎖 > tessa\ ;
+私議 > shigi\ ;
+禁錮 > kinko\ ;
+流転 > ruten\ ;
+漢和 > kanwa\ ;
+手技 > shugi\ ;
+鼻腔 > bikou\ ;
+浴衣 > yokui\ ;
+漁場 > gyoba\ ;
+渦状 > kajou\ ;
+意表 > ihyou\ ;
+戯文 > gibun\ ;
+液肥 > ekihi\ ;
+技官 > gikan\ ;
+私語 > shigo\ ;
+戦時 > senji\ ;
+淫祠 > inshi\ ;
+空理 > kuuri\ ;
+所持 > shoji\ ;
+懐炉 > kairo\ ;
+満期 > manki\ ;
+営林 > eirin\ ;
+湖水 > kosui\ ;
+和讚 > wasan\ ;
+私記 > shiki\ ;
+戦旗 > senki\ ;
+端数 > hasuu\ ;
+嘘字 > usoji\ ;
+成案 > seian\ ;
+祈願 > kigan\ ;
+温点 > onten\ ;
+波頭 > hatou\ ;
+成果 > seika\ ;
+愛蔵 > aizou\ ;
+麦酒 > biiru\ ;
+名馬 > meiba\ ;
+和訓 > wakun\ ;
+戸戸 > kokou\ ;
+和解 > wakai\ ;
+波面 > hamen\ ;
+管下 > kanka\ ;
+手当 > teate\ ;
+悼辞 > touji\ ;
+秘蔵 > hizou\ ;
+稲穂 > inaho\ ;
+鼻緒 > hanao\ ;
+和製 > wasei\ ;
+鋤簾 > joren\ ;
+種種 > shuju\ ;
+游泳 > yuuei\ ;
+和装 > wasou\ ;
+担保 > tanpo\ ;
+和裁 > wasai\ ;
+憂目 > ukime\ ;
+野鶏 > yakei\ ;
+温湯 > ontou\ ;
+同音 > douon\ ;
+憮然 > buzen\ ;
+悪運 > akuun\ ;
+懸架 > kenga\ ;
+患部 > kanbu\ ;
+漁区 > gyoku\ ;
+拉丁 > raten\ ;
+薬鑵 > yakan\ ;
+銘菓 > meika\ ;
+蜜柑 > mikan\ ;
+黒衣 > kokue\ ;
+温泉 > onsen\ ;
+悠遠 > yuuen\ ;
+戦意 > sen''i\ ;
+悟道 > godou\ ;
+味見 > ajimi\ ;
+渡海 > tokai\ ;
+営所 > eisho\ ;
+温水 > onsui\ ;
+鼻端 > bitan\ ;
+渡洋 > toyou\ ;
+愛育 > aiiku\ ;
+滅多 > metta\ ;
+号音 > gouon\ ;
+淫猥 > inwai\ ;
+善果 > zenka\ ;
+情誼 > jougi\ ;
+漁具 > gyogu\ ;
+悪路 > akuro\ ;
+浅蜊 > asari\ ;
+情話 > jouwa\ ;
+種皮 > shuhi\ ;
+愚者 > gusha\ ;
+愚考 > gukou\ ;
+戦後 > sengo\ ;
+鉛製 > ensei\ ;
+禀議 > ringi\ ;
+才媛 > saien\ ;
+扇子 > sensu\ ;
+慰留 > iryuu\ ;
+移籍 > iseki\ ;
+野馬 > nouma\ ;
+端座 > tanza\ ;
+禅話 > zenwa\ ;
+我慢 > gaman\ ;
+喜捨 > kisha\ ;
+古風 > kofuu\ ;
+稲田 > inada\ ;
+受験 > juken\ ;
+空気 > kuuki\ ;
+我情 > gajou\ ;
+才女 > saijo\ ;
+空母 > kuubo\ ;
+唾液 > daeki\ ;
+満座 > manza\ ;
+営庭 > eitei\ ;
+禁裡 > kinri\ ;
+禁裏 > kinri\ ;
+味蕾 > mirai\ ;
+虚空 > kokuu\ ;
+悲観 > hikan\ ;
+淵源 > engen\ ;
+和船 > wasen\ ;
+洋語 > yougo\ ;
+慈眼 > jigen\ ;
+営巣 > eisou\ ;
+社運 > shaun\ ;
+批判 > hihan\ ;
+手垢 > teaka\ ;
+融和 > yuuwa\ ;
+悪計 > akkei\ ;
+批准 > hijun\ ;
+鼓童 > kodou\ ;
+吏道 > rodou\ ;
+投与 > touyo\ ;
+投下 > touka\ ;
+懸想 > kesou\ ;
+受難 > junan\ ;
+戸外 > kogai\ ;
+懺悔 > zange\ ;
+鋳物 > imono\ ;
+才器 > saiki\ ;
+竪子 > jushi\ ;
+符合 > fugou\ ;
+添水 > souzu\ ;
+符号 > fugou\ ;
+技倒 > gitou\ ;
+温暖 > ondan\ ;
+等価 > touka\ ;
+渡来 > torai\ ;
+名辞 > meiji\ ;
+恥部 > chibu\ ;
+童子 > douji\ ;
+懸念 > kenen\ ;
+悪行 > akkou\ ;
+酸鼻 > sanbi\ ;
+淡湖 > tanko\ ;
+黄花 > kouka\ ;
+成就 > jouju\ ;
+租税 > sozei\ ;
+善意 > zen''i\ ;
+嗟嘆 > satan\ ;
+清楚 > seiso\ ;
+鼠盗 > sotou\ ;
+泰語 > taigo\ ;
+愛社 > aisha\ ;
+沿道 > endou\ ;
+喪家 > souka\ ;
+古銭 > kosen\ ;
+社費 > shahi\ ;
+童女 > doujo\ ;
+否認 > hinin\ ;
+溶化 > youka\ ;
+湖底 > kotei\ ;
+淋漓 > rinri\ ;
+所員 > shoin\ ;
+嘉例 > karei\ ;
+清栄 > seiei\ ;
+鼠疫 > soeki\ ;
+善後 > zengo\ ;
+祈請 > kisei\ ;
+法貨 > houka\ ;
+祈誓 > kisei\ ;
+流罪 > ruzai\ ;
+端坐 > tanza\ ;
+嗚咽 > oetsu\ ;
+恩赦 > onsha\ ;
+和紙 > washi\ ;
+手勢 > tezei\ ;
+減摩 > genma\ ;
+台辞 > daiji\ ;
+淘汰 > touta\ ;
+恩賜 > onshi\ ;
+洒落 > share\ ;
+海砂 > kaisa\ ;
+手前 > temae\ ;
+台輪 > daiwa\ ;
+湖岸 > kogan\ ;
+洵美 > junbi\ ;
+古道 > kodou\ ;
+第五 > daigo\ ;
+第二 > daini\ ;
+示談 > jidan\ ;
+野郎 > yarou\ ;
+野選 > yasen\ ;
+法語 > hougo\ ;
+合議 > gougi\ ;
+法話 > houwa\ ;
+汗馬 > kanba\ ;
+懇意 > kon''i\ ;
+懊悩 > ounou\ ;
+打倒 > datou\ ;
+名誉 > meiyo\ ;
+愚痴 > guchi\ ;
+営団 > eidan\ ;
+水鶏 > kuina\ ;
+叉銃 > sajuu\ ;
+温情 > onjou\ ;
+移牒 > ichou\ ;
+立夏 > rikka\ ;
+唐檜 > touhi\ ;
+情義 > jougi\ ;
+錦旗 > kinki\ ;
+愛用 > aiyou\ ;
+法規 > houki\ ;
+懈怠 > getai\ ;
+租界 > sokai\ ;
+愚生 > gusei\ ;
+釈迦 > shaka\ ;
+湯垢 > yuaka\ ;
+恋路 > koiji\ ;
+派米 > habei\ ;
+成因 > seiin\ ;
+厦門 > kamon\ ;
+法被 > happi\ ;
+洋舞 > youbu\ ;
+虎狼 > korou\ ;
+古趾 > koshi\ ;
+藍色 > aiiro\ ;
+端午 > tango\ ;
+虚無 > kyomu\ ;
+手代 > tedai\ ;
+愛玩 > aigan\ ;
+受身 > ukemi\ ;
+惨禍 > sanka\ ;
+渡御 > togyo\ ;
+水魔 > suima\ ;
+野趣 > yashu\ ;
+古賢 > koken\ ;
+戦務 > senmu\ ;
+浮生 > fusei\ ;
+快音 > kaion\ ;
+喧嘩 > kenka\ ;
+稚気 > chiki\ ;
+温帯 > ontai\ ;
+所作 > shosa\ ;
+古豪 > kogou\ ;
+金貨 > kinka\ ;
+愛犬 > aiken\ ;
+海獺 > rakko\ ;
+成員 > seiin\ ;
+準備 > junbi\ ;
+惣社 > souja\ ;
+磯辺 > isobe\ ;
+鉛管 > enkan\ ;
+鼻汁 > bijuu\ ;
+海狸 > kairi\ ;
+惰眠 > damin\ ;
+房事 > bouji\ ;
+叙賜 > joshi\ ;
+成否 > seihi\ ;
+受贈 > juzou\ ;
+悪罵 > akuba\ ;
+成句 > seiku\ ;
+所与 > shoyo\ ;
+患者 > kanja\ ;
+古諺 > kogen\ ;
+可視 > kashi\ ;
+句読 > kutou\ ;
+黄禍 > kouka\ ;
+稲木 > inagi\ ;
+戦備 > senbi\ ;
+口語 > kougo\ ;
+古詩 > koshi\ ;
+戸主 > koshu\ ;
+里謡 > riyou\ ;
+古訓 > kokun\ ;
+空巣 > akisu\ ;
+古言 > kogen\ ;
+悪縁 > akuen\ ;
+温存 > onzon\ ;
+受講 > jukou\ ;
+印面 > inmen\ ;
+汽車 > kisha\ ;
+叡覧 > eiran\ ;
+黄砂 > kousa\ ;
+穎才 > eisai\ ;
+里言 > rigen\ ;
+単騎 > tanki\ ;
+醍醐 > daigo\ ;
+済度 > saido\ ;
+危難 > kinan\ ;
+泳者 > eisha\ ;
+名菓 > meika\ ;
+参賀 > sanga\ ;
+危険 > kiken\ ;
+営倉 > eisou\ ;
+喪具 > sougu\ ;
+必須 > hissu\ ;
+憂懼 > yuuku\ ;
+反語 > hango\ ;
+鼻根 > bikon\ ;
+友誼 > yuugi\ ;
+名花 > meika\ ;
+決起 > kekki\ ;
+麻睡 > masui\ ;
+反訴 > hanso\ ;
+鋭敏 > eibin\ ;
+蘇生 > sosei\ ;
+愛液 > aieki\ ;
+参議 > sangi\ ;
+名舗 > meiho\ ;
+派生 > hasei\ ;
+秘湯 > hitou\ ;
+黄疸 > oudan\ ;
+気風 > kifuu\ ;
+海淵 > kaien\ ;
+穴子 > anago\ ;
+喇叭 > rappa\ ;
+鍼医 > harii\ ;
+怪訝 > kegen\ ;
+薬罐 > yakan\ ;
+薬缶 > yakan\ ;
+思議 > shigi\ ;
+穏当 > ontou\ ;
+野蛮 > yaban\ ;
+印鑑 > inkan\ ;
+怨言 > engen\ ;
+午餐 > gosan\ ;
+微風 > bifuu\ ;
+港図 > kouzu\ ;
+汚辱 > ojoku\ ;
+哀歓 > aikan\ ;
+浮游 > fuyuu\ ;
+薄荷 > hakka\ ;
+銃火 > juuka\ ;
+愚民 > gumin\ ;
+秘法 > hihou\ ;
+呈示 > teiji\ ;
+喪主 > moshu\ ;
+南阿 > nan''a\ ;
+浮浪 > furou\ ;
+黄班 > ouhan\ ;
+渾名 > adana\ ;
+海気 > kaiki\ ;
+御飯 > gohan\ ;
+気随 > kizui\ ;
+名義 > meigi\ ;
+波線 > hasen\ ;
+沙蚕 > gokai\ ;
+同義 > dougi\ ;
+卑陋 > hirou\ ;
+民需 > minju\ ;
+稀書 > kisho\ ;
+虚栄 > kyoei\ ;
+涅槃 > nehan\ ;
+添字 > soeji\ ;
+合羽 > kappa\ ;
+員数 > inzuu\ ;
+浮気 > uwaki\ ;
+波紋 > hamon\ ;
+禅画 > zenga\ ;
+穴場 > anaba\ ;
+碑銘 > himei\ ;
+和漢 > wakan\ ;
+懐古 > kaiko\ ;
+意欲 > iyoku\ ;
+情理 > jouri\ ;
+鋭感 > eikan\ ;
+野菜 > yasai\ ;
+古茶 > kocha\ ;
+神祇 > jingi\ ;
+浄火 > jouka\ ;
+神社 > jinja\ ;
+黄燐 > ourin\ ;
+浅瀬 > asase\ ;
+油脂 > yushi\ ;
+御難 > gonan\ ;
+鉛版 > enban\ ;
+重荷 > juuka\ ;
+蛹化 > youka\ ;
+野草 > yasou\ ;
+御陰 > okage\ ;
+可能 > kanou\ ;
+原語 > gengo\ ;
+蚕座 > sanza\ ;
+水運 > suiun\ ;
+温厚 > onkou\ ;
+湖上 > kojou\ ;
+右翼 > uyoku\ ;
+銀波 > ginpa\ ;
+厚誼 > kougi\ ;
+後顧 > kouko\ ;
+銀河 > ginga\ ;
+慕情 > bojou\ ;
+和洋 > wayou\ ;
+啖呵 > tanka\ ;
+名簿 > meibo\ ;
+医長 > ichou\ ;
+区間 > kukan\ ;
+洋画 > youga\ ;
+淋巴 > rinpa\ ;
+善事 > zenji\ ;
+渦動 > kadou\ ;
+薬禍 > yakka\ ;
+慇懃 > ingin\ ;
+念誦 > nenju\ ;
+愛書 > aisho\ ;
+祈祷 > kitou\ ;
+匕首 > hishu\ ;
+沿線 > ensen\ ;
+金肥 > kinpi\ ;
+古聖 > kosei\ ;
+情焔 > jouen\ ;
+原被 > genpi\ ;
+蕗草 > rosou\ ;
+淫奔 > inpon\ ;
+口耳 > kouji\ ;
+古老 > korou\ ;
+気重 > kiomo\ ;
+南都 > nanto\ ;
+南部 > nanbu\ ;
+鉱油 > kouyu\ ;
+情炎 > jouen\ ;
+淫売 > inbai\ ;
+秘本 > hihon\ ;
+愚昧 > gumai\ ;
+流浪 > rurou\ ;
+情火 > jouka\ ;
+水路 > suiro\ ;
+慈恵 > jikei\ ;
+秘書 > hisho\ ;
+気配 > kehai\ ;
+薬研 > yagen\ ;
+受胎 > jutai\ ;
+微醺 > bikun\ ;
+半里 > hanri\ ;
+法科 > houka\ ;
+油紙 > yushi\ ;
+稲子 > inago\ ;
+気道 > kidou\ ;
+比類 > hirui\ ;
+流民 > rumin\ ;
+千里 > senri\ ;
+秘方 > hihou\ ;
+同祖 > douso\ ;
+態度 > taido\ ;
+鉄火 > tekka\ ;
+河系 > kakei\ ;
+私案 > shian\ ;
+禍源 > kagen\ ;
+破顔 > hagan\ ;
+卑近 > hikin\ ;
+黄河 > kouga\ ;
+御釜 > okama\ ;
+御金 > okane\ ;
+浦曲 > urawa\ ;
+活気 > kakki\ ;
+半途 > hanto\ ;
+程度 > teido\ ;
+重縁 > juuen\ ;
+古紙 > koshi\ ;
+部首 > bushu\ ;
+都電 > toden\ ;
+鼓手 > koshu\ ;
+銃架 > juuka\ ;
+混和 > konwa\ ;
+汽艇 > kitei\ ;
+汽船 > kisen\ ;
+比隣 > hirin\ ;
+愚挙 > gukyo\ ;
+友義 > yuugi\ ;
+古米 > komai\ ;
+哀憫 > aibin\ ;
+減価 > genka\ ;
+哀憐 > airen\ ;
+彩雲 > saiun\ ;
+河童 > kappa\ ;
+淵叢 > ensou\ ;
+部類 > burui\ ;
+哀感 > aikan\ ;
+法皇 > houou\ ;
+哀愍 > aibin\ ;
+蔬菜 > sosai\ ;
+磨耗 > mamou\ ;
+浮揚 > fuyou\ ;
+和本 > wahon\ ;
+液安 > ekian\ ;
+空佐 > kuusa\ ;
+渡世 > tosei\ ;
+受納 > junou\ ;
+唐土 > toudo\ ;
+添加 > tenka\ ;
+哀情 > aijou\ ;
+哀悼 > aitou\ ;
+和書 > washo\ ;
+愛憐 > airen\ ;
+破門 > hamon\ ;
+受精 > jusei\ ;
+悪漢 > akkan\ ;
+卑賤 > hisen\ ;
+憂哭 > ukine\ ;
+卑賎 > hisen\ ;
+受粉 > jufun\ ;
+部面 > bumen\ ;
+鼻孔 > bikou\ ;
+科挙 > kakyo\ ;
+矮鶏 > chabo\ ;
+毫釐 > gouri\ ;
+愛想 > aisou\ ;
+情歌 > jouka\ ;
+黄楊 > tsuge\ ;
+愛情 > aijou\ ;
+鋳型 > igata\ ;
+微賤 > bisen\ ;
+微賎 > bisen\ ;
+後部 > koubu\ ;
+印行 > inkou\ ;
+名画 > meiga\ ;
+鼠巣 > sosou\ ;
+部隊 > butai\ ;
+和文 > wabun\ ;
+汽罐 > kikan\ ;
+汽缶 > kikan\ ;
+意慾 > iyoku\ ;
+単語 > tango\ ;
+薄着 > usugi\ ;
+情機 > jouki\ ;
+波状 > hajou\ ;
+示現 > jigen\ ;
+黄桃 > outou\ ;
+古祠 > koshi\ ;
+薄目 > usume\ ;
+呑気 > nonki\ ;
+徒輩 > tohai\ ;
+法理 > houri\ ;
+里程 > ritei\ ;
+単記 > tanki\ ;
+硬貨 > kouka\ ;
+野禽 > yakin\ ;
+重科 > juuka\ ;
+部門 > bumon\ ;
+待避 > taihi\ ;
+慈姑 > kuwai\ ;
+蛇体 > jatai\ ;
+感度 > kando\ ;
+鼎座 > teiza\ ;
+法王 > houou\ ;
+稽古 > keiko\ ;
+愚弟 > gutei\ ;
+愚弄 > gurou\ ;
+鼻声 > bisei\ ;
+薫煙 > kunen\ ;
+口碑 > kouhi\ ;
+往還 > oukan\ ;
+沃素 > youso\ ;
+合理 > gouri\ ;
+治癒 > chiyu\ ;
+悲歎 > hitan\ ;
+汚臭 > oshuu\ ;
+卑言 > higen\ ;
+加齢 > karei\ ;
+征途 > seito\ ;
+鼠害 > sogai\ ;
+弧高 > kokou\ ;
+鉛板 > enban\ ;
+民話 > minwa\ ;
+比重 > hijuu\ ;
+卑見 > hiken\ ;
+員外 > ingai\ ;
+往返 > ouhen\ ;
+禍根 > kakon\ ;
+虚字 > kyoji\ ;
+添付 > tenpu\ ;
+憑依 > hyoui\ ;
+野砲 > yahou\ ;
+叡知 > eichi\ ;
+稼動 > kadou\ ;
+単衣 > hitoe\ ;
+愉快 > yukai\ ;
+穏健 > onken\ ;
+原義 > gengi\ ;
+波瀾 > haran\ ;
+油田 > yuden\ ;
+弾雨 > dan''u\ ;
+穏便 > onbin\ ;
+波濤 > hatou\ ;
+台甫 > taiho\ ;
+都邑 > toyuu\ ;
+和戦 > wasen\ ;
+可用 > kayou\ ;
+鹹湖 > kanko\ ;
+河畔 > kahan\ ;
+勇飛 > yuuhi\ ;
+半裸 > hanra\ ;
+径路 > keiro\ ;
+御詠 > gyoei\ ;
+重目 > omome\ ;
+半被 > happi\ ;
+私怨 > shien\ ;
+砂防 > sabou\ ;
+微行 > bikou\ ;
+呪文 > jumon\ ;
+泳法 > eihou\ ;
+御覧 > goran\ ;
+稼働 > kadou\ ;
+吐瀉 > tosha\ ;
+淫乱 > inran\ ;
+受益 > jueki\ ;
+神武 > jinmu\ ;
+合点 > gaten\ ;
+愛孫 > aison\ ;
+浅手 > asade\ ;
+愛孃 > aijou\ ;
+蚕具 > sangu\ ;
+銃後 > juugo\ ;
+愛嬢 > aijou\ ;
+原素 > genso\ ;
+蚕児 > sanji\ ;
+慈善 > jizen\ ;
+惰性 > dasei\ ;
+油状 > yujou\ ;
+野生 > yasei\ ;
+波浪 > harou\ ;
+秘宝 > hihou\ ;
+蓮華 > renge\ ;
+愛婿 > aisei\ ;
+忍苦 > ninku\ ;
+銃座 > juuza\ ;
+厳秘 > genpi\ ;
+原簿 > genbo\ ;
+厳科 > genka\ ;
+鋭兵 > eihei\ ;
+銀座 > ginza\ ;
+郡部 > gunbu\ ;
+鼻口 > bikou\ ;
+後記 > kouki\ ;
+愛妻 > aisai\ ;
+愚妻 > gusai\ ;
+慶事 > keiji\ ;
+税吏 > zeiri\ ;
+愛好 > aikou\ ;
+労音 > rouon\ ;
+可燃 > kanen\ ;
+液化 > ekika\ ;
+吝気 > rinki\ ;
+鄙見 > hiken\ ;
+和平 > wahei\ ;
+野獣 > yajuu\ ;
+鳳駕 > houga\ ;
+野猪 > yacho\ ;
+邪険 > jaken\ ;
+徒行 > tokou\ ;
+水肥 > suihi\ ;
+古版 > kohan\ ;
+募金 > bokin\ ;
+後裔 > kouei\ ;
+徐行 > jokou\ ;
+同派 > douha\ ;
+酸素 > sanso\ ;
+往訪 > ouhou\ ;
+野犬 > yaken\ ;
+延髄 > enzui\ ;
+税務 > zeimu\ ;
+悪日 > akubi\ ;
+稚児 > chigo\ ;
+加餐 > kasan\ ;
+加養 > kayou\ ;
+歯音 > shion\ ;
+後衛 > kouei\ ;
+酵素 > kouso\ ;
+郊野 > kouya\ ;
+私家 > shika\ ;
+鼎坐 > teiza\ ;
+忍者 > ninja\ ;
+医薬 > iyaku\ ;
+社歌 > shaka\ ;
+鼻内 > binai\ ;
+御蔭 > okage\ ;
+勢運 > seiun\ ;
+同気 > douki\ ;
+句点 > kuten\ ;
+破談 > hadan\ ;
+和尚 > oshou\ ;
+口炎 > kouen\ ;
+当路 > touro\ ;
+慈兄 > jikei\ ;
+情愛 > jouai\ ;
+正音 > seion\ ;
+名歌 > meika\ ;
+部財 > buzai\ ;
+可溶 > kayou\ ;
+沿海 > enkai\ ;
+華麗 > karei\ ;
+鉄扉 > teppi\ ;
+咽喉 > inkou\ ;
+海図 > kaizu\ ;
+御菜 > okazu\ ;
+印綿 > inmen\ ;
+浮城 > fujou\ ;
+恒温 > kouon\ ;
+古潭 > kotan\ ;
+河港 > kakou\ ;
+河清 > kasei\ ;
+印紙 > inshi\ ;
+気胞 > kihou\ ;
+口演 > kouen\ ;
+鼓吹 > kosui\ ;
+愚問 > gumon\ ;
+水素 > suiso\ ;
+虎口 > kokou\ ;
+御苑 > gyoen\ ;
+蒲薦 > hosen\ ;
+哀号 > aigou\ ;
+悲憤 > hifun\ ;
+哀史 > aishi\ ;
+麻幹 > ogara\ ;
+応答 > outou\ ;
+印籠 > inrou\ ;
+歌風 > kafuu\ ;
+武門 > bumon\ ;
+和姦 > wakan\ ;
+移入 > inyuu\ ;
+悲愴 > hisou\ ;
+残部 > zanbu\ ;
+泰斗 > taito\ ;
+感受 > kanju\ ;
+歌題 > kadai\ ;
+悲惨 > hisan\ ;
+禁忌 > kinki\ ;
+愛吟 > aigin\ ;
+海員 > kaiin\ ;
+避難 > hinan\ ;
+重湯 > omoyu\ ;
+惣嫁 > souka\ ;
+鼓動 > kodou\ ;
+欺騙 > gihen\ ;
+法案 > houan\ ;
+御腹 > onaka\ ;
+和声 > wasei\ ;
+河水 > kasui\ ;
+名案 > meian\ ;
+悲恋 > hiren\ ;
+感化 > kanka\ ;
+武鑑 > bukan\ ;
+遺集 > ishuu\ ;
+句法 > kuhou\ ;
+怪火 > kaika\ ;
+微罪 > bizai\ ;
+原画 > genga\ ;
+南緯 > nan''i\ ;
+古法 > kohou\ ;
+虚偽 > kyogi\ ;
+勲記 > kunki\ ;
+剣鬼 > kenki\ ;
+金波 > kinpa\ ;
+海参 > iriko\ ;
+秘史 > hishi\ ;
+邪道 > jadou\ ;
+稀代 > kidai\ ;
+厳父 > genpu\ ;
+鉱夫 > koufu\ ;
+戸々 > kokou\ ;
+銀地 > ginji\ ;
+社是 > shaze\ ;
+磁界 > jikai\ ;
+海区 > kaiku\ ;
+印税 > inzei\ ;
+口気 > kouki\ ;
+同期 > douki\ ;
+重油 > juuyu\ ;
+銅器 > douki\ ;
+矮躯 > waiku\ ;
+沮止 > soshi\ ;
+油槽 > yusou\ ;
+短躯 > tanku\ ;
+恋歌 > renka\ ;
+科名 > kamei\ ;
+悪心 > oshin\ ;
+銃器 > juuki\ ;
+弘遠 > kouen\ ;
+原理 > genri\ ;
+汗疹 > asemo\ ;
+汗疣 > asemo\ ;
+悪徒 > akuto\ ;
+硼素 > houso\ ;
+受洗 > jusen\ ;
+稀世 > kisei\ ;
+私営 > shiei\ ;
+意匠 > ishou\ ;
+銀器 > ginki\ ;
+水禍 > suika\ ;
+禍害 > kagai\ ;
+快癒 > kaiyu\ ;
+金歯 > kinba\ ;
+同時 > douji\ ;
+短路 > tanro\ ;
+遠音 > toone\ ;
+引退 > intai\ ;
+那辺 > nahen\ ;
+情宜 > jougi\ ;
+愚兄 > gukei\ ;
+悟性 > gosei\ ;
+微細 > bisai\ ;
+動議 > dougi\ ;
+浮動 > fudou\ ;
+勃起 > bokki\ ;
+愚僧 > gusou\ ;
+後胤 > kouin\ ;
+禅家 > zenke\ ;
+黄変 > ouhen\ ;
+加配 > kahai\ ;
+品位 > hin''i\ ;
+往航 > oukou\ ;
+遠雷 > enrai\ ;
+念珠 > nenju\ ;
+悔悟 > kaigo\ ;
+気管 > kikan\ ;
+欧風 > oufuu\ ;
+浄土 > joudo\ ;
+含意 > gan''i\ ;
+情婦 > joufu\ ;
+重機 > juuki\ ;
+悧巧 > rikou\ ;
+気筒 > kitou\ ;
+怒濤 > dotou\ ;
+惹句 > jakku\ ;
+歩道 > hodou\ ;
+磨淬 > masai\ ;
+毛色 > keiro\ ;
+永眠 > eimin\ ;
+強訴 > gouso\ ;
+咄嗟 > tossa\ ;
+私印 > shiin\ ;
+武道 > budou\ ;
+正邪 > seija\ ;
+反比 > hanpi\ ;
+功過 > kouka\ ;
+印相 > inzou\ ;
+化膿 > kanou\ ;
+次類 > jirui\ ;
+反歯 > soppa\ ;
+反歩 > tanbu\ ;
+剪除 > senjo\ ;
+台木 > daigi\ ;
+注意 > chuui\ ;
+反歌 > hanka\ ;
+醸母 > joubo\ ;
+前駆 > zenku\ ;
+武辺 > buhen\ ;
+座高 > zakou\ ;
+情夫 > joufu\ ;
+和名 > wamei\ ;
+愛人 > aijin\ ;
+和合 > wagou\ ;
+励起 > reiki\ ;
+半端 > hanpa\ ;
+薄日 > usubi\ ;
+愚人 > gujin\ ;
+黄土 > koudo\ ;
+応用 > ouyou\ ;
+邦貨 > houka\ ;
+私利 > shiri\ ;
+破船 > hasen\ ;
+否応 > iyaou\ ;
+医籍 > iseki\ ;
+化育 > kaiku\ ;
+秘伝 > hiden\ ;
+母艦 > bokan\ ;
+受検 > juken\ ;
+油断 > yudan\ ;
+睡魔 > suima\ ;
+母船 > bosen\ ;
+礎材 > sozai\ ;
+廃除 > haijo\ ;
+古来 > korai\ ;
+海事 > kaiji\ ;
+永生 > eisei\ ;
+助走 > josou\ ;
+遊離 > yuuri\ ;
+怒涛 > dotou\ ;
+祈念 > kinen\ ;
+歳費 > saihi\ ;
+祖師 > soshi\ ;
+古書 > kosho\ ;
+周囲 > shuui\ ;
+決河 > kekka\ ;
+遷都 > sento\ ;
+汽水 > kisui\ ;
+比肩 > hiken\ ;
+印環 > inkan\ ;
+野末 > nozue\ ;
+野望 > yabou\ ;
+意中 > ichuu\ ;
+悪婦 > akufu\ ;
+呼号 > kogou\ ;
+正路 > seiro\ ;
+鉱区 > kouku\ ;
+悪婆 > akuba\ ;
+鉱化 > kouka\ ;
+波形 > hakei\ ;
+邦語 > hougo\ ;
+叡智 > eichi\ ;
+各戸 > kakko\ ;
+前非 > zenpi\ ;
+汚濁 > odaku\ ;
+母胎 > botai\ ;
+歌道 > kadou\ ;
+碁盤 > goban\ ;
+死語 > shigo\ ;
+可撓 > katou\ ;
+悲壮 > hisou\ ;
+弘誓 > guzei\ ;
+浮世 > ukiyo\ ;
+座頭 > zatou\ ;
+吐息 > toiki\ ;
+浮上 > fujou\ ;
+古方 > kohou\ ;
+浄化 > jouka\ ;
+叡旨 > eishi\ ;
+邪見 > jaken\ ;
+古文 > komon\ ;
+悪女 > akujo\ ;
+化繊 > kasen\ ;
+午砲 > gohou\ ;
+毛織 > keori\ ;
+江湖 > gouko\ ;
+恩愛 > on''ai\ ;
+気相 > kisou\ ;
+悲報 > hihou\ ;
+御社 > onsha\ ;
+悪夢 > akumu\ ;
+北緯 > hokui\ ;
+叙景 > jokei\ ;
+正貨 > seika\ ;
+正負 > seifu\ ;
+禁固 > kinko\ ;
+向後 > kougo\ ;
+硅素 > keiso\ ;
+恩情 > onjou\ ;
+叛旗 > hanki\ ;
+薄手 > usude\ ;
+恩恵 > onkei\ ;
+永牢 > eirou\ ;
+遺蹟 > iseki\ ;
+里数 > risuu\ ;
+午睡 > gosui\ ;
+引見 > inken\ ;
+祖宗 > sosou\ ;
+流刑 > rukei\ ;
+助詞 > joshi\ ;
+銀位 > gin''i\ ;
+叙文 > jobun\ ;
+南画 > nanga\ ;
+示度 > shido\ ;
+遺跡 > iseki\ ;
+鉄器 > tekki\ ;
+遥遠 > youen\ ;
+弁護 > bengo\ ;
+勤苦 > kinku\ ;
+毛糸 > keito\ ;
+助言 > jogon\ ;
+法度 > hatto\ ;
+南瓜 > nanka\ ;
+幽鬼 > yuuki\ ;
+化粧 > kewai\ ;
+情味 > joumi\ ;
+江河 > kouga\ ;
+否定 > hitei\ ;
+破線 > hasen\ ;
+影絵 > kagee\ ;
+同座 > douza\ ;
+破綻 > hatan\ ;
+口授 > kouju\ ;
+派兵 > hahei\ ;
+思案 > shian\ ;
+葡萄 > budou\ ;
+建議 > kengi\ ;
+正課 > seika\ ;
+母線 > bosen\ ;
+反旗 > hanki\ ;
+正誤 > seigo\ ;
+悲嘆 > hitan\ ;
+禅味 > zenmi\ ;
+部署 > busho\ ;
+可憐 > karen\ ;
+悪因 > akuin\ ;
+蒔絵 > makie\ ;
+過重 > kajuu\ ;
+匕箸 > hicho\ ;
+半田 > handa\ ;
+欄間 > ranma\ ;
+葉蘭 > haran\ ;
+恩師 > onshi\ ;
+母系 > bokei\ ;
+遊里 > yuuri\ ;
+水火 > suika\ ;
+惨事 > sanji\ ;
+祭器 > saiki\ ;
+恨布 > konbu\ ;
+油性 > yusei\ ;
+正規 > seiki\ ;
+禁句 > kinku\ ;
+社寺 > shaji\ ;
+恋慕 > renbo\ ;
+医療 > iryou\ ;
+華道 > kadou\ ;
+野手 > yashu\ ;
+社家 > shake\ ;
+重手 > omode\ ;
+武装 > busou\ ;
+野戦 > yasen\ ;
+歩行 > hokou\ ;
+毛穴 > keana\ ;
+卑猥 > hiwai\ ;
+破算 > hasan\ ;
+呑吐 > donto\ ;
+油彩 > yusai\ ;
+叡慮 > eiryo\ ;
+御用 > goyou\ ;
+流人 > runin\ ;
+叡感 > eikan\ ;
+歌謡 > kayou\ ;
+名家 > meika\ ;
+御璽 > gyoji\ ;
+取手 > totte\ ;
+名宛 > naate\ ;
+同家 > douke\ ;
+着類 > kirui\ ;
+受戒 > jukai\ ;
+運送 > unsou\ ;
+黄体 > outai\ ;
+歌論 > karon\ ;
+酵母 > koubo\ ;
+祖型 > sokei\ ;
+重愛 > juuai\ ;
+神器 > jingi\ ;
+同字 > douji\ ;
+台座 > daiza\ ;
+割賦 > wappu\ ;
+真鯛 > madai\ ;
+叛意 > han''i\ ;
+歌詞 > kashi\ ;
+真鯉 > magoi\ ;
+残花 > zanka\ ;
+黄人 > oujin\ ;
+水温 > suion\ ;
+運輸 > un''yu\ ;
+藩儒 > hanju\ ;
+剰費 > jouhi\ ;
+前部 > zenbu\ ;
+麗句 > reiku\ ;
+磨損 > mason\ ;
+野性 > yasei\ ;
+葉茶 > hadja\ ;
+叙情 > jojou\ ;
+御玉 > otama\ ;
+道路 > douro\ ;
+運転 > unten\ ;
+幽雅 > yuuga\ ;
+初陣 > uijin\ ;
+沿岸 > engan\ ;
+連鎖 > rensa\ ;
+葉芽 > youga\ ;
+河川 > kasen\ ;
+遁辞 > tonji\ ;
+前途 > zento\ ;
+遍路 > henro\ ;
+鉛丹 > entan\ ;
+水泳 > suiei\ ;
+后妃 > kouhi\ ;
+名妓 > meigi\ ;
+口座 > kouza\ ;
+志気 > shiki\ ;
+叛徒 > hanto\ ;
+金庫 > kinko\ ;
+印池 > inchi\ ;
+泥土 > deido\ ;
+油層 > yusou\ ;
+労苦 > rouku\ ;
+友愛 > yuuai\ ;
+遠謀 > enbou\ ;
+同夜 > douya\ ;
+重度 > juudo\ ;
+前輪 > maewa\ ;
+退院 > taiin\ ;
+情事 > jouji\ ;
+破砕 > hasai\ ;
+危殆 > kitai\ ;
+治安 > chian\ ;
+剰語 > jougo\ ;
+野師 > yashi\ ;
+落花 > rakka\ ;
+史家 > shika\ ;
+鈍器 > donki\ ;
+性愛 > seiai\ ;
+引航 > inkou\ ;
+砂絵 > sunae\ ;
+得物 > emono\ ;
+沙弥 > shami\ ;
+祭具 > saigu\ ;
+含味 > ganmi\ ;
+往生 > oujou\ ;
+分離 > bunri\ ;
+配流 > hairu\ ;
+引致 > inchi\ ;
+反徒 > hanto\ ;
+刈除 > gaijo\ ;
+怨恨 > enkon\ ;
+遠視 > enshi\ ;
+祭儀 > saigi\ ;
+鄙猥 > hiwai\ ;
+歯芽 > shiga\ ;
+遠見 > toomi\ ;
+鹹味 > kanmi\ ;
+荷馬 > niuma\ ;
+真顔 > magao\ ;
+砂糖 > satou\ ;
+酒気 > shuki\ ;
+鷹揚 > ouyou\ ;
+利鈍 > ridon\ ;
+思慕 > shibo\ ;
+怠惰 > taida\ ;
+利金 > rikin\ ;
+沮害 > sogai\ ;
+同坐 > douza\ ;
+区点 > kuten\ ;
+友引 > yuuin\ ;
+酔歩 > suiho\ ;
+凹面 > oumen\ ;
+道話 > douwa\ ;
+包皮 > houhi\ ;
+逸走 > issou\ ;
+廃語 > haigo\ ;
+吟味 > ginmi\ ;
+厭戦 > ensen\ ;
+武芸 > bugei\ ;
+遡行 > sokou\ ;
+名器 > meiki\ ;
+華言 > kagen\ ;
+影画 > kagee\ ;
+徒然 > tozen\ ;
+連辞 > renji\ ;
+広野 > kouya\ ;
+気泡 > kihou\ ;
+金字 > kinji\ ;
+弥縫 > bihou\ ;
+金子 > kinsu\ ;
+弧線 > kosen\ ;
+欠課 > kekka\ ;
+単比 > tanpi\ ;
+過言 > kagon\ ;
+破産 > hasan\ ;
+社員 > shain\ ;
+印棉 > inmen\ ;
+研磨 > kenma\ ;
+悪事 > akuji\ ;
+示唆 > shisa\ ;
+可変 > kahen\ ;
+彩画 > saiga\ ;
+薫化 > kunka\ ;
+受容 > juyou\ ;
+祭事 > saiji\ ;
+祖先 > sosen\ ;
+鈍化 > donka\ ;
+性差 > seisa\ ;
+萠芽 > houga\ ;
+別途 > betto\ ;
+過褒 > kahou\ ;
+荷電 > kaden\ ;
+硬派 > kouha\ ;
+台場 > daiba\ ;
+吾人 > gojin\ ;
+波動 > hadou\ ;
+薄地 > usuji\ ;
+透過 > touka\ ;
+単機 > tanki\ ;
+殷盛 > insei\ ;
+社印 > shain\ ;
+印材 > inzai\ ;
+平野 > heiya\ ;
+印本 > inpon\ ;
+息吹 > ibuki\ ;
+幹部 > kanbu\ ;
+印書 > insho\ ;
+幽遠 > yuuen\ ;
+名句 > meiku\ ;
+前記 > zenki\ ;
+運行 > unkou\ ;
+武者 > musha\ ;
+社務 > shamu\ ;
+原意 > gen''i\ ;
+古墳 > kofun\ ;
+恩命 > onmei\ ;
+友宜 > yuugi\ ;
+野天 > noten\ ;
+合否 > gouhi\ ;
+労組 > rouso\ ;
+野外 > yagai\ ;
+座談 > zadan\ ;
+弗素 > fusso\ ;
+逃避 > touhi\ ;
+幸運 > kouun\ ;
+破牢 > harou\ ;
+遺臣 > ishin\ ;
+広軌 > kouki\ ;
+正義 > seigi\ ;
+法務 > houmu\ ;
+破片 > hahen\ ;
+同化 > douka\ ;
+退避 > taihi\ ;
+古城 > kojou\ ;
+吐剤 > tozai\ ;
+気概 > kigai\ ;
+府警 > fukei\ ;
+御殿 > goten\ ;
+萌芽 > houga\ ;
+区民 > kumin\ ;
+厚恩 > kouon\ ;
+応援 > ouen\ ;
+庫裏 > kuri\ ;
+古器 > koki\ ;
+凍雨 > touu\ ;
+徒歩 > toho\ ;
+可否 > kahi\ ;
+徐歩 > joho\ ;
+庇護 > higo\ ;
+野営 > yaei\ ;
+法会 > houe\ ;
+同位 > doui\ ;
+危懼 > kigu\ ;
+句句 > kuku\ ;
+古句 > koku\ ;
+口受 > kuju\ ;
+治具 > jigu\ ;
+冷雨 > reiu\ ;
+当為 > toui\ ;
+右党 > utou\ ;
+危惧 > kigu\ ;
+遺精 > isei\ ;
+野卑 > yahi\ ;
+右傾 > ukei\ ;
+医書 > isho\ ;
+違背 > ihai\ ;
+怨嗟 > ensa\ ;
+鸚哥 > inko\ ;
+破毀 > haki\ ;
+反吐 > hedo\ ;
+反古 > hogo\ ;
+古儀 > kogi\ ;
+華美 > kabi\ ;
+印度 > indo\ ;
+遺稿 > ikou\ ;
+相違 > soui\ ;
+座臥 > zaga\ ;
+帰途 > kito\ ;
+忠実 > mame\ ;
+円顱 > enro\ ;
+磁場 > jiba\ ;
+古事 > koji\ ;
+破棄 > haki\ ;
+永寿 > eiju\ ;
+歌碑 > kahi\ ;
+往時 > ouji\ ;
+磁土 > jido\ ;
+鴉片 > ahen\ ;
+印字 > inji\ ;
+違算 > isan\ ;
+叙事 > joji\ ;
+磁器 > jiki\ ;
+微微 > bibi\ ;
+帰路 > kiro\ ;
+御意 > gyoi\ ;
+砂洲 > sasu\ ;
+午後 > gogo\ ;
+毀棄 > kiki\ ;
+遠祖 > enso\ ;
+後手 > gote\ ;
+干葉 > hiba\ ;
+引火 > inka\ ;
+御影 > goei\ ;
+遺産 > isan\ ;
+樹陰 > juin\ ;
+英音 > eion\ ;
+汚名 > omei\ ;
+磁区 > jiku\ ;
+邪淫 > jain\ ;
+迂言 > ugen\ ;
+磁化 > jika\ ;
+医師 > ishi\ ;
+彼我 > higa\ ;
+危坐 > kiza\ ;
+創痍 > soui\ ;
+機運 > kiun\ ;
+匪徒 > hito\ ;
+助演 > joen\ ;
+邪気 > jaki\ ;
+弥次 > yaji\ ;
+御宇 > gyou\ ;
+往往 > ouou\ ;
+刀自 > toji\ ;
+御子 > miko\ ;
+医官 > ikan\ ;
+加温 > kaon\ ;
+過疎 > kaso\ ;
+刀背 > mine\ ;
+応募 > oubo\ ;
+遺漏 > irou\ ;
+後家 > goke\ ;
+医大 > idai\ ;
+殴打 > ouda\ ;
+歩武 > hobu\ ;
+違犯 > ihan\ ;
+円貨 > enka\ ;
+気味 > gimi\ ;
+気合 > kiai\ ;
+布衍 > fuen\ ;
+魔魅 > mami\ ;
+後場 > goba\ ;
+破家 > baka\ ;
+気化 > kika\ ;
+征夷 > seii\ ;
+午后 > gogo\ ;
+水位 > suii\ ;
+永久 > towa\ ;
+左記 > saki\ ;
+円規 > enki\ ;
+盈虧 > eiki\ ;
+遺構 > ikou\ ;
+御名 > mina\ ;
+部屋 > heya\ ;
+英貨 > eika\ ;
+過渡 > kato\ ;
+違法 > ihou\ ;
+殷富 > inpu\ ;
+延期 > enki\ ;
+横議 > ougi\ ;
+砂州 > sasu\ ;
+茣蓙 > goza\ ;
+英語 > eigo\ ;
+運河 > unga\ ;
+遺書 > isho\ ;
+知恵 > chie\ ;
+運気 > unki\ ;
+輸贏 > yuei\ ;
+卑下 > hige\ ;
+勢子 > seko\ ;
+包囲 > houi\ ;
+往古 > ouko\ ;
+加持 > kaji\ ;
+弧度 > kodo\ ;
+都営 > toei\ ;
+比喩 > hiyu\ ;
+遺文 > ibun\ ;
+逢瀬 > ouse\ ;
+出目 > deme\ ;
+彙報 > ihou\ ;
+武技 > bugi\ ;
+輝輝 > kiki\ ;
+座洲 > zasu\ ;
+御代 > miyo\ ;
+勢威 > seii\ ;
+医会 > ikai\ ;
+得体 > etai\ ;
+御世 > miyo\ ;
+影印 > eiin\ ;
+正意 > seii\ ;
+円舞 > enbu\ ;
+鵜匠 > ujou\ ;
+母印 > boin\ ;
+逸機 > ikki\ ;
+部員 > buin\ ;
+遺戒 > ikai\ ;
+皮膚 > hifu\ ;
+遺憾 > ikan\ ;
+刷毛 > hake\ ;
+歩度 > hodo\ ;
+次期 > jiki\ ;
+武庫 > buko\ ;
+機縁 > kien\ ;
+砂土 > sado\ ;
+遺恨 > ikon\ ;
+往事 > ouji\ ;
+花譜 > kafu\ ;
+遺志 > ishi\ ;
+序次 > joji\ ;
+比価 > hika\ ;
+途次 > toji\ ;
+創意 > soui\ ;
+武家 > buke\ ;
+横臥 > ouga\ ;
+鬱金 > ukon\ ;
+比丘 > biku\ ;
+都下 > toka\ ;
+矢場 > yaba\ ;
+花被 > kahi\ ;
+違憲 > iken\ ;
+延寿 > enju\ ;
+百舌 > mozu\ ;
+武夫 > bufu\ ;
+砂利 > jari\ ;
+部下 > buka\ ;
+遺子 > ishi\ ;
+瞽女 > goze\ ;
+句々 > kuku\ ;
+出歯 > deba\ ;
+過度 > kado\ ;
+武器 > buki\ ;
+運座 > unza\ ;
+次序 > jijo\ ;
+模糊 > moko\ ;
+花芽 > kaga\ ;
+遺址 > ishi\ ;
+平易 > heii\ ;
+加味 > kami\ ;
+歩合 > buai\ ;
+欧字 > ouji\ ;
+出来 > deki\ ;
+僧衣 > soui\ ;
+疎音 > soin\ ;
+座州 > zasu\ ;
+樹皮 > juhi\ ;
+府庫 > fuko\ ;
+遺品 > ihin\ ;
+疑雲 > giun\ ;
+遺命 > imei\ ;
+此処 > koko\ ;
+武具 > bugu\ ;
+過多 > kata\ ;
+次女 > jijo\ ;
+几案 > kian\ ;
+武備 > bubi\ ;
+追手 > otte\ ;
+遺功 > ikou\ ;
+異風 > ifuu\ ;
+遺制 > isei\ ;
+異類 > irui\ ;
+利己 > riko\ ;
+正位 > seii\ ;
+刷子 > hake\ ;
+武事 > buji\ ;
+荊棘 > bara\ ;
+魔羅 > mara\ ;
+遺体 > itai\ ;
+違反 > ihan\ ;
+遺伝 > iden\ ;
+過去 > kako\ ;
+欧化 > ouka\ ;
+疎遠 > soen\ ;
+疑辞 > giji\ ;
+左派 > saha\ ;
+艶美 > enbi\ ;
+驢馬 > roba\ ;
+岐阜 > gifu\ ;
+座員 > zain\ ;
+永々 > eiei\ ;
+真帆 > maho\ ;
+相手 > aite\ ;
+度合 > doai\ ;
+違例 > irei\ ;
+利器 > riki\ ;
+色絵 > iroe\ ;
+異邦 > ihou\ ;
+違令 > irei\ ;
+廃位 > haii\ ;
+布施 > fuse\ ;
+自費 > jihi\ ;
+自負 > jifu\ ;
+入江 > irie\ ;
+英気 > eiki\ ;
+騾馬 > raba\ ;
+花王 > kaou\ ;
+棋院 > kiin\ ;
+帷幄 > iaku\ ;
+英武 > eibu\ ;
+異趣 > ishu\ ;
+具案 > guan\ ;
+出場 > deba\ ;
+自記 > jiki\ ;
+座主 > zasu\ ;
+自衛 > jiei\ ;
+異論 > iron\ ;
+岐路 > kiro\ ;
+相子 > aiko\ ;
+府下 > fuka\ ;
+魔王 > maou\ ;
+偉観 > ikan\ ;
+異見 > iken\ ;
+利他 > rita\ ;
+騎馬 > kiba\ ;
+機微 > kibi\ ;
+機影 > kiei\ ;
+幾何 > kika\ ;
+往々 > ouou\ ;
+発条 > bane\ ;
+内意 > naii\ ;
+機序 > kijo\ ;
+癸未 > kibi\ ;
+帝威 > teii\ ;
+迂回 > ukai\ ;
+退位 > taii\ ;
+出刃 > deba\ ;
+梅雨 > baiu\ ;
+模擬 > mogi\ ;
+円弧 > enko\ ;
+痲痺 > mahi\ ;
+目地 > meji\ ;
+円座 > enza\ ;
+機尾 > kibi\ ;
+花樹 > kaju\ ;
+帰営 > kiei\ ;
+画譜 > gafu\ ;
+機宜 > kigi\ ;
+尾部 > bibu\ ;
+盲唖 > moua\ ;
+依願 > igan\ ;
+依頼 > irai\ ;
+疑義 > gigi\ ;
+真似 > mane\ ;
+棋譜 > kifu\ ;
+帰化 > kika\ ;
+児戯 > jigi\ ;
+真上 > maue\ ;
+巫子 > miko\ ;
+希土 > kido\ ;
+花期 > kaki\ ;
+希図 > kito\ ;
+馬鹿 > baka\ ;
+臙脂 > enji\ ;
+偃臥 > enga\ ;
+胡麻 > goma\ ;
+栗鼠 > risu\ ;
+寺院 > jiin\ ;
+異聞 > ibun\ ;
+巫女 > miko\ ;
+目処 > medo\ ;
+駄馬 > daba\ ;
+鬼気 > kiki\ ;
+几下 > kika\ ;
+機器 > kiki\ ;
+公家 > kuge\ ;
+艶歌 > enka\ ;
+保護 > hogo\ ;
+兵威 > heii\ ;
+鬱気 > ukki\ ;
+軽易 > keii\ ;
+英字 > eiji\ ;
+花押 > kaou\ ;
+俚語 > rigo\ ;
+皇子 > ouji\ ;
+屠蘇 > toso\ ;
+冀図 > kito\ ;
+駆除 > kujo\ ;
+寝間 > nema\ ;
+辞儀 > jigi\ ;
+目上 > meue\ ;
+帝位 > teii\ ;
+機化 > kika\ ;
+輪差 > wasa\ ;
+余韻 > yoin\ ;
+異端 > itan\ ;
+輝度 > kido\ ;
+寄附 > kifu\ ;
+機具 > kigu\ ;
+工合 > guai\ ;
+異種 > ishu\ ;
+児女 > jijo\ ;
+花序 > kajo\ ;
+具合 > guai\ ;
+足袋 > tabi\ ;
+山羊 > yagi\ ;
+苦土 > kudo\ ;
+位階 > ikai\ ;
+寿賀 > juga\ ;
+自画 > jiga\ ;
+英和 > eiwa\ ;
+公卿 > kuge\ ;
+画素 > gaso\ ;
+其処 > soko\ ;
+梨花 > rika\ ;
+由縁 > yuen\ ;
+円価 > enka\ ;
+花季 > kaki\ ;
+魚座 > uoza\ ;
+具備 > gubi\ ;
+越訴 > esso\ ;
+肥馬 > hiba\ ;
+百合 > yuri\ ;
+皮下 > hika\ ;
+儒家 > juka\ ;
+自火 > jika\ ;
+起訴 > kiso\ ;
+俚耳 > riji\ ;
+家運 > kaun\ ;
+異状 > ijou\ ;
+楚楚 > soso\ ;
+允可 > inka\ ;
+侍衛 > jiei\ ;
+饑餓 > kiga\ ;
+花器 > kaki\ ;
+皇位 > koui\ ;
+佳話 > kawa\ ;
+胃酸 > isan\ ;
+先先 > mama\ ;
+家路 > ieji\ ;
+桧葉 > hiba\ ;
+魔女 > majo\ ;
+饂飩 > udon\ ;
+字音 > jion\ ;
+寄語 > kigo\ ;
+花卉 > kaki\ ;
+家譜 > kafu\ ;
+胴衣 > doui\ ;
+鬼女 > kijo\ ;
+耳鼻 > jibi\ ;
+餓鬼 > gaki\ ;
+胤裔 > inei\ ;
+儲位 > choi\ ;
+自棄 > yake\ ;
+理非 > rihi\ ;
+以降 > ikou\ ;
+優位 > yuui\ ;
+起臥 > kiga\ ;
+胞衣 > houi\ ;
+栄誉 > eiyo\ ;
+嬰音 > eion\ ;
+輔佐 > hosa\ ;
+伊達 > date\ ;
+異様 > iyou\ ;
+余蘊 > youn\ ;
+家蚊 > ieka\ ;
+尼甫 > jiho\ ;
+偉材 > izai\ ;
+異本 > ihon\ ;
+植木 > ueki\ ;
+胼胝 > tako\ ;
+航宇 > kouu\ ;
+疑懼 > giku\ ;
+異文 > ibun\ ;
+異数 > isuu\ ;
+疑惧 > gigu\ ;
+自我 > jiga\ ;
+駕籠 > kago\ ;
+魁偉 > kaii\ ;
+保無 > homu\ ;
+駕篭 > kago\ ;
+飢餓 > kiga\ ;
+自愛 > jiai\ ;
+栄華 > eiga\ ;
+偉挙 > ikyo\ ;
+季語 > kigo\ ;
+肚裏 > tori\ ;
+僧位 > soui\ ;
+偉才 > isai\ ;
+異才 > isai\ ;
+費途 > hito\ ;
+理路 > riro\ ;
+賦課 > fuka\ ;
+賦詠 > fuei\ ;
+畏敬 > ikei\ ;
+保温 > hoon\ ;
+自序 > jijo\ ;
+画架 > gaka\ ;
+位置 > ichi\ ;
+二院 > niin\ ;
+自己 > jiko\ ;
+異性 > isei\ ;
+異彩 > isai\ ;
+疑字 > giji\ ;
+豪雨 > gouu\ ;
+付議 > fugi\ ;
+保母 > hobo\ ;
+安臥 > anga\ ;
+以西 > isei\ ;
+亜鈴 > arei\ ;
+自家 > jika\ ;
+異常 > ijou\ ;
+供犠 > kugi\ ;
+付記 > fuki\ ;
+小火 > boya\ ;
+駄目 > dame\ ;
+屋根 > yane\ ;
+依然 > izen\ ;
+伊艦 > ikan\ ;
+偉容 > iyou\ ;
+梨果 > rika\ ;
+異存 > izon\ ;
+二部 > nibu\ ;
+風雨 > fuuu\ ;
+棄捐 > kien\ ;
+楕円 > daen\ ;
+偽印 > giin\ ;
+肌膚 > kifu\ ;
+異姓 > isei\ ;
+偉大 > idai\ ;
+異変 > ihen\ ;
+留守 > rusu\ ;
+位相 > isou\ ;
+一鼓 > ikko\ ;
+自営 > jiei\ ;
+用意 > youi\ ;
+耳語 > jigo\ ;
+異域 > iiki\ ;
+画布 > gafu\ ;
+高位 > koui\ ;
+字義 > jigi\ ;
+自叙 > jijo\ ;
+保持 > hoji\ ;
+驥尾 > kibi\ ;
+倚子 > ishi\ ;
+自助 > jijo\ ;
+胃癌 > igan\ ;
+画家 > gaka\ ;
+興亜 > koua\ ;
+瓦斯 > gasu\ ;
+自利 > jiri\ ;
+家父 > kafu\ ;
+飛語 > higo\ ;
+余煙 > yoen\ ;
+下駄 > geta\ ;
+下馬 > geba\ ;
+假名 > kana\ ;
+異名 > imei\ ;
+位牌 > ihai\ ;
+異同 > idou\ ;
+耶蘇 > yaso\ ;
+余炎 > yoen\ ;
+瑠璃 > ruri\ ;
+一騎 > ikki\ ;
+疑似 > giji\ ;
+偉勲 > ikun\ ;
+偉効 > ikou\ ;
+偉功 > ikou\ ;
+異動 > idou\ ;
+負荷 > fuka\ ;
+久遠 > kuon\ ;
+自余 > jiyo\ ;
+不離 > furi\ ;
+一顧 > ikko\ ;
+自他 > jita\ ;
+美音 > bion\ ;
+子等 > kora\ ;
+下院 > kain\ ;
+起案 > kian\ ;
+不間 > buma\ ;
+画因 > gain\ ;
+余波 > yoha\ ;
+畏友 > iyuu\ ;
+異例 > irei\ ;
+小手 > kote\ ;
+異体 > itai\ ;
+趣意 > shui\ ;
+先々 > mama\ ;
+偉人 > ijin\ ;
+異人 > ijin\ ;
+保安 > hoan\ ;
+余殃 > yoou\ ;
+路地 > roji\ ;
+依拠 > ikyo\ ;
+琵琶 > biwa\ ;
+理科 > rika\ ;
+暮雲 > boun\ ;
+保姆 > hobo\ ;
+胃液 > ieki\ ;
+居士 > koji\ ;
+亜聖 > asei\ ;
+李花 > rika\ ;
+下野 > geya\ ;
+上野 > ueno\ ;
+肌理 > kime\ ;
+馴染 > naji\ ;
+亜群 > agun\ ;
+世辞 > seji\ ;
+不運 > fuun\ ;
+余栄 > yoei\ ;
+腰囲 > youi\ ;
+梨園 > rien\ ;
+供御 > gugo\ ;
+梃子 > teko\ ;
+路加 > ruka\ ;
+亜綱 > akou\ ;
+果皮 > kahi\ ;
+不軌 > fuki\ ;
+余暇 > yoka\ ;
+一過 > ikka\ ;
+小屋 > koya\ ;
+一途 > itto\ ;
+美辞 > biji\ ;
+安気 > anki\ ;
+琉璃 > ruri\ ;
+容易 > youi\ ;
+個個 > koko\ ;
+不起 > fuki\ ;
+尉官 > ikan\ ;
+栄枯 > eiko\ ;
+起座 > kiza\ ;
+寓意 > guui\ ;
+依存 > izon\ ;
+世話 > sewa\ ;
+亜種 > ashu\ ;
+晴雨 > seiu\ ;
+小夜 > sayo\ ;
+威風 > ifuu\ ;
+飛簷 > hien\ ;
+音頭 > ondo\ ;
+余技 > yogi\ ;
+不語 > fugo\ ;
+余所 > yoso\ ;
+王者 > ouja\ ;
+家扶 > kafu\ ;
+下記 > kaki\ ;
+暗部 > anbu\ ;
+供奉 > gubu\ ;
+胃散 > isan\ ;
+仁王 > niou\ ;
+侍婢 > jihi\ ;
+予科 > yoka\ ;
+害意 > gaii\ ;
+予示 > yoji\ ;
+安易 > an''i\ ;
+下衆 > gesu\ ;
+上衣 > joui\ ;
+侍女 > jijo\ ;
+字母 > jibo\ ;
+背戸 > sedo\ ;
+寄席 > yose\ ;
+佳宴 > kaen\ ;
+犠飛 > gihi\ ;
+不虞 > fugu\ ;
+腐儒 > fuju\ ;
+罵詈 > bari\ ;
+富家 > fuka\ ;
+他派 > taha\ ;
+議院 > giin\ ;
+起因 > kiin\ ;
+玻璃 > hari\ ;
+安打 > anda\ ;
+暗譜 > anpu\ ;
+馬子 > mago\ ;
+是非 > zehi\ ;
+事理 > jiri\ ;
+家家 > ieie\ ;
+枸杞 > kuko\ ;
+二王 > niou\ ;
+猿臂 > enpi\ ;
+暗記 > anki\ ;
+果樹 > kaju\ ;
+位官 > ikan\ ;
+云爾 > unji\ ;
+亜炭 > atan\ ;
+一荷 > ikka\ ;
+起句 > kiku\ ;
+会意 > kaii\ ;
+以東 > itou\ ;
+以来 > irai\ ;
+飛燕 > hien\ ;
+安座 > anza\ ;
+旗鼓 > kiko\ ;
+馬場 > baba\ ;
+鞍馬 > anba\ ;
+一臂 > ippi\ ;
+佳味 > kami\ ;
+不義 > fugi\ ;
+不羈 > fuki\ ;
+不羇 > fuki\ ;
+佳句 > kaku\ ;
+木瓜 > boke\ ;
+駄句 > daku\ ;
+肩巾 > hire\ ;
+時運 > jiun\ ;
+韻語 > ingo\ ;
+楚々 > soso\ ;
+音譜 > onpu\ ;
+不縁 > fuen\ ;
+位地 > ichi\ ;
+枇杷 > biwa\ ;
+上絵 > uwae\ ;
+孤影 > koei\ ;
+案価 > anka\ ;
+猛者 > mosa\ ;
+校医 > koui\ ;
+羽目 > hame\ ;
+案下 > anka\ ;
+柚子 > yuzu\ ;
+護謨 > gomu\ ;
+他所 > yoso\ ;
+二次 > niji\ ;
+如露 > joro\ ;
+不穏 > fuon\ ;
+安堵 > ando\ ;
+一箇 > ikko\ ;
+下種 > gesu\ ;
+馬具 > bagu\ ;
+位勲 > ikun\ ;
+他愛 > taai\ ;
+家出 > iede\ ;
+余儀 > yogi\ ;
+安固 > anko\ ;
+家具 > kagu\ ;
+不磨 > fuma\ ;
+家兎 > kato\ ;
+日間 > hiai\ ;
+伎女 > gijo\ ;
+委譲 > ijou\ ;
+位冠 > ikan\ ;
+護衛 > goei\ ;
+介意 > kaii\ ;
+寄付 > kifu\ ;
+鞍部 > anbu\ ;
+有為 > yuui\ ;
+寄与 > kiyo\ ;
+体位 > taii\ ;
+余事 > yoji\ ;
+青青 > aoao\ ;
+仮字 > kana\ ;
+二期 > niki\ ;
+低位 > teii\ ;
+安否 > anpi\ ;
+胡乱 > uron\ ;
+予期 > yoki\ ;
+家事 > kaji\ ;
+義理 > giri\ ;
+譏誹 > kihi\ ;
+下痢 > geri\ ;
+安危 > anki\ ;
+賭場 > toba\ ;
+首位 > shui\ ;
+嬉戯 > kigi\ ;
+事故 > jiko\ ;
+企図 > kito\ ;
+義父 > gifu\ ;
+他家 > take\ ;
+不理 > furi\ ;
+賀宴 > gaen\ ;
+定位 > teii\ ;
+宇内 > udai\ ;
+以外 > igai\ ;
+瑣事 > saji\ ;
+夢魔 > muma\ ;
+来意 > raii\ ;
+孵化 > fuka\ ;
+貴家 > kika\ ;
+暗示 > anji\ ;
+安保 > anpo\ ;
+安価 > anka\ ;
+木木 > kigi\ ;
+非運 > hiun\ ;
+聾唖 > roua\ ;
+贏余 > eiyo\ ;
+羽毛 > umou\ ;
+音素 > onso\ ;
+字句 > jiku\ ;
+贈位 > zoui\ ;
+貴女 > kijo\ ;
+付図 > fuzu\ ;
+肉刺 > mame\ ;
+事後 > jigo\ ;
+予後 > yogo\ ;
+二度 > nido\ ;
+音符 > onpu\ ;
+義気 > giki\ ;
+個々 > koko\ ;
+義母 > gibo\ ;
+語音 > goon\ ;
+以南 > inan\ ;
+而後 > jigo\ ;
+夜陰 > yain\ ;
+付和 > fuwa\ ;
+牡蛎 > kaki\ ;
+王手 > oute\ ;
+羽根 > hane\ ;
+木戸 > kido\ ;
+以前 > izen\ ;
+東夷 > toui\ ;
+非議 > higi\ ;
+韋編 > ihen\ ;
+以内 > inai\ ;
+一派 > ippa\ ;
+三毛 > mike\ ;
+雷雨 > raiu\ ;
+諳譜 > anpu\ ;
+付加 > fuka\ ;
+不次 > fuji\ ;
+雑魚 > jako\ ;
+護符 > gofu\ ;
+雲霧 > unmu\ ;
+事宜 > jigi\ ;
+曳曳 > eiei\ ;
+二字 > niji\ ;
+一気 > ikki\ ;
+賦与 > fuyo\ ;
+杏子 > anzu\ ;
+委細 > isai\ ;
+諳記 > anki\ ;
+大野 > oono\ ;
+一歩 > ippo\ ;
+斎部 > inbe\ ;
+代位 > daii\ ;
+狐疑 > kogi\ ;
+王座 > ouza\ ;
+代代 > yoyo\ ;
+奇貨 > kika\ ;
+以上 > ijou\ ;
+義旗 > giki\ ;
+理事 > riji\ ;
+有意 > yuui\ ;
+有情 > ujou\ ;
+不期 > fuki\ ;
+他事 > taji\ ;
+狒狒 > hihi\ ;
+付与 > fuyo\ ;
+主意 > shui\ ;
+狐狸 > kori\ ;
+世故 > seko\ ;
+不時 > fuji\ ;
+露語 > rogo\ ;
+大路 > ooji\ ;
+王家 > ouke\ ;
+義援 > gien\ ;
+王子 > ouji\ ;
+一期 > ikki\ ;
+義捐 > gien\ ;
+誹議 > higi\ ;
+貴下 > kika\ ;
+一斗 > itto\ ;
+王妃 > ouhi\ ;
+王女 > oujo\ ;
+青葉 > aoba\ ;
+語路 > goro\ ;
+青菜 > aona\ ;
+互助 > gojo\ ;
+木場 > kiba\ ;
+五分 > gobu\ ;
+一揆 > ikki\ ;
+事務 > jimu\ ;
+下手 > heta\ ;
+下戸 > geko\ ;
+東亞 > toua\ ;
+東亜 > toua\ ;
+木地 > kiji\ ;
+王土 > oudo\ ;
+美技 > bigi\ ;
+上意 > joui\ ;
+一戸 > ikko\ ;
+独楽 > koma\ ;
+誤記 > goki\ ;
+音波 > onpa\ ;
+些事 > saji\ ;
+韻母 > inbo\ ;
+映画 > eiga\ ;
+予備 > yobi\ ;
+二価 > nika\ ;
+施肥 > sehi\ ;
+題意 > daii\ ;
+二佐 > nisa\ ;
+予価 > yoka\ ;
+外衣 > gaii\ ;
+不帰 > fuki\ ;
+敷衍 > fuen\ ;
+早稲 > wase\ ;
+訛音 > kaon\ ;
+羽太 > hata\ ;
+煙霧 > enmu\ ;
+王化 > ouka\ ;
+煙霞 > enka\ ;
+煙雨 > en''u\ ;
+風呂 > furo\ ;
+乾位 > keni\ ;
+擬音 > gion\ ;
+威権 > iken\ ;
+一己 > ikko\ ;
+縁起 > engi\ ;
+九分 > kubu\ ;
+不安 > fuan\ ;
+妖異 > youi\ ;
+訃音 > fuon\ ;
+机下 > kika\ ;
+父祖 > fuso\ ;
+下婢 > kahi\ ;
+一家 > ikke\ ;
+陰阜 > infu\ ;
+奇縁 > kien\ ;
+暗愚 > angu\ ;
+与太 > yota\ ;
+下女 > gejo\ ;
+無駄 > muda\ ;
+縁語 > engo\ ;
+雅語 > gago\ ;
+王事 > ouji\ ;
+時機 > jiki\ ;
+早生 > wase\ ;
+獣医 > juui\ ;
+美姫 > biki\ ;
+婦女 > fujo\ ;
+美妓 > bigi\ ;
+風位 > fuui\ ;
+美女 > bijo\ ;
+九九 > kuku\ ;
+青砥 > aoto\ ;
+家々 > ieie\ ;
+無音 > muon\ ;
+議案 > gian\ ;
+不図 > futo\ ;
+隘路 > airo\ ;
+猛威 > moui\ ;
+降雨 > kouu\ ;
+智慧 > chie\ ;
+不器 > fuki\ ;
+多義 > tagi\ ;
+暴威 > boui\ ;
+多羅 > tara\ ;
+時期 > jiki\ ;
+語義 > gogi\ ;
+陰部 > inbu\ ;
+女王 > joou\ ;
+主位 > shui\ ;
+非理 > hiri\ ;
+雲脂 > fuke\ ;
+義務 > gimu\ ;
+離苦 > riku\ ;
+暮夜 > boya\ ;
+青田 > aota\ ;
+不和 > fuwa\ ;
+不味 > fumi\ ;
+隠語 > ingo\ ;
+護摩 > goma\ ;
+三味 > sami\ ;
+不可 > fuka\ ;
+下吏 > kari\ ;
+下司 > gesu\ ;
+下句 > geku\ ;
+縷縷 > ruru\ ;
+更位 > koui\ ;
+壁蝨 > dani\ ;
+美味 > bimi\ ;
+下卑 > gebi\ ;
+謳歌 > ouka\ ;
+護持 > goji\ ;
+一句 > ikku\ ;
+不利 > furi\ ;
+無鉛 > muen\ ;
+美化 > bika\ ;
+一区 > ikku\ ;
+頭垢 > fuke\ ;
+不具 > fugu\ ;
+頭囲 > toui\ ;
+記譜 > kifu\ ;
+不備 > fubi\ ;
+訛語 > kago\ ;
+犠打 > gida\ ;
+外科 > geka\ ;
+離縁 > rien\ ;
+世事 > seji\ ;
+韻字 > inji\ ;
+世世 > yoyo\ ;
+大目 > oome\ ;
+無辜 > muko\ ;
+上位 > joui\ ;
+下付 > kafu\ ;
+縁者 > enja\ ;
+日歩 > hibu\ ;
+不二 > fuji\ ;
+不予 > fuyo\ ;
+一個 > ikko\ ;
+爾汝 > jijo\ ;
+威容 > iyou\ ;
+音字 > onji\ ;
+夜着 > yogi\ ;
+院議 > ingi\ ;
+夜目 > yome\ ;
+一佐 > issa\ ;
+父母 > fubo\ ;
+非毀 > hiki\ ;
+時差 > jisa\ ;
+細雨 > saiu\ ;
+霊異 > reii\ ;
+誇示 > koji\ ;
+基音 > kion\ ;
+緯線 > isen\ ;
+附議 > fugi\ ;
+時宜 > jigi\ ;
+代々 > yoyo\ ;
+隠者 > inja\ ;
+時季 > jiki\ ;
+閻魔 > enma\ ;
+日日 > hibi\ ;
+数珠 > juzu\ ;
+附記 > fuki\ ;
+頤使 > ishi\ ;
+陰萎 > in''i\ ;
+音吐 > onto\ ;
+音叉 > onsa\ ;
+威名 > imei\ ;
+青木 > aoki\ ;
+威厳 > igen\ ;
+謝意 > shai\ ;
+綺羅 > kira\ ;
+威勢 > isei\ ;
+基部 > kibu\ ;
+如意 > nyoi\ ;
+譬喩 > hiyu\ ;
+議員 > giin\ ;
+威光 > ikou\ ;
+好意 > koui\ ;
+好悪 > kouo\ ;
+夜気 > yaki\ ;
+音価 > onka\ ;
+韻事 > inji\ ;
+記紀 > kiki\ ;
+既往 > kiou\ ;
+語気 > goki\ ;
+爾後 > jigo\ ;
+威令 > irei\ ;
+時務 > jimu\ ;
+奥意 > okui\ ;
+垢離 > kori\ ;
+雲気 > unki\ ;
+間間 > mama\ ;
+墓碑 > bohi\ ;
+雨水 > usui\ ;
+譲位 > joui\ ;
+塩素 > enso\ ;
+時価 > jika\ ;
+議事 > giji\ ;
+無縁 > muen\ ;
+夜暗 > yaan\ ;
+時事 > jiji\ ;
+時下 > jika\ ;
+夏期 > kaki\ ;
+委任 > inin\ ;
+奴婢 > nuhi\ ;
+縊死 > ishi\ ;
+大手 > oode\ ;
+木々 > kigi\ ;
+露座 > roza\ ;
+雅歌 > gaka\ ;
+詠歌 > eika\ ;
+陰画 > inga\ ;
+大意 > taii\ ;
+壊死 > eshi\ ;
+無碍 > muge\ ;
+詐欺 > sagi\ ;
+誠意 > seii\ ;
+煙火 > enka\ ;
+経緯 > keii\ ;
+青地 > aoji\ ;
+青図 > aozu\ ;
+敬意 > keii\ ;
+摩羅 > mara\ ;
+粗野 > soya\ ;
+大屋 > ooya\ ;
+誤差 > gosa\ ;
+大尉 > taii\ ;
+曳々 > eiei\ ;
+縁故 > enko\ ;
+無理 > muri\ ;
+夢寐 > mubi\ ;
+緯書 > isho\ ;
+多岐 > taki\ ;
+煙波 > enpa\ ;
+糖衣 > toui\ ;
+露地 > roji\ ;
+女児 > joji\ ;
+多寡 > taka\ ;
+援護 > engo\ ;
+旧事 > kuji\ ;
+語尾 > gobi\ ;
+誤字 > goji\ ;
+爾余 > jiyo\ ;
+露営 > roei\ ;
+世々 > yoyo\ ;
+夥多 > kata\ ;
+無煙 > muen\ ;
+数寄 > suki\ ;
+夏季 > kaki\ ;
+阿片 > ahen\ ;
+陰気 > inki\ ;
+夜夜 > yoyo\ ;
+多多 > tata\ ;
+旗下 > kika\ ;
+土間 > doma\ ;
+措辞 > soji\ ;
+縁座 > enza\ ;
+方位 > houi\ ;
+外囲 > gaii\ ;
+課員 > kain\ ;
+基礎 > kiso\ ;
+無派 > muha\ ;
+規矩 > kiku\ ;
+夜営 > yaei\ ;
+濾過 > roka\ ;
+雨天 > uten\ ;
+奈何 > ikan\ ;
+雨声 > usei\ ;
+無比 > muhi\ ;
+見目 > mime\ ;
+雨域 > uiki\ ;
+縁家 > enka\ ;
+夜半 > yowa\ ;
+雉子 > kiji\ ;
+衣香 > ikou\ ;
+語呂 > goro\ ;
+無機 > muki\ ;
+補語 > hogo\ ;
+総意 > soui\ ;
+隠微 > inbi\ ;
+語句 > goku\ ;
+掩護 > engo\ ;
+補記 > hoki\ ;
+随意 > zuii\ ;
+夷人 > ijin\ ;
+衣類 > irui\ ;
+夜具 > yagu\ ;
+無期 > muki\ ;
+粗菓 > soka\ ;
+多価 > taka\ ;
+霊位 > reii\ ;
+攻囲 > koui\ ;
+多事 > taji\ ;
+火箭 > hiya\ ;
+絵本 > ehon\ ;
+固辞 > koji\ ;
+狒々 > hihi\ ;
+土語 > dogo\ ;
+地衣 > chii\ ;
+攘夷 > joui\ ;
+雇員 > koin\ ;
+無援 > muen\ ;
+雅味 > gami\ ;
+簿記 > boki\ ;
+無手 > mute\ ;
+無我 > muga\ ;
+火矢 > hiya\ ;
+阿房 > ahou\ ;
+覇気 > haki\ ;
+補肥 > hohi\ ;
+訴因 > soin\ ;
+規模 > kibo\ ;
+雄偉 > yuui\ ;
+故事 > koji\ ;
+袈裟 > kesa\ ;
+塗布 > tofu\ ;
+絵師 > eshi\ ;
+除夜 > joya\ ;
+無季 > muki\ ;
+火焔 > kaen\ ;
+火炎 > kaen\ ;
+火炉 > karo\ ;
+押韻 > ouin\ ;
+塩基 > enki\ ;
+擬古 > giko\ ;
+為政 > isei\ ;
+無塩 > muen\ ;
+推移 > suii\ ;
+無垢 > muku\ ;
+無地 > muji\ ;
+附図 > fuzu\ ;
+素手 > sude\ ;
+火気 > kaki\ ;
+擬似 > giji\ ;
+塩化 > enka\ ;
+記事 > kiji\ ;
+無味 > mumi\ ;
+日々 > hibi\ ;
+阿呆 > ahou\ ;
+地異 > chii\ ;
+闇愚 > angu\ ;
+院主 > inju\ ;
+堂宇 > douu\ ;
+青々 > aoao\ ;
+阿兄 > akei\ ;
+無価 > muka\ ;
+場合 > baai\ ;
+絵像 > ezou\ ;
+無二 > muni\ ;
+無事 > buji\ ;
+衣紋 > emon\ ;
+納屋 > naya\ ;
+見場 > miba\ ;
+阿世 > asei\ ;
+笑顔 > egao\ ;
+揶揄 > yayu\ ;
+基因 > kiin\ ;
+素地 > soji\ ;
+素因 > soin\ ;
+粗朶 > soda\ ;
+手間 > tema\ ;
+図画 > zuga\ ;
+章魚 > tako\ ;
+夜々 > yoyo\ ;
+多々 > tata\ ;
+火屋 > hoya\ ;
+批議 > higi\ ;
+瀬戸 > seto\ ;
+螻蛄 > kera\ ;
+火夫 > kafu\ ;
+間夫 > mabu\ ;
+持碁 > jigo\ ;
+演舞 > enbu\ ;
+糊塗 > koto\ ;
+粗布 > sofu\ ;
+演者 > enja\ ;
+火器 > kaki\ ;
+蛙黽 > abou\ ;
+演義 > engi\ ;
+掏摸 > suri\ ;
+行為 > koui\ ;
+籠手 > kote\ ;
+行火 > anka\ ;
+箇箇 > koko\ ;
+裸婦 > rafu\ ;
+図案 > zuan\ ;
+土手 > dote\ ;
+温雅 > onga\ ;
+援助 > enjo\ ;
+蝦蟇 > gama\ ;
+因果 > inga\ ;
+衣桁 > ikou\ ;
+齟齬 > sogo\ ;
+火事 > kaji\ ;
+固持 > koji\ ;
+四時 > yoji\ ;
+四方 > yomo\ ;
+蝌蚪 > kato\ ;
+国府 > kofu\ ;
+捻子 > neji\ ;
+地場 > jiba\ ;
+淫靡 > inbi\ ;
+手羽 > teba\ ;
+蜚語 > higo\ ;
+淫雨 > in''u\ ;
+補助 > hojo\ ;
+捩子 > neji\ ;
+湯葉 > yuba\ ;
+慰霊 > irei\ ;
+土器 > doki\ ;
+蜘蛛 > kumo\ ;
+按摩 > anma\ ;
+衣帯 > itai\ ;
+補佐 > hosa\ ;
+授受 > juju\ ;
+打破 > daha\ ;
+拿捕 > daho\ ;
+鼻音 > bion\ ;
+土匪 > dohi\ ;
+唖鈴 > arei\ ;
+演武 > enbu\ ;
+演歌 > enka\ ;
+地位 > chii\ ;
+移項 > ikou\ ;
+在位 > zaii\ ;
+衍字 > enji\ ;
+園児 > enji\ ;
+愛馬 > aiba\ ;
+授与 > juyo\ ;
+四囲 > shii\ ;
+固化 > koka\ ;
+捕吏 > hori\ ;
+愛飲 > aiin\ ;
+哀音 > aion\ ;
+海馬 > todo\ ;
+愛顧 > aiko\ ;
+海鞘 > hoya\ ;
+回向 > ekou\ ;
+渡英 > toei\ ;
+戯画 > giga\ ;
+慰謝 > isha\ ;
+黴雨 > baiu\ ;
+演技 > engi\ ;
+衣冠 > ikan\ ;
+演戯 > engi\ ;
+移送 > isou\ ;
+和音 > waon\ ;
+押忍 > ossu\ ;
+移転 > iten\ ;
+銅鑼 > dora\ ;
+慰藉 > isha\ ;
+把持 > haji\ ;
+愛輝 > aiki\ ;
+湯煮 > yuni\ ;
+移譲 > ijou\ ;
+悪鬼 > akki\ ;
+意趣 > ishu\ ;
+愛護 > aigo\ ;
+移行 > ikou\ ;
+哀話 > aiwa\ ;
+哀訴 > aiso\ ;
+呉須 > gosu\ ;
+間々 > mama\ ;
+呉音 > goon\ ;
+黄鉛 > ouen\ ;
+秘話 > hiwa\ ;
+湯気 > yuge\ ;
+螺子 > neji\ ;
+意見 > iken\ ;
+拇印 > boin\ ;
+黄身 > kimi\ ;
+和議 > wagi\ ;
+押印 > ouin\ ;
+器具 > kigu\ ;
+和語 > wago\ ;
+悲運 > hiun\ ;
+鼓舞 > kobu\ ;
+吐露 > toro\ ;
+恩顧 > onko\ ;
+恵雨 > keiu\ ;
+浮華 > fuka\ ;
+海苔 > nori\ ;
+海芋 > kaiu\ ;
+神酒 > miki\ ;
+浄衣 > joue\ ;
+河馬 > kaba\ ;
+蕎麦 > soba\ ;
+押下 > ouka\ ;
+渡河 > toka\ ;
+鸚鵡 > oumu\ ;
+合間 > aima\ ;
+右面 > umen\ ;
+鼻祖 > biso\ ;
+悪貨 > akka\ ;
+渡欧 > toou\ ;
+移管 > ikan\ ;
+否運 > hiun\ ;
+古音 > koon\ ;
+嘔吐 > outo\ ;
+悲話 > hiwa\ ;
+和英 > waei\ ;
+古雅 > koga\ ;
+滋味 > jimi\ ;
+扶助 > fujo\ ;
+唖然 > azen\ ;
+蘇芳 > suou\ ;
+等位 > toui\ ;
+藍褸 > boro\ ;
+悪衣 > akui\ ;
+祖語 > sogo\ ;
+怪雨 > kaiu\ ;
+湯屋 > yuya\ ;
+唾棄 > daki\ ;
+右辺 > uhen\ ;
+慈父 > jifu\ ;
+喜寿 > kiju\ ;
+古都 > koto\ ;
+沿路 > enro\ ;
+野鄙 > yahi\ ;
+湯女 > yuna\ ;
+厭離 > onri\ ;
+鼻炎 > bien\ ;
+野辺 > nobe\ ;
+黄緯 > koui\ ;
+蕪辞 > buji\ ;
+恩誼 > ongi\ ;
+穎果 > eika\ ;
+鋭気 > eiki\ ;
+営営 > eiei\ ;
+法衣 > houe\ ;
+河豚 > fugu\ ;
+野路 > noji\ ;
+温度 > ondo\ ;
+法螺 > hora\ ;
+蓖麻 > hima\ ;
+所以 > yuen\ ;
+呪符 > jufu\ ;
+慈母 > jibo\ ;
+古語 > kogo\ ;
+営利 > eiri\ ;
+古記 > koki\ ;
+応需 > ouju\ ;
+薔薇 > bara\ ;
+我利 > gari\ ;
+移民 > imin\ ;
+喇嘛 > rama\ ;
+憎悪 > zouo\ ;
+空尉 > kuui\ ;
+穎悟 > eigo\ ;
+気韻 > kiin\ ;
+右葉 > uyou\ ;
+麻痺 > mahi\ ;
+哀歌 > aika\ ;
+気障 > kiza\ ;
+受蘊 > juun\ ;
+御顔 > okao\ ;
+愛機 > aiki\ ;
+右舷 > ugen\ ;
+鹵簿 > robo\ ;
+恩義 > ongi\ ;
+十雨 > juuu\ ;
+右脳 > unou\ ;
+温和 > onwa\ ;
+永遠 > eien\ ;
+愚案 > guan\ ;
+野良 > nora\ ;
+忌避 > kihi\ ;
+蒿雀 > aoji\ ;
+淫婦 > inpu\ ;
+気鋭 > kiei\ ;
+惰気 > daki\ ;
+和気 > waki\ ;
+蚊帳 > kaya\ ;
+海松 > miru\ ;
+慈愛 > jiai\ ;
+慈悲 > jihi\ ;
+句義 > kugi\ ;
+古義 > kogi\ ;
+和歌 > waka\ ;
+汚行 > okou\ ;
+呼気 > koki\ ;
+気運 > kiun\ ;
+蚊屋 > kaya\ ;
+破風 > hafu\ ;
+愛撫 > aibu\ ;
+黄泉 > yomi\ ;
+印譜 > inpu\ ;
+応訴 > ouso\ ;
+御酒 > miki\ ;
+母音 > boin\ ;
+都雅 > toga\ ;
+黄櫨 > haze\ ;
+忌諱 > kiki\ ;
+哀慕 > aibo\ ;
+医道 > idou\ ;
+合着 > aigi\ ;
+穏和 > onwa\ ;
+空位 > kuui\ ;
+秘技 > higi\ ;
+祖父 > sofu\ ;
+愛慕 > aibo\ ;
+御身 > onmi\ ;
+同異 > doui\ ;
+古稀 > koki\ ;
+殺陣 > tate\ ;
+慰問 > imon\ ;
+卑語 > higo\ ;
+危虞 > kigu\ ;
+意思 > ishi\ ;
+悲歌 > hika\ ;
+区費 > kuhi\ ;
+意志 > ishi\ ;
+呆気 > akke\ ;
+邪魔 > jama\ ;
+邪鬼 > jaki\ ;
+都鄙 > tohi\ ;
+区議 > kugi\ ;
+私意 > shii\ ;
+徒費 > tohi\ ;
+慰労 > irou\ ;
+破邪 > haja\ ;
+往路 > ouro\ ;
+淫事 > inji\ ;
+古画 > koga\ ;
+邪飛 > jahi\ ;
+祖母 > sobo\ ;
+御衣 > gyoi\ ;
+鋭利 > eiri\ ;
+派手 > hade\ ;
+悪果 > akka\ ;
+油煙 > yuen\ ;
+弥陀 > mida\ ;
+野猿 > yaen\ ;
+受理 > juri\ ;
+呼応 > koou\ ;
+秘奥 > hiou\ ;
+怪異 > kaii\ ;
+都議 > togi\ ;
+意外 > igai\ ;
+比諭 > hiyu\ ;
+遺骸 > igai\ ;
+汚穢 > owai\ ;
+愚図 > guzu\ ;
+征衣 > seii\ ;
+情意 > joui\ ;
+流布 > rufu\ ;
+母語 > bogo\ ;
+遺香 > ikou\ ;
+野火 > nobi\ ;
+和字 > waji\ ;
+合歓 > nemu\ ;
+移動 > idou\ ;
+印綬 > inju\ ;
+加除 > kajo\ ;
+御茶 > ocha\ ;
+意嚮 > ikou\ ;
+遺風 > ifuu\ ;
+毀誉 > kiyo\ ;
+麻布 > mafu\ ;
+鼻下 > bika\ ;
+悪感 > okan\ ;
+悪意 > akui\ ;
+意向 > ikou\ ;
+移住 > ijuu\ ;
+虚位 > kyoi\ ;
+医者 > isha\ ;
+恵方 > ehou\ ;
+虚仮 > koke\ ;
+移乗 > ijou\ ;
+愛児 > aiji\ ;
+加里 > kari\ ;
+野次 > yaji\ ;
+沙汰 > sata\ ;
+秘儀 > higi\ ;
+助辞 > joji\ ;
+武運 > buun\ ;
+欧露 > ouro\ ;
+御簾 > misu\ ;
+悪寒 > okan\ ;
+危疑 > kigi\ ;
+味噌 > miso\ ;
+右方 > uhou\ ;
+印画 > inga\ ;
+廈門 > amoi\ ;
+秘事 > hiji\ ;
+汚点 > oten\ ;
+印璽 > inji\ ;
+毛羽 > keba\ ;
+禍因 > kain\ ;
+野暮 > yabo\ ;
+呵呵 > kaka\ ;
+同意 > doui\ ;
+怒気 > doki\ ;
+合意 > goui\ ;
+御礼 > orei\ ;
+波布 > habu\ ;
+御碗 > owan\ ;
+恣意 > shii\ ;
+葵花 > kika\ ;
+加護 > kago\ ;
+遺贈 > izou\ ;
+汚泥 > odei\ ;
+遺賢 > iken\ ;
+磁気 > jiki\ ;
+遺財 > izai\ ;
+石蓴 > aosa\ ;
+御盆 > obon\ ;
+悲喜 > hiki\ ;
+汚水 > osui\ ;
+反故 > hogo\ ;
+弊衣 > heii\ ;
+悲哀 > hiai\ ;
+遠路 > enro\ ;
+医界 > ikai\ ;
+遺誡 > ikai\ ;
+医用 > iyou\ ;
+遺訓 > ikun\ ;
+南無 > namu\ ;
+征矢 > soya\ ;
+追風 > oite\ ;
+悪化 > akka\ ;
+気炎 > kien\ ;
+砒素 > hiso\ ;
+怪我 > kega\ ;
+右岸 > ugan\ ;
+麾下 > kika\ ;
+永永 > eiei\ ;
+汚染 > osen\ ;
+恩威 > on''i\ ;
+祇園 > gion\ ;
+古希 > koki\ ;
+荷駄 > nida\ ;
+危機 > kiki\ ;
+気温 > kion\ ;
+徒爾 > toji\ ;
+思惟 > shii\ ;
+微温 > bion\ ;
+過誤 > kago\ ;
+古字 > koji\ ;
+合図 > aizu\ ;
+破瓜 > haka\ ;
+遺著 > icho\ ;
+幾重 > ikue\ ;
+汚損 > oson\ ;
+吏員 > riin\ ;
+厭悪 > en''o\ ;
+可塑 > kaso\ ;
+去年 > kozo\ ;
+遺草 > isou\ ;
+莫迦 > baka\ ;
+遺芳 > ihou\ ;
+名医 > meii\ ;
+厚意 > koui\ ;
+吏務 > rimu\ ;
+歌舞 > kabu\ ;
+迂遠 > uen\ ;
+微意 > bii\ ;
+叙位 > joi\ ;
+迂路 > uro\ ;
+得手 > ete\ ;
+気宇 > kiu\ ;
+差違 > sai\ ;
+医家 > ika\ ;
+八重 > yae\ ;
+医員 > iin\ ;
+遺棄 > iki\ ;
+医務 > imu\ ;
+医事 > iji\ ;
+遺愛 > iai\ ;
+遺影 > iei\ ;
+部位 > bui\ ;
+武威 > bui\ ;
+遺孤 > iko\ ;
+差異 > sai\ ;
+異音 > ion\ ;
+遺児 > iji\ ;
+違和 > iwa\ ;
+遺事 > iji\ ;
+希有 > keu\ ;
+迂愚 > ugu\ ;
+欧亜 > oua\ ;
+次位 > jii\ ;
+次亜 > jia\ ;
+眉宇 > biu\ ;
+辞意 > jii\ ;
+異議 > igi\ ;
+辞彙 > jii\ ;
+居間 > ima\ ;
+異義 > igi\ ;
+帰依 > kie\ ;
+香魚 > ayu\ ;
+機位 > kii\ ;
+似非 > ese\ ;
+尾羽 > oha\ ;
+異父 > ifu\ ;
+会陰 > ein\ ;
+位記 > iki\ ;
+異母 > ibo\ ;
+亜麻 > ama\ ;
+以遠 > ien\ ;
+伊語 > igo\ ;
+自慰 > jii\ ;
+安芸 > aki\ ;
+亜鉛 > aen\ ;
+甲斐 > kai\ ;
+畏懼 > iku\ ;
+畏怖 > ifu\ ;
+尾根 > one\ ;
+画意 > gai\ ;
+椅子 > isu\ ;
+異図 > ito\ ;
+異化 > ika\ ;
+胃炎 > ien\ ;
+位次 > iji\ ;
+依怙 > eko\ ;
+亜科 > aka\ ;
+余意 > yoi\ ;
+仮有 > keu\ ;
+侍医 > jii\ ;
+云為 > uni\ ;
+依估 > eko\ ;
+亜欧 > aou\ ;
+以後 > igo\ ;
+以往 > iou\ ;
+他意 > tai\ ;
+賀意 > gai\ ;
+有無 > umu\ ;
+貴意 > kii\ ;
+会厭 > een\ ;
+栄位 > eii\ ;
+井戸 > ido\ ;
+非違 > hii\ ;
+夜雨 > yau\ ;
+多雨 > tau\ ;
+二尉 > nii\ ;
+雨露 > uro\ ;
+以下 > ika\ ;
+墨魚 > ika\ ;
+不意 > fui\ ;
+下意 > kai\ ;
+二位 > nii\ ;
+威武 > ibu\ ;
+有卦 > uke\ ;
+王位 > oui\ ;
+羅宇 > rao\ ;
+羽化 > uka\ ;
+絵馬 > ema\ ;
+委棄 > iki\ ;
+奇異 > kii\ ;
+下位 > kai\ ;
+阿諛 > ayu\ ;
+威儀 > igi\ ;
+壊疽 > eso\ ;
+烏賊 > ika\ ;
+委員 > iin\ ;
+雨気 > uki\ ;
+委付 > ifu\ ;
+雨期 > uki\ ;
+語意 > goi\ ;
+語彙 > goi\ ;
+女医 > joi\ ;
+如何 > dou\ ;
+雨後 > ugo\ ;
+故意 > koi\ ;
+無為 > mui\ ;
+補遺 > hoi\ ;
+雨季 > uki\ ;
+緯度 > ido\ ;
+阿比 > abi\ ;
+維持 > iji\ ;
+雲丹 > uni\ ;
+無意 > mui\ ;
+阿字 > aji\ ;
+阿媽 > ama\ ;
+灰汁 > aku\ ;
+絵図 > ezu\ ;
+見得 > mie\ ;
+阿吽 > aun\ ;
+無位 > mui\ ;
+滋雨 > jiu\ ;
+囲碁 > igo\ ;
+紆余 > uyo\ ;
+衣架 > ika\ ;
+慈雨 > jiu\ ;
+海髪 > ogo\ ;
+意馬 > iba\ ;
+図会 > zue\ ;
+所為 > sei\ ;
+悪露 > oro\ ;
+海胆 > uni\ ;
+海老 > ebi\ ;
+我意 > gai\ ;
+麻衣 > mai\ ;
+意義 > igi\ ;
+蝦夷 > ezo\ ;
+硫黄 > iou\ ;
+慰撫 > ibu\ ;
+微雨 > biu\ ;
+意気 > iki\ ;
+鋭意 > eii\ ;
+穢多 > eta\ ;
+医院 > iin\ ;
+穢土 > edo\ ;
+右縁 > uen\ ;
+慰安 > ian\ ;
+十重 > toe\ ;
+愚意 > gui\ ;
+海女 > ama\ ;
+意地 > iji\ ;
+意図 > ito\ ;
+右派 > uha\ ;
+意味 > imi\ ;
+萎靡 > ibi\ ;
+海人 > ama\ ;
+医科 > ika\ ;
+年魚 > ayu\ ;
+句意 > kui\ ;
+古意 > koi\ ;
+遺詠 > iei\ ;
+示威 > jii\ ;
+江戸 > edo\ ;
+伊井 > ii\ ;
+嗚呼 > aa\ ;
+軖 > tsumugikuruma\ ;
+糎 > senchimeitoru\ ;
+粨 > hekutomeetoru\ ;
+爫 > tsumekanmuri\ ;
+忄 > ritsushinben\ ;
+志 > kokorozashi\ ;
+政 > matsurigoto\ ;
+鶎 > kikuitadaki\ ;
+粍 > mirimeitoru\ ;
+粁 > kiromeitoru\ ;
+籵 > dekameetoru\ ;
+竰 > senchiritto\ ;
+竡 > hekutoritto\ ;
+竓 > miririttoru\ ;
+竏 > kirorittoru\ ;
+瓰 > deshiguramu\ ;
+己 > tsuchinoto\ ;
+屡 > shibashiba\ ;
+謀 > hakarigoto\ ;
+熟 > tsukudzuku\ ;
+嘴 > kuchibashi\ ;
+々 > kurikaeshi\ ;
+酛 > sakenomoto\ ;
+詔 > mikotonori\ ;
+蝟 > harinezumi\ ;
+萙 > kutabireru\ ;
+竕 > deshiritto\ ;
+甅 > senchigura\ ;
+瓸 > hekutogura\ ;
+瓱 > miriguramu\ ;
+瓩 > kiroguramu\ ;
+瓧 > dekaguramu\ ;
+擅 > hoshiimama\ ;
+勅 > mikotonori\ ;
+倩 > tsuratsura\ ;
+幻 > maboroshi\ ;
+屍 > shikabane\ ;
+孤 > minashigo\ ;
+猪 > inoshishi\ ;
+唇 > kuchibiru\ ;
+檣 > hobashira\ ;
+橘 > tachibana\ ;
+兵 > tsuwamono\ ;
+銀 > shirogane\ ;
+邪 > yokoshima\ ;
+鯐 > subashiri\ ;
+鮗 > konoshiro\ ;
+阝 > kozatohen\ ;
+踝 > kurubushi\ ;
+裃 > kamishimo\ ;
+衤 > koromohen\ ;
+竍 > dekaritto\ ;
+犭 > kemonohen\ ;
+椴 > todomatsu\ ;
+嵙 > yamashina\ ;
+尸 > shikabane\ ;
+凩 > kogarashi\ ;
+亥 > inoshishi\ ;
+弱 > nayonayo\ ;
+蹲 > tsukubai\ ;
+姑 > shuutome\ ;
+塊 > katamari\ ;
+堤 > tsutsumi\ ;
+鼓 > tsudzumi\ ;
+源 > minamoto\ ;
+鶏 > niwatori\ ;
+叢 > kusamura\ ;
+印 > shirushi\ ;
+魂 > tamashii\ ;
+腸 > harawata\ ;
+杯 > sakazuki\ ;
+雷 > kaminari\ ;
+雁 > karigane\ ;
+暁 > akatsuki\ ;
+紫 > murasaki\ ;
+掌 > tenohira\ ;
+抑 > somosomo\ ;
+懐 > futokoro\ ;
+黛 > mayuzumi\ ;
+鱩 > hatahata\ ;
+鰰 > hatahata\ ;
+鯑 > kazunoko\ ;
+魁 > sakigake\ ;
+鬣 > tategami\ ;
+餞 > hanamuke\ ;
+頑 > katakuna\ ;
+隼 > hayabusa\ ;
+陵 > misasagi\ ;
+閊 > tsukaeru\ ;
+鋸 > nokogiri\ ;
+躾 > shitsuke\ ;
+諺 > kotowaza\ ;
+褌 > fundoshi\ ;
+蛤 > hamaguri\ ;
+蒜 > nin''niku\ ;
+聾 > mimishii\ ;
+綴 > tsudzuri\ ;
+篁 > takamura\ ;
+筍 > takenoko\ ;
+碑 > ishibumi\ ;
+癸 > mizunoto\ ;
+漣 > sazanami\ ;
+楠 > kusunoki\ ;
+巫 > kan''nagi\ ;
+寿 > kotobuki\ ;
+圕 > toshokan\ ;
+形 > katachi\ ;
+轍 > wadachi\ ;
+巷 > chimata\ ;
+跣 > hadashi\ ;
+趣 > omomuki\ ;
+局 > tsubone\ ;
+寧 > mushiro\ ;
+獺 > kawauso\ ;
+狐 > kitsune\ ;
+嫂 > aniyome\ ;
+話 > hanashi\ ;
+燕 > tsubame\ ;
+滴 > shizuku\ ;
+湖 > mizuumi\ ;
+剣 > tsurugi\ ;
+凝 > shikori\ ;
+冠 > kanmuri\ ;
+椿 > tsubaki\ ;
+梟 > fukurou\ ;
+頂 > itadaki\ ;
+柱 > hashira\ ;
+俎 > manaita\ ;
+林 > hayashi\ ;
+侍 > samurai\ ;
+羊 > hitsuji\ ;
+東 > higashi\ ;
+昔 > mukashi\ ;
+経 > tateito\ ;
+筵 > mushiro\ ;
+錦 > nishiki\ ;
+私 > watashi\ ;
+祭 > matsuri\ ;
+社 > yashiro\ ;
+確 > tashika\ ;
+邸 > yashiki\ ;
+齲 > mushiba\ ;
+黥 > irezumi\ ;
+鶫 > tsugumi\ ;
+鵤 > ikaruga\ ;
+鵆 > chidori\ ;
+鰘 > muroaji\ ;
+鯳 > sukesou\ ;
+鬘 > katsura\ ;
+雫 > shizuku\ ;
+鎹 > kasugai\ ;
+鋩 > kissaki\ ;
+鋒 > kissaki\ ;
+銯 > kasugai\ ;
+蹄 > hidzume\ ;
+謬 > ayamari\ ;
+誼 > yoshimi\ ;
+誮 > yasashi\ ;
+襅 > chihaya\ ;
+蠎 > uwabami\ ;
+蝮 > mamushi\ ;
+蜆 > shijimi\ ;
+虱 > shirami\ ;
+蘰 > katsura\ ;
+蕾 > tsubomi\ ;
+蓆 > mushiro\ ;
+艀 > hashike\ ;
+聢 > shikato\ ;
+翼 > tsubasa\ ;
+籡 > shinshi\ ;
+礫 > tsubute\ ;
+礎 > ishizue\ ;
+睫 > matsuge\ ;
+甦 > yomigae\ ;
+牜 > ushihen\ ;
+毮 > mushiru\ ;
+毟 > mushiru\ ;
+楿 > katsura\ ;
+棗 > natsume\ ;
+梻 > shikimi\ ;
+柊 > hiiragi\ ;
+曙 > akebono\ ;
+晒 > sarashi\ ;
+旁 > tsukuri\ ;
+挘 > mushiru\ ;
+拳 > kobushi\ ;
+怺 > koraeru\ ;
+徤 > takeshi\ ;
+巽 > tatsumi\ ;
+壬 > mizunoe\ ;
+嚏 > kushami\ ;
+噺 > hanashi\ ;
+俤 > omokage\ ;
+丼 > donburi\ ;
+〃 > onajiku\ ;
+瞼 > mabuta\ ;
+辷 > suberu\ ;
+瞳 > hitomi\ ;
+輩 > yakara\ ;
+盲 > meshii\ ;
+車 > kuruma\ ;
+序 > tsuide\ ;
+皆 > min''na\ ;
+幕 > tobari\ ;
+帳 > tobari\ ;
+帝 > mikado\ ;
+左 > hidari\ ;
+疾 > shitsu\ ;
+畳 > tatami\ ;
+畠 > hatake\ ;
+畑 > hatake\ ;
+瓦 > kawara\ ;
+岬 > misaki\ ;
+届 > todoke\ ;
+尊 > mikoto\ ;
+宝 > takara\ ;
+獣 > kemono\ ;
+狼 > ookami\ ;
+独 > doitsu\ ;
+嫉 > shitsu\ ;
+誠 > makoto\ ;
+証 > akashi\ ;
+父 > chichi\ ;
+訛 > namari\ ;
+娘 > musume\ ;
+姿 > sugata\ ;
+妾 > warawa\ ;
+妹 > imouto\ ;
+要 > kaname\ ;
+襷 > tasuki\ ;
+煙 > kemuri\ ;
+襖 > fusuma\ ;
+失 > shitsu\ ;
+裸 > hadaka\ ;
+袴 > hakama\ ;
+袋 > fukuro\ ;
+衣 > koromo\ ;
+執 > shitsu\ ;
+濕 > shitsu\ ;
+蟋 > shitsu\ ;
+埃 > hokori\ ;
+蟀 > shutsu\ ;
+鼬 > itachi\ ;
+鼠 > nezumi\ ;
+土 > tsuchi\ ;
+漆 > urushi\ ;
+蛹 > sanagi\ ;
+蛙 > kawazu\ ;
+湿 > shitsu\ ;
+器 > utsuwa\ ;
+港 > minato\ ;
+薬 > kusuri\ ;
+薪 > takigi\ ;
+涙 > namida\ ;
+薇 > zenmai\ ;
+薄 > susuki\ ;
+鴉 > karasu\ ;
+叱 > shitsu\ ;
+厨 > kuriya\ ;
+卸 > oroshi\ ;
+卵 > tamago\ ;
+歪 > ibitsu\ ;
+魚 > sakana\ ;
+南 > minami\ ;
+匠 > takumi\ ;
+櫻 > sakura\ ;
+苺 > ichigo\ ;
+勢 > hazumi\ ;
+檜 > hinoki\ ;
+舅 > shuuto\ ;
+榊 > sakaki\ ;
+光 > hikari\ ;
+館 > yakata\ ;
+肴 > sakana\ ;
+桜 > sakura\ ;
+候 > sourou\ ;
+響 > hibiki\ ;
+柳 > yanagi\ ;
+俥 > kuruma\ ;
+信 > makoto\ ;
+俄 > niwaka\ ;
+係 > kakari\ ;
+便 > yosuga\ ;
+枕 > makura\ ;
+机 > tsukue\ ;
+仏 > hotoke\ ;
+曇 > kumori\ ;
+雀 > suzume\ ;
+京 > miyako\ ;
+隣 > tonari\ ;
+乳 > chichi\ ;
+乙 > kinoto\ ;
+乍 > nagara\ ;
+万 > yorozu\ ;
+七 > shichi\ ;
+縁 > yosuga\ ;
+丁 > hinoto\ ;
+緑 > midori\ ;
+絣 > kasuri\ ;
+絆 > kizuna\ ;
+簾 > sudare\ ;
+鏡 > kagami\ ;
+鎖 > kusari\ ;
+筒 > tsutsu\ ;
+捌 > sabaki\ ;
+鋼 > hagane\ ;
+童 > warabe\ ;
+鋏 > hasami\ ;
+銃 > tsutsu\ ;
+鉛 > namari\ ;
+扉 > tobira\ ;
+所 > tokoro\ ;
+都 > miyako\ ;
+悉 > shitsu\ ;
+齦 > haguki\ ;
+鼈 > suppon\ ;
+黜 > chutsu\ ;
+麩 > fusuma\ ;
+麓 > fumoto\ ;
+鵥 > kakesu\ ;
+鴬 > uguisu\ ;
+鴎 > kamome\ ;
+鱸 > suzuki\ ;
+鱰 > shiira\ ;
+鱪 > shiira\ ;
+鰹 > katsuo\ ;
+鰯 > iwashi\ ;
+鰮 > iwashi\ ;
+鰚 > haraka\ ;
+鰊 > nishin\ ;
+鰆 > sawara\ ;
+鯱 > shachi\ ;
+鯰 > namazu\ ;
+鯨 > kujira\ ;
+鯣 > surume\ ;
+鮪 > maguro\ ;
+鮖 > kajika\ ;
+鮃 > hirame\ ;
+魸 > namazu\ ;
+騭 > shitsu\ ;
+颪 > oroshi\ ;
+鞐 > kohaze\ ;
+霞 > kasumi\ ;
+霙 > mizore\ ;
+雛 > hiyoko\ ;
+隲 > shitsu\ ;
+隰 > shitsu\ ;
+鑢 > yasuri\ ;
+鑕 > shitsu\ ;
+鎺 > habaki\ ;
+錺 > kazari\ ;
+銍 > chitsu\ ;
+銊 > shutsu\ ;
+鉥 > shutsu\ ;
+鉋 > kan''na\ ;
+鈨 > habaki\ ;
+醪 > moromi\ ;
+郅 > shitsu\ ;
+遖 > appare\ ;
+迚 > totemo\ ;
+軈 > yagate\ ;
+軅 > yagate\ ;
+躻 > utsuke\ ;
+躮 > segare\ ;
+踵 > kakato\ ;
+賉 > shutsu\ ;
+貭 > shitsu\ ;
+豑 > chitsu\ ;
+訁 > gonben\ ;
+袠 > chitsu\ ;
+袟 > chitsu\ ;
+衾 > fusuma\ ;
+蠍 > sasori\ ;
+蟄 > chitsu\ ;
+蝨 > shitsu\ ;
+蛍 > hotaru\ ;
+薺 > nazuna\ ;
+蕨 > warabi\ ;
+蔶 > sonoko\ ;
+蓬 > yomogi\ ;
+蒺 > shitsu\ ;
+蒅 > sukumo\ ;
+蒁 > shutsu\ ;
+莨 > tabako\ ;
+茸 > kinoko\ ;
+膣 > chitsu\ ;
+膠 > nikawa\ ;
+腟 > chitsu\ ;
+纃 > kasuri\ ;
+縅 > odoshi\ ;
+緕 > kasuri\ ;
+絀 > chutsu\ ;
+糘 > sukumo\ ;
+糒 > hoshii\ ;
+粭 > sukumo\ ;
+笂 > utsubo\ ;
+竈 > kamado\ ;
+窒 > chitsu\ ;
+窋 > chutsu\ ;
+秩 > chitsu\ ;
+秤 > hakari\ ;
+禊 > misogi\ ;
+祑 > chitsu\ ;
+礩 > shitsu\ ;
+硲 > hazama\ ;
+砦 > toride\ ;
+甩 > shutsu\ ;
+瓼 > sarake\ ;
+璱 > shitsu\ ;
+瑟 > shitsu\ ;
+狸 > tanuki\ ;
+牃 > ouchou\ ;
+烏 > karasu\ ;
+渚 > nagisa\ ;
+涎 > yodare\ ;
+泏 > chutsu\ ;
+汢 > tsuchi\ ;
+汀 > migiwa\ ;
+氵 > sanzui\ ;
+橙 > daidai\ ;
+樵 > kikori\ ;
+樮 > hokuso\ ;
+楔 > kusabi\ ;
+楊 > yanagi\ ;
+椹 > sawara\ ;
+椪 > kunugi\ ;
+椡 > kunugi\ ;
+椛 > momiji\ ;
+椚 > kunugi\ ;
+梺 > fumoto\ ;
+桼 > shitsu\ ;
+桎 > shitsu\ ;
+栞 > shiori\ ;
+柒 > shitsu\ ;
+李 > sumomo\ ;
+暦 > koyomi\ ;
+晊 > shitsu\ ;
+昴 > subaru\ ;
+摔 > shutsu\ ;
+挃 > chitsu\ ;
+抶 > chitsu\ ;
+扖 > hameru\ ;
+憖 > namaji\ ;
+愱 > shitsu\ ;
+彠 > kuwaku\ ;
+彏 > kuwaku\ ;
+彍 > kuwaku\ ;
+彉 > kuwaku\ ;
+廓 > kuruwa\ ;
+庢 > chitsu\ ;
+幟 > nobori\ ;
+幉 > tazuna\ ;
+帙 > chitsu\ ;
+嵐 > arashi\ ;
+崒 > shutsu\ ;
+岀 > shutsu\ ;
+寡 > yamome\ ;
+嫟 > jiyuku\ ;
+妷 > chitsu\ ;
+墎 > kuwaku\ ;
+堲 > shitsu\ ;
+堛 > hiyoku\ ;
+圷 > akutsu\ ;
+咰 > shutsu\ ;
+后 > kisaki\ ;
+叺 > kamasu\ ;
+厠 > kawaya\ ;
+厔 > shitsu\ ;
+厀 > shitsu\ ;
+卛 > shutsu\ ;
+劕 > shitsu\ ;
+兜 > kabuto\ ;
+儨 > shitsu\ ;
+偪 > hiyoku\ ;
+倭 > yamato\ ;
+侄 > shitsu\ ;
+伡 > kuruma\ ;
+仝 > doujou\ ;
+仇 > kataki\ ;
+〒 > yuubin\ ;
+述 > jutsu\ ;
+必 > hitsu\ ;
+辻 > tsuji\ ;
+徹 > tetsu\ ;
+瞥 > betsu\ ;
+後 > nochi\ ;
+律 > ritsu\ ;
+着 > chaku\ ;
+式 > shiki\ ;
+皺 > shiwa\ ;
+躅 > choku\ ;
+百 > hyaku\ ;
+白 > shiro\ ;
+發 > hotsu\ ;
+発 > hatsu\ ;
+幸 > sachi\ ;
+年 > toshi\ ;
+癪 > shaku\ ;
+巴 > tomoe\ ;
+病 > yamai\ ;
+略 > ryaku\ ;
+畢 > hitsu\ ;
+畜 > chiku\ ;
+町 > machi\ ;
+男 > otoko\ ;
+由 > yoshi\ ;
+島 > shima\ ;
+質 > tachi\ ;
+岸 > kishi\ ;
+屈 > kutsu\ ;
+尻 > shiri\ ;
+尺 > shaku\ ;
+實 > jitsu\ ;
+察 > satsu\ ;
+密 > mitsu\ ;
+宴 > utage\ ;
+客 > kyaku\ ;
+率 > ritsu\ ;
+識 > shiki\ ;
+猾 > katsu\ ;
+説 > setsu\ ;
+詰 > kitsu\ ;
+爺 > jijii\ ;
+爵 > shaku\ ;
+設 > setsu\ ;
+爪 > tsume\ ;
+訣 > ketsu\ ;
+觸 > shoku\ ;
+燭 > shoku\ ;
+触 > shoku\ ;
+角 > tsuno\ ;
+妻 > tsuma\ ;
+熱 > netsu\ ;
+西 > nishi\ ;
+奴 > yatsu\ ;
+奪 > datsu\ ;
+夏 > natsu\ ;
+烈 > retsu\ ;
+裂 > retsu\ ;
+袷 > awase\ ;
+炎 > honoo\ ;
+境 > sakai\ ;
+灼 > shaku\ ;
+塵 > chiri\ ;
+塚 > tsuka\ ;
+街 > machi\ ;
+基 > motoi\ ;
+濶 > katsu\ ;
+埒 > rachi\ ;
+城 > shiro\ ;
+齢 > yowai\ ;
+蝕 > shoku\ ;
+潔 > ketsu\ ;
+鼾 > ibiki\ ;
+蜂 > hachi\ ;
+蜀 > shoku\ ;
+黐 > mochi\ ;
+滑 > katsu\ ;
+滅 > metsu\ ;
+蚕 > kaiko\ ;
+溌 > hatsu\ ;
+鹿 > shika\ ;
+虫 > mushi\ ;
+虞 > osore\ ;
+噂 > uwasa\ ;
+渇 > katsu\ ;
+淵 > fuchi\ ;
+鷲 > washi\ ;
+淑 > shuku\ ;
+嗇 > shoku\ ;
+鶴 > tsuru\ ;
+薔 > shoku\ ;
+喇 > ratsu\ ;
+啜 > setsu\ ;
+唾 > tsuba\ ;
+活 > katsu\ ;
+蔑 > betsu\ ;
+哲 > tetsu\ ;
+泉 > izumi\ ;
+蓄 > chiku\ ;
+油 > abura\ ;
+没 > botsu\ ;
+咄 > totsu\ ;
+決 > ketsu\ ;
+葦 > yoshi\ ;
+著 > chaku\ ;
+汁 > tsuyu\ ;
+鰌 > dojou\ ;
+吉 > kichi\ ;
+叭 > hatsu\ ;
+口 > kuchi\ ;
+叔 > shuku\ ;
+殺 > satsu\ ;
+殖 > shoku\ ;
+却 > kyaku\ ;
+単 > hitoe\ ;
+卒 > sotsu\ ;
+匹 > hitsu\ ;
+次 > tsugi\ ;
+勿 > mochi\ ;
+髮 > hatsu\ ;
+櫛 > kushi\ ;
+劣 > retsu\ ;
+芝 > shiba\ ;
+力 > ryoku\ ;
+艶 > tsuya\ ;
+橋 > hashi\ ;
+刹 > setsu\ ;
+刷 > satsu\ ;
+樫 > kashi\ ;
+別 > betsu\ ;
+初 > hatsu\ ;
+列 > retsu\ ;
+樒 > mitsu\ ;
+舌 > shita\ ;
+切 > setsu\ ;
+刃 > yaiba\ ;
+册 > satsu\ ;
+冊 > satsu\ ;
+腰 > koshi\ ;
+八 > yatsu\ ;
+兎 > usagi\ ;
+兀 > kotsu\ ;
+脱 > datsu\ ;
+植 > shoku\ ;
+脈 > myaku\ ;
+餅 > mochi\ ;
+飾 > shoku\ ;
+飯 > meshi\ ;
+食 > shoku\ ;
+梨 > nashi\ ;
+梢 > kozue\ ;
+梓 > azusa\ ;
+傑 > ketsu\ ;
+肅 > shuku\ ;
+職 > shoku\ ;
+額 > hitai\ ;
+借 > shaku\ ;
+頁 > peiji\ ;
+柄 > tsuka\ ;
+翁 > okina\ ;
+鞭 > muchi\ ;
+鞄 > kaban\ ;
+松 > matsu\ ;
+靴 > kutsu\ ;
+罰 > batsu\ ;
+罪 > tsumi\ ;
+束 > tsuka\ ;
+佛 > butsu\ ;
+杓 > shaku\ ;
+位 > kurai\ ;
+缺 > ketsu\ ;
+伸 > noshi\ ;
+露 > tsuyu\ ;
+霰 > arare\ ;
+末 > matsu\ ;
+霜 > shimo\ ;
+月 > tsuki\ ;
+曲 > kyoku\ ;
+雜 > zatsu\ ;
+仙 > sento\ ;
+雑 > zatsu\ ;
+雇 > yatoi\ ;
+乾 > hoshi\ ;
+乞 > kotsu\ ;
+主 > nushi\ ;
+縮 > shuku\ ;
+星 > hoshi\ ;
+縞 > shima\ ;
+下 > shita\ ;
+綱 > tsuna\ ;
+絶 > zetsu\ ;
+結 > ketsu\ ;
+終 > owari\ ;
+操 > misao\ ;
+撮 > satsu\ ;
+鐵 > tetsu\ ;
+鐡 > tetsu\ ;
+築 > chiku\ ;
+節 > bushi\ ;
+箸 > hashi\ ;
+接 > setsu\ ;
+掠 > ryaku\ ;
+掘 > kutsu\ ;
+箒 > houki\ ;
+捩 > retsu\ ;
+答 > kotae\ ;
+拶 > satsu\ ;
+拭 > shiki\ ;
+括 > katsu\ ;
+拙 > setsu\ ;
+拔 > batsu\ ;
+立 > ritsu\ ;
+竊 > setsu\ ;
+拂 > futsu\ ;
+抜 > batsu\ ;
+抉 > ketsu\ ;
+突 > totsu\ ;
+穴 > ketsu\ ;
+鉢 > hachi\ ;
+払 > futsu\ ;
+鉄 > tetsu\ ;
+截 > setsu\ ;
+戦 > ikusa\ ;
+釋 > shaku\ ;
+釈 > shaku\ ;
+祝 > shuku\ ;
+酌 > shaku\ ;
+慄 > ritsu\ ;
+惚 > kotsu\ ;
+達 > tachi\ ;
+道 > michi\ ;
+逹 > tatsu\ ;
+逐 > chiku\ ;
+逆 > gyaku\ ;
+忽 > kotsu\ ;
+龞 > betsu\ ;
+齧 > ketsu\ ;
+齕 > kotsu\ ;
+齃 > katsu\ ;
+鼿 > gotsu\ ;
+鼎 > kanae\ ;
+黻 > futsu\ ;
+黠 > katsu\ ;
+麹 > kouji\ ;
+鷫 > shuku\ ;
+鷩 > hetsu\ ;
+鶻 > kotsu\ ;
+鶡 > katsu\ ;
+鶍 > isuka\ ;
+鶉 > uzura\ ;
+鵓 > hotsu\ ;
+鴰 > katsu\ ;
+鴫 > shigi\ ;
+鴃 > ketsu\ ;
+鴂 > ketsu\ ;
+鲾 > hyaku\ ;
+鲬 > kochi\ ;
+鱗 > uroko\ ;
+鱐 > shuku\ ;
+鱉 > betsu\ ;
+鱁 > chiku\ ;
+鰻 > unagi\ ;
+鰒 > awabi\ ;
+鰏 > hyoku\ ;
+鰍 > inada\ ;
+鰉 > higai\ ;
+鰈 > karei\ ;
+鯲 > dojou\ ;
+鯒 > kochi\ ;
+鯏 > asari\ ;
+鮭 > shake\ ;
+鮨 > sushi\ ;
+鮚 > kitsu\ ;
+鮓 > sushi\ ;
+鮑 > awabi\ ;
+鮅 > hitsu\ ;
+鮄 > futsu\ ;
+魩 > hachi\ ;
+魃 > batsu\ ;
+鬻 > shuku\ ;
+鬠 > katsu\ ;
+鬎 > ratsu\ ;
+髺 > gatsu\ ;
+髴 > futsu\ ;
+驖 > tetsu\ ;
+驌 > shuku\ ;
+驋 > hatsu\ ;
+騄 > ryoku\ ;
+駜 > hitsu\ ;
+駃 > ketsu\ ;
+馹 > jitsu\ ;
+馝 > hitsu\ ;
+馛 > hatsu\ ;
+饆 > hitsu\ ;
+餮 > tetsu\ ;
+餟 > tetsu\ ;
+餝 > shoku\ ;
+餑 > hotsu\ ;
+飶 > hitsu\ ;
+飭 > choku\ ;
+颳 > katsu\ ;
+颰 > hatsu\ ;
+颯 > satsu\ ;
+顣 > shuku\ ;
+頡 > kitsu\ ;
+頊 > kyoku\ ;
+韤 > batsu\ ;
+韡 > sakan\ ;
+韠 > hitsu\ ;
+韍 > futsu\ ;
+韈 > betsu\ ;
+韃 > datsu\ ;
+鞸 > hitsu\ ;
+鞨 > katsu\ ;
+靺 > matsu\ ;
+靹 > ketsu\ ;
+靨 > ekubo\ ;
+隉 > getsu\ ;
+陟 > choku\ ;
+阢 > gotsu\ ;
+闥 > tatsu\ ;
+闕 > ketsu\ ;
+闑 > getsu\ ;
+闋 > ketsu\ ;
+闊 > katsu\ ;
+閦 > shuku\ ;
+閥 > batsu\ ;
+钃 > shoku\ ;
+鑠 > shaku\ ;
+鐽 > tatsu\ ;
+鐯 > shaku\ ;
+鐍 > tetsu\ ;
+鏺 > hatsu\ ;
+鏉 > shyuu\ ;
+鏅 > shyuu\ ;
+鎧 > yoroi\ ;
+鎋 > katsu\ ;
+鍥 > ketsu\ ;
+鍘 > satsu\ ;
+鍔 > tsuba\ ;
+錨 > ikari\ ;
+錘 > tsumu\ ;
+鋨 > tetsu\ ;
+鋝 > retsu\ ;
+鋍 > hotsu\ ;
+銽 > katsu\ ;
+銫 > shoku\ ;
+銕 > tetsu\ ;
+鉽 > shuku\ ;
+鉘 > futsu\ ;
+鈺 > gyoku\ ;
+鈸 > hatsu\ ;
+鈯 > totsu\ ;
+鈤 > jitsu\ ;
+鈅 > getsu\ ;
+釰 > jitsu\ ;
+釟 > hatsu\ ;
+醱 > hatsu\ ;
+醗 > hatsu\ ;
+醔 > shyuu\ ;
+醊 > tetsu\ ;
+醁 > ryoku\ ;
+酫 > setsu\ ;
+酦 > hatsu\ ;
+鄐 > chiku\ ;
+邲 > hitsu\ ;
+逼 > hitsu\ ;
+逯 > ryoku\ ;
+适 > katsu\ ;
+迾 > retsu\ ;
+迭 > tetsu\ ;
+达 > tatsu\ ;
+辶 > chaku\ ;
+辵 > chaku\ ;
+辰 > tatsu\ ;
+辥 > setsu\ ;
+辣 > ratsu\ ;
+辜 > tsumi\ ;
+轕 > katsu\ ;
+轄 > katsu\ ;
+輿 > koshi\ ;
+輵 > katsu\ ;
+輟 > tetsu\ ;
+輂 > kyoku\ ;
+軾 > shoku\ ;
+軷 > hatsu\ ;
+軏 > getsu\ ;
+軄 > shoku\ ;
+躵 > nerau\ ;
+躩 > kyaku\ ;
+躂 > tatsu\ ;
+蹶 > ketsu\ ;
+蹩 > hetsu\ ;
+蹜 > shuku\ ;
+蹙 > shuku\ ;
+蹕 > hitsu\ ;
+踧 > shuku\ ;
+踋 > kyaku\ ;
+跼 > kyoku\ ;
+跛 > bikko\ ;
+跌 > tetsu\ ;
+跋 > batsu\ ;
+跀 > getsu\ ;
+趹 > ketsu\ ;
+趷 > kotsu\ ;
+趞 > shaku\ ;
+趐 > ketsu\ ;
+赩 > kyoku\ ;
+贖 > shoku\ ;
+賡 > shoku\ ;
+貜 > kyaku\ ;
+豁 > katsu\ ;
+讞 > getsu\ ;
+譎 > kitsu\ ;
+謖 > shoku\ ;
+謔 > gyaku\ ;
+謐 > hitsu\ ;
+諔 > shuku\ ;
+誳 > kutsu\ ;
+說 > setsu\ ;
+誖 > hotsu\ ;
+詧 > satsu\ ;
+詘 > kutsu\ ;
+訥 > totsu\ ;
+訖 > kitsu\ ;
+訐 > ketsu\ ;
+觱 > hitsu\ ;
+觖 > ketsu\ ;
+覕 > betsu\ ;
+襭 > ketsu\ ;
+襪 > betsu\ ;
+襡 > shoku\ ;
+襒 > hetsu\ ;
+襏 > hatsu\ ;
+襍 > zatsu\ ;
+褻 > setsu\ ;
+褐 > katsu\ ;
+褄 > tsuma\ ;
+裰 > tatsu\ ;
+袺 > ketsu\ ;
+袜 > batsu\ ;
+袚 > hatsu\ ;
+衵 > jitsu\ ;
+衋 > kyoku\ ;
+衊 > betsu\ ;
+蠼 > kyaku\ ;
+蠞 > setsu\ ;
+蠛 > betsu\ ;
+蠘 > setsu\ ;
+蠋 > shoku\ ;
+蟙 > shoku\ ;
+蝲 > ratsu\ ;
+蝎 > katsu\ ;
+蜜 > mitsu\ ;
+蜇 > tetsu\ ;
+蛥 > setsu\ ;
+蛣 > kitsu\ ;
+蛞 > katsu\ ;
+蛚 > retsu\ ;
+虐 > gyaku\ ;
+蘖 > getsu\ ;
+藜 > akaza\ ;
+藚 > shoku\ ;
+薩 > satsu\ ;
+薥 > shoku\ ;
+薛 > setsu\ ;
+薘 > tatsu\ ;
+薊 > azami\ ;
+蕟 > hitsu\ ;
+蕝 > setsu\ ;
+蕀 > kyoku\ ;
+蔦 > tsuta\ ;
+蔤 > bitsu\ ;
+蔎 > setsu\ ;
+蓿 > shuku\ ;
+蓽 > hitsu\ ;
+蓇 > kotsu\ ;
+葧 > hotsu\ ;
+葜 > katsu\ ;
+葖 > totsu\ ;
+葎 > ritsu\ ;
+菽 > shuku\ ;
+菝 > hatsu\ ;
+菉 > ryoku\ ;
+莭 > setsu\ ;
+莂 > hetsu\ ;
+荸 > hotsu\ ;
+荗 > shoku\ ;
+茨 > ibara\ ;
+茢 > retsu\ ;
+茜 > akane\ ;
+茍 > kyoku\ ;
+茉 > matsu\ ;
+茇 > hatsu\ ;
+茁 > satsu\ ;
+茀 > hutsu\ ;
+苾 > hitsu\ ;
+苶 > detsu\ ;
+芴 > butsu\ ;
+芍 > shaku\ ;
+艴 > hotsu\ ;
+舳 > chiku\ ;
+舝 > katsu\ ;
+舄 > shaku\ ;
+舃 > shaku\ ;
+臸 > jitsu\ ;
+臲 > getsu\ ;
+臅 > shoku\ ;
+腷 > hyoku\ ;
+腯 > totsu\ ;
+脫 > datsu\ ;
+脖 > hotsu\ ;
+脉 > myaku\ ;
+胈 > hatsu\ ;
+肸 > kitsu\ ;
+肭 > dotsu\ ;
+肋 > abara\ ;
+聒 > katsu\ ;
+聀 > shoku\ ;
+耋 > tetsu\ ;
+耊 > tetsu\ ;
+羯 > katsu\ ;
+羍 > tatsu\ ;
+罸 > batsu\ ;
+缽 > hachi\ ;
+缼 > ketsu\ ;
+纈 > ketsu\ ;
+繳 > shaku\ ;
+繘 > kitsu\ ;
+縬 > shuku\ ;
+緤 > setsu\ ;
+綽 > shaku\ ;
+綠 > ryoku\ ;
+綍 > hutsu\ ;
+絰 > tetsu\ ;
+絜 > ketsu\ ;
+絗 > kotsu\ ;
+絕 > zetsu\ ;
+絏 > setsu\ ;
+紼 > hutsu\ ;
+紲 > setsu\ ;
+紱 > hutsu\ ;
+紮 > satsu\ ;
+紇 > kotsu\ ;
+糵 > getsu\ ;
+糏 > setsu\ ;
+糀 > kouji\ ;
+粛 > shuku\ ;
+粒 > tsubu\ ;
+籙 > ryoku\ ;
+篾 > betsu\ ;
+篳 > hitsu\ ;
+篩 > furui\ ;
+篥 > ritsu\ ;
+箻 > ritsu\ ;
+箚 > satsu\ ;
+筑 > chiku\ ;
+筏 > ikada\ ;
+筁 > kyoku\ ;
+笽 > souke\ ;
+笰 > hutsu\ ;
+笔 > hitsu\ ;
+笏 > kotsu\ ;
+竭 > ketsu\ ;
+窣 > sotsu\ ;
+窟 > kutsu\ ;
+窃 > setsu\ ;
+穡 > shoku\ ;
+稷 > shoku\ ;
+稭 > katsu\ ;
+稫 > hyoku\ ;
+稡 > sotsu\ ;
+稙 > choku\ ;
+秸 > katsu\ ;
+秫 > jotsu\ ;
+秣 > matsu\ ;
+秡 > hatsu\ ;
+禝 > shoku\ ;
+祓 > futsu\ ;
+磆 > katsu\ ;
+碿 > sotsu\ ;
+碣 > ketsu\ ;
+碟 > katsu\ ;
+碏 > shaku\ ;
+硈 > katsu\ ;
+矻 > kotsu\ ;
+矚 > shoku\ ;
+矗 > chiku\ ;
+瞮 > tetsu\ ;
+瞎 > katsu\ ;
+睰 > batsu\ ;
+眜 > batsu\ ;
+盋 > hatsu\ ;
+皭 > shaku\ ;
+皕 > hyoku\ ;
+皌 > batsu\ ;
+癶 > hatsu\ ;
+癤 > setsu\ ;
+癟 > hetsu\ ;
+瘧 > gyaku\ ;
+瘜 > shoku\ ;
+瘌 > ratsu\ ;
+瘄 > shaku\ ;
+瘃 > shoku\ ;
+痆 > datsu\ ;
+疙 > gitsu\ ;
+畷 > tetsu\ ;
+畧 > ryaku\ ;
+畟 > shoku\ ;
+甶 > futsu\ ;
+瓞 > tetsu\ ;
+瑮 > ritsu\ ;
+珿 > shuku\ ;
+珌 > hitsu\ ;
+玦 > ketsu\ ;
+玥 > getsu\ ;
+玐 > hatsu\ ;
+玃 > kyaku\ ;
+獦 > katsu\ ;
+獝 > kitsu\ ;
+獗 > ketsu\ ;
+猲 > katsu\ ;
+猝 > sotsu\ ;
+狘 > ketsu\ ;
+犮 > hatsu\ ;
+爝 > shaku\ ;
+爍 > shaku\ ;
+爇 > zetsu\ ;
+燵 > tatsu\ ;
+熚 > hitsu\ ;
+煞 > satsu\ ;
+焯 > shaku\ ;
+焫 > zetsu\ ;
+焔 > honoo\ ;
+焏 > kyoku\ ;
+烕 > ketsu\ ;
+瀒 > shoku\ ;
+濇 > shoku\ ;
+澈 > tetsu\ ;
+潚 > shuku\ ;
+潑 > hatsu\ ;
+潏 > ketsu\ ;
+滭 > hitsu\ ;
+滀 > chiku\ ;
+溭 > shoku\ ;
+溧 > ritsu\ ;
+溂 > ratsu\ ;
+湢 > hyoku\ ;
+湜 > shoku\ ;
+渴 > katsu\ ;
+渫 > setsu\ ;
+渤 > botsu\ ;
+渋 > shibu\ ;
+淈 > kotsu\ ;
+涅 > netsu\ ;
+浬 > kairi\ ;
+浡 > hotsu\ ;
+浙 > setsu\ ;
+洯 > ketsu\ ;
+洫 > kyoku\ ;
+洌 > retsu\ ;
+泬 > ketsu\ ;
+泐 > ryoku\ ;
+泌 > hitsu\ ;
+沸 > futsu\ ;
+沫 > matsu\ ;
+沕 > butsu\ ;
+沒 > botsu\ ;
+汔 > kitsu\ ;
+氟 > hutsu\ ;
+氒 > ketsu\ ;
+殛 > kyoku\ ;
+殁 > botsu\ ;
+歿 > botsu\ ;
+歾 > botsu\ ;
+歽 > setsu\ ;
+歹 > gatsu\ ;
+歠 > setsu\ ;
+歘 > kutsu\ ;
+歇 > ketsu\ ;
+欻 > kutsu\ ;
+欯 > kitsu\ ;
+欠 > ketsu\ ;
+欟 > tsuki\ ;
+櫱 > getsu\ ;
+櫁 > mitsu\ ;
+檫 > satsu\ ;
+檋 > kyoku\ ;
+橛 > ketsu\ ;
+樴 > shoku\ ;
+槭 > shuku\ ;
+榾 > kotsu\ ;
+榍 > setsu\ ;
+榀 > komai\ ;
+楾 > hazou\ ;
+楬 > ketsu\ ;
+椣 > shide\ ;
+椊 > sotsu\ ;
+椄 > setsu\ ;
+棁 > setsu\ ;
+梲 > setsu\ ;
+桲 > hotsu\ ;
+桰 > katsu\ ;
+桛 > kasei\ ;
+桔 > kitsu\ ;
+桀 > ketsu\ ;
+栻 > choku\ ;
+栰 > hatsu\ ;
+栨 > setsu\ ;
+栃 > tochi\ ;
+柷 > shuku\ ;
+柮 > totsu\ ;
+杰 > ketsu\ ;
+杤 > tochi\ ;
+杌 > gotsu\ ;
+杁 > eburi\ ;
+朸 > ryoku\ ;
+朳 > hatsu\ ;
+术 > jutsu\ ;
+朮 > jutsu\ ;
+朅 > ketsu\ ;
+曷 > katsu\ ;
+暼 > hetsu\ ;
+暱 > jitsu\ ;
+晢 > setsu\ ;
+昵 > jitsu\ ;
+昳 > tetsu\ ;
+昩 > batsu\ ;
+昢 > hotsu\ ;
+昒 > kotsu\ ;
+旭 > asahi\ ;
+斫 > shaku\ ;
+斣 > shuku\ ;
+敪 > tatsu\ ;
+敠 > tatsu\ ;
+敕 > choku\ ;
+攝 > setsu\ ;
+擽 > ryaku\ ;
+擷 > ketsu\ ;
+擦 > satsu\ ;
+撻 > tachi\ ;
+撥 > bachi\ ;
+撤 > tetsu\ ;
+撇 > hetsu\ ;
+撅 > ketsu\ ;
+摋 > satsu\ ;
+摂 > setsu\ ;
+搰 > kotsu\ ;
+搩 > ketsu\ ;
+搐 > chiku\ ;
+揳 > setsu\ ;
+揲 > setsu\ ;
+揬 > totsu\ ;
+揠 > satsu\ ;
+揑 > getsu\ ;
+掟 > okite\ ;
+掇 > tatsu\ ;
+捽 > sotsu\ ;
+捺 > natsu\ ;
+捸 > totsu\ ;
+捝 > tatsu\ ;
+捏 > detsu\ ;
+捋 > ratsu\ ;
+挶 > kyoku\ ;
+挩 > tatsu\ ;
+挈 > ketsu\ ;
+拮 > kitsu\ ;
+拉 > ratsu\ ;
+抹 > matsu\ ;
+抐 > dotsu\ ;
+抈 > getsu\ ;
+扤 > gotsu\ ;
+扎 > satsu\ ;
+戠 > shoku\ ;
+戞 > katsu\ ;
+戜 > tetsu\ ;
+戛 > katsu\ ;
+戄 > kyaku\ ;
+懤 > chyuu\ ;
+懎 > shoku\ ;
+憠 > ketsu\ ;
+憟 > shoku\ ;
+憋 > hetsu\ ;
+愎 > hyoku\ ;
+愊 > hyoku\ ;
+愂 > botsu\ ;
+惙 > tetsu\ ;
+悊 > tetsu\ ;
+恤 > jutsu\ ;
+怵 > jutsu\ ;
+怭 > hitsu\ ;
+怫 > futsu\ ;
+怛 > datsu\ ;
+忔 > kitsu\ ;
+徏 > choku\ ;
+彿 > futsu\ ;
+彴 > shaku\ ;
+彃 > hitsu\ ;
+彂 > hotsu\ ;
+弼 > hitsu\ ;
+弻 > hitsu\ ;
+弦 > tsuru\ ;
+弡 > kutsu\ ;
+廐 > umaya\ ;
+庂 > shoku\ ;
+幯 > setsu\ ;
+幭 > betsu\ ;
+帴 > satsu\ ;
+帥 > sotsu\ ;
+帚 > houki\ ;
+帕 > batsu\ ;
+巿 > hutsu\ ;
+巀 > satsu\ ;
+嶱 > katsu\ ;
+嶭 > gatsu\ ;
+嶍 > shihu\ ;
+嵽 > tetsu\ ;
+嵲 > getsu\ ;
+嵥 > ketsu\ ;
+嵑 > ketsu\ ;
+嵂 > ritsu\ ;
+崱 > shoku\ ;
+崫 > kutsu\ ;
+崛 > kutsu\ ;
+峠 > touge\ ;
+峚 > bitsu\ ;
+峌 > tetsu\ ;
+岪 > hutsu\ ;
+岤 > ketsu\ ;
+岏 > guwan\ ;
+岊 > setsu\ ;
+岉 > butsu\ ;
+屼 > gotsu\ ;
+屹 > kitsu\ ;
+屵 > gatsu\ ;
+屴 > ryoku\ ;
+屫 > kyaku\ ;
+屩 > kyaku\ ;
+尳 > kotsu\ ;
+尗 > shuku\ ;
+尐 > setsu\ ;
+寣 > kotsu\ ;
+寔 > shoku\ ;
+宻 > mitsu\ ;
+宓 > bitsu\ ;
+宊 > totsu\ ;
+孽 > getsu\ ;
+孼 > getsu\ ;
+孰 > izure\ ;
+孛 > botsu\ ;
+孒 > ketsu\ ;
+孑 > ketsu\ ;
+孎 > shoku\ ;
+嬇 > kuwai\ ;
+嬂 > shoku\ ;
+嫳 > hetsu\ ;
+嫡 > chaku\ ;
+媟 > setsu\ ;
+婼 > shaku\ ;
+婌 > shuku\ ;
+娎 > ketsu\ ;
+姴 > retsu\ ;
+姡 > katsu\ ;
+姞 > kitsu\ ;
+妺 > batsu\ ;
+妲 > datsu\ ;
+妰 > chaku\ ;
+妭 > hatsu\ ;
+妁 > shaku\ ;
+奯 > katsu\ ;
+契 > setsu\ ;
+夷 > ebisu\ ;
+夬 > ketsu\ ;
+夨 > shoku\ ;
+夙 > shuku\ ;
+壷 > tsubo\ ;
+墢 > hatsu\ ;
+墌 > shaku\ ;
+墆 > tetsu\ ;
+塛 > ritsu\ ;
+堨 > getsu\ ;
+埴 > shoku\ ;
+埱 > shyuu\ ;
+埓 > rachi\ ;
+垤 > tetsu\ ;
+垡 > hatsu\ ;
+垔 > shyou\ ;
+垏 > rotsu\ ;
+垃 > ratsu\ ;
+坺 > hatsu\ ;
+坹 > ketsu\ ;
+坲 > hutsu\ ;
+坪 > tsubo\ ;
+圿 > katsu\ ;
+圽 > botsu\ ;
+圴 > shaku\ ;
+圪 > gitsu\ ;
+圣 > kutsu\ ;
+囮 > otori\ ;
+囫 > kotsu\ ;
+囓 > ketsu\ ;
+囑 > shoku\ ;
+囐 > satsu\ ;
+囋 > satsu\ ;
+嚽 > setsu\ ;
+嚼 > shaku\ ;
+嚞 > tetsu\ ;
+噶 > katsu\ ;
+噲 > kuwai\ ;
+噱 > kyaku\ ;
+噠 > tatsu\ ;
+噘 > ketsu\ ;
+噈 > shuku\ ;
+噄 > kitsu\ ;
+嘱 > shoku\ ;
+嘠 > katsu\ ;
+嘎 > katsu\ ;
+嗶 > hitsu\ ;
+嗧 > garon\ ;
+嗢 > ratsu\ ;
+嗖 > shuhu\ ;
+嗕 > shoku\ ;
+嗐 > katsu\ ;
+喫 > kitsu\ ;
+喝 > katsu\ ;
+喌 > shuku\ ;
+喆 > tetsu\ ;
+啠 > tetsu\ ;
+啒 > kotsu\ ;
+唿 > kotsu\ ;
+唰 > setsu\ ;
+哾 > yatsu\ ;
+哷 > retsu\ ;
+哳 > tatsu\ ;
+哱 > hotsu\ ;
+哫 > shoku\ ;
+哘 > sasou\ ;
+哋 > tetsu\ ;
+咱 > satsu\ ;
+咭 > kitsu\ ;
+咧 > retsu\ ;
+咈 > hutsu\ ;
+咇 > hetsu\ ;
+呾 > tatsu\ ;
+呐 > totsu\ ;
+吷 > ketsu\ ;
+吶 > totsu\ ;
+吡 > hitsu\ ;
+吋 > inchi\ ;
+吃 > kitsu\ ;
+叕 > tetsu\ ;
+叐 > hatsu\ ;
+厩 > umaya\ ;
+厥 > ketsu\ ;
+卼 > gotsu\ ;
+卻 > kyaku\ ;
+卹 > jutsu\ ;
+卩 > setsu\ ;
+卨 > setsu\ ;
+卍 > manji\ ;
+卆 > sotsu\ ;
+匱 > hitsu\ ;
+匫 > kotsu\ ;
+匤 > kyaku\ ;
+匢 > kotsu\ ;
+匃 > katsu\ ;
+匁 > monme\ ;
+勺 > shaku\ ;
+勶 > ketsu\ ;
+勪 > kyaku\ ;
+勖 > kyaku\ ;
+勃 > botsu\ ;
+劽 > retsu\ ;
+劼 > katsu\ ;
+劚 > chaku\ ;
+劄 > satsu\ ;
+劂 > ketsu\ ;
+劀 > katsu\ ;
+剟 > tetsu\ ;
+剎 > satsu\ ;
+剌 > ratsu\ ;
+刮 > katsu\ ;
+别 > betsu\ ;
+刜 > hutsu\ ;
+刖 > getsu\ ;
+刔 > ketsu\ ;
+凓 > ritsu\ ;
+冽 > retsu\ ;
+冹 > hutsu\ ;
+决 > ketsu\ ;
+儲 > mouke\ ;
+僪 > kitsu\ ;
+僦 > shyuu\ ;
+僁 > setsu\ ;
+傠 > hatsu\ ;
+傈 > ritsu\ ;
+傄 > katsu\ ;
+偰 > setsu\ ;
+偟 > kuwau\ ;
+偈 > ketsu\ ;
+倔 > kutsu\ ;
+倐 > shuku\ ;
+倏 > shuku\ ;
+倌 > kuwan\ ;
+俶 > shuku\ ;
+侼 > hotsu\ ;
+侻 > tatsu\ ;
+侷 > kyoku\ ;
+侙 > choku\ ;
+侓 > rotsu\ ;
+侐 > kyoku\ ;
+佸 > katsu\ ;
+佶 > kitsu\ ;
+佪 > kuwai\ ;
+佚 > tetsu\ ;
+佖 > hitsu\ ;
+伵 > kyoku\ ;
+伳 > setsu\ ;
+伜 > sotsu\ ;
+伐 > batsu\ ;
+仴 > gatsu\ ;
+仡 > kitsu\ ;
+仈 > hatsu\ ;
+亟 > kyoku\ ;
+亍 > choku\ ;
+亅 > ketsu\ ;
+乴 > setsu\ ;
+乄 > shime\ ;
+乀 > futsu\ ;
+丿 > hetsu\ ;
+串 > kushi\ ;
+〆 > shime\ ;
+石 > koku\ ;
+迫 > haku\ ;
+迄 > made\ ;
+心 > shin\ ;
+込 > komu\ ;
+徴 > chou\ ;
+徳 > toku\ ;
+辱 > joku\ ;
+瞭 > ryou\ ;
+瞬 > shun\ ;
+復 > fuku\ ;
+辛 > shin\ ;
+得 > toku\ ;
+彼 > kare\ ;
+役 > yaku\ ;
+影 > kage\ ;
+彫 > chou\ ;
+睦 > boku\ ;
+督 > toku\ ;
+弾 > tama\ ;
+眺 > chou\ ;
+強 > kyou\ ;
+張 > chou\ ;
+輯 > shuu\ ;
+眞 > shin\ ;
+弔 > chou\ ;
+眉 > mayu\ ;
+較 > kaku\ ;
+直 > hita\ ;
+軒 > noki\ ;
+益 > yaku\ ;
+廂 > shou\ ;
+皿 > sara\ ;
+庵 > iori\ ;
+皮 > kawa\ ;
+庭 > niwa\ ;
+店 > mise\ ;
+底 > soko\ ;
+躑 > teki\ ;
+躍 > yaku\ ;
+躊 > chuu\ ;
+床 > yuka\ ;
+的 > mato\ ;
+庁 > chou\ ;
+幹 > miki\ ;
+蹴 > shuu\ ;
+平 > hira\ ;
+蹠 > seki\ ;
+蹟 > seki\ ;
+癖 > kuse\ ;
+幅 > haba\ ;
+療 > ryou\ ;
+常 > towa\ ;
+席 > seki\ ;
+希 > mare\ ;
+布 > nuno\ ;
+巻 > maki\ ;
+跳 > chou\ ;
+川 > kawa\ ;
+症 > shou\ ;
+足 > ashi\ ;
+越 > etsu\ ;
+超 > chou\ ;
+赫 > kaku\ ;
+畫 > kaku\ ;
+赤 > seki\ ;
+留 > ryuu\ ;
+画 > kaku\ ;
+申 > saru\ ;
+生 > nama\ ;
+甚 > shin\ ;
+崖 > gake\ ;
+崎 > saki\ ;
+峰 > mine\ ;
+賑 > shin\ ;
+賊 > zoku\ ;
+賃 > chin\ ;
+責 > seki\ ;
+山 > yama\ ;
+屬 > zoku\ ;
+属 > zoku\ ;
+屑 > kuzu\ ;
+豆 > mame\ ;
+琴 > koto\ ;
+就 > shuu\ ;
+少 > shou\ ;
+小 > shou\ ;
+将 > shou\ ;
+球 > tama\ ;
+対 > tsui\ ;
+寺 > tera\ ;
+寵 > chou\ ;
+審 > shin\ ;
+寥 > ryou\ ;
+寢 > shin\ ;
+珍 > chin\ ;
+富 > tomi\ ;
+寂 > sabi\ ;
+宿 > yado\ ;
+宮 > miya\ ;
+室 > muro\ ;
+宗 > shuu\ ;
+玖 > kyuu\ ;
+玉 > dama\ ;
+安 > yasu\ ;
+守 > mori\ ;
+宅 > taku\ ;
+讀 > toku\ ;
+學 > gaku\ ;
+獲 > kaku\ ;
+譯 > yaku\ ;
+孫 > mago\ ;
+獨 > doku\ ;
+学 > gaku\ ;
+證 > shou\ ;
+獄 > goku\ ;
+猿 > saru\ ;
+猫 > neko\ ;
+謡 > utai\ ;
+謎 > nazo\ ;
+嬌 > kyou\ ;
+謁 > etsu\ ;
+狹 > kyou\ ;
+狭 > kyou\ ;
+狂 > kyou\ ;
+嫁 > yome\ ;
+調 > chou\ ;
+誰 > dare\ ;
+読 > toku\ ;
+誂 > chou\ ;
+婿 > muko\ ;
+特 > toku\ ;
+詳 > shou\ ;
+物 > mono\ ;
+牧 > boku\ ;
+牛 > ushi\ ;
+評 > hyou\ ;
+牒 > chou\ ;
+婆 > baba\ ;
+診 > shin\ ;
+訳 > wake\ ;
+訟 > shou\ ;
+娠 > shin\ ;
+託 > taku\ ;
+爆 > baku\ ;
+姫 > hime\ ;
+燒 > shou\ ;
+覺 > kaku\ ;
+覚 > kaku\ ;
+妙 > myou\ ;
+熊 > kuma\ ;
+覆 > fuku\ ;
+襲 > shuu\ ;
+照 > shou\ ;
+煤 > susu\ ;
+襁 > kyou\ ;
+焼 > yaki\ ;
+夫 > otto\ ;
+焦 > shou\ ;
+夢 > yume\ ;
+夜 > yoru\ ;
+外 > hoka\ ;
+複 > fuku\ ;
+裾 > suso\ ;
+壱 > ichi\ ;
+壓 > atsu\ ;
+壁 > kabe\ ;
+為 > tame\ ;
+炭 > sumi\ ;
+墨 > sumi\ ;
+袖 > sode\ ;
+墓 > haka\ ;
+衷 > chuu\ ;
+表 > hyou\ ;
+塩 > shio\ ;
+衝 > shou\ ;
+塞 > soku\ ;
+術 > sube\ ;
+行 > gyou\ ;
+衆 > shuu\ ;
+蠢 > shun\ ;
+瀝 > reki\ ;
+堀 > hori\ ;
+濯 > taku\ ;
+濁 > daku\ ;
+激 > geki\ ;
+澤 > taku\ ;
+垣 > kaki\ ;
+型 > kata\ ;
+澄 > chou\ ;
+潮 > shio\ ;
+蝠 > fuku\ ;
+蝉 > semi\ ;
+坂 > saka\ ;
+漿 > shou\ ;
+鼻 > hana\ ;
+漲 > chou\ ;
+圧 > atsu\ ;
+漠 > baku\ ;
+園 > sono\ ;
+國 > koku\ ;
+蜃 > shin\ ;
+漂 > hyou\ ;
+漁 > ryou\ ;
+国 > kuni\ ;
+黴 > kabi\ ;
+黙 > moku\ ;
+默 > moku\ ;
+黒 > kuro\ ;
+黍 > kibi\ ;
+蛇 > hebi\ ;
+囁 > shou\ ;
+溺 > deki\ ;
+麦 > mugi\ ;
+麥 > baku\ ;
+蚤 > nomi\ ;
+溢 > itsu\ ;
+溝 > mizo\ ;
+溜 > ryuu\ ;
+虎 > tora\ ;
+測 > soku\ ;
+嘗 > shou\ ;
+渉 > shou\ ;
+鷹 > taka\ ;
+深 > shin\ ;
+藥 > yaku\ ;
+藤 > fuji\ ;
+嗅 > kyuu\ ;
+藁 > wara\ ;
+涼 > ryou\ ;
+涜 > toku\ ;
+喋 > chou\ ;
+喉 > nodo\ ;
+消 > shou\ ;
+浸 > shin\ ;
+浴 > yoku\ ;
+浜 > hama\ ;
+浚 > shun\ ;
+蕎 > kyou\ ;
+商 > shou\ ;
+流 > ryuu\ ;
+洲 > shuu\ ;
+唱 > shou\ ;
+唯 > tada\ ;
+蔭 > kage\ ;
+津 > shin\ ;
+洞 > hora\ ;
+洛 > raku\ ;
+唖 > oshi\ ;
+蓮 > hasu\ ;
+哭 > koku\ ;
+鳩 > hato\ ;
+注 > chuu\ ;
+鳥 > tori\ ;
+泥 > doro\ ;
+泣 > kyuu\ ;
+波 > nami\ ;
+蓋 > futa\ ;
+泊 > haku\ ;
+況 > kyou\ ;
+咽 > nodo\ ;
+沼 > numa\ ;
+蒻 > jaku\ ;
+河 > kawa\ ;
+蒲 > gama\ ;
+咳 > seki\ ;
+咲 > shou\ ;
+沢 > sawa\ ;
+咎 > kyuu\ ;
+沈 > chin\ ;
+汲 > kyuu\ ;
+周 > shuu\ ;
+鱈 > tara\ ;
+告 > koku\ ;
+求 > kyuu\ ;
+落 > ochi\ ;
+吸 > kyuu\ ;
+水 > mizu\ ;
+民 > tami\ ;
+吊 > chou\ ;
+各 > kaku\ ;
+右 > migi\ ;
+華 > hana\ ;
+毬 > kyuu\ ;
+召 > shou\ ;
+叫 > kyou\ ;
+只 > tada\ ;
+古 > furu\ ;
+取 > tori\ ;
+毒 > doku\ ;
+収 > shuu\ ;
+母 > haha\ ;
+双 > futa\ ;
+菊 > kiku\ ;
+友 > tomo\ ;
+及 > kyuu\ ;
+又 > mata\ ;
+殿 > dono\ ;
+殻 > kara\ ;
+莢 > saya\ ;
+原 > hara\ ;
+厄 > yaku\ ;
+歴 > reki\ ;
+即 > soku\ ;
+博 > baku\ ;
+協 > kyou\ ;
+卓 > taku\ ;
+草 > kusa\ ;
+升 > masu\ ;
+鬱 > utsu\ ;
+欲 > yoku\ ;
+欝 > utsu\ ;
+鬚 > hige\ ;
+匙 > saji\ ;
+北 > hoku\ ;
+茎 > kuki\ ;
+茅 > kaya\ ;
+匂 > niou\ ;
+髷 > mage\ ;
+髭 > hige\ ;
+髪 > kami\ ;
+若 > jaku\ ;
+勝 > shou\ ;
+高 > taka\ ;
+苔 > koke\ ;
+花 > hana\ ;
+骨 > hone\ ;
+助 > suke\ ;
+劇 > geki\ ;
+劃 > kaku\ ;
+剽 > hyou\ ;
+割 > wari\ ;
+良 > ryou\ ;
+剥 > haku\ ;
+機 > hata\ ;
+驚 > kyou\ ;
+削 > saku\ ;
+則 > soku\ ;
+刻 > koku\ ;
+船 > fune\ ;
+刺 > toge\ ;
+舶 > haku\ ;
+横 > yoko\ ;
+舟 > fune\ ;
+標 > hyou\ ;
+舎 > seki\ ;
+舊 > kyuu\ ;
+刈 > kari\ ;
+樅 > momi\ ;
+樂 > gaku\ ;
+臭 > shuu\ ;
+臣 > shin\ ;
+駒 > koma\ ;
+駐 > chuu\ ;
+臍 > heso\ ;
+槌 > tsui\ ;
+凌 > ryou\ ;
+槇 > maki\ ;
+馴 > shun\ ;
+冬 > fuyu\ ;
+膝 > hiza\ ;
+膜 > maku\ ;
+榛 > shin\ ;
+香 > kyou\ ;
+首 > kubi\ ;
+円 > maru\ ;
+内 > uchi\ ;
+楽 > raku\ ;
+腹 > hara\ ;
+極 > goku\ ;
+共 > domo\ ;
+業 > waza\ ;
+六 > roku\ ;
+兩 > ryou\ ;
+入 > nyuu\ ;
+元 > moto\ ;
+脣 > shin\ ;
+償 > shou\ ;
+脚 > ashi\ ;
+儘 > mama\ ;
+椎 > tsui\ ;
+脊 > seki\ ;
+脇 > waki\ ;
+脅 > kyou\ ;
+脂 > yani\ ;
+能 > yoku\ ;
+胸 > mune\ ;
+森 > mori\ ;
+棚 > tana\ ;
+僚 > ryou\ ;
+僕 > boku\ ;
+僑 > kyou\ ;
+傷 > shou\ ;
+肩 > kata\ ;
+肝 > kimo\ ;
+肘 > hiji\ ;
+傘 > kasa\ ;
+肖 > shou\ ;
+肌 > hada\ ;
+傍 > waki\ ;
+肉 > niku\ ;
+梃 > teko\ ;
+聽 > chou\ ;
+偽 > nise\ ;
+聴 > chou\ ;
+聳 > shou\ ;
+側 > hata\ ;
+聚 > shuu\ ;
+桐 > kiri\ ;
+聊 > ryou\ ;
+桃 > momo\ ;
+桁 > keta\ ;
+格 > kaku\ ;
+頸 > kubi\ ;
+耳 > mimi\ ;
+頬 > hoho\ ;
+領 > ryou\ ;
+栗 > kuri\ ;
+者 > mono\ ;
+頃 > goro\ ;
+柿 > kaki\ ;
+柵 > saku\ ;
+修 > shuu\ ;
+柚 > yuzu\ ;
+俗 > zoku\ ;
+柔 > nyuu\ ;
+習 > shuu\ ;
+翌 > yoku\ ;
+促 > soku\ ;
+侵 > shin\ ;
+価 > atai\ ;
+羞 > shuu\ ;
+供 > tomo\ ;
+鞘 > saya\ ;
+革 > kawa\ ;
+作 > saku\ ;
+杖 > tsue\ ;
+村 > mura\ ;
+杏 > anzu\ ;
+杉 > sugi\ ;
+伽 > togi\ ;
+朴 > boku\ ;
+伴 > tomo\ ;
+伯 > haku\ ;
+札 > fuda\ ;
+本 > moto\ ;
+霧 > kiri\ ;
+休 > kyuu\ ;
+伏 > fuku\ ;
+服 > fuku\ ;
+震 > shin\ ;
+雲 > kumo\ ;
+仲 > naka\ ;
+仰 > gyou\ ;
+仮 > kari\ ;
+雪 > yuki\ ;
+曝 > baku\ ;
+他 > hoka\ ;
+雌 > mesu\ ;
+集 > shuu\ ;
+仄 > soku\ ;
+人 > hito\ ;
+享 > kyou\ ;
+亦 > mata\ ;
+暢 > chou\ ;
+障 > shou\ ;
+隙 > suki\ ;
+隔 > kaku\ ;
+續 > zoku\ ;
+事 > koto\ ;
+隆 > ryuu\ ;
+暇 > hima\ ;
+隅 > sumi\ ;
+了 > ryou\ ;
+陸 > roku\ ;
+晶 > shou\ ;
+陰 > kage\ ;
+晝 > chuu\ ;
+之 > kore\ ;
+久 > kyuu\ ;
+時 > toki\ ;
+昼 > hiru\ ;
+丸 > maru\ ;
+昭 > shou\ ;
+中 > naka\ ;
+昨 > saku\ ;
+縦 > tate\ ;
+春 > haru\ ;
+両 > ryou\ ;
+縛 > baku\ ;
+縋 > tsui\ ;
+丈 > dake\ ;
+昇 > shou\ ;
+縄 > nawa\ ;
+一 > ichi\ ;
+旨 > mune\ ;
+旗 > hata\ ;
+族 > zoku\ ;
+闇 > yami\ ;
+旅 > tabi\ ;
+綿 > wata\ ;
+閾 > yoku\ ;
+綾 > ryou\ ;
+閲 > etsu\ ;
+新 > shin\ ;
+閣 > kaku\ ;
+斥 > seki\ ;
+関 > seki\ ;
+続 > zoku\ ;
+料 > ryou\ ;
+閑 > hima\ ;
+斑 > mura\ ;
+斎 > toki\ ;
+絹 > kinu\ ;
+敵 > teki\ ;
+給 > kyuu\ ;
+絡 > raku\ ;
+教 > kyou\ ;
+救 > kyuu\ ;
+組 > kumi\ ;
+紹 > shou\ ;
+收 > shuu\ ;
+紳 > shin\ ;
+攫 > kaku\ ;
+索 > saku\ ;
+級 > kyuu\ ;
+紙 > kami\ ;
+紐 > himo\ ;
+紅 > beni\ ;
+約 > yaku\ ;
+擱 > kaku\ ;
+糧 > ryou\ ;
+撲 > boku\ ;
+粧 > shou\ ;
+粥 > kayu\ ;
+粉 > kona\ ;
+撃 > geki\ ;
+摺 > shou\ ;
+米 > kome\ ;
+籠 > kago\ ;
+籍 > seki\ ;
+鐘 > kane\ ;
+鐐 > ryou\ ;
+揺 > yuri\ ;
+篭 > kago\ ;
+篤 > toku\ ;
+描 > byou\ ;
+掴 > kaku\ ;
+箱 > hako\ ;
+管 > kuda\ ;
+鍵 > kagi\ ;
+鍮 > chuu\ ;
+策 > saku\ ;
+鍋 > nabe\ ;
+筋 > suji\ ;
+等 > nado\ ;
+筈 > hazu\ ;
+筆 > fude\ ;
+挾 > kyou\ ;
+笹 > sasa\ ;
+録 > roku\ ;
+錯 > saku\ ;
+振 > shin\ ;
+笠 > kasa\ ;
+笑 > shou\ ;
+錐 > kiri\ ;
+指 > yubi\ ;
+竹 > take\ ;
+競 > kyou\ ;
+端 > hana\ ;
+章 > shou\ ;
+招 > shou\ ;
+拍 > haku\ ;
+抽 > chuu\ ;
+窮 > kyuu\ ;
+窓 > mado\ ;
+銑 > zuku\ ;
+技 > waza\ ;
+承 > shou\ ;
+空 > sora\ ;
+究 > kyuu\ ;
+積 > seki\ ;
+扇 > ougi\ ;
+房 > fusa\ ;
+鈴 > suzu\ ;
+稱 > shou\ ;
+種 > tane\ ;
+戟 > geki\ ;
+戚 > seki\ ;
+我 > ware\ ;
+稍 > yaya\ ;
+程 > hodo\ ;
+稀 > mare\ ;
+称 > shou\ ;
+釣 > chou\ ;
+針 > hari\ ;
+釜 > kama\ ;
+釘 > kugi\ ;
+秒 > byou\ ;
+秀 > shuu\ ;
+禿 > hage\ ;
+憩 > ikoi\ ;
+醤 > shou\ ;
+醜 > shuu\ ;
+憔 > shou\ ;
+憑 > hyou\ ;
+福 > fuku\ ;
+禄 > roku\ ;
+慾 > yoku\ ;
+酷 > koku\ ;
+酬 > shuu\ ;
+神 > kami\ ;
+酒 > sake\ ;
+態 > zama\ ;
+愕 > gaku\ ;
+郷 > kyou\ ;
+郭 > kaku\ ;
+惜 > seki\ ;
+惑 > waku\ ;
+悪 > waru\ ;
+碧 > heki\ ;
+碌 > roku\ ;
+悄 > shou\ ;
+恭 > kyou\ ;
+適 > teki\ ;
+恥 > haji\ ;
+硝 > shou\ ;
+恐 > kyou\ ;
+逸 > itsu\ ;
+進 > shin\ ;
+週 > shuu\ ;
+怯 > kyou\ ;
+急 > kyuu\ ;
+速 > soku\ ;
+通 > tsuu\ ;
+怎 > shin\ ;
+砂 > suna\ ;
+追 > tsui\ ;
+龥 > yaku\ ;
+龣 > kaku\ ;
+龠 > yaku\ ;
+龝 > shuu\ ;
+龔 > kyou\ ;
+龏 > kyou\ ;
+龍 > ryuu\ ;
+齺 > shuu\ ;
+齱 > seku\ ;
+齰 > saku\ ;
+齪 > soku\ ;
+齨 > kyuu\ ;
+齣 > koma\ ;
+齠 > chou\ ;
+齚 > saku\ ;
+齔 > shin\ ;
+齓 > shin\ ;
+齅 > kyuu\ ;
+鼼 > gyou\ ;
+鼫 > seki\ ;
+鼦 > chou\ ;
+鼚 > chou\ ;
+鼏 > beki\ ;
+鼂 > chou\ ;
+黷 > toku\ ;
+黰 > shin\ ;
+黑 > koku\ ;
+麿 > maro\ ;
+麴 > kiku\ ;
+麯 > kiku\ ;
+麨 > shou\ ;
+麞 > shou\ ;
+麘 > kyou\ ;
+麎 > shin\ ;
+鹶 > kyou\ ;
+鹢 > geki\ ;
+鹡 > seki\ ;
+鸴 > kaku\ ;
+鸙 > yaku\ ;
+鸖 > kaku\ ;
+鸑 > gaku\ ;
+鸐 > teki\ ;
+鸊 > heki\ ;
+鷽 > kaku\ ;
+鷸 > itsu\ ;
+鷯 > ryou\ ;
+鷮 > kyou\ ;
+鷦 > shou\ ;
+鷟 > saku\ ;
+鷚 > ryuu\ ;
+鷊 > geki\ ;
+鷁 > geki\ ;
+鶺 > seki\ ;
+鶹 > ryuu\ ;
+鶸 > jaku\ ;
+鶮 > koku\ ;
+鶪 > keki\ ;
+鶩 > boku\ ;
+鶚 > gaku\ ;
+鶖 > shuu\ ;
+鶓 > byou\ ;
+鶒 > seki\ ;
+鶃 > geki\ ;
+鵲 > jaku\ ;
+鵰 > chou\ ;
+鵩 > fuku\ ;
+鵢 > shin\ ;
+鵠 > koku\ ;
+鵟 > kyou\ ;
+鵙 > mozu\ ;
+鵔 > shun\ ;
+鵇 > toki\ ;
+鵅 > raku\ ;
+鵃 > chuu\ ;
+鵂 > kyuu\ ;
+鴪 > itsu\ ;
+鴨 > kamo\ ;
+鴗 > ryuu\ ;
+鴇 > toki\ ;
+鴆 > chin\ ;
+鳦 > itsu\ ;
+鲌 > haku\ ;
+鱷 > gaku\ ;
+鱶 > fuka\ ;
+鱵 > shin\ ;
+鱲 > ryou\ ;
+鱨 > shou\ ;
+鱧 > hamo\ ;
+鱜 > kyou\ ;
+鱚 > kisu\ ;
+鱘 > shin\ ;
+鱒 > masu\ ;
+鱏 > shin\ ;
+鱎 > kyou\ ;
+鱊 > itsu\ ;
+鱆 > shou\ ;
+鱅 > shou\ ;
+鱃 > shuu\ ;
+鱂 > shou\ ;
+鰾 > hyou\ ;
+鰽 > shuu\ ;
+鰷 > chou\ ;
+鰭 > hire\ ;
+鰨 > chou\ ;
+鰤 > buri\ ;
+鰡 > ryuu\ ;
+鰙 > haya\ ;
+鰐 > wani\ ;
+鰂 > soku\ ;
+鯽 > seki\ ;
+鯪 > ryou\ ;
+鯧 > shou\ ;
+鯥 > riku\ ;
+鯗 > shou\ ;
+鯖 > saba\ ;
+鯔 > bora\ ;
+鯎 > ugui\ ;
+鯊 > haze\ ;
+鮿 > chou\ ;
+鮼 > shin\ ;
+鮹 > tako\ ;
+鮴 > gori\ ;
+鮲 > mate\ ;
+鮱 > bora\ ;
+鮫 > same\ ;
+鮠 > haya\ ;
+鮝 > shou\ ;
+鮒 > funa\ ;
+鮊 > haku\ ;
+鮉 > chou\ ;
+魹 > todo\ ;
+魫 > shin\ ;
+魡 > teki\ ;
+魗 > shuu\ ;
+魎 > ryou\ ;
+魈 > shou\ ;
+魄 > haku\ ;
+鬺 > shou\ ;
+鬲 > reki\ ;
+鬰 > utsu\ ;
+鬯 > chou\ ;
+鬮 > kyuu\ ;
+鬩 > geki\ ;
+鬛 > ryou\ ;
+鬒 > shin\ ;
+鬆 > shou\ ;
+髹 > kyuu\ ;
+髫 > chou\ ;
+髤 > kyuu\ ;
+髟 > hyou\ ;
+髜 > kyou\ ;
+髑 > toku\ ;
+髎 > ryou\ ;
+髆 > haku\ ;
+骼 > kaku\ ;
+骲 > haku\ ;
+骮 > yoku\ ;
+骭 > hagi\ ;
+骎 > shin\ ;
+骉 > hyuu\ ;
+驫 > hyuu\ ;
+驟 > shuu\ ;
+驝 > taku\ ;
+驕 > kyou\ ;
+驑 > ryuu\ ;
+驍 > gyou\ ;
+驃 > hyou\ ;
+驀 > baku\ ;
+騶 > shuu\ ;
+騳 > toku\ ;
+騮 > ryuu\ ;
+騞 > kaku\ ;
+駿 > shun\ ;
+駸 > shin\ ;
+駵 > ryuu\ ;
+駲 > shuu\ ;
+駱 > raku\ ;
+駮 > haku\ ;
+駪 > shin\ ;
+駁 > baku\ ;
+馽 > chuu\ ;
+馲 > taku\ ;
+馰 > teki\ ;
+馮 > hyou\ ;
+馥 > fuku\ ;
+馘 > kaku\ ;
+饟 > shou\ ;
+饗 > kyou\ ;
+饈 > shuu\ ;
+餾 > ryuu\ ;
+餺 > haku\ ;
+餦 > chou\ ;
+餗 > soku\ ;
+餕 > shun\ ;
+餉 > shou\ ;
+飥 > taku\ ;
+飈 > hyou\ ;
+飇 > hyou\ ;
+飆 > hyou\ ;
+飅 > ryuu\ ;
+飄 > hyou\ ;
+飃 > hyou\ ;
+飂 > ryuu\ ;
+颷 > hyou\ ;
+颮 > hyou\ ;
+顳 > shou\ ;
+顦 > shou\ ;
+顖 > shin\ ;
+顒 > gyou\ ;
+頰 > kyou\ ;
+頣 > shin\ ;
+頞 > atsu\ ;
+頙 > saku\ ;
+頔 > teki\ ;
+頌 > shou\ ;
+韷 > raku\ ;
+韶 > shou\ ;
+韮 > nira\ ;
+韭 > kyuu\ ;
+韘 > shou\ ;
+韔 > chou\ ;
+韇 > toku\ ;
+韁 > kyou\ ;
+鞹 > kaku\ ;
+鞴 > fuku\ ;
+鞫 > kiku\ ;
+鞦 > shuu\ ;
+鞢 > shou\ ;
+鞠 > mari\ ;
+鞟 > kaku\ ;
+鞏 > kyou\ ;
+鞆 > tomo\ ;
+靮 > teki\ ;
+靕 > shin\ ;
+靏 > kaku\ ;
+靎 > kaku\ ;
+靄 > moya\ ;
+靃 > kaku\ ;
+靂 > reki\ ;
+霹 > heki\ ;
+霸 > haku\ ;
+霳 > ryuu\ ;
+霱 > itsu\ ;
+霤 > ryuu\ ;
+霢 > baku\ ;
+霡 > baku\ ;
+霍 > kaku\ ;
+霅 > shou\ ;
+霄 > shou\ ;
+霃 > chin\ ;
+霂 > boku\ ;
+雹 > hyou\ ;
+雘 > waku\ ;
+雕 > chou\ ;
+雒 > raku\ ;
+雉 > kiji\ ;
+隻 > seki\ ;
+隺 > koku\ ;
+隟 > geki\ ;
+陿 > kyou\ ;
+陳 > chin\ ;
+陞 > shou\ ;
+陗 > shou\ ;
+陌 > haku\ ;
+阞 > roku\ ;
+闢 > heki\ ;
+闟 > kyuu\ ;
+闝 > hyou\ ;
+闖 > chin\ ;
+闃 > geki\ ;
+閶 > shou\ ;
+閴 > keki\ ;
+閱 > etsu\ ;
+閠 > tama\ ;
+閖 > yuru\ ;
+閄 > koku\ ;
+镹 > kyuu\ ;
+镸 > chou\ ;
+镠 > ryuu\ ;
+锺 > shou\ ;
+钁 > kaku\ ;
+鑿 > nomi\ ;
+鑰 > yaku\ ;
+鑮 > haku\ ;
+鑣 > hyou\ ;
+鑡 > saku\ ;
+鑟 > toku\ ;
+鑜 > shou\ ;
+鑓 > yari\ ;
+鑊 > kaku\ ;
+鑄 > chuu\ ;
+鑃 > tyou\ ;
+鐸 > taku\ ;
+鐴 > heki\ ;
+鐲 > taku\ ;
+鐔 > shin\ ;
+鐎 > shou\ ;
+鐈 > kyou\ ;
+鐂 > ryuu\ ;
+鏽 > shuu\ ;
+鏹 > kyou\ ;
+鏷 > hoku\ ;
+鏦 > shou\ ;
+鏥 > shuu\ ;
+鏢 > hyou\ ;
+鏛 > shou\ ;
+鏘 > shou\ ;
+鏑 > teki\ ;
+鏐 > ryuu\ ;
+鏌 > baku\ ;
+鏊 > gyou\ ;
+鏃 > zoku\ ;
+鎴 > soku\ ;
+鎰 > itsu\ ;
+鎮 > chin\ ;
+鎭 > chin\ ;
+鎨 > shun\ ;
+鎦 > ryuu\ ;
+鎛 > haku\ ;
+鎚 > tsui\ ;
+鎘 > reki\ ;
+鎐 > soku\ ;
+鎏 > ryuu\ ;
+鎍 > saku\ ;
+鎌 > kama\ ;
+鎀 > shuu\ ;
+鍾 > shou\ ;
+鍼 > hari\ ;
+鍶 > shou\ ;
+鍬 > kuwa\ ;
+鍖 > chin\ ;
+錷 > atsu\ ;
+錶 > hyou\ ;
+錴 > roku\ ;
+錫 > suzu\ ;
+錩 > shou\ ;
+錞 > shun\ ;
+錆 > sabi\ ;
+錄 > roku\ ;
+錂 > ryou\ ;
+鋿 > shou\ ;
+鋹 > chou\ ;
+鋳 > chuu\ ;
+鋲 > byou\ ;
+鋤 > suki\ ;
+鋠 > shin\ ;
+鋜 > saku\ ;
+鋈 > yoku\ ;
+銿 > shou\ ;
+銹 > shuu\ ;
+銸 > shou\ ;
+銷 > shou\ ;
+銶 > kyuu\ ;
+銛 > mori\ ;
+銎 > kyou\ ;
+銉 > itsu\ ;
+鉾 > hoko\ ;
+鉻 > raku\ ;
+鉮 > shin\ ;
+鉦 > kane\ ;
+鉞 > etsu\ ;
+鉝 > ryuu\ ;
+鉚 > ryuu\ ;
+鉑 > haku\ ;
+鉐 > seki\ ;
+鉊 > shou\ ;
+鈾 > chuu\ ;
+鈼 > saku\ ;
+鈬 > taku\ ;
+鈕 > chuu\ ;
+鈔 > shou\ ;
+鈎 > kagi\ ;
+鈌 > etsu\ ;
+鈊 > shin\ ;
+釽 > heki\ ;
+釻 > kyuu\ ;
+釥 > shou\ ;
+釞 > shuu\ ;
+釛 > koku\ ;
+釚 > kyuu\ ;
+釙 > haku\ ;
+釗 > shou\ ;
+釔 > itsu\ ;
+釓 > hyuu\ ;
+量 > ryou\ ;
+釂 > shou\ ;
+醻 > shuu\ ;
+醮 > shou\ ;
+醭 > hoku\ ;
+醬 > shou\ ;
+醕 > shun\ ;
+醋 > saku\ ;
+醇 > shun\ ;
+酱 > shou\ ;
+酪 > raku\ ;
+酧 > shuu\ ;
+酙 > shin\ ;
+酎 > chuu\ ;
+酋 > shuu\ ;
+酉 > tori\ ;
+鄹 > shuu\ ;
+鄴 > gyou\ ;
+鄩 > shin\ ;
+鄥 > kyou\ ;
+鄣 > shou\ ;
+鄚 > baku\ ;
+鄙 > hina\ ;
+鄕 > kyou\ ;
+鄉 > kyou\ ;
+鄂 > gaku\ ;
+鄀 > jaku\ ;
+郴 > chin\ ;
+郰 > shuu\ ;
+郤 > geki\ ;
+郝 > kaku\ ;
+郇 > shun\ ;
+郄 > keki\ ;
+邵 > shou\ ;
+邱 > kyuu\ ;
+邦 > kuni\ ;
+邥 > shin\ ;
+邛 > kyou\ ;
+邋 > ryou\ ;
+邈 > baku\ ;
+遼 > ryou\ ;
+遹 > itsu\ ;
+遬 > soku\ ;
+遧 > shou\ ;
+遛 > ryuu\ ;
+遒 > shuu\ ;
+遏 > atsu\ ;
+遌 > gaku\ ;
+逷 > keki\ ;
+逴 > taku\ ;
+逪 > saku\ ;
+逩 > kamu\ ;
+逧 > sako\ ;
+逡 > shun\ ;
+逛 > kyou\ ;
+逖 > teki\ ;
+逑 > kyuu\ ;
+逎 > shuu\ ;
+逍 > shou\ ;
+迹 > seki\ ;
+迮 > saku\ ;
+迪 > teki\ ;
+迢 > chou\ ;
+迠 > shou\ ;
+迍 > chun\ ;
+辸 > shou\ ;
+辟 > heki\ ;
+轣 > reki\ ;
+轢 > reki\ ;
+轎 > kyou\ ;
+轌 > sori\ ;
+轆 > roku\ ;
+轃 > shin\ ;
+轂 > koku\ ;
+輻 > fuku\ ;
+輹 > fuku\ ;
+輴 > chun\ ;
+輬 > ryou\ ;
+輧 > byou\ ;
+輛 > ryou\ ;
+輙 > chou\ ;
+輘 > ryou\ ;
+輖 > shuu\ ;
+輒 > chou\ ;
+輌 > ryou\ ;
+輈 > chuu\ ;
+軿 > byou\ ;
+軼 > itsu\ ;
+軸 > jiku\ ;
+軭 > kyou\ ;
+軫 > shin\ ;
+軋 > atsu\ ;
+躳 > kyuu\ ;
+躬 > kyuu\ ;
+躞 > shou\ ;
+躒 > reki\ ;
+躐 > ryou\ ;
+躄 > heki\ ;
+躃 > heki\ ;
+蹼 > boku\ ;
+蹻 > kyou\ ;
+蹺 > kyou\ ;
+蹱 > shou\ ;
+蹰 > shuu\ ;
+蹤 > shou\ ;
+蹢 > teki\ ;
+蹐 > seki\ ;
+蹌 > shou\ ;
+蹀 > chou\ ;
+踸 > chin\ ;
+踳 > shun\ ;
+踱 > taku\ ;
+踪 > shou\ ;
+踢 > teki\ ;
+踖 > seki\ ;
+踉 > ryou\ ;
+踆 > shun\ ;
+踄 > haku\ ;
+跫 > kyou\ ;
+跖 > seki\ ;
+跕 > chou\ ;
+跅 > taku\ ;
+趻 > chin\ ;
+趵 > haku\ ;
+趬 > kyou\ ;
+趫 > kyou\ ;
+趠 > taku\ ;
+趙 > chou\ ;
+趂 > chin\ ;
+趁 > chin\ ;
+赳 > kyuu\ ;
+赥 > keki\ ;
+贐 > shin\ ;
+贋 > nise\ ;
+賾 > saku\ ;
+賰 > shun\ ;
+賭 > kake\ ;
+賬 > chou\ ;
+賞 > shou\ ;
+賝 > chin\ ;
+賙 > shuu\ ;
+賕 > kyuu\ ;
+貺 > kyou\ ;
+貘 > baku\ ;
+貓 > byou\ ;
+貊 > haku\ ;
+貉 > kaku\ ;
+貅 > kyuu\ ;
+貂 > chou\ ;
+豹 > hyou\ ;
+豚 > buta\ ;
+讬 > taku\ ;
+讟 > toku\ ;
+讖 > shin\ ;
+讐 > shuu\ ;
+讎 > shuu\ ;
+讍 > gaku\ ;
+讋 > shou\ ;
+讅 > shin\ ;
+讁 > taku\ ;
+譸 > chuu\ ;
+譛 > shin\ ;
+譙 > shou\ ;
+譖 > shin\ ;
+譅 > shuu\ ;
+謷 > gyou\ ;
+謫 > taku\ ;
+謞 > kaku\ ;
+謋 > kaku\ ;
+諿 > shuu\ ;
+諾 > daku\ ;
+諶 > shin\ ;
+諤 > gaku\ ;
+諜 > chou\ ;
+諗 > shin\ ;
+諒 > ryou\ ;
+諑 > taku\ ;
+諊 > kiku\ ;
+諃 > chin\ ;
+誯 > shou\ ;
+誦 > shou\ ;
+誚 > shou\ ;
+誑 > kyou\ ;
+誆 > kyou\ ;
+誅 > chuu\ ;
+詾 > kyou\ ;
+詻 > gaku\ ;
+詶 > shuu\ ;
+詵 > shin\ ;
+詗 > kyou\ ;
+註 > chuu\ ;
+訷 > shin\ ;
+訫 > shin\ ;
+訦 > shin\ ;
+訠 > shin\ ;
+訅 > kyuu\ ;
+訄 > kyuu\ ;
+觴 > shou\ ;
+觳 > koku\ ;
+觫 > soku\ ;
+觩 > kyuu\ ;
+覿 > teki\ ;
+覡 > geki\ ;
+覜 > chou\ ;
+覛 > biki\ ;
+覓 > beki\ ;
+覐 > kaku\ ;
+覈 > kaku\ ;
+襵 > shou\ ;
+襯 > shin\ ;
+襮 > haku\ ;
+襫 > seki\ ;
+襞 > hida\ ;
+襗 > taku\ ;
+襆 > hoku\ ;
+襂 > shin\ ;
+襀 > seki\ ;
+褾 > hyou\ ;
+褺 > chou\ ;
+褶 > chou\ ;
+褱 > kaie\ ;
+褥 > joku\ ;
+褎 > shuu\ ;
+褁 > seki\ ;
+裼 > seki\ ;
+裲 > ryou\ ;
+裱 > hyou\ ;
+裯 > chuu\ ;
+裛 > youu\ ;
+裘 > kyuu\ ;
+裓 > koku\ ;
+裑 > shin\ ;
+裄 > yuki\ ;
+袱 > fuku\ ;
+袰 > horo\ ;
+袗 > shin\ ;
+衱 > kyou\ ;
+衠 > shun\ ;
+衉 > kaku\ ;
+衄 > jiku\ ;
+衂 > jiku\ ;
+蠰 > shou\ ;
+蠮 > etsu\ ;
+蠨 > shou\ ;
+蠚 > kaku\ ;
+蠖 > kaku\ ;
+蠁 > kyou\ ;
+蟹 > kani\ ;
+蟯 > gyou\ ;
+蟭 > shou\ ;
+蟟 > ryou\ ;
+蟜 > kyou\ ;
+蟎 > dani\ ;
+蟉 > ryuu\ ;
+蟈 > kaku\ ;
+蟇 > hiki\ ;
+蟆 > hiki\ ;
+螿 > shou\ ;
+螽 > shuu\ ;
+螵 > hyou\ ;
+螫 > seki\ ;
+螓 > shin\ ;
+螋 > shuu\ ;
+蝶 > chou\ ;
+蝤 > shuu\ ;
+蝍 > soku\ ;
+蜽 > ryou\ ;
+蜮 > yoku\ ;
+蜩 > chou\ ;
+蜨 > shou\ ;
+蜥 > seki\ ;
+蜣 > kyou\ ;
+蜙 > shou\ ;
+蜐 > kyou\ ;
+蜄 > shin\ ;
+蛺 > kyou\ ;
+蛸 > tako\ ;
+蛭 > hiru\ ;
+蛬 > kyou\ ;
+蛩 > kyou\ ;
+蛒 > kaku\ ;
+蛁 > chou\ ;
+蚸 > reki\ ;
+蚱 > saku\ ;
+蚯 > kyuu\ ;
+蚋 > buyo\ ;
+虹 > niji\ ;
+虯 > kyuu\ ;
+虬 > kyuu\ ;
+虩 > keki\ ;
+虙 > huku\ ;
+虈 > kyou\ ;
+蘽 > ryuu\ ;
+蘗 > haku\ ;
+蘒 > hagi\ ;
+蘆 > ashi\ ;
+蘀 > taku\ ;
+藿 > kaku\ ;
+藶 > reki\ ;
+藭 > kyuu\ ;
+藪 > yabu\ ;
+藨 > hyou\ ;
+藠 > kyou\ ;
+藐 > baku\ ;
+藎 > shin\ ;
+藋 > chou\ ;
+薽 > shin\ ;
+薼 > chin\ ;
+薸 > hyou\ ;
+薜 > heki\ ;
+薓 > shin\ ;
+薑 > kyou\ ;
+薏 > yoku\ ;
+薌 > kyou\ ;
+蕺 > shuu\ ;
+蕭 > shou\ ;
+蕪 > kabu\ ;
+蕣 > shun\ ;
+蕚 > gaku\ ;
+蕗 > fuki\ ;
+蕐 > kuwa\ ;
+蕉 > shou\ ;
+蕈 > shin\ ;
+蔯 > chin\ ;
+蔣 > shou\ ;
+蔟 > zoku\ ;
+蔚 > utsu\ ;
+蔘 > shin\ ;
+蔕 > heta\ ;
+蔔 > fuku\ ;
+蔐 > teki\ ;
+蔏 > shou\ ;
+蔌 > soku\ ;
+蔇 > kike\ ;
+蔆 > ryou\ ;
+蔃 > kyou\ ;
+蓼 > tade\ ;
+蓻 > shuu\ ;
+蓴 > shun\ ;
+蓲 > kyuu\ ;
+蓧 > shou\ ;
+蓚 > chou\ ;
+蓑 > mino\ ;
+蓐 > joku\ ;
+蓁 > shin\ ;
+蒴 > saku\ ;
+蒪 > haku\ ;
+蒦 > waku\ ;
+蒖 > shin\ ;
+蒐 > shuu\ ;
+蒋 > shou\ ;
+葺 > shuu\ ;
+葴 > shin\ ;
+葱 > negi\ ;
+葯 > yaku\ ;
+葤 > chuu\ ;
+葠 > shin\ ;
+葛 > kuzu\ ;
+葚 > chin\ ;
+葙 > shou\ ;
+葍 > huku\ ;
+萼 > gaku\ ;
+萪 > kuwa\ ;
+萩 > hagi\ ;
+萢 > yaji\ ;
+萛 > kyuu\ ;
+萇 > chou\ ;
+萅 > shun\ ;
+菱 > ryou\ ;
+菨 > shou\ ;
+菖 > shou\ ;
+菔 > hoku\ ;
+菐 > hoku\ ;
+莜 > teki\ ;
+莘 > shin\ ;
+莍 > kyuu\ ;
+莀 > shin\ ;
+荍 > kyou\ ;
+茽 > chuu\ ;
+茺 > shuu\ ;
+茯 > fuku\ ;
+茮 > shou\ ;
+茭 > keki\ ;
+茟 > itsu\ ;
+茞 > shin\ ;
+茖 > kaku\ ;
+苜 > boku\ ;
+苙 > ryuu\ ;
+苕 > chou\ ;
+苆 > susa\ ;
+芹 > seri\ ;
+芲 > kuwa\ ;
+芯 > shin\ ;
+芨 > kyuu\ ;
+芒 > nogi\ ;
+芎 > kyuu\ ;
+芀 > shou\ ;
+艽 > kyuu\ ;
+艻 > roku\ ;
+艫 > tomo\ ;
+艧 > waku\ ;
+艢 > shou\ ;
+艝 > sori\ ;
+艏 > shuu\ ;
+舵 > kaji\ ;
+舴 > taku\ ;
+舜 > shun\ ;
+舏 > kyuu\ ;
+舂 > shou\ ;
+臻 > shin\ ;
+臹 > shuu\ ;
+臵 > kaku\ ;
+臰 > shuu\ ;
+臫 > kyou\ ;
+臛 > koku\ ;
+臕 > hyou\ ;
+膲 > shou\ ;
+膮 > kyou\ ;
+膤 > tara\ ;
+膘 > hyou\ ;
+膕 > kaku\ ;
+膓 > chou\ ;
+膋 > ryou\ ;
+膊 > haku\ ;
+膈 > kaku\ ;
+膄 > shuu\ ;
+膃 > otsu\ ;
+腿 > momo\ ;
+腽 > otsu\ ;
+腭 > gaku\ ;
+腘 > kaku\ ;
+腊 > seki\ ;
+脼 > ryou\ ;
+脹 > chou\ ;
+脩 > shuu\ ;
+脤 > shin\ ;
+脛 > sune\ ;
+脋 > kyou\ ;
+胺 > atsu\ ;
+胳 > kaku\ ;
+胤 > tane\ ;
+胗 > shin\ ;
+胄 > chuu\ ;
+肱 > hiji\ ;
+肫 > shun\ ;
+股 > momo\ ;
+肈 > chou\ ;
+肇 > chou\ ;
+肁 > chou\ ;
+聿 > itsu\ ;
+聼 > chou\ ;
+聄 > shin\ ;
+耴 > chou\ ;
+耤 > seki\ ;
+翹 > gyou\ ;
+翲 > hyou\ ;
+翯 > koku\ ;
+翮 > kaku\ ;
+翟 > keki\ ;
+翕 > kyuu\ ;
+翔 > shou\ ;
+翏 > ryuu\ ;
+翊 > yoku\ ;
+翀 > chuu\ ;
+羗 > kyou\ ;
+羌 > kyou\ ;
+羃 > beki\ ;
+羀 > ryuu\ ;
+罿 > shou\ ;
+罶 > ryuu\ ;
+罭 > yoku\ ;
+罧 > shin\ ;
+罠 > wana\ ;
+罅 > hibi\ ;
+纕 > shou\ ;
+纆 > boku\ ;
+繮 > kyou\ ;
+繭 > mayu\ ;
+繦 > kyou\ ;
+繡 > shuu\ ;
+繚 > ryou\ ;
+繒 > shou\ ;
+繍 > shuu\ ;
+繈 > kyou\ ;
+繆 > kyuu\ ;
+績 > seki\ ;
+縹 > hyou\ ;
+縶 > chuu\ ;
+縠 > koku\ ;
+縟 > joku\ ;
+縝 > shin\ ;
+縐 > shuu\ ;
+縉 > shin\ ;
+緲 > byou\ ;
+緝 > shuu\ ;
+緙 > kaku\ ;
+緗 > shou\ ;
+緎 > yoku\ ;
+緆 > seki\ ;
+緅 > shuu\ ;
+緃 > shou\ ;
+綹 > ryuu\ ;
+綶 > kuwa\ ;
+綧 > shun\ ;
+綢 > chuu\ ;
+綝 > chin\ ;
+綛 > kase\ ;
+綌 > keki\ ;
+綅 > shin\ ;
+綃 > shou\ ;
+絿 > kyuu\ ;
+絈 > baku\ ;
+紾 > shin\ ;
+紬 > chuu\ ;
+紖 > chin\ ;
+紃 > shun\ ;
+紂 > chuu\ ;
+糾 > kyuu\ ;
+糺 > kyuu\ ;
+糶 > chou\ ;
+糴 > teki\ ;
+糠 > nuka\ ;
+糗 > kyuu\ ;
+糔 > shuu\ ;
+糓 > koku\ ;
+糊 > nori\ ;
+粻 > chou\ ;
+粷 > kiku\ ;
+粶 > roku\ ;
+粵 > etsu\ ;
+粱 > ryou\ ;
+粮 > ryou\ ;
+粤 > etsu\ ;
+粕 > haku\ ;
+粂 > kume\ ;
+籾 > momi\ ;
+籰 > waku\ ;
+籥 > yaku\ ;
+籤 > kuji\ ;
+籜 > taku\ ;
+籕 > ryuu\ ;
+籒 > shuu\ ;
+籏 > hata\ ;
+籌 > chuu\ ;
+籊 > teki\ ;
+籆 > waku\ ;
+籀 > chuu\ ;
+簶 > roku\ ;
+簱 > hata\ ;
+簫 > shou\ ;
+簪 > shin\ ;
+簨 > shun\ ;
+簥 > kyou\ ;
+簙 > haku\ ;
+簘 > shou\ ;
+簗 > yana\ ;
+簏 > roku\ ;
+簎 > saku\ ;
+簌 > soku\ ;
+簉 > shuu\ ;
+簀 > saku\ ;
+篸 > shin\ ;
+篴 > teki\ ;
+篠 > shou\ ;
+篛 > jaku\ ;
+篗 > waku\ ;
+篋 > kyou\ ;
+箺 > shun\ ;
+箴 > shin\ ;
+箰 > shun\ ;
+箬 > joku\ ;
+箙 > fuku\ ;
+箔 > haku\ ;
+箍 > taga\ ;
+箆 > hera\ ;
+筿 > shou\ ;
+筺 > kyou\ ;
+筴 > kyou\ ;
+筱 > shou\ ;
+筰 > saku\ ;
+筐 > kyou\ ;
+筇 > kyou\ ;
+笿 > raku\ ;
+笮 > saku\ ;
+笧 > saku\ ;
+笊 > zaru\ ;
+笈 > kyuu\ ;
+竻 > roku\ ;
+竺 > toku\ ;
+竴 > shun\ ;
+竨 > chou\ ;
+竦 > shou\ ;
+竣 > shun\ ;
+竜 > ryuu\ ;
+竆 > kyuu\ ;
+竅 > kyou\ ;
+窿 > ryuu\ ;
+窵 > chou\ ;
+窯 > kama\ ;
+窕 > chou\ ;
+窄 > saku\ ;
+窀 > chun\ ;
+穹 > kyuu\ ;
+穸 > seki\ ;
+穵 > atsu\ ;
+穫 > kaku\ ;
+穪 > shou\ ;
+穙 > hoku\ ;
+穕 > shou\ ;
+穐 > shuu\ ;
+穆 > boku\ ;
+穀 > koku\ ;
+稹 > shin\ ;
+稸 > kiku\ ;
+稠 > chuu\ ;
+稜 > ryou\ ;
+稕 > shun\ ;
+稑 > riku\ ;
+秦 > shin\ ;
+秝 > reki\ ;
+种 > chuu\ ;
+秃 > toku\ ;
+禴 > yaku\ ;
+禛 > shin\ ;
+祿 > roku\ ;
+祾 > ryou\ ;
+祲 > shin\ ;
+票 > hyou\ ;
+祧 > chou\ ;
+祥 > shou\ ;
+祏 > seki\ ;
+礿 > yaku\ ;
+礴 > haku\ ;
+礭 > kaku\ ;
+礐 > kaku\ ;
+礁 > shou\ ;
+磿 > reki\ ;
+磶 > seki\ ;
+磧 > seki\ ;
+磦 > hyou\ ;
+磟 > riku\ ;
+磔 > taku\ ;
+碻 > kaku\ ;
+碵 > seki\ ;
+碪 > chin\ ;
+碩 > seki\ ;
+碡 > toku\ ;
+硾 > tsui\ ;
+硺 > taku\ ;
+硴 > kaki\ ;
+确 > kaku\ ;
+硫 > ryuu\ ;
+硞 > kaku\ ;
+硌 > raku\ ;
+砷 > shin\ ;
+砧 > chin\ ;
+砡 > giku\ ;
+砝 > kyou\ ;
+砉 > keki\ ;
+矱 > waku\ ;
+矯 > kyou\ ;
+矪 > chuu\ ;
+矧 > shin\ ;
+矤 > shin\ ;
+矠 > saku\ ;
+矟 > saku\ ;
+矞 > itsu\ ;
+矛 > hoko\ ;
+矍 > kaku\ ;
+瞾 > shou\ ;
+瞧 > shou\ ;
+瞟 > hyou\ ;
+瞚 > shun\ ;
+瞕 > shou\ ;
+瞔 > saku\ ;
+瞋 > shin\ ;
+瞄 > byou\ ;
+睗 > seki\ ;
+睖 > chou\ ;
+眾 > shuu\ ;
+眽 > baku\ ;
+眹 > chin\ ;
+眶 > kyou\ ;
+眕 > shin\ ;
+眒 > shin\ ;
+眇 > byou\ ;
+盾 > tate\ ;
+盹 > shun\ ;
+盅 > chuu\ ;
+皹 > hibi\ ;
+皸 > hibi\ ;
+皴 > shun\ ;
+皪 > reki\ ;
+皦 > kyou\ ;
+皢 > kyou\ ;
+皟 > saku\ ;
+皛 > kyou\ ;
+皙 > seki\ ;
+皍 > soku\ ;
+皀 > hyuu\ ;
+癨 > kaku\ ;
+癧 > reki\ ;
+癥 > chou\ ;
+癋 > kaku\ ;
+癅 > ryuu\ ;
+癄 > shou\ ;
+癃 > ryuu\ ;
+癁 > fuku\ ;
+瘼 > baku\ ;
+瘹 > chou\ ;
+瘴 > shou\ ;
+瘳 > chuu\ ;
+瘲 > shou\ ;
+瘮 > shin\ ;
+瘭 > hyou\ ;
+瘤 > kobu\ ;
+瘠 > seki\ ;
+瘇 > shou\ ;
+痮 > chou\ ;
+痟 > shou\ ;
+痜 > toku\ ;
+疹 > shin\ ;
+疢 > chin\ ;
+疚 > kyuu\ ;
+疔 > chou\ ;
+疒 > daku\ ;
+疇 > chuu\ ;
+疆 > kyou\ ;
+疅 > kyou\ ;
+畼 > chou\ ;
+畻 > shou\ ;
+畺 > kyou\ ;
+畵 > kaku\ ;
+畴 > chuu\ ;
+畱 > ryuu\ ;
+畯 > shun\ ;
+畩 > kesa\ ;
+畛 > shin\ ;
+畐 > fuku\ ;
+畄 > ryuu\ ;
+畃 > shun\ ;
+甼 > chou\ ;
+甪 > roku\ ;
+甧 > shin\ ;
+甡 > shin\ ;
+甞 > shou\ ;
+甕 > mika\ ;
+甓 > heki\ ;
+甃 > shuu\ ;
+瓺 > chou\ ;
+瓤 > shou\ ;
+瓢 > hyou\ ;
+瓟 > haku\ ;
+璹 > shuu\ ;
+璧 > heki\ ;
+璢 > ryuu\ ;
+璡 > shin\ ;
+璞 > haku\ ;
+璙 > ryou\ ;
+璋 > shou\ ;
+璆 > kyuu\ ;
+瑲 > shou\ ;
+瑨 > shin\ ;
+瑧 > shin\ ;
+瑠 > ryuu\ ;
+瑕 > kizu\ ;
+瑒 > chou\ ;
+瑃 > chun\ ;
+琱 > chou\ ;
+琭 > koku\ ;
+琩 > shou\ ;
+琢 > taku\ ;
+琛 > chin\ ;
+琉 > ryuu\ ;
+琇 > shuu\ ;
+珦 > kyou\ ;
+珣 > shun\ ;
+珞 > raku\ ;
+珙 > kyou\ ;
+珒 > shin\ ;
+珏 > kaku\ ;
+珎 > chin\ ;
+珋 > ryuu\ ;
+珅 > shin\ ;
+珀 > haku\ ;
+玿 > shou\ ;
+玓 > teki\ ;
+玅 > myou\ ;
+獶 > nyou\ ;
+獵 > ryou\ ;
+獠 > ryou\ ;
+獟 > gyou\ ;
+獐 > shou\ ;
+獏 > baku\ ;
+獎 > shou\ ;
+獍 > kyou\ ;
+猟 > ryou\ ;
+猖 > shou\ ;
+猋 > hyou\ ;
+狥 > shun\ ;
+狢 > kaku\ ;
+狛 > haku\ ;
+狇 > boku\ ;
+狆 > chin\ ;
+狄 > teki\ ;
+犱 > keki\ ;
+犨 > shuu\ ;
+犢 > toku\ ;
+犖 > raku\ ;
+牿 > koku\ ;
+牞 > kyuu\ ;
+牙 > kiba\ ;
+牘 > toku\ ;
+牔 > haku\ ;
+牆 > shou\ ;
+爿 > shou\ ;
+爴 > kaku\ ;
+爯 > shou\ ;
+爚 > yaku\ ;
+爀 > kaku\ ;
+燸 > jiyu\ ;
+燮 > shou\ ;
+燚 > itsu\ ;
+燖 > shin\ ;
+燎 > ryou\ ;
+燋 > shou\ ;
+熛 > hyou\ ;
+熇 > koku\ ;
+熄 > soku\ ;
+煁 > shin\ ;
+焻 > shou\ ;
+焌 > shun\ ;
+焇 > shou\ ;
+焆 > etsu\ ;
+焅 > koku\ ;
+焃 > kaku\ ;
+烙 > raku\ ;
+炸 > saku\ ;
+炤 > shou\ ;
+灸 > kyuu\ ;
+灬 > hyou\ ;
+灥 > shun\ ;
+灄 > shou\ ;
+瀹 > seku\ ;
+瀷 > yoku\ ;
+瀧 > taki\ ;
+瀟 > shou\ ;
+瀓 > chou\ ;
+瀑 > baku\ ;
+瀏 > ryuu\ ;
+瀋 > shin\ ;
+瀆 > toku\ ;
+濼 > roku\ ;
+濹 > boku\ ;
+濮 > hoku\ ;
+濬 > shun\ ;
+濩 > kaku\ ;
+濈 > shuu\ ;
+濅 > shin\ ;
+澼 > heki\ ;
+澵 > shin\ ;
+澠 > shou\ ;
+澙 > seki\ ;
+澓 > huku\ ;
+澑 > ryuu\ ;
+澆 > gyou\ ;
+澂 > chou\ ;
+潟 > kata\ ;
+潝 > kyuu\ ;
+潗 > shuu\ ;
+漻 > ryou\ ;
+漳 > shou\ ;
+漘 > shin\ ;
+漍 > kaku\ ;
+漉 > roku\ ;
+滲 > shin\ ;
+滮 > hyuu\ ;
+滫 > shuu\ ;
+滝 > taki\ ;
+滓 > kasu\ ;
+滌 > deki\ ;
+溽 > joku\ ;
+溱 > shin\ ;
+溍 > shin\ ;
+湫 > shou\ ;
+湨 > keki\ ;
+湘 > shou\ ;
+湒 > shuu\ ;
+渺 > byou\ ;
+渞 > shuu\ ;
+渗 > shin\ ;
+渌 > roku\ ;
+淼 > byou\ ;
+淴 > otsu\ ;
+淳 > shun\ ;
+淩 > ryou\ ;
+淥 > roku\ ;
+淢 > yoku\ ;
+淞 > shou\ ;
+淕 > riku\ ;
+淌 > shou\ ;
+淅 > seki\ ;
+涿 > toku\ ;
+涉 > shou\ ;
+浹 > shou\ ;
+浞 > saku\ ;
+浗 > kyuu\ ;
+洶 > kyou\ ;
+洵 > shun\ ;
+洦 > baku\ ;
+洟 > hana\ ;
+洓 > saku\ ;
+洑 > huku\ ;
+泵 > ryuu\ ;
+泧 > etsu\ ;
+泆 > itsu\ ;
+泅 > shuu\ ;
+沰 > taku\ ;
+沐 > boku\ ;
+沉 > chin\ ;
+沃 > yoku\ ;
+沁 > shin\ ;
+汹 > kyou\ ;
+汩 > itsu\ ;
+汨 > beki\ ;
+汛 > shin\ ;
+汐 > seki\ ;
+汋 > saku\ ;
+氻 > roku\ ;
+氶 > shou\ ;
+氎 > chou\ ;
+氅 > shou\ ;
+毱 > kiku\ ;
+毣 > boku\ ;
+毄 > keki\ ;
+毃 > kaku\ ;
+殾 > shun\ ;
+殼 > kaku\ ;
+殰 > toku\ ;
+殭 > kyou\ ;
+殤 > shou\ ;
+殠 > shuu\ ;
+殟 > otsu\ ;
+殑 > kyou\ ;
+殍 > hyou\ ;
+歵 > saku\ ;
+歰 > shuu\ ;
+歙 > kyuu\ ;
+歒 > teki\ ;
+歊 > kyou\ ;
+欶 > saku\ ;
+欫 > keki\ ;
+欇 > shou\ ;
+欂 > haku\ ;
+櫬 > shin\ ;
+櫪 > reki\ ;
+櫟 > reki\ ;
+櫝 > toku\ ;
+檴 > kaku\ ;
+檪 > reki\ ;
+檝 > shuu\ ;
+檗 > haku\ ;
+檍 > yoku\ ;
+檄 > geki\ ;
+橿 > kyou\ ;
+橸 > shou\ ;
+橳 > nude\ ;
+橲 > zusa\ ;
+橡 > shou\ ;
+橐 > taku\ ;
+橊 > ryou\ ;
+樾 > etsu\ ;
+樽 > taru\ ;
+樺 > kaba\ ;
+樸 > boku\ ;
+樰 > tara\ ;
+樢 > boku\ ;
+樟 > shou\ ;
+樛 > kyuu\ ;
+樚 > roku\ ;
+樕 > soku\ ;
+樑 > ryou\ ;
+樀 > teki\ ;
+槳 > shou\ ;
+槲 > koku\ ;
+槮 > shin\ ;
+槨 > kaku\ ;
+槢 > shuu\ ;
+槗 > kyou\ ;
+槖 > taku\ ;
+槍 > yari\ ;
+槊 > saku\ ;
+槅 > kaku\ ;
+榺 > shou\ ;
+榷 > kaku\ ;
+榴 > ryuu\ ;
+榲 > otsu\ ;
+榫 > shun\ ;
+榧 > kaya\ ;
+榖 > koku\ ;
+榒 > doku\ ;
+榅 > otsu\ ;
+榁 > muro\ ;
+楸 > shuu\ ;
+楫 > shuu\ ;
+楢 > shuu\ ;
+楉 > jaku\ ;
+楅 > hyku\ ;
+椨 > tafu\ ;
+椥 > nagi\ ;
+椙 > sugi\ ;
+椓 > taku\ ;
+椒 > shou\ ;
+椋 > ryou\ ;
+椈 > kiku\ ;
+椆 > chuu\ ;
+椁 > kaku\ ;
+棽 > chin\ ;
+棫 > yoku\ ;
+棟 > mune\ ;
+棘 > toge\ ;
+棏 > toku\ ;
+梮 > kiku\ ;
+梥 > shou\ ;
+梣 > shin\ ;
+梜 > kyou\ ;
+梏 > koku\ ;
+梂 > kyuu\ ;
+梁 > hari\ ;
+桺 > ryuu\ ;
+桷 > kaku\ ;
+桝 > masu\ ;
+桘 > tsui\ ;
+桕 > kyuu\ ;
+桑 > kuwa\ ;
+桌 > taku\ ;
+框 > kyou\ ;
+栿 > fuku\ ;
+核 > kaku\ ;
+栱 > kyou\ ;
+株 > kabu\ ;
+栢 > haku\ ;
+栅 > saku\ ;
+栂 > toga\ ;
+柾 > kyuu\ ;
+柩 > kyuu\ ;
+柞 > saku\ ;
+柝 > taku\ ;
+柗 > shou\ ;
+柏 > haku\ ;
+枷 > kase\ ;
+枵 > kyou\ ;
+枩 > shou\ ;
+枡 > masu\ ;
+枠 > waku\ ;
+析 > seki\ ;
+极 > kyou\ ;
+杻 > chuu\ ;
+杶 > chun\ ;
+杪 > byou\ ;
+杦 > sugi\ ;
+杣 > soma\ ;
+杢 > moku\ ;
+杙 > yoku\ ;
+杔 > taku\ ;
+朽 > kyuu\ ;
+朕 > chin\ ;
+朔 > saku\ ;
+朓 > chou\ ;
+朒 > niku\ ;
+朐 > kyou\ ;
+曻 > shou\ ;
+曰 > etsu\ ;
+曟 > shin\ ;
+曏 > kyou\ ;
+曌 > shou\ ;
+曉 > gyou\ ;
+曆 > reki\ ;
+暸 > ryou\ ;
+暲 > shou\ ;
+暙 > shun\ ;
+暍 > etsu\ ;
+晿 > shou\ ;
+晾 > ryou\ ;
+晳 > seki\ ;
+晰 > seki\ ;
+晫 > taku\ ;
+晨 > shin\ ;
+晙 > shun\ ;
+晑 > kyou\ ;
+晌 > shou\ ;
+晋 > shin\ ;
+晉 > shin\ ;
+晁 > chou\ ;
+晀 > chou\ ;
+昶 > chou\ ;
+昮 > shou\ ;
+昣 > shin\ ;
+昌 > shou\ ;
+昃 > soku\ ;
+旾 > shun\ ;
+旧 > kyuu\ ;
+旒 > ryuu\ ;
+旐 > chou\ ;
+旈 > ryuu\ ;
+斲 > taku\ ;
+斮 > saku\ ;
+斡 > atsu\ ;
+斠 > kaku\ ;
+斟 > shin\ ;
+斛 > koku\ ;
+斘 > shou\ ;
+斈 > gaku\ ;
+敿 > kyou\ ;
+敽 > kyou\ ;
+敫 > seku\ ;
+敞 > shou\ ;
+敒 > chin\ ;
+敐 > shin\ ;
+敎 > kyou\ ;
+敋 > kaku\ ;
+敇 > saku\ ;
+攵 > boku\ ;
+攴 > hoku\ ;
+攪 > kaku\ ;
+攊 > fuki\ ;
+攉 > kaku\ ;
+擿 > teki\ ;
+擴 > kaku\ ;
+擲 > teki\ ;
+擢 > teki\ ;
+擘 > haku\ ;
+擗 > heki\ ;
+擑 > shou\ ;
+擌 > saku\ ;
+擊 > geki\ ;
+擉 > saku\ ;
+擇 > taku\ ;
+撹 > kaku\ ;
+撬 > kyou\ ;
+撩 > ryou\ ;
+撨 > shou\ ;
+撟 > kyou\ ;
+撑 > chou\ ;
+撐 > chou\ ;
+摽 > hyou\ ;
+摭 > seki\ ;
+摝 > roku\ ;
+摘 > teki\ ;
+摑 > kaku\ ;
+摏 > shou\ ;
+摎 > kyuu\ ;
+搿 > kaku\ ;
+搾 > saku\ ;
+搶 > shou\ ;
+搦 > jaku\ ;
+搢 > shin\ ;
+搠 > saku\ ;
+搏 > haku\ ;
+搊 > shuu\ ;
+搉 > kaku\ ;
+揪 > shuu\ ;
+揕 > chin\ ;
+掵 > haba\ ;
+掬 > kiku\ ;
+掦 > teki\ ;
+掤 > hyou\ ;
+掚 > ryou\ ;
+掕 > ryou\ ;
+捷 > shou\ ;
+捔 > kaku\ ;
+捒 > shou\ ;
+捉 > soku\ ;
+捄 > kyuu\ ;
+捁 > kaku\ ;
+挟 > kyou\ ;
+挖 > atsu\ ;
+挑 > chou\ ;
+挌 > kaku\ ;
+挋 > shin\ ;
+拲 > kyou\ ;
+拱 > kyou\ ;
+拫 > shuu\ ;
+拡 > kaku\ ;
+拓 > taku\ ;
+拆 > taku\ ;
+抻 > shin\ ;
+択 > taku\ ;
+抍 > shou\ ;
+抄 > shou\ ;
+抂 > kyou\ ;
+扨 > sate\ ;
+扚 > chou\ ;
+托 > taku\ ;
+扑 > hoku\ ;
+扐 > roku\ ;
+扄 > shou\ ;
+戳 > taku\ ;
+戮 > riku\ ;
+戫 > yoku\ ;
+戢 > shuu\ ;
+戝 > zoku\ ;
+戕 > shou\ ;
+戉 > etsu\ ;
+戈 > hoko\ ;
+懾 > shou\ ;
+懲 > chou\ ;
+懟 > tsui\ ;
+懏 > shun\ ;
+憭 > ryou\ ;
+憍 > kyou\ ;
+憀 > ryou\ ;
+慿 > hyou\ ;
+慼 > seki\ ;
+慴 > shou\ ;
+慯 > shou\ ;
+慫 > shou\ ;
+慞 > shou\ ;
+慝 > toku\ ;
+慓 > hyou\ ;
+慎 > shin\ ;
+愽 > haku\ ;
+愼 > shin\ ;
+愶 > kyou\ ;
+愵 > deki\ ;
+愨 > kaku\ ;
+愜 > kyou\ ;
+愙 > kaku\ ;
+愖 > shin\ ;
+愁 > shuu\ ;
+愀 > shou\ ;
+惻 > soku\ ;
+惷 > shun\ ;
+惵 > chou\ ;
+惪 > toku\ ;
+惝 > shou\ ;
+惖 > teki\ ;
+惕 > teki\ ;
+惊 > ryou\ ;
+惆 > chuu\ ;
+惄 > deki\ ;
+悵 > chou\ ;
+悳 > toku\ ;
+悦 > etsu\ ;
+悥 > yoku\ ;
+悢 > ryou\ ;
+悚 > shou\ ;
+悅 > etsu\ ;
+恷 > kyuu\ ;
+恱 > etsu\ ;
+恪 > kaku\ ;
+恧 > jiku\ ;
+恟 > kyou\ ;
+恔 > kyou\ ;
+恌 > chou\ ;
+恊 > kyou\ ;
+恇 > kyou\ ;
+怳 > kyou\ ;
+怗 > chou\ ;
+怍 > saku\ ;
+怊 > chou\ ;
+忸 > jiku\ ;
+忷 > kyou\ ;
+忱 > shin\ ;
+忪 > shou\ ;
+忡 > chuu\ ;
+忠 > chuu\ ;
+忒 > toku\ ;
+忑 > toku\ ;
+忇 > roku\ ;
+徼 > kyou\ ;
+徸 > shou\ ;
+德 > toku\ ;
+徵 > chou\ ;
+徱 > hyou\ ;
+徢 > shou\ ;
+徜 > shou\ ;
+徇 > shun\ ;
+彸 > shou\ ;
+彶 > kihu\ ;
+彳 > teki\ ;
+彰 > shou\ ;
+彪 > hyou\ ;
+彟 > kaku\ ;
+彔 > roku\ ;
+彊 > kyou\ ;
+彅 > nagi\ ;
+强 > kyou\ ;
+弶 > gyau\ ;
+弫 > shin\ ;
+弜 > kyou\ ;
+弗 > doru\ ;
+弓 > yumi\ ;
+弌 > itsu\ ;
+弋 > yoku\ ;
+廾 > kyou\ ;
+廸 > teki\ ;
+廳 > chou\ ;
+廰 > chou\ ;
+廫 > ryou\ ;
+廧 > shau\ ;
+廦 > heki\ ;
+廠 > shou\ ;
+廟 > byou\ ;
+廙 > yoku\ ;
+廘 > roku\ ;
+廖 > ryou\ ;
+廋 > shuu\ ;
+庿 > byou\ ;
+庴 > seki\ ;
+庱 > chou\ ;
+庥 > kyuu\ ;
+庠 > shou\ ;
+幬 > chuu\ ;
+幦 > beki\ ;
+幞 > hoku\ ;
+幛 > shou\ ;
+幙 > baku\ ;
+幘 > saku\ ;
+幗 > kaku\ ;
+幖 > hyou\ ;
+幓 > shin\ ;
+幎 > beki\ ;
+幂 > beki\ ;
+帤 > geyo\ ;
+帢 > kahu\ ;
+帛 > haku\ ;
+巩 > kyou\ ;
+巤 > rehu\ ;
+巐 > chou\ ;
+嶽 > gaku\ ;
+嶯 > shiu\ ;
+嶫 > gyou\ ;
+嶪 > gyou\ ;
+嶨 > kaku\ ;
+嶢 > gyou\ ;
+嶠 > kyou\ ;
+嶜 > shin\ ;
+嶛 > ryou\ ;
+嶚 > ryou\ ;
+嶒 > shou\ ;
+嶐 > ryuu\ ;
+嶈 > shau\ ;
+嶂 > shou\ ;
+嵾 > shin\ ;
+嵹 > kyou\ ;
+嵷 > shou\ ;
+嵊 > shou\ ;
+嵀 > chiu\ ;
+崿 > gaku\ ;
+崷 > shiu\ ;
+崨 > sehu\ ;
+崧 > shuu\ ;
+崚 > ryou\ ;
+崈 > shuu\ ;
+峽 > kyou\ ;
+峻 > shun\ ;
+峷 > shin\ ;
+峭 > shou\ ;
+峪 > yoku\ ;
+峣 > gyou\ ;
+峡 > kyou\ ;
+峋 > shun\ ;
+峉 > gaku\ ;
+峈 > raku\ ;
+峆 > kahu\ ;
+峅 > kura\ ;
+峀 > shuu\ ;
+岼 > yuri\ ;
+岶 > haku\ ;
+岳 > take\ ;
+岫 > shuu\ ;
+岦 > ryuu\ ;
+岝 > saku\ ;
+岑 > shin\ ;
+岌 > kyuu\ ;
+屾 > shin\ ;
+屶 > nata\ ;
+屰 > geki\ ;
+屪 > ryou\ ;
+屐 > geki\ ;
+屌 > chou\ ;
+尿 > nyou\ ;
+尰 > shou\ ;
+尭 > gyou\ ;
+尦 > ryou\ ;
+尥 > ryou\ ;
+尞 > ryou\ ;
+尙 > shou\ ;
+將 > shou\ ;
+尅 > koku\ ;
+寴 > shin\ ;
+寯 > shun\ ;
+寮 > ryou\ ;
+寞 > baku\ ;
+寖 > shin\ ;
+寑 > shin\ ;
+寉 > kaku\ ;
+寅 > tora\ ;
+宸 > shin\ ;
+宷 > shin\ ;
+宫 > kyuu\ ;
+宨 > tewa\ ;
+宙 > chuu\ ;
+宒 > chun\ ;
+宍 > niku\ ;
+宆 > kyou\ ;
+孞 > shin\ ;
+孇 > sawa\ ;
+嬼 > riwa\ ;
+嬸 > shin\ ;
+嬶 > kaka\ ;
+嬧 > shin\ ;
+嬦 > chiu\ ;
+嬥 > chou\ ;
+嬙 > shou\ ;
+嬅 > kuwa\ ;
+嫿 > kaku\ ;
+嫞 > shou\ ;
+嫜 > shau\ ;
+嫖 > hyou\ ;
+嫀 > shin\ ;
+媷 > joku\ ;
+媳 > seki\ ;
+媰 > shiu\ ;
+媝 > shuu\ ;
+媛 > hime\ ;
+媋 > shun\ ;
+媃 > jyuu\ ;
+婳 > kaku\ ;
+婤 > shuu\ ;
+婕 > shou\ ;
+婊 > hyou\ ;
+婈 > ryou\ ;
+婅 > kiku\ ;
+娼 > shou\ ;
+娷 > tsui\ ;
+娖 > saku\ ;
+娕 > saku\ ;
+娀 > shuu\ ;
+姺 > shin\ ;
+姠 > shou\ ;
+姜 > kyou\ ;
+妽 > shin\ ;
+妱 > shou\ ;
+妯 > chuu\ ;
+妕 > chuu\ ;
+妐 > shou\ ;
+奭 > seki\ ;
+奬 > shou\ ;
+奨 > shou\ ;
+奞 > shun\ ;
+奝 > chou\ ;
+夌 > ryou\ ;
+夋 > shun\ ;
+壿 > shun\ ;
+壹 > ichi\ ;
+壳 > kaku\ ;
+壢 > reki\ ;
+壗 > mama\ ;
+壑 > gaku\ ;
+壆 > kaku\ ;
+墼 > keki\ ;
+墻 > shou\ ;
+墹 > mama\ ;
+墫 > shun\ ;
+墣 > haku\ ;
+墜 > tsui\ ;
+墒 > shou\ ;
+墑 > teki\ ;
+墏 > shou\ ;
+墋 > shin\ ;
+墇 > shou\ ;
+墄 > soku\ ;
+墂 > hyou\ ;
+塾 > juku\ ;
+塻 > baku\ ;
+塶 > koku\ ;
+塨 > kyou\ ;
+塥 > kaku\ ;
+塙 > kaku\ ;
+塖 > shou\ ;
+塓 > beki\ ;
+塍 > shou\ ;
+塉 > seki\ ;
+堻 > shin\ ;
+堹 > shou\ ;
+堯 > gyou\ ;
+堮 > gaku\ ;
+堘 > shou\ ;
+埻 > shun\ ;
+埫 > shou\ ;
+埖 > gomi\ ;
+埐 > shin\ ;
+埈 > shun\ ;
+埆 > kaku\ ;
+埁 > shin\ ;
+垳 > gake\ ;
+垬 > kyou\ ;
+垘 > huku\ ;
+坼 > taku\ ;
+坶 > boku\ ;
+坵 > kyou\ ;
+坴 > riku\ ;
+坧 > seki\ ;
+圾 > gyuu\ ;
+圸 > yama\ ;
+圳 > shiu\ ;
+圥 > roku\ ;
+圤 > haku\ ;
+圠 > atsu\ ;
+圀 > koku\ ;
+囻 > koku\ ;
+囶 > koku\ ;
+囯 > koku\ ;
+团 > shuu\ ;
+囟 > shin\ ;
+囚 > shuu\ ;
+嚳 > koku\ ;
+嚫 > shin\ ;
+嚩 > haku\ ;
+嚦 > reki\ ;
+嚠 > ryuu\ ;
+嚝 > kaku\ ;
+嚗 > haku\ ;
+嚐 > shou\ ;
+嚍 > shin\ ;
+嚋 > chuu\ ;
+嚇 > kaku\ ;
+嚄 > kaku\ ;
+嚁 > teki\ ;
+噭 > kyou\ ;
+噩 > kaku\ ;
+噦 > etsu\ ;
+噗 > boku\ ;
+噏 > kyuu\ ;
+噎 > itsu\ ;
+噊 > itsu\ ;
+嘿 > boku\ ;
+嘼 > kyuu\ ;
+嘺 > kyou\ ;
+嘸 > sazo\ ;
+嘯 > shou\ ;
+嘨 > shou\ ;
+嘞 > roku\ ;
+嘚 > toku\ ;
+嘖 > saku\ ;
+嘓 > kaku\ ;
+嘂 > kyou\ ;
+嘁 > sahu\ ;
+嘀 > saku\ ;
+嗽 > ugai\ ;
+嗼 > baku\ ;
+嗝 > kaku\ ;
+嗗 > atsu\ ;
+嗔 > shin\ ;
+嗑 > kahu\ ;
+嗍 > saku\ ;
+嗋 > kyou\ ;
+嗆 > shou\ ;
+嗀 > kaku\ ;
+喲 > yaku\ ;
+喬 > kyou\ ;
+喨 > ryou\ ;
+喢 > tehu\ ;
+喞 > soku\ ;
+喁 > gyou\ ;
+喀 > kaku\ ;
+啾 > shuu\ ;
+啯 > kaku\ ;
+啦 > rahu\ ;
+啢 > ryou\ ;
+啋 > kyou\ ;
+啇 > teki\ ;
+啅 > taku\ ;
+啄 > taku\ ;
+啃 > shuu\ ;
+唽 > seki\ ;
+唼 > sahu\ ;
+唴 > kyou\ ;
+售 > shuu\ ;
+唧 > soku\ ;
+唡 > ryou\ ;
+唚 > shin\ ;
+唙 > teki\ ;
+唒 > shuu\ ;
+唊 > kyou\ ;
+唃 > koku\ ;
+哨 > shou\ ;
+响 > kyou\ ;
+哂 > shin\ ;
+咹 > atsu\ ;
+咶 > kuui\ ;
+咯 > kaku\ ;
+咢 > gaku\ ;
+咠 > shuu\ ;
+咟 > kaku\ ;
+咋 > saku\ ;
+呻 > shin\ ;
+呺 > kyou\ ;
+呹 > itsu\ ;
+呫 > tehu\ ;
+呏 > shou\ ;
+呎 > seki\ ;
+呌 > kyou\ ;
+呄 > koku\ ;
+吿 > koku\ ;
+吵 > byou\ ;
+吲 > shin\ ;
+吣 > shin\ ;
+吢 > shin\ ;
+吜 > chuu\ ;
+叼 > chou\ ;
+叻 > roku\ ;
+叶 > kyou\ ;
+叠 > chou\ ;
+叒 > jaku\ ;
+叉 > mata\ ;
+厰 > shou\ ;
+厯 > reki\ ;
+厤 > reki\ ;
+厝 > saku\ ;
+厒 > kahu\ ;
+压 > atsu\ ;
+厇 > taku\ ;
+卾 > gaku\ ;
+卽 > soku\ ;
+卲 > shou\ ;
+卭 > kyou\ ;
+卡 > sahu\ ;
+卜 > boku\ ;
+卙 > shou\ ;
+卌 > shuu\ ;
+卂 > shin\ ;
+匿 > toku\ ;
+匵 > toku\ ;
+匩 > kyou\ ;
+匧 > kyou\ ;
+匣 > hako\ ;
+匡 > kyou\ ;
+匞 > shou\ ;
+匛 > kyuu\ ;
+匓 > kyou\ ;
+匑 > kyuu\ ;
+匐 > hoku\ ;
+匊 > kiku\ ;
+匉 > hyou\ ;
+匈 > kyou\ ;
+勼 > kyuu\ ;
+勰 > kyou\ ;
+勥 > kyou\ ;
+勣 > seki\ ;
+勠 > riku\ ;
+勒 > roku\ ;
+勀 > koku\ ;
+劻 > kyou\ ;
+劰 > baku\ ;
+劮 > itsu\ ;
+劭 > shou\ ;
+劦 > kyou\ ;
+劜 > atsu\ ;
+劐 > kaku\ ;
+劋 > syou\ ;
+劉 > ryuu\ ;
+劈 > heki\ ;
+劅 > taku\ ;
+劁 > syou\ ;
+剹 > riku\ ;
+副 > fuku\ ;
+剫 > taku\ ;
+剨 > kaku\ ;
+剢 > toku\ ;
+剝 > haku\ ;
+剔 > teki\ ;
+剒 > saku\ ;
+剋 > koku\ ;
+刼 > kyou\ ;
+刦 > kyou\ ;
+刟 > chou\ ;
+刘 > ryuu\ ;
+凸 > deko\ ;
+凶 > kyou\ ;
+凴 > hyou\ ;
+凪 > nagi\ ;
+凧 > tako\ ;
+凙 > taku\ ;
+凋 > chou\ ;
+凉 > ryou\ ;
+凇 > shou\ ;
+冾 > kyou\ ;
+冼 > shou\ ;
+况 > kyou\ ;
+冲 > chuu\ ;
+冰 > hyou\ ;
+冫 > hyou\ ;
+冪 > beki\ ;
+冢 > chou\ ;
+冖 > beki\ ;
+冑 > chuu\ ;
+典 > nori\ ;
+兢 > kyou\ ;
+兟 > shin\ ;
+兓 > shin\ ;
+兏 > chou\ ;
+克 > koku\ ;
+兇 > kyou\ ;
+兆 > chou\ ;
+兂 > shin\ ;
+儵 > shuu\ ;
+儴 > shou\ ;
+儮 > reki\ ;
+儭 > shin\ ;
+儬 > shin\ ;
+儦 > hyou\ ;
+儠 > ryou\ ;
+儔 > chuu\ ;
+儁 > shun\ ;
+僽 > shuu\ ;
+僻 > heki\ ;
+僺 > shou\ ;
+僵 > kyou\ ;
+僰 > hoku\ ;
+僥 > gyou\ ;
+僘 > shou\ ;
+僇 > riku\ ;
+傽 > shou\ ;
+傹 > kyou\ ;
+傶 > soku\ ;
+傱 > shou\ ;
+傕 > kaku\ ;
+偷 > chuu\ ;
+偱 > shun\ ;
+偮 > shuu\ ;
+偆 > shun\ ;
+偅 > shou\ ;
+偁 > shou\ ;
+倰 > ryou\ ;
+倯 > shou\ ;
+倬 > taku\ ;
+倢 > shou\ ;
+倡 > shou\ ;
+倜 > teki\ ;
+倘 > shou\ ;
+倆 > ryou\ ;
+倃 > kyuu\ ;
+倀 > chou\ ;
+俵 > hyou\ ;
+俣 > mata\ ;
+俢 > shuu\ ;
+俠 > kyou\ ;
+俍 > ryou\ ;
+俋 > chuu\ ;
+俈 > koku\ ;
+俇 > kyau\ ;
+俅 > kyuu\ ;
+侺 > shin\ ;
+侶 > tomo\ ;
+侴 > chuu\ ;
+侲 > shin\ ;
+侠 > kyan\ ;
+侜 > chuu\ ;
+侚 > shun\ ;
+侂 > taku\ ;
+侁 > shin\ ;
+佾 > itsu\ ;
+佻 > chou\ ;
+佰 > haku\ ;
+佬 > ryou\ ;
+佫 > kaku\ ;
+佗 > wabi\ ;
+佔 > chin\ ;
+佋 > shou\ ;
+伷 > chuu\ ;
+伩 > shin\ ;
+伔 > shin\ ;
+伋 > kyuu\ ;
+伈 > shin\ ;
+伄 > chou\ ;
+伀 > shou\ ;
+仼 > kyou\ ;
+仢 > haku\ ;
+仗 > tsue\ ;
+仉 > shou\ ;
+仂 > roku\ ;
+亼 > shuu\ ;
+亳 > haku\ ;
+亯 > kyou\ ;
+亮 > ryou\ ;
+亨 > kyou\ ;
+亀 > kame\ ;
+乣 > kyuu\ ;
+也 > nari\ ;
+乇 > taku\ ;
+乆 > kyuu\ ;
+丵 > saku\ ;
+丮 > keki\ ;
+丩 > kyuu\ ;
+两 > ryou\ ;
+丢 > chuu\ ;
+丠 > kyuu\ ;
+丟 > chuu\ ;
+丞 > shou\ ;
+丒 > chuu\ ;
+丑 > ushi\ ;
+丄 > shou\ ;
+〇 > maru\ ;
+迷 > mei\ ;
+念 > nen\ ;
+短 > tan\ ;
+快 > kai\ ;
+迥 > kei\ ;
+知 > chi\ ;
+矜 > kin\ ;
+忙 > bou\ ;
+忘 > bou\ ;
+返 > hen\ ;
+近 > kin\ ;
+迎 > gei\ ;
+忍 > nin\ ;
+迅 > jin\ ;
+辿 > ten\ ;
+瞻 > sen\ ;
+辺 > hen\ ;
+農 > nou\ ;
+辯 > ben\ ;
+循 > jun\ ;
+瞠 > dou\ ;
+從 > juu\ ;
+従 > juu\ ;
+徊 > kai\ ;
+待 > tai\ ;
+径 > kei\ ;
+彩 > sai\ ;
+睨 > gei\ ;
+睡 > sui\ ;
+轟 > gou\ ;
+当 > tou\ ;
+轉 > ten\ ;
+彈 > dan\ ;
+眩 > gen\ ;
+眠 > min\ ;
+弟 > tei\ ;
+弛 > shi\ ;
+弘 > kou\ ;
+輕 > kei\ ;
+県 > ken\ ;
+看 > kan\ ;
+載 > sai\ ;
+弄 > rou\ ;
+省 > sei\ ;
+弁 > ben\ ;
+軽 > kei\ ;
+廻 > kai\ ;
+建 > ken\ ;
+相 > sou\ ;
+盥 > kan\ ;
+監 > kan\ ;
+転 > ten\ ;
+廣 > kou\ ;
+廢 > hai\ ;
+盡 > jin\ ;
+盜 > tou\ ;
+盛 > sei\ ;
+盗 > tou\ ;
+軍 > gun\ ;
+廊 > rou\ ;
+廉 > ren\ ;
+盆 > bon\ ;
+盃 > hai\ ;
+廃 > hai\ ;
+庸 > you\ ;
+康 > kou\ ;
+皰 > hou\ ;
+庚 > kou\ ;
+庖 > hou\ ;
+躓 > chi\ ;
+躇 > cho\ ;
+皇 > kou\ ;
+庄 > sou\ ;
+広 > kou\ ;
+幾 > iku\ ;
+幽 > yuu\ ;
+幼 > you\ ;
+登 > tou\ ;
+干 > kan\ ;
+癌 > gan\ ;
+癇 > kan\ ;
+帽 > bou\ ;
+帶 > tai\ ;
+帯 > tai\ ;
+師 > shi\ ;
+踟 > chi\ ;
+踏 > tou\ ;
+踊 > you\ ;
+市 > shi\ ;
+巾 > kin\ ;
+痴 > chi\ ;
+痩 > sou\ ;
+巧 > kou\ ;
+工 > kou\ ;
+跡 > ato\ ;
+跟 > kon\ ;
+巡 > jun\ ;
+距 > kyo\ ;
+痕 > kon\ ;
+痒 > you\ ;
+嶮 > ken\ ;
+疊 > jou\ ;
+當 > tou\ ;
+走 > sou\ ;
+番 > ban\ ;
+赧 > tan\ ;
+畦 > aze\ ;
+畔 > han\ ;
+界 > kai\ ;
+嵌 > kan\ ;
+甲 > kou\ ;
+崩 > hou\ ;
+用 > you\ ;
+産 > san\ ;
+甘 > kan\ ;
+崗 > kou\ ;
+贅 > zei\ ;
+賽 > sai\ ;
+購 > kou\ ;
+賺 > tan\ ;
+瓶 > bin\ ;
+賣 > bai\ ;
+賢 > ken\ ;
+瓜 > uri\ ;
+資 > shi\ ;
+貼 > ten\ ;
+貸 > tai\ ;
+買 > bai\ ;
+貰 > sei\ ;
+貯 > cho\ ;
+岩 > iwa\ ;
+貧 > bin\ ;
+財 > zai\ ;
+岡 > kou\ ;
+貞 > tei\ ;
+貝 > kai\ ;
+豪 > gou\ ;
+層 > sou\ ;
+象 > zou\ ;
+展 > ten\ ;
+豐 > hou\ ;
+屏 > hei\ ;
+豊 > hou\ ;
+屆 > kai\ ;
+居 > kyo\ ;
+尽 > jin\ ;
+琲 > hai\ ;
+尤 > yuu\ ;
+尠 > sen\ ;
+尚 > nao\ ;
+尖 > sen\ ;
+導 > dou\ ;
+對 > tai\ ;
+尋 > jin\ ;
+尉 > jou\ ;
+專 > sen\ ;
+射 > sha\ ;
+封 > fuu\ ;
+現 > gen\ ;
+寸 > sun\ ;
+寫 > sha\ ;
+珪 > kei\ ;
+寒 > kan\ ;
+容 > you\ ;
+宵 > yoi\ ;
+害 > gai\ ;
+宰 > sai\ ;
+玩 > gan\ ;
+宣 > sen\ ;
+宛 > ate\ ;
+定 > tei\ ;
+官 > kan\ ;
+完 > kan\ ;
+變 > hen\ ;
+讃 > san\ ;
+玄 > gen\ ;
+獻 > ken\ ;
+獸 > juu\ ;
+譲 > jou\ ;
+譫 > sen\ ;
+警 > kei\ ;
+存 > son\ ;
+孔 > kou\ ;
+謹 > kin\ ;
+猶 > yuu\ ;
+嬪 > hin\ ;
+嬢 > jou\ ;
+謝 > sha\ ;
+猜 > sai\ ;
+講 > kou\ ;
+謙 > ken\ ;
+狽 > hai\ ;
+諸 > sho\ ;
+諦 > tei\ ;
+狡 > kou\ ;
+狙 > sho\ ;
+狗 > kou\ ;
+論 > ron\ ;
+請 > sei\ ;
+嫌 > iya\ ;
+談 > dan\ ;
+狃 > juu\ ;
+状 > jou\ ;
+犯 > han\ ;
+犬 > inu\ ;
+誘 > yuu\ ;
+誓 > sei\ ;
+媒 > bai\ ;
+認 > nin\ ;
+誌 > shi\ ;
+誄 > rui\ ;
+該 > gai\ ;
+牲 > sei\ ;
+詮 > sen\ ;
+詩 > shi\ ;
+試 > shi\ ;
+牢 > rou\ ;
+牡 > osu\ ;
+詞 > shi\ ;
+婚 > kon\ ;
+牌 > pai\ ;
+版 > han\ ;
+片 > hen\ ;
+牀 > sou\ ;
+爽 > sou\ ;
+許 > kyo\ ;
+爭 > sou\ ;
+訪 > hou\ ;
+爛 > ran\ ;
+娑 > sha\ ;
+訊 > jin\ ;
+計 > kei\ ;
+言 > gen\ ;
+燻 > kun\ ;
+解 > kai\ ;
+姓 > sei\ ;
+始 > shi\ ;
+姉 > ane\ ;
+燈 > tou\ ;
+燃 > nen\ ;
+觀 > kan\ ;
+覽 > ran\ ;
+観 > kan\ ;
+親 > oya\ ;
+覧 > ran\ ;
+覗 > shi\ ;
+視 > shi\ ;
+妖 > you\ ;
+妊 > nin\ ;
+妄 > bou\ ;
+煽 > sen\ ;
+好 > kou\ ;
+煮 > sha\ ;
+奮 > fun\ ;
+煩 > han\ ;
+襤 > ran\ ;
+奥 > oku\ ;
+奢 > sha\ ;
+襟 > eri\ ;
+套 > tou\ ;
+奏 > sou\ ;
+煎 > sen\ ;
+奉 > hou\ ;
+夾 > kou\ ;
+褸 > rou\ ;
+然 > zen\ ;
+褪 > tai\ ;
+天 > ten\ ;
+大 > tai\ ;
+焚 > fun\ ;
+夕 > yuu\ ;
+褒 > hou\ ;
+変 > hen\ ;
+製 > sei\ ;
+壻 > sei\ ;
+売 > bai\ ;
+声 > koe\ ;
+壯 > sou\ ;
+士 > shi\ ;
+裝 > sou\ ;
+壞 > kai\ ;
+裕 > yuu\ ;
+裏 > ura\ ;
+壊 > kai\ ;
+壇 > dan\ ;
+装 > sou\ ;
+裁 > sai\ ;
+点 > ten\ ;
+袢 > han\ ;
+増 > zou\ ;
+炊 > sui\ ;
+袂 > bei\ ;
+災 > sai\ ;
+灰 > hai\ ;
+衡 > kou\ ;
+塔 > tou\ ;
+灌 > kan\ ;
+血 > chi\ ;
+塀 > hei\ ;
+蠶 > san\ ;
+報 > hou\ ;
+堪 > kan\ ;
+瀕 > hin\ ;
+堆 > tai\ ;
+堅 > ken\ ;
+堂 > dou\ ;
+蟻 > ari\ ;
+濺 > sen\ ;
+濱 > hin\ ;
+濟 > sai\ ;
+濘 > nei\ ;
+埋 > mai\ ;
+濃 > nou\ ;
+澹 > tan\ ;
+螢 > kei\ ;
+垢 > aka\ ;
+龕 > gan\ ;
+融 > yuu\ ;
+垂 > sui\ ;
+蝿 > hae\ ;
+潰 > kai\ ;
+坦 > tan\ ;
+齡 > rei\ ;
+潜 > sen\ ;
+蝙 > hen\ ;
+齎 > sei\ ;
+齊 > sei\ ;
+蝋 > rou\ ;
+坊 > bou\ ;
+均 > kin\ ;
+蜻 > sei\ ;
+漸 > zen\ ;
+地 > chi\ ;
+漬 > shi\ ;
+在 > zai\ ;
+漢 > kan\ ;
+蜘 > chi\ ;
+團 > dan\ ;
+漕 > sou\ ;
+漏 > rou\ ;
+圏 > ken\ ;
+滿 > man\ ;
+困 > kon\ ;
+滯 > tai\ ;
+黨 > tou\ ;
+団 > dan\ ;
+點 > ten\ ;
+回 > kai\ ;
+蛛 > shu\ ;
+四 > yon\ ;
+蛉 > rei\ ;
+蛆 > sho\ ;
+麻 > asa\ ;
+溶 > you\ ;
+嚴 > gen\ ;
+溪 > kei\ ;
+麗 > rei\ ;
+準 > jun\ ;
+満 > man\ ;
+湾 > wan\ ;
+鹸 > ken\ ;
+噪 > sou\ ;
+湧 > yuu\ ;
+號 > gou\ ;
+虜 > ryo\ ;
+虚 > kyo\ ;
+噛 > gou\ ;
+處 > sho\ ;
+噌 > sou\ ;
+嘲 > tou\ ;
+蘭 > ran\ ;
+渦 > uzu\ ;
+渠 > kyo\ ;
+減 > gen\ ;
+嘘 > uso\ ;
+済 > sai\ ;
+嘆 > tan\ ;
+清 > sei\ ;
+蘂 > zui\ ;
+添 > ten\ ;
+淺 > sen\ ;
+混 > kon\ ;
+藩 > han\ ;
+嗣 > shi\ ;
+淡 > tan\ ;
+藝 > gei\ ;
+嗜 > shi\ ;
+淋 > rin\ ;
+藉 > sha\ ;
+鷄 > kei\ ;
+液 > eki\ ;
+薯 > sho\ ;
+喰 > kuu\ ;
+涯 > gai\ ;
+薮 > sou\ ;
+單 > tan\ ;
+薦 > sen\ ;
+喧 > ken\ ;
+喚 > kan\ ;
+喘 > zen\ ;
+涌 > yuu\ ;
+善 > zen\ ;
+啼 > tei\ ;
+海 > umi\ ;
+浪 > rou\ ;
+蕩 > tou\ ;
+啣 > kan\ ;
+問 > mon\ ;
+浅 > sen\ ;
+浄 > jou\ ;
+蔽 > hei\ ;
+唸 > ten\ ;
+蔵 > sou\ ;
+洗 > sen\ ;
+洒 > sei\ ;
+唐 > tou\ ;
+洋 > you\ ;
+鳴 > mei\ ;
+泡 > awa\ ;
+法 > hou\ ;
+品 > hin\ ;
+蒼 > sou\ ;
+蒸 > jou\ ;
+咬 > kou\ ;
+蒟 > kon\ ;
+蒙 > mou\ ;
+沖 > oki\ ;
+蒔 > shi\ ;
+沌 > ton\ ;
+命 > mei\ ;
+味 > aji\ ;
+葬 > sou\ ;
+董 > tou\ ;
+池 > ike\ ;
+呟 > gen\ ;
+汗 > ase\ ;
+呑 > don\ ;
+呆 > bou\ ;
+呂 > ryo\ ;
+鰺 > aji\ ;
+吻 > fun\ ;
+吹 > sui\ ;
+萬 > man\ ;
+含 > gan\ ;
+吝 > rin\ ;
+君 > kun\ ;
+向 > kou\ ;
+氏 > uji\ ;
+萌 > hou\ ;
+同 > dou\ ;
+氈 > sen\ ;
+合 > gou\ ;
+萄 > tou\ ;
+司 > shi\ ;
+史 > shi\ ;
+台 > dai\ ;
+菫 > kin\ ;
+毫 > kou\ ;
+菩 > hai\ ;
+叩 > kou\ ;
+句 > kou\ ;
+毎 > mai\ ;
+反 > han\ ;
+參 > san\ ;
+参 > san\ ;
+去 > kyo\ ;
+段 > dan\ ;
+厳 > gen\ ;
+鮮 > sen\ ;
+厭 > iya\ ;
+厚 > kou\ ;
+殘 > zan\ ;
+厘 > rin\ ;
+残 > zan\ ;
+殊 > shu\ ;
+殆 > tai\ ;
+卿 > kei\ ;
+死 > shi\ ;
+卷 > kan\ ;
+歳 > sai\ ;
+此 > shi\ ;
+正 > sei\ ;
+止 > shi\ ;
+歡 > kan\ ;
+占 > sen\ ;
+歔 > kyo\ ;
+荒 > kou\ ;
+歎 > tan\ ;
+歌 > uta\ ;
+半 > han\ ;
+午 > uma\ ;
+千 > chi\ ;
+十 > too\ ;
+鬼 > oni\ ;
+茶 > cha\ ;
+茫 > bou\ ;
+鬢 > hin\ ;
+匚 > hou\ ;
+權 > ken\ ;
+匆 > sou\ ;
+欅 > kyo\ ;
+包 > hou\ ;
+勾 > kou\ ;
+勸 > kan\ ;
+勧 > kan\ ;
+勤 > gon\ ;
+勞 > rou\ ;
+苗 > nae\ ;
+勘 > kan\ ;
+體 > tei\ ;
+動 > dou\ ;
+勉 > ben\ ;
+勇 > yuu\ ;
+髄 > zui\ ;
+骸 > kai\ ;
+芸 > gei\ ;
+効 > kou\ ;
+芳 > hou\ ;
+労 > rou\ ;
+励 > rei\ ;
+劫 > gou\ ;
+檢 > ken\ ;
+功 > kou\ ;
+劍 > ken\ ;
+檀 > tan\ ;
+艸 > sou\ ;
+創 > sou\ ;
+色 > iro\ ;
+驢 > ryo\ ;
+剛 > gou\ ;
+驗 > ken\ ;
+剖 > bou\ ;
+前 > mae\ ;
+剃 > tei\ ;
+騷 > sou\ ;
+制 > sei\ ;
+到 > tou\ ;
+般 > han\ ;
+航 > kou\ ;
+権 > ken\ ;
+判 > ban\ ;
+樣 > you\ ;
+騙 > hen\ ;
+験 > ken\ ;
+騒 > sou\ ;
+樓 > rou\ ;
+刑 > kei\ ;
+刊 > kan\ ;
+興 > kou\ ;
+分 > bun\ ;
+刀 > tou\ ;
+槽 > sou\ ;
+臼 > usu\ ;
+函 > kan\ ;
+臺 > tai\ ;
+致 > chi\ ;
+至 > shi\ ;
+自 > shi\ ;
+臨 > rin\ ;
+処 > sho\ ;
+凡 > bon\ ;
+臟 > zou\ ;
+駛 > shi\ ;
+様 > you\ ;
+凍 > tou\ ;
+構 > kou\ ;
+駅 > eki\ ;
+凄 > sei\ ;
+膿 > umi\ ;
+膽 > tan\ ;
+榻 > tou\ ;
+冷 > rei\ ;
+馳 > chi\ ;
+膳 > zen\ ;
+馭 > gyo\ ;
+馬 > uma\ ;
+写 > sha\ ;
+冗 > jou\ ;
+冒 > bou\ ;
+再 > sai\ ;
+概 > gai\ ;
+楼 > rou\ ;
+兼 > ken\ ;
+腮 > sai\ ;
+公 > kou\ ;
+全 > zen\ ;
+腦 > nou\ ;
+党 > tou\ ;
+腕 > ude\ ;
+饒 > jou\ ;
+楓 > fuu\ ;
+免 > men\ ;
+腋 > eki\ ;
+饅 > man\ ;
+先 > sen\ ;
+充 > juu\ ;
+兄 > ani\ ;
+脳 > nou\ ;
+優 > yuu\ ;
+検 > ken\ ;
+餐 > san\ ;
+養 > you\ ;
+億 > oku\ ;
+椀 > wan\ ;
+飽 > hou\ ;
+飼 > shi\ ;
+棺 > kan\ ;
+飴 > ame\ ;
+胴 > dou\ ;
+棲 > sei\ ;
+僧 > sou\ ;
+胞 > hou\ ;
+飜 > hon\ ;
+棒 > bou\ ;
+胎 > tai\ ;
+像 > zou\ ;
+背 > sei\ ;
+働 > dou\ ;
+胆 > tan\ ;
+僅 > kin\ ;
+傾 > kei\ ;
+育 > iku\ ;
+傳 > den\ ;
+械 > kai\ ;
+肯 > kou\ ;
+梯 > tei\ ;
+催 > sai\ ;
+風 > fuu\ ;
+肥 > koe\ ;
+條 > jou\ ;
+肆 > shi\ ;
+梅 > ume\ ;
+桶 > oke\ ;
+偶 > guu\ ;
+偵 > tei\ ;
+聲 > sei\ ;
+顯 > ken\ ;
+顫 > sen\ ;
+桧 > kai\ ;
+健 > ken\ ;
+類 > rui\ ;
+桟 > san\ ;
+聞 > bun\ ;
+顛 > ten\ ;
+停 > tei\ ;
+願 > gan\ ;
+聖 > sei\ ;
+顕 > ken\ ;
+顔 > kao\ ;
+顏 > gan\ ;
+顎 > ago\ ;
+題 > dai\ ;
+桂 > kei\ ;
+耽 > tan\ ;
+頼 > rai\ ;
+頻 > hin\ ;
+耻 > chi\ ;
+倹 > ken\ ;
+頭 > tou\ ;
+倦 > ken\ ;
+校 > kou\ ;
+頚 > kei\ ;
+耕 > kou\ ;
+頓 > ton\ ;
+栓 > sen\ ;
+倒 > tou\ ;
+耐 > tai\ ;
+倉 > sou\ ;
+順 > jun\ ;
+項 > kou\ ;
+考 > kou\ ;
+老 > rou\ ;
+翻 > hon\ ;
+俺 > ore\ ;
+柴 > sai\ ;
+染 > sen\ ;
+某 > bou\ ;
+羹 > kou\ ;
+羮 > kou\ ;
+侯 > kou\ ;
+侭 > jin\ ;
+羨 > sen\ ;
+群 > gun\ ;
+枝 > eda\ ;
+枚 > mai\ ;
+例 > rei\ ;
+來 > rai\ ;
+板 > ita\ ;
+使 > shi\ ;
+杵 > sho\ ;
+併 > hei\ ;
+置 > chi\ ;
+来 > rai\ ;
+面 > men\ ;
+条 > jou\ ;
+靜 > sei\ ;
+静 > sei\ ;
+靖 > sei\ ;
+何 > nan\ ;
+体 > tei\ ;
+罐 > kan\ ;
+材 > zai\ ;
+罎 > tan\ ;
+住 > juu\ ;
+低 > tei\ ;
+靈 > rei\ ;
+佇 > cho\ ;
+佃 > ten\ ;
+伺 > shi\ ;
+朱 > aka\ ;
+朧 > rou\ ;
+朦 > bou\ ;
+朝 > asa\ ;
+伝 > ten\ ;
+望 > bou\ ;
+会 > kai\ ;
+朗 > rou\ ;
+霊 > rei\ ;
+朋 > hou\ ;
+有 > yuu\ ;
+會 > kai\ ;
+最 > sai\ ;
+替 > tai\ ;
+曾 > sou\ ;
+電 > den\ ;
+曼 > ban\ ;
+任 > nin\ ;
+零 > rei\ ;
+書 > sho\ ;
+件 > ken\ ;
+更 > kou\ ;
+雨 > ame\ ;
+難 > nan\ ;
+令 > rei\ ;
+曜 > you\ ;
+雖 > sui\ ;
+仕 > shi\ ;
+仔 > shi\ ;
+介 > kai\ ;
+今 > kon\ ;
+雄 > osu\ ;
+仁 > nin\ ;
+暴 > bou\ ;
+亭 > tei\ ;
+險 > ken\ ;
+暫 > zan\ ;
+隨 > zui\ ;
+交 > kou\ ;
+亡 > bou\ ;
+際 > sai\ ;
+亙 > kou\ ;
+亘 > sen\ ;
+暖 > dan\ ;
+井 > sei\ ;
+纒 > ten\ ;
+暑 > sho\ ;
+随 > zui\ ;
+纏 > ten\ ;
+階 > kai\ ;
+隊 > tai\ ;
+隈 > wai\ ;
+争 > sou\ ;
+纂 > san\ ;
+亂 > ran\ ;
+陽 > you\ ;
+繼 > kei\ ;
+険 > ken\ ;
+智 > chi\ ;
+陶 > tou\ ;
+晴 > sei\ ;
+繰 > sou\ ;
+乱 > ran\ ;
+景 > kei\ ;
+繪 > kai\ ;
+繩 > jou\ ;
+晩 > ban\ ;
+陥 > kan\ ;
+陣 > jin\ ;
+繞 > jou\ ;
+乘 > jou\ ;
+繕 > zen\ ;
+乗 > jou\ ;
+織 > ori\ ;
+限 > gen\ ;
+降 > kou\ ;
+乏 > bou\ ;
+繁 > han\ ;
+總 > sou\ ;
+防 > bou\ ;
+縱 > juu\ ;
+縫 > hou\ ;
+阪 > han\ ;
+並 > hei\ ;
+丘 > oka\ ;
+且 > sha\ ;
+易 > eki\ ;
+明 > mei\ ;
+上 > jou\ ;
+昆 > kon\ ;
+昂 > kou\ ;
+練 > ren\ ;
+緬 > men\ ;
+旬 > jun\ ;
+緩 > kan\ ;
+早 > sou\ ;
+編 > hen\ ;
+旦 > tan\ ;
+締 > tei\ ;
+關 > kan\ ;
+線 > sen\ ;
+闘 > tou\ ;
+総 > sou\ ;
+旋 > sen\ ;
+緊 > kin\ ;
+方 > hou\ ;
+斷 > dan\ ;
+網 > ami\ ;
+斯 > shi\ ;
+断 > dan\ ;
+斬 > zan\ ;
+閤 > kou\ ;
+斜 > sha\ ;
+継 > kei\ ;
+經 > kei\ ;
+開 > kai\ ;
+閉 > hei\ ;
+斉 > sei\ ;
+文 > bun\ ;
+閃 > sen\ ;
+斃 > hei\ ;
+門 > mon\ ;
+長 > osa\ ;
+數 > suu\ ;
+整 > sei\ ;
+絲 > shi\ ;
+統 > tou\ ;
+数 > suu\ ;
+敬 > kei\ ;
+絨 > juu\ ;
+散 > san\ ;
+敢 > kan\ ;
+絞 > kou\ ;
+敗 > hai\ ;
+敏 > bin\ ;
+效 > kou\ ;
+故 > yue\ ;
+放 > hou\ ;
+紺 > kon\ ;
+改 > kai\ ;
+細 > sei\ ;
+累 > rui\ ;
+支 > shi\ ;
+紛 > fun\ ;
+純 > jun\ ;
+納 > tou\ ;
+紋 > mon\ ;
+糸 > ito\ ;
+擧 > kyo\ ;
+擡 > tai\ ;
+糞 > fun\ ;
+糖 > tou\ ;
+擔 > tan\ ;
+精 > sei\ ;
+粟 > awa\ ;
+粗 > ara\ ;
+鑵 > kan\ ;
+籖 > sen\ ;
+鑒 > kan\ ;
+籐 > tou\ ;
+携 > kei\ ;
+簡 > kan\ ;
+搜 > sou\ ;
+搖 > you\ ;
+損 > son\ ;
+握 > aku\ ;
+換 > kan\ ;
+揚 > you\ ;
+提 > tei\ ;
+揉 > juu\ ;
+範 > han\ ;
+揃 > sen\ ;
+掻 > sou\ ;
+掲 > kei\ ;
+箪 > tan\ ;
+推 > sui\ ;
+控 > kou\ ;
+掣 > sei\ ;
+探 > tan\ ;
+採 > sai\ ;
+算 > san\ ;
+排 > hai\ ;
+箋 > sen\ ;
+掃 > sou\ ;
+捻 > nen\ ;
+捲 > ken\ ;
+据 > kyo\ ;
+捨 > sha\ ;
+筧 > ken\ ;
+鍛 > tan\ ;
+捜 > sou\ ;
+挿 > sou\ ;
+挽 > ban\ ;
+第 > dai\ ;
+笥 > shi\ ;
+錢 > sen\ ;
+笛 > fue\ ;
+挙 > kyo\ ;
+笄 > kei\ ;
+竿 > sao\ ;
+拾 > juu\ ;
+拵 > son\ ;
+拠 > kyo\ ;
+竟 > kei\ ;
+竝 > hei\ ;
+拝 > hai\ ;
+拜 > hai\ ;
+拘 > kou\ ;
+担 > tan\ ;
+竃 > sou\ ;
+抵 > tei\ ;
+抱 > hou\ ;
+銭 > sen\ ;
+銜 > kan\ ;
+抛 > hou\ ;
+銘 > mei\ ;
+折 > ori\ ;
+抗 > kou\ ;
+投 > tou\ ;
+抓 > sou\ ;
+銅 > dou\ ;
+穿 > sen\ ;
+扱 > sou\ ;
+扮 > fun\ ;
+穗 > sui\ ;
+才 > sai\ ;
+穉 > chi\ ;
+稿 > kou\ ;
+稽 > kei\ ;
+稻 > tou\ ;
+戻 > rei\ ;
+戴 > tai\ ;
+稲 > ine\ ;
+戰 > sen\ ;
+稚 > chi\ ;
+或 > aru\ ;
+戒 > kai\ ;
+成 > sei\ ;
+鈍 > don\ ;
+税 > zei\ ;
+戌 > inu\ ;
+戀 > ren\ ;
+懸 > ken\ ;
+懷 > kai\ ;
+金 > kin\ ;
+重 > omo\ ;
+秋 > aki\ ;
+應 > you\ ;
+采 > sai\ ;
+懃 > kin\ ;
+禽 > kin\ ;
+憺 > tan\ ;
+憶 > oku\ ;
+禰 > dei\ ;
+禮 > rei\ ;
+憬 > kei\ ;
+憧 > dou\ ;
+憤 > fun\ ;
+醒 > sei\ ;
+憐 > ren\ ;
+憎 > zou\ ;
+醉 > sui\ ;
+禅 > zen\ ;
+憂 > yuu\ ;
+禁 > kin\ ;
+酸 > san\ ;
+祷 > tou\ ;
+慮 > ryo\ ;
+慨 > gai\ ;
+慥 > zou\ ;
+慣 > kan\ ;
+慢 > man\ ;
+慘 > san\ ;
+酔 > sui\ ;
+配 > hai\ ;
+慌 > kou\ ;
+慊 > ken\ ;
+礼 > rei\ ;
+示 > shi\ ;
+感 > kan\ ;
+礙 > gai\ ;
+郵 > yuu\ ;
+想 > sou\ ;
+惱 > nou\ ;
+惨 > san\ ;
+惠 > kei\ ;
+磐 > iwa\ ;
+郎 > rou\ ;
+郊 > kou\ ;
+情 > jou\ ;
+悼 > tou\ ;
+悶 > mon\ ;
+悴 > sui\ ;
+患 > kan\ ;
+悠 > yuu\ ;
+碗 > wan\ ;
+悖 > hai\ ;
+悔 > kai\ ;
+邊 > hen\ ;
+還 > kan\ ;
+邂 > kai\ ;
+選 > sen\ ;
+遲 > chi\ ;
+恰 > kou\ ;
+遮 > sha\ ;
+遭 > sou\ ;
+息 > iki\ ;
+硬 > kou\ ;
+恨 > kon\ ;
+遥 > you\ ;
+遣 > ken\ ;
+遠 > too\ ;
+遜 > son\ ;
+遙 > you\ ;
+遑 > kou\ ;
+遍 > hen\ ;
+恍 > kou\ ;
+遊 > yuu\ ;
+恋 > koi\ ;
+遇 > guu\ ;
+遅 > chi\ ;
+遂 > sui\ ;
+遁 > ton\ ;
+怪 > kai\ ;
+性 > sei\ ;
+砥 > shi\ ;
+連 > ren\ ;
+逢 > hou\ ;
+造 > zou\ ;
+怠 > tai\ ;
+逞 > tei\ ;
+逝 > sei\ ;
+思 > shi\ ;
+這 > gen\ ;
+砕 > sai\ ;
+研 > ken\ ;
+透 > tou\ ;
+逅 > kou\ ;
+逃 > tou\ ;
+送 > sou\ ;
+退 > tai\ ;
+忿 > fun\ ;
+龤 > kai\ ;
+龡 > sui\ ;
+龘 > tou\ ;
+龗 > rei\ ;
+龖 > tou\ ;
+龒 > ryu\ ;
+龐 > hou\ ;
+齽 > kin\ ;
+齷 > aku\ ;
+齶 > ago\ ;
+齵 > gou\ ;
+齳 > gun\ ;
+齯 > gei\ ;
+齭 > sho\ ;
+齬 > gyo\ ;
+齩 > gou\ ;
+齞 > gen\ ;
+齝 > chi\ ;
+齘 > kai\ ;
+齗 > kin\ ;
+齒 > shi\ ;
+齏 > sei\ ;
+齋 > sai\ ;
+齄 > sha\ ;
+齁 > kou\ ;
+鼺 > rui\ ;
+鼷 > kei\ ;
+鼲 > kon\ ;
+鼱 > sei\ ;
+鼪 > sei\ ;
+鼢 > fun\ ;
+鼡 > sho\ ;
+鼟 > tou\ ;
+鼛 > kou\ ;
+鼙 > hei\ ;
+鼗 > tou\ ;
+鼖 > fun\ ;
+鼕 > tou\ ;
+鼒 > shi\ ;
+鼑 > tei\ ;
+鼐 > dai\ ;
+鼇 > gou\ ;
+鼅 > chi\ ;
+鼃 > wai\ ;
+黿 > gen\ ;
+黽 > bou\ ;
+黹 > chi\ ;
+黶 > aza\ ;
+黵 > tan\ ;
+黲 > san\ ;
+黱 > tai\ ;
+黮 > tan\ ;
+黬 > kan\ ;
+黧 > rei\ ;
+黝 > yuu\ ;
+黕 > tan\ ;
+黔 > ken\ ;
+黏 > nen\ ;
+黎 > rei\ ;
+黌 > kou\ ;
+黋 > kou\ ;
+黈 > tou\ ;
+黆 > kou\ ;
+黃 > kou\ ;
+麺 > men\ ;
+麵 > ben\ ;
+麳 > rai\ ;
+麰 > bou\ ;
+麮 > kyo\ ;
+麭 > hou\ ;
+麪 > men\ ;
+麟 > rin\ ;
+麝 > sha\ ;
+麛 > bei\ ;
+麖 > kei\ ;
+麕 > kin\ ;
+麑 > gei\ ;
+麏 > kin\ ;
+麈 > shu\ ;
+麇 > kin\ ;
+麅 > hou\ ;
+麃 > hou\ ;
+麀 > yuu\ ;
+鹼 > ken\ ;
+鹻 > kan\ ;
+鹹 > kan\ ;
+鸰 > rei\ ;
+鸞 > ran\ ;
+鸛 > kan\ ;
+鸎 > you\ ;
+鸇 > sen\ ;
+鸂 > kei\ ;
+鷴 > kan\ ;
+鷳 > kan\ ;
+鷭 > ban\ ;
+鷥 > shi\ ;
+鷠 > gyo\ ;
+鷞 > sou\ ;
+鷙 > shi\ ;
+鷕 > you\ ;
+鷔 > gou\ ;
+鷓 > sha\ ;
+鷏 > ten\ ;
+鷉 > tei\ ;
+鷇 > kou\ ;
+鷆 > ten\ ;
+鷂 > you\ ;
+鶿 > shi\ ;
+鶼 > ken\ ;
+鶵 > suu\ ;
+鶱 > ken\ ;
+鶬 > sou\ ;
+鶤 > kon\ ;
+鶗 > tei\ ;
+鶊 > kou\ ;
+鶇 > tou\ ;
+鶆 > rai\ ;
+鶄 > sei\ ;
+鵾 > kon\ ;
+鵼 > kou\ ;
+鵻 > sui\ ;
+鵬 > hou\ ;
+鵫 > tou\ ;
+鵧 > hei\ ;
+鵣 > rai\ ;
+鵑 > ken\ ;
+鵊 > kou\ ;
+鵈 > ten\ ;
+鵄 > shi\ ;
+鵁 > kou\ ;
+鴿 > kou\ ;
+鴾 > bou\ ;
+鴻 > kou\ ;
+鴺 > tei\ ;
+鴴 > kou\ ;
+鴲 > shi\ ;
+鴦 > you\ ;
+鴟 > shi\ ;
+鴞 > you\ ;
+鴜 > shi\ ;
+鴘 > hen\ ;
+鴒 > rei\ ;
+鴋 > hou\ ;
+鴈 > gan\ ;
+鳹 > ken\ ;
+鳷 > shi\ ;
+鳳 > hou\ ;
+鳲 > shi\ ;
+鳰 > nio\ ;
+鳯 > hou\ ;
+鳮 > kei\ ;
+鳫 > gan\ ;
+鲹 > sou\ ;
+鲙 > kai\ ;
+鲉 > yuu\ ;
+鱻 > sen\ ;
+鱮 > sho\ ;
+鱤 > kan\ ;
+鱣 > tan\ ;
+鱠 > kai\ ;
+鱟 > kou\ ;
+鱞 > kan\ ;
+鱝 > fun\ ;
+鱛 > eso\ ;
+鱖 > kei\ ;
+鱔 > sen\ ;
+鱓 > sen\ ;
+鱇 > kou\ ;
+鱄 > sen\ ;
+鰶 > sei\ ;
+鰵 > bin\ ;
+鰲 > gou\ ;
+鰱 > ren\ ;
+鰪 > kou\ ;
+鰩 > you\ ;
+鰧 > tou\ ;
+鰦 > shi\ ;
+鰥 > kan\ ;
+鰣 > shi\ ;
+鰜 > ken\ ;
+鰕 > ebi\ ;
+鰔 > kan\ ;
+鰓 > era\ ;
+鰑 > you\ ;
+鰃 > wai\ ;
+鰁 > sen\ ;
+鰀 > kan\ ;
+鯿 > hen\ ;
+鯺 > sho\ ;
+鯹 > sei\ ;
+鯸 > kou\ ;
+鯷 > tei\ ;
+鯵 > aji\ ;
+鯯 > sei\ ;
+鯫 > sou\ ;
+鯤 > kon\ ;
+鯢 > gei\ ;
+鯟 > tou\ ;
+鯛 > tai\ ;
+鯘 > dai\ ;
+鯉 > koi\ ;
+鯈 > yuu\ ;
+鯇 > kan\ ;
+鯁 > kou\ ;
+鯀 > kon\ ;
+鮾 > dai\ ;
+鮸 > ben\ ;
+鮷 > tei\ ;
+鮰 > kai\ ;
+鮩 > hou\ ;
+鮦 > tou\ ;
+鮔 > kyo\ ;
+鮐 > tai\ ;
+鮏 > sei\ ;
+鮎 > ayu\ ;
+鮋 > yuu\ ;
+鮆 > sei\ ;
+魿 > rei\ ;
+魷 > yuu\ ;
+魵 > fun\ ;
+魴 > hou\ ;
+魳 > shi\ ;
+魭 > gen\ ;
+魬 > han\ ;
+魪 > kai\ ;
+魨 > ton\ ;
+魥 > gou\ ;
+魣 > sho\ ;
+魞 > eri\ ;
+魜 > jin\ ;
+魛 > tou\ ;
+魖 > kyo\ ;
+魑 > chi\ ;
+魍 > bou\ ;
+魋 > tai\ ;
+鬷 > sou\ ;
+鬵 > sen\ ;
+鬳 > ken\ ;
+鬭 > tou\ ;
+鬬 > tou\ ;
+鬫 > kan\ ;
+鬪 > tou\ ;
+鬨 > kou\ ;
+鬧 > tou\ ;
+鬦 > tou\ ;
+鬥 > tou\ ;
+鬟 > kan\ ;
+鬜 > kan\ ;
+鬙 > sou\ ;
+鬖 > san\ ;
+鬋 > sen\ ;
+鬉 > sou\ ;
+鬈 > ken\ ;
+鬅 > hou\ ;
+鬄 > tei\ ;
+鬃 > sou\ ;
+鬂 > bin\ ;
+鬀 > tei\ ;
+髻 > kei\ ;
+髳 > bou\ ;
+髱 > hou\ ;
+髯 > zen\ ;
+髩 > bin\ ;
+髧 > tan\ ;
+髦 > bou\ ;
+髥 > zen\ ;
+髣 > hou\ ;
+髢 > tei\ ;
+髠 > kon\ ;
+髞 > sou\ ;
+髛 > kou\ ;
+髙 > kou\ ;
+髖 > kan\ ;
+髕 > hin\ ;
+髓 > zui\ ;
+髒 > sou\ ;
+髐 > kou\ ;
+髏 > rou\ ;
+髈 > hou\ ;
+髁 > kai\ ;
+骿 > hen\ ;
+骾 > kou\ ;
+骹 > kou\ ;
+骶 > tei\ ;
+骵 > tai\ ;
+骴 > shi\ ;
+骰 > tou\ ;
+骯 > kou\ ;
+骔 > sou\ ;
+驩 > kan\ ;
+驤 > jou\ ;
+驛 > eki\ ;
+驔 > ten\ ;
+驒 > tan\ ;
+驎 > rin\ ;
+驇 > chi\ ;
+驄 > sou\ ;
+驂 > san\ ;
+驁 > gou\ ;
+騺 > chi\ ;
+騸 > sen\ ;
+騵 > gen\ ;
+騰 > tou\ ;
+騫 > ken\ ;
+騨 > tan\ ;
+騣 > sou\ ;
+騠 > tei\ ;
+騗 > hen\ ;
+騐 > ken\ ;
+騌 > sou\ ;
+騋 > rai\ ;
+騈 > hen\ ;
+騅 > sui\ ;
+騃 > gai\ ;
+騂 > sei\ ;
+騁 > tei\ ;
+駾 > tai\ ;
+駽 > ken\ ;
+駻 > kan\ ;
+駹 > bou\ ;
+駴 > kai\ ;
+駭 > kai\ ;
+駫 > kei\ ;
+駧 > tou\ ;
+駢 > hen\ ;
+駟 > shi\ ;
+駚 > you\ ;
+駘 > tai\ ;
+駔 > sou\ ;
+駉 > kei\ ;
+馼 > bun\ ;
+馺 > sou\ ;
+馵 > shu\ ;
+馨 > kei\ ;
+馦 > ken\ ;
+馓 > san\ ;
+饞 > san\ ;
+饛 > bou\ ;
+饙 > fun\ ;
+饘 > sen\ ;
+饕 > tou\ ;
+饔 > you\ ;
+饎 > shi\ ;
+饍 > zen\ ;
+饌 > sen\ ;
+饊 > san\ ;
+饉 > kin\ ;
+饁 > you\ ;
+饀 > tou\ ;
+餻 > kou\ ;
+餹 > tou\ ;
+餵 > dai\ ;
+餴 > fun\ ;
+餳 > tou\ ;
+餱 > kou\ ;
+餧 > dai\ ;
+餤 > tan\ ;
+餢 > hou\ ;
+餠 > hei\ ;
+餛 > kon\ ;
+餚 > kou\ ;
+餖 > tou\ ;
+餒 > dai\ ;
+餌 > esa\ ;
+餈 > shi\ ;
+餃 > kou\ ;
+餂 > ten\ ;
+餁 > jin\ ;
+飳 > shu\ ;
+飰 > han\ ;
+飪 > jin\ ;
+飩 > ton\ ;
+飧 > son\ ;
+飦 > ken\ ;
+飣 > tei\ ;
+飡 > san\ ;
+飌 > fuu\ ;
+颿 > han\ ;
+颻 > you\ ;
+颺 > you\ ;
+颸 > shi\ ;
+颴 > sen\ ;
+颱 > tai\ ;
+颭 > sen\ ;
+顴 > kan\ ;
+顰 > hin\ ;
+顪 > kai\ ;
+顥 > kou\ ;
+顢 > ban\ ;
+顚 > ten\ ;
+顙 > sou\ ;
+顓 > sen\ ;
+顑 > kan\ ;
+顋 > sai\ ;
+顇 > sui\ ;
+顄 > kan\ ;
+頾 > shi\ ;
+頽 > tai\ ;
+頹 > tai\ ;
+頷 > kan\ ;
+頳 > tei\ ;
+頲 > tei\ ;
+頯 > kai\ ;
+頮 > kai\ ;
+頦 > kai\ ;
+頠 > gai\ ;
+頜 > kan\ ;
+頖 > han\ ;
+頒 > han\ ;
+頏 > kou\ ;
+須 > shu\ ;
+頇 > kan\ ;
+韸 > hou\ ;
+韴 > sou\ ;
+韲 > sei\ ;
+韱 > sen\ ;
+韯 > sen\ ;
+韝 > kou\ ;
+韜 > tou\ ;
+韛 > hai\ ;
+韓 > kan\ ;
+韐 > kou\ ;
+韎 > bai\ ;
+韌 > jin\ ;
+韊 > ran\ ;
+韉 > sen\ ;
+韆 > sen\ ;
+韅 > ken\ ;
+韄 > aku\ ;
+鞺 > tou\ ;
+鞶 > han\ ;
+鞳 > tou\ ;
+鞲 > kou\ ;
+鞱 > tou\ ;
+鞮 > tei\ ;
+鞬 > ken\ ;
+鞣 > juu\ ;
+鞞 > hei\ ;
+鞜 > tou\ ;
+鞚 > kou\ ;
+鞙 > ken\ ;
+鞗 > tou\ ;
+鞖 > sai\ ;
+鞕 > gou\ ;
+鞉 > tou\ ;
+鞀 > tou\ ;
+靽 > ban\ ;
+靼 > tan\ ;
+靸 > sou\ ;
+靳 > kin\ ;
+靱 > jin\ ;
+靭 > jin\ ;
+靫 > sai\ ;
+靪 > tei\ ;
+靧 > kai\ ;
+靦 > ten\ ;
+靤 > hou\ ;
+靣 > men\ ;
+靠 > kou\ ;
+靛 > ten\ ;
+靚 > sei\ ;
+靗 > tei\ ;
+靑 > sei\ ;
+靊 > fuu\ ;
+靆 > tai\ ;
+靁 > rai\ ;
+霾 > bai\ ;
+霽 > sei\ ;
+霝 > rei\ ;
+霛 > rei\ ;
+霚 > bou\ ;
+霖 > rin\ ;
+霓 > gei\ ;
+霑 > ten\ ;
+霎 > sou\ ;
+霉 > bai\ ;
+霈 > hai\ ;
+霆 > tei\ ;
+雱 > hou\ ;
+雰 > fun\ ;
+雯 > bun\ ;
+雟 > kei\ ;
+雞 > kei\ ;
+雝 > you\ ;
+雚 > kan\ ;
+雙 > sou\ ;
+雎 > sho\ ;
+雍 > you\ ;
+雋 > sen\ ;
+雊 > kou\ ;
+雈 > kan\ ;
+隹 > sui\ ;
+隸 > rei\ ;
+隷 > rei\ ;
+隶 > tai\ ;
+隴 > rou\ ;
+隯 > tou\ ;
+隮 > sei\ ;
+隧 > sui\ ;
+隦 > hei\ ;
+隥 > tou\ ;
+隤 > tai\ ;
+隝 > tou\ ;
+隚 > tou\ ;
+隗 > kai\ ;
+隑 > kai\ ;
+隍 > kou\ ;
+隄 > tei\ ;
+隃 > shu\ ;
+陾 > jou\ ;
+陼 > sho\ ;
+陷 > kan\ ;
+陲 > sui\ ;
+陮 > tai\ ;
+陬 > suu\ ;
+陪 > bai\ ;
+陦 > tou\ ;
+陡 > tou\ ;
+陝 > sen\ ;
+陜 > kou\ ;
+陛 > hei\ ;
+陘 > kei\ ;
+陖 > kai\ ;
+陔 > gai\ ;
+陋 > rou\ ;
+阺 > kyo\ ;
+阸 > aku\ ;
+阷 > tei\ ;
+阳 > you\ ;
+阱 > sei\ ;
+阯 > shi\ ;
+阮 > gen\ ;
+阬 > kou\ ;
+阨 > aku\ ;
+阦 > you\ ;
+阤 > chi\ ;
+阡 > sen\ ;
+闦 > gon\ ;
+闤 > kan\ ;
+闡 > sen\ ;
+闠 > kai\ ;
+闙 > kei\ ;
+闗 > kan\ ;
+闔 > kou\ ;
+闓 > kai\ ;
+闒 > tou\ ;
+闐 > ten\ ;
+闌 > ran\ ;
+闆 > han\ ;
+閿 > bun\ ;
+閽 > kon\ ;
+閺 > ben\ ;
+閬 > rou\ ;
+閫 > kon\ ;
+閩 > ben\ ;
+閨 > kei\ ;
+閧 > kou\ ;
+閡 > gai\ ;
+閞 > hen\ ;
+閝 > rei\ ;
+閙 > tou\ ;
+閘 > kou\ ;
+閔 > bin\ ;
+閏 > jun\ ;
+閎 > kou\ ;
+閍 > hou\ ;
+閌 > kou\ ;
+閈 > kan\ ;
+閇 > hei\ ;
+閂 > san\ ;
+镴 > rou\ ;
+镮 > kan\ ;
+锽 > kou\ ;
+铦 > sen\ ;
+铓 > bou\ ;
+铇 > hou\ ;
+钄 > ran\ ;
+鑾 > ran\ ;
+鑽 > san\ ;
+鑷 > jou\ ;
+鑲 > jou\ ;
+鑱 > san\ ;
+鑯 > sen\ ;
+鑭 > ran\ ;
+鑫 > kin\ ;
+鑨 > rou\ ;
+鑞 > rou\ ;
+鑛 > kou\ ;
+鑚 > san\ ;
+鑙 > kei\ ;
+鑑 > kan\ ;
+鑌 > hin\ ;
+鑈 > gei\ ;
+鑅 > kou\ ;
+鑁 > ban\ ;
+鐻 > kyo\ ;
+鐺 > tou\ ;
+鐶 > kan\ ;
+鐳 > rai\ ;
+鐱 > sen\ ;
+鐮 > ren\ ;
+鐫 > sen\ ;
+鐟 > tei\ ;
+鐙 > tou\ ;
+鐗 > kan\ ;
+鐕 > san\ ;
+鐓 > tai\ ;
+鐏 > son\ ;
+鐉 > sen\ ;
+鐇 > han\ ;
+鐄 > kou\ ;
+鐃 > dou\ ;
+鐁 > shi\ ;
+鏻 > rin\ ;
+鏸 > tei\ ;
+鏨 > san\ ;
+鏧 > rou\ ;
+鏤 > rou\ ;
+鏟 > san\ ;
+鏞 > you\ ;
+鏝 > man\ ;
+鏜 > tou\ ;
+鏙 > sai\ ;
+鏗 > kou\ ;
+鏓 > sou\ ;
+鏋 > ban\ ;
+鏈 > ren\ ;
+鏇 > sen\ ;
+鏆 > kan\ ;
+鏄 > tan\ ;
+鎬 > kou\ ;
+鎫 > ban\ ;
+鎩 > sai\ ;
+鎤 > kou\ ;
+鎡 > shi\ ;
+鎞 > hei\ ;
+鎗 > sou\ ;
+鎕 > tou\ ;
+鎔 > you\ ;
+鎒 > dou\ ;
+鎊 > hau\ ;
+鍿 > shi\ ;
+鍽 > hen\ ;
+鍴 > tan\ ;
+鍳 > kan\ ;
+鍱 > you\ ;
+鍰 > kan\ ;
+鍯 > sou\ ;
+鍭 > kou\ ;
+鍪 > bou\ ;
+鍩 > ten\ ;
+鍧 > kou\ ;
+鍤 > sou\ ;
+鍠 > kou\ ;
+鍞 > kou\ ;
+鍚 > you\ ;
+鍗 > tei\ ;
+鍕 > kun\ ;
+鍒 > juu\ ;
+鍑 > huu\ ;
+鍐 > sou\ ;
+鍊 > ren\ ;
+鍉 > tei\ ;
+鍇 > kai\ ;
+鍄 > kei\ ;
+錵 > nie\ ;
+錳 > mou\ ;
+錬 > ren\ ;
+錪 > ten\ ;
+錧 > kan\ ;
+錥 > iku\ ;
+錣 > tei\ ;
+錠 > jou\ ;
+錟 > tan\ ;
+錝 > sou\ ;
+錜 > jou\ ;
+錚 > sou\ ;
+錙 > shi\ ;
+錕 > kon\ ;
+錔 > tou\ ;
+錑 > rai\ ;
+錈 > ken\ ;
+錀 > rin\ ;
+鋻 > ken\ ;
+鋮 > sei\ ;
+鋬 > han\ ;
+鋧 > ken\ ;
+鋥 > tou\ ;
+鋡 > kan\ ;
+鋟 > sen\ ;
+鋙 > gyo\ ;
+鋗 > ken\ ;
+鋕 > shi\ ;
+鋓 > ten\ ;
+鋐 > kou\ ;
+鋎 > kan\ ;
+鋌 > tei\ ;
+鋋 > sen\ ;
+鋇 > hai\ ;
+鋅 > shi\ ;
+鋃 > rou\ ;
+鋂 > bai\ ;
+鋁 > ryo\ ;
+鋀 > tou\ ;
+銻 > tei\ ;
+銺 > sou\ ;
+銲 > kan\ ;
+銧 > kou\ ;
+銤 > bei\ ;
+銠 > rou\ ;
+銚 > you\ ;
+銙 > kai\ ;
+銗 > kou\ ;
+銖 > shu\ ;
+銓 > sen\ ;
+銒 > kei\ ;
+銈 > tei\ ;
+鉿 > kou\ ;
+鉼 > hei\ ;
+鉹 > shi\ ;
+鉸 > kou\ ;
+鉷 > kou\ ;
+鉶 > kei\ ;
+鉵 > tou\ ;
+鉱 > kou\ ;
+鉰 > shi\ ;
+鉩 > jou\ ;
+鉨 > dei\ ;
+鉧 > bou\ ;
+鉤 > kou\ ;
+鉡 > han\ ;
+鉜 > fuu\ ;
+鉙 > tai\ ;
+鉗 > kan\ ;
+鉏 > sho\ ;
+鉎 > sou\ ;
+鉉 > ken\ ;
+鉈 > sha\ ;
+鉇 > shi\ ;
+鉆 > ten\ ;
+鉅 > kyo\ ;
+鉃 > shi\ ;
+鉂 > shi\ ;
+鉀 > kou\ ;
+鈿 > ten\ ;
+鈶 > shi\ ;
+鈵 > hei\ ;
+鈰 > shi\ ;
+鈮 > dei\ ;
+鈣 > kai\ ;
+鈞 > kin\ ;
+鈜 > kou\ ;
+鈖 > hun\ ;
+鈓 > jin\ ;
+鈒 > sou\ ;
+鈑 > han\ ;
+鈐 > ken\ ;
+鈉 > dou\ ;
+鈄 > tou\ ;
+鈁 > hou\ ;
+釿 > kin\ ;
+釼 > ken\ ;
+釶 > shi\ ;
+釱 > tei\ ;
+釯 > bou\ ;
+釮 > sen\ ;
+釭 > kou\ ;
+釬 > kan\ ;
+釩 > han\ ;
+釧 > sen\ ;
+釦 > kou\ ;
+釤 > san\ ;
+釖 > tou\ ;
+釉 > yuu\ ;
+釆 > han\ ;
+釅 > gen\ ;
+釃 > shi\ ;
+釁 > kin\ ;
+釀 > jou\ ;
+醽 > rei\ ;
+醺 > kun\ ;
+醸 > jou\ ;
+醶 > gen\ ;
+醵 > kyo\ ;
+醴 > rei\ ;
+醳 > eki\ ;
+醲 > jou\ ;
+醰 > tan\ ;
+醯 > kei\ ;
+醦 > san\ ;
+醢 > kai\ ;
+醘 > kou\ ;
+醓 > tan\ ;
+醑 > sho\ ;
+醎 > dai\ ;
+醍 > tei\ ;
+醆 > san\ ;
+醅 > hai\ ;
+醂 > rin\ ;
+酻 > sui\ ;
+酹 > rai\ ;
+酶 > bai\ ;
+酵 > kou\ ;
+酲 > tei\ ;
+酭 > yuu\ ;
+酩 > mei\ ;
+酣 > kan\ ;
+酚 > hun\ ;
+酘 > tou\ ;
+酖 > tan\ ;
+酊 > tei\ ;
+酇 > san\ ;
+酆 > fuu\ ;
+酃 > rei\ ;
+鄽 > ten\ ;
+鄼 > sab\ ;
+鄺 > kou\ ;
+鄷 > hou\ ;
+鄶 > kai\ ;
+鄲 > tan\ ;
+鄰 > rin\ ;
+鄯 > sen\ ;
+鄮 > bou\ ;
+鄭 > tei\ ;
+鄧 > tou\ ;
+鄞 > gin\ ;
+鄘 > you\ ;
+鄗 > kou\ ;
+鄒 > suu\ ;
+鄍 > mei\ ;
+鄄 > ken\ ;
+郯 > tan\ ;
+郥 > hai\ ;
+郡 > gun\ ;
+郟 > kou\ ;
+郞 > rou\ ;
+郜 > kou\ ;
+郘 > ryo\ ;
+郗 > chi\ ;
+郕 > sei\ ;
+郒 > rou\ ;
+郌 > kei\ ;
+郈 > kou\ ;
+郃 > kou\ ;
+郁 > iku\ ;
+邾 > chu\ ;
+邽 > kei\ ;
+邶 > hai\ ;
+邴 > hei\ ;
+邰 > tai\ ;
+邯 > kan\ ;
+邨 > son\ ;
+邢 > kei\ ;
+邡 > hou\ ;
+邠 > hin\ ;
+邙 > bou\ ;
+邗 > kan\ ;
+邕 > you\ ;
+邑 > yuu\ ;
+邎 > yuu\ ;
+邌 > rei\ ;
+邉 > hen\ ;
+邅 > ken\ ;
+邃 > sui\ ;
+邁 > bai\ ;
+邀 > you\ ;
+遽 > kyo\ ;
+遷 > sen\ ;
+遶 > jou\ ;
+遵 > jun\ ;
+遴 > rin\ ;
+遰 > tei\ ;
+遯 > ton\ ;
+遨 > gou\ ;
+遦 > kan\ ;
+遢 > tou\ ;
+遟 > chi\ ;
+遞 > tei\ ;
+遝 > tou\ ;
+遘 > kou\ ;
+遉 > tei\ ;
+遄 > sen\ ;
+遃 > gen\ ;
+逿 > tou\ ;
+逳 > iku\ ;
+逰 > yuu\ ;
+逮 > tai\ ;
+逭 > kan\ ;
+逬 > hou\ ;
+逨 > rai\ ;
+逥 > kai\ ;
+逗 > tou\ ;
+逕 > kei\ ;
+逓 > tei\ ;
+逌 > yuu\ ;
+逈 > kei\ ;
+逄 > hou\ ;
+迺 > dai\ ;
+迸 > hou\ ;
+迶 > yuu\ ;
+迵 > tou\ ;
+迴 > kai\ ;
+迯 > tou\ ;
+迨 > tai\ ;
+迣 > sei\ ;
+迒 > kou\ ;
+迊 > sou\ ;
+迁 > sen\ ;
+迀 > kan\ ;
+边 > hen\ ;
+辮 > hen\ ;
+辨 > ben\ ;
+辧 > ben\ ;
+辦 > han\ ;
+辡 > hen\ ;
+辠 > sai\ ;
+轥 > rin\ ;
+轞 > kan\ ;
+轘 > kan\ ;
+轗 > kan\ ;
+轔 > rin\ ;
+轓 > han\ ;
+轒 > hun\ ;
+轑 > rau\ ;
+轏 > san\ ;
+轇 > kou\ ;
+轁 > tou\ ;
+輾 > ten\ ;
+輺 > shi\ ;
+輷 > kou\ ;
+輶 > yuu\ ;
+輳 > sou\ ;
+輮 > juu\ ;
+輭 > zen\ ;
+輨 > kan\ ;
+輦 > ren\ ;
+輥 > kon\ ;
+輣 > hou\ ;
+輡 > kan\ ;
+輞 > bou\ ;
+輜 > shi\ ;
+輗 > gei\ ;
+輓 > ban\ ;
+輐 > kan\ ;
+輏 > yuu\ ;
+輊 > chi\ ;
+輇 > sen\ ;
+軺 > you\ ;
+軹 > shi\ ;
+軰 > hai\ ;
+軨 > rei\ ;
+軣 > gou\ ;
+軠 > jin\ ;
+軟 > nan\ ;
+軜 > dou\ ;
+軛 > aku\ ;
+軔 > jin\ ;
+軑 > tei\ ;
+軐 > sen\ ;
+軇 > tou\ ;
+軆 > tei\ ;
+軁 > rou\ ;
+躺 > tou\ ;
+躰 > tei\ ;
+躭 > tan\ ;
+躪 > rin\ ;
+躧 > shi\ ;
+躢 > tou\ ;
+躡 > jou\ ;
+躝 > ran\ ;
+躚 > sen\ ;
+躙 > rin\ ;
+躕 > chu\ ;
+躔 > ten\ ;
+躋 > sei\ ;
+躉 > ton\ ;
+躁 > sou\ ;
+蹹 > tou\ ;
+蹯 > han\ ;
+蹭 > sou\ ;
+蹬 > tou\ ;
+蹣 > man\ ;
+蹡 > you\ ;
+蹝 > shi\ ;
+蹛 > tai\ ;
+蹔 > san\ ;
+蹏 > tei\ ;
+蹎 > ten\ ;
+蹍 > ten\ ;
+蹋 > tou\ ;
+蹊 > kei\ ;
+蹈 > tou\ ;
+蹇 > ken\ ;
+蹂 > juu\ ;
+蹁 > hen\ ;
+踹 > sen\ ;
+踶 > tei\ ;
+踴 > you\ ;
+踣 > hou\ ;
+踡 > ken\ ;
+踞 > kyo\ ;
+踔 > tou\ ;
+踐 > sen\ ;
+踈 > sho\ ;
+踅 > tei\ ;
+踁 > kei\ ;
+践 > sen\ ;
+跴 > sai\ ;
+跲 > kou\ ;
+跱 > chi\ ;
+跰 > hou\ ;
+跧 > sen\ ;
+跤 > kou\ ;
+跚 > san\ ;
+跙 > sho\ ;
+跑 > hou\ ;
+跊 > bai\ ;
+跈 > den\ ;
+跆 > tai\ ;
+趾 > shi\ ;
+趼 > gen\ ;
+趲 > san\ ;
+趯 > kan\ ;
+趨 > suu\ ;
+趦 > shi\ ;
+趟 > tou\ ;
+趕 > kan\ ;
+趑 > shi\ ;
+趍 > chi\ ;
+趈 > tan\ ;
+趄 > sho\ ;
+赿 > chi\ ;
+赱 > sou\ ;
+赭 > sha\ ;
+赬 > tei\ ;
+赦 > sha\ ;
+贜 > zou\ ;
+贛 > kou\ ;
+贗 > ken\ ;
+贓 > zou\ ;
+贒 > ken\ ;
+贍 > sen\ ;
+贊 > san\ ;
+贉 > tan\ ;
+贈 > zou\ ;
+贄 > shi\ ;
+贃 > wan\ ;
+贁 > hai\ ;
+賿 > rou\ ;
+賸 > you\ ;
+賷 > sei\ ;
+賵 > huu\ ;
+賴 > rai\ ;
+賲 > hou\ ;
+賯 > kei\ ;
+賨 > sou\ ;
+賤 > sen\ ;
+賠 > bai\ ;
+賜 > shi\ ;
+賛 > san\ ;
+賚 > rai\ ;
+賖 > sha\ ;
+賔 > hin\ ;
+賓 > hin\ ;
+賒 > sha\ ;
+賎 > sen\ ;
+賍 > sou\ ;
+賋 > kou\ ;
+賆 > hen\ ;
+賅 > kai\ ;
+賄 > wai\ ;
+貿 > bou\ ;
+貹 > sei\ ;
+貶 > hen\ ;
+貲 > shi\ ;
+貫 > kan\ ;
+貪 > don\ ;
+販 > han\ ;
+貢 > kou\ ;
+貛 > kan\ ;
+貙 > chu\ ;
+貒 > tan\ ;
+貎 > gei\ ;
+貌 > bou\ ;
+貋 > kan\ ;
+貇 > kon\ ;
+貆 > kan\ ;
+豻 > kan\ ;
+豺 > sai\ ;
+豸 > chi\ ;
+豶 > hun\ ;
+豵 > sou\ ;
+豳 > hin\ ;
+豬 > cho\ ;
+豩 > hin\ ;
+豦 > kyo\ ;
+豤 > kon\ ;
+豣 > ken\ ;
+豢 > ken\ ;
+豜 > ken\ ;
+豛 > eki\ ;
+豘 > ton\ ;
+豕 > shi\ ;
+豏 > kan\ ;
+豋 > tou\ ;
+豉 > shi\ ;
+豇 > kou\ ;
+豅 > rou\ ;
+谿 > kei\ ;
+谾 > kou\ ;
+谽 > kan\ ;
+谹 > kou\ ;
+谸 > sen\ ;
+讜 > tou\ ;
+讚 > san\ ;
+讙 > kan\ ;
+讕 > ran\ ;
+讓 > jou\ ;
+讒 > san\ ;
+譾 > sen\ ;
+譼 > kan\ ;
+譹 > kou\ ;
+譶 > tou\ ;
+譴 > ken\ ;
+譱 > zen\ ;
+譣 > sen\ ;
+譟 > sou\ ;
+譞 > ken\ ;
+譚 > tan\ ;
+譔 > sen\ ;
+譓 > kei\ ;
+譍 > you\ ;
+譈 > tai\ ;
+譄 > sou\ ;
+譂 > sen\ ;
+謾 > ban\ ;
+謰 > ren\ ;
+謭 > sei\ ;
+謦 > kei\ ;
+謠 > you\ ;
+謟 > tou\ ;
+謜 > gen\ ;
+謚 > shi\ ;
+謗 > bou\ ;
+謑 > kei\ ;
+謊 > kou\ ;
+謇 > ken\ ;
+謆 > sen\ ;
+謅 > sou\ ;
+謄 > tou\ ;
+諼 > ken\ ;
+諷 > fuu\ ;
+諵 > nan\ ;
+諴 > kan\ ;
+諰 > shi\ ;
+諮 > shi\ ;
+諬 > kei\ ;
+諫 > kan\ ;
+諧 > kai\ ;
+諢 > kon\ ;
+諡 > shi\ ;
+諠 > ken\ ;
+諟 > shi\ ;
+諞 > hen\ ;
+諝 > sho\ ;
+諚 > jou\ ;
+諕 > kou\ ;
+諓 > sen\ ;
+諏 > shu\ ;
+諍 > sou\ ;
+諌 > kan\ ;
+諉 > zui\ ;
+諈 > sui\ ;
+諄 > jun\ ;
+諂 > ten\ ;
+誾 > gin\ ;
+誻 > tou\ ;
+誷 > bou\ ;
+誶 > sui\ ;
+誩 > kei\ ;
+誨 > kai\ ;
+誥 > kou\ ;
+誡 > kai\ ;
+誟 > kou\ ;
+誙 > kou\ ;
+誗 > ten\ ;
+誕 > tan\ ;
+誏 > rou\ ;
+誃 > shi\ ;
+詿 > kai\ ;
+詼 > kai\ ;
+詺 > bii\ ;
+詹 > sen\ ;
+詷 > tou\ ;
+詬 > kou\ ;
+詥 > kou\ ;
+詣 > kei\ ;
+詢 > jun\ ;
+詝 > cho\ ;
+詜 > tou\ ;
+詓 > kyo\ ;
+詒 > tai\ ;
+詎 > kyo\ ;
+詉 > dou\ ;
+詇 > you\ ;
+詆 > tei\ ;
+詅 > rei\ ;
+詃 > ken\ ;
+詀 > tan\ ;
+訾 > shi\ ;
+訽 > kou\ ;
+訵 > chi\ ;
+訬 > sou\ ;
+訤 > kon\ ;
+訢 > kin\ ;
+訞 > you\ ;
+訕 > san\ ;
+訔 > gin\ ;
+訓 > kun\ ;
+訒 > jin\ ;
+訑 > shi\ ;
+討 > tou\ ;
+訌 > kou\ ;
+訇 > kou\ ;
+訂 > tei\ ;
+觿 > kei\ ;
+觽 > kei\ ;
+觹 > kei\ ;
+觶 > shi\ ;
+觧 > kai\ ;
+觥 > kou\ ;
+觝 > tei\ ;
+觜 > shi\ ;
+觘 > sou\ ;
+觗 > shi\ ;
+觔 > kin\ ;
+覸 > kan\ ;
+覷 > shu\ ;
+覵 > kan\ ;
+覴 > tou\ ;
+覲 > kin\ ;
+覯 > kou\ ;
+覥 > ten\ ;
+覠 > kin\ ;
+覟 > shi\ ;
+覘 > ten\ ;
+覔 > eki\ ;
+覍 > hen\ ;
+覌 > kan\ ;
+覃 > tan\ ;
+襾 > aka\ ;
+襽 > ran\ ;
+襼 > gei\ ;
+襻 > han\ ;
+襺 > ken\ ;
+襴 > ran\ ;
+襳 > sen\ ;
+襰 > rai\ ;
+襢 > tan\ ;
+襠 > tou\ ;
+襜 > sen\ ;
+襛 > jou\ ;
+襚 > sui\ ;
+襕 > ran\ ;
+襌 > tan\ ;
+襉 > kan\ ;
+襄 > jou\ ;
+襃 > hou\ ;
+褹 > gei\ ;
+褰 > ken\ ;
+褫 > chi\ ;
+褧 > kei\ ;
+褦 > dai\ ;
+褠 > kou\ ;
+褝 > tan\ ;
+褜 > ena\ ;
+褚 > cho\ ;
+褙 > hai\ ;
+褖 > tan\ ;
+褏 > yuu\ ;
+褍 > tan\ ;
+褊 > hen\ ;
+褆 > shi\ ;
+褂 > kai\ ;
+裵 > hai\ ;
+裴 > hai\ ;
+裪 > tau\ ;
+裧 > sen\ ;
+裞 > sei\ ;
+裙 > kun\ ;
+裒 > hou\ ;
+裎 > tei\ ;
+裍 > kon\ ;
+裌 > kou\ ;
+裋 > shu\ ;
+裊 > jou\ ;
+裈 > kon\ ;
+袿 > kei\ ;
+袾 > chu\ ;
+袵 > jin\ ;
+袳 > shi\ ;
+袪 > kyo\ ;
+袨 > ken\ ;
+袤 > bou\ ;
+袞 > kon\ ;
+袛 > tei\ ;
+袒 > tan\ ;
+袍 > hou\ ;
+袀 > kin\ ;
+衿 > eri\ ;
+衽 > jin\ ;
+衻 > zen\ ;
+衲 > dou\ ;
+衮 > kon\ ;
+衫 > san\ ;
+衩 > sai\ ;
+衦 > kan\ ;
+衟 > dou\ ;
+衜 > dou\ ;
+衙 > gyo\ ;
+衘 > kan\ ;
+衖 > kou\ ;
+衕 > tou\ ;
+衒 > ken\ ;
+衑 > rei\ ;
+衎 > kan\ ;
+衅 > kin\ ;
+衃 > hai\ ;
+衁 > kou\ ;
+蠻 > ban\ ;
+蠺 > san\ ;
+蠵 > kei\ ;
+蠲 > ken\ ;
+蠭 > hou\ ;
+蠣 > rei\ ;
+蠡 > rei\ ;
+蠟 > rou\ ;
+蠜 > han\ ;
+蠙 > hen\ ;
+蠔 > kou\ ;
+蠓 > bou\ ;
+蠒 > ken\ ;
+蠐 > sei\ ;
+蠏 > kai\ ;
+蠊 > ren\ ;
+蠉 > ken\ ;
+蠆 > tai\ ;
+蠅 > you\ ;
+蟿 > kei\ ;
+蟾 > sen\ ;
+蟺 > sen\ ;
+蟸 > rei\ ;
+蟷 > tou\ ;
+蟶 > tei\ ;
+蟳 > jin\ ;
+蟱 > bou\ ;
+蟬 > sen\ ;
+蟪 > kei\ ;
+蟤 > sen\ ;
+蟠 > han\ ;
+蟚 > hou\ ;
+蟖 > shi\ ;
+蟕 > sui\ ;
+蟒 > bou\ ;
+蟐 > tou\ ;
+蟊 > bou\ ;
+蟁 > bun\ ;
+螻 > rou\ ;
+螳 > tou\ ;
+螯 > gou\ ;
+螮 > tei\ ;
+螭 > chi\ ;
+螬 > sou\ ;
+螧 > ebi\ ;
+螣 > tou\ ;
+螟 > mei\ ;
+螗 > tou\ ;
+螕 > hei\ ;
+螌 > han\ ;
+螈 > gen\ ;
+螇 > kei\ ;
+螆 > shi\ ;
+螅 > shi\ ;
+螄 > shi\ ;
+螃 > hou\ ;
+螂 > rou\ ;
+蝻 > nan\ ;
+蝱 > mou\ ;
+蝪 > tou\ ;
+蝦 > ebi\ ;
+蝥 > bou\ ;
+蝣 > yuu\ ;
+蝡 > zen\ ;
+蝗 > kou\ ;
+蝅 > san\ ;
+蝃 > tei\ ;
+蝀 > tou\ ;
+蜺 > gei\ ;
+蜹 > zei\ ;
+蜷 > ken\ ;
+蜴 > eki\ ;
+蜯 > hou\ ;
+蜡 > sho\ ;
+蜟 > iku\ ;
+蜖 > kai\ ;
+蜕 > zei\ ;
+蜔 > ten\ ;
+蜓 > ten\ ;
+蜑 > tan\ ;
+蜏 > yuu\ ;
+蜍 > sho\ ;
+蜋 > rou\ ;
+蛽 > bai\ ;
+蛼 > sha\ ;
+蛻 > zei\ ;
+蛯 > ebi\ ;
+蛮 > ban\ ;
+蛧 > bou\ ;
+蛠 > rei\ ;
+蛟 > kou\ ;
+蛗 > huu\ ;
+蛕 > kai\ ;
+蛔 > kai\ ;
+蛑 > bou\ ;
+蛎 > rei\ ;
+蛋 > tan\ ;
+蛅 > zen\ ;
+蛃 > hei\ ;
+蛀 > shu\ ;
+蚿 > ken\ ;
+蚷 > kyo\ ;
+蚶 > kan\ ;
+蚴 > yuu\ ;
+蚳 > chi\ ;
+蚰 > yuu\ ;
+蚫 > hou\ ;
+蚪 > tou\ ;
+蚩 > shi\ ;
+蚧 > kai\ ;
+蚦 > zen\ ;
+蚣 > kou\ ;
+蚡 > hun\ ;
+蚘 > kai\ ;
+蚖 > gen\ ;
+蚌 > hou\ ;
+蚈 > ken\ ;
+虻 > abu\ ;
+虷 > kan\ ;
+虵 > sha\ ;
+虤 > gan\ ;
+虣 > hou\ ;
+虢 > hou\ ;
+虡 > kyo\ ;
+虠 > kou\ ;
+虛 > kyo\ ;
+虗 > kyo\ ;
+虔 > ken\ ;
+虓 > kou\ ;
+虒 > shi\ ;
+虆 > rui\ ;
+虀 > sei\ ;
+蘸 > san\ ;
+蘯 > tou\ ;
+蘩 > han\ ;
+蘢 > rou\ ;
+蘞 > ren\ ;
+蘛 > iku\ ;
+蘚 > sen\ ;
+蘘 > jou\ ;
+蘐 > ken\ ;
+蘏 > kei\ ;
+蘍 > kun\ ;
+蘋 > hin\ ;
+蘅 > kou\ ;
+藾 > rai\ ;
+藼 > ken\ ;
+藺 > rin\ ;
+藷 > sho\ ;
+藳 > kou\ ;
+藟 > rui\ ;
+藘 > ryo\ ;
+藕 > guu\ ;
+藏 > zou\ ;
+藊 > hen\ ;
+藇 > sho\ ;
+藂 > sou\ ;
+薾 > shi\ ;
+薹 > tai\ ;
+薶 > bai\ ;
+薴 > nou\ ;
+薰 > kun\ ;
+薭 > hai\ ;
+薫 > kun\ ;
+薨 > kou\ ;
+薧 > kou\ ;
+薤 > kai\ ;
+薢 > kai\ ;
+薠 > han\ ;
+薟 > ren\ ;
+薝 > sen\ ;
+薙 > tei\ ;
+薐 > rou\ ;
+薋 > shi\ ;
+薉 > wai\ ;
+薈 > kai\ ;
+薅 > kou\ ;
+薁 > iku\ ;
+蕿 > ken\ ;
+蕽 > dou\ ;
+蕻 > kou\ ;
+蕹 > you\ ;
+蕯 > rou\ ;
+蕫 > tou\ ;
+蕤 > zui\ ;
+蕢 > kai\ ;
+蕡 > hun\ ;
+蕞 > sai\ ;
+蕙 > kei\ ;
+蕘 > jou\ ;
+蕖 > kyo\ ;
+蕕 > yuu\ ;
+蕒 > bai\ ;
+蕑 > kan\ ;
+蕏 > cho\ ;
+蕋 > zui\ ;
+蕊 > zui\ ;
+蕆 > ten\ ;
+蕃 > ban\ ;
+蕁 > jin\ ;
+蔳 > sen\ ;
+蔲 > kou\ ;
+蔪 > sen\ ;
+蔧 > sei\ ;
+蔥 > sou\ ;
+蔡 > sai\ ;
+蔞 > rou\ ;
+蔜 > gou\ ;
+蔗 > sho\ ;
+蔓 > ban\ ;
+蔂 > rui\ ;
+蔀 > hou\ ;
+蓺 > gei\ ;
+蓷 > tai\ ;
+蓱 > hei\ ;
+蓰 > shi\ ;
+蓯 > sou\ ;
+蓪 > tou\ ;
+蓜 > hai\ ;
+蓓 > hai\ ;
+蓍 > shi\ ;
+蓉 > you\ ;
+蓈 > kou\ ;
+蓂 > mei\ ;
+蓀 > son\ ;
+蒿 > kou\ ;
+蒾 > bei\ ;
+蒹 > ken\ ;
+蒯 > kai\ ;
+蒭 > suu\ ;
+蒨 > sen\ ;
+蒡 > hou\ ;
+蒓 > jun\ ;
+蒒 > shi\ ;
+蒄 > kan\ ;
+蒂 > tei\ ;
+葽 > you\ ;
+葼 > sou\ ;
+葹 > shi\ ;
+葸 > sai\ ;
+葷 > gun\ ;
+葶 > tei\ ;
+葵 > aoi\ ;
+葰 > sui\ ;
+葮 > tan\ ;
+葪 > kei\ ;
+葥 > sen\ ;
+葢 > gai\ ;
+葘 > shi\ ;
+葒 > kou\ ;
+葑 > hou\ ;
+葏 > sen\ ;
+葈 > shi\ ;
+葇 > juu\ ;
+葅 > sho\ ;
+萹 > hen\ ;
+萱 > ken\ ;
+萯 > huu\ ;
+萠 > hou\ ;
+萕 > sei\ ;
+萑 > kan\ ;
+萏 > tan\ ;
+萍 > hei\ ;
+萋 > sei\ ;
+萊 > rai\ ;
+萃 > sui\ ;
+菼 > tan\ ;
+菻 > rin\ ;
+菹 > sho\ ;
+菷 > sou\ ;
+菶 > hou\ ;
+菪 > tou\ ;
+菘 > suu\ ;
+菑 > shi\ ;
+菎 > kon\ ;
+菌 > kin\ ;
+菅 > kan\ ;
+菁 > sei\ ;
+莿 > shi\ ;
+莾 > mou\ ;
+莽 > bou\ ;
+莱 > rai\ ;
+莬 > bun\ ;
+莧 > kan\ ;
+莦 > sou\ ;
+莠 > yuu\ ;
+莟 > kan\ ;
+莞 > kan\ ;
+莛 > tei\ ;
+莙 > kin\ ;
+莖 > kei\ ;
+莕 > kou\ ;
+莔 > mou\ ;
+莓 > mai\ ;
+莒 > kyo\ ;
+莊 > sou\ ;
+莉 > chi\ ;
+莇 > cho\ ;
+莄 > kou\ ;
+荿 > sei\ ;
+荻 > ogi\ ;
+荵 > jin\ ;
+荳 > tou\ ;
+荘 > sou\ ;
+荖 > hou\ ;
+荕 > kin\ ;
+荓 > hei\ ;
+荑 > tei\ ;
+荐 > sen\ ;
+荎 > chi\ ;
+荊 > kei\ ;
+荇 > kou\ ;
+荆 > kei\ ;
+荅 > tou\ ;
+荄 > kai\ ;
+荃 > sen\ ;
+荀 > jun\ ;
+茼 > tou\ ;
+茷 > hai\ ;
+茴 > kai\ ;
+茳 > kou\ ;
+茱 > shu\ ;
+茬 > shi\ ;
+茝 > sai\ ;
+茛 > kon\ ;
+茗 > mei\ ;
+茋 > shi\ ;
+茊 > shi\ ;
+茈 > shi\ ;
+茆 > bou\ ;
+范 > han\ ;
+苹 > hei\ ;
+苷 > kan\ ;
+苳 > tou\ ;
+苯 > hon\ ;
+苭 > you\ ;
+苫 > sen\ ;
+苪 > hei\ ;
+苨 > dei\ ;
+苧 > cho\ ;
+苣 > kyo\ ;
+苠 > bin\ ;
+苟 > kou\ ;
+苞 > hou\ ;
+苚 > you\ ;
+苓 > rei\ ;
+苒 > zen\ ;
+苐 > tei\ ;
+苅 > gai\ ;
+芿 > jou\ ;
+芼 > bou\ ;
+芻 > suu\ ;
+芷 > shi\ ;
+芮 > zei\ ;
+芬 > fun\ ;
+芫 > gen\ ;
+芩 > kin\ ;
+芧 > cho\ ;
+芥 > kai\ ;
+芤 > kou\ ;
+芣 > huu\ ;
+芡 > ken\ ;
+芠 > bun\ ;
+芟 > san\ ;
+芚 > ton\ ;
+芖 > chi\ ;
+芋 > imo\ ;
+芊 > sen\ ;
+芉 > kai\ ;
+芇 > ben\ ;
+芄 > kan\ ;
+芃 > hou\ ;
+芁 > kou\ ;
+艿 > jou\ ;
+艾 > gai\ ;
+艱 > kan\ ;
+艮 > kon\ ;
+艭 > sou\ ;
+艨 > mou\ ;
+艦 > kan\ ;
+艠 > tou\ ;
+艟 > dou\ ;
+艜 > tai\ ;
+艚 > sou\ ;
+艙 > sou\ ;
+艘 > sou\ ;
+艑 > hen\ ;
+艎 > kou\ ;
+艋 > mou\ ;
+艇 > tei\ ;
+艆 > rou\ ;
+艄 > sou\ ;
+舺 > kou\ ;
+舷 > ken\ ;
+舲 > rei\ ;
+舫 > hou\ ;
+舩 > sen\ ;
+舨 > han\ ;
+舢 > san\ ;
+舡 > kou\ ;
+舛 > sen\ ;
+舚 > ten\ ;
+舙 > kuu\ ;
+舘 > kan\ ;
+舔 > ten\ ;
+舓 > shi\ ;
+舐 > shi\ ;
+舍 > sha\ ;
+舉 > kyo\ ;
+舀 > you\ ;
+臿 > sou\ ;
+臽 > kan\ ;
+臶 > sen\ ;
+臱 > ben\ ;
+臧 > zou\ ;
+臤 > kan\ ;
+臡 > dei\ ;
+臠 > ren\ ;
+臚 > ryo\ ;
+臘 > rou\ ;
+臗 > kon\ ;
+臓 > zou\ ;
+臑 > dau\ ;
+臏 > hin\ ;
+臎 > sui\ ;
+臋 > den\ ;
+臊 > sou\ ;
+臉 > ren\ ;
+臈 > rou\ ;
+臆 > oku\ ;
+臃 > you\ ;
+臀 > den\ ;
+膾 > kai\ ;
+膻 > tan\ ;
+膺 > you\ ;
+膸 > zui\ ;
+膵 > sui\ ;
+膰 > han\ ;
+膨 > bou\ ;
+膢 > rou\ ;
+膞 > sen\ ;
+膛 > tou\ ;
+膖 > hou\ ;
+膐 > ryo\ ;
+膏 > kou\ ;
+膎 > kai\ ;
+膅 > tou\ ;
+膂 > ryo\ ;
+膁 > ken\ ;
+膀 > hou\ ;
+腺 > sen\ ;
+腱 > ken\ ;
+腫 > shu\ ;
+腩 > dan\ ;
+腨 > sen\ ;
+腧 > shu\ ;
+腥 > sei\ ;
+腠 > sou\ ;
+腔 > kou\ ;
+腒 > kyo\ ;
+腎 > jin\ ;
+腌 > you\ ;
+腇 > dai\ ;
+腆 > ten\ ;
+腅 > tan\ ;
+腁 > hen\ ;
+脺 > zei\ ;
+脰 > tou\ ;
+脬 > hou\ ;
+脧 > sai\ ;
+脠 > sen\ ;
+脘 > kan\ ;
+脗 > bun\ ;
+脆 > zei\ ;
+脃 > zei\ ;
+胾 > shi\ ;
+胼 > hen\ ;
+胶 > kou\ ;
+胲 > kai\ ;
+胱 > kou\ ;
+胮 > hou\ ;
+胥 > sho\ ;
+胠 > kyo\ ;
+胝 > chi\ ;
+胛 > kou\ ;
+胚 > hai\ ;
+胘 > ken\ ;
+胖 > han\ ;
+胔 > shi\ ;
+胒 > dei\ ;
+胏 > shi\ ;
+肺 > hai\ ;
+肬 > yuu\ ;
+肪 > bou\ ;
+肧 > hai\ ;
+肦 > fun\ ;
+肢 > shi\ ;
+肜 > yuu\ ;
+肛 > kou\ ;
+肓 > kou\ ;
+肎 > kou\ ;
+聹 > dei\ ;
+聶 > jou\ ;
+聵 > gai\ ;
+聱 > gou\ ;
+聰 > sou\ ;
+聯 > ren\ ;
+聮 > ren\ ;
+聫 > ren\ ;
+聨 > ren\ ;
+聦 > sou\ ;
+聤 > tei\ ;
+聡 > sou\ ;
+聠 > hei\ ;
+聟 > sei\ ;
+聘 > hei\ ;
+聆 > rei\ ;
+耿 > kou\ ;
+耾 > kou\ ;
+耼 > tan\ ;
+耹 > kin\ ;
+耷 > tou\ ;
+耵 > tei\ ;
+耰 > yuu\ ;
+耮 > rou\ ;
+耬 > rou\ ;
+耨 > dou\ ;
+耦 > gou\ ;
+耠 > kou\ ;
+耟 > kyo\ ;
+耝 > sho\ ;
+耜 > shi\ ;
+耗 > mou\ ;
+耖 > sou\ ;
+耔 > shi\ ;
+耓 > tei\ ;
+耒 > rai\ ;
+耑 > tan\ ;
+耎 > zen\ ;
+耉 > kou\ ;
+耈 > kou\ ;
+耇 > kou\ ;
+耄 > mou\ ;
+耀 > you\ ;
+翿 > tou\ ;
+翾 > ken\ ;
+翽 > kai\ ;
+翺 > gou\ ;
+翰 > kan\ ;
+翫 > gan\ ;
+翩 > hen\ ;
+翨 > shi\ ;
+翦 > sen\ ;
+翥 > sho\ ;
+翣 > sou\ ;
+翠 > sui\ ;
+翛 > yuu\ ;
+翎 > rei\ ;
+翈 > kou\ ;
+翆 > sui\ ;
+翅 > shi\ ;
+翃 > kou\ ;
+羿 > gei\ ;
+羼 > san\ ;
+羸 > rui\ ;
+羶 > sen\ ;
+羴 > sen\ ;
+羪 > you\ ;
+羦 > kan\ ;
+羣 > gun\ ;
+羢 > jou\ ;
+羡 > sen\ ;
+羝 > tei\ ;
+羜 > cho\ ;
+羚 > rei\ ;
+羘 > sou\ ;
+羔 > kou\ ;
+羑 > yuu\ ;
+羐 > yuu\ ;
+羏 > you\ ;
+羂 > ken\ ;
+罾 > sou\ ;
+罽 > kei\ ;
+署 > sho\ ;
+罱 > gun\ ;
+罫 > kei\ ;
+罩 > tou\ ;
+罥 > ken\ ;
+罤 > tei\ ;
+罣 > kai\ ;
+罡 > kou\ ;
+罝 > sha\ ;
+罜 > shu\ ;
+罕 > kan\ ;
+罔 > mou\ ;
+罓 > mou\ ;
+罒 > mou\ ;
+网 > bou\ ;
+罍 > rai\ ;
+罇 > son\ ;
+罄 > kei\ ;
+缿 > tou\ ;
+缾 > hei\ ;
+缸 > kou\ ;
+缷 > sha\ ;
+缶 > kan\ ;
+缐 > sen\ ;
+绹 > tou\ ;
+纻 > cho\ ;
+纮 > kou\ ;
+纞 > ren\ ;
+纝 > rui\ ;
+纜 > ran\ ;
+纛 > tou\ ;
+纚 > shi\ ;
+纘 > sab\ ;
+纖 > sen\ ;
+纔 > san\ ;
+纐 > kou\ ;
+纎 > sen\ ;
+纍 > rui\ ;
+纊 > kou\ ;
+纉 > san\ ;
+纇 > rai\ ;
+纁 > kun\ ;
+繿 > ran\ ;
+繾 > ten\ ;
+繽 > hin\ ;
+繹 > eki\ ;
+繸 > sui\ ;
+繯 > ken\ ;
+繫 > kei\ ;
+繤 > san\ ;
+繢 > kai\ ;
+繟 > sen\ ;
+繝 > kan\ ;
+繙 > han\ ;
+繖 > san\ ;
+繐 > kei\ ;
+繎 > bin\ ;
+繋 > kei\ ;
+繊 > sen\ ;
+繇 > you\ ;
+繅 > sou\ ;
+繃 > hou\ ;
+縿 > san\ ;
+縺 > ren\ ;
+縵 > ban\ ;
+縴 > ken\ ;
+縳 > ten\ ;
+縲 > rui\ ;
+縨 > kou\ ;
+縧 > tou\ ;
+縣 > ken\ ;
+縢 > tou\ ;
+縡 > sai\ ;
+縗 > sai\ ;
+縒 > shi\ ;
+縑 > ken\ ;
+縆 > kou\ ;
+縂 > sou\ ;
+緻 > chi\ ;
+緺 > kai\ ;
+緹 > tei\ ;
+緶 > hen\ ;
+緵 > sou\ ;
+緱 > kou\ ;
+緫 > sou\ ;
+緪 > kou\ ;
+緦 > shi\ ;
+緥 > hou\ ;
+緢 > bou\ ;
+緡 > bin\ ;
+緞 > tan\ ;
+緜 > ben\ ;
+緘 > kan\ ;
+緖 > sho\ ;
+緍 > bin\ ;
+緌 > zui\ ;
+緇 > shi\ ;
+緄 > kon\ ;
+緂 > tan\ ;
+綻 > tan\ ;
+綸 > rin\ ;
+綷 > sai\ ;
+綵 > sai\ ;
+綳 > hou\ ;
+綰 > wan\ ;
+綯 > tou\ ;
+綮 > kei\ ;
+綫 > sen\ ;
+綪 > sen\ ;
+綣 > ken\ ;
+綟 > rei\ ;
+綜 > sou\ ;
+綗 > gei\ ;
+綑 > kon\ ;
+綏 > sui\ ;
+綋 > kou\ ;
+綉 > tou\ ;
+綈 > tei\ ;
+綆 > kou\ ;
+綂 > tou\ ;
+綁 > hou\ ;
+絽 > ryo\ ;
+絻 > bun\ ;
+絺 > chi\ ;
+絸 > ken\ ;
+絳 > kou\ ;
+絧 > tou\ ;
+絢 > ken\ ;
+絛 > jou\ ;
+絚 > kou\ ;
+絙 > kan\ ;
+絖 > kou\ ;
+絓 > kai\ ;
+絑 > shu\ ;
+絎 > kou\ ;
+絍 > jin\ ;
+絋 > kou\ ;
+絅 > kei\ ;
+絃 > gen\ ;
+絁 > shi\ ;
+紿 > tai\ ;
+紵 > cho\ ;
+紭 > kou\ ;
+紪 > sei\ ;
+紣 > sai\ ;
+紡 > bou\ ;
+紞 > tan\ ;
+紝 > jin\ ;
+紘 > kou\ ;
+紓 > sho\ ;
+紒 > kei\ ;
+紑 > huu\ ;
+紏 > tou\ ;
+紊 > bin\ ;
+紉 > jin\ ;
+紈 > kan\ ;
+系 > kei\ ;
+糲 > rei\ ;
+糰 > dan\ ;
+糫 > kai\ ;
+糩 > kai\ ;
+糦 > shi\ ;
+糤 > san\ ;
+糟 > sou\ ;
+糝 > san\ ;
+糚 > sou\ ;
+糙 > sou\ ;
+糕 > kou\ ;
+糍 > shi\ ;
+糉 > sou\ ;
+糈 > sho\ ;
+糇 > kou\ ;
+糅 > juu\ ;
+糄 > hen\ ;
+糂 > san\ ;
+粽 > sou\ ;
+粼 > rin\ ;
+粺 > hai\ ;
+粹 > sui\ ;
+粳 > kou\ ;
+粲 > san\ ;
+粰 > fuu\ ;
+粦 > rin\ ;
+粢 > shi\ ;
+粡 > tou\ ;
+粠 > kou\ ;
+粞 > sei\ ;
+粘 > nen\ ;
+粔 > kyo\ ;
+粋 > iki\ ;
+粇 > kou\ ;
+籽 > shi\ ;
+籼 > sen\ ;
+籭 > shi\ ;
+籩 > hen\ ;
+籧 > kyo\ ;
+籣 > ran\ ;
+籟 > rai\ ;
+籞 > gyo\ ;
+籛 > sen\ ;
+籘 > tou\ ;
+籓 > han\ ;
+籑 > sen\ ;
+籃 > ran\ ;
+簽 > sen\ ;
+簺 > sai\ ;
+簹 > tou\ ;
+簴 > kyo\ ;
+簳 > kan\ ;
+簧 > kou\ ;
+簦 > tou\ ;
+簟 > ten\ ;
+簞 > tan\ ;
+簛 > shi\ ;
+簓 > sen\ ;
+簒 > san\ ;
+簍 > rou\ ;
+簇 > sou\ ;
+簆 > kou\ ;
+簁 > shi\ ;
+篼 > tou\ ;
+篺 > hai\ ;
+篹 > san\ ;
+篷 > hou\ ;
+篵 > sou\ ;
+篲 > sui\ ;
+篪 > chi\ ;
+篨 > cho\ ;
+篦 > hei\ ;
+篡 > san\ ;
+篝 > kou\ ;
+篙 > kou\ ;
+篖 > tou\ ;
+篏 > kan\ ;
+篌 > kou\ ;
+篊 > kou\ ;
+篈 > hou\ ;
+篇 > hen\ ;
+篆 > ten\ ;
+篅 > sui\ ;
+篂 > sei\ ;
+箽 > tou\ ;
+箼 > oku\ ;
+箵 > sei\ ;
+箲 > sen\ ;
+箯 > hen\ ;
+箭 > sen\ ;
+箠 > sui\ ;
+箟 > kin\ ;
+箞 > ken\ ;
+箝 > kan\ ;
+箜 > kou\ ;
+箘 > kin\ ;
+箖 > rin\ ;
+箑 > sou\ ;
+箐 > sei\ ;
+箏 > sou\ ;
+箉 > kai\ ;
+箄 > hai\ ;
+筷 > kai\ ;
+筳 > tei\ ;
+筲 > sou\ ;
+筯 > cho\ ;
+筮 > sei\ ;
+筭 > san\ ;
+筬 > sei\ ;
+筪 > kou\ ;
+筩 > tou\ ;
+筦 > kan\ ;
+筥 > kyo\ ;
+筤 > rou\ ;
+筝 > sou\ ;
+筕 > kou\ ;
+筌 > sen\ ;
+筅 > sen\ ;
+筀 > kei\ ;
+笶 > shi\ ;
+笵 > han\ ;
+笱 > kou\ ;
+笭 > rei\ ;
+笫 > shi\ ;
+笪 > tan\ ;
+笩 > hai\ ;
+笨 > hon\ ;
+笣 > hou\ ;
+笞 > chi\ ;
+笙 > sou\ ;
+笘 > sen\ ;
+笋 > jun\ ;
+笇 > san\ ;
+竾 > shi\ ;
+竼 > hou\ ;
+竸 > kei\ ;
+竱 > sen\ ;
+竫 > sei\ ;
+竢 > shi\ ;
+竛 > rei\ ;
+竚 > cho\ ;
+站 > tan\ ;
+竑 > kou\ ;
+竎 > fuu\ ;
+竌 > sho\ ;
+竉 > rou\ ;
+竇 > tou\ ;
+竄 > zan\ ;
+窼 > sou\ ;
+窻 > sou\ ;
+窰 > you\ ;
+窞 > tan\ ;
+窘 > kin\ ;
+窗 > sou\ ;
+窖 > kou\ ;
+窔 > you\ ;
+窑 > you\ ;
+窐 > kei\ ;
+窈 > you\ ;
+窆 > bin\ ;
+窅 > you\ ;
+窂 > rou\ ;
+穾 > you\ ;
+穽 > sei\ ;
+穰 > jou\ ;
+穭 > ryo\ ;
+穧 > sei\ ;
+穣 > jou\ ;
+穠 > jou\ ;
+穟 > sui\ ;
+穝 > sai\ ;
+穜 > tou\ ;
+穈 > bon\ ;
+穇 > san\ ;
+穅 > kou\ ;
+穄 > sei\ ;
+穃 > you\ ;
+稾 > kou\ ;
+稺 > chi\ ;
+稵 > shi\ ;
+稴 > ren\ ;
+稰 > sho\ ;
+稯 > sou\ ;
+稧 > kei\ ;
+稟 > rin\ ;
+稛 > kon\ ;
+稗 > hie\ ;
+稔 > jin\ ;
+稊 > tei\ ;
+稉 > kou\ ;
+稈 > kan\ ;
+稇 > kon\ ;
+稅 > zei\ ;
+稂 > rou\ ;
+秼 > shu\ ;
+秱 > tou\ ;
+秭 > shi\ ;
+秬 > kyo\ ;
+秪 > chi\ ;
+秥 > den\ ;
+秢 > rei\ ;
+秞 > yuu\ ;
+秚 > han\ ;
+秖 > shi\ ;
+秔 > kou\ ;
+秏 > kou\ ;
+秊 > nen\ ;
+秉 > hei\ ;
+秈 > sen\ ;
+秇 > gei\ ;
+秄 > shi\ ;
+秂 > jin\ ;
+离 > chi\ ;
+禺 > guu\ ;
+禸 > juu\ ;
+禳 > jou\ ;
+禱 > tou\ ;
+禯 > jou\ ;
+禫 > tan\ ;
+禪 > zen\ ;
+禩 > shi\ ;
+禦 > gyo\ ;
+禘 > tei\ ;
+禖 > bai\ ;
+禔 > shi\ ;
+禓 > you\ ;
+禎 > tei\ ;
+禌 > shi\ ;
+禀 > rin\ ;
+祼 > kan\ ;
+祹 > tou\ ;
+祫 > kou\ ;
+祩 > shu\ ;
+祢 > dei\ ;
+祠 > shi\ ;
+祟 > sui\ ;
+祛 > kyo\ ;
+祘 > san\ ;
+祗 > shi\ ;
+祐 > yuu\ ;
+祋 > tai\ ;
+祊 > hou\ ;
+祉 > shi\ ;
+祆 > ken\ ;
+祅 > you\ ;
+祄 > kai\ ;
+祀 > shi\ ;
+礽 > jou\ ;
+礻 > shi\ ;
+礵 > sou\ ;
+礱 > rou\ ;
+礬 > ban\ ;
+礪 > rei\ ;
+礧 > rai\ ;
+礦 > kou\ ;
+礥 > kin\ ;
+礟 > hou\ ;
+礞 > bou\ ;
+礚 > kai\ ;
+礑 > tou\ ;
+礌 > rai\ ;
+礇 > iku\ ;
+礆 > ken\ ;
+礀 > kan\ ;
+磽 > kou\ ;
+磻 > han\ ;
+磺 > kou\ ;
+磷 > rin\ ;
+磴 > tou\ ;
+磳 > sou\ ;
+磲 > kyo\ ;
+磬 > kei\ ;
+磪 > sai\ ;
+磡 > kan\ ;
+磛 > san\ ;
+磚 > sen\ ;
+磖 > rou\ ;
+磕 > kai\ ;
+磓 > tai\ ;
+磑 > gai\ ;
+磎 > kei\ ;
+磌 > ten\ ;
+磊 > rai\ ;
+磉 > sou\ ;
+磇 > hei\ ;
+磅 > hou\ ;
+碾 > ten\ ;
+碽 > kou\ ;
+碳 > tan\ ;
+碲 > tei\ ;
+碱 > ken\ ;
+碰 > hou\ ;
+碯 > dou\ ;
+碭 > tou\ ;
+碨 > wai\ ;
+碞 > gan\ ;
+碝 > zen\ ;
+碚 > hai\ ;
+碘 > ten\ ;
+碓 > tai\ ;
+碎 > sai\ ;
+碍 > gai\ ;
+碊 > sen\ ;
+碇 > tei\ ;
+硼 > hou\ ;
+硯 > ken\ ;
+硨 > sha\ ;
+硤 > kou\ ;
+硣 > kou\ ;
+硡 > kou\ ;
+硠 > rou\ ;
+硜 > kou\ ;
+硙 > gai\ ;
+硒 > sei\ ;
+硏 > ken\ ;
+硎 > kei\ ;
+硇 > dou\ ;
+硅 > kei\ ;
+硄 > kou\ ;
+硃 > shu\ ;
+砿 > kou\ ;
+砺 > rei\ ;
+砲 > hou\ ;
+砰 > hou\ ;
+砭 > hen\ ;
+砠 > sho\ ;
+砎 > kai\ ;
+砍 > kan\ ;
+砌 > sei\ ;
+砅 > rei\ ;
+矼 > kou\ ;
+矸 > kan\ ;
+矴 > tei\ ;
+矰 > sou\ ;
+矮 > wai\ ;
+矦 > kou\ ;
+矙 > kan\ ;
+矕 > ban\ ;
+矒 > bou\ ;
+矉 > hin\ ;
+矈 > ben\ ;
+矇 > mou\ ;
+矃 > gei\ ;
+瞵 > rin\ ;
+瞱 > you\ ;
+瞰 > kan\ ;
+瞯 > kan\ ;
+瞪 > dou\ ;
+瞢 > bou\ ;
+瞞 > ban\ ;
+瞑 > mei\ ;
+瞍 > sou\ ;
+瞌 > kou\ ;
+瞀 > bou\ ;
+睾 > kou\ ;
+睽 > kei\ ;
+睺 > kou\ ;
+睴 > kon\ ;
+睳 > kei\ ;
+睲 > sei\ ;
+睬 > sai\ ;
+睪 > eki\ ;
+睧 > kon\ ;
+睥 > hei\ ;
+睤 > hei\ ;
+睠 > ken\ ;
+睟 > sui\ ;
+睞 > rai\ ;
+睜 > sei\ ;
+睛 > sei\ ;
+睚 > gai\ ;
+睒 > sen\ ;
+睏 > kon\ ;
+睍 > ken\ ;
+睇 > tei\ ;
+睆 > kan\ ;
+睅 > kan\ ;
+眸 > bou\ ;
+眷 > ken\ ;
+眵 > shi\ ;
+眴 > ken\ ;
+眯 > bei\ ;
+眮 > tou\ ;
+眨 > sou\ ;
+眦 > sei\ ;
+眥 > sei\ ;
+眤 > tei\ ;
+眢 > wan\ ;
+眛 > mai\ ;
+眚 > sei\ ;
+眙 > chi\ ;
+眔 > tou\ ;
+眎 > shi\ ;
+眊 > bou\ ;
+眈 > tan\ ;
+眆 > hou\ ;
+眄 > ben\ ;
+眀 > bei\ ;
+盼 > han\ ;
+盻 > kei\ ;
+盶 > gin\ ;
+盰 > kan\ ;
+盪 > tou\ ;
+盨 > shu\ ;
+盤 > ban\ ;
+盠 > rei\ ;
+盟 > mei\ ;
+盞 > san\ ;
+盖 > gai\ ;
+盔 > kai\ ;
+盒 > kou\ ;
+盍 > kou\ ;
+盌 > wan\ ;
+皽 > ten\ ;
+皨 > sei\ ;
+皥 > kou\ ;
+皣 > you\ ;
+皠 > sai\ ;
+皝 > kou\ ;
+皜 > kou\ ;
+皚 > gai\ ;
+皖 > kan\ ;
+皓 > kou\ ;
+皐 > kou\ ;
+皎 > kou\ ;
+皋 > kou\ ;
+皅 > hae\ ;
+皃 > bou\ ;
+皁 > sou\ ;
+癴 > ren\ ;
+癲 > ten\ ;
+癱 > tan\ ;
+癰 > you\ ;
+癬 > sen\ ;
+癩 > rai\ ;
+癢 > you\ ;
+癡 > chi\ ;
+癜 > den\ ;
+癙 > sho\ ;
+癘 > rei\ ;
+癕 > you\ ;
+癉 > tan\ ;
+癈 > hai\ ;
+癆 > rou\ ;
+癀 > kou\ ;
+瘻 > rou\ ;
+瘺 > rou\ ;
+瘵 > sai\ ;
+瘰 > rui\ ;
+瘩 > tou\ ;
+瘦 > sou\ ;
+瘣 > kai\ ;
+瘢 > han\ ;
+瘡 > sou\ ;
+瘝 > kan\ ;
+瘛 > sei\ ;
+瘙 > sou\ ;
+瘓 > tan\ ;
+瘒 > gon\ ;
+瘍 > you\ ;
+瘋 > fuu\ ;
+瘊 > kou\ ;
+瘈 > kei\ ;
+瘁 > sui\ ;
+痳 > rin\ ;
+痰 > tan\ ;
+痯 > kan\ ;
+痬 > eki\ ;
+痣 > aza\ ;
+痠 > san\ ;
+痙 > kei\ ;
+痘 > tou\ ;
+痗 > bai\ ;
+痎 > kai\ ;
+痌 > tou\ ;
+痊 > sen\ ;
+痃 > ken\ ;
+痁 > sen\ ;
+疽 > sho\ ;
+疼 > tou\ ;
+疺 > hou\ ;
+疸 > tan\ ;
+疵 > shi\ ;
+疳 > kan\ ;
+疱 > hou\ ;
+疫 > eki\ ;
+疥 > kai\ ;
+疣 > ibo\ ;
+疝 > san\ ;
+疓 > zai\ ;
+疐 > chi\ ;
+疉 > jou\ ;
+疂 > jou\ ;
+疁 > ryu\ ;
+畾 > sui\ ;
+畽 > ton\ ;
+畤 > shi\ ;
+畡 > kai\ ;
+畞 > bou\ ;
+畚 > hon\ ;
+畗 > tou\ ;
+畎 > ken\ ;
+畍 > kai\ ;
+畋 > ten\ ;
+畊 > kou\ ;
+畈 > han\ ;
+甿 > mou\ ;
+甾 > shi\ ;
+甽 > ken\ ;
+甹 > hei\ ;
+甸 > ten\ ;
+甴 > sou\ ;
+甯 > nei\ ;
+甬 > you\ ;
+甤 > zui\ ;
+產 > san\ ;
+甠 > sei\ ;
+甜 > ten\ ;
+甛 > ten\ ;
+甗 > gen\ ;
+甑 > sou\ ;
+甎 > sen\ ;
+甍 > bou\ ;
+甆 > shi\ ;
+甄 > ken\ ;
+甁 > hei\ ;
+瓿 > hou\ ;
+瓻 > chi\ ;
+瓷 > shi\ ;
+瓴 > rii\ ;
+瓲 > ton\ ;
+瓫 > hon\ ;
+瓪 > han\ ;
+瓨 > kou\ ;
+瓣 > ben\ ;
+瓛 > kan\ ;
+瓚 > san\ ;
+瓘 > kan\ ;
+瓓 > ran\ ;
+瓏 > rou\ ;
+瓌 > kai\ ;
+瓊 > kei\ ;
+瓉 > san\ ;
+瓈 > rei\ ;
+璿 > sen\ ;
+璻 > sui\ ;
+璲 > sui\ ;
+璯 > kai\ ;
+璮 > tan\ ;
+璫 > tou\ ;
+璪 > sou\ ;
+璩 > kyo\ ;
+璨 > san\ ;
+璠 > han\ ;
+璜 > kou\ ;
+璚 > kei\ ;
+璘 > rin\ ;
+璒 > tou\ ;
+璏 > tei\ ;
+璉 > rin\ ;
+璇 > sen\ ;
+璅 > sou\ ;
+璁 > sou\ ;
+璀 > sai\ ;
+瑾 > kin\ ;
+瑶 > you\ ;
+瑱 > ten\ ;
+瑰 > kai\ ;
+瑯 > rou\ ;
+瑭 > tou\ ;
+瑫 > tou\ ;
+瑤 > you\ ;
+瑢 > you\ ;
+瑞 > zui\ ;
+瑝 > kou\ ;
+瑙 > dou\ ;
+瑑 > ten\ ;
+瑍 > kan\ ;
+瑇 > tai\ ;
+瑆 > sei\ ;
+瑅 > tei\ ;
+瑄 > sen\ ;
+瑁 > bou\ ;
+琿 > kon\ ;
+琺 > hou\ ;
+琹 > kin\ ;
+琳 > rin\ ;
+琯 > kan\ ;
+琮 > sou\ ;
+琫 > hou\ ;
+琨 > kon\ ;
+琤 > sou\ ;
+琚 > kyo\ ;
+琅 > rou\ ;
+琄 > ken\ ;
+琁 > zen\ ;
+琀 > kan\ ;
+珽 > tei\ ;
+珻 > bai\ ;
+珺 > kun\ ;
+珹 > sei\ ;
+珵 > tei\ ;
+珮 > hai\ ;
+班 > han\ ;
+珩 > kou\ ;
+珧 > you\ ;
+珢 > gin\ ;
+珡 > kin\ ;
+珠 > shu\ ;
+珖 > kou\ ;
+珓 > kou\ ;
+珊 > san\ ;
+珉 > bin\ ;
+玽 > kou\ ;
+玼 > sei\ ;
+玹 > ken\ ;
+玷 > ten\ ;
+玵 > gan\ ;
+玳 > tai\ ;
+玲 > rei\ ;
+玭 > hin\ ;
+玫 > bai\ ;
+玪 > kan\ ;
+玢 > hin\ ;
+玠 > kai\ ;
+玟 > bin\ ;
+玜 > kou\ ;
+玕 > kan\ ;
+玎 > tei\ ;
+玁 > ken\ ;
+獷 > kou\ ;
+獱 > hin\ ;
+獰 > dou\ ;
+獯 > kun\ ;
+獮 > sen\ ;
+獬 > kai\ ;
+獫 > ken\ ;
+獪 > kai\ ;
+獩 > wai\ ;
+獧 > ken\ ;
+獞 > tou\ ;
+獘 > hei\ ;
+獖 > fun\ ;
+獒 > gou\ ;
+獊 > sou\ ;
+獅 > shi\ ;
+獃 > gai\ ;
+猽 > bei\ ;
+猻 > son\ ;
+猺 > you\ ;
+猷 > yuu\ ;
+猵 > hen\ ;
+猴 > kou\ ;
+猱 > dou\ ;
+猯 > tan\ ;
+献 > ken\ ;
+猩 > sei\ ;
+猥 > wai\ ;
+猞 > sha\ ;
+猛 > mou\ ;
+猙 > sou\ ;
+猘 > sei\ ;
+猍 > rai\ ;
+猊 > gei\ ;
+猅 > hai\ ;
+猄 > kei\ ;
+猂 > kan\ ;
+狾 > sei\ ;
+狻 > san\ ;
+狺 > gen\ ;
+狷 > ken\ ;
+狴 > hei\ ;
+狩 > shu\ ;
+狠 > gan\ ;
+狟 > kan\ ;
+狝 > sen\ ;
+狖 > yuu\ ;
+狎 > kou\ ;
+狌 > sei\ ;
+狀 > jou\ ;
+犾 > gin\ ;
+犹 > yuu\ ;
+犴 > kan\ ;
+犲 > sai\ ;
+犛 > bou\ ;
+犒 > kou\ ;
+犎 > hou\ ;
+犍 > ken\ ;
+犉 > jun\ ;
+犇 > hon\ ;
+犀 > sai\ ;
+牽 > ken\ ;
+牼 > kou\ ;
+牻 > bou\ ;
+牸 > shi\ ;
+牷 > sen\ ;
+牴 > tei\ ;
+牮 > sen\ ;
+牬 > hai\ ;
+牨 > kou\ ;
+牣 > jin\ ;
+牟 > bou\ ;
+牝 > hin\ ;
+牚 > tou\ ;
+牖 > yuu\ ;
+牕 > sou\ ;
+牓 > bou\ ;
+牐 > sou\ ;
+牏 > chu\ ;
+牎 > sou\ ;
+牋 > sen\ ;
+牅 > you\ ;
+牂 > sou\ ;
+爼 > sho\ ;
+爻 > kou\ ;
+爨 > san\ ;
+爤 > ran\ ;
+爟 > kan\ ;
+爗 > you\ ;
+爉 > rou\ ;
+爈 > ryo\ ;
+燿 > you\ ;
+燾 > tou\ ;
+燼 > jin\ ;
+燹 > sen\ ;
+燧 > sui\ ;
+燦 > san\ ;
+燥 > sou\ ;
+燠 > oki\ ;
+燜 > mon\ ;
+燙 > tou\ ;
+燗 > ran\ ;
+燔 > han\ ;
+燓 > fun\ ;
+燐 > rin\ ;
+燌 > fun\ ;
+燉 > ton\ ;
+燁 > you\ ;
+燀 > sen\ ;
+熿 > kou\ ;
+熾 > shi\ ;
+熳 > man\ ;
+熲 > kei\ ;
+熯 > zen\ ;
+熬 > gou\ ;
+熢 > hou\ ;
+熠 > yuu\ ;
+熕 > kou\ ;
+熔 > you\ ;
+熒 > kei\ ;
+熏 > kun\ ;
+熌 > sen\ ;
+熀 > you\ ;
+煹 > kou\ ;
+煬 > you\ ;
+煨 > wai\ ;
+煥 > kan\ ;
+煢 > kei\ ;
+煠 > you\ ;
+煜 > iku\ ;
+煚 > kei\ ;
+煗 > dan\ ;
+煖 > dan\ ;
+煑 > sha\ ;
+煌 > kou\ ;
+煋 > sei\ ;
+煊 > ken\ ;
+煉 > ren\ ;
+煅 > tan\ ;
+焭 > kei\ ;
+焠 > sai\ ;
+焞 > ton\ ;
+焜 > kon\ ;
+焙 > hou\ ;
+焕 > kan\ ;
+焋 > sou\ ;
+焄 > kun\ ;
+烽 > hou\ ;
+烺 > kou\ ;
+烹 > hou\ ;
+烱 > kei\ ;
+烤 > kou\ ;
+烝 > jou\ ;
+烜 > ten\ ;
+烘 > kou\ ;
+烖 > sai\ ;
+烔 > tou\ ;
+烑 > you\ ;
+烋 > kou\ ;
+烊 > you\ ;
+烉 > kan\ ;
+炷 > shu\ ;
+炴 > you\ ;
+炳 > hei\ ;
+炱 > tai\ ;
+炰 > hou\ ;
+炯 > kei\ ;
+炮 > hou\ ;
+炫 > ken\ ;
+炛 > you\ ;
+炙 > sha\ ;
+炘 > kin\ ;
+炗 > kou\ ;
+炖 > ton\ ;
+炕 > kou\ ;
+炔 > kei\ ;
+炒 > sou\ ;
+炆 > bun\ ;
+炅 > kei\ ;
+灾 > sai\ ;
+灶 > sou\ ;
+灵 > rei\ ;
+灮 > kou\ ;
+灤 > ran\ ;
+灣 > wan\ ;
+灝 > kou\ ;
+灘 > dan\ ;
+灑 > sai\ ;
+灋 > hou\ ;
+灊 > sen\ ;
+灉 > you\ ;
+灃 > huu\ ;
+瀾 > ran\ ;
+瀼 > jou\ ;
+瀲 > ren\ ;
+瀨 > rai\ ;
+瀦 > cho\ ;
+瀣 > kai\ ;
+瀞 > jou\ ;
+瀚 > kan\ ;
+瀗 > ken\ ;
+瀍 > ten\ ;
+瀉 > sha\ ;
+瀁 > you\ ;
+瀀 > yuu\ ;
+濾 > ryo\ ;
+濽 > san\ ;
+濵 > hin\ ;
+濳 > sen\ ;
+濫 > ran\ ;
+濨 > shi\ ;
+濤 > tou\ ;
+濠 > gou\ ;
+濔 > dei\ ;
+濊 > kai\ ;
+濆 > fun\ ;
+濂 > ren\ ;
+澶 > sen\ ;
+澳 > iku\ ;
+澱 > ten\ ;
+澰 > ren\ ;
+澯 > san\ ;
+澮 > kai\ ;
+澪 > rei\ ;
+澨 > sei\ ;
+澧 > rei\ ;
+澥 > kai\ ;
+澣 > kan\ ;
+澡 > sou\ ;
+澟 > rin\ ;
+澚 > iku\ ;
+澗 > kan\ ;
+澖 > kan\ ;
+澔 > kou\ ;
+澒 > kou\ ;
+澎 > hou\ ;
+澍 > shu\ ;
+澌 > shi\ ;
+澋 > kou\ ;
+澇 > rou\ ;
+澃 > gei\ ;
+澁 > juu\ ;
+澀 > juu\ ;
+潾 > rin\ ;
+潼 > dou\ ;
+潺 > san\ ;
+潸 > san\ ;
+潴 > cho\ ;
+潯 > jin\ ;
+潭 > tan\ ;
+潬 > tan\ ;
+潨 > sou\ ;
+潦 > rou\ ;
+潤 > jun\ ;
+潢 > kou\ ;
+潡 > ton\ ;
+潛 > sen\ ;
+潘 > han\ ;
+潓 > kei\ ;
+潒 > tou\ ;
+潅 > kan\ ;
+潀 > sou\ ;
+漾 > you\ ;
+漼 > sai\ ;
+漶 > kan\ ;
+漱 > sou\ ;
+漰 > hou\ ;
+漯 > tou\ ;
+漭 > bou\ ;
+漫 > man\ ;
+漩 > sen\ ;
+漛 > tou\ ;
+漖 > kou\ ;
+漑 > gai\ ;
+漌 > kin\ ;
+漈 > sei\ ;
+漄 > gai\ ;
+滾 > kon\ ;
+滽 > you\ ;
+滻 > san\ ;
+满 > man\ ;
+滞 > tai\ ;
+滚 > kon\ ;
+滕 > tou\ ;
+滔 > tou\ ;
+滎 > kei\ ;
+滍 > chi\ ;
+滉 > kou\ ;
+滈 > kou\ ;
+滇 > ten\ ;
+滄 > sou\ ;
+滂 > bou\ ;
+滁 > cho\ ;
+溿 > han\ ;
+溻 > tou\ ;
+溷 > kon\ ;
+溲 > sou\ ;
+溮 > shi\ ;
+溟 > mei\ ;
+溙 > tai\ ;
+溘 > kou\ ;
+溓 > ren\ ;
+溏 > tou\ ;
+溉 > gai\ ;
+湽 > shi\ ;
+湻 > jun\ ;
+湶 > sen\ ;
+湳 > dan\ ;
+湲 > kan\ ;
+湣 > bin\ ;
+湟 > kou\ ;
+湞 > tou\ ;
+湝 > kai\ ;
+湛 > tan\ ;
+湗 > hou\ ;
+湔 > sen\ ;
+湓 > hon\ ;
+湑 > sho\ ;
+湏 > kai\ ;
+湎 > ben\ ;
+湍 > tan\ ;
+湊 > sou\ ;
+湉 > ten\ ;
+湈 > bai\ ;
+湅 > ren\ ;
+湃 > hai\ ;
+渾 > kon\ ;
+渻 > sei\ ;
+渹 > kou\ ;
+游 > yuu\ ;
+渲 > sen\ ;
+渧 > tei\ ;
+渥 > aku\ ;
+渢 > huu\ ;
+渟 > tei\ ;
+渙 > kan\ ;
+渓 > kei\ ;
+渀 > hon\ ;
+淸 > sei\ ;
+淶 > rai\ ;
+淰 > den\ ;
+淯 > iku\ ;
+淮 > wai\ ;
+淬 > sai\ ;
+淪 > rin\ ;
+淨 > jou\ ;
+淦 > kan\ ;
+淟 > ten\ ;
+淛 > sei\ ;
+淚 > rui\ ;
+淙 > sou\ ;
+淘 > tou\ ;
+淖 > dou\ ;
+淒 > sei\ ;
+淏 > kou\ ;
+淎 > hou\ ;
+淊 > kan\ ;
+淆 > kou\ ;
+淄 > shi\ ;
+淀 > ten\ ;
+涽 > kon\ ;
+涷 > tou\ ;
+涵 > kan\ ;
+涬 > kei\ ;
+涪 > huu\ ;
+涣 > kan\ ;
+涛 > tou\ ;
+涚 > sei\ ;
+涘 > shi\ ;
+涗 > sei\ ;
+涖 > rei\ ;
+涕 > tei\ ;
+涔 > san\ ;
+涓 > ken\ ;
+涒 > ton\ ;
+涑 > sou\ ;
+涇 > tei\ ;
+浼 > bai\ ;
+浰 > ren\ ;
+浩 > kou\ ;
+浧 > tei\ ;
+浦 > ura\ ;
+浥 > yuu\ ;
+浤 > kou\ ;
+浣 > kan\ ;
+浟 > yuu\ ;
+洽 > kou\ ;
+洸 > kou\ ;
+洮 > tou\ ;
+洪 > kou\ ;
+洨 > kou\ ;
+洚 > kou\ ;
+洙 > shu\ ;
+洊 > sen\ ;
+洄 > kai\ ;
+泴 > kan\ ;
+泲 > sei\ ;
+泰 > tai\ ;
+泯 > bin\ ;
+泮 > han\ ;
+泫 > ken\ ;
+泪 > rui\ ;
+泩 > sou\ ;
+泠 > rei\ ;
+泜 > tei\ ;
+泛 > han\ ;
+泚 > sei\ ;
+泙 > hou\ ;
+泗 > shi\ ;
+泖 > bou\ ;
+泔 > kan\ ;
+泑 > yuu\ ;
+泍 > hon\ ;
+泂 > kei\ ;
+沾 > ten\ ;
+沺 > ten\ ;
+沵 > dei\ ;
+沴 > rei\ ;
+沮 > sho\ ;
+沟 > kou\ ;
+沜 > han\ ;
+沛 > hai\ ;
+沚 > shi\ ;
+沗 > ten\ ;
+沔 > ben\ ;
+沓 > tou\ ;
+沆 > kou\ ;
+沅 > gen\ ;
+汾 > fun\ ;
+汸 > hou\ ;
+汶 > bun\ ;
+汴 > hen\ ;
+汳 > hen\ ;
+汯 > kou\ ;
+汭 > zei\ ;
+汫 > kei\ ;
+汧 > ken\ ;
+汞 > kou\ ;
+汜 > shi\ ;
+汕 > san\ ;
+汒 > bou\ ;
+汏 > tai\ ;
+汎 > han\ ;
+汍 > kan\ ;
+氾 > han\ ;
+氽 > ton\ ;
+氺 > sui\ ;
+氹 > kan\ ;
+氮 > tan\ ;
+氧 > you\ ;
+氦 > gai\ ;
+氛 > fun\ ;
+氙 > sen\ ;
+氓 > bou\ ;
+氐 > tei\ ;
+氉 > sou\ ;
+氄 > juu\ ;
+毿 > san\ ;
+毷 > bou\ ;
+毳 > zei\ ;
+毯 > tan\ ;
+毧 > juu\ ;
+毡 > sen\ ;
+毚 > san\ ;
+毓 > iku\ ;
+每 > mai\ ;
+毌 > kan\ ;
+殽 > kou\ ;
+殸 > kei\ ;
+殳 > shu\ ;
+殲 > sen\ ;
+殱 > sen\ ;
+殯 > hin\ ;
+殮 > ren\ ;
+殫 > tan\ ;
+殩 > san\ ;
+殨 > kai\ ;
+殣 > kin\ ;
+殢 > tei\ ;
+殗 > you\ ;
+殕 > fuu\ ;
+殉 > jun\ ;
+殅 > sou\ ;
+殄 > ten\ ;
+殃 > you\ ;
+殀 > you\ ;
+歲 > sei\ ;
+歮 > juu\ ;
+歫 > kyo\ ;
+歝 > eki\ ;
+歛 > kan\ ;
+歓 > kan\ ;
+歉 > ken\ ;
+歆 > kin\ ;
+歃 > sou\ ;
+欿 > tan\ ;
+款 > kan\ ;
+欽 > kin\ ;
+欵 > kan\ ;
+欬 > kai\ ;
+欣 > gon\ ;
+欞 > rei\ ;
+欗 > ran\ ;
+欖 > ran\ ;
+欒 > ran\ ;
+欑 > san\ ;
+欐 > rei\ ;
+欉 > sou\ ;
+欆 > sou\ ;
+欄 > ran\ ;
+欃 > san\ ;
+櫼 > sen\ ;
+櫺 > rei\ ;
+櫰 > kai\ ;
+櫧 > sho\ ;
+櫥 > chu\ ;
+櫤 > sen\ ;
+櫜 > kou\ ;
+櫚 > ryo\ ;
+櫖 > ryo\ ;
+櫕 > san\ ;
+櫔 > rei\ ;
+櫑 > rai\ ;
+櫐 > rui\ ;
+櫌 > yuu\ ;
+櫉 > chu\ ;
+櫈 > tou\ ;
+櫆 > kai\ ;
+櫂 > kai\ ;
+檾 > kei\ ;
+檻 > ori\ ;
+檸 > nei\ ;
+檳 > bin\ ;
+檰 > hen\ ;
+檯 > tai\ ;
+檮 > tou\ ;
+檬 > bou\ ;
+檩 > rin\ ;
+檠 > kei\ ;
+檞 > kai\ ;
+檑 > rai\ ;
+檉 > tei\ ;
+檇 > sui\ ;
+檆 > san\ ;
+檁 > rin\ ;
+橾 > shu\ ;
+橪 > zen\ ;
+橧 > sou\ ;
+橦 > tou\ ;
+橤 > zui\ ;
+橖 > tou\ ;
+橕 > tou\ ;
+橑 > rou\ ;
+橎 > han\ ;
+橉 > rin\ ;
+橈 > kai\ ;
+橇 > zei\ ;
+橄 > kan\ ;
+樿 > sen\ ;
+樷 > sou\ ;
+樶 > sai\ ;
+樨 > sei\ ;
+樤 > jou\ ;
+樠 > bon\ ;
+樞 > suu\ ;
+樗 > cho\ ;
+樔 > sou\ ;
+樏 > rui\ ;
+樌 > kan\ ;
+樋 > toi\ ;
+樊 > han\ ;
+樃 > rou\ ;
+樁 > tou\ ;
+槿 > kin\ ;
+槾 > ban\ ;
+槹 > kou\ ;
+槵 > kan\ ;
+槱 > yuu\ ;
+槯 > sai\ ;
+槫 > tan\ ;
+槪 > gai\ ;
+槧 > san\ ;
+槞 > rou\ ;
+槝 > tou\ ;
+槙 > ten\ ;
+槓 > kou\ ;
+槑 > bai\ ;
+槐 > kai\ ;
+槈 > dou\ ;
+槃 > han\ ;
+槁 > kou\ ;
+榼 > kou\ ;
+榸 > tai\ ;
+榱 > sui\ ;
+榯 > shi\ ;
+榭 > sha\ ;
+榦 > kan\ ;
+榥 > kou\ ;
+榠 > bei\ ;
+榜 > bou\ ;
+榕 > you\ ;
+榔 > rou\ ;
+楻 > kou\ ;
+楺 > juu\ ;
+楷 > kai\ ;
+楴 > tei\ ;
+楳 > bai\ ;
+楱 > sou\ ;
+楯 > jun\ ;
+楮 > cho\ ;
+楪 > you\ ;
+楩 > hen\ ;
+楨 > tei\ ;
+楦 > ken\ ;
+楥 > ken\ ;
+楤 > sou\ ;
+楞 > rou\ ;
+楝 > ren\ ;
+楙 > bou\ ;
+楗 > ken\ ;
+楎 > kon\ ;
+椽 > ten\ ;
+椶 > shu\ ;
+椳 > wai\ ;
+椱 > fuu\ ;
+椦 > ken\ ;
+椢 > kai\ ;
+椗 > tei\ ;
+椖 > hou\ ;
+椑 > hei\ ;
+椐 > kyo\ ;
+椌 > kou\ ;
+椉 > jou\ ;
+棼 > hun\ ;
+棹 > sao\ ;
+棶 > rai\ ;
+棵 > kan\ ;
+棱 > rou\ ;
+棰 > soi\ ;
+棯 > jin\ ;
+棭 > eki\ ;
+棬 > ken\ ;
+棨 > kei\ ;
+棧 > san\ ;
+棥 > han\ ;
+棣 > tei\ ;
+棡 > kou\ ;
+棠 > tou\ ;
+棙 > rei\ ;
+棖 > tou\ ;
+棕 > shu\ ;
+棔 > kon\ ;
+棓 > hou\ ;
+棑 > hai\ ;
+棍 > kon\ ;
+棌 > sai\ ;
+棉 > men\ ;
+棈 > sen\ ;
+棆 > rin\ ;
+棅 > hei\ ;
+梼 > tou\ ;
+梹 > bin\ ;
+梵 > fuu\ ;
+梱 > kon\ ;
+梪 > tou\ ;
+梡 > kan\ ;
+梠 > ryo\ ;
+梚 > ban\ ;
+梘 > ken\ ;
+梗 > kou\ ;
+梖 > hai\ ;
+梔 > shi\ ;
+梍 > sou\ ;
+梈 > hou\ ;
+梆 > hou\ ;
+梄 > you\ ;
+桿 > kan\ ;
+桾 > kun\ ;
+桻 > hou\ ;
+桹 > rou\ ;
+桵 > zui\ ;
+桱 > kei\ ;
+桯 > tei\ ;
+桮 > hai\ ;
+档 > tou\ ;
+桓 > kan\ ;
+桒 > sou\ ;
+桊 > ken\ ;
+桅 > gai\ ;
+桄 > kou\ ;
+栽 > sai\ ;
+栴 > sen\ ;
+栳 > rou\ ;
+栲 > gou\ ;
+栯 > iku\ ;
+栬 > sei\ ;
+栫 > son\ ;
+栟 > hei\ ;
+栝 > ten\ ;
+栙 > kou\ ;
+栖 > sei\ ;
+栔 > kei\ ;
+栈 > san\ ;
+柹 > shi\ ;
+柶 > shi\ ;
+柬 > kan\ ;
+柦 > tan\ ;
+柢 > tei\ ;
+柜 > kyo\ ;
+柙 > kou\ ;
+柘 > sha\ ;
+柑 > kan\ ;
+柉 > han\ ;
+柈 > han\ ;
+柆 > rou\ ;
+柃 > rei\ ;
+枾 > shi\ ;
+枽 > sou\ ;
+枼 > you\ ;
+枹 > hou\ ;
+枴 > kai\ ;
+枲 > shi\ ;
+枰 > hei\ ;
+枢 > suu\ ;
+枛 > sou\ ;
+枘 > zei\ ;
+枖 > you\ ;
+枓 > shu\ ;
+枏 > dan\ ;
+枌 > fun\ ;
+枋 > hou\ ;
+枅 > kei\ ;
+构 > kou\ ;
+杼 > cho\ ;
+杴 > ken\ ;
+杳 > you\ ;
+杲 > kou\ ;
+杮 > hai\ ;
+杭 > kui\ ;
+杬 > gen\ ;
+杧 > man\ ;
+杠 > kou\ ;
+杝 > chi\ ;
+杕 > tei\ ;
+杆 > kan\ ;
+朿 > shi\ ;
+朾 > tou\ ;
+朷 > tou\ ;
+朩 > tou\ ;
+朢 > bou\ ;
+朜 > ton\ ;
+朙 > mei\ ;
+朘 > sen\ ;
+朖 > rou\ ;
+朎 > rei\ ;
+朌 > han\ ;
+曺 > sou\ ;
+曹 > sou\ ;
+曮 > gan\ ;
+曬 > sai\ ;
+曫 > ran\ ;
+曩 > dou\ ;
+曨 > rou\ ;
+曡 > jou\ ;
+曠 > kou\ ;
+曛 > kun\ ;
+曚 > bou\ ;
+曔 > kei\ ;
+曎 > eki\ ;
+曈 > tou\ ;
+曅 > you\ ;
+曄 > you\ ;
+曃 > tai\ ;
+曂 > kou\ ;
+暾 > ton\ ;
+暻 > kei\ ;
+暹 > sen\ ;
+暵 > kan\ ;
+暭 > kou\ ;
+暤 > kou\ ;
+暠 > kou\ ;
+暟 > kai\ ;
+暝 > mei\ ;
+暚 > you\ ;
+暘 > you\ ;
+暒 > sei\ ;
+暌 > kei\ ;
+暋 > bin\ ;
+暄 > ken\ ;
+晹 > eki\ ;
+晸 > tei\ ;
+晵 > kei\ ;
+晬 > sai\ ;
+晪 > ten\ ;
+晧 > kou\ ;
+晦 > kai\ ;
+晠 > sei\ ;
+晟 > sei\ ;
+晜 > kon\ ;
+晛 > ken\ ;
+晚 > ban\ ;
+晘 > kan\ ;
+晗 > kan\ ;
+晎 > kou\ ;
+晆 > kai\ ;
+晅 > ken\ ;
+晄 > kou\ ;
+晃 > kou\ ;
+昿 > kou\ ;
+昻 > kou\ ;
+昱 > iku\ ;
+昰 > shi\ ;
+昬 > kon\ ;
+昪 > hen\ ;
+昧 > mai\ ;
+昦 > kou\ ;
+昤 > rei\ ;
+昡 > ken\ ;
+昞 > hei\ ;
+昝 > san\ ;
+昜 > you\ ;
+昕 > kin\ ;
+昑 > kin\ ;
+昏 > kon\ ;
+昍 > ken\ ;
+昊 > kou\ ;
+昉 > hou\ ;
+昄 > han\ ;
+旻 > bin\ ;
+旵 > tan\ ;
+旲 > tai\ ;
+旱 > kan\ ;
+旰 > kan\ ;
+旛 > han\ ;
+旙 > han\ ;
+旘 > shi\ ;
+旔 > ken\ ;
+旌 > sei\ ;
+旆 > hai\ ;
+旄 > bou\ ;
+旃 > sen\ ;
+斿 > you\ ;
+施 > shi\ ;
+斴 > rin\ ;
+斳 > kin\ ;
+斧 > ono\ ;
+斦 > gin\ ;
+斤 > kin\ ;
+斕 > ran\ ;
+斒 > han\ ;
+斌 > hin\ ;
+斊 > sei\ ;
+斆 > kou\ ;
+斅 > kou\ ;
+斂 > ren\ ;
+斁 > eki\ ;
+敻 > kei\ ;
+敲 > kou\ ;
+敯 > bin\ ;
+敭 > you\ ;
+敩 > kou\ ;
+敦 > ton\ ;
+敟 > ten\ ;
+敝 > hei\ ;
+敖 > gou\ ;
+敔 > gyo\ ;
+敃 > bin\ ;
+攽 > han\ ;
+攼 > kan\ ;
+攻 > kou\ ;
+攸 > yuu\ ;
+攷 > kou\ ;
+攮 > dou\ ;
+攬 > ran\ ;
+攩 > tou\ ;
+攦 > rei\ ;
+攤 > tan\ ;
+攣 > ren\ ;
+攢 > san\ ;
+攟 > kun\ ;
+攜 > kei\ ;
+攛 > san\ ;
+攙 > sen\ ;
+攘 > jou\ ;
+攔 > ran\ ;
+攓 > ken\ ;
+攏 > rou\ ;
+攈 > kun\ ;
+攅 > san\ ;
+攄 > cho\ ;
+攁 > you\ ;
+攀 > han\ ;
+擾 > jou\ ;
+擻 > sou\ ;
+擺 > hai\ ;
+擶 > sen\ ;
+擰 > dou\ ;
+擯 > hin\ ;
+擭 > kyo\ ;
+擪 > you\ ;
+擥 > ran\ ;
+擤 > kou\ ;
+擣 > tou\ ;
+擠 > sei\ ;
+據 > kyo\ ;
+擕 > kei\ ;
+擒 > kin\ ;
+擐 > kan\ ;
+擎 > kei\ ;
+擋 > tou\ ;
+擄 > ryo\ ;
+擂 > rai\ ;
+擁 > you\ ;
+撿 > ren\ ;
+撽 > kou\ ;
+撼 > kan\ ;
+撳 > kin\ ;
+撰 > san\ ;
+撦 > sha\ ;
+撣 > tan\ ;
+撡 > sou\ ;
+撞 > shu\ ;
+撛 > rin\ ;
+撚 > nen\ ;
+撙 > son\ ;
+撘 > tou\ ;
+撕 > sei\ ;
+撓 > dou\ ;
+撒 > san\ ;
+撏 > san\ ;
+撈 > rou\ ;
+摻 > san\ ;
+摶 > tan\ ;
+摴 > cho\ ;
+摳 > kou\ ;
+摯 > shi\ ;
+摧 > sai\ ;
+摡 > kai\ ;
+摠 > sou\ ;
+摟 > rou\ ;
+摜 > kan\ ;
+摛 > chi\ ;
+摚 > tou\ ;
+摓 > hou\ ;
+摒 > hei\ ;
+摇 > you\ ;
+搴 > ken\ ;
+搯 > tou\ ;
+搭 > tou\ ;
+搬 > han\ ;
+搪 > tou\ ;
+搨 > tou\ ;
+搥 > tai\ ;
+搤 > aku\ ;
+搞 > kou\ ;
+搘 > shi\ ;
+搗 > tou\ ;
+搔 > sou\ ;
+搒 > hou\ ;
+搆 > kou\ ;
+揹 > hai\ ;
+揷 > sou\ ;
+揵 > ken\ ;
+揭 > kei\ ;
+揩 > kai\ ;
+揥 > tei\ ;
+揣 > shi\ ;
+揖 > yuu\ ;
+揔 > sou\ ;
+揓 > shi\ ;
+插 > sou\ ;
+揎 > sen\ ;
+揈 > kou\ ;
+揅 > ken\ ;
+揁 > tei\ ;
+揀 > kan\ ;
+掽 > hou\ ;
+掯 > kou\ ;
+掮 > ken\ ;
+掭 > ten\ ;
+掫 > sou\ ;
+掙 > sou\ ;
+掖 > eki\ ;
+掔 > kan\ ;
+掐 > kou\ ;
+掏 > tou\ ;
+掊 > hou\ ;
+掉 > tou\ ;
+掄 > ron\ ;
+掂 > ten\ ;
+掀 > kin\ ;
+捿 > sei\ ;
+捶 > sui\ ;
+捵 > ten\ ;
+捴 > fun\ ;
+捱 > gai\ ;
+捭 > hai\ ;
+捫 > mon\ ;
+捧 > hou\ ;
+捦 > kin\ ;
+捥 > wan\ ;
+换 > kan\ ;
+捛 > ryo\ ;
+捘 > son\ ;
+捎 > sou\ ;
+捍 > kan\ ;
+捊 > hou\ ;
+捆 > kon\ ;
+捃 > kun\ ;
+挺 > tei\ ;
+挹 > yuu\ ;
+挵 > rou\ ;
+挭 > kou\ ;
+挍 > kou\ ;
+挊 > rou\ ;
+挄 > kou\ ;
+挂 > kei\ ;
+拼 > hou\ ;
+拷 > gou\ ;
+拴 > sen\ ;
+拯 > jou\ ;
+拪 > sen\ ;
+拚 > hen\ ;
+拒 > kyo\ ;
+拑 > kan\ ;
+拐 > kai\ ;
+拎 > rei\ ;
+拌 > han\ ;
+拋 > hou\ ;
+拈 > den\ ;
+拄 > chu\ ;
+抿 > bin\ ;
+抾 > kyo\ ;
+抺 > bai\ ;
+抬 > tai\ ;
+抨 > hou\ ;
+抦 > hei\ ;
+抖 > tou\ ;
+抔 > hou\ ;
+抏 > gan\ ;
+抃 > ben\ ;
+扽 > ton\ ;
+扼 > aku\ ;
+扺 > tei\ ;
+扳 > han\ ;
+扭 > juu\ ;
+扣 > kou\ ;
+扞 > kan\ ;
+扛 > kou\ ;
+扔 > jou\ ;
+扒 > hai\ ;
+扌 > shu\ ;
+扃 > kei\ ;
+扂 > ten\ ;
+扁 > hen\ ;
+戾 > rei\ ;
+戼 > bou\ ;
+戹 > aku\ ;
+戩 > sen\ ;
+戧 > sou\ ;
+戡 > kan\ ;
+戔 > san\ ;
+戎 > juu\ ;
+戇 > tou\ ;
+戃 > tou\ ;
+戁 > dan\ ;
+懽 > kan\ ;
+懺 > zan\ ;
+懶 > ran\ ;
+懴 > zan\ ;
+懭 > kou\ ;
+懬 > kou\ ;
+懩 > you\ ;
+懣 > mon\ ;
+懢 > ran\ ;
+懞 > bou\ ;
+懝 > gai\ ;
+懜 > bou\ ;
+懔 > rin\ ;
+懍 > rin\ ;
+懌 > eki\ ;
+懋 > bou\ ;
+懈 > kai\ ;
+懇 > kon\ ;
+懆 > sou\ ;
+懂 > tou\ ;
+懁 > ken\ ;
+懀 > wai\ ;
+憾 > kan\ ;
+憼 > kei\ ;
+憹 > dou\ ;
+憸 > sen\ ;
+憲 > ken\ ;
+憫 > bin\ ;
+憪 > kan\ ;
+憨 > kan\ ;
+憥 > rou\ ;
+憝 > tai\ ;
+憚 > tan\ ;
+憗 > gin\ ;
+憓 > kei\ ;
+憒 > kai\ ;
+憊 > hai\ ;
+憇 > kei\ ;
+憄 > chi\ ;
+憃 > tou\ ;
+憁 > sou\ ;
+慻 > ken\ ;
+慸 > tei\ ;
+慷 > kou\ ;
+慶 > kei\ ;
+慵 > you\ ;
+慳 > kan\ ;
+慲 > ban\ ;
+慱 > tan\ ;
+慭 > gin\ ;
+慬 > kin\ ;
+慧 > kei\ ;
+慠 > gou\ ;
+慟 > dou\ ;
+慚 > zan\ ;
+慙 > zan\ ;
+慉 > kin\ ;
+慆 > tou\ ;
+慅 > sou\ ;
+慂 > you\ ;
+慁 > kon\ ;
+愿 > gen\ ;
+愹 > you\ ;
+愷 > kai\ ;
+愴 > sou\ ;
+愰 > kau\ ;
+愢 > sai\ ;
+愡 > sou\ ;
+愞 > zen\ ;
+愗 > bou\ ;
+愓 > tou\ ;
+愒 > kei\ ;
+愑 > you\ ;
+愐 > ben\ ;
+愍 > bin\ ;
+愌 > kan\ ;
+愆 > ken\ ;
+愃 > ken\ ;
+惽 > kon\ ;
+惼 > hen\ ;
+惺 > sei\ ;
+惸 > kei\ ;
+惶 > kou\ ;
+惴 > zui\ ;
+惥 > you\ ;
+惣 > sou\ ;
+惞 > kin\ ;
+惛 > kon\ ;
+惘 > bou\ ;
+惔 > tan\ ;
+惓 > ken\ ;
+惏 > ran\ ;
+惋 > wan\ ;
+惉 > sen\ ;
+惇 > ton\ ;
+惂 > kan\ ;
+悾 > kou\ ;
+悽 > sei\ ;
+悻 > kei\ ;
+悷 > rei\ ;
+悰 > sou\ ;
+悩 > nou\ ;
+悤 > sou\ ;
+悝 > kai\ ;
+悛 > sen\ ;
+悗 > ban\ ;
+悓 > ken\ ;
+悒 > yuu\ ;
+悎 > kou\ ;
+悍 > kan\ ;
+悌 > tei\ ;
+悋 > rin\ ;
+悈 > kai\ ;
+悃 > kon\ ;
+恿 > you\ ;
+恾 > bou\ ;
+恵 > kei\ ;
+恬 > ten\ ;
+恫 > dou\ ;
+恣 > shi\ ;
+恢 > kai\ ;
+恡 > rin\ ;
+恠 > kai\ ;
+恝 > kai\ ;
+恙 > you\ ;
+恖 > shi\ ;
+恒 > kou\ ;
+恉 > shi\ ;
+恈 > bou\ ;
+恆 > kou\ ;
+恂 > jun\ ;
+恀 > shi\ ;
+怱 > sou\ ;
+怦 > hou\ ;
+怟 > tei\ ;
+怜 > rei\ ;
+怚 > sho\ ;
+怔 > sei\ ;
+怓 > dou\ ;
+怐 > kou\ ;
+怏 > you\ ;
+怇 > kyo\ ;
+忼 > kou\ ;
+忻 > kin\ ;
+忺 > ken\ ;
+忶 > kon\ ;
+忳 > ton\ ;
+忲 > tai\ ;
+忰 > sui\ ;
+忮 > shi\ ;
+忭 > hen\ ;
+忩 > sou\ ;
+忨 > gan\ ;
+忞 > bin\ ;
+忝 > ten\ ;
+忖 > son\ ;
+忓 > kan\ ;
+忐 > kun\ ;
+忋 > kai\ ;
+忉 > tou\ ;
+忈 > jin\ ;
+徰 > sei\ ;
+徯 > kei\ ;
+徭 > you\ ;
+徬 > hou\ ;
+徨 > kou\ ;
+徧 > hen\ ;
+徠 > rai\ ;
+徝 > chi\ ;
+徙 > shi\ ;
+徘 > hai\ ;
+徖 > sou\ ;
+徑 > kei\ ;
+徉 > you\ ;
+很 > kon\ ;
+徆 > sei\ ;
+征 > sei\ ;
+彾 > rei\ ;
+彽 > chi\ ;
+彷 > hou\ ;
+彲 > chi\ ;
+彯 > heu\ ;
+彭 > hou\ ;
+彬 > hin\ ;
+彧 > iku\ ;
+彦 > gen\ ;
+彥 > gen\ ;
+彤 > tou\ ;
+彣 > bun\ ;
+彡 > san\ ;
+彘 > tei\ ;
+彗 > sui\ ;
+彖 > tan\ ;
+彑 > kei\ ;
+彐 > kei\ ;
+彎 > wan\ ;
+彋 > kau\ ;
+彇 > you\ ;
+彄 > kou\ ;
+彁 > sei\ ;
+彀 > kou\ ;
+弿 > ken\ ;
+弽 > you\ ;
+弹 > dan\ ;
+弸 > hou\ ;
+弴 > ton\ ;
+弰 > sou\ ;
+弯 > wan\ ;
+弮 > ken\ ;
+弨 > seu\ ;
+弤 > tei\ ;
+弢 > tou\ ;
+弚 > tai\ ;
+弒 > shi\ ;
+弑 > shi\ ;
+弎 > san\ ;
+弊 > hei\ ;
+弉 > jou\ ;
+弈 > eki\ ;
+弆 > kyo\ ;
+弅 > hun\ ;
+廿 > juu\ ;
+廽 > kai\ ;
+廼 > dai\ ;
+廷 > tei\ ;
+廵 > jun\ ;
+廲 > rei\ ;
+廱 > you\ ;
+廯 > sen\ ;
+廬 > ryo\ ;
+廪 > rin\ ;
+廩 > rin\ ;
+廨 > kai\ ;
+廥 > kai\ ;
+廞 > kin\ ;
+廝 > shi\ ;
+廛 > ten\ ;
+廗 > tai\ ;
+廔 > rou\ ;
+廒 > gou\ ;
+廑 > kin\ ;
+廎 > kei\ ;
+廌 > chi\ ;
+廇 > riu\ ;
+廆 > kai\ ;
+廅 > ahu\ ;
+廁 > shi\ ;
+廀 > sou\ ;
+庽 > dou\ ;
+庻 > sho\ ;
+庶 > sho\ ;
+庲 > rai\ ;
+庰 > hei\ ;
+庬 > bou\ ;
+庨 > kou\ ;
+庤 > chi\ ;
+庣 > teu\ ;
+庛 > shi\ ;
+庎 > kai\ ;
+庍 > hai\ ;
+庉 > ton\ ;
+庈 > kin\ ;
+广 > gen\ ;
+幺 > you\ ;
+幷 > hei\ ;
+并 > hei\ ;
+幵 > ken\ ;
+幱 > ran\ ;
+幰 > ken\ ;
+幮 > chu\ ;
+幫 > hou\ ;
+幪 > bou\ ;
+幩 > hun\ ;
+幨 > sen\ ;
+幧 > seu\ ;
+幤 > hei\ ;
+幣 > hei\ ;
+幢 > tou\ ;
+幡 > han\ ;
+幝 > sen\ ;
+幜 > kei\ ;
+幚 > hou\ ;
+幔 > ban\ ;
+幐 > tou\ ;
+幍 > tou\ ;
+幌 > kou\ ;
+幋 > han\ ;
+幊 > kou\ ;
+幈 > hei\ ;
+幇 > hou\ ;
+幄 > aku\ ;
+幀 > tei\ ;
+帵 > wan\ ;
+帲 > hei\ ;
+帮 > hou\ ;
+帬 > kun\ ;
+帩 > seu\ ;
+帨 > sei\ ;
+带 > tai\ ;
+帣 > ken\ ;
+帡 > hei\ ;
+帠 > gei\ ;
+帟 > eki\ ;
+帘 > ren\ ;
+帖 > jou\ ;
+帒 > tai\ ;
+帎 > tan\ ;
+帋 > shi\ ;
+帇 > den\ ;
+帄 > tei\ ;
+帀 > sou\ ;
+巺 > son\ ;
+巹 > kin\ ;
+巵 > shi\ ;
+巠 > kei\ ;
+巟 > kou\ ;
+巜 > kai\ ;
+巛 > sen\ ;
+巘 > gen\ ;
+巖 > gan\ ;
+巔 > ten\ ;
+巓 > ten\ ;
+巒 > ran\ ;
+巑 > san\ ;
+巏 > ken\ ;
+巎 > dou\ ;
+巌 > gan\ ;
+巉 > san\ ;
+巆 > kou\ ;
+巃 > rou\ ;
+巂 > sui\ ;
+嶼 > sho\ ;
+嶺 > rei\ ;
+嶹 > tou\ ;
+嶸 > kou\ ;
+嶵 > sai\ ;
+嶲 > kei\ ;
+嶰 > kai\ ;
+嶩 > dau\ ;
+嶧 > eki\ ;
+嶡 > kei\ ;
+嶟 > son\ ;
+嶝 > tou\ ;
+嶙 > rin\ ;
+嶕 > seu\ ;
+嶔 > kin\ ;
+嶌 > tou\ ;
+嶋 > tou\ ;
+嶊 > sui\ ;
+嶉 > sui\ ;
+嶆 > sau\ ;
+嶄 > san\ ;
+嶃 > san\ ;
+嵿 > tei\ ;
+嵼 > san\ ;
+嵺 > reu\ ;
+嵶 > tao\ ;
+嵱 > you\ ;
+嵰 > ken\ ;
+嵭 > hou\ ;
+嵬 > kai\ ;
+嵪 > kou\ ;
+嵩 > suu\ ;
+嵧 > riu\ ;
+嵤 > kei\ ;
+嵣 > tau\ ;
+嵢 > sou\ ;
+嵠 > gei\ ;
+嵗 > sei\ ;
+嵕 > sou\ ;
+嵓 > gan\ ;
+嵒 > gan\ ;
+嵎 > guu\ ;
+嵉 > tei\ ;
+嵈 > kan\ ;
+嵇 > kei\ ;
+嵆 > kei\ ;
+嵅 > kan\ ;
+嵃 > gen\ ;
+嵁 > kan\ ;
+崽 > sai\ ;
+崼 > shi\ ;
+崹 > tei\ ;
+崸 > ton\ ;
+崶 > hou\ ;
+崵 > seu\ ;
+崴 > wai\ ;
+崲 > kou\ ;
+崥 > hei\ ;
+崤 > kou\ ;
+崢 > sou\ ;
+崡 > kan\ ;
+崠 > tou\ ;
+崟 > gin\ ;
+崝 > sau\ ;
+崙 > ron\ ;
+崘 > ron\ ;
+崕 > gai\ ;
+崔 > sai\ ;
+崑 > kon\ ;
+崐 > kon\ ;
+崏 > bin\ ;
+崍 > rai\ ;
+崇 > suu\ ;
+崆 > kou\ ;
+崄 > ken\ ;
+崁 > kan\ ;
+峺 > kou\ ;
+峸 > sei\ ;
+峵 > kou\ ;
+峴 > ken\ ;
+峱 > dou\ ;
+峯 > hou\ ;
+峮 > kin\ ;
+峟 > you\ ;
+峝 > tou\ ;
+峜 > kei\ ;
+峘 > kan\ ;
+峕 > shi\ ;
+峒 > tou\ ;
+峐 > kai\ ;
+峎 > gon\ ;
+峇 > kou\ ;
+岾 > sen\ ;
+岺 > rei\ ;
+岷 > bin\ ;
+岲 > kou\ ;
+岱 > tai\ ;
+岰 > you\ ;
+岭 > rei\ ;
+岧 > teu\ ;
+岣 > kou\ ;
+岠 > kyo\ ;
+岟 > you\ ;
+岕 > kai\ ;
+岒 > ken\ ;
+岋 > gou\ ;
+岇 > gou\ ;
+岅 > han\ ;
+屽 > kan\ ;
+屻 > jin\ ;
+屳 > sen\ ;
+屯 > ton\ ;
+屧 > tei\ ;
+屣 > shi\ ;
+屟 > tei\ ;
+屜 > tei\ ;
+屛 > hei\ ;
+屚 > rou\ ;
+屖 > sei\ ;
+屔 > dei\ ;
+屎 > shi\ ;
+屇 > ten\ ;
+尼 > ama\ ;
+尷 > kan\ ;
+尶 > kan\ ;
+尵 > tai\ ;
+尲 > kan\ ;
+尬 > kai\ ;
+尨 > bou\ ;
+尟 > sen\ ;
+尌 > shu\ ;
+専 > sen\ ;
+寽 > rin\ ;
+对 > tai\ ;
+寶 > hou\ ;
+寳 > hou\ ;
+寱 > gei\ ;
+寰 > kan\ ;
+寬 > kan\ ;
+寨 > sai\ ;
+寜 > nei\ ;
+寛 > kan\ ;
+寚 > hou\ ;
+寘 > shi\ ;
+寗 > nei\ ;
+寕 > nei\ ;
+寓 > guu\ ;
+寏 > kan\ ;
+寎 > hei\ ;
+寍 > nei\ ;
+寋 > ken\ ;
+寊 > tei\ ;
+寇 > kou\ ;
+寁 > san\ ;
+寀 > sai\ ;
+宼 > kou\ ;
+宺 > kou\ ;
+宲 > hou\ ;
+宯 > kou\ ;
+宭 > kun\ ;
+宬 > sei\ ;
+宩 > shi\ ;
+宦 > kan\ ;
+宥 > yuu\ ;
+宖 > kou\ ;
+宕 > tou\ ;
+宔 > shu\ ;
+宑 > sei\ ;
+宏 > kou\ ;
+宋 > sou\ ;
+宁 > cho\ ;
+宀 > ben\ ;
+孿 > san\ ;
+孻 > dai\ ;
+孳 > shi\ ;
+孱 > sen\ ;
+孯 > kan\ ;
+孮 > sou\ ;
+孩 > kai\ ;
+孨 > sen\ ;
+孟 > mou\ ;
+孝 > kou\ ;
+孜 > shi\ ;
+孖 > shi\ ;
+孕 > you\ ;
+孍 > gen\ ;
+孌 > ren\ ;
+孈 > sui\ ;
+孅 > sen\ ;
+孃 > jou\ ;
+孁 > rei\ ;
+孀 > sou\ ;
+嬾 > ran\ ;
+嬲 > jou\ ;
+嬯 > tai\ ;
+嬭 > dai\ ;
+嬬 > shu\ ;
+嬨 > shi\ ;
+嬣 > tau\ ;
+嬠 > san\ ;
+嬞 > tou\ ;
+嬝 > jou\ ;
+嬛 > ken\ ;
+嬚 > ren\ ;
+嬗 > sen\ ;
+嬖 > hei\ ;
+嬓 > keu\ ;
+嬐 > sen\ ;
+嬏 > han\ ;
+嬎 > han\ ;
+嬋 > sen\ ;
+嬈 > deu\ ;
+嬃 > shu\ ;
+嬁 > tou\ ;
+嫽 > reu\ ;
+嫻 > kan\ ;
+嫺 > kan\ ;
+嫹 > bau\ ;
+嫸 > sen\ ;
+嫶 > seu\ ;
+嫬 > sha\ ;
+嫪 > rau\ ;
+嫩 > don\ ;
+嫨 > kan\ ;
+嫦 > kou\ ;
+嫥 > sen\ ;
+嫝 > kau\ ;
+嫚 > ban\ ;
+嫙 > seb\ ;
+嫘 > rui\ ;
+嫐 > jou\ ;
+嫏 > rou\ ;
+嫍 > tau\ ;
+嫋 > jou\ ;
+嫈 > seu\ ;
+嫇 > bei\ ;
+嫆 > you\ ;
+嫄 > gen\ ;
+媾 > kou\ ;
+媻 > han\ ;
+媹 > riu\ ;
+媸 > shi\ ;
+媶 > jou\ ;
+媵 > you\ ;
+媲 > hei\ ;
+媮 > tou\ ;
+媭 > shu\ ;
+媧 > kai\ ;
+媥 > hen\ ;
+媤 > shi\ ;
+媢 > bou\ ;
+媞 > shi\ ;
+媜 > tei\ ;
+媗 > ken\ ;
+媔 > ben\ ;
+媓 > kou\ ;
+媏 > tan\ ;
+媌 > bou\ ;
+媊 > sen\ ;
+婾 > tou\ ;
+婻 > dan\ ;
+婸 > tou\ ;
+婷 > tei\ ;
+婰 > ten\ ;
+婪 > ran\ ;
+婩 > gen\ ;
+婧 > sei\ ;
+婥 > dou\ ;
+婠 > wan\ ;
+婞 > kei\ ;
+婝 > ten\ ;
+婜 > kan\ ;
+婛 > kei\ ;
+婘 > ken\ ;
+婗 > gei\ ;
+婖 > ten\ ;
+婒 > tan\ ;
+婑 > zui\ ;
+婇 > sai\ ;
+婄 > hou\ ;
+婃 > sou\ ;
+婂 > ben\ ;
+婁 > rou\ ;
+娾 > gai\ ;
+娹 > ken\ ;
+娶 > shu\ ;
+娵 > shu\ ;
+娮 > den\ ;
+娩 > ben\ ;
+娨 > ban\ ;
+娧 > tai\ ;
+娤 > sou\ ;
+娣 > tei\ ;
+娟 > ken\ ;
+娞 > dai\ ;
+娚 > nan\ ;
+娙 > gou\ ;
+娗 > tei\ ;
+娏 > bou\ ;
+娍 > sei\ ;
+娊 > ken\ ;
+娉 > hei\ ;
+姾 > sen\ ;
+姼 > shi\ ;
+姸 > ken\ ;
+姷 > yuu\ ;
+姵 > hai\ ;
+姳 > bei\ ;
+姯 > kou\ ;
+姮 > kou\ ;
+姭 > ken\ ;
+姪 > mei\ ;
+姩 > den\ ;
+姧 > kan\ ;
+姦 > kan\ ;
+姤 > kou\ ;
+姣 > kou\ ;
+姢 > ken\ ;
+姟 > kai\ ;
+姛 > tou\ ;
+姚 > you\ ;
+姙 > nin\ ;
+姘 > hin\ ;
+姗 > san\ ;
+姖 > kyo\ ;
+姒 > shi\ ;
+姐 > ane\ ;
+姏 > ban\ ;
+姍 > san\ ;
+姌 > zen\ ;
+姊 > shi\ ;
+姈 > rei\ ;
+姅 > han\ ;
+姄 > bin\ ;
+姃 > sei\ ;
+妶 > ken\ ;
+妵 > tou\ ;
+妳 > dai\ ;
+妨 > bou\ ;
+妧 > gen\ ;
+妦 > hou\ ;
+妢 > hun\ ;
+妡 > kin\ ;
+妠 > dou\ ;
+妞 > juu\ ;
+妝 > sou\ ;
+妛 > shi\ ;
+妚 > huu\ ;
+妗 > sen\ ;
+妏 > bun\ ;
+妎 > kai\ ;
+妍 > ken\ ;
+妌 > sei\ ;
+妅 > kou\ ;
+奿 > gan\ ;
+奾 > sen\ ;
+奻 > dan\ ;
+她 > chi\ ;
+奸 > kan\ ;
+奷 > sen\ ;
+奶 > dai\ ;
+奵 > tei\ ;
+奲 > sha\ ;
+奱 > ren\ ;
+奩 > ren\ ;
+奣 > wan\ ;
+奡 > gau\ ;
+奠 > ten\ ;
+奟 > kou\ ;
+奛 > kou\ ;
+奚 > kei\ ;
+奙 > hon\ ;
+奘 > jou\ ;
+奕 > eki\ ;
+奔 > hon\ ;
+奒 > kai\ ;
+奐 > kan\ ;
+奎 > kei\ ;
+奌 > ten\ ;
+奆 > ken\ ;
+奅 > hou\ ;
+奃 > tei\ ;
+奀 > bou\ ;
+夳 > tai\ ;
+夲 > tou\ ;
+夰 > kou\ ;
+夯 > kou\ ;
+夭 > you\ ;
+夣 > bou\ ;
+夠 > kou\ ;
+夝 > sei\ ;
+夘 > bou\ ;
+夒 > dou\ ;
+夐 > kei\ ;
+夊 > sui\ ;
+夆 > hou\ ;
+夅 > kou\ ;
+夂 > chi\ ;
+壾 > bou\ ;
+壼 > kon\ ;
+壸 > kon\ ;
+壴 > shu\ ;
+壮 > sou\ ;
+壨 > rai\ ;
+壧 > gan\ ;
+壥 > ten\ ;
+壤 > jou\ ;
+壣 > rin\ ;
+壠 > rou\ ;
+壟 > oka\ ;
+壜 > tan\ ;
+壙 > kou\ ;
+壘 > rui\ ;
+壖 > zen\ ;
+壕 > gou\ ;
+壔 > tau\ ;
+壐 > shi\ ;
+壏 > kan\ ;
+壎 > ken\ ;
+壍 > zan\ ;
+壌 > jou\ ;
+壉 > kyo\ ;
+壅 > you\ ;
+壂 > ten\ ;
+墿 > eki\ ;
+墾 > kon\ ;
+墽 > kau\ ;
+墸 > sho\ ;
+墳 > fun\ ;
+墱 > tou\ ;
+墭 > sei\ ;
+墬 > chi\ ;
+墩 > ton\ ;
+墦 > han\ ;
+墥 > tou\ ;
+墡 > sen\ ;
+墠 > sen\ ;
+墟 > kyo\ ;
+增 > zou\ ;
+墝 > kou\ ;
+墖 > tou\ ;
+墔 > sai\ ;
+墐 > kin\ ;
+墊 > ten\ ;
+墉 > you\ ;
+墈 > kan\ ;
+墅 > sho\ ;
+墁 > ban\ ;
+墀 > chi\ ;
+塿 > rou\ ;
+塽 > sau\ ;
+塼 > sen\ ;
+塺 > bai\ ;
+塹 > zan\ ;
+塴 > hou\ ;
+塲 > jou\ ;
+塰 > ama\ ;
+填 > ten\ ;
+塤 > ken\ ;
+塣 > tei\ ;
+塡 > ten\ ;
+塟 > sou\ ;
+塝 > hau\ ;
+塜 > hou\ ;
+塘 > tou\ ;
+塒 > shi\ ;
+塏 > kai\ ;
+塎 > you\ ;
+塌 > tou\ ;
+塁 > rui\ ;
+堿 > kan\ ;
+堽 > kou\ ;
+堼 > kou\ ;
+堺 > kai\ ;
+堭 > kau\ ;
+堩 > kou\ ;
+堧 > zen\ ;
+堦 > kai\ ;
+堥 > bou\ ;
+堡 > hou\ ;
+堠 > kou\ ;
+堟 > ten\ ;
+堞 > teu\ ;
+堜 > ren\ ;
+堋 > hou\ ;
+堉 > iku\ ;
+堈 > kou\ ;
+堇 > kin\ ;
+堄 > gen\ ;
+堃 > kon\ ;
+埿 > dei\ ;
+埾 > shu\ ;
+埽 > sou\ ;
+培 > bai\ ;
+埸 > eki\ ;
+埶 > gei\ ;
+埳 > kan\ ;
+埲 > hou\ ;
+埰 > sai\ ;
+埮 > tan\ ;
+埭 > tai\ ;
+埬 > tou\ ;
+埩 > sau\ ;
+埦 > wan\ ;
+埥 > sei\ ;
+埣 > sai\ ;
+埢 > ken\ ;
+域 > iki\ ;
+埞 > tei\ ;
+埝 > ten\ ;
+埜 > sho\ ;
+埕 > tei\ ;
+埏 > sen\ ;
+埌 > rou\ ;
+埇 > you\ ;
+埄 > hou\ ;
+埂 > kau\ ;
+埀 > sui\ ;
+垿 > sho\ ;
+垾 > kan\ ;
+垽 > gin\ ;
+垼 > eki\ ;
+垻 > hai\ ;
+垹 > hou\ ;
+垸 > kan\ ;
+垶 > sei\ ;
+垰 > tao\ ;
+垩 > sei\ ;
+垨 > shu\ ;
+垧 > kei\ ;
+垥 > keu\ ;
+垠 > gin\ ;
+垟 > you\ ;
+垚 > geu\ ;
+垙 > kuu\ ;
+垗 > teu\ ;
+垕 > kou\ ;
+垓 > gai\ ;
+垐 > shi\ ;
+垌 > tou\ ;
+垉 > hou\ ;
+垈 > tai\ ;
+垁 > chi\ ;
+坾 > cho\ ;
+坽 > rei\ ;
+坻 > chi\ ;
+坰 > kei\ ;
+坮 > dai\ ;
+坭 > dei\ ;
+坫 > ten\ ;
+坩 > kan\ ;
+坥 > sho\ ;
+坤 > kon\ ;
+坢 > han\ ;
+坚 > ken\ ;
+坙 > kei\ ;
+块 > kai\ ;
+坑 > kou\ ;
+坏 > hai\ ;
+坎 > kan\ ;
+坍 > tan\ ;
+坌 > hon\ ;
+坋 > hun\ ;
+坉 > ton\ ;
+坆 > bai\ ;
+坅 > kin\ ;
+坁 > shi\ ;
+址 > shi\ ;
+圭 > kei\ ;
+圦 > iri\ ;
+圢 > tei\ ;
+圞 > ran\ ;
+圝 > ran\ ;
+圜 > kan\ ;
+圛 > eki\ ;
+圚 > kai\ ;
+圌 > sen\ ;
+圊 > sei\ ;
+圉 > gyo\ ;
+圈 > ken\ ;
+圇 > rin\ ;
+圅 > kan\ ;
+圄 > gyo\ ;
+圂 > kon\ ;
+圁 > gin\ ;
+囿 > yuu\ ;
+囹 > rei\ ;
+囷 > kin\ ;
+囱 > sou\ ;
+园 > gan\ ;
+囬 > kai\ ;
+囪 > sou\ ;
+囨 > hen\ ;
+囧 > kei\ ;
+囥 > kou\ ;
+囤 > ton\ ;
+囡 > juu\ ;
+囝 > ken\ ;
+囜 > jin\ ;
+囘 > kai\ ;
+囔 > dou\ ;
+囏 > kan\ ;
+囊 > nou\ ;
+囈 > gei\ ;
+囆 > tai\ ;
+囅 > ten\ ;
+囃 > sou\ ;
+囂 > gou\ ;
+囀 > ten\ ;
+嚾 > kan\ ;
+嚻 > gou\ ;
+嚷 > jau\ ;
+嚵 > san\ ;
+嚮 > kou\ ;
+嚬 > hin\ ;
+嚪 > tan\ ;
+嚨 > rou\ ;
+嚢 > nou\ ;
+嚚 > gin\ ;
+嚙 > gou\ ;
+嚔 > tei\ ;
+嚎 > kau\ ;
+嚌 > sei\ ;
+嚈 > you\ ;
+嚆 > kou\ ;
+嚃 > tou\ ;
+嚂 > ran\ ;
+嚀 > dei\ ;
+噿 > sui\ ;
+噹 > tou\ ;
+噸 > ton\ ;
+噷 > kin\ ;
+噵 > dou\ ;
+噴 > fun\ ;
+噰 > you\ ;
+噬 > zei\ ;
+噥 > dou\ ;
+噤 > kin\ ;
+噣 > chu\ ;
+噢 > iku\ ;
+噡 > sen\ ;
+噟 > you\ ;
+噞 > gen\ ;
+噙 > kin\ ;
+噔 > tou\ ;
+噓 > kyo\ ;
+噍 > seu\ ;
+噋 > ton\ ;
+噉 > tan\ ;
+噇 > tou\ ;
+噆 > sou\ ;
+噃 > han\ ;
+噀 > son\ ;
+嘾 > tan\ ;
+嘽 > tan\ ;
+嘹 > reu\ ;
+嘷 > kou\ ;
+嘶 > sei\ ;
+嘵 > keu\ ;
+嘮 > tou\ ;
+嘭 > hou\ ;
+嘬 > sai\ ;
+嘫 > dam\ ;
+嘪 > bai\ ;
+嘕 > ken\ ;
+嘒 > kei\ ;
+嘐 > hau\ ;
+嘍 > rou\ ;
+嘌 > heu\ ;
+嘊 > gai\ ;
+嘈 > sau\ ;
+嘅 > kai\ ;
+嘄 > keu\ ;
+嗿 > tan\ ;
+嗾 > sou\ ;
+嗻 > sha\ ;
+嗺 > sui\ ;
+嗹 > ren\ ;
+嗸 > gou\ ;
+嗷 > gou\ ;
+嗨 > kai\ ;
+嗥 > kou\ ;
+嗤 > shi\ ;
+嗡 > rou\ ;
+嗞 > shi\ ;
+嗛 > ken\ ;
+嗙 > hou\ ;
+嗘 > kei\ ;
+嗓 > sou\ ;
+嗒 > tou\ ;
+嗌 > eki\ ;
+嗊 > kou\ ;
+嗈 > you\ ;
+嗃 > kou\ ;
+嗁 > tei\ ;
+喿 > sou\ ;
+喭 > gen\ ;
+喦 > jou\ ;
+喤 > kou\ ;
+喛 > kan\ ;
+喙 > kai\ ;
+喗 > gin\ ;
+喕 > ben\ ;
+喔 > aku\ ;
+喒 > san\ ;
+喏 > sha\ ;
+喍 > sai\ ;
+喊 > kan\ ;
+喈 > kai\ ;
+喃 > nan\ ;
+啿 > tan\ ;
+啽 > gan\ ;
+啻 > shi\ ;
+啴 > tan\ ;
+啮 > gou\ ;
+啥 > sha\ ;
+啡 > hai\ ;
+啟 > kei\ ;
+啛 > sai\ ;
+啙 > shi\ ;
+啗 > tan\ ;
+啖 > tan\ ;
+啕 > tou\ ;
+啔 > kei\ ;
+啓 > kei\ ;
+啑 > sou\ ;
+啐 > sai\ ;
+啍 > ton\ ;
+啌 > kou\ ;
+啉 > ran\ ;
+啈 > kou\ ;
+啁 > tou\ ;
+啀 > gai\ ;
+唻 > rai\ ;
+唶 > sha\ ;
+唳 > rei\ ;
+唫 > gin\ ;
+唪 > hou\ ;
+唤 > kan\ ;
+唝 > kou\ ;
+唘 > kei\ ;
+唗 > tou\ ;
+唕 > sou\ ;
+唑 > zei\ ;
+唍 > kan\ ;
+唌 > sen\ ;
+唉 > kai\ ;
+唅 > kan\ ;
+唄 > uta\ ;
+唁 > gen\ ;
+哽 > kou\ ;
+哼 > kou\ ;
+哻 > kan\ ;
+哸 > sai\ ;
+哰 > rou\ ;
+哯 > ken\ ;
+哮 > kou\ ;
+哤 > bou\ ;
+哢 > rou\ ;
+哠 > kou\ ;
+哏 > kon\ ;
+哎 > gai\ ;
+哊 > iku\ ;
+哈 > gou\ ;
+哆 > shi\ ;
+哅 > kou\ ;
+哄 > kou\ ;
+哃 > tou\ ;
+咾 > rou\ ;
+咺 > ken\ ;
+咸 > kan\ ;
+咷 > tau\ ;
+咵 > kuu\ ;
+咴 > kai\ ;
+咮 > tou\ ;
+咫 > shi\ ;
+咨 > shi\ ;
+咣 > kou\ ;
+咔 > rou\ ;
+咒 > shu\ ;
+咍 > kai\ ;
+咆 > hou\ ;
+咅 > tou\ ;
+咂 > sou\ ;
+咁 > kan\ ;
+呷 > kou\ ;
+呲 > shi\ ;
+呰 > shi\ ;
+呯 > hei\ ;
+呩 > shi\ ;
+呧 > tei\ ;
+呥 > zen\ ;
+呤 > rei\ ;
+呣 > bou\ ;
+呡 > bun\ ;
+呠 > hon\ ;
+呞 > shi\ ;
+呈 > tei\ ;
+呇 > kei\ ;
+呅 > bai\ ;
+呃 > aku\ ;
+呁 > kin\ ;
+吼 > kou\ ;
+吺 > tou\ ;
+吱 > shi\ ;
+吰 > kou\ ;
+启 > kei\ ;
+吮 > sen\ ;
+吭 > kou\ ;
+听 > kin\ ;
+吪 > guu\ ;
+吩 > fun\ ;
+吨 > ton\ ;
+吥 > hou\ ;
+吤 > kai\ ;
+吠 > hai\ ;
+吟 > gin\ ;
+吞 > don\ ;
+吙 > kuu\ ;
+吘 > gou\ ;
+吕 > ryo\ ;
+吆 > you\ ;
+吅 > ten\ ;
+吂 > bou\ ;
+号 > gou\ ;
+叮 > tei\ ;
+叨 > tou\ ;
+另 > rei\ ;
+叟 > sou\ ;
+叝 > kou\ ;
+叛 > han\ ;
+变 > hen\ ;
+叓 > shi\ ;
+叏 > kai\ ;
+叇 > tai\ ;
+叅 > san\ ;
+叄 > san\ ;
+叁 > san\ ;
+叀 > sen\ ;
+厽 > rui\ ;
+厺 > kyo\ ;
+厹 > jiu\ ;
+厸 > rin\ ;
+厷 > kou\ ;
+厶 > shi\ ;
+厵 > gen\ ;
+厲 > rei\ ;
+厮 > shi\ ;
+厫 > gou\ ;
+厪 > kin\ ;
+厧 > ten\ ;
+厡 > gen\ ;
+厜 > shi\ ;
+厙 > sha\ ;
+厗 > tei\ ;
+厖 > bou\ ;
+厓 > gai\ ;
+厎 > shi\ ;
+厉 > rei\ ;
+厈 > kan\ ;
+厃 > sen\ ;
+厂 > kan\ ;
+卺 > kin\ ;
+卯 > bou\ ;
+卮 > shi\ ;
+卬 > gau\ ;
+卥 > sei\ ;
+卤 > sei\ ;
+卣 > yuu\ ;
+卞 > hen\ ;
+卝 > kan\ ;
+单 > tan\ ;
+卐 > ban\ ;
+卋 > sei\ ;
+卅 > sou\ ;
+卄 > juu\ ;
+匾 > hen\ ;
+匸 > kei\ ;
+匷 > kyo\ ;
+匴 > san\ ;
+匳 > ren\ ;
+匲 > ren\ ;
+匰 > tan\ ;
+匯 > wai\ ;
+匨 > zou\ ;
+匥 > hen\ ;
+匟 > kou\ ;
+匝 > sou\ ;
+匘 > dou\ ;
+匒 > tou\ ;
+匏 > hou\ ;
+匌 > kou\ ;
+匋 > tou\ ;
+匄 > kai\ ;
+勽 > bun\ ;
+勹 > hou\ ;
+勷 > jou\ ;
+勵 > rei\ ;
+勴 > ryo\ ;
+勳 > kun\ ;
+勲 > kun\ ;
+勱 > bai\ ;
+勯 > tan\ ;
+勬 > ken\ ;
+勫 > han\ ;
+勨 > you\ ;
+勦 > sou\ ;
+勡 > heu\ ;
+勛 > kun\ ;
+勗 > bou\ ;
+勔 > ben\ ;
+勓 > kai\ ;
+勑 > rai\ ;
+勐 > bau\ ;
+勏 > hou\ ;
+勍 > kei\ ;
+勌 > ken\ ;
+勈 > you\ ;
+勆 > rou\ ;
+勄 > bin\ ;
+勂 > kou\ ;
+勁 > kei\ ;
+势 > sei\ ;
+劾 > gai\ ;
+劺 > bou\ ;
+劷 > you\ ;
+劶 > kou\ ;
+劵 > ken\ ;
+劳 > rou\ ;
+劲 > kei\ ;
+劯 > sho\ ;
+劧 > shi\ ;
+劥 > kou\ ;
+劤 > kin\ ;
+办 > hen\ ;
+劝 > kan\ ;
+劗 > san\ ;
+劖 > san\ ;
+劔 > ken\ ;
+劒 > ken\ ;
+劑 > zai\ ;
+劎 > ken\ ;
+劌 > kei\ ;
+劊 > kai\ ;
+劆 > ren\ ;
+剿 > sou\ ;
+剼 > san\ ;
+剻 > huu\ ;
+剸 > tan\ ;
+剷 > san\ ;
+剴 > gai\ ;
+剳 > tou\ ;
+剱 > ken\ ;
+剰 > jou\ ;
+剭 > oku\ ;
+剬 > tan\ ;
+剪 > sen\ ;
+剩 > jou\ ;
+剤 > zai\ ;
+剠 > kei\ ;
+剜 > wan\ ;
+剚 > shi\ ;
+剙 > sou\ ;
+剗 > san\ ;
+剏 > sou\ ;
+剅 > rou\ ;
+剄 > kei\ ;
+券 > ken\ ;
+刲 > kei\ ;
+刱 > sou\ ;
+刬 > san\ ;
+刪 > san\ ;
+刨 > hou\ ;
+刧 > gou\ ;
+刢 > rei\ ;
+刡 > bin\ ;
+删 > san\ ;
+刞 > sho\ ;
+刓 > gun\ ;
+刐 > tan\ ;
+刎 > fun\ ;
+刌 > son\ ;
+刋 > sen\ ;
+刅 > sou\ ;
+刄 > jin\ ;
+刂 > tau\ ;
+刁 > teu\ ;
+凾 > kan\ ;
+凷 > kai\ ;
+凵 > kan\ ;
+凳 > tou\ ;
+凲 > kan\ ;
+凱 > gai\ ;
+凰 > kou\ ;
+凮 > fuu\ ;
+凭 > hei\ ;
+凨 > fuu\ ;
+凥 > kyo\ ;
+凤 > hou\ ;
+凣 > han\ ;
+凢 > bon\ ;
+凜 > rin\ ;
+凛 > rin\ ;
+凘 > shi\ ;
+凗 > sai\ ;
+凖 > jun\ ;
+凕 > bei\ ;
+凔 > sau\ ;
+凑 > sou\ ;
+减 > gen\ ;
+凊 > sei\ ;
+凈 > sou\ ;
+准 > jun\ ;
+凂 > bai\ ;
+冿 > sen\ ;
+冺 > bin\ ;
+冸 > han\ ;
+冭 > tai\ ;
+冩 > sha\ ;
+冦 > kou\ ;
+冥 > mei\ ;
+冣 > shu\ ;
+冡 > bou\ ;
+冕 > ben\ ;
+冓 > kou\ ;
+冐 > bou\ ;
+冏 > kei\ ;
+冋 > kei\ ;
+冉 > nen\ ;
+冄 > zen\ ;
+冃 > bou\ ;
+冂 > kei\ ;
+兮 > kei\ ;
+內 > dai\ ;
+兦 > bou\ ;
+兤 > kou\ ;
+兘 > shi\ ;
+兕 > shi\ ;
+兊 > tai\ ;
+儿 > jin\ ;
+儽 > rai\ ;
+儼 > gen\ ;
+儻 > tou\ ;
+儹 > san\ ;
+儷 > rei\ ;
+儳 > san\ ;
+儱 > rou\ ;
+儯 > tou\ ;
+儩 > shi\ ;
+儧 > san\ ;
+儥 > iku\ ;
+儤 > hou\ ;
+儣 > kou\ ;
+儢 > ryo\ ;
+儡 > rai\ ;
+儝 > kei\ ;
+儜 > dau\ ;
+儚 > bou\ ;
+儙 > ken\ ;
+儖 > ran\ ;
+儕 > sei\ ;
+儓 > tai\ ;
+儑 > gan\ ;
+儐 > hin\ ;
+儎 > sai\ ;
+儌 > keu\ ;
+儋 > tan\ ;
+儊 > sho\ ;
+儉 > ken\ ;
+儈 > kai\ ;
+儇 > ken\ ;
+儆 > kei\ ;
+儅 > tou\ ;
+儃 > sen\ ;
+儂 > dou\ ;
+僿 > shi\ ;
+僼 > hou\ ;
+僸 > kin\ ;
+僶 > bin\ ;
+僯 > rin\ ;
+僮 > dou\ ;
+僭 > sen\ ;
+僬 > seu\ ;
+僩 > kan\ ;
+僨 > hun\ ;
+僤 > tan\ ;
+僣 > sen\ ;
+僢 > sen\ ;
+僠 > fan\ ;
+僝 > san\ ;
+僜 > tou\ ;
+僙 > kou\ ;
+僗 > rau\ ;
+僔 > son\ ;
+僓 > tai\ ;
+僐 > sen\ ;
+僎 > sen\ ;
+僌 > you\ ;
+僋 > tan\ ;
+僊 > sen\ ;
+僉 > sen\ ;
+僈 > ban\ ;
+僆 > ren\ ;
+僄 > heu\ ;
+僂 > rou\ ;
+僀 > tei\ ;
+傺 > tei\ ;
+傸 > sau\ ;
+債 > sai\ ;
+傲 > gou\ ;
+傰 > hou\ ;
+傯 > sou\ ;
+傮 > sou\ ;
+傭 > you\ ;
+傪 > san\ ;
+傤 > sai\ ;
+傡 > hei\ ;
+傝 > tan\ ;
+傛 > you\ ;
+傚 > kou\ ;
+傖 > sau\ ;
+傔 > ken\ ;
+傓 > sen\ ;
+傒 > kei\ ;
+傐 > kou\ ;
+傏 > tou\ ;
+傎 > ten\ ;
+傋 > kau\ ;
+傇 > jou\ ;
+傆 > gen\ ;
+傂 > chi\ ;
+傁 > sou\ ;
+傀 > kai\ ;
+偻 > rou\ ;
+偺 > san\ ;
+偸 > tou\ ;
+偳 > tan\ ;
+偲 > shi\ ;
+偭 > ben\ ;
+偬 > sou\ ;
+偫 > chi\ ;
+偩 > huu\ ;
+偨 > shi\ ;
+偦 > sho\ ;
+偢 > seu\ ;
+偡 > tan\ ;
+偞 > you\ ;
+偝 > hai\ ;
+偛 > sou\ ;
+偙 > tei\ ;
+偘 > kan\ ;
+偗 > sei\ ;
+偖 > sha\ ;
+偕 > kai\ ;
+偓 > aku\ ;
+偒 > tou\ ;
+偑 > huu\ ;
+偐 > gan\ ;
+偏 > hen\ ;
+偎 > wai\ ;
+偍 > tei\ ;
+偋 > hei\ ;
+偄 > dan\ ;
+偂 > sen\ ;
+值 > chi\ ;
+倷 > dai\ ;
+倴 > hon\ ;
+倳 > shi\ ;
+倲 > tou\ ;
+倱 > kon\ ;
+倫 > rin\ ;
+倪 > gei\ ;
+倨 > kyo\ ;
+倧 > sou\ ;
+倥 > kou\ ;
+倣 > hou\ ;
+倞 > kei\ ;
+倝 > kan\ ;
+倗 > hou\ ;
+倖 > kou\ ;
+倕 > sui\ ;
+倓 > tan\ ;
+們 > mon\ ;
+倎 > ten\ ;
+倍 > bai\ ;
+倊 > sou\ ;
+倈 > rai\ ;
+倅 > sai\ ;
+倄 > kou\ ;
+倂 > hei\ ;
+倁 > chi\ ;
+俿 > chi\ ;
+俽 > kin\ ;
+俼 > iku\ ;
+俸 > hou\ ;
+俴 > sen\ ;
+俳 > hai\ ;
+俲 > kou\ ;
+俫 > rai\ ;
+俟 > shi\ ;
+俜 > hei\ ;
+俛 > ben\ ;
+俖 > hai\ ;
+俔 > ken\ ;
+俓 > gau\ ;
+俒 > kon\ ;
+俑 > you\ ;
+俏 > seu\ ;
+俊 > jun\ ;
+俆 > sho\ ;
+俀 > tai\ ;
+侾 > kou\ ;
+侽 > dan\ ;
+侹 > tei\ ;
+侫 > nei\ ;
+侣 > ryo\ ;
+侟 > sen\ ;
+侗 > tou\ ;
+侖 > ron\ ;
+侔 > bou\ ;
+侑 > yuu\ ;
+侏 > shu\ ;
+侊 > kou\ ;
+侈 > shi\ ;
+侅 > kai\ ;
+侃 > kan\ ;
+侀 > kei\ ;
+佽 > shi\ ;
+佼 > kou\ ;
+佺 > sen\ ;
+佷 > kou\ ;
+佱 > hou\ ;
+佯 > you\ ;
+佮 > kou\ ;
+佩 > hai\ ;
+佣 > you\ ;
+佢 > kyo\ ;
+佡 > ken\ ;
+佟 > tou\ ;
+佞 > nei\ ;
+佝 > kou\ ;
+佘 > sha\ ;
+佑 > yuu\ ;
+佌 > shi\ ;
+佉 > kyo\ ;
+但 > tan\ ;
+佂 > yai\ ;
+佀 > shi\ ;
+伻 > hou\ ;
+伹 > sho\ ;
+伶 > rei\ ;
+伭 > ken\ ;
+伣 > ken\ ;
+优 > yuu\ ;
+众 > gin\ ;
+伓 > hai\ ;
+伒 > kin\ ;
+伉 > kou\ ;
+伇 > eki\ ;
+伅 > ton\ ;
+伂 > hai\ ;
+仿 > hou\ ;
+仾 > tei\ ;
+份 > hin\ ;
+价 > kai\ ;
+仱 > ken\ ;
+仯 > sou\ ;
+仭 > jin\ ;
+仠 > kan\ ;
+仟 > sen\ ;
+仞 > jin\ ;
+仜 > kou\ ;
+仚 > ken\ ;
+仐 > san\ ;
+从 > juu\ ;
+仍 > jou\ ;
+仃 > tei\ ;
+什 > juu\ ;
+亾 > bou\ ;
+亷 > ren\ ;
+亶 > tan\ ;
+亰 > kei\ ;
+亢 > kou\ ;
+亠 > tou\ ;
+亝 > sei\ ;
+亗 > sai\ ;
+亖 > shi\ ;
+亃 > rin\ ;
+亁 > ken\ ;
+乿 > chi\ ;
+乹 > kan\ ;
+乪 > dou\ ;
+乩 > kei\ ;
+乨 > shi\ ;
+乢 > gai\ ;
+乖 > kai\ ;
+乓 > hau\ ;
+乒 > hei\ ;
+乑 > gin\ ;
+乂 > gai\ ;
+举 > kyo\ ;
+丽 > rei\ ;
+丶 > chu\ ;
+丳 > san\ ;
+丱 > kan\ ;
+丰 > hou\ ;
+丯 > kai\ ;
+丨 > kon\ ;
+丣 > yuu\ ;
+丙 > hei\ ;
+丗 > sei\ ;
+专 > sen\ ;
+丐 > kai\ ;
+丏 > ben\ ;
+丂 > kou\ ;
+迦 > ka\ ;
+矢 > ya\ ;
+応 > ou\ ;
+忌 > ki\ ;
+辭 > ji\ ;
+微 > bi\ ;
+御 > go\ ;
+辞 > ji\ ;
+徒 > to\ ;
+徐 > jo\ ;
+徃 > ou\ ;
+往 > ou\ ;
+眼 > me\ ;
+輪 > wa\ ;
+弥 > mi\ ;
+真 > ma\ ;
+輝 > ki\ ;
+引 > in\ ;
+弐 > ni\ ;
+延 > en\ ;
+目 > me\ ;
+身 > mi\ ;
+庫 > ko\ ;
+座 > za\ ;
+度 > do\ ;
+府 > fu\ ;
+庇 > hi\ ;
+踰 > yu\ ;
+帰 > ki\ ;
+痺 > hi\ ;
+路 > ro\ ;
+差 > sa\ ;
+跪 > ki\ ;
+巨 > ko\ ;
+巣 > su\ ;
+州 > su\ ;
+痛 > ts\ ;
+疲 > hi\ ;
+疑 > gi\ ;
+疎 > so\ ;
+疋 > so\ ;
+起 > ki\ ;
+赴 > fu\ ;
+田 > ta\ ;
+甥 > oi\ ;
+贔 > hi\ ;
+費 > hi\ ;
+貴 > ki\ ;
+環 > wa\ ;
+貨 > ka\ ;
+負 > fu\ ;
+豫 > yo\ ;
+履 > ri\ ;
+屓 > ki\ ;
+屋 > ya\ ;
+谷 > ya\ ;
+理 > ri\ ;
+寝 > ne\ ;
+寐 > bi\ ;
+珈 > ka\ ;
+寄 > ki\ ;
+家 > ke\ ;
+実 > mi\ ;
+宜 > gi\ ;
+王 > ou\ ;
+譽 > yo\ ;
+護 > go\ ;
+議 > gi\ ;
+譬 > hi\ ;
+季 > ki\ ;
+字 > ji\ ;
+子 > ne\ ;
+嬉 > ki\ ;
+媼 > ou\ ;
+課 > ka\ ;
+誤 > go\ ;
+犠 > gi\ ;
+語 > go\ ;
+媚 > bi\ ;
+誉 > yo\ ;
+誇 > ko\ ;
+婦 > fu\ ;
+婢 > hi\ ;
+婉 > en\ ;
+訴 > so\ ;
+訝 > ga\ ;
+記 > ki\ ;
+爐 > ro\ ;
+營 > ei\ ;
+妬 > to\ ;
+妓 > ki\ ;
+見 > mi\ ;
+如 > jo\ ;
+女 > jo\ ;
+襦 > ju\ ;
+奧 > ou\ ;
+奈 > na\ ;
+奇 > ki\ ;
+央 > ou\ ;
+太 > ta\ ;
+無 > mu\ ;
+褞 > on\ ;
+多 > ta\ ;
+褓 > ho\ ;
+裳 > mo\ ;
+裡 > ri\ ;
+烟 > en\ ;
+補 > ho\ ;
+墮 > da\ ;
+被 > hi\ ;
+衰 > sa\ ;
+灯 > hi\ ;
+火 > hi\ ;
+衞 > ei\ ;
+衛 > ei\ ;
+塗 > to\ ;
+堵 > to\ ;
+場 > ba\ ;
+瀬 > se\ ;
+堕 > da\ ;
+蟲 > ki\ ;
+濡 > ju\ ;
+螺 > ra\ ;
+坐 > za\ ;
+圖 > to\ ;
+演 > en\ ;
+圓 > en\ ;
+圃 > ho\ ;
+固 > ko\ ;
+図 > zu\ ;
+因 > in\ ;
+黄 > ki\ ;
+溯 > so\ ;
+蚊 > ka\ ;
+鹽 > en\ ;
+湯 > yu\ ;
+温 > on\ ;
+嘩 > ka\ ;
+渡 > to\ ;
+鸚 > ou\ ;
+嘔 > ou\ ;
+蘇 > so\ ;
+鷺 > ro\ ;
+淹 > en\ ;
+淫 > in\ ;
+嗟 > aa\ ;
+藍 > ai\ ;
+涸 > ko\ ;
+喪 > mo\ ;
+喜 > ki\ ;
+浮 > fu\ ;
+鵡 > bu\ ;
+派 > ha\ ;
+洩 > ei\ ;
+泳 > ei\ ;
+哩 > ri\ ;
+員 > in\ ;
+泄 > ei\ ;
+哀 > ai\ ;
+沿 > en\ ;
+治 > ji\ ;
+沙 > sa\ ;
+和 > wa\ ;
+汽 > ki\ ;
+呼 > ko\ ;
+汰 > ta\ ;
+呪 > ju\ ;
+葡 > ho\ ;
+汝 > jo\ ;
+葉 > ha\ ;
+呉 > go\ ;
+吾 > go\ ;
+永 > ei\ ;
+氷 > hi\ ;
+否 > hi\ ;
+氣 > ki\ ;
+気 > ki\ ;
+吐 > to\ ;
+吏 > ri\ ;
+名 > na\ ;
+可 > ka\ ;
+菜 > na\ ;
+毛 > ke\ ;
+叙 > jo\ ;
+毘 > hi\ ;
+受 > ju\ ;
+比 > hi\ ;
+菓 > ka\ ;
+毆 > ou\ ;
+莫 > bo\ ;
+歸 > ki\ ;
+荷 > ni\ ;
+魯 > ro\ ;
+危 > ki\ ;
+歯 > ha\ ;
+歩 > ho\ ;
+武 > bu\ ;
+歟 > yo\ ;
+魘 > en\ ;
+魔 > ma\ ;
+卑 > hi\ ;
+歐 > ou\ ;
+魅 > mi\ ;
+茹 > jo\ ;
+欺 > gi\ ;
+欷 > ki\ ;
+化 > ka\ ;
+匍 > ho\ ;
+茄 > ka\ ;
+茂 > mo\ ;
+英 > ei\ ;
+苦 > ku\ ;
+苛 > ka\ ;
+務 > mu\ ;
+苑 > en\ ;
+芽 > me\ ;
+努 > do\ ;
+加 > ka\ ;
+檐 > en\ ;
+檎 > go\ ;
+驅 > ku\ ;
+樹 > ju\ ;
+利 > ri\ ;
+模 > mo\ ;
+舞 > bu\ ;
+與 > yo\ ;
+出 > de\ ;
+臥 > ga\ ;
+駈 > ku\ ;
+駆 > ku\ ;
+駄 > ta\ ;
+冶 > ya\ ;
+膚 > fu\ ;
+榎 > ka\ ;
+具 > gu\ ;
+其 > ki\ ;
+饑 > ki\ ;
+腑 > fu\ ;
+兒 > ji\ ;
+腐 > fu\ ;
+児 > ji\ ;
+餘 > yo\ ;
+餓 > ga\ ;
+儀 > gi\ ;
+價 > ka\ ;
+飲 > in\ ;
+飮 > in\ ;
+飢 > ki\ ;
+胡 > ko\ ;
+僞 > gi\ ;
+飛 > hi\ ;
+棄 > ki\ ;
+備 > bi\ ;
+顧 > ko\ ;
+做 > sa\ ;
+顆 > ka\ ;
+案 > an\ ;
+假 > ka\ ;
+根 > ne\ ;
+倶 > ku\ ;
+値 > ne\ ;
+倚 > ki\ ;
+頗 > ha\ ;
+預 > yo\ ;
+個 > ko\ ;
+栄 > ei\ ;
+韻 > in\ ;
+査 > sa\ ;
+音 > ne\ ;
+翳 > ei\ ;
+俯 > fu\ ;
+保 > ho\ ;
+羽 > wa\ ;
+架 > ka\ ;
+枯 > ko\ ;
+侮 > bu\ ;
+義 > gi\ ;
+果 > ka\ ;
+侘 > ta\ ;
+美 > bi\ ;
+羅 > ra\ ;
+罹 > ri\ ;
+罵 > ba\ ;
+靡 > hi\ ;
+非 > hi\ ;
+余 > yo\ ;
+青 > ao\ ;
+佐 > sa\ ;
+似 > ni\ ;
+未 > mi\ ;
+木 > ki\ ;
+期 > ki\ ;
+伎 > gi\ ;
+伍 > go\ ;
+企 > ki\ ;
+曳 > ei\ ;
+離 > ri\ ;
+代 > yo\ ;
+付 > fu\ ;
+隱 > in\ ;
+暮 > bo\ ;
+隠 > in\ ;
+些 > sa\ ;
+暗 > an\ ;
+五 > go\ ;
+互 > go\ ;
+云 > un\ ;
+二 > ni\ ;
+予 > yo\ ;
+繻 > ju\ ;
+普 > fu\ ;
+除 > jo\ ;
+院 > in\ ;
+九 > ku\ ;
+附 > fu\ ;
+乃 > no\ ;
+陀 > da\ ;
+丹 > ni\ ;
+是 > ze\ ;
+映 > ei\ ;
+世 > yo\ ;
+与 > yo\ ;
+不 > fu\ ;
+三 > mi\ ;
+旺 > ou\ ;
+日 > hi\ ;
+既 > ki\ ;
+綺 > ki\ ;
+斗 > to\ ;
+間 > ma\ ;
+斐 > hi\ ;
+敷 > fu\ ;
+素 > so\ ;
+紀 > ki\ ;
+擬 > gi\ ;
+撫 > bu\ ;
+摩 > ma\ ;
+籔 > su\ ;
+簿 > bo\ ;
+簷 > en\ ;
+措 > so\ ;
+掩 > en\ ;
+掛 > ka\ ;
+授 > ju\ ;
+箇 > ka\ ;
+捗 > ho\ ;
+捕 > ho\ ;
+挨 > ai\ ;
+符 > fu\ ;
+持 > ji\ ;
+鋭 > ei\ ;
+鋪 > ho\ ;
+押 > ou\ ;
+窺 > ki\ ;
+窶 > ku\ ;
+披 > hi\ ;
+抒 > jo\ ;
+批 > hi\ ;
+扶 > fu\ ;
+打 > da\ ;
+穏 > on\ ;
+手 > te\ ;
+穂 > ho\ ;
+稼 > ka\ ;
+戸 > to\ ;
+戲 > gi\ ;
+戯 > gi\ ;
+懼 > ku\ ;
+秘 > hi\ ;
+科 > ka\ ;
+野 > no\ ;
+里 > ri\ ;
+祖 > so\ ;
+祕 > hi\ ;
+慕 > bo\ ;
+祈 > ki\ ;
+慇 > in\ ;
+愛 > ai\ ;
+愚 > gu\ ;
+愉 > yu\ ;
+愈 > yu\ ;
+惹 > ja\ ;
+部 > bu\ ;
+磨 > ma\ ;
+悸 > ki\ ;
+悲 > hi\ ;
+那 > da\ ;
+悟 > go\ ;
+避 > hi\ ;
+恩 > on\ ;
+過 > ka\ ;
+運 > un\ ;
+破 > ha\ ;
+怨 > en\ ;
+怖 > fu\ ;
+途 > to\ ;
+怒 > do\ ;
+龢 > ka\ ;
+龜 > ki\ ;
+龑 > en\ ;
+齮 > gi\ ;
+齟 > so\ ;
+齖 > ga\ ;
+齇 > sa\ ;
+齆 > ou\ ;
+鼽 > gu\ ;
+鼹 > en\ ;
+鼴 > en\ ;
+鼯 > go\ ;
+鼔 > ko\ ;
+鼉 > ta\ ;
+黼 > ho\ ;
+黸 > ro\ ;
+黯 > an\ ;
+黭 > en\ ;
+黤 > en\ ;
+黡 > en\ ;
+黟 > ei\ ;
+麾 > ki\ ;
+麼 > ma\ ;
+麸 > fu\ ;
+麬 > fu\ ;
+麤 > so\ ;
+麒 > ki\ ;
+麌 > gu\ ;
+麋 > bi\ ;
+麄 > so\ ;
+麂 > ki\ ;
+麁 > so\ ;
+鹺 > sa\ ;
+鹵 > ro\ ;
+鹟 > ou\ ;
+鹀 > bu\ ;
+鸝 > ri\ ;
+鸜 > ku\ ;
+鸕 > ro\ ;
+鸒 > yo\ ;
+鷰 > en\ ;
+鷗 > ou\ ;
+鷖 > ei\ ;
+鷃 > an\ ;
+鶲 > ou\ ;
+鶯 > ou\ ;
+鶘 > ko\ ;
+鶕 > an\ ;
+鵺 > ya\ ;
+鵷 > en\ ;
+鵯 > hi\ ;
+鵪 > an\ ;
+鵞 > ga\ ;
+鵝 > ga\ ;
+鵐 > bu\ ;
+鴽 > jo\ ;
+鴼 > ro\ ;
+鴳 > an\ ;
+鴯 > ji\ ;
+鴣 > ko\ ;
+鴝 > ku\ ;
+鴛 > en\ ;
+鴕 > ta\ ;
+鴑 > do\ ;
+鳶 > en\ ;
+鳬 > fu\ ;
+鳧 > fu\ ;
+鳁 > on\ ;
+鲏 > hi\ ;
+鲊 > sa\ ;
+鱫 > ai\ ;
+鰢 > ba\ ;
+鰛 > on\ ;
+鰖 > ta\ ;
+鰋 > en\ ;
+鯡 > hi\ ;
+鯝 > ko\ ;
+鯋 > sa\ ;
+鯆 > ho\ ;
+鮻 > sa\ ;
+鮬 > ho\ ;
+鮟 > an\ ;
+鮞 > ji\ ;
+鮍 > hi\ ;
+鮇 > bi\ ;
+鮀 > ta\ ;
+魲 > ro\ ;
+魮 > hi\ ;
+魦 > sa\ ;
+魕 > ki\ ;
+魏 > gi\ ;
+魌 > ki\ ;
+鬽 > bi\ ;
+鬹 > ki\ ;
+鬶 > ki\ ;
+鬴 > fu\ ;
+鬐 > ki\ ;
+鬍 > ko\ ;
+鬌 > ta\ ;
+鬁 > ri\ ;
+髿 > sa\ ;
+髽 > sa\ ;
+髵 > ji\ ;
+髲 > hi\ ;
+髬 > hi\ ;
+髗 > ro\ ;
+髃 > gu\ ;
+髀 > hi\ ;
+骻 > ka\ ;
+驪 > ri\ ;
+驥 > ki\ ;
+驊 > ka\ ;
+騾 > ra\ ;
+騧 > ka\ ;
+騤 > ki\ ;
+騢 > ka\ ;
+騖 > bu\ ;
+騑 > hi\ ;
+騏 > ki\ ;
+騎 > ki\ ;
+駰 > in\ ;
+駬 > ji\ ;
+駡 > ba\ ;
+駞 > da\ ;
+駝 > ta\ ;
+駙 > fu\ ;
+駕 > ga\ ;
+駓 > hi\ ;
+駑 > do\ ;
+馿 > ro\ ;
+馱 > ta\ ;
+馟 > to\ ;
+馗 > ki\ ;
+饠 > ra\ ;
+饜 > en\ ;
+饋 > ki\ ;
+饇 > yo\ ;
+饂 > un\ ;
+餽 > ki\ ;
+餼 > ki\ ;
+餲 > ei\ ;
+餬 > ko\ ;
+餫 > un\ ;
+餡 > an\ ;
+餜 > ka\ ;
+餔 > ho\ ;
+餇 > to\ ;
+飫 > yo\ ;
+颶 > ku\ ;
+颫 > fu\ ;
+颕 > ei\ ;
+顱 > ro\ ;
+顬 > ju\ ;
+顗 > gi\ ;
+頵 > in\ ;
+頴 > ei\ ;
+頫 > fu\ ;
+頎 > ki\ ;
+頍 > gi\ ;
+韺 > ei\ ;
+韵 > in\ ;
+韞 > on\ ;
+韗 > un\ ;
+鞿 > ki\ ;
+鞾 > ka\ ;
+鞼 > ki\ ;
+鞵 > ai\ ;
+鞍 > an\ ;
+鞋 > ai\ ;
+鞅 > ou\ ;
+鞁 > hi\ ;
+靿 > ou\ ;
+靻 > so\ ;
+靷 > in\ ;
+靶 > ha\ ;
+靉 > ai\ ;
+霪 > in\ ;
+霣 > in\ ;
+霏 > hi\ ;
+需 > ju\ ;
+雺 > mu\ ;
+雅 > ga\ ;
+隳 > ki\ ;
+隩 > ou\ ;
+隘 > ai\ ;
+隕 > in\ ;
+隐 > in\ ;
+隋 > ta\ ;
+隂 > in\ ;
+隁 > en\ ;
+陻 > in\ ;
+陴 > hi\ ;
+陒 > ki\ ;
+陏 > ta\ ;
+陂 > ha\ ;
+陁 > ta\ ;
+阽 > en\ ;
+阼 > so\ ;
+阻 > so\ ;
+阥 > in\ ;
+阜 > fu\ ;
+阇 > to\ ;
+闞 > kn\ ;
+闚 > ki\ ;
+闍 > to\ ;
+闉 > in\ ;
+閻 > en\ ;
+閹 > en\ ;
+閭 > ro\ ;
+閟 > hi\ ;
+镾 > bi\ ;
+鑼 > ra\ ;
+鑪 > ro\ ;
+鐖 > ki\ ;
+鏖 > ou\ ;
+鏍 > ra\ ;
+鏁 > sa\ ;
+鎶 > ka\ ;
+鎵 > ka\ ;
+鎣 > ei\ ;
+鎈 > sa\ ;
+鎂 > bi\ ;
+鎁 > ya\ ;
+鍺 > ta\ ;
+鍜 > ka\ ;
+鍍 > to\ ;
+鍈 > ei\ ;
+錻 > bu\ ;
+錮 > ko\ ;
+錤 > ki\ ;
+錡 > ki\ ;
+錍 > hi\ ;
+鋺 > en\ ;
+鋰 > ri\ ;
+鋣 > ya\ ;
+鋘 > ka\ ;
+鋆 > in\ ;
+銼 > sa\ ;
+銳 > ei\ ;
+銨 > an\ ;
+銟 > sa\ ;
+鉠 > ei\ ;
+鉍 > hi\ ;
+鈹 > hi\ ;
+鈷 > ko\ ;
+鈩 > ro\ ;
+鈦 > ta\ ;
+鈥 > ka\ ;
+鈝 > in\ ;
+鈘 > gi\ ;
+鈇 > hu\ ;
+鈆 > en\ ;
+鈀 > ha\ ;
+釹 > jo\ ;
+釷 > to\ ;
+釵 > sa\ ;
+釡 > fu\ ;
+釐 > ri\ ;
+醿 > bi\ ;
+醼 > en\ ;
+醨 > ri\ ;
+醡 > sa\ ;
+醞 > un\ ;
+醖 > un\ ;
+醐 > ko\ ;
+醃 > en\ ;
+酺 > ho\ ;
+酴 > to\ ;
+酳 > in\ ;
+酥 > so\ ;
+酤 > ko\ ;
+酢 > su\ ;
+酡 > ta\ ;
+酗 > ku\ ;
+酓 > en\ ;
+酈 > ri\ ;
+鄱 > ha\ ;
+鄢 > en\ ;
+鄠 > ko\ ;
+鄜 > hu\ ;
+鄖 > un\ ;
+鄈 > ki\ ;
+鄆 > un\ ;
+鄅 > gu\ ;
+郿 > bi\ ;
+郾 > en\ ;
+郶 > bu\ ;
+郫 > hi\ ;
+郢 > ei\ ;
+郛 > fu\ ;
+郙 > hu\ ;
+邳 > hi\ ;
+邐 > ri\ ;
+邏 > ra\ ;
+邇 > ji\ ;
+遡 > so\ ;
+遐 > ka\ ;
+逾 > yu\ ;
+逺 > en\ ;
+逵 > ki\ ;
+逘 > gi\ ;
+逋 > ho\ ;
+迱 > ta\ ;
+迬 > ou\ ;
+迩 > ji\ ;
+迕 > go\ ;
+迓 > ga\ ;
+运 > un\ ;
+迋 > ou\ ;
+辤 > ji\ ;
+辝 > ji\ ;
+轤 > ro\ ;
+轡 > hi\ ;
+轝 > yo\ ;
+轜 > ji\ ;
+轅 > en\ ;
+轀 > on\ ;
+輸 > yu\ ;
+輠 > ka\ ;
+輔 > fu\ ;
+輅 > ro\ ;
+輀 > ji\ ;
+軻 > ka\ ;
+軱 > ko\ ;
+軮 > ou\ ;
+軌 > ki\ ;
+軃 > ta\ ;
+軀 > ku\ ;
+躲 > ta\ ;
+躱 > ta\ ;
+躯 > ku\ ;
+躛 > ei\ ;
+躗 > ei\ ;
+蹞 > ki\ ;
+蹉 > sa\ ;
+踽 > ku\ ;
+踷 > ta\ ;
+踦 > ki\ ;
+踠 > en\ ;
+踑 > ki\ ;
+跿 > to\ ;
+跽 > ki\ ;
+跺 > ta\ ;
+跬 > ki\ ;
+跨 > ko\ ;
+跥 > ta\ ;
+跗 > fu\ ;
+跔 > ku\ ;
+跏 > ka\ ;
+跎 > ta\ ;
+跇 > ei\ ;
+跂 > ki\ ;
+趺 > fu\ ;
+赮 > ka\ ;
+赟 > in\ ;
+赑 > hi\ ;
+贏 > ei\ ;
+贇 > in\ ;
+賻 > fu\ ;
+賦 > fu\ ;
+賏 > ei\ ;
+賈 > ko\ ;
+賂 > ro\ ;
+賁 > hi\ ;
+賀 > ga\ ;
+貳 > ni\ ;
+貮 > ni\ ;
+貔 > hi\ ;
+貐 > yu\ ;
+貍 > ri\ ;
+豾 > hi\ ;
+豼 > hi\ ;
+豭 > ka\ ;
+豨 > ki\ ;
+豝 > ha\ ;
+豙 > gi\ ;
+豗 > ka\ ;
+豔 > en\ ;
+豓 > en\ ;
+豎 > ju\ ;
+豌 > en\ ;
+豈 > ki\ ;
+谺 > ka\ ;
+讔 > in\ ;
+讏 > ei\ ;
+讌 > en\ ;
+讆 > ei\ ;
+讄 > ru\ ;
+譭 > ki\ ;
+譜 > fu\ ;
+譒 > ha\ ;
+譏 > ki\ ;
+譌 > ka\ ;
+譆 > ki\ ;
+譃 > ku\ ;
+譁 > ka\ ;
+謼 > ko\ ;
+謳 > ou\ ;
+謨 > bo\ ;
+謌 > ka\ ;
+諳 > an\ ;
+諱 > ki\ ;
+諭 > yu\ ;
+諛 > yu\ ;
+諆 > ki\ ;
+誹 > hi\ ;
+誧 > ho\ ;
+誣 > fu\ ;
+誒 > ki\ ;
+誐 > ga\ ;
+誋 > ki\ ;
+誀 > ji\ ;
+詭 > ki\ ;
+詫 > ta\ ;
+詡 > ku\ ;
+詠 > ei\ ;
+詛 > so\ ;
+詖 > hi\ ;
+詑 > ta\ ;
+詐 > sa\ ;
+詍 > ei\ ;
+詈 > ri\ ;
+詁 > ko\ ;
+訶 > ka\ ;
+訯 > sa\ ;
+訏 > ku\ ;
+訃 > fu\ ;
+觭 > ki\ ;
+觚 > ko\ ;
+觕 > so\ ;
+覼 > ra\ ;
+覶 > ra\ ;
+覰 > so\ ;
+覬 > ki\ ;
+覩 > to\ ;
+覦 > yu\ ;
+覙 > ra\ ;
+規 > ki\ ;
+覊 > ki\ ;
+覉 > ki\ ;
+覇 > ha\ ;
+襣 > hi\ ;
+褵 > ri\ ;
+褲 > ko\ ;
+褨 > sa\ ;
+褕 > yu\ ;
+裹 > ka\ ;
+裷 > en\ ;
+裨 > hi\ ;
+裟 > sa\ ;
+裔 > ei\ ;
+裀 > in\ ;
+袽 > jo\ ;
+袮 > ne\ ;
+袙 > ha\ ;
+袈 > ka\ ;
+袁 > en\ ;
+衹 > ki\ ;
+衢 > ku\ ;
+衚 > ko\ ;
+衍 > en\ ;
+衈 > ji\ ;
+蠹 > to\ ;
+蠱 > ko\ ;
+蠧 > to\ ;
+蠕 > da\ ;
+蠑 > ei\ ;
+蠃 > ra\ ;
+蟫 > in\ ;
+蟣 > ki\ ;
+蟢 > ki\ ;
+螾 > in\ ;
+螞 > ba\ ;
+螘 > gi\ ;
+蝸 > ka\ ;
+蝴 > ko\ ;
+蝯 > en\ ;
+蝝 > en\ ;
+蝘 > en\ ;
+蝓 > yu\ ;
+蝌 > ka\ ;
+蜿 > en\ ;
+蜾 > ka\ ;
+蜱 > hi\ ;
+蜞 > ki\ ;
+蜚 > hi\ ;
+蜒 > en\ ;
+蜎 > en\ ;
+蜊 > ri\ ;
+蜉 > fu\ ;
+蜈 > go\ ;
+蜅 > hu\ ;
+蛾 > ga\ ;
+蛄 > ko\ ;
+蚹 > hu\ ;
+蚵 > ka\ ;
+蚭 > ji\ ;
+蚨 > hu\ ;
+蚜 > ka\ ;
+蚚 > ki\ ;
+蚓 > in\ ;
+蚑 > ki\ ;
+蚍 > hi\ ;
+虺 > ki\ ;
+虧 > ki\ ;
+虝 > ko\ ;
+虘 > sa\ ;
+虖 > ko\ ;
+虍 > ko\ ;
+虂 > ro\ ;
+虁 > ki\ ;
+蘿 > ra\ ;
+蘼 > bi\ ;
+蘺 > ri\ ;
+蘶 > gi\ ;
+蘧 > ku\ ;
+蘡 > ou\ ;
+蘙 > ei\ ;
+蘓 > so\ ;
+蘑 > ma\ ;
+蘎 > ki\ ;
+蘊 > un\ ;
+蘄 > ki\ ;
+藻 > mo\ ;
+藹 > ai\ ;
+藴 > un\ ;
+藦 > ba\ ;
+薿 > gi\ ;
+薷 > ju\ ;
+薗 > en\ ;
+薆 > ai\ ;
+薀 > un\ ;
+蕷 > yo\ ;
+蕰 > un\ ;
+蕠 > jo\ ;
+蕜 > hi\ ;
+蕓 > un\ ;
+蔴 > ma\ ;
+蔬 > so\ ;
+蔫 > en\ ;
+蔢 > ha\ ;
+蓙 > za\ ;
+蓖 > hi\ ;
+蓏 > ra\ ;
+蓌 > sa\ ;
+蓊 > ou\ ;
+蒽 > on\ ;
+蒱 > ho\ ;
+蒩 > so\ ;
+蒞 > ri\ ;
+蒕 > un\ ;
+葭 > ka\ ;
+葫 > ko\ ;
+葩 > ha\ ;
+葊 > an\ ;
+葆 > ho\ ;
+萸 > yu\ ;
+萵 > wa\ ;
+萓 > gi\ ;
+萆 > hi\ ;
+萁 > ki\ ;
+菸 > en\ ;
+菴 > an\ ;
+菲 > hi\ ;
+菰 > ko\ ;
+菠 > ha\ ;
+菟 > to\ ;
+菏 > ka\ ;
+菇 > ko\ ;
+菀 > en\ ;
+莵 > to\ ;
+莪 > ga\ ;
+莩 > hu\ ;
+莝 > sa\ ;
+莚 > en\ ;
+莎 > sa\ ;
+莆 > hu\ ;
+莅 > ri\ ;
+荼 > to\ ;
+荰 > to\ ;
+荔 > ri\ ;
+荂 > ka\ ;
+茵 > in\ ;
+茲 > ji\ ;
+茰 > yu\ ;
+茣 > go\ ;
+茘 > ri\ ;
+苽 > ko\ ;
+苻 > fu\ ;
+苴 > so\ ;
+苤 > hi\ ;
+芾 > hi\ ;
+芺 > ou\ ;
+芰 > ki\ ;
+芭 > ba\ ;
+芪 > ki\ ;
+芦 > ro\ ;
+芙 > fu\ ;
+芘 > hi\ ;
+芔 > ki\ ;
+芑 > ki\ ;
+芈 > ba\ ;
+艷 > en\ ;
+艪 > ro\ ;
+艤 > gi\ ;
+艣 > ro\ ;
+艖 > sa\ ;
+艅 > yo\ ;
+艃 > ri\ ;
+舸 > ka\ ;
+舮 > ro\ ;
+舗 > ho\ ;
+舖 > ho\ ;
+舒 > jo\ ;
+舁 > yo\ ;
+臾 > yu\ ;
+臞 > ku\ ;
+臝 > ra\ ;
+臙 > en\ ;
+臂 > hi\ ;
+膴 > ko\ ;
+膩 > ji\ ;
+膆 > so\ ;
+腴 > yu\ ;
+腡 > ra\ ;
+腗 > hi\ ;
+腓 > hi\ ;
+脾 > hi\ ;
+脵 > ko\ ;
+脯 > ho\ ;
+脞 > sa\ ;
+脜 > ju\ ;
+胹 > ji\ ;
+胯 > ko\ ;
+胭 > in\ ;
+胙 > so\ ;
+胕 > hu\ ;
+胍 > ko\ ;
+胊 > ku\ ;
+肹 > hi\ ;
+肞 > sa\ ;
+肚 > to\ ;
+聭 > ki\ ;
+耺 > un\ ;
+耶 > ya\ ;
+耡 > jo\ ;
+耞 > ka\ ;
+耙 > ha\ ;
+耘 > un\ ;
+耏 > ji\ ;
+耍 > sa\ ;
+而 > ji\ ;
+耆 > ki\ ;
+翬 > ki\ ;
+翡 > hi\ ;
+羲 > gi\ ;
+羭 > yu\ ;
+羖 > ko\ ;
+羋 > ba\ ;
+羈 > ki\ ;
+羇 > ki\ ;
+羆 > hi\ ;
+罷 > hi\ ;
+罨 > an\ ;
+罦 > hu\ ;
+罟 > ko\ ;
+罛 > ro\ ;
+罘 > fu\ ;
+罏 > ro\ ;
+罌 > ou\ ;
+罃 > ou\ ;
+缻 > fu\ ;
+纓 > ei\ ;
+纑 > ro\ ;
+繧 > un\ ;
+繥 > ki\ ;
+繄 > ei\ ;
+縻 > bi\ ;
+縷 > ru\ ;
+縯 > en\ ;
+縭 > ri\ ;
+縜 > in\ ;
+縕 > un\ ;
+縊 > ei\ ;
+縈 > ei\ ;
+縀 > ka\ ;
+緣 > en\ ;
+緋 > hi\ ;
+綬 > ju\ ;
+綦 > ki\ ;
+綞 > ta\ ;
+綖 > en\ ;
+絮 > jo\ ;
+絪 > in\ ;
+絥 > hi\ ;
+絝 > ku\ ;
+絇 > ku\ ;
+紽 > ta\ ;
+紦 > ha\ ;
+紜 > un\ ;
+紗 > sa\ ;
+紕 > hi\ ;
+糯 > da\ ;
+糢 > bo\ ;
+糜 > bi\ ;
+粿 > ka\ ;
+粫 > ji\ ;
+粐 > ro\ ;
+粏 > ta\ ;
+粆 > sa\ ;
+粃 > hi\ ;
+籹 > jo\ ;
+籲 > yu\ ;
+籮 > ra\ ;
+籬 > ri\ ;
+籝 > ei\ ;
+籚 > ro\ ;
+簸 > ha\ ;
+簬 > ro\ ;
+簣 > ki\ ;
+簠 > hu\ ;
+簔 > sa\ ;
+簑 > sa\ ;
+簋 > ki\ ;
+簄 > ko\ ;
+簂 > ke\ ;
+篶 > en\ ;
+篚 > hi\ ;
+篔 > un\ ;
+箶 > ko\ ;
+箥 > ha\ ;
+箛 > ko\ ;
+箕 > ki\ ;
+箎 > ko\ ;
+筠 > in\ ;
+筎 > jo\ ;
+笴 > ka\ ;
+笳 > ka\ ;
+笯 > do\ ;
+笟 > ko\ ;
+笆 > ha\ ;
+竬 > ku\ ;
+竪 > ju\ ;
+竩 > gi\ ;
+竒 > ki\ ;
+窹 > go\ ;
+窳 > wa\ ;
+窬 > yu\ ;
+窪 > wa\ ;
+窩 > ka\ ;
+窠 > ka\ ;
+窊 > wa\ ;
+穩 > on\ ;
+穥 > yo\ ;
+穢 > ai\ ;
+穖 > ki\ ;
+穎 > ei\ ;
+穌 > so\ ;
+稳 > on\ ;
+稞 > ka\ ;
+稘 > ki\ ;
+稌 > to\ ;
+稃 > hu\ ;
+秧 > ou\ ;
+秠 > hi\ ;
+租 > so\ ;
+秕 > hi\ ;
+禾 > ka\ ;
+禨 > ki\ ;
+禧 > ki\ ;
+禡 > ba\ ;
+禜 > ei\ ;
+禑 > gu\ ;
+禍 > ka\ ;
+禋 > in\ ;
+祻 > ko\ ;
+祺 > ki\ ;
+祜 > ko\ ;
+祚 > so\ ;
+祙 > mi\ ;
+祔 > hu\ ;
+祇 > ki\ ;
+祁 > ki\ ;
+礠 > ji\ ;
+礜 > yo\ ;
+礒 > gi\ ;
+磯 > ki\ ;
+磤 > in\ ;
+磠 > ro\ ;
+磒 > in\ ;
+磋 > sa\ ;
+磁 > ji\ ;
+碼 > ba\ ;
+碬 > ka\ ;
+碤 > ei\ ;
+碕 > ki\ ;
+碔 > bu\ ;
+碆 > ha\ ;
+碁 > go\ ;
+硪 > gi\ ;
+砵 > ou\ ;
+砮 > do\ ;
+砣 > ta\ ;
+砢 > ra\ ;
+砒 > hi\ ;
+砑 > ga\ ;
+砆 > hu\ ;
+矬 > sa\ ;
+矩 > ku\ ;
+矑 > ro\ ;
+瞿 > ku\ ;
+瞽 > ko\ ;
+瞹 > ai\ ;
+瞶 > ki\ ;
+瞖 > ei\ ;
+瞆 > ki\ ;
+睿 > ei\ ;
+睹 > to\ ;
+睱 > ka\ ;
+睢 > ki\ ;
+睎 > ki\ ;
+睊 > en\ ;
+睂 > bi\ ;
+眭 > ki\ ;
+眗 > ku\ ;
+盱 > ku\ ;
+盬 > ko\ ;
+盧 > ro\ ;
+盦 > ou\ ;
+盙 > fu\ ;
+盎 > ou\ ;
+盉 > ka\ ;
+盈 > ei\ ;
+盁 > ei\ ;
+皷 > ko\ ;
+皧 > ai\ ;
+皤 > ha\ ;
+皈 > ki\ ;
+癯 > ku\ ;
+癮 > in\ ;
+癭 > ei\ ;
+癒 > yu\ ;
+癊 > in\ ;
+瘸 > ka\ ;
+瘥 > sa\ ;
+瘟 > on\ ;
+瘞 > ei\ ;
+瘖 > in\ ;
+瘕 > ka\ ;
+瘏 > to\ ;
+瘉 > yu\ ;
+瘀 > yo\ ;
+痼 > ko\ ;
+痹 > hi\ ;
+痲 > ma\ ;
+痱 > hi\ ;
+痧 > sa\ ;
+痤 > sa\ ;
+痢 > ri\ ;
+痡 > ho\ ;
+痞 > hi\ ;
+痔 > ji\ ;
+痄 > sa\ ;
+痂 > ka\ ;
+痀 > ku\ ;
+疿 > hi\ ;
+疤 > ha\ ;
+疜 > ka\ ;
+疕 > hi\ ;
+疏 > so\ ;
+畿 > ki\ ;
+畸 > ki\ ;
+畲 > yo\ ;
+畭 > yo\ ;
+畬 > yo\ ;
+畝 > se\ ;
+畒 > ho\ ;
+畉 > fu\ ;
+畇 > in\ ;
+畆 > ho\ ;
+畀 > hi\ ;
+甫 > ho\ ;
+甖 > ou\ ;
+甒 > bu\ ;
+甌 > ou\ ;
+瓯 > ou\ ;
+瓮 > ou\ ;
+瓠 > ko\ ;
+瓔 > ei\ ;
+瓐 > ro\ ;
+璽 > ji\ ;
+璵 > yo\ ;
+璦 > ai\ ;
+璣 > ki\ ;
+璟 > ei\ ;
+璑 > bu\ ;
+璐 > ro\ ;
+璃 > ri\ ;
+瑳 > sa\ ;
+瑪 > ba\ ;
+瑩 > ei\ ;
+瑣 > sa\ ;
+瑜 > yu\ ;
+瑛 > ei\ ;
+瑚 > ko\ ;
+瑗 > en\ ;
+琶 > ha\ ;
+琵 > bi\ ;
+琰 > en\ ;
+琬 > en\ ;
+琪 > ki\ ;
+琦 > ki\ ;
+琥 > ko\ ;
+琑 > sa\ ;
+琊 > ya\ ;
+珸 > go\ ;
+珷 > bu\ ;
+珴 > ga\ ;
+珱 > ei\ ;
+珥 > ji\ ;
+珝 > ku\ ;
+珂 > ka\ ;
+玻 > ha\ ;
+玞 > hu\ ;
+玘 > ki\ ;
+玆 > ji\ ;
+玀 > ra\ ;
+獼 > bi\ ;
+獹 > ro\ ;
+猨 > en\ ;
+猧 > ka\ ;
+猤 > ki\ ;
+猢 > ko\ ;
+猓 > ka\ ;
+猒 > en\ ;
+猇 > ou\ ;
+狳 > yo\ ;
+狕 > ou\ ;
+狒 > hi\ ;
+狉 > hi\ ;
+狁 > in\ ;
+犧 > gi\ ;
+犓 > su\ ;
+犂 > ri\ ;
+犁 > ri\ ;
+牾 > go\ ;
+牱 > ka\ ;
+牯 > ko\ ;
+牫 > ka\ ;
+牠 > ta\ ;
+牁 > ka\ ;
+爾 > ji\ ;
+爹 > ta\ ;
+爸 > ha\ ;
+爰 > en\ ;
+爬 > ha\ ;
+爓 > en\ ;
+燬 > ki\ ;
+燄 > en\ ;
+熺 > ki\ ;
+熹 > ki\ ;
+熰 > ou\ ;
+熙 > ki\ ;
+熈 > ki\ ;
+熅 > un\ ;
+煦 > ku\ ;
+煕 > ki\ ;
+煐 > ei\ ;
+煇 > ki\ ;
+煆 > ka\ ;
+焸 > ko\ ;
+焱 > en\ ;
+焰 > en\ ;
+焉 > en\ ;
+烓 > ei\ ;
+炬 > ko\ ;
+炉 > ro\ ;
+炁 > ki\ ;
+灩 > en\ ;
+灧 > en\ ;
+灞 > ha\ ;
+灕 > ri\ ;
+灔 > en\ ;
+灎 > en\ ;
+灈 > ku\ ;
+瀴 > ei\ ;
+瀰 > bi\ ;
+瀯 > ei\ ;
+瀠 > ei\ ;
+瀛 > ei\ ;
+瀘 > ro\ ;
+瀇 > ou\ ;
+瀅 > ei\ ;
+濞 > hi\ ;
+濚 > ei\ ;
+澦 > yo\ ;
+澐 > un\ ;
+潽 > ho\ ;
+潞 > ro\ ;
+潙 > ki\ ;
+潁 > ei\ ;
+漦 > gi\ ;
+漚 > ou\ ;
+漓 > ri\ ;
+漊 > ru\ ;
+滹 > ko\ ;
+滸 > ko\ ;
+滷 > ro\ ;
+滬 > ko\ ;
+滏 > hu\ ;
+滋 > ji\ ;
+滊 > ki\ ;
+滃 > ou\ ;
+溳 > un\ ;
+溫 > on\ ;
+溦 > mi\ ;
+溥 > ho\ ;
+溠 > sa\ ;
+溈 > ki\ ;
+湮 > in\ ;
+湄 > bi\ ;
+渼 > bi\ ;
+渶 > ei\ ;
+渮 > ka\ ;
+渣 > sa\ ;
+渝 > yu\ ;
+渕 > en\ ;
+渊 > en\ ;
+渄 > hi\ ;
+淤 > yo\ ;
+淠 > hi\ ;
+淝 > hi\ ;
+淇 > ki\ ;
+涹 > wa\ ;
+涴 > en\ ;
+涂 > to\ ;
+浯 > go\ ;
+洼 > ai\ ;
+洹 > en\ ;
+洳 > jo\ ;
+洱 > ji\ ;
+洏 > ji\ ;
+洎 > ki\ ;
+洇 > in\ ;
+泱 > ou\ ;
+泝 > so\ ;
+泓 > ou\ ;
+泒 > ko\ ;
+沽 > ko\ ;
+沲 > ta\ ;
+沱 > ta\ ;
+沘 > hi\ ;
+沍 > go\ ;
+沇 > en\ ;
+沂 > ki\ ;
+汻 > ko\ ;
+汪 > ou\ ;
+汊 > sa\ ;
+氿 > ki\ ;
+氳 > un\ ;
+氲 > un\ ;
+氨 > an\ ;
+氤 > in\ ;
+气 > ki\ ;
+氍 > ku\ ;
+氂 > ri\ ;
+毹 > yu\ ;
+毦 > ji\ ;
+毖 > hi\ ;
+毋 > bu\ ;
+毅 > ki\ ;
+毁 > ki\ ;
+毀 > ki\ ;
+殹 > ei\ ;
+殷 > in\ ;
+殴 > ou\ ;
+殬 > to\ ;
+殪 > ei\ ;
+殞 > in\ ;
+殂 > so\ ;
+歧 > ki\ ;
+步 > ho\ ;
+歖 > ki\ ;
+欸 > ai\ ;
+欨 > ku\ ;
+欧 > ou\ ;
+欤 > yo\ ;
+欛 > ha\ ;
+欏 > ra\ ;
+櫽 > in\ ;
+櫲 > yo\ ;
+櫨 > ro\ ;
+櫞 > en\ ;
+櫓 > ro\ ;
+櫃 > ki\ ;
+檿 > en\ ;
+檽 > ji\ ;
+檼 > in\ ;
+檱 > ki\ ;
+檥 > gi\ ;
+檟 > ka\ ;
+檛 > ta\ ;
+檃 > in\ ;
+橱 > zu\ ;
+橫 > ou\ ;
+橢 > da\ ;
+橒 > un\ ;
+橆 > bu\ ;
+橅 > bo\ ;
+樻 > ki\ ;
+樲 > ji\ ;
+樝 > sa\ ;
+槻 > ki\ ;
+槥 > ei\ ;
+槎 > sa\ ;
+榿 > ki\ ;
+榮 > ei\ ;
+榨 > sa\ ;
+榡 > so\ ;
+榘 > ku\ ;
+榑 > fu\ ;
+榆 > yu\ ;
+楹 > ei\ ;
+楰 > yu\ ;
+楣 > bi\ ;
+楡 > yu\ ;
+楜 > ko\ ;
+楛 > ko\ ;
+楚 > so\ ;
+楕 > da\ ;
+楂 > sa\ ;
+椻 > en\ ;
+椵 > ka\ ;
+椰 > ya\ ;
+棪 > en\ ;
+棝 > ko\ ;
+棜 > yo\ ;
+棐 > hi\ ;
+棋 > ki\ ;
+棊 > ki\ ;
+梶 > bi\ ;
+梳 > so\ ;
+梭 > sa\ ;
+梩 > ri\ ;
+梧 > go\ ;
+梦 > mu\ ;
+梛 > da\ ;
+梎 > ou\ ;
+桴 > fu\ ;
+桫 > sa\ ;
+桗 > ta\ ;
+桍 > ko\ ;
+栭 > ji\ ;
+栩 > ku\ ;
+栧 > ei\ ;
+柲 > hi\ ;
+柰 > na\ ;
+柯 > ka\ ;
+柧 > ko\ ;
+查 > sa\ ;
+柤 > sa\ ;
+柡 > ei\ ;
+柎 > fu\ ;
+柅 > ji\ ;
+柁 > ta\ ;
+柀 > hi\ ;
+枻 > ei\ ;
+枸 > ku\ ;
+枳 > ki\ ;
+枦 > ro\ ;
+枙 > ga\ ;
+枑 > ko\ ;
+枎 > hu\ ;
+枉 > ou\ ;
+枇 > hi\ ;
+杷 > ha\ ;
+杞 > ko\ ;
+杜 > do\ ;
+杈 > sa\ ;
+朶 > da\ ;
+朵 > da\ ;
+朠 > ei\ ;
+朞 > ki\ ;
+朏 > hi\ ;
+朇 > hi\ ;
+曽 > zo\ ;
+曵 > ei\ ;
+曱 > ou\ ;
+曦 > gi\ ;
+曖 > ai\ ;
+曁 > ki\ ;
+曀 > ei\ ;
+暿 > ki\ ;
+暨 > ki\ ;
+暜 > fu\ ;
+暛 > sa\ ;
+暎 > ei\ ;
+暉 > ki\ ;
+暈 > un\ ;
+暃 > hi\ ;
+暀 > ou\ ;
+晼 > en\ ;
+晻 > an\ ;
+晷 > ki\ ;
+晤 > go\ ;
+晡 > ho\ ;
+晞 > ki\ ;
+晏 > an\ ;
+昹 > ai\ ;
+昷 > on\ ;
+昫 > ku\ ;
+昖 > en\ ;
+昈 > ko\ ;
+昀 > in\ ;
+旿 > go\ ;
+旹 > ji\ ;
+旴 > ku\ ;
+旣 > ki\ ;
+旡 > ki\ ;
+无 > bu\ ;
+旟 > yo\ ;
+旎 > ji\ ;
+旉 > fu\ ;
+旂 > ki\ ;
+斝 > ka\ ;
+敺 > ku\ ;
+敧 > ki\ ;
+敘 > jo\ ;
+敍 > jo\ ;
+敉 > bi\ ;
+攱 > ki\ ;
+攰 > ki\ ;
+攞 > ra\ ;
+攖 > ei\ ;
+擵 > ma\ ;
+擩 > ju\ ;
+撾 > ta\ ;
+播 > ha\ ;
+撝 > ki\ ;
+摸 > mo\ ;
+摣 > sa\ ;
+搽 > ta\ ;
+搵 > on\ ;
+搙 > nu\ ;
+搓 > sa\ ;
+揸 > sa\ ;
+揶 > ya\ ;
+援 > en\ ;
+揮 > ki\ ;
+揜 > en\ ;
+揆 > ki\ ;
+揄 > yu\ ;
+掾 > en\ ;
+掞 > en\ ;
+掎 > ki\ ;
+捼 > da\ ;
+捬 > hu\ ;
+捓 > se\ ;
+捐 > en\ ;
+捂 > go\ ;
+挼 > da\ ;
+挫 > za\ ;
+挪 > da\ ;
+挧 > ku\ ;
+挓 > ta\ ;
+挐 > da\ ;
+按 > an\ ;
+拿 > da\ ;
+拽 > ei\ ;
+拗 > ou\ ;
+拖 > ta\ ;
+拕 > ta\ ;
+拏 > da\ ;
+拊 > fu\ ;
+拇 > bo\ ;
+抷 > hi\ ;
+抳 > ji\ ;
+抎 > un\ ;
+把 > wa\ ;
+找 > ka\ ;
+扯 > ta\ ;
+扠 > sa\ ;
+扈 > ko\ ;
+戽 > ko\ ;
+户 > ko\ ;
+戶 > ko\ ;
+戱 > gi\ ;
+戣 > ki\ ;
+戓 > ka\ ;
+戍 > ju\ ;
+戊 > bo\ ;
+懯 > fu\ ;
+懧 > da\ ;
+懦 > da\ ;
+懡 > ba\ ;
+懕 > en\ ;
+懊 > ou\ ;
+憮 > bu\ ;
+憜 > ta\ ;
+憙 > ki\ ;
+憘 > ki\ ;
+慍 > un\ ;
+慈 > ji\ ;
+愾 > ki\ ;
+愬 > so\ ;
+愫 > so\ ;
+愪 > un\ ;
+愧 > ki\ ;
+愠 > un\ ;
+愔 > in\ ;
+惲 > un\ ;
+惰 > da\ ;
+惧 > ku\ ;
+惢 > sa\ ;
+惎 > ki\ ;
+惈 > ka\ ;
+悱 > hi\ ;
+您 > ji\ ;
+悧 > ri\ ;
+悞 > go\ ;
+悕 > ki\ ;
+悑 > ho\ ;
+悆 > yo\ ;
+悂 > hi\ ;
+悁 > en\ ;
+恗 > ko\ ;
+恕 > jo\ ;
+恑 > ki\ ;
+恃 > ji\ ;
+恁 > in\ ;
+怩 > ji\ ;
+怤 > hu\ ;
+怙 > ko\ ;
+怘 > ko\ ;
+怕 > ha\ ;
+忯 > ki\ ;
+忬 > yo\ ;
+忤 > go\ ;
+忢 > go\ ;
+徽 > ki\ ;
+徍 > ai\ ;
+徂 > so\ ;
+彺 > ou\ ;
+彵 > ta\ ;
+彌 > bi\ ;
+弭 > bi\ ;
+弩 > do\ ;
+弧 > ko\ ;
+弣 > hu\ ;
+弝 > ha\ ;
+弖 > te\ ;
+弍 > ni\ ;
+弇 > en\ ;
+弃 > ki\ ;
+廴 > in\ ;
+廮 > ei\ ;
+廡 > bu\ ;
+廜 > to\ ;
+廚 > zu\ ;
+廕 > in\ ;
+廈 > ka\ ;
+庾 > yu\ ;
+庳 > hi\ ;
+庯 > ho\ ;
+庮 > iu\ ;
+庪 > ki\ ;
+庌 > ga\ ;
+庋 > ki\ ;
+庀 > hi\ ;
+幠 > ko\ ;
+幑 > ki\ ;
+幏 > ka\ ;
+幁 > su\ ;
+帾 > to\ ;
+帔 > hi\ ;
+帑 > do\ ;
+帍 > ko\ ;
+帊 > ha\ ;
+帆 > ho\ ;
+巳 > mi\ ;
+巙 > ki\ ;
+巍 > gi\ ;
+巋 > ki\ ;
+巇 > ki\ ;
+嶷 > gi\ ;
+嶴 > au\ ;
+嶬 > gi\ ;
+嶞 > ta\ ;
+嶓 > ha\ ;
+嶇 > ku\ ;
+嶁 > ru\ ;
+嶀 > to\ ;
+嵳 > sa\ ;
+嵯 > sa\ ;
+嵡 > ou\ ;
+嵟 > ki\ ;
+嵞 > to\ ;
+嵜 > ki\ ;
+嵖 > sa\ ;
+嵋 > bi\ ;
+崳 > yu\ ;
+崦 > en\ ;
+崋 > ka\ ;
+峹 > to\ ;
+峲 > ri\ ;
+峬 > ho\ ;
+峫 > ya\ ;
+峩 > ga\ ;
+峨 > ga\ ;
+峞 > ki\ ;
+峛 > ri\ ;
+峙 > ji\ ;
+峗 > gi\ ;
+峖 > an\ ;
+峔 > bo\ ;
+峏 > ji\ ;
+峊 > hu\ ;
+岻 > ji\ ;
+岵 > ko\ ;
+岴 > ku\ ;
+岯 > hi\ ;
+岮 > ta\ ;
+岨 > so\ ;
+岥 > ha\ ;
+岔 > sa\ ;
+岓 > ki\ ;
+岐 > ki\ ;
+岈 > ka\ ;
+岆 > eu\ ;
+屺 > ki\ ;
+屮 > sa\ ;
+屭 > ki\ ;
+屨 > ku\ ;
+屢 > ru\ ;
+屠 > to\ ;
+屄 > hi\ ;
+屃 > ki\ ;
+屁 > he\ ;
+尹 > in\ ;
+尯 > ki\ ;
+尮 > ta\ ;
+尫 > ou\ ;
+尪 > ou\ ;
+尩 > ou\ ;
+尣 > ou\ ;
+尢 > ou\ ;
+尔 > ji\ ;
+尓 > ji\ ;
+尒 > ji\ ;
+尃 > hu\ ;
+尀 > ha\ ;
+寲 > gi\ ;
+寤 > go\ ;
+寠 > ku\ ;
+寙 > yu\ ;
+寃 > en\ ;
+宱 > sa\ ;
+宐 > gi\ ;
+宎 > eu\ ;
+宄 > ki\ ;
+它 > ta\ ;
+孾 > ei\ ;
+孺 > ju\ ;
+孷 > ri\ ;
+孵 > fu\ ;
+孥 > do\ ;
+孚 > fu\ ;
+孋 > ri\ ;
+嬿 > en\ ;
+嬽 > en\ ;
+嬷 > ba\ ;
+嬴 > ei\ ;
+嬰 > ei\ ;
+嬮 > en\ ;
+嬤 > ba\ ;
+嬡 > ai\ ;
+嬔 > hu\ ;
+嬍 > bi\ ;
+嬀 > ki\ ;
+嫷 > ta\ ;
+嫵 > bu\ ;
+嫴 > ko\ ;
+嫮 > ko\ ;
+嫭 > ko\ ;
+嫫 > bo\ ;
+嫣 > en\ ;
+嫢 > ki\ ;
+嫠 > ri\ ;
+嫛 > ei\ ;
+嫗 > ou\ ;
+嫕 > ei\ ;
+嫊 > so\ ;
+媿 > ki\ ;
+媽 > bo\ ;
+媺 > bi\ ;
+媴 > en\ ;
+媱 > eu\ ;
+媬 > ho\ ;
+媪 > ou\ ;
+媩 > ko\ ;
+媠 > ta\ ;
+媖 > ei\ ;
+媕 > en\ ;
+媐 > ki\ ;
+媎 > so\ ;
+媄 > bi\ ;
+婽 > ka\ ;
+婺 > bu\ ;
+婬 > in\ ;
+婣 > in\ ;
+婟 > ko\ ;
+婓 > hi\ ;
+婐 > wa\ ;
+婍 > ki\ ;
+娸 > ki\ ;
+娰 > ji\ ;
+娯 > go\ ;
+娭 > ki\ ;
+娬 > bu\ ;
+娪 > go\ ;
+娥 > ga\ ;
+娜 > da\ ;
+娛 > go\ ;
+娓 > bi\ ;
+娒 > bo\ ;
+娌 > ri\ ;
+娄 > ru\ ;
+姽 > ki\ ;
+姻 > in\ ;
+姹 > ta\ ;
+姶 > ou\ ;
+姲 > an\ ;
+姱 > ka\ ;
+姬 > ki\ ;
+姥 > bo\ ;
+姝 > su\ ;
+姎 > au\ ;
+姇 > hu\ ;
+姆 > bo\ ;
+姁 > ku\ ;
+姀 > ka\ ;
+妼 > hi\ ;
+妴 > en\ ;
+妮 > ji\ ;
+妥 > da\ ;
+妤 > yo\ ;
+妣 > hi\ ;
+妟 > an\ ;
+妘 > un\ ;
+妒 > to\ ;
+妋 > fu\ ;
+妃 > hi\ ;
+奼 > ta\ ;
+奰 > hi\ ;
+奫 > in\ ;
+奜 > hi\ ;
+奓 > ta\ ;
+奄 > en\ ;
+夿 > ha\ ;
+夸 > ko\ ;
+夶 > hi\ ;
+夵 > en\ ;
+夥 > ka\ ;
+夤 > in\ ;
+夡 > ki\ ;
+夛 > ta\ ;
+夗 > en\ ;
+夔 > ki\ ;
+夓 > ka\ ;
+夎 > sa\ ;
+夃 > ko\ ;
+壽 > ju\ ;
+壺 > ko\ ;
+壩 > ha\ ;
+壡 > ei\ ;
+壛 > en\ ;
+壚 > ro\ ;
+壒 > ai\ ;
+壈 > on\ ;
+壄 > ya\ ;
+墺 > ou\ ;
+墲 > bo\ ;
+墯 > da\ ;
+墍 > ki\ ;
+塸 > ou\ ;
+塧 > ai\ ;
+塕 > ou\ ;
+塑 > so\ ;
+塐 > so\ ;
+塋 > ei\ ;
+塈 > ki\ ;
+堸 > hu\ ;
+堷 > an\ ;
+堶 > ku\ ;
+堳 > bi\ ;
+堰 > en\ ;
+堬 > yu\ ;
+堣 > gu\ ;
+堝 > ka\ ;
+堙 > in\ ;
+堍 > to\ ;
+堌 > ko\ ;
+堁 > ka\ ;
+埼 > ki\ ;
+埵 > ta\ ;
+埯 > en\ ;
+埧 > ku\ ;
+埤 > hi\ ;
+埠 > fu\ ;
+埔 > ho\ ;
+垺 > hu\ ;
+垪 > ha\ ;
+垞 > ta\ ;
+垝 > ki\ ;
+垜 > da\ ;
+垛 > da\ ;
+垀 > ko\ ;
+坿 > fu\ ;
+坷 > ka\ ;
+坳 > au\ ;
+坱 > au\ ;
+坯 > hi\ ;
+坬 > ka\ ;
+坡 > ha\ ;
+坒 > hi\ ;
+圻 > ki\ ;
+圮 > hi\ ;
+圫 > au\ ;
+圗 > to\ ;
+圔 > ou\ ;
+圑 > ho\ ;
+圎 > en\ ;
+囦 > en\ ;
+囙 > in\ ;
+囎 > so\ ;
+囌 > so\ ;
+囉 > ra\ ;
+嚶 > ou\ ;
+嚲 > ta\ ;
+嚱 > ki\ ;
+嚭 > hi\ ;
+嚧 > ro\ ;
+嚥 > en\ ;
+嚟 > ri\ ;
+嚜 > bi\ ;
+嚘 > iu\ ;
+嚕 > ro\ ;
+嚊 > hi\ ;
+嚅 > ju\ ;
+噾 > in\ ;
+噳 > gu\ ;
+噯 > ai\ ;
+噮 > en\ ;
+噫 > aa\ ;
+噕 > ki\ ;
+噐 > ki\ ;
+噅 > ki\ ;
+嘻 > ki\ ;
+嘳 > ki\ ;
+嘰 > ki\ ;
+嘟 > to\ ;
+嘜 > ba\ ;
+嘛 > ma\ ;
+嘙 > ha\ ;
+嘑 > ko\ ;
+嘏 > ka\ ;
+嘉 > ka\ ;
+嗩 > sa\ ;
+嗦 > sa\ ;
+嗏 > sa\ ;
+嗎 > ba\ ;
+嗉 > so\ ;
+嗄 > sa\ ;
+嗂 > eu\ ;
+喻 > yu\ ;
+営 > ei\ ;
+喳 > sa\ ;
+喱 > ri\ ;
+喩 > yu\ ;
+喥 > to\ ;
+喣 > ku\ ;
+喟 > ki\ ;
+喓 > eu\ ;
+喑 > in\ ;
+喎 > ka\ ;
+喂 > ki\ ;
+啤 > hi\ ;
+啝 > ka\ ;
+啚 > hi\ ;
+啘 > en\ ;
+啎 > go\ ;
+唹 > yo\ ;
+唷 > yo\ ;
+唵 > an\ ;
+唲 > ji\ ;
+唭 > ki\ ;
+唬 > ka\ ;
+唔 > go\ ;
+唏 > ki\ ;
+唎 > ri\ ;
+唋 > to\ ;
+唈 > ou\ ;
+唆 > sa\ ;
+唀 > iu\ ;
+哿 > ka\ ;
+哺 > ho\ ;
+哶 > ba\ ;
+哬 > ka\ ;
+哪 > da\ ;
+哧 > ka\ ;
+哦 > ga\ ;
+哥 > ka\ ;
+哉 > ya\ ;
+哇 > ai\ ;
+咼 > ka\ ;
+咻 > ku\ ;
+咪 > bi\ ;
+咩 > bi\ ;
+咥 > ki\ ;
+咤 > ta\ ;
+咡 > ji\ ;
+咜 > ta\ ;
+咖 > ka\ ;
+咕 > ko\ ;
+咑 > da\ ;
+咐 > ho\ ;
+咏 > ei\ ;
+咊 > wa\ ;
+咉 > au\ ;
+咃 > ta\ ;
+咀 > so\ ;
+呿 > ka\ ;
+呸 > hi\ ;
+呶 > do\ ;
+呵 > ka\ ;
+呴 > ku\ ;
+呱 > ko\ ;
+呮 > ki\ ;
+呭 > ei\ ;
+呬 > ki\ ;
+呦 > iu\ ;
+呢 > ji\ ;
+呍 > un\ ;
+呋 > hu\ ;
+呀 > ga\ ;
+吽 > in\ ;
+吴 > go\ ;
+吳 > go\ ;
+吧 > ha\ ;
+吔 > se\ ;
+吓 > ka\ ;
+吒 > ta\ ;
+吁 > ku\ ;
+叹 > iu\ ;
+叵 > ha\ ;
+叧 > ka\ ;
+叡 > ei\ ;
+叚 > ka\ ;
+叆 > ai\ ;
+厴 > en\ ;
+厬 > ki\ ;
+厦 > ka\ ;
+厞 > hi\ ;
+厏 > sa\ ;
+厊 > ka\ ;
+卦 > ka\ ;
+卉 > ki\ ;
+區 > ku\ ;
+匽 > en\ ;
+匼 > an\ ;
+区 > ku\ ;
+匭 > ki\ ;
+匬 > yu\ ;
+匪 > hi\ ;
+匕 > hi\ ;
+匎 > ou\ ;
+匀 > in\ ;
+勻 > in\ ;
+勩 > ei\ ;
+募 > bo\ ;
+勜 > ou\ ;
+勚 > ei\ ;
+劸 > ai\ ;
+劬 > ku\ ;
+劙 > ri\ ;
+劘 > ba\ ;
+劓 > gi\ ;
+剺 > ri\ ;
+剮 > ka\ ;
+剦 > en\ ;
+剡 > en\ ;
+剞 > ki\ ;
+剘 > ki\ ;
+剕 > hi\ ;
+剉 > sa\ ;
+剆 > ra\ ;
+剁 > ta\ ;
+刵 > ji\ ;
+刴 > ta\ ;
+刳 > ko\ ;
+刕 > ri\ ;
+划 > ka\ ;
+刏 > ki\ ;
+刉 > ki\ ;
+凹 > ou\ ;
+几 > ki\ ;
+凞 > ki\ ;
+凒 > gi\ ;
+凐 > in\ ;
+凅 > ko\ ;
+冴 > go\ ;
+冱 > go\ ;
+冨 > fu\ ;
+冤 > en\ ;
+冞 > bi\ ;
+冝 > gi\ ;
+冘 > in\ ;
+冔 > ku\ ;
+冎 > ka\ ;
+冀 > ki\ ;
+兾 > ki\ ;
+兹 > ji\ ;
+兪 > yu\ ;
+兗 > en\ ;
+兔 > to\ ;
+兑 > da\ ;
+兌 > da\ ;
+允 > in\ ;
+儺 > na\ ;
+儸 > ra\ ;
+儞 > ji\ ;
+儛 > bu\ ;
+儗 > gi\ ;
+儒 > ju\ ;
+儍 > sa\ ;
+僾 > ai\ ;
+僱 > ko\ ;
+僟 > ki\ ;
+僛 > ki\ ;
+僖 > ki\ ;
+僃 > bi\ ;
+傿 > en\ ;
+傻 > sa\ ;
+傴 > ku\ ;
+傢 > ka\ ;
+傟 > au\ ;
+傞 > sa\ ;
+傜 > eu\ ;
+傌 > ba\ ;
+傊 > in\ ;
+傅 > fu\ ;
+傃 > so\ ;
+偹 > bi\ ;
+偧 > ta\ ;
+偤 > yu\ ;
+偣 > en\ ;
+偠 > eu\ ;
+偌 > ja\ ;
+偃 > en\ ;
+偀 > ei\ ;
+倻 > ya\ ;
+倵 > bu\ ;
+倮 > ra\ ;
+倠 > ki\ ;
+倛 > ki\ ;
+倇 > en\ ;
+俾 > hi\ ;
+俻 > bi\ ;
+俷 > hi\ ;
+俱 > ku\ ;
+俰 > ka\ ;
+俞 > yu\ ;
+俚 > ri\ ;
+俙 > ki\ ;
+俘 > fu\ ;
+俐 > ri\ ;
+俌 > fu\ ;
+俉 > go\ ;
+俁 > gu\ ;
+侳 > sa\ ;
+侢 > bu\ ;
+侞 > jo\ ;
+侕 > ji\ ;
+侒 > an\ ;
+侎 > bi\ ;
+侌 > in\ ;
+侉 > ka\ ;
+佹 > ki\ ;
+佴 > ji\ ;
+佳 > ka\ ;
+你 > ji\ ;
+佒 > au\ ;
+佈 > ho\ ;
+佁 > ai\ ;
+伾 > hi\ ;
+伲 > ji\ ;
+伱 > ji\ ;
+估 > ko\ ;
+伮 > do\ ;
+伙 > ka\ ;
+伖 > do\ ;
+伕 > hu\ ;
+伌 > ai\ ;
+伃 > yo\ ;
+仵 > ko\ ;
+仳 > hi\ ;
+仨 > sa\ ;
+仛 > ta\ ;
+仆 > fu\ ;
+仅 > hu\ ;
+亹 > bi\ ;
+亸 > ta\ ;
+亱 > ya\ ;
+亓 > ki\ ;
+亊 > ji\ ;
+乵 > en\ ;
+乜 > ba\ ;
+乚 > in\ ;
+乕 > ko\ ;
+乎 > ka\ ;
+么 > eu\ ;
+个 > ka\ ;
+丕 > hi\ ;
+丌 > ki\ ;
+丅 > ka\ ;
+帷 > i\ ;
+異 > i\ ;
+畏 > i\ ;
+尾 > o\ ;
+宇 > u\ ;
+謂 > i\ ;
+爲 > i\ ;
+威 > i\ ;
+委 > i\ ;
+圍 > i\ ;
+囲 > i\ ;
+嗚 > o\ ;
+江 > e\ ;
+汚 > o\ ;
+萎 > i\ ;
+医 > i\ ;
+椅 > i\ ;
+胃 > i\ ;
+偉 > i\ ;
+頤 > i\ ;
+依 > e\ ;
+伊 > i\ ;
+以 > i\ ;
+亞 > a\ ;
+阿 > a\ ;
+緒 > o\ ;
+於 > o\ ;
+維 > i\ ;
+絵 > e\ ;
+移 > i\ ;
+醫 > i\ ;
+慰 > i\ ;
+意 > i\ ;
+惡 > o\ ;
+遺 > i\ ;
+違 > i\ ;
+鷾 > i\ ;
+鷧 > i\ ;
+鵶 > a\ ;
+鵜 > u\ ;
+鰞 > o\ ;
+鰄 > i\ ;
+鮧 > i\ ;
+骬 > u\ ;
+骫 > i\ ;
+骪 > i\ ;
+饐 > i\ ;
+顊 > i\ ;
+頥 > i\ ;
+頉 > i\ ;
+韙 > i\ ;
+韑 > i\ ;
+韋 > i\ ;
+霨 > i\ ;
+雩 > u\ ;
+隖 > o\ ;
+闈 > i\ ;
+閼 > a\ ;
+铔 > a\ ;
+鐿 > i\ ;
+鐚 > a\ ;
+錏 > a\ ;
+銥 > i\ ;
+鉯 > i\ ;
+鈳 > a\ ;
+釪 > u\ ;
+酏 > i\ ;
+鄔 > o\ ;
+邘 > u\ ;
+逶 > i\ ;
+迻 > i\ ;
+迤 > i\ ;
+迆 > i\ ;
+迂 > u\ ;
+貽 > i\ ;
+貤 > i\ ;
+褘 > i\ ;
+袘 > i\ ;
+螱 > i\ ;
+螠 > i\ ;
+螐 > o\ ;
+螉 > o\ ;
+蜼 > i\ ;
+蜲 > i\ ;
+蛜 > i\ ;
+虶 > u\ ;
+蔿 > i\ ;
+葳 > i\ ;
+荽 > i\ ;
+荏 > e\ ;
+茡 > u\ ;
+苢 > i\ ;
+苡 > i\ ;
+芛 > i\ ;
+胰 > i\ ;
+肄 > i\ ;
+緯 > i\ ;
+緭 > i\ ;
+紆 > u\ ;
+簃 > i\ ;
+竽 > u\ ;
+禹 > u\ ;
+禕 > i\ ;
+磈 > i\ ;
+矣 > i\ ;
+盂 > u\ ;
+瘂 > a\ ;
+痿 > i\ ;
+痾 > a\ ;
+痏 > i\ ;
+痍 > i\ ;
+疴 > a\ ;
+瑦 > o\ ;
+瑋 > i\ ;
+瑀 > u\ ;
+珆 > i\ ;
+玗 > u\ ;
+猬 > i\ ;
+猗 > i\ ;
+犄 > i\ ;
+熨 > i\ ;
+煒 > i\ ;
+濰 > i\ ;
+漪 > i\ ;
+湋 > i\ ;
+渭 > i\ ;
+洿 > o\ ;
+洧 > i\ ;
+污 > o\ ;
+汙 > o\ ;
+氬 > a\ ;
+毉 > i\ ;
+歍 > o\ ;
+欹 > i\ ;
+楲 > i\ ;
+椸 > i\ ;
+椏 > a\ ;
+桙 > u\ ;
+柂 > i\ ;
+枱 > i\ ;
+杇 > o\ ;
+杅 > u\ ;
+暐 > i\ ;
+旖 > i\ ;
+敡 > i\ ;
+攺 > i\ ;
+扜 > u\ ;
+扆 > i\ ;
+扅 > i\ ;
+懿 > i\ ;
+愇 > i\ ;
+惟 > i\ ;
+悘 > i\ ;
+恚 > i\ ;
+怡 > i\ ;
+徫 > i\ ;
+彞 > i\ ;
+彝 > i\ ;
+彜 > i\ ;
+彛 > i\ ;
+彚 > i\ ;
+彙 > i\ ;
+弬 > i\ ;
+弙 > o\ ;
+异 > i\ ;
+幃 > i\ ;
+巸 > i\ ;
+已 > i\ ;
+嵨 > o\ ;
+崺 > i\ ;
+崣 > i\ ;
+屙 > a\ ;
+寪 > i\ ;
+孲 > a\ ;
+媦 > i\ ;
+媙 > i\ ;
+婭 > a\ ;
+婀 > a\ ;
+娿 > a\ ;
+娃 > a\ ;
+姨 > i\ ;
+妸 > a\ ;
+壝 > i\ ;
+塢 > o\ ;
+堊 > a\ ;
+埡 > o\ ;
+坨 > i\ ;
+圯 > i\ ;
+圬 > o\ ;
+圩 > u\ ;
+囗 > i\ ;
+噁 > o\ ;
+喴 > i\ ;
+喡 > i\ ;
+啞 > a\ ;
+啊 > a\ ;
+咿 > i\ ;
+咦 > i\ ;
+吚 > i\ ;
+叞 > i\ ;
+匜 > i\ ;
+儰 > i\ ;
+偯 > i\ ;
+偊 > u\ ;
+侇 > i\ ;
+伿 > i\ ;
+亜 > a\ ;
+亏 > u\ ;
+于 > u\ ;
+亄 > i\ ;
+乁 > i\ ;
+丫 > a\ ;
+。 <> '.';
+# End RAW data for converting CJK characters
+
+
+:: katakana-latin ();
+:: hiragana-latin ();
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/icudata.jar b/src/com/ibm/icu/impl/data/icudata.jar
new file mode 100755
index 0000000..d97588a
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/icudata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0065a0e2416e2bbbb6d56e292f05fcb0ab535ea7a8cfdd658215032247a9e6ab
+size 6603983
diff --git a/src/com/ibm/icu/impl/data/package.html b/src/com/ibm/icu/impl/data/package.html
new file mode 100644
index 0000000..4f9bcd3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+</head>
+<body bgcolor="white">
+Resource data used by classes in com.ibm.text.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormat.java b/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
new file mode 100644
index 0000000..ec2a229
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
@@ -0,0 +1,187 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.duration;
+
+import java.text.FieldPosition;
+import java.util.Date;
+
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ */
+public class BasicDurationFormat extends DurationFormat {
+    
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -3146984141909457700L;
+    
+    transient DurationFormatter formatter;
+    transient PeriodFormatter pformatter;
+    transient PeriodFormatterService pfs = null;
+
+    public static DurationFormat getInstance(ULocale locale) {
+        return new BasicDurationFormat(locale);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    private static boolean checkXMLDuration = true; 
+//#endif
+
+    public StringBuffer format(Object object, StringBuffer toAppend, FieldPosition pos) {
+        if(object instanceof Long) {
+            String res = formatDurationFromNow(((Long)object).longValue());
+            return toAppend.append(res);
+        } else if(object instanceof Date) {
+            String res = formatDurationFromNowTo(((Date)object));
+            return toAppend.append(res);
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+        if(checkXMLDuration) try {
+            if(object instanceof javax.xml.datatype.Duration) {
+                String res = formatDuration(object);
+                return toAppend.append(res);
+            }
+        } catch ( NoClassDefFoundError ncdfe ) {
+            System.err.println("Skipping XML capability");
+            checkXMLDuration = false; // don't try again
+        }
+//#endif
+        throw new IllegalArgumentException("Cannot format given Object as a Duration");
+
+    }
+    
+    public BasicDurationFormat() {
+        pfs = BasicPeriodFormatterService.getInstance();
+        formatter = pfs.newDurationFormatterFactory().getFormatter();
+        pformatter = pfs.newPeriodFormatterFactory().setDisplayPastFuture(false).getFormatter();
+    }
+    /**
+     * 
+     */
+    public BasicDurationFormat(ULocale locale) {
+        super(locale);
+        pfs = BasicPeriodFormatterService.getInstance();
+        formatter = pfs.newDurationFormatterFactory().setLocale(locale.getName()).getFormatter();
+        pformatter = pfs.newPeriodFormatterFactory().setDisplayPastFuture(false).setLocale(locale.getName()).getFormatter();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFrom(long, long)
+     */
+    public String formatDurationFrom(long duration, long referenceDate) {
+        return formatter.formatDurationFrom(duration, referenceDate);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFromNow(long)
+     */
+    public String formatDurationFromNow(long duration) {
+        return formatter.formatDurationFromNow(duration);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFromNowTo(java.util.Date)
+     */
+    public String formatDurationFromNowTo(Date targetDate) {
+        return formatter.formatDurationFromNowTo(targetDate);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    /** 
+     *  JDK 1.5+ only
+     * @param o
+     * @return
+     * @see http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/Duration.html
+     */
+    public String formatDuration(Object obj) {
+        javax.xml.datatype.DatatypeConstants.Field inFields[] = { 
+                javax.xml.datatype.DatatypeConstants.YEARS,
+                javax.xml.datatype.DatatypeConstants.MONTHS,
+                javax.xml.datatype.DatatypeConstants.DAYS,
+                javax.xml.datatype.DatatypeConstants.HOURS,
+                javax.xml.datatype.DatatypeConstants.MINUTES,
+                javax.xml.datatype.DatatypeConstants.SECONDS,
+            };
+             TimeUnit outFields[] = { 
+                TimeUnit.YEAR,
+                TimeUnit.MONTH,
+                TimeUnit.DAY,
+                TimeUnit.HOUR,
+                TimeUnit.MINUTE,
+                TimeUnit.SECOND,
+            };
+
+        javax.xml.datatype.Duration inDuration = (javax.xml.datatype.Duration)obj;
+        Period p = null;
+        javax.xml.datatype.Duration duration = inDuration;
+        boolean inPast = false;
+        if(inDuration.getSign()<0) {
+            duration = inDuration.negate();
+            inPast = true;
+        }
+        // convert a Duration to a Period
+        boolean sawNonZero = false; // did we have a set, non-zero field?
+        for(int i=0;i<inFields.length;i++) {
+            if(duration.isSet(inFields[i])) {
+                Number n = duration.getField(inFields[i]);
+                if(n.intValue() == 0 && !sawNonZero) {
+                    continue; // ignore zero fields larger than the largest nonzero field
+                } else {
+                    sawNonZero = true;
+                }
+                float floatVal = n.floatValue();
+                // is there a 'secondary' unit to set?
+                TimeUnit alternateUnit = null;
+                float alternateVal = 0;
+                
+                // see if there is a fractional part
+                if(outFields[i]==TimeUnit.SECOND) {
+                    double fullSeconds = floatVal;
+                    double intSeconds = Math.floor(floatVal);
+                    double millis = (fullSeconds-intSeconds)*1000.0;
+                    if(millis > 0.0) {
+                        alternateUnit = TimeUnit.MILLISECOND;
+                        alternateVal=(float)millis;
+                        floatVal=(float)intSeconds;
+                    }
+                }
+                
+                if(p == null) {
+                    p = Period.at(floatVal, outFields[i]);
+                } else {
+                    p = p.and(floatVal, outFields[i]);
+                }
+                
+                if(alternateUnit != null) {
+                    p = p.and(alternateVal, alternateUnit); // add in MILLISECONDs
+                }
+            }
+        }
+        
+        if(p == null) {
+            // no fields set  = 0 seconds
+            return formatDurationFromNow(0);
+        } else {
+            if(inPast) {// was negated, above.
+                p = p.inPast();
+            } else {
+                p = p.inFuture();
+            }
+        }
+        
+        // now, format it.
+        return pformatter.format(p);
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java b/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
new file mode 100644
index 0000000..67ee04d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
@@ -0,0 +1,118 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Core implementation class for DurationFormatter.
+ */
+class BasicDurationFormatter implements DurationFormatter {
+  private PeriodFormatter formatter;
+  private PeriodBuilder builder;
+  private DateFormatter fallback;
+  private long fallbackLimit;
+  private String localeName;
+  private TimeZone timeZone;
+
+  /**
+   * Creates a basic duration formatter with the given formatter,
+   * builder, and fallback.  It's up to the caller to ensure that
+   * the locales and timezones of these are in sync.
+   */
+  public BasicDurationFormatter(PeriodFormatter formatter,
+                                PeriodBuilder builder, 
+                                DateFormatter fallback,
+                                long fallbackLimit) {
+    this.formatter = formatter;
+    this.builder = builder;
+    this.fallback = fallback;
+    this.fallbackLimit = fallbackLimit < 0 ? 0 : fallbackLimit;
+  }
+
+  protected BasicDurationFormatter(PeriodFormatter formatter,
+                                   PeriodBuilder builder, 
+                                   DateFormatter fallback,
+                                   long fallbackLimit,
+                                   String localeName,
+                                   TimeZone timeZone) {
+    this.formatter = formatter;
+    this.builder = builder;
+    this.fallback = fallback;
+    this.fallbackLimit = fallbackLimit;
+    this.localeName = localeName;
+    this.timeZone = timeZone;
+  }
+
+  public String formatDurationFromNowTo(Date targetDate) {
+    long now = System.currentTimeMillis();
+    long duration = now - targetDate.getTime();
+    return formatDurationFrom(duration, now);
+  }
+
+  public String formatDurationFromNow(long duration) {
+    return formatDurationFrom(duration, System.currentTimeMillis());
+  }
+
+  public String formatDurationFrom(long duration, long referenceDate) {
+    String s = doFallback(duration, referenceDate);
+    if (s == null) {
+      Period p = doBuild(duration, referenceDate);
+      s = doFormat(p);
+    }
+    return s;
+  }
+
+  public DurationFormatter withLocale(String locName) {
+    if (!locName.equals(localeName)) {
+      PeriodFormatter newFormatter = formatter.withLocale(locName);
+      PeriodBuilder newBuilder = builder.withLocale(locName);
+      DateFormatter newFallback = fallback == null 
+          ? null 
+          : fallback.withLocale(locName);
+      return new BasicDurationFormatter(newFormatter, newBuilder,
+                                        newFallback, fallbackLimit,
+                                        locName, timeZone);
+    }
+    return this;
+  }
+
+  public DurationFormatter withTimeZone(TimeZone tz) {
+    if (!tz.equals(timeZone)) {
+      PeriodBuilder newBuilder = builder.withTimeZone(tz);
+      DateFormatter newFallback = fallback == null 
+          ? null 
+          : fallback.withTimeZone(tz);
+      return new BasicDurationFormatter(formatter, newBuilder,
+                                        newFallback, fallbackLimit,
+                                        localeName, tz);
+    }
+    return this;
+  }
+
+  protected String doFallback(long duration, long referenceDate) {
+    if (fallback != null 
+        && fallbackLimit > 0
+        && Math.abs(duration) >= fallbackLimit) {
+      return fallback.format(referenceDate + duration);
+    }
+    return null;
+  }
+
+  protected Period doBuild(long duration, long referenceDate) {
+    return builder.createWithReferenceDate(duration, referenceDate);
+  }
+
+  protected String doFormat(Period period) {
+    if (!period.isSet()) {
+      throw new IllegalArgumentException("period is not set");
+    }
+    return formatter.format(period);
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java b/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
new file mode 100644
index 0000000..6793fee
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -0,0 +1,236 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Abstract factory object used to create DurationFormatters.
+ * DurationFormatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ * <p>
+ * Subclasses override getFormatter to return a custom
+ * DurationFormatter.
+ */
+class BasicDurationFormatterFactory implements DurationFormatterFactory {
+  private BasicPeriodFormatterService ps;
+  private PeriodFormatter formatter;
+  private PeriodBuilder builder;
+  private DateFormatter fallback;
+  private long fallbackLimit;
+  private String localeName;
+  private TimeZone timeZone;
+  private BasicDurationFormatter f; // cache
+
+  /**
+   * Create a default formatter for the current locale and time zone.
+   */
+  BasicDurationFormatterFactory(BasicPeriodFormatterService ps) {
+    this.ps = ps;
+    this.localeName = Locale.getDefault().toString();
+    this.timeZone = TimeZone.getDefault();
+  }
+
+  /**
+   * Set the period formatter used by the factory.  New formatters created
+   * with this factory will use the given period formatter.
+   *
+   * @param builder the builder to use
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodFormatter(
+      PeriodFormatter formatter) {
+    if (formatter != this.formatter) {
+      this.formatter = formatter;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the builder used by the factory.  New formatters created
+   * with this factory will use the given locale.
+   *
+   * @param builder the builder to use
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodBuilder(PeriodBuilder builder) {
+    if (builder != this.builder) {
+      this.builder = builder;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set a fallback formatter for durations over a given limit.
+   *
+   * @param fallback the fallback formatter to use, or null
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallback(DateFormatter fallback) {
+    boolean doReset = fallback == null
+        ? this.fallback != null
+        : !fallback.equals(this.fallback);
+    if (doReset) {
+      this.fallback = fallback;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set a fallback limit for durations over a given limit.
+   *
+   * @param fallbackLimit the fallback limit to use, or 0 if none is desired.
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallbackLimit(long fallbackLimit) {
+    if (fallbackLimit < 0) {
+      fallbackLimit = 0;
+    }
+    if (fallbackLimit != this.fallbackLimit) {
+      this.fallbackLimit = fallbackLimit;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setLocale(String localeName) {
+    if (!localeName.equals(this.localeName)) {
+      this.localeName = localeName;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setTimeZone(TimeZone timeZone) {
+    if (!timeZone.equals(this.timeZone)) {
+      this.timeZone = timeZone;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a BasicDurationFormatter
+   */
+  public DurationFormatter getFormatter() {
+    if (f == null) {
+      if (fallback != null) {
+        fallback = fallback.withLocale(localeName).withTimeZone(timeZone);
+      }
+      formatter = getPeriodFormatter()
+          .withLocale(localeName);
+      builder = getPeriodBuilder()
+          .withLocale(localeName)
+          .withTimeZone(timeZone);
+
+      f = createFormatter();
+    }
+    return f;
+  }
+
+  /**
+   * Return the current period formatter.
+   *
+   * @return the current period formatter
+   */
+  public PeriodFormatter getPeriodFormatter() {
+    if (formatter == null) {
+      formatter = ps.newPeriodFormatterFactory().getFormatter();
+    }
+    return formatter;
+  }
+
+  /**
+   * Return the current builder.
+   *
+   * @return the current builder
+   */
+  public PeriodBuilder getPeriodBuilder() {
+    if (builder == null) {
+      builder = ps.newPeriodBuilderFactory().getSingleUnitBuilder();
+    }
+    return builder;
+  }
+
+  /**
+   * Return the current fallback formatter.
+   *
+   * @return the fallback formatter, or null if there is no fallback
+   * formatter
+   */
+  public DateFormatter getFallback() {
+    return fallback;
+  }
+
+  /**
+   * Return the current fallback formatter limit
+   *
+   * @return the limit, or 0 if there is no fallback.
+   */
+  public long getFallbackLimit() {
+    return fallback == null ? 0 : fallbackLimit;
+  }
+
+  /**
+   * Return the current locale name.
+   *
+   * @return the current locale name
+   */
+  public String getLocaleName() {
+    return localeName;
+  }
+
+  /**
+   * Return the current locale name.
+   *
+   * @return the current locale name
+   */
+  public TimeZone getTimeZone() {
+    return timeZone;
+  }
+
+  /**
+   * Create the formatter.  All local fields are already initialized.
+   */
+  protected BasicDurationFormatter createFormatter() {
+    return new BasicDurationFormatter(formatter, builder, fallback, 
+                                      fallbackLimit, localeName,
+                                      timeZone);
+  }
+
+  /**
+   * Clear the cached formatter.  Subclasses must call this if their
+   * state has changed. This is automatically invoked by setBuilder,
+   * setFormatter, setFallback, setLocaleName, and setTimeZone
+   */
+  protected void reset() {
+    f = null;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java b/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
new file mode 100644
index 0000000..8f0f030
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
@@ -0,0 +1,488 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.DataRecord;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+
+import java.util.TimeZone;
+
+/**
+ * Default implementation of PeriodBuilderFactory.  This creates builders that
+ * use approximate durations.
+ */
+class BasicPeriodBuilderFactory implements PeriodBuilderFactory {
+  private PeriodFormatterDataService ds;
+  private Settings settings;
+  
+  private static final short allBits = 0xff;
+  
+  BasicPeriodBuilderFactory(PeriodFormatterDataService ds) {
+    this.ds = ds;
+    this.settings = new Settings();
+  }
+
+  static long approximateDurationOf(TimeUnit unit) {
+    return TimeUnit.approxDurations[unit.ordinal];
+  }
+
+  class Settings {
+    boolean inUse;
+    short uset = allBits;
+    TimeUnit maxUnit = TimeUnit.YEAR;
+    TimeUnit minUnit = TimeUnit.MILLISECOND;
+    int maxLimit;
+    int minLimit;
+    boolean allowZero = true;
+    boolean weeksAloneOnly;
+    boolean useMilliseconds = true;
+
+    Settings setUnits(int uset) {
+      if (this.uset == uset) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+        
+      result.uset = (short)uset;
+
+      if ((uset & allBits) == allBits) {
+        result.uset = allBits;
+        result.maxUnit = TimeUnit.YEAR;
+        result.minUnit = TimeUnit.MILLISECOND;
+      } else {
+        int lastUnit = -1;
+        for (int i = 0; i < TimeUnit.units.length; ++i) {
+          if (0 != (uset & (1 << i))) {
+            if (lastUnit == -1) {
+              result.maxUnit = TimeUnit.units[i];
+            }
+            lastUnit = i;
+          }
+        }
+        if (lastUnit == -1) { 
+            // currently empty, but this might be transient so no fail
+            result.minUnit = result.maxUnit = null;
+        } else {
+            result.minUnit = TimeUnit.units[lastUnit];
+        }
+      }
+
+      return result;
+    }
+
+    short effectiveSet() {
+      if (useMilliseconds) {
+        return uset;
+      }
+      return (short)(uset & ~(1 << TimeUnit.MILLISECOND.ordinal));
+    }
+
+    Settings setMaxLimit(float maxLimit) {
+      int val = maxLimit <= 0 ? 0 : (int)(maxLimit*1000);
+      if (maxLimit == val) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.maxLimit = val;
+      return result;
+    }
+
+    Settings setMinLimit(float minLimit) {
+      int val = minLimit <= 0 ? 0 : (int)(minLimit*1000);
+      if (minLimit == val) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.minLimit = val;
+      return result;
+    }
+
+    Settings setAllowZero(boolean allow) {
+      if (this.allowZero == allow) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.allowZero = allow;
+      return result;
+    }
+
+    Settings setWeeksAloneOnly(boolean weeksAlone) {
+      if (this.weeksAloneOnly == weeksAlone) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.weeksAloneOnly = weeksAlone;
+      return result;
+    }
+
+    Settings setAllowMilliseconds(boolean useMilliseconds) {
+      if (this.useMilliseconds == useMilliseconds) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.useMilliseconds = useMilliseconds;
+      return result;
+    }
+
+    Settings setLocale(String localeName) {
+      PeriodFormatterData data = ds.get(localeName);
+      return this
+        .setAllowZero(data.allowZero())
+        .setWeeksAloneOnly(data.weeksAloneOnly())
+        .setAllowMilliseconds(data.useMilliseconds() != DataRecord.EMilliSupport.NO);  
+    }
+
+    Settings setInUse() {
+      inUse = true;
+      return this;
+    }
+
+    Period createLimited(long duration, boolean inPast) {
+      long maxUnitDuration = approximateDurationOf(maxUnit);
+      if (maxLimit > 0 && duration * 1000 > maxLimit * maxUnitDuration) {
+        return Period.moreThan(maxLimit/1000f, maxUnit).inPast(inPast);
+      }
+      long minUnitDuration = approximateDurationOf(minUnit);
+      if (minLimit > 0 && duration * 1000 < minLimit * minUnitDuration) {
+        return Period.lessThan(minLimit/1000f, minUnit).inPast(inPast);
+      }
+      return null;
+    }
+
+    public Settings copy() {
+        Settings result = new Settings();
+        result.inUse = inUse;
+        result.uset = uset;
+        result.maxUnit = maxUnit;
+        result.minUnit = minUnit;
+        result.maxLimit = maxLimit;
+        result.minLimit = minLimit;
+        result.allowZero = allowZero;
+        result.weeksAloneOnly = weeksAloneOnly;
+        result.useMilliseconds = useMilliseconds;
+        return result;
+    }
+  }
+
+  public PeriodBuilderFactory setAvailableUnitRange(TimeUnit minUnit,
+                                                    TimeUnit maxUnit) {
+    int uset = 0;
+    for (int i = maxUnit.ordinal; i <= minUnit.ordinal; ++i) {
+        uset |= 1 << i;
+    }
+    if (uset == 0) {
+        throw new IllegalArgumentException("range " + minUnit + " to " + maxUnit + " is empty");
+    }
+    settings = settings.setUnits(uset);
+    return this;
+  }
+
+  public PeriodBuilderFactory setUnitIsAvailable(TimeUnit unit, 
+                                                      boolean available) {
+    int uset = settings.uset;
+    if (available) {
+      uset |= 1 << unit.ordinal;
+    } else {
+      uset &= ~(1 << unit.ordinal);
+    }
+    settings = settings.setUnits(uset);
+    return this;
+  }
+
+  public PeriodBuilderFactory setMaxLimit(float maxLimit) {
+    settings = settings.setMaxLimit(maxLimit);
+    return this;
+  }
+
+  public PeriodBuilderFactory setMinLimit(float minLimit) {
+    settings = settings.setMinLimit(minLimit);
+    return this;
+  }
+
+  public PeriodBuilderFactory setAllowZero(boolean allow) {
+    settings = settings.setAllowZero(allow);
+    return this;
+  }
+
+  public PeriodBuilderFactory setWeeksAloneOnly(boolean aloneOnly) {
+    settings = settings.setWeeksAloneOnly(aloneOnly);
+    return this;
+  }
+
+  public PeriodBuilderFactory setAllowMilliseconds(boolean useMilliseconds) {
+    settings = settings.setAllowMilliseconds(useMilliseconds);
+    return this;
+  }
+
+  public PeriodBuilderFactory setLocale(String localeName) {
+    settings = settings.setLocale(localeName);
+    return this;
+  }
+
+  private Settings getSettings() {
+    if (settings.effectiveSet() == 0) {
+      return null;
+    }
+    return settings.setInUse();
+  }
+
+  /**
+   * Return a builder that represents relative time in terms of the single
+   * given TimeUnit
+   *
+   * @param unit the single TimeUnit with which to represent times
+   * @return a builder
+   */
+  public PeriodBuilder getFixedUnitBuilder(TimeUnit unit) {
+    return FixedUnitBuilder.get(unit, getSettings());
+  }
+
+  /**
+   * Return a builder that represents relative time in terms of the
+   * largest period less than or equal to the duration.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getSingleUnitBuilder() {
+    return SingleUnitBuilder.get(getSettings());
+  }
+
+  /**
+   * Return a builder that formats the largest one or two periods,
+   * Starting with the largest period less than or equal to the duration.
+   * It formats two periods if the first period has a count &lt; 2
+   * and the next period has a count &gt;= 1.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getOneOrTwoUnitBuilder() {
+    return OneOrTwoUnitBuilder.get(getSettings());
+  }
+
+  /**
+   * Return a builder that formats the given number of periods,
+   * starting with the largest period less than or equal to the
+   * duration.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getMultiUnitBuilder(int periodCount) {
+    return MultiUnitBuilder.get(periodCount, getSettings());
+  }
+}
+
+abstract class PeriodBuilderImpl implements PeriodBuilder {
+
+  protected BasicPeriodBuilderFactory.Settings settings;
+ 
+  public Period create(long duration) {
+    return createWithReferenceDate(duration, System.currentTimeMillis());
+  }
+
+  public long approximateDurationOf(TimeUnit unit) {
+    return BasicPeriodBuilderFactory.approximateDurationOf(unit);
+  }
+
+  public Period createWithReferenceDate(long duration, long referenceDate) {
+    boolean inPast = duration < 0;
+    if (inPast) {
+      duration = -duration;
+    }
+    Period ts = settings.createLimited(duration, inPast);
+    if (ts == null) {
+      ts = handleCreate(duration, referenceDate, inPast);
+      if (ts == null) {
+        ts = Period.lessThan(1, settings.minUnit).inPast(inPast);
+      }
+    }
+    return ts;
+  }
+
+  public PeriodBuilder withTimeZone(TimeZone timeZone) {
+      // ignore the time zone
+      return this;
+  }
+
+  public PeriodBuilder withLocale(String localeName) {
+    BasicPeriodBuilderFactory.Settings newSettings = settings.setLocale(localeName);
+    if (newSettings != settings) {
+      return withSettings(newSettings);
+    }
+    return this;
+  }
+
+  protected abstract PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse);
+
+  protected abstract Period handleCreate(long duration, long referenceDate, 
+                                         boolean inPast);
+
+  protected PeriodBuilderImpl(BasicPeriodBuilderFactory.Settings settings) {
+    this.settings = settings;
+  }
+}
+
+class FixedUnitBuilder extends PeriodBuilderImpl {
+  private TimeUnit unit;
+  
+  public static FixedUnitBuilder get(TimeUnit unit, BasicPeriodBuilderFactory.Settings settingsToUse) {
+    if (settingsToUse != null && (settingsToUse.effectiveSet() & (1 << unit.ordinal)) != 0) {
+      return new FixedUnitBuilder(unit, settingsToUse);
+    }
+    return null;
+  }
+
+  FixedUnitBuilder(TimeUnit unit, BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+    this.unit = unit;
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return get(unit, settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    if (unit == null) {
+      return null;
+    }
+    long unitDuration = approximateDurationOf(unit);
+    return Period.at((float)((double)duration/unitDuration), unit)
+        .inPast(inPast);
+  }
+}
+
+class SingleUnitBuilder extends PeriodBuilderImpl {
+  SingleUnitBuilder(BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+  }
+
+  public static SingleUnitBuilder get(BasicPeriodBuilderFactory.Settings settings) {
+    if (settings == null) {
+      return null;
+    }
+    return new SingleUnitBuilder(settings);
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return SingleUnitBuilder.get(settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration) {
+          return Period.at((float)((double)duration/unitDuration), unit)
+              .inPast(inPast);
+        }
+      }
+    }
+    return null;
+  }
+}
+
+class OneOrTwoUnitBuilder extends PeriodBuilderImpl {
+  OneOrTwoUnitBuilder(BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+  }
+
+  public static OneOrTwoUnitBuilder get(BasicPeriodBuilderFactory.Settings settings) {
+    if (settings == null) {
+      return null;
+    }
+    return new OneOrTwoUnitBuilder(settings);
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return OneOrTwoUnitBuilder.get(settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    Period period = null;
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration || period != null) {
+          double count = (double)duration/unitDuration;
+          if (period == null) {
+            if (count >= 2) {
+              period = Period.at((float)count, unit);
+              break;
+            }
+            period = Period.at(1, unit).inPast(inPast);
+            duration -= unitDuration;
+          } else {
+            if (count >= 1) {
+              period.and((float)count, unit);
+            }
+            break;
+          }
+        }
+      }
+    }
+    return period;
+  }
+}
+
+class MultiUnitBuilder extends PeriodBuilderImpl {
+  private int nPeriods;
+
+  MultiUnitBuilder(int nPeriods, BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+    this.nPeriods = nPeriods;
+  }
+
+  public static MultiUnitBuilder get(int nPeriods, BasicPeriodBuilderFactory.Settings settings) {
+    if (nPeriods > 0 && settings != null) {
+      return new MultiUnitBuilder(nPeriods, settings);
+    }
+    return null;
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return MultiUnitBuilder.get(nPeriods, settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    Period period = null;
+    int n = 0;
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        if (n == nPeriods) {
+          break;
+        }
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration || n > 0) {
+          ++n;
+          double count = (double)duration / unitDuration;
+          if (n < nPeriods) {
+            count = Math.floor(count);
+            duration -= (long)(count * unitDuration);
+          }
+          if (period == null) {
+            period = Period.at((float)count, unit).inPast(inPast);
+          } else {
+            period.and((float)count, unit);
+          }
+        }
+      }
+    }
+    return period;
+  }
+}
+
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
new file mode 100644
index 0000000..6ec213d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
@@ -0,0 +1,192 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory.Customizations;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+
+/**
+ * Core implementation class for PeriodFormatter.
+ */
+class BasicPeriodFormatter implements PeriodFormatter {
+  private BasicPeriodFormatterFactory factory;
+  private String localeName;
+  private PeriodFormatterData data;
+  private Customizations customs;
+
+  BasicPeriodFormatter(BasicPeriodFormatterFactory factory, 
+                       String localeName,
+                       PeriodFormatterData data, 
+                       Customizations customs) {
+    this.factory = factory;
+    this.localeName = localeName;
+    this.data = data;
+    this.customs = customs;
+  }
+
+  public String format(Period period) {
+    if (!period.isSet()) {
+      throw new IllegalArgumentException("period is not set");
+    }
+    return format(period.timeLimit, period.inFuture, period.counts);
+  }
+
+  public PeriodFormatter withLocale(String locName) {
+    if (!this.localeName.equals(locName)) {
+      PeriodFormatterData newData = factory.getData(locName);
+      return new BasicPeriodFormatter(factory, locName, newData, 
+                                      customs);
+    }
+    return this;
+  }
+
+  private String format(int tl, boolean inFuture, int[] counts) {
+    int mask = 0;
+    for (int i = 0; i < counts.length; ++i) {
+      if (counts[i] > 0) {
+        mask |= 1 << i;
+      }
+    }
+
+    // if the data does not allow formatting of zero periods, 
+    // remove these from consideration.  If the result has no
+    // periods set, return null to indicate we could not format
+    // the duration.
+    if (!data.allowZero()) {
+      for (int i = 0, m = 1; i < counts.length; ++i, m <<= 1) {
+        if ((mask & m) != 0 && counts[i] == 1) {
+          mask &= ~m;
+        }
+      }
+      if (mask == 0) {
+        return null;
+      }
+    }
+
+    // if the data does not allow milliseconds but milliseconds are
+    // set, merge them with seconds and force display of seconds to
+    // decimal with 3 places.
+    boolean forceD3Seconds = false;
+    if (data.useMilliseconds() != EMilliSupport.YES && 
+        (mask & (1 << TimeUnit.MILLISECOND.ordinal)) != 0) {
+      int sx = TimeUnit.SECOND.ordinal;
+      int mx = TimeUnit.MILLISECOND.ordinal;
+      int sf = 1 << sx;
+      int mf = 1 << mx;
+      switch (data.useMilliseconds()) {      
+        case EMilliSupport.WITH_SECONDS: {
+          // if there are seconds, merge with seconds, otherwise leave alone
+          if ((mask & sf) != 0) {
+            counts[sx] += (counts[mx]-1)/1000;
+            mask &= ~mf;
+            forceD3Seconds = true;
+          }
+        } break;
+        case EMilliSupport.NO: {
+          // merge with seconds, reset seconds before use just in case
+          if ((mask & sf) == 0) {
+            mask |= sf;
+            counts[sx] = 1;
+          }
+          counts[sx] += (counts[mx]-1)/1000;
+          mask &= ~mf;
+          forceD3Seconds = true;
+        } break;
+      }
+    }
+
+    // get the first and last units that are set.
+    int first = 0;
+    int last = counts.length - 1;
+    while (first < counts.length && (mask & (1 << first)) == 0) ++first;
+    while (last > first && (mask & (1 << last)) == 0) --last;
+
+    // determine if there is any non-zero unit
+    boolean isZero = true;
+    for (int i = first; i <= last; ++i) {
+      if (((mask & (1 << i)) != 0) &&  counts[i] > 1) {
+        isZero = false;
+        break;
+      }
+    }
+
+    StringBuffer sb = new StringBuffer();
+
+    // if we've been requested to not display a limit, or there are
+    // no non-zero units, do not display the limit.
+    if (!customs.displayLimit || isZero) {
+      tl = ETimeLimit.NOLIMIT;
+    }
+
+    // if we've been requested to not display the direction, or there
+    // are no non-zero units, do not display the direction.
+    int td;
+    if (!customs.displayDirection || isZero) {
+      td = ETimeDirection.NODIRECTION;
+    } else {
+      td = inFuture ? ETimeDirection.FUTURE : ETimeDirection.PAST;
+    }
+
+    // format the initial portion of the string before the units.
+    // record whether we need to use a digit prefix (because the
+    // initial portion forces it)
+    boolean useDigitPrefix = data.appendPrefix(tl, td, sb);
+
+    // determine some formatting params and initial values
+    boolean multiple = first != last;
+    boolean wasSkipped = true; // no initial skip marker
+    boolean skipped = false;
+    boolean countSep = customs.separatorVariant != ESeparatorVariant.NONE;
+
+    // loop for formatting the units
+    for (int i = first, j = i; i <= last; i = j) {
+      if (skipped) {
+        // we didn't format the previous unit
+        data.appendSkippedUnit(sb);
+        skipped = false;
+        wasSkipped = true;
+      }
+
+      while (++j < last && (mask & (1 << j)) == 0) {
+        skipped = true; // skip
+      }
+
+      TimeUnit unit = TimeUnit.units[i];
+      int count = counts[i] - 1;
+
+      int cv = customs.countVariant;
+      if (i == last) {
+        if (forceD3Seconds) {
+          cv = ECountVariant.DECIMAL3;
+        }
+        // else leave unchanged
+      } else {
+        cv = ECountVariant.INTEGER;
+      }
+      boolean isLast = i == last;
+      boolean mustSkip = data.appendUnit(unit, count, cv, customs.unitVariant, 
+                                         countSep, useDigitPrefix, multiple, isLast, wasSkipped, sb);
+      skipped |= mustSkip;
+      wasSkipped = false;
+
+      if (customs.separatorVariant != ESeparatorVariant.NONE && j <= last) {
+        boolean afterFirst = i == first;
+        boolean beforeLast = j == last;
+        boolean fullSep = customs.separatorVariant == ESeparatorVariant.FULL;
+        useDigitPrefix = data.appendUnitSeparator(unit, fullSep, afterFirst, beforeLast, sb);
+      } else {
+        useDigitPrefix = false;
+      }
+    }
+    data.appendSuffix(tl, td, sb);
+
+    return sb.toString();
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
new file mode 100644
index 0000000..91a9c3e
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
@@ -0,0 +1,234 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.EUnitVariant;
+import com.ibm.icu.impl.duration.impl.DataRecord.ECountVariant;
+import com.ibm.icu.impl.duration.impl.DataRecord.ESeparatorVariant;
+
+import java.util.Locale;
+
+/**
+ * An implementation of PeriodFormatterFactory that provides customization of
+ * formatting behavior. Instances of this factory are created by
+ * BasicPeriodFormatterService.
+ *
+ * The settings on BasicPeriodFormatterFactory are:
+ * <ul>
+ *
+ * <li><b>setDisplayLimit</b> controls whether phrases like 'more than'
+ * or 'less than' will be displayed when the Period has a defined
+ * limit.  Default is to display them.</li>
+ *
+ * <li><b>setDisplayPastFuture</b> controls whether phrases like 'ago'
+ * or 'from now' will be displayed to indicate past or future
+ * time. Default is to display them.</li>
+ *
+ * <li><b>setSeparatorVariant</b> controls how separators (between
+ * count and period, and multiple periods) will be displayed, when
+ * appropriate for the language. Default is to use full
+ * separators.</li>
+ *
+ * <li><b>setUnitVariant</b> controls which of various types of
+ * unit names to use.  PLURALIZED indicates that full names will be
+ * used.  MEDIUM indicates that medium-length (usually 2-3 character)
+ * names will be used.  SHORT indicates that short (usually single
+ * character) names will be used.  If there is no localization data
+ * available for either the SHORT or MEDIUM names, the other will be
+ * used, if neither is available, the PLURALIZED names will be used.
+ * Default is PLURALIZED.</li>
+ *
+ * <li><b>setCountVariant</b> controls how the count for the smallest
+ * unit will be formatted: either as an integer, a fraction to the
+ * smallest half, or as a decimal with 1, 2, or 3 decimal points.</li>
+ * Counts for higher units will be formatted as integers.
+ *
+ * </ul>
+ */
+public class BasicPeriodFormatterFactory implements PeriodFormatterFactory {
+  private final PeriodFormatterDataService ds;
+  private PeriodFormatterData data;
+  private Customizations customizations;
+  private boolean customizationsInUse;
+  private String localeName;
+
+  // package-only constructor
+  BasicPeriodFormatterFactory(PeriodFormatterDataService ds) {
+    this.ds = ds;
+    this.customizations = new Customizations();
+    this.localeName = Locale.getDefault().toString();
+  }
+
+  /**
+   * Return the default rdf factory as a BasicPeriodFormatterFactory.
+   *
+   * @return a default BasicPeriodFormatterFactory
+   */
+  public static BasicPeriodFormatterFactory getDefault() {
+      return (BasicPeriodFormatterFactory)
+        BasicPeriodFormatterService.getInstance().newPeriodFormatterFactory();
+  }
+
+  /**
+   * Set the locale for this factory.
+   */
+  public PeriodFormatterFactory setLocale(String localeName) {
+    data = null;
+    this.localeName = localeName;
+    return this;
+  }
+
+  /**
+   * Set whether limits will be displayed.
+   *
+   * @param display true if limits will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayLimit(boolean display) {
+    updateCustomizations().displayLimit = display;
+    return this;
+  }
+
+  /**
+   * Return true if limits will be displayed.
+   *
+   * @return true if limits will be displayed
+   */
+  public boolean getDisplayLimit() {
+    return customizations.displayLimit;
+  }
+
+  /**
+   * Set whether past and future will be displayed.
+   *
+   * @param display true if past and future will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayPastFuture(boolean display) {
+    updateCustomizations().displayDirection = display;
+    return this;
+  }
+
+  /**
+   * Return true if past and future will be displayed.
+   *
+   * @return true if past and future will be displayed
+   */
+  public boolean getDisplayPastFuture() {
+    return customizations.displayDirection;
+  }
+
+  /**
+   * Set how separators will be displayed.
+   *
+   * @param variant the variant indicating separators will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setSeparatorVariant(int variant) {
+    updateCustomizations().separatorVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the variant indicating how separators will be displayed.
+   *
+   * @return the variant
+   */
+  public int getSeparatorVariant() {
+    return customizations.separatorVariant;
+  }
+
+  /**
+   * Set the variant of the time unit names to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setUnitVariant(int variant) {
+    updateCustomizations().unitVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the unit variant.
+   *
+   * @return the unit variant
+   */
+  public int getUnitVariant() {
+    return customizations.unitVariant;
+  }
+
+  /**
+   * Set the variant of the count to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setCountVariant(int variant) {
+    updateCustomizations().countVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the count variant.
+   *
+   * @return the count variant
+   */
+  public int getCountVariant() {
+    return customizations.countVariant;
+  }
+
+  public PeriodFormatter getFormatter() {
+    customizationsInUse = true;
+    return new BasicPeriodFormatter(this, localeName, getData(), 
+                                    customizations);
+  }
+
+  private Customizations updateCustomizations() {
+    if (customizationsInUse) {
+      customizations = customizations.copy();
+      customizationsInUse = false;
+    }
+    return customizations;
+  }
+
+  // package access only
+  PeriodFormatterData getData() {
+    if (data == null) {
+      data = ds.get(localeName);
+    }
+    return data;
+  }
+
+  // package access for use by BasicPeriodFormatter
+  PeriodFormatterData getData(String locName) {
+    return ds.get(locName);
+  }
+
+  // package access for use by BasicPeriodFormatter
+  static class Customizations {
+    boolean displayLimit = true;
+    boolean displayDirection = true;
+    byte separatorVariant = ESeparatorVariant.FULL;
+    byte unitVariant = EUnitVariant.PLURALIZED;
+    byte countVariant = ECountVariant.INTEGER;
+    
+    public Customizations copy() {
+        Customizations result = new Customizations();
+        result.displayLimit = displayLimit;
+        result.displayDirection = displayDirection;
+        result.separatorVariant = separatorVariant;
+        result.unitVariant = unitVariant;
+        result.countVariant = countVariant;
+        return result;
+    }
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
new file mode 100644
index 0000000..a9dca28
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
@@ -0,0 +1,63 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+import com.ibm.icu.impl.duration.impl.ResourceBasedPeriodFormatterDataService;
+
+import java.util.Collection;
+
+/**
+ * An implementation of PeriodFormatterService that constructs a
+ * BasicPeriodFormatterFactory.
+ */
+public class BasicPeriodFormatterService implements PeriodFormatterService {
+  private static BasicPeriodFormatterService instance;
+  private PeriodFormatterDataService ds;
+
+  /**
+   * Return the default service instance.  This uses the
+   * default data service.
+   *
+   * @return an BasicPeriodFormatterService
+   */
+  public static BasicPeriodFormatterService getInstance() {
+    if (instance == null) {
+     PeriodFormatterDataService ds = 
+         ResourceBasedPeriodFormatterDataService.getInstance();
+      instance = new BasicPeriodFormatterService(ds);
+    }
+    return instance;
+  }
+
+  /**
+   * Construct a BasicPeriodFormatterService using the given 
+   * PeriodFormatterDataService.
+   *
+   * @param ds the data service to use
+   */
+  public BasicPeriodFormatterService(PeriodFormatterDataService ds) {
+    this.ds = ds;
+  }
+
+  public DurationFormatterFactory newDurationFormatterFactory() {
+    return new BasicDurationFormatterFactory(this);
+  }
+
+  public PeriodFormatterFactory newPeriodFormatterFactory() {
+    return new BasicPeriodFormatterFactory(ds);
+  }
+
+  public PeriodBuilderFactory newPeriodBuilderFactory() {
+    return new BasicPeriodBuilderFactory(ds);
+  }
+
+  public Collection getAvailableLocaleNames() {
+    return ds.getAvailableLocales();
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/DateFormatter.java b/src/com/ibm/icu/impl/duration/DateFormatter.java
new file mode 100644
index 0000000..e0232f7
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DateFormatter.java
@@ -0,0 +1,50 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Abstract formatter for dates.  Differs from DateFormat in that it
+ * provides <code>withLocale</code> and <code>withTimeZone</code> methods.
+ */
+public interface DateFormatter {
+
+  /**
+   * Format the date, provided as a java Date object.
+   * 
+   * @param date the date
+   * @return the formatted time
+   */
+  String format(Date date);
+
+  /**
+   * Format the date, provided as milliseconds.
+   *
+   * @param date the date in milliseconds
+   * @return the formatted time
+   */
+  String format(long date);
+
+  /**
+   * Returns a new DateFormatter that uses data for a new locale.
+   *
+   * @param locale the new locale to use
+   * @return a new formatter for the given locale
+   */
+  DateFormatter withLocale(String localeName);
+
+  /**
+   * Returns a new DateFormatter that uses the new time zone.
+   *
+   * @param tz the new time zone
+   * @return a new formatter for the given time zone
+   */
+  DateFormatter withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/DurationFormatter.java b/src/com/ibm/icu/impl/duration/DurationFormatter.java
new file mode 100644
index 0000000..d78d80c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DurationFormatter.java
@@ -0,0 +1,76 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Formatter for durations in milliseconds.
+ */
+public interface DurationFormatter {
+
+  /**
+   * Formats the duration between now and a target date.
+   * <p>
+   * This is a convenience method that calls
+   * formatDurationFrom(long, long) using now
+   * as the reference date, and the difference between now and
+   * <code>targetDate.getTime()</code> as the duration.
+   * 
+   * @param targetDate the ending date
+   * @return the formatted time
+   */
+  String formatDurationFromNowTo(Date targetDate);
+
+  /**
+   * Formats a duration expressed in milliseconds.
+   * <p>
+   * This is a convenience method that calls formatDurationFrom
+   * using the current system time as the reference date.
+   * 
+   * @param duration the duration in milliseconds
+   * @param tz the time zone
+   * @return the formatted time
+   */
+  String formatDurationFromNow(long duration);
+
+  /**
+   * Formats a duration expressed in milliseconds from a reference date.
+   * <p>
+   * The reference date allows formatters to use actual durations of
+   * variable-length periods (like months) if they wish.
+   * <p>
+   * The duration is expressed as the number of milliseconds in the
+   * past (negative values) or future (positive values) with respect
+   * to a reference date (expressed as milliseconds in epoch).
+   * 
+   * @param duration the duration in milliseconds
+   * @param referenceDate the date from which to compute the duration
+   * @return the formatted time
+   */
+  String formatDurationFrom(long duration, long referenceDate);
+
+  /**
+   * Returns a new DurationFormatter that's the same as this one 
+   * but formats for a new locale.
+   *
+   * @param localeName the name of the new locale
+   * @return a new formatter for the given locale
+   */
+  DurationFormatter withLocale(String localeName);
+
+  /**
+   * Returns a new DurationFormatter that's the same as this one but
+   * uses a different time zone.
+   *
+   * @param tz the time zone in which to compute durations.
+   * @return a new formatter for the given locale
+   */
+  DurationFormatter withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java b/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
new file mode 100644
index 0000000..38a2de4
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
@@ -0,0 +1,79 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ * Factory used to construct DurationFormatters.
+ * Formatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ */
+public interface DurationFormatterFactory {
+
+  /**
+   * Set the period formatter used by the factory.  New formatters created
+   * with this factory will use the given period formatter.
+   *
+   * @param builder the builder to use
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodFormatter(PeriodFormatter formatter);
+
+  /**
+   * Set the builder used by the factory.  New formatters created
+   * with this factory will use the given locale.
+   *
+   * @param builder the builder to use
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodBuilder(PeriodBuilder builder);
+
+  /**
+   * Set a fallback formatter for durations over a given limit.
+   *
+   * @param fallback the fallback formatter to use, or null
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallback(DateFormatter fallback);
+
+  /**
+   * Set a fallback limit for durations over a given limit.
+   *
+   * @param fallbackLimit the fallback limit to use, or 0 if none is desired.
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallbackLimit(long fallbackLimit);
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setLocale(String localeName);
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setTimeZone(TimeZone timeZone);
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a DurationFormatter
+   */
+  public DurationFormatter getFormatter();
+}
diff --git a/src/com/ibm/icu/impl/duration/Period.java b/src/com/ibm/icu/impl/duration/Period.java
new file mode 100644
index 0000000..427de06
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/Period.java
@@ -0,0 +1,373 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.ETimeLimit;
+
+/**
+ * Represents an approximate duration in multiple TimeUnits.  Each unit,
+ * if set, has a count (which can be fractional and must be non-negative).
+ * In addition Period can either represent the duration as being into the past
+ * or future, and as being more or less than the defined value.
+ * <p>
+ * Use a PeriodFormatter to convert a Period to a String.  
+ * <p>
+ * Periods are immutable.  Mutating operations return the new 
+ * result leaving the original unchanged.
+ * <p>
+ * Example:<pre>
+ * Period p1 = Period.at(3, WEEK).and(2, DAY).inFuture();
+ * Period p2 = p1.and(12, HOUR);</pre>
+ */
+public final class Period {
+  final byte timeLimit;
+  final boolean inFuture;
+  final int[] counts;
+
+  /**
+   * Constructs a Period representing a duration of
+   * count units extending into the past.
+   * @param count the number of units, must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period at(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.NOLIMIT, false, count, unit);
+  }
+
+  /**
+   * Constructs a Period representing a duration more than
+   * count units extending into the past.
+   * @param count the number of units. must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period moreThan(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.MT, false, count, unit);
+  }
+
+  /**
+   * Constructs a Period representing a duration
+   * less than count units extending into the past.
+   * @param count the number of units. must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period lessThan(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.LT, false, count, unit);
+  }
+
+  /**
+   * Set the given unit to have the given count.  Marks the
+   * unit as having been set.  This can be used to set
+   * multiple units, or to reset a unit to have a new count.
+   * This does <b>not</b> add the count to an existing count
+   * for this unit.
+   *
+   * @param count the number of units.  must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public Period and(float count, TimeUnit unit) {
+    checkCount(count);
+    return setTimeUnitValue(unit, count);
+  }
+
+  /**
+   * Mark the given unit as not being set.
+   *
+   * @param unit the unit to unset
+   * @return the new Period
+   */
+  public Period omit(TimeUnit unit) {
+    return setTimeUnitInternalValue(unit, 0);
+  }
+  
+  /**
+   * Mark the duration as being at the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period at() {
+    return setTimeLimit(ETimeLimit.NOLIMIT);
+  }
+
+  /**
+   * Mark the duration as being more than the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period moreThan() {
+    return setTimeLimit(ETimeLimit.MT);
+  }
+
+  /**
+   * Mark the duration as being less than the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period lessThan() {
+    return setTimeLimit(ETimeLimit.LT);
+  }
+
+  /**
+   * Mark the time as being in the future.
+   *
+   * @return the new Period
+   */
+  public Period inFuture() {
+    return setFuture(true);
+  }
+
+  /**
+   * Mark the duration as extending into the past.
+   *
+   * @return the new Period
+   */
+  public Period inPast() {
+    return setFuture(false);
+  }
+
+  /**
+   * Mark the duration as extending into the future if
+   * future is true, and into the past otherwise.
+   *
+   * @param future true if the time is in the future
+   * @return the new Period
+   */
+  public Period inFuture(boolean future) {
+    return setFuture(future);
+  }
+
+  /**
+   * Mark the duration as extending into the past if
+   * past is true, and into the future otherwise.
+   *
+   * @param past true if the time is in the past
+   * @return the new Period
+   */
+  public Period inPast(boolean past) {
+    return setFuture(!past);
+  }
+
+  /**
+   * Returns true if any unit is set.
+   * @return true if any unit is set
+   */
+  public boolean isSet() {
+    for (int i = 0; i < counts.length; ++i) {
+      if (counts[i] != 0) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Returns true if the given unit is set.
+   * @param unit the unit to test
+   * @return true if the given unit is set.
+   */
+  public boolean isSet(TimeUnit unit) {
+    return counts[unit.ordinal] > 0;
+  }
+
+  /**
+   * Returns the count for the specified unit.  If the
+   * unit is not set, returns 0.
+   * @param unit the unit to test
+   * @return the count
+   */
+  public float getCount(TimeUnit unit) {
+    int ord = unit.ordinal;
+    if (counts[ord] == 0) {
+      return 0;
+    }
+    return (counts[ord] - 1)/1000f;
+  }
+
+  /**
+   * Returns true if this represents a 
+   * duration into the future.
+   * @return true if this represents a 
+   * duration into the future.
+   */
+  public boolean isInFuture() {
+    return inFuture;
+  }
+
+  /**
+   * Returns true if this represents a 
+   * duration into the past
+   * @return true if this represents a 
+   * duration into the past
+   */
+  public boolean isInPast  () {
+    return !inFuture;
+  }
+
+  /**
+   * Returns true if this represents a duration in
+   * excess of the defined duration.
+   * @return true if this represents a duration in
+   * excess of the defined duration.
+   */
+  public boolean isMoreThan() {
+    return timeLimit == ETimeLimit.MT;
+  }
+
+  /**
+   * Returns true if this represents a duration
+   * less than the defined duration.
+   * @return true if this represents a duration
+   * less than the defined duration.
+   */
+  public boolean isLessThan() {
+    return timeLimit == ETimeLimit.LT;
+  }
+
+  /** 
+   * Returns true if rhs extends Period and
+   * the two Periods are equal.
+   * @param rhs the object to compare to
+   * @return true if rhs is a Period and is equal to this
+   */
+  public boolean equals(Object rhs) {
+    try {
+      return equals((Period)rhs);
+    }
+    catch (ClassCastException e) {
+      return false;
+    }
+  }
+
+  /**
+   * Returns true if the same units are defined with
+   * the same counts, both extend into the future or both into the
+   * past, and if the limits (at, more than, less than) are the same.
+   * Note that this means that a period of 1000ms and a period of 1sec
+   * will not compare equal.
+   *
+   * @param rhs the period to compare to
+   * @return true if the two periods are equal
+   */
+  public boolean equals(Period rhs) {
+    if (rhs != null &&
+        this.timeLimit == rhs.timeLimit &&
+        this.inFuture == rhs.inFuture) {
+      for (int i = 0; i < counts.length; ++i) {
+        if (counts[i] != rhs.counts[i]) {
+          return false;
+        }
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /** 
+   * Returns the hashCode. 
+   * @return the hashCode
+   */
+  public int hashCode() {
+    int hc = (timeLimit << 1) | (inFuture ? 1 : 0);
+    for (int i = 0; i < counts.length; ++i) {
+      hc = (hc << 2) ^ counts[i];
+    }
+    return hc;
+  }
+
+  /**
+   * Private constructor used by static factory methods.
+   */
+  private Period(int limit, boolean future, float count, TimeUnit unit) {
+    this.timeLimit = (byte) limit;
+    this.inFuture = future;
+    this.counts = new int[TimeUnit.units.length];
+    this.counts[unit.ordinal] = (int)(count * 1000) + 1;
+  }
+
+  /**
+   * Package private constructor used by setters and factory.
+   */
+  Period(int timeLimit, boolean inFuture, int[] counts) {
+    this.timeLimit = (byte) timeLimit;
+    this.inFuture = inFuture;
+    this.counts = counts;
+  }
+
+  /**
+   * Set the unit's internal value, converting from float to int.
+   */
+  private Period setTimeUnitValue(TimeUnit unit, float value) {
+    if (value < 0) {
+      throw new IllegalArgumentException("value: " + value);
+    }
+    return setTimeUnitInternalValue(unit, (int)(value * 1000) + 1);
+  }
+
+  /** 
+   * Sets the period to have the provided value, 1/1000 of the
+   * unit plus 1.  Thus unset values are '0', 1' is the set value '0',
+   * 2 is the set value '1/1000', 3 is the set value '2/1000' etc.
+   * @param p the period to change
+   * @param value the int value as described above.
+   * @eturn the new Period object.
+   */
+  private Period setTimeUnitInternalValue(TimeUnit unit, int value) {
+    int ord = unit.ordinal;
+    if (counts[ord] != value) {
+      int[] newCounts = new int[counts.length];
+      for (int i = 0; i < counts.length; ++i) {
+        newCounts[i] = counts[i];
+      }
+      newCounts[ord] = value;
+      return new Period(timeLimit, inFuture, newCounts);
+    }
+    return this;
+  }
+
+  /**
+   * Sets whether this defines a future time.
+   * @param future true if the time is in the future
+   * @return  the new Period
+   */
+  private Period setFuture(boolean future) {
+    if (this.inFuture != future) {
+      return new Period(timeLimit, future, counts);
+    }
+    return this;
+  }
+
+  /**
+   * Sets whether this is more than, less than, or
+   * 'about' the specified time.
+   * @param limit the kind of limit
+   * @return the new Period
+   */
+  private Period setTimeLimit(byte limit) {
+    if (this.timeLimit != limit) {
+      return new Period(limit, inFuture, counts);
+
+    }
+    return this;
+  }
+
+  /**
+   * Validate count.
+   */
+  private static void checkCount(float count) {
+    if (count < 0) {
+      throw new IllegalArgumentException("count (" + count + 
+                                         ") cannot be negative");
+    }
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodBuilder.java b/src/com/ibm/icu/impl/duration/PeriodBuilder.java
new file mode 100644
index 0000000..188b352
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodBuilder.java
@@ -0,0 +1,53 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ * Constructs a Period given a base time and a duration in milliseconds.
+ * <p>
+ * PeriodBuilder may be used alone or be set on a DurationFormatter
+ * to customize how that formatter constructs a Period for formatting.
+ * <p>
+ * None of the operations on PeriodBuilder change the current builder.
+ */
+public interface PeriodBuilder {
+  /**
+   * Create a period of the given duration using the current system
+   * time as the reference time.
+   *
+   * @param duration the duration in milliseconds from the current time
+   * to the target time.  A negative duration indicates a time in the past
+   * @return a Period that represents the duration
+   */
+  Period create(long duration);
+
+  /**
+   * Create a period of the given duration using the provided reference date.
+   *
+   * @param duration the duration in milliseconds from the referenct time
+   * to the target time.  A negative duration indicates a time before the
+   * reference time
+   * @param referenceDate the reference date from which to compute the period
+   * @return a Period that represents the duration
+   */
+  Period createWithReferenceDate(long duration, long referenceDate);
+
+  /**
+   * Returns a new PeriodBuilder that uses the provided locale to 
+   * determine what periods are available for use.
+   */
+  PeriodBuilder withLocale(String localeName);
+
+  /**
+   * Returns a new PeriodBuilder that computes periods starting at
+   * dates in the provided time zone.
+   */
+  PeriodBuilder withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java b/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
new file mode 100644
index 0000000..f211877
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
@@ -0,0 +1,109 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ */
+public interface PeriodBuilderFactory {
+
+  /**
+   * Sets the time units available for use.  Default is all units.
+   * @param minUnit the smallest time unit available for use
+   * @param maxUnit the largest time unit available for use
+   * @return this factory
+   */
+  PeriodBuilderFactory setAvailableUnitRange(TimeUnit minUnit,
+                         TimeUnit maxUnit);
+
+  /**
+   * Sets whether the time unit is available for use.
+   * @param unit the time unit
+   * @param available true if the unit is available for use
+   * @return this factory
+   */
+  PeriodBuilderFactory setUnitIsAvailable(TimeUnit unit, boolean available);
+
+  /**
+   * Sets the maximum value for the largest available time unit (as
+   * set in setUnits).  Periods that represent a longer duration than
+   * this will be pinned to this value of that time unit and return
+   * true for 'isMoreThan'.  Default is no limit.  Setting a value of
+   * zero restores the default.
+   */
+  PeriodBuilderFactory setMaxLimit(float maxLimit);
+
+  /**
+   * Sets the minimum value for the smallest available time unit (as
+   * set in setUnits).  Periods that represent a shorter duration than
+   * this will be pinned to this value of that time unit and return
+   * true for 'isLessThan'.  Default is no limit.  Setting a value of
+   * zero restores the default.
+   */
+  PeriodBuilderFactory setMinLimit(float minLimit);
+
+  /**
+   * Sets whether units with a value of zero are represented in a
+   * period when 'gaps' appear between time units, e.g. 
+   * '2 hours, 0 minutes, and 33 seconds'.  Default is to
+   * not represent these explicitly ('2 hours and 33 seconds').
+   */
+  PeriodBuilderFactory setAllowZero(boolean allow);
+
+  /**
+   * Set whether weeks are used with other units, or only when
+   * weeks are the only unit.  For example '3 weeks and 2 days'
+   * versus '23 days'.  Default is to use them alone only.
+   */
+  PeriodBuilderFactory setWeeksAloneOnly(boolean aloneOnly);
+
+  /**
+   * Sets the locale for the factory.  Setting the locale can adjust
+   * the values for some or all of the other properties to reflect
+   * language or cultural conventions.  Default is to use
+   * the default locale.
+   */
+  PeriodBuilderFactory setLocale(String localeName);
+
+  /**
+   * Returns a builder that represents durations in terms of the single
+   * given TimeUnit.  If the factory settings don't make the given unit
+   * available, this will return null.
+   *
+   * @param unit the single TimeUnit with which to represent times
+   * @return a builder
+   */
+  PeriodBuilder getFixedUnitBuilder(TimeUnit unit);
+
+  /**
+   * Returns a builder that represents durations in terms of the
+   * single largest period less than or equal to the duration.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getSingleUnitBuilder();
+
+  /**
+   * Returns a builder that formats the largest one or two time units,
+   * starting with the largest period less than or equal to the duration.
+   * It formats two periods if the first period has a count &lt; 2
+   * and the next period has a count &gt;= 1.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getOneOrTwoUnitBuilder();
+
+  /**
+   * Returns a builder that formats up to the given number of time units,
+   * starting with the largest unit less than or equal to the
+   * duration.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getMultiUnitBuilder(int unitCount);
+}
+
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatter.java b/src/com/ibm/icu/impl/duration/PeriodFormatter.java
new file mode 100644
index 0000000..a3363f1
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatter.java
@@ -0,0 +1,41 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Formats a Period, such as '2 hours 23 minutes'.  
+ * The Period defines the fields to format and their
+ * values, and the formatter defines how to format them.
+ * <p>
+ * PeriodFormatters are immutable.
+ * <p> 
+ * PeriodFormatter can be instantiated using a PeriodFormatterFactory.
+ *
+ * @see Period
+ * @see PeriodBuilder
+ * @see PeriodFormatterFactory
+ */
+public interface PeriodFormatter {
+  /**
+   * Format a Period.
+   *
+   * @param ts the Period to format
+   * @return the formatted time
+   */
+  String format(Period period);
+
+  /**
+   * Return a new PeriodFormatter with the same customizations but
+   * using data for a new locale.  Some locales impose limits on the
+   * fields that can be directly formatter.
+   *
+   * @param localeName the name of the new locale
+   * @return a new formatter for the given locale
+   */
+  PeriodFormatter withLocale(String localeName);
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java b/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
new file mode 100644
index 0000000..2110d45
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
@@ -0,0 +1,74 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Abstract factory interface used to create PeriodFormatters.
+ * PeriodFormatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ */
+public interface PeriodFormatterFactory {
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setLocale(String localeName);
+
+  /**
+   * Set whether limits will be displayed.
+   *
+   * @param display true if limits will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayLimit(boolean display);
+
+  /**
+   * Set whether past and future will be displayed.
+   *
+   * @param display true if past and future will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayPastFuture(boolean display);
+
+  /**
+   * Set how separators will be displayed.
+   *
+   * @param variant the variant indicating how separators will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setSeparatorVariant(int variant);
+
+  /**
+   * Set the variant of the time unit names to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setUnitVariant(int variant);
+
+  /**
+   * Set the variant of the count to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setCountVariant(int variant);
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a PeriodFormatter
+   */
+  public PeriodFormatter getFormatter();
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatterService.java b/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
new file mode 100644
index 0000000..c433c73
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
@@ -0,0 +1,45 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Collection;
+
+/**
+ * Provider of Factory instances for building PeriodBuilders, PeriodFormatters,
+ * and DurationFormatters.
+ */
+public interface PeriodFormatterService {
+
+  /**
+   * Creates a new factory for creating DurationFormatters.
+   *
+   * @return a new DurationFormatterFactory.
+   */
+  DurationFormatterFactory newDurationFormatterFactory();
+
+  /**
+   * Creates a new factory for creating PeriodFormatters.
+   *
+   * @return a new PeriodFormatterFactory
+   */
+  PeriodFormatterFactory newPeriodFormatterFactory();
+
+  /**
+   * Creates a new factory for creating PeriodBuilders.
+   *
+   * @return a new PeriodBuilderFactory
+   */
+  PeriodBuilderFactory newPeriodBuilderFactory();
+
+  /**
+   * Return the names of locales supported by factories produced by
+   * this service.
+   * @return a collection of String (locale names)
+   */
+  Collection getAvailableLocaleNames();
+}
diff --git a/src/com/ibm/icu/impl/duration/TimeUnit.java b/src/com/ibm/icu/impl/duration/TimeUnit.java
new file mode 100644
index 0000000..a9f1e01
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/TimeUnit.java
@@ -0,0 +1,85 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * 'Enum' for individual time units.  Not an actual enum so that it can be 
+ * used by Java 1.4.
+ */
+public final class TimeUnit {
+  /** The name of this unit, a key, not for localization. */
+  final String name;
+
+  /** The ordinal of the unit, in order from largest to smallest. */
+  final byte ordinal;
+
+  /** Private constructor */
+  private TimeUnit(String name, int ordinal) {
+    this.name = name;
+    this.ordinal = (byte) ordinal;
+  }
+
+  public String toString() {
+    return name;
+  }
+  
+  /** Represents a year. */ 
+  public static final TimeUnit YEAR = new TimeUnit("year", 0);
+
+  /** Represents a month. */  
+  public static final TimeUnit MONTH = new TimeUnit("month", 1);
+
+  /** Represents a week. */ 
+  public static final TimeUnit WEEK = new TimeUnit("week", 2);
+
+  /** Represents a day. */ 
+  public static final TimeUnit DAY = new TimeUnit("day", 3);
+
+  /** Represents an hour. */ 
+  public static final TimeUnit HOUR = new TimeUnit("hour", 4);
+
+  /** Represents a minute. */ 
+  public static final TimeUnit MINUTE = new TimeUnit("minute", 5);
+
+  /** Represents a second. */ 
+  public static final TimeUnit SECOND = new TimeUnit("second", 6);
+
+  /** Represents a millisecond. */ 
+  public static final TimeUnit MILLISECOND = new TimeUnit("millisecond", 7);
+
+  /** Returns the next larger time unit, or null if this is the largest. */
+  public TimeUnit larger() {
+    return ordinal == 0 ? null : units[ordinal - 1];
+  }
+
+  /** Returns the next smaller time unit, or null if this is the smallest. */
+  public TimeUnit smaller() {
+    return ordinal == units.length - 1 ? null : units[ordinal + 1];
+  }
+
+  /** The list of units, in order from largest to smallest. */
+  static final TimeUnit[] units = {
+    YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND
+  };
+
+    /** Returns the ordinal value of this time unit, largest is 0. **/
+  public int ordinal() {
+    return ordinal;
+  }
+
+  /** Approximate, durations for the units independent of the time at which
+      they are measured */
+
+  // hack, initialization long array using expressions with 'L' at end doesn't
+  // compute entire expression using 'long'.  differs from initializtion of
+  // a single constant
+  static final long[] approxDurations = {
+    36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+    60*60*1000L, 60*1000L, 1000L, 1L
+  };
+}
diff --git a/src/com/ibm/icu/impl/duration/TimeUnitConstants.java b/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
new file mode 100644
index 0000000..9de023b
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
@@ -0,0 +1,37 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Easy access to time units for Java 1.4, which doesn't have static imports.
+ */
+public interface TimeUnitConstants {
+  /** Represents a year. */ 
+  public static final TimeUnit YEAR = TimeUnit.YEAR;
+
+  /** Represents a month. */  
+  public static final TimeUnit MONTH = TimeUnit.MONTH;
+
+  /** Represents a week. */ 
+  public static final TimeUnit WEEK = TimeUnit.WEEK;
+
+  /** Represents a day. */ 
+  public static final TimeUnit DAY = TimeUnit.DAY;
+
+  /** Represents an hour. */ 
+  public static final TimeUnit HOUR = TimeUnit.HOUR;
+
+  /** Represents a minute. */ 
+  public static final TimeUnit MINUTE = TimeUnit.MINUTE;
+
+  /** Represents a second. */ 
+  public static final TimeUnit SECOND = TimeUnit.SECOND;
+
+  /** Represents a millisecond. */ 
+  public static final TimeUnit MILLISECOND = TimeUnit.MILLISECOND;
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/DataRecord.java b/src/com/ibm/icu/impl/duration/impl/DataRecord.java
new file mode 100644
index 0000000..6264417
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/DataRecord.java
@@ -0,0 +1,317 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.*;
+
+/**
+ * DataRecord contains the data used by PeriodFormatterData.  Fields
+ * are package-private for ease of access.  This is a struct, it knows
+ * how to read and write itself to/from simple XML, that's all.
+ */
+public class DataRecord {
+  byte pl;
+  String[][] pluralNames;
+  byte[] genders; // EGender
+  String[] singularNames;
+  String[] halfNames;
+  String[] numberNames;
+  String[] mediumNames;
+  String[] shortNames;
+  String[] measures;
+  String[] rqdSuffixes;
+  String[] optSuffixes;
+  String[] halves;
+  byte[] halfPlacements; // EHalfPlacement
+  byte[] halfSupport; // EHalfSupport
+  String fifteenMinutes;
+  String fiveMinutes;
+  boolean requiresDigitSeparator;
+  String digitPrefix;
+  String countSep;
+  String shortUnitSep;
+  String[] unitSep;
+  boolean[] unitSepRequiresDP;
+  boolean[] requiresSkipMarker;
+  byte numberSystem; // ENumberSystem
+  char zero;
+  char decimalSep;
+  boolean omitSingularCount;
+  boolean omitDualCount;
+  byte zeroHandling; // EZeroHandling
+  byte decimalHandling; // EDecimalHandling
+  byte fractionHandling; // EFractionHandling
+  String skippedUnitMarker;
+  boolean allowZero;
+  boolean weeksAloneOnly;
+  byte useMilliseconds; // EMilliSupport
+  ScopeData[] scopeData;
+
+  public static DataRecord read(String ln, RecordReader in) {
+    if (in.open("DataRecord")) {
+      DataRecord record = new DataRecord();
+      record.pl = in.namedIndex("pl", EPluralization.names);
+      record.pluralNames = in.stringTable("pluralName");
+      record.genders = in.namedIndexArray("gender", EGender.names);
+      record.singularNames = in.stringArray("singularName");
+      record.halfNames = in.stringArray("halfName");
+      record.numberNames = in.stringArray("numberName");
+      record.mediumNames = in.stringArray("mediumName");
+      record.shortNames = in.stringArray("shortName");
+      record.measures = in.stringArray("measure");
+      record.rqdSuffixes = in.stringArray("rqdSuffix");
+      record.optSuffixes = in.stringArray("optSuffix");
+      record.halves = in.stringArray("halves");
+      record.halfPlacements = in.namedIndexArray("halfPlacement", EHalfPlacement.names);
+      record.halfSupport = in.namedIndexArray("halfSupport", EHalfSupport.names);
+      record.fifteenMinutes = in.string("fifteenMinutes");
+      record.fiveMinutes = in.string("fiveMinutes");
+      record.requiresDigitSeparator = in.bool("requiresDigitSeparator");
+      record.digitPrefix = in.string("digitPrefix");
+      record.countSep = in.string("countSep");
+      record.shortUnitSep = in.string("shortUnitSep");
+      record.unitSep = in.stringArray("unitSep");
+      record.unitSepRequiresDP = in.boolArray("unitSepRequiresDP");
+      record.requiresSkipMarker = in.boolArray("requiresSkipMarker");
+      record.numberSystem = in.namedIndex("numberSystem", ENumberSystem.names);
+      record.zero = in.character("zero");
+      record.decimalSep = in.character("decimalSep");
+      record.omitSingularCount = in.bool("omitSingularCount");
+      record.omitDualCount = in.bool("omitDualCount");
+      record.zeroHandling = in.namedIndex("zeroHandling", EZeroHandling.names);
+      record.decimalHandling = in.namedIndex("decimalHandling", EDecimalHandling.names);
+      record.fractionHandling = in.namedIndex("fractionHandling", EFractionHandling.names);
+      record.skippedUnitMarker = in.string("skippedUnitMarker");
+      record.allowZero = in.bool("allowZero");
+      record.weeksAloneOnly = in.bool("weeksAloneOnly");
+      record.useMilliseconds = in.namedIndex("useMilliseconds", EMilliSupport.names);
+      if (in.open("ScopeDataList")) {
+        List list = new ArrayList(); // of ScopeData
+        ScopeData data;
+        while (null != (data = ScopeData.read(in))) {
+          list.add(data);
+        }
+        if (in.close()) {
+          record.scopeData = (ScopeData[]) list.toArray(new ScopeData[list.size()]);
+        }
+      }
+      
+      if (in.close()) {
+        return record;
+      }
+    } else {
+        throw new InternalError("did not find DataRecord while reading " + ln);
+    }
+    throw new InternalError("null data read while reading "+ln);
+//    Thread.dumpStack();
+//    return null;
+  }
+
+  public void write(RecordWriter out) {
+    out.open("DataRecord");
+    out.namedIndex("pl", EPluralization.names, pl);
+    out.stringTable("pluralName", pluralNames);
+    out.namedIndexArray("gender", EGender.names, genders);
+    out.stringArray("singularName", singularNames);
+    out.stringArray("halfName", halfNames);
+    out.stringArray("numberName", numberNames);
+    out.stringArray("mediumName", mediumNames);
+    out.stringArray("shortName", shortNames);
+    out.stringArray("measure", measures);
+    out.stringArray("rqdSuffix", rqdSuffixes);
+    out.stringArray("optSuffix", optSuffixes);
+    out.stringArray("halves", halves);
+    out.namedIndexArray("halfPlacement", EHalfPlacement.names, halfPlacements);
+    out.namedIndexArray("halfSupport", EHalfSupport.names, halfSupport);
+    out.string("fifteenMinutes", fifteenMinutes);
+    out.string("fiveMinutes", fiveMinutes);
+    out.bool("requiresDigitSeparator", requiresDigitSeparator);
+    out.string("digitPrefix", digitPrefix);
+    out.string("countSep", countSep);
+    out.string("shortUnitSep", shortUnitSep);
+    out.stringArray("unitSep", unitSep);
+    out.boolArray("unitSepRequiresDP", unitSepRequiresDP);
+    out.boolArray("requiresSkipMarker", requiresSkipMarker);
+    out.namedIndex("numberSystem", ENumberSystem.names, numberSystem);
+    out.character("zero", zero);
+    out.character("decimalSep", decimalSep);
+    out.bool("omitSingularCount", omitSingularCount);
+    out.bool("omitDualCount", omitDualCount);
+    out.namedIndex("zeroHandling", EZeroHandling.names, zeroHandling);
+    out.namedIndex("decimalHandling", EDecimalHandling.names, decimalHandling);
+    out.namedIndex("fractionHandling", EFractionHandling.names, fractionHandling);
+    out.string("skippedUnitMarker", skippedUnitMarker);
+    out.bool("allowZero", allowZero);
+    out.bool("weeksAloneOnly", weeksAloneOnly);
+    out.namedIndex("useMilliseconds", EMilliSupport.names, useMilliseconds);
+    if (scopeData != null) {
+      out.open("ScopeDataList");
+      for (int i = 0; i < scopeData.length; ++i) {
+        scopeData[i].write(out);
+      }
+      out.close();
+    }
+    out.close();
+  }
+
+  public static class ScopeData {
+    String prefix;
+    boolean requiresDigitPrefix;
+    String suffix;
+
+    public void write(RecordWriter out)  {
+      out.open("ScopeData");
+      out.string("prefix", prefix);
+      out.bool("requiresDigitPrefix", requiresDigitPrefix);
+      out.string("suffix", suffix);
+      out.close();
+    }
+
+    public static ScopeData read(RecordReader in) {
+      if (in.open("ScopeData")) {
+        ScopeData scope = new ScopeData();
+        scope.prefix = in.string("prefix");
+        scope.requiresDigitPrefix = in.bool("requiresDigitPrefix");
+        scope.suffix = in.string("suffix");
+        if (in.close()) {
+          return scope;
+        }
+      }
+      return null;
+    }
+  }
+
+  public static interface ETimeLimit { 
+    public static final byte NOLIMIT = 0;
+    public static final byte LT = 1;
+    public static final byte MT = 2;
+    public static final String[] names = { "NOLIMIT", "LT", "MT" };
+  }
+
+  public static interface ETimeDirection { 
+    public static final byte NODIRECTION = 0;
+    public static final byte PAST = 1;
+    public static final byte FUTURE = 2;
+    public static final String[] names = { "NODIRECTION", "PAST", "FUTURE" };
+  }
+
+  public static interface EUnitVariant { 
+    public static final byte PLURALIZED = 0;
+    public static final byte MEDIUM = 1;
+    public static final byte SHORT = 2;
+    public static final String[] names = { "PLURALIZED", "MEDIUM", "SHORT" };
+  }
+
+  public static interface ECountVariant { 
+    public static final byte INTEGER = 0;
+    public static final byte INTEGER_CUSTOM = 1;
+    public static final byte HALF_FRACTION = 2;
+    public static final byte DECIMAL1 = 3;
+    public static final byte DECIMAL2 = 4;
+    public static final byte DECIMAL3 = 5;
+    public static final String[] names = { 
+      "INTEGER", "INTEGER_CUSTOM", "HALF_FRACTION", "DECIMAL1", 
+      "DECIMAL2", "DECIMAL3" };
+  }
+
+  public static interface EPluralization { 
+    public static final byte NONE = 0; 
+    public static final byte PLURAL = 1;
+    public static final byte DUAL = 2;
+    public static final byte PAUCAL = 3;
+    public static final byte HEBREW = 4;
+    public static final byte ARABIC = 5;
+    public static final String[] names = {
+      "NONE", "PLURAL", "DUAL", "PAUCAL", "HEBREW", "ARABIC"
+    };
+  }
+
+  public static interface EHalfPlacement { 
+    public static final byte PREFIX = 0;
+    public static final byte AFTER_FIRST = 1;
+    public static final byte LAST = 2;
+    public static final String[] names = {
+      "PREFIX", "AFTER_FIRST", "LAST"
+    };
+  }
+
+  public static interface ENumberSystem { 
+    public static final byte DEFAULT = 0;
+    public static final byte CHINESE_TRADITIONAL = 1;
+    public static final byte CHINESE_SIMPLIFIED = 2;
+    public static final byte KOREAN = 3;
+    public static final String[] names = {
+      "DEFAULT", "CHINESE_TRADITIONAL", "CHINESE_SIMPLIFIED", "KOREAN"
+    };
+  }
+
+  public static interface EZeroHandling { 
+    public static final byte ZPLURAL = 0;
+    public static final byte ZSINGULAR = 1;
+    public static final String[] names = {
+      "ZPLURAL", "ZSINGULAR"
+    };
+  }
+
+  public static interface EDecimalHandling { 
+    public static final byte DPLURAL = 0;
+    public static final byte DSINGULAR = 1;
+    public static final byte DSINGULAR_SUBONE = 2;
+    public static final byte DPAUCAL = 3;
+    public static final String[] names = {
+      "DPLURAL", "DSINGULAR", "DSINGULAR_SUBONE", "DPAUCAL"
+    };
+  }
+
+  public static interface EFractionHandling { 
+    public static final byte FPLURAL = 0;
+    public static final byte FSINGULAR_PLURAL = 1;
+    public static final byte FSINGULAR_PLURAL_ANDAHALF = 2;
+    public static final byte FPAUCAL = 3;
+    public static final String[] names = {
+      "FPLURAL", "FSINGULAR_PLURAL", "FSINGULAR_PLURAL_ANDAHALF",
+      "FPAUCAL"
+    };
+  }
+
+  public static interface EHalfSupport {
+    public static final byte YES = 0;
+    public static final byte NO = 1;
+    public static final byte ONE_PLUS = 2;
+    public static final String[] names = {
+      "YES", "NO", "ONE_PLUS"
+    };
+  }
+
+  public static interface EMilliSupport { 
+    public static final byte YES = 0;
+    public static final byte NO = 1;
+    public static final byte WITH_SECONDS = 2;
+    public static final String[] names = {
+      "YES", "NO", "WITH_SECONDS"
+    };
+  }
+
+  public static interface ESeparatorVariant { 
+    public static final byte NONE = 0;
+    public static final byte SHORT = 1;
+    public static final byte FULL = 2;
+    public static final String[] names = {
+      "NONE", "SHORT", "FULL"
+    };
+  }
+
+  public static interface EGender { 
+    public static final byte M = 0;
+    public static final byte F = 1;
+    public static final byte N = 2;
+    public static final String[] names = {
+      "M", "F", "N"
+    };
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
new file mode 100644
index 0000000..e38a64b
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
@@ -0,0 +1,660 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import com.ibm.icu.impl.duration.TimeUnit;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+
+
+/**
+ * PeriodFormatterData provides locale-specific data used to format
+ * relative dates and times, and convenience api to access it.
+ *
+ * An instance of PeriodFormatterData is usually created by requesting
+ * data for a given locale from an PeriodFormatterDataService.
+ */
+public class PeriodFormatterData {
+  final DataRecord dr;
+  String localeName;
+
+  // debug
+  public static boolean trace = false;
+
+  public PeriodFormatterData(String localeName, DataRecord dr) {
+    this.dr = dr;
+    this.localeName = localeName;
+    if(localeName == null) {
+        throw new NullPointerException("localename is null");
+    }
+//    System.err.println("** localeName is " + localeName);
+    if (dr == null) {
+//      Thread.dumpStack();
+      throw new NullPointerException("data record is null");
+    }
+  }
+
+  // none - chinese (all forms the same)
+  // plural - english, special form for 1
+  // dual - special form for 1 and 2
+  // paucal - russian, special form for 1, for 2-4 and n > 20 && n % 10 == 2-4
+  // rpt_dual_few - slovenian, special form for 1, 2, 3-4 and n as above
+  // hebrew, dual plus singular form for years > 11
+  // arabic, dual, plus singular form for all terms > 10
+
+  /**
+   * Return the pluralization format used by this locale.
+   * @return the pluralization format
+   */
+  public int pluralization() {
+    return dr.pl;
+  }
+
+  /**
+   * Return true if zeros are allowed in the display.
+   * @return true if zeros should be allowed
+   */
+  public boolean allowZero() {
+    return dr.allowZero;
+  }
+
+  public boolean weeksAloneOnly() {
+    return dr.weeksAloneOnly;
+  }
+
+  public int useMilliseconds() {
+    return dr.useMilliseconds;
+  }
+
+  /**
+   * Append the appropriate prefix to the string builder, depending on whether and
+   * how a limit and direction are to be displayed.
+   *
+   * @param tl how and whether to display the time limit
+   * @param td how and whether to display the time direction
+   * @param sb the string builder to which to append the text
+   * @return true if a following digit will require a digit prefix
+   */
+  public boolean appendPrefix(int tl, int td, StringBuffer sb) {
+    if (dr.scopeData != null) {
+      int ix = tl * 3 + td;
+      ScopeData sd = dr.scopeData[ix];
+      if (sd != null) {
+        String prefix = sd.prefix;
+        if (prefix != null) {
+          sb.append(prefix);
+          return sd.requiresDigitPrefix;
+        }
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Append the appropriate suffix to the string builder, depending on whether and
+   * how a limit and direction are to be displayed.
+   *
+   * @param tl how and whether to display the time limit
+   * @param td how and whether to display the time direction
+   * @param sb the string builder to which to append the text
+   */
+  public void appendSuffix(int tl, int td, StringBuffer sb) {
+    if (dr.scopeData != null) {
+      int ix = tl * 3 + td;
+      ScopeData sd = dr.scopeData[ix];
+      if (sd != null) {
+        String suffix = sd.suffix;
+        if (suffix != null) {
+          if (trace) {
+            System.out.println("appendSuffix '" + suffix + "'");
+          }
+          sb.append(suffix);
+        }
+      }
+    }
+  }
+
+  /**
+   * Append the count and unit to the string builder.
+   *
+   * @param unit the unit to append
+   * @param count the count of units, * 1000
+   * @param cv the format to use for displaying the count
+   * @param uv the format to use for displaying the unit
+   * @param useCountSep if false, force no separator between count and unit
+   * @param useDigitPrefix if true, use the digit prefix
+   * @param multiple true if there are multiple units in this string
+   * @param last true if this is the last unit
+   * @param wasSkipped true if the unit(s) before this were skipped
+   * @param sb the string builder to which to append the text
+   * @param return true if will require skip marker
+   */
+  public boolean appendUnit(TimeUnit unit, int count, int cv, 
+                            int uv, boolean useCountSep, 
+                            boolean useDigitPrefix, boolean multiple, 
+                            boolean last, boolean wasSkipped, 
+                            StringBuffer sb) {
+    int px = unit.ordinal();
+
+    boolean willRequireSkipMarker = false;
+    if (dr.requiresSkipMarker != null && dr.requiresSkipMarker[px] && 
+        dr.skippedUnitMarker != null) {
+      if (!wasSkipped && last) {
+        sb.append(dr.skippedUnitMarker);
+      }
+      willRequireSkipMarker = true;
+    }
+
+    if (uv != EUnitVariant.PLURALIZED) {
+      boolean useMedium = uv == EUnitVariant.MEDIUM; 
+      String[] names = useMedium ? dr.mediumNames : dr.shortNames;
+      if (names == null || names[px] == null) {
+        names = useMedium ? dr.shortNames : dr.mediumNames;
+      }
+      if (names != null && names[px] != null) {
+        appendCount(unit, false, false, count, cv, useCountSep, 
+                    names[px], last, sb); // omit suffix, ok?
+        return false; // omit skip marker
+      }
+    }
+
+    // check cv
+    if (cv == ECountVariant.HALF_FRACTION && dr.halfSupport != null) {
+      switch (dr.halfSupport[px]) {
+        case EHalfSupport.YES: break;
+        case EHalfSupport.ONE_PLUS:
+          if (count > 1000) {
+            break;
+          }
+          // else fall through to decimal
+        case EHalfSupport.NO: {
+          count = (count / 500) * 500;  // round to 1/2
+          cv = ECountVariant.DECIMAL1; 
+        } break;
+      }
+    }
+          
+    String name = null;
+    int form = computeForm(unit, count, cv, multiple && last);
+    if (form == FORM_SINGULAR_SPELLED) {
+      if (dr.singularNames == null) {
+        form = FORM_SINGULAR;
+        name = dr.pluralNames[px][form];
+      } else {
+        name = dr.singularNames[px];
+      }
+    } else if (form == FORM_SINGULAR_NO_OMIT) {
+      name = dr.pluralNames[px][FORM_SINGULAR];
+    } else if (form == FORM_HALF_SPELLED) {
+      name = dr.halfNames[px];
+    } else { 
+      try {
+        name = dr.pluralNames[px][form];
+      } catch (NullPointerException e) {
+        System.out.println("Null Pointer in PeriodFormatterData["+localeName+"].au px: " + px + " form: " + form + " pn: " + dr.pluralNames);
+        throw e;
+      }
+    }
+    if (name == null) {
+      form = FORM_PLURAL;
+      name = dr.pluralNames[px][form];
+    }
+
+    boolean omitCount =
+      (form == FORM_SINGULAR_SPELLED || form == FORM_HALF_SPELLED) ||
+      (dr.omitSingularCount && form == FORM_SINGULAR) ||
+      (dr.omitDualCount && form == FORM_DUAL);
+
+    int suffixIndex = appendCount(unit, omitCount, useDigitPrefix, count, cv, 
+                                  useCountSep, name, last, sb);
+    if (last && suffixIndex >= 0) {
+      String suffix = null;
+      if (dr.rqdSuffixes != null && suffixIndex < dr.rqdSuffixes.length) {
+        suffix = dr.rqdSuffixes[suffixIndex];
+      }
+      if (suffix == null && dr.optSuffixes != null && 
+          suffixIndex < dr.optSuffixes.length) {
+        suffix = dr.optSuffixes[suffixIndex];
+      }
+      if (suffix != null) {
+        sb.append(suffix);
+      }
+    }
+    return willRequireSkipMarker;
+  }
+
+  /**
+   * Append a count to the string builder.
+   *
+   * @param unit the unit
+   * @param count the count
+   * @param cv the format to use for displaying the count
+   * @param useSep whether to use the count separator, if available
+   * @param name the term name
+   * @param last true if this is the last unit to be formatted
+   * @param sb the string builder to which to append the text
+   * @return index to use if might have required or optional suffix, or -1 if none required
+   */
+  public int appendCount(TimeUnit unit, boolean omitCount, 
+                         boolean useDigitPrefix, 
+                         int count, int cv, boolean useSep, 
+                         String name, boolean last, StringBuffer sb) {
+    if (cv == ECountVariant.HALF_FRACTION && dr.halves == null) {
+      cv = ECountVariant.INTEGER;
+    }
+
+    if (!omitCount && useDigitPrefix && dr.digitPrefix != null) {
+      sb.append(dr.digitPrefix);
+    }
+
+    int index = unit.ordinal();
+    switch (cv) {
+      case ECountVariant.INTEGER: {
+        if (!omitCount) {
+          appendInteger(count/1000, 1, 10, sb);
+        }
+      } break;
+
+      case ECountVariant.INTEGER_CUSTOM: {
+        int val = count / 1000;
+        // only custom names we have for now
+        if (unit == TimeUnit.MINUTE && 
+            (dr.fiveMinutes != null || dr.fifteenMinutes != null)) {
+          if (val != 0 && val % 5 == 0) {
+            if (dr.fifteenMinutes != null && (val == 15 || val == 45)) {
+              val = val == 15 ? 1 : 3;
+              if (!omitCount) appendInteger(val, 1, 10, sb);
+              name = dr.fifteenMinutes;
+              index = 8; // hack
+              break;
+            }
+            if (dr.fiveMinutes != null) {
+              val = val / 5;
+              if (!omitCount) appendInteger(val, 1, 10, sb);
+              name = dr.fiveMinutes;
+              index = 9; // hack
+              break;
+            }
+          }
+        }
+        if (!omitCount) appendInteger(val, 1, 10, sb);
+      } break;
+
+      case ECountVariant.HALF_FRACTION: {
+        // 0, 1/2, 1, 1-1/2...
+        int v = count / 500;
+        if (v != 1) {
+          if (!omitCount) appendCountValue(count, 1, 0, sb);
+        }
+        if ((v & 0x1) == 1) {
+          // hack, using half name
+          if (v == 1 && dr.halfNames != null && dr.halfNames[index] != null) {
+            sb.append(name);
+            return last ? index : -1;
+          }
+
+          int solox = v == 1 ? 0 : 1;
+          if (dr.genders != null && dr.halves.length > 2) {
+            if (dr.genders[index] == EGender.F) {
+              solox += 2;
+            }
+          }
+          int hp = dr.halfPlacements == null 
+              ? EHalfPlacement.PREFIX
+              : dr.halfPlacements[solox & 0x1];
+          String half = dr.halves[solox];
+          String measure = dr.measures == null ? null : dr.measures[index];
+          switch (hp) {
+            case EHalfPlacement.PREFIX:
+              sb.append(half);
+              break;
+            case EHalfPlacement.AFTER_FIRST: {
+              if (measure != null) {
+                sb.append(measure);
+                sb.append(half);
+                if (useSep && !omitCount) {
+                  sb.append(dr.countSep);
+                } 
+                sb.append(name);
+              } else { // ignore sep completely
+                sb.append(name);
+                sb.append(half);
+                return last ? index : -1; // might use suffix
+              }
+            } return -1; // exit early
+            case EHalfPlacement.LAST: {
+              if (measure != null) {
+                sb.append(measure);
+              }
+              if (useSep && !omitCount) {
+                sb.append(dr.countSep);
+              }
+              sb.append(name);
+              sb.append(half);
+            } return last ? index : -1; // might use suffix
+          }
+        }
+      } break;
+      default: {
+        int decimals = 1;
+        switch (cv) {
+          case ECountVariant.DECIMAL2: decimals = 2; break;
+          case ECountVariant.DECIMAL3: decimals = 3; break;
+          default: break;
+        }
+        if (!omitCount) appendCountValue(count, 1, decimals, sb);
+      } break;
+    }
+    if (!omitCount && useSep) {
+      sb.append(dr.countSep);
+    }
+    if (!omitCount && dr.measures != null && index < dr.measures.length) {
+      String measure = dr.measures[index];
+      if (measure != null) {
+        sb.append(measure);
+      }
+    }
+    sb.append(name);
+    return last ? index : -1;
+  }
+
+  /**
+   * Append a count value to the builder.
+   *
+   * @param count the count
+   * @param integralDigits the number of integer digits to display
+   * @param decimalDigits the number of decimal digits to display, <= 3
+   * @param sb the string builder to which to append the text
+   */
+  public void appendCountValue(int count, int integralDigits, 
+                               int decimalDigits, StringBuffer sb) {
+    int ival = count / 1000;
+    if (decimalDigits == 0) {
+      appendInteger(ival, integralDigits, 10, sb);
+      return;
+    }
+
+    if (dr.requiresDigitSeparator && sb.length() > 0) {
+      sb.append(' ');
+    }
+    appendDigits(ival, integralDigits, 10, sb);
+    int dval = count % 1000;
+    if (decimalDigits == 1) {
+      dval /= 100;
+    } else if (decimalDigits == 2) {
+      dval /= 10;
+    }
+    sb.append(dr.decimalSep);
+    appendDigits(dval, decimalDigits, decimalDigits, sb);
+    if (dr.requiresDigitSeparator) {
+      sb.append(' ');
+    }
+  }
+
+  public void appendInteger(int num, int mindigits, int maxdigits, 
+                            StringBuffer sb) {
+    if (dr.numberNames != null && num < dr.numberNames.length) {
+      String name = dr.numberNames[num];
+      if (name != null) {
+        sb.append(name);
+        return;
+      }
+    }
+
+    if (dr.requiresDigitSeparator && sb.length() > 0) {
+      sb.append(' ');
+    }
+    switch (dr.numberSystem) {
+      case ENumberSystem.DEFAULT: appendDigits(num, mindigits, maxdigits, sb); break;
+      case ENumberSystem.CHINESE_TRADITIONAL: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.TRADITIONAL)); break;
+      case ENumberSystem.CHINESE_SIMPLIFIED: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.SIMPLIFIED)); break;
+      case ENumberSystem.KOREAN: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.KOREAN)); break;
+    }
+    if (dr.requiresDigitSeparator) {
+      sb.append(' ');
+    }
+  }
+
+  /**
+   * Append digits to the string builder, using this.zero for '0' etc.
+   *
+   * @param num the integer to append
+   * @param mindigits the minimum number of digits to append
+   * @param maxdigits the maximum number of digits to append
+   * @param sb the string builder to which to append the text
+   */
+  public void appendDigits(long num, int mindigits, int maxdigits,  
+                           StringBuffer sb) {
+    char[] buf = new char[maxdigits];
+    int ix = maxdigits;
+    while (ix > 0 && num > 0) {
+      buf[--ix] = (char)(dr.zero + (num % 10));
+      num /= 10;
+    }
+    for (int e = maxdigits - mindigits; ix > e;) {
+      buf[--ix] = dr.zero;
+    }
+    sb.append(buf, ix, maxdigits - ix);
+  }
+
+  /**
+   * Append a marker for skipped units internal to a string.
+   * @param sb the string builder to which to append the text
+   */
+  public void appendSkippedUnit(StringBuffer sb) {
+    if (dr.skippedUnitMarker != null) {
+      sb.append(dr.skippedUnitMarker);
+    }
+  }
+
+  /**
+   * Append the appropriate separator between units
+   *
+   * @param unit the unit to which to append the separator
+   * @param afterFirst true if this is the first unit formatted
+   * @param beforeLast true if this is the next-to-last unit to be formatted
+   * @param sb the string builder to which to append the text
+   * @return true if a prefix will be required before a following unit
+   */
+  public boolean appendUnitSeparator(TimeUnit unit, boolean longSep, 
+                                     boolean afterFirst, boolean beforeLast, 
+                                     StringBuffer sb) {
+    // long seps
+    // false, false "...b', '...d"
+    // false, true  "...', and 'c"
+    // true, false - "a', '...c"
+    // true, true - "a' and 'b"
+    if ((longSep && dr.unitSep != null) || dr.shortUnitSep != null) {
+      if (longSep && dr.unitSep != null) {
+        int ix = (afterFirst ? 2 : 0) + (beforeLast ? 1 : 0);
+        sb.append(dr.unitSep[ix]);
+        return dr.unitSepRequiresDP != null && dr.unitSepRequiresDP[ix];
+      }
+      sb.append(dr.shortUnitSep); // todo: investigate whether DP is required
+    }
+    return false;
+  }
+
+  private static final int 
+    FORM_PLURAL = 0,
+    FORM_SINGULAR = 1,
+    FORM_DUAL = 2,
+    FORM_PAUCAL = 3,
+    FORM_SINGULAR_SPELLED = 4, // following are not in the pluralization list
+    FORM_SINGULAR_NO_OMIT = 5, // a hack
+    FORM_HALF_SPELLED = 6;
+
+  private int computeForm(TimeUnit unit, int count, int cv, 
+                          boolean lastOfMultiple) {
+    // first check if a particular form is forced by the countvariant.  if
+    // SO, just return that.  otherwise convert the count to an integer
+    // and use pluralization rules to determine which form to use.
+    // careful, can't assume any forms but plural exist.
+
+    if (trace) {
+      System.err.println("pfd.cf unit: " + unit + " count: " + count + " cv: " + cv + " dr.pl: " + dr.pl);
+      Thread.dumpStack();
+    }
+    if (dr.pl == EPluralization.NONE) {
+      return FORM_PLURAL;
+    }
+    // otherwise, assume we have at least a singular and plural form
+
+    int val = count/1000;
+
+    switch (cv) {
+      case ECountVariant.INTEGER: 
+      case ECountVariant.INTEGER_CUSTOM: {
+        // do more analysis based on floor of count
+      } break;
+      case ECountVariant.HALF_FRACTION: {
+        switch (dr.fractionHandling) {
+          case EFractionHandling.FPLURAL:
+            return FORM_PLURAL;
+
+          case EFractionHandling.FSINGULAR_PLURAL_ANDAHALF:
+          case EFractionHandling.FSINGULAR_PLURAL: {
+            // if half-floor is 1/2, use singular
+            // else if half-floor is not integral, use plural
+            // else do more analysis
+            int v = (int)(count / 500);
+            if (v == 1) {
+              if (dr.halfNames != null && dr.halfNames[unit.ordinal()] != null) {
+                return FORM_HALF_SPELLED;
+              }
+              return FORM_SINGULAR_NO_OMIT;
+            }
+            if ((v & 0x1) == 1) {
+              if (dr.pl == EPluralization.ARABIC && v > 21) { // hack
+                return FORM_SINGULAR_NO_OMIT;
+              }
+              if (v == 3 && dr.pl == EPluralization.PLURAL &&
+                  dr.fractionHandling != EFractionHandling.FSINGULAR_PLURAL_ANDAHALF) {
+                return FORM_PLURAL;
+              }
+            }
+            
+            // it will display like an integer, so do more analysis
+          } break;
+
+          case EFractionHandling.FPAUCAL: {
+            int v = (int)(count / 500);
+            if (v == 1 || v == 3) {
+              return FORM_PAUCAL;
+            }
+            // else use integral form
+          } break;
+
+          default:
+            throw new IllegalStateException();
+        }
+      } break;
+      default: { // for all decimals
+        switch (dr.decimalHandling) {
+          case EDecimalHandling.DPLURAL: break;
+          case EDecimalHandling.DSINGULAR: return FORM_SINGULAR_NO_OMIT;
+          case EDecimalHandling.DSINGULAR_SUBONE:
+            if (count < 1000) {
+              return FORM_SINGULAR_NO_OMIT;
+            }
+            break;
+          case EDecimalHandling.DPAUCAL:
+            if (dr.pl == EPluralization.PAUCAL) {
+              return FORM_PAUCAL;
+            }
+            break;
+          default:
+            break;
+        }
+        return FORM_PLURAL;
+      }
+    }
+
+    // select among pluralization forms
+    if (trace && count == 0) {
+      System.err.println("EZeroHandling = " + dr.zeroHandling);
+    }
+    if (count == 0 && dr.zeroHandling == EZeroHandling.ZSINGULAR) {
+      return FORM_SINGULAR_SPELLED;
+    }
+
+    int form = FORM_PLURAL;
+    switch(dr.pl) {
+      case EPluralization.NONE: break; // never get here
+      case EPluralization.PLURAL: {
+        if (val == 1) { 
+          form = FORM_SINGULAR_SPELLED; // defaults to form_singular if no spelled forms
+        } 
+      } break;
+      case EPluralization.DUAL: {
+        if (val == 2) {
+          form = FORM_DUAL; 
+        } else if (val == 1) {
+          form = FORM_SINGULAR; 
+        } 
+      } break;
+      case EPluralization.PAUCAL: {
+        int v = val;
+        v = v % 100;
+        if (v > 20) {
+          v = v % 10;
+        }
+        if (v == 1) {
+          form = FORM_SINGULAR;
+        } else if (v > 1 && v < 5) {
+          form = FORM_PAUCAL;
+        }
+      } break;
+        /*
+      case EPluralization.RPT_DUAL_FEW: {
+        int v = val;
+        if (v > 20) {
+          v = v % 10;
+        }
+        if (v == 1) {
+          form = FORM_SINGULAR;
+        } else if (v == 2) {
+          form = FORM_DUAL;
+        } else if (v > 2 && v < 5) {
+          form = FORM_PAUCAL;
+        }
+      } break;
+        */
+      case EPluralization.HEBREW: {
+        if (val == 2) {
+          form = FORM_DUAL;
+        } else if (val == 1) {
+          if (lastOfMultiple) {
+            form = FORM_SINGULAR_SPELLED;
+          } else {
+            form = FORM_SINGULAR;
+          } 
+        } else if (unit == TimeUnit.YEAR && val > 11) {
+          form = FORM_SINGULAR_NO_OMIT;
+        }
+      } break;
+      case EPluralization.ARABIC: {
+        if (val == 2) {
+          form = FORM_DUAL;
+        } else if (val == 1) {
+          form = FORM_SINGULAR;
+        } else if (val > 10) {
+          form = FORM_SINGULAR_NO_OMIT;
+        }
+      } break;
+      default: 
+        System.err.println("dr.pl is " + dr.pl);
+        throw new IllegalStateException();
+    }
+
+    return form;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
new file mode 100644
index 0000000..3bb3ff8
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.Collection;
+
+/**
+ * Abstract service for PeriodFormatterData, which defines the
+ * localization data used by period formatters.
+ */
+public abstract class PeriodFormatterDataService {
+  /**
+   * Returns a PeriodFormatterData for the given locale name.
+   *
+   * @param localeName the name of the locale
+   * @return a PeriodFormatterData object
+   */
+  public abstract PeriodFormatterData get(String localeName);
+
+  /**
+   * Returns a collection of all the locale names supported by this
+   * service.
+   *
+   * @return a collection of locale names, as String
+   */
+  public abstract Collection getAvailableLocales();
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/RecordReader.java b/src/com/ibm/icu/impl/duration/impl/RecordReader.java
new file mode 100644
index 0000000..64e3fee
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/RecordReader.java
@@ -0,0 +1,23 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+interface RecordReader {
+  boolean open(String title);
+  boolean close();
+
+  boolean bool(String name);
+  boolean[] boolArray(String name);
+  char character(String name);
+  char[] characterArray(String name);
+  byte namedIndex(String name, String[] names);
+  byte[] namedIndexArray(String name, String[] names);
+  String string(String name);
+  String[] stringArray(String name);
+  String[][] stringTable(String name);
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/RecordWriter.java b/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
new file mode 100644
index 0000000..bb94d76
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
@@ -0,0 +1,23 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+interface RecordWriter {
+  boolean open(String title);
+  boolean close();
+
+  void bool(String name, boolean value);
+  void boolArray(String name, boolean[] values);
+  void character(String name, char value);
+  void characterArray(String name, char[] values);
+  void namedIndex(String name, String[] names, int value);
+  void namedIndexArray(String name, String[] names, byte[] values);
+  void string(String name, String value);
+  void stringArray(String name, String[] values);
+  void stringTable(String name, String[][] values);
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java b/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
new file mode 100644
index 0000000..908e325
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
@@ -0,0 +1,156 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+
+/**
+ * A PeriodFormatterDataService that serves PeriodFormatterData
+ * objects based on data files stored as resources in this directory.
+ * These are text files named after the locale, for example,
+ * 'pfd_he_IL.txt' specifies an period formatter data file for Hebrew
+ * as spoken in Israel.  Data is in a JSON-like format.
+ */
+public class ResourceBasedPeriodFormatterDataService 
+    extends PeriodFormatterDataService {
+  private Collection  availableLocales; // of String
+
+  private PeriodFormatterData lastData = null;
+  private String lastLocale = null;
+  private Map cache = new HashMap(); // String -> PeriodFormatterData
+  //private PeriodFormatterData fallbackFormatterData;
+
+  private static final String PATH = "data/";
+
+  private static final ResourceBasedPeriodFormatterDataService singleton = 
+    new ResourceBasedPeriodFormatterDataService();
+
+  /**
+   * Returns the singleton instance of this class.
+   */
+  public static ResourceBasedPeriodFormatterDataService getInstance() {
+    return singleton;
+  }
+
+  /**
+   * Constructs the service.
+   */
+  private ResourceBasedPeriodFormatterDataService() {
+    List localeNames = new ArrayList(); // of String
+    InputStream is = ICUData.getRequiredStream(getClass(), PATH + "index.txt");
+    try {
+        BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+        String string = null;
+        while (null != (string = br.readLine())) {
+          string = string.trim();
+          if(string.startsWith("#") || string.length()==0) {
+              continue;
+          }
+          localeNames.add(string);
+        }
+    }
+    catch (IOException e) {
+        throw new IllegalStateException("IO Error reading "+PATH + "index.txt: " + e.toString());
+    }
+    availableLocales = Collections.unmodifiableList(localeNames);
+  }
+
+  public PeriodFormatterData get(String localeName) {
+    // remove tag info including calendar, we don't use the calendar
+    int x = localeName.indexOf('@');
+    if (x != -1) {
+      localeName = localeName.substring(0, x);
+    }
+
+    synchronized(this) {
+      if (lastLocale != null && lastLocale.equals(localeName)) {
+        return lastData;
+      }
+
+      PeriodFormatterData ld = (PeriodFormatterData)cache.get(localeName);
+      if (ld == null) {
+        String ln = localeName;
+        while (!availableLocales.contains(ln)) {
+          int ix = ln.lastIndexOf("_");
+          if (ix > -1) {
+            ln = ln.substring(0, ix);
+          } else if (!"test".equals(ln)) {
+            ln = "test";
+          } else {
+            ln = null;
+            break;
+          }
+        }
+        if (ln != null) {
+          String name = PATH + "pfd_" + ln + ".xml";
+          try {
+            InputStream is = ICUData.getStream(getClass(), name);
+            if (is == null) {
+               throw new MissingResourceException("no resource named " + name,name,"");
+            } else {
+              DataRecord dr = DataRecord.read(ln,
+                  new XMLRecordReader(
+                      new InputStreamReader(is, "UTF-8")));
+              if (dr != null) {
+                  // debug
+//                if (false && ln.equals("ar_EG")) {
+//                  OutputStreamWriter osw = new OutputStreamWriter(System.out, "UTF-8");
+//                  XMLRecordWriter xrw = new XMLRecordWriter(osw);
+//                  dr.write(xrw);
+//                  osw.flush();
+//                }
+                ld = new PeriodFormatterData(localeName,dr);
+              }
+            }
+          } 
+          catch (UnsupportedEncodingException e) {
+              throw new MissingResourceException("Unhandled Encoding for resource " + name,name,"");
+          }
+        } else {
+            throw new MissingResourceException("Duration data not found for  " + localeName,PATH,localeName);
+        }
+
+//        if (ld == null) {
+//          ld = getFallbackFormatterData();
+//        }
+        cache.put(localeName, ld);
+      }
+      lastData = ld;
+      lastLocale = localeName;
+
+      return ld;
+    }
+  }
+  
+  public Collection  getAvailableLocales() {
+    return availableLocales;
+  }
+
+//  PeriodFormatterData getFallbackFormatterData() {
+//    synchronized (this) {
+//      if (fallbackFormatterData == null) {
+//        DataRecord dr = new DataRecord(); // hack, no default, will die if used
+//        fallbackFormatterData = new PeriodFormatterData(null, dr);
+//      }
+//      return fallbackFormatterData;
+//    }
+//  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/Utils.java b/src/com/ibm/icu/impl/duration/impl/Utils.java
new file mode 100644
index 0000000..d2ac08a
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/Utils.java
@@ -0,0 +1,224 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.Locale;
+
+public class Utils {
+  public static final Locale localeFromString(String s) {
+    String language = s;
+    String region = "";
+    String variant = "";
+
+    int x = language.indexOf("_");
+    if (x != -1) {
+      region = language.substring(x+1);
+      language = language.substring(0, x);
+    }
+    x = region.indexOf("_");
+    if (x != -1) {
+      variant = region.substring(x+1);
+      region = region.substring(0, x);
+    }
+    return new Locale(language, region, variant);
+  }
+    /*
+  public static <T> T[] arraycopy(T[] src) {
+    T[] result = (T[])Array.newInstance(src.getClass().getComponentType(), src.length); // can we do this without casting?
+    for (int i = 0; i < src.length; ++i) {
+      result[i] = src[i];
+    }
+    return result;
+  }
+    */
+
+  /**
+   * Interesting features of chinese numbers:
+   * - Each digit is followed by a unit symbol (10's, 100's, 1000's).
+   * - Units repeat in levels of 10,000, there are symbols for each level too (except 1's).
+   * - The digit 2 has a special form before the 10 symbol and at the end of the number.
+   * - If the first digit in the number is 1 and its unit is 10, the 1 is omitted.
+   * - Sequences of 0 digits and their units are replaced by a single 0 and no unit.
+   * - If there are two such sequences of 0 digits in a level (1000's and 10's), the 1000's 0 is also omitted.
+   * - The 1000's 0 is also omitted in alternating levels, such that it is omitted in the rightmost
+   *     level with a 10's 0, or if none, in the rightmost level.
+   * - Level symbols are omitted if all of their units are omitted
+   */
+  public static String chineseNumber(long n, ChineseDigits zh) {
+    if (n < 0) {
+      n = -n;
+    }
+    if (n <= 10) {
+      if (n == 2) {
+        return String.valueOf(zh.liang);
+      }
+      return String.valueOf(zh.digits[(int)n]);
+    }
+
+    // 9223372036854775807
+    char[] buf = new char[40]; // as long as we get, and actually we can't get this high, no units past zhao
+    char[] digits = String.valueOf(n).toCharArray();
+
+    // first, generate all the digits in place
+    // convert runs of zeros into a single zero, but keep places
+    // 
+    boolean inZero = true; // true if we should zap zeros in this block, resets at start of block
+    boolean forcedZero = false; // true if we have a 0 in tens's place
+    int x = buf.length;
+    for (int i = digits.length, u = -1, l = -1; --i >= 0;) {
+      if (u == -1) {
+        if (l != -1) {
+          buf[--x] = zh.levels[l];
+          inZero = true;
+          forcedZero = false;
+        }
+        ++u;
+      } else {
+        buf[--x] = zh.units[u++];
+        if (u == 3) {
+          u = -1;
+          ++l;
+        }
+      }
+      int d = digits[i] - '0';
+      if (d == 0) {
+        if (x < buf.length-1 && u != 0) {
+          buf[x] = '*';
+        }
+        if (inZero || forcedZero) {
+          buf[--x] = '*';
+        } else {
+          buf[--x] = zh.digits[0];
+          inZero = true;
+          forcedZero = u == 1;
+        }
+      } else {
+        inZero = false;
+        buf[--x] = zh.digits[d];
+      }
+    }
+
+    // scanning from right, find first required 'ling'
+    // we only care if n > 101,0000 as this is the first case where
+    // it might shift.  remove optional lings in alternating blocks.
+    if (n > 1000000) {
+      boolean last = true;
+      int i = buf.length - 3;
+      do {
+        if (buf[i] == '0') {
+          break;
+        }
+        i -= 8;
+        last = !last;
+      } while (i > x);
+
+      i = buf.length - 7;
+      do {
+        if (buf[i] == zh.digits[0] && !last) {
+          buf[i] = '*';
+        }
+        i -= 8;
+        last = !last;
+      } while (i > x);
+
+      // remove levels for empty blocks
+      if (n >= 100000000) {
+        i = buf.length - 8;
+        do {
+          boolean empty = true;
+          for (int j = i-1, e = Math.max(x-1, i-8); j > e; --j) {
+            if (buf[j] != '*') {
+              empty = false;
+              break;
+            }
+          }
+          if (empty) {
+            if (buf[i+1] != '*' && buf[i+1] != zh.digits[0]) {
+              buf[i] = zh.digits[0];
+            } else {
+              buf[i] = '*';
+            }
+          }
+          i -= 8;
+        } while (i > x);
+      }          
+    }
+
+    // replace er by liang except before or after shi or after ling
+    for (int i = x; i < buf.length; ++i) {
+      if (buf[i] != zh.digits[2]) continue;
+      if (i < buf.length - 1 && buf[i+1] == zh.units[0]) continue;
+      if (i > x && (buf[i-1] == zh.units[0] || buf[i-1] == zh.digits[0] || buf[i-1] == '*')) continue;
+
+      buf[i] = zh.liang;
+    }
+    
+    // eliminate leading 1 if following unit is shi
+    if (buf[x] == zh.digits[1] && (zh.ko || buf[x+1] == zh.units[0])) {
+      ++x;
+    }
+
+    // now, compress out the '*'
+    int w = x;
+    for (int r = x; r < buf.length; ++r) {
+      if (buf[r] != '*') {
+        buf[w++] = buf[r];
+      }
+    }
+    return new String(buf, x, w-x);
+  }
+
+  public static void main(String[] args) {
+    for (int i = 0; i < args.length; ++i) {
+      String arg = args[i];
+      System.out.print(arg);
+      System.out.print(" > ");
+      long n = Long.parseLong(arg);
+      System.out.println(chineseNumber(n, ChineseDigits.DEBUG));
+    }
+  }
+
+  public static class ChineseDigits {
+    final char[] digits;
+    final char[] units;
+    final char[] levels;
+    final char liang;
+    final boolean ko;
+
+    ChineseDigits(String digits, String units, String levels, char liang, boolean ko) {
+      this.digits = digits.toCharArray();
+      this.units = units.toCharArray();
+      this.levels = levels.toCharArray();
+      this.liang = liang;
+      this.ko = ko;
+    }
+
+    public static final ChineseDigits DEBUG = 
+      new ChineseDigits("0123456789s", "sbq", "WYZ", 'L', false);
+
+    public static final ChineseDigits TRADITIONAL = 
+      new ChineseDigits("\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341", // to shi
+                        "\u5341\u767e\u5343", // shi, bai, qian
+                        "\u842c\u5104\u5146", // wan, yi, zhao
+                        '\u5169', false); // liang
+
+    public static final ChineseDigits SIMPLIFIED = 
+      new ChineseDigits("\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341", // to shi
+                        "\u5341\u767e\u5343", // shi, bai, qian
+                        "\u4e07\u4ebf\u5146", // wan, yi, zhao
+                        '\u4e24', false); // liang
+    
+    // no 1 before first unit no matter what it is
+    // not sure if there are 'ling' units
+    public static final ChineseDigits KOREAN =
+      new ChineseDigits("\uc601\uc77c\uc774\uc0bc\uc0ac\uc624\uc721\uce60\ud314\uad6c\uc2ed", // to ten
+                        "\uc2ed\ubc31\ucc9c", // 10, 100, 1000
+                        "\ub9cc\uc5b5?", // 10^4, 10^8, 10^12
+                        '\uc774', true);
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java b/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
new file mode 100644
index 0000000..9b8e77c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
@@ -0,0 +1,306 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+
+public class XMLRecordReader implements RecordReader {
+    private Reader r;
+
+    private List nameStack;
+
+    private boolean atTag;
+
+    private String tag; // cache
+
+    public XMLRecordReader(Reader r) {
+        this.r = r;
+        this.nameStack = new ArrayList();
+
+        // skip XML prologue
+        if (getTag().startsWith("?xml")) {
+            advance();
+        }
+
+        // skip FIRST comment
+        if (getTag().startsWith("!--")) {
+            advance();
+        }
+    }
+
+    public boolean open(String title) {
+        if (getTag().equals(title)) {
+            nameStack.add(title);
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean close() {
+        int ix = nameStack.size() - 1;
+        String name = (String) nameStack.get(ix);
+        if (getTag().equals("/" + name)) {
+            nameStack.remove(ix);
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean bool(String name) {
+        String s = string(name);
+        if (s != null) {
+            return "true".equals(s);
+        }
+        return false;
+    }
+
+    public boolean[] boolArray(String name) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            boolean[] result = new boolean[sa.length];
+            for (int i = 0; i < sa.length; ++i) {
+                result[i] = "true".equals(sa[i]);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public char character(String name) {
+        String s = string(name);
+        if (s != null) {
+            return s.charAt(0);
+        }
+        return '\uffff';
+    }
+
+    public char[] characterArray(String name) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            char[] result = new char[sa.length];
+            for (int i = 0; i < sa.length; ++i) {
+                result[i] = sa[i].charAt(0);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public byte namedIndex(String name, String[] names) {
+        String sa = string(name);
+        if (sa != null) {
+            for (int i = 0; i < names.length; ++i) {
+                if (sa.equals(names[i])) {
+                    return (byte) i;
+                }
+            }
+        }
+        return (byte) -1;
+    }
+
+    public byte[] namedIndexArray(String name, String[] names) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            byte[] result = new byte[sa.length];
+            loop: for (int i = 0; i < sa.length; ++i) {
+                String s = sa[i];
+                for (int j = 0; j < names.length; ++j) {
+                    if (names[j].equals(s)) {
+                        result[i] = (byte) j;
+                        continue loop;
+                    }
+                }
+                result[i] = (byte) -1;
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public String string(String name) {
+        if (match(name)) {
+            String result = readData();
+            if (match("/" + name)) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    public String[] stringArray(String name) {
+        if (match(name + "List")) {
+            List list = new ArrayList();
+            String s;
+            while (null != (s = string(name))) {
+                if ("Null".equals(s)) {
+                    s = null;
+                }
+                list.add(s);
+            }
+            if (match("/" + name + "List")) {
+                return (String[]) list.toArray(new String[list.size()]);
+            }
+        }
+        return null;
+    }
+
+    public String[][] stringTable(String name) {
+        if (match(name + "Table")) {
+            List list = new ArrayList();
+            String[] sa;
+            while (null != (sa = stringArray(name))) {
+                list.add(sa);
+            }
+            if (match("/" + name + "Table")) {
+                return (String[][]) list.toArray(new String[list.size()][]);
+            }
+        }
+        return null;
+    }
+
+    private boolean match(String target) {
+        if (getTag().equals(target)) {
+            // System.out.println("match '" + target + "'");
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    private String getTag() {
+        if (tag == null) {
+            tag = readNextTag();
+        }
+        return tag;
+    }
+
+    private void advance() {
+        tag = null;
+    }
+
+    private String readData() {
+        StringBuffer sb = new StringBuffer();
+        boolean inWhitespace = false;
+        // boolean inAmp = false;
+        while (true) {
+            int c = readChar();
+            if (c == -1 || c == '<') {
+                atTag = c == '<';
+                break;
+            }
+            if (c == '&') {
+                c = readChar();
+                if (c == '#') {
+                    StringBuffer numBuf = new StringBuffer();
+                    int radix = 10;
+                    c = readChar();
+                    if (c == 'x') {
+                        radix = 16;
+                        c = readChar();
+                    }
+                    while (c != ';' && c != -1) {
+                        numBuf.append((char) c);
+                        c = readChar();
+                    }
+                    try {
+                        int num = Integer.parseInt(numBuf.toString(), radix);
+                        c = (char) num;
+                    } catch (NumberFormatException ex) {
+                        System.err.println("numbuf: " + numBuf.toString()
+                                + " radix: " + radix);
+                        throw ex;
+                    }
+                } else {
+                    StringBuffer charBuf = new StringBuffer();
+                    while (c != ';' && c != -1) {
+                        charBuf.append((char) c);
+                        c = readChar();
+                    }
+                    String charName = charBuf.toString();
+                    if (charName.equals("lt")) {
+                        c = '<';
+                    } else if (charName.equals("gt")) {
+                        c = '>';
+                    } else if (charName.equals("quot")) {
+                        c = '"';
+                    } else if (charName.equals("apos")) {
+                        c = '\'';
+                    } else if (charName.equals("amp")) {
+                        c = '&';
+                    } else {
+                        System.err.println("unrecognized character entity: '"
+                                + charName + "'");
+                        continue;
+                    }
+                }
+            }
+
+            if (UCharacter.isWhitespace(c)) {
+                if (inWhitespace) {
+                    continue;
+                }
+                c = ' ';
+                inWhitespace = true;
+            } else {
+                inWhitespace = false;
+            }
+            sb.append((char) c);
+        }
+        //System.err.println("read data: '" + sb.toString() + "'");
+        return sb.toString();
+    }
+
+    private String readNextTag() {
+        int c = '\0';
+        while (!atTag) {
+            c = readChar();
+            if (c == '<' || c == -1) {
+                if (c == '<') {
+                    atTag = true;
+                }
+                break;
+            }
+            if (!UCharacter.isWhitespace(c)) {
+                System.err.println("Unexpected non-whitespace character "
+                        + Integer.toHexString(c));
+                break;
+            }
+        }
+
+        if (atTag) {
+            atTag = false;
+            StringBuffer sb = new StringBuffer();
+            while (true) {
+                c = readChar();
+                if (c == '>' || c == -1) {
+                    break;
+                }
+                sb.append((char) c);
+            }
+            // System.err.println("read tag: '" + sb.toString() + "'");
+            return sb.toString();
+        }
+        return null;
+    }
+
+    int readChar() {
+        try {
+            return r.read();
+        } catch (IOException e) {
+            // assume end of input
+        }
+        return -1;
+    }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java b/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
new file mode 100644
index 0000000..02f3800
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
@@ -0,0 +1,259 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+
+public class XMLRecordWriter implements RecordWriter {
+  private Writer w;
+  private List nameStack;
+
+  public XMLRecordWriter(Writer w) {
+    this.w = w;
+    this.nameStack = new ArrayList();
+  }
+
+  public boolean open(String title) {
+    newline();
+    writeString("<" + title + ">");
+    nameStack.add(title);
+    return true;
+  }
+
+  public boolean close() {
+    int ix = nameStack.size() - 1;
+    if (ix >= 0) {
+      String name = (String) nameStack.remove(ix);
+      newline();
+      writeString("</" + name + ">");
+      return true;
+    }
+    return false;
+  }
+
+  public void flush() {
+    try {
+      w.flush();
+    }
+    catch (IOException e) {
+    }
+  }
+
+  public void bool(String name, boolean value) {
+    internalString(name, String.valueOf(value));
+  }
+
+  public void boolArray(String name, boolean[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        stringValues[i] = String.valueOf(values[i]);
+      }
+      stringArray(name, stringValues);
+    }
+  }
+
+  private static String ctos(char value) {
+    if (value == '<') {
+      return "&lt;";
+    }
+    if (value == '&') {
+      return "&amp;";
+    }
+    return String.valueOf(value);
+  }
+
+  public void character(String name, char value) {
+    if (value != '\uffff') {
+      internalString(name, ctos(value));
+    }
+  }
+
+  public void characterArray(String name, char[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        char value = values[i];
+        if (value == '\uffff') {
+          stringValues[i] = NULL_NAME;
+        } else {
+          stringValues[i] = ctos(value);
+        }
+      }
+      internalStringArray(name, stringValues);
+    }
+  }
+
+  public void namedIndex(String name, String[] names, int value) {
+    if (value >= 0) {
+      internalString(name, names[value]);
+    }
+  }
+
+  public void namedIndexArray(String name, String[] names, byte[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        int value = values[i];
+        if (value < 0) {
+          stringValues[i] = NULL_NAME;
+        } else {
+          stringValues[i] = names[value];
+        }
+      }
+      internalStringArray(name, stringValues);
+    }
+  }
+
+  public static String normalize(String str) {
+    if (str == null) {
+      return null;
+    }
+    StringBuffer sb = null;
+    boolean inWhitespace = false;
+    char c = '\0';
+    boolean special = false;
+    for (int i = 0; i < str.length(); ++i) {
+      c = str.charAt(i);
+      if (UCharacter.isWhitespace(c)) {
+        if (sb == null && (inWhitespace || c != ' ')) {
+          sb = new StringBuffer(str.substring(0, i));
+        }
+        if (inWhitespace) {
+          continue;
+        }
+        inWhitespace = true;
+        special = false;
+        c = ' ';
+      } else {
+        inWhitespace = false;
+        special = c == '<' || c == '&';
+        if (special && sb == null) {
+          sb = new StringBuffer(str.substring(0, i));
+        }
+      }
+      if (sb != null) {
+        if (special) {
+          sb.append(c == '<' ? "&lt;" : "&amp;");
+        } else {
+          sb.append(c);
+        }
+      }
+    }
+    if (sb != null) {
+      /*
+      if (c == ' ') {
+        int len = sb.length();
+        if (len == 0) {
+          return " ";
+        }
+        if (len > 1 && c == ' ') {
+          sb.deleteCharAt(len - 1);
+        }
+      }
+      */
+      return sb.toString();
+    }
+    return str;
+  }
+
+  private void internalString(String name, String normalizedValue) {
+    if (normalizedValue != null) {
+      newline();
+      writeString("<" + name + ">" + normalizedValue + "</" + name + ">");
+    }
+  }
+
+  private void internalStringArray(String name, String[] normalizedValues) {
+    if (normalizedValues != null) {
+      push(name + "List");
+      for (int i = 0; i < normalizedValues.length; ++i) {
+        String value = normalizedValues[i];
+        if (value == null) {
+          value = NULL_NAME;
+        }
+        string(name, value);
+      }
+      pop();
+    }
+  }
+    
+  public void string(String name, String value) {
+    internalString(name, normalize(value));
+  }
+
+  public void stringArray(String name, String[] values) {
+    if (values != null) {
+      push(name + "List");
+      for (int i = 0; i < values.length; ++i) {
+        String value = normalize(values[i]);
+        if (value == null) {
+          value = NULL_NAME;
+        }
+        internalString(name, value);
+      }
+      pop();
+    }
+  }
+
+  public void stringTable(String name, String[][] values) {
+    if (values != null) {
+      push(name + "Table");
+      for (int i = 0; i < values.length; ++i) {
+        String[] rowValues = values[i];
+        if (rowValues == null) {
+          internalString(name + "List", NULL_NAME);
+        } else {
+          stringArray(name, rowValues);
+        }
+      }
+      pop();
+    }
+  }
+
+  private void push(String name) {
+    newline();
+    writeString("<" + name + ">");
+    nameStack.add(name);
+  }
+
+  private void pop() {
+    int ix = nameStack.size() - 1;
+    String name = (String) nameStack.remove(ix);
+    newline();
+    writeString("</" + name + ">");
+  }
+
+  private void newline() {
+      writeString("\n");
+      for (int i = 0; i < nameStack.size(); ++i) {
+        writeString(INDENT);
+      }
+  }
+
+  private void writeString(String str) {
+    if (w != null) {
+      try {
+        w.write(str);
+      }
+      catch (IOException e) {
+        // if there's a problem, record it and stop writing
+        System.err.println(e.getMessage());
+        w = null;
+      }
+    }
+  }
+
+  static final String NULL_NAME = "Null";
+  private static final String INDENT = "    ";
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java b/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java
new file mode 100644
index 0000000..6845e17
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java
@@ -0,0 +1,98 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import  com.ibm.icu.impl.duration.DateFormatter;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * A DateFormatter that formats the requested date fields.
+ */
+public class YMDDateFormatter implements DateFormatter {
+  private String requestedFields;
+  private String localeName;
+  private TimeZone timeZone;
+  private SimpleDateFormat df; // cache
+
+  /**
+   * Creates a new formatter that formats the requested 
+   * fields.  The formatter defaults to the current locale
+   * and time zone.
+   *
+   * @param requestedFields the requested fields
+   */
+  public YMDDateFormatter(String requestedFields) {
+    this(requestedFields, Locale.getDefault().toString(),
+         TimeZone.getDefault());
+  }
+
+  /**
+   * Creates a new formatter that formats the requested 
+   * fields using the provided locale and time zone.
+   *
+   * @param requestedFields the requested fields
+   * @param localeName the locale to use
+   * @param timeZone the time zone to use
+   */
+  public YMDDateFormatter(String requestedFields, String localeName, 
+                             TimeZone timeZone) {
+    this.requestedFields = requestedFields;
+    this.localeName = localeName;
+    this.timeZone = timeZone;
+
+    Locale locale = Utils.localeFromString(localeName);
+    this.df = new SimpleDateFormat("yyyy/mm/dd", locale);
+    this.df.setTimeZone(timeZone);
+  }
+
+  /**
+   * Returns a string representing the formatted date.
+   * @param date the date in milliseconds
+   */
+  public String format(long date) {
+    return format(new Date(date));
+  }
+
+  /**
+   * Returns a string representing the formatted date.
+   * @param date the date
+   */
+  public String format(Date date) {
+    synchronized (this) {
+      if (df == null) {
+        // ignores requested fields
+        // todo: make this really work
+      }
+    }
+    return df.format(date);
+  }
+
+  /**
+   * Returns a version of this formatter customized to the provided locale.
+   */
+  public DateFormatter withLocale(String locName) {
+    if (!locName.equals(localeName)) {
+      return new YMDDateFormatter(requestedFields, locName, timeZone);
+    }
+    return this;
+  }
+
+  /**
+   * Returns a version of this formatter customized to the provided time zone.
+   */
+  public DateFormatter withTimeZone(TimeZone tz) {
+    if (!tz.equals(timeZone)) {
+      return new YMDDateFormatter(requestedFields, localeName, tz);
+    }
+    return this;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/data/index.txt b/src/com/ibm/icu/impl/duration/impl/data/index.txt
new file mode 100644
index 0000000..6a0b83c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/index.txt
@@ -0,0 +1,19 @@
+#******************************************************************************
+#* Copyright (C) 2007, International Business Machines Corporation and        *
+#* others. All Rights Reserved.                                               *
+#******************************************************************************
+ar_EG
+en
+es
+fr
+he_IL
+hi
+it
+ja
+ko
+ru
+th
+zh_Hans
+zh_Hans_SG
+zh_Hant
+zh_Hant_HK
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
new file mode 100644
index 0000000..a177781
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>ARABIC</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>&#x0633;&#x0646;&#x0648;&#x0627;&#x062a;</pluralName>
+            <pluralName>&#x0633;&#x0646;&#x0629;</pluralName>
+            <pluralName>&#x0633;&#x0646;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0634;&#x0647;&#x0648;&#x0631;</pluralName>
+            <pluralName>&#x0634;&#x0647;&#x0631;</pluralName>
+            <pluralName>&#x0634;&#x0647;&#x0631;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x0633;&#x0627;&#x0628;&#x064a;&#x0639;</pluralName>
+            <pluralName>&#x0623;&#x0633;&#x0628;&#x0648;&#x0639;</pluralName>
+            <pluralName>&#x0623;&#x0633;&#x0628;&#x0648;&#x0639;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x064a;&#x0627;&#x0645;</pluralName>
+            <pluralName>&#x064a;&#x0648;&#x0645;</pluralName>
+            <pluralName>&#x064a;&#x0648;&#x0645;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x0627;&#x062a;</pluralName>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x0629;</pluralName>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x062f;&#x0642;&#x0627;&#x0626;&#x0642;</pluralName>
+            <pluralName>&#x062f;&#x0642;&#x064a;&#x0642;&#x0629;</pluralName>
+            <pluralName>&#x062f;&#x0642;&#x064a;&#x0642;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x062b;&#x0648;&#x0627;&#x0646;&#x064a;</pluralName>
+            <pluralName>&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062b;&#x0627;&#x0646;&#x064a;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x062c;&#x0632;&#x0627;&#x0621; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062c;&#x0632;&#x0621; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062c;&#x0632;&#x0626;&#x064a;&#x0646; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>&#x0646;&#x0635;&#x0641;</halves>
+        <halves> &#x0648;&#x0646;&#x0635;&#x0641;</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep> &#x0648;</unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>&#x0660;</zero>
+    <decimalSep>&#x066b;</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; &#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; &#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
new file mode 100644
index 0000000..80c284a
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>ARABIC</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>\u0633\u0646\u0648\u0627\u062a</pluralName>
+            <pluralName>\u0633\u0646\u0629</pluralName>
+            <pluralName>\u0633\u0646\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0634\u0647\u0648\u0631</pluralName>
+            <pluralName>\u0634\u0647\u0631</pluralName>
+            <pluralName>\u0634\u0647\u0631\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u0633\u0627\u0628\u064a\u0639</pluralName>
+            <pluralName>\u0623\u0633\u0628\u0648\u0639</pluralName>
+            <pluralName>\u0623\u0633\u0628\u0648\u0639\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u064a\u0627\u0645</pluralName>
+            <pluralName>\u064a\u0648\u0645</pluralName>
+            <pluralName>\u064a\u0648\u0645\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0633\u0627\u0639\u0627\u062a</pluralName>
+            <pluralName>\u0633\u0627\u0639\u0629</pluralName>
+            <pluralName>\u0633\u0627\u0639\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u062f\u0642\u0627\u0626\u0642</pluralName>
+            <pluralName>\u062f\u0642\u064a\u0642\u0629</pluralName>
+            <pluralName>\u062f\u0642\u064a\u0642\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u062b\u0648\u0627\u0646\u064a</pluralName>
+            <pluralName>\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062b\u0627\u0646\u064a\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u062c\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062c\u0632\u0621 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062c\u0632\u0626\u064a\u0646 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>\u0646\u0635\u0641</halves>
+        <halves> \u0648\u0646\u0635\u0641</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep> \u0648</unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>\u0660</zero>
+    <decimalSep>\u066b</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 \u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 \u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
new file mode 100644
index 0000000..5ac58d6
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>years</pluralName>
+            <pluralName>year</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>months</pluralName>
+            <pluralName>month</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>weeks</pluralName>
+            <pluralName>week</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>days</pluralName>
+            <pluralName>day</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>hours</pluralName>
+            <pluralName>hour</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutes</pluralName>
+            <pluralName>minute</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>seconds</pluralName>
+            <pluralName>second</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>milliseconds</pluralName>
+            <pluralName>millisecond</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>yr</mediumName>
+        <mediumName>mnth</mediumName>
+        <mediumName>wk</mediumName>
+        <mediumName>dy</mediumName>
+        <mediumName>hr</mediumName>
+        <mediumName>min</mediumName>
+        <mediumName>sec</mediumName>
+        <mediumName>ms</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>y</shortName>
+        <shortName>m</shortName>
+        <shortName>w</shortName>
+        <shortName>d</shortName>
+        <shortName>h</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>x</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep>, and </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> and </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
new file mode 100644
index 0000000..a8f99f4
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>años</pluralName>
+            <pluralName>año</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>meses</pluralName>
+            <pluralName>mes</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>semanas</pluralName>
+            <pluralName>semana</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>días</pluralName>
+            <pluralName>día</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>horas</pluralName>
+            <pluralName>hora</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutos</pluralName>
+            <pluralName>minuto</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>segundos</pluralName>
+            <pluralName>segundo</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>milisegundos</pluralName>
+            <pluralName>milisegundo</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <genderList>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+    </genderList>
+    <singularNameList>
+        <singularName>un año</singularName>
+        <singularName>un mes</singularName>
+        <singularName>una semana</singularName>
+        <singularName>un día</singularName>
+        <singularName>una hora</singularName>
+        <singularName>un minuto</singularName>
+        <singularName>un segundo</singularName>
+        <singularName>un milisegundo</singularName>
+    </singularNameList>
+    <mediumNameList>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>d</mediumName>
+        <mediumName>hr</mediumName>
+        <mediumName>min</mediumName>
+        <mediumName>seg</mediumName>
+        <mediumName>mseg</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>a</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>d</shortName>
+        <shortName>h</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>ms</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>medio </halves>
+        <halves> y medio</halves>
+        <halves>media </halves>
+        <halves> y media</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> y </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> y </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>,</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL_ANDAHALF</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro de menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
new file mode 100644
index 0000000..f8d6165
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>ans</pluralName>
+            <pluralName>an</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>mois</pluralName>
+            <pluralName>mois</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>semaines</pluralName>
+            <pluralName>semaine</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>jours</pluralName>
+            <pluralName>jour</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>heures</pluralName>
+            <pluralName>heure</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutes</pluralName>
+            <pluralName>minute</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>secondes</pluralName>
+            <pluralName>seconde</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>millisecondes</pluralName>
+            <pluralName>milliseconde</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> et </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> et </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <zeroHandling>ZSINGULAR</zeroHandling>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
new file mode 100644
index 0000000..1fd20fe
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>HEBREW</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>שנים</pluralName>
+            <pluralName>שנה</pluralName>
+            <pluralName>שנתיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>חודשים</pluralName>
+            <pluralName>חודש</pluralName>
+            <pluralName>חודשיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שבועות</pluralName>
+            <pluralName>שבוע</pluralName>
+            <pluralName>שבועיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ימים</pluralName>
+            <pluralName>יום</pluralName>
+            <pluralName>יומיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שעות</pluralName>
+            <pluralName>שעה</pluralName>
+            <pluralName>שעתיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>דקות</pluralName>
+            <pluralName>דקה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שניות</pluralName>
+            <pluralName>שנייה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>מילישניות</pluralName>
+            <pluralName>מילישניה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <singularNameList>
+        <singularName>שנה אחת</singularName>
+        <singularName>חודש אחד</singularName>
+        <singularName>שבוע אחד</singularName>
+        <singularName>יום אחד</singularName>
+        <singularName>שעה אחת</singularName>
+        <singularName>דקה אחת</singularName>
+        <singularName>שנייה אחת</singularName>
+        <singularName>מילישניה אחת</singularName>
+    </singularNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <digitPrefix>־</digitPrefix>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> ו</unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> ו</unitSep>
+    </unitSepList>
+    <unitSepRequiresDPList>
+        <unitSepRequiresDP>false</unitSepRequiresDP>
+        <unitSepRequiresDP>true</unitSepRequiresDP>
+        <unitSepRequiresDP>false</unitSepRequiresDP>
+        <unitSepRequiresDP>true</unitSepRequiresDP>
+    </unitSepRequiresDPList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR_SUBONE</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
new file mode 100644
index 0000000..e2668fa
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>साल</pluralName>
+            <pluralName>साल</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>महीने</pluralName>
+            <pluralName>महीना</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>सप्ताह</pluralName>
+            <pluralName>सप्ताह</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>दिन</pluralName>
+            <pluralName>दिन</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>घंटे</pluralName>
+            <pluralName>घंटा</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>मिनट</pluralName>
+            <pluralName>मिनट</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>सेकण्ड</pluralName>
+            <pluralName>सेकण्ड</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>मिली सेकण्ड</pluralName>
+            <pluralName>मिली सेकण्ड</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> और </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> और </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>०</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FPLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> पहले</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>अभी से </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> बाद</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम पहले</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा from now</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
new file mode 100644
index 0000000..e16398f
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>anni</pluralName>
+            <pluralName>anno</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>mesi</pluralName>
+            <pluralName>mese</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>settimane</pluralName>
+            <pluralName>settimana</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>giorni</pluralName>
+            <pluralName>giorno</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ore</pluralName>
+            <pluralName>ora</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minuti</pluralName>
+            <pluralName>minuto</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>secondi</pluralName>
+            <pluralName>secondo</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>millisecondi</pluralName>
+            <pluralName>millisecondo</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <genderList>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+    </genderList>
+    <singularNameList>
+        <singularName>un anno</singularName>
+        <singularName>un mese</singularName>
+        <singularName>una settimana</singularName>
+        <singularName>un giorno</singularName>
+        <singularName>un'ora</singularName>
+        <singularName>un minuto</singularName>
+        <singularName>un secondo</singularName>
+        <singularName>un millisecondo</singularName>
+    </singularNameList>
+    <halfNameList>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>mezz'ora</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+    </halfNameList>
+    <numberNameList>
+        <numberName>zero</numberName>
+        <numberName>Null</numberName>
+        <numberName>due</numberName>
+        <numberName>tre</numberName>
+        <numberName>quattro</numberName>
+        <numberName>cinque</numberName>
+        <numberName>sei</numberName>
+        <numberName>sette</numberName>
+        <numberName>otto</numberName>
+        <numberName>nove</numberName>
+        <numberName>dieci</numberName>
+    </numberNameList>
+    <mediumNameList>
+        <mediumName>ann.</mediumName>
+        <mediumName>mes.</mediumName>
+        <mediumName>sett.</mediumName>
+        <mediumName>gg.</mediumName>
+        <mediumName>or.</mediumName>
+        <mediumName>min.</mediumName>
+        <mediumName>sec.</mediumName>
+        <mediumName>msec.</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>A</shortName>
+        <shortName>M</shortName>
+        <shortName>S</shortName>
+        <shortName>G</shortName>
+        <shortName>H</shortName>
+        <shortName>M</shortName>
+        <shortName>S</shortName>
+        <shortName>Null</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>mezzo </halves>
+        <halves> e mezzo</halves>
+        <halves>mezza </halves>
+        <halves> e mezza</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> e </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> e </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL_ANDAHALF</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
new file mode 100644
index 0000000..dd887e0
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週間</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>日</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>時間</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ミリ秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>か</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <halfSupportList>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>ONE_PLUS</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+    </halfSupportList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <requiresSkipMarkerList>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>true</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+    </requiresSkipMarkerList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <skippedUnitMarker>と</skippedUnitMarker>
+    <allowZero>false</allowZero>
+    <weeksAloneOnly>true</weeksAloneOnly>
+    <useMilliseconds>WITH_SECONDS</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>過去</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
new file mode 100644
index 0000000..cdc7a42
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>년</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>개월</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>주</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>일</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>시간</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>분</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>초</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>밀리세컨드</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <unitSepList>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
new file mode 100644
index 0000000..57e375b
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PAUCAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>лет</pluralName>
+            <pluralName>год</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>года</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>месяцев</pluralName>
+            <pluralName>месяц</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>месяца</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>недель</pluralName>
+            <pluralName>неделя</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>недели</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>дней</pluralName>
+            <pluralName>день</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>дня</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>часов</pluralName>
+            <pluralName>час</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>часа</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>минут</pluralName>
+            <pluralName>минута</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>минуты</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>секунд</pluralName>
+            <pluralName>секунда</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>секунды</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>миллисекунд</pluralName>
+            <pluralName>миллисекунда</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>миллисекунды</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>г</mediumName>
+        <mediumName>мес</mediumName>
+        <mediumName>нед</mediumName>
+        <mediumName>дн</mediumName>
+        <mediumName>ч</mediumName>
+        <mediumName>мин</mediumName>
+        <mediumName>с</mediumName>
+        <mediumName>мс</mediumName>
+        <mediumName>мкс</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>г</shortName>
+        <shortName>m</shortName>
+        <shortName>н</shortName>
+        <shortName>д</shortName>
+        <shortName>ч</shortName>
+        <shortName>м</shortName>
+        <shortName>с</shortName>
+        <shortName>x</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> и </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> и </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPAUCAL</decimalHandling>
+    <fractionHandling>FPAUCAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>меньше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>меньше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>больше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>больше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
new file mode 100644
index 0000000..bedc880
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>ปี</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>เดือน</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>อาทิตย์</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>วัน</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ชั่วโมง</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>นาที</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>วินาที</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>มิลลิวินาที</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>ชม.</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+    </mediumNameList>
+    <halvesList>
+        <halves>ครึ่ง</halves>
+        <halves>ครึ่ง</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <halfSupportList>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+        <halfSupport>NO</halfSupport>
+    </halfSupportList>
+    <requiresDigitSeparator>true</requiresDigitSeparator>
+    <digitPrefix></digitPrefix>
+    <countSep></countSep>
+    <shortUnitSep></shortUnitSep>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FPLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>NO</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>อีก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>น้อยกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>น้อยกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>ไม่ถึงอีก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>มากกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>มากกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>อีัก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>กว่าๆ</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
new file mode 100644
index 0000000..3927c0c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>周</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小时</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>钟</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fifteenMinutes>刻</fifteenMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_SIMPLIFIED</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
new file mode 100644
index 0000000..679203d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>周</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小时</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>钟</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fiveMinutes>字</fiveMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_SIMPLIFIED</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
new file mode 100644
index 0000000..73ac14f
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小時</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>鐘</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>鐘</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>鐘</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fifteenMinutes>刻</fifteenMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_TRADITIONAL</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
new file mode 100644
index 0000000..320d27f
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小時</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>鐘</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>少於</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以內</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>即時起</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以內</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>即時起</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UCharacter.java b/src/com/ibm/icu/lang/UCharacter.java
new file mode 100644
index 0000000..5d7d893
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacter.java
@@ -0,0 +1,6579 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterUtility;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterNameChoice;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.lang.UCharacterEnums.*;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * <p>
+ * The UCharacter class provides extensions to the 
+ * <a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/Character.html">
+ * java.lang.Character</a> class. These extensions provide support for 
+ * more Unicode properties and together with the <a href=../text/UTF16.html>UTF16</a> 
+ * class, provide support for supplementary characters (those with code 
+ * points above U+FFFF).
+ * Each ICU release supports the latest version of Unicode available at that time.
+ * </p>
+ * <p>
+ * Code points are represented in these API using ints. While it would be 
+ * more convenient in Java to have a separate primitive datatype for them, 
+ * ints suffice in the meantime.
+ * </p>
+ * <p>
+ * To use this class please add the jar file name icu4j.jar to the 
+ * class path, since it contains data files which supply the information used 
+ * by this file.<br>
+ * E.g. In Windows <br>
+ * <code>set CLASSPATH=%CLASSPATH%;$JAR_FILE_PATH/ucharacter.jar</code>.<br>
+ * Otherwise, another method would be to copy the files uprops.dat and 
+ * unames.icu from the icu4j source subdirectory
+ * <i>$ICU4J_SRC/src/com.ibm.icu.impl.data</i> to your class directory 
+ * <i>$ICU4J_CLASS/com.ibm.icu.impl.data</i>.
+ * </p>
+ * <p>
+ * Aside from the additions for UTF-16 support, and the updated Unicode
+ * properties, the main differences between UCharacter and Character are:
+ * <ul>
+ * <li> UCharacter is not designed to be a char wrapper and does not have 
+ *      APIs to which involves management of that single char.<br>
+ *      These include: 
+ *      <ul>
+ *        <li> char charValue(), 
+ *        <li> int compareTo(java.lang.Character, java.lang.Character), etc.
+ *      </ul>
+ * <li> UCharacter does not include Character APIs that are deprecated, nor
+ *      does it include the Java-specific character information, such as 
+ *      boolean isJavaIdentifierPart(char ch).
+ * <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric 
+ *      values '10' - '35'. UCharacter also does this in digit and
+ *      getNumericValue, to adhere to the java semantics of these
+ *      methods.  New methods unicodeDigit, and
+ *      getUnicodeNumericValue do not treat the above code points 
+ *      as having numeric values.  This is a semantic change from ICU4J 1.3.1.
+ * </ul>
+ * <p>
+ * Further detail differences can be determined from the program 
+ *        <a href="http://source.icu-project.org/repos/icu/icu4j/trunk/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java">
+ *        com.ibm.icu.dev.test.lang.UCharacterCompare</a>
+ * </p>
+ * <p>
+ * In addition to Java compatibility functions, which calculate derived properties,
+ * this API provides low-level access to the Unicode Character Database.
+ * </p>
+ * <p>
+ * Unicode assigns each code point (not just assigned character) values for
+ * many properties.
+ * Most of them are simple boolean flags, or constants from a small enumerated list.
+ * For some properties, values are strings or other relatively more complex types.
+ * </p>
+ * <p>
+ * For more information see
+ * "About the Unicode Character Database" (http://www.unicode.org/ucd/)
+ * and the ICU User Guide chapter on Properties (http://www.icu-project.org/userguide/properties.html).
+ * </p>
+ * <p>
+ * There are also functions that provide easy migration from C/POSIX functions
+ * like isblank(). Their use is generally discouraged because the C/POSIX
+ * standards do not define their semantics beyond the ASCII range, which means
+ * that different implementations exhibit very different behavior.
+ * Instead, Unicode properties should be used directly.
+ * </p>
+ * <p>
+ * There are also only a few, broad C/POSIX character classes, and they tend
+ * to be used for conflicting purposes. For example, the "isalpha()" class
+ * is sometimes used to determine word boundaries, while a more sophisticated
+ * approach would at least distinguish initial letters from continuation
+ * characters (the latter including combining marks).
+ * (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
+ * Another example: There is no "istitle()" class for titlecase characters.
+ * </p>
+ * <p>
+ * ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
+ * ICU implements them according to the Standard Recommendations in
+ * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
+ * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
+ * </p>
+ * <p>
+ * API access for C/POSIX character classes is as follows:
+ * - alpha:     isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
+ * - lower:     isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
+ * - upper:     isUUppercase(c) or hasBinaryProperty(c, UProperty.UPPERCASE)
+ * - punct:     ((1<<getType(c)) & ((1<<DASH_PUNCTUATION)|(1<<START_PUNCTUATION)|(1<<END_PUNCTUATION)|(1<<CONNECTOR_PUNCTUATION)|(1<<OTHER_PUNCTUATION)|(1<<INITIAL_PUNCTUATION)|(1<<FINAL_PUNCTUATION)))!=0
+ * - digit:     isDigit(c) or getType(c)==DECIMAL_DIGIT_NUMBER
+ * - xdigit:    hasBinaryProperty(c, UProperty.POSIX_XDIGIT)
+ * - alnum:     hasBinaryProperty(c, UProperty.POSIX_ALNUM)
+ * - space:     isUWhiteSpace(c) or hasBinaryProperty(c, UProperty.WHITE_SPACE)
+ * - blank:     hasBinaryProperty(c, UProperty.POSIX_BLANK)
+ * - cntrl:     getType(c)==CONTROL
+ * - graph:     hasBinaryProperty(c, UProperty.POSIX_GRAPH)
+ * - print:     hasBinaryProperty(c, UProperty.POSIX_PRINT)
+ * </p>
+ * <p>
+ * The C/POSIX character classes are also available in UnicodeSet patterns,
+ * using patterns like [:graph:] or \p{graph}.
+ * </p>
+ * <p>
+ * Note: There are several ICU (and Java) whitespace functions.
+ * Comparison:
+ * - isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
+ *       most of general categories "Z" (separators) + most whitespace ISO controls
+ *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
+ * - isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
+ * - isSpaceChar: just Z (including no-break spaces)
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ * @see com.ibm.icu.lang.UCharacterEnums
+ */
+
+public final class UCharacter implements ECharacterCategory, ECharacterDirection
+{ 
+    // public inner classes ----------------------------------------------
+      
+    /**
+     * A family of character subsets representing the character blocks in the 
+     * Unicode specification, generated from Unicode Data file Blocks.txt. 
+     * Character blocks generally define characters used for a specific script 
+     * or purpose. A character is contained by at most one Unicode block. 
+     * @stable ICU 2.4
+     */
+    public static final class UnicodeBlock extends Character.Subset 
+    {
+        // block id corresponding to icu4c -----------------------------------
+        
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int INVALID_CODE_ID = -1;                          
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final int BASIC_LATIN_ID = 1;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_1_SUPPLEMENT_ID = 2;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_A_ID = 3;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_B_ID = 4;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int IPA_EXTENSIONS_ID = 5;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SPACING_MODIFIER_LETTERS_ID = 6;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COMBINING_DIACRITICAL_MARKS_ID = 7;
+        /**
+         * Unicode 3.2 renames this block to "Greek and Coptic".
+         * @stable ICU 2.4
+         */
+        public static final int GREEK_ID = 8;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CYRILLIC_ID = 9;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARMENIAN_ID = 10;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HEBREW_ID = 11;  
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_ID = 12;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SYRIAC_ID = 13;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int THAANA_ID = 14;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DEVANAGARI_ID = 15;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BENGALI_ID = 16;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GURMUKHI_ID = 17;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GUJARATI_ID = 18;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ORIYA_ID = 19;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAMIL_ID = 20;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TELUGU_ID = 21;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANNADA_ID = 22;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MALAYALAM_ID = 23;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SINHALA_ID = 24;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int THAI_ID = 25;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LAO_ID = 26;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TIBETAN_ID = 27;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MYANMAR_ID = 28;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GEORGIAN_ID = 29;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_JAMO_ID = 30;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ETHIOPIC_ID = 31;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CHEROKEE_ID = 32;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OGHAM_ID = 34;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int RUNIC_ID = 35;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KHMER_ID = 36;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MONGOLIAN_ID = 37;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GREEK_EXTENDED_ID = 39;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GENERAL_PUNCTUATION_ID = 40;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CURRENCY_SYMBOLS_ID = 42;
+        /**
+         * Unicode 3.2 renames this block to "Combining Diacritical Marks for 
+         * Symbols".
+         * @stable ICU 2.4
+         */
+        public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LETTERLIKE_SYMBOLS_ID = 44;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int NUMBER_FORMS_ID = 45;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARROWS_ID = 46;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MATHEMATICAL_OPERATORS_ID = 47;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_TECHNICAL_ID = 48;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CONTROL_PICTURES_ID = 49;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ENCLOSED_ALPHANUMERICS_ID = 51;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOX_DRAWING_ID = 52;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BLOCK_ELEMENTS_ID = 53;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GEOMETRIC_SHAPES_ID = 54;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_SYMBOLS_ID = 55;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DINGBATS_ID = 56;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BRAILLE_PATTERNS_ID = 57;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_RADICALS_SUPPLEMENT_ID = 58;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANGXI_RADICALS_ID = 59;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIRAGANA_ID = 62;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KATAKANA_ID = 63;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOPOMOFO_ID = 64;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANBUN_ID = 66;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOPOMOFO_EXTENDED_ID = 67;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_ID = 69;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int YI_SYLLABLES_ID = 72;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int YI_RADICALS_ID = 73;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_SYLLABLES_ID = 74;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIGH_SURROGATES_ID = 75;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LOW_SURROGATES_ID = 77;
+        /**
+         * Same as public static final int PRIVATE_USE.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final int PRIVATE_USE_AREA_ID = 78;
+        /**
+         * Same as public static final int PRIVATE_USE_AREA.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final int PRIVATE_USE_ID = PRIVATE_USE_AREA_ID;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COMBINING_HALF_MARKS_ID = 82;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_FORMS_ID = 83;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SMALL_FORM_VARIANTS_ID = 84;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SPECIALS_ID = 86;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OLD_ITALIC_ID = 88;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GOTHIC_ID = 89;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DESERET_ID = 90;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MUSICAL_SYMBOLS_ID = 92;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGS_ID = 96;
+    
+        // New blocks in Unicode 3.2
+    
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 2.4 
+         */
+        public static final int CYRILLIC_SUPPLEMENTARY_ID = 97;
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 3.0
+         */
+
+        public static final int CYRILLIC_SUPPLEMENT_ID = 97;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGALOG_ID = 98;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANUNOO_ID = 99;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BUHID_ID = 100;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGBANWA_ID = 101;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_ARROWS_A_ID = 103;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_ARROWS_B_ID = 104;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int VARIATION_SELECTORS_ID = 108;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110;
+        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int LIMBU_ID = 111; /*[1900]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int TAI_LE_ID = 112; /*[1950]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int KHMER_SYMBOLS_ID = 113; /*[19E0]*/
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final int PHONETIC_EXTENSIONS_ID = 114; /*[1D00]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; /*[2B00]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; /*[4DC0]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int LINEAR_B_SYLLABARY_ID = 117; /*[10000]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int LINEAR_B_IDEOGRAMS_ID = 118; /*[10080]*/
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final int AEGEAN_NUMBERS_ID = 119; /*[10100]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int UGARITIC_ID = 120; /*[10380]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int SHAVIAN_ID = 121; /*[10450]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int OSMANYA_ID = 122; /*[10480]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int CYPRIOT_SYLLABARY_ID = 123; /*[10800]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; /*[1D300]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; /*[E0100]*/
+
+        /* New blocks in Unicode 4.1 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; /*[1D200]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ANCIENT_GREEK_NUMBERS_ID = 127; /*[10140]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ARABIC_SUPPLEMENT_ID = 128; /*[0750]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int BUGINESE_ID = 129; /*[1A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CJK_STROKES_ID = 130; /*[31C0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; /*[1DC0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COPTIC_ID = 132; /*[2C80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ETHIOPIC_EXTENDED_ID = 133; /*[2D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ETHIOPIC_SUPPLEMENT_ID = 134; /*[1380]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int GEORGIAN_SUPPLEMENT_ID = 135; /*[2D00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int GLAGOLITIC_ID = 136; /*[2C00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int KHAROSHTHI_ID = 137; /*[10A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int MODIFIER_TONE_LETTERS_ID = 138; /*[A700]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int NEW_TAI_LUE_ID = 139; /*[1980]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int OLD_PERSIAN_ID = 140; /*[103A0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; /*[1D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; /*[2E00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int SYLOTI_NAGRI_ID = 143; /*[A800]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int TIFINAGH_ID = 144; /*[2D30]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int VERTICAL_FORMS_ID = 145; /*[FE10]*/
+
+        /* New blocks in Unicode 5.0 */
+
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int NKO_ID = 146; /*[07C0]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int BALINESE_ID = 147; /*[1B00]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int LATIN_EXTENDED_C_ID = 148; /*[2C60]*/
+        /** 
+         * @stable ICU 3.6 
+         */
+        public static final int LATIN_EXTENDED_D_ID = 149; /*[A720]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int PHAGS_PA_ID = 150; /*[A840]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int PHOENICIAN_ID = 151; /*[10900]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int CUNEIFORM_ID = 152; /*[12000]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; /*[12400]*/
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int COUNTING_ROD_NUMERALS_ID = 154; /*[1D360]*/
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int SUNDANESE_ID = 155; /* [1B80] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LEPCHA_ID = 156; /* [1C00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int OL_CHIKI_ID = 157; /* [1C50] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CYRILLIC_EXTENDED_A_ID = 158; /* [2DE0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int VAI_ID = 159; /* [A500] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CYRILLIC_EXTENDED_B_ID = 160; /* [A640] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int SAURASHTRA_ID = 161; /* [A880] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int KAYAH_LI_ID = 162; /* [A900] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int REJANG_ID = 163; /* [A930] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CHAM_ID = 164; /* [AA00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int ANCIENT_SYMBOLS_ID = 165; /* [10190] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int PHAISTOS_DISC_ID = 166; /* [101D0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LYCIAN_ID = 167; /* [10280] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CARIAN_ID = 168; /* [102A0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LYDIAN_ID = 169; /* [10920] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int MAHJONG_TILES_ID = 170; /* [1F000] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int DOMINO_TILES_ID = 171; /* [1F030] */
+
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COUNT = 172;
+
+        // blocks objects ---------------------------------------------------
+        
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final UnicodeBlock NO_BLOCK 
+            = new UnicodeBlock("NO_BLOCK", 0);
+
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock BASIC_LATIN 
+            = new UnicodeBlock("BASIC_LATIN", BASIC_LATIN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_1_SUPPLEMENT 
+            = new UnicodeBlock("LATIN_1_SUPPLEMENT", LATIN_1_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_A
+            = new UnicodeBlock("LATIN_EXTENDED_A", LATIN_EXTENDED_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_B 
+            = new UnicodeBlock("LATIN_EXTENDED_B", LATIN_EXTENDED_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock IPA_EXTENSIONS 
+            = new UnicodeBlock("IPA_EXTENSIONS", IPA_EXTENSIONS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SPACING_MODIFIER_LETTERS 
+            = new UnicodeBlock("SPACING_MODIFIER_LETTERS", SPACING_MODIFIER_LETTERS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS 
+            = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS", COMBINING_DIACRITICAL_MARKS_ID);
+        /**
+         * Unicode 3.2 renames this block to "Greek and Coptic".
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock GREEK
+            = new UnicodeBlock("GREEK", GREEK_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CYRILLIC 
+            = new UnicodeBlock("CYRILLIC", CYRILLIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARMENIAN 
+            = new UnicodeBlock("ARMENIAN", ARMENIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HEBREW 
+            = new UnicodeBlock("HEBREW", HEBREW_ID);  
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC
+            = new UnicodeBlock("ARABIC", ARABIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SYRIAC 
+            = new UnicodeBlock("SYRIAC", SYRIAC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock THAANA 
+            = new UnicodeBlock("THAANA", THAANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DEVANAGARI 
+            = new UnicodeBlock("DEVANAGARI", DEVANAGARI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BENGALI 
+            = new UnicodeBlock("BENGALI", BENGALI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GURMUKHI 
+            = new UnicodeBlock("GURMUKHI", GURMUKHI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GUJARATI 
+            = new UnicodeBlock("GUJARATI", GUJARATI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ORIYA 
+            = new UnicodeBlock("ORIYA", ORIYA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAMIL 
+            = new UnicodeBlock("TAMIL", TAMIL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TELUGU 
+            = new UnicodeBlock("TELUGU", TELUGU_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANNADA 
+            = new UnicodeBlock("KANNADA", KANNADA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MALAYALAM 
+            = new UnicodeBlock("MALAYALAM", MALAYALAM_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SINHALA 
+            = new UnicodeBlock("SINHALA", SINHALA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock THAI 
+            = new UnicodeBlock("THAI", THAI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LAO 
+            = new UnicodeBlock("LAO", LAO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TIBETAN 
+            = new UnicodeBlock("TIBETAN", TIBETAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MYANMAR 
+            = new UnicodeBlock("MYANMAR", MYANMAR_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GEORGIAN 
+            = new UnicodeBlock("GEORGIAN", GEORGIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_JAMO 
+            = new UnicodeBlock("HANGUL_JAMO", HANGUL_JAMO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ETHIOPIC 
+            = new UnicodeBlock("ETHIOPIC", ETHIOPIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CHEROKEE 
+            = new UnicodeBlock("CHEROKEE", CHEROKEE_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS 
+            = new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OGHAM 
+            = new UnicodeBlock("OGHAM", OGHAM_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock RUNIC 
+            = new UnicodeBlock("RUNIC", RUNIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KHMER 
+            = new UnicodeBlock("KHMER", KHMER_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MONGOLIAN 
+            = new UnicodeBlock("MONGOLIAN", MONGOLIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL 
+            = new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL", LATIN_EXTENDED_ADDITIONAL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GREEK_EXTENDED 
+            = new UnicodeBlock("GREEK_EXTENDED", GREEK_EXTENDED_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GENERAL_PUNCTUATION 
+            = new UnicodeBlock("GENERAL_PUNCTUATION", GENERAL_PUNCTUATION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS 
+            = new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS", SUPERSCRIPTS_AND_SUBSCRIPTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CURRENCY_SYMBOLS 
+            = new UnicodeBlock("CURRENCY_SYMBOLS", CURRENCY_SYMBOLS_ID);
+        /**
+         * Unicode 3.2 renames this block to "Combining Diacritical Marks for 
+         * Symbols".
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS 
+            = new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS", COMBINING_MARKS_FOR_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LETTERLIKE_SYMBOLS 
+            = new UnicodeBlock("LETTERLIKE_SYMBOLS", LETTERLIKE_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock NUMBER_FORMS 
+            = new UnicodeBlock("NUMBER_FORMS", NUMBER_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARROWS 
+            = new UnicodeBlock("ARROWS", ARROWS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MATHEMATICAL_OPERATORS 
+            = new UnicodeBlock("MATHEMATICAL_OPERATORS", MATHEMATICAL_OPERATORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_TECHNICAL 
+            = new UnicodeBlock("MISCELLANEOUS_TECHNICAL", MISCELLANEOUS_TECHNICAL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CONTROL_PICTURES 
+            = new UnicodeBlock("CONTROL_PICTURES", CONTROL_PICTURES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION 
+            = new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION", OPTICAL_CHARACTER_RECOGNITION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ENCLOSED_ALPHANUMERICS 
+            = new UnicodeBlock("ENCLOSED_ALPHANUMERICS", ENCLOSED_ALPHANUMERICS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOX_DRAWING 
+            = new UnicodeBlock("BOX_DRAWING", BOX_DRAWING_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BLOCK_ELEMENTS 
+            = new UnicodeBlock("BLOCK_ELEMENTS", BLOCK_ELEMENTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GEOMETRIC_SHAPES 
+            = new UnicodeBlock("GEOMETRIC_SHAPES", GEOMETRIC_SHAPES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS 
+            = new UnicodeBlock("MISCELLANEOUS_SYMBOLS", MISCELLANEOUS_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DINGBATS 
+            = new UnicodeBlock("DINGBATS", DINGBATS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BRAILLE_PATTERNS 
+            = new UnicodeBlock("BRAILLE_PATTERNS", BRAILLE_PATTERNS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT 
+            = new UnicodeBlock("CJK_RADICALS_SUPPLEMENT", CJK_RADICALS_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANGXI_RADICALS 
+            = new UnicodeBlock("KANGXI_RADICALS", KANGXI_RADICALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS 
+            = new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS", IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION 
+            = new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION", CJK_SYMBOLS_AND_PUNCTUATION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIRAGANA 
+            = new UnicodeBlock("HIRAGANA", HIRAGANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KATAKANA 
+            = new UnicodeBlock("KATAKANA", KATAKANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOPOMOFO 
+            = new UnicodeBlock("BOPOMOFO", BOPOMOFO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO 
+            = new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO", HANGUL_COMPATIBILITY_JAMO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANBUN 
+            = new UnicodeBlock("KANBUN", KANBUN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOPOMOFO_EXTENDED 
+            = new UnicodeBlock("BOPOMOFO_EXTENDED", BOPOMOFO_EXTENDED_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS 
+            = new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS", ENCLOSED_CJK_LETTERS_AND_MONTHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY 
+            = new UnicodeBlock("CJK_COMPATIBILITY", CJK_COMPATIBILITY_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS 
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS", CJK_UNIFIED_IDEOGRAPHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock YI_SYLLABLES 
+            = new UnicodeBlock("YI_SYLLABLES", YI_SYLLABLES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock YI_RADICALS 
+            = new UnicodeBlock("YI_RADICALS", YI_RADICALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_SYLLABLES 
+            = new UnicodeBlock("HANGUL_SYLLABLES", HANGUL_SYLLABLES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIGH_SURROGATES 
+            = new UnicodeBlock("HIGH_SURROGATES", HIGH_SURROGATES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES 
+            = new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES", HIGH_PRIVATE_USE_SURROGATES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LOW_SURROGATES 
+            = new UnicodeBlock("LOW_SURROGATES", LOW_SURROGATES_ID);
+        /**
+         * Same as public static final int PRIVATE_USE.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock PRIVATE_USE_AREA 
+            = new UnicodeBlock("PRIVATE_USE_AREA",  78);
+        /**
+         * Same as public static final int PRIVATE_USE_AREA.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock PRIVATE_USE 
+            = PRIVATE_USE_AREA;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS 
+            = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS", CJK_COMPATIBILITY_IDEOGRAPHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS 
+            = new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS", ALPHABETIC_PRESENTATION_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A 
+            = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A", ARABIC_PRESENTATION_FORMS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock COMBINING_HALF_MARKS 
+            = new UnicodeBlock("COMBINING_HALF_MARKS", COMBINING_HALF_MARKS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY_FORMS 
+            = new UnicodeBlock("CJK_COMPATIBILITY_FORMS", CJK_COMPATIBILITY_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SMALL_FORM_VARIANTS 
+            = new UnicodeBlock("SMALL_FORM_VARIANTS", SMALL_FORM_VARIANTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B 
+            = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B", ARABIC_PRESENTATION_FORMS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SPECIALS 
+            = new UnicodeBlock("SPECIALS", SPECIALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS 
+            = new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS", HALFWIDTH_AND_FULLWIDTH_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OLD_ITALIC 
+            = new UnicodeBlock("OLD_ITALIC", OLD_ITALIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GOTHIC 
+            = new UnicodeBlock("GOTHIC", GOTHIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DESERET 
+            = new UnicodeBlock("DESERET", DESERET_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS 
+            = new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS", BYZANTINE_MUSICAL_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MUSICAL_SYMBOLS 
+            = new UnicodeBlock("MUSICAL_SYMBOLS", MUSICAL_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS 
+            = new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS", MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B  
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT 
+            = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGS 
+            = new UnicodeBlock("TAGS", TAGS_ID);
+    
+        // New blocks in Unicode 3.2
+    
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY 
+            = new UnicodeBlock("CYRILLIC_SUPPLEMENTARY", CYRILLIC_SUPPLEMENTARY_ID);
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 3.0
+         */
+        public static final UnicodeBlock CYRILLIC_SUPPLEMENT 
+            = new UnicodeBlock("CYRILLIC_SUPPLEMENT", CYRILLIC_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGALOG 
+            = new UnicodeBlock("TAGALOG", TAGALOG_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANUNOO 
+            = new UnicodeBlock("HANUNOO", HANUNOO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BUHID 
+            = new UnicodeBlock("BUHID", BUHID_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGBANWA 
+            = new UnicodeBlock("TAGBANWA", TAGBANWA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A 
+            = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A 
+            = new UnicodeBlock("SUPPLEMENTAL_ARROWS_A", SUPPLEMENTAL_ARROWS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B 
+            = new UnicodeBlock("SUPPLEMENTAL_ARROWS_B", SUPPLEMENTAL_ARROWS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B 
+            = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS 
+            = new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS", SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS 
+            = new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS", KATAKANA_PHONETIC_EXTENSIONS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock VARIATION_SELECTORS 
+            = new UnicodeBlock("VARIATION_SELECTORS", VARIATION_SELECTORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A 
+            = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A", SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B 
+            = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B", SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID);
+   
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LIMBU 
+            = new UnicodeBlock("LIMBU", LIMBU_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock TAI_LE 
+            = new UnicodeBlock("TAI_LE", TAI_LE_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock KHMER_SYMBOLS 
+            = new UnicodeBlock("KHMER_SYMBOLS", KHMER_SYMBOLS_ID);
+
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock PHONETIC_EXTENSIONS 
+            = new UnicodeBlock("PHONETIC_EXTENSIONS", PHONETIC_EXTENSIONS_ID);
+
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS 
+            = new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS", MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS 
+            = new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS", YIJING_HEXAGRAM_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LINEAR_B_SYLLABARY 
+            = new UnicodeBlock("LINEAR_B_SYLLABARY", LINEAR_B_SYLLABARY_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LINEAR_B_IDEOGRAMS 
+            = new UnicodeBlock("LINEAR_B_IDEOGRAMS", LINEAR_B_IDEOGRAMS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock AEGEAN_NUMBERS 
+            = new UnicodeBlock("AEGEAN_NUMBERS", AEGEAN_NUMBERS_ID);                                               
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock UGARITIC 
+            = new UnicodeBlock("UGARITIC", UGARITIC_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock SHAVIAN 
+            = new UnicodeBlock("SHAVIAN", SHAVIAN_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock OSMANYA 
+            = new UnicodeBlock("OSMANYA", OSMANYA_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock CYPRIOT_SYLLABARY 
+            = new UnicodeBlock("CYPRIOT_SYLLABARY", CYPRIOT_SYLLABARY_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS 
+            = new UnicodeBlock("TAI_XUAN_JING_SYMBOLS", TAI_XUAN_JING_SYMBOLS_ID);
+        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT 
+            = new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT", VARIATION_SELECTORS_SUPPLEMENT_ID);                                      
+
+        /* New blocks in Unicode 4.1 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION = new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION", ANCIENT_GREEK_MUSICAL_NOTATION_ID); /*[1D200]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ANCIENT_GREEK_NUMBERS = new UnicodeBlock("ANCIENT_GREEK_NUMBERS", ANCIENT_GREEK_NUMBERS_ID); /*[10140]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ARABIC_SUPPLEMENT = new UnicodeBlock("ARABIC_SUPPLEMENT", ARABIC_SUPPLEMENT_ID); /*[0750]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock BUGINESE = new UnicodeBlock("BUGINESE", BUGINESE_ID); /*[1A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock CJK_STROKES = new UnicodeBlock("CJK_STROKES", CJK_STROKES_ID); /*[31C0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID); /*[1DC0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock COPTIC = new UnicodeBlock("COPTIC", COPTIC_ID); /*[2C80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ETHIOPIC_EXTENDED = new UnicodeBlock("ETHIOPIC_EXTENDED", ETHIOPIC_EXTENDED_ID); /*[2D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ETHIOPIC_SUPPLEMENT = new UnicodeBlock("ETHIOPIC_SUPPLEMENT", ETHIOPIC_SUPPLEMENT_ID); /*[1380]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock GEORGIAN_SUPPLEMENT = new UnicodeBlock("GEORGIAN_SUPPLEMENT", GEORGIAN_SUPPLEMENT_ID); /*[2D00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock GLAGOLITIC = new UnicodeBlock("GLAGOLITIC", GLAGOLITIC_ID); /*[2C00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock KHAROSHTHI = new UnicodeBlock("KHAROSHTHI", KHAROSHTHI_ID); /*[10A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock MODIFIER_TONE_LETTERS = new UnicodeBlock("MODIFIER_TONE_LETTERS", MODIFIER_TONE_LETTERS_ID); /*[A700]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock NEW_TAI_LUE = new UnicodeBlock("NEW_TAI_LUE", NEW_TAI_LUE_ID); /*[1980]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock OLD_PERSIAN = new UnicodeBlock("OLD_PERSIAN", OLD_PERSIAN_ID); /*[103A0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT = new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT", PHONETIC_EXTENSIONS_SUPPLEMENT_ID); /*[1D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION = new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION", SUPPLEMENTAL_PUNCTUATION_ID); /*[2E00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock SYLOTI_NAGRI = new UnicodeBlock("SYLOTI_NAGRI", SYLOTI_NAGRI_ID); /*[A800]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock TIFINAGH = new UnicodeBlock("TIFINAGH", TIFINAGH_ID); /*[2D30]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock VERTICAL_FORMS = new UnicodeBlock("VERTICAL_FORMS", VERTICAL_FORMS_ID); /*[FE10]*/
+
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock NKO = new UnicodeBlock("NKO", NKO_ID); /*[07C0]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock BALINESE = new UnicodeBlock("BALINESE", BALINESE_ID); /*[1B00]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_C = new UnicodeBlock("LATIN_EXTENDED_C", LATIN_EXTENDED_C_ID); /*[2C60]*/
+        /** 
+         * @stable ICU 3.6 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_D = new UnicodeBlock("LATIN_EXTENDED_D", LATIN_EXTENDED_D_ID); /*[A720]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock PHAGS_PA = new UnicodeBlock("PHAGS_PA", PHAGS_PA_ID); /*[A840]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock PHOENICIAN = new UnicodeBlock("PHOENICIAN", PHOENICIAN_ID); /*[10900]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock CUNEIFORM = new UnicodeBlock("CUNEIFORM", CUNEIFORM_ID); /*[12000]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION = new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION", CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID); /*[12400]*/
+        /**
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock COUNTING_ROD_NUMERALS = new UnicodeBlock("COUNTING_ROD_NUMERALS", COUNTING_ROD_NUMERALS_ID); /*[1D360]*/
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock SUNDANESE = new UnicodeBlock("SUNDANESE", SUNDANESE_ID); /* [1B80] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LEPCHA = new UnicodeBlock("LEPCHA", LEPCHA_ID); /* [1C00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock OL_CHIKI = new UnicodeBlock("OL_CHIKI", OL_CHIKI_ID); /* [1C50] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_A = new UnicodeBlock("CYRILLIC_EXTENDED_A", CYRILLIC_EXTENDED_A_ID); /* [2DE0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock VAI = new UnicodeBlock("VAI", VAI_ID); /* [A500] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_B = new UnicodeBlock("CYRILLIC_EXTENDED_B", CYRILLIC_EXTENDED_B_ID); /* [A640] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock SAURASHTRA = new UnicodeBlock("SAURASHTRA", SAURASHTRA_ID); /* [A880] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock KAYAH_LI = new UnicodeBlock("KAYAH_LI", KAYAH_LI_ID); /* [A900] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock REJANG = new UnicodeBlock("REJANG", REJANG_ID); /* [A930] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CHAM = new UnicodeBlock("CHAM", CHAM_ID); /* [AA00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock ANCIENT_SYMBOLS = new UnicodeBlock("ANCIENT_SYMBOLS", ANCIENT_SYMBOLS_ID); /* [10190] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock PHAISTOS_DISC = new UnicodeBlock("PHAISTOS_DISC", PHAISTOS_DISC_ID); /* [101D0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LYCIAN = new UnicodeBlock("LYCIAN", LYCIAN_ID); /* [10280] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CARIAN = new UnicodeBlock("CARIAN", CARIAN_ID); /* [102A0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LYDIAN = new UnicodeBlock("LYDIAN", LYDIAN_ID); /* [10920] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock MAHJONG_TILES = new UnicodeBlock("MAHJONG_TILES", MAHJONG_TILES_ID); /* [1F000] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock DOMINO_TILES = new UnicodeBlock("DOMINO_TILES", DOMINO_TILES_ID); /* [1F030] */
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock INVALID_CODE 
+            = new UnicodeBlock("INVALID_CODE", INVALID_CODE_ID);
+                   
+        // public methods --------------------------------------------------
+        
+        /** 
+         * Gets the only instance of the UnicodeBlock with the argument ID.
+         * If no such ID exists, a INVALID_CODE UnicodeBlock will be returned.
+         * @param id UnicodeBlock ID
+         * @return the only instance of the UnicodeBlock with the argument ID
+         *         if it exists, otherwise a INVALID_CODE UnicodeBlock will be 
+         *         returned.
+         * @stable ICU 2.4
+         */
+        public static UnicodeBlock getInstance(int id)
+        {
+            if (id >= 0 && id < BLOCKS_.length) {
+                return BLOCKS_[id];
+            }
+            return INVALID_CODE;
+        }
+        
+        /**
+         * Returns the Unicode allocation block that contains the code point,
+         * or null if the code point is not a member of a defined block.
+         * @param ch code point to be tested
+         * @return the Unicode allocation block that contains the code point
+         * @stable ICU 2.4
+         */
+        public static UnicodeBlock of(int ch)
+        {
+            if (ch > MAX_VALUE) {
+                return INVALID_CODE;
+            }
+
+            return UnicodeBlock.getInstance((PROPERTY_.getAdditional(ch, 0)
+                         & BLOCK_MASK_) >> BLOCK_SHIFT_);
+        }
+
+        /**
+         * Internal function returning of(ch).getID().
+         *
+         * @param ch
+         * @return numeric block value
+         * @internal
+         */
+        static int idOf(int ch) {
+            if (ch < 0 || ch > MAX_VALUE) {
+                return -1;
+            }
+
+            return (PROPERTY_.getAdditional(ch, 0) & BLOCK_MASK_) >> BLOCK_SHIFT_;
+        }
+
+        /**
+         * Cover the JDK 1.5 API.  Return the Unicode block with the
+         * given name.  <br/><b>Note</b>: Unlike JDK 1.5, this only matches
+         * against the official UCD name and the Java block name
+         * (ignoring case).
+         * @param blockName the name of the block to match
+         * @return the UnicodeBlock with that name
+         * @throws IllegalArgumentException if the blockName could not be matched
+         * @stable ICU 3.0
+         */
+        public static final UnicodeBlock forName(String blockName) {
+            Map m = null;
+            if (mref != null) {
+                m = (Map)mref.get();
+            }
+            if (m == null) {
+                m = new HashMap(BLOCKS_.length);
+                for (int i = 0; i < BLOCKS_.length; ++i) {
+                    UnicodeBlock b = BLOCKS_[i];
+                    String name = trimBlockName(getPropertyValueName(UProperty.BLOCK, b.getID(), UProperty.NameChoice.LONG));
+                    m.put(name, b);
+                }
+                mref = new SoftReference(m);
+            }
+            UnicodeBlock b = (UnicodeBlock)m.get(trimBlockName(blockName));
+            if (b == null) {
+                throw new IllegalArgumentException();
+            }
+            return b;
+        }
+        private static SoftReference mref;
+
+        private static String trimBlockName(String name) {
+            String upper = name.toUpperCase();
+            StringBuffer result = new StringBuffer(upper.length());
+            for (int i = 0; i < upper.length(); i++) {
+                char c = upper.charAt(i);
+                if (c != ' ' && c != '_' && c != '-') {
+                    result.append(c);
+                }
+            }
+            return result.toString();
+        }
+        
+        /**
+         * Returns the type ID of this Unicode block
+         * @return integer type ID of this Unicode block
+         * @stable ICU 2.4
+         */
+        public int getID()
+        {
+            return m_id_;
+        }
+        
+        // private data members ---------------------------------------------
+        
+        /**
+         * Array of UnicodeBlocks, for easy access in getInstance(int)
+         */
+        private final static UnicodeBlock BLOCKS_[] = {
+            NO_BLOCK, BASIC_LATIN, 
+            LATIN_1_SUPPLEMENT, LATIN_EXTENDED_A, 
+            LATIN_EXTENDED_B, IPA_EXTENSIONS, 
+            SPACING_MODIFIER_LETTERS, COMBINING_DIACRITICAL_MARKS,
+            GREEK, CYRILLIC,
+            ARMENIAN, HEBREW,
+            ARABIC, SYRIAC, 
+            THAANA, DEVANAGARI, 
+            BENGALI, GURMUKHI, 
+            GUJARATI, ORIYA, 
+            TAMIL, TELUGU, 
+            KANNADA, MALAYALAM, 
+            SINHALA, THAI, 
+            LAO, TIBETAN, 
+            MYANMAR, GEORGIAN, 
+            HANGUL_JAMO, ETHIOPIC, 
+            CHEROKEE, UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
+            OGHAM, RUNIC, 
+            KHMER, MONGOLIAN, 
+            LATIN_EXTENDED_ADDITIONAL, GREEK_EXTENDED, 
+            GENERAL_PUNCTUATION, SUPERSCRIPTS_AND_SUBSCRIPTS,
+            CURRENCY_SYMBOLS, COMBINING_MARKS_FOR_SYMBOLS, 
+            LETTERLIKE_SYMBOLS, NUMBER_FORMS, 
+            ARROWS, MATHEMATICAL_OPERATORS, 
+            MISCELLANEOUS_TECHNICAL, CONTROL_PICTURES,
+            OPTICAL_CHARACTER_RECOGNITION, ENCLOSED_ALPHANUMERICS,
+            BOX_DRAWING, BLOCK_ELEMENTS,
+            GEOMETRIC_SHAPES, MISCELLANEOUS_SYMBOLS,
+            DINGBATS, BRAILLE_PATTERNS,
+            CJK_RADICALS_SUPPLEMENT, KANGXI_RADICALS,
+            IDEOGRAPHIC_DESCRIPTION_CHARACTERS, CJK_SYMBOLS_AND_PUNCTUATION,
+            HIRAGANA, KATAKANA, 
+            BOPOMOFO, HANGUL_COMPATIBILITY_JAMO,
+            KANBUN, BOPOMOFO_EXTENDED, 
+            ENCLOSED_CJK_LETTERS_AND_MONTHS, CJK_COMPATIBILITY,
+            CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A, CJK_UNIFIED_IDEOGRAPHS,
+            YI_SYLLABLES, YI_RADICALS, 
+            HANGUL_SYLLABLES, HIGH_SURROGATES,
+            HIGH_PRIVATE_USE_SURROGATES, LOW_SURROGATES,
+            PRIVATE_USE_AREA, CJK_COMPATIBILITY_IDEOGRAPHS,
+            ALPHABETIC_PRESENTATION_FORMS, ARABIC_PRESENTATION_FORMS_A,
+            COMBINING_HALF_MARKS, CJK_COMPATIBILITY_FORMS,
+            SMALL_FORM_VARIANTS, ARABIC_PRESENTATION_FORMS_B,
+            SPECIALS, HALFWIDTH_AND_FULLWIDTH_FORMS,
+            OLD_ITALIC, GOTHIC, 
+            DESERET, BYZANTINE_MUSICAL_SYMBOLS,
+            MUSICAL_SYMBOLS, MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
+            CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B, 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, 
+            TAGS, CYRILLIC_SUPPLEMENT,
+            TAGALOG, HANUNOO, 
+            BUHID, TAGBANWA, 
+            MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A, SUPPLEMENTAL_ARROWS_A,
+            SUPPLEMENTAL_ARROWS_B, MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
+            SUPPLEMENTAL_MATHEMATICAL_OPERATORS, 
+            KATAKANA_PHONETIC_EXTENSIONS,
+            VARIATION_SELECTORS, SUPPLEMENTARY_PRIVATE_USE_AREA_A,
+            SUPPLEMENTARY_PRIVATE_USE_AREA_B,
+            LIMBU, TAI_LE, KHMER_SYMBOLS, PHONETIC_EXTENSIONS,
+            MISCELLANEOUS_SYMBOLS_AND_ARROWS, YIJING_HEXAGRAM_SYMBOLS,
+            LINEAR_B_SYLLABARY, LINEAR_B_IDEOGRAMS, AEGEAN_NUMBERS,
+            UGARITIC, SHAVIAN, OSMANYA, CYPRIOT_SYLLABARY,
+            TAI_XUAN_JING_SYMBOLS, VARIATION_SELECTORS_SUPPLEMENT,
+
+            /* New blocks in Unicode 4.1 */
+            ANCIENT_GREEK_MUSICAL_NOTATION,
+            ANCIENT_GREEK_NUMBERS,
+            ARABIC_SUPPLEMENT,
+            BUGINESE,
+            CJK_STROKES,
+            COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,
+            COPTIC,
+            ETHIOPIC_EXTENDED,
+            ETHIOPIC_SUPPLEMENT,
+            GEORGIAN_SUPPLEMENT,
+            GLAGOLITIC,
+            KHAROSHTHI,
+            MODIFIER_TONE_LETTERS,
+            NEW_TAI_LUE,
+            OLD_PERSIAN,
+            PHONETIC_EXTENSIONS_SUPPLEMENT,
+            SUPPLEMENTAL_PUNCTUATION,
+            SYLOTI_NAGRI,
+            TIFINAGH,
+            VERTICAL_FORMS,
+            NKO,
+            BALINESE,
+            LATIN_EXTENDED_C,
+            LATIN_EXTENDED_D,
+            PHAGS_PA,
+            PHOENICIAN,
+            CUNEIFORM,
+            CUNEIFORM_NUMBERS_AND_PUNCTUATION,
+            COUNTING_ROD_NUMERALS,
+
+            /* New blocks in Unicode 5.8 */
+            SUNDANESE,
+            LEPCHA,
+            OL_CHIKI,
+            CYRILLIC_EXTENDED_A,
+            VAI,
+            CYRILLIC_EXTENDED_B,
+            SAURASHTRA,
+            KAYAH_LI,
+            REJANG,
+            CHAM,
+            ANCIENT_SYMBOLS,
+            PHAISTOS_DISC,
+            LYCIAN,
+            CARIAN,
+            LYDIAN,
+            MAHJONG_TILES,
+            DOMINO_TILES,
+        };
+
+        static {
+            if (COUNT!=BLOCKS_.length) {
+                throw new java.lang.IllegalStateException("UnicodeBlock fields are inconsistent!");
+            }
+        }
+        /**
+         * Identification code for this UnicodeBlock
+         */
+        private int m_id_;
+        
+        // private constructor ----------------------------------------------
+        
+        /**
+         * UnicodeBlock constructor
+         * @param name name of this UnicodeBlock
+         * @param id unique id of this UnicodeBlock
+         * @exception NullPointerException if name is <code>null</code>
+         */
+        private UnicodeBlock(String name, int id)
+        {
+            super(name);
+            m_id_ = id;
+        }
+    }
+    
+    /**
+     * East Asian Width constants.
+     * @see UProperty#EAST_ASIAN_WIDTH
+     * @see UCharacter#getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static interface EastAsianWidth 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NEUTRAL = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AMBIGUOUS = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HALFWIDTH = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FULLWIDTH = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NARROW = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WIDE = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 6;
+    }
+
+    /**
+     * Decomposition Type constants.
+     * @see UProperty#DECOMPOSITION_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface DecompositionType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONE = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CANONICAL = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMPAT = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CIRCLE = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FINAL = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FONT = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FRACTION = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int INITIAL = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ISOLATED = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MEDIAL = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NARROW = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NOBREAK = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SMALL = 12;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SQUARE = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SUB = 14;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SUPER = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int VERTICAL = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WIDE = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 18;
+    }
+    
+    /**
+     * Joining Type constants.
+     * @see UProperty#JOINING_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface JoiningType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NON_JOINING = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int JOIN_CAUSING = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DUAL_JOINING = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LEFT_JOINING = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int RIGHT_JOINING = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TRANSPARENT = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 6;
+    }
+    
+    /**
+     * Joining Group constants.
+     * @see UProperty#JOINING_GROUP
+     * @stable ICU 2.4
+     */
+    public static interface JoiningGroup 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NO_JOINING_GROUP = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AIN = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALAPH = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALEF = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BEH = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BETH = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DAL = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DALATH_RISH = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int E = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FEH = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FINAL_SEMKATH = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GAF = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GAMAL = 12;
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final int HAH = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HAMZA_ON_HEH_GOAL = 14;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HE = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HEH = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HEH_GOAL = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HETH = 18;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KAF = 19;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KAPH = 20;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KNOTTED_HEH = 21;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LAM = 22;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LAMADH = 23;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MEEM = 24;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MIM = 25;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NOON = 26;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUN = 27;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int PE = 28;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QAF = 29;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QAPH = 30;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int REH = 31;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int REVERSED_PE = 32;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SAD = 33;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SADHE = 34;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SEEN = 35;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SEMKATH = 36;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SHIN = 37;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SWASH_KAF = 38;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SYRIAC_WAW = 39;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TAH = 40;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TAW = 41;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TEH_MARBUTA = 42;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TETH = 43;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WAW = 44;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH = 45;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH_BARREE = 46;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH_WITH_TAIL = 47;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YUDH = 48;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YUDH_HE = 49;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ZAIN = 50;
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int FE = 51;        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int KHAPH = 52;
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int ZHAIN = 53;   
+        /**
+         * @stable ICU 4.0 
+         */
+        public static final int BURUSHASKI_YEH_BARREE = 54;   
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 55;
+    }
+
+    /**
+     * Grapheme Cluster Break constants.
+     * @see UProperty#GRAPHEME_CLUSTER_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface GraphemeClusterBreak {
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CONTROL = 1;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CR = 2;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int EXTEND = 3;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int L = 4;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LF = 5;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LV = 6;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LVT = 7;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int T = 8;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int V = 9;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SPACING_MARK = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int PREPEND = 11;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COUNT = 12;
+    }
+
+    /**
+     * Word Break constants.
+     * @see UProperty#WORD_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface WordBreak {
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int ALETTER = 1;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int FORMAT = 2;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int KATAKANA = 3;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int MIDLETTER = 4;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int MIDNUM = 5;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int NUMERIC = 6;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int EXTENDNUMLET = 7;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CR = 8;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int EXTEND = 9;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LF = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int MIDNUMLET = 11;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int NEWLINE = 12;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 13;
+    }
+
+    /**
+     * Sentence Break constants.
+     * @see UProperty#SENTENCE_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface SentenceBreak {
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int ATERM = 1;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int CLOSE = 2;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int FORMAT = 3;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int LOWER = 4;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int NUMERIC = 5;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OLETTER = 6;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int SEP = 7;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int SP = 8;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int STERM = 9;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int UPPER = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CR = 11;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int EXTEND = 12;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LF = 13;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SCONTINUE = 14;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 15;
+    }
+
+    /**
+     * Line Break constants.
+     * @see UProperty#LINE_BREAK
+     * @stable ICU 2.4
+     */
+    public static interface LineBreak 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int UNKNOWN = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AMBIGUOUS = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALPHABETIC = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_BOTH = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_AFTER = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_BEFORE = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MANDATORY_BREAK = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CONTINGENT_BREAK = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CLOSE_PUNCTUATION = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMBINING_MARK = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CARRIAGE_RETURN = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int EXCLAMATION = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GLUE = 12;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HYPHEN = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int IDEOGRAPHIC = 14;
+        /**
+         * @see #INSEPARABLE
+         * @stable ICU 2.4
+         */
+        public static final int INSEPERABLE = 15;
+        /**
+         * Renamed from the misspelled "inseperable" in Unicode 4.0.1.
+         * @stable ICU 3.0
+         */
+        public static final int INSEPARABLE = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int INFIX_NUMERIC = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LINE_FEED = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONSTARTER = 18;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUMERIC = 19;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int OPEN_PUNCTUATION = 20;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int POSTFIX_NUMERIC = 21;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int PREFIX_NUMERIC = 22;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QUOTATION = 23;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMPLEX_CONTEXT = 24;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SURROGATE = 25;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SPACE = 26;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_SYMBOLS = 27;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ZWSPACE = 28;
+        
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int NEXT_LINE = 29;       /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
+        
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int  WORD_JOINER = 30;      /*[WJ]*/
+        
+        /* from here on: new in Unicode 4.1/ICU 3.4 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  H2 = 31;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  H3 = 32;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JL = 33;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JT = 34;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JV = 35;
+
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 36;
+    }
+    
+    /**
+     * Numeric Type constants.
+     * @see UProperty#NUMERIC_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface NumericType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONE = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DECIMAL = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DIGIT = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUMERIC = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 4;
+    }
+    
+    /**
+     * Hangul Syllable Type constants.
+     *
+     * @see UProperty#HANGUL_SYLLABLE_TYPE
+     * @stable ICU 2.6
+     */
+    public static interface HangulSyllableType 
+    {
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int NOT_APPLICABLE      = 0;   /*[NA]*/ /*See note !!*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LEADING_JAMO        = 1;   /*[L]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int VOWEL_JAMO          = 2;   /*[V]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int TRAILING_JAMO       = 3;   /*[T]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LV_SYLLABLE         = 4;   /*[LV]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LVT_SYLLABLE        = 5;   /*[LVT]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int COUNT               = 6;
+    }
+
+    // public data members -----------------------------------------------
+  
+    /** 
+     * The lowest Unicode code point value.
+     * @stable ICU 2.1
+     */
+    public static final int MIN_VALUE = UTF16.CODEPOINT_MIN_VALUE;
+
+    /**
+     * The highest Unicode code point value (scalar value) according to the 
+     * Unicode Standard. 
+     * This is a 21-bit value (21 bits, rounded up).<br>
+     * Up-to-date Unicode implementation of java.lang.Character.MIN_VALUE
+     * @stable ICU 2.1
+     */
+    public static final int MAX_VALUE = UTF16.CODEPOINT_MAX_VALUE; 
+      
+    /**
+     * The minimum value for Supplementary code points
+     * @stable ICU 2.1
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE = 
+        UTF16.SUPPLEMENTARY_MIN_VALUE;
+      
+    /**
+     * Unicode value used when translating into Unicode encoding form and there 
+     * is no existing character.
+     * @stable ICU 2.1
+     */
+    public static final int REPLACEMENT_CHAR = '\uFFFD';
+        
+    /**
+     * Special value that is returned by getUnicodeNumericValue(int) when no 
+     * numeric value is defined for a code point.
+     * @stable ICU 2.4
+     * @see #getUnicodeNumericValue
+     */
+    public static final double NO_NUMERIC_VALUE = -123456789;
+
+    /**
+     * Compatibility constant for Java Character's MIN_RADIX.
+     * @stable ICU 3.4
+     */
+    public static final int MIN_RADIX = java.lang.Character.MIN_RADIX;
+
+    /**
+     * Compatibility constant for Java Character's MAX_RADIX.
+     * @stable ICU 3.4
+     */
+    public static final int MAX_RADIX = java.lang.Character.MAX_RADIX;
+
+    /**
+     * Do not lowercase non-initial parts of words when titlecasing.
+     * Option bit for titlecasing APIs that take an options bit set.
+     *
+     * By default, titlecasing will titlecase the first cased character
+     * of a word and lowercase all other characters.
+     * With this option, the other characters will not be modified.
+     *
+     * @see #toTitleCase
+     * @stable ICU 3.8
+     */
+    public static final int TITLECASE_NO_LOWERCASE = 0x100;
+
+    /**
+     * Do not adjust the titlecasing indexes from BreakIterator::next() indexes;
+     * titlecase exactly the characters at breaks from the iterator.
+     * Option bit for titlecasing APIs that take an options bit set.
+     *
+     * By default, titlecasing will take each break iterator index,
+     * adjust it by looking for the next cased character, and titlecase that one.
+     * Other characters are lowercased.
+     *
+     * This follows Unicode 4 & 5 section 3.13 Default Case Operations:
+     *
+     * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
+     * #29, "Text Boundaries." Between each pair of word boundaries, find the first
+     * cased character F. If F exists, map F to default_title(F); then map each
+     * subsequent character C to default_lower(C).
+     *
+     * @see #toTitleCase
+     * @see #TITLECASE_NO_LOWERCASE
+     * @stable ICU 3.8
+     */
+    public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 0x200;
+
+    // public methods ----------------------------------------------------
+      
+    /**
+     * Retrieves the numeric value of a decimal digit code point.
+     * <br>This method observes the semantics of
+     * <code>java.lang.Character.digit()</code>.  Note that this
+     * will return positive values for code points for which isDigit
+     * returns false, just like java.lang.Character.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and
+     * prior, this did not treat the European letters as having a
+     * digit value, and also treated numeric letters and other numbers as 
+     * digits.  
+     * This has been changed to conform to the java semantics.
+     * <br>A code point is a valid digit if and only if:
+     * <ul>
+     *   <li>ch is a decimal digit or one of the european letters, and
+     *   <li>the value of ch is less than the specified radix.
+     * </ul>
+     * @param ch the code point to query
+     * @param radix the radix
+     * @return the numeric value represented by the code point in the
+     * specified radix, or -1 if the code point is not a decimal digit
+     * or if its value is too large for the radix
+     * @stable ICU 2.1
+     */
+    public static int digit(int ch, int radix)
+    {
+        // when ch is out of bounds getProperty == 0
+        int props = getProperty(ch);
+        int value;        
+        if (getNumericType(props) == NumericType.DECIMAL) {
+            value = UCharacterProperty.getUnsignedValue(props);
+        } else {
+            value = getEuropeanDigit(ch);
+        }
+        return (0 <= value && value < radix) ? value : -1;
+    }
+    
+    /**
+     * Retrieves the numeric value of a decimal digit code point.
+     * <br>This is a convenience overload of <code>digit(int, int)</code> 
+     * that provides a decimal radix.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
+     * treated numeric letters and other numbers as digits.  This has
+     * been changed to conform to the java semantics.
+     * @param ch the code point to query
+     * @return the numeric value represented by the code point,
+     * or -1 if the code point is not a decimal digit or if its
+     * value is too large for a decimal radix 
+     * @stable ICU 2.1
+     */
+    public static int digit(int ch)
+    {
+        int props = getProperty(ch);
+        if (getNumericType(props) == NumericType.DECIMAL) {
+            return UCharacterProperty.getUnsignedValue(props);
+        } else {
+            return -1;
+        }
+    }
+
+    /** 
+     * Returns the numeric value of the code point as a nonnegative 
+     * integer.
+     * <br>If the code point does not have a numeric value, then -1 is returned. 
+     * <br>
+     * If the code point has a numeric value that cannot be represented as a 
+     * nonnegative integer (for example, a fractional value), then -2 is 
+     * returned.
+     * @param ch the code point to query
+     * @return the numeric value of the code point, or -1 if it has no numeric 
+     * value, or -2 if it has a numeric value that cannot be represented as a 
+     * nonnegative integer
+     * @stable ICU 2.1
+     */
+    public static int getNumericValue(int ch)
+    {
+        // slightly pruned version of getUnicodeNumericValue(), plus getEuropeanDigit()
+        int props = PROPERTY_.getProperty(ch);
+        int numericType = getNumericType(props);
+
+        if(numericType==0) {
+            return getEuropeanDigit(ch);
+        }
+        if(numericType==UCharacterProperty.NT_FRACTION || numericType>=UCharacterProperty.NT_COUNT) {
+            return -2;
+        }
+
+        int numericValue = UCharacterProperty.getUnsignedValue(props);
+
+        if(numericType<NumericType.COUNT) {
+            /* normal type, the value is stored directly */
+            return numericValue;
+        } else /* numericType==NT_LARGE */ {
+            /* large value with exponent */
+            long numValue;
+            int mant, exp;
+
+            mant=numericValue>>LARGE_MANT_SHIFT;
+            exp=numericValue&LARGE_EXP_MASK;
+            if(mant==0) {
+                mant=1;
+                exp+=LARGE_EXP_OFFSET_EXTRA;
+            } else if(mant>9) {
+                return -2; /* reserved mantissa value */
+            } else {
+                exp+=LARGE_EXP_OFFSET;
+            }
+            if(exp>9) {
+                return -2;
+            }
+
+            numValue=mant;
+
+            /* multiply by 10^exp without math.h */
+            while(exp>=4) {
+                numValue*=10000.;
+                exp-=4;
+            }
+            switch(exp) {
+            case 3:
+                numValue*=1000.;
+                break;
+            case 2:
+                numValue*=100.;
+                break;
+            case 1:
+                numValue*=10.;
+                break;
+            case 0:
+            default:
+                break;
+            }
+            if(numValue<=Integer.MAX_VALUE) {
+                return (int)numValue;
+            } else {
+                return -2;
+            }
+        }
+    }
+    
+    /**
+     * <p>Get the numeric value for a Unicode code point as defined in the 
+     * Unicode Character Database.</p>
+     * <p>A "double" return type is necessary because some numeric values are 
+     * fractions, negative, or too large for int.</p>
+     * <p>For characters without any numeric values in the Unicode Character 
+     * Database, this function will return NO_NUMERIC_VALUE.</p>
+     * <p><em>API Change:</em> In release 2.2 and prior, this API has a
+     * return type int and returns -1 when the argument ch does not have a 
+     * corresponding numeric value. This has been changed to synch with ICU4C
+     * </p>
+     * This corresponds to the ICU4C function u_getNumericValue.
+     * @param ch Code point to get the numeric value for.
+     * @return numeric value of ch, or NO_NUMERIC_VALUE if none is defined.
+     * @stable ICU 2.4
+     */
+    public static double getUnicodeNumericValue(int ch)
+    {
+        // equivalent to c version double u_getNumericValue(UChar32 c)
+        int props = PROPERTY_.getProperty(ch);
+        int numericType = getNumericType(props);
+
+        if(numericType==0 || numericType>=UCharacterProperty.NT_COUNT) {
+            return NO_NUMERIC_VALUE;
+        }
+
+        int numericValue = UCharacterProperty.getUnsignedValue(props);
+
+        if(numericType<NumericType.COUNT) {
+            /* normal type, the value is stored directly */
+            return numericValue;
+        } else if(numericType==UCharacterProperty.NT_FRACTION) {
+            /* fraction value */
+            int numerator, denominator;
+
+            numerator=numericValue>>FRACTION_NUM_SHIFT;
+            denominator=(numericValue&FRACTION_DEN_MASK)+FRACTION_DEN_OFFSET;
+
+            if(numerator==0) {
+                numerator=-1;
+            }
+            return (double)numerator/(double)denominator;
+        } else /* numericType==NT_LARGE */ {
+            /* large value with exponent */
+            double numValue;
+            int mant, exp;
+
+            mant=numericValue>>LARGE_MANT_SHIFT;
+            exp=numericValue&LARGE_EXP_MASK;
+            if(mant==0) {
+                mant=1;
+                exp+=LARGE_EXP_OFFSET_EXTRA;
+            } else if(mant>9) {
+                return NO_NUMERIC_VALUE; /* reserved mantissa value */
+            } else {
+                exp+=LARGE_EXP_OFFSET;
+            }
+
+            numValue=mant;
+
+            /* multiply by 10^exp without math.h */
+            while(exp>=4) {
+                numValue*=10000.;
+                exp-=4;
+            }
+            switch(exp) {
+            case 3:
+                numValue*=1000.;
+                break;
+            case 2:
+                numValue*=100.;
+                break;
+            case 1:
+                numValue*=10.;
+                break;
+            case 0:
+            default:
+                break;
+            }
+
+            return numValue;
+        }
+    }
+  
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isSpace.
+     * @param ch the code point
+     * @return true if the code point is a space character as
+     * defined by java.lang.Character.isSpace.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isSpace(int ch) {
+        return ch <= 0x20 &&
+            (ch == 0x20 || ch == 0x09 || ch == 0x0a || ch == 0x0c || ch == 0x0d);
+    }
+
+    /**
+     * Returns a value indicating a code point's Unicode category.
+     * Up-to-date Unicode implementation of java.lang.Character.getType() 
+     * except for the above mentioned code points that had their category 
+     * changed.<br>
+     * Return results are constants from the interface 
+     * <a href=UCharacterCategory.html>UCharacterCategory</a><br>
+     * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
+     * those returned by java.lang.Character.getType.  UCharacterCategory values
+     * match the ones used in ICU4C, while java.lang.Character type
+     * values, though similar, skip the value 17.</p>
+     * @param ch code point whose type is to be determined
+     * @return category which is a value of UCharacterCategory
+     * @stable ICU 2.1
+     */
+    public static int getType(int ch)
+    {
+        return getProperty(ch) & UCharacterProperty.TYPE_MASK;
+    }
+       
+    /**
+     * Determines if a code point has a defined meaning in the up-to-date 
+     * Unicode standard.
+     * E.g. supplementary code points though allocated space are not defined in 
+     * Unicode yet.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isDefined()
+     * @param ch code point to be determined if it is defined in the most 
+     *        current version of Unicode
+     * @return true if this code point is defined in unicode
+     * @stable ICU 2.1
+     */
+    public static boolean isDefined(int ch)
+    {
+        return getType(ch) != 0;
+    }
+                                    
+    /**
+     * Determines if a code point is a Java digit.
+     * <br>This method observes the semantics of
+     * <code>java.lang.Character.isDigit()</code>. It returns true for decimal 
+     * digits only.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this treated 
+     * numeric letters and other numbers as digits. 
+     * This has been changed to conform to the java semantics.
+     * @param ch code point to query
+     * @return true if this code point is a digit 
+     * @stable ICU 2.1
+     */
+    public static boolean isDigit(int ch)
+    {
+        return getType(ch) == UCharacterCategory.DECIMAL_DIGIT_NUMBER;
+    }
+
+    /**
+     * Determines if the specified code point is an ISO control character.
+     * A code point is considered to be an ISO control character if it is in 
+     * the range &#92u0000 through &#92u001F or in the range &#92u007F through 
+     * &#92u009F.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isISOControl()
+     * @param ch code point to determine if it is an ISO control character
+     * @return true if code point is a ISO control character
+     * @stable ICU 2.1
+     */
+    public static boolean isISOControl(int ch)
+    {
+        return ch >= 0 && ch <= APPLICATION_PROGRAM_COMMAND_ && 
+            ((ch <= UNIT_SEPARATOR_) || (ch >= DELETE_));
+    }
+                                    
+    /**
+     * Determines if the specified code point is a letter.
+     * Up-to-date Unicode implementation of java.lang.Character.isLetter()
+     * @param ch code point to determine if it is a letter
+     * @return true if code point is a letter
+     * @stable ICU 2.1
+     */
+    public static boolean isLetter(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER))) != 0;
+    }
+                
+    /**
+     * Determines if the specified code point is a letter or digit.
+     * Note this method, unlike java.lang.Character does not regard the ascii 
+     * characters 'A' - 'Z' and 'a' - 'z' as digits.
+     * @param ch code point to determine if it is a letter or a digit
+     * @return true if code point is a letter or a digit
+     * @stable ICU 2.1
+     */
+    public static boolean isLetterOrDigit(int ch)
+    {
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER))) != 0;
+    }
+     
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isJavaIdentifierStart.
+     * @param cp the code point
+     * @return true if the code point can start a java identifier.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isJavaLetter(int cp) {
+        return isJavaIdentifierStart(cp);
+    }
+
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isJavaIdentifierPart.
+     * @param cp the code point
+     * @return true if the code point can continue a java identifier.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isJavaLetterOrDigit(int cp) {
+        return isJavaIdentifierPart(cp);
+    }
+
+    /**
+     * Compatibility override of Java method, delegates to
+     * java.lang.Character.isJavaIdentifierStart.
+     * @param cp the code point
+     * @return true if the code point can start a java identifier.
+     * @stable ICU 3.4
+     */
+    public static boolean isJavaIdentifierStart(int cp) {
+        // note, downcast to char for jdk 1.4 compatibility
+        return java.lang.Character.isJavaIdentifierStart((char)cp);
+    }
+
+    /**
+     * Compatibility override of Java method, delegates to
+     * java.lang.Character.isJavaIdentifierPart.
+     * @param cp the code point
+     * @return true if the code point can continue a java identifier.
+     * @stable ICU 3.4
+     */
+    public static boolean isJavaIdentifierPart(int cp) {
+        // note, downcast to char for jdk 1.4 compatibility
+        return java.lang.Character.isJavaIdentifierPart((char)cp);
+    }
+
+    /**
+     * Determines if the specified code point is a lowercase character.
+     * UnicodeData only contains case mappings for code points where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br> For more information about Unicode case mapping 
+     * please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>Technical report 
+     * #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isLowerCase()
+     * @param ch code point to determine if it is in lowercase
+     * @return true if code point is a lowercase character
+     * @stable ICU 2.1
+     */
+    public static boolean isLowerCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.LOWERCASE_LETTER;
+    }
+       
+    /**
+     * Determines if the specified code point is a white space character.
+     * A code point is considered to be an whitespace character if and only
+     * if it satisfies one of the following criteria:
+     * <ul>
+     * <li> It is a Unicode space separator (category "Zs"), but is not
+     *      a no-break space (&#92u00A0 or &#92u202F or &#92uFEFF).
+     * <li> It is a Unicode line separator (category "Zl").
+     * <li> It is a Unicode paragraph separator (category "Zp").
+     * <li> It is &#92u0009, HORIZONTAL TABULATION. 
+     * <li> It is &#92u000A, LINE FEED. 
+     * <li> It is &#92u000B, VERTICAL TABULATION. 
+     * <li> It is &#92u000C, FORM FEED. 
+     * <li> It is &#92u000D, CARRIAGE RETURN. 
+     * <li> It is &#92u001C, FILE SEPARATOR. 
+     * <li> It is &#92u001D, GROUP SEPARATOR. 
+     * <li> It is &#92u001E, RECORD SEPARATOR. 
+     * <li> It is &#92u001F, UNIT SEPARATOR.  
+     * </ul>
+     *
+     * This API tries to synch to the semantics of the Java API,
+     * java.lang.Character.isWhitespace(). 
+     * @param ch code point to determine if it is a white space
+     * @return true if the specified code point is a white space character
+     * @stable ICU 2.1
+     */
+    public static boolean isWhitespace(int ch)
+    {
+        // exclude no-break spaces
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) & 
+                ((1 << UCharacterCategory.SPACE_SEPARATOR)
+                 | (1 << UCharacterCategory.LINE_SEPARATOR)
+                 | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR))) != 0 
+        && (ch != NO_BREAK_SPACE_) && (ch != NARROW_NO_BREAK_SPACE_) 
+        && (ch != ZERO_WIDTH_NO_BREAK_SPACE_)
+        // TAB VT LF FF CR FS GS RS US NL are all control characters
+        // that are white spaces.
+        || (ch >= 0x9 && ch <= 0xd) || (ch >= 0x1c && ch <= 0x1f);
+    }
+       
+    /**
+     * Determines if the specified code point is a Unicode specified space 
+     * character, i.e. if code point is in the category Zs, Zl and Zp.
+     * Up-to-date Unicode implementation of java.lang.Character.isSpaceChar().
+     * @param ch code point to determine if it is a space
+     * @return true if the specified code point is a space character
+     * @stable ICU 2.1
+     */
+    public static boolean isSpaceChar(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) & ((1 << UCharacterCategory.SPACE_SEPARATOR) 
+                      | (1 << UCharacterCategory.LINE_SEPARATOR)
+                      | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR)))
+        != 0;
+    }
+                                    
+    /**
+     * Determines if the specified code point is a titlecase character.
+     * UnicodeData only contains case mappings for code points where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br>
+     * For more information about Unicode case mapping please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>
+     * Technical report #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isTitleCase().
+     * @param ch code point to determine if it is in title case
+     * @return true if the specified code point is a titlecase character
+     * @stable ICU 2.1
+     */
+    public static boolean isTitleCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.TITLECASE_LETTER;
+    }
+       
+    /**
+     * Determines if the specified code point may be any part of a Unicode 
+     * identifier other than the starting character.
+     * A code point may be part of a Unicode identifier if and only if it is 
+     * one of the following: 
+     * <ul>
+     * <li> Lu Uppercase letter
+     * <li> Ll Lowercase letter
+     * <li> Lt Titlecase letter
+     * <li> Lm Modifier letter
+     * <li> Lo Other letter
+     * <li> Nl Letter number
+     * <li> Pc Connecting punctuation character 
+     * <li> Nd decimal number
+     * <li> Mc Spacing combining mark 
+     * <li> Mn Non-spacing mark 
+     * <li> Cf formatting code
+     * </ul>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isUnicodeIdentifierPart().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to determine if is can be part of a Unicode 
+     *        identifier
+     * @return true if code point is any character belonging a unicode 
+     *         identifier suffix after the first character
+     * @stable ICU 2.1
+     */
+    public static boolean isUnicodeIdentifierPart(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        // cat == format
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.LETTER_NUMBER) 
+           | (1 << UCharacterCategory.CONNECTOR_PUNCTUATION)
+           | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER)
+           | (1 << UCharacterCategory.COMBINING_SPACING_MARK)
+           | (1 << UCharacterCategory.NON_SPACING_MARK))) != 0
+        || isIdentifierIgnorable(ch);
+    }
+                       
+    /**
+     * Determines if the specified code point is permissible as the first 
+     * character in a Unicode identifier.
+     * A code point may start a Unicode identifier if it is of type either 
+     * <ul> 
+     * <li> Lu Uppercase letter
+     * <li> Ll Lowercase letter
+     * <li> Lt Titlecase letter
+     * <li> Lm Modifier letter
+     * <li> Lo Other letter
+     * <li> Nl Letter number
+     * </ul>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isUnicodeIdentifierStart().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to determine if it can start a Unicode identifier
+     * @return true if code point is the first character belonging a unicode 
+     *              identifier
+     * @stable ICU 2.1
+     */
+    public static boolean isUnicodeIdentifierStart(int ch)
+    {
+        /*int cat = getType(ch);*/
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.LETTER_NUMBER))) != 0;
+    }
+
+    /**
+     * Determines if the specified code point should be regarded as an 
+     * ignorable character in a Unicode identifier.
+     * A character is ignorable in the Unicode standard if it is of the type 
+     * Cf, Formatting code.<br>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isIdentifierIgnorable().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to be determined if it can be ignored in a Unicode 
+     *        identifier.
+     * @return true if the code point is ignorable
+     * @stable ICU 2.1
+     */
+    public static boolean isIdentifierIgnorable(int ch)
+    {
+        // see java.lang.Character.isIdentifierIgnorable() on range of 
+        // ignorable characters.
+        if (ch <= 0x9f) {
+        return isISOControl(ch) 
+        && !((ch >= 0x9 && ch <= 0xd) 
+             || (ch >= 0x1c && ch <= 0x1f));
+        } 
+        return getType(ch) == UCharacterCategory.FORMAT;
+    }
+                      
+    /**
+     * Determines if the specified code point is an uppercase character.
+     * UnicodeData only contains case mappings for code point where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br> 
+     * For language specific case conversion behavior, use 
+     * toUpperCase(locale, str). <br>
+     * For example, the case conversion for dot-less i and dotted I in Turkish,
+     * or for final sigma in Greek.
+     * For more information about Unicode case mapping please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>
+     * Technical report #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isUpperCase().
+     * @param ch code point to determine if it is in uppercase
+     * @return true if the code point is an uppercase character
+     * @stable ICU 2.1
+     */
+    public static boolean isUpperCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.UPPERCASE_LETTER;
+    }
+                       
+    /**
+     * The given code point is mapped to its lowercase equivalent; if the code 
+     * point has no lowercase equivalent, the code point itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toLowerCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point whose lowercase equivalent is to be retrieved
+     * @return the lowercase equivalent code point
+     * @stable ICU 2.1
+     */
+    public static int toLowerCase(int ch) {
+        return gCsp.tolower(ch);
+    }
+
+    /**
+     * Converts argument code point and returns a String object representing 
+     * the code point's value in UTF16 format.
+     * The result is a string whose length is 1 for non-supplementary code 
+     * points, 2 otherwise.<br>
+     * com.ibm.ibm.icu.UTF16 can be used to parse Strings generated by this 
+     * function.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.toString()
+     * @param ch code point
+     * @return string representation of the code point, null if code point is not
+     *         defined in unicode
+     * @stable ICU 2.1
+     */
+    public static String toString(int ch)
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+            return null;
+        }
+        
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char)ch);
+        }
+        
+        StringBuffer result = new StringBuffer();
+        result.append(UTF16.getLeadSurrogate(ch));
+        result.append(UTF16.getTrailSurrogate(ch));
+        return result.toString();
+    }
+                                    
+    /**
+     * Converts the code point argument to titlecase.
+     * If no titlecase is available, the uppercase is returned. If no uppercase 
+     * is available, the code point itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toTitleCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point  whose title case is to be retrieved
+     * @return titlecase code point
+     * @stable ICU 2.1
+     */
+    public static int toTitleCase(int ch) {
+        return gCsp.totitle(ch);
+    }
+       
+    /**
+     * Converts the character argument to uppercase.
+     * If no uppercase is available, the character itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toUpperCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point whose uppercase is to be retrieved
+     * @return uppercase code point
+     * @stable ICU 2.1
+     */
+    public static int toUpperCase(int ch) {
+        return gCsp.toupper(ch);
+    }
+       
+    // extra methods not in java.lang.Character --------------------------
+       
+    /**
+     * Determines if the code point is a supplementary character.
+     * A code point is a supplementary character if and only if it is greater 
+     * than <a href=#SUPPLEMENTARY_MIN_VALUE>SUPPLEMENTARY_MIN_VALUE</a>
+     * @param ch code point to be determined if it is in the supplementary 
+     *        plane
+     * @return true if code point is a supplementary character
+     * @stable ICU 2.1
+     */
+    public static boolean isSupplementary(int ch)
+    {
+        return ch >= UCharacter.SUPPLEMENTARY_MIN_VALUE && 
+            ch <= UCharacter.MAX_VALUE;
+    }
+      
+    /**
+     * Determines if the code point is in the BMP plane.
+     * @param ch code point to be determined if it is not a supplementary 
+     *        character
+     * @return true if code point is not a supplementary character
+     * @stable ICU 2.1
+     */
+    public static boolean isBMP(int ch) 
+    {
+        return (ch >= 0 && ch <= LAST_CHAR_MASK_);
+    }
+
+    /**
+     * Determines whether the specified code point is a printable character 
+     * according to the Unicode standard.
+     * @param ch code point to be determined if it is printable
+     * @return true if the code point is a printable character
+     * @stable ICU 2.1
+     */
+    public static boolean isPrintable(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return (cat != UCharacterCategory.UNASSIGNED && 
+        cat != UCharacterCategory.CONTROL && 
+        cat != UCharacterCategory.FORMAT &&
+        cat != UCharacterCategory.PRIVATE_USE &&
+        cat != UCharacterCategory.SURROGATE &&
+        cat != UCharacterCategory.GENERAL_OTHER_TYPES);
+    }
+
+    /**
+     * Determines whether the specified code point is of base form.
+     * A code point of base form does not graphically combine with preceding 
+     * characters, and is neither a control nor a format character.
+     * @param ch code point to be determined if it is of base form
+     * @return true if the code point is of base form
+     * @stable ICU 2.1
+     */
+    public static boolean isBaseForm(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER || 
+            cat == UCharacterCategory.OTHER_NUMBER || 
+            cat == UCharacterCategory.LETTER_NUMBER || 
+            cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER ||
+            cat == UCharacterCategory.MODIFIER_LETTER || 
+            cat == UCharacterCategory.OTHER_LETTER || 
+            cat == UCharacterCategory.NON_SPACING_MARK || 
+            cat == UCharacterCategory.ENCLOSING_MARK ||
+            cat == UCharacterCategory.COMBINING_SPACING_MARK;
+    }
+
+    /**
+     * Returns the Bidirection property of a code point.
+     * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional 
+     * property.<br>
+     * Result returned belongs to the interface 
+     * <a href=UCharacterDirection.html>UCharacterDirection</a>
+     * @param ch the code point to be determined its direction
+     * @return direction constant from UCharacterDirection.
+     * @stable ICU 2.1
+     */
+    public static int getDirection(int ch)
+    {
+        return gBdp.getClass(ch);
+    }
+
+    /**
+     * Determines whether the code point has the "mirrored" property.
+     * This property is set for characters that are commonly used in
+     * Right-To-Left contexts and need to be displayed with a "mirrored"
+     * glyph.
+     * @param ch code point whose mirror is to be determined
+     * @return true if the code point has the "mirrored" property
+     * @stable ICU 2.1
+     */
+    public static boolean isMirrored(int ch)
+    {
+        return gBdp.isMirrored(ch);
+    }
+
+    /**
+     * Maps the specified code point to a "mirror-image" code point.
+     * For code points with the "mirrored" property, implementations sometimes 
+     * need a "poor man's" mapping to another code point such that the default 
+     * glyph may serve as the mirror-image of the default glyph of the 
+     * specified code point.<br> 
+     * This is useful for text conversion to and from codepages with visual 
+     * order, and for displays without glyph selection capabilities.
+     * @param ch code point whose mirror is to be retrieved
+     * @return another code point that may serve as a mirror-image substitute, 
+     *         or ch itself if there is no such mapping or ch does not have the 
+     *         "mirrored" property
+     * @stable ICU 2.1
+     */
+    public static int getMirror(int ch)
+    {
+        return gBdp.getMirror(ch);
+    }
+      
+    /**
+     * Gets the combining class of the argument codepoint
+     * @param ch code point whose combining is to be retrieved
+     * @return the combining class of the codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCombiningClass(int ch)
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return NormalizerImpl.getCombiningClass(ch);
+    }
+      
+    /**
+     * A code point is illegal if and only if
+     * <ul>
+     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+     * <li> A surrogate value, 0xD800 to 0xDFFF
+     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+     * </ul>
+     * Note: legal does not mean that it is assigned in this version of Unicode.
+     * @param ch code point to determine if it is a legal code point by itself
+     * @return true if and only if legal. 
+     * @stable ICU 2.1
+     */
+    public static boolean isLegal(int ch) 
+    {
+        if (ch < MIN_VALUE) {
+            return false;
+        }
+        if (ch < UTF16.SURROGATE_MIN_VALUE) {
+            return true;
+        }
+        if (ch <= UTF16.SURROGATE_MAX_VALUE) {
+            return false;
+        }
+        if (UCharacterUtility.isNonCharacter(ch)) {
+            return false;
+        }
+        return (ch <= MAX_VALUE);
+    }
+      
+    /**
+     * A string is legal iff all its code points are legal.
+     * A code point is illegal if and only if
+     * <ul>
+     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+     * <li> A surrogate value, 0xD800 to 0xDFFF
+     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+     * </ul>
+     * Note: legal does not mean that it is assigned in this version of Unicode.
+     * @param str containing code points to examin
+     * @return true if and only if legal. 
+     * @stable ICU 2.1
+     */
+    public static boolean isLegal(String str) 
+    {
+        int size = str.length();
+        int codepoint;
+        for (int i = 0; i < size; i ++)
+        {
+        codepoint = UTF16.charAt(str, i);
+        if (!isLegal(codepoint)) {
+            return false;
+        }
+        if (isSupplementary(codepoint)) {
+            i ++;
+        }
+        }
+        return true;
+    }
+
+    /**
+     * Gets the version of Unicode data used. 
+     * @return the unicode version number used
+     * @stable ICU 2.1
+     */
+    public static VersionInfo getUnicodeVersion()
+    {
+        return PROPERTY_.m_unicodeVersion_;
+    }
+      
+    /**
+     * Retrieve the most current Unicode name of the argument code point, or 
+     * null if the character is unassigned or outside the range 
+     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+     * <br>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return most current Unicode name
+     * @stable ICU 2.1
+     */
+    public static String getName(int ch)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
+    }
+    
+    /**
+     * Gets the names for each of the characters in a string
+     * @param s string to format
+     * @param separator string to go between names
+     * @return string of names
+     * @stable ICU 3.8
+     */
+    public static String getName(String s, String separator) {
+        if (s.length() == 1) { // handle common case
+            return getName(s.charAt(0));
+        }
+        int cp;
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(UCharacter.getName(cp));
+        }
+        return sb.toString();
+    }
+      
+    /**
+     * Retrieve the earlier version 1.0 Unicode name of the argument code 
+     * point, or null if the character is unassigned or outside the range 
+     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+     * <br>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return version 1.0 Unicode name
+     * @stable ICU 2.1
+     */
+    public static String getName1_0(int ch)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, 
+                             UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Retrieves a name for a valid codepoint. Unlike, getName(int) and
+     * getName1_0(int), this method will return a name even for codepoints that
+     * are not assigned a name in UnicodeData.txt.
+     * </p>
+     * The names are returned in the following order.
+     * <ul>
+     * <li> Most current Unicode name if there is any
+     * <li> Unicode 1.0 name if there is any
+     * <li> Extended name in the form of 
+     *      "<codepoint_type-codepoint_hex_digits>". E.g. <noncharacter-fffe>
+     * </ul>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return a name for the argument codepoint
+     * @stable ICU 2.6
+     */
+    public static String getExtendedName(int ch) 
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, UCharacterNameChoice.EXTENDED_CHAR_NAME);
+    }
+    
+    /**
+     * Get the ISO 10646 comment for a character.
+     * The ISO 10646 comment is an informative field in the Unicode Character
+     * Database (UnicodeData.txt field 11) and is from the ISO 10646 names list.
+     * @param ch The code point for which to get the ISO comment.
+     *           It must be <code>0<=c<=0x10ffff</code>.
+     * @return The ISO comment, or null if there is no comment for this 
+     *         character.
+     * @stable ICU 2.4
+     */
+    public static String getISOComment(int ch)
+    {
+        if (ch < UCharacter.MIN_VALUE || ch > UCharacter.MAX_VALUE) {
+            return null;
+        }
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }    
+        String result = NAME_.getGroupName(ch, 
+                                           UCharacterNameChoice.ISO_COMMENT_);
+        return result;
+    }
+      
+    /**
+     * <p>Find a Unicode code point by its most current Unicode name and 
+     * return its code point value. All Unicode names are in uppercase.</p>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name most current Unicode character name whose code point is to 
+     *        be returned
+     * @return code point or -1 if name is not found
+     * @stable ICU 2.1
+     */
+    public static int getCharFromName(String name)
+    {     
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.UNICODE_CHAR_NAME, name);
+    }
+      
+    /**
+     * <p>Find a Unicode character by its version 1.0 Unicode name and return 
+     * its code point value. All Unicode names are in uppercase.</p>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name Unicode 1.0 code point name whose code point is to 
+     *             returned
+     * @return code point or -1 if name is not found
+     * @stable ICU 2.1
+     */
+    public static int getCharFromName1_0(String name)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.UNICODE_10_CHAR_NAME, name);
+    }
+    
+    /**
+     * <p>Find a Unicode character by either its name and return its code 
+     * point value. All Unicode names are in uppercase. 
+     * Extended names are all lowercase except for numbers and are contained
+     * within angle brackets.</p>
+     * The names are searched in the following order
+     * <ul>
+     * <li> Most current Unicode name if there is any
+     * <li> Unicode 1.0 name if there is any
+     * <li> Extended name in the form of 
+     *      "<codepoint_type-codepoint_hex_digits>". E.g. <noncharacter-FFFE>
+     * </ul>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name codepoint name
+     * @return code point associated with the name or -1 if the name is not
+     *         found.
+     * @stable ICU 2.6
+     */
+    public static int getCharFromExtendedName(String name)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.EXTENDED_CHAR_NAME, name);
+    }
+
+    /**
+     * Return the Unicode name for a given property, as given in the
+     * Unicode database file PropertyAliases.txt.  Most properties
+     * have more than one name.  The nameChoice determines which one
+     * is returned.
+     *
+     * In addition, this function maps the property
+     * UProperty.GENERAL_CATEGORY_MASK to the synthetic names "gcm" /
+     * "General_Category_Mask".  These names are not in
+     * PropertyAliases.txt.
+     * 
+     * @param property UProperty selector.
+     *
+     * @param nameChoice UProperty.NameChoice selector for which name
+     * to get.  All properties have a long name.  Most have a short
+     * name, but some do not.  Unicode allows for additional names; if
+     * present these will be returned by UProperty.NameChoice.LONG + i,
+     * where i=1, 2,...
+     *
+     * @return a name, or null if Unicode explicitly defines no name
+     * ("n/a") for a given property/nameChoice.  If a given nameChoice
+     * throws an exception, then all larger values of nameChoice will
+     * throw an exception.  If null is returned for a given
+     * nameChoice, then other nameChoice values may return non-null
+     * results.
+     *
+     * @exception IllegalArgumentException thrown if property or
+     * nameChoice are invalid.
+     *
+     * @see UProperty
+     * @see UProperty.NameChoice
+     * @stable ICU 2.4
+     */
+    public static String getPropertyName(int property,
+                                         int nameChoice) {
+        return PNAMES_.getPropertyName(property, nameChoice);
+    }
+
+    /**
+     * Return the UProperty selector for a given property name, as
+     * specified in the Unicode database file PropertyAliases.txt.
+     * Short, long, and any other variants are recognized.
+     *
+     * In addition, this function maps the synthetic names "gcm" /
+     * "General_Category_Mask" to the property
+     * UProperty.GENERAL_CATEGORY_MASK.  These names are not in
+     * PropertyAliases.txt.
+     *
+     * @param propertyAlias the property name to be matched.  The name
+     * is compared using "loose matching" as described in
+     * PropertyAliases.txt.
+     *
+     * @return a UProperty enum.
+     *
+     * @exception IllegalArgumentException thrown if propertyAlias
+     * is not recognized.
+     *
+     * @see UProperty
+     * @stable ICU 2.4
+     */
+    public static int getPropertyEnum(String propertyAlias) {
+        return PNAMES_.getPropertyEnum(propertyAlias);
+    }
+
+    /**
+     * Return the Unicode name for a given property value, as given in
+     * the Unicode database file PropertyValueAliases.txt.  Most
+     * values have more than one name.  The nameChoice determines
+     * which one is returned.
+     *
+     * Note: Some of the names in PropertyValueAliases.txt can only be
+     * retrieved using UProperty.GENERAL_CATEGORY_MASK, not
+     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
+     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
+     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
+     *
+     * @param property UProperty selector constant.
+     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
+     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
+     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
+     * If out of range, null is returned.
+     *
+     * @param value selector for a value for the given property.  In
+     * general, valid values range from 0 up to some maximum.  There
+     * are a few exceptions: (1.) UProperty.BLOCK values begin at the
+     * non-zero value BASIC_LATIN.getID().  (2.)
+     * UProperty.CANONICAL_COMBINING_CLASS values are not contiguous
+     * and range from 0..240.  (3.)  UProperty.GENERAL_CATEGORY_MASK values
+     * are mask values produced by left-shifting 1 by
+     * UCharacter.getType().  This allows grouped categories such as
+     * [:L:] to be represented.  Mask values are non-contiguous.
+     *
+     * @param nameChoice UProperty.NameChoice selector for which name
+     * to get.  All values have a long name.  Most have a short name,
+     * but some do not.  Unicode allows for additional names; if
+     * present these will be returned by UProperty.NameChoice.LONG + i,
+     * where i=1, 2,...
+     *
+     * @return a name, or null if Unicode explicitly defines no name
+     * ("n/a") for a given property/value/nameChoice.  If a given
+     * nameChoice throws an exception, then all larger values of
+     * nameChoice will throw an exception.  If null is returned for a
+     * given nameChoice, then other nameChoice values may return
+     * non-null results.
+     *
+     * @exception IllegalArgumentException thrown if property, value,
+     * or nameChoice are invalid.
+     *
+     * @see UProperty
+     * @see UProperty.NameChoice
+     * @stable ICU 2.4
+     */
+    public static String getPropertyValueName(int property,
+                                              int value,
+                                              int nameChoice) 
+    {
+        if ((property == UProperty.CANONICAL_COMBINING_CLASS
+             || property == UProperty.LEAD_CANONICAL_COMBINING_CLASS
+             || property == UProperty.TRAIL_CANONICAL_COMBINING_CLASS)
+            && value >= UCharacter.getIntPropertyMinValue(
+                              UProperty.CANONICAL_COMBINING_CLASS)
+            && value <= UCharacter.getIntPropertyMaxValue(
+                              UProperty.CANONICAL_COMBINING_CLASS)
+            && nameChoice >= 0 && nameChoice < UProperty.NameChoice.COUNT) {
+            // this is hard coded for the valid cc
+            // because PropertyValueAliases.txt does not contain all of them
+            try {
+                return PNAMES_.getPropertyValueName(property, value, 
+                                                    nameChoice);
+            }
+            catch (IllegalArgumentException e) {
+                return null;
+            }
+        }
+        return PNAMES_.getPropertyValueName(property, value, nameChoice);
+    }
+
+    /**
+     * Return the property value integer for a given value name, as
+     * specified in the Unicode database file PropertyValueAliases.txt.
+     * Short, long, and any other variants are recognized.
+     *
+     * Note: Some of the names in PropertyValueAliases.txt will only be
+     * recognized with UProperty.GENERAL_CATEGORY_MASK, not
+     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
+     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
+     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
+     *
+     * @param property UProperty selector constant.
+     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
+     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
+     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
+     * Only these properties can be enumerated.
+     *
+     * @param valueAlias the value name to be matched.  The name is
+     * compared using "loose matching" as described in
+     * PropertyValueAliases.txt.
+     *
+     * @return a value integer.  Note: UProperty.GENERAL_CATEGORY
+     * values are mask values produced by left-shifting 1 by
+     * UCharacter.getType().  This allows grouped categories such as
+     * [:L:] to be represented.
+     *
+     * @see UProperty
+     * @throws IllegalArgumentException if property is not a valid UProperty
+     *         selector
+     * @stable ICU 2.4
+     */
+    public static int getPropertyValueEnum(int property, String valueAlias) {
+        return PNAMES_.getPropertyValueEnum(property, valueAlias);
+    }
+      
+    /**
+     * Returns a code point corresponding to the two UTF16 characters.
+     * @param lead the lead char
+     * @param trail the trail char
+     * @return code point if surrogate characters are valid.
+     * @exception IllegalArgumentException thrown when argument characters do
+     *            not form a valid codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCodePoint(char lead, char trail) 
+    {
+        if (UTF16.isLeadSurrogate(lead) && UTF16.isTrailSurrogate(trail)) {
+            return UCharacterProperty.getRawSupplementary(lead, trail);
+        }
+        throw new IllegalArgumentException("Illegal surrogate characters");
+    }
+      
+    /**
+     * Returns the code point corresponding to the UTF16 character.
+     * @param char16 the UTF16 character
+     * @return code point if argument is a valid character.
+     * @exception IllegalArgumentException thrown when char16 is not a valid
+     *            codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCodePoint(char char16) 
+    {
+        if (UCharacter.isLegal(char16)) {
+            return char16;
+        }
+        throw new IllegalArgumentException("Illegal codepoint");
+    }
+
+    /**
+     * Implementation of UCaseProps.ContextIterator, iterates over a String.
+     * See ustrcase.c/utf16_caseContextIterator().
+     */
+    private static class StringContextIterator implements UCaseProps.ContextIterator {
+        /**
+         * Constructor.
+         * @param s String to iterate over. 
+         */
+        StringContextIterator(String s) {
+            this.s=s;
+            limit=s.length();
+            cpStart=cpLimit=index=0;
+            dir=0;
+        }
+
+        /**
+         * Set the iteration limit for nextCaseMapCP() to an index within the string.
+         * If the limit parameter is negative or past the string, then the
+         * string length is restored as the iteration limit.
+         *
+         * This limit does not affect the next() function which always
+         * iterates to the very end of the string.
+         *
+         * @param lim The iteration limit.
+         */
+        public void setLimit(int lim) {
+            if(0<=lim && lim<=s.length()) {
+                limit=lim;
+            } else {
+                limit=s.length();
+            }
+        }
+
+        /**
+         * Move to the iteration limit without fetching code points up to there.
+         */
+        public void moveToLimit() {
+            cpStart=cpLimit=limit;
+        }
+
+        /**
+         * Iterate forward through the string to fetch the next code point
+         * to be case-mapped, and set the context indexes for it.
+         * Performance optimization, to save on function calls and redundant
+         * tests. Combines UTF16.charAt(), UTF16.getCharCount(), and setIndex().
+         *
+         * When the iteration limit is reached (and -1 is returned),
+         * getCPStart() will be at the iteration limit.
+         *
+         * Iteration with next() does not affect the position for nextCaseMapCP().
+         *
+         * @return The next code point to be case-mapped, or <0 when the iteration is done.
+         */
+        public int nextCaseMapCP() {
+            cpStart=cpLimit;
+            if(cpLimit<limit) {
+                int c=s.charAt(cpLimit++);
+                if(UTF16.LEAD_SURROGATE_MIN_VALUE<=c || c<=UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+                    char c2;
+                    if( c<=UTF16.LEAD_SURROGATE_MAX_VALUE && cpLimit<limit &&
+                        UTF16.TRAIL_SURROGATE_MIN_VALUE<=(c2=s.charAt(cpLimit)) && c2<=UTF16.TRAIL_SURROGATE_MAX_VALUE
+                    ) {
+                        // supplementary code point
+                        ++cpLimit;
+                        c=UCharacterProperty.getRawSupplementary((char)c, c2);
+                    // else unpaired surrogate code point
+                    }
+                // else BMP code point
+                }
+                return c;
+            } else {
+                return -1;
+            }
+        }
+
+        /**
+         * Get the start of the code point that was last returned
+         * by nextCaseMapCP().
+         */
+        public int getCPStart() {
+            return cpStart;
+        }
+
+        /**
+         * Get the limit of the code point that was last returned
+         * by nextCaseMapCP().
+         */
+        public int getCPLimit() {
+            return cpLimit;
+        }
+
+        // implement UCaseProps.ContextIterator
+        public void reset(int direction) {
+            if(direction>0) {
+                /* reset for forward iteration */
+                dir=1;
+                index=cpLimit;
+            } else if(direction<0) {
+                /* reset for backward iteration */
+                dir=-1;
+                index=cpStart;
+            } else {
+                // not a valid direction
+                dir=0;
+                index=0;
+            }
+        }
+
+        public int next() {
+            int c;
+
+            if(dir>0 && index<s.length()) {
+                c=UTF16.charAt(s, index);
+                index+=UTF16.getCharCount(c);
+                return c;
+            } else if(dir<0 && index>0) {
+                c=UTF16.charAt(s, index-1);
+                index-=UTF16.getCharCount(c);
+                return c;
+            }
+            return -1;
+        }
+
+        // variables
+        protected String s;
+        protected int index, limit, cpStart, cpLimit;
+        protected int dir; // 0=initial state  >0=forward  <0=backward
+    }
+
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the default locale and context-sensitive.
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toUpperCase(String str)
+    {
+        return toUpperCase(ULocale.getDefault(), str);
+    }
+      
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the default locale and context-sensitive
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toLowerCase(String str)
+    {
+        return toLowerCase(ULocale.getDefault(), str);
+    }
+    
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the default locale and context-sensitive</p>
+     * @param str source string to be performed on
+     * @param breakiter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 2.6
+     */
+    public static String toTitleCase(String str, BreakIterator breakiter)
+    {
+        return toTitleCase(ULocale.getDefault(), str, breakiter);
+    }
+      
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive.
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toUpperCase(Locale locale, String str)
+    {
+        return toUpperCase(ULocale.forLocale(locale), str);
+    }
+
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive.
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toUpperCase(ULocale locale, String str) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c;
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=gCsp.toFullUpper(c, iter, result, locale, locCache);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toLowerCase(Locale locale, String str)
+    {
+        return toLowerCase(ULocale.forLocale(locale), str);
+    }
+
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toLowerCase(ULocale locale, String str) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c;
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=gCsp.toFullLower(c, iter, result, locale, locCache);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param breakiter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 2.6
+     */
+    public static String toTitleCase(Locale locale, String str, 
+                                     BreakIterator breakiter)
+    {
+        return toTitleCase(ULocale.forLocale(locale), str, breakiter);
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param titleIter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toTitleCase(ULocale locale, String str, 
+                                     BreakIterator titleIter) {
+        return toTitleCase(locale, str, titleIter, 0);
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param titleIter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @param options bit set to modify the titlecasing operation
+     * @return lowercase version of the argument string
+     * @stable ICU 3.8
+     * @see #TITLECASE_NO_LOWERCASE
+     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
+     */
+    public static String toTitleCase(ULocale locale, String str, 
+                                     BreakIterator titleIter,
+                                     int options) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c, nc, srcLength = str.length();
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        if(titleIter == null) {
+            titleIter = BreakIterator.getWordInstance(locale);
+        }
+        titleIter.setText(str);
+
+        int prev, titleStart, index;
+        boolean isFirstIndex;
+        boolean isDutch = locale.getLanguage().equals("nl");
+        boolean FirstIJ = true;
+
+        /* set up local variables */
+        prev=0;
+        isFirstIndex=true;
+
+        /* titlecasing loop */
+        while(prev<srcLength) {
+            /* find next index where to titlecase */
+            if(isFirstIndex) {
+                isFirstIndex=false;
+                index=titleIter.first();
+            } else {
+                index=titleIter.next();
+            }
+            if(index==BreakIterator.DONE || index>srcLength) {
+                index=srcLength;
+            }
+
+            /*
+             * Unicode 4 & 5 section 3.13 Default Case Operations:
+             *
+             * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
+             * #29, "Text Boundaries." Between each pair of word boundaries, find the first
+             * cased character F. If F exists, map F to default_title(F); then map each
+             * subsequent character C to default_lower(C).
+             *
+             * In this implementation, segment [prev..index[ into 3 parts:
+             * a) uncased characters (copy as-is) [prev..titleStart[
+             * b) first case letter (titlecase)         [titleStart..titleLimit[
+             * c) subsequent characters (lowercase)                 [titleLimit..index[
+             */
+            if(prev<index) {
+                /* find and copy uncased characters [prev..titleStart[ */
+                iter.setLimit(index);
+                c=iter.nextCaseMapCP();
+                if((options&TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCaseProps.NONE==gCsp.getType(c)) {
+                    while((c=iter.nextCaseMapCP())>=0 && UCaseProps.NONE==gCsp.getType(c)) {}
+                    titleStart=iter.getCPStart();
+                    if(prev<titleStart) {
+                        // TODO: With Java 5, this would want to be result.append(str, prev, titleStart);
+                        result.append(str.substring(prev, titleStart));
+                    }
+                } else {
+                    titleStart=prev;
+                }
+
+                if(titleStart<index) {
+                    FirstIJ = true;
+                    /* titlecase c which is from titleStart */
+                    c=gCsp.toFullTitle(c, iter, result, locale, locCache);
+
+                    /* decode the result and lowercase up to index */
+                    for(;;) {
+                        if(c<0) {
+                            /* (not) original code point */
+                            c=~c;
+                            if(c<=0xffff) {
+                                result.append((char)c);
+                            } else {
+                                UTF16.append(result, c);
+                            }
+                        } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                            /* mapping already appended to result */
+                        } else {
+                            /* append single-code point mapping */
+                            if(c<=0xffff) {
+                                result.append((char)c);
+                            } else {
+                                UTF16.append(result, c);
+                            }
+                        }
+
+                        if((options&TITLECASE_NO_LOWERCASE)!=0) {
+                            /* Optionally just copy the rest of the word unchanged. */
+
+                            int titleLimit=iter.getCPLimit();
+                            if(titleLimit<index) {
+                            // TODO: With Java 5, this would want to be result.append(str, titleLimit, index);
+                                String appendStr = str.substring(titleLimit,index);
+                                /* Special Case - Dutch IJ Titlecasing */
+                                if ( isDutch && c == 0x0049 && appendStr.startsWith("j")) {
+                                   appendStr = "J" + appendStr.substring(1);
+                                }
+                                result.append(appendStr);
+                                iter.moveToLimit();
+                                break;
+                            }
+                        } else if((nc=iter.nextCaseMapCP())>=0) {
+                            if ( isDutch && ( nc == 0x004A ||  nc == 0x006A ) && ( c == 0x0049 ) && ( FirstIJ == true )) {
+                                c = 0x004A; /* J */
+                                FirstIJ = false;
+                            } else {
+                                /* Normal operation: Lowercase the rest of the word. */
+                                c=gCsp.toFullLower(nc, iter, result, locale, locCache);
+                            }
+                        } else {
+                            break;
+                        }
+                    }
+                }
+            }
+
+            prev=index;
+        }
+        return result.toString();
+    }
+
+    /**
+     * The given character is mapped to its case folding equivalent according 
+     * to UnicodeData.txt and CaseFolding.txt; if the character has no case 
+     * folding equivalent, the character itself is returned.
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They can map to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch             the character to be converted
+     * @param defaultmapping Indicates if all mappings defined in 
+     *                       CaseFolding.txt is to be used, otherwise the 
+     *                       mappings for dotted I  and dotless i marked with 
+     *                       'I' in CaseFolding.txt will be skipped.
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see                  #foldCase(String, boolean)
+     * @stable ICU 2.1
+     */
+    public static int foldCase(int ch, boolean defaultmapping) {
+        return foldCase(ch, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
+    }
+
+    /**
+     * The given string is mapped to its case folding equivalent according to
+     * UnicodeData.txt and CaseFolding.txt; if any character has no case 
+     * folding equivalent, the character itself is returned.
+     * "Full", multiple-code point case folding mappings are returned here.
+     * For "simple" single-code point mappings use the API 
+     * foldCase(int ch, boolean defaultmapping).
+     * @param str            the String to be converted
+     * @param defaultmapping Indicates if all mappings defined in 
+     *                       CaseFolding.txt is to be used, otherwise the 
+     *                       mappings for dotted I and dotless i marked with 
+     *                       'I' in CaseFolding.txt will be skipped.
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see                  #foldCase(int, boolean)
+     * @stable ICU 2.1
+     */
+    public static String foldCase(String str, boolean defaultmapping) {
+        return foldCase(str, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
+    }
+    
+    /**
+     * Option value for case folding: use default mappings defined in CaseFolding.txt.
+     * @stable ICU 2.6
+     */
+    public static final int FOLD_CASE_DEFAULT    =      0x0000;
+    /** 
+     * Option value for case folding: exclude the mappings for dotted I 
+     * and dotless i marked with 'I' in CaseFolding.txt. 
+     * @stable ICU 2.6
+     */
+    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 0x0001;
+    
+    /**
+     * The given character is mapped to its case folding equivalent according 
+     * to UnicodeData.txt and CaseFolding.txt; if the character has no case 
+     * folding equivalent, the character itself is returned.
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They can map to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch             the character to be converted
+     * @param options        A bit set for special processing. Currently the recognised options are
+     *                        FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT 
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see #foldCase(String, boolean)
+     * @stable ICU 2.6
+     */
+    public static int foldCase(int ch, int options) {
+        return gCsp.fold(ch, options);
+    }
+    
+    /**
+     * The given string is mapped to its case folding equivalent according to
+     * UnicodeData.txt and CaseFolding.txt; if any character has no case 
+     * folding equivalent, the character itself is returned.
+     * "Full", multiple-code point case folding mappings are returned here.
+     * For "simple" single-code point mappings use the API 
+     * foldCase(int ch, boolean defaultmapping).
+     * @param str            the String to be converted
+     * @param options        A bit set for special processing. Currently the recognised options are
+     *                        FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT 
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see #foldCase(int, boolean)
+     * @stable ICU 2.6
+     */
+    public static final String foldCase(String str, int options) {
+        StringBuffer result = new StringBuffer(str.length());
+        int c, i, length;
+
+        length = str.length();
+        for(i=0; i<length;) {
+            c=UTF16.charAt(str, i);
+            i+=UTF16.getCharCount(c);
+            c=gCsp.toFullFolding(c, result, options);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Return numeric value of Han code points.
+     * <br> This returns the value of Han 'numeric' code points,
+     * including those for zero, ten, hundred, thousand, ten thousand,
+     * and hundred million.
+     * This includes both the standard and 'checkwriting'
+     * characters, the 'big circle' zero character, and the standard
+     * zero character.
+     * @param ch code point to query
+     * @return value if it is a Han 'numeric character,' otherwise return -1.  
+     * @stable ICU 2.4
+     */
+    public static int getHanNumericValue(int ch)
+    {
+        // TODO: Are these all covered by Unicode numeric value data?
+        switch(ch)
+        {
+        case IDEOGRAPHIC_NUMBER_ZERO_ :
+        case CJK_IDEOGRAPH_COMPLEX_ZERO_ :
+        return 0; // Han Zero
+        case CJK_IDEOGRAPH_FIRST_ :
+        case CJK_IDEOGRAPH_COMPLEX_ONE_ :
+        return 1; // Han One
+        case CJK_IDEOGRAPH_SECOND_ :
+        case CJK_IDEOGRAPH_COMPLEX_TWO_ :
+        return 2; // Han Two
+        case CJK_IDEOGRAPH_THIRD_ :
+        case CJK_IDEOGRAPH_COMPLEX_THREE_ :
+        return 3; // Han Three
+        case CJK_IDEOGRAPH_FOURTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FOUR_ :
+        return 4; // Han Four
+        case CJK_IDEOGRAPH_FIFTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FIVE_ :
+        return 5; // Han Five
+        case CJK_IDEOGRAPH_SIXTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SIX_ :
+        return 6; // Han Six
+        case CJK_IDEOGRAPH_SEVENTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SEVEN_ :
+        return 7; // Han Seven
+        case CJK_IDEOGRAPH_EIGHTH_ : 
+        case CJK_IDEOGRAPH_COMPLEX_EIGHT_ :
+        return 8; // Han Eight
+        case CJK_IDEOGRAPH_NINETH_ :
+        case CJK_IDEOGRAPH_COMPLEX_NINE_ :
+        return 9; // Han Nine
+        case CJK_IDEOGRAPH_TEN_ :
+        case CJK_IDEOGRAPH_COMPLEX_TEN_ :
+        return 10;
+        case CJK_IDEOGRAPH_HUNDRED_ :
+        case CJK_IDEOGRAPH_COMPLEX_HUNDRED_ :
+        return 100;
+        case CJK_IDEOGRAPH_THOUSAND_ :
+        case CJK_IDEOGRAPH_COMPLEX_THOUSAND_ :
+        return 1000;
+        case CJK_IDEOGRAPH_TEN_THOUSAND_ :
+        return 10000;
+        case CJK_IDEOGRAPH_HUNDRED_MILLION_ :
+        return 100000000;
+        }
+        return -1; // no value
+    }
+    
+    /**
+     * <p>Gets an iterator for character types, iterating over codepoints.</p>
+     * Example of use:<br>
+     * <pre>
+     * RangeValueIterator iterator = UCharacter.getTypeIterator();
+     * RangeValueIterator.Element element = new RangeValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.start) + 
+     *                        " to codepoint \\u" +
+     *                        Integer.toHexString(element.limit - 1) + 
+     *                        " has the character type " + 
+     *                        element.value);
+     * }
+     * </pre>
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static RangeValueIterator getTypeIterator()
+    {
+        return new UCharacterTypeIterator(PROPERTY_);
+    }
+
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the modern, most up-to-date 
+     * Unicode names. For older 1.0 Unicode names use get1_0NameIterator() or
+     * for extended names use getExtendedNameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.getNameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * UCharacter.MIN_VALUE to UCharacter.MAX_VALUE.</p>
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getNameIterator()
+    {
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.UNICODE_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the older 1.0 Unicode names. 
+     * For modern, most up-to-date Unicode names use getNameIterator() or
+     * for extended names use getExtendedNameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.get1_0NameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getName1_0Iterator()
+    {
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the extended names. 
+     * For modern, most up-to-date Unicode names use getNameIterator() or
+     * for older 1.0 Unicode names use get1_0NameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.getExtendedNameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getExtendedNameIterator()
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.EXTENDED_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a 
+     * character.
+     * <p>This can be useful to avoid emitting code points to receiving 
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * @param ch The code point.
+     * @return the Unicode version number
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getAge(int ch) 
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return PROPERTY_.getAge(ch);
+    }
+    
+    /**
+     * <p>Check a binary Unicode property for a code point.</p> 
+     * <p>Unicode, especially in version 3.2, defines many more properties 
+     * than the original set in UnicodeData.txt.</p>
+     * <p>This API is intended to reflect Unicode properties as defined in 
+     * the Unicode Character Database (UCD) and Unicode Technical Reports 
+     * (UTR).</p>
+     * <p>For details about the properties see 
+     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+     * <p>For names of Unicode properties see the UCD file 
+     * PropertyAliases.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * <p>Important: If ICU is built with UCD files from Unicode versions 
+     * below 3.2, then properties marked with "new" are not or 
+     * not fully available.</p>
+     * @param ch code point to test.
+     * @param property selector constant from com.ibm.icu.lang.UProperty, 
+     *        identifies which binary property to check.
+     * @return true or false according to the binary Unicode property value 
+     *         for ch. Also false if property is out of bounds or if the 
+     *         Unicode version does not have data for the property at all, or 
+     *         not for this code point.
+     * @see com.ibm.icu.lang.UProperty
+     * @stable ICU 2.6
+     */
+    public static boolean hasBinaryProperty(int ch, int property) 
+    {
+    if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return PROPERTY_.hasBinaryProperty(ch, property);
+    }
+        
+    /**
+     * <p>Check if a code point has the Alphabetic Unicode property.</p> 
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.ALPHABETIC).</p>
+     * <p>Different from UCharacter.isLetter(ch)!</p> 
+     * @stable ICU 2.6
+     * @param ch codepoint to be tested
+     */
+    public static boolean isUAlphabetic(int ch)
+    {
+    return hasBinaryProperty(ch, UProperty.ALPHABETIC);
+    }
+
+    /**
+     * <p>Check if a code point has the Lowercase Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.LOWERCASE).</p>
+     * <p>This is different from UCharacter.isLowerCase(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isULowercase(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.LOWERCASE);
+    }
+
+    /**
+     * <p>Check if a code point has the Uppercase Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.UPPERCASE).</p>
+     * <p>This is different from UCharacter.isUpperCase(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isUUppercase(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.UPPERCASE);
+    }
+
+    /**
+     * <p>Check if a code point has the White_Space Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.WHITE_SPACE).</p>
+     * <p>This is different from both UCharacter.isSpace(ch) and 
+     * UCharacter.isWhitespace(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isUWhiteSpace(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.WHITE_SPACE);
+    }
+
+
+    /**
+     * <p>Gets the property value for an Unicode property type of a code point. 
+     * Also returns binary and mask property values.</p>
+     * <p>Unicode, especially in version 3.2, defines many more properties than 
+     * the original set in UnicodeData.txt.</p>
+     * <p>The properties APIs are intended to reflect Unicode properties as 
+     * defined in the Unicode Character Database (UCD) and Unicode Technical 
+     * Reports (UTR). For details about the properties see 
+     * http://www.unicode.org/.</p>
+     * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
+     * </p>
+     * <pre>
+     * Sample usage:
+     * int ea = UCharacter.getIntPropertyValue(c, UProperty.EAST_ASIAN_WIDTH);
+     * int ideo = UCharacter.getIntPropertyValue(c, UProperty.IDEOGRAPHIC);
+     * boolean b = (ideo == 1) ? true : false; 
+     * </pre>
+     * @param ch code point to test.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT or 
+     *        UProperty.MASK_START &lt;= type &lt; UProperty.MASK_LIMIT.
+     * @return numeric value that is directly the property value or,
+     *         for enumerated properties, corresponds to the numeric value of 
+     *         the enumerated constant of the respective property value 
+     *         enumeration type (cast to enum type if necessary).
+     *         Returns 0 or 1 (for false / true) for binary Unicode properties.
+     *         Returns a bit-mask for mask properties.
+     *         Returns 0 if 'type' is out of bounds or if the Unicode version
+     *         does not have data for the property at all, or not for this code 
+     *         point.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getIntPropertyMinValue
+     * @see #getIntPropertyMaxValue
+     * @see #getUnicodeVersion
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyValue(int ch, int type)
+    {
+        if (type < UProperty.BINARY_START) {
+            return 0; // undefined
+        } 
+        else if (type < UProperty.BINARY_LIMIT) {
+            return hasBinaryProperty(ch, type) ? 1 : 0;
+        } 
+        else if (type < UProperty.INT_START) {
+            return 0; // undefined
+        } 
+        else if (type < UProperty.INT_LIMIT) {
+            //int result = 0;
+            switch (type) {
+            case UProperty.BIDI_CLASS:
+                return getDirection(ch);
+            case UProperty.BLOCK:
+                return UnicodeBlock.idOf(ch);
+            case UProperty.CANONICAL_COMBINING_CLASS:
+                return getCombiningClass(ch);
+            case UProperty.DECOMPOSITION_TYPE:
+                return PROPERTY_.getAdditional(ch, 2) 
+            & DECOMPOSITION_TYPE_MASK_;
+            case UProperty.EAST_ASIAN_WIDTH:
+                return (PROPERTY_.getAdditional(ch, 0)
+            & EAST_ASIAN_MASK_) >> EAST_ASIAN_SHIFT_;
+            case UProperty.GENERAL_CATEGORY:
+                return getType(ch);
+            case UProperty.JOINING_GROUP:
+                return gBdp.getJoiningGroup(ch);
+            case UProperty.JOINING_TYPE:
+                return gBdp.getJoiningType(ch);
+            case UProperty.LINE_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, LB_VWORD)& LB_MASK)>>LB_SHIFT;
+            case UProperty.NUMERIC_TYPE:
+                type=getNumericType(PROPERTY_.getProperty(ch));
+                if(type>NumericType.NUMERIC) {
+                    /* keep internal variants of NumericType.NUMERIC from becoming visible */
+                    type=NumericType.NUMERIC;
+                }
+                return type;
+            case UProperty.SCRIPT:
+                return UScript.getScript(ch);
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+        /* purely algorithmic; hardcode known characters, check for assigned new ones */ 
+        if(ch<NormalizerImpl.JAMO_L_BASE) { 
+            /* NA */ 
+        } else if(ch<=0x11ff) { 
+            /* Jamo range */ 
+            if(ch<=0x115f) { 
+            /* Jamo L range, HANGUL CHOSEONG ... */ 
+            if(ch==0x115f || ch<=0x1159 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.LEADING_JAMO; 
+            } 
+            } else if(ch<=0x11a7) { 
+            /* Jamo V range, HANGUL JUNGSEONG ... */ 
+            if(ch<=0x11a2 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.VOWEL_JAMO; 
+            } 
+            } else { 
+            /* Jamo T range */ 
+            if(ch<=0x11f9 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.TRAILING_JAMO; 
+            } 
+            } 
+        } else if((ch-=NormalizerImpl.HANGUL_BASE)<0) { 
+            /* NA */ 
+        } else if(ch<NormalizerImpl.HANGUL_COUNT) { 
+            /* Hangul syllable */ 
+            return ch%NormalizerImpl.JAMO_T_COUNT==0 ? HangulSyllableType.LV_SYLLABLE : HangulSyllableType.LVT_SYLLABLE; 
+        } 
+        return 0; /* NA */ 
+
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+                return NormalizerImpl.quickCheck(ch, (type-UProperty.NFD_QUICK_CHECK)+2); // 2=UNORM_NFD
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+                return NormalizerImpl.getFCD16(ch)>>8;
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return NormalizerImpl.getFCD16(ch)&0xff;
+            case UProperty.GRAPHEME_CLUSTER_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& GCB_MASK)>>GCB_SHIFT;
+            case UProperty.SENTENCE_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& SB_MASK)>>SB_SHIFT;
+            case UProperty.WORD_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& WB_MASK)>>WB_SHIFT;
+            default:
+               
+        return 0; /* undefined */
+            }
+        } else if (type == UProperty.GENERAL_CATEGORY_MASK) {
+            return UCharacterProperty.getMask(getType(ch));
+        }
+        return 0; // undefined
+    }
+    /**
+     * Returns a string version of the property value.
+     * @param propertyEnum
+     * @param codepoint
+     * @param nameChoice
+     * @return value as string
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static String getStringPropertyValue(int propertyEnum, int codepoint, int nameChoice) {
+        // TODO some of these are less efficient, since a string is forced!
+        if ((propertyEnum >= UProperty.BINARY_START && propertyEnum < UProperty.BINARY_LIMIT) ||
+                (propertyEnum >= UProperty.INT_START && propertyEnum < UProperty.INT_LIMIT)) {
+            return getPropertyValueName(propertyEnum, getIntPropertyValue(codepoint, propertyEnum), nameChoice);
+        }
+        if (propertyEnum == UProperty.NUMERIC_VALUE) {
+                return String.valueOf(getUnicodeNumericValue(codepoint));
+        }
+        // otherwise must be string property
+        switch (propertyEnum) {
+        case UProperty.AGE: return getAge(codepoint).toString();
+        case UProperty.ISO_COMMENT: return getISOComment(codepoint);
+        case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(getMirror(codepoint));
+        case UProperty.CASE_FOLDING: return foldCase(UTF16.valueOf(codepoint), true);
+        case UProperty.LOWERCASE_MAPPING: return toLowerCase(UTF16.valueOf(codepoint));
+        case UProperty.NAME: return getName(codepoint);
+        case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(foldCase(codepoint,true));
+        case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(toLowerCase(codepoint));
+        case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(toTitleCase(codepoint));
+        case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(toUpperCase(codepoint));
+        case UProperty.TITLECASE_MAPPING: return toTitleCase(UTF16.valueOf(codepoint),null);
+        case UProperty.UNICODE_1_NAME: return getName1_0(codepoint);
+        case UProperty.UPPERCASE_MAPPING: return toUpperCase(UTF16.valueOf(codepoint));        
+        }
+        throw new IllegalArgumentException("Illegal Property Enum");
+    }
+    
+    /**
+     * Get the minimum value for an integer/binary Unicode property type.
+     * Can be used together with UCharacter.getIntPropertyMaxValue(int)
+     * to allocate arrays of com.ibm.icu.text.UnicodeSet or similar.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
+     * @return Minimum value returned by UCharacter.getIntPropertyValue(int) 
+     *         for a Unicode property. 0 if the property 
+     *         selector 'type' is out of range.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getUnicodeVersion
+     * @see #getIntPropertyMaxValue
+     * @see #getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyMinValue(int type)
+    {
+
+        return 0; // undefined; and: all other properties have a minimum value 
+    // of 0
+    }
+
+    
+    /**
+     * Get the maximum value for an integer/binary Unicode property.
+     * Can be used together with UCharacter.getIntPropertyMinValue(int)
+     * to allocate arrays of com.ibm.icu.text.UnicodeSet or similar.
+     * Examples for min/max values (for Unicode 3.2):
+     * <ul>
+     * <li> UProperty.BIDI_CLASS:    0/18 (UCharacterDirection.LEFT_TO_RIGHT/UCharacterDirection.BOUNDARY_NEUTRAL)
+     * <li> UProperty.SCRIPT:        0/45 (UScript.COMMON/UScript.TAGBANWA)
+     * <li> UProperty.IDEOGRAPHIC:   0/1  (false/true)
+     * </ul>
+     * For undefined UProperty constant values, min/max values will be 0/-1.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
+     * @return Maximum value returned by u_getIntPropertyValue for a Unicode 
+     *         property. &lt;= 0 if the property selector 'type' is out of range.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getUnicodeVersion
+     * @see #getIntPropertyMaxValue
+     * @see #getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyMaxValue(int type)
+    { 
+        if (type < UProperty.BINARY_START) {
+            return -1; // undefined
+        } 
+        else if (type < UProperty.BINARY_LIMIT) {
+            return 1; // maximum TRUE for all binary properties
+        } 
+        else if (type < UProperty.INT_START) {
+            return -1; // undefined
+        } 
+        else if (type < UProperty.INT_LIMIT) {
+            switch (type) {
+            case UProperty.BIDI_CLASS:
+            case UProperty.JOINING_GROUP:
+            case UProperty.JOINING_TYPE:
+                return gBdp.getMaxValue(type);
+            case UProperty.BLOCK:
+                return (PROPERTY_.getMaxValues(0) & BLOCK_MASK_) >> BLOCK_SHIFT_;
+            case UProperty.CANONICAL_COMBINING_CLASS:
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return 0xff; // TODO do we need to be more precise, 
+                             // getting the actual maximum?
+            case UProperty.DECOMPOSITION_TYPE:
+                return PROPERTY_.getMaxValues(2) & DECOMPOSITION_TYPE_MASK_;
+            case UProperty.EAST_ASIAN_WIDTH:
+                return (PROPERTY_.getMaxValues(0) & EAST_ASIAN_MASK_) >> EAST_ASIAN_SHIFT_;
+            case UProperty.GENERAL_CATEGORY:
+                return UCharacterCategory.CHAR_CATEGORY_COUNT - 1;
+            case UProperty.LINE_BREAK:
+                return (PROPERTY_.getMaxValues(LB_VWORD) & LB_MASK) >> LB_SHIFT;
+            case UProperty.NUMERIC_TYPE:
+                return NumericType.COUNT - 1;
+            case UProperty.SCRIPT:
+                return PROPERTY_.getMaxValues(0) & SCRIPT_MASK_;   
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+                return HangulSyllableType.COUNT-1;
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+                return 1; // YES -- these are never "maybe", only "no" or "yes"
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+                return 2; // MAYBE
+            case UProperty.GRAPHEME_CLUSTER_BREAK:
+                return (PROPERTY_.getMaxValues(2) & GCB_MASK) >> GCB_SHIFT;
+            case UProperty.SENTENCE_BREAK:
+                return (PROPERTY_.getMaxValues(2) & SB_MASK) >> SB_SHIFT;
+            case UProperty.WORD_BREAK:
+                return (PROPERTY_.getMaxValues(2) & WB_MASK) >> WB_SHIFT;
+            default:
+                return -1; // undefined
+            }
+
+        }
+        return -1; // undefined
+    }
+
+    /**
+     * Provide the java.lang.Character forDigit API, for convenience.
+     * @stable ICU 3.0
+     */
+    public static char forDigit(int digit, int radix) {
+        return java.lang.Character.forDigit(digit, radix);
+    }
+
+    // JDK 1.5 API coverage
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#LEAD_SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_HIGH_SURROGATE = UTF16.LEAD_SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#LEAD_SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_HIGH_SURROGATE = UTF16.LEAD_SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#TRAIL_SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_LOW_SURROGATE = UTF16.TRAIL_SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#TRAIL_SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_LOW_SURROGATE = UTF16.TRAIL_SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_SURROGATE = UTF16.SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_SURROGATE = UTF16.SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SUPPLEMENTARY_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MIN_SUPPLEMENTARY_CODE_POINT = UTF16.SUPPLEMENTARY_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#CODEPOINT_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MAX_CODE_POINT = UTF16.CODEPOINT_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#CODEPOINT_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MIN_CODE_POINT = UTF16.CODEPOINT_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param cp the code point to check
+     * @return true if cp is a valid code point
+     * @stable ICU 3.0
+     */
+    public static final boolean isValidCodePoint(int cp) {
+        return cp >= 0 && cp <= MAX_CODE_POINT;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param cp the code point to check
+     * @return true if cp is a supplementary code point
+     * @stable ICU 3.0
+     */
+    public static final boolean isSupplementaryCodePoint(int cp) {
+        return cp >= UTF16.SUPPLEMENTARY_MIN_VALUE
+            && cp <= UTF16.CODEPOINT_MAX_VALUE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param ch the char to check
+     * @return true if ch is a high (lead) surrogate
+     * @stable ICU 3.0
+     */
+    public static boolean isHighSurrogate(char ch) {
+        return ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param ch the char to check
+     * @return true if ch is a low (trail) surrogate
+     * @stable ICU 3.0
+     */
+    public static boolean isLowSurrogate(char ch) {
+        return ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return true if the chars
+     * form a valid surrogate pair.
+     * @param high the high (lead) char
+     * @param low the low (trail) char
+     * @return true if high, low form a surrogate pair
+     * @stable ICU 3.0
+     */
+    public static final boolean isSurrogatePair(char high, char low) {
+        return isHighSurrogate(high) && isLowSurrogate(low);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the number of chars needed
+     * to represent the code point.  This does not check the
+     * code point for validity.
+     * @param cp the code point to check
+     * @return the number of chars needed to represent the code point
+     * @see UTF16#getCharCount
+     * @stable ICU 3.0
+     */
+    public static int charCount(int cp) {
+        return UTF16.getCharCount(cp);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point represented by
+     * the characters.  This does not check the surrogate pair for validity.
+     * @param high the high (lead) surrogate
+     * @param low the low (trail) surrogate
+     * @return the code point formed by the surrogate pair
+     * @stable ICU 3.0
+     */
+    public static final int toCodePoint(char high, char low) {
+        return UCharacterProperty.getRawSupplementary(high, low);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param seq the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static final int codePointAt(String seq, int index) {
+//##        char c1 = seq.charAt(index++);
+//##        if (isHighSurrogate(c1)) {
+//##            if (index < seq.length()) {
+//##                char c2 = seq.charAt(index);
+//##                if (isLowSurrogate(c2)) {
+//##                    return toCodePoint(c1, c2);
+//##                }
+//##            }
+//##        }
+//##        return c1;
+//##    }
+//##    public static final int codePointAt(StringBuffer seq, int index) {
+//##        return codePointAt(seq.toString(), index);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static final int codePointAt(String seq, int index) {
+//##        return codePointAt((CharSequence)seq, index);
+//##    }
+//##    public static final int codePointAt(StringBuffer seq, int index) {
+//##        return codePointAt((CharSequence)seq, index);
+//##    }
+//#endif
+    public static final int codePointAt(CharSequence seq, int index) {
+        char c1 = seq.charAt(index++);
+        if (isHighSurrogate(c1)) {
+            if (index < seq.length()) {
+                char c2 = seq.charAt(index);
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+//#endif
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param text the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointAt(char[] text, int index) {
+        char c1 = text[index++];
+        if (isHighSurrogate(c1)) {
+            if (index < text.length) {
+                char c2 = text[index];
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param text the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @param limit the limit of the valid text
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointAt(char[] text, int index, int limit) {
+    if (index >= limit || limit > text.length) {
+        throw new IndexOutOfBoundsException();
+    }
+        char c1 = text[index++];
+        if (isHighSurrogate(c1)) {
+            if (index < limit) {
+                char c2 = text[index];
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param seq the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static final int codePointBefore(String seq, int index) {
+//##        char c2 = seq.charAt(--index);
+//##        if (isLowSurrogate(c2)) {
+//##            if (index > 0) {
+//##                char c1 = seq.charAt(--index);
+//##                if (isHighSurrogate(c1)) {
+//##                    return toCodePoint(c1, c2);
+//##                }
+//##            }
+//##        }
+//##        return c2;
+//##    }
+//##    public static final int codePointBefore(StringBuffer seq, int index) {
+//##        return codePointBefore(seq.toString(), index);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static final int codePointBefore(String seq, int index) {
+//##        return codePointBefore((CharSequence)seq, index);
+//##    }
+//##    public static final int codePointBefore(StringBuffer seq, int index) {
+//##        return codePointBefore((CharSequence)seq, index);
+//##    }
+//#endif
+    public static final int codePointBefore(CharSequence seq, int index) {
+        char c2 = seq.charAt(--index);
+        if (isLowSurrogate(c2)) {
+            if (index > 0) {
+                char c1 = seq.charAt(--index);
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+//#endif
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param text the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointBefore(char[] text, int index) {
+        char c2 = text[--index];
+        if (isLowSurrogate(c2)) {
+            if (index > 0) {
+                char c1 = text[--index];
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param text the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @param limit the start of the valid text
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointBefore(char[] text, int index, int limit) {
+    if (index <= limit || limit < 0) {
+        throw new IndexOutOfBoundsException();
+    }
+        char c2 = text[--index];
+        if (isLowSurrogate(c2)) {
+            if (index > limit) {
+                char c1 = text[--index];
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Writes the chars representing the
+     * code point into the destination at the given index.
+     * @param cp the code point to convert
+     * @param dst the destination array into which to put the char(s) representing the code point
+     * @param dstIndex the index at which to put the first (or only) char
+     * @return the count of the number of chars written (1 or 2)
+     * @throws IllegalArgumentException if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static final int toChars(int cp, char[] dst, int dstIndex) {
+        if (cp >= 0) {
+            if (cp < MIN_SUPPLEMENTARY_CODE_POINT) {
+                dst[dstIndex] = (char)cp;
+                return 1;
+            }
+            if (cp <= MAX_CODE_POINT) {
+                dst[dstIndex] = UTF16.getLeadSurrogate(cp);
+                dst[dstIndex+1] = UTF16.getTrailSurrogate(cp);
+                return 2;
+            }
+        }
+        throw new IllegalArgumentException();
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Returns a char array
+     * representing the code point.
+     * @param cp the code point to convert
+     * @return an array containing the char(s) representing the code point
+     * @throws IllegalArgumentException if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static final char[] toChars(int cp) {
+        if (cp >= 0) {
+            if (cp < MIN_SUPPLEMENTARY_CODE_POINT) {
+                return new char[] { (char)cp };
+            }
+            if (cp <= MAX_CODE_POINT) {
+                return new char[] {
+                    UTF16.getLeadSurrogate(cp),
+                    UTF16.getTrailSurrogate(cp)
+                };
+            }
+        }
+        throw new IllegalArgumentException();
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Return a byte representing the directionality of
+     * the character.
+     * <br/><b>Note</b>: Unlike the JDK, this returns DIRECTIONALITY_LEFT_TO_RIGHT for undefined or
+     * out-of-bounds characters.  <br/><b>Note</b>: The return value must be
+     * tested using the constants defined in {@link UCharacterEnums.ECharacterDirection}
+     * since the values are different from the ones defined by <code>java.lang.Character</code>.
+     * @param cp the code point to check
+     * @return the directionality of the code point
+     * @see #getDirection
+     * @stable ICU 3.0
+     */
+    public static byte getDirectionality(int cp)
+    {
+        return (byte)getDirection(cp);
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Count the number of code points in the range of text.
+     * @param text the characters to check
+     * @param start the start of the range
+     * @param limit the limit of the range
+     * @return the number of code points in the range
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static int codePointCount(String text, int start, int limit) {
+//##        if (start < 0 || limit < start || limit > text.length()) {
+//##            throw new IndexOutOfBoundsException("start (" + start +
+//##                ") or limit (" + limit +
+//##                ") invalid or out of range 0, " + text.length());
+//##        }
+//##
+//##        int len = limit - start;
+//##        while (limit > start) {
+//##            char ch = text.charAt(--limit);
+//##            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+//##                ch = text.charAt(--limit);
+//##                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+//##                    --len;
+//##                    break;
+//##                }
+//##            }
+//##        }
+//##        return len;
+//##    }
+//##    public static int codePointCount(StringBuffer text, int start, int limit) {
+//##        return codePointCount(text.toString(), start, limit);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static int codePointCount(String text, int start, int limit) {
+//##        return codePointCount((CharSequence)text, start, limit);
+//##    }
+//##    public static int codePointCount(StringBuffer text, int start, int limit) {
+//##        return codePointCount((CharSequence)text, start, limit);
+//##    }
+//#endif
+    public static int codePointCount(CharSequence text, int start, int limit) {
+        if (start < 0 || limit < start || limit > text.length()) {
+            throw new IndexOutOfBoundsException("start (" + start +
+                ") or limit (" + limit +
+                ") invalid or out of range 0, " + text.length());
+        }
+
+        int len = limit - start;
+        while (limit > start) {
+            char ch = text.charAt(--limit);
+            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+                ch = text.charAt(--limit);
+                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+                    --len;
+                    break;
+                }
+            }
+        }
+        return len;
+    }
+//#endif
+
+    /**
+     * Cover the JDK API, for convenience.  Count the number of code points in the range of text.
+     * @param text the characters to check
+     * @param start the start of the range
+     * @param limit the limit of the range
+     * @return the number of code points in the range
+     * @stable ICU 3.0
+     */
+    public static int codePointCount(char[] text, int start, int limit) {
+        if (start < 0 || limit < start || limit > text.length) {
+            throw new IndexOutOfBoundsException("start (" + start +
+                                                ") or limit (" + limit +
+                                                ") invalid or out of range 0, " + text.length);
+        }
+
+        int len = limit - start;
+        while (limit > start) {
+            char ch = text[--limit];
+            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+                ch = text[--limit];
+                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+                    --len;
+                    break;
+                }
+            }
+        }
+        return len;
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Adjust the char index by a code point offset.
+     * @param text the characters to check
+     * @param index the index to adjust
+     * @param codePointOffset the number of code points by which to offset the index
+     * @return the adjusted index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static int offsetByCodePoints(String text, int index, int codePointOffset) {
+//##        if (index < 0 || index > text.length()) {
+//##            throw new IndexOutOfBoundsException("index ( " + index +
+//##                                                ") out of range 0, " + text.length());
+//##        }
+//##
+//##        if (codePointOffset < 0) {
+//##            while (++codePointOffset <= 0) {
+//##                char ch = text.charAt(--index);
+//##                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
+//##                    ch = text.charAt(--index);
+//##                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+//##                        if (++codePointOffset > 0) {
+//##                            return index+1;
+//##                        }
+//##                    }
+//##                }
+//##            }
+//##        } else {
+//##            int limit = text.length();
+//##            while (--codePointOffset >= 0) {
+//##                char ch = text.charAt(index++);
+//##                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+//##                    ch = text.charAt(index++);
+//##                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+//##                        if (--codePointOffset < 0) {
+//##                            return index-1;
+//##                        }
+//##                    }
+//##                }
+//##            }
+//##        }
+//##
+//##        return index;
+//##    }
+//##    public static int offsetByCodePoints(StringBuffer text, int index, int codePointOffset) {
+//##        return offsetByCodePoints(text.toString(), index, codePointOffset);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static int offsetByCodePoints(String text, int index, int codePointOffset) {
+//##        return offsetByCodePoints((CharSequence)text, index, codePointOffset);
+//##    }
+//##    public static int offsetByCodePoints(StringBuffer text, int index, int codePointOffset) {
+//##        return offsetByCodePoints((CharSequence)text, index, codePointOffset);
+//##    }
+//#endif
+    public static int offsetByCodePoints(CharSequence text, int index, int codePointOffset) {
+        if (index < 0 || index > text.length()) {
+            throw new IndexOutOfBoundsException("index ( " + index +
+                                                ") out of range 0, " + text.length());
+        }
+
+        if (codePointOffset < 0) {
+            while (++codePointOffset <= 0) {
+                char ch = text.charAt(--index);
+                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
+                    ch = text.charAt(--index);
+                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+                        if (++codePointOffset > 0) {
+                            return index+1;
+                        }
+                    }
+                }
+            }
+        } else {
+            int limit = text.length();
+            while (--codePointOffset >= 0) {
+                char ch = text.charAt(index++);
+                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+                    ch = text.charAt(index++);
+                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+                        if (--codePointOffset < 0) {
+                            return index-1;
+                        }
+                    }
+                }
+            }
+        }
+
+        return index;
+    }
+//#endif
+
+    /**
+     * Cover the JDK API, for convenience.  Adjust the char index by a code point offset.
+     * @param text the characters to check
+     * @param start the start of the range to check
+     * @param count the length of the range to check
+     * @param index the index to adjust
+     * @param codePointOffset the number of code points by which to offset the index
+     * @return the adjusted index
+     * @stable ICU 3.0
+     */
+    public static int offsetByCodePoints(char[] text, int start, int count, int index, int codePointOffset) {
+        int limit = start + count;
+        if (start < 0 || limit < start || limit > text.length || index < start || index > limit) {
+            throw new IndexOutOfBoundsException("index ( " + index +
+                                                ") out of range " + start +
+                                                ", " + limit +
+                                                " in array 0, " + text.length);
+        }
+
+        if (codePointOffset < 0) {
+            while (++codePointOffset <= 0) {
+                char ch = text[--index];
+                if (index < start) {
+                    throw new IndexOutOfBoundsException("index ( " + index +
+                                                        ") < start (" + start +
+                                                        ")");
+                }
+                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > start) {
+                    ch = text[--index];
+                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+                        if (++codePointOffset > 0) {
+                            return index+1;
+                        }
+                    }
+                }
+            }
+        } else {
+            while (--codePointOffset >= 0) {
+                char ch = text[index++];
+                if (index > limit) {
+                    throw new IndexOutOfBoundsException("index ( " + index +
+                                                        ") > limit (" + limit +
+                                                        ")");
+                }
+                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+                    ch = text[index++];
+                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+                        if (--codePointOffset < 0) {
+                            return index-1;
+                        }
+                    }
+                }
+            }
+        }
+
+        return index;
+    }
+
+    // protected data members --------------------------------------------
+    
+    /**
+     * Database storing the sets of character name
+     */
+    static UCharacterName NAME_ = null;
+
+    /**
+     * Singleton object encapsulating the imported pnames.icu property aliases
+     */
+    static UPropertyAliases PNAMES_ = null;
+      
+    // block to initialise name database and unicode 1.0 data 
+    static {
+        try {
+            PNAMES_ = new UPropertyAliases();
+            NAME_ = UCharacterName.getInstance();
+        } catch (IOException e) {
+            // e.printStackTrace();
+            throw new MissingResourceException(e.getMessage(),"","");
+            //throw new RuntimeException(e.getMessage());
+            // DONOT throw an exception
+            // we might be building ICU modularly wothout names.icu and
+            // pnames.icu
+        }
+    }
+        
+    // private variables -------------------------------------------------
+    
+    /**
+     * Database storing the sets of character property
+     */
+    private static final UCharacterProperty PROPERTY_;
+    /**
+     * For optimization
+     */
+    private static final char[] PROPERTY_TRIE_INDEX_;
+    private static final char[] PROPERTY_TRIE_DATA_;
+    private static final int PROPERTY_INITIAL_VALUE_;
+
+    private static final UCaseProps gCsp;
+    private static final UBiDiProps gBdp;
+
+    // block to initialise character property database
+    static
+    {
+        try
+        {
+            PROPERTY_ = UCharacterProperty.getInstance();
+            PROPERTY_TRIE_INDEX_ = PROPERTY_.m_trieIndex_;
+            PROPERTY_TRIE_DATA_ = PROPERTY_.m_trieData_;
+            PROPERTY_INITIAL_VALUE_ = PROPERTY_.m_trieInitialValue_;
+        }
+        catch (Exception e)
+        {
+            throw new MissingResourceException(e.getMessage(),"","");
+        }
+
+        /*
+         * In ICU4J 3.2, most Unicode properties were loaded from uprops.icu.
+         * ICU4J 3.4 adds ucase.icu for case mapping properties and
+         * ubidi.icu for bidi/shaping properties and
+         * removes case/bidi/shaping properties from uprops.icu.
+         *
+         * Loading of uprops.icu was always done during class loading of UCharacter.class.
+         * In order to maintain performance for all such properties,
+         * ucase.icu and ubidi.icu are also loaded during class loading of UCharacter.class.
+         * It will not fail if they are missing.
+         * These data items are loaded early to avoid having to synchronize access to them,
+         * for thread safety and performance.
+         *
+         * We try to load these data items at most once.
+         * If it works, we use the resulting singleton object.
+         * If it fails, then we get a dummy object, which always works unless
+         * we are seriously out of memory.
+         * After UCharacter.class loading, we have a never-changing pointer to either the
+         * real singleton or the dummy.
+         *
+         * This method is used in Unicode properties APIs that
+         * do not have a service object and also do not have an error code parameter.
+         * Other API implementations get the singleton themselves
+         * (synchronized), store it in the service object, and report errors.
+         */
+        UCaseProps csp;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch(IOException e) {
+            csp=UCaseProps.getDummy();
+        }
+        gCsp=csp;
+
+        UBiDiProps bdp;
+        try {
+            bdp=UBiDiProps.getSingleton();
+        } catch(IOException e) {
+            bdp=UBiDiProps.getDummy();
+        }
+        gBdp=bdp;
+    }
+    
+    /**
+     * To get the last character out from a data type
+     */
+    private static final int LAST_CHAR_MASK_ = 0xFFFF;
+      
+//    /**
+//     * To get the last byte out from a data type
+//     */
+//    private static final int LAST_BYTE_MASK_ = 0xFF;
+//      
+//    /**
+//     * Shift 16 bits
+//     */
+//    private static final int SHIFT_16_ = 16;
+//      
+//    /**
+//     * Shift 24 bits
+//     */
+//    private static final int SHIFT_24_ = 24;  
+//    
+//    /**
+//     * Decimal radix
+//     */
+//    private static final int DECIMAL_RADIX_ = 10;
+      
+    /**
+     * No break space code point
+     */
+    private static final int NO_BREAK_SPACE_ = 0xA0;
+      
+    /**
+     * Narrow no break space code point
+     */
+    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
+      
+    /**
+     * Zero width no break space code point
+     */
+    private static final int ZERO_WIDTH_NO_BREAK_SPACE_ = 0xFEFF;
+      
+    /**
+     * Ideographic number zero code point
+     */
+    private static final int IDEOGRAPHIC_NUMBER_ZERO_ = 0x3007;
+            
+    /**
+     * CJK Ideograph, First code point
+     */
+    private static final int CJK_IDEOGRAPH_FIRST_ = 0x4e00;
+      
+    /**
+     * CJK Ideograph, Second code point
+     */
+    private static final int CJK_IDEOGRAPH_SECOND_ = 0x4e8c;
+            
+    /**
+     * CJK Ideograph, Third code point
+     */
+    private static final int CJK_IDEOGRAPH_THIRD_ = 0x4e09;
+      
+    /**
+     * CJK Ideograph, Fourth code point
+     */
+    private static final int CJK_IDEOGRAPH_FOURTH_ = 0x56d8;
+      
+    /**
+     * CJK Ideograph, FIFTH code point
+     */
+    private static final int CJK_IDEOGRAPH_FIFTH_ = 0x4e94;
+      
+    /**
+     * CJK Ideograph, Sixth code point
+     */
+    private static final int CJK_IDEOGRAPH_SIXTH_ = 0x516d;
+            
+    /**
+     * CJK Ideograph, Seventh code point
+     */
+    private static final int CJK_IDEOGRAPH_SEVENTH_ = 0x4e03;
+      
+    /**
+     * CJK Ideograph, Eighth code point
+     */
+    private static final int CJK_IDEOGRAPH_EIGHTH_ = 0x516b;
+      
+    /**
+     * CJK Ideograph, Nineth code point
+     */
+    private static final int CJK_IDEOGRAPH_NINETH_ = 0x4e5d;
+      
+    /**
+     * Application Program command code point
+     */
+    private static final int APPLICATION_PROGRAM_COMMAND_ = 0x009F;
+      
+    /**
+     * Unit separator code point
+     */
+    private static final int UNIT_SEPARATOR_ = 0x001F;
+      
+    /**
+     * Delete code point
+     */
+    private static final int DELETE_ = 0x007F;
+    /*
+     * ISO control character first range upper limit 0x0 - 0x1F
+     */
+    //private static final int ISO_CONTROL_FIRST_RANGE_MAX_ = 0x1F;
+    /**
+     * Shift to get numeric type
+     */
+    private static final int NUMERIC_TYPE_SHIFT_ = 5;
+    /**
+     * Mask to get numeric type
+     */
+    private static final int NUMERIC_TYPE_MASK_ = 0x7 << NUMERIC_TYPE_SHIFT_;
+      
+    /* encoding of fractional and large numbers */
+    //private static final int MAX_SMALL_NUMBER=0xff;
+
+    private static final int FRACTION_NUM_SHIFT=3;        /* numerator: bits 7..3 */
+    private static final int FRACTION_DEN_MASK=7;         /* denominator: bits 2..0 */
+
+    //private static final int FRACTION_MAX_NUM=31;
+    private static final int FRACTION_DEN_OFFSET=2;       /* denominator values are 2..9 */
+
+    //private static final int FRACTION_MIN_DEN=FRACTION_DEN_OFFSET;
+    //private static final int FRACTION_MAX_DEN=FRACTION_MIN_DEN+FRACTION_DEN_MASK;
+
+    private static final int LARGE_MANT_SHIFT=4;          /* mantissa: bits 7..4 */
+    private static final int LARGE_EXP_MASK=0xf;          /* exponent: bits 3..0 */
+    private static final int LARGE_EXP_OFFSET=2;          /* regular exponents 2..17 */
+    private static final int LARGE_EXP_OFFSET_EXTRA=18;   /* extra large exponents 18..33 */
+
+    //private static final int LARGE_MIN_EXP=LARGE_EXP_OFFSET;
+    //private static final int LARGE_MAX_EXP=LARGE_MIN_EXP+LARGE_EXP_MASK;
+    //private static final int LARGE_MAX_EXP_EXTRA=LARGE_EXP_OFFSET_EXTRA+LARGE_EXP_MASK;
+
+    /**
+     * Han digit characters
+     */
+    private static final int CJK_IDEOGRAPH_COMPLEX_ZERO_     = 0x96f6;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_ONE_      = 0x58f9;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TWO_      = 0x8cb3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THREE_    = 0x53c3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FOUR_     = 0x8086;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FIVE_     = 0x4f0d;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SIX_      = 0x9678;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SEVEN_    = 0x67d2;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_EIGHT_    = 0x634c;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_NINE_     = 0x7396;    
+    private static final int CJK_IDEOGRAPH_TEN_              = 0x5341;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TEN_      = 0x62fe;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_          = 0x767e;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_HUNDRED_  = 0x4f70;    
+    private static final int CJK_IDEOGRAPH_THOUSAND_         = 0x5343;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THOUSAND_ = 0x4edf;    
+    private static final int CJK_IDEOGRAPH_TEN_THOUSAND_     = 0x824c;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_MILLION_  = 0x5104;
+
+//    /**
+//     * Zero Width Non Joiner.
+//     * Equivalent to icu4c ZWNJ.
+//     */
+//    private static final int ZERO_WIDTH_NON_JOINER_ = 0x200c;
+//    /**
+//     * Zero Width Joiner
+//     * Equivalent to icu4c ZWJ. 
+//     */
+//    private static final int ZERO_WIDTH_JOINER_ = 0x200d;
+
+    /*
+     * Properties in vector word 2
+     * Bits
+     * 31..26   reserved
+     * 25..20   Line Break
+     * 19..15   Sentence Break
+     * 14..10   Word Break
+     *  9.. 5   Grapheme Cluster Break
+     *  4.. 0   Decomposition Type
+     */
+    private static final int LB_MASK          = 0x03f00000;
+    private static final int LB_SHIFT         = 20;
+    private static final int LB_VWORD         = 2;
+
+    private static final int SB_MASK          = 0x000f8000;
+    private static final int SB_SHIFT         = 15;
+
+    private static final int WB_MASK          = 0x00007c00;
+    private static final int WB_SHIFT         = 10;
+
+    private static final int GCB_MASK         = 0x000003e0;
+    private static final int GCB_SHIFT        = 5;
+
+    /**
+     * Integer properties mask for decomposition type.
+     * Equivalent to icu4c UPROPS_DT_MASK. 
+     */    
+    private static final int DECOMPOSITION_TYPE_MASK_ = 0x0000001f;
+
+    /*
+     * Properties in vector word 0
+     * Bits
+     * 31..24   DerivedAge version major/minor one nibble each
+     * 23..20   reserved
+     * 19..17   East Asian Width
+     * 16.. 8   UBlockCode
+     *  7.. 0   UScriptCode
+     */
+
+    /**
+     * Integer properties mask and shift values for East Asian cell width.
+     * Equivalent to icu4c UPROPS_EA_MASK 
+     */    
+    private static final int EAST_ASIAN_MASK_ = 0x000e0000;
+    /**
+     * Integer properties mask and shift values for East Asian cell width.
+     * Equivalent to icu4c UPROPS_EA_SHIFT 
+     */    
+    private static final int EAST_ASIAN_SHIFT_ = 17;
+    /**
+     * Integer properties mask and shift values for blocks.
+     * Equivalent to icu4c UPROPS_BLOCK_MASK 
+     */    
+    private static final int BLOCK_MASK_ = 0x0001ff00;
+    /**
+     * Integer properties mask and shift values for blocks.
+     * Equivalent to icu4c UPROPS_BLOCK_SHIFT 
+     */    
+    private static final int BLOCK_SHIFT_ = 8;
+    /**
+     * Integer properties mask and shift values for scripts.
+     * Equivalent to icu4c UPROPS_SHIFT_MASK
+     */    
+    private static final int SCRIPT_MASK_ = 0x000000ff;
+                           
+    // private constructor -----------------------------------------------
+    ///CLOVER:OFF  
+    /**
+     * Private constructor to prevent instantiation
+     */
+    private UCharacter()
+    {
+    }
+    ///CLOVER:ON 
+    // private methods ---------------------------------------------------
+    
+    /**
+     * Getting the digit values of characters like 'A' - 'Z', normal, 
+     * half-width and full-width. This method assumes that the other digit 
+     * characters are checked by the calling method.
+     * @param ch character to test
+     * @return -1 if ch is not a character of the form 'A' - 'Z', otherwise
+     *         its corresponding digit will be returned.
+     */
+    private static int getEuropeanDigit(int ch) {
+        if ((ch > 0x7a && ch < 0xff21)  
+            || ch < 0x41 || (ch > 0x5a && ch < 0x61)
+            || ch > 0xff5a || (ch > 0xff31 && ch < 0xff41)) {
+            return -1;
+        } 
+        if (ch <= 0x7a) {
+            // ch >= 0x41 or ch < 0x61 
+            return ch + 10 - ((ch <= 0x5a) ? 0x41 : 0x61);
+        }
+        // ch >= 0xff21
+        if (ch <= 0xff3a) {
+            return ch + 10 - 0xff21;
+        } 
+        // ch >= 0xff41 && ch <= 0xff5a
+        return ch + 10 - 0xff41;
+    }
+    
+    /**
+     * Gets the numeric type of the property argument
+     * @param props 32 bit property
+     * @return the numeric type
+     */
+    private static int getNumericType(int props)
+    {
+        return (props & NUMERIC_TYPE_MASK_) >> NUMERIC_TYPE_SHIFT_;
+    }
+    
+    /**
+     * Gets the property value at the index.
+     * This is optimized.
+     * Note this is alittle different from CharTrie the index m_trieData_
+     * is never negative.
+     * This is a duplicate of UCharacterProperty.getProperty. For optimization
+     * purposes, this method calls the trie data directly instead of through 
+     * UCharacterProperty.getProperty.
+     * @param ch code point whose property value is to be retrieved
+     * @return property value of code point
+     * @stable ICU 2.6
+     */
+    private static final int getProperty(int ch)
+    {
+        if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE 
+            || (ch > UTF16.LEAD_SURROGATE_MAX_VALUE 
+                && ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
+            // BMP codepoint 0000..D7FF or DC00..FFFF
+            try { // using try for ch < 0 is faster than using an if statement
+                return PROPERTY_TRIE_DATA_[
+                              (PROPERTY_TRIE_INDEX_[ch >> 5] << 2) 
+                              + (ch & 0x1f)];
+            } catch (ArrayIndexOutOfBoundsException e) {
+                return PROPERTY_INITIAL_VALUE_;
+            }
+        }
+        if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            // lead surrogate D800..DBFF
+            return PROPERTY_TRIE_DATA_[
+                              (PROPERTY_TRIE_INDEX_[(0x2800 >> 5) + (ch >> 5)] << 2) 
+                              + (ch & 0x1f)];
+        }
+        // for optimization
+        if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
+            // supplementary code point 10000..10FFFF
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return PROPERTY_.m_trie_.getSurrogateValue(
+                                      UTF16.getLeadSurrogate(ch), 
+                                      (char)(ch & 0x3ff));
+        }
+        // return m_dataOffset_ if there is an error, in this case we return 
+        // the default value: m_initialValue_
+        // we cannot assume that m_initialValue_ is at offset 0
+        // this is for optimization.
+        return PROPERTY_INITIAL_VALUE_;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterCategory.java b/src/com/ibm/icu/lang/UCharacterCategory.java
new file mode 100644
index 0000000..60c0a64
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterCategory.java
@@ -0,0 +1,112 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.lang.UCharacterEnums.ECharacterCategory;
+
+/**
+ * Enumerated Unicode category types from the UnicodeData.txt file.
+ * Used as return results from <a href=UCharacter.html>UCharacter</a>
+ * Equivalent to icu's UCharCategory.
+ * Refer to <a href="http://www.unicode.org/Public/UNIDATA/UCD.html">
+ * Unicode Consortium</a> for more information about UnicodeData.txt.
+ * <p>
+ * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
+ * those returned by java.lang.Character.getType.  UCharacterCategory values
+ * match the ones used in ICU4C, while java.lang.Character type
+ * values, though similar, skip the value 17.</p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ */
+
+public final class UCharacterCategory implements ECharacterCategory
+{
+    /**
+     * Gets the name of the argument category
+     * @param category to retrieve name
+     * @return category name
+     * @stable ICU 2.1
+     */
+    public static String toString(int category)
+    {
+        switch (category) {
+        case UPPERCASE_LETTER :
+            return "Letter, Uppercase";
+        case LOWERCASE_LETTER :
+            return "Letter, Lowercase";
+        case TITLECASE_LETTER :
+            return "Letter, Titlecase";
+        case MODIFIER_LETTER :
+            return "Letter, Modifier";
+        case OTHER_LETTER :
+            return "Letter, Other";
+        case NON_SPACING_MARK :
+            return "Mark, Non-Spacing";
+        case ENCLOSING_MARK : 
+            return "Mark, Enclosing";
+        case COMBINING_SPACING_MARK :
+            return "Mark, Spacing Combining";
+        case DECIMAL_DIGIT_NUMBER :
+            return "Number, Decimal Digit";
+        case LETTER_NUMBER :
+            return "Number, Letter";
+        case OTHER_NUMBER :
+            return "Number, Other";
+        case SPACE_SEPARATOR :
+            return "Separator, Space";
+        case LINE_SEPARATOR :
+            return "Separator, Line";
+        case PARAGRAPH_SEPARATOR :
+            return "Separator, Paragraph";
+        case CONTROL :
+            return "Other, Control";
+        case FORMAT :
+            return "Other, Format";
+        case PRIVATE_USE :
+            return "Other, Private Use";
+        case SURROGATE :
+            return "Other, Surrogate";
+        case DASH_PUNCTUATION :
+            return "Punctuation, Dash";
+        case START_PUNCTUATION :
+            return "Punctuation, Open";
+        case END_PUNCTUATION :
+            return "Punctuation, Close";
+        case CONNECTOR_PUNCTUATION :
+            return "Punctuation, Connector";
+        case OTHER_PUNCTUATION :
+            return "Punctuation, Other";
+        case MATH_SYMBOL :
+            return "Symbol, Math";
+        case CURRENCY_SYMBOL :
+            return "Symbol, Currency";
+        case MODIFIER_SYMBOL :
+            return "Symbol, Modifier";
+        case OTHER_SYMBOL :
+            return "Symbol, Other";
+        case INITIAL_PUNCTUATION :
+            return "Punctuation, Initial quote";
+        case FINAL_PUNCTUATION :
+            return "Punctuation, Final quote";
+        }
+        return "Unassigned";
+    }
+        
+    // private constructor -----------------------------------------------
+    ///CLOVER:OFF 
+    /**
+     * Private constructor to prevent initialisation
+     */
+    private UCharacterCategory()
+    {
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/lang/UCharacterDirection.java b/src/com/ibm/icu/lang/UCharacterDirection.java
new file mode 100644
index 0000000..884c6be
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterDirection.java
@@ -0,0 +1,84 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.lang.UCharacterEnums.ECharacterDirection;
+
+/**
+ * Enumerated Unicode character linguistic direction constants.
+ * Used as return results from <a href=UCharacter.html>UCharacter</a>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ */
+
+public final class UCharacterDirection implements ECharacterDirection {
+
+    // private constructor =========================================
+    ///CLOVER:OFF  
+    /**
+     * Private constructor to prevent initialisation
+     */
+    private UCharacterDirection()
+    {
+    }
+    ///CLOVER:ON
+      
+    /**
+     * Gets the name of the argument direction
+     * @param dir direction type to retrieve name
+     * @return directional name
+     * @stable ICU 2.1
+     */
+    public static String toString(int dir) {
+        switch(dir)
+            {
+            case LEFT_TO_RIGHT :
+                return "Left-to-Right";
+            case RIGHT_TO_LEFT :
+                return "Right-to-Left";
+            case EUROPEAN_NUMBER :
+                return "European Number";
+            case EUROPEAN_NUMBER_SEPARATOR :
+                return "European Number Separator";
+            case EUROPEAN_NUMBER_TERMINATOR :
+                return "European Number Terminator";
+            case ARABIC_NUMBER :
+                return "Arabic Number";
+            case COMMON_NUMBER_SEPARATOR :
+                return "Common Number Separator";
+            case BLOCK_SEPARATOR :
+                return "Paragraph Separator";
+            case SEGMENT_SEPARATOR :
+                return "Segment Separator";
+            case WHITE_SPACE_NEUTRAL :
+                return "Whitespace";
+            case OTHER_NEUTRAL :
+                return "Other Neutrals";
+            case LEFT_TO_RIGHT_EMBEDDING :
+                return "Left-to-Right Embedding";
+            case LEFT_TO_RIGHT_OVERRIDE :
+                return "Left-to-Right Override";
+            case RIGHT_TO_LEFT_ARABIC :
+                return "Right-to-Left Arabic";
+            case RIGHT_TO_LEFT_EMBEDDING :
+                return "Right-to-Left Embedding";
+            case RIGHT_TO_LEFT_OVERRIDE :
+                return "Right-to-Left Override";
+            case POP_DIRECTIONAL_FORMAT :
+                return "Pop Directional Format";
+            case DIR_NON_SPACING_MARK :
+                return "Non-Spacing Mark";
+            case BOUNDARY_NEUTRAL :
+                return "Boundary Neutral";
+            }
+        return "Unassigned";
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterEnums.java b/src/com/ibm/icu/lang/UCharacterEnums.java
new file mode 100644
index 0000000..d1e8c26
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterEnums.java
@@ -0,0 +1,491 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+/**
+ * A container for the different 'enumerated types' used by UCharacter.
+ * @stable ICU 3.0
+ */
+public class UCharacterEnums {
+
+    /** This is just a namespace, it is not instantiatable. */
+    ///CLOVER:OFF
+    private UCharacterEnums() {}
+
+    /**
+     * 'Enum' for the CharacterCategory constants.  These constants are 
+     * compatible in name <b>but not in value</b> with those defined in
+     * <code>java.lang.Character</code>.
+     * @see UCharacterCategory
+     * @stable ICU 3.0
+     */
+    public static interface ECharacterCategory {
+        /**
+         * Unassigned character type
+         * @stable ICU 2.1
+         */
+        public static final byte UNASSIGNED              = 0; 
+
+        /**
+         * Character type Cn
+         * Not Assigned (no characters in [UnicodeData.txt] have this property) 
+         * @stable ICU 2.6
+         */
+        public static final byte GENERAL_OTHER_TYPES     = 0;
+
+        /**
+         * Character type Lu
+         * @stable ICU 2.1
+         */
+        public static final byte UPPERCASE_LETTER        = 1;
+
+        /**
+         * Character type Ll
+         * @stable ICU 2.1
+         */
+        public static final byte LOWERCASE_LETTER        = 2;
+
+        /**
+         * Character type Lt
+         * @stable ICU 2.1
+         */
+
+        public static final byte TITLECASE_LETTER        = 3;
+
+        /**
+         * Character type Lm
+         * @stable ICU 2.1
+         */
+        public static final byte MODIFIER_LETTER         = 4;
+
+        /**
+         * Character type Lo
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_LETTER            = 5;
+
+        /**
+         * Character type Mn
+         * @stable ICU 2.1
+         */
+        public static final byte NON_SPACING_MARK        = 6;
+
+        /**
+         * Character type Me
+         * @stable ICU 2.1
+         */
+        public static final byte ENCLOSING_MARK          = 7;
+
+        /**
+         * Character type Mc
+         * @stable ICU 2.1
+         */
+        public static final byte COMBINING_SPACING_MARK  = 8;
+
+        /**
+         * Character type Nd
+         * @stable ICU 2.1      
+         */
+        public static final byte DECIMAL_DIGIT_NUMBER    = 9;
+
+        /**
+         * Character type Nl
+         * @stable ICU 2.1
+         */
+        public static final byte LETTER_NUMBER           = 10;
+        
+        /**
+         * Character type No
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_NUMBER            = 11;
+
+        /**
+         * Character type Zs
+         * @stable ICU 2.1
+         */
+        public static final byte SPACE_SEPARATOR         = 12;
+
+        /**
+         * Character type Zl
+         * @stable ICU 2.1
+         */
+        public static final byte LINE_SEPARATOR          = 13;
+
+        /**
+         * Character type Zp
+         * @stable ICU 2.1
+         */
+        public static final byte PARAGRAPH_SEPARATOR     = 14;
+
+        /**
+         * Character type Cc
+         * @stable ICU 2.1
+         */
+        public static final byte CONTROL                 = 15;
+
+        /**
+         * Character type Cf
+         * @stable ICU 2.1
+         */
+        public static final byte FORMAT                  = 16;
+
+        /**
+         * Character type Co
+         * @stable ICU 2.1
+         */
+        public static final byte PRIVATE_USE             = 17;
+
+        /**
+         * Character type Cs
+         * @stable ICU 2.1
+         */
+        public static final byte SURROGATE               = 18;
+
+        /**
+         * Character type Pd
+         * @stable ICU 2.1
+         */
+        public static final byte DASH_PUNCTUATION        = 19;
+
+        /**
+         * Character type Ps
+         * @stable ICU 2.1
+         */
+        public static final byte START_PUNCTUATION       = 20;
+        
+        /**
+         * Character type Pe
+         * @stable ICU 2.1
+         */
+        public static final byte END_PUNCTUATION         = 21;
+
+        /**
+         * Character type Pc
+         * @stable ICU 2.1
+         */
+        public static final byte CONNECTOR_PUNCTUATION   = 22;
+
+        /**
+         * Character type Po
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_PUNCTUATION       = 23;
+
+        /**
+         * Character type Sm
+         * @stable ICU 2.1
+         */
+        public static final byte MATH_SYMBOL             = 24;
+
+        /**
+         * Character type Sc
+         * @stable ICU 2.1
+         */
+        public static final byte CURRENCY_SYMBOL         = 25;
+        
+        /**
+         * Character type Sk
+         * @stable ICU 2.1
+         */
+        public static final byte MODIFIER_SYMBOL         = 26;
+        
+        /**
+         * Character type So
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_SYMBOL            = 27;
+        
+        /**
+         * Character type Pi
+         * @see #INITIAL_QUOTE_PUNCTUATION
+         * @stable ICU 2.1
+         */
+        public static final byte INITIAL_PUNCTUATION     = 28;
+
+        /**
+         * Character type Pi
+         * This name is compatible with java.lang.Character's name for this type.
+         * @see #INITIAL_PUNCTUATION
+         * @stable ICU 2.8
+         */
+        public static final byte INITIAL_QUOTE_PUNCTUATION = 28;
+
+        /**
+         * Character type Pf
+         * @see #FINAL_QUOTE_PUNCTUATION
+         * @stable ICU 2.1
+         */
+        public static final byte FINAL_PUNCTUATION       = 29;
+
+        /**
+         * Character type Pf
+         * This name is compatible with java.lang.Character's name for this type.
+         * @see #FINAL_PUNCTUATION
+         * @stable ICU 2.8
+         */
+        public static final byte FINAL_QUOTE_PUNCTUATION   = 29;
+        
+        /**
+         * Character type count
+         * @stable ICU 2.1
+         */
+        public static final byte CHAR_CATEGORY_COUNT     = 30;
+    }
+
+    /**
+     * 'Enum' for the CharacterDirection constants.  There are two sets
+     * of names, those used in ICU, and those used in the JDK.  The
+     * JDK constants are compatible in name <b>but not in value</b> 
+     * with those defined in <code>java.lang.Character</code>.
+     * @see UCharacterDirection
+     * @stable ICU 3.0
+     */
+    public static interface ECharacterDirection {
+        /**
+         * Directional type L
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT              = 0;
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = (byte)LEFT_TO_RIGHT;
+
+        /**
+         * Directional type R
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT              = 1;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = (byte)RIGHT_TO_LEFT;
+
+        /**
+         * Directional type EN
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER            = 2;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = (byte)EUROPEAN_NUMBER;
+
+        /**
+         * Directional type ES
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER_SEPARATOR  = 3;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = (byte)EUROPEAN_NUMBER_SEPARATOR;
+
+        /**
+         * Directional type ET
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER_TERMINATOR = 4;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER_TERMINATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = (byte)EUROPEAN_NUMBER_TERMINATOR;
+
+        /**
+         * Directional type AN
+         * @stable ICU 2.1
+         */                                                    
+        public static final int ARABIC_NUMBER              = 5;
+
+        /**
+         * JDK-compatible synonym for ARABIC_NUMBER.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_ARABIC_NUMBER = (byte)ARABIC_NUMBER;
+
+        /**
+         * Directional type CS
+         * @stable ICU 2.1
+         */
+        public static final int COMMON_NUMBER_SEPARATOR    = 6;
+
+        /**
+         * JDK-compatible synonym for COMMON_NUMBER_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = (byte)COMMON_NUMBER_SEPARATOR;
+
+        /**
+         * Directional type B
+         * @stable ICU 2.1
+         */
+        public static final int BLOCK_SEPARATOR            = 7;
+
+        /**
+         * JDK-compatible synonym for BLOCK_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = (byte)BLOCK_SEPARATOR;
+
+        /**
+         * Directional type S
+         * @stable ICU 2.1
+         */      
+        public static final int SEGMENT_SEPARATOR          = 8;
+
+        /**
+         * JDK-compatible synonym for SEGMENT_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = (byte)SEGMENT_SEPARATOR;
+
+        /**
+         * Directional type WS
+         * @stable ICU 2.1
+         */
+        public static final int WHITE_SPACE_NEUTRAL        = 9;
+
+        /**
+         * JDK-compatible synonym for WHITE_SPACE_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_WHITESPACE = (byte)WHITE_SPACE_NEUTRAL;
+
+        /**
+         * Directional type ON
+         * @stable ICU 2.1
+         */
+        public static final int OTHER_NEUTRAL              = 10;
+
+        /**
+         * JDK-compatible synonym for OTHER_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_OTHER_NEUTRALS = (byte)OTHER_NEUTRAL;
+
+        /**
+         * Directional type LRE
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT_EMBEDDING    = 11;
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT_EMBEDDING.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = (byte)LEFT_TO_RIGHT_EMBEDDING;
+
+        /**
+         * Directional type LRO
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT_OVERRIDE     = 12;  
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT_OVERRIDE.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = (byte)LEFT_TO_RIGHT_OVERRIDE;
+
+        /**
+         * Directional type AL
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_ARABIC       = 13;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_ARABIC.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = (byte)RIGHT_TO_LEFT_ARABIC;
+
+        /**
+         * Directional type RLE
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_EMBEDDING    = 14;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_EMBEDDING.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = (byte)RIGHT_TO_LEFT_EMBEDDING;
+
+        /**
+         * Directional type RLO
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_OVERRIDE     = 15;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_OVERRIDE.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = (byte)RIGHT_TO_LEFT_OVERRIDE;
+
+        /**
+         * Directional type PDF
+         * @stable ICU 2.1
+         */
+        public static final int POP_DIRECTIONAL_FORMAT     = 16;
+
+        /**
+         * JDK-compatible synonym for POP_DIRECTIONAL_FORMAT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = (byte)POP_DIRECTIONAL_FORMAT;
+
+        /**
+         * Directional type NSM
+         * @stable ICU 2.1
+         */
+        public static final int DIR_NON_SPACING_MARK       = 17;
+
+        /**
+         * JDK-compatible synonym for DIR_NON_SPACING_MARK.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_NONSPACING_MARK = (byte)DIR_NON_SPACING_MARK;
+
+        /**
+         * Directional type BN
+         * @stable ICU 2.1
+         */
+        public static final int BOUNDARY_NEUTRAL           = 18;
+
+        /**
+         * JDK-compatible synonym for BOUNDARY_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = (byte)BOUNDARY_NEUTRAL;
+
+        /**
+         * Number of directional types
+         * @stable ICU 2.1
+         */
+        public static final int CHAR_DIRECTION_COUNT       = 19;
+
+        /**
+         * Undefined bidirectional character type. Undefined <code>char</code>
+         * values have undefined directionality in the Unicode specification.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_UNDEFINED = -1;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterNameIterator.java b/src/com/ibm/icu/lang/UCharacterNameIterator.java
new file mode 100644
index 0000000..daa2ec1
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterNameIterator.java
@@ -0,0 +1,329 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterNameChoice;
+
+/**
+ * <p>Class enabling iteration of the codepoints and their names.</p>
+ * <p>Result of each iteration contains a valid codepoint that has valid
+ * name.</p>
+ * <p>See UCharacter.getNameIterator() for an example of use.</p>
+ * @author synwee
+ * @since release 2.1, March 5 2002
+ */
+class UCharacterNameIterator implements ValueIterator
+{
+    // public methods ----------------------------------------------------
+
+    /**
+    * <p>Gets the next result for this iteration and returns
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result codepoint and name
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    */
+    public boolean next(ValueIterator.Element element)
+    {
+        if (m_current_ >= m_limit_) {
+            return false;
+        }
+
+        if (m_choice_ != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            int length = m_name_.getAlgorithmLength();
+            if (m_algorithmIndex_ < length) {
+                while (m_algorithmIndex_ < length) {
+                    // find the algorithm range that could contain m_current_
+                    if (m_algorithmIndex_ < 0 ||
+                        m_name_.getAlgorithmEnd(m_algorithmIndex_) <
+                        m_current_) {
+                        m_algorithmIndex_ ++;
+                    }
+                    else {
+                        break;
+                    }
+                }
+
+                if (m_algorithmIndex_ < length) {
+                    // interleave the data-driven ones with the algorithmic ones
+                    // iterate over all algorithmic ranges; assume that they are
+                    // in ascending order
+                    int start = m_name_.getAlgorithmStart(m_algorithmIndex_);
+                    if (m_current_ < start) {
+                        // this should get rid of those codepoints that are not
+                        // in the algorithmic range
+                        int end = start;
+                        if (m_limit_ <= start) {
+                            end = m_limit_;
+                        }
+                        if (!iterateGroup(element, end)) {
+                            m_current_ ++;
+                            return true;
+                        }
+                    }
+
+                    if (m_current_ >= m_limit_) {
+                        // after iterateGroup fails, current codepoint may be
+                        // greater than limit
+                        return false;
+                    }
+
+                    element.integer = m_current_;
+                    element.value   = m_name_.getAlgorithmName(m_algorithmIndex_,
+                                                                   m_current_);
+                    // reset the group index if we are in the algorithmic names
+                    m_groupIndex_ = -1;
+                    m_current_ ++;
+                    return true;
+                }
+            }
+        }
+        // enumerate the character names after the last algorithmic range
+        if (!iterateGroup(element, m_limit_)) {
+            m_current_ ++;
+            return true;
+        }
+        else if (m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+            if (!iterateExtended(element, m_limit_)) {
+                m_current_ ++;
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+    * <p>Resets the iterator to start iterating from the integer index
+    * UCharacter.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    */
+    public void reset()
+    {
+        m_current_        = m_start_;
+        m_groupIndex_     = -1;
+        m_algorithmIndex_ = -1;
+    }
+
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is
+     * called, the iteration will start from the integer index
+     * UCharacter.MIN_VALUE and end at UCharacter.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the range of UCharacter.MIN_VALUE and
+     * UCharacter.MAX_VALUE, next(element) will always return false.
+     * </p>
+     * @param start first integer in range to iterate
+     * @param limit 1 integer after the last integer in range
+     * @exception IllegalArgumentException thrown when attempting to set an
+     *            illegal range. E.g limit <= start
+     */
+    public void setRange(int start, int limit)
+    {
+        if (start >= limit) {
+            throw new IllegalArgumentException(
+                "start or limit has to be valid Unicode codepoints and start < limit");
+        }
+        if (start < UCharacter.MIN_VALUE) {
+            m_start_ = UCharacter.MIN_VALUE;
+        }
+        else {
+            m_start_ = start;
+        }
+
+        if (limit > UCharacter.MAX_VALUE + 1) {
+            m_limit_ = UCharacter.MAX_VALUE + 1;
+        }
+        else {
+            m_limit_ = limit;
+        }
+        m_current_ = m_start_;
+    }
+
+    // protected constructor ---------------------------------------------
+
+    /**
+    * Constructor
+    * @param name name data
+    * @param choice name choice from the class
+    *               com.ibm.icu.lang.UCharacterNameChoice
+    */
+    protected UCharacterNameIterator(UCharacterName name, int choice)
+    {
+        if(name==null){
+            throw new IllegalArgumentException("UCharacterName name argument cannot be null. Missing unames.icu?");
+        }
+        m_name_    = name;
+        // no explicit choice in UCharacter so no checks on choice
+        m_choice_  = choice;
+        m_start_   = UCharacter.MIN_VALUE;
+        m_limit_   = UCharacter.MAX_VALUE + 1;
+        m_current_ = m_start_;
+    }
+
+    // private data members ---------------------------------------------
+
+    /**
+     * Name data
+     */
+    private UCharacterName m_name_;
+    /**
+     * Name choice
+     */
+    private int m_choice_;
+     /**
+     * Start iteration range
+     */
+    private int m_start_;
+    /**
+     * End + 1 iteration range
+     */
+    private int m_limit_;
+    /**
+     * Current codepoint
+     */
+    private int m_current_;
+    /**
+     * Group index
+     */
+    private int m_groupIndex_ = -1;
+    /**
+     * Algorithm index
+     */
+    private int m_algorithmIndex_ = -1;
+    /**
+    * Group use
+    */
+    private static char GROUP_OFFSETS_[] =
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+    private static char GROUP_LENGTHS_[] =
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+
+    // private methods --------------------------------------------------
+
+    /**
+     * Group name iteration, iterate all the names in the current 32-group and
+     * returns the first codepoint that has a valid name.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found in group and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration
+     */
+    private boolean iterateSingleGroup(ValueIterator.Element result, int limit)
+    {
+        synchronized(GROUP_OFFSETS_) {
+        synchronized(GROUP_LENGTHS_) {
+            int index = m_name_.getGroupLengths(m_groupIndex_, GROUP_OFFSETS_,
+                                                GROUP_LENGTHS_);
+            while (m_current_ < limit) {
+                int    offset = UCharacterName.getGroupOffset(m_current_);
+                String name   = m_name_.getGroupName(
+                                          index + GROUP_OFFSETS_[offset],
+                                          GROUP_LENGTHS_[offset], m_choice_);
+                if ((name == null || name.length() == 0) &&
+                    m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                    name = m_name_.getExtendedName(m_current_);
+                }
+                if (name != null && name.length() > 0) {
+                    result.integer = m_current_;
+                    result.value   = name;
+                    return false;
+                }
+                ++ m_current_;
+            }
+        }
+        }
+        return true;
+    }
+
+    /**
+     * Group name iteration, iterate all the names in the current 32-group and
+     * returns the first codepoint that has a valid name.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found in group and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration
+     */
+    private boolean iterateGroup(ValueIterator.Element result, int limit)
+    {
+        if (m_groupIndex_ < 0) {
+            m_groupIndex_ = m_name_.getGroup(m_current_);
+        }
+
+        while (m_groupIndex_ < m_name_.m_groupcount_ &&
+               m_current_ < limit) {
+            // iterate till the last group or the last codepoint
+            int startMSB = UCharacterName.getCodepointMSB(m_current_);
+            int gMSB     = m_name_.getGroupMSB(m_groupIndex_); // can be -1
+            if (startMSB == gMSB) {
+                if (startMSB == UCharacterName.getCodepointMSB(limit - 1)) {
+                    // if start and limit - 1 are in the same group, then enumerate
+                    // only in that one
+                    return iterateSingleGroup(result, limit);
+                }
+                // enumerate characters in the partial start group
+                // if (m_name_.getGroupOffset(m_current_) != 0) {
+                if (!iterateSingleGroup(result,
+                                        UCharacterName.getGroupLimit(gMSB))) {
+                    return false;
+                }
+                ++ m_groupIndex_; // continue with the next group
+            }
+            else if (startMSB > gMSB) {
+                    // make sure that we start enumerating with the first group
+                    // after start
+                    m_groupIndex_ ++;
+            }
+            else {
+                int gMIN = UCharacterName.getGroupMin(gMSB);
+                if (gMIN > limit) {
+                    gMIN = limit;
+                }
+                if (m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                    if (!iterateExtended(result, gMIN)) {
+                        return false;
+                    }
+                }
+                m_current_ = gMIN;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Iterate extended names.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration (this will always be false for valid codepoints)
+     */
+    private boolean iterateExtended(ValueIterator.Element result,
+                                    int limit)
+    {
+        while (m_current_ < limit) {
+            String name = m_name_.getExtendedOr10Name(m_current_);
+            if (name != null && name.length() > 0) {
+                result.integer = m_current_;
+                result.value   = name;
+                return false;
+            }
+            ++ m_current_;
+        }
+        return true;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterTypeIterator.java b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
new file mode 100644
index 0000000..6025a98
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
@@ -0,0 +1,62 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+ * Class enabling iteration of the codepoints according to their types.
+ * Result of each iteration contains the interval of codepoints that have
+ * the same type.
+ * Example of use:<br>
+ * <pre>
+ * RangeValueIterator iterator = UCharacter.getTypeIterator();
+ * RangeValueIterator.Element element = new RangeValueIterator.Element();
+ * while (iterator.next(element)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(element.start) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(element.limit - 1) + 
+ *                        " has the character type " + 
+ *                        element.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @see com.ibm.icu.util.TrieIterator
+ * @since release 2.1, Jan 24 2002
+ */
+class UCharacterTypeIterator extends TrieIterator
+{
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param property the unicode character properties to be used
+    */
+    protected UCharacterTypeIterator(UCharacterProperty property)
+    {
+       super(property.m_trie_);
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by nextElement() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    */
+    protected int extract(int value)
+    {
+        return value & UCharacterProperty.TYPE_MASK;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UProperty.java b/src/com/ibm/icu/lang/UProperty.java
new file mode 100644
index 0000000..27890be
--- /dev/null
+++ b/src/com/ibm/icu/lang/UProperty.java
@@ -0,0 +1,828 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+ * <p>Selection constants for Unicode properties. </p>
+ * <p>These constants are used in functions like 
+ * UCharacter.hasBinaryProperty(int) to select one of the Unicode properties. 
+ * </p>
+ * <p>The properties APIs are intended to reflect Unicode properties as 
+ * defined in the Unicode Character Database (UCD) and Unicode Technical 
+ * Reports (UTR).</p>
+ * <p>For details about the properties see <a href=http://www.unicode.org>
+ * http://www.unicode.org</a>.</p> 
+ * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
+ * </p> 
+ * <p>Important: If ICU is built with UCD files from Unicode versions below 
+ * 3.2, then properties marked with "new" are not or not fully 
+ * available. Check UCharacter.getUnicodeVersion() to be sure.</p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.6
+ * @see com.ibm.icu.lang.UCharacter
+ */
+public interface UProperty
+{
+    // public data member --------------------------------------------------
+  
+    /** 
+     * <p>Binary property Alphabetic. </p>
+     * <p>Property for UCharacter.isUAlphabetic(), different from the property 
+     * in UCharacter.isalpha().</p>
+     * <p>Lu + Ll + Lt + Lm + Lo + Nl + Other_Alphabetic.</p>
+     * @stable ICU 2.6
+     */ 
+    public static final int ALPHABETIC = 0; 
+
+    /** 
+     * First constant for binary Unicode properties. 
+     * @stable ICU 2.6
+     */ 
+    public static final int BINARY_START = ALPHABETIC;
+
+    /** 
+     * Binary property ASCII_Hex_Digit (0-9 A-F a-f).
+     * @stable ICU 2.6
+     */ 
+    public static final int ASCII_HEX_DIGIT = 1; 
+
+    /** 
+     * <p>Binary property Bidi_Control.</p>
+     * <p>Format controls which have specific functions in the Bidi Algorithm.
+     * </p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int BIDI_CONTROL = 2; 
+
+    /** 
+     * <p>Binary property Bidi_Mirrored.</p> 
+     * <p>Characters that may change display in RTL text.</p> 
+     * <p>Property for UCharacter.isMirrored().</p> 
+     * <p>See Bidi Algorithm; UTR 9.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int BIDI_MIRRORED = 3; 
+
+    /** 
+     * <p>Binary property Dash.</p> 
+     * <p>Variations of dashes.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DASH = 4; 
+
+    /** 
+     * <p>Binary property Default_Ignorable_Code_Point (new).
+     * </p> 
+     * <p>Property that indicates codepoint is ignorable in most processing.
+     * </p>
+     * <p>Codepoints (2060..206F, FFF0..FFFB, E0000..E0FFF) + 
+     * Other_Default_Ignorable_Code_Point + (Cf + Cc + Cs - White_Space)</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; 
+
+    /** 
+     * <p>Binary property Deprecated (new).</p> 
+     * <p>The usage of deprecated characters is strongly discouraged.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DEPRECATED = 6; 
+
+    /** 
+     * <p>Binary property Diacritic.</p> 
+     * <p>Characters that linguistically modify the meaning of another 
+     * character to which they apply.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DIACRITIC = 7; 
+
+    /** 
+     * <p>Binary property Extender.</p> 
+     * <p>Extend the value or shape of a preceding alphabetic character, e.g.
+     * length and iteration marks.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int EXTENDER = 8; 
+
+    /** 
+     * <p>Binary property Full_Composition_Exclusion.</p> 
+     * <p>CompositionExclusions.txt + Singleton Decompositions + 
+     * Non-Starter Decompositions.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int FULL_COMPOSITION_EXCLUSION = 9; 
+
+    /** 
+     * <p>Binary property Grapheme_Base (new).</p>
+     * <p>For programmatic determination of grapheme cluster boundaries. 
+     * [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-Grapheme_Extend-CGJ</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_BASE = 10; 
+
+    /** 
+     * <p>Binary property Grapheme_Extend (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * <p>Me+Mn+Mc+Other_Grapheme_Extend-Grapheme_Link-CGJ</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_EXTEND = 11; 
+
+    /** 
+     * <p>Binary property Grapheme_Link (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_LINK = 12; 
+
+    /** 
+     * <p>Binary property Hex_Digit.</p> 
+     * <p>Characters commonly used for hexadecimal numbers.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int HEX_DIGIT = 13; 
+
+    /** 
+     * <p>Binary property Hyphen.</p> 
+     * <p>Dashes used to mark connections between pieces of words, plus the 
+     * Katakana middle dot.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int HYPHEN = 14; 
+
+    /** 
+     * <p>Binary property ID_Continue.</p>
+     * <p>Characters that can continue an identifier.</p> 
+     * <p>ID_Start+Mn+Mc+Nd+Pc</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int ID_CONTINUE = 15; 
+
+    /** 
+     * <p>Binary property ID_Start.</p> 
+     * <p>Characters that can start an identifier.</p> 
+     * <p>Lu+Ll+Lt+Lm+Lo+Nl</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int ID_START = 16; 
+
+    /** 
+     * <p>Binary property Ideographic.</p> 
+     * <p>CJKV ideographs.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDEOGRAPHIC = 17; 
+
+    /** 
+     * <p>Binary property IDS_Binary_Operator (new).</p> 
+     * <p>For programmatic determination of Ideographic Description Sequences.
+     * </p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDS_BINARY_OPERATOR = 18; 
+
+    /** 
+     * <p>Binary property IDS_Trinary_Operator (new).</p> 
+     * <p?For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDS_TRINARY_OPERATOR = 19; 
+
+    /** 
+     * <p>Binary property Join_Control.</p> 
+     * <p>Format controls for cursive joining and ligation.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int JOIN_CONTROL = 20; 
+
+    /** 
+     * <p>Binary property Logical_Order_Exception (new).</p> 
+     * <p>Characters that do not use logical order and require special 
+     * handling in most processing.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int LOGICAL_ORDER_EXCEPTION = 21; 
+
+    /** 
+     * <p>Binary property Lowercase.</p> 
+     * <p>Same as UCharacter.isULowercase(), different from 
+     * UCharacter.islower().</p> 
+     * <p>Ll+Other_Lowercase</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int LOWERCASE = 22; 
+
+    /** <p>Binary property Math.</p> 
+     * <p>Sm+Other_Math</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int MATH = 23; 
+
+    /** 
+     * <p>Binary property Noncharacter_Code_Point.</p> 
+     * <p>Code points that are explicitly defined as illegal for the encoding 
+     * of characters.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int NONCHARACTER_CODE_POINT = 24; 
+
+    /** 
+     * <p>Binary property Quotation_Mark.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int QUOTATION_MARK = 25; 
+
+    /** 
+     * <p>Binary property Radical (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int RADICAL = 26; 
+
+    /** 
+     * <p>Binary property Soft_Dotted (new).</p> 
+     * <p>Characters with a "soft dot", like i or j.</p>
+     * <p>An accent placed on these characters causes the dot to disappear.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int SOFT_DOTTED = 27; 
+
+    /** 
+     * <p>Binary property Terminal_Punctuation.</p> 
+     * <p>Punctuation characters that generally mark the end of textual 
+     * units.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int TERMINAL_PUNCTUATION = 28; 
+
+    /** 
+     * <p>Binary property Unified_Ideograph (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int UNIFIED_IDEOGRAPH = 29; 
+
+    /** 
+     * <p>Binary property Uppercase.</p> 
+     * <p>Same as UCharacter.isUUppercase(), different from 
+     * UCharacter.isUpperCase().</p> 
+     * <p>Lu+Other_Uppercase</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int UPPERCASE = 30; 
+
+    /** 
+     * <p>Binary property White_Space.</p> 
+     * <p>Same as UCharacter.isUWhiteSpace(), different from 
+     * UCharacter.isSpace() and UCharacter.isWhitespace().</p> 
+     * Space characters+TAB+CR+LF-ZWSP-ZWNBSP</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int WHITE_SPACE = 31; 
+
+    /** 
+     * <p>Binary property XID_Continue.</p> 
+     * <p>ID_Continue modified to allow closure under normalization forms 
+     * NFKC and NFKD.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int XID_CONTINUE = 32; 
+
+    /** 
+     * <p>Binary property XID_Start.</p> 
+     * <p>ID_Start modified to allow closure under normalization forms NFKC 
+     * and NFKD.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int XID_START = 33; 
+
+    /**
+     * <p>Binary property Case_Sensitive.</p>
+     * <p>Either the source of a case
+     * mapping or _in_ the target of a case mapping. Not the same as
+     * the general category Cased_Letter.</p>
+     * @stable ICU 2.6
+     */
+    public static final int CASE_SENSITIVE = 34;
+
+    /**
+     * Binary property STerm (new in Unicode 4.0.1).
+     * Sentence Terminal. Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * @stable ICU 3.0
+     */
+    public static final int S_TERM = 35;
+
+    /**
+     * Binary property Variation_Selector (new in Unicode 4.0.1).
+     * Indicates all those characters that qualify as Variation Selectors.
+     * For details on the behavior of these characters,
+     * see StandardizedVariants.html and 15.6 Variation Selectors.
+     * @stable ICU 3.0
+     */
+    public static final int VARIATION_SELECTOR = 36;
+
+    /** 
+     * Binary property NFD_Inert.
+     * ICU-specific property for characters that are inert under NFD,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     *
+     * There is one such property per normalization form.
+     * These properties are computed as follows - an inert character is:
+     * a) unassigned, or ALL of the following:
+     * b) of combining class 0.
+     * c) not decomposed by this normalization form.
+     * AND if NFC or NFKC,
+     * d) can never compose with a previous character.
+     * e) can never compose with a following character.
+     * f) can never change if another character is added.
+     * Example: a-breve might satisfy all but f, but if you
+     * add an ogonek it changes to a-ogonek + breve
+     *
+     * See also com.ibm.text.UCD.NFSkippable in the ICU4J repository,
+     * and icu/source/common/unormimp.h .
+     * @stable ICU 3.0
+     */
+    public static final int NFD_INERT = 37;
+
+    /** 
+     * Binary property NFKD_Inert.
+     * ICU-specific property for characters that are inert under NFKD,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFKD_INERT = 38;
+
+    /** 
+     * Binary property NFC_Inert.
+     * ICU-specific property for characters that are inert under NFC,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFC_INERT = 39;
+
+    /** 
+     * Binary property NFKC_Inert.
+     * ICU-specific property for characters that are inert under NFKC,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFKC_INERT = 40;
+
+    /**
+     * Binary Property Segment_Starter.
+     * ICU-specific property for characters that are starters in terms of
+     * Unicode normalization and combining character sequences.
+     * They have ccc=0 and do not occur in non-initial position of the
+     * canonical decomposition of any character
+     * (like " in NFD(a-umlaut) and a Jamo T in an NFD(Hangul LVT)).
+     * ICU uses this property for segmenting a string for generating a set of
+     * canonically equivalent strings, e.g. for canonical closure while
+     * processing collation tailoring rules.
+     * @stable ICU 3.0 
+     */
+    public static final int SEGMENT_STARTER = 41;
+
+    /**
+     * Binary property Pattern_Syntax (new in Unicode 4.1).
+     * See UAX #31 Identifier and Pattern Syntax
+     * (http://www.unicode.org/reports/tr31/)
+     * @stable ICU 3.4
+     */
+    public static final int PATTERN_SYNTAX = 42;
+
+    /**
+     * Binary property Pattern_White_Space (new in Unicode 4.1).
+     * See UAX #31 Identifier and Pattern Syntax
+     * (http://www.unicode.org/reports/tr31/)
+     * @stable ICU 3.4
+     */
+    public static final int PATTERN_WHITE_SPACE = 43;
+
+    /**
+     * Binary property alnum (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_ALNUM = 44;
+
+    /**
+     * Binary property blank (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_BLANK = 45;
+
+    /**
+     * Binary property graph (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_GRAPH = 46;
+
+    /**
+     * Binary property print (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_PRINT = 47;
+
+    /**
+     * Binary property xdigit (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_XDIGIT = 48;
+
+    /** 
+     * <p>One more than the last constant for binary Unicode properties.</p> 
+     * @stable ICU 2.6
+     */
+    public static final int BINARY_LIMIT = 49;
+    
+    /** 
+     * Enumerated property Bidi_Class.
+     * Same as UCharacter.getDirection(int), returns UCharacterDirection values. 
+     * @stable ICU 2.4 
+     */
+    public static final int BIDI_CLASS = 0x1000;
+
+    /** 
+     * First constant for enumerated/integer Unicode properties. 
+     * @stable ICU 2.4
+     */
+    public static final int INT_START = BIDI_CLASS;
+
+    /** 
+     * Enumerated property Block.
+     * Same as UCharacter.UnicodeBlock.of(int), returns UCharacter.UnicodeBlock 
+     * values. 
+     * @stable ICU 2.4 
+     */
+    public static final int BLOCK = 0x1001;
+
+    /** 
+     * Enumerated property Canonical_Combining_Class.
+     * Same as UCharacter.getCombiningClass(int), returns 8-bit numeric values. 
+     * @stable ICU 2.4 
+     */
+    public static final int CANONICAL_COMBINING_CLASS = 0x1002;
+
+    /** 
+     * Enumerated property Decomposition_Type.
+     * Returns UCharacter.DecompositionType values. 
+     * @stable ICU 2.4
+     */
+    public static final int DECOMPOSITION_TYPE = 0x1003;
+
+    /** 
+     * Enumerated property East_Asian_Width.
+     * See http://www.unicode.org/reports/tr11/
+     * Returns UCharacter.EastAsianWidth values. 
+     * @stable ICU 2.4 
+     */
+    public static final int EAST_ASIAN_WIDTH = 0x1004;
+
+    /** 
+     * Enumerated property General_Category.
+     * Same as UCharacter.getType(int), returns UCharacterCategory values. 
+     * @stable ICU 2.4 
+     */
+    public static final int GENERAL_CATEGORY = 0x1005;
+
+    /** 
+     * Enumerated property Joining_Group.
+     * Returns UCharacter.JoiningGroup values. 
+     * @stable ICU 2.4 
+     */
+    public static final int JOINING_GROUP = 0x1006;
+
+    /** 
+     * Enumerated property Joining_Type.
+     * Returns UCharacter.JoiningType values. 
+     * @stable ICU 2.4 
+     */
+    public static final int JOINING_TYPE = 0x1007;
+
+    /** 
+     * Enumerated property Line_Break.
+     * Returns UCharacter.LineBreak values. 
+     * @stable ICU 2.4 
+     */
+    public static final int LINE_BREAK = 0x1008;
+
+    /** 
+     * Enumerated property Numeric_Type.
+     * Returns UCharacter.NumericType values. 
+     * @stable ICU 2.4 
+     */
+    public static final int NUMERIC_TYPE = 0x1009;
+
+    /** 
+     * Enumerated property Script.
+     * Same as UScript.getScript(int), returns UScript values. 
+     * @stable ICU 2.4 
+     */
+    public static final int SCRIPT = 0x100A;
+    
+    /** 
+     * Enumerated property Hangul_Syllable_Type, new in Unicode 4.
+     * Returns HangulSyllableType values. 
+     * @stable ICU 2.6 
+     */
+    public static final int HANGUL_SYLLABLE_TYPE = 0x100B;
+
+    /**
+     * Enumerated property NFD_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFD_QUICK_CHECK = 0x100C;
+
+    /**
+     * Enumerated property NFKD_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFKD_QUICK_CHECK = 0x100D;
+
+    /**
+     * Enumerated property NFC_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFC_QUICK_CHECK = 0x100E;
+
+    /**
+     * Enumerated property NFKC_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFKC_QUICK_CHECK = 0x100F;
+
+    /**
+     * Enumerated property Lead_Canonical_Combining_Class.
+     * ICU-specific property for the ccc of the first code point
+     * of the decomposition, or lccc(c)=ccc(NFD(c)[0]).
+     * Useful for checking for canonically ordered text;
+     * see Normalizer.FCD and http://www.unicode.org/notes/tn5/#FCD .
+     * Returns 8-bit numeric values like CANONICAL_COMBINING_CLASS.
+     * @stable ICU 3.0
+     */
+    public static final int LEAD_CANONICAL_COMBINING_CLASS = 0x1010;
+
+    /**
+     * Enumerated property Trail_Canonical_Combining_Class.
+     * ICU-specific property for the ccc of the last code point
+     * of the decomposition, or lccc(c)=ccc(NFD(c)[last]).
+     * Useful for checking for canonically ordered text;
+     * see Normalizer.FCD and http://www.unicode.org/notes/tn5/#FCD .
+     * Returns 8-bit numeric values like CANONICAL_COMBINING_CLASS.
+     * @stable ICU 3.0
+     */
+    public static final int TRAIL_CANONICAL_COMBINING_CLASS = 0x1011;
+
+    /**
+     * Enumerated property Grapheme_Cluster_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns UGraphemeClusterBreak values.
+     * @stable ICU 3.4
+     */
+    public static final int GRAPHEME_CLUSTER_BREAK = 0x1012;
+
+    /**
+     * Enumerated property Sentence_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns USentenceBreak values.
+     * @stable ICU 3.4
+     */
+    public static final int SENTENCE_BREAK = 0x1013;
+
+    /**
+     * Enumerated property Word_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns UWordBreakValues values.
+     * @stable ICU 3.4
+     */
+    public static final int WORD_BREAK = 0x1014;
+
+    /** 
+     * One more than the last constant for enumerated/integer Unicode 
+     * properties. 
+     * @stable ICU 2.4 
+     */
+    public static final int INT_LIMIT = 0x1015;
+
+    /** 
+     * Bitmask property General_Category_Mask.
+     * This is the General_Category property returned as a bit mask.
+     * When used in UCharacter.getIntPropertyValue(c),
+     * returns bit masks for UCharacterCategory values where exactly one bit is set. 
+     * When used with UCharacter.getPropertyValueName() and UCharacter.getPropertyValueEnum(), 
+     * a multi-bit mask is used for sets of categories like "Letters". 
+     * @stable ICU 2.4
+     */ 
+    public static final int GENERAL_CATEGORY_MASK = 0x2000; 
+
+    /** 
+     * First constant for bit-mask Unicode properties. 
+     * @stable ICU 2.4
+     */
+    public static final int MASK_START = GENERAL_CATEGORY_MASK;
+
+    /** 
+     * One more than the last constant for bit-mask Unicode properties. 
+     * @stable ICU 2.4
+     */ 
+    public static final int MASK_LIMIT = 0x2001; 
+    
+    /**
+     * Double property Numeric_Value.
+     * Corresponds to UCharacter.getUnicodeNumericValue(int).
+     * @stable ICU 2.4
+     */
+    public static final int NUMERIC_VALUE = 0x3000;
+
+    /**
+     * First constant for double Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int DOUBLE_START = NUMERIC_VALUE;
+
+    /**
+     * One more than the last constant for double Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int DOUBLE_LIMIT = 0x3001;
+
+    /**
+     * String property Age.
+     * Corresponds to UCharacter.getAge(int).
+     * @stable ICU 2.4
+     */
+    public static final int AGE = 0x4000;
+
+    /**
+     * First constant for string Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int STRING_START = AGE;
+
+    /**
+     * String property Bidi_Mirroring_Glyph.
+     * Corresponds to UCharacter.getMirror(int).
+     * @stable ICU 2.4
+     */
+    public static final int BIDI_MIRRORING_GLYPH = 0x4001;
+
+    /**
+     * String property Case_Folding.
+     * Corresponds to UCharacter.foldCase(String, boolean).
+     * @stable ICU 2.4
+     */
+    public static final int CASE_FOLDING = 0x4002;
+
+    /**
+     * String property ISO_Comment.
+     * Corresponds to UCharacter.getISOComment(int).
+     * @stable ICU 2.4
+     */
+    public static final int ISO_COMMENT = 0x4003;
+
+    /**
+     * String property Lowercase_Mapping.
+     * Corresponds to UCharacter.toLowerCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int LOWERCASE_MAPPING = 0x4004;
+
+    /**
+     * String property Name.
+     * Corresponds to UCharacter.getName(int).
+     * @stable ICU 2.4
+     */
+    public static final int NAME = 0x4005;
+
+    /**
+     * String property Simple_Case_Folding.
+     * Corresponds to UCharacter.foldCase(int, boolean).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_CASE_FOLDING = 0x4006;
+
+    /**
+     * String property Simple_Lowercase_Mapping.
+     * Corresponds to UCharacter.toLowerCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_LOWERCASE_MAPPING = 0x4007;
+
+    /**
+     * String property Simple_Titlecase_Mapping.
+     * Corresponds to UCharacter.toTitleCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_TITLECASE_MAPPING = 0x4008;
+
+    /**
+     * String property Simple_Uppercase_Mapping.
+     * Corresponds to UCharacter.toUpperCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_UPPERCASE_MAPPING = 0x4009;
+
+    /**
+     * String property Titlecase_Mapping.
+     * Corresponds to UCharacter.toTitleCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int TITLECASE_MAPPING = 0x400A;
+
+    /**
+     * String property Unicode_1_Name.
+     * Corresponds to UCharacter.getName1_0(int).
+     * @stable ICU 2.4
+     */
+    public static final int UNICODE_1_NAME = 0x400B;
+
+    /**
+     * String property Uppercase_Mapping.
+     * Corresponds to UCharacter.toUpperCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int UPPERCASE_MAPPING = 0x400C;
+
+    /**
+     * One more than the last constant for string Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int STRING_LIMIT = 0x400D;
+
+    /**
+     * Selector constants for UCharacter.getPropertyName() and
+     * UCharacter.getPropertyValueName().  These selectors are used to
+     * choose which name is returned for a given property or value.
+     * All properties and values have a long name.  Most have a short
+     * name, but some do not.  Unicode allows for additional names,
+     * beyond the long and short name, which would be indicated by
+     * LONG + i, where i=1, 2,...
+     *
+     * @see UCharacter#getPropertyName
+     * @see UCharacter#getPropertyValueName
+     * @stable ICU 2.4
+     */
+    public interface NameChoice {
+        /**
+         * Selector for the abbreviated name of a property or value.
+         * Most properties and values have a short name; those that do
+         * not return null.
+         * @stable ICU 2.4
+         */
+        static final int SHORT = 0;
+
+        /**
+         * Selector for the long name of a property or value.  All
+         * properties and values have a long name.
+         * @stable ICU 2.4
+         */
+        static final int LONG = 1;
+
+        /**
+         * The number of predefined property name choices.  Individual
+         * properties or values may have more than COUNT aliases.
+         * @stable ICU 2.4
+         */
+        static final int COUNT = 2;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UScript.java b/src/com/ibm/icu/lang/UScript.java
new file mode 100644
index 0000000..fa5a7c7
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScript.java
@@ -0,0 +1,896 @@
+/**
+*******************************************************************************
+* Copyright (C) 2001-2008 International Business Machines Corporation and     *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * A class to reflect UTR #24: Script Names
+ * (based on ISO 15924:2000, "Code for the representation of names of
+ * scripts").  UTR #24 describes the basis for a new Unicode data file,
+ * Scripts.txt.
+ * @stable ICU 2.4
+ */
+public final class UScript {
+    /**
+     * Invalid code
+     * @stable ICU 2.4
+     */
+    public static final int INVALID_CODE = -1;
+    /**
+     * Common
+     * @stable ICU 2.4
+     */
+    public static final int COMMON       =  0;  /* Zyyy */
+    /**
+     * Inherited
+     * @stable ICU 2.4
+     */
+    public static final int INHERITED    =  1;  /* Qaai */
+    /**
+     * Arabic
+     * @stable ICU 2.4
+     */
+    public static final int ARABIC       =  2;  /* Arab */
+    /**
+     * Armenian
+     * @stable ICU 2.4
+     */
+    public static final int ARMENIAN     =  3;  /* Armn */
+    /**
+     * Bengali
+     * @stable ICU 2.4
+     */
+    public static final int BENGALI      =  4;  /* Beng */
+    /**
+     * Bopomofo
+     * @stable ICU 2.4
+     */
+    public static final int BOPOMOFO     =  5;  /* Bopo */
+    /**
+     * Cherokee
+     * @stable ICU 2.4
+     */
+    public static final int CHEROKEE     =  6;  /* Cher */
+    /**
+     * Coptic
+     * @stable ICU 2.4
+     */
+    public static final int COPTIC       =  7;  /* Qaac */
+    /**
+     * Cyrillic
+     * @stable ICU 2.4
+     */
+    public static final int CYRILLIC     =  8;  /* Cyrl (Cyrs) */
+    /**
+     * Deseret
+     * @stable ICU 2.4
+     */
+    public static final int DESERET      =  9;  /* Dsrt */
+    /**
+     * Devanagari
+     * @stable ICU 2.4
+     */
+    public static final int DEVANAGARI   = 10;  /* Deva */
+    /**
+     * Ethiopic
+     * @stable ICU 2.4
+     */
+    public static final int ETHIOPIC     = 11;  /* Ethi */
+    /**
+     * Georgian
+     * @stable ICU 2.4
+     */
+    public static final int GEORGIAN     = 12;  /* Geor (Geon; Geoa) */
+    /**
+     * Gothic
+     * @stable ICU 2.4
+     */
+    public static final int GOTHIC       = 13;  /* Goth */
+    /**
+     * Greek
+     * @stable ICU 2.4
+     */
+    public static final int GREEK        = 14;  /* Grek */
+    /**
+     * Gujarati
+     * @stable ICU 2.4
+     */
+    public static final int GUJARATI     = 15;  /* Gujr */
+    /**
+     * Gurmukhi
+     * @stable ICU 2.4
+     */
+    public static final int GURMUKHI     = 16;  /* Guru */
+    /**
+     * Han
+     * @stable ICU 2.4
+     */
+    public static final int HAN          = 17;  /* Hani */
+    /**
+     * Hangul
+     * @stable ICU 2.4
+     */
+    public static final int HANGUL       = 18;  /* Hang */
+    /**
+     * Hebrew
+     * @stable ICU 2.4
+     */
+    public static final int HEBREW       = 19;  /* Hebr */
+    /**
+     * Hiragana
+     * @stable ICU 2.4
+     */
+    public static final int HIRAGANA     = 20;  /* Hira */
+    /**
+     * Kannada
+     * @stable ICU 2.4
+     */
+    public static final int KANNADA      = 21;  /* Knda */
+    /**
+     * Katakana
+     * @stable ICU 2.4
+     */
+    public static final int KATAKANA     = 22;  /* Kana */
+    /**
+     * Khmer
+     * @stable ICU 2.4
+     */
+    public static final int KHMER        = 23;  /* Khmr */
+    /**
+     * Lao
+     * @stable ICU 2.4
+     */
+    public static final int LAO          = 24;  /* Laoo */
+    /**
+     * Latin
+     * @stable ICU 2.4
+     */
+    public static final int LATIN        = 25;  /* Latn (Latf; Latg) */
+    /**
+     * Malayalam
+     * @stable ICU 2.4
+     */
+    public static final int MALAYALAM    = 26;  /* Mlym */
+    /**
+     * Mangolian
+     * @stable ICU 2.4
+     */
+    public static final int MONGOLIAN    = 27;  /* Mong */
+    /**
+     * Myammar
+     * @stable ICU 2.4
+     */
+    public static final int MYANMAR      = 28;  /* Mymr */
+    /**
+     * Ogham
+     * @stable ICU 2.4
+     */
+    public static final int OGHAM        = 29;  /* Ogam */
+    /**
+     * Old Itallic
+     * @stable ICU 2.4
+     */
+    public static final int OLD_ITALIC   = 30;  /* Ital */
+    /**
+     * Oriya
+     * @stable ICU 2.4
+     */
+    public static final int ORIYA        = 31;  /* Orya */
+    /**
+     * Runic
+     * @stable ICU 2.4
+     */
+    public static final int RUNIC        = 32;  /* Runr */
+    /**
+     * Sinhala
+     * @stable ICU 2.4
+     */
+    public static final int SINHALA      = 33;  /* Sinh */
+    /**
+     * Syriac
+     * @stable ICU 2.4
+     */
+    public static final int SYRIAC       = 34;  /* Syrc (Syrj; Syrn; Syre) */
+    /**
+     * Tamil
+     * @stable ICU 2.4
+     */
+    public static final int TAMIL        = 35;  /* Taml */
+    /**
+     * Telugu
+     * @stable ICU 2.4
+     */
+    public static final int TELUGU       = 36;  /* Telu */
+    /**
+     * Thana
+     * @stable ICU 2.4
+     */
+    public static final int THAANA       = 37;  /* Thaa */
+    /**
+     * Thai
+     * @stable ICU 2.4
+     */
+    public static final int THAI         = 38;  /* Thai */
+    /**
+     * Tibetan
+     * @stable ICU 2.4
+     */
+    public static final int TIBETAN      = 39;  /* Tibt */
+    /**
+     * Unified Canadian Aboriginal Symbols
+     * @stable ICU 2.6
+     */
+    public static final int CANADIAN_ABORIGINAL = 40;  /* Cans */
+    /**
+     * Unified Canadian Aboriginal Symbols (alias)
+     * @stable ICU 2.4
+     */
+    public static final int UCAS         = CANADIAN_ABORIGINAL;  /* Cans */
+    /**
+     * Yi syllables
+     * @stable ICU 2.4
+     */
+    public static final int YI           = 41;  /* Yiii */
+    /**
+     * Tagalog
+     * @stable ICU 2.4
+     */
+    public static final int TAGALOG      = 42;  /* Tglg */
+    /**
+     * Hanunooo
+     * @stable ICU 2.4
+     */
+    public static final int HANUNOO      = 43;  /* Hano */
+    /**
+     * Buhid
+     * @stable ICU 2.4
+     */
+    public static final int BUHID        = 44;  /* Buhd */
+    /**
+     * Tagbanwa
+     * @stable ICU 2.4
+     */
+    public static final int TAGBANWA     = 45;  /* Tagb */
+    /**
+     * Braille
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int BRAILLE      = 46;  /* Brai */
+    /**
+     * Cypriot
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */  
+    public static final int CYPRIOT              = 47;  /* Cprt */ 
+    /**
+     * Limbu
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */       
+    public static final int LIMBU                = 48;  /* Limb */ 
+    /**
+     * Linear B
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int LINEAR_B     = 49;  /* Linb */ 
+    /**
+     * Osmanya
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int OSMANYA              = 50;  /* Osma */ 
+    /**
+     * Shavian
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int SHAVIAN              = 51;  /* Shaw */ 
+    /**
+     * Tai Le
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int TAI_LE               = 52;  /* Tale */ 
+    /**
+     * Ugaritic
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int UGARITIC     = 53;  /* Ugar */ 
+    /**
+     * Script in Unicode 4.0.1
+     * @stable ICU 3.0
+     */
+    public static final int KATAKANA_OR_HIRAGANA = 54;  /*Hrkt */
+
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int BUGINESE = 55;           /* Bugi */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int GLAGOLITIC = 56;         /* Glag */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int KHAROSHTHI = 57;         /* Khar */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int SYLOTI_NAGRI = 58;       /* Sylo */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int NEW_TAI_LUE = 59;        /* Talu */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int TIFINAGH = 60;           /* Tfng */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int OLD_PERSIAN = 61;        /* Xpeo */
+
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BALINESE                      = 62; /* Bali */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BATAK                         = 63; /* Batk */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BLISSYMBOLS                   = 64; /* Blis */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BRAHMI                        = 65; /* Brah */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CHAM                          = 66; /* Cham */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CIRTH                         = 67; /* Cirt */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_CHURCH_SLAVONIC_CYRILLIC  = 68; /* Cyrs */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int DEMOTIC_EGYPTIAN              = 69; /* Egyd */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int HIERATIC_EGYPTIAN             = 70; /* Egyh */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int EGYPTIAN_HIEROGLYPHS          = 71; /* Egyp */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int KHUTSURI                      = 72; /* Geok */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int SIMPLIFIED_HAN                = 73; /* Hans */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int TRADITIONAL_HAN               = 74; /* Hant */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PAHAWH_HMONG                  = 75; /* Hmng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_HUNGARIAN                 = 76; /* Hung */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int HARAPPAN_INDUS                = 77; /* Inds */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int JAVANESE                      = 78; /* Java */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int KAYAH_LI                      = 79; /* Kali */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LATIN_FRAKTUR                 = 80; /* Latf */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LATIN_GAELIC                  = 81; /* Latg */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LEPCHA                        = 82; /* Lepc */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LINEAR_A                      = 83; /* Lina */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MANDAEAN                      = 84; /* Mand */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MAYAN_HIEROGLYPHS             = 85; /* Maya */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MEROITIC                      = 86; /* Mero */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int NKO                           = 87; /* Nkoo */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int ORKHON                        = 88; /* Orkh */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_PERMIC                    = 89; /* Perm */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHAGS_PA                      = 90; /* Phag */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHOENICIAN                    = 91; /* Phnx */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHONETIC_POLLARD              = 92; /* Plrd */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int RONGORONGO                    = 93; /* Roro */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int SARATI                        = 94; /* Sara */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int ESTRANGELO_SYRIAC             = 95; /* Syre */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int WESTERN_SYRIAC                = 96; /* Syrj */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int EASTERN_SYRIAC                = 97; /* Syrn */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int TENGWAR                       = 98; /* Teng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int VAI                           = 99; /* Vaii */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int VISIBLE_SPEECH                = 100;/* Visp */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CUNEIFORM                     = 101;/* Xsux */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int UNWRITTEN_LANGUAGES           = 102;/* Zxxx */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int UNKNOWN                       = 103;/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
+    
+    /* Private use codes from Qaaa - Qabx are not supported*/
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */ 
+    public static final int CARIAN                        = 104;/* Cari */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int JAPANESE                      = 105;/* Jpan */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LANNA                         = 106;/* Lana */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LYCIAN                        = 107;/* Lyci */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LYDIAN                        = 108;/* Lydi */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int OL_CHIKI                      = 109;/* Olck */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int REJANG                        = 110;/* Rjng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SAURASHTRA                    = 111;/* Saur */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SIGN_WRITING                  = 112;/* Sgnw */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SUNDANESE                     = 113;/* Sund */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int MOON                          = 114;/* Moon */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int MEITEI_MAYEK                  = 115;/* Mtei */
+    
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int IMPERIAL_ARAMAIC              = 116;/* Armi */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int AVESTAN                       = 117;/* Avst */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CHAKMA                        = 118;/* Cakm */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int KOREAN                        = 119;/* Kore */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int KAITHI                        = 120;/* Kthi */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MANICHAEAN                    = 121;/* Mani */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INSCRIPTIONAL_PAHLAVI         = 122;/* Phli */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PSALTER_PAHLAVI               = 123;/* Phlp */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int BOOK_PAHLAVI                  = 124;/* Phlv */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INSCRIPTIONAL_PARTHIAN        = 125;/* Prti */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SAMARITAN                     = 126;/* Samr */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TAI_VIET                      = 127;/* Tavt */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MATHEMATICAL_NOTATION         = 128;/* Zmth */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SYMBOLS                       = 129;/* Zsym */
+    /**
+     * Limit
+     * @stable ICU 2.4
+     */
+    public static final int CODE_LIMIT   = 130;
+
+    private static final int SCRIPT_MASK   = 0x0000007f;
+    private static final UCharacterProperty prop= UCharacterProperty.getInstance();
+    private static final String kLocaleScript = "LocaleScript";
+    
+    //private static final String INVALID_NAME = "Invalid";
+    /**
+     * Helper function to find the code from locale.
+     * @param locale The locale.
+     */
+    private static int[] findCodeFromLocale(ULocale locale) {
+        ICUResourceBundle rb;
+        try {
+            rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        }
+        catch (MissingResourceException e) {
+            return null;
+        }
+        
+        // if rb is not a strict fallback of the requested locale, return null
+        //if(!LocaleUtility.isFallbackOf(rb.getULocale().toString(), locale.toString())){
+        //    return null;
+        //}
+        //non existent locale check
+        if(rb.getLoadingStatus()==ICUResourceBundle.FROM_DEFAULT && ! locale.equals(ULocale.getDefault())){
+            return null;
+        }
+        UResourceBundle sub = rb.get(kLocaleScript);
+        
+        int[] result = new int[sub.getSize()];
+        int w = 0;
+        for (int i = 0; i < result.length; ++i) {
+            int code = UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                       sub.getString(i));
+            result[w++] = code;
+
+        }
+
+        if (w < result.length) {
+            throw new IllegalStateException("bad locale data, listed " + 
+                 result.length + " scripts but found only " + w);
+        }
+
+        return result;
+    }
+
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     * @param locale Locale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 2.4
+     */
+    public static final int[] getCode(Locale locale){
+        return findCodeFromLocale(ULocale.forLocale(locale));
+    }
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     * @param locale ULocale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 3.0
+     */
+    public static final int[] getCode(ULocale locale){
+        return findCodeFromLocale(locale);
+    }
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     *
+     * <p>Note: To search by short or long script alias only, use
+     * UCharacater.getPropertyValueEnum(UProperty.SCRIPT, alias)
+     * instead.  This does a fast lookup with no access of the locale
+     * data.
+     * @param nameOrAbbrOrLocale name of the script or ISO 15924 code or locale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 2.4
+     */
+    public static final int[] getCode(String nameOrAbbrOrLocale){
+        try {
+            return new int[] {
+                UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                nameOrAbbrOrLocale)
+            };
+        } catch (IllegalArgumentException e) {
+            return findCodeFromLocale(new ULocale(nameOrAbbrOrLocale));
+        }
+    }
+
+    /**
+     * Gets a script codes associated with the given ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     *
+     * @param nameOrAbbr name of the script or ISO 15924 code
+     * @return The script code value or INVALID_CODE if the code cannot be found.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int getCodeFromName(String nameOrAbbr) {
+        try {
+            return UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                   nameOrAbbr);
+        } catch (IllegalArgumentException e) {
+            return INVALID_CODE;
+        }
+    }
+
+    /**
+     * Gets the script code associated with the given codepoint.
+     * Returns UScript.MALAYAM given 0x0D02
+     * @param codepoint UChar32 codepoint
+     * @return The script code
+     * @stable ICU 2.4
+     */
+    public static final int getScript(int codepoint){
+        if (codepoint >= UCharacter.MIN_VALUE & codepoint <= UCharacter.MAX_VALUE) {
+            return (prop.getAdditional(codepoint,0) & SCRIPT_MASK);
+        }else{
+            throw new IllegalArgumentException(Integer.toString(codepoint));
+        }
+    }
+
+    /**
+     * Gets a script name associated with the given script code.
+     * Returns  "Malayam" given MALAYAM
+     * @param scriptCode int script code
+     * @return script name as a string in full as given in TR#24
+     * @stable ICU 2.4
+     */
+    public static final String getName(int scriptCode){
+        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
+                                               scriptCode,
+                                               UProperty.NameChoice.LONG);
+    }
+
+    /**
+     * Gets a script name associated with the given script code.
+     * Returns  "Mlym" given MALAYAM
+     * @param scriptCode int script code
+     * @return script abbreviated name as a string  as given in TR#24
+     * @stable ICU 2.4
+     */
+    public static final String getShortName(int scriptCode){
+        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
+                                               scriptCode,
+                                               UProperty.NameChoice.SHORT);
+    }
+    ///CLOVER:OFF
+    /**
+     *  Private Constructor. Never default construct
+     */
+    private UScript(){}
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/lang/UScriptRun.java b/src/com/ibm/icu/lang/UScriptRun.java
new file mode 100644
index 0000000..d1dc902
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScriptRun.java
@@ -0,0 +1,628 @@
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 1999-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.text.UTF16;
+
+/**
+ * <code>UScriptRun</code> is used to find runs of characters in
+ * the same script, as defined in the <code>UScript</code> class.
+ * It implements a simple iterator over an array of characters.
+ * The iterator will assign <code>COMMON</code> and <code>INHERITED</code>
+ * characters to the same script as the preceeding characters. If the
+ * COMMON and INHERITED characters are first, they will be assigned to
+ * the same script as the following characters.
+ *
+ * The iterator will try to match paired punctuation. If it sees an
+ * opening punctuation character, it will remember the script that
+ * was assigned to that character, and assign the same script to the
+ * matching closing punctuation.
+ *
+ * No attempt is made to combine related scripts into a single run. In
+ * particular, Hiragana, Katakana, and Han characters will appear in separate
+ * runs.
+
+ * Here is an example of how to iterate over script runs:
+ * <pre>
+ * void printScriptRuns(char[] text)
+ * {
+ *     UScriptRun scriptRun = new UScriptRun(text);
+ *
+ *     while (scriptRun.next()) {
+ *         int start  = scriptRun.getScriptStart();
+ *         int limit  = scriptRun.getScriptLimit();
+ *         int script = scriptRun.getScriptCode();
+ *
+ *         System.out.println("Script \"" + UScript.getName(script) + "\" from " +
+ *                            start + " to " + limit + ".");
+ *     }
+ *  }
+ * </pre>
+ *
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class UScriptRun
+{
+    /**
+     * Construct an empty <code>UScriptRun</code> object. The <code>next()</code>
+     * method will return <code>false</code> the first time it is called.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun()
+    {
+        char[] nullChars = null;
+        
+        reset(nullChars, 0, 0);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the
+     * characters in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(String text)
+    {
+        reset (text);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the characetrs in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(String text, int start, int count)
+    {
+        reset(text, start, count);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the given
+     * characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(char[] chars)
+    {
+        reset(chars);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the given characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(char[] chars, int start, int count)
+    {
+        reset(chars, start, count);
+    }
+
+
+    /**
+     * Reset the iterator to the start of the text.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset()
+    {
+        // empty any old parenStack contents.
+        // NOTE: this is not the most efficient way
+        // to do this, but it's the easiest to write...
+        while (stackIsNotEmpty()) {
+            pop();
+        }
+        
+        scriptStart = textStart;
+        scriptLimit = textStart;
+        scriptCode  = UScript.INVALID_CODE;
+        parenSP     = -1;
+        pushCount   =  0;
+        fixupCount  =  0;
+        
+        textIndex = textStart;
+    }
+
+    /**
+     * Reset the iterator to iterate over the given range of the text. Throws
+     * IllegalArgumentException if the range is outside of the bounds of the
+     * character array.
+     *
+     * @param start the index of the new first character over which to iterate
+     * @param count the new number of characters over which to iterate.
+     * @exception IllegalArgumentException
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(int start, int count)
+    throws IllegalArgumentException
+    {
+        int len = 0;
+        
+        if (text != null) {
+            len = text.length;
+        }
+        
+        if (start < 0 || count < 0 || start > len - count) {
+            throw new IllegalArgumentException();
+        }
+        
+        textStart = start;
+        textLimit = start + count;
+
+        reset();
+    }
+
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>chars</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the number of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(char[] chars, int start, int count)
+    {
+        if (chars == null) {
+            chars = emptyCharArray;
+        }
+        
+        text = chars;
+
+        reset(start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>chars</code>. This allows clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(char[] chars)
+    {
+        int length = 0;
+        
+        if (chars != null) {
+            length = chars.length;
+        }
+        
+        reset(chars, 0, length);
+    }
+    
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>text</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param str the new string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the nuber of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(String str, int start, int count)
+    {
+        char[] chars = null;
+        
+        if (str != null) {
+            chars = str.toCharArray();
+        }
+        
+        reset(chars, start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>text</code>. This allows clients to reuse an iterator.
+     *
+     * @param str the new string of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(String str)
+    {
+        int length   = 0;
+        
+        if (str != null) {
+            length = str.length();
+        }
+        
+        reset(str, 0, length);
+    }
+        
+
+
+    /**
+     * Get the starting index of the current script run.
+     *
+     * @return the index of the first character in the current script run.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptStart()
+    {
+        return scriptStart;
+    }
+
+    /**
+     * Get the index of the first character after the current script run.
+     *
+     * @return the index of the first character after the current script run.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptLimit()
+    {
+        return scriptLimit;
+    }
+
+    /**
+     * Get the script code for the script of the current script run.
+     *
+     * @return the script code for the script of the current script run.
+     * @see com.ibm.icu.lang.UScript
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptCode()
+    {
+        return scriptCode;
+    }
+
+    /**
+     * Find the next script run. Returns <code>false</code> if there
+     * isn't another run, returns <code>true</code> if there is.
+     *
+     * @return <code>false</code> if there isn't another run, <code>true</code> if there is.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final boolean next()
+    {
+        // if we've fallen off the end of the text, we're done
+        if (scriptLimit >= textLimit) {
+            return false;
+        }
+    
+        scriptCode  = UScript.COMMON;
+        scriptStart = scriptLimit;
+        
+        syncFixup();
+        
+        while (textIndex < textLimit) {
+            int ch = UTF16.charAt(text, textStart, textLimit, textIndex - textStart);
+            int codePointCount = UTF16.getCharCount(ch);
+            int sc = UScript.getScript(ch);
+            int pairIndex = getPairIndex(ch);
+
+            textIndex += codePointCount;
+            
+            // Paired character handling:
+            //
+            // if it's an open character, push it onto the stack.
+            // if it's a close character, find the matching open on the
+            // stack, and use that script code. Any non-matching open
+            // characters above it on the stack will be poped.
+            if (pairIndex >= 0) {
+                if ((pairIndex & 1) == 0) {
+                    push(pairIndex, scriptCode);
+                } else {
+                    int pi = pairIndex & ~1;
+
+                    while (stackIsNotEmpty() && top().pairIndex != pi) {
+                        pop();
+                    }
+
+                    if (stackIsNotEmpty()) {
+                        sc = top().scriptCode;
+                    }
+                }
+            }
+
+            if (sameScript(scriptCode, sc)) {
+                if (scriptCode <= UScript.INHERITED && sc > UScript.INHERITED) {
+                    scriptCode = sc;
+
+                    fixup(scriptCode);
+                }
+
+                // if this character is a close paired character,
+                // pop the matching open character from the stack
+                if (pairIndex >= 0 && (pairIndex & 1) != 0) {
+                    pop();
+                }
+            } else {
+                // We've just seen the first character of
+                // the next run. Back over it so we'll see
+                // it again the next time.
+                textIndex -= codePointCount;
+                break;
+            }
+        }
+
+        scriptLimit = textIndex;
+        return true;
+    }
+
+    /**
+     * Compare two script codes to see if they are in the same script. If one script is
+     * a strong script, and the other is INHERITED or COMMON, it will compare equal.
+     *
+     * @param scriptOne one of the script codes.
+     * @param scriptTwo the other script code.
+     * @return <code>true</code> if the two scripts are the same.
+     * @see com.ibm.icu.lang.UScript
+     */
+    private static boolean sameScript(int scriptOne, int scriptTwo)
+    {
+        return scriptOne <= UScript.INHERITED || scriptTwo <= UScript.INHERITED || scriptOne == scriptTwo;
+    }
+
+    /*
+     * An internal class which holds entries on the paren stack.
+     */
+    private static final class ParenStackEntry
+    {
+        int pairIndex;
+        int scriptCode;
+        
+        public ParenStackEntry(int thePairIndex, int theScriptCode)
+        {
+            pairIndex  = thePairIndex;
+            scriptCode = theScriptCode;
+        }
+    }
+    
+    private static final int mod(int sp)
+    {
+        return sp % PAREN_STACK_DEPTH;
+    }
+    
+    private static final int inc(int sp, int count)
+    {
+        return mod(sp + count);
+    }
+    
+    private static final int inc(int sp)
+    {
+        return inc(sp, 1);
+    }
+    
+    private static final int dec(int sp, int count)
+    {
+        return mod(sp + PAREN_STACK_DEPTH - count);
+    }
+    
+    private static final int dec(int sp)
+    {
+        return dec(sp, 1);
+    }
+    
+    private static final int limitInc(int count)
+    {
+        if (count < PAREN_STACK_DEPTH) {
+            count += 1;
+        }
+        
+        return count;
+    }
+    
+    private final boolean stackIsEmpty()
+    {
+        return pushCount <= 0;
+    }
+    
+    private final boolean stackIsNotEmpty()
+    {
+        return ! stackIsEmpty();
+    }
+    
+    private final void push(int pairIndex, int scrptCode)
+    {
+        pushCount  = limitInc(pushCount);
+        fixupCount = limitInc(fixupCount);
+        
+        parenSP = inc(parenSP);
+        parenStack[parenSP] = new ParenStackEntry(pairIndex, scrptCode);
+    }
+    
+    private final void pop()
+    {
+        
+        if (stackIsEmpty()) {
+            return;
+        }
+        
+        parenStack[parenSP] = null;
+        
+        if (fixupCount > 0) {
+            fixupCount -= 1;
+        }
+        
+        pushCount -= 1;
+        parenSP = dec(parenSP);
+        
+        // If the stack is now empty, reset the stack
+        // pointers to their initial values.
+        if (stackIsEmpty()) {
+            parenSP = -1;
+        }
+    }
+    
+    private final ParenStackEntry top()
+    {
+        return parenStack[parenSP];
+    }
+    
+    private final void syncFixup()
+    {
+        fixupCount = 0;
+    }
+    
+    private final void fixup(int scrptCode)
+    {
+        int fixupSP = dec(parenSP, fixupCount);
+        
+        while (fixupCount-- > 0) {
+            fixupSP = inc(fixupSP);
+            parenStack[fixupSP].scriptCode = scrptCode;
+        }
+    }
+    
+    private char[] emptyCharArray = {};
+
+    private char[] text;
+
+    private int textIndex;
+    private int  textStart;
+    private int  textLimit;
+    
+    private int  scriptStart;
+    private int  scriptLimit;
+    private int  scriptCode;
+
+    private static int PAREN_STACK_DEPTH = 32;
+    private static ParenStackEntry parenStack[] = new ParenStackEntry[PAREN_STACK_DEPTH];
+    private int parenSP = -1;
+    private int pushCount = 0;
+    private int fixupCount = 0;
+
+    /**
+     * Find the highest bit that's set in a word. Uses a binary search through
+     * the bits.
+     *
+     * @param n the word in which to find the highest bit that's set.
+     * @return the bit number (counting from the low order bit) of the highest bit.
+     */
+    private static final byte highBit(int n)
+    {
+        if (n <= 0) {
+            return -32;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+
+    /**
+     * Search the pairedChars array for the given character.
+     *
+     * @param ch the character for which to search.
+     * @return the index of the character in the table, or -1 if it's not there.
+     */
+    private static int getPairIndex(int ch)
+    {
+        int probe = pairedCharPower;
+        int index = 0;
+
+        if (ch >= pairedChars[pairedCharExtra]) {
+            index = pairedCharExtra;
+        }
+
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (ch >= pairedChars[index + probe]) {
+                index += probe;
+            }
+        }
+
+        if (pairedChars[index] != ch) {
+            index = -1;
+        }
+
+        return index;
+    }
+
+    private static int pairedChars[] = {
+        0x0028, 0x0029, // ascii paired punctuation
+        0x003c, 0x003e,
+        0x005b, 0x005d,
+        0x007b, 0x007d,
+        0x00ab, 0x00bb, // guillemets
+        0x2018, 0x2019, // general punctuation
+        0x201c, 0x201d,
+        0x2039, 0x203a,
+        0x3008, 0x3009, // chinese paired punctuation
+        0x300a, 0x300b,
+        0x300c, 0x300d,
+        0x300e, 0x300f,
+        0x3010, 0x3011,
+        0x3014, 0x3015,
+        0x3016, 0x3017,
+        0x3018, 0x3019,
+        0x301a, 0x301b
+    };
+
+    private static int pairedCharPower = 1 << highBit(pairedChars.length);
+    private static int pairedCharExtra = pairedChars.length - pairedCharPower;
+}
+
diff --git a/src/com/ibm/icu/lang/package.html b/src/com/ibm/icu/lang/package.html
new file mode 100644
index 0000000..913282d
--- /dev/null
+++ b/src/com/ibm/icu/lang/package.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Enhanced character property and surrogate support.</p>
+
+UCharacter supports all characters and properties defined in the latest version of Unicode, including properties of surrogate characters.  It provides new API for querying surrogate characters (represented as int) and also supports the java.lang.Character API.  UScript and UScriptRun provide information about scripts, which is not available through the Java APIs.</p>
+</body>
+</html>
diff --git a/src/com/ibm/icu/math/BigDecimal.java b/src/com/ibm/icu/math/BigDecimal.java
new file mode 100644
index 0000000..87142e1
--- /dev/null
+++ b/src/com/ibm/icu/math/BigDecimal.java
@@ -0,0 +1,4406 @@
+//##header J2SE15
+/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+import java.math.BigInteger;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+
+/* ------------------------------------------------------------------ */
+/* BigDecimal -- Decimal arithmetic for Java                          */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1996-2008.  All Rights Reserved.       */
+/*                                                                    */
+/* The BigDecimal class provides immutable arbitrary-precision        */
+/* floating point (including integer) decimal numbers.                */
+/*                                                                    */
+/* As the numbers are decimal, there is an exact correspondence       */
+/* between an instance of a BigDecimal object and its String          */
+/* representation; the BigDecimal class provides direct conversions   */
+/* to and from String and character array objects, and well as        */
+/* conversions to and from the Java primitive types (which may not    */
+/* be exact).                                                         */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. A BigDecimal object is never changed in value once constructed; */
+/*    this avoids the need for locking.  Note in particular that the  */
+/*    mantissa array may be shared between many BigDecimal objects,   */
+/*    so that once exposed it must not be altered.                    */
+/*                                                                    */
+/* 2. This class looks at MathContext class fields directly (for      */
+/*    performance).  It must not and does not change them.            */
+/*                                                                    */
+/* 3. Exponent checking is delayed until finish(), as we know         */
+/*    intermediate calculations cannot cause 31-bit overflow.         */
+/*    [This assertion depends on MAX_DIGITS in MathContext.]          */
+/*                                                                    */
+/* 4. Comments for the public API now follow the javadoc conventions. */
+/*    The NetRexx -comments option is used to pass these comments     */
+/*    through to the generated Java code (with -format, if desired).  */
+/*                                                                    */
+/* 5. System.arraycopy is faster than explicit loop as follows        */
+/*      Mean length 4:  equal                                         */
+/*      Mean length 8:  x2                                            */
+/*      Mean length 16: x3                                            */
+/*      Mean length 24: x4                                            */
+/*    From prior experience, we expect mean length a little below 8,  */
+/*    but arraycopy is still the one to use, in general, until later  */
+/*    measurements suggest otherwise.                                 */
+/*                                                                    */
+/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370     */
+/*    assembler code implementation of the algorithms below; it is    */
+/*    now called IXXRCN and is available with the OS/390 and VM/ESA   */
+/*    operating systems.                                              */
+/* ------------------------------------------------------------------ */
+/* Change History:                                                    */
+/* 1997.09.02 Initial version (derived from netrexx.lang classes)     */
+/* 1997.09.12 Add lostDigits checking                                 */
+/* 1997.10.06 Change mantissa to a byte array                         */
+/* 1997.11.22 Rework power [did not prepare arguments, etc.]          */
+/* 1997.12.13 multiply did not prepare arguments                      */
+/* 1997.12.14 add did not prepare and align arguments correctly       */
+/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle      */
+/* 1998.05.21 adjust remainder operator finalization                  */
+/* 1998.06.04 rework to pass MathContext to finish() and round()      */
+/* 1998.06.06 change format to use round(); support rounding modes    */
+/* 1998.06.25 rename to BigDecimal and begin merge                    */
+/*            zero can now have trailing zeros (i.e., exp\=0)         */
+/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger         */
+/*                         unscaledValue, valueof                     */
+/* 1998.07.01 improve byteaddsub to allow array reuse, etc.           */
+/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32]     */
+/* 1998.07.07 scaled division  [divide(BigDecimal, int, int)]         */
+/* 1998.07.08 setScale, faster equals                                 */
+/* 1998.07.11 allow 1E6 (no sign) <sigh>; new double/float conversion */
+/* 1998.10.12 change package to com.ibm.icu.math                          */
+/* 1998.12.14 power operator no longer rounds RHS [to match ANSI]     */
+/*            add toBigDecimal() and BigDecimal(java.math.BigDecimal) */
+/* 1998.12.29 improve byteaddsub by using table lookup                */
+/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */
+/* 1999.02.05 cleaner code for BigDecimal(char[])                     */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.02.11 format() changed from 7 to 2 method form                */
+/* 1999.03.05 null pointer checking is no longer explicit             */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch:        */
+/*            null no longer permitted for MathContext; drop boolean, */
+/*            byte, char, float, short constructor, deprecate double  */
+/*            constructor, no blanks in string constructor, add       */
+/*            offset and length version of char[] constructor;        */
+/*            add valueOf(double); drop booleanValue, charValue;      */
+/*            add ...Exact versions of remaining convertors           */
+/* 1999.03.13 add toBigIntegerExact                                   */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic          */
+/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits  */
+/* 1999.07.03 1.03 lost digits should not be checked if digits=0      */
+/* 1999.07.06      lost digits Exception message changed              */
+/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic)             */
+/* 1999.07.17      improve messages from pow method                   */
+/* 1999.08.08      performance tweaks                                 */
+/* 1999.08.15      fastpath in multiply                               */
+/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555]    */
+/* 1999.12.22 1.06 remove multiply fastpath, and improve performance  */
+/* 2000.01.01      copyright update [Y2K has arrived]                 */
+/* 2000.06.18 1.08 no longer deprecate BigDecimal(double)             */
+/* ------------------------------------------------------------------ */
+
+
+
+
+
+/**
+ * The <code>BigDecimal</code> class implements immutable
+ * arbitrary-precision decimal numbers.  The methods of the
+ * <code>BigDecimal</code> class provide operations for fixed and
+ * floating point arithmetic, comparison, format conversions, and
+ * hashing.
+ * <p>
+ * As the numbers are decimal, there is an exact correspondence between
+ * an instance of a <code>BigDecimal</code> object and its
+ * <code>String</code> representation; the <code>BigDecimal</code> class
+ * provides direct conversions to and from <code>String</code> and
+ * character array (<code>char[]</code>) objects, as well as conversions
+ * to and from the Java primitive types (which may not be exact) and
+ * <code>BigInteger</code>.
+ * <p>
+ * In the descriptions of constructors and methods in this documentation,
+ * the value of a <code>BigDecimal</code> number object is shown as the
+ * result of invoking the <code>toString()</code> method on the object.
+ * The internal representation of a decimal number is neither defined
+ * nor exposed, and is not permitted to affect the result of any
+ * operation.
+ * <p>
+ * The floating point arithmetic provided by this class is defined by
+ * the ANSI X3.274-1996 standard, and is also documented at
+ * <code>http://www2.hursley.ibm.com/decimal</code>
+ * <br><i>[This URL will change.]</i>
+ *
+ * <h3>Operator methods</h3>
+ * <p>
+ * Operations on <code>BigDecimal</code> numbers are controlled by a
+ * {@link MathContext} object, which provides the context (precision and
+ * other information) for the operation. Methods that can take a
+ * <code>MathContext</code> parameter implement the standard arithmetic
+ * operators for <code>BigDecimal</code> objects and are known as
+ * <i>operator methods</i>.  The default settings provided by the
+ * constant {@link MathContext#DEFAULT} (<code>digits=9,
+ * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP</code>)
+ * perform general-purpose floating point arithmetic to nine digits of
+ * precision.  The <code>MathContext</code> parameter must not be
+ * <code>null</code>.
+ * <p>
+ * Each operator method also has a version provided which does
+ * not take a <code>MathContext</code> parameter.  For this version of
+ * each method, the context settings used are <code>digits=0,
+ * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP</code>;
+ * these settings perform fixed point arithmetic with unlimited
+ * precision, as defined for the original BigDecimal class in Java 1.1
+ * and Java 1.2.
+ * <p>
+ * For monadic operators, only the optional <code>MathContext</code>
+ * parameter is present; the operation acts upon the current object.
+ * <p>
+ * For dyadic operators, a <code>BigDecimal</code> parameter is always
+ * present; it must not be <code>null</code>.
+ * The operation acts with the current object being the left-hand operand
+ * and the <code>BigDecimal</code> parameter being the right-hand operand.
+ * <p>
+ * For example, adding two <code>BigDecimal</code> objects referred to
+ * by the names <code>award</code> and <code>extra</code> could be
+ * written as any of:
+ * <p><code>
+ *     award.add(extra)
+ * <br>award.add(extra, MathContext.DEFAULT)
+ * <br>award.add(extra, acontext)
+ * </code>
+ * <p>
+ * (where <code>acontext</code> is a <code>MathContext</code> object),
+ * which would return a <code>BigDecimal</code> object whose value is
+ * the result of adding <code>award</code> and <code>extra</code> under
+ * the appropriate context settings.
+ * <p>
+ * When a <code>BigDecimal</code> operator method is used, a set of
+ * rules define what the result will be (and, by implication, how the
+ * result would be represented as a character string).
+ * These rules are defined in the BigDecimal arithmetic documentation
+ * (see the URL above), but in summary:
+ * <ul>
+ * <li>Results are normally calculated with up to some maximum number of
+ * significant digits.
+ * For example, if the <code>MathContext</code> parameter for an operation
+ * were <code>MathContext.DEFAULT</code> then the result would be
+ * rounded to 9 digits; the division of 2 by 3 would then result in
+ * 0.666666667.
+ * <br>
+ * You can change the default of 9 significant digits by providing the
+ * method with a suitable <code>MathContext</code> object. This lets you
+ * calculate using as many digits as you need -- thousands, if necessary.
+ * Fixed point (scaled) arithmetic is indicated by using a
+ * <code>digits</code> setting of 0 (or omitting the
+ * <code>MathContext</code> parameter).
+ * <br>
+ * Similarly, you can change the algorithm used for rounding from the
+ * default "classic" algorithm.
+ * <li>
+ * In standard arithmetic (that is, when the <code>form</code> setting
+ * is not <code>PLAIN</code>), a zero result is always expressed as the
+ * single digit <code>'0'</code> (that is, with no sign, decimal point,
+ * or exponent part).
+ * <li>
+ * Except for the division and power operators in standard arithmetic,
+ * trailing zeros are preserved (this is in contrast to binary floating
+ * point operations and most electronic calculators, which lose the
+ * information about trailing zeros in the fractional part of results).
+ * <br>
+ * So, for example:
+ * <p><code>
+ *     new BigDecimal("2.40").add(     new BigDecimal("2"))      =&gt; "4.40"
+ * <br>new BigDecimal("2.40").subtract(new BigDecimal("2"))      =&gt; "0.40"
+ * <br>new BigDecimal("2.40").multiply(new BigDecimal("2"))      =&gt; "4.80"
+ * <br>new BigDecimal("2.40").divide(  new BigDecimal("2"), def) =&gt; "1.2"
+ * </code>
+ * <p>where the value on the right of the <code>=&gt;</code> would be the
+ * result of the operation, expressed as a <code>String</code>, and
+ * <code>def</code> (in this and following examples) refers to
+ * <code>MathContext.DEFAULT</code>).
+ * This preservation of trailing zeros is desirable for most
+ * calculations (including financial calculations).
+ * If necessary, trailing zeros may be easily removed using division by 1.
+ * <li>
+ * In standard arithmetic, exponential form is used for a result
+ * depending on its value and the current setting of <code>digits</code>
+ * (the default is 9 digits).
+ * If the number of places needed before the decimal point exceeds the
+ * <code>digits</code> setting, or the absolute value of the number is
+ * less than <code>0.000001</code>, then the number will be expressed in
+ * exponential notation; thus
+ * <p><code>
+ *   new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def)
+ * </code>
+ * <p>results in <code>1E+12</code> instead of
+ * <code>1000000000000</code>, and
+ * <p><code>
+ *   new BigDecimal("1").divide(new BigDecimal("3E+10"), def)
+ * </code>
+ * <p>results in <code>3.33333333E-11</code> instead of
+ * <code>0.0000000000333333333</code>.
+ * <p>
+ * The form of the exponential notation (scientific or engineering) is
+ * determined by the <code>form</code> setting.
+ * <eul>
+ * <p>
+ * The names of methods in this class follow the conventions established
+ * by <code>java.lang.Number</code>, <code>java.math.BigInteger</code>,
+ * and <code>java.math.BigDecimal</code> in Java 1.1 and Java 1.2.
+ *
+ * @see     MathContext
+ * @author  Mike Cowlishaw
+ * @stable ICU 2.0
+ */
+
+public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{
+ //private static final java.lang.String $0="BigDecimal.nrx";
+ 
+ 
+ 
+ /* ----- Constants ----- */
+ /* properties constant public */ // useful to others
+ /**
+  * The <code>BigDecimal</code> constant "0".
+  *
+  * @see #ONE
+  * @see #TEN
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "1".
+  *
+  * @see #TEN
+  * @see #ZERO
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "10".
+  *
+  * @see #ONE
+  * @see #ZERO
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10);
+ 
+ // the rounding modes (copied here for upwards compatibility)
+ /**
+  * Rounding mode to round to a more positive number.
+  * @see MathContext#ROUND_CEILING
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * @see MathContext#ROUND_DOWN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * @see MathContext#ROUND_FLOOR
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * @see MathContext#ROUND_HALF_DOWN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * @see MathContext#ROUND_HALF_EVEN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * @see MathContext#ROUND_HALF_UP
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * @see MathContext#ROUND_UNNECESSARY
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * @see MathContext#ROUND_UP
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP;
+ 
+ /* properties constant private */ // locals
+ private static final byte ispos=1; // ind: indicates positive (must be 1)
+ private static final byte iszero=0; // ind: indicates zero     (must be 0)
+ private static final byte isneg=-1; // ind: indicates negative (must be -1)
+ // [later could add NaN, +/- infinity, here]
+ 
+ private static final int MinExp=-999999999; // minimum exponent allowed
+ private static final int MaxExp=999999999; // maximum exponent allowed
+ private static final int MinArg=-999999999; // minimum argument integer
+ private static final int MaxArg=999999999; // maximum argument integer
+ 
+ private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math
+ 
+ /* properties constant private unused */ // present but not referenced
+ 
+ // Serialization version
+ private static final long serialVersionUID=8245355804974198832L;
+ 
+ //private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000.  All rights reserved. ";
+ 
+ /* properties static private */
+ // Precalculated constant arrays (used by byteaddsub)
+ private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array
+ private static byte bytedig[]=diginit(); // next digit array
+ 
+ /* ----- Instance properties [all private and immutable] ----- */
+ /* properties private */
+ 
+ /**
+  * The indicator. This may take the values:
+  * <ul>
+  * <li>ispos  -- the number is positive
+  * <li>iszero -- the number is zero
+  * <li>isneg  -- the number is negative
+  * </ul>
+  *
+  * @serial
+  */
+ private byte ind; // assumed undefined
+ // Note: some code below assumes IND = Sign [-1, 0, 1], at present.
+ // We only need two bits for this, but use a byte [also permits
+ // smooth future extension].
+ 
+ /**
+  * The formatting style. This may take the values:
+  * <ul>
+  * <li>MathContext.PLAIN        -- no exponent needed
+  * <li>MathContext.SCIENTIFIC   -- scientific notation required
+  * <li>MathContext.ENGINEERING  -- engineering notation required
+  * </ul>
+  * <p>
+  * This property is an optimization; it allows us to defer number
+  * layout until it is actually needed as a string, hence avoiding
+  * unnecessary formatting.
+  *
+  * @serial
+  */
+ private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN
+ // We only need two bits for this, at present, but use a byte
+ // [again, to allow for smooth future extension]
+ 
+ /**
+  * The value of the mantissa.
+  * <p>
+  * Once constructed, this may become shared between several BigDecimal
+  * objects, so must not be altered.
+  * <p>
+  * For efficiency (speed), this is a byte array, with each byte
+  * taking a value of 0 -> 9.
+  * <p>
+  * If the first byte is 0 then the value of the number is zero (and
+  * mant.length=1, except when constructed from a plain number, for
+  * example, 0.000).
+  *
+  * @serial
+  */
+ private byte mant[]; // assumed null
+ 
+ /**
+  * The exponent.
+  * <p>
+  * For fixed point arithmetic, scale is <code>-exp</code>, and can
+  * apply to zero.
+  *
+  * Note that this property can have a value less than MinExp when
+  * the mantissa has more than one digit.
+  *
+  * @serial
+  */
+ private int exp;
+ // assumed 0
+ 
+ /* ---------------------------------------------------------------- */
+ /* Constructors                                                     */
+ /* ---------------------------------------------------------------- */
+ 
+//#if defined(FOUNDATION10)
+//#else
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though the parameter had
+  * been represented as a <code>String</code> (using its
+  * <code>toString</code> method) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * <i>(Note: this constructor is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @param bd The <code>BigDecimal</code> to be translated.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigDecimal bd){
+  this(bd.toString());
+  return;}
+//#endif
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code>, with scale 0.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, with a scale of
+  * zero.
+  * The value of the <code>BigDecimal</code> is identical to the value
+  * of the <code>BigInteger</code>.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the
+  * <code>BigInteger</code> is negative.  A leading zero will be
+  * present only if the <code>BigInteger</code> is zero.
+  *
+  * @param bi The <code>BigInteger</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi){
+  this(bi.toString(10));
+  return;}
+ // exp remains 0
+ 
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code> and a scale.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, scaled by the
+  * second parameter, which may not be negative.
+  * The value of the <code>BigDecimal</code> is the
+  * <code>BigInteger</code> divided by ten to the power of the scale.
+  * The <code>BigInteger</code> parameter must not be
+  * <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits, (with
+  * an embedded decimal point followed by <code>scale</code> decimal
+  * digits if the scale is positive), prefixed with a leading minus
+  * sign (hyphen) if the <code>BigInteger</code> is negative.  A
+  * leading zero will be present only if the <code>BigInteger</code> is
+  * zero.
+  *
+  * @param  bi    The <code>BigInteger</code> to be converted.
+  * @param  scale The <code>int</code> specifying the scale.
+  * @throws NumberFormatException if the scale is negative.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi,int scale){
+  this(bi.toString(10));
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  exp=(int)-scale; // exponent is -scale
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * and the {@link #BigDecimal(java.lang.String)} constructor had then
+  * been used. The parameter must not be <code>null</code>.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available in character array form.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(char inchars[]){
+  this(inchars,0,inchars.length);
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * (or a subarray of that array) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used. The first parameter must not be <code>null</code>, and the
+  * subarray must be wholly contained within it.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available within a character array.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @param offset  The <code>int</code> offset into the array of the
+  *                start of the number to be converted.
+  * @param length  The <code>int</code> length of the number.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number for any reason.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(char inchars[],int offset,int length){super();
+  boolean exotic;
+  boolean hadexp;
+  int d;
+  int dotoff;
+  int last;
+  int i=0;
+  char si=0;
+  boolean eneg=false;
+  int k=0;
+  int elen=0;
+  int j=0;
+  char sj=0;
+  int dvalue=0;
+  int mag=0;
+  // This is the primary constructor; all incoming strings end up
+  // here; it uses explicit (inline) parsing for speed and to avoid
+  // generating intermediate (temporary) objects of any kind.
+  // 1998.06.25: exponent form built only if E/e in string
+  // 1998.06.25: trailing zeros not removed for zero
+  // 1999.03.06: no embedded blanks; allow offset and length
+  if (length<=0) 
+   bad(inchars); // bad conversion (empty string)
+  // [bad offset will raise array bounds exception]
+  
+  /* Handle and step past sign */
+  ind=ispos; // assume positive
+  if (inchars[offset]==('-')) 
+   {
+    length--;
+    if (length==0) 
+     bad(inchars); // nothing after sign
+    ind=isneg;
+    offset++;
+   }
+  else 
+   if (inchars[offset]==('+')) 
+    {
+     length--;
+     if (length==0) 
+      bad(inchars); // nothing after sign
+     offset++;
+    }
+  
+  /* We're at the start of the number */
+  exotic=false; // have extra digits
+  hadexp=false; // had explicit exponent
+  d=0; // count of digits found
+  dotoff=-1; // offset where dot was found
+  last=-1; // last character of mantissa
+  {int $1=length;i=offset;i:for(;$1>0;$1--,i++){
+   si=inchars[i];
+   if (si>='0')  // test for Arabic digit
+    if (si<='9') 
+     {
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   if (si=='.') 
+    { // record and ignore
+     if (dotoff>=0) 
+      bad(inchars); // two dots
+     dotoff=i-offset; // offset into mantissa
+     continue i;
+    }
+   if (si!='e') 
+    if (si!='E') 
+     { // expect an extra digit
+      if ((!(UCharacter.isDigit(si)))) 
+       bad(inchars); // not a number
+      // defer the base 10 check until later to avoid extra method call
+      exotic=true; // will need conversion later
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   /* Found 'e' or 'E' -- now process explicit exponent */
+   // 1998.07.11: sign no longer required
+   if ((i-offset)>(length-2)) 
+    bad(inchars); // no room for even one digit
+   eneg=false;
+   if ((inchars[i+1])==('-')) 
+    {
+     eneg=true;
+     k=i+2;
+    }
+   else 
+    if ((inchars[i+1])==('+')) 
+     k=i+2;
+    else 
+     k=i+1;
+   // k is offset of first expected digit
+   elen=length-((k-offset)); // possible number of digits
+   if ((elen==0)|(elen>9)) 
+    bad(inchars); // 0 or more than 9 digits
+   {int $2=elen;j=k;for(;$2>0;$2--,j++){
+    sj=inchars[j];
+    if (sj<'0') 
+     bad(inchars); // always bad
+    if (sj>'9') 
+     { // maybe an exotic digit
+      if ((!(UCharacter.isDigit(sj)))) 
+       bad(inchars); // not a number
+      dvalue=UCharacter.digit(sj,10); // check base
+      if (dvalue<0) 
+       bad(inchars); // not base 10
+     }
+    else 
+     dvalue=((int)(sj))-((int)('0'));
+    exp=(exp*10)+dvalue;
+    }
+   }/*j*/
+   if (eneg) 
+    exp=(int)-exp; // was negative
+   hadexp=true; // remember we had one
+   break i; // we are done
+   }
+  }/*i*/
+  
+  /* Here when all inspected */
+  if (d==0) 
+   bad(inchars); // no mantissa digits
+  if (dotoff>=0) 
+   exp=(exp+dotoff)-d; // adjust exponent if had dot
+  
+  /* strip leading zeros/dot (leave final if all 0's) */
+  {int $3=last-1;i=offset;i:for(;i<=$3;i++){
+   si=inchars[i];
+   if (si=='0') 
+    {
+     offset++;
+     dotoff--;
+     d--;
+    }
+   else 
+    if (si=='.') 
+     {
+      offset++; // step past dot
+      dotoff--;
+     }
+    else 
+     if (si<='9') 
+      break i;/* non-0 */
+     else 
+      {/* exotic */
+       if ((UCharacter.digit(si,10))!=0) 
+        break i; // non-0 or bad
+       // is 0 .. strip like '0'
+       offset++;
+       dotoff--;
+       d--;
+      }
+   }
+  }/*i*/
+  
+  /* Create the mantissa array */
+  mant=new byte[d]; // we know the length
+  j=offset; // input offset
+  if (exotic) 
+   {do{ // slow: check for exotica
+    {int $4=d;i=0;for(;$4>0;$4--,i++){
+     if (i==dotoff) 
+      j++; // at dot
+     sj=inchars[j];
+     if (sj<='9') 
+      mant[i]=(byte)(((int)(sj))-((int)('0')));/* easy */
+     else 
+      {
+       dvalue=UCharacter.digit(sj,10);
+       if (dvalue<0) 
+        bad(inchars); // not a number after all
+       mant[i]=(byte)dvalue;
+      }
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*exotica*/
+  else 
+   {do{
+    {int $5=d;i=0;for(;$5>0;$5--,i++){
+     if (i==dotoff) 
+      j++;
+     mant[i]=(byte)(((int)(inchars[j]))-((int)('0')));
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*simple*/
+  
+  /* Looks good.  Set the sign indicator and form, as needed. */
+  // Trailing zeros are preserved
+  // The rule here for form is:
+  //   If no E-notation, then request plain notation
+  //   Otherwise act as though add(0,DEFAULT) and request scientific notation
+  // [form is already PLAIN]
+  if (mant[0]==0) 
+   {
+    ind=iszero; // force to show zero
+    // negative exponent is significant (e.g., -3 for 0.000) if plain
+    if (exp>0) 
+     exp=0; // positive exponent can be ignored
+    if (hadexp) 
+     { // zero becomes single digit from add
+      mant=ZERO.mant;
+      exp=0;
+     }
+   }
+  else 
+   { // non-zero
+    // [ind was set earlier]
+    // now determine form
+    if (hadexp) 
+     {
+      form=(byte)com.ibm.icu.math.MathContext.SCIENTIFIC;
+      // 1999.06.29 check for overflow
+      mag=(exp+mant.length)-1; // true exponent in scientific notation
+      if ((mag<MinExp)|(mag>MaxExp)) 
+       bad(inchars);
+     }
+   }
+  // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>double</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter.
+  * <p>
+  * Note that this constructor it an exact conversion; it does not give
+  * the same result as converting <code>num</code> to a
+  * <code>String</code> using the <code>Double.toString()</code> method
+  * and then using the {@link #BigDecimal(java.lang.String)}
+  * constructor.
+  * To get that result, use the static {@link #valueOf(double)}
+  * method to construct a <code>BigDecimal</code> from a
+  * <code>double</code>.
+  *
+  * @param num The <code>double</code> to be converted.
+  * @throws NumberFormatException if the parameter is infinite or
+  *            not a number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(double num){
+  // 1999.03.06: use exactly the old algorithm
+  // 2000.01.01: note that this constructor does give an exact result,
+  //             so perhaps it should not be deprecated
+  // 2000.06.18: no longer deprecated
+//#if defined(FOUNDATION10)
+//##    this(String.valueOf(num));
+//#else
+  this((new java.math.BigDecimal(num)).toString());
+//#endif
+  return;}
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>int</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 32-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>int</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(int num){super();
+  int mun;
+  int i=0;
+  // We fastpath commoners
+  if (num<=9) 
+   if (num>=(-9)) 
+    {do{
+     // very common single digit case
+     {/*select*/
+     if (num==0)
+      {
+       mant=ZERO.mant;
+       ind=iszero;
+      }
+     else if (num==1)
+      {
+       mant=ONE.mant;
+       ind=ispos;
+      }
+     else if (num==(-1))
+      {
+       mant=ONE.mant;
+       ind=isneg;
+      }
+     else{
+      {
+       mant=new byte[1];
+       if (num>0) 
+        {
+         mant[0]=(byte)num;
+         ind=ispos;
+        }
+       else 
+        { // num<-1
+         mant[0]=(byte)((int)-num);
+         ind=isneg;
+        }
+      }
+     }
+     }
+     return;
+    }while(false);}/*singledigit*/
+  
+  /* We work on negative numbers so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(int)-num;
+   }
+  else 
+   ind=isneg;/* negative */ // [0 case already handled]
+  // [it is quicker, here, to pre-calculate the length with
+  // one loop, then allocate exactly the right length of byte array,
+  // then re-fill it with another loop]
+  mun=num; // working copy
+  {i=9;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[10-i];
+  {i=(10-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>long</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>long</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(long num){super();
+  long mun;
+  int i=0;
+  // Not really worth fastpathing commoners in this constructor [also,
+  // we use this to construct the static constants].
+  // This is much faster than: this(String.valueOf(num).toCharArray())
+  /* We work on negative num so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(long)-num;
+   }
+  else 
+   if (num==0) 
+    ind=iszero;
+   else 
+    ind=isneg;/* negative */
+  mun=num;
+  {i=18;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[19-i];
+  {i=(19-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a <code>String</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> from the parameter, which must
+  * not be <code>null</code> and must represent a valid <i>number</i>,
+  * as described formally in the documentation referred to
+  * {@link BigDecimal above}.
+  * <p>
+  * In summary, numbers in <code>String</code> form must have at least
+  * one digit, may have a leading sign, may have a decimal point, and
+  * exponential notation may be used.  They follow conventional syntax,
+  * and may not contain blanks.
+  * <p>
+  * Some valid strings from which a <code>BigDecimal</code> might
+  * be constructed are:
+  * <pre>
+  *       "0"         -- Zero
+  *      "12"         -- A whole number
+  *     "-76"         -- A signed whole number
+  *      "12.70"      -- Some decimal places
+  *     "+0.003"      -- Plus sign is allowed
+  *      "17."        -- The same as 17
+  *        ".5"       -- The same as 0.5
+  *      "4E+9"       -- Exponential notation
+  *       "0.73e-7"   -- Exponential notation
+  * </pre>
+  * <p>
+  * (Exponential notation means that the number includes an optional
+  * sign and a power of ten following an '</code>E</code>' that
+  * indicates how the decimal point will be shifted.  Thus the
+  * <code>"4E+9"</code> above is just a short way of writing
+  * <code>4000000000</code>, and the <code>"0.73e-7"</code> is short
+  * for <code>0.000000073</code>.)
+  * <p>
+  * The <code>BigDecimal</code> constructed from the String is in a
+  * standard form, with no blanks, as though the
+  * {@link #add(BigDecimal)} method had been used to add zero to the
+  * number with unlimited precision.
+  * If the string uses exponential notation (that is, includes an
+  * <code>e</code> or an <code>E</code>), then the
+  * <code>BigDecimal</code> number will be expressed in scientific
+  * notation (where the power of ten is adjusted so there is a single
+  * non-zero digit to the left of the decimal point); in this case if
+  * the number is zero then it will be expressed as the single digit 0,
+  * and if non-zero it will have an exponent unless that exponent would
+  * be 0.  The exponent must fit in nine digits both before and after it
+  * is expressed in scientific notation.
+  * <p>
+  * Any digits in the parameter must be decimal; that is,
+  * <code>Character.digit(c, 10)</code> (where </code>c</code> is the
+  * character in question) would not return -1.
+  *
+  * @param string The <code>String</code> to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  * number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.lang.String string){
+  this(string.toCharArray(),0,string.length());
+  return;}
+
+ /* <sgml> Make a default BigDecimal object for local use. </sgml> */
+ 
+ private BigDecimal(){super();
+  return;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Operator methods [methods which take a context parameter]        */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the absolute
+  * value of this <code>BigDecimal</code>.
+  * <p>
+  * The same as {@link #abs(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is the absolute
+  *         value of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(){
+  return this.abs(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the absolute value
+  * of this <code>BigDecimal</code>.
+  * <p>
+  * If the current object is zero or positive, then the same result as
+  * invoking the {@link #plus(MathContext)} method with the same
+  * parameter is returned.
+  * Otherwise, the same result as invoking the
+  * {@link #negate(MathContext)} method with the same parameter is
+  * returned.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the absolute
+  *             value of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){
+  if (this.ind==isneg) 
+   return this.negate(set);
+  return this.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this+rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){
+  return this.add(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this+rhs</code>.
+  * <p>
+  * Implements the addition (<b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  com.ibm.icu.math.BigDecimal res;
+  byte usel[];
+  int usellen;
+  byte user[];
+  int userlen;
+  int newlen=0;
+  int tlen=0;
+  int mult=0;
+  byte t[]=null;
+  int ia=0;
+  int ib=0;
+  int ea=0;
+  int eb=0;
+  byte ca=0;
+  byte cb=0;
+  /* determine requested digits and form */
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Quick exit for add floating 0 */
+  // plus() will optimize to return same object if possible
+  if (lhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return rhs.plus(set);
+  if (rhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return lhs.plus(set);
+  
+  /* Prepare numbers (round, unless unlimited precision) */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  
+  res=new com.ibm.icu.math.BigDecimal(); // build result here
+  
+  /* Now see how much we have to pad or truncate lhs or rhs in order
+     to align the numbers.  If one number is much larger than the
+     other, then the smaller cannot affect the answer [but we may
+     still need to pad with up to DIGITS trailing zeros]. */
+  // Note sign may be 0 if digits (reqdig) is 0
+  // usel and user will be the byte arrays passed to the adder; we'll
+  // use them on all paths except quick exits
+  usel=lhs.mant;
+  usellen=lhs.mant.length;
+  user=rhs.mant;
+  userlen=rhs.mant.length;
+  {do{/*select*/
+  if (lhs.exp==rhs.exp)
+   {/* no padding needed */
+    // This is the most common, and fastest, path
+    res.exp=lhs.exp;
+   }
+  else if (lhs.exp>rhs.exp)
+   { // need to pad lhs and/or truncate rhs
+    newlen=(usellen+lhs.exp)-rhs.exp;
+    /* If, after pad, lhs would be longer than rhs by digits+1 or
+       more (and digits>0) then rhs cannot affect answer, so we only
+       need to pad up to a length of DIGITS+1. */
+    if (newlen>=((userlen+reqdig)+1)) 
+     if (reqdig>0) 
+      {
+       // LHS is sufficient
+       res.mant=usel;
+       res.exp=lhs.exp;
+       res.ind=lhs.ind;
+       if (usellen<reqdig) 
+        { // need 0 padding
+         res.mant=extend(lhs.mant,reqdig);
+         res.exp=res.exp-((reqdig-usellen));
+        }
+       return res.finish(set,false);
+      }
+    // RHS may affect result
+    res.exp=rhs.exp; // expected final exponent
+    if (newlen>(reqdig+1)) 
+     if (reqdig>0) 
+      {
+       // LHS will be max; RHS truncated
+       tlen=(newlen-reqdig)-1; // truncation length
+       userlen=userlen-tlen;
+       res.exp=res.exp+tlen;
+       newlen=reqdig+1;
+      }
+    if (newlen>usellen) 
+     usellen=newlen; // need to pad LHS
+   }
+  else{ // need to pad rhs and/or truncate lhs
+   newlen=(userlen+rhs.exp)-lhs.exp;
+   if (newlen>=((usellen+reqdig)+1)) 
+    if (reqdig>0) 
+     {
+      // RHS is sufficient
+      res.mant=user;
+      res.exp=rhs.exp;
+      res.ind=rhs.ind;
+      if (userlen<reqdig) 
+       { // need 0 padding
+        res.mant=extend(rhs.mant,reqdig);
+        res.exp=res.exp-((reqdig-userlen));
+       }
+      return res.finish(set,false);
+     }
+   // LHS may affect result
+   res.exp=lhs.exp; // expected final exponent
+   if (newlen>(reqdig+1)) 
+    if (reqdig>0) 
+     {
+      // RHS will be max; LHS truncated
+      tlen=(newlen-reqdig)-1; // truncation length
+      usellen=usellen-tlen;
+      res.exp=res.exp+tlen;
+      newlen=reqdig+1;
+     }
+   if (newlen>userlen) 
+    userlen=newlen; // need to pad RHS
+  }
+  }while(false);}/*padder*/
+  
+  /* OK, we have aligned mantissas.  Now add or subtract. */
+  // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive
+  // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs]
+  // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs]
+  if (lhs.ind==iszero) 
+   res.ind=ispos;
+  else 
+   res.ind=lhs.ind; // likely sign, all paths
+  if (((lhs.ind==isneg)?1:0)==((rhs.ind==isneg)?1:0))  // same sign, 0 non-negative
+   mult=1;
+  else 
+   {do{ // different signs, so subtraction is needed
+    mult=-1; // will cause subtract
+    /* Before we can subtract we must determine which is the larger,
+       as our add/subtract routine only handles non-negative results
+       so we may need to swap the operands. */
+    {do{/*select*/
+    if (rhs.ind==iszero){
+     // original A bigger
+    }else if ((usellen<userlen)|(lhs.ind==iszero))
+     { // original B bigger
+      t=usel;
+      usel=user;
+      user=t; // swap
+      tlen=usellen;
+      usellen=userlen;
+      userlen=tlen; // ..
+      res.ind=(byte)-res.ind; // and set sign
+     }
+    else if (usellen>userlen){
+     // original A bigger
+    }else{
+     {/* logical lengths the same */ // need compare
+      /* may still need to swap: compare the strings */
+      ia=0;
+      ib=0;
+      ea=usel.length-1;
+      eb=user.length-1;
+      {compare:for(;;){
+       if (ia<=ea) 
+        ca=usel[ia];
+       else 
+        {
+         if (ib>eb) 
+          {/* identical */
+           if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+            return ZERO;
+           // [if PLAIN we must do the subtract, in case of 0.000 results]
+           break compare;
+          }
+         ca=(byte)0;
+        }
+       if (ib<=eb) 
+        cb=user[ib];
+       else 
+        cb=(byte)0;
+       if (ca!=cb) 
+        {
+         if (ca<cb) 
+          {/* swap needed */
+           t=usel;
+           usel=user;
+           user=t; // swap
+           tlen=usellen;
+           usellen=userlen;
+           userlen=tlen; // ..
+           res.ind=(byte)-res.ind;
+          }
+         break compare;
+        }
+       /* mantissas the same, so far */
+       ia++;
+       ib++;
+       }
+      }/*compare*/
+     } // lengths the same
+    }
+    }while(false);}/*swaptest*/
+   }while(false);}/*signdiff*/
+  
+  /* here, A is > B if subtracting */
+  // add [A+B*1] or subtract [A+(B*-1)]
+  res.mant=byteaddsub(usel,usellen,user,userlen,mult,false);
+  // [reuse possible only after chop; accounting makes not worthwhile]
+  
+  // Finish() rounds before stripping leading 0's, then sets form, etc.
+  return res.finish(set,false);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another, using unlimited
+  * precision.
+  * <p>
+  * The same as {@link #compareTo(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs){
+  return this.compareTo(rhs,plainMC);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another.
+  * <p>
+  * Implements numeric comparison,
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns a result of type <code>int</code>.
+  * <p>
+  * The result will be:
+  * <table cellpadding=2><tr>
+  * <td align=right><b>-1</b></td>
+  * <td>if the current object is less than the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>0</b></td>
+  * <td>if the current object is equal to the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>1</b></td>
+  * <td>if the current object is greater than the first parameter.</td>
+  * </tr></table>
+  * <p>
+  * A {@link #compareTo(Object)} method is also provided.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int thislength=0;
+  int i=0;
+  com.ibm.icu.math.BigDecimal newrhs;
+  // rhs=null will raise NullPointerException, as per Comparable interface
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck in slowpath cases .. but would report -rhs]
+  if ((this.ind==rhs.ind)&(this.exp==rhs.exp)) 
+   {
+    /* sign & exponent the same [very common] */
+    thislength=this.mant.length;
+    if (thislength<rhs.mant.length) 
+     return (byte)-this.ind;
+    if (thislength>rhs.mant.length) 
+     return this.ind;
+    /* lengths are the same; we can do a straight mantissa compare
+       unless maybe rounding [rounding is very unusual] */
+    if ((thislength<=set.digits)|(set.digits==0)) 
+     {
+      {int $6=thislength;i=0;for(;$6>0;$6--,i++){
+       if (this.mant[i]<rhs.mant[i]) 
+        return (byte)-this.ind;
+       if (this.mant[i]>rhs.mant[i]) 
+        return this.ind;
+       }
+      }/*i*/
+      return 0; // identical
+     }
+   /* drop through for full comparison */
+   }
+  else 
+   {
+    /* More fastpaths possible */
+    if (this.ind<rhs.ind) 
+     return -1;
+    if (this.ind>rhs.ind) 
+     return 1;
+   }
+  /* carry out a subtract to make the comparison */
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set).ind; // add, and return sign of result
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the rounding mode is {@link MathContext#ROUND_HALF_UP}.
+  *
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @return     A plain <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('D',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the second parameter is <code>this.scale()</code>, and
+  * the third is <code>round</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * therefore be the same as the scale of the current object, if the
+  * latter were formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and
+  *               <code>this.scale()</code> is insufficient to
+  *               represent the result exactly.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){
+  com.ibm.icu.math.MathContext set;
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too]
+  return this.dodivide('D',rhs,set,-1); // take scale from LHS
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * given scale and rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * <code>new MathContext(0, MathContext.PLAIN, false, round)</code>,
+  * except that the length of the decimal part (the scale) to be used
+  * for the result is explicit rather than being taken from
+  * <code>this</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  scale The <code>int</code> scale to be used for the result.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and <code>scale</code>
+  *               is insufficient to represent the result exactly.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){
+  com.ibm.icu.math.MathContext set;
+  if (scale<0) 
+   throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round]
+  return this.dodivide('D',rhs,set,scale);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this/rhs</code>.
+  * <p>
+  * Implements the division (<b><code>/</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('D',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * The same as {@link #divideInteger(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,plainMC,0);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * Implements the integer division operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the result will not fit in the
+  *             number of digits specified for the context.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,set,0);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #max(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){
+  return this.max(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the larger of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))>=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #min(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){
+  return this.min(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the smaller of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>-1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))<=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this*rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the sum of the scales of the operands, if they were formatted
+  * without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){
+  return this.multiply(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this*rhs</code>.
+  * <p>
+  * Implements the multiplication (<b><code>*</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int padding;
+  int reqdig;
+  byte multer[]=null;
+  byte multand[]=null;
+  int multandlen;
+  int acclen=0;
+  com.ibm.icu.math.BigDecimal res;
+  byte acc[];
+  int n=0;
+  byte mult=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Prepare numbers (truncate, unless unlimited precision) */
+  padding=0; // trailing 0's to add
+  reqdig=set.digits; // local copy
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  else 
+   {/* unlimited */
+    // fixed point arithmetic will want every trailing 0; we add these
+    // after the calculation rather than before, for speed.
+    if (lhs.exp>0) 
+     padding=padding+lhs.exp;
+    if (rhs.exp>0) 
+     padding=padding+rhs.exp;
+   }
+  
+  // For best speed, as in DMSRCN, we use the shorter number as the
+  // multiplier and the longer as the multiplicand.
+  // 1999.12.22: We used to special case when the result would fit in
+  //             a long, but with Java 1.3 this gave no advantage.
+  if (lhs.mant.length<rhs.mant.length) 
+   {
+    multer=lhs.mant;
+    multand=rhs.mant;
+   }
+  else 
+   {
+    multer=rhs.mant;
+    multand=lhs.mant;
+   }
+  
+  /* Calculate how long result byte array will be */
+  multandlen=(multer.length+multand.length)-1; // effective length
+  // optimize for 75% of the cases where a carry is expected...
+  if ((multer[0]*multand[0])>9) 
+   acclen=multandlen+1;
+  else 
+   acclen=multandlen;
+  
+  /* Now the main long multiplication loop */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  acc=new byte[acclen]; // accumulator, all zeros
+  // 1998.07.01: calculate from left to right so that accumulator goes
+  // to likely final length on first addition; this avoids a one-digit
+  // extension (and object allocation) each time around the loop.
+  // Initial number therefore has virtual zeros added to right.
+  {int $7=multer.length;n=0;for(;$7>0;$7--,n++){
+   mult=multer[n];
+   if (mult!=0) 
+    { // [optimization]
+     // accumulate [accumulator is reusable array]
+     acc=byteaddsub(acc,acc.length,multand,multandlen,mult,true);
+    }
+   // divide multiplicand by 10 for next digit to right
+   multandlen--; // 'virtual length'
+   }
+  }/*n*/
+  
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign
+  res.exp=(lhs.exp+rhs.exp)-padding; // final exponent
+  // [overflow is checked by finish]
+  
+  /* add trailing zeros to the result, if necessary */
+  if (padding==0) 
+   res.mant=acc;
+  else 
+   res.mant=extend(acc,acc.length+padding); // add trailing 0s
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>-this</code>.
+  * <p>
+  * The same as {@link #negate(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(){
+  return this.negate(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>-this</code>.
+  * <p>
+  * Implements the negation (Prefix <b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal res;
+  // Originally called minus(), changed to matched Java precedents
+  // This simply clones, flips the sign, and possibly rounds
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  res=clone(this); // safe copy
+  res.ind=(byte)-res.ind;
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * Note that <code>this</code> is not necessarily a
+  * plain <code>BigDecimal</code>, but the result will always be.
+  * <p>
+  * The same as {@link #plus(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(){
+  return this.plus(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * <p>
+  * Implements the plus (Prefix <b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This method is useful for rounding or otherwise applying a context
+  * to a decimal value.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){
+  // This clones and forces the result to the new settings
+  // May return same object
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  // Optimization: returns same object for some common cases
+  if (set.form==com.ibm.icu.math.MathContext.PLAIN) 
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     if (this.mant.length<=set.digits) 
+      return this;
+     if (set.digits==0) 
+      return this;
+    }
+  return clone(this).finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this**rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #pow(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The parameter is the power to which the <code>this</code> will be
+  * raised; it must be in the range 0 through 999999999, and must
+  * have a decimal part of zero.  Note that these restrictions may be
+  * removed in the future, so they should not be used as a test for a
+  * whole number.
+  * <p>
+  * In addition, the power must not be negative, as no
+  * <code>MathContext</code> is used and so the result would then
+  * always be 0.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){
+  return this.pow(rhs,plainMC);
+  }
+ // The name for this method is inherited from the precedent set by the
+ // BigInteger and Math classes.
+ 
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this**rhs</code>.
+  * <p>
+  * Implements the power (<b><code>**</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * The first parameter is the power to which the <code>this</code>
+  * will be raised; it must be in the range -999999999 through
+  * 999999999, and must have a decimal part of zero.  Note that these
+  * restrictions may be removed in the future, so they should not be
+  * used as a test for a whole number.
+  * <p>
+  * If the <code>digits</code> setting of the <code>MathContext</code>
+  * parameter is 0, the power must be zero or positive.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int n;
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int workdigits=0;
+  int L=0;
+  com.ibm.icu.math.MathContext workset;
+  com.ibm.icu.math.BigDecimal res;
+  boolean seenbit;
+  int i=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  n=rhs.intcheck(MinArg,MaxArg); // check RHS by the rules
+  lhs=this; // clarified name
+  
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig==0) 
+   {
+    if (rhs.ind==isneg) 
+     throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString());
+    workdigits=0;
+   }
+  else 
+   {/* non-0 digits */
+    if ((rhs.mant.length+rhs.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+    
+    /* Round the lhs to DIGITS if need be */
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    
+    /* L for precision calculation [see ANSI X3.274-1996] */
+    L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp
+    workdigits=(reqdig+L)+1; // calculate the working DIGITS
+   }
+  
+  /* Create a copy of set for working settings */
+  // Note: no need to check for lostDigits again.
+  // 1999.07.17 Note: this construction must follow RHS check
+  workset=new com.ibm.icu.math.MathContext(workdigits,set.form,false,set.roundingMode);
+  
+  res=ONE; // accumulator
+  if (n==0) 
+   return res; // x**0 == 1
+  if (n<0) 
+   n=(int)-n; // [rhs.ind records the sign]
+  seenbit=false; // set once we've seen a 1-bit
+  {i=1;i:for(;;i++){ // for each bit [top bit ignored]
+   n=n+n; // shift left 1 bit
+   if (n<0) 
+    { // top bit is set
+     seenbit=true; // OK, we're off
+     res=res.multiply(lhs,workset); // acc=acc*x
+    }
+   if (i==31) 
+    break i; // that was the last bit
+   if ((!seenbit)) 
+    continue i; // we don't have to square 1
+   res=res.multiply(res,workset); // acc=acc*acc [square]
+   }
+  }/*i*/ // 32 bits
+  if (rhs.ind<0)  // was a **-n [hence digits>0]
+   res=ONE.divide(res,workset); // .. so acc=1/acc
+  return res.finish(set,true); // round and strip [original digits]
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the remainder of <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #remainder(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('R',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the remainder of
+  * <code>this/rhs</code>.
+  * <p>
+  * Implements the remainder operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this+rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the integer part of the result will
+  *             not fit in the number of digits specified for the
+  *             context.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('R',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this-rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #subtract(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){
+  return this.subtract(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this-rhs</code>.
+  * <p>
+  * Implements the subtraction (<b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal newrhs;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck .. but would report -rhs]
+  /* carry out the subtraction */
+  // we could fastpath -0, but it is too rare.
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set); // arithmetic
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Other methods                                                    */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>byte</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>byte</code> (8-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>byte</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a <code>byte</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public byte byteValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>127)|(num<(-128))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (byte)num;
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with the value of the parameter.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * <code>BigDecimal</code> type, an exception is thrown.
+  * Otherwise, the parameter is cast to type <code>BigDecimal</code>
+  * and the result of the {@link #compareTo(BigDecimal)} method,
+  * using the cast parameter, is returned.
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used when a <code>MathContext</code> is needed for the comparison.
+  *
+  * @param  rhsobj The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @see    #compareTo(BigDecimal)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(java.lang.Object rhsobj){
+  // the cast in the next line will raise ClassCastException if necessary
+  return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC);
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>double</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>double</code> (64-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The double produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Double(String)</code> constructor;
+  * this can result in values of <code>Double.NEGATIVE_INFINITY</code>
+  * or <code>Double.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>double</code> corresponding to <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public double doubleValue(){
+  // We go via a String [as does BigDecimal in JDK 1.2]
+  // Next line could possibly raise NumberFormatException
+  return java.lang.Double.valueOf(this.toString()).doubleValue();
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with <code>rhs</code> for
+  * equality.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * BigDecimal type, or is not exactly equal to the current
+  * <code>BigDecimal</code> object, then <i>false</i> is returned.
+  * Otherwise, <i>true</i> is returned.
+  * <p>
+  * "Exactly equal", here, means that the <code>String</code>
+  * representations of the <code>BigDecimal</code> numbers are
+  * identical (they have the same characters in the same sequence).
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used for more general comparisons.
+  * @param  obj The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>boolean</code> whose value <i>true</i> if and
+  *             only if the operands have identical string representations.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @stable ICU 2.0
+  * @see    #compareTo(Object)
+  * @see    #compareTo(BigDecimal)
+  * @see    #compareTo(BigDecimal, MathContext)
+  */
+ 
+ public boolean equals(java.lang.Object obj){
+  com.ibm.icu.math.BigDecimal rhs;
+  int i=0;
+  char lca[]=null;
+  char rca[]=null;
+  // We are equal iff toString of both are exactly the same
+  if (obj==null) 
+   return false; // not equal
+  if ((!(((obj instanceof com.ibm.icu.math.BigDecimal))))) 
+   return false; // not a decimal
+  rhs=(com.ibm.icu.math.BigDecimal)obj; // cast; we know it will work
+  if (this.ind!=rhs.ind) 
+   return false; // different signs never match
+  if (((this.mant.length==rhs.mant.length)&(this.exp==rhs.exp))&(this.form==rhs.form)) 
+   
+   { // mantissas say all
+    // here with equal-length byte arrays to compare
+    {int $8=this.mant.length;i=0;for(;$8>0;$8--,i++){
+     if (this.mant[i]!=rhs.mant[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  else 
+   { // need proper layout
+    lca=this.layout(); // layout to character array
+    rca=rhs.layout();
+    if (lca.length!=rca.length) 
+     return false; // mismatch
+    // here with equal-length character arrays to compare
+    {int $9=lca.length;i=0;for(;$9>0;$9--,i++){
+     if (lca[i]!=rca[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  return true; // arrays have identical content
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>float</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>float</code> (32-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The float produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Float(String)</code> constructor;
+  * this can result in values of <code>Float.NEGATIVE_INFINITY</code>
+  * or <code>Float.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>float</code> corresponding to <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public float floatValue(){
+  return java.lang.Float.valueOf(this.toString()).floatValue();
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters, for both forms of the <code>format</code> method
+  * are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The parameters, <code>before</code> and <code>after</code>,
+  * specify the number of characters to be used for the integer part
+  * and decimal part of the result respectively.  Exponential notation
+  * is not used. If either parameter is -1 (which indicates the default
+  * action), the number of characters used will be exactly as many as
+  * are needed for that part.
+  * <p>
+  * <code>before</code> must be a positive number; if it is larger than
+  * is needed to contain the integer part, that part is padded on the
+  * left with blanks to the requested length. If <code>before</code> is
+  * not large enough to contain the integer part of the number
+  * (including the sign, for negative numbers) an exception is thrown.
+  * <p>
+  * <code>after</code> must be a non-negative number; if it is not the
+  * same size as the decimal part of the number, the number will be
+  * rounded (or extended with zeros) to fit.  Specifying 0 for
+  * <code>after</code> will cause the number to be rounded to an
+  * integer (that is, it will have no decimal part or decimal point).
+  * The rounding method will be the default,
+  * <code>MathContext.ROUND_HALF_UP</code>.
+  * <p>
+  * Other rounding methods, and the use of exponential notation, can
+  * be selected by using {@link #format(int,int,int,int,int,int)}.
+  * Using the two-parameter form of the method has exactly the same
+  * effect as using the six-parameter form with the final four
+  * parameters all being -1.
+  *
+  * @param  before The <code>int</code> specifying the number of places
+  *                before the decimal point.  Use -1 for 'as many as
+  *                are needed'.
+  * @param  after  The <code>int</code> specifying the number of places
+  *                after the decimal point.  Use -1 for 'as many as are
+  *                needed'.
+  * @return        A <code>String</code> representing this
+  *                <code>BigDecimal</code>, laid out according to the
+  *                specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @stable ICU 2.0
+  * @see    #toString
+  * @see    #toCharArray
+  */
+ 
+ public java.lang.String format(int before,int after){
+  return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP);
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters and allowing
+  * exponential notation.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The first two parameters (<code>before</code> and
+  * <code>after</code>) specify the number of characters to be used for
+  * the integer part and decimal part of the result respectively, as
+  * defined for {@link #format(int,int)}.
+  * If either of these is -1 (which indicates the default action), the
+  * number of characters used will be exactly as many as are needed for
+  * that part.
+  * <p>
+  * The remaining parameters control the use of exponential notation
+  * and rounding.  Three (<code>explaces</code>, <code>exdigits</code>,
+  * and <code>exform</code>) control the exponent part of the result.
+  * As before, the default action for any of these parameters may be
+  * selected by using the value -1.
+  * <p>
+  * <code>explaces</code> must be a positive number; it sets the number
+  * of places (digits after the sign of the exponent) to be used for
+  * any exponent part, the default (when <code>explaces</code> is -1)
+  * being to use as many as are needed.
+  * If <code>explaces</code> is not -1, space is always reserved for
+  * an exponent; if one is not needed (for example, if the exponent
+  * will be 0) then <code>explaces</code>+2 blanks are appended to the
+  * result.
+  * <!-- (This preserves vertical alignment of similarly formatted
+  *       numbers in a monospace font.) -->
+  * If <code>explaces</code> is not -1 and is not large enough to
+  * contain the exponent, an exception is thrown.
+  * <p>
+  * <code>exdigits</code> sets the trigger point for use of exponential
+  * notation. If, before any rounding, the number of places needed
+  * before the decimal point exceeds <code>exdigits</code>, or if the
+  * absolute value of the result is less than <code>0.000001</code>,
+  * then exponential form will be used, provided that
+  * <code>exdigits</code> was specified.
+  * When <code>exdigits</code> is -1, exponential notation will never
+  * be used. If 0 is specified for <code>exdigits</code>, exponential
+  * notation is always used unless the exponent would be 0.
+  * <p>
+  * <code>exform</code> sets the form for exponential notation (if
+  * needed).
+  * It  may be either {@link MathContext#SCIENTIFIC} or
+  * {@link MathContext#ENGINEERING}.
+  * If the latter, engineering, form is requested, up to three digits
+  * (plus sign, if negative) may be needed for the integer part of the
+  * result (<code>before</code>).  Otherwise, only one digit (plus
+  * sign, if negative) is needed.
+  * <p>
+  * Finally, the sixth argument, <code>exround</code>, selects the
+  * rounding algorithm to be used, and must be one of the values
+  * indicated by a public constant in the {@link MathContext} class
+  * whose name starts with <code>ROUND_</code>.
+  * The default (<code>ROUND_HALF_UP</code>) may also be selected by
+  * using the value -1, as before.
+  * <p>
+  * The special value <code>MathContext.ROUND_UNNECESSARY</code> may be
+  * used to detect whether non-zero digits are discarded -- if
+  * <code>exround</code> has this value than if non-zero digits would
+  * be discarded (rounded) during formatting then an
+  * <code>ArithmeticException</code> is thrown.
+  *
+  * @param  before   The <code>int</code> specifying the number of places
+  *                  before the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  after    The <code>int</code> specifying the number of places
+  *                  after the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  explaces The <code>int</code> specifying the number of places
+  *                  to be used for any exponent.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  exdigits The <code>int</code> specifying the trigger
+  *                  (digits before the decimal point) which if
+  *                  exceeded causes exponential notation to be used.
+  *                  Use 0 to force exponential notation.
+  *                  Use -1 to force plain notation (no exponential
+  *                  notation).
+  * @param  exformint   The <code>int</code> specifying the form of
+  *                  exponential notation to be used
+  *                  ({@link MathContext#SCIENTIFIC} or
+  *                  {@link MathContext#ENGINEERING}).
+  * @param  exround  The <code>int</code> specifying the rounding mode
+  *                  to use.
+  *                  Use -1 for the default, {@link MathContext#ROUND_HALF_UP}.
+  * @return          A <code>String</code> representing this
+  *                  <code>BigDecimal</code>, laid out according to the
+  *                  specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                  requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @see    #toString
+  * @see    #toCharArray
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){
+  com.ibm.icu.math.BigDecimal num;
+  int mag=0;
+  int thisafter=0;
+  int lead=0;
+  byte newmant[]=null;
+  int chop=0;
+  int need=0;
+  int oldexp=0;
+  char a[];
+  int p=0;
+  char newa[]=null;
+  int i=0;
+  int places=0;
+  
+  
+  /* Check arguments */
+  if ((before<(-1))|(before==0)) 
+   badarg("format",1,java.lang.String.valueOf(before));
+  if (after<(-1)) 
+   badarg("format",2,java.lang.String.valueOf(after));
+  if ((explaces<(-1))|(explaces==0)) 
+   badarg("format",3,java.lang.String.valueOf(explaces));
+  if (exdigits<(-1)) 
+   badarg("format",4,java.lang.String.valueOf(explaces));
+  {/*select*/
+  if (exformint==com.ibm.icu.math.MathContext.SCIENTIFIC){
+  }else if (exformint==com.ibm.icu.math.MathContext.ENGINEERING){
+  }else if (exformint==(-1))
+   exformint=com.ibm.icu.math.MathContext.SCIENTIFIC;
+   // note PLAIN isn't allowed
+  else{
+   badarg("format",5,java.lang.String.valueOf(exformint));
+  }
+  }
+  // checking the rounding mode is done by trying to construct a
+  // MathContext object with that mode; it will fail if bad
+  if (exround!=ROUND_HALF_UP) 
+   {try{ // if non-default...
+    if (exround==(-1)) 
+     exround=ROUND_HALF_UP;
+    else 
+     new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.SCIENTIFIC,false,exround);
+   }
+   catch (java.lang.IllegalArgumentException $10){
+    badarg("format",6,java.lang.String.valueOf(exround));
+   }}
+  
+  num=clone(this); // make private copy
+  
+  /* Here:
+     num       is BigDecimal to format
+     before    is places before point [>0]
+     after     is places after point  [>=0]
+     explaces  is exponent places     [>0]
+     exdigits  is exponent digits     [>=0]
+     exformint is exponent form       [one of two]
+     exround   is rounding mode       [one of eight]
+     'before' through 'exdigits' are -1 if not specified
+  */
+  
+  /* determine form */
+  {do{/*select*/
+  if (exdigits==(-1))
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else if (num.ind==iszero)
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else{
+   // determine whether triggers
+   mag=num.exp+num.mant.length;
+   if (mag>exdigits) 
+    num.form=(byte)exformint;
+   else 
+    if (mag<(-5)) 
+     num.form=(byte)exformint;
+    else 
+     num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  }
+  }while(false);}/*setform*/
+  
+  /* If 'after' was specified then we may need to adjust the
+     mantissa.  This is a little tricky, as we must conform to the
+     rules of exponential layout if necessary (e.g., we cannot end up
+     with 10.0 if scientific). */
+  if (after>=0) 
+   {setafter:for(;;){
+    // calculate the current after-length
+    {/*select*/
+    if (num.form==com.ibm.icu.math.MathContext.PLAIN)
+     thisafter=(int)-num.exp; // has decimal part
+    else if (num.form==com.ibm.icu.math.MathContext.SCIENTIFIC)
+     thisafter=num.mant.length-1;
+    else{ // engineering
+     lead=(((num.exp+num.mant.length)-1))%3; // exponent to use
+     if (lead<0) 
+      lead=3+lead; // negative exponent case
+     lead++; // number of leading digits
+     if (lead>=num.mant.length) 
+      thisafter=0;
+     else 
+      thisafter=num.mant.length-lead;
+    }
+    }
+    if (thisafter==after) 
+     break setafter; // we're in luck
+    if (thisafter<after) 
+     { // need added trailing zeros
+      // [thisafter can be negative]
+      newmant=extend(num.mant,(num.mant.length+after)-thisafter);
+      num.mant=newmant;
+      num.exp=num.exp-((after-thisafter)); // adjust exponent
+      if (num.exp<MinExp) 
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+num.exp);
+      break setafter;
+     }
+    // We have too many digits after the decimal point; this could
+    // cause a carry, which could change the mantissa...
+    // Watch out for implied leading zeros in PLAIN case
+    chop=thisafter-after; // digits to lop [is >0]
+    if (chop>num.mant.length) 
+     { // all digits go, no chance of carry
+      // carry on with zero
+      num.mant=ZERO.mant;
+      num.ind=iszero;
+      num.exp=0;
+      continue setafter; // recheck: we may need trailing zeros
+     }
+    // we have a digit to inspect from existing mantissa
+    // round the number as required
+    need=num.mant.length-chop; // digits to end up with [may be 0]
+    oldexp=num.exp; // save old exponent
+    num.round(need,exround);
+    // if the exponent grew by more than the digits we chopped, then
+    // we must have had a carry, so will need to recheck the layout
+    if ((num.exp-oldexp)==chop) 
+     break setafter; // number did not have carry
+    // mantissa got extended .. so go around and check again
+    }
+   }/*setafter*/
+  
+  a=num.layout(); // lay out, with exponent if required, etc.
+  
+  /* Here we have laid-out number in 'a' */
+  // now apply 'before' and 'explaces' as needed
+  if (before>0) 
+   {
+    // look for '.' or 'E'
+    {int $11=a.length;p=0;p:for(;$11>0;$11--,p++){
+     if (a[p]=='.') 
+      break p;
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of '.', 'E', or character after end of array
+    // that is, the current length of before part
+    if (p>before) 
+     badarg("format",1,java.lang.String.valueOf(before)); // won't fit
+    if (p<before) 
+     { // need leading blanks
+      newa=new char[(a.length+before)-p];
+      {int $12=before-p;i=0;for(;$12>0;$12--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length);
+      a=newa;
+     }
+   // [if p=before then it's just the right length]
+   }
+  
+  if (explaces>0) 
+   {
+    // look for 'E' [cannot be at offset 0]
+    {int $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of 'E', or 0
+    if (p==0) 
+     { // no E part; add trailing blanks
+      newa=new char[(a.length+explaces)+2];
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length);
+      {int $14=explaces+2;i=a.length;for(;$14>0;$14--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      a=newa;
+     }
+    else 
+     {/* found E */ // may need to insert zeros
+      places=(a.length-p)-2; // number so far
+      if (places>explaces) 
+       badarg("format",3,java.lang.String.valueOf(explaces));
+      if (places<explaces) 
+       { // need to insert zeros
+        newa=new char[(a.length+explaces)-places];
+        java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,p+2); // through E and sign
+        {int $15=explaces-places;i=p+2;for(;$15>0;$15--,i++){
+         newa[i]='0';
+         }
+        }/*i*/
+        java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent
+        a=newa;
+       }
+     // [if places=explaces then it's just the right length]
+     }
+   }
+  return new java.lang.String(a);
+  }
+
+ /**
+  * Returns the hashcode for this <code>BigDecimal</code>.
+  * This hashcode is suitable for use by the
+  * <code>java.util.Hashtable</code> class.
+  * <p>
+  * Note that two <code>BigDecimal</code> objects are only guaranteed
+  * to produce the same hashcode if they are exactly equal (that is,
+  * the <code>String</code> representations of the
+  * <code>BigDecimal</code> numbers are identical -- they have the same
+  * characters in the same sequence).
+  *
+  * @return An <code>int</code> that is the hashcode for <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int hashCode(){
+  // Maybe calculate ourselves, later.  If so, note that there can be
+  // more than one internal representation for a given toString() result.
+  return this.toString().hashCode();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for an <code>int</code> (32-bit signed integer) result then
+  * only the low-order 32 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #intValueExact} method.
+  *
+  * @return An <code>int</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  * @stable ICU 2.0
+  */
+ 
+ public int intValue(){
+  return toBigInteger().intValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for an <code>int</code> (32-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return An <code>int</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in an
+  *                 <code>int</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int intValueExact(){
+  int lodigit;
+  int useexp=0;
+  int result;
+  int i=0;
+  int topdig=0;
+  // This does not use longValueExact() as the latter can be much
+  // slower.
+  // intcheck (from pow) relies on this to check decimal part
+  if (ind==iszero) 
+   return 0; // easy, and quite common
+  /* test and drop any trailing decimal part */
+  lodigit=mant.length-1;
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // reduces by -(-exp)
+    /* all decimal places must be 0 */
+    if ((!(allzero(mant,lodigit+1)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+lodigit)>9)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  /* convert the mantissa to binary, inline for speed */
+  result=0;
+  {int $16=lodigit+useexp;i=0;for(;i<=$16;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==9) 
+   {
+    // note we cannot just test for -ve result, as overflow can move a
+    // zero into the top bit [consider 5555555555]
+    topdig=result/1000000000; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Integer.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==2) 
+         return result; // really had top digit 2
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (int)-result;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for a <code>long</code> (64-bit signed integer) result then
+  * only the low-order 64 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #longValueExact} method.
+  *
+  * @return A <code>long</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  * @stable ICU 2.0
+  */
+ 
+ public long longValue(){
+  return toBigInteger().longValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>long</code> (64-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>long</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>long</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public long longValueExact(){
+  int lodigit;
+  int cstart=0;
+  int useexp=0;
+  long result;
+  int i=0;
+  long topdig=0;
+  // Identical to intValueExact except for result=long, and exp>=20 test
+  if (ind==0) 
+   return 0; // easy, and quite common
+  lodigit=mant.length-1; // last included digit
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // -(-exp)
+    /* all decimal places must be 0 */
+    if (lodigit<0) 
+     cstart=0;
+    else 
+     cstart=lodigit+1;
+    if ((!(allzero(mant,cstart)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+mant.length)>18)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  
+  /* convert the mantissa to binary, inline for speed */
+  // note that we could safely use the 'test for wrap to negative'
+  // algorithm here, but instead we parallel the intValueExact
+  // algorithm for ease of checking and maintenance.
+  result=(long)0;
+  {int $17=lodigit+useexp;i=0;for(;i<=$17;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==18) 
+   {
+    topdig=result/1000000000000000000L; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Long.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==9) 
+         return result; // really had top digit 9
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (long)-result;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the left by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(-n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointRight(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point leftwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the left.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointLeft(int n){
+  com.ibm.icu.math.BigDecimal res;
+  // very little point in optimizing for shift of 0
+  res=clone(this);
+  res.exp=res.exp-n;
+  return res.finish(plainMC,false); // finish sets form and checks exponent
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the right by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointLeft(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point rightwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the right.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointRight(int n){
+  com.ibm.icu.math.BigDecimal res;
+  res=clone(this);
+  res.exp=res.exp+n;
+  return res.finish(plainMC,false);
+  }
+
+ /**
+  * Returns the scale of this <code>BigDecimal</code>.
+  * Returns a non-negative <code>int</code> which is the scale of the
+  * number. The scale is the number of digits in the decimal part of
+  * the number if the number were formatted without exponential
+  * notation.
+  *
+  * @return An <code>int</code> whose value is the scale of this
+  *         <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int scale(){
+  if (exp>=0) 
+   return 0; // scale can never be negative
+  return (int)-exp;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and in this case an
+  * <code>ArithmeticException</code> is thrown if any discarded digits
+  * are non-zero.
+  * <p>
+  * The same as {@link #setScale(int, int)}, where the first parameter
+  * is the scale, and the second is
+  * <code>MathContext.ROUND_UNNECESSARY</code>.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if reducing scale would discard
+  *               non-zero digits.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale){
+  return setScale(scale,ROUND_UNNECESSARY);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and the rounding mode given by the second
+  * parameter is used to determine if the remaining digits are
+  * affected by a carry.
+  * In this case, an <code>IllegalArgumentException</code> is thrown if
+  * <code>round</code> is not a valid rounding mode.
+  * <p>
+  * If <code>round</code> is <code>MathContext.ROUND_UNNECESSARY</code>,
+  * an <code>ArithmeticException</code> is thrown if any discarded
+  * digits are non-zero.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is
+  *               <code>MathContext.ROUND_UNNECESSARY</code>, and
+  *               reducing scale would discard non-zero digits.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale,int round){
+  int ourscale;
+  com.ibm.icu.math.BigDecimal res;
+  int padding=0;
+  int newlen=0;
+  // at present this naughtily only checks the round value if it is
+  // needed (used), for speed
+  ourscale=this.scale();
+  if (ourscale==scale)  // already correct scale
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN)  // .. and form
+    return this;
+  res=clone(this); // need copy
+  if (ourscale<=scale) 
+   { // simply zero-padding/changing form
+    // if ourscale is 0 we may have lots of 0s to add
+    if (ourscale==0) 
+     padding=res.exp+scale;
+    else 
+     padding=scale-ourscale;
+    res.mant=extend(res.mant,res.mant.length+padding);
+    res.exp=(int)-scale; // as requested
+   }
+  else 
+   {/* ourscale>scale: shortening, probably */
+    if (scale<0) 
+     throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+    // [round() will raise exception if invalid round]
+    newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK]
+    res=res.round(newlen,round); // round to required length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+   }
+  res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // by definition
+  return res;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>short</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>short</code> (16-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>short</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>short</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public short shortValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>32767)|(num<(-32768))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (short)num;
+  }
+
+ /**
+  * Returns the sign of this <code>BigDecimal</code>, as an
+  * <code>int</code>.
+  * This returns the <i>signum</i> function value that represents the
+  * sign of this <code>BigDecimal</code>.
+  * That is, -1 if the <code>BigDecimal</code> is negative, 0 if it is
+  * numerically equal to zero, or 1 if it is positive.
+  *
+  * @return An <code>int</code> which is -1 if the
+  *         <code>BigDecimal</code> is negative, 0 if it is
+  *         numerically equal to zero, or 1 if it is positive.
+  * @stable ICU 2.0
+  */
+ 
+ public int signum(){
+  return (int)this.ind; // [note this assumes values for ind.]
+  }
+
+//#if defined(FOUNDATION10)
+//#else
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * This is an exact conversion; the result is the same as if the
+  * <code>BigDecimal</code> were formatted as a plain number without
+  * any rounding or exponent and then the
+  * <code>java.math.BigDecimal(java.lang.String)</code> constructor
+  * were used to construct the result.
+  * <p>
+  * <i>(Note: this method is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @return The <code>java.math.BigDecimal</code> equal in value
+  *         to this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigDecimal toBigDecimal(){
+  return new java.math.BigDecimal(this.unscaledValue(),this.scale());
+  }
+//#endif
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * Any decimal part is truncated (discarded).
+  * If an exception is desired should the decimal part be non-zero,
+  * use {@link #toBigIntegerExact()}.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger toBigInteger(){
+  com.ibm.icu.math.BigDecimal res=null;
+  int newlen=0;
+  byte newmant[]=null;
+  {/*select*/
+  if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN))
+   res=this; // can layout simply
+  else if (exp>=0)
+   {
+    res=clone(this); // safe copy
+    res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN
+   }
+  else{
+   { // exp<0; scale to be truncated
+    // we could use divideInteger, but we may as well be quicker
+    if (((int)-this.exp)>=this.mant.length) 
+     res=ZERO; // all blows away
+    else 
+     {
+      res=clone(this); // safe copy
+      newlen=res.mant.length+res.exp;
+      newmant=new byte[newlen]; // [shorter]
+      java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen);
+      res.mant=newmant;
+      res.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+      res.exp=0;
+     }
+   }
+  }
+  }
+  return new BigInteger(new java.lang.String(res.layout()));
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * An exception is thrown if the decimal part (if any) is non-zero.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *         decimal part.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger toBigIntegerExact(){
+  /* test any trailing decimal part */
+  if (exp<0) 
+   { // possible decimal part
+    /* all decimal places must be 0; note exp<0 */
+    if ((!(allzero(mant,mant.length+exp)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+   }
+  return toBigInteger();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a character array.
+  * The result of this method is the same as using the
+  * sequence <code>toString().toCharArray()</code>, but avoids creating
+  * the intermediate <code>String</code> and <code>char[]</code>
+  * objects.
+  *
+  * @return The <code>char[]</code> array corresponding to this
+  *         <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public char[] toCharArray(){
+  return layout();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a <code>String</code>.
+  * This returns a <code>String</code> that exactly represents this
+  * <code>BigDecimal</code>, as defined in the decimal documentation
+  * (see {@link BigDecimal class header}).
+  * <p>
+  * By definition, using the {@link #BigDecimal(String)} constructor
+  * on the result <code>String</code> will create a
+  * <code>BigDecimal</code> that is exactly equal to the original
+  * <code>BigDecimal</code>.
+  *
+  * @return The <code>String</code> exactly corresponding to this
+  *         <code>BigDecimal</code>.
+  * @see    #format(int, int)
+  * @see    #format(int, int, int, int, int, int)
+  * @see    #toCharArray()
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String toString(){
+  return new java.lang.String(layout());
+  }
+
+ /**
+  * Returns the number as a <code>BigInteger</code> after removing the
+  * scale.
+  * That is, the number is expressed as a plain number, any decimal
+  * point is then removed (retaining the digits of any decimal part),
+  * and the result is then converted to a <code>BigInteger</code>.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value to
+  *         this <code>BigDecimal</code> multiplied by ten to the
+  *         power of <code>this.scale()</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger unscaledValue(){
+  com.ibm.icu.math.BigDecimal res=null;
+  if (exp>=0) 
+   res=this;
+  else 
+   {
+    res=clone(this); // safe copy
+    res.exp=0; // drop scale
+   }
+  return res.toBigInteger();
+  }
+
+ /**
+  * Translates a <code>double</code> to a <code>BigDecimal</code>.
+  * <p>
+  * Returns a <code>BigDecimal</code> which is the decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter. If the parameter is infinite, or is not a number (NaN),
+  * a <code>NumberFormatException</code> is thrown.
+  * <p>
+  * The number is constructed as though <code>num</code> had been
+  * converted to a <code>String</code> using the
+  * <code>Double.toString()</code> method and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been used.
+  * This is typically not an exact conversion.
+  *
+  * @param  dub The <code>double</code> to be translated.
+  * @return     The <code>BigDecimal</code> equal in value to
+  *             <code>dub</code>.
+  * @throws NumberFormatException if the parameter is infinite or
+  *             not a number.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(double dub){
+  // Reminder: a zero double returns '0.0', so we cannot fastpath to
+  // use the constant ZERO.  This might be important enough to justify
+  // a factory approach, a cache, or a few private constants, later.
+  return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString());
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code>.
+  * That is, returns a plain <code>BigDecimal</code> whose value is
+  * equal to the given <code>long</code>.
+  *
+  * @param  lint The <code>long</code> to be translated.
+  * @return      The <code>BigDecimal</code> equal in value to
+  *              <code>lint</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint){
+  return valueOf(lint,0);
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code> with a
+  * given scale.
+  * That is, returns a plain <code>BigDecimal</code> whose unscaled
+  * value is equal to the given <code>long</code>, adjusted by the
+  * second parameter, <code>scale</code>.
+  * <p>
+  * The result is given by:
+  * <p><code>
+  * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale)))
+  * </code>
+  * <p>
+  * A <code>NumberFormatException</code> is thrown if <code>scale</code>
+  * is negative.
+  *
+  * @param  lint  The <code>long</code> to be translated.
+  * @param  scale The <code>int</code> scale to be applied.
+  * @return       The <code>BigDecimal</code> equal in value to
+  *               <code>lint</code>.
+  * @throws NumberFormatException if the scale is negative.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){
+  com.ibm.icu.math.BigDecimal res=null;
+  {/*select*/
+  if (lint==0)
+   res=ZERO;
+  else if (lint==1)
+   res=ONE;
+  else if (lint==10)
+   res=TEN;
+  else{
+   res=new com.ibm.icu.math.BigDecimal(lint);
+  }
+  }
+  if (scale==0) 
+   return res;
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  res=clone(res); // safe copy [do not mutate]
+  res.exp=(int)-scale; // exponent is -scale
+  return res;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Private methods                                                  */
+ /* ---------------------------------------------------------------- */
+ 
+ /* <sgml> Return char array value of a BigDecimal (conversion from
+       BigDecimal to laid-out canonical char array).
+    <p>The mantissa will either already have been rounded (following an
+       operation) or will be of length appropriate (in the case of
+       construction from an int, for example).
+    <p>We must not alter the mantissa, here.
+    <p>'form' describes whether we are to use exponential notation (and
+       if so, which), or if we are to lay out as a plain/pure numeric.
+    </sgml> */
+ 
+ private char[] layout(){
+  char cmant[];
+  int i=0;
+  java.lang.StringBuffer sb=null;
+  int euse=0;
+  int sig=0;
+  char csign=0;
+  char rec[]=null;
+  int needsign;
+  int mag;
+  int len=0;
+  cmant=new char[mant.length]; // copy byte[] to a char[]
+  {int $18=mant.length;i=0;for(;$18>0;$18--,i++){
+   cmant[i]=(char)(mant[i]+((int)('0')));
+   }
+  }/*i*/
+  
+  if (form!=com.ibm.icu.math.MathContext.PLAIN) 
+   {/* exponential notation needed */
+    sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999
+    if (ind==isneg) 
+     sb.append('-');
+    euse=(exp+cmant.length)-1; // exponent to use
+    /* setup sig=significant digits and copy to result */
+    if (form==com.ibm.icu.math.MathContext.SCIENTIFIC) 
+     { // [default]
+      sb.append(cmant[0]); // significant character
+      if (cmant.length>1)  // have decimal part
+       sb.append('.').append(cmant,1,cmant.length-1);
+     }
+    else 
+     {do{
+      sig=euse%3; // common
+      if (sig<0) 
+       sig=3+sig; // negative exponent
+      euse=euse-sig;
+      sig++;
+      if (sig>=cmant.length) 
+       { // zero padding may be needed
+        sb.append(cmant,0,cmant.length);
+        {int $19=sig-cmant.length;for(;$19>0;$19--){
+         sb.append('0');
+         }
+        }
+       }
+      else 
+       { // decimal point needed
+        sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig);
+       }
+     }while(false);}/*engineering*/
+    if (euse!=0) 
+     {
+      if (euse<0) 
+       {
+        csign='-';
+        euse=(int)-euse;
+       }
+      else 
+       csign='+';
+      sb.append('E').append(csign).append(euse);
+     }
+    rec=new char[sb.length()];
+    Utility.getChars(sb, 0,sb.length(),rec,0);
+    return rec;
+   }
+  
+  /* Here for non-exponential (plain) notation */
+  if (exp==0) 
+   {/* easy */
+    if (ind>=0) 
+     return cmant; // non-negative integer
+    rec=new char[cmant.length+1];
+    rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length);
+    return rec;
+   }
+  
+  /* Need a '.' and/or some zeros */
+  needsign=(int)((ind==isneg)?1:0); // space for sign?  0 or 1
+  
+  /* MAG is the position of the point in the mantissa (index of the
+     character it follows) */
+  mag=exp+cmant.length;
+  
+  if (mag<1) 
+   {/* 0.00xxxx form */
+    len=(needsign+2)-exp; // needsign+2+(-mag)+cmant.length
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    rec[needsign]='0';
+    rec[needsign+1]='.';
+    {int $20=(int)-mag;i=needsign+2;for(;$20>0;$20--,i++){ // maybe none
+     rec[i]='0';
+     }
+    }/*i*/
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length);
+    return rec;
+   }
+  
+  if (mag>cmant.length) 
+   {/* xxxx0000 form */
+    len=needsign+mag;
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length);
+    {int $21=mag-cmant.length;i=needsign+cmant.length;for(;$21>0;$21--,i++){ // never 0
+     rec[i]='0';
+     }
+    }/*i*/
+    return rec;
+   }
+  
+  /* decimal point is in the middle of the mantissa */
+  len=(needsign+1)+cmant.length;
+  rec=new char[len];
+  if (needsign!=0) 
+   rec[0]='-';
+  java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag);
+  rec[needsign+mag]='.';
+  java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag);
+  return rec;
+  }
+
+ /* <sgml> Checks a BigDecimal argument to ensure it's a true integer
+       in a given range.
+    <p>If OK, returns it as an int. </sgml> */
+ // [currently only used by pow]
+ 
+ private int intcheck(int min,int max){
+  int i;
+  i=this.intValueExact(); // [checks for non-0 decimal part]
+  // Use same message as though intValueExact failed due to size
+  if ((i<min)|(i>max)) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+i);
+  return i;
+  }
+
+ /* <sgml> Carry out division operations. </sgml> */
+ /*
+    Arg1 is operation code: D=divide, I=integer divide, R=remainder
+    Arg2 is the rhs.
+    Arg3 is the context.
+    Arg4 is explicit scale iff code='D' or 'I' (-1 if none).
+ 
+    Underlying algorithm (complications for Remainder function and
+    scaled division are omitted for clarity):
+ 
+      Test for x/0 and then 0/x
+      Exp =Exp1 - Exp2
+      Exp =Exp +len(var1) -len(var2)
+      Sign=Sign1 * Sign2
+      Pad accumulator (Var1) to double-length with 0's (pad1)
+      Pad Var2 to same length as Var1
+      B2B=1st two digits of var2, +1 to allow for roundup
+      have=0
+      Do until (have=digits+1 OR residue=0)
+        if exp<0 then if integer divide/residue then leave
+        this_digit=0
+        Do forever
+           compare numbers
+           if <0 then leave inner_loop
+           if =0 then (- quick exit without subtract -) do
+              this_digit=this_digit+1; output this_digit
+              leave outer_loop; end
+           Compare lengths of numbers (mantissae):
+           If same then CA=first_digit_of_Var1
+                   else CA=first_two_digits_of_Var1
+           mult=ca*10/b2b   -- Good and safe guess at divisor
+           if mult=0 then mult=1
+           this_digit=this_digit+mult
+           subtract
+           end inner_loop
+         if have\=0 | this_digit\=0 then do
+           output this_digit
+           have=have+1; end
+         var2=var2/10
+         exp=exp-1
+         end outer_loop
+      exp=exp+1   -- set the proper exponent
+      if have=0 then generate answer=0
+      Return to FINISHED
+      Result defined by MATHV1
+ 
+    For extended commentary, see DMSRCN.
+  */
+ 
+ private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int newexp;
+  com.ibm.icu.math.BigDecimal res;
+  int newlen;
+  byte var1[];
+  int var1len;
+  byte var2[];
+  int var2len;
+  int b2b;
+  int have;
+  int thisdigit=0;
+  int i=0;
+  byte v2=0;
+  int ba=0;
+  int mult=0;
+  int start=0;
+  int padding=0;
+  int d=0;
+  byte newvar1[]=null;
+  byte lasthave=0;
+  int actdig=0;
+  byte newmant[]=null;
+  
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity
+  
+  // [note we must have checked lostDigits before the following checks]
+  if (rhs.ind==0) 
+   throw new java.lang.ArithmeticException("Divide by 0"); // includes 0/0
+  if (lhs.ind==0) 
+   { // 0/x => 0 [possibly with .0s]
+    if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+     return ZERO;
+    if (scale==(-1)) 
+     return lhs;
+    return lhs.setScale(scale);
+   }
+  
+  /* Prepare numbers according to BigDecimal rules */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   }
+  else 
+   {/* scaled divide */
+    if (scale==(-1)) 
+     scale=lhs.scale();
+    // set reqdig to be at least large enough for the computation
+    reqdig=lhs.mant.length; // base length
+    // next line handles both positive lhs.exp and also scale mismatch
+    if (scale!=((int)-lhs.exp)) 
+     reqdig=(reqdig+scale)+lhs.exp;
+    reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect
+    if (reqdig<lhs.mant.length) 
+     reqdig=lhs.mant.length; // clamp
+    if (reqdig<rhs.mant.length) 
+     reqdig=rhs.mant.length; // ..
+   }
+  
+  /* precalculate exponent */
+  newexp=((lhs.exp-rhs.exp)+lhs.mant.length)-rhs.mant.length;
+  /* If new exponent -ve, then some quick exits are possible */
+  if (newexp<0) 
+   if (code!='D') 
+    {
+     if (code=='I') 
+      return ZERO; // easy - no integer part
+     /* Must be 'R'; remainder is [finished clone of] input value */
+     return clone(lhs).finish(set,false);
+    }
+  
+  /* We need slow division */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign (for D/I)
+  res.exp=newexp; // initial exponent (for D/I)
+  res.mant=new byte[reqdig+1]; // where build the result
+  
+  /* Now [virtually pad the mantissae with trailing zeros */
+  // Also copy the LHS, which will be our working array
+  newlen=(reqdig+reqdig)+1;
+  var1=extend(lhs.mant,newlen); // always makes longer, so new safe array
+  var1len=newlen; // [remaining digits are 0]
+  
+  var2=rhs.mant;
+  var2len=newlen;
+  
+  /* Calculate first two digits of rhs (var2), +1 for later estimations */
+  b2b=(var2[0]*10)+1;
+  if (var2.length>1) 
+   b2b=b2b+var2[1];
+  
+  /* start the long-division loops */
+  have=0;
+  {outer:for(;;){
+   thisdigit=0;
+   /* find the next digit */
+   {inner:for(;;){
+    if (var1len<var2len) 
+     break inner; // V1 too low
+    if (var1len==var2len) 
+     { // compare needed
+      {compare:do{ // comparison
+       {int $22=var1len;i=0;for(;$22>0;$22--,i++){
+        // var1len is always <= var1.length
+        if (i<var2.length) 
+         v2=var2[i];
+        else 
+         v2=(byte)0;
+        if (var1[i]<v2) 
+         break inner; // V1 too low
+        if (var1[i]>v2) 
+         break compare; // OK to subtract
+        }
+       }/*i*/
+       /* reach here if lhs and rhs are identical; subtraction will
+          increase digit by one, and the residue will be 0 so we
+          are done; leave the loop with residue set to 0 (in case
+          code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is
+          being checked) */
+       thisdigit++;
+       res.mant[have]=(byte)thisdigit;
+       have++;
+       var1[0]=(byte)0; // residue to 0 [this is all we'll test]
+       // var1len=1      -- [optimized out]
+       break outer;
+      }while(false);}/*compare*/
+      /* prepare for subtraction.  Estimate BA (lengths the same) */
+      ba=(int)var1[0]; // use only first digit
+     } // lengths the same
+    else 
+     {/* lhs longer than rhs */
+      /* use first two digits for estimate */
+      ba=var1[0]*10;
+      if (var1len>1) 
+       ba=ba+var1[1];
+     }
+    /* subtraction needed; V1>=V2 */
+    mult=(ba*10)/b2b;
+    if (mult==0) 
+     mult=1;
+    thisdigit=thisdigit+mult;
+    // subtract; var1 reusable
+    var1=byteaddsub(var1,var1len,var2,var2len,(int)-mult,true);
+    if (var1[0]!=0) 
+     continue inner; // maybe another subtract needed
+    /* V1 now probably has leading zeros, remove leading 0's and try
+       again. (It could be longer than V2) */
+    {int $23=var1len-2;start=0;start:for(;start<=$23;start++){
+     if (var1[start]!=0) 
+      break start;
+     var1len--;
+     }
+    }/*start*/
+    if (start==0) 
+     continue inner;
+    // shift left
+    java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len);
+    }
+   }/*inner*/
+   
+   /* We have the next digit */
+   if ((have!=0)|(thisdigit!=0)) 
+    { // put the digit we got
+     res.mant[have]=(byte)thisdigit;
+     have++;
+     if (have==(reqdig+1)) 
+      break outer; // we have all we need
+     if (var1[0]==0) 
+      break outer; // residue now 0
+    }
+   /* can leave now if a scaled divide and exponent is small enough */
+   if (scale>=0) 
+    if (((int)-res.exp)>scale) 
+     break outer;
+   /* can leave now if not Divide and no integer part left  */
+   if (code!='D') 
+    if (res.exp<=0) 
+     break outer;
+   res.exp=res.exp-1; // reduce the exponent
+   /* to get here, V1 is less than V2, so divide V2 by 10 and go for
+      the next digit */
+   var2len--;
+   }
+  }/*outer*/
+  
+  /* here when we have finished dividing, for some reason */
+  // have is the number of digits we collected in res.mant
+  if (have==0) 
+   have=1; // res.mant[0] is 0; we always want a digit
+  
+  if ((code=='I')|(code=='R')) 
+   {/* check for integer overflow needed */
+    if ((have+res.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Integer overflow");
+    
+    if (code=='R') 
+     {do{
+      /* We were doing Remainder -- return the residue */
+      if (res.mant[0]==0)  // no integer part was found
+       return clone(lhs).finish(set,false); // .. so return lhs, canonical
+      if (var1[0]==0) 
+       return ZERO; // simple 0 residue
+      res.ind=lhs.ind; // sign is always as LHS
+      /* Calculate the exponent by subtracting the number of padding zeros
+         we added and adding the original exponent */
+      padding=((reqdig+reqdig)+1)-lhs.mant.length;
+      res.exp=(res.exp-padding)+lhs.exp;
+      
+      /* strip insignificant padding zeros from residue, and create/copy
+         the resulting mantissa if need be */
+      d=var1len;
+      {i=d-1;i:for(;i>=1;i--){if(!((res.exp<lhs.exp)&(res.exp<rhs.exp)))break;
+       if (var1[i]!=0) 
+        break i;
+       d--;
+       res.exp=res.exp+1;
+       }
+      }/*i*/
+      if (d<var1.length) 
+       {/* need to reduce */
+        newvar1=new byte[d];
+        java.lang.System.arraycopy((java.lang.Object)var1,0,(java.lang.Object)newvar1,0,d); // shorten
+        var1=newvar1;
+       }
+      res.mant=var1;
+      return res.finish(set,false);
+     }while(false);}/*remainder*/
+   }
+   
+  else 
+   {/* 'D' -- no overflow check needed */
+    // If there was a residue then bump the final digit (iff 0 or 5)
+    // so that the residue is visible for ROUND_UP, ROUND_HALF_xxx and
+    // ROUND_UNNECESSARY checks (etc.) later.
+    // [if we finished early, the residue will be 0]
+    if (var1[0]!=0) 
+     { // residue not 0
+      lasthave=res.mant[have-1];
+      if (((lasthave%5))==0) 
+       res.mant[have-1]=(byte)(lasthave+1);
+     }
+   }
+  
+  /* Here for Divide or Integer Divide */
+  // handle scaled results first ['I' always scale 0, optional for 'D']
+  if (scale>=0) 
+   {do{
+    // say 'scale have res.exp len' scale have res.exp res.mant.length
+    if (have!=res.mant.length) 
+     // already padded with 0's, so just adjust exponent
+     res.exp=res.exp-((res.mant.length-have));
+    // calculate number of digits we really want [may be 0]
+    actdig=res.mant.length-((((int)-res.exp)-scale));
+    res.round(actdig,set.roundingMode); // round to desired length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+    return res.finish(set,true); // [strip if not PLAIN]
+   }while(false);}/*scaled*/
+  
+  // reach here only if a non-scaled
+  if (have==res.mant.length) 
+   { // got digits+1 digits
+    res.round(set);
+    have=reqdig;
+   }
+  else 
+   {/* have<=reqdig */
+    if (res.mant[0]==0) 
+     return ZERO; // fastpath
+    // make the mantissa truly just 'have' long
+    // [we could let finish do this, during strip, if we adjusted
+    // the exponent; however, truncation avoids the strip loop]
+    newmant=new byte[have]; // shorten
+    java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have);
+    res.mant=newmant;
+   }
+  return res.finish(set,true);
+  }
+
+ 
+ /* <sgml> Report a conversion exception. </sgml> */
+ 
+ private void bad(char s[]){
+  throw new java.lang.NumberFormatException("Not a number:"+" "+java.lang.String.valueOf(s));
+  }
+
+ /* <sgml> Report a bad argument to a method. </sgml>
+    Arg1 is method name
+    Arg2 is argument position
+    Arg3 is what was found */
+ 
+ private void badarg(java.lang.String name,int pos,java.lang.String value){
+  throw new java.lang.IllegalArgumentException("Bad argument"+" "+pos+" "+"to"+" "+name+":"+" "+value);
+  }
+
+ /* <sgml> Extend byte array to given length, padding with 0s.  If no
+    extension is required then return the same array. </sgml>
+ 
+    Arg1 is the source byte array
+    Arg2 is the new length (longer)
+    */
+ 
+ private static final byte[] extend(byte inarr[],int newlen){
+  byte newarr[];
+  if (inarr.length==newlen) 
+   return inarr;
+  newarr=new byte[newlen];
+  java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length);
+  // 0 padding is carried out by the JVM on allocation initialization
+  return newarr;
+  }
+
+ /* <sgml> Add or subtract two >=0 integers in byte arrays
+    <p>This routine performs the calculation:
+    <pre>
+    C=A+(B*M)
+    </pre>
+    Where M is in the range -9 through +9
+    <p>
+    If M<0 then A>=B must be true, so the result is always
+    non-negative.
+ 
+    Leading zeros are not removed after a subtraction.  The result is
+    either the same length as the longer of A and B, or 1 longer than
+    that (if a carry occurred).
+ 
+    A is not altered unless Arg6 is 1.
+    B is never altered.
+ 
+    Arg1 is A
+    Arg2 is A length to use (if longer than A, pad with 0's)
+    Arg3 is B
+    Arg4 is B length to use (if longer than B, pad with 0's)
+    Arg5 is M, the multiplier
+    Arg6 is 1 if A can be used to build the result (if it fits)
+ 
+    This routine is severely performance-critical; *any* change here
+    must be measured (timed) to assure no performance degradation.
+    */
+ // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981)
+ // 1997.10.05 -- changed to byte arrays (from char arrays)
+ // 1998.07.01 -- changed to allow destructive reuse of LHS
+ // 1998.07.01 -- changed to allow virtual lengths for the arrays
+ // 1998.12.29 -- use lookaside for digit/carry calculation
+ // 1999.08.07 -- avoid multiply when mult=1, and make db an int
+ // 1999.12.22 -- special case m=-1, also drop 0 special case
+ 
+ private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){
+  int alength;
+  int blength;
+  int ap;
+  int bp;
+  int maxarr;
+  byte reb[];
+  boolean quickm;
+  int digit;
+  int op=0;
+  int dp90=0;
+  byte newarr[];
+  int i=0;
+  
+  
+  
+  
+  // We'll usually be right if we assume no carry
+  alength=a.length; // physical lengths
+  blength=b.length; // ..
+  ap=avlen-1; // -> final (rightmost) digit
+  bp=bvlen-1; // ..
+  maxarr=bp;
+  if (maxarr<ap) 
+   maxarr=ap;
+  reb=(byte[])null; // result byte array
+  if (reuse) 
+   if ((maxarr+1)==alength) 
+    reb=a; // OK to reuse A
+  if (reb==null) 
+   reb=new byte[maxarr+1]; // need new array
+  
+  quickm=false; // 1 if no multiply needed
+  if (m==1) 
+   quickm=true; // most common
+  else 
+   if (m==(-1)) 
+    quickm=true; // also common
+  
+  digit=0; // digit, with carry or borrow
+  {op=maxarr;op:for(;op>=0;op--){
+   if (ap>=0) 
+    {
+     if (ap<alength) 
+      digit=digit+a[ap]; // within A
+     ap--;
+    }
+   if (bp>=0) 
+    {
+     if (bp<blength) 
+      { // within B
+       if (quickm) 
+        {
+         if (m>0) 
+          digit=digit+b[bp]; // most common
+         else 
+          digit=digit-b[bp]; // also common
+        }
+       else 
+        digit=digit+(b[bp]*m);
+      }
+     bp--;
+    }
+   /* result so far (digit) could be -90 through 99 */
+   if (digit<10) 
+    if (digit>=0) 
+     {do{ // 0-9
+      reb[op]=(byte)digit;
+      digit=0; // no carry
+      continue op;
+     }while(false);}/*quick*/
+   dp90=digit+90;
+   reb[op]=bytedig[dp90]; // this digit
+   digit=bytecar[dp90]; // carry or borrow
+   }
+  }/*op*/
+  
+  if (digit==0) 
+   return reb; // no carry
+  // following line will become an Assert, later
+  // if digit<0 then signal ArithmeticException("internal.error ["digit"]")
+  
+  /* We have carry -- need to make space for the extra digit */
+  newarr=(byte[])null;
+  if (reuse) 
+   if ((maxarr+2)==a.length) 
+    newarr=a; // OK to reuse A
+  if (newarr==null) 
+   newarr=new byte[maxarr+2];
+  newarr[0]=(byte)digit; // the carried digit ..
+  // .. and all the rest [use local loop for short numbers]
+  if (maxarr<10) 
+   {int $24=maxarr+1;i=0;for(;$24>0;$24--,i++){
+    newarr[i+1]=reb[i];
+    }
+   }/*i*/
+  else 
+   java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1);
+  return newarr;
+  }
+
+ /* <sgml> Initializer for digit array properties (lookaside). </sgml>
+    Returns the digit array, and initializes the carry array. */
+ 
+ private static final byte[] diginit(){
+  byte work[];
+  int op=0;
+  int digit=0;
+  work=new byte[(90+99)+1];
+  {op=0;op:for(;op<=(90+99);op++){
+   digit=op-90;
+   if (digit>=0) 
+    {
+     work[op]=(byte)(digit%10);
+     bytecar[op]=(byte)(digit/10); // calculate carry
+     continue op;
+    }
+   // borrowing...
+   digit=digit+100; // yes, this is right [consider -50]
+   work[op]=(byte)(digit%10);
+   bytecar[op]=(byte)((digit/10)-10); // calculate borrow [NB: - after %]
+   }
+  }/*op*/
+  return work;
+  }
+
+ /* <sgml> Create a copy of BigDecimal object for local use.
+    <p>This does NOT make a copy of the mantissa array.
+    </sgml>
+    Arg1 is the BigDecimal to clone (non-null)
+    */
+ 
+ private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){
+  com.ibm.icu.math.BigDecimal copy;
+  copy=new com.ibm.icu.math.BigDecimal();
+  copy.ind=dec.ind;
+  copy.exp=dec.exp;
+  copy.form=dec.form;
+  copy.mant=dec.mant;
+  return copy;
+  }
+
+ /* <sgml> Check one or two numbers for lost digits. </sgml>
+    Arg1 is RHS (or null, if none)
+    Arg2 is current DIGITS setting
+    returns quietly or throws an exception */
+ 
+ private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){
+  if (dig==0) 
+   return; // don't check if digits=0
+  // first check lhs...
+  if (this.mant.length>dig) 
+   if ((!(allzero(this.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+this.toString());
+  if (rhs==null) 
+   return; // monadic
+  if (rhs.mant.length>dig) 
+   if ((!(allzero(rhs.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+  }
+
+ /* <sgml> Round to specified digits, if necessary. </sgml>
+    Arg1 is requested MathContext [with length and rounding mode]
+    returns this, for convenience */
+ 
+ private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){
+  return round(set.digits,set.roundingMode);
+  }
+
+ /* <sgml> Round to specified digits, if necessary.
+    Arg1 is requested length (digits to round to)
+            [may be <=0 when called from format, dodivide, etc.]
+    Arg2 is rounding mode
+    returns this, for convenience
+ 
+    ind and exp are adjusted, but not cleared for a mantissa of zero
+ 
+    The length of the mantissa returned will be Arg1, except when Arg1
+    is 0, in which case the returned mantissa length will be 1.
+    </sgml>
+    */
+ 
+ private com.ibm.icu.math.BigDecimal round(int len,int mode){
+  int adjust;
+  int sign;
+  byte oldmant[];
+  boolean reuse=false;
+  byte first=0;
+  int increment;
+  byte newmant[]=null;
+  adjust=mant.length-len;
+  if (adjust<=0) 
+   return this; // nowt to do
+  
+  exp=exp+adjust; // exponent of result
+  sign=(int)ind; // save [assumes -1, 0, 1]
+  oldmant=mant; // save
+  if (len>0) 
+   {
+    // remove the unwanted digits
+    mant=new byte[len];
+    java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len);
+    reuse=true; // can reuse mantissa
+    first=oldmant[len]; // first of discarded digits
+   }
+  else 
+   {/* len<=0 */
+    mant=ZERO.mant;
+    ind=iszero;
+    reuse=false; // cannot reuse mantissa
+    if (len==0) 
+     first=oldmant[0];
+    else 
+     first=(byte)0; // [virtual digit]
+   }
+  
+  // decide rounding adjustment depending on mode, sign, and discarded digits
+  increment=0; // bumper
+  {do{/*select*/
+  if (mode==ROUND_HALF_UP)
+   { // default first [most common]
+    if (first>=5) 
+     increment=sign;
+   }
+  else if (mode==ROUND_UNNECESSARY)
+   { // default for setScale()
+    // discarding any non-zero digits is an error
+    if ((!(allzero(oldmant,len)))) 
+     throw new java.lang.ArithmeticException("Rounding necessary");
+   }
+  else if (mode==ROUND_HALF_DOWN)
+   { // 0.5000 goes down
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      if ((!(allzero(oldmant,len+1)))) 
+       increment=sign;
+   }
+  else if (mode==ROUND_HALF_EVEN)
+   { // 0.5000 goes down if left digit even
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      {
+       if ((!(allzero(oldmant,len+1)))) 
+        increment=sign;
+       else /* 0.5000 */
+        if ((((mant[mant.length-1])%2))==1) 
+         increment=sign;
+      }
+   }
+  else if (mode==ROUND_DOWN){
+   // never increment
+  }else if (mode==ROUND_UP)
+   { // increment if discarded non-zero
+    if ((!(allzero(oldmant,len)))) 
+     increment=sign;
+   }
+  else if (mode==ROUND_CEILING)
+   { // more positive
+    if (sign>0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else if (mode==ROUND_FLOOR)
+   { // more negative
+    if (sign<0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else{
+   throw new java.lang.IllegalArgumentException("Bad round value:"+" "+mode);
+  }
+  }while(false);}/*modes*/
+  
+  if (increment!=0) 
+   {do{
+    if (ind==iszero) 
+     {
+      // we must not subtract from 0, but result is trivial anyway
+      mant=ONE.mant;
+      ind=(byte)increment;
+     }
+    else 
+     {
+      // mantissa is non-0; we can safely add or subtract 1
+      if (ind==isneg) 
+       increment=(int)-increment;
+      newmant=byteaddsub(mant,mant.length,ONE.mant,1,increment,reuse);
+      if (newmant.length>mant.length) 
+       { // had a carry
+        // drop rightmost digit and raise exponent
+        exp++;
+        // mant is already the correct length
+        java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length);
+       }
+      else 
+       mant=newmant;
+     }
+   }while(false);}/*bump*/
+  // rounding can increase exponent significantly
+  if (exp>MaxExp) 
+   throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  return this;
+  }
+
+ /* <sgml> Test if rightmost digits are all 0.
+    Arg1 is a mantissa array to test
+    Arg2 is the offset of first digit to check
+            [may be negative; if so, digits to left are 0's]
+    returns 1 if all the digits starting at Arg2 are 0
+ 
+    Arg2 may be beyond array bounds, in which case 1 is returned
+    </sgml> */
+ 
+ private static final boolean allzero(byte array[],int start){
+  int i=0;
+  if (start<0) 
+   start=0;
+  {int $25=array.length-1;i=start;for(;i<=$25;i++){
+   if (array[i]!=0) 
+    return false;
+   }
+  }/*i*/
+  return true;
+  }
+
+ /* <sgml> Carry out final checks and canonicalization
+    <p>
+    This finishes off the current number by:
+      1. Rounding if necessary (NB: length includes leading zeros)
+      2. Stripping trailing zeros (if requested and \PLAIN)
+      3. Stripping leading zeros (always)
+      4. Selecting exponential notation (if required)
+      5. Converting a zero result to just '0' (if \PLAIN)
+    In practice, these operations overlap and share code.
+    It always sets form.
+    </sgml>
+    Arg1 is requested MathContext (length to round to, trigger, and FORM)
+    Arg2 is 1 if trailing insignificant zeros should be removed after
+         round (for division, etc.), provided that set.form isn't PLAIN.
+   returns this, for convenience
+   */
+ 
+ private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){
+  int d=0;
+  int i=0;
+  byte newmant[]=null;
+  int mag=0;
+  int sig=0;
+  /* Round if mantissa too long and digits requested */
+  if (set.digits!=0) 
+   if (this.mant.length>set.digits) 
+    this.round(set);
+  
+  /* If strip requested (and standard formatting), remove
+     insignificant trailing zeros. */
+  if (strip) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     d=this.mant.length;
+     /* see if we need to drop any trailing zeros */
+     {i=d-1;i:for(;i>=1;i--){
+      if (this.mant[i]!=0) 
+       break i;
+      d--;
+      exp++;
+      }
+     }/*i*/
+     if (d<this.mant.length) 
+      {/* need to reduce */
+       newmant=new byte[d];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,0,(java.lang.Object)newmant,0,d);
+       this.mant=newmant;
+      }
+    }
+  
+  form=(byte)com.ibm.icu.math.MathContext.PLAIN; // preset
+  
+  /* Now check for leading- and all- zeros in mantissa */
+  {int $26=this.mant.length;i=0;for(;$26>0;$26--,i++){
+   if (this.mant[i]!=0) 
+    {
+     // non-0 result; ind will be correct
+     // remove leading zeros [e.g., after subtract]
+     if (i>0) 
+      {do{
+       newmant=new byte[this.mant.length-i];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i);
+       this.mant=newmant;
+      }while(false);}/*delead*/
+     // now determine form if not PLAIN
+     mag=exp+mant.length;
+     if (mag>0) 
+      { // most common path
+       if (mag>set.digits) 
+        if (set.digits!=0) 
+         form=(byte)set.form;
+       if ((mag-1)<=MaxExp) 
+        return this; // no overflow; quick return
+      }
+     else 
+      if (mag<(-5)) 
+       form=(byte)set.form;
+     /* check for overflow */
+     mag--;
+     if ((mag<MinExp)|(mag>MaxExp)) 
+      {overflow:do{
+       // possible reprieve if form is engineering
+       if (form==com.ibm.icu.math.MathContext.ENGINEERING) 
+        {
+         sig=mag%3; // leftover
+         if (sig<0) 
+          sig=3+sig; // negative exponent
+         mag=mag-sig; // exponent to use
+         // 1999.06.29: second test here must be MaxExp
+         if (mag>=MinExp) 
+          if (mag<=MaxExp) 
+           break overflow;
+        }
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+mag);
+      }while(false);}/*overflow*/
+     return this;
+    }
+   }
+  }/*i*/
+  
+  // Drop through to here only if mantissa is all zeros
+  ind=iszero;
+  {/*select*/
+  if (set.form!=com.ibm.icu.math.MathContext.PLAIN)
+   exp=0; // standard result; go to '0'
+  else if (exp>0)
+   exp=0; // +ve exponent also goes to '0'
+  else{
+   // a plain number with -ve exponent; preserve and check exponent
+   if (exp<MinExp) 
+    throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  }
+  }
+  mant=ZERO.mant; // canonical mantissa
+  return this;
+  }
+ }
diff --git a/src/com/ibm/icu/math/MathContext.java b/src/com/ibm/icu/math/MathContext.java
new file mode 100644
index 0000000..725186a
--- /dev/null
+++ b/src/com/ibm/icu/math/MathContext.java
@@ -0,0 +1,601 @@
+/* Generated from 'MathContext.nrx' 8 Sep 2000 11:07:48 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+
+/* ------------------------------------------------------------------ */
+/* MathContext -- Math context settings                               */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1997, 2000, 2005, 2007.  All Rights Reserved. */
+/*                                                                    */
+/*   The MathContext object encapsulates the settings used by the     */
+/*   BigDecimal class; it could also be used by other arithmetics.    */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. The properties are checked for validity on construction, so     */
+/*    the BigDecimal class may assume that they are correct.          */
+/* ------------------------------------------------------------------ */
+/* Author:    Mike Cowlishaw                                          */
+/* 1997.09.03 Initial version (edited from netrexx.lang.RexxSet)      */
+/* 1997.09.12 Add lostDigits property                                 */
+/* 1998.05.02 Make the class immutable and final; drop set methods    */
+/* 1998.06.05 Add Round (rounding modes) property                     */
+/* 1998.06.25 Rename from DecimalContext; allow digits=0              */
+/* 1998.10.12 change to com.ibm.icu.math package                          */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch         */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.07.10 1.04 flag serialization unused                          */
+/* 2000.01.01 1.06 copyright update                                   */
+/* ------------------------------------------------------------------ */
+
+
+
+
+/**
+ * The <code>MathContext</code> immutable class encapsulates the
+ * settings understood by the operator methods of the {@link BigDecimal}
+ * class (and potentially other classes).  Operator methods are those
+ * that effect an operation on a number or a pair of numbers.
+ * <p>
+ * The settings, which are not base-dependent, comprise:
+ * <ol>
+ * <li><code>digits</code>:
+ * the number of digits (precision) to be used for an operation
+ * <li><code>form</code>:
+ * the form of any exponent that results from the operation
+ * <li><code>lostDigits</code>:
+ * whether checking for lost digits is enabled
+ * <li><code>roundingMode</code>:
+ * the algorithm to be used for rounding.
+ * </ol>
+ * <p>
+ * When provided, a <code>MathContext</code> object supplies the
+ * settings for an operation directly.
+ * <p>
+ * When <code>MathContext.DEFAULT</code> is provided for a
+ * <code>MathContext</code> parameter then the default settings are used
+ * (<code>9, SCIENTIFIC, false, ROUND_HALF_UP</code>).
+ * <p>
+ * In the <code>BigDecimal</code> class, all methods which accept a
+ * <code>MathContext</code> object defaults) also have a version of the
+ * method which does not accept a MathContext parameter.  These versions
+ * carry out unlimited precision fixed point arithmetic (as though the
+ * settings were (<code>0, PLAIN, false, ROUND_HALF_UP</code>).
+ * <p>
+ * The instance variables are shared with default access (so they are
+ * directly accessible to the <code>BigDecimal</code> class), but must
+ * never be changed.
+ * <p>
+ * The rounding mode constants have the same names and values as the
+ * constants of the same name in <code>java.math.BigDecimal</code>, to
+ * maintain compatibility with earlier versions of
+ * <code>BigDecimal</code>.
+ *
+ * @see     BigDecimal
+ * @author  Mike Cowlishaw
+ * @stable ICU 2.0
+ */
+
+public final class MathContext implements java.io.Serializable{
+ //private static final java.lang.String $0="MathContext.nrx";
+ 
+ /* ----- Properties ----- */
+ /* properties public constant */
+ /**
+  * Plain (fixed point) notation, without any exponent.
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #SCIENTIFIC
+  * @stable ICU 2.0
+  */
+ public static final int PLAIN=0; // [no exponent]
+ 
+ /**
+  * Standard floating point notation (with scientific exponential
+  * format, where there is one digit before any decimal point).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  * @stable ICU 2.0
+  */
+ public static final int SCIENTIFIC=1; // 1 digit before .
+ 
+ /**
+  * Standard floating point notation (with engineering exponential
+  * format, where the power of ten is a multiple of 3).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  * @stable ICU 2.0
+  */
+ public static final int ENGINEERING=2; // 1-3 digits before .
+ 
+ // The rounding modes match the original BigDecimal class values
+ /**
+  * Rounding mode to round to a more positive number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more positive digit.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_CEILING=2;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * All discarded digits are ignored (truncated).  The result is
+  * neither incremented nor decremented.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_DOWN=1;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more negative digit.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_FLOOR=3;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  Otherwise the discarded digits are
+  * ignored.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_DOWN=5;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  If they represent less than half,
+  * then the result should be rounded down.
+  * <p>
+  * Otherwise (they represent exactly half) the result is rounded
+  * down if its rightmost digit is even, or rounded up if its
+  * rightmost digit is odd (to make an even digit).
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_EVEN=6;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than or equal to half
+  * (0.5 times) the value of a one in the next position then the result
+  * should be rounded up (away from zero).  Otherwise the discarded
+  * digits are ignored.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_UP=4;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * Rounding (potential loss of information) is not permitted.
+  * If any of the discarded digits are non-zero then an
+  * <code>ArithmeticException</code> should be thrown.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UNNECESSARY=7;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result will
+  * be rounded up (away from zero).
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UP=0;
+ 
+ 
+ /* properties shared */
+ /**
+  * The number of digits (precision) to be used for an operation.
+  * A value of 0 indicates that unlimited precision (as many digits
+  * as are required) will be used.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the precision of results.
+  * Note that leading zeros (in the integer part of a number) are
+  * never significant.
+  * <p>
+  * <code>digits</code> will always be non-negative.
+  *
+  * @serial
+  */
+ int digits;
+ 
+ /**
+  * The form of results from an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the form of results, in particular whether and how
+  * exponential notation should be used.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  * @serial
+  */
+ int form; // values for this must fit in a byte
+ 
+ /**
+  * Controls whether lost digits checking is enabled for an
+  * operation.
+  * Set to <code>true</code> to enable checking, or
+  * to <code>false</code> to disable checking.
+  * <p>
+  * When enabled, the {@link BigDecimal} operator methods check
+  * the precision of their operand or operands, and throw an
+  * <code>ArithmeticException</code> if an operand is more precise
+  * than the digits setting (that is, digits would be lost).
+  * When disabled, operands are rounded to the specified digits.
+  *
+  * @serial
+  */
+ boolean lostDigits;
+ 
+ /**
+  * The rounding algorithm to be used for an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the algorithm to be used when non-zero digits have to
+  * be discarded in order to reduce the precision of a result.
+  * The value must be one of the public constants whose name starts
+  * with <code>ROUND_</code>.
+  *
+  * @see #ROUND_CEILING
+  * @see #ROUND_DOWN
+  * @see #ROUND_FLOOR
+  * @see #ROUND_HALF_DOWN
+  * @see #ROUND_HALF_EVEN
+  * @see #ROUND_HALF_UP
+  * @see #ROUND_UNNECESSARY
+  * @see #ROUND_UP
+  * @serial
+  */
+ int roundingMode;
+ 
+ /* properties private constant */
+ // default settings
+ private static final int DEFAULT_FORM=SCIENTIFIC;
+ private static final int DEFAULT_DIGITS=9;
+ private static final boolean DEFAULT_LOSTDIGITS=false;
+ private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP;
+ 
+ /* properties private constant */
+ 
+ private static final int MIN_DIGITS=0; // smallest value for DIGITS.
+ private static final int MAX_DIGITS=999999999; // largest value for DIGITS.  If increased,
+ // the BigDecimal class may need update.
+ // list of valid rounding mode values, most common two first
+ private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP};
+ 
+ 
+ private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values
+ 
+ 
+ 
+ 
+ /* properties private constant unused */
+ 
+ // Serialization version
+ private static final long serialVersionUID=7163376998892515376L;
+ 
+ /* properties public constant */
+ /**
+  * A <code>MathContext</code> object initialized to the default
+  * settings for general-purpose arithmetic.  That is,
+  * <code>digits=9 form=SCIENTIFIC lostDigits=false
+  * roundingMode=ROUND_HALF_UP</code>.
+  *
+  * @see #SCIENTIFIC
+  * @see #ROUND_HALF_UP
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+
+ 
+ 
+ 
+ /* ----- Constructors ----- */
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999).
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits){
+  this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision and form.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform){
+  this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, and lostDigits setting.
+  * The roundingMode setting is set to its default value
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @param setlostdigits The <code>boolean</code> lostDigits
+  *                      setting for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits){
+  this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, lostDigits, and roundingMode setting.
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> or <code>setroundingmode</code> parameters is
+  * not one of the appropriate constants.
+  *
+  * @param setdigits       The <code>int</code> digits setting
+  *                        for this <code>MathContext</code>.
+  * @param setform         The <code>int</code> form setting
+  *                        for this <code>MathContext</code>.
+  * @param setlostdigits   The <code>boolean</code> lostDigits
+  *                        setting for this <code>MathContext</code>.
+  * @param setroundingmode The <code>int</code> roundingMode setting
+  *                        for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super();
+  
+  
+  // set values, after checking
+  if (setdigits!=DEFAULT_DIGITS) 
+   {
+    if (setdigits<MIN_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too small:"+" "+setdigits);
+    if (setdigits>MAX_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too large:"+" "+setdigits);
+   }
+  {/*select*/
+  if (setform==SCIENTIFIC){
+   // [most common]
+  }else if (setform==ENGINEERING){
+  }else if (setform==PLAIN){
+  }else{
+   throw new java.lang.IllegalArgumentException("Bad form value:"+" "+setform);
+  }
+  }
+  if ((!(isValidRound(setroundingmode)))) 
+   throw new java.lang.IllegalArgumentException("Bad roundingMode value:"+" "+setroundingmode);
+  digits=setdigits;
+  form=setform;
+  lostDigits=setlostdigits; // [no bad value possible]
+  roundingMode=setroundingmode;
+  return;}
+
+ /**
+  * Returns the digits setting.
+  * This value is always non-negative.
+  *
+  * @return an <code>int</code> which is the value of the digits
+  *         setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getDigits(){
+  return digits;
+  }
+
+ /**
+  * Returns the form setting.
+  * This will be one of
+  * {@link #ENGINEERING},
+  * {@link #PLAIN}, or
+  * {@link #SCIENTIFIC}.
+  *
+  * @return an <code>int</code> which is the value of the form setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getForm(){
+  return form;
+  }
+
+ /**
+  * Returns the lostDigits setting.
+  * This will be either <code>true</code> (enabled) or
+  * <code>false</code> (disabled).
+  *
+  * @return a <code>boolean</code> which is the value of the lostDigits
+  *           setting
+  * @stable ICU 2.0
+  */
+ 
+ public boolean getLostDigits(){
+  return lostDigits;
+  }
+
+ /**
+  * Returns the roundingMode setting.
+  * This will be one of
+  * {@link  #ROUND_CEILING},
+  * {@link  #ROUND_DOWN},
+  * {@link  #ROUND_FLOOR},
+  * {@link  #ROUND_HALF_DOWN},
+  * {@link  #ROUND_HALF_EVEN},
+  * {@link  #ROUND_HALF_UP},
+  * {@link  #ROUND_UNNECESSARY}, or
+  * {@link  #ROUND_UP}.
+  *
+  * @return an <code>int</code> which is the value of the roundingMode
+  *         setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getRoundingMode(){
+  return roundingMode;
+  }
+
+ /** Returns the <code>MathContext</code> as a readable string.
+  * The <code>String</code> returned represents the settings of the
+  * <code>MathContext</code> object as four blank-delimited words
+  * separated by a single blank and with no leading or trailing blanks,
+  * as follows:
+  * <ol>
+  * <li>
+  * <code>digits=</code>, immediately followed by
+  * the value of the digits setting as a numeric word.
+  * <li>
+  * <code>form=</code>, immediately followed by
+  * the value of the form setting as an uppercase word
+  * (one of <code>SCIENTIFIC</code>, <code>PLAIN</code>, or
+  * <code>ENGINEERING</code>).
+  * <li>
+  * <code>lostDigits=</code>, immediately followed by
+  * the value of the lostDigits setting
+  * (<code>1</code> if enabled, <code>0</code> if disabled).
+  * <li>
+  * <code>roundingMode=</code>, immediately followed by
+  * the value of the roundingMode setting as a word.
+  * This word will be the same as the name of the corresponding public
+  * constant.
+  * </ol>
+  * <p>
+  * For example:
+  * <br><code>
+  * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP
+  * </code>
+  * <p>
+  * Additional words may be appended to the result of
+  * <code>toString</code> in the future if more properties are added
+  * to the class.
+  *
+  * @return a <code>String</code> representing the context settings.
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String toString(){
+  java.lang.String formstr=null;
+  int r=0;
+  java.lang.String roundword=null;
+  {/*select*/
+  if (form==SCIENTIFIC)
+   formstr="SCIENTIFIC";
+  else if (form==ENGINEERING)
+   formstr="ENGINEERING";
+  else{
+   formstr="PLAIN";/* form=PLAIN */
+  }
+  }
+  {int $1=ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){
+   if (roundingMode==ROUNDS[r]) 
+    {
+     roundword=ROUNDWORDS[r];
+     break r;
+    }
+   }
+  }/*r*/
+  return "digits="+digits+" "+"form="+formstr+" "+"lostDigits="+(lostDigits?"1":"0")+" "+"roundingMode="+roundword;
+  }
+
+ 
+ /* <sgml> Test whether round is valid. </sgml> */
+ // This could be made shared for use by BigDecimal for setScale.
+ 
+ private static boolean isValidRound(int testround){
+  int r=0;
+  {int $2=ROUNDS.length;for(r=0;$2>0;$2--,r++){
+   if (testround==ROUNDS[r]) 
+    return true;
+   }
+  }/*r*/
+  return false;
+  }
+ }
diff --git a/src/com/ibm/icu/math/package.html b/src/com/ibm/icu/math/package.html
new file mode 100644
index 0000000..6336ead
--- /dev/null
+++ b/src/com/ibm/icu/math/package.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head><!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+
+<title>C:\cvs\icu4j\src\com\ibm\demo\package.html</title>
+</head>
+
+<body bgcolor="white">
+
+<p>IBM BigDecimal support.</p>
+</body>
+</html>
diff --git a/src/com/ibm/icu/text/AnyTransliterator.java b/src/com/ibm/icu/text/AnyTransliterator.java
new file mode 100644
index 0000000..5f544ec
--- /dev/null
+++ b/src/com/ibm/icu/text/AnyTransliterator.java
@@ -0,0 +1,341 @@
+/*
+*****************************************************************
+* Copyright (c) 2002-2006, International Business Machines Corporation
+* and others.  All Rights Reserved.
+*****************************************************************
+* Date        Name        Description
+* 06/06/2002  aliu        Creation.
+*****************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.lang.UScript;
+import java.lang.Math;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.MissingResourceException;
+/**
+ * A transliterator that translates multiple input scripts to a single
+ * output script.  It is named Any-T or Any-T/V, where T is the target
+ * and V is the optional variant.  The target T is a script.
+ *
+ * <p>An AnyTransliterator partitions text into runs of the same
+ * script, together with adjacent COMMON or INHERITED characters.
+ * After determining the script of each run, it transliterates from
+ * that script to the given target/variant.  It does so by
+ * instantiating a transliterator from the source script to the
+ * target/variant.  If a run consists only of the target script,
+ * COMMON, or INHERITED characters, then the run is not changed.
+ *
+ * <p>At startup, all possible AnyTransliterators are registered with
+ * the system, as determined by examining the registered script
+ * transliterators.
+ *
+ * @since ICU 2.2
+ * @author Alan Liu
+ */
+class AnyTransliterator extends Transliterator {
+
+    //------------------------------------------------------------
+    // Constants
+
+    static final char TARGET_SEP = '-';
+    static final char VARIANT_SEP = '/';
+    static final String ANY = "Any";
+    static final String NULL_ID = "Null";
+    static final String LATIN_PIVOT = "-Latin;Latin-";
+
+    /**
+     * Cache mapping UScriptCode values to Transliterator*.
+     */
+    private Map cache;
+
+    /**
+     * The target or target/variant string.
+     */
+    private String target;
+
+    /**
+     * The target script code.  Never USCRIPT_INVALID_CODE.
+     */
+    private int targetScript;
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int allStart = pos.start;
+        int allLimit = pos.limit;
+
+        ScriptRunIterator it =
+            new ScriptRunIterator(text, pos.contextStart, pos.contextLimit);
+
+        while (it.next()) {
+            // Ignore runs in the ante context
+            if (it.limit <= allStart) continue;
+
+            // Try to instantiate transliterator from it.scriptCode to
+            // our target or target/variant
+            Transliterator t = getTransliterator(it.scriptCode);
+
+            if (t == null) {
+                // We have no transliterator.  Do nothing, but keep
+                // pos.start up to date.
+                pos.start = it.limit;
+                continue;
+            }
+
+            // If the run end is before the transliteration limit, do
+            // a non-incremental transliteration.  Otherwise do an
+            // incremental one.
+            boolean incremental = isIncremental && (it.limit >= allLimit);
+
+            pos.start = Math.max(allStart, it.start);
+            pos.limit = Math.min(allLimit, it.limit);
+            int limit = pos.limit;
+            t.filteredTransliterate(text, pos, incremental);
+            int delta = pos.limit - limit;
+            allLimit += delta;
+            it.adjustLimit(delta);
+
+            // We're done if we enter the post context
+            if (it.limit >= allLimit) break;
+        }
+
+        // Restore limit.  pos.start is fine where the last transliterator
+        // left it, or at the end of the last run.
+        pos.limit = allLimit;
+    }
+
+    /**
+     * Private constructor
+     * @param id the ID of the form S-T or S-T/V, where T is theTarget
+     * and V is theVariant.  Must not be empty.
+     * @param theTarget the target name.  Must not be empty, and must
+     * name a script corresponding to theTargetScript.
+     * @param theVariant the variant name, or the empty string if
+     * there is no variant
+     * @param theTargetScript the script code corresponding to
+     * theTarget.
+     */
+    private AnyTransliterator(String id,
+                              String theTarget,
+                              String theVariant,
+                              int theTargetScript) {
+        super(id, null);
+        targetScript = theTargetScript;
+        cache = new HashMap();
+
+        target = theTarget;
+        if (theVariant.length() > 0) {
+            target = theTarget + VARIANT_SEP + theVariant;
+        }
+    }
+
+    /**
+     * Returns a transliterator from the given source to our target or
+     * target/variant.  Returns NULL if the source is the same as our
+     * target script, or if the source is USCRIPT_INVALID_CODE.
+     * Caches the result and returns the same transliterator the next
+     * time.  The caller does NOT own the result and must not delete
+     * it.
+     */
+    private Transliterator getTransliterator(int source) {
+        if (source == targetScript || source == UScript.INVALID_CODE) {
+            return null;
+        }
+
+        Integer key = new Integer(source);
+        Transliterator t = (Transliterator) cache.get(key);
+        if (t == null) {
+            String sourceName = UScript.getName(source);
+            String id = sourceName + TARGET_SEP + target;
+
+            try {
+                t = Transliterator.getInstance(id, FORWARD);
+            } catch (RuntimeException e) { }
+            if (t == null) {
+
+                // Try to pivot around Latin, our most common script
+                id = sourceName + LATIN_PIVOT + target;
+                try {
+                    t = Transliterator.getInstance(id, FORWARD);
+                } catch (RuntimeException e) { }
+            }
+
+            if (t != null) {
+                cache.put(key, t);
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * Registers standard transliterators with the system.  Called by
+     * Transliterator during initialization.  Scan all current targets
+     * and register those that are scripts T as Any-T/V.
+     */
+    static void register() {
+
+        HashSet seen = new HashSet();
+
+        for (Enumeration s=Transliterator.getAvailableSources(); s.hasMoreElements(); ) {
+            String source = (String) s.nextElement();
+
+            // Ignore the "Any" source
+            if (source.equalsIgnoreCase(ANY)) continue;
+
+            for (Enumeration t=Transliterator.getAvailableTargets(source);
+                 t.hasMoreElements(); ) {
+                String target = (String) t.nextElement();
+
+                // Only process each target once
+                if (seen.contains(target)) continue;
+                seen.add(target);
+
+                // Get the script code for the target.  If not a script, ignore.
+                int targetScript = scriptNameToCode(target);
+                if (targetScript == UScript.INVALID_CODE) continue;
+
+                for (Enumeration v=Transliterator.getAvailableVariants(source, target);
+                     v.hasMoreElements(); ) {
+                    String variant = (String) v.nextElement();
+
+                    String id;
+                    id = TransliteratorIDParser.STVtoID(ANY, target, variant);
+                    AnyTransliterator trans = new AnyTransliterator(id, target, variant,
+                                                                    targetScript);
+                    Transliterator.registerInstance(trans);
+                    Transliterator.registerSpecialInverse(target, NULL_ID, false);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the script code for a given name, or
+     * UScript.INVALID_CODE if not found.
+     */
+    private static int scriptNameToCode(String name) {
+        try{
+            int[] codes = UScript.getCode(name);
+            return codes != null ? codes[0] : UScript.INVALID_CODE;
+        }catch( MissingResourceException e){
+            return UScript.INVALID_CODE;
+        }
+    }
+
+    //------------------------------------------------------------
+    // ScriptRunIterator
+
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be
+     * of the form:
+     *
+     * ccccSScSSccccTTcTcccc   - c = common, S = first script, T = second
+     * |            |          - first run (start, limit)
+     *          |           |  - second run (start, limit)
+     *
+     * That is, the runs will overlap. The reason for this is so that a
+     * transliterator can consider common characters both before and after
+     * the scripts.
+     */
+    private static class ScriptRunIterator {
+
+        private Replaceable text;
+        private int textStart;
+        private int textLimit;
+
+        /**
+         * The code of the current run, valid after next() returns.  May
+         * be UScript.INVALID_CODE if and only if the entire text is
+         * COMMON/INHERITED.
+         */
+        public int scriptCode;
+
+        /**
+         * The start of the run, inclusive, valid after next() returns.
+         */
+        public int start;
+
+        /**
+         * The end of the run, exclusive, valid after next() returns.
+         */
+        public int limit;
+
+        /**
+         * Constructs a run iterator over the given text from start
+         * (inclusive) to limit (exclusive).
+         */
+        public ScriptRunIterator(Replaceable text, int start, int limit) {
+            this.text = text;
+            this.textStart = start;
+            this.textLimit = limit;
+            this.limit = start;
+        }
+
+
+        /**
+         * Returns TRUE if there are any more runs.  TRUE is always
+         * returned at least once.  Upon return, the caller should
+         * examine scriptCode, start, and limit.
+         */
+        public boolean next() {
+            int ch;
+            int s;
+
+            scriptCode = UScript.INVALID_CODE; // don't know script yet
+            start = limit;
+
+            // Are we done?
+            if (start == textLimit) {
+                return false;
+            }
+
+            // Move start back to include adjacent COMMON or INHERITED
+            // characters
+            while (start > textStart) {
+                ch = text.char32At(start - 1); // look back
+                s = UScript.getScript(ch);
+                if (s == UScript.COMMON || s == UScript.INHERITED) {
+                    --start;
+                } else {
+                    break;
+                }
+            }
+
+            // Move limit ahead to include COMMON, INHERITED, and characters
+            // of the current script.
+            while (limit < textLimit) {
+                ch = text.char32At(limit); // look ahead
+                s = UScript.getScript(ch);
+                if (s != UScript.COMMON && s != UScript.INHERITED) {
+                    if (scriptCode == UScript.INVALID_CODE) {
+                        scriptCode = s;
+                    } else if (s != scriptCode) {
+                        break;
+                    }
+                }
+                ++limit;
+            }
+
+            // Return TRUE even if the entire text is COMMON / INHERITED, in
+            // which case scriptCode will be UScript.INVALID_CODE.
+            return true;
+        }
+
+        /**
+         * Adjusts internal indices for a change in the limit index of the
+         * given delta.  A positive delta means the limit has increased.
+         */
+        public void adjustLimit(int delta) {
+            limit += delta;
+            textLimit += delta;
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/ArabicShaping.java b/src/com/ibm/icu/text/ArabicShaping.java
new file mode 100644
index 0000000..b352fbb
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShaping.java
@@ -0,0 +1,1231 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.UBiDiProps;
+
+import com.ibm.icu.lang.*;
+
+/**
+ * Shape Arabic text on a character basis.
+ *
+ * <p>ArabicShaping performs basic operations for "shaping" Arabic text. It is most
+ * useful for use with legacy data formats and legacy display technology
+ * (simple terminals). All operations are performed on Unicode characters.</p>
+ *
+ * <p>Text-based shaping means that some character code points in the text are
+ * replaced by others depending on the context. It transforms one kind of text
+ * into another. In comparison, modern displays for Arabic text select
+ * appropriate, context-dependent font glyphs for each text element, which means
+ * that they transform text into a glyph vector.</p>
+ *
+ * <p>Text transformations are necessary when modern display technology is not
+ * available or when text needs to be transformed to or from legacy formats that
+ * use "shaped" characters. Since the Arabic script is cursive, connecting
+ * adjacent letters to each other, computers select images for each letter based
+ * on the surrounding letters. This usually results in four images per Arabic
+ * letter: initial, middle, final, and isolated forms. In Unicode, on the other
+ * hand, letters are normally stored abstract, and a display system is expected
+ * to select the necessary glyphs. (This makes searching and other text
+ * processing easier because the same letter has only one code.) It is possible
+ * to mimic this with text transformations because there are characters in
+ * Unicode that are rendered as letters with a specific shape
+ * (or cursive connectivity). They were included for interoperability with
+ * legacy systems and codepages, and for unsophisticated display systems.</p>
+ *
+ * <p>A second kind of text transformations is supported for Arabic digits:
+ * For compatibility with legacy codepages that only include European digits,
+ * it is possible to replace one set of digits by another, changing the
+ * character code points. These operations can be performed for either
+ * Arabic-Indic Digits (U+0660...U+0669) or Eastern (Extended) Arabic-Indic
+ * digits (U+06f0...U+06f9).</p>
+ *
+ * <p>Some replacements may result in more or fewer characters (code points).
+ * By default, this means that the destination buffer may receive text with a
+ * length different from the source length. Some legacy systems rely on the
+ * length of the text to be constant. They expect extra spaces to be added
+ * or consumed either next to the affected character or at the end of the
+ * text.</p>
+ * @stable ICU 2.0
+ */
+public final class ArabicShaping {
+    private final int options;
+    private boolean isLogical; // convenience
+
+    /**
+     * Convert a range of text in the source array, putting the result 
+     * into a range of text in the destination array, and return the number
+     * of characters written.
+     *
+     * @param source An array containing the input text
+     * @param sourceStart The start of the range of text to convert
+     * @param sourceLength The length of the range of text to convert
+     * @param dest The destination array that will receive the result.
+     *   It may be <code>NULL</code> only if  <code>destSize</code> is 0.  
+     * @param destStart The start of the range of the destination buffer to use.
+     * @param destSize The size (capacity) of the destination buffer.
+     *   If <code>destSize</code> is 0, then no output is produced,
+     *   but the necessary buffer size is returned ("preflighting").  This
+     *   does not validate the text against the options, for example, 
+     *   if letters are being unshaped, and spaces are being consumed
+     *   following lamalef, this will not detect a lamalef without a 
+     *   corresponding space.  An error will be thrown when the actual
+     *   conversion is attempted.
+     * @return The number of chars written to the destination buffer.
+     *   If an error occurs, then no output was written, or it may be
+     *   incomplete.
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public int shape(char[] source, int sourceStart, int sourceLength,
+                     char[] dest, int destStart, int destSize) throws ArabicShapingException {
+        if (source == null) {
+            throw new IllegalArgumentException("source can not be null");
+        }
+        if (sourceStart < 0 || sourceLength < 0 || sourceStart + sourceLength > source.length) {
+            throw new IllegalArgumentException("bad source start (" + sourceStart +
+                                               ") or length (" + sourceLength +
+                                               ") for buffer of length " + source.length);
+        }
+        if (dest == null && destSize != 0) {
+            throw new IllegalArgumentException("null dest requires destSize == 0");
+        }
+        if ((destSize != 0) &&
+            (destStart < 0 || destSize < 0 || destStart + destSize > dest.length)) {
+            throw new IllegalArgumentException("bad dest start (" + destStart + 
+                                               ") or size (" + destSize + 
+                                               ") for buffer of length " + dest.length);
+        }
+
+        return internalShape(source, sourceStart, sourceLength, dest, destStart, destSize);
+    }
+
+    /**
+     * Convert a range of text in place.  This may only be used if the Length option
+     * does not grow or shrink the text.
+     *
+     * @param source An array containing the input text
+     * @param start The start of the range of text to convert
+     * @param length The length of the range of text to convert
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public void shape(char[] source, int start, int length) throws ArabicShapingException {
+        if ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) {
+            throw new ArabicShapingException("Cannot shape in place with length option grow/shrink.");
+        }
+        shape(source, start, length, source, start, length);
+    }
+
+    /**
+     * Convert a string, returning the new string.
+     *
+     * @param text the string to convert
+     * @return the converted string
+     * @throws ArabicShapingException if the string cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public String shape(String text) throws ArabicShapingException {
+        char[] src = text.toCharArray();
+        char[] dest = src;
+        if (((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) &&
+            ((options & LETTERS_MASK) == LETTERS_UNSHAPE)) {
+
+            dest = new char[src.length * 2]; // max
+        }
+        int len = shape(src, 0, src.length, dest, 0, dest.length);
+
+        return new String(dest, 0, len);
+    }
+
+    /**
+     * Construct ArabicShaping using the options flags.
+     * The flags are as follows:<br>
+     * 'LENGTH' flags control whether the text can change size, and if not,
+     * how to maintain the size of the text when LamAlef ligatures are 
+     * formed or broken.<br>
+     * 'TEXT_DIRECTION' flags control whether the text is read and written
+     * in visual order or in logical order.<br>
+     * 'LETTERS_SHAPE' flags control whether conversion is to or from
+     * presentation forms.<br>
+     * 'DIGITS' flags control whether digits are shaped, and whether from
+     * European to Arabic-Indic or vice-versa.<br>
+     * 'DIGIT_TYPE' flags control whether standard or extended Arabic-Indic
+     * digits are used when performing digit conversion.
+     * @stable ICU 2.0
+     */
+    public ArabicShaping(int options) {
+        this.options = options;
+        if ((options & DIGITS_MASK) > 0x80) {
+            throw new IllegalArgumentException("bad DIGITS options");
+        }
+        isLogical = (options & TEXT_DIRECTION_MASK) == TEXT_DIRECTION_LOGICAL;
+    }
+
+    /**
+     * Memory option: allow the result to have a different length than the source.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_GROW_SHRINK = 0;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces next to modified characters.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the end of the text.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    /** 
+     * Bit mask for memory options. 
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_MASK = 3;
+
+
+    /** 
+     * Direction indicator: the source is in logical (keyboard) order. 
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+
+    /** 
+     * Direction indicator: the source is in visual (display) order, that is,
+     * the leftmost displayed character is stored first.
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    /** 
+     * Bit mask for direction indicators. 
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_MASK = 4;
+
+
+    /**
+     * Letter shaping option: do not perform letter shaping. 
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_NOOP = 0;
+
+    /** 
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * by shaped ones in the U+FE70 (Presentation Forms B) block. Performs Lam-Alef ligature
+     * substitution.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_SHAPE = 8;
+
+    /** 
+     * Letter shaping option: replace shaped letter characters in the U+FE70 (Presentation Forms B) block
+     * by normative ones in the U+0600 (Arabic) block.  Converts Lam-Alef ligatures to pairs of Lam and
+     * Alef characters, consuming spaces if required.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    /**
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * except for the TASHKEEL characters at U+064B...U+0652, by shaped ones in the U+Fe70
+     * (Presentation Forms B) block.  The TASHKEEL characters will always be converted to
+     * the isolated forms rather than to their correct shape.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+
+    /** 
+     * Bit mask for letter shaping options. 
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_MASK = 0x18;
+
+
+    /** 
+     * Digit shaping option: do not perform digit shaping. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_NOOP = 0;
+
+    /**
+     * Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN = 0x20;
+
+    /**
+     * Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_AN2EN = 0x40;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be not an Arabic,
+     * letter, so European digits at the start of the text will not change.
+     * Compare to DIGITS_ALEN2AN_INIT_AL.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be an Arabic,
+     * letter, so European digits at the start of the text will change.
+     * Compare to DIGITS_ALEN2AN_INT_LR.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+
+    /** Not a valid option value. */
+    //private static final int DIGITS_RESERVED = 0xa0;
+
+    /** 
+     * Bit mask for digit shaping options. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_MASK = 0xe0;
+
+    /** 
+     * Digit type option: Use Arabic-Indic digits (U+0660...U+0669). 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_AN = 0;
+
+    /** 
+     * Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9). 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    /** 
+     * Bit mask for digit type options. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_MASK = 0x0100; // 0x3f00?
+
+    /**
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object rhs) {
+        return rhs != null && 
+            rhs.getClass() == ArabicShaping.class && 
+            options == ((ArabicShaping)rhs).options;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+     ///CLOVER:OFF
+    public int hashCode() {
+        return options;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer(super.toString());
+        buf.append('[');
+        switch (options & LENGTH_MASK) {
+        case LENGTH_GROW_SHRINK: buf.append("grow/shrink"); break;
+        case LENGTH_FIXED_SPACES_NEAR: buf.append("spaces near"); break;
+        case LENGTH_FIXED_SPACES_AT_END: buf.append("spaces at end"); break;
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: buf.append("spaces at beginning"); break;
+        }
+        switch (options & TEXT_DIRECTION_MASK) {
+        case TEXT_DIRECTION_LOGICAL: buf.append(", logical"); break;
+        case TEXT_DIRECTION_VISUAL_LTR: buf.append(", visual"); break;
+        }
+        switch (options & LETTERS_MASK) {
+        case LETTERS_NOOP: buf.append(", no letter shaping"); break;
+        case LETTERS_SHAPE: buf.append(", shape letters"); break;
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED: buf.append(", shape letters tashkeel isolated"); break;
+        case LETTERS_UNSHAPE: buf.append(", unshape letters"); break;
+        }
+        switch (options & DIGITS_MASK) {
+        case DIGITS_NOOP: buf.append(", no digit shaping"); break;
+        case DIGITS_EN2AN: buf.append(", shape digits to AN"); break;
+        case DIGITS_AN2EN: buf.append(", shape digits to EN"); break;
+        case DIGITS_EN2AN_INIT_LR: buf.append(", shape digits to AN contextually: default EN"); break;
+        case DIGITS_EN2AN_INIT_AL: buf.append(", shape digits to AN contextually: default AL"); break;
+        }
+        switch (options & DIGIT_TYPE_MASK) {
+        case DIGIT_TYPE_AN: buf.append(", standard Arabic-Indic digits"); break;
+        case DIGIT_TYPE_AN_EXTENDED: buf.append(", extended Arabic-Indic digits"); break;
+        }
+        buf.append("]");
+
+        return buf.toString();
+    }
+    ///CLOVER:ON
+
+    //
+    // ported api
+    //
+
+    private static final int IRRELEVANT = 4;
+    private static final int LAMTYPE = 16;
+    private static final int ALEFTYPE = 32;
+
+    private static final int LINKR = 1;
+    private static final int LINKL = 2;
+    private static final int LINK_MASK = 3;
+
+    private static final int irrelevantPos[] = { 
+        0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE 
+    };
+
+/*
+    private static final char convertLamAlef[] =  {
+        '\u0622', // FEF5 
+        '\u0622', // FEF6
+        '\u0623', // FEF7
+        '\u0623', // FEF8
+        '\u0625', // FEF9
+        '\u0625', // FEFA
+        '\u0627', // FEFB
+        '\u0627'  // FEFC 
+    };
+*/
+
+    private static final char convertNormalizedLamAlef[] = {
+        '\u0622', // 065C
+        '\u0623', // 065D
+        '\u0625', // 065E
+        '\u0627', // 065F
+    };
+
+    private static final int[] araLink = {
+        1           + 32 + 256 * 0x11,  /*0x0622*/
+        1           + 32 + 256 * 0x13,  /*0x0623*/
+        1                + 256 * 0x15,  /*0x0624*/
+        1           + 32 + 256 * 0x17,  /*0x0625*/
+        1 + 2            + 256 * 0x19,  /*0x0626*/
+        1           + 32 + 256 * 0x1D,  /*0x0627*/
+        1 + 2            + 256 * 0x1F,  /*0x0628*/
+        1                + 256 * 0x23,  /*0x0629*/
+        1 + 2            + 256 * 0x25,  /*0x062A*/
+        1 + 2            + 256 * 0x29,  /*0x062B*/
+        1 + 2            + 256 * 0x2D,  /*0x062C*/
+        1 + 2            + 256 * 0x31,  /*0x062D*/
+        1 + 2            + 256 * 0x35,  /*0x062E*/
+        1                + 256 * 0x39,  /*0x062F*/
+        1                + 256 * 0x3B,  /*0x0630*/
+        1                + 256 * 0x3D,  /*0x0631*/
+        1                + 256 * 0x3F,  /*0x0632*/
+        1 + 2            + 256 * 0x41,  /*0x0633*/
+        1 + 2            + 256 * 0x45,  /*0x0634*/
+        1 + 2            + 256 * 0x49,  /*0x0635*/
+        1 + 2            + 256 * 0x4D,  /*0x0636*/
+        1 + 2            + 256 * 0x51,  /*0x0637*/
+        1 + 2            + 256 * 0x55,  /*0x0638*/
+        1 + 2            + 256 * 0x59,  /*0x0639*/
+        1 + 2            + 256 * 0x5D,  /*0x063A*/
+        0, 0, 0, 0, 0,                  /*0x063B-0x063F*/
+        1 + 2,                          /*0x0640*/
+        1 + 2            + 256 * 0x61,  /*0x0641*/
+        1 + 2            + 256 * 0x65,  /*0x0642*/
+        1 + 2            + 256 * 0x69,  /*0x0643*/
+        1 + 2       + 16 + 256 * 0x6D,  /*0x0644*/
+        1 + 2            + 256 * 0x71,  /*0x0645*/
+        1 + 2            + 256 * 0x75,  /*0x0646*/
+        1 + 2            + 256 * 0x79,  /*0x0647*/
+        1                + 256 * 0x7D,  /*0x0648*/
+        1                + 256 * 0x7F,  /*0x0649*/
+        1 + 2            + 256 * 0x81,  /*0x064A*/
+        4, 4, 4, 4,                     /*0x064B-0x064E*/
+        4, 4, 4, 4,                     /*0x064F-0x0652*/
+        4, 4, 4, 0, 0,                  /*0x0653-0x0657*/
+        0, 0, 0, 0,                     /*0x0658-0x065B*/
+        1                + 256 * 0x85,  /*0x065C*/
+        1                + 256 * 0x87,  /*0x065D*/
+        1                + 256 * 0x89,  /*0x065E*/
+        1                + 256 * 0x8B,  /*0x065F*/
+        0, 0, 0, 0, 0,                  /*0x0660-0x0664*/
+        0, 0, 0, 0, 0,                  /*0x0665-0x0669*/
+        0, 0, 0, 0, 0, 0,               /*0x066A-0x066F*/
+        4,                              /*0x0670*/
+        0,                              /*0x0671*/
+        1           + 32,               /*0x0672*/
+        1           + 32,               /*0x0673*/
+        0,                              /*0x0674*/
+        1           + 32,               /*0x0675*/
+        1, 1,                           /*0x0676-0x0677*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x0678-0x067D*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x067E-0x0683*/
+        1+2, 1+2, 1+2, 1+2,             /*0x0684-0x0687*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x0688-0x0691*/
+        1, 1, 1, 1, 1, 1, 1, 1,         /*0x0692-0x0699*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2,             /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06B8-0x06BF*/
+        1+2, 1+2,                       /*0x06B8-0x06BF*/
+        1,                              /*0x06C0*/
+        1+2,                            /*0x06C1*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x06C2-0x06CB*/
+        1+2,                            /*0x06CC*/
+        1,                              /*0x06CD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06CE-0x06D1*/
+        1, 1                            /*0x06D2-0x06D3*/
+    };
+
+    private static final int[] presLink = {
+        1 + 2,                        /*0xFE70*/
+        1 + 2,                        /*0xFE71*/
+        1 + 2, 0, 1+ 2, 0, 1+ 2,      /*0xFE72-0xFE76*/
+        1 + 2,                        /*0xFE77*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE78-0xFE81*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE82-0xFE85*/
+        0, 0 + 32, 1 + 32, 0 + 32,    /*0xFE86-0xFE89*/
+        1 + 32, 0, 1,  0 + 32,        /*0xFE8A-0xFE8D*/
+        1 + 32, 0, 2,  1 + 2,         /*0xFE8E-0xFE91*/
+        1, 0 + 32, 1 + 32, 0,         /*0xFE92-0xFE95*/
+        2, 1 + 2, 1, 0,               /*0xFE96-0xFE99*/
+        1, 0, 2, 1 + 2,               /*0xFE9A-0xFE9D*/
+        1, 0, 2, 1 + 2,               /*0xFE9E-0xFEA1*/
+        1, 0, 2, 1 + 2,               /*0xFEA2-0xFEA5*/
+        1, 0, 2, 1 + 2,               /*0xFEA6-0xFEA9*/
+        1, 0, 2, 1 + 2,               /*0xFEAA-0xFEAD*/
+        1, 0, 1, 0,                   /*0xFEAE-0xFEB1*/
+        1, 0, 1, 0,                   /*0xFEB2-0xFEB5*/
+        1, 0, 2, 1+2,                 /*0xFEB6-0xFEB9*/
+        1, 0, 2, 1+2,                 /*0xFEBA-0xFEBD*/
+        1, 0, 2, 1+2,                 /*0xFEBE-0xFEC1*/
+        1, 0, 2, 1+2,                 /*0xFEC2-0xFEC5*/
+        1, 0, 2, 1+2,                 /*0xFEC6-0xFEC9*/
+        1, 0, 2, 1+2,                 /*0xFECA-0xFECD*/
+        1, 0, 2, 1+2,                 /*0xFECE-0xFED1*/
+        1, 0, 2, 1+2,                 /*0xFED2-0xFED5*/
+        1, 0, 2, 1+2,                 /*0xFED6-0xFED9*/
+        1, 0, 2, 1+2,                 /*0xFEDA-0xFEDD*/
+        1, 0, 2, 1+2,                 /*0xFEDE-0xFEE1*/
+        1, 0 + 16, 2 + 16, 1 + 2 +16, /*0xFEE2-0xFEE5*/
+        1 + 16, 0, 2, 1+2,            /*0xFEE6-0xFEE9*/
+        1, 0, 2, 1+2,                 /*0xFEEA-0xFEED*/
+        1, 0, 2, 1+2,                 /*0xFEEE-0xFEF1*/
+        1, 0, 1, 0,                   /*0xFEF2-0xFEF5*/
+        1, 0, 2, 1+2,                 /*0xFEF6-0xFEF9*/
+        1, 0, 1, 0,                   /*0xFEFA-0xFEFD*/
+        1, 0, 1, 0,
+        1
+    };
+
+    private static int[] convertFEto06 = {
+        /***********0******1******2******3******4******5******6******7******8******9******A******B******C******D******E******F***/
+        /*FE7*/   0x64B, 0x64B, 0x64C, 0x64C, 0x64D, 0x64D, 0x64E, 0x64E, 0x64F, 0x64F, 0x650, 0x650, 0x651, 0x651, 0x652, 0x652,
+        /*FE8*/   0x621, 0x622, 0x622, 0x623, 0x623, 0x624, 0x624, 0x625, 0x625, 0x626, 0x626, 0x626, 0x626, 0x627, 0x627, 0x628,
+        /*FE9*/   0x628, 0x628, 0x628, 0x629, 0x629, 0x62A, 0x62A, 0x62A, 0x62A, 0x62B, 0x62B, 0x62B, 0x62B, 0x62C, 0x62C, 0x62C,
+        /*FEA*/   0x62C, 0x62D, 0x62D, 0x62D, 0x62D, 0x62E, 0x62E, 0x62E, 0x62E, 0x62F, 0x62F, 0x630, 0x630, 0x631, 0x631, 0x632,
+        /*FEB*/   0x632, 0x633, 0x633, 0x633, 0x633, 0x634, 0x634, 0x634, 0x634, 0x635, 0x635, 0x635, 0x635, 0x636, 0x636, 0x636,
+        /*FEC*/   0x636, 0x637, 0x637, 0x637, 0x637, 0x638, 0x638, 0x638, 0x638, 0x639, 0x639, 0x639, 0x639, 0x63A, 0x63A, 0x63A,
+        /*FED*/   0x63A, 0x641, 0x641, 0x641, 0x641, 0x642, 0x642, 0x642, 0x642, 0x643, 0x643, 0x643, 0x643, 0x644, 0x644, 0x644,
+        /*FEE*/   0x644, 0x645, 0x645, 0x645, 0x645, 0x646, 0x646, 0x646, 0x646, 0x647, 0x647, 0x647, 0x647, 0x648, 0x648, 0x649,
+        /*FEF*/   0x649, 0x64A, 0x64A, 0x64A, 0x64A, 0x65C, 0x65C, 0x65D, 0x65D, 0x65E, 0x65E, 0x65F, 0x65F
+    };
+
+    private static final int shapeTable[][][] = {
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,1} },
+        { {0,0,2,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} },
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,3} },
+        { {0,0,1,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} }
+    };
+
+    /*
+     * This function shapes European digits to Arabic-Indic digits
+     * in-place, writing over the input characters.  Data is in visual
+     * order.
+     */
+    private void shapeToArabicDigitsWithContext(char[] dest,
+                                                int start,
+                                                int length,
+                                                char digitBase,
+                                                boolean lastStrongWasAL) {
+        UBiDiProps bdp;
+        try {
+            bdp=UBiDiProps.getSingleton();
+        } catch (IOException e) {
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+        }
+        digitBase -= '0'; // move common adjustment out of loop
+
+        for(int i = start + length; --i >= start;) {
+            char ch = dest[i];
+            switch (bdp.getClass(ch)) {
+            case UCharacterDirection.LEFT_TO_RIGHT:
+            case UCharacterDirection.RIGHT_TO_LEFT:
+                lastStrongWasAL = false;
+                break;
+            case UCharacterDirection.RIGHT_TO_LEFT_ARABIC:
+                lastStrongWasAL = true;
+                break;
+            case UCharacterDirection.EUROPEAN_NUMBER:
+                if (lastStrongWasAL && ch <= '\u0039') {
+                    dest[i] = (char)(ch + digitBase);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    /*
+     * Name    : invertBuffer
+     * Function: This function inverts the buffer, it's used
+     *           in case the user specifies the buffer to be
+     *           TEXT_DIRECTION_LOGICAL
+     */
+    private static void invertBuffer(char[] buffer,
+                                     int start,
+                                     int length) {
+
+        for(int i = start, j = start + length - 1; i < j; i++, --j) {
+            char temp = buffer[i];
+            buffer[i] = buffer[j];
+            buffer[j] = temp;
+        }
+    }
+
+    /*
+     * Name    : changeLamAlef
+     * Function: Converts the Alef characters into an equivalent
+     *           LamAlef location in the 0x06xx Range, this is an
+     *           intermediate stage in the operation of the program
+     *           later it'll be converted into the 0xFExx LamAlefs 
+     *           in the shaping function.
+     */
+    private static char changeLamAlef(char ch) {
+        switch(ch) {
+        case '\u0622': return '\u065C';
+        case '\u0623': return '\u065D';
+        case '\u0625': return '\u065E';
+        case '\u0627': return '\u065F';
+        default:  return '\u0000'; // not a lamalef
+        }
+    }
+
+    /*
+     * Name    : specialChar
+     * Function: Special Arabic characters need special handling in the shapeUnicode
+     *           function, this function returns 1 or 2 for these special characters
+     */
+    private static int specialChar(char ch) {
+        if ((ch > '\u0621' && ch < '\u0626') || 
+            (ch == '\u0627') ||
+            (ch > '\u062E' && ch < '\u0633') ||
+            (ch > '\u0647' && ch < '\u064A') ||
+            (ch == '\u0629')) {
+            return 1;
+        } else if (ch >= '\u064B' && ch<= '\u0652') {
+            return 2;
+        } else if (ch >= 0x0653 && ch <= 0x0655 || 
+                   ch == 0x0670 ||
+                   ch >= 0xFE70 && ch <= 0xFE7F) {
+            return 3;
+        } else {
+            return 0;
+        }
+    }
+    
+    /*
+     * Name    : getLink
+     * Function: Resolves the link between the characters as 
+     *           Arabic characters have four forms :
+     *           Isolated, Initial, Middle and Final Form
+     */
+    private static int getLink(char ch) {
+        if (ch >= '\u0622' && ch <= '\u06D3') {
+            return araLink[ch - '\u0622'];
+        } else if (ch == '\u200D') {
+            return 3;
+        } else if (ch >= '\u206D' && ch <= '\u206F') {
+            return 4;
+        } else if (ch >= '\uFE70' && ch <= '\uFEFC') {
+            return presLink[ch - '\uFE70'];
+        } else {
+            return 0;
+        }
+    }
+
+    /*
+     * Name    : countSpaces
+     * Function: Counts the number of spaces
+     *           at each end of the logical buffer
+     */
+    private static int countSpacesLeft(char[] dest, 
+                                       int start,
+                                       int count) {
+        for (int i = start, e = start + count; i < e; ++i) {
+            if (dest[i] != '\u0020') {
+                return i - start;
+            }
+        }
+        return count;
+    }
+
+    private static int countSpacesRight(char[] dest,
+                                        int start,
+                                        int count) {
+
+        for (int i = start + count; --i >= start;) {
+            if (dest[i] != '\u0020') {
+                return start + count - 1 - i;
+            }
+        }
+        return count;
+    }
+
+    /*
+     * Name    : isTashkeelChar
+     * Function: Returns 1 for Tashkeel characters else return 0
+     */
+    private static boolean isTashkeelChar(char ch) {
+        return ch >='\u064B' && ch <= '\u0652';
+    }
+
+    /*
+     * Name    : isAlefChar
+     * Function: Returns 1 for Alef characters else return 0
+     */
+    private static boolean isAlefChar(char ch) {
+        return ch == '\u0622' || ch == '\u0623' || ch == '\u0625' || ch == '\u0627';
+    }
+
+    /*
+     * Name    : isLamAlefChar
+     * Function: Returns 1 for LamAlef characters else return 0
+     */
+    private static boolean isLamAlefChar(char ch) {
+        return ch >= '\uFEF5' && ch <= '\uFEFC';
+    }
+
+    private static boolean isNormalizedLamAlefChar(char ch) {
+        return ch >= '\u065C' && ch <= '\u065F';
+    }
+
+    /*
+     * Name    : calculateSize
+     * Function: This function calculates the destSize to be used in preflighting
+     *           when the destSize is equal to 0
+     */
+    private int calculateSize(char[] source,
+                              int sourceStart,
+                              int sourceLength) {
+    
+        int destSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE:
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            if (isLogical) {
+                for (int i = sourceStart, e = sourceStart + sourceLength - 1; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i+1])) {
+                        --destSize;
+                    }
+                }
+            } else { // visual
+                for(int i = sourceStart + 1, e = sourceStart + sourceLength; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i-1])) {
+                        --destSize;
+                    }
+                }
+            }
+            break;
+
+        case LETTERS_UNSHAPE:
+            for(int i = sourceStart, e = sourceStart + sourceLength; i < e; ++i) {
+                if (isLamAlefChar(source[i])) {
+                    destSize++;
+                }
+            }
+            break;
+
+        default:
+            break;
+        }
+
+        return destSize;
+    }
+
+    /*
+     * Name    : removeLamAlefSpaces
+     * Function: The shapeUnicode function converts Lam + Alef into LamAlef + space,
+     *           this function removes the spaces behind the LamAlefs according to
+     *           the options the user specifies, the spaces are removed to the end
+     *           of the buffer, or shrink the buffer and remove spaces for good
+     *           or leave the buffer as it is LamAlef + space.
+     */
+    private int removeLamAlefSpaces(char[] dest, 
+                                    int start,
+                                    int length) {
+    
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        if (lenOptions == LENGTH_FIXED_SPACES_NEAR) {
+            for (int i = start, e = i + length; i < e; ++i) {
+                if (dest[i] == '\uffff') {
+                    dest[i] = '\u0020';
+                }
+            }
+        } else {
+            final int e = start + length;
+            int w = e;
+            int r = e;
+            while (--r >= start) {
+                char ch = dest[r];
+                if (ch != '\uffff') {
+                    --w;
+                    if (w != r) {
+                        dest[w] = ch;
+                    }
+                }
+            }
+
+            if (lenOptions == LENGTH_FIXED_SPACES_AT_END) {
+                while (w > start) {
+                    dest[--w] = '\u0020';
+                }
+            } else {
+                if (w > start) {
+                    // shift, assume small buffer size so don't use arraycopy
+                    r = w;
+                    w = start;
+                    while (r < e) {
+                        dest[w++] = dest[r++];
+                    }
+                } else {
+                    w = e;
+                }
+                if (lenOptions == LENGTH_GROW_SHRINK) {
+                    length = w - start;
+                } else { // spaces at beginning
+                    while (w < e) {
+                        dest[w++] = '\u0020';
+                    }
+                }
+            }
+        }
+        return length;
+    }
+
+    /*
+     * Name    : expandLamAlef
+     * Function: LamAlef needs special handling as the LamAlef is
+     *           one character while expanding it will give two
+     *           characters Lam + Alef, so we need to expand the LamAlef
+     *           in near or far spaces according to the options the user
+     *           specifies or increase the buffer size.
+     *           Dest has enough room for the expansion if we are growing.
+     *           lamalef are normalized to the 'special characters'
+     */
+    private int expandLamAlef(char[] dest,
+                              int start,
+                              int length,
+                              int lacount) throws ArabicShapingException {
+
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        switch (lenOptions) {
+        case LENGTH_GROW_SHRINK: 
+            {
+                for (int r = start + length, w = r + lacount; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            length += lacount;
+            break;
+
+        case LENGTH_FIXED_SPACES_NEAR: 
+            {
+                if (isNormalizedLamAlefChar(dest[start])) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int i = start + length; --i > start;) { // don't check start, already checked
+                    char ch = dest[i];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        if (dest[i-1] == '\u0020') {
+                            dest[i] = '\u0644';
+                            dest[--i] = convertNormalizedLamAlef[ch - '\u065C'];
+                        } else {
+                            throw new ArabicShapingException("no space for lamalef");
+                        }
+                    }
+                }
+            }
+            break;
+
+        case LENGTH_FIXED_SPACES_AT_END: 
+            {
+                if (lacount > countSpacesLeft(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + lacount, w = start, e = start + length; r < e; ++r) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[w++] = convertNormalizedLamAlef[ch - '\u065C'];
+                        dest[w++] = '\u0644';
+                    } else {
+                        dest[w++] = ch;
+                    }
+                }
+            }
+            break;
+                
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: 
+            {
+                if (lacount > countSpacesRight(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + length - lacount, w = start + length; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            break;
+        }
+
+        return length;
+    }
+
+    /* Convert the input buffer from FExx Range into 06xx Range
+     * to put all characters into the 06xx range
+     * even the lamalef is converted to the special region in
+     * the 06xx range.  Return the number of lamalef chars found.
+     */
+    private int normalize(char[] dest, int start, int length) {
+        int lacount = 0;
+        for (int i = start, e = i + length; i < e; ++i) {
+            char ch = dest[i];
+            if (ch >= '\uFE70' && ch <= '\uFEFC') {
+                if (isLamAlefChar(ch)) {
+                    ++lacount;
+                }
+                dest[i] = (char)convertFEto06[ch - '\uFE70'];
+            }
+        }
+        return lacount;
+    }
+
+    /*
+     * Name    : shapeUnicode
+     * Function: Converts an Arabic Unicode buffer in 06xx Range into a shaped
+     *           arabic Unicode buffer in FExx Range
+     */
+    private int shapeUnicode(char[] dest, 
+                             int start,
+                             int length,
+                             int destSize,
+                             int tashkeelFlag) {
+
+
+        normalize(dest, start, length);
+
+        // resolve the link between the characters.
+        // Arabic characters have four forms: Isolated, Initial, Medial and Final.
+        // Tashkeel characters have two, isolated or medial, and sometimes only isolated.
+        // tashkeelFlag == 0: shape normally, 1: shape isolated, 2: don't shape
+
+        boolean lamalef_found = false;
+        int i = start + length - 1;
+        int currLink = getLink(dest[i]);
+        int nextLink = 0;
+        int prevLink = 0;
+        int lastLink = 0;
+        //int prevPos = i;
+        int lastPos = i;
+        int nx = -2;
+        int nw = 0;
+
+        while (i >= 0) {
+            // If high byte of currLink > 0 then there might be more than one shape
+            if ((currLink & '\uFF00') > 0 || isTashkeelChar(dest[i])) {
+                nw = i - 1;
+                nx = -2;
+                while (nx < 0) { // we need to know about next char
+                    if (nw == -1) {
+                        nextLink = 0;
+                        nx = Integer.MAX_VALUE;
+                    } else {
+                        nextLink = getLink(dest[nw]);
+                        if ((nextLink & IRRELEVANT) == 0) {
+                            nx = nw;
+                        } else {
+                            --nw;
+                        }
+                    }
+                }
+
+                if (((currLink & ALEFTYPE) > 0) && ((lastLink & LAMTYPE) > 0)) {
+                    lamalef_found = true; 
+                    char wLamalef = changeLamAlef(dest[i]); // get from 0x065C-0x065f
+                    if (wLamalef != '\u0000') {
+                        // replace alef by marker, it will be removed later
+                        dest[i] = '\uffff';
+                        dest[lastPos] = wLamalef;
+                        i = lastPos;
+                    }
+
+                    lastLink = prevLink;
+                    currLink = getLink(wLamalef); // requires '\u0000', unfortunately
+                }
+
+                // get the proper shape according to link ability of neighbors
+                // and of character; depends on the order of the shapes
+                // (isolated, initial, middle, final) in the compatibility area
+
+                int flag = specialChar(dest[i]);
+
+                int shape = shapeTable[nextLink & LINK_MASK]
+                    [lastLink & LINK_MASK]
+                    [currLink & LINK_MASK];
+
+                if (flag == 1) {
+                    shape &= 0x1;
+                } else if (flag == 2) {
+                    if (tashkeelFlag == 0 &&
+                        ((lastLink & LINKL) != 0) && 
+                        ((nextLink & LINKR) != 0) && 
+                        dest[i] != '\u064C' && 
+                        dest[i] != '\u064D' &&
+                        !((nextLink & ALEFTYPE) == ALEFTYPE && 
+                          (lastLink & LAMTYPE) == LAMTYPE)) {
+        
+                        shape = 1;
+                    } else {
+                        shape = 0;
+                    }
+                }
+
+                if (flag == 2) {
+                    if (tashkeelFlag < 2) {
+                        dest[i] = (char)('\uFE70' + irrelevantPos[dest[i] - '\u064B'] + shape);
+                    } // else leave tashkeel alone                    
+                } else {
+                    dest[i] = (char)('\uFE70' + (currLink >> 8) + shape);
+                }
+            }
+
+            // move one notch forward
+            if ((currLink & IRRELEVANT) == 0) {
+                prevLink = lastLink;
+                lastLink = currLink;
+                //prevPos = lastPos;
+                lastPos = i;
+            }
+
+            --i;
+            if (i == nx) {
+                currLink = nextLink;
+                nx = -2;
+            } else if (i != -1) {
+                currLink = getLink(dest[i]);
+            }
+        }
+
+        // If we found a lam/alef pair in the buffer 
+        // call removeLamAlefSpaces to remove the spaces that were added
+
+        if (lamalef_found) {
+            destSize = removeLamAlefSpaces(dest, start, length);
+        } else {
+            destSize = length;
+        }
+        
+        return destSize;
+    }
+
+    /*
+     * Name    : deShapeUnicode
+     * Function: Converts an Arabic Unicode buffer in FExx Range into unshaped
+     *           arabic Unicode buffer in 06xx Range
+     */
+    private int deShapeUnicode(char[] dest, 
+                               int start,
+                               int length,
+                               int destSize) throws ArabicShapingException {
+
+        int lamalef_count = normalize(dest, start, length);
+
+        // If there was a lamalef in the buffer call expandLamAlef
+        if (lamalef_count != 0) {
+            // need to adjust dest to fit expanded buffer... !!!
+            destSize = expandLamAlef(dest, start, length, lamalef_count);
+        } else {
+            destSize = length;
+        }
+
+        return destSize;
+    }
+
+    private int internalShape(char[] source, 
+                              int sourceStart,
+                              int sourceLength,
+                              char[] dest,
+                              int destStart,
+                              int destSize) throws ArabicShapingException {
+
+        if (sourceLength == 0) {
+            return 0;
+        }
+
+        if (destSize == 0) {
+            if (((options & LETTERS_MASK) != LETTERS_NOOP) &&
+                ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK)) {
+    
+                return calculateSize(source, sourceStart, sourceLength);
+            } else {
+                return sourceLength; // by definition
+            }
+        }
+
+        // always use temp buffer
+        char[] temp = new char[sourceLength * 2]; // all lamalefs requiring expansion
+        System.arraycopy(source, sourceStart, temp, 0, sourceLength);
+
+        if (isLogical) {
+            invertBuffer(temp, 0, sourceLength);
+        }
+
+        int outputSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 1);
+            break;
+
+        case LETTERS_SHAPE:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 0);
+            break;
+
+        case LETTERS_UNSHAPE:
+            outputSize = deShapeUnicode(temp, 0, sourceLength, destSize);
+            break; 
+
+        default:
+            break;
+        }
+                
+        if (outputSize > destSize) {
+            throw new ArabicShapingException("not enough room for result data");
+        }
+
+        if ((options & DIGITS_MASK) != DIGITS_NOOP) {
+            char digitBase = '\u0030'; // European digits
+            switch (options & DIGIT_TYPE_MASK) {
+            case DIGIT_TYPE_AN:
+                digitBase = '\u0660';  // Arabic-Indic digits
+                break;
+
+            case DIGIT_TYPE_AN_EXTENDED:
+                digitBase = '\u06f0';  // Eastern Arabic-Indic digits (Persian and Urdu)
+                break;
+
+            default:
+                break;
+            }
+
+            switch (options & DIGITS_MASK) {
+            case DIGITS_EN2AN:
+                {
+                    int digitDelta = digitBase - '\u0030';
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= '\u0039' && ch >= '\u0030') {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_AN2EN:
+                {
+                    char digitTop = (char)(digitBase + 9);
+                    int digitDelta = '\u0030' - digitBase;
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= digitTop && ch >= digitBase) {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_EN2AN_INIT_LR:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, false);
+                break;
+
+            case DIGITS_EN2AN_INIT_AL:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, true);
+                break;
+
+            default:
+                break;
+            }
+        }
+
+        if (isLogical) {
+            invertBuffer(temp, 0, outputSize);
+        }
+      
+        System.arraycopy(temp, 0, dest, destStart, outputSize);
+      
+        return outputSize;
+    }
+}
diff --git a/src/com/ibm/icu/text/ArabicShapingException.java b/src/com/ibm/icu/text/ArabicShapingException.java
new file mode 100644
index 0000000..76720e1
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShapingException.java
@@ -0,0 +1,26 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2001-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Thrown by ArabicShaping when there is a shaping error.
+ * @stable ICU 2.0
+ */
+public final class ArabicShapingException extends Exception {
+    // generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 5261531805497260490L;
+    
+    /**
+     * Construct the exception with the given message
+     * @param message the error message for this exception
+     * @stable ICU 3.8
+     */
+    public ArabicShapingException(String message) {
+        super(message);
+    }
+}
diff --git a/src/com/ibm/icu/text/Bidi.java b/src/com/ibm/icu/text/Bidi.java
new file mode 100644
index 0000000..eabf2fa
--- /dev/null
+++ b/src/com/ibm/icu/text/Bidi.java
@@ -0,0 +1,4953 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+/* FOOD FOR THOUGHT: currently the reordering modes are a mixture of
+ * algorithm for direct BiDi, algorithm for inverse Bidi and the bizarre
+ * concept of RUNS_ONLY which is a double operation.
+ * It could be advantageous to divide this into 3 concepts:
+ * a) Operation: direct / inverse / RUNS_ONLY
+ * b) Direct algorithm: default / NUMBERS_SPECIAL / GROUP_NUMBERS_WITH_L
+ * c) Inverse algorithm: default / INVERSE_LIKE_DIRECT / NUMBERS_SPECIAL
+ * This would allow combinations not possible today like RUNS_ONLY with
+ * NUMBERS_SPECIAL.
+ * Also allow to set INSERT_MARKS for the direct step of RUNS_ONLY and
+ * REMOVE_CONTROLS for the inverse step.
+ * Not all combinations would be supported, and probably not all do make sense.
+ * This would need to document which ones are supported and what are the
+ * fallbacks for unsupported combinations.
+ */
+
+//TODO: make sample program do something simple but real and complete
+
+package com.ibm.icu.text;
+
+//#if defined(FOUNDATION10)
+//#else
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+//#endif
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.awt.font.NumericShaper;
+//#endif
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.util.MissingResourceException;
+import java.util.Arrays;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+ *
+ * <h2>Bidi algorithm for ICU</h2>
+ *
+ * This is an implementation of the Unicode Bidirectional algorithm. The
+ * algorithm is defined in the <a
+ * href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+ * version 13, also described in The Unicode Standard, Version 4.0 .
+ * <p>
+ *
+ * Note: Libraries that perform a bidirectional algorithm and reorder strings
+ * accordingly are sometimes called "Storage Layout Engines". ICU's Bidi and
+ * shaping (ArabicShaping) classes can be used at the core of such "Storage
+ * Layout Engines".
+ *
+ * <h3>General remarks about the API:</h3>
+ *
+ * The &quot;limit&quot; of a sequence of characters is the position just after
+ * their last character, i.e., one more than that position.
+ * <p>
+ *
+ * Some of the API methods provide access to &quot;runs&quot;. Such a
+ * &quot;run&quot; is defined as a sequence of characters that are at the same
+ * embedding level after performing the Bidi algorithm.
+ * <p>
+ *
+ * <h3>Basic concept: paragraph</h3>
+ * A piece of text can be divided into several paragraphs by characters
+ * with the Bidi class <code>Block Separator</code>. For handling of
+ * paragraphs, see:
+ * <ul>
+ * <li>{@link #countParagraphs}
+ * <li>{@link #getParaLevel}
+ * <li>{@link #getParagraph}
+ * <li>{@link #getParagraphByIndex}
+ * </ul>
+ *
+ * <h3>Basic concept: text direction</h3>
+ * The direction of a piece of text may be:
+ * <ul>
+ * <li>{@link #LTR}
+ * <li>{@link #RTL}
+ * <li>{@link #MIXED}
+ * </ul>
+ *
+ * <h3>Basic concept: levels</h3>
+ *
+ * Levels in this API represent embedding levels according to the Unicode
+ * Bidirectional Algorithm.
+ * Their low-order bit (even/odd value) indicates the visual direction.<p>
+ *
+ * Levels can be abstract values when used for the
+ * <code>paraLevel</code> and <code>embeddingLevels</code>
+ * arguments of <code>setPara()</code>; there:
+ * <ul>
+ * <li>the high-order bit of an <code>embeddingLevels[]</code>
+ * value indicates whether the using application is
+ * specifying the level of a character to <i>override</i> whatever the
+ * Bidi implementation would resolve it to.</li>
+ * <li><code>paraLevel</code> can be set to the
+ * pseudo-level values <code>LEVEL_DEFAULT_LTR</code>
+ * and <code>LEVEL_DEFAULT_RTL</code>.</li>
+ * </ul>
+ *
+ * <p>The related constants are not real, valid level values.
+ * <code>DEFAULT_XXX</code> can be used to specify
+ * a default for the paragraph level for
+ * when the <code>setPara()</code> method
+ * shall determine it but there is no
+ * strongly typed character in the input.<p>
+ *
+ * Note that the value for <code>LEVEL_DEFAULT_LTR</code> is even
+ * and the one for <code>LEVEL_DEFAULT_RTL</code> is odd,
+ * just like with normal LTR and RTL level values -
+ * these special values are designed that way. Also, the implementation
+ * assumes that MAX_EXPLICIT_LEVEL is odd.
+ *
+ * <ul><b>See Also:</b>
+ * <li>{@link #LEVEL_DEFAULT_LTR}
+ * <li>{@link #LEVEL_DEFAULT_RTL}
+ * <li>{@link #LEVEL_OVERRIDE}
+ * <li>{@link #MAX_EXPLICIT_LEVEL}
+ * <li>{@link #setPara}
+ * </ul>
+ *
+ * <h3>Basic concept: Reordering Mode</h3>
+ * Reordering mode values indicate which variant of the Bidi algorithm to
+ * use.
+ *
+ * <ul><b>See Also:</b>
+ * <li>{@link #setReorderingMode}
+ * <li>{@link #REORDER_DEFAULT}
+ * <li>{@link #REORDER_NUMBERS_SPECIAL}
+ * <li>{@link #REORDER_GROUP_NUMBERS_WITH_R}
+ * <li>{@link #REORDER_RUNS_ONLY}
+ * <li>{@link #REORDER_INVERSE_NUMBERS_AS_L}
+ * <li>{@link #REORDER_INVERSE_LIKE_DIRECT}
+ * <li>{@link #REORDER_INVERSE_FOR_NUMBERS_SPECIAL}
+ * </ul>
+ *
+ * <h3>Basic concept: Reordering Options</h3>
+ * Reordering options can be applied during Bidi text transformations.
+ * <ul><b>See Also:</b>
+ * <li>{@link #setReorderingOptions}
+ * <li>{@link #OPTION_DEFAULT}
+ * <li>{@link #OPTION_INSERT_MARKS}
+ * <li>{@link #OPTION_REMOVE_CONTROLS}
+ * <li>{@link #OPTION_STREAMING}
+ * </ul>
+ *
+ *
+ * @author Simon Montagu, Matitiahu Allouche (ported from C code written by Markus W. Scherer)
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ *
+ *
+ * <h4> Sample code for the ICU Bidi API </h4>
+ *
+ * <h5>Rendering a paragraph with the ICU Bidi API</h5>
+ *
+ * This is (hypothetical) sample code that illustrates how the ICU Bidi API
+ * could be used to render a paragraph of text. Rendering code depends highly on
+ * the graphics system, therefore this sample code must make a lot of
+ * assumptions, which may or may not match any existing graphics system's
+ * properties.
+ *
+ * <p>
+ * The basic assumptions are:
+ * </p>
+ * <ul>
+ * <li>Rendering is done from left to right on a horizontal line.</li>
+ * <li>A run of single-style, unidirectional text can be rendered at once.
+ * </li>
+ * <li>Such a run of text is passed to the graphics system with characters
+ * (code units) in logical order.</li>
+ * <li>The line-breaking algorithm is very complicated and Locale-dependent -
+ * and therefore its implementation omitted from this sample code.</li>
+ * </ul>
+ *
+ * <pre>
+ *
+ *  package com.ibm.icu.dev.test.bidi;
+ *
+ *  import com.ibm.icu.text.Bidi;
+ *  import com.ibm.icu.text.BidiRun;
+ *
+ *  public class Sample {
+ *
+ *      static final int styleNormal = 0;
+ *      static final int styleSelected = 1;
+ *      static final int styleBold = 2;
+ *      static final int styleItalics = 4;
+ *      static final int styleSuper=8;
+ *      static final int styleSub = 16;
+ *
+ *      static class StyleRun {
+ *          int limit;
+ *          int style;
+ *
+ *          public StyleRun(int limit, int style) {
+ *              this.limit = limit;
+ *              this.style = style;
+ *          }
+ *      }
+ *
+ *      static class Bounds {
+ *          int start;
+ *          int limit;
+ *
+ *          public Bounds(int start, int limit) {
+ *              this.start = start;
+ *              this.limit = limit;
+ *          }
+ *      }
+ *
+ *      static int getTextWidth(String text, int start, int limit,
+ *                              StyleRun[] styleRuns, int styleRunCount) {
+ *          // simplistic way to compute the width
+ *          return limit - start;
+ *      }
+ *
+ *      // set limit and StyleRun limit for a line
+ *      // from text[start] and from styleRuns[styleRunStart]
+ *      // using Bidi.getLogicalRun(...)
+ *      // returns line width
+ *      static int getLineBreak(String text, Bounds line, Bidi para,
+ *                              StyleRun styleRuns[], Bounds styleRun) {
+ *          // dummy return
+ *          return 0;
+ *      }
+ *
+ *      // render runs on a line sequentially, always from left to right
+ *
+ *      // prepare rendering a new line
+ *      static void startLine(byte textDirection, int lineWidth) {
+ *          System.out.println();
+ *      }
+ *
+ *      // render a run of text and advance to the right by the run width
+ *      // the text[start..limit-1] is always in logical order
+ *      static void renderRun(String text, int start, int limit,
+ *                            byte textDirection, int style) {
+ *      }
+ *
+ *      // We could compute a cross-product
+ *      // from the style runs with the directional runs
+ *      // and then reorder it.
+ *      // Instead, here we iterate over each run type
+ *      // and render the intersections -
+ *      // with shortcuts in simple (and common) cases.
+ *      // renderParagraph() is the main function.
+ *
+ *      // render a directional run with
+ *      // (possibly) multiple style runs intersecting with it
+ *      static void renderDirectionalRun(String text, int start, int limit,
+ *                                       byte direction, StyleRun styleRuns[],
+ *                                       int styleRunCount) {
+ *          int i;
+ *
+ *          // iterate over style runs
+ *          if (direction == Bidi.LTR) {
+ *              int styleLimit;
+ *              for (i = 0; i < styleRunCount; ++i) {
+ *                  styleLimit = styleRuns[i].limit;
+ *                  if (start < styleLimit) {
+ *                      if (styleLimit > limit) {
+ *                          styleLimit = limit;
+ *                      }
+ *                      renderRun(text, start, styleLimit,
+ *                                direction, styleRuns[i].style);
+ *                      if (styleLimit == limit) {
+ *                          break;
+ *                      }
+ *                      start = styleLimit;
+ *                  }
+ *              }
+ *          } else {
+ *              int styleStart;
+ *
+ *              for (i = styleRunCount-1; i >= 0; --i) {
+ *                  if (i > 0) {
+ *                      styleStart = styleRuns[i-1].limit;
+ *                  } else {
+ *                      styleStart = 0;
+ *                  }
+ *                  if (limit >= styleStart) {
+ *                      if (styleStart < start) {
+ *                          styleStart = start;
+ *                      }
+ *                      renderRun(text, styleStart, limit, direction,
+ *                                styleRuns[i].style);
+ *                      if (styleStart == start) {
+ *                          break;
+ *                      }
+ *                      limit = styleStart;
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      // the line object represents text[start..limit-1]
+ *      static void renderLine(Bidi line, String text, int start, int limit,
+ *                             StyleRun styleRuns[], int styleRunCount) {
+ *          byte direction = line.getDirection();
+ *          if (direction != Bidi.MIXED) {
+ *              // unidirectional
+ *              if (styleRunCount <= 1) {
+ *                  renderRun(text, start, limit, direction, styleRuns[0].style);
+ *              } else {
+ *                  renderDirectionalRun(text, start, limit, direction,
+ *                                       styleRuns, styleRunCount);
+ *              }
+ *          } else {
+ *              // mixed-directional
+ *              int count, i;
+ *              BidiRun run;
+ *
+ *              try {
+ *                  count = line.countRuns();
+ *              } catch (IllegalStateException e) {
+ *                  e.printStackTrace();
+ *                  return;
+ *              }
+ *              if (styleRunCount <= 1) {
+ *                  int style = styleRuns[0].style;
+ *
+ *                  // iterate over directional runs
+ *                  for (i = 0; i < count; ++i) {
+ *                      run = line.getVisualRun(i);
+ *                      renderRun(text, run.getStart(), run.getLimit(),
+ *                                run.getDirection(), style);
+ *                  }
+ *              } else {
+ *                  // iterate over both directional and style runs
+ *                  for (i = 0; i < count; ++i) {
+ *                      run = line.getVisualRun(i);
+ *                      renderDirectionalRun(text, run.getStart(),
+ *                                           run.getLimit(), run.getDirection(),
+ *                                           styleRuns, styleRunCount);
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      static void renderParagraph(String text, byte textDirection,
+ *                                  StyleRun styleRuns[], int styleRunCount,
+ *                                  int lineWidth) {
+ *          int length = text.length();
+ *          Bidi para = new Bidi();
+ *          try {
+ *              para.setPara(text,
+ *                           textDirection != 0 ? Bidi.LEVEL_DEFAULT_RTL
+ *                                              : Bidi.LEVEL_DEFAULT_LTR,
+ *                           null);
+ *          } catch (Exception e) {
+ *              e.printStackTrace();
+ *              return;
+ *          }
+ *          byte paraLevel = (byte)(1 & para.getParaLevel());
+ *          StyleRun styleRun = new StyleRun(length, styleNormal);
+ *
+ *          if (styleRuns == null || styleRunCount <= 0) {
+ *              styleRuns = new StyleRun[1];
+ *              styleRunCount = 1;
+ *              styleRuns[0] = styleRun;
+ *          }
+ *          // assume styleRuns[styleRunCount-1].limit>=length
+ *
+ *          int width = getTextWidth(text, 0, length, styleRuns, styleRunCount);
+ *          if (width <= lineWidth) {
+ *              // everything fits onto one line
+ *
+ *              // prepare rendering a new line from either left or right
+ *              startLine(paraLevel, width);
+ *
+ *              renderLine(para, text, 0, length, styleRuns, styleRunCount);
+ *          } else {
+ *              // we need to render several lines
+ *              Bidi line = new Bidi(length, 0);
+ *              int start = 0, limit;
+ *              int styleRunStart = 0, styleRunLimit;
+ *
+ *              for (;;) {
+ *                  limit = length;
+ *                  styleRunLimit = styleRunCount;
+ *                  width = getLineBreak(text, new Bounds(start, limit),
+ *                                       para, styleRuns,
+ *                                       new Bounds(styleRunStart, styleRunLimit));
+ *                  try {
+ *                      line = para.setLine(start, limit);
+ *                  } catch (Exception e) {
+ *                      e.printStackTrace();
+ *                      return;
+ *                  }
+ *                  // prepare rendering a new line
+ *                  // from either left or right
+ *                  startLine(paraLevel, width);
+ *
+ *                  if (styleRunStart > 0) {
+ *                      int newRunCount = styleRuns.length - styleRunStart;
+ *                      StyleRun[] newRuns = new StyleRun[newRunCount];
+ *                      System.arraycopy(styleRuns, styleRunStart, newRuns, 0,
+ *                                       newRunCount);
+ *                      renderLine(line, text, start, limit, newRuns,
+ *                                 styleRunLimit - styleRunStart);
+ *                  } else {
+ *                      renderLine(line, text, start, limit, styleRuns,
+ *                                 styleRunLimit - styleRunStart);
+ *                  }
+ *                  if (limit == length) {
+ *                      break;
+ *                  }
+ *                  start = limit;
+ *                  styleRunStart = styleRunLimit - 1;
+ *                  if (start >= styleRuns[styleRunStart].limit) {
+ *                      ++styleRunStart;
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      public static void main(String[] args)
+ *      {
+ *          renderParagraph("Some Latin text...", Bidi.LTR, null, 0, 80);
+ *          renderParagraph("Some Hebrew text...", Bidi.RTL, null, 0, 60);
+ *      }
+ *  }
+ *
+ * </pre>
+ */
+
+public class Bidi {
+
+    class Point {
+        int pos;    /* position in text */
+        int flag;   /* flag for LRM/RLM, before/after */
+    }
+
+    class InsertPoints {
+        int size;
+        int confirmed;
+        Point[] points = new Point[0];
+    }
+
+    /** Paragraph level setting<p>
+     *
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present,
+     * then set the paragraph level to 0 (left-to-right).<p>
+     *
+     * If this value is used in conjunction with reordering modes
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code> or
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
+     * is assumed to be visual LTR, and the text after reordering is required
+     * to be the corresponding logical string with appropriate contextual
+     * direction. The direction of the result string will be RTL if either
+     * the righmost or leftmost strong character of the source text is RTL
+     * or Arabic Letter, the direction will be LTR otherwise.<p>
+     *
+     * If reordering option <code>OPTION_INSERT_MARKS</code> is set, an RLM may
+     * be added at the beginning of the result string to ensure round trip
+     * (that the result string, when reordered back to visual, will produce
+     * the original source text).
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_DEFAULT_LTR = (byte)0x7e;
+
+    /** Paragraph level setting<p>
+     *
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present,
+     * then set the paragraph level to 1 (right-to-left).<p>
+     *
+     * If this value is used in conjunction with reordering modes
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code> or
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
+     * is assumed to be visual LTR, and the text after reordering is required
+     * to be the corresponding logical string with appropriate contextual
+     * direction. The direction of the result string will be RTL if either
+     * the righmost or leftmost strong character of the source text is RTL
+     * or Arabic Letter, or if the text contains no strong character;
+     * the direction will be LTR otherwise.<p>
+     *
+     * If reordering option <code>OPTION_INSERT_MARKS</code> is set, an RLM may
+     * be added at the beginning of the result string to ensure round trip
+     * (that the result string, when reordered back to visual, will produce
+     * the original source text).
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_DEFAULT_RTL = (byte)0x7f;
+
+    /**
+     * Maximum explicit embedding level.
+     * (The maximum resolved level can be up to <code>MAX_EXPLICIT_LEVEL+1</code>).
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte MAX_EXPLICIT_LEVEL = 61;
+
+    /**
+     * Bit flag for level input.
+     * Overrides directional properties.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_OVERRIDE = (byte)0x80;
+
+    /**
+     * Special value which can be returned by the mapping methods when a
+     * logical index has no corresponding visual index or vice-versa. This may
+     * happen for the logical-to-visual mapping of a Bidi control when option
+     * <code>OPTION_REMOVE_CONTROLS</code> is
+     * specified. This can also happen for the visual-to-logical mapping of a
+     * Bidi mark (LRM or RLM) inserted by option
+     * <code>OPTION_INSERT_MARKS</code>.
+     * @see #getVisualIndex
+     * @see #getVisualMap
+     * @see #getLogicalIndex
+     * @see #getLogicalMap
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MAP_NOWHERE = -1;
+
+    /**
+     * All left-to-right text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LTR = 0;
+    /**
+     * All right-to-left text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte RTL = 1;
+    /**
+     * Mixed-directional text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte MIXED = 2;
+
+    /**
+     * option bit for writeReordered():
+     * keep combining characters after their base characters in RTL runs
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short KEEP_BASE_COMBINING = 1;
+
+    /**
+     * option bit for writeReordered():
+     * replace characters with the "mirrored" property in RTL runs
+     * by their mirror-image mappings
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short DO_MIRRORING = 2;
+
+    /**
+     * option bit for writeReordered():
+     * surround the run with LRMs if necessary;
+     * this is part of the approximate "inverse Bidi" algorithm
+     *
+     * <p>This option does not imply corresponding adjustment of the index
+     * mappings.</p>
+     *
+     * @see #setInverse
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short INSERT_LRM_FOR_NUMERIC = 4;
+
+    /**
+     * option bit for writeReordered():
+     * remove Bidi control characters
+     * (this does not affect INSERT_LRM_FOR_NUMERIC)
+     *
+     * <p>This option does not imply corresponding adjustment of the index
+     * mappings.</p>
+     *
+     * @see #writeReordered
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REMOVE_BIDI_CONTROLS = 8;
+
+    /**
+     * option bit for writeReordered():
+     * write the output in reverse order
+     *
+     * <p>This has the same effect as calling <code>writeReordered()</code>
+     * first without this option, and then calling
+     * <code>writeReverse()</code> without mirroring.
+     * Doing this in the same step is faster and avoids a temporary buffer.
+     * An example for using this option is output to a character terminal that
+     * is designed for RTL scripts and stores text in reverse order.</p>
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short OUTPUT_REVERSE = 16;
+
+    /** Reordering mode: Regular Logical to Visual Bidi algorithm according to Unicode.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_DEFAULT = 0;
+
+    /** Reordering mode: Logical to Visual algorithm which handles numbers in
+     * a way which mimicks the behavior of Windows XP.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_NUMBERS_SPECIAL = 1;
+
+    /** Reordering mode: Logical to Visual algorithm grouping numbers with
+     * adjacent R characters (reversible algorithm).
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_GROUP_NUMBERS_WITH_R = 2;
+
+    /** Reordering mode: Reorder runs only to transform a Logical LTR string
+     * to the logical RTL string with the same display, or vice-versa.<br>
+     * If this mode is set together with option
+     * <code>OPTION_INSERT_MARKS</code>, some Bidi controls in the source
+     * text may be removed and other controls may be added to produce the
+     * minimum combination which has the required display.
+     * @see #OPTION_INSERT_MARKS
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_RUNS_ONLY = 3;
+
+    /** Reordering mode: Visual to Logical algorithm which handles numbers
+     * like L (same algorithm as selected by <code>setInverse(true)</code>.
+     * @see #setInverse
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_NUMBERS_AS_L = 4;
+
+    /** Reordering mode: Visual to Logical algorithm equivalent to the regular
+     * Logical to Visual algorithm.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_LIKE_DIRECT = 5;
+
+    /** Reordering mode: Inverse Bidi (Visual to Logical) algorithm for the
+     * <code>REORDER_NUMBERS_SPECIAL</code> Bidi algorithm.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_FOR_NUMBERS_SPECIAL = 6;
+
+    /*  Number of values for reordering mode. */
+    static final short REORDER_COUNT = 7;
+
+    /* Reordering mode values must be ordered so that all the regular logical to
+     * visual modes come first, and all inverse Bidi modes come last.
+     */
+    static final short REORDER_LAST_LOGICAL_TO_VISUAL =
+            REORDER_NUMBERS_SPECIAL;
+
+    /**
+     * Option value for <code>setReorderingOptions</code>:
+     * disable all the options which can be set with this method
+     * @see #setReorderingOptions
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_DEFAULT = 0;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * insert Bidi marks (LRM or RLM) when needed to ensure correct result of
+     * a reordering to a Logical order
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option is significant only with reordering modes which generate
+     * a result with Logical order, specifically.</p>
+     * <ul>
+     *   <li><code>REORDER_RUNS_ONLY</code></li>
+     *   <li><code>REORDER_INVERSE_NUMBERS_AS_L</code></li>
+     *   <li><code>REORDER_INVERSE_LIKE_DIRECT</code></li>
+     *   <li><code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code></li>
+     * </ul>
+     *
+     * <p>If this option is set in conjunction with reordering mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
+     * <code>setInverse(true)</code>, it implies option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code>.</p>
+     *
+     * <p>For other reordering modes, a minimum number of LRM or RLM characters
+     * will be added to the source text after reordering it so as to ensure
+     * round trip, i.e. when applying the inverse reordering mode on the
+     * resulting logical text with removal of Bidi marks
+     * (option <code>OPTION_REMOVE_CONTROLS</code> set before calling
+     * <code>setPara()</code> or option
+     * <code>REMOVE_BIDI_CONTROLS</code> in
+     * <code>writeReordered</code>), the result will be identical to the
+     * source text in the first transformation.
+     *
+     * <p>This option will be ignored if specified together with option
+     * <code>OPTION_REMOVE_CONTROLS</code>. It inhibits option
+     * <code>REMOVE_BIDI_CONTROLS</code> in calls to method
+     * <code>writeReordered()</code> and it implies option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code> if the reordering mode is
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>.</p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #REMOVE_BIDI_CONTROLS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #REORDER_RUNS_ONLY
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_INSERT_MARKS = 1;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * remove Bidi control characters
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option nullifies option
+     * <code>OPTION_INSERT_MARKS</code>. It inhibits option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code> and it implies option
+     * <code>REMOVE_BIDI_CONTROLS</code> in calls to that method.</p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #OPTION_INSERT_MARKS
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #REMOVE_BIDI_CONTROLS
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_REMOVE_CONTROLS = 2;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * process the output as part of a stream to be continued
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option specifies that the caller is interested in processing
+     * large text object in parts. The results of the successive calls are
+     * expected to be concatenated by the caller. Only the call for the last
+     * part will have this option bit off.</p>
+     *
+     * <p>When this option bit is on, <code>setPara()</code> may process
+     * less than the full source text in order to truncate the text at a
+     * meaningful boundary. The caller should call
+     * <code>getProcessedLength()</code> immediately after calling
+     * <code>setPara()</code> in order to determine how much of the source
+     * text has been processed. Source text beyond that length should be
+     * resubmitted in following calls to <code>setPara</code>. The
+     * processed length may be less than the length of the source text if a
+     * character preceding the last character of the source text constitutes a
+     * reasonable boundary (like a block separator) for text to be continued.<br>
+     * If the last character of the source text constitutes a reasonable
+     * boundary, the whole text will be processed at once.<br>
+     * If nowhere in the source text there exists
+     * such a reasonable boundary, the processed length will be zero.<br>
+     * The caller should check for such an occurrence and do one of the following:
+     * <ul><li>submit a larger amount of text with a better chance to include
+     *         a reasonable boundary.</li>
+     *     <li>resubmit the same text after turning off option
+     *         <code>OPTION_STREAMING</code>.</li></ul>
+     * In all cases, this option should be turned off before processing the last
+     * part of the text.</p>
+     *
+     * <p>When the <code>OPTION_STREAMING</code> option is used, it is
+     * recommended to call <code>orderParagraphsLTR()</code> with argument
+     * <code>orderParagraphsLTR</code> set to <code>true</code> before calling
+     * <code>setPara()</code> so that later paragraphs may be concatenated to
+     * previous paragraphs on the right.
+     * </p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #getProcessedLength
+     * @see #orderParagraphsLTR
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_STREAMING = 4;
+
+    /*
+     *   Comparing the description of the Bidi algorithm with this implementation
+     *   is easier with the same names for the Bidi types in the code as there.
+     *   See UCharacterDirection
+     */
+    static final byte L   = UCharacterDirection.LEFT_TO_RIGHT;
+    static final byte R   = UCharacterDirection.RIGHT_TO_LEFT;
+    static final byte EN  = UCharacterDirection.EUROPEAN_NUMBER;
+    static final byte ES  = UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR;
+    static final byte ET  = UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR;
+    static final byte AN  = UCharacterDirection.ARABIC_NUMBER;
+    static final byte CS  = UCharacterDirection.COMMON_NUMBER_SEPARATOR;
+    static final byte B   = UCharacterDirection.BLOCK_SEPARATOR;
+    static final byte S   = UCharacterDirection.SEGMENT_SEPARATOR;
+    static final byte WS  = UCharacterDirection.WHITE_SPACE_NEUTRAL;
+    static final byte ON  = UCharacterDirection.OTHER_NEUTRAL;
+    static final byte LRE = UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING;
+    static final byte LRO = UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE;
+    static final byte AL  = UCharacterDirection.RIGHT_TO_LEFT_ARABIC;
+    static final byte RLE = UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING;
+    static final byte RLO = UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE;
+    static final byte PDF = UCharacterDirection.POP_DIRECTIONAL_FORMAT;
+    static final byte NSM = UCharacterDirection.DIR_NON_SPACING_MARK;
+    static final byte BN  = UCharacterDirection.BOUNDARY_NEUTRAL;
+
+    static final int MASK_R_AL = (1 << R | 1 << AL);
+
+    /**
+     * Value returned by <code>BidiClassifier</code> when there is no need to
+     * override the standard Bidi class for a given code point.
+     * @see BidiClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CLASS_DEFAULT = UCharacterDirection
+                                            .CHAR_DIRECTION_COUNT;
+
+    private static final char CR = '\r';
+    private static final char LF = '\n';
+
+    static final int LRM_BEFORE = 1;
+    static final int LRM_AFTER = 2;
+    static final int RLM_BEFORE = 4;
+    static final int RLM_AFTER = 8;
+
+    /*
+     * reference to parent paragraph object (reference to self if this object is
+     * a paragraph object); set to null in a newly opened object; set to a
+     * real value after a successful execution of setPara or setLine
+     */
+    Bidi                paraBidi;
+
+    final UBiDiProps    bdp;
+
+    /* character array representing the current text */
+    char[]              text;
+
+    /* length of the current text */
+    int                 originalLength;
+
+    /* if the option OPTION_STREAMING is set, this is the length of
+     * text actually processed by <code>setPara</code>, which may be shorter
+     * than the original length. Otherwise, it is identical to the original
+     * length.
+     */
+    int                 length;
+
+    /* if option OPTION_REMOVE_CONTROLS is set, and/or Bidi
+     * marks are allowed to be inserted in one of the reordering modes, the
+     * length of the result string may be different from the processed length.
+     */
+    int                 resultLength;
+
+    /* indicators for whether memory may be allocated after construction */
+    boolean             mayAllocateText;
+    boolean             mayAllocateRuns;
+
+    /* arrays with one value per text-character */
+    byte[]              dirPropsMemory = new byte[1];
+    byte[]              levelsMemory = new byte[1];
+    byte[]              dirProps;
+    byte[]              levels;
+
+    /* are we performing an approximation of the "inverse Bidi" algorithm? */
+    boolean             isInverse;
+
+    /* are we using the basic algorithm or its variation? */
+    int                 reorderingMode;
+
+    /* bitmask for reordering options */
+    int                 reorderingOptions;
+
+    /* must block separators receive level 0? */
+    boolean             orderParagraphsLTR;
+
+    /* the paragraph level */
+    byte                paraLevel;
+    /* original paraLevel when contextual */
+    /* must be one of DEFAULT_xxx or 0 if not contextual */
+    byte                defaultParaLevel;
+
+    /* the following is set in setPara, used in processPropertySeq */
+
+    ImpTabPair          impTabPair;  /* reference to levels state table pair */
+    /* the overall paragraph or line directionality*/
+    byte                direction;
+
+    /* flags is a bit set for which directional properties are in the text */
+    int                 flags;
+
+    /* lastArabicPos is index to the last AL in the text, -1 if none */
+    int                 lastArabicPos;
+
+    /* characters after trailingWSStart are WS and are */
+    /* implicitly at the paraLevel (rule (L1)) - levels may not reflect that */
+    int                 trailingWSStart;
+
+    /* fields for paragraph handling */
+    int                 paraCount;       /* set in getDirProps() */
+    int[]               parasMemory = new int[1];
+    int[]               paras;           /* limits of paragraphs, filled in
+                                          ResolveExplicitLevels() or CheckExplicitLevels() */
+
+    /* for single paragraph text, we only need a tiny array of paras (no allocation) */
+    int[]               simpleParas = {0};
+
+    /* fields for line reordering */
+    int                 runCount;     /* ==-1: runs not set up yet */
+    BidiRun[]           runsMemory = new BidiRun[0];
+    BidiRun[]           runs;
+
+    /* for non-mixed text, we only need a tiny array of runs (no allocation) */
+    BidiRun[]           simpleRuns = {new BidiRun()};
+
+    /* mapping of runs in logical order to visual order */
+    int[]               logicalToVisualRunsMap;
+    /* flag to indicate that the map has been updated */
+    boolean             isGoodLogicalToVisualRunsMap;
+
+    /* customized class provider */
+    BidiClassifier      customClassifier = null;
+
+    /* for inverse Bidi with insertion of directional marks */
+    InsertPoints        insertPoints = new InsertPoints();
+
+    /* for option OPTION_REMOVE_CONTROLS */
+    int                 controlCount;
+
+    /*
+     * Sometimes, bit values are more appropriate
+     * to deal with directionality properties.
+     * Abbreviations in these method names refer to names
+     * used in the Bidi algorithm.
+     */
+    static int DirPropFlag(byte dir) {
+        return (1 << dir);
+    }
+
+    boolean testDirPropFlagAt(int flag, int index) {
+        return ((DirPropFlag((byte)(dirProps[index]&~CONTEXT_RTL)) & flag) != 0);
+    }
+
+    /*
+     * The following bit is ORed to the property of characters in paragraphs
+     * with contextual RTL direction when paraLevel is contextual.
+     */
+    static final byte CONTEXT_RTL_SHIFT = 6;
+    static final byte CONTEXT_RTL = (byte)(1<<CONTEXT_RTL_SHIFT);   // 0x40
+    static byte NoContextRTL(byte dir)
+    {
+        return (byte)(dir & ~CONTEXT_RTL);
+    }
+
+    /*
+     * The following is a variant of DirProp.DirPropFlag() which ignores the
+     * CONTEXT_RTL bit.
+     */
+    static int DirPropFlagNC(byte dir) {
+        return (1<<(dir & ~CONTEXT_RTL));
+    }
+
+    static final int DirPropFlagMultiRuns = DirPropFlag((byte)31);
+
+    /* to avoid some conditional statements, use tiny constant arrays */
+    static final int DirPropFlagLR[] = { DirPropFlag(L), DirPropFlag(R) };
+    static final int DirPropFlagE[] = { DirPropFlag(LRE), DirPropFlag(RLE) };
+    static final int DirPropFlagO[] = { DirPropFlag(LRO), DirPropFlag(RLO) };
+
+    static final int DirPropFlagLR(byte level) { return DirPropFlagLR[level & 1]; }
+    static final int DirPropFlagE(byte level)  { return DirPropFlagE[level & 1]; }
+    static final int DirPropFlagO(byte level)  { return DirPropFlagO[level & 1]; }
+
+    /*
+     *  are there any characters that are LTR?
+     */
+    static final int MASK_LTR =
+        DirPropFlag(L)|DirPropFlag(EN)|DirPropFlag(AN)|DirPropFlag(LRE)|DirPropFlag(LRO);
+
+    /*
+     *  are there any characters that are RTL?
+     */
+    static final int MASK_RTL = DirPropFlag(R)|DirPropFlag(AL)|DirPropFlag(RLE)|DirPropFlag(RLO);
+
+    /* explicit embedding codes */
+    static final int MASK_LRX = DirPropFlag(LRE)|DirPropFlag(LRO);
+    static final int MASK_RLX = DirPropFlag(RLE)|DirPropFlag(RLO);
+    static final int MASK_OVERRIDE = DirPropFlag(LRO)|DirPropFlag(RLO);
+    static final int MASK_EXPLICIT = MASK_LRX|MASK_RLX|DirPropFlag(PDF);
+    static final int MASK_BN_EXPLICIT = DirPropFlag(BN)|MASK_EXPLICIT;
+
+    /* paragraph and segment separators */
+    static final int MASK_B_S = DirPropFlag(B)|DirPropFlag(S);
+
+    /* all types that are counted as White Space or Neutral in some steps */
+    static final int MASK_WS = MASK_B_S|DirPropFlag(WS)|MASK_BN_EXPLICIT;
+    static final int MASK_N = DirPropFlag(ON)|MASK_WS;
+
+    /* all types that are included in a sequence of
+     * European Terminators for (W5) */
+    static final int MASK_ET_NSM_BN = DirPropFlag(ET)|DirPropFlag(NSM)|MASK_BN_EXPLICIT;
+
+    /* types that are neutrals or could becomes neutrals in (Wn) */
+    static final int MASK_POSSIBLE_N = DirPropFlag(CS)|DirPropFlag(ES)|DirPropFlag(ET)|MASK_N;
+
+    /*
+     * These types may be changed to "e",
+     * the embedding type (L or R) of the run,
+     * in the Bidi algorithm (N2)
+     */
+    static final int MASK_EMBEDDING = DirPropFlag(NSM)|MASK_POSSIBLE_N;
+
+    /*
+     *  the dirProp's L and R are defined to 0 and 1 values in UCharacterDirection.java
+     */
+    static byte GetLRFromLevel(byte level)
+    {
+        return (byte)(level & 1);
+    }
+
+    static boolean IsDefaultLevel(byte level)
+    {
+        return ((level & LEVEL_DEFAULT_LTR) == LEVEL_DEFAULT_LTR);
+    }
+
+    byte GetParaLevelAt(int index)
+    {
+        return (defaultParaLevel != 0) ?
+                (byte)(dirProps[index]>>CONTEXT_RTL_SHIFT) : paraLevel;
+    }
+
+    static boolean IsBidiControlChar(int c)
+    {
+        /* check for range 0x200c to 0x200f (ZWNJ, ZWJ, LRM, RLM) or
+                           0x202a to 0x202e (LRE, RLE, PDF, LRO, RLO) */
+        return (((c & 0xfffffffc) == 0x200c) || ((c >= 0x202a) && (c <= 0x202e)));
+    }
+
+    void verifyValidPara()
+    {
+        if (!(this == this.paraBidi)) {
+            throw new IllegalStateException();
+        }
+    }
+
+    void verifyValidParaOrLine()
+    {
+        Bidi para = this.paraBidi;
+        /* verify Para */
+        if (this == para) {
+            return;
+        }
+        /* verify Line */
+        if ((para == null) || (para != para.paraBidi)) {
+            throw new IllegalStateException();
+        }
+    }
+
+    void verifyRange(int index, int start, int limit)
+    {
+        if (index < start || index >= limit) {
+            throw new IllegalArgumentException("Value " + index +
+                      " is out of range " + start + " to " + limit);
+        }
+    }
+
+    /**
+     * Allocate a <code>Bidi</code> object.
+     * Such an object is initially empty. It is assigned
+     * the Bidi properties of a piece of text containing one or more paragraphs
+     * by <code>setPara()</code>
+     * or the Bidi properties of a line within a paragraph by
+     * <code>setLine()</code>.<p>
+     * This object can be reused.<p>
+     * <code>setPara()</code> and <code>setLine()</code> will allocate
+     * additional memory for internal structures as necessary.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi()
+    {
+        this(0, 0);
+    }
+
+    /**
+     * Allocate a <code>Bidi</code> object with preallocated memory
+     * for internal structures.
+     * This method provides a <code>Bidi</code> object like the default constructor
+     * but it also preallocates memory for internal structures
+     * according to the sizings supplied by the caller.<p>
+     * The preallocation can be limited to some of the internal memory
+     * by setting some values to 0 here. That means that if, e.g.,
+     * <code>maxRunCount</code> cannot be reasonably predetermined and should not
+     * be set to <code>maxLength</code> (the only failproof value) to avoid
+     * wasting  memory, then <code>maxRunCount</code> could be set to 0 here
+     * and the internal structures that are associated with it will be allocated
+     * on demand, just like with the default constructor.
+     *
+     * @param maxLength is the maximum text or line length that internal memory
+     *        will be preallocated for. An attempt to associate this object with a
+     *        longer text will fail, unless this value is 0, which leaves the allocation
+     *        up to the implementation.
+     *
+     * @param maxRunCount is the maximum anticipated number of same-level runs
+     *        that internal memory will be preallocated for. An attempt to access
+     *        visual runs on an object that was not preallocated for as many runs
+     *        as the text was actually resolved to will fail,
+     *        unless this value is 0, which leaves the allocation up to the implementation.<br><br>
+     *        The number of runs depends on the actual text and maybe anywhere between
+     *        1 and <code>maxLength</code>. It is typically small.
+     *
+     * @throws IllegalArgumentException if maxLength or maxRunCount is less than 0
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(int maxLength, int maxRunCount)
+    {
+        /* check the argument values */
+        if (maxLength < 0 || maxRunCount < 0) {
+            throw new IllegalArgumentException();
+        }
+
+        /* reset the object, all reference variables null, all flags false,
+           all sizes 0.
+           In fact, we don't need to do anything, since class members are
+           initialized as zero when an instance is created.
+         */
+        /*
+        mayAllocateText = false;
+        mayAllocateRuns = false;
+        orderParagraphsLTR = false;
+        paraCount = 0;
+        runCount = 0;
+        trailingWSStart = 0;
+        flags = 0;
+        paraLevel = 0;
+        defaultParaLevel = 0;
+        direction = 0;
+        */
+        /* get Bidi properties */
+        try {
+            bdp = UBiDiProps.getSingleton();
+        }
+        catch (IOException e) {
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+        }
+
+        /* allocate memory for arrays as requested */
+        if (maxLength > 0) {
+            getInitialDirPropsMemory(maxLength);
+            getInitialLevelsMemory(maxLength);
+        } else {
+            mayAllocateText = true;
+        }
+
+        if (maxRunCount > 0) {
+            // if maxRunCount == 1, use simpleRuns[]
+            if (maxRunCount > 1) {
+                getInitialRunsMemory(maxRunCount);
+            }
+        } else {
+            mayAllocateRuns = true;
+        }
+    }
+
+    /*
+     * We are allowed to allocate memory if object==null or
+     * mayAllocate==true for each array that we need.
+     *
+     * Assume sizeNeeded>0.
+     * If object != null, then assume size > 0.
+     */
+    private Object getMemory(String label, Object array, Class arrayClass,
+            boolean mayAllocate, int sizeNeeded)
+    {
+        int len = Array.getLength(array);
+
+        /* we have at least enough memory and must not allocate */
+        if (sizeNeeded == len) {
+            return array;
+        }
+        if (!mayAllocate) {
+            /* we must not allocate */
+            if (sizeNeeded <= len) {
+                return array;
+            }
+            throw new OutOfMemoryError("Failed to allocate memory for "
+                                       + label);
+        }
+        /* we may try to grow or shrink */
+        /* FOOD FOR THOUGHT: when shrinking it should be possible to avoid
+           the allocation altogether and rely on this.length */
+        try {
+            return Array.newInstance(arrayClass, sizeNeeded);
+        } catch (Exception e) {
+            throw new OutOfMemoryError("Failed to allocate memory for "
+                                       + label);
+        }
+    }
+
+    /* helper methods for each allocated array */
+    private void getDirPropsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("DirProps", dirPropsMemory, Byte.TYPE, mayAllocate, len);
+        dirPropsMemory = (byte[]) array;
+    }
+
+    void getDirPropsMemory(int len)
+    {
+        getDirPropsMemory(mayAllocateText, len);
+    }
+
+    private void getLevelsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("Levels", levelsMemory, Byte.TYPE, mayAllocate, len);
+        levelsMemory = (byte[]) array;
+    }
+
+    void getLevelsMemory(int len)
+    {
+        getLevelsMemory(mayAllocateText, len);
+    }
+
+    private void getRunsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("Runs", runsMemory, BidiRun.class, mayAllocate, len);
+        runsMemory = (BidiRun[]) array;
+    }
+
+    void getRunsMemory(int len)
+    {
+        getRunsMemory(mayAllocateRuns, len);
+    }
+
+    /* additional methods used by constructor - always allow allocation */
+    private void getInitialDirPropsMemory(int len)
+    {
+        getDirPropsMemory(true, len);
+    }
+
+    private void getInitialLevelsMemory(int len)
+    {
+        getLevelsMemory(true, len);
+    }
+
+    private void getInitialParasMemory(int len)
+    {
+        Object array = getMemory("Paras", parasMemory, Integer.TYPE, true, len);
+        parasMemory = (int[]) array;
+    }
+
+    private void getInitialRunsMemory(int len)
+    {
+        getRunsMemory(true, len);
+    }
+
+    /**
+     * Modify the operation of the Bidi algorithm such that it
+     * approximates an "inverse Bidi" algorithm. This method
+     * must be called before <code>setPara()</code>.
+     *
+     * <p>The normal operation of the Bidi algorithm as described
+     * in the Unicode Technical Report is to take text stored in logical
+     * (keyboard, typing) order and to determine the reordering of it for visual
+     * rendering.
+     * Some legacy systems store text in visual order, and for operations
+     * with standard, Unicode-based algorithms, the text needs to be transformed
+     * to logical order. This is effectively the inverse algorithm of the
+     * described Bidi algorithm. Note that there is no standard algorithm for
+     * this "inverse Bidi" and that the current implementation provides only an
+     * approximation of "inverse Bidi".</p>
+     *
+     * <p>With <code>isInversed</code> set to <code>true</code>,
+     * this method changes the behavior of some of the subsequent methods
+     * in a way that they can be used for the inverse Bidi algorithm.
+     * Specifically, runs of text with numeric characters will be treated in a
+     * special way and may need to be surrounded with LRM characters when they are
+     * written in reordered sequence.</p>
+     *
+     * <p>Output runs should be retrieved using <code>getVisualRun()</code>.
+     * Since the actual input for "inverse Bidi" is visually ordered text and
+     * <code>getVisualRun()</code> gets the reordered runs, these are actually
+     * the runs of the logically ordered output.</p>
+     *
+     * <p>Calling this method with argument <code>isInverse</code> set to
+     * <code>true</code> is equivalent to calling <code>setReorderingMode</code>
+     * with argument <code>reorderingMode</code>
+     * set to <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
+     * Calling this method with argument <code>isInverse</code> set to
+     * <code>false</code> is equivalent to calling <code>setReorderingMode</code>
+     * with argument <code>reorderingMode</code>
+     * set to <code>REORDER_DEFAULT</code>.
+     *
+     * @param isInverse specifies "forward" or "inverse" Bidi operation.
+     *
+     * @see #setPara
+     * @see #writeReordered
+     * @see #setReorderingMode
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_DEFAULT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setInverse(boolean isInverse) {
+        this.isInverse = (isInverse);
+        this.reorderingMode = isInverse ? REORDER_INVERSE_NUMBERS_AS_L
+                : REORDER_DEFAULT;
+    }
+
+    /**
+     * Is this <code>Bidi</code> object set to perform the inverse Bidi
+     * algorithm?
+     * <p>Note: calling this method after setting the reordering mode with
+     * <code>setReorderingMode</code> will return <code>true</code> if the
+     * reordering mode was set to
+     * <code>REORDER_INVERSE_NUMBERS_AS_L<code>, <code>false</code>
+     * for all other values.</p>
+     *
+     * @return <code>true</code> if the <code>Bidi</code> object is set to
+     * perform the inverse Bidi algorithm by handling numbers as L.
+     *
+     * @see #setInverse
+     * @see #setReorderingMode
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isInverse() {
+        return isInverse;
+    }
+
+    /**
+     * Modify the operation of the Bidi algorithm such that it implements some
+     * variant to the basic Bidi algorithm or approximates an "inverse Bidi"
+     * algorithm, depending on different values of the "reordering mode".
+     * This method must be called before <code>setPara()</code>, and stays in
+     * effect until called again with a different argument.
+     *
+     * <p>The normal operation of the Bidi algorithm as described in the Unicode
+     * Standard Annex #9 is to take text stored in logical (keyboard, typing)
+     * order and to determine how to reorder it for visual rendering.</p>
+     *
+     * <p>With the reordering mode set to a value other than
+     * <code>REORDER_DEFAULT</code>, this method changes the behavior of some of
+     * the subsequent methods in a way such that they implement an inverse Bidi
+     * algorithm or some other algorithm variants.</p>
+     *
+     * <p>Some legacy systems store text in visual order, and for operations
+     * with standard, Unicode-based algorithms, the text needs to be transformed
+     * into logical order. This is effectively the inverse algorithm of the
+     * described Bidi algorithm. Note that there is no standard algorithm for
+     * this "inverse Bidi", so a number of variants are implemented here.</p>
+     *
+     * <p>In other cases, it may be desirable to emulate some variant of the
+     * Logical to Visual algorithm (e.g. one used in MS Windows), or perform a
+     * Logical to Logical transformation.</p>
+     *
+     * <ul>
+     * <li>When the Reordering Mode is set to
+     * <code>REORDER_DEFAULT</code>,
+     * the standard Bidi Logical to Visual algorithm is applied.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_NUMBERS_SPECIAL</code>,
+     * the algorithm used to perform Bidi transformations when calling
+     * <code>setPara</code> should approximate the algorithm used in Microsoft
+     * Windows XP rather than strictly conform to the Unicode Bidi algorithm.
+     * <br>
+     * The differences between the basic algorithm and the algorithm addressed
+     * by this option are as follows:
+     * <ul>
+     *   <li>Within text at an even embedding level, the sequence "123AB"
+     *   (where AB represent R or AL letters) is transformed to "123BA" by the
+     *   Unicode algorithm and to "BA123" by the Windows algorithm.</li>
+     *
+     *   <li>Arabic-Indic numbers (AN) are handled by the Windows algorithm just
+     *   like regular numbers (EN).</li>
+     * </ul></li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_GROUP_NUMBERS_WITH_R</code>,
+     * numbers located between LTR text and RTL text are associated with the RTL
+     * text. For instance, an LTR paragraph with content "abc 123 DEF" (where
+     * upper case letters represent RTL characters) will be transformed to
+     * "abc FED 123" (and not "abc 123 FED"), "DEF 123 abc" will be transformed
+     * to "123 FED abc" and "123 FED abc" will be transformed to "DEF 123 abc".
+     * This makes the algorithm reversible and makes it useful when round trip
+     * (from visual to logical and back to visual) must be achieved without
+     * adding LRM characters. However, this is a variation from the standard
+     * Unicode Bidi algorithm.<br>
+     * The source text should not contain Bidi control characters other than LRM
+     * or RLM.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_RUNS_ONLY</code>,
+     * a "Logical to Logical" transformation must be performed:
+     * <ul>
+     * <li>If the default text level of the source text (argument
+     * <code>paraLevel</code> in <code>setPara</code>) is even, the source text
+     * will be handled as LTR logical text and will be transformed to the RTL
+     * logical text which has the same LTR visual display.</li>
+     * <li>If the default level of the source text is odd, the source text
+     * will be handled as RTL logical text and will be transformed to the
+     * LTR logical text which has the same LTR visual display.</li>
+     * </ul>
+     * This mode may be needed when logical text which is basically Arabic or
+     * Hebrew, with possible included numbers or phrases in English, has to be
+     * displayed as if it had an even embedding level (this can happen if the
+     * displaying application treats all text as if it was basically LTR).
+     * <br>
+     * This mode may also be needed in the reverse case, when logical text which
+     * is basically English, with possible included phrases in Arabic or Hebrew,
+     * has to be displayed as if it had an odd embedding level.
+     * <br>
+     * Both cases could be handled by adding LRE or RLE at the head of the
+     * text, if the display subsystem supports these formatting controls. If it
+     * does not, the problem may be handled by transforming the source text in
+     * this mode before displaying it, so that it will be displayed properly.
+     * <br>
+     * The source text should not contain Bidi control characters other than LRM
+     * or RLM.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>, an "inverse Bidi"
+     * algorithm is applied.
+     * Runs of text with numeric characters will be treated like LTR letters and
+     * may need to be surrounded with LRM characters when they are written in
+     * reordered sequence (the option <code>INSERT_LRM_FOR_NUMERIC</code> can
+     * be used with method <code>writeReordered</code> to this end. This mode
+     * is equivalent to calling <code>setInverse()</code> with
+     * argument <code>isInverse</code> set to <code>true</code>.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to
+     * Visual Bidi algorithm is used as an approximation of an "inverse Bidi"
+     * algorithm. This mode is similar to mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> but is closer to the
+     * regular Bidi algorithm.
+     * <br>
+     * For example, an LTR paragraph with the content "FED 123 456 CBA" (where
+     * upper case represents RTL characters) will be transformed to
+     * "ABC 456 123 DEF", as opposed to "DEF 123 456 ABC"
+     * with mode <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
+     * When used in conjunction with option
+     * <code>OPTION_INSERT_MARKS</code>, this mode generally
+     * adds Bidi marks to the output significantly more sparingly than mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br> with option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to
+     * <code>writeReordered</code>.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the Logical to Visual
+     * Bidi algorithm used in Windows XP is used as an approximation of an "inverse
+     * Bidi" algorithm.
+     * <br>
+     * For example, an LTR paragraph with the content "abc FED123" (where
+     * upper case represents RTL characters) will be transformed to
+     * "abc 123DEF.</li>
+     * </ul>
+     *
+     * <p>In all the reordering modes specifying an "inverse Bidi" algorithm
+     * (i.e. those with a name starting with <code>REORDER_INVERSE</code>),
+     * output runs should be retrieved using <code>getVisualRun()</code>, and
+     * the output text with <code>writeReordered()</code>. The caller should
+     * keep in mind that in "inverse Bidi" modes the input is actually visually
+     * ordered text and reordered output returned by <code>getVisualRun()</code>
+     * or <code>writeReordered()</code> are actually runs or character string
+     * of logically ordered output.<br>
+     * For all the "inverse Bidi" modes, the source text should not contain
+     * Bidi control characters other than LRM or RLM.</p>
+     *
+     * <p>Note that option <code>OUTPUT_REVERSE</code> of
+     * <code>writeReordered</code> has no useful meaning and should not be used
+     * in conjunction with any value of the reordering mode specifying "inverse
+     * Bidi" or with value <code>REORDER_RUNS_ONLY</code>.
+     *
+     * @param reorderingMode specifies the required variant of the Bidi
+     *                       algorithm.
+     *
+     * @see #setInverse
+     * @see #setPara
+     * @see #writeReordered
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #OUTPUT_REVERSE
+     * @see #REORDER_DEFAULT
+     * @see #REORDER_NUMBERS_SPECIAL
+     * @see #REORDER_GROUP_NUMBERS_WITH_R
+     * @see #REORDER_RUNS_ONLY
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setReorderingMode(int reorderingMode) {
+        if ((reorderingMode < REORDER_DEFAULT) ||
+            (reorderingMode >= REORDER_COUNT))
+            return;                     /* don't accept a wrong value */
+        this.reorderingMode = reorderingMode;
+        this.isInverse =
+            reorderingMode == REORDER_INVERSE_NUMBERS_AS_L;
+    }
+
+    /**
+     * What is the requested reordering mode for a given Bidi object?
+     *
+     * @return the current reordering mode of the Bidi object
+     *
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getReorderingMode() {
+        return this.reorderingMode;
+    }
+
+    /**
+     * Specify which of the reordering options should be applied during Bidi
+     * transformations.
+     *
+     * @param options A combination of zero or more of the following
+     * reordering options:
+     * <code>OPTION_DEFAULT</code>, <code>OPTION_INSERT_MARKS</code>,
+     * <code>OPTION_REMOVE_CONTROLS</code>, <code>OPTION_STREAMING</code>.
+     *
+     * @see #getReorderingOptions
+     * @see #OPTION_DEFAULT
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #OPTION_STREAMING
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setReorderingOptions(int options) {
+        if ((options & OPTION_REMOVE_CONTROLS) != 0) {
+            this.reorderingOptions = options & ~OPTION_INSERT_MARKS;
+        } else {
+            this.reorderingOptions = options;
+        }
+    }
+
+    /**
+     * What are the reordering options applied to a given Bidi object?
+     *
+     * @return the current reordering options of the Bidi object
+     *
+     * @see #setReorderingOptions
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getReorderingOptions() {
+        return this.reorderingOptions;
+    }
+
+/* perform (P2)..(P3) ------------------------------------------------------- */
+
+    private void getDirProps()
+    {
+        int i = 0, i0, i1;
+        flags = 0;          /* collect all directionalities in the text */
+        int uchar;
+        byte dirProp;
+        byte paraDirDefault = 0;   /* initialize to avoid compiler warnings */
+        boolean isDefaultLevel = IsDefaultLevel(paraLevel);
+        /* for inverse Bidi, the default para level is set to RTL if there is a
+           strong R or AL character at either end of the text                */
+        boolean isDefaultLevelInverse=isDefaultLevel &&
+                (reorderingMode==REORDER_INVERSE_LIKE_DIRECT ||
+                 reorderingMode==REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
+        lastArabicPos = -1;
+        controlCount = 0;
+        boolean removeBidiControls = (reorderingOptions & OPTION_REMOVE_CONTROLS) != 0;
+
+        final int NOT_CONTEXTUAL = 0;         /* 0: not contextual paraLevel */
+        final int LOOKING_FOR_STRONG = 1;     /* 1: looking for first strong char */
+        final int FOUND_STRONG_CHAR = 2;      /* 2: found first strong char       */
+
+        int state;
+        int paraStart = 0;                    /* index of first char in paragraph */
+        byte paraDir;                         /* == CONTEXT_RTL within paragraphs
+                                                 starting with strong R char      */
+        byte lastStrongDir=0;                 /* for default level & inverse Bidi */
+        int lastStrongLTR=0;                  /* for STREAMING option             */
+
+        if ((reorderingOptions & OPTION_STREAMING) > 0) {
+            length = 0;
+            lastStrongLTR = 0;
+        }
+        if (isDefaultLevel) {
+            paraDirDefault = ((paraLevel & 1) != 0) ? CONTEXT_RTL : 0;
+            paraDir = paraDirDefault;
+            lastStrongDir = paraDirDefault;
+            state = LOOKING_FOR_STRONG;
+        } else {
+            state = NOT_CONTEXTUAL;
+            paraDir = 0;
+        }
+        /* count paragraphs and determine the paragraph level (P2..P3) */
+        /*
+         * see comment on constant fields:
+         * the LEVEL_DEFAULT_XXX values are designed so that
+         * their low-order bit alone yields the intended default
+         */
+
+        for (i = 0; i < originalLength; /* i is incremented in the loop */) {
+            i0 = i;                     /* index of first code unit */
+            uchar = UTF16.charAt(text, 0, originalLength, i);
+            i += UTF16.getCharCount(uchar);
+            i1 = i - 1; /* index of last code unit, gets the directional property */
+
+            dirProp = (byte)getCustomizedClass(uchar);
+            flags |= DirPropFlag(dirProp);
+            dirProps[i1] = (byte)(dirProp | paraDir);
+            if (i1 > i0) {     /* set previous code units' properties to BN */
+                flags |= DirPropFlag(BN);
+                do {
+                    dirProps[--i1] = (byte)(BN | paraDir);
+                } while (i1 > i0);
+            }
+            if (state == LOOKING_FOR_STRONG) {
+                if (dirProp == L) {
+                    state = FOUND_STRONG_CHAR;
+                    if (paraDir != 0) {
+                        paraDir = 0;
+                        for (i1 = paraStart; i1 < i; i1++) {
+                            dirProps[i1] &= ~CONTEXT_RTL;
+                        }
+                    }
+                    continue;
+                }
+                if (dirProp == R || dirProp == AL) {
+                    state = FOUND_STRONG_CHAR;
+                    if (paraDir == 0) {
+                        paraDir = CONTEXT_RTL;
+                        for (i1 = paraStart; i1 < i; i1++) {
+                            dirProps[i1] |= CONTEXT_RTL;
+                        }
+                    }
+                    continue;
+                }
+            }
+            if (dirProp == L) {
+                lastStrongDir = 0;
+                lastStrongLTR = i;      /* i is index to next character */
+            }
+            else if (dirProp == R) {
+                lastStrongDir = CONTEXT_RTL;
+            }
+            else if (dirProp == AL) {
+                lastStrongDir = CONTEXT_RTL;
+                lastArabicPos = i-1;
+            }
+            else if (dirProp == B) {
+                if ((reorderingOptions & OPTION_STREAMING) != 0) {
+                    this.length = i;    /* i is index to next character */
+                }
+                if (isDefaultLevelInverse && (lastStrongDir==CONTEXT_RTL) &&(paraDir!=lastStrongDir)) {
+                    for ( ; paraStart < i; paraStart++) {
+                        dirProps[paraStart] |= CONTEXT_RTL;
+                    }
+                }
+                if (i < originalLength) {   /* B not last char in text */
+                    if (!((uchar == (int)CR) && (text[i] == (int)LF))) {
+                        paraCount++;
+                    }
+                    if (isDefaultLevel) {
+                        state=LOOKING_FOR_STRONG;
+                        paraStart = i;        /* i is index to next character */
+                        paraDir = paraDirDefault;
+                        lastStrongDir = paraDirDefault;
+                    }
+                }
+            }
+            if (removeBidiControls && IsBidiControlChar(uchar)) {
+                controlCount++;
+            }
+        }
+        if (isDefaultLevelInverse && (lastStrongDir==CONTEXT_RTL) &&(paraDir!=lastStrongDir)) {
+            for (i1 = paraStart; i1 < originalLength; i1++) {
+                dirProps[i1] |= CONTEXT_RTL;
+            }
+        }
+        if (isDefaultLevel) {
+            paraLevel = GetParaLevelAt(0);
+        }
+        if ((reorderingOptions & OPTION_STREAMING) > 0) {
+            if ((lastStrongLTR > this.length) &&
+               (GetParaLevelAt(lastStrongLTR) == 0)) {
+                this.length = lastStrongLTR;
+            }
+            if (this.length < originalLength) {
+                paraCount--;
+            }
+        }
+        /* The following line does nothing new for contextual paraLevel, but is
+           needed for absolute paraLevel.                               */
+        flags |= DirPropFlagLR(paraLevel);
+
+        if (orderParagraphsLTR && (flags & DirPropFlag(B)) != 0) {
+            flags |= DirPropFlag(L);
+        }
+    }
+
+    /* perform (X1)..(X9) ------------------------------------------------------- */
+
+    /* determine if the text is mixed-directional or single-directional */
+    private byte directionFromFlags() {
+        /* if the text contains AN and neutrals, then some neutrals may become RTL */
+        if (!((flags & MASK_RTL) != 0 ||
+              ((flags & DirPropFlag(AN)) != 0 &&
+               (flags & MASK_POSSIBLE_N) != 0))) {
+            return LTR;
+        } else if ((flags & MASK_LTR) == 0) {
+            return RTL;
+        } else {
+            return MIXED;
+        }
+    }
+
+    /*
+     * Resolve the explicit levels as specified by explicit embedding codes.
+     * Recalculate the flags to have them reflect the real properties
+     * after taking the explicit embeddings into account.
+     *
+     * The Bidi algorithm is designed to result in the same behavior whether embedding
+     * levels are externally specified (from "styled text", supposedly the preferred
+     * method) or set by explicit embedding codes (LRx, RLx, PDF) in the plain text.
+     * That is why (X9) instructs to remove all explicit codes (and BN).
+     * However, in a real implementation, this removal of these codes and their index
+     * positions in the plain text is undesirable since it would result in
+     * reallocated, reindexed text.
+     * Instead, this implementation leaves the codes in there and just ignores them
+     * in the subsequent processing.
+     * In order to get the same reordering behavior, positions with a BN or an
+     * explicit embedding code just get the same level assigned as the last "real"
+     * character.
+     *
+     * Some implementations, not this one, then overwrite some of these
+     * directionality properties at "real" same-level-run boundaries by
+     * L or R codes so that the resolution of weak types can be performed on the
+     * entire paragraph at once instead of having to parse it once more and
+     * perform that resolution on same-level-runs.
+     * This limits the scope of the implicit rules in effectively
+     * the same way as the run limits.
+     *
+     * Instead, this implementation does not modify these codes.
+     * On one hand, the paragraph has to be scanned for same-level-runs, but
+     * on the other hand, this saves another loop to reset these codes,
+     * or saves making and modifying a copy of dirProps[].
+     *
+     *
+     * Note that (Pn) and (Xn) changed significantly from version 4 of the Bidi algorithm.
+     *
+     *
+     * Handling the stack of explicit levels (Xn):
+     *
+     * With the Bidi stack of explicit levels,
+     * as pushed with each LRE, RLE, LRO, and RLO and popped with each PDF,
+     * the explicit level must never exceed MAX_EXPLICIT_LEVEL==61.
+     *
+     * In order to have a correct push-pop semantics even in the case of overflows,
+     * there are two overflow counters:
+     * - countOver60 is incremented with each LRx at level 60
+     * - from level 60, one RLx increases the level to 61
+     * - countOver61 is incremented with each LRx and RLx at level 61
+     *
+     * Popping levels with PDF must work in the opposite order so that level 61
+     * is correct at the correct point. Underflows (too many PDFs) must be checked.
+     *
+     * This implementation assumes that MAX_EXPLICIT_LEVEL is odd.
+     */
+    private byte resolveExplicitLevels() {
+        int i = 0;
+        byte dirProp;
+        byte level = GetParaLevelAt(0);
+
+        byte dirct;
+        int paraIndex = 0;
+
+        /* determine if the text is mixed-directional or single-directional */
+        dirct = directionFromFlags();
+
+        /* we may not need to resolve any explicit levels, but for multiple
+           paragraphs we want to loop on all chars to set the para boundaries */
+        if ((dirct != MIXED) && (paraCount == 1)) {
+            /* not mixed directionality: levels don't matter - trailingWSStart will be 0 */
+        } else if ((paraCount == 1) &&
+                   ((flags & MASK_EXPLICIT) == 0 ||
+                    reorderingMode > REORDER_LAST_LOGICAL_TO_VISUAL)) {
+            /* mixed, but all characters are at the same embedding level */
+            /* or we are in "inverse Bidi" */
+            /* and we don't have contextual multiple paragraphs with some B char */
+            /* set all levels to the paragraph level */
+            for (i = 0; i < length; ++i) {
+                levels[i] = level;
+            }
+        } else {
+            /* continue to perform (Xn) */
+
+            /* (X1) level is set for all codes, embeddingLevel keeps track of the push/pop operations */
+            /* both variables may carry the LEVEL_OVERRIDE flag to indicate the override status */
+            byte embeddingLevel = level;
+            byte newLevel;
+            byte stackTop = 0;
+
+            byte[] stack = new byte[MAX_EXPLICIT_LEVEL];    /* we never push anything >=MAX_EXPLICIT_LEVEL */
+            int countOver60 = 0;
+            int countOver61 = 0;  /* count overflows of explicit levels */
+
+            /* recalculate the flags */
+            flags = 0;
+
+            for (i = 0; i < length; ++i) {
+                dirProp = NoContextRTL(dirProps[i]);
+                switch(dirProp) {
+                case LRE:
+                case LRO:
+                    /* (X3, X5) */
+                    newLevel = (byte)((embeddingLevel+2) & ~(LEVEL_OVERRIDE | 1)); /* least greater even level */
+                    if (newLevel <= MAX_EXPLICIT_LEVEL) {
+                        stack[stackTop] = embeddingLevel;
+                        ++stackTop;
+                        embeddingLevel = newLevel;
+                        if (dirProp == LRO) {
+                            embeddingLevel |= LEVEL_OVERRIDE;
+                        }
+                        /* we don't need to set LEVEL_OVERRIDE off for LRE
+                           since this has already been done for newLevel which is
+                           the source for embeddingLevel.
+                         */
+                    } else if ((embeddingLevel & ~LEVEL_OVERRIDE) == MAX_EXPLICIT_LEVEL) {
+                        ++countOver61;
+                    } else /* (embeddingLevel & ~LEVEL_OVERRIDE) == MAX_EXPLICIT_LEVEL-1 */ {
+                        ++countOver60;
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case RLE:
+                case RLO:
+                    /* (X2, X4) */
+                    newLevel=(byte)(((embeddingLevel & ~LEVEL_OVERRIDE) + 1) | 1); /* least greater odd level */
+                    if (newLevel<=MAX_EXPLICIT_LEVEL) {
+                        stack[stackTop] = embeddingLevel;
+                        ++stackTop;
+                        embeddingLevel = newLevel;
+                        if (dirProp == RLO) {
+                            embeddingLevel |= LEVEL_OVERRIDE;
+                        }
+                        /* we don't need to set LEVEL_OVERRIDE off for RLE
+                           since this has already been done for newLevel which is
+                           the source for embeddingLevel.
+                         */
+                    } else {
+                        ++countOver61;
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case PDF:
+                    /* (X7) */
+                    /* handle all the overflow cases first */
+                    if (countOver61 > 0) {
+                        --countOver61;
+                    } else if (countOver60 > 0 && (embeddingLevel & ~LEVEL_OVERRIDE) != MAX_EXPLICIT_LEVEL) {
+                        /* handle LRx overflows from level 60 */
+                        --countOver60;
+                    } else if (stackTop > 0) {
+                        /* this is the pop operation; it also pops level 61 while countOver60>0 */
+                        --stackTop;
+                        embeddingLevel = stack[stackTop];
+                    /* } else { (underflow) */
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case B:
+                    stackTop = 0;
+                    countOver60 = 0;
+                    countOver61 = 0;
+                    level = GetParaLevelAt(i);
+                    if ((i + 1) < length) {
+                        embeddingLevel = GetParaLevelAt(i+1);
+                        if (!((text[i] == CR) && (text[i + 1] == LF))) {
+                            paras[paraIndex++] = i+1;
+                        }
+                    }
+                    flags |= DirPropFlag(B);
+                    break;
+                case BN:
+                    /* BN, LRE, RLE, and PDF are supposed to be removed (X9) */
+                    /* they will get their levels set correctly in adjustWSLevels() */
+                    flags |= DirPropFlag(BN);
+                    break;
+                default:
+                    /* all other types get the "real" level */
+                    if (level != embeddingLevel) {
+                        level = embeddingLevel;
+                        if ((level & LEVEL_OVERRIDE) != 0) {
+                            flags |= DirPropFlagO(level) | DirPropFlagMultiRuns;
+                        } else {
+                            flags |= DirPropFlagE(level) | DirPropFlagMultiRuns;
+                        }
+                    }
+                    if ((level & LEVEL_OVERRIDE) == 0) {
+                        flags |= DirPropFlag(dirProp);
+                    }
+                    break;
+                }
+
+                /*
+                 * We need to set reasonable levels even on BN codes and
+                 * explicit codes because we will later look at same-level runs (X10).
+                 */
+                levels[i] = level;
+            }
+            if ((flags & MASK_EMBEDDING) != 0) {
+                flags |= DirPropFlagLR(paraLevel);
+            }
+            if (orderParagraphsLTR && (flags & DirPropFlag(B)) != 0) {
+                flags |= DirPropFlag(L);
+            }
+
+            /* subsequently, ignore the explicit codes and BN (X9) */
+
+            /* again, determine if the text is mixed-directional or single-directional */
+            dirct = directionFromFlags();
+        }
+
+        return dirct;
+    }
+
+    /*
+     * Use a pre-specified embedding levels array:
+     *
+     * Adjust the directional properties for overrides (->LEVEL_OVERRIDE),
+     * ignore all explicit codes (X9),
+     * and check all the preset levels.
+     *
+     * Recalculate the flags to have them reflect the real properties
+     * after taking the explicit embeddings into account.
+     */
+    private byte checkExplicitLevels() {
+        byte dirProp;
+        int i;
+        this.flags = 0;     /* collect all directionalities in the text */
+        byte level;
+        int paraIndex = 0;
+
+        for (i = 0; i < length; ++i) {
+            level = levels[i];
+            dirProp = NoContextRTL(dirProps[i]);
+            if ((level & LEVEL_OVERRIDE) != 0) {
+                /* keep the override flag in levels[i] but adjust the flags */
+                level &= ~LEVEL_OVERRIDE;     /* make the range check below simpler */
+                flags |= DirPropFlagO(level);
+            } else {
+                /* set the flags */
+                flags |= DirPropFlagE(level) | DirPropFlag(dirProp);
+            }
+            if ((level < GetParaLevelAt(i) &&
+                    !((0 == level) && (dirProp == B))) ||
+                    (MAX_EXPLICIT_LEVEL <level)) {
+                /* level out of bounds */
+                throw new IllegalArgumentException("level " + level +
+                                                   " out of bounds at " + i);
+            }
+            if ((dirProp == B) && ((i + 1) < length)) {
+                if (!((text[i] == CR) && (text[i + 1] == LF))) {
+                    paras[paraIndex++] = i + 1;
+                }
+            }
+        }
+        if ((flags&MASK_EMBEDDING) != 0) {
+            flags |= DirPropFlagLR(paraLevel);
+        }
+
+        /* determine if the text is mixed-directional or single-directional */
+        return directionFromFlags();
+    }
+
+    /*********************************************************************/
+    /* The Properties state machine table                                */
+    /*********************************************************************/
+    /*                                                                   */
+    /* All table cells are 8 bits:                                       */
+    /*      bits 0..4:  next state                                       */
+    /*      bits 5..7:  action to perform (if > 0)                       */
+    /*                                                                   */
+    /* Cells may be of format "n" where n represents the next state      */
+    /* (except for the rightmost column).                                */
+    /* Cells may also be of format "_(x,y)" where x represents an action */
+    /* to perform and y represents the next state.                       */
+    /*                                                                   */
+    /*********************************************************************/
+    /* Definitions and type for properties state tables                  */
+    /*********************************************************************/
+    private static final int IMPTABPROPS_COLUMNS = 14;
+    private static final int IMPTABPROPS_RES = IMPTABPROPS_COLUMNS - 1;
+    private static short GetStateProps(short cell) {
+        return (short)(cell & 0x1f);
+    }
+    private static short GetActionProps(short cell) {
+        return (short)(cell >> 5);
+    }
+
+    private static final short groupProp[] =          /* dirProp regrouped */
+    {
+        /*  L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  */
+        0,  1,  2,  7,  8,  3,  9,  6,  5,  4,  4,  10, 10, 12, 10, 10, 10, 11, 10
+    };
+    private static final short _L  = 0;
+    private static final short _R  = 1;
+    private static final short _EN = 2;
+    private static final short _AN = 3;
+    private static final short _ON = 4;
+    private static final short _S  = 5;
+    private static final short _B  = 6; /* reduced dirProp */
+
+    /*********************************************************************/
+    /*                                                                   */
+    /*      PROPERTIES  STATE  TABLE                                     */
+    /*                                                                   */
+    /* In table impTabProps,                                             */
+    /*      - the ON column regroups ON and WS                           */
+    /*      - the BN column regroups BN, LRE, RLE, LRO, RLO, PDF         */
+    /*      - the Res column is the reduced property assigned to a run   */
+    /*                                                                   */
+    /* Action 1: process current run1, init new run1                     */
+    /*        2: init new run2                                           */
+    /*        3: process run1, process run2, init new run1               */
+    /*        4: process run1, set run1=run2, init new run2              */
+    /*                                                                   */
+    /* Notes:                                                            */
+    /*  1) This table is used in resolveImplicitLevels().                */
+    /*  2) This table triggers actions when there is a change in the Bidi*/
+    /*     property of incoming characters (action 1).                   */
+    /*  3) Most such property sequences are processed immediately (in    */
+    /*     fact, passed to processPropertySeq().                         */
+    /*  4) However, numbers are assembled as one sequence. This means    */
+    /*     that undefined situations (like CS following digits, until    */
+    /*     it is known if the next char will be a digit) are held until  */
+    /*     following chars define them.                                  */
+    /*     Example: digits followed by CS, then comes another CS or ON;  */
+    /*              the digits will be processed, then the CS assigned   */
+    /*              as the start of an ON sequence (action 3).           */
+    /*  5) There are cases where more than one sequence must be          */
+    /*     processed, for instance digits followed by CS followed by L:  */
+    /*     the digits must be processed as one sequence, and the CS      */
+    /*     must be processed as an ON sequence, all this before starting */
+    /*     assembling chars for the opening L sequence.                  */
+    /*                                                                   */
+    /*                                                                   */
+    private static final short impTabProps[][] =
+    {
+/*                        L,     R,    EN,    AN,    ON,     S,     B,    ES,    ET,    CS,    BN,   NSM,    AL,  Res */
+/* 0 Init        */ {     1,     2,     4,     5,     7,    15,    17,     7,     9,     7,     0,     7,     3,  _ON },
+/* 1 L           */ {     1,  32+2,  32+4,  32+5,  32+7, 32+15, 32+17,  32+7,  32+9,  32+7,     1,     1,  32+3,   _L },
+/* 2 R           */ {  32+1,     2,  32+4,  32+5,  32+7, 32+15, 32+17,  32+7,  32+9,  32+7,     2,     2,  32+3,   _R },
+/* 3 AL          */ {  32+1,  32+2,  32+6,  32+6,  32+8, 32+16, 32+17,  32+8,  32+8,  32+8,     3,     3,     3,   _R },
+/* 4 EN          */ {  32+1,  32+2,     4,  32+5,  32+7, 32+15, 32+17, 64+10,    11, 64+10,     4,     4,  32+3,  _EN },
+/* 5 AN          */ {  32+1,  32+2,  32+4,     5,  32+7, 32+15, 32+17,  32+7,  32+9, 64+12,     5,     5,  32+3,  _AN },
+/* 6 AL:EN/AN    */ {  32+1,  32+2,     6,     6,  32+8, 32+16, 32+17,  32+8,  32+8, 64+13,     6,     6,  32+3,  _AN },
+/* 7 ON          */ {  32+1,  32+2,  32+4,  32+5,     7, 32+15, 32+17,     7, 64+14,     7,     7,     7,  32+3,  _ON },
+/* 8 AL:ON       */ {  32+1,  32+2,  32+6,  32+6,     8, 32+16, 32+17,     8,     8,     8,     8,     8,  32+3,  _ON },
+/* 9 ET          */ {  32+1,  32+2,     4,  32+5,     7, 32+15, 32+17,     7,     9,     7,     9,     9,  32+3,  _ON },
+/*10 EN+ES/CS    */ {  96+1,  96+2,     4,  96+5, 128+7, 96+15, 96+17, 128+7,128+14, 128+7,    10, 128+7,  96+3,  _EN },
+/*11 EN+ET       */ {  32+1,  32+2,     4,  32+5,  32+7, 32+15, 32+17,  32+7,    11,  32+7,    11,    11,  32+3,  _EN },
+/*12 AN+CS       */ {  96+1,  96+2,  96+4,     5, 128+7, 96+15, 96+17, 128+7,128+14, 128+7,    12, 128+7,  96+3,  _AN },
+/*13 AL:EN/AN+CS */ {  96+1,  96+2,     6,     6, 128+8, 96+16, 96+17, 128+8, 128+8, 128+8,    13, 128+8,  96+3,  _AN },
+/*14 ON+ET       */ {  32+1,  32+2, 128+4,  32+5,     7, 32+15, 32+17,     7,    14,     7,    14,    14,  32+3,  _ON },
+/*15 S           */ {  32+1,  32+2,  32+4,  32+5,  32+7,    15, 32+17,  32+7,  32+9,  32+7,    15,  32+7,  32+3,   _S },
+/*16 AL:S        */ {  32+1,  32+2,  32+6,  32+6,  32+8,    16, 32+17,  32+8,  32+8,  32+8,    16,  32+8,  32+3,   _S },
+/*17 B           */ {  32+1,  32+2,  32+4,  32+5,  32+7, 32+15,    17,  32+7,  32+9,  32+7,    17,  32+7,  32+3,   _B }
+    };
+
+    /*********************************************************************/
+    /* The levels state machine tables                                   */
+    /*********************************************************************/
+    /*                                                                   */
+    /* All table cells are 8 bits:                                       */
+    /*      bits 0..3:  next state                                       */
+    /*      bits 4..7:  action to perform (if > 0)                       */
+    /*                                                                   */
+    /* Cells may be of format "n" where n represents the next state      */
+    /* (except for the rightmost column).                                */
+    /* Cells may also be of format "_(x,y)" where x represents an action */
+    /* to perform and y represents the next state.                       */
+    /*                                                                   */
+    /* This format limits each table to 16 states each and to 15 actions.*/
+    /*                                                                   */
+    /*********************************************************************/
+    /* Definitions and type for levels state tables                      */
+    /*********************************************************************/
+    private static final int IMPTABLEVELS_COLUMNS = _B + 2;
+    private static final int IMPTABLEVELS_RES = IMPTABLEVELS_COLUMNS - 1;
+    private static short GetState(byte cell) { return (short)(cell & 0x0f); }
+    private static short GetAction(byte cell) { return (short)(cell >> 4); }
+
+    private static class ImpTabPair {
+        byte[][][] imptab;
+        short[][] impact;
+
+        ImpTabPair(byte[][] table1, byte[][] table2,
+                   short[] act1, short[] act2) {
+            imptab = new byte[][][] {table1, table2};
+            impact = new short[][] {act1, act2};
+        }
+    }
+
+    /*********************************************************************/
+    /*                                                                   */
+    /*      LEVELS  STATE  TABLES                                        */
+    /*                                                                   */
+    /* In all levels state tables,                                       */
+    /*      - state 0 is the initial state                               */
+    /*      - the Res column is the increment to add to the text level   */
+    /*        for this property sequence.                                */
+    /*                                                                   */
+    /* The impact arrays for each table of a pair map the local action   */
+    /* numbers of the table to the total list of actions. For instance,  */
+    /* action 2 in a given table corresponds to the action number which  */
+    /* appears in entry [2] of the impact array for that table.          */
+    /* The first entry of all impact arrays must be 0.                   */
+    /*                                                                   */
+    /* Action 1: init conditional sequence                               */
+    /*        2: prepend conditional sequence to current sequence        */
+    /*        3: set ON sequence to new level - 1                        */
+    /*        4: init EN/AN/ON sequence                                  */
+    /*        5: fix EN/AN/ON sequence followed by R                     */
+    /*        6: set previous level sequence to level 2                  */
+    /*                                                                   */
+    /* Notes:                                                            */
+    /*  1) These tables are used in processPropertySeq(). The input      */
+    /*     is property sequences as determined by resolveImplicitLevels. */
+    /*  2) Most such property sequences are processed immediately        */
+    /*     (levels are assigned).                                        */
+    /*  3) However, some sequences cannot be assigned a final level till */
+    /*     one or more following sequences are received. For instance,   */
+    /*     ON following an R sequence within an even-level paragraph.    */
+    /*     If the following sequence is R, the ON sequence will be       */
+    /*     assigned basic run level+1, and so will the R sequence.       */
+    /*  4) S is generally handled like ON, since its level will be fixed */
+    /*     to paragraph level in adjustWSLevels().                       */
+    /*                                                                   */
+
+    private static final byte impTabL_DEFAULT[][] = /* Even paragraph level */
+        /*  In this table, conditional sequences receive the higher possible level
+            until proven otherwise.
+        */
+    {
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     1,     0,     2,     0,     0,     0,  0 },
+        /* 1 : R          */ {     0,     1,     3,     3,  0x14,  0x14,     0,  1 },
+        /* 2 : AN         */ {     0,     1,     0,     2,  0x15,  0x15,     0,  2 },
+        /* 3 : R+EN/AN    */ {     0,     1,     3,     3,  0x14,  0x14,     0,  2 },
+        /* 4 : R+ON       */ {  0x20,     1,     3,     3,     4,     4,  0x20,  1 },
+        /* 5 : AN+ON      */ {  0x20,     1,  0x20,     2,     5,     5,  0x20,  1 }
+    };
+
+    private static final byte impTabR_DEFAULT[][] = /* Odd  paragraph level */
+        /*  In this table, conditional sequences receive the lower possible level
+            until proven otherwise.
+        */
+    {
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     2,     2,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     3,  0x14,  0x14,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     2,     2,     0,     0,     0,  1 },
+        /* 3 : L+AN       */ {     1,     0,     1,     3,     5,     5,     0,  1 },
+        /* 4 : L+ON       */ {  0x21,     0,  0x21,     3,     4,     4,     0,  0 },
+        /* 5 : L+AN+ON    */ {     1,     0,     1,     3,     5,     5,     0,  0 }
+    };
+
+    private static final short[] impAct0 = {0,1,2,3,4,5,6};
+
+    private static final ImpTabPair impTab_DEFAULT = new ImpTabPair(
+            impTabL_DEFAULT, impTabR_DEFAULT, impAct0, impAct0);
+
+    private static final byte impTabL_NUMBERS_SPECIAL[][] = { /* Even paragraph level */
+        /* In this table, conditional sequences receive the higher possible
+           level until proven otherwise.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     2,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L+EN/AN    */ {     0,     2,     1,     1,     0,     0,     0,  2 },
+        /* 2 : R          */ {     0,     2,     4,     4,  0x13,     0,     0,  1 },
+        /* 3 : R+ON       */ {  0x20,     2,     4,     4,     3,     3,  0x20,  1 },
+        /* 4 : R+EN/AN    */ {     0,     2,     4,     4,  0x13,  0x13,     0,  2 }
+    };
+    private static final ImpTabPair impTab_NUMBERS_SPECIAL = new ImpTabPair(
+            impTabL_NUMBERS_SPECIAL, impTabR_DEFAULT, impAct0, impAct0);
+
+    private static final byte impTabL_GROUP_NUMBERS_WITH_R[][] = {
+        /* In this table, EN/AN+ON sequences receive levels as if associated with R
+           until proven that there is L or sor/eor on both sides. AN is handled like EN.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 init         */ {     0,     3,  0x11,  0x11,     0,     0,     0,  0 },
+        /* 1 EN/AN        */ {  0x20,     3,     1,     1,     2,  0x20,  0x20,  2 },
+        /* 2 EN/AN+ON     */ {  0x20,     3,     1,     1,     2,  0x20,  0x20,  1 },
+        /* 3 R            */ {     0,     3,     5,     5,  0x14,     0,     0,  1 },
+        /* 4 R+ON         */ {  0x20,     3,     5,     5,     4,  0x20,  0x20,  1 },
+        /* 5 R+EN/AN      */ {     0,     3,     5,     5,  0x14,     0,     0,  2 }
+    };
+    private static final byte impTabR_GROUP_NUMBERS_WITH_R[][] = {
+        /*  In this table, EN/AN+ON sequences receive levels as if associated with R
+            until proven that there is L on both sides. AN is handled like EN.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 init         */ {     2,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 EN/AN        */ {     2,     0,     1,     1,     0,     0,     0,  1 },
+        /* 2 L            */ {     2,     0,  0x14,  0x14,  0x13,     0,     0,  1 },
+        /* 3 L+ON         */ {  0x22,     0,     4,     4,     3,     0,     0,  0 },
+        /* 4 L+EN/AN      */ {  0x22,     0,     4,     4,     3,     0,     0,  1 }
+    };
+    private static final ImpTabPair impTab_GROUP_NUMBERS_WITH_R = new
+            ImpTabPair(impTabL_GROUP_NUMBERS_WITH_R,
+                       impTabR_GROUP_NUMBERS_WITH_R, impAct0, impAct0);
+
+    private static final byte impTabL_INVERSE_NUMBERS_AS_L[][] = {
+        /* This table is identical to the Default LTR table except that EN and AN
+           are handled like L.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     1,     0,     0,     0,     0,     0,  0 },
+        /* 1 : R          */ {     0,     1,     0,     0,  0x14,  0x14,     0,  1 },
+        /* 2 : AN         */ {     0,     1,     0,     0,  0x15,  0x15,     0,  2 },
+        /* 3 : R+EN/AN    */ {     0,     1,     0,     0,  0x14,  0x14,     0,  2 },
+        /* 4 : R+ON       */ {  0x20,     1,  0x20,  0x20,     4,     4,  0x20,  1 },
+        /* 5 : AN+ON      */ {  0x20,     1,  0x20,  0x20,     5,     5,  0x20,  1 }
+    };
+    private static final byte impTabR_INVERSE_NUMBERS_AS_L[][] = {
+        /* This table is identical to the Default RTL table except that EN and AN
+           are handled like L.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     1,  0x14,  0x14,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     1,     1,     0,     0,     0,  1 },
+        /* 3 : L+AN       */ {     1,     0,     1,     1,     5,     5,     0,  1 },
+        /* 4 : L+ON       */ {  0x21,     0,  0x21,  0x21,     4,     4,     0,  0 },
+        /* 5 : L+AN+ON    */ {     1,     0,     1,     1,     5,     5,     0,  0 }
+    };
+    private static final ImpTabPair impTab_INVERSE_NUMBERS_AS_L = new ImpTabPair
+            (impTabL_INVERSE_NUMBERS_AS_L, impTabR_INVERSE_NUMBERS_AS_L,
+             impAct0, impAct0);
+
+    private static final byte impTabR_INVERSE_LIKE_DIRECT[][] = {  /* Odd  paragraph level */
+        /*  In this table, conditional sequences receive the lower possible level
+            until proven otherwise.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     2,     2,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     2,  0x13,  0x13,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     2,     2,     0,     0,     0,  1 },
+        /* 3 : L+ON       */ {  0x21,  0x30,     6,     4,     3,     3,  0x30,  0 },
+        /* 4 : L+ON+AN    */ {  0x21,  0x30,     6,     4,     5,     5,  0x30,  3 },
+        /* 5 : L+AN+ON    */ {  0x21,  0x30,     6,     4,     5,     5,  0x30,  2 },
+        /* 6 : L+ON+EN    */ {  0x21,  0x30,     6,     4,     3,     3,  0x30,  1 }
+    };
+    private static final short[] impAct1 = {0,1,11,12};
+    private static final ImpTabPair impTab_INVERSE_LIKE_DIRECT = new ImpTabPair(
+            impTabL_DEFAULT, impTabR_INVERSE_LIKE_DIRECT, impAct0, impAct1);
+
+    private static final byte impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS[][] = {
+        /* The case handled in this table is (visually):  R EN L
+         */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,  0x63,     0,     1,     0,     0,     0,  0 },
+        /* 1 : L+AN       */ {     0,  0x63,     0,     1,  0x12,  0x30,     0,  4 },
+        /* 2 : L+AN+ON    */ {  0x20,  0x63,  0x20,     1,     2,  0x30,  0x20,  3 },
+        /* 3 : R          */ {     0,  0x63,  0x55,  0x56,  0x14,  0x30,     0,  3 },
+        /* 4 : R+ON       */ {  0x30,  0x43,  0x55,  0x56,     4,  0x30,  0x30,  3 },
+        /* 5 : R+EN       */ {  0x30,  0x43,     5,  0x56,  0x14,  0x30,  0x30,  4 },
+        /* 6 : R+AN       */ {  0x30,  0x43,  0x55,     6,  0x14,  0x30,  0x30,  4 }
+    };
+    private static final byte impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS[][] = {
+        /* The cases handled in this table are (visually):  R EN L
+                                                            R L AN L
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {  0x13,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 : R+EN/AN    */ {  0x23,     0,     1,     1,     2,  0x40,     0,  1 },
+        /* 2 : R+EN/AN+ON */ {  0x23,     0,     1,     1,     2,  0x40,     0,  0 },
+        /* 3 : L          */ {    3 ,     0,     3,  0x36,  0x14,  0x40,     0,  1 },
+        /* 4 : L+ON       */ {  0x53,  0x40,     5,  0x36,     4,  0x40,  0x40,  0 },
+        /* 5 : L+ON+EN    */ {  0x53,  0x40,     5,  0x36,     4,  0x40,  0x40,  1 },
+        /* 6 : L+AN       */ {  0x53,  0x40,     6,     6,     4,  0x40,  0x40,  3 }
+    };
+    private static final short impAct2[] = {0,1,7,8,9,10};
+    private static final ImpTabPair impTab_INVERSE_LIKE_DIRECT_WITH_MARKS =
+            new ImpTabPair(impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS,
+                           impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS, impAct0, impAct2);
+
+    private static final ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL = new ImpTabPair(
+            impTabL_NUMBERS_SPECIAL, impTabR_INVERSE_LIKE_DIRECT, impAct0, impAct1);
+
+    private static final byte impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS[][] = {
+        /*  The case handled in this table is (visually):  R EN L
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,  0x62,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L+EN/AN    */ {     0,  0x62,     1,     1,     0,  0x30,     0,  4 },
+        /* 2 : R          */ {     0,  0x62,  0x54,  0x54,  0x13,  0x30,     0,  3 },
+        /* 3 : R+ON       */ {  0x30,  0x42,  0x54,  0x54,     3,  0x30,  0x30,  3 },
+        /* 4 : R+EN/AN    */ {  0x30,  0x42,     4,     4,  0x13,  0x30,  0x30,  4 }
+    };
+    private static final ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS = new
+            ImpTabPair(impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS,
+                       impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS, impAct0, impAct2);
+
+    private class LevState {
+        byte[][] impTab;                /* level table pointer          */
+        short[] impAct;                 /* action map array             */
+        int startON;                    /* start of ON sequence         */
+        int startL2EN;                  /* start of level 2 sequence    */
+        int lastStrongRTL;              /* index of last found R or AL  */
+        short state;                    /* current state                */
+        byte runLevel;                  /* run level before implicit solving */
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    static final int FIRSTALLOC = 10;
+    /*
+     *  param pos:     position where to insert
+     *  param flag:    one of LRM_BEFORE, LRM_AFTER, RLM_BEFORE, RLM_AFTER
+     */
+    private void addPoint(int pos, int flag)
+    {
+        Point point = new Point();
+
+        int len = insertPoints.points.length;
+        if (len == 0) {
+            insertPoints.points = new Point[FIRSTALLOC];
+            len = FIRSTALLOC;
+        }
+        if (insertPoints.size >= len) { /* no room for new point */
+            Point[] savePoints = insertPoints.points;
+            insertPoints.points = new Point[len * 2];
+            System.arraycopy(savePoints, 0, insertPoints.points, 0, len);
+        }
+        point.pos = pos;
+        point.flag = flag;
+        insertPoints.points[insertPoints.size] = point;
+        insertPoints.size++;
+    }
+
+    /* perform rules (Wn), (Nn), and (In) on a run of the text ------------------ */
+
+    /*
+     * This implementation of the (Wn) rules applies all rules in one pass.
+     * In order to do so, it needs a look-ahead of typically 1 character
+     * (except for W5: sequences of ET) and keeps track of changes
+     * in a rule Wp that affect a later Wq (p<q).
+     *
+     * The (Nn) and (In) rules are also performed in that same single loop,
+     * but effectively one iteration behind for white space.
+     *
+     * Since all implicit rules are performed in one step, it is not necessary
+     * to actually store the intermediate directional properties in dirProps[].
+     */
+
+    private void processPropertySeq(LevState levState, short _prop,
+            int start, int limit) {
+        byte cell;
+        byte[][] impTab = levState.impTab;
+        short[] impAct = levState.impAct;
+        short oldStateSeq,actionSeq;
+        byte level, addLevel;
+        int start0, k;
+
+        start0 = start;                 /* save original start position */
+        oldStateSeq = levState.state;
+        cell = impTab[oldStateSeq][_prop];
+        levState.state = GetState(cell);        /* isolate the new state */
+        actionSeq = impAct[GetAction(cell)];    /* isolate the action */
+        addLevel = (byte)impTab[levState.state][IMPTABLEVELS_RES];
+
+        if (actionSeq != 0) {
+            switch (actionSeq) {
+            case 1:                     /* init ON seq */
+                levState.startON = start0;
+                break;
+
+            case 2:                     /* prepend ON seq to current seq */
+                start = levState.startON;
+                break;
+
+            case 3:                     /* L or S after possible relevant EN/AN */
+                /* check if we had EN after R/AL */
+                if (levState.startL2EN >= 0) {
+                    addPoint(levState.startL2EN, LRM_BEFORE);
+                }
+                levState.startL2EN = -1;  /* not within previous if since could also be -2 */
+                /* check if we had any relevant EN/AN after R/AL */
+                if ((insertPoints.points.length == 0) ||
+                        (insertPoints.size <= insertPoints.confirmed)) {
+                    /* nothing, just clean up */
+                    levState.lastStrongRTL = -1;
+                    /* check if we have a pending conditional segment */
+                    level = (byte)impTab[oldStateSeq][IMPTABLEVELS_RES];
+                    if ((level & 1) != 0 && levState.startON > 0) { /* after ON */
+                        start = levState.startON;   /* reset to basic run level */
+                    }
+                    if (_prop == _S) {              /* add LRM before S */
+                        addPoint(start0, LRM_BEFORE);
+                        insertPoints.confirmed = insertPoints.size;
+                    }
+                    break;
+                }
+                /* reset previous RTL cont to level for LTR text */
+                for (k = levState.lastStrongRTL + 1; k < start0; k++) {
+                    /* reset odd level, leave runLevel+2 as is */
+                    levels[k] = (byte)((levels[k] - 2) & ~1);
+                }
+                /* mark insert points as confirmed */
+                insertPoints.confirmed = insertPoints.size;
+                levState.lastStrongRTL = -1;
+                if (_prop == _S) {           /* add LRM before S */
+                    addPoint(start0, LRM_BEFORE);
+                    insertPoints.confirmed = insertPoints.size;
+                }
+                break;
+
+            case 4:                     /* R/AL after possible relevant EN/AN */
+                /* just clean up */
+                if (insertPoints.points.length > 0)
+                    /* remove all non confirmed insert points */
+                    insertPoints.size = insertPoints.confirmed;
+                levState.startON = -1;
+                levState.startL2EN = -1;
+                levState.lastStrongRTL = limit - 1;
+                break;
+
+            case 5:                     /* EN/AN after R/AL + possible cont */
+                /* check for real AN */
+                if ((_prop == _AN) && (NoContextRTL(dirProps[start0]) == AN) &&
+                (reorderingMode!=REORDER_INVERSE_FOR_NUMBERS_SPECIAL))
+                {
+                    /* real AN */
+                    if (levState.startL2EN == -1) { /* if no relevant EN already found */
+                        /* just note the righmost digit as a strong RTL */
+                        levState.lastStrongRTL = limit - 1;
+                        break;
+                    }
+                    if (levState.startL2EN >= 0)  { /* after EN, no AN */
+                        addPoint(levState.startL2EN, LRM_BEFORE);
+                        levState.startL2EN = -2;
+                    }
+                    /* note AN */
+                    addPoint(start0, LRM_BEFORE);
+                    break;
+                }
+                /* if first EN/AN after R/AL */
+                if (levState.startL2EN == -1) {
+                    levState.startL2EN = start0;
+                }
+                break;
+
+            case 6:                     /* note location of latest R/AL */
+                levState.lastStrongRTL = limit - 1;
+                levState.startON = -1;
+                break;
+
+            case 7:                     /* L after R+ON/EN/AN */
+                /* include possible adjacent number on the left */
+                for (k = start0-1; k >= 0 && ((levels[k] & 1) == 0); k--) {
+                }
+                if (k >= 0) {
+                    addPoint(k, RLM_BEFORE);    /* add RLM before */
+                    insertPoints.confirmed = insertPoints.size; /* confirm it */
+                }
+                levState.startON = start0;
+                break;
+
+            case 8:                     /* AN after L */
+                /* AN numbers between L text on both sides may be trouble. */
+                /* tentatively bracket with LRMs; will be confirmed if followed by L */
+                addPoint(start0, LRM_BEFORE);   /* add LRM before */
+                addPoint(start0, LRM_AFTER);    /* add LRM after  */
+                break;
+
+            case 9:                     /* R after L+ON/EN/AN */
+                /* false alert, infirm LRMs around previous AN */
+                insertPoints.size=insertPoints.confirmed;
+                if (_prop == _S) {          /* add RLM before S */
+                    addPoint(start0, RLM_BEFORE);
+                    insertPoints.confirmed = insertPoints.size;
+                }
+                break;
+
+            case 10:                    /* L after L+ON/AN */
+                level = (byte)(levState.runLevel + addLevel);
+                for (k=levState.startON; k < start0; k++) {
+                    if (levels[k] < level) {
+                        levels[k] = level;
+                    }
+                }
+                insertPoints.confirmed = insertPoints.size;   /* confirm inserts */
+                levState.startON = start0;
+                break;
+
+            case 11:                    /* L after L+ON+EN/AN/ON */
+                level = (byte)levState.runLevel;
+                for (k = start0-1; k >= levState.startON; k--) {
+                    if (levels[k] == level+3) {
+                        while (levels[k] == level+3) {
+                            levels[k--] -= 2;
+                        }
+                        while (levels[k] == level) {
+                            k--;
+                        }
+                    }
+                    if (levels[k] == level+2) {
+                        levels[k] = level;
+                        continue;
+                    }
+                    levels[k] = (byte)(level+1);
+                }
+                break;
+
+            case 12:                    /* R after L+ON+EN/AN/ON */
+                level = (byte)(levState.runLevel+1);
+                for (k = start0-1; k >= levState.startON; k--) {
+                    if (levels[k] > level) {
+                        levels[k] -= 2;
+                    }
+                }
+                break;
+
+            default:                        /* we should never get here */
+                throw new IllegalStateException("Internal ICU error in processPropertySeq");
+            }
+        }
+        if ((addLevel) != 0 || (start < start0)) {
+            level = (byte)(levState.runLevel + addLevel);
+            for (k = start; k < limit; k++) {
+                levels[k] = level;
+            }
+        }
+    }
+
+    private void resolveImplicitLevels(int start, int limit, short sor, short eor)
+    {
+        LevState levState = new LevState();
+        int i, start1, start2;
+        short oldStateImp, stateImp, actionImp;
+        short gprop, resProp, cell;
+        boolean inverseRTL;
+        short nextStrongProp = R;
+        int nextStrongPos = -1;
+
+
+        /* check for RTL inverse Bidi mode */
+        /* FOOD FOR THOUGHT: in case of RTL inverse Bidi, it would make sense to
+         * loop on the text characters from end to start.
+         * This would need a different properties state table (at least different
+         * actions) and different levels state tables (maybe very similar to the
+         * LTR corresponding ones.
+         */
+        inverseRTL=((start<lastArabicPos) && ((GetParaLevelAt(start) & 1)>0) &&
+                    (reorderingMode==REORDER_INVERSE_LIKE_DIRECT  ||
+                     reorderingMode==REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
+        /* initialize for levels state table */
+        levState.startL2EN = -1;        /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+        levState.lastStrongRTL = -1;    /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+        levState.state = 0;
+        levState.runLevel = levels[start];
+        levState.impTab = impTabPair.imptab[levState.runLevel & 1];
+        levState.impAct = impTabPair.impact[levState.runLevel & 1];
+        processPropertySeq(levState, (short)sor, start, start);
+        /* initialize for property state table */
+        if (dirProps[start] == NSM) {
+            stateImp = (short)(1 + sor);
+        } else {
+            stateImp = 0;
+        }
+        start1 = start;
+        start2 = 0;
+
+        for (i = start; i <= limit; i++) {
+            if (i >= limit) {
+                gprop = eor;
+            } else {
+                short prop, prop1;
+                prop = NoContextRTL(dirProps[i]);
+                if (inverseRTL) {
+                    if (prop == AL) {
+                        /* AL before EN does not make it AN */
+                        prop = R;
+                    } else if (prop == EN) {
+                        if (nextStrongPos <= i) {
+                            /* look for next strong char (L/R/AL) */
+                            int j;
+                            nextStrongProp = R;     /* set default */
+                            nextStrongPos = limit;
+                            for (j = i+1; j < limit; j++) {
+                                prop1 = NoContextRTL(dirProps[j]);
+                                if (prop1 == L || prop1 == R || prop1 == AL) {
+                                    nextStrongProp = prop1;
+                                    nextStrongPos = j;
+                                    break;
+                                }
+                            }
+                        }
+                        if (nextStrongProp == AL) {
+                            prop = AN;
+                        }
+                    }
+                }
+                gprop = groupProp[prop];
+            }
+            oldStateImp = stateImp;
+            cell = impTabProps[oldStateImp][gprop];
+            stateImp = GetStateProps(cell);     /* isolate the new state */
+            actionImp = GetActionProps(cell);   /* isolate the action */
+            if ((i == limit) && (actionImp == 0)) {
+                /* there is an unprocessed sequence if its property == eor   */
+                actionImp = 1;                  /* process the last sequence */
+            }
+            if (actionImp != 0) {
+                resProp = impTabProps[oldStateImp][IMPTABPROPS_RES];
+                switch (actionImp) {
+                case 1:             /* process current seq1, init new seq1 */
+                    processPropertySeq(levState, resProp, start1, i);
+                    start1 = i;
+                    break;
+                case 2:             /* init new seq2 */
+                    start2 = i;
+                    break;
+                case 3:             /* process seq1, process seq2, init new seq1 */
+                    processPropertySeq(levState, resProp, start1, start2);
+                    processPropertySeq(levState, _ON, start2, i);
+                    start1 = i;
+                    break;
+                case 4:             /* process seq1, set seq1=seq2, init new seq2 */
+                    processPropertySeq(levState, resProp, start1, start2);
+                    start1 = start2;
+                    start2 = i;
+                    break;
+                default:            /* we should never get here */
+                    throw new IllegalStateException("Internal ICU error in resolveImplicitLevels");
+                }
+            }
+        }
+        /* flush possible pending sequence, e.g. ON */
+        processPropertySeq(levState, (short)eor, limit, limit);
+    }
+
+    /* perform (L1) and (X9) ---------------------------------------------------- */
+
+    /*
+     * Reset the embedding levels for some non-graphic characters (L1).
+     * This method also sets appropriate levels for BN, and
+     * explicit embedding types that are supposed to have been removed
+     * from the paragraph in (X9).
+     */
+    private void adjustWSLevels() {
+        int i;
+
+        if ((flags & MASK_WS) != 0) {
+            int flag;
+            i = trailingWSStart;
+            while (i > 0) {
+                /* reset a sequence of WS/BN before eop and B/S to the paragraph paraLevel */
+                while (i > 0 && ((flag = DirPropFlagNC(dirProps[--i])) & MASK_WS) != 0) {
+                    if (orderParagraphsLTR && (flag & DirPropFlag(B)) != 0) {
+                        levels[i] = 0;
+                    } else {
+                        levels[i] = GetParaLevelAt(i);
+                    }
+                }
+
+                /* reset BN to the next character's paraLevel until B/S, which restarts above loop */
+                /* here, i+1 is guaranteed to be <length */
+                while (i > 0) {
+                    flag = DirPropFlagNC(dirProps[--i]);
+                    if ((flag & MASK_BN_EXPLICIT) != 0) {
+                        levels[i] = levels[i + 1];
+                    } else if (orderParagraphsLTR && (flag & DirPropFlag(B)) != 0) {
+                        levels[i] = 0;
+                        break;
+                    } else if ((flag & MASK_B_S) != 0){
+                        levels[i] = GetParaLevelAt(i);
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    int Bidi_Min(int x, int y) {
+        return x < y ? x : y;
+    }
+
+    int Bidi_Abs(int x) {
+        return x >= 0 ? x : -x;
+    }
+
+    void setParaRunsOnly(char[] parmText, byte parmParaLevel) {
+        int[] visualMap;
+        String visualText;
+        int saveLength, saveTrailingWSStart;
+        byte[] saveLevels;
+        byte saveDirection;
+        int i, j, visualStart, logicalStart,
+            oldRunCount, runLength, addedRuns, insertRemove,
+            start, limit, step, indexOddBit, logicalPos,
+            index, index1;
+        int saveOptions;
+
+        reorderingMode = REORDER_DEFAULT;
+        int parmLength = parmText.length;
+        if (parmLength == 0) {
+            setPara(parmText, parmParaLevel, null);
+            reorderingMode = REORDER_RUNS_ONLY;
+            return;
+        }
+        /* obtain memory for mapping table and visual text */
+        saveOptions = reorderingOptions;
+        if ((saveOptions & OPTION_INSERT_MARKS) > 0) {
+            reorderingOptions &= ~OPTION_INSERT_MARKS;
+            reorderingOptions |= OPTION_REMOVE_CONTROLS;
+        }
+        parmParaLevel &= 1;             /* accept only 0 or 1 */
+        setPara(parmText, parmParaLevel, null);
+        /* we cannot access directly pBiDi->levels since it is not yet set if
+         * direction is not MIXED
+         */
+        saveLevels = new byte[this.length];
+        System.arraycopy(getLevels(), 0, saveLevels, 0, this.length);
+        saveTrailingWSStart = trailingWSStart;
+
+        /* FOOD FOR THOUGHT: instead of writing the visual text, we could use
+         * the visual map and the dirProps array to drive the second call
+         * to setPara (but must make provision for possible removal of
+         * Bidi controls.  Alternatively, only use the dirProps array via
+         * customized classifier callback.
+         */
+        visualText = writeReordered(DO_MIRRORING);
+        visualMap = getVisualMap();
+        this.reorderingOptions = saveOptions;
+        saveLength = this.length;
+        saveDirection=this.direction;
+
+        this.reorderingMode = REORDER_INVERSE_LIKE_DIRECT;
+        parmParaLevel ^= 1;
+        setPara(visualText, parmParaLevel, null);
+        BidiLine.getRuns(this);
+        /* check if some runs must be split, count how many splits */
+        addedRuns = 0;
+        oldRunCount = this.runCount;
+        visualStart = 0;
+        for (i = 0; i < oldRunCount; i++, visualStart += runLength) {
+            runLength = runs[i].limit - visualStart;
+            if (runLength < 2) {
+                continue;
+            }
+            logicalStart = runs[i].start;
+            for (j = logicalStart+1; j < logicalStart+runLength; j++) {
+                index = visualMap[j];
+                index1 = visualMap[j-1];
+                if ((Bidi_Abs(index-index1)!=1) || (saveLevels[index]!=saveLevels[index1])) {
+                    addedRuns++;
+                }
+            }
+        }
+        if (addedRuns > 0) {
+            getRunsMemory(oldRunCount + addedRuns);
+            if (runCount == 1) {
+                /* because we switch from UBiDi.simpleRuns to UBiDi.runs */
+                runsMemory[0] = runs[0];
+            } else {
+                System.arraycopy(runs, 0, runsMemory, 0, runCount);
+            }
+            runs = runsMemory;
+            runCount += addedRuns;
+            for (i = oldRunCount; i < runCount; i++) {
+                if (runs[i] == null) {
+                    runs[i] = new BidiRun(0, 0, (byte)0);
+                }
+            }
+        }
+        /* split runs which are not consecutive in source text */
+        int newI;
+        for (i = oldRunCount-1; i >= 0; i--) {
+            newI = i + addedRuns;
+            runLength = i==0 ? runs[0].limit :
+                               runs[i].limit - runs[i-1].limit;
+            logicalStart = runs[i].start;
+            indexOddBit = runs[i].level & 1;
+            if (runLength < 2) {
+                if (addedRuns > 0) {
+                    runs[newI].copyFrom(runs[i]);
+                }
+                logicalPos = visualMap[logicalStart];
+                runs[newI].start = logicalPos;
+                runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+                continue;
+            }
+            if (indexOddBit > 0) {
+                start = logicalStart;
+                limit = logicalStart + runLength - 1;
+                step = 1;
+            } else {
+                start = logicalStart + runLength - 1;
+                limit = logicalStart;
+                step = -1;
+            }
+            for (j = start; j != limit; j += step) {
+                index = visualMap[j];
+                index1 = visualMap[j+step];
+                if ((Bidi_Abs(index-index1)!=1) || (saveLevels[index]!=saveLevels[index1])) {
+                    logicalPos = Bidi_Min(visualMap[start], index);
+                    runs[newI].start = logicalPos;
+                    runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+                    runs[newI].limit = runs[i].limit;
+                    runs[i].limit -= Bidi_Abs(j - start) + 1;
+                    insertRemove = runs[i].insertRemove & (LRM_AFTER|RLM_AFTER);
+                    runs[newI].insertRemove = insertRemove;
+                    runs[i].insertRemove &= ~insertRemove;
+                    start = j + step;
+                    addedRuns--;
+                    newI--;
+                }
+            }
+            if (addedRuns > 0) {
+                runs[newI].copyFrom(runs[i]);
+            }
+            logicalPos = Bidi_Min(visualMap[start], visualMap[limit]);
+            runs[newI].start = logicalPos;
+            runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+        }
+
+//    cleanup1:
+        /* restore initial paraLevel */
+        this.paraLevel ^= 1;
+//    cleanup2:
+        /* restore real text */
+        this.text = parmText;
+        this.length = saveLength;
+        this.originalLength = parmLength;
+        this.direction=saveDirection;
+        this.levels = saveLevels;
+        this.trailingWSStart = saveTrailingWSStart;
+        /* free memory for mapping table and visual text */
+        visualMap = null;
+        visualText = null;
+        if (runCount > 1) {
+            this.direction = MIXED;
+        }
+//    cleanup3:
+        this.reorderingMode = REORDER_RUNS_ONLY;
+    }
+
+    /**
+     * Perform the Unicode Bidi algorithm. It is defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a piece of plain text containing one or more paragraphs,
+     * with or without externally specified embedding levels from <i>styled</i>
+     * text and computes the left-right-directionality of each character.<p>
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * The text can be composed of multiple paragraphs. Occurrence of a block
+     * separator in the text terminates a paragraph, and whatever comes next starts
+     * a new paragraph. The exception to this rule is when a Carriage Return (CR)
+     * is followed by a Line Feed (LF). Both CR and LF are block separators, but
+     * in that case, the pair of characters is considered as terminating the
+     * preceding paragraph, and a new paragraph will be started by a character
+     * coming after the LF.
+     *
+     * Although the text is passed here as a <code>String</code>, it is
+     * stored internally as an array of characters. Therefore the
+     * documentation will refer to indexes of the characters in the text.
+     *
+     * @param text contains the text that the Bidi algorithm will be performed
+     *        on. This text can be retrieved with <code>getText()</code> or
+     *        <code>getTextAsString</code>.<br>
+     *
+     * @param paraLevel specifies the default level for the text;
+     *        it is typically 0 (LTR) or 1 (RTL).
+     *        If the method shall determine the paragraph level from the text,
+     *        then <code>paraLevel</code> can be set to
+     *        either <code>LEVEL_DEFAULT_LTR</code>
+     *        or <code>LEVEL_DEFAULT_RTL</code>; if the text contains multiple
+     *        paragraphs, the paragraph level shall be determined separately for
+     *        each paragraph; if a paragraph does not include any strongly typed
+     *        character, then the desired default is used (0 for LTR or 1 for RTL).
+     *        Any other value between 0 and <code>MAX_EXPLICIT_LEVEL</code>
+     *        is also valid, with odd levels indicating RTL.
+     *
+     * @param embeddingLevels (in) may be used to preset the embedding and override levels,
+     *        ignoring characters like LRE and PDF in the text.
+     *        A level overrides the directional property of its corresponding
+     *        (same index) character if the level has the
+     *        <code>LEVEL_OVERRIDE</code> bit set.<br><br>
+     *        Except for that bit, it must be
+     *        <code>paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL</code>,
+     *        with one exception: a level of zero may be specified for a
+     *        paragraph separator even if <code>paraLevel&gt;0</code> when multiple
+     *        paragraphs are submitted in the same call to <code>setPara()</code>.<br><br>
+     *        <strong>Caution: </strong>A reference to this array, not a copy
+     *        of the levels, will be stored in the <code>Bidi</code> object;
+     *        the <code>embeddingLevels</code>
+     *        should not be modified to avoid unexpected results on subsequent
+     *        Bidi operations. However, the <code>setPara()</code> and
+     *        <code>setLine()</code> methods may modify some or all of the
+     *        levels.<br><br>
+     *        <strong>Note:</strong> the <code>embeddingLevels</code> array must
+     *        have one entry for each character in <code>text</code>.
+     *
+     * @throws IllegalArgumentException if the values in embeddingLevels are
+     *         not within the allowed range
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #LEVEL_OVERRIDE
+     * @see #MAX_EXPLICIT_LEVEL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(String text, byte paraLevel, byte[] embeddingLevels)
+    {
+        if (text == null) {
+            setPara(new char[0], paraLevel, embeddingLevels);
+        } else {
+            setPara(text.toCharArray(), paraLevel, embeddingLevels);
+        }
+    }
+
+    /**
+     * Perform the Unicode Bidi algorithm. It is defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a piece of plain text containing one or more paragraphs,
+     * with or without externally specified embedding levels from <i>styled</i>
+     * text and computes the left-right-directionality of each character.<p>
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * The text can be composed of multiple paragraphs. Occurrence of a block
+     * separator in the text terminates a paragraph, and whatever comes next starts
+     * a new paragraph. The exception to this rule is when a Carriage Return (CR)
+     * is followed by a Line Feed (LF). Both CR and LF are block separators, but
+     * in that case, the pair of characters is considered as terminating the
+     * preceding paragraph, and a new paragraph will be started by a character
+     * coming after the LF.
+     *
+     * The text is stored internally as an array of characters. Therefore the
+     * documentation will refer to indexes of the characters in the text.
+     *
+     * @param chars contains the text that the Bidi algorithm will be performed
+     *        on. This text can be retrieved with <code>getText()</code> or
+     *        <code>getTextAsString</code>.<br>
+     *
+     * @param paraLevel specifies the default level for the text;
+     *        it is typically 0 (LTR) or 1 (RTL).
+     *        If the method shall determine the paragraph level from the text,
+     *        then <code>paraLevel</code> can be set to
+     *        either <code>LEVEL_DEFAULT_LTR</code>
+     *        or <code>LEVEL_DEFAULT_RTL</code>; if the text contains multiple
+     *        paragraphs, the paragraph level shall be determined separately for
+     *        each paragraph; if a paragraph does not include any strongly typed
+     *        character, then the desired default is used (0 for LTR or 1 for RTL).
+     *        Any other value between 0 and <code>MAX_EXPLICIT_LEVEL</code>
+     *        is also valid, with odd levels indicating RTL.
+     *
+     * @param embeddingLevels (in) may be used to preset the embedding and
+     *        override levels, ignoring characters like LRE and PDF in the text.
+     *        A level overrides the directional property of its corresponding
+     *        (same index) character if the level has the
+     *        <code>LEVEL_OVERRIDE</code> bit set.<br><br>
+     *        Except for that bit, it must be
+     *        <code>paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL</code>,
+     *        with one exception: a level of zero may be specified for a
+     *        paragraph separator even if <code>paraLevel&gt;0</code> when multiple
+     *        paragraphs are submitted in the same call to <code>setPara()</code>.<br><br>
+     *        <strong>Caution: </strong>A reference to this array, not a copy
+     *        of the levels, will be stored in the <code>Bidi</code> object;
+     *        the <code>embeddingLevels</code>
+     *        should not be modified to avoid unexpected results on subsequent
+     *        Bidi operations. However, the <code>setPara()</code> and
+     *        <code>setLine()</code> methods may modify some or all of the
+     *        levels.<br><br>
+     *        <strong>Note:</strong> the <code>embeddingLevels</code> array must
+     *        have one entry for each character in <code>text</code>.
+     *
+     * @throws IllegalArgumentException if the values in embeddingLevels are
+     *         not within the allowed range
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #LEVEL_OVERRIDE
+     * @see #MAX_EXPLICIT_LEVEL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(char[] chars, byte paraLevel, byte[] embeddingLevels)
+    {
+        /* check the argument values */
+        if (paraLevel < LEVEL_DEFAULT_LTR) {
+            verifyRange(paraLevel, 0, MAX_EXPLICIT_LEVEL + 1);
+        }
+        if (chars == null) {
+            chars = new char[0];
+        }
+
+        /* special treatment for RUNS_ONLY mode */
+        if (reorderingMode == REORDER_RUNS_ONLY) {
+            setParaRunsOnly(chars, paraLevel);
+            return;
+        }
+
+        /* initialize the Bidi object */
+        this.paraBidi = null;          /* mark unfinished setPara */
+        this.text = chars;
+        this.length = this.originalLength = this.resultLength = text.length;
+        this.paraLevel = paraLevel;
+        this.direction = LTR;
+        this.paraCount = 1;
+
+        /* Allocate zero-length arrays instead of setting to null here; then
+         * checks for null in various places can be eliminated.
+         */
+        dirProps = new byte[0];
+        levels = new byte[0];
+        runs = new BidiRun[0];
+        isGoodLogicalToVisualRunsMap = false;
+        insertPoints.size = 0;          /* clean up from last call */
+        insertPoints.confirmed = 0;     /* clean up from last call */
+
+        /*
+         * Save the original paraLevel if contextual; otherwise, set to 0.
+         */
+        if (IsDefaultLevel(paraLevel)) {
+            defaultParaLevel = paraLevel;
+        } else {
+            defaultParaLevel = 0;
+        }
+
+        if (length == 0) {
+            /*
+             * For an empty paragraph, create a Bidi object with the paraLevel and
+             * the flags and the direction set but without allocating zero-length arrays.
+             * There is nothing more to do.
+             */
+            if (IsDefaultLevel(paraLevel)) {
+                this.paraLevel &= 1;
+                defaultParaLevel = 0;
+            }
+            if ((this.paraLevel & 1) != 0) {
+                flags = DirPropFlag(R);
+                direction = RTL;
+            } else {
+                flags = DirPropFlag(L);
+                direction = LTR;
+            }
+
+            runCount = 0;
+            paraCount = 0;
+            paraBidi = this;         /* mark successful setPara */
+            return;
+        }
+
+        runCount = -1;
+
+        /*
+         * Get the directional properties,
+         * the flags bit-set, and
+         * determine the paragraph level if necessary.
+         */
+        getDirPropsMemory(length);
+        dirProps = dirPropsMemory;
+        getDirProps();
+        /* the processed length may have changed if OPTION_STREAMING is set */
+        trailingWSStart = length;  /* the levels[] will reflect the WS run */
+
+        /* allocate paras memory */
+        if (paraCount > 1) {
+            getInitialParasMemory(paraCount);
+            paras = parasMemory;
+            paras[paraCount - 1] = length;
+        } else {
+            /* initialize paras for single paragraph */
+            paras = simpleParas;
+            simpleParas[0] = length;
+        }
+
+        /* are explicit levels specified? */
+        if (embeddingLevels == null) {
+            /* no: determine explicit levels according to the (Xn) rules */
+            getLevelsMemory(length);
+            levels = levelsMemory;
+            direction = resolveExplicitLevels();
+        } else {
+            /* set BN for all explicit codes, check that all levels are 0 or paraLevel..MAX_EXPLICIT_LEVEL */
+            levels = embeddingLevels;
+            direction = checkExplicitLevels();
+        }
+
+        /*
+         * The steps after (X9) in the Bidi algorithm are performed only if
+         * the paragraph text has mixed directionality!
+         */
+        switch (direction) {
+        case LTR:
+            /* make sure paraLevel is even */
+            paraLevel = (byte)((paraLevel + 1) & ~1);
+
+            /* all levels are implicitly at paraLevel (important for getLevels()) */
+            trailingWSStart = 0;
+            break;
+        case RTL:
+            /* make sure paraLevel is odd */
+            paraLevel |= 1;
+
+            /* all levels are implicitly at paraLevel (important for getLevels()) */
+            trailingWSStart = 0;
+            break;
+        default:
+            /*
+             *  Choose the right implicit state table
+             */
+            switch(reorderingMode) {
+            case REORDER_DEFAULT:
+                this.impTabPair = impTab_DEFAULT;
+                break;
+            case REORDER_NUMBERS_SPECIAL:
+                this.impTabPair = impTab_NUMBERS_SPECIAL;
+                break;
+            case REORDER_GROUP_NUMBERS_WITH_R:
+                this.impTabPair = impTab_GROUP_NUMBERS_WITH_R;
+                break;
+            case REORDER_RUNS_ONLY:
+                /* we should never get here */
+                throw new InternalError("Internal ICU error in setPara");
+                /* break; */
+            case REORDER_INVERSE_NUMBERS_AS_L:
+                this.impTabPair = impTab_INVERSE_NUMBERS_AS_L;
+                break;
+            case REORDER_INVERSE_LIKE_DIRECT:
+                if ((reorderingOptions & OPTION_INSERT_MARKS) != 0) {
+                    this.impTabPair = impTab_INVERSE_LIKE_DIRECT_WITH_MARKS;
+                } else {
+                    this.impTabPair = impTab_INVERSE_LIKE_DIRECT;
+                }
+                break;
+            case REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
+                if ((reorderingOptions & OPTION_INSERT_MARKS) != 0) {
+                    this.impTabPair = impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS;
+                } else {
+                    this.impTabPair = impTab_INVERSE_FOR_NUMBERS_SPECIAL;
+                }
+                break;
+            }
+            /*
+             * If there are no external levels specified and there
+             * are no significant explicit level codes in the text,
+             * then we can treat the entire paragraph as one run.
+             * Otherwise, we need to perform the following rules on runs of
+             * the text with the same embedding levels. (X10)
+             * "Significant" explicit level codes are ones that actually
+             * affect non-BN characters.
+             * Examples for "insignificant" ones are empty embeddings
+             * LRE-PDF, LRE-RLE-PDF-PDF, etc.
+             */
+            if (embeddingLevels == null && paraCount <= 1 &&
+                (flags & DirPropFlagMultiRuns) == 0) {
+                resolveImplicitLevels(0, length,
+                        GetLRFromLevel(GetParaLevelAt(0)),
+                        GetLRFromLevel(GetParaLevelAt(length - 1)));
+            } else {
+                /* sor, eor: start and end types of same-level-run */
+                int start, limit = 0;
+                byte level, nextLevel;
+                short sor, eor;
+
+                /* determine the first sor and set eor to it because of the loop body (sor=eor there) */
+                level = GetParaLevelAt(0);
+                nextLevel = levels[0];
+                if (level < nextLevel) {
+                    eor = GetLRFromLevel(nextLevel);
+                } else {
+                    eor = GetLRFromLevel(level);
+                }
+
+                do {
+                    /* determine start and limit of the run (end points just behind the run) */
+
+                    /* the values for this run's start are the same as for the previous run's end */
+                    start = limit;
+                    level = nextLevel;
+                    if ((start > 0) && (NoContextRTL(dirProps[start - 1]) == B)) {
+                        /* except if this is a new paragraph, then set sor = para level */
+                        sor = GetLRFromLevel(GetParaLevelAt(start));
+                    } else {
+                        sor = eor;
+                    }
+
+                    /* search for the limit of this run */
+                    while (++limit < length && levels[limit] == level) {}
+
+                    /* get the correct level of the next run */
+                    if (limit < length) {
+                        nextLevel = levels[limit];
+                    } else {
+                        nextLevel = GetParaLevelAt(length - 1);
+                    }
+
+                    /* determine eor from max(level, nextLevel); sor is last run's eor */
+                    if ((level & ~LEVEL_OVERRIDE) < (nextLevel & ~LEVEL_OVERRIDE)) {
+                        eor = GetLRFromLevel(nextLevel);
+                    } else {
+                        eor = GetLRFromLevel(level);
+                    }
+
+                    /* if the run consists of overridden directional types, then there
+                       are no implicit types to be resolved */
+                    if ((level & LEVEL_OVERRIDE) == 0) {
+                        resolveImplicitLevels(start, limit, sor, eor);
+                    } else {
+                        /* remove the LEVEL_OVERRIDE flags */
+                        do {
+                            levels[start++] &= ~LEVEL_OVERRIDE;
+                        } while (start < limit);
+                    }
+                } while (limit  < length);
+            }
+
+            /* reset the embedding levels for some non-graphic characters (L1), (X9) */
+            adjustWSLevels();
+
+            break;
+        }
+        /* add RLM for inverse Bidi with contextual orientation resolving
+         * to RTL which would not round-trip otherwise
+         */
+        if ((defaultParaLevel > 0) &&
+            ((reorderingOptions & OPTION_INSERT_MARKS) != 0) &&
+            ((reorderingMode == REORDER_INVERSE_LIKE_DIRECT) ||
+             (reorderingMode == REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) {
+            int start, last;
+            byte dirProp;
+            for (int i = 0; i < paraCount; i++) {
+                last = paras[i] - 1;
+                if ((dirProps[last] & CONTEXT_RTL) == 0) {
+                    continue;           /* LTR paragraph */
+                }
+                start= i == 0 ? 0 : paras[i - 1];
+                for (int j = last; j >= start; j--) {
+                    dirProp = NoContextRTL(dirProps[j]);
+                    if (dirProp == L) {
+                        if (j < last) {
+                            while (NoContextRTL(dirProps[last]) == B) {
+                                last--;
+                            }
+                        }
+                        addPoint(last, RLM_BEFORE);
+                        break;
+                    }
+                    if ((DirPropFlag(dirProp) & MASK_R_AL) != 0) {
+                        break;
+                    }
+                }
+            }
+        }
+
+        if ((reorderingOptions & OPTION_REMOVE_CONTROLS) != 0) {
+            resultLength -= controlCount;
+        } else {
+            resultLength += insertPoints.size;
+        }
+        paraBidi = this;             /* mark successful setPara */
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Perform the Unicode Bidi algorithm on a given paragraph, as defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a paragraph of text and computes the
+     * left-right-directionality of each character. The text should not
+     * contain any Unicode block separators.<p>
+     *
+     * The RUN_DIRECTION attribute in the text, if present, determines the base
+     * direction (left-to-right or right-to-left). If not present, the base
+     * direction is computed using the Unicode Bidirectional Algorithm,
+     * defaulting to left-to-right if there are no strong directional characters
+     * in the text. This attribute, if present, must be applied to all the text
+     * in the paragraph.<p>
+     *
+     * The BIDI_EMBEDDING attribute in the text, if present, represents
+     * embedding level information. Negative values from -1 to -62 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 62 indicate embeddings. Where values are zero or not defined, the base
+     * embedding level as determined by the base direction is assumed.<p>
+     *
+     * The NUMERIC_SHAPING attribute in the text, if present, converts European
+     * digits to other decimal digits before running the bidi algorithm. This
+     * attribute, if present, must be applied to all the text in the paragraph.
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * @param paragraph a paragraph of text with optional character and
+     *        paragraph attribute information
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(AttributedCharacterIterator paragraph)
+    {
+        byte paraLvl;
+        Boolean runDirection = (Boolean) paragraph.getAttribute(TextAttribute.RUN_DIRECTION);
+        if (runDirection == null) {
+            paraLvl = LEVEL_DEFAULT_LTR;
+        } else {
+            paraLvl = (runDirection.equals(TextAttribute.RUN_DIRECTION_LTR)) ?
+                        LTR : RTL;
+        }
+
+        byte[] lvls = null;
+        int len = paragraph.getEndIndex() - paragraph.getBeginIndex();
+        byte[] embeddingLevels = new byte[len];
+        char[] txt = new char[len];
+        int i = 0;
+        char ch = paragraph.first();
+        while (ch != AttributedCharacterIterator.DONE) {
+            txt[i] = ch;
+            Integer embedding = (Integer) paragraph.getAttribute(TextAttribute.BIDI_EMBEDDING);
+            if (embedding != null) {
+                byte level = embedding.byteValue();
+                if (level == 0) {
+                    /* no-op */
+                } else if (level < 0) {
+                    lvls = embeddingLevels;
+                    embeddingLevels[i] = (byte)((0 - level) | LEVEL_OVERRIDE);
+                } else {
+                    lvls = embeddingLevels;
+                    embeddingLevels[i] = level;
+                }
+            }
+            ch = paragraph.next();
+            ++i;
+        }
+
+//#if defined(J2SE13)
+//#else
+        NumericShaper shaper = (NumericShaper) paragraph.getAttribute(TextAttribute.NUMERIC_SHAPING);
+        if (shaper != null) {
+            shaper.shape(txt, 0, len);
+        }
+//#endif
+        setPara(txt, paraLvl, lvls);
+    }
+//#endif
+
+    /**
+     * Specify whether block separators must be allocated level zero,
+     * so that successive paragraphs will progress from left to right.
+     * This method must be called before <code>setPara()</code>.
+     * Paragraph separators (B) may appear in the text.  Setting them to level zero
+     * means that all paragraph separators (including one possibly appearing
+     * in the last text position) are kept in the reordered text after the text
+     * that they follow in the source text.
+     * When this feature is not enabled, a paragraph separator at the last
+     * position of the text before reordering will go to the first position
+     * of the reordered text when the paragraph level is odd.
+     *
+     * @param ordarParaLTR specifies whether paragraph separators (B) must
+     * receive level 0, so that successive paragraphs progress from left to right.
+     *
+     * @see #setPara
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void orderParagraphsLTR(boolean ordarParaLTR) {
+        orderParagraphsLTR = ordarParaLTR;
+    }
+
+    /**
+     * Is this <code>Bidi</code> object set to allocate level 0 to block
+     * separators so that successive paragraphs progress from left to right?
+     *
+     * @return <code>true</code> if the <code>Bidi</code> object is set to
+     *         allocate level 0 to block separators.
+     *
+     * @see #orderParagraphsLTR
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOrderParagraphsLTR() {
+        return orderParagraphsLTR;
+    }
+
+    /**
+     * Get the directionality of the text.
+     *
+     * @return a value of <code>LTR</code>, <code>RTL</code> or <code>MIXED</code>
+     *         that indicates if the entire text
+     *         represented by this object is unidirectional,
+     *         and which direction, or if it is mixed-directional.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #LTR
+     * @see #RTL
+     * @see #MIXED
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getDirection()
+    {
+        verifyValidParaOrLine();
+        return direction;
+    }
+
+    /**
+     * Get the text.
+     *
+     * @return A <code>String</code> containing the text that the
+     *         <code>Bidi</code> object was created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #setLine
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getTextAsString()
+    {
+        verifyValidParaOrLine();
+        return new String(text);
+    }
+
+    /**
+     * Get the text.
+     *
+     * @return A <code>char</code> array containing the text that the
+     *         <code>Bidi</code> object was created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #setLine
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public char[] getText()
+    {
+        verifyValidParaOrLine();
+        return text;
+    }
+
+    /**
+     * Get the length of the text.
+     *
+     * @return The length of the text that the <code>Bidi</code> object was
+     *         created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getLength()
+    {
+        verifyValidParaOrLine();
+        return originalLength;
+    }
+
+    /**
+     * Get the length of the source text processed by the last call to
+     * <code>setPara()</code>. This length may be different from the length of
+     * the source text if option <code>OPTION_STREAMING</code> has been
+     * set.
+     * <br>
+     * Note that whenever the length of the text affects the execution or the
+     * result of a method, it is the processed length which must be considered,
+     * except for <code>setPara</code> (which receives unprocessed source text)
+     * and <code>getLength</code> (which returns the original length of the
+     * source text).<br>
+     * In particular, the processed length is the one to consider in the
+     * following cases:
+     * <ul>
+     * <li>maximum value of the <code>limit</code> argument of
+     * <code>setLine</code></li>
+     * <li>maximum value of the <code>charIndex</code> argument of
+     * <code>getParagraph</code></li>
+     * <li>maximum value of the <code>charIndex</code> argument of
+     * <code>getLevelAt</code></li>
+     * <li>number of elements in the array returned by <code>getLevels</code>
+     * </li>
+     * <li>maximum value of the <code>logicalStart</code> argument of
+     * <code>getLogicalRun</code></li>
+     * <li>maximum value of the <code>logicalIndex</code> argument of
+     * <code>getVisualIndex</code></li>
+     * <li>number of elements returned by <code>getLogicalMap</code></li>
+     * <li>length of text processed by <code>writeReordered</code></li>
+     * </ul>
+     *
+     * @return The length of the part of the source text processed by
+     *         the last call to <code>setPara</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #OPTION_STREAMING
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getProcessedLength() {
+        verifyValidParaOrLine();
+        return length;
+    }
+
+    /**
+     * Get the length of the reordered text resulting from the last call to
+     * <code>setPara()</code>. This length may be different from the length
+     * of the source text if option <code>OPTION_INSERT_MARKS</code>
+     * or option <code>OPTION_REMOVE_CONTROLS</code> has been set.
+     * <br>
+     * This resulting length is the one to consider in the following cases:
+     * <ul>
+     * <li>maximum value of the <code>visualIndex</code> argument of
+     * <code>getLogicalIndex</code></li>
+     * <li>number of elements returned by <code>getVisualMap</code></li>
+     * </ul>
+     * Note that this length stays identical to the source text length if
+     * Bidi marks are inserted or removed using option bits of
+     * <code>writeReordered</code>, or if option
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> has been set.
+     *
+     * @return The length of the reordered text resulting from
+     *         the last call to <code>setPara</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getResultLength() {
+        verifyValidParaOrLine();
+        return resultLength;
+    }
+
+    /* paragraphs API methods ------------------------------------------------- */
+
+    /**
+     * Get the paragraph level of the text.
+     *
+     * @return The paragraph level. If there are multiple paragraphs, their
+     *         level may vary if the required paraLevel is LEVEL_DEFAULT_LTR or
+     *         LEVEL_DEFAULT_RTL.  In that case, the level of the first paragraph
+     *         is returned.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #getParagraph
+     * @see #getParagraphByIndex
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getParaLevel()
+    {
+        verifyValidParaOrLine();
+        return paraLevel;
+    }
+
+    /**
+     * Get the number of paragraphs.
+     *
+     * @return The number of paragraphs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int countParagraphs()
+    {
+        verifyValidParaOrLine();
+        return paraCount;
+    }
+
+    /**
+     * Get a paragraph, given the index of this paragraph.
+     *
+     * This method returns information about a paragraph.<p>
+     *
+     * @param paraIndex is the number of the paragraph, in the
+     *        range <code>[0..countParagraphs()-1]</code>.
+     *
+     * @return a BidiRun object with the details of the paragraph:<br>
+     *        <code>start</code> will receive the index of the first character
+     *        of the paragraph in the text.<br>
+     *        <code>limit</code> will receive the limit of the paragraph.<br>
+     *        <code>embeddingLevel</code> will receive the level of the paragraph.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if paraIndex is not in the range
+     *        <code>[0..countParagraphs()-1]</code>
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getParagraphByIndex(int paraIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(paraIndex, 0, paraCount);
+
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        int paraStart;
+        if (paraIndex == 0) {
+            paraStart = 0;
+        } else {
+            paraStart = bidi.paras[paraIndex - 1];
+        }
+        BidiRun bidiRun = new BidiRun();
+        bidiRun.start = paraStart;
+        bidiRun.limit = bidi.paras[paraIndex];
+        bidiRun.level = GetParaLevelAt(paraStart);
+        return bidiRun;
+    }
+
+    /**
+     * Get a paragraph, given a position within the text.
+     * This method returns information about a paragraph.<br>
+     * Note: if the paragraph index is known, it is more efficient to
+     * retrieve the paragraph information using getParagraphByIndex().<p>
+     *
+     * @param charIndex is the index of a character within the text, in the
+     *        range <code>[0..getProcessedLength()-1]</code>.
+     *
+     * @return a BidiRun object with the details of the paragraph:<br>
+     *        <code>start</code> will receive the index of the first character
+     *        of the paragraph in the text.<br>
+     *        <code>limit</code> will receive the limit of the paragraph.<br>
+     *        <code>embeddingLevel</code> will receive the level of the paragraph.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not within the legal range
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see #getParagraphByIndex
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getParagraph(int charIndex)
+    {
+        verifyValidParaOrLine();
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        verifyRange(charIndex, 0, bidi.length);
+        int paraIndex;
+        for (paraIndex = 0; charIndex >= bidi.paras[paraIndex]; paraIndex++) {
+        }
+        return getParagraphByIndex(paraIndex);
+    }
+
+    /**
+     * Get the index of a paragraph, given a position within the text.<p>
+     *
+     * @param charIndex is the index of a character within the text, in the
+     *        range <code>[0..getProcessedLength()-1]</code>.
+     *
+     * @return The index of the paragraph containing the specified position,
+     *         starting from 0.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not within the legal range
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getParagraphIndex(int charIndex)
+    {
+        verifyValidParaOrLine();
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        verifyRange(charIndex, 0, bidi.length);
+        int paraIndex;
+        for (paraIndex = 0; charIndex >= bidi.paras[paraIndex]; paraIndex++) {
+        }
+        return paraIndex;
+    }
+
+    /**
+     * Set a custom Bidi classifier used by the UBA implementation for Bidi
+     * class determination.
+     *
+     * @param classifier A new custom classifier. This can be null.
+     *
+     * @see #getCustomClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCustomClassifier(BidiClassifier classifier) {
+        this.customClassifier = classifier;
+    }
+
+    /**
+     * Gets the current custom class classifier used for Bidi class
+     * determination.
+     *
+     * @return An instance of class <code>BidiClassifier</code>
+     *
+     * @see #setCustomClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiClassifier getCustomClassifier() {
+        return this.customClassifier;
+    }
+
+    /**
+     * Retrieves the Bidi class for a given code point.
+     * <p>If a <code>BidiClassifier</code> is defined and returns a value
+     * other than <code>CLASS_DEFAULT</code>, that value is used; otherwise
+     * the default class determination mechanism is invoked.</p>
+     *
+     * @param c The code point to get a Bidi class for.
+     *
+     * @return The Bidi class for the character <code>c</code> that is in effect
+     *         for this <code>Bidi</code> instance.
+     *
+     * @see BidiClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getCustomizedClass(int c) {
+        int dir;
+
+        if (customClassifier == null ||
+            (dir = customClassifier.classify(c)) == Bidi.CLASS_DEFAULT) {
+            return bdp.getClass(c);
+        } else {
+            return dir;
+        }
+    }
+
+    /**
+     * <code>setLine()</code> returns a <code>Bidi</code> object to
+     * contain the reordering information, especially the resolved levels,
+     * for all the characters in a line of text. This line of text is
+     * specified by referring to a <code>Bidi</code> object representing
+     * this information for a piece of text containing one or more paragraphs,
+     * and by specifying a range of indexes in this text.<p>
+     * In the new line object, the indexes will range from 0 to <code>limit-start-1</code>.<p>
+     *
+     * This is used after calling <code>setPara()</code>
+     * for a piece of text, and after line-breaking on that text.
+     * It is not necessary if each paragraph is treated as a single line.<p>
+     *
+     * After line-breaking, rules (L1) and (L2) for the treatment of
+     * trailing WS and for reordering are performed on
+     * a <code>Bidi</code> object that represents a line.<p>
+     *
+     * <strong>Important: </strong>the line <code>Bidi</code> object may
+     * reference data within the global text <code>Bidi</code> object.
+     * You should not alter the content of the global text object until
+     * you are finished using the line object.
+     *
+     * @param start is the line's first index into the text.
+     *
+     * @param limit is just behind the line's last index into the text
+     *        (its last index +1).
+     *
+     * @return a <code>Bidi</code> object that will now represent a line of the text.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @throws IllegalArgumentException if start and limit are not in the range
+     *         <code>0&lt;=start&lt;limit&lt;=getProcessedLength()</code>,
+     *         or if the specified line crosses a paragraph boundary
+     *
+     * @see #setPara
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi setLine(int start, int limit)
+    {
+        verifyValidPara();
+        verifyRange(start, 0, limit);
+        verifyRange(limit, 0, length+1);
+        if (getParagraphIndex(start) != getParagraphIndex(limit - 1)) {
+            /* the line crosses a paragraph boundary */
+            throw new IllegalArgumentException();
+        }
+        return BidiLine.setLine(this, start, limit);
+    }
+
+    /**
+     * Get the level for one character.
+     *
+     * @param charIndex the index of a character.
+     *
+     * @return The level for the character at <code>charIndex</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not in the range
+     *         <code>0&lt;=charIndex&lt;getProcessedLength()</code>
+     *
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getLevelAt(int charIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(charIndex, 0, length);
+        return BidiLine.getLevelAt(this, charIndex);
+    }
+
+    /**
+     * Get an array of levels for each character.<p>
+     *
+     * Note that this method may allocate memory under some
+     * circumstances, unlike <code>getLevelAt()</code>.
+     *
+     * @return The levels array for the text,
+     *         or <code>null</code> if an error occurs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte[] getLevels()
+    {
+        verifyValidParaOrLine();
+        if (length <= 0) {
+            return new byte[0];
+        }
+        return BidiLine.getLevels(this);
+    }
+
+    /**
+     * Get a logical run.
+     * This method returns information about a run and is used
+     * to retrieve runs in logical order.<p>
+     * This is especially useful for line-breaking on a paragraph.
+     *
+     * @param logicalPosition is a logical position within the source text.
+     *
+     * @return a BidiRun object filled with <code>start</code> containing
+     *        the first character of the run, <code>limit</code> containing
+     *        the limit of the run, and <code>embeddingLevel</code> containing
+     *        the level of the run.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if logicalPosition is not in the range
+     *         <code>0&lt;=logicalPosition&lt;getProcessedLength()</code>
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see com.ibm.icu.text.BidiRun#getStart()
+     * @see com.ibm.icu.text.BidiRun#getLimit()
+     * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel()
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getLogicalRun(int logicalPosition)
+    {
+        verifyValidParaOrLine();
+        verifyRange(logicalPosition, 0, length);
+        return BidiLine.getLogicalRun(this, logicalPosition);
+    }
+
+    /**
+     * Get the number of runs.
+     * This method may invoke the actual reordering on the
+     * <code>Bidi</code> object, after <code>setPara()</code>
+     * may have resolved only the levels of the text. Therefore,
+     * <code>countRuns()</code> may have to allocate memory,
+     * and may throw an exception if it fails to do so.
+     *
+     * @return The number of runs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int countRuns()
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        return runCount;
+    }
+
+    /**
+     *
+     * Get a <code>BidiRun</code> object according to its index. BidiRun methods
+     * may be used to retrieve the run's logical start, length and level,
+     * which can be even for an LTR run or odd for an RTL run.
+     * In an RTL run, the character at the logical start is
+     * visually on the right of the displayed run.
+     * The length is the number of characters in the run.<p>
+     * <code>countRuns()</code> is normally called
+     * before the runs are retrieved.
+     *
+     * <p>
+     *  Example:
+     * <pre>
+     *  Bidi bidi = new Bidi();
+     *  String text = "abc 123 DEFG xyz";
+     *  bidi.setPara(text, Bidi.RTL, null);
+     *  int i, count=bidi.countRuns(), logicalStart, visualIndex=0, length;
+     *  BidiRun run;
+     *  for (i = 0; i &lt; count; ++i) {
+     *      run = bidi.getVisualRun(i);
+     *      logicalStart = run.getStart();
+     *      length = run.getLength();
+     *      if (Bidi.LTR == run.getEmbeddingLevel()) {
+     *          do { // LTR
+     *              show_char(text.charAt(logicalStart++), visualIndex++);
+     *          } while (--length &gt; 0);
+     *      } else {
+     *          logicalStart += length;  // logicalLimit
+     *          do { // RTL
+     *              show_char(text.charAt(--logicalStart), visualIndex++);
+     *          } while (--length &gt; 0);
+     *      }
+     *  }
+     * </pre>
+     * <p>
+     * Note that in right-to-left runs, code like this places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * <p>
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option, can be considered in
+     * order to avoid these issues.
+     *
+     * @param runIndex is the number of the run in visual order, in the
+     *        range <code>[0..countRuns()-1]</code>.
+     *
+     * @return a BidiRun object containing the details of the run. The
+     *         directionality of the run is
+     *         <code>LTR==0</code> or <code>RTL==1</code>,
+     *         never <code>MIXED</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>runIndex</code> is not in
+     *         the range <code>0&lt;=runIndex&lt;countRuns()</code>
+     *
+     * @see #countRuns()
+     * @see com.ibm.icu.text.BidiRun
+     * @see com.ibm.icu.text.BidiRun#getStart()
+     * @see com.ibm.icu.text.BidiRun#getLength()
+     * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel()
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getVisualRun(int runIndex)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(runIndex, 0, runCount);
+        return BidiLine.getVisualRun(this, runIndex);
+    }
+
+    /**
+     * Get the visual position from a logical text position.
+     * If such a mapping is used many times on the same
+     * <code>Bidi</code> object, then calling
+     * <code>getLogicalMap()</code> is more efficient.
+     * <p>
+     * The value returned may be <code>MAP_NOWHERE</code> if there is no
+     * visual position because the corresponding text character is a Bidi
+     * control removed from output by the option
+     * <code>OPTION_REMOVE_CONTROLS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the visual position returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     * <p>
+     * Note that in right-to-left runs, this mapping places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option can be considered instead
+     * of using the mapping, in order to avoid these issues.
+     *
+     * @param logicalIndex is the index of a character in the text.
+     *
+     * @return The visual position of this character.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>logicalIndex</code> is not in
+     *         the range <code>0&lt;=logicalIndex&lt;getProcessedLength()</code>
+     *
+     * @see #getLogicalMap
+     * @see #getLogicalIndex
+     * @see #getProcessedLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getVisualIndex(int logicalIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(logicalIndex, 0, length);
+        return BidiLine.getVisualIndex(this, logicalIndex);
+    }
+
+
+    /**
+     * Get the logical text position from a visual position.
+     * If such a mapping is used many times on the same
+     * <code>Bidi</code> object, then calling
+     * <code>getVisualMap()</code> is more efficient.
+     * <p>
+     * The value returned may be <code>MAP_NOWHERE</code> if there is no
+     * logical position because the corresponding text character is a Bidi
+     * mark inserted in the output by option
+     * <code>OPTION_INSERT_MARKS</code>.
+     * <p>
+     * This is the inverse method to <code>getVisualIndex()</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the logical position returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     *
+     * @param visualIndex is the visual position of a character.
+     *
+     * @return The index of this character in the text.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>visualIndex</code> is not in
+     *         the range <code>0&lt;=visualIndex&lt;getResultLength()</code>
+     *
+     * @see #getVisualMap
+     * @see #getVisualIndex
+     * @see #getResultLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_INSERT_MARKS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getLogicalIndex(int visualIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(visualIndex, 0, resultLength);
+        /* we can do the trivial cases without the runs array */
+        if (insertPoints.size == 0 && controlCount == 0) {
+            if (direction == LTR) {
+                return visualIndex;
+            }
+            else if (direction == RTL) {
+                return length - visualIndex - 1;
+            }
+        }
+        BidiLine.getRuns(this);
+        return BidiLine.getLogicalIndex(this, visualIndex);
+    }
+
+    /**
+     * Get a logical-to-visual index map (array) for the characters in the
+     * <code>Bidi</code> (paragraph or line) object.
+     * <p>
+     * Some values in the map may be <code>MAP_NOWHERE</code> if the
+     * corresponding text characters are Bidi controls removed from the visual
+     * output by the option <code>OPTION_REMOVE_CONTROLS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the visual positions returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     * <p>
+     * Note that in right-to-left runs, this mapping places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option can be considered instead
+     * of using the mapping, in order to avoid these issues.
+     *
+     * @return an array of <code>getProcessedLength()</code>
+     *        indexes which will reflect the reordering of the characters.<br><br>
+     *        The index map will result in
+     *        <code>indexMap[logicalIndex]==visualIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #getVisualMap
+     * @see #getVisualIndex
+     * @see #getProcessedLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int[] getLogicalMap()
+    {
+        /* countRuns() checks successful call to setPara/setLine */
+        countRuns();
+        if (length <= 0) {
+            return new int[0];
+        }
+        return BidiLine.getLogicalMap(this);
+    }
+
+    /**
+     * Get a visual-to-logical index map (array) for the characters in the
+     * <code>Bidi</code> (paragraph or line) object.
+     * <p>
+     * Some values in the map may be <code>MAP_NOWHERE</code> if the
+     * corresponding text characters are Bidi marks inserted in the visual
+     * output by the option <code>OPTION_INSERT_MARKS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the logical positions returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     *
+     * @return an array of <code>getResultLength()</code>
+     *        indexes which will reflect the reordering of the characters.<br><br>
+     *        The index map will result in
+     *        <code>indexMap[visualIndex]==logicalIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #getLogicalMap
+     * @see #getLogicalIndex
+     * @see #getResultLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_INSERT_MARKS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int[] getVisualMap()
+    {
+        /* countRuns() checks successful call to setPara/setLine */
+        countRuns();
+        if (resultLength <= 0) {
+            return new int[0];
+        }
+        return BidiLine.getVisualMap(this);
+    }
+
+    /**
+     * This is a convenience method that does not use a <code>Bidi</code> object.
+     * It is intended to be used for when an application has determined the levels
+     * of objects (character sequences) and just needs to have them reordered (L2).
+     * This is equivalent to using <code>getLogicalMap()</code> on a
+     * <code>Bidi</code> object.
+     *
+     * @param levels is an array of levels that have been determined by
+     *        the application.
+     *
+     * @return an array of <code>levels.length</code>
+     *        indexes which will reflect the reordering of the characters.<p>
+     *        The index map will result in
+     *        <code>indexMap[logicalIndex]==visualIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] reorderLogical(byte[] levels)
+    {
+        return BidiLine.reorderLogical(levels);
+    }
+
+    /**
+     * This is a convenience method that does not use a <code>Bidi</code> object.
+     * It is intended to be used for when an application has determined the levels
+     * of objects (character sequences) and just needs to have them reordered (L2).
+     * This is equivalent to using <code>getVisualMap()</code> on a
+     * <code>Bidi</code> object.
+     *
+     * @param levels is an array of levels that have been determined by
+     *        the application.
+     *
+     * @return an array of <code>levels.length</code>
+     *        indexes which will reflect the reordering of the characters.<p>
+     *        The index map will result in
+     *        <code>indexMap[visualIndex]==logicalIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] reorderVisual(byte[] levels)
+    {
+        return BidiLine.reorderVisual(levels);
+    }
+
+    /**
+     * Invert an index map.
+     * The index mapping of the argument map is inverted and returned as
+     * an array of indexes that we will call the inverse map.
+     *
+     * @param srcMap is an array whose elements define the original mapping
+     * from a source array to a destination array.
+     * Some elements of the source array may have no mapping in the
+     * destination array. In that case, their value will be
+     * the special value <code>MAP_NOWHERE</code>.
+     * All elements must be >=0 or equal to <code>MAP_NOWHERE</code>.
+     * Some elements in the source map may have a value greater than the
+     * srcMap.length if the destination array has more elements than the
+     * source array.
+     * There must be no duplicate indexes (two or more elements with the
+     * same value except <code>MAP_NOWHERE</code>).
+     *
+     * @return an array representing the inverse map.
+     *         This array has a number of elements equal to 1 + the highest
+     *         value in <code>srcMap</code>.
+     *         For elements of the result array which have no matching elements
+     *         in the source array, the corresponding elements in the inverse
+     *         map will receive a value equal to <code>MAP_NOWHERE</code>.
+     *         If element with index i in <code>srcMap</code> has a value k different
+     *         from <code>MAP_NOWHERE</code>, this means that element i of
+     *         the source array maps to element k in the destination array.
+     *         The inverse map will have value i in its k-th element.
+     *         For all elements of the destination array which do not map to
+     *         an element in the source array, the corresponding element in the
+     *         inverse map will have a value equal to <code>MAP_NOWHERE</code>.
+     *
+     * @see #MAP_NOWHERE
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] invertMap(int[] srcMap)
+    {
+        if (srcMap == null) {
+            return null;
+        } else {
+            return BidiLine.invertMap(srcMap);
+        }
+    }
+
+    /*
+     * Fields and methods for compatibility with java.text.bidi (Sun implementation)
+     */
+
+    /**
+     * Constant indicating base direction is left-to-right.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_LEFT_TO_RIGHT = LTR;
+
+    /**
+     * Constant indicating base direction is right-to-left.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_RIGHT_TO_LEFT = RTL;
+
+    /**
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present, the base
+     * direction is left-to-right.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = LEVEL_DEFAULT_LTR;
+
+    /**
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present, the base
+     * direction is right-to-left.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = LEVEL_DEFAULT_RTL;
+
+    /**
+     * Create Bidi from the given paragraph of text and base direction.
+     *
+     * @param paragraph a paragraph of text
+     * @param flags a collection of flags that control the algorithm. The
+     *        algorithm understands the flags DIRECTION_LEFT_TO_RIGHT,
+     *        DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and
+     *        DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved.
+     * @see #DIRECTION_LEFT_TO_RIGHT
+     * @see #DIRECTION_RIGHT_TO_LEFT
+     * @see #DIRECTION_DEFAULT_LEFT_TO_RIGHT
+     * @see #DIRECTION_DEFAULT_RIGHT_TO_LEFT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(String paragraph, int flags)
+    {
+        this(paragraph.toCharArray(), 0, null, 0, paragraph.length(), flags);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Create Bidi from the given paragraph of text.<p>
+     *
+     * The RUN_DIRECTION attribute in the text, if present, determines the base
+     * direction (left-to-right or right-to-left). If not present, the base
+     * direction is computed using the Unicode Bidirectional Algorithm,
+     * defaulting to left-to-right if there are no strong directional characters
+     * in the text. This attribute, if present, must be applied to all the text
+     * in the paragraph.<p>
+     *
+     * The BIDI_EMBEDDING attribute in the text, if present, represents
+     * embedding level information. Negative values from -1 to -62 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 62 indicate embeddings. Where values are zero or not defined, the base
+     * embedding level as determined by the base direction is assumed.<p>
+     *
+     * The NUMERIC_SHAPING attribute in the text, if present, converts European
+     * digits to other decimal digits before running the bidi algorithm. This
+     * attribute, if present, must be applied to all the text in the paragraph.<p>
+     *
+     * Note: this constructor calls setPara() internally.
+     *
+     * @param paragraph a paragraph of text with optional character and
+     *        paragraph attribute information
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(AttributedCharacterIterator paragraph)
+    {
+        this();
+        setPara(paragraph);
+    }
+//#endif
+
+    /**
+     * Create Bidi from the given text, embedding, and direction information.
+     * The embeddings array may be null. If present, the values represent
+     * embedding level information. Negative values from -1 to -61 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 61 indicate embeddings. Where values are zero, the base embedding level
+     * as determined by the base direction is assumed.<p>
+     *
+     * Note: this constructor calls setPara() internally.
+     *
+     * @param text an array containing the paragraph of text to process.
+     * @param textStart the index into the text array of the start of the
+     *        paragraph.
+     * @param embeddings an array containing embedding values for each character
+     *        in the paragraph. This can be null, in which case it is assumed
+     *        that there is no external embedding information.
+     * @param embStart the index into the embedding array of the start of the
+     *        paragraph.
+     * @param paragraphLength the length of the paragraph in the text and
+     *        embeddings arrays.
+     * @param flags a collection of flags that control the algorithm. The
+     *        algorithm understands the flags DIRECTION_LEFT_TO_RIGHT,
+     *        DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and
+     *        DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved.
+     *
+     * @throws IllegalArgumentException if the values in embeddings are
+     *         not within the allowed range
+     *
+     * @see #DIRECTION_LEFT_TO_RIGHT
+     * @see #DIRECTION_RIGHT_TO_LEFT
+     * @see #DIRECTION_DEFAULT_LEFT_TO_RIGHT
+     * @see #DIRECTION_DEFAULT_RIGHT_TO_LEFT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(char[] text,
+            int textStart,
+            byte[] embeddings,
+            int embStart,
+            int paragraphLength,
+            int flags)
+    {
+        this();
+        byte paraLvl;
+        switch (flags) {
+        case DIRECTION_LEFT_TO_RIGHT:
+        default:
+            paraLvl = LTR;
+            break;
+        case DIRECTION_RIGHT_TO_LEFT:
+            paraLvl = RTL;
+            break;
+        case DIRECTION_DEFAULT_LEFT_TO_RIGHT:
+            paraLvl = LEVEL_DEFAULT_LTR;
+            break;
+        case DIRECTION_DEFAULT_RIGHT_TO_LEFT:
+            paraLvl = LEVEL_DEFAULT_RTL;
+            break;
+        }
+        byte[] paraEmbeddings;
+        if (embeddings == null) {
+            paraEmbeddings = null;
+        } else {
+            paraEmbeddings = new byte[paragraphLength];
+            byte lev;
+            for (int i = 0; i < paragraphLength; i++) {
+                lev = embeddings[i + embStart];
+                if (lev < 0) {
+                    lev = (byte)((- lev) | LEVEL_OVERRIDE);
+                } else if (lev == 0) {
+                    lev = paraLvl;
+                    if (paraLvl > MAX_EXPLICIT_LEVEL) {
+                        lev &= 1;
+                    }
+                }
+                paraEmbeddings[i] = lev;
+            }
+        }
+        if (textStart == 0 && embStart == 0 && paragraphLength == text.length) {
+            setPara(text, paraLvl, paraEmbeddings);
+        } else {
+            char[] paraText = new char[paragraphLength];
+            System.arraycopy(text, textStart, paraText, 0, paragraphLength);
+            setPara(paraText, paraLvl, paraEmbeddings);
+        }
+    }
+
+    /**
+     * Create a Bidi object representing the bidi information on a line of text
+     * within the paragraph represented by the current Bidi. This call is not
+     * required if the entire paragraph fits on one line.
+     *
+     * @param lineStart the offset from the start of the paragraph to the start
+     *        of the line.
+     * @param lineLimit the offset from the start of the paragraph to the limit
+     *        of the line.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @throws IllegalArgumentException if lineStart and lineLimit are not in the range
+     *         <code>0&lt;=lineStart&lt;lineLimit&lt;=getProcessedLength()</code>,
+     *         or if the specified line crosses a paragraph boundary
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi createLineBidi(int lineStart, int lineLimit)
+    {
+        return setLine(lineStart, lineLimit);
+    }
+
+    /**
+     * Return true if the line is not left-to-right or right-to-left. This means
+     * it either has mixed runs of left-to-right and right-to-left text, or the
+     * base direction differs from the direction of the only run of text.
+     *
+     * @return true if the line is not left-to-right or right-to-left.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isMixed()
+    {
+        return (!isLeftToRight() && !isRightToLeft());
+    }
+
+    /**
+     * Return true if the line is all left-to-right text and the base direction
+     * is left-to-right.
+     *
+     * @return true if the line is all left-to-right text and the base direction
+     *         is left-to-right.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isLeftToRight()
+    {
+        return (getDirection() == LTR && (paraLevel & 1) == 0);
+    }
+
+    /**
+     * Return true if the line is all right-to-left text, and the base direction
+     * is right-to-left
+     *
+     * @return true if the line is all right-to-left text, and the base
+     *         direction is right-to-left
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isRightToLeft()
+    {
+        return (getDirection() == RTL && (paraLevel & 1) == 1);
+    }
+
+    /**
+     * Return true if the base direction is left-to-right
+     *
+     * @return true if the base direction is left-to-right
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean baseIsLeftToRight()
+    {
+        return (getParaLevel() == LTR);
+    }
+
+    /**
+     * Return the base level (0 if left-to-right, 1 if right-to-left).
+     *
+     * @return the base level
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getBaseLevel()
+    {
+        return getParaLevel();
+    }
+
+    /**
+     * Return the number of level runs.
+     *
+     * @return the number of level runs
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunCount()
+    {
+        return countRuns();
+    }
+
+    /**
+     * Compute the logical to visual run mapping
+     */
+     void getLogicalToVisualRunsMap()
+     {
+        if (isGoodLogicalToVisualRunsMap) {
+            return;
+        }
+        int count = countRuns();
+        if ((logicalToVisualRunsMap == null) ||
+            (logicalToVisualRunsMap.length < count)) {
+            logicalToVisualRunsMap = new int[count];
+        }
+        int i;
+        long[] keys = new long[count];
+        for (i = 0; i < count; i++) {
+            keys[i] = ((long)(runs[i].start)<<32) + i;
+        }
+        Arrays.sort(keys);
+        for (i = 0; i < count; i++) {
+            logicalToVisualRunsMap[i] = (int)(keys[i] & 0x00000000FFFFFFFF);
+        }
+        keys = null;
+        isGoodLogicalToVisualRunsMap = true;
+     }
+
+    /**
+     * Return the level of the nth logical run in this line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()-1</code>
+     *
+     * @return the level of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunLevel(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        return runs[logicalToVisualRunsMap[run]].level;
+    }
+
+    /**
+     * Return the index of the character at the start of the nth logical run in
+     * this line, as an offset from the start of the line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()</code>
+     *
+     * @return the start of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunStart(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        return runs[logicalToVisualRunsMap[run]].start;
+    }
+
+    /**
+     * Return the index of the character past the end of the nth logical run in
+     * this line, as an offset from the start of the line. For example, this
+     * will return the length of the line for the last run on the line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()</code>
+     *
+     * @return the limit of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunLimit(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        int idx = logicalToVisualRunsMap[run];
+        int len = idx == 0 ? runs[idx].limit :
+                                runs[idx].limit - runs[idx-1].limit;
+        return runs[idx].start + len;
+    }
+
+    /**
+     * Return true if the specified text requires bidi analysis. If this returns
+     * false, the text will display left-to-right. Clients can then avoid
+     * constructing a Bidi object. Text in the Arabic Presentation Forms area of
+     * Unicode is presumed to already be shaped and ordered for display, and so
+     * will not cause this method to return true.
+     *
+     * @param text the text containing the characters to test
+     * @param start the start of the range of characters to test
+     * @param limit the limit of the range of characters to test
+     *
+     * @return true if the range of characters requires bidi analysis
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static boolean requiresBidi(char[] text,
+            int start,
+            int limit)
+    {
+        final int RTLMask = (1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE |
+                1 << UCharacter.DIRECTIONALITY_ARABIC_NUMBER);
+
+        for (int i = start; i < limit; ++i) {
+            if (((1 << UCharacter.getDirection(text[i])) & RTLMask) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Reorder the objects in the array into visual order based on their levels.
+     * This is a utility method to use when you have a collection of objects
+     * representing runs of text in logical order, each run containing text at a
+     * single level. The elements at <code>index</code> from
+     * <code>objectStart</code> up to <code>objectStart + count</code> in the
+     * objects array will be reordered into visual order assuming
+     * each run of text has the level indicated by the corresponding element in
+     * the levels array (at <code>index - objectStart + levelStart</code>).
+     *
+     * @param levels an array representing the bidi level of each object
+     * @param levelStart the start position in the levels array
+     * @param objects the array of objects to be reordered into visual order
+     * @param objectStart the start position in the objects array
+     * @param count the number of objects to reorder
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static void reorderVisually(byte[] levels,
+            int levelStart,
+            Object[] objects,
+            int objectStart,
+            int count)
+    {
+        byte[] reorderLevels = new byte[count];
+        System.arraycopy(levels, levelStart, reorderLevels, 0, count);
+        int[] indexMap = reorderVisual(reorderLevels);
+        Object[] temp = new Object[count];
+        System.arraycopy(objects, objectStart, temp, 0, count);
+        for (int i = 0; i < count; ++i) {
+            objects[objectStart + i] = temp[indexMap[i]];
+        }
+    }
+
+    /**
+     * Take a <code>Bidi</code> object containing the reordering
+     * information for a piece of text (one or more paragraphs) set by
+     * <code>setPara()</code> or for a line of text set by <code>setLine()</code>
+     * and return a string containing the reordered text.
+     *
+     * <p>The text may have been aliased (only a reference was stored
+     * without copying the contents), thus it must not have been modified
+     * since the <code>setPara()</code> call.</p>
+     *
+     * This method preserves the integrity of characters with multiple
+     * code units and (optionally) combining characters.
+     * Characters in RTL runs can be replaced by mirror-image characters
+     * in the returned string. Note that "real" mirroring has to be done in a
+     * rendering engine by glyph selection and that for many "mirrored"
+     * characters there are no Unicode characters as mirror-image equivalents.
+     * There are also options to insert or remove Bidi control
+     * characters; see the descriptions of the return value and the
+     * <code>options</code> parameter, and of the option bit flags.
+     *
+     * @param options A bit set of options for the reordering that control
+     *                how the reordered text is written.
+     *                The options include mirroring the characters on a code
+     *                point basis and inserting LRM characters, which is used
+     *                especially for transforming visually stored text
+     *                to logically stored text (although this is still an
+     *                imperfect implementation of an "inverse Bidi" algorithm
+     *                because it uses the "forward Bidi" algorithm at its core).
+     *                The available options are:
+     *                <code>DO_MIRRORING</code>,
+     *                <code>INSERT_LRM_FOR_NUMERIC</code>,
+     *                <code>KEEP_BASE_COMBINING</code>,
+     *                <code>OUTPUT_REVERSE</code>,
+     *                <code>REMOVE_BIDI_CONTROLS</code>,
+     *                <code>STREAMING</code>
+     *
+     * @return The reordered text.
+     *         If the <code>INSERT_LRM_FOR_NUMERIC</code> option is set, then
+     *         the length of the returned string could be as large as
+     *         <code>getLength()+2*countRuns()</code>.<br>
+     *         If the <code>REMOVE_BIDI_CONTROLS</code> option is set, then the
+     *         length of the returned string may be less than
+     *         <code>getLength()</code>.<br>
+     *         If none of these options is set, then the length of the returned
+     *         string will be exactly <code>getProcessedLength()</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #DO_MIRRORING
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #KEEP_BASE_COMBINING
+     * @see #OUTPUT_REVERSE
+     * @see #REMOVE_BIDI_CONTROLS
+     * @see #OPTION_STREAMING
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String writeReordered(int options)
+    {
+        verifyValidParaOrLine();
+        if (length == 0) {
+            /* nothing to do */
+            return new String("");
+        }
+
+        return BidiWriter.writeReordered(this, options);
+    }
+
+    /**
+     * Reverse a Right-To-Left run of Unicode text.
+     *
+     * This method preserves the integrity of characters with multiple
+     * code units and (optionally) combining characters.
+     * Characters can be replaced by mirror-image characters
+     * in the destination buffer. Note that "real" mirroring has
+     * to be done in a rendering engine by glyph selection
+     * and that for many "mirrored" characters there are no
+     * Unicode characters as mirror-image equivalents.
+     * There are also options to insert or remove Bidi control
+     * characters.
+     *
+     * This method is the implementation for reversing RTL runs as part
+     * of <code>writeReordered()</code>. For detailed descriptions
+     * of the parameters, see there.
+     * Since no Bidi controls are inserted here, the output string length
+     * will never exceed <code>src.length()</code>.
+     *
+     * @see #writeReordered
+     *
+     * @param src The RTL run text.
+     *
+     * @param options A bit set of options for the reordering that control
+     *                how the reordered text is written.
+     *                See the <code>options</code> parameter in <code>writeReordered()</code>.
+     *
+     * @return The reordered text.
+     *         If the <code>REMOVE_BIDI_CONTROLS</code> option
+     *         is set, then the length of the returned string may be less than
+     *         <code>src.length()</code>. If this option is not set,
+     *         then the length of the returned string will be exactly
+     *         <code>src.length()</code>.
+     *
+     * @throws IllegalArgumentException if <code>src</code> is null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String writeReverse(String src, int options)
+    {
+        /* error checking */
+        if (src == null) {
+            throw new IllegalArgumentException();
+        }
+
+        if (src.length() > 0) {
+            return BidiWriter.writeReverse(src, options);
+        } else {
+            /* nothing to do */
+            return new String("");
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/text/BidiClassifier.java b/src/com/ibm/icu/text/BidiClassifier.java
new file mode 100644
index 0000000..dee4725
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiClassifier.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Overrides default Bidi class values with custom ones.
+ *
+ * <p>The override mechanism requires to define a subclass of
+ * <code>BidiClassifier</code> which overrides the <code>classifier</code>
+ * method to assign customized Bidi classes.</p>
+ *
+ * <p>This may be useful for assigning Bidi classes to PUA characters, or
+ * for special application needs. For instance, an application may want to
+ * handle all spaces like L or R characters (according to the base direction)
+ * when creating the visual ordering of logical lines which are part of a report
+ * organized in columns: there should not be interaction between adjacent
+ * cells.</p>
+ *
+ * <p>To start using this customized
+ * classifier with a Bidi object, it must be specified by calling the
+ * <code>Bidi.setCustomClassifier</code> method; after that, the method
+ * <code>classify</code> of the custom <code>BidiClassifier</code> will be
+ * called by the UBA implementation any time the class of a character is
+ * to be determined.</p>
+ *
+ * @see Bidi#setCustomClassifier
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public /*abstract*/ class BidiClassifier {
+
+    /**
+     * This object can be used for any purpose by the caller to pass
+     * information to the BidiClassifier methods, and by the BidiClassifier
+     * methods themselves.<br>
+     * For instance, this object can be used to save a reference to
+     * a previous custom BidiClassifier while setting a new one, so as to
+     * allow chaining between them.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Object context;
+
+    /**
+     * @param context Context for this classifier instance.
+     *                May be null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiClassifier(Object context) {
+        this.context = context;
+    }
+
+    /**
+     * Sets classifier context, which can be used either by a caller or
+     * callee for various purposes.
+     *
+     * @param context Context for this classifier instance.
+     *                May be null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setContext(Object context) {
+        this.context = context;
+    }
+
+    /**
+     * Returns the current classifier context.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object getContext() {
+        return this.context;
+    }
+
+    /**
+     * Gets customized Bidi class for the code point <code>c</code>.
+     * <p>
+     * Default implementation, to be overridden.
+     *
+     * @param c Code point to be classified.
+     * @return An integer representing directional property / Bidi class for the
+     *         given code point <code>c</code>, or CLASS_DEFAULT to signify
+     *         that there is no need to override the standard Bidi class for
+     *         the given code point.
+     * @see Bidi#CLASS_DEFAULT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int classify(int c) {
+        return Bidi.CLASS_DEFAULT;
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiLine.java b/src/com/ibm/icu/text/BidiLine.java
new file mode 100644
index 0000000..fcfd969
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiLine.java
@@ -0,0 +1,1234 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+
+import java.util.Arrays;
+
+final class BidiLine {
+
+    /*
+     * General remarks about the functions in this file:
+     *
+     * These functions deal with the aspects of potentially mixed-directional
+     * text in a single paragraph or in a line of a single paragraph
+     * which has already been processed according to
+     * the Unicode 3.0 Bidi algorithm as defined in
+     * http://www.unicode.org/unicode/reports/tr9/ , version 13,
+     * also described in The Unicode Standard, Version 4.0.1 .
+     *
+     * This means that there is a Bidi object with a levels
+     * and a dirProps array.
+     * paraLevel and direction are also set.
+     * Only if the length of the text is zero, then levels==dirProps==NULL.
+     *
+     * The overall directionality of the paragraph
+     * or line is used to bypass the reordering steps if possible.
+     * Even purely RTL text does not need reordering there because
+     * the getLogical/VisualIndex() methods can compute the
+     * index on the fly in such a case.
+     *
+     * The implementation of the access to same-level-runs and of the reordering
+     * do attempt to provide better performance and less memory usage compared to
+     * a direct implementation of especially rule (L2) with an array of
+     * one (32-bit) integer per text character.
+     *
+     * Here, the levels array is scanned as soon as necessary, and a vector of
+     * same-level-runs is created. Reordering then is done on this vector.
+     * For each run of text positions that were resolved to the same level,
+     * only 8 bytes are stored: the first text position of the run and the visual
+     * position behind the run after reordering.
+     * One sign bit is used to hold the directionality of the run.
+     * This is inefficient if there are many very short runs. If the average run
+     * length is <2, then this uses more memory.
+     *
+     * In a further attempt to save memory, the levels array is never changed
+     * after all the resolution rules (Xn, Wn, Nn, In).
+     * Many methods have to consider the field trailingWSStart:
+     * if it is less than length, then there is an implicit trailing run
+     * at the paraLevel,
+     * which is not reflected in the levels array.
+     * This allows a line Bidi object to use the same levels array as
+     * its paragraph parent object.
+     *
+     * When a Bidi object is created for a line of a paragraph, then the
+     * paragraph's levels and dirProps arrays are reused by way of setting
+     * a pointer into them, not by copying. This again saves memory and forbids to
+     * change the now shared levels for (L1).
+     */
+
+    /* handle trailing WS (L1) -------------------------------------------------- */
+
+    /*
+     * setTrailingWSStart() sets the start index for a trailing
+     * run of WS in the line. This is necessary because we do not modify
+     * the paragraph's levels array that we just point into.
+     * Using trailingWSStart is another form of performing (L1).
+     *
+     * To make subsequent operations easier, we also include the run
+     * before the WS if it is at the paraLevel - we merge the two here.
+     *
+     * This method is called only from setLine(), so paraLevel is
+     * set correctly for the line even when contextual multiple paragraphs.
+     */
+
+    static void setTrailingWSStart(Bidi bidi)
+    {
+        byte[] dirProps = bidi.dirProps;
+        byte[] levels = bidi.levels;
+        int start = bidi.length;
+        byte paraLevel = bidi.paraLevel;
+
+        /* If the line is terminated by a block separator, all preceding WS etc...
+           are already set to paragraph level.
+           Setting trailingWSStart to pBidi->length will avoid changing the
+           level of B chars from 0 to paraLevel in getLevels when
+           orderParagraphsLTR==TRUE
+        */
+        if (Bidi.NoContextRTL(dirProps[start - 1]) == Bidi.B) {
+            bidi.trailingWSStart = start;   /* currently == bidi.length */
+            return;
+        }
+        /* go backwards across all WS, BN, explicit codes */
+        while (start > 0 &&
+                (Bidi.DirPropFlagNC(dirProps[start - 1]) & Bidi.MASK_WS) != 0) {
+            --start;
+        }
+
+        /* if the WS run can be merged with the previous run then do so here */
+        while (start > 0 && levels[start - 1] == paraLevel) {
+            --start;
+        }
+
+        bidi.trailingWSStart=start;
+    }
+
+    static Bidi setLine(Bidi paraBidi, int start, int limit) {
+        int length;
+
+        Bidi lineBidi = new Bidi();
+
+        /* set the values in lineBidi from its paraBidi parent */
+        /* class members are already initialized to 0 */
+        // lineBidi.paraBidi = null;        /* mark unfinished setLine */
+        // lineBidi.flags = 0;
+        // lineBidi.controlCount = 0;
+
+        length = lineBidi.length = lineBidi.originalLength =
+                lineBidi.resultLength = limit - start;
+
+        lineBidi.text = new char[length];
+        System.arraycopy(paraBidi.text, start, lineBidi.text, 0, length);
+        lineBidi.paraLevel = paraBidi.GetParaLevelAt(start);
+        lineBidi.paraCount = paraBidi.paraCount;
+        lineBidi.runs = new BidiRun[0];
+        lineBidi.reorderingMode = paraBidi.reorderingMode;
+        lineBidi.reorderingOptions = paraBidi.reorderingOptions;
+        if (paraBidi.controlCount > 0) {
+            int j;
+            for (j = start; j < limit; j++) {
+                if (Bidi.IsBidiControlChar(paraBidi.text[j])) {
+                    lineBidi.controlCount++;
+                }
+            }
+            lineBidi.resultLength -= lineBidi.controlCount;
+        }
+        /* copy proper subset of DirProps */
+        lineBidi.getDirPropsMemory(length);
+        lineBidi.dirProps = lineBidi.dirPropsMemory;
+        System.arraycopy(paraBidi.dirProps, start, lineBidi.dirProps, 0,
+                         length);
+        /* copy proper subset of Levels */
+        lineBidi.getLevelsMemory(length);
+        lineBidi.levels = lineBidi.levelsMemory;
+        System.arraycopy(paraBidi.levels, start, lineBidi.levels, 0,
+                         length);
+        lineBidi.runCount = -1;
+
+        if (paraBidi.direction != Bidi.MIXED) {
+            /* the parent is already trivial */
+            lineBidi.direction = paraBidi.direction;
+
+            /*
+             * The parent's levels are all either
+             * implicitly or explicitly ==paraLevel;
+             * do the same here.
+             */
+            if (paraBidi.trailingWSStart <= start) {
+                lineBidi.trailingWSStart = 0;
+            } else if (paraBidi.trailingWSStart < limit) {
+                lineBidi.trailingWSStart = paraBidi.trailingWSStart - start;
+            } else {
+                lineBidi.trailingWSStart = length;
+            }
+        } else {
+            byte[] levels = lineBidi.levels;
+            int i, trailingWSStart;
+            byte level;
+
+            setTrailingWSStart(lineBidi);
+            trailingWSStart = lineBidi.trailingWSStart;
+
+            /* recalculate lineBidi.direction */
+            if (trailingWSStart == 0) {
+                /* all levels are at paraLevel */
+                lineBidi.direction = (byte)(lineBidi.paraLevel & 1);
+            } else {
+                /* get the level of the first character */
+                level = (byte)(levels[0] & 1);
+
+                /* if there is anything of a different level, then the line
+                   is mixed */
+                if (trailingWSStart < length &&
+                    (lineBidi.paraLevel & 1) != level) {
+                    /* the trailing WS is at paraLevel, which differs from
+                       levels[0] */
+                    lineBidi.direction = Bidi.MIXED;
+                } else {
+                    /* see if levels[1..trailingWSStart-1] have the same
+                       direction as levels[0] and paraLevel */
+                    for (i = 1; ; i++) {
+                        if (i == trailingWSStart) {
+                            /* the direction values match those in level */
+                            lineBidi.direction = level;
+                            break;
+                        } else if ((levels[i] & 1) != level) {
+                            lineBidi.direction = Bidi.MIXED;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            switch(lineBidi.direction) {
+                case Bidi.DIRECTION_LEFT_TO_RIGHT:
+                    /* make sure paraLevel is even */
+                    lineBidi.paraLevel = (byte)
+                        ((lineBidi.paraLevel + 1) & ~1);
+
+                    /* all levels are implicitly at paraLevel (important for
+                       getLevels()) */
+                    lineBidi.trailingWSStart = 0;
+                    break;
+                case Bidi.DIRECTION_RIGHT_TO_LEFT:
+                    /* make sure paraLevel is odd */
+                    lineBidi.paraLevel |= 1;
+
+                    /* all levels are implicitly at paraLevel (important for
+                       getLevels()) */
+                    lineBidi.trailingWSStart = 0;
+                    break;
+                default:
+                    break;
+            }
+        }
+        lineBidi.paraBidi = paraBidi;     /* mark successful setLine */
+        return lineBidi;
+    }
+
+    static byte getLevelAt(Bidi bidi, int charIndex)
+    {
+        /* return paraLevel if in the trailing WS run, otherwise the real level */
+        if (bidi.direction != Bidi.MIXED || charIndex >= bidi.trailingWSStart) {
+            return bidi.GetParaLevelAt(charIndex);
+        } else {
+            return bidi.levels[charIndex];
+        }
+    }
+
+    static byte[] getLevels(Bidi bidi)
+    {
+        int start = bidi.trailingWSStart;
+        int length = bidi.length;
+
+        if (start != length) {
+            /* the current levels array does not reflect the WS run */
+            /*
+             * After the previous if(), we know that the levels array
+             * has an implicit trailing WS run and therefore does not fully
+             * reflect itself all the levels.
+             * This must be a Bidi object for a line, and
+             * we need to create a new levels array.
+             */
+            /* bidi.paraLevel is ok even if contextual multiple paragraphs,
+               since bidi is a line object                                     */
+            Arrays.fill(bidi.levels, start, length, bidi.paraLevel);
+
+            /* this new levels array is set for the line and reflects the WS run */
+            bidi.trailingWSStart = length;
+        }
+        if (length < bidi.levels.length) {
+            byte[] levels = new byte[length];
+            System.arraycopy(bidi.levels, 0, levels, 0, length);
+            return levels;
+        }
+        return bidi.levels;
+    }
+
+    static BidiRun getLogicalRun(Bidi bidi, int logicalPosition)
+    {
+        /* this is done based on runs rather than on levels since levels have
+           a special interpretation when REORDER_RUNS_ONLY
+         */
+        BidiRun newRun = new BidiRun(), iRun;
+        getRuns(bidi);
+        int runCount = bidi.runCount;
+        int visualStart = 0, logicalLimit = 0;
+        iRun = bidi.runs[0];
+
+        for (int i = 0; i < runCount; i++) {
+            iRun = bidi.runs[i];
+            logicalLimit = iRun.start + iRun.limit - visualStart;
+            if ((logicalPosition >= iRun.start) &&
+                (logicalPosition < logicalLimit)) {
+                break;
+            }
+            visualStart = iRun.limit;
+        }
+        newRun.start = iRun.start;
+        newRun.limit = logicalLimit;
+        newRun.level = iRun.level;
+        return newRun;
+    }
+
+    static BidiRun getVisualRun(Bidi bidi, int runIndex)
+    {
+        int start = bidi.runs[runIndex].start;
+        int limit;
+        byte level = bidi.runs[runIndex].level;
+
+        if (runIndex > 0) {
+            limit = start +
+                    bidi.runs[runIndex].limit -
+                    bidi.runs[runIndex - 1].limit;
+        } else {
+            limit = start + bidi.runs[0].limit;
+        }
+        return new BidiRun(start, limit, level);
+    }
+
+    /* in trivial cases there is only one trivial run; called by getRuns() */
+    static void getSingleRun(Bidi bidi, byte level) {
+        /* simple, single-run case */
+        bidi.runs = bidi.simpleRuns;
+        bidi.runCount = 1;
+
+        /* fill and reorder the single run */
+        bidi.runs[0] = new BidiRun(0, bidi.length, level);
+    }
+
+    /* reorder the runs array (L2) ---------------------------------------------- */
+
+    /*
+     * Reorder the same-level runs in the runs array.
+     * Here, runCount>1 and maxLevel>=minLevel>=paraLevel.
+     * All the visualStart fields=logical start before reordering.
+     * The "odd" bits are not set yet.
+     *
+     * Reordering with this data structure lends itself to some handy shortcuts:
+     *
+     * Since each run is moved but not modified, and since at the initial maxLevel
+     * each sequence of same-level runs consists of only one run each, we
+     * don't need to do anything there and can predecrement maxLevel.
+     * In many simple cases, the reordering is thus done entirely in the
+     * index mapping.
+     * Also, reordering occurs only down to the lowest odd level that occurs,
+     * which is minLevel|1. However, if the lowest level itself is odd, then
+     * in the last reordering the sequence of the runs at this level or higher
+     * will be all runs, and we don't need the elaborate loop to search for them.
+     * This is covered by ++minLevel instead of minLevel|=1 followed
+     * by an extra reorder-all after the reorder-some loop.
+     * About a trailing WS run:
+     * Such a run would need special treatment because its level is not
+     * reflected in levels[] if this is not a paragraph object.
+     * Instead, all characters from trailingWSStart on are implicitly at
+     * paraLevel.
+     * However, for all maxLevel>paraLevel, this run will never be reordered
+     * and does not need to be taken into account. maxLevel==paraLevel is only reordered
+     * if minLevel==paraLevel is odd, which is done in the extra segment.
+     * This means that for the main reordering loop we don't need to consider
+     * this run and can --runCount. If it is later part of the all-runs
+     * reordering, then runCount is adjusted accordingly.
+     */
+    private static void reorderLine(Bidi bidi, byte minLevel, byte maxLevel) {
+
+        /* nothing to do? */
+        if (maxLevel<=(minLevel|1)) {
+            return;
+        }
+
+        BidiRun[] runs;
+        BidiRun tempRun;
+        byte[] levels;
+        int firstRun, endRun, limitRun, runCount;
+
+        /*
+         * Reorder only down to the lowest odd level
+         * and reorder at an odd minLevel in a separate, simpler loop.
+         * See comments above for why minLevel is always incremented.
+         */
+        ++minLevel;
+
+        runs = bidi.runs;
+        levels = bidi.levels;
+        runCount = bidi.runCount;
+
+        /* do not include the WS run at paraLevel<=old minLevel except in the simple loop */
+        if (bidi.trailingWSStart < bidi.length) {
+            --runCount;
+        }
+
+        while (--maxLevel >= minLevel) {
+            firstRun = 0;
+
+            /* loop for all sequences of runs */
+            for ( ; ; ) {
+                /* look for a sequence of runs that are all at >=maxLevel */
+                /* look for the first run of such a sequence */
+                while (firstRun < runCount && levels[runs[firstRun].start] < maxLevel) {
+                    ++firstRun;
+                }
+                if (firstRun >= runCount) {
+                    break;  /* no more such runs */
+                }
+
+                /* look for the limit run of such a sequence (the run behind it) */
+                for (limitRun = firstRun; ++limitRun < runCount &&
+                      levels[runs[limitRun].start]>=maxLevel; ) {}
+
+                /* Swap the entire sequence of runs from firstRun to limitRun-1. */
+                endRun = limitRun - 1;
+                while (firstRun < endRun) {
+                    tempRun = runs[firstRun];
+                    runs[firstRun] = runs[endRun];
+                    runs[endRun] = tempRun;
+                    ++firstRun;
+                    --endRun;
+                }
+
+                if (limitRun == runCount) {
+                    break;  /* no more such runs */
+                } else {
+                    firstRun = limitRun + 1;
+                }
+            }
+        }
+
+        /* now do maxLevel==old minLevel (==odd!), see above */
+        if ((minLevel & 1) == 0) {
+            firstRun = 0;
+
+            /* include the trailing WS run in this complete reordering */
+            if (bidi.trailingWSStart == bidi.length) {
+                --runCount;
+            }
+
+            /* Swap the entire sequence of all runs. (endRun==runCount) */
+            while (firstRun < runCount) {
+                tempRun = runs[firstRun];
+                runs[firstRun] = runs[runCount];
+                runs[runCount] = tempRun;
+                ++firstRun;
+                --runCount;
+            }
+        }
+    }
+
+    /* compute the runs array --------------------------------------------------- */
+
+    static int getRunFromLogicalIndex(Bidi bidi, int logicalIndex) {
+        BidiRun[] runs = bidi.runs;
+        int runCount = bidi.runCount, visualStart = 0, i, length, logicalStart;
+
+        for (i = 0; i < runCount; i++) {
+            length = runs[i].limit - visualStart;
+            logicalStart = runs[i].start;
+            if ((logicalIndex >= logicalStart) && (logicalIndex < (logicalStart+length))) {
+                return i;
+            }
+            visualStart += length;
+        }
+        /* we should never get here */
+        throw new IllegalStateException("Internal ICU error in getRunFromLogicalIndex");
+    }
+
+    /*
+     * Compute the runs array from the levels array.
+     * After getRuns() returns true, runCount is guaranteed to be >0
+     * and the runs are reordered.
+     * Odd-level runs have visualStart on their visual right edge and
+     * they progress visually to the left.
+     * If option OPTION_INSERT_MARKS is set, insertRemove will contain the
+     * sum of appropriate LRM/RLM_BEFORE/AFTER flags.
+     * If option OPTION_REMOVE_CONTROLS is set, insertRemove will contain the
+     * negative number of BiDi control characters within this run.
+     */
+    static void getRuns(Bidi bidi) {
+        /*
+         * This method returns immediately if the runs are already set. This
+         * includes the case of length==0 (handled in setPara)..
+         */
+        if (bidi.runCount >= 0) {
+            return;
+        }
+        if (bidi.direction != Bidi.MIXED) {
+            /* simple, single-run case - this covers length==0 */
+            /* bidi.paraLevel is ok even for contextual multiple paragraphs */
+            getSingleRun(bidi, bidi.paraLevel);
+        } else /* Bidi.MIXED, length>0 */ {
+            /* mixed directionality */
+            int length = bidi.length, limit;
+            byte[] levels = bidi.levels;
+            int i, runCount;
+            byte level = Bidi.LEVEL_DEFAULT_LTR;   /* initialize with no valid level */
+            /*
+             * If there are WS characters at the end of the line
+             * and the run preceding them has a level different from
+             * paraLevel, then they will form their own run at paraLevel (L1).
+             * Count them separately.
+             * We need some special treatment for this in order to not
+             * modify the levels array which a line Bidi object shares
+             * with its paragraph parent and its other line siblings.
+             * In other words, for the trailing WS, it may be
+             * levels[]!=paraLevel but we have to treat it like it were so.
+             */
+            limit = bidi.trailingWSStart;
+            /* count the runs, there is at least one non-WS run, and limit>0 */
+            runCount = 0;
+            for (i = 0; i < limit; ++i) {
+                /* increment runCount at the start of each run */
+                if (levels[i] != level) {
+                    ++runCount;
+                    level = levels[i];
+                }
+            }
+
+            /*
+             * We don't need to see if the last run can be merged with a trailing
+             * WS run because setTrailingWSStart() would have done that.
+             */
+            if (runCount == 1 && limit == length) {
+                /* There is only one non-WS run and no trailing WS-run. */
+                getSingleRun(bidi, levels[0]);
+            } else /* runCount>1 || limit<length */ {
+                /* allocate and set the runs */
+                BidiRun[] runs;
+                int runIndex, start;
+                byte minLevel = Bidi.MAX_EXPLICIT_LEVEL + 1;
+                byte maxLevel=0;
+
+                /* now, count a (non-mergeable) WS run */
+                if (limit < length) {
+                    ++runCount;
+                }
+
+                /* runCount > 1 */
+                bidi.getRunsMemory(runCount);
+                runs = bidi.runsMemory;
+
+                /* set the runs */
+                /* FOOD FOR THOUGHT: this could be optimized, e.g.:
+                 * 464->444, 484->444, 575->555, 595->555
+                 * However, that would take longer. Check also how it would
+                 * interact with BiDi control removal and inserting Marks.
+                 */
+                runIndex = 0;
+
+                /* search for the run limits and initialize visualLimit values with the run lengths */
+                i = 0;
+                do {
+                    /* prepare this run */
+                    start = i;
+                    level = levels[i];
+                    if (level < minLevel) {
+                        minLevel = level;
+                    }
+                    if (level > maxLevel) {
+                        maxLevel = level;
+                    }
+
+                    /* look for the run limit */
+                    while (++i < limit && levels[i] == level) {}
+
+                    /* i is another run limit */
+                    runs[runIndex] = new BidiRun(start, i - start, level);
+                    ++runIndex;
+                } while (i < limit);
+
+                if (limit < length) {
+                    /* there is a separate WS run */
+                    runs[runIndex] = new BidiRun(limit, length - limit, bidi.paraLevel);
+                    /* For the trailing WS run, bidi.paraLevel is ok even
+                       if contextual multiple paragraphs.                   */
+                    if (bidi.paraLevel < minLevel) {
+                        minLevel = bidi.paraLevel;
+                    }
+                }
+
+                /* set the object fields */
+                bidi.runs = runs;
+                bidi.runCount = runCount;
+
+                reorderLine(bidi, minLevel, maxLevel);
+
+                /* now add the direction flags and adjust the visualLimit's to be just that */
+                /* this loop will also handle the trailing WS run */
+                limit = 0;
+                for (i = 0; i < runCount; ++i) {
+                    runs[i].level = levels[runs[i].start];
+                    limit = (runs[i].limit += limit);
+                }
+
+                /* Set the embedding level for the trailing WS run. */
+                /* For a RTL paragraph, it will be the *first* run in visual order. */
+                /* For the trailing WS run, bidi.paraLevel is ok even if
+                   contextual multiple paragraphs.                          */
+                if (runIndex < runCount) {
+                    int trailingRun = ((bidi.paraLevel & 1) != 0)? 0 : runIndex;
+                    runs[trailingRun].level = bidi.paraLevel;
+                }
+            }
+        }
+
+        /* handle insert LRM/RLM BEFORE/AFTER run */
+        if (bidi.insertPoints.size > 0) {
+            Bidi.Point point;
+            int runIndex, ip;
+            for (ip = 0; ip < bidi.insertPoints.size; ip++) {
+                point = bidi.insertPoints.points[ip];
+                runIndex = getRunFromLogicalIndex(bidi, point.pos);
+                bidi.runs[runIndex].insertRemove |= point.flag;
+            }
+        }
+
+        /* handle remove BiDi control characters */
+        if (bidi.controlCount > 0) {
+            int runIndex, ic;
+            char c;
+            for (ic = 0; ic < bidi.length; ic++) {
+                c = bidi.text[ic];
+                if (Bidi.IsBidiControlChar(c)) {
+                    runIndex = getRunFromLogicalIndex(bidi, ic);
+                    bidi.runs[runIndex].insertRemove--;
+                }
+            }
+        }
+    }
+
+    static int[] prepareReorder(byte[] levels, byte[] pMinLevel, byte[] pMaxLevel)
+    {
+        int start;
+        byte level, minLevel, maxLevel;
+
+        if (levels == null || levels.length <= 0) {
+            return null;
+        }
+
+        /* determine minLevel and maxLevel */
+        minLevel = Bidi.MAX_EXPLICIT_LEVEL + 1;
+        maxLevel = 0;
+        for (start = levels.length; start>0; ) {
+            level = levels[--start];
+            if (level > Bidi.MAX_EXPLICIT_LEVEL + 1) {
+                return null;
+            }
+            if (level < minLevel) {
+                minLevel = level;
+            }
+            if (level > maxLevel) {
+                maxLevel = level;
+            }
+        }
+        pMinLevel[0] = minLevel;
+        pMaxLevel[0] = maxLevel;
+
+        /* initialize the index map */
+        int[] indexMap = new int[levels.length];
+        for (start = levels.length; start > 0; ) {
+            --start;
+            indexMap[start] = start;
+        }
+
+        return indexMap;
+    }
+
+    static int[] reorderLogical(byte[] levels)
+    {
+        byte[] aMinLevel = new byte[1];
+        byte[] aMaxLevel = new byte[1];
+        int start, limit, sumOfSosEos;
+        byte minLevel, maxLevel;
+        int[] indexMap = prepareReorder(levels, aMinLevel, aMaxLevel);
+        if (indexMap == null) {
+            return null;
+        }
+
+        minLevel = aMinLevel[0];
+        maxLevel = aMaxLevel[0];
+
+        /* nothing to do? */
+        if (minLevel == maxLevel && (minLevel & 1) == 0) {
+            return indexMap;
+        }
+
+        /* reorder only down to the lowest odd level */
+        minLevel |= 1;
+
+        /* loop maxLevel..minLevel */
+        do {
+            start = 0;
+
+            /* loop for all sequences of levels to reorder at the current maxLevel */
+            for ( ; ; ) {
+                /* look for a sequence of levels that are all at >=maxLevel */
+                /* look for the first index of such a sequence */
+                while (start < levels.length && levels[start] < maxLevel) {
+                    ++start;
+                }
+                if (start >= levels.length) {
+                    break;  /* no more such sequences */
+                }
+
+                /* look for the limit of such a sequence (the index behind it) */
+                for (limit = start; ++limit < levels.length && levels[limit] >= maxLevel; ) {}
+
+                /*
+                 * sos=start of sequence, eos=end of sequence
+                 *
+                 * The closed (inclusive) interval from sos to eos includes all the logical
+                 * and visual indexes within this sequence. They are logically and
+                 * visually contiguous and in the same range.
+                 *
+                 * For each run, the new visual index=sos+eos-old visual index;
+                 * we pre-add sos+eos into sumOfSosEos ->
+                 * new visual index=sumOfSosEos-old visual index;
+                 */
+                sumOfSosEos = start + limit - 1;
+
+                /* reorder each index in the sequence */
+                do {
+                    indexMap[start] = sumOfSosEos - indexMap[start];
+                } while (++start < limit);
+
+                /* start==limit */
+                if (limit == levels.length) {
+                    break;  /* no more such sequences */
+                } else {
+                    start = limit + 1;
+                }
+            }
+        } while (--maxLevel >= minLevel);
+        return indexMap;
+    }
+
+    static int[] reorderVisual(byte[] levels)
+    {
+        byte[] aMinLevel = new byte[1];
+        byte[] aMaxLevel = new byte[1];
+        int start, end, limit, temp;
+        byte minLevel, maxLevel;
+
+        int[] indexMap = prepareReorder(levels, aMinLevel, aMaxLevel);
+        if (indexMap == null) {
+            return null;
+        }
+
+        minLevel = aMinLevel[0];
+        maxLevel = aMaxLevel[0];
+
+        /* nothing to do? */
+        if (minLevel == maxLevel && (minLevel & 1) == 0) {
+            return indexMap;
+        }
+
+        /* reorder only down to the lowest odd level */
+        minLevel |= 1;
+
+        /* loop maxLevel..minLevel */
+        do {
+            start = 0;
+
+            /* loop for all sequences of levels to reorder at the current maxLevel */
+            for ( ; ; ) {
+                /* look for a sequence of levels that are all at >=maxLevel */
+                /* look for the first index of such a sequence */
+                while (start < levels.length && levels[start] < maxLevel) {
+                    ++start;
+                }
+                if (start >= levels.length) {
+                    break;  /* no more such runs */
+                }
+
+                /* look for the limit of such a sequence (the index behind it) */
+                for (limit = start; ++limit < levels.length && levels[limit] >= maxLevel; ) {}
+
+                /*
+                 * Swap the entire interval of indexes from start to limit-1.
+                 * We don't need to swap the levels for the purpose of this
+                 * algorithm: the sequence of levels that we look at does not
+                 * move anyway.
+                 */
+                end = limit - 1;
+                while (start < end) {
+                    temp = indexMap[start];
+                    indexMap[start] = indexMap[end];
+                    indexMap[end] = temp;
+
+                    ++start;
+                    --end;
+                }
+
+                if (limit == levels.length) {
+                    break;  /* no more such sequences */
+                } else {
+                    start = limit + 1;
+                }
+            }
+        } while (--maxLevel >= minLevel);
+
+        return indexMap;
+    }
+
+    static int getVisualIndex(Bidi bidi, int logicalIndex)
+    {
+        int visualIndex = Bidi.MAP_NOWHERE;
+
+        /* we can do the trivial cases without the runs array */
+        switch(bidi.direction) {
+        case Bidi.LTR:
+            visualIndex = logicalIndex;
+            break;
+        case Bidi.RTL:
+            visualIndex = bidi.length - logicalIndex - 1;
+            break;
+        default:
+            getRuns(bidi);
+            BidiRun[] runs = bidi.runs;
+            int i, visualStart = 0, offset, length;
+
+            /* linear search for the run, search on the visual runs */
+            for (i = 0; i < bidi.runCount; ++i) {
+                length = runs[i].limit - visualStart;
+                offset = logicalIndex - runs[i].start;
+                if (offset >= 0 && offset < length) {
+                    if (runs[i].isEvenRun()) {
+                        /* LTR */
+                        visualIndex = visualStart + offset;
+                    } else {
+                        /* RTL */
+                        visualIndex = visualStart + length - offset - 1;
+                    }
+                    break;                  /* exit for loop */
+                }
+                visualStart += length;
+            }
+            if (i >= bidi.runCount) {
+                return Bidi.MAP_NOWHERE;
+            }
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            /* add the number of added marks until the calculated visual index */
+            BidiRun runs[] = bidi.runs;
+            int i, length, insertRemove;
+            int visualStart = 0, markFound = 0;
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                /* is it the run containing the visual index? */
+                if (visualIndex < runs[i].limit) {
+                    return visualIndex + markFound;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            /* subtract the number of controls until the calculated visual index */
+            BidiRun[] runs = bidi.runs;
+            int i, j, start, limit, length, insertRemove;
+            int visualStart = 0, controlFound = 0;
+            char uchar = bidi.text[logicalIndex];
+            /* is the logical index pointing to a control ? */
+            if (Bidi.IsBidiControlChar(uchar)) {
+                return Bidi.MAP_NOWHERE;
+            }
+            /* loop on runs */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* calculated visual index is beyond this run? */
+                if (visualIndex >= runs[i].limit) {
+                    controlFound -= insertRemove;
+                    continue;
+                }
+                /* calculated visual index must be within current run */
+                if (insertRemove == 0) {
+                    return visualIndex - controlFound;
+                }
+                if (runs[i].isEvenRun()) {
+                    /* LTR: check from run start to logical index */
+                    start = runs[i].start;
+                    limit = logicalIndex;
+                } else {
+                    /* RTL: check from logical index to run end */
+                    start = logicalIndex + 1;
+                    limit = runs[i].start + length;
+                }
+                for (j = start; j < limit; j++) {
+                    uchar = bidi.text[j];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                    }
+                }
+                return visualIndex - controlFound;
+            }
+        }
+
+        return visualIndex;
+    }
+
+    static int getLogicalIndex(Bidi bidi, int visualIndex)
+    {
+        BidiRun[] runs;
+        int i, runCount, start;
+
+        runs = bidi.runs;
+        runCount = bidi.runCount;
+        if (bidi.insertPoints.size > 0) {
+            /* handle inserted LRM/RLM */
+            int markFound = 0, insertRemove;
+            int visualStart = 0, length;
+            /* subtract number of marks until visual index */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    if (visualIndex <= (visualStart+markFound)) {
+                        return Bidi.MAP_NOWHERE;
+                    }
+                    markFound++;
+                }
+                /* is adjusted visual index within this run? */
+                if (visualIndex < (runs[i].limit + markFound)) {
+                    visualIndex -= markFound;
+                    break;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    if (visualIndex == (visualStart + length + markFound)) {
+                        return Bidi.MAP_NOWHERE;
+                    }
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            /* handle removed BiDi control characters */
+            int controlFound = 0, insertRemove, length;
+            int logicalStart, logicalEnd, visualStart = 0, j, k;
+            char uchar;
+            boolean evenRun;
+            /* add number of controls until visual index */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* is adjusted visual index beyond current run? */
+                if (visualIndex >= (runs[i].limit - controlFound + insertRemove)) {
+                    controlFound -= insertRemove;
+                    continue;
+                }
+                /* adjusted visual index is within current run */
+                if (insertRemove == 0) {
+                    visualIndex += controlFound;
+                    break;
+                }
+                /* count non-control chars until visualIndex */
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalEnd = logicalStart + length - 1;
+                for (j = 0; j < length; j++) {
+                    k= evenRun ? logicalStart+j : logicalEnd-j;
+                    uchar = bidi.text[k];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                    }
+                    if ((visualIndex + controlFound) == (visualStart + j)) {
+                        break;
+                    }
+                }
+                visualIndex += controlFound;
+                break;
+            }
+        }
+        /* handle all cases */
+        if (runCount <= 10) {
+            /* linear search for the run */
+            for (i = 0; visualIndex >= runs[i].limit; ++i) {}
+        } else {
+            /* binary search for the run */
+            int begin = 0, limit = runCount;
+
+            /* the middle if() is guaranteed to find the run, we don't need a loop limit */
+            for ( ; ; ) {
+                i = (begin + limit) / 2;
+                if (visualIndex >= runs[i].limit) {
+                    begin = i + 1;
+                } else if (i==0 || visualIndex >= runs[i-1].limit) {
+                    break;
+                } else {
+                    limit = i;
+                }
+            }
+        }
+
+        start= runs[i].start;
+        if (runs[i].isEvenRun()) {
+            /* LTR */
+            /* the offset in runs[i] is visualIndex-runs[i-1].visualLimit */
+            if (i > 0) {
+                visualIndex -= runs[i - 1].limit;
+            }
+            return start + visualIndex;
+        } else {
+            /* RTL */
+            return start + runs[i].limit - visualIndex - 1;
+        }
+    }
+
+    static int[] getLogicalMap(Bidi bidi)
+    {
+        /* fill a logical-to-visual index map using the runs[] */
+        BidiRun[] runs = bidi.runs;
+        int logicalStart, visualStart, logicalLimit, visualLimit;
+        int[] indexMap = new int[bidi.length];
+        if (bidi.length > bidi.resultLength) {
+            Arrays.fill(indexMap, Bidi.MAP_NOWHERE);
+        }
+
+        visualStart = 0;
+        for (int j = 0; j < bidi.runCount; ++j) {
+            logicalStart = runs[j].start;
+            visualLimit = runs[j].limit;
+            if (runs[j].isEvenRun()) {
+                do { /* LTR */
+                    indexMap[logicalStart++] = visualStart++;
+                } while (visualStart < visualLimit);
+            } else {
+                logicalStart += visualLimit - visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    indexMap[--logicalStart] = visualStart++;
+                } while (visualStart < visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            int markFound = 0, runCount = bidi.runCount;
+            int length, insertRemove, i, j;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* add number of marks found until each index */
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                if (markFound > 0) {
+                    logicalStart = runs[i].start;
+                    logicalLimit = logicalStart + length;
+                    for (j = logicalStart; j < logicalLimit; j++) {
+                        indexMap[j] += markFound;
+                    }
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            int controlFound = 0, runCount = bidi.runCount;
+            int length, insertRemove, i, j, k;
+            boolean evenRun;
+            char uchar;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* subtract number of controls found until each index */
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* no control found within previous runs nor within this run */
+                if ((controlFound - insertRemove) == 0) {
+                    continue;
+                }
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalLimit = logicalStart + length;
+                /* if no control within this run */
+                if (insertRemove == 0) {
+                    for (j = logicalStart; j < logicalLimit; j++) {
+                        indexMap[j] -= controlFound;
+                    }
+                    continue;
+                }
+                for (j = 0; j < length; j++) {
+                    k = evenRun ? logicalStart + j : logicalLimit - j - 1;
+                    uchar = bidi.text[k];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                        indexMap[k] = Bidi.MAP_NOWHERE;
+                        continue;
+                    }
+                    indexMap[k] -= controlFound;
+                }
+            }
+        }
+        return indexMap;
+    }
+
+    static int[] getVisualMap(Bidi bidi)
+    {
+        /* fill a visual-to-logical index map using the runs[] */
+        BidiRun[] runs = bidi.runs;
+        int logicalStart, visualStart, visualLimit;
+        int allocLength = bidi.length > bidi.resultLength ? bidi.length
+                                                          : bidi.resultLength;
+        int[] indexMap = new int[allocLength];
+
+        visualStart = 0;
+        int idx = 0;
+        for (int j = 0; j < bidi.runCount; ++j) {
+            logicalStart = runs[j].start;
+            visualLimit = runs[j].limit;
+            if (runs[j].isEvenRun()) {
+                do { /* LTR */
+                    indexMap[idx++] = logicalStart++;
+                } while (++visualStart < visualLimit);
+            } else {
+                logicalStart += visualLimit - visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    indexMap[idx++] = --logicalStart;
+                } while (++visualStart < visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            int markFound = 0, runCount = bidi.runCount;
+            int insertRemove, i, j, k;
+            runs = bidi.runs;
+            /* count all inserted marks */
+            for (i = 0; i < runCount; i++) {
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+            /* move back indexes by number of preceding marks */
+            k = bidi.resultLength;
+            for (i = runCount - 1; i >= 0 && markFound > 0; i--) {
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    indexMap[--k] = Bidi.MAP_NOWHERE;
+                    markFound--;
+                }
+                visualStart = i > 0 ? runs[i-1].limit : 0;
+                for (j = runs[i].limit - 1; j >= visualStart && markFound > 0; j--) {
+                    indexMap[--k] = indexMap[j];
+                }
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    indexMap[--k] = Bidi.MAP_NOWHERE;
+                    markFound--;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            int runCount = bidi.runCount, logicalEnd;
+            int insertRemove, length, i, j, k, m;
+            char uchar;
+            boolean evenRun;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* move forward indexes by number of preceding controls */
+            k = 0;
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* if no control found yet, nothing to do in this run */
+                if ((insertRemove == 0) && (k == visualStart)) {
+                    k += length;
+                    continue;
+                }
+                /* if no control in this run */
+                if (insertRemove == 0) {
+                    visualLimit = runs[i].limit;
+                    for (j = visualStart; j < visualLimit; j++) {
+                        indexMap[k++] = indexMap[j];
+                    }
+                    continue;
+                }
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalEnd = logicalStart + length - 1;
+                for (j = 0; j < length; j++) {
+                    m = evenRun ? logicalStart + j : logicalEnd - j;
+                    uchar = bidi.text[m];
+                    if (!Bidi.IsBidiControlChar(uchar)) {
+                        indexMap[k++] = m;
+                    }
+                }
+            }
+        }
+        if (allocLength == bidi.resultLength) {
+            return indexMap;
+        }
+        int[] newMap = new int[bidi.resultLength];
+        System.arraycopy(indexMap, 0, newMap, 0, bidi.resultLength);
+        return newMap;
+    }
+
+    static int[] invertMap(int[] srcMap)
+    {
+        int srcLength = srcMap.length;
+        int destLength = -1, count = 0, i, srcEntry;
+
+        /* find highest value and count positive indexes in srcMap */
+        for (i = 0; i < srcLength; i++) {
+            srcEntry = srcMap[i];
+            if (srcEntry > destLength) {
+                destLength = srcEntry;
+            }
+            if (srcEntry >= 0) {
+                count++;
+            }
+        }
+        destLength++;           /* add 1 for origin 0 */
+        int[] destMap = new int[destLength];
+        if (count < destLength) {
+            /* we must fill unmatched destMap entries with -1 */
+            Arrays.fill(destMap, Bidi.MAP_NOWHERE);
+        }
+        for (i = 0; i < srcLength; i++) {
+            srcEntry = srcMap[i];
+            if (srcEntry >= 0) {
+                destMap[srcEntry] = i;
+            }
+        }
+        return destMap;
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiRun.java b/src/com/ibm/icu/text/BidiRun.java
new file mode 100644
index 0000000..83b8108
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiRun.java
@@ -0,0 +1,157 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * A BidiRun represents a sequence of characters at the same embedding level.
+ * The Bidi algorithm decomposes a piece of text into sequences of characters
+ * at the same embedding level, each such sequence is called a <quote>run</quote>.
+ *
+ * <p>A BidiRun represents such a run by storing its essential properties,
+ * but does not duplicate the characters which form the run.
+ *
+ * <p>The &quot;limit&quot; of the run is the position just after the
+ * last character, i.e., one more than that position.
+ *
+ * <p>This class has no public constructor, and its members cannot be
+ * modified by users.
+ *
+ * @see com.ibm.icu.text.Bidi
+ * @draft ICU 3.8
+ */
+public class BidiRun {
+
+    int start;              /* first logical position of the run */
+    int limit;              /* last visual position of the run +1 */
+    int insertRemove;       /* if >0, flags for inserting LRM/RLM before/after run,
+                               if <0, count of bidi controls within run            */
+    byte level;
+
+    /**
+     * Default constructor
+     *
+     * Note that members start and limit of a run instance have different
+     * meanings depending whether the run is part of the runs array of a Bidi
+     * object, or if it is a reference returned by getVisualRun() or
+     * getLogicalRun().
+     * For a member of the runs array of a Bidi object,
+     *   - start is the first logical position of the run in the source text.
+     *   - limit is one after the last visual position of the run.
+     * For a reference returned by getLogicalRun() or getVisualRun(),
+     *   - start is the first logical position of the run in the source text.
+     *   - limit is one after the last logical position of the run.
+     *
+     * @draft ICU 3.8
+     */
+    BidiRun()
+    {
+        this(0, 0, (byte)0);
+    }
+
+    /**
+     * Constructor
+     * @draft ICU 3.8
+     */
+    BidiRun(int start, int limit, byte embeddingLevel)
+    {
+        this.start = start;
+        this.limit = limit;
+        this.level = embeddingLevel;
+    }
+
+    /**
+     * Copy the content of a BidiRun instance
+     * @draft ICU 3.8
+     */
+    void copyFrom(BidiRun run)
+    {
+        this.start = run.start;
+        this.limit = run.limit;
+        this.level = run.level;
+        this.insertRemove = run.insertRemove;
+    }
+
+    /**
+     * Get the first logical position of the run in the source text
+     * @draft ICU 3.8
+     */
+    public int getStart()
+    {
+        return start;
+    }
+
+    /**
+     * Get position of one character after the end of the run in the source text
+     * @draft ICU 3.8
+     */
+    public int getLimit()
+    {
+        return limit;
+    }
+
+    /**
+     * Get length of run
+     * @draft ICU 3.8
+     */
+    public int getLength()
+    {
+        return limit - start;
+    }
+
+    /**
+     * Get level of run
+     * @draft ICU 3.8
+     */
+    public byte getEmbeddingLevel()
+    {
+        return level;
+    }
+
+    /**
+     * Check if run level is odd
+     * @return true if the embedding level of this run is odd, i.e. it is a
+     *  right-to-left run.
+     * @draft ICU 3.8
+     */
+    public boolean isOddRun()
+    {
+        return (level & 1) == 1;
+    }
+
+    /**
+     * Check if run level is even
+     * @return true if the embedding level of this run is even, i.e. it is a
+     *  left-to-right run.
+     * @draft ICU 3.8
+     */
+    public boolean isEvenRun()
+    {
+        return (level & 1) == 0;
+    }
+
+    /**
+     * Get direction of run
+     * @draft ICU 3.8
+     */
+    public byte getDirection()
+    {
+        return (byte)(level & 1);
+    }
+
+    /**
+     * String to display run
+     * @draft ICU 3.8
+     */
+    public String toString()
+    {
+        return new String("BidiRun " + start + " - " + limit + " @ " + level);
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiWriter.java b/src/com/ibm/icu/text/BidiWriter.java
new file mode 100644
index 0000000..8fc54ff
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiWriter.java
@@ -0,0 +1,431 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Bidi;
+
+final class BidiWriter {
+
+    /** Bidi control code points */
+    static final char LRM_CHAR = 0x200e;
+    static final char RLM_CHAR = 0x200f;
+    static final int MASK_R_AL = (1 << UCharacter.RIGHT_TO_LEFT |
+                                  1 << UCharacter.RIGHT_TO_LEFT_ARABIC);
+
+    private static boolean IsCombining(int type)
+    {
+        return ((1<<type &
+                (1<<UCharacter.NON_SPACING_MARK |
+                 1<<UCharacter.COMBINING_SPACING_MARK |
+                 1<<UCharacter.ENCLOSING_MARK)) != 0);
+    }
+
+    /*
+     * When we have OUTPUT_REVERSE set on writeReordered(), then we
+     * semantically write RTL runs in reverse and later reverse them again.
+     * Instead, we actually write them in forward order to begin with.
+     * However, if the RTL run was to be mirrored, we need to mirror here now
+     * since the implicit second reversal must not do it.
+     * It looks strange to do mirroring in LTR output, but it is only because
+     * we are writing RTL output in reverse.
+     */
+    private static String doWriteForward(String src, int options) {
+        /* optimize for several combinations of options */
+        switch(options&(Bidi.REMOVE_BIDI_CONTROLS|Bidi.DO_MIRRORING)) {
+        case 0: {
+            /* simply copy the LTR run to the destination */
+            return new String(src);
+        }
+        case Bidi.DO_MIRRORING: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* do mirroring */
+            int i=0;
+            int c;
+
+            do {
+                c = UTF16.charAt(src, i);
+                i += UTF16.getCharCount(c);
+                UTF16.append(dest, UCharacter.getMirror(c));
+            } while(i < src.length());
+            return dest.toString();
+        }
+        case Bidi.REMOVE_BIDI_CONTROLS: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* copy the LTR run and remove any Bidi control characters */
+            int i = 0;
+            char c;
+            do {
+                c = src.charAt(i++);
+                if(!Bidi.IsBidiControlChar(c)) {
+                    dest.append(c);
+                }
+            } while(i < src.length());
+            return dest.toString();
+        }
+        default: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* remove Bidi control characters and do mirroring */
+            int i = 0;
+            int c;
+            do {
+                c = UTF16.charAt(src, i);
+                i += UTF16.getCharCount(c);
+                if(!Bidi.IsBidiControlChar(c)) {
+                    UTF16.append(dest, UCharacter.getMirror(c));
+                }
+            } while(i < src.length());
+            return dest.toString();
+        }
+        } /* end of switch */
+    }
+
+    private static String doWriteForward(char[] text, int start, int limit,
+                                         int options)
+    {
+        return doWriteForward(new String(text, start, limit - start), options);
+    }
+
+    static String writeReverse(String src, int options) {
+        /*
+         * RTL run -
+         *
+         * RTL runs need to be copied to the destination in reverse order
+         * of code points, not code units, to keep Unicode characters intact.
+         *
+         * The general strategy for this is to read the source text
+         * in backward order, collect all code units for a code point
+         * (and optionally following combining characters, see below),
+         * and copy all these code units in ascending order
+         * to the destination for this run.
+         *
+         * Several options request whether combining characters
+         * should be kept after their base characters,
+         * whether Bidi control characters should be removed, and
+         * whether characters should be replaced by their mirror-image
+         * equivalent Unicode characters.
+         */
+        StringBuffer dest = new StringBuffer(src.length());
+
+        /* optimize for several combinations of options */
+        switch (options &
+                (Bidi.REMOVE_BIDI_CONTROLS |
+                 Bidi.DO_MIRRORING |
+                 Bidi.KEEP_BASE_COMBINING)) {
+
+        case 0:
+            /*
+             * With none of the "complicated" options set, the destination
+             * run will have the same length as the source run,
+             * and there is no mirroring and no keeping combining characters
+             * with their base characters.
+             *
+             * XXX: or dest = UTF16.reverse(new StringBuffer(src));
+             */
+
+            int srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int i = srcLength;
+
+                /* collect code units for one base character */
+                srcLength -= UTF16.getCharCount(UTF16.charAt(src,
+                                                             srcLength - 1));
+
+                /* copy this base character */
+                dest.append(src.substring(srcLength, i));
+            } while(srcLength > 0);
+            break;
+
+        case Bidi.KEEP_BASE_COMBINING:
+            /*
+             * Here, too, the destination
+             * run will have the same length as the source run,
+             * and there is no mirroring.
+             * We do need to keep combining characters with their base
+             * characters.
+             */
+            srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int c;
+                int i = srcLength;
+
+                /* collect code units and modifier letters for one base
+                 * character */
+                do {
+                    c = UTF16.charAt(src, srcLength - 1);
+                    srcLength -= UTF16.getCharCount(c);
+                } while(srcLength > 0 && IsCombining(UCharacter.getType(c)));
+
+                /* copy this "user character" */
+                dest.append(src.substring(srcLength, i));
+            } while(srcLength > 0);
+            break;
+
+        default:
+            /*
+             * With several "complicated" options set, this is the most
+             * general and the slowest copying of an RTL run.
+             * We will do mirroring, remove Bidi controls, and
+             * keep combining characters with their base characters
+             * as requested.
+             */
+            srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int i = srcLength;
+
+                /* collect code units for one base character */
+                int c = UTF16.charAt(src, srcLength - 1);
+                srcLength -= UTF16.getCharCount(c);
+                if ((options & Bidi.KEEP_BASE_COMBINING) != 0) {
+                    /* collect modifier letters for this base character */
+                    while(srcLength > 0 && IsCombining(UCharacter.getType(c))) {
+                        c = UTF16.charAt(src, srcLength - 1);
+                        srcLength -= UTF16.getCharCount(c);
+                    }
+                }
+
+                if ((options & Bidi.REMOVE_BIDI_CONTROLS) != 0 &&
+                    Bidi.IsBidiControlChar(c)) {
+                    /* do not copy this Bidi control character */
+                    continue;
+                }
+
+                /* copy this "user character" */
+                int j = srcLength;
+                if((options & Bidi.DO_MIRRORING) != 0) {
+                    /* mirror only the base character */
+                    c = UCharacter.getMirror(c);
+                    UTF16.append(dest, c);
+                    j += UTF16.getCharCount(c);
+                }
+                dest.append(src.substring(j, i));
+            } while(srcLength > 0);
+            break;
+        } /* end of switch */
+
+        return dest.toString();
+    }
+
+    static String doWriteReverse(char[] text, int start, int limit, int options)
+    {
+        return writeReverse(new String(text, start, limit - start), options);
+    }
+
+    static String writeReordered(Bidi bidi, int options)
+    {
+        int run, runCount;
+        StringBuffer dest;
+        char[] text = bidi.text;
+        runCount = bidi.countRuns();
+
+        /*
+         * Option "insert marks" implies Bidi.INSERT_LRM_FOR_NUMERIC if the
+         * reordering mode (checked below) is appropriate.
+         */
+        if ((bidi.reorderingOptions & Bidi.OPTION_INSERT_MARKS) != 0) {
+            options |= Bidi.INSERT_LRM_FOR_NUMERIC;
+            options &= ~Bidi.REMOVE_BIDI_CONTROLS;
+        }
+        /*
+         * Option "remove controls" implies Bidi.REMOVE_BIDI_CONTROLS
+         * and cancels Bidi.INSERT_LRM_FOR_NUMERIC.
+         */
+        if ((bidi.reorderingOptions & Bidi.OPTION_REMOVE_CONTROLS) != 0) {
+            options |= Bidi.REMOVE_BIDI_CONTROLS;
+            options &= ~Bidi.INSERT_LRM_FOR_NUMERIC;
+        }
+        /*
+         * If we do not perform the "inverse Bidi" algorithm, then we
+         * don't need to insert any LRMs, and don't need to test for it.
+         */
+        if ((bidi.reorderingMode != Bidi.REORDER_INVERSE_NUMBERS_AS_L) &&
+            (bidi.reorderingMode != Bidi.REORDER_INVERSE_LIKE_DIRECT)  &&
+            (bidi.reorderingMode != Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL) &&
+            (bidi.reorderingMode != Bidi.REORDER_RUNS_ONLY)) {
+            options &= ~Bidi.INSERT_LRM_FOR_NUMERIC;
+        }
+        dest = new StringBuffer((options & Bidi.INSERT_LRM_FOR_NUMERIC) != 0 ?
+                                 bidi.length * 2 : bidi.length);
+        /*
+         * Iterate through all visual runs and copy the run text segments to
+         * the destination, according to the options.
+         *
+         * The tests for where to insert LRMs ignore the fact that there may be
+         * BN codes or non-BMP code points at the beginning and end of a run;
+         * they may insert LRMs unnecessarily but the tests are faster this way
+         * (this would have to be improved for UTF-8).
+         */
+        if ((options & Bidi.OUTPUT_REVERSE) == 0) {
+            /* forward output */
+            if ((options & Bidi.INSERT_LRM_FOR_NUMERIC) == 0) {
+                /* do not insert Bidi controls */
+                for (run = 0; run < runCount; ++run) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+                     } else {
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+                     }
+                }
+            } else {
+                /* insert Bidi controls for "inverse Bidi" */
+                byte[] dirProps = bidi.dirProps;
+                char uc;
+                int markFlag;
+
+                for (run = 0; run < runCount; ++run) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    markFlag=0;
+                    /* check if something relevant in insertPoints */
+                    markFlag = bidi.runs[run].insertRemove;
+                    if (markFlag < 0) { /* bidi controls count */
+                        markFlag = 0;
+                    }
+                    if (bidiRun.isEvenRun()) {
+                        if (bidi.isInverse() &&
+                                dirProps[bidiRun.start] != Bidi.L) {
+                            markFlag |= Bidi.LRM_BEFORE;
+                        }
+                        if ((markFlag & Bidi.LRM_BEFORE) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_BEFORE) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                        dest.append(doWriteForward(text,
+                                                   bidiRun.start, bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+
+                        if (bidi.isInverse() &&
+                             dirProps[bidiRun.limit - 1] != Bidi.L) {
+                            markFlag |= Bidi.LRM_AFTER;
+                        }
+                        if ((markFlag & Bidi.LRM_AFTER) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_AFTER) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                    } else { /* RTL run */
+                        if (bidi.isInverse() &&
+                            !bidi.testDirPropFlagAt(MASK_R_AL,
+                                                    bidiRun.limit - 1)) {
+                            markFlag |= Bidi.RLM_BEFORE;
+                        }
+                        if ((markFlag & Bidi.LRM_BEFORE) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_BEFORE) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+
+                        if(bidi.isInverse() &&
+                                (MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.start])) == 0) {
+                            markFlag |= Bidi.RLM_AFTER;
+                        }
+                        if ((markFlag & Bidi.LRM_AFTER) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_AFTER) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                    }
+                }
+            }
+        } else {
+            /* reverse output */
+            if((options & Bidi.INSERT_LRM_FOR_NUMERIC) == 0) {
+                /* do not insert Bidi controls */
+                for(run = runCount; --run >= 0; ) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        dest.append(doWriteReverse(text,
+                                                   bidiRun.start, bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+                    } else {
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+                    }
+                }
+            } else {
+                /* insert Bidi controls for "inverse Bidi" */
+
+                byte[] dirProps = bidi.dirProps;
+
+                for (run = runCount; --run >= 0; ) {
+                    /* reverse output */
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        if (dirProps[bidiRun.limit - 1] != Bidi.L) {
+                            dest.append(LRM_CHAR);
+                        }
+
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                bidiRun.limit, options & ~Bidi.DO_MIRRORING));
+
+                        if (dirProps[bidiRun.start] != Bidi.L) {
+                            dest.append(LRM_CHAR);
+                        }
+                    } else {
+                        if ((MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.start])) == 0) {
+                            dest.append(RLM_CHAR);
+                        }
+
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+
+                        if ((MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.limit - 1])) == 0) {
+                            dest.append(RLM_CHAR);
+                        }
+                    }
+                }
+            }
+        }
+
+        return dest.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/BreakCTDictionary.java b/src/com/ibm/icu/text/BreakCTDictionary.java
new file mode 100644
index 0000000..c96e9c7
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakCTDictionary.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUBinary;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.text.CharacterIterator;
+
+/**
+ * This is a class used to load in the compact trie dictionary file
+ * used for dictionary based break iteration. 
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+class BreakCTDictionary {
+    private CompactTrieHeader fData;
+
+    static class CompactTrieHeader {
+        int size; // Size of data in bytes
+
+        int magic; // Magic number (including versions)
+
+        int nodeCount; // Number of entries in offsets[]
+
+        int root; // Node number of the root node
+
+        int []offset; // Offsets to nodes from start of data
+
+        CompactTrieHeader() {
+            size = 0;
+            magic = 0;
+            nodeCount = 0;
+            root = 0;
+            offset = null;
+        }
+    }
+
+    static final class CompactTrieNodeFlags {
+        static final int kVerticalNode = 0x1000; // This is a vertical node
+
+        static final int kParentEndsWord = 0x2000; // The node whose equal link
+                                                    // points to this ends a
+                                                    // word
+
+        static final int kReservedFlag1 = 0x4000;
+
+        static final int kReservedFlag2 = 0x8000;
+
+        static final int kCountMask = 0x0FFF; // The count portion of
+                                                // flagscount
+
+        static final int kFlagMask = 0xF000; // The flags portion of
+                                                // flagscount
+    }
+
+    // The two node types are distinguished by the kVerticalNode flag.
+    static class CompactTrieHorizontalNode {
+        char ch; // UChar
+
+        int equal; // Equal link node index
+
+        CompactTrieHorizontalNode(char newCh, int newEqual) {
+            ch = newCh;
+            equal = newEqual;
+        }
+    }
+
+    static class CompactTrieVerticalNode {
+        int equal; // Equal link node index
+
+        char chars[]; // Code units
+
+        CompactTrieVerticalNode() {
+            equal = 0;
+            chars = null;
+        }
+    }
+
+    private CompactTrieNodes getCompactTrieNode(int node) {
+        return nodes[node];
+    }
+
+    // private class to hold both node information
+    static class CompactTrieNodes {
+        short flagscount; // Count of sub-entries, plus flags
+
+        CompactTrieHorizontalNode[] hnode;
+
+        CompactTrieVerticalNode vnode;
+
+        CompactTrieNodes() {
+            flagscount = 0;
+            hnode = null;
+            vnode = null;
+        }
+    }
+
+    private CompactTrieNodes[] nodes;
+
+    // Constructor
+    public BreakCTDictionary(InputStream is) throws IOException {
+        ICUBinary.readHeader(is, DATA_FORMAT_ID, null);
+
+        DataInputStream in = new DataInputStream(is);
+        // Get header information
+        fData = new CompactTrieHeader();
+        fData.size = in.readInt();
+        fData.magic = in.readInt();
+        fData.nodeCount = in.readShort();
+        fData.root = in.readShort();
+
+        loadBreakCTDictionary(in);
+    }
+
+    // Loads the compact trie dictionary file into the CompactTrieNodes
+    private void loadBreakCTDictionary(DataInputStream in) throws IOException {
+        // skip over offset information
+        for (int i = 0; i < fData.nodeCount; i++) {
+            in.readInt();
+        }
+
+        // Create compact trie dictionary
+        nodes = new CompactTrieNodes[fData.nodeCount];
+        nodes[0] = new CompactTrieNodes();
+
+        // Load in compact trie dictionary
+        for (int j = 1; j < fData.nodeCount; j++) {
+            nodes[j] = new CompactTrieNodes();
+            nodes[j].flagscount = in.readShort();
+
+            int count = nodes[j].flagscount & CompactTrieNodeFlags.kCountMask;
+
+            if (count != 0) {
+                boolean isVerticalNode = (nodes[j].flagscount & CompactTrieNodeFlags.kVerticalNode) != 0;
+
+                // Vertical node
+                if (isVerticalNode) {
+                    nodes[j].vnode = new CompactTrieVerticalNode();
+                    nodes[j].vnode.equal = in.readShort();
+
+                    nodes[j].vnode.chars = new char[count];
+                    for (int l = 0; l < count; l++) {
+                        nodes[j].vnode.chars[l] = in.readChar();
+                    }
+                } else { // Horizontal node
+                    nodes[j].hnode = new CompactTrieHorizontalNode[count];
+                    for (int n = 0; n < count; n++) {
+                        nodes[j].hnode[n] = new CompactTrieHorizontalNode(in
+                                .readChar(), in.readShort());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Find dictionary words that match the text.
+     * 
+     * @param text
+     *            A CharacterIterator representing the text. The iterator is
+     *            left after the longest prefix match in the dictionary.
+     * @param maxLength
+     *            The maximum number of code units to match.
+     * @param lengths
+     *            An array that is filled with the lengths of words that
+     *            matched.
+     * @param count
+     *            Filled with the number of elements output in lengths.
+     * @param limit
+     *            The size of the lengths array; this limits the number of words
+     *            output.
+     * @return The number of characters in text that were matched.
+     */
+    public int matches(CharacterIterator text, int maxLength, int lengths[],
+            int count[], int limit) {
+        // Current implementation works in UTF-16 space
+        CompactTrieNodes node = getCompactTrieNode(fData.root);
+        int mycount = 0;
+
+        char uc = (char) text.current();
+        int i = 0;
+        boolean exitFlag = false;
+
+        while (node != null) {
+            // Check if the node we just exited ends a word
+            if (limit > 0
+                    && (node.flagscount & CompactTrieNodeFlags.kParentEndsWord) != 0) {
+                lengths[mycount++] = i;
+                --limit;
+            }
+            // Check that we haven't exceeded the maximum number of input
+            // characters.
+            // We have to do that here rather than in the while condition so
+            // that
+            // we can check for ending of a word above.
+            if (i >= maxLength) {
+                break;
+            }
+
+            int nodeCount = (node.flagscount & CompactTrieNodeFlags.kCountMask);
+            if (nodeCount == 0) {
+                // Special terminal node; return now
+                break;
+            }
+            if ((node.flagscount & CompactTrieNodeFlags.kVerticalNode) != 0) {
+                // Vertical node; check all the characters in it
+                CompactTrieVerticalNode vnode = node.vnode;
+                for (int j = 0; j < nodeCount && i < maxLength; j++) {
+                    if (uc != vnode.chars[j]) {
+                        // We hit a non equal character return;
+                        exitFlag = true;
+                        break;
+                    }
+                    text.next();
+                    uc = (char) text.current();
+                    i++;
+                }
+                if (exitFlag) {
+                    break;
+                }
+                // To get here, we must have come through the whole list successfully;
+                // go on to the next node. Note that a word cannot end in the middle 
+                // of a vertical node.
+                node = getCompactTrieNode(vnode.equal);
+            } else {
+                // Horizontal node; do binary search
+                CompactTrieHorizontalNode[] hnode = node.hnode;
+                int low = 0;
+                int high = nodeCount - 1;
+                int middle;
+                node = null; // If we don't find a match, we'll fall out of the loop
+                while (high >= low) {
+                    middle = (high + low) / 2;
+                    if (uc == hnode[middle].ch) {
+                        // We hit a match; get the next node and next character
+                        node = getCompactTrieNode(hnode[middle].equal);
+                        text.next();
+                        uc = (char) text.current();
+                        i++;
+                        break;
+                    } else if (uc < hnode[middle].ch) {
+                        high = middle - 1;
+                    } else {
+                        low = middle + 1;
+                    }
+                }
+            }
+        }
+
+        count[0] = mycount;
+        return i;
+    }
+
+    // Use for reading the header portion of the file
+    private static final byte DATA_FORMAT_ID[] = { (byte) 0x54, (byte) 0x72,
+            (byte) 0x44, (byte) 0x63 };
+}
diff --git a/src/com/ibm/icu/text/BreakDictionary.java b/src/com/ibm/icu/text/BreakDictionary.java
new file mode 100644
index 0000000..16ec9f5
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakDictionary.java
@@ -0,0 +1,323 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+
+import com.ibm.icu.util.CompactByteArray;
+
+/**
+ * This is the class that represents the list of known words used by
+ * DictionaryBasedBreakIterator.  The conceptual data structure used
+ * here is a trie: there is a node hanging off the root node for every
+ * letter that can start a word.  Each of these nodes has a node hanging
+ * off of it for every letter that can be the second letter of a word
+ * if this node is the first letter, and so on.  The trie is represented
+ * as a two-dimensional array that can be treated as a table of state
+ * transitions.  Indexes are used to compress this array, taking
+ * advantage of the fact that this array will always be very sparse.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public class BreakDictionary {
+    //=================================================================================
+    // testing and debugging
+    //=================================================================================
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+
+        BreakDictionary dictionary = new BreakDictionary(new FileInputStream(filename));
+
+        PrintWriter out = null;
+
+        if(args.length >= 2) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UnicodeLittle"));
+        }
+
+        dictionary.printWordList("", 0, out);
+
+        if (out != null) {
+            out.close();
+        }
+    }
+
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == 0xFFFF) {
+            System.out.println(partialWord);
+            if (out != null) {
+                out.println(partialWord);
+            }
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                int newState = (at(state, i)) & 0xFFFF;
+
+                if (newState != 0) {
+                    char newChar = reverseColumnMap[i];
+                    String newPartialWord = partialWord;
+
+                    if (newChar != 0) {
+                        newPartialWord += newChar;
+                    }
+
+                    printWordList(newPartialWord, newState, out);
+                }
+            }
+        }
+    }
+
+    /**
+     * A map used to go from column numbers to characters.  Used only
+     * for debugging right now.
+     */
+    private char[] reverseColumnMap = null;
+
+    //=================================================================================
+    // data members
+    //=================================================================================
+
+    /**
+     * Maps from characters to column numbers.  The main use of this is to
+     * avoid making room in the array for empty columns.
+     */
+    private CompactByteArray columnMap = null;
+
+    /**
+     * The number of actual columns in the table
+     */
+    private int numCols;
+
+    /*
+     * Columns are organized into groups of 32.  This says how many
+     * column groups.  (We could calculate this, but we store the
+     * value to avoid having to repeatedly calculate it.)
+     */
+    //private int numColGroups;
+
+    /**
+     * The actual compressed state table.  Each conceptual row represents
+     * a state, and the cells in it contain the row numbers of the states
+     * to transition to for each possible letter.  0 is used to indicate
+     * an illegal combination of letters (i.e., the error state).  The
+     * table is compressed by eliminating all the unpopulated (i.e., zero)
+     * cells.  Multiple conceptual rows can then be doubled up in a single
+     * physical row by sliding them up and possibly shifting them to one
+     * side or the other so the populated cells don't collide.  Indexes
+     * are used to identify unpopulated cells and to locate populated cells.
+     */
+    private short[] table = null;
+
+    /**
+     * This index maps logical row numbers to physical row numbers
+     */
+    private short[] rowIndex = null;
+
+    /**
+     * A bitmap is used to tell which cells in the comceptual table are
+     * populated.  This array contains all the unique bit combinations
+     * in that bitmap.  If the table is more than 32 columns wide,
+     * successive entries in this array are used for a single row.
+     */
+    private int[] rowIndexFlags = null;
+
+    /**
+     * This index maps from a logical row number into the bitmap table above.
+     * (This keeps us from storing duplicate bitmap combinations.)  Since there
+     * are a lot of rows with only one populated cell, instead of wasting space
+     * in the bitmap table, we just store a negative number in this index for
+     * rows with one populated cell.  The absolute value of that number is
+     * the column number of the populated cell.
+     */
+    private short[] rowIndexFlagsIndex = null;
+
+    /**
+     * For each logical row, this index contains a constant that is added to
+     * the logical column number to get the physical column number
+     */
+    private byte[] rowIndexShifts = null;
+
+    //=================================================================================
+    // deserialization
+    //=================================================================================
+
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public BreakDictionary(InputStream dictionaryStream) throws IOException {
+        readDictionaryFile(new DataInputStream(dictionaryStream));
+    }
+
+    /** 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void readDictionaryFile(DataInputStream in) throws IOException {
+        int l;
+
+        // read in the version number (right now we just ignore it)
+        in.readInt();
+
+        // read in the column map (this is serialized in its internal form:
+        // an index array followed by a data array)
+        l = in.readInt();
+        char[] temp = new char[l];
+        for (int i = 0; i < temp.length; i++)
+            temp[i] = (char)in.readShort();
+        l = in.readInt();
+        byte[] temp2 = new byte[l];
+        for (int i = 0; i < temp2.length; i++)
+            temp2[i] = in.readByte();
+        columnMap = new CompactByteArray(temp, temp2);
+
+        // read in numCols and numColGroups
+        numCols = in.readInt();
+        /*numColGroups = */in.readInt();
+
+        // read in the row-number index
+        l = in.readInt();
+        rowIndex = new short[l];
+        for (int i = 0; i < rowIndex.length; i++)
+            rowIndex[i] = in.readShort();
+
+        // load in the populated-cells bitmap: index first, then bitmap list
+        l = in.readInt();
+        rowIndexFlagsIndex = new short[l];
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            rowIndexFlagsIndex[i] = in.readShort();
+        l = in.readInt();
+        rowIndexFlags = new int[l];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = in.readInt();
+
+        // load in the row-shift index
+        l = in.readInt();
+        rowIndexShifts = new byte[l];
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            rowIndexShifts[i] = in.readByte();
+
+        // finally, load in the actual state table
+        l = in.readInt();
+        table = new short[l];
+        for (int i = 0; i < table.length; i++)
+            table[i] = in.readShort();
+
+        // this data structure is only necessary for testing and debugging purposes
+        reverseColumnMap = new char[numCols];
+        for (char c = 0; c < 0xffff; c++) {
+            int col = columnMap.elementAt(c);
+            if (col != 0) {
+               reverseColumnMap[col] = c;
+            }
+        }
+
+        // close the stream
+        in.close();
+    }
+
+    //=================================================================================
+    // access to the words
+    //=================================================================================
+
+    /**
+     * Uses the column map to map the character to a column number, then
+     * passes the row and column number to the other version of at()
+     * @param row The current state
+     * @param ch The character whose column we're interested in
+     * @return The new state to transition to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    /**
+     * Returns the value in the cell with the specified (logical) row and
+     * column numbers.  In DictionaryBasedBreakIterator, the row number is
+     * a state number, the column number is an input, and the return value
+     * is the row number of the new state to transition to.  (0 is the
+     * "error" state, and -1 is the "end of word" state in a dictionary)
+     * @param row The row number of the current state
+     * @param col The column number of the input character (0 means "not a
+     * dictionary character")
+     * @return The row number of the new state to transition to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col)) {
+            // we map from logical to physical row number by looking up the
+            // mapping in rowIndex; we map from logical column number to
+            // physical column number by looking up a shift value for this
+            // logical row and offsetting the logical column number by
+            // the shift amount.  Then we can use internalAt() to actually
+            // get the value out of the table.
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Given (logical) row and column numbers, returns true if the
+     * cell in that position is populated
+     */
+    private final boolean cellIsPopulated(int row, int col) {
+        // look up the entry in the bitmap index for the specified row.
+        // If it's a negative number, it's the column number of the only
+        // populated cell in the row
+        if (rowIndexFlagsIndex[row] < 0) {
+            return col == -rowIndexFlagsIndex[row];
+        }
+
+        // if it's a positive number, it's the offset of an entry in the bitmap
+        // list.  If the table is more than 32 columns wide, the bitmap is stored
+        // successive entries in the bitmap list, so we have to divide the column
+        // number by 32 and offset the number we got out of the index by the result.
+        // Once we have the appropriate piece of the bitmap, test the appropriate
+        // bit and return the result.
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    /**
+     * Implementation of at() when we know the specified cell is populated.
+     * @param row The PHYSICAL row number of the cell
+     * @param col The PHYSICAL column number of the cell
+     * @return The value stored in the cell
+     */
+    private final short internalAt(int row, int col) {
+        // the table is a one-dimensional array, so this just does the math necessary
+        // to treat it as a two-dimensional array (we don't just use a two-dimensional
+        // array because two-dimensional arrays are inefficient in Java)
+        return table[row * numCols + col];
+    }
+}
+
diff --git a/src/com/ibm/icu/text/BreakIterator.java b/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..650a398
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,879 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.lang.ref.SoftReference;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide five built-in types of BreakIterator:
+ * <ul><li>getTitleInstance() returns a BreakIterator that locates boundaries
+ * between title breaks.
+ * <li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+  * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p)))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ * @stable ICU 2.0
+ *
+ */
+
+public abstract class BreakIterator implements Cloneable
+{
+
+    private static final boolean DEBUG = ICUDebug.enabled("breakiterator");
+    
+    /**
+     * Default constructor.  There is no state that is carried by this abstract
+     * base class.
+     * @stable ICU 2.0
+     */
+    protected BreakIterator()
+    {
+    }
+
+    /**
+     * Clone method.  Creates another BreakIterator with the same behavior and
+     * current state as this one.
+     * @return The clone.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int first();
+
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int last();
+
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     * @stable ICU 2.0
+     */
+    public abstract int next(int n);
+
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int next();
+
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int previous();
+
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public abstract int following(int offset);
+
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        // NOTE:  This implementation is here solely because we can't add new
+        // abstract methods to an existing class.  There is almost ALWAYS a
+        // better, faster way to do this.
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE)
+            pos = previous();
+        return pos;
+    }
+
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     * @stable ICU 2.0
+     */
+    public boolean isBoundary(int offset) {
+        // Again, this is the default implementation, which is provided solely because
+        // we couldn't add a new abstract method to an existing class.  The real
+        // implementations will usually need to do a little more work.
+        if (offset == 0) {
+            return true;
+        }
+        else
+            return following(offset - 1) == offset;
+    }
+
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     * @stable ICU 2.0
+     */
+    public abstract int current();
+
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     * @stable ICU 2.0
+     */
+    public abstract CharacterIterator getText();
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     * @stable ICU 2.0
+     */
+    public void setText(String newText)
+    {
+        setText(new StringCharacterIterator(newText));
+    }
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     * @stable ICU 2.0
+     */
+    public abstract void setText(CharacterIterator newText);
+
+    /** @stable ICU 2.4 */
+    public static final int KIND_CHARACTER = 0;
+    /** @stable ICU 2.4 */
+    public static final int KIND_WORD = 1;
+    /** @stable ICU 2.4 */
+    public static final int KIND_LINE = 2;
+    /** @stable ICU 2.4 */
+    public static final int KIND_SENTENCE = 3;
+    /** @stable ICU 2.4 */
+    public static final int KIND_TITLE = 4;
+
+    /** @since ICU 2.8 */
+    private static final int KIND_COUNT = 5;
+
+    /** @internal */
+    private static final SoftReference[] iterCache = new SoftReference[5];
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance()
+    {
+        return getWordInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_WORD);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getWordInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_WORD);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance()
+    {
+        return getLineInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_LINE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getLineInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_LINE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance()
+    {
+        return getCharacterInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_CHARACTER);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getCharacterInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_CHARACTER);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance()
+    {
+        return getSentenceInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_SENTENCE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getSentenceInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_SENTENCE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language. The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use a word boundary iterator. {@link #getWordInstance}
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getTitleInstance()
+    {
+        return getTitleInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use Word Boundary iterator.{@link #getWordInstance}
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getTitleInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_TITLE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use Word Boundary iterator.{@link #getWordInstance}
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 3.2
+s     */
+    public static BreakIterator getTitleInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_TITLE);
+    }
+
+    /**
+     * Register a new break iterator of the indicated kind, to use in the given locale.
+     * Clones of the iterator will be returned
+     * if a request for a break iterator of the given kind matches or falls back to
+     * this locale.
+     * @param iter the BreakIterator instance to adopt.
+     * @param locale the Locale for which this instance is to be registered
+     * @param kind the type of iterator for which this instance is to be registered
+     * @return a registry key that can be used to unregister this instance
+     * @stable ICU 2.4
+     */
+    public static Object registerInstance(BreakIterator iter, Locale locale, int kind) {
+        return registerInstance(iter, ULocale.forLocale(locale), kind);
+    }
+
+    /**
+     * Register a new break iterator of the indicated kind, to use in the given locale.
+     * Clones of the iterator will be returned
+     * if a request for a break iterator of the given kind matches or falls back to
+     * this locale.
+     * @param iter the BreakIterator instance to adopt.
+     * @param locale the Locale for which this instance is to be registered
+     * @param kind the type of iterator for which this instance is to be registered
+     * @return a registry key that can be used to unregister this instance
+     * @stable ICU 3.2
+     */
+    public static Object registerInstance(BreakIterator iter, ULocale locale, int kind) {
+        // If the registered object matches the one in the cache, then
+        // flush the cached object.
+        if (iterCache[kind] != null) {
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[kind].get();
+            if (cache != null) {
+                if (cache.getLocale().equals(locale)) {
+                    iterCache[kind] = null;
+                }
+            }
+        }
+        return getShim().registerInstance(iter, locale, kind);
+    }
+
+    /**
+     * Unregister a previously-registered BreakIterator using the key returned from the
+     * register call.  Key becomes invalid after this call and should not be used again.
+     * @param key the registry key returned by a previous call to registerInstance
+     * @return true if the iterator for the key was successfully unregistered
+     * @stable ICU 2.4
+     */
+    public static boolean unregister(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException("registry key must not be null");
+        }
+        // TODO: we don't do code coverage for the following lines
+        // because in getBreakInstance we always instantiate the shim,
+        // and test execution is such that we always instantiate a
+        // breakiterator before we get to the break iterator tests.
+        // this is for modularization, and we could remove the
+        // dependencies in getBreakInstance by rewriting part of the
+        // LocaleData code, or perhaps by accepting it into the
+        // module.
+        ///CLOVER:OFF
+        if (shim != null) {
+            // Unfortunately, we don't know what is being unregistered
+            // -- what `kind' and what locale -- so we flush all
+            // caches.  This is safe but inefficient if people are
+            // actively registering and unregistering.
+            for (int kind=0; kind<KIND_COUNT; ++kind) {
+                iterCache[kind] = null;
+            }
+            return shim.unregister(key);
+        }
+        return false;
+        ///CLOVER:ON
+    }
+
+    // end of registration
+
+    /**
+     * Get a particular kind of BreakIterator for a locale.
+     * Avoids writing a switch statement with getXYZInstance(where) calls. 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static BreakIterator getBreakInstance(ULocale where, int kind) {
+
+        if (iterCache[kind] != null) {
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[kind].get();
+            if (cache != null) {
+                if (cache.getLocale().equals(where)) {
+                    return cache.createBreakInstance();
+                }
+            }
+        }
+
+        // sigh, all to avoid linking in ICULocaleData...
+        BreakIterator result = getShim().createBreakIterator(where, kind);
+
+        BreakIteratorCache cache = new BreakIteratorCache(where, result);
+        iterCache[kind] = new SoftReference(cache);
+        return result;
+    }
+
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 2.6
+     */
+    public static synchronized Locale[] getAvailableLocales()
+    {
+        // to avoid linking ICULocaleData
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized ULocale[] getAvailableULocales()
+    {
+        // to avoid linking ICULocaleData
+        return getShim().getAvailableULocales();
+    }
+
+    private static final class BreakIteratorCache {
+
+        private BreakIterator iter;
+        private ULocale where;
+
+        BreakIteratorCache(ULocale where, BreakIterator iter) {
+            this.where = where;
+            this.iter = (BreakIterator) iter.clone();
+        }
+
+        ULocale getLocale() {
+            return where;
+        }
+
+        BreakIterator createBreakInstance() {
+            return (BreakIterator) iter.clone();
+        }
+    }
+
+    static abstract class BreakIteratorServiceShim {
+        public abstract Object registerInstance(BreakIterator iter, ULocale l, int k);
+        public abstract boolean unregister(Object key);
+        public abstract Locale[] getAvailableLocales();
+        public abstract ULocale[] getAvailableULocales();
+        public abstract BreakIterator createBreakIterator(ULocale l, int k);
+    }
+
+    private static BreakIteratorServiceShim shim;
+    private static BreakIteratorServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.BreakIteratorFactory");
+                shim = (BreakIteratorServiceShim)cls.newInstance();
+            }
+            catch (MissingResourceException e)
+            {
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/BreakIteratorFactory.java b/src/com/ibm/icu/text/BreakIteratorFactory.java
new file mode 100644
index 0000000..8e91f0d
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakIteratorFactory.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.impl.Assert;
+
+/**
+ * @author Ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+final class BreakIteratorFactory extends BreakIterator.BreakIteratorServiceShim {
+
+    public Object registerInstance(BreakIterator iter, ULocale locale, int kind) {
+        iter.setText(new java.text.StringCharacterIterator(""));
+        return service.registerObject(iter, locale, kind);
+    }
+
+    public boolean unregister(Object key) {
+        if (service.isDefault()) {
+            return false;
+        }
+        return service.unregisterFactory((Factory)key);
+    }
+
+    public Locale[] getAvailableLocales() {
+        if (service == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return service.getAvailableLocales();
+        }
+    }
+
+    public ULocale[] getAvailableULocales() {
+        if (service == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return service.getAvailableULocales();
+        }
+    }
+
+    public BreakIterator createBreakIterator(ULocale locale, int kind) {
+    // TODO: convert to ULocale when service switches over
+        if (service.isDefault()) {
+            return createBreakInstance(locale, kind);
+        }
+        ULocale[] actualLoc = new ULocale[1];
+        BreakIterator iter = (BreakIterator)service.get(locale, kind, actualLoc);
+        iter.setLocale(actualLoc[0], actualLoc[0]); // services make no distinction between actual & valid
+        return iter;
+    }
+
+    private static class BFService extends ICULocaleService {
+        BFService() {
+            super("BreakIterator");
+
+            class RBBreakIteratorFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return createBreakInstance(loc, kind);
+                }
+            }
+            registerFactory(new RBBreakIteratorFactory());
+
+            markDefault();
+        }
+    }
+    static final ICULocaleService service = new BFService();
+
+
+    /** KIND_NAMES are the resource key to be used to fetch the name of the
+     *             pre-compiled break rules.  The resource bundle name is "boundaries".
+     *             The value for each key will be the rules to be used for the
+     *             specified locale - "word" -> "word_th" for Thai, for example.
+     *  DICTIONARY_POSSIBLE indexes in the same way, and indicates whether a
+     *             dictionary is a possibility for that type of break.  This is just
+     *             an optimization to avoid a resource lookup where no dictionary is
+     *             ever possible.
+     *  @internal
+     */
+    private static final String[] KIND_NAMES = {
+            "grapheme", "word", "line", "sentence", "title"
+        };
+    private static final boolean[] DICTIONARY_POSSIBLE = {
+            false,      true,  true,   false,     false
+    };
+
+
+    private static BreakIterator createBreakInstance(ULocale locale, int kind) {
+
+        BreakIterator    iter       = null;
+        ICUResourceBundle rb        = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BRKITR_BASE_NAME, locale);
+        
+        //
+        //  Get the binary rules.  These are needed for both normal RulesBasedBreakIterators
+        //                         and for Dictionary iterators.
+        //
+        InputStream      ruleStream = null;
+        try {
+            String         typeKey       = KIND_NAMES[kind];
+            String         brkfname      = rb.getStringWithFallback("boundaries/" + typeKey);
+            String         rulesFileName = ICUResourceBundle.ICU_BUNDLE +ICUResourceBundle.ICU_BRKITR_NAME+ "/" + brkfname;
+                           ruleStream    = ICUData.getStream(rulesFileName);
+        }
+        catch (Exception e) {
+            throw new MissingResourceException(e.toString(),"","");
+        }
+ 
+        //
+        //  Check whether a dictionary exists, and create a DBBI iterator is
+        //   one does.
+        //
+        if (DICTIONARY_POSSIBLE[kind]) {
+            // This type of break iterator could potentially use a dictionary.
+            //
+            try {
+                if (locale.getLanguage().equals("th")){
+                    // If the language is Thai, load the thai compact trie dictionary.
+                    String dictType = "Thai";
+                    String dictFileName = rb.getStringWithFallback("dictionaries/" + dictType);
+                    dictFileName = ICUResourceBundle.ICU_BUNDLE +ICUResourceBundle.ICU_BRKITR_NAME+ "/" + dictFileName;
+                    InputStream is = ICUData.getStream(dictFileName);
+                    iter = new ThaiBreakIterator(ruleStream, is);
+                }
+            } catch (MissingResourceException e) {
+                //  Couldn't find a dictionary.
+                //  This is normal, and will occur whenever creating a word or line
+                //  break iterator for a locale that does not have a BreakDictionaryData
+                //  resource - meaning for all but Thai.
+                //  Fall through to creating a normal RulebasedBreakIterator.
+            } catch (IOException e) {
+                Assert.fail(e);
+            }
+         }
+
+        if (iter == null) {
+            //
+            // Create a normal RuleBasedBreakIterator.
+            //    We have determined that this is not supposed to be a dictionary iterator.
+            //
+            try {
+                iter = RuleBasedBreakIterator.getInstanceFromCompiledRules(ruleStream);
+            }
+            catch (IOException e) {
+                // Shouldn't be possible to get here.
+                // If it happens, the compiled rules are probably corrupted in some way.
+                Assert.fail(e);
+           }
+        }
+        // TODO: Determine valid and actual locale correctly.
+        ULocale uloc = ULocale.forLocale(rb.getLocale());
+        iter.setLocale(uloc, uloc);
+        
+        return iter;
+
+    }
+
+}
diff --git a/src/com/ibm/icu/text/BreakTransliterator.java b/src/com/ibm/icu/text/BreakTransliterator.java
new file mode 100644
index 0000000..1ad6aed
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakTransliterator.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+import java.text.CharacterIterator;
+
+
+/**
+ * Inserts the specified characters at word breaks. To restrict it to particular characters, use a filter.
+ * TODO: this is an internal class, and only temporary. Remove it once we have \b notation in Transliterator.
+ */
+final class BreakTransliterator extends Transliterator {
+    private BreakIterator bi;
+    private String insertion;
+    private int[] boundaries = new int[50];
+    private int boundaryCount = 0;
+
+    public BreakTransliterator(String ID, UnicodeFilter filter, BreakIterator bi, String insertion) {
+        super(ID, filter);
+        this.bi = bi;
+        this.insertion = insertion;
+    }
+
+    public BreakTransliterator(String ID, UnicodeFilter filter) {
+        this(ID, filter, null, " ");
+    }
+
+    public String getInsertion() {
+        return insertion;
+    }
+
+    public void setInsertion(String insertion) {
+        this.insertion = insertion;
+    }
+
+    public BreakIterator getBreakIterator() {
+        // Defer initialization of BreakIterator because it is slow,
+        // typically over 2000 ms.
+        if (bi == null) bi = BreakIterator.getWordInstance(new ULocale("th_TH"));
+        return bi;
+    }
+
+    public void setBreakIterator(BreakIterator bi) {
+        this.bi = bi;
+    }
+
+    static final int LETTER_OR_MARK_MASK =
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        | (1<<Character.COMBINING_SPACING_MARK)
+        | (1<<Character.NON_SPACING_MARK)
+        | (1<<Character.ENCLOSING_MARK)
+        ;
+    protected void handleTransliterate(Replaceable text, Position pos, boolean incremental) {
+        boundaryCount = 0;
+        int boundary = 0;
+        getBreakIterator(); // Lazy-create it if necessary
+        bi.setText(new ReplaceableCharacterIterator(text, pos.start, pos.limit, pos.start));
+        // TODO: fix clumsy workaround used below.
+        /*
+        char[] tempBuffer = new char[text.length()];
+        text.getChars(0, text.length(), tempBuffer, 0);
+        bi.setText(new StringCharacterIterator(new String(tempBuffer), pos.start, pos.limit, pos.start));
+        */
+        // end debugging
+
+        // To make things much easier, we will stack the boundaries, and then insert at the end.
+        // generally, we won't need too many, since we will be filtered.
+
+        for(boundary = bi.first(); boundary != BreakIterator.DONE && boundary < pos.limit; boundary = bi.next()) {
+            if (boundary == 0) continue;
+            // HACK: Check to see that preceeding item was a letter
+
+            int cp = UTF16.charAt(text, boundary-1);
+            int type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (before): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+
+            cp = UTF16.charAt(text, boundary);
+            type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (after): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+
+            if (boundaryCount >= boundaries.length) {       // realloc if necessary
+                int[] temp = new int[boundaries.length * 2];
+                System.arraycopy(boundaries, 0, temp, 0, boundaries.length);
+                boundaries = temp;
+            }
+
+            boundaries[boundaryCount++] = boundary;
+            //System.out.println(boundary);
+        }
+
+        int delta = 0;
+        int lastBoundary = 0;
+
+        if (boundaryCount != 0) { // if we found something, adjust
+            delta = boundaryCount * insertion.length();
+            lastBoundary = boundaries[boundaryCount-1];
+
+            // we do this from the end backwards, so that we don't have to keep updating.
+
+            while (boundaryCount > 0) {
+                boundary = boundaries[--boundaryCount];
+                text.replace(boundary, boundary, insertion);
+            }
+        }
+
+        // Now fix up the return values
+        pos.contextLimit += delta;
+        pos.limit += delta;
+        pos.start = incremental ? lastBoundary + delta : pos.limit;
+    }
+
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // false means that it is invisible
+        Transliterator trans = new BreakTransliterator("Any-BreakInternal", null);
+        Transliterator.registerInstance(trans, false);
+        /*
+        Transliterator.registerFactory("Any-Break", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new BreakTransliterator("Any-Break", null);
+            }
+        });
+        */
+    }
+
+    // Hack, just to get a real character iterator.
+    static final class ReplaceableCharacterIterator implements CharacterIterator
+    {
+        private Replaceable text;
+        private int begin;
+        private int end;
+        // invariant: begin <= pos <= end
+        private int pos;
+
+        /**
+        * Constructs an iterator with an initial index of 0.
+        */
+        /*public ReplaceableCharacterIterator(Replaceable text)
+        {
+            this(text, 0);
+        }*/
+
+        /**
+        * Constructs an iterator with the specified initial index.
+        *
+        * @param  text   The String to be iterated over
+        * @param  pos    Initial iterator position
+        */
+        /*public ReplaceableCharacterIterator(Replaceable text, int pos)
+        {
+            this(text, 0, text.length(), pos);
+        }*/
+
+        /**
+        * Constructs an iterator over the given range of the given string, with the
+        * index set at the specified position.
+        *
+        * @param  text   The String to be iterated over
+        * @param  begin  Index of the first character
+        * @param  end    Index of the character following the last character
+        * @param  pos    Initial iterator position
+        */
+        public ReplaceableCharacterIterator(Replaceable text, int begin, int end, int pos) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+
+            if (begin < 0 || begin > end || end > text.length()) {
+                throw new IllegalArgumentException("Invalid substring range");
+            }
+
+            if (pos < begin || pos > end) {
+                throw new IllegalArgumentException("Invalid position");
+            }
+
+            this.begin = begin;
+            this.end = end;
+            this.pos = pos;
+        }
+
+        /**
+        * Reset this iterator to point to a new string.  This package-visible
+        * method is used by other java.text classes that want to avoid allocating
+        * new ReplaceableCharacterIterator objects every time their setText method
+        * is called.
+        *
+        * @param  text   The String to be iterated over
+        */
+        public void setText(Replaceable text) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+            this.begin = 0;
+            this.end = text.length();
+            this.pos = 0;
+        }
+
+        /**
+        * Implements CharacterIterator.first() for String.
+        * @see CharacterIterator#first
+        */
+        public char first()
+        {
+            pos = begin;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.last() for String.
+        * @see CharacterIterator#last
+        */
+        public char last()
+        {
+            if (end != begin) {
+                pos = end - 1;
+            } else {
+                pos = end;
+            }
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.setIndex() for String.
+        * @see CharacterIterator#setIndex
+        */
+        public char setIndex(int p)
+        {
+        if (p < begin || p > end) {
+                throw new IllegalArgumentException("Invalid index");
+        }
+            pos = p;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.current() for String.
+        * @see CharacterIterator#current
+        */
+        public char current()
+        {
+            if (pos >= begin && pos < end) {
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.next() for String.
+        * @see CharacterIterator#next
+        */
+        public char next()
+        {
+            if (pos < end - 1) {
+                pos++;
+                return text.charAt(pos);
+            }
+            else {
+                pos = end;
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.previous() for String.
+        * @see CharacterIterator#previous
+        */
+        public char previous()
+        {
+            if (pos > begin) {
+                pos--;
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.getBeginIndex() for String.
+        * @see CharacterIterator#getBeginIndex
+        */
+        public int getBeginIndex()
+        {
+            return begin;
+        }
+
+        /**
+        * Implements CharacterIterator.getEndIndex() for String.
+        * @see CharacterIterator#getEndIndex
+        */
+        public int getEndIndex()
+        {
+            return end;
+        }
+
+        /**
+        * Implements CharacterIterator.getIndex() for String.
+        * @see CharacterIterator#getIndex
+        */
+        public int getIndex()
+        {
+            return pos;
+        }
+
+        /**
+        * Compares the equality of two ReplaceableCharacterIterator objects.
+        * @param obj the ReplaceableCharacterIterator object to be compared with.
+        * @return true if the given obj is the same as this
+        * ReplaceableCharacterIterator object; false otherwise.
+        */
+        public boolean equals(Object obj)
+        {
+            if (this == obj) {
+                return true;
+            }
+            if (!(obj instanceof ReplaceableCharacterIterator)) {
+                return false;
+            }
+
+            ReplaceableCharacterIterator that = (ReplaceableCharacterIterator) obj;
+
+            if (hashCode() != that.hashCode()) {
+                return false;
+            }
+            if (!text.equals(that.text)) {
+                return false;
+            }
+            if (pos != that.pos || begin != that.begin || end != that.end) {
+                return false;
+            }
+            return true;
+        }
+
+        /**
+        * Computes a hashcode for this iterator.
+        * @return A hash code
+        */
+        public int hashCode()
+        {
+            return text.hashCode() ^ pos ^ begin ^ end;
+        }
+
+        /**
+        * Creates a copy of this iterator.
+        * @return A copy of this
+        */
+        public Object clone()
+        {
+            try {
+                ReplaceableCharacterIterator other
+                = (ReplaceableCharacterIterator) super.clone();
+                return other;
+            }
+            catch (CloneNotSupportedException e) {
+                throw new IllegalStateException();
+            }
+        }
+
+    }
+
+}
diff --git a/src/com/ibm/icu/text/CanonicalIterator.java b/src/com/ibm/icu/text/CanonicalIterator.java
new file mode 100644
index 0000000..03329ad
--- /dev/null
+++ b/src/com/ibm/icu/text/CanonicalIterator.java
@@ -0,0 +1,531 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.*;
+import java.util.*;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * This class allows one to iterate through all the strings that are canonically equivalent to a given
+ * string. For example, here are some sample results:
+ * Results for: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ * <pre>
+ 1: {A}{RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 2: {A}{RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 3: {A}{RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 4: {A}{RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 5: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 6: {A WITH RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 7: {A WITH RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 8: {A WITH RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 9: {ANGSTROM SIGN}{d}{DOT ABOVE}{CEDILLA}
+10: {ANGSTROM SIGN}{d}{CEDILLA}{DOT ABOVE}
+11: {ANGSTROM SIGN}{d WITH DOT ABOVE}{CEDILLA}
+12: {ANGSTROM SIGN}{d WITH CEDILLA}{DOT ABOVE}
+ *</pre>
+ *<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
+ * since it has not been optimized for that situation.
+ * @author M. Davis
+ * @stable ICU 2.4
+ */
+
+public final class CanonicalIterator {
+    /**
+     * Construct a CanonicalIterator object
+     * @param source string to get results for
+     * @stable ICU 2.4
+     */
+    public CanonicalIterator(String source) {
+        setSource(source);
+    }
+
+    /**
+     * Gets the NFD form of the current source we are iterating over.
+     * @return gets the source: NOTE: it is the NFD form of the source originally passed in
+     * @stable ICU 2.4
+     */
+    public String getSource() {
+      return source;
+    }
+
+    /**
+     * Resets the iterator so that one can start again from the beginning.
+     * @stable ICU 2.4
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < current.length; ++i) {
+            current[i] = 0;
+        }
+    }
+
+    /**
+     * Get the next canonically equivalent string.
+     * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     * @return the next string that is canonically equivalent. The value null is returned when
+     * the iteration is done.
+     * @stable ICU 2.4
+     */
+    public String next() {
+        if (done) return null;
+
+        // construct return value
+
+        buffer.setLength(0); // delete old contents
+        for (int i = 0; i < pieces.length; ++i) {
+            buffer.append(pieces[i][current[i]]);
+        }
+        String result = buffer.toString();
+
+        // find next value for next time
+
+        for (int i = current.length - 1; ; --i) {
+            if (i < 0) {
+                done = true;
+                break;
+            }
+            current[i]++;
+            if (current[i] < pieces[i].length) break; // got sequence
+            current[i] = 0;
+        }
+        return result;
+    }
+
+    /**
+     * Set a new source for this iterator. Allows object reuse.
+     * @param newSource the source string to iterate against. This allows the same iterator to be used
+     * while changing the source string, saving object creation.
+     * @stable ICU 2.4
+     */
+    public void setSource(String newSource) {
+        source = Normalizer.normalize(newSource, Normalizer.NFD);
+        done = false;
+
+        // catch degenerate case
+        if (newSource.length() == 0) {
+            pieces = new String[1][];
+            current = new int[1];
+            pieces[0] = new String[]{""};
+            return;
+        }
+
+        // find the segments
+        List segmentList = new ArrayList();
+        int cp;
+        int start = 0;
+
+        // i should be the end of the first code point
+        // break up the string into segements
+
+        int i = UTF16.findOffsetFromCodePoint(source, 1);
+
+        for (; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            if (NormalizerImpl.isCanonSafeStart(cp)) {
+                segmentList.add(source.substring(start, i)); // add up to i
+                start = i;
+            }
+        }
+        segmentList.add(source.substring(start, i)); // add last one
+
+        // allocate the arrays, and find the strings that are CE to each segment
+        pieces = new String[segmentList.size()][];
+        current = new int[segmentList.size()];
+        for (i = 0; i < pieces.length; ++i) {
+            if (PROGRESS) System.out.println("SEGMENT");
+            pieces[i] = getEquivalents((String) segmentList.get(i));
+        }
+    }
+
+    /**
+     * Simple implementation of permutation.
+     * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     * @param source the string to find permutations for
+     * @param skipZeros set to true to skip characters with canonical combining class zero
+     * @param output the set to add the results to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static void permute(String source, boolean skipZeros, Set output) {
+        // TODO: optimize
+        //if (PROGRESS) System.out.println("Permute: " + source);
+
+        // optimization:
+        // if zero or one character, just return a set with it
+        // we check for length < 2 to keep from counting code points all the time
+        if (source.length() <= 2 && UTF16.countCodePoint(source) <= 1) {
+            output.add(source);
+            return;
+        }
+
+        // otherwise iterate through the string, and recursively permute all the other characters
+        Set subpermute = new HashSet();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+
+            // optimization:
+            // if the character is canonical combining class zero,
+            // don't permute it
+            if (skipZeros && i != 0 && UCharacter.getCombiningClass(cp) == 0) {
+                //System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
+                continue;
+            }
+
+            // see what the permutations of the characters before and after this one are
+            subpermute.clear();
+            permute(source.substring(0,i)
+                + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute);
+
+            // prefix this character to all of them
+            String chStr = UTF16.valueOf(source, i);
+            Iterator it = subpermute.iterator();
+            while (it.hasNext()) {
+                String piece = chStr + (String) it.next();
+                //if (PROGRESS) System.out.println("  Piece: " + piece);
+                output.add(piece);
+            }
+        }
+    }
+
+    // FOR TESTING
+
+    /*
+     *@return the set of "safe starts", characters that are class zero AND are never non-initial in a decomposition.
+     *@internal
+     *
+    public static UnicodeSet getSafeStart() {
+        return (UnicodeSet) SAFE_START.clone();
+    }
+    */
+    /*
+     *@return the set of characters whose decompositions start with the given character
+     *@internal
+     *
+    public static UnicodeSet getStarts(int cp) {
+        UnicodeSet result = AT_START.get(cp);
+        if (result == null) result = EMPTY;
+        return (UnicodeSet) result.clone();
+    }
+    */
+
+    // ===================== PRIVATES ==============================
+
+    // debug
+    private static boolean PROGRESS = false; // debug progress
+    //private static Transliterator NAME = PROGRESS ? Transliterator.getInstance("name") : null;
+    private static boolean SKIP_ZEROS = true;
+
+    // fields
+    private String source;
+    private boolean done;
+    private String[][] pieces;
+    private int[] current;
+    // Note: C will need two more fields, since arrays there don't have lengths
+    // int pieces_length;
+    // int[] pieces_lengths;
+
+    // transient fields
+    private transient StringBuffer buffer = new StringBuffer();
+
+
+    // we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
+    private String[] getEquivalents(String segment) {
+        Set result = new HashSet();
+        Set basic = getEquivalents2(segment);
+        Set permutations = new HashSet();
+
+        // now get all the permutations
+        // add only the ones that are canonically equivalent
+        // TODO: optimize by not permuting any class zero.
+        Iterator it = basic.iterator();
+        while (it.hasNext()) {
+            String item = (String) it.next();
+            permutations.clear();
+            permute(item, SKIP_ZEROS, permutations);
+            Iterator it2 = permutations.iterator();
+            while (it2.hasNext()) {
+                String possible = (String) it2.next();
+
+/*
+                String attempt = Normalizer.normalize(possible, Normalizer.DECOMP, 0);
+                if (attempt.equals(segment)) {
+*/
+                if (Normalizer.compare(possible, segment,0)==0) {
+
+                    if (PROGRESS) System.out.println("Adding Permutation: " + Utility.hex(possible));
+                    result.add(possible);
+
+                } else {
+                    if (PROGRESS) System.out.println("-Skipping Permutation: " + Utility.hex(possible));
+                }
+            }
+        }
+
+        // convert into a String[] to clean up storage
+        String[] finalResult = new String[result.size()];
+        result.toArray(finalResult);
+        return finalResult;
+    }
+
+
+    private Set getEquivalents2(String segment) {
+
+        Set result = new HashSet();
+
+        if (PROGRESS) System.out.println("Adding: " + Utility.hex(segment));
+
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+
+        // cycle through all the characters
+        int cp=0;
+        int[] range = new int[2];
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+
+            // see if any character is at the start of some decomposition
+            cp = UTF16.charAt(segment, i);
+            USerializedSet starts = new USerializedSet();
+
+            if (!NormalizerImpl.getCanonStartSet(cp, starts)) {
+              continue;
+            }
+            int j=0;
+            // if so, see which decompositions match
+            int rangeCount = starts.countRanges();
+            for(j = 0; j < rangeCount; ++j) {
+                starts.getRange(j, range);
+                int end=range[1];
+                for (int cp2 = range[0]; cp2 <= end; ++cp2) {
+                    Set remainder = extract(cp2, segment, i, workingBuffer);
+                    if (remainder == null) continue;
+
+                    // there were some matches, so add all the possibilities to the set.
+                    String prefix= segment.substring(0,i);
+                    prefix += UTF16.valueOf(cp2);
+                    //int el = -1;
+                    Iterator iter = remainder.iterator();
+                    while (iter.hasNext()) {
+                        String item = (String) iter.next();
+                        String toAdd = new String(prefix);
+                        toAdd += item;
+                        result.add(toAdd);
+                        //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
+                    }
+                }
+            }
+        }
+        return result;
+        /*
+        Set result = new HashSet();
+        if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(segment));
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+
+        // cycle through all the characters
+        int cp;
+
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            // see if any character is at the start of some decomposition
+            cp = UTF16.charAt(segment, i);
+            NormalizerImpl.getCanonStartSet(c,fillSet)
+            UnicodeSet starts = AT_START.get(cp);
+            if (starts == null) continue;
+            UnicodeSetIterator usi = new UnicodeSetIterator(starts);
+            // if so, see which decompositions match
+            while (usi.next()) {
+                int cp2 = usi.codepoint;
+                // we know that there are no strings in it
+                // so we don't have to check CharacterIterator.IS_STRING
+                Set remainder = extract(cp2, segment, i, workingBuffer);
+                if (remainder == null) continue;
+
+                // there were some matches, so add all the possibilities to the set.
+                String prefix = segment.substring(0, i) + UTF16.valueOf(cp2);
+                Iterator it = remainder.iterator();
+                while (it.hasNext()) {
+                    String item = (String) it.next();
+                    if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(prefix + item));
+                    result.add(prefix + item);
+                }
+            }
+        }
+        return result;
+        */
+    }
+
+    /**
+     * See if the decomposition of cp2 is at segment starting at segmentPos
+     * (with canonical rearrangment!)
+     * If so, take the remainder, and return the equivalents
+     */
+    private Set extract(int comp, String segment, int segmentPos, StringBuffer buf) {
+        if (PROGRESS) System.out.println(" extract: " + Utility.hex(UTF16.valueOf(comp))
+            + ", " + Utility.hex(segment.substring(segmentPos)));
+
+        //String decomp = Normalizer.normalize(UTF16.valueOf(comp), Normalizer.DECOMP, 0);
+        String decomp = Normalizer.normalize(comp, Normalizer.NFD);
+
+        // See if it matches the start of segment (at segmentPos)
+        boolean ok = false;
+        int cp;
+        int decompPos = 0;
+        int decompCp = UTF16.charAt(decomp,0);
+        decompPos += UTF16.getCharCount(decompCp); // adjust position to skip first char
+        //int decompClass = getClass(decompCp);
+        buf.setLength(0); // initialize working buffer, shared among callees
+
+        for (int i = segmentPos; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(segment, i);
+            if (cp == decompCp) { // if equal, eat another cp from decomp
+                if (PROGRESS) System.out.println("  matches: " + Utility.hex(UTF16.valueOf(cp)));
+                if (decompPos == decomp.length()) { // done, have all decomp characters!
+                    buf.append(segment.substring(i + UTF16.getCharCount(cp))); // add remaining segment chars
+                    ok = true;
+                    break;
+                }
+                decompCp = UTF16.charAt(decomp, decompPos);
+                decompPos += UTF16.getCharCount(decompCp);
+                //decompClass = getClass(decompCp);
+            } else {
+                if (PROGRESS) System.out.println("  buffer: " + Utility.hex(UTF16.valueOf(cp)));
+                // brute force approach
+                UTF16.append(buf, cp);
+                /* TODO: optimize
+                // since we know that the classes are monotonically increasing, after zero
+                // e.g. 0 5 7 9 0 3
+                // we can do an optimization
+                // there are only a few cases that work: zero, less, same, greater
+                // if both classes are the same, we fail
+                // if the decomp class < the segment class, we fail
+
+                segClass = getClass(cp);
+                if (decompClass <= segClass) return null;
+                */
+            }
+        }
+        if (!ok) return null; // we failed, characters left over
+        if (PROGRESS) System.out.println("Matches");
+        if (buf.length() == 0) return SET_WITH_NULL_STRING; // succeed, but no remainder
+        String remainder = buf.toString();
+
+        // brute force approach
+        // to check to make sure result is canonically equivalent
+        /*
+        String trial = Normalizer.normalize(UTF16.valueOf(comp) + remainder, Normalizer.DECOMP, 0);
+        if (!segment.regionMatches(segmentPos, trial, 0, segment.length() - segmentPos)) return null;
+        */
+
+        if (0!=Normalizer.compare(UTF16.valueOf(comp) + remainder, segment.substring(segmentPos), 0)) return null;
+
+        // get the remaining combinations
+        return getEquivalents2(remainder);
+    }
+
+    /*
+    // TODO: fix once we have a codepoint interface to get the canonical combining class
+    // TODO: Need public access to canonical combining class in UCharacter!
+    private static int getClass(int cp) {
+        return Normalizer.getClass((char)cp);
+    }
+    */
+
+   // ================= BUILDER =========================
+    // TODO: Flatten this data so it doesn't have to be reconstructed each time!
+
+    //private static final UnicodeSet EMPTY = new UnicodeSet(); // constant, don't change
+    private static final Set SET_WITH_NULL_STRING = new HashSet(); // constant, don't change
+    static {
+        SET_WITH_NULL_STRING.add("");
+    }
+
+  //  private static UnicodeSet SAFE_START = new UnicodeSet();
+  //  private static CharMap AT_START = new CharMap();
+
+        // TODO: WARNING, NORMALIZER doesn't have supplementaries yet !!;
+        // Change FFFF to 10FFFF in C, and in Java when normalizer is upgraded.
+  //  private static int LAST_UNICODE = 0x10FFFF;
+    /*
+    static {
+        buildData();
+    }
+    */
+    /*
+    private static void buildData() {
+
+        if (PROGRESS) System.out.println("Getting Safe Start");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+            int cc = UCharacter.getCombiningClass(cp);
+            if (cc == 0) SAFE_START.add(cp);
+            // will fix to be really safe below
+        }
+        if (PROGRESS) System.out.println();
+
+        if (PROGRESS) System.out.println("Getting Containment");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+
+            if (Normalizer.isNormalized(cp, Normalizer.NFD)) continue;
+
+            //String istr = UTF16.valueOf(cp);
+            String decomp = Normalizer.normalize(cp, Normalizer.NFD);
+            //if (decomp.equals(istr)) continue;
+
+            // add each character in the decomposition to canBeIn
+
+            int component;
+            for (int i = 0; i < decomp.length(); i += UTF16.getCharCount(component)) {
+                component = UTF16.charAt(decomp, i);
+                if (i == 0) {
+                    AT_START.add(component, cp);
+                } else if (UCharacter.getCombiningClass(component) == 0) {
+                    SAFE_START.remove(component);
+                }
+            }
+        }
+        if (PROGRESS) System.out.println();
+    }
+        // the following is just for a map from characters to a set of characters
+
+    private static class CharMap {
+        Map storage = new HashMap();
+        MutableInt probe = new MutableInt();
+        boolean converted = false;
+
+        public void add(int cp, int whatItIsIn) {
+            UnicodeSet result = (UnicodeSet) storage.get(probe.set(cp));
+            if (result == null) {
+                result = new UnicodeSet();
+                storage.put(probe, result);
+            }
+            result.add(whatItIsIn);
+        }
+
+        public UnicodeSet get(int cp) {
+            return (UnicodeSet) storage.get(probe.set(cp));
+        }
+    }
+
+    private static class MutableInt {
+        public int contents;
+        public int hashCode() { return contents; }
+        public boolean equals(Object other) {
+            return ((MutableInt)other).contents == contents;
+        }
+        // allows chaining
+        public MutableInt set(int contents) {
+            this.contents = contents;
+            return this;
+        }
+    }
+    */
+
+}
diff --git a/src/com/ibm/icu/text/CharsetDetector.java b/src/com/ibm/icu/text/CharsetDetector.java
new file mode 100644
index 0000000..89faafb
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetDetector.java
@@ -0,0 +1,520 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Arrays;
+
+
+/**
+ * <code>CharsetDetector</code> provides a facility for detecting the
+ * charset or encoding of character data in an unknown format.
+ * The input data can either be from an input stream or an array of bytes.
+ * The result of the detection operation is a list of possibly matching
+ * charsets, or, for simple use, you can just ask for a Java Reader that
+ * will will work over the input data.
+ * <p/>
+ * Character set detection is at best an imprecise operation.  The detection
+ * process will attempt to identify the charset that best matches the characteristics
+ * of the byte data, but the process is partly statistical in nature, and
+ * the results can not be guaranteed to always be correct.
+ * <p/>
+ * For best accuracy in charset detection, the input data should be primarily
+ * in a single language, and a minimum of a few hundred bytes worth of plain text
+ * in the language are needed.  The detection process will attempt to
+ * ignore html or xml style markup that could otherwise obscure the content.
+ * <p/>
+ * @stable ICU 3.4
+ */
+public class CharsetDetector {
+
+//   Question: Should we have getters corresponding to the setters for inut text
+//   and declared encoding?
+
+//   A thought: If we were to create our own type of Java Reader, we could defer
+//   figuring out an actual charset for data that starts out with too much English
+//   only ASCII until the user actually read through to something that didn't look
+//   like 7 bit English.  If  nothing else ever appeared, we would never need to
+//   actually choose the "real" charset.  All assuming that the application just
+//   wants the data, and doesn't care about a char set name.
+
+    /**
+     *   Constructor
+     * 
+     * @stable ICU 3.4
+     */
+    public CharsetDetector() {
+    }
+
+    /**
+     * Set the declared encoding for charset detection.
+     *  The declared encoding of an input text is an encoding obtained
+     *  from an http header or xml declaration or similar source that
+     *  can be provided as additional information to the charset detector.  
+     *  A match between a declared encoding and a possible detected encoding
+     *  will raise the quality of that detected encoding by a small delta,
+     *  and will also appear as a "reason" for the match.
+     * <p/>
+     * A declared encoding that is incompatible with the input data being
+     * analyzed will not be added to the list of possible encodings.
+     * 
+     *  @param encoding The declared encoding 
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetDetector setDeclaredEncoding(String encoding) {
+        fDeclaredEncoding = encoding;
+        return this;
+    }
+    
+    /**
+     * Set the input text (byte) data whose charset is to be detected.
+     * 
+     * @param in the input text of unknown encoding
+     * 
+     * @return This CharsetDetector
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetDetector setText(byte [] in) {
+        fRawInput  = in;
+        fRawLength = in.length;
+        
+        MungeInput();
+        
+        return this;
+    }
+    
+    private static final int kBufSize = 8000;
+
+    /**
+     * Set the input text (byte) data whose charset is to be detected.
+     *  <p/>
+     *   The input stream that supplies the character data must have markSupported()
+     *   == true; the charset detection process will read a small amount of data,
+     *   then return the stream to its original position via
+     *   the InputStream.reset() operation.  The exact amount that will
+     *   be read depends on the characteristics of the data itself.
+     *
+     * @param in the input text of unknown encoding
+     * 
+     * @return This CharsetDetector
+     *
+     * @stable ICU 3.4
+     */
+    
+    public CharsetDetector setText(InputStream in) throws IOException {
+        fInputStream = in;
+        fInputStream.mark(kBufSize);
+        fRawInput = new byte[kBufSize];   // Always make a new buffer because the
+                                          //   previous one may have come from the caller,
+                                          //   in which case we can't touch it.
+        fRawLength = 0;
+        int remainingLength = kBufSize;
+        while (remainingLength > 0 ) {
+            // read() may give data in smallish chunks, esp. for remote sources.  Hence, this loop.
+            int  bytesRead = fInputStream.read(fRawInput, fRawLength, remainingLength);
+            if (bytesRead <= 0) {
+                 break;
+            }
+            fRawLength += bytesRead;
+            remainingLength -= bytesRead;
+        }
+        fInputStream.reset();
+        
+        MungeInput();                     // Strip html markup, collect byte stats.
+        return this;
+    }
+
+  
+    /**
+     * Return the charset that best matches the supplied input data.
+     * 
+     * Note though, that because the detection 
+     * only looks at the start of the input data,
+     * there is a possibility that the returned charset will fail to handle
+     * the full set of input data.
+     * <p/>
+     * Raise an exception if 
+     *  <ul>
+     *    <li>no charset appears to match the data.</li>
+     *    <li>no input text has been provided</li>
+     *  </ul>
+     *
+     * @return a CharsetMatch object representing the best matching charset, or
+     *         <code>null</code> if there are no matches.
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetMatch detect() {
+//   TODO:  A better implementation would be to copy the detect loop from
+//          detectAll(), and cut it short as soon as a match with a high confidence
+//          is found.  This is something to be done later, after things are otherwise
+//          working.
+        CharsetMatch matches[] = detectAll();
+        
+        if (matches == null || matches.length == 0) {
+            return null;
+        }
+        
+        return matches[0];
+     }
+    
+    /**
+     *  Return an array of all charsets that appear to be plausible
+     *  matches with the input data.  The array is ordered with the
+     *  best quality match first.
+     * <p/>
+     * Raise an exception if 
+     *  <ul>
+     *    <li>no charsets appear to match the input data.</li>
+     *    <li>no input text has been provided</li>
+     *  </ul>
+     * 
+     * @return An array of CharsetMatch objects representing possibly matching charsets.
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetMatch[] detectAll() {
+        CharsetRecognizer csr;
+        int               i;
+        int               detectResults;
+        int               confidence;
+        ArrayList         matches = new ArrayList();
+        
+        //  Iterate over all possible charsets, remember all that
+        //    give a match quality > 0.
+        for (i=0; i<fCSRecognizers.size(); i++) {
+            csr = (CharsetRecognizer)fCSRecognizers.get(i);
+            detectResults = csr.match(this);
+            confidence = detectResults & 0x000000ff;
+            if (confidence > 0) {
+                CharsetMatch  m = new CharsetMatch(this, csr, confidence);
+                matches.add(m);
+            }
+        }
+        Collections.sort(matches);      // CharsetMatch compares on confidence
+        Collections.reverse(matches);   //  Put best match first.
+        CharsetMatch [] resultArray = new CharsetMatch[matches.size()];
+        resultArray = (CharsetMatch[]) matches.toArray(resultArray);
+        return resultArray;
+    }
+
+    
+    /**
+     * Autodetect the charset of an inputStream, and return a Java Reader
+     * to access the converted input data.
+     * <p/>
+     * This is a convenience method that is equivalent to
+     *   <code>this.setDeclaredEncoding(declaredEncoding).setText(in).detect().getReader();</code>
+     * <p/>
+     *   For the input stream that supplies the character data, markSupported()
+     *   must be true; the  charset detection will read a small amount of data,
+     *   then return the stream to its original position via
+     *   the InputStream.reset() operation.  The exact amount that will
+     *    be read depends on the characteristics of the data itself.
+     *<p/>
+     * Raise an exception if no charsets appear to match the input data.
+     * 
+     * @param in The source of the byte data in the unknown charset.
+     *
+     * @param declaredEncoding  A declared encoding for the data, if available,
+     *           or null or an empty string if none is available.
+     *
+     * @stable ICU 3.4
+     */
+    public Reader getReader(InputStream in, String declaredEncoding) {
+        fDeclaredEncoding = declaredEncoding;
+        
+        try {
+            setText(in);
+            
+            CharsetMatch match = detect();
+            
+            if (match == null) {
+                return null;
+            }
+            
+            return match.getReader();
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Autodetect the charset of an inputStream, and return a String
+     * containing the converted input data.
+     * <p/>
+     * This is a convenience method that is equivalent to
+     *   <code>this.setDeclaredEncoding(declaredEncoding).setText(in).detect().getString();</code>
+     *<p/>
+     * Raise an exception if no charsets appear to match the input data.
+     * 
+     * @param in The source of the byte data in the unknown charset.
+     *
+     * @param declaredEncoding  A declared encoding for the data, if available,
+     *           or null or an empty string if none is available.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString(byte[] in, String declaredEncoding)
+    {
+        fDeclaredEncoding = declaredEncoding;
+       
+        try {
+            setText(in);
+            
+            CharsetMatch match = detect();
+            
+            if (match == null) {
+                return null;
+            }
+            
+            return match.getString(-1);
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+ 
+    /**
+     * Get the names of all char sets that can be recognized by the char set detector.
+     *
+     * @return an array of the names of all charsets that can be recognized
+     * by the charset detector.
+     *
+     * @stable ICU 3.4
+     */
+    public static String[] getAllDetectableCharsets() {
+        return fCharsetNames;
+    }
+    
+    /**
+     * Test whether or not input filtering is enabled.
+     * 
+     * @return <code>true</code> if input text will be filtered.
+     * 
+     * @see #enableInputFilter
+     *
+     * @stable ICU 3.4
+     */
+    public boolean inputFilterEnabled()
+    {
+        return fStripTags;
+    }
+    
+    /**
+     * Enable filtering of input text. If filtering is enabled,
+     * text within angle brackets ("<" and ">") will be removed
+     * before detection.
+     * 
+     * @param filter <code>true</code> to enable input text filtering.
+     * 
+     * @return The previous setting.
+     *
+     * @stable ICU 3.4
+     */
+    public boolean enableInputFilter(boolean filter)
+    {
+        boolean previous = fStripTags;
+        
+        fStripTags = filter;
+        
+        return previous;
+    }
+    
+    /*
+     *  MungeInput - after getting a set of raw input data to be analyzed, preprocess
+     *               it by removing what appears to be html markup.
+     */
+    private void MungeInput() {
+        int srci = 0;
+        int dsti = 0;
+        byte b;
+        boolean  inMarkup = false;
+        int      openTags = 0;
+        int      badTags  = 0;
+        
+        //
+        //  html / xml markup stripping.
+        //     quick and dirty, not 100% accurate, but hopefully good enough, statistically.
+        //     discard everything within < brackets >
+        //     Count how many total '<' and illegal (nested) '<' occur, so we can make some
+        //     guess as to whether the input was actually marked up at all.
+        if (fStripTags) {
+            for (srci = 0; srci < fRawLength && dsti < fInputBytes.length; srci++) {
+                b = fRawInput[srci];
+                if (b == (byte)'<') {
+                    if (inMarkup) {
+                        badTags++;
+                    }
+                    inMarkup = true;
+                    openTags++;
+                }
+                
+                if (! inMarkup) {
+                    fInputBytes[dsti++] = b;
+                }
+                
+                if (b == (byte)'>') {
+                    inMarkup = false;
+                }        
+            }
+            
+            fInputLen = dsti;
+        }
+        
+        //
+        //  If it looks like this input wasn't marked up, or if it looks like it's
+        //    essentially nothing but markup abandon the markup stripping.
+        //    Detection will have to work on the unstripped input.
+        //
+        if (openTags<5 || openTags/5 < badTags || 
+                (fInputLen < 100 && fRawLength>600)) {
+            int limit = fRawLength;
+            
+            if (limit > kBufSize) {
+                limit = kBufSize;
+            }
+            
+            for (srci=0; srci<limit; srci++) {
+                fInputBytes[srci] = fRawInput[srci];
+            }
+            fInputLen = srci;
+        }
+        
+        //
+        // Tally up the byte occurence statistics.
+        //   These are available for use by the various detectors.
+        //
+        Arrays.fill(fByteStats, (short)0);
+        for (srci=0; srci<fInputLen; srci++) {
+            int val = fInputBytes[srci] & 0x00ff;
+            fByteStats[val]++;
+        }
+        
+        fC1Bytes = false;
+        for (int i = 0x80; i <= 0x9F; i += 1) {
+            if (fByteStats[i] != 0) {
+                fC1Bytes = true;
+                break;
+            }
+        }
+     }
+
+    /*
+     *  The following items are accessed by individual CharsetRecongizers during
+     *     the recognition process
+     * 
+     */
+    byte[]      fInputBytes =       // The text to be checked.  Markup will have been
+                   new byte[kBufSize];  //   removed if appropriate.
+    
+    int         fInputLen;          // Length of the byte data in fInputText.
+    
+    short       fByteStats[] =      // byte frequency statistics for the input text.
+                   new short[256];  //   Value is percent, not absolute.
+                                    //   Value is rounded up, so zero really means zero occurences.
+    
+    boolean     fC1Bytes =          // True if any bytes in the range 0x80 - 0x9F are in the input;
+                   false;
+    
+    String      fDeclaredEncoding;
+    
+    
+
+    //
+    //  Stuff private to CharsetDetector
+    //
+    byte[]               fRawInput;     // Original, untouched input bytes.
+                                        //  If user gave us a byte array, this is it.
+                                        //  If user gave us a stream, it's read to a 
+                                        //  buffer here.
+    int                  fRawLength;    // Length of data in fRawInput array.
+    
+    InputStream          fInputStream;  // User's input stream, or null if the user
+                                        //   gave us a byte array.
+     
+    boolean              fStripTags =   // If true, setText() will strip tags from input text.
+                           false;
+    
+    
+    /*
+     * List of recognizers for all charsets known to the implementation.
+     */
+    private static ArrayList fCSRecognizers = createRecognizers();
+    private static String [] fCharsetNames;
+    
+    /*
+     * Create the singleton instances of the CharsetRecognizer classes
+     */
+    private static ArrayList createRecognizers() {
+        ArrayList recognizers = new ArrayList();
+        
+        recognizers.add(new CharsetRecog_UTF8());
+        
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_16_BE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_16_LE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_32_BE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_32_LE());
+        
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_sjis());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022JP());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022CN());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022KR());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_gb_18030());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_euc_jp());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_euc_kr());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_big5());
+        
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_da());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_de());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_en());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_es());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_fr());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_it());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_nl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_no());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_pt());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_sv());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_cs());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_hu());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_pl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_ro());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_5_ru());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_6_ar());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_7_el());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_8_I_he());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_8_he());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_windows_1251());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_windows_1256());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_KOI8_R());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_9_tr());
+        
+        // Create an array of all charset names, as a side effect.
+        // Needed for the getAllDetectableCharsets() API.
+        String[] charsetNames = new String [recognizers.size()];
+        int out = 0;
+        
+        for (int i = 0; i < recognizers.size(); i++) {
+            String name = ((CharsetRecognizer)recognizers.get(i)).getName();
+            
+            if (out == 0 || ! name.equals(charsetNames[out - 1])) {
+                charsetNames[out++] = name;
+            }
+        }
+        
+        fCharsetNames = new String[out];
+        System.arraycopy(charsetNames, 0, fCharsetNames, 0, out);
+        
+        return recognizers;
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetMatch.java b/src/com/ibm/icu/text/CharsetMatch.java
new file mode 100644
index 0000000..629da6a
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetMatch.java
@@ -0,0 +1,263 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+
+/**
+ * This class represents a charset that has been identified by a CharsetDetector
+ * as a possible encoding for a set of input data.  From an instance of this
+ * class, you can ask for a confidence level in the charset identification,
+ * or for Java Reader or String to access the original byte data in Unicode form.
+ * <p/>
+ * Instances of this class are created only by CharsetDetectors.
+ * <p/>
+ * Note:  this class has a natural ordering that is inconsistent with equals.
+ *        The natural ordering is based on the match confidence value.
+ *
+ * @stable ICU 3.4
+ */
+public class CharsetMatch implements Comparable {
+
+    
+    /**
+     * Create a java.io.Reader for reading the Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     * <p/>
+     * CAUTION:  if the source of the byte data was an InputStream, a Reader
+     * can be created for only one matching char set using this method.  If more 
+     * than one charset needs to be tried, the caller will need to reset
+     * the InputStream and create InputStreamReaders itself, based on the charset name.
+     *
+     * @return the Reader for the Unicode character data.
+     *
+     * @stable ICU 3.4
+     */
+    public Reader getReader() {
+        InputStream inputStream = fInputStream;
+        
+        if (inputStream == null) {
+            inputStream = new ByteArrayInputStream(fRawInput, 0, fRawLength);
+        }
+        
+        try {
+            inputStream.reset();
+            return new InputStreamReader(inputStream, getName());
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Create a Java String from Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     *
+     * @return a String created from the converted input data.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString()  throws java.io.IOException {
+        return getString(-1);
+
+    }
+
+    /**
+     * Create a Java String from Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     * The length of the returned string is limited to the specified size;
+     * the string will be trunctated to this length if necessary.  A limit value of
+     * zero or less is ignored, and treated as no limit.
+     *
+     * @param maxLength The maximium length of the String to be created when the
+     *                  source of the data is an input stream, or -1 for
+     *                  unlimited length.
+     * @return a String created from the converted input data.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString(int maxLength) throws java.io.IOException {
+        String result = null;
+        if (fInputStream != null) {
+            StringBuffer sb = new StringBuffer();
+            char[] buffer = new char[1024];
+            Reader reader = getReader();
+            int max = maxLength < 0? Integer.MAX_VALUE : maxLength;
+            int bytesRead = 0;
+            
+            while ((bytesRead = reader.read(buffer, 0, Math.min(max, 1024))) >= 0) {
+                sb.append(buffer, 0, bytesRead);
+                max -= bytesRead;
+            }
+            
+            reader.close();
+            
+            return sb.toString();
+        } else {
+            result = new String(fRawInput, getName());            
+        }
+        return result;
+
+    }
+    
+    /**
+     * Get an indication of the confidence in the charset detected.
+     * Confidence values range from 0-100, with larger numbers indicating
+     * a better match of the input data to the characteristics of the
+     * charset.
+     *
+     * @return the confidence in the charset match
+     *
+     * @stable ICU 3.4
+     */
+    public int getConfidence() {
+        return fConfidence;
+    }
+    
+
+    /**
+     * Bit flag indicating the match is based on the the encoding scheme.
+     *
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int ENCODING_SCHEME    = 1;
+    
+    /**
+     * Bit flag indicating the match is based on the presence of a BOM.
+     * 
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int BOM                = 2;
+    
+    /**
+     * Bit flag indicating he match is based on the declared encoding.
+     * 
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int DECLARED_ENCODING  = 4;
+    
+    /**
+     * Bit flag indicating the match is based on language statistics.
+     *
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int LANG_STATISTICS    = 8;
+    
+    /**
+     * Return flags indicating what it was about the input data 
+     * that caused this charset to be considered as a possible match.
+     * The result is a bitfield containing zero or more of the flags
+     * ENCODING_SCHEME, BOM, DECLARED_ENCODING, and LANG_STATISTICS.
+     * A result of zero means no information is available.
+     * <p>
+     * Note: currently, this method always returns zero.
+     * <p>
+     *
+     * @return the type of match found for this charset.
+     *
+     * @draft ICU 3.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getMatchType() {
+//      TODO: create a list of enum-like constants for common combinations of types of matches.
+        return 0;
+    }
+
+    /**
+     * Get the name of the detected charset.  
+     * The name will be one that can be used with other APIs on the
+     * platform that accept charset names.  It is the "Canonical name"
+     * as defined by the class java.nio.charset.Charset; for
+     * charsets that are registered with the IANA charset registry,
+     * this is the MIME-preferred registerd name.
+     *
+     * @see java.nio.charset.Charset
+     * @see java.io.InputStreamReader
+     *
+     * @return The name of the charset.
+     *
+     * @stable ICU 3.4
+     */
+    public String getName() {
+        return fRecognizer.getName();
+    }
+    
+    /**
+     * Get the ISO code for the language of the detected charset.  
+     *
+     * @return The ISO code for the language or <code>null</code> if the language cannot be determined.
+     *
+     * @stable ICU 3.4
+     */
+    public String getLanguage() {
+        return fRecognizer.getLanguage();
+    }
+
+    /**
+     * Compare to other CharsetMatch objects.
+     * Comparison is based on the match confidence value, which 
+     *   allows CharsetDetector.detectAll() to order its results. 
+     *
+     * @param o the CharsetMatch object to compare against.
+     * @return  a negative integer, zero, or a positive integer as the 
+     *          confidence level of this CharsetMatch
+     *          is less than, equal to, or greater than that of
+     *          the argument.
+     * @throws ClassCastException if the argument is not a CharsetMatch.
+     * @stable ICU 3.4
+     */
+    public int compareTo (Object o) {
+        CharsetMatch other = (CharsetMatch)o;
+        int compareResult = 0;
+        if (this.fConfidence > other.fConfidence) {
+            compareResult = 1;
+        } else if (this.fConfidence < other.fConfidence) {
+            compareResult = -1;
+        }
+        return compareResult;
+    }
+    
+    /*
+     *  Constructor.  Implementation internal
+     */
+    CharsetMatch(CharsetDetector det, CharsetRecognizer rec, int conf) {
+        fRecognizer = rec;
+        fConfidence = conf;
+        
+        // The references to the original aplication input data must be copied out
+        //   of the charset recognizer to here, in case the application resets the
+        //   recognizer before using this CharsetMatch.
+        if (det.fInputStream == null) {
+            // We only want the existing input byte data if it came straight from the user,
+            //   not if is just the head of a stream.
+            fRawInput    = det.fRawInput;
+            fRawLength   = det.fRawLength;
+        }
+        fInputStream = det.fInputStream;
+    }
+
+    
+    //
+    //   Private Data
+    //
+    private int                 fConfidence;
+    private CharsetRecognizer   fRecognizer;
+    private byte[]              fRawInput = null;     // Original, untouched input bytes.
+                                                      //  If user gave us a byte array, this is it.
+    private int                 fRawLength;           // Length of data in fRawInput array.
+
+    private InputStream         fInputStream = null;  // User's input stream, or null if the user
+                                                      //   gave us a byte array.
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_2022.java b/src/com/ibm/icu/text/CharsetRecog_2022.java
new file mode 100644
index 0000000..822e961
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_2022.java
@@ -0,0 +1,166 @@
+/*
+*******************************************************************************
+* Copyright (C) 2005 - 2008, International Business Machines Corporation and  *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ *  class CharsetRecog_2022  part of the ICU charset detection imlementation.
+ *                           This is a superclass for the individual detectors for
+ *                           each of the detectable members of the ISO 2022 family
+ *                           of encodings.
+ * 
+ *                           The separate classes are nested within this class.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_2022 extends CharsetRecognizer {
+
+    
+    /**
+     * Matching function shared among the 2022 detectors JP, CN and KR
+     * Counts up the number of legal an unrecognized escape sequences in
+     * the sample of text, and computes a score based on the total number &
+     * the proportion that fit the encoding.
+     * 
+     * 
+     * @param text the byte buffer containing text to analyse
+     * @param textLen  the size of the text in the byte.
+     * @param escapeSequences the byte escape sequences to test for.
+     * @return match quality, in the range of 0-100.
+     */
+    int   match(byte [] text, int textLen, byte [][] escapeSequences) {
+        int     i, j;
+        int     escN;
+        int     hits   = 0;
+        int     misses = 0;
+        int     shifts = 0;
+        int     quality;
+        scanInput:
+            for (i=0; i<textLen; i++) {
+                if (text[i] == 0x1b) {
+                    checkEscapes:
+                        for (escN=0; escN<escapeSequences.length; escN++) {
+                            byte [] seq = escapeSequences[escN];
+                            
+                            if ((textLen - i) < seq.length) {
+                                continue checkEscapes;
+                            }
+                            
+                            for (j=1; j<seq.length; j++) {
+                                if (seq[j] != text[i+j])  {
+                                    continue checkEscapes;
+                                }                                   
+                            }
+                            
+                            hits++; 
+                            i += seq.length-1;
+                            continue scanInput;
+                        }
+                
+                        misses++;                  
+                }
+                
+                if (text[i] == 0x0e || text[i] == 0x0f) {
+                    // Shift in/out
+                    shifts++;
+                }
+            }
+        
+        if (hits == 0) {
+            return 0;
+        }
+        
+        //
+        // Initial quality is based on relative proportion of recongized vs.
+        //   unrecognized escape sequences. 
+        //   All good:  quality = 100;
+        //   half or less good: quality = 0;
+        //   linear inbetween.
+        quality = (100*hits - 100*misses) / (hits + misses);
+        
+        // Back off quality if there were too few escape sequences seen.
+        //   Include shifts in this computation, so that KR does not get penalized
+        //   for having only a single Escape sequence, but many shifts.
+        if (hits+shifts < 5) {
+            quality -= (5-(hits+shifts))*10;
+        }
+        
+        if (quality < 0) {
+            quality = 0;
+        }        
+        return quality;
+    }
+
+    
+ 
+    
+    static class CharsetRecog_2022JP extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x28, 0x43},   // KS X 1001:1992
+                {0x1b, 0x24, 0x28, 0x44},   // JIS X 212-1990
+                {0x1b, 0x24, 0x40},         // JIS C 6226-1978
+                {0x1b, 0x24, 0x41},         // GB 2312-80
+                {0x1b, 0x24, 0x42},         // JIS X 208-1983
+                {0x1b, 0x26, 0x40},         // JIS X 208 1990, 1997
+                {0x1b, 0x28, 0x42},         // ASCII
+                {0x1b, 0x28, 0x48},         // JIS-Roman
+                {0x1b, 0x28, 0x49},         // Half-width katakana
+                {0x1b, 0x28, 0x4a},         // JIS-Roman
+                {0x1b, 0x2e, 0x41},         // ISO 8859-1
+                {0x1b, 0x2e, 0x46}          // ISO 8859-7
+                };
+        
+        String getName() {
+            return "ISO-2022-JP";
+        }
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+    }
+
+    static class CharsetRecog_2022KR extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x29, 0x43}   
+                 };
+        
+        String getName() {
+            return "ISO-2022-KR";
+        }
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+        
+    }
+
+    static class CharsetRecog_2022CN extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x29, 0x41},   // GB 2312-80
+                {0x1b, 0x24, 0x29, 0x47},   // CNS 11643-1992 Plane 1
+                {0x1b, 0x24, 0x2A, 0x48},   // CNS 11643-1992 Plane 2
+                {0x1b, 0x24, 0x29, 0x45},   // ISO-IR-165
+                {0x1b, 0x24, 0x2B, 0x49},   // CNS 11643-1992 Plane 3
+                {0x1b, 0x24, 0x2B, 0x4A},   // CNS 11643-1992 Plane 4
+                {0x1b, 0x24, 0x2B, 0x4B},   // CNS 11643-1992 Plane 5
+                {0x1b, 0x24, 0x2B, 0x4C},   // CNS 11643-1992 Plane 6
+                {0x1b, 0x24, 0x2B, 0x4D},   // CNS 11643-1992 Plane 7
+                {0x1b, 0x4e},               // SS2
+                {0x1b, 0x4f},               // SS3
+        };
+        
+        String getName() {
+            return "ISO-2022-CN";
+        }
+        
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+    }
+    
+    }
+
diff --git a/src/com/ibm/icu/text/CharsetRecog_UTF8.java b/src/com/ibm/icu/text/CharsetRecog_UTF8.java
new file mode 100644
index 0000000..e2e4485
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_UTF8.java
@@ -0,0 +1,99 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005 - 2007, International Business Machines Corporation and  *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * Charset recognizer for UTF-8
+ *
+ * @internal
+ */
+class CharsetRecog_UTF8 extends CharsetRecognizer {
+
+    String getName() {
+        return "UTF-8";
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    int match(CharsetDetector det) {
+        boolean     hasBOM = false;
+        int         numValid = 0;
+        int         numInvalid = 0;
+        byte        input[] = det.fRawInput;
+        int         i;
+        int         trailBytes = 0;
+        int         confidence;
+        
+        if (det.fRawLength >= 3 && 
+                (input[0] & 0xFF) == 0xef && (input[1] & 0xFF) == 0xbb & (input[2] & 0xFF) == 0xbf) {
+            hasBOM = true;
+        }
+        
+        // Scan for multi-byte sequences
+        for (i=0; i<det.fRawLength; i++) {
+            int b = input[i];
+            if ((b & 0x80) == 0) {
+                continue;   // ASCII
+            }
+            
+            // Hi bit on char found.  Figure out how long the sequence should be
+            if ((b & 0x0e0) == 0x0c0) {
+                trailBytes = 1;                
+            } else if ((b & 0x0f0) == 0x0e0) {
+                trailBytes = 2;
+            } else if ((b & 0x0f8) == 0xf0) {
+                trailBytes = 3;
+            } else {
+                numInvalid++;
+                if (numInvalid > 5) {
+                    break;
+                }
+                trailBytes = 0;
+            }
+                
+            // Verify that we've got the right number of trail bytes in the sequence
+            for (;;) {
+                i++;
+                if (i>=det.fRawLength) {
+                    break;
+                }
+                b = input[i];
+                if ((b & 0xc0) != 0x080) {
+                    numInvalid++;
+                    break;
+                }
+                if (--trailBytes == 0) {
+                    numValid++;
+                    break;
+                }
+            }
+                        
+        }
+        
+        // Cook up some sort of confidence score, based on presense of a BOM
+        //    and the existence of valid and/or invalid multi-byte sequences.
+        confidence = 0;
+        if (hasBOM && numInvalid==0) {
+            confidence = 100;
+        } else if (hasBOM && numValid > numInvalid*10) {
+            confidence = 80;
+        } else if (numValid > 3 && numInvalid == 0) {
+            confidence = 100;            
+        } else if (numValid > 0 && numInvalid == 0) {
+            confidence = 80;
+        } else if (numValid == 0 && numInvalid == 0) {
+            // Plain ASCII.  
+            confidence = 10;            
+        } else if (numValid > numInvalid*10) {
+            // Probably corruput utf-8 data.  Valid sequences aren't likely by chance.
+            confidence = 25;
+        }
+        return confidence;
+    }
+
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_Unicode.java b/src/com/ibm/icu/text/CharsetRecog_Unicode.java
new file mode 100644
index 0000000..979c68d
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_Unicode.java
@@ -0,0 +1,155 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * This class matches UTF-16 and UTF-32, both big- and little-endian. The
+ * BOM will be used if it is present.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_Unicode extends CharsetRecognizer {
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#getName()
+     */
+    abstract String getName();
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    abstract int match(CharsetDetector det);
+    
+    static class CharsetRecog_UTF_16_BE extends CharsetRecog_Unicode
+    {
+        String getName()
+        {
+            return "UTF-16BE";
+        }
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input = det.fRawInput;
+            
+            if (input.length>=2 && ((input[0] & 0xFF) == 0xFE && (input[1] & 0xFF) == 0xFF)) {
+                return 100;
+            }
+            
+            // TODO: Do some statistics to check for unsigned UTF-16BE
+            return 0;
+        }
+    }
+    
+    static class CharsetRecog_UTF_16_LE extends CharsetRecog_Unicode
+    {
+        String getName()
+        {
+            return "UTF-16LE";
+        }
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input = det.fRawInput;
+            
+            if (input.length >= 2 && ((input[0] & 0xFF) == 0xFF && (input[1] & 0xFF) == 0xFE))
+            {
+               // An LE BOM is present.
+               if (input.length>=4 && input[2] == 0x00 && input[3] == 0x00) {
+                   // It is probably UTF-32 LE, not UTF-16
+                   return 0;
+               }
+               return 100;
+            }        
+            
+            // TODO: Do some statistics to check for unsigned UTF-16LE
+            return 0;
+        }
+    }
+    
+    static abstract class CharsetRecog_UTF_32 extends CharsetRecog_Unicode
+    {
+        abstract int getChar(byte[] input, int index);
+        
+        abstract String getName();
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input   = det.fRawInput;
+            int limit      = (det.fRawLength / 4) * 4;
+            int numValid   = 0;
+            int numInvalid = 0;
+            boolean hasBOM = false;
+            int confidence = 0;
+            
+            if (limit==0) {
+                return 0;
+            }
+            if (getChar(input, 0) == 0x0000FEFF) {
+                hasBOM = true;
+            }
+            
+            for(int i = 0; i < limit; i += 4) {
+                int ch = getChar(input, i);
+                
+                if (ch < 0 || ch >= 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF)) {
+                    numInvalid += 1;
+                } else {
+                    numValid += 1;
+                }
+            }
+            
+            
+            // Cook up some sort of confidence score, based on presence of a BOM
+            //    and the existence of valid and/or invalid multi-byte sequences.
+            if (hasBOM && numInvalid==0) {
+                confidence = 100;
+            } else if (hasBOM && numValid > numInvalid*10) {
+                confidence = 80;
+            } else if (numValid > 3 && numInvalid == 0) {
+                confidence = 100;            
+            } else if (numValid > 0 && numInvalid == 0) {
+                confidence = 80;
+            } else if (numValid > numInvalid*10) {
+                // Probably corrupt UTF-32BE data.  Valid sequences aren't likely by chance.
+                confidence = 25;
+            }
+            
+            return confidence;
+        }
+    }
+    
+    static class CharsetRecog_UTF_32_BE extends CharsetRecog_UTF_32
+    {
+        int getChar(byte[] input, int index)
+        {
+            return (input[index + 0] & 0xFF) << 24 | (input[index + 1] & 0xFF) << 16 |
+                   (input[index + 2] & 0xFF) <<  8 | (input[index + 3] & 0xFF);
+        }
+        
+        String getName()
+        {
+            return "UTF-32BE";
+        }
+    }
+
+    
+    static class CharsetRecog_UTF_32_LE extends CharsetRecog_UTF_32
+    {
+        int getChar(byte[] input, int index)
+        {
+            return (input[index + 3] & 0xFF) << 24 | (input[index + 2] & 0xFF) << 16 |
+                   (input[index + 1] & 0xFF) <<  8 | (input[index + 0] & 0xFF);
+        }
+        
+        String getName()
+        {
+            return "UTF-32LE";
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_mbcs.java b/src/com/ibm/icu/text/CharsetRecog_mbcs.java
new file mode 100644
index 0000000..bf6a91e
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_mbcs.java
@@ -0,0 +1,542 @@
+/*
+ ****************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                             *
+ ****************************************************************************
+ *
+ */
+package com.ibm.icu.text;
+
+import java.util.Arrays;
+
+/**
+ * CharsetRecognizer implemenation for Asian  - double or multi-byte - charsets.
+ *                   Match is determined mostly by the input data adhering to the
+ *                   encoding scheme for the charset, and, optionally,
+ *                   frequency-of-occurence of characters.
+ * <p/>
+ *                   Instances of this class are singletons, one per encoding
+ *                   being recognized.  They are created in the main
+ *                   CharsetDetector class and kept in the global list of available
+ *                   encodings to be checked.  The specific encoding being recognized
+ *                   is determined by subclass.
+ * 
+ * @internal                  
+ */
+abstract class CharsetRecog_mbcs extends CharsetRecognizer {
+
+   /**
+     * Get the IANA name of this charset.
+     * @return the charset name.
+     */
+    abstract String      getName() ;
+    
+    
+    /**
+     * Test the match of this charset with the input text data
+     *      which is obtained via the CharsetDetector object.
+     * 
+     * @param det  The CharsetDetector, which contains the input text
+     *             to be checked for being in this charset.
+     * @return     Two values packed into one int  (Damn java, anyhow)
+     *             <br/>
+     *             bits 0-7:  the match confidence, ranging from 0-100
+     *             <br/>
+     *             bits 8-15: The match reason, an enum-like value.
+     */
+    int match(CharsetDetector det, int [] commonChars) {
+        int   singleByteCharCount = 0;
+        int   doubleByteCharCount = 0;
+        int   commonCharCount     = 0;
+        int   badCharCount        = 0;
+        int   totalCharCount      = 0;
+        int   confidence          = 0;
+        iteratedChar   iter       = new iteratedChar();
+        
+        detectBlock: {
+            for (iter.reset(); nextChar(iter, det);) {
+                totalCharCount++;
+                if (iter.error) {
+                    badCharCount++; 
+                } else {
+                    long cv = iter.charValue & 0xFFFFFFFFL;
+                                        
+                    if (cv <= 0xff) {
+                        singleByteCharCount++;
+                    } else {
+                        doubleByteCharCount++;
+                        if (commonChars != null) {
+                            // NOTE: This assumes that there are no 4-byte common chars.
+                            if (Arrays.binarySearch(commonChars, (int) cv) >= 0) {
+                                commonCharCount++;
+                            }
+                        }
+                    }
+                }
+                if (badCharCount >= 2 && badCharCount*5 >= doubleByteCharCount) {
+                    // Bail out early if the byte data is not matching the encoding scheme.
+                    break detectBlock;
+                }
+            }
+            
+            if (doubleByteCharCount <= 10 && badCharCount== 0) {
+                // Not many multi-byte chars.
+                if (doubleByteCharCount == 0 && totalCharCount < 10) {
+                    // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.
+                    // We don't have enough data to have any confidence.
+                    // Statistical analysis of single byte non-ASCII charcters would probably help here.
+                    confidence = 0;
+                }
+                else {
+                    //   ASCII or ISO file?  It's probably not our encoding,
+                    //   but is not incompatible with our encoding, so don't give it a zero.
+                    confidence = 10;
+                }
+                
+                break detectBlock;
+            }
+            
+            //
+            //  No match if there are too many characters that don't fit the encoding scheme.
+            //    (should we have zero tolerance for these?)
+            //
+            if (doubleByteCharCount < 20*badCharCount) {
+                confidence = 0;
+                break detectBlock;
+            }
+            
+            if (commonChars == null) {
+                // We have no statistics on frequently occuring characters.
+                //  Assess confidence purely on having a reasonable number of
+                //  multi-byte characters (the more the better
+                confidence = 30 + doubleByteCharCount - 20*badCharCount;
+                if (confidence > 100) {
+                    confidence = 100;
+                }
+            }else {
+                //
+                // Frequency of occurence statistics exist.
+                //
+                double maxVal = Math.log((float)doubleByteCharCount / 4);
+                double scaleFactor = 90.0 / maxVal;
+                confidence = (int)(Math.log(commonCharCount+1) * scaleFactor + 10);
+                confidence = Math.min(confidence, 100);
+            }
+        }   // end of detectBlock:
+        
+        return confidence;
+    }
+    
+     // "Character"  iterated character class.
+     //    Recognizers for specific mbcs encodings make their "characters" available
+     //    by providing a nextChar() function that fills in an instance of iteratedChar
+     //    with the next char from the input.
+     //    The returned characters are not converted to Unicode, but remain as the raw
+     //    bytes (concatenated into an int) from the codepage data.
+     //
+     //  For Asian charsets, use the raw input rather than the input that has been
+     //   stripped of markup.  Detection only considers multi-byte chars, effectively
+     //   stripping markup anyway, and double byte chars do occur in markup too.
+     //
+     static class iteratedChar {
+         int             charValue = 0;             // 1-4 bytes from the raw input data
+         int             index     = 0;
+         int             nextIndex = 0;
+         boolean         error     = false;
+         boolean         done      = false;
+         
+         void reset() {
+             charValue = 0;
+             index     = -1;
+             nextIndex = 0;
+             error     = false;
+             done      = false;
+         }
+         
+         int nextByte(CharsetDetector det) {
+             if (nextIndex >= det.fRawLength) {
+                 done = true;
+                 return -1;
+             }
+             int byteValue = (int)det.fRawInput[nextIndex++] & 0x00ff;
+             return byteValue;
+         }       
+     }
+     
+     /**
+      * Get the next character (however many bytes it is) from the input data
+      *    Subclasses for specific charset encodings must implement this function
+      *    to get characters according to the rules of their encoding scheme.
+      * 
+      *  This function is not a method of class iteratedChar only because
+      *   that would require a lot of extra derived classes, which is awkward.
+      * @param it  The iteratedChar "struct" into which the returned char is placed.
+      * @param det The charset detector, which is needed to get at the input byte data
+      *            being iterated over.
+      * @return    True if a character was returned, false at end of input.
+      */
+     abstract boolean nextChar(iteratedChar it, CharsetDetector det);
+     
+
+
+     
+     
+     /**
+      *   Shift-JIS charset recognizer.   
+      *
+      */
+     static class CharsetRecog_sjis extends CharsetRecog_mbcs {
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0, 
+             0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5, 
+             0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc, 
+             0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341, 
+             0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389, 
+             0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa};
+         
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte;
+             firstByte = it.charValue = it.nextByte(det);
+             if (firstByte < 0) {
+                 return false;
+             }
+             
+             if (firstByte <= 0x7f || (firstByte>0xa0 && firstByte<=0xdf)) {
+                 return true;
+             }
+             
+             int secondByte = it.nextByte(det);
+             if (secondByte < 0)  {
+                 return false;          
+             }
+             it.charValue = (firstByte << 8) | secondByte;
+             if (! ((secondByte>=0x40 && secondByte<=0x7f) || (secondByte>=0x80 && secondByte<=0xff))) {
+                 // Illegal second byte value.
+                 it.error = true;
+             }
+             return true;
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         String getName() {
+             return "Shift_JIS";
+         }
+         
+         public String getLanguage()
+         {
+             return "ja";
+         }
+
+         
+     }
+     
+     
+     /**
+      *   Big5 charset recognizer.   
+      *
+      */
+     static class CharsetRecog_big5 extends CharsetRecog_mbcs {
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446, 
+             0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3, 
+             0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548, 
+             0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8, 
+             0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da, 
+             0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3, 
+             0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59, 
+             0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c, 
+             0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44, 
+             0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f};
+          
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte;
+             firstByte = it.charValue = it.nextByte(det);
+             if (firstByte < 0) {
+                 return false;
+             }
+             
+             if (firstByte <= 0x7f || firstByte==0xff) {
+                 // single byte character.
+                 return true;
+             }
+             
+             int secondByte = it.nextByte(det);
+             if (secondByte < 0)  {
+                 return false;          
+             }
+             it.charValue = (it.charValue << 8) | secondByte;
+
+             if (secondByte < 0x40 ||
+                 secondByte ==0x7f ||
+                 secondByte == 0xff) {
+                     it.error = true;
+             }
+             return true;
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         String getName() {
+             return "Big5";
+         }
+         
+         
+         public String getLanguage()
+         {
+             return "zh";
+         }
+     }
+     
+     
+     /**
+      *   EUC charset recognizers.  One abstract class that provides the common function
+      *             for getting the next character according to the EUC encoding scheme,
+      *             and nested derived classes for EUC_KR, EUC_JP, EUC_CN.   
+      *
+      */
+     abstract static class CharsetRecog_euc extends CharsetRecog_mbcs {
+         
+         /*
+          *  (non-Javadoc)
+          *  Get the next character value for EUC based encodings.
+          *  Character "value" is simply the raw bytes that make up the character
+          *     packed into an int.
+          */
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte  = 0;
+             int secondByte = 0;
+             int thirdByte  = 0;
+             //int fourthByte = 0;
+             
+             buildChar: {
+                 firstByte = it.charValue = it.nextByte(det);                 
+                 if (firstByte < 0) {
+                     // Ran off the end of the input data
+                     it.done = true;
+                     break buildChar;
+                 }
+                 if (firstByte <= 0x8d) {
+                     // single byte char
+                     break buildChar;
+                 }
+                 
+                 secondByte = it.nextByte(det);
+                 it.charValue = (it.charValue << 8) | secondByte;
+                 
+                 if (firstByte >= 0xA1 && firstByte <= 0xfe) {
+                     // Two byte Char
+                     if (secondByte < 0xa1) {
+                         it.error = true;
+                     }
+                     break buildChar;
+                 }
+                 if (firstByte == 0x8e) {
+                     // Code Set 2.
+                     //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.
+                     //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
+                     // We don't know which we've got.
+                     // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
+                     //   bytes will look like a well formed 2 byte char.  
+                     if (secondByte < 0xa1) {
+                         it.error = true;
+                     }
+                     break buildChar;                     
+                 }
+                 
+                 if (firstByte == 0x8f) {
+                     // Code set 3.
+                     // Three byte total char size, two bytes of actual char value.
+                     thirdByte    = it.nextByte(det);
+                     it.charValue = (it.charValue << 8) | thirdByte;
+                     if (thirdByte < 0xa1) {
+                         it.error = true;
+                     }
+                 }
+              }
+             
+             return (it.done == false);
+         }
+         
+         /**
+          * The charset recognize for EUC-JP.  A singleton instance of this class
+          *    is created and kept by the public CharsetDetector class
+          */
+         static class CharsetRecog_euc_jp extends CharsetRecog_euc {
+             static int [] commonChars = 
+                 // TODO:  This set of data comes from the character frequency-
+                 //        of-occurence analysis tool.  The data needs to be moved
+                 //        into a resource and loaded from there.
+                {0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2, 
+                 0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3, 
+                 0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4, 
+                 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de, 
+                 0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef, 
+                 0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af, 
+                 0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7, 
+                 0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1, 
+                 0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee, 
+                 0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1};             
+             String getName() {
+                 return "EUC-JP";
+             }
+             
+             int match(CharsetDetector det) {
+                 return match(det, commonChars);
+             }
+             
+             public String getLanguage()
+             {
+                 return "ja";
+             }
+         }
+         
+         /**
+          * The charset recognize for EUC-KR.  A singleton instance of this class
+          *    is created and kept by the public CharsetDetector class
+          */
+         static class CharsetRecog_euc_kr extends CharsetRecog_euc {
+             static int [] commonChars = 
+                 // TODO:  This set of data comes from the character frequency-
+                 //        of-occurence analysis tool.  The data needs to be moved
+                 //        into a resource and loaded from there.
+                {0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc, 
+                 0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9, 
+                 0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce, 
+                 0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce, 
+                 0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba, 
+                 0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee, 
+                 0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7, 
+                 0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6, 
+                 0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6, 
+                 0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad};
+             
+             String getName() {
+                 return "EUC-KR";
+             }
+             
+             int match(CharsetDetector det) {
+                 return match(det, commonChars);
+             }
+             
+             public String getLanguage()
+             {
+                 return "ko";
+             }
+         }
+     }
+     
+     /**
+      * 
+      *   GB-18030 recognizer. Uses simplified Chinese statistics.   
+      *
+      */
+     static class CharsetRecog_gb_18030 extends CharsetRecog_mbcs {
+         
+         /*
+          *  (non-Javadoc)
+          *  Get the next character value for EUC based encodings.
+          *  Character "value" is simply the raw bytes that make up the character
+          *     packed into an int.
+          */
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte  = 0;
+             int secondByte = 0;
+             int thirdByte  = 0;
+             int fourthByte = 0;
+             
+             buildChar: {
+                 firstByte = it.charValue = it.nextByte(det); 
+                 
+                 if (firstByte < 0) {
+                     // Ran off the end of the input data
+                     it.done = true;
+                     break buildChar;
+                 }
+                 
+                 if (firstByte <= 0x80) {
+                     // single byte char
+                     break buildChar;
+                 }
+                 
+                 secondByte = it.nextByte(det);
+                 it.charValue = (it.charValue << 8) | secondByte;
+                 
+                 if (firstByte >= 0x81 && firstByte <= 0xFE) {
+                     // Two byte Char
+                     if ((secondByte >= 0x40 && secondByte <= 0x7E) || (secondByte >=80 && secondByte <=0xFE)) {
+                         break buildChar;
+                     }
+                     
+                     // Four byte char
+                     if (secondByte >= 0x30 && secondByte <= 0x39) {
+                         thirdByte = it.nextByte(det);
+                         
+                         if (thirdByte >= 0x81 && thirdByte <= 0xFE) {
+                             fourthByte = it.nextByte(det);
+                             
+                             if (fourthByte >= 0x30 && fourthByte <= 0x39) {
+                                 it.charValue = (it.charValue << 16) | (thirdByte << 8) | fourthByte;
+                                 break buildChar;
+                             }
+                         }
+                     }
+                     
+                     it.error = true;
+                     break buildChar;
+                 }
+             }
+                 
+             return (it.done == false);
+         }
+         
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac, 
+             0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4, 
+             0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4, 
+             0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6, 
+             0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6, 
+             0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7, 
+             0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7, 
+             0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5, 
+             0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2, 
+             0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0};
+
+         
+         String getName() {
+             return "GB18030";
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         public String getLanguage()
+         {
+             return "zh";
+         }
+     }
+     
+     
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_sbcs.java b/src/com/ibm/icu/text/CharsetRecog_sbcs.java
new file mode 100644
index 0000000..d8949da
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_sbcs.java
@@ -0,0 +1,1053 @@
+/*
+ ****************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                             *
+ ************************************************************************** *
+ *
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * This class recognizes single-byte encodings. Because the encoding scheme is so
+ * simple, language statistics are used to do the matching.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_sbcs extends CharsetRecognizer {
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#getName()
+     */
+    abstract String getName();
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    abstract int match(CharsetDetector det);
+    
+    static class NGramParser
+    {
+//        private static final int N_GRAM_SIZE = 3;
+        private static final int N_GRAM_MASK = 0xFFFFFF;
+
+        private int byteIndex = 0;
+        private int ngram = 0;
+        
+        private int[] ngramList;
+        private byte[] byteMap;
+        
+        private int ngramCount;
+        private int hitCount;
+        
+        public NGramParser(int[] theNgramList, byte[] theByteMap)
+        {
+            ngramList = theNgramList;
+            byteMap   = theByteMap;
+            
+            ngram = 0;
+            
+            ngramCount = hitCount = 0;
+        }
+        
+        /*
+         * Binary search for value in table, which must have exactly 64 entries.
+         */
+        private static int search(int[] table, int value)
+        {
+            int index = 0;
+            
+            if (table[index + 32] <= value) {
+                index += 32;
+            }
+            
+            if (table[index + 16] <= value) {
+                index += 16;
+            }
+
+            if (table[index + 8] <= value) {
+                index += 8;
+            }
+
+            if (table[index + 4] <= value) {
+                index += 4;
+            }
+
+            if (table[index + 2] <= value) {
+                index += 2;
+            }
+
+            if (table[index + 1] <= value) {
+                index += 1;
+            }
+
+            if (table[index] > value) {
+                index -= 1;
+            }
+            
+            if (index < 0 || table[index] != value) {
+                return -1;
+            }
+            
+            return index;
+        }
+
+        private void lookup(int thisNgram)
+        {
+            ngramCount += 1;
+            
+            if (search(ngramList, thisNgram) >= 0) {
+                hitCount += 1;
+            }
+            
+        }
+        
+        private void addByte(int b)
+        {
+            ngram = ((ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;
+            lookup(ngram);
+        }
+        
+        private int nextByte(CharsetDetector det)
+        {
+            if (byteIndex >= det.fInputLen) {
+                return -1;
+            }
+            
+            return det.fInputBytes[byteIndex++] & 0xFF;
+        }
+        
+        public int parse(CharsetDetector det)
+        {
+            int b;
+            boolean ignoreSpace = false;
+            
+            while ((b = nextByte(det)) >= 0) {
+                byte mb = byteMap[b];
+                
+                // TODO: 0x20 might not be a space in all character sets...
+                if (mb != 0) {
+                    if (!(mb == 0x20 && ignoreSpace)) {
+                        addByte(mb);                    
+                    }
+                    
+                    ignoreSpace = (mb == 0x20);
+                }
+            }
+            
+            // TODO: Is this OK? The buffer could have ended in the middle of a word...
+            addByte(0x20);
+
+            double rawPercent = (double) hitCount / (double) ngramCount;
+            
+//            if (rawPercent <= 2.0) {
+//                return 0;
+//            }
+            
+            // TODO - This is a bit of a hack to take care of a case
+            // were we were getting a confidence of 135...
+            if (rawPercent > 0.33) {
+                return 98;
+            }
+            
+            return (int) (rawPercent * 300.0);
+        }
+    }
+    
+    protected boolean haveC1Bytes = false;
+    
+    int match(CharsetDetector det, int[] ngrams,  byte[] byteMap)
+    {
+        NGramParser parser = new NGramParser(ngrams, byteMap);
+        
+        haveC1Bytes = det.fC1Bytes;
+        
+        return parser.parse(det);
+    }
+    
+    abstract static class CharsetRecog_8859_1 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1252" : "ISO-8859-1";
+        }
+    }
+
+    static class CharsetRecog_8859_1_da extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206166, 0x206174, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920, 0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374, 0x207469, 0x207669, 0x616620, 
+            0x616E20, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572, 0x646574, 0x652073, 0x656420, 0x656465, 0x656E20, 0x656E64, 0x657220, 0x657265, 0x657320, 
+            0x657420, 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6572, 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520, 
+            0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722064, 0x722065, 0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "da";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+
+    static class CharsetRecog_8859_1_de extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616E, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, 0x206765, 0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365, 0x20756E, 0x207665, 0x20766F, 
+            0x207765, 0x207A75, 0x626572, 0x636820, 0x636865, 0x636874, 0x646173, 0x64656E, 0x646572, 0x646965, 0x652064, 0x652073, 0x65696E, 0x656974, 0x656E20, 0x657220, 
+            0x657320, 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520, 0x696E20, 0x696E65, 0x697420, 0x6C6963, 0x6C6C65, 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465, 
+            0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064, 0x726465, 0x726569, 0x736368, 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "de";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_en extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20616E, 0x206265, 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E, 0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361, 0x207374, 0x207468, 0x20746F, 
+            0x207768, 0x616964, 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420, 0x617465, 0x617469, 0x642061, 0x642074, 0x652061, 0x652073, 0x652074, 0x656420, 0x656E74, 
+            0x657220, 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572, 0x696420, 0x696E20, 0x696E67, 0x696F6E, 0x697320, 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420, 
+            0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169, 0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20, 0x747320, 
+        };
+            
+        public String getLanguage()
+        {
+            return "en";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_es extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206361, 0x20636F, 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E, 0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365, 
+            0x20756E, 0x207920, 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070, 0x616369, 0x61646F, 0x616C20, 0x617220, 0x617320, 0x6369F3, 0x636F6E, 0x646520, 0x64656C, 
+            0x646F20, 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20, 0x656E74, 0x657320, 0x657374, 0x69656E, 0x69F36E, 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064, 
+            0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520, 0xF36E20, 
+        };
+            
+        public String getLanguage()
+        {
+            return "es";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_fr extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206175, 0x20636F, 0x206461, 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61, 0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207365, 0x20736F, 0x20756E, 
+            0x20E020, 0x616E74, 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573, 0x647520, 0x652061, 0x652063, 0x652064, 0x652065, 0x65206C, 0x652070, 0x652073, 0x656E20, 
+            0x656E74, 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E, 0x697320, 0x697420, 0x6C6120, 0x6C6520, 0x6C6573, 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420, 
+            0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C, 0x726520, 0x732061, 0x732064, 0x732065, 0x73206C, 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520, 0x757220, 
+        };
+
+        public String getLanguage()
+        {
+            return "fr";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_it extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616C, 0x206368, 0x20636F, 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E, 0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063, 0x612064, 0x612070, 0x612073, 
+            0x61746F, 0x636865, 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063, 0x652064, 0x652069, 0x65206C, 0x652070, 0x652073, 0x656C20, 0x656C6C, 0x656E74, 0x657220, 
+            0x686520, 0x692061, 0x692063, 0x692064, 0x692073, 0x696120, 0x696C20, 0x696E20, 0x696F6E, 0x6C6120, 0x6C6520, 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20, 
+            0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073, 0x6F6E20, 0x6F6E65, 0x706572, 0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20, 0x7A696F, 
+        };
+
+        public String getLanguage()
+        {
+            return "it";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_nl extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616C, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765, 0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70, 0x207465, 0x207661, 0x207665, 
+            0x20766F, 0x207765, 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64, 0x617220, 0x617420, 0x636874, 0x646520, 0x64656E, 0x646572, 0x652062, 0x652076, 0x65656E, 
+            0x656572, 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E, 0x686574, 0x696520, 0x696E20, 0x696E67, 0x697320, 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F, 
+            0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72, 0x6F7020, 0x6F7220, 0x736368, 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572, 0x766F6F, 
+        };
+
+        public String getLanguage()
+        {
+            return "nl";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_no extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206174, 0x206176, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920, 0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B, 0x20736F, 0x207374, 0x207469, 
+            0x207669, 0x20E520, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646574, 0x652073, 0x656420, 0x656E20, 0x656E65, 0x657220, 0x657265, 0x657420, 0x657474, 
+            0x666F72, 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6520, 0x6C6C65, 0x6D6564, 0x6D656E, 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65, 
+            0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073, 0x726520, 0x736F6D, 0x737465, 0x742073, 0x746520, 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "no";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_pt extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20636F, 0x206461, 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61, 0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365, 
+            0x20756D, 0x612061, 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F, 0x616C20, 0x617220, 0x617261, 0x617320, 0x636F6D, 0x636F6E, 0x646120, 0x646520, 0x646F20, 
+            0x646F73, 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320, 0x657374, 0x696120, 0x696361, 0x6D656E, 0x6E7465, 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065, 
+            0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064, 0x732065, 0x732070, 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20, 0xE7E36F, 
+        };
+
+        public String getLanguage()
+        {
+            return "pt";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_sv extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206174, 0x206176, 0x206465, 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E, 0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B, 0x20736F, 0x207374, 0x207469, 
+            0x207661, 0x207669, 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220, 0x617474, 0x636820, 0x646520, 0x64656E, 0x646572, 0x646574, 0x656420, 0x656E20, 0x657220, 
+            0x657420, 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120, 0x6C6C20, 0x6D6564, 0x6E2073, 0x6E6120, 0x6E6465, 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20, 
+            0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120, 0x736B61, 0x736F6D, 0x742073, 0x746120, 0x746520, 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220, 0xF67220, 
+        };
+
+        public String getLanguage()
+        {
+            return "sv";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_2 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xB1, (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5, (byte) 0xB6, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0x20, (byte) 0xB1, (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5, (byte) 0xB6, (byte) 0xB7, 
+            (byte) 0x20, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1250" : "ISO-8859-2";
+        }
+    }
+    
+    static class CharsetRecog_8859_2_cs extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206279, 0x20646F, 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64, 0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365, 0x20736F, 0x207374, 0x20746F, 
+            0x207620, 0x207679, 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070, 0x652073, 0x652076, 0x656D20, 0x656EED, 0x686F20, 0x686F64, 0x697374, 0x6A6520, 0x6B7465, 
+            0x6C6520, 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20, 0x6F2070, 0x6F646E, 0x6F6A69, 0x6F7374, 0x6F7520, 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865, 
+            0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E, 0x746572, 0x746EED, 0x746F20, 0x752070, 0xBE6520, 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20, 0xF86564, 
+        };
+
+        public String getLanguage()
+        {
+            return "cs";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_hu extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20617A, 0x206265, 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F, 0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65, 0x206D61, 0x206D65, 0x206D69, 
+            0x206E65, 0x20737A, 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D, 0x612073, 0x616B20, 0x616E20, 0x617A20, 0x62616E, 0x62656E, 0x656779, 0x656B20, 0x656C20, 
+            0x656C65, 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465, 0x657474, 0x677920, 0x686F67, 0x696E74, 0x697320, 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061, 
+            0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779, 0x732061, 0x737A65, 0x737A74, 0x737AE1, 0x73E967, 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20, 0xE97320, 
+        };
+
+        public String getLanguage()
+        {
+            return "hu";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_pl extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x20637A, 0x20646F, 0x206920, 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61, 0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369, 0x207720, 0x207769, 0x207779, 
+            0x207A20, 0x207A61, 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65, 0x637A79, 0x646F20, 0x647A69, 0x652070, 0x652073, 0x652077, 0x65207A, 0x65676F, 0x656A20, 
+            0x656D20, 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A, 0x6B6120, 0x6B6920, 0x6B6965, 0x6D6965, 0x6E6120, 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769, 
+            0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65, 0x727A79, 0x7369EA, 0x736B69, 0x737461, 0x776965, 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920, 0xF37720, 
+        };
+
+        public String getLanguage()
+        {
+            return "pl";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_ro extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206163, 0x206361, 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469, 0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365, 0x2073E3, 0x20756E, 0x20BA69, 
+            0x20EE6E, 0x612063, 0x612064, 0x617265, 0x617420, 0x617465, 0x617520, 0x636172, 0x636F6E, 0x637520, 0x63E320, 0x646520, 0x652061, 0x652063, 0x652064, 0x652070, 
+            0x652073, 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374, 0x692061, 0x692063, 0x692064, 0x692070, 0x696520, 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72, 
+            0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E, 0x726520, 0x726561, 0x727520, 0x73E320, 0x746520, 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920, 0xEE6E20, 
+        };
+
+        public String getLanguage()
+        {
+            return "ro";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_5 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0xFE, (byte) 0xFF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0x20, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return "ISO-8859-5";
+        }
+    }
+    
+    static class CharsetRecog_8859_5_ru extends CharsetRecog_8859_5
+    {
+        private static int[] ngrams = {
+            0x20D220, 0x20D2DE, 0x20D4DE, 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0, 0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0, 0x20E1DE, 0x20E1E2, 0x20E2DE, 
+            0x20E7E2, 0x20EDE2, 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8, 0xD5E1E2, 0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820, 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD, 
+            0xDDD020, 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2, 0xDE20D2, 0xDE20DF, 0xDE20E1, 0xDED220, 0xDED2D0, 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2, 
+            0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2, 0xE0D5D4, 0xE1E2D0, 0xE1E2D2, 0xE1E2D8, 0xE1EF20, 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE, 0xEBE520, 
+        };
+
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_6 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return "ISO-8859-6";
+        }
+    }
+    
+    static class CharsetRecog_8859_6_ar extends CharsetRecog_8859_6
+    {
+        private static int[] ngrams = {
+            0x20C7E4, 0x20C7E6, 0x20C8C7, 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7, 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420, 0xC7E4C3, 0xC7E4C7, 0xC7E4C8, 
+            0xC7E4CA, 0xC7E4CC, 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2, 0xC7E4E5, 0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620, 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1, 
+            0xC920E4, 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920, 0xD320C7, 0xD920C7, 0xD9E4E9, 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20, 
+            0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7, 0xE720C7, 0xE7C720, 0xE8C7E4, 0xE8E620, 0xE920C7, 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120, 0xEAE620, 
+        };
+
+        public String getLanguage()
+        {
+            return "ar";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_7 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xA1, (byte) 0xA2, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xDC, (byte) 0x20, 
+            (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, (byte) 0x20, (byte) 0xFC, (byte) 0x20, (byte) 0xFD, (byte) 0xFE, 
+            (byte) 0xC0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0x20, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1253" : "ISO-8859-7";
+        }
+    }
+    
+    static class CharsetRecog_8859_7_el extends CharsetRecog_8859_7
+    {
+        private static int[] ngrams = {
+            0x20E1ED, 0x20E1F0, 0x20E3E9, 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5, 0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1, 0x20F3F4, 0x20F3F5, 0x20F4E7, 
+            0x20F4EF, 0xDFE120, 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC, 0xE1F220, 0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4, 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120, 
+            0xE9EADE, 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1, 0xED20E5, 0xED20F0, 0xEDE120, 0xEFF220, 0xEFF520, 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5, 
+            0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720, 0xF3F4EF, 0xF4E120, 0xF4E1E9, 0xF4E7ED, 0xF4E7F2, 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20, 0xFEED20, 
+        };
+
+        public String getLanguage()
+        {
+            return "el";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_8 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1255" : "ISO-8859-8";
+        }
+    }
+    
+    static class CharsetRecog_8859_8_I_he extends CharsetRecog_8859_8
+    {
+        private static int[] ngrams = {
+            0x20E0E5, 0x20E0E7, 0x20E0E9, 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5, 0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA, 0x20ECE0, 0x20ECE4, 0x20EEE0, 
+            0x20F2EC, 0x20F9EC, 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC, 0xE420EE, 0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20, 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4, 
+            0xE9E420, 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820, 0xE9FA20, 0xEC20E0, 0xEC20E4, 0xECE020, 0xECE420, 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE, 
+            0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920, 0xF0E9ED, 0xF2EC20, 0xF820E4, 0xF8E9ED, 0xF9EC20, 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE, 0xFA20F9, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1255" : /*"ISO-8859-8-I"*/ "ISO-8859-8";
+        }
+
+        public String getLanguage()
+        {
+            return "he";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_8_he extends CharsetRecog_8859_8
+    {
+        private static int[] ngrams = {
+            0x20E0E5, 0x20E0EC, 0x20E4E9, 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2, 0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9, 0x20F8E5, 0x20F8E9, 0x20FAE0, 
+            0x20FAE5, 0x20FAE9, 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420, 0xE0E5E4, 0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED, 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC, 
+            0xE420ED, 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020, 0xE5E420, 0xE7E020, 0xE9E020, 0xE9E120, 0xE9E420, 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920, 
+            0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED, 0xEE20FA, 0xEEE120, 0xEEE420, 0xF2E420, 0xF920E4, 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420, 0xFAE5E9, 
+        };
+
+        public String getLanguage()
+        {
+            return "he";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_9 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x69, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1254" : "ISO-8859-9";
+        }
+    }
+    
+    static class CharsetRecog_8859_9_tr extends CharsetRecog_8859_9
+    {
+        private static int[] ngrams = {
+            0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C, 0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361, 0x207461, 0x207665, 0x207961, 
+            0x612062, 0x616B20, 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220, 0x617261, 0x6172FD, 0x6173FD, 0x617961, 0x626972, 0x646120, 0x646520, 0x646920, 0x652062, 
+            0x65206B, 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369, 0x696C65, 0x696E20, 0x696E69, 0x697220, 0x6C616E, 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062, 
+            0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920, 0x6E696E, 0x6EFD20, 0x72696E, 0x72FD6E, 0x766520, 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD, 0xFDF0FD, 
+        };
+
+        public String getLanguage()
+        {
+            return "tr";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_windows_1251 extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20E220, 0x20E2EE, 0x20E4EE, 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0, 0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0, 0x20F1EE, 0x20F1F2, 0x20F2EE, 
+            0x20F7F2, 0x20FDF2, 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8, 0xE5F1F2, 0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820, 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED, 
+            0xEDE020, 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2, 0xEE20E2, 0xEE20EF, 0xEE20F1, 0xEEE220, 0xEEE2E0, 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2, 
+            0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2, 0xF0E5E4, 0xF1F2E0, 0xF1F2E2, 0xF1F2E8, 0xF1FF20, 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE, 0xFBF520, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x90, (byte) 0x83, (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F, 
+            (byte) 0x90, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F, 
+            (byte) 0x20, (byte) 0xA2, (byte) 0xA2, (byte) 0xBC, (byte) 0x20, (byte) 0xB4, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xB8, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xBF, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xB3, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xB8, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0xBC, (byte) 0xBE, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return  "windows-1251";
+        }
+        
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_windows_1256 extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20C7E1, 0x20C7E4, 0x20C8C7, 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7, 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120, 0xC7E1C3, 0xC7E1C7, 0xC7E1C8, 
+            0xC7E1CA, 0xC7E1CC, 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE, 0xC7E1E3, 0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420, 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD, 
+            0xC920E1, 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920, 0xD320C7, 0xDA20C7, 0xDAE1EC, 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20, 
+            0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7, 0xE520C7, 0xE5C720, 0xE6C7E1, 0xE6E420, 0xEC20C7, 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120, 0xEDE420, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x81, (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x88, (byte) 0x20, (byte) 0x8A, (byte) 0x20, (byte) 0x9C, (byte) 0x8D, (byte) 0x8E, (byte) 0x8F, 
+            (byte) 0x90, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x98, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x20, (byte) 0x20, (byte) 0x9F, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0x20, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xF4, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xF9, (byte) 0x20, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0x20, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return  "windows-1256";
+        }
+        
+        public String getLanguage()
+        {
+            return "ar";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+        
+    static class CharsetRecog_KOI8_R extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20C4CF, 0x20C920, 0x20CBC1, 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF, 0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF, 0x20D720, 0x20D7CF, 0x20DAC1, 
+            0x20DCD4, 0x20DED4, 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4, 0xC5D420, 0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920, 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE, 
+            0xCEC120, 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7, 0xCF20D0, 0xCF20D3, 0xCF20D7, 0xCFC7CF, 0xCFCA20, 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1, 
+            0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7, 0xD2C5C4, 0xD3D120, 0xD3D4C1, 0xD3D4C9, 0xD3D4D7, 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820, 0xDED4CF, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+        };
+        
+        public String getName()
+        {
+            return  "KOI8-R";
+        }
+        
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetRecognizer.java b/src/com/ibm/icu/text/CharsetRecognizer.java
new file mode 100644
index 0000000..284bb21
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecognizer.java
@@ -0,0 +1,55 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * Abstract class for recognizing a single charset.
+ * Part of the implementation of ICU's CharsetDetector.
+ * 
+ * Each specific charset that can be recognized will have an instance
+ * of some subclass of this class.  All interaction between the overall
+ * CharsetDetector and the stuff specific to an individual charset happens
+ * via the interface provided here.
+ * 
+ * Instances of CharsetDetector DO NOT have or maintain 
+ * state pertaining to a specific match or detect operation.
+ * The WILL be shared by multiple instances of CharsetDetector.
+ * They encapsulate const charset-specific information.
+ * 
+ * @internal
+ */
+abstract class CharsetRecognizer {
+    /**
+     * Get the IANA name of this charset.
+     * @return the charset name.
+     */
+    abstract String      getName();
+    
+    /**
+     * Get the ISO language code for this charset.
+     * @return the language code, or <code>null</code> if the language cannot be determined.
+     */
+    public   String      getLanguage()
+    {
+        return null;
+    }
+    
+    /**
+     * Test the match of this charset with the input text data
+     *      which is obtained via the CharsetDetector object.
+     * 
+     * @param det  The CharsetDetector, which contains the input text
+     *             to be checked for being in this charset.
+     * @return     Two values packed into one int  (Damn java, anyhow)
+     *             <br/>
+     *             bits 0-7:  the match confidence, ranging from 0-100
+     *             <br/>
+     *             bits 8-15: The match reason, an enum-like value.
+     */
+    abstract int         match(CharsetDetector det);
+
+}
diff --git a/src/com/ibm/icu/text/ChineseDateFormat.java b/src/com/ibm/icu/text/ChineseDateFormat.java
new file mode 100644
index 0000000..206d5ac
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -0,0 +1,268 @@
+//##header J2SE15
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.Utility;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InvalidObjectException;
+//#endif
+
+/**
+ * A concrete {@link DateFormat} for {@link com.ibm.icu.util.ChineseCalendar}.
+ * This class handles a <code>ChineseCalendar</code>-specific field,
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code>.  It also redefines the
+ * handling of two fields, <code>ERA</code> and <code>YEAR</code>.  The
+ * former is displayed numerically, instead of symbolically, since it is
+ * the numeric cycle number in <code>ChineseCalendar</code>.  The latter is
+ * numeric, as before, but has no special 2-digit Y2K behavior.
+ *
+ * <p>With regard to <code>ChineseCalendar.IS_LEAP_MONTH</code>, this
+ * class handles parsing specially.  If no string symbol is found at all,
+ * this is taken as equivalent to an <code>IS_LEAP_MONTH</code> value of
+ * zero.  This allows formats to display a special string (e.g., "*") for
+ * leap months, but no string for normal months.
+ *
+ * <p>Summary of field changes vs. {@link SimpleDateFormat}:<pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        cycle                   (Number)            78
+ * y        year of cycle (1..60)   (Number)            17
+ * l        is leap month           (Text)              4637
+ * </pre>
+ *
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @see ChineseDateFormatSymbols
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ChineseDateFormat extends SimpleDateFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -4610300753104099899L;
+    
+    // TODO Finish the constructors
+
+    /**
+     * Construct a ChineseDateFormat from a date format pattern and locale
+     * @param pattern the pattern
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+   public ChineseDateFormat(String pattern, Locale locale) {
+       this(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a ChineseDateFormat from a date format pattern and locale
+     * @param pattern the pattern
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+   public ChineseDateFormat(String pattern, ULocale locale) {
+       super(pattern, new ChineseDateFormatSymbols(locale), 
+               new ChineseCalendar(TimeZone.getDefault(), locale), locale, true);
+    }
+
+// NOTE: This API still exists; we just inherit it from SimpleDateFormat
+// as of ICU 3.0
+//  /**
+//   * @stable ICU 2.0
+//   */
+//  protected String subFormat(char ch, int count, int beginOffset,
+//                             FieldPosition pos, DateFormatSymbols formatData,
+//                             Calendar cal)  {
+//      switch (ch) {
+//      case 'G': // 'G' - ERA
+//          return zeroPaddingNumber(cal.get(Calendar.ERA), 1, 9);
+//      case 'l': // 'l' - IS_LEAP_MONTH
+//          {
+//              ChineseDateFormatSymbols symbols =
+//                  (ChineseDateFormatSymbols) formatData;
+//              return symbols.getLeapMonth(cal.get(
+//                             ChineseCalendar.IS_LEAP_MONTH));
+//          }
+//      default:
+//          return super.subFormat(ch, count, beginOffset, pos, formatData, cal);
+//      }
+//  }    
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void subFormat(StringBuffer buf,
+                             char ch, int count, int beginOffset,
+                             FieldPosition pos,
+                             Calendar cal) {
+        switch (ch) {
+        case 'G': // 'G' - ERA
+            zeroPaddingNumber(buf, cal.get(Calendar.ERA), 1, 9);
+            break;
+        case 'l': // 'l' - IS_LEAP_MONTH
+            buf.append(((ChineseDateFormatSymbols) getSymbols()).
+                       getLeapMonth(cal.get(ChineseCalendar.IS_LEAP_MONTH)));
+            break;
+        default:
+            super.subFormat(buf, ch, count, beginOffset, pos, cal);
+            break;
+        }
+
+        // TODO: add code to set FieldPosition for 'G' and 'l' fields. This
+        // is a DESIGN FLAW -- subclasses shouldn't have to duplicate the
+        // code that handles this at the end of SimpleDateFormat.subFormat.
+        // The logic should be moved up into SimpleDateFormat.format.
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 2.0
+     */
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean allowNegative, boolean[] ambiguousYear, Calendar cal) {
+        if (ch != 'G' && ch != 'l' && ch != 'y') {
+            return super.subParse(text, start, ch, count, obeyCount, allowNegative, ambiguousYear, cal);
+        }
+
+        // Skip whitespace
+        start = Utility.skipWhitespace(text, start);
+
+        ParsePosition pos = new ParsePosition(start);
+
+        switch (ch) {
+        case 'G': // 'G' - ERA
+        case 'y': // 'y' - YEAR, but without the 2-digit Y2K adjustment
+            {
+                Number number = null;
+                if (obeyCount) {
+                    if ((start+count) > text.length()) {
+                        return -start;
+                    }
+                    number = numberFormat.parse(text.substring(0, start+count), pos);
+                } else {
+                    number = numberFormat.parse(text, pos);
+                }
+                if (number == null) {
+                    return -start;
+                }
+                int value = number.intValue();
+                cal.set(ch == 'G' ? Calendar.ERA : Calendar.YEAR, value);
+                return pos.getIndex();
+            }
+        case 'l': // 'l' - IS_LEAP_MONTH
+            {
+                ChineseDateFormatSymbols symbols =
+                    (ChineseDateFormatSymbols) getSymbols();
+                int result = matchString(text, start, ChineseCalendar.IS_LEAP_MONTH,
+                                         symbols.isLeapMonth, cal);
+                // Treat the absence of any matching string as setting
+                // IS_LEAP_MONTH to false.
+                if (result<0) {
+                    cal.set(ChineseCalendar.IS_LEAP_MONTH, 0);
+                    result = start;
+                }
+                return result;
+            }
+        default:
+            ///CLOVER:OFF
+            return 0; // This can never happen
+            ///CLOVER:ON
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * {@inheritDoc}
+     * 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat.Field patternCharToDateFormatField(char ch) {
+        if (ch == 'l') {
+            return ChineseDateFormat.Field.IS_LEAP_MONTH;
+        }
+        return super.patternCharToDateFormatField(ch);
+    }
+
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * ChineseDateFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.8
+     */
+    public static class Field extends DateFormat.Field {
+
+        private static final long serialVersionUID = -5102130532751400330L;
+
+        /**
+         * Constant identifying the leap month marker.
+         * @stable ICU 3.8
+         */
+        public static final Field IS_LEAP_MONTH = new Field("is leap month", ChineseCalendar.IS_LEAP_MONTH);
+
+        /**
+         * Constructs a <code>ChineseDateFormat.Field</code> with the given name and
+         * the <code>ChineseCalendar</code> field which this attribute represents.
+         * Use -1 for <code>calendarField</code> if this field does not have a
+         * corresponding <code>ChineseCalendar</code> field.
+         * 
+         * @param name          Name of the attribute
+         * @param calendarField <code>Calendar</code> field constant
+         * 
+         * @stable ICU 3.8
+         */
+        protected Field(String name, int calendarField) {
+            super(name, calendarField);
+        }
+
+        /**
+         * Returns the <code>Field</code> constant that corresponds to the <code>
+         * ChineseCalendar</code> field <code>calendarField</code>.  If there is no
+         * corresponding <code>Field</code> is available, null is returned.
+         * 
+         * @param calendarField <code>ChineseCalendar</code> field constant
+         * @return <code>Field</code> associated with the <code>calendarField</code>,
+         * or null if no associated <code>Field</code> is available.
+         * @throws IllegalArgumentException if <code>calendarField</code> is not
+         * a valid <code>Calendar</code> field constant.
+         * 
+         * @stable ICU 3.8
+         */
+        public static DateFormat.Field ofCalendarField(int calendarField) {
+            if (calendarField == ChineseCalendar.IS_LEAP_MONTH) {
+                return IS_LEAP_MONTH;
+            }
+            return DateFormat.Field.ofCalendarField(calendarField);
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getClass() != ChineseDateFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of ChineseDateFormat.Field must implement readResolve.");
+            }
+            if (this.getName().equals(IS_LEAP_MONTH.getName())) {
+                return IS_LEAP_MONTH;
+            } else {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/ChineseDateFormatSymbols.java b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
new file mode 100644
index 0000000..a6970eb
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
@@ -0,0 +1,102 @@
+/****************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ****************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+
+/**
+ * A subclass of {@link DateFormatSymbols} for {@link ChineseDateFormat}.
+ * This class contains additional symbols corresponding to the
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code> field.
+ *
+ * @see ChineseDateFormat
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ChineseDateFormatSymbols extends DateFormatSymbols {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 6827816119783952890L;
+    
+    /*
+     * Package-private array that ChineseDateFormat needs to be able to
+     * read.
+     */
+    String isLeapMonth[]; // Do NOT add =null initializer
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the default locale.
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols() {
+        this(ULocale.getDefault());
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols(Locale locale) {
+        super(ChineseCalendar.class, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public ChineseDateFormatSymbols(ULocale locale) {
+        super(ChineseCalendar.class, locale);
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided calendar and locale.
+     * @param cal the Calendar
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols(Calendar cal, Locale locale) {
+        super(cal==null?null:cal.getClass(), locale);
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided calendar and locale.
+     * @param cal the Calendar
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public ChineseDateFormatSymbols(Calendar cal, ULocale locale) {
+        super(cal == null ? null : cal.getClass(), locale);
+    }
+
+    // New API
+    /**
+     * @stable ICU 2.0
+     */
+    public String getLeapMonth(int leap) {
+        return isLeapMonth[leap];
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.0
+     */
+    protected void initializeData(ULocale loc, CalendarData calData) {
+        super.initializeData(loc, calData);
+        isLeapMonth = calData.getStringArray("isLeapMonth");
+    }
+
+    void initializeData(DateFormatSymbols dfs) {
+        super.initializeData(dfs);
+        if (dfs instanceof ChineseDateFormatSymbols) {
+            this.isLeapMonth = ((ChineseDateFormatSymbols)dfs).isLeapMonth;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationElementIterator.java b/src/com/ibm/icu/text/CollationElementIterator.java
new file mode 100644
index 0000000..72c2c38
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationElementIterator.java
@@ -0,0 +1,2886 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/***
+ * import java.text.StringCharacterIterator;
+ * import java.text.CharacterIterator;
+ */
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.StringUCharacterIterator;
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.lang.UCharacter;
+import java.text.CharacterIterator;
+import java.util.MissingResourceException;
+
+/**
+ * <p><code>CollationElementIterator</code> is an iterator created by
+ * a RuleBasedCollator to walk through a string. The return result of
+ * each iteration is a 32-bit collation element that defines the
+ * ordering priority of the next character or sequence of characters
+ * in the source string.</p>
+ *
+ * <p>For illustration, consider the following in Spanish:
+ * <blockquote>
+ * <pre>
+ * "ca" -> the first collation element is collation_element('c') and second
+ *         collation element is collation_element('a').
+ *
+ * Since "ch" in Spanish sorts as one entity, the below example returns one
+ * collation element for the two characters 'c' and 'h'
+ *
+ * "cha" -> the first collation element is collation_element('ch') and second
+ *          collation element is collation_element('a').
+ * </pre>
+ * </blockquote>
+ * And in German,
+ * <blockquote>
+ * <pre>
+ * Since the character '&#230;' is a composed character of 'a' and 'e', the
+ * iterator returns two collation elements for the single character '&#230;'
+ *
+ * "&#230;b" -> the first collation element is collation_element('a'), the
+ *              second collation element is collation_element('e'), and the
+ *              third collation element is collation_element('b').
+ * </pre>
+ * </blockquote>
+ * </p>
+ *
+ * <p>For collation ordering comparison, the collation element results
+ * can not be compared simply by using basic arithmetric operators,
+ * e.g. &lt;, == or &gt;, further processing has to be done. Details
+ * can be found in the ICU
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>. An example of using the CollationElementIterator
+ * for collation ordering comparison is the class
+ * <a href=StringSearch.html> com.ibm.icu.text.StringSearch</a>.</p>
+ *
+ * <p>To construct a CollationElementIterator object, users
+ * call the method getCollationElementIterator() on a
+ * RuleBasedCollator that defines the desired sorting order.</p>
+ *
+ * <p> Example:
+ * <blockquote>
+ * <pre>
+ *  String testString = "This is a test";
+ *  RuleBasedCollator rbc = new RuleBasedCollator("&amp;a&lt;b");
+ *  CollationElementIterator iterator = rbc.getCollationElementIterator(testString);
+ *  int primaryOrder = iterator.IGNORABLE;
+ *  while (primaryOrder != iterator.NULLORDER) {
+ *      int order = iterator.next();
+ *      if (order != iterator.IGNORABLE &&
+ *          order != iterator.NULLORDER) {
+ *          // order is valid, not ignorable and we have not passed the end
+ *          // of the iteration, we do something
+ *          primaryOrder = CollationElementIterator.primaryOrder(order);
+ *          System.out.println("Next primary order 0x" +
+ *                             Integer.toHexString(primaryOrder));
+ *      }
+ *  }
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @see StringSearch
+ * @author Syn Wee Quek
+ * @stable ICU 2.8
+ */
+public final class CollationElementIterator
+{
+  
+    
+    // public data members --------------------------------------------------
+
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when the end or the beginning of the
+     * source string has been reached, and there are no more valid
+     * collation elements to return.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @stable ICU 2.8
+     * @see #next
+     * @see #previous */
+    public final static int NULLORDER = 0xffffffff;
+
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when a collation element result is to be
+     * ignored.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @stable ICU 2.8
+     * @see #next
+     * @see #previous */
+    public static final int IGNORABLE = 0;
+
+    // public methods -------------------------------------------------------
+
+    // public getters -------------------------------------------------------
+
+    /**
+     * <p>Returns the character offset in the source string
+     * corresponding to the next collation element. I.e., getOffset()
+     * returns the position in the source string corresponding to the
+     * collation element that will be returned by the next call to
+     * next(). This value could be any of:
+     * <ul>
+     * <li> The index of the <b>first</b> character corresponding to
+     * the next collation element. (This means that if
+     * <code>setOffset(offset)</code> sets the index in the middle of
+     * a contraction, <code>getOffset()</code> returns the index of
+     * the first character in the contraction, which may not be equal
+     * to the original offset that was set. Hence calling getOffset()
+     * immediately after setOffset(offset) does not guarantee that the
+     * original offset set will be returned.)
+     * <li> If normalization is on, the index of the <b>immediate</b>
+     * subsequent character, or composite character with the first
+     * character, having a combining class of 0.
+     * <li> The length of the source string, if iteration has reached
+     * the end.
+     *</ul>
+     * </p>
+     * @return The character offset in the source string corresponding to the
+     *         collation element that will be returned by the next call to
+     *         next().
+     * @stable ICU 2.8
+     */
+    public int getOffset()
+    {
+        if (m_bufferOffset_ != -1) {
+            if (m_isForwards_) {
+                return m_FCDLimit_;
+            }
+            return m_FCDStart_;
+        }
+        return m_source_.getIndex();
+    }
+
+
+    /**
+     * <p> Returns the maximum length of any expansion sequence that ends with
+     * the specified collation element. If there is no expansion with this
+     * collation element as the last element, returns 1.
+     * </p>
+     * @param ce a collation element returned by previous() or next().
+     * @return the maximum length of any expansion sequence ending
+     *         with the specified collation element.
+     * @stable ICU 2.8
+     */
+    public int getMaxExpansion(int ce)
+    {
+        int start = 0;
+        int limit = m_collator_.m_expansionEndCE_.length;
+        long unsignedce = ce & 0xFFFFFFFFl;
+        while (start < limit - 1) {
+            int mid = start + ((limit - start) >> 1);
+            long midce = m_collator_.m_expansionEndCE_[mid] & 0xFFFFFFFFl;
+            if (unsignedce <= midce) {
+                limit = mid;
+            }
+            else {
+                start = mid;
+            }
+        }
+        int result = 1;
+        if (m_collator_.m_expansionEndCE_[start] == ce) {
+            result = m_collator_.m_expansionEndCEMaxSize_[start];
+        }
+        else if (limit < m_collator_.m_expansionEndCE_.length &&
+                 m_collator_.m_expansionEndCE_[limit] == ce) {
+            result = m_collator_.m_expansionEndCEMaxSize_[limit];
+        }
+        else if ((ce & 0xFFFF) == 0x00C0) {
+            result = 2;
+        }
+        return result;
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * <p> Resets the cursor to the beginning of the string. The next
+     * call to next() or previous() will return the first and last
+     * collation element in the string, respectively.</p>
+     *
+     * <p>If the RuleBasedCollator used by this iterator has had its
+     * attributes changed, calling reset() will reinitialize the
+     * iterator to use the new attributes.</p>
+     *
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        m_source_.setToStart();
+        updateInternalState();
+    }
+
+    /**
+     * <p>Get the next collation element in the source string.</p>
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the next character
+     * in the string".</p>
+     *
+     * <p>This function returns the collation element that the
+     * iterator is currently pointing to, and then updates the
+     * internal pointer to point to the next element.  Previous()
+     * updates the pointer first, and then returns the element. This
+     * means that when you change direction while iterating (i.e.,
+     * call next() and then call previous(), or call previous() and
+     * then call next()), you'll get back the same element twice.</p>
+     *
+     * @return the next collation element or NULLORDER if the end of the
+     *         iteration has been reached.
+     * @stable ICU 2.8
+     */
+    public int next()
+    {
+        m_isForwards_ = true;
+        if (m_CEBufferSize_ > 0) {
+            if (m_CEBufferOffset_ < m_CEBufferSize_) {
+                // if there are expansions left in the buffer, we return it
+                return m_CEBuffer_[m_CEBufferOffset_ ++];
+            }
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+ 
+        int ch_int = nextChar();
+        
+        if (ch_int == UCharacterIterator.DONE) {
+            return NULLORDER;
+        }
+        char ch = (char)ch_int;
+        if (m_collator_.m_isHiragana4_) {
+            /* Codepoints \u3099-\u309C are both Hiragana and Katakana. Set the flag
+             * based on whether the previous codepoint was Hiragana or Katakana.
+             */
+            m_isCodePointHiragana_ = (m_isCodePointHiragana_ && (ch >= 0x3099 && ch <= 0x309C)) || 
+                                     ((ch >= 0x3040 && ch <= 0x309e) && !(ch > 0x3094 && ch < 0x309d));
+        }
+
+        int result = NULLORDER;
+        if (ch <= 0xFF) {
+            // For latin-1 characters we never need to fall back to the UCA
+            // table because all of the UCA data is replicated in the
+            // latinOneMapping array
+            result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+            if (RuleBasedCollator.isSpecial(result)) {
+                result = nextSpecial(m_collator_, result, ch);
+            }
+        }
+        else {
+            result = m_collator_.m_trie_.getLeadValue(ch);
+            //System.out.println(Integer.toHexString(result));
+            if (RuleBasedCollator.isSpecial(result)) {
+                // surrogate leads are handled as special ces
+                result = nextSpecial(m_collator_, result, ch);
+            }
+            if (result == CE_NOT_FOUND_ && RuleBasedCollator.UCA_ != null) {
+                // couldn't find a good CE in the tailoring
+                // if we got here, the codepoint MUST be over 0xFF - so we look
+                // directly in the UCA
+                result = RuleBasedCollator.UCA_.m_trie_.getLeadValue(ch);
+                if (RuleBasedCollator.isSpecial(result)) {
+                    // UCA also gives us a special CE
+                    result = nextSpecial(RuleBasedCollator.UCA_, result, ch);
+                }
+            }
+        }
+        if(result == CE_NOT_FOUND_) { 
+            // maybe there is no UCA, unlikely in Java, but ported for consistency
+            result = nextImplicit(ch); 
+        }
+        return result;
+    }
+
+    /**
+     * <p>Get the previous collation element in the source string.</p>
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the previous
+     * character in the string".</p>
+     *
+     * <p>This function updates the iterator's internal pointer to
+     * point to the collation element preceding the one it's currently
+     * pointing to and then returns that element, while next() returns
+     * the current element and then updates the pointer. This means
+     * that when you change direction while iterating (i.e., call
+     * next() and then call previous(), or call previous() and then
+     * call next()), you'll get back the same element twice.</p>
+     *
+     * @return the previous collation element, or NULLORDER when the start of
+     *             the iteration has been reached.
+     * @stable ICU 2.8
+     */
+    public int previous()
+    {
+        if (m_source_.getIndex() <= 0 && m_isForwards_) {
+            // if iterator is new or reset, we can immediate perform  backwards
+            // iteration even when the offset is not right.
+            m_source_.setToLimit();
+            updateInternalState();
+        }
+        m_isForwards_ = false;
+        int result = NULLORDER;
+        if (m_CEBufferSize_ > 0) {
+            if (m_CEBufferOffset_ > 0) {
+                return m_CEBuffer_[-- m_CEBufferOffset_];
+            }
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+        int ch_int = previousChar();
+        if (ch_int == UCharacterIterator.DONE) {
+            return NULLORDER;
+        }
+        char ch = (char)ch_int;
+        if (m_collator_.m_isHiragana4_) {
+            m_isCodePointHiragana_ = (ch >= 0x3040 && ch <= 0x309f);
+        }
+        if (m_collator_.isContractionEnd(ch) && !isBackwardsStart()) {
+            result = previousSpecial(m_collator_, CE_CONTRACTION_, ch);
+        }
+        else {
+            if (ch <= 0xFF) {
+                result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+            }
+            else {
+                result = m_collator_.m_trie_.getLeadValue(ch);
+            }
+            if (RuleBasedCollator.isSpecial(result)) {
+                result = previousSpecial(m_collator_, result, ch);
+            }
+            if (result == CE_NOT_FOUND_) {
+                if (!isBackwardsStart()
+                    && m_collator_.isContractionEnd(ch)) {
+                    result = CE_CONTRACTION_;
+                }
+                else {
+                    if(RuleBasedCollator.UCA_ != null) {
+                        result = RuleBasedCollator.UCA_.m_trie_.getLeadValue(ch);
+                    }
+                }
+
+                if (RuleBasedCollator.isSpecial(result)) {
+                    if(RuleBasedCollator.UCA_ != null) {                    
+                        result = previousSpecial(RuleBasedCollator.UCA_, result, ch);
+                    }
+                }
+            }
+        }
+        if(result == CE_NOT_FOUND_) {
+            result = previousImplicit(ch);
+        }
+        return result;
+    }
+
+    /**
+     * Return the primary order of the specified collation element,
+     * i.e. the first 16 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 16 bits primary order.
+     * @stable ICU 2.8
+     */
+    public final static int primaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_PRIMARY_MASK_)
+            >>> RuleBasedCollator.CE_PRIMARY_SHIFT_;
+    }
+    /**
+     * Return the secondary order of the specified collation element,
+     * i.e. the 16th to 23th bits, inclusive.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits secondary order
+     * @stable ICU 2.8
+     */
+    public final static int secondaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_SECONDARY_MASK_)
+            >> RuleBasedCollator.CE_SECONDARY_SHIFT_;
+    }
+
+    /**
+     * Return the tertiary order of the specified collation element, i.e. the last
+     * 8 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits tertiary order
+     * @stable ICU 2.8
+     */
+    public final static int tertiaryOrder(int ce)
+    {
+        return ce & RuleBasedCollator.CE_TERTIARY_MASK_;
+    }
+
+    /**
+     * <p> Sets the iterator to point to the collation element
+     * corresponding to the character at the specified offset. The
+     * value returned by the next call to next() will be the collation
+     * element corresponding to the characters at offset.</p>
+     *
+     * <p>If offset is in the middle of a contracting character
+     * sequence, the iterator is adjusted to the start of the
+     * contracting sequence. This means that getOffset() is not
+     * guaranteed to return the same value set by this method.</p>
+     *
+     * <p>If the decomposition mode is on, and offset is in the middle
+     * of a decomposible range of source text, the iterator may not
+     * return a correct result for the next forwards or backwards
+     * iteration.  The user must ensure that the offset is not in the
+     * middle of a decomposible range.</p>
+     *
+     * @param offset the character offset into the original source string to
+     *        set. Note that this is not an offset into the corresponding
+     *        sequence of collation elements.
+     * @stable ICU 2.8
+     */
+    public void setOffset(int offset)
+    {
+        m_source_.setIndex(offset);
+        int ch_int = m_source_.current();
+        char ch = (char)ch_int;
+        if (ch_int != UCharacterIterator.DONE && m_collator_.isUnsafe(ch)) {
+            // if it is unsafe we need to check if it is part of a contraction
+            // or a surrogate character
+            if (UTF16.isTrailSurrogate(ch)) {
+                // if it is a surrogate pair we move up one character
+                char prevch = (char)m_source_.previous();
+                if (!UTF16.isLeadSurrogate(prevch)) {
+                    m_source_.setIndex(offset); // go back to the same index
+                }
+            }
+            else {
+                // could be part of a contraction
+                // backup to a safe point and iterate till we pass offset
+                while (m_source_.getIndex() > 0) {
+                    if (!m_collator_.isUnsafe(ch)) {
+                        break;
+                    }
+                    ch = (char)m_source_.previous();
+                }
+                updateInternalState();
+                int prevoffset = 0;
+                while (m_source_.getIndex() <= offset) {
+                    prevoffset = m_source_.getIndex();
+                    next();
+                }
+                m_source_.setIndex(prevoffset);
+            }
+        }
+        updateInternalState();
+        // direction code to prevent next and previous from returning a 
+        // character if we are already at the ends
+        offset = m_source_.getIndex();
+        if (offset == 0/* m_source_.getBeginIndex() */) {
+            // preventing previous() from returning characters from the end of 
+            // the string again if we are at the beginning
+            m_isForwards_ = false; 
+        }
+        else if (offset == m_source_.getLength()) {
+            // preventing next() from returning characters from the start of 
+            // the string again if we are at the end
+            m_isForwards_ = true;
+        }
+    }
+
+    /**
+     * <p>Set a new source string for iteration, and reset the offset
+     * to the beginning of the text.</p>
+     *
+     * @param source the new source string for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(String source)
+    {
+        m_srcUtilIter_.setText(source);
+        m_source_ = m_srcUtilIter_;
+        updateInternalState();
+    }
+    
+    /**
+     * <p>Set a new source string iterator for iteration, and reset the
+     * offset to the beginning of the text.
+     * </p>
+     * <p>The source iterator's integrity will be preserved since a new copy
+     * will be created for use.</p>
+     * @param source the new source string iterator for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(UCharacterIterator source)
+    {
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        updateInternalState(); 
+    }
+
+    /**
+     * <p>Set a new source string iterator for iteration, and reset the
+     * offset to the beginning of the text.
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(CharacterIterator source)
+    {
+        m_source_ = new CharacterIteratorWrapper(source);
+        m_source_.setToStart();
+        updateInternalState();
+    }
+
+    // public miscellaneous methods -----------------------------------------
+
+    /**
+     * Tests that argument object is equals to this CollationElementIterator.
+     * Iterators are equal if the objects uses the same RuleBasedCollator,
+     * the same source text and have the same current position in iteration.
+     * @param that object to test if it is equals to this
+     *             CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object that)
+    {
+        if (that == this) {
+            return true;
+        }
+        if (that instanceof CollationElementIterator) {
+            CollationElementIterator thatceiter
+                                              = (CollationElementIterator)that;
+            if (!m_collator_.equals(thatceiter.m_collator_)) {
+                return false;
+            }
+            // checks the text 
+            return m_source_.getIndex() == thatceiter.m_source_.getIndex()
+                   && m_source_.getText().equals(
+                                            thatceiter.m_source_.getText());
+        }
+        return false;
+    }
+
+    // package private constructors ------------------------------------------
+
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * string and a RuleBasedCollator. The iterator will walk through
+     * the source string based on the rules defined by the
+     * collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(String source, RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator(source);
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = m_srcUtilIter_;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * character iterator and a RuleBasedCollator. The iterator will
+     * walk through the source string based on the rules defined by
+     * the collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string iterator.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(CharacterIterator source,
+                             RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator();
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = new CharacterIteratorWrapper(source);
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+    
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * character iterator and a RuleBasedCollator. The iterator will
+     * walk through the source string based on the rules defined by
+     * the collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string iterator.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(UCharacterIterator source,
+                             RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator();
+        m_utilStringBuffer_ = new StringBuffer();
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+
+    // package private data members -----------------------------------------
+
+    /**
+     * true if current codepoint was Hiragana
+     */
+    boolean m_isCodePointHiragana_;
+    /**
+     * Position in the original string that starts with a non-FCD sequence
+     */
+    int m_FCDStart_;
+    /**
+     * This is the CE from CEs buffer that should be returned.
+     * Initial value is 0.
+     * Forwards iteration will end with m_CEBufferOffset_ == m_CEBufferSize_,
+     * backwards will end with m_CEBufferOffset_ == 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferOffset_;
+
+    /**
+     * This is the position to which we have stored processed CEs.
+     * Initial value is 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferSize_;
+    static final int CE_NOT_FOUND_ = 0xF0000000;
+    static final int CE_EXPANSION_TAG_ = 1;
+    static final int CE_CONTRACTION_TAG_ = 2;
+    /** 
+     * Collate Digits As Numbers (CODAN) implementation
+     */
+    static final int CE_DIGIT_TAG_ = 13;
+
+    // package private methods ----------------------------------------------
+
+    /**
+     * Sets the collator used.
+     * Internal use, all data members will be reset to the default values
+     * @param collator to set
+     */
+    void setCollator(RuleBasedCollator collator)
+    {
+        m_collator_ = collator;
+        updateInternalState();
+    }
+
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a
+     * preceding call to setOffset().</p>
+     * @param offset new character offset into the original text to set.
+     */
+    void setExactOffset(int offset)
+    {
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+
+    /**
+     * Checks if iterator is in the buffer zone
+     * @return true if iterator is in buffer zone, false otherwise
+     */
+    boolean isInBuffer()
+    {
+        return m_bufferOffset_ > 0;
+    }
+
+   
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a
+     * preceding call to setOffset().</p>
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @param offset to the source
+     */
+    void setText(UCharacterIterator source, int offset)
+    {
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+
+    // private inner class --------------------------------------------------
+
+    /**
+     * Backup data class
+     */
+    private static final class Backup
+    {
+        // protected data members -------------------------------------------
+
+        /**
+         * Backup non FCD sequence limit
+         */
+        protected int m_FCDLimit_;
+        /**
+         * Backup non FCD sequence start
+         */
+        protected int m_FCDStart_;
+        /**
+         * Backup if previous Codepoint is Hiragana quatenary
+         */
+        protected boolean m_isCodePointHiragana_;
+        /**
+         * Backup buffer position
+         */
+        protected int m_bufferOffset_;
+        /**
+         * Backup source iterator offset
+         */
+        protected int m_offset_;
+        /**
+         * Backup buffer contents
+         */
+        protected StringBuffer m_buffer_;
+
+        // protected constructor --------------------------------------------
+
+        /**
+         * Empty constructor
+         */
+        protected Backup()
+        {
+            m_buffer_ = new StringBuffer();
+        }
+    }
+    // end inner class ------------------------------------------------------
+
+    /**
+     * Direction of travel
+     */
+    private boolean m_isForwards_;
+    /**
+     * Source string iterator
+     */
+    private UCharacterIterator m_source_;
+    /**
+     * This is position to the m_buffer_, -1 if iterator is not in m_buffer_
+     */
+    private int m_bufferOffset_;
+    /**
+     * Buffer for temporary storage of normalized characters, discontiguous
+     * characters and Thai characters
+     */
+    private StringBuffer m_buffer_;
+    /**
+     * Position in the original string to continue forward FCD check from.
+     */
+    private int m_FCDLimit_;
+    /**
+     * The collator this iterator is based on
+     */
+    private RuleBasedCollator m_collator_;
+    /**
+     * true if Hiragana quatenary is on
+     */
+    //private boolean m_isHiragana4_;
+    /**
+     * CE buffer
+     */
+    private int m_CEBuffer_[];
+    /**
+     * In reality we should not have to deal with expansion sequences longer
+     * then 16. However this value can be change if a bigger buffer is needed.
+     * Note, if the size is change to too small a number, BIG trouble.
+     * Reasonable small value is around 10, if there's no Arabic or other
+     * funky collations that have long expansion sequence. This is the longest
+     * expansion sequence this can handle without bombing out.
+     */
+    private static final int CE_BUFFER_INIT_SIZE_ = 512;
+    /**
+     * Backup storage for special processing inner cases
+     */
+    private Backup m_utilSpecialBackUp_;
+    /**
+     * Backup storage in special processing entry state
+     */
+    private Backup m_utilSpecialEntryBackUp_;
+    /**
+     * Backup storage in special processing discontiguous state
+     */
+    private Backup m_utilSpecialDiscontiguousBackUp_;
+    /**
+     * Utility
+     */
+    private StringUCharacterIterator m_srcUtilIter_;
+    private StringBuffer m_utilStringBuffer_;
+    private StringBuffer m_utilSkippedBuffer_;
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * One character before the first non-zero combining class character
+     */
+    private static final int FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0xC0;
+    /**
+     * One character before the first character with leading non-zero combining
+     * class
+     */
+    private static final int LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0x300;
+    /**
+     * Mask for the last byte
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Shift value for the second last byte
+     */
+    private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+
+    // special ce values and tags -------------------------------------------
+    
+//    private static final int CE_EXPANSION_ = 0xF1000000;
+    private static final int CE_CONTRACTION_ = 0xF2000000;
+    /**
+     * Indicates the last ce has been consumed. Compare with NULLORDER.
+     * NULLORDER is returned if error occurs.
+     */
+/*    private static final int CE_NO_MORE_CES_ = 0x00010101;
+    private static final int CE_NO_MORE_CES_PRIMARY_ = 0x00010000;
+    private static final int CE_NO_MORE_CES_SECONDARY_ = 0x00000100;
+    private static final int CE_NO_MORE_CES_TERTIARY_ = 0x00000001;
+*/
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    /**
+     * Charset processing, not yet implemented
+     */
+    private static final int CE_CHARSET_TAG_ = 4;
+    /**
+     * AC00-D7AF
+     */
+    private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /**
+     * D800-DBFF
+     */
+    private static final int CE_LEAD_SURROGATE_TAG_ = 7;
+    /**
+     * DC00-DFFF
+     */
+    private static final int CE_TRAIL_SURROGATE_TAG_ = 8;
+    /**
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */
+    private static final int CE_CJK_IMPLICIT_TAG_ = 9;
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    static final int CE_SPEC_PROC_TAG_ = 11;
+    /**
+     * This is a 3 byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully).
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12;
+                        
+//    private static final int CE_CE_TAGS_COUNT = 14;
+    private static final int CE_BYTE_COMMON_ = 0x05;
+
+    // end special ce values and tags ---------------------------------------
+
+    private static final int HANGUL_SBASE_ = 0xAC00;
+    private static final int HANGUL_LBASE_ = 0x1100;
+    private static final int HANGUL_VBASE_ = 0x1161;
+    private static final int HANGUL_TBASE_ = 0x11A7;
+    private static final int HANGUL_VCOUNT_ = 21;
+    private static final int HANGUL_TCOUNT_ = 28;
+
+    // CJK stuff ------------------------------------------------------------
+
+/*    private static final int CJK_BASE_ = 0x4E00;
+    private static final int CJK_LIMIT_ = 0x9FFF+1;
+    private static final int CJK_COMPAT_USED_BASE_ = 0xFA0E;
+    private static final int CJK_COMPAT_USED_LIMIT_ = 0xFA2F + 1;
+    private static final int CJK_A_BASE_ = 0x3400;
+    private static final int CJK_A_LIMIT_ = 0x4DBF + 1;
+    private static final int CJK_B_BASE_ = 0x20000;
+    private static final int CJK_B_LIMIT_ = 0x2A6DF + 1;
+    private static final int NON_CJK_OFFSET_ = 0x110000;
+*/
+    private static final boolean DEBUG  =  ICUDebug.enabled("collator");
+    
+    // private methods ------------------------------------------------------
+
+    /**
+     * Reset the iterator internally
+     */
+    private void updateInternalState()
+    {
+        m_isCodePointHiragana_ = false;
+        m_buffer_.setLength(0);
+        m_bufferOffset_ = -1;
+        m_CEBufferOffset_ = 0;
+        m_CEBufferSize_ = 0;
+        m_FCDLimit_ = -1;
+        m_FCDStart_ = m_source_.getLength();
+        //m_isHiragana4_ = m_collator_.m_isHiragana4_;
+        m_isForwards_ = true;
+    }
+
+    /**
+     * Backup the current internal state
+     * @param backup object to store the data
+     */
+    private void backupInternalState(Backup backup)
+    {
+        backup.m_offset_ = m_source_.getIndex();
+        backup.m_FCDLimit_ = m_FCDLimit_;
+        backup.m_FCDStart_ = m_FCDStart_;
+        backup.m_isCodePointHiragana_ = m_isCodePointHiragana_;
+        backup.m_bufferOffset_ = m_bufferOffset_;
+        backup.m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(ICUDebug.isJDK14OrHigher){
+                backup.m_buffer_.append(m_buffer_);
+            }else{
+                backup.m_buffer_.append(m_buffer_.toString());
+            }
+        }
+    }
+
+    /**
+     * Update the iterator internally with backed-up state
+     * @param backup object that stored the data
+     */
+    private void updateInternalState(Backup backup)
+    {
+        m_source_.setIndex(backup.m_offset_);
+        m_isCodePointHiragana_ = backup.m_isCodePointHiragana_;
+        m_bufferOffset_ = backup.m_bufferOffset_;
+        m_FCDLimit_ = backup.m_FCDLimit_;
+        m_FCDStart_ = backup.m_FCDStart_;
+        m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            m_buffer_.append(backup.m_buffer_.toString());
+        }
+    }
+
+    /**
+     * A fast combining class retrieval system.
+     * @param ch UTF16 character
+     * @return combining class of ch
+     */
+    private int getCombiningClass(int ch)
+    {
+        if (ch >= LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ &&
+            m_collator_.isUnsafe((char)ch) || ch > 0xFFFF) {
+            return NormalizerImpl.getCombiningClass(ch);
+        }
+        return 0;
+    }
+
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into
+     * the buffer.
+     * Source offsets points to the current processing character.
+     * </p>
+     */
+    private void normalize()
+    {
+        int size = m_FCDLimit_ - m_FCDStart_;
+        m_buffer_.setLength(0);
+        m_source_.setIndex(m_FCDStart_);
+        for (int i = 0; i < size; i ++) {
+            m_buffer_.append((char)m_source_.next());
+        }
+        String decomp = Normalizer.decompose(m_buffer_.toString(), false);
+        m_buffer_.setLength(0);
+        m_buffer_.append(decomp);
+        m_bufferOffset_ = 0;
+    }
+
+    /**
+     * <p>Incremental FCD check and normalization. Gets the next base character
+     * position and determines if the in-between characters needs normalization.
+     * </p>
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The leading combining class from the current character is 0 or the
+     *     trailing combining class of the previous char was zero.
+     * </ul>
+     * Incoming source offsets points to the current processing character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheck(char ch, int offset)
+    {
+        boolean result = true;
+
+        // Get the trailing combining class of the current character.
+        // If it's zero, we are OK.
+        m_FCDStart_ = offset;
+        m_source_.setIndex(offset);
+        // trie access
+        char fcd = NormalizerImpl.getFCD16(ch);
+        if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+            m_source_.next();
+            ch = (char)m_source_.current(); 
+            // UCharacterIterator.DONE has 0 fcd
+            if (UTF16.isTrailSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+            } else {
+                fcd = 0;
+            }
+        }
+
+        int prevTrailCC = fcd & LAST_BYTE_MASK_;
+
+        if (prevTrailCC != 0) {
+            // The current char has a non-zero trailing CC. Scan forward until
+            // we find a char with a leading cc of zero.
+            while (true) {
+                m_source_.next();
+                int ch_int = m_source_.current();
+                if (ch_int == UCharacterIterator.DONE) {
+                    break;
+                }
+                ch = (char)ch_int;
+                // trie access
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+                    m_source_.next();
+                    ch = (char)m_source_.current();
+                    if (UTF16.isTrailSurrogate(ch)) {
+                        fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+                    } else {
+                        fcd = 0;
+                    }
+                }
+                int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+                if (leadCC == 0) {
+                    // this is a base character, we stop the FCD checks
+                    break;
+                }
+
+                if (leadCC < prevTrailCC) {
+                    result = false;
+                }
+
+                prevTrailCC = fcd & LAST_BYTE_MASK_;
+            }
+        }
+        m_FCDLimit_ = m_source_.getIndex();
+        m_source_.setIndex(m_FCDStart_);
+        m_source_.next();
+        return result;
+    }
+
+    /**
+     * <p>Method tries to fetch the next character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the next character.</p>
+     * @return next fcd character
+     */
+    private int nextChar()
+    {
+        int result;
+
+        // loop handles the next character whether it is in the buffer or not.
+        if (m_bufferOffset_ < 0) {
+            // we're working on the source and not normalizing. fast path.
+            // note Thai pre-vowel reordering uses buffer too
+            result = m_source_.current();
+        }
+        else {
+            // we are in the buffer, buffer offset will never be 0 here
+            if (m_bufferOffset_ >= m_buffer_.length()) {
+                // Null marked end of buffer, revert to the source string and
+                // loop back to top to try again to get a character.
+                m_source_.setIndex(m_FCDLimit_);
+                m_bufferOffset_ = -1;
+                m_buffer_.setLength(0);
+                return nextChar();
+            }
+            return m_buffer_.charAt(m_bufferOffset_ ++);
+        }
+        int startoffset = m_source_.getIndex();
+        if (result < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_
+            // Fast fcd safe path. trail combining class == 0.
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION
+            || m_bufferOffset_ >= 0 || m_FCDLimit_ > startoffset) {
+            // skip the fcd checks
+            m_source_.next();
+            return result;
+        }
+
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // We need to peek at the next character in order to tell if we are
+            // FCD
+            m_source_.next();
+            int next = m_source_.current();
+            if (next == UCharacterIterator.DONE
+                || next < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+                return result; // end of source string and if next character
+                // starts with a base character is always fcd.
+            }
+        }
+
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheck((char)result, startoffset)) {
+            normalize();
+            result = m_buffer_.charAt(0);
+            m_bufferOffset_ = 1;
+        }
+        return result;
+    }
+
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into
+     * the buffer.
+     * Source offsets points to the current processing character.</p>
+     */
+    private void normalizeBackwards()
+    {
+        normalize();
+        m_bufferOffset_ = m_buffer_.length();
+    }
+
+    /**
+     * <p>Incremental backwards FCD check and normalization. Gets the previous
+     * base character position and determines if the in-between characters
+     * needs normalization.
+     * </p>
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The trailing combining class from the current character is 0 or the
+     *     leading combining class of the next char was zero.
+     * </ul>
+     * Input source offsets points to the previous character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheckBackwards(char ch, int offset)
+    {
+        boolean result = true;
+        char fcd = 0;
+        m_FCDLimit_ = offset + 1;
+        m_source_.setIndex(offset);
+        if (!UTF16.isSurrogate(ch)) {
+            fcd = NormalizerImpl.getFCD16(ch);
+        }
+        else if (UTF16.isTrailSurrogate(ch) && m_FCDLimit_ > 0) {
+            // note trail surrogate characters gets 0 fcd
+            char trailch = ch;
+            ch = (char)m_source_.previous();
+            if (UTF16.isLeadSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd,
+                                                                   trailch);
+                }
+            }
+            else {
+                fcd = 0; // unpaired surrogate
+            }
+        }
+
+        int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        // The current char has a non-zero leading combining class.
+        // Scan backward until we find a char with a trailing cc of zero.
+
+        while (leadCC != 0) {
+            offset = m_source_.getIndex();
+            if (offset == 0) {
+                break;
+            }
+            ch = (char)m_source_.previous();
+            if (!UTF16.isSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+            }
+            else if (UTF16.isTrailSurrogate(ch) && m_source_.getIndex() > 0) {
+                char trail = ch;
+                ch = (char)m_source_.previous();
+                if (UTF16.isLeadSurrogate(ch)) {
+                    fcd = NormalizerImpl.getFCD16(ch);
+                }
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, trail);
+                }
+            }
+            else {
+                fcd = 0; // unpaired surrogate
+            }
+            int prevTrailCC = fcd & LAST_BYTE_MASK_;
+            if (leadCC < prevTrailCC) {
+                result = false;
+            }
+            leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        }
+
+        // storing character with 0 lead fcd or the 1st accent with a base
+        // character before it
+        if (fcd == 0) {
+            m_FCDStart_ = offset;
+        }
+        else {
+            m_FCDStart_ = m_source_.getIndex();
+        }
+        m_source_.setIndex(m_FCDLimit_);
+        return result;
+    }
+
+    /**
+     * <p>Method tries to fetch the previous character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the current character.</p>
+     * @return previous fcd character
+     */
+    private int previousChar()
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_bufferOffset_ --;
+            if (m_bufferOffset_ >= 0) {
+                return m_buffer_.charAt(m_bufferOffset_);
+            }
+            else {
+                // At the start of buffer, route back to string.
+                m_buffer_.setLength(0);
+                if (m_FCDStart_ == 0) {
+                    m_FCDStart_ = -1;
+                    m_source_.setIndex(0);
+                    return UCharacterIterator.DONE;
+                }
+                else {
+                    m_FCDLimit_ = m_FCDStart_;
+                    m_source_.setIndex(m_FCDStart_);
+                    return previousChar();
+                }
+            }
+        }
+        int result = m_source_.previous();
+        int startoffset = m_source_.getIndex();
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION
+            || m_FCDStart_ <= startoffset || m_source_.getIndex() == 0) {
+            return result;
+        }
+        int ch = m_source_.previous();
+        if (ch < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // if previous character is FCD
+            m_source_.next();
+            return result;
+        }
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheckBackwards((char)result, startoffset)) {
+            normalizeBackwards();
+            m_bufferOffset_ --;
+            result = m_buffer_.charAt(m_bufferOffset_);
+        }
+        else {
+            // fcd checks alway reset m_source_ to the limit of the FCD
+            m_source_.setIndex(startoffset);
+        }
+        return result;
+    }
+
+    /**
+     * Determines if it is at the start of source iteration
+     * @return true if iterator at the start, false otherwise
+     */
+    private final boolean isBackwardsStart()
+    {
+        return (m_bufferOffset_ < 0 && m_source_.getIndex() == 0)
+            || (m_bufferOffset_ == 0 && m_FCDStart_ <= 0);
+    }
+
+    /**
+     * Checks if iterator is at the end of its source string.
+     * @return true if it is at the end, false otherwise
+     */
+    private final boolean isEnd()
+    {
+        if (m_bufferOffset_ >= 0) {
+            if (m_bufferOffset_ != m_buffer_.length()) {
+                return false;
+            }
+            else {
+                // at end of buffer. check if fcd is at the end
+                return m_FCDLimit_ == m_source_.getLength();
+            }
+        }
+        return m_source_.getLength() == m_source_.getIndex();
+    }
+
+    /**
+     * <p>Special CE management for surrogates</p>
+     * <p>Lead surrogate is encountered. CE to be retrieved by using the
+     * following code unit. If next character is a trail surrogate, both
+     * characters will be combined to retrieve the CE, otherwise completely
+     * ignorable (UCA specification) is returned.</p>
+     * @param collator collator to use
+     * @param ce current CE
+     * @param trail character
+     * @return next CE for the surrogate characters
+     */
+    private final int nextSurrogate(RuleBasedCollator collator, int ce,
+                                    char trail)
+    {
+        if (!UTF16.isTrailSurrogate(trail)) {
+            updateInternalState(m_utilSpecialBackUp_);
+            return IGNORABLE;
+        }
+        // TODO: CE contain the data from the previous CE + the mask.
+        // It should at least be unmasked
+        int result = collator.m_trie_.getTrailValue(ce, trail);
+        if (result == CE_NOT_FOUND_) {
+            updateInternalState(m_utilSpecialBackUp_);
+        }
+        return result;
+    }
+
+    /**
+     * Gets the CE expansion offset
+     * @param collator current collator
+     * @param ce ce to test
+     * @return expansion offset
+     */
+    private int getExpansionOffset(RuleBasedCollator collator, int ce)
+    {
+        return ((ce & 0xFFFFF0) >> 4) - collator.m_expansionOffset_;
+    }
+
+
+    /**
+     * Gets the contraction ce offset
+     * @param collator current collator
+     * @param ce current ce
+     * @return contraction offset
+     */
+    private int getContractionOffset(RuleBasedCollator collator, int ce)
+    {
+        return (ce & 0xFFFFFF) - collator.m_contractionOffset_;
+    }
+
+    /**
+     * Checks if CE is a special tag CE
+     * @param ce to check
+     * @return true if CE is a special tag CE, false otherwise
+     */
+    private boolean isSpecialPrefixTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) &&
+            RuleBasedCollator.getTag(ce) == CE_SPEC_PROC_TAG_;
+    }
+
+    /**
+     * <p>Special processing getting a CE that is preceded by a certain
+     * prefix.</p>
+     * <p>Used for optimizing Japanese length and iteration marks. When a
+     * special processing tag is encountered, iterate backwards to see if
+     * there's a match.</p>
+     * <p>Contraction tables are used, prefix data is stored backwards in the
+     * table.</p>
+     * @param collator collator to use
+     * @param ce current ce
+     * @param entrybackup entry backup iterator status
+     * @return next collation element
+     */
+    private int nextSpecialPrefix(RuleBasedCollator collator, int ce,
+                                  Backup entrybackup)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        updateInternalState(entrybackup);
+        previousChar();
+        // We want to look at the character where we entered
+
+        while (true) {
+            // This loop will run once per source string character, for as
+            // long as we are matching a potential contraction sequence
+            // First we position ourselves at the begining of contraction
+            // sequence
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char previous = (char)previousChar();
+            while (previous > collator.m_contractionIndex_[offset]) {
+                // contraction characters are ordered, skip smaller characters
+                offset ++;
+            }
+
+            if (previous == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the table.
+                // Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // Source string char was not in the table, prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+
+            if (!isSpecialPrefixTag(ce)) {
+                // The source string char was in the contraction table, and
+                // the corresponding CE is not a prefix CE. We found the
+                // prefix, break out of loop, this CE will end up being
+                // returned. This is the normal way out of prefix handling
+                // when the source actually contained the prefix.
+                break;
+            }
+        }
+        if (ce != CE_NOT_FOUND_) {
+            // we found something and we can merilly continue
+            updateInternalState(m_utilSpecialBackUp_);
+        }
+        else { // prefix search was a failure, we have to backup all the way to
+            // the start
+            updateInternalState(entrybackup);
+        }
+        return ce;
+    }
+
+    /**
+     * Checks if the ce is a contraction tag
+     * @param ce ce to check
+     * @return true if ce is a contraction tag, false otherwise
+     */
+    private boolean isContractionTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) &&
+            RuleBasedCollator.getTag(ce) == CE_CONTRACTION_TAG_;
+    }
+
+    /**
+     * Method to copy skipped characters into the buffer and sets the fcd
+     * position. To ensure that the skipped characters are considered later,
+     * we need to place it in the appropriate position in the buffer and
+     * reassign the source index. simple case if index reside in string,
+     * simply copy to buffer and fcdposition = pos, pos = start of buffer.
+     * if pos in normalization buffer, we'll insert the copy infront of pos
+     * and point pos to the start of the buffer. why am i doing these copies?
+     * well, so that the whole chunk of codes in the getNextCE,
+     * ucol_prv_getSpecialCE does not require any changes, which will be
+     * really painful.
+     * @param skipped character buffer
+     */
+    private void setDiscontiguous(StringBuffer skipped)
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_buffer_.replace(0, m_bufferOffset_, skipped.toString());
+        }
+        else {
+            m_FCDLimit_ = m_source_.getIndex();
+            m_buffer_.setLength(0);
+            m_buffer_.append(skipped.toString());
+        }
+
+        m_bufferOffset_ = 0;
+    }
+
+    /**
+     * Returns the current character for forward iteration
+     * @return current character
+     */
+    private int currentChar()
+    {
+        if (m_bufferOffset_ < 0) {
+            m_source_.previous();
+            return m_source_.next();
+        }
+
+        // m_bufferOffset_ is never 0 in normal circumstances except after a
+        // discontiguous contraction since it is always returned and moved
+        // by 1 when we do nextChar()
+        return m_buffer_.charAt(m_bufferOffset_ - 1);
+    }
+
+    /**
+     * Method to get the discontiguous collation element within the source.
+     * Note this function will set the position to the appropriate places.
+     * Passed in character offset points to the second combining character
+     * after the start character.
+     * @param collator current collator used
+     * @param entryoffset index to the start character in the contraction table
+     * @return discontiguous collation element offset
+     */
+    private int nextDiscontiguous(RuleBasedCollator collator, int entryoffset)
+    {
+        int offset = entryoffset;
+        boolean multicontraction = false;
+        // since it will be stuffed into this iterator and ran over again
+        if (m_utilSkippedBuffer_ == null) {
+            m_utilSkippedBuffer_ = new StringBuffer();
+        }
+        else {
+            m_utilSkippedBuffer_.setLength(0);
+        }
+        char ch = (char)currentChar();
+        m_utilSkippedBuffer_.append((char)currentChar());
+        // accent after the first character
+        if (m_utilSpecialDiscontiguousBackUp_ == null) {
+            m_utilSpecialDiscontiguousBackUp_ = new Backup();
+        }
+        backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+        char nextch = ch;
+        while (true) {
+            ch = nextch;
+            int ch_int = nextChar();
+            nextch = (char)ch_int;
+            if (ch_int == UCharacterIterator.DONE
+                || getCombiningClass(nextch) == 0) {
+                // if there are no more accents to move around
+                // we don't have to shift previousChar, since we are resetting
+                // the offset later
+                if (multicontraction) {
+                    if (ch_int != UCharacterIterator.DONE) {
+                        previousChar(); // backtrack
+                    }
+                    setDiscontiguous(m_utilSkippedBuffer_);
+                    return collator.m_contractionCE_[offset];
+                }
+                break;
+            }
+
+            offset ++; // skip the combining class offset
+            while ((offset < collator.m_contractionIndex_.length) &&
+                   (nextch > collator.m_contractionIndex_[offset])) {
+                offset ++;
+            }
+
+            int ce = CE_NOT_FOUND_;
+            if ( offset >= collator.m_contractionIndex_.length)  {
+                break;
+            }
+            if ( nextch != collator.m_contractionIndex_[offset]
+                 || getCombiningClass(nextch) == getCombiningClass(ch)) {
+                    // unmatched or blocked character
+                if ( (m_utilSkippedBuffer_.length()!= 1) ||
+                     ((m_utilSkippedBuffer_.charAt(0)!= nextch) &&
+                      (m_bufferOffset_<0) )) { // avoid push to skipped buffer twice
+                    m_utilSkippedBuffer_.append(nextch);
+                }
+                offset = entryoffset;  // Restore the offset before checking next character.
+                continue;
+            }
+            else {
+                ce = collator.m_contractionCE_[offset];
+            }
+
+            if (ce == CE_NOT_FOUND_) {
+                break;
+            }
+            else if (isContractionTag(ce)) {
+                // this is a multi-contraction
+                offset = getContractionOffset(collator, ce);
+                if (collator.m_contractionCE_[offset] != CE_NOT_FOUND_) {
+                    multicontraction = true;
+                    backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+                }
+            }
+            else {
+                setDiscontiguous(m_utilSkippedBuffer_);
+                return ce;
+            }
+        }
+
+        updateInternalState(m_utilSpecialDiscontiguousBackUp_);
+        // backup is one forward of the base character, we need to move back
+        // one more
+        previousChar();
+        return collator.m_contractionCE_[entryoffset];
+    }
+
+    /**
+     * Gets the next contraction ce
+     * @param collator collator to use
+     * @param ce current ce
+     * @return ce of the next contraction
+     */
+    private int nextContraction(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        int entryce = collator.m_contractionCE_[getContractionOffset(collator, ce)]; //CE_NOT_FOUND_;
+        while (true) {
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;
+
+            if (isEnd()) {
+                ce = collator.m_contractionCE_[offset];
+                if (ce == CE_NOT_FOUND_) {
+                    // back up the source over all the chars we scanned going
+                    // into this contraction.
+                    ce = entryce;
+                    updateInternalState(m_utilSpecialBackUp_);
+                }
+                break;
+            }
+
+            // get the discontiguos maximum combining class
+            int maxCC = (collator.m_contractionIndex_[offset] & 0xFF);
+            // checks if all characters have the same combining class
+            byte allSame = (byte)(collator.m_contractionIndex_[offset] >> 8);
+            char ch = (char)nextChar();
+            offset ++;
+            while (ch > collator.m_contractionIndex_[offset]) {
+                // contraction characters are ordered, skip all smaller
+                offset ++;
+            }
+
+            if (ch == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the contraction table.
+                //  Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // Source string char was not in contraction table.
+                // Unless it is a discontiguous contraction, we are done
+                int miss = ch;
+                if(UTF16.isLeadSurrogate(ch)) { // in order to do the proper detection, we
+                    // need to see if we're dealing with a supplementary
+                    miss = UCharacterProperty.getRawSupplementary(ch, (char) nextChar());
+                  }
+                int sCC;
+                if (maxCC == 0 || (sCC = getCombiningClass(miss)) == 0
+                    || sCC > maxCC || (allSame != 0 && sCC == maxCC) ||
+                    isEnd()) {
+                    // Contraction can not be discontiguous, back up by one
+                    previousChar();
+                    if(miss > 0xFFFF) {
+                        previousChar();
+                    }
+                    ce = collator.m_contractionCE_[entryoffset];
+                }
+                else {
+                    // Contraction is possibly discontiguous.
+                    // find the next character if ch is not a base character
+                    int ch_int = nextChar();
+                    if (ch_int != UCharacterIterator.DONE) {
+                        previousChar();
+                    }
+                    char nextch = (char)ch_int;
+                    if (getCombiningClass(nextch) == 0) {
+                        previousChar();
+                        if(miss > 0xFFFF) {
+                            previousChar();
+                        }    
+                        // base character not part of discontiguous contraction
+                        ce = collator.m_contractionCE_[entryoffset];
+                    }
+                    else {
+                        ce = nextDiscontiguous(collator, entryoffset);
+                    }
+                }
+            }
+
+            if (ce == CE_NOT_FOUND_) {
+                // source did not match the contraction, revert back original
+                updateInternalState(m_utilSpecialBackUp_);
+                ce = entryce;
+                break;
+            }
+
+            // source was a contraction
+            if (!isContractionTag(ce)) {
+                break;
+            }
+
+            // ccontinue looping to check for the remaining contraction.
+            if (collator.m_contractionCE_[entryoffset] != CE_NOT_FOUND_) {
+                // there are further contractions to be performed, so we store
+                // the so-far completed ce, so that if we fail in the next
+                // round we just return this one.
+                entryce = collator.m_contractionCE_[entryoffset];
+                backupInternalState(m_utilSpecialBackUp_);
+                if (m_utilSpecialBackUp_.m_bufferOffset_ >= 0) {
+                    m_utilSpecialBackUp_.m_bufferOffset_ --;
+                }
+                else {
+                    m_utilSpecialBackUp_.m_offset_ --;
+                }
+            }
+        }
+        return ce;
+    }
+
+    /**
+     * Gets the next ce for long primaries, stuffs the rest of the collation
+     * elements into the ce buffer
+     * @param ce current ce
+     * @return next ce
+     */
+    private int nextLongPrimary(int ce)
+    {
+        m_CEBuffer_[1] = ((ce & 0xFF) << 24)
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        m_CEBuffer_[0] = ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) |
+            CE_BYTE_COMMON_;
+        return m_CEBuffer_[0];
+    }
+
+    /**
+     * Gets the number of expansion
+     * @param ce current ce
+     * @return number of expansion
+     */
+    private int getExpansionCount(int ce)
+    {
+        return ce & 0xF;
+    }
+
+    /**
+     * Gets the next expansion ce and stuffs the rest of the collation elements
+     * into the ce buffer
+     * @param collator current collator
+     * @param ce current ce
+     * @return next expansion ce
+     */
+    private int nextExpansion(RuleBasedCollator collator, int ce)
+    {
+        // NOTE: we can encounter both continuations and expansions in an
+        // expansion!
+        // I have to decide where continuations are going to be dealt with
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce);
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = collator.m_expansion_[offset];
+        if (m_CEBufferSize_ != 0) {
+            // if there are less than 16 elements in expansion
+            for (int i = 1; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+        }
+        else {
+            // ce are terminated
+            m_CEBufferSize_ = 1;
+            while (collator.m_expansion_[offset] != 0) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_expansion_[++ offset];
+            }
+        }
+        // in case of one element expansion, we 
+        // want to immediately return CEpos
+        if (m_CEBufferSize_ == 1) {
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+        return m_CEBuffer_[0];
+    }
+    
+    /**
+     * Gets the next digit ce
+     * @param collator current collator
+     * @param ce current collation element
+     * @param cp current codepoint
+     * @return next digit ce
+     */
+    private int nextDigit(RuleBasedCollator collator, int ce, int cp)
+    {
+        // We do a check to see if we want to collate digits as numbers; 
+        // if so we generate a custom collation key. Otherwise we pull out 
+        // the value stored in the expansion table.
+
+        if (m_collator_.m_isNumericCollation_){
+            int collateVal = 0;
+            int trailingZeroIndex = 0;
+            boolean nonZeroValReached = false;
+
+            // I just need a temporary place to store my generated CEs.
+            // icu4c uses a unsigned byte array, i'll use a stringbuffer here
+            // to avoid dealing with the sign problems and array allocation
+            // clear and set initial string buffer length
+            m_utilStringBuffer_.setLength(3);
+        
+            // We parse the source string until we hit a char that's NOT a 
+            // digit.
+            // Use this u_charDigitValue. This might be slow because we have 
+            // to handle surrogates...
+            int digVal = UCharacter.digit(cp); 
+            // if we have arrived here, we have already processed possible 
+            // supplementaries that trigered the digit tag -
+            // all supplementaries are marked in the UCA.
+            // We  pad a zero in front of the first element anyways. 
+            // This takes care of the (probably) most common case where 
+            // people are sorting things followed by a single digit
+            int digIndx = 1;
+            for (;;) {
+                // Make sure we have enough space.
+                if (digIndx >= ((m_utilStringBuffer_.length() - 2) << 1)) {
+                    m_utilStringBuffer_.setLength(m_utilStringBuffer_.length() 
+                                                  << 1);
+                }
+                // Skipping over leading zeroes.        
+                if (digVal != 0 || nonZeroValReached) {
+                    if (digVal != 0 && !nonZeroValReached) {
+                        nonZeroValReached = true;
+                    }    
+                    // We parse the digit string into base 100 numbers 
+                    // (this fits into a byte).
+                    // We only add to the buffer in twos, thus if we are 
+                    // parsing an odd character, that serves as the 
+                    // 'tens' digit while the if we are parsing an even 
+                    // one, that is the 'ones' digit. We dumped the 
+                    // parsed base 100 value (collateVal) into a buffer. 
+                    // We multiply each collateVal by 2 (to give us room) 
+                    // and add 5 (to avoid overlapping magic CE byte 
+                    // values). The last byte we subtract 1 to ensure it is 
+                    // less than all the other bytes.
+                    if (digIndx % 2 == 1) {
+                        collateVal += digVal;  
+                        // This removes trailing zeroes.
+                        if (collateVal == 0 && trailingZeroIndex == 0) {
+                            trailingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                        }
+                        else if (trailingZeroIndex != 0) {
+                            trailingZeroIndex = 0;
+                        }
+                        m_utilStringBuffer_.setCharAt(
+                                            ((digIndx - 1) >>> 1) + 2,
+                                            (char)((collateVal << 1) + 6));
+                        collateVal = 0;
+                    }
+                    else {
+                        // We drop the collation value into the buffer so if 
+                        // we need to do a "front patch" we don't have to 
+                        // check to see if we're hitting the last element.
+                        collateVal = digVal * 10;
+                        m_utilStringBuffer_.setCharAt((digIndx >>> 1) + 2, 
+                                                (char)((collateVal << 1) + 6));
+                    }
+                    digIndx ++;
+                }
+            
+                // Get next character.
+                if (!isEnd()){
+                    backupInternalState(m_utilSpecialBackUp_);
+                    int char32 = nextChar();
+                    char ch = (char)char32;
+                    if (UTF16.isLeadSurrogate(ch)){
+                        if (!isEnd()) {
+                            char trail = (char)nextChar();
+                            if (UTF16.isTrailSurrogate(trail)) {
+                               char32 = UCharacterProperty.getRawSupplementary(
+                                                                   ch, trail);
+                            } 
+                            else {
+                                goBackOne();
+                            }
+                        }
+                    }
+                    
+                    digVal = UCharacter.digit(char32);
+                    if (digVal == -1) {
+                        // Resetting position to point to the next unprocessed 
+                        // char. We overshot it when doing our test/set for 
+                        // numbers.
+                        updateInternalState(m_utilSpecialBackUp_);
+                        break;
+                    }
+                } 
+                else {
+                    break;
+                }
+            }
+        
+            if (nonZeroValReached == false){
+                digIndx = 2;
+                m_utilStringBuffer_.setCharAt(2, (char)6);
+            }
+        
+            int endIndex = trailingZeroIndex != 0 ? trailingZeroIndex 
+                                             : (digIndx >>> 1) + 2;              
+            if (digIndx % 2 != 0){
+                // We missed a value. Since digIndx isn't even, stuck too many 
+                // values into the buffer (this is what we get for padding the 
+                // first byte with a zero). "Front-patch" now by pushing all 
+                // nybbles forward.
+                // Doing it this way ensures that at least 50% of the time 
+                // (statistically speaking) we'll only be doing a single pass 
+                // and optimizes for strings with single digits. I'm just 
+                // assuming that's the more common case.
+                for (int i = 2; i < endIndex; i ++){
+                    m_utilStringBuffer_.setCharAt(i, 
+                        (char)((((((m_utilStringBuffer_.charAt(i) - 6) >>> 1) 
+                                  % 10) * 10) 
+                                 + (((m_utilStringBuffer_.charAt(i + 1) - 6) 
+                                      >>> 1) / 10) << 1) + 6));
+                }
+                -- digIndx;
+            }
+        
+            // Subtract one off of the last byte. 
+            m_utilStringBuffer_.setCharAt(endIndex - 1, 
+                         (char)(m_utilStringBuffer_.charAt(endIndex - 1) - 1));            
+                
+            // We want to skip over the first two slots in the buffer. 
+            // The first slot is reserved for the header byte CODAN_PLACEHOLDER. 
+            // The second slot is for the sign/exponent byte: 
+            // 0x80 + (decimalPos/2) & 7f.
+            m_utilStringBuffer_.setCharAt(0, (char)RuleBasedCollator.CODAN_PLACEHOLDER);
+            m_utilStringBuffer_.setCharAt(1, 
+                                     (char)(0x80 + ((digIndx >>> 1) & 0x7F)));
+        
+            // Now transfer the collation key to our collIterate struct.
+            // The total size for our collation key is endIndx bumped up to the next largest even value divided by two.
+            ce = (((m_utilStringBuffer_.charAt(0) << 8)
+                       // Primary weight 
+                       | m_utilStringBuffer_.charAt(1)) 
+                                    << RuleBasedCollator.CE_PRIMARY_SHIFT_)
+                       //  Secondary weight 
+                       | (RuleBasedCollator.BYTE_COMMON_ 
+                          << RuleBasedCollator.CE_SECONDARY_SHIFT_) 
+                       | RuleBasedCollator.BYTE_COMMON_; // Tertiary weight.
+            int i = 2; // Reset the index into the buffer.
+            
+            m_CEBuffer_[0] = ce;
+            m_CEBufferSize_ = 1;
+            m_CEBufferOffset_ = 1;
+            while (i < endIndex)
+            {
+                int primWeight = m_utilStringBuffer_.charAt(i ++) << 8;
+                if (i < endIndex) {
+                    primWeight |= m_utilStringBuffer_.charAt(i ++);
+                }
+                m_CEBuffer_[m_CEBufferSize_ ++] 
+                    = (primWeight << RuleBasedCollator.CE_PRIMARY_SHIFT_) 
+                      | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+            }
+            return ce;
+        } 
+        
+        // no numeric mode, we'll just switch to whatever we stashed and 
+        // continue
+        // find the offset to expansion table
+        return collator.m_expansion_[getExpansionOffset(collator, ce)];
+    }
+
+    /**
+     * Gets the next implicit ce for codepoints
+     * @param codepoint current codepoint
+     * @return implicit ce
+     */
+    private int nextImplicit(int codepoint)
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            // synwee to check with vladimir on the range of isNonChar()
+            // illegal code value, use completely ignoreable!
+            return IGNORABLE;
+        }
+        int result = RuleBasedCollator.impCEGen_.getImplicitFromCodePoint(codepoint);
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_)
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        return m_CEBuffer_[0];
+    }
+
+    /**
+     * Returns the next ce associated with the following surrogate characters
+     * @param ch current character
+     * @return ce
+     */
+    private int nextSurrogate(char ch)
+    {
+        int ch_int = nextChar();
+        char nextch = (char)ch_int;
+        if (ch_int != CharacterIterator.DONE &&
+            UTF16.isTrailSurrogate(nextch)) {
+            int codepoint = UCharacterProperty.getRawSupplementary(ch, nextch);
+            return nextImplicit(codepoint);
+        }
+        if (nextch != CharacterIterator.DONE) {
+            previousChar(); // reverts back to the original position
+        }
+        return IGNORABLE; // completely ignorable
+    }
+
+    /**
+     * Returns the next ce for a hangul character, this is an implicit
+     * calculation
+     * @param collator current collator
+     * @param ch current character
+     * @return hangul ce
+     */
+    private int nextHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+
+        // divide into pieces
+        // do it in this order since some compilers can do % and / in one
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_);
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+
+        // return the first CE, but first put the rest into the expansion
+        // buffer
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) { // FAST PATH
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(V);
+
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = 1;
+            return m_CEBuffer_[0];
+        }
+        else {
+            // Jamo is Special
+            // Since Hanguls pass the FCD check, it is guaranteed that we
+            // won't be in the normalization buffer if something like this
+            // happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append((char)L);
+            m_buffer_.append((char)V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append((char)T);
+            }
+            m_FCDLimit_ = m_source_.getIndex();
+            m_FCDStart_ = m_FCDLimit_ - 1;
+            // Indicate where to continue in main input string after
+            // exhausting the buffer
+            return IGNORABLE;
+        }
+    }
+
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA
+     * @param ce current ce
+     * @param ch current character
+     * @return next special ce
+     */
+    private int nextSpecial(RuleBasedCollator collator, int ce, char ch)
+    {
+        int codepoint = ch;
+        Backup entrybackup = m_utilSpecialEntryBackUp_;
+        // this is to handle recursive looping
+        if (entrybackup != null) {
+            m_utilSpecialEntryBackUp_ = null;
+        }
+        else {
+            entrybackup = new Backup();
+        }
+        backupInternalState(entrybackup);
+        try { // forces it to assign m_utilSpecialEntryBackup_
+            while (true) {
+                // This loop will repeat only in the case of contractions,
+                // surrogate
+                switch(RuleBasedCollator.getTag(ce)) {
+                case CE_NOT_FOUND_TAG_:
+                    // impossible case for icu4j
+                    return ce;
+                case RuleBasedCollator.CE_SURROGATE_TAG_:
+                    if (isEnd()) {
+                        return IGNORABLE;
+                    }
+                    backupInternalState(m_utilSpecialBackUp_);
+                    char trail = (char)nextChar();
+                    ce = nextSurrogate(collator, ce, trail);
+                    // calculate the supplementary code point value,
+                    // if surrogate was not tailored we go one more round
+                    codepoint =
+                        UCharacterProperty.getRawSupplementary(ch, trail);
+                    break;
+                case CE_SPEC_PROC_TAG_:
+                    ce = nextSpecialPrefix(collator, ce, entrybackup);
+                    break;
+                case CE_CONTRACTION_TAG_:
+                    ce = nextContraction(collator, ce);
+                    break;
+                case CE_LONG_PRIMARY_TAG_:
+                    return nextLongPrimary(ce);
+                case CE_EXPANSION_TAG_:
+                    return nextExpansion(collator, ce);
+                case CE_DIGIT_TAG_:
+                    ce = nextDigit(collator, ce, codepoint);
+                    break;
+                    // various implicits optimization
+                case CE_CJK_IMPLICIT_TAG_:
+                    // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                    return nextImplicit(codepoint);
+                case CE_IMPLICIT_TAG_: // everything that is not defined
+                    return nextImplicit(codepoint);
+                case CE_TRAIL_SURROGATE_TAG_:
+                    return IGNORABLE; // DC00-DFFF broken surrogate
+                case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                    return nextSurrogate(ch);
+                case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                    return nextHangul(collator, ch);
+                case CE_CHARSET_TAG_:
+                                    // not yet implemented probably after 1.8
+                    return CE_NOT_FOUND_;
+                default:
+                    ce = IGNORABLE;
+                    // synwee todo, throw exception or something here.
+                }
+                if (!RuleBasedCollator.isSpecial(ce)) {
+                    break;
+                }
+            }
+        } 
+        finally {
+            m_utilSpecialEntryBackUp_ = entrybackup;
+        }
+        return ce;
+    }
+
+    /**
+     * Special processing is getting a CE that is preceded by a certain prefix.
+     * Currently this is only needed for optimizing Japanese length and
+     * iteration marks. When we encouter a special processing tag, we go
+     * backwards and try to see if we have a match. Contraction tables are used
+     * - so the whole process is not unlike contraction. prefix data is stored
+     * backwards in the table.
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous ce
+     */
+    private int previousSpecialPrefix(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        while (true) {
+            // position ourselves at the begining of contraction sequence
+            int offset = getContractionOffset(collator, ce);
+            int entryoffset = offset;
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char prevch = (char)previousChar();
+            while (prevch > collator.m_contractionIndex_[offset]) {
+                // since contraction codepoints are ordered, we skip all that
+                // are smaller
+                offset ++;
+            }
+            if (prevch == collator.m_contractionIndex_[offset]) {
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // if there is a completely ignorable code point in the middle
+                // of a prefix, we need to act as if it's not there assumption:
+                // 'real' noncharacters (*fffe, *ffff, fdd0-fdef are set to
+                // zero)
+                // lone surrogates cannot be set to zero as it would break
+                // other processing
+                int isZeroCE = collator.m_trie_.getLeadValue(prevch);
+                // it's easy for BMP code points
+                if (isZeroCE == 0) {
+                    continue;
+                }
+                else if (UTF16.isTrailSurrogate(prevch)
+                         || UTF16.isLeadSurrogate(prevch)) {
+                    // for supplementary code points, we have to check the next one
+                    // situations where we are going to ignore
+                    // 1. beginning of the string: schar is a lone surrogate
+                    // 2. schar is a lone surrogate
+                    // 3. schar is a trail surrogate in a valid surrogate
+                    //    sequence that is explicitly set to zero.
+                    if (!isBackwardsStart()) {
+                        char lead = (char)previousChar();
+                        if (UTF16.isLeadSurrogate(lead)) {
+                            isZeroCE = collator.m_trie_.getLeadValue(lead);
+                            if (RuleBasedCollator.getTag(isZeroCE)
+                                == RuleBasedCollator.CE_SURROGATE_TAG_) {
+                                int finalCE = collator.m_trie_.getTrailValue(
+                                                                      isZeroCE,
+                                                                      prevch);
+                                if (finalCE == 0) {
+                                    // this is a real, assigned completely
+                                    // ignorable code point
+                                    continue;
+                                }
+                            }
+                        }
+                        else {
+                            nextChar(); // revert to original offset
+                            // lone surrogate, completely ignorable
+                            continue;
+                        }
+                        nextChar(); // revert to original offset
+                    }
+                    else {
+                         // lone surrogate at the beggining, completely ignorable
+                         continue;
+                    }
+                }
+
+                // char was not in the table. prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+
+            if (!isSpecialPrefixTag(ce)) {
+                // char was in the contraction table, and the corresponding ce
+                // is not a prefix ce.  We found the prefix, break out of loop,
+                // this ce will end up being returned.
+                break;
+            }
+        }
+        updateInternalState(m_utilSpecialBackUp_);
+        return ce;
+    }
+
+    /**
+     * Retrieves the previous contraction ce. To ensure that the backwards and
+     * forwards iteration matches, we take the current region of most possible
+     * match and pass it through the forward iteration. This will ensure that
+     * the obstinate problem of overlapping contractions will not occur.
+     * @param collator current collator
+     * @param ce current ce
+     * @param ch current character
+     * @return previous contraction ce
+     */
+    private int previousContraction(RuleBasedCollator collator, int ce, char ch)
+    {
+        m_utilStringBuffer_.setLength(0);
+        // since we might encounter normalized characters (from the thai
+        // processing) we can't use peekCharacter() here.
+        char prevch = (char)previousChar();
+        boolean atStart = false;
+        // TODO: address the comment above - maybe now we *can* use peekCharacter
+        //while (collator.isUnsafe(ch) || isThaiPreVowel(prevch)) {
+        while (collator.isUnsafe(ch)) {
+            m_utilStringBuffer_.insert(0, ch);
+            ch = prevch;
+            if (isBackwardsStart()) {
+                atStart = true;
+                break;
+            }
+            prevch = (char)previousChar();
+        }
+        if (!atStart) {
+            // undo the previousChar() if we didn't reach the beginning 
+            nextChar();
+        }
+        // adds the initial base character to the string
+        m_utilStringBuffer_.insert(0, ch);
+
+        // a new collation element iterator is used to simply things, since
+        // using the current collation element iterator will mean that the
+        // forward and backwards iteration will share and change the same
+        // buffers. it is going to be painful.
+        int originaldecomp = collator.getDecomposition();
+        // for faster access, since string would have been normalized above
+        collator.setDecomposition(Collator.NO_DECOMPOSITION);
+        if (m_utilColEIter_ == null) {
+            m_utilColEIter_ = new CollationElementIterator(
+                                                m_utilStringBuffer_.toString(),
+                                                collator);
+        }
+        else {
+            m_utilColEIter_.m_collator_ = collator;
+            m_utilColEIter_.setText(m_utilStringBuffer_.toString());
+        }
+        ce = m_utilColEIter_.next();
+        m_CEBufferSize_ = 0;
+        while (ce != NULLORDER) {
+            if (m_CEBufferSize_ == m_CEBuffer_.length) {
+                try {
+                    // increasing cebuffer size
+                    int tempbuffer[] = new int[m_CEBuffer_.length + 50];
+                    System.arraycopy(m_CEBuffer_, 0, tempbuffer, 0,
+                                     m_CEBuffer_.length);
+                    m_CEBuffer_ = tempbuffer;
+                }
+                catch( MissingResourceException e)
+                {
+                    throw e;
+                }
+                catch (Exception e) {
+                    if(DEBUG){
+                        e.printStackTrace();
+                    }
+                    return NULLORDER;
+                }
+            }
+            m_CEBuffer_[m_CEBufferSize_ ++] = ce;
+            ce = m_utilColEIter_.next();
+        }
+        collator.setDecomposition(originaldecomp);
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+
+    /**
+     * Returns the previous long primary ces
+     * @param ce long primary ce
+     * @return previous long primary ces
+     */
+    private int previousLongPrimary(int ce)
+    {
+        m_CEBufferSize_ = 0;
+        m_CEBuffer_[m_CEBufferSize_ ++] =
+            ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) | CE_BYTE_COMMON_;
+        m_CEBuffer_[m_CEBufferSize_ ++] = ((ce & 0xFF) << 24)
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+
+    /**
+     * Returns the previous expansion ces
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous expansion ce
+     */
+    private int previousExpansion(RuleBasedCollator collator, int ce)
+    {
+        // find the offset to expansion table
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce);
+        if (m_CEBufferSize_ != 0) {
+            // less than 16 elements in expansion
+            for (int i = 0; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+
+        }
+        else {
+            // null terminated ces
+            while (collator.m_expansion_[offset + m_CEBufferSize_] != 0) {
+                m_CEBuffer_[m_CEBufferSize_] =
+                    collator.m_expansion_[offset + m_CEBufferSize_];
+                m_CEBufferSize_ ++;
+            }
+        }
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+    
+    /**
+     * Getting the digit collation elements
+     * @param collator
+     * @param ce current collation element
+     * @param ch current code point
+     * @return digit collation element
+     */
+    private int previousDigit(RuleBasedCollator collator, int ce, char ch)
+    {
+        // We do a check to see if we want to collate digits as numbers; if so we generate
+        //  a custom collation key. Otherwise we pull out the value stored in the expansion table.
+        if (m_collator_.m_isNumericCollation_){
+            int leadingZeroIndex = 0;
+            int collateVal = 0;
+            boolean nonZeroValReached = false;
+
+            // clear and set initial string buffer length
+            m_utilStringBuffer_.setLength(3);
+        
+            // We parse the source string until we hit a char that's NOT a digit
+            // Use this u_charDigitValue. This might be slow because we have to 
+            // handle surrogates...
+            int char32 = ch;
+            if (UTF16.isTrailSurrogate(ch)) {
+                if (!isBackwardsStart()){
+                    char lead = (char)previousChar();
+                    if (UTF16.isLeadSurrogate(lead)) {
+                        char32 = UCharacterProperty.getRawSupplementary(lead,
+                                                                        ch);
+                    } 
+                    else {
+                        goForwardOne();
+                    }
+                }
+            } 
+            int digVal = UCharacter.digit(char32);
+            int digIndx = 0;
+            for (;;) {
+                // Make sure we have enough space.
+                if (digIndx >= ((m_utilStringBuffer_.length() - 2) << 1)) {
+                    m_utilStringBuffer_.setLength(m_utilStringBuffer_.length() 
+                                                  << 1);
+                }
+                // Skipping over "trailing" zeroes but we still add to digIndx.
+                if (digVal != 0 || nonZeroValReached) {
+                    if (digVal != 0 && !nonZeroValReached) {
+                        nonZeroValReached = true;
+                    }
+                
+                    // We parse the digit string into base 100 numbers (this 
+                    // fits into a byte).
+                    // We only add to the buffer in twos, thus if we are 
+                    // parsing an odd character, that serves as the 'tens' 
+                    // digit while the if we are parsing an even one, that is 
+                    // the 'ones' digit. We dumped the parsed base 100 value 
+                    // (collateVal) into a buffer. We multiply each collateVal 
+                    // by 2 (to give us room) and add 5 (to avoid overlapping 
+                    // magic CE byte values). The last byte we subtract 1 to 
+                    // ensure it is less than all the other bytes. 
+                    // Since we're doing in this reverse we want to put the 
+                    // first digit encountered into the ones place and the 
+                    // second digit encountered into the tens place.
+                
+                    if (digIndx % 2 == 1){
+                        collateVal += digVal * 10;
+                    
+                        // This removes leading zeroes.
+                        if (collateVal == 0 && leadingZeroIndex == 0) {
+                           leadingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                        }
+                        else if (leadingZeroIndex != 0) {
+                            leadingZeroIndex = 0;
+                        }
+                                            
+                        m_utilStringBuffer_.setCharAt(((digIndx - 1) >>> 1) + 2, 
+                                                (char)((collateVal << 1) + 6));
+                        collateVal = 0;
+                    }
+                    else {
+                        collateVal = digVal;    
+                    }
+                }
+                digIndx ++;
+            
+                if (!isBackwardsStart()){
+                    backupInternalState(m_utilSpecialBackUp_);
+                    char32 = previousChar();
+                    ch = (char)ch;
+                    if (UTF16.isTrailSurrogate(ch)){
+                        if (!isBackwardsStart()) {
+                            char lead = (char)previousChar();
+                            if (UTF16.isLeadSurrogate(lead)) {
+                                char32 
+                                    = UCharacterProperty.getRawSupplementary(
+                                                                    lead, ch);
+                            } 
+                            else {
+                                updateInternalState(m_utilSpecialBackUp_);
+                            }
+                        }
+                    }
+                    
+                    digVal = UCharacter.digit(char32);
+                    if (digVal == -1) {
+                        updateInternalState(m_utilSpecialBackUp_);
+                        break;
+                    }
+                }
+                else {
+                    break;
+                }
+            }
+
+            if (nonZeroValReached == false) {
+                digIndx = 2;
+                m_utilStringBuffer_.setCharAt(2, (char)6);
+            }
+            
+            if (digIndx % 2 != 0) {
+                if (collateVal == 0 && leadingZeroIndex == 0) {
+                    // This removes the leading 0 in a odd number sequence of 
+                    // numbers e.g. avery001
+                    leadingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                }
+                else {
+                    // this is not a leading 0, we add it in
+                    m_utilStringBuffer_.setCharAt((digIndx >>> 1) + 2,
+                                                (char)((collateVal << 1) + 6));
+                    digIndx ++; 
+                }               
+            }
+                     
+            int endIndex = leadingZeroIndex != 0 ? leadingZeroIndex 
+                                               : ((digIndx >>> 1) + 2) ;  
+            digIndx = ((endIndex - 2) << 1) + 1; // removing initial zeros         
+            // Subtract one off of the last byte. 
+            // Really the first byte here, but it's reversed...
+            m_utilStringBuffer_.setCharAt(2, 
+                                    (char)(m_utilStringBuffer_.charAt(2) - 1));          
+            // We want to skip over the first two slots in the buffer. 
+            // The first slot is reserved for the header byte CODAN_PLACEHOLDER. 
+            // The second slot is for the sign/exponent byte: 
+            // 0x80 + (decimalPos/2) & 7f.
+            m_utilStringBuffer_.setCharAt(0, (char)RuleBasedCollator.CODAN_PLACEHOLDER);
+            m_utilStringBuffer_.setCharAt(1, 
+                                    (char)(0x80 + ((digIndx >>> 1) & 0x7F)));
+        
+            // Now transfer the collation key to our collIterate struct.
+            // The total size for our collation key is endIndx bumped up to the 
+            // next largest even value divided by two.
+            m_CEBufferSize_ = 0;
+            m_CEBuffer_[m_CEBufferSize_ ++] 
+                        = (((m_utilStringBuffer_.charAt(0) << 8)
+                            // Primary weight 
+                            | m_utilStringBuffer_.charAt(1)) 
+                              << RuleBasedCollator.CE_PRIMARY_SHIFT_)
+                            // Secondary weight 
+                            | (RuleBasedCollator.BYTE_COMMON_ 
+                               << RuleBasedCollator.CE_SECONDARY_SHIFT_)
+                            // Tertiary weight. 
+                            | RuleBasedCollator.BYTE_COMMON_; 
+             int i = endIndex - 1; // Reset the index into the buffer.
+             while (i >= 2) {
+                int primWeight = m_utilStringBuffer_.charAt(i --) << 8;
+                if (i >= 2) {
+                    primWeight |= m_utilStringBuffer_.charAt(i --);
+                }
+                m_CEBuffer_[m_CEBufferSize_ ++] 
+                    = (primWeight << RuleBasedCollator.CE_PRIMARY_SHIFT_) 
+                      | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+             }
+             m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+             return m_CEBuffer_[m_CEBufferOffset_];
+         }
+         else {
+             return collator.m_expansion_[getExpansionOffset(collator, ce)];
+         }
+    } 
+
+    /**
+     * Returns previous hangul ces
+     * @param collator current collator
+     * @param ch current character
+     * @return previous hangul ce
+     */
+    private int previousHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+        // we do it in this order since some compilers can do % and / in one
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_);
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) {
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(V);
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+            return m_CEBuffer_[m_CEBufferOffset_];
+        }
+        else {
+            // Since Hanguls pass the FCD check, it is guaranteed that we won't
+            // be in the normalization buffer if something like this happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append(L);
+            m_buffer_.append(V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append(T);
+            }
+
+            m_FCDStart_ = m_source_.getIndex();
+            m_FCDLimit_ = m_FCDStart_ + 1;
+            return IGNORABLE;
+        }
+    }
+
+    /**
+     * Gets implicit codepoint ces
+     * @param codepoint current codepoint
+     * @return implicit codepoint ces
+     */
+    private int previousImplicit(int codepoint)
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            return IGNORABLE; // illegal code value, completely ignoreable!
+        }
+        int result = RuleBasedCollator.impCEGen_.getImplicitFromCodePoint(codepoint);
+        m_CEBufferSize_ = 2;
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_)
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        return m_CEBuffer_[1];
+    }
+
+    /**
+     * Gets the previous surrogate ce
+     * @param ch current character
+     * @return previous surrogate ce
+     */
+    private int previousSurrogate(char ch)
+    {
+        if (isBackwardsStart()) {
+            // we are at the start of the string, wrong place to be at
+            return IGNORABLE;
+        }
+        char prevch = (char)previousChar();
+        // Handles Han and Supplementary characters here.
+        if (UTF16.isLeadSurrogate(prevch)) {
+            return previousImplicit(
+                          UCharacterProperty.getRawSupplementary(prevch, ch));
+        }
+        if (prevch != CharacterIterator.DONE) {
+            nextChar();
+        }
+        return IGNORABLE; // completely ignorable
+    }
+
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA
+     * @param ce current ce
+     * @param ch current character
+     * @return previous special ce
+     */
+    private int previousSpecial(RuleBasedCollator collator, int ce, char ch)
+    {
+        while(true) {
+            // the only ces that loops are thai, special prefix and
+            // contractions
+            switch (RuleBasedCollator.getTag(ce)) {
+            case CE_NOT_FOUND_TAG_:  // this tag always returns
+                return ce;
+            case RuleBasedCollator.CE_SURROGATE_TAG_:
+                                // essentialy a disengaged lead surrogate. a broken
+                                // sequence was encountered and this is an error
+                return IGNORABLE;
+            case CE_SPEC_PROC_TAG_:
+                ce = previousSpecialPrefix(collator, ce);
+                break;
+            case CE_CONTRACTION_TAG_:
+                // may loop for first character e.g. "0x0f71" for english
+                if (isBackwardsStart()) {
+                    // start of string or this is not the end of any contraction
+                    ce = collator.m_contractionCE_[
+                                            getContractionOffset(collator, ce)];
+                    break;
+                }
+                return previousContraction(collator, ce, ch); // else
+            case CE_LONG_PRIMARY_TAG_:
+                return previousLongPrimary(ce);
+            case CE_EXPANSION_TAG_: // always returns
+                return previousExpansion(collator, ce);
+            case CE_DIGIT_TAG_:
+                ce = previousDigit(collator, ce, ch);
+                break;
+            case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                return previousHangul(collator, ch);
+            case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                return IGNORABLE; // broken surrogate sequence
+            case CE_TRAIL_SURROGATE_TAG_: // DC00-DFFF
+                return previousSurrogate(ch);
+            case CE_CJK_IMPLICIT_TAG_:
+                // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                return previousImplicit(ch);
+            case CE_IMPLICIT_TAG_: // everything that is not defined
+                // UCA is filled with these. Tailorings are NOT_FOUND
+                return previousImplicit(ch);
+            case CE_CHARSET_TAG_: // this tag always returns
+                return CE_NOT_FOUND_;
+            default: // this tag always returns
+                ce = IGNORABLE;
+            }
+            if (!RuleBasedCollator.isSpecial(ce)) {
+                break;
+            }
+        }
+        return ce;
+    }
+
+    /**
+     * GET IMPLICIT PRIMARY WEIGHTS
+     * @param cp codepoint
+     * @param value is left justified primary key
+     */
+//    private static final int getImplicitPrimary(int cp)
+//    {
+//        cp = swapCJK(cp);
+//
+//        //if (DEBUG) System.out.println("CJK swapped: " + Utility.hex(cp));
+//        // we now have a range of numbers from 0 to 21FFFF.
+//        // we must skip all 00, 01, 02 bytes, so most bytes have 253 values
+//        // we must leave a gap of 01 between all values of the last byte, so
+//        // the last byte has 126 values (3 byte case)
+//        // we shift so that HAN all has the same first primary, for
+//        // compression.
+//        // for the 4 byte case, we make the gap as large as we can fit.
+//        // Three byte forms are EC xx xx, ED xx xx, EE xx xx (with a gap of 1)
+//        // Four byte forms (most supplementaries) are EF xx xx xx (with a gap
+//        // of LAST2_MULTIPLIER == 14)
+//
+//        int last0 = cp - RuleBasedCollator.IMPLICIT_4BYTE_BOUNDARY_;
+//        if (last0 < 0) {
+//            int last1 = cp / RuleBasedCollator.LAST_COUNT_;
+//            last0 = cp % RuleBasedCollator.LAST_COUNT_;
+//
+//            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+//            last1 %= RuleBasedCollator.OTHER_COUNT_;
+//            return RuleBasedCollator.IMPLICIT_BASE_3BYTE_ + (last2 << 24)
+//                   + (last1 << 16)
+//                   + ((last0 * RuleBasedCollator.LAST_MULTIPLIER_) << 8);
+//        }
+//        else {
+//            int last1 = last0 / RuleBasedCollator.LAST_COUNT2_;
+//            last0 %= RuleBasedCollator.LAST_COUNT2_;
+//
+//            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+//            last1 %= RuleBasedCollator.OTHER_COUNT_;
+//
+//            int last3 = last2 / RuleBasedCollator.OTHER_COUNT_;
+//            last2 %= RuleBasedCollator.OTHER_COUNT_;
+//            return RuleBasedCollator.IMPLICIT_BASE_4BYTE_ + (last3 << 24)
+//                   + (last2 << 16) + (last1 << 8)
+//                   + (last0 * RuleBasedCollator.LAST2_MULTIPLIER_);
+//        }
+//    }
+
+//    /**
+//     * Swapping CJK characters for implicit ces
+//     * @param cp codepoint CJK
+//     * @return swapped result
+//     */
+//    private static final int swapCJK(int cp)
+//    {
+//        if (cp >= CJK_BASE_) {
+//            if (cp < CJK_LIMIT_) {
+//                return cp - CJK_BASE_;
+//            }
+//            if (cp < CJK_COMPAT_USED_BASE_) {
+//                return cp + NON_CJK_OFFSET_;
+//            }
+//            if (cp < CJK_COMPAT_USED_LIMIT_) {
+//                return cp - CJK_COMPAT_USED_BASE_ + (CJK_LIMIT_ - CJK_BASE_);
+//            }
+//            if (cp < CJK_B_BASE_) {
+//                return cp + NON_CJK_OFFSET_;
+//            }
+//            if (cp < CJK_B_LIMIT_) {
+//                return cp; // non-BMP-CJK
+//            }
+//            return cp + NON_CJK_OFFSET_; // non-CJK
+//        }
+//        if (cp < CJK_A_BASE_) {
+//            return cp + NON_CJK_OFFSET_;
+//        }
+//        if (cp < CJK_A_LIMIT_) {
+//            return cp - CJK_A_BASE_ + (CJK_LIMIT_ - CJK_BASE_)
+//                   + (CJK_COMPAT_USED_LIMIT_ - CJK_COMPAT_USED_BASE_);
+//        }
+//        return cp + NON_CJK_OFFSET_; // non-CJK
+//    }
+    
+//    /** 
+//     * Gets a character from the source string at a given offset.
+//     * Handles both normal and iterative cases.
+//     * No error checking and does not access the normalization buffer 
+//     * - caller beware!
+//     * @param offset offset from current position which character is to be 
+//     *               retrieved
+//     * @return character at current position + offset
+//     */
+//    private char peekCharacter(int offset) 
+//    {
+//        if (offset != 0) {
+//            int currentoffset = m_source_.getIndex();
+//            m_source_.setIndex(currentoffset + offset);
+//            char result = (char)m_source_.current();
+//            m_source_.setIndex(currentoffset);
+//            return result;
+//        } 
+//        else {
+//            return (char)m_source_.current();
+//        }
+//    }
+
+    /**
+     * Moves back 1 position in the source string. This is slightly less 
+     * complicated than previousChar in that it doesn't normalize while 
+     * moving back. Boundary checks are not performed.
+     * This method is to be used with caution, with the assumption that 
+     * moving back one position will not exceed the source limits.
+     * Use only with nextChar() and never call this API twice in a row without
+     * nextChar() in the middle.
+     */
+    private void goBackOne() 
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_bufferOffset_ --;
+        }
+        else {
+            m_source_.setIndex(m_source_.getIndex() - 1);
+        }
+    }
+    
+    /**
+     * Moves forward 1 position in the source string. This is slightly less 
+     * complicated than nextChar in that it doesn't normalize while 
+     * moving back. Boundary checks are not performed.
+     * This method is to be used with caution, with the assumption that 
+     * moving back one position will not exceed the source limits.
+     * Use only with previousChar() and never call this API twice in a row 
+     * without previousChar() in the middle.
+     */
+    private void goForwardOne() 
+    {
+        if (m_bufferOffset_ < 0) {
+            // we're working on the source and not normalizing. fast path.
+            // note Thai pre-vowel reordering uses buffer too
+            m_source_.setIndex(m_source_.getIndex() + 1);
+        }
+        else {
+            // we are in the buffer, buffer offset will never be 0 here
+            m_bufferOffset_ ++;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationKey.java b/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..d40d6ed
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,647 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * <p>A <code>CollationKey</code> represents a <code>String</code>
+ * under the rules of a specific <code>Collator</code>
+ * object. Comparing two <code>CollationKey</code>s returns the
+ * relative order of the <code>String</code>s they represent.</p>
+ *
+ * <p>Since the rule set of <code>Collator</code>s can differ, the
+ * sort orders of the same string under two different
+ * <code>Collator</code>s might differ.  Hence comparing
+ * <code>CollationKey</code>s generated from different
+ * <code>Collator</code>s can give incorrect results.</p>
+ 
+ * <p>Both the method
+ * <code>CollationKey.compareTo(CollationKey)</code> and the method
+ * <code>Collator.compare(String, String)</code> compare two strings
+ * and returns their relative order.  The performance characterictics
+ * of these two approaches can differ.</p>
+ *
+ * <p>During the construction of a <code>CollationKey</code>, the
+ * entire source string is examined and processed into a series of
+ * bits terminated by a null, that are stored in the <code>CollationKey</code>. 
+ * When <code>CollationKey.compareTo(CollationKey)</code> executes, it
+ * performs bitwise comparison on the bit sequences.  This can incurs
+ * startup cost when creating the <code>CollationKey</code>, but once
+ * the key is created, binary comparisons are fast.  This approach is
+ * recommended when the same strings are to be compared over and over
+ * again.</p>
+ *
+ * <p>On the other hand, implementations of
+ * <code>Collator.compare(String, String)</code> can examine and
+ * process the strings only until the first characters differing in
+ * order.  This approach is recommended if the strings are to be
+ * compared only once.</p>
+ * 
+ * <p>More information about the composition of the bit sequence can
+ * be found in the 
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>.</p>
+ *
+ * <p>The following example shows how <code>CollationKey</code>s can be used
+ * to sort a list of <code>String</code>s.</p>
+ * <blockquote>
+ * <pre>
+ * // Create an array of CollationKeys for the Strings to be sorted.
+ * Collator myCollator = Collator.getInstance();
+ * CollationKey[] keys = new CollationKey[3];
+ * keys[0] = myCollator.getCollationKey("Tom");
+ * keys[1] = myCollator.getCollationKey("Dick");
+ * keys[2] = myCollator.getCollationKey("Harry");
+ * sort( keys );
+ * <br>
+ * //...
+ * <br>
+ * // Inside body of sort routine, compare keys this way
+ * if( keys[i].compareTo( keys[j] ) > 0 )
+ *    // swap keys[i] and keys[j]
+ * <br>
+ * //...
+ * <br>
+ * // Finally, when we've returned from sort.
+ * System.out.println( keys[0].getSourceString() );
+ * System.out.println( keys[1].getSourceString() );
+ * System.out.println( keys[2].getSourceString() );
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @author Syn Wee Quek
+ * @stable ICU 2.8 
+ */
+public final class CollationKey implements Comparable 
+{
+    // public inner classes -------------------------------------------------
+    
+    /** 
+     * Options that used in the API CollationKey.getBound() for getting a 
+     * CollationKey based on the bound mode requested.
+     * @stable ICU 2.6
+     */
+    public static final class BoundMode 
+    {
+        /*
+         * do not change the values assigned to the members of this enum. 
+         * Underlying code depends on them having these numbers  
+         */
+         
+        /** 
+         * Lower bound
+         * @stable ICU 2.6
+         */
+        public static final int LOWER = 0;
+
+        /** 
+         * Upper bound that will match strings of exact size
+         * @stable ICU 2.6
+         */
+        public static final int UPPER = 1;
+
+        /** 
+         * Upper bound that will match all the strings that have the same 
+         * initial substring as the given string
+         * @stable ICU 2.6
+         */
+        public static final int UPPER_LONG = 2;
+
+        /**
+         * Number of bound mode
+         * @stable ICU 2.6
+         */
+        public static final int COUNT = 3;
+        
+        /**
+         * Private Constructor
+         */
+        ///CLOVER:OFF
+        private BoundMode(){}
+        ///CLOVER:ON
+    }
+    
+    // public constructor ---------------------------------------------------
+    
+    /**
+     * CollationKey constructor.
+     * This constructor is given public access, unlike the JDK version, to
+     * allow access to users extending the Collator class. See 
+     * {@link Collator#getCollationKey(String)}. 
+     * @param source string this CollationKey is to represent
+     * @param key array of bytes that represent the collation order of argument
+     *            source terminated by a null
+     * @see Collator
+     * @stable ICU 2.8
+     */
+    public CollationKey(String source, byte key[])
+    {
+        m_source_ = source;
+        m_key_ = key;
+        m_hashCode_ = 0;
+        m_length_ = -1;
+    }
+    
+    /**
+     * CollationKey constructor that forces key to release its internal byte 
+     * array for adoption. key will have a null byte array after this 
+     * construction.
+     * @param source string this CollationKey is to represent
+     * @param key RawCollationKey object that represents the collation order of 
+     *            argument source. 
+     * @see Collator
+     * @see RawCollationKey
+     * @stable ICU 2.8 
+     */
+    public CollationKey(String source, RawCollationKey key)
+    {
+        m_source_ = source;
+        m_key_ = key.releaseBytes();
+        m_hashCode_ = 0;
+        m_length_ = -1;
+    }
+    
+    // public getters -------------------------------------------------------
+    
+    /**
+     * Return the source string that this CollationKey represents.
+     * @return source string that this CollationKey represents
+     * @stable ICU 2.8
+     */
+    public String getSourceString() 
+    {
+        return m_source_;
+    }
+
+    /**
+     * <p>Duplicates and returns the value of this CollationKey as a sequence 
+     * of big-endian bytes terminated by a null.</p> 
+     *
+     * <p>If two CollationKeys can be legitimately compared, then one can
+     * compare the byte arrays of each to obtain the same result, e.g.
+     * <pre>
+     * byte key1[] = collationkey1.toByteArray();
+     * byte key2[] = collationkey2.toByteArray();
+     * int key, targetkey;
+     * int i = 0;
+     * do {
+     *       key = key1[i] & 0xFF;
+     *     targetkey = key2[i] & 0xFF;
+     *     if (key &lt; targetkey) {
+     *         System.out.println("String 1 is less than string 2");
+     *         return;
+     *     }
+     *     if (targetkey &lt; key) {
+     *         System.out.println("String 1 is more than string 2");
+     *     }
+     *     i ++;
+     * } while (key != 0 && targetKey != 0);
+     *
+     * System.out.println("Strings are equal.");
+     * </pre>
+     * </p>  
+     * @return CollationKey value in a sequence of big-endian byte bytes 
+     *         terminated by a null.
+     * @stable ICU 2.8
+     */
+    public byte[] toByteArray() 
+    {
+        int length = 0;
+        while (true) {
+            if (m_key_[length] == 0) {
+              break;
+            }
+            length ++;
+        }
+        length ++;
+        byte result[] = new byte[length];
+        System.arraycopy(m_key_, 0, result, 0, length);
+        return result;
+    }
+
+    // public other methods -------------------------------------------------    
+     
+    /**
+     * <p>Compare this CollationKey to another CollationKey.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     *
+     * <p><strong>Note:</strong> Comparison between CollationKeys
+     * created by different Collators might return incorrect
+     * results.  See class documentation.</p>
+     *
+     * @param target target CollationKey
+     * @return an integer value.  If the value is less than zero this CollationKey
+     *         is less than than target, if the value is zero they are equal, and
+     *         if the value is greater than zero this CollationKey is greater 
+     *         than target.
+     * @exception NullPointerException is thrown if argument is null.
+     * @see Collator#compare(String, String)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(CollationKey target)
+    {
+    for (int i = 0;; ++i) {
+        int l = m_key_[i]&0xff;
+        int r = target.m_key_[i]&0xff;
+        if (l < r) {
+        return -1;
+        } else if (l > r) {
+        return 1;
+        } else if (l == 0) {
+        return 0;
+        }
+    }
+    }
+
+    /**
+     * <p>Compare this CollationKey with the specified Object.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     * 
+     * <p>See note in compareTo(CollationKey) for warnings about possible
+     * incorrect results.</p>
+     *
+     * @param obj the Object to be compared to.
+     * @return Returns a negative integer, zero, or a positive integer 
+     *         respectively if this CollationKey is less than, equal to, or 
+     *         greater than the given Object.
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @see #compareTo(CollationKey)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(Object obj) 
+    {
+       return compareTo((CollationKey)obj);
+    }
+
+    /**
+     * <p>Compare this CollationKey and the specified Object for
+     * equality.  The collation rules of the Collator that created
+     * this key are applied.</p>
+     *
+     * <p>See note in compareTo(CollationKey) for warnings about
+     * possible incorrect results.</p>
+     *
+     * @param target the object to compare to.
+     * @return true if the two keys compare as equal, false otherwise.
+     * @see #compareTo(CollationKey)
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @stable ICU 2.8 
+     */
+    public boolean equals(Object target) 
+    {
+        if (!(target instanceof CollationKey)) {
+            return false;
+        }
+        
+        return equals((CollationKey)target);
+    }
+    
+    /**
+     * <p>
+     * Compare this CollationKey and the argument target CollationKey for 
+     * equality.
+     * The collation 
+     * rules of the Collator object which created these objects are applied.
+     * </p>
+     * <p>
+     * See note in compareTo(CollationKey) for warnings of incorrect results
+     * </p>
+     * @param target the CollationKey to compare to.
+     * @return true if two objects are equal, false otherwise.
+     * @exception NullPointerException is thrown when the argument is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(CollationKey target) 
+    {
+        if (this == target) {
+            return true;
+        }
+        if (target == null) {
+            return false;
+        }
+        CollationKey other = (CollationKey)target;
+        int i = 0;
+        while (true) {
+            if (m_key_[i] != other.m_key_[i]) {
+                return false;
+            }
+            if (m_key_[i] == 0) {
+              break;
+            }
+            i ++;
+        }
+        return true;
+    }
+
+    /**
+     * <p>Returns a hash code for this CollationKey. The hash value is calculated 
+     * on the key itself, not the String from which the key was created. Thus 
+     * if x and y are CollationKeys, then x.hashCode(x) == y.hashCode() 
+     * if x.equals(y) is true. This allows language-sensitive comparison in a 
+     * hash table.
+     * </p>
+     * @return the hash value.
+     * @stable ICU 2.8
+     */
+    public int hashCode() 
+    {
+        if (m_hashCode_ == 0) {
+            if (m_key_ == null) {
+                m_hashCode_ = 1;
+            }
+            else {
+                int size = m_key_.length >> 1;
+                StringBuffer key = new StringBuffer(size);
+                int i = 0;
+                while (m_key_[i] != 0 && m_key_[i + 1] != 0) {
+                    key.append((char)((m_key_[i] << 8) | m_key_[i + 1]));
+                    i += 2;
+                }
+                if (m_key_[i] != 0) {
+                    key.append((char)(m_key_[i] << 8));
+                }
+                m_hashCode_ = key.toString().hashCode();
+            }
+        }
+        return m_hashCode_;
+    }
+    
+    /**
+     * <p>
+     * Produce a bound for the sort order of a given collation key and a 
+     * strength level. This API does not attempt to find a bound for the 
+     * CollationKey String representation, hence null will be returned in its 
+     * place.
+     * </p>
+     * <p>
+     * Resulting bounds can be used to produce a range of strings that are
+     * between upper and lower bounds. For example, if bounds are produced
+     * for a sortkey of string "smith", strings between upper and lower 
+     * bounds with primary strength would include "Smith", "SMITH", "sMiTh".
+     * </p>
+     * <p>
+     * There are two upper bounds that can be produced. If BoundMode.UPPER
+     * is produced, strings matched would be as above. However, if a bound
+     * is produced using BoundMode.UPPER_LONG is used, the above example will
+     * also match "Smithsonian" and similar.
+     * </p>
+     * <p>
+     * For more on usage, see example in test procedure 
+     * <a href="http://source.icu-project.org/repos/icu/icu4j/trunk/src/com/ibm/icu/dev/test/collator/CollationAPITest.java">
+     * src/com/ibm/icu/dev/test/collator/CollationAPITest/TestBounds.
+     * </a>
+     * </p>
+     * <p>
+     * Collation keys produced may be compared using the <TT>compare</TT> API.
+     * </p>
+     * @param boundType Mode of bound required. It can be BoundMode.LOWER, which 
+     *              produces a lower inclusive bound, BoundMode.UPPER, that 
+     *              produces upper bound that matches strings of the same 
+     *              length or BoundMode.UPPER_LONG that matches strings that 
+     *              have the same starting substring as the source string.
+     * @param noOfLevels Strength levels required in the resulting bound 
+     *                 (for most uses, the recommended value is PRIMARY). This
+     *                 strength should be less than the maximum strength of 
+     *                 this CollationKey.
+     *                 See users guide for explanation on the strength levels a 
+     *                 collation key can have. 
+     * @return the result bounded CollationKey with a valid sort order but 
+     *         a null String representation.
+     * @exception IllegalArgumentException thrown when the strength level 
+     *            requested is higher than or equal to the strength in this
+     *            CollationKey. 
+     *            In the case of an Exception, information 
+     *            about the maximum strength to use will be returned in the 
+     *            Exception. The user can then call getBound() again with the 
+     *            appropriate strength.
+     * @see CollationKey
+     * @see CollationKey.BoundMode
+     * @see Collator#PRIMARY
+     * @see Collator#SECONDARY
+     * @see Collator#TERTIARY
+     * @see Collator#QUATERNARY
+     * @see Collator#IDENTICAL
+     * @stable ICU 2.6
+     */
+    public CollationKey getBound(int boundType, int noOfLevels) 
+    {
+        // Scan the string until we skip enough of the key OR reach the end of 
+        // the key
+        int offset = 0;
+        int keystrength = Collator.PRIMARY;
+        
+        if (noOfLevels > Collator.PRIMARY) {
+            while (offset < m_key_.length && m_key_[offset] != 0) {
+                if (m_key_[offset ++] 
+                        == RuleBasedCollator.SORT_LEVEL_TERMINATOR_) {
+                    keystrength ++;
+                    noOfLevels --;
+                    if (noOfLevels == Collator.PRIMARY 
+                        || offset == m_key_.length || m_key_[offset] == 0) {
+                        offset --;
+                        break;
+                    }
+                }
+            } 
+        }
+        
+        if (noOfLevels > 0) {
+            throw new IllegalArgumentException(
+                                  "Source collation key has only " 
+                                  + keystrength 
+                                  + " strength level. Call getBound() again "
+                                  + " with noOfLevels < " + keystrength);
+        }
+        
+        // READ ME: this code assumes that the values for BoundMode variables 
+        // will not changes. They are set so that the enum value corresponds to 
+        // the number of extra bytes each bound type needs.
+        byte resultkey[] = new byte[offset + boundType + 1];
+        System.arraycopy(m_key_, 0, resultkey, 0, offset);
+        switch (boundType) {
+            case BoundMode.LOWER: // = 0
+                // Lower bound just gets terminated. No extra bytes
+                break;
+            case BoundMode.UPPER: // = 1
+                // Upper bound needs one extra byte
+                resultkey[offset ++] = 2;
+                break;
+            case BoundMode.UPPER_LONG: // = 2
+                // Upper long bound needs two extra bytes
+                resultkey[offset ++] = (byte)0xFF;
+                resultkey[offset ++] = (byte)0xFF;
+                break;
+            default:
+                throw new IllegalArgumentException(
+                                                "Illegal boundType argument");
+        }
+        resultkey[offset ++] = 0;
+        return new CollationKey(null, resultkey);
+    }
+
+
+    
+    /** 
+     * <p>
+     * Merges this CollationKey with another. Only the sorting order of the 
+     * CollationKeys will be merged. This API does not attempt to merge the 
+     * String representations of the CollationKeys, hence null will be returned
+     * as the String representation.
+     * </p>
+     * <p>
+     * The strength levels are merged with their corresponding counterparts 
+     * (PRIMARIES with PRIMARIES, SECONDARIES with SECONDARIES etc.). 
+     * </p>
+     * <p>
+     * The merged String representation of the result CollationKey will be a
+     * concatenation of the String representations of the 2 source 
+     * CollationKeys.
+     * </p>
+     * <p>
+     * Between the values from the same level a separator is inserted.
+     * example (uncompressed):
+     * <pre> 
+     * 191B1D 01 050505 01 910505 00 and 1F2123 01 050505 01 910505 00
+     * will be merged as 
+     * 191B1D 02 1F212301 050505 02 050505 01 910505 02 910505 00
+     * </pre>
+     * </p>
+     * <p>
+     * This allows for concatenating of first and last names for sorting, among 
+     * other things.
+     * </p>
+     * </p>
+     * @param source CollationKey to merge with 
+     * @return a CollationKey that contains the valid merged sorting order 
+     *         with a null String representation, 
+     *         i.e. <tt>new CollationKey(null, merge_sort_order)</tt>
+     * @exception IllegalArgumentException thrown if source CollationKey
+     *            argument is null or of 0 length.
+     * @stable ICU 2.6
+     */
+    public CollationKey merge(CollationKey source)
+    {
+        // check arguments
+        if (source == null || source.getLength() == 0) {
+            throw new IllegalArgumentException(
+                      "CollationKey argument can not be null or of 0 length");
+        }
+    
+        getLength(); // gets the length of this sort key
+        int sourcelength = source.getLength();
+        // 1 extra for the last strength that has no seperators
+        byte result[] = new byte[m_length_ + sourcelength + 2];
+    
+        // merge the sort keys with the same number of levels
+        int rindex = 0;
+        int index = 0;
+        int sourceindex = 0;
+        while (true) { 
+            // while both have another level
+            // copy level from src1 not including 00 or 01
+            // unsigned issues
+            while (m_key_[index] < 0 || m_key_[index] >= MERGE_SEPERATOR_) {
+                result[rindex ++] = m_key_[index ++];
+            }
+    
+            // add a 02 merge separator
+            result[rindex ++] = MERGE_SEPERATOR_;
+    
+            // copy level from src2 not including 00 or 01
+            while (source.m_key_[sourceindex] < 0 
+                   || source.m_key_[sourceindex] >= MERGE_SEPERATOR_) {
+                result[rindex ++] = source.m_key_[sourceindex ++];
+            }
+    
+            // if both sort keys have another level, then add a 01 level 
+            // separator and continue
+            if (m_key_[index] == RuleBasedCollator.SORT_LEVEL_TERMINATOR_
+                && source.m_key_[sourceindex] 
+                        == RuleBasedCollator.SORT_LEVEL_TERMINATOR_) {
+                ++ index;
+                ++ sourceindex;
+                result[rindex ++] = RuleBasedCollator.SORT_LEVEL_TERMINATOR_;
+            }
+            else {
+                break;
+            }
+        }
+    
+        // here, at least one sort key is finished now, but the other one
+        // might have some contents left from containing more levels;
+        // that contents is just appended to the result
+        if (m_key_[index] != 0) {
+            System.arraycopy(m_key_, index, result, rindex,
+                             m_length_ - index);
+        }
+        else if (source.m_key_[sourceindex] != 0) {
+            System.arraycopy(source.m_key_, sourceindex, result, rindex,  
+                             source.m_length_ - sourceindex);
+        }
+        result[result.length - 1] = 0;
+    
+        // trust that neither sort key contained illegally embedded zero bytes
+        return new CollationKey(null, result);
+    }
+
+    // private data members -------------------------------------------------
+
+    /**
+     * Sequence of bytes that represents the sort key
+     */
+    private byte m_key_[];
+    
+    /**
+     * Source string this CollationKey represents
+     */    
+    private String m_source_;
+
+    /**
+     * Hash code for the key
+     */
+    private int m_hashCode_;
+    /**
+     * Gets the length of this CollationKey
+     */
+    private int m_length_;
+    /**
+     * Collation key merge seperator
+     */
+    private static final int MERGE_SEPERATOR_ = 2;
+    
+    // private methods ------------------------------------------------------
+    
+    /**
+     * Gets the length of the CollationKey
+     * @return length of the CollationKey
+     */
+    private int getLength()
+    {
+        if (m_length_ >= 0) {
+            return m_length_;
+        }
+        int length = m_key_.length;
+        for (int index = 0; index < length; index ++) {
+            if (m_key_[index] == 0) {
+                length = index;
+                break;
+            }
+        } 
+        m_length_ = length;
+        return m_length_;
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationParsedRuleBuilder.java b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
new file mode 100644
index 0000000..8278d44
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
@@ -0,0 +1,4328 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+ 
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.Arrays;
+import java.util.Enumeration;
+
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* Class for building a collator from a list of collation rules.
+* This class is uses CollationRuleParser
+* @author Syn Wee Quek
+* @since release 2.2, June 11 2002
+*/
+final class CollationParsedRuleBuilder
+{     
+    // package private constructors ------------------------------------------
+
+    /**
+     * Constructor
+     * @param rules collation rules
+     * @exception ParseException thrown when argument rules have an invalid 
+     *            syntax 
+     */
+    CollationParsedRuleBuilder(String rules) throws ParseException
+    {
+        m_parser_ = new CollationRuleParser(rules);
+        m_parser_.assembleTokenList();
+        m_utilColEIter_ = RuleBasedCollator.UCA_.getCollationElementIterator(
+                                         "");
+    }
+    
+    // package private inner classes -----------------------------------------
+    
+    /** 
+     * Inverse UCA wrapper
+     */
+    static class InverseUCA 
+    {
+        // package private constructor ---------------------------------------
+        
+        InverseUCA() 
+        {
+        }
+        
+        // package private data member ---------------------------------------
+        
+        /**
+         * Array list of characters
+         */
+        int m_table_[];
+        /**
+         * Array list of continuation characters
+         */
+        char m_continuations_[];
+        
+        /**
+         * UCA version of inverse UCA table
+         */
+        VersionInfo m_UCA_version_;
+        
+        // package private method --------------------------------------------
+        
+        /**
+     * Returns the previous inverse ces of the argument ces
+     * @param ce ce to test
+     * @param contce continuation ce to test
+     * @param strength collation strength
+     * @param prevresult an array to store the return results previous 
+         *                   inverse ce and previous inverse continuation ce
+         * @return result of the inverse ce 
+     */
+    final int getInversePrevCE(int ce, int contce, int strength, 
+                   int prevresult[]) 
+    {
+        int result = findInverseCE(ce, contce);
+        
+        if (result < 0) {
+        prevresult[0] = CollationElementIterator.NULLORDER;
+        return -1;
+        }
+        
+        ce &= STRENGTH_MASK_[strength];
+        contce &= STRENGTH_MASK_[strength];
+        
+            prevresult[0] = ce;
+        prevresult[1] = contce;
+        
+        while ((prevresult[0]  & STRENGTH_MASK_[strength]) == ce 
+           && (prevresult[1]  & STRENGTH_MASK_[strength])== contce
+           && result > 0) { 
+                        // this condition should prevent falling off the edge of the 
+                        // world 
+                // here, we end up in a singularity - zero
+                prevresult[0] = m_table_[3 * (-- result)];
+                prevresult[1] = m_table_[3 * result + 1];
+           }
+           return result;
+        }
+        
+        final int getCEStrengthDifference(int CE, int contCE, 
+                int prevCE, int prevContCE) {
+            int strength = Collator.TERTIARY;
+            while(
+            ((prevCE & STRENGTH_MASK_[strength]) != (CE & STRENGTH_MASK_[strength]) 
+            || (prevContCE & STRENGTH_MASK_[strength]) != (contCE & STRENGTH_MASK_[strength]))
+            && (strength != 0)) {
+                strength--;
+            }
+            return strength;                
+        }
+
+        private int compareCEs(int source0, int source1, int target0, int target1) {
+            int s1 = source0, s2, t1 = target0, t2;
+            if(RuleBasedCollator.isContinuation(source1)) {
+                s2 = source1;
+            } else {
+                s2 = 0;
+            }
+            if(RuleBasedCollator.isContinuation(target1)) {
+                t2 = target1;
+            } else {
+                t2 = 0;
+            }
+            
+            int s = 0, t = 0;
+            if(s1 == t1 && s2 == t2) {
+                return 0;
+            }
+            s = (s1 & 0xFFFF0000)|((s2 & 0xFFFF0000)>>16); 
+            t = (t1 & 0xFFFF0000)|((t2 & 0xFFFF0000)>>16);
+            if(s == t) {
+                s = (s1 & 0x0000FF00) | (s2 & 0x0000FF00)>>8;
+                t = (t1 & 0x0000FF00) | (t2 & 0x0000FF00)>>8;
+                if(s == t) {
+                    s = (s1 & 0x000000FF)<<8 | (s2 & 0x000000FF);
+                    t = (t1 & 0x000000FF)<<8 | (t2 & 0x000000FF);
+                    return Utility.compareUnsigned(s, t);
+                } else { 
+                    return Utility.compareUnsigned(s, t);
+                }
+            } else {
+                return Utility.compareUnsigned(s, t);                
+            }
+        }
+        
+        /**
+         * Finding the inverse CE of the argument CEs
+         * @param ce CE to be tested
+         * @param contce continuation CE
+         * @return inverse CE
+         */
+        int findInverseCE(int ce, int contce) 
+        {
+            int bottom = 0;
+            int top = m_table_.length / 3;
+            int result = 0;
+            
+            while (bottom < top - 1) {
+                result = (top + bottom) >> 1;
+                int first = m_table_[3 * result];
+                int second = m_table_[3 * result + 1];
+                int comparison = compareCEs(first, second, ce, contce);
+                if (comparison > 0) {
+                    top = result;
+                } 
+                else if (comparison < 0) {
+                    bottom = result;
+                } 
+                else { 
+                    break;
+                }
+            }
+            
+            return result;
+        }
+    
+    /**
+     * Getting gap offsets in the inverse UCA
+     * @param listheader parsed token lists
+     * @exception Exception thrown when error occurs while finding the 
+     *            collation gaps
+     */
+    void getInverseGapPositions(CollationRuleParser.TokenListHeader 
+                    listheader)
+        throws Exception 
+    {
+        // reset all the gaps
+        CollationRuleParser.Token token = listheader.m_first_;
+        int tokenstrength = token.m_strength_;
+    
+        for (int i = 0; i < 3; i ++) {
+        listheader.m_gapsHi_[3 * i] = 0;
+        listheader.m_gapsHi_[3 * i + 1] = 0;
+        listheader.m_gapsHi_[3 * i + 2] = 0;
+        listheader.m_gapsLo_[3 * i] = 0;
+        listheader.m_gapsLo_[3 * i + 1] = 0;
+        listheader.m_gapsLo_[3 * i + 2] = 0;
+        listheader.m_numStr_[i] = 0;
+        listheader.m_fStrToken_[i] = null;
+        listheader.m_lStrToken_[i] = null;
+        listheader.m_pos_[i] = -1;
+        }
+    
+        if ((listheader.m_baseCE_ >>> 24) 
+                >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_
+        && (listheader.m_baseCE_ >>> 24)
+                <= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_) 
+        { 
+                // implicits -
+            listheader.m_pos_[0] = 0;
+            int t1 = listheader.m_baseCE_;
+            int t2 = listheader.m_baseContCE_;
+            listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+                                                  Collator.PRIMARY);
+            listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+                                                  Collator.SECONDARY);
+            listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+                                                  Collator.TERTIARY);
+            int primaryCE = t1 & RuleBasedCollator.CE_PRIMARY_MASK_ | (t2 & RuleBasedCollator.CE_PRIMARY_MASK_) >>> 16;
+            primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(RuleBasedCollator.impCEGen_.getRawFromImplicit(primaryCE)+1);
+
+            t1 = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+            t2 = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+                
+            //                if (listheader.m_baseCE_ < 0xEF000000) {
+            //                    // first implicits have three byte primaries, with a gap of
+            //                    // one so we esentially need to add 2 to the top byte in 
+            //                    // listheader.m_baseContCE_
+            //                    t2 += 0x02000000;
+            //                } 
+            //                else {
+            //                    // second implicits have four byte primaries, with a gap of
+            //                    // IMPLICIT_LAST2_MULTIPLIER_
+            //                    // Now, this guy is not really accessible here, so until we 
+            //                    // find a better way to pass it around, assume that the gap is 1
+            //                    t2 += 0x00020000;
+            //                }
+            listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+                                                  Collator.PRIMARY);
+            listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+                                                  Collator.SECONDARY);
+            listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+                                                  Collator.TERTIARY);
+        } 
+        else if (listheader.m_indirect_ == true 
+                     && listheader.m_nextCE_ != 0) {
+        listheader.m_pos_[0] = 0;
+        int t1 = listheader.m_baseCE_;
+        int t2 = listheader.m_baseContCE_;
+        listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+                          Collator.PRIMARY);
+        listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+                          Collator.SECONDARY);
+        listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+                          Collator.TERTIARY);
+        t1 = listheader.m_nextCE_;
+        t2 = listheader.m_nextContCE_;
+        listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+                          Collator.PRIMARY);
+        listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+                          Collator.SECONDARY);
+        listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+                          Collator.TERTIARY);
+        } 
+        else {
+        while (true) {
+            if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+            listheader.m_pos_[tokenstrength] 
+                = getInverseNext(listheader, 
+                         tokenstrength);
+            if (listheader.m_pos_[tokenstrength] >= 0) {
+                listheader.m_fStrToken_[tokenstrength] = token;
+            } 
+            else { 
+                            // The CE must be implicit, since it's not in the 
+                            // table 
+                // Error
+                throw new Exception("Internal program error");
+            }
+            }
+            
+            while (token != null && token.m_strength_ >= tokenstrength) 
+            {
+                if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+                listheader.m_lStrToken_[tokenstrength] = token;
+                }
+                token = token.m_next_;
+            }
+            if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_ - 1) {
+            // check if previous interval is the same and merge the 
+            // intervals if it is so
+            if (listheader.m_pos_[tokenstrength] 
+                == listheader.m_pos_[tokenstrength + 1]) {
+                listheader.m_fStrToken_[tokenstrength] 
+                = listheader.m_fStrToken_[tokenstrength 
+                             + 1];
+                listheader.m_fStrToken_[tokenstrength + 1] = null;
+                listheader.m_lStrToken_[tokenstrength + 1] = null;
+                listheader.m_pos_[tokenstrength + 1] = -1;
+            }
+            }
+            if (token != null) {
+            tokenstrength = token.m_strength_;
+            } 
+            else {
+            break;
+            }
+        }
+        for (int st = 0; st < 3; st ++) {
+            int pos = listheader.m_pos_[st];
+            if (pos >= 0) {
+            int t1 = m_table_[3 * pos];
+            int t2 = m_table_[3 * pos + 1];
+            listheader.m_gapsHi_[3 * st] = mergeCE(t1, t2, 
+                                   Collator.PRIMARY);
+            listheader.m_gapsHi_[3 * st + 1] = mergeCE(t1, t2, 
+                                   Collator.SECONDARY);
+            listheader.m_gapsHi_[3 * st + 2] = (t1 & 0x3f) << 24 
+                | (t2 & 0x3f) << 16;
+            //pos --;
+            //t1 = m_table_[3 * pos];
+            //t2 = m_table_[3 * pos + 1];
+            t1 = listheader.m_baseCE_;
+            t2 = listheader.m_baseContCE_;
+            
+            listheader.m_gapsLo_[3 * st] = mergeCE(t1, t2, 
+                                   Collator.PRIMARY);
+            listheader.m_gapsLo_[3 * st + 1] = mergeCE(t1, t2, 
+                                   Collator.SECONDARY);
+            listheader.m_gapsLo_[3 * st + 2] = (t1 & 0x3f) << 24 
+                | (t2 & 0x3f) << 16;
+            }
+        }
+        }
+        }
+        
+    /**
+     * Gets the next CE in the inverse table
+     * @param listheader token list header
+     * @param strength collation strength
+     * @return next ce
+     */
+    private final int getInverseNext(CollationRuleParser.TokenListHeader 
+                     listheader, 
+                     int strength) 
+    {
+        int ce = listheader.m_baseCE_;
+        int secondce = listheader.m_baseContCE_; 
+        int result = findInverseCE(ce, secondce);
+            
+        if (result < 0) {
+        return -1;
+        }
+            
+        ce &= STRENGTH_MASK_[strength];
+        secondce &= STRENGTH_MASK_[strength];
+        
+        int nextce = ce;
+        int nextcontce = secondce;
+        
+        while((nextce & STRENGTH_MASK_[strength]) == ce 
+          && (nextcontce  & STRENGTH_MASK_[strength]) == secondce) {
+        nextce = m_table_[3 * (++ result)];
+        nextcontce = m_table_[3 * result + 1];
+        }
+            
+        listheader.m_nextCE_ = nextce;
+        listheader.m_nextContCE_ = nextcontce;
+        
+        return result;
+    }
+    }
+
+    // package private data members ------------------------------------------
+    
+    /**
+     * Inverse UCA, instantiate only when required
+     */
+    static final InverseUCA INVERSE_UCA_; 
+    
+    /**
+     * UCA and Inverse UCA version do not match
+     */
+    private static final String INV_UCA_VERSION_MISMATCH_ =
+    "UCA versions of UCA and inverse UCA should match";
+           
+    /**
+     * UCA and Inverse UCA version do not match
+     */
+    private static final String UCA_NOT_INSTANTIATED_ =
+    "UCA is not instantiated!";
+    
+    /**
+     * Initializing the inverse UCA
+     */
+    static {
+        InverseUCA temp = null;
+        try {
+        temp = CollatorReader.getInverseUCA();
+    } catch (IOException e) {
+    }
+        /*
+      try
+      {
+      String invdat = "/com/ibm/icu/impl/data/invuca.icu";
+      InputStream i = CollationParsedRuleBuilder.class.getResourceAsStream(invdat);
+      BufferedInputStream b = new BufferedInputStream(i, 110000);
+      INVERSE_UCA_ = CollatorReader.readInverseUCA(b);
+      b.close();
+      i.close();
+      }
+      catch (Exception e)
+      {
+      e.printStackTrace();
+      throw new RuntimeException(e.getMessage());
+      }
+        */
+        
+        if(temp != null && RuleBasedCollator.UCA_ != null) {
+            if(!temp.m_UCA_version_.equals(RuleBasedCollator.UCA_.m_UCA_version_)) {
+                throw new RuntimeException(INV_UCA_VERSION_MISMATCH_);
+            }
+        } else {
+            throw new RuntimeException(UCA_NOT_INSTANTIATED_);
+        }
+        
+        INVERSE_UCA_ = temp;
+    }
+    
+    // package private methods -----------------------------------------------
+    
+    /**
+     * Parse and sets the collation rules in the argument collator
+     * @param collator to set
+     * @exception Exception thrown when internal program error occurs
+     */
+    void setRules(RuleBasedCollator collator) throws Exception
+    {
+        if (m_parser_.m_resultLength_ > 0 || m_parser_.m_removeSet_ != null) { 
+        // we have a set of rules, let's make something of it 
+        assembleTailoringTable(collator);
+    } 
+    else { // no rules, but no error either must be only options
+        // We will init the collator from UCA   
+        collator.setWithUCATables();
+    }
+        // And set only the options
+        m_parser_.setDefaultOptionsInCollator(collator);
+    }
+    
+    private void copyRangeFromUCA(BuildTable t, int start, int end) {
+        int u = 0;
+        for (u = start; u <= end; u ++) {
+            // if ((CE = ucmpe32_get(t.m_mapping, u)) == UCOL_NOT_FOUND
+            int CE = t.m_mapping_.getValue(u);
+            if (CE == CE_NOT_FOUND_ 
+                // this test is for contractions that are missing the starting 
+                // element. Looks like latin-1 should be done before 
+                // assembling the table, even if it results in more false 
+                // closure elements
+                || (isContractionTableElement(CE) 
+            && getCE(t.m_contractions_, CE, 0) == CE_NOT_FOUND_)) {
+                //m_utilElement_.m_uchars_ = str.toString();
+                m_utilElement_.m_uchars_ = UCharacter.toString(u);
+                m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                m_utilElement_.m_prefix_ = 0;
+                m_utilElement_.m_CELength_ = 0;
+                m_utilElement_.m_prefixChars_ = null;
+                m_utilColEIter_.setText(m_utilElement_.m_uchars_);
+                while (CE != CollationElementIterator.NULLORDER) {
+                    CE = m_utilColEIter_.next();
+                    if (CE != CollationElementIterator.NULLORDER) {
+                        m_utilElement_.m_CEs_[m_utilElement_.m_CELength_ ++] 
+                = CE;
+                    }
+                }
+                addAnElement(t, m_utilElement_);
+            }
+        }
+    }
+            
+    /**
+     * 2.  Eliminate the negative lists by doing the following for each 
+     * non-null negative list: 
+     * o   if previousCE(baseCE, strongestN) != some ListHeader X's baseCE, 
+     * create new ListHeader X 
+     * o   reverse the list, add to the end of X's positive list. Reset the 
+     * strength of the first item you add, based on the stronger strength 
+     * levels of the two lists. 
+     * 
+     * 3.  For each ListHeader with a non-null positive list: 
+     * o   Find all character strings with CEs between the baseCE and the 
+     * next/previous CE, at the strength of the first token. Add these to the 
+     * tailoring. 
+     *     ? That is, if UCA has ...  x <<< X << x' <<< X' < y ..., and the 
+     *       tailoring has & x < z... 
+     *     ? Then we change the tailoring to & x  <<< X << x' <<< X' < z ... 
+     * 
+     * It is possible that this part should be done even while constructing list
+     * The problem is that it is unknown what is going to be the strongest 
+     * weight.
+     * So we might as well do it here
+     * o   Allocate CEs for each token in the list, based on the total number N 
+     * of the largest level difference, and the gap G between baseCE and nextCE 
+     * at that level. The relation * between the last item and nextCE is the 
+     * same as the strongest strength. 
+     * o   Example: baseCE < a << b <<< q << c < d < e * nextCE(X,1) 
+     *     ? There are 3 primary items: a, d, e. Fit them into the primary gap. 
+     *     Then fit b and c into the secondary gap between a and d, then fit q 
+     *     into the tertiary gap between b and c. 
+     * o   Example: baseCE << b <<< q << c * nextCE(X,2) 
+     *     ? There are 2 secondary items: b, c. Fit them into the secondary gap. 
+     *       Then fit q into the tertiary gap between b and c. 
+     * o   When incrementing primary values, we will not cross high byte 
+     *     boundaries except where there is only a single-byte primary. That is 
+     *     to ensure that the script reordering will continue to work. 
+     * @param collator the rule based collator to update
+     * @exception Exception thrown when internal program error occurs
+     */
+    void assembleTailoringTable(RuleBasedCollator collator) throws Exception
+    {
+        
+    for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+        // now we need to generate the CEs  
+        // We stuff the initial value in the buffers, and increase the 
+            // appropriate buffer according to strength
+            if  (m_parser_.m_listHeader_[i].m_first_ != null) { 
+                // if there are any elements
+                // due to the way parser works, subsequent tailorings
+                // may remove all the elements from a sequence, therefore
+                // leaving an empty tailoring sequence.
+        initBuffers(m_parser_.m_listHeader_[i]);
+            }
+    }
+        
+        if (m_parser_.m_variableTop_ != null) { 
+            // stuff the variable top value
+        m_parser_.m_options_.m_variableTopValue_ 
+        = m_parser_.m_variableTop_.m_CE_[0] >>> 16;
+        // remove it from the list
+        if (m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+                == m_parser_.m_variableTop_) { // first in list
+        m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+            = m_parser_.m_variableTop_.m_next_;
+        }
+        if (m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+        == m_parser_.m_variableTop_) { 
+                // first in list
+        m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+            = m_parser_.m_variableTop_.m_previous_;    
+        }
+        if (m_parser_.m_variableTop_.m_next_ != null) {
+        m_parser_.m_variableTop_.m_next_.m_previous_ 
+            = m_parser_.m_variableTop_.m_previous_;
+        }
+        if (m_parser_.m_variableTop_.m_previous_ != null) {
+        m_parser_.m_variableTop_.m_previous_.m_next_ 
+            = m_parser_.m_variableTop_.m_next_;
+        }
+    }
+        
+    BuildTable t = new BuildTable(m_parser_);
+        
+        // After this, we have assigned CE values to all regular CEs now we 
+    // will go through list once more and resolve expansions, make 
+    // UCAElements structs and add them to table               
+    for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+        // now we need to generate the CEs 
+        // We stuff the initial value in the buffers, and increase the 
+        // appropriate buffer according to strength                                                          */
+        createElements(t, m_parser_.m_listHeader_[i]);
+    }
+        
+        m_utilElement_.clear();
+        StringBuffer str = new StringBuffer();
+        
+    // add latin-1 stuff
+        copyRangeFromUCA(t, 0, 0xFF);
+    
+        // add stuff for copying 
+        if(m_parser_.m_copySet_ != null) {
+            int i = 0;
+            for(i = 0; i < m_parser_.m_copySet_.getRangeCount(); i++) {
+                copyRangeFromUCA(t, m_parser_.m_copySet_.getRangeStart(i), 
+                                 m_parser_.m_copySet_.getRangeEnd(i));
+            }
+        }
+        
+        // copy contractions from the UCA - this is felt mostly for cyrillic
+    char conts[] = RuleBasedCollator.UCA_CONTRACTIONS_;
+        int offset = 0;
+    while (conts[offset] != 0) {
+        // tailoredCE = ucmpe32_get(t.m_mapping, *conts);
+        int tailoredCE = t.m_mapping_.getValue(conts[offset]);
+        Elements prefixElm =  null;
+        if (tailoredCE != CE_NOT_FOUND_) {         
+        boolean needToAdd = true;
+        if (isContractionTableElement(tailoredCE)) {
+                    if (isTailored(t.m_contractions_, tailoredCE, 
+                                   conts, offset + 1) == true) {
+            needToAdd = false;
+            }
+        }
+        if (!needToAdd && isPrefix(tailoredCE) && conts[offset+1]==0) {
+            // pre-context character in UCA
+            // The format for pre-context character is
+            // conts[0]: baseCP  conts[1]:0  conts[2]:pre-context CP
+            Elements elm = new Elements();
+            elm.m_cPoints_=m_utilElement_.m_uchars_;
+            elm.m_CELength_=0;
+            elm.m_uchars_= UCharacter.toString(conts[offset]);
+            elm.m_prefixChars_=UCharacter.toString(conts[offset+2]);
+            elm.m_prefix_=0; // TODO(claireho) : confirm!
+            prefixElm =  (Elements)t.m_prefixLookup_.get(elm);
+            if ((prefixElm== null) ||
+                (prefixElm.m_prefixChars_.charAt(0)!= conts[offset+2])) {
+                needToAdd = true;
+            }
+        }
+                if(m_parser_.m_removeSet_ != null && m_parser_.m_removeSet_.contains(conts[offset])) {
+                    needToAdd = false;
+                }
+
+                
+                if (needToAdd == true) { 
+                    // we need to add if this contraction is not tailored.
+                    if (conts[offset+1]!=0) { // not precontext 
+                        m_utilElement_.m_prefix_ = 0;
+                        m_utilElement_.m_prefixChars_ = null;
+                        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                        str.delete(0, str.length());
+                        str.append(conts[offset]);
+                        str.append(conts[offset + 1]);
+                        if (conts[offset + 2] != 0) {
+                            str.append(conts[offset + 2]);
+                        } 
+                        m_utilElement_.m_uchars_ = str.toString();
+                        m_utilElement_.m_CELength_ = 0;
+                        m_utilColEIter_.setText(m_utilElement_.m_uchars_);
+                    }
+                    else {  // add a pre-context element
+                        int preKeyLen=0;
+                        str.delete(0, str.length());  // clean up
+                        m_utilElement_.m_cPoints_ = UCharacter.toString(conts[offset]);
+                        m_utilElement_.m_CELength_ = 0;
+                        m_utilElement_.m_uchars_ = UCharacter.toString(conts[offset]);
+                        m_utilElement_.m_prefixChars_ = UCharacter.toString(conts[offset+2]);
+                        if (prefixElm==null) {
+                            m_utilElement_.m_prefix_=0;
+                        }
+                        else { // TODO (claireho): confirm!
+                            m_utilElement_.m_prefix_= m_utilElement_.m_prefix_; 
+                            // m_utilElement_.m_prefix_= prefixElm.m_prefix_;
+                        }
+                        m_utilColEIter_.setText(m_utilElement_.m_prefixChars_);
+                        while (m_utilColEIter_.next()!=CollationElementIterator.NULLORDER) { 
+                            // count number of keys for pre-context char.
+                            preKeyLen++;
+                        }
+                        str.append(conts[offset+2]);
+                        str.append(conts[offset]);
+                        m_utilColEIter_.setText(str.toString());
+                        // Skip the keys for prefix character, then copy the rest to el.
+                        while ((preKeyLen-->0) && 
+                                m_utilColEIter_.next()!= CollationElementIterator.NULLORDER) {
+                            continue;
+                        }
+                                
+                    }
+                    while (true) {
+                        int CE = m_utilColEIter_.next();
+                        if (CE != CollationElementIterator.NULLORDER) {
+                            m_utilElement_.m_CEs_[m_utilElement_.m_CELength_++] = CE;
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    addAnElement(t, m_utilElement_);
+                }
+        } else if(m_parser_.m_removeSet_ != null && m_parser_.m_removeSet_.contains(conts[offset])) {
+                copyRangeFromUCA(t, conts[offset], conts[offset]);
+            }
+            
+        offset += 3;
+    }
+        
+        // Add completely ignorable elements
+        processUCACompleteIgnorables(t);
+        
+        // canonical closure 
+        canonicalClosure(t);
+  
+    // still need to produce compatibility closure
+    assembleTable(t, collator);  
+    }
+    
+    // private inner classes -------------------------------------------------
+    
+    private static class CEGenerator 
+    {
+        // package private data members --------------------------------------
+        
+    WeightRange m_ranges_[];
+    int m_rangesLength_;
+    int m_byteSize_; 
+        int m_start_; 
+        int m_limit_;
+    int m_maxCount_;
+    int m_count_;
+    int m_current_;
+    int m_fLow_; // forbidden Low 
+    int m_fHigh_; // forbidden High 
+        
+        // package private constructor ---------------------------------------
+        
+        CEGenerator() 
+        {
+            m_ranges_ = new WeightRange[7];      
+            for (int i = 6; i >= 0; i --) {
+                m_ranges_[i] = new WeightRange();
+            }
+        }
+    }
+
+    private static class WeightRange implements Comparable
+    {
+        // public methods ----------------------------------------------------
+        
+        /**
+         * Compares this object with target
+         * @param target object to compare with
+         * @return 0 if equals, 1 if this is > target, -1 otherwise
+         */
+        public int compareTo(Object target) 
+        {
+            if (this == target) {
+                return 0;
+            }
+            int tstart = ((WeightRange)target).m_start_;   
+            if (m_start_ == tstart) {
+                return 0;
+            }
+            if (m_start_ > tstart) {
+                return 1;
+            }
+            return -1;
+        }
+        
+        /**
+         * Initialize 
+         */
+        public void clear()
+        {
+            m_start_ = 0;
+            m_end_ = 0;
+            m_length_ = 0; 
+            m_count_ = 0;
+            m_length2_ = 0;
+            m_count2_ = 0;
+        }
+        
+        // package private data members --------------------------------------
+        
+    int m_start_;
+        int m_end_;
+    int m_length_; 
+        int m_count_;
+    int m_length2_;
+    int m_count2_;
+        
+        // package private constructor ---------------------------------------
+        
+        WeightRange()
+        {
+            clear();
+        }
+        
+        /**
+         * Copy constructor.
+         * Cloneable is troublesome, needs to check for exception
+         * @param source to clone
+         */
+        WeightRange(WeightRange source)
+        {
+            m_start_ = source.m_start_;
+            m_end_ = source.m_end_;
+            m_length_ = source.m_length_; 
+            m_count_ = source.m_count_;
+            m_length2_ = source.m_length2_;
+            m_count2_ = source.m_count2_;
+        }
+    }
+    
+    private static class MaxJamoExpansionTable
+    {
+    // package private data members --------------------------------------
+        
+    Vector m_endExpansionCE_;
+    // vector of booleans
+    Vector m_isV_;
+    byte m_maxLSize_;
+    byte m_maxVSize_;
+    byte m_maxTSize_;
+        
+    // package private constructor ---------------------------------------
+        
+    MaxJamoExpansionTable()
+    {
+        m_endExpansionCE_ = new Vector();
+        m_isV_ = new Vector();
+        m_endExpansionCE_.add(new Integer(0));
+        m_isV_.add(Boolean.FALSE);
+            m_maxLSize_ = 1;
+            m_maxVSize_ = 1;
+            m_maxTSize_ = 1;
+    }
+        
+        MaxJamoExpansionTable(MaxJamoExpansionTable table)
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_isV_ = (Vector)table.m_isV_.clone();
+            m_maxLSize_ = table.m_maxLSize_;
+            m_maxVSize_ = table.m_maxVSize_;
+            m_maxTSize_ = table.m_maxTSize_;
+        }
+    }
+    
+    private static class MaxExpansionTable 
+    {
+    // package private constructor --------------------------------------
+        
+    MaxExpansionTable() 
+    {
+        m_endExpansionCE_ = new Vector();
+        m_expansionCESize_ = new Vector();
+        m_endExpansionCE_.add(new Integer(0));
+        m_expansionCESize_.add(new Byte((byte)0));
+    }
+        
+        MaxExpansionTable(MaxExpansionTable table) 
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_expansionCESize_ = (Vector)table.m_expansionCESize_.clone();
+        }
+        
+    // package private data member --------------------------------------
+        
+    Vector m_endExpansionCE_;
+    Vector m_expansionCESize_;
+    }
+    
+    private static class BasicContractionTable 
+    {
+    // package private constructors -------------------------------------
+        
+    BasicContractionTable()
+    {
+        m_CEs_ = new Vector();
+        m_codePoints_ = new StringBuffer();
+    }
+        
+    // package private data members -------------------------------------
+        
+    StringBuffer m_codePoints_;
+    Vector m_CEs_;
+    }
+    
+    private static class ContractionTable 
+    {
+    // package private constructor --------------------------------------
+        
+    /**
+     * Builds a contraction table
+     * @param mapping
+     */
+    ContractionTable(IntTrieBuilder mapping) 
+    {
+        m_mapping_ = mapping;
+        m_elements_ = new Vector();
+        m_CEs_ = new Vector();
+        m_codePoints_ = new StringBuffer();
+        m_offsets_ = new Vector();
+        m_currentTag_ = CE_NOT_FOUND_TAG_;
+    }
+        
+        /**
+         * Copies a contraction table.
+         * Not all data will be copied into their own object.
+         * @param table
+         */
+        ContractionTable(ContractionTable table) 
+        {
+            m_mapping_ = table.m_mapping_;
+            m_elements_ = (Vector)table.m_elements_.clone();
+            m_codePoints_ = new StringBuffer(table.m_codePoints_.toString());
+            m_CEs_ = (Vector)table.m_CEs_.clone();
+            m_offsets_ = (Vector)table.m_offsets_.clone();
+            m_currentTag_ = table.m_currentTag_;
+        }
+    
+    // package private data members ------------------------------------
+        
+    /**
+     * Vector of BasicContractionTable
+     */
+        Vector m_elements_;
+        IntTrieBuilder m_mapping_;
+        StringBuffer m_codePoints_;
+    Vector m_CEs_;
+    Vector m_offsets_;
+    int m_currentTag_;
+    }
+    
+    /**
+     * Private class for combining mark table.
+     * The table is indexed by the class value(0-255).
+     */
+    private static class CombinClassTable {
+        /**
+         * accumulated numbers of combining marks.
+         */
+        int[] index =  new int[256]; 
+        
+        /**
+         * code point array for combining marks.
+         */
+        char[] cPoints; 
+        
+        /**
+         * size of cPoints.
+         */
+        int    size;
+        
+        // constructor
+        CombinClassTable() {
+            cPoints = null;
+            size = 0;
+            pos = 0;
+            curClass=1;
+        }
+        
+        /**
+         * Copy the combining mark table from ccc and index in compact
+         * way.
+         * 
+         * @param cps : code point array
+         * @param size : size of ccc
+         * @param index : index of combining classes(0-255)
+         */
+        void generate(char[] cps, int numOfCM, int[] ccIndex) {
+            int count =0;
+            
+            cPoints = new char[numOfCM];
+            for (int i=0; i<256; i++) {
+                for (int j=0; j<ccIndex[i]; j++) {
+                    cPoints[count++] = cps[(i<<8)+j];
+                }
+                index[i] = count;
+            }
+            size = count;
+        }
+        
+        /**
+         * Get first CM(combining mark) with the combining class value cClass.
+         * @param cClass : combining class value.
+         * @return combining mark codepoint or 0 if no combining make with class value cClass
+         */
+        char GetFirstCM(int cClass) {
+            curClass=cClass;
+            if (cPoints==null || cClass==0 || index[cClass]==index[cClass-1]) {
+                return 0;
+            }
+            pos =1;
+            return cPoints[index[cClass-1]];
+        }
+        
+        /**
+         * Get next CM(combining mark) with the combining class value cClass.
+         * Return combining mark codepoint or 0 if no next CM.
+         */
+        char GetNextCM() {
+            if (cPoints==null || index[curClass]==(index[curClass-1]+pos))  {
+                return 0;
+            }
+            return cPoints[index[curClass-1] + (pos++)];
+        }
+        
+        // private data members
+        int pos;
+        int curClass;
+    }
+
+    private static final class BuildTable implements TrieBuilder.DataManipulate
+    {
+    // package private methods ------------------------------------------
+        
+        /**
+     * For construction of the Trie tables.
+     * Has to be labeled public
+     * @param cp
+     * @param offset
+     * @return data offset or 0 
+     */
+    public int getFoldedValue(int cp, int offset)
+    {
+        int limit = cp + 0x400;
+        while (cp < limit) {
+        int value = m_mapping_.getValue(cp);
+        boolean inBlockZero = m_mapping_.isInZeroBlock(cp);
+        int tag = getCETag(value);
+        if (inBlockZero == true) {
+            cp += TrieBuilder.DATA_BLOCK_LENGTH;
+        } 
+        else if (!(isSpecial(value) && (tag == CE_IMPLICIT_TAG_ 
+                        || tag == CE_NOT_FOUND_TAG_))) {
+                    // These are values that are starting in either UCA 
+                    // (IMPLICIT_TAG) or in the tailorings (NOT_FOUND_TAG). 
+                    // Presence of these tags means that there is nothing in 
+                    // this position and that it should be skipped.
+            return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            | (CE_SURROGATE_TAG_ << 24) | offset;
+        } 
+        else {
+            ++ cp;
+        }
+        }
+        return 0;
+    }
+    
+    // package private constructor --------------------------------------
+        
+    /**
+     * Returns a table
+     */
+    BuildTable(CollationRuleParser parser) 
+    {
+        m_collator_ = new RuleBasedCollator();
+        m_collator_.setWithUCAData();
+        MaxExpansionTable maxet = new MaxExpansionTable();
+        MaxJamoExpansionTable maxjet = new MaxJamoExpansionTable();
+        m_options_ = parser.m_options_;
+        m_expansions_ = new Vector();
+        // Do your own mallocs for the structure, array and have linear 
+        // Latin 1
+            int trieinitialvalue = RuleBasedCollator.CE_SPECIAL_FLAG_
+        | (CE_NOT_FOUND_TAG_ << 24);
+        // temporary fix for jb3822, 0x100000 -> 30000
+        m_mapping_ = new IntTrieBuilder(null, 0x30000, trieinitialvalue, 
+                                            trieinitialvalue, true); 
+        m_prefixLookup_ = new Hashtable();
+        // uhash_open(prefixLookupHash, prefixLookupComp);
+        m_contractions_ = new ContractionTable(m_mapping_);
+        // copy UCA's maxexpansion and merge as we go along
+        m_maxExpansions_ = maxet;
+        // adding an extra initial value for easier manipulation 
+        for (int i = 0; 
+         i < RuleBasedCollator.UCA_.m_expansionEndCE_.length; i ++) {
+        maxet.m_endExpansionCE_.add(new Integer(
+                            RuleBasedCollator.UCA_.m_expansionEndCE_[i]));
+        maxet.m_expansionCESize_.add(new Byte(
+                              RuleBasedCollator.UCA_.m_expansionEndCEMaxSize_[i]));
+        }
+        m_maxJamoExpansions_ = maxjet;
+        
+        m_unsafeCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+        m_contrEndCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+        Arrays.fill(m_unsafeCP_, (byte)0);
+        Arrays.fill(m_contrEndCP_, (byte)0);
+    }
+    
+        /**
+         * Duplicating a BuildTable.
+         * Not all data will be duplicated into their own object.
+         * @param table to clone
+         */
+        BuildTable(BuildTable table) 
+        {
+            m_collator_ = table.m_collator_;
+            m_mapping_ = new IntTrieBuilder(table.m_mapping_);
+            m_expansions_ = (Vector)table.m_expansions_.clone();
+            m_contractions_ = new ContractionTable(table.m_contractions_);
+            m_contractions_.m_mapping_ = m_mapping_;
+            m_options_ = table.m_options_;
+            m_maxExpansions_ = new MaxExpansionTable(table.m_maxExpansions_);
+            m_maxJamoExpansions_ 
+        = new MaxJamoExpansionTable(table.m_maxJamoExpansions_);
+            m_unsafeCP_ = new byte[table.m_unsafeCP_.length];
+            System.arraycopy(table.m_unsafeCP_, 0, m_unsafeCP_, 0,
+                             m_unsafeCP_.length);
+            m_contrEndCP_ = new byte[table.m_contrEndCP_.length];
+            System.arraycopy(table.m_contrEndCP_, 0, m_contrEndCP_, 0,
+                             m_contrEndCP_.length);
+        }
+        
+    // package private data members -------------------------------------
+        
+    RuleBasedCollator m_collator_;
+        IntTrieBuilder m_mapping_; 
+        Vector m_expansions_; 
+        ContractionTable m_contractions_;
+    // UCATableHeader image;
+    CollationRuleParser.OptionSet m_options_;
+    MaxExpansionTable m_maxExpansions_;
+    MaxJamoExpansionTable m_maxJamoExpansions_;
+    byte m_unsafeCP_[];
+    byte m_contrEndCP_[];
+    Hashtable m_prefixLookup_;
+    CombinClassTable cmLookup = null;
+    } 
+    
+    private static class Elements
+    {
+    // package private data members -------------------------------------
+        
+    String m_prefixChars_;
+    int m_prefix_;
+    String m_uchars_;
+    /**
+     * Working string
+     */
+    String m_cPoints_;    
+    /**
+     * Offset to the working string
+     */
+    int m_cPointsOffset_;
+    /** 
+     * These are collation elements - there could be more than one - in 
+     * case of expansion 
+     */    
+    int m_CEs_[];      
+        int m_CELength_;
+    /** 
+     * This is the value element maps in original table   
+     */
+    int m_mapCE_;         
+    int m_sizePrim_[];
+    int m_sizeSec_[];
+    int m_sizeTer_[];
+    boolean m_variableTop_;
+    boolean m_caseBit_;
+        
+    // package private constructors -------------------------------------
+        
+    /**
+     * Package private constructor
+     */
+    Elements()
+    {
+        m_sizePrim_ = new int[128];    
+        m_sizeSec_ = new int[128];    
+        m_sizeTer_ = new int[128];    
+            m_CEs_ = new int[256];
+            m_CELength_ = 0;
+    }
+
+        /**
+     * Package private constructor
+     */
+    Elements(Elements element)
+    {
+            m_prefixChars_ = element.m_prefixChars_;
+            m_prefix_ = element.m_prefix_;
+            m_uchars_ = element.m_uchars_;
+            m_cPoints_ = element.m_cPoints_;    
+            m_cPointsOffset_ = element.m_cPointsOffset_;    
+            m_CEs_ = element.m_CEs_;
+            m_CELength_ = element.m_CELength_;
+            m_mapCE_ = element.m_mapCE_;
+        m_sizePrim_ = element.m_sizePrim_;
+        m_sizeSec_ = element.m_sizeSec_;
+        m_sizeTer_ = element.m_sizeTer_;
+        m_variableTop_ = element.m_variableTop_;
+        m_caseBit_ = element.m_caseBit_;
+    }
+
+        // package private methods -------------------------------------------
+        
+        /**
+         * Initializing the elements
+         */
+        public void clear()
+        {
+            m_prefixChars_ = null;
+            m_prefix_ = 0;
+            m_uchars_ = null;
+            m_cPoints_ = null;    
+            m_cPointsOffset_ = 0;  
+            m_CELength_ = 0;
+            m_mapCE_ = 0;
+            Arrays.fill(m_sizePrim_, 0);
+            Arrays.fill(m_sizeSec_, 0);
+            Arrays.fill(m_sizeTer_, 0);
+            m_variableTop_ = false;
+            m_caseBit_ = false;
+        }
+
+        
+        /**
+         * Hashcode calculation for token
+         * @return the hashcode
+         */
+        public int hashCode()
+        {
+        String str = m_cPoints_.substring(m_cPointsOffset_);
+        return str.hashCode();
+    }
+        
+    /**
+     * Equals calculation
+     * @param target object to compare
+     * @return true if target is the same as this object
+     */
+    public boolean equals(Object target)
+    {
+        if (target == this) {
+        return true;
+        }
+        if (target instanceof Elements) {
+        Elements t = (Elements)target;
+        int size = m_cPoints_.length() - m_cPointsOffset_;
+        if (size == t.m_cPoints_.length() - t.m_cPointsOffset_) {
+            return t.m_cPoints_.regionMatches(t.m_cPointsOffset_, 
+                              m_cPoints_, 
+                              m_cPointsOffset_, size);
+        }
+            }
+            return false;
+    }
+    }
+
+    // private data member ---------------------------------------------------
+    
+    /**
+     * Maximum strength used in CE building
+     */
+    private static final int CE_BASIC_STRENGTH_LIMIT_ = 3;
+    /**
+     * Maximum collation strength
+     */
+    private static final int CE_STRENGTH_LIMIT_ = 16;
+    /**
+     * Strength mask array, used in inverse UCA
+     */
+    private static final int STRENGTH_MASK_[] = {0xFFFF0000, 0xFFFFFF00, 
+                                                 0xFFFFFFFF};
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_ = 0xF0000000;
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    /**
+     * This code point results in an expansion 
+     */
+    private static final int CE_EXPANSION_TAG_ = 1;
+    /** 
+     * Start of a contraction 
+     */
+    private static final int CE_CONTRACTION_TAG_ = 2;
+    /* 
+     * Thai character - do the reordering 
+     */
+    //private static final int CE_THAI_TAG_ = 3;            
+    /* 
+     * Charset processing, not yet implemented
+     */
+    //private static final int CE_CHARSET_TAG_ = 4;         
+    /** 
+     * Lead surrogate that is tailored and doesn't start a contraction 
+     */
+    private static final int CE_SURROGATE_TAG_ = 5;
+    /* 
+     * AC00-D7AF
+     */
+    //private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /* 
+     * D800-DBFF
+     */
+    //private static final int CE_LEAD_SURROGATE_TAG_ = 7;
+    /* 
+     * DC00-DFFF
+     */
+    //private static final int CE_TRAIL_SURROGATE_TAG_ = 8; 
+    /*
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */    
+    //private static final int CE_CJK_IMPLICIT_TAG_ = 9;
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    private static final int CE_SPEC_PROC_TAG_ = 11;
+    /** 
+     * This is a three byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully) 
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12;  
+    /** 
+     * Unsafe UChar hash table table size. Size is 32 bytes for 1 bit for each 
+     * latin 1 char + some power of two for hashing the rest of the chars. 
+     * Size in bytes                               
+     */
+    private static final int UNSAFECP_TABLE_SIZE_ = 1056;
+    /** 
+     * Mask value down to "some power of two" -1. Number of bits, not num of 
+     * bytes.       
+     */
+    private static final int UNSAFECP_TABLE_MASK_ = 0x1fff;
+    /**
+     * Case values
+     */
+    private static final int UPPER_CASE_ = 0x80;
+    private static final int MIXED_CASE_ = 0x40;
+    private static final int LOWER_CASE_ = 0x00;
+    /*
+     * Initial table size
+     */
+    //private static final int INIT_TABLE_SIZE_ = 1028;
+    /*
+     * Header size, copied from ICU4C, to be changed when that value changes
+     */
+    //private static final int HEADER_SIZE_ = 0xC4;
+    /**
+     * Contraction table new element indicator
+     */
+    private static final int CONTRACTION_TABLE_NEW_ELEMENT_ = 0xFFFFFF;
+    /**
+     * Parser for the rules
+     */
+    private CollationRuleParser m_parser_;
+    /**
+     * Utility UCA collation element iterator
+     */
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * Utility data members
+     */
+    private CEGenerator m_utilGens_[] = {new CEGenerator(), new CEGenerator(),
+                                         new CEGenerator()};
+    private int m_utilCEBuffer_[] = new int[CE_BASIC_STRENGTH_LIMIT_];
+    private int m_utilIntBuffer_[] = new int[CE_STRENGTH_LIMIT_];
+    private Elements m_utilElement_ = new Elements();
+    private Elements m_utilElement2_ = new Elements();
+    private CollationRuleParser.Token m_utilToken_ 
+    = new CollationRuleParser.Token();
+    private int m_utilCountBuffer_[] = new int[6];     
+    private long m_utilLongBuffer_[] = new long[5];
+    private WeightRange m_utilLowerWeightRange_[] = 
+    {new WeightRange(), new WeightRange(), 
+     new WeightRange(), new WeightRange(), 
+     new WeightRange()}; 
+    private WeightRange m_utilUpperWeightRange_[] = 
+    {new WeightRange(), new WeightRange(), 
+     new WeightRange(), new WeightRange(), 
+     new WeightRange()}; 
+    private WeightRange m_utilWeightRange_ = new WeightRange();
+    private char m_utilCharBuffer_[] = new char[256];
+    private CanonicalIterator m_utilCanIter_ = new CanonicalIterator("");
+    private StringBuffer m_utilStringBuffer_ = new StringBuffer("");
+    // Flag indicating a combining marks table is required or not.
+    private static boolean buildCMTabFlag = false;
+    
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * @param listheader parsed rule tokens
+     * @exception Exception thrown when internal error occurs
+     */
+    private void initBuffers(CollationRuleParser.TokenListHeader listheader) 
+    throws Exception
+    {
+        CollationRuleParser.Token token = listheader.m_last_;
+        Arrays.fill(m_utilIntBuffer_, 0, CE_STRENGTH_LIMIT_, 0);
+        
+    token.m_toInsert_ = 1;
+    m_utilIntBuffer_[token.m_strength_] = 1;
+    while (token.m_previous_ != null) {
+        if (token.m_previous_.m_strength_ < token.m_strength_) { 
+                // going up
+        m_utilIntBuffer_[token.m_strength_] = 0;
+        m_utilIntBuffer_[token.m_previous_.m_strength_] ++;
+        } 
+            else if (token.m_previous_.m_strength_ > token.m_strength_) { 
+                // going down
+        m_utilIntBuffer_[token.m_previous_.m_strength_] = 1;
+        } 
+            else {
+        m_utilIntBuffer_[token.m_strength_] ++;
+        }
+        token = token.m_previous_;
+        token.m_toInsert_ = m_utilIntBuffer_[token.m_strength_];
+    } 
+        
+    token.m_toInsert_ = m_utilIntBuffer_[token.m_strength_];
+    INVERSE_UCA_.getInverseGapPositions(listheader);
+        
+    token = listheader.m_first_;
+    int fstrength = Collator.IDENTICAL;
+    int initstrength = Collator.IDENTICAL;
+        
+    m_utilCEBuffer_[Collator.PRIMARY] = mergeCE(listheader.m_baseCE_, 
+                            listheader.m_baseContCE_,
+                            Collator.PRIMARY);
+    m_utilCEBuffer_[Collator.SECONDARY] = mergeCE(listheader.m_baseCE_, 
+                              listheader.m_baseContCE_,
+                              Collator.SECONDARY);
+    m_utilCEBuffer_[Collator.TERTIARY] = mergeCE(listheader.m_baseCE_, 
+                             listheader.m_baseContCE_,
+                             Collator.TERTIARY);
+    while (token != null) {
+        fstrength = token.m_strength_;
+        if (fstrength < initstrength) {
+        initstrength = fstrength;
+        if (listheader.m_pos_[fstrength] == -1) {
+            while (listheader.m_pos_[fstrength] == -1 && fstrength > 0) 
+            {
+                fstrength--;
+            }
+            if (listheader.m_pos_[fstrength] == -1) {
+            throw new Exception("Internal program error");
+            }
+        }
+        if (initstrength == Collator.TERTIARY) { 
+                    // starting with tertiary
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = listheader.m_gapsLo_[fstrength * 3];
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = listheader.m_gapsLo_[fstrength * 3 + 1];
+            m_utilCEBuffer_[Collator.TERTIARY] = getCEGenerator(
+                                    m_utilGens_[Collator.TERTIARY], 
+                                    listheader.m_gapsLo_, 
+                                    listheader.m_gapsHi_, 
+                                    token, fstrength); 
+        } 
+                else if (initstrength == Collator.SECONDARY) { 
+                    // secondaries
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = listheader.m_gapsLo_[fstrength * 3];
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getCEGenerator(
+                                         m_utilGens_[Collator.SECONDARY], 
+                                         listheader.m_gapsLo_, 
+                                         listheader.m_gapsHi_, 
+                                         token, fstrength);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        } 
+                else { 
+                    // primaries 
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = getCEGenerator(
+                     m_utilGens_[Collator.PRIMARY], 
+                     listheader.m_gapsLo_, 
+                     listheader.m_gapsHi_, 
+                     token, fstrength);
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getSimpleCEGenerator(
+                                               m_utilGens_[Collator.SECONDARY], 
+                                               token, Collator.SECONDARY);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                                               m_utilGens_[Collator.TERTIARY], 
+                                               token, Collator.TERTIARY);
+        }
+        } 
+            else {
+        if (token.m_strength_ == Collator.TERTIARY) {
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getNextGenerated(m_utilGens_[Collator.TERTIARY]);
+        } 
+                else if (token.m_strength_ == Collator.SECONDARY) {
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getNextGenerated(m_utilGens_[Collator.SECONDARY]);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        } 
+                else if (token.m_strength_ == Collator.PRIMARY) {
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = getNextGenerated(
+                       m_utilGens_[Collator.PRIMARY]);
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.SECONDARY], 
+                           token, Collator.SECONDARY);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        }
+        }
+        doCE(m_utilCEBuffer_, token);
+        token = token.m_next_;
+    }
+    }
+
+    /**
+     * Get the next generated ce
+     * @param g ce generator
+     * @return next generated ce 
+     */
+    private int getNextGenerated(CEGenerator g) 
+    {
+        g.m_current_ = nextWeight(g);
+        return g.m_current_;
+    }
+
+    /**
+     * @param g CEGenerator
+     * @param token rule token
+     * @param strength 
+     * @return ce generator
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getSimpleCEGenerator(CEGenerator g, 
+                                     CollationRuleParser.Token token, 
+                                     int strength) throws Exception
+    {
+        int high, low, count = 1;
+        int maxbyte = (strength == Collator.TERTIARY) ? 0x3F : 0xFF;
+
+    if (strength == Collator.SECONDARY) {
+        low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+        high = 0xFFFFFFFF;
+        count = 0xFF - RuleBasedCollator.COMMON_TOP_2_;
+    } 
+        else {
+        low = RuleBasedCollator.BYTE_COMMON_ << 24; //0x05000000;
+        high = 0x40000000;
+        count = 0x40 - RuleBasedCollator.BYTE_COMMON_;
+    }
+    
+    if (token.m_next_ != null && token.m_next_.m_strength_ == strength) {
+        count = token.m_next_.m_toInsert_;
+    } 
+    
+    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+    g.m_current_ = RuleBasedCollator.BYTE_COMMON_ << 24;
+    
+    if (g.m_rangesLength_ == 0) {
+        throw new Exception("Internal program error");
+    }
+    return g.m_current_;
+    }
+
+    /**
+     * Combines 2 ce into one with respect to the argument strength
+     * @param ce1 first ce
+     * @param ce2 second ce
+     * @param strength strength to use
+     * @return combined ce
+     */
+    private static int mergeCE(int ce1, int ce2, int strength) 
+    {
+        int mask = RuleBasedCollator.CE_TERTIARY_MASK_;
+        if (strength == Collator.SECONDARY) {
+            mask = RuleBasedCollator.CE_SECONDARY_MASK_;
+        }
+        else if (strength == Collator.PRIMARY) {
+            mask = RuleBasedCollator.CE_PRIMARY_MASK_;
+        }
+        ce1 &= mask;
+        ce2 &= mask;
+        switch (strength) 
+        {
+            case Collator.PRIMARY:
+                return ce1 | ce2 >>> 16;
+            case Collator.SECONDARY:
+                return ce1 << 16 | ce2 << 8;
+            default:
+                return ce1 << 24 | ce2 << 16;
+        }
+    }
+    
+    /**
+     * @param g CEGenerator
+     * @param lows low gap array
+     * @param highs high gap array
+     * @param token rule token
+     * @param fstrength 
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getCEGenerator(CEGenerator g, int lows[], int highs[], 
+                               CollationRuleParser.Token token, int fstrength) 
+    throws Exception
+    {
+    int strength = token.m_strength_;
+    int low = lows[fstrength * 3 + strength];
+    int high = highs[fstrength * 3 + strength];
+    int maxbyte = 0;
+    if(strength == Collator.TERTIARY) {
+        maxbyte = 0x3F;
+    } else if(strength == Collator.PRIMARY) {
+        maxbyte = 0xFE;
+    } else {
+        maxbyte = 0xFF;
+    }
+    
+    int count = token.m_toInsert_;
+    
+    if (Utility.compareUnsigned(low, high) >= 0 
+            && strength > Collator.PRIMARY) {
+        int s = strength;
+        while (true) {
+        s --;
+        if (lows[fstrength * 3 + s] != highs[fstrength * 3 + s]) {
+            if (strength == Collator.SECONDARY) {
+                if (low < (RuleBasedCollator.COMMON_TOP_2_ << 24)) {
+                    // Override if low range is less than UCOL_COMMON_TOP2. 
+                    low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+                }
+                high = 0xFFFFFFFF;
+            } 
+            else {
+                if ( low < RuleBasedCollator.COMMON_BOTTOM_3<<24 ) { 
+                    // Override if low range is less than UCOL_COMMON_BOT3. 
+                    low = RuleBasedCollator.COMMON_BOTTOM_3 <<24;
+                }   
+                high = 0x40000000;
+            }
+            break;
+        }
+        if (s < 0) {
+            throw new Exception("Internal program error");
+        }
+        }
+    } 
+    if (low == 0) {
+        low = 0x01000000;
+    }
+    if (strength == Collator.SECONDARY) { // similar as simple 
+        if (Utility.compareUnsigned(low, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) >= 0
+                && Utility.compareUnsigned(low, 
+                       RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+        low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+            }
+        if (Utility.compareUnsigned(high, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) > 0 
+                && Utility.compareUnsigned(high, 
+                       RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+        high = RuleBasedCollator.COMMON_TOP_2_ << 24;
+        } 
+        if (Utility.compareUnsigned(low, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) < 0) {
+        g.m_rangesLength_ = allocateWeights(
+                            RuleBasedCollator.BYTE_UNSHIFTED_MIN_ << 24, 
+                            high, count, maxbyte, g.m_ranges_);
+        g.m_current_ = nextWeight(g);
+        //g.m_current_ = RuleBasedCollator.COMMON_BOTTOM_2_ << 24;
+        return g.m_current_;
+        }
+    } 
+    
+    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+    if (g.m_rangesLength_ == 0) {
+        throw new Exception("Internal program error");
+    }
+    g.m_current_ = nextWeight(g);
+    return g.m_current_;
+    }
+
+    /**
+     * @param ceparts list of collation elements parts
+     * @param token rule token
+     * @exception Exception thrown when forming case bits for expansions fails
+     */
+    private void doCE(int ceparts[], CollationRuleParser.Token token) 
+    throws Exception
+    {
+        // this one makes the table and stuff
+    // int noofbytes[] = new int[3];
+    for (int i = 0; i < 3; i ++) {
+        // noofbytes[i] = countBytes(ceparts[i]);
+            m_utilIntBuffer_[i] = countBytes(ceparts[i]);
+    }
+    
+    // Here we have to pack CEs from parts
+    int cei = 0;
+    int value = 0;
+    
+    while ((cei << 1) < m_utilIntBuffer_[0] || cei < m_utilIntBuffer_[1] 
+               || cei < m_utilIntBuffer_[2]) {
+        if (cei > 0) {
+        value = RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        } else {
+        value = 0;
+        }
+        
+        if ((cei << 1) < m_utilIntBuffer_[0]) {
+        value |= ((ceparts[0] >> (32 - ((cei + 1) << 4))) & 0xFFFF) 
+                      << 16;
+        }
+        if (cei < m_utilIntBuffer_[1]) {
+        value |= ((ceparts[1] >> (32 - ((cei + 1) << 3))) & 0xFF) << 8;
+        }
+            
+        if (cei < m_utilIntBuffer_[2]) {
+        value |= ((ceparts[2] >> (32 - ((cei+1) << 3))) & 0x3F);
+        }
+        token.m_CE_[cei] = value;
+        cei ++;
+    }
+    if (cei == 0) { // totally ignorable
+        token.m_CELength_ = 1;
+        token.m_CE_[0] = 0;
+    } 
+    else { // there is at least something
+        token.m_CELength_ = cei;
+    }
+          
+    // Case bits handling for expansion
+    if(token.m_CE_[0] != 0) { // case bits should be set only for non-ignorables
+        int startoftokenrule = token.m_source_ & 0xFF;
+        if ((token.m_source_ >>> 24) > 1) {
+            // Do it manually
+            int length = token.m_source_ >>> 24;
+            String tokenstr = token.m_rules_.substring(startoftokenrule, 
+                                   startoftokenrule + length);
+            token.m_CE_[0] |= getCaseBits(tokenstr);
+        } 
+        else {
+            // Copy it from the UCA
+            int caseCE 
+            = getFirstCE(token.m_rules_.charAt(startoftokenrule));
+            token.m_CE_[0] |= (caseCE & 0xC0);
+        }
+    }
+    }
+
+    /**
+     * Count the number of non-zero bytes used in the ce
+     * @param ce 
+     * @return number of non-zero bytes used in ce
+     */
+    private static final int countBytes(int ce)   
+    {                               
+    int mask = 0xFFFFFFFF;   
+    int result = 0;              
+    while (mask != 0) {            
+        if ((ce & mask) != 0) { 
+        result ++;            
+        }                           
+        mask >>>= 8;                 
+    }   
+        return result;                          
+    }
+    
+    /**
+     * We are ready to create collation elements
+     * @param t build table to insert
+     * @param lh rule token list header
+     */
+    private void createElements(BuildTable t, 
+                CollationRuleParser.TokenListHeader lh)
+    {
+    CollationRuleParser.Token tok = lh.m_first_;
+    m_utilElement_.clear();
+    while (tok != null) {
+        // first, check if there are any expansions
+        // if there are expansions, we need to do a little bit more 
+        // processing since parts of expansion can be tailored, while 
+        // others are not
+        if (tok.m_expansion_ != 0) {
+        int len = tok.m_expansion_ >>> 24;
+        int currentSequenceLen = len;
+        int expOffset = tok.m_expansion_ & 0x00FFFFFF;
+        m_utilToken_.m_source_ = currentSequenceLen | expOffset;
+        m_utilToken_.m_rules_ = m_parser_.m_source_;
+    
+        while (len > 0) {
+            currentSequenceLen = len;
+            while (currentSequenceLen > 0) {
+            m_utilToken_.m_source_ = (currentSequenceLen << 24) 
+                | expOffset;
+            CollationRuleParser.Token expt = 
+                (CollationRuleParser.Token)
+                m_parser_.m_hashTable_.get(m_utilToken_);
+            if (expt != null 
+                && expt.m_strength_ 
+                != CollationRuleParser.TOKEN_RESET_) { 
+                // expansion is tailored
+                int noOfCEsToCopy = expt.m_CELength_;
+                for (int j = 0; j < noOfCEsToCopy; j ++) {
+                tok.m_expCE_[tok.m_expCELength_ + j] 
+                    = expt.m_CE_[j];
+                }
+                tok.m_expCELength_ += noOfCEsToCopy;
+                // never try to add codepoints and CEs.
+                // For some odd reason, it won't work.
+                expOffset += currentSequenceLen; //noOfCEsToCopy;
+                len -= currentSequenceLen; //noOfCEsToCopy;
+                break;
+            } 
+            else {
+                currentSequenceLen --;
+            }
+            }
+            if (currentSequenceLen == 0) { 
+            // couldn't find any tailored subsequence, will have to 
+            // get one from UCA. first, get the UChars from the 
+            // rules then pick CEs out until there is no more and 
+            // stuff them into expansion
+            m_utilColEIter_.setText(m_parser_.m_source_.substring(
+                                          expOffset, expOffset + 1));
+            while (true) {
+                int order = m_utilColEIter_.next();
+                if (order == CollationElementIterator.NULLORDER) {
+                break;
+                }
+                tok.m_expCE_[tok.m_expCELength_ ++] = order;
+            }
+            expOffset ++;
+            len --;
+            }
+        }
+        } 
+        else {
+        tok.m_expCELength_ = 0;
+        }
+    
+        // set the ucaelement with obtained values
+            m_utilElement_.m_CELength_ = tok.m_CELength_ + tok.m_expCELength_;
+            
+        // copy CEs
+        System.arraycopy(tok.m_CE_, 0, m_utilElement_.m_CEs_, 0, 
+                             tok.m_CELength_);
+        System.arraycopy(tok.m_expCE_, 0, m_utilElement_.m_CEs_, 
+                             tok.m_CELength_, tok.m_expCELength_);
+    
+        // copy UChars 
+        // We kept prefix and source kind of together, as it is a kind of a 
+        // contraction. 
+        // However, now we have to slice the prefix off the main thing - 
+        m_utilElement_.m_prefix_ = 0;// el.m_prefixChars_;
+        m_utilElement_.m_cPointsOffset_ = 0; //el.m_uchars_;
+        if (tok.m_prefix_ != 0) { 
+        // we will just copy the prefix here, and adjust accordingly in 
+        // the addPrefix function in ucol_elm. The reason is that we 
+        // need to add both composed AND decomposed elements to the 
+        // unsafe table.
+        int size = tok.m_prefix_ >> 24;
+        int offset = tok.m_prefix_ & 0x00FFFFFF;
+        m_utilElement_.m_prefixChars_ 
+            = m_parser_.m_source_.substring(offset, offset + size);
+        size = (tok.m_source_ >> 24) - (tok.m_prefix_ >> 24); 
+        offset = (tok.m_source_ & 0x00FFFFFF) + (tok.m_prefix_ >> 24);
+        m_utilElement_.m_uchars_ 
+            = m_parser_.m_source_.substring(offset, offset + size);
+        } 
+        else {
+        m_utilElement_.m_prefixChars_ = null;
+        int offset = tok.m_source_ & 0x00FFFFFF;
+        int size = tok.m_source_ >>> 24;
+        m_utilElement_.m_uchars_ = m_parser_.m_source_.substring(offset, 
+                                     offset + size);
+        }
+        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+        
+        boolean containCombinMarks = false;
+        for (int i = 0; i < m_utilElement_.m_cPoints_.length() 
+             - m_utilElement_.m_cPointsOffset_; i ++) {
+        if (isJamo(m_utilElement_.m_cPoints_.charAt(i))) {
+            t.m_collator_.m_isJamoSpecial_ = true;
+            break;
+        }
+        if ( !buildCMTabFlag ) {
+            // check combining class
+            char fcd = NormalizerImpl.getFCD16(m_utilElement_.m_cPoints_.charAt(i));
+            if ( (fcd & 0xff) == 0 ) {
+                // reset flag when current char is not combining mark.
+                containCombinMarks = false;  
+            }
+            else {
+                containCombinMarks = true;
+            }
+        }
+        }
+        
+        if ( !buildCMTabFlag && containCombinMarks ) {
+            buildCMTabFlag = true;
+        }
+            
+            /***
+    
+            // Case bits handling 
+            m_utilElement_.m_CEs_[0] &= 0xFFFFFF3F; 
+        // Clean the case bits field
+            if (m_utilElement_.m_cPoints_.length() 
+                - m_utilElement_.m_cPointsOffset_ > 1) {
+        // Do it manually
+        m_utilElement_.m_CEs_[0] 
+        |= getCaseBits(m_utilElement_.m_cPoints_);
+            } 
+            else {
+        // Copy it from the UCA
+        int caseCE = getFirstCE(m_utilElement_.m_cPoints_.charAt(0));
+        m_utilElement_.m_CEs_[0] |= (caseCE & 0xC0);
+            }
+    
+            ***/
+        // and then, add it
+        addAnElement(t, m_utilElement_);
+        tok = tok.m_next_;
+    }   
+    }
+    
+    /**
+     * Testing if the string argument has case
+     * @param src string
+     * @return the case for this char array
+     * @exception Exception thrown when internal program error occurs
+     */
+    private final int getCaseBits(String src) throws Exception
+    {
+    int uCount = 0; 
+    int lCount = 0;
+    src = Normalizer.decompose(src, true);
+    m_utilColEIter_.setText(src);
+    for (int i = 0; i < src.length(); i++) {
+        m_utilColEIter_.setText(src.substring(i, i + 1));
+        int order = m_utilColEIter_.next();
+        if (RuleBasedCollator.isContinuation(order)) {
+        throw new Exception("Internal program error");
+        }
+        if ((order & RuleBasedCollator.CE_CASE_BIT_MASK_)
+        == UPPER_CASE_) {
+        uCount ++;
+        } 
+        else {
+        char ch = src.charAt(i);
+        if (UCharacter.isLowerCase(ch)) {
+            lCount ++;
+        } 
+        else {
+            if (toSmallKana(ch) == ch && toLargeKana(ch) != ch) {
+            lCount ++;
+            }
+        }
+        }
+    }
+        
+    if (uCount != 0 && lCount != 0) {
+        return MIXED_CASE_;
+    } 
+    else if (uCount != 0) {
+        return UPPER_CASE_;
+    } 
+    else {
+        return LOWER_CASE_;
+    }
+    }
+    
+    /**
+     * Converts a char to the uppercase Kana
+     * @param ch character to convert
+     * @return the converted Kana character
+     */
+    private static final char toLargeKana(char ch) 
+    {
+    if (0x3042 < ch && ch < 0x30ef) { // Kana range 
+        switch (ch - 0x3000) {
+        case 0x41: 
+        case 0x43: 
+        case 0x45: 
+        case 0x47: 
+        case 0x49: 
+        case 0x63: 
+        case 0x83: 
+        case 0x85: 
+        case 0x8E:
+        case 0xA1: 
+        case 0xA3: 
+        case 0xA5: 
+        case 0xA7: 
+        case 0xA9: 
+        case 0xC3: 
+        case 0xE3: 
+        case 0xE5: 
+        case 0xEE:
+        ch ++;
+        break;
+        case 0xF5:
+        ch = 0x30AB;
+        break;
+        case 0xF6:
+        ch = 0x30B1;
+        break;
+        }
+    }
+    return ch;
+    }
+    
+    /**
+     * Converts a char to the lowercase Kana
+     * @param ch character to convert
+     * @return the converted Kana character
+     */
+    private static final char toSmallKana(char ch) 
+    {
+    if (0x3042 < ch && ch < 0x30ef) { // Kana range
+        switch (ch - 0x3000) {
+        case 0x42: 
+        case 0x44: 
+        case 0x46: 
+        case 0x48: 
+        case 0x4A: 
+        case 0x64: 
+        case 0x84: 
+        case 0x86: 
+        case 0x8F:
+        case 0xA2: 
+        case 0xA4: 
+        case 0xA6: 
+        case 0xA8: 
+        case 0xAA: 
+        case 0xC4: 
+        case 0xE4: 
+        case 0xE6: 
+        case 0xEF:
+        ch --;
+        break;
+        case 0xAB:
+        ch = 0x30F5;
+        break;
+        case 0xB1:
+        ch = 0x30F6;
+        break;
+        }
+    }
+    return ch;
+    }
+
+    /**
+     * This should be connected to special Jamo handling.
+     */
+    private int getFirstCE(char ch) 
+    {
+        m_utilColEIter_.setText(UCharacter.toString(ch));
+    return m_utilColEIter_.next();
+    }
+    
+    /** 
+     * This adds a read element, while testing for existence 
+     * @param t build table
+     * @param element 
+     * @return ce
+     */
+    private int addAnElement(BuildTable t, Elements element) 
+    {
+        Vector expansions = t.m_expansions_;
+        element.m_mapCE_ = 0;
+        
+        if (element.m_CELength_ == 1) {
+            element.m_mapCE_ = element.m_CEs_[0];
+
+        } else {     
+        // unfortunately, it looks like we have to look for a long primary 
+        // here since in canonical closure we are going to hit some long 
+        // primaries from the first phase, and they will come back as 
+        // continuations/expansions destroying the effect of the previous 
+        // opitimization. A long primary is a three byte primary with 
+        // starting secondaries and tertiaries. It can appear in long runs 
+        // of only primary differences (like east Asian tailorings) also, 
+        // it should not be an expansion, as expansions would break with 
+        // this
+        if (element.m_CELength_ == 2 // a two CE expansion 
+        && RuleBasedCollator.isContinuation(element.m_CEs_[1]) 
+        && (element.m_CEs_[1] 
+            & (~(0xFF << 24 | RuleBasedCollator.CE_CONTINUATION_MARKER_))) 
+        == 0 // that has only primaries in continuation
+        && (((element.m_CEs_[0] >> 8) & 0xFF) 
+            == RuleBasedCollator.BYTE_COMMON_) 
+        // a common secondary
+        && ((element.m_CEs_[0] & 0xFF) 
+            == RuleBasedCollator.BYTE_COMMON_) // and a common tertiary
+        ) {
+        element.m_mapCE_ = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            // a long primary special
+            | (CE_LONG_PRIMARY_TAG_ << 24) 
+            // first and second byte of primary
+            | ((element.m_CEs_[0] >> 8) & 0xFFFF00) 
+            // third byte of primary
+            | ((element.m_CEs_[1] >> 24) & 0xFF);   
+        } 
+        else {
+                // omitting expansion offset in builder
+                // (HEADER_SIZE_ >> 2)
+        int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            | (CE_EXPANSION_TAG_ 
+               << RuleBasedCollator.CE_TAG_SHIFT_) 
+            | (addExpansion(expansions, element.m_CEs_[0])
+               << 4) & 0xFFFFF0;
+    
+        for (int i = 1; i < element.m_CELength_; i ++) {
+            addExpansion(expansions, element.m_CEs_[i]);
+        }
+        if (element.m_CELength_ <= 0xF) {
+            expansion |= element.m_CELength_;
+        } 
+        else {
+            addExpansion(expansions, 0);
+        }
+        element.m_mapCE_ = expansion;
+        setMaxExpansion(element.m_CEs_[element.m_CELength_ - 1],
+                (byte)element.m_CELength_, 
+                t.m_maxExpansions_);
+        if (isJamo(element.m_cPoints_.charAt(0))){
+            t.m_collator_.m_isJamoSpecial_ = true;
+            setMaxJamoExpansion(element.m_cPoints_.charAt(0),
+                    element.m_CEs_[element.m_CELength_ 
+                              - 1],
+                    (byte)element.m_CELength_,
+                    t.m_maxJamoExpansions_);
+        }
+        }
+    }
+        
+        // We treat digits differently - they are "uber special" and should be
+        // processed differently if numeric collation is on. 
+        int uniChar = 0;
+        if ((element.m_uchars_.length() == 2) 
+            && UTF16.isLeadSurrogate(element.m_uchars_.charAt(0))) {
+            uniChar = UCharacterProperty.getRawSupplementary(
+                                 element.m_uchars_.charAt(0), 
+                                 element.m_uchars_.charAt(1));      
+        } 
+        else if (element.m_uchars_.length() == 1) {
+            uniChar = element.m_uchars_.charAt(0);
+        }
+        
+        // Here, we either have one normal CE OR mapCE is set. Therefore, we 
+        // stuff only one element to the expansion buffer. When we encounter a 
+        // digit and we don't do numeric collation, we will just pick the CE 
+        // we have and break out of case (see ucol.cpp ucol_prv_getSpecialCE 
+        // && ucol_prv_getSpecialPrevCE). If we picked a special, further 
+        // processing will occur. If it's a simple CE, we'll return due
+        // to how the loop is constructed.
+        if (uniChar != 0 && UCharacter.isDigit(uniChar)) {
+            // prepare the element
+            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+        | (CollationElementIterator.CE_DIGIT_TAG_
+           << RuleBasedCollator.CE_TAG_SHIFT_) | 1; 
+            if (element.m_mapCE_ != 0) { 
+                // if there is an expansion, we'll pick it here
+                expansion |= (addExpansion(expansions, element.m_mapCE_) << 4);
+            } 
+            else {
+                expansion |= (addExpansion(expansions, element.m_CEs_[0]) << 4);
+            }
+            element.m_mapCE_ = expansion;
+        }
+    
+    // here we want to add the prefix structure.
+    // I will try to process it as a reverse contraction, if possible.
+    // prefix buffer is already reversed.
+    
+    if (element.m_prefixChars_ != null &&
+            element.m_prefixChars_.length() - element.m_prefix_ > 0) {
+        // We keep the seen prefix starter elements in a hashtable we need 
+            // it to be able to distinguish between the simple codepoints and 
+            // prefix starters. Also, we need to use it for canonical closure.
+        m_utilElement2_.m_caseBit_ = element.m_caseBit_;
+            m_utilElement2_.m_CELength_ = element.m_CELength_;
+            m_utilElement2_.m_CEs_ = element.m_CEs_;
+            m_utilElement2_.m_mapCE_ = element.m_mapCE_;
+            //m_utilElement2_.m_prefixChars_ = element.m_prefixChars_;
+            m_utilElement2_.m_sizePrim_ = element.m_sizePrim_;
+            m_utilElement2_.m_sizeSec_ = element.m_sizeSec_;
+            m_utilElement2_.m_sizeTer_ = element.m_sizeTer_;
+            m_utilElement2_.m_variableTop_ = element.m_variableTop_;
+            m_utilElement2_.m_prefix_ = element.m_prefix_;
+            m_utilElement2_.m_prefixChars_ = Normalizer.compose(element.m_prefixChars_, false);
+            m_utilElement2_.m_uchars_ = element.m_uchars_;
+            m_utilElement2_.m_cPoints_ = element.m_cPoints_;
+            m_utilElement2_.m_cPointsOffset_ = 0;
+            
+        if (t.m_prefixLookup_ != null) {
+        Elements uCE = (Elements)t.m_prefixLookup_.get(element);
+        if (uCE != null) { 
+                    // there is already a set of code points here
+            element.m_mapCE_ = addPrefix(t, uCE.m_mapCE_, element);
+        } 
+                else { // no code points, so this spot is clean
+            element.m_mapCE_ = addPrefix(t, CE_NOT_FOUND_, element);
+            uCE = new Elements(element);
+            uCE.m_cPoints_ = uCE.m_uchars_;
+            t.m_prefixLookup_.put(uCE, uCE);
+        }
+        if (m_utilElement2_.m_prefixChars_.length() 
+            != element.m_prefixChars_.length() - element.m_prefix_
+                    || !m_utilElement2_.m_prefixChars_.regionMatches(0,
+                                     element.m_prefixChars_, element.m_prefix_,
+                                     m_utilElement2_.m_prefixChars_.length())) {
+            // do it!
+                    m_utilElement2_.m_mapCE_ = addPrefix(t, element.m_mapCE_, 
+                                                         m_utilElement2_);
+        }
+        }
+    }
+    
+    // We need to use the canonical iterator here
+    // the way we do it is to generate the canonically equivalent strings 
+    // for the contraction and then add the sequences that pass FCD check
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1 
+        && !(element.m_cPoints_.length() - element.m_cPointsOffset_ == 2 
+         && UTF16.isLeadSurrogate(element.m_cPoints_.charAt(0)) 
+         && UTF16.isTrailSurrogate(element.m_cPoints_.charAt(1)))) { 
+            // this is a contraction, we should check whether a composed form 
+            // should also be included
+        m_utilCanIter_.setSource(element.m_cPoints_);
+        String source = m_utilCanIter_.next();
+        while (source != null && source.length() > 0) {
+        if (Normalizer.quickCheck(source, Normalizer.FCD,0) 
+                    != Normalizer.NO) {
+            element.m_uchars_ = source;
+            element.m_cPoints_ = element.m_uchars_;
+            finalizeAddition(t, element);
+        }
+        source = m_utilCanIter_.next();
+        }
+        
+        return element.m_mapCE_;
+    } 
+        else {
+        return finalizeAddition(t, element);  
+    }
+    }
+    
+    /**
+     * Adds an expansion ce to the expansion vector
+     * @param expansions vector to add to
+     * @param value of the expansion
+     * @return the current position of the new element
+     */
+    private static final int addExpansion(Vector expansions, int value) 
+    {
+    expansions.add(new Integer(value));
+    return expansions.size() - 1;
+    }
+    
+    /**
+     * Looks for the maximum length of all expansion sequences ending with the 
+     * same collation element. The size required for maxexpansion and maxsize 
+     * is returned if the arrays are too small.
+     * @param endexpansion the last expansion collation element to be added
+     * @param expansionsize size of the expansion
+     * @param maxexpansion data structure to store the maximum expansion data.
+     * @returns size of the maxexpansion and maxsize used.
+     */
+    private static int setMaxExpansion(int endexpansion, byte expansionsize,
+                       MaxExpansionTable maxexpansion)
+    {
+    int start = 0;
+    int limit = maxexpansion.m_endExpansionCE_.size();
+        long unsigned = (long)endexpansion;
+        unsigned &= 0xFFFFFFFFl;
+    
+    // using binary search to determine if last expansion element is 
+    // already in the array 
+    int result = -1;
+    while (start < limit - 1) {                                                
+        int mid = start + ((limit - start) >> 1);                                    
+            long unsignedce = ((Integer)maxexpansion.m_endExpansionCE_.get(
+                                       mid)).intValue(); 
+            unsignedce &= 0xFFFFFFFFl;
+        if (unsigned <= unsignedce) {                                                   
+        limit = mid;                                                           
+        }                                                                        
+        else {                                                                   
+        start = mid;                                                           
+        }                                                                        
+    } 
+          
+    if (((Integer)maxexpansion.m_endExpansionCE_.get(start)).intValue() 
+        == endexpansion) {                                                     
+        result = start;  
+    }                                                                          
+    else if (((Integer)maxexpansion.m_endExpansionCE_.get(limit)).intValue() 
+         == endexpansion) {                                                     
+        result = limit;      
+    }                                            
+    if (result > -1) {
+        // found the ce in expansion, we'll just modify the size if it 
+        // is smaller
+        Object currentsize = maxexpansion.m_expansionCESize_.get(result);
+        if (((Byte)currentsize).byteValue() < expansionsize) {
+        maxexpansion.m_expansionCESize_.set(result, 
+                            new Byte(expansionsize));
+        }
+    }
+    else {
+        // we'll need to squeeze the value into the array. initial 
+        // implementation. shifting the subarray down by 1
+        maxexpansion.m_endExpansionCE_.insertElementAt(
+                                                   new Integer(endexpansion),
+                                                   start + 1);
+        maxexpansion.m_expansionCESize_.insertElementAt(
+                                new Byte(expansionsize),
+                                start + 1);
+    }
+    return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    /**
+     * Sets the maximum length of all jamo expansion sequences ending with the 
+     * same collation element. The size required for maxexpansion and maxsize 
+     * is returned if the arrays are too small.
+     * @param ch the jamo codepoint
+     * @param endexpansion the last expansion collation element to be added
+     * @param expansionsize size of the expansion
+     * @param maxexpansion data structure to store the maximum expansion data.
+     * @returns size of the maxexpansion and maxsize used.
+     */
+    private static int setMaxJamoExpansion(char ch, int endexpansion,
+                       byte expansionsize,
+                       MaxJamoExpansionTable maxexpansion)
+    {
+    boolean isV = true;
+    if (ch >= 0x1100 && ch <= 0x1112) {
+        // determines L for Jamo, doesn't need to store this since it is 
+        // never at the end of a expansion
+        if (maxexpansion.m_maxLSize_ < expansionsize) {
+        maxexpansion.m_maxLSize_ = expansionsize;
+        }
+        return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    if (ch >= 0x1161 && ch <= 0x1175) {
+        // determines V for Jamo
+        if (maxexpansion.m_maxVSize_ < expansionsize) {
+        maxexpansion.m_maxVSize_ = expansionsize;
+        }
+    }
+    
+    if (ch >= 0x11A8 && ch <= 0x11C2) {
+        isV = false;
+        // determines T for Jamo
+        if (maxexpansion.m_maxTSize_ < expansionsize) {
+        maxexpansion.m_maxTSize_ = expansionsize;
+        }
+    }
+
+        int pos = maxexpansion.m_endExpansionCE_.size();    
+    while (pos > 0) {
+        pos --;
+        if (((Integer)maxexpansion.m_endExpansionCE_.get(pos)).intValue() 
+        == endexpansion) {
+        return maxexpansion.m_endExpansionCE_.size();
+        }
+    }
+    maxexpansion.m_endExpansionCE_.add(new Integer(endexpansion));
+    maxexpansion.m_isV_.add(isV ? Boolean.TRUE : Boolean.FALSE);
+          
+    return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    /**
+     * Adds a prefix to the table
+     * @param t build table to update
+     * @param CE collation element to add
+     * @param element rule element to add
+     * @return modified ce
+     */
+    private int addPrefix(BuildTable t, int CE, Elements element) 
+    {
+    // currently the longest prefix we're supporting in Japanese is two 
+    // characters long. Although this table could quite easily mimic 
+    // complete contraction stuff there is no good reason to make a general 
+    // solution, as it would require some error prone messing.
+    ContractionTable contractions = t.m_contractions_;
+    String oldCP = element.m_cPoints_;
+    int oldCPOffset = element.m_cPointsOffset_;
+        
+    contractions.m_currentTag_ = CE_SPEC_PROC_TAG_;
+    // here, we will normalize & add prefix to the table.
+    int size = element.m_prefixChars_.length() - element.m_prefix_;
+    for (int j = 1; j < size; j ++) {   
+        // First add NFD prefix chars to unsafe CP hash table 
+        // Unless it is a trail surrogate, which is handled algoritmically 
+        // and shouldn't take up space in the table.
+        char ch = element.m_prefixChars_.charAt(j + element.m_prefix_);
+        if (!UTF16.isTrailSurrogate(ch)) {
+        unsafeCPSet(t.m_unsafeCP_, ch);
+        }
+    }
+        
+    // StringBuffer reversed = new StringBuffer();
+        m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+    for (int j = 0; j < size; j ++) { 
+        // prefixes are going to be looked up backwards
+        // therefore, we will promptly reverse the prefix buffer...
+        int offset = element.m_prefixChars_.length() - j - 1;
+        m_utilStringBuffer_.append(element.m_prefixChars_.charAt(offset));
+    }
+    element.m_prefixChars_ = m_utilStringBuffer_.toString();
+    element.m_prefix_ = 0;
+    
+    // the first codepoint is also unsafe, as it forms a 'contraction' with 
+    // the prefix
+    if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(0))) {
+        unsafeCPSet(t.m_unsafeCP_, element.m_cPoints_.charAt(0));
+    }
+        
+    element.m_cPoints_ = element.m_prefixChars_;
+    element.m_cPointsOffset_ = element.m_prefix_;
+    
+    // Add the last char of the contraction to the contraction-end hash 
+    // table. unless it is a trail surrogate, which is handled 
+    // algorithmically and shouldn't be in the table
+    if (!UTF16.isTrailSurrogate(
+                    element.m_cPoints_.charAt(element.m_cPoints_.length() - 1))) {
+        ContrEndCPSet(t.m_contrEndCP_, element.m_cPoints_.charAt(
+                                     element.m_cPoints_.length() - 1));
+    }
+    // First we need to check if contractions starts with a surrogate
+    // int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+    
+    // If there are any Jamos in the contraction, we should turn on special 
+    // processing for Jamos
+    if (isJamo(element.m_prefixChars_.charAt(element.m_prefix_))) {
+        t.m_collator_.m_isJamoSpecial_ = true;
+    }
+    // then we need to deal with it 
+    // we could aready have something in table - or we might not 
+    if (!isPrefix(CE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        int firstContractionOffset = addContraction(contractions, 
+                            CONTRACTION_TABLE_NEW_ELEMENT_, 
+                            (char)0, CE);
+        int newCE = processContraction(contractions, element, 
+                       CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+                           element.m_prefixChars_.charAt(element.m_prefix_), 
+                           newCE);
+        addContraction(contractions, firstContractionOffset, (char)0xFFFF, 
+                           CE);
+        CE = constructSpecialCE(CE_SPEC_PROC_TAG_, firstContractionOffset);
+    } 
+    else { 
+        // we are adding to existing contraction 
+        // there were already some elements in the table, so we need to add 
+        // a new contraction 
+        // Two things can happen here: either the codepoint is already in 
+        // the table, or it is not
+        char ch = element.m_prefixChars_.charAt(element.m_prefix_);
+        int position = findCP(contractions, CE, ch);
+        if (position > 0) {       
+        // if it is we just continue down the chain 
+        int eCE = getCE(contractions, CE, position);
+        int newCE = processContraction(contractions, element, eCE);
+        setContraction(contractions, CE, position, ch, newCE);
+        } 
+        else {                  
+        // if it isn't, we will have to create a new sequence 
+        processContraction(contractions, element, CE_NOT_FOUND_);
+        insertContraction(contractions, CE, ch, element.m_mapCE_);
+        }
+    }
+    
+    element.m_cPoints_ = oldCP;
+    element.m_cPointsOffset_ = oldCPOffset;
+    
+    return CE;
+    }
+    
+    /**
+     * Checks if the argument ce is a contraction
+     * @param CE collation element
+     * @return true if argument ce is a contraction
+     */
+    private static final boolean isContraction(int CE) 
+    {
+    return isSpecial(CE) && (getCETag(CE) == CE_CONTRACTION_TAG_);
+    }
+    
+    /**
+     * Checks if the argument ce has a prefix
+     * @param CE collation element
+     * @return true if argument ce has a prefix
+     */
+    private static final boolean isPrefix(int CE) 
+    {
+    return isSpecial(CE) && (getCETag(CE) == CE_SPEC_PROC_TAG_);
+    }
+    
+    /**
+     * Checks if the argument ce is special
+     * @param CE collation element
+     * @return true if argument ce is special
+     */
+    private static final boolean isSpecial(int CE) 
+    {
+    return (CE & RuleBasedCollator.CE_SPECIAL_FLAG_) == 0xF0000000;
+    }
+    
+    /**
+     * Checks if the argument ce has a prefix
+     * @param CE collation element
+     * @return true if argument ce has a prefix
+     */
+    private static final int getCETag(int CE) 
+    {
+    return (CE & RuleBasedCollator.CE_TAG_MASK_) >>> 
+        RuleBasedCollator.CE_TAG_SHIFT_;
+    }
+    
+    /**
+     * Gets the ce at position in contraction table
+     * @param table contraction table
+     * @param position offset to the contraction table
+     * @return ce
+     */
+    private static final int getCE(ContractionTable table, int element, 
+                   int position) 
+    {
+    element &= 0xFFFFFF;
+        BasicContractionTable tbl = getBasicContractionTable(table, element);
+        
+        if (tbl == null) {
+            return CE_NOT_FOUND_;
+        }
+    if (position > tbl.m_CEs_.size() || position == -1) {
+        return CE_NOT_FOUND_;
+    } 
+    else {
+        return ((Integer)tbl.m_CEs_.get(position)).intValue();
+    }
+    }
+    
+    /**
+     * Sets the unsafe character
+     * @param table unsafe table
+     * @param c character to be added
+     */
+    private static final void unsafeCPSet(byte table[], char c) 
+    {
+    int hash = c;
+    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+        if (hash >= 0xd800 && hash <= 0xf8ff) {
+        // Part of a surrogate, or in private use area. 
+        // These don't go in the table                            
+        return;
+        }
+        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+    }
+    table[hash >> 3] |= (1 << (hash & 7));
+    }
+    
+    /**
+     * Sets the contraction end character
+     * @param table contraction end table
+     * @param c character to be added
+     */
+    private static final void ContrEndCPSet(byte table[], char c) 
+    {
+    int hash = c;
+    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+    }
+    table[hash >> 3] |= (1 << (hash & 7));
+    }
+    
+    /** 
+     * Adds more contractions in table. If element is non existant, it creates 
+     * on. Returns element handle 
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param codePoint codepoint to add
+     * @param value
+     * @return collation element
+     */
+    private static int addContraction(ContractionTable table, int element, 
+                                      char codePoint, int value) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    } 
+    
+    tbl.m_CEs_.add(new Integer(value));
+    tbl.m_codePoints_.append(codePoint);
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+
+    /**
+     * Adds a contraction element to the table
+     * @param table contraction table to update
+     * @return contraction 
+     */
+    private static BasicContractionTable addAContractionElement(
+                                ContractionTable table) 
+    {
+    BasicContractionTable result = new BasicContractionTable();
+    table.m_elements_.add(result);
+    return result;
+    }
+
+    /**
+     * Constructs a special ce
+     * @param tag special tag
+     * @param CE collation element 
+     * @return a contraction ce
+     */
+    private static final int constructSpecialCE(int tag, int CE) 
+    {
+    return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+        | (tag << RuleBasedCollator.CE_TAG_SHIFT_) | (CE & 0xFFFFFF);
+    }
+    
+    /**
+     * Sets and inserts the element that has a contraction
+     * @param contractions contraction table 
+     * @param element contracting element
+     * @param existingCE
+     * @return contraction ce
+     */
+    private static int processContraction(ContractionTable contractions, 
+                      Elements element, 
+                      int existingCE) 
+    {
+    int firstContractionOffset = 0;
+    // end of recursion 
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ == 1) {
+        if (isContractionTableElement(existingCE) 
+        && getCETag(existingCE) == contractions.m_currentTag_) {
+        changeContraction(contractions, existingCE, (char)0, 
+                  element.m_mapCE_);
+        changeContraction(contractions, existingCE, (char)0xFFFF,
+                                  element.m_mapCE_);
+        return existingCE;
+        } 
+        else {
+        // can't do just that. existingCe might be a contraction, 
+        // meaning that we need to do another step
+        return element.m_mapCE_; 
+        }
+    }
+    
+    // this recursion currently feeds on the only element we have... 
+    // We will have to copy it in order to accomodate for both backward 
+    // and forward cycles
+    // we encountered either an empty space or a non-contraction element 
+    // this means we are constructing a new contraction sequence 
+    element.m_cPointsOffset_ ++;
+    if (!isContractionTableElement(existingCE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        firstContractionOffset = addContraction(contractions, 
+                            CONTRACTION_TABLE_NEW_ELEMENT_, 
+                            (char)0, existingCE);
+        int newCE = processContraction(contractions, element, 
+                       CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+               element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+               newCE);
+        addContraction(contractions, firstContractionOffset, 
+               (char)0xFFFF, existingCE);
+        existingCE = constructSpecialCE(contractions.m_currentTag_, 
+                        firstContractionOffset);
+    } 
+    else { 
+        // we are adding to existing contraction
+        // there were already some elements in the table, so we need to add 
+        // a new contraction 
+        // Two things can happen here: either the codepoint is already in 
+        // the table, or it is not
+        int position = findCP(contractions, existingCE, 
+                  element.m_cPoints_.charAt(element.m_cPointsOffset_));
+        if (position > 0) {       
+        // if it is we just continue down the chain 
+        int eCE = getCE(contractions, existingCE, position);
+        int newCE = processContraction(contractions, element, eCE);
+        setContraction(contractions, existingCE, position, 
+                           element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        } 
+        else {  
+        // if it isn't, we will have to create a new sequence 
+        int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+        insertContraction(contractions, existingCE, 
+                  element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                  newCE);
+        }
+    }
+    element.m_cPointsOffset_ --;
+    return existingCE;
+    }
+    
+    /**
+     * Checks if CE belongs to the contraction table
+     * @param CE collation element to test
+     * @return true if CE belongs to the contraction table
+     */
+    private static final boolean isContractionTableElement(int CE) 
+    { 
+    return isSpecial(CE) 
+        && (getCETag(CE) == CE_CONTRACTION_TAG_
+        || getCETag(CE) == CE_SPEC_PROC_TAG_);
+    }
+    
+    /**
+     * Gets the codepoint 
+     * @param table contraction table
+     * @param element offset to the contraction element in the table
+     * @param codePoint code point to look for
+     * @return the offset to the code point
+     */
+    private static int findCP(ContractionTable table, int element, 
+                  char codePoint) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        return -1;
+    }
+    
+    int position = 0;
+    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+        position ++;
+        if (position > tbl.m_codePoints_.length()) {
+        return -1;
+        }
+    }
+    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+        return position;
+    } 
+    else {
+        return -1;
+    }
+    }
+
+    /**
+     * Gets the contraction element out of the contraction table
+     * @param table contraction table
+     * @param offset to the element in the contraction table
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final BasicContractionTable getBasicContractionTable(
+                                    ContractionTable table,
+                                    int offset) 
+    {
+        offset &= 0xFFFFFF;
+        if (offset == 0xFFFFFF) {
+        return null;
+        }
+    return (BasicContractionTable)table.m_elements_.get(offset);
+    }
+    
+    /**
+     * Changes the contraction element
+     * @param table contraction table
+     * @param element offset to the element in the contraction table
+     * @param codePoint codepoint 
+     * @param newCE new collation element
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final int changeContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int newCE) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);    
+    if (tbl == null) {
+        return 0;
+    }
+    int position = 0;
+    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+        position ++;
+        if (position > tbl.m_codePoints_.length()) {
+        return CE_NOT_FOUND_;
+        }
+    }
+    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+        tbl.m_CEs_.set(position, new Integer(newCE));
+        return element & 0xFFFFFF;
+    } 
+    else {
+        return CE_NOT_FOUND_;
+    }
+    }
+    
+    /** 
+     * Sets a part of contraction sequence in table. If element is non 
+     * existant, it creates on. Returns element handle.
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param offset
+     * @param codePoint contraction character
+     * @param value ce value
+     * @return new contraction ce
+     */
+    private static final int setContraction(ContractionTable table, 
+                                            int element, int offset, 
+                                            char codePoint, int value) 
+    {
+        element &= 0xFFFFFF;
+    BasicContractionTable tbl = getBasicContractionTable(table, element);    
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    }
+    
+    tbl.m_CEs_.set(offset, new Integer(value));
+    tbl.m_codePoints_.setCharAt(offset, codePoint);
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+    
+    /** 
+     * Inserts a part of contraction sequence in table. Sequences behind the 
+     * offset are moved back. If element is non existent, it creates on. 
+     * @param table contraction
+     * @param element offset to the table contraction
+     * @param codePoint code point
+     * @param value collation element value
+     * @return contraction collation element
+     */
+    private static final int insertContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int value) 
+    {
+    element &= 0xFFFFFF;
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    }
+    
+    int offset = 0;
+    while (tbl.m_codePoints_.charAt(offset) < codePoint 
+           && offset < tbl.m_codePoints_.length()) {
+        offset ++;
+    }
+    
+    tbl.m_CEs_.insertElementAt(new Integer(value), offset);
+    tbl.m_codePoints_.insert(offset, codePoint);
+    
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+    
+    /**
+     * Finalize addition
+     * @param t build table
+     * @param element to add
+     */
+    private final static int finalizeAddition(BuildTable t, Elements element) 
+    {
+    int CE = CE_NOT_FOUND_;
+        // This should add a completely ignorable element to the  
+        // unsafe table, so that backward iteration will skip 
+        // over it when treating contractions. 
+        if (element.m_mapCE_ == 0) { 
+            for (int i = 0; i < element.m_cPoints_.length(); i ++) { 
+                char ch = element.m_cPoints_.charAt(i);
+                if (!UTF16.isTrailSurrogate(ch)) { 
+                    unsafeCPSet(t.m_unsafeCP_, ch); 
+                } 
+            } 
+        } 
+
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1) { 
+        // we're adding a contraction
+        int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+        CE = t.m_mapping_.getValue(cp);
+        CE = addContraction(t, CE, element);
+    } 
+    else { 
+        // easy case
+        CE = t.m_mapping_.getValue(element.m_cPoints_.charAt(
+                                 element.m_cPointsOffset_));
+        
+        if (CE != CE_NOT_FOUND_) {
+        if(isContractionTableElement(CE)) { 
+            // adding a non contraction element (thai, expansion, 
+            // single) to already existing contraction 
+            if (!isPrefix(element.m_mapCE_)) { 
+            // we cannot reenter prefix elements - as we are going 
+            // to create a dead loop
+            // Only expansions and regular CEs can go here... 
+            // Contractions will never happen in this place
+            setContraction(t.m_contractions_, CE, 0, (char)0, 
+                       element.m_mapCE_);
+            // This loop has to change the CE at the end of 
+            // contraction REDO!
+            changeLastCE(t.m_contractions_, CE, element.m_mapCE_);
+            }
+        } 
+        else {
+            t.m_mapping_.setValue(element.m_cPoints_.charAt(
+                                    element.m_cPointsOffset_), 
+                      element.m_mapCE_);
+            if (element.m_prefixChars_ != null && 
+                element.m_prefixChars_.length()>0 &&
+                getCETag(CE) != CE_IMPLICIT_TAG_) {
+                // Add CE for standalone precontext char. 
+                Elements origElem = new Elements();
+                origElem.m_prefixChars_ =  null;
+                origElem.m_uchars_ = element.m_cPoints_;
+                origElem.m_cPoints_ = origElem.m_uchars_;
+                origElem.m_CEs_[0] = CE;
+                origElem.m_mapCE_ = CE;
+                origElem.m_CELength_ = 1;
+                finalizeAddition(t, origElem);
+            }
+        }
+        } 
+        else {
+        t.m_mapping_.setValue(element.m_cPoints_.charAt(
+                                element.m_cPointsOffset_), 
+                                      element.m_mapCE_);
+        }
+    }
+    return CE;
+    }
+    
+    /** 
+     * Note regarding surrogate handling: We are interested only in the single
+     * or leading surrogates in a contraction. If a surrogate is somewhere else
+     * in the contraction, it is going to be handled as a pair of code units,
+     * as it doesn't affect the performance AND handling surrogates specially
+     * would complicate code way too much.
+     */
+    private static int addContraction(BuildTable t, int CE, Elements element) 
+    {
+    ContractionTable contractions = t.m_contractions_;
+    contractions.m_currentTag_ = CE_CONTRACTION_TAG_;
+    
+    // First we need to check if contractions starts with a surrogate
+    int cp = UTF16.charAt(element.m_cPoints_, 0);
+    int cpsize = 1;
+    if (UCharacter.isSupplementary(cp)) {
+        cpsize = 2;
+    }
+    if (cpsize < element.m_cPoints_.length()) { 
+        // This is a real contraction, if there are other characters after 
+        // the first
+        int size = element.m_cPoints_.length() - element.m_cPointsOffset_;
+        for (int j = 1; j < size; j ++) {   
+        // First add contraction chars to unsafe CP hash table 
+        // Unless it is a trail surrogate, which is handled 
+        // algoritmically and shouldn't take up space in the table.
+        if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+                                      element.m_cPointsOffset_ + j))) {
+            unsafeCPSet(t.m_unsafeCP_, 
+                element.m_cPoints_.charAt(
+                              element.m_cPointsOffset_ + j));
+        }
+        }
+        // Add the last char of the contraction to the contraction-end 
+        // hash table. unless it is a trail surrogate, which is handled 
+        // algorithmically and shouldn't be in the table
+        if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+                                  element.m_cPoints_.length() -1))) {
+        ContrEndCPSet(t.m_contrEndCP_, 
+                  element.m_cPoints_.charAt(
+                            element.m_cPoints_.length() -1));
+        }
+    
+        // If there are any Jamos in the contraction, we should turn on 
+        // special processing for Jamos
+        if (isJamo(element.m_cPoints_.charAt(element.m_cPointsOffset_))) {
+        t.m_collator_.m_isJamoSpecial_ = true;
+        }
+        // then we need to deal with it 
+        // we could aready have something in table - or we might not 
+        element.m_cPointsOffset_ += cpsize;
+        if (!isContraction(CE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        int firstContractionOffset = addContraction(contractions, 
+                                CONTRACTION_TABLE_NEW_ELEMENT_, (char)0, CE);
+        int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+                   element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        addContraction(contractions, firstContractionOffset, 
+                               (char)0xFFFF, CE);
+        CE = constructSpecialCE(CE_CONTRACTION_TAG_, 
+                    firstContractionOffset);
+        } 
+        else { 
+        // we are adding to existing contraction 
+        // there were already some elements in the table, so we need to 
+        // add a new contraction
+        // Two things can happen here: either the codepoint is already 
+        // in the table, or it is not 
+        int position = findCP(contractions, CE, 
+                      element.m_cPoints_.charAt(element.m_cPointsOffset_));
+        if (position > 0) {       
+            // if it is we just continue down the chain
+            int eCE = getCE(contractions, CE, position);
+            int newCE = processContraction(contractions, element, eCE);
+            setContraction(contractions, CE, position, 
+                   element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        } 
+        else {                  
+            // if it isn't, we will have to create a new sequence 
+            int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+            insertContraction(contractions, CE, 
+                      element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                                      newCE);
+        }
+        }
+        element.m_cPointsOffset_ -= cpsize;
+        t.m_mapping_.setValue(cp, CE);
+    } 
+    else if (!isContraction(CE)) { 
+        // this is just a surrogate, and there is no contraction 
+        t.m_mapping_.setValue(cp, element.m_mapCE_);
+    } 
+    else { 
+        // fill out the first stage of the contraction with the surrogate 
+        // CE 
+        changeContraction(contractions, CE, (char)0, element.m_mapCE_);
+        changeContraction(contractions, CE, (char)0xFFFF, element.m_mapCE_);
+    }
+    return CE;
+    }
+    
+    /** 
+     * this is for adding non contractions 
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param value collation element value
+     * @return new collation element 
+     */
+    private static final int changeLastCE(ContractionTable table, int element, 
+                                          int value) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        return 0;
+    }
+    
+    tbl.m_CEs_.set(tbl.m_CEs_.size() - 1, new Integer(value));
+    return constructSpecialCE(table.m_currentTag_, element & 0xFFFFFF);
+    }
+    
+    /**
+     * Given a set of ranges calculated by allocWeights(), iterate through the 
+     * weights. Sets the next weight in cegenerator.m_current_.
+     * @param cegenerator object that contains ranges weight range array and
+     *        its rangeCount
+     * @return the next weight
+     */
+    private static int nextWeight(CEGenerator cegenerator) 
+    {
+        if (cegenerator.m_rangesLength_ > 0) {
+            // get maxByte from the .count field
+            int maxByte = cegenerator.m_ranges_[0].m_count_;
+            // get the next weight 
+            int weight = cegenerator.m_ranges_[0].m_start_;
+            if (weight == cegenerator.m_ranges_[0].m_end_) {
+                // this range is finished, remove it and move the following 
+                // ones up 
+                cegenerator.m_rangesLength_ --;
+                if (cegenerator.m_rangesLength_ > 0) {
+                    System.arraycopy(cegenerator.m_ranges_, 1, 
+                                     cegenerator.m_ranges_, 0, 
+                                     cegenerator.m_rangesLength_);
+                    cegenerator.m_ranges_[0].m_count_ = maxByte; 
+                    // keep maxByte in ranges[0]
+                }
+            } 
+            else {
+                // increment the weight for the next value
+                cegenerator.m_ranges_[0].m_start_ 
+            = incWeight(weight, cegenerator.m_ranges_[0].m_length2_, 
+                maxByte);
+            }
+            return weight;
+        }
+        return -1;
+    }
+    
+    /**
+     * Increment the collation weight
+     * @param weight to increment
+     * @param length
+     * @param maxByte
+     * @return new incremented weight
+     */
+    private static final int incWeight(int weight, int length, int maxByte) 
+    {
+        while (true) {
+            int b = getWeightByte(weight, length);
+            if (b < maxByte) {
+                return setWeightByte(weight, length, b + 1);
+            } 
+            else {
+                // roll over, set this byte to BYTE_FIRST_TAILORED_ and 
+                // increment the previous one
+                weight = setWeightByte(weight, length, 
+                                       RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                -- length;
+            }
+        }
+    }
+    
+    /**
+     * Gets the weight byte
+     * @param weight
+     * @param index
+     * @return byte
+     */
+    private static final int getWeightByte(int weight, int index) 
+    {
+        return (weight >> ((4 - index) << 3)) & 0xff;
+    }
+    
+    /**
+     * Set the weight byte in table
+     * @param weight 
+     * @param index
+     * @param b byte
+     */
+    private static final int setWeightByte(int weight, int index, int b) 
+    {
+        index <<= 3;
+        // 0xffffffff except a 00 "hole" for the index-th byte
+        int mask = 0xffffffff >>> index;
+        index = 32 - index;
+        mask |= 0xffffff00 << index;
+        return (weight & mask) | (b << index);
+    }
+    
+    /**
+     * Call getWeightRanges and then determine heuristically which ranges to 
+     * use for a given number of weights between (excluding) two limits
+     * @param lowerLimit
+     * @param upperLimit
+     * @param n
+     * @param maxByte
+     * @param ranges
+     * @return
+     */
+    private int allocateWeights(int lowerLimit, int upperLimit, int n,
+                                int maxByte, WeightRange ranges[]) 
+    {
+        // number of usable byte values 3..maxByte
+        int countBytes = maxByte - RuleBasedCollator.BYTE_FIRST_TAILORED_ + 1;
+        // [0] unused, [5] to make index checks unnecessary, m_utilCountBuffer_
+        // countBytes to the power of index, m_utilLongBuffer_ for unsignedness
+        // gcc requires explicit initialization 
+        m_utilLongBuffer_[0] = 1;
+        m_utilLongBuffer_[1] = countBytes;
+        m_utilLongBuffer_[2] = m_utilLongBuffer_[1] * countBytes;
+        m_utilLongBuffer_[3] = m_utilLongBuffer_[2] * countBytes;
+        m_utilLongBuffer_[4] = m_utilLongBuffer_[3] * countBytes;
+        int rangeCount = getWeightRanges(lowerLimit, upperLimit, maxByte, 
+                                         countBytes, ranges);
+        if (rangeCount <= 0) {
+            return 0;
+        }
+        // what is the maximum number of weights with these ranges?
+        long maxCount = 0;
+        for (int i = 0; i < rangeCount; ++ i) {
+            maxCount += (long)ranges[i].m_count_ 
+        * m_utilLongBuffer_[4 - ranges[i].m_length_];
+        }
+        if (maxCount < n) {
+            return 0;
+        }
+        // set the length2 and count2 fields
+        for (int i = 0; i < rangeCount; ++ i) {
+            ranges[i].m_length2_ = ranges[i].m_length_;
+            ranges[i].m_count2_ = ranges[i].m_count_;
+        }
+        // try until we find suitably large ranges
+        while (true) {
+            // get the smallest number of bytes in a range
+            int minLength = ranges[0].m_length2_;
+            // sum up the number of elements that fit into ranges of each byte 
+            // length
+            Arrays.fill(m_utilCountBuffer_, 0);
+            for (int i = 0; i < rangeCount; ++ i) {
+                m_utilCountBuffer_[ranges[i].m_length2_] += ranges[i].m_count2_;
+            }
+            // now try to allocate n elements in the available short ranges 
+            if (n <= m_utilCountBuffer_[minLength] 
+        + m_utilCountBuffer_[minLength + 1]) {
+                // trivial cases, use the first few ranges
+                maxCount = 0;
+                rangeCount = 0;
+                do {
+                    maxCount += ranges[rangeCount].m_count2_;
+                    ++ rangeCount;
+                } while (n > maxCount);
+                break;
+            } 
+            else if (n <= ranges[0].m_count2_ * countBytes) {
+                // easy case, just make this one range large enough by 
+                // lengthening it once more, possibly split it
+                rangeCount = 1;
+                // calculate how to split the range between maxLength-1 
+                // (count1) and maxLength (count2) 
+                long power_1 
+            = m_utilLongBuffer_[minLength - ranges[0].m_length_];
+                long power = power_1 * countBytes;
+                int count2 = (int)((n + power - 1) / power);
+                int count1 = ranges[0].m_count_ - count2;
+                // split the range
+                if (count1 < 1) {
+                    // lengthen the entire range to maxLength 
+                    lengthenRange(ranges, 0, maxByte, countBytes);
+                } 
+                else {
+                    // really split the range
+                    // create a new range with the end and initial and current 
+                    // length of the old one
+                    rangeCount = 2;
+                    ranges[1].m_end_ = ranges[0].m_end_;
+                    ranges[1].m_length_ = ranges[0].m_length_;
+                    ranges[1].m_length2_ = minLength;
+                    // set the end of the first range according to count1
+                    int i = ranges[0].m_length_;
+                    int b = getWeightByte(ranges[0].m_start_, i) + count1 - 1;
+                    // ranges[0].count and count1 may be >countBytes from 
+                    // merging adjacent ranges; b > maxByte is possible
+                    if (b <= maxByte) {
+                        ranges[0].m_end_ = setWeightByte(ranges[0].m_start_, i, 
+                                                         b);
+                    } 
+                    else {
+                        ranges[0].m_end_ = setWeightByte(
+                             incWeight(ranges[0].m_start_, i - 1, 
+                                   maxByte), 
+                             i, b - countBytes);
+                    }
+                    // set the bytes in the end weight at length + 1..length2 
+                    // to maxByte
+                    b = (maxByte << 24) | (maxByte << 16) | (maxByte << 8)
+                        | maxByte; // this used to be 0xffffffff 
+                    ranges[0].m_end_ = truncateWeight(ranges[0].m_end_, i) 
+            | (b >>> (i << 3)) 
+            & (b << ((4 - minLength) << 3));
+                    // set the start of the second range to immediately follow 
+                    // the end of the first one
+                    ranges[1].m_start_ = incWeight(ranges[0].m_end_, minLength, 
+                                                   maxByte);
+                    // set the count values (informational)
+                    ranges[0].m_count_ = count1;
+                    ranges[1].m_count_ = count2;
+    
+                    ranges[0].m_count2_ = (int)(count1 * power_1);
+                    // will be *countBytes when lengthened 
+                    ranges[1].m_count2_ = (int)(count2 * power_1); 
+    
+                    // lengthen the second range to maxLength
+                    lengthenRange(ranges, 1, maxByte, countBytes);
+                }
+                break;
+            }
+            // no good match, lengthen all minLength ranges and iterate 
+            for (int i=0; ranges[i].m_length2_ == minLength; ++ i) {
+                lengthenRange(ranges, i, maxByte, countBytes);
+            }
+        }
+    
+        if (rangeCount > 1) {
+            // sort the ranges by weight values 
+            Arrays.sort(ranges, 0, rangeCount);
+        }
+    
+        // set maxByte in ranges[0] for ucol_nextWeight()
+        ranges[0].m_count_ = maxByte;
+    
+        return rangeCount;
+    }
+    
+    /**
+     * Updates the range length
+     * @param range weight range array
+     * @param offset to weight range array
+     * @param maxByte
+     * @param countBytes
+     * @return new length
+     */
+    private static final int lengthenRange(WeightRange range[], int offset, 
+                                           int maxByte, int countBytes) 
+    {
+        int length = range[offset].m_length2_ + 1;
+        range[offset].m_start_ = setWeightTrail(range[offset].m_start_, length, 
+                        RuleBasedCollator.BYTE_FIRST_TAILORED_);
+        range[offset].m_end_ = setWeightTrail(range[offset].m_end_, length, 
+                                              maxByte);
+        range[offset].m_count2_ *= countBytes;
+        range[offset].m_length2_ = length;
+        return length;
+    }
+    
+    /**
+     * Gets the weight 
+     * @param weight
+     * @param length
+     * @param trail
+     * @return new weight
+     */
+    private static final int setWeightTrail(int weight, int length, int trail) 
+    {
+        length = (4 - length) << 3;
+        return (weight & (0xffffff00 << length)) | (trail << length);
+    }
+    
+    /**
+     * take two CE weights and calculate the
+     * possible ranges of weights between the two limits, excluding them
+     * for weights with up to 4 bytes there are up to 2*4-1=7 ranges
+     * @param lowerLimit
+     * @param upperLimit
+     * @param maxByte
+     * @param countBytes
+     * @param ranges
+     * @return weight ranges
+     */
+    private int getWeightRanges(int lowerLimit, int upperLimit, int maxByte, 
+                                int countBytes, WeightRange ranges[]) 
+    {
+        // assume that both lowerLimit & upperLimit are not 0 
+        // get the lengths of the limits 
+        int lowerLength = lengthOfWeight(lowerLimit);
+        int upperLength = lengthOfWeight(upperLimit);
+        if (Utility.compareUnsigned(lowerLimit, upperLimit) >= 0) {
+            return 0;
+        }
+        // check that neither is a prefix of the other
+        if (lowerLength < upperLength) {
+            if (lowerLimit == truncateWeight(upperLimit, lowerLength)) {
+                return 0;
+            }
+        }
+        // if the upper limit is a prefix of the lower limit then the earlier 
+        // test lowerLimit >= upperLimit has caught it
+        // reset local variables
+        // With the limit lengths of 1..4, there are up to 7 ranges for 
+        // allocation:
+        // range     minimum length
+        // lower[4]  4
+        // lower[3]  3
+        // lower[2]  2
+        // middle    1
+        // upper[2]  2
+        // upper[3]  3
+        // upper[4]  4
+        // We are now going to calculate up to 7 ranges.
+        // Some of them will typically overlap, so we will then have to merge 
+        // and eliminate ranges.
+        
+        // We have to clean cruft from previous invocations
+        // before doing anything. C++ already does that
+        for(int length = 0; length < 5; length++) {
+            m_utilLowerWeightRange_[length].clear();
+            m_utilUpperWeightRange_[length].clear();
+        }
+        m_utilWeightRange_.clear();
+        
+        int weight = lowerLimit;
+        for (int length = lowerLength; length >= 2; -- length) {
+            m_utilLowerWeightRange_[length].clear();
+            int trail = getWeightByte(weight, length);
+            if (trail < maxByte) {
+                m_utilLowerWeightRange_[length].m_start_ 
+            = incWeightTrail(weight, length);
+                m_utilLowerWeightRange_[length].m_end_ 
+            = setWeightTrail(weight, length, maxByte);
+                m_utilLowerWeightRange_[length].m_length_ = length;
+                m_utilLowerWeightRange_[length].m_count_ = maxByte - trail;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        m_utilWeightRange_.m_start_ = incWeightTrail(weight, 1);
+    
+        weight = upperLimit;
+        // [0] and [1] are not used - this simplifies indexing, 
+        // m_utilUpperWeightRange_
+        
+        for (int length = upperLength; length >= 2; length --) {
+            int trail = getWeightByte(weight, length);
+            if (trail > RuleBasedCollator.BYTE_FIRST_TAILORED_) {
+                m_utilUpperWeightRange_[length].m_start_ 
+            = setWeightTrail(weight, length, 
+                     RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                m_utilUpperWeightRange_[length].m_end_ 
+            = decWeightTrail(weight, length);
+                m_utilUpperWeightRange_[length].m_length_ = length;
+                m_utilUpperWeightRange_[length].m_count_ = trail
+            - RuleBasedCollator.BYTE_FIRST_TAILORED_;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        m_utilWeightRange_.m_end_ = decWeightTrail(weight, 1);
+    
+        // set the middle range
+        m_utilWeightRange_.m_length_ = 1;
+        if (Utility.compareUnsigned(m_utilWeightRange_.m_end_, m_utilWeightRange_.m_start_) >= 0) {
+        //if (m_utilWeightRange_.m_end_ >= m_utilWeightRange_.m_start_) {
+            m_utilWeightRange_.m_count_ 
+        = ((m_utilWeightRange_.m_end_ - m_utilWeightRange_.m_start_) 
+           >>> 24) + 1;
+        } 
+        else {
+            // eliminate overlaps
+            // remove the middle range
+            m_utilWeightRange_.m_count_ = 0;
+            // reduce or remove the lower ranges that go beyond upperLimit
+            for (int length = 4; length >= 2; -- length) {
+                if (m_utilLowerWeightRange_[length].m_count_ > 0 
+                    && m_utilUpperWeightRange_[length].m_count_ > 0) {
+                    int start = m_utilUpperWeightRange_[length].m_start_;
+                    int end = m_utilLowerWeightRange_[length].m_end_;
+                    if (end >= start || incWeight(end, length, maxByte) 
+            == start) {
+                        // lower and upper ranges collide or are directly 
+                        // adjacent: merge these two and remove all shorter 
+                        // ranges
+                        start = m_utilLowerWeightRange_[length].m_start_;
+                        end = m_utilLowerWeightRange_[length].m_end_ 
+                            = m_utilUpperWeightRange_[length].m_end_;
+                        // merging directly adjacent ranges needs to subtract 
+                        // the 0/1 gaps in between;
+                        // it may result in a range with count>countBytes
+                        m_utilLowerWeightRange_[length].m_count_ 
+                = getWeightByte(end, length)
+                - getWeightByte(start, length) + 1 
+                + countBytes * (getWeightByte(end, length - 1)
+                        - getWeightByte(start, 
+                                length - 1));
+                        m_utilUpperWeightRange_[length].m_count_ = 0;
+                        while (-- length >= 2) {
+                            m_utilLowerWeightRange_[length].m_count_ 
+                                = m_utilUpperWeightRange_[length].m_count_ = 0;
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    
+        // copy the ranges, shortest first, into the result array 
+        int rangeCount = 0;
+        if (m_utilWeightRange_.m_count_ > 0) {
+            ranges[0] = new WeightRange(m_utilWeightRange_);
+            rangeCount = 1;
+        }
+        for (int length = 2; length <= 4; ++ length) {
+            // copy upper first so that later the middle range is more likely 
+            // the first one to use
+            if (m_utilUpperWeightRange_[length].m_count_ > 0) {
+                ranges[rangeCount] 
+            = new WeightRange(m_utilUpperWeightRange_[length]);
+                ++ rangeCount;
+            }
+            if (m_utilLowerWeightRange_[length].m_count_ > 0) {
+                ranges[rangeCount] 
+            = new WeightRange(m_utilLowerWeightRange_[length]);
+                ++ rangeCount;
+            }
+        }
+        return rangeCount;
+    }
+    
+    /**
+     * Truncates the weight with length
+     * @param weight
+     * @param length
+     * @return truncated weight
+     */
+    private static final int truncateWeight(int weight, int length) 
+    {
+        return weight & (0xffffffff << ((4 - length) << 3));
+    }
+    
+    /**
+     * Length of the weight
+     * @param weight
+     * @return length of the weight
+     */
+    private static final int lengthOfWeight(int weight) 
+    {
+        if ((weight & 0xffffff) == 0) {
+            return 1;
+        } 
+        else if ((weight & 0xffff) == 0) {
+            return 2;
+        } 
+        else if ((weight & 0xff) == 0) {
+            return 3;
+        } 
+        return 4;
+    }
+    
+    /**
+     * Increment the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static final int incWeightTrail(int weight, int length) 
+    {
+        return weight + (1 << ((4-length) << 3));
+    }
+
+    /**
+     * Decrement the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static int decWeightTrail(int weight, int length) 
+    {
+        return weight - (1 << ((4 - length) << 3));
+    }
+    
+    /**
+     * Gets the codepoint 
+     * @param tbl contraction table
+     * @param codePoint code point to look for
+     * @return the offset to the code point
+     */
+    private static int findCP(BasicContractionTable tbl, char codePoint) 
+    {
+        int position = 0;
+        while (codePoint > tbl.m_codePoints_.charAt(position)) {
+            position ++;
+            if (position > tbl.m_codePoints_.length()) {
+                return -1;
+            }
+        }
+        if (codePoint == tbl.m_codePoints_.charAt(position)) {
+            return position;
+        } 
+        else {
+            return -1;
+        }
+    }
+
+    /**
+     * Finds a contraction ce
+     * @param table
+     * @param element
+     * @param ch
+     * @return ce
+     */
+    private static int findCE(ContractionTable table, int element, char ch) 
+    {
+        if (table == null) {
+            return CE_NOT_FOUND_;
+        }
+        BasicContractionTable tbl = getBasicContractionTable(table, element);
+        if (tbl == null) {
+            return CE_NOT_FOUND_;
+        }
+        int position = findCP(tbl, ch);
+        if (position > tbl.m_CEs_.size() || position < 0) {
+            return CE_NOT_FOUND_;
+        } 
+        return ((Integer)tbl.m_CEs_.get(position)).intValue();
+    }    
+    
+    /**
+     * Checks if the string is tailored in the contraction
+     * @param table contraction table
+     * @param element 
+     * @param array character array to check
+     * @param offset array offset
+     * @return true if it is tailored
+     */
+    private static boolean isTailored(ContractionTable table, int element, 
+                                      char array[], int offset) 
+    {
+        while (array[offset] != 0) {
+            element = findCE(table, element, array[offset]);
+            if (element == CE_NOT_FOUND_) {
+                return false;
+            }
+            if (!isContractionTableElement(element)) {
+                return true;
+            }
+            offset ++;
+        }
+        if (getCE(table, element, 0) != CE_NOT_FOUND_) {
+            return true;
+        } 
+        else {
+            return false; 
+        }
+    }
+    
+    /**
+     * Assemble RuleBasedCollator
+     * @param t build table
+     * @param collator to update
+     */
+    private void assembleTable(BuildTable t, RuleBasedCollator collator) 
+    {
+        IntTrieBuilder mapping = t.m_mapping_;
+        Vector expansions = t.m_expansions_;
+        ContractionTable contractions = t.m_contractions_;
+        MaxExpansionTable maxexpansion = t.m_maxExpansions_;
+        
+        // contraction offset has to be in since we are building on the 
+        // UCA contractions 
+        // int beforeContractions = (HEADER_SIZE_ 
+        //                         + paddedsize(expansions.size() << 2)) >>> 1;
+        collator.m_contractionOffset_ = 0;
+        int contractionsSize = constructTable(contractions);
+        
+        // the following operation depends on the trie data. Therefore, we have 
+        // to do it before the trie is compacted 
+        // sets jamo expansions
+        getMaxExpansionJamo(mapping, maxexpansion, t.m_maxJamoExpansions_,
+                            collator.m_isJamoSpecial_);
+        
+        // TODO: LATIN1 array is now in the utrie - it should be removed from 
+        // the calculation
+        setAttributes(collator, t.m_options_);
+        // copy expansions
+        int size = expansions.size();
+        collator.m_expansion_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            collator.m_expansion_[i] = ((Integer)expansions.get(i)).intValue();
+        }
+        // contractions block 
+        if (contractionsSize != 0) {
+            // copy contraction index 
+            collator.m_contractionIndex_ = new char[contractionsSize];
+            contractions.m_codePoints_.getChars(0, contractionsSize, 
+                                                collator.m_contractionIndex_, 
+                                                0);
+            // copy contraction collation elements
+            collator.m_contractionCE_ = new int[contractionsSize];
+            for (int i = 0; i < contractionsSize; i ++) {
+                collator.m_contractionCE_[i] = ((Integer)
+                        contractions.m_CEs_.get(i)).intValue();
+            }
+        }
+        // copy mapping table
+        collator.m_trie_ = mapping.serialize(t, 
+                         RuleBasedCollator.DataManipulate.getInstance());
+        // copy max expansion table
+        // not copying the first element which is a dummy
+        // to be in synch with icu4c's builder, we continue to use the 
+        // expansion offset
+        // omitting expansion offset in builder
+        collator.m_expansionOffset_ = 0; 
+        size = maxexpansion.m_endExpansionCE_.size();
+        collator.m_expansionEndCE_ = new int[size - 1];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCE_[i - 1] = ((Integer)
+                         maxexpansion.m_endExpansionCE_.get(i)).intValue();
+        }
+        collator.m_expansionEndCEMaxSize_ = new byte[size - 1];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCEMaxSize_[i - 1] 
+        = ((Byte)maxexpansion.m_expansionCESize_.get(i)).byteValue();
+        }
+        // Unsafe chars table.  Finish it off, then copy it.
+        unsafeCPAddCCNZ(t);
+        // Or in unsafebits from UCA, making a combined table.
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+        t.m_unsafeCP_[i] |= RuleBasedCollator.UCA_.m_unsafe_[i];
+        }
+        collator.m_unsafe_ = t.m_unsafeCP_;
+    
+        // Finish building Contraction Ending chars hash table and then copy it 
+        // out.
+        // Or in unsafebits from UCA, making a combined table
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+        t.m_contrEndCP_[i] |= RuleBasedCollator.UCA_.m_contractionEnd_[i];
+        }
+        collator.m_contractionEnd_ = t.m_contrEndCP_;
+    }
+    
+    /**
+     * Sets this collator to use the all options and tables in UCA. 
+     * @param collator which attribute is to be set 
+     * @param option to set with
+     */
+    private static final void setAttributes(RuleBasedCollator collator,
+                        CollationRuleParser.OptionSet option)
+    {
+        collator.latinOneFailed_ = true;
+        collator.m_caseFirst_ = option.m_caseFirst_;
+        collator.setDecomposition(option.m_decomposition_);
+        collator.setAlternateHandlingShifted(
+                         option.m_isAlternateHandlingShifted_);
+        collator.setCaseLevel(option.m_isCaseLevel_);
+        collator.setFrenchCollation(option.m_isFrenchCollation_);
+        collator.m_isHiragana4_ = option.m_isHiragana4_;
+        collator.setStrength(option.m_strength_);
+        collator.m_variableTopValue_ = option.m_variableTopValue_;    
+        collator.latinOneFailed_ = false;
+    }
+    
+    /**
+     * Constructing the contraction table
+     * @param table contraction table
+     * @return 
+     */
+    private int constructTable(ContractionTable table) 
+    {
+        // See how much memory we need 
+        int tsize = table.m_elements_.size();
+        if (tsize == 0) {
+            return 0;
+        }
+        table.m_offsets_.clear();
+        int position = 0;
+        for (int i = 0; i < tsize; i ++) {
+            table.m_offsets_.add(new Integer(position));
+            position += ((BasicContractionTable)
+             table.m_elements_.get(i)).m_CEs_.size();
+        }
+        table.m_CEs_.clear();
+        table.m_codePoints_.delete(0, table.m_codePoints_.length());
+        // Now stuff the things in
+        StringBuffer cpPointer = table.m_codePoints_;
+        Vector CEPointer = table.m_CEs_;
+        for (int i = 0; i < tsize; i ++) {
+            BasicContractionTable bct = (BasicContractionTable)
+        table.m_elements_.get(i);
+            int size = bct.m_CEs_.size();
+            char ccMax = 0;
+            char ccMin = 255;
+            int offset = CEPointer.size();
+            CEPointer.add(bct.m_CEs_.get(0));
+            for (int j = 1; j < size; j ++) {
+                char ch = bct.m_codePoints_.charAt(j);
+                char cc = (char)(UCharacter.getCombiningClass(ch) & 0xFF);
+                if (cc > ccMax) {
+                    ccMax = cc;
+                }
+                if (cc < ccMin) {
+                    ccMin = cc;
+                }
+                cpPointer.append(ch);
+                CEPointer.add(bct.m_CEs_.get(j));
+            }
+            cpPointer.insert(offset, 
+                             (char)(((ccMin == ccMax) ? 1 : 0 << 8) | ccMax));
+            for (int j = 0; j < size; j ++) {
+                if (isContractionTableElement(((Integer)
+                           CEPointer.get(offset + j)).intValue())) {
+                    int ce = ((Integer)CEPointer.get(offset + j)).intValue();
+                    CEPointer.set(offset + j, 
+                  new Integer(constructSpecialCE(getCETag(ce), 
+                                 ((Integer)table.m_offsets_.get(
+                                                getContractionOffset(ce))).intValue())));
+                }
+            }
+        }
+    
+        for (int i = 0; i <= 0x10FFFF; i ++) {
+            int CE = table.m_mapping_.getValue(i);
+            if (isContractionTableElement(CE)) {
+                CE = constructSpecialCE(getCETag(CE), 
+                                        ((Integer)table.m_offsets_.get(
+                                       getContractionOffset(CE))).intValue());
+                table.m_mapping_.setValue(i, CE);
+            }
+        }
+        return position;
+    }
+    
+    /**
+     * Get contraction offset
+     * @param ce collation element 
+     * @return contraction offset
+     */
+    private static final int getContractionOffset(int ce)
+    {
+        return ce & 0xFFFFFF;
+    }
+    
+    /**
+     * Gets the maximum Jamo expansion
+     * @param mapping trie table
+     * @param maxexpansion maximum expansion table
+     * @param maxjamoexpansion maximum jamo expansion table
+     * @param jamospecial is jamo special?
+     */
+    private static void getMaxExpansionJamo(IntTrieBuilder mapping, 
+                                            MaxExpansionTable maxexpansion,
+                                            MaxJamoExpansionTable 
+                        maxjamoexpansion,
+                                            boolean jamospecial)
+    {
+        int VBASE  = 0x1161;
+        int TBASE  = 0x11A8;
+        int VCOUNT = 21;
+        int TCOUNT = 28;
+        int v = VBASE + VCOUNT - 1;
+        int t = TBASE + TCOUNT - 1;
+        
+        while (v >= VBASE) {
+            int ce = mapping.getValue(v);
+            if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+        != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+                setMaxExpansion(ce, (byte)2, maxexpansion);
+            }
+            v --;
+        }
+        
+        while (t >= TBASE)
+        {
+        int ce = mapping.getValue(t);
+        if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+            != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+            setMaxExpansion(ce, (byte)3, maxexpansion);
+        }
+        t --;
+        }
+        // According to the docs, 99% of the time, the Jamo will not be special 
+        if (jamospecial) {
+            // gets the max expansion in all unicode characters
+            int count = maxjamoexpansion.m_endExpansionCE_.size();
+            byte maxTSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_ +
+                                   maxjamoexpansion.m_maxTSize_);
+            byte maxVSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_);
+        
+            while (count > 0) {
+                count --;
+                if (((Boolean)maxjamoexpansion.m_isV_.get(count)).booleanValue()
+            == true) {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                    maxVSize, maxexpansion);
+                }
+                else {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                    maxTSize, maxexpansion);
+                }
+            }
+        }
+    }
+    
+    /**  
+     * To the UnsafeCP hash table, add all chars with combining class != 0     
+     * @param t build table
+     */
+    private static final void unsafeCPAddCCNZ(BuildTable t) 
+    {
+        boolean buildCMTable = ( buildCMTabFlag & (t.cmLookup==null) );
+        char[]  cm = null;  // combining mark array
+        int[]   index= new int[256];
+        int     count=0;
+
+        if (buildCMTable) {
+            cm = new char[0x10000];
+        }
+        for (char c = 0; c < 0xffff; c ++) {
+            char fcd = NormalizerImpl.getFCD16(c);
+            if (fcd >= 0x100 || // if the leading combining class(c) > 0 ||
+                (UTF16.isLeadSurrogate(c) && fcd != 0)) {
+                // c is a leading surrogate with some FCD data
+                unsafeCPSet(t.m_unsafeCP_, c);
+                if ( buildCMTable && (fcd!=0)) {
+                    int cc = (fcd& 0xff);
+                    int pos = (cc<<8)+index[cc];
+                    cm[pos] = c;
+                    index[cc]++;
+                    count++;
+                }
+            }
+        }
+    
+        if (t.m_prefixLookup_ != null) {
+            Enumeration els = t.m_prefixLookup_.elements();
+            while (els.hasMoreElements()) {
+                Elements e = (Elements)els.nextElement();
+                // codepoints here are in the NFD form. We need to add the
+                // first code point of the NFC form to unsafe, because 
+                // strcoll needs to backup over them.
+                // weiv: This is wrong! See the comment above.
+                //String decomp = Normalizer.decompose(e.m_cPoints_, true);
+                //unsafeCPSet(t.m_unsafeCP_, decomp.charAt(0));
+                // it should be:
+                String comp = Normalizer.compose(e.m_cPoints_, false);
+                unsafeCPSet(t.m_unsafeCP_, comp.charAt(0));
+            } 
+        }
+        
+        if (buildCMTable) {
+            t.cmLookup = new CombinClassTable();
+            t.cmLookup.generate(cm, count, index);
+        }
+    }
+    
+    /**
+     * Create closure
+     * @param t build table
+     * @param collator RuleBasedCollator
+     * @param colEl collation element iterator
+     * @param start 
+     * @param limit
+     * @param type character type
+     * @return 
+     */
+    private boolean enumCategoryRangeClosureCategory(BuildTable t, 
+                             RuleBasedCollator collator, 
+                             CollationElementIterator colEl, 
+                             int start, int limit, int type) 
+    {
+        if (type != UCharacterCategory.UNASSIGNED 
+            && type != UCharacterCategory.PRIVATE_USE) { 
+            // if the range is assigned - we might ommit more categories later
+            
+            for (int u32 = start; u32 < limit; u32 ++) {
+                int noOfDec = NormalizerImpl.getDecomposition(u32, false,
+                                                              m_utilCharBuffer_, 
+                                                              0, 256);
+                if (noOfDec > 0) {
+                    // if we're positive, that means there is no decomposition
+                    String comp = UCharacter.toString(u32);
+                    String decomp = new String(m_utilCharBuffer_, 0, noOfDec);
+                    if (!collator.equals(comp, decomp)) {
+                        m_utilElement_.m_cPoints_ = decomp;
+                        m_utilElement_.m_prefix_ = 0;
+                        Elements prefix 
+                = (Elements)t.m_prefixLookup_.get(m_utilElement_);
+                        if (prefix == null) {
+                            m_utilElement_.m_cPoints_ = comp;
+                            m_utilElement_.m_prefix_ = 0;
+                            m_utilElement_.m_prefixChars_ = null;
+                            colEl.setText(decomp);
+                            int ce = colEl.next();
+                            m_utilElement_.m_CELength_ = 0;
+                            while (ce != CollationElementIterator.NULLORDER) {
+                                m_utilElement_.m_CEs_[
+                              m_utilElement_.m_CELength_ ++] 
+                    = ce;
+                                ce = colEl.next();
+                            }
+                        } 
+                        else {
+                            m_utilElement_.m_cPoints_ = comp;
+                            m_utilElement_.m_prefix_ = 0;
+                            m_utilElement_.m_prefixChars_ = null;
+                            m_utilElement_.m_CELength_ = 1;
+                            m_utilElement_.m_CEs_[0] = prefix.m_mapCE_;
+                            // This character uses a prefix. We have to add it 
+                            // to the unsafe table, as it decomposed form is 
+                            // already in. In Japanese, this happens for \u309e 
+                            // & \u30fe
+                            // Since unsafeCPSet is static in ucol_elm, we are 
+                            // going to wrap it up in the unsafeCPAddCCNZ 
+                            // function
+                        }
+                        addAnElement(t, m_utilElement_);
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    
+    /**
+     * Determine if a character is a Jamo
+     * @param ch character to test
+     * @return true if ch is a Jamo, false otherwise
+     */
+    private static final boolean isJamo(char ch)
+    { 
+    return (ch >= 0x1100 && ch <= 0x1112) 
+        || (ch >= 0x1175 && ch <= 0x1161) 
+        || (ch >= 0x11A8 && ch <= 0x11C2);
+    }
+    
+    /**
+     * Produces canonical closure
+     */
+    private void canonicalClosure(BuildTable t) 
+    {
+        BuildTable temp = new BuildTable(t);
+        assembleTable(temp, temp.m_collator_);
+        // produce canonical closure 
+        CollationElementIterator coleiter 
+        = temp.m_collator_.getCollationElementIterator("");
+        RangeValueIterator typeiter = UCharacter.getTypeIterator();
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (typeiter.next(element)) {
+            enumCategoryRangeClosureCategory(t, temp.m_collator_, coleiter, 
+                         element.start, element.limit, 
+                         element.value);
+        }
+        
+        t.cmLookup = temp.cmLookup;
+        temp.cmLookup = null;
+        
+        for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+            char baseChar, firstCM;
+            // now we need to generate the CEs 
+            // We stuff the initial value in the buffers, and increase the 
+            // appropriate buffer according to strength                                                          */
+            // createElements(t, m_parser_.m_listHeader_[i]);
+            CollationRuleParser.Token tok = m_parser_.m_listHeader_[i].m_first_;
+            m_utilElement_.clear();
+            while ( tok!=null ) {
+                m_utilElement_.m_prefix_ = 0;// el.m_prefixChars_;
+                m_utilElement_.m_cPointsOffset_ = 0; //el.m_uchars_;
+                if (tok.m_prefix_ != 0) { 
+                // we will just copy the prefix here, and adjust accordingly in 
+                // the addPrefix function in ucol_elm. The reason is that we 
+                // need to add both composed AND decomposed elements to the 
+                // unsafe table.
+                int size = tok.m_prefix_ >> 24;
+                int offset = tok.m_prefix_ & 0x00FFFFFF;
+                m_utilElement_.m_prefixChars_ 
+                    = m_parser_.m_source_.substring(offset, offset + size);
+                size = (tok.m_source_ >> 24) - (tok.m_prefix_ >> 24); 
+                offset = (tok.m_source_ & 0x00FFFFFF) + (tok.m_prefix_ >> 24);
+                m_utilElement_.m_uchars_ 
+                    = m_parser_.m_source_.substring(offset, offset + size);
+                } 
+                else {
+                m_utilElement_.m_prefixChars_ = null;
+                int offset = tok.m_source_ & 0x00FFFFFF;
+                int size = tok.m_source_ >>> 24;
+                m_utilElement_.m_uchars_ = m_parser_.m_source_.substring(offset, 
+                                             offset + size);
+                }
+                m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                
+                baseChar = firstCM = 0;  //reset
+                for (int j = 0; j < m_utilElement_.m_cPoints_.length() 
+                     - m_utilElement_.m_cPointsOffset_; j ++) {
+
+                    char fcd = NormalizerImpl.getFCD16(m_utilElement_.m_cPoints_.charAt(j));
+                    if ( (fcd & 0xff) == 0 ) {
+                        baseChar = m_utilElement_.m_cPoints_.charAt(j);
+                    }
+                    else {
+                        if ( (baseChar!=0) && (firstCM==0) ) {
+                            firstCM = m_utilElement_.m_cPoints_.charAt(j); // first combining mark
+                        }
+                    }
+                }
+                
+                if ( (baseChar!=0) && (firstCM!=0)) {
+                      addTailCanonicalClosures(t, temp.m_collator_, coleiter, baseChar, firstCM);
+                }
+                tok = tok.m_next_;
+            }
+        }
+    }
+    
+    private void addTailCanonicalClosures(BuildTable t,
+            RuleBasedCollator m_collator, 
+            CollationElementIterator colEl,
+            char baseChar, 
+            char cMark) {
+        if ( t.cmLookup == null ) {
+            return;
+        }
+        CombinClassTable cmLookup = t.cmLookup;  
+        int[] index = cmLookup.index;
+        int cClass =  NormalizerImpl.getFCD16(cMark) & 0xff;
+        int maxIndex=0;
+        char[] precompCh = new char[256];  
+        int[] precompClass = new int[256];
+        int precompLen=0;
+        Elements element = new Elements();
+        
+        if ( cClass>0 ) {
+            maxIndex = index[cClass-1];
+        }
+        for (int i=0; i<maxIndex; i++) {
+            StringBuffer decompBuf = new StringBuffer();
+            decompBuf.append(baseChar).append(cmLookup.cPoints[i]);
+            String comp = Normalizer.compose(decompBuf.toString(), false);
+            if ( comp.length() == 1 ) {
+                precompCh[precompLen] = comp.charAt(0);
+                precompClass[precompLen] = 
+                    (NormalizerImpl.getFCD16(cmLookup.cPoints[i]) & 0xff);
+                precompLen++;
+                StringBuffer decomp = new StringBuffer();
+                for (int j=0; j < m_utilElement_.m_cPoints_.length(); j++) {
+                    if ( m_utilElement_.m_cPoints_.charAt(j) == cMark ) {
+                        decomp.append(cmLookup.cPoints[i]);
+                    }
+                    else {
+                        decomp.append(m_utilElement_.m_cPoints_.charAt(j));
+                    }
+                }
+                comp = Normalizer.compose(decomp.toString(), false);
+                StringBuffer buf= new StringBuffer(comp);
+                buf.append(cMark);
+                decomp.append(cMark);
+                comp = buf.toString();
+                
+                element.m_cPoints_ = decomp.toString();
+                element.m_CELength_ = 0;
+                element.m_prefix_ = 0;
+                Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+                element.m_cPoints_ = comp;
+                element.m_uchars_ = comp;
+                
+                if (prefix == null) {
+                    element.m_prefix_ = 0;
+                    element.m_prefixChars_ = null;
+                    colEl.setText(decomp.toString());
+                    int ce = colEl.next();
+                    element.m_CELength_ = 0;
+                    while (ce != CollationElementIterator.NULLORDER) {
+                        element.m_CEs_[element.m_CELength_ ++] = ce;
+                        ce = colEl.next();
+                    }
+                } 
+                else {
+                    element.m_cPoints_ = comp;
+                    element.m_prefix_ = 0;
+                    element.m_prefixChars_ = null;
+                    element.m_CELength_ = 1;
+                    element.m_CEs_[0] = prefix.m_mapCE_;
+                }
+                setMapCE(t, element);
+                finalizeAddition(t, element);
+                
+                if (comp.length()>2) {
+                    // This is a fix for tailoring contractions with accented
+                    // character at the end of contraction string.
+                    addFCD4AccentedContractions(t, colEl, comp, element);
+                }
+                if ( precompLen > 1 ) {
+                    precompLen = addMultiCMontractions(t, colEl, element, precompCh, 
+                                 precompClass, precompLen, cMark, i, decomp.toString());
+                }
+            }
+        }
+        
+    }
+    
+    private void setMapCE(BuildTable t, Elements element) {
+        Vector expansions = t.m_expansions_;
+        element.m_mapCE_ = 0;
+        
+        if (element.m_CELength_ == 2 // a two CE expansion 
+        && RuleBasedCollator.isContinuation(element.m_CEs_[1]) 
+        && (element.m_CEs_[1] 
+            & (~(0xFF << 24 | RuleBasedCollator.CE_CONTINUATION_MARKER_))) == 0 // that has only primaries in continuation
+        && (((element.m_CEs_[0] >> 8) & 0xFF) == RuleBasedCollator.BYTE_COMMON_) 
+        // a common secondary
+        && ((element.m_CEs_[0] & 0xFF) == RuleBasedCollator.BYTE_COMMON_)) { // and a common tertiary
+        
+            element.m_mapCE_ = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+                // a long primary special
+                | (CE_LONG_PRIMARY_TAG_ << 24) 
+                // first and second byte of primary
+                | ((element.m_CEs_[0] >> 8) & 0xFFFF00) 
+                // third byte of primary
+                | ((element.m_CEs_[1] >> 24) & 0xFF);   
+        } 
+        else {
+                // omitting expansion offset in builder
+                // (HEADER_SIZE_ >> 2)
+            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+                | (CE_EXPANSION_TAG_ << RuleBasedCollator.CE_TAG_SHIFT_) 
+                | (addExpansion(expansions, element.m_CEs_[0]) << 4) & 0xFFFFF0;
+    
+            for (int i = 1; i < element.m_CELength_; i ++) {
+                addExpansion(expansions, element.m_CEs_[i]);
+            }
+            if (element.m_CELength_ <= 0xF) {
+                expansion |= element.m_CELength_;
+            } 
+            else {
+                addExpansion(expansions, 0);
+            }
+            element.m_mapCE_ = expansion;
+            setMaxExpansion(element.m_CEs_[element.m_CELength_ - 1],
+                    (byte)element.m_CELength_, t.m_maxExpansions_);
+        }
+    }
+    
+    private int addMultiCMontractions(BuildTable t,
+            CollationElementIterator colEl,
+            Elements element,
+            char[] precompCh,
+            int[] precompClass,
+            int maxComp,
+            char cMark,
+            int cmPos,
+            String decomp) {
+        
+        CombinClassTable cmLookup = t.cmLookup;
+        char[] combiningMarks = {cMark};
+        int cMarkClass = (int)(UCharacter.getCombiningClass(cMark) & 0xFF);
+        String comMark = new String(combiningMarks);
+        int  noOfPrecomposedChs = maxComp; 
+        
+        for (int j=0; j<maxComp; j++) {
+            int count = 0;
+            StringBuffer temp;
+           
+            do {
+                String newDecomp, comp;
+                
+                if ( count==0 ) { // Decompose the saved precomposed char.
+                    newDecomp = Normalizer.decompose( new String(precompCh, j ,1), false);
+                    temp = new StringBuffer(newDecomp);
+                    temp.append(cmLookup.cPoints[cmPos]);
+                    newDecomp = temp.toString();
+                }
+                else {
+                    temp = new StringBuffer(decomp);
+                    temp.append(precompCh[j]);
+                    newDecomp = temp.toString();
+                }
+                comp = Normalizer.compose(newDecomp, false);
+                if (comp.length()==1) {
+                    temp.append(cMark);
+                    element.m_cPoints_ = temp.toString();
+                    element.m_CELength_ = 0;
+                    element.m_prefix_ = 0;
+                    Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+                    element.m_cPoints_ = comp+comMark;
+                    if (prefix == null) {
+                        element.m_prefix_ = 0;
+                        element.m_prefixChars_ = null;
+                        colEl.setText(temp.toString());
+                        int ce = colEl.next();
+                        element.m_CELength_ = 0;
+                        while (ce != CollationElementIterator.NULLORDER) {
+                            element.m_CEs_[element.m_CELength_ ++] = ce;
+                            ce = colEl.next();
+                        }
+                    } 
+                    else {
+                        element.m_cPoints_ = comp;
+                        element.m_prefix_ = 0;
+                        element.m_prefixChars_ = null;
+                        element.m_CELength_ = 1;
+                        element.m_CEs_[0] = prefix.m_mapCE_;
+                    }
+                    setMapCE(t, element);
+                    finalizeAddition(t, element);
+                    precompCh[noOfPrecomposedChs] = comp.charAt(0);
+                    precompClass[noOfPrecomposedChs] = cMarkClass;  
+                    noOfPrecomposedChs++;
+                }
+            }while(++count<2 && (precompClass[j]==cMarkClass)); 
+        }
+        return noOfPrecomposedChs;
+    }
+
+    private void addFCD4AccentedContractions(BuildTable t, 
+            CollationElementIterator colEl,
+            String data,
+            Elements element) {
+        String decomp = Normalizer.decompose(data, false);
+        String comp = Normalizer.compose(data, false);
+        
+        element.m_cPoints_ = decomp;
+        element.m_CELength_ = 0;
+        element.m_prefix_ = 0;
+        Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+        if (prefix == null) {
+            element.m_cPoints_ = comp;
+            element.m_prefix_ = 0;
+            element.m_prefixChars_ = null;
+            element.m_CELength_ = 0;
+            colEl.setText(decomp);
+            int ce = colEl.next();
+            element.m_CELength_ = 0;
+            while (ce != CollationElementIterator.NULLORDER) {
+                element.m_CEs_[element.m_CELength_ ++] = ce;
+                ce = colEl.next();
+            }
+            addAnElement(t, element);
+        } 
+    }
+    
+    private void processUCACompleteIgnorables(BuildTable t) 
+    {
+        TrieIterator trieiterator 
+        = new TrieIterator(RuleBasedCollator.UCA_.m_trie_);
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (trieiterator.next(element)) {
+            int start = element.start;
+            int limit = element.limit;
+            if (element.value == 0) {
+                while (start < limit) {
+                    int CE = t.m_mapping_.getValue(start);
+                    if (CE == CE_NOT_FOUND_) {
+                        m_utilElement_.m_prefix_ = 0;
+                        m_utilElement_.m_uchars_ = UCharacter.toString(start);
+                        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                        m_utilElement_.m_cPointsOffset_ = 0;
+                        m_utilElement_.m_CELength_ = 1;
+                        m_utilElement_.m_CEs_[0] = 0;
+                        addAnElement(t, m_utilElement_);
+                    }
+                    start ++;
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationRuleParser.java b/src/com/ibm/icu/text/CollationRuleParser.java
new file mode 100644
index 0000000..6177318
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationRuleParser.java
@@ -0,0 +1,2066 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Arrays;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+* Class for parsing collation rules, produces a list of tokens that will be
+* turned into collation elements
+* @author Syn Wee Quek
+* @since release 2.2, June 7 2002
+*/
+final class CollationRuleParser
+{
+    // public data members ---------------------------------------------------
+
+    // package private constructors ------------------------------------------
+
+    /**
+     * <p>RuleBasedCollator constructor that takes the rules.
+     * Please see RuleBasedCollator class description for more details on the
+     * collation rule syntax.</p>
+     * @see java.util.Locale
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException thrown when argument rules have an invalid
+     *            syntax.
+     */
+    CollationRuleParser(String rules) throws ParseException
+    {
+        extractSetsFromRules(rules);
+        m_source_ = new StringBuffer(Normalizer.decompose(rules, false).trim());
+        m_rules_ = m_source_.toString();
+        m_current_ = 0;
+        m_extraCurrent_ = m_source_.length();
+        m_variableTop_ = null;
+        m_parsedToken_ = new ParsedToken();
+        m_hashTable_ = new Hashtable();
+        m_options_ = new OptionSet(RuleBasedCollator.UCA_);
+        m_listHeader_ = new TokenListHeader[512];
+        m_resultLength_ = 0;
+        // call assembleTokenList() manually, so that we can
+        // init a parser and manually parse tokens
+        //assembleTokenList();
+    }
+
+    // package private inner classes -----------------------------------------
+
+    /**
+     * Collation options set
+     */
+    static class OptionSet
+    {
+        // package private constructor ---------------------------------------
+
+        /**
+         * Initializes the option set with the argument collators
+         * @param collator option to use
+         */
+        OptionSet(RuleBasedCollator collator)
+        {
+            m_variableTopValue_ = collator.m_variableTopValue_;
+            m_isFrenchCollation_ = collator.isFrenchCollation();
+            m_isAlternateHandlingShifted_
+                                   = collator.isAlternateHandlingShifted();
+            m_caseFirst_ = collator.m_caseFirst_;
+            m_isCaseLevel_ = collator.isCaseLevel();
+            m_decomposition_ = collator.getDecomposition();
+            m_strength_ = collator.getStrength();
+            m_isHiragana4_ = collator.m_isHiragana4_;
+        }
+
+        // package private data members --------------------------------------
+
+        int m_variableTopValue_;
+        boolean m_isFrenchCollation_;
+        /**
+         * Attribute for handling variable elements
+         */
+        boolean m_isAlternateHandlingShifted_;
+        /**
+         * who goes first, lower case or uppercase
+         */
+        int m_caseFirst_;
+        /**
+         * do we have an extra case level
+         */
+        boolean m_isCaseLevel_;
+        /**
+         * attribute for normalization
+         */
+        int m_decomposition_;
+        /**
+         * attribute for strength
+         */
+        int m_strength_;
+        /**
+         * attribute for special Hiragana
+         */
+        boolean m_isHiragana4_;
+    }
+
+    /**
+     * List of tokens used by the collation rules
+     */
+    static class TokenListHeader
+    {
+        Token m_first_;
+        Token m_last_;
+        Token m_reset_;
+        boolean m_indirect_;
+        int m_baseCE_;
+        int m_baseContCE_;
+        int m_nextCE_;
+        int m_nextContCE_;
+        int m_previousCE_;
+        int m_previousContCE_;
+        int m_pos_[] = new int[Collator.IDENTICAL + 1];
+        int m_gapsLo_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_gapsHi_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_numStr_[] = new int[3 * (Collator.TERTIARY + 1)];
+        Token m_fStrToken_[] = new Token[Collator.TERTIARY + 1];
+        Token m_lStrToken_[] = new Token[Collator.TERTIARY + 1];
+    }
+
+    /**
+     * Token wrapper for collation rules
+     */
+    static class Token
+    {
+       // package private data members ---------------------------------------
+
+       int m_CE_[];
+       int m_CELength_;
+       int m_expCE_[];
+       int m_expCELength_;
+       int m_source_;
+       int m_expansion_;
+       int m_prefix_;
+       int m_strength_;
+       int m_toInsert_;
+       int m_polarity_; // 1 for <, <<, <<<, , ; and 0 for >, >>, >>>
+       TokenListHeader m_listHeader_;
+       Token m_previous_;
+       Token m_next_;
+       StringBuffer m_rules_;
+       char m_flags_;
+
+       // package private constructors ---------------------------------------
+
+       Token()
+       {
+           m_CE_ = new int[128];
+           m_expCE_ = new int[128];
+           // TODO: this should also handle reverse
+           m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+           m_next_ = null;
+           m_previous_ = null;
+           m_CELength_ = 0;
+           m_expCELength_ = 0;
+       }
+
+       // package private methods --------------------------------------------
+
+       /**
+        * Hashcode calculation for token
+        * @return the hashcode
+        */
+       public int hashCode()
+       {
+           int result = 0;
+           int len = (m_source_ & 0xFF000000) >>> 24;
+           int inc = ((len - 32) / 32) + 1;
+
+           int start = m_source_ & 0x00FFFFFF;
+           int limit = start + len;
+
+           while (start < limit) {
+               result = (result * 37) + m_rules_.charAt(start);
+               start += inc;
+           }
+           return result;
+       }
+
+       /**
+        * Equals calculation
+        * @param target object to compare
+        * @return true if target is the same as this object
+        */
+       public boolean equals(Object target)
+       {
+           if (target == this) {
+               return true;
+           }
+           if (target instanceof Token) {
+               Token t = (Token)target;
+               int sstart = m_source_ & 0x00FFFFFF;
+               int tstart = t.m_source_ & 0x00FFFFFF;
+               int slimit = (m_source_ & 0xFF000000) >> 24;
+               int tlimit = (m_source_ & 0xFF000000) >> 24;
+
+               int end = sstart + slimit - 1;
+
+               if (m_source_ == 0 || t.m_source_ == 0) {
+                   return false;
+               }
+               if (slimit != tlimit) {
+                   return false;
+               }
+               if (m_source_ == t.m_source_) {
+                   return true;
+               }
+
+               while (sstart < end
+                      && m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart))
+               {
+                   ++ sstart;
+                   ++ tstart;
+               }
+               if (m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart)) {
+                   return true;
+               }
+           }
+           return false;
+        }
+    }
+
+    // package private data member -------------------------------------------
+
+    /**
+     * Indicator that the token is resetted yet, ie & in the rules
+     */
+    static final int TOKEN_RESET_ = 0xDEADBEEF;
+
+    /**
+     * Size of the number of tokens
+     */
+    int m_resultLength_;
+    /**
+     * List of parsed tokens
+     */
+    TokenListHeader m_listHeader_[];
+    /**
+     * Variable top token
+     */
+    Token m_variableTop_;
+    /**
+     * Collation options
+     */
+    OptionSet m_options_;
+    /**
+     * Normalized collation rules with some extra characters
+     */
+    StringBuffer m_source_;
+    /**
+     * Hash table to keep all tokens
+     */
+    Hashtable m_hashTable_;
+
+    // package private method ------------------------------------------------
+
+    void setDefaultOptionsInCollator(RuleBasedCollator collator)
+    {
+        collator.m_defaultStrength_ = m_options_.m_strength_;
+        collator.m_defaultDecomposition_ = m_options_.m_decomposition_;
+        collator.m_defaultIsFrenchCollation_ = m_options_.m_isFrenchCollation_;
+        collator.m_defaultIsAlternateHandlingShifted_
+                                    = m_options_.m_isAlternateHandlingShifted_;
+        collator.m_defaultIsCaseLevel_ = m_options_.m_isCaseLevel_;
+        collator.m_defaultCaseFirst_ = m_options_.m_caseFirst_;
+        collator.m_defaultIsHiragana4_ = m_options_.m_isHiragana4_;
+        collator.m_defaultVariableTopValue_ = m_options_.m_variableTopValue_;
+    }
+
+    // private inner classes -------------------------------------------------
+
+    /**
+     * This is a token that has been parsed but not yet processed. Used to
+     * reduce the number of arguments in the parser
+     */
+    private static class ParsedToken
+    {
+        // private constructor ----------------------------------------------
+
+        /**
+         * Empty constructor
+         */
+        ParsedToken()
+        {
+            m_charsLen_ = 0;
+            m_charsOffset_ = 0;
+            m_extensionLen_ = 0;
+            m_extensionOffset_ = 0;
+            m_prefixLen_ = 0;
+            m_prefixOffset_ = 0;
+            m_flags_ = 0;
+            m_strength_ = TOKEN_UNSET_;
+        }
+
+        // private data members ---------------------------------------------
+
+        int m_strength_;
+        int m_charsOffset_;
+        int m_charsLen_;
+        int m_extensionOffset_;
+        int m_extensionLen_;
+        int m_prefixOffset_;
+        int m_prefixLen_;
+        char m_flags_;
+        char m_indirectIndex_;
+    }
+
+    /**
+     * Boundary wrappers
+     */
+    private static class IndirectBoundaries
+    {
+        // package private constructor ---------------------------------------
+
+        IndirectBoundaries(int startce[], int limitce[])
+        {
+            // Set values for the top - TODO: once we have values for all the
+            // indirects, we are going to initalize here.
+            m_startCE_ = startce[0];
+            m_startContCE_ = startce[1];
+            if (limitce != null) {
+                m_limitCE_ = limitce[0];
+                m_limitContCE_ = limitce[1];
+            }
+            else {
+                m_limitCE_ = 0;
+                m_limitContCE_ = 0;
+            }
+        }
+
+        // package private data members --------------------------------------
+
+        int m_startCE_;
+        int m_startContCE_;
+        int m_limitCE_;
+        int m_limitContCE_;
+    }
+
+    /**
+     * Collation option rule tag
+     */
+    private static class TokenOption
+    {
+        // package private constructor ---------------------------------------
+
+        TokenOption(String name, int attribute, String suboptions[],
+                    int suboptionattributevalue[])
+        {
+            m_name_ = name;
+            m_attribute_ = attribute;
+            m_subOptions_ = suboptions;
+            m_subOptionAttributeValues_ = suboptionattributevalue;
+        }
+
+        // package private data member ---------------------------------------
+
+        private String m_name_;
+        private int m_attribute_;
+        private String m_subOptions_[];
+        private int m_subOptionAttributeValues_[];
+    }
+
+    // private variables -----------------------------------------------------
+
+    /**
+     * Current parsed token
+     */
+    private ParsedToken m_parsedToken_;
+    /**
+     * Collation rule
+     */
+    private String m_rules_;
+    private int m_current_;
+    /**
+     * End of the option while reading.
+     * Need it for UnicodeSet reading support.
+     */
+    private int m_optionEnd_;
+    /*
+     * Current offset in m_source
+     */
+    //private int m_sourceLimit_;
+    /**
+     * Offset to m_source_ ofr the extra expansion characters
+     */
+    private int m_extraCurrent_;
+
+    /**
+     * UnicodeSet that contains code points to be copied from the UCA
+     */
+    UnicodeSet m_copySet_;
+
+    /**
+     * UnicodeSet that contains code points for which we want to remove
+     * UCA contractions. It implies copying of these code points from
+     * the UCA.
+     */
+    UnicodeSet m_removeSet_;
+    /*
+     * This is space for the extra strings that need to be unquoted during the
+     * parsing of the rules
+     */
+    //private static final int TOKEN_EXTRA_RULE_SPACE_SIZE_ = 2048;
+    /**
+     * Indicator that the token is not set yet
+     */
+    private static final int TOKEN_UNSET_ = 0xFFFFFFFF;
+    /*
+     * Indicator that the rule is in the > polarity, ie everything on the
+     * right of the rule is less than
+     */
+    //private static final int TOKEN_POLARITY_NEGATIVE_ = 0;
+    /**
+     * Indicator that the rule is in the < polarity, ie everything on the
+     * right of the rule is greater than
+     */
+    private static final int TOKEN_POLARITY_POSITIVE_ = 1;
+    /**
+     * Flag mask to determine if top is set
+     */
+    private static final int TOKEN_TOP_MASK_ = 0x04;
+    /**
+     * Flag mask to determine if variable top is set
+     */
+    private static final int TOKEN_VARIABLE_TOP_MASK_ = 0x08;
+    /**
+     * Flag mask to determine if a before attribute is set
+     */
+    private static final int TOKEN_BEFORE_ = 0x03;
+    /**
+     * For use in parsing token options
+     */
+    private static final int TOKEN_SUCCESS_MASK_ = 0x10;
+
+    /**
+     * These values are used for finding CE values for indirect positioning.
+     * Indirect positioning is a mechanism for allowing resets on symbolic
+     * values. It only works for resets and you cannot tailor indirect names.
+     * An indirect name can define either an anchor point or a range. An anchor
+     * point behaves in exactly the same way as a code point in reset would,
+     * except that it cannot be tailored. A range (we currently only know for
+     * the [top] range will explicitly set the upper bound for generated CEs,
+     * thus allowing for better control over how many CEs can be squeezed
+     * between in the range without performance penalty. In that respect, we use
+     * [top] for tailoring of locales that use CJK characters. Other indirect
+     * values are currently a pure convenience, they can be used to assure that
+     * the CEs will be always positioned in the same place relative to a point
+     * with known properties (e.g. first primary ignorable).
+     */
+    private static final IndirectBoundaries INDIRECT_BOUNDARIES_[];
+
+//    /**
+//     * Inverse UCA constants
+//     */
+//    private static final int INVERSE_SIZE_MASK_ = 0xFFF00000;
+//    private static final int INVERSE_OFFSET_MASK_ = 0x000FFFFF;
+//    private static final int INVERSE_SHIFT_VALUE_ = 20;
+
+    /**
+     * Collation option tags
+     * [last variable] last variable value
+     * [last primary ignorable] largest CE for primary ignorable
+     * [last secondary ignorable] largest CE for secondary ignorable
+     * [last tertiary ignorable] largest CE for tertiary ignorable
+     * [top] guaranteed to be above all implicit CEs, for now and in the future (in 1.8)
+     */
+    private static final TokenOption RULES_OPTIONS_[];
+
+    static
+    {
+        INDIRECT_BOUNDARIES_ = new IndirectBoundaries[15];
+        // UCOL_RESET_TOP_VALUE
+        INDIRECT_BOUNDARIES_[0] = new IndirectBoundaries(
+                        RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_,
+                        RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[1] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.FIRST_PRIMARY_IGNORABLE_,
+                    null);
+        // UCOL_LAST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[2] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.LAST_PRIMARY_IGNORABLE_,
+                    null);
+
+        // UCOL_FIRST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[3] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_SECONDARY_IGNORABLE_,
+                   null);
+        // UCOL_LAST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[4] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_SECONDARY_IGNORABLE_,
+                   null);
+        // UCOL_FIRST_TERTIARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[5] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TERTIARY_IGNORABLE_,
+                   null);
+        // UCOL_LAST_TERTIARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[6] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TERTIARY_IGNORABLE_,
+                   null);
+        // UCOL_FIRST_VARIABLE;
+        INDIRECT_BOUNDARIES_[7] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_VARIABLE_,
+                   null);
+        // UCOL_LAST_VARIABLE
+        INDIRECT_BOUNDARIES_[8] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_VARIABLE_,
+                   null);
+        // UCOL_FIRST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[9] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_NON_VARIABLE_,
+                   null);
+        // UCOL_LAST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[10] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_,
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_IMPLICIT
+        INDIRECT_BOUNDARIES_[11] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_,
+                   null);
+        // UCOL_LAST_IMPLICIT
+        INDIRECT_BOUNDARIES_[12] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_IMPLICIT_,
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_);
+        // UCOL_FIRST_TRAILING
+        INDIRECT_BOUNDARIES_[13] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_,
+                   null);
+        // UCOL_LAST_TRAILING
+        INDIRECT_BOUNDARIES_[14] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TRAILING_,
+                   null);
+        INDIRECT_BOUNDARIES_[14].m_limitCE_
+                 = RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_SPECIAL_MIN_ << 24;
+
+        RULES_OPTIONS_ = new TokenOption[19];
+        String option[] = {"non-ignorable", "shifted"};
+        int value[] = {RuleBasedCollator.AttributeValue.NON_IGNORABLE_,
+                       RuleBasedCollator.AttributeValue.SHIFTED_};
+        RULES_OPTIONS_[0] = new TokenOption("alternate",
+                              RuleBasedCollator.Attribute.ALTERNATE_HANDLING_,
+                              option, value);
+        option = new String[1];
+        option[0] = "2";
+        value = new int[1];
+        value[0] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[1] = new TokenOption("backwards",
+                                 RuleBasedCollator.Attribute.FRENCH_COLLATION_,
+                                 option, value);
+        String offonoption[] = new String[2];
+        offonoption[0] = "off";
+        offonoption[1] = "on";
+        int offonvalue[] = new int[2];
+        offonvalue[0] = RuleBasedCollator.AttributeValue.OFF_;
+        offonvalue[1] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[2] = new TokenOption("caseLevel",
+                                       RuleBasedCollator.Attribute.CASE_LEVEL_,
+                                       offonoption, offonvalue);
+        option = new String[3];
+        option[0] = "lower";
+        option[1] = "upper";
+        option[2] = "off";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.LOWER_FIRST_;
+        value[1] = RuleBasedCollator.AttributeValue.UPPER_FIRST_;
+        value[2] = RuleBasedCollator.AttributeValue.OFF_;
+        RULES_OPTIONS_[3] = new TokenOption("caseFirst",
+                                       RuleBasedCollator.Attribute.CASE_FIRST_,
+                                       option, value);
+        RULES_OPTIONS_[4] = new TokenOption("normalization",
+                               RuleBasedCollator.Attribute.NORMALIZATION_MODE_,
+                               offonoption, offonvalue);
+        RULES_OPTIONS_[5] = new TokenOption("hiraganaQ",
+                         RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_,
+                         offonoption, offonvalue);
+        option = new String[5];
+        option[0] = "1";
+        option[1] = "2";
+        option[2] = "3";
+        option[3] = "4";
+        option[4] = "I";
+        value = new int[5];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+        value[3] = RuleBasedCollator.AttributeValue.QUATERNARY_;
+        value[4] = RuleBasedCollator.AttributeValue.IDENTICAL_;
+        RULES_OPTIONS_[6] = new TokenOption("strength",
+                                         RuleBasedCollator.Attribute.STRENGTH_,
+                                         option, value);
+        RULES_OPTIONS_[7] = new TokenOption("variable top",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[8] = new TokenOption("rearrange",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        option = new String[3];
+        option[0] = "1";
+        option[1] = "2";
+        option[2] = "3";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+        RULES_OPTIONS_[9] = new TokenOption("before",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  option, value);
+        RULES_OPTIONS_[10] = new TokenOption("top",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        String firstlastoption[] = new String[7];
+        firstlastoption[0] = "primary";
+        firstlastoption[1] = "secondary";
+        firstlastoption[2] = "tertiary";
+        firstlastoption[3] = "variable";
+        firstlastoption[4] = "regular";
+        firstlastoption[5] = "implicit";
+        firstlastoption[6] = "trailing";
+
+        int firstlastvalue[] = new int[7];
+        Arrays.fill(firstlastvalue, RuleBasedCollator.AttributeValue.PRIMARY_);
+
+        RULES_OPTIONS_[11] = new TokenOption("first",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  firstlastoption, firstlastvalue);
+        RULES_OPTIONS_[12] = new TokenOption("last",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  firstlastoption, firstlastvalue);
+        RULES_OPTIONS_[13] = new TokenOption("optimize",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[14] = new TokenOption("suppressContractions",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[15] = new TokenOption("undefined",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[16] = new TokenOption("scriptOrder",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[17] = new TokenOption("charsetname",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[18] = new TokenOption("charset",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+    }
+
+    /**
+     * Utility data members
+     */
+    private Token m_utilToken_ = new Token();
+    private CollationElementIterator m_UCAColEIter_
+                      = RuleBasedCollator.UCA_.getCollationElementIterator("");
+    private int m_utilCEBuffer_[] = new int[2];
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Assembles the token list
+     * @exception ParseException thrown when rules syntax fails
+     */
+    int assembleTokenList() throws ParseException
+    {
+        Token lastToken = null;
+        m_parsedToken_.m_strength_ = TOKEN_UNSET_;
+        int sourcelimit = m_source_.length();
+        int expandNext = 0;
+
+        while (m_current_ < sourcelimit) {
+            m_parsedToken_.m_prefixOffset_ = 0;
+            if (parseNextToken(lastToken == null) < 0) {
+                // we have reached the end
+                continue;
+            }
+            char specs = m_parsedToken_.m_flags_;
+            boolean variableTop = ((specs & TOKEN_VARIABLE_TOP_MASK_) != 0);
+            boolean top = ((specs & TOKEN_TOP_MASK_) != 0);
+            int lastStrength = TOKEN_UNSET_;
+            if (lastToken != null) {
+                lastStrength = lastToken.m_strength_;
+            }
+            m_utilToken_.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                             | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            // 4 Lookup each source in the CharsToToken map, and find a
+            // sourcetoken
+            Token sourceToken = (Token)m_hashTable_.get(m_utilToken_);
+            if (m_parsedToken_.m_strength_ != TOKEN_RESET_) {
+                if (lastToken == null) {
+                    // this means that rules haven't started properly
+                    throwParseException(m_source_.toString(), 0);
+                }
+                //  6 Otherwise (when relation != reset)
+                if (sourceToken == null) {
+                    // If sourceToken is null, create new one
+                    sourceToken = new Token();
+                     sourceToken.m_rules_ = m_source_;
+                    sourceToken.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                           | m_parsedToken_.m_charsOffset_;
+                    sourceToken.m_prefix_ = m_parsedToken_.m_prefixLen_ << 24
+                                           | m_parsedToken_.m_prefixOffset_;
+                    // TODO: this should also handle reverse
+                    sourceToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+                    sourceToken.m_next_ = null;
+                     sourceToken.m_previous_ = null;
+                    sourceToken.m_CELength_ = 0;
+                    sourceToken.m_expCELength_ = 0;
+                    m_hashTable_.put(sourceToken, sourceToken);
+                }
+                else {
+                    // we could have fished out a reset here
+                    if (sourceToken.m_strength_ != TOKEN_RESET_
+                        && lastToken != sourceToken) {
+                        // otherwise remove sourceToken from where it was.
+                        if (sourceToken.m_next_ != null) {
+                            if (sourceToken.m_next_.m_strength_
+                                                   > sourceToken.m_strength_) {
+                                sourceToken.m_next_.m_strength_
+                                                   = sourceToken.m_strength_;
+                            }
+                            sourceToken.m_next_.m_previous_
+                                                    = sourceToken.m_previous_;
+                        }
+                        else {
+                            sourceToken.m_listHeader_.m_last_
+                                                    = sourceToken.m_previous_;
+                        }
+                        if (sourceToken.m_previous_ != null) {
+                            sourceToken.m_previous_.m_next_
+                                                        = sourceToken.m_next_;
+                        }
+                        else {
+                            sourceToken.m_listHeader_.m_first_
+                                                        = sourceToken.m_next_;
+                        }
+                        sourceToken.m_next_ = null;
+                        sourceToken.m_previous_ = null;
+                    }
+                }
+                sourceToken.m_strength_ = m_parsedToken_.m_strength_;
+                sourceToken.m_listHeader_ = lastToken.m_listHeader_;
+
+                // 1.  Find the strongest strength in each list, and set
+                // strongestP and strongestN accordingly in the headers.
+                if (lastStrength == TOKEN_RESET_
+                    || sourceToken.m_listHeader_.m_first_ == null) {
+                    // If LAST is a reset insert sourceToken in the list.
+                    if (sourceToken.m_listHeader_.m_first_ == null) {
+                        sourceToken.m_listHeader_.m_first_ = sourceToken;
+                        sourceToken.m_listHeader_.m_last_ = sourceToken;
+                    }
+                    else { // we need to find a place for us
+                           // and we'll get in front of the same strength
+                        if (sourceToken.m_listHeader_.m_first_.m_strength_
+                                                 <= sourceToken.m_strength_) {
+                            sourceToken.m_next_
+                                          = sourceToken.m_listHeader_.m_first_;
+                            sourceToken.m_next_.m_previous_ = sourceToken;
+                            sourceToken.m_listHeader_.m_first_ = sourceToken;
+                            sourceToken.m_previous_ = null;
+                        }
+                        else {
+                            lastToken = sourceToken.m_listHeader_.m_first_;
+                            while (lastToken.m_next_ != null
+                                   && lastToken.m_next_.m_strength_
+                                                 > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_next_;
+                            }
+                            if (lastToken.m_next_ != null) {
+                                lastToken.m_next_.m_previous_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_last_
+                                                               = sourceToken;
+                            }
+                            sourceToken.m_previous_ = lastToken;
+                            sourceToken.m_next_ = lastToken.m_next_;
+                            lastToken.m_next_ = sourceToken;
+                        }
+                    }
+                }
+                else {
+                    // Otherwise (when LAST is not a reset)
+                    // if polarity (LAST) == polarity(relation), insert
+                    // sourceToken after LAST, otherwise insert before.
+                    // when inserting after or before, search to the next
+                    // position with the same strength in that direction.
+                    // (This is called postpone insertion).
+                    if (sourceToken != lastToken) {
+                        if (lastToken.m_polarity_ == sourceToken.m_polarity_) {
+                            while (lastToken.m_next_ != null
+                                   && lastToken.m_next_.m_strength_
+                                                   > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_next_;
+                            }
+                            sourceToken.m_previous_ = lastToken;
+                            if (lastToken.m_next_ != null) {
+                                lastToken.m_next_.m_previous_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_last_ = sourceToken;
+                            }
+                            sourceToken.m_next_ = lastToken.m_next_;
+                            lastToken.m_next_ = sourceToken;
+                        }
+                        else {
+                            while (lastToken.m_previous_ != null
+                                   && lastToken.m_previous_.m_strength_
+                                                > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_previous_;
+                            }
+                            sourceToken.m_next_ = lastToken;
+                            if (lastToken.m_previous_ != null) {
+                                lastToken.m_previous_.m_next_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_first_
+                                                                 = sourceToken;
+                            }
+                            sourceToken.m_previous_ = lastToken.m_previous_;
+                            lastToken.m_previous_ = sourceToken;
+                        }
+                    }
+                    else { // repeated one thing twice in rules, stay with the
+                           // stronger strength
+                        if (lastStrength < sourceToken.m_strength_) {
+                            sourceToken.m_strength_ = lastStrength;
+                        }
+                    }
+                }
+                // if the token was a variable top, we're gonna put it in
+                if (variableTop == true && m_variableTop_ == null) {
+                    variableTop = false;
+                    m_variableTop_ = sourceToken;
+                }
+                // Treat the expansions.
+                // There are two types of expansions: explicit (x / y) and
+                // reset based propagating expansions
+                // (&abc * d * e <=> &ab * d / c * e / c)
+                // if both of them are in effect for a token, they are combined.
+               sourceToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24
+                                          | m_parsedToken_.m_extensionOffset_;
+               if (expandNext != 0) {
+                   if (sourceToken.m_strength_ == RuleBasedCollator.PRIMARY) {
+                       // primary strength kills off the implicit expansion
+                       expandNext = 0;
+                   }
+                   else if (sourceToken.m_expansion_ == 0) {
+                       // if there is no expansion, implicit is just added to
+                       // the token
+                       sourceToken.m_expansion_ = expandNext;
+                   }
+                   else {
+                       // there is both explicit and implicit expansion.
+                       // We need to make a combination
+                       int start = expandNext & 0xFFFFFF;
+                       int size = expandNext >>> 24;
+                       if (size > 0) {
+                          m_source_.append(m_source_.substring(start,
+                                                               start + size));
+                       }
+                          start = m_parsedToken_.m_extensionOffset_;
+                       m_source_.append(m_source_.substring(start,
+                                      start + m_parsedToken_.m_extensionLen_));
+                       sourceToken.m_expansion_ = (size
+                                       + m_parsedToken_.m_extensionLen_) << 24
+                                       | m_extraCurrent_;
+                       m_extraCurrent_ += size + m_parsedToken_.m_extensionLen_;
+                   }
+                }
+               // if the previous token was a reset before, the strength of this
+               // token must match the strength of before. Otherwise we have an
+               // undefined situation.
+               // In other words, we currently have a cludge which we use to
+               // represent &a >> x. This is written as &[before 2]a << x.
+               if((lastToken.m_flags_ & TOKEN_BEFORE_) != 0) {
+                   int beforeStrength = (lastToken.m_flags_ & TOKEN_BEFORE_) - 1;
+                   if(beforeStrength != sourceToken.m_strength_) {
+                          throwParseException(m_source_.toString(), m_current_);
+                   }
+               }
+
+            }
+            else {
+                if (lastToken != null && lastStrength == TOKEN_RESET_) {
+                    // if the previous token was also a reset, this means that
+                    // we have two consecutive resets and we want to remove the
+                    // previous one if empty
+                    if (m_resultLength_ > 0 && m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+                        m_resultLength_ --;
+                    }
+                }
+                if (sourceToken == null) {
+                    // this is a reset, but it might still be somewhere in the
+                    // tailoring, in shorter form
+                    int searchCharsLen = m_parsedToken_.m_charsLen_;
+                    while (searchCharsLen > 1 && sourceToken == null) {
+                        searchCharsLen --;
+                        // key = searchCharsLen << 24 | charsOffset;
+                        m_utilToken_.m_source_ = searchCharsLen << 24
+                                             | m_parsedToken_.m_charsOffset_;
+                        m_utilToken_.m_rules_ = m_source_;
+                        sourceToken = (Token)m_hashTable_.get(m_utilToken_);
+                    }
+                    if (sourceToken != null) {
+                        expandNext = (m_parsedToken_.m_charsLen_
+                                                      - searchCharsLen) << 24
+                                        | (m_parsedToken_.m_charsOffset_
+                                           + searchCharsLen);
+                    }
+                }
+                if ((specs & TOKEN_BEFORE_) != 0) {
+                    if (top == false) {
+                        // we're doing before & there is no indirection
+                        int strength = (specs & TOKEN_BEFORE_) - 1;
+                        if (sourceToken != null
+                            && sourceToken.m_strength_ != TOKEN_RESET_) {
+                            // this is a before that is already ordered in the UCA
+                            // - so we need to get the previous with good strength
+                            while (sourceToken.m_strength_ > strength
+                                   && sourceToken.m_previous_ != null) {
+                                sourceToken = sourceToken.m_previous_;
+                            }
+                            // here, either we hit the strength or NULL
+                            if (sourceToken.m_strength_ == strength) {
+                                if (sourceToken.m_previous_ != null) {
+                                    sourceToken = sourceToken.m_previous_;
+                                }
+                                else { // start of list
+                                    sourceToken
+                                         = sourceToken.m_listHeader_.m_reset_;
+                                }
+                            }
+                            else { // we hit NULL, we should be doing the else part
+                                sourceToken
+                                         = sourceToken.m_listHeader_.m_reset_;
+                                sourceToken = getVirginBefore(sourceToken,
+                                                              strength);
+                            }
+                        }
+                        else {
+                            sourceToken
+                                      = getVirginBefore(sourceToken, strength);
+                        }
+                    }
+                    else {
+                        // this is both before and indirection
+                        top = false;
+                        m_listHeader_[m_resultLength_] = new TokenListHeader();
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = true;
+                        // we need to do slightly more work. we need to get the
+                        // baseCE using the inverse UCA & getPrevious. The next
+                        // bound is not set, and will be decided in ucol_bld
+                        int strength = (specs & TOKEN_BEFORE_) - 1;
+                        int baseCE = INDIRECT_BOUNDARIES_[
+                                   m_parsedToken_.m_indirectIndex_].m_startCE_;
+                        int baseContCE = INDIRECT_BOUNDARIES_[
+                               m_parsedToken_.m_indirectIndex_].m_startContCE_;
+                        int ce[] = new int[2];
+                        if((baseCE >>> 24 >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_)
+                        && (baseCE >>> 24 <=  RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_)) { /* implicits - */
+                            int primary = baseCE & RuleBasedCollator.CE_PRIMARY_MASK_ | (baseContCE & RuleBasedCollator.CE_PRIMARY_MASK_) >> 16;
+                            int raw = RuleBasedCollator.impCEGen_.getRawFromImplicit(primary);
+                            int primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(raw-1);
+                            ce[0] = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+                            ce[1] = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+                        } else {
+                            CollationParsedRuleBuilder.InverseUCA invuca
+                                = CollationParsedRuleBuilder.INVERSE_UCA_;
+                            invuca.getInversePrevCE(baseCE, baseContCE, strength,
+                                    ce);
+                        }
+                        m_listHeader_[m_resultLength_].m_baseCE_ = ce[0];
+                        m_listHeader_[m_resultLength_].m_baseContCE_ = ce[1];
+                        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+
+                        sourceToken = new Token();
+                        expandNext = initAReset(0, sourceToken);
+                    }
+                }
+                // 5 If the relation is a reset:
+                // If sourceToken is null
+                // Create new list, create new sourceToken, make the baseCE
+                // from source, put the sourceToken in ListHeader of the new
+                // list
+                if (sourceToken == null) {
+                    if (m_listHeader_[m_resultLength_] == null) {
+                        m_listHeader_[m_resultLength_] = new TokenListHeader();
+                    }
+                    // 3 Consider each item: relation, source, and expansion:
+                    // e.g. ...< x / y ...
+                    // First convert all expansions into normal form.
+                    // Examples:
+                    // If "xy" doesn't occur earlier in the list or in the UCA,
+                    // convert &xy * c * d * ... into &x * c/y * d * ...
+                    // Note: reset values can never have expansions, although
+                    // they can cause the very next item to have one. They may
+                    // be contractions, if they are found earlier in the list.
+                    if (top == false) {
+                        CollationElementIterator coleiter
+                        = RuleBasedCollator.UCA_.getCollationElementIterator(
+                            m_source_.substring(m_parsedToken_.m_charsOffset_,
+                                                m_parsedToken_.m_charsOffset_
+                                                + m_parsedToken_.m_charsLen_));
+
+                        int CE = coleiter.next();
+                        // offset to the character in the full rule string
+                        int expand = coleiter.getOffset()
+                                     + m_parsedToken_.m_charsOffset_;
+                        int SecondCE = coleiter.next();
+
+                        m_listHeader_[m_resultLength_].m_baseCE_
+                                                             = CE & 0xFFFFFF3F;
+                        if (RuleBasedCollator.isContinuation(SecondCE)) {
+                            m_listHeader_[m_resultLength_].m_baseContCE_
+                                                                    = SecondCE;
+                        }
+                        else {
+                            m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                        }
+                        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = false;
+                        sourceToken = new Token();
+                        expandNext = initAReset(expand, sourceToken);
+                    }
+                    else { // top == TRUE
+                        top = false;
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = true;
+                        IndirectBoundaries ib = INDIRECT_BOUNDARIES_[
+                                              m_parsedToken_.m_indirectIndex_];
+                        m_listHeader_[m_resultLength_].m_baseCE_
+                                                               = ib.m_startCE_;
+                        m_listHeader_[m_resultLength_].m_baseContCE_
+                                                           = ib.m_startContCE_;
+                        m_listHeader_[m_resultLength_].m_nextCE_
+                                                               = ib.m_limitCE_;
+                        m_listHeader_[m_resultLength_].m_nextContCE_
+                                                           = ib.m_limitContCE_;
+                        sourceToken = new Token();
+                        expandNext = initAReset(0, sourceToken);
+                    }
+                }
+                else { // reset to something already in rules
+                    top = false;
+                }
+            }
+            // 7 After all this, set LAST to point to sourceToken, and goto
+            // step 3.
+            lastToken = sourceToken;
+        }
+
+        if (m_resultLength_ > 0
+            && m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+            m_resultLength_ --;
+        }
+        return m_resultLength_;
+    }
+
+    /**
+     * Formats and throws a ParseException
+     * @param rules collation rule that failed
+     * @param offset failed offset in rules
+     * @throws ParseException with failure information
+     */
+    private static final void throwParseException(String rules, int offset)
+                                                          throws ParseException
+    {
+        // for pre-context
+        String precontext = rules.substring(0, offset);
+        String postcontext = rules.substring(offset, rules.length());
+        StringBuffer error = new StringBuffer(
+                                    "Parse error occurred in rule at offset ");
+        error.append(offset);
+        error.append("\n after the prefix \"");
+        error.append(precontext);
+        error.append("\" before the suffix \"");
+        error.append(postcontext);
+        throw new ParseException(error.toString(), offset);
+    }
+
+    private final boolean doSetTop() {
+        m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+        m_source_.append((char)0xFFFE);
+        IndirectBoundaries ib =
+                  INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_];
+        m_source_.append((char)(ib.m_startCE_ >> 16));
+        m_source_.append((char)(ib.m_startCE_ & 0xFFFF));
+        m_extraCurrent_ += 3;
+        if (INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_
+                                                       ].m_startContCE_ == 0) {
+            m_parsedToken_.m_charsLen_ = 3;
+        }
+        else {
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ >> 16));
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ & 0xFFFF));
+            m_extraCurrent_ += 2;
+            m_parsedToken_.m_charsLen_ = 5;
+        }
+        return true;
+    }
+
+    private static boolean isCharNewLine(char c) {
+        switch (c) {
+        case 0x000A: /* LF */
+        case 0x000D: /* CR */
+        case 0x000C: /* FF */
+        case 0x0085: /* NEL */
+        case 0x2028: /* LS */
+        case 0x2029: /* PS */
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    /**
+     * Getting the next token
+     *
+     * @param startofrules
+     *            flag indicating if we are at the start of rules
+     * @return the offset of the rules
+     * @exception ParseException
+     *                thrown when rule parsing fails
+     */
+    private int parseNextToken(boolean startofrules) throws ParseException
+    {
+        // parsing part
+        boolean variabletop = false;
+        boolean top = false;
+        boolean inchars = true;
+        boolean inquote = false;
+        boolean wasinquote = false;
+        byte before = 0;
+        boolean isescaped = false;
+        int /*newcharslen = 0,*/ newextensionlen = 0;
+        int /*charsoffset = 0,*/ extensionoffset = 0;
+        int newstrength = TOKEN_UNSET_;
+
+        m_parsedToken_.m_charsLen_ = 0;
+        m_parsedToken_.m_charsOffset_ = 0;
+        m_parsedToken_.m_prefixOffset_ = 0;
+        m_parsedToken_.m_prefixLen_ = 0;
+        m_parsedToken_.m_indirectIndex_ = 0;
+
+        int limit = m_rules_.length();
+        while (m_current_ < limit) {
+            char ch = m_source_.charAt(m_current_);
+            if (inquote) {
+                if (ch == 0x0027) { // '\''
+                    inquote = false;
+                }
+                else {
+                    if ((m_parsedToken_.m_charsLen_ == 0) || inchars) {
+                         if (m_parsedToken_.m_charsLen_ == 0) {
+                             m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                         }
+                         m_parsedToken_.m_charsLen_ ++;
+                    }
+                    else {
+                        if (newextensionlen == 0) {
+                            extensionoffset = m_extraCurrent_;
+                        }
+                        newextensionlen ++;
+                    }
+                }
+            }
+            else if (isescaped) {
+                isescaped = false;
+                if (newstrength == TOKEN_UNSET_) {
+                    throwParseException(m_rules_, m_current_);
+                }
+                if (ch != 0 && m_current_ != limit) {
+                    if (inchars) {
+                        if (m_parsedToken_.m_charsLen_ == 0) {
+                            m_parsedToken_.m_charsOffset_ = m_current_;
+                        }
+                        m_parsedToken_.m_charsLen_ ++;
+                    }
+                    else {
+                        if (newextensionlen == 0) {
+                            extensionoffset = m_current_;
+                        }
+                        newextensionlen ++;
+                    }
+                }
+            }
+            else {
+                if (!UCharacterProperty.isRuleWhiteSpace(ch)) {
+                    // Sets the strength for this entry
+                    switch (ch) {
+                    case 0x003D : // '='
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.IDENTICAL;
+                        break;
+                    case 0x002C : // ','
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.TERTIARY;
+                        break;
+                    case 0x003B : // ';'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.SECONDARY;
+                        break;
+                    case 0x003C : // '<'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // before this, do a scan to verify whether this is
+                        // another strength
+                        if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+                            m_current_ ++;
+                            if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+                                m_current_ ++; // three in a row!
+                                newstrength = Collator.TERTIARY;
+                            }
+                            else { // two in a row
+                                newstrength = Collator.SECONDARY;
+                            }
+                        }
+                        else { // just one
+                            newstrength = Collator.PRIMARY;
+                        }
+                        break;
+                    case 0x0026 : // '&'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = TOKEN_RESET_; // PatternEntry::RESET = 0
+                        break;
+                    case 0x005b : // '['
+                        // options - read an option, analyze it
+                        m_optionEnd_ = m_rules_.indexOf(0x005d, m_current_);
+                        if (m_optionEnd_ != -1) { // ']'
+                            byte result = readAndSetOption();
+                            m_current_ = m_optionEnd_;
+                            if ((result & TOKEN_TOP_MASK_) != 0) {
+                                if (newstrength == TOKEN_RESET_) {
+                                    top = doSetTop();
+                                    if (before != 0) {
+                                        // This is a combination of before and
+                                        // indirection like
+                                        // '&[before 2][first regular]<b'
+                                        m_source_.append((char)0x002d);
+                                        m_source_.append((char)before);
+                                        m_extraCurrent_ += 2;
+                                        m_parsedToken_.m_charsLen_ += 2;
+                                    }
+                                    m_current_ ++;
+                                    return doEndParseNextToken(newstrength,
+                                                       true,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                            else if ((result & TOKEN_VARIABLE_TOP_MASK_) != 0) {
+                                if (newstrength != TOKEN_RESET_
+                                    && newstrength != TOKEN_UNSET_) {
+                                    variabletop = true;
+                                    m_parsedToken_.m_charsOffset_
+                                                             = m_extraCurrent_;
+                                    m_source_.append((char)0xFFFF);
+                                    m_extraCurrent_ ++;
+                                    m_current_ ++;
+                                    m_parsedToken_.m_charsLen_ = 1;
+                                    return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                            else if ((result & TOKEN_BEFORE_) != 0){
+                                if (newstrength == TOKEN_RESET_) {
+                                    before = (byte)(result & TOKEN_BEFORE_);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                        }
+                        break;
+                    case 0x002F : // '/'
+                        wasinquote = false; // if we were copying source
+                                            // characters, we want to stop now
+                        inchars = false; // we're now processing expansion
+                        break;
+                    case 0x005C : // back slash for escaped chars
+                        isescaped = true;
+                        break;
+                    // found a quote, we're gonna start copying
+                    case 0x0027 : //'\''
+                        if (newstrength == TOKEN_UNSET_) {
+                            // quote is illegal until we have a strength
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        inquote = true;
+                        if (inchars) { // we're doing characters
+                            if (wasinquote == false) {
+                                m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                            }
+                            if (m_parsedToken_.m_charsLen_ != 0) {
+                                m_source_.append(m_source_.substring(
+                                       m_current_ - m_parsedToken_.m_charsLen_,
+                                       m_current_));
+                                m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+                            }
+                            m_parsedToken_.m_charsLen_ ++;
+                        }
+                        else { // we're doing an expansion
+                            if (wasinquote == false) {
+                                extensionoffset = m_extraCurrent_;
+                            }
+                            if (newextensionlen != 0) {
+                                m_source_.append(m_source_.substring(
+                                                   m_current_ - newextensionlen,
+                                                   m_current_));
+                                m_extraCurrent_ += newextensionlen;
+                            }
+                            newextensionlen ++;
+                        }
+                        wasinquote = true;
+                        m_current_ ++;
+                        ch = m_source_.charAt(m_current_);
+                        if (ch == 0x0027) { // copy the double quote
+                            m_source_.append(ch);
+                            m_extraCurrent_ ++;
+                            inquote = false;
+                        }
+                        break;
+                    // '@' is french only if the strength is not currently set
+                    // if it is, it's just a regular character in collation
+                    case 0x0040 : // '@'
+                        if (newstrength == TOKEN_UNSET_) {
+                            m_options_.m_isFrenchCollation_ = true;
+                        break;
+                    }
+                    case 0x007C : //|
+                        // this means we have actually been reading prefix part
+                        // we want to store read characters to the prefix part
+                        // and continue reading the characters (proper way
+                        // would be to restart reading the chars, but in that
+                        // case we would have to complicate the token hasher,
+                        // which I do not intend to play with. Instead, we will
+                        // do prefixes when prefixes are due (before adding the
+                        // elements).
+                        m_parsedToken_.m_prefixOffset_
+                                                = m_parsedToken_.m_charsOffset_;
+                        m_parsedToken_.m_prefixLen_
+                                                = m_parsedToken_.m_charsLen_;
+                        if (inchars) { // we're doing characters
+                            if (wasinquote == false) {
+                                m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                            }
+                            if (m_parsedToken_.m_charsLen_ != 0) {
+                                String prefix = m_source_.substring(
+                                       m_current_ - m_parsedToken_.m_charsLen_,
+                                       m_current_);
+                                m_source_.append(prefix);
+                                m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+                            }
+                            m_parsedToken_.m_charsLen_ ++;
+                        }
+                        wasinquote = true;
+                        do {
+                            m_current_ ++;
+                            ch = m_source_.charAt(m_current_);
+                            // skip whitespace between '|' and the character
+                        } while (UCharacterProperty.isRuleWhiteSpace(ch));
+                        break;
+                    case 0x0023: // '#' // this is a comment, skip everything through the end of line
+                        do {
+                            m_current_ ++;
+                            ch = m_source_.charAt(m_current_);
+                        } while (!isCharNewLine(ch));
+                        break;
+                    case 0x0021: // '!' // ignoring java set thai reordering
+                        break;
+                    default :
+                        if (newstrength == TOKEN_UNSET_) {
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        if (isSpecialChar(ch) && (inquote == false)) {
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        if (ch == 0x0000 && m_current_ + 1 == limit) {
+                            break;
+                        }
+                        if (inchars) {
+                            if (m_parsedToken_.m_charsLen_ == 0) {
+                                m_parsedToken_.m_charsOffset_ = m_current_;
+                            }
+                            m_parsedToken_.m_charsLen_++;
+                        }
+                        else {
+                            if (newextensionlen == 0) {
+                                extensionoffset = m_current_;
+                            }
+                            newextensionlen ++;
+                        }
+                        break;
+                    }
+                }
+            }
+            if (wasinquote) {
+                if (ch != 0x27) {
+                      m_source_.append(ch);
+                    m_extraCurrent_ ++;
+                }
+            }
+            m_current_ ++;
+        }
+        return doEndParseNextToken(newstrength, top,
+                                   extensionoffset, newextensionlen,
+                                   variabletop, before);
+    }
+
+    /**
+     * End the next parse token
+     * @param newstrength new strength
+     * @return offset in rules, -1 for end of rules
+     */
+    private int doEndParseNextToken(int newstrength, /*int newcharslen,*/
+                                    boolean top, /*int charsoffset,*/
+                                    int extensionoffset, int newextensionlen,
+                                    boolean variabletop, int before)
+                                    throws ParseException
+    {
+        if (newstrength == TOKEN_UNSET_) {
+            return -1;
+        }
+        if (m_parsedToken_.m_charsLen_ == 0 && top == false) {
+            throwParseException(m_rules_, m_current_);
+        }
+
+        m_parsedToken_.m_strength_ = newstrength;
+        //m_parsedToken_.m_charsOffset_ = charsoffset;
+        //m_parsedToken_.m_charsLen_ = newcharslen;
+        m_parsedToken_.m_extensionOffset_ = extensionoffset;
+        m_parsedToken_.m_extensionLen_ = newextensionlen;
+        m_parsedToken_.m_flags_ = (char)
+                                  ((variabletop ? TOKEN_VARIABLE_TOP_MASK_ : 0)
+                                  | (top ? TOKEN_TOP_MASK_ : 0) | before);
+        return m_current_;
+    }
+
+    /**
+     * Token before this element
+     * @param sourcetoken
+     * @param strength collation strength
+     * @return the token before source token
+     * @exception ParseException thrown when rules have the wrong syntax
+     */
+    private Token getVirginBefore(Token sourcetoken, int strength)
+                                                          throws ParseException
+    {
+        // this is a virgin before - we need to fish the anchor from the UCA
+        if (sourcetoken != null) {
+            int offset = sourcetoken.m_source_ & 0xFFFFFF;
+            m_UCAColEIter_.setText(m_source_.substring(offset, offset + 1));
+        }
+        else {
+            m_UCAColEIter_.setText(
+                             m_source_.substring(m_parsedToken_.m_charsOffset_,
+                             m_parsedToken_.m_charsOffset_ + 1));
+        }
+
+        int basece = m_UCAColEIter_.next() & 0xFFFFFF3F;
+        int basecontce = m_UCAColEIter_.next();
+        if (basecontce == CollationElementIterator.NULLORDER) {
+            basecontce = 0;
+        }
+
+        int ch = 0;
+
+
+        if((basece >>> 24 >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_)
+                && (basece >>> 24 <=  RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_)) { /* implicits - */
+
+            int primary = basece & RuleBasedCollator.CE_PRIMARY_MASK_ | (basecontce & RuleBasedCollator.CE_PRIMARY_MASK_) >> 16;
+            int raw = RuleBasedCollator.impCEGen_.getRawFromImplicit(primary);
+            ch = RuleBasedCollator.impCEGen_.getCodePointFromRaw(raw-1);
+            int primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(raw-1);
+            m_utilCEBuffer_[0] = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+            m_utilCEBuffer_[1] = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+
+            m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+            m_source_.append('\uFFFE');
+            m_source_.append((char)ch);
+            m_extraCurrent_ += 2;
+            m_parsedToken_.m_charsLen_++;
+
+            m_utilToken_.m_source_ = (m_parsedToken_.m_charsLen_ << 24)
+            | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            sourcetoken = (Token)m_hashTable_.get(m_utilToken_);
+
+            if(sourcetoken == null) {
+                m_listHeader_[m_resultLength_] = new TokenListHeader();
+                m_listHeader_[m_resultLength_].m_baseCE_
+                    = m_utilCEBuffer_[0] & 0xFFFFFF3F;
+                if (RuleBasedCollator.isContinuation(m_utilCEBuffer_[1])) {
+                    m_listHeader_[m_resultLength_].m_baseContCE_
+                    = m_utilCEBuffer_[1];
+                }
+                else {
+                    m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                }
+                m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_indirect_ = false;
+
+                sourcetoken = new Token();
+                initAReset(-1, sourcetoken);
+            }
+
+        } else {
+
+            // first ce and second ce m_utilCEBuffer_
+            /*int invpos = */CollationParsedRuleBuilder.INVERSE_UCA_.getInversePrevCE(
+                                                         basece, basecontce,
+                                                         strength, m_utilCEBuffer_);
+            // we got the previous CE. Now we need to see if the difference between
+            // the two CEs is really of the requested strength.
+            // if it's a bigger difference (we asked for secondary and got primary), we
+            // need to modify the CE.
+            if(CollationParsedRuleBuilder.INVERSE_UCA_.getCEStrengthDifference(basece, basecontce, m_utilCEBuffer_[0], m_utilCEBuffer_[1]) < strength) {
+                // adjust the strength
+                // now we are in the situation where our baseCE should actually be modified in
+                // order to get the CE in the right position.
+                if(strength == Collator.SECONDARY) {
+                    m_utilCEBuffer_[0] = basece - 0x0200;
+                } else { // strength == UCOL_TERTIARY
+                    m_utilCEBuffer_[0] = basece - 0x02;
+                }
+                if(RuleBasedCollator.isContinuation(basecontce)) {
+                    if(strength == Collator.SECONDARY) {
+                        m_utilCEBuffer_[1] = basecontce - 0x0200;
+                    } else { // strength == UCOL_TERTIARY
+                        m_utilCEBuffer_[1] = basecontce - 0x02;
+                    }
+                }
+            }
+
+/*
+            // the code below relies on getting a code point from the inverse table, in order to be
+            // able to merge the situations like &x < 9 &[before 1]a < d. This won't work:
+            // 1. There are many code points that have the same CE
+            // 2. The CE to codepoint table (things pointed to by CETable[3*invPos+2] are broken.
+            // Also, in case when there is no equivalent strength before an element, we have to actually
+            // construct one. For example, &[before 2]a << x won't result in x << a, because the element
+            // before a is a primary difference.
+            ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_table_[3 * invpos
+                                                                      + 2];
+            if ((ch &  INVERSE_SIZE_MASK_) != 0) {
+                int offset = ch & INVERSE_OFFSET_MASK_;
+                ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_continuations_[
+                                                                           offset];
+            }
+            m_source_.append((char)ch);
+            m_extraCurrent_ ++;
+            m_parsedToken_.m_charsOffset_ = m_extraCurrent_ - 1;
+            m_parsedToken_.m_charsLen_ = 1;
+
+            // We got an UCA before. However, this might have been tailored.
+            // example:
+            // &\u30ca = \u306a
+            // &[before 3]\u306a<<<\u306a|\u309d
+
+            m_utilToken_.m_source_ = (m_parsedToken_.m_charsLen_ << 24)
+                                                 | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            sourcetoken = (Token)m_hashTable_.get(m_utilToken_);
+*/
+
+            // here is how it should be. The situation such as &[before 1]a < x, should be
+            // resolved exactly as if we wrote &a > x.
+            // therefore, I don't really care if the UCA value before a has been changed.
+            // However, I do care if the strength between my element and the previous element
+            // is bigger then I wanted. So, if CE < baseCE and I wanted &[before 2], then i'll
+            // have to construct the base CE.
+
+            // if we found a tailored thing, we have to use the UCA value and
+            // construct a new reset token with constructed name
+            //if (sourcetoken != null && sourcetoken.m_strength_ != TOKEN_RESET_) {
+                // character to which we want to anchor is already tailored.
+                // We need to construct a new token which will be the anchor point
+                //m_source_.setCharAt(m_extraCurrent_ - 1, '\uFFFE');
+                //m_source_.append(ch);
+                //m_extraCurrent_ ++;
+                //m_parsedToken_.m_charsLen_ ++;
+                // grab before
+                m_parsedToken_.m_charsOffset_ -= 10;
+                m_parsedToken_.m_charsLen_ += 10;
+                m_listHeader_[m_resultLength_] = new TokenListHeader();
+                m_listHeader_[m_resultLength_].m_baseCE_
+                                                 = m_utilCEBuffer_[0] & 0xFFFFFF3F;
+                if (RuleBasedCollator.isContinuation(m_utilCEBuffer_[1])) {
+                    m_listHeader_[m_resultLength_].m_baseContCE_
+                                                              = m_utilCEBuffer_[1];
+                }
+                else {
+                    m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                }
+                m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_indirect_ = false;
+                sourcetoken = new Token();
+                initAReset(-1, sourcetoken);
+            //}
+        }
+        return sourcetoken;
+    }
+
+    /**
+     * Processing Description.
+     * 1. Build a m_listHeader_. Each list has a header, which contains two lists
+     * (positive and negative), a reset token, a baseCE, nextCE, and
+     * previousCE. The lists and reset may be null.
+     * 2. As you process, you keep a LAST pointer that points to the last token
+     * you handled.
+     * @param expand string offset, -1 for null strings
+     * @param targetToken token to update
+     * @return expandnext offset
+     * @throws ParseException thrown when rules syntax failed
+     */
+    private int initAReset(int expand, Token targetToken) throws ParseException
+    {
+        if (m_resultLength_ == m_listHeader_.length - 1) {
+            // Unfortunately, this won't work, as we store addresses of lhs in
+            // token
+            TokenListHeader temp[] = new TokenListHeader[m_resultLength_ << 1];
+            System.arraycopy(m_listHeader_, 0, temp, 0, m_resultLength_ + 1);
+            m_listHeader_ = temp;
+        }
+        // do the reset thing
+        targetToken.m_rules_ = m_source_;
+        targetToken.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                | m_parsedToken_.m_charsOffset_;
+        targetToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24
+                                   | m_parsedToken_.m_extensionOffset_;
+        // keep the flags around so that we know about before
+        targetToken.m_flags_ = m_parsedToken_.m_flags_;
+
+        if (m_parsedToken_.m_prefixOffset_ != 0) {
+            throwParseException(m_rules_, m_parsedToken_.m_charsOffset_ - 1);
+        }
+
+        targetToken.m_prefix_ = 0;
+        // TODO: this should also handle reverse
+        targetToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+        targetToken.m_strength_ = TOKEN_RESET_;
+        targetToken.m_next_ = null;
+        targetToken.m_previous_ = null;
+        targetToken.m_CELength_ = 0;
+        targetToken.m_expCELength_ = 0;
+        targetToken.m_listHeader_ = m_listHeader_[m_resultLength_];
+        m_listHeader_[m_resultLength_].m_first_ = null;
+        m_listHeader_[m_resultLength_].m_last_ = null;
+        m_listHeader_[m_resultLength_].m_first_ = null;
+        m_listHeader_[m_resultLength_].m_last_ = null;
+        m_listHeader_[m_resultLength_].m_reset_ = targetToken;
+
+        /* 3 Consider each item: relation, source, and expansion:
+         * e.g. ...< x / y ...
+         * First convert all expansions into normal form. Examples:
+         * If "xy" doesn't occur earlier in the list or in the UCA, convert
+         * &xy * c * d * ... into &x * c/y * d * ...
+         * Note: reset values can never have expansions, although they can
+         * cause the very next item to have one. They may be contractions, if
+         * they are found earlier in the list.
+         */
+        int result = 0;
+        if (expand > 0) {
+            // check to see if there is an expansion
+            if (m_parsedToken_.m_charsLen_ > 1) {
+                targetToken.m_source_ = ((expand
+                                          - m_parsedToken_.m_charsOffset_ )
+                                          << 24)
+                                          | m_parsedToken_.m_charsOffset_;
+                result = ((m_parsedToken_.m_charsLen_
+                               + m_parsedToken_.m_charsOffset_ - expand) << 24)
+                               | expand;
+            }
+        }
+
+        m_resultLength_ ++;
+        m_hashTable_.put(targetToken, targetToken);
+        return result;
+    }
+
+    /**
+     * Checks if an character is special
+     * @param ch character to test
+     * @return true if the character is special
+     */
+    private static final boolean isSpecialChar(char ch)
+    {
+        return (ch <= 0x002F && ch >= 0x0020) || (ch <= 0x003F && ch >= 0x003A)
+               || (ch <= 0x0060 && ch >= 0x005B)
+               || (ch <= 0x007E && ch >= 0x007D) || ch == 0x007B;
+    }
+
+    private
+    UnicodeSet readAndSetUnicodeSet(String source, int start) throws ParseException
+    {
+      while(source.charAt(start) != '[') { /* advance while we find the first '[' */
+        start++;
+      }
+      // now we need to get a balanced set of '[]'. The problem is that a set can have
+      // many, and *end point to the first closing '['
+      int noOpenBraces = 1;
+      int current = 1; // skip the opening brace
+      while(start+current < source.length() && noOpenBraces != 0) {
+        if(source.charAt(start+current) == '[') {
+          noOpenBraces++;
+        } else if(source.charAt(start+current) == ']') { // closing brace
+          noOpenBraces--;
+        }
+        current++;
+      }
+      //int nextBrace = -1;
+
+      if(noOpenBraces != 0 || (/*nextBrace =*/ source.indexOf("]", start+current) /*']'*/) == -1) {
+        throwParseException(m_rules_, start);
+      }
+      return new UnicodeSet(source.substring(start, start+current)); //uset_openPattern(start, current);
+    }
+
+
+    /** in C, optionarg is passed by reference to function.
+     *  We use a private int to simulate this.
+     */
+    private int m_optionarg_ = 0;
+
+    private int readOption(String rules, int start, int optionend)
+    {
+        m_optionarg_ = 0;
+        int i = 0;
+        while (i < RULES_OPTIONS_.length) {
+            String option = RULES_OPTIONS_[i].m_name_;
+            int optionlength = option.length();
+            if (rules.length() > start + optionlength
+                && option.equalsIgnoreCase(rules.substring(start,
+                                                      start + optionlength))) {
+                if (optionend - start > optionlength) {
+                    m_optionarg_ = start + optionlength;
+                    // start of the options, skip space
+                    while (m_optionarg_ < optionend && UCharacter.isWhitespace(rules.charAt(m_optionarg_)))
+                    {   // eat whitespace
+                        m_optionarg_ ++;
+                    }
+                }
+                break;
+            }
+            i ++;
+        }
+        if(i == RULES_OPTIONS_.length) {
+            i = -1;
+        }
+        return i;
+    }
+    /**
+     * Reads and set collation options
+     * @return TOKEN_SUCCESS if option is set correct, 0 otherwise
+     * @exception ParseException thrown when options in rules are wrong
+     */
+    private byte readAndSetOption() throws ParseException
+    {
+        int start = m_current_ + 1; // skip opening '['
+        int i = readOption(m_rules_, start, m_optionEnd_);
+
+        int optionarg = m_optionarg_;
+
+        if (i < 0) {
+            throwParseException(m_rules_, start);
+        }
+
+        if (i < 7) {
+            if (optionarg != 0) {
+                for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length;
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size
+                         && subname.equalsIgnoreCase(m_rules_.substring(
+                                                           optionarg, size))) {
+                         setOptions(m_options_, RULES_OPTIONS_[i].m_attribute_,
+                             RULES_OPTIONS_[i].m_subOptionAttributeValues_[j]);
+                         return TOKEN_SUCCESS_MASK_;
+                     }
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if (i == 7) { // variable top
+            return TOKEN_SUCCESS_MASK_ | TOKEN_VARIABLE_TOP_MASK_;
+        }
+        else if (i == 8) { // rearange
+            return TOKEN_SUCCESS_MASK_;
+        }
+        else if (i == 9) { // before
+            if (optionarg != 0) {
+                for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length;
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size
+                         && subname.equalsIgnoreCase(
+                                               m_rules_.substring(optionarg,
+                                              optionarg + subname.length()))) {
+                         return (byte)(TOKEN_SUCCESS_MASK_
+                            | RULES_OPTIONS_[i].m_subOptionAttributeValues_[j]
+                            + 1);
+                     }
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if (i == 10) {  // top, we are going to have an array with
+            // structures of limit CEs index to this array will be
+            // src->parsedToken.indirectIndex
+            m_parsedToken_.m_indirectIndex_ = 0;
+            return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+        }
+        else if (i < 13) { // first, last
+            for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length; j ++) {
+                String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                int size = optionarg + subname.length();
+                if (m_rules_.length() > size
+                    && subname.equalsIgnoreCase(m_rules_.substring(optionarg,
+                                                                   size))) {
+                    m_parsedToken_.m_indirectIndex_ = (char)(i - 10 + (j << 1));
+                    return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if(i == 13 || i == 14) { // copy and remove are handled before normalization
+            // we need to move end here
+            int noOpenBraces = 1;
+            m_current_++; // skip opening brace
+            while(m_current_ < m_source_.length() && noOpenBraces != 0) {
+                if(m_source_.charAt(m_current_) == '[') {
+                  noOpenBraces++;
+                } else if(m_source_.charAt(m_current_) == ']') { // closing brace
+                  noOpenBraces--;
+                }
+                m_current_++;
+            }
+            m_optionEnd_ = m_current_-1;
+            return TOKEN_SUCCESS_MASK_;
+        }
+        else {
+            throwParseException(m_rules_, optionarg);
+        }
+        return TOKEN_SUCCESS_MASK_; // we will never reach here.
+    }
+
+    /**
+     * Set collation option
+     * @param optionset option set to set
+     * @param attribute type to set
+     * @param value attribute value
+     */
+    private void setOptions(OptionSet optionset, int attribute, int value)
+    {
+        switch (attribute) {
+            case RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_ :
+                optionset.m_isHiragana4_
+                            = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.FRENCH_COLLATION_ :
+                optionset.m_isFrenchCollation_
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.ALTERNATE_HANDLING_ :
+                optionset.m_isAlternateHandlingShifted_
+                             = (value
+                                == RuleBasedCollator.AttributeValue.SHIFTED_);
+                break;
+            case RuleBasedCollator.Attribute.CASE_FIRST_ :
+                optionset.m_caseFirst_ = value;
+                break;
+            case RuleBasedCollator.Attribute.CASE_LEVEL_ :
+                optionset.m_isCaseLevel_
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.NORMALIZATION_MODE_ :
+                if (value == RuleBasedCollator.AttributeValue.ON_) {
+                    value = Collator.CANONICAL_DECOMPOSITION;
+                }
+                optionset.m_decomposition_ = value;
+                break;
+            case RuleBasedCollator.Attribute.STRENGTH_ :
+                optionset.m_strength_ = value;
+                break;
+            default :
+                break;
+        }
+      }
+
+    UnicodeSet getTailoredSet() throws ParseException
+    {
+        boolean startOfRules = true;
+        UnicodeSet tailored = new UnicodeSet();
+        String pattern;
+        CanonicalIterator it = new CanonicalIterator("");
+
+        m_parsedToken_.m_strength_ = TOKEN_UNSET_;
+        int sourcelimit = m_source_.length();
+        //int expandNext = 0;
+
+        while (m_current_ < sourcelimit) {
+        m_parsedToken_.m_prefixOffset_ = 0;
+        if (parseNextToken(startOfRules) < 0) {
+            // we have reached the end
+            continue;
+        }
+        startOfRules = false;
+        // The idea is to tokenize the rule set. For each non-reset token,
+        // we add all the canonicaly equivalent FCD sequences
+            if(m_parsedToken_.m_strength_ != TOKEN_RESET_) {
+                it.setSource(m_source_.substring(
+                      m_parsedToken_.m_charsOffset_,
+                      m_parsedToken_.m_charsOffset_+m_parsedToken_.m_charsLen_));
+                pattern = it.next();
+                while(pattern != null) {
+                      if(Normalizer.quickCheck(pattern, Normalizer.FCD,0) != Normalizer.NO) {
+                        tailored.add(pattern);
+                    }
+                    pattern = it.next();
+                }
+            }
+        }
+        return tailored;
+    }
+
+    final private void extractSetsFromRules(String rules) throws ParseException {
+      int optionNumber = -1;
+      int setStart = 0;
+      int i = 0;
+      while(i < rules.length()) {
+        if(rules.charAt(i) == 0x005B) {
+          optionNumber = readOption(rules, i+1, rules.length());
+          setStart = m_optionarg_;
+          if(optionNumber == 13) { /* copy - parts of UCA to tailoring */
+            UnicodeSet newSet = readAndSetUnicodeSet(rules, setStart);
+              if(m_copySet_ == null) {
+                m_copySet_ = newSet;
+              } else {
+                m_copySet_.addAll(newSet);
+              }
+          } else if(optionNumber == 14) {
+            UnicodeSet newSet = readAndSetUnicodeSet(rules, setStart);
+              if(m_removeSet_ == null) {
+                m_removeSet_ = newSet;
+              } else {
+                m_removeSet_.addAll(newSet);
+              }
+          }
+        }
+        i++;
+      }
+    }
+}
diff --git a/src/com/ibm/icu/text/Collator.java b/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..da58547
--- /dev/null
+++ b/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,1029 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.Comparator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* <p>Collator performs locale-sensitive string comparison. A concrete
+* subclass, RuleBasedCollator, allows customization of the collation
+* ordering by the use of rule sets.</p>
+*
+* <p>Following the <a href=http://www.unicode.org>Unicode
+* Consortium</a>'s specifications for the
+* <a href="http://www.unicode.org/unicode/reports/tr10/">Unicode Collation
+* Algorithm (UCA)</a>, there are 5 different levels of strength used
+* in comparisons:
+*
+* <ul>
+* <li>PRIMARY strength: Typically, this is used to denote differences between
+*     base characters (for example, "a" &lt; "b").
+*     It is the strongest difference. For example, dictionaries are divided
+*     into different sections by base character.
+* <li>SECONDARY strength: Accents in the characters are considered secondary
+*     differences (for example, "as" &lt; "&agrave;s" &lt; "at"). Other
+*     differences
+*     between letters can also be considered secondary differences, depending
+*     on the language. A secondary difference is ignored when there is a
+*     primary difference anywhere in the strings.
+* <li>TERTIARY strength: Upper and lower case differences in characters are
+*     distinguished at tertiary strength (for example, "ao" &lt; "Ao" &lt;
+*     "a&ograve;"). In addition, a variant of a letter differs from the base
+*     form on the tertiary strength (such as "A" and "&#9398;"). Another
+*     example is the
+*     difference between large and small Kana. A tertiary difference is ignored
+*     when there is a primary or secondary difference anywhere in the strings.
+* <li>QUATERNARY strength: When punctuation is ignored
+*     <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+*     (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+*     strength, an additional strength level can
+*     be used to distinguish words with and without punctuation (for example,
+*     "ab" &lt; "a-b" &lt; "aB").
+*     This difference is ignored when there is a PRIMARY, SECONDARY or TERTIARY
+*     difference. The QUATERNARY strength should only be used if ignoring
+*     punctuation is required.
+* <li>IDENTICAL strength:
+*     When all other strengths are equal, the IDENTICAL strength is used as a
+*     tiebreaker. The Unicode code point values of the NFD form of each string
+*     are compared, just in case there is no difference.
+*     For example, Hebrew cantellation marks are only distinguished at this
+*     strength. This strength should be used sparingly, as only code point
+*     value differences between two strings is an extremely rare occurrence.
+*     Using this strength substantially decreases the performance for both
+*     comparison and collation key generation APIs. This strength also
+*     increases the size of the collation key.
+* </ul>
+*
+* Unlike the JDK, ICU4J's Collator deals only with 2 decomposition modes,
+* the canonical decomposition mode and one that does not use any decomposition.
+* The compatibility decomposition mode, java.text.Collator.FULL_DECOMPOSITION
+* is not supported here. If the canonical
+* decomposition mode is set, the Collator handles un-normalized text properly,
+* producing the same results as if the text were normalized in NFD. If
+* canonical decomposition is turned off, it is the user's responsibility to
+* ensure that all text is already in the appropriate form before performing
+* a comparison or before getting a CollationKey.</p>
+*
+* <p>For more information about the collation service see the
+* <a href="http://www.icu-project.org/userguide/Collate_Intro.html">users
+* guide</a>.</p>
+*
+* <p>Examples of use
+* <pre>
+* // Get the Collator for US English and set its strength to PRIMARY
+* Collator usCollator = Collator.getInstance(Locale.US);
+* usCollator.setStrength(Collator.PRIMARY);
+* if (usCollator.compare("abc", "ABC") == 0) {
+*     System.out.println("Strings are equivalent");
+* }
+*
+* The following example shows how to compare two strings using the
+* Collator for the default locale.
+*
+* // Compare two strings in the default locale
+* Collator myCollator = Collator.getInstance();
+* myCollator.setDecomposition(NO_DECOMPOSITION);
+* if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*     System.out.println("&agrave;&#92;u0325 is not equals to a&#92;u0325&#768; without decomposition");
+*     myCollator.setDecomposition(CANONICAL_DECOMPOSITION);
+*     if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*         System.out.println("Error: &agrave;&#92;u0325 should be equals to a&#92;u0325&#768; with decomposition");
+*     }
+*     else {
+*         System.out.println("&agrave;&#92;u0325 is equals to a&#92;u0325&#768; with decomposition");
+*     }
+* }
+* else {
+*     System.out.println("Error: &agrave;&#92;u0325 should be not equals to a&#92;u0325&#768; without decomposition");
+* }
+* </pre>
+* </p>
+* @see RuleBasedCollator
+* @see CollationKey
+* @author Syn Wee Quek
+* @stable ICU 2.8
+*/
+public abstract class Collator implements Comparator, Cloneable
+{
+    // public data members ---------------------------------------------------
+
+    /**
+     * Strongest collator strength value. Typically used to denote differences
+     * between base characters. See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int PRIMARY = 0;
+
+    /**
+     * Second level collator strength value.
+     * Accents in the characters are considered secondary differences.
+     * Other differences between letters can also be considered secondary
+     * differences, depending on the language.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int SECONDARY = 1;
+
+    /**
+     * Third level collator strength value.
+     * Upper and lower case differences in characters are distinguished at this
+     * strength level. In addition, a variant of a letter differs from the base
+     * form on the tertiary level.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int TERTIARY = 2;
+
+    /**
+     * Fourth level collator strength value.
+     * When punctuation is ignored
+     * <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+     * (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+     * strength, an additional strength level can
+     * be used to distinguish words with and without punctuation.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int QUATERNARY = 3;
+
+    /**
+     * <p>
+     * Smallest Collator strength value. When all other strengths are equal,
+     * the IDENTICAL strength is used as a tiebreaker. The Unicode code point
+     * values of the NFD form of each string are compared, just in case there
+     * is no difference.
+     * See class documentation for more explanation.
+     * </p>
+     * <p>
+     * Note this value is different from JDK's
+     * </p>
+     * @stable ICU 2.8
+     */
+    public final static int IDENTICAL = 15;
+
+    /**
+     * This is for backwards compatibility with Java APIs only.  It
+     * should not be used, IDENTICAL should be used instead.  ICU's
+     * collation does not support Java's FULL_DECOMPOSITION mode.
+     * @stable ICU 3.4
+     */
+    public final static int FULL_DECOMPOSITION = IDENTICAL;
+
+    /**
+     * <p>Decomposition mode value. With NO_DECOMPOSITION set, Strings
+     * will not be decomposed for collation. This is the default
+     * decomposition setting unless otherwise specified by the locale
+     * used to create the Collator.</p>
+     *
+     * <p><strong>Note</strong> this value is different from the JDK's.</p>
+     * @see #CANONICAL_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int NO_DECOMPOSITION = 16;
+
+    /**
+     * <p>Decomposition mode value. With CANONICAL_DECOMPOSITION set,
+     * characters that are canonical variants according to the Unicode standard
+     * will be decomposed for collation.</p>
+     *
+     * <p>CANONICAL_DECOMPOSITION corresponds to Normalization Form D as
+     * described in <a href="http://www.unicode.org/unicode/reports/tr15/">
+     * Unicode Technical Report #15</a>.
+     * </p>
+     * @see #NO_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int CANONICAL_DECOMPOSITION = 17;
+
+    // public methods --------------------------------------------------------
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * <p>Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.</p>
+     *
+     * <p>The default strength for the Collator is TERTIARY, unless specified
+     * otherwise by the locale used to create the Collator.</p>
+     *
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException if the new strength value is not one
+     *                of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength)
+    {
+        if ((newStrength != PRIMARY) &&
+            (newStrength != SECONDARY) &&
+            (newStrength != TERTIARY) &&
+            (newStrength != QUATERNARY) &&
+            (newStrength != IDENTICAL)) {
+            throw new IllegalArgumentException("Incorrect comparison level.");
+        }
+        m_strength_ = newStrength;
+    }
+
+    /**
+     * <p>Set the decomposition mode of this Collator.  Setting this
+     * decomposition property with CANONICAL_DECOMPOSITION allows the
+     * Collator to handle un-normalized text properly, producing the
+     * same results as if the text were normalized. If
+     * NO_DECOMPOSITION is set, it is the user's responsibility to
+     * insure that all text is already in the appropriate form before
+     * a comparison or before getting a CollationKey. Adjusting
+     * decomposition mode allows the user to select between faster and
+     * more complete collation behavior.</p>
+     *
+     * <p>Since a great many of the world's languages do not require
+     * text normalization, most locales set NO_DECOMPOSITION as the
+     * default decomposition mode.</p>
+     *
+     * The default decompositon mode for the Collator is
+     * NO_DECOMPOSITON, unless specified otherwise by the locale used
+     * to create the Collator.</p>
+     *
+     * <p>See getDecomposition for a description of decomposition
+     * mode.</p>
+     *
+     * @param decomposition the new decomposition mode
+     * @see #getDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @exception IllegalArgumentException If the given value is not a valid
+     *            decomposition mode.
+     * @stable ICU 2.8
+     */
+    public void setDecomposition(int decomposition)
+    {
+        if ((decomposition != NO_DECOMPOSITION) &&
+            (decomposition != CANONICAL_DECOMPOSITION)) {
+            throw new IllegalArgumentException("Wrong decomposition mode.");
+        }
+        m_decomposition_ = decomposition;
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the Collator for the current default locale.
+     * The default locale is determined by java.util.Locale.getDefault().
+     * @return the Collator for the default locale (for example, en_US) if it
+     *         is created successfully. Otherwise if there is no Collator
+     *         associated with the current locale, the default UCA collator
+     *         will be returned.
+     * @see java.util.Locale#getDefault()
+     * @see #getInstance(Locale)
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance()
+    {
+        return getInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Clone the collator.
+     * @stable ICU 2.6
+     * @return a clone of this collator.
+     */
+    public Object clone() throws CloneNotSupportedException {
+        return super.clone();
+    }
+
+    // begin registry stuff
+
+    /**
+     * A factory used with registerFactory to register multiple collators and provide
+     * display names for them.  If standard locale display names are sufficient, 
+     * Collator instances may be registered instead.
+     * <p><b>Note:</b> as of ICU4J 3.2, the default API for CollatorFactory uses
+     * ULocale instead of Locale.  Instead of overriding createCollator(Locale),
+     * new implementations should override createCollator(ULocale).  Note that
+     * one of these two methods <b>MUST</b> be overridden or else an infinite
+     * loop will occur.
+     * @stable ICU 2.6
+     */
+    public static abstract class CollatorFactory {
+        /**
+         * Return true if this factory will be visible.  Default is true.
+         * If not visible, the locales supported by this factory will not
+         * be listed by getAvailableLocales.
+         *
+         * @return true if this factory is visible
+         * @stable ICU 2.6
+         */
+        public boolean visible() {
+            return true;
+        }
+
+        /**
+         * Return an instance of the appropriate collator.  If the locale
+         * is not supported, return null.
+         * <b>Note:</b> as of ICU4J 3.2, implementations should override
+         * this method instead of createCollator(Locale).
+         * @param loc the locale for which this collator is to be created.
+         * @return the newly created collator.
+         * @stable ICU 3.2
+         */
+        public Collator createCollator(ULocale loc) {
+            return createCollator(loc.toLocale());
+        }
+
+        /**
+         * Return an instance of the appropriate collator.  If the locale
+         * is not supported, return null.
+         * <p><b>Note:</b> as of ICU4J 3.2, implementations should override
+         * createCollator(ULocale) instead of this method, and inherit this
+         * method's implementation.  This method is no longer abstract
+         * and instead delegates to createCollator(ULocale).
+         * @param loc the locale for which this collator is to be created.
+         * @return the newly created collator.
+         * @stable ICU 2.6
+         */
+         public Collator createCollator(Locale loc) {
+            return createCollator(ULocale.forLocale(loc));
+        }
+
+        /**
+         * Return the name of the collator for the objectLocale, localized for the displayLocale.
+         * If objectLocale is not visible or not defined by the factory, return null.
+         * @param objectLocale the locale identifying the collator
+         * @param displayLocale the locale for which the display name of the collator should be localized
+         * @return the display name
+         * @stable ICU 2.6
+         */
+        public String getDisplayName(Locale objectLocale, Locale displayLocale) {
+            return getDisplayName(ULocale.forLocale(objectLocale), ULocale.forLocale(displayLocale));
+        }
+
+        /**
+         * Return the name of the collator for the objectLocale, localized for the displayLocale.
+         * If objectLocale is not visible or not defined by the factory, return null.
+         * @param objectLocale the locale identifying the collator
+         * @param displayLocale the locale for which the display name of the collator should be localized
+         * @return the display name
+         * @stable ICU 3.2
+         */
+        public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+            if (visible()) {
+                Set supported = getSupportedLocaleIDs();
+                String name = objectLocale.getBaseName();
+                if (supported.contains(name)) {
+                    return objectLocale.getDisplayName(displayLocale);
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Return an unmodifiable collection of the locale names directly 
+         * supported by this factory.
+         *
+         * @return the set of supported locale IDs.
+         * @stable ICU 2.6
+         */
+        public abstract Set getSupportedLocaleIDs();
+
+        /**
+         * Empty default constructor.
+         * @stable ICU 2.6
+         */
+        protected CollatorFactory() {
+        }
+    }
+
+    static abstract class ServiceShim {
+        abstract Collator getInstance(ULocale l);
+        abstract Object registerInstance(Collator c, ULocale l);
+        abstract Object registerFactory(CollatorFactory f);
+        abstract boolean unregister(Object k);
+        abstract Locale[] getAvailableLocales(); // TODO remove
+        abstract ULocale[] getAvailableULocales();
+        abstract String getDisplayName(ULocale ol, ULocale dl);
+    }
+    
+    private static ServiceShim shim;
+    private static ServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.CollatorServiceShim");
+                shim = (ServiceShim)cls.newInstance();
+            }
+            catch (MissingResourceException e)
+            {
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(Locale)
+     * @see #getInstance()
+     * @stable ICU 3.0
+     */
+    public static final Collator getInstance(ULocale locale) {
+        // fetching from service cache is faster than instantiation
+        return getShim().getInstance(locale);
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(ULocale)
+     * @see #getInstance()
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance(Locale locale) {
+        return getInstance(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Register a collator as the default collator for the provided locale.  The
+     * collator should not be modified after it is registered.
+     *
+     * @param collator the collator to register
+     * @param locale the locale for which this is the default collator
+     * @return an object that can be used to unregister the registered collator.
+     *
+     * @stable ICU 3.2
+     */
+    public static final Object registerInstance(Collator collator, ULocale locale) {
+        return getShim().registerInstance(collator, locale);
+    }
+
+    /**
+     * Register a collator factory.
+     *
+     * @param factory the factory to register
+     * @return an object that can be used to unregister the registered factory.
+     *
+     * @stable ICU 2.6
+     */
+    public static final Object registerFactory(CollatorFactory factory) {
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister a collator previously registered using registerInstance.
+     * @param registryKey the object previously returned by registerInstance.
+     * @return true if the collator was successfully unregistered.
+     * @stable ICU 2.6
+     */
+    public static final boolean unregister(Object registryKey) {
+        if (shim == null) {
+            return false;
+        }
+        return shim.unregister(registryKey);
+    }
+
+    /**
+     * Get the set of locales, as Locale objects, for which collators
+     * are installed.  Note that Locale objects do not support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 2.4
+     */
+    public static Locale[] getAvailableLocales() {
+        // TODO make this wrap getAvailableULocales later
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return shim.getAvailableLocales();
+    }
+
+    /**
+     * Get the set of locales, as ULocale objects, for which collators
+     * are installed.  ULocale objects support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 3.0
+     */
+    public static final ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return shim.getAvailableULocales();
+    }
+    
+    /**
+     * The list of keywords for this service.  This must be kept in sync with
+     * the resource data.
+     * @since ICU 3.0
+     */
+    private static final String[] KEYWORDS = { "collation" };
+
+    /**
+     * The resource name for this service.  Note that this is not the same as
+     * the keyword for this service.
+     * @since ICU 3.0
+     */
+    private static final String RESOURCE = "collations";
+
+    /**
+     * The resource bundle base name for this service.
+     * *since ICU 3.0
+     */
+    private static final String BASE = ICUResourceBundle.ICU_COLLATION_BASE_NAME;
+
+    /**
+     * Return an array of all possible keywords that are relevant to
+     * collation. At this point, the only recognized keyword for this
+     * service is "collation".
+     * @return an array of valid collation keywords.
+     * @see #getKeywordValues
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywords() {
+        return KEYWORDS;
+    }
+    
+    /**
+     * Given a keyword, return an array of all values for
+     * that keyword that are currently in use.
+     * @param keyword one of the keywords returned by getKeywords.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywordValues(String keyword) {
+        if (!keyword.equals(KEYWORDS[0])) {
+            throw new IllegalArgumentException("Invalid keyword: " + keyword);
+        }
+        return ICUResourceBundle.getKeywordValues(BASE, RESOURCE);
+    }
+
+    /**
+     * Return the functionally equivalent locale for the given
+     * requested locale, with respect to given keyword, for the
+     * collation service.  If two locales return the same result, then
+     * collators instantiated for these locales will behave
+     * equivalently.  The converse is not always true; two collators
+     * may in fact be equivalent, but return different results, due to
+     * internal details.  The return result has no other meaning than
+     * that stated above, and implies nothing as to the relationship
+     * between the two locales.  This is intended for use by
+     * applications who wish to cache collators, or otherwise reuse
+     * collators when possible.  The functional equivalent may change
+     * over time.  For more information, please see the <a
+     * href="http://www.icu-project.org/userguide/locale.html#services">
+     * Locales and Services</a> section of the ICU User Guide.
+     * @param keyword a particular keyword as enumerated by
+     * getKeywords.
+     * @param locID The requested locale
+     * @param isAvailable If non-null, isAvailable[0] will receive and
+     * output boolean that indicates whether the requested locale was
+     * 'available' to the collation service. If non-null, isAvailable 
+     * must have length >= 1.
+     * @return the locale
+     * @stable ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String keyword,
+                                                        ULocale locID,
+                                                        boolean isAvailable[]) {
+        return ICUResourceBundle.getFunctionalEquivalent(
+                                                         BASE, RESOURCE, keyword, locID, isAvailable, true);
+    }
+    
+    /**
+     * Return the functionally equivalent locale for the given
+     * requested locale, with respect to given keyword, for the
+     * collation service.
+     * @param keyword a particular keyword as enumerated by
+     * getKeywords.
+     * @param locID The requested locale
+     * @return the locale
+     * @see #getFunctionalEquivalent(String,ULocale,boolean[])
+     * @stable ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String keyword,
+                                                        ULocale locID) {
+        return getFunctionalEquivalent(keyword, locID, null);
+    }
+    
+    /**
+     * Get the name of the collator for the objectLocale, localized for the displayLocale.
+     * @param objectLocale the locale of the collator
+     * @param displayLocale the locale for the collator's display name
+     * @return the display name
+     * @stable ICU 2.6
+     */
+    static public String getDisplayName(Locale objectLocale, Locale displayLocale) {
+        return getShim().getDisplayName(ULocale.forLocale(objectLocale), 
+                                        ULocale.forLocale(displayLocale));
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the displayLocale.
+     * @param objectLocale the locale of the collator
+     * @param displayLocale the locale for the collator's display name
+     * @return the display name
+     * @stable ICU 3.2
+     */
+    static public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+        return getShim().getDisplayName(objectLocale, displayLocale);
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the current locale.
+     * @param objectLocale the locale of the collator
+     * @return the display name
+     * @stable ICU 2.6
+     */
+    static public String getDisplayName(Locale objectLocale) {
+        return getShim().getDisplayName(ULocale.forLocale(objectLocale), ULocale.getDefault());
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the current locale.
+     * @param objectLocale the locale of the collator
+     * @return the display name
+     * @stable ICU 3.2
+     */
+    static public String getDisplayName(ULocale objectLocale) {
+        return getShim().getDisplayName(objectLocale, ULocale.getDefault());
+    }
+
+    /**
+     * <p>Returns this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return this Collator's current strength property.
+     * @see #setStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @stable ICU 2.8
+     */
+    public int getStrength()
+    {
+        return m_strength_;
+    }
+
+    /**
+     * <p>
+     * Get the decomposition mode of this Collator. Decomposition mode
+     * determines how Unicode composed characters are handled.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return the decomposition mode
+     * @see #setDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @stable ICU 2.8
+     */
+    public int getDecomposition()
+    {
+        return m_decomposition_;
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     *            IllegalArgumentException thrown if either source or target is
+     *            not of the class String.
+     * @stable ICU 2.8
+     */
+    public int compare(Object source, Object target)
+    {
+        if (!(source instanceof String) || !(target instanceof String)) {
+            throw new IllegalArgumentException("Arguments have to be of type String");
+        }
+        return compare((String)source, (String)target);
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * Convenience method for comparing the equality of two text Strings using
+     * this Collator's rules, strength and decomposition mode.
+     * @param source the source string to be compared.
+     * @param target the target string to be compared.
+     * @return true if the strings are equal according to the collation
+     *         rules, otherwise false.
+     * @see #compare
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(String source, String target)
+    {
+        return (compare(source, target) == 0);
+    }
+
+    /**
+     * Get an UnicodeSet that contains all the characters and sequences
+     * tailored in this collator.
+     * @return a pointer to a UnicodeSet object containing all the
+     *         code points and sequences that may sort differently than
+     *         in the UCA.
+     * @stable ICU 2.4
+     */
+    public UnicodeSet getTailoredSet()
+    {
+        return new UnicodeSet(0, 0x10FFFF);
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public abstract int compare(String source, String target);
+
+    /**
+     * <p>
+     * Transforms the String into a CollationKey suitable for efficient
+     * repeated comparison.  The resulting key depends on the collator's
+     * rules, strength and decomposition mode.
+     * </p>
+     * <p>See the CollationKey class documentation for more information.</p>
+     * @param source the string to be transformed into a CollationKey.
+     * @return the CollationKey for the given String based on this Collator's
+     *         collation rules. If the source String is null, a null
+     *         CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @see #getRawCollationKey
+     * @stable ICU 2.8
+     */
+    public abstract CollationKey getCollationKey(String source);
+    
+    /**
+     * Gets the simpler form of a CollationKey for the String source following
+     * the rules of this Collator and stores the result into the user provided 
+     * argument key. 
+     * If key has a internal byte array of length that's too small for the 
+     * result, the internal byte array will be grown to the exact required 
+     * size.
+     * @param source the text String to be transformed into a RawCollationKey  
+     * @return If key is null, a new instance of RawCollationKey will be 
+     *         created and returned, otherwise the user provided key will be 
+     *         returned.
+     * @see #compare(String, String)
+     * @see #getCollationKey 
+     * @see RawCollationKey
+     * @stable ICU 2.8
+     */
+    public abstract RawCollationKey getRawCollationKey(String source, 
+                                                       RawCollationKey key);
+
+    /** 
+     * <p>
+     * Variable top is a two byte primary value which causes all the codepoints 
+     * with primary values that are less or equal than the variable top to be 
+     * shifted when alternate handling is set to SHIFTED.
+     * </p>
+     * <p>
+     * Sets the variable top to a collation element value of a string supplied.
+     * </p> 
+     * @param varTop one or more (if contraction) characters to which the 
+     *               variable top should be set
+     * @return a int value containing the value of the variable top in upper 16
+     *         bits. Lower 16 bits are undefined.
+     * @exception IllegalArgumentException is thrown if varTop argument is not 
+     *            a valid variable top element. A variable top element is 
+     *            invalid when it is a contraction that does not exist in the
+     *            Collation order or when the PRIMARY strength collation 
+     *            element for the variable top has more than two bytes
+     * @see #getVariableTop
+     * @see RuleBasedCollator#setAlternateHandlingShifted
+     * @stable ICU 2.6
+     */
+    public abstract int setVariableTop(String varTop);
+    
+    /** 
+     * Gets the variable top value of a Collator. 
+     * Lower 16 bits are undefined and should be ignored.
+     * @return the variable top value of a Collator.
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public abstract int getVariableTop();
+    
+    /** 
+     * Sets the variable top to a collation element value supplied.
+     * Variable top is set to the upper 16 bits. 
+     * Lower 16 bits are ignored.
+     * @param varTop Collation element value, as returned by setVariableTop or 
+     *               getVariableTop
+     * @see #getVariableTop
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public abstract void setVariableTop(int varTop);
+
+    /** 
+     * Get the version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public abstract VersionInfo getVersion();
+        
+    /** 
+     * Get the UCA version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public abstract VersionInfo getUCAVersion();
+        
+    // protected constructor -------------------------------------------------
+
+    /**
+     * Empty default constructor to make javadocs happy
+     * @stable ICU 2.4
+     */
+    protected Collator()
+    {
+    }
+    
+    // package private methods -----------------------------------------------
+
+    // private data members --------------------------------------------------
+
+    /**
+     * Collation strength
+     */
+    private int m_strength_ = TERTIARY;
+
+    /**
+     * Decomposition mode
+     */
+    private int m_decomposition_ = CANONICAL_DECOMPOSITION;
+    
+    private static final boolean DEBUG = ICUDebug.enabled("collator");
+    
+    // private methods -------------------------------------------------------
+    
+    // end registry stuff
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/CollatorReader.java b/src/com/ibm/icu/text/CollatorReader.java
new file mode 100644
index 0000000..f9678e9
--- /dev/null
+++ b/src/com/ibm/icu/text/CollatorReader.java
@@ -0,0 +1,656 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.ICUBinary;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.text.CollationParsedRuleBuilder.InverseUCA;
+import com.ibm.icu.text.RuleBasedCollator.UCAConstants;
+
+/**
+* <p>Internal reader class for ICU data file uca.icu containing 
+* Unicode Collation Algorithm data.</p> 
+* <p>This class simply reads uca.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=Collator.html>com.ibm.icu.text.Collator</a>.
+* </p> 
+* <p>uca.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.2, April 18 2002
+*/
+
+final class CollatorReader
+{          
+    static char[] read(RuleBasedCollator rbc, UCAConstants ucac) throws IOException {
+        InputStream i = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/coll/ucadata.icu");
+        BufferedInputStream b = new BufferedInputStream(i, 90000);
+        CollatorReader reader = new CollatorReader(b);
+        char[] result = reader.readImp(rbc, ucac);
+        b.close();
+        return result;
+    }
+    
+    static void initRBC(RuleBasedCollator rbc, byte[] data) throws IOException {
+        final int MIN_BINARY_DATA_SIZE_ = (42 + 25) << 2;
+        
+        InputStream i = new ByteArrayInputStream(data);
+        BufferedInputStream b = new BufferedInputStream(i);
+        CollatorReader reader = new CollatorReader(b, false);
+        if (data.length > MIN_BINARY_DATA_SIZE_) {
+            reader.readImp(rbc, null);
+        } else {
+            reader.readHeader(rbc);
+            reader.readOptions(rbc);
+            // duplicating UCA_'s data
+            rbc.setWithUCATables();
+        }
+    }
+    
+    static InverseUCA getInverseUCA() throws IOException {
+        InverseUCA result = null;
+        InputStream i = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/coll/invuca.icu");
+//        try    {
+//            String invdat = "/com/ibm/icu/impl/data/invuca.icu";
+//            InputStream i = CollationParsedRuleBuilder.class.getResourceAsStream(invdat);
+            BufferedInputStream b = new BufferedInputStream(i, 110000);
+            result = CollatorReader.readInverseUCA(b);
+            b.close();
+            i.close();
+            return result;
+//        } catch (Exception e) {
+//            throw new RuntimeException(e.getMessage());
+//        }
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU collator file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    private CollatorReader(InputStream inputStream) throws IOException
+    {
+        this(inputStream, true);
+        /*
+        byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, UCA_AUTHENTICATE_);
+        // weiv: check that we have the correct Unicode version in 
+        // binary files
+        VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+        if(UnicodeVersion[0] != UCDVersion.getMajor() 
+        || UnicodeVersion[1] != UCDVersion.getMinor()) {
+            throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+        }
+        m_dataInputStream_ = new DataInputStream(inputStream);
+        */
+    }
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprops.icu file input stream
+    * @param readICUHeader flag to indicate if the ICU header has to be read
+    * @exception IOException throw if data file fails authentication 
+    */
+    private CollatorReader(InputStream inputStream, boolean readICUHeader) 
+                                                            throws IOException
+    {
+        if (readICUHeader) {
+            byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                                 UCA_AUTHENTICATE_);
+            // weiv: check that we have the correct Unicode version in 
+            // binary files
+            VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+            if(UnicodeVersion[0] != UCDVersion.getMajor() 
+            || UnicodeVersion[1] != UCDVersion.getMinor()) {
+                throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+            }
+        }
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the header stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate with header information
+    * @exception IOException thrown when there's a data error.
+    */
+    private void readHeader(RuleBasedCollator rbc) throws IOException
+    {
+        m_size_ = m_dataInputStream_.readInt();
+        // all the offsets are in bytes
+        // to get the address add to the header address and cast properly
+        // Default options int options
+        m_headerSize_ = m_dataInputStream_.readInt(); // start of options
+        int readcount = 8; // for size and headersize
+        // structure which holds values for indirect positioning and implicit
+        // ranges
+        int UCAConst = m_dataInputStream_.readInt();
+        readcount += 4;
+        // this one is needed only for UCA, to copy the appropriate
+        // contractions
+        m_dataInputStream_.skip(4);
+        readcount += 4;
+        // reserved for future use
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // const uint8_t *mappingPosition;
+        int mapping = m_dataInputStream_.readInt();
+        readcount += 4;
+        // uint32_t *expansion;
+        rbc.m_expansionOffset_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        // UChar *contractionIndex;
+        rbc.m_contractionOffset_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        // uint32_t *contractionCEs;
+        int contractionCE = m_dataInputStream_.readInt();
+        readcount += 4;
+        // needed for various closures int contractionSize
+        /*int contractionSize = */m_dataInputStream_.readInt();
+        readcount += 4;
+        // array of last collation element in expansion
+        int expansionEndCE = m_dataInputStream_.readInt();
+        readcount += 4;
+        // array of maximum expansion size corresponding to the expansion
+        // collation elements with last element in expansionEndCE
+        int expansionEndCEMaxSize = m_dataInputStream_.readInt();
+        readcount += 4;
+        // size of endExpansionCE int expansionEndCESize
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // hash table of unsafe code points
+        int unsafe = m_dataInputStream_.readInt();
+        readcount += 4;
+        // hash table of final code points in contractions.
+        int contractionEnd = m_dataInputStream_.readInt();
+        readcount += 4;
+        // int CEcount = m_dataInputStream_.readInt();
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // is jamoSpecial
+        rbc.m_isJamoSpecial_ = m_dataInputStream_.readBoolean();
+        readcount++;
+        // padding
+        m_dataInputStream_.skipBytes(3);
+        readcount += 3;
+        rbc.m_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        rbc.m_UCA_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        rbc.m_UCD_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        // byte charsetName[] = new byte[32]; // for charset CEs
+        m_dataInputStream_.skipBytes(32);
+        readcount += 32;
+        m_dataInputStream_.skipBytes(56); // for future use
+        readcount += 56;
+        if (m_headerSize_ < readcount) {
+            throw new IOException("Internal Error: Header size error");
+        }
+        m_dataInputStream_.skipBytes(m_headerSize_ - readcount);
+
+        if (rbc.m_contractionOffset_ == 0) { // contraction can be null
+            rbc.m_contractionOffset_ = mapping;
+            contractionCE = mapping;
+        }
+        m_optionSize_ = rbc.m_expansionOffset_ - m_headerSize_;
+        m_expansionSize_ = rbc.m_contractionOffset_ - rbc.m_expansionOffset_;
+        m_contractionIndexSize_ = contractionCE - rbc.m_contractionOffset_;
+        m_contractionCESize_ = mapping - contractionCE;
+        //m_trieSize_ = expansionEndCE - mapping;
+        m_expansionEndCESize_ = expansionEndCEMaxSize - expansionEndCE;
+        m_expansionEndCEMaxSizeSize_ = unsafe - expansionEndCEMaxSize;
+        m_unsafeSize_ = contractionEnd - unsafe;
+        m_UCAValuesSize_ = m_size_ - UCAConst; // UCA value, will be handled
+                                                // later
+        // treat it as normal collator first
+        // for normal collator there is no UCA contraction
+        m_contractionEndSize_ = m_size_ - contractionEnd;
+
+        rbc.m_contractionOffset_ >>= 1; // casting to ints
+        rbc.m_expansionOffset_ >>= 2; // casting to chars
+    }
+    
+    /**
+     * Read and break up the collation options passed in the stream of data and
+     * update the argument Collator with the results
+     * 
+     * @param rbc
+     *            RuleBasedCollator to populate
+     * @exception IOException
+     *                thrown when there's a data error.
+     */
+    private void readOptions(RuleBasedCollator rbc) throws IOException
+    {
+        int readcount = 0;
+        rbc.m_defaultVariableTopValue_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsFrenchCollation_ = (m_dataInputStream_.readInt()
+                                      == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        rbc.m_defaultIsAlternateHandlingShifted_ 
+                                   = (m_dataInputStream_.readInt() == 
+                                    RuleBasedCollator.AttributeValue.SHIFTED_);
+        readcount += 4;
+        rbc.m_defaultCaseFirst_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsCaseLevel_ = (m_dataInputStream_.readInt() 
+                                     == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        int value = m_dataInputStream_.readInt();
+        readcount += 4;
+        if (value == RuleBasedCollator.AttributeValue.ON_) {
+            value = Collator.CANONICAL_DECOMPOSITION;
+        }
+        else {
+            value = Collator.NO_DECOMPOSITION;
+        }
+        rbc.m_defaultDecomposition_ = value;
+        rbc.m_defaultStrength_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsHiragana4_ = (m_dataInputStream_.readInt() 
+                                     == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        rbc.m_defaultIsNumericCollation_ = (m_dataInputStream_.readInt() 
+                                      == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        m_dataInputStream_.skip(60); // reserved for future use
+        readcount += 60;
+        m_dataInputStream_.skipBytes(m_optionSize_ - readcount);
+        if (m_optionSize_ < readcount) {
+            throw new IOException("Internal Error: Option size error");
+        }
+    }
+    
+    /**
+    * Read and break up the stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate
+    * @param UCAConst object to fill up with UCA constants if we are reading 
+    *                 the UCA collator, if not use a null
+    * @return UCAContractions array filled up with the UCA contractions if we
+    *                        are reading the UCA collator
+    * @exception IOException thrown when there's a data error.
+    */
+    private char[] readImp(RuleBasedCollator rbc, 
+                          RuleBasedCollator.UCAConstants UCAConst) 
+                                                            throws IOException
+    {
+        readHeader(rbc);
+        // header size has been checked by readHeader
+        int readcount = m_headerSize_; 
+        // option size has been checked by readOptions
+        readOptions(rbc);
+        readcount += m_optionSize_;
+        m_expansionSize_ >>= 2;
+        rbc.m_expansion_ = new int[m_expansionSize_];
+        for (int i = 0; i < m_expansionSize_; i ++) {
+            rbc.m_expansion_[i] = m_dataInputStream_.readInt();
+        }
+        readcount += (m_expansionSize_ << 2);
+        if (m_contractionIndexSize_ > 0) { 
+            m_contractionIndexSize_ >>= 1;
+            rbc.m_contractionIndex_ = new char[m_contractionIndexSize_];
+            for (int i = 0; i < m_contractionIndexSize_; i ++) {
+                rbc.m_contractionIndex_[i] = m_dataInputStream_.readChar();
+            }
+            readcount += (m_contractionIndexSize_ << 1);
+            m_contractionCESize_ >>= 2;
+            rbc.m_contractionCE_ = new int[m_contractionCESize_];
+            for (int i = 0; i < m_contractionCESize_; i ++) {
+                rbc.m_contractionCE_[i] = m_dataInputStream_.readInt();
+            }
+            readcount += (m_contractionCESize_ << 2);
+        }
+        rbc.m_trie_ = new IntTrie(m_dataInputStream_, 
+                                 RuleBasedCollator.DataManipulate.getInstance());
+        if (!rbc.m_trie_.isLatin1Linear()) {
+            throw new IOException("Data corrupted, " 
+                                  + "Collator Tries expected to have linear "
+                                  + "latin one data arrays");
+        }
+        readcount += rbc.m_trie_.getSerializedDataSize();
+        m_expansionEndCESize_ >>= 2;
+        rbc.m_expansionEndCE_ = new int[m_expansionEndCESize_];
+        for (int i = 0; i < m_expansionEndCESize_; i ++) {
+            rbc.m_expansionEndCE_[i] = m_dataInputStream_.readInt();
+        }
+        readcount += (m_expansionEndCESize_ << 2);
+        rbc.m_expansionEndCEMaxSize_ = new byte[m_expansionEndCEMaxSizeSize_];
+        for (int i = 0; i < m_expansionEndCEMaxSizeSize_; i ++) {
+            rbc.m_expansionEndCEMaxSize_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_expansionEndCEMaxSizeSize_;
+        rbc.m_unsafe_ = new byte[m_unsafeSize_];
+        for (int i = 0; i < m_unsafeSize_; i ++) {
+            rbc.m_unsafe_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_unsafeSize_;
+        if (UCAConst != null) {
+            // we are reading the UCA
+            // unfortunately the UCA offset in any collator data is not 0 and
+            // only refers to the UCA data
+            m_contractionEndSize_ -= m_UCAValuesSize_;       
+        }
+        rbc.m_contractionEnd_ = new byte[m_contractionEndSize_];
+        for (int i = 0; i < m_contractionEndSize_; i ++) {
+            rbc.m_contractionEnd_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_contractionEndSize_;
+        if (UCAConst != null) {
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            int readUCAConstcount = 4;
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_VARIABLE_[0] = m_dataInputStream_.readInt();     
+            readUCAConstcount += 4;
+            UCAConst.FIRST_VARIABLE_[1] = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_VARIABLE_[0] = m_dataInputStream_.readInt(); 
+            readUCAConstcount += 4;
+            UCAConst.LAST_VARIABLE_[1] = m_dataInputStream_.readInt();                     
+            readUCAConstcount += 4;
+            UCAConst.FIRST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.RESET_TOP_VALUE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.RESET_TOP_VALUE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_TRAILING_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_TRAILING_[1] = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4; 
+            UCAConst.PRIMARY_TOP_MIN_ = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_IMPLICIT_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_IMPLICIT_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_TRAILING_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_TRAILING_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_SPECIAL_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_SPECIAL_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            int resultsize = (m_UCAValuesSize_ - readUCAConstcount) >> 1;
+            char result[] = new char[resultsize];
+            for (int i = 0; i < resultsize; i ++) {
+                result[i] = m_dataInputStream_.readChar();
+            }
+            readcount += m_UCAValuesSize_;
+            if (readcount != m_size_) {
+                throw new IOException("Internal Error: Data file size error");
+            }
+            return result;
+        }
+        if (readcount != m_size_) {
+            throw new IOException("Internal Error: Data file size error");
+        }
+        return null;
+    }
+    
+    /**
+     * Reads in the inverse uca data
+     * @param input input stream with the inverse uca data
+     * @return an object containing the inverse uca data
+     * @exception IOException thrown when error occurs while reading the 
+     *            inverse uca
+     */
+    private static CollationParsedRuleBuilder.InverseUCA readInverseUCA(
+                                                      InputStream inputStream)
+                                                      throws IOException
+    {
+         byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, INVERSE_UCA_DATA_FORMAT_ID_, 
+                              INVERSE_UCA_AUTHENTICATE_);
+                              
+        // weiv: check that we have the correct Unicode version in 
+        // binary files
+        VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+        if(UnicodeVersion[0] != UCDVersion.getMajor() 
+        || UnicodeVersion[1] != UCDVersion.getMinor()) {
+            throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+        }
+                              
+        CollationParsedRuleBuilder.InverseUCA result = 
+                                  new CollationParsedRuleBuilder.InverseUCA();
+        DataInputStream input = new DataInputStream(inputStream);        
+        input.readInt(); // bytesize
+        int tablesize = input.readInt(); // in int size
+        int contsize = input.readInt();  // in char size
+        input.readInt(); // table in bytes
+        input.readInt(); // conts in bytes
+        result.m_UCA_version_ = readVersion(input);
+        input.skipBytes(8); // skip padding
+        
+        int size = tablesize * 3; // one column for each strength
+        result.m_table_ = new int[size];
+        result.m_continuations_ = new char[contsize];
+        
+        for (int i = 0; i < size; i ++) {
+            result.m_table_[i] = input.readInt();
+        }
+        for (int i = 0; i < contsize; i ++) {
+            result.m_continuations_[i] = input.readChar();
+        }
+        input.close();
+        return result;
+    }
+    
+    /**
+     * Reads four bytes from the input and returns a VersionInfo
+     * object. Use it to read different collator versions.
+     * @param input already instantiated DataInputStream, positioned 
+     *              at the start of four version bytes
+     * @return a ready VersionInfo object
+     * @throws IOException thrown when error occurs while reading  
+     *            version bytes
+     */
+    
+    protected static VersionInfo readVersion(DataInputStream input) 
+        throws IOException {
+        byte[] version = new byte[4];
+        version[0] = input.readByte();
+        version[1] = input.readByte();
+        version[2] = input.readByte();
+        version[3] = input.readByte();
+        
+        VersionInfo result = 
+        VersionInfo.getInstance(
+            (int)version[0], (int)version[1], 
+            (int)version[2], (int)version[3]);
+        
+        return result;
+    }
+    
+    // private inner class -----------------------------------------------
+    
+    // private variables -------------------------------------------------
+    
+    /**
+     * Authenticate uca data format version
+     */
+    private static final ICUBinary.Authenticate UCA_AUTHENTICATE_ 
+                = new ICUBinary.Authenticate() {
+                        public boolean isDataVersionAcceptable(byte version[])
+                        {
+                            return version[0] == DATA_FORMAT_VERSION_[0] 
+                                   && version[1] >= DATA_FORMAT_VERSION_[1];
+                                   // Too harsh 
+                                   //&& version[1] == DATA_FORMAT_VERSION_[1]
+                                   //&& version[2] == DATA_FORMAT_VERSION_[2] 
+                                   //&& version[3] == DATA_FORMAT_VERSION_[3];
+                        }
+                };
+                
+    /**
+     * Authenticate uca data format version
+     */
+    private static final ICUBinary.Authenticate INVERSE_UCA_AUTHENTICATE_ 
+                = new ICUBinary.Authenticate() {
+                        public boolean isDataVersionAcceptable(byte version[])
+                        {
+                            return version[0] 
+                                    == INVERSE_UCA_DATA_FORMAT_VERSION_[0] 
+                                && version[1] 
+                                    >= INVERSE_UCA_DATA_FORMAT_VERSION_[1];
+                        }
+                };
+  
+    /**
+    * Data input stream for uca.icu 
+    */
+    private DataInputStream m_dataInputStream_;
+   
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                   {(byte)0x2, (byte)0x2, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x43,  
+                                                    (byte)0x6f, (byte)0x6c};
+    /**
+    * Inverse UCA file format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte INVERSE_UCA_DATA_FORMAT_VERSION_[] = 
+                                   {(byte)0x2, (byte)0x1, (byte)0x0, (byte)0x0};
+    private static final byte INVERSE_UCA_DATA_FORMAT_ID_[] = {(byte)0x49, 
+                                                               (byte)0x6e,  
+                                                               (byte)0x76, 
+                                                               (byte)0x43};
+                                
+    /**
+    * Wrong unicode version error string
+    */
+    private static final String WRONG_UNICODE_VERSION_ERROR_ =
+                                "Unicode version in binary image is not compatible with the current Unicode version";
+
+    /**
+     * Size of expansion table in bytes
+     */
+    private int m_expansionSize_;
+    /**
+     * Size of contraction index table in bytes
+     */
+    private int m_contractionIndexSize_;
+    /**
+     * Size of contraction table in bytes
+     */
+    private int m_contractionCESize_;
+    /*
+     * Size of the Trie in bytes
+     */
+    //private int m_trieSize_;
+    /**
+     * Size of the table that contains information about collation elements
+     * that end with an expansion 
+     */
+    private int m_expansionEndCESize_;
+    /**
+     * Size of the table that contains information about the maximum size of 
+     * collation elements that end with a particular expansion CE corresponding
+     * to the ones in expansionEndCE
+     */
+    private int m_expansionEndCEMaxSizeSize_;
+    /**
+     * Size of the option table that contains information about the collation
+     * options
+     */
+    private int m_optionSize_;
+    /**
+     * Size of the whole data file minusing the ICU header
+     */
+    private int m_size_;
+    /**
+     * Size of the collation data header
+     */
+    private int m_headerSize_;
+    /**
+     * Size of the table that contains information about the "Unsafe" 
+     * codepoints
+     */
+    private int m_unsafeSize_;
+    /**
+     * Size of the table that contains information about codepoints that ends
+     * with a contraction
+     */
+    private int m_contractionEndSize_;
+    /**
+     * Size of the table that contains UCA contraction information
+     */
+    private int m_UCAValuesSize_;
+      
+    // private methods ---------------------------------------------------
+      
+}
+
diff --git a/src/com/ibm/icu/text/CollatorServiceShim.java b/src/com/ibm/icu/text/CollatorServiceShim.java
new file mode 100644
index 0000000..4ec5437
--- /dev/null
+++ b/src/com/ibm/icu/text/CollatorServiceShim.java
@@ -0,0 +1,133 @@
+/**
+*******************************************************************************
+* Copyright (C) 2003-2008, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.text.Collator.CollatorFactory;
+import com.ibm.icu.util.ULocale;
+
+final class CollatorServiceShim extends Collator.ServiceShim {
+
+    Collator getInstance(ULocale locale) {
+    // use service cache, it's faster than instantiation
+//          if (service.isDefault()) {
+//              return new RuleBasedCollator(locale);
+//          }
+
+        try {
+            ULocale[] actualLoc = new ULocale[1];
+            Collator coll = (Collator)service.get(locale, actualLoc);
+            if (coll == null) {
+                throw new MissingResourceException("Could not locate Collator data", "", "");
+            }
+            coll = (Collator) coll.clone();
+            coll.setLocale(actualLoc[0], actualLoc[0]); // services make no distinction between actual & valid
+            return coll;
+        }
+        catch (CloneNotSupportedException e) {
+        ///CLOVER:OFF
+            throw new IllegalStateException(e.getMessage());
+        ///CLOVER:ON
+        }
+    }
+
+    Object registerInstance(Collator collator, ULocale locale) {
+        return service.registerObject(collator, locale);
+    }
+
+    Object registerFactory(CollatorFactory f) {
+        class CFactory extends LocaleKeyFactory {
+            CollatorFactory delegate;
+
+            CFactory(CollatorFactory fctry) {
+                super(fctry.visible()); 
+                this.delegate = fctry;
+            }
+
+            public Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                Object coll = delegate.createCollator(loc);
+                return coll;
+            }
+                
+            public String getDisplayName(String id, ULocale displayLocale) {
+                ULocale objectLocale = new ULocale(id);
+                return delegate.getDisplayName(objectLocale, displayLocale);
+            }
+
+            public Set getSupportedIDs() {
+                return delegate.getSupportedLocaleIDs();
+            }
+        }
+
+        return service.registerFactory(new CFactory(f));
+    }
+
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    Locale[] getAvailableLocales() {
+        // TODO rewrite this to just wrap getAvailableULocales later
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+        String id = objectLocale.getName();
+        return service.getDisplayName(id, displayLocale);
+    }
+
+    private static class CService extends ICULocaleService {
+        CService() {
+            super("Collator");
+
+            class CollatorFactory extends ICUResourceBundleFactory {
+                CollatorFactory() {
+                    super(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+                }
+
+                protected Object handleCreate(ULocale uloc, int kind, ICUService srvc) {
+                    return new RuleBasedCollator(uloc);
+                }
+            }
+
+            this.registerFactory(new CollatorFactory());
+            markDefault();
+        }
+
+        protected Object handleDefault(Key key, String[] actualIDReturn) {
+            if (actualIDReturn != null) {
+                actualIDReturn[0] = "root";
+            }
+            try {
+                return new RuleBasedCollator(ULocale.ROOT);
+            }
+            catch (MissingResourceException e) {
+                return null;
+            }
+        }
+    }
+    private static ICULocaleService service = new CService();
+}
diff --git a/src/com/ibm/icu/text/ComposedCharIter.java b/src/com/ibm/icu/text/ComposedCharIter.java
new file mode 100644
index 0000000..9622f57
--- /dev/null
+++ b/src/com/ibm/icu/text/ComposedCharIter.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+ * <tt>ComposedCharIter</tt> is an iterator class that returns all
+ * of the precomposed characters defined in the Unicode standard, along
+ * with their decomposed forms.  This is often useful when building
+ * data tables (<i>e.g.</i> collation tables) which need to treat composed
+ * and decomposed characters equivalently.
+ * <p>
+ * For example, imagine that you have built a collation table with ordering
+ * rules for the {@link Normalizer#DECOMP canonically decomposed} forms of all
+ * characters used in a particular language.  When you process input text using
+ * this table, the text must first be decomposed so that it matches the form
+ * used in the table.  This can impose a performance penalty that may be
+ * unacceptable in some situations.
+ * <p>
+ * You can avoid this problem by ensuring that the collation table contains
+ * rules for both the decomposed <i>and</i> composed versions of each character.
+ * To do so, use a <tt>ComposedCharIter</tt> to iterate through all of the
+ * composed characters in Unicode.  If the decomposition for that character
+ * consists solely of characters that are listed in your ruleset, you can
+ * add a new rule for the composed character that makes it equivalent to
+ * its decomposition sequence.
+ * <p>
+ * Note that <tt>ComposedCharIter</tt> iterates over a <em>static</em> table
+ * of the composed characters in Unicode.  If you want to iterate over the
+ * composed characters in a particular string, use {@link Normalizer} instead.
+ * <p>
+ * When constructing a <tt>ComposedCharIter</tt> there is one
+ * optional feature that you can enable or disable:
+ * <ul>
+ *   <li>{@link Normalizer#IGNORE_HANGUL} - Do not iterate over the Hangul
+ *          characters and their corresponding Jamo decompositions.
+ *          This option is off by default (<i>i.e.</i> Hangul processing is enabled)
+ *          since the Unicode standard specifies that Hangul to Jamo 
+ *          is a canonical decomposition.
+ * </ul>
+ * <p>
+ * <tt>ComposedCharIter</tt> is currently based on version 2.1.8 of the
+ * <a href="http://www.unicode.org" target="unicode">Unicode Standard</a>.
+ * It will be updated as later versions of Unicode are released.
+ * @deprecated ICU 2.2
+ */
+///CLOVER:OFF
+public final class ComposedCharIter {
+    
+    /**
+     * Constant that indicates the iteration has completed.
+     * {@link #next} returns this value when there are no more composed characters
+     * over which to iterate.
+     * @deprecated ICU 2.2
+     */
+    public static final  char DONE = (char) Normalizer.DONE;
+    
+    /**
+     * Construct a new <tt>ComposedCharIter</tt>.  The iterator will return
+     * all Unicode characters with canonical decompositions, including Korean
+     * Hangul characters.
+     * @deprecated ICU 2.2
+     */
+    public ComposedCharIter() {
+        compat = false;
+        //options =0;
+    }
+    
+    
+    /**
+     * Constructs a non-default <tt>ComposedCharIter</tt> with optional behavior.
+     * <p>
+     * @param compat    <tt>false</tt> for canonical decompositions only;
+     *                  <tt>true</tt> for both canonical and compatibility
+     *                  decompositions.
+     *
+     * @param options   Optional decomposition features.  Currently, the only
+     *                  supported option is {@link Normalizer#IGNORE_HANGUL}, which
+     *                  causes this <tt>ComposedCharIter</tt> not to iterate
+     *                  over the Hangul characters and their corresponding
+     *                  Jamo decompositions.
+     * @deprecated ICU 2.2
+     */
+    public ComposedCharIter(boolean compat, int options) {
+        this.compat = compat;
+        //this.options = options;
+    }
+    
+    /**
+     * Determines whether there any precomposed Unicode characters not yet returned
+     * by {@link #next}.
+     * @deprecated ICU 2.2
+     */
+    public boolean hasNext() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        return nextChar != Normalizer.DONE;
+    }
+    
+    /**
+     * Returns the next precomposed Unicode character.
+     * Repeated calls to <tt>next</tt> return all of the precomposed characters defined
+     * by Unicode, in ascending order.  After all precomposed characters have
+     * been returned, {@link #hasNext} will return <tt>false</tt> and further calls
+     * to <tt>next</tt> will return {@link #DONE}.
+     * @deprecated ICU 2.2
+     */
+    public char next() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        curChar = nextChar;
+        nextChar = Normalizer.DONE;
+        return (char) curChar;
+    }
+    
+    /**
+     * Returns the Unicode decomposition of the current character.
+     * This method returns the decomposition of the precomposed character most
+     * recently returned by {@link #next}.  The resulting decomposition is
+     * affected by the settings of the options passed to the constructor.
+     * @deprecated ICU 2.2
+     */
+    public String decomposition() {
+        // the decomposition buffer contains the decomposition of 
+        // current char so just return it
+        return new String(decompBuf,0, bufLen);
+    }
+    
+    private void findNextChar() {
+        int c=curChar+1;
+        for(;;){
+           if(c < 0xFFFF){
+               bufLen = NormalizerImpl.getDecomposition(c,compat,
+                                                        decompBuf,0,
+                                                        decompBuf.length);
+               if(bufLen>0){
+                    // the curChar can be decomposed... so it is a composed char
+                    // cache the result     
+                    break;
+               }
+               c++;
+           }else{
+               c=Normalizer.DONE;
+               break;
+           }
+        }
+        nextChar=c;  
+    }
+    
+    //private int options;
+    private boolean compat;
+    private char[] decompBuf = new char[100];
+    private int bufLen=0;
+    private int curChar = 0;
+    private int nextChar = Normalizer.DONE;
+    
+
+}
diff --git a/src/com/ibm/icu/text/CompoundTransliterator.java b/src/com/ibm/icu/text/CompoundTransliterator.java
new file mode 100644
index 0000000..efe4238
--- /dev/null
+++ b/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -0,0 +1,512 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import java.util.Vector;
+
+/**
+ * A transliterator that is composed of two or more other
+ * transliterator objects linked together.  For example, if one
+ * transliterator transliterates from script A to script B, and
+ * another transliterates from script B to script C, the two may be
+ * combined to form a new transliterator from A to C.
+ *
+ * <p>Composed transliterators may not behave as expected.  For
+ * example, inverses may not combine to form the identity
+ * transliterator.  See the class documentation for {@link
+ * Transliterator} for details.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @internal
+ */
+class CompoundTransliterator extends Transliterator {
+
+    private Transliterator[] trans;
+
+    private int numAnonymousRBTs = 0;
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @internal
+     */
+    /*public CompoundTransliterator(Transliterator[] transliterators,
+                                  UnicodeFilter filter) {
+        super(joinIDs(transliterators), filter);
+        trans = new Transliterator[transliterators.length];
+        System.arraycopy(transliterators, 0, trans, 0, trans.length);
+        computeMaximumContextLength();
+    }*/
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @internal
+     */
+    /*public CompoundTransliterator(Transliterator[] transliterators) {
+        this(transliterators, null);
+    }*/
+
+    /**
+     * Constructs a new compound transliterator.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     * @param filter a global filter for this compound transliterator
+     * or null
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID, int direction,
+                                  UnicodeFilter filter) {
+        super(ID, filter);
+        init(ID, direction, true);
+    }*/
+
+    /**
+     * Constructs a new compound transliterator with no filter.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID, int direction) {
+        this(ID, direction, null);
+    }*/
+
+    /**
+     * Constructs a new forward compound transliterator with no filter.
+     * @param ID compound ID
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID) {
+        this(ID, FORWARD, null);
+    }*/
+
+    /**
+     * Package private constructor for Transliterator from a vector of
+     * transliterators.  The caller is responsible for fixing up the
+     * ID.
+     */
+    CompoundTransliterator(Vector list) {
+        this(list, 0);
+    }
+
+    CompoundTransliterator(Vector list, int numAnonymousRBTs) {
+        super("", null);
+        trans = null;
+        init(list, FORWARD, false);
+        this.numAnonymousRBTs = numAnonymousRBTs;
+        // assume caller will fixup ID
+    }
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param id the id containing ';'-separated entries
+     * @param direction either FORWARD or REVERSE
+     * @param idSplitPoint the index into id at which the
+     * splitTrans should be inserted, if there is one, or
+     * -1 if there is none.
+     * @param splitTrans a transliterator to be inserted
+     * before the entry at offset idSplitPoint in the id string.  May be
+     * NULL to insert no entry.
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    /*private void init(String id,
+                      int direction,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        Vector list = new Vector();
+        UnicodeSet[] compoundFilter = new UnicodeSet[1];
+        StringBuffer regenID = new StringBuffer();
+        if (!TransliteratorIDParser.parseCompoundID(id, direction,
+                 regenID, list, compoundFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + id);
+        }
+
+        TransliteratorIDParser.instantiateList(list);
+
+        init(list, direction, fixReverseID);
+
+        if (compoundFilter[0] != null) {
+            setFilter(compoundFilter[0]);
+        }
+    }*/
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param list a vector of transliterator objects to be adopted.  It
+     * should NOT be empty.  The list should be in declared order.  That
+     * is, it should be in the FORWARD order; if direction is REVERSE then
+     * the list order will be reversed.
+     * @param direction either FORWARD or REVERSE
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    private void init(Vector list,
+                      int direction,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        // Allocate array
+        int count = list.size();
+        trans = new Transliterator[count];
+
+        // Move the transliterators from the vector into an array.
+        // Reverse the order if necessary.
+        int i;
+        for (i=0; i<count; ++i) {
+            int j = (direction == FORWARD) ? i : count - 1 - i;
+            trans[i] = (Transliterator) list.elementAt(j);
+        }
+
+        // If the direction is UTRANS_REVERSE then we may need to fix the
+        // ID.
+        if (direction == REVERSE && fixReverseID) {
+            StringBuffer newID = new StringBuffer();
+            for (i=0; i<count; ++i) {
+                if (i > 0) {
+                    newID.append(ID_DELIM);
+                }
+                newID.append(trans[i].getID());
+            }
+            setID(newID.toString());
+        }
+
+        computeMaximumContextLength();
+    }
+
+    /**
+     * Return the IDs of the given list of transliterators, concatenated
+     * with ';' delimiting them.  Equivalent to the perlish expression
+     * join(';', map($_.getID(), transliterators).
+     */
+    /*private static String joinIDs(Transliterator[] transliterators) {
+        StringBuffer id = new StringBuffer();
+        for (int i=0; i<transliterators.length; ++i) {
+            if (i > 0) {
+                id.append(';');
+            }
+            id.append(transliterators[i].getID());
+        }
+        return id.toString();
+    }*/
+
+    /**
+     * Returns the number of transliterators in this chain.
+     * @return number of transliterators in this chain.
+     * @internal
+     */
+    public int getCount() {
+        return trans.length;
+    }
+
+    /**
+     * Returns the transliterator at the given index in this chain.
+     * @param index index into chain, from 0 to <code>getCount() - 1</code>
+     * @return transliterator at the given index
+     * @internal
+     */
+    public Transliterator getTransliterator(int index) {
+        return trans[index];
+    }
+
+    /**
+     * Append c to buf, unless buf is empty or buf already ends in c.
+     */
+    private static void _smartAppend(StringBuffer buf, char c) {
+        if (buf.length() != 0 &&
+            buf.charAt(buf.length() - 1) != c) {
+            buf.append(c);
+        }
+    }
+
+    /**
+     * Override Transliterator:
+     * Create a rule string that can be passed to createFromRules()
+     * to recreate this transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return the rule string
+     * @internal
+     */
+    public String toRules(boolean escapeUnprintable) {
+        // We do NOT call toRules() on our component transliterators, in
+        // general.  If we have several rule-based transliterators, this
+        // yields a concatenation of the rules -- not what we want.  We do
+        // handle compound RBT transliterators specially -- those for which
+        // compoundRBTIndex >= 0.  For the transliterator at compoundRBTIndex,
+        // we do call toRules() recursively.
+        StringBuffer rulesSource = new StringBuffer();
+        if (numAnonymousRBTs >= 1 && getFilter() != null) {
+            // If we are a compound RBT and if we have a global
+            // filter, then emit it at the top.
+            rulesSource.append("::").append(getFilter().toPattern(escapeUnprintable)).append(ID_DELIM);
+        }
+        for (int i=0; i<trans.length; ++i) {
+            String rule;
+
+            // Anonymous RuleBasedTransliterators (inline rules and
+            // ::BEGIN/::END blocks) are given IDs that begin with
+            // "%Pass": use toRules() to write all the rules to the output
+            // (and insert "::Null;" if we have two in a row)
+            if (trans[i].getID().startsWith("%Pass")) {
+                rule = trans[i].toRules(escapeUnprintable);
+                if (numAnonymousRBTs > 1 && i > 0 && trans[i - 1].getID().startsWith("%Pass"))
+                    rule = "::Null;" + rule;
+
+            // we also use toRules() on CompoundTransliterators (which we
+            // check for by looking for a semicolon in the ID)-- this gets
+            // the list of their child transliterators output in the right
+            // format
+            } else if (trans[i].getID().indexOf(';') >= 0) {
+                rule = trans[i].toRules(escapeUnprintable);
+
+            // for everything else, use baseToRules()
+            } else {
+                rule = trans[i].baseToRules(escapeUnprintable);
+            }
+            _smartAppend(rulesSource, '\n');
+            rulesSource.append(rule);
+            _smartAppend(rulesSource, ID_DELIM);
+        }
+        return rulesSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     * @internal
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            set.addAll(trans[i].getSourceSet());
+            // Take the example of Hiragana-Latin.  This is really
+            // Hiragana-Katakana; Katakana-Latin.  The source set of
+            // these two is roughly [:Hiragana:] and [:Katakana:].
+            // But the source set for the entire transliterator is
+            // actually [:Hiragana:] ONLY -- that is, the first
+            // non-empty source set.
+
+            // This is a heuristic, and not 100% reliable.
+            if (!set.isEmpty()) {
+                break;
+            }
+        }
+        return set;
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     * @internal
+     */
+    public UnicodeSet getTargetSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            // This is a heuristic, and not 100% reliable.
+            set.addAll(trans[i].getTargetSet());
+        }
+        return set;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* Call each transliterator with the same start value and
+         * initial cursor index, but with the limit index as modified
+         * by preceding transliterators.  The cursor index must be
+         * reset for each transliterator to give each a chance to
+         * transliterate the text.  The initial cursor index is known
+         * to still point to the same place after each transliterator
+         * is called because each transliterator will not change the
+         * text between start and the initial value of cursor.
+         *
+         * IMPORTANT: After the first transliterator, each subsequent
+         * transliterator only gets to transliterate text committed by
+         * preceding transliterators; that is, the cursor (output
+         * value) of transliterator i becomes the limit (input value)
+         * of transliterator i+1.  Finally, the overall limit is fixed
+         * up before we return.
+         *
+         * Assumptions we make here:
+         * (1) contextStart <= start <= limit <= contextLimit <= text.length()
+         * (2) start <= start' <= limit'  ;cursor doesn't move back
+         * (3) start <= limit'            ;text before cursor unchanged
+         * - start' is the value of start after calling handleKT
+         * - limit' is the value of limit after calling handleKT
+         */
+
+        /**
+         * Example: 3 transliterators.  This example illustrates the
+         * mechanics we need to implement.  C, S, and L are the contextStart,
+         * start, and limit.  gl is the globalLimit.  contextLimit is
+         * equal to limit throughout.
+         *
+         * 1. h-u, changes hex to Unicode
+         *
+         *    4  7  a  d  0      4  7  a
+         *    abc/u0061/u    =>  abca/u
+         *    C  S       L       C   S L   gl=f->a
+         *
+         * 2. upup, changes "x" to "XX"
+         *
+         *    4  7  a       4  7  a
+         *    abca/u    =>  abcAA/u
+         *    C  SL         C    S
+         *                       L    gl=a->b
+         * 3. u-h, changes Unicode to hex
+         *
+         *    4  7  a        4  7  a  d  0  3
+         *    abcAA/u    =>  abc/u0041/u0041/u
+         *    C  S L         C              S
+         *                                  L   gl=b->15
+         * 4. return
+         *
+         *    4  7  a  d  0  3
+         *    abc/u0041/u0041/u
+         *    C S L
+         */
+
+        if (trans.length < 1) {
+            index.start = index.limit;
+            return; // Short circuit for empty compound transliterators
+        }
+
+        // compoundLimit is the limit value for the entire compound
+        // operation.  We overwrite index.limit with the previous
+        // index.start.  After each transliteration, we update
+        // compoundLimit for insertions or deletions that have happened.
+        int compoundLimit = index.limit;
+
+        // compoundStart is the start for the entire compound
+        // operation.
+        int compoundStart = index.start;
+
+        int delta = 0; // delta in length
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer("CompoundTransliterator{" + getID() +
+                                   (incremental ? "}i: IN=" : "}: IN="));
+            UtilityExtensions.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+
+        // Give each transliterator a crack at the run of characters.
+        // See comments at the top of the method for more detail.
+        for (int i=0; i<trans.length; ++i) {
+            index.start = compoundStart; // Reset start
+            int limit = index.limit;
+
+            if (index.start == index.limit) {
+                // Short circuit for empty range
+                if (DEBUG) {
+                    System.out.println("CompoundTransliterator[" + i +
+                                       ".." + (trans.length-1) +
+                                       (incremental ? "]i: " : "]: ") +
+                                       UtilityExtensions.formatInput(text, index) +
+                                       " (NOTHING TO DO)");
+                }
+                break;
+            }
+
+            if (DEBUG) {
+                log.setLength(0);
+                log.append("CompoundTransliterator[" + i + "=" +
+                           trans[i].getID() +
+                           (incremental ? "]i: " : "]: "));
+                UtilityExtensions.formatInput(log, text, index);
+            }
+
+            trans[i].filteredTransliterate(text, index, incremental);
+
+            // In a properly written transliterator, start == limit after
+            // handleTransliterate() returns when incremental is false.
+            // Catch cases where the subclass doesn't do this, and throw
+            // an exception.  (Just pinning start to limit is a bad idea,
+            // because what's probably happening is that the subclass
+            // isn't transliterating all the way to the end, and it should
+            // in non-incremental mode.)
+            if (!incremental && index.start != index.limit) {
+                throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + trans[i].getID());
+            }
+
+            if (DEBUG) {
+                log.append(" => ");
+                UtilityExtensions.formatInput(log, text, index);
+                System.out.println(Utility.escape(log.toString()));
+            }
+
+            // Cumulative delta for insertions/deletions
+            delta += index.limit - limit;
+
+            if (incremental) {
+                // In the incremental case, only allow subsequent
+                // transliterators to modify what has already been
+                // completely processed by prior transliterators.  In the
+                // non-incrmental case, allow each transliterator to
+                // process the entire text.
+                index.limit = index.start;
+            }
+        }
+
+        compoundLimit += delta;
+
+        // Start is good where it is -- where the last transliterator left
+        // it.  Limit needs to be put back where it was, modulo
+        // adjustments for deletions/insertions.
+        index.limit = compoundLimit;
+
+        if (DEBUG) {
+            log.setLength(0);
+            log.append("CompoundTransliterator{" + getID() +
+                       (incremental ? "}i: OUT=" : "}: OUT="));
+            UtilityExtensions.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+    }
+
+    /**
+     * Compute and set the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.
+     */
+    private void computeMaximumContextLength() {
+        int max = 0;
+        for (int i=0; i<trans.length; ++i) {
+            int len = trans[i].getMaximumContextLength();
+            if (len > max) {
+                max = len;
+            }
+        }
+        setMaximumContextLength(max);
+    }
+}
diff --git a/src/com/ibm/icu/text/CurrencyFormat.java b/src/com/ibm/icu/text/CurrencyFormat.java
new file mode 100644
index 0000000..a941df8
--- /dev/null
+++ b/src/com/ibm/icu/text/CurrencyFormat.java
@@ -0,0 +1,63 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2005, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Temporary internal concrete subclass of MeasureFormat implementing
+ * parsing and formatting of CurrencyAmount objects.  This class is
+ * likely to be redesigned and rewritten in the near future.
+ *
+ * <p>This class currently delegates to DecimalFormat for parsing and
+ * formatting.
+ *
+ * @see com.ibm.icu.text.UFormat
+ * @see com.ibm.icu.text.DecimalFormat
+ * @author Alan Liu
+ * @internal
+ */
+class CurrencyFormat extends MeasureFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -931679363692504634L;
+    
+    private NumberFormat fmt;
+
+    public CurrencyFormat(ULocale locale) {
+        fmt = NumberFormat.getCurrencyInstance(locale.toLocale());
+    }
+
+    /**
+     * Override Format.format().
+     * @see java.text.Format#format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)
+     */
+    public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
+        try {
+            CurrencyAmount currency = (CurrencyAmount) obj;
+            fmt.setCurrency(currency.getCurrency());
+            return fmt.format(currency.getNumber(), toAppendTo, pos);
+        } catch (ClassCastException e) {
+            throw new IllegalArgumentException("Invalid type: " + obj.getClass().getName());
+        }
+    }
+
+    /**
+     * Override Format.parseObject().
+     * @see java.text.Format#parseObject(java.lang.String, java.text.ParsePosition)
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        return fmt.parseCurrency(source, pos);
+    }
+}
diff --git a/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..7df0c97
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,1860 @@
+//##header J2SE15
+/*
+*   Copyright (C) 1996-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InvalidObjectException;
+import java.text.Format;
+import java.util.HashMap;
+import java.util.Map;
+import com.ibm.icu.util.GregorianCalendar;
+//#endif
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.RelativeDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * DateFormat is an abstract class for date/time formatting subclasses which
+ * formats and parses dates or time in a language-independent manner.
+ * The date/time formatting subclass, such as SimpleDateFormat, allows for
+ * formatting (i.e., date -> text), parsing (text -> date), and
+ * normalization.  The date is represented as a <code>Date</code> object or
+ * as the milliseconds since January 1, 1970, 00:00:00 GMT.
+ *
+ * <p>DateFormat provides many class methods for obtaining default date/time
+ * formatters based on the default or a given loacle and a number of formatting
+ * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More
+ * detail and examples of using these styles are provided in the method
+ * descriptions.
+ *
+ * <p>DateFormat helps you to format and parse dates for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * months, days of the week, or even the calendar format: lunar vs. solar.
+ *
+ * <p>To format a date for the current Locale, use one of the
+ * static factory methods:
+ * <pre>
+ *  myString = DateFormat.getDateInstance().format(myDate);
+ * </pre>
+ * <p>If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance();
+ *  for (int i = 0; i < a.length; ++i) {
+ *    output.println(df.format(myDate[i]) + "; ");
+ *  }
+ * </pre>
+ * <p>To format a number for a different Locale, specify it in the
+ * call to getDateInstance().
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
+ * </pre>
+ * <p>You can use a DateFormat to parse also.
+ * <pre>
+ *  myDate = df.parse(myString);
+ * </pre>
+ * <p>Use getDateInstance to get the normal date format for that country.
+ * There are other static factory methods available.
+ * Use getTimeInstance to get the time format for that country.
+ * Use getDateTimeInstance to get a date and time format. You can pass in 
+ * different options to these factory methods to control the length of the
+ * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends
+ * on the locale, but generally:
+ * <ul><li>SHORT is completely numeric, such as 12.13.52 or 3:30pm
+ * <li>MEDIUM is longer, such as Jan 12, 1952
+ * <li>LONG is longer, such as January 12, 1952 or 3:30:32pm
+ * <li>FULL is pretty completely specified, such as
+ * Tuesday, April 12, 1952 AD or 3:30:42pm PST.
+ * </ul>
+ *
+ * <p>You can also set the time zone on the format if you wish.
+ * If you want even more control over the format or parsing,
+ * (or want to give your users more control),
+ * you can try casting the DateFormat you get from the factory methods
+ * to a SimpleDateFormat. This will work for the majority
+ * of countries; just remember to put it in a try block in case you
+ * encounter an unusual one.
+ *
+ * <p>You can also use forms of the parse and format methods with
+ * ParsePosition and FieldPosition to
+ * allow you to
+ * <ul><li>progressively parse through pieces of a string.
+ * <li>align any particular field, or find out where it is for selection
+ * on the screen.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          UFormat
+ * @see          NumberFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class DateFormat extends UFormat {
+
+    /**
+     * The calendar that <code>DateFormat</code> uses to produce the time field
+     * values needed to implement date and time formatting.  Subclasses should
+     * initialize this to a calendar appropriate for the locale associated with
+     * this <code>DateFormat</code>.
+     * @serial
+     * @stable ICU 2.0
+     */
+    protected Calendar calendar;
+
+    /**
+     * The number formatter that <code>DateFormat</code> uses to format numbers
+     * in dates and times.  Subclasses should initialize this to a number format
+     * appropriate for the locale associated with this <code>DateFormat</code>.
+     * @serial
+     * @stable ICU 2.0
+     */
+    protected NumberFormat numberFormat;
+
+    /**
+     * FieldPosition selector for 'G' field alignment,
+     * corresponding to the {@link Calendar#ERA} field.
+     * @stable ICU 2.0
+     */
+    public final static int ERA_FIELD = 0;
+
+    /**
+     * FieldPosition selector for 'y' field alignment,
+     * corresponding to the {@link Calendar#YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR_FIELD = 1;
+
+    /**
+     * FieldPosition selector for 'M' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int MONTH_FIELD = 2;
+
+    /**
+     * FieldPosition selector for 'd' field alignment,
+     * corresponding to the {@link Calendar#DATE} field.
+     * @stable ICU 2.0
+     */
+    public final static int DATE_FIELD = 3;
+
+    /**
+     * FieldPosition selector for 'k' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 24:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY1_FIELD = 4;
+
+    /**
+     * FieldPosition selector for 'H' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 00:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY0_FIELD = 5;
+
+    /**
+     * FieldPosition selector for 'm' field alignment,
+     * corresponding to the {@link Calendar#MINUTE} field.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE_FIELD = 6;
+
+    /**
+     * FieldPosition selector for 's' field alignment,
+     * corresponding to the {@link Calendar#SECOND} field.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND_FIELD = 7;
+
+    /**
+     * FieldPosition selector for 'S' field alignment,
+     * corresponding to the {@link Calendar#MILLISECOND} field.
+     * @stable ICU 3.0
+     */
+    public final static int FRACTIONAL_SECOND_FIELD = 8;
+
+    /**
+     * Alias for FRACTIONAL_SECOND_FIELD.
+     * @deprecated ICU 3.0 use FRACTIONAL_SECOND_FIELD.
+     */
+    public final static int MILLISECOND_FIELD = FRACTIONAL_SECOND_FIELD;
+
+    /**
+     * FieldPosition selector for 'E' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_FIELD = 9;
+
+    /**
+     * FieldPosition selector for 'D' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR_FIELD = 10;
+
+    /**
+     * FieldPosition selector for 'F' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK_IN_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+
+    /**
+     * FieldPosition selector for 'w' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR_FIELD = 12;
+
+    /**
+     * FieldPosition selector for 'W' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH_FIELD = 13;
+
+    /**
+     * FieldPosition selector for 'a' field alignment,
+     * corresponding to the {@link Calendar#AM_PM} field.
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM_FIELD = 14;
+
+    /**
+     * FieldPosition selector for 'h' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR1_FIELD is used for the one-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 12:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR1_FIELD = 15;
+
+    /**
+     * FieldPosition selector for 'K' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR0_FIELD is used for the zero-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 00:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR0_FIELD = 16;
+
+    /**
+     * FieldPosition selector for 'z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 2.0
+     */
+    public final static int TIMEZONE_FIELD = 17;
+
+    /**
+     * FieldPosition selector for 'Y' field alignment,
+     * corresponding to the {@link Calendar#YEAR_WOY} field.
+     * @stable ICU 3.0
+     */
+    public final static int YEAR_WOY_FIELD = 18;
+
+    /**
+     * FieldPosition selector for 'e' field alignment,
+     * corresponding to the {@link Calendar#DOW_LOCAL} field.
+     * @stable ICU 3.0
+     */
+    public final static int DOW_LOCAL_FIELD = 19;
+
+    /**
+     * FieldPosition selector for 'u' field alignment,
+     * corresponding to the {@link Calendar#EXTENDED_YEAR} field.
+     * @stable ICU 3.0
+     */
+    public final static int EXTENDED_YEAR_FIELD = 20;
+
+    /**
+     * FieldPosition selector for 'g' field alignment,
+     * corresponding to the {@link Calendar#JULIAN_DAY} field.
+     * @stable ICU 3.0
+     */
+    public final static int JULIAN_DAY_FIELD = 21;
+
+    /**
+     * FieldPosition selector for 'A' field alignment,
+     * corresponding to the {@link Calendar#MILLISECONDS_IN_DAY} field.
+     * @stable ICU 3.0
+     */
+    public final static int MILLISECONDS_IN_DAY_FIELD = 22;
+
+    /**
+     * FieldPosition selector for 'Z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 3.0
+     */
+    public final static int TIMEZONE_RFC_FIELD = 23;
+
+    /**
+     * FieldPosition selector for 'v' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.  This displays the generic zone
+     * name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int TIMEZONE_GENERIC_FIELD = 24;
+ 
+
+    
+    /**
+     * FieldPosition selector for 'c' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field. 
+     * This displays the stand alone day name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int STANDALONE_DAY_FIELD = 25;
+    
+    /**
+     * FieldPosition selector for 'L' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the stand alone month name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int STANDALONE_MONTH_FIELD = 26;
+    
+    /**
+     * FieldPosition selector for 'Q' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the quarter.
+     * @stable ICU 3.6
+     */
+    public final static int QUARTER_FIELD = 27;
+    
+    /**
+     * FieldPosition selector for 'q' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the stand alone quarter, if available.
+     * @stable ICU 3.6
+     */
+    public final static int STANDALONE_QUARTER_FIELD = 28;
+    
+    /**
+     * FieldPosition selector for 'V' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.  This displays the fallback timezone
+     * name when VVVV is specified, and the short standard or daylight
+     * timezone name ignoring commonlyUsed when a single V is specified.
+     * @stable ICU 3.8
+     */
+    public final static int TIMEZONE_SPECIAL_FIELD = 29;
+
+    /**
+     * Number of FieldPosition selectors for DateFormat.
+     * Valid selectors range from 0 to FIELD_COUNT-1.
+     * @stable ICU 3.0
+     */
+    public final static int FIELD_COUNT = 30; // must == DateFormatSymbols.patternChars.length()
+
+    // Proclaim serial compatibility with 1.1 FCS
+    private static final long serialVersionUID = 7218322306649953788L;
+
+    /**
+     * Overrides Format.
+     * Formats a time object into a time string. Examples of time objects
+     * are a time value expressed in milliseconds and a Date object.
+     * @param obj must be a Number or a Date or a Calendar.
+     * @param toAppendTo the string buffer for the returning time string.
+     * @return the formatted time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @see java.text.Format
+     * @stable ICU 2.0
+     */
+    public final StringBuffer format(Object obj, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition)
+    {
+        if (obj instanceof Calendar)
+            return format( (Calendar)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Date)
+            return format( (Date)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Number)
+            return format( new Date(((Number)obj).longValue()),
+                          toAppendTo, fieldPosition );
+        else 
+            throw new IllegalArgumentException("Cannot format given Object (" + obj.getClass().getName() + ") as a Date");
+    }
+
+    /**
+     * Formats a date into a date/time string.
+     * @param cal a Calendar set to the date and time to be formatted
+     * into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                                        FieldPosition fieldPosition);
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date a Date to be formatted into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Date date, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition) {
+        // Use our Calendar object
+        calendar.setTime(date);
+        return format(calendar, toAppendTo, fieldPosition);
+    }
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date the time value to be formatted into a time string.
+     * @return the formatted time string.
+     * @stable ICU 2.0
+     */
+    public final String format(Date date)
+    {
+        return format(date, new StringBuffer(64),new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Parse a date/time string.
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @return      A Date, or null if the input could not be parsed
+     *
+     * @exception  ParseException  If the given string cannot be parsed as a date.
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Date parse(String text) throws ParseException
+    {
+        ParsePosition pos = new ParsePosition(0);
+        Date result = parse(text, pos);
+        if (pos.getIndex() == 0) // ICU4J
+            throw new ParseException("Unparseable date: \"" + text + "\"" ,
+                                     pos.getErrorIndex()); // ICU4J
+        return result;
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.
+     * For example, a time text "07/10/96 4:5 PM, PDT" will be parsed
+     * into a Calendar that is equivalent to Date(837039928046).  The
+     * caller should clear the calendar before calling this method,
+     * unless existing field information is to be kept.
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param cal   The calendar into which parsed data will be stored.
+     *              In general, this should be cleared before calling this
+     *              method.  If this parse fails, the calendar may still
+     *              have been modified.
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     * @stable ICU 2.0
+     */
+    public abstract void parse(String text, Calendar cal, ParsePosition pos);
+
+    /**
+     * Parse a date/time string according to the given parse position.  For
+     * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date
+     * that is equivalent to Date(837039928046).
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     *
+     * @return      A Date, or null if the input could not be parsed
+     * @stable ICU 2.0
+     */
+    public Date parse(String text, ParsePosition pos) {
+        Date result = null;
+        int start = pos.getIndex();
+        TimeZone tzsav = calendar.getTimeZone();
+        calendar.clear();
+        parse(text, calendar, pos);
+        if (pos.getIndex() != start) {
+            try {
+                result = calendar.getTime();
+            } catch (IllegalArgumentException e) {
+                // This occurs if the calendar is non-lenient and there is
+                // an out-of-range field.  We don't know which field was
+                // illegal so we set the error index to the start.
+                pos.setIndex(start);
+                pos.setErrorIndex(start);
+            }
+        }
+        // Restore TimeZone
+        calendar.setTimeZone(tzsav);
+        return result;
+    }
+
+    /**
+     * Parse a date/time string into an Object.  This convenience method simply
+     * calls parse(String, ParsePosition).
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Object parseObject (String source, ParsePosition pos)
+    {
+        return parse(source, pos);
+    }
+
+    /**
+     * Constant for empty style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int NONE = -1;
+    
+    /**
+     * Constant for full style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int FULL = 0;
+
+    /**
+     * Constant for long style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int LONG = 1;
+
+    /**
+     * Constant for medium style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int MEDIUM = 2;
+
+    /**
+     * Constant for short style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 3;
+
+    /**
+     * Constant for default style pattern.  Its value is MEDIUM.
+     * @stable ICU 2.0
+     */
+    public static final int DEFAULT = MEDIUM;
+    
+    /**
+     * Constant for relative style mask.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE = (1 << 7);
+
+    /**
+     * Constant for relative full style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_FULL = RELATIVE | FULL;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_LONG = RELATIVE | LONG;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_MEDIUM = RELATIVE | MEDIUM;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_SHORT = RELATIVE | SHORT;
+
+    /**
+     * Constant for relative default style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_DEFAULT = RELATIVE | DEFAULT;
+
+    /* Below are pre-defined skeletons
+     *
+     * <P>
+     * A skeleton 
+     * <ul>
+     * <li>
+     * 1. only keeps the field pattern letter and ignores all other parts 
+     *    in a pattern, such as space, punctuations, and string literals.
+     * <li>
+     * 2. hides the order of fields. 
+     * <li>
+     * 3. might hide a field's pattern letter length.
+     *
+     *    For those non-digit calendar fields, the pattern letter length is 
+     *    important, such as MMM, MMMM, and MMMMM; E and EEEE, 
+     *    and the field's pattern letter length is honored.
+     *    
+     *    For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+     *    the field pattern length is ignored and the best match, which is 
+     *    defined in date time patterns, will be returned without honor 
+     *    the field pattern letter length in skeleton.
+     * </ul>
+     */
+    /** 
+     * Constant for date pattern with minute and second.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MINUTE_SECOND = "ms";
+    
+    /** 
+     * Constant for date pattern with hour and minute in 24-hour presentation.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR24_MINUTE = "Hm";
+    
+    /** 
+     * Constant for date pattern with hour, minute, and second in
+     * 24-hour presentation.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR24_MINUTE_SECOND = "Hms";      
+    
+    /** 
+     * Constant for date pattern with hour, minute, and second.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_SECOND = "hms";
+    
+    /** 
+     * Constant for date pattern with standalone month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String STANDALONE_MONTH = "LLLL";
+    
+    /** 
+     * Constant for date pattern with standalone abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_STANDALONE_MONTH = "LLL";
+    
+    
+    /** 
+     * Constant for date pattern with year and quarter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_QUARTER = "yQQQ";
+    
+    /** 
+     * Constant for date pattern with year and abbreviated quarter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_QUARTER = "yQ";
+
+    
+    /* Below are skeletons that date interval pre-defined in resource file.
+     * Users are encouraged to use them in date interval format factory methods.
+     */
+    /** 
+     * Constant for date pattern with hour and miunte.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE = "hm";
+
+    /** 
+     * Constant for date pattern with year.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR = "y";
+    
+    /** 
+     * Constant for date pattern with day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String DAY = "d";
+    
+    /** 
+     * Constant for date pattern with numeric month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
+    
+    /** 
+     * Constant for date pattern with year and numeric month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH = "yM";              
+    
+    /** 
+     * Constant for date pattern with numeric month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH_DAY = "Md";
+    
+    /** 
+     * Constant for date pattern with year, numeric month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
+      
+    /** 
+     * Constant for date pattern with abbreviated month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
+    
+    /** 
+     * Constant for date pattern with year and month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH = "yMMMM";
+    
+    /** 
+     * Constant for date pattern with year and abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH = "yMMM";
+    
+    /** 
+     * Constant for date pattern having month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH_DAY = "MMMMd";
+    
+    
+    /** 
+     * Constant for date pattern with abbreviated month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH_DAY = "MMMd"; 
+
+    /** 
+     * Constant for date pattern with month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
+    
+    /** 
+     * Constant for date pattern with year, abbreviated month, weekday, 
+     * and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd"; 
+    
+    /** 
+     * Constant for date pattern with year, month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
+
+    /** 
+     * Constant for date pattern with year, month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH_DAY = "yMMMMd";
+
+    /** 
+     * Constant for date pattern with year, abbreviated month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
+
+    /** 
+     * Constant for date pattern with year, numeric month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH_DAY = "yMd";
+
+    /** 
+     * Constant for date pattern with numeric month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH = "M";
+
+    /** 
+     * Constant for date pattern with abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH = "MMM";
+
+    /** 
+     * Constant for date pattern with month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH = "MMMM";
+
+    /** 
+     * Constant for date pattern with hour, minute, and generic timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_GENERIC_TZ = "hmv";
+
+    /** 
+     * Constant for date pattern with hour, minute, and timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_TZ = "hmz";
+
+    /** 
+     * Constant for date pattern with hour.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR = "h";
+
+    /** 
+     * Constant for date pattern with hour and generic timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_GENERIC_TZ = "hv";
+
+    /** 
+     * Constant for date pattern with hour and timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_TZ = "hz";
+
+    /**
+     * Gets the time formatter with the default formatting style
+     * for the default locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance()
+    {
+        return get(-1, DEFAULT, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style)
+    {
+        return get(-1, style, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(-1, style, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param locale the given ulocale.
+     * @return a time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getTimeInstance(int style,
+                                                 ULocale locale)
+    {
+        return get(-1, style, locale);
+    }
+
+    /**
+     * Gets the date formatter with the default formatting style
+     * for the default locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance()
+    {
+        return get(DEFAULT, -1, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style)
+    {
+        return get(style, -1, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(style, -1, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param locale the given ulocale.
+     * @return a date formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getDateInstance(int style,
+                                                 ULocale locale)
+    {
+        return get(style, -1, locale);
+    }
+
+    /**
+     * Gets the date/time formatter with the default formatting style
+     * for the default locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance()
+    {
+        return get(DEFAULT, DEFAULT, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given date and time
+     * formatting styles for the default locale.
+     * @param dateStyle the given date formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param timeStyle the given time formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle,
+                                                       int timeStyle)
+    {
+        return get(dateStyle, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat
+        getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
+    {
+        return get(dateStyle, timeStyle, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param locale the given ulocale.
+     * @return a date/time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat
+        getDateTimeInstance(int dateStyle, int timeStyle, ULocale locale)
+    {
+        return get(dateStyle, timeStyle, locale);
+    }
+
+    /**
+     * Get a default date/time formatter that uses the SHORT style for both the
+     * date and the time.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getInstance() {
+        return getDateTimeInstance(SHORT, SHORT);
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales()
+    {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales()
+    {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Set the calendar to be used by this date format.  Initially, the default
+     * calendar for the specified or default locale is used.
+     * @param newCalendar the new Calendar to be used by the date format
+     * @stable ICU 2.0
+     */
+    public void setCalendar(Calendar newCalendar)
+    {
+        this.calendar = newCalendar;
+    }
+
+    /**
+     * Gets the calendar associated with this date/time formatter.
+     * @return the calendar associated with this date/time formatter.
+     * @stable ICU 2.0
+     */
+    public Calendar getCalendar()
+    {
+        return calendar;
+    }
+
+    /**
+     * Allows you to set the number formatter.
+     * @param newNumberFormat the given new NumberFormat.
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat)
+    {
+        this.numberFormat = newNumberFormat;
+        /*In order to parse String like "11.10.2001" to DateTime correctly 
+          in Locale("fr","CH") [Richard/GCL]
+        */
+        this.numberFormat.setParseIntegerOnly(true);
+    }
+
+    /**
+     * Gets the number formatter which this date/time formatter uses to
+     * format and parse a time.
+     * @return the number formatter which this date/time formatter uses.
+     * @stable ICU 2.0
+     */
+    public NumberFormat getNumberFormat()
+    {
+        return numberFormat;
+    }
+
+    /**
+     * Sets the time zone for the calendar of this DateFormat object.
+     * @param zone the given new time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone zone)
+    {
+        calendar.setTimeZone(zone);
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone associated with the calendar of DateFormat.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone()
+    {
+        return calendar.getTimeZone();
+    }
+
+    /**
+     * Specify whether or not date/time parsing is to be lenient.  With
+     * lenient parsing, the parser may use heuristics to interpret inputs that
+     * do not precisely match this object's format.  With strict parsing,
+     * inputs must match this object's format.
+     * @param lenient when true, parsing is lenient
+     * @see com.ibm.icu.util.Calendar#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)
+    {
+        calendar.setLenient(lenient);
+    }
+
+    /**
+     * Tell whether date/time parsing is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient()
+    {
+        return calendar.isLenient();
+    }
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    ///CLOVER:OFF
+    // turn off code coverage since all subclasses override this
+    public int hashCode() {
+        return numberFormat.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+    ///CLOVER:ON
+
+    /**
+     * Overrides equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormat other = (DateFormat) obj;
+        return (calendar.isEquivalentTo(other.calendar) &&
+                numberFormat.equals(other.numberFormat));
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        DateFormat other = (DateFormat) super.clone();
+        other.calendar = (Calendar) calendar.clone();
+        other.numberFormat = (NumberFormat) numberFormat.clone();
+        return other;
+    }
+
+    /**
+     * Creates a DateFormat with the given time and/or date style in the given
+     * locale.
+     * @param dateStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no date
+     * @param timeStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no time
+     * @param loc the locale for the format
+     */
+    private static DateFormat get(int dateStyle, int timeStyle, ULocale loc) {
+        if((timeStyle != -1 && (timeStyle & RELATIVE)>0) || (dateStyle != -1 && (dateStyle & RELATIVE)>0)) {
+            RelativeDateFormat r = new RelativeDateFormat(timeStyle, dateStyle /* offset? */, loc);
+            return r;
+        }
+    
+        if (timeStyle < -1 || timeStyle > 3) {
+            throw new IllegalArgumentException("Illegal time style " + timeStyle);
+        }
+        if (dateStyle < -1 || dateStyle > 3) {
+            throw new IllegalArgumentException("Illegal date style " + dateStyle);
+        }
+        try {
+            Calendar cal = Calendar.getInstance(loc);
+            DateFormat result = cal.getDateTimeFormat(dateStyle, timeStyle, loc);
+            result.setLocale(cal.getLocale(ULocale.VALID_LOCALE),
+                 cal.getLocale(ULocale.ACTUAL_LOCALE));
+            return result;
+        } catch (MissingResourceException e) {
+            ///CLOVER:OFF
+            // coverage requires separate run with no data, so skip
+            return new SimpleDateFormat("M/d/yy h:mm a");
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Create a new date format.
+     * @stable ICU 2.0
+     */
+    protected DateFormat() {}
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    //-------------------------------------------------------------------------
+    // Public static interface for creating custon DateFormats for different
+    // types of Calendars.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, dateStyle, -1, ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, ULocale locale)
+    {
+        return getDateTimeInstance(cal, dateStyle, -1, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, -1, timeStyle, ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, ULocale locale)
+    {
+        return getDateTimeInstance(cal, -1, timeStyle, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                 int timeStyle, Locale locale)
+    {
+        return cal.getDateTimeFormat(dateStyle, timeStyle, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                 int timeStyle, ULocale locale)
+    {
+        return cal.getDateTimeFormat(dateStyle, timeStyle, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal, Locale locale) {
+        return getDateTimeInstance(cal, SHORT, SHORT, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    static final public DateFormat getInstance(Calendar cal, ULocale locale) {
+        return getDateTimeInstance(cal, SHORT, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal) {
+        return getInstance(cal, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle) {
+        return getDateInstance(cal, dateStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle) {
+        return getTimeInstance(cal, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle) {
+        return getDateTimeInstance(cal, dateStyle, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern) {
+        return getPatternInstance(pattern, ULocale.getDefault());
+    }
+    
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern, Locale locale) {
+        return getPatternInstance(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the given locale.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     *
+     * @param pattern The pattern that selects the fields to be formatted. (Uses the 
+     *              {@link DateTimePatternGenerator}.) This can be {@link DateFormat#ABBR_MONTH}, 
+     *              {@link DateFormat#MONTH_WEEKDAY_DAY}, etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern, ULocale locale) {
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(pattern);
+        return new SimpleDateFormat(bestPattern, locale);
+    }
+
+    /*
+     * Package accessible.
+     * Used by DateIntervalFormat
+     * @internal ICU 4.1.1
+     */
+    final static DateFormat getPatternInstance(String pattern, ULocale locale,
+                                           DateTimePatternGenerator generator) {
+        final String bestPattern = generator.getBestPattern(pattern);
+        return new SimpleDateFormat(bestPattern, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(Calendar cal, String pattern, Locale locale) {
+        return getPatternInstance(cal, pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param pattern The pattern that selects the fields to be formatted. (Uses the 
+     *              {@link DateTimePatternGenerator}.)  This can be
+     *              {@link DateFormat#ABBR_MONTH}, {@link DateFormat#MONTH_WEEKDAY_DAY},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(Calendar cal, String pattern, ULocale locale) {
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(pattern);
+        SimpleDateFormat format = new SimpleDateFormat(bestPattern, locale);
+        format.setCalendar(cal);
+        return format;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * DateFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.8
+     */
+    public static class Field extends Format.Field {
+
+        private static final long serialVersionUID = -3627456821000730829L;
+
+        // Max number of calendar fields
+        private static final int CAL_FIELD_COUNT;
+
+        // Table for mapping calendar field number to DateFormat.Field
+        private static final Field[] CAL_FIELDS;
+ 
+        // Map for resolving DateFormat.Field by name
+        private static final Map FIELD_NAME_MAP;
+
+        static {
+            GregorianCalendar cal = new GregorianCalendar();
+            CAL_FIELD_COUNT = cal.getFieldCount();
+            CAL_FIELDS = new Field[CAL_FIELD_COUNT];
+            FIELD_NAME_MAP = new HashMap(CAL_FIELD_COUNT);
+        }
+
+        // Java fields -------------------
+
+        /**
+         * Constant identifying the time of day indicator(am/pm).
+         * @stable ICU 3.8
+         */
+        public static final Field AM_PM = new Field("am pm", Calendar.AM_PM);
+
+        /**
+         * Constant identifying the day of month field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_MONTH = new Field("day of month", Calendar.DAY_OF_MONTH);
+
+        /**
+         * Constant identifying the day of week field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_WEEK = new Field("day of week", Calendar.DAY_OF_WEEK);
+
+        /**
+         * Constant identifying the day of week in month field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_WEEK_IN_MONTH = new Field("day of week in month", Calendar.DAY_OF_WEEK_IN_MONTH);
+
+        /**
+         * Constant identifying the day of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_YEAR = new Field("day of year", Calendar.DAY_OF_YEAR);
+
+        /**
+         * Constant identifying the era field.
+         * @stable ICU 3.8
+         */
+        public static final Field ERA = new Field("era", Calendar.ERA);
+
+        /**
+         * Constant identifying the hour(0-23) of day field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR_OF_DAY0 = new Field("hour of day", Calendar.HOUR_OF_DAY);
+
+        /**
+         * Constant identifying the hour(1-24) of day field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR_OF_DAY1 = new Field("hour of day 1", -1);
+
+        /**
+         * Constant identifying the hour(0-11) field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR0 = new Field("hour", Calendar.HOUR);
+
+        /**
+         * Constant identifying the hour(1-12) field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR1 = new Field("hour 1", -1);
+
+        /**
+         * Constant identifying the millisecond field.
+         * @stable ICU 3.8
+         */
+        public static final Field MILLISECOND = new Field("millisecond", Calendar.MILLISECOND);
+
+        /**
+         * Constant identifying the minute field.
+         * @stable ICU 3.8
+         */
+        public static final Field MINUTE = new Field("minute", Calendar.MINUTE);
+
+        /**
+         * Constant identifying the month field.
+         * @stable ICU 3.8
+         */
+        public static final Field MONTH = new Field("month", Calendar.MONTH);
+
+        /**
+         * Constant identifying the second field.
+         * @stable ICU 3.8
+         */
+        public static final Field SECOND = new Field("second", Calendar.SECOND);
+
+        /**
+         * Constant identifying the time zone field.
+         * @stable ICU 3.8
+         */
+        public static final Field TIME_ZONE = new Field("time zone", -1);
+
+        /**
+         * Constant identifying the week of month field.
+         * @stable ICU 3.8
+         */
+        public static final Field WEEK_OF_MONTH = new Field("week of month", Calendar.WEEK_OF_MONTH);
+
+        /**
+         * Constant identifying the week of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field WEEK_OF_YEAR = new Field("week of year", Calendar.WEEK_OF_YEAR);
+
+        /**
+         * Constant identifying the year field.
+         * @stable ICU 3.8
+         */
+        public static final Field YEAR = new Field("year", Calendar.YEAR);
+
+
+        // ICU only fields -------------------
+
+        /**
+         * Constant identifying the local day of week field.
+         * @stable ICU 3.8
+         */
+        public static final Field DOW_LOCAL = new Field("local day of week", Calendar.DOW_LOCAL);
+
+        /**
+         * Constant identifying the extended year field.
+         * @stable ICU 3.8
+         */
+        public static final Field EXTENDED_YEAR = new Field("extended year", Calendar.EXTENDED_YEAR);
+
+        /**
+         * Constant identifying the Julian day field.
+         * @stable ICU 3.8
+         */
+        public static final Field JULIAN_DAY = new Field("Julian day", Calendar.JULIAN_DAY);
+
+        /**
+         * Constant identifying the milliseconds in day field.
+         * @stable ICU 3.8
+         */
+        public static final Field MILLISECONDS_IN_DAY = new Field("milliseconds in day", Calendar.MILLISECONDS_IN_DAY);
+
+        /**
+         * Constant identifying the year used with week of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field YEAR_WOY = new Field("year for week of year", Calendar.YEAR_WOY);
+
+        /**
+         * Constant identifying the quarter field.
+         * @stable ICU 3.8
+         */
+        public static final Field QUARTER = new Field("quarter", -1);
+
+        // Stand alone types are variants for its base types.  So we do not define Field for
+        // them.
+        /*
+        public static final Field STANDALONE_DAY = new Field("stand alone day of week", Calendar.DAY_OF_WEEK);
+        public static final Field STANDALONE_MONTH = new Field("stand alone month", Calendar.MONTH);
+        public static final Field STANDALONE_QUARTER = new Field("stand alone quarter", -1);
+        */
+
+        // Corresponding calendar field
+        private final int calendarField;
+
+        /**
+         * Constructs a <code>DateFormat.Field</code> with the given name and
+         * the <code>Calendar</code> field which this attribute represents.  Use -1 for
+         * <code>calendarField</code> if this field does not have a corresponding
+         * <code>Calendar</code> field.
+         * 
+         * @param name          Name of the attribute
+         * @param calendarField <code>Calendar</code> field constant
+         * 
+         * @stable ICU 3.8
+         */
+        protected Field(String name, int calendarField) {
+            super(name);
+            this.calendarField = calendarField;
+            if (this.getClass() == DateFormat.Field.class) {
+                FIELD_NAME_MAP.put(name, this);
+                if (calendarField >= 0 && calendarField < CAL_FIELD_COUNT) {
+                    CAL_FIELDS[calendarField] = this;
+                }
+            }
+        }
+
+        /**
+         * Returns the <code>Field</code> constant that corresponds to the <code>
+         * Calendar</code> field <code>calendarField</code>.  If there is no
+         * corresponding <code>Field</code> is available, null is returned.
+         * 
+         * @param calendarField <code>Calendar</code> field constant
+         * @return <code>Field</code> associated with the <code>calendarField</code>,
+         * or null if no associated <code>Field</code> is available.
+         * @throws IllegalArgumentException if <code>calendarField</code> is not
+         * a valid <code>Calendar</code> field constant.
+         * 
+         * @stable ICU 3.8
+         */
+        public static DateFormat.Field ofCalendarField(int calendarField) {
+            if (calendarField < 0 || calendarField >= CAL_FIELD_COUNT) {
+                throw new IllegalArgumentException("Calendar field number is out of range");
+            }
+            return CAL_FIELDS[calendarField];
+        }
+        
+        /**
+         * Returns the <code>Calendar</code> field associated with this attribute.
+         * If there is no corresponding <code>Calendar</code> available, this will
+         * return -1.
+         * 
+         * @return <code>Calendar</code> constant for this attribute.
+         * 
+         * @stable ICU 3.8
+         */
+        public int getCalendarField() {
+            return calendarField;
+        }
+        
+        /**
+         * Resolves instances being deserialized to the predefined constants.
+         * 
+         * @throws InvalidObjectException if the constant could not be resolved.
+         * 
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            ///CLOVER:OFF
+            if (this.getClass() != DateFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of DateFormat.Field must implement readResolve.");
+            }
+            ///CLOVER:ON
+            Object o = FIELD_NAME_MAP.get(this.getName());
+            ///CLOVER:OFF
+            if (o == null) {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+            ///CLOVER:ON
+            return o;
+        }
+    }
+//#endif
+    
+}
diff --git a/src/com/ibm/icu/text/DateFormatSymbols.java b/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..08c9352
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,1706 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.ZoneStringFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.SimpleTimeZone
+ * @author       Chen-Lieh Huang
+ * @stable ICU 2.0
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+
+    // TODO make sure local pattern char string is 18 characters long,
+    // that is, that it encompasses the new 'u' char for
+    // EXTENDED_YEAR.  Two options: 1. Make sure resource data is
+    // correct; 2. Make code add in 'u' at end if len == 17.
+
+    // Constants for context
+    /**
+     * Constant for context.
+     * @stable ICU 3.6
+     */
+    public static final int FORMAT = 0;
+
+    /**
+     * Constant for context.
+     * @stable ICU 3.6
+     */
+    public static final int STANDALONE = 1;
+
+    /**
+     * Constant for context.
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int DT_CONTEXT_COUNT = 2;
+
+    // Constants for width
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int ABBREVIATED = 0;
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int WIDE = 1;
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int NARROW = 2;
+
+    /**
+     * Constant for width.
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int DT_WIDTH_COUNT = 3;
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the default locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols()
+    {
+        this(ULocale.getDefault());
+    }
+    
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Locale locale)
+    {
+        this(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given ulocale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ULocale locale)
+    {
+        initializeData(locale, getCalendarType(locale));
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the default locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols()</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return A DateFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DateFormatSymbols getInstance() {
+        return new DateFormatSymbols();
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols(locale)</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DateFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DateFormatSymbols getInstance(Locale locale) {
+        return new DateFormatSymbols(locale);
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols(locale)</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DateFormatSymbols instance.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DateFormatSymbols getInstance(ULocale locale) {
+        return new DateFormatSymbols(locale);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>Locale</code>s available in this class.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>Locale</code>s for which localized <code>DateFormatSymbols</code> instances are available.
+     * @stable ICU 3.8
+     */
+    public static Locale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>ULocale</code>s available in this class.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>ULocale</code>s for which localized <code>DateFormatSymbols</code> instances are available.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);        
+    }
+    
+    /**
+     * Era strings. For example: "AD" and "BC".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eras[] = null;
+
+    /**
+     * Era name strings. For example: "Anno Domini" and "Before Christ".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eraNames[] = null;
+    
+    /**
+     * Narrow era names. For example: "A" and "B". An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String narrowEras[] = null;
+
+    /**
+     * Month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String months[] = null;
+
+    /**
+     * Short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String shortMonths[] = null;
+
+    /**
+     * Narrow month strings. For example: "J", "F", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String narrowMonths[] = null;
+
+    /**
+     * Standalone month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String standaloneMonths[] = null;
+
+    /**
+     * Standalone short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String standaloneShortMonths[] = null;
+
+    /**
+     * Standalone narrow month strings. For example: "J", "F", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String standaloneNarrowMonths[] = null;
+
+    /**
+     * Weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>weekdays[0]</code> is ignored.
+     * @serial
+     */
+    String weekdays[] = null;
+
+    /**
+     * Short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>shortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String shortWeekdays[] = null;
+
+    /**
+     * Narrow weekday strings. For example: "S", "M", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>narrowWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String narrowWeekdays[] = null;
+
+    /**
+     * Standalone weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneWeekdays[] = null;
+
+    /**
+     * Standalone short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneShortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneShortWeekdays[] = null;
+
+    /**
+     * Standalone narrow weekday strings. For example: "S", "M", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneNarrowWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneNarrowWeekdays[] = null;
+
+    /**
+     * AM and PM strings. For example: "AM" and "PM".  An array of
+     * 2 strings, indexed by <code>Calendar.AM</code> and
+     * <code>Calendar.PM</code>.
+     * @serial
+     */
+    String ampms[] = null;
+    
+    /**
+     * Abbreviated quarter names. For example: "Q1", "Q2", "Q3", "Q4". An array
+     * of 4 strings indexed by the month divided by 3.
+     * @serial
+     */
+    String shortQuarters[] = null;
+    
+    /**
+     * Full quarter names. For example: "1st Quarter", "2nd Quarter", "3rd Quarter",
+     * "4th Quarter". An array of 4 strings, indexed by the month divided by 3.
+     * @serial
+     */
+    String quarters[] = null;
+    
+    /**
+     * Standalone abbreviated quarter names. For example: "Q1", "Q2", "Q3", "Q4". An array
+     * of 4 strings indexed by the month divided by 3.
+     * @serial
+     */
+    String standaloneShortQuarters[] = null;
+    
+    /**
+     * Standalone full quarter names. For example: "1st Quarter", "2nd Quarter", "3rd Quarter",
+     * "4th Quarter". An array of 4 strings, indexed by the month divided by 3.
+     * @serial
+     */
+    String standaloneQuarters[] = null;
+
+    /**
+     * Pattern string used for localized time zone GMT format.  For example, "GMT{0}"
+     * @serial
+     */
+    String gmtFormat = null;
+
+    /**
+     * Pattern strings used for formatting zone offset in a localized time zone GMT string.
+     * This is 2x2 String array holding followings
+     * [0][0] Negative H + m + s
+     * [0][1] Negative H + m
+     * [1][0] Positive H + m + s
+     * [1][1] Positive H + m
+     * @serial
+     */
+    String gmtHourFormats[][] = null;
+
+    /**
+     * Localized names of time zones in this locale.  This is a
+     * two-dimensional array of strings of size <em>n</em> by <em>m</em>,
+     * where <em>m</em> is at least 5 and up to 7.  Each of the <em>n</em> rows is an
+     * entry containing the localized names for a single <code>TimeZone</code>.
+     * Each such row contains (with <code>i</code> ranging from
+     * 0..<em>n</em>-1):
+     * <ul>
+     * <li><code>zoneStrings[i][0]</code> - time zone ID</li>
+     * <li><code>zoneStrings[i][1]</code> - long name of zone in standard
+     * time</li>
+     * <li><code>zoneStrings[i][2]</code> - short name of zone in
+     * standard time</li>
+     * <li><code>zoneStrings[i][3]</code> - long name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][4]</code> - short name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][5]</code> - location name of zone</li>
+     * <li><code>zoneStrings[i][6]</code> - long generic name of zone</li>
+     * <li><code>zoneStrings[i][7]</code> - short generic of zone</li>
+     * The zone ID is <em>not</em> localized; it corresponds to the ID
+     * value associated with a system time zone object.  All other entries
+     * are localized names.  If a zone does not implement daylight savings
+     * time, the daylight savings time names are ignored.
+     * <em>Note:</em>CLDR 1.5 introduced metazone and its historical mappings.
+     * This simple two-dimensional array is no longer sufficient to represent
+     * localized names and its historic changes.  Since ICU 3.8.1, localized
+     * zone names extracted from ICU locale data is stored in a ZoneStringFormat
+     * instance.  But we still need to support the old way of customizing
+     * localized zone names, so we keep this field for the purpose.
+     * @see com.ibm.icu.util.TimeZone
+     * @serial
+     */
+     private String zoneStrings[][] = null;
+
+     /**
+      * Since ICU 3.8.1, we use ZoneStringFormat to access localized
+      * zone names.  This field remains null unless setZoneStrings is
+      * called.
+      */
+     private transient ZoneStringFormat zsformat = null;
+
+     /**
+     * Unlocalized date-time pattern characters. For example: 'y', 'd', etc.
+     * All locales use the same unlocalized pattern characters.
+     */
+    static final String  patternChars = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV";
+
+    /**
+     * Localized date-time pattern characters. For example, a locale may
+     * wish to use 'u' rather than 'y' to represent years in its date format
+     * pattern strings.
+     * This string must be exactly 18 characters long, with the index of
+     * the characters described by <code>DateFormat.ERA_FIELD</code>,
+     * <code>DateFormat.YEAR_FIELD</code>, etc.  Thus, if the string were
+     * "Xz...", then localized patterns would use 'X' for era and 'z' for year.
+     * @serial
+     */
+    String  localPatternChars = null;
+
+    /* use serialVersionUID from JDK 1.1.4 for interoperability */
+    private static final long serialVersionUID = -5987973545549424702L;
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     * @stable ICU 2.0
+     */
+    public String[] getEras() {
+        return duplicate(eras);
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     * @stable ICU 2.0
+     */
+    public void setEras(String[] newEras) {
+        eras = duplicate(newEras);
+    }
+
+    /**
+     * Gets era name strings. For example: "Anno Domini" and "Before Christ".
+     * @return the era strings.
+     * @stable ICU 3.4
+     */
+    public String[] getEraNames() {
+        return duplicate(eraNames);
+    }
+
+    /**
+     * Sets era name strings. For example: "Anno Domini" and "Before Christ".
+     * @param newEraNames the new era strings.
+     * @stable ICU 3.8
+     */
+    public void setEraNames(String[] newEraNames) {
+        eraNames = duplicate(newEraNames);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getMonths() {
+        return duplicate(months);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @param context    The month context, FORMAT or STANDALONE.
+     * @param width      The width or the returned month string,
+     *                   either WIDE, ABBREVIATED, or NARROW.
+     * @return the month strings.
+     * @stable ICU 3.4
+     */
+    public String[] getMonths(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = months;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortMonths;
+                    break;
+                 case NARROW :
+                    returnValue = narrowMonths;
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneMonths;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortMonths;
+                    break;
+                 case NARROW :
+                    returnValue = standaloneNarrowMonths;
+                    break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @stable ICU 2.0
+     */
+    public void setMonths(String[] newMonths) {
+        months = duplicate(newMonths);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @param context    The formatting context, FORMAT or STANDALONE.
+     * @param width      The width of the month string,
+     *                   either WIDE, ABBREVIATED, or NARROW.
+     * @stable ICU 3.8
+     */
+    public void setMonths(String[] newMonths, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    months = duplicate(newMonths);
+                    break;
+                 case ABBREVIATED :
+                    shortMonths = duplicate(newMonths);
+                    break;
+                 case NARROW :
+                    narrowMonths = duplicate(newMonths);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneMonths = duplicate(newMonths);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortMonths = duplicate(newMonths);
+                    break;
+                 case NARROW :
+                    standaloneNarrowMonths = duplicate(newMonths);
+                    break;
+              }
+              break;
+        }
+    }
+    
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getShortMonths() {
+        return duplicate(shortMonths);
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     * @stable ICU 2.0
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        shortMonths = duplicate(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getWeekdays() {
+        return duplicate(weekdays);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @param context    Formatting context, either FORMAT or STANDALONE.
+     * @param width      Width of strings to be returned, either
+     *                   WIDE, ABBREVIATED, or NARROW
+     * @stable ICU 3.4
+     */
+    public String[] getWeekdays(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = weekdays;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortWeekdays;
+                    break;
+                 case NARROW :
+                    returnValue = narrowWeekdays;
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneWeekdays;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortWeekdays;
+                    break;
+                 case NARROW :
+                    returnValue = standaloneNarrowWeekdays;
+                    break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays The new weekday strings.
+     * @param context     The formatting context, FORMAT or STANDALONE.
+     * @param width       The width of the strings,
+     *                    either WIDE, ABBREVIATED, or NARROW.
+     * @stable ICU 3.8
+     */
+    public void setWeekdays(String[] newWeekdays, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    weekdays = duplicate(newWeekdays);
+                    break;
+                 case ABBREVIATED :
+                    shortWeekdays = duplicate(newWeekdays);
+                    break;
+                 case NARROW :
+                    narrowWeekdays = duplicate(newWeekdays);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneWeekdays = duplicate(newWeekdays);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortWeekdays = duplicate(newWeekdays);
+                    break;
+                 case NARROW :
+                    standaloneNarrowWeekdays = duplicate(newWeekdays);
+                    break;
+              }
+              break;
+        }
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        weekdays = duplicate(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getShortWeekdays() {
+        return duplicate(shortWeekdays);
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        shortWeekdays = duplicate(newShortWeekdays);
+    }
+    /**
+     * Gets quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
+     * @param context    The quarter context, FORMAT or STANDALONE.
+     * @param width      The width or the returned quarter string,
+     *                   either WIDE or ABBREVIATED. There are no NARROW quarters.
+     * @return the quarter strings.
+     * @stable ICU 3.6
+     */
+    public String[] getQuarters(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = quarters;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortQuarters;
+                    break;
+                 case NARROW :
+                     returnValue = null;
+                     break;
+              }
+              break;
+              
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneQuarters;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortQuarters;
+                    break;
+                 case NARROW: 
+                     returnValue = null;
+                     break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
+     * @param newQuarters the new quarter strings.
+     * @param context    The formatting context, FORMAT or STANDALONE.
+     * @param width      The width of the quarter string,
+     *                   either WIDE or ABBREVIATED. There are no NARROW quarters.
+     * @stable ICU 3.8
+     */
+    public void setQuarters(String[] newQuarters, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    quarters = duplicate(newQuarters);
+                    break;
+                 case ABBREVIATED :
+                    shortQuarters = duplicate(newQuarters);
+                    break;
+                 case NARROW :
+                    //narrowQuarters = duplicate(newQuarters);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneQuarters = duplicate(newQuarters);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortQuarters = duplicate(newQuarters);
+                    break;
+                 case NARROW :
+                    //standaloneNarrowQuarters = duplicate(newQuarters);
+                    break;
+              }
+              break;
+        }
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     * @stable ICU 2.0
+     */
+    public String[] getAmPmStrings() {
+        return duplicate(ampms);
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     * @stable ICU 2.0
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        ampms = duplicate(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     * @stable ICU 2.0
+     */
+    public String[][] getZoneStrings() {
+        if (zoneStrings != null) {
+            return duplicate(zoneStrings);
+        }
+        return ZoneStringFormat.getInstance(requestedLocale).getZoneStrings();
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     * @stable ICU 2.0
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        zoneStrings = duplicate(newZoneStrings);
+        zsformat = new ZoneStringFormat(zoneStrings);
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * <p>
+     * Note: ICU no longer provides localized date-time pattern characters for a locale
+     * starting ICU 3.8.  This method returns the non-localized date-time pattern
+     * characters unless user defined localized data is set by setLocalPatternChars.
+     * @return the localized date-time pattern characters.
+     * @stable ICU 2.0
+     */
+    public String getLocalPatternChars() {
+        return new String(localPatternChars);
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     * @stable ICU 2.0
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        localPatternChars = newLocalPatternChars;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            DateFormatSymbols other = (DateFormatSymbols)super.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Override hashCode.
+     * Generates a hash code for the DateFormatSymbols object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        // Is this sufficient?
+        return requestedLocale.toString().hashCode();
+    }
+
+    /**
+     * Override equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormatSymbols that = (DateFormatSymbols) obj;
+        return (Utility.arrayEquals(eras, that.eras)
+                && Utility.arrayEquals(eraNames, that.eraNames)
+                && Utility.arrayEquals(months, that.months)
+                && Utility.arrayEquals(shortMonths, that.shortMonths)
+                && Utility.arrayEquals(narrowMonths, that.narrowMonths)
+                && Utility.arrayEquals(standaloneMonths, that.standaloneMonths)
+                && Utility.arrayEquals(standaloneShortMonths, that.standaloneShortMonths)
+                && Utility.arrayEquals(standaloneNarrowMonths, that.standaloneNarrowMonths)
+                && Utility.arrayEquals(weekdays, that.weekdays)
+                && Utility.arrayEquals(shortWeekdays, that.shortWeekdays)
+                && Utility.arrayEquals(narrowWeekdays, that.narrowWeekdays)
+                && Utility.arrayEquals(standaloneWeekdays, that.standaloneWeekdays)
+                && Utility.arrayEquals(standaloneShortWeekdays, that.standaloneShortWeekdays)
+                && Utility.arrayEquals(standaloneNarrowWeekdays, that.standaloneNarrowWeekdays)
+                && Utility.arrayEquals(ampms, that.ampms)
+                && gmtFormat.equals(that.gmtFormat)
+                && arrayOfArrayEquals(gmtHourFormats, that.gmtHourFormats)
+                && arrayOfArrayEquals(zoneStrings, that.zoneStrings)
+                // getDiplayName maps deprecated country and language codes to the current ones
+                // too bad there is no way to get the current codes!
+                // I thought canolicalize() would map the codes but .. alas! it doesn't.
+                && requestedLocale.getDisplayName().equals(that.requestedLocale.getDisplayName())
+                && Utility.arrayEquals(localPatternChars,
+                                       that.localPatternChars));
+    }
+
+    // =======================privates===============================
+
+    /*
+     * Useful constant for defining timezone offsets.
+     */
+    static final int millisPerHour = 60*60*1000;
+
+    // DateFormatSymbols cache
+    private static ICUCache DFSCACHE = new SimpleCache();
+
+    /**
+     * Initialize format symbols for the locale and calendar type
+     * @param desiredLocale The locale whose symbols are desired.
+     * @param type          The calendar type whose date format symbols are desired.
+     * @stable ICU 3.0
+     */
+    //TODO: This protected seems to be marked as @stable accidentally.
+    // We may need to deescalate this API to @internal.
+    protected void initializeData(ULocale desiredLocale, String type)
+    {
+        String key = desiredLocale.toString() + "+" + type;
+        DateFormatSymbols dfs = (DateFormatSymbols)DFSCACHE.get(key);
+        if (dfs == null) {
+            // Initialize data from scratch put a clone of this instance into the cache
+            CalendarData calData = new CalendarData(desiredLocale, type);
+            initializeData(desiredLocale, calData);
+            dfs = (DateFormatSymbols)this.clone();
+            DFSCACHE.put(key, dfs);
+        } else {
+            initializeData(dfs);
+        }
+    }
+
+    /* 
+     * Initialize format symbols using another instance.
+     * 
+     * TODO Clean up initialization methods for subclasses
+     */
+    void initializeData(DateFormatSymbols dfs) {
+        this.eras = dfs.eras;
+        this.eraNames = dfs.eraNames;
+        this.narrowEras = dfs.narrowEras;
+        this.months = dfs.months;
+        this.shortMonths = dfs.shortMonths;
+        this.narrowMonths = dfs.narrowMonths;
+        this.standaloneMonths = dfs.standaloneMonths;
+        this.standaloneShortMonths = dfs.standaloneShortMonths;
+        this.standaloneNarrowMonths = dfs.standaloneNarrowMonths;
+        this.weekdays = dfs.weekdays;
+        this.shortWeekdays = dfs.shortWeekdays;
+        this.narrowWeekdays = dfs.narrowWeekdays;
+        this.standaloneWeekdays = dfs.standaloneWeekdays;
+        this.standaloneShortWeekdays = dfs.standaloneShortWeekdays;
+        this.standaloneNarrowWeekdays = dfs.standaloneNarrowWeekdays;
+        this.ampms = dfs.ampms;
+        this.shortQuarters = dfs.shortQuarters;
+        this.quarters = dfs.quarters;
+        this.standaloneShortQuarters = dfs.standaloneShortQuarters;
+        this.standaloneQuarters = dfs.standaloneQuarters;
+
+        this.gmtFormat = dfs.gmtFormat;
+        this.gmtHourFormats = dfs.gmtHourFormats;
+
+        this.zoneStrings = dfs.zoneStrings; // always null at initialization time for now
+        this.localPatternChars = dfs.localPatternChars;
+
+        this.actualLocale = dfs.actualLocale;
+        this.validLocale = dfs.validLocale;
+        this.requestedLocale = dfs.requestedLocale;
+    }
+
+    /**
+     * Initialize format symbols for the locale and calendar type
+     * @param desiredLocale The locale whose symbols are desired.
+     * @param calData       The calendar resource data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    // This API was accidentally marked as @stable ICU 3.0 formerly.
+    protected void initializeData(ULocale desiredLocale, CalendarData calData)
+    {
+        // FIXME: cache only ResourceBundle. Hence every time, will do
+        // getObject(). This won't be necessary if the Resource itself
+        // is cached.
+        eras = calData.getEras("abbreviated");
+
+        try {
+           eraNames = calData.getEras("wide");
+        }
+        catch (MissingResourceException e) {
+           eraNames = calData.getEras("abbreviated");
+        }
+        
+        // NOTE: since the above code assumes that abbreviated
+        // era names exist, we make the same assumption here too.
+        try {
+            narrowEras = calData.getEras("narrow");
+        } catch (MissingResourceException e) {
+            narrowEras = calData.getEras("abbreviated");
+        }
+
+        months = calData.getStringArray("monthNames", "wide");
+        shortMonths = calData.getStringArray("monthNames", "abbreviated");
+
+        try {
+           narrowMonths = calData.getStringArray("monthNames", "narrow");
+        } 
+        catch (MissingResourceException e) {
+            try {
+                narrowMonths = calData.getStringArray("monthNames", "stand-alone", "narrow");
+            }
+            catch (MissingResourceException e1) {
+               narrowMonths = calData.getStringArray("monthNames", "abbreviated");
+            }
+        }
+
+        try {
+           standaloneMonths = calData.getStringArray("monthNames", "stand-alone", "wide");
+        } 
+        catch (MissingResourceException e) {
+           standaloneMonths = calData.getStringArray("monthNames", "format", "wide");
+        }
+
+        try {
+           standaloneShortMonths = calData.getStringArray("monthNames", "stand-alone", "abbreviated");
+        } 
+        catch (MissingResourceException e) {
+           standaloneShortMonths = calData.getStringArray("monthNames", "format", "abbreviated");
+        }
+
+        try {
+           standaloneNarrowMonths = calData.getStringArray("monthNames", "stand-alone", "narrow");
+        } 
+        catch (MissingResourceException e) {
+           try {
+              standaloneNarrowMonths = calData.getStringArray("monthNames", "format", "narrow");
+           }
+           catch (MissingResourceException e1) {
+              standaloneNarrowMonths = calData.getStringArray("monthNames", "format", "abbreviated");
+           }
+        }
+
+        String[] lWeekdays = calData.getStringArray("dayNames", "wide");
+        weekdays = new String[8];
+        weekdays[0] = "";  // 1-based
+        System.arraycopy(lWeekdays, 0, weekdays, 1, lWeekdays.length);
+
+        String[] sWeekdays = calData.getStringArray("dayNames", "abbreviated");
+        shortWeekdays = new String[8];
+        shortWeekdays[0] = "";  // 1-based
+        System.arraycopy(sWeekdays, 0, shortWeekdays, 1, sWeekdays.length);
+
+        String [] nWeekdays = null;
+        try {
+           nWeekdays = calData.getStringArray("dayNames", "narrow");
+        }
+        catch (MissingResourceException e) {
+            try {
+                nWeekdays = calData.getStringArray("dayNames", "stand-alone", "narrow");
+            }
+            catch (MissingResourceException e1) {
+                nWeekdays = calData.getStringArray("dayNames", "abbreviated");
+            }
+        }
+        narrowWeekdays = new String[8];
+        narrowWeekdays[0] = "";  // 1-based
+        System.arraycopy(nWeekdays, 0, narrowWeekdays, 1, nWeekdays.length);
+
+        String [] saWeekdays = null;
+        try {
+           saWeekdays = calData.getStringArray("dayNames", "stand-alone", "wide");
+        }
+        catch (MissingResourceException e) {
+           saWeekdays = calData.getStringArray("dayNames", "format", "wide");
+        }
+        standaloneWeekdays = new String[8];
+        standaloneWeekdays[0] = "";  // 1-based
+        System.arraycopy(saWeekdays, 0, standaloneWeekdays, 1, saWeekdays.length);
+
+        String [] ssWeekdays = null;
+        try {
+           ssWeekdays = calData.getStringArray("dayNames", "stand-alone", "abbreviated");
+        }
+        catch (MissingResourceException e) {
+           ssWeekdays = calData.getStringArray("dayNames", "format", "abbreviated");
+        }
+        standaloneShortWeekdays = new String[8];
+        standaloneShortWeekdays[0] = "";  // 1-based
+        System.arraycopy(ssWeekdays, 0, standaloneShortWeekdays, 1, ssWeekdays.length);
+
+        String [] snWeekdays = null;
+        try {
+           snWeekdays = calData.getStringArray("dayNames", "stand-alone", "narrow");
+        }
+        catch (MissingResourceException e) {
+           try {
+              snWeekdays = calData.getStringArray("dayNames", "format", "narrow");
+           }
+           catch (MissingResourceException e1) {
+              snWeekdays = calData.getStringArray("dayNames", "format", "abbreviated");
+           }
+        }
+        standaloneNarrowWeekdays = new String[8];
+        standaloneNarrowWeekdays[0] = "";  // 1-based
+        System.arraycopy(snWeekdays, 0, standaloneNarrowWeekdays, 1, snWeekdays.length);
+
+        ampms = calData.getStringArray("AmPmMarkers");
+        
+        quarters = calData.getStringArray("quarters", "wide");
+        shortQuarters = calData.getStringArray("quarters", "abbreviated");
+
+        try {
+           standaloneQuarters = calData.getStringArray("quarters", "stand-alone", "wide");
+        } 
+        catch (MissingResourceException e) {
+           standaloneQuarters = calData.getStringArray("quarters", "format", "wide");
+        }
+
+        try {
+           standaloneShortQuarters = calData.getStringArray("quarters", "stand-alone", "abbreviated");
+        } 
+        catch (MissingResourceException e) {
+            standaloneShortQuarters = calData.getStringArray("quarters", "format", "abbreviated");
+        }
+
+        // Initialize localized GMT format patterns
+        initializeGMTFormat(desiredLocale);
+
+        requestedLocale = desiredLocale;
+
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, desiredLocale);
+
+        // Because localized date/time pattern characters will be obsolete in CLDR,
+        // we decided not to maintain localized pattern characters in ICU any more.
+        // We always use the base pattern characters by default. (ticket#5597)
+
+        //localPatternChars = rb.getString("localPatternChars");
+        localPatternChars = patternChars;
+
+        // TODO: obtain correct actual/valid locale later
+        ULocale uloc = rb.getULocale();
+        setLocale(uloc, uloc);
+    }
+
+    static final String DEFAULT_GMT_PATTERN = "GMT{0}";
+    static final String[][] DEFAULT_GMT_HOUR_PATTERNS = {
+        {"-HH:mm:ss", "-HH:mm"},
+        {"+HH:mm:ss", "+HH:mm"}
+    };
+
+    /*
+     * Initialize localized GMT format patterns
+     */
+    private void initializeGMTFormat(ULocale desiredLocale) {
+        // TimeZone format localization is not included in CalendarData
+        gmtFormat = ZoneMeta.getTZLocalizationInfo(desiredLocale, ZoneMeta.GMT);
+        if (gmtFormat == null) {
+            gmtFormat = DEFAULT_GMT_PATTERN;
+        }
+
+        try {
+            String offsetHM = ZoneMeta.getTZLocalizationInfo(desiredLocale, ZoneMeta.HOUR);
+            gmtHourFormats = new String[2][2];
+            int sepIdx = offsetHM.indexOf(';');
+            if (sepIdx != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] = offsetHM.substring(0, sepIdx);
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] = offsetHM.substring(sepIdx + 1);
+            } else {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] = "+HH:mm";
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] = "-HH:mm";
+            }
+            // CLDR 1.5 does not have GMT offset pattern including second field.
+            // For now, append "ss" to the end.
+            if (gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM].indexOf(':') != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + ":ss";
+            } else if (gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM].indexOf('.') != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + ".ss";
+            } else {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + "ss";
+            }
+            if (gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM].indexOf(':') != -1) {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + ":ss";
+            } else if (gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM].indexOf('.') != -1) {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + ".ss";
+            } else {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + "ss";
+            }
+        } catch (MissingResourceException e) {
+            gmtHourFormats = DEFAULT_GMT_HOUR_PATTERNS;
+        }
+    }
+
+    private static final boolean arrayOfArrayEquals(Object[][] aa1, Object[][]aa2) {
+        if (aa1 == aa2) { // both are null
+            return true;
+        }
+        if (aa1 == null || aa2 == null) { // one is null and the other is not
+            return false;
+        }
+        if (aa1.length != aa2.length) {
+            return false;
+        }
+        boolean equal = true;
+        for (int i = 0; i < aa1.length; i++) {
+            equal = Utility.arrayEquals(aa1[i], aa2[i]);
+            if (!equal) {
+                break;
+            }
+        }
+        return equal;
+    }
+
+    /*
+     * Package local method (for now) to get localized GMT format pattern.
+     */
+    String getGmtFormat() {
+        return gmtFormat;
+    }
+
+    static final int OFFSET_HMS = 0;
+    static final int OFFSET_HM = 1;
+    static final int OFFSET_NEGATIVE = 0;
+    static final int OFFSET_POSITIVE = 1;
+
+    /*
+     * Package local method (for now) to get hour format pattern used by localized
+     * GMT string.
+     */
+    String getGmtHourFormat(int sign, int width) {
+        return gmtHourFormats[sign][width];
+    }
+
+    /*
+     * Package local method to access ZoneStringFormat used by this
+     * DateFormatSymbols instance.
+     */
+    ZoneStringFormat getZoneStringFormat() {
+        if (zsformat != null) {
+            return zsformat;
+        }
+        if (zoneStrings != null) {
+            zsformat = new ZoneStringFormat(zoneStrings);
+            return zsformat;
+        }
+        // We do not want to hold the reference to an instance of
+        // ZoneStringFormat.  An instance of ZoneStringFormat for
+        // a locale is shared and cached in ZoneStringFormat class
+        // itself.
+        return ZoneStringFormat.getInstance(requestedLocale);
+    }
+
+    /*
+     * save the input locale
+     */
+    private ULocale requestedLocale; 
+ 
+    /*
+     * Clones an array of Strings.
+     * @param srcArray the source array to be cloned.
+     * @return a cloned array.
+     */
+    private final String[] duplicate(String[] srcArray)
+    {
+        return (String[])srcArray.clone();
+    }
+
+    private final String[][] duplicate(String[][] srcArray)
+    {
+        String[][] aCopy = new String[srcArray.length][];
+        for (int i = 0; i < srcArray.length; ++i)
+            aCopy[i] = duplicate(srcArray[i]);
+        return aCopy;
+    }
+
+    /*
+     * Compares the equality of the two arrays of String.
+     * @param current this String array.
+     * @param other that String array.
+    private final boolean equals(String[] current, String[] other)
+    {
+        int count = current.length;
+
+        for (int i = 0; i < count; ++i)
+            if (!current[i].equals(other[i]))
+                return false;
+        return true;
+    }
+     */
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys:
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The locale whose symbols are desired.
+     *
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Calendar cal, Locale locale) {
+        initializeData(ULocale.forLocale(locale), cal.getType());
+    }
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys:
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The ulocale whose symbols are desired.
+     *
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(Calendar cal, ULocale locale) {
+        initializeData(locale, cal.getType());
+    }
+
+    /**
+     * Variant of DateFormatSymbols(Calendar, Locale) that takes the Calendar class
+     * instead of a Calandar instance.
+     * @see #DateFormatSymbols(Calendar, Locale)
+     * @stable ICU 2.2
+     */
+    public DateFormatSymbols(Class calendarClass, Locale locale) {
+        this(calendarClass, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Variant of DateFormatSymbols(Calendar, ULocale) that takes the Calendar class
+     * instead of a Calandar instance.
+     * @see #DateFormatSymbols(Calendar, Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(Class calendarClass, ULocale locale) {
+        String fullName = calendarClass.getName();
+        int lastDot = fullName.lastIndexOf('.');
+        String className = fullName.substring(lastDot+1);
+        String calType = Utility.replaceAll(className, "Calendar", "").toLowerCase();
+        
+        initializeData(locale, calType);
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(ResourceBundle bundle, Locale locale) {
+        this(bundle, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ResourceBundle bundle, ULocale locale) {
+        initializeData(locale, 
+            new CalendarData((ICUResourceBundle)bundle, getCalendarType(locale)));
+    }
+
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 2.0
+    static public ResourceBundle getDateFormatBundle(Class calendarClass, Locale locale)
+        throws MissingResourceException {
+        return null;
+    }
+        
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 3.2
+    static public ResourceBundle getDateFormatBundle(Class calendarClass, ULocale locale)
+        throws MissingResourceException {
+        return null;
+    }
+
+    /**
+     * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes
+     * a Calendar instance instead of a Calendar class.
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @see #getDateFormatBundle(java.lang.Class, java.util.Locale)
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 2.2
+    public static ResourceBundle getDateFormatBundle(Calendar cal, Locale locale)
+        throws MissingResourceException {
+        return null;
+    }
+    
+    /**
+     * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes
+     * a Calendar instance instead of a Calendar class.
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @see #getDateFormatBundle(java.lang.Class, java.util.Locale)
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 3.2
+    public static ResourceBundle getDateFormatBundle(Calendar cal, ULocale locale)
+        throws MissingResourceException {
+        return null;
+    }
+
+    // Return the calendar type string for the given locale
+    private static String getCalendarType(ULocale locale) {
+        String calType = locale.getKeywordValue("calendar");
+        if (calType == null) {
+            locale = ICUResourceBundle.getFunctionalEquivalent(
+                ICUResourceBundle.ICU_BASE_NAME, "calendar", "calendar", locale, null, false);
+            calType = locale.getKeywordValue("calendar");
+        }
+        return calType;
+    }
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /*
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /*
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     */
+    private ULocale validLocale;
+
+    /*
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+
+    /*
+     * 3.8 or older version did not have localized GMT format
+     * patterns.
+     */
+    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        if (gmtFormat == null) {
+            initializeGMTFormat(requestedLocale);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/DateIntervalFormat.java b/src/com/ibm/icu/text/DateIntervalFormat.java
new file mode 100644
index 0000000..3916105
--- /dev/null
+++ b/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -0,0 +1,1635 @@
+/*
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Collections;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.SimpleDateFormat;
+
+
+/**
+ * DateIntervalFormat is a class for formatting and parsing date 
+ * intervals in a language-independent manner. 
+ * Date interval formatting is supported in Gregorian calendar only.
+ * And only formatting is supported. Parsing is not supported.
+ *
+ * <P>
+ * Date interval means from one date to another date,
+ * for example, from "Jan 11, 2008" to "Jan 18, 2008".
+ * We introduced class DateInterval to represent it.
+ * DateInterval is a pair of UDate, which is 
+ * the standard milliseconds since 24:00 GMT, Jan 1, 1970.
+ *
+ * <P>
+ * DateIntervalFormat formats a DateInterval into
+ * text as compactly as possible. 
+ * For example, the date interval format from "Jan 11, 2008" to "Jan 18,. 2008"
+ * is "Jan 11-18, 2008" for English.
+ * And it parses text into DateInterval, 
+ * although initially, parsing is not supported. 
+ *
+ * <P>
+ * There is no structural information in date time patterns. 
+ * For any punctuations and string literals inside a date time pattern, 
+ * we do not know whether it is just a separator, or a prefix, or a suffix. 
+ * Without such information, so, it is difficult to generate a sub-pattern 
+ * (or super-pattern) by algorithm.
+ * So, formatting a DateInterval is pattern-driven. It is very
+ * similar to formatting in SimpleDateFormat.
+ * We introduce class DateIntervalInfo to save date interval 
+ * patterns, similar to date time pattern in SimpleDateFormat.
+ *
+ * <P>
+ * Logically, the interval patterns are mappings
+ * from (skeleton, the_largest_different_calendar_field)
+ * to (date_interval_pattern).
+ *
+ * <P>
+ * A skeleton 
+ * <ol>
+ * <li>
+ * only keeps the field pattern letter and ignores all other parts 
+ * in a pattern, such as space, punctuations, and string literals.
+ * <li>
+ * hides the order of fields. 
+ * <li>
+ * might hide a field's pattern letter length.
+ *
+ * For those non-digit calendar fields, the pattern letter length is 
+ * important, such as MMM, MMMM, and MMMMM; EEE and EEEE, 
+ * and the field's pattern letter length is honored.
+ *    
+ * For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+ * the field pattern length is ignored and the best match, which is defined 
+ * in date time patterns, will be returned without honor the field pattern
+ * letter length in skeleton.
+ * </ol>
+ *
+ * <P>
+ * The calendar fields we support for interval formatting are:
+ * year, month, date, day-of-week, am-pm, hour, hour-of-day, and minute.
+ * Those calendar fields can be defined in the following order:
+ * year >  month > date > hour (in day) >  minute 
+ *  
+ * The largest different calendar fields between 2 calendars is the
+ * first different calendar field in above order.
+ *
+ * For example: the largest different calendar fields between "Jan 10, 2007" 
+ * and "Feb 20, 2008" is year.
+ *
+ * <P>
+ * For other calendar fields, the compact interval formatting is not
+ * supported. And the interval format will be fall back to fall-back
+ * patterns, which is mostly "{date0} - {date1}".
+ *   
+ * <P>
+ * There is a set of pre-defined static skeleton strings in DateFormat,
+ * There are pre-defined interval patterns for those pre-defined skeletons
+ * in locales' resource files.
+ * For example, for a skeleton YEAR_ABBR_MONTH_DAY, which is  "yMMMd",
+ * in  en_US, if the largest different calendar field between date1 and date2 
+ * is "year", the date interval pattern  is "MMM d, yyyy - MMM d, yyyy", 
+ * such as "Jan 10, 2007 - Jan 10, 2008".
+ * If the largest different calendar field between date1 and date2 is "month",
+ * the date interval pattern is "MMM d - MMM d, yyyy",
+ * such as "Jan 10 - Feb 10, 2007".
+ * If the largest different calendar field between date1 and date2 is "day",
+ * the date interval pattern is ""MMM d-d, yyyy", such as "Jan 10-20, 2007".
+ *
+ * For date skeleton, the interval patterns when year, or month, or date is 
+ * different are defined in resource files.
+ * For time skeleton, the interval patterns when am/pm, or hour, or minute is
+ * different are defined in resource files.
+ *
+ * <P>
+ * If a skeleton is not found in a locale's DateIntervalInfo, which means
+ * the interval patterns for the skeleton is not defined in resource file,
+ * the interval pattern will falls back to the interval "fallback" pattern 
+ * defined in resource file.
+ * If the interval "fallback" pattern is not defined, the default fall-back
+ * is "{date0} - {data1}".
+ *
+ * <P>
+ * For the combination of date and time, 
+ * The rule to genearte interval patterns are:
+ * <ol>
+ * <li>
+ *    when the year, month, or day differs, falls back to fall-back
+ *    interval pattern, which mostly is the concatenate the two original 
+ *    expressions with a separator between, 
+ *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+ *    to "Jan 11, 2007 10:10am" is 
+ *    "Jan 10, 2007 10:10 am - Jan 11, 2007 10:10am" 
+ * <li>
+ *    otherwise, present the date followed by the range expression 
+ *    for the time.
+ *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+ *    to "Jan 10, 2007 11:10am" is "Jan 10, 2007 10:10 am - 11:10am" 
+ * </ol>
+ *
+ *
+ * <P>
+ * If two dates are the same, the interval pattern is the single date pattern.
+ * For example, interval pattern from "Jan 10, 2007" to "Jan 10, 2007" is 
+ * "Jan 10, 2007".
+ *
+ * Or if the presenting fields between 2 dates have the exact same values,
+ * the interval pattern is the  single date pattern. 
+ * For example, if user only requests year and month,
+ * the interval pattern from "Jan 10, 2007" to "Jan 20, 2007" is "Jan 2007".
+ *
+ * <P>
+ * DateIntervalFormat needs the following information for correct 
+ * formatting: time zone, calendar type, pattern, date format symbols, 
+ * and date interval patterns.
+ * It can be instantiated in several ways:
+ * <ol>
+ * <li>
+ *    create an instance using default or given locale plus given skeleton.
+ *    Users are encouraged to created date interval formatter this way and 
+ *    to use the pre-defined skeleton macros, such as
+ *    YEAR_NUM_MONTH, which consists the calendar fields and
+ *    the format style.
+ * </li>
+ * <li>
+ *    create an instance using default or given locale plus given skeleton
+ *    plus a given DateIntervalInfo.
+ *    This factory method is for powerful users who want to provide their own 
+ *    interval patterns. 
+ *    Locale provides the timezone, calendar, and format symbols information.
+ *    Local plus skeleton provides full pattern information.
+ *    DateIntervalInfo provides the date interval patterns.
+ * </li>
+ * </ol>
+ *
+ * <P>
+ * For the calendar field pattern letter, such as G, y, M, d, a, h, H, m, s etc.
+ * DateIntervalFormat uses the same syntax as that of
+ * DateTime format.
+ * 
+ * <P>
+ * Code Sample: general usage
+ * <pre>
+ *
+ *   // the date interval object which the DateIntervalFormat formats on
+ *   // and parses into
+ *   DateInterval dtInterval = new DateInterval(1000*3600*24L, 1000*3600*24*2L);
+ *   DateIntervalFormat dtIntervalFmt = DateIntervalFormat.getInstance(
+ *                   YEAR_MONTH_DAY, Locale("en", "GB", ""));
+ *   StringBuffer str = new StringBuffer("");
+ *   FieldPosition pos = new FieldPosition(0);
+ *   // formatting
+ *   dtIntervalFmt.format(dtInterval, dateIntervalString, pos);
+ *
+ * </pre>
+ *
+ * <P>
+ * Code Sample: for powerful users who wants to use their own interval pattern
+ * <pre>
+ *
+ *     import com.ibm.icu.text.DateIntervalInfo;
+ *     import com.ibm.icu.text.DateIntervalFormat;
+ *     ....................
+ *     
+ *     // Get DateIntervalFormat instance using default locale
+ *     DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(YEAR_MONTH_DAY);
+ *     
+ *     // Create an empty DateIntervalInfo object, which does not have any interval patterns inside.
+ *     dtitvinf = new DateIntervalInfo();
+ *     
+ *     // a series of set interval patterns.
+ *     // Only ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE  are supported.
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.YEAR, "'y ~ y'"); 
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy 'diff' MMM d - MMM d");
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.DATE, "yyyy MMM d ~ d");
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm");
+ *     
+ *     // Set fallback interval pattern. Fallback pattern is used when interval pattern is not found.
+ *     // If the fall-back pattern is not set,  falls back to {date0} - {date1} if interval pattern is not found.
+ *     dtitvinf.setFallbackIntervalPattern("{0} - {1}");
+ *     
+ *     // Set above DateIntervalInfo object as the interval patterns of date interval formatter
+ *     dtitvfmt.setDateIntervalInfo(dtitvinf);
+ *     
+ *     // Prepare to format
+ *     pos = new FieldPosition(0);
+ *     str = new StringBuffer("");
+ *     
+ *     // The 2 calendars should be equivalent, otherwise,  IllegalArgumentException will be thrown by format()
+ *     Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+ *     Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+ *     fromCalendar.setTimeInMillis(....);
+ *     toCalendar.setTimeInMillis(...);
+ *     
+ *     //Formatting given 2 calendars
+ *     dtitvfmt.format(fromCalendar, toCalendar, str, pos);
+ * 
+ *
+ * </pre>
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class DateIntervalFormat extends UFormat {
+
+    private static final long serialVersionUID = 1;
+
+    /**
+     * Used to save the information for a skeleton's best match skeleton.
+     * It is package accessible since it is used in DateIntervalInfo too.
+     */
+    static final class BestMatchInfo {
+        // the best match skeleton
+        final String bestMatchSkeleton;
+        // 0 means the best matched skeleton is the same as input skeleton
+        // 1 means the fields are the same, but field width are different
+        // 2 means the only difference between fields are v/z,
+        // -1 means there are other fields difference
+        final int    bestMatchDistanceInfo;
+        BestMatchInfo(String bestSkeleton, int difference) {
+            bestMatchSkeleton = bestSkeleton;
+            bestMatchDistanceInfo = difference;
+        }
+    }
+
+
+    /*
+     * Used to save the information on a skeleton and its best match.
+     */
+    private static final class SkeletonAndItsBestMatch {
+        final String skeleton;
+        final String bestMatchSkeleton;
+        SkeletonAndItsBestMatch(String skeleton, String bestMatch) {
+            this.skeleton = skeleton;
+            bestMatchSkeleton = bestMatch;
+        }
+    }
+
+
+    // Cache for the locale interval pattern
+    private static ICUCache LOCAL_PATTERN_CACHE = new SimpleCache();
+    // Cache for DateTimePatternGenerator
+    private static ICUCache DTPNG_CACHE = new SimpleCache();
+    
+    /*
+     * The interval patterns for this locale.
+     */
+    private DateIntervalInfo     fInfo;
+
+    /*
+     * The DateFormat object used to format single pattern
+     */
+    private SimpleDateFormat     fDateFormat;
+
+    /*
+     * The 2 calendars with the from and to date.
+     * could re-use the calendar in fDateFormat,
+     * but keeping 2 calendars make it clear and clean.
+     */
+    private Calendar fFromCalendar;
+    private Calendar fToCalendar;
+
+    /*
+     * Following are transient interval information
+     * relavent (locale) to this formatter.
+     */
+    private String fSkeleton = null;
+    // HashMap<String, String>  calendar_field -> interval pattern
+    private transient Map fIntervalPatterns = null;
+    
+   
+    /*
+     * default constructor 
+     */
+    private DateIntervalFormat() {
+    }
+
+    /*
+     * Construct a DateIntervalFormat from DateFormat,
+     * a DateIntervalInfo, and skeleton.
+     * DateFormat provides the timezone, calendar,
+     * full pattern, and date format symbols information.
+     * It should be a SimpleDateFormat object which 
+     * has a pattern in it.
+     * the DateIntervalInfo provides the interval patterns.
+     *
+     * @param locale    the locale of this date interval formatter.
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @param skeleton  the skeleton of the date formatter
+     */
+    private DateIntervalFormat(ULocale locale, DateIntervalInfo dtItvInfo,
+                               String skeleton)
+    {
+        // freeze date interval info
+        dtItvInfo.freeze();
+        fSkeleton = skeleton;
+        fInfo = dtItvInfo;
+
+        String key = locale.toString();
+        DateTimePatternGenerator generator = (DateTimePatternGenerator)DTPNG_CACHE.get(key);
+        if ( generator == null ) {
+            generator = DateTimePatternGenerator.getInstance(locale);
+            DTPNG_CACHE.put(key, generator);
+        } 
+
+        DateFormat dtfmt = DateFormat.getPatternInstance(skeleton,locale,generator);
+        fDateFormat = (SimpleDateFormat)dtfmt;
+        fFromCalendar = (Calendar) dtfmt.getCalendar().clone();
+        fToCalendar = (Calendar) dtfmt.getCalendar().clone();
+        initializePattern();
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and  the default locale.
+     *
+     * This is a convenient override of 
+     * getInstance(String skeleton, ULocale locale)  
+     * with the value of locale as default locale.
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton)
+                                                 
+    {
+        return getInstance(skeleton, ULocale.getDefault());
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and a given locale.
+     *
+     * This is a convenient override of 
+     * getInstance(String skeleton, ULocale locale)  
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton, Locale locale)  
+    {
+        return getInstance(skeleton, ULocale.forLocale(locale));
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and a given locale.
+     * <P>
+     * In this factory method,
+     * the date interval pattern information is load from resource files.
+     * Users are encouraged to created date interval formatter this way and
+     * to use the pre-defined skeleton macros.
+     *
+     * <P>
+     * There are pre-defined skeletons in DateFormat,
+     * such as MONTH_DAY, YEAR_MONTH_WEEKDAY_DAY etc.
+     *
+     * Those skeletons have pre-defined interval patterns in resource files.
+     * Users are encouraged to use them. 
+     * For example:
+     * DateIntervalFormat.getInstance(DateFormat.MONTH_DAY, false, loc);
+     * 
+     * The given Locale provides the interval patterns.
+     * For example, for en_GB, if skeleton is YEAR_ABBR_MONTH_WEEKDAY_DAY,
+     * which is "yMMMEEEd",
+     * the interval patterns defined in resource file to above skeleton are:
+     * "EEE, d MMM, yyyy - EEE, d MMM, yyyy" for year differs,
+     * "EEE, d MMM - EEE, d MMM, yyyy" for month differs,
+     * "EEE, d - EEE, d MMM, yyyy" for day differs,
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton, ULocale locale)  
+    {
+        DateIntervalInfo dtitvinf = new DateIntervalInfo(locale);
+        return new DateIntervalFormat(locale, dtitvinf, skeleton);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     *  DateIntervalInfo, and default locale.
+     *
+     * This is a convenient override of
+     * getInstance(String skeleton, ULocale locale, DateIntervalInfo dtitvinf)
+     * with the locale value as default locale.
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton, 
+                                                   DateIntervalInfo dtitvinf)
+    {
+        return getInstance(skeleton, ULocale.getDefault(), dtitvinf);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     * a DateIntervalInfo, and the given locale.
+     *
+     * This is a convenient override of
+     * getInstance(String skeleton, ULocale locale, DateIntervalInfo dtitvinf)
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton,
+                                                 Locale locale, 
+                                                 DateIntervalInfo dtitvinf)
+    {
+        return getInstance(skeleton, ULocale.forLocale(locale), dtitvinf);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     * a DateIntervalInfo, and the given locale.
+     *
+     * <P>
+     * In this factory method, user provides its own date interval pattern
+     * information, instead of using those pre-defined data in resource file.
+     * This factory method is for powerful users who want to provide their own
+     * interval patterns.
+     *
+     * <P>
+     * There are pre-defined skeleton in DateFormat,
+     * such as MONTH_DAY, YEAR_MONTH_WEEKDAY_DAY etc.
+     *
+     * Those skeletons have pre-defined interval patterns in resource files.
+     * Users are encouraged to use them. 
+     * For example:
+     * DateIntervalFormat.getInstance(DateFormat.MONTH_DAY, false, loc,itvinf);
+     *
+     * the DateIntervalInfo provides the interval patterns.
+     *
+     * User are encouraged to set default interval pattern in DateIntervalInfo
+     * as well, if they want to set other interval patterns ( instead of
+     * reading the interval patterns from resource files).
+     * When the corresponding interval pattern for a largest calendar different
+     * field is not found ( if user not set it ), interval format fallback to
+     * the default interval pattern.
+     * If user does not provide default interval pattern, it fallback to
+     * "{date0} - {date1}" 
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton,
+                                                 ULocale locale, 
+                                                 DateIntervalInfo dtitvinf)
+    {
+        LOCAL_PATTERN_CACHE.clear();
+        // clone. If it is frozen, clone returns itself, otherwise, clone
+        // returns a copy.
+        dtitvinf = (DateIntervalInfo)dtitvinf.clone(); 
+        return new DateIntervalFormat(locale, dtitvinf, skeleton);
+    }
+
+
+    /**
+     * Clone this Format object polymorphically. 
+     * @return    A copy of the object.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone()
+    {
+        DateIntervalFormat other = (DateIntervalFormat) super.clone();
+        other.fDateFormat = (SimpleDateFormat) fDateFormat.clone();
+        other.fInfo = (DateIntervalInfo) fInfo.clone();
+        other.fFromCalendar = (Calendar) fFromCalendar.clone();
+        other.fToCalendar = (Calendar) fToCalendar.clone();
+        other.fSkeleton = fSkeleton;
+        other.fIntervalPatterns = fIntervalPatterns;
+        return other;
+    }
+
+
+    /**
+     * Format an object to produce a string. This method handles Formattable
+     * objects with a DateInterval type. 
+     * If a the Formattable object type is not a DateInterval,
+     * IllegalArgumentException is thrown.
+     *
+     * @param obj               The object to format. 
+     *                          Must be a DateInterval.
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param fieldPosition     On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @throws    IllegalArgumentException  if the formatted object is not 
+     *                                      DateInterval object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer 
+        format(Object obj, StringBuffer appendTo, FieldPosition fieldPosition)
+    {
+        if ( obj instanceof DateInterval ) {
+            return format( (DateInterval)obj, appendTo, fieldPosition);
+        }
+        else {
+            throw new IllegalArgumentException("Cannot format given Object (" + obj.getClass().getName() + ") as a DateInterval");
+        }
+    }
+
+    /**
+     * Format a DateInterval to produce a string. 
+     *
+     * @param dtInterval        DateInterval to be formatted.
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param fieldPosition     On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer format(DateInterval dtInterval,
+                                     StringBuffer appendTo,
+                                     FieldPosition fieldPosition)
+    {
+        fFromCalendar.setTimeInMillis(dtInterval.getFromDate());
+        fToCalendar.setTimeInMillis(dtInterval.getToDate());
+        return format(fFromCalendar, fToCalendar, appendTo, fieldPosition);
+    }
+
+
+    /**
+     * Format 2 Calendars to produce a string. 
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @throws    IllegalArgumentException  if the two calendars are not equivalent, or the calendars are not Gregorian calendar.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer format(Calendar fromCalendar,
+                                     Calendar toCalendar,
+                                     StringBuffer appendTo,
+                                     FieldPosition pos)
+    {
+        // not support different calendar types and time zones
+        if ( !fromCalendar.isEquivalentTo(toCalendar) ||
+             !fromCalendar.getType().equals("gregorian") ) {
+            throw new IllegalArgumentException("can not format on two different calendars or non-Gregorian calendars");
+        }
+    
+        // First, find the largest different calendar field.
+        int field = Calendar.MILLISECONDS_IN_DAY + 1; //BASE_FIELD_COUNT
+    
+        if ( fromCalendar.get(Calendar.ERA) != toCalendar.get(Calendar.ERA) ) {
+            field = Calendar.ERA;
+        } else if ( fromCalendar.get(Calendar.YEAR) != 
+                    toCalendar.get(Calendar.YEAR) ) {
+            field = Calendar.YEAR;
+        } else if ( fromCalendar.get(Calendar.MONTH) !=
+                    toCalendar.get(Calendar.MONTH) ) {
+            field = Calendar.MONTH;
+        } else if ( fromCalendar.get(Calendar.DATE) !=
+                    toCalendar.get(Calendar.DATE) ) {
+            field = Calendar.DATE;
+        } else if ( fromCalendar.get(Calendar.AM_PM) !=
+                    toCalendar.get(Calendar.AM_PM) ) {
+            field = Calendar.AM_PM;
+        } else if ( fromCalendar.get(Calendar.HOUR) !=
+                    toCalendar.get(Calendar.HOUR) ) {
+            field = Calendar.HOUR;
+        } else if ( fromCalendar.get(Calendar.MINUTE) !=
+                    toCalendar.get(Calendar.MINUTE) ) {
+            field = Calendar.MINUTE;
+        } else {
+            /* ignore the second/millisecond etc. small fields' difference.
+             * use single date when all the above are the same.
+             */
+            return fDateFormat.format(fromCalendar, appendTo, pos);
+        }
+        
+        // get interval pattern
+        DateIntervalInfo.PatternInfo intervalPattern = 
+          (DateIntervalInfo.PatternInfo)fIntervalPatterns.get(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+
+        if ( intervalPattern == null ) {
+            if ( fDateFormat.isFieldUnitIgnored(field) ) {
+                /* the largest different calendar field is small than
+                 * the smallest calendar field in pattern,
+                 * return single date format.
+                 */
+                return fDateFormat.format(fromCalendar, appendTo, pos);
+            }
+
+            return fallbackFormat(fromCalendar, toCalendar, appendTo, pos);
+        }
+
+        // If the first part in interval pattern is empty, 
+        // the 2nd part of it saves the full-pattern used in fall-back.
+        // For a 'real' interval pattern, the first part will never be empty.
+        if ( intervalPattern.getFirstPart() == null ) {
+            // fall back
+            return fallbackFormat(fromCalendar, toCalendar, appendTo, pos,
+                                    intervalPattern.getSecondPart());
+        }
+        Calendar firstCal;
+        Calendar secondCal;
+        if ( intervalPattern.firstDateInPtnIsLaterDate() ) {
+            firstCal = toCalendar;
+            secondCal = fromCalendar;
+        } else {
+            firstCal = fromCalendar;
+            secondCal = toCalendar;
+        }
+        // break the interval pattern into 2 parts
+        // first part should not be empty, 
+        String originalPattern = fDateFormat.toPattern();
+        fDateFormat.applyPattern(intervalPattern.getFirstPart());
+        fDateFormat.format(firstCal, appendTo, pos);
+        if ( intervalPattern.getSecondPart() != null ) {
+            fDateFormat.applyPattern(intervalPattern.getSecondPart());
+            fDateFormat.format(secondCal, appendTo, pos);
+        }
+        fDateFormat.applyPattern(originalPattern);
+        return appendTo;
+    }
+
+
+    /*
+     * Format 2 Calendars to using fall-back interval pattern
+     *
+     * The full pattern used in this fall-back format is the
+     * full pattern of the date formatter.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     */
+    private final StringBuffer fallbackFormat(Calendar fromCalendar,
+                                              Calendar toCalendar,
+                                              StringBuffer appendTo,
+                                              FieldPosition pos)  {
+            // the fall back
+            StringBuffer earlierDate = new StringBuffer(64);
+            earlierDate = fDateFormat.format(fromCalendar, earlierDate, pos);
+            StringBuffer laterDate = new StringBuffer(64);
+            laterDate = fDateFormat.format(toCalendar, laterDate, pos);
+            String fallbackPattern = fInfo.getFallbackIntervalPattern();
+            String fallback = MessageFormat.format(fallbackPattern, new Object[]
+                            {earlierDate.toString(), laterDate.toString()});
+            appendTo.append(fallback);
+            return appendTo;
+    }
+
+
+    /*
+     * Format 2 Calendars to using fall-back interval pattern
+     *
+     * This fall-back pattern is generated on a given full pattern,
+     * not the full pattern of the date formatter.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @param fullPattern       the full pattern need to apply to date formatter
+     * @return                  Reference to 'appendTo' parameter.
+     */
+    private final StringBuffer fallbackFormat(Calendar fromCalendar,
+                                              Calendar toCalendar,
+                                              StringBuffer appendTo,
+                                              FieldPosition pos, 
+                                              String fullPattern)  {
+            String originalPattern = fDateFormat.toPattern();
+            fDateFormat.applyPattern(fullPattern);
+            fallbackFormat(fromCalendar, toCalendar, appendTo, pos);
+            fDateFormat.applyPattern(originalPattern);
+            return appendTo;
+    }
+
+
+    /**
+     * Date interval parsing is not supported.
+     * <P>
+     * This method should handle parsing of
+     * date time interval strings into Formattable objects with 
+     * DateInterval type, which is a pair of UDate.
+     * <P>
+     * <P>
+     * Before calling, set parse_pos.index to the offset you want to start
+     * parsing at in the source. After calling, parse_pos.index is the end of
+     * the text you parsed. If error occurs, index is unchanged.
+     * <P>
+     * When parsing, leading whitespace is discarded (with a successful parse),
+     * while trailing whitespace is left as is.
+     * <P>
+     * See Format.parseObject() for more.
+     *
+     * @param source    The string to be parsed into an object.
+     * @param parse_pos The position to start parsing at. Since no parsing
+     *                  is supported, upon return this param is unchanged.
+     * @return          A newly created Formattable* object, or NULL
+     *                  on failure.
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    public Object parseObject(String source, ParsePosition parse_pos)
+    {
+        throw new UnsupportedOperationException("parsing is not supported");
+    }
+
+
+    /**
+     * Gets the date time interval patterns.
+     * @return a copy of the date time interval patterns associated with
+     * this date interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateIntervalInfo getDateIntervalInfo()
+    {
+        return (DateIntervalInfo)fInfo.clone();
+    }
+
+
+    /**
+     * Set the date time interval patterns. 
+     * @param newItvPattern   the given interval patterns to copy.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setDateIntervalInfo(DateIntervalInfo newItvPattern)
+    {
+        // clone it. If it is frozen, the clone returns itself.
+        // Otherwise, clone returns a copy
+        fInfo = (DateIntervalInfo)newItvPattern.clone();
+        fInfo.freeze(); // freeze it
+        LOCAL_PATTERN_CACHE.clear();
+        if ( fDateFormat != null ) {
+            initializePattern();
+        }
+    }
+
+
+    /**
+     * Gets the date formatter
+     * @return a copy of the date formatter associated with
+     * this date interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateFormat getDateFormat()
+    {
+        return (DateFormat)fDateFormat.clone();
+    }
+
+
+    /*
+     *  Below are for generating interval patterns locale to the formatter 
+     */
+
+    /*
+     * Initialize interval patterns locale to this formatter.
+     */
+    private void initializePattern() { 
+        String fullPattern = ((SimpleDateFormat)fDateFormat).toPattern();
+        ULocale locale = ((SimpleDateFormat)fDateFormat).getLocale();
+        String key;
+        if ( fSkeleton != null ) {
+            key = locale.toString() + "+" + fullPattern + "+" + fSkeleton;
+        } else {
+            key = locale.toString() + "+" + fullPattern;
+        }
+        Map patterns = (Map) LOCAL_PATTERN_CACHE.get(key);
+        if ( patterns == null ) {
+            HashMap intervalPatterns = initializeIntervalPattern(fullPattern, locale);
+            patterns = Collections.unmodifiableMap(intervalPatterns);
+            LOCAL_PATTERN_CACHE.put(key, patterns);
+        } 
+        fIntervalPatterns = patterns;
+    }
+
+
+
+    /*
+     * Initialize interval patterns locale to this formatter
+     * 
+     * This code is a bit complicated since 
+     * 1. the interval patterns saved in resource bundle files are interval
+     *    patterns based on date or time only.
+     *    It does not have interval patterns based on both date and time.
+     *    Interval patterns on both date and time are algorithm generated.
+     *
+     *    For example, it has interval patterns on skeleton "dMy" and "hm",
+     *    but it does not have interval patterns on skeleton "dMyhm".
+     *    
+     *    The rule to generate interval patterns for both date and time skeleton are
+     *    1) when the year, month, or day differs, concatenate the two original 
+     *    expressions with a separator between, 
+     *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+     *    to "Jan 11, 2007 10:10am" is 
+     *    "Jan 10, 2007 10:10 am - Jan 11, 2007 10:10am" 
+     *
+     *    2) otherwise, present the date followed by the range expression 
+     *    for the time.
+     *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+     *    to "Jan 10, 2007 11:10am" is 
+     *    "Jan 10, 2007 10:10 am - 11:10am" 
+     *
+     * 2. even a pattern does not request a certain calendar field,
+     *    the interval pattern needs to include such field if such fields are
+     *    different between 2 dates.
+     *    For example, a pattern/skeleton is "hm", but the interval pattern 
+     *    includes year, month, and date when year, month, and date differs.
+     * 
+     *
+     * @param fullPattern  formatter's full pattern
+     * @param locale       the given locale.
+     * @return             interval patterns' hash map
+     */
+    private HashMap initializeIntervalPattern(String fullPattern, ULocale locale) {
+        String localeKey = locale.toString();
+        DateTimePatternGenerator dtpng = (DateTimePatternGenerator)DTPNG_CACHE.get(localeKey);
+        if ( fSkeleton == null ) {
+            // fSkeleton is already set by getDateIntervalInstance()
+            // or by getInstance(String skeleton, .... )
+            fSkeleton = dtpng.getSkeleton(fullPattern);
+        }
+        String skeleton = fSkeleton;
+
+        HashMap intervalPatterns = new HashMap();
+
+        /* Check whether the skeleton is a combination of date and time.
+         * For the complication reason 1 explained above.
+         */
+        StringBuffer date = new StringBuffer(skeleton.length());
+        StringBuffer normalizedDate = new StringBuffer(skeleton.length());
+        StringBuffer time = new StringBuffer(skeleton.length());
+        StringBuffer normalizedTime = new StringBuffer(skeleton.length());
+
+        /* the difference between time skeleton and normalizedTimeSkeleton are:
+         * 1. both 'H' and 'h' are normalized as 'h' in normalized time skeleton,
+         * 2. 'a' is omitted in normalized time skeleton.
+         * 3. there is only one appearance for 'h', 'm','v', 'z' in normalized 
+         *    time skeleton
+         *
+         * The difference between date skeleton and normalizedDateSkeleton are:
+         * 1. both 'y' and 'd' appear only once in normalizeDateSkeleton
+         * 2. 'E' and 'EE' are normalized into 'EEE'
+         * 3. 'MM' is normalized into 'M'
+         */
+        getDateTimeSkeleton(skeleton, date, normalizedDate,
+                            time, normalizedTime);
+
+        String dateSkeleton = date.toString();
+        String timeSkeleton = time.toString();
+        String normalizedDateSkeleton = normalizedDate.toString();
+        String normalizedTimeSkeleton = normalizedTime.toString();
+
+        boolean found = genSeparateDateTimePtn(normalizedDateSkeleton, 
+                                               normalizedTimeSkeleton,
+                                               intervalPatterns);
+
+        if ( found == false ) {
+            // use fallback
+            // TODO: if user asks "m", but "d" differ
+            //StringBuffer skeleton = new StringBuffer(skeleton);
+            if ( time.length() != 0 ) {
+                //genFallbackForNotFound(Calendar.MINUTE, skeleton);
+                //genFallbackForNotFound(Calendar.HOUR, skeleton);
+                //genFallbackForNotFound(Calendar.AM_PM, skeleton);
+                if ( date.length() == 0 ) {
+                    // prefix with yMd
+                    timeSkeleton = DateFormat.YEAR_NUM_MONTH_DAY + timeSkeleton;
+                    String pattern =dtpng.getBestPattern(timeSkeleton);
+                    // for fall back interval patterns,
+                    // the first part of the pattern is empty,
+                    // the second part of the pattern is the full-pattern
+                    // should be used in fall-back.
+                    DateIntervalInfo.PatternInfo ptn = 
+                        new DateIntervalInfo.PatternInfo(null, pattern,
+                                                     fInfo.getDefaultOrder());
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE], ptn);
+                    // share interval pattern
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH], ptn);
+                    // share interval pattern
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR], ptn);
+                } else {
+                    //genFallbackForNotFound(Calendar.DATE, skeleton);
+                    //genFallbackForNotFound(Calendar.MONTH, skeleton);
+                    //genFallbackForNotFound(Calendar.YEAR, skeleton);
+                }
+            } else {
+                    //genFallbackForNotFound(Calendar.DATE, skeleton);
+                    //genFallbackForNotFound(Calendar.MONTH, skeleton);
+                    //genFallbackForNotFound(Calendar.YEAR, skeleton);
+            }
+            return intervalPatterns;
+        } // end of skeleton not found
+        // interval patterns for skeleton are found in resource 
+        if ( time.length() == 0 ) {
+            // done
+        } else if ( date.length() == 0 ) {
+            // need to set up patterns for y/M/d differ
+            /* result from following looks confusing.
+             * for example: 10 10:10 - 11 10:10, it is not
+             * clear that the first 10 is the 10th day
+            time.insert(0, 'd');
+            genFallbackPattern(Calendar.DATE, time);
+            time.insert(0, 'M');
+            genFallbackPattern(Calendar.MONTH, time);
+            time.insert(0, 'y');
+            genFallbackPattern(Calendar.YEAR, time);
+            */
+            // prefix with yMd
+            timeSkeleton = DateFormat.YEAR_NUM_MONTH_DAY + timeSkeleton;
+            String pattern =dtpng.getBestPattern(timeSkeleton);
+            // for fall back interval patterns,
+            // the first part of the pattern is empty,
+            // the second part of the pattern is the full-pattern
+            // should be used in fall-back.
+            DateIntervalInfo.PatternInfo ptn = new DateIntervalInfo.PatternInfo(
+                                    null, pattern, fInfo.getDefaultOrder());
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE], ptn);
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH], ptn);
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR], ptn);
+        } else {
+            /* if both present,
+             * 1) when the year, month, or day differs, 
+             * concatenate the two original expressions with a separator between, 
+             * 2) otherwise, present the date followed by the 
+             * range expression for the time. 
+             */
+            /*
+             * 1) when the year, month, or day differs, 
+             * concatenate the two original expressions with a separator between, 
+             */
+            // if field exists, use fall back
+            if ( !fieldExistsInSkeleton(Calendar.DATE, dateSkeleton) ) {
+                // prefix skeleton with 'd'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE] + skeleton;
+                genFallbackPattern(Calendar.DATE, skeleton, intervalPatterns, dtpng);
+            }
+            if ( !fieldExistsInSkeleton(Calendar.MONTH, dateSkeleton) ) {
+                // then prefix skeleton with 'M'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH] + skeleton;
+                genFallbackPattern(Calendar.MONTH, skeleton, intervalPatterns, dtpng);
+            }
+            if ( !fieldExistsInSkeleton(Calendar.YEAR, dateSkeleton) ) {
+                // then prefix skeleton with 'y'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR] + skeleton;
+                genFallbackPattern(Calendar.YEAR, skeleton, intervalPatterns, dtpng);
+            }
+            
+            /*
+             * 2) otherwise, present the date followed by the 
+             * range expression for the time. 
+             */
+            // Need the Date/Time pattern for concatnation the date with
+            // the time interval.
+            // The date/time pattern ( such as {0} {1} ) is saved in
+            // calendar, that is why need to get the CalendarData here.
+            CalendarData calData = new CalendarData(locale, null);
+            String[] patterns = calData.get("DateTimePatterns").getStringArray();
+            String datePattern =dtpng.getBestPattern(dateSkeleton);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.AM_PM, intervalPatterns);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.HOUR, intervalPatterns);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.MINUTE, intervalPatterns);
+        }
+
+        return intervalPatterns;
+    }
+
+
+    /*
+     * Generate fall back interval pattern given a calendar field,
+     * a skeleton, and a date time pattern generator
+     * @param field      the largest different calendar field
+     * @param skeleton   a skeleton
+     * @param dtpng      date time pattern generator
+     * @param intervalPatterns interval patterns
+     */
+    private void genFallbackPattern(int field, String skeleton,
+                                    HashMap intervalPatterns,
+                                    DateTimePatternGenerator dtpng) {
+        String pattern = dtpng.getBestPattern(skeleton);
+        // for fall back interval patterns,
+        // the first part of the pattern is empty,
+        // the second part of the pattern is the full-pattern
+        // should be used in fall-back.
+        DateIntervalInfo.PatternInfo ptn = new DateIntervalInfo.PatternInfo(
+                                    null, pattern, fInfo.getDefaultOrder());
+        intervalPatterns.put( 
+            DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], ptn);
+    }
+
+
+
+    /*
+    private void genFallbackForNotFound(String field, StringBuffer skeleton) {
+        if ( SimpleDateFormat.isFieldUnitIgnored(skeleton.toString(), field) ) {
+            // single date
+            DateIntervalInfo.PatternInfo ptnInfo = 
+                new DateIntervalInfo.PatternInfo(null, fDateFormat.toPattern(),
+                                                 fInfo.getDefaultOrder());
+            fIntervalPatterns.put(field, ptnInfo);
+            return;
+        } else if ( skeleton.indexOf(field) == -1 ) {
+            skeleton.insert(0,field);
+            genFallbackPattern(field, skeleton, dtpng);
+        }
+    }
+    */
+
+    /*
+     * get separated date and time skeleton from a combined skeleton.
+     *
+     * The difference between date skeleton and normalizedDateSkeleton are:
+     * 1. both 'y' and 'd' are appeared only once in normalizeDateSkeleton
+     * 2. 'E' and 'EE' are normalized into 'EEE'
+     * 3. 'MM' is normalized into 'M'
+     *
+     ** the difference between time skeleton and normalizedTimeSkeleton are:
+     * 1. both 'H' and 'h' are normalized as 'h' in normalized time skeleton,
+     * 2. 'a' is omitted in normalized time skeleton.
+     * 3. there is only one appearance for 'h', 'm','v', 'z' in normalized time
+     *    skeleton
+     *
+     *
+     *  @param skeleton               given combined skeleton.
+     *  @param date                   Output parameter for date only skeleton.
+     *  @param normalizedDate         Output parameter for normalized date only
+     *
+     *  @param time                   Output parameter for time only skeleton.
+     *  @param normalizedTime         Output parameter for normalized time only
+     *                                skeleton.
+     */
+    private static void getDateTimeSkeleton(String skeleton,
+                                            StringBuffer dateSkeleton,
+                                            StringBuffer normalizedDateSkeleton,
+                                            StringBuffer timeSkeleton,
+                                            StringBuffer normalizedTimeSkeleton)
+    {
+        // dateSkeleton follows the sequence of y*M*E*d*
+        // timeSkeleton follows the sequence of hm*[v|z]?
+        int i;
+        int ECount = 0;
+        int dCount = 0;
+        int MCount = 0;
+        int yCount = 0;
+        int hCount = 0;
+        int mCount = 0;
+        int vCount = 0;
+        int zCount = 0;
+    
+        for (i = 0; i < skeleton.length(); ++i) {
+            char ch = skeleton.charAt(i);
+            switch ( ch ) {
+              case 'E':
+                dateSkeleton.append(ch);
+                ++ECount;
+                break;
+              case 'd':
+                dateSkeleton.append(ch);
+                ++dCount;
+                break;
+              case 'M':
+                dateSkeleton.append(ch);
+                ++MCount;
+                break;
+              case 'y':
+                dateSkeleton.append(ch);
+                ++yCount;
+                break;
+              case 'G':
+              case 'Y':
+              case 'u':
+              case 'Q':
+              case 'q':
+              case 'L':
+              case 'l':
+              case 'W':
+              case 'w':
+              case 'D':
+              case 'F':
+              case 'g':
+              case 'e':
+              case 'c':
+                normalizedDateSkeleton.append(ch);
+                dateSkeleton.append(ch);
+                break;
+              case 'a':
+                // 'a' is implicitly handled 
+                timeSkeleton.append(ch);
+                break;
+              case 'h':
+              case 'H':
+                timeSkeleton.append(ch);
+                ++hCount;
+                break;
+              case 'm':
+                timeSkeleton.append(ch);
+                ++mCount;
+                break;
+              case 'z':
+                ++zCount;
+                timeSkeleton.append(ch);
+                break;
+              case 'v':
+                ++vCount;
+                timeSkeleton.append(ch);
+                break;
+              // FIXME: what is the difference between CAP_V/Z and LOW_V/Z
+              case 'V':
+              case 'Z':
+              case 'k':
+              case 'K':
+              case 'j':
+              case 's':
+              case 'S':
+              case 'A':
+                timeSkeleton.append(ch);
+                normalizedTimeSkeleton.append(ch);
+                break;     
+            }
+        }
+    
+        /* generate normalized form for date*/
+        if ( yCount != 0 ) {
+            normalizedDateSkeleton.append('y');
+        }
+        if ( MCount != 0 ) {
+            if ( MCount < 3 ) {
+                normalizedDateSkeleton.append('M');
+            } else {
+                for ( i = 0; i < MCount && i < 5; ++i ) {
+                     normalizedDateSkeleton.append('M');
+                }
+            }
+        }
+        if ( ECount != 0 ) {
+            if ( ECount <= 3 ) {
+                normalizedDateSkeleton.append('E');
+            } else {
+                for ( i = 0; i < ECount && i < 5; ++i ) {
+                     normalizedDateSkeleton.append('E');
+                }
+            }
+        }
+        if ( dCount != 0 ) {
+            normalizedDateSkeleton.append('d');
+        }
+    
+        /* generate normalized form for time */
+        if ( hCount != 0 ) {
+            normalizedTimeSkeleton.append('h');
+        }
+        if ( mCount != 0 ) {
+            normalizedTimeSkeleton.append('m');
+        }
+        if ( zCount != 0 ) {
+            normalizedTimeSkeleton.append('z');
+        }
+        if ( vCount != 0 ) {
+            normalizedTimeSkeleton.append('v');
+        }
+    }
+
+
+
+    /*
+     * Generate date or time interval pattern from resource.
+     *
+     * It needs to handle the following: 
+     * 1. need to adjust field width.
+     *    For example, the interval patterns saved in DateIntervalInfo
+     *    includes "dMMMy", but not "dMMMMy".
+     *    Need to get interval patterns for dMMMMy from dMMMy.
+     *    Another example, the interval patterns saved in DateIntervalInfo
+     *    includes "hmv", but not "hmz".
+     *    Need to get interval patterns for "hmz' from 'hmv'
+     *
+     * 2. there might be no pattern for 'y' differ for skeleton "Md",
+     *    in order to get interval patterns for 'y' differ,
+     *    need to look for it from skeleton 'yMd'
+     *
+     * @param dateSkeleton   normalized date skeleton
+     * @param timeSkeleton   normalized time skeleton
+     * @param intervalPatterns interval patterns
+     * @return whether there is interval patterns for the skeleton.
+     *         true if there is, false otherwise
+     */
+    private boolean genSeparateDateTimePtn(String dateSkeleton, 
+                                           String timeSkeleton,
+                                           HashMap intervalPatterns)
+    {
+        String skeleton;
+        // if both date and time skeleton present,
+        // the final interval pattern might include time interval patterns
+        // ( when, am_pm, hour, minute differ ),
+        // but not date interval patterns ( when year, month, day differ ).
+        // For year/month/day differ, it falls back to fall-back pattern.
+        if ( timeSkeleton.length() != 0  ) {
+            skeleton = timeSkeleton;
+        } else {
+            skeleton = dateSkeleton;
+        }
+
+        /* interval patterns for skeleton "dMMMy" (but not "dMMMMy") 
+         * are defined in resource,
+         * interval patterns for skeleton "dMMMMy" are calculated by
+         * 1. get the best match skeleton for "dMMMMy", which is "dMMMy"
+         * 2. get the interval patterns for "dMMMy",
+         * 3. extend "MMM" to "MMMM" in above interval patterns for "dMMMMy" 
+         * getBestSkeleton() is step 1.
+         */
+        // best skeleton, and the difference information
+        BestMatchInfo retValue = fInfo.getBestSkeleton(skeleton);
+        String bestSkeleton = retValue.bestMatchSkeleton;
+        int differenceInfo =  retValue.bestMatchDistanceInfo;
+   
+        // difference:
+        // 0 means the best matched skeleton is the same as input skeleton
+        // 1 means the fields are the same, but field width are different
+        // 2 means the only difference between fields are v/z,
+        // -1 means there are other fields difference 
+        if ( differenceInfo == -1 ) { 
+            // skeleton has different fields, not only  v/z difference
+            return false;
+        }
+
+        if ( timeSkeleton.length() == 0 ) {
+            // only has date skeleton
+            genIntervalPattern(Calendar.DATE, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            SkeletonAndItsBestMatch skeletons = genIntervalPattern(
+                                                  Calendar.MONTH, skeleton, 
+                                                  bestSkeleton, differenceInfo,
+                                                  intervalPatterns);
+            if ( skeletons != null ) {
+                bestSkeleton = skeletons.skeleton;
+                skeleton = skeletons.bestMatchSkeleton;
+            }
+            genIntervalPattern(Calendar.YEAR, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+        } else {
+            genIntervalPattern(Calendar.MINUTE, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            genIntervalPattern(Calendar.HOUR, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            genIntervalPattern(Calendar.AM_PM, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+        }
+        return true;
+
+    }
+
+
+
+    /*
+     * Generate interval pattern from existing resource
+     *
+     * It not only save the interval patterns,
+     * but also return the skeleton and its best match skeleton.
+     *
+     * @param field           largest different calendar field
+     * @param skeleton        skeleton
+     * @param bestSkeleton    the best match skeleton which has interval pattern
+     *                        defined in resource
+     * @param differenceInfo  the difference between skeleton and best skeleton
+     *         0 means the best matched skeleton is the same as input skeleton
+     *         1 means the fields are the same, but field width are different
+     *         2 means the only difference between fields are v/z,
+     *        -1 means there are other fields difference 
+     *
+     * @param intervalPatterns interval patterns
+     *
+     * @return  an extended skeleton or extended best skeleton if applicable.
+     *          null otherwise.
+     */
+    private SkeletonAndItsBestMatch genIntervalPattern(
+                   int field, String skeleton, String bestSkeleton, 
+                   int differenceInfo, HashMap intervalPatterns) {
+        SkeletonAndItsBestMatch retValue = null;
+        DateIntervalInfo.PatternInfo pattern = fInfo.getIntervalPattern(
+                                           bestSkeleton, field);
+        if ( pattern == null ) {
+            // single date
+            if ( SimpleDateFormat.isFieldUnitIgnored(bestSkeleton, field) ) {
+                DateIntervalInfo.PatternInfo ptnInfo = 
+                    new DateIntervalInfo.PatternInfo(fDateFormat.toPattern(),
+                                                     null, 
+                                                     fInfo.getDefaultOrder());
+                intervalPatterns.put(DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[field], ptnInfo);
+                return null;
+            }
+
+            // for 24 hour system, interval patterns in resource file
+            // might not include pattern when am_pm differ, 
+            // which should be the same as hour differ.
+            // add it here for simplicity
+            if ( field == Calendar.AM_PM ) {
+                 pattern = fInfo.getIntervalPattern(bestSkeleton, 
+                                                         Calendar.HOUR);
+                 if ( pattern != null ) {
+                      // share
+                      intervalPatterns.put(DateIntervalInfo.
+                          CALENDAR_FIELD_TO_PATTERN_LETTER[field], 
+                          pattern);
+                 }
+                 return null;
+            } 
+            // else, looking for pattern when 'y' differ for 'dMMMM' skeleton,
+            // first, get best match pattern "MMMd",
+            // since there is no pattern for 'y' differs for skeleton 'MMMd',
+            // need to look for it from skeleton 'yMMMd',
+            // if found, adjust field width in interval pattern from
+            // "MMM" to "MMMM".
+            String fieldLetter = 
+                DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
+            bestSkeleton = fieldLetter + bestSkeleton;
+            skeleton = fieldLetter + skeleton;
+            // for example, looking for patterns when 'y' differ for
+            // skeleton "MMMM".
+            pattern = fInfo.getIntervalPattern(bestSkeleton, field);
+            if ( pattern == null && differenceInfo == 0 ) {
+                // if there is no skeleton "yMMMM" defined,
+                // look for the best match skeleton, for example: "yMMM"
+                BestMatchInfo tmpRetValue = fInfo.getBestSkeleton(skeleton);
+                String tmpBestSkeleton = tmpRetValue.bestMatchSkeleton;
+                differenceInfo =  tmpRetValue.bestMatchDistanceInfo;
+                if ( tmpBestSkeleton.length() != 0 && differenceInfo != -1 ) {
+                    pattern = fInfo.getIntervalPattern(tmpBestSkeleton, field);
+                    bestSkeleton = tmpBestSkeleton;
+                }
+            }
+            if ( pattern != null ) {
+                retValue = new SkeletonAndItsBestMatch(skeleton, bestSkeleton);
+            }
+        } 
+        if ( pattern != null ) {
+            if ( differenceInfo != 0 ) {
+                String part1 = adjustFieldWidth(skeleton, bestSkeleton, 
+                                   pattern.getFirstPart(), differenceInfo);
+                String part2 = adjustFieldWidth(skeleton, bestSkeleton, 
+                                   pattern.getSecondPart(), differenceInfo);
+                pattern =  new DateIntervalInfo.PatternInfo(part1, part2, 
+                                           pattern.firstDateInPtnIsLaterDate());
+            } else {
+                // pattern is immutable, no need to clone; 
+                // pattern = (DateIntervalInfo.PatternInfo)pattern.clone();
+            }
+            intervalPatterns.put(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], pattern);
+        }
+        return retValue;
+    }
+
+    /*
+     * Adjust field width in best match interval pattern to match
+     * the field width in input skeleton.
+     *
+     * TODO (xji) make a general solution
+     * The adjusting rule can be:
+     * 1. always adjust
+     * 2. never adjust
+     * 3. default adjust, which means adjust according to the following rules
+     * 3.1 always adjust string, such as MMM and MMMM
+     * 3.2 never adjust between string and numeric, such as MM and MMM
+     * 3.3 always adjust year
+     * 3.4 do not adjust 'd', 'h', or 'm' if h presents
+     * 3.5 do not adjust 'M' if it is numeric(?)
+     *
+     * Since date interval format is well-formed format,
+     * date and time skeletons are normalized previously,
+     * till this stage, the adjust here is only "adjust strings, such as MMM
+     * and MMMM, EEE and EEEE.
+     *
+     * @param inputSkeleton            the input skeleton
+     * @param bestMatchSkeleton        the best match skeleton
+     * @param bestMatchIntervalpattern the best match interval pattern
+     * @param differenceInfo           the difference between 2 skeletons
+     *                                 1 means only field width differs
+     *                                 2 means v/z exchange
+     * @return the adjusted interval pattern
+     */
+    private static String adjustFieldWidth(String inputSkeleton,
+                                    String bestMatchSkeleton,
+                                    String bestMatchIntervalPattern,
+                                    int differenceInfo ) {
+        
+        if ( bestMatchIntervalPattern == null ) {
+            return null; // the 2nd part could be null
+        }
+        int[] inputSkeletonFieldWidth = new int[58];
+        int[] bestMatchSkeletonFieldWidth = new int[58];
+
+        /* initialize as following
+        {
+        //       A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //   P   Q   R   S   T   U   V   W   X   Y   Z
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //       a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //   p   q   r   s   t   u   v   w   x   y   z
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        };
+        */
+
+
+        DateIntervalInfo.parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
+        DateIntervalInfo.parseSkeleton(bestMatchSkeleton, bestMatchSkeletonFieldWidth);
+        if ( differenceInfo == 2 ) {
+            bestMatchIntervalPattern = bestMatchIntervalPattern.replace('v', 'z');
+        }
+
+        StringBuffer adjustedPtn = new StringBuffer(bestMatchIntervalPattern);
+
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        int PATTERN_CHAR_BASE = 0x41;
+        
+        // loop through the pattern string character by character 
+        int adjustedPtnLength = adjustedPtn.length();
+        for (int i = 0; i < adjustedPtnLength; ++i) {
+            char ch = adjustedPtn.charAt(i);
+            if (ch != prevCh && count > 0) {
+                // check the repeativeness of pattern letter
+                char skeletonChar = prevCh;
+                if ( skeletonChar == 'L' ) {
+                    // for skeleton "M+", the pattern is "...L..." 
+                    skeletonChar = 'M';
+                }
+                int fieldCount = bestMatchSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+                int inputFieldCount = inputSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+                if ( fieldCount == count && inputFieldCount > fieldCount ) {
+                    count = inputFieldCount - fieldCount;
+                    for ( int j = 0; j < count; ++j ) {
+                        adjustedPtn.insert(i, prevCh);    
+                    }                    
+                    i += count;
+                    adjustedPtnLength += count;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1) < adjustedPtn.length() && adjustedPtn.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if ( ! inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/) 
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                // ch is a date-time pattern character 
+                prevCh = ch;
+                ++count;
+            }
+        }
+        if ( count > 0 ) {
+            // last item
+            // check the repeativeness of pattern letter
+            char skeletonChar = prevCh;
+            if ( skeletonChar == 'L' ) {
+                // for skeleton "M+", the pattern is "...L..." 
+                skeletonChar = 'M';
+            }
+            int fieldCount = bestMatchSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+            int inputFieldCount = inputSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+            if ( fieldCount == count && inputFieldCount > fieldCount ) {
+                count = inputFieldCount - fieldCount;
+                for ( int j = 0; j < count; ++j ) {
+                    adjustedPtn.append(prevCh);    
+                }                    
+            }
+        }
+        return adjustedPtn.toString();
+    }
+
+
+    /*
+     * Concat a single date pattern with a time interval pattern,
+     * set it into the intervalPatterns, while field is time field.
+     * This is used to handle time interval patterns on skeleton with
+     * both time and date. Present the date followed by 
+     * the range expression for the time.
+     * @param dtfmt                  date and time format
+     * @param datePattern            date pattern
+     * @param field                  time calendar field: AM_PM, HOUR, MINUTE
+     * @param intervalPatterns       interval patterns
+     */
+    private void concatSingleDate2TimeInterval(String dtfmt,
+                                               String datePattern,
+                                               int field,
+                                               HashMap intervalPatterns)
+    {
+
+        DateIntervalInfo.PatternInfo  timeItvPtnInfo = 
+          (DateIntervalInfo.PatternInfo)intervalPatterns.get(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+        if ( timeItvPtnInfo != null ) {
+            String timeIntervalPattern = timeItvPtnInfo.getFirstPart() + 
+                                         timeItvPtnInfo.getSecondPart();
+            String pattern = MessageFormat.format(dtfmt, new Object[] 
+                                         {timeIntervalPattern, datePattern});
+            timeItvPtnInfo = DateIntervalInfo.genPatternInfo(pattern,
+                                timeItvPtnInfo.firstDateInPtnIsLaterDate());
+            intervalPatterns.put(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], timeItvPtnInfo);
+        } 
+        // else: fall back
+        // it should not happen if the interval format defined is valid
+    }
+
+
+    /*
+     * check whether a calendar field present in a skeleton.
+     * @param field      calendar field need to check
+     * @param skeleton   given skeleton on which to check the calendar field
+     * @return           true if field present in a skeleton.
+     */
+    private static boolean fieldExistsInSkeleton(int field, String skeleton)
+    {
+        String fieldChar = DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
+        return ( (skeleton.indexOf(fieldChar) == -1) ? false : true ) ;
+    }
+
+
+    /*
+     * readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        initializePattern();
+    }
+}
diff --git a/src/com/ibm/icu/text/DateIntervalInfo.java b/src/com/ibm/icu/text/DateIntervalInfo.java
new file mode 100644
index 0000000..98500db
--- /dev/null
+++ b/src/com/ibm/icu/text/DateIntervalInfo.java
@@ -0,0 +1,968 @@
+/*
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.io.Serializable;
+
+import java.util.MissingResourceException;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.UResourceBundle;
+
+
+/**
+ * DateIntervalInfo is a public class for encapsulating localizable
+ * date time interval patterns. It is used by DateIntervalFormat.
+ *
+ * <P>
+ * For most users, ordinary use of DateIntervalFormat does not need to create
+ * DateIntervalInfo object directly.
+ * DateIntervalFormat will take care of it when creating a date interval
+ * formatter when user pass in skeleton and locale.
+ *
+ * <P>
+ * For power users, who want to create their own date interval patterns,
+ * or want to re-set date interval patterns, they could do so by
+ * directly creating DateIntervalInfo and manupulating it.
+ *
+ * <P>
+ * Logically, the interval patterns are mappings
+ * from (skeleton, the_largest_different_calendar_field)
+ * to (date_interval_pattern).
+ *
+ * <P>
+ * A skeleton 
+ * <ol>
+ * <li>
+ * only keeps the field pattern letter and ignores all other parts 
+ * in a pattern, such as space, punctuations, and string literals.
+ * <li>
+ * hides the order of fields. 
+ * <li>
+ * might hide a field's pattern letter length.
+ *
+ * For those non-digit calendar fields, the pattern letter length is 
+ * important, such as MMM, MMMM, and MMMMM; EEE and EEEE, 
+ * and the field's pattern letter length is honored.
+ *    
+ * For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+ * the field pattern length is ignored and the best match, which is defined 
+ * in date time patterns, will be returned without honor the field pattern
+ * letter length in skeleton.
+ * </ol>
+ *
+ * <P>
+ * The calendar fields we support for interval formatting are:
+ * year, month, date, day-of-week, am-pm, hour, hour-of-day, and minute.
+ * Those calendar fields can be defined in the following order:
+ * year >  month > date > am-pm > hour >  minute 
+ *  
+ * The largest different calendar fields between 2 calendars is the
+ * first different calendar field in above order.
+ *
+ * For example: the largest different calendar fields between "Jan 10, 2007" 
+ * and "Feb 20, 2008" is year.
+ *   
+ * <P>
+ * There is a set of pre-defined static skeleton strings.
+ * There are pre-defined interval patterns for those pre-defined skeletons
+ * in locales' resource files.
+ * For example, for a skeleton YEAR_ABBR_MONTH_DAY, which is  "yMMMd",
+ * in  en_US, if the largest different calendar field between date1 and date2 
+ * is "year", the date interval pattern  is "MMM d, yyyy - MMM d, yyyy", 
+ * such as "Jan 10, 2007 - Jan 10, 2008".
+ * If the largest different calendar field between date1 and date2 is "month",
+ * the date interval pattern is "MMM d - MMM d, yyyy",
+ * such as "Jan 10 - Feb 10, 2007".
+ * If the largest different calendar field between date1 and date2 is "day",
+ * the date interval pattern is ""MMM d-d, yyyy", such as "Jan 10-20, 2007".
+ *
+ * For date skeleton, the interval patterns when year, or month, or date is 
+ * different are defined in resource files.
+ * For time skeleton, the interval patterns when am/pm, or hour, or minute is
+ * different are defined in resource files.
+ *
+ *
+ * <P>
+ * There are 2 dates in interval pattern. For most locales, the first date
+ * in an interval pattern is the earlier date. There might be a locale in which
+ * the first date in an interval pattern is the later date.
+ * We use fallback format for the default order for the locale.
+ * For example, if the fallback format is "{0} - {1}", it means
+ * the first date in the interval pattern for this locale is earlier date.
+ * If the fallback format is "{1} - {0}", it means the first date is the 
+ * later date.
+ * For a particular interval pattern, the default order can be overriden
+ * by prefixing "latestFirst:" or "earliestFirst:" to the interval pattern.
+ * For example, if the fallback format is "{0}-{1}",
+ * but for skeleton "yMMMd", the interval pattern when day is different is 
+ * "latestFirst:d-d MMM yy", it means by default, the first date in interval
+ * pattern is the earlier date. But for skeleton "yMMMd", when day is different,
+ * the first date in "d-d MMM yy" is the later date.
+ * 
+ * <P>
+ * The recommended way to create a DateIntervalFormat object is to pass in 
+ * the locale. 
+ * By using a Locale parameter, the DateIntervalFormat object is 
+ * initialized with the pre-defined interval patterns for a given or 
+ * default locale.
+ * <P>
+ * Users can also create DateIntervalFormat object 
+ * by supplying their own interval patterns.
+ * It provides flexibility for power usage.
+ *
+ * <P>
+ * After a DateIntervalInfo object is created, clients may modify
+ * the interval patterns using setIntervalPattern function as so desired.
+ * Currently, users can only set interval patterns when the following 
+ * calendar fields are different: ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, 
+ * DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE.
+ * Interval patterns when other calendar fields are different is not supported.
+ * <P>
+ * DateIntervalInfo objects are cloneable. 
+ * When clients obtain a DateIntervalInfo object, 
+ * they can feel free to modify it as necessary.
+ * <P>
+ * DateIntervalInfo are not expected to be subclassed. 
+ * Data for a calendar is loaded out of resource bundles. 
+ * To ICU 4.0, date interval patterns are only supported in Gregorian calendar.
+ * 
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+**/
+
+public class DateIntervalInfo implements Cloneable, Freezable, Serializable {
+    /* Save the interval pattern information.
+     * Interval pattern consists of 2 single date patterns and the separator.
+     * For example, interval pattern "MMM d - MMM d, yyyy" consists
+     * a single date pattern "MMM d", another single date pattern "MMM d, yyyy",
+     * and a separator "-".
+     * Also, the first date appears in an interval pattern could be 
+     * the earlier date or the later date.
+     * And such information is saved in the interval pattern as well.
+     */
+    static final int currentSerialVersion = 1;
+
+    /**
+     * PatternInfo class saves the first and second part of interval pattern,
+     * and whether the interval pattern is earlier date first.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class PatternInfo implements Cloneable, Serializable {
+        static final int currentSerialVersion = 1;
+        private static final long serialVersionUID = 1;
+        private final String fIntervalPatternFirstPart;
+        private final String fIntervalPatternSecondPart;
+        /*
+         * Whether the first date in interval pattern is later date or not.
+         * Fallback format set the default ordering.
+         * And for a particular interval pattern, the order can be 
+         * overriden by prefixing the interval pattern with "latestFirst:" or 
+         * "earliestFirst:"
+         * For example, given 2 date, Jan 10, 2007 to Feb 10, 2007.
+         * if the fallback format is "{0} - {1}", 
+         * and the pattern is "d MMM - d MMM yyyy", the interval format is
+         * "10 Jan - 10 Feb, 2007".
+         * If the pattern is "latestFirst:d MMM - d MMM yyyy", 
+         * the interval format is "10 Feb - 10 Jan, 2007"
+         */
+        private final boolean fFirstDateInPtnIsLaterDate;
+
+        /**
+         * constructor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public PatternInfo(String firstPart, String secondPart,
+                           boolean firstDateInPtnIsLaterDate) {
+            fIntervalPatternFirstPart = firstPart;
+            fIntervalPatternSecondPart = secondPart;
+            fFirstDateInPtnIsLaterDate = firstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String getFirstPart() {
+            return fIntervalPatternFirstPart;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String getSecondPart() {
+            return fIntervalPatternSecondPart;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean firstDateInPtnIsLaterDate() {
+            return fFirstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * Override equals
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean equals(Object a) {
+            if ( a instanceof PatternInfo ) {
+                PatternInfo patternInfo = (PatternInfo)a;
+                return Utility.objectEquals(fIntervalPatternFirstPart, patternInfo.fIntervalPatternFirstPart) && 
+                       Utility.objectEquals(fIntervalPatternSecondPart, fIntervalPatternSecondPart) &&
+                       fFirstDateInPtnIsLaterDate == patternInfo.fFirstDateInPtnIsLaterDate;
+            }
+            return false;
+        }
+
+        /**
+         * Override hashcode
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public int hashCode() {
+            int hash = fIntervalPatternFirstPart != null ? fIntervalPatternFirstPart.hashCode() : 0;
+            if (fIntervalPatternSecondPart != null) {
+                hash ^= fIntervalPatternSecondPart.hashCode();
+            }
+            if (fFirstDateInPtnIsLaterDate) {
+                hash ^= -1;
+            }
+            return hash;
+        }
+    }
+
+    // Following is package protected since 
+    // it is shared with DateIntervalFormat.
+    static final String[] CALENDAR_FIELD_TO_PATTERN_LETTER = 
+    {
+        "G", "y", "M",
+        "w", "W", "d", 
+        "D", "E", "F",
+        "a", "h", "H",
+        "m",
+    };
+
+
+    private static final long serialVersionUID = 1;
+    private static final int MINIMUM_SUPPORTED_CALENDAR_FIELD = 
+                                                          Calendar.MINUTE;
+    //private static boolean DEBUG = true;
+
+    private static String FALLBACK_STRING = "fallback";
+    private static String LATEST_FIRST_PREFIX = "latestFirst:";
+    private static String EARLIEST_FIRST_PREFIX = "earliestFirst:";
+
+    // DateIntervalInfo cache
+    private final static ICUCache DIICACHE = new SimpleCache();
+
+    // default interval pattern on the skeleton, {0} - {1}
+    private String fFallbackIntervalPattern;
+    // default order
+    private boolean fFirstDateInPtnIsLaterDate = false;
+
+    // HashMap<String, HashMap<String, PatternInfo> >
+    // HashMap( skeleton, HashMap(largest_different_field, pattern) )
+    private HashMap fIntervalPatterns = null;
+
+    private transient boolean frozen = false;
+
+
+    /**
+     * Create empty instance.
+     * It does not initialize any interval patterns except
+     * that it initialize default fall-back pattern as "{0} - {1}",
+     * which can be reset by setFallbackIntervalPattern().
+     *
+     * It should be followed by setFallbackIntervalPattern() and 
+     * setIntervalPattern(), 
+     * and is recommended to be used only for power users who
+     * wants to create their own interval patterns and use them to create
+     * date interval formatter.
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    public DateIntervalInfo() 
+    {
+        fIntervalPatterns = new HashMap();
+        fFallbackIntervalPattern = "{0} \u2013 {1}";
+    }
+
+
+    /** 
+     * Construct DateIntervalInfo for the given locale,
+     * @param locale  the interval patterns are loaded from the Gregorian 
+     *                calendar data in this locale.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateIntervalInfo(ULocale locale) 
+    {
+        initializeData(locale);
+    }
+
+
+    /*
+     * Initialize the DateIntervalInfo from locale
+     * @param locale   the given locale.
+     */
+    private void initializeData(ULocale locale)
+    {
+        String key = locale.toString();
+        DateIntervalInfo dii = (DateIntervalInfo) DIICACHE.get(key);
+        if ( dii == null ) {
+            // initialize data from scratch
+            setup(locale);
+            // FIXME: should put a clone in cache?
+            // or put itself in cache?
+            // DIICACHE.put(key, this);
+            dii = (DateIntervalInfo)this.clone();
+            DIICACHE.put(key, dii);
+        } else {
+            initializeData(dii);
+        }
+    }
+
+ 
+
+    /*
+     * Initialize DateIntervalInfo from another instance
+     * @param dii  an DateIntervalInfo instance
+     */
+    private void initializeData(DateIntervalInfo dii) {
+        fFallbackIntervalPattern = dii.fFallbackIntervalPattern;
+        fFirstDateInPtnIsLaterDate = dii.fFirstDateInPtnIsLaterDate;
+        fIntervalPatterns = dii.fIntervalPatterns;
+    }
+
+
+    /*
+     * Initialize DateIntervalInfo from calendar data
+     * @param calData  calendar data
+     */
+    private void setup(ULocale locale) {
+        int DEFAULT_HASH_SIZE = 19;
+        fIntervalPatterns = new HashMap(DEFAULT_HASH_SIZE);
+        // initialize to guard if there is no interval date format defined in 
+        // resource files
+        fFallbackIntervalPattern = "{0} \u2013 {1}";
+        HashSet skeletonSet = new HashSet();
+        try {
+            // loop through all locales to get all available skeletons'
+            // interval format
+            ULocale parentLocale = locale;
+            // FIXME: how to check for root
+            //while ( !parentLocale.equals(ULocale.ROOT) ) {
+            while (parentLocale != null && !parentLocale.equals(ULocale.ROOT)) {
+                String name = parentLocale.getName();
+                if ( name.length() == 0 ) {
+                    break;
+                }
+
+                ICUResourceBundle rb = (ICUResourceBundle) UResourceBundle.
+                  getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+                rb = rb.getWithFallback("calendar");
+                ICUResourceBundle gregorianBundle = rb.getWithFallback(
+                                                              "gregorian");
+                ICUResourceBundle itvDtPtnResource =gregorianBundle.
+                                      getWithFallback("intervalFormats");
+                // look for fallback first, since it establishes the default order
+                String fallback = itvDtPtnResource.getStringWithFallback(
+                                                          FALLBACK_STRING);
+                setFallbackIntervalPattern(fallback);
+                int size = itvDtPtnResource.getSize();
+                for ( int index = 0; index < size; ++index ) {
+                    String skeleton = itvDtPtnResource.get(index).getKey();
+                    if ( skeletonSet.contains(skeleton) ) {
+                        continue;
+                    }
+                    skeletonSet.add(skeleton);
+                    if ( skeleton.compareTo(FALLBACK_STRING) == 0 ) {
+                        continue;
+                    }
+                    ICUResourceBundle intervalPatterns =
+                        itvDtPtnResource.getWithFallback(skeleton);
+                    int ptnNum = intervalPatterns.getSize();
+                    for ( int ptnIndex = 0; ptnIndex < ptnNum; ++ptnIndex) {
+                        String key = intervalPatterns.get(ptnIndex).getKey();
+                        String pattern = intervalPatterns.get(ptnIndex).getString();
+    
+                        int calendarField = Calendar.MILLISECONDS_IN_DAY + 1;
+                        if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR]) == 0 ) {
+                            calendarField = Calendar.YEAR;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH]) == 0 ) {
+                            calendarField = Calendar.MONTH;
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE]) == 0 ) {
+                            calendarField = Calendar.DATE;
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM]) == 0 ) {
+                            calendarField = Calendar.AM_PM;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]) == 0 ) {
+                            calendarField = Calendar.HOUR;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MINUTE]) == 0 ) {
+                            calendarField = Calendar.MINUTE;    
+                        }
+             
+                        if ( calendarField != Calendar.MILLISECONDS_IN_DAY + 1 ) {
+                            setIntervalPatternInternally(skeleton, key, pattern);
+                        }
+                    }
+                }
+                parentLocale = parentLocale.getFallback();
+            }
+        } catch ( MissingResourceException e) {
+            // ok, will fallback to {data0} - {date1}
+        }
+    }
+
+
+    /*
+     * Split interval patterns into 2 part.
+     * @param intervalPattern  interval pattern
+     * @return the index in interval pattern which split the pattern into 2 part
+     */
+    private static int splitPatternInto2Part(String intervalPattern) {
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        /* repeatedPattern used to record whether a pattern has already seen.
+           It is a pattern applies to first calendar if it is first time seen,
+           otherwise, it is a pattern applies to the second calendar
+         */
+        int[] patternRepeated = new int[58];
+
+        int PATTERN_CHAR_BASE = 0x41;
+        
+        /* loop through the pattern string character by character looking for
+         * the first repeated pattern letter, which breaks the interval pattern
+         * into 2 parts. 
+         */
+        int i;
+        boolean foundRepetition = false;
+        for (i = 0; i < intervalPattern.length(); ++i) {
+            char ch = intervalPattern.charAt(i);
+            
+            if (ch != prevCh && count > 0) {
+                // check the repeativeness of pattern letter
+                int repeated = patternRepeated[(int)(prevCh - PATTERN_CHAR_BASE)];
+                if ( repeated == 0 ) {
+                    patternRepeated[prevCh - PATTERN_CHAR_BASE] = 1;
+                } else {
+                    foundRepetition = true;
+                    break;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1) < intervalPattern.length() && 
+                    intervalPattern.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if (!inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/)
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                // ch is a date-time pattern character 
+                prevCh = ch;
+                ++count;
+            }
+        }
+        // check last pattern char, distinguish
+        // "dd MM" ( no repetition ), 
+        // "d-d"(last char repeated ), and 
+        // "d-d MM" ( repetition found )
+        if ( count > 0 && foundRepetition == false ) {
+            if ( patternRepeated[(int)(prevCh - PATTERN_CHAR_BASE)] == 0 ) {
+                count = 0;
+            }
+        }
+        return (i - count);
+    }
+
+
+    /** 
+     * Provides a way for client to build interval patterns.
+     * User could construct DateIntervalInfo by providing 
+     * a list of skeletons and their patterns.
+     * <P>
+     * For example:
+     * <pre>
+     * DateIntervalInfo dIntervalInfo = new DateIntervalInfo();
+     * dIntervalInfo.setIntervalPattern("yMd", Calendar.YEAR, "'from' yyyy-M-d 'to' yyyy-M-d"); 
+     * dIntervalInfo.setIntervalPattern("yMMMd", Calendar.MONTH, "'from' yyyy MMM d 'to' MMM d");
+     * dIntervalInfo.setIntervalPattern("yMMMd", Calendar.DAY, "yyyy MMM d-d");
+     * dIntervalInfo.setFallbackIntervalPattern("{0} ~ {1}");
+     * </pre>
+     *
+     * Restriction: 
+     * Currently, users can only set interval patterns when the following 
+     * calendar fields are different: ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, 
+     * DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE.
+     * Interval patterns when other calendar fields are different are 
+     * not supported.
+     *
+     * @param skeleton         the skeleton on which interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param intervalPattern  the interval pattern on the largest different
+     *                         calendar unit.
+     *                         For example, if lrgDiffCalUnit is 
+     *                         "year", the interval pattern for en_US when year
+     *                         is different could be "'from' yyyy 'to' yyyy".
+     * @throws IllegalArgumentException  if setting interval pattern on 
+     *                            a calendar field that is smaller
+     *                            than the MINIMUM_SUPPORTED_CALENDAR_FIELD 
+     * @throws UnsupportedOperationException  if the object is frozen
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setIntervalPattern(String skeleton, 
+                                   int lrgDiffCalUnit, 
+                                   String intervalPattern)
+    {
+        if ( frozen ) {
+            throw new UnsupportedOperationException("no modification is allowed after DII is frozen");
+        }
+        if ( lrgDiffCalUnit > MINIMUM_SUPPORTED_CALENDAR_FIELD ) {
+            throw new IllegalArgumentException("calendar field is larger than MINIMUM_SUPPORTED_CALENDAR_FIELD");
+        }
+
+        PatternInfo ptnInfo = setIntervalPatternInternally(skeleton,
+                          CALENDAR_FIELD_TO_PATTERN_LETTER[lrgDiffCalUnit], 
+                          intervalPattern);
+        if ( lrgDiffCalUnit == Calendar.HOUR_OF_DAY ) {
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM],
+                               ptnInfo);
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR],
+                               ptnInfo);
+        } else if ( lrgDiffCalUnit == Calendar.DAY_OF_MONTH ||
+                    lrgDiffCalUnit == Calendar.DAY_OF_WEEK ) {
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE],
+                               ptnInfo);
+        }
+    }
+
+
+    /* Set Interval pattern.
+     *
+     * It generates the interval pattern info, 
+     * afer which, not only sets the interval pattern info into the hash map,
+     * but also returns the interval pattern info to the caller
+     * so that caller can re-use it.
+     *
+     * @param skeleton         skeleton on which the interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param intervalPattern  the interval pattern on the largest different
+     *                         calendar unit.
+     * @return the interval pattern pattern information
+     */
+    private PatternInfo setIntervalPatternInternally(String skeleton,
+                                                String lrgDiffCalUnit,
+                                                String intervalPattern) {
+        HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+        boolean emptyHash = false;
+        if ( patternsOfOneSkeleton == null ) {
+            patternsOfOneSkeleton = new HashMap();
+            emptyHash = true;
+        }
+        boolean order = fFirstDateInPtnIsLaterDate;
+        // check for "latestFirst:" or "earliestFirst:" prefix
+        if ( intervalPattern.startsWith(LATEST_FIRST_PREFIX) ) {
+            order = true;
+            int prefixLength = LATEST_FIRST_PREFIX.length();
+            intervalPattern = intervalPattern.substring(prefixLength, intervalPattern.length());
+        } else if ( intervalPattern.startsWith(EARLIEST_FIRST_PREFIX) ) {
+            order = false;
+            int earliestFirstLength = EARLIEST_FIRST_PREFIX.length();
+            intervalPattern = intervalPattern.substring(earliestFirstLength, intervalPattern.length());
+        }
+        PatternInfo itvPtnInfo = genPatternInfo(intervalPattern, order);
+        
+        patternsOfOneSkeleton.put(lrgDiffCalUnit, itvPtnInfo);
+        if ( emptyHash == true ) {
+            fIntervalPatterns.put(skeleton, patternsOfOneSkeleton);
+        }
+
+        return itvPtnInfo;
+    }
+
+
+    /* Set Interval pattern.
+     *
+     * @param skeleton         skeleton on which the interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param ptnInfo          interval pattern infomration 
+     */
+    private void setIntervalPattern(String skeleton,
+                                    String lrgDiffCalUnit,
+                                    PatternInfo ptnInfo) {
+        HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+        patternsOfOneSkeleton.put(lrgDiffCalUnit, ptnInfo);
+    }
+
+
+    /**
+     * Break interval patterns as 2 part and save them into pattern info.
+     * @param intervalPattern  interval pattern
+     * @param laterDateFirst   whether the first date in intervalPattern
+     *                         is earlier date or later date
+     * @return                 pattern info object
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    static PatternInfo genPatternInfo(String intervalPattern, 
+                                      boolean laterDateFirst) {
+        int splitPoint = splitPatternInto2Part(intervalPattern);
+        
+        String firstPart = intervalPattern.substring(0, splitPoint);
+        String secondPart = null;
+        if ( splitPoint < intervalPattern.length() ) {
+            secondPart = intervalPattern.substring(splitPoint, intervalPattern.length());
+        }
+
+        return new PatternInfo(firstPart, secondPart, laterDateFirst);
+    }
+
+
+    /**
+     * Get the interval pattern given the largest different calendar field.
+     * @param skeleton   the skeleton
+     * @param field      the largest different calendar field
+     * @return interval pattern  return null if interval pattern is not found.
+     * @throws IllegalArgumentException  if getting interval pattern on 
+     *                            a calendar field that is smaller
+     *                            than the MINIMUM_SUPPORTED_CALENDAR_FIELD 
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PatternInfo getIntervalPattern(String skeleton, int field) 
+    {
+        if ( field > MINIMUM_SUPPORTED_CALENDAR_FIELD ) {
+            throw new IllegalArgumentException("no support for field less than MINUTE");
+        }
+        HashMap patternsOfOneSkeleton = (HashMap) fIntervalPatterns.get(skeleton);
+        if ( patternsOfOneSkeleton != null ) {
+            PatternInfo intervalPattern = (PatternInfo) patternsOfOneSkeleton.
+                get(CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+            if ( intervalPattern != null ) {
+                return intervalPattern;
+            }
+        }
+        return null;
+    }
+
+
+
+    /**
+     * Get the fallback interval pattern.
+     * @return fallback interval pattern
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getFallbackIntervalPattern()
+    {
+        return fFallbackIntervalPattern;
+    }
+
+
+    /**
+     * Re-set the fallback interval pattern.
+     *
+     * In construction, default fallback pattern is set as "{0} - {1}".
+     * And constructor taking locale as parameter will set the
+     * fallback pattern as what defined in the locale resource file.
+     *
+     * This method provides a way for user to replace the fallback pattern.
+     *
+     * @param fallbackPattern                 fall-back interval pattern.
+     * @throws UnsupportedOperationException  if the object is frozen
+     * @throws IllegalArgumentException       if there is no pattern {0} or 
+     *                                        pattern {1} in fallbakckPattern
+     *                   
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setFallbackIntervalPattern(String fallbackPattern)
+    {
+        if ( frozen ) {
+            throw new UnsupportedOperationException("no modification is allowed after DII is frozen");
+        }
+        int firstPatternIndex = fallbackPattern.indexOf("{0}");
+        int secondPatternIndex = fallbackPattern.indexOf("{1}");
+        if ( firstPatternIndex == -1 || secondPatternIndex == -1 ) {
+            throw new IllegalArgumentException("no pattern {0} or pattern {1} in fallbackPattern");
+        }
+        if ( firstPatternIndex > secondPatternIndex ) {
+            fFirstDateInPtnIsLaterDate = true;
+        }
+        fFallbackIntervalPattern = fallbackPattern;
+    }
+
+
+    /**
+     * Get default order -- whether the first date in pattern is later date
+     *                      or not.
+     *
+     * return default date ordering in interval pattern. TRUE if the first date 
+     *        in pattern is later date, FALSE otherwise.
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean getDefaultOrder()
+    {
+        return fFirstDateInPtnIsLaterDate;
+    }
+
+
+    /**
+     * Boilerplate. Clone this object.
+     * @return     a copy of the object
+     * @draft ICU4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone() 
+    {
+        if ( frozen ) {
+            return this;
+        }
+        return cloneUnfrozenDII();
+    }
+
+
+    /*
+     * Clone an unfrozen DateIntervalInfo object.
+     * @return     a copy of the object
+     */
+    private Object cloneUnfrozenDII() //throws IllegalStateException
+    {
+        try {
+            DateIntervalInfo other = (DateIntervalInfo) super.clone();
+            other.fFallbackIntervalPattern=fFallbackIntervalPattern;
+            other.fFirstDateInPtnIsLaterDate = fFirstDateInPtnIsLaterDate;
+            other.fIntervalPatterns = new HashMap();
+            Iterator iter = fIntervalPatterns.keySet().iterator();
+            while ( iter.hasNext() ) {
+                String skeleton = (String) iter.next();
+                HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+                HashMap oneSetPtn = new HashMap();
+                Iterator patternIter = patternsOfOneSkeleton.keySet().iterator();
+                while ( patternIter.hasNext() ) {
+                    String calField = (String) patternIter.next();
+                    PatternInfo value = (PatternInfo) patternsOfOneSkeleton.get(calField);
+                    oneSetPtn.put(calField, value);
+                }
+                other.fIntervalPatterns.put(skeleton, oneSetPtn);    
+            }
+            other.frozen = false;
+            return other;
+        } catch ( CloneNotSupportedException e ) {
+            throw new  IllegalStateException("clone is not supported");
+        }
+    }
+
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object cloneAsThawed() {
+        DateIntervalInfo result = (DateIntervalInfo) (this.cloneUnfrozenDII());
+        return result;
+    }
+
+
+    /**
+     * Parse skeleton, save each field's width.
+     * It is used for looking for best match skeleton,
+     * and adjust pattern field width.
+     * @param skeleton            skeleton to be parsed
+     * @param skeletonFieldWidth  parsed skeleton field width
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    static void parseSkeleton(String skeleton, int[] skeletonFieldWidth) {
+        int PATTERN_CHAR_BASE = 0x41;
+        for ( int i = 0; i < skeleton.length(); ++i ) {
+            ++skeletonFieldWidth[(int)(skeleton.charAt(i) - PATTERN_CHAR_BASE)];
+        }
+    }
+
+
+
+    /*
+     * Check whether one field width is numeric while the other is string.
+     *
+     * TODO (xji): make it general
+     *
+     * @param fieldWidth          one field width
+     * @param anotherFieldWidth   another field width
+     * @param patternLetter       pattern letter char
+     * @return true if one field width is numeric and the other is string,
+     *         false otherwise.
+     */
+    private static boolean stringNumeric(int fieldWidth,
+                                         int anotherFieldWidth,
+                                         char patternLetter) {
+        if ( patternLetter == 'M' ) {
+            if ( fieldWidth <= 2 && anotherFieldWidth > 2 ||
+                 fieldWidth > 2 && anotherFieldWidth <= 2 ) {
+                return true;
+            }
+        }        
+        return false;
+    }
+
+
+    /*
+     * given an input skeleton, get the best match skeleton 
+     * which has pre-defined interval pattern in resource file.
+     *
+     * TODO (xji): set field weight or
+     *             isolate the funtionality in DateTimePatternGenerator
+     * @param  inputSkeleton        input skeleton
+     * @return 0, if there is exact match for input skeleton
+     *         1, if there is only field width difference between 
+     *            the best match and the input skeleton
+     *         2, the only field difference is 'v' and 'z'
+     *        -1, if there is calendar field difference between
+     *            the best match and the input skeleton
+     */
+    DateIntervalFormat.BestMatchInfo getBestSkeleton(String inputSkeleton) {
+        String bestSkeleton = inputSkeleton;
+        int[] inputSkeletonFieldWidth = new int[58];
+        int[] skeletonFieldWidth = new int[58];
+
+        final int DIFFERENT_FIELD = 0x1000;
+        final int STRING_NUMERIC_DIFFERENCE = 0x100;
+        final int BASE = 0x41;
+
+        // FIXME: hack for 'v' and 'z'
+        // resource bundle only have time skeletons ending with 'v',
+        // but not for time skeletons ending with 'z'.
+        boolean replaceZWithV = false;
+        if ( inputSkeleton.indexOf('z') != -1 ) {
+            inputSkeleton = inputSkeleton.replace('z', 'v');
+            replaceZWithV = true;
+        }
+
+        parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
+        int bestDistance = Integer.MAX_VALUE;
+        // 0 means exact the same skeletons;
+        // 1 means having the same field, but with different length,
+        // 2 means only z/v differs
+        // -1 means having different field.
+        int bestFieldDifference = 0;
+        Iterator iter = fIntervalPatterns.keySet().iterator();
+        while ( iter.hasNext() ) {
+            String skeleton = (String)iter.next();
+            // clear skeleton field width
+            for ( int i = 0; i < skeletonFieldWidth.length; ++i ) {
+                skeletonFieldWidth[i] = 0;    
+            }
+            parseSkeleton(skeleton, skeletonFieldWidth);
+            // calculate distance
+            int distance = 0;
+            int fieldDifference = 1;
+            for ( int i = 0; i < inputSkeletonFieldWidth.length; ++i ) {
+                int inputFieldWidth = inputSkeletonFieldWidth[i];
+                int fieldWidth = skeletonFieldWidth[i];
+                if ( inputFieldWidth == fieldWidth ) {
+                    continue;
+                }
+                if ( inputFieldWidth == 0 ) {
+                    fieldDifference = -1;
+                    distance += DIFFERENT_FIELD;
+                } else if ( fieldWidth == 0 ) {
+                    fieldDifference = -1;
+                    distance += DIFFERENT_FIELD;
+                } else if (stringNumeric(inputFieldWidth, fieldWidth, 
+                                         (char)(i+BASE) ) ) {
+                    distance += STRING_NUMERIC_DIFFERENCE;
+                } else {
+                    distance += Math.abs(inputFieldWidth - fieldWidth);
+                }
+            }
+            if ( distance < bestDistance ) {
+                bestSkeleton = skeleton;
+                bestDistance = distance;
+                bestFieldDifference = fieldDifference;
+            }
+            if ( distance == 0 ) {
+                bestFieldDifference = 0;
+                break;
+            }
+        }
+        if ( replaceZWithV && bestFieldDifference != -1 ) {
+            bestFieldDifference = 2;
+        }
+        return new DateIntervalFormat.BestMatchInfo(bestSkeleton, bestFieldDifference);
+    }
+
+    /**
+     * Override equals
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateIntervalInfo ) {
+            DateIntervalInfo dtInfo = (DateIntervalInfo)a;
+            return fIntervalPatterns.equals(dtInfo.fIntervalPatterns);
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return fIntervalPatterns.hashCode();
+    }
+    
+}// end class DateIntervalInfo
diff --git a/src/com/ibm/icu/text/DateTimePatternGenerator.java b/src/com/ibm/icu/text/DateTimePatternGenerator.java
new file mode 100644
index 0000000..ad9e481
--- /dev/null
+++ b/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -0,0 +1,1800 @@
+//##header J2SE15
+/*
+ ********************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                             *
+ ********************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.PatternTokenizer;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import java.util.HashMap;
+//#endif
+import java.util.HashSet;
+import java.util.Iterator;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+//import java.util.LinkedHashMap;
+//import java.util.LinkedHashSet;
+//#endif
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * This class provides flexible generation of date format patterns, like
+ * "yy-MM-dd". The user can build up the generator by adding successive
+ * patterns. Once that is done, a query can be made using a "skeleton", which is
+ * a pattern which just includes the desired fields and lengths. The generator
+ * will return the "best fit" pattern corresponding to that skeleton.
+ * <p>
+ * The main method people will use is getBestPattern(String skeleton), since
+ * normally this class is pre-built with data from a particular locale. However,
+ * generators can be built directly from other data as well.
+ * <pre>
+ * // some simple use cases
+ * Date sampleDate = new Date(99, 9, 13, 23, 58, 59);
+ * ULocale locale = ULocale.GERMANY;
+ * TimeZone zone = TimeZone.getTimeZone(&quot;Europe/Paris&quot;);
+ * 
+ * // make from locale
+ * 
+ * DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
+ * SimpleDateFormat format = new SimpleDateFormat(gen.getBestPattern(&quot;MMMddHmm&quot;),
+ *     locale);
+ * format.setTimeZone(zone);
+ * assertEquals(&quot;simple format: MMMddHmm&quot;, 
+ *     &quot;8:58 14. Okt&quot;,
+ *     format.format(sampleDate));
+ * // (a generator can be built from scratch, but that is not a typical use case)
+ * 
+ * // modify the generator by adding patterns
+ * DateTimePatternGenerator.PatternInfo returnInfo = new DateTimePatternGenerator.PatternInfo();
+ * gen.add(&quot;d'. von' MMMM&quot;, true, returnInfo);
+ * // the returnInfo is mostly useful for debugging problem cases
+ * format.applyPattern(gen.getBestPattern(&quot;MMMMddHmm&quot;));
+ * assertEquals(&quot;modified format: MMMddHmm&quot;,
+ *     &quot;8:58 14. von Oktober&quot;,
+ *     format.format(sampleDate));
+ * 
+ * // get a pattern and modify it
+ * format = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.FULL,
+ *     DateFormat.FULL, locale);
+ * format.setTimeZone(zone);
+ * String pattern = format.toPattern();
+ * assertEquals(&quot;full-date&quot;,
+ *     &quot;Donnerstag, 14. Oktober 1999 8:58 Uhr GMT+02:00&quot;,
+ *     format.format(sampleDate));
+ * 
+ * // modify it to change the zone.
+ * String newPattern = gen.replaceFieldTypes(pattern, &quot;vvvv&quot;);
+ * format.applyPattern(newPattern);
+ * assertEquals(&quot;full-date, modified zone&quot;,
+ *     &quot;Donnerstag, 14. Oktober 1999 8:58 Uhr Frankreich&quot;,
+ *     format.format(sampleDate));
+ * </pre>
+ * @stable ICU 3.6
+ */
+public class DateTimePatternGenerator implements Freezable, Cloneable {
+    // debugging flags
+    //static boolean SHOW_DISTANCE = false;
+    // TODO add hack to fix months for CJK, as per bug ticket 1099
+    
+    /**
+     * Create empty generator, to be constructed with add(...) etc.
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getEmptyInstance() {
+        return new DateTimePatternGenerator();
+    }
+    
+    /**
+     * Only for use by subclasses
+     * @stable ICU 3.6
+     */
+    protected DateTimePatternGenerator() {         
+    }
+    
+    /**
+     * Construct a flexible generator according to data for a given locale.
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getInstance() {
+        return getInstance(ULocale.getDefault());
+    }
+    
+    /**
+     * Construct a flexible generator according to data for a given locale.
+     * @param uLocale
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getInstance(ULocale uLocale) {
+        DateTimePatternGenerator result = new DateTimePatternGenerator();
+        String lang = uLocale.getLanguage();
+        if (lang.equals("zh") || lang.equals("ko") || lang.equals("ja")) {
+          result.chineseMonthHack = true;
+        }
+        PatternInfo returnInfo = new PatternInfo();
+        String hackPattern = null;
+        // first load with the ICU patterns
+        for (int i = DateFormat.FULL; i <= DateFormat.SHORT; ++i) {
+            SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateInstance(i, uLocale);
+            result.addPattern(df.toPattern(), false, returnInfo);
+            df = (SimpleDateFormat) DateFormat.getTimeInstance(i, uLocale);
+            result.addPattern(df.toPattern(), false, returnInfo);
+            // HACK for hh:ss
+            if (i == DateFormat.MEDIUM) {
+                hackPattern = df.toPattern();
+            }
+        }
+
+        ICUResourceBundle rb = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, uLocale);
+        rb = rb.getWithFallback("calendar");
+        ICUResourceBundle gregorianBundle = rb.getWithFallback("gregorian");
+        // CLDR item formats
+        
+        ICUResourceBundle itemBundle = gregorianBundle.getWithFallback("appendItems");
+        for (int i=0; i<itemBundle.getSize(); ++i) {
+            ICUResourceBundle formatBundle = (ICUResourceBundle)itemBundle.get(i);
+            String formatName = itemBundle.get(i).getKey();
+            String value = formatBundle.getString();
+            result.setAppendItemFormat(getAppendFormatNumber(formatName), value);
+        }
+        
+        // CLDR item names
+        itemBundle = gregorianBundle.getWithFallback("fields");
+        ICUResourceBundle fieldBundle, dnBundle;
+        for (int i=0; i<TYPE_LIMIT; ++i) {
+            if ( isCLDRFieldName(i) ) {
+                fieldBundle = itemBundle.getWithFallback(CLDR_FIELD_NAME[i]);
+                dnBundle = fieldBundle.getWithFallback("dn");
+                String value = dnBundle.getString();
+                //System.out.println("Field name:"+value);
+                result.setAppendItemName(i, value);
+            }
+        }
+          
+        // set the AvailableFormat in CLDR
+        try {
+           ICUResourceBundle formatBundle =  gregorianBundle.getWithFallback("availableFormats");
+           //System.out.println("available format from current locale:"+uLocale.getName());
+           for (int i=0; i<formatBundle.getSize(); ++i) { 
+               String formatKey = formatBundle.get(i).getKey();
+               String formatValue = formatBundle.get(i).getString();
+               //System.out.println(" availableFormat:"+formatValue);
+               result.setAvailableFormat(formatKey);
+               result.addPattern(formatValue, false, returnInfo);
+           } 
+        }catch(Exception e) {
+        }
+       
+        ULocale parentLocale=uLocale;
+        while ( (parentLocale=parentLocale.getFallback()) != null) {
+            ICUResourceBundle prb = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+            prb = prb.getWithFallback("calendar");
+            ICUResourceBundle pGregorianBundle = prb.getWithFallback("gregorian");
+            try {
+                ICUResourceBundle formatBundle =  pGregorianBundle.getWithFallback("availableFormats");
+                //System.out.println("available format from parent locale:"+parentLocale.getName());
+                for (int i=0; i<formatBundle.getSize(); ++i) { 
+                    String formatKey = formatBundle.get(i).getKey();
+                    String formatValue = formatBundle.get(i).getString();
+                    //System.out.println(" availableFormat:"+formatValue);
+                    if (!result.isAvailableFormatSet(formatKey)) {
+                        result.setAvailableFormat(formatKey);
+                        result.addPattern(formatValue, false, returnInfo);
+                        //System.out.println(" availableFormat:"+formatValue);
+                    }
+                } 
+              
+             }catch(Exception e) {
+             }
+             
+        }
+        
+        // assume it is always big endian (ok for CLDR right now)
+        // some languages didn't add mm:ss or HH:mm, so put in a hack to compute that from the short time.
+        if (hackPattern != null) {
+            hackTimes(result, returnInfo, hackPattern);
+        }
+        
+        // set the datetime pattern. This is ugly code -- there should be a public interface for this
+        Calendar cal = Calendar.getInstance(uLocale);
+        CalendarData calData = new CalendarData(uLocale, cal.getType());
+        String[] patterns = calData.get("DateTimePatterns").getStringArray();
+        result.setDateTimeFormat(patterns[8]);
+        
+        // decimal point for seconds
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uLocale);
+        result.setDecimal(String.valueOf(dfs.getDecimalSeparator()));
+        return result;
+    }
+    
+    private static void hackTimes(DateTimePatternGenerator result, PatternInfo returnInfo, String hackPattern) {
+        result.fp.set(hackPattern);
+        String mmss = new String();
+        // to get mm:ss, we strip all but mm literal ss
+        boolean gotMm = false;
+        for (int i = 0; i < result.fp.items.size(); ++i) {
+            Object item = result.fp.items.get(i);
+            if (item instanceof String) {
+                if (gotMm) {
+                    mmss += result.fp.quoteLiteral(item.toString());
+                }
+            } else {
+                char ch = item.toString().charAt(0);
+                if (ch == 'm') {
+                    gotMm = true;
+                    mmss += item;
+                } else if (ch == 's') {
+                    if (!gotMm) {
+                        break; // failed
+                    }
+                    mmss += item;
+                    result.addPattern(mmss, false, returnInfo);
+                    break;
+                } else if (gotMm || ch == 'z' || ch == 'Z' || ch == 'v' || ch == 'V') {
+                    break; // failed
+                }
+            }
+        }
+        // to get hh:mm, we strip (literal ss) and (literal S)
+        // the easiest way to do this is to mark the stuff we want to nuke, then remove it in a second pass.
+        BitSet variables = new BitSet();
+        BitSet nuke = new BitSet();
+        for (int i = 0; i < result.fp.items.size(); ++i) {
+            Object item = result.fp.items.get(i);
+            if (item instanceof VariableField) {
+                variables.set(i);
+                char ch = item.toString().charAt(0);
+                if (ch == 's' || ch == 'S') {
+                    nuke.set(i);
+                    for (int j = i-1; j >= 0; ++j) {
+                        if (variables.get(j)) break;
+                        nuke.set(i);
+                    }
+                }
+            }
+        }
+        String hhmm = getFilteredPattern(result.fp, nuke);
+        result.addPattern(hhmm, false, returnInfo);
+    }
+    
+    private static String getFilteredPattern(FormatParser fp, BitSet nuke) {
+        String result = new String();
+        for (int i = 0; i < fp.items.size(); ++i) {
+            if (nuke.get(i)) continue;
+            Object item = fp.items.get(i);
+            if (item instanceof String) {
+                result += fp.quoteLiteral(item.toString());
+            } else {
+                result += item.toString();
+            }
+        }
+        return result;
+    }
+    
+    /*private static int getAppendNameNumber(String string) {
+        for (int i = 0; i < CLDR_FIELD_NAME.length; ++i) {
+            if (CLDR_FIELD_NAME[i].equals(string)) return i;
+        }
+        return -1;
+    }*/
+    
+    private static int getAppendFormatNumber(String string) {
+        for (int i = 0; i < CLDR_FIELD_APPEND.length; ++i) {
+            if (CLDR_FIELD_APPEND[i].equals(string)) return i;
+        }
+        return -1;
+        
+    }
+
+    private static boolean isCLDRFieldName(int index) {
+        if ((index<0) && (index>=TYPE_LIMIT)) {
+            return false;
+        }
+        if (CLDR_FIELD_NAME[index].charAt(0) == '*') {
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+    
+    
+    /**
+     * Return the best pattern matching the input skeleton. It is guaranteed to
+     * have all of the fields in the skeleton.
+     * 
+     * @param skeleton
+     *            The skeleton is a pattern containing only the variable fields.
+     *            For example, "MMMdd" and "mmhh" are skeletons.
+     * @stable ICU 3.6
+     */
+    public String getBestPattern(String skeleton) {
+        if (chineseMonthHack) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            int monidx = skeleton.indexOf("MMM");
+//##            if (monidx >= 0) {
+//##                StringBuffer tmp = new StringBuffer(skeleton.substring(0, monidx));
+//##                tmp.append("MM");
+//##                monidx += 3;
+//##                while (monidx < skeleton.length()) {
+//##                    if (skeleton.charAt(monidx) != 'M') {
+//##                        break;
+//##                    }
+//##                    monidx++;
+//##                }
+//##                tmp.append(skeleton.substring(monidx));
+//##                skeleton = tmp.toString();
+//##            }
+//#else
+            skeleton = skeleton.replaceAll("MMM+", "MM");
+//#endif
+        }
+        //if (!isComplete) complete();
+        current.set(skeleton, fp);
+        String best = getBestRaw(current, -1, _distanceInfo);
+        if (_distanceInfo.missingFieldMask == 0 && _distanceInfo.extraFieldMask == 0) {
+            // we have a good item. Adjust the field types
+            return adjustFieldTypes(best, current, false);
+        }
+        int neededFields = current.getFieldMask();
+        // otherwise break up by date and time.
+        String datePattern = getBestAppending(neededFields & DATE_MASK);
+        String timePattern = getBestAppending(neededFields & TIME_MASK);
+        
+        if (datePattern == null) return timePattern == null ? "" : timePattern;
+        if (timePattern == null) return datePattern;
+        return MessageFormat.format(getDateTimeFormat(), new Object[]{timePattern, datePattern});
+    }
+    
+    /**
+     * PatternInfo supplies output parameters for add(...). It is used because
+     * Java doesn't have real output parameters. It is treated like a struct (eg
+     * Point), so all fields are public.
+     * 
+     * @stable ICU 3.6
+     */
+    public static final class PatternInfo { // struct for return information
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int OK = 0;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int BASE_CONFLICT = 1;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int CONFLICT = 2;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public int status;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public String conflictingPattern;
+        
+        /**
+         * Simple constructor, since this is treated like a struct.
+         * @stable ICU 3.6
+         */
+        public PatternInfo() {
+        }
+    }
+    
+    /**
+     * Adds a pattern to the generator. If the pattern has the same skeleton as
+     * an existing pattern, and the override parameter is set, then the previous
+     * value is overriden. Otherwise, the previous value is retained. In either
+     * case, the conflicting information is returned in PatternInfo.
+     * <p>
+     * Note that single-field patterns (like "MMM") are automatically added, and
+     * don't need to be added explicitly!
+     * 
+     * @param override
+     *            when existing values are to be overridden use true, otherwise
+     *            use false.
+     * @stable ICU 3.6
+     */
+    public DateTimePatternGenerator addPattern(String pattern, boolean override, PatternInfo returnInfo) {
+        checkFrozen();
+        DateTimeMatcher matcher = new DateTimeMatcher().set(pattern, fp);
+        String basePattern = matcher.getBasePattern();
+        String previousPatternWithSameBase = (String)basePattern_pattern.get(basePattern);
+        if (previousPatternWithSameBase != null) {
+            returnInfo.status = PatternInfo.BASE_CONFLICT;
+            returnInfo.conflictingPattern = previousPatternWithSameBase;
+            if (!override) return this;
+        }
+        String previousValue = (String)skeleton2pattern.get(matcher);
+        if (previousValue != null) {
+            returnInfo.status = PatternInfo.CONFLICT;
+            returnInfo.conflictingPattern = previousValue;
+            if (!override) return this;
+        }
+        returnInfo.status = PatternInfo.OK;
+        returnInfo.conflictingPattern = "";
+        skeleton2pattern.put(matcher, pattern);
+        basePattern_pattern.put(basePattern, pattern);
+        return this;
+    }
+    
+    /**
+     * Utility to return a unique skeleton from a given pattern. For example,
+     * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd".
+     * 
+     * @param pattern
+     *            Input pattern, such as "dd/MMM"
+     * @return skeleton, such as "MMMdd"
+     * @stable ICU 3.6
+     */
+    public String getSkeleton(String pattern) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            current.set(pattern, fp);
+            return current.toString();
+        }
+    }
+    
+    /**
+     * Utility to return a unique base skeleton from a given pattern. This is
+     * the same as the skeleton, except that differences in length are minimized
+     * so as to only preserve the difference between string and numeric form. So
+     * for example, both "MMM-dd" and "d/MMM" produce the skeleton "MMMd"
+     * (notice the single d).
+     * 
+     * @param pattern
+     *            Input pattern, such as "dd/MMM"
+     * @return skeleton, such as "MMMdd"
+     * @stable ICU 3.6
+     */
+    public String getBaseSkeleton(String pattern) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            current.set(pattern, fp);
+            return current.getBasePattern();
+        }
+    }
+    
+    /**
+     * Return a list of all the skeletons (in canonical form) from this class,
+     * and the patterns that they map to.
+     * 
+     * @param result
+     *            an output Map in which to place the mapping from skeleton to
+     *            pattern. If you want to see the internal order being used,
+     *            supply a LinkedHashMap. If the input value is null, then a
+     *            LinkedHashMap is allocated.
+     *            <p>
+     *            <i>Issue: an alternate API would be to just return a list of
+     *            the skeletons, and then have a separate routine to get from
+     *            skeleton to pattern.</i>
+     * @return the input Map containing the values.
+     * @stable ICU 3.6
+     */
+    public Map getSkeletons(Map result) {
+        if (result == null) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            result = new HashMap();
+//#else
+//            result = new LinkedHashMap();
+//#endif
+        }
+        for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+            DateTimeMatcher item = (DateTimeMatcher) it.next();
+            String pattern = (String) skeleton2pattern.get(item);
+            if (CANONICAL_SET.contains(pattern)) continue;
+            result.put(item.toString(), pattern);
+        }
+        return result;
+    }
+    
+    /**
+     * Return a list of all the base skeletons (in canonical form) from this class
+     * @stable ICU 3.6
+     */
+    public Set getBaseSkeletons(Set result) {
+        if (result == null) result = new HashSet();
+        result.addAll(basePattern_pattern.keySet());
+        return result;
+    }
+    
+    /**
+     * Adjusts the field types (width and subtype) of a pattern to match what is
+     * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a
+     * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be
+     * "dd-MMMM hh:mm". This is used internally to get the best match for the
+     * input skeleton, but can also be used externally.
+     * 
+     * @param pattern
+     *            input pattern
+     * @param skeleton
+     * @return pattern adjusted to match the skeleton fields widths and
+     *         subtypes.
+     * @stable ICU 3.6
+     */
+    public String replaceFieldTypes(String pattern, String skeleton) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            return adjustFieldTypes(pattern, current.set(skeleton, fp), false);
+        }
+    }
+    
+    /**
+     * The date time format is a message format pattern used to compose date and
+     * time patterns. The default value is "{0} {1}", where {0} will be replaced
+     * by the date pattern and {1} will be replaced by the time pattern.
+     * <p>
+     * This is used when the input skeleton contains both date and time fields,
+     * but there is not a close match among the added patterns. For example,
+     * suppose that this object was created by adding "dd-MMM" and "hh:mm", and
+     * its datetimeFormat is the default "{0} {1}". Then if the input skeleton
+     * is "MMMdhmm", there is not an exact match, so the input skeleton is
+     * broken up into two components "MMMd" and "hmm". There are close matches
+     * for those two skeletons, so the result is put together with this pattern,
+     * resulting in "d-MMM h:mm".
+     * 
+     * @param dateTimeFormat
+     *            message format pattern, here {0} will be replaced by the date
+     *            pattern and {1} will be replaced by the time pattern.
+     * @stable ICU 3.6
+     */
+    public void setDateTimeFormat(String dateTimeFormat) {
+        checkFrozen();
+        this.dateTimeFormat = dateTimeFormat;
+    }
+    
+    /**
+     * Getter corresponding to setDateTimeFormat.
+     * 
+     * @return pattern
+     * @stable ICU 3.6
+     */
+    public String getDateTimeFormat() {
+        return dateTimeFormat;
+    }
+    
+    /**
+     * The decimal value is used in formatting fractions of seconds. If the
+     * skeleton contains fractional seconds, then this is used with the
+     * fractional seconds. For example, suppose that the input pattern is
+     * "hhmmssSSSS", and the best matching pattern internally is "H:mm:ss", and
+     * the decimal string is ",". Then the resulting pattern is modified to be
+     * "H:mm:ss,SSSS"
+     * 
+     * @param decimal
+     * @stable ICU 3.6
+     */
+    public void setDecimal(String decimal) {
+        checkFrozen();
+        this.decimal = decimal;
+    }
+    
+    /**
+     * Getter corresponding to setDecimal.
+     * @return string corresponding to the decimal point
+     * @stable ICU 3.6
+     */
+    public String getDecimal() {
+        return decimal;
+    }
+    
+    /**
+     * Redundant patterns are those which if removed, make no difference in the
+     * resulting getBestPattern values. This method returns a list of them, to
+     * help check the consistency of the patterns used to build this generator.
+     * 
+     * @param output
+     *            stores the redundant patterns that are removed. To get these
+     *            in internal order, supply a LinkedHashSet. If null, a
+     *            collection is allocated.
+     * @return the collection with added elements.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Collection getRedundants(Collection output) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            if (output == null) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                output = new HashSet();
+//#else
+//                output = new LinkedHashSet();
+//#endif
+            }
+            for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+                DateTimeMatcher cur = (DateTimeMatcher) it.next();
+                String pattern = (String) skeleton2pattern.get(cur);
+                if (CANONICAL_SET.contains(pattern)) continue;
+                skipMatcher = cur;
+                String trial = getBestPattern(cur.toString());
+                if (trial.equals(pattern)) {
+                    output.add(pattern);
+                }
+            }
+            if (false) { // ordered
+                DateTimePatternGenerator results = new DateTimePatternGenerator();
+                PatternInfo pinfo = new PatternInfo();
+                for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+                    DateTimeMatcher cur = (DateTimeMatcher) it.next();
+                    String pattern = (String) skeleton2pattern.get(cur);
+                    if (CANONICAL_SET.contains(pattern)) continue;
+                    //skipMatcher = current;
+                    String trial = results.getBestPattern(cur.toString());
+                    if (trial.equals(pattern)) {
+                        output.add(pattern);
+                    } else {
+                        results.addPattern(pattern, false, pinfo);
+                    }
+                }
+            }
+            return output;
+        }
+    }
+    
+    // Field numbers, used for AppendItem functions
+    
+    /** 
+     * @stable ICU 3.6
+     */
+    static final public int ERA = 0;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int YEAR = 1; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int QUARTER = 2; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int MONTH = 3;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEK_OF_YEAR = 4; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEK_OF_MONTH = 5; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEKDAY = 6; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY = 7;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY_OF_YEAR = 8; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY_OF_WEEK_IN_MONTH = 9; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAYPERIOD = 10;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int HOUR = 11; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int MINUTE = 12; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int SECOND = 13; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int FRACTIONAL_SECOND = 14;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int ZONE = 15; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int TYPE_LIMIT = 16;
+    
+    /**
+     * An AppendItem format is a pattern used to append a field if there is no
+     * good match. For example, suppose that the input skeleton is "GyyyyMMMd",
+     * and there is no matching pattern internally, but there is a pattern
+     * matching "yyyyMMMd", say "d-MM-yyyy". Then that pattern is used, plus the
+     * G. The way these two are conjoined is by using the AppendItemFormat for G
+     * (era). So if that value is, say "{0}, {1}" then the final resulting
+     * pattern is "d-MM-yyyy, G".
+     * <p>
+     * There are actually three available variables: {0} is the pattern so far,
+     * {1} is the element we are adding, and {2} is the name of the element.
+     * <p>
+     * This reflects the way that the CLDR data is organized.
+     * 
+     * @param field
+     *            such as ERA
+     * @param value
+     *            pattern, such as "{0}, {1}"
+     * @stable ICU 3.6
+     */
+    public void setAppendItemFormat(int field, String value) {
+        checkFrozen();
+        appendItemFormats[field] = value;
+    }
+    
+    /**
+     * Getter corresponding to setAppendItemFormats. Values below 0 or at or
+     * above TYPE_LIMIT are illegal arguments.
+     * 
+     * @param field
+     * @return append pattern for field
+     * @stable ICU 3.6
+     */
+    public String getAppendItemFormat(int field) {
+        return appendItemFormats[field];
+    }
+    
+    /**
+     * Sets the names of fields, eg "era" in English for ERA. These are only
+     * used if the corresponding AppendItemFormat is used, and if it contains a
+     * {2} variable.
+     * <p>
+     * This reflects the way that the CLDR data is organized.
+     * 
+     * @param field
+     * @param value
+     * @stable ICU 3.6
+     */
+    public void setAppendItemName(int field, String value) {
+        checkFrozen();
+        appendItemNames[field] = value;
+    }
+    
+    /**
+     * Getter corresponding to setAppendItemNames. Values below 0 or at or above
+     * TYPE_LIMIT are illegal arguments.
+     * 
+     * @param field
+     * @return name for field
+     * @stable ICU 3.6
+     */
+    public String getAppendItemName(int field) {
+        return appendItemNames[field];
+    }
+    
+    /**
+     * Determines whether a skeleton contains a single field
+     * 
+     * @param skeleton
+     * @return true or not
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean isSingleField(String skeleton) {
+        char first = skeleton.charAt(0);
+        for (int i = 1; i < skeleton.length(); ++i) {
+            if (skeleton.charAt(i) != first) return false;
+        }
+        return true;
+    }
+    
+     /**
+     * Add key to HashSet cldrAvailableFormatKeys.
+     * 
+     * @param key of the availableFormats in CLDR
+     * @stable ICU 3.6
+     */
+    private void setAvailableFormat(String key) {
+        checkFrozen();
+        cldrAvailableFormatKeys.add(key);
+    }
+    
+    /**
+     * This function checks the corresponding slot of CLDR_AVAIL_FORMAT_KEY[]
+     * has been added to DateTimePatternGenerator.
+     * The function is to avoid the duplicate availableFomats added to
+     * the pattern map from parent locales.
+     * 
+     * @param key of the availableFormatMask in CLDR
+     * @return TRUE if the corresponding slot of CLDR_AVAIL_FORMAT_KEY[]
+     * has been added to DateTimePatternGenerator.
+     * @stable ICU 3.6
+     */
+    private boolean isAvailableFormatSet(String key) {
+        return cldrAvailableFormatKeys.contains(key);
+    }
+
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public Object cloneAsThawed() {
+        DateTimePatternGenerator result = (DateTimePatternGenerator) (this.clone());
+        frozen = false;
+        return result;
+    }
+    
+    /**
+     * Boilerplate
+     * @stable ICU 3.6
+     */
+    public Object clone() {
+        try {
+            DateTimePatternGenerator result = (DateTimePatternGenerator) (super.clone());
+            result.skeleton2pattern = (TreeMap) skeleton2pattern.clone();
+            result.basePattern_pattern = (TreeMap) basePattern_pattern.clone();
+            result.appendItemFormats = (String[]) appendItemFormats.clone();
+            result.appendItemNames = (String[]) appendItemNames.clone();
+            result.current = new DateTimeMatcher();
+            result.fp = new FormatParser();
+            result._distanceInfo = new DistanceInfo();
+            
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalArgumentException("Internal Error");
+        }
+    }
+    
+    /**
+     * Utility class for FormatParser. Immutable class that is only used to mark
+     * the difference between a variable field and a literal string. Each
+     * variable field must consist of 1 to n variable characters, representing
+     * date format fields. For example, "VVVV" is valid while "V4" is not, nor
+     * is "44".
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static class VariableField {
+        private final String string;
+        private final int canonicalIndex;
+        
+        /**
+         * Create a variable field: equivalent to VariableField(string,false);
+         * @param string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public VariableField(String string) {
+            this(string, false);
+        }
+        /**
+         * Create a variable field
+         * @param string
+         * @param strict TODO
+         * @throws IllegalArgumentException if the variable field is not valid.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public VariableField(String string, boolean strict) {
+            canonicalIndex = DateTimePatternGenerator.getCanonicalIndex(string, strict);
+            if (canonicalIndex < 0) {
+                throw new IllegalArgumentException("Illegal datetime field:\t"
+                        + string);
+            }
+            this.string = string;
+        }
+        
+        /**
+         * Get the main type of this variable. These types are ERA, QUARTER,
+         * MONTH, DAY, WEEK_OF_YEAR, WEEK_OF_MONTH, WEEKDAY, DAY, DAYPERIOD
+         * (am/pm), HOUR, MINUTE, SECOND,FRACTIONAL_SECOND, ZONE. 
+         * @return main type.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public int getType() {
+            return types[canonicalIndex][1];
+        }
+        
+        /**
+         * Private method.
+         */
+        private int getCanonicalIndex() {
+            return canonicalIndex;
+        }
+
+        /**
+         * Get the string represented by this variable.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString() {
+            return string;
+        }
+    }
+    
+    /**
+     * This class provides mechanisms for parsing a SimpleDateFormat pattern
+     * or generating a new pattern, while handling the quoting. It represents
+     * the result of the parse as a list of items, where each item is either a
+     * literal string or a variable field. When parsing It can be used to find
+     * out which variable fields are in a date format, and in what order, such
+     * as for presentation in a UI as separate text entry fields. It can also be
+     * used to construct new SimpleDateFormats.
+     * <p>Example:
+     * <pre>
+    public boolean containsZone(String pattern) {
+        for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+     *  </pre>
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    static public class FormatParser {
+        private transient PatternTokenizer tokenizer = new PatternTokenizer()
+        .setSyntaxCharacters(new UnicodeSet("[a-zA-Z]"))
+        .setExtraQuotingCharacters(new UnicodeSet("[[[:script=Latn:][:script=Cyrl:]]&[[:L:][:M:]]]"))
+        //.setEscapeCharacters(new UnicodeSet("[^\\u0020-\\u007E]")) // WARNING: DateFormat doesn't accept \\uXXXX
+        .setUsingQuote(true);
+        private List items = new ArrayList();
+        
+        /**
+         * Construct an empty date format parser, to which strings and variables can be added with set(...).
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public FormatParser() {
+        }
+
+        /**
+         * Parses the string into a list of items.
+         * @param string
+         * @return this, for chaining
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        final public FormatParser set(String string) {
+            return set(string, false);
+        }
+        
+        /**
+         * Parses the string into a list of items, taking into account all of the quoting that may be going on.
+         * @param string
+         * @param strict If true, then only allows exactly those lengths specified by CLDR for variables. For example, "hh:mm aa" would throw an exception.
+         * @return this, for chaining
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public FormatParser set(String string, boolean strict) {
+            items.clear();
+            if (string.length() == 0) return this;
+            tokenizer.setPattern(string);
+            StringBuffer buffer = new StringBuffer();
+            StringBuffer variable = new StringBuffer();
+            while (true) {
+                buffer.setLength(0);
+                int status = tokenizer.next(buffer);
+                if (status == PatternTokenizer.DONE) break;
+                if (status == PatternTokenizer.SYNTAX) {
+                    if (variable.length() != 0 && buffer.charAt(0) != variable.charAt(0)) {
+                        addVariable(variable, false);
+                    }
+                    variable.append(buffer);
+                } else {
+                    addVariable(variable, false);
+                    items.add(buffer.toString());
+                }
+            }
+            addVariable(variable, false);
+            return this;
+        }
+        
+        private void addVariable(StringBuffer variable, boolean strict) {
+            if (variable.length() != 0) {
+                items.add(new VariableField(variable.toString(), strict));
+                variable.setLength(0);
+            }
+        }
+        
+//        /** Private method. Return a collection of fields. These will be a mixture of literal Strings and VariableFields. Any "a" variable field is removed.
+//         * @param output List to append the items to. If null, is allocated as an ArrayList.
+//         * @return list
+//         */
+//        private List getVariableFields(List output) {
+//            if (output == null) output = new ArrayList();
+//            main:
+//                for (Iterator it = items.iterator(); it.hasNext();) {
+//                    Object item = it.next();
+//                    if (item instanceof VariableField) {
+//                        String s = item.toString();
+//                        switch(s.charAt(0)) {
+//                        //case 'Q': continue main; // HACK
+//                        case 'a': continue main; // remove
+//                        }
+//                        output.add(item);
+//                    }
+//                }
+//            //System.out.println(output);
+//            return output;
+//        }
+        
+//        /**
+//         * Produce a string which concatenates all the variables. That is, it is the logically the same as the input with all literals removed.
+//         * @return a string which is a concatenation of all the variable fields
+//         * @internal
+//         * @deprecated This API is ICU internal only.
+//         */
+//        public String getVariableFieldString() {
+//            List list = getVariableFields(null);
+//            StringBuffer result = new StringBuffer();
+//            for (Iterator it = list.iterator(); it.hasNext();) {
+//                String item = it.next().toString();
+//                result.append(item);
+//            }
+//            return result.toString();
+//        }
+        
+        /**
+         * Returns modifiable list which is a mixture of Strings and VariableFields, in the order found during parsing. The strings represent literals, and have all quoting removed. Thus the string "dd 'de' MM" will parse into three items:
+         * <pre>
+         * VariableField: dd
+         * String: " de "
+         * VariableField: MM
+         * </pre>
+         * The list is modifiable, so you can add any strings or variables to it, or remove any items.
+         * @return modifiable list of items.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public List getItems() {
+            return items;
+        }
+        
+        /** Provide display form of formatted input. Each literal string is quoted if necessary.. That is, if the input was "hh':'mm", the result would be "hh:mm", since the ":" doesn't need quoting. See quoteLiteral().
+         * @return printable output string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString() {
+            return toString(0, items.size());
+        }
+        
+        /**
+         * Provide display form of a segment of the parsed input. Each literal string is minimally quoted. That is, if the input was "hh':'mm", the result would be "hh:mm", since the ":" doesn't need quoting. See quoteLiteral().
+         * @param start item to start from
+         * @param limit last item +1
+         * @return printable output string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString(int start, int limit) {
+            StringBuffer result = new StringBuffer();
+            for (int i = start; i < limit; ++i) {
+                Object item = items.get(i);
+                if (item instanceof String) {
+                    String itemString = (String) item;
+                    result.append(tokenizer.quoteLiteral(itemString));
+                } else {
+                    result.append(items.get(i).toString());
+                }
+            }
+            return result.toString();
+        }
+        
+        /**
+         * Returns true if it has a mixture of date and time variable fields: that is, at least one date variable and at least one time variable.
+         * @return true or false
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public boolean hasDateAndTimeFields() {
+            int foundMask = 0;
+            for (Iterator it = items.iterator(); it.hasNext();) {
+                Object item = it.next();
+                if (item instanceof VariableField) {
+                    int type = ((VariableField)item).getType();
+                    foundMask |= 1 << type;    
+                }
+            }
+            boolean isDate = (foundMask & DATE_MASK) != 0;
+            boolean isTime = (foundMask & TIME_MASK) != 0;
+            return isDate && isTime;
+        }
+        
+//        /**
+//         * Internal routine
+//         * @param value
+//         * @param result
+//         * @return list
+//         * @internal
+//         * @deprecated This API is ICU internal only.
+//         */
+//        public List getAutoPatterns(String value, List result) {
+//            if (result == null) result = new ArrayList();
+//            int fieldCount = 0;
+//            int minField = Integer.MAX_VALUE;
+//            int maxField = Integer.MIN_VALUE;
+//            for (Iterator it = items.iterator(); it.hasNext();) {
+//                Object item = it.next();
+//                if (item instanceof VariableField) {
+//                    try {
+//                        int type = ((VariableField)item).getType();
+//                        if (minField > type) minField = type;
+//                        if (maxField < type) maxField = type;
+//                        if (type == ZONE || type == DAYPERIOD || type == WEEKDAY) return result; // skip anything with zones                    
+//                        fieldCount++;
+//                    } catch (Exception e) {
+//                        return result; // if there are any funny fields, return
+//                    }
+//                }
+//            }
+//            if (fieldCount < 3) return result; // skip
+//            // trim from start
+//            // trim first field IF there are no letters around it
+//            // and it is either the min or the max field
+//            // first field is either 0 or 1
+//            for (int i = 0; i < items.size(); ++i) {
+//                Object item = items.get(i);
+//                if (item instanceof VariableField) {
+//                    int type = ((VariableField)item).getType();
+//                    if (type != minField && type != maxField) break;
+//                    
+//                    if (i > 0) {
+//                        Object previousItem = items.get(0);
+//                        if (alpha.containsSome(previousItem.toString())) break;
+//                    }
+//                    int start = i+1;
+//                    if (start < items.size()) {
+//                        Object nextItem = items.get(start);
+//                        if (nextItem instanceof String) {
+//                            if (alpha.containsSome(nextItem.toString())) break;
+//                            start++; // otherwise skip over string
+//                        }
+//                    }
+//                    result.add(toString(start, items.size()));
+//                    break;
+//                }
+//            }
+//            // now trim from end
+//            for (int i = items.size()-1; i >= 0; --i) {
+//                Object item = items.get(i);
+//                if (item instanceof VariableField) {
+//                    int type = ((VariableField)item).getType();
+//                    if (type != minField && type != maxField) break;
+//                    if (i < items.size() - 1) {
+//                        Object previousItem = items.get(items.size() - 1);
+//                        if (alpha.containsSome(previousItem.toString())) break;
+//                    }
+//                    int end = i-1;
+//                    if (end > 0) {
+//                        Object nextItem = items.get(end);
+//                        if (nextItem instanceof String) {
+//                            if (alpha.containsSome(nextItem.toString())) break;
+//                            end--; // otherwise skip over string
+//                        }
+//                    }
+//                    result.add(toString(0, end+1));
+//                    break;
+//                }
+//            }
+//            
+//            return result;
+//        }
+        
+//        private static UnicodeSet alpha = new UnicodeSet("[:alphabetic:]");
+        
+//        private int getType(Object item) {
+//            String s = item.toString();
+//            int canonicalIndex = getCanonicalIndex(s);
+//            if (canonicalIndex < 0) {
+//                throw new IllegalArgumentException("Illegal field:\t"
+//                        + s);
+//            }
+//            int type = types[canonicalIndex][1];
+//            return type;
+//        }
+        
+        /**
+         *  Each literal string is quoted as needed. That is, the ' quote marks will only be added if needed. The exact pattern of quoting is not guaranteed, thus " de la " could be quoted as " 'de la' " or as " 'de' 'la' ".
+         * @param string
+         * @return string with quoted literals
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public Object quoteLiteral(String string) {
+            return tokenizer.quoteLiteral(string);
+        }
+        
+    }
+    // ========= PRIVATES ============
+    
+    private TreeMap skeleton2pattern = new TreeMap(); // items are in priority order
+    private TreeMap basePattern_pattern = new TreeMap(); // items are in priority order
+    private String decimal = "?";
+    private String dateTimeFormat = "{0} {1}";
+    private String[] appendItemFormats = new String[TYPE_LIMIT];
+    private String[] appendItemNames = new String[TYPE_LIMIT];
+    {
+        for (int i = 0; i < TYPE_LIMIT; ++i) {
+            appendItemFormats[i] = "{0} \u251C{2}: {1}\u2524";
+            appendItemNames[i] = "F" + i;
+        }
+    }
+    
+    private transient DateTimeMatcher current = new DateTimeMatcher();
+    private transient FormatParser fp = new FormatParser();
+    private transient DistanceInfo _distanceInfo = new DistanceInfo();
+    //private transient boolean isComplete = false;
+    private transient DateTimeMatcher skipMatcher = null; // only used temporarily, for internal purposes
+    private transient boolean frozen = false;
+    
+    private transient boolean chineseMonthHack = false;
+    
+    private static final int FRACTIONAL_MASK = 1<<FRACTIONAL_SECOND;
+    private static final int SECOND_AND_FRACTIONAL_MASK = (1<<SECOND) | (1<<FRACTIONAL_SECOND);
+    
+    private void checkFrozen() {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify frozen object");
+        }
+    }
+    
+    /**
+     * We only get called here if we failed to find an exact skeleton. We have broken it into date + time, and look for the pieces.
+     * If we fail to find a complete skeleton, we compose in a loop until we have all the fields.
+     */
+    private String getBestAppending(int missingFields) {
+        String resultPattern = null;
+        if (missingFields != 0) {
+            resultPattern = getBestRaw(current, missingFields, _distanceInfo);
+            resultPattern = adjustFieldTypes(resultPattern, current, false);
+            
+            while (_distanceInfo.missingFieldMask != 0) { // precondition: EVERY single field must work!
+                
+                // special hack for SSS. If we are missing SSS, and we had ss but found it, replace the s field according to the 
+                // number separator
+                if ((_distanceInfo.missingFieldMask & SECOND_AND_FRACTIONAL_MASK) == FRACTIONAL_MASK
+                        && (missingFields & SECOND_AND_FRACTIONAL_MASK) == SECOND_AND_FRACTIONAL_MASK) {
+                    resultPattern = adjustFieldTypes(resultPattern, current, true);
+                    _distanceInfo.missingFieldMask &= ~FRACTIONAL_MASK; // remove bit
+                    continue;
+                }
+                
+                int startingMask = _distanceInfo.missingFieldMask;
+                String temp = getBestRaw(current, _distanceInfo.missingFieldMask, _distanceInfo);
+                temp = adjustFieldTypes(temp, current, false);
+                int foundMask = startingMask & ~_distanceInfo.missingFieldMask;
+                int topField = getTopBitNumber(foundMask);
+                resultPattern = MessageFormat.format(getAppendFormat(topField), new Object[]{resultPattern, temp, getAppendName(topField)});
+            }
+        }
+        return resultPattern;
+    }
+    
+    private String getAppendName(int foundMask) {
+        return "'" + appendItemNames[foundMask] + "'";
+    }
+    private String getAppendFormat(int foundMask) {
+        return appendItemFormats[foundMask];
+    }
+    
+//    /**
+//     * @param current2
+//     * @return
+//     */
+//    private String adjustSeconds(DateTimeMatcher current2) {
+//        // TODO Auto-generated method stub
+//        return null;
+//    }
+    
+    /**
+     * @param foundMask
+     * @return
+     */
+    private int getTopBitNumber(int foundMask) {
+        int i = 0;
+        while (foundMask != 0) {
+            foundMask >>>= 1;
+            ++i;
+        }
+        return i-1;
+    }
+    
+    /**
+     * 
+     */
+    private void complete() {
+        PatternInfo patternInfo = new PatternInfo();
+        // make sure that every valid field occurs once, with a "default" length
+        for (int i = 0; i < CANONICAL_ITEMS.length; ++i) {
+            //char c = (char)types[i][0];
+            addPattern(String.valueOf(CANONICAL_ITEMS[i]), false, patternInfo);
+        }
+        //isComplete = true;
+    }
+    {
+        complete();
+    }
+    
+    /**
+     * 
+     */
+    private String getBestRaw(DateTimeMatcher source, int includeMask, DistanceInfo missingFields) {
+//      if (SHOW_DISTANCE) System.out.println("Searching for: " + source.pattern 
+//      + ", mask: " + showMask(includeMask));
+        int bestDistance = Integer.MAX_VALUE;
+        String bestPattern = "";
+        DistanceInfo tempInfo = new DistanceInfo();
+        for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+            DateTimeMatcher trial = (DateTimeMatcher) it.next();
+            if (trial.equals(skipMatcher)) continue;
+            int distance = source.getDistance(trial, includeMask, tempInfo);
+//          if (SHOW_DISTANCE) System.out.println("\tDistance: " + trial.pattern + ":\t" 
+//          + distance + ",\tmissing fields: " + tempInfo);
+            if (distance < bestDistance) {
+                bestDistance = distance;
+                bestPattern = (String) skeleton2pattern.get(trial);
+                missingFields.setTo(tempInfo);
+                if (distance == 0) break;
+            }
+        }
+        return bestPattern;
+    }
+    
+    /**
+     * @param fixFractionalSeconds TODO
+     * 
+     */
+    private String adjustFieldTypes(String pattern, DateTimeMatcher inputRequest, boolean fixFractionalSeconds) {
+        fp.set(pattern);
+        StringBuffer newPattern = new StringBuffer();
+        for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof String) {
+                newPattern.append(fp.quoteLiteral((String)item));
+            } else {
+                final VariableField variableField = (VariableField) item;
+                String field = variableField.toString();
+//                int canonicalIndex = getCanonicalIndex(field, true);
+//                if (canonicalIndex < 0) {
+//                    continue; // don't adjust
+//                }
+//                int type = types[canonicalIndex][1];
+                int type = variableField.getType();
+                
+                if (fixFractionalSeconds && type == SECOND) {
+                    String newField = inputRequest.original[FRACTIONAL_SECOND];
+                    field = field + decimal + newField;
+                } else if (inputRequest.type[type] != 0) {
+                    String newField = inputRequest.original[type];
+                    // normally we just replace the field. However HOUR is special; we only change the length
+                    if (type != HOUR) {
+                        field = newField;
+                    } else if (field.length() != newField.length()){
+                        char c = field.charAt(0);
+                        field = "";
+                        for (int i = newField.length(); i > 0; --i) field += c;
+                    }
+                }
+                newPattern.append(field);
+            }
+        }
+        //if (SHOW_DISTANCE) System.out.println("\tRaw: " + pattern);
+        return newPattern.toString();
+    }
+    
+//  public static String repeat(String s, int count) {
+//  StringBuffer result = new StringBuffer();
+//  for (int i = 0; i < count; ++i) {
+//  result.append(s);
+//  }
+//  return result.toString();
+//  }
+    
+    /**
+     * internal routine
+     * @param pattern
+     * @return field value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String getFields(String pattern) {
+        fp.set(pattern);
+        StringBuffer newPattern = new StringBuffer();
+        for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof String) {
+                newPattern.append(fp.quoteLiteral((String)item));
+            } else {
+                newPattern.append("{" + getName(item.toString()) + "}");
+            }
+        }
+        return newPattern.toString();
+    }
+    
+    private static String showMask(int mask) {
+        String result = "";
+        for (int i = 0; i < TYPE_LIMIT; ++i) {
+            if ((mask & (1<<i)) == 0) continue;
+            if (result.length() != 0) result += " | ";
+            result += FIELD_NAME[i] + " ";
+        }
+        return result;
+    }
+    
+    static private String[] CLDR_FIELD_APPEND = {
+        "Era", "Year", "Quarter", "Month", "Week", "*", "Day-Of-Week", 
+        "Day", "*", "*", "*", 
+        "Hour", "Minute", "Second", "*", "Timezone"
+    };
+    
+    static private String[] CLDR_FIELD_NAME = {
+        "era", "year", "*", "month", "week", "*", "weekday", 
+        "day", "*", "*", "dayperiod", 
+        "hour", "minute", "second", "*", "zone"
+    };
+    
+    static private String[] FIELD_NAME = {
+        "Era", "Year", "Quarter", "Month", "Week_in_Year", "Week_in_Month", "Weekday", 
+        "Day", "Day_Of_Year", "Day_of_Week_in_Month", "Dayperiod", 
+        "Hour", "Minute", "Second", "Fractional_Second", "Zone"
+    };
+    
+    
+    static private String[] CANONICAL_ITEMS = {
+        "G", "y", "Q", "M", "w", "W", "e", 
+        "d", "D", "F", 
+        "H", "m", "s", "S", "v"
+    };
+    
+    static private Set CANONICAL_SET = new HashSet(Arrays.asList(CANONICAL_ITEMS));
+    private Set cldrAvailableFormatKeys = new HashSet(20);
+    
+    static final private int 
+    DATE_MASK = (1<<DAYPERIOD) - 1,
+    TIME_MASK = (1<<TYPE_LIMIT) - 1 - DATE_MASK;
+    
+    static final private int // numbers are chosen to express 'distance'
+    DELTA = 0x10,
+    NUMERIC = 0x100,
+    NONE = 0,
+    NARROW = -0x101,
+    SHORT = -0x102,
+    LONG = -0x103,
+    EXTRA_FIELD =   0x10000,
+    MISSING_FIELD = 0x1000;
+    
+    
+    static private String getName(String s) {
+        int i = getCanonicalIndex(s, true);
+        String name = FIELD_NAME[types[i][1]];
+        int subtype = types[i][2];
+        boolean string = subtype < 0;
+        if (string) subtype = -subtype;
+        if (subtype < 0) name += ":S";
+        else name += ":N";
+        return name;
+    }
+    
+    /**
+     * Get the canonical index, or return -1 if illegal.
+     * @param s
+     * @param strict TODO
+     * @return
+     */
+    static private int getCanonicalIndex(String s, boolean strict) {
+        int len = s.length();
+        if (len == 0) {
+            return -1;
+        }
+        int ch = s.charAt(0);
+        //      verify that all are the same character
+        for (int i = 1; i < len; ++i) {
+            if (s.charAt(i) != ch) {
+                return -1; 
+            }
+        }
+        int bestRow = -1;
+        for (int i = 0; i < types.length; ++i) {
+            int[] row = types[i];
+            if (row[0] != ch) continue;
+            bestRow = i;
+            if (row[3] > len) continue;
+            if (row[row.length-1] < len) continue;
+            return i;
+        }
+        return strict ? -1 : bestRow;
+    }
+    
+    static private int[][] types = {
+        // the order here makes a difference only when searching for single field.
+        // format is:
+        // pattern character, main type, weight, min length, weight
+        {'G', ERA, SHORT, 1, 3},
+        {'G', ERA, LONG, 4},
+        
+        {'y', YEAR, NUMERIC, 1, 20},
+        {'Y', YEAR, NUMERIC + DELTA, 1, 20},
+        {'u', YEAR, NUMERIC + 2*DELTA, 1, 20},
+        
+        {'Q', QUARTER, NUMERIC, 1, 2},
+        {'Q', QUARTER, SHORT, 3},
+        {'Q', QUARTER, LONG, 4},
+        
+        {'q', QUARTER, NUMERIC + DELTA, 1, 2},
+        {'q', QUARTER, SHORT + DELTA, 3},
+        {'q', QUARTER, LONG + DELTA, 4},
+        
+        {'M', MONTH, NUMERIC, 1, 2},
+        {'M', MONTH, SHORT, 3},
+        {'M', MONTH, LONG, 4},
+        {'M', MONTH, NARROW, 5},
+        {'L', MONTH, NUMERIC + DELTA, 1, 2},
+        {'L', MONTH, SHORT - DELTA, 3},
+        {'L', MONTH, LONG - DELTA, 4},
+        {'L', MONTH, NARROW - DELTA, 5},
+        
+        {'w', WEEK_OF_YEAR, NUMERIC, 1, 2},
+        {'W', WEEK_OF_MONTH, NUMERIC + DELTA, 1},
+        
+        {'e', WEEKDAY, NUMERIC + DELTA, 1, 2},
+        {'e', WEEKDAY, SHORT - DELTA, 3},
+        {'e', WEEKDAY, LONG - DELTA, 4},
+        {'e', WEEKDAY, NARROW - DELTA, 5},
+        {'E', WEEKDAY, SHORT, 1, 3},
+        {'E', WEEKDAY, LONG, 4},
+        {'E', WEEKDAY, NARROW, 5},
+        {'c', WEEKDAY, NUMERIC + 2*DELTA, 1, 2},
+        {'c', WEEKDAY, SHORT - 2*DELTA, 3},
+        {'c', WEEKDAY, LONG - 2*DELTA, 4},
+        {'c', WEEKDAY, NARROW - 2*DELTA, 5},
+        
+        {'d', DAY, NUMERIC, 1, 2},
+        {'D', DAY_OF_YEAR, NUMERIC + DELTA, 1, 3},
+        {'F', DAY_OF_WEEK_IN_MONTH, NUMERIC + 2*DELTA, 1},
+        {'g', DAY, NUMERIC + 3*DELTA, 1, 20}, // really internal use, so we don't care
+        
+        {'a', DAYPERIOD, SHORT, 1},
+        
+        {'H', HOUR, NUMERIC + 10*DELTA, 1, 2}, // 24 hour
+        {'k', HOUR, NUMERIC + 11*DELTA, 1, 2},
+        {'h', HOUR, NUMERIC, 1, 2}, // 12 hour
+        {'K', HOUR, NUMERIC + DELTA, 1, 2},
+        {'j', HOUR, NUMERIC + 20*DELTA, 1, 2},
+        
+        {'m', MINUTE, NUMERIC, 1, 2},
+        
+        {'s', SECOND, NUMERIC, 1, 2},
+        {'S', FRACTIONAL_SECOND, NUMERIC + DELTA, 1, 1000},
+        {'A', SECOND, NUMERIC + 2*DELTA, 1, 1000},
+        
+        {'v', ZONE, SHORT - 2*DELTA, 1},
+        {'v', ZONE, LONG - 2*DELTA, 4},
+        {'z', ZONE, SHORT, 1, 3},
+        {'z', ZONE, LONG, 4},
+        {'Z', ZONE, SHORT - DELTA, 1, 3},
+        {'Z', ZONE, LONG - DELTA, 4},
+        {'V', ZONE, SHORT - DELTA, 1, 3},
+        {'V', ZONE, LONG - DELTA, 4},
+    };
+    
+    private static class DateTimeMatcher implements Comparable {
+        //private String pattern = null;
+        private int[] type = new int[TYPE_LIMIT];
+        private String[] original = new String[TYPE_LIMIT];
+        private String[] baseOriginal = new String[TYPE_LIMIT];
+        
+        // just for testing; fix to make multi-threaded later
+        // private static FormatParser fp = new FormatParser();
+        
+        public String toString() {
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                if (original[i].length() != 0) result.append(original[i]);
+            }
+            return result.toString();
+        }
+        
+        String getBasePattern() {
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                if (baseOriginal[i].length() != 0) result.append(baseOriginal[i]);
+            }
+            return result.toString();
+        }
+        
+        DateTimeMatcher set(String pattern, FormatParser fp) {
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                type[i] = NONE;
+                original[i] = "";
+                baseOriginal[i] = "";
+            }
+            fp.set(pattern);
+            for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+                Object obj = it.next();
+                if (!(obj instanceof VariableField)) {
+                    continue;
+                }
+                VariableField item = (VariableField)obj;
+                String field = item.toString();
+                if (field.charAt(0) == 'a') continue; // skip day period, special case
+                int canonicalIndex = item.getCanonicalIndex();
+//                if (canonicalIndex < 0) {
+//                    throw new IllegalArgumentException("Illegal field:\t"
+//                            + field + "\t in " + pattern);
+//                }
+                int[] row = types[canonicalIndex];
+                int typeValue = row[1];
+                if (original[typeValue].length() != 0) {
+                    throw new IllegalArgumentException("Conflicting fields:\t"
+                            + original[typeValue] + ", " + field + "\t in " + pattern);
+                }
+                original[typeValue] = field;
+                char repeatChar = (char)row[0];
+                int repeatCount = row[3];
+                if (repeatCount > 3) repeatCount = 3; // hack to discard differences
+                if ("GEzvQ".indexOf(repeatChar) >= 0) repeatCount = 1;
+                baseOriginal[typeValue] = Utility.repeat(String.valueOf(repeatChar),repeatCount);
+                int subTypeValue = row[2];
+                if (subTypeValue > 0) subTypeValue += field.length();
+                type[typeValue] = subTypeValue;
+            }
+            return this;
+        }
+        
+        /**
+         * 
+         */
+        int getFieldMask() {
+            int result = 0;
+            for (int i = 0; i < type.length; ++i) {
+                if (type[i] != 0) result |= (1<<i);
+            }
+            return result;
+        }
+        
+        /**
+         * 
+         */
+        void extractFrom(DateTimeMatcher source, int fieldMask) {
+            for (int i = 0; i < type.length; ++i) {
+                if ((fieldMask & (1<<i)) != 0) {
+                    type[i] = source.type[i];
+                    original[i] = source.original[i];
+                } else {
+                    type[i] = NONE;
+                    original[i] = "";
+                }
+            }
+        }
+        
+        int getDistance(DateTimeMatcher other, int includeMask, DistanceInfo distanceInfo) {
+            int result = 0;
+            distanceInfo.clear();
+            for (int i = 0; i < type.length; ++i) {
+                int myType = (includeMask & (1<<i)) == 0 ? 0 : type[i];
+                int otherType = other.type[i];
+                if (myType == otherType) continue; // identical (maybe both zero) add 0
+                if (myType == 0) { // and other is not
+                    result += EXTRA_FIELD;
+                    distanceInfo.addExtra(i);
+                } else if (otherType == 0) { // and mine is not
+                    result += MISSING_FIELD;
+                    distanceInfo.addMissing(i);
+                } else {
+                    result += Math.abs(myType - otherType); // square of mismatch
+                }
+            }
+            return result;
+        }
+        
+        public int compareTo(Object o) {
+            DateTimeMatcher that = (DateTimeMatcher) o;
+            for (int i = 0; i < original.length; ++i) {
+                int comp = original[i].compareTo(that.original[i]);
+                if (comp != 0) return -comp;
+            }
+            return 0;
+        }       
+        
+        public boolean equals(Object other) {
+            if (other == null) return false;
+            DateTimeMatcher that = (DateTimeMatcher) other;
+            for (int i = 0; i < original.length; ++i) {
+                if (!original[i].equals(that.original[i])) return false;
+            }
+            return true;
+        }       
+        public int hashCode() {
+            int result = 0;
+            for (int i = 0; i < original.length; ++i) {
+                result ^= original[i].hashCode();
+            }
+            return result;
+        }       
+    }
+    
+    private static class DistanceInfo {
+        int missingFieldMask;
+        int extraFieldMask;
+        void clear() {
+            missingFieldMask = extraFieldMask = 0;
+        }
+        /**
+         * 
+         */
+        void setTo(DistanceInfo other) {
+            missingFieldMask = other.missingFieldMask;
+            extraFieldMask = other.extraFieldMask;
+        }
+        void addMissing(int field) {
+            missingFieldMask |= (1<<field);
+        }
+        void addExtra(int field) {
+            extraFieldMask |= (1<<field);
+        }
+        public String toString() {
+            return "missingFieldMask: " + DateTimePatternGenerator.showMask(missingFieldMask)
+            + ", extraFieldMask: " + DateTimePatternGenerator.showMask(extraFieldMask);
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/text/DecimalFormat.java b/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..09af677
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,5039 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.math.BigInteger;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+//#if defined(FOUNDATION10)
+//#else
+import java.io.ObjectOutputStream;
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.Format;
+import java.util.ArrayList;
+//#endif
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+
+//This is an enhanced version of DecimalFormat that is based on the standard version in the JDK. 
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * {@link NumberFormat} that formats decimal numbers. It has a variety of
+ * features designed to make it possible to parse and format numbers in any
+ * locale, including support for Western, Arabic, or Indic digits.  It also
+ * supports different flavors of numbers, including integers ("123"),
+ * fixed-point numbers ("123.4"), scientific notation ("1.23E4"), percentages
+ * ("12%"), and currency amounts ("$123").  All of these flavors can be easily
+ * localized.
+ *
+ * 
+ * <p>To obtain a {@link NumberFormat} for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as {@link NumberFormat#getInstance}. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * {@link NumberFormat} factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }</pre></blockquote>
+ *
+ * <p><strong>Example Usage</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat format;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             format = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             format = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             format = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume format is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) format).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (Exception e) {}
+ *         try {
+ *             System.out.println(" -> " + format.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }</pre></blockquote>
+ *
+ * <h4>Patterns</h4>
+ *
+ * <p>A <code>DecimalFormat</code> consists of a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * {@link #applyPattern}, or indirectly using other API methods which
+ * manipulate aspects of the pattern, such as the minimum number of integer
+ * digits.  The symbols are stored in a {@link DecimalFormatSymbols}
+ * object.  When using the {@link NumberFormat} factory methods, the
+ * pattern and symbols are read from ICU's locale data.
+ * 
+ * <h4>Special Pattern Characters</h4>
+ *
+ * <p>Many characters in a pattern are taken literally; they are matched during
+ * parsing and output unchanged during formatting.  Special characters, on the
+ * other hand, stand for other characters, strings, or classes of characters.
+ * For example, the '#' character is replaced by a localized digit.  Often the
+ * replacement character is the same as the pattern character; in the U.S. locale,
+ * the ',' grouping character is replaced by ','.  However, the replacement is
+ * still happening, and if the symbols are modified, the grouping character
+ * changes.  Some special characters affect the behavior of the formatter by
+ * their presence; for example, if the percent character is seen, then the
+ * value is multiplied by 100 before being displayed.
+ *
+ * <p>To insert a special character in a pattern as a literal, that is, without
+ * any special meaning, the character must be quoted.  There are some exceptions to
+ * this which are noted below.
+ *
+ * <p>The characters listed here are used in non-localized patterns.  Localized
+ * patterns use the corresponding characters taken from this formatter's
+ * {@link DecimalFormatSymbols} object instead, and these characters lose
+ * their special status.  Two exceptions are the currency sign and quote, which
+ * are not localized.
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing symbol,
+ *  location, localized, and meaning.">
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Symbol
+ *     <th align=left>Location
+ *     <th align=left>Localized?
+ *     <th align=left>Meaning
+ *   <tr valign=top>
+ *     <td><code>0</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>1-9</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>'1' through '9' indicate rounding. 
+ *         
+ *   <tr valign=top>
+ *     <td><code>@</code>
+ *     <td>Number
+ *     <td>No
+ *     <td>Significant digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>#</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit, zero shows as absent
+ *   <tr valign=top>
+ *     <td><code>.</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Decimal separator or monetary decimal separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>-</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Minus sign
+ *   <tr valign=top>
+ *     <td><code>,</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Grouping separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>E</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Separates mantissa and exponent in scientific notation.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top>
+ *     <td><code>+</code>
+ *     <td>Exponent
+ *     <td>Yes
+ *     <td>Prefix positive exponents with localized plus sign.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>;</code>
+ *     <td>Subpattern boundary
+ *     <td>Yes
+ *     <td>Separates positive and negative subpatterns
+ *   <tr valign=top>
+ *     <td><code>%</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 100 and show as percentage
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>&#92;u2030</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 1000 and show as per mille
+ *   <tr valign=top>
+ *     <td><code>&#164;</code> (<code>&#92;u00A4</code>)
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Currency sign, replaced by currency symbol.  If
+ *         doubled, replaced by international currency symbol.
+ *         If present in a pattern, the monetary decimal separator
+ *         is used instead of the decimal separator.
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>'</code>
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Used to quote special characters in a prefix or suffix,
+ *         for example, <code>"'#'#"</code> formats 123 to
+ *         <code>"#123"</code>.  To create a single quote
+ *         itself, use two in a row: <code>"# o''clock"</code>.
+ *   <tr valign=top>
+ *     <td><code>*</code>
+ *     <td>Prefix or suffix boundary
+ *     <td>Yes
+ *     <td>Pad escape, precedes pad character
+ * </table>
+ * </blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, a numeric part, and a suffix.  If there is no explicit negative
+ * subpattern, the negative subpattern is the localized minus sign prefixed to the
+ * positive subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are ignored in the negative subpattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for {@link #parse} to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The <em>grouping separator</em> is a character that separates clusters of
+ * integer digits to make large numbers more legible.  It commonly used for
+ * thousands, but in some locales it separates ten-thousands.  The <em>grouping
+ * size</em> is the number of digits between the grouping separators, such as 3
+ * for "100,000,000" or 4 for "1 0000 0000". There are actually two different
+ * grouping sizes: One used for the least significant integer digits, the
+ * <em>primary grouping size</em>, and one used for all others, the
+ * <em>secondary grouping size</em>.  In most locales these are the same, but
+ * sometimes they are different. For example, if the primary grouping interval
+ * is 3, and the secondary is 2, then this corresponds to the pattern
+ * "#,##,##0", and the number 123456789 is formatted as "12,34,56,789".  If a
+ * pattern contains multiple grouping separators, the interval between the last
+ * one and the end of the integer defines the primary grouping size, and the
+ * interval between the last two defines the secondary grouping size. All others
+ * are ignored, so "#,##,###,####" == "###,###,####" == "##,#,###,####".
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an {@link IllegalArgumentException}
+ * with a message that describes the problem.
+ *
+ * <h4>Pattern BNF</h4>
+ *
+ * <pre>
+ * pattern    := subpattern (';' subpattern)?
+ * subpattern := prefix? number exponent? suffix?
+ * number     := (integer ('.' fraction)?) | sigDigits
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * sigDigits  := '#'* '@' '@'* '#'*
+ * exponent   := 'E' '+'? '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   X?       0 or 1 instances of X
+ *   X|Y      either X or Y
+ *   C..D     any character from C up to D, inclusive
+ *   S-T      characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ *
+ * <ul><li>The grouping separator ',' can occur inside the integer and
+ * sigDigits elements, between any two pattern characters of that
+ * element, as long as the integer or sigDigits element is not
+ * followed by the exponent element.
+ *
+ * <li>Two grouping intervals are recognized: That between the
+ *     decimal point and the first grouping symbol, and that
+ *     between the first and second grouping symbols. These
+ *     intervals are identical in most locales, but in some
+ *     locales they differ. For example, the pattern
+ *     &quot;#,##,###&quot; formats the number 123456789 as
+ *     &quot;12,34,56,789&quot;.</li>
+ * 
+ * <li>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <h4>Parsing</h4>
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by {@link UCharacter#digit}.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * {@link DecimalFormatSymbols} object.  During formatting, the
+ * {@link DecimalFormatSymbols}-based digits are output.
+ *
+ * <p>During parsing, grouping separators are ignored.
+ *
+ * <p>If {@link #parse(String, ParsePosition)} fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method {@link #parse(String)}
+ * indicates parse failure by throwing a {@link java.text.ParseException}.
+ *
+ * <h4>Formatting</h4>
+ *
+ * <p>Formatting is guided by several parameters, all of which can be
+ * specified either using a pattern or using the API.  The following
+ * description applies to formats that do not use <a href="#sci">scientific
+ * notation</a> or <a href="#sigdig">significant digits</a>.
+ *
+ * <ul><li>If the number of actual integer digits exceeds the
+ * <em>maximum integer digits</em>, then only the least significant
+ * digits are shown.  For example, 1997 is formatted as "97" if the
+ * maximum integer digits is set to 2.
+ *
+ * <li>If the number of actual integer digits is less than the
+ * <em>minimum integer digits</em>, then leading zeros are added.  For
+ * example, 1997 is formatted as "01997" if the minimum integer digits
+ * is set to 5.
+ *
+ * <li>If the number of actual fraction digits exceeds the <em>maximum
+ * fraction digits</em>, then half-even rounding it performed to the
+ * maximum fraction digits.  For example, 0.125 is formatted as "0.12"
+ * if the maximum fraction digits is 2.  This behavior can be changed
+ * by specifying a rounding increment and a rounding mode.
+ *
+ * <li>If the number of actual fraction digits is less than the
+ * <em>minimum fraction digits</em>, then trailing zeros are added.
+ * For example, 0.125 is formatted as "0.1250" if the mimimum fraction
+ * digits is set to 4.
+ *
+ * <li>Trailing fractional zeros are not displayed if they occur
+ * <em>j</em> positions after the decimal, where <em>j</em> is less
+ * than the maximum fraction digits. For example, 0.10004 is
+ * formatted as "0.1" if the maximum fraction digits is four or less.
+ * </ul>
+ * 
+ * <p><strong>Special Values</strong>
+ *
+ * <p><code>NaN</code> is represented as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * {@link DecimalFormatSymbols} object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is represented as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * {@link DecimalFormatSymbols} object.
+ *
+ * <a name="sci"><h4>Scientific Notation</h4></a>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10<sup>3</sup>. The
+ * mantissa is typically in the half-open interval [1.0, 10.0) or sometimes [0.0, 1.0),
+ * but it need not be.  <code>DecimalFormat</code> supports arbitrary mantissas.
+ * <code>DecimalFormat</code> can be instructed to use scientific
+ * notation through the API or through the pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>When using scientific notation, the formatter controls the
+ * digit counts using significant digits logic.  The maximum number of
+ * significant digits limits the total number of integer and fraction
+ * digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ * See the section on significant digits for more details.
+ *
+ * <li>The number of significant digits shown is determined as
+ * follows: If areSignificantDigitsUsed() returns false, then the
+ * minimum number of significant digits shown is one, and the maximum
+ * number of significant digits shown is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is
+ * unaffected by the maximum integer digits.  If this sum is zero,
+ * then all significant digits are shown.  If
+ * areSignificantDigitsUsed() returns true, then the significant digit
+ * counts are specified by getMinimumSignificantDigits() and
+ * getMaximumSignificantDigits().  In this case, the number of
+ * integer digits is fixed at one, and there is no exponent grouping.
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <a name="sigdig"><h4>
+ * Significant Digits</h4></a>
+ *
+ * <code>DecimalFormat</code> has two ways of controlling how many
+ * digits are shows: (a) significant digits counts, or (b) integer and
+ * fraction digit counts.  Integer and fraction digit counts are
+ * described above.  When a formatter is using significant digits
+ * counts, the number of integer and fraction digits is not specified
+ * directly, and the formatter settings for these counts are ignored.
+ * Instead, the formatter uses however many integer and fraction
+ * digits are required to display the specified number of significant
+ * digits.  Examples:
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0>
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Pattern
+ *     <th align=left>Minimum significant digits
+ *     <th align=left>Maximum significant digits
+ *     <th align=left>Number
+ *     <th align=left>Output of format()
+ *   <tr valign=top>
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>12345
+ *     <td><code>12300</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>0.12345
+ *     <td><code>0.123</code>
+ *   <tr valign=top>
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>3.14159
+ *     <td><code>3.142</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>1.23004
+ *     <td><code>1.23</code>
+ * </table>
+ * </blockquote>
+ *
+ * <ul>
+ * <li>Significant digit counts may be expressed using patterns that
+ * specify a minimum and maximum number of significant digits.  These
+ * are indicated by the <code>'@'</code> and <code>'#'</code>
+ * characters.  The minimum number of significant digits is the number
+ * of <code>'@'</code> characters.  The maximum number of significant
+ * digits is the number of <code>'@'</code> characters plus the number
+ * of <code>'#'</code> characters following on the right.  For
+ * example, the pattern <code>"@@@"</code> indicates exactly 3
+ * significant digits.  The pattern <code>"@##"</code> indicates from
+ * 1 to 3 significant digits.  Trailing zero digits to the right of
+ * the decimal separator are suppressed after the minimum number of
+ * significant digits have been shown.  For example, the pattern
+ * <code>"@##"</code> formats the number 0.1203 as
+ * <code>"0.12"</code>.
+ *
+ * <li>If a pattern uses significant digits, it may not contain a
+ * decimal separator, nor the <code>'0'</code> pattern character.
+ * Patterns such as <code>"@00"</code> or <code>"@.###"</code> are
+ * disallowed.
+ *
+ * <li>Any number of <code>'#'</code> characters may be prepended to
+ * the left of the leftmost <code>'@'</code> character.  These have no
+ * effect on the minimum and maximum significant digits counts, but
+ * may be used to position grouping separators.  For example,
+ * <code>"#,#@#"</code> indicates a minimum of one significant digits,
+ * a maximum of two significant digits, and a grouping size of three.
+ *
+ * <li>In order to enable significant digits formatting, use a pattern
+ * containing the <code>'@'</code> pattern character.  Alternatively,
+ * call {@link #setSignificantDigitsUsed setSignificantDigitsUsed(true)}.
+ *
+ * <li>In order to disable significant digits formatting, use a
+ * pattern that does not contain the <code>'@'</code> pattern
+ * character. Alternatively, call {@link #setSignificantDigitsUsed
+ * setSignificantDigitsUsed(false)}.
+ *
+ * <li>The number of significant digits has no effect on parsing.
+ *
+ * <li>Significant digits may be used together with exponential notation. Such
+ * patterns are equivalent to a normal exponential pattern with a minimum and
+ * maximum integer digit count of one, a minimum fraction digit count of
+ * <code>getMinimumSignificantDigits() - 1</code>, and a maximum fraction digit
+ * count of <code>getMaximumSignificantDigits() - 1</code>. For example, the
+ * pattern <code>"@@###E0"</code> is equivalent to <code>"0.0###E0"</code>.
+ *
+ * <li>If signficant digits are in use, then the integer and fraction
+ * digit counts, as set via the API, are ignored.  If significant
+ * digits are not in use, then the signficant digit counts, as set via
+ * the API, are ignored.
+ *
+ * </ul>
+ * 
+ * <h4>
+ * Padding</h4>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * {@link #format} to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using {@link DecimalFormatSymbols#setPadEscape}.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>The width is counted in 16-bit code units (Java <code>char</code>s).
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "* ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, {@link #applyPattern} throws an {@link
+ * IllegalArgumentException}.  If there is no prefix, before the
+ * prefix and after the prefix are equivalent, likewise for the suffix.
+ *
+ * <li>When specified in a pattern, the 16-bit <code>char</code> immediately
+ * following the pad escape is the pad character. This may be any character,
+ * including a special pattern character. That is, the pad escape
+ * <em>escapes</em> the following character. If there is no character after
+ * the pad escape, then the pattern is illegal.
+ *
+ * </ul>
+ *
+ * <p>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * {@link com.ibm.icu.math.BigDecimal} documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * {@link com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN}.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * <p><code>DecimalFormat</code> objects are not synchronized.  Multiple
+ * threads should not access one formatter concurrently.
+ *
+ * @see          java.text.Format
+ * @see          NumberFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class DecimalFormat extends NumberFormat {
+
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat() {
+        // [NEW]
+        ULocale def = ULocale.getDefault();
+        String pattern = getPattern(def, 0);
+        // Always applyPattern after the symbols are set
+        this.symbols = new DecimalFormatSymbols(def);
+        setCurrency(Currency.getInstance(def));
+        applyPattern(pattern, false);
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern) {
+        // Always applyPattern after the symbols are set
+        ULocale def = ULocale.getDefault();
+        this.symbols = new DecimalFormatSymbols(def);
+        setCurrency(Currency.getInstance(def));
+        applyPattern( pattern, false );
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols) {
+        // Always applyPattern after the symbols are set
+        this.symbols = (DecimalFormatSymbols) symbols.clone();
+        setCurrencyForSymbols();
+        applyPattern( pattern, false );
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+    
+    // [Spark/CDL] The actual method to format number. If boolean value
+    // parseAttr == true, then attribute information will be recorded.
+    private StringBuffer format(double number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) 
+    {
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+
+        if (Double.isNaN(number))
+        {
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            result.append(symbols.getNaN());
+            // [Spark/CDL] Add attribute for NaN here.
+            // result.append(symbols.getNaN());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length()
+                        - symbols.getNaN().length(), result.length());
+            }
+//#endif
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            addPadding(result, fieldPosition, 0, 0);
+            return result;
+        }
+
+        // Do this BEFORE checking to see if value is infinite or negative!
+        if (multiplier != 1) number *= multiplier;
+
+        /* Detecting whether a double is negative is easy with the exception of
+         * the value -0.0.  This is a double which has a zero mantissa (and
+         * exponent), but a negative sign bit.  It is semantically distinct from
+         * a zero with a positive sign bit, and this distinction is important
+         * to certain kinds of computations.  However, it's a little tricky to
+         * detect, since (-0.0 == 0.0) and !(-0.0 < 0.0).  How then, you may
+         * ask, does it behave distinctly from +0.0?  Well, 1/(-0.0) ==
+         * -Infinity.  Proper detection of -0.0 is needed to deal with the
+         * issues raised by bugs 4106658, 4106667, and 4147706.  Liu 7/6/98.
+         */
+        boolean isNegative = (number < 0.0) || (number == 0.0 && 1/number < 0.0);
+        if (isNegative) number = -number;
+
+        // Apply rounding after multiplier
+        if (roundingDouble > 0.0) {
+            // number = roundingDouble
+            //  * round(number / roundingDouble, roundingMode, isNegative);
+            double newNumber = round(number, roundingDouble, roundingDoubleReciprocal, roundingMode, isNegative);
+            if (newNumber == 0.0 && number != newNumber) isNegative = false; // if we touched it, then make zero be zero.
+            number = newNumber;
+        }
+
+        if (Double.isInfinite(number))
+        {
+            int prefixLen = appendAffix(result, isNegative, true, parseAttr);
+
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            // [Spark/CDL] Add attribute for infinity here.
+            result.append(symbols.getInfinity());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length()
+                        - symbols.getInfinity().length(), result.length());
+            }
+//#endif
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            int suffixLen = appendAffix(result, isNegative, false, parseAttr);
+
+            addPadding(result, fieldPosition, prefixLen, suffixLen);
+            return result;
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(result, fieldPosition, isNegative, false,
+                    parseAttr);
+        }
+    }
+    
+    // [NEW]
+    /**
+     * Round a double value to the nearest multiple of the given
+     * rounding increment, according to the given mode.  This is
+     * equivalent to rounding value/roundingInc to the nearest
+     * integer, according to the given mode, and returning that
+     * integer * roundingInc.
+     * Note this is changed from the version in 2.4, since division of doubles
+     * have inaccuracies. jitterbug 1871.
+     * @param number the absolute value of the number to be rounded
+     * @param roundingInc the rounding increment
+     * @param roundingIncReciprocal if non-zero, is the 
+     * @param mode a BigDecimal rounding mode
+     * @param isNegative true if the number to be rounded is negative
+     * @return the absolute value of the rounded result
+     */
+    private static double round(double number, double roundingInc, 
+            double roundingIncReciprocal, int mode, boolean isNegative) {
+        
+        double div = roundingIncReciprocal == 0.0 
+            ? number / roundingInc
+            : number * roundingIncReciprocal;
+        
+        // do the absolute cases first
+        
+        switch (mode) {
+        case BigDecimal.ROUND_CEILING:
+            div = (isNegative ? Math.floor(div + epsilon) : Math.ceil(div - epsilon));
+            break;
+        case BigDecimal.ROUND_FLOOR:
+            div = (isNegative ? Math.ceil(div - epsilon) : Math.floor(div + epsilon));
+            break;
+        case BigDecimal.ROUND_DOWN:
+            div = (Math.floor(div + epsilon));
+            break;
+        case BigDecimal.ROUND_UP:
+            div = (Math.ceil(div - epsilon));
+            break;
+        case BigDecimal.ROUND_UNNECESSARY:
+            if (div != Math.floor(div)) {
+                throw new ArithmeticException("Rounding necessary");
+            }
+            return number;
+        default:
+            
+            // Handle complex cases, where the choice depends on the closer value.
+            
+            // We figure out the distances to the two possible values, ceiling and floor.
+            // We then go for the diff that is smaller.
+            // Only if they are equal does the mode matter.
+
+            double ceil = Math.ceil(div);
+            double ceildiff = ceil - div; // (ceil * roundingInc) - number;
+            double floor = Math.floor(div);
+            double floordiff = div - floor; // number - (floor * roundingInc);
+            
+            // Note that the diff values were those mapped back to the "normal" space
+            // by using the roundingInc. I don't have access to the original author of the code
+            // but suspect that that was to produce better result in edge cases because of machine
+            // precision, rather than simply using the difference between, say, ceil and div.
+            // However, it didn't work in all cases. Am trying instead using an epsilon value.
+            
+            switch (mode) {
+            case BigDecimal.ROUND_HALF_EVEN:
+                // We should be able to just return Math.rint(a), but this
+                // doesn't work in some VMs.
+                // if one is smaller than the other, take the corresponding side
+                if (floordiff + epsilon < ceildiff) {
+                        div = floor;
+                    } else if (ceildiff + epsilon < floordiff) {
+                        div = ceil;
+                } else { // they are equal, so we want to round to whichever is even
+                    double testFloor = floor / 2;
+                    div = (testFloor == Math.floor(testFloor)) ? floor : ceil;
+                }
+                break;
+            case BigDecimal.ROUND_HALF_DOWN:
+                div = ((floordiff <= ceildiff + epsilon) ? floor : ceil);
+                break;
+            case BigDecimal.ROUND_HALF_UP:
+                div = ((ceildiff <= floordiff + epsilon) ? ceil : floor);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid rounding mode: " + mode);
+            }
+        }
+        number = roundingIncReciprocal == 0.0
+            ? div * roundingInc
+            : div / roundingIncReciprocal;
+        return number;
+    }
+    private static double epsilon = 0.00000000001;
+
+    /**
+     * @stable ICU 2.0
+     */
+    // [Spark/CDL] Delegate to format_long_StringBuffer_FieldPosition_boolean
+    public StringBuffer format(long number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+
+    private StringBuffer format(long number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) 
+    {
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        // [NEW]
+        if (roundingIncrementICU != null) {
+            return format(BigDecimal.valueOf(number), result, fieldPosition);
+        }
+
+        boolean isNegative = (number < 0);
+        if (isNegative) number = -number;
+
+        // In general, long values always represent real finite numbers, so
+        // we don't have to check for +/- Infinity or NaN.  However, there
+        // is one case we have to be careful of:  The multiplier can push
+        // a number near MIN_VALUE or MAX_VALUE outside the legal range.  We
+        // check for this before multiplying, and if it happens we use BigInteger
+        // instead.
+        // [NEW]
+        if (multiplier != 1) {
+            boolean tooBig = false;
+            if (number < 0) { // This can only happen if number == Long.MIN_VALUE
+                long cutoff = Long.MIN_VALUE / multiplier;
+                tooBig = (number <= cutoff); // number == cutoff can only happen if multiplier == -1
+            } else {
+                long cutoff = Long.MAX_VALUE / multiplier;
+                tooBig = (number > cutoff);
+            }
+            if (tooBig) {
+                // [Spark/CDL] Use
+                // format_BigInteger_StringBuffer_FieldPosition_boolean instead
+                // parseAttr is used to judge whether to synthesize attributes.
+                return format(
+                        BigInteger.valueOf(isNegative ? -number : number),
+                        result, fieldPosition, parseAttr);
+            }
+        }
+
+        number *= multiplier;
+        synchronized(digitList) {
+            digitList.set(number, precision(true));
+            return subformat(result, fieldPosition, isNegative, true, parseAttr);
+        }
+    }
+
+    // [NEW]
+    /**
+     * Format a BigInteger number.
+     * 
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+
+    // [Spark/CDL] 
+    private StringBuffer format(BigInteger number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) {
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        if (roundingIncrementICU != null) {
+            return format(new BigDecimal(number), result, fieldPosition);
+        }
+
+        if (multiplier != 1) {
+            number = number.multiply(BigInteger.valueOf(multiplier));
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, precision(true));
+            return subformat(result, fieldPosition, number.signum() < 0, true, parseAttr);
+        }
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Format a BigDecimal number.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+    
+    private StringBuffer format(java.math.BigDecimal number,
+            StringBuffer result, FieldPosition fieldPosition, boolean parseAttr) {
+        if (multiplier != 1) {
+            number = number.multiply(java.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            number = number.divide(roundingIncrement, 0, roundingMode)
+                    .multiply(roundingIncrement);
+        }
+
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(result, fieldPosition, number.signum() < 0, false, parseAttr);
+        }        
+    }
+//#endif
+    
+    // [NEW]
+    /**
+     * Format a BigDecimal number.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        /* This method is just a copy of the corresponding java.math.BigDecimal
+         * method for now.  It isn't very efficient since it must create a
+         * conversion object to do math on the rounding increment.  In the
+         * future we may try to clean this up, or even better, limit our support
+         * to just one flavor of BigDecimal.
+         */
+        if (multiplier != 1) {
+            number = number.multiply(BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrementICU != null) {
+            number = number.divide(roundingIncrementICU, 0, roundingMode)
+                    .multiply(roundingIncrementICU);
+        }
+
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }        
+    }
+
+    /**
+     * Return true if a grouping separator belongs at the given
+     * position, based on whether grouping is in use and the values of
+     * the primary and secondary grouping interval.
+     * @param pos the number of integer digits to the right of
+     * the current position.  Zero indicates the position after the
+     * rightmost integer digit.
+     * @return true if a grouping character belongs at the current
+     * position.
+     */
+    private boolean isGroupingPosition(int pos) {
+        boolean result = false;
+        if (isGroupingUsed() && (pos > 0) && (groupingSize > 0)) {
+            if ((groupingSize2 > 0) && (pos > groupingSize)) {
+                result = ((pos - groupingSize) % groupingSize2) == 0;
+            } else {
+                result = pos % groupingSize == 0;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Return the number of fraction digits to display, or the total
+     * number of digits for significant digit formats and exponential
+     * formats.
+     */
+    private int precision(boolean isIntegral) {
+        if (areSignificantDigitsUsed()) {
+            return getMaximumSignificantDigits();
+        } else if (useExponentialNotation) {
+            return getMinimumIntegerDigits() + getMaximumFractionDigits();
+        } else {
+            return isIntegral ? 0 : getMaximumFractionDigits();
+        }
+    }
+
+    /**
+     * Complete the formatting of a finite number.  On entry, the digitList must
+     * be filled in with the correct digits.
+     */
+    private StringBuffer subformat(StringBuffer result, FieldPosition fieldPosition,
+                                   boolean isNegative, boolean isInteger){
+        return subformat(result, fieldPosition, isNegative, isInteger, false);
+    }
+
+    private StringBuffer subformat(StringBuffer result,
+            FieldPosition fieldPosition, boolean isNegative, boolean isInteger,
+            boolean parseAttr) 
+    {
+        // NOTE: This isn't required anymore because DigitList takes care of this.
+        //
+        //  // The negative of the exponent represents the number of leading
+        //  // zeros between the decimal and the first non-zero digit, for
+        //  // a value < 0.1 (e.g., for 0.00123, -fExponent == 2).  If this
+        //  // is more than the maximum fraction digits, then we have an underflow
+        //  // for the printed representation.  We recognize this here and set
+        //  // the DigitList representation to zero in this situation.
+        //
+        //  if (-digitList.decimalAt >= getMaximumFractionDigits())
+        //  {
+        //      digitList.count = 0;
+        //  }
+
+        int i;
+        char zero = symbols.getZeroDigit();
+        int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
+        char grouping = isCurrencyFormat ?
+                    symbols.getMonetaryGroupingSeparator() :
+                    symbols.getGroupingSeparator();
+        char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() :
+            symbols.getDecimalSeparator();
+        boolean useSigDig = areSignificantDigitsUsed();
+        int maxIntDig = getMaximumIntegerDigits();
+        int minIntDig = getMinimumIntegerDigits();
+
+        /* Per bug 4147706, DecimalFormat must respect the sign of numbers which
+         * format as zero.  This allows sensible computations and preserves
+         * relations such as signum(1/x) = signum(x), where x is +Infinity or
+         * -Infinity.  Prior to this fix, we always formatted zero values as if
+         * they were positive.  Liu 7/6/98.
+         */
+        if (digitList.isZero())
+        {
+            digitList.decimalAt = 0; // Normalize
+        }
+
+        int prefixLen = appendAffix(result, isNegative, true, parseAttr);
+
+        if (useExponentialNotation)
+        {
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+                fieldPosition.setEndIndex(-1);
+            } else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setBeginIndex(-1);
+            }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL]
+            // the begin index of integer part
+            // the end index of integer part
+            // the begin index of fractional part
+            int intBegin = result.length();
+            int intEnd = -1;
+            int fracBegin = -1;
+//#endif
+
+            int minFracDig = 0;
+            if (useSigDig) {
+                maxIntDig = minIntDig = 1;
+                minFracDig = getMinimumSignificantDigits() - 1;
+            } else {
+                minFracDig = getMinimumFractionDigits();
+                if (maxIntDig > MAX_SCIENTIFIC_INTEGER_DIGITS) {
+                    maxIntDig = 1;
+                    if (maxIntDig < minIntDig) {
+                        maxIntDig = minIntDig;
+                    }
+                }
+                if (maxIntDig > minIntDig) {
+                    minIntDig = 1;
+                }
+            }            
+
+            // Minimum integer digits are handled in exponential format by
+            // adjusting the exponent.  For example, 0.01234 with 3 minimum
+            // integer digits is "123.4E-4".
+
+            // Maximum integer digits are interpreted as indicating the
+            // repeating range.  This is useful for engineering notation, in
+            // which the exponent is restricted to a multiple of 3.  For
+            // example, 0.01234 with 3 maximum integer digits is "12.34e-3".
+            // If maximum integer digits are defined and are larger than
+            // minimum integer digits, then minimum integer digits are
+            // ignored.
+
+            int exponent = digitList.decimalAt;
+            if (maxIntDig > 1 && maxIntDig != minIntDig) {
+                // A exponent increment is defined; adjust to it.
+                exponent = (exponent > 0) ? (exponent - 1) / maxIntDig
+                                          : (exponent / maxIntDig) - 1;
+                exponent *= maxIntDig;
+            } else {
+                // No exponent increment is defined; use minimum integer digits.
+                // If none is specified, as in "#E0", generate 1 integer digit.
+                exponent -= (minIntDig > 0 || minFracDig > 0)
+                    ? minIntDig : 1;
+            }
+
+            // We now output a minimum number of digits, and more if there
+            // are more digits, up to the maximum number of digits.  We
+            // place the decimal point after the "integer" digits, which
+            // are the first (decimalAt - exponent) digits.
+            int minimumDigits = minIntDig + minFracDig;
+            // The number of integer digits is handled specially if the number
+            // is zero, since then there may be no digits.
+            int integerDigits = digitList.isZero() ? minIntDig :
+                digitList.decimalAt - exponent;
+            int totalDigits = digitList.count;
+            if (minimumDigits > totalDigits) totalDigits = minimumDigits;
+            if (integerDigits > totalDigits) totalDigits = integerDigits;
+
+            for (i=0; i<totalDigits; ++i)
+            {
+                if (i == integerDigits)
+                {
+                    // Record field information for caller.
+                    if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                        fieldPosition.setEndIndex(result.length());
+                    }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add attribute for integer part
+                    if (parseAttr) {
+                        intEnd = result.length();
+                        addAttribute(Field.INTEGER, intBegin, result.length());
+                    }
+//#endif
+                    result.append(decimal);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add attribute for decimal separator
+                    if (parseAttr) {
+                        // Length of decimal separator is 1.
+                        int decimalSeparatorBegin = result.length() - 1;
+                        addAttribute(Field.DECIMAL_SEPARATOR,
+                                decimalSeparatorBegin, result.length());
+                            fracBegin = result.length();
+                    }
+//#endif
+                    // Record field information for caller.
+                    if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                        fieldPosition.setBeginIndex(result.length());
+                    }
+                }
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) :
+                          zero);
+            }
+            
+            //For ICU compatibility and format 0 to 0E0 with pattern "#E0" [Richard/GCL]
+            if (digitList.isZero() && (totalDigits ==0)) {
+                result.append(zero);
+            }
+
+            // Record field information
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                if (fieldPosition.getEndIndex() < 0) {
+                    fieldPosition.setEndIndex(result.length());
+                }
+            } else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                if (fieldPosition.getBeginIndex() < 0) {
+                    fieldPosition.setBeginIndex(result.length());
+                }
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Calcuate the end index of integer part and fractional
+            // part if they are not properly processed yet.
+            if (parseAttr) {
+                if (intEnd < 0) {
+                    addAttribute(Field.INTEGER, intBegin, result.length());
+                }
+                if (fracBegin > 0) {
+                    addAttribute(Field.FRACTION, fracBegin, result.length());
+                }
+            }
+//#endif
+
+            // The exponent is output using the pattern-specified minimum
+            // exponent digits.  There is no maximum limit to the exponent
+            // digits, since truncating the exponent would result in an
+            // unacceptable inaccuracy.
+            result.append(symbols.getExponentSeparator());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] For exponent symbol, add an attribute.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT_SYMBOL, result.length()
+                        - symbols.getExponentSeparator().length(), result
+                        .length());
+            }
+//#endif
+            // For zero values, we force the exponent to zero.  We
+            // must do this here, and not earlier, because the value
+            // is used to determine integer digit count above.
+            if (digitList.isZero()) exponent = 0;
+
+            boolean negativeExponent = exponent < 0;
+            if (negativeExponent) {
+                exponent = -exponent;
+                result.append(symbols.getMinusSign());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] If exponent has sign, then add an exponent sign
+                // attribute.
+                if (parseAttr) {
+                    // Length of exponent sign is 1.
+                    addAttribute(Field.EXPONENT_SIGN, result.length() - 1,
+                            result.length());
+                }
+//#endif
+            } else if (exponentSignAlwaysShown) {
+                result.append(symbols.getPlusSign());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] Add an plus sign attribute.
+                if (parseAttr) {
+                    // Length of exponent sign is 1.
+                    int expSignBegin = result.length() - 1;
+                    addAttribute(Field.EXPONENT_SIGN, expSignBegin, result
+                            .length());
+                }
+//#endif
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            int expBegin = result.length();
+//#endif
+            digitList.set(exponent);
+            {
+                int expDig = minExponentDigits;
+                if (useExponentialNotation && expDig < 1) {
+                    expDig = 1;
+                }
+                for (i=digitList.decimalAt; i<expDig; ++i) result.append(zero);
+            }
+            for (i=0; i<digitList.decimalAt; ++i)
+            {
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) : zero);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute for exponent part.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT, expBegin, result.length());
+            }
+//#endif
+        }
+        else
+        {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Record the integer start index.
+            int intBegin = result.length();
+//#endif
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            int sigCount = 0;
+            int minSigDig = getMinimumSignificantDigits();
+            int maxSigDig = getMaximumSignificantDigits();
+            if (!useSigDig) {
+                minSigDig = 0;
+                maxSigDig = Integer.MAX_VALUE;
+            }
+
+            // Output the integer portion.  Here 'count' is the total
+            // number of integer digits we will display, including both
+            // leading zeros required to satisfy getMinimumIntegerDigits,
+            // and actual digits present in the number.
+            int count = useSigDig ?
+                Math.max(1, digitList.decimalAt) : minIntDig;
+            if (digitList.decimalAt > 0 && count < digitList.decimalAt) {
+                count = digitList.decimalAt;
+            }
+
+            // Handle the case where getMaximumIntegerDigits() is smaller
+            // than the real number of integer digits.  If this is so, we
+            // output the least significant max integer digits.  For example,
+            // the value 1997 printed with 2 max integer digits is just "97".
+
+            int digitIndex = 0; // Index into digitList.fDigits[]
+            if (count > maxIntDig && maxIntDig >= 0) {
+                count = maxIntDig;
+                digitIndex = digitList.decimalAt - count;
+            }
+
+            int sizeBeforeIntegerPart = result.length();
+            for (i=count-1; i>=0; --i)
+            {
+                if (i < digitList.decimalAt && digitIndex < digitList.count &&
+                    sigCount < maxSigDig) {
+                    // Output a real digit
+                    byte d = digitList.digits[digitIndex++];
+                    result.append((char)(d + zeroDelta));
+                    ++sigCount;
+                }
+                else
+                {
+                    // Output a zero (leading or trailing)
+                    result.append(zero);
+                    if (sigCount > 0) {
+                        ++sigCount;
+                    }
+                }
+
+                // Output grouping separator if necessary.
+                if (isGroupingPosition(i)) {
+                    result.append(grouping);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add grouping separator attribute here.
+                    if (parseAttr) {
+                        // Length of grouping separator is 1.
+                        addAttribute(Field.GROUPING_SEPARATOR,
+                                result.length() - 1, result.length());
+                    }
+//#endif
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            // Determine whether or not there are any printable fractional
+            // digits.  If we've used up the digits we know there aren't.
+            boolean fractionPresent = (!isInteger && digitIndex < digitList.count) ||
+                (useSigDig ? (sigCount < minSigDig) : (getMinimumFractionDigits() > 0));
+
+            // If there is no fraction present, and we haven't printed any
+            // integer digits, then print a zero.  Otherwise we won't print
+            // _any_ digits, and we won't be able to parse this string.
+            if (!fractionPresent && result.length() == sizeBeforeIntegerPart)
+                result.append(zero);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute for integer part.
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, intBegin, result.length());
+            }
+//#endif
+            // Output the decimal separator if we always do so.
+            if (decimalSeparatorAlwaysShown || fractionPresent)
+            {
+                result.append(decimal);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] Add attribute for decimal separator
+                if (parseAttr) {
+                    addAttribute(Field.DECIMAL_SEPARATOR, result.length() - 1,
+                            result.length());
+                }
+//#endif
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Record the begin index of fraction part.
+            int fracBegin = result.length();
+//#endif
+
+            count = useSigDig ? Integer.MAX_VALUE : getMaximumFractionDigits();
+            if (useSigDig && (sigCount == maxSigDig ||
+                              (sigCount >= minSigDig && digitIndex == digitList.count))) {
+                count = 0;   
+            }
+            for (i=0; i < count; ++i) {
+                // Here is where we escape from the loop.  We escape
+                // if we've output the maximum fraction digits
+                // (specified in the for expression above).  We also
+                // stop when we've output the minimum digits and
+                // either: we have an integer, so there is no
+                // fractional stuff to display, or we're out of
+                // significant digits.
+                if (!useSigDig && i >= getMinimumFractionDigits() &&
+                    (isInteger || digitIndex >= digitList.count)) {
+                    break;
+                }
+
+                // Output leading fractional zeros.  These are zeros
+                // that come after the decimal but before any
+                // significant digits.  These are only output if
+                // abs(number being formatted) < 1.0.
+                if (-1-i > (digitList.decimalAt-1)) {
+                    result.append(zero);
+                    continue;
+                }
+
+                // Output a digit, if we have any precision left, or a
+                // zero if we don't.  We don't want to output noise digits.
+                if (!isInteger && digitIndex < digitList.count) {
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                } else {
+                    result.append(zero);
+                }
+
+                // If we reach the maximum number of significant
+                // digits, or if we output all the real digits and
+                // reach the minimum, then we are done.
+                ++sigCount;
+                if (useSigDig &&
+                    (sigCount == maxSigDig ||
+                     (digitIndex == digitList.count && sigCount >= minSigDig))) {
+                    break;
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute information if necessary.
+            if (parseAttr && (decimalSeparatorAlwaysShown || fractionPresent)) {
+                addAttribute(Field.FRACTION, fracBegin, result.length());
+            }
+//#endif
+        }
+
+        int suffixLen = appendAffix(result, isNegative, false, parseAttr);
+
+        // [NEW]
+        addPadding(result, fieldPosition, prefixLen, suffixLen);
+        return result;
+    }
+
+    // [NEW]
+    private final void addPadding(StringBuffer result, FieldPosition fieldPosition,
+                                  int prefixLen, int suffixLen) {
+        if (formatWidth > 0) {
+            int len = formatWidth - result.length();
+            if (len > 0) {
+                char[] padding = new char[len];
+                for (int i=0; i<len; ++i) {
+                    padding[i] = pad;
+                }
+                switch (padPosition) {
+                case PAD_AFTER_PREFIX:
+                    result.insert(prefixLen, padding);
+                    break;
+                case PAD_BEFORE_PREFIX:
+                    result.insert(0, padding);
+                    break;
+                case PAD_BEFORE_SUFFIX:
+                    result.insert(result.length() - suffixLen, padding);
+                    break;
+                case PAD_AFTER_SUFFIX:
+                    result.append(padding);
+                    break;
+                }
+                if (padPosition == PAD_BEFORE_PREFIX ||
+                    padPosition == PAD_AFTER_PREFIX) {
+                    fieldPosition.setBeginIndex(fieldPosition.getBeginIndex() + len);
+                    fieldPosition.setEndIndex(fieldPosition.getEndIndex() + len);
+                }
+            }
+        }
+    }
+
+    // [CHANGED]
+    /**
+     * Parse the given string, returning a <code>Number</code> object to
+     * represent the parsed value.  <code>Double</code> objects are returned to
+     * represent non-integral values which cannot be stored in a
+     * <code>BigDecimal</code>.  These are <code>NaN</code>, infinity,
+     * -infinity, and -0.0.  If {@link #isParseBigDecimal()} is false (the
+     * default), all other values are returned as <code>Long</code>,
+     * <code>BigInteger</code>, or <code>BigDecimal</code> values,
+     * in that order of preference. If {@link #isParseBigDecimal()} is true,
+     * all other values are returned as <code>BigDecimal</code> valuse.
+     * If the parse fails, null is returned.
+     * @param text the string to be parsed
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return a <code>Number</code> object with the parsed value or
+     * <code>null</code> if the parse failed
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+       return (Number) parse(text, parsePosition, false);
+    }
+
+    // [NEW]
+    /**
+     * Parses text from the given string as a CurrencyAmount.  Unlike
+     * the parse() method, this method will attempt to parse a generic
+     * currency name, searching for a match of this object's locale's
+     * currency display names, or for a 3-letter ISO currency code.
+     * This method will fail if this format is not a currency format,
+     * that is, if it does not contain the currency pattern symbol
+     * (U+00A4) in its prefix or suffix.
+     *
+     * @param text the string to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return a CurrencyAmount, or null upon failure
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    CurrencyAmount parseCurrency(String text, ParsePosition pos) {
+        return (CurrencyAmount) parse(text, pos, true);
+    }
+
+    /**
+     * Parses the given text as either a Number or a CurrencyAmount.
+     * @param text the string to parse
+     * @param parsePosition input-output position; on input, the
+     * position within text to match; must have 0 <= pos.getIndex() <
+     * text.length(); on output, the position after the last matched
+     * character. If the parse fails, the position in unchanged upon
+     * output.
+     * @param parseCurrency if true, a CurrencyAmount is parsed and
+     * returned; otherwise a Number is parsed and returned
+     * @return a Number or CurrencyAmount or null
+     */
+    private Object parse(String text, ParsePosition parsePosition, boolean parseCurrency) {
+        int backup;
+        int i = backup = parsePosition.getIndex();
+
+        // Handle NaN as a special case:
+
+        // Skip padding characters, if around prefix
+        if (formatWidth > 0 && (padPosition == PAD_BEFORE_PREFIX ||
+                                padPosition == PAD_AFTER_PREFIX)) {
+            i = skipPadding(text, i);
+        }
+        if (text.regionMatches(i, symbols.getNaN(),
+                               0, symbols.getNaN().length())) {
+            i += symbols.getNaN().length();
+            // Skip padding characters, if around suffix
+            if (formatWidth > 0 && (padPosition == PAD_BEFORE_SUFFIX ||
+                                    padPosition == PAD_AFTER_SUFFIX)) {
+                i = skipPadding(text, i);
+            }
+            parsePosition.setIndex(i);
+            return new Double(Double.NaN);
+        }
+
+        // NaN parse failed; start over
+        i = backup;
+
+        boolean[] status = new boolean[STATUS_LENGTH];
+        Currency[] currency = parseCurrency ? new Currency[1] : null;
+        if (!subparse(text, parsePosition, digitList, false, status, currency)) {
+            parsePosition.setIndex(backup);
+            return null;
+        }
+
+        Number n = null;
+
+        // Handle infinity
+        if (status[STATUS_INFINITE]) {
+            n = new Double(status[STATUS_POSITIVE]
+                           ? Double.POSITIVE_INFINITY
+                           : Double.NEGATIVE_INFINITY);
+        }
+
+        // Handle underflow
+        else if (status[STATUS_UNDERFLOW]) {
+            n = status[STATUS_POSITIVE] ? new Double("0.0") : new Double("-0.0");
+        }
+
+        // Handle -0.0
+        else if (!status[STATUS_POSITIVE] && digitList.isZero()) {
+            n = new Double("-0.0");
+        }
+
+        else {
+            // Do as much of the multiplier conversion as possible without
+            // losing accuracy.
+            int mult = multiplier; // Don't modify this.multiplier
+            while (mult % 10 == 0) {
+                --digitList.decimalAt;
+                mult /= 10;
+            }
+
+            // Handle integral values
+            if (!parseBigDecimal && mult == 1 && digitList.isIntegral()) {
+                // hack quick long
+                if (digitList.decimalAt < 12) { // quick check for long
+                    long l = 0;
+                    if (digitList.count > 0) {
+                        int nx = 0;
+                        while (nx < digitList.count) {
+                            l = l * 10 + (char)digitList.digits[nx++] - '0';
+                        }
+                        while (nx++ < digitList.decimalAt) {
+                            l *= 10;
+                        }
+                        if (!status[STATUS_POSITIVE]) {
+                            l = -l;
+                        }
+                    }
+                    n = new Long(l);
+                } else {
+                    BigInteger big = digitList.getBigInteger(status[STATUS_POSITIVE]);
+                    n = (big.bitLength() < 64) ?
+                        (Number) new Long(big.longValue()) : (Number) big;
+                }
+            }
+            // Handle non-integral values or the case where parseBigDecimal is set
+            else {
+                BigDecimal big = digitList.getBigDecimalICU(status[STATUS_POSITIVE]);
+                n = big;
+                if (mult != 1) {
+                    n = big.divide(BigDecimal.valueOf(mult),
+                            BigDecimal.ROUND_HALF_EVEN);
+                }
+            }
+        }
+
+        // Assemble into CurrencyAmount if necessary
+        return parseCurrency ? (Object) new CurrencyAmount(n, currency[0])
+                             : (Object) n;
+    }
+
+    private static final int STATUS_INFINITE = 0;
+    private static final int STATUS_POSITIVE = 1;
+    private static final int STATUS_UNDERFLOW = 2;
+    private static final int STATUS_LENGTH   = 3;
+    private static final UnicodeSet dotEquivalents =(UnicodeSet) new UnicodeSet(
+        "[.\u2024\u3002\uFE12\uFE52\uFF0E\uFF61]").freeze();
+    private static final UnicodeSet commaEquivalents = (UnicodeSet) new UnicodeSet(
+        "[,\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64]").freeze();
+    private static final UnicodeSet otherGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        "[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]").freeze();
+    
+    private static final UnicodeSet strictDotEquivalents =(UnicodeSet) new UnicodeSet(
+        "[.\u2024\uFE52\uFF0E\uFF61]").freeze();
+    private static final UnicodeSet strictCommaEquivalents = (UnicodeSet) new UnicodeSet(
+        "[,\u066B\uFE10\uFE50\uFF0C]").freeze();
+    private static final UnicodeSet strictOtherGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        "[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]").freeze();
+
+    private static final UnicodeSet defaultGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        dotEquivalents).addAll(commaEquivalents).addAll(otherGroupingSeparators).freeze();
+    private static final UnicodeSet strictDefaultGroupingSeparators = (UnicodeSet) new UnicodeSet(
+            strictDotEquivalents).addAll(strictCommaEquivalents).addAll(strictOtherGroupingSeparators).freeze();
+
+    // When parsing a number with big exponential value, it requires to transform
+    // the value into a string representation to construct BigInteger instance.
+    // We want to set the maximum size because it can easily trigger OutOfMemoryException.
+    // PARSE_MAX_EXPONENT is currently set to 1000, which is much bigger than
+    // MAX_VALUE of Double (
+    // See the problem reported by ticket#5698
+    private static final int PARSE_MAX_EXPONENT = 1000;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given text into a number.  The text is parsed beginning at
+     * parsePosition, until an unparseable character is seen.
+     * @param text The string to parse.
+     * @param parsePosition The position at which to being parsing.  Upon
+     * return, the first unparseable character.
+     * @param digits The DigitList to set to the parsed value.
+     * @param isExponent If true, parse an exponent.  This means no
+     * infinite values and integer only.
+     * @param status Upon return contains boolean status flags indicating
+     * whether the value was infinite and whether it was positive.
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     */
+    private final boolean subparse(String text, ParsePosition parsePosition,
+                   DigitList digits, boolean isExponent,
+                   boolean status[], Currency currency[])
+    {
+        int position = parsePosition.getIndex();
+        int oldStart = parsePosition.getIndex();
+
+        // Match padding before prefix
+        if (formatWidth > 0 && padPosition == PAD_BEFORE_PREFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // Match positive and negative prefixes; prefer longest match.
+        int posMatch = compareAffix(text, position, false, true, currency);
+        int negMatch = compareAffix(text, position, true, true, currency);
+        if (posMatch >= 0 && negMatch >= 0) {
+            if (posMatch > negMatch) {
+                negMatch = -1;
+            } else if (negMatch > posMatch) {
+                posMatch = -1;
+            }  
+        }
+        if (posMatch >= 0) {
+            position += posMatch;
+        } else if (negMatch >= 0) {
+            position += negMatch;
+        } else {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+
+        // Match padding after prefix
+        if (formatWidth > 0 && padPosition == PAD_AFTER_PREFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // process digits or Inf, find decimal position
+        status[STATUS_INFINITE] = false;
+        if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
+                          symbols.getInfinity().length()))
+        {
+            position += symbols.getInfinity().length();
+            status[STATUS_INFINITE] = true;
+        } else {
+            // We now have a string of digits, possibly with grouping symbols,
+            // and decimal points.  We want to process these into a DigitList.
+            // We don't want to put a bunch of leading zeros into the DigitList
+            // though, so we keep track of the location of the decimal point,
+            // put only significant digits into the DigitList, and adjust the
+            // exponent as needed.
+
+            digits.decimalAt = digits.count = 0;
+            char zero = symbols.getZeroDigit();
+            char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator();
+            char grouping = symbols.getGroupingSeparator();
+                        
+            String exponentSep = symbols.getExponentSeparator();
+            boolean sawDecimal = false;
+            boolean sawExponent = false;
+            boolean sawDigit = false;
+            long exponent = 0; // Set to the exponent value, if any
+            int digit = 0;
+
+            // strict parsing
+            boolean strictParse = isParseStrict();
+            boolean strictFail = false; // did we exit with a strict parse failure?
+            boolean leadingZero = false; // did we see a leading zero?
+            int lastGroup = -1; // where did we last see a grouping separator?
+            int gs2 = groupingSize2 == 0 ? groupingSize : groupingSize2;
+            
+            // equivalent grouping and decimal support
+            
+            // TODO markdavis Cache these if it makes a difference in performance.
+            UnicodeSet decimalSet = new UnicodeSet(getSimilarDecimals(decimal, strictParse));
+            UnicodeSet groupingSet = new UnicodeSet(strictParse ? strictDefaultGroupingSeparators : defaultGroupingSeparators)
+                .add(grouping).removeAll(decimalSet);
+            
+            // we are guaranteed that 
+            // decimalSet contains the decimal, and 
+            // groupingSet contains the groupingSeparator
+            // (unless decimal and grouping are the same, which should never happen. But in that case, groupingSet will just be empty.)
+
+
+            // We have to track digitCount ourselves, because digits.count will
+            // pin when the maximum allowable digits is reached.
+            int digitCount = 0;
+            
+            int backup = -1;
+            for (; position < text.length(); ++position)
+            {
+                char ch = text.charAt(position);
+
+                /* We recognize all digit ranges, not only the Latin digit range
+                 * '0'..'9'.  We do so by using the UCharacter.digit() method,
+                 * which converts a valid Unicode digit to the range 0..9.
+                 *
+                 * The character 'ch' may be a digit.  If so, place its value
+                 * from 0 to 9 in 'digit'.  First try using the locale digit,
+                 * which may or MAY NOT be a standard Unicode digit range.  If
+                 * this fails, try using the standard Unicode digit ranges by
+                 * calling UCharacter.digit().  If this also fails, digit will
+                 * have a value outside the range 0..9.
+                 */
+                digit = ch - zero;
+                if (digit < 0 || digit > 9) digit = UCharacter.digit(ch, 10);
+
+                if (digit == 0)
+                {
+                    // Cancel out backup setting (see grouping handler below)
+                    if (strictParse && backup != -1) {
+                        // comma followed by digit, so group before comma is a 
+                        // secondary group.  If there was a group separator
+                        // before that, the group must == the secondary group
+                        // length, else it can be <= the the secondary group
+                        // length.
+                        if ((lastGroup != -1 && backup - lastGroup - 1 != gs2) ||
+                            (lastGroup == -1 && position - oldStart - 1 > gs2)) {
+                            strictFail = true;
+                            break;
+                        }
+                        lastGroup = backup;
+                    }
+                    backup = -1; // Do this BEFORE continue statement below!!!
+                    sawDigit = true;
+
+                    // Handle leading zeros
+                    if (digits.count == 0)
+                    {
+                        if (!sawDecimal) {
+                            if (strictParse && !isExponent) {
+                                // Allow leading zeros in exponents
+                                if (leadingZero) {
+                                    strictFail = true;
+                                    break;
+                                }
+                                leadingZero = true;
+                            }
+                            // Ignore leading zeros in integer part of number.
+                            continue;
+                        }
+
+                        // If we have seen the decimal, but no significant digits yet,
+                        // then we account for leading zeros by decrementing the
+                        // digits.decimalAt into negative values.
+                        --digits.decimalAt;
+                    }
+                    else
+                    {
+                        ++digitCount;
+                        digits.append((char)(digit + '0'));
+                    }
+                }
+                else if (digit > 0 && digit <= 9) // [sic] digit==0 handled above
+                {
+                    if (strictParse) {
+                        if (leadingZero) {
+                            // a leading zero before a digit is an error with strict parsing
+                            strictFail = true;
+                            break;
+                        }
+                        if (backup != -1) {
+                            if ((lastGroup != -1 && backup - lastGroup - 1 != gs2) ||
+                                (lastGroup == -1 && position - oldStart - 1 > gs2)) {
+                                strictFail = true;
+                                break;
+                            }
+                            lastGroup = backup;
+                        }
+                    }
+
+                    sawDigit = true;
+                    ++digitCount;
+                    digits.append((char)(digit + '0'));
+
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1;
+                }
+                else if (!isExponent && decimalSet.contains(ch))
+                {
+                    if (strictParse) {
+                        if (backup != -1 ||
+                            (lastGroup != -1 && position - lastGroup != groupingSize + 1)) {
+                            strictFail = true;
+                            break;
+                        }
+                    }
+                    // If we're only parsing integers, or if we ALREADY saw the
+                    // decimal, then don't parse this one.
+                    if (isParseIntegerOnly() || sawDecimal) break;
+                    digits.decimalAt = digitCount; // Not digits.count!
+                    sawDecimal = true;
+                    leadingZero = false; // a single leading zero before a decimal is ok
+                    
+                    // Once we see a decimal character, we only accept that decimal character from then on.
+                    decimalSet.set(ch,ch);
+                }
+                else if (!isExponent && isGroupingUsed() && groupingSet.contains(ch))
+                {
+                    if (sawDecimal) {
+                        break;
+                    }
+                    if (strictParse) {
+                        if ((!sawDigit || backup != -1)) {
+                            // leading group, or two group separators in a row
+                            strictFail = true;
+                            break;
+                        }
+                    }
+                    // Once we see a grouping character, we only accept that grouping character from then on.
+                    groupingSet.set(ch,ch);
+                    
+                    // Ignore grouping characters, if we are using them, but require
+                    // that they be followed by a digit.  Otherwise we backup and
+                    // reprocess them.
+                    backup = position;
+                }
+                else if (!isExponent && !sawExponent &&
+                         text.regionMatches(position, exponentSep,
+                                            0, exponentSep.length()))
+                {
+                    // Parse sign, if present
+                    boolean negExp = false;
+                    int pos = position + exponentSep.length();
+                    if (pos < text.length()) {
+                        ch = text.charAt(pos);
+                        if (ch == symbols.getPlusSign()) {
+                            ++pos;
+                        } else if (ch == symbols.getMinusSign()) {
+                            ++pos;
+                            negExp = true;
+                        }
+                    }
+
+                    DigitList exponentDigits = new DigitList();
+                    exponentDigits.count = 0;
+                    while (pos < text.length()) {
+                        digit = text.charAt(pos) - zero;
+                        if (digit < 0 || digit > 9) {
+                            /*
+                              Can't parse "[1E0]" when pattern is "0.###E0;[0.###E0]"
+                              Should update reassign the value of 'ch' in the
+                              code:  digit = Character.digit(ch, 10);
+                              [Richard/GCL]
+                            */
+                            digit = UCharacter.digit(text.charAt(pos), 10);
+                        }
+                        if (digit >= 0 && digit <= 9) {
+                            exponentDigits.append((char)(digit + '0'));
+                            ++pos;
+                        } else {
+                            break;
+                        }
+                    }
+                    
+                    if (exponentDigits.count > 0) {
+                        // defer strict parse until we know we have a bona-fide exponent
+                        if (strictParse) {
+                            if (backup != -1 || lastGroup != -1) {
+                                strictFail = true;
+                                break;
+                            }
+                        }
+
+                        // Quick overflow check for exponential part.
+                        // Actual limit check will be done later in this code.
+                        if (exponentDigits.count > 10 /* maximum decimal digits for int */) {
+                            if (negExp) {
+                                // set underflow flag
+                                status[STATUS_UNDERFLOW] = true;
+                            } else {
+                                // set infinite flag
+                                status[STATUS_INFINITE] = true;
+                            }
+                        } else {
+                            exponentDigits.decimalAt = exponentDigits.count;
+                            exponent = exponentDigits.getLong();
+                            if (negExp) {
+                                exponent = -exponent;
+                            }
+                        }
+                        position = pos; // Advance past the exponent
+                        sawExponent = true;
+                    }
+
+                    break; // Whether we fail or succeed, we exit this loop
+                }
+                else break;
+            }
+
+            if (backup != -1) position = backup;
+
+            if (strictParse && !sawDecimal) {
+                if (lastGroup != -1 && position - lastGroup != groupingSize + 1) {
+                    strictFail = true;
+                }
+            }
+            if (strictFail) {
+                // only set with strictParse and a leading zero error
+                // leading zeros are an error with strict parsing except
+                // immediately before nondigit (except group separator 
+                // followed by digit), or end of text.
+                
+                parsePosition.setIndex(oldStart);
+                parsePosition.setErrorIndex(position);
+                return false;
+            }
+
+            // If there was no decimal point we have an integer
+            if (!sawDecimal) digits.decimalAt = digitCount; // Not digits.count!
+
+            // Adjust for exponent, if any
+            exponent += digits.decimalAt;
+            if (exponent < -PARSE_MAX_EXPONENT) {
+                status[STATUS_UNDERFLOW] = true;
+            } else if (exponent > PARSE_MAX_EXPONENT) {
+                status[STATUS_INFINITE] = true;
+            } else {
+                digits.decimalAt = (int)exponent;
+            }
+
+            // If none of the text string was recognized.  For example, parse
+            // "x" with pattern "#0.00" (return index and error index both 0)
+            // parse "$" with pattern "$#0.00". (return index 0 and error index
+            // 1).
+            if (!sawDigit && digitCount == 0) {
+                parsePosition.setIndex(oldStart);
+                parsePosition.setErrorIndex(oldStart);
+                return false;
+            }
+        }
+
+        // Match padding before suffix
+        if (formatWidth > 0 && padPosition == PAD_BEFORE_SUFFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // Match positive and negative suffixes; prefer longest match.
+        if (posMatch >= 0) {
+            posMatch = compareAffix(text, position, false, false, currency);
+        }
+        if (negMatch >= 0) {
+            negMatch = compareAffix(text, position, true, false, currency);
+        }
+        if (posMatch >= 0 && negMatch >= 0) {
+            if (posMatch > negMatch) {
+                negMatch = -1;
+            } else if (negMatch > posMatch) {
+                posMatch = -1;
+            }  
+        }
+
+        // Fail if neither or both
+        if ((posMatch >= 0) == (negMatch >= 0)) {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+
+        position += (posMatch>=0 ? posMatch : negMatch);
+
+        // Match padding after suffix
+        if (formatWidth > 0 && padPosition == PAD_AFTER_SUFFIX) {
+            position = skipPadding(text, position);
+        }
+
+        parsePosition.setIndex(position);
+
+        status[STATUS_POSITIVE] = (posMatch >= 0);
+
+        if (parsePosition.getIndex() == oldStart) {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Return characters that are used where this decimal is used.
+     * @param decimal
+     * @param strictParse 
+     * @return
+     */
+    private UnicodeSet getSimilarDecimals(char decimal, boolean strictParse) {
+        if (dotEquivalents.contains(decimal)) {
+            return strictParse ? strictDotEquivalents : dotEquivalents;
+        }
+        if (commaEquivalents.contains(decimal)) {
+            return strictParse ? strictCommaEquivalents : commaEquivalents;
+        }
+        // if there is no match, return the character itself
+        return new UnicodeSet().add(decimal);
+    }
+
+    /**
+     * Starting at position, advance past a run of pad characters, if any.
+     * Return the index of the first character after position that is not a pad
+     * character.  Result is >= position.
+     */
+    private final int skipPadding(String text, int position) {
+        while (position < text.length() && text.charAt(position) == pad) {
+            ++position;
+        }
+        return position;
+    }
+
+    /**
+     * Return the length matched by the given affix, or -1 if none.
+     * Runs of white space in the affix, match runs of white space in
+     * the input.  Pattern white space and input white space are
+     * determined differently; see code.
+     * @param text input text
+     * @param pos offset into input at which to begin matching
+     * @param isNegative
+     * @param isPrefix
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     * @return length of input that matches, or -1 if match failure
+     */
+    private int compareAffix(String text, int pos, boolean isNegative,
+                             boolean isPrefix, Currency[] currency) {
+        if (currency != null || currencyChoice != null) {
+            if (isPrefix) {
+                return compareComplexAffix(isNegative ? negPrefixPattern : posPrefixPattern,
+                                           text, pos, currency);
+            } else {
+                return compareComplexAffix(isNegative ? negSuffixPattern : posSuffixPattern,
+                                           text, pos, currency);
+            }
+        }
+
+        if (isPrefix) {
+            return compareSimpleAffix(isNegative ? negativePrefix : positivePrefix,
+                                      text, pos);
+        } else {
+            return compareSimpleAffix(isNegative ? negativeSuffix : positiveSuffix,
+                                      text, pos);
+        }
+    }
+
+    /**
+     * Return the length matched by the given affix, or -1 if none.
+     * Runs of white space in the affix, match runs of white space in
+     * the input.  Pattern white space and input white space are
+     * determined differently; see code.
+     * @param affix pattern string, taken as a literal
+     * @param input input text
+     * @param pos offset into input at which to begin matching
+     * @return length of input that matches, or -1 if match failure
+     */
+    private static int compareSimpleAffix(String affix, String input, int pos) {
+        int start = pos;
+        for (int i=0; i<affix.length(); ) {
+            int c = UTF16.charAt(affix, i);
+            int len = UTF16.getCharCount(c);
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                // We may have a pattern like: \u200F \u0020
+                //        and input text like: \u200F \u0020
+                // Note that U+200F and U+0020 are RuleWhiteSpace but only
+                // U+0020 is UWhiteSpace.  So we have to first do a direct
+                // match of the run of RULE whitespace in the pattern,
+                // then match any extra characters.
+                boolean literalMatch = false;
+                while (pos < input.length() &&
+                       UTF16.charAt(input, pos) == c) {
+                    literalMatch = true;
+                    i += len;
+                    pos += len;
+                    if (i == affix.length()) {
+                        break;
+                    }
+                    c = UTF16.charAt(affix, i);
+                    len = UTF16.getCharCount(c);
+                    if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                        break;
+                    }
+                }
+                
+                // Advance over run in affix
+                i = skipRuleWhiteSpace(affix, i);
+                
+                // Advance over run in input text
+                // Must see at least one white space char in input,
+                // unless we've already matched some characters literally.
+                int s = pos;
+                pos = skipUWhiteSpace(input, pos);
+                if (pos == s && !literalMatch) {
+                    return -1;
+                }
+                // If we skip UWhiteSpace in the input text, we need to skip it in the pattern.
+                // Otherwise, the previous lines may have skipped over text (such as U+00A0) that
+                // is also in the affix.
+                i = skipUWhiteSpace(affix, i);
+            } else {
+                if (pos < input.length() &&
+                    UTF16.charAt(input, pos) == c) {
+                    i += len;
+                    pos += len;
+                } else {
+                    return -1;
+                }
+            }
+        }
+        return pos - start;
+    }
+
+    /**
+     * Skip over a run of zero or more isRuleWhiteSpace() characters at
+     * pos in text.
+     */
+    private static int skipRuleWhiteSpace(String text, int pos) {
+        while (pos < text.length()) {
+            int c = UTF16.charAt(text, pos);
+            if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Skip over a run of zero or more isUWhiteSpace() characters at pos
+     * in text.
+     */
+    private static int skipUWhiteSpace(String text, int pos) {
+        while (pos < text.length()) {
+            int c = UTF16.charAt(text, pos);
+            if (!UCharacter.isUWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Return the length matched by the given affix, or -1 if none.
+     * @param affixPat pattern string
+     * @param text input text
+     * @param pos offset into input at which to begin matching
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     * @return length of input that matches, or -1 if match failure
+     */
+    private int compareComplexAffix(String affixPat, String text, int pos,
+                                    Currency[] currency) {
+
+        for (int i=0; i<affixPat.length() && pos >= 0; ) {
+            char c = affixPat.charAt(i++);
+            if (c == QUOTE) {
+                for (;;) {
+                    int j = affixPat.indexOf(QUOTE, i);
+                    if (j == i) {
+                        pos = match(text, pos, QUOTE);
+                        i = j+1;
+                        break;
+                    } else if (j > i) {
+                        pos = match(text, pos, affixPat.substring(i, j));
+                        i = j+1;
+                        if (i<affixPat.length() &&
+                            affixPat.charAt(i)==QUOTE) {
+                            pos = match(text, pos, QUOTE);
+                            ++i;
+                            // loop again
+                        } else {
+                            break;
+                        }
+                    } else {
+                        // Unterminated quote; should be caught by apply
+                        // pattern.
+                        throw new RuntimeException();
+                    }
+                }
+                continue;
+            }
+
+            switch (c) {
+            case CURRENCY_SIGN:
+                // If currency != null, then perform generic currency matching.
+                // Otherwise, do currency choice parsing.
+                //assert(currency != null ||
+                //       (getCurrency() != null && currencyChoice != null));
+                boolean intl = i<affixPat.length() &&
+                    affixPat.charAt(i) == CURRENCY_SIGN;
+
+                // Parse generic currency -- anything for which we
+                // have a display name, or any 3-letter ISO code.
+                if (currency != null) {
+                    // Try to parse display name for our locale; first
+                    // determine our locale.
+                    ULocale uloc = getLocale(ULocale.VALID_LOCALE);
+                    if (uloc == null) {
+                        // applyPattern has been called; use the symbols
+                        uloc = symbols.getLocale(ULocale.VALID_LOCALE);
+                    }
+                    // Delegate parse of display name => ISO code to Currency
+                    ParsePosition ppos = new ParsePosition(pos);
+                    String iso = Currency.parse(uloc, text, ppos);
+
+                    // If parse succeeds, populate currency[0]
+                    if (iso != null) {
+                        currency[0] = Currency.getInstance(iso);
+                        pos = ppos.getIndex();
+                    } else {
+                        pos = -1;
+                    }
+                } else {
+                    if (intl) {
+                        ++i;
+                        pos = match(text, pos, getCurrency().getCurrencyCode());
+                    } else {
+                        ParsePosition ppos = new ParsePosition(pos);
+                        /* Number n = */currencyChoice.parse(text, ppos);
+                        pos = (ppos.getIndex() == pos) ? -1 : ppos.getIndex();
+                    }
+                }
+                continue;
+            case PATTERN_PERCENT:
+                c = symbols.getPercent();
+                break;
+            case PATTERN_PER_MILLE:
+                c = symbols.getPerMill();
+                break;
+            case PATTERN_MINUS:
+                c = symbols.getMinusSign();
+                break;
+            }
+            pos = match(text, pos, c);
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                i = skipRuleWhiteSpace(affixPat, i);
+            }
+        }
+
+        return pos;
+    }
+
+    /**
+     * Match a single character at text[pos] and return the index of the
+     * next character upon success.  Return -1 on failure.  If
+     * isRuleWhiteSpace(ch) then match a run of white space in text.
+     */
+    static final int match(String text, int pos, int ch) {
+        if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+            // Advance over run of white space in input text
+            // Must see at least one white space char in input
+            int s = pos;
+            pos = skipUWhiteSpace(text, pos);
+            if (pos == s) {
+                return -1;
+            }
+            return pos;
+        }
+        return (pos >= 0 && UTF16.charAt(text, pos) == ch) ?
+            (pos + UTF16.getCharCount(ch)) : -1;
+    }
+
+    /**
+     * Match a string at text[pos] and return the index of the next
+     * character upon success.  Return -1 on failure.  Match a run of
+     * white space in str with a run of white space in text.
+     */
+    static final int match(String text, int pos, String str) {
+        for (int i=0; i<str.length() && pos >= 0; ) {
+            int ch = UTF16.charAt(str, i);
+            i += UTF16.getCharCount(ch);
+            pos = match(text, pos, ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                i = skipRuleWhiteSpace(str, i);
+            }
+        }
+        return pos;
+    }
+
+    /**
+     * Returns a copy of the decimal format symbols used by this format.
+     * @return desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        try {
+            // don't allow multiple references
+            return (DecimalFormatSymbols) symbols.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the decimal format symbols used by this format.  The
+     * format uses a copy of the provided symbols.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        symbols = (DecimalFormatSymbols) newSymbols.clone();
+        setCurrencyForSymbols();
+        expandAffixes();
+    }
+
+    /**
+     * Update the currency object to match the symbols.  This method
+     * is used only when the caller has passed in a symbols object
+     * that may not be the default object for its locale.
+     */
+    private void setCurrencyForSymbols() {
+        /*Bug 4212072
+          Update the affix strings accroding to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        
+        // With the introduction of the Currency object, the currency
+        // symbols in the DFS object are ignored.  For backward
+        // compatibility, we check any explicitly set DFS object.  If it
+        // is a default symbols object for its locale, we change the
+        // currency object to one for that locale.  If it is custom,
+        // we set the currency to null.
+        DecimalFormatSymbols def =
+            new DecimalFormatSymbols(symbols.getLocale());
+        
+        if (symbols.getCurrencySymbol().equals(
+                def.getCurrencySymbol()) &&
+            symbols.getInternationalCurrencySymbol().equals(
+                def.getInternationalCurrencySymbol())) {
+            setCurrency(Currency.getInstance(symbols.getLocale()));
+        } else {
+            setCurrency(null);
+        }
+    }
+
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public String getPositivePrefix () {
+        return positivePrefix;
+    }
+
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public void setPositivePrefix (String newValue) {
+        positivePrefix = newValue;
+        posPrefixPattern = null;
+    }
+
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public String getNegativePrefix () {
+        return negativePrefix;
+    }
+
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public void setNegativePrefix (String newValue) {
+        negativePrefix = newValue;
+        negPrefixPattern = null;
+    }
+
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public String getPositiveSuffix () {
+        return positiveSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public void setPositiveSuffix (String newValue) {
+        positiveSuffix = newValue;
+        posSuffixPattern = null;
+    }
+
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     * @stable ICU 2.0
+     */
+    public String getNegativeSuffix () {
+        return negativeSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     * @stable ICU 2.0
+     */
+    public void setNegativeSuffix (String newValue) {
+        negativeSuffix = newValue;
+        negSuffixPattern = null;
+    }
+
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public int getMultiplier () {
+        return multiplier;
+    }
+
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public void setMultiplier (int newValue) {
+        if (newValue == 0) {
+            throw new IllegalArgumentException("Bad multiplier: " + newValue);
+        }
+        multiplier = newValue;
+    }
+    
+    // [NEW]
+    /**
+     * Get the rounding increment.
+     * @return A positive rounding increment, or <code>null</code> if rounding
+     * is not in effect.
+     * @see #setRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+//#if defined(FOUNDATION10) || defined(ECLIPSE_FRAGMENT)
+//##    public BigDecimal getRoundingIncrement() {
+//##        if (roundingIncrementICU == null) return null;
+//##        return new BigDecimal(roundingIncrementICU.toString());
+//##    }
+//#else
+    public java.math.BigDecimal getRoundingIncrement() {
+        if (roundingIncrementICU == null) return null;
+        return roundingIncrementICU.toBigDecimal();
+    }
+//#endif
+    
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+    public void setRoundingIncrement(java.math.BigDecimal newValue) {
+        if (newValue == null) {
+            setRoundingIncrement((BigDecimal)null);
+        } else {
+            setRoundingIncrement(new BigDecimal(newValue));
+        }
+    }
+//#endif
+    
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 3.6
+     */
+    public void setRoundingIncrement(BigDecimal newValue) {
+        int i = newValue == null
+            ? 0 : newValue.compareTo(BigDecimal.ZERO);
+        if (i < 0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        if (i == 0) {
+            setInternalRoundingIncrement(null);
+        } else {
+            setInternalRoundingIncrement(newValue);
+        }
+        setRoundingDouble();
+    }
+
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or 0.0 to disable
+     * rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+    public void setRoundingIncrement(double newValue) {
+        if (newValue < 0.0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        roundingDouble = newValue;
+        roundingDoubleReciprocal = 0.0d;
+        if (newValue == 0.0d) {
+            setRoundingIncrement((BigDecimal)null);
+        } else {
+            roundingDouble = newValue;
+            if (roundingDouble < 1.0d) {
+                double rawRoundedReciprocal = 1.0d/roundingDouble;
+                setRoundingDoubleReciprocal(rawRoundedReciprocal);
+            }
+            setInternalRoundingIncrement(new BigDecimal(newValue));
+        }
+    }
+
+
+    private void setRoundingDoubleReciprocal(double rawRoundedReciprocal) {
+        roundingDoubleReciprocal = Math.rint(rawRoundedReciprocal);
+        if (Math.abs(rawRoundedReciprocal - roundingDoubleReciprocal) > roundingIncrementEpsilon) {
+            roundingDoubleReciprocal = 0.0d;
+        }
+    }
+    
+    static final double roundingIncrementEpsilon = 0.000000001;
+    
+    /**
+     * Get the rounding mode.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #setRoundingMode
+     * @see java.math.BigDecimal
+     * @stable ICU 2.0
+     */
+    public int getRoundingMode() {
+        return roundingMode;
+    }
+
+    /**
+     * Set the rounding mode.  This has no effect unless the rounding
+     * increment is greater than zero.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @exception IllegalArgumentException if <code>roundingMode</code>
+     * is unrecognized.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see java.math.BigDecimal
+     * @stable ICU 2.0
+     */
+    public void setRoundingMode(int roundingMode) {
+        if (roundingMode < BigDecimal.ROUND_UP
+            || roundingMode > BigDecimal.ROUND_UNNECESSARY) {
+            throw new IllegalArgumentException("Invalid rounding mode: "
+                                               + roundingMode);
+        }
+        this.roundingMode = roundingMode;
+    }
+
+    // [NEW]
+    /**
+     * Get the width to which the output of <code>format()</code> is padded.
+     * The width is counted in 16-bit code units.
+     * @return the format width, or zero if no padding is in effect
+     * @see #setFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public int getFormatWidth() {
+        return formatWidth;
+    }
+
+    // [NEW]
+    /**
+     * Set the width to which the output of <code>format()</code> is padded.
+     * The width is counted in 16-bit code units.
+     * This method also controls whether padding is enabled.
+     * @param width the width to which to pad the result of
+     * <code>format()</code>, or zero to disable padding
+     * @exception IllegalArgumentException if <code>width</code> is < 0
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public void setFormatWidth(int width) {
+        if (width < 0) {
+            throw new IllegalArgumentException("Illegal format width");
+        }
+        formatWidth = width;
+    }
+
+    // [NEW]
+    /**
+     * Get the character used to pad to the format width.  The default is ' '.
+     * @return the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public char getPadCharacter() {
+        return pad;
+    }
+
+    // [NEW]
+    /**
+     * Set the character used to pad to the format width.  If padding
+     * is not enabled, then this will take effect if padding is later
+     * enabled.
+     * @param padChar the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public void setPadCharacter(char padChar) {
+        pad = padChar;
+    }
+
+    // [NEW]
+    /**
+     * Get the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.
+     * @return the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #setPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public int getPadPosition() {
+        return padPosition;
+    }
+
+    // [NEW]
+    /**
+     * Set the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.  This has no effect unless padding is
+     * enabled.
+     * @param padPos the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @exception IllegalArgumentException if the pad position in
+     * unrecognized
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public void setPadPosition(int padPos) {
+        if (padPos < PAD_BEFORE_PREFIX || padPos > PAD_AFTER_SUFFIX) {
+            throw new IllegalArgumentException("Illegal pad position");
+        }
+        padPosition = padPos;
+    }
+
+    // [NEW]
+    /**
+     * Return whether or not scientific notation is used.
+     * @return true if this object formats and parses scientific notation
+     * @see #setScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public boolean isScientificNotation() {
+        return useExponentialNotation;
+    }
+
+    // [NEW]
+    /**
+     * Set whether or not scientific notation is used.  When scientific notation
+     * is used, the effective maximum number of integer digits is <= 8.  If the
+     * maximum number of integer digits is set to more than 8, the effective
+     * maximum will be 1.  This allows this call to generate a 'default' scientific
+     * number format without additional changes.
+     * @param useScientific true if this object formats and parses scientific
+     * notation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setScientificNotation(boolean useScientific) {
+        useExponentialNotation = useScientific;
+    }
+
+    // [NEW]
+    /**
+     * Return the minimum exponent digits that will be shown.
+     * @return the minimum exponent digits that will be shown
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public byte getMinimumExponentDigits() {
+        return minExponentDigits;
+    }
+    
+    // [NEW]
+    /**
+     * Set the minimum exponent digits that will be shown.  This has no
+     * effect unless scientific notation is in use.
+     * @param minExpDig a value >= 1 indicating the fewest exponent digits
+     * that will be shown
+     * @exception IllegalArgumentException if <code>minExpDig</code> < 1
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setMinimumExponentDigits(byte minExpDig) {
+        if (minExpDig < 1) {
+            throw new IllegalArgumentException("Exponent digits must be >= 1");
+        }
+        minExponentDigits = minExpDig;
+    }
+
+    // [NEW]
+    /**
+     * Return whether the exponent sign is always shown.
+     * @return true if the exponent is always prefixed with either the
+     * localized minus sign or the localized plus sign, false if only negative
+     * exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public boolean isExponentSignAlwaysShown() {
+        return exponentSignAlwaysShown;
+    }
+
+    // [NEW]
+    /**
+     * Set whether the exponent sign is always shown.  This has no effect
+     * unless scientific notation is in use.
+     * @param expSignAlways true if the exponent is always prefixed with either
+     * the localized minus sign or the localized plus sign, false if only
+     * negative exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setExponentSignAlwaysShown(boolean expSignAlways) {
+        exponentSignAlwaysShown = expSignAlways;
+    }
+
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getGroupingSize () {
+        return groupingSize;
+    }
+
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setGroupingSize (int newValue) {
+        groupingSize = (byte)newValue;
+    }
+
+    // [NEW]
+    /**
+     * Return the secondary grouping size. In some locales one
+     * grouping interval is used for the least significant integer
+     * digits (the primary grouping size), and another is used for all
+     * others (the secondary grouping size).  A formatter supporting a
+     * secondary grouping size will return a positive integer unequal
+     * to the primary grouping size returned by
+     * <code>getGroupingSize()</code>.  For example, if the primary
+     * grouping size is 4, and the secondary grouping size is 2, then
+     * the number 123456789 formats as "1,23,45,6789", and the pattern
+     * appears as "#,##,###0".
+     * @return the secondary grouping size, or a value less than
+     * one if there is none
+     * @see #setSecondaryGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getSecondaryGroupingSize () {
+        return groupingSize2;
+    }
+
+    // [NEW]
+    /**
+     * Set the secondary grouping size. If set to a value less than 1,
+     * then secondary grouping is turned off, and the primary grouping
+     * size is used for all intervals, not just the least significant.
+     * @see #getSecondaryGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setSecondaryGroupingSize (int newValue) {
+        groupingSize2 = (byte)newValue;
+    }
+
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return decimalSeparatorAlwaysShown;
+    }
+
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     *
+     * <p>This only affects formatting, and only where
+     * there might be no digits after the decimal point, e.g.,
+     * if true,  3456.00 -> "3,456."
+     * if false, 3456.00 -> "3456"
+     * This is independent of parsing.  If you want parsing to stop at the decimal
+     * point, use setParseIntegerOnly.
+     *
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        decimalSeparatorAlwaysShown = newValue;
+    }
+
+    /**
+     * Standard override; no change in semantics.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            DecimalFormat other = (DecimalFormat) super.clone();
+            other.symbols = (DecimalFormatSymbols) symbols.clone();
+            other.digitList = new DigitList(); // fix for JB#5358
+            /*
+             * TODO: We need to figure out whether we share a single copy
+             * of DigitList by multiple cloned copies.  format/subformat
+             * are designed to use a single instance, but parse/subparse
+             * implementation is not. 
+             */
+            return other;
+        } catch (Exception e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Overrides equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) return false;
+        if (!super.equals(obj)) return false; // super does class check
+
+        DecimalFormat other = (DecimalFormat) obj;
+        /* Add the comparison of the four new added fields ,they are
+         * posPrefixPattern, posSuffixPattern, negPrefixPattern, negSuffixPattern.
+         * [Richard/GCL]
+         */
+        return (posPrefixPattern != null &&
+                    equals(posPrefixPattern, other.posPrefixPattern))
+            && (posSuffixPattern != null &&
+                    equals(posSuffixPattern, other.posSuffixPattern))
+            && (negPrefixPattern != null &&
+                    equals(negPrefixPattern, other.negPrefixPattern))
+            && (negSuffixPattern != null &&
+                    equals(negSuffixPattern, other.negSuffixPattern))
+            && multiplier == other.multiplier
+            && groupingSize == other.groupingSize
+            && groupingSize2 == other.groupingSize2
+            && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown
+            && useExponentialNotation == other.useExponentialNotation
+            && (!useExponentialNotation ||
+                minExponentDigits == other.minExponentDigits)
+            && useSignificantDigits == other.useSignificantDigits
+            && (!useSignificantDigits ||
+                minSignificantDigits == other.minSignificantDigits &&
+                maxSignificantDigits == other.maxSignificantDigits)
+            && symbols.equals(other.symbols);
+    }
+    //method to unquote the strings and compare
+    private boolean equals(String pat1, String pat2){
+        //fast path
+        if(pat1.equals(pat2)){
+            return true;
+        }
+        return unquote(pat1).equals(unquote(pat2));
+    }
+    private String unquote(String pat){
+        StringBuffer buf = new StringBuffer(pat.length());
+        int i=0;
+        while(i<pat.length()){
+            char ch = pat.charAt(i++);
+            if(ch!=QUOTE){
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+//      protected void handleToString(StringBuffer buf) {
+//          buf.append("\nposPrefixPattern: '" + posPrefixPattern + "'\n");
+//          buf.append("positivePrefix: '" + positivePrefix + "'\n");
+//          buf.append("posSuffixPattern: '" + posSuffixPattern + "'\n");
+//          buf.append("positiveSuffix: '" + positiveSuffix + "'\n");
+//          buf.append("negPrefixPattern: '" + com.ibm.icu.impl.Utility.format1ForSource(negPrefixPattern) + "'\n");
+//          buf.append("negativePrefix: '" + com.ibm.icu.impl.Utility.format1ForSource(negativePrefix) + "'\n");
+//          buf.append("negSuffixPattern: '" + negSuffixPattern + "'\n");
+//          buf.append("negativeSuffix: '" + negativeSuffix + "'\n");
+//          buf.append("multiplier: '" + multiplier + "'\n");
+//          buf.append("groupingSize: '" + groupingSize + "'\n");
+//          buf.append("groupingSize2: '" + groupingSize2 + "'\n");
+//          buf.append("decimalSeparatorAlwaysShown: '" + decimalSeparatorAlwaysShown + "'\n");
+//          buf.append("useExponentialNotation: '" + useExponentialNotation + "'\n");
+//          buf.append("minExponentDigits: '" + minExponentDigits + "'\n");
+//          buf.append("useSignificantDigits: '" + useSignificantDigits + "'\n");
+//          buf.append("minSignificantDigits: '" + minSignificantDigits + "'\n");
+//          buf.append("maxSignificantDigits: '" + maxSignificantDigits + "'\n");           
+//          buf.append("symbols: '" + symbols + "'");
+//      }
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return super.hashCode() * 37 + positivePrefix.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return toPattern( false );
+    }
+
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return toPattern( true );
+    }
+
+    /**
+     * Expand the affix pattern strings into the expanded affix strings.  If any
+     * affix pattern string is null, do not expand it.  This method should be
+     * called any time the symbols or the affix patterns change in order to keep
+     * the expanded affix strings up to date.
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffixes() {
+        // expandAffix() will set currencyChoice to a non-null value if
+        // appropriate AND if it is null.
+        currencyChoice = null;
+
+        // Reuse one StringBuffer for better performance
+        StringBuffer buffer = new StringBuffer();
+        if (posPrefixPattern != null) {
+            expandAffix(posPrefixPattern, buffer, false);
+            positivePrefix = buffer.toString();
+        }
+        if (posSuffixPattern != null) {
+            expandAffix(posSuffixPattern, buffer, false);
+            positiveSuffix = buffer.toString();
+        }
+        if (negPrefixPattern != null) {
+            expandAffix(negPrefixPattern, buffer, false);
+            negativePrefix = buffer.toString();
+        }
+        if (negSuffixPattern != null) {
+            expandAffix(negSuffixPattern, buffer, false);
+            negativeSuffix = buffer.toString();
+        }
+    }
+
+    /**
+     * Expand an affix pattern into an affix string.  All characters in
+     * the pattern are literal unless bracketed by QUOTEs.  The
+     * following characters outside QUOTE are recognized:
+     * PATTERN_PERCENT, PATTERN_PER_MILLE, PATTERN_MINUS, and
+     * CURRENCY_SIGN.  If CURRENCY_SIGN is doubled, it is interpreted as
+     * an international currency sign.  Any other character outside
+     * QUOTE represents itself.  Quoted text must be well-formed.
+     *
+     * This method is used in two distinct ways.  First, it is used to expand
+     * the stored affix patterns into actual affixes.  For this usage, doFormat
+     * must be false.  Second, it is used to expand the stored affix patterns
+     * given a specific number (doFormat == true), for those rare cases in
+     * which a currency format references a ChoiceFormat (e.g., en_IN display
+     * name for INR).  The number itself is taken from digitList.
+     *
+     * When used in the first way, this method has a side effect: It sets
+     * currencyChoice to a ChoiceFormat object, if the currency's display name
+     * in this locale is a ChoiceFormat pattern (very rare).  It only does this
+     * if currencyChoice is null to start with.
+     *
+     * @param pattern the non-null, possibly empty pattern
+     * @param buffer a scratch StringBuffer; its contents will be lost
+     * @param doFormat if false, then the pattern will be expanded, and if a
+     * currency symbol is encountered that expands to a ChoiceFormat, the
+     * currencyChoice member variable will be initialized if it is null.  If
+     * doFormat is true, then it is assumed that the currencyChoice has been
+     * created, and it will be used to format the value in digitList.
+     * @return the expanded equivalent of pattern
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffix(String pattern, StringBuffer buffer,
+                             boolean doFormat) {
+        buffer.setLength(0);
+        for (int i=0; i<pattern.length(); ) {
+            char c = pattern.charAt(i++);
+            if (c == QUOTE) {
+                for (;;) {
+                    int j = pattern.indexOf(QUOTE, i);
+                    if (j == i) {
+                        buffer.append(QUOTE);
+                        i = j+1;
+                        break;
+                    } else if (j > i) {
+                        buffer.append(pattern.substring(i, j));
+                        i = j+1;
+                        if (i<pattern.length() &&
+                            pattern.charAt(i)==QUOTE) {
+                            buffer.append(QUOTE);
+                            ++i;
+                            // loop again
+                        } else {
+                            break;
+                        }
+                    } else {
+                        // Unterminated quote; should be caught by apply
+                        // pattern.
+                        throw new RuntimeException();
+                    }
+                }
+                continue;
+            }
+
+            switch (c) {
+            case CURRENCY_SIGN:
+                // As of ICU 2.2 we use the currency object, and
+                // ignore the currency symbols in the DFS, unless
+                // we have a null currency object.  This occurs if
+                // resurrecting a pre-2.2 object or if the user
+                // sets a custom DFS.
+                boolean intl = i<pattern.length() &&
+                    pattern.charAt(i) == CURRENCY_SIGN;
+                if (intl) {
+                    ++i;
+                }
+                String s = null;
+                Currency currency = getCurrency();
+                if (currency != null) {
+                    if (!intl) {
+                        boolean isChoiceFormat[] = new boolean[1];
+                        s = currency.getName(symbols.getULocale(),
+                                             Currency.SYMBOL_NAME,
+                                             isChoiceFormat);
+                        if (isChoiceFormat[0]) {
+                            // Two modes here: If doFormat is false, we set up
+                            // currencyChoice.  If doFormat is true, we use the
+                            // previously created currencyChoice to format the
+                            // value in digitList.
+                            if (!doFormat) {
+                                // If the currency is handled by a ChoiceFormat,
+                                // then we're not going to use the expanded
+                                // patterns.  Instantiate the ChoiceFormat and
+                                // return.
+                                if (currencyChoice == null) {
+                                    currencyChoice = new ChoiceFormat(s);
+                                }
+                                // We could almost return null or "" here, since the
+                                // expanded affixes are almost not used at all
+                                // in this situation.  However, one method --
+                                // toPattern() -- still does use the expanded
+                                // affixes, in order to set up a padding
+                                // pattern.  We use the CURRENCY_SIGN as a
+                                // placeholder.
+                                s = String.valueOf(CURRENCY_SIGN);
+                            } else {
+                                FieldPosition pos = new FieldPosition(0); // ignored
+                                currencyChoice.format(digitList.getDouble(), buffer, pos);
+                                continue;
+                            }
+                        }
+                    } else {
+                        s = currency.getCurrencyCode();
+                    }
+                } else {
+                    s = intl ? symbols.getInternationalCurrencySymbol()
+                        : symbols.getCurrencySymbol();
+                }
+                buffer.append(s);
+                continue;
+            case PATTERN_PERCENT:
+                c = symbols.getPercent();
+                break;
+            case PATTERN_PER_MILLE:
+                c = symbols.getPerMill();
+                break;
+            case PATTERN_MINUS:
+                c = symbols.getMinusSign();
+                break;
+            }
+            buffer.append(c);
+        }
+    }
+
+    /**
+     * Append an affix to the given StringBuffer.
+     * @param buf buffer to append to
+     * @param isNegative
+     * @param isPrefix
+     */
+    private int appendAffix(StringBuffer buf, boolean isNegative,
+            boolean isPrefix, boolean parseAttr) {
+        if (currencyChoice != null) {
+            String affixPat = null;
+            if (isPrefix) {
+                affixPat = isNegative ? negPrefixPattern : posPrefixPattern;
+            } else {
+                affixPat = isNegative ? negSuffixPattern : posSuffixPattern;
+            }
+            StringBuffer affixBuf = new StringBuffer();
+            expandAffix(affixPat, affixBuf, true);
+            buf.append(affixBuf.toString());
+            return affixBuf.length();
+        }
+
+        String affix = null;
+        if (isPrefix) {
+            affix = isNegative ? negativePrefix : positivePrefix;
+        } else {
+            affix = isNegative ? negativeSuffix : positiveSuffix;
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        // [Spark/CDL] Invoke formatAffix2Attribute to add attributes for affix
+        if (parseAttr) {
+            int offset = affix.indexOf(symbols.getCurrencySymbol());
+            if (-1 == offset) {
+                offset = affix.indexOf(symbols.getPercent());
+                if(-1 == offset) {
+                    offset = 0;
+                }
+            }
+            formatAffix2Attribute(affix, buf.length() + offset, buf.length()
+                    + affix.length());
+        }
+//#endif
+        buf.append(affix);
+        return affix.length();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * [Spark/CDL] This is a newly added method, used to add attributes for
+     * prefix and suffix.
+     */
+    private void formatAffix2Attribute(String affix, int begin, int end) {
+        // [Spark/CDL] It is the invoker's responsibility to ensure that, before
+        // the invocation of
+        // this method, attributes is not null.
+        // if( attributes == null ) return;
+        if (affix.indexOf(symbols.getCurrencySymbol()) > -1) {
+            addAttribute(Field.CURRENCY, begin, end);
+        } else if (affix.indexOf(symbols.getMinusSign()) > -1) {
+            addAttribute(Field.SIGN, begin, end);
+        } else if (affix.indexOf(symbols.getPercent()) > -1) {
+            addAttribute(Field.PERCENT, begin, end);
+        } else if (affix.indexOf(symbols.getPerMill()) > -1) {
+            addAttribute(Field.PERMILLE, begin, end);
+        }
+    }
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * [Spark/CDL] Use this method to add attribute.
+     */
+    private void addAttribute(Field field, int begin, int end) {
+        FieldPosition pos = new FieldPosition(field);
+        pos.setBeginIndex(begin);
+        pos.setEndIndex(end);
+        attributes.add(pos);
+    }
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Format the object to an attributed string, and return the corresponding iterator
+     * Overrides superclass method.
+     * @stable ICU 3.6
+     */
+    // [Spark/CDL] 
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        if (!(obj instanceof Number))
+            throw new IllegalArgumentException();
+        Number number = (Number) obj;
+        StringBuffer text = null;
+        attributes.clear();
+        if (obj instanceof BigInteger) {
+            text = format((BigInteger) number, new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof java.math.BigDecimal) {
+            text = format((java.math.BigDecimal) number, new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof Double) {
+            text = format(number.doubleValue(), new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof Integer || obj instanceof Long) {
+            text = format(number.longValue(), new StringBuffer(),
+                    new FieldPosition(0), true);
+        }
+
+        AttributedString as = new AttributedString(text.toString());
+
+        // add NumberFormat field attributes to the AttributedString
+        for (int i = 0; i < attributes.size(); i++) {
+            FieldPosition pos = (FieldPosition) attributes.get(i);
+            Format.Field attribute = pos.getFieldAttribute();
+            as.addAttribute(attribute, attribute, pos.getBeginIndex(), pos
+                    .getEndIndex());
+        }
+
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+//#endif
+    /**
+     * Append an affix pattern to the given StringBuffer.  Localize unquoted
+     * specials.
+     */
+    private void appendAffixPattern(StringBuffer buffer,
+                                    boolean isNegative, boolean isPrefix,
+                                    boolean localized) {
+        String affixPat = null;
+        if (isPrefix) {
+            affixPat = isNegative ? negPrefixPattern : posPrefixPattern;
+        } else {
+            affixPat = isNegative ? negSuffixPattern : posSuffixPattern;
+        }
+
+        // When there is a null affix pattern, we use the affix itself.
+        if (affixPat == null) {
+            String affix = null;
+            if (isPrefix) {
+                affix = isNegative ? negativePrefix : positivePrefix;
+            } else {
+                affix = isNegative ? negativeSuffix : positiveSuffix;
+            }
+            // Do this crudely for now:  Wrap everything in quotes.
+            buffer.append(QUOTE);
+            for (int i=0; i<affix.length(); ++i) {
+                char ch = affix.charAt(i);
+                if (ch == QUOTE) {
+                    buffer.append(ch);
+                }
+                buffer.append(ch);
+            }
+            buffer.append(QUOTE);
+            return;
+        }
+
+        if (!localized) {
+            buffer.append(affixPat);
+        } else {
+            int i, j;
+            for (i=0; i<affixPat.length(); ++i) {
+                char ch = affixPat.charAt(i);
+                switch (ch) {
+                case QUOTE:
+                    j = affixPat.indexOf(QUOTE, i+1);
+                    if (j < 0) {
+                        throw new IllegalArgumentException("Malformed affix pattern: " + affixPat);
+                    }
+                    buffer.append(affixPat.substring(i, j+1));
+                    i = j;
+                    continue;
+                case PATTERN_PER_MILLE:
+                    ch = symbols.getPerMill();
+                    break;
+                case PATTERN_PERCENT:
+                    ch = symbols.getPercent();
+                    break;
+                case PATTERN_MINUS:
+                    ch = symbols.getMinusSign();
+                    break;
+                }
+                //check if char is same as any other symbol
+                if(ch==symbols.getDecimalSeparator() ||
+                   ch==symbols.getGroupingSeparator() ){
+                    buffer.append(QUOTE);
+                    buffer.append(ch);
+                    buffer.append(QUOTE);
+                }else{
+                    buffer.append(ch);
+                }
+            }
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of generating a pattern.
+     */
+    private String toPattern(boolean localized) {
+        StringBuffer result = new StringBuffer();
+        char zero = localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT;
+        char digit = localized ? symbols.getDigit() : PATTERN_DIGIT;
+        char sigDigit = 0;
+        boolean useSigDig = areSignificantDigitsUsed();
+        if (useSigDig) {
+            sigDigit = localized ? symbols.getSignificantDigit() : PATTERN_SIGNIFICANT_DIGIT;
+        }
+        char group = localized ? symbols.getGroupingSeparator()
+                               : PATTERN_GROUPING_SEPARATOR;
+        int i;
+        int roundingDecimalPos = 0; // Pos of decimal in roundingDigits
+        String roundingDigits = null;
+        int padPos = (formatWidth > 0) ? padPosition : -1;
+        String padSpec = (formatWidth > 0)
+            ? new StringBuffer(2).
+                append(localized ? symbols.getPadEscape() : PATTERN_PAD_ESCAPE).
+                append(pad).toString()
+            : null;
+        if (roundingIncrementICU != null) {
+            i = roundingIncrementICU.scale();
+            roundingDigits = roundingIncrementICU.movePointRight(i).toString();
+            roundingDecimalPos = roundingDigits.length() - i;
+        }
+        for (int part=0; part<2; ++part) {
+            // variable not used int partStart = result.length();
+            if (padPos == PAD_BEFORE_PREFIX) {
+                result.append(padSpec);
+            }
+            /* Use original symbols read from resources in pattern
+             * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+             */
+            appendAffixPattern(result, part!=0, true, localized);
+            if (padPos == PAD_AFTER_PREFIX) {
+                result.append(padSpec);
+            }
+            int sub0Start = result.length();
+            int g = isGroupingUsed() ? Math.max(0, groupingSize) : 0;
+            if (g > 0 && groupingSize2 > 0 && groupingSize2 != groupingSize) {
+                g += groupingSize2;
+            }
+            int maxDig = 0, minDig = 0, maxSigDig = 0;
+            if (useSigDig) {
+                minDig = getMinimumSignificantDigits();
+                maxDig = maxSigDig = getMaximumSignificantDigits();
+            } else {
+                minDig = getMinimumIntegerDigits();
+                maxDig = getMaximumIntegerDigits();
+            }
+            if (useExponentialNotation) {
+                if (maxDig > MAX_SCIENTIFIC_INTEGER_DIGITS) {
+                    maxDig = 1;
+                }
+            } else if (useSigDig) {
+                maxDig = Math.max(maxDig, g+1);
+            } else {
+                maxDig = Math.max(Math.max(g, getMinimumIntegerDigits()),
+                                  roundingDecimalPos) + 1;
+            }
+            for (i = maxDig; i > 0; --i) {
+                if (!useExponentialNotation && i<maxDig &&
+                    isGroupingPosition(i)) {
+                    result.append(group);
+                }
+                if (useSigDig) {
+                    //  #@,@###   (maxSigDig == 5, minSigDig == 2)
+                    //  65 4321   (1-based pos, count from the right)
+                    // Use # if pos > maxSigDig or 1 <= pos <= (maxSigDig - minSigDig)
+                    // Use @ if (maxSigDig - minSigDig) < pos <= maxSigDig
+                    result.append((maxSigDig >= i && i > (maxSigDig - minDig)) ? sigDigit : digit);
+                } else {
+                    if (roundingDigits != null) {
+                        int pos = roundingDecimalPos - i;
+                        if (pos >= 0 && pos < roundingDigits.length()) {
+                            result.append((char) (roundingDigits.charAt(pos) - '0' + zero));
+                            continue;
+                        }
+                    }
+                    result.append(i<=minDig ? zero : digit);
+                }
+            }
+            if (!useSigDig) {
+                if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown) {
+                    result.append(localized ? symbols.getDecimalSeparator() :
+                                  PATTERN_DECIMAL_SEPARATOR);
+                }
+                int pos = roundingDecimalPos;
+                for (i = 0; i < getMaximumFractionDigits(); ++i) {
+                    if (roundingDigits != null &&
+                        pos < roundingDigits.length()) {
+                        result.append(pos < 0 ? zero :
+                                      (char) (roundingDigits.charAt(pos) - '0' + zero));
+                        ++pos;
+                        continue;
+                    }
+                    result.append(i<getMinimumFractionDigits() ? zero : digit);
+                }
+            }
+            if (useExponentialNotation) {
+                if(localized ){
+                    result.append(symbols.getExponentSeparator() );
+                }else{
+                    result.append(PATTERN_EXPONENT);
+                }
+                if (exponentSignAlwaysShown) {
+                    result.append(localized ? symbols.getPlusSign() :
+                                  PATTERN_PLUS_SIGN);
+                }
+                for (i=0; i<minExponentDigits; ++i) {
+                    result.append(zero);
+                }
+            }
+            if (padSpec != null && !useExponentialNotation) {
+                int add = formatWidth - result.length() + sub0Start
+                    - ((part == 0)
+                       ? positivePrefix.length() + positiveSuffix.length()
+                       : negativePrefix.length() + negativeSuffix.length());
+                while (add > 0) {
+                    result.insert(sub0Start, digit);
+                    ++maxDig;
+                    --add;
+                    // Only add a grouping separator if we have at least
+                    // 2 additional characters to be added, so we don't
+                    // end up with ",###".
+                    if (add>1 && isGroupingPosition(maxDig)) {
+                        result.insert(sub0Start, group);
+                        --add;                        
+                    }
+                }
+            }
+            if (padPos == PAD_BEFORE_SUFFIX) {
+                result.append(padSpec);
+            }
+            /* Use original symbols read from resources in pattern
+             * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+             */
+            appendAffixPattern(result, part!=0, false, localized);
+            if (padPos == PAD_AFTER_SUFFIX) {
+                result.append(padSpec);
+            }
+            if (part == 0) {
+                if (negativeSuffix.equals(positiveSuffix) &&
+                    negativePrefix.equals( PATTERN_MINUS + positivePrefix)) {
+                    break;
+                } else {
+                    result.append(localized ? symbols.getPatternSeparator() :
+                                  PATTERN_SEPARATOR);
+                }
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyPattern( String pattern ) {
+        applyPattern( pattern, false );
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern( String pattern ) {
+        applyPattern( pattern, true );
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of applying a pattern.
+     */
+    private void applyPattern(String pattern, boolean localized) {
+        char zeroDigit         = PATTERN_ZERO_DIGIT; // '0'
+        char sigDigit          = PATTERN_SIGNIFICANT_DIGIT; // '@'
+        char groupingSeparator = PATTERN_GROUPING_SEPARATOR;
+        char decimalSeparator  = PATTERN_DECIMAL_SEPARATOR;
+        char percent           = PATTERN_PERCENT;
+        char perMill           = PATTERN_PER_MILLE;
+        char digit             = PATTERN_DIGIT; // '#'
+        char separator         = PATTERN_SEPARATOR;
+        String exponent        = String.valueOf(PATTERN_EXPONENT);
+        char plus              = PATTERN_PLUS_SIGN;
+        char padEscape         = PATTERN_PAD_ESCAPE;
+        char minus             = PATTERN_MINUS; //Bug 4212072 [Richard/GCL]
+        if (localized) {
+            zeroDigit         = symbols.getZeroDigit();
+            sigDigit          = symbols.getSignificantDigit();
+            groupingSeparator = symbols.getGroupingSeparator();
+            decimalSeparator  = symbols.getDecimalSeparator();
+            percent           = symbols.getPercent();
+            perMill           = symbols.getPerMill();
+            digit             = symbols.getDigit();
+            separator         = symbols.getPatternSeparator();
+            exponent          = symbols.getExponentSeparator();
+            plus              = symbols.getPlusSign();
+            padEscape         = symbols.getPadEscape();
+            minus             = symbols.getMinusSign(); //Bug 4212072 [Richard/GCL]
+        }
+        char nineDigit = (char) (zeroDigit + 9);
+
+        boolean gotNegative = false;
+
+        int pos = 0;
+        // Part 0 is the positive pattern.  Part 1, if present, is the negative
+        // pattern.
+        for (int part=0; part<2 && pos<pattern.length(); ++part) {
+            // The subpart ranges from 0 to 4: 0=pattern proper, 1=prefix,
+            // 2=suffix, 3=prefix in quote, 4=suffix in quote.  Subpart 0 is
+            // between the prefix and suffix, and consists of pattern
+            // characters.  In the prefix and suffix, percent, permille, and
+            // currency symbols are recognized and translated.
+            int subpart = 1, sub0Start = 0, sub0Limit = 0, sub2Limit = 0;
+
+            // It's important that we don't change any fields of this object
+            // prematurely.  We set the following variables for the multiplier,
+            // grouping, etc., and then only change the actual object fields if
+            // everything parses correctly.  This also lets us register
+            // the data from part 0 and ignore the part 1, except for the
+            // prefix and suffix.
+            StringBuffer prefix = new StringBuffer();
+            StringBuffer suffix = new StringBuffer();
+            int decimalPos = -1;
+            int multpl = 1;
+            int digitLeftCount = 0, zeroDigitCount = 0, digitRightCount = 0, sigDigitCount = 0;
+            byte groupingCount = -1;
+            byte groupingCount2 = -1;
+            int padPos = -1;
+            char padChar = 0;
+            int incrementPos = -1;
+            long incrementVal = 0;
+            byte expDigits = -1;
+            boolean expSignAlways = false;
+            boolean isCurrency = false;
+
+            // The affix is either the prefix or the suffix.
+            StringBuffer affix = prefix;
+
+            int start = pos;
+
+        PARTLOOP:
+            for (; pos < pattern.length(); ++pos) {
+                char ch = pattern.charAt(pos);
+                switch (subpart) {
+                case 0: // Pattern proper subpart (between prefix & suffix)
+                    // Process the digits, decimal, and grouping characters.  We
+                    // record five pieces of information.  We expect the digits
+                    // to occur in the pattern ####00.00####, and we record the
+                    // number of left digits, zero (central) digits, and right
+                    // digits.  The position of the last grouping character is
+                    // recorded (should be somewhere within the first two blocks
+                    // of characters), as is the position of the decimal point,
+                    // if any (should be in the zero digits).  If there is no
+                    // decimal point, then there should be no right digits.
+                    if (ch == digit) {
+                        if (zeroDigitCount > 0 || sigDigitCount > 0) {
+                            ++digitRightCount;
+                        } else {
+                            ++digitLeftCount;
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if ((ch >= zeroDigit && ch <= nineDigit) ||
+                               ch == sigDigit) {
+                        if (digitRightCount > 0) {
+                            patternError("Unexpected '" + ch + '\'', pattern);
+                        }
+                        if (ch == sigDigit) {
+                            ++sigDigitCount;
+                        } else {
+                            ++zeroDigitCount;
+                            if (ch != zeroDigit) {
+                                int p = digitLeftCount + zeroDigitCount
+                                    + digitRightCount;
+                                if (incrementPos >= 0) {
+                                    while (incrementPos < p) {
+                                        incrementVal *= 10;
+                                        ++incrementPos;
+                                    }
+                                } else {
+                                    incrementPos = p;
+                                }
+                                incrementVal += ch - zeroDigit;
+                            }
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if (ch == groupingSeparator) {
+                        /*Bug 4212072
+                          process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                          (Locale="CH", groupingSeparator == QUOTE)                          
+                          [Richard/GCL]
+                        */
+                        if (ch == QUOTE && (pos+1) < pattern.length()) {
+                            char after = pattern.charAt(pos+1);
+                            if (!(after == digit || (after >= zeroDigit && after <= nineDigit))) {
+                                // A quote outside quotes indicates either the opening
+                                // quote or two quotes, which is a quote literal.  That is,
+                                // we have the first quote in 'do' or o''clock.
+                                if (after == QUOTE) {
+                                    ++pos;
+                                    // Fall through to append(ch)
+                                } else {
+                                    if (groupingCount < 0) {
+                                        subpart = 3; // quoted prefix subpart
+                                    } else {
+                                      // Transition to suffix subpart
+                                      subpart = 2; // suffix subpart
+                                      affix = suffix;
+                                      sub0Limit = pos--;
+                                    }
+                                    continue;
+                                }
+                            }
+                        }
+                        
+                        if (decimalPos >= 0) {
+                            patternError("Grouping separator after decimal", pattern);
+                        }
+                        groupingCount2 = groupingCount;
+                        groupingCount = 0;
+                    } else if (ch == decimalSeparator) {
+                        if (decimalPos >= 0) {
+                            patternError("Multiple decimal separators", pattern);
+                        }
+                        // Intentionally incorporate the digitRightCount,
+                        // even though it is illegal for this to be > 0
+                        // at this point.  We check pattern syntax below.
+                        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
+                    } else {
+                        if (pattern.regionMatches(pos, exponent, 0, exponent.length())) {
+                            if (expDigits >= 0) {
+                                patternError("Multiple exponential symbols", pattern);
+                            }
+                            if (groupingCount >= 0) {
+                                patternError("Grouping separator in exponential", pattern);
+                            }
+                            pos += exponent.length();
+                            // Check for positive prefix
+                            if (pos < pattern.length()
+                                && pattern.charAt(pos) == plus) {
+                                expSignAlways = true;
+                                ++pos;
+                            }
+                            // Use lookahead to parse out the exponential part of the
+                            // pattern, then jump into suffix subpart.
+                            expDigits = 0;
+                            while (pos < pattern.length() &&
+                                   pattern.charAt(pos) == zeroDigit) {
+                                ++expDigits;
+                                ++pos;
+                            }
+                            
+                            // 1. Require at least one mantissa pattern digit
+                            // 2. Disallow "#+ @" in mantissa
+                            // 3. Require at least one exponent pattern digit
+                            if (((digitLeftCount + zeroDigitCount) < 1 &&
+                                 (sigDigitCount + digitRightCount) < 1) ||
+                                (sigDigitCount > 0 && digitLeftCount > 0) ||
+                                expDigits < 1) {
+                                patternError("Malformed exponential", pattern);
+                            }
+                        }
+                        // Transition to suffix subpart
+                        subpart = 2; // suffix subpart
+                        affix = suffix;
+                        sub0Limit = pos--; // backup: for() will increment
+                        continue;
+                    }
+                    break;
+                case 1: // Prefix subpart
+                case 2: // Suffix subpart
+                    // Process the prefix / suffix characters
+                    // Process unquoted characters seen in prefix or suffix
+                    // subpart.
+                    
+                    // Several syntax characters implicitly begins the
+                    // next subpart if we are in the prefix; otherwise
+                    // they are illegal if unquoted.
+                    if (ch == digit ||
+                        ch == groupingSeparator ||
+                        ch == decimalSeparator ||
+                        (ch >= zeroDigit && ch <= nineDigit) ||
+                        ch == sigDigit) {
+                        // Any of these characters implicitly begins the
+                        // next subpart if we are in the prefix
+                        if (subpart == 1) { // prefix subpart
+                            subpart = 0; // pattern proper subpart
+                            sub0Start = pos--; // Reprocess this character
+                            continue;
+                        } else if (ch == QUOTE) {
+                            /*Bug 4212072
+                              process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                              (Locale="CH", groupingSeparator == QUOTE)                          
+                              [Richard/GCL]
+                            */
+                            // A quote outside quotes indicates either the opening
+                            // quote or two quotes, which is a quote literal.  That is,
+                            // we have the first quote in 'do' or o''clock.
+                            if ((pos+1) < pattern.length() &&
+                                pattern.charAt(pos+1) == QUOTE) {
+                                ++pos;
+                                affix.append(ch);
+                            } else {
+                                subpart += 2; // open quote
+                            }
+                            continue;
+                        }
+                        patternError("Unquoted special character '" + ch + '\'', pattern);
+                    } else if (ch == CURRENCY_SIGN) {
+                        // Use lookahead to determine if the currency sign is
+                        // doubled or not.
+                        boolean doubled = (pos + 1) < pattern.length() &&
+                            pattern.charAt(pos + 1) == CURRENCY_SIGN;
+                        /*Bug 4212072
+                         To meet the need of expandAffix(String, StirngBuffer)
+                         [Richard/GCL]
+                        */
+                        if (doubled) {
+                            ++pos; // Skip over the doubled character
+                            affix.append(ch); // append two: one here, one below
+                        }
+                        isCurrency = true;
+                        // Fall through to append(ch)
+                    } else if (ch == QUOTE) {
+                        // A quote outside quotes indicates either the opening
+                        // quote or two quotes, which is a quote literal.  That is,
+                        // we have the first quote in 'do' or o''clock.
+                        if((pos+1) < pattern.length()&&
+                            pattern.charAt(pos+1)==QUOTE){
+                            ++pos;
+                            affix.append(ch); // append two: one here, one below
+                        }else{
+                            subpart += 2; // open quote
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == separator) {
+                        // Don't allow separators in the prefix, and don't allow
+                        // separators in the second pattern (part == 1).
+                        if (subpart == 1 || part == 1) {
+                            patternError("Unquoted special character '" + ch + '\'', pattern);
+                        }
+                        sub2Limit = pos++;
+                        break PARTLOOP; // Go to next part
+                    } else if (ch == percent || ch == perMill) {
+                        // Next handle characters which are appended directly.
+                        if (multpl != 1) {
+                            patternError("Too many percent/permille characters", pattern);
+                        }
+                        multpl = (ch == percent) ? 100 : 1000;
+                        // Convert to non-localized pattern
+                        ch = (ch == percent) ? PATTERN_PERCENT : PATTERN_PER_MILLE;
+                        // Fall through to append(ch)
+                    } else if (ch == minus) {
+                        // Convert to non-localized pattern
+                        ch = PATTERN_MINUS;
+                        // Fall through to append(ch)
+                    } else if (ch == padEscape) {
+                        if (padPos >= 0) {
+                            patternError("Multiple pad specifiers", pattern);
+                        }
+                        if ((pos+1) == pattern.length()) {
+                            patternError("Invalid pad specifier", pattern);
+                        }
+                        padPos = pos++; // Advance past pad char
+                        padChar = pattern.charAt(pos);
+                        continue;
+                    }
+                    affix.append(ch);
+                    break;
+                case 3: // Prefix subpart, in quote
+                case 4: // Suffix subpart, in quote
+                    // A quote within quotes indicates either the closing
+                    // quote or two quotes, which is a quote literal.  That is,
+                    // we have the second quote in 'do' or 'don''t'.
+                    if (ch == QUOTE) {
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos; 
+                            affix.append(ch);
+                        } else {
+                            subpart -= 2; // close quote
+                        }
+                        // Fall through to append(ch)
+                    }
+                    // NOTE: In ICU 2.2 there was code here to parse quoted
+                    // percent and permille characters _within quotes_ and give
+                    // them special meaning.  This is incorrect, since quoted
+                    // characters are literals without special meaning.
+                    affix.append(ch);
+                    break;                    
+                }
+            }
+            
+            if (subpart == 3 || subpart == 4) {
+                patternError("Unterminated quote", pattern);
+            }
+
+            if (sub0Limit == 0) {
+                sub0Limit = pattern.length();
+            }
+
+            if (sub2Limit == 0) {
+                sub2Limit = pattern.length();
+            }
+
+            /* Handle patterns with no '0' pattern character.  These patterns
+             * are legal, but must be recodified to make sense.  "##.###" ->
+             * "#0.###".  ".###" -> ".0##".
+             *
+             * We allow patterns of the form "####" to produce a zeroDigitCount
+             * of zero (got that?); although this seems like it might make it
+             * possible for format() to produce empty strings, format() checks
+             * for this condition and outputs a zero digit in this situation.
+             * Having a zeroDigitCount of zero yields a minimum integer digits
+             * of zero, which allows proper round-trip patterns.  We don't want
+             * "#" to become "#0" when toPattern() is called (even though that's
+             * what it really is, semantically).
+             */
+            if (zeroDigitCount == 0 && sigDigitCount == 0 &&
+                digitLeftCount > 0 && decimalPos >= 0) {
+                // Handle "###.###" and "###." and ".###"
+                int n = decimalPos;
+                if (n == 0) ++n; // Handle ".###"
+                digitRightCount = digitLeftCount - n;
+                digitLeftCount = n - 1;
+                zeroDigitCount = 1;
+            }
+
+            // Do syntax checking on the digits, decimal points, and quotes.
+            if ((decimalPos < 0 && digitRightCount > 0 && sigDigitCount == 0) ||
+                (decimalPos >= 0 &&
+                 (sigDigitCount > 0 ||
+                  decimalPos < digitLeftCount ||
+                  decimalPos > (digitLeftCount + zeroDigitCount))) ||
+                groupingCount == 0 || groupingCount2 == 0 ||
+                (sigDigitCount > 0 && zeroDigitCount > 0) ||
+                subpart > 2) { // subpart > 2 == unmatched quote
+                patternError("Malformed pattern", pattern);
+            }
+
+            // Make sure pad is at legal position before or after affix.
+            if (padPos >= 0) {
+                if (padPos == start) {
+                    padPos = PAD_BEFORE_PREFIX;
+                } else if (padPos+2 == sub0Start) {
+                    padPos = PAD_AFTER_PREFIX;
+                } else if (padPos == sub0Limit) {
+                    padPos = PAD_BEFORE_SUFFIX;
+                } else if (padPos+2 == sub2Limit) {
+                    padPos = PAD_AFTER_SUFFIX;
+                } else {
+                    patternError("Illegal pad position", pattern);
+                }
+            }
+
+            if (part == 0) {
+                // Set negative affixes temporarily to match the positive
+                // affixes.  Fix this up later after processing both parts.
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                posPrefixPattern = negPrefixPattern = prefix.toString();
+                posSuffixPattern = negSuffixPattern = suffix.toString();
+
+                useExponentialNotation = (expDigits >= 0);
+                if (useExponentialNotation) {
+                    minExponentDigits = expDigits;
+                    exponentSignAlwaysShown = expSignAlways;
+                }
+                isCurrencyFormat = isCurrency;
+                int digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
+                // The effectiveDecimalPos is the position the decimal is at or
+                // would be at if there is no decimal.  Note that if
+                // decimalPos<0, then digitTotalCount == digitLeftCount +
+                // zeroDigitCount.
+                int effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
+                boolean useSigDig = (sigDigitCount > 0);
+                setSignificantDigitsUsed(useSigDig);
+                if (useSigDig) {
+                    setMinimumSignificantDigits(sigDigitCount);
+                    setMaximumSignificantDigits(sigDigitCount + digitRightCount);
+                } else {
+                    int minInt = effectiveDecimalPos - digitLeftCount;
+                    setMinimumIntegerDigits(minInt);
+                    /*Upper limit on integer and fraction digits for a Java double
+                      [Richard/GCL]
+                    */
+                    setMaximumIntegerDigits(useExponentialNotation
+                        ? digitLeftCount + minInt : DOUBLE_INTEGER_DIGITS);
+                    setMaximumFractionDigits(decimalPos >= 0
+                        ? (digitTotalCount - decimalPos) : 0);
+                    setMinimumFractionDigits(decimalPos >= 0
+                        ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
+                }
+                setGroupingUsed(groupingCount > 0);
+                this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
+                this.groupingSize2 = (groupingCount2 > 0 && groupingCount2 != groupingCount)
+                    ? groupingCount2 : 0;
+                this.multiplier = multpl;
+                setDecimalSeparatorAlwaysShown(decimalPos == 0
+                        || decimalPos == digitTotalCount);
+                if (padPos >= 0) {
+                    padPosition = padPos;
+                    formatWidth = sub0Limit - sub0Start; // to be fixed up below
+                    pad = padChar;
+                } else {
+                    formatWidth = 0;
+                }
+                if (incrementVal != 0) {
+                    // BigDecimal scale cannot be negative (even though
+                    // this makes perfect sense), so we need to handle this.
+                    int scale = incrementPos - effectiveDecimalPos;
+                    roundingIncrementICU =
+                        BigDecimal.valueOf(incrementVal, scale > 0 ? scale : 0);
+                    if (scale < 0) {
+                        roundingIncrementICU =
+                            roundingIncrementICU.movePointRight(-scale);
+                    }
+                    setRoundingDouble();
+                    roundingMode = BigDecimal.ROUND_HALF_EVEN;
+                } else {
+                    setRoundingIncrement((BigDecimal)null);
+                }
+            } else {
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                negPrefixPattern = prefix.toString();
+                negSuffixPattern = suffix.toString();
+                gotNegative = true;
+            }
+        }
+
+        /*Bug 4140009
+          Process the empty pattern
+          [Richard/GCL]
+        */
+        if (pattern.length() == 0) {
+            posPrefixPattern = posSuffixPattern = "";
+            setMinimumIntegerDigits(0);
+            setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+            setMinimumFractionDigits(0);
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        
+        // If there was no negative pattern, or if the negative pattern is
+        // identical to the positive pattern, then prepend the minus sign to the
+        // positive pattern to form the negative pattern.
+        /*Bug 4212072
+          To meet the need of expandAffix(String, StirngBuffer)
+          [Richard/GCL]
+        */
+        if (!gotNegative ||
+            (negPrefixPattern.equals(posPrefixPattern)
+             && negSuffixPattern.equals(posSuffixPattern))) {
+            negSuffixPattern = posSuffixPattern;
+            negPrefixPattern = PATTERN_MINUS + posPrefixPattern;
+        }
+        /*Bug 4212072
+          Update the affix strings accroding to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        expandAffixes();
+
+        // Now that we have the actual prefix and suffix, fix up formatWidth
+        if (formatWidth > 0) {
+            formatWidth += positivePrefix.length() + positiveSuffix.length();
+        }
+        
+        setLocale(null, null);
+    }
+
+    /**
+     * Centralizes the setting of the roundingDouble and roundingDoubleReciprocal.
+     */
+    private void setRoundingDouble() {
+        if (roundingIncrementICU == null) {
+            roundingDouble = 0.0d;
+            roundingDoubleReciprocal = 0.0d;
+        } else {
+            roundingDouble = roundingIncrementICU.doubleValue();
+            setRoundingDoubleReciprocal(BigDecimal.ONE.divide(roundingIncrementICU,BigDecimal.ROUND_HALF_EVEN).doubleValue());
+        }
+    }
+
+    private void patternError(String msg, String pattern) {
+        throw new IllegalArgumentException(msg + " in pattern \"" + pattern + '"');
+    }
+
+    /*Rewrite the following 4 "set" methods
+      Upper limit on integer and fraction digits for a Java double 
+      [Richard/GCL]
+    */
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        super.setMaximumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        super.setMinimumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Returns the minimum number of significant digits that will be
+     * displayed. This value has no effect unless areSignificantDigitsUsed()
+     * returns true.
+     * @return the fewest significant digits that will be shown
+     * @stable ICU 3.0
+     */
+    public int getMinimumSignificantDigits() {
+        return minSignificantDigits;
+    }
+
+    /**
+     * Returns the maximum number of significant digits that will be
+     * displayed. This value has no effect unless areSignificantDigitsUsed()
+     * returns true.
+     * @return the most significant digits that will be shown
+     * @stable ICU 3.0
+     */
+    public int getMaximumSignificantDigits() {
+        return maxSignificantDigits;
+    }
+
+    /**
+     * Sets the minimum number of significant digits that will be
+     * displayed.  If <code>min</code> is less than one then it is set
+     * to one.  If the maximum significant digits count is less than
+     * <code>min</code>, then it is set to <code>min</code>. This
+     * value has no effect unless areSignificantDigitsUsed() returns true.
+     * @param min the fewest significant digits to be shown 
+     * @stable ICU 3.0
+     */
+    public void setMinimumSignificantDigits(int min) {
+        if (min < 1) {
+            min = 1;   
+        }
+        // pin max sig dig to >= min
+        int max = Math.max(maxSignificantDigits, min);
+        minSignificantDigits = min;
+        maxSignificantDigits = max;
+    }
+
+    /**
+     * Sets the maximum number of significant digits that will be
+     * displayed.  If <code>max</code> is less than one then it is set
+     * to one.  If the minimum significant digits count is greater
+     * than <code>max</code>, then it is set to <code>max</code>. This
+     * value has no effect unless areSignificantDigitsUsed() returns true.
+     * @param max the most significant digits to be shown 
+     * @stable ICU 3.0
+     */
+    public void setMaximumSignificantDigits(int max) {
+        if (max < 1) {
+            max = 1;
+        }
+        // pin min sig dig to 1..max
+        int min = Math.min(minSignificantDigits, max);
+        minSignificantDigits = min;
+        maxSignificantDigits = max;
+    }
+
+    /**
+     * Returns true if significant digits are in use or false if
+     * integer and fraction digit counts are in use.
+     * @return true if significant digits are in use
+     * @stable ICU 3.0
+     */
+    public boolean areSignificantDigitsUsed() {
+        return useSignificantDigits;
+    }
+
+    /**
+     * Sets whether significant digits are in use, or integer and
+     * fraction digit counts are in use.
+     * @param useSignificantDigits true to use significant digits, or
+     * false to use integer and fraction digit counts
+     * @stable ICU 3.0
+     */
+    public void setSignificantDigitsUsed(boolean useSignificantDigits) {
+        this.useSignificantDigits = useSignificantDigits;
+    }
+
+    /**
+     * Sets the <tt>Currency</tt> object used to display currency
+     * amounts.  This takes effect immediately, if this format is a
+     * currency format.  If this format is not a currency format, then
+     * the currency object is used if and when this object becomes a
+     * currency format through the application of a new pattern.
+     * @param theCurrency new currency object to use.  Must not be
+     * null.
+     * @stable ICU 2.2
+     */
+    public void setCurrency(Currency theCurrency) {
+        // If we are a currency format, then modify our affixes to
+        // encode the currency symbol for the given currency in our
+        // locale, and adjust the decimal digits and rounding for the
+        // given currency.
+
+        super.setCurrency(theCurrency);
+        if (theCurrency != null) {
+            boolean[] isChoiceFormat = new boolean[1];
+            String s = theCurrency.getName(symbols.getULocale(),
+                    Currency.SYMBOL_NAME,
+                    isChoiceFormat);
+                symbols.setCurrencySymbol(s);
+                symbols.setInternationalCurrencySymbol(theCurrency.getCurrencyCode());
+        }
+
+        if (isCurrencyFormat) {
+            if (theCurrency != null) {
+                setRoundingIncrement(theCurrency.getRoundingIncrement());
+                
+                int d = theCurrency.getDefaultFractionDigits();
+                setMinimumFractionDigits(d);
+                setMaximumFractionDigits(d);
+            }
+            expandAffixes();
+        }
+    }
+
+    /**
+     * Returns the currency in effect for this formatter.  Subclasses
+     * should override this method as needed.  Unlike getCurrency(),
+     * this method should never return null.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected Currency getEffectiveCurrency() {
+        Currency c = getCurrency();
+        if (c == null) {
+            c = Currency.getInstance(symbols.getInternationalCurrencySymbol());
+        }
+        return c;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        super.setMaximumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        super.setMinimumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * Sets whether {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * The default value is false.
+     * @param value true if {@link #parse(String, ParsePosition)} method returns
+     * BigDecimal.
+     * @stable ICU 3.6
+     */
+    public void setParseBigDecimal(boolean value) {
+        parseBigDecimal = value;
+    }
+
+    /**
+     * Returns whether {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * @return true if {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * @stable ICU 3.6
+     */
+    public boolean isParseBigDecimal() {
+        return parseBigDecimal;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    private void writeObject(ObjectOutputStream stream) throws IOException {
+// Doug, do we need this anymore?
+//            if (roundingIncrementICU != null) {
+//                roundingIncrement = roundingIncrementICU.toBigDecimal();
+//            }
+
+        // Ticket#6449
+        // Format.Field instances are not serializable.  When formatToCharacterIterator
+        // is called, attributes (ArrayList) stores FieldPosition instances with
+        // NumberFormat.Field.  Because NumberFormat.Field is not serializable, we need
+        // to clear the contents of the list when writeObject is called.  We could remove
+        // the field or make it transient, but it will break serialization compatibility.
+        attributes.clear();
+
+        stream.defaultWriteObject();
+    }
+//#endif
+
+    /**
+     * First, read the default serializable fields from the stream.  Then
+     * if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1, initialize <code>useExponentialNotation</code>
+     * to false, since it was not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        /*Bug 4185761 validate fields
+          [Richard/GCL]
+        */
+        // We only need to check the maximum counts because NumberFormat
+        // .readObject has already ensured that the maximum is greater than the
+        // minimum count.
+        /*Commented for compatibility with previous version, and reserved for further use
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS ||
+            getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            throw new InvalidObjectException("Digit count out of range");
+        }*/
+        /* Truncate the maximumIntegerDigits to DOUBLE_INTEGER_DIGITS and maximumFractionDigits
+         * to DOUBLE_FRACTION_DIGITS
+         */
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS) {
+             setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+        }
+        if (getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        if (serialVersionOnStream < 2) {
+            exponentSignAlwaysShown = false;
+            setInternalRoundingIncrement(null);
+            setRoundingDouble();
+            roundingMode = BigDecimal.ROUND_HALF_EVEN;
+            formatWidth = 0;
+            pad = ' ';
+            padPosition = PAD_BEFORE_PREFIX;
+            if (serialVersionOnStream < 1) {
+                // Didn't have exponential fields
+                useExponentialNotation = false;
+            }
+        }
+        if (serialVersionOnStream < 3) {
+            // Versions prior to 3 do not store a currency object.
+            // Create one to match the DecimalFormatSymbols object.
+            setCurrencyForSymbols();
+        }
+        serialVersionOnStream = currentSerialVersion;
+        digitList = new DigitList();
+
+//#if defined(FOUNDATION10)
+//#else
+        if (roundingIncrement != null) {
+            setInternalRoundingIncrement(new BigDecimal(roundingIncrement));
+            setRoundingDouble();
+        }   
+//#endif
+    }
+
+
+    private void setInternalRoundingIncrement(BigDecimal value) {
+        roundingIncrementICU = value;
+//#if defined(FOUNDATION10)
+//#else
+        roundingIncrement = value == null ? null : value.toBigDecimal();
+//#endif
+    }
+
+    //----------------------------------------------------------------------
+    // INSTANCE VARIABLES
+    //----------------------------------------------------------------------
+
+    private transient DigitList digitList = new DigitList();
+
+    /**
+     * The symbol used as a prefix when formatting positive numbers, e.g. "+".
+     *
+     * @serial
+     * @see #getPositivePrefix
+     */
+    private String  positivePrefix = "";
+
+    /**
+     * The symbol used as a suffix when formatting positive numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getPositiveSuffix
+     */
+    private String  positiveSuffix = "";
+
+    /**
+     * The symbol used as a prefix when formatting negative numbers, e.g. "-".
+     *
+     * @serial
+     * @see #getNegativePrefix
+     */
+    private String  negativePrefix = "-";
+
+    /**
+     * The symbol used as a suffix when formatting negative numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getNegativeSuffix
+     */
+    private String  negativeSuffix = "";
+    
+    /**
+     * The prefix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positivePrefix</code>.
+     *
+     * <p>This pattern is expanded by the method <code>expandAffix()</code> to
+     * <code>positivePrefix</code> to update the latter to reflect changes in
+     * <code>symbols</code>.  If this variable is <code>null</code> then
+     * <code>positivePrefix</code> is taken as a literal value that does not
+     * change when <code>symbols</code> changes.  This variable is always
+     * <code>null</code> for <code>DecimalFormat</code> objects older than
+     * stream version 2 restored from stream.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posPrefixPattern;
+
+    /**
+     * The suffix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positiveSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posSuffixPattern;
+
+    /**
+     * The prefix pattern for negative numbers.  This variable corresponds
+     * to <code>negativePrefix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negPrefixPattern;
+
+    /**
+     * The suffix pattern for negative numbers.  This variable corresponds
+     * to <code>negativeSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negSuffixPattern;
+
+    /**
+     * Formatter for ChoiceFormat-based currency names.  If this field
+     * is not null, then delegate to it to format currency symbols.
+     * @since ICU 2.6
+     */
+    private ChoiceFormat currencyChoice;
+
+    /**
+     * The multiplier for use in percent, permill, etc.
+     *
+     * @serial
+     * @see #getMultiplier
+     */
+    private int     multiplier = 1;
+    
+    /**
+     * The number of digits between grouping separators in the integer
+     * portion of a number.  Must be greater than 0 if
+     * <code>NumberFormat.groupingUsed</code> is true.
+     *
+     * @serial
+     * @see #getGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     */
+    private byte    groupingSize = 3;  // invariant, > 0 if useThousands
+
+    // [NEW]
+    /**
+     * The secondary grouping size.  This is only used for Hindi
+     * numerals, which use a primary grouping of 3 and a secondary
+     * grouping of 2, e.g., "12,34,567".  If this value is less than
+     * 1, then secondary grouping is equal to the primary grouping.
+     * 
+     */
+    private byte    groupingSize2 = 0;
+    
+    /**
+     * If true, forces the decimal separator to always appear in a formatted
+     * number, even if the fractional part of the number is zero.
+     *
+     * @serial
+     * @see #isDecimalSeparatorAlwaysShown
+     */
+    private boolean decimalSeparatorAlwaysShown = false;
+    
+    /**
+     * True if this object represents a currency format.  This determines
+     * whether the monetary decimal separator is used instead of the normal one.
+     */
+    private transient boolean isCurrencyFormat = false;
+    
+    /**
+     * The <code>DecimalFormatSymbols</code> object used by this format.
+     * It contains the symbols used to format numbers, e.g. the grouping separator,
+     * decimal separator, and so on.
+     *
+     * @serial
+     * @see #setDecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     */
+    private DecimalFormatSymbols symbols = null; // LIU new DecimalFormatSymbols();
+
+    /**
+     * True to use significant digits rather than integer and fraction
+     * digit counts.
+     * @serial
+     * @since ICU 3.0
+     */
+    private boolean useSignificantDigits = false;
+
+    /**
+     * The minimum number of significant digits to show.  Must be >= 1
+     * and <= maxSignificantDigits.  Ignored unless
+     * useSignificantDigits == true.
+     * @serial
+     * @since ICU 3.0
+     */
+    private int minSignificantDigits = 1;
+
+    /**
+     * The maximum number of significant digits to show.  Must be >=
+     * minSignficantDigits.  Ignored unless useSignificantDigits ==
+     * true.
+     * @serial
+     * @since ICU 3.0
+     */
+    private int maxSignificantDigits = 6;
+
+    /**
+     * True to force the use of exponential (i.e. scientific) notation when formatting
+     * numbers.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private boolean useExponentialNotation;  // Newly persistent in JDK 1.2
+
+    /**
+     * The minimum number of digits used to display the exponent when a number is
+     * formatted in exponential notation.  This field is ignored if
+     * <code>useExponentialNotation</code> is not true.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private byte    minExponentDigits;       // Newly persistent in JDK 1.2
+
+    // [NEW]
+    /**
+     * If true, the exponent is always prefixed with either the plus
+     * sign or the minus sign.  Otherwise, only negative exponents are
+     * prefixed with the minus sign.  This has no effect unless
+     * <code>useExponentialNotation</code> is true.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private boolean exponentSignAlwaysShown = false;
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    // Note: this is kept in sync with roundingIncrementICU.
+    // it is only kept around to avoid a conversion when formatting a java.math.BigDecimal
+    private java.math.BigDecimal roundingIncrement = null;
+//#endif
+
+    // [NEW]
+    /**
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * WARNING: the roundingIncrement value is the one serialized.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private transient BigDecimal roundingIncrementICU = null;
+
+    // [NEW]
+    /**
+     * The rounding increment as a double.  If this value is <= 0, then no
+     * rounding is done.  This value is
+     * <code>roundingIncrementICU.doubleValue()</code>.  Default value 0.0.
+     */
+    private transient double roundingDouble = 0.0;
+
+    // [NEW]
+    /**
+     * If the roundingDouble is the reciprocal of an integer (the most common case!),
+     * this is set to be that integer. Otherwise it is 0.0.
+     */
+    private transient double roundingDoubleReciprocal = 0.0;
+
+    // [NEW]
+    /**
+     * The rounding mode.  This value controls any rounding operations which
+     * occur when applying a rounding increment or when reducing the number of
+     * fraction digits to satisfy a maximum fraction digits limit.  The value
+     * may assume any of the <code>BigDecimal</code> rounding mode values.
+     * Default value <code>BigDecimal.ROUND_HALF_EVEN</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int roundingMode = BigDecimal.ROUND_HALF_EVEN;
+
+    // [NEW]
+    /**
+     * The padded format width, or zero if there is no padding.  Must
+     * be >= 0.  Default value zero.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int formatWidth = 0;
+
+    // [NEW]
+    /**
+     * The character used to pad the result of format to
+     * <code>formatWidth</code>, if padding is in effect.  Default value ' '.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private char pad = ' ';
+
+    // [NEW]
+    /**
+     * The position in the string at which the <code>pad</code> character
+     * will be inserted, if padding is in effect.  Must have a value from
+     * <code>PAD_BEFORE_PREFIX</code> to <code>PAD_AFTER_SUFFIX</code>.
+     * Default value <code>PAD_BEFORE_PREFIX</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int padPosition = PAD_BEFORE_PREFIX;
+
+    /**
+     * True if {@link #parse(String, ParsePosition)} to return BigDecimal
+     * rather than Long, Double or BigDecimal except special values.
+     * This property is introduced for J2SE 5 compatibility support.
+     * @serial
+     * @since ICU 3.6
+     * @see #setParseBigDecimal(boolean)
+     * @see #isParseBigDecimal()
+     */
+    private boolean parseBigDecimal = false;
+
+    //----------------------------------------------------------------------
+
+    static final int currentSerialVersion = 3;
+
+    /**
+     * The internal serial version which says which version was written
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (default): versions before JDK 1.2
+     * <li><b>1</b>: version from JDK 1.2 and later, which includes the two new fields
+     *      <code>useExponentialNotation</code> and <code>minExponentDigits</code>.
+     * <li><b>2</b>: version on AlphaWorks, which adds roundingMode, formatWidth,
+     *      pad, padPosition, exponentSignAlwaysShown, roundingIncrement.
+     * <li><b>3</b>: ICU 2.2.  Adds currency object.
+     * </ul>
+     * @serial */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    //----------------------------------------------------------------------
+    // CONSTANTS
+    //----------------------------------------------------------------------
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_BEFORE_PREFIX = 0;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_AFTER_PREFIX  = 1;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_BEFORE_SUFFIX = 2;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_AFTER_SUFFIX  = 3;
+
+    // Constants for characters used in programmatic (unlocalized) patterns.
+    private static final char       PATTERN_ZERO_DIGIT         = '0';
+    private static final char       PATTERN_GROUPING_SEPARATOR = ',';
+    private static final char       PATTERN_DECIMAL_SEPARATOR  = '.';
+    private static final char       PATTERN_DIGIT              = '#';
+            static final char       PATTERN_SIGNIFICANT_DIGIT  = '@';
+            static final char       PATTERN_EXPONENT           = 'E'; // [NEW]
+            static final char       PATTERN_PLUS_SIGN          = '+'; // [NEW]
+
+    // Affix
+    private static final char       PATTERN_PER_MILLE          = '\u2030';
+    private static final char       PATTERN_PERCENT            = '%';
+            static final char       PATTERN_PAD_ESCAPE         = '*'; // [NEW]
+    /*Bug 4212072
+      To meet the need of expandAffix(String, StirngBuffer)
+      [Richard/GCL]
+    */
+    private static final char       PATTERN_MINUS              = '-'; //[Richard/GCL]
+
+    // Other    
+    private static final char       PATTERN_SEPARATOR          = ';';
+
+    // Pad escape is package private to allow access by DecimalFormatSymbols.
+    // Also plus sign.  Also exponent.
+
+    /**
+     * The CURRENCY_SIGN is the standard Unicode symbol for currency.  It
+     * is used in patterns and substitued with either the currency symbol,
+     * or if it is doubled, with the international currency symbol.  If the
+     * CURRENCY_SIGN is seen in a pattern, then the decimal separator is
+     * replaced with the monetary decimal separator.
+     *
+     * The CURRENCY_SIGN is not localized.
+     */
+    private static final char       CURRENCY_SIGN = '\u00A4';
+
+    private static final char       QUOTE = '\'';
+    
+    /* Upper limit on integer and fraction digits for a Java double
+       [Richard/GCL]
+    */
+    static final int DOUBLE_INTEGER_DIGITS  = 309;
+    static final int DOUBLE_FRACTION_DIGITS = 340;
+
+    /**
+     * When someone turns on scientific mode, we assume that more than this
+     * number of digits is due to flipping from some other mode that didn't
+     * restrict the maximum, and so we force 1 integer digit.  We don't bother
+     * to track and see if someone is using exponential notation with more than
+     * this number, it wouldn't make sense anyway, and this is just to make sure
+     * that someone turning on scientific mode with default settings doesn't
+     * end up with lots of zeroes.
+     */
+    static final int MAX_SCIENTIFIC_INTEGER_DIGITS = 8;
+
+//#if defined(FOUNDATION10)
+//##    // we're not compatible with other versions, since we have no java.math.BigDecimal field
+//##    private static final long serialVersionUID = 2;
+//#else
+    // Proclaim JDK 1.1 serial compatibility.
+    private static final long serialVersionUID = 864413376551465018L;
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    private ArrayList attributes = new ArrayList();
+//#endif
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/DecimalFormatSymbols.java b/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..f8725ca
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,1095 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.text.ChoiceFormat;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+
+public class DecimalFormatSymbols implements Cloneable, Serializable {
+
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols() {
+        initialize( ULocale.getDefault() );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols( Locale locale ) {
+        initialize( ULocale.forLocale(locale) );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public DecimalFormatSymbols( ULocale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the default locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols()</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return A DecimalFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DecimalFormatSymbols getInstance() {
+        return new DecimalFormatSymbols();
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols(locale)</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DecimalFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DecimalFormatSymbols getInstance(Locale locale) {
+        return new DecimalFormatSymbols(locale);
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols(locale)</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DecimalFormatSymbols instance.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DecimalFormatSymbols getInstance(ULocale locale) {
+        return new DecimalFormatSymbols(locale);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>Locale</code>s available for this class.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>Locale</code>s for which localized <code>DecimalFormatSymbols</code> instances are available.
+     * @stable ICU 3.8
+     */
+    public static Locale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>ULocale</code>s available in this class.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>ULocale</code>s for which localized <code>DecimalFormatSymbols</code> instances are available.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);        
+    }
+
+    
+    /**
+     * Return the character used for zero. Different for Arabic, etc.
+     * @return the character
+     * @stable ICU 2.0
+     */
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    /**
+     * Set the character used for zero.
+     * @param zeroDigit the zero character.
+     * @stable ICU 2.0
+     */
+    public void setZeroDigit(char zeroDigit) {
+        this.zeroDigit = zeroDigit;
+    }
+
+    /**
+     * Return the character used to represent a significant digit in a pattern.
+     * @return the significant digit pattern character
+     * @stable ICU 3.0
+     */
+    public char getSignificantDigit() {
+        return sigDigit;
+    }
+
+    /**
+     * Set the character used to represent a significant digit in a pattern.
+     * @param sigDigit the significant digit pattern character
+     * @stable ICU 3.0
+     */
+    public void setSignificantDigit(char sigDigit) {
+        this.sigDigit = sigDigit;
+    }    
+    
+    /**
+     * Return the character used for thousands separator. Different for French, etc.
+     * @return the thousands character
+     * @stable ICU 2.0
+     */
+    public char getGroupingSeparator() {
+        return groupingSeparator;
+    }
+
+    /**
+     * Set the character used for thousands separator. Different for French, etc.
+     * @param groupingSeparator the thousands character
+     * @stable ICU 2.0
+     */
+    public void setGroupingSeparator(char groupingSeparator) {
+        this.groupingSeparator = groupingSeparator;
+    }
+
+    /**
+     * Return the character used for decimal sign. Different for French, etc.
+     * @return the decimal character
+     * @stable ICU 2.0
+     */
+    public char getDecimalSeparator() {
+        return decimalSeparator;
+    }
+
+    /**
+     * Set the character used for decimal sign. Different for French, etc.
+     * @param decimalSeparator the decimal character
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparator(char decimalSeparator) {
+        this.decimalSeparator = decimalSeparator;
+    }
+
+    /**
+     * Return the character used for mille percent sign. Different for Arabic, etc.
+     * @return the mille percent character
+     * @stable ICU 2.0
+     */
+    public char getPerMill() {
+        return perMill;
+    }
+
+    /**
+     * Set the character used for mille percent sign. Different for Arabic, etc.
+     * @param perMill the mille percent character
+     * @stable ICU 2.0
+     */
+    public void setPerMill(char perMill) {
+        this.perMill = perMill;
+    }
+
+    /**
+     * Return the character used for percent sign. Different for Arabic, etc.
+     * @return the percent character
+     * @stable ICU 2.0
+     */
+    public char getPercent() {
+        return percent;
+    }
+
+    /**
+     * Set the character used for percent sign. Different for Arabic, etc.
+     * @param percent the percent character
+     * @stable ICU 2.0
+     */
+    public void setPercent(char percent) {
+        this.percent = percent;
+    }
+
+    /**
+     * Return the character used for a digit in a pattern.
+     * @return the digit pattern character
+     * @stable ICU 2.0
+     */
+    public char getDigit() {
+        return digit;
+    }
+
+    /**
+     * Set the character used for a digit in a pattern.
+     * @param digit the digit pattern character
+     * @stable ICU 2.0
+     */
+    public void setDigit(char digit) {
+        this.digit = digit;
+    }
+
+    /**
+     * Return the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @return the pattern separator character
+     * @stable ICU 2.0
+     */
+    public char getPatternSeparator() {
+        return patternSeparator;
+    }
+
+    /**
+     * Set the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @param patternSeparator the pattern separator character
+     * @stable ICU 2.0
+     */
+    public void setPatternSeparator(char patternSeparator) {
+        this.patternSeparator = patternSeparator;
+    }
+
+    /**
+     * Return the String used to represent infinity. Almost always left
+     * unchanged.
+     * @return the Infinity string
+     * @stable ICU 2.0
+     */
+     //Bug 4194173 [Richard/GCL]
+
+    public String getInfinity() {
+        return infinity;
+    }
+
+    /**
+     * Set the String used to represent infinity. Almost always left
+     * unchanged.
+     * @param infinity the Infinity String
+     * @stable ICU 2.0
+     */
+    public void setInfinity(String infinity) {
+        this.infinity = infinity;
+    }
+
+    /**
+     * Return the String used to represent NaN. Almost always left
+     * unchanged.
+     * @return the NaN String
+     * @stable ICU 2.0
+     */
+     //Bug 4194173 [Richard/GCL]
+    public String getNaN() {
+        return NaN;
+    }
+
+    /**
+     * Set the String used to represent NaN. Almost always left
+     * unchanged.
+     * @param NaN the NaN String
+     * @stable ICU 2.0
+     */
+    public void setNaN(String NaN) {
+        this.NaN = NaN;
+    }
+
+    /**
+     * Return the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @return the minus sign character
+     * @stable ICU 2.0
+     */
+    public char getMinusSign() {
+        return minusSign;
+    }
+
+    /**
+     * Set the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @param minusSign the minus sign character
+     * @stable ICU 2.0
+     */
+    public void setMinusSign(char minusSign) {
+        this.minusSign = minusSign;
+    }
+
+    /**
+     * Return the string denoting the local currency.
+     * @return the local currency String.
+     * @stable ICU 2.0
+     */
+    public String getCurrencySymbol()
+    {
+        return currencySymbol;
+    }
+
+    /**
+     * Set the string denoting the local currency.
+     * @param currency the local currency String.
+     * @stable ICU 2.0
+     */
+    public void setCurrencySymbol(String currency)
+    {
+        currencySymbol = currency;
+    }
+
+    /**
+     * Return the international string denoting the local currency.
+     * @return the international string denoting the local currency
+     * @stable ICU 2.0
+     */
+    public String getInternationalCurrencySymbol()
+    {
+        return intlCurrencySymbol;
+    }
+
+    /**
+     * Set the international string denoting the local currency.
+     * @param currency the international string denoting the local currency.
+     * @stable ICU 2.0
+     */
+    public void setInternationalCurrencySymbol(String currency)
+    {
+        intlCurrencySymbol = currency;
+    }
+
+    /**
+     * Returns the currency symbol, for JDK 1.4 compatibility only.
+     * ICU clients should use the Currency API directly.
+     * @return the currency used, or null
+     * @stable ICU 3.4
+     */
+    public Currency getCurrency() {
+        return currency;
+    }
+    
+    /**
+     * ICU does not use the DecimalFormatSymbols for the 
+     * currency any more.  This API is present
+     * for API compatibility only.
+     *
+     * This also sets the currency symbol attribute to the currency's symbol
+     * in the DecimalFormatSymbols' locale, and the international currency
+     * symbol attribute to the currency's ISO 4217 currency code.
+     *
+     * @param currency the new currency to be used
+     * @throws NullPointerException if <code>currency</code> is null
+     * @see #setCurrencySymbol
+     * @see #setInternationalCurrencySymbol
+     *
+     * @stable ICU 3.4
+     */
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            throw new NullPointerException();
+        }
+        this.currency = currency;
+        intlCurrencySymbol = currency.getCurrencyCode();
+        currencySymbol = currency.getSymbol(requestedLocale);
+    }
+    
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public char getMonetaryDecimalSeparator()
+    {
+        return monetarySeparator;
+    }
+
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 3.6
+     */
+    public char getMonetaryGroupingSeparator()
+    {
+        return monetaryGroupingSeparator;
+    }
+    
+    /**
+     * Internal API for NumberFormat
+     * @return String currency pattern string
+     * @internal
+     */
+    String getCurrencyPattern(){
+        return currencyPattern;
+    }
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public void setMonetaryDecimalSeparator(char sep)
+    {
+        monetarySeparator = sep;
+    }
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 3.6
+     */
+    public void setMonetaryGroupingSeparator(char sep)
+    {
+        monetaryGroupingSeparator = sep;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @return the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #setExponentSeparator
+     * @stable ICU 2.0
+     */
+    public String getExponentSeparator()
+    {
+        return exponentSeparator;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @param exp the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #getExponentSeparator
+     * @stable ICU 2.0
+     */
+    public void setExponentSeparator(String exp)
+    {
+        exponentSeparator = exp;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the localized plus sign.
+     * @return the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #setPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     * @stable ICU 2.0
+     */
+    public char getPlusSign() {
+        return plusSign;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the localized plus sign.
+     * @param plus the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #getPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     * @stable ICU 2.0
+     */
+    public void setPlusSign(char plus) {
+        plusSign = plus;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the character used to pad numbers out to a specified width.  This
+     * is not the pad character itself; rather, it is the special pattern
+     * character <em>preceding</em> the pad character.  In the pattern
+     * "*_#,##0", '*' is the pad escape, and '_' is the pad character.
+     * @return the character 
+     * @see #setPadEscape
+     * @see DecimalFormat#getFormatWidth
+     * @see DecimalFormat#getPadPosition
+     * @see DecimalFormat#getPadCharacter
+     * @stable ICU 2.0
+     */
+    public char getPadEscape() {
+        return padEscape;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad numbers out to a specified width.  This is
+     * not the pad character itself; rather, it is the special pattern character
+     * <em>preceding</em> the pad character.  In the pattern "*_#,##0", '*' is
+     * the pad escape, and '_' is the pad character.
+     * @see #getPadEscape
+     * @see DecimalFormat#setFormatWidth
+     * @see DecimalFormat#setPadPosition
+     * @see DecimalFormat#setPadCharacter
+     * @stable ICU 2.0
+     */
+    public void setPadEscape(char c) {
+        padEscape = c;
+    }
+
+    /**
+     * Returns the locale for which this object was constructed.
+     * @return the locale for which this object was constructed
+     * @stable ICU 2.0
+     */
+    public Locale getLocale() {
+        return requestedLocale;
+    }
+
+    /**
+     * Returns the locale for which this object was constructed.
+     * @return the locale for which this object was constructed
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    /**
+     * Standard override.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            return (DecimalFormatSymbols) super.clone();
+            // other fields are bit-copied
+        } catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj) return true;
+        DecimalFormatSymbols other = (DecimalFormatSymbols) obj;
+        return (zeroDigit == other.zeroDigit &&
+        groupingSeparator == other.groupingSeparator &&
+        decimalSeparator == other.decimalSeparator &&
+        percent == other.percent &&
+        perMill == other.perMill &&
+        digit == other.digit &&
+        minusSign == other.minusSign &&
+        patternSeparator == other.patternSeparator &&
+        infinity.equals(other.infinity) &&
+        NaN.equals(other.NaN) &&
+        currencySymbol.equals(other.currencySymbol) &&
+        intlCurrencySymbol.equals(other.intlCurrencySymbol) &&
+        padEscape == other.padEscape && // [NEW]
+        plusSign == other.plusSign && // [NEW]
+        exponentSeparator.equals(other.exponentSeparator) && // [NEW]
+        monetarySeparator == other.monetarySeparator);
+    }
+
+    /**
+     * Override hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+            int result = zeroDigit;
+            result = result * 37 + groupingSeparator;
+            result = result * 37 + decimalSeparator;
+            return result;
+    }
+
+    /**
+     * Initializes the symbols from the LocaleElements resource bundle.
+     * Note: The organization of LocaleElements badly needs to be
+     * cleaned up.
+     */
+    private void initialize( ULocale locale ) {
+        this.requestedLocale = locale.toLocale();
+        this.ulocale = locale;
+
+        /* try the cache first */
+        String[][] data = (String[][]) cachedLocaleData.get(locale);
+        String[] numberElements;
+        if (data == null) {  /* cache miss */
+            data = new String[1][];
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.
+                getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            data[0] = rb.getStringArray("NumberElements");
+            /* update cache */
+            cachedLocaleData.put(locale, data);
+        }
+        numberElements = data[0];
+        
+        ICUResourceBundle r = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        
+        // TODO: Determine actual and valid locale correctly.
+        ULocale uloc = r.getULocale();
+        setLocale(uloc, uloc);
+
+    // {dlf} clean up below now that we have our own resource data
+        decimalSeparator = numberElements[0].charAt(0);
+        groupingSeparator = numberElements[1].charAt(0);
+        // Temporary hack to support old JDK 1.1 resources
+//        patternSeparator = numberElements[2].length() > 0 ?
+//            numberElements[2].charAt(0) : ';';
+        patternSeparator = numberElements[2].charAt(0);
+        percent = numberElements[3].charAt(0);
+        zeroDigit = numberElements[4].charAt(0); //different for Arabic,etc.
+        digit = numberElements[5].charAt(0);
+        minusSign = numberElements[6].charAt(0);
+        
+        // Temporary hack to support JDK versions before 1.1.6 (?)
+//        exponentSeparator = numberElements.length >= 9 ?
+//            numberElements[7] : DecimalFormat.PATTERN_EXPONENT;
+//        perMill = numberElements.length >= 9 ?
+//            numberElements[8].charAt(0) : '\u2030';
+//        infinity  = numberElements.length >= 10 ?
+//            numberElements[9] : "\u221e";
+//        NaN = numberElements.length >= 11 ?
+//            numberElements[10] : "\ufffd";
+        exponentSeparator = numberElements[7];
+        perMill = numberElements[8].charAt(0);
+        infinity = numberElements[9];
+        NaN = numberElements[10];
+        
+        plusSign  =numberElements[11].charAt(0);
+        padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+        sigDigit  = DecimalFormat.PATTERN_SIGNIFICANT_DIGIT;
+        
+        // Obtain currency data from the currency API.  This is strictly
+        // for backward compatibility; we don't use DecimalFormatSymbols
+        // for currency data anymore.
+        String currname = null;
+        currency = Currency.getInstance(locale);
+        if (currency != null) {
+            intlCurrencySymbol = currency.getCurrencyCode();
+            boolean[] isChoiceFormat = new boolean[1];
+            currname = currency.getName(locale,
+                                    Currency.SYMBOL_NAME,
+                                    isChoiceFormat);
+            // If this is a ChoiceFormat currency, then format an
+            // arbitrary value; pick something != 1; more common.
+            currencySymbol = isChoiceFormat[0]
+                ? new ChoiceFormat(currname).format(2.0)
+                : currname;
+        } else {
+            intlCurrencySymbol = "XXX";
+            currencySymbol = "\u00A4"; // 'OX' currency symbol
+        }
+        // If there is a currency decimal, use it.
+        monetarySeparator = decimalSeparator;
+        monetaryGroupingSeparator = groupingSeparator;
+        Currency curr = Currency.getInstance(locale);
+        if(curr!=null){
+            String currencyCode = curr.getCurrencyCode();
+            if(currencyCode != null) {
+                /* An explicit currency was requested */
+                ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+                ICUResourceBundle currencyRes = resource.getWithFallback("Currencies");
+                try{
+                    currencyRes = currencyRes.getWithFallback(currencyCode);
+                    if(currencyRes.getSize()>2) {
+                        currencyRes = (ICUResourceBundle)currencyRes.get(2);
+                        currencyPattern = currencyRes.getString(0);
+                        monetarySeparator = currencyRes.getString(1).charAt(0);
+                        monetaryGroupingSeparator = currencyRes.getString(2).charAt(0);
+                    }
+                }catch(MissingResourceException ex){
+                    /* else An explicit currency was requested and is unknown or locale data is malformed. */
+                    /* decimal format API will get the correct value later on. */
+                }
+            }
+            /* else no currency keyword used. */
+        }
+        //monetarySeparator = numberElements[11].charAt(0);
+    }
+
+    /**
+     * Read the default serializable fields, then if <code>serialVersionOnStream</code>
+     * is less than 1, initialize <code>monetarySeparator</code> to be
+     * the same as <code>decimalSeparator</code> and <code>exponential</code>
+     * to be 'E'.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+
+        // TODO: it looks to me {dlf} that the serialization code was never updated
+        // to handle the actual/valid ulocale fields.
+
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // we don't have data for these old serialized forms any more
+        if (serialVersionOnStream < 1) {
+            // Didn't have monetarySeparator or exponential field;
+            // use defaults.
+            monetarySeparator = decimalSeparator;
+            exponential = 'E';
+        }
+        if (serialVersionOnStream < 2) {
+            padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+            plusSign = DecimalFormat.PATTERN_PLUS_SIGN;
+            exponentSeparator = String.valueOf(exponential);
+            // Although we read the exponential field on stream to create the
+            // exponentSeparator, we don't do the reverse, since scientific
+            // notation isn't supported by the old classes, even though the
+            // symbol is there.
+        }
+        ///CLOVER:ON
+        if (serialVersionOnStream < 3) {
+            // Resurrected objects from old streams will have no
+            // locale.  There is no 100% fix for this.  A
+            // 90% fix is to construct a mapping of data back to
+            // locale, perhaps a hash of all our members.  This is
+            // expensive and doesn't seem worth it.
+            requestedLocale = Locale.getDefault();
+        }
+        if (serialVersionOnStream < 4) {
+            // use same default behavior as for versions with no Locale
+            ulocale = ULocale.forLocale(requestedLocale);
+        }
+        if (serialVersionOnStream < 5) {
+            // use the same one for groupingSeparator
+            monetaryGroupingSeparator = groupingSeparator;
+        }
+        serialVersionOnStream = currentSerialVersion;
+
+    // recreate
+    currency = Currency.getInstance(intlCurrencySymbol);
+    }
+
+    /**
+     * Character used for zero.
+     *
+     * @serial
+     * @see #getZeroDigit
+     */
+    private  char    zeroDigit;
+
+    /**
+     * Character used for thousands separator.
+     *
+     * @serial
+     * @see #getGroupingSeparator
+     */
+    private  char    groupingSeparator;
+
+    /**
+     * Character used for decimal sign.
+     *
+     * @serial
+     * @see #getDecimalSeparator
+     */
+    private  char    decimalSeparator;
+
+    /**
+     * Character used for mille percent sign.
+     *
+     * @serial
+     * @see #getPerMill
+     */
+    private  char    perMill;
+
+    /**
+     * Character used for percent sign.
+     * @serial
+     * @see #getPercent
+     */
+    private  char    percent;
+
+    /**
+     * Character used for a digit in a pattern.
+     *
+     * @serial
+     * @see #getDigit
+     */
+    private  char    digit;
+
+    /**
+     * Character used for a significant digit in a pattern.
+     *
+     * @serial
+     * @see #getSignificantDigit
+     */
+    private  char    sigDigit;
+
+    /**
+     * Character used to separate positive and negative subpatterns
+     * in a pattern.
+     *
+     * @serial
+     * @see #getPatternSeparator
+     */
+    private  char    patternSeparator;
+
+    /**
+     * Character used to represent infinity.
+     * @serial
+     * @see #getInfinity
+     */
+    private  String  infinity;
+
+    /**
+     * Character used to represent NaN.
+     * @serial
+     * @see #getNaN
+     */
+    private  String  NaN;
+
+    /**
+     * Character used to represent minus sign.
+     * @serial
+     * @see #getMinusSign
+     */
+    private  char    minusSign;
+
+    /**
+     * String denoting the local currency, e.g. "$".
+     * @serial
+     * @see #getCurrencySymbol
+     */
+    private  String  currencySymbol;
+
+    /**
+     * International string denoting the local currency, e.g. "USD".
+     * @serial
+     * @see #getInternationalCurrencySymbol
+     */
+    private  String  intlCurrencySymbol;
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @see #getMonetaryDecimalSeparator
+     */
+    private  char    monetarySeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @see #getMonetaryGroupingSeparator
+     */
+    private  char    monetaryGroupingSeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The character used to distinguish the exponent in a number formatted
+     * in exponential notation, e.g. 'E' for a number such as "1.23E45".
+     * <p>
+     * Note that this field has been superseded by <code>exponentSeparator</code>.
+     * It is retained for backward compatibility.
+     *
+     * @serial
+     */
+    private  char    exponential;       // Field new in JDK 1.1.6
+
+    /**
+     * The string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * <p>
+     * Note that this supersedes the <code>exponential</code> field.
+     *
+     * @serial
+     * @since AlphaWorks
+     */
+    private String exponentSeparator;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a padding character in a format,
+     * e.g., '*' in a pattern such as "$*_#,##0.00".
+     * @serial
+     * @since AlphaWorks
+     */
+    private char padEscape;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a plus sign.
+     * @serial
+     * @since AlphaWorks
+     */
+    private char plusSign;
+
+    /**
+     * The locale for which this object was constructed.  Set to the
+     * default locale for objects resurrected from old streams.
+     * @since ICU 2.2
+     */
+    private Locale requestedLocale;
+
+    /**
+     * The requested ULocale.  We keep the old locale for serialization compatibility.
+     * @since IDU 3.2
+     */
+    private ULocale ulocale;
+
+    // Proclaim JDK 1.1 FCS compatibility
+    private static final long serialVersionUID = 5772796243397350300L;
+
+    // The internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which includes two new fields:
+    //     monetarySeparator and exponential.
+    // - 2 for version from AlphaWorks, which includes 3 new fields:
+    //     padEscape, exponentSeparator, and plusSign.
+    // - 3 for ICU 2.2, which includes the locale field
+    // - 4 for ICU 3.2, which includes the ULocale field
+    // - 5 for ICU 3.6, which includes the monetaryGroupingSeparator field
+    private static final int currentSerialVersion = 5;
+    
+    /**
+     * Describes the version of <code>DecimalFormatSymbols</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): versions prior to JDK 1.1.6.
+     *
+     * <li><b>1</b>: Versions written by JDK 1.1.6 or later, which includes
+     *      two new fields: <code>monetarySeparator</code> and <code>exponential</code>.
+     * <li><b>2</b>: Version for AlphaWorks.  Adds padEscape, exponentSeparator,
+     *      and plusSign.
+     * </ul>
+     * When streaming out a <code>DecimalFormatSymbols</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * cache to hold the NumberElements of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+    
+    /**
+     * 
+     */
+    private String  currencyPattern = null;
+    
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // not serialized, reconstructed from intlCurrencyCode
+    private transient Currency currency;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/DecompData.java b/src/com/ibm/icu/text/DecompData.java
new file mode 100644
index 0000000..6ab7c47
--- /dev/null
+++ b/src/com/ibm/icu/text/DecompData.java
@@ -0,0 +1,745 @@
+/*
+************************************************************************
+*   Copyright (c) 1997-2000, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: com.ibm.icu.text.Normalizer
+* Creation date: Tue Jul 18 11:05:28 PDT 2000
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+
+class DecompData {
+    static final int MAX_CANONICAL = 21754;
+    static final int MAX_COMPAT = 11177;
+    static final int DECOMP_MASK = 32767;
+    static final int DECOMP_RECURSE = 32768;
+    static final short BASE = 0;
+
+    static final CompactCharArray offsets = new CompactCharArray(
+        "\000\u0800\uA5A5\005\000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\u0160\u0180\000\000\000\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260"+
+        "\u0280\u02A0\u02C0\u02E0\u0300\u0320\000\000\u0340\u0360\uA5A5\004\000"+
+        "\u0380\uA5A5\004\000\u03A0\000\u03C0\000\000\u03E0\uA5A5\022\000\u0400"+
+        "\u0420\000\000\000\u0440\000\000\u0460\u0480\uA5A5\007\000\u04A0\000\u04C0"+
+        "\000\u04E0\000\000\000\u0500\000\000\000\u0520\000\000\000\u0540\000\000"+
+        "\000\u0560\000\000\u0580\000\000\000\u05A0\u05C0\000\u05E0\000\u0600\u0620"+
+        "\u0640\u0660\000\000\000\u0680\uA5A5n\000\u06A0\u06C0\u06E0\u0700\u0720"+
+        "\u0740\u0760\u0780\u07A0\u07C0\u07E0\u0800\u0820\u0840\u0860\u0880\u08A0"+
+        "\u08C0\u08E0\u0900\u0920\u0940\000\000\u0960\u0980\u09A0\u09C0\u09E0\u0A00"+
+        "\u0A20\000\u0A40\u0A60\u0A80\u0AA0\u0AC0\u0AE0\000\u0B00\000\u0B20\uA5A5"+
+        "\011\000\u0B40\u0B60\u0B80\u0BA0\u0BC0\uA5A5L\000\u0BE0\000\000\u0C00"+
+        "\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\000\u0D00\u0D20\u0D40\u0D60"+
+        "\u0D80\u0DA0\u0DC0\u0DE0\000\u0E00\u0E20\u0E40\u0E60\000\000\000\u0E80"+
+        "\u0EA0\u0EC0\u0EE0\u0F00\u0F20\u0F40\u0F60\u0F80\u0FA0\u0FC0\u0FE0\u1000"+
+        "\u1020\u1040\u1060\uA5A5\u0628\000\u1080\u10A0\u10C0\u10E0\u1100\u1120"+
+        "\u1140\u1160\u1180\u11A0\uA5A5\006\000\u11C0\u11E0\u1200\u1220\u1240\u1260"+
+        "\u1280\u12A0\u12C0\u12E0\u1300\u1320\u1340\u1360\u1380\u13A0\u13C0\u13E0"+
+        "\u1400\u1420\u1440\u1460\u1480\u14A0\000\u14C0\u14E0\u1500\u1520\u1540"+
+        "\u1560\u1580\u15A0\u15C0\u15E0\u1600\u1620\u1640\u1660\u1680"
+        ,
+        "\000\u16A0\uA5A5 \000\005\uA5A5\007\000\012\000\021\uA5A5\004\000\026"+
+        "\000\000\035!&-\000\00029=\000CO[\000\u2BAE\u2BB6\u2BBE\u2BC6\u2BCE\u2BD6"+
+        "\000\u2BDE\u2BE6\u2BEE\u2BF6\u2BFE\u2C06\u2C0E\u2C16\u2C1E\000\u2C26\u2C2E"+
+        "\u2C36\u2C3E\u2C46\u2C4E\000\000\u2C56\u2C5E\u2C66\u2C6E\u2C76\000\000"+
+        "\u2C7E\u2C86\u2C8E\u2C96\u2C9E\u2CA6\000\u2CAE\u2CB6\u2CBE\u2CC6\u2CCE"+
+        "\u2CD6\u2CDE\u2CE6\u2CEE\000\u2CF6\u2CFE\u2D06\u2D0E\u2D16\u2D1E\000\000"+
+        "\u2D26\u2D2E\u2D36\u2D3E\u2D46\000\u2D4E\u2D56\u2D5E\u2D66\u2D6E\u2D76"+
+        "\u2D7E\u2D86\u2D8E\u2D96\u2D9E\u2DA6\u2DAE\u2DB6\u2DBE\u2DC6\u2DCE\000"+
+        "\000\u2DD6\u2DDE\u2DE6\u2DEE\u2DF6\u2DFE\u2E06\u2E0E\u2E16\u2E1E\u2E26"+
+        "\u2E2E\u2E36\u2E3E\u2E46\u2E4E\u2E56\u2E5E\u2E66\u2E6E\000\000\u2E76\u2E7E"+
+        "\u2E86\u2E8E\u2E96\u2E9E\u2EA6\u2EAE\u2EB6\000fn\u2EBE\u2EC6\u2ECE\u2ED6"+
+        "\000\u2EDE\u2EE6\u2EEE\u2EF6\u2EFE\u2F06v~\000\000\u2F0E\u2F16\u2F1E\u2F26"+
+        "\u2F2E\u2F36\u0086\000\000\u2F3E\u2F46\u2F4E\u2F56\u2F5E\u2F66\000\000"+
+        "\u2F6E\u2F76\u2F7E\u2F86\u2F8E\u2F96\u2F9E\u2FA6\u2FAE\u2FB6\u2FBE\u2FC6"+
+        "\u2FCE\u2FD6\u2FDE\u2FE6\u2FEE\u2FF6\000\000\u2FFE\u3006\u300E\u3016\u301E"+
+        "\u3026\u302E\u3036\u303E\u3046\u304E\u3056\u305E\u3066\u306E\u3076\u307E"+
+        "\u3086\u308E\u3096\u309E\u30A6\u30AE\u008D\u30B6\u30BE\uA5A5\015\000\u30C6"+
+        "\u30CE\uA5A5\023\000\u0093\u009F\u00AB\u00B6\u00BE\u00C6\u00CE\u00D6\u00DE"+
+        "\u30D6\u30DE\u30E6\u30EE\u30F6\u30FE\u3106\u310E\u3117\u3123\u312F\u313B"+
+        "\u3147\u3153\u315F\u316B\000\u3177\u3183\u318F\u319B\u31A6\u31AE\000\000"+
+        "\u31B6\u31BE\u31C6\u31CE\u31D6\u31DE\u31E7\u31F3\u31FE\u3206\u320E\u0092"+
+        "\u009E\u00AA\u3216\u321E\000\000\u3226\u322E\u3237\u3243\u324E\u3256\u325E"+
+        "\u3266\u326E\u3276\u327E\u3286\u328E\u3296\u329E\u32A6\u32AE\u32B6\u32BE"+
+        "\u32C6\u32CE\u32D6\u32DE\u32E6\u32EE\u32F6\u32FE\u3306\u330E\u3316\u331E"+
+        "\u3326\u332E\u3336\u333E\u3346\000\000\u334E\u3356\uA5A5\006\000\u335E"+
+        "\u3366\u336E\u3376\u337F\u338B\u3397\u33A3\u33AE\u33B6\u33BF\u33CB\u33D6"+
+        "\u33DE\uA5A5\034\000\u00E5\u00E9q\u00ED\u00F1\u00F5\u00F9\u00FD\u0101"+
+        "\uA5A5\037\000\u0106\u010E\u0116\u011E\u0126\u012E\000\000\u0135}\u008D"+
+        "\u0139\u013D\uA5A5\033\000\u33E5\u33E9\000\u33ED\u33F2\uA5A5/\000\u33F9"+
+        "\uA5A5\005\000\u0142\000\000\000\u33FD\uA5A5\005\000&\uB402\u340A\u3411"+
+        "\u3416\u341E\u3426\000\u342E\000\u3436\u343E\u3447\uA5A5\031\000\u3452"+
+        "\u345A\u3462\u346A\u3472\u347A\u3483\uA5A5\031\000\u348E\u3496\u349E\u34A6"+
+        "\u34AE\000\u0149\u014D\u0151\uB4B6\uB4BE\u0155\u0159\uA5A5\031\000\u015D"+
+        "\u0161\u0165\uA5A5\015\000\u34C6\u34CE\000\u34D6\000\000\000\u34DE\uA5A5"+
+        "\004\000\u34E6\u34EE\u34F6\uA5A5\012\000\u34FE\uA5A5\037\000\u3506\uA5A5"+
+        "\026\000\u350E\u3516\000\u351E\000\000\000\u3526\uA5A5\004\000\u352E\u3536"+
+        "\u353E\uA5A5\027\000\u3546\u354E\uA5A5\011\000\u3556\u355E\uA5A5\015\000"+
+        "\u3566\u356E\u3576\u357E\000\000\u3586\u358E\000\000\u3596\u359E\u35A6"+
+        "\u35AE\u35B6\u35BE\000\000\u35C6\u35CE\u35D6\u35DE\u35E6\u35EE\000\000"+
+        "\u35F6\u35FE\u3606\u360E\u3616\u361E\u3626\u362E\u3636\u363E\u3646\u364E"+
+        "\000\000\u3656\u365E\uA5A5\015\000\u016A\uA5A5\032\000\u3666\u366E\u3676"+
+        "\u367E\u3686\uA5A5.\000\u0172\u017A\u0182\u018A\uA5A5\007\000\u368E\000"+
+        "\u3696\uA5A5\020\000\u369E\uA5A5\025\000\u36A6\uA5A5\007\000\u36AE\000"+
+        "\000\u36B6\uA5A5#\000\u36BE\u36C6\u36CE\u36D6\u36DE\u36E6\u36EE\u36F6"+
+        "\uA5A5\013\000\u36FE\u3706\uA5A5\017\000\u370E\u3716\000\u371E\uA5A5\023"+
+        "\000\u3726\000\000\u372E\uA5A5\042\000\u3736\u373E\u3746\000\000\u374E"+
+        "\uA5A5\011\000\u3756\000\000\u375E\u3766\uA5A5\017\000\u376E\u3776\uA5A5"+
+        "\026\000\u377E\uA5A5\025\000\u3786\u378E\u3796\uA5A5\033\000\u379E\uA5A5"+
+        "\027\000\u37A6\uA5A5\006\000\u37AE\u37B6\000\u37BE\u37C7\uA5A5\036\000"+
+        "\u37D2\u37DA\u37E2\uA5A5-\000\u37EA\000\u37F2\u37FB\u3806\uA5A5\024\000"+
+        "\u0192\uA5A5\037\000\u019A\uA5A5(\000\u01A2\u01AA\uA5A5\016\000\u01B1"+
+        "\uA5A5\026\000\u380E\uA5A5\011\000\u3816\uA5A5\004\000\u381E\uA5A5\004"+
+        "\000\u3826\uA5A5\004\000\u382E\uA5A5\014\000\u3836\uA5A5\011\000\u383E"+
+        "\000\u3846\u384E\u01B7\u3856\u01C3\uA5A5\007\000\u385E\uA5A5\021\000\u3866"+
+        "\uA5A5\011\000\u386E\uA5A5\004\000\u3876\uA5A5\004\000\u387E\uA5A5\004"+
+        "\000\u3886\uA5A5\014\000\u388E\uA5A5\014\000\u3896\uA5A5\031\000\u389E"+
+        "\u38A6\u38AE\u38B6\u38BE\u38C6\u38CE\u38D6\u38DF\u38EB\u38F6\u38FE\u3906"+
+        "\u390E\u3916\u391E\u3926\u392E\u3936\u393E\u3947\u3953\u395F\u396B\u3976"+
+        "\u397E\u3986\u398E\u3997\u39A3\u39AE\u39B6\u39BE\u39C6\u39CE\u39D6\u39DE"+
+        "\u39E6\u39EE\u39F6\u39FE\u3A06\u3A0E\u3A16\u3A1E\u3A26\u3A2F\u3A3B\u3A46"+
+        "\u3A4E\u3A56\u3A5E\u3A66\u3A6E\u3A76\u3A7E\u3A87\u3A93\u3A9E\u3AA6\u3AAE"+
+        "\u3AB6\u3ABE\u3AC6\u3ACE\u3AD6\u3ADE\u3AE6\u3AEE\u3AF6\u3AFE\u3B06\u3B0E"+
+        "\u3B16\u3B1E\u3B26\u3B2F\u3B3B\u3B47\u3B53\u3B5F\u3B6B\u3B77\u3B83\u3B8E"+
+        "\u3B96\u3B9E\u3BA6\u3BAE\u3BB6\u3BBE\u3BC6\u3BCF\u3BDB\u3BE6\u3BEE\u3BF6"+
+        "\u3BFE\u3C06\u3C0E\u3C17\u3C23\u3C2F\u3C3B\u3C47\u3C53\u3C5E\u3C66\u3C6E"+
+        "\u3C76\u3C7E\u3C86\u3C8E\u3C96\u3C9E\u3CA6\u3CAE\u3CB6\u3CBE\u3CC6\u3CCF"+
+        "\u3CDB\u3CE7\u3CF3\u3CFE\u3D06\u3D0E\u3D16\u3D1E\u3D26\u3D2E\u3D36\u3D3E"+
+        "\u3D46\u3D4E\u3D56\u3D5E\u3D66\u3D6E\u3D76\u3D7E\u3D86\u3D8E\u3D96\u3D9E"+
+        "\u3DA6\u3DAE\u3DB6\u3DBE\u3DC6\u3DCE\u3DD6\u3DDE\u3DE6\u01CE\uBDEE\uA5A5"+
+        "\004\000\u3DF6\u3DFE\u3E06\u3E0E\u3E17\u3E23\u3E2F\u3E3B\u3E47\u3E53\u3E5F"+
+        "\u3E6B\u3E77\u3E83\u3E8F\u3E9B\u3EA7\u3EB3\u3EBF\u3ECB\u3ED7\u3EE3\u3EEF"+
+        "\u3EFB\u3F06\u3F0E\u3F16\u3F1E\u3F26\u3F2E\u3F37\u3F43\u3F4F\u3F5B\u3F67"+
+        "\u3F73\u3F7F\u3F8B\u3F97\u3FA3\u3FAE\u3FB6\u3FBE\u3FC6\u3FCE\u3FD6\u3FDE"+
+        "\u3FE6\u3FEF\u3FFB\u4007\u4013\u401F\u402B\u4037\u4043\u404F\u405B\u4067"+
+        "\u4073\u407F\u408B\u4097\u40A3\u40AF\u40BB\u40C7\u40D3\u40DE\u40E6\u40EE"+
+        "\u40F6\u40FF\u410B\u4117\u4123\u412F\u413B\u4147\u4153\u415F\u416B\u4176"+
+        "\u417E\u4186\u418E\u4196\u419E\u41A6\u41AE\uA5A5\006\000\u41B6\u41BE\u41C7"+
+        "\u41D3\u41DF\u41EB\u41F7\u4203\u420E\u4216\u421F\u422B\u4237\u4243\u424F"+
+        "\u425B\u4266\u426E\u4277\u4283\u428F\u429B\000\000\u42A6\u42AE\u42B7\u42C3"+
+        "\u42CF\u42DB\000\000\u42E6\u42EE\u42F7\u4303\u430F\u431B\u4327\u4333\u433E"+
+        "\u4346\u434F\u435B\u4367\u4373\u437F\u438B\u4396\u439E\u43A7\u43B3\u43BF"+
+        "\u43CB\u43D7\u43E3\u43EE\u43F6\u43FF\u440B\u4417\u4423\u442F\u443B\u4446"+
+        "\u444E\u4457\u4463\u446F\u447B\000\000\u4486\u448E\u4497\u44A3\u44AF\u44BB"+
+        "\000\000\u44C6\u44CE\u44D7\u44E3\u44EF\u44FB\u4507\u4513\000\u451E\000"+
+        "\u4527\000\u4533\000\u453F\u454A\u4552\u455B\u4567\u4573\u457F\u458B\u4597"+
+        "\u45A2\u45AA\u45B3\u45BF\u45CB\u45D7\u45E3\u45EF\u45FA\u4602\u460A\u4612"+
+        "\u461A\u4622\u462A\u4632\u463A\u4642\u464A\u4652\u465A\u4662\000\000\u466B"+
+        "\u4677\u4680\u4694\u46A8\u46BC\u46D0\u46E4\u46FB\u4707\u4710\u4724\u4738"+
+        "\u474C\u4760\u4774\u478B\u4797\u47A0\u47B4\u47C8\u47DC\u47F0\u4804\u481B"+
+        "\u4827\u4830\u4844\u4858\u486C\u4880\u4894\u48AB\u48B7\u48C0\u48D4\u48E8"+
+        "\u48FC\u4910\u4924\u493B\u4947\u4950\u4964\u4978\u498C\u49A0\u49B4\u49CA"+
+        "\u49D2\u49DB\u49E6\u49EF\000\u49FA\u4A03\u4A0E\u4A16\u4A1E\u4A26\u4A2E"+
+        "\u01D6\u4A35\u01D6\u01DE\uCA3A\u4A43\u4A4E\u4A57\000\u4A62\u4A6B\u4A76"+
+        "\u4A7E\u4A86\u4A8E\u4A96\uCA9E\uCAA6\uCAAE\u4AB6\u4ABE\u4AC7\u4AD3\000"+
+        "\000\u4ADE\u4AE7\u4AF2\u4AFA\u4B02\u4B0A\000\uCB12\uCB1A\uCB22\u4B2A\u4B32"+
+        "\u4B3B\u4B47\u4B52\u4B5A\u4B62\u4B6B\u4B76\u4B7E\u4B86\u4B8E\u4B96\uCB9E"+
+        "\uCBA6\u4BAD\000\000\u4BB3\u4BBE\u4BC7\000\u4BD2\u4BDB\u4BE6\u4BEE\u4BF6"+
+        "\u4BFE\u4C06\uCC0D\u01E6\000\uCC11\uCC15\uA5A5\011\005\uA5A5\006\000\u01ED"+
+        "\uA5A5\005\000\u01F2\uA5A5\014\000\u01F9\u01FE\u01FB\uA5A5\010\000\005"+
+        "\000\000\000\u0206\u020F\000\u021A\u0223\uA5A5\004\000\u022E\000\u0236"+
+        "\uA5A5\011\000\u023E\u0246\uA5A5&\000\u024D\000\000\000I\u0251\u0255\u0259"+
+        "\u025D\u0261\u0265\u0269\u026D\u0271\u0275\u0089\u024D9\035!I\u0251\u0255"+
+        "\u0259\u025D\u0261\u0265\u0269\u026D\u0271\u0275\uA5A5\031\000\u027A\uA5A5"+
+        "\027\000\u0283\u028F\u0299\u029E\000\u02A7\u02B3\u02BD\000\u02C2\u02C9"+
+        "\u02CD\u02CD\u02CD\u00E5\u02D1eeu}\000\u00CD\u02D6\000\000\u02DD\u02E1"+
+        "\u0279\u0279\u0279\000\000\u02E6\u02EF\u02FA\000\u0095\000\u4C19\000\u0095"+
+        "\000\u4C1D\u4C22\u0301\u0299\000\u0305\u02F1\u02C5\000\u02E9=\u0309\u030D"+
+        "\u0311\u0315m\uA5A5\031\000\u031B\u0327\u0333\u033F\u034B\u0357\u0363"+
+        "\u036F\u037B\u0387\u0393\u039FBe\u03AA\u03B3\u03BE\u03C1\u03C6\u03CF\u03D8"+
+        "\u03EE\u03F1\u03F6\u03FFu\u0299\u0091\u02E9m\u040A\u0413\u041E\u0421\u0426"+
+        "\u042F\u0438\u044E\u0139\u0456\u045F}\u0289\u00A9\u0469\uA5A5\032\000"+
+        "\u4C2A\u4C32\uA5A5\022\000\u4C3A\uA5A5\036\000\u4C42\u4C4A\u4C52\uA5A5"+
+        "\024\000\u4C5A\uA5A5\004\000\u4C62\000\000\u4C6A\uA5A5\027\000\u4C72\000"+
+        "\u4C7A\uA5A5\005\000\u046E\u0477\000\u0482\u048B\uA5A5\020\000\u4C82\000"+
+        "\000\u4C8A\000\000\u4C92\000\u4C9A\uA5A5\026\000\u4CA2\000\u4CAA\uA5A5"+
+        "\012\000\u4CB2\u4CBA\u4CC2\u4CCA\u4CD2\000\000\u4CDA\u4CE2\000\000\u4CEA"+
+        "\u4CF2\uA5A5\006\000\u4CFA\u4D02\000\000\u4D0A\u4D12\000\000\u4D1A\u4D22"+
+        "\uA5A5\042\000\u4D2A\u4D32\u4D3A\u4D42\uA5A5\020\000\u4D4A\u4D52\u4D5A"+
+        "\u4D62\uA5A5\006\000\u4D6A\u4D72\u4D7A\u4D82\uA5A5\033\000\u4D89\u4D8D"+
+        "\uA5A5\025\0009\035!I\u0251\u0255\u0259\u025D\u0261\u0496\u049E\u04A6"+
+        "\u04AE\u04B6\u04BE\u04C6\u04CE\u04D6\u04DE\u04E6\u04EF\u04FB\u0507\u0513"+
+        "\u051F\u052B\u0537\u0543\u054F\u0558\u056C\u0580\u0594\u05A8\u05BC\u05D0"+
+        "\u05E4\u05F8\u060C\u0620\u0636\u063E\u0646\u064E\u0656\u065E\u0666\u066E"+
+        "\u0676\u067F\u068B\u0697\u06A3\u06AF\u06BB\u06C7\u06D3\u06DF\u06EB\u06F7"+
+        "\u0703\u070F\u071B\u0727\u0733\u073F\u074B\u0757\u0763\u076F\u077B\u0787"+
+        "\u0793\u079F\u07AB\u07B7\u07C3\u07CF\u07DB\u07E7\u07F3\u07FF\u080B\u0817"+
+        "\u0823\u082F\u0839\u0301\u0299\u0091\u02F1\u02C5\u083D\u02CDei\u0841u"+
+        "\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED\u0849\u03C1\u084D\u03F1"+
+        "\u0851\u0095\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469"+
+        "\u0089=\u07B9\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1"+
+        "\u024D\uA5A54\000\u0855\uA5A5\023\000\u0859\uA5A5\014\000\u085D\u0861"+
+        "\u0865\u0869\u086D\u0871\u0875\u0879\u087D\u0881\u0885\u0889\u088D\u0891"+
+        "\u0895\u0899\u089D\u08A1\u08A5\u08A9\u08AD\u08B1\u08B5\u08B9\u08BD\u08C1"+
+        "\u08C5\u08C9\u08CD\u08D1\u08D5\u08D9\u08DD\u08E1\u08E5\u08E9\u08ED\u08F1"+
+        "\u08F5\u08F9\u08FD\u0901\u0905\u0909\u090D\u0911\u0915\u0919\u091D\u0921"+
+        "\u0925\u0929\u092D\u0931\u0935\u0939\u093D\u0941\u0945\u0949\u094D\u0951"+
+        "\u0955\u0959\u095D\u0961\u0965\u0969\u096D\u0971\u0975\u0979\u097D\u0981"+
+        "\u0985\u0989\u098D\u0991\u0995\u0999\u099D\u09A1\u09A5\u09A9\u09AD\u09B1"+
+        "\u09B5\u09B9\u09BD\u09C1\u09C5\u09C9\u09CD\u09D1\u09D5\u09D9\u09DD\u09E1"+
+        "\u09E5\u09E9\u09ED\u09F1\u09F5\u09F9\u09FD\u0A01\u0A05\u0A09\u0A0D\u0A11"+
+        "\u0A15\u0A19\u0A1D\u0A21\u0A25\u0A29\u0A2D\u0A31\u0A35\u0A39\u0A3D\u0A41"+
+        "\u0A45\u0A49\u0A4D\u0A51\u0A55\u0A59\u0A5D\u0A61\u0A65\u0A69\u0A6D\u0A71"+
+        "\u0A75\u0A79\u0A7D\u0A81\u0A85\u0A89\u0A8D\u0A91\u0A95\u0A99\u0A9D\u0AA1"+
+        "\u0AA5\u0AA9\u0AAD\u0AB1\u0AB5\u0AB9\u0ABD\u0AC1\u0AC5\u0AC9\u0ACD\u0AD1"+
+        "\u0AD5\u0AD9\u0ADD\u0AE1\u0AE5\u0AE9\u0AED\u0AF1\u0AF5\u0AF9\u0AFD\u0B01"+
+        "\u0B05\u0B09\u0B0D\u0B11\u0B15\u0B19\u0B1D\u0B21\u0B25\u0B29\u0B2D\u0B31"+
+        "\u0B35\u0B39\u0B3D\u0B41\u0B45\u0B49\u0B4D\u0B51\u0B55\u0B59\u0B5D\u0B61"+
+        "\u0B65\u0B69\u0B6D\u0B71\u0B75\u0B79\u0B7D\u0B81\u0B85\u0B89\u0B8D\u0B91"+
+        "\u0B95\u0B99\u0B9D\u0BA1\u0BA5\u0BA9\u0BAD\u0BB1\uA5A5\012\000\005\uA5A5"+
+        "5\000\u0BB5\000\u08B9\u0BB9\u0BBD\uA5A5\021\000\u4D92\000\u4D9A\000\u4DA2"+
+        "\000\u4DAA\000\u4DB2\000\u4DBA\000\u4DC2\000\u4DCA\000\u4DD2\000\u4DDA"+
+        "\000\u4DE2\000\u4DEA\000\000\u4DF2\000\u4DFA\000\u4E02\uA5A5\006\000\u4E0A"+
+        "\u4E12\000\u4E1A\u4E22\000\u4E2A\u4E32\000\u4E3A\u4E42\000\u4E4A\u4E52"+
+        "\uA5A5\026\000\u4E5A\uA5A5\006\000\u0BC2\u0BCA\000\u4E62\uA5A5\015\000"+
+        "\u4E6A\000\u4E72\000\u4E7A\000\u4E82\000\u4E8A\000\u4E92\000\u4E9A\000"+
+        "\u4EA2\000\u4EAA\000\u4EB2\000\u4EBA\000\u4EC2\000\000\u4ECA\000\u4ED2"+
+        "\000\u4EDA\uA5A5\006\000\u4EE2\u4EEA\000\u4EF2\u4EFA\000\u4F02\u4F0A\000"+
+        "\u4F12\u4F1A\000\u4F22\u4F2A\uA5A5\026\000\u4F32\000\000\u4F3A\u4F42\u4F4A"+
+        "\u4F52\000\000\000\u4F5A\uA5A5\022\000\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1\u0BE5"+
+        "\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11\u0C15"+
+        "\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41\u0C45"+
+        "\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\u0C61\u0C65\u0C69\u0C6D\u0C71\u0C75"+
+        "\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\u0C91\u0C95\u0C99\u0C9D\u0CA1\u0CA5"+
+        "\u0CA9\u0CAD\u0CB1\u0CB5\u0CB9\u0CBD\u0CC1\u0CC5\u0CC9\u0CCD\u0CD1\u0CD5"+
+        "\u0CD9\u0CDD\u0CE1\u0CE5\u0CE9\u0CED\u0CF1\u0CF5\u0CF9\u0CFD\u0D01\u0D05"+
+        "\u0D09\u0D0D\u0D11\u0D15\u0D19\u0D1D\u0D21\u0D25\u0D29\u0D2D\u0D31\u0D35"+
+        "\u0D39\u0D3D\u0D41\u0D45\000\000\000\u085D\u0875\u0D49\u0D4D\u0D51\u0D55"+
+        "\u0D59\u0D5D\u086D\u0D61\u0D65\u0D69\u0D6D\u087D\u0D73\u0D7F\u0D8B\u0D97"+
+        "\u0DA3\u0DAF\u0DBB\u0DC7\u0DD3\u0DDF\u0DEB\u0DF7\u0E03\u0E0F\u0E18\u0E2C"+
+        "\u0E40\u0E54\u0E68\u0E7C\u0E90\u0EA4\u0EB8\u0ECC\u0EE0\u0EF4\u0F08\u0F1C"+
+        "\u0F30\000\000\000\u0F47\u0F53\u0F5F\u0F6B\u0F77\u0F83\u0F8F\u0F9B\u0FA7"+
+        "\u0FB3\u0FBF\u0FCB\u0FD7\u0FE3\u0FEF\u0FFB\u1007\u1013\u101F\u102B\u1037"+
+        "\u1043\u104F\u105B\u1067\u1073\u107F\u108B\u1097\u10A3\u10AF\u10BB\u10C7"+
+        "\u10D3\u10DF\u10EB\uA5A5\034\000\u0BD1\u0BDD\u0BE9\u0BF1\u0C11\u0C15\u0C21"+
+        "\u0C29\u0C2D\u0C35\u0C39\u0C3D\u0C41\u0C45\u0E1E\u0E32\u0E46\u0E5A\u0E6E"+
+        "\u0E82\u0E96\u0EAA\u0EBE\u0ED2\u0EE6\u0EFA\u0F0E\u0C46\uA5A5\004\000\u085D"+
+        "\u0875\u0D49\u0D4D\u0F79\u0F85\u0F91\u0889\u0FA9\u08B9\u0981\u09B1\u09AD"+
+        "\u0985\u0AF5\u08D9\u0979\u1015\u1021\u102D\u1039\u1045\u1051\u105D\u1069"+
+        "\u10F5\u10F9\u08F1\u10FD\u1101\u1105\u1109\u110D\u10D5\u1111\u1115\u0D51"+
+        "\u0D55\u0D59\u1119\u111D\u1121\u1125\u108D\u1099\u10A5\u10B1\u10BD\u1129"+
+        "\uA5A5\017\000\u112E\u1136\u113E\u1146\u114E\u1156\u115E\u1166\u116E\u1177"+
+        "\u1183\u118F\uA5A5\004\000\u1199\u119D\u11A1\u11A5\u11A9\u11AD\u11B1\u11B5"+
+        "\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9\u11DD\u11E1\u11E5"+
+        "\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209\u120D\u1211\u1215"+
+        "\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239\u123D\u1241\u1245"+
+        "\u1249\u124D\u1251\000\u1254\u126C\u1280\u129B\u12A4\u12BF\u12CB\u12D4"+
+        "\u12F0\u1307\u1313\u131F\u1328\u133C\u1350\u1364\u1378\u138C\u13A0\u13B4"+
+        "\u13D2\u13D8\u13F4\u1410\u13E0\u1428\u1444\u1460\u1477\u1483\u148C\u14A0"+
+        "\u14B4\u14CC\u14E7\u14F3\u14FC\u1513\u151F\u143A\u152A\u1533\u153F\u1548"+
+        "\u1564\u1578\u1590\u15AC\u15C3\u15CF\u15D8\u15F4\u1608\u1627\u1630\u164B"+
+        "\u1654\u166B\u1674\u1688\u16A0\u16B4\u16CC\u16E2\u16E8\u1703\u170F\u1718"+
+        "\u172F\u173B\u1747\u1750\u1768\u177E\u1784\u17A3\u17AC\u13FC\u17C4\u17DB"+
+        "\u17E7\u17F0\u1806\u180C\u1820\u183A\u1840\u141B\u185E\u1866\u186E\u1876"+
+        "\u187E\u1886\u188E\u1896\u189E\u18A6\u18AF\u18BB\u18C7\u18D3\u18DF\u18EB"+
+        "\u18F7\u1903\u190F\u191B\u1927\u1933\u193F\u194B\u1957\u1963\u196E\u1976"+
+        "\u197F\u198A\u1992\uA5A5\004\000\u199A\u19A2\u19AA\u19B2\u19B8\u19CE\u19D6"+
+        "\u19DE\u19E6\u19EE\u19F6\u02FE\u19FE\u1A07\u1A10\u1A26\u1A2E\u1A36\u1A3E"+
+        "\u1A46\u1A4E\u1A56\u1A5F\u1A6B\u1A77\u1A83\u1A8E\u1A96\u1A9E\u1AA6\u1AAE"+
+        "\u1AB6\u1ABE\u1AC6\u1ACE\u1AD6\u1ADF\u1AEB\u1AE2\u1AF7\u1B03\u1B0F\u1B06"+
+        "\u1B1B\u1B27\u1B30\u1966\u1B47\u1B53\u1B5F\u1B6B\u1B74\u1B8C\u1BAA\u008A"+
+        "\u1BB2\u1BBA\u1BC2\u1BCA\u1BD2\u1BDA\u1BE2\u1BEA\u1BF2\u1BFA\u1C02\u1C0A"+
+        "\u1C12\u1C1A\u1C22\u1C2A\u1C30\u1C46\u1C4E\u1C56\u1C5C\u1C73\u1C7E\u1C86"+
+        "\u1C8E\u1C96\u1C9E\u1CA6\u1CAE\u1CB6\u1A92\u1CBE\u1CC7\u1CD2\u1CDA\u1CE3"+
+        "\u1CEF\u1CFA\u1D00\u1D17\u1D22\u1D2A\u1D32\u1D3A\000\000\u1D42\u1D4A\u1D52"+
+        "\u1D5A\u1D62\u1D6A\u1D72\u1D7A\u1D82\u1D8B\u1D97\u1DA3\u1DAF\u1DBB\u1DC7"+
+        "\u1DD3\u1DDF\u1DEB\u1DF7\u1E03\u1E0F\u1E1B\u1E27\u1E33\u1E3F\u1E4B\u1E57"+
+        "\u1E63\u1E6F\u1E7B\u1E87\000\u4F61\u4F65\u4F69\u4F6D\u4F71\u4F75\u4F79"+
+        "\u4F7D\u4F81\u4F85\u4F89\u4F8D\u4F91\u4F95\u4F99\u4F9D\u4FA1\u4FA5\u4FA9"+
+        "\u4FAD\u4FB1\u4FB5\u4FB9\u4FBD\u4FC1\u4FC5\u4FC9\u4FCD\u4FD1\u4FD5\u4FD9"+
+        "\u4FDD\u4FE1\u4FE5\u4FE9\u4FED\u4FF1\u4FF5\u4FF9\u4FFD\u5001\u5005\u5009"+
+        "\u500D\u5011\u5015\u5019\u501D\u5021\u5025\u5029\u502D\u5031\u5035\u5039"+
+        "\u503D\u5041\u5045\u5049\u504D\u5051\u5055\u5059\u505D\u5061\u5065\u5069"+
+        "\u506D\u5071\u5075\u5079\u507D\u5081\u5085\u5089\u508D\u5091\u5095\u5099"+
+        "\u509D\u50A1\u50A5\u50A9\u50AD\u50B1\u50B5\u50B9\u50BD\u50C1\u50C5\u50C9"+
+        "\u50CD\u50D1\u50D5\u50D9\u50DD\u50E1\u50E5\u50E9\u50ED\u50F1\u50F5\u50F9"+
+        "\u50FD\u5101\u5105\u5109\u510D\u5111\u5115\u5119\u511D\u5121\u5125\u5129"+
+        "\u512D\u5131\u5135\u5139\u513D\u5141\u5145\u5149\u514D\u5151\u5155\u5159"+
+        "\u515D\u5161\u5165\u5169\u516D\u5171\u5175\u5179\u517D\u5181\u5185\u5189"+
+        "\u518D\u5191\u5195\u5199\u519D\u51A1\u51A5\u51A9\u51AD\u51B1\u51B5\u51B9"+
+        "\u51BD\u51C1\u51C5\u51C9\u51CD\u51D1\u51D5\u51D9\u51DD\u51E1\u51E5\u51E9"+
+        "\u51ED\u51F1\u51F5\u51F9\u51FD\u5201\u5205\u5209\u520D\u5211\u5215\u5219"+
+        "\u521D\u5221\u5225\u5229\u522D\u5231\u5235\u5239\u523D\u5241\u5245\u5249"+
+        "\u524D\u5251\u5255\u5259\u525D\u5261\u5265\u5269\u526D\u5271\u5275\u5279"+
+        "\u527D\u5281\u5285\u5289\u528D\u5291\u5295\u5299\u529D\u52A1\u52A5\u52A9"+
+        "\u52AD\u52B1\u52B5\u52B9\u52BD\u52C1\u52C5\u52C9\u52CD\u52D1\u52D5\u52D9"+
+        "\u52DD\u52E1\u52E5\u52E9\u52ED\u52F1\u52F5\u52F9\u52FD\u5301\u5305\u5309"+
+        "\u530D\u5311\u5315\u5319\u531D\u5321\u5325\u5329\u532D\u5331\u5335\u5339"+
+        "\u533D\u5341\u5345\u5349\u534D\u5351\u5355\u5359\u535D\u5361\u5365\u5369"+
+        "\u536D\u5371\u5375\u5379\u537D\u5381\u5385\u5389\u538D\u5391\u5395\000"+
+        "\000\u5399\000\u539D\000\000\u53A1\u53A5\u53A9\u53AD\u53B1\u53B5\u53B9"+
+        "\u53BD\u53C1\u53C5\000\u53C9\000\u53CD\000\000\u53D1\u53D5\000\000\000"+
+        "\u53D9\u53DD\u53E1\u53E5\uA5A5\022\000\u1E92\u1E9A\u1EA2\u1E97\u1EAB\u1EB6"+
+        "\u1EB6\uA5A5\014\000\u1EBE\u1EC6\u1ECE\u1ED6\u1EDE\uA5A5\005\000\u53EA"+
+        "\000\u53F2\u1EE5\u0309\u0315\u1EE9\u1EED\u1EF1\u1EF5\u1EF9\u1EFD\u0265"+
+        "\u53FA\u5402\u540B\u5417\u5422\u542A\u5432\u543A\u5442\u544A\u5452\u545A"+
+        "\u5462\000\u546A\u5472\u547A\u5482\u548A\000\u5492\000\u549A\u54A2\000"+
+        "\u54AA\u54B2\000\u54BA\u54C2\u54CA\u54D2\u54DA\u54E2\u54EA\u54F2\u54FA"+
+        "\u1F02\u1F09\u1F09\uA5A5\004\u1F0D\uA5A5\004\u1F11\uA5A5\004\u1F15\uA5A5"+
+        "\004\u1F19\uA5A5\004\u1F1D\uA5A5\004\u1F21\uA5A5\004\u1F25\uA5A5\004\u1F29"+
+        "\uA5A5\004\u1F2D\uA5A5\004\u1F31\uA5A5\004\u1F35\uA5A5\004\u1F39\u1F3D"+
+        "\u1F3D\u1F41\u1F41\u1F45\u1F45\u1F49\u1F49\u1F4D\u1F4D\u1F51\u1F51\uA5A5"+
+        "\004\u1F55\uA5A5\004\u1F59\uA5A5\004\u1F5D\uA5A5\004\u1F61\u1F65\u1F65"+
+        "\uA5A5\004\u1F69\u1F6E\u1F6E\uA5A5\004\u1F75\uA5A5\004\u1F79\u1F7D\u1F7D"+
+        "\u1F82\u1F82\uA5A5!\000\uA5A5\004\u1F89\u0181\u0181\u1F8D\u1F8D\u1F91"+
+        "\u1F91\u0182\u1F95\u1F95\u1F99\u1F99\u1F9D\u1F9D\uA5A5\004\u1FA1\u1FA5"+
+        "\u1FA5\u1FAB\u1FAB\u1FB7\u1FB7\u1FC3\u1FC3\u1FCF\u1FCF\u1FDB\u1FDB\u1FE7"+
+        "\u1FE7\u1FF3\u1FF3\u1FF3\u1FFF\u1FFF\u1FFF\uA5A5\004\u2009\u200F\u201B"+
+        "\u2027\u1FFF\u2033\u203E\u2046\u204E\u2056\u205E\u2066\u206E\u2076\u207E"+
+        "\u2086\u208E\u2096\u209E\u20A6\u20AE\u20B6\u20BE\u20C6\u20C2\u20CE\u20D6"+
+        "\u20DE\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u2116\u211E\u2126\u212E\u2136"+
+        "\u213E\u2146\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E\u2196"+
+        "\u219E\u21A6\u21AE\u21B6\u21BE\u21C6\u21CE\u21D6\u21DE\u21E6\u21EE\u21F6"+
+        "\u21FE\u2206\u220E\u2216\u221E\u2226\u222E\u2236\u20CA\u20D2\u223E\u2246"+
+        "\u202E\u224E\u2256\u225E\u2266\u226E\u2276\u227E\u2286\u228E\u2296\u20BA"+
+        "\u229E\u22A6\u2232\u22AE\u229A\u22B6\u22BE\u22C6\u22CF\u22DB\u22E7\u22F3"+
+        "\u22FF\u230B\u2317\u2323\u2027\u232F\u1FFF\u2033\u233A\u2342\u2056\u234A"+
+        "\u205E\u2066\u2352\u235A\u2086\u2362\u208E\u2096\u236A\u2372\u20A6\u237A"+
+        "\u20AE\u20B6\u2196\u219E\u21B6\u21BE\u21C6\u21E6\u21EE\u21F6\u21FE\u221E"+
+        "\u2226\u222E\u2382\u223E\u238A\u2392\u2266\u239A\u226E\u2276\u22C6\u23A2"+
+        "\u23AA\u2232\u23B2\u22AE\u229A\u200F\u201B\u23BB\u2027\u23C7\u203E\u2046"+
+        "\u204E\u2056\u23D2\u206E\u2076\u207E\u2086\u23DA\u20A6\u20BE\u20C6\u20C2"+
+        "\u20CE\u20D6\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u23E2\u2116\u211E\u2126"+
+        "\u212E\u2136\u213E\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E"+
+        "\u21A6\u21AE\u21CE\u21D6\u21DE\u21E6\u21EE\u2206\u220E\u2216\u221E\u23EA"+
+        "\u2236\u20CA\u20D2\u223E\u224E\u2256\u225E\u2266\u23F2\u227E\u2286\u23FA"+
+        "\u20BA\u229E\u22A6\u2232\u227A\u2027\u23C7\u2056\u23D2\u2086\u23DA\u20A6"+
+        "\u2402\u2106\u240A\u2412\u241A\u21E6\u21EE\u221E\u2266\u23F2\u2232\u227A"+
+        "\u2423\u242F\u243B\u2446\u244E\u2456\u245E\u2466\u246E\u2476\u247E\u2486"+
+        "\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE\u24B6\u24BE\u24C6\u24CE"+
+        "\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u2446\u244E\u2456\u245E\u2466"+
+        "\u246E\u2476\u247E\u2486\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE"+
+        "\u24B6\u24BE\u24C6\u24CE\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u24CE"+
+        "\u24D6\u24DE\u2412\u240A\u241A\u2146\u20EE\u20F6\u20FE\u24CE\u24D6\u24DE"+
+        "\u2146\u214E\u2506\u2506\uA5A5\022\000\u250F\u251B\u251B\u2527\u2533\u253F"+
+        "\u254B\u2557\u20C7\u20C7\u2563\u256F\u257B\u2587\u2593\u259F\u259F\u25AB"+
+        "\u25B7\u25B7\u25C3\u25C3\u25CF\u25DB\u25DB\u25E7\u25F3\u25F3\u25FF\u25FF"+
+        "\u260B\u2617\u2617\u2623\u2623\u262F\u263B\u2647\u2653\u2653\u265F\u266B"+
+        "\u2677\u2683\u268F\u268F\u269B\u26A7\u26B3\u26BF\u26CB\u26D7\u26D7\u26E3"+
+        "\u26E3\u26EF\u26EF\u26FB\u20CB\u2707\u2713\u2237\u20D3\u271F\000\000\u272B"+
+        "\u2737\u2743\u274F\u275B\u2767\u2767\u2773\u277F\u278B\u2797\u2797\u27A3"+
+        "\u27AF\u27BB\u27C7\u27D3\u27DF\u27EB\u27F7\u2803\u280F\u281B\u2827\u2833"+
+        "\u283F\u284B\u2857\u229F\u2863\u286F\u287B\u2887\u2893\u269B\u26B3\u289F"+
+        "\u28AB\u28B7\u28C3\u28CF\u28DB\u28CF\u28B7\u28E7\u28F3\u28FF\u290B\u2917"+
+        "\u28DB\u2647\u25CF\u2923\u292F\uA5A5(\000\u293B\u2947\u2950\u2964\u2978"+
+        "\u298C\u29A0\u29B4\u29C8\u29DF\u29E8\u2A34\uA5A5\024\000\u01FA\u2A59\u2A5D"+
+        "\u2A61\u2A61\u0271\u0275\u2A65\u2A69\u2A6D\u2A71\u2A75\u2A79\u2A7D\u2A81"+
+        "\u2A85\u2A89\u2A8D\u2A91\u2A95\u2A99\uA5A5\004\000\uA5A5\004\u0236\u2A61"+
+        "\u2A61\u2A61\u2A9D\u2AA1\u01F9\000\u2AA5\u2AA9\u023D\u022D\u2A59\u0271"+
+        "\u0275\u2A65\u2A69\u2A6D\u2A71\u2AAD\u2AB1\u2AB5\u0265\u2AB9\u2ABD\u2AC1"+
+        "\u026D\000\u2AC5\u2AC9\u2ACD\u2AD1\uA5A5\004\000\u2AD6\u2ADE\u22CE\000"+
+        "\u22DA\000\u22E6\u2422\u22F2\u242E\u22FE\u243A\u230A\u2AE6\u2AEE\u2AF6"+
+        "\u2AFD\u2B02\u2B02\u2B0A\u2B0A\u2B12\u2B12\u2B1A\u2B1A\uA5A5\004\u1FAA"+
+        "\u0171\u0171\uA5A5\004\u203D\u2B21\u2B21\uA5A5\004\u206D\uA5A5\004\u209D"+
+        "\uA5A5\004\u2015\uA5A5\004\u2021\uA5A5\004\u2051\u2985\u2985\u22B5\u22B5"+
+        "\u22BD\u22BD\u2329\u2329\uA5A5\004\u20ED\uA5A5\004\u2411\uA5A5\004\u210D"+
+        "\uA5A5\004\u211D\uA5A5\004\u213D\uA5A5\004\u214D\uA5A5\004\u2155\uA5A5"+
+        "\004\u2165\uA5A5\004\u2175\uA5A5\004\u21A5\uA5A5\004\u21C5\uA5A5\004\u21E9"+
+        "\uA5A5\004\u202D\uA5A5\004\u224D\uA5A5\004\u227D\u0179\u0179\u1FA5\u1FA5"+
+        "\uA5A5\004\u0189\u2B27\u2B27\u2B33\u2B33\u2B3F\u2B3F\u2A46\u2A46\uA5A5"+
+        "\004\000\u022D\u2B49\u2AAD\u2AC9\u2ACD\u2AB1\u2B4D\u0271\u0275\u2AB5\u0265"+
+        "\u2A9D\u2AB9\u01F9\u0285\u024D9\035!I\u0251\u0255\u0259\u025D\u0261\u2AA9"+
+        "\u2AA5\u2ABD\u026D\u2AC1\u023D\u2AD1\u0839\u0301\u0299\u0091\u02F1\u02C5"+
+        "\u083D\u02CDei\u0841u\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED"+
+        "\u0849\u03C1\u084D\u03F1\u0851\u0095\u2B51\u2AC5\u2B55\u2B59\u2A61\u2B5D"+
+        "\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469\u0089=\u07B9"+
+        "\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1\u2A65\u2B61"+
+        "\u2A69\u2B65\000\000\u2B69\u2A8D\u2A91\u2AA1\u2B6D\u1251\u1279\u15F9\u2B71"+
+        "\u1619\u12CD\u2B75\u13A5\u175D\u1331\u1261\u1199\u119D\u11A1\u11A5\u11A9"+
+        "\u11AD\u11B1\u11B5\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9"+
+        "\u11DD\u11E1\u11E5\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209"+
+        "\u120D\u1211\u1215\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239"+
+        "\u123D\u1241\u1245\u1285\u0BC5\u0BCD\u0C9D\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1"+
+        "\u0BE5\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11"+
+        "\u0C15\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41"+
+        "\u0C45\000\000\000\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\000\000\u0C61\u0C65"+
+        "\u0C69\u0C6D\u0C71\u0C75\000\000\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\000"+
+        "\000\u0C91\u0C95\u0C99\000\000\000\u2B79\u2B7D\u2B81\026\u2B85\u2B89\u2B8D"+
+        "\000\u2B91\u2B95\u2B99\u2B9D\u2BA1\u2BA5\u2BA9\uA5A5\021\000"
+        );
+
+    static final String contents = 
+        "\uFFFF  \u0308a \u030423 \u0301\u03BC \u03271o1\u204441\u204423\u2044"+
+        "4IJijL\u00B7l\u00B7\u02BCnsDZ\u030CDz\u030Cdz\u030CLJLjljNJNjnjh\u0266"+
+        "r\u0279\u027B\u0281wy \u0306 \u0307 \u030A \u0328 \u0303 \u030B\u0263"+
+        "x\u0295 \u0345\u03B2\u03B8\u03A5\u03C6\u03C0\u03BA\u03C1\u03C2\u0565\u0582"+
+        "\u0627\u0674\u0648\u0674\u06C7\u0674\u064A\u0674\u0E4D\u0E32\u0ECD\u0EB2"+
+        "\u0EAB\u0E99\u0EAB\u0EA1\u0F0B\u0FB2\u0F71\u0F80\u0FB3\u0F71\u0F80a\u02BE"+
+        " \u0313 \u0342 \u0314\u2010 \u0333...\u2032\u2032\u2032\u2032\u2032\u2035"+
+        "\u2035\u2035\u2035\u2035!! \u0305?!!?056789+\u2212=()Rsa/ca/sC\u00B0C"+
+        "c/oc/u\u0190\u00B0FgH\u0127NoPQSMTELTMBe\u05D0\u05D1\u05D2\u05D31\u2044"+
+        "32\u204431\u204452\u204453\u204454\u204451\u204465\u204461\u204483\u2044"+
+        "85\u204487\u20448IIIIIIVVIVIIVIII\000IXXIXIIiiiiiivviviiviii\000ixxix"+
+        "iim\u222B\u222B\u222B\u222B\u222B\u222E\u222E\u222E\u222E\u222E101112"+
+        "1314151617181920(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)\000(11)\000(12)\000(1"+
+        "3)\000(14)\000(15)\000(16)\000(17)\000(18)\000(19)\000(20)\0001.2.3.4"+
+        ".5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.(a)(b)(c)(d)(e)(f)(g)(h)("+
+        "i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)AGKOUWY\u6BCD\u9F9F"+
+        "\u4E00\u4E28\u4E36\u4E3F\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B"+
+        "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9\u5315\u531A\u5338\u5341"+
+        "\u535C\u5369\u5382\u53B6\u53C8\u53E3\u56D7\u571F\u58EB\u5902\u590A\u5915"+
+        "\u5927\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E\u5C71\u5DDB\u5DE5"+
+        "\u5DF1\u5DFE\u5E72\u5E7A\u5E7F\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73"+
+        "\u5FC3\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4\u65B9\u65E0\u65E5"+
+        "\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14"+
+        "\u6C34\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B\u72AC\u7384\u7389"+
+        "\u74DC\u74E6\u7518\u751F\u7528\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF"+
+        "\u76EE\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB\u7AF9\u7C73\u7CF8"+
+        "\u7F36\u7F51\u7F8A\u7FBD\u8001\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA"+
+        "\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D\u866B\u8840\u884C"+
+        "\u8863\u897E\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70"+
+        "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6\u91CC\u91D1\u9577"+
+        "\u9580\u961C\u96B6\u96B9\u96E8\u9751\u975E\u9762\u9769\u97CB\u97ED\u97F3"+
+        "\u9801\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8\u9ADF\u9B25\u9B2F"+
+        "\u9B32\u9B3C\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9"+
+        "\u9EFD\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C\u9FA0\u3012\u5344"+
+        "\u5345 \u3099 \u309A\u1100\u1101\u11AA\u1102\u11AC\u11AD\u1103\u1104\u1105"+
+        "\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5\u111A\u1106\u1107\u1108\u1121\u1109"+
+        "\u110A\u110B\u110C\u110D\u110E\u110F\u1110\u1111\u1112\u1161\u1162\u1163"+
+        "\u1164\u1165\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D\u116E\u116F"+
+        "\u1170\u1171\u1172\u1173\u1174\u1175\u1160\u1114\u1115\u11C7\u11C8\u11CC"+
+        "\u11CE\u11D3\u11D7\u11D9\u111C\u11DD\u11DF\u111D\u111E\u1120\u1122\u1123"+
+        "\u1127\u1129\u112B\u112C\u112D\u112E\u112F\u1132\u1136\u1140\u1147\u114C"+
+        "\u11F1\u11F2\u1157\u1158\u1159\u1184\u1185\u1188\u1191\u1192\u1194\u119E"+
+        "\u11A1\u4E09\u56DB\u4E0A\u4E2D\u4E0B\u7532\u4E19\u4E01\u5929\u5730(\u1100"+
+        ")(\u1102)(\u1103)(\u1105)(\u1106)(\u1107)(\u1109)(\u110B)(\u110C)(\u110E"+
+        ")(\u110F)(\u1110)(\u1111)(\u1112)(\u1100\u1161)\000(\u1102\u1161)\000"+
+        "(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161)\000"+
+        "(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161)\000"+
+        "(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161)\000"+
+        "(\u110C\u116E)\000(\u4E00)(\u4E8C)(\u4E09)(\u56DB)(\u4E94)(\u516D)(\u4E03"+
+        ")(\u516B)(\u4E5D)(\u5341)(\u6708)(\u706B)(\u6C34)(\u6728)(\u91D1)(\u571F"+
+        ")(\u65E5)(\u682A)(\u6709)(\u793E)(\u540D)(\u7279)(\u8CA1)(\u795D)(\u52B4"+
+        ")(\u4EE3)(\u547C)(\u5B66)(\u76E3)(\u4F01)(\u8CC7)(\u5354)(\u796D)(\u4F11"+
+        ")(\u81EA)(\u81F3)\u79D8\u7537\u9069\u512A\u5370\u6CE8\u9805\u5199\u6B63"+
+        "\u5DE6\u53F3\u533B\u5B97\u591C1\u67082\u67083\u67084\u67085\u67086\u6708"+
+        "7\u67088\u67089\u670810\u670811\u670812\u6708\u30A2\u30A4\u30A6\u30A8"+
+        "\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF"+
+        "\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5"+
+        "\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA"+
+        "\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30A2\u30CF\u309A\u30FC\u30C8"+
+        "\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000\u30A2"+
+        "\u30FC\u30EB\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1\u30A6"+
+        "\u30A9\u30F3\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8\u30FC\u30AB"+
+        "\u30FC\000\u30AA\u30F3\u30B9\u30AA\u30FC\u30E0\u30AB\u30A4\u30EA\u30AB"+
+        "\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000\u30AB\u3099\u30ED\u30F3"+
+        "\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB\u3099\000\u30AD\u3099"+
+        "\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD\u3099\u30EB\u30BF\u3099"+
+        "\u30FC\000\u30AD\u30ED\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\000\u30AD\u30ED"+
+        "\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF\u30C3\u30C8\000\u30AF\u3099"+
+        "\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\000\u30AF"+
+        "\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\u30B3\u30EB\u30CA\u30B3\u30FC"+
+        "\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB\000\u30B5\u30F3\u30C1\u30FC\u30E0"+
+        "\000\u30B7\u30EA\u30F3\u30AF\u3099\000\u30BB\u30F3\u30C1\u30BB\u30F3\u30C8"+
+        "\u30BF\u3099\u30FC\u30B9\000\u30C6\u3099\u30B7\u30C8\u3099\u30EB\u30CA"+
+        "\u30CE\u30CE\u30C3\u30C8\u30CF\u30A4\u30C4\u30CF\u309A\u30FC\u30BB\u30F3"+
+        "\u30C8\000\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000"+
+        "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2"+
+        "\u309A\u30B3\u30D2\u3099\u30EB\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000"+
+        "\u30D5\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5"+
+        "\u30E9\u30F3\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\u30D8\u309A\u30F3\u30B9\000\u30D8"+
+        "\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A\u30A4"+
+        "\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\u30DB\u309A\u30F3"+
+        "\u30C8\u3099\000\u30DB\u30FC\u30EB\u30DB\u30FC\u30F3\u30DE\u30A4\u30AF"+
+        "\u30ED\000\u30DE\u30A4\u30EB\u30DE\u30C3\u30CF\u30DE\u30EB\u30AF\u30DE"+
+        "\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED\u30F3\000\u30DF\u30EA\u30DF"+
+        "\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1\u30AB\u3099\u30E1\u30AB\u3099"+
+        "\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099\000\u30E4\u30FC\u30EB\u30E6\u30A2"+
+        "\u30F3\u30EA\u30C3\u30C8\u30EB\000\u30EA\u30E9\u30EB\u30D2\u309A\u30FC"+
+        "\000\u30EB\u30FC\u30D5\u3099\u30EB\000\u30EC\u30E0\u30EC\u30F3\u30C8\u30B1"+
+        "\u3099\u30F3\0000\u70B91\u70B92\u70B93\u70B94\u70B95\u70B96\u70B97\u70B9"+
+        "8\u70B99\u70B910\u70B911\u70B912\u70B913\u70B914\u70B915\u70B916\u70B9"+
+        "17\u70B918\u70B919\u70B920\u70B921\u70B922\u70B923\u70B924\u70B9hPada"+
+        "AUbaroVpc\u5E73\u6210\u662D\u548C\u5927\u6B63\u660E\u6CBB\u682A\u5F0F"+
+        "\u4F1A\u793E\000pAnA\u03BCAmAkAKBGBcalkcal\000pFnF\u03BCF\u03BCgmgkgH"+
+        "zkHzMHzGHzTHz\u03BClmldlklfmnm\u03BCmmmcmkmmm2cm2km2mm3cm3km3m\u2215s"+
+        "m\u2215s2\000kPaMPaGParadrad\u2215s\000rad\u2215s2\000ps\u03BCsmspVnV"+
+        "\u03BCVmVkVMVpWnW\u03BCWmWkWMWk\u03A9M\u03A9a.m.\000BqcccdC\u2215kg\000"+
+        "Co.dBGyhaHPinKKKMktlnloglxmbmilmolPHp.m.\000PPMPRsrSvWb1\u65E52\u65E5"+
+        "3\u65E54\u65E55\u65E56\u65E57\u65E58\u65E59\u65E510\u65E511\u65E512\u65E5"+
+        "13\u65E514\u65E515\u65E516\u65E517\u65E518\u65E519\u65E520\u65E521\u65E5"+
+        "22\u65E523\u65E524\u65E525\u65E526\u65E527\u65E528\u65E529\u65E530\u65E5"+
+        "31\u65E5fffiflfflst\u0574\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574"+
+        "\u056D\u05E2\u05D4\u05DB\u05DC\u05DD\u05E8\u05EA\u05D0\u05DC\u0671\u067B"+
+        "\u067E\u0680\u067A\u067F\u0679\u06A4\u06A6\u0684\u0683\u0686\u0687\u068D"+
+        "\u068C\u068E\u0688\u0698\u0691\u06A9\u06AF\u06B3\u06B1\u06BA\u06BB\u06D5"+
+        "\u0654\u06C1\u06BE\u06D2\u06D2\u0654\u06AD\u06C6\u06C8\u06CB\u06C5\u06C9"+
+        "\u06D0\u0649\u064A\u0654\u0627\u064A\u0654\u06D5\u064A\u0654\u0648\u064A"+
+        "\u0654\u06C7\u064A\u0654\u06C6\u064A\u0654\u06C8\u064A\u0654\u06D0\u064A"+
+        "\u0654\u0649\u06CC\u064A\u0654\u062C\u064A\u0654\u062D\u064A\u0654\u0645"+
+        "\u064A\u0654\u064A\u0628\u062C\u0628\u062D\u0628\u062E\u0628\u0645\u0628"+
+        "\u0649\u0628\u064A\u062A\u062C\u062A\u062D\u062A\u062E\u062A\u0645\u062A"+
+        "\u0649\u062A\u064A\u062B\u062C\u062B\u0645\u062B\u0649\u062B\u064A\u062C"+
+        "\u062D\u062C\u0645\u062D\u0645\u062E\u062C\u062E\u062D\u062E\u0645\u0633"+
+        "\u062C\u0633\u062D\u0633\u062E\u0633\u0645\u0635\u062D\u0635\u0645\u0636"+
+        "\u062C\u0636\u062D\u0636\u062E\u0636\u0645\u0637\u062D\u0637\u0645\u0638"+
+        "\u0645\u0639\u062C\u0639\u0645\u063A\u062C\u063A\u0645\u0641\u062C\u0641"+
+        "\u062D\u0641\u062E\u0641\u0645\u0641\u0649\u0641\u064A\u0642\u062D\u0642"+
+        "\u0645\u0642\u0649\u0642\u064A\u0643\u0627\u0643\u062C\u0643\u062D\u0643"+
+        "\u062E\u0643\u0644\u0643\u0645\u0643\u0649\u0643\u064A\u0644\u062C\u0644"+
+        "\u062D\u0644\u062E\u0644\u0645\u0644\u0649\u0644\u064A\u0645\u062C\u0645"+
+        "\u0645\u0645\u0649\u0646\u062C\u0646\u062D\u0646\u062E\u0646\u0645\u0646"+
+        "\u0649\u0646\u064A\u0647\u062C\u0647\u0645\u0647\u0649\u0647\u064A\u064A"+
+        "\u062D\u064A\u062E\u064A\u0649\u0630\u0670\u0631\u0670\u0649\u0670 \u064C"+
+        "\u0651 \u064D\u0651 \u064E\u0651 \u064F\u0651 \u0650\u0651 \u0651\u0670"+
+        "\u064A\u0654\u0631\u064A\u0654\u0632\u064A\u0654\u0646\u0628\u0631\u0628"+
+        "\u0632\u0628\u0646\u062A\u0631\u062A\u0632\u062A\u0646\u062B\u0631\u062B"+
+        "\u0632\u062B\u0646\u0645\u0627\u0646\u0631\u0646\u0632\u0646\u0646\u064A"+
+        "\u0631\u064A\u0632\u064A\u0646\u064A\u0654\u062E\u064A\u0654\u0647\u0628"+
+        "\u0647\u062A\u0647\u0635\u062E\u0644\u0647\u0646\u0647\u0647\u0670\u062B"+
+        "\u0647\u0633\u0647\u0634\u0645\u0634\u0647\u0640\u064E\u0651\u0640\u064F"+
+        "\u0651\u0640\u0650\u0651\u0637\u0649\u0637\u064A\u0639\u0649\u0639\u064A"+
+        "\u063A\u0649\u063A\u064A\u0633\u0649\u0633\u064A\u0634\u0649\u0634\u064A"+
+        "\u062D\u0649\u062C\u0649\u062E\u0649\u0635\u0649\u0635\u064A\u0636\u0649"+
+        "\u0636\u064A\u0634\u062C\u0634\u062D\u0634\u062E\u0634\u0631\u0633\u0631"+
+        "\u0635\u0631\u0636\u0631\u0627\u064B\u062A\u062C\u0645\u062A\u062D\u062C"+
+        "\u062A\u062D\u0645\u062A\u062E\u0645\u062A\u0645\u062C\u062A\u0645\u062D"+
+        "\u062A\u0645\u062E\u062D\u0645\u064A\u062D\u0645\u0649\u0633\u062D\u062C"+
+        "\u0633\u062C\u062D\u0633\u062C\u0649\u0633\u0645\u062D\u0633\u0645\u062C"+
+        "\u0633\u0645\u0645\u0635\u062D\u062D\u0635\u0645\u0645\u0634\u062D\u0645"+
+        "\u0634\u062C\u064A\u0634\u0645\u062E\u0634\u0645\u0645\u0636\u062D\u0649"+
+        "\u0636\u062E\u0645\u0637\u0645\u062D\u0637\u0645\u0645\u0637\u0645\u064A"+
+        "\u0639\u062C\u0645\u0639\u0645\u0645\u0639\u0645\u0649\u063A\u0645\u0645"+
+        "\u063A\u0645\u064A\u063A\u0645\u0649\u0641\u062E\u0645\u0642\u0645\u062D"+
+        "\u0642\u0645\u0645\u0644\u062D\u0645\u0644\u062D\u064A\u0644\u062D\u0649"+
+        "\u0644\u062C\u062C\u0644\u062E\u0645\u0644\u0645\u062D\u0645\u062D\u062C"+
+        "\u0645\u062D\u064A\u0645\u062C\u062D\u0645\u062E\u0645\u0645\u062C\u062E"+
+        "\u0647\u0645\u062C\u0647\u0645\u0645\u0646\u062D\u0645\u0646\u062D\u0649"+
+        "\u0646\u062C\u0645\u0646\u062C\u0649\u0646\u0645\u064A\u0646\u0645\u0649"+
+        "\u064A\u0645\u0645\u0628\u062E\u064A\u062A\u062C\u064A\u062A\u062C\u0649"+
+        "\u062A\u062E\u064A\u062A\u062E\u0649\u062A\u0645\u064A\u062A\u0645\u0649"+
+        "\u062C\u0645\u064A\u062C\u062D\u0649\u062C\u0645\u0649\u0633\u062E\u0649"+
+        "\u0635\u062D\u064A\u0634\u062D\u064A\u0636\u062D\u064A\u0644\u062C\u064A"+
+        "\u0644\u0645\u064A\u064A\u062C\u064A\u064A\u0645\u064A\u0645\u0645\u064A"+
+        "\u0642\u0645\u064A\u0646\u062D\u064A\u0639\u0645\u064A\u0643\u0645\u064A"+
+        "\u0646\u062C\u062D\u0645\u062E\u064A\u0644\u062C\u0645\u0643\u0645\u0645"+
+        "\u062C\u062D\u064A\u062D\u062C\u064A\u0645\u062C\u064A\u0641\u0645\u064A"+
+        "\u0628\u062D\u064A\u0633\u062E\u064A\u0646\u062C\u064A\u0635\u0644\u06D2"+
+        "\u0642\u0644\u06D2\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644"+
+        "\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644\u0627"+
+        "\u0644\u0647\000\u2014\u2013_{}\u3014\u3015\u3010\u3011\u300A\u300B\u3008"+
+        "\u3009\u300C\u300D\u300E\u300F,\u3001;:#&*-<>\134$%@ \u064B\u0640\u064B"+
+        "\u0640\u0651 \u0652\u0640\u0652\u0621\u0627\u0653\u0627\u0654\u0648\u0654"+
+        "\u0627\u0655\u0629\u0644\u0627\u0653\u0644\u0627\u0654\u0644\u0627\u0655"+
+        "\042'[]^`|~\u3002\u30FB\u30A5\u30E3\u00A2\u00A3\u00AC\u00A6\u00A5\u20A9"+
+        "\u2502\u2190\u2191\u2192\u2193\u25A0\u25CBA\u0300A\u0301A\u0302A\u0303"+
+        "A\u0308A\u030AC\u0327E\u0300E\u0301E\u0302E\u0308I\u0300I\u0301I\u0302"+
+        "I\u0308N\u0303O\u0300O\u0301O\u0302O\u0303O\u0308U\u0300U\u0301U\u0302"+
+        "U\u0308Y\u0301a\u0300a\u0301a\u0302a\u0303a\u0308a\u030Ac\u0327e\u0300"+
+        "e\u0301e\u0302e\u0308i\u0300i\u0301i\u0302i\u0308n\u0303o\u0300o\u0301"+
+        "o\u0302o\u0303o\u0308u\u0300u\u0301u\u0302u\u0308y\u0301y\u0308A\u0304"+
+        "a\u0304A\u0306a\u0306A\u0328a\u0328C\u0301c\u0301C\u0302c\u0302C\u0307"+
+        "c\u0307C\u030Cc\u030CD\u030Cd\u030CE\u0304e\u0304E\u0306e\u0306E\u0307"+
+        "e\u0307E\u0328e\u0328E\u030Ce\u030CG\u0302g\u0302G\u0306g\u0306G\u0307"+
+        "g\u0307G\u0327g\u0327H\u0302h\u0302I\u0303i\u0303I\u0304i\u0304I\u0306"+
+        "i\u0306I\u0328i\u0328I\u0307J\u0302j\u0302K\u0327k\u0327L\u0301l\u0301"+
+        "L\u0327l\u0327L\u030Cl\u030CN\u0301n\u0301N\u0327n\u0327N\u030Cn\u030C"+
+        "O\u0304o\u0304O\u0306o\u0306O\u030Bo\u030BR\u0301r\u0301R\u0327r\u0327"+
+        "R\u030Cr\u030CS\u0301s\u0301S\u0302s\u0302S\u0327s\u0327S\u030Cs\u030C"+
+        "T\u0327t\u0327T\u030Ct\u030CU\u0303u\u0303U\u0304u\u0304U\u0306u\u0306"+
+        "U\u030Au\u030AU\u030Bu\u030BU\u0328u\u0328W\u0302w\u0302Y\u0302y\u0302"+
+        "Y\u0308Z\u0301z\u0301Z\u0307z\u0307Z\u030Cz\u030CO\u031Bo\u031BU\u031B"+
+        "u\u031BA\u030Ca\u030CI\u030Ci\u030CO\u030Co\u030CU\u030Cu\u030CU\u0308"+
+        "\u0304u\u0308\u0304U\u0308\u0301u\u0308\u0301U\u0308\u030Cu\u0308\u030C"+
+        "U\u0308\u0300u\u0308\u0300A\u0308\u0304a\u0308\u0304A\u0307\u0304a\u0307"+
+        "\u0304\u00C6\u0304\u00E6\u0304G\u030Cg\u030CK\u030Ck\u030CO\u0328o\u0328"+
+        "O\u0328\u0304o\u0328\u0304\u01B7\u030C\u0292\u030Cj\u030CG\u0301g\u0301"+
+        "N\u0300n\u0300A\u030A\u0301a\u030A\u0301\u00C6\u0301\u00E6\u0301\u00D8"+
+        "\u0301\u00F8\u0301A\u030Fa\u030FA\u0311a\u0311E\u030Fe\u030FE\u0311e\u0311"+
+        "I\u030Fi\u030FI\u0311i\u0311O\u030Fo\u030FO\u0311o\u0311R\u030Fr\u030F"+
+        "R\u0311r\u0311U\u030Fu\u030FU\u0311u\u0311S\u0326s\u0326T\u0326t\u0326"+
+        "H\u030Ch\u030CA\u0307a\u0307E\u0327e\u0327O\u0308\u0304o\u0308\u0304O"+
+        "\u0303\u0304o\u0303\u0304O\u0307o\u0307O\u0307\u0304o\u0307\u0304Y\u0304"+
+        "y\u0304\u0300\u0301\u0313\u0308\u0301\u02B9;\u00A8\u0301\u0391\u0301\u00B7"+
+        "\u0395\u0301\u0397\u0301\u0399\u0301\u039F\u0301\u03A5\u0301\u03A9\u0301"+
+        "\u03B9\u0308\u0301\u0399\u0308\u03A5\u0308\u03B1\u0301\u03B5\u0301\u03B7"+
+        "\u0301\u03B9\u0301\u03C5\u0308\u0301\u03B9\u0308\u03C5\u0308\u03BF\u0301"+
+        "\u03C5\u0301\u03C9\u0301\u03D2\u0301\u03D2\u0308\u0415\u0300\u0415\u0308"+
+        "\u0413\u0301\u0406\u0308\u041A\u0301\u0418\u0300\u0423\u0306\u0418\u0306"+
+        "\u0438\u0306\u0435\u0300\u0435\u0308\u0433\u0301\u0456\u0308\u043A\u0301"+
+        "\u0438\u0300\u0443\u0306\u0474\u030F\u0475\u030F\u0416\u0306\u0436\u0306"+
+        "\u0410\u0306\u0430\u0306\u0410\u0308\u0430\u0308\u0415\u0306\u0435\u0306"+
+        "\u04D8\u0308\u04D9\u0308\u0416\u0308\u0436\u0308\u0417\u0308\u0437\u0308"+
+        "\u0418\u0304\u0438\u0304\u0418\u0308\u0438\u0308\u041E\u0308\u043E\u0308"+
+        "\u04E8\u0308\u04E9\u0308\u042D\u0308\u044D\u0308\u0423\u0304\u0443\u0304"+
+        "\u0423\u0308\u0443\u0308\u0423\u030B\u0443\u030B\u0427\u0308\u0447\u0308"+
+        "\u042B\u0308\u044B\u0308\u0627\u0653\u0627\u0654\u0648\u0654\u0627\u0655"+
+        "\u064A\u0654\u06D5\u0654\u06C1\u0654\u06D2\u0654\u0928\u093C\u0930\u093C"+
+        "\u0933\u093C\u0915\u093C\u0916\u093C\u0917\u093C\u091C\u093C\u0921\u093C"+
+        "\u0922\u093C\u092B\u093C\u092F\u093C\u09C7\u09BE\u09C7\u09D7\u09A1\u09BC"+
+        "\u09A2\u09BC\u09AF\u09BC\u0A32\u0A3C\u0A38\u0A3C\u0A16\u0A3C\u0A17\u0A3C"+
+        "\u0A1C\u0A3C\u0A2B\u0A3C\u0B47\u0B56\u0B47\u0B3E\u0B47\u0B57\u0B21\u0B3C"+
+        "\u0B22\u0B3C\u0B92\u0BD7\u0BC6\u0BBE\u0BC7\u0BBE\u0BC6\u0BD7\u0C46\u0C56"+
+        "\u0CBF\u0CD5\u0CC6\u0CD5\u0CC6\u0CD6\u0CC6\u0CC2\u0CC6\u0CC2\u0CD5\u0D46"+
+        "\u0D3E\u0D47\u0D3E\u0D46\u0D57\u0DD9\u0DCA\u0DD9\u0DCF\u0DD9\u0DCF\u0DCA"+
+        "\u0DD9\u0DDF\u0F42\u0FB7\u0F4C\u0FB7\u0F51\u0FB7\u0F56\u0FB7\u0F5B\u0FB7"+
+        "\u0F40\u0FB5\u0F71\u0F72\u0F71\u0F74\u0FB2\u0F80\u0FB3\u0F80\u0F71\u0F80"+
+        "\u0F92\u0FB7\u0F9C\u0FB7\u0FA1\u0FB7\u0FA6\u0FB7\u0FAB\u0FB7\u0F90\u0FB5"+
+        "\u1025\u102EA\u0325a\u0325B\u0307b\u0307B\u0323b\u0323B\u0331b\u0331C"+
+        "\u0327\u0301c\u0327\u0301D\u0307d\u0307D\u0323d\u0323D\u0331d\u0331D\u0327"+
+        "d\u0327D\u032Dd\u032DE\u0304\u0300e\u0304\u0300E\u0304\u0301e\u0304\u0301"+
+        "E\u032De\u032DE\u0330e\u0330E\u0327\u0306e\u0327\u0306F\u0307f\u0307G"+
+        "\u0304g\u0304H\u0307h\u0307H\u0323h\u0323H\u0308h\u0308H\u0327h\u0327"+
+        "H\u032Eh\u032EI\u0330i\u0330I\u0308\u0301i\u0308\u0301K\u0301k\u0301K"+
+        "\u0323k\u0323K\u0331k\u0331L\u0323l\u0323L\u0323\u0304l\u0323\u0304L\u0331"+
+        "l\u0331L\u032Dl\u032DM\u0301m\u0301M\u0307m\u0307M\u0323m\u0323N\u0307"+
+        "n\u0307N\u0323n\u0323N\u0331n\u0331N\u032Dn\u032DO\u0303\u0301o\u0303"+
+        "\u0301O\u0303\u0308o\u0303\u0308O\u0304\u0300o\u0304\u0300O\u0304\u0301"+
+        "o\u0304\u0301P\u0301p\u0301P\u0307p\u0307R\u0307r\u0307R\u0323r\u0323"+
+        "R\u0323\u0304r\u0323\u0304R\u0331r\u0331S\u0307s\u0307S\u0323s\u0323S"+
+        "\u0301\u0307s\u0301\u0307S\u030C\u0307s\u030C\u0307S\u0323\u0307s\u0323"+
+        "\u0307T\u0307t\u0307T\u0323t\u0323T\u0331t\u0331T\u032Dt\u032DU\u0324"+
+        "u\u0324U\u0330u\u0330U\u032Du\u032DU\u0303\u0301u\u0303\u0301U\u0304\u0308"+
+        "u\u0304\u0308V\u0303v\u0303V\u0323v\u0323W\u0300w\u0300W\u0301w\u0301"+
+        "W\u0308w\u0308W\u0307w\u0307W\u0323w\u0323X\u0307x\u0307X\u0308x\u0308"+
+        "Y\u0307y\u0307Z\u0302z\u0302Z\u0323z\u0323Z\u0331z\u0331h\u0331t\u0308"+
+        "w\u030Ay\u030A\u017F\u0307A\u0323a\u0323A\u0309a\u0309A\u0302\u0301a\u0302"+
+        "\u0301A\u0302\u0300a\u0302\u0300A\u0302\u0309a\u0302\u0309A\u0302\u0303"+
+        "a\u0302\u0303A\u0323\u0302a\u0323\u0302A\u0306\u0301a\u0306\u0301A\u0306"+
+        "\u0300a\u0306\u0300A\u0306\u0309a\u0306\u0309A\u0306\u0303a\u0306\u0303"+
+        "A\u0323\u0306a\u0323\u0306E\u0323e\u0323E\u0309e\u0309E\u0303e\u0303E"+
+        "\u0302\u0301e\u0302\u0301E\u0302\u0300e\u0302\u0300E\u0302\u0309e\u0302"+
+        "\u0309E\u0302\u0303e\u0302\u0303E\u0323\u0302e\u0323\u0302I\u0309i\u0309"+
+        "I\u0323i\u0323O\u0323o\u0323O\u0309o\u0309O\u0302\u0301o\u0302\u0301O"+
+        "\u0302\u0300o\u0302\u0300O\u0302\u0309o\u0302\u0309O\u0302\u0303o\u0302"+
+        "\u0303O\u0323\u0302o\u0323\u0302O\u031B\u0301o\u031B\u0301O\u031B\u0300"+
+        "o\u031B\u0300O\u031B\u0309o\u031B\u0309O\u031B\u0303o\u031B\u0303O\u031B"+
+        "\u0323o\u031B\u0323U\u0323u\u0323U\u0309u\u0309U\u031B\u0301u\u031B\u0301"+
+        "U\u031B\u0300u\u031B\u0300U\u031B\u0309u\u031B\u0309U\u031B\u0303u\u031B"+
+        "\u0303U\u031B\u0323u\u031B\u0323Y\u0300y\u0300Y\u0323y\u0323Y\u0309y\u0309"+
+        "Y\u0303y\u0303\u03B1\u0313\u03B1\u0314\u03B1\u0313\u0300\u03B1\u0314\u0300"+
+        "\u03B1\u0313\u0301\u03B1\u0314\u0301\u03B1\u0313\u0342\u03B1\u0314\u0342"+
+        "\u0391\u0313\u0391\u0314\u0391\u0313\u0300\u0391\u0314\u0300\u0391\u0313"+
+        "\u0301\u0391\u0314\u0301\u0391\u0313\u0342\u0391\u0314\u0342\u03B5\u0313"+
+        "\u03B5\u0314\u03B5\u0313\u0300\u03B5\u0314\u0300\u03B5\u0313\u0301\u03B5"+
+        "\u0314\u0301\u0395\u0313\u0395\u0314\u0395\u0313\u0300\u0395\u0314\u0300"+
+        "\u0395\u0313\u0301\u0395\u0314\u0301\u03B7\u0313\u03B7\u0314\u03B7\u0313"+
+        "\u0300\u03B7\u0314\u0300\u03B7\u0313\u0301\u03B7\u0314\u0301\u03B7\u0313"+
+        "\u0342\u03B7\u0314\u0342\u0397\u0313\u0397\u0314\u0397\u0313\u0300\u0397"+
+        "\u0314\u0300\u0397\u0313\u0301\u0397\u0314\u0301\u0397\u0313\u0342\u0397"+
+        "\u0314\u0342\u03B9\u0313\u03B9\u0314\u03B9\u0313\u0300\u03B9\u0314\u0300"+
+        "\u03B9\u0313\u0301\u03B9\u0314\u0301\u03B9\u0313\u0342\u03B9\u0314\u0342"+
+        "\u0399\u0313\u0399\u0314\u0399\u0313\u0300\u0399\u0314\u0300\u0399\u0313"+
+        "\u0301\u0399\u0314\u0301\u0399\u0313\u0342\u0399\u0314\u0342\u03BF\u0313"+
+        "\u03BF\u0314\u03BF\u0313\u0300\u03BF\u0314\u0300\u03BF\u0313\u0301\u03BF"+
+        "\u0314\u0301\u039F\u0313\u039F\u0314\u039F\u0313\u0300\u039F\u0314\u0300"+
+        "\u039F\u0313\u0301\u039F\u0314\u0301\u03C5\u0313\u03C5\u0314\u03C5\u0313"+
+        "\u0300\u03C5\u0314\u0300\u03C5\u0313\u0301\u03C5\u0314\u0301\u03C5\u0313"+
+        "\u0342\u03C5\u0314\u0342\u03A5\u0314\u03A5\u0314\u0300\u03A5\u0314\u0301"+
+        "\u03A5\u0314\u0342\u03C9\u0313\u03C9\u0314\u03C9\u0313\u0300\u03C9\u0314"+
+        "\u0300\u03C9\u0313\u0301\u03C9\u0314\u0301\u03C9\u0313\u0342\u03C9\u0314"+
+        "\u0342\u03A9\u0313\u03A9\u0314\u03A9\u0313\u0300\u03A9\u0314\u0300\u03A9"+
+        "\u0313\u0301\u03A9\u0314\u0301\u03A9\u0313\u0342\u03A9\u0314\u0342\u03B1"+
+        "\u0300\u03B1\u0301\u03B5\u0300\u03B5\u0301\u03B7\u0300\u03B7\u0301\u03B9"+
+        "\u0300\u03B9\u0301\u03BF\u0300\u03BF\u0301\u03C5\u0300\u03C5\u0301\u03C9"+
+        "\u0300\u03C9\u0301\u03B1\u0313\u0345\u03B1\u0314\u0345\u03B1\u0313\u0300"+
+        "\u0345\000\u03B1\u0314\u0300\u0345\000\u03B1\u0313\u0301\u0345\000\u03B1"+
+        "\u0314\u0301\u0345\000\u03B1\u0313\u0342\u0345\000\u03B1\u0314\u0342\u0345"+
+        "\000\u0391\u0313\u0345\u0391\u0314\u0345\u0391\u0313\u0300\u0345\000\u0391"+
+        "\u0314\u0300\u0345\000\u0391\u0313\u0301\u0345\000\u0391\u0314\u0301\u0345"+
+        "\000\u0391\u0313\u0342\u0345\000\u0391\u0314\u0342\u0345\000\u03B7\u0313"+
+        "\u0345\u03B7\u0314\u0345\u03B7\u0313\u0300\u0345\000\u03B7\u0314\u0300"+
+        "\u0345\000\u03B7\u0313\u0301\u0345\000\u03B7\u0314\u0301\u0345\000\u03B7"+
+        "\u0313\u0342\u0345\000\u03B7\u0314\u0342\u0345\000\u0397\u0313\u0345\u0397"+
+        "\u0314\u0345\u0397\u0313\u0300\u0345\000\u0397\u0314\u0300\u0345\000\u0397"+
+        "\u0313\u0301\u0345\000\u0397\u0314\u0301\u0345\000\u0397\u0313\u0342\u0345"+
+        "\000\u0397\u0314\u0342\u0345\000\u03C9\u0313\u0345\u03C9\u0314\u0345\u03C9"+
+        "\u0313\u0300\u0345\000\u03C9\u0314\u0300\u0345\000\u03C9\u0313\u0301\u0345"+
+        "\000\u03C9\u0314\u0301\u0345\000\u03C9\u0313\u0342\u0345\000\u03C9\u0314"+
+        "\u0342\u0345\000\u03A9\u0313\u0345\u03A9\u0314\u0345\u03A9\u0313\u0300"+
+        "\u0345\000\u03A9\u0314\u0300\u0345\000\u03A9\u0313\u0301\u0345\000\u03A9"+
+        "\u0314\u0301\u0345\000\u03A9\u0313\u0342\u0345\000\u03A9\u0314\u0342\u0345"+
+        "\000\u03B1\u0306\u03B1\u0304\u03B1\u0300\u0345\u03B1\u0345\u03B1\u0301"+
+        "\u0345\u03B1\u0342\u03B1\u0342\u0345\u0391\u0306\u0391\u0304\u0391\u0300"+
+        "\u0391\u0301\u0391\u0345\u03B9\u00A8\u0342\u03B7\u0300\u0345\u03B7\u0345"+
+        "\u03B7\u0301\u0345\u03B7\u0342\u03B7\u0342\u0345\u0395\u0300\u0395\u0301"+
+        "\u0397\u0300\u0397\u0301\u0397\u0345\u1FBF\u0300\u1FBF\u0301\u1FBF\u0342"+
+        "\u03B9\u0306\u03B9\u0304\u03B9\u0308\u0300\u03B9\u0308\u0301\u03B9\u0342"+
+        "\u03B9\u0308\u0342\u0399\u0306\u0399\u0304\u0399\u0300\u0399\u0301\u1FFE"+
+        "\u0300\u1FFE\u0301\u1FFE\u0342\u03C5\u0306\u03C5\u0304\u03C5\u0308\u0300"+
+        "\u03C5\u0308\u0301\u03C1\u0313\u03C1\u0314\u03C5\u0342\u03C5\u0308\u0342"+
+        "\u03A5\u0306\u03A5\u0304\u03A5\u0300\u03A5\u0301\u03A1\u0314\u00A8\u0300"+
+        "\u00A8\u0301`\u03C9\u0300\u0345\u03C9\u0345\u03C9\u0301\u0345\u03C9\u0342"+
+        "\u03C9\u0342\u0345\u039F\u0300\u039F\u0301\u03A9\u0300\u03A9\u0301\u03A9"+
+        "\u0345\u00B4\u2002\u2003\u03A9KA\u030A\u2190\u0338\u2192\u0338\u2194\u0338"+
+        "\u21D0\u0338\u21D4\u0338\u21D2\u0338\u2203\u0338\u2208\u0338\u220B\u0338"+
+        "\u2223\u0338\u2225\u0338\u223C\u0338\u2243\u0338\u2245\u0338\u2248\u0338"+
+        "=\u0338\u2261\u0338\u224D\u0338<\u0338>\u0338\u2264\u0338\u2265\u0338"+
+        "\u2272\u0338\u2273\u0338\u2276\u0338\u2277\u0338\u227A\u0338\u227B\u0338"+
+        "\u2282\u0338\u2283\u0338\u2286\u0338\u2287\u0338\u22A2\u0338\u22A8\u0338"+
+        "\u22A9\u0338\u22AB\u0338\u227C\u0338\u227D\u0338\u2291\u0338\u2292\u0338"+
+        "\u22B2\u0338\u22B3\u0338\u22B4\u0338\u22B5\u0338\u3008\u3009\u304B\u3099"+
+        "\u304D\u3099\u304F\u3099\u3051\u3099\u3053\u3099\u3055\u3099\u3057\u3099"+
+        "\u3059\u3099\u305B\u3099\u305D\u3099\u305F\u3099\u3061\u3099\u3064\u3099"+
+        "\u3066\u3099\u3068\u3099\u306F\u3099\u306F\u309A\u3072\u3099\u3072\u309A"+
+        "\u3075\u3099\u3075\u309A\u3078\u3099\u3078\u309A\u307B\u3099\u307B\u309A"+
+        "\u3046\u3099\u309D\u3099\u30AB\u3099\u30AD\u3099\u30AF\u3099\u30B1\u3099"+
+        "\u30B3\u3099\u30B5\u3099\u30B7\u3099\u30B9\u3099\u30BB\u3099\u30BD\u3099"+
+        "\u30BF\u3099\u30C1\u3099\u30C4\u3099\u30C6\u3099\u30C8\u3099\u30CF\u3099"+
+        "\u30CF\u309A\u30D2\u3099\u30D2\u309A\u30D5\u3099\u30D5\u309A\u30D8\u3099"+
+        "\u30D8\u309A\u30DB\u3099\u30DB\u309A\u30A6\u3099\u30EF\u3099\u30F0\u3099"+
+        "\u30F1\u3099\u30F2\u3099\u30FD\u3099\u8C48\u66F4\u8ECA\u8CC8\u6ED1\u4E32"+
+        "\u53E5\u9F9C\u9F9C\u5951\u91D1\u5587\u5948\u61F6\u7669\u7F85\u863F\u87BA"+
+        "\u88F8\u908F\u6A02\u6D1B\u70D9\u73DE\u843D\u916A\u99F1\u4E82\u5375\u6B04"+
+        "\u721B\u862D\u9E1E\u5D50\u6FEB\u85CD\u8964\u62C9\u81D8\u881F\u5ECA\u6717"+
+        "\u6D6A\u72FC\u90CE\u4F86\u51B7\u52DE\u64C4\u6AD3\u7210\u76E7\u8001\u8606"+
+        "\u865C\u8DEF\u9732\u9B6F\u9DFA\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u8AD6"+
+        "\u58DF\u5F04\u7C60\u807E\u7262\u78CA\u8CC2\u96F7\u58D8\u5C62\u6A13\u6DDA"+
+        "\u6F0F\u7D2F\u7E37\u96FB\u52D2\u808B\u51DC\u51CC\u7A1C\u7DBE\u83F1\u9675"+
+        "\u8B80\u62CF\u6A02\u8AFE\u4E39\u5BE7\u6012\u7387\u7570\u5317\u78FB\u4FBF"+
+        "\u5FA9\u4E0D\u6CCC\u6578\u7D22\u53C3\u585E\u7701\u8449\u8AAA\u6BBA\u8FB0"+
+        "\u6C88\u62FE\u82E5\u63A0\u7565\u4EAE\u5169\u51C9\u6881\u7CE7\u826F\u8AD2"+
+        "\u91CF\u52F5\u5442\u5973\u5EEC\u65C5\u6FFE\u792A\u95AD\u9A6A\u9E97\u9ECE"+
+        "\u529B\u66C6\u6B77\u8F62\u5E74\u6190\u6200\u649A\u6F23\u7149\u7489\u79CA"+
+        "\u7DF4\u806F\u8F26\u84EE\u9023\u934A\u5217\u52A3\u54BD\u70C8\u88C2\u8AAA"+
+        "\u5EC9\u5FF5\u637B\u6BAE\u7C3E\u7375\u4EE4\u56F9\u5BE7\u5DBA\u601C\u73B2"+
+        "\u7469\u7F9A\u8046\u9234\u96F6\u9748\u9818\u4F8B\u79AE\u91B4\u96B8\u60E1"+
+        "\u4E86\u50DA\u5BEE\u5C3F\u6599\u6A02\u71CE\u7642\u84FC\u907C\u9F8D\u6688"+
+        "\u962E\u5289\u677B\u67F3\u6D41\u6E9C\u7409\u7559\u786B\u7D10\u985E\u516D"+
+        "\u622E\u9678\u502B\u5D19\u6DEA\u8F2A\u5F8B\u6144\u6817\u7387\u9686\u5229"+
+        "\u540F\u5C65\u6613\u674E\u68A8\u6CE5\u7406\u75E2\u7F79\u88CF\u88E1\u91CC"+
+        "\u96E2\u533F\u6EBA\u541D\u71D0\u7498\u85FA\u96A3\u9C57\u9E9F\u6797\u6DCB"+
+        "\u81E8\u7ACB\u7B20\u7C92\u72C0\u7099\u8B58\u4EC0\u8336\u523A\u5207\u5EA6"+
+        "\u62D3\u7CD6\u5B85\u6D1E\u66B4\u8F3B\u884C\u964D\u898B\u5ED3\u5140\u55C0"+
+        "\u585A\u6674\u51DE\u732A\u76CA\u793C\u795E\u7965\u798F\u9756\u7CBE\u7FBD"+
+        "\u8612\u8AF8\u9038\u90FD\u98EF\u98FC\u9928\u9DB4\u05D9\u05B4\u05F2\u05B7"+
+        "\u05E9\u05C1\u05E9\u05C2\u05E9\u05BC\u05C1\u05E9\u05BC\u05C2\u05D0\u05B7"+
+        "\u05D0\u05B8\u05D0\u05BC\u05D1\u05BC\u05D2\u05BC\u05D3\u05BC\u05D4\u05BC"+
+        "\u05D5\u05BC\u05D6\u05BC\u05D8\u05BC\u05D9\u05BC\u05DA\u05BC\u05DB\u05BC"+
+        "\u05DC\u05BC\u05DE\u05BC\u05E0\u05BC\u05E1\u05BC\u05E3\u05BC\u05E4\u05BC"+
+        "\u05E6\u05BC\u05E7\u05BC\u05E8\u05BC\u05E9\u05BC\u05EA\u05BC\u05D5\u05B9"+
+        "\u05D1\u05BF\u05DB\u05BF\u05E4\u05BF"
+    ;
+
+    static final CompactByteArray canonClass = new CompactByteArray(
+        "\000\u0200\uA5A5\006\000\u0080\000\000\u0100\000\u0180\u0200\u0280\u0300"+
+        "\000\000\000\u0380\uA5A5\004\u0400\u0480\u0500\u0480\u0480\u0580\u0600"+
+        "\u0680\u0700\u0780\u0800\uA5A5\016\000\u0880\000\u0900\uA5A5\017\000\u0980"+
+        "\uA5A5\036\000\u0A00\u0A80\uA5A5\u0194\000\u0B00\uA5A5\005\000\u0B80\000"+
+        "\000\000"
+        ,
+        "\000\u0C00\uA580\u00A5\u15E6\uE8A5\u04DC\uE8D8\uA505\uDCCA\uCAA5\u04DC"+
+        "\uCACA\uA50B\uDCA5\u0501\uA504\uDCA5\u08E6\uF0E6\uDCDC\uDCE6\uE6E6\uDCDC"+
+        "\uA511\u00EA\uEAE9\uA520\u00A5\u04E6\uA58A\u00DC\uA504\uE6DC\uE6E6\uE6DE"+
+        "\uDCA5\u06E6\u00A5\u05DC\uE6E6\uDCE6\uE6DE\uE4E6\u0A0B\u0C0D\u0E0F\u1011"+
+        "\u1213\024\u1516\027\030\u1900\uE6A5\u8600\u1B1C\u1D1E\u1F20\u2122\uE6E6"+
+        "\uDCA5\u1A00\u23A5\u6500\uA507\uE600\u00A5\u04E6\uDCE6\000\uE6E6\u00DC"+
+        "\uE6E6\uDCA5\u2300\u24A5\u1E00\uE6DC\uE6E6\uDCE6\uE6DC\uDCDC\uE6DC\uDCE6"+
+        "\uDCE6\uE6E6\uDCE6\uDCE6\uDCE6\uDCE6\uE6A5\u7100\u07A5\u1000\u0900\000"+
+        "\uE6DC\uE6E6\uA567\007\uA510\011\uA57F\011\uA57F\011\uA507T\u5BA5\u7300"+
+        "\u09A5\u6D00\u6767\u09A5\u0D00\uA504\u6BA5\u6C00\u7676\uA50E\u00A5\u047A"+
+        "\uA54C\u00DC\uDCA5\u1B00\uDC00\uDC00\uD8A5\u3700\u8182\u0084\uA505\u00A5"+
+        "\u0482\000\u8200\uE6E6\u0900\uE6E6\uA53E\u00DC\uA570\007\011\uA598\011"+
+        "\uA556\u00E4\uA5A6\u00E6\uE601\u01A5\u04E6\u0101\u01E6\uE6A5\u0400\uE6A5"+
+        "\u4800\uDAE4\uE8DE\uE0E0\uA569\010\u08A5\u8300\u1AA5\u8100\uA504\uE6A5"+
+        "\u5C00"
+        );
+}
diff --git a/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
new file mode 100644
index 0000000..e55d079
--- /dev/null
+++ b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
@@ -0,0 +1,560 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Vector;
+import java.util.Stack;
+import com.ibm.icu.impl.Assert;
+import java.text.CharacterIterator;
+import java.io.InputStream;
+import java.io.IOException;
+
+
+/**
+ * A subclass of RuleBasedBreakIterator that adds the ability to use a dictionary
+ * to further subdivide ranges of text beyond what is possible using just the
+ * state-table-based algorithm.  This is necessary, for example, to handle
+ * word and line breaking in Thai, which doesn't use spaces between words.  The
+ * state-table-based algorithm used by RuleBasedBreakIterator_Old is used to divide
+ * up text as far as possible, and then contiguous ranges of letters are
+ * repeatedly compared against a list of known words (i.e., the dictionary)
+ * to divide them up into words.
+ *
+ * DictionaryBasedBreakIterator uses the same rule language as RuleBasedBreakIterator_Old,
+ * but adds one more special substitution name: _dictionary_.  This substitution
+ * name is used to identify characters in words in the dictionary.  The idea is that
+ * if the iterator passes over a chunk of text that includes two or more characters
+ * in a row that are included in _dictionary_, it goes back through that range and
+ * derives additional break positions (if possible) using the dictionary.
+ *
+ * DictionaryBasedBreakIterator is also constructed with the filename of a dictionary
+ * file.  It uses Class.getResource() to locate the dictionary file.  The
+ * dictionary file is in a serialized binary format.  We have a very primitive (and
+ * slow) BuildDictionaryFile utility for creating dictionary files, but aren't
+ * currently making it public.  Contact us for help.
+ *
+ * @stable ICU 2.0
+ */
+public class DictionaryBasedBreakIterator extends RuleBasedBreakIterator {
+    
+    /**
+     * Keeps track of if we are using the compact trie dictionary.
+     */
+    private boolean usingCTDictionary = false;
+    /**
+     * a list of known words that is used to divide up contiguous ranges of letters,
+     * stored in a compressed, indexed, format that offers fast access
+     */
+    private BreakDictionary dictionary;
+
+    /*
+     * 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;
+
+
+    /**
+     * when a range of characters is divided up using the dictionary, the break
+     * positions that are discovered are stored here, preventing us from having
+     * to use either the dictionary or the state table again until the iterator
+     * leaves this range of text
+     */
+    int[] cachedBreakPositions;
+
+    /**
+     * if cachedBreakPositions is not null, this indicates which item in the
+     * cache the current iteration position refers to
+     */
+    int positionInCache;
+
+    /**
+     * Special variable name for characters in words in dictionary
+     */
+    
+    /**
+     * Construct a DictionarBasedBreakIterator from precompiled rules. Use by ThaiBreakEngine
+     * uses the BreakCTDictionary.
+     * @param compiledRules an input stream containing the binary (flattened) compiled rules.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DictionaryBasedBreakIterator(InputStream compiledRules) throws IOException {
+        fRData = RBBIDataWrapper.get(compiledRules);   // Init the RBBI part of this iterator.
+        dictionary = null;
+        usingCTDictionary = true;
+    }
+    /**
+     * Constructs a DictionaryBasedBreakIterator.
+     * @param rules Same as the rules parameter on RuleBasedBreakIterator,
+     * except for the special meaning of "_dictionary_".  This parameter is just
+     * passed through to RuleBasedBreakIterator constructor.
+     * @param dictionaryStream the stream containing the dictionary data
+     * @stable ICU 2.0
+     */
+    public DictionaryBasedBreakIterator(String rules,
+                                        InputStream dictionaryStream) throws IOException {
+        super(rules);
+        dictionary = new BreakDictionary(dictionaryStream);
+    }
+
+    
+    /**
+     * Construct a DictionarBasedBreakIterator from precompiled rules.
+     * @param compiledRules an input stream containing the binary (flattened) compiled rules.
+     * @param dictionaryStream an input stream containing the dictionary data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public DictionaryBasedBreakIterator(InputStream compiledRules,
+                                         InputStream dictionaryStream) throws IOException {
+       fRData = RBBIDataWrapper.get(compiledRules);   // Init the RBBI part of this iterator.
+       dictionary = new BreakDictionary(dictionaryStream);
+    }
+                    
+
+    /** @stable ICU 2.0 */
+    public void setText(CharacterIterator newText) {
+        super.setText(newText);
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+    }
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public int first() {
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.first();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public int last() {
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.last();
+    }
+
+    /**
+     * Advances the iterator one step backwards.
+     * @return The position of the last boundary position before the
+     * current iteration position
+     * @stable ICU 2.0
+     */
+    public int previous() {
+        CharacterIterator text = getText();
+
+        // if we have cached break positions and we're still in the range
+        // covered by them, just move one step backward in the cache
+        if (cachedBreakPositions != null && positionInCache > 0) {
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+
+        // otherwise, dump the cache and use the inherited previous() method to move
+        // backward.  This may fill up the cache with new break positions, in which
+        // case we have to mark our position in the cache. If it doesn't, use next()
+        // to move forward until we hit or pass the current position. This *will* fill
+        // the cache.
+        else {
+            cachedBreakPositions = null;
+            int offset = current();
+            int result = super.previous();
+            
+            if (cachedBreakPositions != null) {
+                positionInCache = cachedBreakPositions.length - 2;
+                return result;
+            }
+            
+            while (result < offset) {
+                int nextResult = next();
+                
+                if (nextResult >= offset) {
+                    break;
+                }
+                
+                result = nextResult;
+            }
+            
+            if (cachedBreakPositions != null) {
+                positionInCache = cachedBreakPositions.length - 2;
+            }
+            
+            if (result != BreakIterator.DONE) {
+                text.setIndex(result);
+            }
+            
+            return result;
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the last boundary position
+     * before the specified position.
+     * @param offset The position to begin searching from
+     * @return The position of the last boundary before "offset"
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or "offset" is outside the
+        // range covered by the cache, we can just call the inherited routine
+        // (which will eventually call other routines in this class that may
+        // refresh the cache)
+        if (cachedBreakPositions == null || offset <= cachedBreakPositions[0] ||
+                offset > cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.preceding(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the cache,
+        // then all we have to do is search the cache for the last break position
+        // before "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset > cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the first boundary position after
+     * the specified position.
+     * @param offset The position to begin searching forward from
+     * @return The position of the first boundary after "offset"
+     * @stable ICU 2.0
+     */
+    public int following(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or if "offset" is outside the
+        // range covered by the cache, then dump the cache and call our
+        // inherited following() method.  This will call other methods in this
+        // class that may refresh the cache.
+        if (cachedBreakPositions == null || offset < cachedBreakPositions[0] ||
+                offset >= cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.following(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the
+        // cache, then just search the cache for the first break position
+        // after "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset >= cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+    
+    
+    /**
+     * Return the status tag from the break rule that determined the most recently
+     * returned break position. 
+     * 
+     * TODO:  not supported with dictionary based break iterators.
+     *
+     * @return the status from the break rule that determined the most recently
+     * returned break position.
+     * @draft ICU 3.0
+     * @provisional This API might change or be removed in a future release.
+     */
+     public int getRuleStatus() {
+        return 0;
+     }
+
+
+    /**
+     * Get the status (tag) values from the break rule(s) that determined the most 
+     * recently returned break position.  The values appear in the rule source
+     * within brackets, {123}, for example.  The default status value for rules
+     * that do not explicitly provide one is zero.
+     * <p>
+     * TODO: not supported for dictionary based break iterator. 
+     *
+     * @param fillInArray an array to be filled in with the status values.  
+     * @return          The number of rule status values from rules that determined 
+     *                  the most recent boundary returned by the break iterator.
+     *                  In the event that the array is too small, the return value
+     *                  is the total number of status values that were available,
+     *                  not the reduced number that were actually returned.
+     * @draft ICU 3.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRuleStatusVec(int[] fillInArray) {
+        if (fillInArray != null && fillInArray.length>=1) {  
+            fillInArray[0] = 0;
+        }
+        return 1;
+    }
+    /**
+     * This is the implementation function for next().
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            fDictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range.
+            if (!usingCTDictionary && fDictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        Assert.assrt(false);
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * This is the function that actually implements the dictionary-based
+     * algorithm.  Given the endpoints of a range of text, it uses the
+     * dictionary to determine the positions of any boundaries in this
+     * range.  It stores all the boundary positions it discovers in
+     * cachedBreakPositions so that we only have to do this work once
+     * for each time we enter the range.
+     */
+    private void divideUpDictionaryRange(int startPos, int endPos) {
+        CharacterIterator text = getText();
+
+        // the range we're dividing may begin or end with non-dictionary characters
+        // (i.e., for line breaking, we may have leading or trailing punctuation
+        // that needs to be kept with the word).  Seek from the beginning of the
+        // range to the first dictionary character
+        text.setIndex(startPos);
+        int c = CICurrent32(text);
+        while (isDictionaryChar(c) == false) {  
+            c = CINext32(text);
+        }
+        
+        //System.out.println("\nDividing up range from " + (text.getIndex() + 1) + " to " + endPos);
+
+        // initialize.  We maintain two stacks: currentBreakPositions contains
+        // the list of break positions that will be returned if we successfully
+        // finish traversing the whole range now.  possibleBreakPositions lists
+        // all other possible word ends we've passed along the way.  (Whenever
+        // we reach an error [a sequence of characters that can't begin any word
+        // in the dictionary], we back up, possibly delete some breaks from
+        // currentBreakPositions, move a break from possibleBreakPositions
+        // to currentBreakPositions, and start over from there.  This process
+        // continues in this way until we either successfully make it all the way
+        // across the range, or exhaust all of our combinations of break
+        // positions.)
+        Stack currentBreakPositions = new Stack();
+        Stack possibleBreakPositions = new Stack();
+        Vector wrongBreakPositions = new Vector();
+
+        // the dictionary is implemented as a trie, which is treated as a state
+        // machine.  -1 represents the end of a legal word.  Every word in the
+        // dictionary is represented by a path from the root node to -1.  A path
+        // that ends in state 0 is an illegal combination of characters.
+        int state = 0;
+
+        // these two variables are used for error handling.  We keep track of the
+        // farthest we've gotten through the range being divided, and the combination
+        // of breaks that got us that far.  If we use up all possible break
+        // combinations, the text contains an error or a word that's not in the
+        // dictionary.  In this case, we "bless" the break positions that got us the
+        // farthest as real break positions, and then start over from scratch with
+        // the character where the error occurred.
+        int farthestEndPoint = text.getIndex();
+        Stack bestBreakPositions = null;
+
+        // initialize (we always exit the loop with a break statement)
+        c = CICurrent32(text);
+        while (true) {
+//System.out.print("c = " + Integer.toString(c, 16) + ", pos = " + text.getIndex());
+
+            // if we can transition to state "-1" from our current state, we're
+            // on the last character of a legal word.  Push that position onto
+            // the possible-break-positions stack
+            if (dictionary.at(state, 0) == -1) {
+                possibleBreakPositions.push(new Integer(text.getIndex()));
+            }
+
+            // look up the new state to transition to in the dictionary
+            //    There will be no supplementaries here because the Thai dictionary
+            //     does not include any.  This code is going away soon, not worth
+            //     fixing.
+            state = (dictionary.at(state, (char)c)) & 0xFFFF;  // TODO: fix supplementaries
+//System.out.print(", state = " + state);
+
+            // if the character we're sitting on causes us to transition to
+            // the "end of word" state, then it was a non-dictionary character
+            // and we've successfully traversed the whole range.  Drop out
+            // of the loop.
+            if (state == /*-1*/ 0xFFFF) {
+                currentBreakPositions.push(new Integer(text.getIndex()));
+                break;
+            }
+
+            // if the character we're sitting on causes us to transition to
+            // the error state, or if we've gone off the end of the range
+            // without transitioning to the "end of word" state, we've hit
+            // an error...
+            else if (state == 0 || text.getIndex() >= endPos) {
+
+                // if this is the farthest we've gotten, take note of it in
+                // case there's an error in the text
+                if (text.getIndex() > farthestEndPoint) {
+                    farthestEndPoint = text.getIndex();
+                    bestBreakPositions = (Stack)(currentBreakPositions.clone());
+                }
+
+                // wrongBreakPositions is a list of all break positions we've tried starting
+                // that didn't allow us to traverse all the way through the text.  Every time
+                // we pop a break position off of currentBreakPositions, we put it into
+                // wrongBreakPositions to avoid trying it again later.  If we make it to this
+                // spot, we're either going to back up to a break in possibleBreakPositions
+                // and try starting over from there, or we've exhausted all possible break
+                // positions and are going to do the fallback procedure.  This loop prevents
+                // us from messing with anything in possibleBreakPositions that didn't work as
+                // a starting point the last time we tried it (this is to prevent a bunch of
+                // repetitive checks from slowing down some extreme cases)
+                // variable not used Integer newStartingSpot = null;
+                while (!possibleBreakPositions.isEmpty() && wrongBreakPositions.contains(
+                            possibleBreakPositions.peek())) {
+                    possibleBreakPositions.pop();
+                }
+
+                // if we've used up all possible break-position combinations, there's
+                // an error or an unknown word in the text.  In this case, we start
+                // over, treating the farthest character we've reached as the beginning
+                // of the range, and "blessing" the break positions that got us that
+                // far as real break positions
+                if (possibleBreakPositions.isEmpty()) {
+                    if (bestBreakPositions != null) {
+                        currentBreakPositions = bestBreakPositions;
+                        if (farthestEndPoint < endPos) {
+                            text.setIndex(farthestEndPoint + 1);
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    else {
+                        if ((currentBreakPositions.size() == 0
+                                || ((Integer)(currentBreakPositions.peek())).intValue() != text.getIndex())
+                                && text.getIndex() != startPos) {
+                            currentBreakPositions.push(new Integer(text.getIndex()));
+                        }
+                        CINext32(text);
+                        currentBreakPositions.push(new Integer(text.getIndex()));
+                    }
+                }
+
+                // if we still have more break positions we can try, then promote the
+                // last break in possibleBreakPositions into currentBreakPositions,
+                // and get rid of all entries in currentBreakPositions that come after
+                // it.  Then back up to that position and start over from there (i.e.,
+                // treat that position as the beginning of a new word)
+                else {
+                    Integer temp = (Integer)possibleBreakPositions.pop();
+                    Object temp2 = null;
+                    while (!currentBreakPositions.isEmpty() && temp.intValue() <
+                           ((Integer)currentBreakPositions.peek()).intValue()) {
+                        temp2 = currentBreakPositions.pop();
+                        wrongBreakPositions.addElement(temp2);
+                    }
+                    currentBreakPositions.push(temp);
+                    text.setIndex(((Integer)currentBreakPositions.peek()).intValue());
+                }
+
+                // re-sync "c" for the next go-round, and drop out of the loop if
+                // we've made it off the end of the range
+                c = CICurrent32(text);
+                state = 0;
+                if (text.getIndex() >= endPos) {
+                    break;
+                }
+            }
+
+            // if we didn't hit any exceptional conditions on this last iteration,
+            // just advance to the next character and loop
+            else {
+                c = CINext32(text);
+            }
+//System.out.print(", possibleBreakPositions = { "); for (int i = 0; i < possibleBreakPositions.size(); i++) System.out.print(possibleBreakPositions.elementAt(i) + " "); System.out.print("}");
+//System.out.print(", currentBreakPositions = { "); for (int i = 0; i < currentBreakPositions.size(); i++) System.out.print(currentBreakPositions.elementAt(i) + " "); System.out.println("}");
+        }
+
+        // dump the last break position in the list, and replace it with the actual
+        // end of the range (which may be the same character, or may be further on
+        // because the range actually ended with non-dictionary characters we want to
+        // keep with the word)
+        if (!currentBreakPositions.isEmpty()) {
+            currentBreakPositions.pop();
+        }
+        currentBreakPositions.push(new Integer(endPos));
+
+        // create a regular array to hold the break positions and copy
+        // the break positions from the stack to the array (in addition,
+        // our starting position goes into this array as a break position).
+        // This array becomes the cache of break positions used by next()
+        // and previous(), so this is where we actually refresh the cache.
+        cachedBreakPositions = new int[currentBreakPositions.size() + 1];
+        cachedBreakPositions[0] = startPos;
+
+        for (int i = 0; i < currentBreakPositions.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)currentBreakPositions.elementAt(i)).intValue();
+        }
+        positionInCache = 0;
+    }
+}
diff --git a/src/com/ibm/icu/text/DigitList.java b/src/com/ibm/icu/text/DigitList.java
new file mode 100644
index 0000000..e5b240a
--- /dev/null
+++ b/src/com/ibm/icu/text/DigitList.java
@@ -0,0 +1,865 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.math.BigInteger;
+
+/**
+ * <code>DigitList</code> handles the transcoding between numeric values and
+ * strings of characters.  It only represents non-negative numbers.  The
+ * division of labor between <code>DigitList</code> and
+ * <code>DecimalFormat</code> is that <code>DigitList</code> handles the radix
+ * 10 representation issues and numeric conversion, including rounding;
+ * <code>DecimalFormat</code> handles the locale-specific issues such as
+ * positive and negative representation, digit grouping, decimal point,
+ * currency, and so on.
+ *
+ * <p>A <code>DigitList</code> is a representation of a finite numeric value.
+ * <code>DigitList</code> objects do not represent <code>NaN</code> or infinite
+ * values.  A <code>DigitList</code> value can be converted to a
+ * <code>BigDecimal</code> without loss of precision.  Conversion to other
+ * numeric formats may involve loss of precision, depending on the specific
+ * value.
+ *
+ * <p>The <code>DigitList</code> representation consists of a string of
+ * characters, which are the digits radix 10, from '0' to '9'.  It also has a
+ * base 10 exponent associated with it.  The value represented by a
+ * <code>DigitList</code> object can be computed by mulitplying the fraction
+ * <em>f</em>, where 0 <= <em>f</em> < 1, derived by placing all the digits of
+ * the list to the right of the decimal point, by 10^exponent.
+ *
+ * @see java.util.Locale
+ * @see java.text.Format
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @see java.text.ChoiceFormat
+ * @see java.text.MessageFormat
+ * @version      1.18 08/12/98
+ * @author       Mark Davis, Alan Liu
+ * */
+final class DigitList {
+    /**
+     * The maximum number of significant digits in an IEEE 754 double, that
+     * is, in a Java double.  This must not be increased, or garbage digits
+     * will be generated, and should not be decreased, or accuracy will be lost.
+     */
+    public static final int MAX_LONG_DIGITS = 19; // == Long.toString(Long.MAX_VALUE).length()
+    public static final int DBL_DIG = 17;
+
+    /**
+     * These data members are intentionally public and can be set directly.
+     *
+     * The value represented is given by placing the decimal point before
+     * digits[decimalAt].  If decimalAt is < 0, then leading zeros between
+     * the decimal point and the first nonzero digit are implied.  If decimalAt
+     * is > count, then trailing zeros between the digits[count-1] and the
+     * decimal point are implied.
+     *
+     * Equivalently, the represented value is given by f * 10^decimalAt.  Here
+     * f is a value 0.1 <= f < 1 arrived at by placing the digits in Digits to
+     * the right of the decimal.
+     *
+     * DigitList is normalized, so if it is non-zero, figits[0] is non-zero.  We
+     * don't allow denormalized numbers because our exponent is effectively of
+     * unlimited magnitude.  The count value contains the number of significant
+     * digits present in digits[].
+     *
+     * Zero is represented by any DigitList with count == 0 or with each digits[i]
+     * for all i <= count == '0'.
+     */
+    public int decimalAt = 0;
+    public int count = 0;
+    public byte[] digits = new byte[MAX_LONG_DIGITS];
+
+    private final void ensureCapacity(int digitCapacity, int digitsToCopy) {
+        if (digitCapacity > digits.length) {
+            byte[] newDigits = new byte[digitCapacity * 2];
+            System.arraycopy(digits, 0, newDigits, 0, digitsToCopy);
+            digits = newDigits;
+        }
+    }
+
+    /**
+     * Return true if the represented number is zero.
+     */
+    boolean isZero()
+    {
+        for (int i=0; i<count; ++i) if (digits[i] != '0') return false;
+        return true;
+    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Clears out the digits.
+//     * Use before appending them.
+//     * Typically, you set a series of digits with append, then at the point
+//     * you hit the decimal point, you set myDigitList.decimalAt = myDigitList.count;
+//     * then go on appending digits.
+//     */
+//    public void clear () {
+//        decimalAt = 0;
+//        count = 0;
+//    }
+
+    /**
+     * Appends digits to the list.
+     */
+    public void append (int digit) {
+        ensureCapacity(count+1, count);
+        digits[count++] = (byte) digit;
+    }
+    /**
+     * Utility routine to get the value of the digit list
+     * If (count == 0) this throws a NumberFormatException, which
+     * mimics Long.parseLong().
+     */
+    public final double getDouble() {
+        if (count == 0) return 0.0;
+        StringBuffer temp = new StringBuffer(count);
+        temp.append('.');
+        for (int i = 0; i < count; ++i) temp.append((char)(digits[i]));
+        temp.append('E');
+        temp.append(Integer.toString(decimalAt));
+        return Double.valueOf(temp.toString()).doubleValue();
+        // long value = Long.parseLong(temp.toString());
+        // return (value * Math.pow(10, decimalAt - count));
+    }
+
+    /**
+     * Utility routine to get the value of the digit list.
+     * If (count == 0) this returns 0, unlike Long.parseLong().
+     */
+    public final long getLong() {
+        // for now, simple implementation; later, do proper IEEE native stuff
+
+        if (count == 0) return 0;
+
+        // We have to check for this, because this is the one NEGATIVE value
+        // we represent.  If we tried to just pass the digits off to parseLong,
+        // we'd get a parse failure.
+        if (isLongMIN_VALUE()) return Long.MIN_VALUE;
+
+        StringBuffer temp = new StringBuffer(count);
+        for (int i = 0; i < decimalAt; ++i)
+        {
+            temp.append((i < count) ? (char)(digits[i]) : '0');
+        }
+        return Long.parseLong(temp.toString());
+    }
+
+    /**
+     * Return a <code>BigInteger</code> representing the value stored in this
+     * <code>DigitList</code>.  This method assumes that this object contains
+     * an integral value; if not, it will return an incorrect value.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigInteger</code>
+     */
+    public BigInteger getBigInteger(boolean isPositive) {
+        if (isZero()) return BigInteger.valueOf(0);
+        if (false) {
+            StringBuffer stringRep = new StringBuffer(count);
+            if (!isPositive) {
+                stringRep.append('-');
+            }
+            for (int i=0; i<count; ++i) {
+                stringRep.append((char) digits[i]);
+            }
+            int d = decimalAt;
+            while (d-- > count) {
+                stringRep.append('0');
+            }
+            return new BigInteger(stringRep.toString());
+        } else {
+            int len = decimalAt > count ? decimalAt : count;
+            if (!isPositive) {
+                len += 1;
+            }
+            char[] text = new char[len];
+            int n = 0;
+            if (!isPositive) {
+                text[0] = '-';
+                for (int i = 0; i < count; ++i) {
+                    text[i+1] = (char)digits[i];
+                }
+                n = count+1;
+            } else {
+                for (int i = 0; i < count; ++i) {
+                    text[i] = (char)digits[i];
+                }
+                n = count;
+            }
+            for (int i = n; i < text.length; ++i) {
+                text[i] = '0';
+            } 
+            return new BigInteger(new String(text));
+        }
+    }
+
+    private String getStringRep(boolean isPositive) {
+        if (isZero()) return "0";
+        StringBuffer stringRep = new StringBuffer(count+1);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        int d = decimalAt;
+        if (d < 0) {
+            stringRep.append('.');
+            while (d < 0) {
+                stringRep.append('0');
+                ++d;
+            }
+            d = -1;
+        }
+        for (int i=0; i<count; ++i) {
+            if (d == i) {
+                stringRep.append('.');
+            }
+            stringRep.append((char) digits[i]);
+        }
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return stringRep.toString();
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Return a <code>BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public java.math.BigDecimal getBigDecimal(boolean isPositive) {
+        if (isZero()) {
+            return java.math.BigDecimal.valueOf(0);
+        }
+        // if exponential notion is negative,
+        // we prefer to use BigDecimal constructor with scale,
+        // because it works better when extremely small value
+        // is used.  See #5698.
+        long scale = (long)count - (long)decimalAt;
+        if (scale > 0) {
+            int numDigits = count;
+            if (scale > (long)Integer.MAX_VALUE) {
+                // try to reduce the scale
+                long numShift = scale - (long)Integer.MAX_VALUE;
+                if (numShift < count) {
+                    numDigits -= numShift;
+                } else {
+                    // fallback to 0
+                    return new java.math.BigDecimal(0);
+                }
+            }
+            StringBuffer significantDigits = new StringBuffer(numDigits + 1);
+            if (!isPositive) {
+                significantDigits.append('-');
+            }
+            for (int i = 0; i < numDigits; i++) {
+                significantDigits.append((char)digits[i]);
+            }
+            BigInteger unscaledVal = new BigInteger(significantDigits.toString());
+            return new java.math.BigDecimal(unscaledVal, (int)scale);
+        } else {
+            // We should be able to use a negative scale value for a positive exponential
+            // value on JDK1.5.  But it is not supported by older JDK.  So, for now,
+            // we always use BigDecimal constructor which takes String.
+            return new java.math.BigDecimal(getStringRep(isPositive));
+        }
+    }
+//#endif
+
+    /**
+     * Return an <code>ICU BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public com.ibm.icu.math.BigDecimal getBigDecimalICU(boolean isPositive) {
+        if (isZero()) {
+            return com.ibm.icu.math.BigDecimal.valueOf(0);
+        }
+        // if exponential notion is negative,
+        // we prefer to use BigDecimal constructor with scale,
+        // because it works better when extremely small value
+        // is used.  See #5698.
+        long scale = (long)count - (long)decimalAt;
+        if (scale > 0) {
+            int numDigits = count;
+            if (scale > (long)Integer.MAX_VALUE) {
+                // try to reduce the scale
+                long numShift = scale - (long)Integer.MAX_VALUE;
+                if (numShift < count) {
+                    numDigits -= numShift;
+                } else {
+                    // fallback to 0
+                    return new com.ibm.icu.math.BigDecimal(0);
+                }
+            }
+            StringBuffer significantDigits = new StringBuffer(numDigits + 1);
+            if (!isPositive) {
+                significantDigits.append('-');
+            }
+            for (int i = 0; i < numDigits; i++) {
+                significantDigits.append((char)digits[i]);
+            }
+            BigInteger unscaledVal = new BigInteger(significantDigits.toString());
+            return new com.ibm.icu.math.BigDecimal(unscaledVal, (int)scale);
+        } else {
+            return new com.ibm.icu.math.BigDecimal(getStringRep(isPositive));
+        }
+    }
+
+    /**
+     * Return whether or not this objects represented value is an integer.
+     * [bnf]
+     * @return true if the represented value of this object is an integer
+     */
+    boolean isIntegral() {
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+        return count == 0 || decimalAt >= count;
+    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Return true if the number represented by this object can fit into
+//     * a long.
+//     */
+//    boolean fitsIntoLong(boolean isPositive)
+//    {
+//        // Figure out if the result will fit in a long.  We have to
+//        // first look for nonzero digits after the decimal point;
+//        // then check the size.  If the digit count is 18 or less, then
+//        // the value can definitely be represented as a long.  If it is 19
+//        // then it may be too large.
+//
+//        // Trim trailing zeros.  This does not change the represented value.
+//        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+//
+//        if (count == 0) {
+//            // Positive zero fits into a long, but negative zero can only
+//            // be represented as a double. - bug 4162852
+//            return isPositive;
+//        }
+//
+//        if (decimalAt < count || decimalAt > MAX_LONG_DIGITS) return false;
+//
+//        if (decimalAt < MAX_LONG_DIGITS) return true;
+//
+//        // At this point we have decimalAt == count, and count == MAX_LONG_DIGITS.
+//        // The number will overflow if it is larger than 9223372036854775807
+//        // or smaller than -9223372036854775808.
+//        for (int i=0; i<count; ++i)
+//        {
+//            byte dig = digits[i], max = LONG_MIN_REP[i];
+//            if (dig > max) return false;
+//            if (dig < max) return true;
+//        }
+//
+//        // At this point the first count digits match.  If decimalAt is less
+//        // than count, then the remaining digits are zero, and we return true.
+//        if (count < decimalAt) return true;
+//
+//        // Now we have a representation of Long.MIN_VALUE, without the leading
+//        // negative sign.  If this represents a positive value, then it does
+//        // not fit; otherwise it fits.
+//        return !isPositive;
+//    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Set the digit list to a representation of the given double value.
+//     * This method supports fixed-point notation.
+//     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+//     * or a value <= 0.
+//     * @param maximumFractionDigits The most fractional digits which should
+//     * be converted.
+//     */
+//    public final void set(double source, int maximumFractionDigits)
+//    {
+//        set(source, maximumFractionDigits, true);
+//    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports both fixed-point and exponential notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumDigits The most fractional or total digits which should
+     * be converted.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    final void set(double source, int maximumDigits, boolean fixedPoint)
+    {
+        if (source == 0) source = 0;
+        // Generate a representation of the form DDDDD, DDDDD.DDDDD, or
+        // DDDDDE+/-DDDDD.
+        String rep = Double.toString(source);
+
+        set(rep, MAX_LONG_DIGITS);
+
+        if (fixedPoint) {
+            // The negative of the exponent represents the number of leading
+            // zeros between the decimal and the first non-zero digit, for
+            // a value < 0.1 (e.g., for 0.00123, -decimalAt == 2).  If this
+            // is more than the maximum fraction digits, then we have an underflow
+            // for the printed representation.
+            if (-decimalAt > maximumDigits) {
+                count = 0;
+                return;
+            } else if (-decimalAt == maximumDigits) {
+                if (shouldRoundUp(0)) {
+                    count = 1;
+                    ++decimalAt;
+                    digits[0] = (byte)'1';
+                } else {
+                    count = 0;
+                }
+                return;
+            }
+            // else fall through
+        }
+
+        // Eliminate trailing zeros.
+        while (count > 1 && digits[count - 1] == '0')
+            --count;
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits == 0 ? -1 : maximumDigits);
+    }
+
+    /**
+     * Given a string representation of the form DDDDD, DDDDD.DDDDD,
+     * or DDDDDE+/-DDDDD, set this object's value to it.  Ignore
+     * any leading '-'.
+     */
+    private void set(String rep, int maxCount) {
+        decimalAt = -1;
+        count = 0;
+        int exponent = 0;
+        // Number of zeros between decimal point and first non-zero digit after
+        // decimal point, for numbers < 1.
+        int leadingZerosAfterDecimal = 0;
+        boolean nonZeroDigitSeen = false;
+        // Skip over leading '-'
+        int i=0;
+        if (rep.charAt(i) == '-') {
+            ++i;
+        }
+        for (; i < rep.length(); ++i) {
+            char c = rep.charAt(i);
+            if (c == '.') {
+                decimalAt = count;
+            } else if (c == 'e' || c == 'E') {
+                ++i;
+                // Integer.parseInt doesn't handle leading '+' signs
+                if (rep.charAt(i) == '+') {
+                    ++i;
+                }
+                exponent = Integer.valueOf(rep.substring(i)).intValue();
+                break;
+            } else if (count < maxCount) {
+                if (!nonZeroDigitSeen) {
+                    nonZeroDigitSeen = (c != '0');
+                    if (!nonZeroDigitSeen && decimalAt != -1) {
+                        ++leadingZerosAfterDecimal;
+                    }
+                }
+
+                if (nonZeroDigitSeen) {
+                    ensureCapacity(count+1, count);
+                    digits[count++] = (byte)c;
+                }
+            }
+        }
+        if (decimalAt == -1) {
+            decimalAt = count;
+        }
+        decimalAt += exponent - leadingZerosAfterDecimal;
+    }
+
+    /**
+     * Return true if truncating the representation to the given number
+     * of digits will result in an increment to the last digit.  This
+     * method implements half-even rounding, the default rounding mode.
+     * [bnf]
+     * @param maximumDigits the number of digits to keep, from 0 to
+     * <code>count-1</code>.  If 0, then all digits are rounded away, and
+     * this method returns true if a one should be generated (e.g., formatting
+     * 0.09 with "#.#").
+     * @return true if digit <code>maximumDigits-1</code> should be
+     * incremented
+     */
+    private boolean shouldRoundUp(int maximumDigits) {
+        // variable not used boolean increment = false;
+        // Implement IEEE half-even rounding
+        /*Bug 4243108
+          format(0.0) gives "0.1" if preceded by parse("99.99") [Richard/GCL]
+        */
+        if (maximumDigits < count) {
+            if (digits[maximumDigits] > '5') {
+                return true;
+            } else if (digits[maximumDigits] == '5' ) {
+                for (int i=maximumDigits+1; i<count; ++i) {
+                    if (digits[i] != '0') {
+                        return true;
+                    }
+                }
+                return maximumDigits > 0 && (digits[maximumDigits-1] % 2 != 0);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Round the representation to the given number of digits.
+     * @param maximumDigits The maximum number of digits to be shown.
+     * Upon return, count will be less than or equal to maximumDigits.
+     * This now performs rounding when maximumDigits is 0, formerly it did not.
+     */
+    public final void round(int maximumDigits) {        
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        // [bnf] rewritten to fix 4179818
+        if (maximumDigits >= 0 && maximumDigits < count) {
+            if (shouldRoundUp(maximumDigits)) {
+                // Rounding up involves incrementing digits from LSD to MSD.
+                // In most cases this is simple, but in a worst case situation
+                // (9999..99) we have to adjust the decimalAt value.
+                for (;;)
+                {
+                    --maximumDigits;
+                    if (maximumDigits < 0)
+                    {
+                        // We have all 9's, so we increment to a single digit
+                        // of one and adjust the exponent.
+                        digits[0] = (byte) '1';
+                        ++decimalAt;
+                        maximumDigits = 0; // Adjust the count
+                        break;
+                    }
+
+                    ++digits[maximumDigits];
+                    if (digits[maximumDigits] <= '9') break;
+                    // digits[maximumDigits] = '0'; // Unnecessary since we'll truncate this
+                }
+                ++maximumDigits; // Increment for use as count
+            }
+            count = maximumDigits;
+            /*Bug 4217661 DecimalFormat formats 1.001 to "1.00" instead of "1"
+              Eliminate trailing zeros. [Richard/GCL]
+            */
+            while (count > 1 && digits[count-1] == '0') {
+                --count;
+            } //[Richard/GCL]
+        }
+    }
+
+    /**
+     * Utility routine to set the value of the digit list from a long
+     */
+    public final void set(long source)
+    {
+        set(source, 0);
+    }
+
+    /**
+     * Set the digit list to a representation of the given long value.
+     * @param source Value to be converted; must be >= 0 or ==
+     * Long.MIN_VALUE.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(long source, int maximumDigits)
+    {
+        // This method does not expect a negative number. However,
+        // "source" can be a Long.MIN_VALUE (-9223372036854775808),
+        // if the number being formatted is a Long.MIN_VALUE.  In that
+        // case, it will be formatted as -Long.MIN_VALUE, a number
+        // which is outside the legal range of a long, but which can
+        // be represented by DigitList.
+        // [NEW] Faster implementation
+        if (source <= 0) {
+            if (source == Long.MIN_VALUE) {
+                decimalAt = count = MAX_LONG_DIGITS;
+                System.arraycopy(LONG_MIN_REP, 0, digits, 0, count);
+            } else {
+                count = 0;
+                decimalAt = 0;
+            }
+        } else {
+            int left = MAX_LONG_DIGITS;
+            int right;
+            while (source > 0) {
+                digits[--left] = (byte) (((long) '0') + (source % 10));
+                source /= 10;
+            }
+            decimalAt = MAX_LONG_DIGITS-left;
+            // Don't copy trailing zeros
+            // we are guaranteed that there is at least one non-zero digit,
+            // so we don't have to check lower bounds
+            for (right = MAX_LONG_DIGITS - 1; digits[right] == (byte) '0'; --right) {}
+            count = right - left + 1;
+            System.arraycopy(digits, left, digits, 0, count);
+        }        
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigInteger value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(BigInteger source, int maximumDigits) {
+        String stringDigits = source.toString();
+
+        count = decimalAt = stringDigits.length();
+
+        // Don't copy trailing zeros
+        while (count > 1 && stringDigits.charAt(count - 1) == '0') --count;
+
+        int offset = 0;
+        if (stringDigits.charAt(0) == '-') {
+            ++offset;
+            --count;
+            --decimalAt;
+        }
+
+        ensureCapacity(count, 0);
+        for (int i = 0; i < count; ++i) {
+            digits[i] = (byte) stringDigits.charAt(i + offset);
+        }
+
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Internal method that sets this digit list to represent the
+     * given value.  The value is given as a String of the format
+     * returned by BigDecimal.
+     * @param stringDigits value to be represented with the following
+     * syntax, expressed as a regular expression: -?\d*.?\d*
+     * Must not be an empty string.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    private void setBigDecimalDigits(String stringDigits,
+                                     int maximumDigits, boolean fixedPoint) {
+//|        // Find the first non-zero digit, the decimal, and the last non-zero digit.
+//|        int first=-1, last=stringDigits.length()-1, decimal=-1;
+//|        for (int i=0; (first<0 || decimal<0) && i<=last; ++i) {
+//|            char c = stringDigits.charAt(i);
+//|            if (c == '.') {
+//|                decimal = i;
+//|            } else if (first < 0 && (c >= '1' && c <= '9')) {
+//|                first = i;
+//|            }
+//|        }
+//|
+//|        if (first < 0) {
+//|            clear();
+//|            return;
+//|        }
+//|
+//|        // At this point we know there is at least one non-zero digit, so the
+//|        // following loop is safe.
+//|        for (;;) {
+//|            char c = stringDigits.charAt(last);
+//|            if (c != '0' && c != '.') {
+//|                break;
+//|            }
+//|            --last;
+//|        }
+//|
+//|        if (decimal < 0) {
+//|            decimal = stringDigits.length();
+//|        }
+//|
+//|        count = last - first;
+//|        if (decimal < first || decimal > last) {
+//|            ++count;
+//|        }
+//|        decimalAt = decimal - first;
+//|        if (decimalAt < 0) {
+//|            ++decimalAt;
+//|        }
+//|
+//|        ensureCapacity(count, 0);
+//|        for (int i = 0; i < count; ++i) {
+//|            digits[i] = (byte) stringDigits.charAt(first++);
+//|            if (first == decimal) {
+//|                ++first;
+//|            }
+//|        }
+
+        // The maxDigits here could also be Integer.MAX_VALUE
+        set(stringDigits, stringDigits.length());
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+    // {dlf} Some callers depend on passing '0' to round to mean 'don't round', but
+    // rather than pass that information explicitly, we rely on some magic with maximumDigits
+    // and decimalAt.  Unfortunately, this is no good, because there are cases where maximumDigits
+    // is zero and we do want to round, e.g. BigDecimal values -1 < x < 1.  So since round
+    // changed to perform rounding when the argument is 0, we now force the argument
+    // to -1 in the situations where it matters.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits == 0 ? -1 : maximumDigits);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(java.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+//#endif
+
+    /*
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(com.ibm.icu.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+
+    /**
+     * Returns true if this DigitList represents Long.MIN_VALUE;
+     * false, otherwise.  This is required so that getLong() works.
+     */
+    private boolean isLongMIN_VALUE()
+    {
+        if (decimalAt != count || count != MAX_LONG_DIGITS)
+            return false;
+
+            for (int i = 0; i < count; ++i)
+        {
+            if (digits[i] != LONG_MIN_REP[i]) return false;
+        }
+
+        return true;
+    }
+
+    private static byte[] LONG_MIN_REP;
+
+    static
+    {
+        // Store the representation of LONG_MIN without the leading '-'
+        String s = Long.toString(Long.MIN_VALUE);
+        LONG_MIN_REP = new byte[MAX_LONG_DIGITS];
+        for (int i=0; i < MAX_LONG_DIGITS; ++i)
+        {
+            LONG_MIN_REP[i] = (byte)s.charAt(i + 1);
+        }
+    }
+
+// Unused -- Alan 2003-05
+//    /**
+//     * Return the floor of the log base 10 of a given double.
+//     * This method compensates for inaccuracies which arise naturally when
+//     * computing logs, and always give the correct value.  The parameter
+//     * must be positive and finite.
+//     */
+//    private static final int log10(double d)
+//    {
+//        // The reason this routine is needed is that simply taking the
+//        // log and dividing by log10 yields a result which may be off
+//        // by 1 due to rounding errors.  For example, the naive log10
+//        // of 1.0e300 taken this way is 299, rather than 300.
+//        double log10 = Math.log(d) / LOG10;
+//        int ilog10 = (int)Math.floor(log10);
+//        // Positive logs could be too small, e.g. 0.99 instead of 1.0
+//        if (log10 > 0 && d >= Math.pow(10, ilog10 + 1))
+//        {
+//            ++ilog10;
+//        }
+//        // Negative logs could be too big, e.g. -0.99 instead of -1.0
+//        else if (log10 < 0 && d < Math.pow(10, ilog10))
+//        {
+//            --ilog10;
+//        }
+//        return ilog10;
+//    }
+//
+//    private static final double LOG10 = Math.log(10.0);
+
+    // (The following boilerplate methods are currently not called,
+    // and cannot be called by tests since this class is
+    // package-private.  The methods may be useful in the future, so
+    // we do not delete them.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * equality test between two digit lists.
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (!(obj instanceof DigitList))         // (1) same object?
+            return false;
+        DigitList other = (DigitList) obj;
+        if (count != other.count ||
+        decimalAt != other.decimalAt)
+            return false;
+        for (int i = 0; i < count; i++)
+            if (digits[i] != other.digits[i])
+                return false;
+        return true;
+    }
+
+    /**
+     * Generates the hash code for the digit list.
+     */
+    public int hashCode() {
+        int hashcode = decimalAt;
+
+        for (int i = 0; i < count; i++)
+            hashcode = hashcode * 37 + digits[i];
+
+        return hashcode;
+    }
+
+    public String toString()
+    {
+        if (isZero()) return "0";
+        StringBuffer buf = new StringBuffer("0.");
+        for (int i=0; i<count; ++i) buf.append((char)digits[i]);
+        buf.append("x10^");
+        buf.append(decimalAt);
+        return buf.toString();
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/text/DurationFormat.java b/src/com/ibm/icu/text/DurationFormat.java
new file mode 100644
index 0000000..6875908
--- /dev/null
+++ b/src/com/ibm/icu/text/DurationFormat.java
@@ -0,0 +1,122 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+
+import com.ibm.icu.impl.duration.BasicDurationFormat;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This class implements a formatter over a duration in time
+ * such as "2 days from now" or "3 hours ago".
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class DurationFormat extends UFormat {
+
+    private static final long serialVersionUID = -2076961954727774282L;
+
+    /**
+     * Construct a duration format for the specified locale
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DurationFormat getInstance(ULocale locale) {
+        return (DurationFormat)BasicDurationFormat.getInstance(locale);
+    }
+    
+
+    /**
+     * Subclass interface
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DurationFormat() {
+    }
+    
+    /**
+     * Subclass interface
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DurationFormat(ULocale locale) {
+        setLocale(locale,locale);
+    }
+
+    /**
+     * Format an arbitrary object.
+     * Defaults to a call to formatDurationFromNow() for either Long or Date objects.
+     * @param object the object to format. Should be either a Long, Date, or javax.xml.datatype.Duration object.
+     * @param toAppend the buffer to append to
+     * @param pos the field position, may contain additional error messages.
+     * @return the toAppend buffer
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract StringBuffer format(Object object, StringBuffer toAppend,
+            FieldPosition pos);
+
+    /**
+     * DurationFormat cannot parse, by default. This method will throw an UnsupportedOperationException.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+       throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Formats the duration between now and a target date.
+     * <p>
+     * This is a convenience method that calls
+     * formatDurationFrom(long, long) using now
+     * as the reference date, and the difference between now and
+     * <code>targetDate.getTime()</code> as the duration.
+     * 
+     * @param targetDate the ending date
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFromNowTo(Date targetDate);
+
+    /**
+     * Formats a duration expressed in milliseconds.
+     * <p>
+     * This is a convenience method that calls formatDurationFrom
+     * using the current system time as the reference date.
+     * 
+     * @param duration the duration in milliseconds
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFromNow(long duration);
+
+    /**
+     * Formats a duration expressed in milliseconds from a reference date.
+     * <p>
+     * The reference date allows formatters to use actual durations of
+     * variable-length periods (like months) if they wish.
+     * <p>
+     * The duration is expressed as the number of milliseconds in the
+     * past (negative values) or future (positive values) with respect
+     * to a reference date (expressed as milliseconds in epoch).
+     * 
+     * @param duration the duration in milliseconds
+     * @param referenceDate the date from which to compute the duration
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFrom(long duration, long referenceDate);
+    
+    
+}
diff --git a/src/com/ibm/icu/text/EscapeTransliterator.java b/src/com/ibm/icu/text/EscapeTransliterator.java
new file mode 100644
index 0000000..69e4cc0
--- /dev/null
+++ b/src/com/ibm/icu/text/EscapeTransliterator.java
@@ -0,0 +1,200 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliterator that converts Unicode characters to an escape
+ * form.  Examples of escape forms are "U+4E01" and "&#x10FFFF;".
+ * Escape forms have a prefix and suffix, either of which may be
+ * empty, a radix, typically 16 or 10, a minimum digit count,
+ * typically 1, 4, or 8, and a boolean that specifies whether
+ * supplemental characters are handled as 32-bit code points or as two
+ * 16-bit code units.  Most escape forms handle 32-bit code points,
+ * but some, such as the Java form, intentionally break them into two
+ * surrogate pairs, for backward compatibility.
+ *
+ * <p>Some escape forms actually have two different patterns, one for
+ * BMP characters (0..FFFF) and one for supplements (>FFFF).  To
+ * handle this, a second EscapeTransliterator may be defined that
+ * specifies the pattern to be produced for supplementals.  An example
+ * of a form that requires this is the C form, which uses "\\uFFFF"
+ * for BMP characters and "\\U0010FFFF" for supplementals.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ */
+class EscapeTransliterator extends Transliterator {
+
+    /**
+     * The prefix of the escape form; may be empty, but usually isn't.
+     * May not be null.
+     */
+    private String prefix;
+
+    /**
+     * The prefix of the escape form; often empty.  May not be null.
+     */
+    private String suffix;
+
+    /**
+     * The radix to display the number in.  Typically 16 or 10.  Must
+     * be in the range 2 to 36.
+     */
+    private int radix;
+
+    /**
+     * The minimum number of digits.  Typically 1, 4, or 8.  Values
+     * less than 1 are equivalent to 1.
+     */
+    private int minDigits;
+
+    /**
+     * If true, supplementals are handled as 32-bit code points.  If
+     * false, they are handled as two 16-bit code units.
+     */
+    private boolean grokSupplementals;
+
+    /**
+     * The form to be used for supplementals.  If this is null then
+     * the same form is used for BMP characters and supplementals.  If
+     * this is not null and if grokSupplementals is true then the
+     * prefix, suffix, radix, and minDigits of this object are used
+     * for supplementals.
+     */
+    private EscapeTransliterator supplementalHandler;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Any-Hex/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Unicode",
+                                                "U+", "", 16, 4, true, null);
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Any-Hex/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Java",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Any-Hex/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/C",
+                                                "\\u", "", 16, 4, true,
+                       new EscapeTransliterator("", "\\U", "", 16, 8, true, null));
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML",
+                                                "&#x", ";", 16, 1, true, null);
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Any-Hex")
+        Transliterator.registerFactory("Any-Hex/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML10",
+                                                "&#", ";", 10, 1, true, null);
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Perl",
+                                                "\\x{", "}", 16, 1, true, null);
+            }
+        });
+
+        // Generic
+        Transliterator.registerFactory("Any-Hex", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+    }
+
+    /**
+     * Constructs an escape transliterator with the given ID and
+     * parameters.  See the class member documentation for details.
+     */
+    EscapeTransliterator(String ID, String prefix, String suffix,
+                         int radix, int minDigits,
+                         boolean grokSupplementals,
+                         EscapeTransliterator supplementalHandler) {
+        super(ID, null);
+        this.prefix = prefix;
+        this.suffix = suffix;
+        this.radix = radix;
+        this.minDigits = minDigits;
+        this.grokSupplementals = grokSupplementals;
+        this.supplementalHandler = supplementalHandler;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean incremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+
+        StringBuffer buf = new StringBuffer(prefix);
+        int prefixLen = prefix.length();
+        boolean redoPrefix = false;
+
+        while (start < limit) {
+            int c = grokSupplementals ? text.char32At(start) : text.charAt(start);
+            int charLen = grokSupplementals ? UTF16.getCharCount(c) : 1;
+
+            if ((c & 0xFFFF0000) != 0 && supplementalHandler != null) {
+                buf.setLength(0);
+                buf.append(supplementalHandler.prefix);
+                Utility.appendNumber(buf, c, supplementalHandler.radix,
+                                     supplementalHandler.minDigits);
+                buf.append(supplementalHandler.suffix);
+                redoPrefix = true;
+            } else {
+                if (redoPrefix) {
+                    buf.setLength(0);
+                    buf.append(prefix);
+                    redoPrefix = false;
+                } else {
+                    buf.setLength(prefixLen);
+                }
+                Utility.appendNumber(buf, c, radix, minDigits);
+                buf.append(suffix);
+            }
+
+            text.replace(start, start + charLen, buf.toString());
+            start += buf.length();
+            limit += buf.length() - charLen;
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/FunctionReplacer.java b/src/com/ibm/icu/text/FunctionReplacer.java
new file mode 100644
index 0000000..bf66f3a
--- /dev/null
+++ b/src/com/ibm/icu/text/FunctionReplacer.java
@@ -0,0 +1,84 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2003, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * A replacer that calls a transliterator to generate its output text.
+ * The input text to the transliterator is the output of another
+ * UnicodeReplacer object.  That is, this replacer wraps another
+ * replacer with a transliterator.
+ * @author Alan Liu
+ */
+class FunctionReplacer implements UnicodeReplacer {
+
+    /**
+     * The transliterator.  Must not be null.
+     */
+    private Transliterator translit;
+
+    /**
+     * The replacer object.  This generates text that is then
+     * processed by 'translit'.  Must not be null.
+     */
+    private UnicodeReplacer replacer;
+
+    /**
+     * Construct a replacer that takes the output of the given
+     * replacer, passes it through the given transliterator, and emits
+     * the result as output.
+     */
+    public FunctionReplacer(Transliterator theTranslit,
+                            UnicodeReplacer theReplacer) {
+        translit = theTranslit;
+        replacer = theReplacer;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        // First delegate to subordinate replacer
+        int len = replacer.replace(text, start, limit, cursor);
+        limit = start + len;
+
+        // Now transliterate
+        limit = translit.transliterate(text, start, limit);
+
+        return limit - start;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer("&");
+        rule.append(translit.getID());
+        rule.append("( ");
+        rule.append(replacer.toReplacerPattern(escapeUnprintable));
+        rule.append(" )");
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(translit.getTargetSet());
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/IDNA.java b/src/com/ibm/icu/text/IDNA.java
new file mode 100644
index 0000000..358a83c
--- /dev/null
+++ b/src/com/ibm/icu/text/IDNA.java
@@ -0,0 +1,973 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+
+/**
+ *
+ * IDNA API implements the IDNA protocol as defined in the <a href="http://www.ietf.org/rfc/rfc3490.txt">IDNA RFC</a>.
+ * The draft defines 2 operations: ToASCII and ToUnicode. Domain labels 
+ * containing non-ASCII code points are required to be processed by
+ * ToASCII operation before passing it to resolver libraries. Domain names
+ * that are obtained from resolver libraries are required to be processed by
+ * ToUnicode operation before displaying the domain name to the user.
+ * IDNA requires that implementations process input strings with 
+ * <a href="http://www.ietf.org/rfc/rfc3491.txt">Nameprep</a>, 
+ * which is a profile of <a href="http://www.ietf.org/rfc/rfc3454.txt">Stringprep</a> , 
+ * and then with <a href="http://www.ietf.org/rfc/rfc3492.txt">Punycode</a>. 
+ * Implementations of IDNA MUST fully implement Nameprep and Punycode; 
+ * neither Nameprep nor Punycode are optional.
+ * The input and output of ToASCII and ToUnicode operations are Unicode 
+ * and are designed to be chainable, i.e., applying ToASCII or ToUnicode operations
+ * multiple times to an input string will yield the same result as applying the operation
+ * once.
+ * ToUnicode(ToUnicode(ToUnicode...(ToUnicode(string)))) == ToUnicode(string) 
+ * ToASCII(ToASCII(ToASCII...(ToASCII(string))) == ToASCII(string).
+ * 
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public final class IDNA {
+
+    /* IDNA ACE Prefix is "xn--" */
+    private static char[] ACE_PREFIX                = new char[]{ 0x0078,0x006E,0x002d,0x002d } ;
+    //private static final int ACE_PREFIX_LENGTH      = ACE_PREFIX.length;
+
+    private static final int MAX_LABEL_LENGTH       = 63;
+    private static final int HYPHEN                 = 0x002D;
+    private static final int CAPITAL_A              = 0x0041;
+    private static final int CAPITAL_Z              = 0x005A;
+    private static final int LOWER_CASE_DELTA       = 0x0020;
+    private static final int FULL_STOP              = 0x002E;
+    private static final int MAX_DOMAIN_NAME_LENGTH = 255;
+    /** 
+     * Option to prohibit processing of unassigned codepoints in the input and
+     * do not check if the input conforms to STD-3 ASCII rules.
+     * 
+     * @see  #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int DEFAULT             = 0x0000;
+    /** 
+     * Option to allow processing of unassigned codepoints in the input
+     * 
+     * @see  #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int ALLOW_UNASSIGNED    = 0x0001;
+    /** 
+     * Option to check if input conforms to STD-3 ASCII rules
+     * 
+     * @see #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int USE_STD3_RULES      = 0x0002;
+    
+    // static final singleton object that is initialized
+    // at class initialization time, hence guaranteed to
+    // be initialized and thread safe
+    private static final IDNA singleton  = new IDNA();
+    
+    // The NamePrep profile object
+    private StringPrep namePrep;
+    
+    /* private constructor to prevent construction of the object */
+    private IDNA(){
+        try{
+           InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/uidna.spp");
+           namePrep = new StringPrep(stream);
+           stream.close();
+        }catch (IOException e){
+            throw new MissingResourceException(e.toString(),"","");
+        }
+    }
+    
+    private static boolean startsWithPrefix(StringBuffer src){
+        boolean startsWithPrefix = true;
+
+        if(src.length() < ACE_PREFIX.length){
+            return false;
+        }
+        for(int i=0; i<ACE_PREFIX.length;i++){
+            if(toASCIILower(src.charAt(i)) != ACE_PREFIX[i]){
+                startsWithPrefix = false;
+            }
+        }
+        return startsWithPrefix;
+    }
+
+    private static char toASCIILower(char ch){
+        if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
+            return (char)(ch + LOWER_CASE_DELTA);
+        }
+        return ch;
+    }
+
+    private static StringBuffer toASCIILower(StringBuffer src){
+        StringBuffer dest = new StringBuffer();
+        for(int i=0; i<src.length();i++){
+            dest.append(toASCIILower(src.charAt(i)));
+        }
+        return dest;
+    }
+
+    private static int compareCaseInsensitiveASCII(StringBuffer s1, StringBuffer s2){
+        char c1,c2;
+        int rc;
+        for(int i =0;/* no condition */;i++) {
+            /* If we reach the ends of both strings then they match */
+            if(i == s1.length()) {
+                return 0;
+            }
+
+            c1 = s1.charAt(i);
+            c2 = s2.charAt(i);
+        
+            /* Case-insensitive comparison */
+            if(c1!=c2) {
+                rc=toASCIILower(c1)-toASCIILower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+        }
+    }
+   
+    private static int getSeparatorIndex(char[] src,int start, int limit){
+        for(; start<limit;start++){
+            if(isLabelSeparator(src[start])){
+                return start;
+            }
+        }
+        // we have not found the separator just return length
+        return start;
+    }
+    
+    /*
+    private static int getSeparatorIndex(UCharacterIterator iter){
+        int currentIndex = iter.getIndex();
+        int separatorIndex = 0;
+        int ch;
+        while((ch=iter.next())!= UCharacterIterator.DONE){
+            if(isLabelSeparator(ch)){
+                separatorIndex = iter.getIndex();
+                iter.setIndex(currentIndex);
+                return separatorIndex;
+            }
+        }
+        // reset index
+        iter.setIndex(currentIndex);
+        // we have not found the separator just return the length
+       
+    }
+    */
+    
+
+    private static boolean isLDHChar(int ch){
+        // high runner case
+        if(ch>0x007A){
+            return false;
+        }
+        //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A]
+        if( (ch==0x002D) || 
+            (0x0030 <= ch && ch <= 0x0039) ||
+            (0x0041 <= ch && ch <= 0x005A) ||
+            (0x0061 <= ch && ch <= 0x007A)
+          ){
+            return true;
+        }
+        return false;
+    }
+    
+    /**
+     * Ascertain if the given code point is a label separator as 
+     * defined by the IDNA RFC
+     * 
+     * @param ch The code point to be ascertained
+     * @return true if the char is a label separator
+     * @stable ICU 2.8
+     */
+    private static boolean isLabelSeparator(int ch){
+        switch(ch){
+            case 0x002e:
+            case 0x3002:
+            case 0xFF0E:
+            case 0xFF61:
+                return true;
+            default:
+                return false;           
+        }
+    }
+       
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */    
+    public static StringBuffer convertToASCII(String src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToASCII(StringBuffer src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToASCII(UCharacterIterator src, int options)
+                throws StringPrepParseException{
+        
+        boolean[] caseFlags = null;
+    
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+        int ch;
+        // step 1
+        while((ch = src.next())!= UCharacterIterator.DONE){
+            if(ch> 0x7f){
+                srcIsASCII = false;
+            }
+        }
+        int failPos = -1;
+        src.setToStart();
+        StringBuffer processOut = null;
+        // step 2 is performed only if the source contains non ASCII
+        if(!srcIsASCII){
+            // step 2
+            processOut = singleton.namePrep.prepare(src, options);
+        }else{
+            processOut = new StringBuffer(src.getText());
+        }
+        int poLen = processOut.length();
+        
+        if(poLen==0){
+            throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+        }
+        StringBuffer dest = new StringBuffer();
+        
+        // reset the variable to verify if output of prepare is ASCII or not
+        srcIsASCII = true;
+        
+        // step 3 & 4
+        for(int j=0;j<poLen;j++ ){
+            ch=processOut.charAt(j);
+            if(ch > 0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                // here we do not assemble surrogates
+                // since we know that LDH code points
+                // are in the ASCII range only
+                srcIsLDH = false;
+                failPos = j;
+            }
+        }
+    
+        if(useSTD3ASCIIRules == true){
+            // verify 3a and 3b
+            if( srcIsLDH == false /* source contains some non-LDH characters */
+                || processOut.charAt(0) ==  HYPHEN 
+                || processOut.charAt(processOut.length()-1) == HYPHEN){
+
+                /* populate the parseError struct */
+                if(srcIsLDH==false){
+                     throw new StringPrepParseException( "The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                             (failPos>0) ? (failPos-1) : failPos);
+                }else if(processOut.charAt(0) == HYPHEN){
+                    throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),0);
+     
+                }else{
+                     throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                              (poLen>0) ? poLen-1 : poLen);
+
+                }
+            }
+        }
+        if(srcIsASCII){
+            dest =  processOut;
+        }else{
+            // step 5 : verify the sequence does not begin with ACE prefix
+            if(!startsWithPrefix(processOut)){
+
+                //step 6: encode the sequence with punycode
+                caseFlags = new boolean[poLen];
+
+                StringBuffer punyout = Punycode.encode(processOut,caseFlags);
+
+                // convert all codepoints to lower case ASCII
+                StringBuffer lowerOut = toASCIILower(punyout);
+
+                //Step 7: prepend the ACE prefix
+                dest.append(ACE_PREFIX,0,ACE_PREFIX.length);
+                //Step 6: copy the contents in b2 into dest
+                dest.append(lowerOut);
+            }else{
+
+                throw new StringPrepParseException("The input does not start with the ACE Prefix.",
+                                         StringPrepParseException.ACE_PREFIX_ERROR,processOut.toString(),0);
+            }
+        }
+        if(dest.length() > MAX_LABEL_LENGTH){
+            throw new StringPrepParseException("The labels in the input are too long. Length > 63.", 
+                                     StringPrepParseException.LABEL_TOO_LONG_ERROR,dest.toString(),0);
+        }
+        return dest;
+    }
+        
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(UCharacterIterator src, int options)
+            throws StringPrepParseException{
+        return convertIDNToASCII(src.getText(), options);          
+    }
+    
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as a StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(StringBuffer src, int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(src.toString(), options);          
+    }
+    
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(String src,int options)
+            throws StringPrepParseException{
+
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            //make sure this is not a root label separator.
+            if(!(label.length()==0 && sepIndex==srcArr.length)){
+                UCharacterIterator iter = UCharacterIterator.getInstance(label);
+                result.append(convertToASCII(iter,options));
+            }
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        if(result.length() > MAX_DOMAIN_NAME_LENGTH){
+            throw new StringPrepParseException("The output exceed the max allowed length.", StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR);
+        }
+        return result;
+    }
+
+    
+    /**
+     * This function implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(String src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+    
+    /**
+     * This function implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(StringBuffer src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+       
+    /**
+     * Function that implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(UCharacterIterator src, int options)
+           throws StringPrepParseException{
+        
+        boolean[] caseFlags = null;
+                
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        //boolean srcIsLDH = true; 
+        
+        //get the options
+        //boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+        
+        //int failPos = -1;
+        int ch;
+        int saveIndex = src.getIndex();
+        // step 1: find out if all the codepoints in src are ASCII  
+        while((ch=src.next())!= UCharacterIterator.DONE){
+            if(ch>0x7F){
+                srcIsASCII = false;
+            }/*else if((srcIsLDH = isLDHChar(ch))==false){
+                failPos = src.getIndex();
+            }*/
+        }
+        StringBuffer processOut;
+        
+        if(srcIsASCII == false){
+            try {
+                // step 2: process the string
+                src.setIndex(saveIndex);
+                processOut = singleton.namePrep.prepare(src,options);
+            } catch (StringPrepParseException ex) {
+                return new StringBuffer(src.getText());
+            }
+
+        }else{
+            //just point to source
+            processOut = new StringBuffer(src.getText());
+        }
+        // TODO:
+        // The RFC states that 
+        // <quote>
+        // ToUnicode never fails. If any step fails, then the original input
+        // is returned immediately in that step.
+        // </quote>
+        
+        //step 3: verify ACE Prefix
+        if(startsWithPrefix(processOut)){
+            StringBuffer decodeOut = null;
+
+            //step 4: Remove the ACE Prefix
+            String temp = processOut.substring(ACE_PREFIX.length,processOut.length());
+
+            //step 5: Decode using punycode
+            try {
+                decodeOut = Punycode.decode(new StringBuffer(temp),caseFlags);
+            } catch (StringPrepParseException e) {
+                decodeOut = null;
+            }
+        
+            //step 6:Apply toASCII
+            if (decodeOut != null) {
+                StringBuffer toASCIIOut = convertToASCII(decodeOut, options);
+    
+                //step 7: verify
+                if(compareCaseInsensitiveASCII(processOut, toASCIIOut) !=0){
+//                    throw new StringPrepParseException("The verification step prescribed by the RFC 3491 failed",
+//                                             StringPrepParseException.VERIFICATION_ERROR); 
+                    decodeOut = null;
+                }
+            }
+
+            //step 8: return output of step 5
+             if (decodeOut != null) {
+                 return decodeOut;
+             }
+        }
+            
+//        }else{
+//            // verify that STD3 ASCII rules are satisfied
+//            if(useSTD3ASCIIRules == true){
+//                if( srcIsLDH == false /* source contains some non-LDH characters */
+//                    || processOut.charAt(0) ==  HYPHEN 
+//                    || processOut.charAt(processOut.length()-1) == HYPHEN){
+//    
+//                    if(srcIsLDH==false){
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),
+//                                                 (failPos>0) ? (failPos-1) : failPos);
+//                    }else if(processOut.charAt(0) == HYPHEN){
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,
+//                                                 processOut.toString(),0);
+//         
+//                    }else{
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,
+//                                                 processOut.toString(),
+//                                                 processOut.length());
+//    
+//                    }
+//                }
+//            }
+//            // just return the source
+//            return new StringBuffer(src.getText());
+//        }  
+        
+        return new StringBuffer(src.getText());
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(UCharacterIterator src, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(src.getText(), options);
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(StringBuffer src, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(src.toString(), options);
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(String src, int options)
+        throws StringPrepParseException{
+            
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            if(label.length()==0 && sepIndex!=srcArr.length ){
+                throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+            }
+            UCharacterIterator iter = UCharacterIterator.getInstance(label);
+            result.append(convertToUnicode(iter,options));
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // Unlike the ToASCII operation we don't normalize the label separators
+            result.append(srcArr[sepIndex]);
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex =sepIndex;
+        }
+        if(result.length() > MAX_DOMAIN_NAME_LENGTH){
+            throw new StringPrepParseException("The output exceed the max allowed length.", StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR);
+        }
+        return result;
+    }
+    
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string as StringBuffer
+     * @param s2        Second IDN string as StringBuffer
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED    Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES      Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if s1 > s2 and < 0 if s1 < s2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(StringBuffer s1, StringBuffer s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.toString(),options);
+        StringBuffer s2Out = convertIDNToASCII(s2.toString(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string 
+     * @param s2        Second IDN string
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED    Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES      Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if s1 > s2 and < 0 if s1 < s2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(String s1, String s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1, options);
+        StringBuffer s2Out = convertIDNToASCII(s2, options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string as UCharacterIterator
+     * @param s2        Second IDN string as UCharacterIterator
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if i1 > i2 and < 0 if i1 < i2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(UCharacterIterator s1, UCharacterIterator s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.getText(), options);
+        StringBuffer s2Out = convertIDNToASCII(s2.getText(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+}
diff --git a/src/com/ibm/icu/text/IndexCharacters.java b/src/com/ibm/icu/text/IndexCharacters.java
new file mode 100644
index 0000000..db5cdae
--- /dev/null
+++ b/src/com/ibm/icu/text/IndexCharacters.java
@@ -0,0 +1,274 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google Inc, International Business Machines Corporation
+ * and others. All Rights Reserved.
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.CollectionUtilities.MultiComparator;
+
+/**
+ * A set of characters for use as a UI "index", that is, a
+ * list of clickable characters (or character sequences) that allow the user to
+ * see a segment of a larger "target" list. That is, each character corresponds
+ * to a bucket in the target list, where everything in the bucket is greater
+ * than or equal to the character (according to the locale's collation). The
+ * intention is to have two main functions; one that produces an index list that
+ * is relatively static, and the other is a list that produces roughly
+ * equally-sized buckets. Only the first is currently provided.
+ * <p>
+ * The static list would be presented as something like
+ * 
+ * <pre>
+ *  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ * </pre>
+ * 
+ * In the UI, an index character could be omitted if its bucket is empty. For
+ * example, if there is nothing in the bucket for Q, then Q could be omitted.
+ * <p>
+ * <b>Important Notes:</b>
+ * <ul>
+ * <li>Although we say "character" above, the index character could be a
+ * sequence, like "CH".</li>
+ * <li>There could be items in a target list that are less than the first or
+ * (much) greater than the last; examples include words from other scripts. The
+ * UI could bucket them with the first or last respectively, or have some symbol
+ * for those categories.</li>
+ * <li>The use of the list requires that the target list be sorted according to
+ * the locale that is used to create that list.</li>
+ * <li>For languages without widely accepted sorting methods (eg Chinese/Japanese)
+ * the results may appear arbitrary, and it may be best not to use these methods.</li>
+ * <li>In the initial version, an arbitrary limit of 100 is placed on these lists.</li>
+ * </ul>
+ * 
+ * @author markdavis
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+//TODO(markdavis) return an additional character that is the "least greater" character than
+//the last character.
+public class IndexCharacters {
+    public static final char CGJ = '\u034F';
+    private static final UnicodeSet ALPHABETIC = new UnicodeSet("[[:alphabetic:]-[:mark:]]");
+    private static final UnicodeSet HANGUL = new UnicodeSet("[\uAC00 \uB098 \uB2E4 \uB77C \uB9C8 \uBC14  \uC0AC  \uC544 \uC790  \uCC28 \uCE74 \uD0C0 \uD30C \uD558]");
+    private static final UnicodeSet ETHIOPIC = new UnicodeSet("[[:Block=Ethiopic:]&[:Script=Ethiopic:]]");
+    private static final UnicodeSet CORE_LATIN = new UnicodeSet("[a-z]");
+
+    private ULocale locale;
+    private Collator comparator;
+    private Set indexCharacters;
+    private LinkedHashMap alreadyIn = new LinkedHashMap();
+    private List noDistinctSorting = new ArrayList();
+    private List notAlphabetic = new ArrayList();
+
+    /**
+     * Create the index object.
+     * @param locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public IndexCharacters(ULocale locale) {
+        this.locale = locale;
+        comparator = Collator.getInstance(locale);
+        comparator.setStrength(Collator.PRIMARY);
+
+        // get the exemplars, and handle special cases
+
+        UnicodeSet exemplars = LocaleData.getExemplarSet(locale, LocaleData.ES_STANDARD);
+        // question: should we add auxiliary exemplars?
+        if (exemplars.containsSome(CORE_LATIN)) {
+            exemplars.addAll(CORE_LATIN);
+        }
+        if (exemplars.containsSome(HANGUL)) {
+            // cut down to small list
+            exemplars.removeAll(new UnicodeSet("[:block=hangul_syllables:]")).addAll(HANGUL);
+        }
+        if (exemplars.containsSome(ETHIOPIC)) {
+            // cut down to small list
+            // make use of the fact that Ethiopic is allocated in 8's, where
+            // the base is 0 mod 8.
+            for (UnicodeSetIterator it = new UnicodeSetIterator(ETHIOPIC); it.next();) {
+                if ((it.codepoint & 0x7) != 0) {
+                    exemplars.remove(it.codepoint);
+                }
+            }
+        }
+
+        // first sort them, with an "best" ordering among items that are the same according
+        // to the collator
+
+        Set preferenceSorting = new TreeSet(new MultiComparator(new Comparator[]{
+                comparator, new PreferenceComparator(Collator.getInstance(locale))}));
+        for (UnicodeSetIterator it = new UnicodeSetIterator(exemplars); it.next();) {
+            preferenceSorting.add(it.getString());
+        }
+
+        indexCharacters = new TreeSet(comparator);
+
+        // We nw make a sorted array of elements, uppercased
+        // Some of the input may, however, be redundant.
+        // That is, we might have c, ch, d, where "ch" sorts just like "c", "h"
+        // So we make a pass through, filtering out those cases.
+
+        for (Iterator it = preferenceSorting.iterator(); it.hasNext();) {
+            String item = (String) it.next();
+            item = UCharacter.toUpperCase(locale, item);
+            if (indexCharacters.contains(item)) {
+                for (Iterator it2 = indexCharacters.iterator(); it2.hasNext();) {
+                    Object itemAlreadyIn = it2.next();
+                    if (comparator.compare(item, itemAlreadyIn) == 0) {
+                        Set targets = (Set) alreadyIn.get(itemAlreadyIn);
+                        if (targets == null) {
+                            alreadyIn.put(itemAlreadyIn, targets = new LinkedHashSet());
+                        }
+                        targets.add(item);
+                        break;
+                    }
+                }
+            } else if (UTF16.countCodePoint(item) > 1 && comparator.compare(item, separated(item)) == 0){
+                noDistinctSorting.add(item);
+            } else if (!ALPHABETIC.containsSome(item)) {
+                notAlphabetic.add(item);
+            } else {
+                indexCharacters.add(item);
+            }
+        }
+
+        // if the result is still too large, cut down to 100 elements
+
+        final int size = indexCharacters.size() - 1;
+        if (size > 99) {
+            int count = 0;
+            int old = -1;
+            for (Iterator it = indexCharacters.iterator(); it.hasNext();) {
+                ++ count;
+                it.next();
+                final int bump = count * 99 / size;
+                if (bump == old) {
+                    it.remove();
+                } else {
+                    old = bump;
+                }   
+            }
+        }
+        indexCharacters = Collections.unmodifiableSet(indexCharacters);
+    }
+
+    /*
+     * Return the string with interspersed CGJs. Input must have more than 2 codepoints.
+     */
+    private String separated(String item) {
+        StringBuffer result = new StringBuffer();
+        // add a CGJ except within surrogates
+        char last = item.charAt(0);
+        result.append(last);
+        for (int i = 1; i < item.length(); ++i) {
+            char ch = item.charAt(i);
+            if (!UCharacter.isHighSurrogate(last) || !UCharacter.isLowSurrogate(ch)) {
+                result.append(CGJ);
+            }
+            result.append(ch);
+            last = ch;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Get the index characters.
+     * @return A collection including the index characters
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Collection getIndexCharacters() {
+        return indexCharacters;
+    }
+
+    /**
+     * Get the locale
+     * @return The locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale() {
+        return locale;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public Map getAlreadyIn() {
+        return alreadyIn;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public List getNoDistinctSorting() {
+        return noDistinctSorting;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public List getNotAlphabetic() {
+        return notAlphabetic;
+    }
+
+    /*
+     * Comparator that returns "better" items first, where shorter NFKD is better,
+     * and otherwise NFKD binary order is better, and otherwise binary order is better.
+     */
+    private static class PreferenceComparator implements Comparator {
+        static final Comparator binary = new UTF16.StringComparator(true,false,0);
+        final Collator collator;
+
+        public PreferenceComparator(Collator collator) {
+            this.collator = collator;
+        }
+        
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) {
+                return 0;
+            }
+            String s1 = (String) o1;
+            String s2 = (String) o2;
+            String n1 = Normalizer.decompose(s1, true);
+            String n2 = Normalizer.decompose(s2, true);
+            int result = n1.length() - n2.length();
+            if (result != 0) {
+                return result;
+            }
+            result = collator.compare(n1, n2);
+            if (result != 0) {
+                return result;
+            }
+            return binary.compare(s1, s2);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/text/LowercaseTransliterator.java b/src/com/ibm/icu/text/LowercaseTransliterator.java
new file mode 100644
index 0000000..04f23a2
--- /dev/null
+++ b/src/com/ibm/icu/text/LowercaseTransliterator.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toLower()
+ * case mapping.
+ */
+class LowercaseTransliterator extends Transliterator{
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Lower";
+    
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new LowercaseTransliterator(ULocale.US);
+            }
+        });
+
+        Transliterator.registerSpecialInverse("Lower", "Upper", true);
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+    /**
+     * Constructs a transliterator.
+     */
+
+    public LowercaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        if(csp==null) {
+            return;
+        }
+
+        if(offsets.start >= offsets.limit) {
+            return;
+        } 
+
+        iter.setText(text);
+        result.setLength(0);
+        int c, delta;
+
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+
+        iter.setIndex(offsets.start);
+        iter.setLimit(offsets.limit);
+        iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=csp.toFullLower(c, iter, result, locale, locCache);
+
+            if(iter.didReachLimit() && isIncremental) {
+                // the case mapping function tried to look beyond the context limit
+                // wait for more input
+                offsets.start=iter.getCaseMapCPStart();
+                return;
+            }
+
+            /* decode the result */
+            if(c<0) {
+                /* c mapped to itself, no change */
+                continue;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* replace by the mapping string */
+                delta=iter.replace(result.toString());
+                result.setLength(0);
+            } else {
+                /* replace by single-code point mapping */
+                delta=iter.replace(UTF16.valueOf(c));
+            }
+
+            if(delta!=0) {
+                offsets.limit += delta;
+                offsets.contextLimit += delta;
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/MeasureFormat.java b/src/com/ibm/icu/text/MeasureFormat.java
new file mode 100644
index 0000000..2474546
--- /dev/null
+++ b/src/com/ibm/icu/text/MeasureFormat.java
@@ -0,0 +1,56 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A formatter for Measure objects.  This is an abstract base class.
+ *
+ * <p>To format or parse a Measure object, first create a formatter
+ * object using a MeasureFormat factory method.  Then use that
+ * object's format and parse methods.
+ *
+ * @see com.ibm.icu.text.UFormat
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class MeasureFormat extends UFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -7182021401701778240L;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected MeasureFormat() {}
+    
+    /**
+     * Return a formatter for CurrencyAmount objects in the given
+     * locale.
+     * @param locale desired locale
+     * @return a formatter object
+     * @stable ICU 3.0
+     */
+    public static MeasureFormat getCurrencyFormat(ULocale locale) {
+        return new CurrencyFormat(locale);
+    }
+
+    /**
+     * Return a formatter for CurrencyAmount objects in the default
+     * locale.
+     * @return a formatter object
+     * @stable ICU 3.0
+     */
+    public static MeasureFormat getCurrencyFormat() {
+        return getCurrencyFormat(ULocale.getDefault());
+    }
+}
diff --git a/src/com/ibm/icu/text/MessageFormat.java b/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..87145f2
--- /dev/null
+++ b/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,2313 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 6, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.ArrayList;
+import java.text.CharacterIterator;
+//#endif
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>MessageFormat</code> provides a means to produce concatenated
+ * messages in language-neutral way. Use this to construct messages
+ * displayed for end users.
+ *
+ * <p>
+ * <code>MessageFormat</code> takes a set of objects, formats them, then
+ * inserts the formatted strings into the pattern at the appropriate places.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * <code>MessageFormat</code> differs from the other <code>Format</code>
+ * classes in that you create a <code>MessageFormat</code> object with one
+ * of its constructors (not with a <code>getInstance</code> style factory
+ * method). The factory methods aren't necessary because <code>MessageFormat</code>
+ * itself doesn't implement locale specific behavior. Any locale specific
+ * behavior is defined by the pattern that you provide as well as the
+ * subformats used for inserted arguments.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * In ICU 3.8 MessageFormat supports named arguments.  If a named argument
+ * is used, all arguments must be named.  Names start with a character in
+ * <code>:ID_START:</code> and continue with characters in <code>:ID_CONTINUE:</code>,
+ * in particular they do not start with a digit.  If named arguments
+ * are used, {@link #usesNamedArguments()} will return true.
+ * <p>
+ * The other new APIs supporting named arguments are
+ * {@link #setFormatsByArgumentName(Map)},
+ * {@link #setFormatByArgumentName(String, Format)},
+ * {@link #format(Map, StringBuffer, FieldPosition)},
+ * {@link #format(String, Map)}, {@link #parseToMap(String, ParsePosition)},
+ * and {@link #parseToMap(String)}.  These APIs are all compatible
+ * with patterns that do not used named arguments-- in these cases
+ * the keys in the input or output <code>Map</code>s use
+ * <code>String</code>s that name the argument indices, e.g. "0",
+ * "1", "2"... etc.
+ * <p>
+ * When named arguments are used, certain APIs on Message that take or
+ * return arrays will throw an exception, since it is not possible to
+ * identify positions in an array using a name.  These APIs are {@link
+ * #setFormatsByArgumentIndex(Format[])}, {@link #getFormatsByArgumentIndex()},
+ * {@link #format(Object[], StringBuffer, FieldPosition)},
+ * {@link #format(String, Object[])},{@link #parse(String, ParsePosition)},
+ * and {@link #parse(String)}.
+ * These APIs all have corresponding new versions as listed above.
+ * <p>
+
+ * The API {@link #format(Object, StringBuffer, FieldPosition)} has
+ * been modified so that the <code>Object</code> argument can be
+ * either an <code>Object</code> array or a <code>Map</code>.  If this
+ * format uses named arguments, this argument must not be an
+ * <code>Object</code> array otherwise an exception will be thrown.
+ * If the argument is a <code>Map</code> it can be used with Strings that
+ * represent indices as described above.
+ *
+ * <h4><a name="patterns">Patterns and Their Interpretation</a></h4>
+ *
+ * <code>MessageFormat</code> uses patterns of the following form:
+ * <blockquote><pre>
+ * <i>MessageFormatPattern:</i>
+ *         <i>String</i>
+ *         <i>MessageFormatPattern</i> <i>FormatElement</i> <i>String</i>
+ *
+ * <i>FormatElement:</i>
+ *         { <i>ArgumentIndexOrName</i> }
+ *         { <i>ArgumentIndexOrName</i> , <i>FormatType</i> }
+ *         { <i>ArgumentIndexOrName</i> , <i>FormatType</i> , <i>FormatStyle</i> }
+ *
+ * <i>ArgumentIndexOrName: one of </i>
+ *         ['0'-'9']+
+ *         [:ID_START:][:ID_CONTINUE:]*
+ *
+ * <i>FormatType: one of </i>
+ *         number date time choice
+ *
+ * <i>FormatStyle:</i>
+ *         short
+ *         medium
+ *         long
+ *         full
+ *         integer
+ *         currency
+ *         percent
+ *         <i>SubformatPattern</i>
+ *
+ * <i>String:</i>
+ *         <i>StringPart<sub>opt</sub></i>
+ *         <i>String</i> <i>StringPart</i>
+ *
+ * <i>StringPart:</i>
+ *         ''
+ *         ' <i>QuotedString</i> '
+ *         <i>UnquotedString</i>
+ *
+ * <i>SubformatPattern:</i>
+ *         <i>SubformatPatternPart<sub>opt</sub></i>
+ *         <i>SubformatPattern</i> <i>SubformatPatternPart</i>
+ *
+ * <i>SubFormatPatternPart:</i>
+ *         ' <i>QuotedPattern</i> '
+ *         <i>UnquotedPattern</i>
+ * </pre></blockquote>
+ *
+ * <p>
+ * Within a <i>String</i>, <code>"''"</code> represents a single
+ * quote. A <i>QuotedString</i> can contain arbitrary characters
+ * except single quotes; the surrounding single quotes are removed.
+ * An <i>UnquotedString</i> can contain arbitrary characters
+ * except single quotes and left curly brackets. Thus, a string that
+ * should result in the formatted message "'{0}'" can be written as
+ * <code>"'''{'0}''"</code> or <code>"'''{0}'''"</code>.
+ * <p>
+ * Within a <i>SubformatPattern</i>, different rules apply.
+ * A <i>QuotedPattern</i> can contain arbitrary characters
+ * except single quotes; but the surrounding single quotes are
+ * <strong>not</strong> removed, so they may be interpreted by the
+ * subformat. For example, <code>"{1,number,$'#',##}"</code> will
+ * produce a number format with the pound-sign quoted, with a result
+ * such as: "$#31,45".
+ * An <i>UnquotedPattern</i> can contain arbitrary characters
+ * except single quotes, but curly braces within it must be balanced.
+ * For example, <code>"ab {0} de"</code> and <code>"ab '}' de"</code>
+ * are valid subformat patterns, but <code>"ab {0'}' de"</code> and
+ * <code>"ab } de"</code> are not.
+ * <p>
+ * <dl><dt><b>Warning:</b><dd>The rules for using quotes within message
+ * format patterns unfortunately have shown to be somewhat confusing.
+ * In particular, it isn't always obvious to localizers whether single
+ * quotes need to be doubled or not. Make sure to inform localizers about
+ * the rules, and tell them (for example, by using comments in resource
+ * bundle source files) which strings will be processed by MessageFormat.
+ * Note that localizers may need to use single quotes in translated
+ * strings where the original version doesn't have them.
+ * <br>Note also that the simplest way to avoid the problem is to
+ * use the real apostrophe (single quote) character \u2019 (') for
+ * human-readable text, and to use the ASCII apostrophe (\u0027 ' )
+ * only in program syntax, like quoting in MessageFormat.
+ * See the annotations for U+0027 Apostrophe in The Unicode Standard.</p>
+ * </dl>
+ * <p>
+ * The <i>ArgumentIndex</i> value is a non-negative integer written
+ * using the digits '0' through '9', and represents an index into the
+ * <code>arguments</code> array passed to the <code>format</code> methods
+ * or the result array returned by the <code>parse</code> methods.
+ * <p>
+ * The <i>FormatType</i> and <i>FormatStyle</i> values are used to create
+ * a <code>Format</code> instance for the format element. The following
+ * table shows how the values map to Format instances. Combinations not
+ * shown in the table are illegal. A <i>SubformatPattern</i> must
+ * be a valid pattern string for the Format subclass used.
+ * <p>
+ * <table border=1>
+ *    <tr>
+ *       <th>Format Type
+ *       <th>Format Style
+ *       <th>Subformat Created
+ *    <tr>
+ *       <td colspan=2><i>(none)</i>
+ *       <td><code>null</code>
+ *    <tr>
+ *       <td rowspan=5><code>number</code>
+ *       <td><i>(none)</i>
+ *       <td><code>NumberFormat.getInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>integer</code>
+ *       <td><code>NumberFormat.getIntegerInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>currency</code>
+ *       <td><code>NumberFormat.getCurrencyInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>percent</code>
+ *       <td><code>NumberFormat.getPercentInstance(getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new DecimalFormat(subformatPattern, new DecimalFormatSymbols(getLocale()))</code>
+ *    <tr>
+ *       <td rowspan=6><code>date</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td rowspan=6><code>time</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td><code>choice</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new ChoiceFormat(subformatPattern)</code>
+ *    <tr>
+ *       <td><code>spellout</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>ordinal</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>duration</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>plural</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new PluralFormat(subformatPattern)</code>
+ * </table>
+ * <p>
+ *
+ * <h4>Usage Information</h4>
+ *
+ * <p>
+ * Here are some examples of usage:
+ * <blockquote>
+ * <pre>
+ * Object[] arguments = {
+ *     new Integer(7),
+ *     new Date(System.currentTimeMillis()),
+ *     "a disturbance in the Force"
+ * };
+ *
+ * String result = MessageFormat.format(
+ *     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+ *     arguments);
+ *
+ * <em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
+ *           in the Force on planet 7.
+ *
+ * </pre>
+ * </blockquote>
+ * Typically, the message format will come from resources, and the
+ * arguments will be dynamically set at runtime.
+ *
+ * <p>
+ * Example 2:
+ * <blockquote>
+ * <pre>
+ * Object[] testArgs = {new Long(3), "MyDisk"};
+ *
+ * MessageFormat form = new MessageFormat(
+ *     "The disk \"{1}\" contains {0} file(s).");
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * <em>output</em>: The disk "MyDisk" contains 0 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1,273 file(s).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * For more sophisticated patterns, you can use a <code>ChoiceFormat</code> to get
+ * output such as:
+ * <blockquote>
+ * <pre>
+ * MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+ * double[] filelimits = {0,1,2};
+ * String[] filepart = {"no files","one file","{0,number} files"};
+ * ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+ * form.setFormatByArgumentIndex(0, fileform);
+ *
+ * Object[] testArgs = {new Long(12373), "MyDisk"};
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * output: The disk "MyDisk" contains no files.
+ * output: The disk "MyDisk" contains one file.
+ * output: The disk "MyDisk" contains 1,273 files.
+ * </pre>
+ * </blockquote>
+ * You can either do this programmatically, as in the above example,
+ * or by using a pattern (see
+ * {@link ChoiceFormat}
+ * for more information) as in:
+ * <blockquote>
+ * <pre>
+ * form.applyPattern(
+ *    "There {0,choice,0#are no files|1#is one file|1&lt;are {0,number,integer} files}.");
+ * </pre>
+ * </blockquote>
+ * <p>
+ * <strong>Note:</strong> As we see above, the string produced
+ * by a <code>ChoiceFormat</code> in <code>MessageFormat</code> is treated specially;
+ * occurances of '{' are used to indicated subformats, and cause recursion.
+ * If you create both a <code>MessageFormat</code> and <code>ChoiceFormat</code>
+ * programmatically (instead of using the string patterns), then be careful not to
+ * produce a format that recurses on itself, which will cause an infinite loop.
+ * <p>
+ * When a single argument is parsed more than once in the string, the last match
+ * will be the final result of the parsing.  For example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
+ * Object[] objs = {new Double(3.1415)};
+ * String result = mf.format( objs );
+ * // result now equals "3.14, 3.1"
+ * objs = null;
+ * objs = mf.parse(result, new ParsePosition(0));
+ * // objs now equals {new Double(3.1)}
+ * </pre>
+ * <p>
+ * Likewise, parsing with a MessageFormat object using patterns containing
+ * multiple occurances of the same argument would return the last match.  For
+ * example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+ * String forParsing = "x, y, z";
+ * Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+ * // result now equals {new String("z")}
+ * </pre>
+ *
+ * <h4><a name="synchronization">Synchronization</a></h4>
+ *
+ * <p>
+ * Message formats are not synchronized.
+ * It is recommended to create separate format instances for each thread.
+ * If multiple threads access a format concurrently, it must be synchronized
+ * externally.
+ *
+ * @see          java.util.Locale
+ * @see          Format
+ * @see          NumberFormat
+ * @see          DecimalFormat
+ * @see          ChoiceFormat
+ * @author       Mark Davis
+ * @stable ICU 3.0
+ */
+ // TODO: Update JavaDoc class description with regards to named arguments.
+ // TODO: Update JavaDoc class description with regards to PluralFormat
+ //       integration.
+public class MessageFormat extends UFormat {
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 7136212545847378651L;
+
+    /**
+     * Constructs a MessageFormat for the default locale and the
+     * specified pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern) {
+        this.ulocale = ULocale.getDefault();
+        applyPattern(pattern);
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern, Locale locale) {
+        this(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.2
+     */
+    public MessageFormat(String pattern, ULocale locale) {
+        this.ulocale = locale;
+        applyPattern(pattern);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public void setLocale(Locale locale) {
+        setLocale(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public void setLocale(ULocale locale) {
+        /* Save the pattern, and then reapply so that */
+        /* we pick up any changes in locale specific */
+        /* elements */
+        String existingPattern = toPattern();                       /*ibm.3550*/
+        this.ulocale = locale;
+        applyPattern(existingPattern);                              /*ibm.3550*/
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public Locale getLocale() {
+        return ulocale.toLocale();
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    /**
+     * Sets the pattern used by this message format.
+     * The method parses the pattern and creates a list of subformats
+     * for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     * <p>
+     * The pattern must contain only named or only numeric arguments,
+     * mixing them is not allowed.
+     *
+     * @param pttrn the pattern for this message format
+     * @throws IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public void applyPattern(String pttrn) {
+        StringBuffer[] segments = new StringBuffer[4];
+        for (int i = 0; i < segments.length; ++i) {
+            segments[i] = new StringBuffer();
+        }
+        int part = 0;
+        int formatNumber = 0;
+        boolean inQuote = false;
+        int braceStack = 0;
+        maxOffset = -1;
+        for (int i = 0; i < pttrn.length(); ++i) {
+            char ch = pttrn.charAt(i);
+            if (part == 0) {
+                if (ch == '\'') {
+                    if (i + 1 < pttrn.length()
+                        && pttrn.charAt(i+1) == '\'') {
+                        segments[part].append(ch);  // handle doubles
+                        ++i;
+                    } else {
+                        inQuote = !inQuote;
+                    }
+                } else if (ch == '{' && !inQuote) {
+                    part = 1;
+                } else {
+                    segments[part].append(ch);
+                }
+            } else  if (inQuote) {  // just copy quotes in parts
+                segments[part].append(ch);
+                if (ch == '\'') {
+                    inQuote = false;
+                }
+            } else {
+                switch (ch) {
+                case ',':
+                    if (part < 3)
+                        part += 1;
+                    else
+                        segments[part].append(ch);
+                    break;
+                case '{':
+                    ++braceStack;
+                    segments[part].append(ch);
+                    break;
+                case '}':
+                    if (braceStack == 0) {
+                        part = 0;
+                        makeFormat(i, formatNumber, segments);
+                        formatNumber++;
+                    } else {
+                        --braceStack;
+                        segments[part].append(ch);
+                    }
+                    break;
+                case '\'':
+                    inQuote = true;
+                    // fall through, so we keep quotes in other parts
+                default:
+                    segments[part].append(ch);
+                    break;
+                }
+            }
+        }
+        if (braceStack == 0 && part != 0) {
+            maxOffset = -1;
+            throw new IllegalArgumentException("Unmatched braces in the pattern.");
+        }
+        this.pattern = segments[0].toString();
+    }
+
+
+    /**
+     * Returns a pattern representing the current state of the message format.
+     * The string is constructed from internal information and therefore
+     * does not necessarily equal the previously applied pattern.
+     *
+     * @return a pattern representing the current state of the message format
+     * @stable ICU 3.0
+     */
+    public String toPattern() {
+        // later, make this more extensible
+        int lastOffset = 0;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i <= maxOffset; ++i) {
+            copyAndFixQuotes(pattern, lastOffset, offsets[i],result);
+            lastOffset = offsets[i];
+            result.append('{');
+            result.append(argumentNames[i]);
+            if (formats[i] == null) {
+                // do nothing, string format
+            } else if (formats[i] instanceof DecimalFormat) {
+                if (formats[i].equals(NumberFormat.getInstance(ulocale))) {
+                    result.append(",number");
+                } else if (formats[i].equals(NumberFormat.getCurrencyInstance(ulocale))) {
+                    result.append(",number,currency");
+                } else if (formats[i].equals(NumberFormat.getPercentInstance(ulocale))) {
+                    result.append(",number,percent");
+                } else if (formats[i].equals(NumberFormat.getIntegerInstance(ulocale))) {
+                    result.append(",number,integer");
+                } else {
+                    result.append(",number," +
+                                  ((DecimalFormat)formats[i]).toPattern());
+                }
+            } else if (formats[i] instanceof SimpleDateFormat) {
+                if (formats[i].equals(DateFormat.getDateInstance(DateFormat.DEFAULT,ulocale))) {
+                    result.append(",date");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.SHORT,ulocale))) {
+                    result.append(",date,short");
+// This code will never be executed [alan]
+//                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.DEFAULT,ulocale))) {
+//                    result.append(",date,medium");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.LONG,ulocale))) {
+                    result.append(",date,long");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.FULL,ulocale))) {
+                    result.append(",date,full");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.DEFAULT,ulocale))) {
+                    result.append(",time");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.SHORT,ulocale))) {
+                    result.append(",time,short");
+// This code will never be executed [alan]
+//                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.DEFAULT,ulocale))) {
+//                    result.append(",time,medium");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.LONG,ulocale))) {
+                    result.append(",time,long");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.FULL,ulocale))) {
+                    result.append(",time,full");
+                } else {
+                    result.append(",date," + ((SimpleDateFormat)formats[i]).toPattern());
+                }
+            } else if (formats[i] instanceof ChoiceFormat) {
+                result.append(",choice,"
+                        + ((ChoiceFormat) formats[i]).toPattern());
+            } else if (formats[i] instanceof PluralFormat) {
+              String pat = ((PluralFormat)formats[i]).toPattern();
+              // TODO: PluralFormat doesn't do the single quote thing, just reapply
+              if (pat.indexOf('\'') != 0) {
+                StringBuffer buf = new StringBuffer();
+                for (int j = 0; j < pat.length(); ++j) {
+                  char ch = pat.charAt(j);
+                  if (ch == '\'') {
+                    buf.append(ch); // double it
+                  }
+                  buf.append(ch);
+                }
+                pat = buf.toString();
+              }
+              result.append(",plural," + pat);
+            } else {
+                //result.append(", unknown");
+            }
+            result.append('}');
+        }
+        copyAndFixQuotes(pattern, lastOffset, pattern.length(), result);
+        return result.toString();
+    }
+
+    /**
+     * Sets the formats to use for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The indices of elements in <code>newFormats</code>
+     * correspond to the argument indices used in the previously set
+     * pattern string.
+     * The order of formats in <code>newFormats</code> thus corresponds to
+     * the order of elements in the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If an argument index is used for more than one format element
+     * in the pattern string, then the corresponding new format is used
+     * for all such format elements. If an argument index is not used
+     * for any format element in the pattern string, then the
+     * corresponding new format is ignored. If fewer formats are provided
+     * than needed, then only the formats for argument indices less
+     * than <code>newFormats.length</code> are replaced.
+     *
+     * This method is only supported if the format does not use
+     * named arguments, otherwise an IllegalArgumentException is thrown.
+     *
+     * @param newFormats
+     *            the new formats to use
+     * @throws NullPointerException
+     *                if <code>newFormats</code> is null
+     * @throws IllegalArgumentException
+     *                if this formatter uses named arguments
+     * @stable ICU 3.0
+     */
+    public void setFormatsByArgumentIndex(Format[] newFormats) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        for (int i = 0; i <= maxOffset; i++) {
+            int j = Integer.parseInt(argumentNames[i]);
+            if (j < newFormats.length) {
+                formats[i] = newFormats[j];
+            }
+        }
+    }
+
+    /**
+     * Sets the formats to use for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The keys in <code>newFormats</code> are the argument
+     * names in the previously set pattern string, and the values
+     * are the formats.
+     * <p>
+     * Only argument names from the pattern string are considered.
+     * Extra keys in <code>newFormats</code> that do not correspond
+     * to an argument name are ignored.  Similarly, if there is no
+     * format in newFormats for an argument name, the formatter
+     * for that argument remains unchanged.
+     * <p>
+     * This may be called on formats that do not use named arguments.
+     * In this case the map will be queried for key Strings that
+     * represent argument indices, e.g. "0", "1", "2" etc.
+     *
+     * @param newFormats a map from String to Format providing new
+     *        formats for named arguments.
+     * @stable ICU 3.8
+     */
+    public void setFormatsByArgumentName(Map newFormats) {
+        for (int i = 0; i <= maxOffset; i++) {
+            if (newFormats.containsKey(argumentNames[i])) {
+                Format f = (Format)newFormats.get(argumentNames[i]);
+                formats[i] = f;
+            }
+        }
+    }
+
+    /**
+     * Sets the formats to use for the format elements in the
+     * previously set pattern string.
+     * The order of formats in <code>newFormats</code> corresponds to
+     * the order of format elements in the pattern string.
+     * <p>
+     * If more formats are provided than needed by the pattern string,
+     * the remaining ones are ignored. If fewer formats are provided
+     * than needed, then only the first <code>newFormats.length</code>
+     * formats are replaced.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it is generally better to use the
+     * {@link #setFormatsByArgumentIndex setFormatsByArgumentIndex}
+     * method, which assumes an order of formats corresponding to the
+     * order of elements in the <code>arguments</code> array passed to
+     * the <code>format</code> methods or the result array returned by
+     * the <code>parse</code> methods.
+     *
+     * @param newFormats the new formats to use
+     * @exception NullPointerException if <code>newFormats</code> is null
+     * @stable ICU 3.0
+     */
+    public void setFormats(Format[] newFormats) {
+        int runsToCopy = newFormats.length;
+        if (runsToCopy > maxOffset + 1) {
+            runsToCopy = maxOffset + 1;
+        }
+        for (int i = 0; i < runsToCopy; i++) {
+            formats[i] = newFormats[i];
+        }
+    }
+
+    /**
+     * Sets the format to use for the format elements within the
+     * previously set pattern string that use the given argument
+     * index.
+     * The argument index is part of the format element definition and
+     * represents an index into the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If the argument index is used for more than one format element
+     * in the pattern string, then the new format is used for all such
+     * format elements. If the argument index is not used for any format
+     * element in the pattern string, then the new format is ignored.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @param argumentIndex
+     *            the argument index for which to use the new format
+     * @param newFormat
+     *            the new format to use
+     * @exception IllegalArgumentException
+     *            if alphanumeric arguments where used in MessageFormat.
+     * @stable ICU 3.0
+     */
+    public void setFormatByArgumentIndex(int argumentIndex, Format newFormat) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        for (int j = 0; j <= maxOffset; j++) {
+            if (Integer.parseInt(argumentNames[j]) == argumentIndex) {
+                formats[j] = newFormat;
+            }
+        }
+    }
+
+    /**
+     * Sets the format to use for the format elements within the
+     * previously set pattern string that use the given argument
+     * name.
+     * <p>
+     * If the argument name is used for more than one format element
+     * in the pattern string, then the new format is used for all such
+     * format elements. If the argument name is not used for any format
+     * element in the pattern string, then the new format is ignored.
+     * <p>
+     * This API may be used on formats that do not use named arguments.
+     * In this case <code>argumentName</code> should be a String that names
+     * an argument index, e.g. "0", "1", "2"... etc.  If it does not name
+     * a valid index, the format will be ignored.  No error is thrown.
+     *
+     * @param argumentName the name of the argument to change
+     * @param newFormat the new format to use
+     * @stable ICU 3.8
+     */
+    public void setFormatByArgumentName(String argumentName, Format newFormat) {
+        for (int i = 0; i < maxOffset; ++i) {
+            if (argumentName.equals(argumentNames[i])) {
+                formats[i] = newFormat;
+            }
+        }
+    }
+
+    /**
+     * Sets the format to use for the format element with the given
+     * format element index within the previously set pattern string.
+     * The format element index is the zero-based number of the format
+     * element counting from the start of the pattern string.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it is generally better to use the
+     * {@link #setFormatByArgumentIndex setFormatByArgumentIndex}
+     * method, which accesses format elements based on the argument
+     * index they specify.
+     *
+     * @param formatElementIndex the index of a format element within the pattern
+     * @param newFormat the format to use for the specified format element
+     * @exception ArrayIndexOutOfBoundsException if formatElementIndex is equal to or
+     *            larger than the number of format elements in the pattern string
+     * @stable ICU 3.0
+     */
+    public void setFormat(int formatElementIndex, Format newFormat) {
+        formats[formatElementIndex] = newFormat;
+    }
+
+    /**
+     * Gets the formats used for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The indices of elements in the returned array
+     * correspond to the argument indices used in the previously set
+     * pattern string.
+     * The order of formats in the returned array thus corresponds to
+     * the order of elements in the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If an argument index is used for more than one format element
+     * in the pattern string, then the format used for the last such
+     * format element is returned in the array. If an argument index
+     * is not used for any format element in the pattern string, then
+     * null is returned in the array.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @return the formats used for the arguments within the pattern
+     * @throws IllegalArgumentException
+     *         if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Format[] getFormatsByArgumentIndex() {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        int maximumArgumentNumber = -1;
+        for (int i = 0; i <= maxOffset; i++) {
+            int argumentNumber = Integer.parseInt(argumentNames[i]);
+            if (argumentNumber > maximumArgumentNumber) {
+                maximumArgumentNumber = argumentNumber;
+            }
+        }
+        Format[] resultArray = new Format[maximumArgumentNumber + 1];
+        for (int i = 0; i <= maxOffset; i++) {
+            resultArray[Integer.parseInt(argumentNames[i])] = formats[i];
+        }
+        return resultArray;
+    }
+    // TODO: provide method public Map getFormatsByArgumentName().
+    // Where Map is: String argumentName --> Format format.
+
+    /**
+     * Gets the formats used for the format elements in the
+     * previously set pattern string.
+     * The order of formats in the returned array corresponds to
+     * the order of format elements in the pattern string.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it's generally better to use the
+     * {@link #getFormatsByArgumentIndex()}
+     * method, which assumes an order of formats corresponding to the
+     * order of elements in the <code>arguments</code> array passed to
+     * the <code>format</code> methods or the result array returned by
+     * the <code>parse</code> methods.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @return the formats used for the format elements in the pattern
+     * @stable ICU 3.0
+     */
+    public Format[] getFormats() {
+        Format[] resultArray = new Format[maxOffset + 1];
+        System.arraycopy(formats, 0, resultArray, 0, maxOffset + 1);
+        return resultArray;
+    }
+
+    /**
+     * Formats an array of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * <p>
+     * The text substituted for the individual format elements is derived from
+     * the current subformat of the format element and the
+     * <code>arguments</code> element at the format element's argument index
+     * as indicated by the first matching line of the following table. An
+     * argument is <i>unavailable</i> if <code>arguments</code> is
+     * <code>null</code> or has fewer than argumentIndex+1 elements.  When
+     * an argument is unavailable no substitution is performed.
+     * <p>
+     * <table border=1>
+     *    <tr>
+     *       <th>Subformat
+     *       <th>Argument
+     *       <th>Formatted Text
+     *    <tr>
+     *       <td><i>any</i>
+     *       <td><i>unavailable</i>
+     *       <td><code>"{" + argumentIndex + "}"</code>
+     *    <tr>
+     *       <td><i>any</i>
+     *       <td><code>null</code>
+     *       <td><code>"null"</code>
+     *    <tr>
+     *       <td><code>instanceof ChoiceFormat</code>
+     *       <td><i>any</i>
+     *       <td><code>subformat.format(argument).indexOf('{') >= 0 ?<br>
+     *           (new MessageFormat(subformat.format(argument), getLocale())).format(argument) :
+     *           subformat.format(argument)</code>
+     *    <tr>
+     *       <td><code>!= null</code>
+     *       <td><i>any</i>
+     *       <td><code>subformat.format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof Number</code>
+     *       <td><code>NumberFormat.getInstance(getLocale()).format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof Date</code>
+     *       <td><code>DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof String</code>
+     *       <td><code>argument</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><i>any</i>
+     *       <td><code>argument.toString()</code>
+     * </table>
+     * <p>
+     * If <code>pos</code> is non-null, and refers to
+     * <code>Field.ARGUMENT</code>, the location of the first formatted
+     * string will be returned.
+     *
+     * This method is only supported when the format does not use named
+     * arguments, otherwise an IllegalArgumentException is thrown.
+     *
+     * @param arguments an array of objects to be formatted and substituted.
+     * @param result where text is appended.
+     * @param pos On input: an alignment field, if desired.
+     *            On output: the offsets of the alignment field.
+     * @throws IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     * @throws IllegalArgumentException
+     *            if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public final StringBuffer format(Object[] arguments, StringBuffer result,
+                                     FieldPosition pos)
+    {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                  "This method is not available in MessageFormat objects " +
+                  "that use alphanumeric argument names.");
+        }
+        return subformat(arguments, result, pos, null);
+    }
+
+    /**
+     * Formats a map of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * <p>
+     * The text substituted for the individual format elements is derived from
+     * the current subformat of the format element and the
+     * <code>arguments</code> value corresopnding to the format element's
+     * argument name.
+     * <p>
+     * This API may be called on formats that do not use named arguments.
+     * In this case the the keys in <code>arguments</code> must be numeric
+     * strings (e.g. "0", "1", "2"...).
+     * <p>
+     * An argument is <i>unavailable</i> if <code>arguments</code> is
+     * <code>null</code> or does not have a value corresponding to an argument
+     * name in the pattern.  When an argument is unavailable no substitution
+     * is performed.
+     *
+     * @param arguments a map of objects to be formatted and substituted.
+     * @param result where text is appended.
+     * @param pos On input: an alignment field, if desired.
+     *            On output: the offsets of the alignment field.
+     * @throws IllegalArgumentException if an argument in the
+     *         <code>arguments</code> array is not of the type
+     *         expected by the format element(s) that use it.
+     * @return the passed-in StringBuffer
+     * @stable ICU 3.8
+     */
+    public final StringBuffer format(Map arguments, StringBuffer result,
+                                     FieldPosition pos) {
+        return subformat(arguments, result, pos, null);
+    }
+
+    /**
+     * Creates a MessageFormat with the given pattern and uses it
+     * to format the given arguments. This is equivalent to
+     * <blockquote>
+     *     <code>(new {@link #MessageFormat(String) MessageFormat}(pattern)).{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+     * </blockquote>
+     *
+     * @throws IllegalArgumentException if the pattern is invalid,
+     *            or if an argument in the <code>arguments</code> array
+     *            is not of the type expected by the format element(s)
+     *            that use it.
+     * @throws IllegalArgumentException
+     *            if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public static String format(String pattern, Object[] arguments) {
+        MessageFormat temp = new MessageFormat(pattern);
+        return temp.format(arguments);
+    }
+
+    /**
+     * Creates a MessageFormat with the given pattern and uses it to
+     * format the given arguments.  The pattern must identifyarguments
+     * by name instead of by number.
+     * <p>
+     * @throws IllegalArgumentException if the pattern is invalid,
+     *         or if an argument in the <code>arguments</code> map
+     *         is not of the type expected by the format element(s)
+     *         that use it.
+     * @see #format(Map, StringBuffer, FieldPosition)
+     * @see #format(String, Object[])
+     * @stable ICU 3.8
+     */
+    public static String format(String pattern, Map arguments) {
+        MessageFormat temp = new MessageFormat(pattern);
+        return temp.format(arguments);
+    }
+
+    /**
+     * Returns true if this MessageFormat uses named arguments,
+     * and false otherwise.  See class description.
+     *
+     * @return true if named arguments are used.
+     * @stable ICU 3.8
+     */
+    public boolean usesNamedArguments() {
+        return !argumentNamesAreNumeric;
+    }
+
+    // Overrides
+    /**
+     * Formats a map or array of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * This is equivalent to either of
+     * <blockquote>
+     *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}((Object[]) arguments, result, pos)</code>
+     *     <code>{@link #format(java.util.Map, java.lang.StringBuffer, java.text.FieldPosition) format}((Map) arguments, result, pos)</code>
+     * </blockquote>
+     * A map must be provided if this format uses named arguments, otherwise
+     * an IllegalArgumentException will be thrown.
+     * @param arguments a map or array of objects to be formatted
+     * @param result where text is appended
+     * @param pos On input: an alignment field, if desired
+     *            On output: the offsets of the alignment field
+     * @throws IllegalArgumentException if an argument in
+     *         <code>arguments</code> is not of the type
+     *         expected by the format element(s) that use it
+     * @throws IllegalArgumentException if <code>arguments<code> is
+     *         an array of Object and this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public final StringBuffer format(Object arguments, StringBuffer result,
+                                     FieldPosition pos)
+    {
+        if ((arguments == null || arguments instanceof Map)) {
+            return subformat((Map) arguments, result, pos, null);
+        } else {
+            if (!argumentNamesAreNumeric) {
+                throw new IllegalArgumentException(
+                        "This method is not available in MessageFormat objects " +
+                        "that use alphanumeric argument names.");
+            }
+            return subformat((Object[]) arguments, result, pos, null);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Formats an array of objects and inserts them into the
+     * <code>MessageFormat</code>'s pattern, producing an
+     * <code>AttributedCharacterIterator</code>.
+     * You can use the returned <code>AttributedCharacterIterator</code>
+     * to build the resulting String, as well as to determine information
+     * about the resulting String.
+     * <p>
+     * The text of the returned <code>AttributedCharacterIterator</code> is
+     * the same that would be returned by
+     * <blockquote>
+     *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+     * </blockquote>
+     * <p>
+     * In addition, the <code>AttributedCharacterIterator</code> contains at
+     * least attributes indicating where text was generated from an
+     * argument in the <code>arguments</code> array. The keys of these attributes are of
+     * type <code>MessageFormat.Field</code>, their values are
+     * <code>Integer</code> objects indicating the index in the <code>arguments</code>
+     * array of the argument from which the text was generated.
+     * <p>
+     * The attributes/value from the underlying <code>Format</code>
+     * instances that <code>MessageFormat</code> uses will also be
+     * placed in the resulting <code>AttributedCharacterIterator</code>.
+     * This allows you to not only find where an argument is placed in the
+     * resulting String, but also which fields it contains in turn.
+     *
+     * @param arguments an array of objects to be formatted and substituted.
+     * @return AttributedCharacterIterator describing the formatted value.
+     * @exception NullPointerException if <code>arguments</code> is null.
+     * @exception IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     * @stable ICU 3.8
+     */
+    public AttributedCharacterIterator formatToCharacterIterator(Object arguments) {
+        StringBuffer result = new StringBuffer();
+        ArrayList iterators = new ArrayList();
+
+        if (arguments == null) {
+            throw new NullPointerException(
+                   "formatToCharacterIterator must be passed non-null object");
+        }
+        if (arguments instanceof Map) {
+            subformat((Map)arguments, result, null, iterators);
+        } else {
+            subformat((Object[]) arguments, result, null, iterators);
+        }
+        if (iterators.size() == 0) {
+            return _createAttributedCharacterIterator("");
+        }
+        return _createAttributedCharacterIterator(
+                     (AttributedCharacterIterator[])iterators.toArray(
+                     new AttributedCharacterIterator[iterators.size()]));
+    }
+//#endif
+
+    /**
+     * Parses the string.
+     *
+     * <p>Caveats: The parse may fail in a number of circumstances.
+     * For example:
+     * <ul>
+     * <li>If one of the arguments does not occur in the pattern.
+     * <li>If the format of an argument loses information, such as
+     *     with a choice format where a large number formats to "many".
+     * <li>Does not yet handle recursion (where
+     *     the substituted strings contain {n} references.)
+     * <li>Will not always find a match (or the correct match)
+     *     if some part of the parse is ambiguous.
+     *     For example, if the pattern "{1},{2}" is used with the
+     *     string arguments {"a,b", "c"}, it will format as "a,b,c".
+     *     When the result is parsed, it will return {"a", "b,c"}.
+     * <li>If a single argument is parsed more than once in the string,
+     *     then the later parse wins.
+     * </ul>
+     * When the parse fails, use ParsePosition.getErrorIndex() to find out
+     * where in the string did the parsing failed. The returned error
+     * index is the starting offset of the sub-patterns that the string
+     * is comparing with. For example, if the parsing string "AAA {0} BBB"
+     * is comparing against the pattern "AAD {0} BBB", the error index is
+     * 0. When an error occurs, the call to this method will return null.
+     * If the source is null, return an empty array.
+     * <p>
+     * This method is only supported with numbered arguments.  If
+     * the format pattern used named argument an
+     * IllegalArgumentException is thrown.
+     *
+     * @throws IllegalArgumentException if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Object[] parse(String source, ParsePosition pos) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use named argument.");
+        }
+        Map objectMap = parseToMap(source, pos);
+        int maximumArgumentNumber = -1;
+        for (int i = 0; i <= maxOffset; i++) {
+            int argumentNumber = Integer.parseInt(argumentNames[i]);
+            if (argumentNumber > maximumArgumentNumber) {
+                maximumArgumentNumber = argumentNumber;
+            }
+        }
+
+        if (objectMap == null) {
+            return null;
+        }
+
+        Object[] resultArray = new Object[maximumArgumentNumber + 1];
+        Iterator keyIter = objectMap.keySet().iterator();
+        while (keyIter.hasNext()) {
+            String key = (String) keyIter.next();
+            resultArray[Integer.parseInt(key)] = objectMap.get(key);
+        }
+
+        return resultArray;
+    }
+
+    /**
+     * Parses the string, returning the results in a Map.
+     * This is similar to the version that returns an array
+     * of Object.  This supports both named and numbered
+     * arguments-- if numbered, the keys in the map are the
+     * corresponding Strings (e.g. "0", "1", "2"...).
+     *
+     * @param source the text to parse
+     * @param pos the position at which to start parsing.  on return,
+     *        contains the result of the parse.
+     * @return a Map containing key/value pairs for each parsed argument.
+     * @stable ICU 3.8
+     */
+    public Map parseToMap(String source, ParsePosition pos) {
+        if (source == null) {
+            Map empty = new HashMap();
+            return empty;
+        }
+
+//        int maximumArgumentNumber = -1;
+//        for (int i = 0; i <= maxOffset; i++) {
+//           int argumentNumber = Integer.parseInt(argumentNames[i]);
+//           if (argumentNumber > maximumArgumentNumber) {
+//               maximumArgumentNumber = argumentNumber;
+//           }
+//         }
+//        Object[] resultArray = new Object[maximumArgumentNumber + 1];
+
+        Map resultMap = new HashMap();
+
+        int patternOffset = 0;
+        int sourceOffset = pos.getIndex();
+        ParsePosition tempStatus = new ParsePosition(0);
+        for (int i = 0; i <= maxOffset; ++i) {
+            // match up to format
+            int len = offsets[i] - patternOffset;
+            if (len == 0 || pattern.regionMatches(patternOffset,
+                                                  source, sourceOffset, len)) {
+                sourceOffset += len;
+                patternOffset += len;
+            } else {
+                pos.setErrorIndex(sourceOffset);
+                return null; // leave index as is to signal error
+            }
+
+            // now use format
+            if (formats[i] == null) {   // string format
+                // if at end, use longest possible match
+                // otherwise uses first match to intervening string
+                // does NOT recursively try all possibilities
+                int tempLength = (i != maxOffset) ? offsets[i+1] : pattern.length();
+
+                int next;
+                if (patternOffset >= tempLength) {
+                    next = source.length();
+                }else{
+                    next = source.indexOf( pattern.substring(patternOffset,tempLength), sourceOffset);
+                }
+
+                if (next < 0) {
+                    pos.setErrorIndex(sourceOffset);
+                    return null; // leave index as is to signal error
+                } else {
+                    String strValue = source.substring(sourceOffset, next);
+                    if (!strValue.equals("{" + argumentNames[i] + "}"))
+                        resultMap.put(argumentNames[i], source.substring(sourceOffset, next));
+//                        resultArray[Integer.parseInt(argumentNames[i])] =
+//                            source.substring(sourceOffset, next);
+                    sourceOffset = next;
+                }
+            } else {
+                tempStatus.setIndex(sourceOffset);
+                resultMap.put(argumentNames[i], formats[i].parseObject(source, tempStatus));
+//                resultArray[Integer.parseInt(argumentNames[i])] =
+//                    formats[i].parseObject(source, tempStatus);
+                if (tempStatus.getIndex() == sourceOffset) {
+                    pos.setErrorIndex(sourceOffset);
+                    return null; // leave index as is to signal error
+                }
+                sourceOffset = tempStatus.getIndex(); // update
+            }
+        }
+        int len = pattern.length() - patternOffset;
+        if (len == 0 || pattern.regionMatches(patternOffset,
+                                              source, sourceOffset, len)) {
+            pos.setIndex(sourceOffset + len);
+        } else {
+            pos.setErrorIndex(sourceOffset);
+            return null; // leave index as is to signal error
+        }
+        return resultMap;
+    }
+
+    /**
+     * Parses text from the beginning of the given string to produce an object
+     * array.
+     * The method may not use the entire text of the given string.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code> whose beginning should be parsed.
+     * @return An <code>Object</code> array parsed from the string.
+     * @exception ParseException
+     *                if the beginning of the specified string cannot be parsed.
+     * @exception IllegalArgumentException
+     *                if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Object[] parse(String source) throws ParseException {
+        ParsePosition pos = new ParsePosition(0);
+        Object[] result = parse(source, pos);
+        if (pos.getIndex() == 0) // unchanged, returned object is null
+            throw new ParseException("MessageFormat parse error!",
+                                     pos.getErrorIndex());
+
+        return result;
+    }
+
+    /**
+     * Parses text from the beginning of the given string to produce a map from
+     * argument to values. The method may not use the entire text of the given string.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code> whose beginning should be parsed.
+     * @return A <code>Map</code> parsed from the string.
+     * @throws ParseException if the beginning of the specified string cannot
+     *         be parsed.
+     * @see #parseToMap(String, ParsePosition)
+     * @stable ICU 3.8
+     */
+    public Map parseToMap(String source) throws ParseException {
+
+        ParsePosition pos = new ParsePosition(0);
+        Map result = parseToMap(source, pos);
+        if (pos.getIndex() == 0) // unchanged, returned object is null
+            throw new ParseException("MessageFormat parse error!",
+                                     pos.getErrorIndex());
+
+        return result;
+    }
+
+    /**
+     * Parses text from a string to produce an object array or Map.
+     * <p>
+     * The method attempts to parse text starting at the index given by
+     * <code>pos</code>.
+     * If parsing succeeds, then the index of <code>pos</code> is updated
+     * to the index after the last character used (parsing does not necessarily
+     * use all characters up to the end of the string), and the parsed
+     * object array is returned. The updated <code>pos</code> can be used to
+     * indicate the starting point for the next call to this method.
+     * If an error occurs, then the index of <code>pos</code> is not
+     * changed, the error index of <code>pos</code> is set to the index of
+     * the character where the error occurred, and null is returned.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code>, part of which should be parsed.
+     * @param pos A <code>ParsePosition</code> object with index and error
+     *            index information as described above.
+     * @return An <code>Object</code> parsed from the string, either an
+     *         array of Object, or a Map, depending on whether named
+     *         arguments are used.  This can be queried using <code>usesNamedArguments</code>.
+     *         In case of error, returns null.
+     * @throws NullPointerException if <code>pos</code> is null.
+     * @stable ICU 3.0
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        if (argumentNamesAreNumeric) {
+            return parse(source, pos);
+        } else {
+            return parseToMap(source, pos);
+        }
+    }
+
+    /**
+     * Creates and returns a copy of this object.
+     *
+     * @return a clone of this instance.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        MessageFormat other = (MessageFormat) super.clone();
+
+        // clone arrays. Can't do with utility because of bug in Cloneable
+        other.formats = (Format[]) formats.clone(); // shallow clone
+        for (int i = 0; i < formats.length; ++i) {
+            if (formats[i] != null)
+                other.formats[i] = (Format) formats[i].clone();
+        }
+        // for primitives or immutables, shallow clone is enough
+        other.offsets = (int[]) offsets.clone();
+        other.argumentNames = (String[]) argumentNames.clone();
+        other.argumentNamesAreNumeric = argumentNamesAreNumeric;
+
+        return other;
+    }
+
+    /**
+     * Equality comparison between two message format objects
+     * @stable ICU 3.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (obj == null || getClass() != obj.getClass())
+            return false;
+        MessageFormat other = (MessageFormat) obj;
+        return (maxOffset == other.maxOffset
+                && pattern.equals(other.pattern)
+                && Utility.objectEquals(ulocale, other.ulocale) // does null check
+                && Utility.arrayEquals(offsets, other.offsets)
+                && Utility.arrayEquals(argumentNames, other.argumentNames)
+                && Utility.arrayEquals(formats, other.formats)
+                && (argumentNamesAreNumeric == other.argumentNamesAreNumeric));
+    }
+
+    /**
+     * Generates a hash code for the message format object.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return pattern.hashCode(); // enough for reasonable distribution
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Defines constants that are used as attribute keys in the
+     * <code>AttributedCharacterIterator</code> returned
+     * from <code>MessageFormat.formatToCharacterIterator</code>.
+     *
+     * @stable ICU 3.8
+     */
+    public static class Field extends Format.Field {
+
+        private static final long serialVersionUID = 7510380454602616157L;
+
+        /**
+         * Create a <code>Field</code> with the specified name.
+         *
+         * @param name The name of the attribute
+         *
+         * @stable ICU 3.8
+         */
+        protected Field(String name) {
+            super(name);
+        }
+
+        /**
+         * Resolves instances being deserialized to the predefined constants.
+         *
+         * @return resolved MessageFormat.Field constant
+         * @throws InvalidObjectException if the constant could not be resolved.
+         *
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getClass() != MessageFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of MessageFormat.Field must implement readResolve.");
+            }
+            if (this.getName().equals(ARGUMENT.getName())) {
+                return ARGUMENT;
+            } else {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+        }
+
+        /**
+         * Constant identifying a portion of a message that was generated
+         * from an argument passed into <code>formatToCharacterIterator</code>.
+         * The value associated with the key will be an <code>Integer</code>
+         * indicating the index in the <code>arguments</code> array of the
+         * argument from which the text was generated.
+         *
+         * @stable ICU 3.8
+         */
+        public static final Field ARGUMENT = new Field("message argument field");
+
+    }
+//#endif
+
+    // ===========================privates============================
+
+    /**
+     * The locale to use for formatting numbers and dates.
+     * This is no longer used, and here only for serialization compatibility.
+     * @serial
+     */
+    private Locale locale;
+
+    /**
+     * The locale to use for formatting numbers and dates.
+     * @serial
+     */
+    private ULocale ulocale;
+
+    /**
+     * The string that the formatted values are to be plugged into.  In other words, this
+     * is the pattern supplied on construction with all of the {} expressions taken out.
+     * @serial
+     */
+    private String pattern = "";
+
+    /** The initially expected number of subformats in the format */
+    private static final int INITIAL_FORMATS = 10;
+
+    /**
+     * An array of formatters, which are used to format the arguments.
+     * @serial
+     */
+    private Format[] formats = new Format[INITIAL_FORMATS];
+
+    /**
+     * The positions where the results of formatting each argument are to be
+     * inserted into the pattern.
+     *
+     * @serial
+     */
+    private int[] offsets = new int[INITIAL_FORMATS];
+
+    /**
+     * The argument numbers corresponding to each formatter.  (The formatters are stored
+     * in the order they occur in the pattern, not in the order in which the arguments
+     * are specified.)
+     * @serial
+     */
+    // retained for backwards compatibility
+    private int[] argumentNumbers = new int[INITIAL_FORMATS];
+
+    /**
+     * The argument names corresponding to each formatter. (The formatters are
+     * stored in the order they occur in the pattern, not in the order in which
+     * the arguments are specified.)
+     *
+     * @serial
+     */
+    private String[] argumentNames = new String[INITIAL_FORMATS];
+
+    /**
+     * Is true iff all argument names are non-negative numbers.
+     *
+     * @serial
+     */
+    private boolean argumentNamesAreNumeric = true;
+
+    /**
+     * One less than the number of entries in <code>offsets</code>.  Can also be thought of
+     * as the index of the highest-numbered element in <code>offsets</code> that is being used.
+     * All of these arrays should have the same number of elements being used as <code>offsets</code>
+     * does, and so this variable suffices to tell us how many entries are in all of them.
+     * @serial
+     */
+    private int maxOffset = -1;
+
+    /**
+     * Internal routine used by format. If <code>characterIterators</code> is
+     * non-null, AttributedCharacterIterator will be created from the
+     * subformats as necessary. If <code>characterIterators</code> is null
+     * and <code>fp</code> is non-null and identifies
+     * <code>Field.MESSAGE_ARGUMENT</code>, the location of
+     * the first replaced argument will be set in it.
+     *
+     * @exception IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     */
+    private StringBuffer subformat(Object[] arguments, StringBuffer result,
+                                   FieldPosition fp, List characterIterators) {
+        return subformat(arrayToMap(arguments), result, fp, characterIterators);
+    }
+
+    /**
+     * Internal routine used by format.
+     *
+     * @throws IllegalArgumentException if an argument in the
+     *         <code>arguments</code> map is not of the type
+     *         expected by the format element(s) that use it.
+     */
+    private StringBuffer subformat(Map arguments, StringBuffer result,
+                                   FieldPosition fp, List characterIterators) {
+        // note: this implementation assumes a fast substring & index.
+        // if this is not true, would be better to append chars one by one.
+        int lastOffset = 0;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        int last = result.length();
+//#endif
+        for (int i = 0; i <= maxOffset; ++i) {
+            result.append(pattern.substring(lastOffset, offsets[i]));
+            lastOffset = offsets[i];
+            String argumentName = argumentNames[i];
+            if (arguments == null || arguments.get(argumentName) == null) {
+                result.append("{" + argumentName + "}");
+                continue;
+            }
+            // int argRecursion = ((recursionProtection >> (argumentNumber*2)) & 0x3);
+            if (false) { // if (argRecursion == 3){
+                // prevent loop!!!
+                result.append('\uFFFD');
+            } else {
+                Object obj = arguments.get(argumentName);
+                String arg = null;
+                Format subFormatter = null;
+                if (obj == null) {
+                    arg = "null";
+                } else if (formats[i] != null) {
+                    subFormatter = formats[i];
+                    if (subFormatter instanceof ChoiceFormat
+                        || subFormatter instanceof PluralFormat) {
+                        arg = formats[i].format(obj);
+                        // TODO: This should be made more robust.
+                        //       Does this work with '{' in quotes?
+                        if (arg.indexOf('{') >= 0) {
+                            subFormatter = new MessageFormat(arg, ulocale);
+                            obj = arguments;
+                            arg = null;
+                        }
+                    }
+                } else if (obj instanceof Number) {
+                    // format number if can
+                    subFormatter = NumberFormat.getInstance(ulocale);
+                } else if (obj instanceof Date) {
+                    // format a Date if can
+                    subFormatter = DateFormat.getDateTimeInstance(
+                             DateFormat.SHORT, DateFormat.SHORT, ulocale);//fix
+                } else if (obj instanceof String) {
+                    arg = (String) obj;
+
+                } else {
+                    arg = obj.toString();
+                    if (arg == null) arg = "null";
+                }
+
+                // At this point we are in two states, either subFormatter
+                // is non-null indicating we should format obj using it,
+                // or arg is non-null and we should use it as the value.
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                if (subFormatter != null) {
+//##                    arg = subFormatter.format(obj);
+//##                }
+//##                result.append(arg);
+//#else
+                if (characterIterators != null) {
+                    // If characterIterators is non-null, it indicates we need
+                    // to get the CharacterIterator from the child formatter.
+                    if (last != result.length()) {
+                        characterIterators.add(
+                            _createAttributedCharacterIterator(result.substring
+                                                              (last)));
+                        last = result.length();
+                    }
+                    if (subFormatter != null) {
+                        AttributedCharacterIterator subIterator =
+                                   subFormatter.formatToCharacterIterator(obj);
+
+                        append(result, subIterator);
+                        if (last != result.length()) {
+                            characterIterators.add(
+                                         _createAttributedCharacterIterator(
+                                         subIterator, Field.ARGUMENT,
+                                         argumentNamesAreNumeric ? (Object)new Integer(argumentName) : (Object)argumentName));
+                            last = result.length();
+                        }
+                        arg = null;
+                    }
+                    if (arg != null && arg.length() > 0) {
+                        result.append(arg);
+                        characterIterators.add(
+                                 _createAttributedCharacterIterator(
+                                 arg, Field.ARGUMENT,
+                                 argumentNamesAreNumeric ? (Object)new Integer(argumentName) : (Object)argumentName));
+                        last = result.length();
+                    }
+                } else {
+                    if (subFormatter != null) {
+                        arg = subFormatter.format(obj);
+                    }
+                    last = result.length();
+                    result.append(arg);
+                    if (i == 0 && fp != null && Field.ARGUMENT.equals(
+                                  fp.getFieldAttribute())) {
+                        fp.setBeginIndex(last);
+                        fp.setEndIndex(result.length());
+                    }
+                    last = result.length();
+                }
+//#endif
+            }
+        }
+        result.append(pattern.substring(lastOffset, pattern.length()));
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        if (characterIterators != null && last != result.length()) {
+            characterIterators.add(_createAttributedCharacterIterator(
+                                   result.substring(last)));
+        }
+//#endif
+        return result;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Convenience method to append all the characters in
+     * <code>iterator</code> to the StringBuffer <code>result</code>.
+     */
+    private void append(StringBuffer result, CharacterIterator iterator) {
+        if (iterator.first() != CharacterIterator.DONE) {
+            char aChar;
+
+            result.append(iterator.first());
+            while ((aChar = iterator.next()) != CharacterIterator.DONE) {
+                result.append(aChar);
+            }
+        }
+    }
+//#endif
+
+    private static final String[] typeList =
+        {"", "number", "date", "time", "choice", "spellout", "ordinal",
+         "duration", "plural"};
+    private static final int
+        TYPE_EMPTY = 0,
+        TYPE_NUMBER = 1,
+        TYPE_DATE = 2,
+        TYPE_TIME = 3,
+        TYPE_CHOICE = 4,
+        TYPE_SPELLOUT = 5,
+        TYPE_ORDINAL = 6,
+        TYPE_DURATION = 7,
+        TYPE_PLURAL = 8;
+
+    private static final String[] modifierList =
+        {"", "currency", "percent", "integer"};
+
+    private static final int
+        MODIFIER_EMPTY = 0,
+        MODIFIER_CURRENCY = 1,
+        MODIFIER_PERCENT = 2,
+        MODIFIER_INTEGER = 3;
+
+    private static final String[] dateModifierList =
+        {"", "short", "medium", "long", "full"};
+
+    private static final int
+        DATE_MODIFIER_EMPTY = 0,
+        DATE_MODIFIER_SHORT = 1,
+        DATE_MODIFIER_MEDIUM = 2,
+        DATE_MODIFIER_LONG = 3,
+        DATE_MODIFIER_FULL = 4;
+
+    private void makeFormat(int position, int offsetNumber,
+                            StringBuffer[] segments)
+    {
+        // get the argument number
+        // int argumentNumber;
+        // try {
+        //     argumentNumber = Integer.parseInt(segments[1].toString()); // always unlocalized!
+        // } catch (NumberFormatException e) {
+        //    throw new IllegalArgumentException("can't parse argument number "
+        //            + segments[1]);
+        //}
+        // if (argumentNumber < 0) {
+        //    throw new IllegalArgumentException("negative argument number "
+        //            + argumentNumber);
+        //}
+
+        // resize format information arrays if necessary
+        if (offsetNumber >= formats.length) {
+            int newLength = formats.length * 2;
+            Format[] newFormats = new Format[newLength];
+            int[] newOffsets = new int[newLength];
+            String[] newArgumentNames = new String[newLength];
+            System.arraycopy(formats, 0, newFormats, 0, maxOffset + 1);
+            System.arraycopy(offsets, 0, newOffsets, 0, maxOffset + 1);
+            System.arraycopy(argumentNames, 0, newArgumentNames, 0,
+                    maxOffset + 1);
+            formats = newFormats;
+            offsets = newOffsets;
+            argumentNames = newArgumentNames;
+        }
+        int oldMaxOffset = maxOffset;
+        maxOffset = offsetNumber;
+        offsets[offsetNumber] = segments[0].length();
+        argumentNames[offsetNumber] = segments[1].toString();
+        // All argument names numeric ?
+        int argumentNumber;
+        try {
+            // always unlocalized!
+             argumentNumber = Integer.parseInt(segments[1].toString());
+         } catch (NumberFormatException e) {
+             argumentNumber = -1;
+         }
+         if (offsetNumber == 0) {
+             // First argument determines whether all argument identifiers have
+             // to be numbers or (IDStartChars IDContChars*) strings.
+             argumentNamesAreNumeric = argumentNumber >= 0;
+         }
+
+         if (argumentNamesAreNumeric && argumentNumber < 0 ||
+             !argumentNamesAreNumeric &&
+             !isAlphaIdentifier(argumentNames[offsetNumber])) {
+             throw new IllegalArgumentException(
+                     "All argument identifiers have to be either non-negative " +
+                     "numbers or strings following the pattern " +
+                     "([:ID_Start:] [:ID_Continue:]*).\n" +
+                     "For more details on these unicode sets, visit " +
+                     "http://demo.icu-project.org/icu-bin/ubrowse");
+         }
+
+        // now get the format
+        Format newFormat = null;
+        switch (findKeyword(segments[2].toString(), typeList)) {
+        case TYPE_EMPTY:
+            break;
+        case TYPE_NUMBER:
+            switch (findKeyword(segments[3].toString(), modifierList)) {
+            case MODIFIER_EMPTY:
+                newFormat = NumberFormat.getInstance(ulocale);
+                break;
+            case MODIFIER_CURRENCY:
+                newFormat = NumberFormat.getCurrencyInstance(ulocale);
+                break;
+            case MODIFIER_PERCENT:
+                newFormat = NumberFormat.getPercentInstance(ulocale);
+                break;
+            case MODIFIER_INTEGER:
+                newFormat = NumberFormat.getIntegerInstance(ulocale);
+                break;
+            default: // pattern
+                newFormat = new DecimalFormat(segments[3].toString(), new DecimalFormatSymbols(ulocale));
+                break;
+            }
+            break;
+        case TYPE_DATE:
+            switch (findKeyword(segments[3].toString(), dateModifierList)) {
+            case DATE_MODIFIER_EMPTY:
+                newFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_SHORT:
+                newFormat = DateFormat.getDateInstance(DateFormat.SHORT, ulocale);
+                break;
+            case DATE_MODIFIER_MEDIUM:
+                newFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_LONG:
+                newFormat = DateFormat.getDateInstance(DateFormat.LONG, ulocale);
+                break;
+            case DATE_MODIFIER_FULL:
+                newFormat = DateFormat.getDateInstance(DateFormat.FULL, ulocale);
+                break;
+            default:
+                newFormat = new SimpleDateFormat(segments[3].toString(), ulocale);
+                break;
+            }
+            break;
+        case TYPE_TIME:
+            switch (findKeyword(segments[3].toString(), dateModifierList)) {
+            case DATE_MODIFIER_EMPTY:
+                newFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_SHORT:
+                newFormat = DateFormat.getTimeInstance(DateFormat.SHORT, ulocale);
+                break;
+            case DATE_MODIFIER_MEDIUM:
+                newFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_LONG:
+                newFormat = DateFormat.getTimeInstance(DateFormat.LONG, ulocale);
+                break;
+            case DATE_MODIFIER_FULL:
+                newFormat = DateFormat.getTimeInstance(DateFormat.FULL, ulocale);
+                break;
+            default:
+                newFormat = new SimpleDateFormat(segments[3].toString(), ulocale);
+                break;
+            }
+            break;
+        case TYPE_CHOICE:
+            try {
+                newFormat = new ChoiceFormat(segments[3].toString());
+            } catch (Exception e) {
+                maxOffset = oldMaxOffset;
+                throw new IllegalArgumentException("Choice Pattern incorrect");
+            }
+            break;
+        case TYPE_SPELLOUT:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.SPELLOUT);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_ORDINAL:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.ORDINAL);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_DURATION:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.DURATION);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_PLURAL:
+            {
+                // PluralFormat does not handle quotes.
+                // Remove quotes.
+                // TODO: Should PluralFormat handle quotes?
+                StringBuffer unquotedPattern = new StringBuffer();
+                String quotedPattern = segments[3].toString();
+                boolean inQuote = false;
+                for (int i = 0; i < quotedPattern.length(); ++i) {
+                    char ch = quotedPattern.charAt(i);
+                    if (ch == '\'') {
+                        if (i+1 < quotedPattern.length() &&
+                            quotedPattern.charAt(i+1) == '\'') {
+                                unquotedPattern.append(ch);
+                                ++i;
+                            } else {
+                                inQuote = !inQuote;
+                            }
+                    } else {
+                        unquotedPattern.append(ch);
+                    }
+                }
+
+                PluralFormat pls = new PluralFormat(ulocale,
+                                                    unquotedPattern.toString());
+                newFormat = pls;
+            }
+            break;
+        default:
+            maxOffset = oldMaxOffset;
+            throw new IllegalArgumentException("unknown format type at ");
+        }
+        formats[offsetNumber] = newFormat;
+        segments[1].setLength(0);   // throw away other segments
+        segments[2].setLength(0);
+        segments[3].setLength(0);
+    }
+
+    private static final int findKeyword(String s, String[] list) {
+        s = s.trim().toLowerCase();
+        for (int i = 0; i < list.length; ++i) {
+            if (s.equals(list[i]))
+                return i;
+        }
+        return -1;
+    }
+
+    private static final void copyAndFixQuotes(String source, int start, int end, StringBuffer target) {
+        // added 'gotLB' logic from ICU4C - questionable [alan]
+        boolean gotLB = false;
+        for (int i = start; i < end; ++i) {
+            char ch = source.charAt(i);
+            if (ch == '{') {
+                target.append("'{'");
+                gotLB = true;
+            } else if (ch == '}') {
+                if (gotLB) {
+                    target.append(ch);
+                    gotLB = false;
+                } else {
+                    target.append("'}'");
+                }
+            } else if (ch == '\'') {
+                target.append("''");
+            } else {
+                target.append(ch);
+            }
+        }
+    }
+
+    /**
+     * After reading an object from the input stream, do a simple verification
+     * to maintain class invariants.
+     * @throws InvalidObjectException if the objects read from the stream is invalid.
+     */
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        if (argumentNames == null) { // name mod, rev
+          argumentNamesAreNumeric = true;
+          argumentNames = new String[argumentNumbers.length];
+          for (int i = 0; i < argumentNumbers.length; ++i) {
+            argumentNames[i] = String.valueOf(argumentNumbers[i]);
+          }
+        }
+        boolean isValid = maxOffset >= -1
+                && formats.length > maxOffset
+                && offsets.length > maxOffset
+                && argumentNames.length > maxOffset;
+        if (isValid) {
+            int lastOffset = pattern.length() + 1;
+            for (int i = maxOffset; i >= 0; --i) {
+                if ((offsets[i] < 0) || (offsets[i] > lastOffset)) {
+                    isValid = false;
+                    break;
+                } else {
+                    lastOffset = offsets[i];
+                }
+            }
+        }
+        if (!isValid) {
+            throw new InvalidObjectException("Could not reconstruct MessageFormat from corrupt stream.");
+        }
+        if (ulocale == null) {
+            ulocale = ULocale.forLocale(locale);
+        }
+    }
+
+    /**
+     * This is a helper method for converting an object array into a map. The
+     * key set of the map is [0, ..., array.length]. The value associated with
+     * each key is the ith entry of the passed object array.
+     *
+     * @throws InvalidObjectException
+     *             if the objects read from the stream is invalid.
+     */
+    private Map arrayToMap(Object[] array) {
+        Map map = new HashMap();
+        if (array != null) {
+            for (int i = 0; i < array.length; ++i) {
+                map.put(Integer.toString(i), array[i]);
+            }
+        }
+        return map;
+    }
+
+    private boolean isAlphaIdentifier(String argument) {
+        if (argument.length() == 0) {
+            return false;
+        }
+        for (int i = 0; i < argument.length(); ++i ) {
+            if (i == 0 && !IDStartChars.contains(argument.charAt(i)) ||
+                i > 0 &&  !IDContChars.contains(argument.charAt(i))){
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static final char SINGLE_QUOTE = '\'';
+    private static final char CURLY_BRACE_LEFT = '{';
+    private static final char CURLY_BRACE_RIGHT = '}';
+
+    private static final int STATE_INITIAL = 0;
+    private static final int STATE_SINGLE_QUOTE = 1;
+    private static final int STATE_IN_QUOTE = 2;
+    private static final int STATE_MSG_ELEMENT = 3;
+
+    private static UnicodeSet IDStartChars = new UnicodeSet("[:ID_Start:]");
+    private static UnicodeSet IDContChars = new UnicodeSet("[:ID_Continue:]");
+
+    /**
+     * Convert an 'apostrophe-friendly' pattern into a standard
+     * pattern.  Standard patterns treat all apostrophes as
+     * quotes, which is problematic in some languages, e.g.
+     * French, where apostrophe is commonly used.  This utility
+     * assumes that only an unpaired apostrophe immediately before
+     * a brace is a true quote.  Other unpaired apostrophes are paired,
+     * and the resulting standard pattern string is returned.
+     *
+     * <p><b>Note</b> it is not guaranteed that the returned pattern
+     * is indeed a valid pattern.  The only effect is to convert
+     * between patterns having different quoting semantics.
+     *
+     * @param pattern the 'apostrophe-friendly' patttern to convert
+     * @return the standard equivalent of the original pattern
+     * @stable ICU 3.4
+     */
+    public static String autoQuoteApostrophe(String pattern) {
+        StringBuffer buf = new StringBuffer(pattern.length() * 2);
+        int state = STATE_INITIAL;
+        int braceCount = 0;
+        for (int i = 0, j = pattern.length(); i < j; ++i) {
+            char c = pattern.charAt(i);
+            switch (state) {
+            case STATE_INITIAL:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_SINGLE_QUOTE;
+                    break;
+                case CURLY_BRACE_LEFT:
+                    state = STATE_MSG_ELEMENT;
+                    ++braceCount;
+                    break;
+                }
+                break;
+            case STATE_SINGLE_QUOTE:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_INITIAL;
+                    break;
+                case CURLY_BRACE_LEFT:
+                case CURLY_BRACE_RIGHT:
+                    state = STATE_IN_QUOTE;
+                    break;
+                default:
+                    buf.append(SINGLE_QUOTE);
+                    state = STATE_INITIAL;
+                    break;
+                }
+                break;
+            case STATE_IN_QUOTE:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_INITIAL;
+                    break;
+                }
+                break;
+            case STATE_MSG_ELEMENT:
+                switch (c) {
+                case CURLY_BRACE_LEFT:
+                    ++braceCount;
+                    break;
+                case CURLY_BRACE_RIGHT:
+                    if (--braceCount == 0) {
+                        state = STATE_INITIAL;
+                    }
+                    break;
+                }
+                break;
+            default: // Never happens.
+                break;
+            }
+            buf.append(c);
+        }
+        // End of scan
+        if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+            buf.append(SINGLE_QUOTE);
+        }
+        return new String(buf);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    //
+    // private methods for AttributedCharacterIterator support
+    //
+    // Note: The equivalent methods are defined as package local methods in
+    //       java.text.Format.  ICU cannot access these methods, so we have
+    //       these methods locally, with "_" prefix for avoiding name collision.
+    //       (The collision itself is not a problem, but Eclipse displays warnings
+    //       by the default warning level.)  We may move these utility methods
+    //       up to com.ibm.icu.text.UFormat later.  Yoshito
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(String text) {
+        AttributedString as = new AttributedString(text);
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(AttributedCharacterIterator[] iterators) {
+        if (iterators == null || iterators.length == 0) {
+            return _createAttributedCharacterIterator("");
+        }
+        // Create a single AttributedString
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < iterators.length; i++) {
+            int index = iterators[i].getBeginIndex();
+            int end = iterators[i].getEndIndex();
+            while (index < end) {
+                sb.append(iterators[i].setIndex(index++));
+            }
+        }
+        AttributedString as = new AttributedString(sb.toString());
+
+        // Set attributes
+        int offset = 0;
+        for (int i = 0; i < iterators.length; i++) {
+            iterators[i].first();
+            int start = iterators[i].getBeginIndex();
+            while (true) {
+                Map map = iterators[i].getAttributes();
+                int len = iterators[i].getRunLimit() - start; // run length
+                if (map.size() > 0) {
+                    Iterator eit = map.entrySet().iterator();
+                    while (eit.hasNext()) {
+                        Map.Entry entry = (Map.Entry)eit.next();
+                        as.addAttribute((AttributedCharacterIterator.Attribute)entry.getKey(), entry.getValue(),
+                                offset, offset + len);
+                    }
+                }
+                offset += len;
+                start += len;
+                iterators[i].setIndex(start);
+                if (iterators[i].current() == CharacterIterator.DONE) {
+                    break;
+                }
+            }
+        }
+
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(AttributedCharacterIterator iterator,
+            AttributedCharacterIterator.Attribute key, Object value) {
+        AttributedString as = new AttributedString(iterator);
+        as.addAttribute(key, value);
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(String text,
+            AttributedCharacterIterator.Attribute key, Object value) {
+        AttributedString as = new AttributedString(text);
+        as.addAttribute(key, value);
+        return as.getIterator();
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/NFRule.java b/src/com/ibm/icu/text/NFRule.java
new file mode 100644
index 0000000..088489c
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRule.java
@@ -0,0 +1,1331 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.text.*;
+
+/**
+ * A class representing a single rule in a RuleBasedNumberFormat.  A rule
+ * inserts its text into the result string and then passes control to its
+ * substitutions, which do the same thing.
+ */
+final class NFRule {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Special base value used to identify a negative-number rule
+     */
+    public static final int NEGATIVE_NUMBER_RULE = -1;
+
+    /**
+     * Special base value used to identify an improper fraction (x.x) rule
+     */
+    public static final int IMPROPER_FRACTION_RULE = -2;
+
+    /**
+     * Special base value used to identify a proper fraction (0.x) rule
+     */
+    public static final int PROPER_FRACTION_RULE = -3;
+
+    /**
+     * Special base value used to identify a master rule
+     */
+    public static final int MASTER_RULE = -4;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule's base value
+     */
+    private long baseValue;
+
+    /**
+     * The rule's radix (the radix to the power of the exponent equals
+     * the rule's divisor)
+     */
+    private int radix = 10;
+
+    /**
+     * The rule's exponent (the radx rased to the power of the exponsnt
+     * equals the rule's divisor)
+     */
+    private short exponent = 0;
+
+    /**
+     * The rule's rule text.  When formatting a number, the rule's text
+     * is inserted into the result string, and then the text from any
+     * substitutions is inserted into the result string
+     */
+    private String ruleText = null;
+
+    /**
+     * The rule's first substitution (the one with the lower offset
+     * into the rule text)
+     */
+    private NFSubstitution sub1 = null;
+
+    /**
+     * The rule's second substitution (the one with the higher offset
+     * into the rule text)
+     */
+    private NFSubstitution sub2 = null;
+
+    /**
+     * The RuleBasedNumberFormat that owns this rule
+     */
+    private RuleBasedNumberFormat formatter = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates one or more rules based on the description passed in.
+     * @param description The description of the rule(s).
+     * @param owner The rule set containing the new rule(s).
+     * @param predecessor The rule that precedes the new one(s) in "owner"'s
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns the
+     * rule set that owns the new rule(s)
+     * @return An instance of NFRule, or an array of NFRules
+     */
+    public static Object makeRules(String                description,
+                                   NFRuleSet             owner,
+                                   NFRule                predecessor,
+                                   RuleBasedNumberFormat ownersOwner) {
+        // we know we're making at least one rule, so go ahead and
+        // new it up and initialize its basevalue and divisor
+        // (this also strips the rule descriptor, if any, off the
+        // descripton string)
+        NFRule rule1 = new NFRule(ownersOwner);
+        description = rule1.parseRuleDescriptor(description);
+
+        // check the description to see whether there's text enclosed
+        // in brackets
+        int brack1 = description.indexOf("[");
+        int brack2 = description.indexOf("]");
+
+        // if the description doesn't contain a matched pair of brackets,
+        // or if it's of a type that doesn't recognize bracketed text,
+        // then leave the description alone, initialize the rule's
+        // rule text and substitutions, and return that rule
+        if (brack1 == -1 || brack2 == -1 || brack1 > brack2
+            || rule1.getBaseValue() == PROPER_FRACTION_RULE
+            || rule1.getBaseValue() == NEGATIVE_NUMBER_RULE) {
+            rule1.ruleText = description;
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+            return rule1;
+        } else {
+            // if the description does contain a matched pair of brackets,
+            // then it's really shorthand for two rules (with one exception)
+            NFRule rule2 = null;
+            StringBuffer sbuf = new StringBuffer();
+
+            // we'll actually only split the rule into two rules if its
+            // base value is an even multiple of its divisor (or it's one
+            // of the special rules)
+            if ((rule1.baseValue > 0
+                 && rule1.baseValue % (Math.pow(rule1.radix, rule1.exponent)) == 0)
+                || rule1.baseValue == IMPROPER_FRACTION_RULE
+                || rule1.baseValue == MASTER_RULE) {
+
+                // if it passes that test, new up the second rule.  If the
+                // rule set both rules will belong to is a fraction rule
+                // set, they both have the same base value; otherwise,
+                // increment the original rule's base value ("rule1" actually
+                // goes SECOND in the rule set's rule list)
+                rule2 = new NFRule(ownersOwner);
+                if (rule1.baseValue >= 0) {
+                    rule2.baseValue = rule1.baseValue;
+                    if (!owner.isFractionSet()) {
+                        ++rule1.baseValue;
+                    }
+                }
+
+                // if the description began with "x.x" and contains bracketed
+                // text, it describes both the improper fraction rule and
+                // the proper fraction rule
+                else if (rule1.baseValue == IMPROPER_FRACTION_RULE) {
+                    rule2.baseValue = PROPER_FRACTION_RULE;
+                }
+
+                // if the description began with "x.0" and contains bracketed
+                // text, it describes both the master rule and the
+                // improper fraction rule
+                else if (rule1.baseValue == MASTER_RULE) {
+                    rule2.baseValue = rule1.baseValue;
+                    rule1.baseValue = IMPROPER_FRACTION_RULE;
+                }
+
+                // both rules have the same radix and exponent (i.e., the
+                // same divisor)
+                rule2.radix = rule1.radix;
+                rule2.exponent = rule1.exponent;
+
+                // rule2's rule text omits the stuff in brackets: initalize
+                // its rule text and substitutions accordingly
+                sbuf.append(description.substring(0, brack1));
+                if (brack2 + 1 < description.length()) {
+                    sbuf.append(description.substring(brack2 + 1));
+                }
+                rule2.ruleText = sbuf.toString();
+                rule2.extractSubstitutions(owner, predecessor, ownersOwner);
+            }
+
+            // rule1's text includes the text in the brackets but omits
+            // the brackets themselves: initialize _its_ rule text and
+            // substitutions accordingly
+            sbuf.setLength(0);
+            sbuf.append(description.substring(0, brack1));
+            sbuf.append(description.substring(brack1 + 1, brack2));
+            if (brack2 + 1 < description.length()) {
+                sbuf.append(description.substring(brack2 + 1));
+            }
+            rule1.ruleText = sbuf.toString();
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+
+            // if we only have one rule, return it; if we have two, return
+            // a two-element array containing them (notice that rule2 goes
+            // BEFORE rule1 in the list: in all cases, rule2 OMITS the
+            // material in the brackets and rule1 INCLUDES the material
+            // in the brackets)
+            if (rule2 == null) {
+                return rule1;
+            } else {
+                return new NFRule[] { rule2, rule1 };
+            }
+        }
+    }
+
+    /**
+     * Nominal constructor for NFRule.  Most of the work of constructing
+     * an NFRule is actually performed by makeRules().
+     */
+    public NFRule(RuleBasedNumberFormat formatter) {
+        this.formatter = formatter;
+    }
+
+    /**
+     * This function parses the rule's rule descriptor (i.e., the base
+     * value and/or other tokens that precede the rule's rule text
+     * in the description) and sets the rule's base value, radix, and
+     * exponent according to the descriptor.  (If the description doesn't
+     * include a rule descriptor, then this function sets everything to
+     * default values and the rule set sets the rule's real base value).
+     * @param description The rule's description
+     * @return If "description" included a rule descriptor, this is
+     * "description" with the descriptor and any trailing whitespace
+     * stripped off.  Otherwise; it's "descriptor" unchangd.
+     */
+    private String parseRuleDescriptor(String description) {
+        String descriptor;
+
+        // the description consists of a rule descriptor and a rule body,
+        // separated by a colon.  The rule descriptor is optional.  If
+        // it's omitted, just set the base value to 0.
+        int p = description.indexOf(":");
+        if (p == -1) {
+            setBaseValue(0);
+        } else {
+            // copy the descriptor out into its own string and strip it,
+            // along with any trailing whitespace, out of the original
+            // description
+            descriptor = description.substring(0, p);
+            ++p;
+            while (p < description.length() && UCharacterProperty.isRuleWhiteSpace(description.charAt(p)))
+                ++p;
+            description = description.substring(p);
+
+            // check first to see if the rule descriptor matches the token
+            // for one of the special rules.  If it does, set the base
+            // value to the correct identfier value
+            if (descriptor.equals("-x")) {
+                setBaseValue(NEGATIVE_NUMBER_RULE);
+            }
+            else if (descriptor.equals("x.x")) {
+                setBaseValue(IMPROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("0.x")) {
+                setBaseValue(PROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("x.0")) {
+                setBaseValue(MASTER_RULE);
+            }
+
+            // if the rule descriptor begins with a digit, it's a descriptor
+            // for a normal rule
+            else if (descriptor.charAt(0) >= '0' && descriptor.charAt(0) <= '9') {
+                StringBuffer tempValue = new StringBuffer();
+                p = 0;
+                char c = ' ';
+
+                // begin parsing the descriptor: copy digits
+                // into "tempValue", skip periods, commas, and spaces,
+                // stop on a slash or > sign (or at the end of the string),
+                // and throw an exception on any other character
+                while (p < descriptor.length()) {
+                    c = descriptor.charAt(p);
+                    if (c >= '0' && c <= '9') {
+                        tempValue.append(c);
+                    }
+                    else if (c == '/' || c == '>') {
+                        break;
+                    }
+                    else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                    }
+                    else {
+                        throw new IllegalArgumentException("Illegal character in rule descriptor");
+                    }
+                    ++p;
+                }
+
+                // tempValue now contains a string representation of the
+                // rule's base value with the punctuation stripped out.
+                // Set the rule's base value accordingly
+                setBaseValue(Long.parseLong(tempValue.toString()));
+
+                // if we stopped the previous loop on a slash, we're
+                // now parsing the rule's radix.  Again, accumulate digits
+                // in tempValue, skip punctuation, stop on a > mark, and
+                // throw an exception on anything else
+                if (c == '/') {
+                    tempValue.setLength(0);
+                    ++p;
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c >= '0' && c <= '9') {
+                            tempValue.append(c);
+                        }
+                        else if (c == '>') {
+                            break;
+                        }
+                        else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                        }
+                        else {
+                            throw new IllegalArgumentException("Illegal character is rule descriptor");
+                        }
+                        ++p;
+                    }
+
+                    // tempValue now contain's the rule's radix.  Set it
+                    // accordingly, and recalculate the rule's exponent
+                    radix = Integer.parseInt(tempValue.toString());
+                    if (radix == 0) {
+                        throw new IllegalArgumentException("Rule can't have radix of 0");
+                    }
+                    exponent = expectedExponent();
+                }
+
+                // if we stopped the previous loop on a > sign, then continue
+                // for as long as we still see > signs.  For each one,
+                // decrement the exponent (unless the exponent is already 0).
+                // If we see another character before reaching the end of
+                // the descriptor, that's also a syntax error.
+                if (c == '>') {
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c == '>' && exponent > 0) {
+                            --exponent;
+                        } else {
+                            throw new IllegalArgumentException("Illegal character in rule descriptor");
+                        }
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        // finally, if the rule body begins with an apostrophe, strip it off
+        // (this is generally used to put whitespace at the beginning of
+        // a rule's rule text)
+        if (description.length() > 0 && description.charAt(0) == '\'') {
+            description = description.substring(1);
+        }
+
+        // return the description with all the stuff we've just waded through
+        // stripped off the front.  It now contains just the rule body.
+        return description;
+    }
+
+    /**
+     * Searches the rule's rule text for the substitution tokens,
+     * creates the substitutions, and removes the substitution tokens
+     * from the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preseding this one in "owners" rule list
+     * @param ownersOwner The RuleBasedFormat that owns this rule
+     */
+    private void extractSubstitutions(NFRuleSet             owner,
+                                      NFRule                predecessor,
+                                      RuleBasedNumberFormat ownersOwner) {
+        sub1 = extractSubstitution(owner, predecessor, ownersOwner);
+        sub2 = extractSubstitution(owner, predecessor, ownersOwner);
+    }
+
+    /**
+     * Searches the rule's rule text for the first substitution token,
+     * creates a substitution based on it, and removes the token from
+     * the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preceding this one in the rule set's
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns this rule
+     * @return The newly-created substitution.  This is never null; if
+     * the rule text doesn't contain any substitution tokens, this will
+     * be a NullSubstitution.
+     */
+    private NFSubstitution extractSubstitution(NFRuleSet             owner,
+                                               NFRule                predecessor,
+                                               RuleBasedNumberFormat ownersOwner) {
+        NFSubstitution result = null;
+        int subStart;
+        int subEnd;
+
+        // search the rule's rule text for the first two characters of
+        // a substitution token
+        subStart = indexOfAny(new String[] { "<<", "<%", "<#", "<0",
+                                             ">>", ">%", ">#", ">0",
+                                             "=%", "=#", "=0" } );
+
+        // if we didn't find one, create a null substitution positioned
+        // at the end of the rule text
+        if (subStart == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                                                   owner, ownersOwner, "");
+        }
+
+        // special-case the ">>>" token, since searching for the > at the
+        // end will actually find the > in the middle
+        if (ruleText.substring(subStart).startsWith(">>>")) {
+            subEnd = subStart + 2;
+
+            // otherwise the substitution token ends with the same character
+            // it began with
+        } else {
+            char c = ruleText.charAt(subStart);
+            subEnd = ruleText.indexOf(c, subStart + 1);
+            // special case for '<%foo<<'
+            if (c == '<' && subEnd != -1 && subEnd < ruleText.length() - 1 && ruleText.charAt(subEnd+1) == c) {
+                // ordinals use "=#,##0==%abbrev=" as their rule.  Notice that the '==' in the middle
+                // occurs because of the juxtaposition of two different rules.  The check for '<' is a hack
+                // to get around this.  Having the duplicate at the front would cause problems with
+                // rules like "<<%" to format, say, percents...
+                ++subEnd;
+            }
+        }
+
+        // if we don't find the end of the token (i.e., if we're on a single,
+        // unmatched token character), create a null substitution positioned
+        // at the end of the rule
+        if (subEnd == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                                                   owner, ownersOwner, "");
+        }
+
+        // if we get here, we have a real substitution token (or at least
+        // some text bounded by substitution token characters).  Use
+        // makeSubstitution() to create the right kind of substitution
+        result = NFSubstitution.makeSubstitution(subStart, this, predecessor, owner,
+                                                 ownersOwner, ruleText.substring(subStart, subEnd + 1));
+
+        // remove the substitution from the rule text
+        ruleText = ruleText.substring(0, subStart) + ruleText.substring(subEnd + 1);
+        return result;
+    }
+
+    /**
+     * Sets the rule's base value, and causes the radix and exponent
+     * to be recalculated.  This is used during construction when we
+     * don't know the rule's base value until after it's been
+     * constructed.  It should not be used at any other time.
+     * @param newBaseValue The new base value for the rule.
+     */
+    public final void setBaseValue(long newBaseValue) {
+        // set the base value
+        baseValue = newBaseValue;
+
+        // if this isn't a special rule, recalculate the radix and exponent
+        // (the radix always defaults to 10; if it's supposed to be something
+        // else, it's cleaned up by the caller and the exponent is
+        // recalculated again-- the only function that does this is
+        // NFRule.parseRuleDescriptor() )
+        if (baseValue >= 1) {
+            radix = 10;
+            exponent = expectedExponent();
+
+            // this function gets called on a fully-constructed rule whose
+            // description didn't specify a base value.  This means it
+            // has substitutions, and some substitutions hold on to copies
+            // of the rule's divisor.  Fix their copies of the divisor.
+            if (sub1 != null) {
+                sub1.setDivisor(radix, exponent);
+            }
+            if (sub2 != null) {
+                sub2.setDivisor(radix, exponent);
+            }
+
+            // if this is a special rule, its radix and exponent are basically
+            // ignored.  Set them to "safe" default values
+        } else {
+            radix = 10;
+            exponent = 0;
+        }
+    }
+
+    /**
+     * This calculates the rule's exponent based on its radix and base
+     * value.  This will be the highest power the radix can be raised to
+     * and still produce a result less than or equal to the base value.
+     */
+    private short expectedExponent() {
+        // since the log of 0, or the log base 0 of something, causes an
+        // error, declare the exponent in these cases to be 0 (we also
+        // deal with the special-rule identifiers here)
+        if (radix == 0 || baseValue < 1) {
+            return 0;
+        }
+
+        // we get rounding error in some cases-- for example, log 1000 / log 10
+        // gives us 1.9999999996 instead of 2.  The extra logic here is to take
+        // that into account
+        short tempResult = (short)(Math.log(baseValue) / Math.log(radix));
+        if (Math.pow(radix, tempResult + 1) <= baseValue) {
+            return (short)(tempResult + 1);
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Searches the rule's rule text for any of the specified strings.
+     * @param strings An array of strings to search the rule's rule
+     * text for
+     * @return The index of the first match in the rule's rule text
+     * (i.e., the first substring in the rule's rule text that matches
+     * _any_ of the strings in "strings").  If none of the strings in
+     * "strings" is found in the rule's rule text, returns -1.
+     */
+    private int indexOfAny(String[] strings) {
+        int pos;
+        int result = -1;
+        for (int i = 0; i < strings.length; i++) {
+            pos = ruleText.indexOf(strings[i]);
+            if (pos != -1 && (result == -1 || pos < result)) {
+                result = pos;
+            }
+        }
+        return result;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two rules for equality.
+     * @param that The rule to compare this one against
+     * @return True if the two rules are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (that instanceof NFRule) {
+            NFRule that2 = (NFRule)that;
+
+            return baseValue == that2.baseValue
+                && radix == that2.radix
+                && exponent == that2.exponent
+                && ruleText.equals(that2.ruleText)
+                && sub1.equals(that2.sub1)
+                && sub2.equals(that2.sub2);
+        }
+        return false;
+    }
+
+    /**
+     * Returns a textual representation of the rule.  This won't
+     * necessarily be the same as the description that this rule
+     * was created with, but it will produce the same result.
+     * @return A textual description of the rule
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // start with the rule descriptor.  Special-case the special rules
+        if (baseValue == NEGATIVE_NUMBER_RULE) {
+            result.append("-x: ");
+        }
+        else if (baseValue == IMPROPER_FRACTION_RULE) {
+            result.append("x.x: ");
+        }
+        else if (baseValue == PROPER_FRACTION_RULE) {
+            result.append("0.x: ");
+        }
+        else if (baseValue == MASTER_RULE) {
+            result.append("x.0: ");
+        }
+
+        // for a normal rule, write out its base value, and if the radix is
+        // something other than 10, write out the radix (with the preceding
+        // slash, of course).  Then calculate the expected exponent and if
+        // if isn't the same as the actual exponent, write an appropriate
+        // number of > signs.  Finally, terminate the whole thing with
+        // a colon.
+        else {
+            result.append(String.valueOf(baseValue));
+            if (radix != 10) {
+                result.append('/');
+                result.append(String.valueOf(radix));
+            }
+            int numCarets = expectedExponent() - exponent;
+            for (int i = 0; i < numCarets; i++)
+                result.append('>');
+            result.append(": ");
+        }
+
+        // if the rule text begins with a space, write an apostrophe
+        // (whitespace after the rule descriptor is ignored; the
+        // apostrophe is used to make the whitespace significant)
+        if (ruleText.startsWith(" ") && (sub1 == null || sub1.getPos() != 0)) {
+            result.append("\'");
+        }
+
+        // now, write the rule's rule text, inserting appropriate
+        // substitution tokens in the appropriate places
+        StringBuffer ruleTextCopy = new StringBuffer(ruleText);
+        ruleTextCopy.insert(sub2.getPos(), sub2.toString());
+        ruleTextCopy.insert(sub1.getPos(), sub1.toString());
+        result.append(ruleTextCopy.toString());
+
+        // and finally, top the whole thing off with a semicolon and
+        // return the result
+        result.append(';');
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the rule's base value
+     * @return The rule's base value
+     */
+    public final long getBaseValue() {
+        return baseValue;
+    }
+
+    /**
+     * Returns the rule's divisor (the value that cotrols the behavior
+     * of its substitutions)
+     * @return The rule's divisor
+     */
+    public double getDivisor() {
+        return Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(long number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto (notice we do the
+        // substitutions in reverse order so that the offsets don't get
+        // messed up)
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(double number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto
+        // [again, we have two copies of this routine that do the same thing
+        // so that we don't sacrifice precision in a long by casting it
+        // to a double]
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Used by the owning rule set to determine whether to invoke the
+     * rollback rule (i.e., whether this rule or the one that precedes
+     * it in the rule set's list should be used to format the number)
+     * @param number The number being formatted
+     * @return True if the rule set should use the rule that precedes
+     * this one in its list; false if it should use this rule
+     */
+    public boolean shouldRollBack(double number) {
+        // we roll back if the rule contains a modulus substitution,
+        // the number being formatted is an even multiple of the rule's
+        // divisor, and the rule's base value is NOT an even multiple
+        // of its divisor
+        // In other words, if the original description had
+        //    100: << hundred[ >>];
+        // that expands into
+        //    100: << hundred;
+        //    101: << hundred >>;
+        // internally.  But when we're formatting 200, if we use the rule
+        // at 101, which would normally apply, we get "two hundred zero".
+        // To prevent this, we roll back and use the rule at 100 instead.
+        // This is the logic that makes this happen: the rule at 101 has
+        // a modulus substitution, its base value isn't an even multiple
+        // of 100, and the value we're trying to format _is_ an even
+        // multiple of 100.  This is called the "rollback rule."
+        if ((sub1.isModulusSubstitution()) || (sub2.isModulusSubstitution())) {
+            return (number % Math.pow(radix, exponent)) == 0
+                && (baseValue % Math.pow(radix, exponent)) != 0;
+        }
+        return false;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Attempts to parse the string with this rule.
+     * @param text The string being parsed
+     * @param parsePosition On entry, the value is ignored and assumed to
+     * be 0. On exit, this has been updated with the position of the first
+     * character not consumed by matching the text against this rule
+     * (if this rule doesn't match the text at all, the parse position
+     * if left unchanged (presumably at 0) and the function returns
+     * new Long(0)).
+     * @param isFractionRule True if this rule is contained within a
+     * fraction rule set.  This is only used if the rule has no
+     * substitutions.
+     * @return If this rule matched the text, this is the rule's base value
+     * combined appropriately with the results of parsing the substitutions.
+     * If nothing matched, this is new Long(0) and the parse position is
+     * left unchanged.  The result will be an instance of Long if the
+     * result is an integer and Double otherwise.  The result is never null.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, boolean isFractionRule,
+                          double upperBound) {
+
+        // internally we operate on a copy of the string being parsed
+        // (because we're going to change it) and use our own ParsePosition
+        ParsePosition pp = new ParsePosition(0);
+        String workText = new String(text);
+
+        // check to see whether the text before the first substitution
+        // matches the text at the beginning of the string being
+        // parsed.  If it does, strip that off the front of workText;
+        // otherwise, dump out with a mismatch
+        workText = stripPrefix(workText, ruleText.substring(0, sub1.getPos()), pp);
+        int prefixLength = text.length() - workText.length();
+
+        if (pp.getIndex() == 0 && sub1.getPos() != 0) {
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //                parsePosition.setErrorIndex(pp.getErrorIndex());
+            return new Long(0);
+        }
+
+        // this is the fun part.  The basic guts of the rule-matching
+        // logic is matchToDelimiter(), which is called twice.  The first
+        // time it searches the input string for the rule text BETWEEN
+        // the substitutions and tries to match the intervening text
+        // in the input string with the first substitution.  If that
+        // succeeds, it then calls it again, this time to look for the
+        // rule text after the second substitution and to match the
+        // intervening input text against the second substitution.
+        //
+        // For example, say we have a rule that looks like this:
+        //    first << middle >> last;
+        // and input text that looks like this:
+        //    first one middle two last
+        // First we use stripPrefix() to match "first " in both places and
+        // strip it off the front, leaving
+        //    one middle two last
+        // Then we use matchToDelimiter() to match " middle " and try to
+        // match "one" against a substitution.  If it's successful, we now
+        // have
+        //    two last
+        // We use matchToDelimiter() a second time to match " last" and
+        // try to match "two" against a substitution.  If "two" matches
+        // the substitution, we have a successful parse.
+        //
+        // Since it's possible in many cases to find multiple instances
+        // of each of these pieces of rule text in the input string,
+        // we need to try all the possible combinations of these
+        // locations.  This prevents us from prematurely declaring a mismatch,
+        // and makes sure we match as much input text as we can.
+        int highWaterMark = 0;
+        double result = 0;
+        int start = 0;
+        double tempBaseValue = Math.max(0, baseValue);
+
+        do {
+            // our partial parse result starts out as this rule's base
+            // value.  If it finds a successful match, matchToDelimiter()
+            // will compose this in some way with what it gets back from
+            // the substitution, giving us a new partial parse result
+            pp.setIndex(0);
+            double partialResult = matchToDelimiter(workText, start, tempBaseValue,
+                                                    ruleText.substring(sub1.getPos(), sub2.getPos()), pp, sub1,
+                                                    upperBound).doubleValue();
+
+            // if we got a successful match (or were trying to match a
+            // null substitution), pp is now pointing at the first unmatched
+            // character.  Take note of that, and try matchToDelimiter()
+            // on the input text again
+            if (pp.getIndex() != 0 || sub1.isNullSubstitution()) {
+                start = pp.getIndex();
+
+                String workText2 = workText.substring(pp.getIndex());
+                ParsePosition pp2 = new ParsePosition(0);
+
+                // the second matchToDelimiter() will compose our previous
+                // partial result with whatever it gets back from its
+                // substitution if there's a successful match, giving us
+                // a real result
+                partialResult = matchToDelimiter(workText2, 0, partialResult,
+                                                 ruleText.substring(sub2.getPos()), pp2, sub2,
+                                                 upperBound).doubleValue();
+
+                // if we got a successful match on this second
+                // matchToDelimiter() call, update the high-water mark
+                // and result (if necessary)
+                if (pp2.getIndex() != 0 || sub2.isNullSubstitution()) {
+                    if (prefixLength + pp.getIndex() + pp2.getIndex() > highWaterMark) {
+                        highWaterMark = prefixLength + pp.getIndex() + pp2.getIndex();
+                        result = partialResult;
+                    }
+                }
+                // commented out because ParsePosition doesn't have error index in 1.1.x
+                //                    else {
+                //                        int temp = pp2.getErrorIndex() + sub1.getPos() + pp.getIndex();
+                //                        if (temp> parsePosition.getErrorIndex()) {
+                //                            parsePosition.setErrorIndex(temp);
+                //                        }
+                //                    }
+            }
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //                else {
+            //                    int temp = sub1.getPos() + pp.getErrorIndex();
+            //                    if (temp > parsePosition.getErrorIndex()) {
+            //                        parsePosition.setErrorIndex(temp);
+            //                    }
+            //                }
+            // keep trying to match things until the outer matchToDelimiter()
+            // call fails to make a match (each time, it picks up where it
+            // left off the previous time)
+        } while (sub1.getPos() != sub2.getPos() && pp.getIndex() > 0 && pp.getIndex()
+                 < workText.length() && pp.getIndex() != start);
+
+        // update the caller's ParsePosition with our high-water mark
+        // (i.e., it now points at the first character this function
+        // didn't match-- the ParsePosition is therefore unchanged if
+        // we didn't match anything)
+        parsePosition.setIndex(highWaterMark);
+        // commented out because ParsePosition doesn't have error index in 1.1.x
+        //        if (highWaterMark > 0) {
+        //            parsePosition.setErrorIndex(0);
+        //        }
+
+        // this is a hack for one unusual condition: Normally, whether this
+        // rule belong to a fraction rule set or not is handled by its
+        // substitutions.  But if that rule HAS NO substitutions, then
+        // we have to account for it here.  By definition, if the matching
+        // rule in a fraction rule set has no substitutions, its numerator
+        // is 1, and so the result is the reciprocal of its base value.
+        if (isFractionRule && highWaterMark > 0 && sub1.isNullSubstitution()) {
+            result = 1 / result;
+        }
+
+        // return the result as a Long if possible, or as a Double
+        if (result == (long)result) {
+            return new Long((long)result);
+        } else {
+            return new Double(result);
+        }
+    }
+
+    /**
+     * This function is used by parse() to match the text being parsed
+     * against a possible prefix string.  This function
+     * matches characters from the beginning of the string being parsed
+     * to characters from the prospective prefix.  If they match, pp is
+     * updated to the first character not matched, and the result is
+     * the unparsed part of the string.  If they don't match, the whole
+     * string is returned, and pp is left unchanged.
+     * @param text The string being parsed
+     * @param prefix The text to match against
+     * @param pp On entry, ignored and assumed to be 0.  On exit, points
+     * to the first unmatched character (assuming the whole prefix matched),
+     * or is unchanged (if the whole prefix didn't match).
+     * @return If things match, this is the unparsed part of "text";
+     * if they didn't match, this is "text".
+     */
+    private String stripPrefix(String text, String prefix, ParsePosition pp) {
+        // if the prefix text is empty, dump out without doing anything
+        if (prefix.length() == 0) {
+            return text;
+        } else {
+            // otherwise, use prefixLength() to match the beginning of
+            // "text" against "prefix".  This function returns the
+            // number of characters from "text" that matched (or 0 if
+            // we didn't match the whole prefix)
+            int pfl = prefixLength(text, prefix);
+            if (pfl != 0) {
+                // if we got a successful match, update the parse position
+                // and strip the prefix off of "text"
+                pp.setIndex(pp.getIndex() + pfl);
+                return text.substring(pfl);
+
+                // if we didn't get a successful match, leave everything alone
+            } else {
+                return text;
+            }
+        }
+    }
+
+    /**
+     * Used by parse() to match a substitution and any following text.
+     * "text" is searched for instances of "delimiter".  For each instance
+     * of delimiter, the intervening text is tested to see whether it
+     * matches the substitution.  The longest match wins.
+     * @param text The string being parsed
+     * @param startPos The position in "text" where we should start looking
+     * for "delimiter".
+     * @param baseVal A partial parse result (often the rule's base value),
+     * which is combined with the result from matching the substitution
+     * @param delimiter The string to search "text" for.
+     * @param pp Ignored and presumed to be 0 on entry.  If there's a match,
+     * on exit this will point to the first unmatched character.
+     * @param sub If we find "delimiter" in "text", this substitution is used
+     * to match the text between the beginning of the string and the
+     * position of "delimiter."  (If "delimiter" is the empty string, then
+     * this function just matches against this substitution and updates
+     * everything accordingly.)
+     * @param upperBound When matching the substitution, it will only
+     * consider rules with base values lower than this value.
+     * @return If there's a match, this is the result of composing
+     * baseValue with the result of matching the substitution.  Otherwise,
+     * this is new Long(0).  It's never null.  If the result is an integer,
+     * this will be an instance of Long; otherwise, it's an instance of
+     * Double.
+     */
+    private Number matchToDelimiter(String text, int startPos, double baseVal,
+                                    String delimiter, ParsePosition pp, NFSubstitution sub, double upperBound) {
+        // if "delimiter" contains real (i.e., non-ignorable) text, search
+        // it for "delimiter" beginning at "start".  If that succeeds, then
+        // use "sub"'s doParse() method to match the text before the
+        // instance of "delimiter" we just found.
+        if (!allIgnorable(delimiter)) {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number tempResult;
+
+            // use findText() to search for "delimiter".  It returns a two-
+            // element array: element 0 is the position of the match, and
+            // element 1 is the number of characters that matched
+            // "delimiter".
+            int[] temp = findText(text, delimiter, startPos);
+            int dPos = temp[0];
+            int dLen = temp[1];
+
+            // if findText() succeeded, isolate the text preceding the
+            // match, and use "sub" to match that text
+            while (dPos >= 0) {
+                String subText = text.substring(0, dPos);
+                if (subText.length() > 0) {
+                    tempResult = sub.doParse(subText, tempPP, baseVal, upperBound,
+                                             formatter.lenientParseEnabled());
+
+                    // if the substitution could match all the text up to
+                    // where we found "delimiter", then this function has
+                    // a successful match.  Bump the caller's parse position
+                    // to point to the first character after the text
+                    // that matches "delimiter", and return the result
+                    // we got from parsing the substitution.
+                    if (tempPP.getIndex() == dPos) {
+                        pp.setIndex(dPos + dLen);
+                        return tempResult;
+                    }
+                    // commented out because ParsePosition doesn't have error index in 1.1.x
+                    //                    else {
+                    //                        if (tempPP.getErrorIndex() > 0) {
+                    //                            pp.setErrorIndex(tempPP.getErrorIndex());
+                    //                        } else {
+                    //                            pp.setErrorIndex(tempPP.getIndex());
+                    //                        }
+                    //                    }
+                }
+
+                // if we didn't match the substitution, search for another
+                // copy of "delimiter" in "text" and repeat the loop if
+                // we find it
+                tempPP.setIndex(0);
+                temp = findText(text, delimiter, dPos + dLen);
+                dPos = temp[0];
+                dLen = temp[1];
+            }
+            // if we make it here, this was an unsuccessful match, and we
+            // leave pp unchanged and return 0
+            pp.setIndex(0);
+            return new Long(0);
+
+            // if "delimiter" is empty, or consists only of ignorable characters
+            // (i.e., is semantically empty), thwe we obviously can't search
+            // for "delimiter".  Instead, just use "sub" to parse as much of
+            // "text" as possible.
+        } else {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number result = new Long(0);
+            Number tempResult;
+
+            // try to match the whole string against the substitution
+            tempResult = sub.doParse(text, tempPP, baseVal, upperBound,
+                                     formatter.lenientParseEnabled());
+            if (tempPP.getIndex() != 0 || sub.isNullSubstitution()) {
+                // if there's a successful match (or it's a null
+                // substitution), update pp to point to the first
+                // character we didn't match, and pass the result from
+                // sub.doParse() on through to the caller
+                pp.setIndex(tempPP.getIndex());
+                if (tempResult != null) {
+                    result = tempResult;
+                }
+            }
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //            else {
+            //                pp.setErrorIndex(tempPP.getErrorIndex());
+            //            }
+
+            // and if we get to here, then nothing matched, so we return
+            // 0 and leave pp alone
+            return result;
+        }
+    }
+
+    /**
+     * Used by stripPrefix() to match characters.  If lenient parse mode
+     * is off, this just calls startsWith().  If lenient parse mode is on,
+     * this function uses CollationElementIterators to match characters in
+     * the strings (only primary-order differences are significant in
+     * determining whether there's a match).
+     * @param str The string being tested
+     * @param prefix The text we're hoping to see at the beginning
+     * of "str"
+     * @return If "prefix" is found at the beginning of "str", this
+     * is the number of characters in "str" that were matched (this
+     * isn't necessarily the same as the length of "prefix" when matching
+     * text with a collator).  If there's no match, this is 0.
+     */
+    private int prefixLength(String str, String prefix) {
+        // if we're looking for an empty prefix, it obviously matches
+        // zero characters.  Just go ahead and return 0.
+        if (prefix.length() == 0) {
+            return 0;
+        }
+
+        // go through all this grief if we're in lenient-parse mode
+        if (formatter.lenientParseEnabled()) {
+            // get the formatter's collator and use it to create two
+            // collation element iterators, one over the target string
+            // and another over the prefix (right now, we'll throw an
+            // exception if the collator we get back from the formatter
+            // isn't a RuleBasedCollator, because RuleBasedCollator defines
+            // the CollationElementIteratoer protocol.  Hopefully, this
+            // will change someday.)
+            //
+            // Previous code was matching "fifty-" against " fifty" and leaving
+            // the number " fifty-7" to parse as 43 (50 - 7).
+            // Also it seems that if we consume the entire prefix, that's ok even
+            // if we've consumed the entire string, so I switched the logic to
+            // reflect this.
+            RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            CollationElementIterator prefixIter = collator.getCollationElementIterator(prefix);
+
+            // match collation elements between the strings
+            int oStr = strIter.next();
+            int oPrefix = prefixIter.next();
+
+            while (oPrefix != CollationElementIterator.NULLORDER) {
+                // skip over ignorable characters in the target string
+                while (CollationElementIterator.primaryOrder(oStr) == 0 && oStr !=
+                       CollationElementIterator.NULLORDER) {
+                    oStr = strIter.next();
+                }
+
+                // skip over ignorable characters in the prefix
+                while (CollationElementIterator.primaryOrder(oPrefix) == 0 && oPrefix !=
+                       CollationElementIterator.NULLORDER) {
+                    oPrefix = prefixIter.next();
+                }
+
+                // if skipping over ignorables brought to the end of
+                // the prefix, we DID match: drop out of the loop
+                if (oPrefix == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+
+                // if skipping over ignorables brought us to the end
+                // of the target string, we didn't match and return 0
+                if (oStr == CollationElementIterator.NULLORDER) {
+                    return 0;
+                }
+
+                // match collation elements from the two strings
+                // (considering only primary differences).  If we
+                // get a mismatch, dump out and return 0
+                if (CollationElementIterator.primaryOrder(oStr) != CollationElementIterator.
+                    primaryOrder(oPrefix)) {
+                    return 0;
+                }
+                // otherwise, advance to the next character in each string
+                // and loop (we drop out of the loop when we exhaust
+                // collation elements in the prefix)
+
+                oStr = strIter.next();
+                oPrefix = prefixIter.next();
+            }
+
+            // we are not compatible with jdk 1.1 any longer
+            int result = strIter.getOffset();
+            if (oStr != CollationElementIterator.NULLORDER) {
+                --result;
+            }
+            return result;
+
+            /*
+              //----------------------------------------------------------------
+              // JDK 1.2-specific API call
+              // return strIter.getOffset();
+              //----------------------------------------------------------------
+              // JDK 1.1 HACK (take out for 1.2-specific code)
+
+              // if we make it to here, we have a successful match.  Now we
+              // have to find out HOW MANY characters from the target string
+              // matched the prefix (there isn't necessarily a one-to-one
+              // mapping between collation elements and characters).
+              // In JDK 1.2, there's a simple getOffset() call we can use.
+              // In JDK 1.1, on the other hand, we have to go through some
+              // ugly contortions.  First, use the collator to compare the
+              // same number of characters from the prefix and target string.
+              // If they're equal, we're done.
+              collator.setStrength(Collator.PRIMARY);
+              if (str.length() >= prefix.length()
+              && collator.equals(str.substring(0, prefix.length()), prefix)) {
+              return prefix.length();
+              }
+
+              // if they're not equal, then we have to compare successively
+              // larger and larger substrings of the target string until we
+              // get to one that matches the prefix.  At that point, we know
+              // how many characters matched the prefix, and we can return.
+              int p = 1;
+              while (p <= str.length()) {
+              if (collator.equals(str.substring(0, p), prefix)) {
+              return p;
+              } else {
+              ++p;
+              }
+              }
+
+              // SHOULKD NEVER GET HERE!!!
+              return 0;
+              //----------------------------------------------------------------
+            */
+
+            // If lenient parsing is turned off, forget all that crap above.
+            // Just use String.startsWith() and be done with it.
+        } else {
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            } else {
+                return 0;
+            }
+        }
+    }
+
+    /*
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+/*    private int[] findText(String str, String key) {
+        return findText(str, key, 0);
+    }*/
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @param startingAt The index into "str" where the search is to
+     * begin
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key, int startingAt) {
+        // if lenient parsing is turned off, this is easy: just call
+        // String.indexOf() and we're done
+        if (!formatter.lenientParseEnabled()) {
+            return new int[] { str.indexOf(key, startingAt), key.length() };
+
+            // but if lenient parsing is turned ON, we've got some work
+            // ahead of us
+        } else {
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out of 1.2-specific code)
+
+            // in JDK 1.2, CollationElementIterator provides us with an
+            // API to map between character offsets and collation elements
+            // and we can do this by marching through the string comparing
+            // collation elements.  We can't do that in JDK 1.1.  Insted,
+            // we have to go through this horrible slow mess:
+            int p = startingAt;
+            int keyLen = 0;
+
+            // basically just isolate smaller and smaller substrings of
+            // the target string (each running to the end of the string,
+            // and with the first one running from startingAt to the end)
+            // and then use prefixLength() to see if the search key is at
+            // the beginning of each substring.  This is excruciatingly
+            // slow, but it will locate the key and tell use how long the
+            // matching text was.
+            while (p < str.length() && keyLen == 0) {
+                keyLen = prefixLength(str.substring(p), key);
+                if (keyLen != 0) {
+                    return new int[] { p, keyLen };
+                }
+                ++p;
+            }
+            // if we make it to here, we didn't find it.  Return -1 for the
+            // location.  The length should be ignored, but set it to 0,
+            // which should be "safe"
+            return new int[] { -1, 0 };
+
+            //----------------------------------------------------------------
+            // JDK 1.2 version of this routine
+            //RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            //
+            //CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            //CollationElementIterator keyIter = collator.getCollationElementIterator(key);
+            //
+            //int keyStart = -1;
+            //
+            //str.setOffset(startingAt);
+            //
+            //int oStr = strIter.next();
+            //int oKey = keyIter.next();
+            //while (oKey != CollationElementIterator.NULLORDER) {
+            //    while (oStr != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oStr) == 0)
+            //        oStr = strIter.next();
+            //
+            //    while (oKey != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oKey) == 0)
+            //        oKey = keyIter.next();
+            //
+            //    if (oStr == CollationElementIterator.NULLORDER) {
+            //        return new int[] { -1, 0 };
+            //    }
+            //
+            //    if (oKey == CollationElementIterator.NULLORDER) {
+            //        break;
+            //    }
+            //
+            //    if (CollationElementIterator.primaryOrder(oStr) ==
+            //            CollationElementIterator.primaryOrder(oKey)) {
+            //        keyStart = strIter.getOffset();
+            //        oStr = strIter.next();
+            //        oKey = keyIter.next();
+            //    } else {
+            //        if (keyStart != -1) {
+            //            keyStart = -1;
+            //            keyIter.reset();
+            //        } else {
+            //            oStr = strIter.next();
+            //        }
+            //    }
+            //}
+            //
+            //if (oKey == CollationElementIterator.NULLORDER) {
+            //    return new int[] { keyStart, strIter.getOffset() - keyStart };
+            //} else {
+            //    return new int[] { -1, 0 };
+            //}
+        }
+    }
+
+    /**
+     * Checks to see whether a string consists entirely of ignorable
+     * characters.
+     * @param str The string to test.
+     * @return true if the string is empty of consists entirely of
+     * characters that the number formatter's collator says are
+     * ignorable at the primary-order level.  false otherwise.
+     */
+    private boolean allIgnorable(String str) {
+        // if the string is empty, we can just return true
+        if (str.length() == 0) {
+            return true;
+        }
+
+        // if lenient parsing is turned on, walk through the string with
+        // a collation element iterator and make sure each collation
+        // element is 0 (ignorable) at the primary level
+        if (formatter.lenientParseEnabled()) {
+            RuleBasedCollator collator = (RuleBasedCollator)(formatter.getCollator());
+            CollationElementIterator iter = collator.getCollationElementIterator(str);
+
+            int o = iter.next();
+            while (o != CollationElementIterator.NULLORDER
+                   && CollationElementIterator.primaryOrder(o) == 0) {
+                o = iter.next();
+            }
+            return o == CollationElementIterator.NULLORDER;
+            // if lenient parsing is turned off, there is no such thing as
+            // an ignorable character: return true only if the string is empty
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/NFRuleSet.java b/src/com/ibm/icu/text/NFRuleSet.java
new file mode 100644
index 0000000..068552a
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRuleSet.java
@@ -0,0 +1,778 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+
+import java.text.*;
+import java.util.Vector;
+
+/**
+ * A collection of rules used by a RuleBasedNumberFormat to format and
+ * parse numbers.  It is the responsibility of a RuleSet to select an
+ * appropriate rule for formatting a particular number and dispatch
+ * control to it, and to arbitrate between different rules when parsing
+ * a number.
+ */
+
+final class NFRuleSet {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule set's name
+     */
+    private String name;
+
+    /**
+     * The rule set's regular rules
+     */
+    private NFRule[] rules;
+
+    /**
+     * The rule set's negative-number rule
+     */
+    private NFRule negativeNumberRule = null;
+
+    /**
+     * The rule set's fraction rules: element 0 is the proper fraction
+     * (0.x) rule, element 1 is the improper fraction (x.x) rule, and
+     * element 2 is the master (x.0) rule.
+     */
+    private NFRule[] fractionRules = new NFRule[3];
+
+    /**
+     * True if the rule set is a fraction rule set.  A fraction rule set
+     * is a rule set that is used to format the fractional part of a
+     * number.  It is called from a >> substitution in another rule set's
+     * fraction rule, and is only called upon to format values between
+     * 0 and 1.  A fraction rule set has different rule-selection
+     * behavior than a regular rule set.
+     */
+    private boolean isFractionRuleSet = false;
+    
+    /**
+     * Used to limit recursion for bad rule sets.
+     */
+    private int recursionCount = 0;
+
+    /**
+      * Limit of recursion.
+      */
+    private static final int RECURSION_LIMIT = 50;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /*
+     * Constructs a rule set.
+     * @param descriptions An array of Strings representing rule set
+     * descriptions.  On exit, this rule set's entry in the array will
+     * have been stripped of its rule set name and any trailing whitespace.
+     * @param index The index into "descriptions" of the description
+     * for the rule to be constructed
+     */
+    public NFRuleSet(String[] descriptions, int index) throws IllegalArgumentException {
+        String description = descriptions[index];
+
+    if (description.length() == 0) {
+      throw new IllegalArgumentException("Empty rule set description");
+    }
+
+        // if the description begins with a rule set name (the rule set
+        // name can be omitted in formatter descriptions that consist
+        // of only one rule set), copy it out into our "name" member
+        // and delete it from the description
+        if (description.charAt(0) == '%') {
+            int pos = description.indexOf(':');
+            if (pos == -1) {
+                throw new IllegalArgumentException("Rule set name doesn't end in colon");
+            } else {
+                name = description.substring(0, pos);
+                while (pos < description.length() && UCharacterProperty.isRuleWhiteSpace(description.
+                                charAt(++pos))) {
+                }
+                description = description.substring(pos);
+                descriptions[index] = description;
+            }
+
+        // if the description doesn't begin with a rule set name, its
+        // name is "%default"
+        } else {
+            name = "%default";
+        }
+
+        if (description.length() == 0) {
+            throw new IllegalArgumentException("Empty rule set description");
+        }
+
+        // all of the other members of NFRuleSet are initialized
+        // by parseRules()
+    }
+
+    /**
+     * Construct the subordinate data structures used by this object.
+     * This function is called by the RuleBasedNumberFormat constructor
+     * after all the rule sets have been created to actually parse
+     * the description and build rules from it.  Since any rule set
+     * can refer to any other rule set, we have to have created all of
+     * them before we can create anything else.
+     * @param description The textual description of this rule set
+     * @param owner The formatter that owns this rule set
+     */
+    public void parseRules(String                description,
+                           RuleBasedNumberFormat owner) {
+        // start by creating a Vector whose elements are Strings containing
+        // the descriptions of the rules (one rule per element).  The rules
+        // are separated by semicolons (there's no escape facility: ALL
+        // semicolons are rule delimiters)
+        Vector ruleDescriptions = new Vector();
+
+        int oldP = 0;
+        int p = description.indexOf(';');
+        while (oldP != -1) {
+            if (p != -1) {
+                ruleDescriptions.addElement(description.substring(oldP, p));
+                oldP = p + 1;
+            } else {
+                if (oldP < description.length()) {
+                    ruleDescriptions.addElement(description.substring(oldP));
+                }
+                oldP = p;
+            }
+            p = description.indexOf(';', p + 1);
+        }
+
+        // now go back through and build a vector of the rules themselves
+        // (the number of elements in the description list isn't necessarily
+        // the number of rules-- some descriptions may expend into two rules)
+        Vector tempRules = new Vector();
+
+        // we keep track of the rule before the one we're currently working
+        // on solely to support >>> substitutions
+        NFRule predecessor = null;
+        for (int i = 0; i < ruleDescriptions.size(); i++) {
+            // makeRules (a factory method on NFRule) will return either
+            // a single rule or an array of rules.  Either way, add them
+            // to our rule vector
+            Object temp = NFRule.makeRules((String)ruleDescriptions.elementAt(i),
+                            this, predecessor, owner);
+
+            if (temp instanceof NFRule) {
+                tempRules.addElement(temp);
+                predecessor = (NFRule)temp;
+            }
+            else if (temp instanceof NFRule[]) {
+                NFRule[] rulesToAdd = (NFRule[])temp;
+
+                for (int j = 0; j < rulesToAdd.length; j++) {
+                    tempRules.addElement(rulesToAdd[j]);
+                    predecessor = rulesToAdd[j];
+                }
+            }
+        }
+        // now we can bag the description list
+        ruleDescriptions = null;
+
+        // for rules that didn't specify a base value, their base values
+        // were initialized to 0.  Make another pass through the list and
+        // set all those rules' base values.  We also remove any special
+        // rules from the list and put them into their own member variables
+        long defaultBaseValue = 0;
+
+        // (this isn't a for loop because we might be deleting items from
+        // the vector-- we want to make sure we only increment i when
+        // we _didn't_ delete aything from the vector)
+        int i = 0;
+        while (i < tempRules.size()) {
+            NFRule rule = (NFRule)tempRules.elementAt(i);
+
+            switch ((int)rule.getBaseValue()) {
+                // if the rule's base value is 0, fill in a default
+                // base value (this will be 1 plus the preceding
+                // rule's base value for regular rule sets, and the
+                // same as the preceding rule's base value in fraction
+                // rule sets)
+                case 0:
+                    rule.setBaseValue(defaultBaseValue);
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+
+                // if it's the negative-number rule, copy it into its own
+                // data member and delete it from the list
+                case NFRule.NEGATIVE_NUMBER_RULE:
+                    negativeNumberRule = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the improper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.IMPROPER_FRACTION_RULE:
+                    fractionRules[0] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the proper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.PROPER_FRACTION_RULE:
+                    fractionRules[1] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the master rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.MASTER_RULE:
+                    fractionRules[2] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's a regular rule that already knows its base value,
+                // check to make sure the rules are in order, and update
+                // the default base value for the next rule
+                default:
+                    if (rule.getBaseValue() < defaultBaseValue) {
+                        throw new IllegalArgumentException("Rules are not in order, base: " + 
+                               rule.getBaseValue() + " < " + defaultBaseValue);
+                    }
+                    defaultBaseValue = rule.getBaseValue();
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+            }
+        }
+
+        // finally, we can copy the rules from the vector into a
+        // fixed-length array
+        rules = new NFRule[tempRules.size()];
+        tempRules.copyInto((Object[])rules);
+    }
+
+    /**
+     * Flags this rule set as a fraction rule set.  This function is
+     * called during the construction process once we know this rule
+     * set is a fraction rule set.  We don't know a rule set is a
+     * fraction rule set until we see it used somewhere.  This function
+     * is not ad must not be called at any time other than during
+     * construction of a RuleBasedNumberFormat.
+     */
+    public void makeIntoFractionRuleSet() {
+        isFractionRuleSet = true;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two rule sets for equality.
+     * @param that The other rule set
+     * @return true if the two rule sets are functionally equivalent.
+     */
+    public boolean equals(Object that) {
+        // if different classes, they're not equal
+        if (!(that instanceof NFRuleSet)) {
+            return false;
+        } else {
+            // otherwise, compare the members one by one...
+            NFRuleSet that2 = (NFRuleSet)that;
+
+            if (!name.equals(that2.name)
+        || !Utility.objectEquals(negativeNumberRule, that2.negativeNumberRule)
+        || !Utility.objectEquals(fractionRules[0], that2.fractionRules[0])
+        || !Utility.objectEquals(fractionRules[1], that2.fractionRules[1])
+        || !Utility.objectEquals(fractionRules[2], that2.fractionRules[2])
+        || rules.length != that2.rules.length
+                || isFractionRuleSet != that2.isFractionRuleSet) {
+
+                return false;
+            }
+
+            // ...then compare the rule lists...
+            for (int i = 0; i < rules.length; i++) {
+                if (!rules[i].equals(that2.rules[i])) {
+                    return false;
+                }
+            }
+
+            // ...and if we make it here, tney're equal
+            return true;
+        }
+    }
+
+
+    /**
+     * Builds a textual representation of a rule set.
+     * @return A textual representation of a rule set.  This won't
+     * necessarily be the same description that the rule set was
+     * constructed with, but it will produce the same results.
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // the rule set name goes first...
+        result.append(name + ":\n");
+
+        // followed by the regular rules...
+        for (int i = 0; i < rules.length; i++) {
+            result.append("    " + rules[i].toString() + "\n");
+        }
+
+        // followed by the special rules (if they exist)
+        if (negativeNumberRule != null) {
+            result.append("    " + negativeNumberRule.toString() + "\n");
+        }
+        if (fractionRules[0] != null) {
+            result.append("    " + fractionRules[0].toString() + "\n");
+        }
+        if (fractionRules[1] != null) {
+            result.append("    " + fractionRules[1].toString() + "\n");
+        }
+        if (fractionRules[2] != null) {
+            result.append("    " + fractionRules[2].toString() + "\n");
+        }
+
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Says whether this rule set is a fraction rule set.
+     * @return true if this rule is a fraction rule set; false if it isn't
+     */
+    public boolean isFractionSet() {
+        return isFractionRuleSet;
+    }
+
+    /**
+     * Returns the rule set's name
+     * @return The rule set's name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Return true if the rule set is public.
+     * @return true if the rule set is public
+     */
+    public boolean isPublic() {
+    return !name.startsWith("%%");
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats a long.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(long number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findNormalRule(number);
+
+        if (++recursionCount >= RECURSION_LIMIT) {
+            recursionCount = 0;
+            throw new IllegalStateException("Recursion limit exceeded when applying ruleSet " + name);
+        }
+        applicableRule.doFormat(number, toInsertInto, pos);
+        --recursionCount;
+    }
+
+    /**
+     * Formats a double.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(double number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findRule(number);
+
+        if (++recursionCount >= RECURSION_LIMIT) {
+            recursionCount = 0;
+            throw new IllegalStateException("Recursion limit exceeded when applying ruleSet " + name);
+        }
+        applicableRule.doFormat(number, toInsertInto, pos);
+        --recursionCount;
+    }
+
+    /**
+     * Selects an apropriate rule for formatting the number.
+     * @param number The number being formatted.
+     * @return The rule that should be used to format it
+     */
+    private NFRule findRule(double number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative number rule
+        // (if there isn't a negative-number rule, we pretend it's a
+        // positive number)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // if the number isn't an integer, we use one f the fraction rules...
+        if (number != Math.floor(number)) {
+            // if the number is between 0 and 1, return the proper
+            // fraction rule
+            if (number < 1 && fractionRules[1] != null) {
+                return fractionRules[1];
+            }
+
+            // otherwise, return the improper fraction rule
+            else if (fractionRules[0] != null) {
+                return fractionRules[0];
+            }
+        }
+
+        // if there's a master rule, use it to format the number
+        if (fractionRules[2] != null) {
+            return fractionRules[2];
+
+        // and if we haven't yet returned a rule, use findNormalRule()
+        // to find the applicable rule
+        } else {
+            return findNormalRule((long)Math.round(number));
+        }
+    }
+
+    /**
+     * If the value passed to findRule() is a positive integer, findRule()
+     * uses this function to select the appropriate rule.  The result will
+     * generally be the rule with the highest base value less than or equal
+     * to the number.  There is one exception to this: If that rule has
+     * two substitutions and a base value that is not an even multiple of
+     * its divisor, and the number itself IS an even multiple of the rule's
+     * divisor, then the result will be the rule that preceded the original
+     * result in the rule list.  (This behavior is known as the "rollback
+     * rule", and is used to handle optional text: a rule with optional
+     * text is represented internally as two rules, and the rollback rule
+     * selects appropriate between them.  This avoids things like "two
+     * hundred zero".)
+     * @param number The number being formatted
+     * @return The rule to use to format this number
+     */
+    private NFRule findNormalRule(long number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        // to find the rule (we should only go into this clause if the
+        // value is 0)
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative-number rule
+        // (if there isn't one, pretend the number is positive)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // we have to repeat the preceding two checks, even though we
+        // do them in findRule(), because the version of format() that
+        // takes a long bypasses findRule() and goes straight to this
+        // function.  This function does skip the fraction rules since
+        // we know the value is an integer (it also skips the master
+        // rule, since it's considered a fraction rule.  Skipping the
+        // master rule in this function is also how we avoid infinite
+        // recursion)
+
+        // binary-search the rule list for the applicable rule
+        // (a rule is used for all values from its base value to
+        // the next rule's base value)
+        int lo = 0;
+        int hi = rules.length;
+    if (hi > 0) {
+        while (lo < hi) {
+        int mid = (lo + hi) / 2;
+        if (rules[mid].getBaseValue() == number) {
+            return rules[mid];
+        }
+        else if (rules[mid].getBaseValue() > number) {
+            hi = mid;
+        }
+        else {
+            lo = mid + 1;
+        }
+        }
+        if (hi == 0) { // bad rule set
+        throw new IllegalStateException("The rule set " + name + " cannot format the value " + number);
+        }
+        NFRule result = rules[hi - 1];
+
+        // use shouldRollBack() to see whether we need to invoke the
+        // rollback rule (see shouldRollBack()'s documentation for
+        // an explanation of the rollback rule).  If we do, roll back
+        // one rule and return that one instead of the one we'd normally
+        // return
+        if (result.shouldRollBack(number)) {
+        if (hi == 1) { // bad rule set
+            throw new IllegalStateException("The rule set " + name + " cannot roll back from the rule '" +
+                            result + "'");
+        }
+        result = rules[hi - 2];
+        }
+        return result;
+    }
+    // else use the master rule
+    return fractionRules[2];
+    }
+
+    /**
+     * If this rule is a fraction rule set, this function is used by
+     * findRule() to select the most appropriate rule for formatting
+     * the number.  Basically, the base value of each rule in the rule
+     * set is treated as the denominator of a fraction.  Whichever
+     * denominator can produce the fraction closest in value to the
+     * number passed in is the result.  If there's a tie, the earlier
+     * one in the list wins.  (If there are two rules in a row with the
+     * same base value, the first one is used when the numerator of the
+     * fraction would be 1, and the second rule is used the rest of the
+     * time.
+     * @param number The number being formatted (which will always be
+     * a number between 0 and 1)
+     * @return The rule to use to format this number
+     */
+    private NFRule findFractionRuleSetRule(double number) {
+        // the obvious way to do this (multiply the value being formatted
+        // by each rule's base value until you get an integral result)
+        // doesn't work because of rounding error.  This method is more
+        // accurate
+
+        // find the least common multiple of the rules' base values
+        // and multiply this by the number being formatted.  This is
+        // all the precision we need, and we can do all of the rest
+        // of the math using integer arithmetic
+        long leastCommonMultiple = rules[0].getBaseValue();
+        for (int i = 1; i < rules.length; i++) {
+            leastCommonMultiple = lcm(leastCommonMultiple, rules[i].getBaseValue());
+        }
+        long numerator = (long)(Math.round(number * leastCommonMultiple));
+
+        // for each rule, do the following...
+        long tempDifference;
+        long difference = Long.MAX_VALUE;
+        int winner = 0;
+        for (int i = 0; i < rules.length; i++) {
+            // "numerator" is the numerator of the fraction is the
+            // denominator is the LCD.  The numerator if the the rule's
+            // base value is the denomiator is "numerator" times the
+            // base value divided bythe LCD.  Here we check to see if
+            // that's an integer, and if not, how close it is to being
+            // an integer.
+            tempDifference = numerator * rules[i].getBaseValue() % leastCommonMultiple;
+
+            // normalize the result of the above calculation: we want
+            // the numerator's distance from the CLOSEST multiple
+            // of the LCD
+            if (leastCommonMultiple - tempDifference < tempDifference) {
+                tempDifference = leastCommonMultiple - tempDifference;
+            }
+
+            // if this is as close as we've come, keep track of how close
+            // that is, and the line number of the rule that did it.  If
+            // we've scored a direct hit, we don't have to look at any more
+            // rules
+            if (tempDifference < difference) {
+                difference = tempDifference;
+                winner = i;
+                if (difference == 0) {
+                    break;
+                }
+            }
+        }
+
+        // if we have two successive rules that both have the winning base
+        // value, then the first one (the one we found above) is used if
+        // the numerator of the fraction is 1 and the second one is used if
+        // the numerator of the fraction is anything else (this lets us
+        // do things like "one third"/"two thirds" without haveing to define
+        // a whole bunch of extra rule sets)
+        if (winner + 1 < rules.length
+                && rules[winner + 1].getBaseValue() == rules[winner].getBaseValue()) {
+            if (Math.round(number * rules[winner].getBaseValue()) < 1
+                    || Math.round(number * rules[winner].getBaseValue()) >= 2) {
+                ++winner;
+            }
+        }
+
+        // finally, return the winning rule
+        return rules[winner];
+    }
+
+    /**
+     * Calculates the least common multiple of x and y.
+     */
+    private static long lcm(long x, long y) {
+        // binary gcd algorithm from Knuth, "The Art of Computer Programming,"
+        // vol. 2, 1st ed., pp. 298-299
+        long x1 = x;
+        long y1 = y;
+
+        int p2 = 0;
+        while ((x1 & 1) == 0 && (y1 & 1) == 0) {
+            ++p2;
+            x1 >>= 1;
+            y1 >>= 1;
+        }
+
+        long t;
+        if ((x1 & 1) == 1) {
+            t = -y1;
+        } else {
+            t = x1;
+        }
+
+        while (t != 0) {
+            while ((t & 1) == 0) {
+                t >>= 1;
+            }
+            if (t > 0) {
+                x1 = t;
+            } else {
+                y1 = -t;
+            }
+            t = x1 - y1;
+        }
+        long gcd = x1 << p2;
+
+        // x * y == gcd(x, y) * lcm(x, y)
+        return x / gcd * y;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string.  Matches the string to be parsed against each
+     * of its rules (with a base value less than upperBound) and returns
+     * the value produced by the rule that matched the most charcters
+     * in the source string.
+     * @param text The string to parse
+     * @param parsePosition The initial position is ignored and assumed
+     * to be 0.  On exit, this object has been updated to point to the
+     * first character position this rule set didn't consume.
+     * @param upperBound Limits the rules that can be allowed to match.
+     * Only rules whose base values are strictly less than upperBound
+     * are considered.
+     * @return The numerical result of parsing this string.  This will
+     * be the matching rule's base value, composed appropriately with
+     * the results of matching any of its substitutions.  The object
+     * will be an instance of Long if it's an integral value; otherwise,
+     * it will be an instance of Double.  This function always returns
+     * a valid object: If nothing matched the input string at all,
+     * this function returns new Long(0), and the parse position is
+     * left unchanged.
+     */
+    public Number parse(String text, ParsePosition parsePosition, double upperBound) {
+        // try matching each rule in the rule set against the text being
+        // parsed.  Whichever one matches the most characters is the one
+        // that determines the value we return.
+
+        ParsePosition highWaterMark = new ParsePosition(0);
+        Number result = new Long(0);
+        Number tempResult = null;
+
+        // dump out if there's no text to parse
+        if (text.length() == 0) {
+            return result;
+        }
+
+        // start by trying the nehative number rule (if there is one)
+        if (negativeNumberRule != null) {
+            tempResult = negativeNumberRule.doParse(text, parsePosition, false, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // then try each of the fraction rules
+        for (int i = 0; i < 3; i++) {
+            if (fractionRules[i] != null) {
+                tempResult = fractionRules[i].doParse(text, parsePosition, false, upperBound);
+                if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                    result = tempResult;
+                    highWaterMark.setIndex(parsePosition.getIndex());
+                }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+                parsePosition.setIndex(0);
+            }
+        }
+
+        // finally, go through the regular rules one at a time.  We start
+        // at the end of the list because we want to try matching the most
+        // sigificant rule first (this helps ensure that we parse
+        // "five thousand three hundred six" as
+        // "(five thousand) (three hundred) (six)" rather than
+        // "((five thousand three) hundred) (six)").  Skip rules whose
+        // base values are higher than the upper bound (again, this helps
+        // limit ambiguity by making sure the rules that match a rule's
+        // are less significant than the rule containing the substitutions)/
+        for (int i = rules.length - 1; i >= 0 && highWaterMark.getIndex() < text.length(); i--) {
+            if (!isFractionRuleSet && rules[i].getBaseValue() >= upperBound) {
+                continue;
+            }
+
+            tempResult = rules[i].doParse(text, parsePosition, isFractionRuleSet, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // finally, update the parse postion we were passed to point to the
+        // first character we didn't use, and return the result that
+        // cporresponds to that string of characters
+        parsePosition.setIndex(highWaterMark.getIndex());
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//        if (parsePosition.getIndex() == 0) {
+//            parsePosition.setErrorIndex(highWaterMark.getErrorIndex());
+//        }
+
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/text/NFSubstitution.java b/src/com/ibm/icu/text/NFSubstitution.java
new file mode 100644
index 0000000..21bb6a8
--- /dev/null
+++ b/src/com/ibm/icu/text/NFSubstitution.java
@@ -0,0 +1,1843 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+
+//===================================================================
+// NFSubstitution (abstract base class)
+//===================================================================
+
+/**
+ * An abstract class defining protocol for substitutions.  A substitution
+ * is a section of a rule that inserts text into the rule's rule text
+ * based on some part of the number being formatted.
+ * @author Richard Gillam
+ */
+abstract class NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The substitution's position in the rule text of the rule that owns it
+     */
+    int pos;
+
+    /**
+     * The rule set this substitution uses to format its result, or null.
+     * (Either this or numberFormat has to be non-null.)
+     */
+    NFRuleSet ruleSet = null;
+
+    /**
+     * The DecimalFormat this substitution uses to format its result,
+     * or null.  (Either this or ruleSet has to be non-null.)
+     */
+    DecimalFormat numberFormat = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses the description, creates the right kind of substitution,
+     * and initializes it based on the description.
+     * @param pos The substitution's position in the rule text of the
+     * rule that owns it.
+     * @param rule The rule containing this substitution
+     * @param rulePredecessor The rule preceding the one that contains
+     * this substitution in the rule set's rule list (this is used
+     * only for >>> substitutions).
+     * @param ruleSet The rule set containing the rule containing this
+     * substitution
+     * @param formatter The RuleBasedNumberFormat that ultimately owns
+     * this substitution
+     * @param description The description to parse to build the substitution
+     * (this is just the substring of the rule's description containing
+     * the substitution token itself)
+     * @return A new substitution constructed according to the description
+     */
+    public static NFSubstitution makeSubstitution(int pos,
+                                                  NFRule rule,
+                                                  NFRule rulePredecessor,
+                                                  NFRuleSet ruleSet,
+                                                  RuleBasedNumberFormat formatter,
+                                                  String description) {
+        // if the description is empty, return a NummSubstitution
+        if (description.length() == 0) {
+            return new NullSubstitution(pos, ruleSet, formatter, description);
+        }
+
+        switch (description.charAt(0)) {
+            // if the description begins with '<'...
+        case '<':
+            // throw an exception if the rule is a negative number
+            // rule
+            if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                throw new IllegalArgumentException("<< not allowed in negative-number rule");
+            }
+
+            // if the rule is a fraction rule, return an
+            // IntegralPartSubstitution
+            else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                return new IntegralPartSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule set containing the rule is a fraction
+            // rule set, return a NumeratorSubstitution
+            else if (ruleSet.isFractionSet()) {
+                return new NumeratorSubstitution(pos, rule.getBaseValue(),
+                                                 formatter.getDefaultRuleSet(), formatter, description);
+            }
+
+            // otherwise, return a MultiplierSubstitution
+            else {
+                return new MultiplierSubstitution(pos, rule.getDivisor(), ruleSet,
+                                                  formatter, description);
+            }
+
+            // if the description begins with '>'...
+        case '>':
+            // if the rule is a negative-number rule, return
+            // an AbsoluteValueSubstitution
+            if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                return new AbsoluteValueSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule is a fraction rule, return a
+            // FractionalPartSubstitution
+            else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                return new FractionalPartSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule set owning the rule is a fraction rule set,
+            // throw an exception
+            else if (ruleSet.isFractionSet()) {
+                throw new IllegalArgumentException(">> not allowed in fraction rule set");
+            }
+
+            // otherwise, return a ModulusSubstitution
+            else {
+                return new ModulusSubstitution(pos, rule.getDivisor(), rulePredecessor,
+                                               ruleSet, formatter, description);
+            }
+
+            // if the description begins with '=', always return a
+            // SameValueSubstitution
+        case '=':
+            return new SameValueSubstitution(pos, ruleSet, formatter, description);
+
+            // and if it's anything else, throw an exception
+        default:
+            throw new IllegalArgumentException("Illegal substitution character");
+        }
+    }
+
+    /**
+     * Base constructor for substitutions.  This constructor sets up the
+     * fields which are common to all substitutions.
+     * @param pos The substitution's position in the owning rule's rule
+     * text
+     * @param ruleSet The rule set that owns this substitution
+     * @param formatter The RuleBasedNumberFormat that owns this substitution
+     * @param description The substitution descriptor (i.e., the text
+     * inside the token characters)
+     */
+    NFSubstitution(int pos,
+                   NFRuleSet ruleSet,
+                   RuleBasedNumberFormat formatter,
+                   String description) {
+        // initialize the substitution's position in its parent rule
+        this.pos = pos;
+
+        // the description should begin and end with the same character.
+        // If it doesn't that's a syntax error.  Otherwise,
+        // makeSubstitution() was the only thing that needed to know
+        // about these characters, so strip them off
+        if (description.length() >= 2 && description.charAt(0) == description.charAt(
+                                                                                     description.length() - 1)) {
+            description = description.substring(1, description.length() - 1);
+        }
+        else if (description.length() != 0) {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+
+        // if the description was just two paired token characters
+        // (i.e., "<<" or ">>"), it uses the rule set it belongs to to
+        // format its result
+        if (description.length() == 0) {
+            this.ruleSet = ruleSet;
+        }
+
+        // if the description contains a rule set name, that's the rule
+        // set we use to format the result: get a reference to the
+        // names rule set
+        else if (description.charAt(0) == '%') {
+            this.ruleSet = formatter.findRuleSet(description);
+        }
+
+        // if the description begins with 0 or #, treat it as a
+        // DecimalFormat pattern, and initialize a DecimalFormat with
+        // that pattern (then set it to use the DecimalFormatSymbols
+        // belonging to our formatter)
+        else if (description.charAt(0) == '#' || description.charAt(0) == '0') {
+            this.numberFormat = new DecimalFormat(description);
+            this.numberFormat.setDecimalFormatSymbols(formatter.getDecimalFormatSymbols());
+        }
+
+        // if the description is ">>>", this substitution bypasses the
+        // usual rule-search process and always uses the rule that precedes
+        // it in its own rule set's rule list (this is used for place-value
+        // notations: formats where you want to see a particular part of
+        // a number even when it's 0)
+        else if (description.charAt(0) == '>') {
+            this.ruleSet = ruleSet; // was null, thai rules added to control space
+            this.numberFormat = null;
+        }
+
+        // and of the description is none of these things, it's a syntax error
+        else {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+    }
+
+    /**
+     * Set's the substitution's divisor.  Used by NFRule.setBaseValue().
+     * A no-op for all substitutions except multiplier and modulus
+     * substitutions.
+     * @param radix The radix of the divisor
+     * @param exponent The exponent of the divisor
+     */
+    public void setDivisor(int radix, int exponent) {
+        // a no-op for all substitutions except multiplier and modulus substitutions
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two substitutions for equality
+     * @param The substitution to compare this one to
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        // compare class and all of the fields all substitutions have
+        // in common
+        if (this.getClass() == that.getClass()) {
+            NFSubstitution that2 = (NFSubstitution)that;
+
+            return pos == that2.pos
+                && (ruleSet == null ? that2.ruleSet == null : true) // can't compare tree structure, no .equals or recurse
+                && (numberFormat == null ? (that2.numberFormat == null) : numberFormat.equals(that2.numberFormat));
+        }
+        return false;
+    }
+
+    /**
+     * Returns a textual description of the substitution
+     * @return A textual description of the substitution.  This might
+     * not be identical to the description it was created from, but
+     * it'll produce the same result.
+     */
+    public String toString() {
+        // use tokenChar() to get the character at the beginning and
+        // end of the substitution token.  In between them will go
+        // either the name of the rule set it uses, or the pattern of
+        // the DecimalFormat it uses
+        if (ruleSet != null) {
+            return tokenChar() + ruleSet.getName() + tokenChar();
+        } else {
+            return tokenChar() + numberFormat.toPattern() + tokenChar();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+        if (ruleSet != null) {
+            // perform a transformation on the number that is dependent
+            // on the type of substitution this is, then just call its
+            // rule set's format() method to format the result
+            long numberToFormat = transformNumber(number);
+
+            ruleSet.format(numberToFormat, toInsertInto, position + pos);
+        } else {
+            // or perform the transformation on the number (preserving
+            // the result's fractional part if the formatter it set
+            // to show it), then use that formatter's format() method
+            // to format the result
+            double numberToFormat = transformNumber((double)number);
+            if (numberFormat.getMaximumFractionDigits() == 0) {
+                numberToFormat = Math.floor(numberToFormat);
+            }
+
+            toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+        }
+    }
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        double numberToFormat = transformNumber(number);
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, position + pos);
+
+            // if the result isn't an integer, then call either our rule set's
+            // format() method or our DecimalFormat's format() method to
+            // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, position + pos);
+            } else {
+                toInsertInto.insert(position + this.pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract long transformNumber(long number);
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract double transformNumber(double number);
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string using the rule set or DecimalFormat belonging
+     * to this substitution.  If there's a match, a mathematical
+     * operation (the inverse of the one used in formatting) is
+     * performed on the result of the parse and the value passed in
+     * and returned as the result.  The parse position is updated to
+     * point to the first unmatched character in the string.
+     * @param text The string to parse
+     * @param parsePosition On entry, ignored, but assumed to be 0.
+     * On exit, this is updated to point to the first unmatched
+     * character (or 0 if the substitution didn't match)
+     * @param baseValue A partial parse result that should be
+     * combined with the result of this parse
+     * @param upperBound When searching the rule set for a rule
+     * matching the string passed in, only rules with base values
+     * lower than this are considered
+     * @param lenientParse If true and matching against rules fails,
+     * the substitution will also try matching the text against
+     * numerals using a default-costructed NumberFormat.  If false,
+     * no extra work is done.  (This value is false whenever the
+     * formatter isn't in lenient-parse mode, but is also false
+     * under some conditions even when the formatter _is_ in
+     * lenient-parse mode.)
+     * @return If there's a match, this is the result of composing
+     * baseValue with whatever was returned from matching the
+     * characters.  This will be either a Long or a Double.  If there's
+     * no match this is new Long(0) (not null), and parsePosition
+     * is left unchanged.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                          double upperBound, boolean lenientParse) {
+        Number tempResult;
+
+        // figure out the highest base value a rule can have and match
+        // the text being parsed (this varies according to the type of
+        // substitutions: multiplier, modulus, and numerator substitutions
+        // restrict the search to rules with base values lower than their
+        // own; same-value substitutions leave the upper bound wherever
+        // it was, and the others allow any rule to match
+        upperBound = calcUpperBound(upperBound);
+
+        // use our rule set to parse the text.  If that fails and
+        // lenient parsing is enabled (this is always false if the
+        // formatter's lenient-parsing mode is off, but it may also
+        // be false even when the formatter's lenient-parse mode is
+        // on), then also try parsing the text using a default-
+        // constructed NumberFormat
+        if (ruleSet != null) {
+            tempResult = ruleSet.parse(text, parsePosition, upperBound);
+            if (lenientParse && !ruleSet.isFractionSet() && parsePosition.getIndex() == 0) {
+                tempResult = NumberFormat.getInstance().parse(text, parsePosition);
+            }
+
+            // ...or use our DecimalFormat to parse the text
+        } else {
+            tempResult = numberFormat.parse(text, parsePosition);
+        }
+
+        // if the parse was successful, we've already advanced the caller's
+        // parse position (this is the one function that doesn't have one
+        // of its own).  Derive a parse result and return it as a Long,
+        // if possible, or a Double
+        if (parsePosition.getIndex() != 0) {
+            double result = tempResult.doubleValue();
+
+            // composeRuleValue() produces a full parse result from
+            // the partial parse result passed to this function from
+            // the caller (this is either the owning rule's base value
+            // or the partial result obtained from composing the
+            // owning rule's base value with its other substitution's
+            // parse result) and the partial parse result obtained by
+            // matching the substitution (which will be the same value
+            // the caller would get by parsing just this part of the
+            // text with RuleBasedNumberFormat.parse() ).  How the two
+            // values are used to derive the full parse result depends
+            // on the types of substitutions: For a regular rule, the
+            // ultimate result is its multiplier substitution's result
+            // times the rule's divisor (or the rule's base value) plus
+            // the modulus substitution's result (which will actually
+            // supersede part of the rule's base value).  For a negative-
+            // number rule, the result is the negative of its substitution's
+            // result.  For a fraction rule, it's the sum of its two
+            // substitution results.  For a rule in a fraction rule set,
+            // it's the numerator substitution's result divided by
+            // the rule's base value.  Results from same-value substitutions
+            // propagate back upard, and null substitutions don't affect
+            // the result.
+            result = composeRuleValue(result, baseValue);
+            if (result == (long)result) {
+                return new Long((long)result);
+            } else {
+                return new Double(result);
+            }
+
+            // if the parse was UNsuccessful, return 0
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Derives a new value from the two values passed in.  The two values
+     * are typically either the base values of two rules (the one containing
+     * the substitution and the one matching the substitution) or partial
+     * parse results derived in some other way.  The operation is generally
+     * the inverse of the operation performed by transformNumber().
+     * @param newRuleValue The value produced by matching this substitution
+     * @param oldRuleValue The value that was passed to the substitution
+     * by the rule that owns it
+     * @return A third value derived from the other two, representing a
+     * partial parse result
+     */
+    public abstract double composeRuleValue(double newRuleValue, double oldRuleValue);
+
+    /**
+     * Calculates an upper bound when searching for a rule that matches
+     * this substitution.  Rules with base values greater than or equal
+     * to upperBound are not considered.
+     * @param oldUpperBound The current upper-bound setting.  The new
+     * upper bound can't be any higher.
+     */
+    public abstract double calcUpperBound(double oldUpperBound);
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the substitution's position in the rule that owns it.
+     * @return The substitution's position in the rule that owns it.
+     */
+    public final int getPos() {
+        return pos;
+    }
+
+    /**
+     * Returns the character used in the textual representation of
+     * substitutions of this type.  Used by toString().
+     * @return This substitution's token character.
+     */
+    abstract char tokenChar();
+
+    /**
+     * Returns true if this is a null substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of NullSubstitution
+     */
+    public boolean isNullSubstitution() {
+        return false;
+    }
+
+    /**
+     * Returns true if this is a modulus substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of ModulusSubstitution
+     */
+    public boolean isModulusSubstitution() {
+        return false;
+    }
+}
+
+//===================================================================
+// SameValueSubstitution
+//===================================================================
+
+/**
+ * A substitution that passes the value passed to it through unchanged.
+ * Represented by == in rule descriptions.
+ */
+class SameValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a SameValueSubstution.  This function just uses the
+     * superclass constructor, but it performs a check that this
+     * substitution doesn't call the rule set that owns it, since that
+     * would lead to infinite recursion.
+     */
+    SameValueSubstitution(int pos,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals("==")) {
+            throw new IllegalArgumentException("== is not a legal token");
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public double transformNumber(double number) {
+        return number;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue and ignores oldRuleValue. (The value we got
+     * matching the substitution supersedes the value of the rule
+     * that owns the substitution.)
+     * @param newRuleValue The value resulting from matching the substituion
+     * @param oldRuleValue The value of the rule containing the
+     * substitution.
+     * @return newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue;
+    }
+
+    /**
+     * SameValueSubstitution doesn't change the upper bound.
+     * @param oldUpperBound The current upper bound.
+     * @return oldUpperBound
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return oldUpperBound;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a SameValueSubstitution is =.
+     * @return '='
+     */
+    char tokenChar() {
+        return '=';
+    }
+}
+
+//===================================================================
+// MultiplierSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the rule's
+ * divisor and formats the quotient.  Represented by &lt;&lt; in normal
+ * rules.
+ */
+class MultiplierSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule that owns this substitution.
+     */
+    double divisor;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a MultiplierSubstitution.  This uses the superclass
+     * constructor to initialize most members, but this substitution
+     * also maintains its own copy of its rule's divisor.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The owning rule's divisor
+     * @ruleSet The ruleSet this substitution uses to format its result
+     * @formatter The formatter that owns this substitution
+     * @description The description describing this substitution
+     */
+    MultiplierSubstitution(int pos,
+                           double divisor,
+                           NFRuleSet ruleSet,
+                           RuleBasedNumberFormat formatter,
+                           String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor affects the behavior of this
+        // substitution.  Rather than keeping a back-pointer to the
+        // rule, we keep a copy of the divisor
+        this.divisor = divisor;
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor (" + divisor + ") " + description.substring(0, pos) + 
+                     " | " + description.substring(pos));
+    }
+    }
+
+    /**
+     * Sets the substitution's divisor based on the values passed in.
+     * @param radix The radix of the divisor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+
+    if (divisor == 0) {
+        throw new IllegalStateException("Substitution with divisor 0");
+    }
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the superclass's equals() function by comparing divisors.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equal
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            MultiplierSubstitution that2 = (MultiplierSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * @param number The number being formatted.
+     * @return "number" divided by the rule's divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number / divisor);
+    }
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * This is an integral quotient if we're filling in the substitution
+     * using another rule set, but it's the full quotient (integral and
+     * fractional parts) if we're filling in the substitution using
+     * a DecimalFormat.  (This allows things such as "1.2 million".)
+     * @param number The number being formatted
+     * @return "number" divided by the rule's divisor
+     */
+    public double transformNumber(double number) {
+        if (ruleSet == null) {
+            return number / divisor;
+        } else {
+            return Math.floor(number / divisor);
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue times the divisor.  Ignores oldRuleValue.
+     * (The result of matching a << substitution supersedes the base
+     * value of the rule that contains it.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return newRuleValue * divisor
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue * divisor;
+    }
+
+    /**
+     * Sets the upper bound down to the rule's divisor.
+     * @param oldUpperBound Ignored.
+     * @return The rule's divisor.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a multiplier substitution is &lt;.
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// ModulusSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the its rule's
+ * divisor and formats the remainder.  Represented by "&gt;&gt;" in a
+ * regular rule.
+ */
+class ModulusSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule owning this substitution
+     */
+    double divisor;
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, the rule to use to format
+     * the substitution value.  Otherwise, null.
+     */
+    NFRule ruleToUse;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a ModulusSubstution.  In addition to the inherited
+     * members, a ModulusSubstitution keeps track of the divisor of the
+     * rule that owns it, and may also keep a reference to the rule
+     * that precedes the rule containing this substitution in the rule
+     * set's rule list.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The divisor of the rule that owns this substitution
+     * @param rulePredecessor The rule that precedes this substitution's
+     * rule in its rule set's rule list
+     * @param formatter The RuleBasedNumberFormat owning this substitution
+     * @param description The description for this substitution
+     */
+    ModulusSubstitution(int pos,
+                        double divisor,
+                        NFRule rulePredecessor,
+                        NFRuleSet ruleSet,
+                        RuleBasedNumberFormat formatter,
+                        String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor controls the behavior of this
+        // substitution: rather than keeping a backpointer to the rule,
+        // we keep a copy of the divisor
+        this.divisor = divisor;
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor (" + divisor + ") "+ description.substring(0, pos) + 
+                     " | " + description.substring(pos));
+    }
+
+        // the >>> token doesn't alter how this substituion calculates the
+        // values it uses for formatting and parsing, but it changes
+        // what's done with that value after it's obtained: >>> short-
+        // circuits the rule-search process and goes straight to the
+        // specified rule to format the substitution value
+        if (description.equals(">>>")) {
+            ruleToUse = rulePredecessor;
+        } else {
+            ruleToUse = null;
+        }
+    }
+
+    /**
+     * Makes the substitution's divisor conform to that of the rule
+     * that owns it.  Used when the divisor is determined after creation.
+     * @param radix The radix of the divsor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor");
+    }
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the inherited equals() function by comparing divisors and
+     * ruleToUse.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            ModulusSubstitution that2 = (ModulusSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param position The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            long numberToFormat = transformNumber(number);
+            ruleToUse.doFormat(numberToFormat, toInsertInto, position + pos);
+        }
+    }
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param position The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            double numberToFormat = transformNumber(number);
+
+            ruleToUse.doFormat(numberToFormat, toInsertInto, position + pos);
+        }
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number % divisor);
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number % divisor);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, match only against ruleToUse.
+     * Otherwise, use the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, updated on exit to point to
+     * the first unmatched character.
+     * @param baseValue The partial parse result prior to calling this
+     * routine.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if this isn't a >>> substitution, we can just use the
+        // inherited parse() routine to do the parsing
+        if (ruleToUse == null) {
+            return super.doParse(text, parsePosition, baseValue, upperBound, lenientParse);
+
+        // but if it IS a >>> substitution, we have to do it here: we
+        // use the specific rule's doParse() method, and then we have to
+        // do some of the other work of NFRuleSet.parse()
+        } else {
+            Number tempResult = ruleToUse.doParse(text, parsePosition, false, upperBound);
+
+            if (parsePosition.getIndex() != 0) {
+                double result = tempResult.doubleValue();
+
+                result = composeRuleValue(result, baseValue);
+                if (result == (long)result) {
+                    return new Long((long)result);
+                } else {
+                    return new Double(result);
+                }
+            } else {
+                return tempResult;
+            }
+        }
+    }
+
+    /**
+     * Returns the highest multiple of the rule's divisor that its less
+     * than or equal to oldRuleValue, plus newRuleValue.  (The result
+     * is the sum of the result of parsing the substitution plus the
+     * base valueof the rule containing the substitution, but if the
+     * owning rule's base value isn't an even multiple of its divisor,
+     * we have to round it down to a multiple of the divisor, or we
+     * get unwanted digits in the result.)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound down to the owning rule's divisor
+     * @param oldUpperBound Ignored
+     * @return The owning rule's dvisor
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true.  This _is_ a ModulusSubstitution.
+     * @return true
+     */
+    public boolean isModulusSubstitution() {
+        return true;
+    }
+
+    /**
+     * The token character of a ModulusSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// IntegralPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the number's integral part.  This is
+ * represented by &lt;&lt; in a fraction rule.
+ */
+class IntegralPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an IntegralPartSubstitution.  This just calls
+     * the superclass constructor.
+     */
+    IntegralPartSubstitution(int pos,
+                             NFRuleSet ruleSet,
+                             RuleBasedNumberFormat formatter,
+                             String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number's integral part. (For a long, that's just the
+     * number unchanged.)
+     * @param number The number being formatted
+     * @return "number" unchanged
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns the number's integral part.
+     * @param number The integral part of the number being formatted
+     * @return floor(number)
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the sum of the result of parsing the substitution and the
+     * owning rule's base value.  (The owning rule, at best, has an
+     * integral-part substitution and a fractional-part substitution,
+     * so we can safely just add them.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The partial result of the parse prior to
+     * calling this function
+     * @return oldRuleValue + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * An IntegralPartSubstitution sets the upper bound back up so all
+     * potentially matching rules are considered.
+     * @param oldUpperBound Ignored
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * An IntegralPartSubstitution's token character is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// FractionalPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the fractional part of a number.  This is
+ * represented by &gt;&gt; in a fraction rule.
+ */
+class FractionalPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * true if this substitution should have the default "by digits"
+     * behavior, false otherwise
+     */
+    private boolean byDigits = false;
+
+    /**
+     * true if we automatically insert spaces to separate names of digits
+     * set to false by '>>>' in fraction rules, used by Thai.
+     */
+    private boolean useSpaces = true;
+
+    /*
+     * The largest number of digits after the decimal point that this
+     * object will show in "by digits" mode
+     */
+    //private static final int MAXDECIMALDIGITS = 18; // 8
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a FractionalPartSubstitution.  This object keeps a flag
+     * telling whether it should format by digits or not.  In addition,
+     * it marks the rule set it calls (if any) as a fraction rule set.
+     */
+    FractionalPartSubstitution(int pos,
+                               NFRuleSet ruleSet,
+                               RuleBasedNumberFormat formatter,
+                               String description) {
+        super(pos, ruleSet, formatter, description);
+//    boolean chevron = description.startsWith(">>") || ruleSet == this.ruleSet;
+//      if (chevron || ruleSet == this.ruleSet) {
+
+        if (description.equals(">>") || description.equals(">>>") || ruleSet == this.ruleSet) {
+            byDigits = true;
+            if (description.equals(">>>")) {
+              useSpaces = false;
+            }
+        } else {
+            this.ruleSet.makeIntoFractionRuleSet();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, fills in the substitution one decimal digit
+     * at a time using the rule set containing this substitution.
+     * Otherwise, uses the superclass function.
+     * @param number The number being formatted
+     * @param toInsertInto The string to insert the result of formatting
+     * the substitution into
+     * @param position The position of the owning rule's rule text in
+     * toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // if we're not in "byDigits" mode, just use the inherited
+        // doSubstitution() routine
+        if (!byDigits) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // if we're in "byDigits" mode, transform the value into an integer
+        // by moving the decimal point eight places to the right and
+        // pulling digits off the right one at a time, formatting each digit
+        // as an integer using this substitution's owning rule set
+        // (this is slower, but more accurate, than doing it from the
+        // other end)
+        } else {
+//              int numberToFormat = (int)Math.round(transformNumber(number) * Math.pow(
+//                              10, MAXDECIMALDIGITS));
+//        long numberToFormat = (long)Math.round(transformNumber(number) * Math.pow(10, MAXDECIMALDIGITS));
+
+        // just print to string and then use that
+        DigitList dl = new DigitList();
+        dl.set(number, 20, true);
+
+            // this flag keeps us from formatting trailing zeros.  It starts
+            // out false because we're pulling from the right, and switches
+            // to true the first time we encounter a non-zero digit
+//              boolean doZeros = false;
+//          System.out.println("class: " + getClass().getName());
+//          System.out.println("number: " + number + " transformed: " + transformNumber(number));
+//          System.out.println("formatting " + numberToFormat);
+//              for (int i = 0; i < MAXDECIMALDIGITS; i++) {
+//                  int digit = (int)(numberToFormat % 10);
+//          System.out.println("   #: '" + numberToFormat + "'" + " digit '" + digit + "'");
+//                  if (digit != 0 || doZeros) {
+//                      if (doZeros && useSpaces) {
+//                          toInsertInto.insert(pos + this.pos, ' ');
+//                      }
+//                      doZeros = true;
+//                      ruleSet.format(digit, toInsertInto, pos + this.pos);
+//                  }
+//                  numberToFormat /= 10;
+//              }
+
+        boolean pad = false;
+        while (dl.count > Math.max(0, dl.decimalAt)) {
+        if (pad && useSpaces) {
+            toInsertInto.insert(position + pos, ' ');
+        } else {
+            pad = true;
+        }
+        ruleSet.format(dl.digits[--dl.count] - '0', toInsertInto, position + pos);
+        }
+        while (dl.decimalAt < 0) {
+        if (pad && useSpaces) {
+            toInsertInto.insert(position + pos, ' ');
+        } else {
+            pad = true;
+        }
+        ruleSet.format(0, toInsertInto, position + pos);
+        ++dl.decimalAt;
+        }
+    }
+    }
+
+    /**
+     * Returns the fractional part of the number, which will always be
+     * zero if it's a long.
+     * @param number The number being formatted
+     * @return 0
+     */
+    public long transformNumber(long number) {
+        return 0;
+    }
+
+    /**
+     * Returns the fractional part of the number.
+     * @param number The number being formatted.
+     * @return number - floor(number)
+     */
+    public double transformNumber(double number) {
+        return number - Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, parses the string as if it were a string
+     * of individual digits; otherwise, uses the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, but updated on exit to point
+     * to the first unmatched character
+     * @param baseValue The partial parse result prior to entering this
+     * function
+     * @param upperBound Only consider rules with base values lower than
+     * this when filling in the substitution
+     * @param lenientParse If true, try matching the text as numerals if
+     * matching as words doesn't work
+     * @return If the match was successful, the current partial parse
+     * result; otherwise new Long(0).  The result is either a Long or
+     * a Double.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if we're not in byDigits mode, we can just use the inherited
+        // doParse()
+        if (!byDigits) {
+            return super.doParse(text, parsePosition, baseValue, 0, lenientParse);
+
+        // if we ARE in byDigits mode, parse the text one digit at a time
+        // using this substitution's owning rule set (we do this by setting
+        // upperBound to 10 when calling doParse() ) until we reach
+        // nonmatching text
+        } else {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            double result = 0;
+        int digit;
+//              double p10 = 0.1;
+
+//              while (workText.length() > 0 && workPos.getIndex() != 0) {
+//                  workPos.setIndex(0);
+//                  digit = ruleSet.parse(workText, workPos, 10).intValue();
+//                  if (lenientParse && workPos.getIndex() == 0) {
+//                      digit = NumberFormat.getInstance().parse(workText, workPos).intValue();
+//                  }
+
+//                  if (workPos.getIndex() != 0) {
+//                      result += digit * p10;
+//                      p10 /= 10;
+//                      parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+//                      workText = workText.substring(workPos.getIndex());
+//                      while (workText.length() > 0 && workText.charAt(0) == ' ') {
+//                          workText = workText.substring(1);
+//                          parsePosition.setIndex(parsePosition.getIndex() + 1);
+//                      }
+//                  }
+//              }
+
+
+        DigitList dl = new DigitList();
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                digit = ruleSet.parse(workText, workPos, 10).intValue();
+                if (lenientParse && workPos.getIndex() == 0) {
+                    digit = NumberFormat.getInstance().parse(workText, workPos).intValue();
+                }
+
+                if (workPos.getIndex() != 0) {
+            dl.append('0'+digit);
+
+                    parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                    workText = workText.substring(workPos.getIndex());
+                    while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                        workText = workText.substring(1);
+                        parsePosition.setIndex(parsePosition.getIndex() + 1);
+                    }
+                }
+            }
+        result = dl.count == 0 ? 0 : dl.getDouble();
+
+            result = composeRuleValue(result, baseValue);
+            return new Double(result);
+        }
+    }
+
+    /**
+     * Returns the sum of the two partial parse results.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return newRuleValue + oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * Not used.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;   // this value is ignored
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a FractionalPartSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// AbsoluteValueSubstitution
+//===================================================================
+
+ /**
+  * A substitution that formats the absolute value of the number.
+  * This substition is represented by &gt;&gt; in a negative-number rule.
+  */
+class AbsoluteValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an AbsoluteValueSubstitution.  This just uses the
+     * superclass constructor.
+     */
+    AbsoluteValueSubstitution(int pos,
+                              NFRuleSet ruleSet,
+                              RuleBasedNumberFormat formatter,
+                              String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public long transformNumber(long number) {
+        return Math.abs(number);
+    }
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public double transformNumber(double number) {
+        return Math.abs(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the addtive inverse of the result of parsing the
+     * substitution (this supersedes the earlier partial result)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return -newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return -newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound beck up to consider all rules
+     * @param oldUpperBound Ignored.
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for an AbsoluteValueSubstitution is &gt;
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// NumeratorSubstitution
+//===================================================================
+
+/**
+ * A substitution that multiplies the number being formatted (which is
+ * between 0 and 1) by the base value of the rule that owns it and
+ * formats the result.  It is represented by &lt;&lt; in the rules
+ * in a fraction rule set.
+ */
+class NumeratorSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The denominator of the fraction we're finding the numerator for.
+     * (The base value of the rule that owns this substitution.)
+     */
+    double denominator;
+
+    /**
+     * True if we format leading zeros (this is a hack for Hebrew spellout)
+     */
+    boolean withZeros;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NumberatorSubstitution.  In addition to the inherited
+     * fields, a NumeratorSubstitution keeps track of a denominator, which
+     * is merely the base value of the rule that owns it.
+     */
+    NumeratorSubstitution(int pos,
+                          double denominator,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, fixdesc(description));
+
+        // this substitution's behavior depends on the rule's base value
+        // Rather than keeping a backpointer to the rule, we copy its
+        // base value here
+        this.denominator = denominator;
+        
+        this.withZeros = description.endsWith("<<");
+    }
+
+    static String fixdesc(String description) {
+        return description.endsWith("<<") 
+            ? description.substring(0,description.length()-1) 
+            : description;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two NumeratorSubstitutions for equality
+     * @param that The other NumeratorSubstitution
+     * @return true if the two objects are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            NumeratorSubstitution that2 = (NumeratorSubstitution)that;
+            return denominator == that2.denominator;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        //String s = toInsertInto.toString();
+        double numberToFormat = transformNumber(number);
+
+        if (withZeros && ruleSet != null) {
+            // if there are leading zeros in the decimal expansion then emit them
+            long nf = (long)numberToFormat;
+            int len = toInsertInto.length();
+            while ((nf *= 10) < denominator) {
+                toInsertInto.insert(position + pos, ' ');
+                ruleSet.format(0, toInsertInto, position + pos);
+            }
+            position += toInsertInto.length() - len;
+        }
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, position + pos);
+
+            // if the result isn't an integer, then call either our rule set's
+            // format() method or our DecimalFormat's format() method to
+            // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, position + pos);
+            } else {
+                toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public long transformNumber(long number) {
+        return Math.round(number * denominator);
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public double transformNumber(double number) {
+        return Math.round(number * denominator);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Dispatches to the inherited version of this function, but makes
+     * sure that lenientParse is off.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // we don't have to do anything special to do the parsing here,
+        // but we have to turn lenient parsing off-- if we leave it on,
+        // it SERIOUSLY messes up the algorithm
+
+        // if withZeros is true, we need to count the zeros
+        // and use that to adjust the parse result
+        int zeroCount = 0;
+        if (withZeros) {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            //int digit;
+
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                /*digit = */ruleSet.parse(workText, workPos, 1).intValue(); // parse zero or nothing at all
+                if (workPos.getIndex() == 0) {
+                    // we failed, either there were no more zeros, or the number was formatted with digits
+                    // either way, we're done
+                    break;
+                }
+
+                ++zeroCount;
+                parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                workText = workText.substring(workPos.getIndex());
+                while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                    workText = workText.substring(1);
+                    parsePosition.setIndex(parsePosition.getIndex() + 1);
+                }
+            }
+
+            text = text.substring(parsePosition.getIndex()); // arrgh!
+            parsePosition.setIndex(0);
+        }
+
+        // we've parsed off the zeros, now let's parse the rest from our current position
+        Number result =  super.doParse(text, parsePosition, withZeros ? 1 : baseValue, upperBound, false);
+
+        if (withZeros) {
+            // any base value will do in this case.  is there a way to
+            // force this to not bother trying all the base values?
+            
+            // compute the 'effective' base and prescale the value down
+            long n = result.longValue();
+            long d = 1;
+            int pow = 0;
+            while (d <= n) {
+                d *= 10;
+                ++pow;
+            }
+            // now add the zeros
+            while (zeroCount > 0) {
+                d *= 10;
+                --zeroCount;
+            }
+            // d is now our true denominator
+            result = new Double(n/(double)d);
+        }
+
+        return result;
+    }
+
+    /**
+     * Divides the result of parsing the substitution by the partial
+     * parse result.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The owning rule's base value
+     * @return newRuleValue / oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue / oldRuleValue;
+    }
+
+    /**
+     * Sets the uper bound down to this rule's base value
+     * @param oldUpperBound Ignored
+     * @return The base value of the rule owning this substitution
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a NumeratorSubstitution is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// NullSubstitution
+//===================================================================
+
+/**
+ * A substitution which does nothing.  This class exists just to simplify
+ * the logic in some other routines so that they don't have to worry
+ * about how many substitutions a rule has.
+ */
+class NullSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NullSubstitution.  This just delegates to the superclass
+     * constructor, but the only value we really care about is the position.
+     */
+    NullSubstitution(int pos,
+                     NFRuleSet ruleSet,
+                     RuleBasedNumberFormat formatter,
+                     String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Only checks for class equality
+     */
+    public boolean equals(Object that) {
+        return super.equals(that);
+    }
+
+    /**
+     * NullSubstitutions don't show up in the textual representation
+     * of a RuleBasedNumberFormat
+     */
+    public String toString() {
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+    }
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public long transformNumber(long number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double transformNumber(double number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the partial parse result unchanged
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        if (baseValue == (long)baseValue) {
+            return new Long((long)baseValue);
+        } else {
+            return new Double(baseValue);
+        }
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true (this _is_ a NullSubstitution).
+     * @return true
+     */
+    public boolean isNullSubstitution() {
+        return true;
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    char tokenChar() {
+        return ' ';
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/text/NameUnicodeTransliterator.java b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
new file mode 100644
index 0000000..b567ced
--- /dev/null
+++ b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UCharacterName;
+
+/**
+ * A transliterator that performs name to character mapping.
+ * @author Alan Liu
+ */
+class NameUnicodeTransliterator extends Transliterator {
+
+    char openDelimiter;
+    char closeDelimiter;
+
+    static final String _ID = "Name-Any";
+
+    static final String OPEN_PAT    = "\\N~{~";
+    static final char   OPEN_DELIM  = '\\'; // first char of OPEN_PAT
+    static final char   CLOSE_DELIM = '}';
+    static final char   SPACE       = ' ';
+
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new NameUnicodeTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public NameUnicodeTransliterator(UnicodeFilter filter) {
+        super(_ID, filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+
+        int maxLen = UCharacterName.getInstance().getMaxCharNameLength() + 1; // allow for temporary trailing space
+
+        StringBuffer name = new StringBuffer(maxLen);
+
+        // Get the legal character set
+        UnicodeSet legal = new UnicodeSet();
+        UCharacterName.getInstance().getCharNameCharacters(legal);
+
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+
+        // Modes:
+        // 0 - looking for open delimiter
+        // 1 - after open delimiter
+        int mode = 0;
+        int openPos = -1; // open delim candidate pos
+        
+        int c;
+        while (cursor < limit) {
+            c = text.char32At(cursor);
+
+            switch (mode) {
+            case 0: // looking for open delimiter
+                if (c == OPEN_DELIM) { // quick check first
+                    openPos = cursor;
+                    int i = Utility.parsePattern(OPEN_PAT, text, cursor, limit);
+                    if (i >= 0 && i < limit) {
+                        mode = 1;
+                        name.setLength(0);
+                        cursor = i;
+                        continue; // *** reprocess char32At(cursor)
+                    }
+                }
+                break;
+
+            case 1: // after open delimiter
+                // Look for legal chars.  If \s+ is found, convert it
+                // to a single space.  If closeDelimiter is found, exit
+                // the loop.  If any other character is found, exit the
+                // loop.  If the limit is reached, exit the loop.
+                
+                // Convert \s+ => SPACE.  This assumes there are no
+                // runs of >1 space characters in names.
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    // Ignore leading whitespace
+                    if (name.length() > 0 &&
+                        name.charAt(name.length()-1) != SPACE) {
+                        name.append(SPACE);
+                        // If we are too long then abort.  maxLen includes
+                        // temporary trailing space, so use '>'.
+                        if (name.length() > maxLen) {
+                            mode = 0;
+                        }
+                    }
+                    break;
+                }
+
+                if (c == CLOSE_DELIM) {
+
+                    int len = name.length();
+                    
+                    // Delete trailing space, if any
+                    if (len > 0 &&
+                        name.charAt(len-1) == SPACE) {
+                        name.setLength(--len);
+                    }
+
+                    c = UCharacter.getCharFromExtendedName(name.toString());
+                    if (c != -1) {
+                        // Lookup succeeded
+
+                        // assert(UTF16.getCharCount(CLOSE_DELIM) == 1);
+                        cursor++; // advance over CLOSE_DELIM
+
+                        String str = UTF16.valueOf(c);
+                        text.replace(openPos, cursor, str);
+
+                        // Adjust indices for the change in the length of
+                        // the string.  Do not assume that str.length() ==
+                        // 1, in case of surrogates.
+                        int delta = cursor - openPos - str.length();
+                        cursor -= delta;
+                        limit -= delta;
+                        // assert(cursor == openPos + str.length());
+                    }
+                    // If the lookup failed, we leave things as-is and
+                    // still switch to mode 0 and continue.
+                    mode = 0;
+                    openPos = -1; // close off candidate
+                    continue; // *** reprocess char32At(cursor)
+                }
+
+                if (legal.contains(c)) {
+                    UTF16.append(name, c);
+                    // If we go past the longest possible name then abort.
+                    // maxLen includes temporary trailing space, so use '>='.
+                    if (name.length() >= maxLen) {
+                        mode = 0;
+                    }
+                }
+
+                // Invalid character
+                else {
+                    --cursor; // Backup and reprocess this character
+                    mode = 0;
+                }
+
+                break;
+            }
+
+            cursor += UTF16.getCharCount(c);
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        // In incremental mode, only advance the cursor up to the last
+        // open delimiter candidate.
+        offsets.start = (isIncremental && openPos >= 0) ? openPos : cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/NormalizationTransliterator.java b/src/com/ibm/icu/text/NormalizationTransliterator.java
new file mode 100644
index 0000000..f2f119c
--- /dev/null
+++ b/src/com/ibm/icu/text/NormalizationTransliterator.java
@@ -0,0 +1,635 @@
+/*
+**********************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   06/08/01    aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * @author Alan Liu
+ */
+final class NormalizationTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+
+    /**
+     * The normalization mode of this transliterator.
+     */
+    private Normalizer.Mode mode;
+
+    /**
+     * Normalization options for this transliterator.
+     */
+    private int options;
+
+    /**
+     * The set of "unsafe start" characters.  These are characters
+     * with cc==0 but which may interact with previous characters.  We
+     * effectively consider these to be cc!=0, for our purposes.
+     *
+     * From http://www.macchiato.com/utc/NFUnsafeStart-3.1.1dX.txt
+     * Generated in unicodetools, NFSkippable
+     *
+     */
+     
+    static final UnicodeSet[] UNSAFE_STARTS = new UnicodeSet[4];
+    static final UnicodeSet[] SKIPPABLES = new UnicodeSet[4];
+    
+    static final int
+        D = 0, C = 1, KD= 2, KC = 3;
+    
+    // Instance data, simply pointer to one of the sets below
+    final UnicodeSet unsafeStart;
+    final UnicodeSet skippable;
+    
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory("Any-NFC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFD);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKD);
+            }
+        });
+        Transliterator.registerSpecialInverse("NFC", "NFD", true);
+        Transliterator.registerSpecialInverse("NFKC", "NFKD", true);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m,
+                                                          int opt) {
+        StringBuffer id = new StringBuffer("NF");
+        int choice = 0;
+        if(m==Normalizer.NFC){
+            id.append("C");
+            choice |= C;
+        }else if(m==Normalizer.NFKC){
+            id.append("KC");
+            choice |= KC;
+        }else if(m==Normalizer.NFD){
+            id.append("D");
+            choice |= D;
+        }else if(m==Normalizer.NFKD){
+            id.append("KD");
+            choice |= KD;
+        }
+        
+        /*if (m.compat()) {
+            id.append('K');
+            choice |= KD;
+        }
+        if (m.compose()) {
+            id.append('C');
+            choice |= C;
+        } else {
+            id.append('D');
+        }*/
+        return new NormalizationTransliterator(id.toString(), m, choice, opt);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m) {
+        return getInstance(m, 0);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    private NormalizationTransliterator(String id, Normalizer.Mode m, int startChoice,
+                                        int opt) {
+        super(id, null);
+        mode = m;
+        options = opt;
+        if (UNSAFE_STARTS[startChoice] == null) {
+            initStatics(startChoice);
+        }
+        // TODO: use built-in properties data rather than hardcoded sets; see ICU4C
+        unsafeStart = UNSAFE_STARTS[startChoice];
+        skippable = SKIPPABLES[startChoice];
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int start = offsets.start;
+        int limit = offsets.limit;
+        if (start >= limit) return;
+
+        int overallDelta = 0;
+            
+        // Walk through the string looking for safe characters.
+        // Whenever you hit one normalize from the start of the last
+        // safe character up to just before the next safe character
+        // Also, if you hit the end and we are not in incremental mode,
+        // do to end.
+            
+        // TODO: fix for surrogates
+        // TODO: add QuickCheck, so we rarely convert OK stuff
+            
+        int lastSafe = start; // go back to start in any event
+        int cp;
+        for (int i = start+1; i < limit; i += UTF16.getCharCount(cp)) {
+            cp = text.char32At(i);
+            if (UCharacter.getCombiningClass(cp) == 0 && !unsafeStart.contains(cp)) {
+                int delta = convert(text, lastSafe, i, null);
+                i += delta;
+                limit += delta;
+                overallDelta += delta;
+                lastSafe = i;
+            }
+        }
+        if (!isIncremental) {
+            int delta = convert(text, lastSafe, limit, null);
+            overallDelta += delta;
+            lastSafe = limit + delta;
+        } else {
+            // We are incremental, so accept the last characters IF they turn into skippables
+            int delta = convert(text, lastSafe, limit, skippable);
+            if (delta != Integer.MIN_VALUE) {
+                overallDelta += delta;
+                lastSafe = limit + delta;
+            }
+        }
+        offsets.contextLimit += overallDelta;
+        offsets.limit += overallDelta;
+        offsets.start = lastSafe;
+    }
+    
+    /**
+     * Converts the range from lastSafe to limit.
+     * @param verify If non-null, check to see that all replacement characters are in it. If not,
+     * abort the conversion and return Integer.MIN_VALUE.
+     * @return return the delta in length (new - old), or Integer.MIN_VALUE if the verify aborted.
+     */
+    int convert(Replaceable text, int lastSafe, int limit, UnicodeSet verify) {        
+        //System.out.println("t: " + com.ibm.icu.impl.Utility.hex(text.toString()) + ", s: " + lastSafe + ", l: " + limit);
+
+        int len = limit - lastSafe;
+        String input = null;
+        synchronized (this) {
+            if (buffer.length < len) {
+                buffer = new char[len]; // rare, and we don't care if we grow too large
+            }
+            text.getChars(lastSafe, limit, buffer, 0);
+            input = new String(buffer, 0, len); // TODO: fix normalizer to take char[]
+        }
+        String output = Normalizer.normalize(input, mode, options);
+        
+        // verify OK, if specified
+        if (verify != null) {
+            boolean skip = !skippable.containsAll(output);
+            if (DEBUG) {
+                System.out.println((skip ? "  SKIP: " : "NOSKIP: ") 
+                    + com.ibm.icu.impl.Utility.escape(input) 
+                    + " => " + com.ibm.icu.impl.Utility.escape(output));
+            }
+            if (skip) return Integer.MIN_VALUE;
+        }
+        
+        if (output.equals(input)) {
+            return 0;
+        }
+        text.replace(lastSafe, limit, output);
+        return output.length() - len;
+    }
+    
+    private char buffer[] = new char[30];
+    
+    /**
+     * Initialize statics for the given mode.  This is slow, so we
+     * defer it.
+     */
+    private static final void initStatics(int startChoice) {
+        switch (startChoice) {
+        case D:
+          UNSAFE_STARTS[D] = new UnicodeSet("[\u0F73\u0F75\u0F81]", false);
+          SKIPPABLES[D] = new UnicodeSet(
+              "[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+            + "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+            + "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+            + "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+            + "\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC"
+            + "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0350-\\u036F"
+            + "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+            + "\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407"
+            + "\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C"
+            + "-\\u045E\\u0476\\u0477\\u0483-\\u0486\\u04C1\\u04C2\\u04D0-"
+            + "\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-"
+            + "\\u04F5\\u04F8\\u04F9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4"
+            + "\\u05C5\\u05C7\\u0610-\\u0615\\u0622-\\u0626\\u064B-\\u065E"
+            + "\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33"
+            + "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+            + "\\u0B48\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+            + "\\u0C48\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA"
+            + "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u135F\\u1714\\u1734\\u17D2\\u17DD"
+            + "\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-"
+            + "\\u1B73\\u1DC0-\\u1DCA\\u1DFE-\\u1E99\\u1E9B\\u1EA0-\\u1EF9"
+            + "\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
+            + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-"
+            + "\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3"
+            + "\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD"
+            + "\\u2000\\u2001\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2126"
+            + "\\u212A\\u212B\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+            + "\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262"
+            + "\\u226D-\\u2271\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284"
+            + "\\u2285\\u2288\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-"
+            + "\\u22ED\\u2329\\u232A\\u2ADC\\u302A-\\u302F\\u304C\\u304E\\u3050"
+            + "\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062"
+            + "\\u3065\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077"
+            + "\\u3079\\u307A\\u307C\\u307D\\u3094\\u3099\\u309A\\u309E\\u30AC"
+            + "\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE"
+            + "\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4"
+            + "\\u30D6\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA"
+            + "\\u30FE\\uA806\\uAC00-\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12"
+            + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+            + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36"
+            + "\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-"
+            + "\\uFB4E\\uFE20-\\uFE23\\U00010A0D\\U00010A0F\\U00010A38-\\U00010"
+            + "A3A\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172"
+            + "\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+            + "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002"
+            + "F800-\\U0002FA1D]", false);
+          break;
+        case C:
+          UNSAFE_STARTS[C] = new UnicodeSet(
+              "[\\u09BE\\u09D7\\u0B3E\\u0B56\\u0B57\\u0BBE\\u0BD7\\u0CC2\\u0CD5"
+            + "\\u0CD6\\u0D3E\\u0D57\\u0DCF\\u0DDF\\u0F73\\u0F75\\u0F81\\u102E"
+            + "\\u1161-\\u1175\\u11A7-\\u11C2]", false);
+          SKIPPABLES[C] = new UnicodeSet(
+              "[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+            + "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+            + "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124"
+            + "\\u0125\\u0128-\\u012D\\u0130\\u0139\\u013A\\u013D\\u013E\\u0143"
+            + "\\u0144\\u0147\\u0148\\u014C-\\u0151\\u0154\\u0155\\u0158-"
+            + "\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168-\\u0171\\u0174-"
+            + "\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7\\u01CD-\\u01DC\\u01DE"
+            + "-\\u01E1\\u01E6-\\u01EB\\u01F4\\u01F5\\u01F8-\\u01FB\\u0200-"
+            + "\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0292\\u0300-\\u034E"
+            + "\\u0350-\\u036F\\u0374\\u037E\\u0387\\u0391\\u0395\\u0397\\u0399"
+            + "\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7"
+            + "\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D2\\u0406"
+            + "\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423\\u0427\\u042B"
+            + "\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E\\u0443\\u0447"
+            + "\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0486\\u04D8\\u04D9"
+            + "\\u04E8\\u04E9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5"
+            + "\\u05C7\\u0610-\\u0615\\u0622\\u0623\\u0627\\u0648\\u064A-"
+            + "\\u065E\\u0670\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF"
+            + "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+            + "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92"
+            + "\\u0BBE\\u0BC6\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56"
+            + "\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E"
+            + "\\u0D46\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1025\\u102E\\u1037\\u1039\\u1100-\\u1112\\u1161-"
+            + "\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2\\u17DD\\u18A9"
+            + "\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-\\u1B73"
+            + "\\u1DC0-\\u1DCA\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B"
+            + "\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D"
+            + "\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-\\u1EF3"
+            + "\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31"
+            + "\\u1F38\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59"
+            + "\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D"
+            + "\\u1F80\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0"
+            + "\\u1FA1\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB\\u1FBC\\u1FBE\\u1FBF"
+            + "\\u1FC3\\u1FC6\\u1FC9\\u1FCB\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB"
+            + "\\u1FEE\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000\\u2001"
+            + "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2126\\u212A\\u212B"
+            + "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+            + "\\u2223\\u2225\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264"
+            + "\\u2265\\u2272\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282\\u2283"
+            + "\\u2286\\u2287\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB\\u22B2-"
+            + "\\u22B5\\u2329\\u232A\\u2ADC\\u302A-\\u302F\\u3046\\u304B\\u304D"
+            + "\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D\\u305F"
+            + "\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078\\u307B"
+            + "\\u3099\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1\\u30B3"
+            + "\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4\\u30C6"
+            + "\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2\\u30FD"
+            + "\\uA806\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4"
+            + "\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0"
+            + "\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC"
+            + "\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8"
+            + "\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4"
+            + "\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0"
+            + "\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC"
+            + "\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8"
+            + "\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4"
+            + "\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0"
+            + "\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C"
+            + "\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798"
+            + "\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894"
+            + "\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990"
+            + "\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C"
+            + "\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88"
+            + "\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84"
+            + "\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80"
+            + "\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C"
+            + "\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78"
+            + "\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074"
+            + "\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170"
+            + "\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C"
+            + "\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368"
+            + "\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464"
+            + "\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560"
+            + "\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C"
+            + "\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758"
+            + "\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854"
+            + "\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950"
+            + "\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C"
+            + "\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48"
+            + "\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44"
+            + "\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40"
+            + "\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C"
+            + "\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38"
+            + "\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034"
+            + "\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130"
+            + "\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C"
+            + "\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328"
+            + "\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424"
+            + "\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520"
+            + "\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C"
+            + "\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718"
+            + "\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15"
+            + "-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+            + "\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-"
+            + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20"
+            + "-\\uFE23\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010A3F"
+            + "\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+            + "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+            + "D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-\\U0002FA1D]", false);
+          break;
+        case KD:
+          UNSAFE_STARTS[KD] = new UnicodeSet("[\u0F73\u0F75\u0F81\uFF9E-\uFF9F]", false);
+          SKIPPABLES[KD] = new UnicodeSet(
+              "[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+            + "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+            + "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+            + "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+            + "\\u0154-\\u0165\\u0168-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0"
+            + "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+            + "\\u02E0-\\u02E4\\u0300-\\u034E\\u0350-\\u036F\\u0374\\u037A"
+            + "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+            + "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+            + "\\u03F9\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+            + "\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u0483"
+            + "-\\u0486\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-"
+            + "\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0587"
+            + "\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610"
+            + "-\\u0615\\u0622-\\u0626\\u064B-\\u065E\\u0670\\u0675-\\u0678"
+            + "\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7"
+            + "\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-\\u07F3"
+            + "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+            + "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36"
+            + "\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B48"
+            + "\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD\\u0C48"
+            + "\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB"
+            + "\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE\\u0E33"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-"
+            + "\\u0ECB\\u0EDC\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39"
+            + "\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80"
+            + "-\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u10FC\\u135F\\u1714\\u1734\\u17D2"
+            + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B"
+            + "-\\u1B73\\u1D2C-\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-"
+            + "\\u1D6A\\u1D78\\u1D9B-\\u1DCA\\u1DFE-\\u1E9B\\u1EA0-\\u1EF9"
+            + "\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
+            + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-"
+            + "\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-"
+            + "\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011"
+            + "\\u2017\\u2024-\\u2026\\u202F\\u2033\\u2034\\u2036\\u2037\\u203C"
+            + "\\u203E\\u2047-\\u2049\\u2057\\u205F\\u2070\\u2071\\u2074-"
+            + "\\u208E\\u2090-\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-"
+            + "\\u20EF\\u2100-\\u2103\\u2105-\\u2107\\u2109-\\u2113\\u2115"
+            + "\\u2116\\u2119-\\u211D\\u2120-\\u2122\\u2124\\u2126\\u2128"
+            + "\\u212A-\\u212D\\u212F-\\u2131\\u2133-\\u2139\\u213B-\\u2140"
+            + "\\u2145-\\u2149\\u2153-\\u217F\\u219A\\u219B\\u21AE\\u21CD-"
+            + "\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u222C\\u222D\\u222F"
+            + "\\u2230\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271"
+            + "\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288"
+            + "\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329"
+            + "\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2D6F"
+            + "\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036"
+            + "\\u3038-\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058"
+            + "\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070"
+            + "\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C\\u307D"
+            + "\\u3094\\u3099-\\u309C\\u309E\\u309F\\u30AC\\u30AE\\u30B0\\u30B2"
+            + "\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5"
+            + "\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7\\u30D9"
+            + "\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\u30FF\\u3131"
+            + "-\\u318E\\u3192-\\u319F\\u3200-\\u321E\\u3220-\\u3243\\u3250-"
+            + "\\u327E\\u3280-\\u32FE\\u3300-\\u33FF\\uA806\\uAC00-\\uD7A3"
+            + "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+            + "\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9"
+            + "\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-\\uFB3C"
+            + "\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-"
+            + "\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE10-"
+            + "\\uFE19\\uFE20-\\uFE23\\uFE30-\\uFE44\\uFE47-\\uFE52\\uFE54-"
+            + "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+            + "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+            + "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U00010A0D\\U00010"
+            + "A0F\\U00010A38-\\U00010A3A\\U00010A3F\\U0001D15E-\\U0001D169"
+            + "\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+            + "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001"
+            + "D242-\\U0001D244\\U0001D400-\\U0001D454\\U0001D456-\\U0001D49C"
+            + "\\U0001D49E\\U0001D49F\\U0001D4A2\\U0001D4A5\\U0001D4A6\\U0001D4"
+            + "A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-"
+            + "\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-\\U0001D50A\\U0001"
+            + "D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001D51E-\\U0001D539"
+            + "\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544\\U0001D546\\U0001"
+            + "D54A-\\U0001D550\\U0001D552-\\U0001D6A5\\U0001D6A8-\\U0001D7CB"
+            + "\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
+          break;
+        case KC:
+          UNSAFE_STARTS[KC] = new UnicodeSet(
+              "[\\u09BE\\u09D7\\u0B3E\\u0B56\\u0B57\\u0BBE\\u0BD7\\u0CC2\\u0CD5"
+            + "\\u0CD6\\u0D3E\\u0D57\\u0DCF\\u0DDF\\u0F73\\u0F75\\u0F81\\u102E"
+            + "\\u1161-\\u1175\\u11A7-\\u11C2\\u3133\\u3135\\u3136\\u313A-"
+            + "\\u313F\\u314F-\\u3163\\uFF9E\\uFF9F\\uFFA3\\uFFA5\\uFFA6\\uFFAA"
+            + "-\\uFFAF\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-"
+            + "\\uFFDC]", false);
+          SKIPPABLES[KC] = new UnicodeSet(
+              "[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+            + "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+            + "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+            + "\\u0124\\u0125\\u0128-\\u012D\\u0130\\u0132\\u0133\\u0139\\u013A"
+            + "\\u013D-\\u0140\\u0143\\u0144\\u0147-\\u0149\\u014C-\\u0151"
+            + "\\u0154\\u0155\\u0158-\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168"
+            + "-\\u0171\\u0174-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7"
+            + "\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F1-\\u01F5"
+            + "\\u01F8-\\u01FB\\u0200-\\u021B\\u021E\\u021F\\u0226-\\u0233"
+            + "\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-\\u02E4\\u0300-"
+            + "\\u034E\\u0350-\\u036F\\u0374\\u037A\\u037E\\u0384\\u0385\\u0387"
+            + "\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC"
+            + "\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-"
+            + "\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+            + "\\u03F9\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423"
+            + "\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E"
+            + "\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0486"
+            + "\\u04D8\\u04D9\\u04E8\\u04E9\\u0587\\u0591-\\u05BD\\u05BF\\u05C1"
+            + "\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u0615\\u0622\\u0623\\u0627"
+            + "\\u0648\\u064A-\\u065E\\u0670\\u0675-\\u0678\\u06C1\\u06D2"
+            + "\\u06D5-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED"
+            + "\\u0711\\u0730-\\u074A\\u07EB-\\u07F3\\u0928\\u0930\\u0933"
+            + "\\u093C\\u094D\\u0951-\\u0954\\u0958-\\u095F\\u09BC\\u09BE"
+            + "\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C"
+            + "\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47"
+            + "\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92\\u0BBE\\u0BC6\\u0BC7"
+            + "\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CBF\\u0CC2"
+            + "\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E\\u0D46\\u0D47\\u0D4D"
+            + "\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E33\\u0E38-\\u0E3A"
+            + "\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-\\u0ECB\\u0EDC"
+            + "\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D"
+            + "\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80-\\u0F84"
+            + "\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6"
+            + "\\u1025\\u102E\\u1037\\u1039\\u10FC\\u1100-\\u1112\\u1161-"
+            + "\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2\\u17DD\\u18A9"
+            + "\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-\\u1B73"
+            + "\\u1D2C-\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A"
+            + "\\u1D78\\u1D9B-\\u1DCA\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-"
+            + "\\u1E1B\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-"
+            + "\\u1E7D\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-"
+            + "\\u1EF3\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-"
+            + "\\u1F31\\u1F38\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51"
+            + "\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-"
+            + "\\u1F7D\\u1F80\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99"
+            + "\\u1FA0\\u1FA1\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB-\\u1FC1\\u1FC3"
+            + "\\u1FC6\\u1FC9\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD-\\u1FDF"
+            + "\\u1FE3\\u1FEB\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-"
+            + "\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-\\u2026\\u202F"
+            + "\\u2033\\u2034\\u2036\\u2037\\u203C\\u203E\\u2047-\\u2049\\u2057"
+            + "\\u205F\\u2070\\u2071\\u2074-\\u208E\\u2090-\\u2094\\u20A8"
+            + "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2100-\\u2103\\u2105-"
+            + "\\u2107\\u2109-\\u2113\\u2115\\u2116\\u2119-\\u211D\\u2120-"
+            + "\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2131"
+            + "\\u2133-\\u2139\\u213B-\\u2140\\u2145-\\u2149\\u2153-\\u217F"
+            + "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+            + "\\u2223\\u2225\\u222C\\u222D\\u222F\\u2230\\u223C\\u2243\\u2245"
+            + "\\u2248\\u224D\\u2261\\u2264\\u2265\\u2272\\u2273\\u2276\\u2277"
+            + "\\u227A-\\u227D\\u2282\\u2283\\u2286\\u2287\\u2291\\u2292\\u22A2"
+            + "\\u22A8\\u22A9\\u22AB\\u22B2-\\u22B5\\u2329\\u232A\\u2460-"
+            + "\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2D6F\\u2E9F\\u2EF3\\u2F00"
+            + "-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-\\u303A\\u3046"
+            + "\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B"
+            + "\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075"
+            + "\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6\\u30AB\\u30AD\\u30AF"
+            + "\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1"
+            + "\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-"
+            + "\\u30F2\\u30FD\\u30FF\\u3131-\\u318E\\u3192-\\u319F\\u3200-"
+            + "\\u321E\\u3220-\\u3243\\u3250-\\u327E\\u3280-\\u32FE\\u3300-"
+            + "\\u33FF\\uA806\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+            + "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+            + "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+            + "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+            + "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+            + "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+            + "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+            + "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+            + "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+            + "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+            + "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+            + "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+            + "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+            + "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+            + "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+            + "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+            + "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+            + "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+            + "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+            + "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+            + "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+            + "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+            + "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+            + "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+            + "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+            + "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+            + "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+            + "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+            + "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+            + "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+            + "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+            + "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+            + "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+            + "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+            + "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+            + "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+            + "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+            + "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+            + "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+            + "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+            + "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+            + "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+            + "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+            + "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+            + "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+            + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+            + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17"
+            + "\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43"
+            + "\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-"
+            + "\\uFDC7\\uFDF0-\\uFDFC\\uFE10-\\uFE19\\uFE20-\\uFE23\\uFE30-"
+            + "\\uFE44\\uFE47-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+            + "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+            + "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+            + "\\uFFE8-\\uFFEE\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A"
+            + "\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001"
+            + "D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD"
+            + "\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0001D400-"
+            + "\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E\\U0001D49F\\U0001D"
+            + "4A2\\U0001D4A5\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-"
+            + "\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C3\\U0001D4C5-\\U0001"
+            + "D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001D516-"
+            + "\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E\\U0001"
+            + "D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001D552-"
+            + "\\U0001D6A5\\U0001D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF\\U0002"
+            + "F800-\\U0002FA1D]", false);
+          break;
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/text/Normalizer.java b/src/com/ibm/icu/text/Normalizer.java
new file mode 100644
index 0000000..2322ee3
--- /dev/null
+++ b/src/com/ibm/icu/text/Normalizer.java
@@ -0,0 +1,2815 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Unicode Normalization 
+ *
+ * <h2>Unicode normalization API</h2>
+ *
+ * <code>normalize</code> transforms Unicode text into an equivalent composed or
+ * decomposed form, allowing for easier sorting and searching of text.
+ * <code>normalize</code> supports the standard normalization forms described in
+ * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+ * Unicode Standard Annex #15 &mdash; Unicode Normalization Forms</a>.
+ *
+ * Characters with accents or other adornments can be encoded in
+ * several different ways in Unicode.  For example, take the character A-acute.
+ * In Unicode, this can be encoded as a single character (the
+ * "composed" form):
+ *
+ * <p>
+ *      00C1    LATIN CAPITAL LETTER A WITH ACUTE
+ * </p>
+ *
+ * or as two separate characters (the "decomposed" form):
+ *
+ * <p>
+ *      0041    LATIN CAPITAL LETTER A
+ *      0301    COMBINING ACUTE ACCENT
+ * </p>
+ *
+ * To a user of your program, however, both of these sequences should be
+ * treated as the same "user-level" character "A with acute accent".  When you 
+ * are searching or comparing text, you must ensure that these two sequences are 
+ * treated equivalently.  In addition, you must handle characters with more than
+ * one accent.  Sometimes the order of a character's combining accents is
+ * significant, while in other cases accent sequences in different orders are
+ * really equivalent.
+ *
+ * Similarly, the string "ffi" can be encoded as three separate letters:
+ *
+ * <p>
+ *      0066    LATIN SMALL LETTER F
+ *      0066    LATIN SMALL LETTER F
+ *      0069    LATIN SMALL LETTER I
+ * <\p>
+ *
+ * or as the single character
+ *
+ * <p>
+ *      FB03    LATIN SMALL LIGATURE FFI
+ * <\p>
+ *
+ * The ffi ligature is not a distinct semantic character, and strictly speaking
+ * it shouldn't be in Unicode at all, but it was included for compatibility
+ * with existing character sets that already provided it.  The Unicode standard
+ * identifies such characters by giving them "compatibility" decompositions
+ * into the corresponding semantic characters.  When sorting and searching, you
+ * will often want to use these mappings.
+ *
+ * <code>normalize</code> helps solve these problems by transforming text into 
+ * the canonical composed and decomposed forms as shown in the first example 
+ * above. In addition, you can have it perform compatibility decompositions so 
+ * that you can treat compatibility characters the same as their equivalents.
+ * Finally, <code>normalize</code> rearranges accents into the proper canonical
+ * order, so that you do not have to worry about accent rearrangement on your
+ * own.
+ *
+ * Form FCD, "Fast C or D", is also designed for collation.
+ * It allows to work on strings that are not necessarily normalized
+ * with an algorithm (like in collation) that works under "canonical closure", 
+ * i.e., it treats precomposed characters and their decomposed equivalents the 
+ * same.
+ *
+ * It is not a normalization form because it does not provide for uniqueness of 
+ * representation. Multiple strings may be canonically equivalent (their NFDs 
+ * are identical) and may all conform to FCD without being identical themselves.
+ *
+ * The form is defined such that the "raw decomposition", the recursive 
+ * canonical decomposition of each character, results in a string that is 
+ * canonically ordered. This means that precomposed characters are allowed for 
+ * as long as their decompositions do not need canonical reordering.
+ *
+ * Its advantage for a process like collation is that all NFD and most NFC texts
+ * - and many unnormalized texts - already conform to FCD and do not need to be 
+ * normalized (NFD) for such a process. The FCD quick check will return YES for 
+ * most strings in practice.
+ *
+ * normalize(FCD) may be implemented with NFD.
+ *
+ * For more details on FCD see the collation design document:
+ * http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm
+ *
+ * ICU collation performs either NFD or FCD normalization automatically if 
+ * normalization is turned on for the collator object. Beyond collation and 
+ * string search, normalized strings may be useful for string equivalence 
+ * comparisons, transliteration/transcription, unique representations, etc.
+ *
+ * The W3C generally recommends to exchange texts in NFC.
+ * Note also that most legacy character encodings use only precomposed forms and
+ * often do not encode any combining marks by themselves. For conversion to such
+ * character encodings the Unicode text needs to be normalized to NFC.
+ * For more usage examples, see the Unicode Standard Annex.
+ * @stable ICU 2.8
+ */
+
+public final class Normalizer implements Cloneable {
+    
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------  
+    private char[] buffer = new char[100];
+    private int bufferStart = 0;
+    private int bufferPos   = 0;
+    private int bufferLimit = 0;
+    
+    // This tells us what the bits in the "mode" object mean.
+    private static final int COMPAT_BIT = 1;
+    private static final int DECOMP_BIT = 2;
+    private static final int COMPOSE_BIT = 4;
+    
+    // The input text and our position in it
+    private UCharacterIterator  text;
+    private Mode                mode = NFC;
+    private int                 options = 0;
+    private int                 currentIndex;
+    private int                 nextIndex;
+    
+    /**
+     * Options bit set value to select Unicode 3.2 normalization
+     * (except NormalizationCorrections).
+     * At most one Unicode version can be selected at a time.
+     * @stable ICU 2.6
+     */
+    public static final int UNICODE_3_2=0x20;
+
+    /**
+     * Constant indicating that the end of the iteration has been reached.
+     * This is guaranteed to have the same value as {@link UCharacterIterator#DONE}.
+     * @stable ICU 2.8
+     */
+    public static final int DONE = UCharacterIterator.DONE;
+
+    /**
+     * Constants for normalization modes.
+     * @stable ICU 2.8
+     */
+    public static class Mode {
+        //private int modeValue;
+        private Mode(int value) {
+            //modeValue = value;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int srcLen = (srcLimit - srcStart);
+            int destLen = (destLimit - destStart);
+            if( srcLen > destLen ) {
+                return srcLen;
+            }
+            System.arraycopy(src,srcStart,dest,destStart,srcLen);
+            return srcLen;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                int options) {
+            return normalize(   src, srcStart, srcLimit,
+                                dest,destStart,destLimit,
+                                NormalizerImpl.getNX(options)
+                                );
+        }
+        
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected String normalize(String src, int options) {
+            return src;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected int getMinC() {
+            return -1;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected int getMask() {
+            return -1;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected IsPrevBoundary getPrevBoundary() {
+            return null;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected IsNextBoundary getNextBoundary() {
+            return null;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected QuickCheckResult quickCheck(char[] src,int start, int limit, 
+                                              boolean allowMaybe,UnicodeSet nx) {
+            if(allowMaybe) {
+                return MAYBE;
+            }
+            return NO;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected boolean isNFSkippable(int c) {
+            return true;
+        }
+    }
+    
+    /** 
+     * No decomposition/composition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NONE = new Mode(COMPAT_BIT);
+
+    /** 
+     * Canonical decomposition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFD = new NFDMode(DECOMP_BIT);
+    
+    private static final class NFDMode extends Mode {
+        private NFDMode(int value) {
+            super(value);
+        }
+
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int[] trailCC = new int[1];
+            return NormalizerImpl.decompose(src,  srcStart,srcLimit,
+                                            dest, destStart,destLimit,
+                                            false, trailCC,nx);
+        }
+        
+        protected String normalize( String src, int options) {
+            return decompose(src,false);
+        }
+
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD);
+        }
+
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src, start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFD_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFD,
+                                             0,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c,this,
+                                                (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD)
+                                                );
+        }           
+    }
+                                         
+    /** 
+     * Compatibility decomposition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFKD = new NFKDMode(3);
+    
+    private static final class NFKDMode extends Mode {
+        private NFKDMode(int value) {
+            super(value);
+        }
+
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int[] trailCC = new int[1];
+            return NormalizerImpl.decompose(src,  srcStart,srcLimit,
+                                            dest, destStart,destLimit,
+                                            true, trailCC, nx);
+        }
+
+        protected String normalize( String src, int options) {
+            return decompose(src,true);
+        }
+
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD);
+        }
+
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFKD_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFKD,
+                                             NormalizerImpl.OPTIONS_COMPAT,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c, this,
+                                                (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD)
+                                                );
+        }                                         
+    }
+                                         
+    /** 
+     * Canonical decomposition followed by canonical composition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFC = new NFCMode(COMPOSE_BIT);
+    
+    private static final class NFCMode extends Mode{
+        private NFCMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                UnicodeSet nx) {
+            return NormalizerImpl.compose( src, srcStart, srcLimit,
+                                           dest,destStart,destLimit,
+                                           0, nx);
+        }
+  
+        protected String normalize( String src, int options) {
+            return compose(src, false, options);
+        }
+       
+        protected int getMinC() {
+            return NormalizerImpl.getFromIndexesArr(
+                                                    NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                                    );
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevTrueStarter();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextTrueStarter();
+        }
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFC);
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFC,
+                                             0,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c,this,
+                                                ( NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|
+                                                  (NormalizerImpl.QC_NFC & NormalizerImpl.QC_ANY_NO)
+                                                  )
+                                                );
+        } 
+    }
+                                         
+    /** 
+     * Default normalization.  
+     * @stable ICU 2.8
+     */
+    public static final Mode DEFAULT = NFC; 
+    
+    /** 
+     * Compatibility decomposition followed by canonical composition. 
+     * @stable ICU 2.8
+     */
+    public static final Mode NFKC =new NFKCMode(5);
+    
+    private static final class NFKCMode extends Mode{
+        private NFKCMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            return NormalizerImpl.compose(src,  srcStart,srcLimit,
+                                          dest, destStart,destLimit,
+                                          NormalizerImpl.OPTIONS_COMPAT, nx);
+        }
+
+        protected String normalize( String src, int options) {
+            return compose(src, true, options);
+        }
+        protected int getMinC() {
+            return NormalizerImpl.getFromIndexesArr(
+                                                    NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                                    );
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevTrueStarter();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextTrueStarter();
+        }
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKC);
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFKC,
+                                             NormalizerImpl.OPTIONS_COMPAT,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c, this,
+                                                ( NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|
+                                                  (NormalizerImpl.QC_NFKC & NormalizerImpl.QC_ANY_NO)
+                                                  )
+                                                );
+        } 
+    }
+                                        
+    /** 
+     * "Fast C or D" form. 
+     * @stable ICU 2.8 
+     */
+    public static final Mode FCD = new FCDMode(6);
+    
+    private static final class FCDMode extends Mode{
+        private FCDMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            return NormalizerImpl.makeFCD(src, srcStart,srcLimit,
+                                          dest, destStart,destLimit, nx);
+        }
+        protected String normalize( String src, int options) {
+            return makeFCD(src, options);
+        }
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+        protected int getMask() {
+            return NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD;
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.checkFCD(src,start,limit,nx) ? YES : NO;
+        }
+        protected boolean isNFSkippable(int c) {
+            /* FCD: skippable if lead cc==0 and trail cc<=1 */
+            return (NormalizerImpl.getFCD16(c)>1);
+        }   
+    }
+
+    
+    /**
+     * Null operation for use with the {@link #Normalizer constructors}
+     * and the static {@link #normalize normalize} method.  This value tells
+     * the <tt>Normalizer</tt> to do nothing but return unprocessed characters
+     * from the underlying String or CharacterIterator.  If you have code which
+     * requires raw text at some times and normalized text at others, you can
+     * use <tt>NO_OP</tt> for the cases where you want raw text, rather
+     * than having a separate code path that bypasses <tt>Normalizer</tt>
+     * altogether.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Nomalizer.NONE
+     * @see #NONE
+     */
+    public static final Mode NO_OP = NONE;
+
+    /**
+     * Canonical decomposition followed by canonical composition.  Used with the
+     * {@link #Normalizer constructors} and the static 
+     * {@link #normalize normalize} method to determine the operation to be 
+     * performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>C</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalier.NFC
+     * @see #NFC
+     */
+    public static final Mode COMPOSE = NFC;
+
+    /**
+     * Compatibility decomposition followed by canonical composition.
+     * Used with the {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize} method to determine the operation to be 
+     * performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>KC</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFKC
+     * @see #NFKC
+     */
+    public static final Mode COMPOSE_COMPAT = NFKC;
+
+    /**
+     * Canonical decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>D</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFD
+     * @see #NFD
+     */
+    public static final Mode DECOMP = NFD;
+
+    /**
+     * Compatibility decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static 
+     * {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>KD</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFKD
+     * @see #NFKD
+     */
+    public static final Mode DECOMP_COMPAT = NFKD;
+
+    /**
+     * Option to disable Hangul/Jamo composition and decomposition.
+     * This option applies to Korean text,
+     * which can be represented either in the Jamo alphabet or in Hangul
+     * characters, which are really just two or three Jamo combined
+     * into one visual glyph.  Since Jamo takes up more storage space than
+     * Hangul, applications that process only Hangul text may wish to turn
+     * this option on when decomposing text.
+     * <p>
+     * The Unicode standard treates Hangul to Jamo conversion as a
+     * canonical decomposition, so this option must be turned <b>off</b> if you
+     * wish to transform strings into one of the standard
+     * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+     * Unicode Normalization Forms</a>.
+     * <p>
+     * @see #setOption
+     * @deprecated ICU 2.8. This option is no longer supported.
+     */
+    public static final int IGNORE_HANGUL = 0x0001;
+          
+    /**
+     * Result values for quickCheck().
+     * For details see Unicode Technical Report 15.
+     * @stable ICU 2.8
+     */
+    public static final class QuickCheckResult{
+        //private int resultValue;
+        private QuickCheckResult(int value) {
+            //resultValue=value;
+        }
+    }
+    /** 
+     * Indicates that string is not in the normalized format
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult NO = new QuickCheckResult(0);
+        
+    /** 
+     * Indicates that string is in the normalized format
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult YES = new QuickCheckResult(1);
+
+    /** 
+     * Indicates it cannot be determined if string is in the normalized 
+     * format without further thorough checks.
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult MAYBE = new QuickCheckResult(2);
+    
+    /**
+     * Option bit for compare:
+     * Case sensitively compare the strings
+     * @stable ICU 2.8
+     */
+    public static final int FOLD_CASE_DEFAULT =  UCharacter.FOLD_CASE_DEFAULT;
+    
+    /**
+     * Option bit for compare:
+     * Both input strings are assumed to fulfill FCD conditions.
+     * @stable ICU 2.8
+     */
+    public static final int INPUT_IS_FCD    =      0x20000;
+        
+    /**
+     * Option bit for compare:
+     * Perform case-insensitive comparison.
+     * @stable ICU 2.8
+     */
+    public static final int COMPARE_IGNORE_CASE  =     0x10000;
+        
+    /**
+     * Option bit for compare:
+     * Compare strings in code point order instead of code unit order.
+     * @stable ICU 2.8
+     */
+    public static final int COMPARE_CODE_POINT_ORDER = 0x8000;
+    
+    /** 
+     * Option value for case folding: exclude the mappings for dotted I 
+     * and dotless i marked with 'I' in CaseFolding.txt. 
+     * @stable ICU 2.8
+     */
+    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I;
+    
+    /**
+     * Lowest-order bit number of compare() options bits corresponding to
+     * normalization options bits.
+     *
+     * The options parameter for compare() uses most bits for
+     * itself and for various comparison and folding flags.
+     * The most significant bits, however, are shifted down and passed on
+     * to the normalization implementation.
+     * (That is, from compare(..., options, ...),
+     * options>>COMPARE_NORM_OPTIONS_SHIFT will be passed on to the
+     * internal normalization functions.)
+     *
+     * @see #compare
+     * @stable ICU 2.6
+     */
+    public static final int COMPARE_NORM_OPTIONS_SHIFT  = 20;
+        
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this object.
+     * <p>
+     * @param str  The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #UNICODE_3_2}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @stable ICU 2.6
+     */
+    public Normalizer(String str, Mode mode, int opt) {
+        this.text = UCharacterIterator.getInstance(str);
+        this.mode = mode; 
+        this.options=opt;
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #UNICODE_3_2}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @stable ICU 2.6
+     */
+    public Normalizer(CharacterIterator iter, Mode mode, int opt) {
+        this.text = UCharacterIterator.getInstance(
+                                                   (CharacterIterator)iter.clone()
+                                                   );
+        this.mode = mode;
+        this.options = opt;
+    }
+    
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @stable ICU 2.6
+     */
+    public Normalizer(UCharacterIterator iter, Mode mode, int options) {
+        try {
+            this.text     = (UCharacterIterator)iter.clone();
+            this.mode     = mode;
+            this.options  = options;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException(e.toString());
+        }
+    }
+
+    /**
+     * Clones this <tt>Normalizer</tt> object.  All properties of this
+     * object are duplicated in the new object, including the cloning of any
+     * {@link CharacterIterator} that was passed in to the constructor
+     * or to {@link #setText(CharacterIterator) setText}.
+     * However, the text storage underlying
+     * the <tt>CharacterIterator</tt> is not duplicated unless the
+     * iterator's <tt>clone</tt> method does so.
+     * @stable ICU 2.8
+     */
+    public Object clone() {
+        try {
+            Normalizer copy = (Normalizer) super.clone();
+            copy.text = (UCharacterIterator) text.clone();
+            //clone the internal buffer
+            if (buffer != null) {
+                copy.buffer = new char[buffer.length];
+                System.arraycopy(buffer,0,copy.buffer,0,buffer.length);
+            }
+            return copy;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new IllegalStateException(e.toString());
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    // Static Utility methods
+    //--------------------------------------------------------------------------
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @return String    The composed string   
+     * @stable ICU 2.8
+     */            
+    public static String compose(String str, boolean compat) {
+        return compose(str,compat,0);           
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @param options    The only recognized option is UNICODE_3_2
+     * @return String    The composed string   
+     * @stable ICU 2.6
+     */            
+    public static String compose(String str, boolean compat, int options) {
+           
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_COMPOSE];
+        int destSize=0;
+        char[] src = str.toCharArray();
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        for(;;) {
+            destSize=NormalizerImpl.compose(src,0,src.length,
+                                            dest,0,dest.length,options,
+                                            nx);
+            if(destSize<=dest.length) {
+                return new String(dest,0,destSize);  
+            } else {
+                dest = new char[destSize];
+            }
+        }                   
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param source The char array to compose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length
+     * @stable ICU 2.6  
+     */         
+    public static int compose(char[] source,char[] target, boolean compat, int options) {
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        int length = NormalizerImpl.compose(source,0,source.length,
+                                            target,0,target.length,
+                                            options,nx);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length 
+     * @stable ICU 2.6 
+     */         
+    public static int compose(char[] src,int srcStart, int srcLimit,
+                              char[] dest,int destStart, int destLimit,
+                              boolean compat, int options) {
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        int length = NormalizerImpl.compose(src,srcStart,srcLimit,
+                                            dest,destStart,destLimit,
+                                            options, nx);
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    private static final int MAX_BUF_SIZE_COMPOSE = 2;
+    private static final int MAX_BUF_SIZE_DECOMPOSE = 3;
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str       The string to decompose.
+     * @param compat    If true the string will be decomposed accoding to NFKD 
+     *                   rules and if false will be decomposed according to NFD 
+     *                   rules.
+     * @return String   The decomposed string  
+     * @stable ICU 2.8 
+     */         
+    public static String decompose(String str, boolean compat) {
+        return decompose(str,compat,0);                  
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str     The string to decompose.
+     * @param compat  If true the string will be decomposed accoding to NFKD 
+     *                 rules and if false will be decomposed according to NFD 
+     *                 rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return String The decomposed string 
+     * @stable ICU 2.6
+     */         
+    public static String decompose(String str, boolean compat, int options) {
+        
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_DECOMPOSE];
+        int[] trailCC = new int[1];
+        int destSize=0;
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        for(;;) {
+            destSize=NormalizerImpl.decompose(str.toCharArray(),0,str.length(),
+                                              dest,0,dest.length,
+                                              compat,trailCC, nx);
+            if(destSize<=dest.length) {
+                return new String(dest,0,destSize); 
+            } else {
+                dest = new char[destSize];
+            }
+        } 
+                
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param source The char array to decompose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length   
+     * @stable ICU 2.6
+     */
+    public static int decompose(char[] source,char[] target, boolean compat, int options) {
+        int[] trailCC = new int[1];
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        int length = NormalizerImpl.decompose(source,0,source.length,
+                                              target,0,target.length,
+                                              compat,trailCC,nx);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length  
+     * @stable ICU 2.6 
+     */
+    public static int decompose(char[] src,int srcStart, int srcLimit,
+                                char[] dest,int destStart, int destLimit,
+                                boolean compat, int options) {
+        int[] trailCC = new int[1];
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        int length = NormalizerImpl.decompose(src,srcStart,srcLimit,
+                                              dest,destStart,destLimit,
+                                              compat,trailCC,nx);
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+        
+    private static String makeFCD(String src,int options) {
+        int srcLen = src.length();
+        char[] dest = new char[MAX_BUF_SIZE_DECOMPOSE*srcLen];
+        int length = 0;
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        for(;;) {
+            length = NormalizerImpl.makeFCD(src.toCharArray(),0,srcLen,
+                                            dest,0,dest.length,nx);
+            if(length <= dest.length) {
+                return new String(dest,0,length);
+            } else {
+                dest = new char[length];
+            }
+        }
+    }
+    
+    /**
+     * Normalizes a <tt>String</tt> using the given normalization operation.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #UNICODE_3_2}.
+     * If you want the default behavior corresponding to one of the standard
+     * Unicode Normalization Forms, use 0 for this argument.
+     * <p>
+     * @param str       the input string to be normalized.
+     * @param mode      the normalization mode
+     * @param options   the optional features to be enabled.
+     * @return String   the normalized string
+     * @stable ICU 2.6
+     */
+    public static String normalize(String str, Mode mode, int options) {
+        return mode.normalize(str,options);
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization 
+     * mode and options.
+     * @param src        The string to normalize.
+     * @param mode       The normalization mode; one of Normalizer.NONE, 
+     *                    Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                    Normalizer.NFKD, Normalizer.DEFAULT
+     * @return the normalized string
+     * @stable ICU 2.8
+     *   
+     */
+    public static String normalize(String src,Mode mode) {
+        return normalize(src, mode, 0);    
+    }
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization 
+     * mode and options.
+     * @param source The char array to normalize.
+     * @param target A char buffer to receive the normalized text.
+     * @param mode   The normalization mode; one of Normalizer.NONE, 
+     *                Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                Normalizer.NFKD, Normalizer.DEFAULT
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception    IndexOutOfBoundsException if the target capacity is less 
+     *                than the required length
+     * @stable ICU 2.6     
+     */
+    public static int normalize(char[] source,char[] target, Mode  mode, int options) {
+        int length = normalize(source,0,source.length,target,0,target.length,mode, options);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization
+     * mode and options.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param mode      The normalization mode; one of Normalizer.NONE, 
+     *                   Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                   Normalizer.NFKD, Normalizer.DEFAULT
+     * @param options The normalization options, ORed together (0 for no options). 
+     * @return int      The total buffer size needed;if greater than length of 
+     *                   result, the output was truncated.
+     * @exception       IndexOutOfBoundsException if the target capacity is 
+     *                   less than the required length
+     * @stable ICU 2.6    
+     */       
+    public static int normalize(char[] src,int srcStart, int srcLimit, 
+                                char[] dest,int destStart, int destLimit,
+                                Mode  mode, int options) {
+        int length = mode.normalize(src,srcStart,srcLimit,dest,destStart,destLimit, options);
+       
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Normalize a codepoint accoding to the given mode
+     * @param char32    The input string to be normalized.
+     * @param mode      The normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2
+     * @return String   The normalized string
+     * @stable ICU 2.6
+     * @see #UNICODE_3_2
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static String normalize(int char32, Mode mode, int options) {
+        return normalize(UTF16.valueOf(char32), mode, options);
+    }
+
+    /**
+     * Conveinience method to normalize a codepoint accoding to the given mode
+     * @param char32    The input string to be normalized.
+     * @param mode      The normalization mode
+     * @return String   The normalized string
+     * @see #UNICODE_3_2                
+     * @stable ICU 2.6
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static String normalize(int char32, Mode mode) {
+        return normalize(UTF16.valueOf(char32), mode, 0);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source   string for determining if it is in a normalized format
+     * @param mode     normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                  Normalizer.NFKC,Normalizer.NFKD)
+     * @return         Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.8
+     */
+    public static QuickCheckResult quickCheck( String source, Mode mode) {
+        return mode.quickCheck(source.toCharArray(),0,source.length(),true,null);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source   string for determining if it is in a normalized format
+     * @param mode     normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                  Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2     
+     * @return         Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+    public static QuickCheckResult quickCheck( String source, Mode mode, int options) {
+        return mode.quickCheck(source.toCharArray(),0,source.length(),true,NormalizerImpl.getNX(options));
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source Array of characters for determining if it is in a 
+     *                normalized format
+     * @param mode   normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2
+     * @return       Return code to specify if the text is normalized or not 
+     *                (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+    public static QuickCheckResult quickCheck(char[] source, Mode mode, int options) {
+        return mode.quickCheck(source,0,source.length,true, NormalizerImpl.getNX(options));
+    }
+    
+    /**
+     * Performing quick check on a string, to quickly determine if the string is 
+     * in a particular normalization format.
+     * Three types of result can be returned Normalizer.YES, Normalizer.NO or
+     * Normalizer.MAYBE. Result Normalizer.YES indicates that the argument
+     * string is in the desired normalized format, Normalizer.NO determines that
+     * argument string is not in the desired normalized format. A 
+     * Normalizer.MAYBE result indicates that a more thorough check is required, 
+     * the user may have to put the string in its normalized form and compare 
+     * the results.
+     *
+     * @param source    string for determining if it is in a normalized format
+     * @param start     the start index of the source
+     * @param limit     the limit index of the source it is equal to the length
+     * @param mode      normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                   Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     * @return          Return code to specify if the text is normalized or not 
+     *                   (Normalizer.YES, Normalizer.NO or
+     *                   Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+
+    public static QuickCheckResult quickCheck(char[] source,int start, 
+                                              int limit, Mode mode,int options) {       
+        return mode.quickCheck(source,start,limit,true,NormalizerImpl.getNX(options));
+    }
+    
+    //-------------------------------------------------------------------------
+    // Internal methods (for now)
+    //-------------------------------------------------------------------------
+
+    /**
+     * Test if a string is in a given normalization form.
+     * This is semantically equivalent to source.equals(normalize(source, mode)).
+     *
+     * Unlike quickCheck(), this function returns a definitive result,
+     * never a "maybe".
+     * For NFD, NFKD, and FCD, both functions work exactly the same.
+     * For NFC and NFKC where quickCheck may return "maybe", this function will
+     * perform further tests to arrive at a true/false result.
+     * @param src       The input array of characters to be checked to see if 
+     *                   it is normalized
+     * @param start     The strart index in the source
+     * @param limit     The limit index in the source
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     * @return Boolean value indicating whether the source string is in the
+     *         "mode" normalization form
+     * @stable ICU 2.6
+     */
+    public static boolean isNormalized(char[] src,int start,
+                                       int limit, Mode mode, 
+                                       int options) {
+        return (mode.quickCheck(src,start,limit,false,NormalizerImpl.getNX(options))==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param str       the input string to be checked to see if it is 
+     *                   normalized
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2   
+     * @see #isNormalized
+     * @stable ICU 2.6
+     */
+    public static boolean isNormalized(String str, Mode mode, int options) {
+        return (mode.quickCheck(str.toCharArray(),0,str.length(),false,NormalizerImpl.getNX(options))==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param char32    the input code point to be checked to see if it is 
+     *                   normalized
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     *
+     * @see #isNormalized
+     * @stable ICU 2.6
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static boolean isNormalized(int char32, Mode mode,int options) {
+        return isNormalized(UTF16.valueOf(char32), mode, options);
+    }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     *
+     * Canonical equivalence between two strings is defined as their normalized
+     * forms (NFD or NFC) being identical.
+     * This function compares strings incrementally instead of normalizing
+     * (and optionally case-folding) both strings entirely,
+     * improving performance significantly.
+     *
+     * Bulk normalization is only necessary if the strings do not fulfill the 
+     * FCD conditions. Only in this case, and only if the strings are relatively 
+     * long, is memory allocated temporarily.
+     * For FCD strings and short non-FCD strings there is no memory allocation.
+     *
+     * Semantically, this is equivalent to
+     *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+     * where code point order and foldCase are all optional.
+     *
+     * @param s1        First source character array.
+     * @param s1Start   start index of source
+     * @param s1Limit   limit of the source
+     *
+     * @param s2        Second source character array.
+     * @param s2Start   start index of the source
+     * @param s2Limit   limit of the source
+     * 
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions.If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(char[] s1, int s1Start, int s1Limit,
+                              char[] s2, int s2Start, int s2Limit,
+                              int options) {
+        return internalCompare(s1, s1Start, s1Limit, 
+                               s2, s2Start, s2Limit, 
+                               options);
+    } 
+       
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions. If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(String s1, String s2, int options) {
+         
+        return compare(s1.toCharArray(),0,s1.length(),
+                       s2.toCharArray(),0,s2.length(),
+                       options);
+    }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions. If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(char[] s1, char[] s2, int options) {
+        return compare(s1,0,s1.length,s2,0,s2.length,options);
+    } 
+        
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @param char32a    the first code point to be checked against the
+     * @param char32b    the second code point
+     * @param options    A bit set of options
+     * @stable ICU 2.8
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static int compare(int char32a, int char32b,int options) {
+        return compare(UTF16.valueOf(char32a), UTF16.valueOf(char32b), options);
+    }
+    
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @param char32a   the first code point to be checked against
+     * @param str2      the second string
+     * @param options   A bit set of options
+     * @stable ICU 2.8
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static int compare(int char32a, String str2, int options) {
+        return compare(UTF16.valueOf(char32a), str2, options);
+    }
+   
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * With the input strings already being normalized,
+     * this function will use next() and previous()
+     * to find the adjacent end pieces of the input strings.
+     * Only the concatenation of these end pieces will be normalized and
+     * then concatenated with the remaining parts of the input strings.
+     *
+     * It is allowed to have dest==left to avoid copying the entire left string.
+     *
+     * @param left Left source array, may be same as dest.
+     * @param leftStart start in the left array.
+     * @param leftLimit limit in the left array (==length)
+     * @param right Right source array.
+     * @param rightStart start in the right array.
+     * @param rightLimit limit in the right array (==length)
+     * @param dest The output buffer; can be null if destStart==destLimit==0 
+     *              for pure preflighting.
+     * @param destStart start in the destination array
+     * @param destLimit limit in the destination array (==length)
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return Length of output (number of chars) when successful or 
+     *          IndexOutOfBoundsException
+     * @exception IndexOutOfBoundsException whose message has the string 
+     *             representation of destination capacity required. 
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @exception IndexOutOfBoundsException if target capacity is less than the
+     *             required length
+     * @stable ICU 2.8
+     */
+    /* Concatenation of normalized strings --------------------------------- */
+    
+    public static int concatenate(char[] left,  int leftStart,  int leftLimit,
+                                  char[] right, int rightStart, int rightLimit, 
+                                  char[] dest,  int destStart,  int destLimit,
+                                  Normalizer.Mode mode, int options) {
+                               
+    
+        UCharacterIterator iter;
+        
+        int leftBoundary, rightBoundary, destLength;
+    
+        if(dest == null) {
+            throw new IllegalArgumentException();
+        }
+    
+        /* check for overlapping right and destination */
+        if (right == dest && rightStart < destLimit && destStart < rightLimit) {
+            throw new IllegalArgumentException("overlapping right and dst ranges");
+        }
+    
+        /* allow left==dest */
+    
+        /*
+         * Input: left[0..leftLength[ + right[0..rightLength[
+         *
+         * Find normalization-safe boundaries leftBoundary and rightBoundary
+         * and copy the end parts together:
+         * buffer=left[leftBoundary..leftLength[ + right[0..rightBoundary[
+         *
+         * dest=left[0..leftBoundary[ +
+         *      normalize(buffer) +
+         *      right[rightBoundary..rightLength[
+         */
+    
+        /*
+         * find a normalization boundary at the end of the left string
+         * and copy the end part into the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(left, leftStart, leftLimit);
+                                             
+        iter.setIndex(iter.getLength()); /* end of left string */
+        char[] buffer=new char[100];
+        int bufferLength;
+        bufferLength=previous(iter, buffer,0,buffer.length,mode,false,null,options);
+        
+        leftBoundary=iter.getIndex();
+        
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the left string: we know the boundary already */
+            System.arraycopy(left,leftBoundary,buffer,0,bufferLength);
+        }
+    
+        /*
+         * find a normalization boundary at the beginning of the right string
+         * and concatenate the beginning part to the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(right, rightStart, rightLimit);
+        
+        rightBoundary=next(iter,buffer,bufferLength, buffer.length-bufferLength,
+                           mode, false,null, options);
+                           
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the right string: we know the boundary already */
+            System.arraycopy(right,rightBoundary,buffer,
+                             bufferLength,rightBoundary);
+        }
+
+        bufferLength+=rightBoundary;
+    
+        /* copy left[0..leftBoundary[ to dest */
+        if(left!=dest && leftBoundary>0 && (destLimit)>0) {
+            System.arraycopy(left,0,dest,0, Math.min(leftBoundary,destLimit)); 
+        }
+        destLength=leftBoundary;
+    
+        /* concatenate the normalization of the buffer to dest */
+        if(destLimit>destLength) {
+            destLength+=Normalizer.normalize(buffer,0,bufferLength,dest,
+                                             destLength,destLimit,mode,options);
+            
+        } else {
+            destLength+=Normalizer.normalize(buffer, 0, bufferLength,null,0,0,mode,options);
+        }
+    
+        /* concatenate right[rightBoundary..rightLength[ to dest */
+        rightStart+=rightBoundary;
+        int rightLength=(rightLimit-rightStart);
+        if(rightLength>0 && destLimit>destLength) {
+            System.arraycopy(right,rightStart,dest,destLength,
+                             Math.min(rightLength,destLength)
+                             );
+        }
+        destLength+=rightLength;
+        
+        if(destLength<=(destLimit-destStart)) {
+            return destLength;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(destLength));
+        }  
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate 
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     * @stable ICU 2.8
+     */
+    public static String concatenate(char[] left, char[] right,Mode mode, int options) {
+        char[] result = new char[(left.length+right.length)* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;) {
+               
+            int length = concatenate(left,  0, left.length,
+                                     right, 0, right.length,
+                                     result,0, result.length,
+                                     mode, options);
+            if(length<=result.length) {
+                return new String(result,0,length);
+            } else {
+                result = new char[length];
+            }
+        }            
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     * @stable ICU 2.8
+     */
+    public static String concatenate(String left, String right,Mode mode, int options) {
+        char[] result = new char[(left.length()+right.length())* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;) {
+               
+            int length = concatenate(left.toCharArray(), 0, left.length(),
+                                     right.toCharArray(),0, right.length(),
+                                     result,             0, result.length,
+                                     mode, options);
+            if(length<=result.length) {
+                return new String(result,0,length);
+            } else {
+                result = new char[length];
+            }
+        }            
+    }
+    
+    /**
+     * Gets the FC_NFKC closure set from the normalization data
+     * @param c The code point whose closure set is to be retrieved
+     * @param dest The char array to receive the closure set
+     * @stable ICU 3.8
+     */
+    public static int getFC_NFKC_Closure(int c,char[] dest) {
+        return NormalizerImpl.getFC_NFKC_Closure(c,dest);
+    }
+    /**
+     * Gets the FC_NFKC closure set from the normalization data
+     * @param c The the code point whose closure set is to be retrieved
+     * @return String representation of the closure set
+     * @stable ICU 3.8
+     */ 
+    public static String getFC_NFKC_Closure(int c) {
+        char[] dest = new char[10];
+        for(;;) {
+            int length = getFC_NFKC_Closure(c,dest);
+            if(length<=dest.length) {
+                return new String(dest,0,length);
+            } else {
+                dest = new char[length];
+            }
+        }
+    }
+    //-------------------------------------------------------------------------
+    // Iteration API
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return the current character in the normalized text->
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int current() {
+        if(bufferPos<bufferLimit || nextNormalize()) {
+            return getCodePointAt(bufferPos);
+        } else {
+            return DONE;
+        }
+    }
+        
+    /**
+     * Return the next character in the normalized text and advance
+     * the iteration position by one.  If the end
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int next() {
+        if(bufferPos<bufferLimit ||  nextNormalize()) {
+            int c=getCodePointAt(bufferPos);
+            bufferPos+=(c>0xFFFF) ? 2 : 1;
+            return c;
+        } else {
+            return DONE;
+        }
+    }
+        
+        
+    /**
+     * Return the previous character in the normalized text and decrement
+     * the iteration position by one.  If the beginning
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int previous() {
+        if(bufferPos>0 || previousNormalize()) {
+            int c=getCodePointAt(bufferPos-1);
+            bufferPos-=(c>0xFFFF) ? 2 : 1;
+            return c;
+        } else {
+            return DONE;
+        }
+    }
+        
+    /**
+     * Reset the index to the beginning of the text.
+     * This is equivalent to setIndexOnly(startIndex)).
+     * @stable ICU 2.8
+     */
+    public void reset() {
+        text.setIndex(0);
+        currentIndex=nextIndex=0;
+        clearBuffer();
+    }
+    
+    /**
+     * Set the iteration position in the input text that is being normalized,
+     * without any immediate normalization.
+     * After setIndexOnly(), getIndex() will return the same index that is
+     * specified here.
+     *
+     * @param index the desired index in the input text.
+     * @stable ICU 2.8
+     */
+    public void setIndexOnly(int index) {
+        text.setIndex(index);
+        currentIndex=nextIndex=index; // validates index
+        clearBuffer();
+    }
+        
+    /**
+     * Set the iteration position in the input text that is being normalized
+     * and return the first normalized character at that position.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em> text,
+     * while {@link #next} and {@link #previous} iterate through characters
+     * in the normalized <em>output</em>.  This means that there is not
+     * necessarily a one-to-one correspondence between characters returned
+     * by <tt>next</tt> and <tt>previous</tt> and the indices passed to and
+     * returned from <tt>setIndex</tt> and {@link #getIndex}.
+     * <p>
+     * @param index the desired index in the input text->
+     *
+     * @return   the first normalized character that is the result of iterating
+     *            forward starting at the given index.
+     *
+     * @throws IllegalArgumentException if the given index is less than
+     *          {@link #getBeginIndex} or greater than {@link #getEndIndex}.
+     * @return The codepoint as an int
+     * @deprecated ICU 3.2
+     * @obsolete ICU 3.2
+     */
+     ///CLOVER:OFF
+     public int setIndex(int index) {
+         setIndexOnly(index);
+         return current();
+     }
+     ///CLOVER:ON
+    /**
+     * Retrieve the index of the start of the input text. This is the begin 
+     * index of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the 
+     * <tt>String</tt> over which this <tt>Normalizer</tt> is iterating
+     * @deprecated ICU 2.2. Use startIndex() instead.
+     * @return The codepoint as an int
+     * @see #startIndex
+     */
+    public int getBeginIndex() {
+        return 0;
+    }
+
+    /**
+     * Retrieve the index of the end of the input text.  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @deprecated ICU 2.2. Use endIndex() instead.
+     * @return The codepoint as an int
+     * @see #endIndex
+     */
+    public int getEndIndex() {
+        return endIndex();
+    }
+    /**
+     * Return the first character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to the beginning of the text->
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int first() {
+        reset();
+        return next();
+    }
+        
+    /**
+     * Return the last character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to be just before the
+     * the input text corresponding to that normalized character.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int last() {
+        text.setToLimit();
+        currentIndex=nextIndex=text.getIndex();
+        clearBuffer();
+        return previous();
+    }
+        
+    /**
+     * Retrieve the current iteration position in the input text that is
+     * being normalized.  This method is useful in applications such as
+     * searching, where you need to be able to determine the position in
+     * the input text that corresponds to a given normalized output character.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em>, while
+     * {@link #next} and {@link #previous} iterate through characters in the
+     * <em>output</em>.  This means that there is not necessarily a one-to-one
+     * correspondence between characters returned by <tt>next</tt> and
+     * <tt>previous</tt> and the indices passed to and returned from
+     * <tt>setIndex</tt> and {@link #getIndex}.
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int getIndex() {
+        if(bufferPos<bufferLimit) {
+            return currentIndex;
+        } else {
+            return nextIndex;
+        }
+    }
+        
+    /**
+     * Retrieve the index of the start of the input text. This is the begin 
+     * index of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the 
+     * <tt>String</tt> over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int startIndex() {
+        return 0;
+    }
+        
+    /**
+     * Retrieve the index of the end of the input text->  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int endIndex() {
+        return text.getLength();
+    }
+    
+    //-------------------------------------------------------------------------
+    // Property access methods
+    //-------------------------------------------------------------------------
+    /**
+     * Set the normalization mode for this object.
+     * <p>
+     * <b>Note:</b>If the normalization mode is changed while iterating
+     * over a string, calls to {@link #next} and {@link #previous} may
+     * return previously buffers characters in the old normalization mode
+     * until the iteration is able to re-sync at the next base character.
+     * It is safest to call {@link #setText setText()}, {@link #first},
+     * {@link #last}, etc. after calling <tt>setMode</tt>.
+     * <p>
+     * @param newMode the new mode for this <tt>Normalizer</tt>.
+     * The supported modes are:
+     * <ul>
+     *  <li>{@link #NFC}    - Unicode canonical decompositiion
+     *                        followed by canonical composition.
+     *  <li>{@link #NFKC}   - Unicode compatibility decompositiion
+     *                        follwed by canonical composition.
+     *  <li>{@link #NFD}    - Unicode canonical decomposition
+     *  <li>{@link #NFKD}   - Unicode compatibility decomposition.
+     *  <li>{@link #NONE}   - Do nothing but return characters
+     *                        from the underlying input text.
+     * </ul>
+     *
+     * @see #getMode
+     * @stable ICU 2.8
+     */
+    public void setMode(Mode newMode) {
+        mode = newMode;
+    }
+    /**
+     * Return the basic operation performed by this <tt>Normalizer</tt>
+     *
+     * @see #setMode
+     * @stable ICU 2.8
+     */
+    public Mode getMode() {
+        return mode;
+    }
+    /**
+     * Set options that affect this <tt>Normalizer</tt>'s operation.
+     * Options do not change the basic composition or decomposition operation
+     * that is being performed , but they control whether
+     * certain optional portions of the operation are done.
+     * Currently the only available option is:
+     * <p>
+     * <ul>
+     *   <li>{@link #UNICODE_3_2} - Use Normalization conforming to Unicode version 3.2.
+     * </ul>
+     * <p>
+     * @param   option  the option whose value is to be set.
+     * @param   value   the new setting for the option.  Use <tt>true</tt> to
+     *                  turn the option on and <tt>false</tt> to turn it off.
+     *
+     * @see #getOption
+     * @stable ICU 2.6
+     */
+    public void setOption(int option,boolean value) {
+        if (value) {
+            options |= option;
+        } else {
+            options &= (~option);
+        }
+    }
+        
+    /**
+     * Determine whether an option is turned on or off.
+     * <p>
+     * @see #setOption
+     * @stable ICU 2.6
+     */
+    public int getOption(int option) {
+        if((options & option)!=0) {
+            return 1 ;
+        } else {
+            return 0;
+        }
+    }
+    
+    /**
+     * Gets the underlying text storage
+     * @param fillIn the char buffer to fill the UTF-16 units.
+     *         The length of the buffer should be equal to the length of the
+     *         underlying text storage
+     * @throws IndexOutOfBoundsException
+     * @see   #getLength
+     * @stable ICU 2.8
+     */
+    public int getText(char[] fillIn) {
+        return text.getText(fillIn);
+    }
+    
+    /**
+     * Gets the length of underlying text storage
+     * @return the length
+     * @stable ICU 2.8
+     */ 
+    public int getLength() {
+        return text.getLength();
+    }
+    
+    /**
+     * Returns the text under iteration as a string
+     * @return a copy of the text under iteration.
+     * @stable ICU 2.8
+     */
+    public String getText() {
+        return text.getText();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(StringBuffer newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+        
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(char[] newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(String newText) {
+            
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(CharacterIterator newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the string.
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(UCharacterIterator newText) { 
+        try{
+            UCharacterIterator newIter = (UCharacterIterator)newText.clone();
+            if (newIter == null) {
+                throw new IllegalStateException("Could not create a new UCharacterIterator");
+            }
+            text = newIter;
+            reset();
+        }catch(CloneNotSupportedException e) {
+            throw new IllegalStateException("Could not clone the UCharacterIterator");
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Private utility methods
+    //-------------------------------------------------------------------------
+    
+
+    /* backward iteration --------------------------------------------------- */
+               
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+
+    private static  long getPrevNorm32(UCharacterIterator src, 
+                                       int/*unsigned*/ minC, 
+                                       int/*unsigned*/ mask, 
+                                       char[] chars) {
+        long norm32;
+        int ch=0;
+        /* need src.hasPrevious() */
+        if((ch=src.previous()) == UCharacterIterator.DONE) {
+            return 0;
+        }
+        chars[0]=(char)ch;
+        chars[1]=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further */
+        if(chars[0]<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(chars[0])) {
+            return NormalizerImpl.getNorm32(chars[0]);
+        } else if(UTF16.isLeadSurrogate(chars[0]) || (src.getIndex()==0)) {
+            /* unpaired surrogate */
+            chars[1]=(char)src.current();
+            return 0;
+        } else if(UTF16.isLeadSurrogate(chars[1]=(char)src.previous())) {
+            norm32=NormalizerImpl.getNorm32(chars[1]);
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have irrelevant 
+                 * data */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return NormalizerImpl.getNorm32FromSurrogatePair(norm32,chars[0]);
+            }
+        } else {
+            /* unpaired second surrogate, undo the c2=src.previous() movement */
+            src.moveIndex( 1);
+            return 0;
+        }
+    }
+ 
+    private interface IsPrevBoundary{
+        public boolean isPrevBoundary(UCharacterIterator src,
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ mask, 
+                                      char[] chars);
+    }
+    private static final class IsPrevNFDSafe implements IsPrevBoundary{
+        /*
+         * for NF*D:
+         * read backwards and check if the lead combining class is 0
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src,
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      char[] chars) {
+    
+            return NormalizerImpl.isNFDSafe(getPrevNorm32(src, minC, 
+                                                          ccOrQCMask, chars), 
+                                            ccOrQCMask, 
+                                            ccOrQCMask& NormalizerImpl.QC_MASK);
+        }
+    }
+    
+    private static final class IsPrevTrueStarter implements IsPrevBoundary{
+        /*
+         * read backwards and check if the character is (or its decomposition 
+         * begins with) a "true starter" (cc==0 and NF*C_YES)
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC,
+                                      int/*unsigned*/ ccOrQCMask,
+                                      char[] chars) {
+            long norm32; 
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getPrevNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32,ccOrQCMask,decompQCMask);
+        }
+    }
+    
+    private static int findPreviousIterationBoundary(UCharacterIterator src,
+                                                     IsPrevBoundary obj, 
+                                                     int/*unsigned*/ minC,
+                                                     int/*mask*/ mask,
+                                                     char[] buffer, 
+                                                     int[] startIndex) {
+        char[] chars=new char[2];
+        boolean isBoundary;
+    
+        /* fill the buffer from the end backwards */
+        startIndex[0] = buffer.length;
+        chars[0]=0;
+        while(src.getIndex()>0 && chars[0]!=UCharacterIterator.DONE) {
+            isBoundary=obj.isPrevBoundary(src, minC, mask, chars);
+    
+            /* always write this character to the front of the buffer */
+            /* make sure there is enough space in the buffer */
+            if(startIndex[0] < (chars[1]==0 ? 1 : 2)) {
+
+                // grow the buffer
+                char[] newBuf = new char[buffer.length*2];
+                /* move the current buffer contents up */
+                System.arraycopy(buffer,startIndex[0],newBuf,
+                                 newBuf.length-(buffer.length-startIndex[0]),
+                                 buffer.length-startIndex[0]);
+                //adjust the startIndex
+                startIndex[0]+=newBuf.length-buffer.length;
+                
+                buffer=newBuf;
+                newBuf=null;                
+                
+            }
+    
+            buffer[--startIndex[0]]=chars[0];
+            if(chars[1]!=0) {
+                buffer[--startIndex[0]]=chars[1];
+            }
+    
+            /* stop if this just-copied character is a boundary */
+            if(isBoundary) {
+                break;
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return buffer.length-startIndex[0];
+    }
+    
+    private static int previous(UCharacterIterator src,
+                                char[] dest, int destStart, int destLimit, 
+                                Mode mode, 
+                                boolean doNormalize, 
+                                boolean[] pNeededToNormalize,
+                                int options) {
+
+        IsPrevBoundary isPreviousBoundary;
+        int destLength, bufferLength;
+        int/*unsigned*/ mask;
+        
+        int c,c2;
+        
+        char minC;
+        int destCapacity = destLimit-destStart;
+        destLength=0;
+        
+        
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isPreviousBoundary = mode.getPrevBoundary();
+
+        if(isPreviousBoundary==null) {
+            destLength=0;
+            if((c=src.previous())>=0) {
+                destLength=1;
+                if(UTF16.isTrailSurrogate((char)c)) {
+                    c2= src.previous();
+                    if(c2!= UCharacterIterator.DONE) {
+                        if(UTF16.isLeadSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                            c=c2; 
+                        } else {
+                            src.moveIndex(1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+        }
+        
+        char[] buffer = new char[100];
+        int[] startIndex= new int[1];
+        bufferLength=findPreviousIterationBoundary(src,
+                                                   isPreviousBoundary, 
+                                                   minC, mask,buffer, 
+                                                   startIndex);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=Normalizer.normalize(buffer,startIndex[0],
+                                                startIndex[0]+bufferLength,
+                                                dest, destStart,destLimit,
+                                                mode, options);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                                    Utility.arrayRegionMatches(
+                                                                               buffer,0,dest,
+                                                                               destStart,destLimit
+                                                                               ));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,startIndex[0],dest,0,
+                                     (bufferLength<destCapacity) ? 
+                                     bufferLength : destCapacity
+                                     );
+                }
+            }
+        } 
+
+    
+        return destLength;
+    }
+
+ 
+    
+    /* forward iteration ---------------------------------------------------- */
+    /*
+     * read forward and check if the character is a next-iteration boundary
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private interface IsNextBoundary{
+        boolean isNextBoundary(UCharacterIterator src, 
+                               int/*unsigned*/ minC, 
+                               int/*unsigned*/ mask, 
+                               int[] chars);
+    }   
+    /*
+     * read forward and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair
+     * always reads complete characters
+     */
+    private static long /*unsigned*/ getNextNorm32(UCharacterIterator src, 
+                                                   int/*unsigned*/ minC, 
+                                                   int/*unsigned*/ mask, 
+                                                   int[] chars) {
+        long norm32;
+    
+        /* need src.hasNext() to be true */
+        chars[0]=src.next();
+        chars[1]=0;
+    
+        if(chars[0]<minC) {
+            return 0;
+        }
+    
+        norm32=NormalizerImpl.getNorm32((char)chars[0]);
+        if(UTF16.isLeadSurrogate((char)chars[0])) {
+            if(src.current()!=UCharacterIterator.DONE &&
+               UTF16.isTrailSurrogate((char)(chars[1]=src.current()))) {
+                src.moveIndex(1); /* skip the c2 surrogate */
+                if((norm32&mask)==0) {
+                    /* irrelevant data */
+                    return 0;
+                } else {
+                    /* norm32 must be a surrogate special */
+                    return NormalizerImpl.getNorm32FromSurrogatePair(norm32,(char)chars[1]);
+                }
+            } else {
+                /* unmatched surrogate */
+                return 0;
+            }
+        }
+        return norm32;
+    }
+
+
+    /*
+     * for NF*D:
+     * read forward and check if the lead combining class is 0
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextNFDSafe implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      int[] chars) {
+            return NormalizerImpl.isNFDSafe(getNextNorm32(src,minC,ccOrQCMask,chars), 
+                                            ccOrQCMask, ccOrQCMask&NormalizerImpl.QC_MASK);
+        }
+    }
+    
+    /*
+     * for NF*C:
+     * read forward and check if the character is (or its decomposition begins 
+     * with) a "true starter" (cc==0 and NF*C_YES)
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextTrueStarter implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      int[] chars) {
+            long norm32;
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getNextNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32, ccOrQCMask, decompQCMask);
+        }
+    }
+    
+    private static int findNextIterationBoundary(UCharacterIterator src,
+                                                 IsNextBoundary obj, 
+                                                 int/*unsigned*/ minC, 
+                                                 int/*unsigned*/ mask,
+                                                 char[] buffer) {
+        int[] chars = new int[2];
+        int bufferIndex =0;
+        
+        if(src.current()==UCharacterIterator.DONE) {
+            return 0;
+        }
+        /* get one character and ignore its properties */
+        chars[0]=src.next();
+        buffer[0]=(char)chars[0];
+        bufferIndex=1;
+        
+        if(UTF16.isLeadSurrogate((char)chars[0])&& 
+           src.current()!=UCharacterIterator.DONE) {
+            if(UTF16.isTrailSurrogate((char)(chars[1]=src.next()))) {
+                buffer[bufferIndex++]=(char)chars[1];
+            } else {
+                src.moveIndex(-1); /* back out the non-trail-surrogate */
+            }
+        }
+    
+        /* get all following characters until we see a boundary */
+        /* checking hasNext() instead of c!=DONE on the off-chance that U+ffff 
+         * is part of the string */
+        while( src.current()!=UCharacterIterator.DONE) {
+            if(obj.isNextBoundary(src, minC, mask, chars)) {
+                /* back out the latest movement to stop at the boundary */
+                src.moveIndex(chars[1]==0 ? -1 : -2);
+                break;
+            } else {
+                if(bufferIndex+(chars[1]==0 ? 1 : 2)<=buffer.length) {
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                } else {
+                    char[] newBuf = new char[buffer.length    *2];
+                    System.arraycopy(buffer,0,newBuf,0,bufferIndex);
+                    buffer = newBuf;
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                }
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return bufferIndex;
+    }
+    
+    private static int next(UCharacterIterator src,
+                            char[] dest, int destStart, int destLimit,
+                            Normalizer.Mode mode,
+                            boolean doNormalize, 
+                            boolean[] pNeededToNormalize,
+                            int options) {
+                                
+        IsNextBoundary isNextBoundary;
+        int /*unsigned*/ mask;
+        int /*unsigned*/ bufferLength;
+        int c,c2;
+        char minC;
+        int destCapacity = destLimit - destStart;
+        int destLength = 0;
+        
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isNextBoundary = mode.getNextBoundary();
+        
+        if(isNextBoundary==null) {
+            destLength=0;
+            c=src.next();
+            if(c!=UCharacterIterator.DONE) {
+                destLength=1;
+                if(UTF16.isLeadSurrogate((char)c)) {
+                    c2= src.next();
+                    if(c2!= UCharacterIterator.DONE) {
+                        if(UTF16.isTrailSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c2; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                        } else {
+                            src.moveIndex(-1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+        }
+
+        char[] buffer=new char[100];
+        int[] startIndex = new int[1];
+        
+        bufferLength=findNextIterationBoundary(src,isNextBoundary, minC, mask,
+                                               buffer);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=mode.normalize(buffer,startIndex[0],bufferLength,
+                                          dest,destStart,destLimit, options);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                                    Utility.arrayRegionMatches(buffer,startIndex[0],
+                                                                               dest,destStart,
+                                                                               destLength));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,0,dest,destStart,
+                                     Math.min(bufferLength,destCapacity)
+                                     );
+                }
+                                      
+               
+            }
+        }
+        return destLength;
+    } 
+
+    private void clearBuffer() {
+        bufferLimit=bufferStart=bufferPos=0;
+    }
+        
+    private boolean nextNormalize() {
+        
+        clearBuffer();
+        currentIndex=nextIndex;
+        text.setIndex(nextIndex);
+                
+        bufferLimit=next(text,buffer,bufferStart,buffer.length,mode,true,null,options);
+                        
+        nextIndex=text.getIndex();
+        return (bufferLimit>0);
+    }
+        
+    private boolean     previousNormalize() {
+
+        clearBuffer();
+        nextIndex=currentIndex;
+        text.setIndex(currentIndex);
+        bufferLimit=previous(text,buffer,bufferStart,buffer.length,mode,true,null,options);
+                
+        currentIndex=text.getIndex();
+        bufferPos = bufferLimit;
+        return bufferLimit>0;
+    }
+    
+    private int getCodePointAt(int index) {
+        if( UTF16.isSurrogate(buffer[index])) {
+            if(UTF16.isLeadSurrogate(buffer[index])) {
+                if((index+1)<bufferLimit &&
+                   UTF16.isTrailSurrogate(buffer[index+1])) {
+                    return UCharacterProperty.getRawSupplementary(
+                                                                  buffer[index], 
+                                                                  buffer[index+1]
+                                                                  );
+                }
+            }else if(UTF16.isTrailSurrogate(buffer[index])) {
+                if(index>0 && UTF16.isLeadSurrogate(buffer[index-1])) {
+                    return UCharacterProperty.getRawSupplementary(
+                                                                  buffer[index-1],
+                                                                  buffer[index]
+                                                                  );
+                }
+            }   
+        }
+        return buffer[index];
+        
+    }
+    
+    /**
+     * Internal API
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean isNFSkippable(int c, Mode mode) {
+        return mode.isNFSkippable(c);
+    }    
+
+        
+    private static int internalCompare(char[] s1, int s1Start,int s1Limit,
+                                       char[] s2, int s2Start,int s2Limit,
+                                       int options) {
+                                  
+        char[] fcd1  = new char[300];
+        char[] fcd2  = new char[300];
+        
+        Normalizer.Mode mode;
+        int result;
+        
+        if(    s1==null || s1Start<0 || s1Limit<0 || 
+               s2==null || s2Start<0 || s2Limit<0 ||
+               s1Limit<s1Start || s2Limit<s2Start
+               ) {
+                
+            throw new IllegalArgumentException();
+        }
+
+        UnicodeSet nx=NormalizerImpl.getNX((int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT));
+        options|= NormalizerImpl.COMPARE_EQUIV;
+        result=0;
+
+        /*
+         * UAX #21 Case Mappings, as fixed for Unicode version 4
+         * (see Jitterbug 2021), defines a canonical caseless match as
+         *
+         * A string X is a canonical caseless match
+         * for a string Y if and only if
+         * NFD(toCasefold(NFD(X))) = NFD(toCasefold(NFD(Y)))
+         *
+         * For better performance, we check for FCD (or let the caller tell us that
+         * both strings are in FCD) for the inner normalization.
+         * BasicNormalizerTest::FindFoldFCDExceptions() makes sure that
+         * case-folding preserves the FCD-ness of a string.
+         * The outer normalization is then only performed by NormalizerImpl.cmpEquivFold()
+         * when there is a difference.
+         *
+         * Exception: When using the Turkic case-folding option, we do perform
+         * full NFD first. This is because in the Turkic case precomposed characters
+         * with 0049 capital I or 0069 small i fold differently whether they
+         * are first decomposed or not, so an FCD check - a check only for
+         * canonical order - is not sufficient.
+         */
+        if((options& Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) >0 ) {
+            mode=Normalizer.NFD;
+            options&=~ Normalizer.INPUT_IS_FCD;
+        } else {
+            mode=Normalizer.FCD;
+        }
+        if((options& Normalizer.INPUT_IS_FCD)==0) {
+            char[] dest;
+            int fcdLen1, fcdLen2;
+            boolean isFCD1, isFCD2;
+        
+            // check if s1 and/or s2 fulfill the FCD conditions
+            isFCD1= Normalizer.YES==mode.quickCheck(s1, s1Start, s1Limit, true, nx);
+            isFCD2= Normalizer.YES==mode.quickCheck(s2, s2Start, s2Limit, true, nx);
+            /*
+             * ICU 2.4 had a further optimization:
+             * If both strings were not in FCD, then they were both NFD'ed,
+             * and the COMPARE_EQUIV option was turned off.
+             * It is not entirely clear that this is valid with the current
+             * definition of the canonical caseless match.
+             * Therefore, ICU 2.6 removes that optimization.
+             */
+
+            if(!isFCD1) {
+                fcdLen1=mode.normalize(s1, 0, s1.length,
+                                       fcd1, 0, fcd1.length,
+                                       nx);
+                                       
+                if(fcdLen1>fcd1.length) {
+                    dest=new char[fcdLen1];
+                    fcdLen1=mode.normalize( s1, 0, s1.length,
+                                            dest, 0, dest.length,
+                                            nx);
+                    s1=dest;
+                } else {
+                    s1=fcd1;
+                }
+                s1Limit=fcdLen1;
+                s1Start=0;
+            }
+
+            if(!isFCD2) {
+                fcdLen2=mode.normalize(s2,s2Start,s2Limit,
+                                       fcd2,0,fcd2.length,
+                                       nx);
+                
+                if(fcdLen2>fcd2.length) {
+                    dest=new char[fcdLen2];
+                    fcdLen2=mode.normalize( s2,s2Start,s2Limit,
+                                            dest,0,dest.length,
+                                            nx);
+                    s2=dest;
+                } else {
+                    s2=fcd2;
+                }
+                s2Limit=fcdLen2;
+                s2Start=0;
+            }
+                
+        }
+        
+        result=NormalizerImpl.cmpEquivFold(s1, s1Start, s1Limit, 
+                                           s2, s2Start, s2Limit, options);
+        return result;
+    }    
+    
+    /**
+     * Fetches the Unicode version burned into the Normalization data file
+     * @return VersionInfo version information of the normalizer
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    static VersionInfo getUnicodeVersion() {
+        return NormalizerImpl.getUnicodeVersion();
+    }
+}
diff --git a/src/com/ibm/icu/text/NullTransliterator.java b/src/com/ibm/icu/text/NullTransliterator.java
new file mode 100644
index 0000000..3c248c6
--- /dev/null
+++ b/src/com/ibm/icu/text/NullTransliterator.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * A transliterator that leaves text unchanged.
+ * @internal
+ */
+class NullTransliterator extends Transliterator {
+    /**
+     * Package accessible IDs for this transliterator.
+     */
+    static String SHORT_ID = "Null";
+    static String _ID      = "Any-Null";
+
+    /**
+     * Constructs a transliterator.
+     * @internal
+     */
+    public NullTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/NumberFormat.java b/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..add86ef
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,1676 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.Format;
+//#endif
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+// this is an enhanced version that is based on the standard version in the JDK
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getIntegerInstance</code> to get an
+ * integer number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat is designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after '6')
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after '8')
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown on DecimalFormat.
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * <h4>Synchronization</h4>
+ * <p>
+ * Number formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * <h4>DecimalFormat</h4>
+ * <p>DecimalFormat is the concrete implementation of NumberFormat, and the
+ * NumberFormat API is essentially an abstraction from DecimalFormat's API.
+ * Refer to DecimalFormat for more information about this API.</p>
+ *
+ * see          DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class NumberFormat extends UFormat {
+
+    // Constants used by factory methods to specify a style of format.
+    private static final int NUMBERSTYLE = 0;
+    private static final int CURRENCYSTYLE = 1;
+    private static final int PERCENTSTYLE = 2;
+    private static final int SCIENTIFICSTYLE = 3;
+    private static final int INTEGERSTYLE = 4;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int INTEGER_FIELD = 0;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int FRACTION_FIELD = 1;
+
+    // changed in ICU4J
+    /**
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Object number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos)
+    {
+        if (number instanceof Long) {
+            return format(((Long)number).longValue(), toAppendTo, pos);
+        } else if (number instanceof BigInteger) {
+            return format((BigInteger) number, toAppendTo, pos);
+//#if defined(FOUNDATION10)
+//#else
+        } else if (number instanceof java.math.BigDecimal) {
+            return format((java.math.BigDecimal) number, toAppendTo, pos);
+//#endif
+        } else if (number instanceof com.ibm.icu.math.BigDecimal) {
+            return format((com.ibm.icu.math.BigDecimal) number, toAppendTo, pos);
+        } else if (number instanceof CurrencyAmount) {
+            return format((CurrencyAmount)number, toAppendTo, pos);
+        } else if (number instanceof Number) {
+            return format(((Number)number).doubleValue(), toAppendTo, pos);
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Number");
+        }
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public final Object parseObject(String source,
+                                    ParsePosition parsePosition)
+    {
+        return parse(source, parsePosition);
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(double number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(long number) {
+        StringBuffer buf = new StringBuffer(19);
+        FieldPosition pos = new FieldPosition(0);
+        format(number, buf, pos);
+        return buf.toString();
+    }
+    
+    // [NEW]
+    /**
+     * Convenience method to format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public final String format(BigInteger number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Convenience method to format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public final String format(java.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+//#endif
+
+    // [NEW]
+    /**
+     * Convenience method to format an ICU BigDecimal.
+     * @stable ICU 2.0
+     */
+    public final String format(com.ibm.icu.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    // [NEW]
+    /**
+     * Convenience method to format a CurrencyAmount.
+     * @stable ICU 3.0
+     */
+    public final String format(CurrencyAmount currAmt) {
+        return format(currAmt, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(double number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(long number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+    // [NEW] 
+    /**
+     * Format a BigInteger.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(BigInteger number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos); 
+//#if defined(FOUNDATION10)
+//#else
+    
+    // [NEW]
+    /**
+     * Format a BigDecimal.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(java.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+//#endif
+
+    // [NEW]
+    /**
+     * Format a BigDecimal.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+    // [NEW]
+    /**
+     * Format a CurrencyAmount.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 3.0
+     */
+    public StringBuffer format(CurrencyAmount currAmt,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        // Default implementation -- subclasses may override
+        Currency save = getCurrency(), curr = currAmt.getCurrency();
+        boolean same = curr.equals(save);
+        if (!same) setCurrency(curr);
+        format(currAmt.getNumber(), toAppendTo, pos);
+        if (!same) setCurrency(save);
+        return toAppendTo;
+    }
+
+    /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see #isParseIntegerOnly
+     * @see java.text.Format#parseObject(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public abstract Number parse(String text, ParsePosition parsePosition);
+
+    /**
+     * Parses text from the beginning of the given string to produce a number.
+     * The method might not use the entire text of the given string.
+     *
+     * @param text A String whose beginning should be parsed.
+     * @return A Number parsed from the string.
+     * @exception ParseException if the beginning of the specified string 
+     * cannot be parsed.
+     * @see #format
+     * @stable ICU 2.0
+     */
+    //Bug 4375399 [Richard/GCL]
+    public Number parse(String text) throws ParseException {
+        ParsePosition parsePosition = new ParsePosition(0);
+        Number result = parse(text, parsePosition);
+        if (parsePosition.getIndex() == 0) {
+            throw new ParseException("Unparseable number: \"" + text + '"',
+                                     parsePosition.getErrorIndex());
+        }
+        return result;
+    }
+
+    // [NEW]
+    /**
+     * Parses text from the given string as a CurrencyAmount.  Unlike
+     * the parse() method, this method will attempt to parse a generic
+     * currency name, searching for a match of this object's locale's
+     * currency display names, or for a 3-letter ISO currency code.
+     * This method will fail if this format is not a currency format,
+     * that is, if it does not contain the currency pattern symbol
+     * (U+00A4) in its prefix or suffix.
+     *
+     * @param text the string to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return a CurrencyAmount, or null upon failure
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    CurrencyAmount parseCurrency(String text, ParsePosition pos) {
+        // Default implementation only -- subclasses should override
+        Number n = parse(text, pos);
+        return n == null ? null : new CurrencyAmount(n, getEffectiveCurrency());
+    }
+
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  The decimal separator accepted
+     * by the parse operation is locale-dependent and determined by the
+     * subclass.
+     * @return true if this will parse integers only
+     * @stable ICU 2.0
+     */
+    public boolean isParseIntegerOnly() {
+        return parseIntegerOnly;
+    }
+
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @param value true if this should parse integers only
+     * @see #isParseIntegerOnly
+     * @stable ICU 2.0
+     */
+    public void setParseIntegerOnly(boolean value) {
+        parseIntegerOnly = value;
+    }
+
+    /**
+     * Sets whether strict parsing is in effect.  When this is true, the
+     * following conditions cause a parse failure (examples use the pattern "#,##0.#"):<ul>
+     * <li>Leading zeros<br>
+     * '00', '0123' fail the parse, but '0' and '0.001' pass</li>
+     * <li>Leading or doubled grouping separators<br>
+     * ',123' and '1,,234" fail</li>
+     * <li>Groups of incorrect length when grouping is used<br>
+     * '1,23' and '1234,567' fail, but '1234' passes</li>
+     * <li>Grouping separators used in numbers followed by exponents<br>
+     * '1,234E5' fails, but '1234E5' and '1,234E' pass ('E' is not an exponent when
+     * not followed by a number)</li>
+     * </ul>
+     * When strict parsing is off, leading zeros and all grouping separators are ignored.
+     * This is the default behavior.
+     * @param value True to enable strict parsing.  Default is false.
+     * @see #isParseStrict
+     * @stable ICU 3.6
+     */
+    public void setParseStrict(boolean value) {
+        parseStrict = value;
+    }
+
+    /**
+     * Return whether strict parsing is in effect.
+     * @return true if strict parsing is in effect
+     * @see #setParseStrict
+     * @stable ICU 3.6
+     */
+    public boolean isParseStrict() {
+        return parseStrict;
+    }
+
+    //============== Locale Stuff =====================
+
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getIntegerInstance,
+     * getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getNumberInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the current default locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getIntegerInstance() {
+        return getInstance(ULocale.getDefault(), INTEGERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public static NumberFormat getIntegerInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), INTEGERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getIntegerInstance(ULocale inLocale) {
+        return getInstance(inLocale, INTEGERSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the current default locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(ULocale.getDefault(), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getCurrencyInstance(ULocale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the current default locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(ULocale.getDefault(), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getPercentInstance(ULocale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the current default locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(ULocale.getDefault(), SCIENTIFICSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), SCIENTIFICSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getScientificInstance(ULocale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+
+    // ===== Factory stuff =====
+    /**
+     * A NumberFormatFactory is used to register new number formats.  The factory
+     * should be able to create any of the predefined formats for each locale it
+     * supports.  When registered, the locales it supports extend or override the
+     * locales already supported by ICU.
+     * <p><b>Note:</b> as of ICU4J 3.2, the default API for NumberFormatFactory uses
+     * ULocale instead of Locale.  Instead of overriding createFormat(Locale, int),
+     * new implementations should override createFactory(ULocale, int).  Note that
+     * one of these two methods <b>MUST</b> be overridden or else an infinite
+     * loop will occur.
+     *
+     * @stable ICU 2.6
+     */
+    public static abstract class NumberFormatFactory {
+        /**
+         * Value passed to format requesting a default number format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_NUMBER = NUMBERSTYLE;
+
+        /**
+         * Value passed to format requesting a currency format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_CURRENCY = CURRENCYSTYLE;
+
+        /**
+         * Value passed to format requesting a percent format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_PERCENT = PERCENTSTYLE;
+
+        /**
+         * Value passed to format requesting a scientific format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_SCIENTIFIC = SCIENTIFICSTYLE;
+
+        /**
+         * Value passed to format requesting an integer format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_INTEGER = INTEGERSTYLE;
+
+        /**
+         * Returns true if this factory is visible.  Default is true.
+         * If not visible, the locales supported by this factory will not
+         * be listed by getAvailableLocales.  This value must not change.
+         * @return true if the factory is visible.
+         * @stable ICU 2.6
+         */
+        ///CLOVER:OFF
+        public boolean visible() {
+            return true;
+        }
+        ///CLOVER:ON
+
+        /**
+         * Returns an immutable collection of the locale names directly 
+         * supported by this factory.
+         * @return the supported locale names.
+         * @stable ICU 2.6
+         */
+         public abstract Set getSupportedLocaleNames();
+
+        /**
+         * Returns a number format of the appropriate type.  If the locale
+         * is not supported, return null.  If the locale is supported, but
+         * the type is not provided by this service, return null.  Otherwise
+         * return an appropriate instance of NumberFormat.
+         * <b>Note:</b> as of ICU4J 3.2, implementations should override
+         * this method instead of createFormat(Locale, int).
+         * @param loc the locale for which to create the format
+         * @param formatType the type of format
+         * @return the NumberFormat, or null.
+         * @stable ICU 3.2
+         */
+        public NumberFormat createFormat(ULocale loc, int formatType) {
+            return createFormat(loc.toLocale(), formatType);
+        }
+
+        /**
+         * Returns a number format of the appropriate type.  If the locale
+         * is not supported, return null.  If the locale is supported, but
+         * the type is not provided by this service, return null.  Otherwise
+         * return an appropriate instance of NumberFormat.
+         * <b>Note:</b> as of ICU4J 3.2, createFormat(ULocale, int) should be
+         * overridden instead of this method.  This method is no longer 
+         * abstract and delegates to that method.
+         * @param loc the locale for which to create the format
+         * @param formatType the type of format
+         * @return the NumberFormat, or null.
+         * @stable ICU 2.6
+         */
+        public NumberFormat createFormat(Locale loc, int formatType) {
+            return createFormat(ULocale.forLocale(loc), formatType);
+        }
+
+        /**
+         * @stable ICU 2.6
+         */
+        protected NumberFormatFactory() {
+        }
+    }
+
+    /**
+     * A NumberFormatFactory that supports a single locale.  It can be visible or invisible.
+     * @stable ICU 2.6
+     */
+    public static abstract class SimpleNumberFormatFactory extends NumberFormatFactory {
+        final Set localeNames;
+        final boolean visible;
+
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale.
+         * @stable ICU 2.6
+         */
+        public SimpleNumberFormatFactory(Locale locale) {
+            this(locale, true);
+        }
+        
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale and the
+         * visibility.
+         * @stable ICU 2.6
+         */
+        public SimpleNumberFormatFactory(Locale locale, boolean visible) {
+            localeNames = Collections.singleton(ULocale.forLocale(locale).getBaseName());
+            this.visible = visible;
+        }
+
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale.
+         * @stable ICU 3.2
+         */
+        public SimpleNumberFormatFactory(ULocale locale) {
+            this(locale, true);
+        }
+        
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale and the
+         * visibility.
+         * @stable ICU 3.2
+         */
+        public SimpleNumberFormatFactory(ULocale locale, boolean visible) {
+            localeNames = Collections.singleton(locale.getBaseName());
+            this.visible = visible;
+        }
+
+        /**
+         * {@inheritDoc}
+         * @stable ICU 2.6
+         */
+        public final boolean visible() {
+            return visible;
+        }
+
+        /**
+         * {@inheritDoc}
+         * @stable ICU 2.6
+         */
+        public final Set getSupportedLocaleNames() {
+            return localeNames;
+        }
+    }
+
+    // shim so we can build without service code
+    static abstract class NumberFormatShim {
+        abstract Locale[] getAvailableLocales();
+        abstract ULocale[] getAvailableULocales();
+        abstract Object registerFactory(NumberFormatFactory f);
+        abstract boolean unregister(Object k);
+        abstract NumberFormat createInstance(ULocale l, int k);
+    }
+
+    private static NumberFormatShim shim;
+    private static NumberFormatShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.NumberFormatServiceShim");
+                shim = (NumberFormatShim)cls.newInstance();
+            }
+            catch (MissingResourceException e){
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+               // e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableULocales();
+    }
+
+    /**
+     * Registers a new NumberFormatFactory.  The factory is adopted by
+     * the service and must not be modified.  The returned object is a
+     * key that can be used to unregister this factory.
+     * @param factory the factory to register
+     * @return a key with which to unregister the factory
+     * @stable ICU 2.6 
+     */
+    public static Object registerFactory(NumberFormatFactory factory) {
+        if (factory == null) {
+            throw new IllegalArgumentException("factory must not be null");
+        }
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister the factory or instance associated with this key (obtained from
+     * registerInstance or registerFactory).
+     * @param registryKey a key obtained from registerFactory
+     * @return true if the object was successfully unregistered
+     * @stable ICU 2.6
+     */
+    public static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+
+        if (shim == null) {
+            return false;
+        }
+
+        return shim.unregister(registryKey);
+    }
+
+    // ===== End of factory stuff =====
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return maximumIntegerDigits * 37 + maxFractionDigits;
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Overrides equals.  Two NumberFormats are equal if they are of the same class
+     * and the settings (groupingUsed, parseIntegerOnly, maximumIntegerDigits, etc.
+     * are equal.
+     * @param obj the object to compare against
+     * @return true if the object is equal to this.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)
+            return true;
+        if (getClass() != obj.getClass())
+            return false;
+        NumberFormat other = (NumberFormat) obj;
+        return maximumIntegerDigits == other.maximumIntegerDigits
+            && minimumIntegerDigits == other.minimumIntegerDigits
+            && maximumFractionDigits == other.maximumFractionDigits
+            && minimumFractionDigits == other.minimumFractionDigits
+            && groupingUsed == other.groupingUsed
+            && parseIntegerOnly == other.parseIntegerOnly
+            && parseStrict == other.parseStrict;
+    }
+
+    /**
+     * Overrides Cloneable.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        NumberFormat other = (NumberFormat) super.clone();
+        return other;
+    }
+
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * en_US locale, with grouping on, the number 1234567 will be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale-dependent and is determined by subclasses of NumberFormat.
+     * Grouping affects both parsing and formatting.
+     * @return true if grouping is used
+     * @see #setGroupingUsed
+     * @stable ICU 2.0
+     */
+    public boolean isGroupingUsed() {
+        return groupingUsed;
+    }
+
+    /**
+     * Sets whether or not grouping will be used in this format.  Grouping
+     * affects both parsing and formatting.
+     * @see #isGroupingUsed
+     * @param newValue true to use grouping.
+     * @stable ICU 2.0
+     */
+    public void setGroupingUsed(boolean newValue) {
+        groupingUsed = newValue;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.  The default value is 40, which subclasses can override.
+     * When formatting, the exact behavior when this value is exceeded is
+     * subclass-specific.  When parsing, this has no effect.
+     * @return the maximum number of integer digits
+     * @see #setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMaximumIntegerDigits() {
+        return maximumIntegerDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        maximumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            minimumIntegerDigits = maximumIntegerDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.  The default value is 1, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on the
+     * left with the locale-specific '0' character to ensure at least this
+     * number of integer digits.  When parsing, this has no effect.
+     * @return the minimum number of integer digits
+     * @see #setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumIntegerDigits() {
+        return minimumIntegerDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.  This must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits is more than the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        minimumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            maximumIntegerDigits = minimumIntegerDigits;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the fraction
+     * portion of a number.  The default value is 3, which subclasses
+     * can override.  When formatting, the exact behavior when this
+     * value is exceeded is subclass-specific.  When parsing, this has 
+     * no effect.
+     * @return the maximum number of fraction digits
+     * @see #setMaximumFractionDigits
+     * @stable ICU 2.0 
+     */
+    public int getMaximumFractionDigits() {
+        return maximumFractionDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        maximumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            minimumFractionDigits = maximumFractionDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.  The default value is 0, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on
+     * the right with the locale-specific '0' character to ensure at least
+     * this number of fraction digits.  When parsing, this has no effect.
+     * @return the minimum number of fraction digits
+     * @see #setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumFractionDigits() {
+        return minimumFractionDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number.  This must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        minimumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            maximumFractionDigits = minimumFractionDigits;
+    }
+
+    /**
+     * Sets the <tt>Currency</tt> object used to display currency
+     * amounts.  This takes effect immediately, if this format is a
+     * currency format.  If this format is not a currency format, then
+     * the currency object is used if and when this object becomes a
+     * currency format.
+     * @param theCurrency new currency object to use.  May be null for
+     * some subclasses.
+     * @stable ICU 2.6
+     */
+    public void setCurrency(Currency theCurrency) {
+        currency = theCurrency;
+    }
+
+    /**
+     * Gets the <tt>Currency</tt> object used to display currency
+     * amounts.  This may be null.
+     * @stable ICU 2.6
+     */
+    public Currency getCurrency() {
+        return currency;
+    }
+    
+    /**
+     * Returns the currency in effect for this formatter.  Subclasses
+     * should override this method as needed.  Unlike getCurrency(),
+     * this method should never return null.
+     * @return a non-null Currency
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected Currency getEffectiveCurrency() {
+        Currency c = getCurrency();
+        if (c == null) {
+            ULocale uloc = getLocale(ULocale.VALID_LOCALE);
+            if (uloc == null) {
+                uloc = ULocale.getDefault();
+            }
+            c = Currency.getInstance(uloc);
+        }
+        return c;
+    }
+
+    /**
+     * Get the rounding mode used in this NumberFormat.  The default implementation of
+     * tis method in NumberFormat always throws <code>UnsupportedOperationException</code>.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingMode(int)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRoundingMode() {
+        throw new UnsupportedOperationException("getRoundingMode must be implemented by the subclass implementation.");
+    }
+
+    /**
+     * Set the rounding mode used in this NumberFormat.  The default implementation of
+     * tis method in NumberFormat always throws <code>UnsupportedOperationException</code>.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #getRoundingMode()
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setRoundingMode(int roundingMode) {
+        throw new UnsupportedOperationException("setRoundingMode must be implemented by the subclass implementation.");
+    }
+
+    // =======================privates===============================
+
+    // Hook for service
+    private static NumberFormat getInstance(ULocale desiredLocale, int choice) {
+//          if (shim == null) {
+//              return createInstance(desiredLocale, choice);
+//          } else {
+//              // TODO: shims must call setLocale() on object they create
+//              return getShim().createInstance(desiredLocale, choice);
+//          }
+        return getShim().createInstance(desiredLocale, choice);
+    }
+
+    // [NEW]
+    static NumberFormat createInstance(ULocale desiredLocale, int choice) {
+        String pattern = getPattern(desiredLocale, choice);
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(desiredLocale);
+        
+        // Here we assume that the locale passed in is in the canonical
+        // form, e.g: pt_PT_@currency=PTE not pt_PT_PREEURO
+        if(choice == CURRENCYSTYLE){
+            String temp = symbols.getCurrencyPattern();
+            if(temp!=null){
+                pattern = temp;
+            }
+        }
+        
+        DecimalFormat format = new DecimalFormat(pattern, symbols);
+        // System.out.println("loc: " + desiredLocale + " choice: " + choice + " pat: " + pattern + " sym: " + symbols + " result: " + format);
+                                 
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        // TODO: revisit this -- this is almost certainly not the way we want
+        // to do this.  aliu 1/6/2004
+        if (choice == INTEGERSTYLE) {
+            format.setMaximumFractionDigits(0);
+            format.setDecimalSeparatorAlwaysShown(false);
+            format.setParseIntegerOnly(true);
+        }
+        
+        // TODO: the actual locale of the *pattern* may differ from that
+        // for the *symbols*.  For now, we use the data for the symbols.
+        // Revisit this.
+        ULocale valid = symbols.getLocale(ULocale.VALID_LOCALE);
+        ULocale actual = symbols.getLocale(ULocale.ACTUAL_LOCALE);
+        format.setLocale(valid, actual);
+        
+        return format;
+    }
+
+    /**
+     * Returns the pattern for the provided locale and choice.
+     * @param forLocale the locale of the data.
+     * @param choice the pattern format.
+     * @return the pattern
+     * @deprecated ICU 3.4 subclassers should override getPattern(ULocale, int) instead of this method.
+     */
+    protected static String getPattern(Locale forLocale, int choice) {
+        return getPattern(ULocale.forLocale(forLocale), choice);
+    }
+
+    /**
+     * Returns the pattern for the provided locale and choice.
+     * @param forLocale the locale of the data.
+     * @param choice the pattern format.
+     * @return the pattern
+     * @stable ICU 3.2
+     */
+    protected static String getPattern(ULocale forLocale, int choice) {
+
+        /* The following code takes care of a few cases where the
+         * resource data in the underlying JDK lags the new features
+         * we have added to ICU4J: scientific notation, rounding, and
+         * secondary grouping.
+         *
+         * We detect these cases here and return various hard-coded
+         * resource data.  This is the simplest solution for now, but
+         * it is not a good long-term mechanism.
+         * 
+         * We should replace this code with a data-driven mechanism
+         * that reads the bundle com.ibm.icu.impl.data.LocaleElements
+         * and parses an exception table that overrides the standard
+         * data at java.text.resource.LocaleElements*.java.
+         * Alternatively, we should create our own copy of the
+         * resource data, and use that exclusively.
+         */
+
+        // TEMPORARY, until we get scientific patterns into the main
+        // resources:  Retrieve scientific patterns from our resources.
+        if (choice == SCIENTIFICSTYLE) {
+            // Temporarily hard code; retrieve from resource later
+            /*For ICU compatibility [Richard/GCL]*/
+            return "#E0";
+            // return NumberFormat.getBaseStringArray("NumberPatterns")[SCIENTIFICSTYLE];
+        }
+        // TEMPORARY: Use rounding for Swiss currency
+        //if (choice == CURRENCYSTYLE &&
+        //    forLocale.getCountry().equals("CH")) {
+        //    return "'Fr. '#,##0.05;'Fr.-'#,##0.05";
+        //}
+        // TEMPORARY: Special case IN number format
+        //if (choice == NUMBERSTYLE &&
+        //    forLocale.getCountry().equals("IN")) {
+        //    return "#,##,##0.###";
+        //}
+
+        // {dlf}
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, forLocale);
+        String[] numberPatterns = rb.getStringArray("NumberPatterns");
+
+        /* {dlf}
+        // Try the cache first
+        String[] numberPatterns = (String[]) cachedLocaleData.get(forLocale);
+        if (numberPatterns == null) {
+            OverlayBundle resource = new OverlayBundle(new String[]
+                { "com.ibm.icu.impl.data.LocaleElements", RESOURCE_BASE }, forLocale);
+            numberPatterns = resource.getStringArray("NumberPatterns");
+            // Update the cache
+            cachedLocaleData.put(forLocale, numberPatterns); 
+        }
+        */
+
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : choice; //[Richard/GCL]
+        return numberPatterns[entry]; //[Richard/GCL]
+    }
+
+    /**
+     * First, read in the default serializable data.
+     *
+     * Then, if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1,
+     * set the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * to be equal to the <code>byte</code> fields such as <code>maxIntegerDigits</code>,
+     * since the <code>int</code> fields were not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // we don't have serialization data for this format
+        if (serialVersionOnStream < 1) {
+            // Didn't have additional int fields, reassign to use them.
+            maximumIntegerDigits = maxIntegerDigits;
+            minimumIntegerDigits = minIntegerDigits;
+            maximumFractionDigits = maxFractionDigits;
+            minimumFractionDigits = minFractionDigits;
+        }
+        ///CLOVER:ON
+        /*Bug 4185761
+          Validate the min and max fields [Richard/GCL]
+        */
+        if (minimumIntegerDigits > maximumIntegerDigits ||
+            minimumFractionDigits > maximumFractionDigits ||
+            minimumIntegerDigits < 0 || minimumFractionDigits < 0) {
+            throw new InvalidObjectException("Digit count range invalid");
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Write out the default serializable data, after first setting
+     * the <code>byte</code> fields such as <code>maxIntegerDigits</code> to be
+     * equal to the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * (or to <code>Byte.MAX_VALUE</code>, whichever is smaller), for compatibility
+     * with the JDK 1.1 version of the stream format.
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        maxIntegerDigits = (maximumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumIntegerDigits;
+        minIntegerDigits = (minimumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumIntegerDigits;
+        maxFractionDigits = (maximumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumFractionDigits;
+        minFractionDigits = (minimumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumFractionDigits;
+        stream.defaultWriteObject();
+    }
+
+// Unused -- Alan 2003-05
+//    /**
+//     * Cache to hold the NumberPatterns of a Locale.
+//     */
+//    private static final Hashtable cachedLocaleData = new Hashtable(3);
+
+    /*Bug 4408066
+      Add Field for the new method getIntegerInstance() [Richard/GCL]
+    */
+
+    /**
+     * True if the the grouping (i.e. thousands) separator is used when
+     * formatting and parsing numbers.
+     *
+     * @serial
+     * @see #isGroupingUsed
+     */
+    private boolean groupingUsed = true;
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maxIntegerDigits</code> must be greater than or equal to
+     * <code>minIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>maxIntegerDigits</code> is set to
+     * <code>maximumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private byte    maxIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>minIntegerDigits</code> is set to
+     * <code>minimumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private byte    minIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>maxFractionDigits</code> is set to
+     * <code>maximumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private byte    maxFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>minFractionDigits</code> is set to
+     * <code>minimumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private byte    minFractionDigits = 0;
+
+    /**
+     * True if this format will parse numbers as integers only.
+     *
+     * @serial
+     * @see #isParseIntegerOnly
+     */
+    private boolean parseIntegerOnly = false;
+
+    // new fields for 1.2.  byte is too small for integer digits.
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maximumIntegerDigits</code> must be greater than or equal to
+     * <code>minimumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private int    maximumIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private int    minimumIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private int    maximumFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private int    minimumFractionDigits = 0;
+
+    /**
+     * Currency object used to format currencies.  Subclasses may
+     * ignore this if they are not currency formats.  This will be
+     * null unless a subclass sets it to a non-null value.
+     * @since ICU 2.6
+     */
+    private Currency currency;
+
+    static final int currentSerialVersion = 1;
+
+    /**
+     * Describes the version of <code>NumberFormat</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): the JDK 1.1 version of the stream format.
+     *     In this version, the <code>int</code> fields such as
+     *     <code>maximumIntegerDigits</code> were not present, and the <code>byte</code>
+     *     fields such as <code>maxIntegerDigits</code> are used instead.
+     *
+     * <li><b>1</b>: the JDK 1.2 version of the stream format.  The values of the
+     *     <code>byte</code> fields such as <code>maxIntegerDigits</code> are ignored,
+     *     and the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     *     are used instead.
+     * </ul>
+     * When streaming out a <code>NumberFormat</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    // Removed "implements Cloneable" clause.  Needs to update serialization
+    // ID for backward compatibility.
+    private static final long serialVersionUID = -2308460125733713944L;
+
+    /**
+     * Empty constructor.  Public for compatibily with JDK which lets the
+     * compiler generate a default public constructor even though this is
+     * an abstract class.
+     * @stable ICU 2.6
+     */
+    public NumberFormat() {
+    }
+
+    // new in ICU4J 3.6
+    private boolean parseStrict;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * NumberFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.6
+     */
+    public static class Field extends Format.Field {
+        // generated by serialver from JDK 1.4.1_01
+        static final long serialVersionUID = -4516273749929385842L;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field SIGN = new Field("sign");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field INTEGER = new Field("integer");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field FRACTION = new Field("fraction");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT = new Field("exponent");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT_SIGN = new Field("exponent sign");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT_SYMBOL = new Field("exponent symbol");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field DECIMAL_SEPARATOR = new Field("decimal separator");
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field GROUPING_SEPARATOR = new Field("grouping separator");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field PERCENT = new Field("percent");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field PERMILLE = new Field("per mille");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field CURRENCY = new Field("currency");
+
+        /**
+         * Constructs a new instance of NumberFormat.Field with the given field
+         * name.
+         * @stable ICU 3.6
+         */
+        protected Field(String fieldName) {
+            super(fieldName);
+        }
+
+        /**
+         * serizalization method resolve instances to the constant
+         * NumberFormat.Field values
+         * @stable ICU 3.6
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getName().equals(INTEGER.getName()))
+                return INTEGER;
+            if (this.getName().equals(FRACTION.getName()))
+                return FRACTION;
+            if (this.getName().equals(EXPONENT.getName()))
+                return EXPONENT;
+            if (this.getName().equals(EXPONENT_SIGN.getName()))
+                return EXPONENT_SIGN;
+            if (this.getName().equals(EXPONENT_SYMBOL.getName()))
+                return EXPONENT_SYMBOL;
+            if (this.getName().equals(CURRENCY.getName()))
+                return CURRENCY;
+            if (this.getName().equals(DECIMAL_SEPARATOR.getName()))
+                return DECIMAL_SEPARATOR;
+            if (this.getName().equals(GROUPING_SEPARATOR.getName()))
+                return GROUPING_SEPARATOR;
+            if (this.getName().equals(PERCENT.getName()))
+                return PERCENT;
+            if (this.getName().equals(PERMILLE.getName()))
+                return PERMILLE;
+            if (this.getName().equals(SIGN.getName()))
+                return SIGN;
+
+            throw new InvalidObjectException("An invalid object.");
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/NumberFormatServiceShim.java b/src/com/ibm/icu/text/NumberFormatServiceShim.java
new file mode 100644
index 0000000..efdf562
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormatServiceShim.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Locale;
+import java.util.Set;
+import java.util.MissingResourceException;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.NumberFormat.NumberFormatFactory;
+import com.ibm.icu.util.ULocale;
+
+class NumberFormatServiceShim extends NumberFormat.NumberFormatShim {
+
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    private static final class NFFactory extends LocaleKeyFactory {
+        private NumberFormatFactory delegate;
+
+        NFFactory(NumberFormatFactory delegate) {
+            super(delegate.visible() ? VISIBLE : INVISIBLE);
+
+            this.delegate = delegate;
+        }
+
+        public Object create(Key key, ICUService srvc) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                ULocale loc = lkey.canonicalLocale();
+                int kind = lkey.kind();
+
+                Object result = delegate.createFormat(loc, kind);
+                if (result == null) {
+                    result = srvc.getKey(key, null, this);
+                }
+                return result;
+            }
+            return null;
+        }
+
+        protected Set getSupportedIDs() {
+            return delegate.getSupportedLocaleNames();
+        }
+    }
+
+    Object registerFactory(NumberFormatFactory factory) {
+        return service.registerFactory(new NFFactory(factory));
+    }
+
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    NumberFormat createInstance(ULocale desiredLocale, int choice) {
+
+    // use service cache
+//          if (service.isDefault()) {
+//              return NumberFormat.createInstance(desiredLocale, choice);
+//          }
+
+        ULocale[] actualLoc = new ULocale[1];
+        if (desiredLocale.equals(ULocale.ROOT)) {
+            desiredLocale = ULocale.ROOT;
+        }
+        NumberFormat fmt = (NumberFormat)service.get(desiredLocale, choice,
+                                                     actualLoc);
+        if (fmt == null) {
+            throw new MissingResourceException("Unable to construct NumberFormat", "", "");
+        }
+        fmt = (NumberFormat)fmt.clone();
+
+        ULocale uloc = actualLoc[0];
+        fmt.setLocale(uloc, uloc); // services make no distinction between actual & valid
+        return fmt;
+    }
+
+    private static class NFService extends ICULocaleService {
+        NFService() {
+            super("NumberFormat");
+
+            class RBNumberFormatFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return NumberFormat.createInstance(loc, kind);
+                }
+            }
+                
+            this.registerFactory(new RBNumberFormatFactory());
+            markDefault();
+        }
+    }
+    private static ICULocaleService service = new NFService();
+}
diff --git a/src/com/ibm/icu/text/PluralFormat.java b/src/com/ibm/icu/text/PluralFormat.java
new file mode 100644
index 0000000..a0b8550
--- /dev/null
+++ b/src/com/ibm/icu/text/PluralFormat.java
@@ -0,0 +1,668 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.ULocale;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * <p>
+ * <code>PluralFormat</code> supports the creation of internationalized
+ * messages with plural inflection. It is based on <i>plural
+ * selection</i>, i.e. the caller specifies messages for each
+ * plural case that can appear in the users language and the
+ * <code>PluralFormat</code> selects the appropriate message based on
+ * the number.
+ * </p>
+ * <h4>The Problem of Plural Forms in Internationalized Messages</h4>
+ * <p>
+ * Different languages have different ways to inflect
+ * plurals. Creating internationalized messages that include plural
+ * forms is only feasible when the framework is able to handle plural
+ * forms of <i>all</i> languages correctly. <code>ChoiceFormat</code>
+ * doesn't handle this well, because it attaches a number interval to
+ * each message and selects the message whose interval contains a
+ * given number. This can only handle a finite number of
+ * intervals. But in some languages, like Polish, one plural case
+ * applies to infinitely many intervals (e.g., paucal applies to
+ * numbers ending with 2, 3, or 4 except those ending with 12, 13, or
+ * 14). Thus <code>ChoiceFormat</code> is not adequate.
+ * </p><p>
+ * <code>PluralFormat</code> deals with this by breaking the problem
+ * into two parts:
+ * <ul>
+ * <li>It uses <code>PluralRules</code> that can define more complex
+ *     conditions for a plural case than just a single interval. These plural
+ *     rules define both what plural cases exist in a language, and to
+ *     which numbers these cases apply.
+ * <li>It provides predefined plural rules for many locales. Thus, the programmer
+ *     need not worry about the plural cases of a language. On the flip side,
+ *     the localizer does not have to specify the plural cases; he can simply
+ *     use the predefined keywords. The whole plural formatting of messages can
+ *     be done using localized patterns from resource bundles.
+ * </ul>
+ * </p>
+ * <h4>Usage of <code>PluralFormat</code></h4>
+ * <p>
+ * This discussion assumes that you use <code>PluralFormat</code> with
+ * a predefined set of plural rules. You can create one using one of
+ * the constructors that takes a <code>ULocale</code> object. To
+ * specify the message pattern, you can either pass it to the
+ * constructor or set it explicitly using the
+ * <code>applyPattern()</code> method. The <code>format()</code>
+ * method takes a number object and selects the message of the
+ * matching plural case. This message will be returned.
+ * </p>
+ * <h5>Patterns and Their Interpretation</h5>
+ * <p>
+ * The pattern text defines the message output for each plural case of the
+ * used locale. The pattern is a sequence of
+ * <code><i>caseKeyword</i>{<i>message</i>}</code> clauses, separated by white
+ * space characters. Each clause assigns the message <code><i>message</i></code>
+ * to the plural case identified by <code><i>caseKeyword</i></code>.
+ * </p><p>
+ * You always have to define a message text for the default plural case
+ * "<code>other</code>" which is contained in every rule set. If the plural
+ * rules of the <code>PluralFormat</code> object do not contain a plural case
+ * identified by <code><i>caseKeyword</i></code>, an
+ * <code>IllegalArgumentException</code> is thrown.
+ * If you do not specify a message text for a particular plural case, the
+ * message text of the plural case "<code>other</code>" gets assigned to this
+ * plural case. If you specify more than one message for the same plural case,
+ * an <code>IllegalArgumentException</code> is thrown.
+ * <br/>
+ * Spaces between <code><i>caseKeyword</i></code> and
+ * <code><i>message</i></code>  will be ignored; spaces within
+ * <code><i>message</i></code> will be preserved.
+ * </p><p>
+ * The message text for a particular plural case may contain other message
+ * format patterns. <code>PluralFormat</code> preserves these so that you
+ * can use the strings produced by <code>PluralFormat</code> with other
+ * formatters. If you are using <code>PluralFormat</code> inside a
+ * <code>MessageFormat</code> pattern, <code>MessageFormat</code> will
+ * automatically evaluate the resulting format pattern.<br/>
+ * Thus, curly braces (<code>{</code>, <code>}</code>) are <i>only</i> allowed
+ * in message texts to define a nested format pattern.<br/>
+ * The pound sign (<code>#</code>) will be interpreted as the number placeholder
+ * in the message text, if it is not contained in curly braces (to preserve
+ * <code>NumberFormat</code> patterns). <code>PluralFormat</code> will
+ * replace each of those pound signs by the number passed to the
+ * <code>format()</code> method. It will be formatted using a
+ * <code>NumberFormat</code> for the <code>PluralFormat</code>'s locale. If you
+ * need special number formatting, you have to explicitly specify a
+ * <code>NumberFormat</code> for the <code>PluralFormat</code> to use.
+ * </p>
+ * Example
+ * <pre>
+ * MessageFormat msgFmt = new MessageFormat("{0, plural, " +
+ *     "one{{0, number, C''''est #,##0.0#  fichier}} " +
+ *     "other {Ce sont # fichiers}} dans la liste.",
+ *     new ULocale("fr"));
+ * Object args[] = {new Long(0)};
+ * System.out.println(msgFmt.format(args));
+ * args = {new Long(3)};
+ * System.out.println(msgFmt.format(args));
+ * </pre>
+ * Produces the output:<br />
+ * <code>C'est 0,0 fichier dans la liste.</code><br />
+ * <code>Ce sont 3 fichiers dans la liste."</code>
+ * <p>
+ * <strong>Note:</strong><br />
+ *   Currently <code>PluralFormat</code>
+ *   does not make use of quotes like <code>MessageFormat</code>.
+ *   If you use plural format strings with <code>MessageFormat</code> and want
+ *   to use a quote sign "<code>'</code>", you have to write "<code>''</code>".
+ *   <code>MessageFormat</code> unquotes this pattern and  passes the unquoted
+ *   pattern to <code>PluralFormat</code>. It's a bit trickier if you use
+ *   nested formats that do quoting. In the example above, we wanted to insert
+ *   "<code>'</code>" in the number format pattern. Since
+ *   <code>NumberFormat</code> supports quotes, we had to insert
+ *   "<code>''</code>". But since <code>MessageFormat</code> unquotes the
+ *   pattern before it gets passed to <code>PluralFormat</code>, we have to
+ *   double these quotes, i.e. write "<code>''''</code>".
+ * </p>
+ * <h4>Defining Custom Plural Rules</h4>
+ * <p>If you need to use <code>PluralFormat</code> with custom rules, you can
+ * create a <code>PluralRules</code> object and pass it to
+ * <code>PluralFormat</code>'s constructor. If you also specify a locale in this
+ * constructor, this locale will be used to format the number in the message
+ * texts.
+ * </p><p>
+ * For more information about <code>PluralRules</code>, see
+ * {@link PluralRules}.
+ * </p>
+ *
+ * @author tschumann (Tim Schumann)
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public class PluralFormat extends UFormat {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * The locale used for standard number formatting and getting the predefined
+     * plural rules (if they were not defined explicitely).
+     */
+    private ULocale ulocale = null;
+
+    /**
+     * The plural rules used for plural selection.
+     */
+    private PluralRules pluralRules = null;
+
+    /**
+     * The applied pattern string.
+     */
+    private String pattern = null;
+
+    /**
+     * The format messages for each plural case. It is a mapping:
+     *  <code>String</code>(plural case keyword) --&gt; <code>String</code>
+     *  (message for this plural case).
+     */
+    private Map parsedValues = null;
+
+    /**
+     * This <code>NumberFormat</code> is used for the standard formatting of
+     * the number inserted into the message.
+     */
+    private NumberFormat numberFormat = null;
+
+    /**
+     * Creates a new <code>PluralFormat</code> for the default locale.
+     * This locale will be used to get the set of plural rules and for standard
+     * number formatting.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat() {
+        init(null, ULocale.getDefault());
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given locale.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale) {
+        init(null, ulocale);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules.
+     * The standard number formatting will be done using the default locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(PluralRules rules) {
+        init(rules, ULocale.getDefault());
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules.
+     * The standard number formatting will be done using the given locale.
+     * @param ulocale the default number formatting will be done using this
+     *        locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, PluralRules rules) {
+        init(rules, ulocale);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given pattern string.
+     * The default locale will be used to get the set of plural rules and for
+     * standard number formatting.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(String pattern) {
+        init(null, ULocale.getDefault());
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given pattern string and
+     * locale.
+     * The locale will be used to get the set of plural rules and for
+     * standard number formatting.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, String pattern) {
+        init(null, ulocale);
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules and a
+     * pattern.
+     * The standard number formatting will be done using the default locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(PluralRules rules, String pattern) {
+        init(rules, ULocale.getDefault());
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules, a
+     * pattern and a locale.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, PluralRules rules, String pattern) {
+        init(rules, ulocale);
+        applyPattern(pattern);
+    }
+
+    /**
+     * Initializes the <code>PluralRules</code> object.
+     * Postcondition:<br/>
+     *   <code>ulocale</code>    :  is <code>locale</code><br/>
+     *   <code>pluralRules</code>:  if <code>rules</code> != <code>null</code>
+     *                              it's set to rules, otherwise it is the
+     *                              predefined plural rule set for the locale
+     *                              <code>ulocale</code>.<br/>
+     *   <code>parsedValues</code>: is <code>null</code><br/>
+     *   <code>pattern</code>:      is <code>null</code><br/>
+     *   <code>numberFormat</code>: a <code>NumberFormat</code> for the locale
+     *                              <code>ulocale</code>.
+     */
+    private void init(PluralRules rules, ULocale locale) {
+        ulocale = locale;
+        pluralRules = (rules == null) ? PluralRules.forLocale(ulocale)
+                                      : rules;
+        parsedValues = null;
+        pattern = null;
+        numberFormat = NumberFormat.getInstance(ulocale);
+    }
+
+    /**
+     * Sets the pattern used by this plural format.
+     * The method parses the pattern and creates a map of format strings
+     * for the plural rules.
+     * Patterns and their interpretation are specified in the class description.
+     *
+     * @param pttrn the pattern for this plural format.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void applyPattern(String pttrn) {
+        pttrn = pttrn.trim();
+
+        this.pattern = pttrn;
+        int braceStack = 0;
+        Set ruleNames = pluralRules.getKeywords();
+        parsedValues = new HashMap();
+
+        // Format string has to include keywords.
+        // states:
+        // 0: Reading keyword.
+        // 1: Reading value for preceding keyword.
+        int state = 0;
+        StringBuffer token = new StringBuffer();
+        String currentKeyword = null;
+        boolean readSpaceAfterKeyword = false;
+        for (int i = 0; i < pttrn.length(); ++i) {
+            char ch = pttrn.charAt(i);
+            switch (state) {
+            case 0: // Reading value.
+                if (token.length() == 0) {
+                    readSpaceAfterKeyword = false;
+                }
+                if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                    if (token.length() > 0) {
+                        readSpaceAfterKeyword = true;
+                    }
+                    // Skip leading and trailing whitespaces.
+                    break;
+                }
+                if (ch == '{') { // End of keyword definition reached.
+                    currentKeyword = token.toString().toLowerCase(
+                            Locale.ENGLISH);
+                    if (!ruleNames.contains(currentKeyword)) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Unknown keyword \"" + currentKeyword
+                                + "\" at position " + i + ".");
+                    }
+                    if (parsedValues.get(currentKeyword) != null) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Text for case \"" + currentKeyword
+                                + "\" at position " + i + " already defined!");
+                    }
+                    token.delete(0, token.length());
+                    braceStack++;
+                    state = 1;
+                    break;
+                }
+                if (readSpaceAfterKeyword) {
+                    parsingFailure("Malformed formatting expression. " +
+                            "Invalid keyword definition. Character \"" + ch +
+                            "\" at position " + i + " not expected!");
+                }
+                token.append(ch);
+                break;
+            case 1: // Reading value.
+                switch (ch) {
+                case '{':
+                    braceStack++;
+                    token.append(ch);
+                    break;
+                case '}':
+                    braceStack--;
+                    if (braceStack == 0) { // End of value reached.
+                        parsedValues.put(currentKeyword, token.toString());
+                        token.delete(0, token.length());
+                        state = 0;
+                    } else if (braceStack < 0) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Braces do not match.");
+                    } else { // braceStack > 0
+                        token.append(ch);
+                    }
+                    break;
+                default:
+                    token.append(ch);
+                }
+                break;
+            } // switch state
+        } // for loop.
+        if (braceStack != 0) {
+            parsingFailure(
+                    "Malformed formatting expression. Braces do not match.");
+        }
+        checkSufficientDefinition();
+    }
+
+    /**
+     * Returns the pattern for this PluralFormat.
+     *
+     * @return the pattern string
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Formats a plural message for a given number.
+     *
+     * @param number a number for which the plural message should be formatted.
+     *        If no pattern has been applied to this
+     *        <code>PluralFormat</code> object yet, the formatted number will
+     *        be returned.
+     * @return the string containing the formatted plural message.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final String format(double number) {
+        // If no pattern was applied, return the formatted number.
+        if (parsedValues == null) {
+            return numberFormat.format(number);
+        }
+
+        // Get appropriate format pattern.
+        String selectedRule = pluralRules.select(number);
+        String selectedPattern = (String) parsedValues.get(selectedRule);
+        if (selectedPattern == null) { // Fallback to others.
+            selectedPattern =
+                (String) parsedValues.get(PluralRules.KEYWORD_OTHER);
+        }
+        // Get formatted number and insert it into String.
+        // Will replace all '#' which are not inside curly braces by the
+        // formatted number.
+        return insertFormattedNumber(number, selectedPattern);
+    }
+
+    /**
+     * Formats a plural message for a given number and appends the formatted
+     * message to the given <code>StringBuffer</code>.
+     * @param number a number object (instance of <code>Number</code> for which
+     *        the plural message should be formatted. If no pattern has been
+     *        applied to this <code>PluralFormat</code> object yet, the
+     *        formatted number will be returned.
+     *        Note: If this object is not an instance of <code>Number</code>,
+     *              the <code>toAppendTo</code> will not be modified.
+     * @param toAppendTo the formatted message will be appended to this
+     *        <code>StringBuffer</code>.
+     * @param pos will be ignored by this method.
+     * @return the string buffer passed in as toAppendTo, with formatted text
+     *         appended.
+     * @throws IllegalArgumentException if number is not an instance of Number
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public StringBuffer format(Object number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        if (number instanceof Number) {
+            toAppendTo.append(format(((Number) number).doubleValue()));
+            return toAppendTo;
+        }
+        throw new IllegalArgumentException("'" + number +
+                                           "' is not a Number");
+    }
+
+    /**
+     * This method is not yet supported by <code>PluralFormat</code>.
+     * @param text the string to be parsed.
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return nothing because this method is not yet implemented.
+     * @throws UnsupportedOperationException
+     *     will always be thrown by this method.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * This method is not yet supported by <code>PluralFormat</code>.
+     * @param source the string to be parsed.
+     * @param pos defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return nothing because this method is not yet implemented.
+     * @throws UnsupportedOperationException
+     *     will always be thrown by this method.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Sets the locale used by this <code>PluraFormat</code> object.
+     * Note: Calling this method resets this <code>PluraFormat</code> object,
+     *     i.e., a pattern that was applied previously will be removed,
+     *     and the NumberFormat is set to the default number format for
+     *     the locale.  The resulting format behaves the same as one
+     *     constructed from {@link #PluralFormat(ULocale)}.
+     * @param ulocale the <code>ULocale</code> used to configure the
+     *     formatter. If <code>ulocale</code> is <code>null</code>, the
+     *     default locale will be used.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setLocale(ULocale ulocale) {
+        if (ulocale == null) {
+            ulocale = ULocale.getDefault();
+        }
+        init(null, ulocale);
+    }
+
+    /**
+     * Sets the number format used by this formatter.  You only need to
+     * call this if you want a different number format than the default
+     * formatter for the locale.
+     * @param format the number format to use.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setNumberFormat(NumberFormat format) {
+        numberFormat = format;
+    }
+
+    /**
+     * Checks if the applied pattern provided enough information,
+     * i.e., if the attribute <code>parsedValues</code> stores enough
+     * information for plural formatting.
+     * Will be called at the end of pattern parsing.
+     * @throws IllegalArgumentException if there's not sufficient information
+     *     provided.
+     */
+    private void checkSufficientDefinition() {
+        // Check that at least the default rule is defined.
+        if (parsedValues.get(PluralRules.KEYWORD_OTHER) == null) {
+            parsingFailure("Malformed formatting expression.\n"
+                    + "Value for case \"" + PluralRules.KEYWORD_OTHER
+                    + "\" was not defined.");
+        }
+    }
+
+    /**
+     * Helper method that resets the <code>PluralFormat</code> object and throws
+     * an <code>IllegalArgumentException</code> with a given error text.
+     * @param errorText the error text of the exception message.
+     * @throws IllegalArgumentException will always be thrown by this method.
+     */
+    private void parsingFailure(String errorText) {
+        // Set PluralFormat to a valid state.
+        init(null, ULocale.getDefault());
+        throw new IllegalArgumentException(errorText);
+    }
+
+    /**
+     * Helper method that is called during formatting.
+     * It replaces the character '#' by the number used for plural selection in
+     * a message text. Only '#' are replaced, that are not written inside curly
+     * braces. This allows the use of nested number formats.
+     * The number will be formatted using the attribute
+     * <code>numberformat</code>.
+     * @param number the number used for plural selection.
+     * @param message is the text in which '#' will be replaced.
+     * @return the text with inserted numbers.
+     */
+    private String insertFormattedNumber(double number, String message) {
+        if (message == null) {
+            return "";
+        }
+        String formattedNumber = numberFormat.format(number);
+        StringBuffer result = new StringBuffer();
+        int braceStack = 0;
+        int startIndex = 0;
+        for (int i = 0; i < message.length(); ++i) {
+            switch (message.charAt(i)) {
+            case '{':
+                ++braceStack;
+                break;
+            case '}':
+                --braceStack;
+                break;
+            case '#':
+                if (braceStack == 0) {
+                    result.append(message.substring(startIndex,i));
+                    startIndex = i + 1;
+                    result.append(formattedNumber);
+                }
+                break;
+            }
+        }
+        if (startIndex < message.length()) {
+            result.append(message.substring(startIndex, message.length()));
+        }
+        return result.toString();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object rhs) {
+        return rhs instanceof PluralFormat && equals((PluralFormat) rhs);
+    }
+
+    /**
+     * Returns true if this equals the provided PluralFormat.
+     * @param rhs the PluralFormat to compare against
+     * @return true if this equals rhs
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(PluralFormat rhs) {
+      return pluralRules.equals(rhs.pluralRules) &&
+          parsedValues.equals(rhs.parsedValues) &&
+          numberFormat.equals(rhs.numberFormat);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return pluralRules.hashCode() ^ parsedValues.hashCode();
+    }
+
+    /**
+     * For debugging purposes only
+     * @return a text representation of the format data.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("locale=" + ulocale);
+        buf.append(", rules='" + pluralRules + "'");
+        buf.append(", pattern='" + pattern + "'");
+        buf.append(", parsedValues='" + parsedValues + "'");
+        buf.append(", format='" + numberFormat + "'");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/PluralRules.java b/src/com/ibm/icu/text/PluralRules.java
new file mode 100644
index 0000000..1bb70af
--- /dev/null
+++ b/src/com/ibm/icu/text/PluralRules.java
@@ -0,0 +1,830 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.PluralRulesLoader;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.ULocale;
+
+import java.io.Serializable;
+
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+/** 
+ * <p>Defines rules for mapping positive double values onto a small set of
+ * keywords. Serializable so can be used in formatters, which are
+ * serializable. Rules are constructed from a text description, consisting
+ * of a series of keywords and conditions.  The {@link #select} method
+ * examines each condition in order and returns the keyword for the
+ * first condition that matches the number.  If none match,
+ * {@link #KEYWORD_OTHER} is returned.</p>
+ * <p>
+ * Examples:<pre>
+ *   "one: n is 1; few: n in 2..4"</pre></p>
+ * <p>
+ * This defines two rules, for 'one' and 'few'.  The condition for
+ * 'one' is "n is 1" which means that the number must be equal to
+ * 1 for this condition to pass.  The condition for 'few' is
+ * "n in 2..4" which means that the number must be between 2 and
+ * 4 inclusive - and be an integer - for this condition to pass. All other
+ * numbers are assigned the keyword "other" by the default rule.</p>
+ * <p><pre>
+ *   "zero: n is 0; one: n is 1; zero: n mod 100 in 1..19"</pre>
+ * This illustrates that the same keyword can be defined multiple times.
+ * Each rule is examined in order, and the first keyword whose condition
+ * passes is the one returned.  Also notes that a modulus is applied
+ * to n in the last rule.  Thus its condition holds for 119, 219, 319...</p>
+ * <p><pre>
+ *   "one: n is 1; few: n mod 10 in 2..4 and n mod 100 not in 12..14"</pre></p>
+ * <p>
+ * This illustrates conjunction and negation.  The condition for 'few'
+ * has two parts, both of which must be met: "n mod 10 in 2..4" and
+ * "n mod 100 not in 12..14".  The first part applies a modulus to n
+ * before the test as in the previous example.  The second part applies
+ * a different modulus and also uses negation, thus it matches all
+ * numbers _not_ in 12, 13, 14, 112, 113, 114, 212, 213, 214...</p>
+ * <p>
+ * Syntax:<pre>
+ * rules         = rule (';' rule)*
+ * rule          = keyword ':' condition
+ * keyword       = <identifier>
+ * condition     = and_condition ('or' and_condition)*
+ * and_condition = relation ('and' relation)*
+ * relation      = is_relation | in_relation | within_relation | 'n' <EOL>
+ * is_relation   = expr 'is' ('not')? value
+ * in_relation   = expr ('not')? 'in' range
+ * within_relation = expr ('not')? 'within' range
+ * expr          = 'n' ('mod' value)?
+ * value         = digit+
+ * digit         = 0|1|2|3|4|5|6|7|8|9
+ * range         = value'..'value
+ * </pre></p>
+ * <p>
+ * The difference between 'in' and 'within' is that 'in' only includes
+ * integers in the specified range, while 'within' includes all values.</p>
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public class PluralRules implements Serializable {
+    private static final long serialVersionUID = 1;
+
+    private final RuleList rules;
+    private final Set keywords;
+    private int repeatLimit; // for equality test
+
+    // Standard keywords.
+
+    /** 
+     * Common name for the 'zero' plural form. 
+     * @draft ICU 3.8 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_ZERO = "zero";
+
+    /** 
+     * Common name for the 'singular' plural form. 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_ONE = "one";
+
+    /**
+     * Common name for the 'dual' plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_TWO = "two";
+
+    /**
+     * Common name for the 'paucal' or other special plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_FEW = "few";
+
+    /**
+     * Common name for the arabic (11 to 99) plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_MANY = "many";
+
+    /**
+     * Common name for the default plural form.  This name is returned
+     * for values to which no other form in the rule applies.  It 
+     * can additionally be assigned rules of its own.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_OTHER = "other";
+
+    /**
+     * The set of all characters a valid keyword can start with.
+     */
+    private static final UnicodeSet START_CHARS = 
+        new UnicodeSet("[[:ID_Start:][_]]");
+
+    /**
+     * The set of all characters a valid keyword can contain after 
+     * the first character.
+     */
+    private static final UnicodeSet CONT_CHARS = 
+        new UnicodeSet("[:ID_Continue:]");
+
+    /**
+     * The default constraint that is always satisfied.
+     */
+    private static final Constraint NO_CONSTRAINT = new Constraint() {
+        private static final long serialVersionUID = 9163464945387899416L;
+
+        public boolean isFulfilled(double n) {
+            return true;
+        }
+        public String toString() {
+            return "n is any";
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return limit;
+        }
+      };
+
+    /**
+     * The default rule that always returns "other".
+     */
+    private static final Rule DEFAULT_RULE = new Rule() {
+        private static final long serialVersionUID = -5677499073940822149L;
+
+        public String getKeyword() {
+            return KEYWORD_OTHER;
+        }
+
+        public boolean appliesTo(double n) {
+            return true;
+        }
+
+        public String toString() {
+            return "(" + KEYWORD_OTHER + ")";
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return limit;
+        }
+      };
+
+
+    /**
+     * The default rules that accept any number and return 
+     * {@link #KEYWORD_OTHER}.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final PluralRules DEFAULT =
+        new PluralRules(new RuleChain(DEFAULT_RULE));
+
+    /**
+     * Parses a plural rules description and returns a PluralRules.
+     * @param description the rule description.
+     * @throws ParseException if the description cannot be parsed.
+     *    The exception index is typically not set, it will be -1.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules parseDescription(String description) 
+        throws ParseException {
+
+        description = description.trim();
+        if (description.length() == 0) {
+          return DEFAULT;
+        }
+
+        return new PluralRules(parseRuleChain(description));
+    }
+
+    /**
+     * Creates a PluralRules from a description if it is parsable,
+     * otherwise returns null.
+     * @param description the rule description.
+     * @return the PluralRules
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules createRules(String description) {
+        try {
+            return parseDescription(description);
+        } catch(ParseException e) {
+            return null;
+        }
+    }
+
+    /** 
+     * A constraint on a number.
+     */
+    private interface Constraint extends Serializable {
+        /** 
+         * Returns true if the number fulfills the constraint.
+         * @param n the number to test, >= 0.
+         */
+        boolean isFulfilled(double n);
+
+        /** 
+         * Returns the larger of limit or the limit of this constraint.
+         * If the constraint is a simple range test, this is the higher
+         * end of the range; if it is a modulo test, this is the modulus.
+         *
+         * @param limit the target limit
+         * @return the new limit
+         */
+        int updateRepeatLimit(int limit);
+    }
+
+    /**
+     * A pluralization rule.  .
+     */
+    private interface Rule extends Serializable {
+        /** Returns the keyword that names this rule. */
+        String getKeyword();
+        /** Returns true if the rule applies to the number. */
+        boolean appliesTo(double n);
+        /** Returns the larger of limit and this rule's limit. */
+        int updateRepeatLimit(int limit);
+    }
+
+    /**
+     * A list of rules to apply in order.
+     */
+    private interface RuleList extends Serializable {
+        /** Returns the keyword of the first rule that applies to the number. */
+        String select(double n);
+
+        /** Returns the set of defined keywords. */
+        Set getKeywords();
+
+        /** Return the value at which this rulelist starts repeating. */
+        int getRepeatLimit();
+    }
+
+    /**
+     * syntax:
+     * condition :     or_condition
+     *                 and_condition
+     * or_condition :  and_condition 'or' condition
+     * and_condition : relation
+     *                 relation 'and' relation
+     * relation :      is_relation
+     *                 in_relation
+     *                 within_relation
+     *                 'n' EOL
+     * is_relation :   expr 'is' value
+     *                 expr 'is' 'not' value
+     * in_relation :   expr 'in' range
+     *                 expr 'not' 'in' range
+     * within_relation : expr 'within' range
+     *                   expr 'not' 'within' range
+     * expr :          'n'
+     *                 'n' 'mod' value
+     * value :         digit+
+     * digit :         0|1|2|3|4|5|6|7|8|9
+     * range :         value'..'value
+     */
+    private static Constraint parseConstraint(String description) 
+        throws ParseException {
+
+        description = description.trim().toLowerCase(Locale.ENGLISH);
+
+        Constraint result = null;
+        String[] or_together = Utility.splitString(description, "or");
+        for (int i = 0; i < or_together.length; ++i) {
+            Constraint andConstraint = null;
+            String[] and_together = Utility.splitString(or_together[i], "and");
+            for (int j = 0; j < and_together.length; ++j) {
+                Constraint newConstraint = NO_CONSTRAINT;
+
+                String condition = and_together[j].trim();
+                String[] tokens = Utility.splitWhitespace(condition);
+
+                int mod = 0;
+                boolean inRange = true;
+                boolean integersOnly = true;
+                long lowBound = -1;
+                long highBound = -1;
+
+                boolean isRange = false;
+
+                int x = 0;
+                String t = tokens[x++];
+                if (!"n".equals(t)) {
+                    throw unexpected(t, condition);
+                }
+                if (x < tokens.length) {
+                    t = tokens[x++];
+                    if ("mod".equals(t)) {
+                        mod = Integer.parseInt(tokens[x++]);
+                        t = nextToken(tokens, x++, condition);
+                    }
+                    if ("is".equals(t)) {
+                        t = nextToken(tokens, x++, condition);
+                        if ("not".equals(t)) {
+                            inRange = false;
+                            t = nextToken(tokens, x++, condition);
+                        }
+                    } else {
+                        isRange = true;
+                        if ("not".equals(t)) {
+                            inRange = false;
+                            t = nextToken(tokens, x++, condition);
+                        }
+                        if ("in".equals(t)) {
+                            t = nextToken(tokens, x++, condition);
+                        } else if ("within".equals(t)) {
+                            integersOnly = false;
+                            t = nextToken(tokens, x++, condition);
+                        } else {
+                            throw unexpected(t, condition);
+                        }
+                    }
+
+                    if (isRange) {
+                        String[] pair = Utility.splitString(t, "..");
+                        if (pair.length == 2) {
+                            lowBound = Long.parseLong(pair[0]);
+                            highBound = Long.parseLong(pair[1]);
+                        } else {
+                            throw unexpected(t, condition);
+                        }
+                    } else {
+                        lowBound = highBound = Long.parseLong(t);
+                    }
+
+                    if (x != tokens.length) {
+                        throw unexpected(tokens[x], condition);
+                    }
+
+                    newConstraint = 
+                        new RangeConstraint(mod, inRange, integersOnly, lowBound, highBound);
+                }
+
+                if (andConstraint == null) {
+                    andConstraint = newConstraint;
+                } else {
+                    andConstraint = new AndConstraint(andConstraint, 
+                                                      newConstraint);
+                }
+            }
+
+            if (result == null) {
+                result = andConstraint;
+            } else {
+                result = new OrConstraint(result, andConstraint);
+            }
+        }
+
+        return result;
+    }
+
+    /** Returns a parse exception wrapping the token and context strings. */
+    private static ParseException unexpected(String token, String context) {
+        return new ParseException("unexpected token '" + token +
+                                  "' in '" + context + "'", -1);
+    }
+
+    /** 
+     * Returns the token at x if available, else throws a parse exception.
+     */
+    private static String nextToken(String[] tokens, int x, String context) 
+        throws ParseException {
+        if (x < tokens.length) {
+            return tokens[x];
+        }
+        throw new ParseException("missing token at end of '" + context + "'", -1);
+    }
+
+    /**
+     * Syntax:
+     * rule : keyword ':' condition
+     * keyword: <identifier>
+     */
+    private static Rule parseRule(String description) throws ParseException {
+        int x = description.indexOf(':');
+        if (x == -1) {
+            throw new ParseException("missing ':' in rule description '" +
+                                     description + "'", 0);
+        }
+
+        String keyword = description.substring(0, x).trim();
+        if (!isValidKeyword(keyword)) {
+          throw new ParseException("keyword '" + keyword +
+                                   " is not valid", 0);
+        }
+
+        description = description.substring(x+1).trim();
+        if (description.length() == 0) {
+          throw new ParseException("missing constraint in '" + 
+                                   description + "'", x+1);
+        }
+        Constraint constraint = parseConstraint(description);
+        Rule rule = new ConstrainedRule(keyword, constraint);
+        return rule;
+    }
+
+    /**
+     * Syntax:
+     * rules : rule
+     *         rule ';' rules
+     */
+    private static RuleChain parseRuleChain(String description) 
+        throws ParseException {
+
+        RuleChain rc = null;
+        String[] rules = Utility.split(description, ';');
+        for (int i = 0; i < rules.length; ++i) {
+            Rule r = parseRule(rules[i].trim());
+            if (rc == null) {
+                rc = new RuleChain(r);
+            } else {
+                rc = rc.addRule(r);
+            }
+        }
+        return rc;
+    }
+
+    /** 
+     * An implementation of Constraint representing a modulus, 
+     * a range of values, and include/exclude. Provides lots of
+     * convenience factory methods.
+     */
+    private static class RangeConstraint implements Constraint, Serializable {
+        private static final long serialVersionUID = 1;
+      
+        private int mod;
+        private boolean inRange;
+        private boolean integersOnly;
+        private long lowerBound;
+        private long upperBound;
+
+        public boolean isFulfilled(double n) {
+            if (integersOnly && (n - (long)n) != 0.0) {
+                return !inRange;
+            }
+            if (mod != 0) {
+                n = n % mod;    // java % handles double numerator the way we want
+            }
+            return inRange == (n >= lowerBound && n <= upperBound);
+        }
+
+        RangeConstraint(int mod, boolean inRange, boolean integersOnly,
+                        long lowerBound, long upperBound) {
+            this.mod = mod;
+            this.inRange = inRange;
+            this.integersOnly = integersOnly;
+            this.lowerBound = lowerBound;
+            this.upperBound = upperBound;
+        }
+
+        public int updateRepeatLimit(int limit) {
+          int mylimit = mod == 0 ? (int)upperBound : mod;
+          return Math.max(mylimit, limit);
+        }
+
+        public String toString() {
+            return "[mod: " + mod + " inRange: " + inRange +
+                " integersOnly: " + integersOnly +
+                " low: " + lowerBound + " high: " + upperBound + "]";
+        }
+    }
+
+    /** Convenience base class for and/or constraints. */
+    private static abstract class BinaryConstraint implements Constraint, 
+                                                   Serializable {
+        private static final long serialVersionUID = 1;
+        protected final Constraint a;
+        protected final Constraint b;
+        private final String conjunction;
+
+        protected BinaryConstraint(Constraint a, Constraint b, String c) {
+            this.a = a;
+            this.b = b;
+            this.conjunction = c;
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return a.updateRepeatLimit(b.updateRepeatLimit(limit));
+        }
+
+        public String toString() {
+            return a.toString() + conjunction + b.toString();
+        }
+    }
+      
+    /** A constraint representing the logical and of two constraints. */
+    private static class AndConstraint extends BinaryConstraint {
+        private static final long serialVersionUID = 7766999779862263523L;
+
+        AndConstraint(Constraint a, Constraint b) {
+            super(a, b, " && ");
+        }
+
+        public boolean isFulfilled(double n) {
+            return a.isFulfilled(n) && b.isFulfilled(n);
+        }
+    }
+
+    /** A constraint representing the logical or of two constraints. */
+    private static class OrConstraint extends BinaryConstraint {
+        private static final long serialVersionUID = 1405488568664762222L;
+
+        OrConstraint(Constraint a, Constraint b) {
+            super(a, b, " || ");
+        }
+
+        public boolean isFulfilled(double n) {
+            return a.isFulfilled(n) || b.isFulfilled(n);
+        }
+    }
+
+    /** 
+     * Implementation of Rule that uses a constraint.
+     * Provides 'and' and 'or' to combine constraints.  Immutable.
+     */
+    private static class ConstrainedRule implements Rule, Serializable {
+        private static final long serialVersionUID = 1;
+        private final String keyword;
+        private final Constraint constraint;
+
+        public ConstrainedRule(String keyword, Constraint constraint) {
+            this.keyword = keyword;
+            this.constraint = constraint;
+        }
+
+        public Rule and(Constraint c) {
+            return new ConstrainedRule(keyword, new AndConstraint(constraint, c));
+        }
+
+        public Rule or(Constraint c) {
+            return new ConstrainedRule(keyword, new OrConstraint(constraint, c));
+        }
+
+        public String getKeyword() {
+            return keyword;
+        }
+
+        public boolean appliesTo(double n) {
+            return constraint.isFulfilled(n);
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return constraint.updateRepeatLimit(limit);
+        }
+
+        public String toString() { 
+            return keyword + ": " + constraint;
+        }
+    }
+
+    /**
+     * Implementation of RuleList that is itself a node in a linked list.
+     * Immutable, but supports chaining with 'addRule'.
+     */
+    private static class RuleChain implements RuleList, Serializable {
+        private static final long serialVersionUID = 1;
+        private final Rule rule;
+        private final RuleChain next;
+
+        /** Creates a rule chain with the single rule. */
+        public RuleChain(Rule rule) {
+            this(rule, null);
+        }
+
+        private RuleChain(Rule rule, RuleChain next) {
+            this.rule = rule;
+            this.next = next;
+        }
+
+        public RuleChain addRule(Rule nextRule) {
+            return new RuleChain(nextRule, this);
+        }
+
+        private Rule selectRule(double n) {
+            Rule r = null;
+            if (next != null) {
+                r = next.selectRule(n);
+            }
+            if (r == null && rule.appliesTo(n)) {
+                r = rule;
+            }
+            return r;
+        }
+
+        public String select(double n) {
+            Rule r = selectRule(n);
+            if (r == null) {
+                return KEYWORD_OTHER;
+            }
+            return r.getKeyword();
+        }
+
+        public Set getKeywords() {
+            Set result = new HashSet();
+            result.add(KEYWORD_OTHER);
+            RuleChain rc = this;
+            while (rc != null) {
+                result.add(rc.rule.getKeyword());
+                rc = rc.next;
+            }
+            return result;
+        }
+
+        public int getRepeatLimit() {
+          int result = 0;
+          RuleChain rc = this;
+          while (rc != null) {
+            result = rc.rule.updateRepeatLimit(result);
+            rc = rc.next;
+          }
+          return result;
+        }
+
+        public String toString() {
+            String s = rule.toString();
+            if (next != null) {
+                s = next.toString() + "; " + s;
+            }
+            return s;
+        }
+    }
+
+    // -------------------------------------------------------------------------
+    // Static class methods.
+    // -------------------------------------------------------------------------
+
+    /**
+     * Provides access to the predefined <code>PluralRules</code> for a given
+     * locale.
+     * 
+     * @param locale The locale for which a <code>PluralRules</code> object is
+     *   returned.
+     * @return The predefined <code>PluralRules</code> object for this locale.
+     *   If there's no predefined rules for this locale, the rules
+     *   for the closest parent in the locale hierarchy that has one will
+     *   be returned.  The final fallback always returns the default
+     *   rules.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules forLocale(ULocale locale) {
+      return PluralRulesLoader.loader.forLocale(locale);
+    }
+
+    /**
+     * Checks whether a token is a valid keyword.
+     * 
+     * @param token the token to be checked
+     * @return true if the token is a valid keyword.
+     */
+     private static boolean isValidKeyword(String token) {
+         if (token.length() > 0 && START_CHARS.contains(token.charAt(0))) {
+             for (int i = 1; i < token.length(); ++i) {
+                 if (!CONT_CHARS.contains(token.charAt(i))) {
+                     return false;
+                 }
+             }
+             return true;
+         }
+         return false;
+     }
+
+    /**
+     * Creates a new <code>PluralRules</code> object.  Immutable.
+     */
+     private PluralRules(RuleList rules) {
+         this.rules = rules;
+         this.keywords = Collections.unmodifiableSet(rules.getKeywords());
+     }
+
+    /**
+     * Given a number, returns the keyword of the first rule that applies to
+     * the number.
+     * 
+     * @param number The number for which the rule has to be determined.
+     * @return The keyword of the selected rule.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+     public String select(double number) {
+         return rules.select(number);
+     }
+
+    /**
+     * Returns a set of all rule keywords used in this <code>PluralRules</code>
+     * object.  The rule "other" is always present by default.
+     * 
+     * @return The set of keywords.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Set getKeywords() {
+        return keywords;
+    }
+
+    /**
+     * Returns the set of locales for which PluralRules are known.
+     * @return the set of locales for which PluralRules are known, as a list
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+      return PluralRulesLoader.loader.getAvailableULocales();
+    }
+
+    /**
+     * Returns the 'functionally equivalent' locale with respect to
+     * plural rules.  Calling PluralRules.forLocale with the functionally equivalent
+     * locale, and with the provided locale, returns rules that behave the same.
+     * <br/>
+     * All locales with the same functionally equivalent locale have
+     * plural rules that behave the same.  This is not exaustive;
+     * there may be other locales whose plural rules behave the same
+     * that do not have the same equivalent locale.
+     *
+     * @param locale the locale to check
+     * @param isAvailable if not null and of length > 0, this will hold 'true' at
+     * index 0 if locale is directly defined (without fallback) as having plural rules
+     * @return the functionally-equivalent locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable) {
+        return PluralRulesLoader.loader.getFunctionalEquivalent(locale, isAvailable);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+      return "keywords: " + keywords + " rules: " + rules.toString() + 
+          " limit: " + getRepeatLimit();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+      return keywords.hashCode();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object rhs) {
+        return rhs instanceof PluralRules && equals((PluralRules)rhs);
+    }
+
+    /**
+     * Return tif rhs is equal to this.
+     * @param rhs the PluralRules to compare to.
+     * @return true if this and rhs are equal.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(PluralRules rhs) {
+      if (rhs == null) {
+        return false;
+      }
+      if (rhs == this) { 
+        return true;
+      }
+      if (!rhs.getKeywords().equals(keywords)) {
+        return false;
+      }
+
+      int limit = Math.max(getRepeatLimit(), rhs.getRepeatLimit());
+      for (int i = 0; i < limit; ++i) {
+        if (!select(i).equals(rhs.select(i))) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    private int getRepeatLimit() {
+      if (repeatLimit == 0) {
+        repeatLimit = rules.getRepeatLimit() + 1;
+      }
+      return repeatLimit;
+    }
+ }
diff --git a/src/com/ibm/icu/text/Punycode.java b/src/com/ibm/icu/text/Punycode.java
new file mode 100644
index 0000000..35a8909
--- /dev/null
+++ b/src/com/ibm/icu/text/Punycode.java
@@ -0,0 +1,476 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * Ported code from ICU punycode.c 
+ * @author ram
+ */
+
+/* Package Private class */
+final class Punycode {
+
+    /* Punycode parameters for Bootstring */
+    private static final int BASE           = 36;
+    private static final int TMIN           = 1;
+    private static final int TMAX           = 26;
+    private static final int SKEW           = 38;
+    private static final int DAMP           = 700;
+    private static final int INITIAL_BIAS   = 72;
+    private static final int INITIAL_N      = 0x80;
+    
+    /* "Basic" Unicode/ASCII code points */
+    private static final int HYPHEN         = 0x2d;
+    private static final int DELIMITER      = HYPHEN;
+    
+    private static final int ZERO           = 0x30;
+    //private static final int NINE           = 0x39;
+    
+    private static final int SMALL_A        = 0x61;
+    private static final int SMALL_Z        = 0x7a;
+    
+    private static final int CAPITAL_A      = 0x41;
+    private static final int CAPITAL_Z      = 0x5a;
+    private static final int MAX_CP_COUNT   = 200;
+    //private static final int UINT_MAGIC     = 0x80000000;
+    //private static final long ULONG_MAGIC   = 0x8000000000000000L;
+    
+    private static int adaptBias(int delta, int length, boolean firstTime){
+        if(firstTime){
+            delta /=DAMP;
+        }else{
+            delta /=  2;
+        }
+        delta += delta/length;
+
+        int count=0;
+        for(; delta>((BASE-TMIN)*TMAX)/2; count+=BASE) {
+            delta/=(BASE-TMIN);
+        }
+
+        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));         
+    }
+
+    /**
+     * basicToDigit[] contains the numeric value of a basic code
+     * point (for use in representing integers) in the range 0 to
+     * BASE-1, or -1 if b is does not represent a value.
+     */
+    static final int[]    basicToDigit= new int[]{
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
+    
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+    
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+
+    ///CLOVER:OFF
+    private static char asciiCaseMap(char b, boolean uppercase) {
+        if(uppercase) {
+            if(SMALL_A<=b && b<=SMALL_Z) {
+                b-=(SMALL_A-CAPITAL_A);
+            }
+        } else {
+            if(CAPITAL_A<=b && b<=CAPITAL_Z) {
+                b+=(SMALL_A-CAPITAL_A);
+            }
+        }
+        return b;
+    }    
+    ///CLOVER:ON
+    /**
+     * digitToBasic() returns the basic code point whose value
+     * (when used for representing integers) is d, which must be in the
+     * range 0 to BASE-1. The lowercase form is used unless the uppercase flag is
+     * nonzero, in which case the uppercase form is used.
+     */
+    private static char digitToBasic(int digit, boolean uppercase) {
+        /*  0..25 map to ASCII a..z or A..Z */
+        /* 26..35 map to ASCII 0..9         */
+        if(digit<26) {
+            if(uppercase) {
+                return (char)(CAPITAL_A+digit);
+            } else {
+                return (char)(SMALL_A+digit);
+            }
+        } else {
+            return (char)((ZERO-26)+digit);
+        }
+    }
+    /**
+     * Converts Unicode to Punycode.
+     * The input string must not contain single, unpaired surrogates.
+     * The output will be represented as an array of ASCII code points.
+     * 
+     * @param src
+     * @param caseFlags
+     * @return
+     * @throws ParseException
+     */
+    public static StringBuffer encode(StringBuffer src, boolean[] caseFlags) throws StringPrepParseException{
+        
+        int[] cpBuffer = new int[MAX_CP_COUNT];
+        int n, delta, handledCPCount, basicLength, destLength, bias, j, m, q, k, t, srcCPCount;
+        char c, c2;
+        int srcLength = src.length();
+        int destCapacity = MAX_CP_COUNT;
+        char[] dest = new char[destCapacity];
+        StringBuffer result = new StringBuffer();
+        /*
+         * Handle the basic code points and
+         * convert extended ones to UTF-32 in cpBuffer (caseFlag in sign bit):
+         */
+        srcCPCount=destLength=0;
+        
+        for(j=0; j<srcLength; ++j) {
+            if(srcCPCount==MAX_CP_COUNT) {
+                /* too many input code points */
+                throw new IndexOutOfBoundsException();
+            }
+            c=src.charAt(j);
+            if(isBasic(c)) {
+                if(destLength<destCapacity) {
+                    cpBuffer[srcCPCount++]=0;
+                    dest[destLength]=
+                        caseFlags!=null ?
+                            asciiCaseMap((char)c, caseFlags[j]) :
+                            (char)c;
+                }
+                ++destLength;
+            } else {
+                n=((caseFlags!=null && caseFlags[j])? 1 : 0)<<31L;
+                if(!UTF16.isSurrogate(c)) {
+                    n|=c;
+                } else if(UTF16.isLeadSurrogate(c) && (j+1)<srcLength && UTF16.isTrailSurrogate(c2=src.charAt(j+1))) {
+                    ++j;
+                    
+                    n|=UCharacter.getCodePoint(c, c2);
+                } else {
+                    /* error: unmatched surrogate */
+                    throw new StringPrepParseException("Illegal char found",StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+                cpBuffer[srcCPCount++]=n;
+            }
+        }
+
+        /* Finish the basic string - if it is not empty - with a delimiter. */
+        basicLength=destLength;
+        if(basicLength>0) {
+            if(destLength<destCapacity) {
+                dest[destLength]=DELIMITER;
+            }
+            ++destLength;
+        }
+
+        /*
+         * handledCPCount is the number of code points that have been handled
+         * basicLength is the number of basic code points
+         * destLength is the number of chars that have been output
+         */
+
+        /* Initialize the state: */
+        n=INITIAL_N;
+        delta=0;
+        bias=INITIAL_BIAS;
+
+        /* Main encoding loop: */
+        for(handledCPCount=basicLength; handledCPCount<srcCPCount; /* no op */) {
+            /*
+             * All non-basic code points < n have been handled already.
+             * Find the next larger one:
+             */
+            for(m=0x7fffffff, j=0; j<srcCPCount; ++j) {
+                q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
+                if(n<=q && q<m) {
+                    m=q;
+                }
+            }
+
+            /*
+             * Increase delta enough to advance the decoder's
+             * <n,i> state to <m,0>, but guard against overflow:
+             */
+            if(m-n>(0x7fffffff-MAX_CP_COUNT-delta)/(handledCPCount+1)) {
+                throw new IllegalStateException("Internal program error");
+            }
+            delta+=(m-n)*(handledCPCount+1);
+            n=m;
+
+            /* Encode a sequence of same code points n */
+            for(j=0; j<srcCPCount; ++j) {
+                q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
+                if(q<n) {
+                    ++delta;
+                } else if(q==n) {
+                    /* Represent delta as a generalized variable-length integer: */
+                    for(q=delta, k=BASE; /* no condition */; k+=BASE) {
+
+                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt   
+
+                        t=k-bias;
+                        if(t<TMIN) {
+                            t=TMIN;
+                        } else if(t>TMAX) {
+                            t=TMAX;
+                        }
+                        */
+                    
+                        t=k-bias;
+                        if(t<TMIN) {
+                            t=TMIN;
+                        } else if(k>=(bias+TMAX)) {
+                            t=TMAX;
+                        }
+
+                        if(q<t) {
+                            break;
+                        }
+
+                        if(destLength<destCapacity) {
+                            dest[destLength++]=digitToBasic(t+(q-t)%(BASE-t), false);
+                        }
+                        q=(q-t)/(BASE-t);
+                    }
+
+                    if(destLength<destCapacity) {
+                        dest[destLength++]=digitToBasic(q, (cpBuffer[j]<0));
+                    }
+                    bias=adaptBias(delta, handledCPCount+1,(handledCPCount==basicLength));
+                    delta=0;
+                    ++handledCPCount;
+                }
+            }
+
+            ++delta;
+            ++n;
+        }
+
+        return result.append(dest, 0, destLength);
+    }
+    
+    private static boolean isBasic(int ch){
+        return (ch < INITIAL_N);
+    }
+    ///CLOVER:OFF
+    private static boolean isBasicUpperCase(int ch){
+        return( CAPITAL_A<=ch && ch >= CAPITAL_Z);
+    }
+    ///CLOVER:ON
+    private static boolean isSurrogate(int ch){
+        return (((ch)&0xfffff800)==0xd800);
+    }
+    /**
+     * Converts Punycode to Unicode.
+     * The Unicode string will be at most as long as the Punycode string.
+     * 
+     * @param src
+     * @param caseFlags
+     * @return
+     * @throws ParseException
+     */
+    public static StringBuffer decode(StringBuffer src, boolean[] caseFlags) 
+                               throws StringPrepParseException{
+        int srcLength = src.length();
+        StringBuffer result = new StringBuffer();
+        int n, destLength, i, bias, basicLength, j, in, oldi, w, k, digit, t,
+                destCPCount, firstSupplementaryIndex, cpLength;
+        char b;
+        int destCapacity = MAX_CP_COUNT;
+        char[] dest = new char[destCapacity];
+
+        /*
+         * Handle the basic code points:
+         * Let basicLength be the number of input code points
+         * before the last delimiter, or 0 if there is none,
+         * then copy the first basicLength code points to the output.
+         *
+         * The two following loops iterate backward.
+         */
+        for(j=srcLength; j>0;) {
+            if(src.charAt(--j)==DELIMITER) {
+                break;
+            }
+        }
+        destLength=basicLength=destCPCount=j;
+
+        while(j>0) {
+            b=src.charAt(--j);
+            if(!isBasic(b)) {
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.INVALID_CHAR_FOUND);
+            }
+
+            if(j<destCapacity) {
+                dest[j]= b;
+
+                if(caseFlags!=null) {
+                    caseFlags[j]=isBasicUpperCase(b);
+                }
+            }
+        }
+
+        /* Initialize the state: */
+        n=INITIAL_N;
+        i=0;
+        bias=INITIAL_BIAS;
+        firstSupplementaryIndex=1000000000;
+
+        /*
+         * Main decoding loop:
+         * Start just after the last delimiter if any
+         * basic code points were copied; start at the beginning otherwise.
+         */
+        for(in=basicLength>0 ? basicLength+1 : 0; in<srcLength; /* no op */) {
+            /*
+             * in is the index of the next character to be consumed, and
+             * destCPCount is the number of code points in the output array.
+             *
+             * Decode a generalized variable-length integer into delta,
+             * which gets added to i.  The overflow checking is easier
+             * if we increase i as we go, then subtract off its starting
+             * value at the end to obtain delta.
+             */
+            for(oldi=i, w=1, k=BASE; /* no condition */; k+=BASE) {
+                if(in>=srcLength) {
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+
+                digit=basicToDigit[src.charAt(in++) & 0xFF];
+                if(digit<0) {
+                    throw new StringPrepParseException("Invalid char found", StringPrepParseException.INVALID_CHAR_FOUND);
+                }
+                if(digit>(0x7fffffff-i)/w) {
+                    /* integer overflow */
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+
+                i+=digit*w;
+                t=k-bias;
+                if(t<TMIN) {
+                    t=TMIN;
+                } else if(k>=(bias+TMAX)) {
+                    t=TMAX;
+                }
+                if(digit<t) {
+                    break;
+                }
+
+                if(w>0x7fffffff/(BASE-t)) {
+                    /* integer overflow */
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+                w*=BASE-t;
+            }
+
+            /*
+             * Modification from sample code:
+             * Increments destCPCount here,
+             * where needed instead of in for() loop tail.
+             */
+            ++destCPCount;
+            bias=adaptBias(i-oldi, destCPCount, (oldi==0));
+
+            /*
+             * i was supposed to wrap around from (incremented) destCPCount to 0,
+             * incrementing n each time, so we'll fix that now:
+             */
+            if(i/destCPCount>(0x7fffffff-n)) {
+                /* integer overflow */
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+            }
+
+            n+=i/destCPCount;
+            i%=destCPCount;
+            /* not needed for Punycode: */
+            /* if (decode_digit(n) <= BASE) return punycode_invalid_input; */
+
+            if(n>0x10ffff || isSurrogate(n)) {
+                /* Unicode code point overflow */
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+            }
+
+            /* Insert n at position i of the output: */
+            cpLength=UTF16.getCharCount(n);
+            if((destLength+cpLength)<destCapacity) {
+                int codeUnitIndex;
+
+                /*
+                 * Handle indexes when supplementary code points are present.
+                 *
+                 * In almost all cases, there will be only BMP code points before i
+                 * and even in the entire string.
+                 * This is handled with the same efficiency as with UTF-32.
+                 *
+                 * Only the rare cases with supplementary code points are handled
+                 * more slowly - but not too bad since this is an insertion anyway.
+                 */
+                if(i<=firstSupplementaryIndex) {
+                    codeUnitIndex=i;
+                    if(cpLength>1) {
+                        firstSupplementaryIndex=codeUnitIndex;
+                    } else {
+                        ++firstSupplementaryIndex;
+                    }
+                } else {
+                    codeUnitIndex=firstSupplementaryIndex;
+                    codeUnitIndex=UTF16.moveCodePointOffset(dest, 0, destLength, codeUnitIndex, i-codeUnitIndex);
+                }
+
+                /* use the UChar index codeUnitIndex instead of the code point index i */
+                if(codeUnitIndex<destLength) {
+                    System.arraycopy(dest, codeUnitIndex,
+                                     dest, codeUnitIndex+cpLength,
+                                    (destLength-codeUnitIndex));
+                    if(caseFlags!=null) {
+                        System.arraycopy(caseFlags, codeUnitIndex,
+                                         caseFlags, codeUnitIndex+cpLength,
+                                         destLength-codeUnitIndex);
+                    }
+                }
+                if(cpLength==1) {
+                    /* BMP, insert one code unit */
+                    dest[codeUnitIndex]=(char)n;
+                } else {
+                    /* supplementary character, insert two code units */
+                    dest[codeUnitIndex]=UTF16.getLeadSurrogate(n);
+                    dest[codeUnitIndex+1]=UTF16.getTrailSurrogate(n);
+                }
+                if(caseFlags!=null) {
+                    /* Case of last character determines uppercase flag: */
+                    caseFlags[codeUnitIndex]=isBasicUpperCase(src.charAt(in-1));
+                    if(cpLength==2) {
+                        caseFlags[codeUnitIndex+1]=false;
+                    }
+                }
+            }
+            destLength+=cpLength;
+            ++i;
+        }
+        result.append(dest, 0, destLength);
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/text/Quantifier.java b/src/com/ibm/icu/text/Quantifier.java
new file mode 100644
index 0000000..d26d607
--- /dev/null
+++ b/src/com/ibm/icu/text/Quantifier.java
@@ -0,0 +1,115 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+class Quantifier implements UnicodeMatcher {
+
+    private UnicodeMatcher matcher;
+
+    private int minCount;
+
+    private int maxCount;
+
+    /**
+     * Maximum count a quantifier can have.
+     */
+    public static final int MAX = Integer.MAX_VALUE;
+
+    public Quantifier(UnicodeMatcher theMatcher,
+                      int theMinCount, int theMaxCount) {
+        if (theMatcher == null || minCount < 0 || maxCount < 0 || minCount > maxCount) {
+            throw new IllegalArgumentException();
+        }
+        matcher = theMatcher;
+        minCount = theMinCount;
+        maxCount = theMaxCount;
+    }
+
+    /**
+     * Implement UnicodeMatcher API.
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int start = offset[0];
+        int count = 0;
+        while (count < maxCount) {
+            int pos = offset[0];
+            int m = matcher.matches(text, offset, limit, incremental);
+            if (m == U_MATCH) {
+                ++count;
+                if (pos == offset[0]) {
+                    // If offset has not moved we have a zero-width match.
+                    // Don't keep matching it infinitely.
+                    break;
+                }
+            } else if (incremental && m == U_PARTIAL_MATCH) {
+                return U_PARTIAL_MATCH;
+            } else {
+                break;
+            }
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        if (count >= minCount) {
+            return U_MATCH;
+        }
+        offset[0] = start;
+        return U_MISMATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        result.append(matcher.toPattern(escapeUnprintable));
+        if (minCount == 0) {
+            if (maxCount == 1) {
+                return result.append('?').toString();
+            } else if (maxCount == MAX) {
+                return result.append('*').toString();
+            }
+            // else fall through
+        } else if (minCount == 1 && maxCount == MAX) {
+            return result.append('+').toString();
+        }
+        result.append('{');
+        Utility.appendNumber(result, minCount);
+        result.append(',');
+        if (maxCount != MAX) {
+            Utility.appendNumber(result, maxCount);
+        }
+        result.append('}');
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public boolean matchesIndexValue(int v) {
+        return (minCount == 0) || matcher.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     * @returns a reference to toUnionTo
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        if (maxCount > 0) {
+            matcher.addMatchSetTo(toUnionTo);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/RBBIDataWrapper.java b/src/com/ibm/icu/text/RBBIDataWrapper.java
new file mode 100644
index 0000000..f64c645
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIDataWrapper.java
@@ -0,0 +1,525 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.CharTrie;
+
+/**
+* <p>Internal class used for Rule Based Break Iterators</p>
+* <p>This class provides access to the compiled break rule data, as
+* it is stored in a .brk file.  
+* @internal
+* 
+*/
+final class RBBIDataWrapper {
+    //
+    // These fields are the ready-to-use compiled rule data, as
+    //   read from the file.
+    //
+    RBBIDataHeader fHeader;
+    short          fFTable[];
+    short          fRTable[];
+    short          fSFTable[];
+    short          fSRTable[];
+    CharTrie       fTrie;
+    String         fRuleSource;
+    int            fStatusTable[];
+    
+    //
+    // Indexes to fields in the ICU4C style binary form of the RBBI Data Header
+    //   Used by the rule compiler when flattening the data.
+    //
+    final static int    DH_SIZE           = 24;
+    final static int    DH_MAGIC          = 0;
+    final static int    DH_FORMATVERSION  = 1;
+    final static int    DH_LENGTH         = 2;
+    final static int    DH_CATCOUNT       = 3;
+    final static int    DH_FTABLE         = 4;
+    final static int    DH_FTABLELEN      = 5;
+    final static int    DH_RTABLE         = 6;
+    final static int    DH_RTABLELEN      = 7;
+    final static int    DH_SFTABLE        = 8;
+    final static int    DH_SFTABLELEN     = 9;
+    final static int    DH_SRTABLE        = 10;
+    final static int    DH_SRTABLELEN     = 11;
+    final static int    DH_TRIE           = 12;
+    final static int    DH_TRIELEN        = 13;
+    final static int    DH_RULESOURCE     = 14;
+    final static int    DH_RULESOURCELEN  = 15;
+    final static int    DH_STATUSTABLE    = 16;
+    final static int    DH_STATUSTABLELEN = 17;
+    
+    
+    // Index offsets to the fields in a state table row.
+    //    Corresponds to struct RBBIStateTableRow in the C version.
+    //   
+    final static int      ACCEPTING  = 0;
+    final static int      LOOKAHEAD  = 1;
+    final static int      TAGIDX     = 2;
+    final static int      RESERVED   = 3;
+    final static int      NEXTSTATES = 4;
+    
+    // Index offsets to header fields of a state table
+    //     struct RBBIStateTable {...   in the C version.
+    //
+    final static int      NUMSTATES  = 0;
+    final static int      ROWLEN     = 2;
+    final static int      FLAGS      = 4;
+    final static int      RESERVED_2 = 6;
+    final static int      ROW_DATA   = 8;
+    
+    //  Bit selectors for the "FLAGS" field of the state table header
+    //     enum RBBIStateTableFlags in the C version.
+    //
+    final static int      RBBI_LOOKAHEAD_HARD_BREAK = 1;
+    final static int      RBBI_BOF_REQUIRED         = 2;  
+    
+    /**
+     * Data Header.  A struct-like class with the fields from the RBBI data file header.
+     */
+    final static class RBBIDataHeader {
+        int         fMagic;         //  == 0xbla0 
+        int         fVersion;       //  == 1 (for ICU 3.2 and earlier. 
+        byte[]      fFormatVersion; //  For ICU 3.4 and later.
+        int         fLength;        //  Total length in bytes of this RBBI Data, 
+                                       //      including all sections, not just the header. 
+        int         fCatCount;      //  Number of character categories. 
+
+        //  
+        //  Offsets and sizes of each of the subsections within the RBBI data. 
+        //  All offsets are bytes from the start of the RBBIDataHeader. 
+        //  All sizes are in bytes. 
+        //  
+        int         fFTable;         //  forward state transition table. 
+        int         fFTableLen;
+        int         fRTable;         //  Offset to the reverse state transition table. 
+        int         fRTableLen;
+        int         fSFTable;        //  safe point forward transition table 
+        int         fSFTableLen;
+        int         fSRTable;        //  safe point reverse transition table 
+        int         fSRTableLen;
+        int         fTrie;           //  Offset to Trie data for character categories 
+        int         fTrieLen;
+        int         fRuleSource;     //  Offset to the source for for the break 
+        int         fRuleSourceLen;  //    rules.  Stored UChar *. 
+        int         fStatusTable;    // Offset to the table of rule status values 
+        int         fStatusTableLen;
+
+        public RBBIDataHeader() {
+            fMagic = 0;
+            fFormatVersion = new byte[4];
+        }
+    }
+    
+    
+    /**
+     * RBBI State Table Indexing Function.  Given a state number, return the
+     * array index of the start of the state table row for that state.
+     * 
+     */
+    int getRowIndex(int state){
+        return ROW_DATA + state * (fHeader.fCatCount + 4);
+    }
+    
+    static class TrieFoldingFunc implements  Trie.DataManipulate {
+        public int getFoldingOffset(int data) {
+            if ((data & 0x8000) != 0) {
+                return data & 0x7fff;
+            } else {
+                return 0;
+            }
+        }
+    }
+    static TrieFoldingFunc  fTrieFoldingFunc = new TrieFoldingFunc();
+ 
+    
+    RBBIDataWrapper() {
+    }
+
+    /*
+     *  Get an RBBIDataWrapper from an InputStream onto a pre-compiled set
+     *  of RBBI rules.
+     */
+    static RBBIDataWrapper get(InputStream is) throws IOException {
+        int i;
+        
+        DataInputStream dis = new DataInputStream(new BufferedInputStream(is));
+        RBBIDataWrapper This = new RBBIDataWrapper();
+        
+        // Seek past the ICU data header.
+        //   TODO:  verify that the header looks good.
+        dis.skip(0x80);
+        
+        // Read in the RBBI data header...
+        This.fHeader = new  RBBIDataHeader();
+        This.fHeader.fMagic          = dis.readInt();
+        This.fHeader.fVersion        = dis.readInt();
+        This.fHeader.fFormatVersion[0] = (byte) (This.fHeader.fVersion >> 24);
+        This.fHeader.fFormatVersion[1] = (byte) (This.fHeader.fVersion >> 16);
+        This.fHeader.fFormatVersion[2] = (byte) (This.fHeader.fVersion >> 8);
+        This.fHeader.fFormatVersion[3] = (byte) (This.fHeader.fVersion);
+        This.fHeader.fLength         = dis.readInt();
+        This.fHeader.fCatCount       = dis.readInt();
+        This.fHeader.fFTable         = dis.readInt();
+        This.fHeader.fFTableLen      = dis.readInt();
+        This.fHeader.fRTable         = dis.readInt();
+        This.fHeader.fRTableLen      = dis.readInt();
+        This.fHeader.fSFTable        = dis.readInt();
+        This.fHeader.fSFTableLen     = dis.readInt();
+        This.fHeader.fSRTable        = dis.readInt();
+        This.fHeader.fSRTableLen     = dis.readInt();
+        This.fHeader.fTrie           = dis.readInt();
+        This.fHeader.fTrieLen        = dis.readInt();
+        This.fHeader.fRuleSource     = dis.readInt();
+        This.fHeader.fRuleSourceLen  = dis.readInt();
+        This.fHeader.fStatusTable    = dis.readInt();
+        This.fHeader.fStatusTableLen = dis.readInt();
+        dis.skip(6 * 4);    // uint32_t  fReserved[6];
+        
+        
+        if (This.fHeader.fMagic != 0xb1a0 || 
+                ! (This.fHeader.fVersion == 1  ||         // ICU 3.2 and earlier
+                   This.fHeader.fFormatVersion[0] == 3)   // ICU 3.4
+            ) {
+            throw new IOException("Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.");
+        }
+        
+        // Current position in input stream.  
+        int pos = 24 * 4;     // offset of end of header, which has 24 fields, all int32_t (4 bytes)
+        
+        //
+        // Read in the Forward state transition table as an array of shorts.
+        //
+        
+        //   Quick Sanity Check
+        if (This.fHeader.fFTable < pos || This.fHeader.fFTable > This.fHeader.fLength) {
+             throw new IOException("Break iterator Rule data corrupt");
+        }
+        
+        //    Skip over any padding preceding this table
+        dis.skip(This.fHeader.fFTable - pos);
+        pos = This.fHeader.fFTable;
+        
+        This.fFTable = new short[This.fHeader.fFTableLen / 2];
+        for ( i=0; i<This.fFTable.length; i++) {
+            This.fFTable[i] = dis.readShort(); 
+            pos += 2;
+        }
+        
+        //
+        // Read in the Reverse state table
+        //
+        
+        // Skip over any padding in the file
+        dis.skip(This.fHeader.fRTable - pos);
+        pos = This.fHeader.fRTable;
+        
+        // Create & fill the table itself.
+        This.fRTable = new short[This.fHeader.fRTableLen / 2];
+        for (i=0; i<This.fRTable.length; i++) {
+            This.fRTable[i] = dis.readShort(); 
+            pos += 2;
+        }
+        
+        //
+        // Read in the Safe Forward state table
+        // 
+        if (This.fHeader.fSFTableLen > 0) {
+            // Skip over any padding in the file
+            dis.skip(This.fHeader.fSFTable - pos);
+            pos = This.fHeader.fSFTable;
+            
+            // Create & fill the table itself.
+            This.fSFTable = new short[This.fHeader.fSFTableLen / 2];
+            for (i=0; i<This.fSFTable.length; i++) {
+                This.fSFTable[i] = dis.readShort(); 
+                pos += 2;
+            }           
+        }
+        
+        //
+        // Read in the Safe Reverse state table
+        // 
+        if (This.fHeader.fSRTableLen > 0) {
+            // Skip over any padding in the file
+            dis.skip(This.fHeader.fSRTable - pos);
+            pos = This.fHeader.fSRTable;
+            
+            // Create & fill the table itself.
+            This.fSRTable = new short[This.fHeader.fSRTableLen / 2];
+            for (i=0; i<This.fSRTable.length; i++) {
+                This.fSRTable[i] = dis.readShort(); 
+                pos += 2;
+            }           
+        }
+        
+        //
+        // Unserialize the Character categories TRIE
+        //     Because we can't be absolutely certain where the Trie deserialize will
+        //     leave the input stream, leave position unchanged.
+        //     The seek to the start of the next item following the TRIE will get us
+        //     back in sync.
+        //
+        dis.skip(This.fHeader.fTrie - pos);     // seek input stream from end of previous section to
+        pos = This.fHeader.fTrie;               //   to the start of the trie
+    
+        dis.mark(This.fHeader.fTrieLen+100);    // Mark position of start of TRIE in the input
+                                                //  and tell Java to keep the mark valid so long
+                                                //  as we don't go more than 100 bytes past the
+                                                //  past the end of the TRIE.
+    
+        This.fTrie = new CharTrie(dis, fTrieFoldingFunc);  // Deserialize the TRIE, leaving input
+                                                //  stream at an unknown position, preceding the
+                                                //  padding between TRIE and following section.
+    
+        dis.reset();                            // Move input stream back to marked position at
+                                                //   the start of the serialized TRIE.  Now our
+                                                //   "pos" variable and the input stream are in
+                                                //   agreement.
+        
+        //
+        // Read the Rule Status Table
+        //
+        if (pos > This.fHeader.fStatusTable) {
+            throw new IOException("Break iterator Rule data corrupt");            
+        }
+        dis.skip(This.fHeader.fStatusTable - pos);
+        pos = This.fHeader.fStatusTable;
+        This.fStatusTable = new int[This.fHeader.fStatusTableLen / 4];
+        for (i=0; i<This.fStatusTable.length; i++) {
+            This.fStatusTable[i] = dis.readInt(); 
+            pos += 4;
+        }
+        
+        //
+        // Put the break rule source into a String
+        //
+        if (pos > This.fHeader.fRuleSource) {
+            throw new IOException("Break iterator Rule data corrupt");            
+        }
+        dis.skip(This.fHeader.fRuleSource - pos);
+        pos = This.fHeader.fRuleSource;
+        StringBuffer sb = new StringBuffer(This.fHeader.fRuleSourceLen / 2);
+        for (i=0; i<This.fHeader.fRuleSourceLen; i+=2) {
+            sb.append(dis.readChar()); 
+            pos += 2;
+        }
+        This.fRuleSource = sb.toString();
+        
+        if (RuleBasedBreakIterator.fDebugEnv!=null && RuleBasedBreakIterator.fDebugEnv.indexOf("data")>=0) {
+            This.dump();
+        }
+        return This;
+    }
+
+    ///CLOVER:OFF
+    //  Getters for fields from the state table header
+    //
+    final static int   getNumStates(short  table[]) {
+        int  hi = table[NUMSTATES];
+        int  lo = table[NUMSTATES+1];
+        int  val = (hi<<16) + (lo&0x0000ffff);
+        return val;
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Debug function to display the break iterator data.  
+     *  @internal
+     */
+    void dump() {
+        System.out.println("RBBI Data Wrapper dump ...");
+        System.out.println();
+        System.out.println("Forward State Table");
+        dumpTable(fFTable);
+        System.out.println("Reverse State Table");
+        dumpTable(fRTable);
+        System.out.println("Forward Safe Points Table");
+        dumpTable(fSFTable);
+        System.out.println("Reverse Safe Points Table");
+        dumpTable(fSRTable);
+        
+        dumpCharCategories();
+        System.out.println("Source Rules: " + fRuleSource);
+        
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Fixed width int-to-string conversion.   
+     *  @internal
+     * 
+     */
+    static public String intToString(int n, int width) {
+        StringBuffer  dest = new StringBuffer(width);   
+        dest.append(n);
+        while (dest.length() < width) {
+           dest.insert(0, ' ');   
+        }
+        return dest.toString();
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Fixed width int-to-string conversion.   
+     *  @internal
+     * 
+     */
+    static public String intToHexString(int n, int width) {
+        StringBuffer  dest = new StringBuffer(width);   
+        dest.append(Integer.toHexString(n));
+        while (dest.length() < width) {
+           dest.insert(0, ' ');   
+        }
+        return dest.toString();
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Dump a state table.  (A full set of RBBI rules has 4 state tables.)  */
+    private void dumpTable(short table[]) {
+        if (table == null)   {
+            System.out.println("  -- null -- ");
+        } else {
+            int n;
+            int state;
+            String header = " Row  Acc Look  Tag";
+            for (n=0; n<fHeader.fCatCount; n++) {
+                header += intToString(n, 5);     
+            }
+            System.out.println(header);
+            for (n=0; n<header.length(); n++) {
+                System.out.print("-");
+            }
+            System.out.println();
+            for (state=0; state< getNumStates(table); state++) {
+                dumpRow(table, state);   
+            }
+            System.out.println();
+        }
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /**
+     * Dump (for debug) a single row of an RBBI state table
+     * @param table
+     * @param state
+     * @internal
+     */
+    private void dumpRow(short table[], int   state) {
+        StringBuffer dest = new StringBuffer(fHeader.fCatCount*5 + 20);
+        dest.append(intToString(state, 4));
+        int row = getRowIndex(state);
+        if (table[row+ACCEPTING] != 0) {
+           dest.append(intToString(table[row+ACCEPTING], 5)); 
+        }else {
+            dest.append("     ");
+        }
+        if (table[row+LOOKAHEAD] != 0) {
+            dest.append(intToString(table[row+LOOKAHEAD], 5)); 
+        }else {
+            dest.append("     ");
+        }
+        dest.append(intToString(table[row+TAGIDX], 5)); 
+        
+        for (int col=0; col<fHeader.fCatCount; col++) {
+            dest.append(intToString(table[row+NEXTSTATES+col], 5));   
+        }
+
+        System.out.println(dest);
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    private void dumpCharCategories() {
+        int n = fHeader.fCatCount;
+        String   catStrings[] = new  String[n+1];
+        int      rangeStart = 0;
+        int      rangeEnd = 0;
+        int      lastCat = -1;
+        int      char32;
+        int      category;
+        int      lastNewline[] = new int[n+1];
+        
+        for (category = 0; category <= fHeader.fCatCount; category ++) {
+            catStrings[category] = "";   
+        }
+        System.out.println("\nCharacter Categories");
+        System.out.println("--------------------");
+        for (char32 = 0; char32<=0x10ffff; char32++) {
+            category = fTrie.getCodePointValue(char32);
+            category &= ~0x4000;            // Mask off dictionary bit.
+            if (category < 0 || category > fHeader.fCatCount) {
+                System.out.println("Error, bad category " + Integer.toHexString(category) + 
+                        " for char " + Integer.toHexString(char32)); 
+                break;
+            }
+            if (category == lastCat ) {
+                rangeEnd = char32;   
+            } else {
+                if (lastCat >= 0) {
+                    if (catStrings[lastCat].length() > lastNewline[lastCat] + 70) {
+                        lastNewline[lastCat] = catStrings[lastCat].length() + 10;
+                        catStrings[lastCat] += "\n       ";
+                    }
+                    
+                    catStrings[lastCat] += " " + Integer.toHexString(rangeStart);
+                    if (rangeEnd != rangeStart) {
+                        catStrings[lastCat] += "-" + Integer.toHexString(rangeEnd);   
+                    }
+                }
+                lastCat = category;
+                rangeStart = rangeEnd = char32;
+            }
+        }
+        catStrings[lastCat] += " " + Integer.toHexString(rangeStart);
+        if (rangeEnd != rangeStart) {
+            catStrings[lastCat] += "-" + Integer.toHexString(rangeEnd);   
+        }
+        
+        for (category = 0; category <= fHeader.fCatCount; category ++) {
+            System.out.println (intToString(category, 5) + "  " + catStrings[category]);   
+        }
+        System.out.println();
+    }
+    ///CLOVER:ON
+
+    /*static RBBIDataWrapper get(String name) throws IOException {
+        String  fullName = "data/" + name;
+        InputStream is = ICUData.getRequiredStream(fullName);
+        return get(is);
+    }
+
+    public static void main(String[] args) {
+        String s;
+        if (args.length == 0) {
+            s = "char";
+        } else {
+            s = args[0];
+        }
+        System.out.println("RBBIDataWrapper.main(" + s + ") ");
+        
+        String versionedName = ICUResourceBundle.ICU_BUNDLE+"/"+ s + ".brk";
+        
+        try {
+            RBBIDataWrapper This = RBBIDataWrapper.get(versionedName);
+            This.dump();
+        }
+       catch (Exception e) {
+           System.out.println("Exception: " + e.toString());
+       }
+           
+    }*/
+}
diff --git a/src/com/ibm/icu/text/RBBINode.java b/src/com/ibm/icu/text/RBBINode.java
new file mode 100644
index 0000000..3783f63
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBINode.java
@@ -0,0 +1,357 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (c) 2001-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+package com.ibm.icu.text;
+
+import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.ibm.icu.impl.Assert;
+
+/**
+ *   This class represents a node in the parse tree created by the RBBI Rule compiler.
+ * @internal
+ *
+ */
+class RBBINode {
+
+    
+ //   enum NodeType {
+     static final int    setRef = 0;
+     static final int    uset = 1;
+     static final int    varRef = 2;
+     static final int    leafChar = 3;
+     static final int    lookAhead = 4;
+     static final int    tag = 5;
+     static final int    endMark = 6;
+     static final int    opStart = 7;
+     static final int    opCat = 8;
+     static final int    opOr = 9;
+     static final int    opStar = 10;
+     static final int    opPlus = 11;
+     static final int    opQuestion = 12;
+     static final int    opBreak = 13;
+     static final int    opReverse = 14;
+     static final int    opLParen = 15;
+     static final int    nodeTypeLimit = 16;    //  For Assertion checking only.
+     
+     static final String []  nodeTypeNames = {
+         "setRef",
+         "uset",
+         "varRef",
+         "leafChar",
+         "lookAhead",
+         "tag",
+         "endMark",
+         "opStart",
+         "opCat",
+         "opOr",
+         "opStar",
+         "opPlus",
+         "opQuestion",
+         "opBreak",
+         "opReverse",
+         "opLParen"
+     };
+
+//    enum OpPrecedence {      
+    static final int    precZero   = 0;
+    static final int    precStart  = 1;
+    static final int    precLParen = 2;
+    static final int    precOpOr   = 3;
+    static final int    precOpCat  = 4;
+        
+    int          fType;   // enum NodeType
+    RBBINode      fParent;
+    RBBINode      fLeftChild;
+    RBBINode      fRightChild;
+    UnicodeSet    fInputSet;           // For uset nodes only.
+    int          fPrecedence = precZero;   // enum OpPrecedence, For binary ops only.
+    
+    String       fText;                 // Text corresponding to this node.
+                                        //   May be lazily evaluated when (if) needed
+                                        //   for some node types.
+    int           fFirstPos;            // Position in the rule source string of the
+                                        //   first text associated with the node.
+                                        //   If there's a left child, this will be the same
+                                        //   as that child's left pos.
+    int           fLastPos;             //  Last position in the rule source string
+                                        //    of any text associated with this node.
+                                        //    If there's a right child, this will be the same
+                                        //    as that child's last postion.
+
+    boolean      fNullable;            //  See Aho DFA table generation algorithm
+    int           fVal;                 // For leafChar nodes, the value.
+                                        //   Values are the character category,
+                                        //   corresponds to columns in the final
+                                        //   state transition table.
+
+    boolean      fLookAheadEnd;        // For endMark nodes, set TRUE if
+                                        //   marking the end of a look-ahead rule.
+
+    Set           fFirstPosSet;         // See Aho DFA table generation algorithm
+    Set           fLastPosSet;          // See Aho.       
+    Set           fFollowPos;           // See Aho.
+    
+    int           fSerialNum;           //  Debugging aids.  Each node gets a unique serial number.
+    static int    gLastSerial;
+
+    RBBINode(int t) {
+        Assert.assrt(t < nodeTypeLimit);
+        fSerialNum = ++gLastSerial;
+        fType = t;
+
+        fFirstPosSet = new HashSet();
+        fLastPosSet = new HashSet();
+        fFollowPos = new HashSet();
+        if (t == opCat) {
+            fPrecedence = precOpCat;
+        } else if (t == opOr) {
+            fPrecedence = precOpOr;
+        } else if (t == opStart) {
+            fPrecedence = precStart;
+        } else if (t == opLParen) {
+            fPrecedence = precLParen;
+        } else {
+            fPrecedence = precZero;
+        }
+    }
+
+    RBBINode(RBBINode other) {
+        fSerialNum = ++gLastSerial;
+        fType = other.fType;
+        fInputSet = other.fInputSet;
+        fPrecedence = other.fPrecedence;
+        fText = other.fText;
+        fFirstPos = other.fFirstPos;
+        fLastPos = other.fLastPos;
+        fNullable = other.fNullable;
+        fVal = other.fVal;
+        fFirstPosSet = new HashSet(other.fFirstPosSet);
+        fLastPosSet = new HashSet(other.fLastPosSet);
+        fFollowPos = new HashSet(other.fFollowPos);
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //        cloneTree Make a copy of the subtree rooted at this node.
+    //                      Discard any variable references encountered along the way,
+    //                      and replace with copies of the variable's definitions.
+    //                      Used to replicate the expression underneath variable
+    //                      references in preparation for generating the DFA tables.
+    //
+    //-------------------------------------------------------------------------
+    RBBINode cloneTree() {
+        RBBINode n;
+
+        if (fType == RBBINode.varRef) {
+            // If the current node is a variable reference, skip over it
+            //   and clone the definition of the variable instead.
+            n = fLeftChild.cloneTree();
+        } else if (fType == RBBINode.uset) {
+            n = this;
+        } else {
+            n = new RBBINode(this);
+            if (fLeftChild != null) {
+                n.fLeftChild = fLeftChild.cloneTree();
+                n.fLeftChild.fParent = n;
+            }
+            if (fRightChild != null) {
+                n.fRightChild = fRightChild.cloneTree();
+                n.fRightChild.fParent = n;
+            }
+        }
+        return n;
+    }
+
+
+
+    //-------------------------------------------------------------------------
+    //
+    //       flattenVariables Walk a parse tree, replacing any variable
+    //                          references with a copy of the variable's definition.
+    //                          Aside from variables, the tree is not changed.
+    //
+    //                          Return the root of the tree. If the root was not a variable
+    //                          reference, it remains unchanged - the root we started with
+    //                          is the root we return. If, however, the root was a variable
+    //                          reference, the root of the newly cloned replacement tree will
+    //                          be returned, and the original tree deleted.
+    //
+    //                          This function works by recursively walking the tree
+    //                          without doing anything until a variable reference is
+    //                          found, then calling cloneTree() at that point. Any
+    //                          nested references are handled by cloneTree(), not here.
+    //
+    //-------------------------------------------------------------------------
+    RBBINode flattenVariables() {
+        if (fType == varRef) {
+            RBBINode retNode = fLeftChild.cloneTree();
+            // delete this;
+            return retNode;
+        }
+
+        if (fLeftChild != null) {
+            fLeftChild = fLeftChild.flattenVariables();
+            fLeftChild.fParent = this;
+        }
+        if (fRightChild != null) {
+            fRightChild = fRightChild.flattenVariables();
+            fRightChild.fParent = this;
+        }
+        return this;
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //      flattenSets Walk the parse tree, replacing any nodes of type setRef
+    //                     with a copy of the expression tree for the set. A set's
+    //                     equivalent expression tree is precomputed and saved as
+    //                     the left child of the uset node.
+    //
+    //-------------------------------------------------------------------------
+    void flattenSets() {
+        Assert.assrt(fType != setRef);
+
+        if (fLeftChild != null) {
+            if (fLeftChild.fType == setRef) {
+                RBBINode setRefNode = fLeftChild;
+                RBBINode usetNode = setRefNode.fLeftChild;
+                RBBINode replTree = usetNode.fLeftChild;
+                fLeftChild = replTree.cloneTree();
+                fLeftChild.fParent = this;
+            } else {
+                fLeftChild.flattenSets();
+            }
+        }
+
+        if (fRightChild != null) {
+            if (fRightChild.fType == setRef) {
+                RBBINode setRefNode = fRightChild;
+                RBBINode usetNode = setRefNode.fLeftChild;
+                RBBINode replTree = usetNode.fLeftChild;
+                fRightChild = replTree.cloneTree();
+                fRightChild.fParent = this;
+                // delete setRefNode;
+            } else {
+                fRightChild.flattenSets();
+            }
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //       findNodes() Locate all the nodes of the specified type, starting
+    //                       at the specified root.
+    //
+    //-------------------------------------------------------------------------
+    void findNodes(List dest, int kind) {
+        if (fType == kind) {
+            dest.add(this);
+        }
+        if (fLeftChild != null) {
+            fLeftChild.findNodes(dest, kind);
+        }
+        if (fRightChild != null) {
+            fRightChild.findNodes(dest, kind);
+        }
+    }
+
+    
+ 
+    //-------------------------------------------------------------------------
+    //
+    //        print. Print out a single node, for debugging.
+    //
+    //-------------------------------------------------------------------------
+    ///CLOVER:OFF
+    static void printNode(RBBINode n) {
+
+        if (n==null) {
+            System.out.print (" -- null --\n");
+        } else {
+            RBBINode.printInt( n.fSerialNum, 10);
+            RBBINode.printString(nodeTypeNames[n.fType], 11);
+            RBBINode.printInt(n.fParent==null? 0     : n.fParent.fSerialNum, 11);
+            RBBINode.printInt(n.fLeftChild==null? 0  : n.fLeftChild.fSerialNum, 11);
+            RBBINode.printInt(n.fRightChild==null? 0 : n.fRightChild.fSerialNum, 12);
+            RBBINode.printInt(n.fFirstPos, 12);
+            RBBINode.printInt(n.fVal, 7);
+            
+            if (n.fType == varRef) {
+                System.out.print(" " + n.fText);
+            }
+        }
+        System.out.println("");
+    }
+    ///CLOVER:ON
+ 
+
+    // Print a String in a fixed field size.
+    // Debugging function.
+    ///CLOVER:OFF
+    static void printString(String s, int minWidth) {
+        for (int i = minWidth; i < 0; i++) {
+            // negative width means pad leading spaces, not fixed width.
+            System.out.print(' ');
+        }
+        for (int i = s.length(); i < minWidth; i++) {
+            System.out.print(' ');
+        }
+        System.out.print(s);
+    }
+    ///CLOVER:ON
+
+    //
+    //  Print an int in a fixed size field.
+    //  Debugging function.
+    //
+    ///CLOVER:OFF
+    static void printInt(int i, int minWidth) {
+        String s = Integer.toString(i);
+        printString(s, Math.max(minWidth, s.length() + 1));
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    static void printHex(int i, int minWidth) {
+        String s = Integer.toString(i, 16);
+        String leadingZeroes = "00000"
+                .substring(0, Math.max(0, 5 - s.length()));
+        s = leadingZeroes + s;
+        printString(s, minWidth);
+    }
+    ///CLOVER:ON
+
+
+    // -------------------------------------------------------------------------
+    //
+    //        print. Print out the tree of nodes rooted at "this"
+    //
+    // -------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printTree(boolean printHeading) {
+        if (printHeading) {
+            System.out.println( "-------------------------------------------------------------------");
+            System.out.println("    Serial       type     Parent  LeftChild  RightChild    position  value");
+        }
+        printNode(this);
+            // Only dump the definition under a variable reference if asked to.
+            // Unconditinally dump children of all other node types.
+            if (fType != varRef) {
+                if (fLeftChild != null) {
+                    fLeftChild.printTree(false);
+                }
+                
+                if (fRightChild != null) {
+                    fRightChild.printTree(false);
+                }
+            }
+    }
+    ///CLOVER:ON
+
+}
diff --git a/src/com/ibm/icu/text/RBBIRuleBuilder.java b/src/com/ibm/icu/text/RBBIRuleBuilder.java
new file mode 100644
index 0000000..5bacd88
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleBuilder.java
@@ -0,0 +1,332 @@
+//
+//    Copyright (C) 2002-2007, International Business Machines Corporation and others.
+//    All Rights Reserved.
+//
+//
+
+package com.ibm.icu.text;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.io.OutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.ICUDebug;
+
+class RBBIRuleBuilder {
+    //   This is the main class for building (compiling) break rules into the tables
+    //    required by the runtime RBBI engine.
+    //
+    
+    String fDebugEnv;              // controls debug trace output
+    String fRules;                 // The rule string that we are compiling
+    RBBIRuleScanner fScanner;      // The scanner.
+
+    
+    //
+    //  There are four separate parse trees generated, one for each of the
+    //    forward rules, reverse rules, safe forward rules and safe reverse rules.
+    //  This array references the root of each of the trees.
+    //  
+    RBBINode[]         fTreeRoots = new RBBINode[4];
+    static final int   fForwardTree = 0;  // Indexes into the above fTreeRoots array
+    static final int   fReverseTree = 1;  //   for each of the trees.
+    static final int   fSafeFwdTree = 2;  //   (in C, these are pointer variables and
+    static final int   fSafeRevTree = 3;  //    there is no array.)
+    int fDefaultTree = fForwardTree;      // For rules not qualified with a !
+                                          //   the tree to which they belong to.
+
+    boolean fChainRules;                  // True for chained Unicode TR style rules.
+                                          // False for traditional regexp rules.
+
+    boolean fLBCMNoChain;                 // True:  suppress chaining of rules on
+                                          //   chars with LineBreak property == CM.
+
+    boolean fLookAheadHardBreak;          // True:  Look ahead matches cause an
+                                          // immediate break, no continuing for the
+                                          // longest match.
+
+    RBBISetBuilder fSetBuilder;           // Set and Character Category builder.
+    List fUSetNodes;                      // Vector of all uset nodes.
+    RBBITableBuilder fForwardTables;      // State transition tables
+    RBBITableBuilder fReverseTables;
+    RBBITableBuilder fSafeFwdTables;
+    RBBITableBuilder fSafeRevTables;
+
+    //
+    // Status {tag} values.   These structures are common to all of the rule sets (Forward, Reverse, etc.).
+    //
+    Map fStatusSets = new HashMap();      // Status value sets encountered so far.
+                                          //  Map Key is the set of values.
+                                          //  Map Value is the runtime array index.
+
+    List fRuleStatusVals;                 // List of Integer objects.  Has same layout as the
+                                          //   runtime array of status (tag) values - 
+                                          //     number of values in group 1
+                                          //        first status value in group 1
+                                          //        2nd status value in group 1
+                                          //        ...
+                                          //     number of values in group 2
+                                          //        first status value in group 2
+                                          //        etc.
+                                          //
+    // Error codes from ICU4C.
+    //    using these simplified the porting, and consolidated the
+    //    creation of Java exceptions
+    //
+    static final int U_BRK_ERROR_START = 0x10200;
+    /**< Start of codes indicating Break Iterator failures */
+    
+    static final int U_BRK_INTERNAL_ERROR = 0x10201;
+    /**< An internal error (bug) was detected.             */
+    
+    static final int U_BRK_HEX_DIGITS_EXPECTED = 0x10202;
+    /**< Hex digits expected as part of a escaped char in a rule. */
+    
+    static final int U_BRK_SEMICOLON_EXPECTED = 0x10203;
+    /**< Missing ';' at the end of a RBBI rule.            */
+    
+    static final int U_BRK_RULE_SYNTAX = 0x10204;
+    /**< Syntax error in RBBI rule.                        */
+    
+    static final int U_BRK_UNCLOSED_SET = 0x10205;
+    /**< UnicodeSet witing an RBBI rule missing a closing ']'.  */
+    
+    static final int U_BRK_ASSIGN_ERROR = 0x10206;
+    /**< Syntax error in RBBI rule assignment statement.   */
+    
+    static final int U_BRK_VARIABLE_REDFINITION = 0x10207;
+    /**< RBBI rule $Variable redefined.                    */
+    
+    static final int U_BRK_MISMATCHED_PAREN = 0x10208;
+    /**< Mis-matched parentheses in an RBBI rule.          */
+    
+    static final int U_BRK_NEW_LINE_IN_QUOTED_STRING = 0x10209;
+    /**< Missing closing quote in an RBBI rule.            */
+    
+    static final int U_BRK_UNDEFINED_VARIABLE = 0x1020a;
+    /**< Use of an undefined $Variable in an RBBI rule.    */
+    
+    static final int U_BRK_INIT_ERROR = 0x1020b;
+    /**< Initialization failure.  Probable missing ICU Data. */
+    
+    static final int U_BRK_RULE_EMPTY_SET = 0x1020c;
+    /**< Rule contains an empty Unicode Set.               */
+    
+    static final int U_BRK_UNRECOGNIZED_OPTION = 0x1020d;
+    /**< !!option in RBBI rules not recognized.            */
+    
+    static final int U_BRK_MALFORMED_RULE_TAG = 0x1020e;
+    /**< The {nnn} tag on a rule is mal formed             */
+    static final int U_BRK_MALFORMED_SET = 0x1020f;
+    
+    static final int U_BRK_ERROR_LIMIT = 0x10210;
+    /**< This must always be the last value to indicate the limit for Break Iterator failures */
+
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Constructor.
+    //
+    //----------------------------------------------------------------------------------------
+    RBBIRuleBuilder(String rules)
+    {
+        fDebugEnv       = ICUDebug.enabled("rbbi") ?
+                            ICUDebug.value("rbbi") : null;
+        fRules          = rules;
+        fUSetNodes      = new ArrayList();
+        fRuleStatusVals = new ArrayList();
+        fScanner        = new RBBIRuleScanner(this);
+        fSetBuilder     = new RBBISetBuilder(this);
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //   flattenData() -  Collect up the compiled RBBI rule data and put it into
+    //                    the format for saving in ICU data files,
+    //
+    //                    See the ICU4C file common/rbidata.h for a detailed description.
+    //
+    //----------------------------------------------------------------------------------------
+    static final int align8(int i)
+    {
+        return (i + 7) & 0xfffffff8;
+    }
+
+    void flattenData(OutputStream os) throws IOException {
+        DataOutputStream dos = new DataOutputStream(os);
+        int i;
+
+        //  Remove comments and whitespace from the rules to make it smaller.
+        String strippedRules = RBBIRuleScanner.stripRules(fRules);
+
+        // Calculate the size of each section in the data in bytes.
+        //   Sizes here are padded up to a multiple of 8 for better memory alignment.
+        //   Sections sizes actually stored in the header are for the actual data
+        //     without the padding.
+        //
+        int headerSize       = 24 * 4;     // align8(sizeof(RBBIDataHeader));
+        int forwardTableSize = align8(fForwardTables.getTableSize());
+        int reverseTableSize = align8(fReverseTables.getTableSize());
+        int safeFwdTableSize = align8(fSafeFwdTables.getTableSize());
+        int safeRevTableSize = align8(fSafeRevTables.getTableSize());
+        int trieSize         = align8(fSetBuilder.getTrieSize());
+        int statusTableSize  = align8(fRuleStatusVals.size() * 4);
+        int rulesSize        = align8((strippedRules.length()) * 2);
+        int totalSize        = headerSize + forwardTableSize + reverseTableSize
+                                + safeFwdTableSize + safeRevTableSize
+                                + statusTableSize + trieSize + rulesSize;
+        int outputPos = 0;               // Track stream position, starting from RBBIDataHeader.
+
+        //
+        // Write out an ICU Data Header
+        //   TODO:  actually create a real header, rather than just a placeholder.
+        //           The empty placeholder is ok for compile-and-go from within ICU4J.
+        //           Replicating the ICU4C genbrk tool for building .brk resources would need a real header.
+        //
+        byte[] ICUDataHeader = new byte[0x80];
+        dos.write(ICUDataHeader);
+
+        //
+        // Write out the RBBIDataHeader
+        //
+        int[] header = new int[RBBIDataWrapper.DH_SIZE];                 // sizeof struct RBBIDataHeader
+        header[RBBIDataWrapper.DH_MAGIC]         = 0xb1a0;
+        header[RBBIDataWrapper.DH_FORMATVERSION] = 0x03010000;           // uint8_t fFormatVersion[4];
+        header[RBBIDataWrapper.DH_LENGTH]        = totalSize;            // fLength, the total size of all rule sections.
+        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories(); // fCatCount.
+        header[RBBIDataWrapper.DH_FTABLE]        = headerSize;           // fFTable
+        header[RBBIDataWrapper.DH_FTABLELEN]     = forwardTableSize;     // fTableLen
+        header[RBBIDataWrapper.DH_RTABLE]        = header[RBBIDataWrapper.DH_FTABLE] + forwardTableSize; // fRTable
+        header[RBBIDataWrapper.DH_RTABLELEN]     = reverseTableSize;     // fRTableLen
+        header[RBBIDataWrapper.DH_SFTABLE]       = header[RBBIDataWrapper.DH_RTABLE]
+                                                     + reverseTableSize; // fSTable
+        header[RBBIDataWrapper.DH_SFTABLELEN]    = safeFwdTableSize;     // fSTableLen
+        header[RBBIDataWrapper.DH_SRTABLE]       = header[RBBIDataWrapper.DH_SFTABLE]
+                                                     + safeFwdTableSize; // fSRTable
+        header[RBBIDataWrapper.DH_SRTABLELEN]    = safeRevTableSize;     // fSRTableLen
+        header[RBBIDataWrapper.DH_TRIE]          = header[RBBIDataWrapper.DH_SRTABLE]
+                                                     + safeRevTableSize; // fTrie
+        header[RBBIDataWrapper.DH_TRIELEN]       = fSetBuilder.getTrieSize(); // fTrieLen
+        header[RBBIDataWrapper.DH_STATUSTABLE]   = header[RBBIDataWrapper.DH_TRIE]
+                                                     + header[RBBIDataWrapper.DH_TRIELEN];
+        header[RBBIDataWrapper.DH_STATUSTABLELEN] = statusTableSize; // fStatusTableLen
+        header[RBBIDataWrapper.DH_RULESOURCE]    = header[RBBIDataWrapper.DH_STATUSTABLE]
+                                                     + statusTableSize;
+        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRules.length() * 2;
+        for (i = 0; i < header.length; i++) {
+            dos.writeInt(header[i]);
+            outputPos += 4;
+        }
+
+        // Write out the actual state tables.
+        short[] tableData;
+        tableData = fForwardTables.exportTable();
+        Assert.assrt(outputPos == header[4]);
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        tableData = fReverseTables.exportTable();
+        Assert.assrt(outputPos == header[6]);
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        Assert.assrt(outputPos == header[8]);
+        tableData = fSafeFwdTables.exportTable();
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        Assert.assrt(outputPos == header[10]);
+        tableData = fSafeRevTables.exportTable();
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        // write out the Trie table
+        Assert.assrt(outputPos == header[12]);
+        fSetBuilder.serializeTrie(os);
+        outputPos += header[13];
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+
+        // Write out the status {tag} table.
+        Assert.assrt(outputPos == header[16]);
+        for (i = 0; i < fRuleStatusVals.size(); i++) {
+            Integer val = (Integer) fRuleStatusVals.get(i);
+            dos.writeInt(val.intValue());
+            outputPos += 4;
+        }
+
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+
+        // Write out the stripped rules (rules with extra spaces removed
+        //   These go last in the data area, even though they are not last in the header.
+        Assert.assrt(outputPos == header[14]);
+        dos.writeChars(strippedRules);
+        outputPos += strippedRules.length() * 2;
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  compileRules          compile source rules, placing the compiled form into a output stream
+    //                        The compiled form is identical to that from ICU4C (Big Endian).
+    //
+    //----------------------------------------------------------------------------------------
+    static void compileRules(String rules, OutputStream os) throws IOException
+    {
+        //
+        // Read the input rules, generate a parse tree, symbol table,
+        // and list of all Unicode Sets referenced by the rules.
+        //
+        RBBIRuleBuilder builder = new RBBIRuleBuilder(rules);
+        builder.fScanner.parse();
+
+        //
+        // UnicodeSet processing.
+        //    Munge the Unicode Sets to create a set of character categories.
+        //    Generate the mapping tables (TRIE) from input 32-bit characters to
+        //    the character categories.
+        //
+        builder.fSetBuilder.build();
+
+        //
+        //   Generate the DFA state transition table.
+        //
+        builder.fForwardTables = new RBBITableBuilder(builder, fForwardTree);
+        builder.fReverseTables = new RBBITableBuilder(builder, fReverseTree);
+        builder.fSafeFwdTables = new RBBITableBuilder(builder, fSafeFwdTree);
+        builder.fSafeRevTables = new RBBITableBuilder(builder, fSafeRevTree);
+        builder.fForwardTables.build();
+        builder.fReverseTables.build();
+        builder.fSafeFwdTables.build();
+        builder.fSafeRevTables.build();
+        if (builder.fDebugEnv != null
+                && builder.fDebugEnv.indexOf("states") >= 0) {
+            builder.fForwardTables.printRuleStatusTable();
+        }
+
+        //
+        //   Package up the compiled data, writing it to an output stream
+        //      in the serialization format.  This is the same as the ICU4C runtime format.
+        //
+        builder.flattenData(os);
+    }
+}
diff --git a/src/com/ibm/icu/text/RBBIRuleParseTable.java b/src/com/ibm/icu/text/RBBIRuleParseTable.java
new file mode 100644
index 0000000..1a8e953
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleParseTable.java
@@ -0,0 +1,178 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006,
+ * International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+ 
+/**
+ * Generated Java File.  Do not edit by hand.
+ * This file contains the state table for the ICU Rule Based Break Iterator
+ * rule parser.
+ * It is generated by the Perl script "rbbicst.pl" from
+ * the rule parser state definitions file "rbbirpt.txt".
+ * @internal 
+ *
+ */
+class RBBIRuleParseTable
+{
+     static final short doCheckVarDef = 1;
+     static final short doDotAny = 2;
+     static final short doEndAssign = 3;
+     static final short doEndOfRule = 4;
+     static final short doEndVariableName = 5;
+     static final short doExit = 6;
+     static final short doExprCatOperator = 7;
+     static final short doExprFinished = 8;
+     static final short doExprOrOperator = 9;
+     static final short doExprRParen = 10;
+     static final short doExprStart = 11;
+     static final short doLParen = 12;
+     static final short doNOP = 13;
+     static final short doOptionEnd = 14;
+     static final short doOptionStart = 15;
+     static final short doReverseDir = 16;
+     static final short doRuleChar = 17;
+     static final short doRuleError = 18;
+     static final short doRuleErrorAssignExpr = 19;
+     static final short doScanUnicodeSet = 20;
+     static final short doSlash = 21;
+     static final short doStartAssign = 22;
+     static final short doStartTagValue = 23;
+     static final short doStartVariableName = 24;
+     static final short doTagDigit = 25;
+     static final short doTagExpectedError = 26;
+     static final short doTagValue = 27;
+     static final short doUnaryOpPlus = 28;
+     static final short doUnaryOpQuestion = 29;
+     static final short doUnaryOpStar = 30;
+     static final short doVariableNameExpectedErr = 31;
+ 
+     static final short kRuleSet_default = 255;
+     static final short kRuleSet_digit_char = 128;
+     static final short kRuleSet_eof = 252;
+     static final short kRuleSet_escaped = 254;
+     static final short kRuleSet_name_char = 129;
+     static final short kRuleSet_name_start_char = 130;
+     static final short kRuleSet_rule_char = 131;
+     static final short kRuleSet_white_space = 132;
+
+
+   static class RBBIRuleTableElement { 
+      short      fAction; 
+      short      fCharClass; 
+      short      fNextState; 
+      short      fPushState; 
+      boolean    fNextChar;  
+      String     fStateName; 
+      RBBIRuleTableElement(short a, int cc, int ns, int ps, boolean nc, String sn) {  
+      fAction = a; 
+      fCharClass = (short)cc; 
+      fNextState = (short)ns; 
+      fPushState = (short)ps; 
+      fNextChar  = nc; 
+      fStateName = sn; 
+   } 
+   } 
+  
+    static RBBIRuleTableElement[] gRuleParseStateTable = { 
+       new RBBIRuleTableElement(doNOP, 0, 0,0,  true,   null )     //  0 
+     , new RBBIRuleTableElement(doExprStart, 254, 21, 8, false,   "start")     //  1 
+     , new RBBIRuleTableElement(doNOP, 132, 1,0,  true,   null )     //  2 
+     , new RBBIRuleTableElement(doExprStart,'$',  80, 90, false,   null )     //  3 
+     , new RBBIRuleTableElement(doNOP,'!',  11,0,  true,   null )     //  4 
+     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   null )     //  5 
+     , new RBBIRuleTableElement(doNOP, 252, 0,0,  false,   null )     //  6 
+     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   null )     //  7 
+     , new RBBIRuleTableElement(doEndOfRule,';',  1,0,  true,   "break-rule-end")     //  8 
+     , new RBBIRuleTableElement(doNOP, 132, 8,0,  true,   null )     //  9 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  10 
+     , new RBBIRuleTableElement(doNOP,'!',  13,0,  true,   "rev-option")     //  11 
+     , new RBBIRuleTableElement(doReverseDir, 255, 20, 8, false,   null )     //  12 
+     , new RBBIRuleTableElement(doOptionStart, 130, 15,0,  true,   "option-scan1")     //  13 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  14 
+     , new RBBIRuleTableElement(doNOP, 129, 15,0,  true,   "option-scan2")     //  15 
+     , new RBBIRuleTableElement(doOptionEnd, 255, 17,0,  false,   null )     //  16 
+     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   "option-scan3")     //  17 
+     , new RBBIRuleTableElement(doNOP, 132, 17,0,  true,   null )     //  18 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  19 
+     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   "reverse-rule")     //  20 
+     , new RBBIRuleTableElement(doRuleChar, 254, 30,0,  true,   "term")     //  21 
+     , new RBBIRuleTableElement(doNOP, 132, 21,0,  true,   null )     //  22 
+     , new RBBIRuleTableElement(doRuleChar, 131, 30,0,  true,   null )     //  23 
+     , new RBBIRuleTableElement(doNOP,'[',  86, 30, false,   null )     //  24 
+     , new RBBIRuleTableElement(doLParen,'(',  21, 30, true,   null )     //  25 
+     , new RBBIRuleTableElement(doNOP,'$',  80, 29, false,   null )     //  26 
+     , new RBBIRuleTableElement(doDotAny,'.',  30,0,  true,   null )     //  27 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  28 
+     , new RBBIRuleTableElement(doCheckVarDef, 255, 30,0,  false,   "term-var-ref")     //  29 
+     , new RBBIRuleTableElement(doNOP, 132, 30,0,  true,   "expr-mod")     //  30 
+     , new RBBIRuleTableElement(doUnaryOpStar,'*',  35,0,  true,   null )     //  31 
+     , new RBBIRuleTableElement(doUnaryOpPlus,'+',  35,0,  true,   null )     //  32 
+     , new RBBIRuleTableElement(doUnaryOpQuestion,'?',  35,0,  true,   null )     //  33 
+     , new RBBIRuleTableElement(doNOP, 255, 35,0,  false,   null )     //  34 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont")     //  35 
+     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  36 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  37 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  38 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  39 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  40 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  41 
+     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  42 
+     , new RBBIRuleTableElement(doExprCatOperator,'{',  59,0,  true,   null )     //  43 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  44 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  45 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  46 
+     , new RBBIRuleTableElement(doSlash,'/',  49,0,  true,   "look-ahead")     //  47 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  48 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-slash")     //  49 
+     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  50 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  51 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  52 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  53 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  54 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  55 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  56 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  57 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  58 
+     , new RBBIRuleTableElement(doNOP, 132, 59,0,  true,   "tag-open")     //  59 
+     , new RBBIRuleTableElement(doStartTagValue, 128, 62,0,  false,   null )     //  60 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  61 
+     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-value")     //  62 
+     , new RBBIRuleTableElement(doNOP,'}',  66,0,  false,   null )     //  63 
+     , new RBBIRuleTableElement(doTagDigit, 128, 62,0,  true,   null )     //  64 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  65 
+     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-close")     //  66 
+     , new RBBIRuleTableElement(doTagValue,'}',  69,0,  true,   null )     //  67 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  68 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-tag")     //  69 
+     , new RBBIRuleTableElement(doNOP, 132, 69,0,  true,   null )     //  70 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  71 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  72 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  73 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  74 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  75 
+     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  76 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  77 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  78 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  79 
+     , new RBBIRuleTableElement(doStartVariableName,'$',  82,0,  true,   "scan-var-name")     //  80 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  81 
+     , new RBBIRuleTableElement(doNOP, 130, 84,0,  true,   "scan-var-start")     //  82 
+     , new RBBIRuleTableElement(doVariableNameExpectedErr, 255, 95,0,  false,   null )     //  83 
+     , new RBBIRuleTableElement(doNOP, 129, 84,0,  true,   "scan-var-body")     //  84 
+     , new RBBIRuleTableElement(doEndVariableName, 255, 255,0,  false,   null )     //  85 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'[',  255,0,  true,   "scan-unicode-set")     //  86 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'p',  255,0,  true,   null )     //  87 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'P',  255,0,  true,   null )     //  88 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  89 
+     , new RBBIRuleTableElement(doNOP, 132, 90,0,  true,   "assign-or-rule")     //  90 
+     , new RBBIRuleTableElement(doStartAssign,'=',  21, 93, true,   null )     //  91 
+     , new RBBIRuleTableElement(doNOP, 255, 29, 8, false,   null )     //  92 
+     , new RBBIRuleTableElement(doEndAssign,';',  1,0,  true,   "assign-end")     //  93 
+     , new RBBIRuleTableElement(doRuleErrorAssignExpr, 255, 95,0,  false,   null )     //  94 
+     , new RBBIRuleTableElement(doExit, 255, 95,0,  true,   "errorDeath")     //  95 
+ };
+} 
diff --git a/src/com/ibm/icu/text/RBBIRuleScanner.java b/src/com/ibm/icu/text/RBBIRuleScanner.java
new file mode 100644
index 0000000..d2d374b
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleScanner.java
@@ -0,0 +1,1074 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+
+import java.util.HashMap;
+import java.lang.IllegalArgumentException;
+import java.text.ParsePosition;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.Utility;
+
+/**
+  *  This class is part of the Rule Based Break Iterator rule compiler.
+  *  It scans the rules and builds the parse tree.
+  *  There is no public API here.
+  *  @internal
+  */
+class RBBIRuleScanner {
+    
+    private  final int    kStackSize = 100;               // The size of the state stack for
+    //   rules parsing.  Corresponds roughly
+    //   to the depth of parentheses nesting
+    //   that is allowed in the rules.
+    
+    static class RBBIRuleChar {
+        int             fChar;
+        boolean         fEscaped;
+    }
+
+
+
+    RBBIRuleBuilder               fRB;              // The rule builder that we are part of.
+    
+    int                       fScanIndex;        // Index of current character being processed
+                                                     //   in the rule input string.
+    int                       fNextIndex;        // Index of the next character, which
+                                                     //   is the first character not yet scanned.
+    boolean                  fQuoteMode;        // Scan is in a 'quoted region'
+    int                       fLineNum;          // Line number in input file.
+    int                       fCharNum;          // Char position within the line.
+    int                       fLastChar;         // Previous char, needed to count CR-LF
+                                                     //   as a single line, not two.
+    
+    RBBIRuleChar              fC = new RBBIRuleChar();    // Current char for parse state machine
+                                                     //   processing.
+    String                    fVarName;          // $variableName, valid when we've just
+                                                     //   scanned one.
+    
+    
+    short  fStack[] = new short[kStackSize];  // State stack, holds state pushes
+    int                       fStackPtr;           //  and pops as specified in the state
+                                                       //  transition rules.
+    
+    RBBINode  fNodeStack[] = new RBBINode[kStackSize]; // Node stack, holds nodes created
+                                                           //  during the parse of a rule
+    int                        fNodeStackPtr;
+    
+    
+    boolean                          fReverseRule;     // True if the rule currently being scanned
+                                                     //  is a reverse direction rule (if it
+                                                     //  starts with a '!')
+    
+    boolean                          fLookAheadRule;   // True if the rule includes a '/'
+                                                     //   somewhere within it.
+    
+    RBBISymbolTable              fSymbolTable;     // symbol table, holds definitions of
+                                                     //   $variable symbols.
+    
+    HashMap                 fSetTable = new HashMap();        // UnicocodeSet hash table, holds indexes to
+                                               //   the sets created while parsing rules.
+                                                     //   The key is the string used for creating
+                                                     //   the set.
+    
+    UnicodeSet      fRuleSets[] = new UnicodeSet[10];    // Unicode Sets that are needed during
+                                                     //  the scanning of RBBI rules.  The
+                                                     //  indicies for these are assigned by the
+                                                     //  perl script that builds the state tables.
+                                                     //  See rbbirpt.h.
+    
+    int                        fRuleNum;         // Counts each rule as it is scanned.
+    
+    int                        fOptionStart;     // Input index of start of a !!option
+                                                 //   keyword, while being scanned.
+
+    
+
+   static private String gRuleSet_rule_char_pattern       = "[^[\\p{Z}\\u0020-\\u007f]-[\\p{L}]-[\\p{N}]]";
+   static private String gRuleSet_name_char_pattern       = "[_\\p{L}\\p{N}]";
+   static private String gRuleSet_digit_char_pattern      = "[0-9]";
+   static private String gRuleSet_name_start_char_pattern = "[_\\p{L}]";
+   static private String gRuleSet_white_space_pattern     = "[\\p{Pattern_White_Space}]";
+   static private String kAny =  "any";
+
+    
+ 
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Constructor.
+    //
+    //----------------------------------------------------------------------------------------
+    RBBIRuleScanner(RBBIRuleBuilder rb) {
+        fRB = rb;
+        fLineNum = 1;
+
+        //
+        //  Set up the constant Unicode Sets.
+        //     Note: These could be made static and shared among
+        //            all instances of RBBIRuleScanners.
+        fRuleSets[RBBIRuleParseTable.kRuleSet_rule_char - 128] = new UnicodeSet(gRuleSet_rule_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_white_space - 128] = new UnicodeSet(gRuleSet_white_space_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_name_char - 128] = new UnicodeSet(gRuleSet_name_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_name_start_char - 128] = new UnicodeSet(gRuleSet_name_start_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_digit_char - 128] = new UnicodeSet(gRuleSet_digit_char_pattern);
+
+        fSymbolTable = new RBBISymbolTable(this, rb.fRules);
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  doParseAction Do some action during rule parsing.
+    //                       Called by the parse state machine.
+    //                       Actions build the parse tree and Unicode Sets,
+    //                       and maintain the parse stack for nested expressions.
+    //
+    //----------------------------------------------------------------------------------------
+    boolean doParseActions(int action) {
+        RBBINode n = null;
+
+        boolean returnVal = true;
+
+        switch (action) {
+
+        case RBBIRuleParseTable.doExprStart:
+            pushNewNode(RBBINode.opStart);
+            fRuleNum++;
+            break;
+
+        case RBBIRuleParseTable.doExprOrOperator: {
+            fixOpStack(RBBINode.precOpCat);
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode orNode = pushNewNode(RBBINode.opOr);
+            orNode.fLeftChild = operandNode;
+            operandNode.fParent = orNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doExprCatOperator:
+        // concatenation operator.
+        // For the implicit concatenation of adjacent terms in an expression
+        // that are
+        //   not separated by any other operator. Action is invoked between the
+        //   actions for the two terms.
+        {
+            fixOpStack(RBBINode.precOpCat);
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode catNode = pushNewNode(RBBINode.opCat);
+            catNode.fLeftChild = operandNode;
+            operandNode.fParent = catNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doLParen:
+            // Open Paren.
+            //   The openParen node is a dummy operation type with a low
+            // precedence,
+            //     which has the affect of ensuring that any real binary op that
+            //     follows within the parens binds more tightly to the operands than
+            //     stuff outside of the parens.
+            pushNewNode(RBBINode.opLParen);
+            break;
+
+        case RBBIRuleParseTable.doExprRParen:
+            fixOpStack(RBBINode.precLParen);
+            break;
+
+        case RBBIRuleParseTable.doNOP:
+            break;
+
+        case RBBIRuleParseTable.doStartAssign:
+            // We've just scanned "$variable = "
+            // The top of the node stack has the $variable ref node.
+
+            // Save the start position of the RHS text in the StartExpression
+            // node
+            //   that precedes the $variableReference node on the stack.
+            //   This will eventually be used when saving the full $variable
+            // replacement
+            //   text as a string.
+            n = fNodeStack[fNodeStackPtr - 1];
+            n.fFirstPos = fNextIndex; // move past the '='
+
+            // Push a new start-of-expression node; needed to keep parse of the
+            //   RHS expression happy.
+            pushNewNode(RBBINode.opStart);
+            break;
+
+        case RBBIRuleParseTable.doEndAssign: {
+            // We have reached the end of an assignement statement.
+            //   Current scan char is the ';' that terminates the assignment.
+
+            // Terminate expression, leaves expression parse tree rooted in TOS
+            // node.
+            fixOpStack(RBBINode.precStart);
+
+            RBBINode startExprNode = fNodeStack[fNodeStackPtr - 2];
+            RBBINode varRefNode = fNodeStack[fNodeStackPtr - 1];
+            RBBINode RHSExprNode = fNodeStack[fNodeStackPtr];
+
+            // Save original text of right side of assignment, excluding the
+            // terminating ';'
+            //  in the root of the node for the right-hand-side expression.
+            RHSExprNode.fFirstPos = startExprNode.fFirstPos;
+            RHSExprNode.fLastPos = fScanIndex;
+            // fRB.fRules.extractBetween(RHSExprNode.fFirstPos,
+            // RHSExprNode.fLastPos, RHSExprNode.fText);
+            RHSExprNode.fText = fRB.fRules.substring(RHSExprNode.fFirstPos,
+                    RHSExprNode.fLastPos);
+
+            // Expression parse tree becomes l. child of the $variable reference
+            // node.
+            varRefNode.fLeftChild = RHSExprNode;
+            RHSExprNode.fParent = varRefNode;
+
+            // Make a symbol table entry for the $variableRef node.
+            fSymbolTable.addEntry(varRefNode.fText, varRefNode);
+
+            // Clean up the stack.
+            fNodeStackPtr -= 3;
+            break;
+        }
+
+        case RBBIRuleParseTable.doEndOfRule: {
+            fixOpStack(RBBINode.precStart); // Terminate expression, leaves
+                                            // expression
+
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("rtree") >= 0) {
+                printNodeStack("end of rule");
+            }
+            Assert.assrt(fNodeStackPtr == 1);
+
+            // If this rule includes a look-ahead '/', add a endMark node to the
+            //   expression tree.
+            if (fLookAheadRule) {
+                RBBINode thisRule = fNodeStack[fNodeStackPtr];
+                RBBINode endNode = pushNewNode(RBBINode.endMark);
+                RBBINode catNode = pushNewNode(RBBINode.opCat);
+                fNodeStackPtr -= 2;
+                catNode.fLeftChild = thisRule;
+                catNode.fRightChild = endNode;
+                fNodeStack[fNodeStackPtr] = catNode;
+                endNode.fVal = fRuleNum;
+                endNode.fLookAheadEnd = true;
+            }
+
+            // All rule expressions are ORed together.
+            // The ';' that terminates an expression really just functions as a
+            // '|' with
+            //   a low operator prededence.
+            //
+            // Each of the four sets of rules are collected separately.
+            //  (forward, reverse, safe_forward, safe_reverse)
+            //  OR this rule into the appropriate group of them.
+            //
+
+            int destRules = (fReverseRule ? RBBIRuleBuilder.fReverseTree : fRB.fDefaultTree);
+
+            if (fRB.fTreeRoots[destRules] != null) {
+                // This is not the first rule encounted.
+                // OR previous stuff (from *destRules)
+                // with the current rule expression (on the Node Stack)
+                //  with the resulting OR expression going to *destRules
+                //
+                RBBINode thisRule = fNodeStack[fNodeStackPtr];
+                RBBINode prevRules = fRB.fTreeRoots[destRules];
+                RBBINode orNode = pushNewNode(RBBINode.opOr);
+                orNode.fLeftChild = prevRules;
+                prevRules.fParent = orNode;
+                orNode.fRightChild = thisRule;
+                thisRule.fParent = orNode;
+                fRB.fTreeRoots[destRules] = orNode;
+            } else {
+                // This is the first rule encountered (for this direction).
+                // Just move its parse tree from the stack to *destRules.
+                fRB.fTreeRoots[destRules] = fNodeStack[fNodeStackPtr];
+            }
+            fReverseRule = false; // in preparation for the next rule.
+            fLookAheadRule = false;
+            fNodeStackPtr = 0;
+        }
+            break;
+
+        case RBBIRuleParseTable.doRuleError:
+            error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doVariableNameExpectedErr:
+            error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+            break;
+
+        //
+        //  Unary operands + ? *
+        //    These all appear after the operand to which they apply.
+        //    When we hit one, the operand (may be a whole sub expression)
+        //    will be on the top of the stack.
+        //    Unary Operator becomes TOS, with the old TOS as its one child.
+        case RBBIRuleParseTable.doUnaryOpPlus: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode plusNode = pushNewNode(RBBINode.opPlus);
+            plusNode.fLeftChild = operandNode;
+            operandNode.fParent = plusNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doUnaryOpQuestion: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode qNode = pushNewNode(RBBINode.opQuestion);
+            qNode.fLeftChild = operandNode;
+            operandNode.fParent = qNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doUnaryOpStar: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode starNode = pushNewNode(RBBINode.opStar);
+            starNode.fLeftChild = operandNode;
+            operandNode.fParent = starNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doRuleChar:
+        // A "Rule Character" is any single character that is a literal part
+        // of the regular expression. Like a, b and c in the expression "(abc*)
+        // | [:L:]"
+        // These are pretty uncommon in break rules; the terms are more commonly
+        //  sets. To keep things uniform, treat these characters like as
+        // sets that just happen to contain only one character.
+        {
+            n = pushNewNode(RBBINode.setRef);
+            String s = (new StringBuffer().append((char) fC.fChar)).toString();
+            findSetFor(s, n, null);
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+        }
+
+        case RBBIRuleParseTable.doDotAny:
+        // scanned a ".", meaning match any single character.
+        {
+            n = pushNewNode(RBBINode.setRef);
+            findSetFor(kAny, n, null);
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+        }
+
+        case RBBIRuleParseTable.doSlash:
+            // Scanned a '/', which identifies a look-ahead break position in a
+            // rule.
+            n = pushNewNode(RBBINode.lookAhead);
+            n.fVal = fRuleNum;
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            fLookAheadRule = true;
+            break;
+
+        case RBBIRuleParseTable.doStartTagValue:
+            // Scanned a '{', the opening delimiter for a tag value within a
+            // rule.
+            n = pushNewNode(RBBINode.tag);
+            n.fVal = 0;
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            break;
+
+        case RBBIRuleParseTable.doTagDigit:
+        // Just scanned a decimal digit that's part of a tag value
+        {
+            n = fNodeStack[fNodeStackPtr];
+            int v = UCharacter.digit((char) fC.fChar, 10);
+            n.fVal = n.fVal * 10 + v;
+            break;
+        }
+
+        case RBBIRuleParseTable.doTagValue:
+            n = fNodeStack[fNodeStackPtr];
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+
+        case RBBIRuleParseTable.doTagExpectedError:
+            error(RBBIRuleBuilder.U_BRK_MALFORMED_RULE_TAG);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doOptionStart:
+            // Scanning a !!option. At the start of string.
+            fOptionStart = fScanIndex;
+            break;
+
+        case RBBIRuleParseTable.doOptionEnd: {
+            String opt = fRB.fRules.substring(fOptionStart, fScanIndex);
+            if (opt.equals("chain")) {
+                fRB.fChainRules = true;
+            } else if (opt.equals("LBCMNoChain")) {
+                fRB.fLBCMNoChain = true;
+            } else if (opt.equals("forward")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fForwardTree;
+            } else if (opt.equals("reverse")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fReverseTree;
+            } else if (opt.equals("safe_forward")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fSafeFwdTree;
+            } else if (opt.equals("safe_reverse")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fSafeRevTree;
+            } else if (opt.equals("lookAheadHardBreak")) {
+                fRB.fLookAheadHardBreak = true;
+            } else {
+                error(RBBIRuleBuilder.U_BRK_UNRECOGNIZED_OPTION);
+            }
+            break;
+        }
+
+        case RBBIRuleParseTable.doReverseDir:
+            fReverseRule = true;
+            break;
+
+        case RBBIRuleParseTable.doStartVariableName:
+            n = pushNewNode(RBBINode.varRef);
+            n.fFirstPos = fScanIndex;
+            break;
+
+        case RBBIRuleParseTable.doEndVariableName:
+            n = fNodeStack[fNodeStackPtr];
+            if (n == null || n.fType != RBBINode.varRef) {
+                error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                break;
+            }
+            n.fLastPos = fScanIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos + 1, n.fLastPos);
+            // Look the newly scanned name up in the symbol table
+            //   If there's an entry, set the l. child of the var ref to the
+            // replacement expression.
+            //   (We also pass through here when scanning assignments, but no harm
+            // is done, other
+            //    than a slight wasted effort that seems hard to avoid. Lookup will
+            // be null)
+            n.fLeftChild = fSymbolTable.lookupNode(n.fText);
+            break;
+
+        case RBBIRuleParseTable.doCheckVarDef:
+            n = fNodeStack[fNodeStackPtr];
+            if (n.fLeftChild == null) {
+                error(RBBIRuleBuilder.U_BRK_UNDEFINED_VARIABLE);
+                returnVal = false;
+            }
+            break;
+
+        case RBBIRuleParseTable.doExprFinished:
+            break;
+
+        case RBBIRuleParseTable.doRuleErrorAssignExpr:
+            error(RBBIRuleBuilder.U_BRK_ASSIGN_ERROR);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doExit:
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doScanUnicodeSet:
+            scanSet();
+            break;
+
+        default:
+            error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+            returnVal = false;
+            break;
+        }
+        return returnVal;
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Error Throw and IllegalArgumentException in response to a rule parse
+    // error.
+    //
+    //----------------------------------------------------------------------------------------
+    void error(int e) {
+        String s = "Error " + e + " at line " + fLineNum + " column "
+                + fCharNum;
+        IllegalArgumentException ex = new IllegalArgumentException(s);
+        throw ex;
+
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  fixOpStack The parse stack holds partially assembled chunks of the parse
+    // tree.
+    //               An entry on the stack may be as small as a single setRef node,
+    //               or as large as the parse tree
+    //               for an entire expression (this will be the one item left on the stack
+    //               when the parsing of an RBBI rule completes.
+    //
+    //               This function is called when a binary operator is encountered.
+    //               It looks back up the stack for operators that are not yet associated
+    //               with a right operand, and if the precedence of the stacked operator >=
+    //               the precedence of the current operator, binds the operand left,
+    //               to the previously encountered operator.
+    //
+    //----------------------------------------------------------------------------------------
+    void fixOpStack(int p) {
+        RBBINode n;
+        // printNodeStack("entering fixOpStack()");
+        for (;;) {
+            n = fNodeStack[fNodeStackPtr - 1]; // an operator node
+            if (n.fPrecedence == 0) {
+                System.out.print("RBBIRuleScanner.fixOpStack, bad operator node");
+                error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                return;
+            }
+
+            if (n.fPrecedence < p || n.fPrecedence <= RBBINode.precLParen) {
+                // The most recent operand goes with the current operator,
+                //   not with the previously stacked one.
+                break;
+            }
+            // Stack operator is a binary op ( '|' or concatenation)
+            //   TOS operand becomes right child of this operator.
+            //   Resulting subexpression becomes the TOS operand.
+            n.fRightChild = fNodeStack[fNodeStackPtr];
+            fNodeStack[fNodeStackPtr].fParent = n;
+            fNodeStackPtr--;
+            // printNodeStack("looping in fixOpStack() ");
+        }
+
+        if (p <= RBBINode.precLParen) {
+            // Scan is at a right paren or end of expression.
+            //  The scanned item must match the stack, or else there was an
+            // error.
+            //  Discard the left paren (or start expr) node from the stack,
+            //  leaving the completed (sub)expression as TOS.
+            if (n.fPrecedence != p) {
+                // Right paren encountered matched start of expression node, or
+                // end of expression matched with a left paren node.
+                error(RBBIRuleBuilder.U_BRK_MISMATCHED_PAREN);
+            }
+            fNodeStack[fNodeStackPtr - 1] = fNodeStack[fNodeStackPtr];
+            fNodeStackPtr--;
+            // Delete the now-discarded LParen or Start node.
+            // delete n;
+        }
+        // printNodeStack("leaving fixOpStack()");
+    }
+
+    //----------------------------------------------------------------------------
+    //
+    //       RBBISetTableEl is an entry in the hash table of UnicodeSets that have
+    //                        been encountered. The val Node will be of nodetype uset
+    //                        and contain pointers to the actual UnicodeSets.
+    //                        The Key is the source string for initializing the set.
+    //
+    //                        The hash table is used to avoid creating duplicate
+    //                        unnamed (not $var references) UnicodeSets.
+    //
+    //----------------------------------------------------------------------------
+    static class RBBISetTableEl {
+        String key;
+
+        RBBINode val;
+    }
+
+
+    //----------------------------------------------------------------------------------------
+    //
+    //   findSetFor given a String,
+    //                  - find the corresponding Unicode Set (uset node)
+    //                         (create one if necessary)
+    //                  - Set fLeftChild of the caller's node (should be a setRef node)
+    //                         to the uset node
+    //                 Maintain a hash table of uset nodes, so the same one is always used
+    //                    for the same string.
+    //                 If a "to adopt" set is provided and we haven't seen this key before,
+    //                    add the provided set to the hash table.
+    //                 If the string is one (32 bit) char in length, the set contains
+    //                    just one element which is the char in question.
+    //                 If the string is "any", return a set containing all chars.
+    //
+    //----------------------------------------------------------------------------------------
+    void findSetFor(String s, RBBINode node, UnicodeSet setToAdopt) {
+
+        RBBISetTableEl el;
+
+        // First check whether we've already cached a set for this string.
+        // If so, just use the cached set in the new node.
+        //   delete any set provided by the caller, since we own it.
+        el = (RBBISetTableEl) fSetTable.get(s);
+        if (el != null) {
+            node.fLeftChild = el.val;
+            Assert.assrt(node.fLeftChild.fType == RBBINode.uset);
+            return;
+        }
+
+        // Haven't seen this set before.
+        // If the caller didn't provide us with a prebuilt set,
+        //   create a new UnicodeSet now.
+        if (setToAdopt == null) {
+            if (s.equals(kAny)) {
+                setToAdopt = new UnicodeSet(0x000000, 0x10ffff);
+            } else {
+                int c;
+                c = UTF16.charAt(s, 0);
+                setToAdopt = new UnicodeSet(c, c);
+            }
+        }
+
+        //
+        // Make a new uset node to refer to this UnicodeSet
+        // This new uset node becomes the child of the caller's setReference
+        // node.
+        //
+        RBBINode usetNode = new RBBINode(RBBINode.uset);
+        usetNode.fInputSet = setToAdopt;
+        usetNode.fParent = node;
+        node.fLeftChild = usetNode;
+        usetNode.fText = s;
+
+        //
+        // Add the new uset node to the list of all uset nodes.
+        //
+        fRB.fUSetNodes.add(usetNode);
+
+        //
+        // Add the new set to the set hash table.
+        //
+        el = new RBBISetTableEl();
+        el.key = s;
+        el.val = usetNode;
+        fSetTable.put(el.key, el);
+
+        return;
+    }
+
+    //
+    //  Assorted Unicode character constants.
+    //     Numeric because there is no portable way to enter them as literals.
+    //     (Think EBCDIC).
+    //
+    static final int chNEL = 0x85; //    NEL newline variant
+
+    static final int chLS = 0x2028; //    Unicode Line Separator
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  stripRules    Return a rules string without unnecessary
+    //                characters.
+    //
+    //----------------------------------------------------------------------------------------
+    static String stripRules(String rules) {
+        StringBuffer strippedRules = new StringBuffer();
+        int rulesLength = rules.length();
+        for (int idx = 0; idx < rulesLength;) {
+            char ch = rules.charAt(idx++);
+            if (ch == '#') {
+                while (idx < rulesLength
+                        && ch != '\r' && ch != '\n' && ch != chNEL) {
+                    ch = rules.charAt(idx++);
+                }
+            }
+            if (!UCharacter.isISOControl(ch)) {
+                strippedRules.append(ch);
+            }
+        }
+        return strippedRules.toString();
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  nextCharLL    Low Level Next Char from rule input source.
+    //                Get a char from the input character iterator,
+    //                keep track of input position for error reporting.
+    //
+    //----------------------------------------------------------------------------------------
+    int nextCharLL() {
+        int ch;
+
+        if (fNextIndex >= fRB.fRules.length()) {
+            return -1;
+        }
+        ch = UTF16.charAt(fRB.fRules, fNextIndex);
+        fNextIndex = UTF16.moveCodePointOffset(fRB.fRules, fNextIndex, 1);
+
+        if (ch == '\r' ||
+            ch == chNEL ||
+            ch == chLS ||
+            ch == '\n' && fLastChar != '\r') {
+            // Character is starting a new line.  Bump up the line number, and
+            //  reset the column to 0.
+            fLineNum++;
+            fCharNum = 0;
+            if (fQuoteMode) {
+                error(RBBIRuleBuilder.U_BRK_NEW_LINE_IN_QUOTED_STRING);
+                fQuoteMode = false;
+            }
+        } else {
+            // Character is not starting a new line.  Except in the case of a
+            //   LF following a CR, increment the column position.
+            if (ch != '\n') {
+                fCharNum++;
+            }
+        }
+        fLastChar = ch;
+        return ch;
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //   nextChar     for rules scanning.  At this level, we handle stripping
+    //                out comments and processing backslash character escapes.
+    //                The rest of the rules grammar is handled at the next level up.
+    //
+    //---------------------------------------------------------------------------------
+    void nextChar(RBBIRuleChar c) {
+
+        // Unicode Character constants needed for the processing done by nextChar(),
+        //   in hex because literals wont work on EBCDIC machines.
+
+        fScanIndex = fNextIndex;
+        c.fChar = nextCharLL();
+        c.fEscaped = false;
+
+        //
+        //  check for '' sequence.
+        //  These are recognized in all contexts, whether in quoted text or not.
+        //
+        if (c.fChar == '\'') {
+            if (UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
+                c.fChar = nextCharLL(); // get nextChar officially so character counts
+                c.fEscaped = true; //   stay correct.
+            } else {
+                // Single quote, by itself.
+                //   Toggle quoting mode.
+                //   Return either '('  or ')', because quotes cause a grouping of the quoted text.
+                fQuoteMode = !fQuoteMode;
+                if (fQuoteMode == true) {
+                    c.fChar = '(';
+                } else {
+                    c.fChar = ')';
+                }
+                c.fEscaped = false; // The paren that we return is not escaped.
+                return;
+            }
+        }
+
+        if (fQuoteMode) {
+            c.fEscaped = true;
+        } else {
+            // We are not in a 'quoted region' of the source.
+            //
+            if (c.fChar == '#') {
+                // Start of a comment.  Consume the rest of it.
+                //  The new-line char that terminates the comment is always returned.
+                //  It will be treated as white-space, and serves to break up anything
+                //    that might otherwise incorrectly clump together with a comment in
+                //    the middle (a variable name, for example.)
+                for (;;) {
+                    c.fChar = nextCharLL();
+                    if (c.fChar == (int) -1 || // EOF
+                        c.fChar == '\r' ||
+                        c.fChar == '\n' ||
+                        c.fChar == chNEL ||
+                        c.fChar == chLS)
+                    {
+                        break;
+                    }
+                }
+            }
+            if (c.fChar == (int) -1) {
+                return;
+            }
+
+            //
+            //  check for backslash escaped characters.
+            //  Use String.unescapeAt() to handle them.
+            //
+            if (c.fChar == '\\') {
+                c.fEscaped = true;
+                int[] unescapeIndex = new int[1];
+                unescapeIndex[0] = fNextIndex;
+                c.fChar = Utility.unescapeAt(fRB.fRules, unescapeIndex);
+                if (unescapeIndex[0] == fNextIndex) {
+                    error(RBBIRuleBuilder.U_BRK_HEX_DIGITS_EXPECTED);
+                }
+
+                fCharNum += unescapeIndex[0] - fNextIndex;
+                fNextIndex = unescapeIndex[0];
+            }
+        }
+        // putc(c.fChar, stdout);
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  Parse RBBI rules.   The state machine for rules parsing is here.
+    //                      The state tables are hand-written in the file rbbirpt.txt,
+    //                      and converted to the form used here by a perl
+    //                      script rbbicst.pl
+    //
+    //---------------------------------------------------------------------------------
+    void parse() {
+        int state;
+        RBBIRuleParseTable.RBBIRuleTableElement tableEl;
+
+        state = 1;
+        nextChar(fC);
+        //
+        // Main loop for the rule parsing state machine.
+        //   Runs once per state transition.
+        //   Each time through optionally performs, depending on the state table,
+        //      - an advance to the the next input char
+        //      - an action to be performed.
+        //      - pushing or popping a state to/from the local state return stack.
+        //
+        for (;;) {
+            // Quit if state == 0.  This is the normal way to exit the state machine.
+            //
+            if (state == 0) {
+                break;
+            }
+
+            // Find the state table element that matches the input char from the rule, or the
+            //    class of the input character.  Start with the first table row for this
+            //    state, then linearly scan forward until we find a row that matches the
+            //    character.  The last row for each state always matches all characters, so
+            //    the search will stop there, if not before.
+            //
+            tableEl = RBBIRuleParseTable.gRuleParseStateTable[state];
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                System.out.println("char, line, col = (\'" + (char) fC.fChar
+                        + "\', " + fLineNum + ", " + fCharNum + "    state = "
+                        + tableEl.fStateName);
+            }
+
+            for (int tableRow = state;; tableRow++) { // loop over the state table rows associated with this state.
+                tableEl = RBBIRuleParseTable.gRuleParseStateTable[tableRow];
+                if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                    System.out.print(".");
+                }
+                if (tableEl.fCharClass < 127 && fC.fEscaped == false
+                        && tableEl.fCharClass == fC.fChar) {
+                    // Table row specified an individual character, not a set, and
+                    //   the input character is not escaped, and
+                    //   the input character matched it.
+                    break;
+                }
+                if (tableEl.fCharClass == 255) {
+                    // Table row specified default, match anything character class.
+                    break;
+                }
+                if (tableEl.fCharClass == 254 && fC.fEscaped) {
+                    // Table row specified "escaped" and the char was escaped.
+                    break;
+                }
+                if (tableEl.fCharClass == 253 && fC.fEscaped
+                        && (fC.fChar == 0x50 || fC.fChar == 0x70)) {
+                    // Table row specified "escaped P" and the char is either 'p' or 'P'.
+                    break;
+                }
+                if (tableEl.fCharClass == 252 && fC.fChar == (int) -1) {
+                    // Table row specified eof and we hit eof on the input.
+                    break;
+                }
+
+                if (tableEl.fCharClass >= 128 && tableEl.fCharClass < 240 && // Table specs a char class &&
+                        fC.fEscaped == false && //   char is not escaped &&
+                        fC.fChar != (int) -1) { //   char is not EOF
+                    UnicodeSet uniset = fRuleSets[tableEl.fCharClass - 128];
+                    if (uniset.contains(fC.fChar)) {
+                        // Table row specified a character class, or set of characters,
+                        //   and the current char matches it.
+                        break;
+                    }
+                }
+            }
+
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                System.out.println("");
+            }
+            //
+            // We've found the row of the state table that matches the current input
+            //   character from the rules string.
+            // Perform any action specified  by this row in the state table.
+            if (doParseActions(tableEl.fAction) == false) {
+                // Break out of the state machine loop if the
+                //   the action signalled some kind of error, or
+                //   the action was to exit, occurs on normal end-of-rules-input.
+                break;
+            }
+
+            if (tableEl.fPushState != 0) {
+                fStackPtr++;
+                if (fStackPtr >= kStackSize) {
+                    System.out.println("RBBIRuleScanner.parse() - state stack overflow.");
+                    error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                }
+                fStack[fStackPtr] = tableEl.fPushState;
+            }
+
+            if (tableEl.fNextChar) {
+                nextChar(fC);
+            }
+
+            // Get the next state from the table entry, or from the
+            //   state stack if the next state was specified as "pop".
+            if (tableEl.fNextState != 255) {
+                state = tableEl.fNextState;
+            } else {
+                state = fStack[fStackPtr];
+                fStackPtr--;
+                if (fStackPtr < 0) {
+                    System.out.println("RBBIRuleScanner.parse() - state stack underflow.");
+                    error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                }
+            }
+
+        }
+
+        //
+        // If there were NO user specified reverse rules, set up the equivalent of ".*;"
+        //
+        if (fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree] == null) {
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree] = pushNewNode(RBBINode.opStar);
+            RBBINode operand = pushNewNode(RBBINode.setRef);
+            findSetFor(kAny, operand, null);
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree].fLeftChild = operand;
+            operand.fParent = fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree];
+            fNodeStackPtr -= 2;
+        }
+
+        //
+        // Parsing of the input RBBI rules is complete.
+        // We now have a parse tree for the rule expressions
+        // and a list of all UnicodeSets that are referenced.
+        //
+        if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("symbols") >= 0) {
+            fSymbolTable.rbbiSymtablePrint();
+        }
+        if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("ptree") >= 0) {
+            System.out.println("Completed Forward Rules Parse Tree...");
+            fRB.fTreeRoots[RBBIRuleBuilder.fForwardTree].printTree(true);
+            System.out.println("\nCompleted Reverse Rules Parse Tree...");
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree].printTree(true);
+            System.out.println("\nCompleted Safe Point Forward Rules Parse Tree...");
+            if (fRB.fTreeRoots[RBBIRuleBuilder.fSafeFwdTree] == null) {
+                System.out.println("  -- null -- ");
+            } else {
+                fRB.fTreeRoots[RBBIRuleBuilder.fSafeFwdTree].printTree(true);
+            }
+            System.out.println("\nCompleted Safe Point Reverse Rules Parse Tree...");
+            if (fRB.fTreeRoots[RBBIRuleBuilder.fSafeRevTree] == null) {
+                System.out.println("  -- null -- ");
+            } else {
+                fRB.fTreeRoots[RBBIRuleBuilder.fSafeRevTree].printTree(true);
+            }
+        }
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  printNodeStack     for debugging...
+    //
+    //---------------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printNodeStack(String title) {
+        int i;
+        System.out.println(title + ".  Dumping node stack...\n");
+        for (i = fNodeStackPtr; i > 0; i--) {
+            fNodeStack[i].printTree(true);
+        }
+    }
+    ///CLOVER:ON
+
+    //---------------------------------------------------------------------------------
+    //
+    //  pushNewNode   create a new RBBINode of the specified type and push it
+    //                onto the stack of nodes.
+    //
+    //---------------------------------------------------------------------------------
+    RBBINode pushNewNode(int nodeType) {
+        fNodeStackPtr++;
+        if (fNodeStackPtr >= kStackSize) {
+            System.out.println("RBBIRuleScanner.pushNewNode - stack overflow.");
+            error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+        }
+        fNodeStack[fNodeStackPtr] = new RBBINode(nodeType);
+        return fNodeStack[fNodeStackPtr];
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  scanSet    Construct a UnicodeSet from the text at the current scan
+    //             position.  Advance the scan position to the first character
+    //             after the set.
+    //
+    //             A new RBBI setref node referring to the set is pushed onto the node
+    //             stack.
+    //
+    //             The scan position is normally under the control of the state machine
+    //             that controls rule parsing.  UnicodeSets, however, are parsed by
+    //             the UnicodeSet constructor, not by the RBBI rule parser.
+    //
+    //---------------------------------------------------------------------------------
+    void scanSet() {
+        UnicodeSet uset = null;
+        int startPos;
+        ParsePosition pos = new ParsePosition(fScanIndex);
+        int i;
+
+        startPos = fScanIndex;
+        try {
+            uset = new UnicodeSet(fRB.fRules, pos, fSymbolTable, UnicodeSet.IGNORE_SPACE);
+        } catch (Exception e) { // TODO:  catch fewer exception types.
+            // Repackage UnicodeSet errors as RBBI rule builder errors, with location info.
+            error(RBBIRuleBuilder.U_BRK_MALFORMED_SET);
+        }
+
+        // Verify that the set contains at least one code point.
+        //
+        if (uset.isEmpty()) {
+            // This set is empty.
+            //  Make it an error, because it almost certainly is not what the user wanted.
+            //  Also, avoids having to think about corner cases in the tree manipulation code
+            //   that occurs later on.
+            //  TODO:  this shouldn't be an error; it does happen.
+            error(RBBIRuleBuilder.U_BRK_RULE_EMPTY_SET);
+        }
+
+        // Advance the RBBI parse postion over the UnicodeSet pattern.
+        //   Don't just set fScanIndex because the line/char positions maintained
+        //   for error reporting would be thrown off.
+        i = pos.getIndex();
+        for (;;) {
+            if (fNextIndex >= i) {
+                break;
+            }
+            nextCharLL();
+        }
+
+        RBBINode n;
+
+        n = pushNewNode(RBBINode.setRef);
+        n.fFirstPos = startPos;
+        n.fLastPos = fNextIndex;
+        n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+        //  findSetFor() serves several purposes here:
+        //     - Adopts storage for the UnicodeSet, will be responsible for deleting.
+        //     - Mantains collection of all sets in use, needed later for establishing
+        //          character categories for run time engine.
+        //     - Eliminates mulitiple instances of the same set.
+        //     - Creates a new uset node if necessary (if this isn't a duplicate.)
+        findSetFor(n.fText, n, uset);
+    }
+
+}
+
diff --git a/src/com/ibm/icu/text/RBBISetBuilder.java b/src/com/ibm/icu/text/RBBISetBuilder.java
new file mode 100644
index 0000000..3925e9d
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBISetBuilder.java
@@ -0,0 +1,571 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006,
+ * International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.io.OutputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.IntTrieBuilder;
+
+//
+//  RBBISetBuilder   Handles processing of Unicode Sets from RBBI rules
+//                   (part of the rule building process.)
+//
+//      Starting with the rules parse tree from the scanner,
+//
+//                   -  Enumerate the set of UnicodeSets that are referenced
+//                      by the RBBI rules.
+//                   -  compute a set of non-overlapping character ranges
+//                      with all characters within a range belonging to the same
+//                      set of input uniocde sets.
+//                   -  Derive a set of non-overlapping UnicodeSet (like things)
+//                      that will correspond to columns in the state table for
+//                      the RBBI execution engine.  All characters within one
+//                      of these sets belong to the same set of the original
+//                      UnicodeSets from the user's rules.
+//                   -  construct the trie table that maps input characters
+//                      to the index of the matching non-overlapping set of set from
+//                      the previous step.
+//
+class RBBISetBuilder {
+    static class RangeDescriptor  {
+           int                fStartChar;      // Start of range, unicode 32 bit value.
+           int                fEndChar;        // End of range, unicode 32 bit value.
+           int                fNum;            // runtime-mapped input value for this range.
+           List               fIncludesSets;   // vector of the the original
+                                                //   Unicode sets that include this range.
+                                                //    (Contains ptrs to uset nodes)
+            RangeDescriptor   fNext;           // Next RangeDescriptor in the linked list.
+
+            RangeDescriptor() {
+                fIncludesSets = new ArrayList();
+            }
+            
+            RangeDescriptor(RangeDescriptor other) {
+                fStartChar = other.fStartChar;
+                fEndChar   = other.fEndChar;
+                fNum       = other.fNum;
+                fIncludesSets = new ArrayList(other.fIncludesSets);
+            }
+ 
+            //-------------------------------------------------------------------------------------
+            //
+            //          RangeDesriptor::split()
+            //
+            //-------------------------------------------------------------------------------------
+            void split(int where) {
+                Assert.assrt(where>fStartChar && where<=fEndChar);
+                RangeDescriptor nr = new RangeDescriptor(this);
+ 
+                //  RangeDescriptor copy constructor copies all fields.
+                //  Only need to update those that are different after the split.
+                nr.fStartChar = where;
+                this.fEndChar = where-1;
+                nr.fNext      = this.fNext;
+                this.fNext    = nr;
+                
+                // TODO:  fIncludesSets is not updated.  Check it out.
+                //         Probably because they haven't been populated yet, 
+                //         but still sloppy.
+            }
+
+            
+            //-------------------------------------------------------------------------------------
+            //
+            //          RangeDescriptor::setDictionaryFlag
+            //
+            //          Character Category Numbers that include characters from
+            //          the original Unicode Set named "dictionary" have bit 14
+            //          set to 1.  The RBBI runtime engine uses this to trigger
+            //          use of the word dictionary.
+            //
+            //          This function looks through the Unicode Sets that it
+            //          (the range) includes, and sets the bit in fNum when
+            //          "dictionary" is among them.
+            //
+            //          TODO:  a faster way would be to find the set node for
+            //          "dictionary" just once, rather than looking it
+            //          up by name every time.
+            //            
+            // -------------------------------------------------------------------------------------
+            void setDictionaryFlag() {
+                int i;
+                
+                for (i=0; i<this.fIncludesSets.size(); i++) {
+                    RBBINode        usetNode    = (RBBINode)fIncludesSets.get(i);
+                    String          setName = "";
+                    RBBINode        setRef = usetNode.fParent;
+                    if (setRef != null) {
+                        RBBINode varRef = setRef.fParent;
+                        if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                            setName = varRef.fText;
+                        }
+                    }
+                    if (setName.equals("dictionary")) {
+                        this.fNum |= 0x4000;
+                        break;
+                    }
+                }
+
+        }
+    }
+
+    
+    RBBIRuleBuilder       fRB;             // The RBBI Rule Compiler that owns us.
+    RangeDescriptor       fRangeList;      // Head of the linked list of RangeDescriptors
+
+    IntTrieBuilder        fTrie;           // The mapping TRIE that is the end result of processing
+    int                  fTrieSize;        //  the Unicode Sets.
+
+    // Groups correspond to character categories -
+    //       groups of ranges that are in the same original UnicodeSets.
+    //       fGroupCount is the index of the last used group.
+    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
+    //       State table column 0 is not used.  Column 1 is for end-of-input.
+    //       column 2 is for group 0.  Funny counting.
+    int                fGroupCount;
+
+    boolean             fSawBOF;
+    
+    
+    //------------------------------------------------------------------------
+    //
+    //       RBBISetBuilder Constructor
+    //
+    //------------------------------------------------------------------------
+    RBBISetBuilder(RBBIRuleBuilder rb)
+    {
+        fRB             = rb;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           build          Build the list of non-overlapping character ranges
+    //                          from the Unicode Sets.
+    //
+    //------------------------------------------------------------------------
+    void build() {
+        RBBINode        usetNode;
+        RangeDescriptor rlRange;
+
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("usets")>=0) {printSets();}
+
+        //  Initialize the process by creating a single range encompassing all characters
+        //  that is in no sets.
+        //
+        fRangeList               = new RangeDescriptor(); 
+        fRangeList.fStartChar    = 0;
+        fRangeList.fEndChar      = 0x10ffff;
+
+        //
+        //  Find the set of non-overlapping ranges of characters
+        //
+            Iterator  ni = fRB.fUSetNodes.iterator();
+            while (ni.hasNext()) {
+                usetNode = (RBBINode)ni.next();
+ 
+                UnicodeSet      inputSet             = usetNode.fInputSet;
+                int            inputSetRangeCount   = inputSet.getRangeCount();
+                int            inputSetRangeIndex   = 0;
+                                 rlRange              = fRangeList;
+
+                for (;;) {
+                    if (inputSetRangeIndex >= inputSetRangeCount) {
+                        break;
+                    }
+                    int      inputSetRangeBegin  = inputSet.getRangeStart(inputSetRangeIndex);
+                    int      inputSetRangeEnd    = inputSet.getRangeEnd(inputSetRangeIndex);
+
+                    // skip over ranges from the range list that are completely
+                //   below the current range from the input unicode set.
+                while (rlRange.fEndChar < inputSetRangeBegin) {
+                    rlRange = rlRange.fNext;
+                }
+
+                // If the start of the range from the range list is before with
+                //   the start of the range from the unicode set, split the range list range
+                //   in two, with one part being before (wholly outside of) the unicode set
+                //   and the other containing the rest.
+                //   Then continue the loop; the post-split current range will then be skipped
+                //     over
+                if (rlRange.fStartChar < inputSetRangeBegin) {
+                    rlRange.split(inputSetRangeBegin);
+                     continue;
+                }
+
+                // Same thing at the end of the ranges...
+                // If the end of the range from the range list doesn't coincide with
+                //   the end of the range from the unicode set, split the range list
+                //   range in two.  The first part of the split range will be
+                //   wholly inside the Unicode set.
+                if (rlRange.fEndChar > inputSetRangeEnd) {
+                    rlRange.split(inputSetRangeEnd+1);
+                 }
+
+                // The current rlRange is now entirely within the UnicodeSet range.
+                // Add this unicode set to the list of sets for this rlRange
+                if (rlRange.fIncludesSets.indexOf(usetNode) == -1) {
+                    rlRange.fIncludesSets.add(usetNode);
+                }
+
+                // Advance over ranges that we are finished with.
+                if (inputSetRangeEnd == rlRange.fEndChar) {
+                    inputSetRangeIndex++;
+                }
+                rlRange = rlRange.fNext;
+            }
+        }
+
+        if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("range")>=0) { printRanges();}
+
+        //
+        //  Group the above ranges, with each group consisting of one or more
+        //    ranges that are in exactly the same set of original UnicodeSets.
+        //    The groups are numbered, and these group numbers are the set of
+        //    input symbols recognized by the run-time state machine.
+        //
+        //    Numbering: # 0  (state table column 0) is unused.
+        //               # 1  is reserved - table column 1 is for end-of-input
+        //               # 2  is reserved - table column 2 is for beginning-in-input
+        //               # 3  is the first range list.
+        //
+        RangeDescriptor rlSearchRange;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            for (rlSearchRange=fRangeList; rlSearchRange != rlRange; rlSearchRange=rlSearchRange.fNext) {
+                if (rlRange.fIncludesSets.equals(rlSearchRange.fIncludesSets)) {
+                    rlRange.fNum = rlSearchRange.fNum;
+                    break;
+                }
+            }
+            if (rlRange.fNum == 0) {
+                fGroupCount ++;
+                rlRange.fNum = fGroupCount+2; 
+                rlRange.setDictionaryFlag();
+                addValToSets(rlRange.fIncludesSets, fGroupCount+2);
+            }
+        }
+
+        // Handle input sets that contain the special string {eof}.
+        //   Column 1 of the state table is reserved for EOF on input.
+        //   Column 2 is reserved for before-the-start-input.
+        //            (This column can be optimized away later if there are no rule
+        //             references to {bof}.)
+        //   Add this column value (1 or 2) to the equivalent expression
+        //     subtree for each UnicodeSet that contains the string {eof}
+        //   Because {bof} and {eof} are not a characters in the normal sense,
+        //   they doesn't affect the computation of ranges or TRIE.
+        
+        String eofString = "eof";
+        String bofString = "bof";
+
+        ni = fRB.fUSetNodes.iterator();
+        while (ni.hasNext()) {
+            usetNode = (RBBINode )ni.next();
+            UnicodeSet      inputSet = usetNode.fInputSet;
+            if (inputSet.contains(eofString)) {
+                addValToSet(usetNode, 1);
+            }
+            if (inputSet.contains(bofString)) {
+                addValToSet(usetNode, 2);
+                fSawBOF = true;
+            }
+        }
+
+
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("rgroup")>=0) {printRangeGroups();}
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("esets")>=0) {printSets();}
+
+
+        //IntTrieBuilder(int aliasdata[], int maxdatalength, 
+        //        int initialvalue, int leadunitvalue, 
+        //        boolean latin1linear)
+        
+        fTrie = new IntTrieBuilder(null,   //   Data array  (utrie will allocate one)
+                                   100000,  //   Max Data Length
+                                   0,       //   Initial value for all code points
+                                   0,       //   Lead Surrogate unit value,
+                                   true);   //   Keep Latin 1 in separately.
+        
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            fTrie.setRange(rlRange.fStartChar, rlRange.fEndChar+1, rlRange.fNum, true);
+        }
+    }
+
+
+
+    //-----------------------------------------------------------------------------------
+    //
+    //   RBBIDataManipulate  A little internal class needed only to wrap of the 
+    //                       getFoldedValue() function needed for Trie table creation.
+    //
+    //-----------------------------------------------------------------------------------
+   class RBBIDataManipulate implements IntTrieBuilder.DataManipulate {
+        public int getFoldedValue(int start, int offset) {
+            int  value;
+            int  limit;
+            boolean [] inBlockZero = new boolean[1];
+            
+            limit = start + 0x400;
+            while(start<limit) {
+                value = fTrie.getValue(start, inBlockZero);
+                if (inBlockZero[0]) {
+                    start += IntTrieBuilder.DATA_BLOCK_LENGTH;  
+                } else if (value != 0) {
+                    return offset | 0x08000;
+                } else {
+                    ++start;
+                }
+            }
+            return 0;
+         }
+    }
+    RBBIDataManipulate dm = new RBBIDataManipulate();
+    
+    //-----------------------------------------------------------------------------------
+    //
+    //          getTrieSize()    Return the size that will be required to serialize the Trie.
+    //
+    //-----------------------------------------------------------------------------------
+    int getTrieSize()  {
+        int size = 0;
+        try {
+            // The trie serialize function returns the size of the data written.
+            //    null output stream says give size only, don't actually write anything.
+            size = fTrie.serialize(null, true, dm );
+        } catch (IOException e) {
+            Assert.assrt (false);
+        }
+        return size;
+    }
+
+
+    //-----------------------------------------------------------------------------------
+    //
+    //          serializeTrie()   Write the serialized trie to an output stream
+    //
+    //-----------------------------------------------------------------------------------
+    void serializeTrie(OutputStream os) throws IOException {
+        fTrie.serialize(os, true, dm );
+   }
+
+    //------------------------------------------------------------------------
+    //
+    //      addValToSets     Add a runtime-mapped input value to each uset from a
+    //      list of uset nodes. (val corresponds to a state table column.)
+    //      For each of the original Unicode sets - which correspond
+    //      directly to uset nodes - a logically equivalent expression
+    //      is constructed in terms of the remapped runtime input
+    //      symbol set.  This function adds one runtime input symbol to
+    //      a list of sets.
+    //
+    //      The "logically equivalent expression" is the tree for an
+    //      or-ing together of all of the symbols that go into the set.
+    //
+    //------------------------------------------------------------------------
+    void  addValToSets(List sets, int val) {
+        int       ix;
+
+        for (ix=0; ix<sets.size(); ix++) {
+            RBBINode usetNode = (RBBINode )sets.get(ix);
+            addValToSet(usetNode, val);
+        }
+    }
+
+    void  addValToSet(RBBINode usetNode, int val) {
+        RBBINode leafNode = new RBBINode(RBBINode.leafChar);
+        leafNode.fVal = val;
+        if (usetNode.fLeftChild == null) {
+            usetNode.fLeftChild = leafNode;
+            leafNode.fParent    = usetNode;
+        } else {
+            // There are already input symbols present for this set.
+            // Set up an OR node, with the previous stuff as the left child
+            //   and the new value as the right child.
+            RBBINode orNode = new RBBINode(RBBINode.opOr);
+            orNode.fLeftChild  = usetNode.fLeftChild;
+            orNode.fRightChild = leafNode;
+            orNode.fLeftChild.fParent  = orNode;
+            orNode.fRightChild.fParent = orNode;
+            usetNode.fLeftChild = orNode;
+            orNode.fParent = usetNode;
+        }
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           getNumCharCategories
+    //
+    //------------------------------------------------------------------------
+    int  getNumCharCategories()  {
+        return fGroupCount + 3;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           sawBOF
+    //
+    //------------------------------------------------------------------------
+    boolean  sawBOF()  {
+        return fSawBOF;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           getFirstChar      Given a runtime RBBI character category, find
+    //                             the first UChar32 that is in the set of chars 
+    //                             in the category.
+    //------------------------------------------------------------------------
+    int  getFirstChar(int category)  {
+        RangeDescriptor   rlRange;
+        int            retVal = -1;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fNum == category) {
+                retVal = rlRange.fStartChar;
+                break;
+            }
+        }
+        return retVal;
+    }
+
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printRanges        A debugging function.
+    //                              dump out all of the range definitions.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printRanges() {
+        RangeDescriptor       rlRange;
+        int                    i;
+
+        System.out.print("\n\n Nonoverlapping Ranges ...\n");
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            System.out.print(" " + rlRange.fNum + "   " + (int)rlRange.fStartChar + "-" + (int)rlRange.fEndChar);
+
+            for (i=0; i<rlRange.fIncludesSets.size(); i++) {
+                RBBINode       usetNode    = (RBBINode )rlRange.fIncludesSets.get(i);
+                String         setName = "anon";
+                RBBINode       setRef = usetNode.fParent;
+                if (setRef != null) {
+                    RBBINode varRef = setRef.fParent;
+                    if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                        setName = varRef.fText;
+                    }
+                }
+                System.out.print(setName); System.out.print("  ");
+            }
+            System.out.println("");
+        }
+    }
+    ///CLOVER:ON
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printRangeGroups     A debugging function.
+    //                                dump out all of the range groups.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printRangeGroups() {
+        RangeDescriptor       rlRange;
+        RangeDescriptor       tRange;
+        int                    i;
+        int                    lastPrintedGroupNum = 0;
+
+        System.out.print("\nRanges grouped by Unicode Set Membership...\n");
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            int groupNum = rlRange.fNum & 0xbfff;
+            if (groupNum > lastPrintedGroupNum) {
+                lastPrintedGroupNum = groupNum;
+                if (groupNum<10) {System.out.print(" ");}
+                System.out.print(groupNum + " ");
+
+                if ((rlRange.fNum & 0x4000) != 0) { System.out.print(" <DICT> ");}
+
+                for (i=0; i<rlRange.fIncludesSets.size(); i++) {
+                    RBBINode       usetNode    = (RBBINode )rlRange.fIncludesSets.get(i);
+                    String         setName = "anon";
+                    RBBINode       setRef = usetNode.fParent;
+                    if (setRef != null) {
+                        RBBINode varRef = setRef.fParent;
+                        if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                            setName = varRef.fText;
+                        }
+                    }
+                    System.out.print(setName); System.out.print(" ");
+                }
+
+                i = 0;
+                for (tRange = rlRange; tRange != null; tRange = tRange.fNext) {
+                    if (tRange.fNum == rlRange.fNum) {
+                        if (i++ % 5 == 0) {
+                            System.out.print("\n    ");
+                        }
+                        RBBINode.printHex((int)tRange.fStartChar, -1);
+                        System.out.print("-");
+                        RBBINode.printHex((int)tRange.fEndChar, 0);
+                    }
+                }
+                System.out.print("\n");
+            }
+        }
+        System.out.print("\n");
+    }
+    ///CLOVER:ON
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printSets          A debugging function.
+    //                              dump out all of the set definitions.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printSets() {
+        int                   i;
+        System.out.print("\n\nUnicode Sets List\n------------------\n");
+        for (i=0; i<fRB.fUSetNodes.size(); i++) {
+            RBBINode        usetNode;
+            RBBINode        setRef;
+            RBBINode        varRef;
+            String          setName;
+
+            usetNode = (RBBINode )fRB.fUSetNodes.get(i);
+
+            //System.out.print(" " + i + "   ");
+            RBBINode.printInt(2, i);
+            setName = "anonymous";
+            setRef = usetNode.fParent;
+            if (setRef != null) {
+                varRef = setRef.fParent;
+                if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                    setName = varRef.fText;
+                }
+            }
+            System.out.print("  " + setName);
+            System.out.print("   ");
+            System.out.print(usetNode.fText);
+            System.out.print("\n");
+            if (usetNode.fLeftChild != null) {
+                usetNode.fLeftChild.printTree(true);
+            }
+        }
+        System.out.print("\n");
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/text/RBBISymbolTable.java b/src/com/ibm/icu/text/RBBISymbolTable.java
new file mode 100644
index 0000000..bea3b3e
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBISymbolTable.java
@@ -0,0 +1,204 @@
+/*
+***************************************************************************
+*   Copyright (C) 2002-2006 International Business Machines Corporation   *
+*   and others. All rights reserved.                                      *
+***************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.HashMap;
+import java.util.Collection;
+
+import java.text.ParsePosition;
+import com.ibm.icu.lang.UCharacter;
+
+class RBBISymbolTable implements SymbolTable{
+    
+    String               fRules;
+    HashMap              fHashTable;
+    RBBIRuleScanner      fRuleScanner;
+
+    // These next two fields are part of the mechanism for passing references to
+    //   already-constructed UnicodeSets back to the UnicodeSet constructor
+    //   when the pattern includes $variable references.
+    String               ffffString;
+    UnicodeSet           fCachedSetLookup;
+    
+    
+    
+    static class RBBISymbolTableEntry  { 
+        String          key;
+        RBBINode        val;
+    }
+
+    
+    RBBISymbolTable(RBBIRuleScanner rs, String rules) {
+        fRules = rules;
+        fRuleScanner = rs;
+        fHashTable = new HashMap();
+        ffffString = "\uffff";
+    }
+
+    //
+    //  RBBISymbolTable::lookup       This function from the abstract symbol table inteface
+    //                                looks up a variable name and returns a UnicodeString
+    //                                containing the substitution text.
+    //
+    //                                The variable name does NOT include the leading $.
+    //
+    public char[] lookup(String s) {
+        RBBISymbolTableEntry el;
+        RBBINode varRefNode;
+        RBBINode exprNode;
+
+        RBBINode usetNode;
+        String retString;
+
+        el = (RBBISymbolTableEntry) fHashTable.get(s);
+        if (el == null) {
+            return null;
+        }
+
+        // Walk through any chain of variable assignments that ultimately resolve to a Set Ref.
+        varRefNode = el.val;
+        while (varRefNode.fLeftChild.fType == RBBINode.varRef) {
+            varRefNode = varRefNode.fLeftChild;
+        }
+
+        exprNode = varRefNode.fLeftChild; // Root node of expression for variable
+        if (exprNode.fType == RBBINode.setRef) {
+            // The $variable refers to a single UnicodeSet
+            //   return the ffffString, which will subsequently be interpreted as a
+            //   stand-in character for the set by RBBISymbolTable::lookupMatcher()
+            usetNode = exprNode.fLeftChild;
+            fCachedSetLookup = usetNode.fInputSet;
+            retString = ffffString;
+        } else {
+            // The variable refers to something other than just a set.
+            // This is an error in the rules being compiled.  $Variables inside of UnicodeSets
+            //   must refer only to another set, not to some random non-set expression.
+            //   Note:  single characters are represented as sets, so they are ok.
+            fRuleScanner.error(RBBIRuleBuilder.U_BRK_MALFORMED_SET);
+            retString = exprNode.fText;
+            fCachedSetLookup = null;
+        }
+        return retString.toCharArray();
+    }
+
+    //
+    //  RBBISymbolTable::lookupMatcher   This function from the abstract symbol table
+    //                                   interface maps a single stand-in character to a
+    //                                   pointer to a Unicode Set.   The Unicode Set code uses this
+    //                                   mechanism to get all references to the same $variable
+    //                                   name to refer to a single common Unicode Set instance.
+    //
+    //    This implementation cheats a little, and does not maintain a map of stand-in chars
+    //    to sets.  Instead, it takes advantage of the fact that  the UnicodeSet
+    //    constructor will always call this function right after calling lookup(),
+    //    and we just need to remember what set to return between these two calls.
+    public UnicodeMatcher lookupMatcher(int ch) {
+        UnicodeSet retVal = null;
+        if (ch == 0xffff) {
+            retVal = fCachedSetLookup;
+            fCachedSetLookup = null;
+        }
+        return retVal;
+    }
+
+    //
+    // RBBISymbolTable::parseReference   This function from the abstract symbol table interface
+    //                                   looks for a $variable name in the source text.
+    //                                   It does not look it up, only scans for it.
+    //                                   It is used by the UnicodeSet parser.
+    //
+    public String parseReference(String text, ParsePosition pos, int limit) {
+        int start = pos.getIndex();
+        int i = start;
+        String result = "";
+        while (i < limit) {
+            int c = UTF16.charAt(text, i);
+            if ((i == start && !UCharacter.isUnicodeIdentifierStart(c))
+                    || !UCharacter.isUnicodeIdentifierPart(c)) {
+                break;
+            }
+            i += UTF16.getCharCount(c);
+        }
+        if (i == start) { // No valid name chars
+            return result; // Indicate failure with empty string
+        }
+        pos.setIndex(i);
+        result = text.substring(start, i);
+        return result;
+    }
+
+    //
+    // RBBISymbolTable::lookupNode      Given a key (a variable name), return the
+    //                                  corresponding RBBI Node.  If there is no entry
+    //                                  in the table for this name, return NULL.
+    //
+    RBBINode lookupNode(String key) {
+
+        RBBINode retNode = null;
+        RBBISymbolTableEntry el;
+
+        el = (RBBISymbolTableEntry) fHashTable.get(key);
+        if (el != null) {
+            retNode = el.val;
+        }
+        return retNode;
+    }
+
+    //
+    //    RBBISymbolTable::addEntry     Add a new entry to the symbol table.
+    //                                  Indicate an error if the name already exists -
+    //                                    this will only occur in the case of duplicate
+    //                                    variable assignments.
+    //
+    void addEntry(String key, RBBINode val) {
+        RBBISymbolTableEntry e;
+        e = (RBBISymbolTableEntry) fHashTable.get(key);
+        if (e != null) {
+            fRuleScanner.error(RBBIRuleBuilder.U_BRK_VARIABLE_REDFINITION);
+            return;
+        }
+
+        e = new RBBISymbolTableEntry();
+        e.key = key;
+        e.val = val;
+        fHashTable.put(e.key, e);
+    }
+
+    //
+    //  RBBISymbolTable::print    Debugging function, dump out the symbol table contents.
+    //
+    ///CLOVER:OFF
+    void rbbiSymtablePrint() {
+        System.out
+                .print("Variable Definitions\n"
+                        + "Name               Node Val     String Val\n"
+                        + "----------------------------------------------------------------------\n");
+
+        RBBISymbolTableEntry[] syms = new RBBISymbolTableEntry[0];
+        Collection t = fHashTable.values();
+        syms = (RBBISymbolTableEntry[]) t.toArray(syms);
+
+        for (int i = 0; i < syms.length; i++) {
+            RBBISymbolTableEntry s = syms[i];
+
+            System.out.print("  " + s.key + "  "); // TODO:  format output into columns.
+            System.out.print("  " + s.val + "  ");
+            System.out.print(s.val.fLeftChild.fText);
+            System.out.print("\n");
+        }
+
+        System.out.println("\nParsed Variable Definitions\n");
+        for (int i = 0; i < syms.length; i++) {
+            RBBISymbolTableEntry s = syms[i];
+            System.out.print(s.key);
+            s.val.fLeftChild.printTree(true);
+            System.out.print("\n");
+        }
+    }
+    ///CLOVER:ON
+    
+}
diff --git a/src/com/ibm/icu/text/RBBITableBuilder.java b/src/com/ibm/icu/text/RBBITableBuilder.java
new file mode 100644
index 0000000..a5340af
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBITableBuilder.java
@@ -0,0 +1,1047 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.Iterator;
+import java.util.Collection;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+//
+//  class RBBITableBuilder is part of the RBBI rule compiler.
+//                         It builds the state transition table used by the RBBI runtime
+//                         from the expression syntax tree generated by the rule scanner.
+//
+//                         This class is part of the RBBI implementation only.
+//                         There is no user-visible public API here.
+//
+class RBBITableBuilder {
+    
+    
+    
+    //
+    //  RBBIStateDescriptor - The DFA is initially constructed as a set of these descriptors,
+    //                        one for each state.
+    static class RBBIStateDescriptor {
+        boolean      fMarked;
+        int          fAccepting;
+        int          fLookAhead;
+        SortedSet    fTagVals;
+        int          fTagsIdx;
+        Set          fPositions;                 // Set of parse tree positions associated
+                                                  //   with this state.  Unordered (it's a set).
+                                                  //   UVector contents are RBBINode *
+
+        int[]        fDtran;                      // Transitions out of this state.
+                                                   //   indexed by input character
+                                                   //   contents is int index of dest state
+                                                   //   in RBBITableBuilder.fDStates
+
+        RBBIStateDescriptor(int maxInputSymbol) {
+            fTagVals = new TreeSet();
+            fPositions = new HashSet();
+            fDtran = new int[maxInputSymbol+1];    // fDtran needs to be pre-sized.
+                                                    //   It is indexed by input symbols, and will
+                                                    //   hold  the next state number for each
+                                                    //   symbol.
+        }
+    }
+    
+    
+    private  RBBIRuleBuilder  fRB;
+    private  int             fRootIx;             // The array index into RBBIRuleBuilder.fTreeRoots
+                                                   //   for the parse tree to operate on.
+                                                   //   Too bad Java can't do indirection more easily!
+
+    private  List             fDStates;       //  D states (Aho's terminology)
+                                               //  Index is state number
+                                               //  Contents are RBBIStateDescriptor pointers.
+
+    //-----------------------------------------------------------------------------
+    //
+    //  Constructor    for RBBITableBuilder.
+    //
+    //                 rootNode is an index into the array of root nodes that is held by
+    //                          the overall RBBIRuleBuilder.
+    //-----------------------------------------------------------------------------
+    RBBITableBuilder(RBBIRuleBuilder rb,  int rootNodeIx)  {
+           fRootIx     = rootNodeIx;
+           fRB         = rb;
+           fDStates    = new ArrayList();
+        }
+
+
+
+ 
+       //-----------------------------------------------------------------------------
+       //
+       //   RBBITableBuilder::build  -  This is the main function for building the DFA state transtion
+       //                               table from the RBBI rules parse tree.
+       //
+       //-----------------------------------------------------------------------------
+       void  build() {
+           // If there were no rules, just return.  This situation can easily arise
+           //   for the reverse rules.
+           if (fRB.fTreeRoots[fRootIx]==null) {
+               return;
+           }
+
+           //
+           // Walk through the tree, replacing any references to $variables with a copy of the
+           //   parse tree for the substition expression.
+           //
+           fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables();
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("ftree")>=0) {
+               System.out.println("Parse tree after flattening variable references.");
+               fRB.fTreeRoots[fRootIx].printTree(true);
+           }
+
+           //
+           // If the rules contained any references to {bof} 
+           //   add a {bof} <cat> <former root of tree> to the
+           //   tree.  Means that all matches must start out with the 
+           //   {bof} fake character.
+           // 
+           if (fRB.fSetBuilder.sawBOF()) {
+               RBBINode bofTop    = new RBBINode(RBBINode.opCat);
+               RBBINode bofLeaf   = new RBBINode(RBBINode.leafChar);
+               bofTop.fLeftChild  = bofLeaf;
+               bofTop.fRightChild = fRB.fTreeRoots[fRootIx];
+               bofLeaf.fParent    = bofTop;
+               bofLeaf.fVal       = 2;      // Reserved value for {bof}.
+               fRB.fTreeRoots[fRootIx] = bofTop;
+           }
+
+           //
+           // Add a unique right-end marker to the expression.
+           //   Appears as a cat-node, left child being the original tree,
+           //   right child being the end marker.
+           //
+           RBBINode cn = new RBBINode(RBBINode.opCat);
+           cn.fLeftChild = fRB.fTreeRoots[fRootIx];
+           fRB.fTreeRoots[fRootIx].fParent = cn;
+           cn.fRightChild = new RBBINode(RBBINode.endMark);
+           cn.fRightChild.fParent = cn;
+           fRB.fTreeRoots[fRootIx] = cn;
+
+           //
+           //  Replace all references to UnicodeSets with the tree for the equivalent
+           //      expression.
+           //
+           fRB.fTreeRoots[fRootIx].flattenSets();
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("stree")>=0) {
+               System.out.println("Parse tree after flattening Unicode Set references.");
+               fRB.fTreeRoots[fRootIx].printTree(true);
+           }
+
+
+           //
+           // calculate the functions nullable, firstpos, lastpos and followpos on
+           // nodes in the parse tree.
+           //    See the alogrithm description in Aho.
+           //    Understanding how this works by looking at the code alone will be
+           //       nearly impossible.
+           //
+           calcNullable(fRB.fTreeRoots[fRootIx]);
+           calcFirstPos(fRB.fTreeRoots[fRootIx]);
+           calcLastPos(fRB.fTreeRoots[fRootIx]);
+           calcFollowPos(fRB.fTreeRoots[fRootIx]);
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("pos")>=0) {
+               System.out.print("\n");
+               printPosSets(fRB.fTreeRoots[fRootIx]);
+           }
+
+           //
+           //  For "chained" rules, modify the followPos sets
+           //
+           if (fRB.fChainRules) {
+               calcChainedFollowPos(fRB.fTreeRoots[fRootIx]);
+           }
+
+           //
+           //  BOF (start of input) test fixup.
+           //
+           if (fRB.fSetBuilder.sawBOF()) {
+               bofFixup();
+           }
+
+           //
+           // Build the DFA state transition tables.
+           //
+           buildStateTable();
+           flagAcceptingStates();
+           flagLookAheadStates();
+           flagTaggedStates();
+
+           //
+           // Update the global table of rule status {tag} values
+           // The rule builder has a global vector of status values that are common
+           //    for all tables.  Merge the ones from this table into the global set.
+           //
+           mergeRuleStatusVals();
+
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("states")>=0) {printStates();}
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcNullable.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcNullable(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.setRef ||
+               n.fType == RBBINode.endMark ) {
+               // These are non-empty leaf node types.
+               n.fNullable = false;
+               return;
+           }
+
+           if (n.fType == RBBINode.lookAhead || n.fType == RBBINode.tag) {
+               // Lookahead marker node.  It's a leaf, so no recursion on children.
+               // It's nullable because it does not match any literal text from the input stream.
+               n.fNullable = true;
+               return;
+           }
+
+
+           // The node is not a leaf.
+           //  Calculate nullable on its children.
+           calcNullable(n.fLeftChild);
+           calcNullable(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fNullable = n.fLeftChild.fNullable || n.fRightChild.fNullable;
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fNullable = n.fLeftChild.fNullable && n.fRightChild.fNullable;
+           }
+           else if (n.fType == RBBINode.opStar || n.fType == RBBINode.opQuestion) {
+               n.fNullable = true;
+           }
+           else {
+               n.fNullable = false;
+           }
+       }
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcFirstPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcFirstPos(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.leafChar  ||
+               n.fType == RBBINode.endMark   ||
+               n.fType == RBBINode.lookAhead ||
+               n.fType == RBBINode.tag) {
+               // These are non-empty leaf node types.
+               n.fFirstPosSet.add(n);
+               return;
+           }
+
+           // The node is not a leaf.
+           //  Calculate firstPos on its children.
+           calcFirstPos(n.fLeftChild);
+           calcFirstPos(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+               n.fFirstPosSet.addAll(n.fRightChild.fFirstPosSet);
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+               if (n.fLeftChild.fNullable) {
+                   n.fFirstPosSet.addAll(n.fRightChild.fFirstPosSet);
+               }
+           }
+           else if (n.fType == RBBINode.opStar ||
+                    n.fType == RBBINode.opQuestion ||
+                    n.fType == RBBINode.opPlus) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcLastPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcLastPos(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.leafChar  ||
+               n.fType == RBBINode.endMark   ||
+               n.fType == RBBINode.lookAhead ||
+               n.fType == RBBINode.tag) {
+               // These are non-empty leaf node types.
+               n.fLastPosSet.add(n);
+               return;
+           }
+
+           // The node is not a leaf.
+           //  Calculate lastPos on its children.
+           calcLastPos(n.fLeftChild);
+           calcLastPos(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+               n.fLastPosSet.addAll(n.fRightChild.fLastPosSet);
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fLastPosSet.addAll(n.fRightChild.fLastPosSet);
+               if (n.fRightChild.fNullable) {
+                   n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+               }
+           }
+           else if (n.fType == RBBINode.opStar     ||
+                    n.fType == RBBINode.opQuestion ||
+                    n.fType == RBBINode.opPlus) {
+               n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcFollowPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcFollowPos(RBBINode n) {
+           if (n == null ||
+               n.fType == RBBINode.leafChar ||
+               n.fType == RBBINode.endMark) {
+               return;
+           }
+
+           calcFollowPos(n.fLeftChild);
+           calcFollowPos(n.fRightChild);
+
+           // Aho rule #1
+           if (n.fType == RBBINode.opCat) {
+               RBBINode i;   // is 'i' in Aho's description
+
+               Set LastPosOfLeftChild = n.fLeftChild.fLastPosSet;
+
+               Iterator ix = LastPosOfLeftChild.iterator();
+               while (ix.hasNext()) {
+                   i = (RBBINode )ix.next();
+                   i.fFollowPos.addAll(n.fRightChild.fFirstPosSet);
+               }
+           }
+
+           // Aho rule #2
+           if (n.fType == RBBINode.opStar ||
+               n.fType == RBBINode.opPlus) {
+               RBBINode   i;  // again, n and i are the names from Aho's description.
+               Iterator   ix = n.fLastPosSet.iterator();
+               while (ix.hasNext()) {
+                   i = (RBBINode) ix.next();
+                   i.fFollowPos.addAll(n.fFirstPosSet);
+               }
+
+           }
+
+
+
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcChainedFollowPos.    Modify the previously calculated followPos sets
+       //                            to implement rule chaining.  NOT described by Aho
+       //
+       //-----------------------------------------------------------------------------
+       void calcChainedFollowPos(RBBINode tree) {
+
+           List        endMarkerNodes = new ArrayList();
+           List        leafNodes      = new ArrayList();
+
+            // get a list of all endmarker nodes.
+           tree.findNodes(endMarkerNodes, RBBINode.endMark);
+
+           // get a list all leaf nodes
+           tree.findNodes(leafNodes, RBBINode.leafChar);
+
+           // Get all nodes that can be the start a match, which is FirstPosition()
+           // of the portion of the tree corresponding to user-written rules.
+           // See the tree description in bofFixup().
+           RBBINode userRuleRoot = tree;
+           if (fRB.fSetBuilder.sawBOF()) {
+               userRuleRoot = tree.fLeftChild.fRightChild;
+           }
+           Assert.assrt(userRuleRoot != null);
+           Set matchStartNodes = userRuleRoot.fFirstPosSet;
+
+
+           // Iteratate over all leaf nodes,
+           //
+           Iterator  endNodeIx = leafNodes.iterator();
+
+           while (endNodeIx.hasNext()) {
+               RBBINode tNode   = (RBBINode)endNodeIx.next();
+               RBBINode endNode = null;
+
+               // Identify leaf nodes that correspond to overall rule match positions.
+               //   These include an endMarkerNode in their followPos sets.
+               Iterator i = endMarkerNodes.iterator();
+               while (i.hasNext()) {
+                   RBBINode endMarkerNode = (RBBINode)i.next();
+                   if (tNode.fFollowPos.contains(endMarkerNode)) {
+                       endNode = tNode;
+                       break;
+                   }
+               }
+               if (endNode == null) {
+                   // node wasn't an end node.  Try again with the next.
+                   continue;
+               }
+
+               // We've got a node that can end a match.
+
+               // Line Break Specific hack:  If this node's val correspond to the $CM char class,
+               //                            don't chain from it.
+               // TODO:  Add rule syntax for this behavior, get specifics out of here and
+               //        into the rule file.
+               if (fRB.fLBCMNoChain) {
+                   int c = this.fRB.fSetBuilder.getFirstChar(endNode.fVal);
+                   if (c != -1) {
+                       // c == -1 occurs with sets containing only the {eof} marker string.
+                       int cLBProp = UCharacter.getIntPropertyValue(c, UProperty.LINE_BREAK);
+                       if (cLBProp == UCharacter.LineBreak.COMBINING_MARK) {
+                           continue;
+                       }
+                   }
+               }
+
+
+               // Now iterate over the nodes that can start a match, looking for ones
+               //   with the same char class as our ending node.
+               RBBINode startNode;
+               Iterator  startNodeIx = matchStartNodes.iterator();
+               while (startNodeIx.hasNext()) {
+                   startNode = (RBBINode )startNodeIx.next();
+                   if (startNode.fType != RBBINode.leafChar) {
+                       continue;
+                   }
+
+                   if (endNode.fVal == startNode.fVal) {
+                       // The end val (character class) of one possible match is the
+                       //   same as the start of another.
+
+                       // Add all nodes from the followPos of the start node to the
+                       //  followPos set of the end node, which will have the effect of
+                       //  letting matches transition from a match state at endNode
+                       //  to the second char of a match starting with startNode.
+                       endNode.fFollowPos.addAll(startNode.fFollowPos);
+                   }
+               }
+           }
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   bofFixup.    Fixup for state tables that include {bof} beginning of input testing.
+       //                Do an swizzle similar to chaining, modifying the followPos set of
+       //                the bofNode to include the followPos nodes from other {bot} nodes
+       //                scattered through the tree.
+       //
+       //                This function has much in common with calcChainedFollowPos().
+       //
+       //-----------------------------------------------------------------------------
+       void bofFixup() {
+           //
+           //   The parse tree looks like this ...
+           //         fTree root  --.       <cat>
+           //                               /     \   
+           //                            <cat>   <#end node>
+           //                           /     \   
+           //                     <bofNode>   rest
+           //                               of tree
+           //
+           //    We will be adding things to the followPos set of the <bofNode>
+           //
+           RBBINode  bofNode = fRB.fTreeRoots[fRootIx].fLeftChild.fLeftChild;
+           Assert.assrt(bofNode.fType == RBBINode.leafChar);
+           Assert.assrt(bofNode.fVal == 2);
+
+           // Get all nodes that can be the start a match of the user-written rules
+           //  (excluding the fake bofNode)
+           //  We want the nodes that can start a match in the
+           //     part labeled "rest of tree"
+           // 
+           Set matchStartNodes = fRB.fTreeRoots[fRootIx].fLeftChild.fRightChild.fFirstPosSet;
+           Iterator startNodeIt = matchStartNodes.iterator();
+           while (startNodeIt.hasNext()) {
+               RBBINode startNode = (RBBINode)startNodeIt.next();
+               if (startNode.fType != RBBINode.leafChar) {
+                   continue;
+               }
+
+               if (startNode.fVal == bofNode.fVal) {
+                   //  We found a leaf node corresponding to a {bof} that was
+                   //    explicitly written into a rule.
+                   //  Add everything from the followPos set of this node to the
+                   //    followPos set of the fake bofNode at the start of the tree.
+                   //  
+                   bofNode.fFollowPos.addAll(startNode.fFollowPos);
+               }
+           }
+       }
+
+       //-----------------------------------------------------------------------------
+       //
+       //   buildStateTable()    Determine the set of runtime DFA states and the
+       //                        transition tables for these states, by the algorithm
+       //                        of fig. 3.44 in Aho.
+       //
+       //                        Most of the comments are quotes of Aho's psuedo-code.
+       //
+       //-----------------------------------------------------------------------------
+       void buildStateTable() {
+           //
+           // Add a dummy state 0 - the stop state.  Not from Aho.
+           int      lastInputSymbol = fRB.fSetBuilder.getNumCharCategories() - 1;
+           RBBIStateDescriptor failState = new RBBIStateDescriptor(lastInputSymbol);
+           fDStates.add(failState);
+
+           // initially, the only unmarked state in Dstates is firstpos(root),
+           //       where toot is the root of the syntax tree for (r)#;
+           RBBIStateDescriptor initialState = new RBBIStateDescriptor(lastInputSymbol);
+           initialState.fPositions.addAll(fRB.fTreeRoots[fRootIx].fFirstPosSet);
+           fDStates.add(initialState);
+
+           // while there is an unmarked state T in Dstates do begin
+           for (;;) {
+               RBBIStateDescriptor T = null;
+               int              tx;
+               for (tx=1; tx<fDStates.size(); tx++) {
+                   RBBIStateDescriptor temp  = (RBBIStateDescriptor )fDStates.get(tx);
+                   if (temp.fMarked == false) {
+                       T = temp;
+                       break;
+                   }
+               }
+               if (T == null) {
+                   break;
+               }
+
+               // mark T;
+               T.fMarked = true;
+
+               // for each input symbol a do begin
+               int  a;
+               for (a = 1; a<=lastInputSymbol; a++) {
+                   // let U be the set of positions that are in followpos(p)
+                   //    for some position p in T
+                   //    such that the symbol at position p is a;
+                   Set        U = null;
+                   RBBINode   p;
+                   Iterator   pit = T.fPositions.iterator();
+                   while (pit.hasNext()) {
+                       p = (RBBINode )pit.next();
+                       if ((p.fType == RBBINode.leafChar) &&  (p.fVal == a)) {
+                           if (U == null) {
+                               U = new HashSet();
+                           }
+                           U.addAll(p.fFollowPos);
+                       }
+                   }
+
+                   // if U is not empty and not in DStates then
+                   int  ux = 0;
+                   boolean    UinDstates = false;
+                   if (U != null) {
+                       Assert.assrt(U.size() > 0);
+                       int  ix;
+                       for (ix=0; ix<fDStates.size(); ix++) {
+                           RBBIStateDescriptor temp2;
+                           temp2 = (RBBIStateDescriptor )fDStates.get(ix);
+                           if (U.equals(temp2.fPositions)) {
+                               U  = temp2.fPositions;
+                               ux = ix;
+                               UinDstates = true;
+                               break;
+                           }
+                       }
+
+                       // Add U as an unmarked state to Dstates
+                       if (!UinDstates)
+                       {
+                           RBBIStateDescriptor newState = new RBBIStateDescriptor(lastInputSymbol);
+                           newState.fPositions = U;
+                           fDStates.add(newState);
+                           ux = fDStates.size()-1;
+                       }
+
+                       // Dtran[T, a] := U;
+                       T.fDtran[a] = ux;
+                   }
+               }
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   flagAcceptingStates    Identify accepting states.
+       //                          First get a list of all of the end marker nodes.
+       //                          Then, for each state s,
+       //                              if s contains one of the end marker nodes in its list of tree positions then
+       //                                  s is an accepting state.
+       //
+       //-----------------------------------------------------------------------------
+       void     flagAcceptingStates() {
+           List        endMarkerNodes = new ArrayList();
+           RBBINode    endMarker;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(endMarkerNodes, RBBINode.endMark);
+
+           for (i=0; i<endMarkerNodes.size(); i++) {
+               endMarker = (RBBINode)endMarkerNodes.get(i);
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   //if (sd.fPositions.indexOf(endMarker) >= 0) {
+                   if (sd.fPositions.contains(endMarker)) {
+                       // Any non-zero value for fAccepting means this is an accepting node.
+                       // The value is what will be returned to the user as the break status.
+                       // If no other value was specified, force it to -1.
+
+                       if (sd.fAccepting==0) {
+                        // State hasn't been marked as accepting yet.  Do it now.
+                           sd.fAccepting = endMarker.fVal;
+                           if (sd.fAccepting == 0) {
+                               sd.fAccepting = -1;
+                        }
+                       }
+                       if (sd.fAccepting==-1 && endMarker.fVal != 0) {
+                        // Both lookahead and non-lookahead accepting for this state.
+                        // Favor the look-ahead.  Expedient for line break.
+                        // TODO:  need a more elegant resolution for conflicting rules.
+                        sd.fAccepting = endMarker.fVal;
+                    }
+                        // implicit else:
+                        // if sd.fAccepting already had a value other than 0 or -1, leave it be.
+
+                       // If the end marker node is from a look-ahead rule, set
+                       //   the fLookAhead field or this state also.
+                       if (endMarker.fLookAheadEnd) {
+                        // TODO:  don't change value if already set?
+                        // TODO:  allow for more than one active look-ahead rule in engine.
+                        //        Make value here an index to a side array in engine?
+                           sd.fLookAhead = sd.fAccepting;
+                       }
+                   }
+               }
+           }
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //    flagLookAheadStates   Very similar to flagAcceptingStates, above.
+       //
+       //-----------------------------------------------------------------------------
+       void     flagLookAheadStates() {
+           List        lookAheadNodes = new ArrayList();
+           RBBINode    lookAheadNode;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(lookAheadNodes, RBBINode.lookAhead);
+           for (i=0; i<lookAheadNodes.size(); i++) {
+               lookAheadNode = (RBBINode )lookAheadNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   if (sd.fPositions.contains(lookAheadNode)) {
+                       sd.fLookAhead = lookAheadNode.fVal;
+                   }
+               }
+           }
+       }
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //    flagTaggedStates
+       //
+       //-----------------------------------------------------------------------------
+       void     flagTaggedStates() {
+           List        tagNodes = new ArrayList();
+           RBBINode    tagNode;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(tagNodes, RBBINode.tag);
+           for (i=0; i<tagNodes.size(); i++) {                   // For each tag node t (all of 'em)
+               tagNode = (RBBINode )tagNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {              //    For each state  s (row in the state table)
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   if (sd.fPositions.contains(tagNode)) {       //       if  s include the tag node t
+                       sd.fTagVals.add(new Integer(tagNode.fVal));
+                   }
+               }
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //  mergeRuleStatusVals
+       //
+       //      Allocate positions in the  global array of rule status {tag} values
+       //
+       //      The RBBI runtime uses an array of {sets of status values} that can
+       //      be returned for boundaries.  Each accepting state that has non-zero
+       //      status includes an index into this array.  The format of the array
+       //      is 
+       //           Num of status values in group 1
+       //              status val
+       //              status val
+       //              ...
+       //           Num of status vals in group 2
+       //              status val
+       //              status val
+       //              ...
+       //           etc.
+       //
+       //
+       //-----------------------------------------------------------------------------
+       
+       void  mergeRuleStatusVals() {
+           //
+           //  The basic outline of what happens here is this...
+           //
+           //    for each state in this state table
+           //       if the status tag list for this state is in the global statuses list
+           //           record where and
+           //           continue with the next state
+           //       else
+           //           add the tag list for this state to the global list.
+           //
+           int n;
+           
+           // Pre-load a single tag of {0} into the table.
+           //   We will need this as a default, for rule sets with no explicit tagging,
+           //   or with explicit tagging of {0}.
+           if (fRB.fRuleStatusVals.size() == 0) {              
+               fRB.fRuleStatusVals.add(new Integer(1));    // Num of statuses in group
+               fRB.fRuleStatusVals.add(new Integer(0));    //   and our single status of zero
+               
+               SortedSet s0 = new TreeSet();
+               Integer izero = new Integer(0);
+               fRB.fStatusSets.put(s0, izero);
+               SortedSet s1 = new TreeSet();
+               s1.add(izero);
+               fRB.fStatusSets.put(s0, izero);
+           }
+
+           //    For each state, check whether the state's status tag values are
+           //       already entered into the status values array, and add them if not.
+           for (n=0; n<fDStates.size(); n++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+               Set statusVals = sd.fTagVals;
+               Integer arrayIndexI = (Integer)fRB.fStatusSets.get(statusVals);
+               if (arrayIndexI == null) {
+                   // This is the first encounter of this set of status values.
+                   //   Add them to the statusSets map, This map associates
+                   //   the set of status values with an index in the runtime status 
+                   //   values array.
+                   arrayIndexI = new Integer(fRB.fRuleStatusVals.size());
+                   fRB.fStatusSets.put(statusVals, arrayIndexI);
+                   
+                   // Add the new set of status values to the vector of values that
+                   //   will eventually become the array used by the runtime engine.
+                   fRB.fRuleStatusVals.add(new Integer(statusVals.size()));
+                   Iterator it = statusVals.iterator();
+                   while (it.hasNext()) {
+                       fRB.fRuleStatusVals.add(it.next());
+                   }
+               
+               }
+               
+               // Save the runtime array index back into the state descriptor.
+               sd.fTagsIdx = arrayIndexI.intValue();
+           }          
+       }
+
+
+
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //  printPosSets   Debug function.  Dump Nullable, firstpos, lastpos and followpos
+       //                 for each node in the tree.
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printPosSets(RBBINode n) {
+           if (n==null) {
+               return;
+           }
+           RBBINode.printNode(n);
+           System.out.print("         Nullable:  " + n.fNullable);
+
+           System.out.print("         firstpos:  ");
+           printSet(n.fFirstPosSet);
+
+           System.out.print("         lastpos:   ");
+           printSet(n.fLastPosSet);
+
+           System.out.print("         followpos: ");
+           printSet(n.fFollowPos);
+
+           printPosSets(n.fLeftChild);
+           printPosSets(n.fRightChild);
+       }
+       
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   getTableSize()    Calculate the size in bytes of the runtime form of this
+       //                     state transition table.
+       //
+       //          Note:  Refer to common/rbbidata.h from ICU4C for the declarations
+       //                 of the structures being matched by this calculation.
+       //
+       //-----------------------------------------------------------------------------
+       int  getTableSize()  {
+           int    size = 0;
+           int    numRows;
+           int    numCols;
+           int    rowSize;
+
+           if (fRB.fTreeRoots[fRootIx] == null) {
+               return 0;
+           }
+
+           size    = /*sizeof(RBBIStateTable) - 4 */ 16;    // The header, with no rows to the table.
+
+           numRows = fDStates.size();
+           numCols = fRB.fSetBuilder.getNumCharCategories();
+
+           //  Note  The declaration of RBBIStateTableRow is for a table of two columns.
+           //        Therefore we subtract two from numCols when determining
+           //        how much storage to add to a row for the total columns.
+           // rowSize = sizeof(RBBIStateTableRow) + sizeof(uint16_t)*(numCols-2);
+           rowSize = 8 + 2*numCols;
+           size   += numRows * rowSize;
+           while (size % 8 > 0) {    // Size must be multiple of 8 bytes in size.
+               size++;
+           }
+
+           return size;
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   exportTable()    export the state transition table in the ICU4C format.
+       //
+       //                    Most of the table is 16 bit shorts.  This function exports
+       //                    the whole thing as an array of shorts.
+       //
+       //                    The size of the array must be rounded up to a multiple of
+       //                    8 bytes.
+       //
+       //                    See struct RBBIStateTable in ICU4C, common/rbbidata.h
+       //
+       //-----------------------------------------------------------------------------
+       
+       short [] exportTable() {
+           int                state;
+           int                col;
+
+           if (fRB.fTreeRoots[fRootIx] == null) {
+               return new short[0];
+           }
+
+           Assert.assrt(fRB.fSetBuilder.getNumCharCategories() < 0x7fff &&
+               fDStates.size() < 0x7fff); 
+
+           int numStates = fDStates.size();
+    
+           // Size of table size in shorts.
+           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
+           int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories();
+           int tableSize = getTableSize() / 2;
+
+           
+           short [] table = new short[tableSize];
+           
+           //
+           // Fill in the header fields.
+           //      Annoying because they really want to be ints, not shorts.
+           //
+           // RBBIStateTable.fNumStates
+           table[RBBIDataWrapper.NUMSTATES]   = (short)(numStates >>> 16);
+           table[RBBIDataWrapper.NUMSTATES+1] = (short)(numStates & 0x0000ffff);
+
+           // RBBIStateTable.fRowLen
+           table[RBBIDataWrapper.ROWLEN]   = (short)(rowLen >>> 16);
+           table[RBBIDataWrapper.ROWLEN+1] = (short)(rowLen & 0x0000ffff);
+           
+           // RBBIStateTable.fFlags
+           int flags = 0;
+           if (fRB.fLookAheadHardBreak) {
+               flags  |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
+           }
+           if (fRB.fSetBuilder.sawBOF()) {
+               flags  |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
+           }
+           table[RBBIDataWrapper.FLAGS]   = (short)(flags >>> 16);
+           table[RBBIDataWrapper.FLAGS+1] = (short)(flags & 0x0000ffff);
+           
+           int numCharCategories = fRB.fSetBuilder.getNumCharCategories();
+           for (state=0; state<numStates; state++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(state);
+               int                row = 8 + state*rowLen;
+               Assert.assrt (-32768 < sd.fAccepting && sd.fAccepting <= 32767);
+               Assert.assrt (-32768 < sd.fLookAhead && sd.fLookAhead <= 32767);
+               table[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
+               table[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
+               table[row + RBBIDataWrapper.TAGIDX]    = (short)sd.fTagsIdx;
+               for (col=0; col<numCharCategories; col++) {
+                   table[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
+               }
+           }
+           return table;
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printSet    Debug function.   Print the contents of a set of Nodes
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printSet(Collection s) {
+           Iterator it = s.iterator();
+           while (it.hasNext()) {
+               RBBINode n = (RBBINode)it.next();
+               RBBINode.printInt(n.fSerialNum, 8);
+           }
+           System.out.println();
+       }
+       
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printStates    Debug Function.  Dump the fully constructed state transition table.
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printStates() {
+           int     c;    // input "character"
+           int     n;    // state number
+
+           System.out.print("state |           i n p u t     s y m b o l s \n");
+           System.out.print("      | Acc  LA    Tag");
+           for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+               RBBINode.printInt((int)c, 3);
+           }
+           System.out.print("\n");
+           System.out.print("      |---------------");
+           for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+               System.out.print("---");
+           }
+           System.out.print("\n");
+
+           for (n=0; n<fDStates.size(); n++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor)fDStates.get(n);
+               RBBINode.printInt(n, 5);
+               System.out.print(" | ");
+               
+               RBBINode.printInt(sd.fAccepting, 3);
+               RBBINode.printInt(sd.fLookAhead, 4);
+               RBBINode.printInt(sd.fTagsIdx, 6);
+               System.out.print(" ");
+               for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+                   RBBINode.printInt(sd.fDtran[c], 3);
+               }
+               System.out.print("\n");
+           }
+           System.out.print("\n\n");
+       }
+       
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printRuleStatusTable    Debug Function.  Dump the common rule status table
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printRuleStatusTable() {
+           int  thisRecord = 0;
+           int  nextRecord = 0;
+           int      i;
+           List  tbl = fRB.fRuleStatusVals;
+
+           System.out.print("index |  tags \n");
+           System.out.print("-------------------\n");
+
+           while (nextRecord < tbl.size()) {
+               thisRecord = nextRecord;
+               nextRecord = thisRecord + ((Integer)tbl.get(thisRecord)).intValue() + 1;
+               RBBINode.printInt(thisRecord, 7);
+               for (i=thisRecord+1; i<nextRecord; i++) {
+                   int val = ((Integer)tbl.get(i)).intValue();
+                   RBBINode.printInt(val, 7);
+               }
+               System.out.print("\n");
+           }
+           System.out.print("\n\n");
+       }
+       
+
+
+}
diff --git a/src/com/ibm/icu/text/RBNFChinesePostProcessor.java b/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
new file mode 100644
index 0000000..348cb1e
--- /dev/null
+++ b/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
@@ -0,0 +1,160 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A post-processor for Chinese text.
+ */
+final class RBNFChinesePostProcessor implements RBNFPostProcessor {
+    private NFRuleSet lastRuleSet;
+    private boolean longForm;
+    private int format;
+
+    private static final String[] rulesetNames = {
+        "%traditional", "%simplified", "%accounting", "%time"
+    };
+
+    /**
+     * Initialization routine for this instance, called once
+     * immediately after first construction and never again.  
+     */
+    public void init(RuleBasedNumberFormat formatter, String rules) {
+    }
+
+    /**
+     * Work routine.  Post process the output, which was generated by the
+     * ruleset with the given name.
+     */
+    public void process(StringBuffer buf, NFRuleSet ruleSet) {
+        // markers depend on what rule set we are using
+
+        if (ruleSet != lastRuleSet) {
+            String name = ruleSet.getName();
+            for (int i = 0; i < rulesetNames.length; ++i) {
+                if (rulesetNames[i].equals(name)) {
+                    format = i;
+                    longForm = i == 1 || i == 3;
+                    break;
+                }
+            }
+        }
+
+        if (longForm) {
+            for (int i = Utility.indexOf(buf,"*"); i != -1; i = Utility.indexOf(buf, "*", i)) {
+                buf.delete(i, i+1);
+            }
+            return;
+        }
+
+        final String DIAN = "\u9ede"; // decimal point
+
+        final String[][] markers = {
+            { "\u842c", "\u5104", "\u5146", "\u3007" }, // marker chars, last char is the 'zero'
+            { "\u4e07", "\u4ebf", "\u5146", "\u3007" },
+            { "\u842c", "\u5104", "\u5146", "\u96f6" }
+            // need markers for time?
+        };
+
+        // remove unwanted lings
+        // a '0' (ling) with * might be removed
+        // mark off 10,000 'chunks', markers are Z, Y, W (zhao, yii, and wan)
+        // already, we avoid two lings in the same chunk -- ling without * wins
+        // now, just need  to avoid optional lings in adjacent chunks
+        // process right to left
+
+        // decision matrix:
+        // state, situation
+        //     state         none       opt.          req.
+        //     -----         ----       ----          ----
+        // none to right     none       opt.          req.  
+        // opt. to right     none   clear, none  clear right, req.
+        // req. to right     none   clear, none       req.
+
+        // mark chunks with '|' for convenience
+        {
+            String[] m = markers[format];
+            for (int i = 0; i < m.length-1; ++i) {
+                int n = Utility.indexOf(buf, m[i]);
+                if (n != -1) {
+                    buf.insert(n+m[i].length(), '|');
+                }
+            }
+        }
+
+        int x = Utility.indexOf(buf, DIAN);
+        if (x == -1) {
+            x = buf.length();
+        }
+        int s = 0; // 0 = none to right, 1 = opt. to right, 2 = req. to right
+        int n = -1; // previous optional ling
+        String ling = markers[format][3];
+        while (x >= 0) {
+            int m = Utility.lastIndexOf(buf, "|", x);
+            int nn = Utility.lastIndexOf(buf, ling, x);
+            int ns = 0;
+            if (nn > m) {
+                ns = (nn > 0 && buf.charAt(nn-1) != '*') ? 2 : 1;
+            }
+            x = m - 1;
+
+            // actually much simpler, but leave this verbose for now so it's easier to follow
+            switch (s*3+ns) {
+            case 0: /* none, none */
+                s = ns; // redundant
+                n = -1;
+                break;
+            case 1: /* none, opt. */
+                s = ns;
+                n = nn; // remember optional ling to right
+                break;
+            case 2: /* none, req. */
+                s = ns;
+                n = -1;
+                break;
+            case 3: /* opt., none */
+                s = ns;
+                n = -1;
+                break;
+            case 4: /* opt., opt. */
+                buf.delete(nn-1, nn+ling.length()); // delete current optional ling
+                s = 0;
+                n = -1;
+                break;
+            case 5: /* opt., req. */
+                buf.delete(n-1, n+ling.length()); // delete previous optional ling
+                s = ns;
+                n = -1;
+                break;
+            case 6: /* req., none */
+                s = ns;
+                n = -1;
+                break;
+            case 7: /* req., opt. */
+                buf.delete(nn-1, nn+ling.length()); // delete current optional ling
+                s = 0;
+                n = -1;
+                break;
+            case 8: /* req., req. */
+                s = ns;
+                n = -1;
+                break;
+            default:
+                throw new IllegalStateException();
+            }
+        }
+
+        for (int i = buf.length(); --i >= 0;) {
+            char c = buf.charAt(i);
+            if (c == '*' || c == '|') {
+                buf.delete(i, i+1);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/RBNFPostProcessor.java b/src/com/ibm/icu/text/RBNFPostProcessor.java
new file mode 100644
index 0000000..d513141
--- /dev/null
+++ b/src/com/ibm/icu/text/RBNFPostProcessor.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Post processor for RBNF output.
+ * @internal
+ */
+interface RBNFPostProcessor {
+    /**
+     * Initialization routine for this instance, called once
+     * immediately after first construction and never again.
+     * @param formatter the formatter that will be using this post-processor
+     * @param rules the special rules for this post-procesor
+     */
+    void init(RuleBasedNumberFormat formatter, String rules);
+
+    /**
+     * Work routine.  Post process the output, which was generated by the
+     * ruleset with the given name.
+     * @param output the output of the main RBNF processing
+     * @param ruleSet the rule set originally invoked to generate the output
+     */
+    void process(StringBuffer output, NFRuleSet ruleSet);
+}
diff --git a/src/com/ibm/icu/text/RawCollationKey.java b/src/com/ibm/icu/text/RawCollationKey.java
new file mode 100644
index 0000000..7dfb29e
--- /dev/null
+++ b/src/com/ibm/icu/text/RawCollationKey.java
@@ -0,0 +1,102 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ByteArrayWrapper;
+
+/**
+ * <p>
+ * Simple class wrapper to store the internal byte representation of a 
+ * CollationKey. Unlike the CollationKey, this class do not contain information 
+ * on the source string the sort order represents. RawCollationKey is mutable 
+ * and users can reuse its objects with the method in 
+ * RuleBasedCollator.getRawCollationKey(..).
+ * </p>
+ * <p>
+ * Please refer to the documentation on CollationKey for a detail description
+ * on the internal byte representation. Note the internal byte representation 
+ * is always null-terminated.
+ * </p> 
+ * <code>
+ * Example of use:<br>
+ * String str[] = {.....};
+ * RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance();
+ * RawCollationKey key = new RawCollationKey(128);
+ * for (int i = 0; i &lt; str.length; i ++) {
+ *     collator.getRawCollationKey(str[i], key);
+ *     // do something with key.bytes
+ * }
+ * </code>
+ * <p><strong>Note:</strong> Comparison between RawCollationKeys created by 
+ * different Collators might return incorrect results.  
+ * See class documentation for Collator.</p>
+ * @stable ICU 2.8
+ * @see RuleBasedCollator
+ * @see CollationKey
+ */
+public final class RawCollationKey extends ByteArrayWrapper
+{
+    // public constructors --------------------------------------------------
+    
+    /**
+     * Default constructor, internal byte array is null and its size set to 0.
+     * @stable ICU 2.8
+     */
+    public RawCollationKey() 
+    {
+    }
+
+    /**
+     * RawCollationKey created with an empty internal byte array of length 
+     * capacity. Size of the internal byte array will be set to 0.
+     * @param capacity length of internal byte array
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(int capacity) 
+    {
+        bytes = new byte[capacity];
+    }
+
+    /**
+     * RawCollationKey created, adopting bytes as the internal byte array.
+     * Size of the internal byte array will be set to 0.
+     * @param bytes byte array to be adopted by RawCollationKey
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(byte[] bytes) 
+    {
+        this.bytes = bytes;
+    }
+    
+    /**
+     * Construct a RawCollationKey from a byte array and size.
+     * @param bytesToAdopt the byte array to adopt
+     * @param size the length of valid data in the byte array
+     * @throws IndexOutOfBoundsException if bytesToAdopt == null and size != 0, or
+     * size < 0, or size > bytesToAdopt.length.
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(byte[] bytesToAdopt, int size) 
+    {
+        super(bytesToAdopt, size);
+    }
+
+    /**
+     * Compare this RawCollationKey to another, which must not be null.  This overrides
+     * the inherited implementation to ensure the returned values are -1, 0, or 1.
+     * @param rhs the RawCollationKey to compare to.
+     * @return -1, 0, or 1 as this compares less than, equal to, or
+     * greater than rhs.
+     * @throws ClassCastException if the other object is not a RawCollationKey.
+     * @stable ICU 3.2
+     */
+    public int compareTo(Object rhs) {
+        int result = super.compareTo((RawCollationKey)rhs);
+        return result < 0 ? -1 : result == 0 ? 0 : 1;
+    }
+}
diff --git a/src/com/ibm/icu/text/RemoveTransliterator.java b/src/com/ibm/icu/text/RemoveTransliterator.java
new file mode 100644
index 0000000..3d02002
--- /dev/null
+++ b/src/com/ibm/icu/text/RemoveTransliterator.java
@@ -0,0 +1,52 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+
+/**
+ * A transliterator that removes characters.  This is useful in conjunction
+ * with a filter.
+ */
+class RemoveTransliterator extends Transliterator {
+
+    /**
+     * ID for this transliterator.
+     */
+    private static String _ID = "Any-Remove";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new RemoveTransliterator();
+            }
+        });
+        Transliterator.registerSpecialInverse("Remove", "Null", false);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public RemoveTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        // Our caller (filteredTransliterate) has already narrowed us
+        // to an unfiltered run.  Delete it.
+        text.replace(index.start, index.limit, "");
+        int len = index.limit - index.start;
+        index.contextLimit -= len;
+        index.limit -= len;
+    }
+}
diff --git a/src/com/ibm/icu/text/Replaceable.java b/src/com/ibm/icu/text/Replaceable.java
new file mode 100644
index 0000000..8bf2743
--- /dev/null
+++ b/src/com/ibm/icu/text/Replaceable.java
@@ -0,0 +1,186 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>Replaceable</code> is an interface representing a
+ * string of characters that supports the replacement of a range of
+ * itself with a new string of characters.  It is used by APIs that
+ * change a piece of text while retaining metadata.  Metadata is data
+ * other than the Unicode characters returned by char32At().  One
+ * example of metadata is style attributes; another is an edit
+ * history, marking each character with an author and revision number.
+ *
+ * <p>An implicit aspect of the <code>Replaceable</code> API is that
+ * during a replace operation, new characters take on the metadata of
+ * the old characters.  For example, if the string "the <b>bold</b>
+ * font" has range (4, 8) replaced with "strong", then it becomes "the
+ * <b>strong</b> font".
+ *
+ * <p><code>Replaceable</code> specifies ranges using a start
+ * offset and a limit offset.  The range of characters thus specified
+ * includes the characters at offset start..limit-1.  That is, the
+ * start offset is inclusive, and the limit offset is exclusive.
+ *
+ * <p><code>Replaceable</code> also includes API to access characters
+ * in the string: <code>length()</code>, <code>charAt()</code>,
+ * <code>char32At()</code>, and <code>extractBetween()</code>.
+ *
+ * <p>For a subclass to support metadata, typical behavior of
+ * <code>replace()</code> is the following:
+ * <ul>
+ *   <li>Set the metadata of the new text to the metadata of the first
+ *   character replaced</li>
+ *   <li>If no characters are replaced, use the metadata of the
+ *   previous character</li>
+ *   <li>If there is no previous character (i.e. start == 0), use the
+ *   following character</li>
+ *   <li>If there is no following character (i.e. the replaceable was
+ *   empty), use default metadata<br>
+ *   <li>If the code point U+FFFF is seen, it should be interpreted as
+ *   a special marker having no metadata<li>
+ *   </li>
+ * </ul>
+ * If this is not the behavior, the subclass should document any differences.
+ * 
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public interface Replaceable {
+    /**
+     * Returns the number of 16-bit code units in the text.
+     * @return number of 16-bit code units in text
+     * @stable ICU 2.0
+     */ 
+    int length();
+
+    /**
+     * Returns the 16-bit code unit at the given offset into the text.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 16-bit code unit of text at given offset
+     * @stable ICU 2.0
+     */
+    char charAt(int offset);
+
+    /**
+     * Returns the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     *
+     * <p>Most subclasses can return
+     * <code>com.ibm.icu.text.UTF16.charAt(this, offset)</code>.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     * @stable ICU 2.0
+     */
+    int char32At(int offset);
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     * @stable ICU 2.0
+     */
+    void getChars(int srcStart, int srcLimit, char dst[], int dstStart);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @stable ICU 2.0
+     */
+    void replace(int start, int limit, String text);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     * @stable ICU 2.0
+     */
+    void replace(int start, int limit, char[] chars,
+                 int charsStart, int charsLen);
+    // Note: We use length rather than limit to conform to StringBuffer
+    // and System.arraycopy.
+
+    /**
+     * Copies a substring of this object, retaining metadata.
+     * This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * If <code>hasMetaData()</code> returns false, subclasses
+     * may use the naive implementation:
+     *
+     * <pre> char[] text = new char[limit - start];
+     * getChars(start, limit, text, 0);
+     * replace(dest, dest, text, 0, limit - start);</pre>
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     * @stable ICU 2.0
+     */
+    void copy(int start, int limit, int dest);
+    
+    /**
+     * Returns true if this object contains metadata.  If a
+     * Replaceable object has metadata, calls to the Replaceable API
+     * must be made so as to preserve metadata.  If it does not, calls
+     * to the Replaceable API may be optimized to improve performance.
+     * @return true if this object contains metadata
+     * @stable ICU 2.2
+     */
+    boolean hasMetaData();
+}
diff --git a/src/com/ibm/icu/text/ReplaceableContextIterator.java b/src/com/ibm/icu/text/ReplaceableContextIterator.java
new file mode 100644
index 0000000..4015838
--- /dev/null
+++ b/src/com/ibm/icu/text/ReplaceableContextIterator.java
@@ -0,0 +1,197 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ReplaceableContextIterator.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005feb04
+*   created by: Markus W. Scherer
+*
+*   Implementation of UCaseProps.ContextIterator, iterates over a Replaceable.
+*   Java port of casetrn.cpp/utrans_rep_caseContextIterator().
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCaseProps;
+
+/**
+ * Implementation of UCaseProps.ContextIterator, iterates over a Replaceable.
+ * See casetrn.cpp/utrans_rep_caseContextIterator().
+ * See also UCharacter.StringContextIterator.
+ * @internal
+ */
+class ReplaceableContextIterator implements UCaseProps.ContextIterator {
+    /**
+     * Constructor.
+     * @param rep Replaceable to iterate over. 
+     */
+    ReplaceableContextIterator() {
+        this.rep=null;
+        limit=cpStart=cpLimit=index=contextStart=contextLimit=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the text for iteration.
+     * @param rep Iteration text.
+     */
+    public void setText(Replaceable rep) {
+        this.rep=rep;
+        limit=contextLimit=rep.length();
+        cpStart=cpLimit=index=contextStart=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the index where nextCaseMapCP() is to start iterating.
+     * @param index Iteration start index for nextCaseMapCP().
+     */
+    public void setIndex(int index) {
+        cpStart=cpLimit=index;
+        this.index=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Get the index of where the code point currently being case-mapped starts.
+     * @return The start index of the current code point.
+     */
+    public int getCaseMapCPStart() {
+        return cpStart;
+    }
+
+    /**
+     * Set the iteration limit for nextCaseMapCP() to an index within the string.
+     * If the limit parameter is negative or past the string, then the
+     * string length is restored as the iteration limit.
+     *
+     * @param lim The iteration limit.
+     */
+    public void setLimit(int lim) {
+        if(0<=lim && lim<=rep.length()) {
+            limit=lim;
+        } else {
+            limit=rep.length();
+        }
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the start and limit indexes for context iteration with next().
+     * @param contextStart Start of context for next().
+     * @param contextLimit Limit of context for next().
+     */
+    public void setContextLimits(int contextStart, int contextLimit) {
+        if(contextStart<0) {
+            this.contextStart=0;
+        } else if(contextStart<=rep.length()) {
+            this.contextStart=contextStart;
+        } else {
+            this.contextStart=rep.length();
+        }
+        if(contextLimit<this.contextStart) {
+            this.contextLimit=this.contextStart;
+        } else if(contextLimit<=rep.length()) {
+            this.contextLimit=contextLimit;
+        } else {
+            this.contextLimit=rep.length();
+        }
+        reachedLimit=false;
+    }
+
+    /**
+     * Iterate forward through the string to fetch the next code point
+     * to be case-mapped, and set the context indexes for it.
+     *
+     * @return The next code point to be case-mapped, or <0 when the iteration is done.
+     */
+    public int nextCaseMapCP() {
+        int c;
+        if(cpLimit<limit) {
+            cpStart=cpLimit;
+            c=rep.char32At(cpLimit);
+            cpLimit+=UTF16.getCharCount(c);
+            return c;
+        } else {
+            return -1;
+        }
+    }
+
+    /**
+     * Replace the current code point by its case mapping,
+     * and update the indexes.
+     *
+     * @param text Replacement text.
+     * @return The delta for the change of the text length.
+     */
+    public int replace(String text) {
+        int delta=text.length()-(cpLimit-cpStart);
+        rep.replace(cpStart, cpLimit, text);
+        cpLimit+=delta;
+        limit+=delta;
+        contextLimit+=delta;
+        return delta;
+    }
+
+    /**
+     * Did forward context iteration with next() reach the iteration limit?
+     * @return Boolean value.
+     */
+    public boolean didReachLimit() {
+        return reachedLimit;
+    }
+
+    // implement UCaseProps.ContextIterator
+    public void reset(int direction) {
+        if(direction>0) {
+            /* reset for forward iteration */
+            this.dir=1;
+            index=cpLimit;
+        } else if(direction<0) {
+            /* reset for backward iteration */
+            this.dir=-1;
+            index=cpStart;
+        } else {
+            // not a valid direction
+            this.dir=0;
+            index=0;
+        }
+        reachedLimit=false;
+    }
+
+    public int next() {
+        int c;
+
+        if(dir>0) {
+            if(index<contextLimit) {
+                c=rep.char32At(index);
+                index+=UTF16.getCharCount(c);
+                return c;
+            } else {
+                // forward context iteration reached the limit
+                reachedLimit=true;
+            }
+        } else if(dir<0 && index>contextStart) {
+            c=rep.char32At(index-1);
+            index-=UTF16.getCharCount(c);
+            return c;
+        }
+        return -1;
+    }
+
+    // variables
+    protected Replaceable rep;
+    protected int index, limit, cpStart, cpLimit, contextStart, contextLimit;
+    protected int dir; // 0=initial state  >0=forward  <0=backward
+    protected boolean reachedLimit;
+}
diff --git a/src/com/ibm/icu/text/ReplaceableString.java b/src/com/ibm/icu/text/ReplaceableString.java
new file mode 100644
index 0000000..ef4c94a
--- /dev/null
+++ b/src/com/ibm/icu/text/ReplaceableString.java
@@ -0,0 +1,197 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <code>ReplaceableString</code> is an adapter class that implements the
+ * <code>Replaceable</code> API around an ordinary <code>StringBuffer</code>.
+ *
+ * <p><em>Note:</em> This class does not support attributes and is not
+ * intended for general use.  Most clients will need to implement
+ * {@link Replaceable} in their text representation class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @see Replaceable
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ReplaceableString implements Replaceable {
+    private StringBuffer buf;
+
+    /**
+     * Construct a new object with the given initial contents.
+     * @param str initial contents
+     * @stable ICU 2.0
+     */
+    public ReplaceableString(String str) {
+        buf = new StringBuffer(str);
+    }
+
+    /**
+     * Construct a new object using <code>buf</code> for internal
+     * storage.  The contents of <code>buf</code> at the time of
+     * construction are used as the initial contents.  <em>Note!
+     * Modifications to <code>buf</code> will modify this object, and
+     * vice versa.</em>
+     * @param buf object to be used as internal storage
+     * @stable ICU 2.0
+     */
+    public ReplaceableString(StringBuffer buf) {
+        this.buf = buf;
+    }
+
+    /**
+     * Construct a new empty object.
+     * @stable ICU 2.0
+     */
+    public ReplaceableString() {
+        buf = new StringBuffer();
+    }
+
+    /**
+     * Return the contents of this object as a <code>String</code>.
+     * @return string contents of this object
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return buf.toString();
+    }
+
+    /**
+     * Return a substring of the given string.
+     * @stable ICU 2.0
+     */
+    public String substring(int start, int limit) {
+        return buf.substring(start, limit);
+    }
+
+    /**
+     * Return the number of characters contained in this object.
+     * <code>Replaceable</code> API.
+     * @stable ICU 2.0
+     */ 
+    public int length() {
+        return buf.length();
+    }
+
+    /**
+     * Return the character at the given position in this object.
+     * <code>Replaceable</code> API.
+     * @param offset offset into the contents, from 0 to
+     * <code>length()</code> - 1
+     * @stable ICU 2.0
+     */
+    public char charAt(int offset) {
+        return buf.charAt(offset);
+    }
+
+    /**
+     * Return the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     * @stable ICU 2.0
+     */
+    public int char32At(int offset) {
+        return UTF16.charAt(buf, offset);
+    }
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     * @stable ICU 2.0
+     */
+    public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+        Utility.getChars(buf, srcStart, srcLimit, dst, dstStart);
+    }
+
+    /**
+     * Replace zero or more characters with new characters.
+     * <code>Replaceable</code> API.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text new text to replace characters <code>start</code> to
+     * <code>limit - 1</code>
+     * @stable ICU 2.0
+     */
+    public void replace(int start, int limit, String text) {
+        buf.replace(start, limit, text);
+    }
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     * @stable ICU 2.0
+     */
+    public void replace(int start, int limit, char[] chars,
+                        int charsStart, int charsLen) {
+        buf.delete(start, limit);
+        buf.insert(start, chars, charsStart, charsLen);
+    }
+
+    /**
+     * Copy a substring of this object, retaining attribute (out-of-band)
+     * information.  This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     * @stable ICU 2.0
+     */
+    public void copy(int start, int limit, int dest) {
+        if (start == limit && start >= 0 && start <= buf.length()) {
+            return;
+        }
+        char[] text = new char[limit - start];
+        getChars(start, limit, text, 0);
+        replace(dest, dest, text, 0, limit - start);
+    }
+    
+    /**
+     * Implements Replaceable
+     * @stable ICU 2.0
+     */
+    public boolean hasMetaData() {
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedBreakIterator.java b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
new file mode 100644
index 0000000..cc92d89
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -0,0 +1,1371 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008 International Business Machines Corporation and          *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.ICUDebug;
+
+
+/**
+ * Rule Based Break Iterator 
+ * This is a port of the C++ class RuleBasedBreakIterator from ICU4C.
+ * 
+ * @stable ICU 2.0
+ */
+public class RuleBasedBreakIterator extends BreakIterator {
+
+    
+    //=======================================================================
+    // Constructors & Factories
+    //=======================================================================
+    
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public RuleBasedBreakIterator() {
+    }
+
+    /**
+     * Create a break iterator from a precompiled set of rules.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static RuleBasedBreakIterator getInstanceFromCompiledRules(InputStream is) throws IOException {
+        RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
+        This.fRData = RBBIDataWrapper.get(is);
+        return This;   
+    }
+    
+    /*private RuleBasedBreakIterator(RuleBasedBreakIterator other) {
+        // TODO: check types.
+        fRData = other.fRData;
+        if (fText != null) {
+            fText = (CharacterIterator)(other.fText.clone());   
+        }
+    }*/
+
+    /**
+     * Construct a RuleBasedBreakIterator from a set of rules supplied as a string.
+     * @param rules The break rules to be used.
+     * @stable ICU 2.2
+     */
+    public RuleBasedBreakIterator(String rules)  {
+        init();
+        try {
+            ByteArrayOutputStream ruleOS = new ByteArrayOutputStream();
+            compileRules(rules, ruleOS);
+            byte [] ruleBA = ruleOS.toByteArray();
+            InputStream ruleIS = new ByteArrayInputStream(ruleBA);
+            fRData = RBBIDataWrapper.get(ruleIS);
+        } catch (IOException e) {
+            // An IO exception can only arrive here if there is a bug in the RBBI Rule compiler,
+            //  causing bogus compiled rules to be produced, but with no compile error raised.
+            RuntimeException rte = new RuntimeException("RuleBasedBreakIterator rule compilation internal error: "
+                    + e.getMessage());
+            throw rte;
+        }
+    }
+    
+    
+    //=======================================================================
+    // Boilerplate
+    //=======================================================================
+    
+    /**
+     * Clones this iterator.
+     * @return A newly-constructed RuleBasedBreakIterator with the same
+     * behavior as this one.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        RuleBasedBreakIterator result = (RuleBasedBreakIterator)super.clone();
+        if (fText != null) {
+            result.fText = (CharacterIterator)(fText.clone());   
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if both BreakIterators are of the same class, have the same
+     * rules, and iterate over the same text.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object that) {
+        try {
+            RuleBasedBreakIterator other = (RuleBasedBreakIterator) that;
+            if (fRData != other.fRData && (fRData == null || other.fRData == null)) {
+                return false;   
+            }
+            if (fRData != null && other.fRData != null && 
+                    (!fRData.fRuleSource.equals(other.fRData.fRuleSource))) {
+                return false;
+            }
+            if (fText == null && other.fText == null) {
+                return true;   
+            }
+            if (fText == null || other.fText == null) {
+                return false;   
+            }
+            return fText.equals(other.fText);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+     }
+
+    /**
+     * Returns the description (rules) used to create this iterator.
+     * (In ICU4C, the same function is RuleBasedBreakIterator::getRules())
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        String   retStr = null;
+        if (fRData != null) {
+            retStr =  fRData.fRuleSource;
+        }
+        return retStr;
+    }
+
+    /**
+     * Compute a hashcode for this BreakIterator
+     * @return A hash code
+     * @stable ICU 2.0
+     */
+    public int hashCode()
+    {
+        return fRData.fRuleSource.hashCode(); 
+    }
+
+    
+    /** 
+     * Tag value for "words" that do not fit into any of other categories. 
+     * Includes spaces and most punctuation. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NONE           = 0;
+
+    /**
+     * Upper bound for tags for uncategorized words. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NONE_LIMIT     = 100;
+
+    /**
+     * Tag value for words that appear to be numbers, lower limit. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NUMBER         = 100;
+
+    /** 
+     * Tag value for words that appear to be numbers, upper limit.
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NUMBER_LIMIT   = 200;
+
+    /** 
+     * Tag value for words that contain letters, excluding
+     * hiragana, katakana or ideographic characters, lower limit. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_LETTER         = 200;
+
+    /** 
+     * Tag value for words containing letters, upper limit 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_LETTER_LIMIT   = 300;
+
+    /** 
+     * Tag value for words containing kana characters, lower limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_KANA           = 300;
+
+    /** 
+     * Tag value for words containing kana characters, upper limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_KANA_LIMIT     = 400;
+
+    /**
+     * Tag value for words containing ideographic characters, lower limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_IDEO           = 400;
+
+    /**
+     * Tag value for words containing ideographic characters, upper limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_IDEO_LIMIT     = 500;
+
+   
+    
+    
+    private static final int  START_STATE = 1;     // The state number of the starting state
+    private static final int  STOP_STATE  = 0;     // The state-transition value indicating "stop"
+    
+    // RBBIRunMode - the state machine runs an extra iteration at the beginning and end
+    //               of user text.  A variable with this enum type keeps track of where we
+    //               are.  The state machine only fetches user text input while in RUN mode.
+    private static final int  RBBI_START  = 0;
+    private static final int  RBBI_RUN    = 1;
+    private static final int  RBBI_END   = 2;
+
+    /*
+     * The character iterator through which this BreakIterator accesses the text.
+     */
+    private CharacterIterator   fText = new java.text.StringCharacterIterator("");
+    
+    /**
+     * The rule data for this BreakIterator instance
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected RBBIDataWrapper     fRData;
+    
+    /*
+     * Index of the Rule {tag} values for the most recent match. 
+     */
+    private int                 fLastRuleStatusIndex;
+
+    /*
+     * Rule tag value valid flag.
+     * Some iterator operations don't intrinsically set the correct tag value.
+     * This flag lets us lazily compute the value if we are ever asked for it.
+     */
+    private boolean             fLastStatusIndexValid;
+
+    /**
+     * Counter for the number of characters encountered with the "dictionary"
+     *   flag set.  Normal RBBI iterators don't use it, although the code
+     *   for updating it is live.  Dictionary Based break iterators (a subclass
+     *   of us) access this field directly.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+     protected int fDictionaryCharCount;
+
+    /**
+     * Debugging flag.  Trace operation of state machine when true.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean       fTrace;
+
+    /*
+     * ICU debug argument name for RBBI
+     */
+    private static final String RBBI_DEBUG_ARG = "rbbi";
+
+    /**
+     * Dump the contents of the state table and character classes for this break iterator.
+     * For debugging only.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void dump() {
+        this.fRData.dump();   
+    }
+
+    private static boolean debugInitDone = false;
+    
+    private void init() {
+        fLastStatusIndexValid = true;
+        fDictionaryCharCount  = 0;
+
+ 
+        if (debugInitDone == false) {
+            fTrace = ICUDebug.enabled(RBBI_DEBUG_ARG)
+                && ICUDebug.value(RBBI_DEBUG_ARG).indexOf("trace") >= 0;
+            debugInitDone = true;
+        }
+    }
+
+    private static void compileRules(String rules, OutputStream ruleBinary) throws IOException {
+        RBBIRuleBuilder.compileRules(rules, ruleBinary);
+    }
+    
+    //=======================================================================
+    // BreakIterator overrides
+    //=======================================================================
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public int first() {
+        fLastRuleStatusIndex  = 0;
+        fLastStatusIndexValid = true;
+        if (fText == null) {
+            return BreakIterator.DONE;
+        }
+        fText.first();
+        return fText.getIndex();
+    }
+    
+    
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public int last() {
+        if (fText == null) {
+            fLastRuleStatusIndex  = 0;
+            fLastStatusIndexValid = true;
+            return BreakIterator.DONE;
+        }
+
+        // I'm not sure why, but t.last() returns the offset of the last character,
+        // rather than the past-the-end offset
+        //
+        //   (It's so a loop like for(p=it.last(); p!=DONE; p=it.previous()) ...
+        //     will work correctly.)
+
+
+        fLastStatusIndexValid = false;
+        int pos = fText.getEndIndex();
+        fText.setIndex(pos);
+        return pos;
+    }
+    
+    
+    /**
+     * Advances the iterator either forward or backward the specified number of steps.
+     * Negative values move backward, and positive values move forward.  This is
+     * equivalent to repeatedly calling next() or previous().
+     * @param n The number of steps to move.  The sign indicates the direction
+     * (negative is backwards, and positive is forwards).
+     * @return The character offset of the boundary position n boundaries away from
+     * the current one.
+     * @stable ICU 2.0
+     */
+    public int next(int n) {
+        int result = current();
+        while (n > 0) {
+            result = handleNext();
+            --n;
+        }
+        while (n < 0) {
+            result = previous();
+            ++n;
+        }
+        return result;
+    }
+    
+    
+    /**
+     * Advances the iterator to the next boundary position.
+     * @return The position of the first boundary after this one.
+     * @stable ICU 2.0
+     */
+    public int next() {
+        return handleNext();
+    }
+    
+    
+    /**
+     * Moves the iterator backwards, to the last boundary preceding this one.
+     * @return The position of the last boundary position preceding this one.
+     * @stable ICU 2.0
+     */
+    public int previous() {
+        // if we're already sitting at the beginning of the text, return DONE
+        if (fText == null || current() == fText.getBeginIndex()) {
+            fLastRuleStatusIndex  = 0;
+            fLastStatusIndexValid = true;
+            return BreakIterator.DONE;
+        }
+
+        if (fRData.fSRTable != null || fRData.fSFTable != null) {
+            return handlePrevious(fRData.fRTable);
+        }
+
+        // old rule syntax
+        // set things up.  handlePrevious() will back us up to some valid
+        // break position before the current position (we back our internal
+        // iterator up one step to prevent handlePrevious() from returning
+        // the current position), but not necessarily the last one before
+        // where we started
+
+        int       start = current();
+
+        CIPrevious32(fText);
+        int       lastResult    = handlePrevious(fRData.fRTable);
+        if (lastResult == BreakIterator.DONE) {
+            lastResult = fText.getBeginIndex();
+            fText.setIndex(lastResult);
+        }
+        int       result        = lastResult;
+        int       lastTag       = 0;
+        boolean   breakTagValid = false;
+
+        // iterate forward from the known break position until we pass our
+        // starting point.  The last break position before the starting
+        // point is our return value
+
+        for (;;) {
+            result         = handleNext();
+            if (result == BreakIterator.DONE || result >= start) {
+                break;
+            }
+            lastResult     = result;
+            lastTag        = fLastRuleStatusIndex;
+            breakTagValid  = true;
+        }
+
+        // fLastBreakTag wants to have the value for section of text preceding
+        // the result position that we are to return (in lastResult.)  If
+        // the backwards rules overshot and the above loop had to do two or more
+        // handleNext()s to move up to the desired return position, we will have a valid
+        // tag value. But, if handlePrevious() took us to exactly the correct result positon,
+        // we wont have a tag value for that position, which is only set by handleNext().
+
+        // set the current iteration position to be the last break position
+        // before where we started, and then return that value
+        fText.setIndex(lastResult);
+        fLastRuleStatusIndex  = lastTag;       // for use by getRuleStatus()
+        fLastStatusIndexValid = breakTagValid;
+        return lastResult;
+    }
+    /**
+     * Sets the iterator to refer to the first boundary position following
+     * the specified position.
+     * @param offset The position from which to begin searching for a break position.
+     * @return The position of the first break after the current position.
+     * @stable ICU 2.0
+     */
+    public int following(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE; if it's before the beginning, return the
+        // text's starting offset
+        fLastRuleStatusIndex  = 0;
+        fLastStatusIndexValid = true;
+        if (fText == null || offset >= fText.getEndIndex()) {
+            last();
+            return next();
+        }
+        else if (offset < fText.getBeginIndex()) {
+            return first();
+        }
+
+        // otherwise, set our internal iteration position (temporarily)
+        // to the position passed in.  If this is the _beginning_ position,
+        // then we can just use next() to get our return value
+
+        int result = 0;
+
+        if (fRData.fSRTable != null) {
+            // Safe Point Reverse rules exist.
+            //   This allows us to use the optimum algorithm.
+            fText.setIndex(offset);
+            // move forward one codepoint to prepare for moving back to a
+            // safe point.
+            // this handles offset being between a supplementary character
+            CINext32(fText);
+            // handlePrevious will move most of the time to < 1 boundary away
+            handlePrevious(fRData.fSRTable);
+            result = next();
+            while (result <= offset) {
+                result = next();
+            }
+            return result;
+        }
+        if (fRData.fSFTable != null) {
+            // No Safe point reverse table, but there is a safe pt forward table.
+            // 
+            fText.setIndex(offset);
+            CIPrevious32(fText);
+            // handle next will give result >= offset
+            handleNext(fRData.fSFTable);
+            // previous will give result 0 or 1 boundary away from offset,
+            // most of the time
+            // we have to
+            int oldresult = previous();
+            while (oldresult > offset) {
+                result = previous();
+                if (result <= offset) {
+                    return oldresult;
+                }
+                oldresult = result;
+            }
+            result = next();
+            if (result <= offset) {
+                return next();
+            }
+            return result;
+        }
+        // otherwise, we have to sync up first.  Use handlePrevious() to back
+        // us up to a known break position before the specified position (if
+        // we can determine that the specified position is a break position,
+        // we don't back up at all).  This may or may not be the last break
+        // position at or before our starting position.  Advance forward
+        // from here until we've passed the starting position.  The position
+        // we stop on will be the first break position after the specified one.
+        // old rule syntax
+
+        fText.setIndex(offset);
+        if (offset == fText.getBeginIndex()) {
+            return handleNext();
+        }
+        result = previous();
+
+        while (result != BreakIterator.DONE && result <= offset) {
+            result = next();
+        }
+
+        return result;
+    }
+    /**
+     * Sets the iterator to refer to the last boundary position before the
+     * specified position.
+     * @param offset The position to begin searching for a break from.
+     * @return The position of the last boundary before the starting position.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE; if it's before the beginning, return the
+
+        // text's starting offset
+        if (fText == null || offset > fText.getEndIndex()) {
+            // return BreakIterator::DONE;
+            return last();
+        }
+        else if (offset < fText.getBeginIndex()) {
+            return first();
+        }
+
+        // if we start by updating the current iteration position to the
+        // position specified by the caller, we can just use previous()
+        // to carry out this operation
+
+        int  result;
+        if (fRData.fSFTable != null) {
+            /// todo synwee
+            // new rule syntax
+            fText.setIndex(offset);
+            // move backwards one codepoint to prepare for moving forwards to a
+            // safe point.
+            // this handles offset being between a supplementary character
+            CIPrevious32(fText);
+            handleNext(fRData.fSFTable);
+            result = previous();
+            while (result >= offset) {
+                result = previous();
+            }
+            return result;
+        }
+        if (fRData.fSRTable != null) {
+            // backup plan if forward safe table is not available
+            fText.setIndex(offset);
+            CINext32(fText);
+            // handle previous will give result <= offset
+            handlePrevious(fRData.fSRTable);
+
+            // next will give result 0 or 1 boundary away from offset,
+            // most of the time
+            // we have to
+            int oldresult = next();
+            while (oldresult < offset) {
+                result = next();
+                if (result >= offset) {
+                    return oldresult;
+                }
+                oldresult = result;
+            }
+            result = previous();
+            if (result >= offset) {
+                return previous();
+            }
+            return result;
+        }
+
+        // old rule syntax
+        fText.setIndex(offset);
+        return previous();
+    }
+
+    /**
+     * Throw IllegalArgumentException unless begin <= offset < end.
+     * @stable ICU 2.0
+     */
+    protected static final void checkOffset(int offset, CharacterIterator text) {
+        if (offset < text.getBeginIndex() || offset > text.getEndIndex()) {
+            throw new IllegalArgumentException("offset out of bounds");
+        }
+    }
+
+
+/**
+ * Returns true if the specfied position is a boundary position.  As a side
+ * effect, leaves the iterator pointing to the first boundary position at
+ * or after "offset".
+ * @param offset the offset to check.
+ * @return True if "offset" is a boundary position.
+ * @stable ICU 2.0
+ */
+public boolean isBoundary(int offset) {
+    checkOffset(offset, fText);
+    
+    // the beginning index of the iterator is always a boundary position by definition
+    if (offset == fText.getBeginIndex()) {
+        first();       // For side effects on current position, tag values.
+        return true;
+    }
+
+    if (offset == fText.getEndIndex()) {
+        last();       // For side effects on current position, tag values.
+        return true;
+    }
+
+    // otherwise, we can use following() on the position before the specified
+    // one and return true if the position we get back is the one the user
+    // specified
+    
+    // return following(offset - 1) == offset;
+    // TODO:  check whether it is safe to revert to the simpler offset-1 code
+    //         The safe rules may take care of unpaired surrogates ok.
+    fText.setIndex(offset);
+    CIPrevious32(fText);
+    int  pos = fText.getIndex();
+    boolean result = following(pos) == offset;
+    return result;
+}
+
+/**
+ * Returns the current iteration position.
+ * @return The current iteration position.
+ * @stable ICU 2.0
+ */
+public int current() {
+    return (fText != null) ? fText.getIndex() : BreakIterator.DONE;
+    }
+
+
+
+private void makeRuleStatusValid() {
+    if (fLastStatusIndexValid == false) {
+        //  No cached status is available.
+        if (fText == null || current() == fText.getBeginIndex()) {
+            //  At start of text, or there is no text.  Status is always zero.
+            fLastRuleStatusIndex = 0;
+            fLastStatusIndexValid = true;
+        } else {
+            //  Not at start of text.  Find status the tedious way.
+            int pa = current();
+            previous();
+            int pb = next();
+            Assert.assrt (pa == pb);
+        }
+        Assert.assrt(fLastStatusIndexValid == true);
+        Assert.assrt(fLastRuleStatusIndex >= 0  &&  fLastRuleStatusIndex < fRData.fStatusTable.length);
+    }
+}
+
+
+/**
+ * Return the status tag from the break rule that determined the most recently
+ * returned break position.  The values appear in the rule source
+ * within brackets, {123}, for example.  For rules that do not specify a
+ * status, a default value of 0 is returned.  If more than one rule applies,
+ * the numerically largest of the possible status values is returned.
+ * <p>
+ * Of the standard types of ICU break iterators, only the word break
+ * iterator provides status values.  The values are defined in
+ * class RuleBasedBreakIterator, and allow distinguishing between words
+ * that contain alphabetic letters, "words" that appear to be numbers,
+ * punctuation and spaces, words containing ideographic characters, and
+ * more.  Call <code>getRuleStatus</code> after obtaining a boundary
+ * position from <code>next()<code>, <code>previous()</code>, or 
+ * any other break iterator functions that returns a boundary position.
+ * <p>
+ * @return the status from the break rule that determined the most recently
+ * returned break position.
+ *
+ * @draft ICU 3.0
+ * @provisional This is a draft API and might change in a future release of ICU.
+ */
+
+public int  getRuleStatus() {
+    makeRuleStatusValid();
+    //   Status records have this form:
+    //           Count N         <--  fLastRuleStatusIndex points here.
+    //           Status val 0
+    //           Status val 1
+    //              ...
+    //           Status val N-1  <--  the value we need to return
+    //   The status values are sorted in ascending order.
+    //   This function returns the last (largest) of the array of status values.
+    int  idx = fLastRuleStatusIndex + fRData.fStatusTable[fLastRuleStatusIndex];
+    int  tagVal = fRData.fStatusTable[idx];
+
+    return tagVal;
+}
+
+
+
+/**
+ * Get the status (tag) values from the break rule(s) that determined the most 
+ * recently returned break position.  The values appear in the rule source
+ * within brackets, {123}, for example.  The default status value for rules
+ * that do not explicitly provide one is zero.
+ * <p>
+ * The status values used by the standard ICU break rules are defined
+ * as public constants in class RuleBasedBreakIterator.
+ * <p>
+ * If the size  of the output array is insufficient to hold the data,
+ *  the output will be truncated to the available length.  No exception
+ *  will be thrown.
+ *
+ * @param fillInArray an array to be filled in with the status values.  
+ * @return          The number of rule status values from rules that determined 
+ *                  the most recent boundary returned by the break iterator.
+ *                  In the event that the array is too small, the return value
+ *                  is the total number of status values that were available,
+ *                  not the reduced number that were actually returned.
+ * @draft ICU 3.0
+ * @provisional This is a draft API and might change in a future release of ICU.
+ */
+public int getRuleStatusVec(int[] fillInArray) {
+    makeRuleStatusValid();
+    int numStatusVals = fRData.fStatusTable[fLastRuleStatusIndex];
+    if (fillInArray != null) {  
+        int numToCopy = Math.min(numStatusVals, fillInArray.length);
+        for (int i=0; i<numToCopy; i++) {
+            fillInArray[i] = fRData.fStatusTable[fLastRuleStatusIndex + i + 1];
+        }
+    }
+    return numStatusVals;
+ }
+
+
+/**
+ * Return a CharacterIterator over the text being analyzed.  This version
+ * of this method returns the actual CharacterIterator we're using internally.
+ * Changing the state of this iterator can have undefined consequences.  If
+ * you need to change it, clone it first.
+ * @return An iterator over the text being analyzed.
+ * @stable ICU 2.0
+ */
+    public CharacterIterator getText() {
+        return fText;
+    }
+
+
+    /**
+     * Set the iterator to analyze a new piece of text.  This function resets
+     * the current iteration position to the beginning of the text.
+     * @param newText An iterator over the text to analyze.
+     * @stable ICU 2.0
+     */
+    public void setText(CharacterIterator newText) {
+        fText = newText;
+        this.first();
+    }
+    
+    /**
+     * Control debug, trace and dump options.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static String fDebugEnv = ICUDebug.enabled(RBBI_DEBUG_ARG) ?
+                                        ICUDebug.value(RBBI_DEBUG_ARG) : null;
+
+    
+    // 32 bit Char value returned from when an iterator has run out of range.
+    //     Positive value so fast case (not end, not surrogate) can be checked
+    //     with a single test.
+    private static int CI_DONE32 = 0x7fffffff;
+    
+    /**
+     * Move the iterator forward to the next code point, and return that code point,
+     *   leaving the iterator positioned at char returned.
+     *   For Supplementary chars, the iterator is left positioned at the lead surrogate.
+     * @param ci  The character iterator
+     * @return    The next code point.
+     */
+     static int CINext32(CharacterIterator ci) {
+        // If the current position is at a surrogate pair, move to the trail surrogate
+        //   which leaves it in positon for underlying iterator's next() to work.
+        int c= ci.current();
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE && c<=UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            c = ci.next();   
+            if (c<UTF16.TRAIL_SURROGATE_MIN_VALUE || c>UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+               c = ci.previous();   
+            }
+        }
+
+        // For BMP chars, this next() is the real deal.
+        c = ci.next();
+        
+        // If we might have a lead surrogate, we need to peak ahead to get the trail 
+        //  even though we don't want to really be positioned there.
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            c = CINextTrail32(ci, c);   
+        }
+        
+        if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c != CI_DONE32) {
+            // We got a supplementary char.  Back the iterator up to the postion
+            // of the lead surrogate.
+            ci.previous();   
+        }
+        return c;
+   }
+
+    
+    // Out-of-line portion of the in-line Next32 code.
+    // The call site does an initial ci.next() and calls this function
+    //    if the 16 bit value it gets is >= LEAD_SURROGATE_MIN_VALUE.
+    // NOTE:  we leave the underlying char iterator positioned in the
+    //        middle of a surroage pair.  ci.next() will work correctly
+    //        from there, but the ci.getIndex() will be wrong, and needs
+    //        adjustment.
+    private static int CINextTrail32(CharacterIterator ci, int lead) {
+        int retVal = lead;
+        if (lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            char  cTrail = ci.next();
+            if (UTF16.isTrailSurrogate(cTrail)) {
+                retVal = ((lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                            (cTrail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                            UTF16.SUPPLEMENTARY_MIN_VALUE;
+            } else {
+                ci.previous();
+            }
+        } else {
+            if (lead == CharacterIterator.DONE && ci.getIndex() >= ci.getEndIndex()) {
+                retVal = CI_DONE32;
+            }
+        }
+        return retVal;
+    }
+       
+    private static int CIPrevious32(CharacterIterator ci) {
+        if (ci.getIndex() <= ci.getBeginIndex()) {
+            return CI_DONE32;   
+        }
+        char trail = ci.previous();
+        int retVal = trail;
+        if (UTF16.isTrailSurrogate(trail) && ci.getIndex()>ci.getBeginIndex()) {
+            char lead = ci.previous();
+            if (UTF16.isLeadSurrogate(lead)) {
+                retVal = (((int)lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                          ((int)trail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                          UTF16.SUPPLEMENTARY_MIN_VALUE;
+            } else {
+                ci.next();
+            }           
+        }
+        return retVal;
+    }
+   
+    static int CICurrent32(CharacterIterator ci) {
+        char  lead   = ci.current();
+        int   retVal = lead;
+        if (retVal < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            return retVal;   
+        }
+        if (UTF16.isLeadSurrogate(lead)) {
+            int  trail = (int)ci.next();
+            ci.previous();
+            if (UTF16.isTrailSurrogate((char)trail)) {
+                retVal = ((lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                         (trail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                         UTF16.SUPPLEMENTARY_MIN_VALUE;
+            }
+         } else {
+            if (lead == CharacterIterator.DONE) {
+                if (ci.getIndex() >= ci.getEndIndex())   {
+                    retVal = CI_DONE32;   
+                }
+            }
+         }
+        return retVal;
+    }
+    
+
+    //-----------------------------------------------------------------------------------
+    //
+    //      handleNext(void)    All forward iteration vectors through this function.
+    //                          NOTE:  This function is overridden by the dictionary base break iterator.
+    //                                 User level API functions go to the dbbi implementation
+    //                                     when the break iterator type is dbbi.
+    //                                 The DBBI implementation sometimes explicitly calls back to here, 
+    //                                     its inherited handleNext().
+    //                      
+    //-----------------------------------------------------------------------------------
+    int handleNext() {
+        return handleNext(fRData.fFTable);
+    }
+
+    /**
+     * The State Machine Engine for moving forward is here.
+     * This function is the heart of the RBBI run time engine.
+     * 
+     * @param stateTable
+     * @return the new iterator position
+     * 
+     * A note on supplementary characters and the position of underlying
+     * Java CharacterIterator:   Normally, a character iterator is positioned at
+     * the char most recently returned by next().  Within this function, when
+     * a supplementary char is being processed, the char iterator is left
+     * sitting on the trail surrogate, in the middle of the code point.
+     * This is different from everywhere else, where an iterator always
+     * points at the lead surrogate of a supplementary.
+     */
+    private int handleNext(short stateTable[]) {
+        int               state;
+        short             category        = 0;
+        int               mode;
+        int               row;
+        int               c;
+        int               lookaheadStatus = 0;
+        int               lookaheadTagIdx = 0;
+        int               result          = 0;
+        int               initialPosition = 0;
+        int               lookaheadResult = 0;
+        boolean          lookAheadHardBreak = 
+            (stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK) != 0;
+        
+        if (fTrace) {
+            System.out.println("Handle Next   pos      char  state category");
+        }
+
+        // No matter what, handleNext alway correctly sets the break tag value.
+        fLastStatusIndexValid = true;
+        fLastRuleStatusIndex  = 0;
+
+        // if we're already at the end of the text, return DONE.
+        if (fText == null) {
+            fLastRuleStatusIndex = 0;
+            return BreakIterator.DONE;
+        }
+
+        // Set up the starting char
+        initialPosition = fText.getIndex();
+        result          = initialPosition;
+        c               = fText.current();
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            c = CINextTrail32(fText, c);
+            if (c == CI_DONE32) {
+                fLastRuleStatusIndex = 0;
+                return BreakIterator.DONE;
+            }
+        }
+
+        // Set the initial state for the state machine
+        state           = START_STATE;
+        row             = fRData.getRowIndex(state); 
+        category        = 3;
+        mode            = RBBI_RUN;
+        if ((stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
+            category = 2;
+            mode     = RBBI_START;
+        }
+
+
+        // loop until we reach the end of the text or transition to state 0
+        while (state != STOP_STATE) {
+            if (c == CI_DONE32) {
+                // Reached end of input string.
+                if (mode == RBBI_END) {
+                    // We have already run the loop one last time with the
+                    // character set to the pseudo {eof} value. Now it is time
+                    // to unconditionally bail out.
+
+                    if (lookaheadResult > result) {
+                        // We ran off the end of the string with a pending
+                        // look-ahead match.
+                        // Treat this as if the look-ahead condition had been
+                        // met, and return
+                        // the match at the / position from the look-ahead rule.
+                        result = lookaheadResult;
+                        fLastRuleStatusIndex = lookaheadTagIdx;
+                        lookaheadStatus = 0;
+                    } else if (result == initialPosition) {
+                        // Ran off end, no match found.
+                        // move forward one
+                        fText.setIndex(initialPosition);
+                        CINext32(fText);
+                    }
+                    break;
+                }
+                // Run the loop one last time with the fake end-of-input character category
+                mode = RBBI_END;
+                category = 1;
+            }
+            
+            // Get the char category.  An incoming category of 1 or 2 mens that
+            //      we are preset for doing the beginning or end of input, and
+            //      that we shouldn't get a category from an actual text input character.
+            //
+            if (mode == RBBI_RUN) {
+                // look up the current character's character category, which tells us
+                // which column in the state table to look at.
+                //
+                category = (short) fRData.fTrie.getCodePointValue(c);
+                
+                // Check the dictionary bit in the character's category.
+                //    Counter is only used by dictionary based iterators (subclasses).
+                //    Chars that need to be handled by a dictionary have a flag bit set
+                //    in their category values.
+                //
+                if ((category & 0x4000) != 0)  {
+                    fDictionaryCharCount++;
+                    //  And off the dictionary flag bit.
+                    category &= ~0x4000;
+                }
+           }
+
+            if (fTrace) {
+                System.out.print("            " +  RBBIDataWrapper.intToString(fText.getIndex(), 5)); 
+                System.out.print(RBBIDataWrapper.intToHexString(c, 10));
+                System.out.println(RBBIDataWrapper.intToString(state,7) + RBBIDataWrapper.intToString(category,6));
+            }
+
+            // look up a state transition in the state table
+            //     state = row->fNextState[category];
+            state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
+            row   = fRData.getRowIndex(state);  
+
+            // Advance to the next character.  
+            // If this is a beginning-of-input loop iteration, don't advance.
+            //    The next iteration will be processing the first real input character.
+            if (mode == RBBI_RUN) {
+                c = (int)fText.next(); 
+                if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+                    c = CINextTrail32(fText, c);
+                }
+            } else {
+                if (mode == RBBI_START) {
+                    mode = RBBI_RUN;
+                }
+            }
+             
+            if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+                // Match found, common case
+                result = fText.getIndex();
+                if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c != CI_DONE32) {
+                    // The iterator has been left in the middle of a surrogate pair.
+                    // We want the start of it.
+                    result--;
+                }
+
+                //  Remember the break status (tag) values.
+                fLastRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
+            }
+
+            if (stateTable[row + RBBIDataWrapper.LOOKAHEAD] != 0) {
+                if (lookaheadStatus != 0
+                    && stateTable[row + RBBIDataWrapper.ACCEPTING] == lookaheadStatus) {
+                    // Lookahead match is completed.  Set the result accordingly, but only
+                    // if no other rule has matched further in the mean time.
+                    result               = lookaheadResult;
+                    fLastRuleStatusIndex = lookaheadTagIdx;
+                    lookaheadStatus      = 0;
+                    // TODO: make a standalone hard break in a rule work.
+                    if (lookAheadHardBreak) {
+                        return result;
+                    }
+                    // Look-ahead completed, but other rules may match further.  Continue on.
+                    //   TODO:  junk this feature?  I don't think it's used anywhere.
+                    continue;
+                }
+
+                lookaheadResult = fText.getIndex();
+                if (c>=UTF16.SUPPLEMENTARY_MIN_VALUE && c!=CI_DONE32) {
+                    // The iterator has been left in the middle of a surrogate pair.
+                    // We want the beginning  of it.
+                    lookaheadResult--;
+                }
+                lookaheadStatus = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+                lookaheadTagIdx = stateTable[row + RBBIDataWrapper.TAGIDX];
+                continue;
+            }
+
+
+            if (stateTable[row + RBBIDataWrapper.ACCEPTING] != 0) {
+                // Because this is an accepting state, any in-progress look-ahead match
+                //   is no longer relavant.  Clear out the pending lookahead status.
+                lookaheadStatus = 0; 
+            }
+            
+         }        // End of state machine main loop
+
+        // The state machine is done.  Check whether it found a match...
+
+        // If the iterator failed to advance in the match engine, force it ahead by one.
+        //   (This really indicates a defect in the break rules.  They should always match
+        //    at least one character.)
+        if (result == initialPosition) {
+            result = fText.setIndex(initialPosition);
+            CINext32(fText);
+            result = fText.getIndex();
+        }
+
+        // Leave the iterator at our result position.
+        //   (we may have advanced beyond the last accepting position chasing after
+        //    longer matches that never completed.)
+        fText.setIndex(result);
+        if (fTrace) {
+            System.out.println("result = " + result);
+        }
+        return result;
+    }
+
+    
+    
+    private int handlePrevious(short stateTable[]) {
+        int            state;
+        int            category           = 0;
+        int            mode;
+        int            row;        
+        int            c;
+        int            lookaheadStatus    = 0;
+        int            result             = 0;
+        int            initialPosition    = 0;
+        int            lookaheadResult    = 0;
+        boolean        lookAheadHardBreak = 
+            (stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK) != 0;
+        
+        
+        if (fText == null || stateTable == null) {
+            return 0;
+        }
+        // handlePrevious() never gets the rule status.
+        // Flag the status as invalid; if the user ever asks for status, we will need
+        // to back up, then re-find the break position using handleNext(), which does
+        // get the status value.
+        fLastStatusIndexValid = false;
+        fLastRuleStatusIndex  = 0;
+        
+        // set up the starting char
+        initialPosition = fText.getIndex();
+        result          = initialPosition;
+        c               = CIPrevious32(fText);
+        
+        // Set up the initial state for the state machine
+        state = START_STATE;
+        row = fRData.getRowIndex(state);
+        category = 3;   // TODO:  obsolete?  from the old start/run mode scheme?
+        mode     = RBBI_RUN;
+        if ((stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
+            category = 2;
+            mode     = RBBI_START;
+        }
+        
+        if (fTrace) {
+            System.out.println("Handle Prev   pos   char  state category ");
+        }
+        
+        // loop until we reach the beginning of the text or transition to state 0
+        //
+        mainLoop: for (;;) {
+            innerBlock: {
+                if (c == CI_DONE32) {
+                    // Reached end of input string.
+                    if (mode == RBBI_END || fRData.fHeader.fVersion == 1) {
+                        // Either this is the old (ICU 3.2 and earlier) format data which
+                        // does not support explicit support for matching {eof}, or
+                        // we have already done the {eof} iteration.  Now is the time
+                        // to unconditionally bail out.
+                        if (lookaheadResult < result) {
+                            // We ran off the end of the string with a pending look-ahead match.
+                            // Treat this as if the look-ahead condition had been met, and return
+                            //  the match at the / position from the look-ahead rule.
+                            result = lookaheadResult;
+                            lookaheadStatus = 0;
+                        } else if (result == initialPosition) {
+                            // Ran off start, no match found.
+                            // Move one position (towards the start, since we are doing previous.)
+                            fText.setIndex(initialPosition);
+                            CIPrevious32(fText);
+                        }
+                        break mainLoop;
+                    }
+                    mode = RBBI_END;
+                    category = 1;
+                }
+                
+                if (mode == RBBI_RUN) {
+                    // look up the current character's category, which tells us
+                    // which column in the state table to look at.
+                    //
+                    category = (short) fRData.fTrie.getCodePointValue(c);
+                    
+                    // Check the dictionary bit in the character's category.
+                    //    Counter is only used by dictionary based iterators (subclasses).
+                    //    Chars that need to be handled by a dictionary have a flag bit set
+                    //    in their category values.
+                    //
+                    if ((category & 0x4000) != 0)  {
+                        fDictionaryCharCount++;
+                        //  And off the dictionary flag bit.
+                        category &= ~0x4000;
+                    }
+                }
+                
+                
+                if (fTrace) {
+                    System.out.print("             " + fText.getIndex() + "   ");
+                    if (0x20 <= c && c < 0x7f) {
+                        System.out.print("  " + c + "  ");
+                    } else {
+                        System.out.print(" " + Integer.toHexString(c) + " ");
+                    }
+                    System.out.println(" " + state + "  " + category + " ");
+                }
+                
+                // State Transition - move machine to its next state
+                //
+                state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
+                row = fRData.getRowIndex(state);
+                
+                if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+                    // Match found, common case, could have lookahead so we move
+                    // on to check it
+                    result = fText.getIndex();
+                }
+                
+                if (stateTable[row + RBBIDataWrapper.LOOKAHEAD] != 0) {
+                    if (lookaheadStatus != 0
+                            && stateTable[row + RBBIDataWrapper.ACCEPTING] == lookaheadStatus) {
+                        // Lookahead match is completed. Set the result
+                        // accordingly, but only
+                        // if no other rule has matched further in the mean
+                        // time.
+                        result = lookaheadResult;
+                        lookaheadStatus = 0;
+                        // TODO: make a standalone hard break in a rule work.
+                        
+                        if (lookAheadHardBreak) {
+                            break mainLoop;
+                        }
+                        // Look-ahead completed, but other rules may match further.
+                        // Continue on.
+                        // TODO: junk this feature?  I don't think that it's used anywhere.
+                        break innerBlock;
+                    }
+                    // Hit a possible look-ahead match. We are at the
+                    // position of the '/'. Remember this position.
+                    lookaheadResult = fText.getIndex();
+                    lookaheadStatus = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+                    break innerBlock;
+                } 
+                
+                // not lookahead...
+                if (stateTable[row + RBBIDataWrapper.ACCEPTING] != 0) {
+                    // This is a plain (non-look-ahead) accepting state.
+                    if (!lookAheadHardBreak) {
+                        // Clear out any pending look-ahead matches,
+                        // but only if not doing the lookAheadHardBreak option
+                        // which needs to force a break no matter what is going
+                        // on with the rest of the match, i.e. we can't abandon
+                        // a partially completed look-ahead match because
+                        // some other rule matched further than the '/' position
+                        // in the look-ahead match.
+                        lookaheadStatus = 0; 
+                    }
+                }
+                
+            } // end of innerBlock.  "break innerBlock" in above code comes out here.
+        
+        
+            if (state == STOP_STATE) {
+                // Normal loop exit is here
+                break mainLoop;
+            }
+        
+            // then move iterator position backwards one character
+            //
+            if (mode == RBBI_RUN) {
+                c = CIPrevious32(fText);
+            } else {
+                if (mode == RBBI_START) {
+                    mode = RBBI_RUN;
+                }
+            }
+        
+        
+        }   // End of the main loop.
+        
+        // The state machine is done.  Check whether it found a match...
+        //
+        // If the iterator failed to advance in the match engine, force it ahead by one.
+        //   (This really indicates a defect in the break rules.  They should always match
+        //    at least one character.)
+        if (result == initialPosition) {
+            result = fText.setIndex(initialPosition);
+            CIPrevious32(fText);
+            result = fText.getIndex();
+        }
+        
+        fText.setIndex(result);
+        if (fTrace) {
+            System.out.println("Result = " + result);
+        }
+        
+        return result;
+    }
+
+
+
+
+
+    //-------------------------------------------------------------------------------
+    
+    //
+    
+    //  isDictionaryChar      Return true if the category lookup for this char
+    
+    //                        indicates that it is in the set of dictionary lookup
+    
+    //                        chars.
+    
+    //
+    
+    //                        This function is intended for use by dictionary based
+    
+    //                        break iterators.
+    
+    //
+    
+    //-------------------------------------------------------------------------------
+    
+    boolean isDictionaryChar(int c) {
+    
+        short  category = (short) fRData.fTrie.getCodePointValue(c);
+    
+        return (category & 0x4000) != 0;
+    
+    }
+
+}
+//eof
diff --git a/src/com/ibm/icu/text/RuleBasedCollator.java b/src/com/ibm/icu/text/RuleBasedCollator.java
new file mode 100644
index 0000000..b076fc9
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -0,0 +1,4689 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.text.CharacterIterator;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+import com.ibm.icu.impl.BOCU;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ImplicitCEGenerator;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.StringUCharacterIterator;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * <p>RuleBasedCollator is a concrete subclass of Collator. It allows
+ * customization of the Collator via user-specified rule sets.
+ * RuleBasedCollator is designed to be fully compliant to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/">Unicode
+ * Collation Algorithm (UCA)</a> and conforms to ISO 14651.</p>
+ *
+ * <p>Users are strongly encouraged to read <a
+ * href="http://www.icu-project.org/userguide/Collate_Intro.html">
+ * the users guide</a> for more information about the collation
+ * service before using this class.</p>
+ *
+ * <p>Create a RuleBasedCollator from a locale by calling the
+ * getInstance(Locale) factory method in the base class Collator.
+ * Collator.getInstance(Locale) creates a RuleBasedCollator object
+ * based on the collation rules defined by the argument locale.  If a
+ * customized collation ordering ar attributes is required, use the
+ * RuleBasedCollator(String) constructor with the appropriate
+ * rules. The customized RuleBasedCollator will base its ordering on
+ * UCA, while re-adjusting the attributes and orders of the characters
+ * in the specified rule accordingly.</p>
+ *
+ * <p>RuleBasedCollator provides correct collation orders for most
+ * locales supported in ICU. If specific data for a locale is not
+ * available, the orders eventually falls back to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/">UCA collation
+ * order </a>.</p>
+ *
+ * <p>For information about the collation rule syntax and details
+ * about customization, please refer to the
+ * <a href="http://www.icu-project.org/userguide/Collate_Customization.html">
+ * Collation customization</a> section of the user's guide.</p>
+ *
+ * <p><strong>Note</strong> that there are some differences between
+ * the Collation rule syntax used in Java and ICU4J:
+ *
+ * <ul>
+ * <li>According to the JDK documentation:
+ * <i>
+ * <p>
+ * Modifier '!' : Turns on Thai/Lao vowel-consonant swapping. If this rule
+ * is in force when a Thai vowel of the range &#92;U0E40-&#92;U0E44 precedes a
+ * Thai consonant of the range &#92;U0E01-&#92;U0E2E OR a Lao vowel of the
+ * range &#92;U0EC0-&#92;U0EC4 precedes a Lao consonant of the range
+ * &#92;U0E81-&#92;U0EAE then the
+ * vowel is placed after the consonant for collation purposes.
+ * </p>
+ * <p>
+ * If a rule is without the modifier '!', the Thai/Lao vowel-consonant
+ * swapping is not turned on.
+ * </p>
+ * </i>
+ * <p>
+ * ICU4J's RuleBasedCollator does not support turning off the Thai/Lao
+ * vowel-consonant swapping, since the UCA clearly states that it has to be
+ * supported to ensure a correct sorting order. If a '!' is encountered, it is
+ * ignored.
+ * </p>
+ * <li>As mentioned in the documentation of the base class Collator,
+ *     compatibility decomposition mode is not supported.
+ * </ul>
+ * <p>
+ * <strong>Examples</strong>
+ * </p>
+ * <p>
+ * Creating Customized RuleBasedCollators:
+ * <blockquote>
+ * <pre>
+ * String simple = "&amp; a &lt; b &lt; c &lt; d";
+ * RuleBasedCollator simpleCollator = new RuleBasedCollator(simple);
+ *
+ * String norwegian = "&amp; a , A &lt; b , B &lt; c , C &lt; d , D &lt; e , E "
+ *                    + "&lt; f , F &lt; g , G &lt; h , H &lt; i , I &lt; j , "
+ *                    + "J &lt; k , K &lt; l , L &lt; m , M &lt; n , N &lt; "
+ *                    + "o , O &lt; p , P &lt; q , Q &lt r , R &lt s , S &lt; "
+ *                    + "t , T &lt; u , U &lt; v , V &lt; w , W &lt; x , X "
+ *                    + "&lt; y , Y &lt; z , Z &lt; &#92;u00E5 = a&#92;u030A "
+ *                    + ", &#92;u00C5 = A&#92;u030A ; aa , AA &lt; &#92;u00E6 "
+ *                    + ", &#92;u00C6 &lt; &#92;u00F8 , &#92;u00D8";
+ * RuleBasedCollator norwegianCollator = new RuleBasedCollator(norwegian);
+ * </pre>
+ * </blockquote>
+ *
+ * Concatenating rules to combine <code>Collator</code>s:
+ * <blockquote>
+ * <pre>
+ * // Create an en_US Collator object
+ * RuleBasedCollator en_USCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("en", "US", ""));
+ * // Create a da_DK Collator object
+ * RuleBasedCollator da_DKCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("da", "DK", ""));
+ * // Combine the two
+ * // First, get the collation rules from en_USCollator
+ * String en_USRules = en_USCollator.getRules();
+ * // Second, get the collation rules from da_DKCollator
+ * String da_DKRules = da_DKCollator.getRules();
+ * RuleBasedCollator newCollator =
+ *                             new RuleBasedCollator(en_USRules + da_DKRules);
+ * // newCollator has the combined rules
+ * </pre>
+ * </blockquote>
+ *
+ * Making changes to an existing RuleBasedCollator to create a new
+ * <code>Collator</code> object, by appending changes to the existing rule:
+ * <blockquote>
+ * <pre>
+ * // Create a new Collator object with additional rules
+ * String addRules = "&amp; C &lt; ch, cH, Ch, CH";
+ * RuleBasedCollator myCollator =
+ *     new RuleBasedCollator(en_USCollator.getRules() + addRules);
+ * // myCollator contains the new rules
+ * </pre>
+ * </blockquote>
+ *
+ * How to change the order of non-spacing accents:
+ * <blockquote>
+ * <pre>
+ * // old rule with main accents
+ * String oldRules = "= &#92;u0301 ; &#92;u0300 ; &#92;u0302 ; &#92;u0308 "
+ *                 + "; &#92;u0327 ; &#92;u0303 ; &#92;u0304 ; &#92;u0305 "
+ *                 + "; &#92;u0306 ; &#92;u0307 ; &#92;u0309 ; &#92;u030A "
+ *                 + "; &#92;u030B ; &#92;u030C ; &#92;u030D ; &#92;u030E "
+ *                 + "; &#92;u030F ; &#92;u0310 ; &#92;u0311 ; &#92;u0312 "
+ *                 + "&lt; a , A ; ae, AE ; &#92;u00e6 , &#92;u00c6 "
+ *                 + "&lt; b , B &lt; c, C &lt; e, E &amp; C &lt; d , D";
+ * // change the order of accent characters
+ * String addOn = "&amp; &#92;u0300 ; &#92;u0308 ; &#92;u0302";
+ * RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);
+ * </pre>
+ * </blockquote>
+ *
+ * Putting in a new primary ordering before the default setting,
+ * e.g. sort English characters before or after Japanese characters in the Japanese
+ * <code>Collator</code>:
+ * <blockquote>
+ * <pre>
+ * // get en_US Collator rules
+ * RuleBasedCollator en_USCollator
+ *                        = (RuleBasedCollator)Collator.getInstance(Locale.US);
+ * // add a few Japanese characters to sort before English characters
+ * // suppose the last character before the first base letter 'a' in
+ * // the English collation rule is &#92;u2212
+ * String jaString = "& &#92;u2212 &lt &#92;u3041, &#92;u3042 &lt &#92;u3043, "
+ *                   + "&#92;u3044";
+ * RuleBasedCollator myJapaneseCollator
+ *              = new RuleBasedCollator(en_USCollator.getRules() + jaString);
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.8
+ */
+public final class RuleBasedCollator extends Collator
+{   
+    // public constructors ---------------------------------------------------
+
+    /**
+     * <p>
+     * Constructor that takes the argument rules for
+     * customization. The collator will be based on UCA,
+     * with the attributes and re-ordering of the characters specified in the
+     * argument rules.
+     * </p>
+     * <p>See the user guide's section on
+     * <a href="http://www.icu-project.org/userguide/Collate_Customization.html">
+     * Collation Customization</a> for details on the rule syntax.
+     * </p>
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException and IOException thrown. ParseException thrown
+     *            when argument rules have an invalid syntax. IOException
+     *            thrown when an error occured while reading internal data.
+     * @stable ICU 2.8
+     */
+    public RuleBasedCollator(String rules) throws Exception
+    {
+        checkUCA();
+        if (rules == null) {
+            throw new IllegalArgumentException(
+                                            "Collation rules can not be null");
+        }
+        init(rules);
+    }
+
+    // public methods --------------------------------------------------------
+
+    /**
+     * Clones the RuleBasedCollator
+     * @return a new instance of this RuleBasedCollator object
+     * @stable ICU 2.8
+     */
+    public Object clone() throws CloneNotSupportedException
+    {
+        RuleBasedCollator result = (RuleBasedCollator)super.clone();
+        if (latinOneCEs_ != null) {
+            result.m_reallocLatinOneCEs_ = true;
+            result.m_ContInfo_ = new ContractionInfo();
+        }
+
+        // since all collation data in the RuleBasedCollator do not change
+        // we can safely assign the result.fields to this collator
+        result.initUtility(false);  // let the new clone have their own util
+                                    // iterators
+        return result;
+    }
+
+    /**
+     * Return a CollationElementIterator for the given String.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(String source)
+    {
+        return new CollationElementIterator(source, this);
+    }
+
+    /**
+     * Return a CollationElementIterator for the given CharacterIterator.
+     * The source iterator's integrity will be preserved since a new copy
+     * will be created for use.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(
+                                                CharacterIterator source)
+    {
+        CharacterIterator newsource = (CharacterIterator)source.clone();
+        return new CollationElementIterator(newsource, this);
+    }
+    
+    /**
+     * Return a CollationElementIterator for the given UCharacterIterator.
+     * The source iterator's integrity will be preserved since a new copy
+     * will be created for use.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(
+                                                UCharacterIterator source)
+    {
+        return new CollationElementIterator(source, this);
+    }
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * Sets the Hiragana Quaternary mode to be on or off.
+     * When the Hiragana Quaternary mode is turned on, the collator
+     * positions Hiragana characters before all non-ignorable characters in
+     * QUATERNARY strength. This is to produce a correct JIS collation order,
+     * distinguishing between Katakana  and Hiragana characters.
+     * @param flag true if Hiragana Quaternary mode is to be on, false
+     *        otherwise
+     * @see #setHiraganaQuaternaryDefault
+     * @see #isHiraganaQuaternary
+     * @stable ICU 2.8
+     */
+    public void setHiraganaQuaternary(boolean flag)
+    {
+        m_isHiragana4_ = flag;
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the Hiragana Quaternary mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setHiraganaQuaternary(boolean) for more details.
+     * @see #setHiraganaQuaternary(boolean)
+     * @see #isHiraganaQuaternary
+     * @stable ICU 2.8
+     */
+    public void setHiraganaQuaternaryDefault()
+    {
+        m_isHiragana4_ = m_defaultIsHiragana4_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets whether uppercase characters sort before lowercase
+     * characters or vice versa, in strength TERTIARY. The default
+     * mode is false, and so lowercase characters sort before uppercase
+     * characters.
+     * If true, sort upper case characters first.
+     * @param upperfirst true to sort uppercase characters before
+     *                   lowercase characters, false to sort lowercase
+     *                   characters before uppercase characters
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #setCaseFirstDefault
+     * @stable ICU 2.8
+     */
+    public void setUpperCaseFirst(boolean upperfirst)
+    {
+        if (upperfirst) {
+            if(m_caseFirst_ != AttributeValue.UPPER_FIRST_) {
+                latinOneRegenTable_ = true;
+            }
+            m_caseFirst_ = AttributeValue.UPPER_FIRST_;
+        }
+        else {
+            if(m_caseFirst_ != AttributeValue.OFF_) {
+                latinOneRegenTable_ = true;
+            }
+            m_caseFirst_ = AttributeValue.OFF_;
+        }
+        updateInternalState();
+    }
+
+    /**
+     * Sets the orders of lower cased characters to sort before upper cased
+     * characters, in strength TERTIARY. The default
+     * mode is false.
+     * If true is set, the RuleBasedCollator will sort lower cased characters
+     * before the upper cased ones.
+     * Otherwise, if false is set, the RuleBasedCollator will ignore case
+     * preferences.
+     * @param lowerfirst true for sorting lower cased characters before
+     *                   upper cased characters, false to ignore case
+     *                   preferences.
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setUpperCaseFirst
+     * @see #setCaseFirstDefault
+     * @stable ICU 2.8
+     */
+    public void setLowerCaseFirst(boolean lowerfirst)
+    {
+        if (lowerfirst) {
+                if(m_caseFirst_ != AttributeValue.LOWER_FIRST_) {
+                    latinOneRegenTable_ = true;
+                }
+                m_caseFirst_ = AttributeValue.LOWER_FIRST_;
+        }
+        else {
+                if(m_caseFirst_ != AttributeValue.OFF_) {
+                    latinOneRegenTable_ = true;
+                }
+            m_caseFirst_ = AttributeValue.OFF_;
+            }
+        updateInternalState();
+    }
+
+    /**
+     * Sets the case first mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setUpperCaseFirst(boolean) and setLowerCaseFirst(boolean) for more
+     * details.
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setLowerCaseFirst(boolean)
+     * @see #setUpperCaseFirst(boolean)
+     * @stable ICU 2.8
+     */
+    public final void setCaseFirstDefault()
+    {
+        if(m_caseFirst_ != m_defaultCaseFirst_) {
+            latinOneRegenTable_ = true;
+        }
+        m_caseFirst_ = m_defaultCaseFirst_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the alternate handling mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setAlternateHandling(boolean) for more details.
+     * @see #setAlternateHandlingShifted(boolean)
+     * @see #isAlternateHandlingShifted()
+     * @stable ICU 2.8
+     */
+    public void setAlternateHandlingDefault()
+    {
+        m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the case level mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setCaseLevel(boolean) for more details.
+     * @see #setCaseLevel(boolean)
+     * @see #isCaseLevel
+     * @stable ICU 2.8
+     */
+    public void setCaseLevelDefault()
+    {
+        m_isCaseLevel_ = m_defaultIsCaseLevel_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the decomposition mode to the initial mode set during construction
+     * of the RuleBasedCollator.
+     * See setDecomposition(int) for more details.
+     * @see #getDecomposition
+     * @see #setDecomposition(int)
+     * @stable ICU 2.8
+     */
+    public void setDecompositionDefault()
+    {
+        setDecomposition(m_defaultDecomposition_);
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the French collation mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setFrenchCollation(boolean) for more details.
+     * @see #isFrenchCollation
+     * @see #setFrenchCollation(boolean)
+     * @stable ICU 2.8
+     */
+    public void setFrenchCollationDefault()
+    {
+        if(m_isFrenchCollation_ != m_defaultIsFrenchCollation_) {
+            latinOneRegenTable_ = true;
+        }
+        m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the collation strength to the initial mode set during the
+     * construction of the RuleBasedCollator.
+     * See setStrength(int) for more details.
+     * @see #setStrength(int)
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public void setStrengthDefault()
+    {
+        setStrength(m_defaultStrength_);
+        updateInternalState();        
+    }
+    
+    /**
+     * Method to set numeric collation to its default value.
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @see #getNumericCollation
+     * @see #setNumericCollation
+     * @stable ICU 2.8
+     */
+    public void setNumericCollationDefault()
+    {
+        setNumericCollation(m_defaultIsNumericCollation_);
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the mode for the direction of SECONDARY weights to be used in
+     * French collation.
+     * The default value is false, which treats SECONDARY weights in the order
+     * they appear.
+     * If set to true, the SECONDARY weights will be sorted backwards.
+     * See the section on
+     * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+     * French collation</a> for more information.
+     * @param flag true to set the French collation on, false to set it off
+     * @stable ICU 2.8
+     * @see #isFrenchCollation
+     * @see #setFrenchCollationDefault
+     */
+    public void setFrenchCollation(boolean flag)
+    {
+        if(m_isFrenchCollation_ != flag) {
+            latinOneRegenTable_ = true;
+        }
+        m_isFrenchCollation_ = flag;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the alternate handling for QUATERNARY strength to be either
+     * shifted or non-ignorable.
+     * See the UCA definition on
+     * <a href="http://www.unicode.org/unicode/reports/tr10/#Variable_Weighting">
+     * Alternate Weighting</a>.
+     * This attribute will only be effective when QUATERNARY strength is set.
+     * The default value for this mode is false, corresponding to the
+     * NON_IGNORABLE mode in UCA. In the NON-IGNORABLE mode, the
+     * RuleBasedCollator will treats all the codepoints with non-ignorable
+     * primary weights in the same way.
+     * If the mode is set to true, the behaviour corresponds to SHIFTED defined
+     * in UCA, this causes codepoints with PRIMARY orders that are equal or
+     * below the variable top value to be ignored in PRIMARY order and
+     * moved to the QUATERNARY order.
+     * @param shifted true if SHIFTED behaviour for alternate handling is
+     *        desired, false for the NON_IGNORABLE behaviour.
+     * @see #isAlternateHandlingShifted
+     * @see #setAlternateHandlingDefault
+     * @stable ICU 2.8
+     */
+    public void setAlternateHandlingShifted(boolean shifted)
+    {
+        m_isAlternateHandlingShifted_ = shifted;
+        updateInternalState();
+    }
+
+    /**
+     * <p>
+     * When case level is set to true, an additional weight is formed
+     * between the SECONDARY and TERTIARY weight, known as the case level.
+     * The case level is used to distinguish large and small Japanese Kana
+     * characters. Case level could also be used in other situations.
+     * For example to distinguish certain Pinyin characters.
+     * The default value is false, which means the case level is not generated.
+     * The contents of the case level are affected by the case first
+     * mode. A simple way to ignore accent differences in a string is to set
+     * the strength to PRIMARY and enable case level.
+     * </p>
+     * <p>
+     * See the section on
+     * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+     * case level</a> for more information.
+     * </p>
+     * @param flag true if case level sorting is required, false otherwise
+     * @stable ICU 2.8
+     * @see #setCaseLevelDefault
+     * @see #isCaseLevel
+     */
+    public void setCaseLevel(boolean flag)
+    {
+        m_isCaseLevel_ = flag;
+        updateInternalState();
+    }
+
+    /**
+     * <p>
+     * Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.
+     * </p>
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #setStrengthDefault
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException If the new strength value is not one
+     *              of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength)
+    {
+        super.setStrength(newStrength);
+        updateInternalState();
+    }
+    
+    /** 
+     * <p>
+     * Variable top is a two byte primary value which causes all the codepoints 
+     * with primary values that are less or equal than the variable top to be 
+     * shifted when alternate handling is set to SHIFTED.
+     * </p>
+     * <p>
+     * Sets the variable top to a collation element value of a string supplied.
+     * </p> 
+     * @param varTop one or more (if contraction) characters to which the 
+     *               variable top should be set
+     * @return a int value containing the value of the variable top in upper 16
+     *         bits. Lower 16 bits are undefined.
+     * @exception IllegalArgumentException is thrown if varTop argument is not 
+     *            a valid variable top element. A variable top element is 
+     *            invalid when 
+     *            <ul>
+     *            <li>it is a contraction that does not exist in the
+     *                Collation order
+     *            <li>when the PRIMARY strength collation element for the 
+     *                variable top has more than two bytes
+     *            <li>when the varTop argument is null or zero in length.
+     *            </ul>
+     * @see #getVariableTop
+     * @see RuleBasedCollator#setAlternateHandlingShifted
+     * @stable ICU 2.6
+     */
+    public int setVariableTop(String varTop)
+    {
+        if (varTop == null || varTop.length() == 0) {
+            throw new IllegalArgumentException(
+            "Variable top argument string can not be null or zero in length.");
+        }
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+
+        m_srcUtilColEIter_.setText(varTop);
+        int ce = m_srcUtilColEIter_.next();
+        
+        // here we check if we have consumed all characters 
+        // you can put in either one character or a contraction
+        // you shouldn't put more... 
+        if (m_srcUtilColEIter_.getOffset() != varTop.length() 
+            || ce == CollationElementIterator.NULLORDER) {
+            throw new IllegalArgumentException(
+            "Variable top argument string is a contraction that does not exist "
+            + "in the Collation order");
+        }
+        
+        int nextCE = m_srcUtilColEIter_.next();
+        
+        if ((nextCE != CollationElementIterator.NULLORDER) 
+            && (!isContinuation(nextCE) || (nextCE & CE_PRIMARY_MASK_) != 0)) {
+                throw new IllegalArgumentException(
+                "Variable top argument string can only have a single collation "
+                + "element that has less than or equal to two PRIMARY strength "
+                + "bytes");
+        }
+        
+        m_variableTopValue_ = (ce & CE_PRIMARY_MASK_) >> 16;
+        
+        return ce & CE_PRIMARY_MASK_;
+    }
+    
+    /** 
+     * Sets the variable top to a collation element value supplied.
+     * Variable top is set to the upper 16 bits. 
+     * Lower 16 bits are ignored.
+     * @param varTop Collation element value, as returned by setVariableTop or 
+     *               getVariableTop
+     * @see #getVariableTop
+     * @see #setVariableTop(String)
+     * @stable ICU 2.6
+     */
+    public void setVariableTop(int varTop)
+    {
+        m_variableTopValue_ = (varTop & CE_PRIMARY_MASK_) >> 16;
+    }
+    
+    /**
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @param flag true to turn numeric collation on and false to turn it off
+     * @see #getNumericCollation
+     * @see #setNumericCollationDefault
+     * @stable ICU 2.8
+     */
+    public void setNumericCollation(boolean flag)
+    {
+        // sort substrings of digits as numbers
+        m_isNumericCollation_ = flag;
+        updateInternalState();
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the collation rules for this RuleBasedCollator.
+     * Equivalent to String getRules(RuleOption.FULL_RULES).
+     * @return returns the collation rules
+     * @see #getRules(boolean)
+     * @stable ICU 2.8
+     */
+    public String getRules()
+    {
+        return m_rules_;
+    }
+    
+    /**
+     * Returns current rules. The argument defines whether full rules 
+     * (UCA + tailored) rules are returned or just the tailoring. 
+     * @param fullrules true if the rules that defines the full set of 
+     *        collation order is required, otherwise false for returning only 
+     *        the tailored rules
+     * @return the current rules that defines this Collator.
+     * @see #getRules()
+     * @stable ICU 2.6
+     */
+    public String getRules(boolean fullrules)
+    {
+        if (!fullrules) {
+            return m_rules_;
+        }
+        // take the UCA rules and append real rules at the end 
+        return UCA_.m_rules_.concat(m_rules_);
+    }
+
+    /**
+     * Get an UnicodeSet that contains all the characters and sequences
+     * tailored in this collator.
+     * @return a pointer to a UnicodeSet object containing all the
+     *         code points and sequences that may sort differently than
+     *         in the UCA.
+     * @exception ParseException thrown when argument rules have an
+     *            invalid syntax. IOException
+     * @stable ICU 2.4
+     */
+    public UnicodeSet getTailoredSet()
+    {
+        try {
+           CollationRuleParser src = new CollationRuleParser(getRules());
+           return src.getTailoredSet();
+        } catch(Exception e) {
+            throw new IllegalStateException("A tailoring rule should not " +
+                "have errors. Something is quite wrong!");
+        }
+    }
+
+    private class contContext {
+        RuleBasedCollator coll;
+        UnicodeSet contractions;
+        UnicodeSet expansions;
+        UnicodeSet removedContractions;
+        boolean addPrefixes;       
+        contContext(RuleBasedCollator coll, UnicodeSet contractions, UnicodeSet expansions, 
+                UnicodeSet removedContractions, boolean addPrefixes) {
+            this.coll = coll;
+            this.contractions = contractions;
+            this.expansions = expansions;
+            this.removedContractions = removedContractions;
+            this.addPrefixes = addPrefixes;
+        }
+    }
+    
+    private void
+    addSpecial(contContext c, StringBuffer buffer, int CE)
+    {
+        StringBuffer b = new StringBuffer();
+        int offset = (CE & 0xFFFFFF) - c.coll.m_contractionOffset_;
+        int newCE = c.coll.m_contractionCE_[offset];
+        // we might have a contraction that ends from previous level
+        if(newCE != CollationElementIterator.CE_NOT_FOUND_) {
+            if(isSpecial(CE) && getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_ 
+                    && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_ 
+                    && c.addPrefixes) {
+                addSpecial(c, buffer, newCE);
+            }
+            if(buffer.length() > 1) {
+                if(c.contractions != null) {
+                    c.contractions.add(buffer.toString());
+                }
+                if(c.expansions != null && isSpecial(CE) && getTag(CE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    c.expansions.add(buffer.toString());
+                }
+            }
+        }    
+        
+        offset++;
+        // check whether we're doing contraction or prefix
+        if(getTag(CE) == CollationElementIterator.CE_SPEC_PROC_TAG_ && c.addPrefixes) {
+            while(c.coll.m_contractionIndex_[offset] != 0xFFFF) {
+                b.delete(0, b.length());
+                b.append(buffer);
+                newCE = c.coll.m_contractionCE_[offset];
+                b.insert(0, c.coll.m_contractionIndex_[offset]);
+                if(isSpecial(newCE) && (getTag(newCE) == CollationElementIterator.CE_CONTRACTION_TAG_ || getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_)) {
+                    addSpecial(c, b, newCE);
+                } else {
+                    if(c.contractions != null) {
+                        c.contractions.add(b.toString());
+                    }
+                    if(c.expansions != null && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                        c.expansions.add(b.toString());
+                    }
+                }
+                offset++;
+            }
+        } else if(getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+            while(c.coll.m_contractionIndex_[offset] != 0xFFFF) {
+                b.delete(0, b.length());
+                b.append(buffer);
+                newCE = c.coll.m_contractionCE_[offset];
+                b.append(c.coll.m_contractionIndex_[offset]);
+                if(isSpecial(newCE) && (getTag(newCE) == CollationElementIterator.CE_CONTRACTION_TAG_ || getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_)) {
+                    addSpecial(c, b, newCE);
+                } else {
+                    if(c.contractions != null) {
+                        c.contractions.add(b.toString());
+                    }
+                    if(c.expansions != null && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                        c.expansions.add(b.toString());
+                    }
+                }
+                offset++;
+            }
+        }
+    }
+    
+    private
+    void processSpecials(contContext c) 
+    {
+        int internalBufferSize = 512;
+        TrieIterator trieiterator 
+        = new TrieIterator(c.coll.m_trie_);
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (trieiterator.next(element)) {
+            int start = element.start;
+            int limit = element.limit;
+            int CE = element.value;
+            StringBuffer contraction = new StringBuffer(internalBufferSize);
+            
+            if(isSpecial(CE)) {
+                if(((getTag(CE) == CollationElementIterator.CE_SPEC_PROC_TAG_ && c.addPrefixes) || getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_)) {
+                    while(start < limit) {
+                        // if there are suppressed contractions, we don't 
+                        // want to add them.
+                        if(c.removedContractions != null && c.removedContractions.contains(start)) {
+                            start++;
+                            continue;
+                        }
+                        // we start our contraction from middle, since we don't know if it
+                        // will grow toward right or left
+                        contraction.append((char) start);
+                        addSpecial(c, contraction, CE);
+                        start++;
+                    }
+                } else if(c.expansions != null && getTag(CE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    while(start < limit) {
+                        c.expansions.add(start++);
+                    }
+                }
+            }
+        }
+    }
+    
+    /**
+     * Gets unicode sets containing contractions and/or expansions of a collator
+     * @param contractions if not null, set to contain contractions
+     * @param expansions if not null, set to contain expansions
+     * @param addPrefixes add the prefix contextual elements to contractions
+     * @throws Exception 
+     * @stable ICU 3.4
+     */
+    public void
+    getContractionsAndExpansions(UnicodeSet contractions, UnicodeSet expansions,
+            boolean addPrefixes) throws Exception {
+        if(contractions != null) {
+            contractions.clear();
+        }
+        if(expansions != null) {
+            expansions.clear();
+        }
+        String rules = getRules();
+        try {
+            CollationRuleParser src = new CollationRuleParser(rules);
+            contContext c = new contContext(RuleBasedCollator.UCA_, 
+                    contractions, expansions, src.m_removeSet_, addPrefixes);
+            
+            // Add the UCA contractions
+            processSpecials(c);
+            // This is collator specific. Add contractions from a collator
+            c.coll = this;
+            c.removedContractions =  null;
+            processSpecials(c);
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+    
+    /**
+     * <p>
+     * Get a Collation key for the argument String source from this
+     * RuleBasedCollator.
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * <p>
+     * See the class documentation for an explanation about CollationKeys.
+     * </p>
+     * @param source the text String to be transformed into a collation key.
+     * @return the CollationKey for the given String based on this
+     *         RuleBasedCollator's collation rules. If the source String is
+     *         null, a null CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @see #getRawCollationKey
+     * @stable ICU 2.8
+     */
+    public CollationKey getCollationKey(String source) {
+        if (source == null) {
+            return null;
+        }
+        m_utilRawCollationKey_ = getRawCollationKey(source, 
+                                                    m_utilRawCollationKey_);
+        return new CollationKey(source, m_utilRawCollationKey_);
+    }
+    
+    /**
+     * Gets the simpler form of a CollationKey for the String source following
+     * the rules of this Collator and stores the result into the user provided 
+     * argument key. 
+     * If key has a internal byte array of length that's too small for the 
+     * result, the internal byte array will be grown to the exact required 
+     * size.
+     * @param source the text String to be transformed into a RawCollationKey  
+     * @param key output RawCollationKey to store results
+     * @return If key is null, a new instance of RawCollationKey will be 
+     *         created and returned, otherwise the user provided key will be 
+     *         returned.
+     * @see #getCollationKey 
+     * @see #compare(String, String)
+     * @see RawCollationKey
+     * @stable ICU 2.8
+     */
+    public RawCollationKey getRawCollationKey(String source, 
+                                              RawCollationKey key)
+    {
+        if (source == null) {
+            return null;
+        }
+        int strength = getStrength();
+        m_utilCompare0_ = m_isCaseLevel_;
+        //m_utilCompare1_ = true;
+        m_utilCompare2_ = strength >= SECONDARY;
+        m_utilCompare3_ = strength >= TERTIARY;
+        m_utilCompare4_ = strength >= QUATERNARY;
+        m_utilCompare5_ = strength == IDENTICAL;
+
+        m_utilBytesCount0_ = 0;
+        m_utilBytesCount1_ = 0;
+        m_utilBytesCount2_ = 0;
+        m_utilBytesCount3_ = 0;
+        m_utilBytesCount4_ = 0;
+        //m_utilBytesCount5_ = 0;
+        //m_utilCount0_ = 0;
+        //m_utilCount1_ = 0;
+        m_utilCount2_ = 0;
+        m_utilCount3_ = 0;
+        m_utilCount4_ = 0;
+        //m_utilCount5_ = 0;
+        boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+        // TODO: UCOL_COMMON_BOT4 should be a function of qShifted.
+        // If we have no qShifted, we don't need to set UCOL_COMMON_BOT4 so
+        // high.
+        int commonBottom4 = ((m_variableTopValue_ >>> 8) + 1) & LAST_BYTE_MASK_;
+        byte hiragana4 = 0;
+        if (m_isHiragana4_ && m_utilCompare4_) {
+            // allocate one more space for hiragana, value for hiragana
+            hiragana4 = (byte)commonBottom4;
+            commonBottom4 ++;
+        }
+
+        int bottomCount4 = 0xFF - commonBottom4;
+        // If we need to normalize, we'll do it all at once at the beginning!
+        if (m_utilCompare5_ && Normalizer.quickCheck(source, Normalizer.NFD,0)
+                                                    != Normalizer.YES) {
+            // if it is identical strength, we have to normalize the string to
+            // NFD so that it will be appended correctly to the end of the sort
+            // key
+            source = Normalizer.decompose(source, false);
+        }
+        else if (getDecomposition() != NO_DECOMPOSITION
+            && Normalizer.quickCheck(source, Normalizer.FCD,0)
+                                                    != Normalizer.YES) {
+            // for the rest of the strength, if decomposition is on, FCD is
+            // enough for us to work on.
+            source = Normalizer.normalize(source,Normalizer.FCD);
+        }
+        getSortKeyBytes(source, doFrench, hiragana4, commonBottom4,
+                        bottomCount4);
+        if (key == null) {
+            key = new RawCollationKey();
+        }
+        getSortKey(source, doFrench, commonBottom4, bottomCount4, key);
+        return key;
+    }
+
+    /**
+     * Return true if an uppercase character is sorted before the corresponding lowercase character.
+     * See setCaseFirst(boolean) for details.
+     * @see #setUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #isLowerCaseFirst
+     * @see #setCaseFirstDefault
+     * @return true if upper cased characters are sorted before lower cased
+     *         characters, false otherwise
+     * @stable ICU 2.8
+     */
+     public boolean isUpperCaseFirst()
+     {
+        return (m_caseFirst_ == AttributeValue.UPPER_FIRST_);
+     }
+     
+    /**
+     * Return true if a lowercase character is sorted before the corresponding uppercase character.
+     * See setCaseFirst(boolean) for details.
+     * @see #setUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setCaseFirstDefault
+     * @return true lower cased characters are sorted before upper cased
+     *         characters, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isLowerCaseFirst()
+    {
+        return (m_caseFirst_ == AttributeValue.LOWER_FIRST_);
+    }
+
+    /**
+     * Checks if the alternate handling behaviour is the UCA defined SHIFTED or
+     * NON_IGNORABLE.
+     * If return value is true, then the alternate handling attribute for the
+     * Collator is SHIFTED. Otherwise if return value is false, then the
+     * alternate handling attribute for the Collator is NON_IGNORABLE
+     * See setAlternateHandlingShifted(boolean) for more details.
+     * @return true or false
+     * @see #setAlternateHandlingShifted(boolean)
+     * @see #setAlternateHandlingDefault
+     * @stable ICU 2.8
+     */
+    public boolean isAlternateHandlingShifted()
+    {
+        return m_isAlternateHandlingShifted_;
+    }
+
+    /**
+     * Checks if case level is set to true.
+     * See setCaseLevel(boolean) for details.
+     * @return the case level mode
+     * @see #setCaseLevelDefault
+     * @see #isCaseLevel
+     * @see #setCaseLevel(boolean)
+     * @stable ICU 2.8
+     */
+    public boolean isCaseLevel()
+    {
+        return m_isCaseLevel_;
+    }
+
+    /**
+     * Checks if French Collation is set to true.
+     * See setFrenchCollation(boolean) for details.
+     * @return true if French Collation is set to true, false otherwise
+     * @see #setFrenchCollation(boolean)
+     * @see #setFrenchCollationDefault
+     * @stable ICU 2.8
+     */
+     public boolean isFrenchCollation()
+     {
+         return m_isFrenchCollation_;
+     }
+
+    /**
+     * Checks if the Hiragana Quaternary mode is set on.
+     * See setHiraganaQuaternary(boolean) for more details.
+     * @return flag true if Hiragana Quaternary mode is on, false otherwise
+     * @see #setHiraganaQuaternaryDefault
+     * @see #setHiraganaQuaternary(boolean)
+     * @stable ICU 2.8
+     */
+    public boolean isHiraganaQuaternary()
+    {
+        return m_isHiragana4_;
+    }
+
+    /** 
+     * Gets the variable top value of a Collator. 
+     * Lower 16 bits are undefined and should be ignored.
+     * @return the variable top value of a Collator.
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public int getVariableTop()
+    {
+          return m_variableTopValue_ << 16;
+    }
+    
+    /** 
+     * Method to retrieve the numeric collation value.
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @see #setNumericCollation
+     * @see #setNumericCollationDefault
+     * @return true if numeric collation is turned on, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean getNumericCollation()
+    {
+        return m_isNumericCollation_;
+    }
+    
+    // public other methods -------------------------------------------------
+
+    /**
+     * Compares the equality of two RuleBasedCollator objects.
+     * RuleBasedCollator objects are equal if they have the same collation
+     * rules and the same attributes.
+     * @param obj the RuleBasedCollator to be compared to.
+     * @return true if this RuleBasedCollator has exactly the same
+     *         collation behaviour as obj, false otherwise.
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) {
+            return false;  // super does class check
+        }
+        if (this == obj) {
+            return true;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        RuleBasedCollator other = (RuleBasedCollator)obj;
+        // all other non-transient information is also contained in rules.
+        if (getStrength() != other.getStrength()
+               || getDecomposition() != other.getDecomposition()
+               || other.m_caseFirst_ != m_caseFirst_
+               || other.m_caseSwitch_ != m_caseSwitch_
+               || other.m_isAlternateHandlingShifted_
+                                             != m_isAlternateHandlingShifted_
+               || other.m_isCaseLevel_ != m_isCaseLevel_
+               || other.m_isFrenchCollation_ != m_isFrenchCollation_
+               || other.m_isHiragana4_ != m_isHiragana4_) {
+            return false;
+        }
+        boolean rules = m_rules_ == other.m_rules_;
+        if (!rules && (m_rules_ != null && other.m_rules_ != null)) {
+            rules = m_rules_.equals(other.m_rules_);
+        }
+        if (!rules || !ICUDebug.enabled("collation")) {
+            return rules;
+        }
+        if (m_addition3_ != other.m_addition3_
+                  || m_bottom3_ != other.m_bottom3_
+                  || m_bottomCount3_ != other.m_bottomCount3_
+                  || m_common3_ != other.m_common3_
+                  || m_isSimple3_ != other.m_isSimple3_
+                  || m_mask3_ != other.m_mask3_
+                  || m_minContractionEnd_ != other.m_minContractionEnd_
+                  || m_minUnsafe_ != other.m_minUnsafe_
+                  || m_top3_ != other.m_top3_
+                  || m_topCount3_ != other.m_topCount3_
+                  || !Arrays.equals(m_unsafe_, other.m_unsafe_)) {
+            return false;
+        }
+        if (!m_trie_.equals(other.m_trie_)) {
+            // we should use the trie iterator here, but then this part is
+            // only used in the test.
+            for (int i = UCharacter.MAX_VALUE; i >= UCharacter.MIN_VALUE; i --)
+            {
+                int v = m_trie_.getCodePointValue(i);
+                int otherv = other.m_trie_.getCodePointValue(i);
+                if (v != otherv) {
+                    int mask = v & (CE_TAG_MASK_ | CE_SPECIAL_FLAG_);
+                    if (mask == (otherv & 0xff000000)) {
+                        v &= 0xffffff;
+                        otherv &= 0xffffff;
+                        if (mask == 0xf1000000) {
+                            v -= (m_expansionOffset_ << 4);
+                            otherv -= (other.m_expansionOffset_ << 4);
+                        }
+                        else if (mask == 0xf2000000) {
+                            v -= m_contractionOffset_;
+                            otherv -= other.m_contractionOffset_;
+                        }
+                        if (v == otherv) {
+                            continue;
+                        }
+                    }
+                    return false;
+                }
+            }
+        }
+        if (Arrays.equals(m_contractionCE_, other.m_contractionCE_)
+            && Arrays.equals(m_contractionEnd_, other.m_contractionEnd_)
+            && Arrays.equals(m_contractionIndex_, other.m_contractionIndex_)
+            && Arrays.equals(m_expansion_, other.m_expansion_)
+            && Arrays.equals(m_expansionEndCE_, other.m_expansionEndCE_)) {
+            // not comparing paddings
+            for (int i = 0; i < m_expansionEndCE_.length; i ++) {
+                 if (m_expansionEndCEMaxSize_[i]
+                     != other.m_expansionEndCEMaxSize_[i]) {
+                     return false;
+                 }
+                 return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Generates a unique hash code for this RuleBasedCollator.
+     * @return the unique hash code for this Collator
+     * @stable ICU 2.8
+     */
+    public int hashCode()
+    {
+        String rules = getRules();
+        if (rules == null) {
+            rules = "";
+        }
+        return rules.hashCode();
+    }
+
+    /**
+     * Compares the source text String to the target text String according to
+     * the collation rules, strength and decomposition mode for this
+     * RuleBasedCollator.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If speed performance is critical and object instantiation is to be 
+     * reduced, further optimization may be achieved by generating a simpler 
+     * key of the form RawCollationKey and reusing this RawCollationKey 
+     * object with the method RuleBasedCollator.getRawCollationKey. Internal 
+     * byte representation can be directly accessed via RawCollationKey and
+     * stored for future use. Like CollationKey, RawCollationKey provides a
+     * method RawCollationKey.compareTo for key comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * @param source the source text String.
+     * @param target the target text String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @stable ICU 2.8
+     */
+    public int compare(String source, String target)
+    {
+        if (source == target) {
+            return 0;
+        }
+
+        // Find the length of any leading portion that is equal
+        int offset = getFirstUnmatchedOffset(source, target);
+        //return compareRegular(source, target, offset);
+        if(latinOneUse_) {
+          if ((offset < source.length() 
+               && source.charAt(offset) > ENDOFLATINONERANGE_) 
+              || (offset < target.length() 
+                  && target.charAt(offset) > ENDOFLATINONERANGE_)) { 
+              // source or target start with non-latin-1
+            return compareRegular(source, target, offset);
+          } else {
+            return compareUseLatin1(source, target, offset);
+          }
+        } else {
+          return compareRegular(source, target, offset);
+        }
+    }
+    
+    // package private inner interfaces --------------------------------------
+
+    /**
+     * Attribute values to be used when setting the Collator options
+     */
+    static interface AttributeValue
+    {
+        /**
+         * Indicates that the default attribute value will be used.
+         * See individual attribute for details on its default value.
+         */
+        static final int DEFAULT_ = -1;
+        /**
+         * Primary collation strength
+         */
+        static final int PRIMARY_ = Collator.PRIMARY;
+        /**
+         * Secondary collation strength
+         */
+        static final int SECONDARY_ = Collator.SECONDARY;
+        /**
+         * Tertiary collation strength
+         */
+        static final int TERTIARY_ = Collator.TERTIARY;
+        /**
+         * Default collation strength
+         */
+        static final int DEFAULT_STRENGTH_ = Collator.TERTIARY;
+        /**
+         * Internal use for strength checks in Collation elements
+         */
+        static final int CE_STRENGTH_LIMIT_ = Collator.TERTIARY + 1;
+        /**
+         * Quaternary collation strength
+         */
+        static final int QUATERNARY_ = 3;
+        /**
+         * Identical collation strength
+         */
+        static final int IDENTICAL_ = Collator.IDENTICAL;
+        /**
+         * Internal use for strength checks
+         */
+        static final int STRENGTH_LIMIT_ = Collator.IDENTICAL + 1;
+        /**
+         * Turn the feature off - works for FRENCH_COLLATION, CASE_LEVEL,
+         * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+         */
+        static final int OFF_ = 16;
+        /**
+         * Turn the feature on - works for FRENCH_COLLATION, CASE_LEVEL,
+         * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+         */
+        static final int ON_ = 17;
+        /**
+         * Valid for ALTERNATE_HANDLING. Alternate handling will be shifted
+         */
+        static final int SHIFTED_ = 20;
+        /**
+         * Valid for ALTERNATE_HANDLING. Alternate handling will be non
+         * ignorable
+         */
+        static final int NON_IGNORABLE_ = 21;
+        /**
+         * Valid for CASE_FIRST - lower case sorts before upper case
+         */
+        static final int LOWER_FIRST_ = 24;
+        /**
+         * Upper case sorts before lower case
+         */
+        static final int UPPER_FIRST_ = 25;
+        /**
+         * Number of attribute values
+         */
+        static final int LIMIT_ = 29;
+    }
+
+    /**
+     * Attributes that collation service understands. All the attributes can
+     * take DEFAULT value, as well as the values specific to each one.
+     */
+    static interface Attribute
+    {
+        /**
+         * Attribute for direction of secondary weights - used in French.
+         * Acceptable values are ON, which results in secondary weights being
+         * considered backwards and OFF which treats secondary weights in the
+         * order they appear.
+         */
+        static final int FRENCH_COLLATION_ = 0;
+        /**
+         * Attribute for handling variable elements. Acceptable values are
+         * NON_IGNORABLE (default) which treats all the codepoints with
+         * non-ignorable primary weights in the same way, and SHIFTED which
+         * causes codepoints with primary weights that are equal or below the
+         * variable top value to be ignored on primary level and moved to the
+         * quaternary level.
+         */
+        static final int ALTERNATE_HANDLING_ = 1;
+        /**
+         * Controls the ordering of upper and lower case letters. Acceptable
+         * values are OFF (default), which orders upper and lower case letters
+         * in accordance to their tertiary weights, UPPER_FIRST which forces
+         * upper case letters to sort before lower case letters, and
+         * LOWER_FIRST which does the opposite.
+         */
+        static final int CASE_FIRST_ = 2;
+        /**
+         * Controls whether an extra case level (positioned before the third
+         * level) is generated or not. Acceptable values are OFF (default),
+         * when case level is not generated, and ON which causes the case
+         * level to be generated. Contents of the case level are affected by
+         * the value of CASE_FIRST attribute. A simple way to ignore accent
+         * differences in a string is to set the strength to PRIMARY and
+         * enable case level.
+         */
+        static final int CASE_LEVEL_ = 3;
+        /**
+         * Controls whether the normalization check and necessary
+         * normalizations are performed. When set to OFF (default) no
+         * normalization check is performed. The correctness of the result is
+         * guaranteed only if the input data is in so-called FCD form (see
+         * users manual for more info). When set to ON, an incremental check
+         * is performed to see whether the input data is in the FCD form. If
+         * the data is not in the FCD form, incremental NFD normalization is
+         * performed.
+         */
+        static final int NORMALIZATION_MODE_ = 4;
+        /**
+         * The strength attribute. Can be either PRIMARY, SECONDARY, TERTIARY,
+         * QUATERNARY or IDENTICAL. The usual strength for most locales
+         * (except Japanese) is tertiary. Quaternary strength is useful when
+         * combined with shifted setting for alternate handling attribute and
+         * for JIS x 4061 collation, when it is used to distinguish between
+         * Katakana  and Hiragana (this is achieved by setting the
+         * HIRAGANA_QUATERNARY mode to on. Otherwise, quaternary level is
+         * affected only by the number of non ignorable code points in the
+         * string. Identical strength is rarely useful, as it amounts to
+         * codepoints of the NFD form of the string.
+         */
+        static final int STRENGTH_ = 5;
+        /**
+         * When turned on, this attribute positions Hiragana before all
+         * non-ignorables on quaternary level. This is a sneaky way to produce
+         * JIS sort order.
+         */
+        static final int HIRAGANA_QUATERNARY_MODE_ = 6;
+        /**
+         * Attribute count
+         */
+        static final int LIMIT_ = 7;
+    }
+
+    /**
+     * DataManipulate singleton
+     */
+    static class DataManipulate implements Trie.DataManipulate
+    {
+        // public methods ----------------------------------------------------
+
+        /**
+         * Internal method called to parse a lead surrogate's ce for the offset
+         * to the next trail surrogate data.
+         * @param ce collation element of the lead surrogate
+         * @return data offset or 0 for the next trail surrogate
+         * @stable ICU 2.8
+         */
+        public final int getFoldingOffset(int ce)
+        {
+            if (isSpecial(ce) && getTag(ce) == CE_SURROGATE_TAG_) {
+                return (ce & 0xFFFFFF);
+            }
+            return 0;
+        }
+
+        /**
+         * Get singleton object
+         */
+        public static final DataManipulate getInstance()
+        {
+            if (m_instance_ == null) {
+                m_instance_ =  new DataManipulate();
+            }
+            return m_instance_;
+        }
+
+        // private data member ----------------------------------------------
+
+        /**
+         * Singleton instance
+         */
+        private static DataManipulate m_instance_;
+
+        // private constructor ----------------------------------------------
+
+        /**
+         * private to prevent initialization
+         */
+        private DataManipulate()
+        {
+        }
+    }
+
+    /**
+     * UCAConstants
+     */
+    static final class UCAConstants
+    {
+         int FIRST_TERTIARY_IGNORABLE_[] = new int[2];       // 0x00000000
+         int LAST_TERTIARY_IGNORABLE_[] = new int[2];        // 0x00000000
+         int FIRST_PRIMARY_IGNORABLE_[] = new int[2];        // 0x00008705
+         int FIRST_SECONDARY_IGNORABLE_[] = new int[2];      // 0x00000000
+         int LAST_SECONDARY_IGNORABLE_[] = new int[2];       // 0x00000500
+         int LAST_PRIMARY_IGNORABLE_[] = new int[2];         // 0x0000DD05
+         int FIRST_VARIABLE_[] = new int[2];                 // 0x05070505
+         int LAST_VARIABLE_[] = new int[2];                  // 0x13CF0505
+         int FIRST_NON_VARIABLE_[] = new int[2];             // 0x16200505
+         int LAST_NON_VARIABLE_[] = new int[2];              // 0x767C0505
+         int RESET_TOP_VALUE_[] = new int[2];                // 0x9F000303
+         int FIRST_IMPLICIT_[] = new int[2];
+         int LAST_IMPLICIT_[] = new int[2];
+         int FIRST_TRAILING_[] = new int[2];
+         int LAST_TRAILING_[] = new int[2];
+         int PRIMARY_TOP_MIN_;
+         int PRIMARY_IMPLICIT_MIN_; // 0xE8000000
+         int PRIMARY_IMPLICIT_MAX_; // 0xF0000000
+         int PRIMARY_TRAILING_MIN_; // 0xE8000000
+         int PRIMARY_TRAILING_MAX_; // 0xF0000000
+         int PRIMARY_SPECIAL_MIN_; // 0xE8000000
+         int PRIMARY_SPECIAL_MAX_; // 0xF0000000
+    }
+
+    // package private data member -------------------------------------------
+
+    static final byte BYTE_FIRST_TAILORED_ = (byte)0x04;
+    static final byte BYTE_COMMON_ = (byte)0x05;
+    static final int COMMON_TOP_2_ = 0x86; // int for unsigness
+    static final int COMMON_BOTTOM_2_ = BYTE_COMMON_;
+    static final int COMMON_BOTTOM_3 = 0x05;
+    /**
+     * Case strength mask
+     */
+    static final int CE_CASE_BIT_MASK_ = 0xC0;
+    static final int CE_TAG_SHIFT_ = 24;
+    static final int CE_TAG_MASK_ = 0x0F000000;
+
+    static final int CE_SPECIAL_FLAG_ = 0xF0000000;
+    /**
+     * Lead surrogate that is tailored and doesn't start a contraction
+     */
+    static final int CE_SURROGATE_TAG_ = 5;
+    /**
+     * Mask to get the primary strength of the collation element
+     */
+    static final int CE_PRIMARY_MASK_ = 0xFFFF0000;
+    /**
+     * Mask to get the secondary strength of the collation element
+     */
+    static final int CE_SECONDARY_MASK_ = 0xFF00;
+    /**
+     * Mask to get the tertiary strength of the collation element
+     */
+    static final int CE_TERTIARY_MASK_ = 0xFF;
+    /**
+     * Primary strength shift
+     */
+    static final int CE_PRIMARY_SHIFT_ = 16;
+    /**
+     * Secondary strength shift
+     */
+    static final int CE_SECONDARY_SHIFT_ = 8;
+    /**
+     * Continuation marker
+     */
+    static final int CE_CONTINUATION_MARKER_ = 0xC0;
+
+    /**
+     * Size of collator raw data headers and options before the expansion
+     * data. This is used when expansion ces are to be retrieved. ICU4C uses
+     * the expansion offset starting from UCollator.UColHeader, hence ICU4J
+     * will have to minus that off to get the right expansion ce offset. In
+     * number of ints.
+     */
+    int m_expansionOffset_;
+    /**
+     * Size of collator raw data headers, options and expansions before
+     * contraction data. This is used when contraction ces are to be retrieved.
+     * ICU4C uses contraction offset starting from UCollator.UColHeader, hence
+     * ICU4J will have to minus that off to get the right contraction ce
+     * offset. In number of chars.
+     */
+    int m_contractionOffset_;
+    /**
+     * Flag indicator if Jamo is special
+     */
+    boolean m_isJamoSpecial_;
+
+    // Collator options ------------------------------------------------------
+    
+    int m_defaultVariableTopValue_;
+    boolean m_defaultIsFrenchCollation_;
+    boolean m_defaultIsAlternateHandlingShifted_;
+    int m_defaultCaseFirst_;
+    boolean m_defaultIsCaseLevel_;
+    int m_defaultDecomposition_;
+    int m_defaultStrength_;
+    boolean m_defaultIsHiragana4_;
+    boolean m_defaultIsNumericCollation_;
+    
+    /**
+     * Value of the variable top
+     */
+    int m_variableTopValue_;
+    /**
+     * Attribute for special Hiragana
+     */
+    boolean m_isHiragana4_;
+    /**
+     * Case sorting customization
+     */
+    int m_caseFirst_;
+    /**
+     * Numeric collation option
+     */
+    boolean m_isNumericCollation_;
+
+    // end Collator options --------------------------------------------------
+
+    /**
+     * Expansion table
+     */
+    int m_expansion_[];
+    /**
+     * Contraction index table
+     */
+    char m_contractionIndex_[];
+    /**
+     * Contraction CE table
+     */
+    int m_contractionCE_[];
+    /**
+     * Data trie
+     */
+    IntTrie m_trie_;
+    /**
+     * Table to store all collation elements that are the last element of an
+     * expansion. This is for use in StringSearch.
+     */
+    int m_expansionEndCE_[];
+    /**
+     * Table to store the maximum size of any expansions that end with the
+     * corresponding collation element in m_expansionEndCE_. For use in
+     * StringSearch too
+     */
+    byte m_expansionEndCEMaxSize_[];
+    /**
+     * Heuristic table to store information on whether a char character is
+     * considered "unsafe". "Unsafe" character are combining marks or those
+     * belonging to some contraction sequence from the offset 1 onwards.
+     * E.g. if "ABC" is the only contraction, then 'B' and 'C' are considered
+     * unsafe. If we have another contraction "ZA" with the one above, then
+     * 'A', 'B', 'C' are "unsafe" but 'Z' is not.
+     */
+    byte m_unsafe_[];
+    /**
+     * Table to store information on whether a codepoint can occur as the last
+     * character in a contraction
+     */
+    byte m_contractionEnd_[];
+    /**
+     * Original collation rules
+     */
+    String m_rules_;
+    /**
+     * The smallest "unsafe" codepoint
+     */
+    char m_minUnsafe_;
+    /**
+     * The smallest codepoint that could be the end of a contraction
+     */
+    char m_minContractionEnd_;
+    /**
+     * General version of the collator
+     */
+    VersionInfo m_version_;
+    /**
+     * UCA version
+     */
+    VersionInfo m_UCA_version_;
+    /**
+     * UCD version
+     */
+    VersionInfo m_UCD_version_;
+
+    /**
+     * UnicodeData.txt property object
+     */
+    static final RuleBasedCollator UCA_;
+    /**
+     * UCA Constants
+     */
+    static final UCAConstants UCA_CONSTANTS_;
+    /**
+     * Table for UCA and builder use
+     */
+    static final char UCA_CONTRACTIONS_[];
+
+    private static boolean UCA_INIT_COMPLETE;
+
+    /**
+     * Implicit generator
+     */
+    static final ImplicitCEGenerator impCEGen_;
+//    /**
+//     * Implicit constants
+//     */
+//    static final int IMPLICIT_BASE_BYTE_;
+//    static final int IMPLICIT_LIMIT_BYTE_;
+//    static final int IMPLICIT_4BYTE_BOUNDARY_;
+//    static final int LAST_MULTIPLIER_;
+//    static final int LAST2_MULTIPLIER_;
+//    static final int IMPLICIT_BASE_3BYTE_;
+//    static final int IMPLICIT_BASE_4BYTE_;
+//    static final int BYTES_TO_AVOID_ = 3;
+//    static final int OTHER_COUNT_ = 256 - BYTES_TO_AVOID_;
+//    static final int LAST_COUNT_ = OTHER_COUNT_ / 2;
+//    /**
+//     * Room for intervening, without expanding to 5 bytes
+//     */
+//    static final int LAST_COUNT2_ = OTHER_COUNT_ / 21;
+//    static final int IMPLICIT_3BYTE_COUNT_ = 1;
+//    
+    static final byte SORT_LEVEL_TERMINATOR_ = 1;
+
+//  These are values from UCA required for
+//  implicit generation and supressing sort key compression
+//  they should regularly be in the UCA, but if one
+//  is running without UCA, it could be a problem
+     static final int maxRegularPrimary  = 0xA0;
+     static final int minImplicitPrimary = 0xE0;
+     static final int maxImplicitPrimary = 0xE4;
+
+
+    // block to initialise character property database
+    static
+    {
+        // take pains to let static class init succeed, otherwise the class itself won't exist and
+        // clients will get a NoClassDefFoundException.  Instead, make the constructors fail if
+        // we can't load the UCA data.
+
+        RuleBasedCollator iUCA_ = null;
+        UCAConstants iUCA_CONSTANTS_ = null;
+        char iUCA_CONTRACTIONS_[] = null;
+        ImplicitCEGenerator iimpCEGen_ = null;
+        try
+        {
+            // !!! note what's going on here...
+            // even though the static init of the class is not yet complete, we
+            // instantiate an instance of the class.  So we'd better be sure that
+            // instantiation doesn't rely on the static initialization that's
+            // not complete yet!
+            iUCA_ = new RuleBasedCollator();
+            iUCA_CONSTANTS_ = new UCAConstants();
+            iUCA_CONTRACTIONS_ = CollatorReader.read(iUCA_, iUCA_CONSTANTS_);
+
+            // called before doing canonical closure for the UCA.
+            iimpCEGen_ = new ImplicitCEGenerator(minImplicitPrimary, maxImplicitPrimary);
+            //iimpCEGen_ = new ImplicitCEGenerator(iUCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_, iUCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_);
+            iUCA_.init();
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, ULocale.ENGLISH);
+            iUCA_.m_rules_ = (String)rb.getObject("UCARules");
+        }
+        catch (MissingResourceException ex)
+        {
+//             throw ex;
+        }
+        catch (IOException e)
+        {
+           // e.printStackTrace();
+//             throw new MissingResourceException(e.getMessage(),"","");
+        }
+
+        UCA_ = iUCA_;
+        UCA_CONSTANTS_ = iUCA_CONSTANTS_;
+        UCA_CONTRACTIONS_ = iUCA_CONTRACTIONS_;
+        impCEGen_ = iimpCEGen_;
+
+        UCA_INIT_COMPLETE = true;
+    }
+
+
+    private static void checkUCA() throws MissingResourceException {
+        if (UCA_INIT_COMPLETE && UCA_ == null) {
+            throw new MissingResourceException("Collator UCA data unavailable", "", "");
+        }
+    }
+        
+    // package private constructors ------------------------------------------
+
+    /**
+    * <p>Private contructor for use by subclasses.
+    * Public access to creating Collators is handled by the API
+    * Collator.getInstance() or RuleBasedCollator(String rules).
+    * </p>
+    * <p>
+    * This constructor constructs the UCA collator internally
+    * </p>
+    */
+    RuleBasedCollator()
+    {
+        checkUCA();
+        initUtility(false);
+    }
+
+    /**
+     * Constructors a RuleBasedCollator from the argument locale.
+     * If no resource bundle is associated with the locale, UCA is used
+     * instead.
+     * @param locale
+     */
+    RuleBasedCollator(ULocale locale)
+    {
+        checkUCA();
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, locale);
+        initUtility(false);
+        if (rb != null) {
+            try {
+                // Use keywords, if supplied for lookup
+                String collkey = locale.getKeywordValue("collation");
+                  if(collkey == null) {
+                      collkey = rb.getStringWithFallback("collations/default");
+                }
+                       
+                // collations/default will always give a string back
+                // keyword for the real collation data
+                // if "collations/collkey" will return null if collkey == null 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements != null) {
+                    // TODO: Determine actual & valid locale correctly
+                    ULocale uloc = rb.getULocale();
+                    setLocale(uloc, uloc);
+
+                    m_rules_ = elements.getString("Sequence");
+                    ByteBuffer buf = elements.get("%%CollationBin").getBinary();
+                    // %%CollationBin
+                    if(buf!=null){
+                    //     m_rules_ = (String)rules[1][1];
+                        byte map[] = buf.array();
+                        CollatorReader.initRBC(this, map);
+                        /*
+                        BufferedInputStream input =
+                                                 new BufferedInputStream(
+                                                    new ByteArrayInputStream(map));
+                        /*
+                        CollatorReader reader = new CollatorReader(input, false);
+                        if (map.length > MIN_BINARY_DATA_SIZE_) {
+                            reader.read(this, null);
+                        }
+                        else {
+                            reader.readHeader(this);
+                            reader.readOptions(this);
+                            // duplicating UCA_'s data
+                            setWithUCATables();
+                        }
+                        */
+                        // at this point, we have read in the collator
+                        // now we need to check whether the binary image has
+                        // the right UCA and other versions
+                        if(!m_UCA_version_.equals(UCA_.m_UCA_version_) ||
+                        !m_UCD_version_.equals(UCA_.m_UCD_version_)) {
+                            init(m_rules_);
+                            return;
+                        }
+                        init();
+                        return;
+                    }
+                    else {                        
+                        init(m_rules_);
+                        return;
+                    }
+                }
+            }
+            catch (Exception e) {
+                // e.printStackTrace();
+                // if failed use UCA.
+            }
+        }
+        setWithUCAData();
+    }
+
+    // package private methods -----------------------------------------------
+
+    /**
+     * Sets this collator to use the tables in UCA. Note options not taken
+     * care of here.
+     */
+    final void setWithUCATables()
+    {
+        m_contractionOffset_ = UCA_.m_contractionOffset_;
+        m_expansionOffset_ = UCA_.m_expansionOffset_;
+        m_expansion_ = UCA_.m_expansion_;
+        m_contractionIndex_ = UCA_.m_contractionIndex_;
+        m_contractionCE_ = UCA_.m_contractionCE_;
+        m_trie_ = UCA_.m_trie_;
+        m_expansionEndCE_ = UCA_.m_expansionEndCE_;
+        m_expansionEndCEMaxSize_ = UCA_.m_expansionEndCEMaxSize_;
+        m_unsafe_ = UCA_.m_unsafe_;
+        m_contractionEnd_ = UCA_.m_contractionEnd_;
+        m_minUnsafe_ = UCA_.m_minUnsafe_;
+        m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+    }
+
+    /**
+     * Sets this collator to use the all options and tables in UCA.
+     */
+    final void setWithUCAData()
+    {
+        latinOneFailed_ = true;
+
+        m_addition3_ = UCA_.m_addition3_;
+        m_bottom3_ = UCA_.m_bottom3_;
+        m_bottomCount3_ = UCA_.m_bottomCount3_;
+        m_caseFirst_ = UCA_.m_caseFirst_;
+        m_caseSwitch_ = UCA_.m_caseSwitch_;
+        m_common3_ = UCA_.m_common3_;
+        m_contractionOffset_ = UCA_.m_contractionOffset_;
+        setDecomposition(UCA_.getDecomposition());
+        m_defaultCaseFirst_ = UCA_.m_defaultCaseFirst_;
+        m_defaultDecomposition_ = UCA_.m_defaultDecomposition_;
+        m_defaultIsAlternateHandlingShifted_
+                                   = UCA_.m_defaultIsAlternateHandlingShifted_;
+        m_defaultIsCaseLevel_ = UCA_.m_defaultIsCaseLevel_;
+        m_defaultIsFrenchCollation_ = UCA_.m_defaultIsFrenchCollation_;
+        m_defaultIsHiragana4_ = UCA_.m_defaultIsHiragana4_;
+        m_defaultStrength_ = UCA_.m_defaultStrength_;
+        m_defaultVariableTopValue_ = UCA_.m_defaultVariableTopValue_;
+        m_defaultIsNumericCollation_ = UCA_.m_defaultIsNumericCollation_;
+        m_expansionOffset_ = UCA_.m_expansionOffset_;
+        m_isAlternateHandlingShifted_ = UCA_.m_isAlternateHandlingShifted_;
+        m_isCaseLevel_ = UCA_.m_isCaseLevel_;
+        m_isFrenchCollation_ = UCA_.m_isFrenchCollation_;
+        m_isHiragana4_ = UCA_.m_isHiragana4_;
+        m_isJamoSpecial_ = UCA_.m_isJamoSpecial_;
+        m_isSimple3_ = UCA_.m_isSimple3_;
+        m_mask3_ = UCA_.m_mask3_;
+        m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+        m_minUnsafe_ = UCA_.m_minUnsafe_;
+        m_rules_ = UCA_.m_rules_;
+        setStrength(UCA_.getStrength());
+        m_top3_ = UCA_.m_top3_;
+        m_topCount3_ = UCA_.m_topCount3_;
+        m_variableTopValue_ = UCA_.m_variableTopValue_;
+        m_isNumericCollation_ = UCA_.m_isNumericCollation_;
+        setWithUCATables();
+        latinOneFailed_ = false;
+    }
+
+    /**
+     * Test whether a char character is potentially "unsafe" for use as a
+     * collation starting point. "Unsafe" characters are combining marks or
+     * those belonging to some contraction sequence from the offset 1 onwards.
+     * E.g. if "ABC" is the only contraction, then 'B' and
+     * 'C' are considered unsafe. If we have another contraction "ZA" with
+     * the one above, then 'A', 'B', 'C' are "unsafe" but 'Z' is not.
+     * @param ch character to determin
+     * @return true if ch is unsafe, false otherwise
+     */
+    final boolean isUnsafe(char ch)
+    {
+        if (ch < m_minUnsafe_) {
+            return false;
+        }
+        
+        if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+            if (UTF16.isLeadSurrogate(ch) 
+                || UTF16.isTrailSurrogate(ch)) {
+                //  Trail surrogate are always considered unsafe.
+                return true;
+            }
+            ch &= HEURISTIC_OVERFLOW_MASK_;
+            ch += HEURISTIC_OVERFLOW_OFFSET_;
+        }
+        int value = m_unsafe_[ch >> HEURISTIC_SHIFT_];
+        return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+    }
+
+    /**
+     * Approximate determination if a char character is at a contraction end.
+     * Guaranteed to be true if a character is at the end of a contraction,
+     * otherwise it is not deterministic.
+     * @param ch character to be determined
+     */
+    final boolean isContractionEnd(char ch)
+    {
+        if (UTF16.isTrailSurrogate(ch)) {
+            return true;
+        }
+
+        if (ch < m_minContractionEnd_) {
+            return false;
+        }
+
+        if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+            ch &= HEURISTIC_OVERFLOW_MASK_;
+            ch += HEURISTIC_OVERFLOW_OFFSET_;
+        }
+        int value = m_contractionEnd_[ch >> HEURISTIC_SHIFT_];
+        return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+    }
+
+    /**
+     * Retrieve the tag of a special ce
+     * @param ce ce to test
+     * @return tag of ce
+     */
+    static int getTag(int ce)
+    {
+        return (ce & CE_TAG_MASK_) >> CE_TAG_SHIFT_;
+    }
+
+    /**
+     * Checking if ce is special
+     * @param ce to check
+     * @return true if ce is special
+     */
+    static boolean isSpecial(int ce)
+    {
+        return (ce & CE_SPECIAL_FLAG_) == CE_SPECIAL_FLAG_;
+    }
+
+    /**
+     * Checks if the argument ce is a continuation
+     * @param ce collation element to test
+     * @return true if ce is a continuation
+     */
+    static final boolean isContinuation(int ce)
+    {
+        return ce != CollationElementIterator.NULLORDER
+                       && (ce & CE_CONTINUATION_TAG_) == CE_CONTINUATION_TAG_;
+    }
+
+    // private inner classes ------------------------------------------------
+
+    // private variables -----------------------------------------------------
+
+    /**
+     * The smallest natural unsafe or contraction end char character before
+     * tailoring.
+     * This is a combining mark.
+     */
+    private static final int DEFAULT_MIN_HEURISTIC_ = 0x300;
+    /**
+     * Heuristic table table size. Size is 32 bytes, 1 bit for each
+     * latin 1 char, and some power of two for hashing the rest of the chars.
+     * Size in bytes.
+     */
+    private static final char HEURISTIC_SIZE_ = 1056;
+    /**
+     * Mask value down to "some power of two" - 1,
+     * number of bits, not num of bytes.
+     */
+    private static final char HEURISTIC_OVERFLOW_MASK_ = 0x1fff;
+    /**
+     * Unsafe character shift
+     */
+    private static final int HEURISTIC_SHIFT_ = 3;
+    /**
+     * Unsafe character addition for character too large, it has to be folded
+     * then incremented.
+     */
+    private static final char HEURISTIC_OVERFLOW_OFFSET_ = 256;
+    /**
+     * Mask value to get offset in heuristic table.
+     */
+    private static final char HEURISTIC_MASK_ = 7;
+
+    private int m_caseSwitch_;
+    private int m_common3_;
+    private int m_mask3_;
+    /**
+     * When switching case, we need to add or subtract different values.
+     */
+    private int m_addition3_;
+    /**
+     * Upper range when compressing
+     */
+    private int m_top3_;
+    /**
+     * Upper range when compressing
+     */
+    private int m_bottom3_;
+    private int m_topCount3_;
+    private int m_bottomCount3_;
+    /**
+     * Case first constants
+     */
+    private static final int CASE_SWITCH_ = 0xC0;
+    private static final int NO_CASE_SWITCH_ = 0;
+    /**
+     * Case level constants
+     */
+    private static final int CE_REMOVE_CASE_ = 0x3F;
+    private static final int CE_KEEP_CASE_ = 0xFF;
+    /**
+     * Case strength mask
+     */
+    private static final int CE_CASE_MASK_3_ = 0xFF;
+    /**
+     * Sortkey size factor. Values can be changed.
+     */
+    private static final double PROPORTION_2_ = 0.5;
+    private static final double PROPORTION_3_ = 0.667;
+
+    // These values come from the UCA ----------------------------------------
+
+    /**
+     * This is an enum that lists magic special byte values from the
+     * fractional UCA
+     */
+    //private static final byte BYTE_ZERO_ = 0x0;
+    //private static final byte BYTE_LEVEL_SEPARATOR_ = (byte)0x01;
+    //private static final byte BYTE_SORTKEY_GLUE_ = (byte)0x02;
+    private static final byte BYTE_SHIFT_PREFIX_ = (byte)0x03;
+    /*private*/ static final byte BYTE_UNSHIFTED_MIN_ = BYTE_SHIFT_PREFIX_;
+    //private static final byte BYTE_FIRST_UCA_ = BYTE_COMMON_;
+    static final byte CODAN_PLACEHOLDER = 0x24;
+    //private static final byte BYTE_LAST_LATIN_PRIMARY_ = (byte)0x4C;
+    private static final byte BYTE_FIRST_NON_LATIN_PRIMARY_ = (byte)0x4D;
+    private static final byte BYTE_UNSHIFTED_MAX_ = (byte)0xFF;
+    private static final int TOTAL_2_ = COMMON_TOP_2_ - COMMON_BOTTOM_2_ - 1;
+    private static final int FLAG_BIT_MASK_CASE_SWITCH_OFF_ = 0x80;
+    private static final int FLAG_BIT_MASK_CASE_SWITCH_ON_ = 0x40;
+    private static final int COMMON_TOP_CASE_SWITCH_OFF_3_ = 0x85;
+    private static final int COMMON_TOP_CASE_SWITCH_LOWER_3_ = 0x45;
+    private static final int COMMON_TOP_CASE_SWITCH_UPPER_3_ = 0xC5;
+    private static final int COMMON_BOTTOM_3_ = 0x05;
+    private static final int COMMON_BOTTOM_CASE_SWITCH_UPPER_3_ = 0x86;
+    private static final int COMMON_BOTTOM_CASE_SWITCH_LOWER_3_ =
+                                                              COMMON_BOTTOM_3_;
+    private static final int TOP_COUNT_2_ = (int)(PROPORTION_2_ * TOTAL_2_);
+    private static final int BOTTOM_COUNT_2_ = TOTAL_2_ - TOP_COUNT_2_;
+    private static final int COMMON_2_ = COMMON_BOTTOM_2_;
+    private static final int COMMON_UPPER_FIRST_3_ = 0xC5;
+    private static final int COMMON_NORMAL_3_ = COMMON_BOTTOM_3_;
+    //private static final int COMMON_4_ = (byte)0xFF;
+
+
+
+    /*
+     * Minimum size required for the binary collation data in bytes.
+     * Size of UCA header + size of options to 4 bytes
+     */
+    //private static final int MIN_BINARY_DATA_SIZE_ = (42 + 25) << 2;
+
+    /**
+     * If this collator is to generate only simple tertiaries for fast path
+     */
+    private boolean m_isSimple3_;
+
+    /**
+     * French collation sorting flag
+     */
+    private boolean m_isFrenchCollation_;
+    /**
+     * Flag indicating if shifted is requested for Quaternary alternate
+     * handling. If this is not true, the default for alternate handling will
+     * be non-ignorable.
+     */
+    private boolean m_isAlternateHandlingShifted_;
+    /**
+     * Extra case level for sorting
+     */
+    private boolean m_isCaseLevel_;
+
+    private static final int SORT_BUFFER_INIT_SIZE_ = 128;
+    private static final int SORT_BUFFER_INIT_SIZE_1_ =
+                                                    SORT_BUFFER_INIT_SIZE_ << 3;
+    private static final int SORT_BUFFER_INIT_SIZE_2_ = SORT_BUFFER_INIT_SIZE_;
+    private static final int SORT_BUFFER_INIT_SIZE_3_ = SORT_BUFFER_INIT_SIZE_;
+    private static final int SORT_BUFFER_INIT_SIZE_CASE_ =
+                                                SORT_BUFFER_INIT_SIZE_ >> 2;
+    private static final int SORT_BUFFER_INIT_SIZE_4_ = SORT_BUFFER_INIT_SIZE_;
+
+    private static final int CE_CONTINUATION_TAG_ = 0xC0;
+    private static final int CE_REMOVE_CONTINUATION_MASK_ = 0xFFFFFF3F;
+
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+
+    //private static final int CE_RESET_TOP_VALUE_ = 0x9F000303;
+    //private static final int CE_NEXT_TOP_VALUE_ = 0xE8960303;
+
+    private static final byte SORT_CASE_BYTE_START_ = (byte)0x80;
+    private static final byte SORT_CASE_SHIFT_START_ = (byte)7;
+
+    /**
+     * CE buffer size
+     */
+    private static final int CE_BUFFER_SIZE_ = 512;
+
+    // variables for Latin-1 processing
+    boolean latinOneUse_        = false;
+    boolean latinOneRegenTable_ = false;
+    boolean latinOneFailed_     = false;
+
+    int latinOneTableLen_ = 0;
+    int latinOneCEs_[] = null;
+    /**
+     * Bunch of utility iterators
+     */
+    private StringUCharacterIterator m_srcUtilIter_;
+    private CollationElementIterator m_srcUtilColEIter_;
+    private StringUCharacterIterator m_tgtUtilIter_;
+    private CollationElementIterator m_tgtUtilColEIter_;
+    /**
+     * Utility comparison flags
+     */
+    private boolean m_utilCompare0_;
+    //private boolean m_utilCompare1_;
+    private boolean m_utilCompare2_;
+    private boolean m_utilCompare3_;
+    private boolean m_utilCompare4_;
+    private boolean m_utilCompare5_;
+    /**
+     * Utility byte buffer
+     */
+    private byte m_utilBytes0_[];
+    private byte m_utilBytes1_[];
+    private byte m_utilBytes2_[];
+    private byte m_utilBytes3_[];
+    private byte m_utilBytes4_[];
+    //private byte m_utilBytes5_[];
+    private RawCollationKey m_utilRawCollationKey_;
+
+    private int m_utilBytesCount0_;
+    private int m_utilBytesCount1_;
+    private int m_utilBytesCount2_;
+    private int m_utilBytesCount3_;
+    private int m_utilBytesCount4_;
+    //private int m_utilBytesCount5_;
+    //private int m_utilCount0_;
+    //private int m_utilCount1_;
+    private int m_utilCount2_;
+    private int m_utilCount3_;
+    private int m_utilCount4_;
+    //private int m_utilCount5_;
+
+    private int m_utilFrenchStart_;
+    private int m_utilFrenchEnd_;
+
+    /**
+     * Preparing the CE buffers. will be filled during the primary phase
+     */
+    private int m_srcUtilCEBuffer_[];
+    private int m_tgtUtilCEBuffer_[];
+    private int m_srcUtilCEBufferSize_;
+    private int m_tgtUtilCEBufferSize_;
+
+    private int m_srcUtilContOffset_;
+    private int m_tgtUtilContOffset_;
+
+    private int m_srcUtilOffset_;
+    private int m_tgtUtilOffset_;
+
+    // private methods -------------------------------------------------------
+
+    private void init(String rules) throws Exception
+    {
+        setWithUCAData();
+        CollationParsedRuleBuilder builder
+                                       = new CollationParsedRuleBuilder(rules);
+        builder.setRules(this);
+        m_rules_ = rules;
+        init();
+        initUtility(false);
+    }
+    
+    private final int compareRegular(String source, String target, int offset) {
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+        int strength = getStrength();
+        // setting up the collator parameters
+        m_utilCompare0_ = m_isCaseLevel_;
+        //m_utilCompare1_ = true;
+        m_utilCompare2_ = strength >= SECONDARY;
+        m_utilCompare3_ = strength >= TERTIARY;
+        m_utilCompare4_ = strength >= QUATERNARY;
+        m_utilCompare5_ = strength == IDENTICAL;
+        boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+        boolean doShift4 = m_isAlternateHandlingShifted_ && m_utilCompare4_;
+        boolean doHiragana4 = m_isHiragana4_ && m_utilCompare4_;
+
+        if (doHiragana4 && doShift4) {
+            String sourcesub = source.substring(offset);
+            String targetsub = target.substring(offset);
+            return compareBySortKeys(sourcesub, targetsub);
+        }
+
+        // This is the lowest primary value that will not be ignored if shifted
+        int lowestpvalue = m_isAlternateHandlingShifted_
+                                            ? m_variableTopValue_ << 16 : 0;
+        m_srcUtilCEBufferSize_ = 0;
+        m_tgtUtilCEBufferSize_ = 0;
+        int result = doPrimaryCompare(doHiragana4, lowestpvalue, source,
+                                      target, offset);
+        if (m_srcUtilCEBufferSize_ == -1
+            && m_tgtUtilCEBufferSize_ == -1) {
+            // since the cebuffer is cleared when we have determined that
+            // either source is greater than target or vice versa, the return
+            // result is the comparison result and not the hiragana result
+            return result;
+        }
+
+        int hiraganaresult = result;
+
+        if (m_utilCompare2_) {
+            result = doSecondaryCompare(doFrench);
+            if (result != 0) {
+                return result;
+            }
+        }
+        // doing the case bit
+        if (m_utilCompare0_) {
+            result = doCaseCompare();
+            if (result != 0) {
+                return result;
+            }
+        }
+        // Tertiary level
+        if (m_utilCompare3_) {
+            result = doTertiaryCompare();
+            if (result != 0) {
+                return result;
+            }
+        }
+
+        if (doShift4) {  // checkQuad
+            result = doQuaternaryCompare(lowestpvalue);
+            if (result != 0) {
+                return result;
+            }
+        }
+        else if (doHiragana4 && hiraganaresult != 0) {
+            // If we're fine on quaternaries, we might be different
+            // on Hiragana. This, however, might fail us in shifted.
+            return hiraganaresult;
+        }
+
+        // For IDENTICAL comparisons, we use a bitwise character comparison
+        // as a tiebreaker if all else is equal.
+        // Getting here  should be quite rare - strings are not identical -
+        // that is checked first, but compared == through all other checks.
+        if (m_utilCompare5_) {
+            return doIdenticalCompare(source, target, offset, true);
+        }
+        return 0;
+    }
+
+    /**
+     * Gets the 2 bytes of primary order and adds it to the primary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param doShift flag indicating if ce is to be shifted
+     * @param leadPrimary lead primary used for compression
+     * @param commonBottom4 common byte value for Quaternary
+     * @param bottomCount4 smallest byte value for Quaternary
+     * @return the new lead primary for compression
+     */
+    private final int doPrimaryBytes(int ce, boolean notIsContinuation,
+                                  boolean doShift, int leadPrimary,
+                                  int commonBottom4, int bottomCount4)
+    {
+
+        int p2 = (ce >>= 16) & LAST_BYTE_MASK_; // in ints for unsigned
+        int p1 = ce >>> 8;  // comparison
+        if (doShift) {
+            if (m_utilCount4_ > 0) {
+                while (m_utilCount4_ > bottomCount4) {
+                    m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                         (byte)(commonBottom4 + bottomCount4));
+                    m_utilBytesCount4_ ++;
+                    m_utilCount4_ -= bottomCount4;
+                }
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)(commonBottom4
+                                              + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ = 0;
+            }
+            // dealing with a variable and we're treating them as shifted
+            // This is a shifted ignorable
+            if (p1 != 0) {
+                // we need to check this since we could be in continuation
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)p1);
+                m_utilBytesCount4_ ++;
+            }
+            if (p2 != 0) {
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)p2);
+                m_utilBytesCount4_ ++;
+            }
+        }
+        else {
+            // Note: This code assumes that the table is well built
+            // i.e. not having 0 bytes where they are not supposed to be.
+            // Usually, we'll have non-zero primary1 & primary2, except
+            // in cases of LatinOne and friends, when primary2 will be
+            // regular and simple sortkey calc
+            if (p1 != CollationElementIterator.IGNORABLE) {
+                if (notIsContinuation) {
+                    if (leadPrimary == p1) {
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_, (byte)p2);
+                        m_utilBytesCount1_ ++;
+                    }
+                    else {
+                        if (leadPrimary != 0) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                    ((p1 > leadPrimary)
+                                            ? BYTE_UNSHIFTED_MAX_
+                                            : BYTE_UNSHIFTED_MIN_)); 
+                            m_utilBytesCount1_ ++;
+                        }
+                        if (p2 == CollationElementIterator.IGNORABLE) {
+                            // one byter, not compressed
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                                   (byte)p1);
+                            m_utilBytesCount1_ ++;
+                            leadPrimary = 0;
+                        }
+                        else if (p1 < BYTE_FIRST_NON_LATIN_PRIMARY_
+                              || (p1 > maxRegularPrimary
+                    //> (RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_[0]
+                    //                                              >>> 24)
+                                && p1 < minImplicitPrimary
+                    //< (RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_[0]
+                    //                                              >>> 24)
+                    )) {
+                                // not compressible
+                                leadPrimary = 0;
+                                m_utilBytes1_ = append(m_utilBytes1_,
+                                                       m_utilBytesCount1_,
+                                                       (byte)p1);
+                                m_utilBytesCount1_ ++;
+                                m_utilBytes1_ = append(m_utilBytes1_,
+                                                       m_utilBytesCount1_,
+                                                       (byte)p2);
+                                m_utilBytesCount1_ ++;
+                        }
+                        else { // compress
+                            leadPrimary = p1;
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                                   (byte)p1);
+                            m_utilBytesCount1_ ++;
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                  m_utilBytesCount1_, (byte)p2);
+                            m_utilBytesCount1_ ++;
+                        }
+                    }
+                }
+                else {
+                    // continuation, add primary to the key, no compression
+                    m_utilBytes1_ = append(m_utilBytes1_,
+                                           m_utilBytesCount1_, (byte)p1);
+                    m_utilBytesCount1_ ++;
+                    if (p2 != CollationElementIterator.IGNORABLE) {
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                           m_utilBytesCount1_, (byte)p2);
+                        // second part
+                        m_utilBytesCount1_ ++;
+                    }
+                }
+            }
+        }
+        return leadPrimary;
+    }
+
+    /**
+     * Gets the secondary byte and adds it to the secondary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param doFrench flag indicator if french sort is to be performed
+     */
+    private final void doSecondaryBytes(int ce, boolean notIsContinuation,
+                                        boolean doFrench)
+    {
+        int s = (ce >>= 8) & LAST_BYTE_MASK_; // int for comparison
+        if (s != 0) {
+            if (!doFrench) {
+                // This is compression code.
+                if (s == COMMON_2_ && notIsContinuation) {
+                   m_utilCount2_ ++;
+                }
+                else {
+                    if (m_utilCount2_ > 0) {
+                        if (s > COMMON_2_) { // not necessary for 4th level.
+                            while (m_utilCount2_ > TOP_COUNT_2_) {
+                                m_utilBytes2_ = append(m_utilBytes2_,
+                                        m_utilBytesCount2_,
+                                        (byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                                m_utilCount2_ -= TOP_COUNT_2_;
+                            }
+                            m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                                                   (byte)(COMMON_TOP_2_
+                                                       - (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                        }
+                        else {
+                            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                                m_utilBytes2_ = append(m_utilBytes2_,
+                                                       m_utilBytesCount2_,
+                                    (byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                                m_utilCount2_ -= BOTTOM_COUNT_2_;
+                            }
+                            m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                                                   (byte)(COMMON_BOTTOM_2_
+                                                       + (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                        }
+                        m_utilCount2_ = 0;
+                    }
+                    m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                           (byte)s);
+                    m_utilBytesCount2_ ++;
+                }
+            }
+            else {
+                  m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                         (byte)s);
+                  m_utilBytesCount2_ ++;
+                  // Do the special handling for French secondaries
+                  // We need to get continuation elements and do intermediate
+                  // restore
+                  // abc1c2c3de with french secondaries need to be edc1c2c3ba
+                  // NOT edc3c2c1ba
+                  if (notIsContinuation) {
+                        if (m_utilFrenchStart_ != -1) {
+                            // reverse secondaries from frenchStartPtr up to
+                            // frenchEndPtr
+                            reverseBuffer(m_utilBytes2_);
+                            m_utilFrenchStart_ = -1;
+                        }
+                  }
+                  else {
+                        if (m_utilFrenchStart_ == -1) {
+                            m_utilFrenchStart_  = m_utilBytesCount2_ - 2;
+                        }
+                        m_utilFrenchEnd_ = m_utilBytesCount2_ - 1;
+                  }
+            }
+        }
+    }
+
+    /**
+     * Reverse the argument buffer
+     * @param buffer to reverse
+     */
+    private void reverseBuffer(byte buffer[])
+    {
+        int start = m_utilFrenchStart_;
+        int end = m_utilFrenchEnd_;
+        while (start < end) {
+            byte b = buffer[start];
+            buffer[start ++] = buffer[end];
+            buffer[end --] = b;
+        }
+    }
+
+    /**
+     * Insert the case shifting byte if required
+     * @param caseshift value
+     * @return new caseshift value
+     */
+    private final int doCaseShift(int caseshift)
+    {
+        if (caseshift  == 0) {
+            m_utilBytes0_ = append(m_utilBytes0_, m_utilBytesCount0_,
+                                   SORT_CASE_BYTE_START_);
+            m_utilBytesCount0_ ++;
+            caseshift = SORT_CASE_SHIFT_START_;
+        }
+        return caseshift;
+    }
+
+    /**
+     * Performs the casing sort
+     * @param tertiary byte in ints for easy comparison
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param caseshift
+     * @return the new value of case shift
+     */
+    private final int doCaseBytes(int tertiary, boolean notIsContinuation,
+                                  int caseshift)
+    {
+        caseshift = doCaseShift(caseshift);
+
+        if (notIsContinuation && tertiary != 0) {
+            byte casebits = (byte)(tertiary & 0xC0);
+            if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+                if (casebits == 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                                      |= (1 << (-- caseshift));
+                }
+                else {
+                     // second bit
+                     caseshift = doCaseShift(caseshift - 1);
+                     m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                    |= ((casebits >> 6) & 1) << (-- caseshift);
+                }
+            }
+            else {
+                if (casebits != 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                                        |= 1 << (-- caseshift);
+                    // second bit
+                    caseshift = doCaseShift(caseshift);
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                  |= ((casebits >> 7) & 1) << (-- caseshift);
+                }
+                else {
+                    caseshift --;
+                }
+            }
+        }
+
+        return caseshift;
+    }
+
+    /**
+     * Gets the tertiary byte and adds it to the tertiary byte array
+     * @param tertiary byte in int for easy comparison
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     */
+    private final void doTertiaryBytes(int tertiary, boolean notIsContinuation)
+    {
+        if (tertiary != 0) {
+            // This is compression code.
+            // sequence size check is included in the if clause
+            if (tertiary == m_common3_ && notIsContinuation) {
+                 m_utilCount3_ ++;
+            }
+            else {
+                int common3 = m_common3_ & LAST_BYTE_MASK_;
+                if (tertiary > common3 && m_common3_ == COMMON_NORMAL_3_) {
+                    tertiary += m_addition3_;
+                }
+                else if (tertiary <= common3
+                         && m_common3_ == COMMON_UPPER_FIRST_3_) {
+                    tertiary -= m_addition3_;
+                }
+                if (m_utilCount3_ > 0) {
+                    if (tertiary > common3) {
+                        while (m_utilCount3_ > m_topCount3_) {
+                            m_utilBytes3_ = append(m_utilBytes3_,
+                                                   m_utilBytesCount3_,
+                                            (byte)(m_top3_ - m_topCount3_));
+                            m_utilBytesCount3_ ++;
+                            m_utilCount3_ -= m_topCount3_;
+                        }
+                        m_utilBytes3_ = append(m_utilBytes3_,
+                                               m_utilBytesCount3_,
+                                               (byte)(m_top3_
+                                                      - (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                    }
+                    else {
+                        while (m_utilCount3_ > m_bottomCount3_) {
+                            m_utilBytes3_ = append(m_utilBytes3_,
+                                                   m_utilBytesCount3_,
+                                         (byte)(m_bottom3_ + m_bottomCount3_));
+                            m_utilBytesCount3_ ++;
+                            m_utilCount3_ -= m_bottomCount3_;
+                        }
+                        m_utilBytes3_ = append(m_utilBytes3_,
+                                               m_utilBytesCount3_,
+                                               (byte)(m_bottom3_
+                                                      + (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                    }
+                    m_utilCount3_ = 0;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)tertiary);
+                m_utilBytesCount3_ ++;
+            }
+        }
+    }
+
+    /**
+     * Gets the Quaternary byte and adds it to the Quaternary byte array
+     * @param isCodePointHiragana flag indicator if the previous codepoint
+     *          we dealt with was Hiragana
+     * @param commonBottom4 smallest common Quaternary byte
+     * @param bottomCount4 smallest Quaternary byte
+     * @param hiragana4 hiragana Quaternary byte
+     */
+    private final void doQuaternaryBytes(boolean isCodePointHiragana,
+                                      int commonBottom4, int bottomCount4,
+                                      byte hiragana4)
+    {
+        if (isCodePointHiragana) { // This was Hiragana, need to note it
+            if (m_utilCount4_ > 0) { // Close this part
+                while (m_utilCount4_ > bottomCount4) {
+                    m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                           (byte)(commonBottom4
+                                                        + bottomCount4));
+                    m_utilBytesCount4_ ++;
+                    m_utilCount4_ -= bottomCount4;
+                }
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                      (byte)(commonBottom4
+                                             + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ = 0;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                   hiragana4); // Add the Hiragana
+            m_utilBytesCount4_ ++;
+        }
+        else { // This wasn't Hiragana, so we can continue adding stuff
+            m_utilCount4_ ++;
+        }
+    }
+
+    /**
+     * Iterates through the argument string for all ces.
+     * Split the ces into their relevant primaries, secondaries etc.
+     * @param source normalized string
+     * @param doFrench flag indicator if special handling of French has to be
+     *                  done
+     * @param hiragana4 offset for Hiragana quaternary
+     * @param commonBottom4 smallest common quaternary byte
+     * @param bottomCount4 smallest quaternary byte
+     */
+    private final void getSortKeyBytes(String source, boolean doFrench,
+                                       byte hiragana4, int commonBottom4,
+                                       int bottomCount4)
+
+    {
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+        int backupDecomposition = getDecomposition();
+        setDecomposition(NO_DECOMPOSITION); // have to revert to backup later
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_);
+        m_utilFrenchStart_ = -1;
+        m_utilFrenchEnd_ = -1;
+
+        // scriptorder not implemented yet
+        // const uint8_t *scriptOrder = coll->scriptOrder;
+
+        boolean doShift = false;
+        boolean notIsContinuation = false;
+
+        int leadPrimary = 0; // int for easier comparison
+        int caseShift = 0;
+
+        while (true) {
+            int ce = m_srcUtilColEIter_.next();
+            if (ce == CollationElementIterator.NULLORDER) {
+                break;
+            }
+
+            if (ce == CollationElementIterator.IGNORABLE) {
+                continue;
+            }
+
+            notIsContinuation = !isContinuation(ce);
+
+            /*
+             * if (notIsContinuation) {
+                    if (scriptOrder != NULL) {
+                        primary1 = scriptOrder[primary1];
+                    }
+                }*/
+            boolean isPrimaryByteIgnorable = (ce & CE_PRIMARY_MASK_) == 0;
+            // actually we can just check that the first byte is 0
+            // generation stuffs the order left first
+            boolean isSmallerThanVariableTop = (ce >>> CE_PRIMARY_SHIFT_)
+                                               <= m_variableTopValue_;
+            doShift = (m_isAlternateHandlingShifted_
+                        && ((notIsContinuation && isSmallerThanVariableTop
+                            && !isPrimaryByteIgnorable) // primary byte not 0
+                        || (!notIsContinuation && doShift))
+                        || (doShift && isPrimaryByteIgnorable));
+            if (doShift && isPrimaryByteIgnorable) {
+                // amendment to the UCA says that primary ignorables and other
+                // ignorables should be removed if following a shifted code
+                // point
+                // if we were shifted and we got an ignorable code point
+                // we should just completely ignore it
+                continue;
+            }
+            leadPrimary = doPrimaryBytes(ce, notIsContinuation, doShift,
+                                         leadPrimary, commonBottom4,
+                                         bottomCount4);
+            if (doShift) {
+                continue;
+            }
+            if (m_utilCompare2_) {
+                doSecondaryBytes(ce, notIsContinuation, doFrench);
+            }
+
+            int t = ce & LAST_BYTE_MASK_;
+            if (!notIsContinuation) {
+                t = ce & CE_REMOVE_CONTINUATION_MASK_;
+            }
+
+            if (m_utilCompare0_ && (!isPrimaryByteIgnorable || m_utilCompare2_)) {
+                // do the case level if we need to do it. We don't want to calculate
+                // case level for primary ignorables if we have only primary strength and case level
+                // otherwise we would break well formedness of CEs 
+                caseShift = doCaseBytes(t, notIsContinuation, caseShift);
+            }
+            else if (notIsContinuation) {
+                 t ^= m_caseSwitch_;
+            }
+
+            t &= m_mask3_;
+
+            if (m_utilCompare3_) {
+                doTertiaryBytes(t, notIsContinuation);
+            }
+
+            if (m_utilCompare4_ && notIsContinuation) { // compare quad
+                doQuaternaryBytes(m_srcUtilColEIter_.m_isCodePointHiragana_,
+                                  commonBottom4, bottomCount4, hiragana4);
+            }
+        }
+        setDecomposition(backupDecomposition); // reverts to original
+        if (m_utilFrenchStart_ != -1) {
+            // one last round of checks
+            reverseBuffer(m_utilBytes2_);
+        }
+    }
+
+    /**
+     * From the individual strength byte results the final compact sortkey
+     * will be calculated.
+     * @param source text string
+     * @param doFrench flag indicating that special handling of French has to
+     *                  be done
+     * @param commonBottom4 smallest common quaternary byte
+     * @param bottomCount4 smallest quaternary byte
+     * @param key output RawCollationKey to store results, key cannot be null
+     */
+    private final void getSortKey(String source, boolean doFrench,
+                                             int commonBottom4, 
+                                             int bottomCount4,
+                                             RawCollationKey key)
+    {
+        // we have done all the CE's, now let's put them together to form
+        // a key
+        if (m_utilCompare2_) {
+            doSecondary(doFrench);
+        }
+        // adding case level should be independent of secondary level
+        if (m_utilCompare0_) {
+            doCase();
+        }
+        if (m_utilCompare3_) {
+            doTertiary();
+            if (m_utilCompare4_) {
+                doQuaternary(commonBottom4, bottomCount4);
+                if (m_utilCompare5_) {
+                    doIdentical(source);
+                }
+
+            }
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, (byte)0);
+        m_utilBytesCount1_ ++;
+
+        key.set(m_utilBytes1_, 0, m_utilBytesCount1_);
+    }
+
+    /**
+     * Packs the French bytes
+     */
+    private final void doFrench()
+    {
+        for (int i = 0; i < m_utilBytesCount2_; i ++) {
+            byte s = m_utilBytes2_[m_utilBytesCount2_ - i - 1];
+            // This is compression code.
+            if (s == COMMON_2_) {
+                ++ m_utilCount2_;
+            }
+            else {
+                if (m_utilCount2_ > 0) {
+                    // getting the unsigned value
+                    if ((s & LAST_BYTE_MASK_) > COMMON_2_) {
+                        // not necessary for 4th level.
+                        while (m_utilCount2_ > TOP_COUNT_2_) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                        (byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+                            m_utilCount2_ -= TOP_COUNT_2_;
+                        }
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_,
+                                               (byte)(COMMON_TOP_2_
+                                                      - (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+                    }
+                    else {
+                        while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                (byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+                            m_utilCount2_ -= BOTTOM_COUNT_2_;
+                        }
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_,
+                                               (byte)(COMMON_BOTTOM_2_
+                                                      + (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+                    }
+                    m_utilCount2_ = 0;
+                }
+                m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, s);
+                m_utilBytesCount1_ ++;
+            }
+        }
+        if (m_utilCount2_ > 0) {
+            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                                       (byte)(COMMON_BOTTOM_2_
+                                                    + BOTTOM_COUNT_2_));
+                m_utilBytesCount1_ ++;
+                m_utilCount2_ -= BOTTOM_COUNT_2_;
+            }
+            m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                                   (byte)(COMMON_BOTTOM_2_
+                                                    + (m_utilCount2_ - 1)));
+            m_utilBytesCount1_ ++;
+        }
+    }
+
+    /**
+     * Compacts the secondary bytes and stores them into the primary array
+     * @param doFrench flag indicator that French has to be handled specially
+     */
+    private final void doSecondary(boolean doFrench)
+    {
+        if (m_utilCount2_ > 0) {
+            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                       (byte)(COMMON_BOTTOM_2_
+                                                        + BOTTOM_COUNT_2_));
+                m_utilBytesCount2_ ++;
+                m_utilCount2_ -= BOTTOM_COUNT_2_;
+            }
+            m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                   (byte)(COMMON_BOTTOM_2_ +
+                                                    (m_utilCount2_ - 1)));
+            m_utilBytesCount2_ ++;
+        }
+
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+
+        if (doFrench) { // do the reverse copy
+            doFrench();
+        }
+        else {
+            if (m_utilBytes1_.length <= m_utilBytesCount1_
+                                        + m_utilBytesCount2_) {
+                m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                         m_utilBytesCount2_);
+            }
+            System.arraycopy(m_utilBytes2_, 0, m_utilBytes1_,
+                             m_utilBytesCount1_, m_utilBytesCount2_);
+            m_utilBytesCount1_ += m_utilBytesCount2_;
+        }
+    }
+
+    /**
+     * Increase buffer size
+     * @param buffer array of bytes
+     * @param size of the byte array
+     * @param incrementsize size to increase
+     * @return the new buffer
+     */
+    private static final byte[] increase(byte buffer[], int size,
+                                         int incrementsize)
+    {
+        byte result[] = new byte[buffer.length + incrementsize];
+        System.arraycopy(buffer, 0, result, 0, size);
+        return result;
+    }
+
+    /**
+     * Increase buffer size
+     * @param buffer array of ints
+     * @param size of the byte array
+     * @param incrementsize size to increase
+     * @return the new buffer
+     */
+    private static final int[] increase(int buffer[], int size,
+                                        int incrementsize)
+    {
+        int result[] = new int[buffer.length + incrementsize];
+        System.arraycopy(buffer, 0, result, 0, size);
+        return result;
+    }
+
+    /**
+     * Compacts the case bytes and stores them into the primary array
+     */
+    private final void doCase()
+    {
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount0_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount0_);
+        }
+        System.arraycopy(m_utilBytes0_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount0_);
+        m_utilBytesCount1_ += m_utilBytesCount0_;
+    }
+
+    /**
+     * Compacts the tertiary bytes and stores them into the primary array
+     */
+    private final void doTertiary()
+    {
+        if (m_utilCount3_ > 0) {
+            if (m_common3_ != COMMON_BOTTOM_3_) {
+                while (m_utilCount3_ >= m_topCount3_) {
+                    m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                           (byte)(m_top3_ - m_topCount3_));
+                    m_utilBytesCount3_ ++;
+                    m_utilCount3_ -= m_topCount3_;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)(m_top3_ - m_utilCount3_));
+                m_utilBytesCount3_ ++;
+            }
+            else {
+                while (m_utilCount3_ > m_bottomCount3_) {
+                    m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                           (byte)(m_bottom3_
+                                                        + m_bottomCount3_));
+                    m_utilBytesCount3_ ++;
+                    m_utilCount3_ -= m_bottomCount3_;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)(m_bottom3_
+                                              + (m_utilCount3_ - 1)));
+                m_utilBytesCount3_ ++;
+            }
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount3_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount3_);
+        }
+        System.arraycopy(m_utilBytes3_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount3_);
+        m_utilBytesCount1_ += m_utilBytesCount3_;
+    }
+
+    /**
+     * Compacts the quaternary bytes and stores them into the primary array
+     */
+    private final void doQuaternary(int commonbottom4, int bottomcount4)
+    {
+        if (m_utilCount4_ > 0) {
+            while (m_utilCount4_ > bottomcount4) {
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)(commonbottom4 + bottomcount4));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ -= bottomcount4;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                   (byte)(commonbottom4
+                                                + (m_utilCount4_ - 1)));
+            m_utilBytesCount4_ ++;
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount4_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount4_);
+        }
+        System.arraycopy(m_utilBytes4_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount4_);
+        m_utilBytesCount1_ += m_utilBytesCount4_;
+    }
+
+    /**
+     * Deals with the identical sort.
+     * Appends the BOCSU version of the source string to the ends of the
+     * byte buffer.
+     * @param source text string
+     */
+    private final void doIdentical(String source)
+    {
+        int isize = BOCU.getCompressionLength(source);
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + isize) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     1 + isize);
+        }
+        m_utilBytesCount1_ = BOCU.compress(source, m_utilBytes1_,
+                                           m_utilBytesCount1_);
+    }
+
+    /**
+     * Gets the offset of the first unmatched characters in source and target.
+     * This method returns the offset of the start of a contraction or a
+     * combining sequence, if the first difference is in the middle of such a
+     * sequence.
+     * @param source string
+     * @param target string
+     * @return offset of the first unmatched characters in source and target.
+     */
+    private final int getFirstUnmatchedOffset(String source, String target)
+    {
+        int result = 0;
+        int slength = source.length();
+        int tlength = target.length();
+        int minlength = slength;
+        if (minlength > tlength) {
+            minlength = tlength;
+        }
+        while (result < minlength
+                && source.charAt(result) == target.charAt(result)) {
+            result ++;
+        }
+        if (result > 0) {
+            // There is an identical portion at the beginning of the two
+            // strings. If the identical portion ends within a contraction or a
+            // combining character sequence, back up to the start of that
+            // sequence.
+            char schar = 0;
+            char tchar = 0;
+            if (result < minlength) {
+                schar = source.charAt(result); // first differing chars
+                tchar = target.charAt(result);
+            }
+            else {
+                schar = source.charAt(minlength - 1);
+                if (isUnsafe(schar)) {
+                    tchar = schar;
+                }
+                else if (slength == tlength) {
+                        return result;
+                }
+                else if (slength < tlength) {
+                    tchar = target.charAt(result);
+                }
+                else {
+                    schar = source.charAt(result);
+                }
+            }
+            if (isUnsafe(schar) || isUnsafe(tchar))
+            {
+                // We are stopped in the middle of a contraction or combining
+                // sequence.
+                // Look backwards for the part of the string for the start of
+                // the sequence
+                // It doesn't matter which string we scan, since they are the
+                // same in this region.
+                do {
+                    result --;
+                }
+                while (result > 0 && isUnsafe(source.charAt(result)));
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Appending an byte to an array of bytes and increases it if we run out of
+     * space
+     * @param array of byte arrays
+     * @param appendindex index in the byte array to append
+     * @param value to append
+     * @return array if array size can accomodate the new value, otherwise
+     *         a bigger array will be created and returned
+     */
+    private static final byte[] append(byte array[], int appendindex,
+                                       byte value)
+    {
+        try {
+            array[appendindex] = value;
+        }
+        catch (ArrayIndexOutOfBoundsException e) {
+            array = increase(array, appendindex, SORT_BUFFER_INIT_SIZE_);
+            array[appendindex] = value;
+        }
+        return array;
+    }
+
+    /**
+     * This is a trick string compare function that goes in and uses sortkeys
+     * to compare. It is used when compare gets in trouble and needs to bail
+     * out.
+     * @param source text string
+     * @param target text string
+     */
+    private final int compareBySortKeys(String source, String target)
+
+    {
+        m_utilRawCollationKey_ = getRawCollationKey(source, 
+                                                    m_utilRawCollationKey_);
+        // this method is very seldom called
+        RawCollationKey targetkey = getRawCollationKey(target, null);
+        return m_utilRawCollationKey_.compareTo(targetkey);
+    }
+
+    /**
+     * Performs the primary comparisons, and fills up the CE buffer at the
+     * same time.
+     * The return value toggles between the comparison result and the hiragana
+     * result. If either the source is greater than target or vice versa, the
+     * return result is the comparison result, ie 1 or -1, furthermore the
+     * cebuffers will be cleared when that happens. If the primary comparisons
+     * are equal, we'll have to continue with secondary comparison. In this case
+     * the cebuffer will not be cleared and the return result will be the
+     * hiragana result.
+     * @param doHiragana4 flag indicator that Hiragana Quaternary has to be
+     *                  observed
+     * @param lowestpvalue the lowest primary value that will not be ignored if
+     *                      alternate handling is shifted
+     * @param source text string
+     * @param target text string
+     * @param textoffset offset in text to start the comparison
+     * @return comparion result if a primary difference is found, otherwise
+     *                      hiragana result
+     */
+    private final int doPrimaryCompare(boolean doHiragana4, int lowestpvalue,
+                                        String source, String target,
+                                        int textoffset)
+
+    {
+        // Preparing the context objects for iterating over strings
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_, textoffset);
+        m_tgtUtilIter_.setText(target);
+        m_tgtUtilColEIter_.setText(m_tgtUtilIter_, textoffset);
+
+        // Non shifted primary processing is quite simple
+        if (!m_isAlternateHandlingShifted_) {
+            int hiraganaresult = 0;
+            while (true) {
+                int sorder = 0;
+                // We fetch CEs until we hit a non ignorable primary or end.
+                do {
+                    sorder = m_srcUtilColEIter_.next();
+                    m_srcUtilCEBuffer_ = append(m_srcUtilCEBuffer_,
+                                                m_srcUtilCEBufferSize_, sorder);
+                    m_srcUtilCEBufferSize_ ++;
+                    sorder &= CE_PRIMARY_MASK_;
+                } while (sorder == CollationElementIterator.IGNORABLE);
+
+                int torder = 0;
+                do {
+                    torder = m_tgtUtilColEIter_.next();
+                    m_tgtUtilCEBuffer_ = append(m_tgtUtilCEBuffer_,
+                                                m_tgtUtilCEBufferSize_, torder);
+                    m_tgtUtilCEBufferSize_ ++;
+                    torder &= CE_PRIMARY_MASK_;
+                } while (torder == CollationElementIterator.IGNORABLE);
+
+                // if both primaries are the same
+                if (sorder == torder) {
+                    // and there are no more CEs, we advance to the next level
+                    // see if we are at the end of either string
+                    if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER) {
+                        if (m_tgtUtilCEBuffer_[m_tgtUtilCEBufferSize_ - 1] 
+                            != CollationElementIterator.NULLORDER) {
+                            return -1;
+                        }
+                        break;
+                    }
+                    else if (m_tgtUtilCEBuffer_[m_tgtUtilCEBufferSize_ - 1]
+                             == CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                    if (doHiragana4 && hiraganaresult == 0
+                        && m_srcUtilColEIter_.m_isCodePointHiragana_ !=
+                                        m_tgtUtilColEIter_.m_isCodePointHiragana_) {
+                        if (m_srcUtilColEIter_.m_isCodePointHiragana_) {
+                            hiraganaresult = -1;
+                        }
+                        else {
+                            hiraganaresult = 1;
+                        }
+                    }
+                }
+                else {
+                    // if two primaries are different, we are done
+                    return endPrimaryCompare(sorder, torder);
+                }
+            }
+            // no primary difference... do the rest from the buffers
+            return hiraganaresult;
+        }
+        else { // shifted - do a slightly more complicated processing :)
+            while (true) {
+                int sorder = getPrimaryShiftedCompareCE(m_srcUtilColEIter_,
+                                                        lowestpvalue, true);
+                int torder = getPrimaryShiftedCompareCE(m_tgtUtilColEIter_,
+                                                        lowestpvalue, false);
+                if (sorder == torder) {
+                    if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1]
+                            == CollationElementIterator.NULLORDER) {
+                        break;
+                    }
+                    else {
+                        continue;
+                    }
+                }
+                else {
+                    return endPrimaryCompare(sorder, torder);
+                }
+            } // no primary difference... do the rest from the buffers
+        }
+        return 0;
+    }
+
+    /**
+     * This is used only for primary strength when we know that sorder is
+     * already different from torder.
+     * Compares sorder and torder, returns -1 if sorder is less than torder.
+     * Clears the cebuffer at the same time.
+     * @param sorder source strength order
+     * @param torder target strength order
+     * @return the comparison result of sorder and torder
+     */
+    private final int endPrimaryCompare(int sorder, int torder)
+    {
+        // if we reach here, the ce offset accessed is the last ce
+        // appended to the buffer
+        boolean isSourceNullOrder = (m_srcUtilCEBuffer_[
+                                                    m_srcUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER);
+        boolean isTargetNullOrder = (m_tgtUtilCEBuffer_[
+                                                    m_tgtUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER);
+        m_srcUtilCEBufferSize_ = -1;
+        m_tgtUtilCEBufferSize_ = -1;
+        if (isSourceNullOrder) {
+            return -1;
+        }
+        if (isTargetNullOrder) {
+            return 1;
+        }
+        // getting rid of the sign
+        sorder >>>= CE_PRIMARY_SHIFT_;
+        torder >>>= CE_PRIMARY_SHIFT_;
+        if (sorder < torder) {
+            return -1;
+        }
+        return 1;
+    }
+
+    /**
+     * Calculates the next primary shifted value and fills up cebuffer with the
+     * next non-ignorable ce.
+     * @param coleiter collation element iterator
+     * @param doHiragana4 flag indicator if hiragana quaternary is to be
+     *                      handled
+     * @param lowestpvalue lowest primary shifted value that will not be
+     *                      ignored
+     * @return result next modified ce
+     */
+    private final int getPrimaryShiftedCompareCE(
+                                        CollationElementIterator coleiter,
+                                        int lowestpvalue, boolean isSrc)
+
+    {
+        boolean shifted = false;
+        int result = CollationElementIterator.IGNORABLE;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        int cebuffersize = m_srcUtilCEBufferSize_;
+        if (!isSrc) {
+            cebuffer = m_tgtUtilCEBuffer_;
+            cebuffersize = m_tgtUtilCEBufferSize_;
+        }
+        while (true) {
+            result = coleiter.next();
+            if (result == CollationElementIterator.NULLORDER) {
+                cebuffer = append(cebuffer, cebuffersize, result);
+                cebuffersize ++;
+                break;
+            }
+            else if (result == CollationElementIterator.IGNORABLE
+                     || (shifted
+                         && (result & CE_PRIMARY_MASK_)
+                                      == CollationElementIterator.IGNORABLE)) {
+                // UCA amendment - ignore ignorables that follow shifted code
+                // points
+                continue;
+            }
+            else if (isContinuation(result)) {
+                if ((result & CE_PRIMARY_MASK_)
+                                    != CollationElementIterator.IGNORABLE) {
+                    // There is primary value
+                    if (shifted) {
+                        result = (result & CE_PRIMARY_MASK_)
+                                            | CE_CONTINUATION_MARKER_;
+                        // preserve interesting continuation
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        continue;
+                    }
+                    else {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        break;
+                    }
+                }
+                else { // Just lower level values
+                    if (!shifted) {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                    }
+                }
+            }
+            else { // regular
+                if (Utility.compareUnsigned(result & CE_PRIMARY_MASK_,
+                                            lowestpvalue) > 0) {
+                    cebuffer = append(cebuffer, cebuffersize, result);
+                    cebuffersize ++;
+                    break;
+                }
+                else {
+                    if ((result & CE_PRIMARY_MASK_) != 0) {
+                        shifted = true;
+                        result &= CE_PRIMARY_MASK_;
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        continue;
+                    }
+                    else {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        shifted = false;
+                        continue;
+                    }
+                }
+            }
+        }
+        if (isSrc) {
+            m_srcUtilCEBuffer_ = cebuffer;
+            m_srcUtilCEBufferSize_ = cebuffersize;
+        }
+        else {
+            m_tgtUtilCEBuffer_ = cebuffer;
+            m_tgtUtilCEBufferSize_ = cebuffersize;
+        }
+        result &= CE_PRIMARY_MASK_;
+        return result;
+    }
+
+    /**
+     * Appending an int to an array of ints and increases it if we run out of
+     * space
+     * @param array of int arrays
+     * @param appendindex index at which value will be appended
+     * @param value to append
+     * @return array if size is not increased, otherwise a new array will be
+     *         returned
+     */
+    private static final int[] append(int array[], int appendindex, int value)
+    {
+        if (appendindex + 1 >= array.length) {
+            array = increase(array, appendindex, CE_BUFFER_SIZE_);
+        }
+        array[appendindex] = value;
+        return array;
+    }
+
+    /**
+     * Does secondary strength comparison based on the collected ces.
+     * @param doFrench flag indicates if French ordering is to be done
+     * @return the secondary strength comparison result
+     */
+    private final int doSecondaryCompare(boolean doFrench)
+    {
+        // now, we're gonna reexamine collected CEs
+        if (!doFrench) { // normal
+            int soffset = 0;
+            int toffset = 0;
+            while (true) {
+                int sorder = CollationElementIterator.IGNORABLE;
+                while (sorder == CollationElementIterator.IGNORABLE) {
+                    sorder = m_srcUtilCEBuffer_[soffset ++]
+                             & CE_SECONDARY_MASK_;
+                }
+                int torder = CollationElementIterator.IGNORABLE;
+                while (torder == CollationElementIterator.IGNORABLE) {
+                    torder = m_tgtUtilCEBuffer_[toffset ++]
+                             & CE_SECONDARY_MASK_;
+                }
+
+                if (sorder == torder) {
+                    if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                        if (m_tgtUtilCEBuffer_[toffset - 1] 
+                            != CollationElementIterator.NULLORDER) {
+                            return -1;
+                        }
+                        break;
+                    }
+                    else if (m_tgtUtilCEBuffer_[toffset - 1]
+                             == CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                }
+                else {
+                    if (m_srcUtilCEBuffer_[soffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                    return (sorder < torder) ? -1 : 1;
+                }
+            }
+        }
+        else { // do the French
+            m_srcUtilContOffset_ = 0;
+            m_tgtUtilContOffset_ = 0;
+            m_srcUtilOffset_ = m_srcUtilCEBufferSize_ - 2;
+            m_tgtUtilOffset_ = m_tgtUtilCEBufferSize_ - 2;
+            while (true) {
+                int sorder = getSecondaryFrenchCE(true);
+                int torder = getSecondaryFrenchCE(false);
+                if (sorder == torder) {
+                    if ((m_srcUtilOffset_ < 0 && m_tgtUtilOffset_ < 0)
+                        || (m_srcUtilOffset_ >= 0 
+                            && m_srcUtilCEBuffer_[m_srcUtilOffset_]
+                                    == CollationElementIterator.NULLORDER)) {
+                        break;
+                    }
+                }
+                else {
+                    return (sorder < torder) ? -1 : 1;
+                }
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Calculates the next secondary french CE.
+     * @param isSrc flag indicator if we are calculating the src ces
+     * @return result next modified ce
+     */
+    private final int getSecondaryFrenchCE(boolean isSrc)
+    {
+        int result = CollationElementIterator.IGNORABLE;
+        int offset = m_srcUtilOffset_;
+        int continuationoffset = m_srcUtilContOffset_;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        if (!isSrc) {
+            offset = m_tgtUtilOffset_;
+            continuationoffset = m_tgtUtilContOffset_;
+            cebuffer = m_tgtUtilCEBuffer_;
+        }
+
+        while (result == CollationElementIterator.IGNORABLE
+                && offset >= 0) {
+            if (continuationoffset == 0) {
+                result = cebuffer[offset];
+                while (isContinuation(cebuffer[offset --])){
+                }
+                // after this, sorder is at the start of continuation,
+                // and offset points before that
+                if (isContinuation(cebuffer[offset + 1])) {
+                    // save offset for later
+                    continuationoffset = offset;
+                    offset += 2;
+                }
+            }
+            else {
+                result = cebuffer[offset ++];
+                if (!isContinuation(result)) {
+                    // we have finished with this continuation
+                    offset = continuationoffset;
+                    // reset the pointer to before continuation
+                    continuationoffset = 0;
+                    continue;
+                }
+            }
+            result &= CE_SECONDARY_MASK_; // remove continuation bit
+        }
+        if (isSrc) {
+            m_srcUtilOffset_ = offset;
+            m_srcUtilContOffset_ = continuationoffset;
+        }
+        else {
+            m_tgtUtilOffset_ = offset;
+            m_tgtUtilContOffset_ = continuationoffset;
+        }
+        return result;
+    }
+
+    /**
+     * Does case strength comparison based on the collected ces.
+     * @return the case strength comparison result
+     */
+    private final int doCaseCompare()
+    {
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while ((sorder & CE_REMOVE_CASE_)
+                                    == CollationElementIterator.IGNORABLE) {
+                sorder = m_srcUtilCEBuffer_[soffset ++];
+                if (!isContinuation(sorder) && ((sorder & CE_PRIMARY_MASK_) != 0 || m_utilCompare2_ == true)) {
+                    // primary ignorables should not be considered on the case level when the strength is primary
+                    // otherwise, the CEs stop being well-formed
+                    sorder &= CE_CASE_MASK_3_;
+                    sorder ^= m_caseSwitch_;
+                }
+                else {
+                    sorder = CollationElementIterator.IGNORABLE;
+                }
+            }
+
+            while ((torder & CE_REMOVE_CASE_)
+                                    == CollationElementIterator.IGNORABLE) {
+                torder = m_tgtUtilCEBuffer_[toffset ++];
+                if (!isContinuation(torder) && ((torder & CE_PRIMARY_MASK_) != 0 || m_utilCompare2_ == true)) {
+                    // primary ignorables should not be considered on the case level when the strength is primary
+                    // otherwise, the CEs stop being well-formed
+                    torder &= CE_CASE_MASK_3_;
+                    torder ^= m_caseSwitch_;
+                }
+                else {
+                    torder = CollationElementIterator.IGNORABLE;
+                }
+            }
+
+            sorder &= CE_CASE_BIT_MASK_;
+            torder &= CE_CASE_BIT_MASK_;
+            if (sorder == torder) {
+                // checking end of strings
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                        == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1] 
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Does tertiary strength comparison based on the collected ces.
+     * @return the tertiary strength comparison result
+     */
+    private final int doTertiaryCompare()
+    {
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while ((sorder & CE_REMOVE_CASE_)
+                                == CollationElementIterator.IGNORABLE) {
+                sorder = m_srcUtilCEBuffer_[soffset ++] & m_mask3_;
+                if (!isContinuation(sorder)) {
+                    sorder ^= m_caseSwitch_;
+                }
+                else {
+                    sorder &= CE_REMOVE_CASE_;
+                }
+            }
+
+            while ((torder & CE_REMOVE_CASE_)
+                                == CollationElementIterator.IGNORABLE) {
+                torder = m_tgtUtilCEBuffer_[toffset ++] & m_mask3_;
+                if (!isContinuation(torder)) {
+                    torder ^= m_caseSwitch_;
+                }
+                else {
+                    torder &= CE_REMOVE_CASE_;
+                }
+            }
+
+            if (sorder == torder) {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1]
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1] ==
+                                        CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Does quaternary strength comparison based on the collected ces.
+     * @param lowestpvalue the lowest primary value that will not be ignored if
+     *                      alternate handling is shifted
+     * @return the quaternary strength comparison result
+     */
+    private final int doQuaternaryCompare(int lowestpvalue)
+    {
+        boolean sShifted = true;
+        boolean tShifted = true;
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while (sorder == CollationElementIterator.IGNORABLE
+                    || (isContinuation(sorder) && !sShifted)) {
+                sorder = m_srcUtilCEBuffer_[soffset ++];
+                if (isContinuation(sorder)) {
+                    if (!sShifted) {
+                        continue;
+                    }
+                }
+                else if (Utility.compareUnsigned(sorder, lowestpvalue) > 0
+                            || (sorder & CE_PRIMARY_MASK_)
+                                    == CollationElementIterator.IGNORABLE) {
+                    // non continuation
+                    sorder = CE_PRIMARY_MASK_;
+                    sShifted = false;
+                }
+                else {
+                    sShifted = true;
+                }
+            }
+            sorder >>>= CE_PRIMARY_SHIFT_;
+            while (torder == CollationElementIterator.IGNORABLE
+                    || (isContinuation(torder) && !tShifted)) {
+                torder = m_tgtUtilCEBuffer_[toffset ++];
+                if (isContinuation(torder)) {
+                    if (!tShifted) {
+                        continue;
+                    }
+                }
+                else if (Utility.compareUnsigned(torder, lowestpvalue) > 0
+                            || (torder & CE_PRIMARY_MASK_)
+                                    == CollationElementIterator.IGNORABLE) {
+                    // non continuation
+                    torder = CE_PRIMARY_MASK_;
+                    tShifted = false;
+                }
+                else {
+                    tShifted = true;
+                }
+            }
+            torder >>>= CE_PRIMARY_SHIFT_;
+
+            if (sorder == torder) {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                    == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1]
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1] ==
+                    CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                    CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Internal function. Does byte level string compare. Used by strcoll if
+     * strength == identical and strings are otherwise equal. This is a rare
+     * case. Comparison must be done on NFD normalized strings. FCD is not good
+     * enough.
+     * @param source text
+     * @param target text
+     * @param offset of the first difference in the text strings
+     * @param normalize flag indicating if we are to normalize the text before
+     *              comparison
+     * @return 1 if source is greater than target, -1 less than and 0 if equals
+     */
+    private static final int doIdenticalCompare(String source, String target,
+                                                int offset, boolean normalize)
+
+    {
+        if (normalize) {
+            if (Normalizer.quickCheck(source, Normalizer.NFD,0)
+                                                    != Normalizer.YES) {
+                source = Normalizer.decompose(source, false);
+            }
+
+            if (Normalizer.quickCheck(target, Normalizer.NFD,0)
+                                                        != Normalizer.YES) {
+                target = Normalizer.decompose(target, false);
+            }
+            offset = 0;
+        }
+
+        return doStringCompare(source, target, offset);
+    }
+
+    /**
+     * Compares string for their codepoint order.
+     * This comparison handles surrogate characters and place them after the
+     * all non surrogate characters.
+     * @param source text
+     * @param target text
+     * @param offset start offset for comparison
+     * @return 1 if source is greater than target, -1 less than and 0 if equals
+     */
+    private static final int doStringCompare(String source,
+                                             String target,
+                                             int offset)
+    {
+        // compare identical prefixes - they do not need to be fixed up
+        char schar = 0;
+        char tchar = 0;
+        int slength = source.length();
+        int tlength = target.length();
+        int minlength = Math.min(slength, tlength);
+        while (offset < minlength) {
+            schar = source.charAt(offset);
+            tchar = target.charAt(offset ++);
+            if (schar != tchar) {
+                break;
+            }
+        }
+
+        if (schar == tchar && offset == minlength) {
+            if (slength > minlength) {
+                return 1;
+            }
+            if (tlength > minlength) {
+                return -1;
+            }
+            return 0;
+        }
+
+        //  if both values are in or above the surrogate range, Fix them up.
+        if (schar >= UTF16.LEAD_SURROGATE_MIN_VALUE
+            && tchar >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            schar = fixupUTF16(schar);
+            tchar = fixupUTF16(tchar);
+        }
+
+        // now c1 and c2 are in UTF-32-compatible order
+        return (schar < tchar) ? -1 : 1; // schar and tchar has to be different
+    }
+
+    /**
+     * Rotate surrogates to the top to get code point order
+     */
+    private static final char fixupUTF16(char ch)
+    {
+        if (ch >= 0xe000) {
+            ch -= 0x800;
+        }
+        else {
+            ch += 0x2000;
+        }
+        return ch;
+    }
+
+    /**
+     * Resets the internal case data members and compression values.
+     */
+    private void updateInternalState()
+    {
+        if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+            m_caseSwitch_ = CASE_SWITCH_;
+        }
+        else {
+            m_caseSwitch_ = NO_CASE_SWITCH_;
+        }
+
+        if (m_isCaseLevel_ || m_caseFirst_ == AttributeValue.OFF_) {
+            m_mask3_ = CE_REMOVE_CASE_;
+            m_common3_ = COMMON_NORMAL_3_;
+            m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_OFF_;
+            m_top3_ = COMMON_TOP_CASE_SWITCH_OFF_3_;
+            m_bottom3_ = COMMON_BOTTOM_3_;
+        }
+        else {
+            m_mask3_ = CE_KEEP_CASE_;
+            m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_ON_;
+            if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+                m_common3_ = COMMON_UPPER_FIRST_3_;
+                m_top3_ = COMMON_TOP_CASE_SWITCH_UPPER_3_;
+                m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_UPPER_3_;
+            } else {
+                m_common3_ = COMMON_NORMAL_3_;
+                m_top3_ = COMMON_TOP_CASE_SWITCH_LOWER_3_;
+                m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_LOWER_3_;
+            }
+        }
+
+        // Set the compression values
+        int total3 = m_top3_ - COMMON_BOTTOM_3_ - 1;
+        // we multilply double with int, but need only int
+        m_topCount3_ = (int)(PROPORTION_3_ * total3);
+        m_bottomCount3_ = total3 - m_topCount3_;
+
+        if (!m_isCaseLevel_ && getStrength() == AttributeValue.TERTIARY_
+            && !m_isFrenchCollation_ && !m_isAlternateHandlingShifted_) {
+            m_isSimple3_ = true;
+        }
+        else {
+            m_isSimple3_ = false;
+        }
+        if(!m_isCaseLevel_ && getStrength() <= AttributeValue.TERTIARY_ && !m_isNumericCollation_
+          && !m_isAlternateHandlingShifted_ && !latinOneFailed_) {
+          if(latinOneCEs_ == null || latinOneRegenTable_) {
+            if(setUpLatinOne()) { // if we succeed in building latin1 table, we'll use it
+              latinOneUse_ = true;
+            } else {
+              latinOneUse_ = false;
+              latinOneFailed_ = true;
+            }
+            latinOneRegenTable_ = false;
+          } else { // latin1Table exists and it doesn't need to be regenerated, just use it
+            latinOneUse_ = true;
+          }
+        } else {
+          latinOneUse_ = false;
+        }
+
+    }
+
+    /**
+     * Initializes the RuleBasedCollator
+     */
+    private final void init()
+    {
+        for (m_minUnsafe_ = 0; m_minUnsafe_ < DEFAULT_MIN_HEURISTIC_;
+             m_minUnsafe_ ++) {
+            // Find the smallest unsafe char.
+            if (isUnsafe(m_minUnsafe_)) {
+                break;
+            }
+        }
+
+        for (m_minContractionEnd_ = 0;
+             m_minContractionEnd_ < DEFAULT_MIN_HEURISTIC_;
+             m_minContractionEnd_ ++) {
+            // Find the smallest contraction-ending char.
+            if (isContractionEnd(m_minContractionEnd_)) {
+                break;
+            }
+        }
+        latinOneFailed_ = true;
+        setStrength(m_defaultStrength_);
+        setDecomposition(m_defaultDecomposition_);
+        m_variableTopValue_ = m_defaultVariableTopValue_;
+        m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+        m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+        m_isCaseLevel_ = m_defaultIsCaseLevel_;
+        m_caseFirst_ = m_defaultCaseFirst_;
+        m_isHiragana4_ = m_defaultIsHiragana4_;
+        m_isNumericCollation_ = m_defaultIsNumericCollation_;
+        latinOneFailed_ = false;
+        updateInternalState();
+    }
+
+    /**
+     *  Initializes utility iterators and byte buffer used by compare
+     */
+    private final void initUtility(boolean allocate) {
+        if (allocate) {
+            if (m_srcUtilIter_ == null) {
+                m_srcUtilIter_ = new StringUCharacterIterator();
+                m_srcUtilColEIter_ = new CollationElementIterator(m_srcUtilIter_, this);
+                m_tgtUtilIter_ = new StringUCharacterIterator();
+                m_tgtUtilColEIter_ = new CollationElementIterator(m_tgtUtilIter_, this);
+                m_utilBytes0_ = new byte[SORT_BUFFER_INIT_SIZE_CASE_]; // case
+                m_utilBytes1_ = new byte[SORT_BUFFER_INIT_SIZE_1_]; // primary
+                m_utilBytes2_ = new byte[SORT_BUFFER_INIT_SIZE_2_]; // secondary
+                m_utilBytes3_ = new byte[SORT_BUFFER_INIT_SIZE_3_]; // tertiary
+                m_utilBytes4_ = new byte[SORT_BUFFER_INIT_SIZE_4_];  // Quaternary
+                m_srcUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+                m_tgtUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+            }
+        } else {
+            m_srcUtilIter_ = null;
+            m_srcUtilColEIter_ = null;
+            m_tgtUtilIter_ = null;
+            m_tgtUtilColEIter_ = null;
+            m_utilBytes0_ = null;
+            m_utilBytes1_ = null;
+            m_utilBytes2_ = null;
+            m_utilBytes3_ = null;
+            m_utilBytes4_ = null;
+            m_srcUtilCEBuffer_ = null;
+            m_tgtUtilCEBuffer_ = null;
+        }
+    }
+
+    // Consts for Latin-1 special processing
+    private static final int ENDOFLATINONERANGE_ = 0xFF;
+    private static final int LATINONETABLELEN_   = (ENDOFLATINONERANGE_+50);
+    private static final int BAIL_OUT_CE_        = 0xFF000000;
+
+     /**
+     * Generate latin-1 tables
+     */
+
+    private class shiftValues {
+        int primShift = 24;
+        int secShift = 24;
+        int terShift = 24;
+    }
+
+    private final void
+    addLatinOneEntry(char ch, int CE, shiftValues sh) {
+      int primary1 = 0, primary2 = 0, secondary = 0, tertiary = 0;
+      boolean reverseSecondary = false;
+      if(!isContinuation(CE)) {
+        tertiary = ((CE & m_mask3_));
+        tertiary ^= m_caseSwitch_;
+        reverseSecondary = true;
+      } else {
+        tertiary = (byte)((CE & CE_REMOVE_CONTINUATION_MASK_));
+        tertiary &= CE_REMOVE_CASE_;
+        reverseSecondary = false;
+      }
+
+      secondary = ((CE >>>= 8) & LAST_BYTE_MASK_);
+      primary2 =  ((CE >>>= 8) & LAST_BYTE_MASK_);
+      primary1 =  (CE >>> 8);
+
+      if(primary1 != 0) {
+        latinOneCEs_[ch] |= (primary1 << sh.primShift);
+        sh.primShift -= 8;
+      }
+      if(primary2 != 0) {
+        if(sh.primShift < 0) {
+          latinOneCEs_[ch] = BAIL_OUT_CE_;
+          latinOneCEs_[latinOneTableLen_+ch] = BAIL_OUT_CE_;
+          latinOneCEs_[2*latinOneTableLen_+ch] = BAIL_OUT_CE_;
+          return;
+        }
+        latinOneCEs_[ch] |= (primary2 << sh.primShift);
+        sh.primShift -= 8;
+      }
+      if(secondary != 0) {
+        if(reverseSecondary && m_isFrenchCollation_) { // reverse secondary
+          latinOneCEs_[latinOneTableLen_+ch] >>>= 8; // make space for secondary
+          latinOneCEs_[latinOneTableLen_+ch] |= (secondary << 24);
+        } else { // normal case
+          latinOneCEs_[latinOneTableLen_+ch] |= (secondary << sh.secShift);
+        }
+        sh.secShift -= 8;
+      }
+      if(tertiary != 0) {
+        latinOneCEs_[2*latinOneTableLen_+ch] |= (tertiary << sh.terShift);
+        sh.terShift -= 8;
+      }
+    }
+
+    private final void
+    resizeLatinOneTable(int newSize) {
+        int newTable[] = new int[3*newSize];
+        int sizeToCopy = ((newSize<latinOneTableLen_)?newSize:latinOneTableLen_);
+        //uprv_memset(newTable, 0, newSize*sizeof(uint32_t)*3); // automatically cleared.
+        System.arraycopy(latinOneCEs_, 0, newTable, 0, sizeToCopy);
+        System.arraycopy(latinOneCEs_, latinOneTableLen_, newTable, newSize, sizeToCopy);
+        System.arraycopy(latinOneCEs_, 2*latinOneTableLen_, newTable, 2*newSize, sizeToCopy);
+        latinOneTableLen_ = newSize;
+        latinOneCEs_ = newTable;
+    }
+
+    private final boolean setUpLatinOne() {
+      if(latinOneCEs_ == null || m_reallocLatinOneCEs_) {
+        latinOneCEs_ = new int[3*LATINONETABLELEN_];
+        latinOneTableLen_ = LATINONETABLELEN_;
+        m_reallocLatinOneCEs_ = false;
+      } else {
+        Arrays.fill(latinOneCEs_, 0);
+      }
+      if(m_ContInfo_ == null) {
+        m_ContInfo_ = new ContractionInfo();
+      }
+      char ch = 0;
+      //StringBuffer sCh = new StringBuffer();
+      //CollationElementIterator it = getCollationElementIterator(sCh.toString());
+      CollationElementIterator it = getCollationElementIterator("");
+
+      shiftValues s = new shiftValues();
+      int CE = 0;
+      char contractionOffset = ENDOFLATINONERANGE_+1;
+
+      for(ch = 0; ch <= ENDOFLATINONERANGE_; ch++) {
+        s.primShift = 24; s.secShift = 24; s.terShift = 24;
+        if(ch < 0x100) {
+          CE = m_trie_.getLatin1LinearValue(ch);
+        } else {
+          CE = m_trie_.getLeadValue(ch);
+          if(CE == CollationElementIterator.CE_NOT_FOUND_) {
+            CE = UCA_.m_trie_.getLeadValue(ch);
+          }
+        }
+        if(!isSpecial(CE)) {
+          addLatinOneEntry(ch, CE, s);
+        } else {
+          switch (RuleBasedCollator.getTag(CE)) {
+          case CollationElementIterator.CE_EXPANSION_TAG_:
+          case CollationElementIterator.CE_DIGIT_TAG_:
+            //sCh.delete(0, sCh.length());
+            //sCh.append(ch);
+            //it.setText(sCh.toString());
+            it.setText(UCharacter.toString(ch));
+            while((CE = it.next()) != CollationElementIterator.NULLORDER) {
+              if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                latinOneCEs_[ch] = BAIL_OUT_CE_;
+                latinOneCEs_[latinOneTableLen_+ch] = BAIL_OUT_CE_;
+                latinOneCEs_[2*latinOneTableLen_+ch] = BAIL_OUT_CE_;
+                break;
+              }
+              addLatinOneEntry(ch, CE, s);
+            }
+            break;
+          case CollationElementIterator.CE_CONTRACTION_TAG_:
+            // here is the trick
+            // F2 is contraction. We do something very similar to contractions
+            // but have two indices, one in the real contraction table and the
+            // other to where we stuffed things. This hopes that we don't have
+            // many contractions (this should work for latin-1 tables).
+            {
+              if((CE & 0x00FFF000) != 0) {
+                latinOneFailed_ = true;
+                return false;
+              }
+
+              int UCharOffset = (CE & 0xFFFFFF) - m_contractionOffset_; //getContractionOffset(CE)]
+
+              CE |= (contractionOffset & 0xFFF) << 12; // insert the offset in latin-1 table
+
+              latinOneCEs_[ch] = CE;
+              latinOneCEs_[latinOneTableLen_+ch] = CE;
+              latinOneCEs_[2*latinOneTableLen_+ch] = CE;
+
+              // We're going to jump into contraction table, pick the elements
+              // and use them
+              do {
+                  //CE = *(contractionCEs + (UCharOffset - contractionIndex));
+                  CE = m_contractionCE_[UCharOffset];
+                  if(isSpecial(CE) 
+                     && getTag(CE) 
+                               == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    int i;    /* general counter */
+                    //uint32_t *CEOffset = (uint32_t *)image+getExpansionOffset(CE); /* find the offset to expansion table */
+                    int offset = ((CE & 0xFFFFF0) >> 4) - m_expansionOffset_; //it.getExpansionOffset(this, CE);
+                    int size = CE & 0xF; // getExpansionCount(CE);
+                    //CE = *CEOffset++;
+                    if(size != 0) { /* if there are less than 16 elements in expansion, we don't terminate */
+                      for(i = 0; i<size; i++) {
+                        if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                          latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          break;
+                        }
+                        addLatinOneEntry(contractionOffset, m_expansion_[offset+i], s);
+                      }
+                    } else { /* else, we do */
+                      while(m_expansion_[offset] != 0) {
+                        if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                          latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          break;
+                        }
+                        addLatinOneEntry(contractionOffset, m_expansion_[offset++], s);
+                      }
+                    }
+                    contractionOffset++;
+                  } else if(!isSpecial(CE)) {
+                    addLatinOneEntry(contractionOffset++, CE, s);
+                  } else {
+                      latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                      latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                      latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                      contractionOffset++;
+                  }
+                  UCharOffset++;
+                  s.primShift = 24; s.secShift = 24; s.terShift = 24;
+                  if(contractionOffset == latinOneTableLen_) { // we need to reallocate
+                   resizeLatinOneTable(2*latinOneTableLen_);
+                  }
+              } while(m_contractionIndex_[UCharOffset] != 0xFFFF);
+            }
+            break;
+          case CollationElementIterator.CE_SPEC_PROC_TAG_:
+            {
+              // 0xB7 is a precontext character defined in UCA5.1, a special
+              // handle is implemeted in order to save LatinOne table for
+              // most locales.
+              if (ch == 0xb7) {
+                  addLatinOneEntry(ch, CE, s);
+              }
+              else {
+                  latinOneFailed_ = true;
+                  return false;
+              }
+            }
+            break;
+          default:
+            latinOneFailed_ = true;
+            return false;
+          }
+        }
+      }
+      // compact table
+      if(contractionOffset < latinOneTableLen_) {
+        resizeLatinOneTable(contractionOffset);
+      }
+      return true;
+    }
+
+    private class ContractionInfo {
+        int index;
+    }
+
+    ContractionInfo m_ContInfo_;
+
+    private int
+    getLatinOneContraction(int strength, int CE, String s) {
+    //int strength, int CE, String s, Integer ind) {
+      int len = s.length();
+      //const UChar *UCharOffset = (UChar *)coll->image+getContractOffset(CE&0xFFF);
+      int UCharOffset = (CE & 0xFFF) - m_contractionOffset_;
+      int offset = 1;
+      int latinOneOffset = (CE & 0x00FFF000) >>> 12;
+      char schar = 0, tchar = 0;
+
+      for(;;) {
+        /*
+        if(len == -1) {
+          if(s[*index] == 0) { // end of string
+            return(coll->latinOneCEs[strength*coll->latinOneTableLen+latinOneOffset]);
+          } else {
+            schar = s[*index];
+          }
+        } else {
+        */
+          if(m_ContInfo_.index == len) {
+            return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset]);
+          } else {
+            schar = s.charAt(m_ContInfo_.index);
+          }
+        //}
+
+        while(schar > (tchar = m_contractionIndex_[UCharOffset+offset]/**(UCharOffset+offset)*/)) { /* since the contraction codepoints should be ordered, we skip all that are smaller */
+          offset++;
+        }
+
+        if (schar == tchar) {
+          m_ContInfo_.index++;
+          return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset+offset]);
+        }
+        else
+        {
+          if(schar  > ENDOFLATINONERANGE_ /*& 0xFF00*/) {
+            return BAIL_OUT_CE_;
+          }
+          // skip completely ignorables
+          int isZeroCE = m_trie_.getLeadValue(schar); //UTRIE_GET32_FROM_LEAD(coll->mapping, schar);
+          if(isZeroCE == 0) { // we have to ignore completely ignorables
+            m_ContInfo_.index++;
+            continue;
+          }
+
+          return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset]);
+        }
+      }
+    }
+
+
+    /**
+     * This is a fast strcoll, geared towards text in Latin-1.
+     * It supports contractions of size two, French secondaries
+     * and case switching. You can use it with strengths primary
+     * to tertiary. It does not support shifted and case level.
+     * It relies on the table build by setupLatin1Table. If it
+     * doesn't understand something, it will go to the regular
+     * strcoll.
+     */
+    private final int
+    compareUseLatin1(String source, String target, int startOffset)
+    {
+        int sLen = source.length();
+        int tLen = target.length();
+
+        int strength = getStrength();
+
+        int sIndex = startOffset, tIndex = startOffset;
+        char sChar = 0, tChar = 0;
+        int sOrder=0, tOrder=0;
+
+        boolean endOfSource = false;
+
+        //uint32_t *elements = coll->latinOneCEs;
+
+        boolean haveContractions = false; // if we have contractions in our string
+                                        // we cannot do French secondary
+
+        int offset = latinOneTableLen_;
+
+        // Do the primary level
+    primLoop:
+        for(;;) {
+          while(sOrder==0) { // this loop skips primary ignorables
+            // sOrder=getNextlatinOneCE(source);
+              if(sIndex==sLen) {
+                endOfSource = true;
+                break;
+              }
+              sChar=source.charAt(sIndex++); //[sIndex++];
+            //}
+            if(sChar > ENDOFLATINONERANGE_) { // if we encounter non-latin-1, we bail out
+              //fprintf(stderr, "R");
+              return compareRegular(source, target, startOffset);
+            }
+            sOrder = latinOneCEs_[sChar];
+            if(isSpecial(sOrder)) { // if we got a special
+              // specials can basically be either contractions or bail-out signs. If we get anything
+              // else, we'll bail out anywasy
+              if(getTag(sOrder) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+                m_ContInfo_.index = sIndex;
+                sOrder = getLatinOneContraction(0, sOrder, source);
+                sIndex = m_ContInfo_.index;
+                haveContractions = true; // if there are contractions, we cannot do French secondary
+                // However, if there are contractions in the table, but we always use just one char,
+                // we might be able to do French. This should be checked out.
+              }
+              if(isSpecial(sOrder) /*== UCOL_BAIL_OUT_CE*/) {
+                //fprintf(stderr, "S");
+                return compareRegular(source, target, startOffset);
+              }
+            }
+          }
+
+          while(tOrder==0) {  // this loop skips primary ignorables
+            // tOrder=getNextlatinOneCE(target);
+            if(tIndex==tLen) {
+              if(endOfSource) {
+                break primLoop;
+              } else {
+                return 1;
+              }
+            }
+            tChar=target.charAt(tIndex++); //[tIndex++];
+            if(tChar > ENDOFLATINONERANGE_) { // if we encounter non-latin-1, we bail out
+              //fprintf(stderr, "R");
+              return compareRegular(source, target, startOffset);
+            }
+            tOrder = latinOneCEs_[tChar];
+            if(isSpecial(tOrder)) {
+              // Handling specials, see the comments for source
+              if(getTag(tOrder) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+                m_ContInfo_.index = tIndex;
+                tOrder = getLatinOneContraction(0, tOrder, target);
+                tIndex = m_ContInfo_.index;
+                haveContractions = true;
+              }
+              if(isSpecial(tOrder)/*== UCOL_BAIL_OUT_CE*/) {
+                //fprintf(stderr, "S");
+                return compareRegular(source, target, startOffset);
+              }
+            }
+          }
+          if(endOfSource) { // source is finished, but target is not, say the result.
+              return -1;
+          }
+
+          if(sOrder == tOrder) { // if we have same CEs, we continue the loop
+            sOrder = 0; tOrder = 0;
+            continue;
+          } else {
+            // compare current top bytes
+            if(((sOrder^tOrder)&0xFF000000)!=0) {
+              // top bytes differ, return difference
+              if(sOrder >>> 8 < tOrder >>> 8) {
+                return -1;
+              } else {
+                return 1;
+              }
+              // instead of return (int32_t)(sOrder>>24)-(int32_t)(tOrder>>24);
+              // since we must return enum value
+            }
+
+            // top bytes match, continue with following bytes
+            sOrder<<=8;
+            tOrder<<=8;
+          }
+        }
+
+        // after primary loop, we definitely know the sizes of strings,
+        // so we set it and use simpler loop for secondaries and tertiaries
+        //sLen = sIndex; tLen = tIndex;
+        if(strength >= SECONDARY) {
+          // adjust the table beggining
+          //latinOneCEs_ += coll->latinOneTableLen;
+          endOfSource = false;
+
+          if(!m_isFrenchCollation_) { // non French
+            // This loop is a simplified copy of primary loop
+            // at this point we know that whole strings are latin-1, so we don't
+            // check for that. We also know that we only have contractions as
+            // specials.
+            //sIndex = 0; tIndex = 0;
+            sIndex = startOffset; tIndex = startOffset;
+    secLoop:
+            for(;;) {
+              while(sOrder==0) {
+                if(sIndex==sLen) {
+                  endOfSource = true;
+                  break;
+                }
+                sChar=source.charAt(sIndex++); //[sIndex++];
+                sOrder = latinOneCEs_[offset+sChar];
+                if(isSpecial(sOrder)) {
+                    m_ContInfo_.index = sIndex;
+                    sOrder = getLatinOneContraction(1, sOrder, source);
+                    sIndex = m_ContInfo_.index;
+                }
+              }
+
+              while(tOrder==0) {
+                if(tIndex==tLen) {
+                  if(endOfSource) {
+                    break secLoop;
+                  } else {
+                    return 1;
+                  }
+                }
+                tChar=target.charAt(tIndex++); //[tIndex++];
+                tOrder = latinOneCEs_[offset+tChar];
+                if(isSpecial(tOrder)) {
+                    m_ContInfo_.index = tIndex;
+                    tOrder = getLatinOneContraction(1, tOrder, target);
+                    tIndex = m_ContInfo_.index;
+                }
+              }
+              if(endOfSource) {
+                  return -1;
+              }
+
+              if(sOrder == tOrder) {
+                sOrder = 0; tOrder = 0;
+                continue;
+              } else {
+                // see primary loop for comments on this
+                if(((sOrder^tOrder)&0xFF000000)!=0) {
+                  if(sOrder >>> 8 < tOrder >>> 8) {
+                    return -1;
+                  } else {
+                    return 1;
+                  }
+                }
+                sOrder<<=8;
+                tOrder<<=8;
+              }
+            }
+          } else { // French
+            if(haveContractions) { // if we have contractions, we have to bail out
+              // since we don't really know how to handle them here
+              return compareRegular(source, target, startOffset);
+            }
+            // For French, we go backwards
+            sIndex = sLen; tIndex = tLen;
+    secFLoop:
+            for(;;) {
+              while(sOrder==0) {
+                if(sIndex==startOffset) {
+                  endOfSource = true;
+                  break;
+                }
+                sChar=source.charAt(--sIndex); //[--sIndex];
+                sOrder = latinOneCEs_[offset+sChar];
+                // don't even look for contractions
+              }
+
+              while(tOrder==0) {
+                if(tIndex==startOffset) {
+                  if(endOfSource) {
+                    break secFLoop;
+                  } else {
+                    return 1;
+                  }
+                }
+                tChar=target.charAt(--tIndex); //[--tIndex];
+                tOrder = latinOneCEs_[offset+tChar];
+                // don't even look for contractions
+              }
+              if(endOfSource) {
+                  return -1;
+              }
+
+              if(sOrder == tOrder) {
+                sOrder = 0; tOrder = 0;
+                continue;
+              } else {
+                // see the primary loop for comments
+                if(((sOrder^tOrder)&0xFF000000)!=0) {
+                  if(sOrder >>> 8 < tOrder >>> 8) {
+                    return -1;
+                  } else {
+                    return 1;
+                  }
+                }
+                sOrder<<=8;
+                tOrder<<=8;
+              }
+            }
+          }
+        }
+
+        if(strength >= TERTIARY) {
+          // tertiary loop is the same as secondary (except no French)
+          offset += latinOneTableLen_;
+          //sIndex = 0; tIndex = 0;
+          sIndex = startOffset; tIndex = startOffset;
+          endOfSource = false;
+          for(;;) {
+            while(sOrder==0) {
+              if(sIndex==sLen) {
+                endOfSource = true;
+                break;
+              }
+              sChar=source.charAt(sIndex++); //[sIndex++];
+              sOrder = latinOneCEs_[offset+sChar];
+              if(isSpecial(sOrder)) {
+                m_ContInfo_.index = sIndex;
+                sOrder = getLatinOneContraction(2, sOrder, source);
+                sIndex = m_ContInfo_.index;
+              }
+            }
+            while(tOrder==0) {
+              if(tIndex==tLen) {
+                if(endOfSource) {
+                  return 0; // if both strings are at the end, they are equal
+                } else {
+                  return 1;
+                }
+              }
+              tChar=target.charAt(tIndex++); //[tIndex++];
+              tOrder = latinOneCEs_[offset+tChar];
+              if(isSpecial(tOrder)) {
+                m_ContInfo_.index = tIndex;
+                tOrder = getLatinOneContraction(2, tOrder, target);
+                tIndex = m_ContInfo_.index;
+              }
+            }
+            if(endOfSource) {
+                return -1;
+            }
+            if(sOrder == tOrder) {
+              sOrder = 0; tOrder = 0;
+              continue;
+            } else {
+              if(((sOrder^tOrder)&0xff000000)!=0) {
+                if(sOrder >>> 8 < tOrder >>> 8) {
+                  return -1;
+                } else {
+                  return 1;
+                }
+              }
+              sOrder<<=8;
+              tOrder<<=8;
+            }
+          }
+        }
+        return 0;
+    }
+    /** 
+     * Get the version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public VersionInfo getVersion() {
+        /* RunTime version  */
+        int rtVersion = VersionInfo.UCOL_RUNTIME_VERSION.getMajor();
+        /* Builder version*/
+        int bdVersion = m_version_.getMajor();
+
+        /* Charset Version. Need to get the version from cnv files
+         * makeconv should populate cnv files with version and
+         * an api has to be provided in ucnv.h to obtain this version
+         */
+        int csVersion = 0;
+
+        /* combine the version info */
+        int cmbVersion = ((rtVersion<<11) | (bdVersion<<6) | (csVersion)) & 0xFFFF;
+        
+        /* Tailoring rules */
+        return VersionInfo.getInstance(cmbVersion>>8, 
+                cmbVersion & 0xFF, 
+                m_version_.getMinor(), 
+                UCA_.m_UCA_version_.getMajor());
+
+//        versionInfo[0] = (uint8_t)(cmbVersion>>8);
+//        versionInfo[1] = (uint8_t)cmbVersion;
+//        versionInfo[2] = coll->image->version[1];
+//        versionInfo[3] = coll->UCA->image->UCAVersion[0];
+    }
+    
+    /** 
+     * Get the UCA version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public VersionInfo getUCAVersion() {
+        return UCA_.m_UCA_version_;
+    }
+
+    private transient boolean m_reallocLatinOneCEs_;
+}
diff --git a/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
new file mode 100644
index 0000000..34148c9
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1709 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+
+/**
+ * <p>A class that formats numbers according to a set of rules. This number formatter is
+ * typically used for spelling out numeric values in words (e.g., 25,3476 as
+ * &quot;twenty-five thousand three hundred seventy-six&quot; or &quot;vingt-cinq mille trois
+ * cents soixante-seize&quot; or
+ * &quot;funfundzwanzigtausenddreihundertsechsundsiebzig&quot;), but can also be used for
+ * other complicated formatting tasks, such as formatting a number of seconds as hours,
+ * minutes and seconds (e.g., 3,730 as &quot;1:02:10&quot;).</p>
+ *
+ * <p>The resources contain three predefined formatters for each locale: spellout, which
+ * spells out a value in words (123 is &quot;one hundred twenty-three&quot;); ordinal, which
+ * appends an ordinal suffix to the end of a numeral (123 is &quot;123rd&quot;); and
+ * duration, which shows a duration in seconds as hours, minutes, and seconds (123 is
+ * &quot;2:03&quot;).&nbsp; The client can also define more specialized <tt>RuleBasedNumberFormat</tt>s
+ * by supplying programmer-defined rule sets.</p>
+ *
+ * <p>The behavior of a <tt>RuleBasedNumberFormat</tt> is specified by a textual description
+ * that is either passed to the constructor as a <tt>String</tt> or loaded from a resource
+ * bundle. In its simplest form, the description consists of a semicolon-delimited list of <em>rules.</em>
+ * Each rule has a string of output text and a value or range of values it is applicable to.
+ * In a typical spellout rule set, the first twenty rules are the words for the numbers from
+ * 0 to 19:</p>
+ *
+ * <pre>zero; one; two; three; four; five; six; seven; eight; nine;
+ * ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen;</pre>
+ *
+ * <p>For larger numbers, we can use the preceding set of rules to format the ones place, and
+ * we only have to supply the words for the multiples of 10:</p>
+ *
+ * <pre>20: twenty[-&gt;&gt;];
+ * 30: thirty{-&gt;&gt;];
+ * 40: forty[-&gt;&gt;];
+ * 50: fifty[-&gt;&gt;];
+ * 60: sixty[-&gt;&gt;];
+ * 70: seventy[-&gt;&gt;];
+ * 80: eighty[-&gt;&gt;];
+ * 90: ninety[-&gt;&gt;];</pre>
+ *
+ * <p>In these rules, the <em>base value</em> is spelled out explicitly and set off from the
+ * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable
+ * to all numbers from its own base value to one less than the next rule's base value. The
+ * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the fomatter to
+ * isolate the number's ones digit, format it using this same set of rules, and place the
+ * result at the position of the &quot;&gt;&gt;&quot; token. Text in brackets is omitted if
+ * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24
+ * is &quot;twenty-four,&quot; not &quot;twenty four&quot;).</p>
+ *
+ * <p>For even larger numbers, we can actually look up several parts of the number in the
+ * list:</p>
+ *
+ * <pre>100: &lt;&lt; hundred[ &gt;&gt;];</pre>
+ *
+ * <p>The &quot;&lt;&lt;&quot; represents a new kind of substitution. The &lt;&lt; isolates
+ * the hundreds digit (and any digits to its left), formats it using this same rule set, and
+ * places the result where the &quot;&lt;&lt;&quot; was. Notice also that the meaning of
+ * &gt;&gt; has changed: it now refers to both the tens and the ones digits. The meaning of
+ * both substitutions depends on the rule's base value. The base value determines the rule's <em>divisor,</em>
+ * which is the highest power of 10 that is less than or equal to the base value (the user
+ * can change this). To fill in the substitutions, the formatter divides the number being
+ * formatted by the divisor. The integral quotient is used to fill in the &lt;&lt;
+ * substitution, and the remainder is used to fill in the &gt;&gt; substitution. The meaning
+ * of the brackets changes similarly: text in brackets is omitted if the value being
+ * formatted is an even multiple of the rule's divisor. The rules are applied recursively, so
+ * if a substitution is filled in with text that includes another substitution, that
+ * substitution is also filled in.</p>
+ *
+ * <p>This rule covers values up to 999, at which point we add another rule:</p>
+ *
+ * <pre>1000: &lt;&lt; thousand[ &gt;&gt;];</pre>
+ *
+ * <p>Again, the meanings of the brackets and substitution tokens shift because the rule's
+ * base value is a higher power of 10, changing the rule's divisor. This rule can actually be
+ * used all the way up to 999,999. This allows us to finish out the rules as follows:</p>
+ *
+ * <pre>1,000,000: &lt;&lt; million[ &gt;&gt;];
+ * 1,000,000,000: &lt;&lt; billion[ &gt;&gt;];
+ * 1,000,000,000,000: &lt;&lt; trillion[ &gt;&gt;];
+ * 1,000,000,000,000,000: OUT OF RANGE!;</pre>
+ *
+ * <p>Commas, periods, and spaces can be used in the base values to improve legibility and
+ * are ignored by the rule parser. The last rule in the list is customarily treated as an
+ * &quot;overflow rule,&quot; applying to everything from its base value on up, and often (as
+ * in this example) being used to print out an error message or default representation.
+ * Notice also that the size of the major groupings in large numbers is controlled by the
+ * spacing of the rules: because in English we group numbers by thousand, the higher rules
+ * are separated from each other by a factor of 1,000.</p>
+ *
+ * <p>To see how these rules actually work in practice, consider the following example:
+ * Formatting 25,430 with this rule set would work like this:</p>
+ *
+ * <table border="0" width="630">
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>&lt;&lt; thousand &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[the rule whose base value is 1,000 is applicable to 25,340]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>twenty-&gt;&gt;</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25,340 over 1,000 is 25. The rule for 20 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-<strong>five</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25 mod 10 is 5. The rule for 5 is &quot;five.&quot;</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>&lt;&lt; hundred &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[25,340 mod 1,000 is 340. The rule for 100 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>three</strong> hundred &gt;&gt;</td>
+ *     <td width="340" valign="top">[340 over 100 is 3. The rule for 3 is &quot;three.&quot;]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand three hundred <strong>forty</strong></td>
+ *     <td width="340" valign="top">[340 mod 100 is 40. The rule for 40 applies. Since 40 divides
+ *     evenly by 10, the hyphen and substitution in the brackets are omitted.]</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The above syntax suffices only to format positive integers. To format negative numbers,
+ * we add a special rule:</p>
+ *
+ * <pre>-x: minus &gt;&gt;;</pre>
+ *
+ * <p>This is called a <em>negative-number rule,</em> and is identified by &quot;-x&quot;
+ * where the base value would be. This rule is used to format all negative numbers. the
+ * &gt;&gt; token here means &quot;find the number's absolute value, format it with these
+ * rules, and put the result here.&quot;</p>
+ *
+ * <p>We also add a special rule called a <em>fraction rule </em>for numbers with fractional
+ * parts:</p>
+ *
+ * <pre>x.x: &lt;&lt; point &gt;&gt;;</pre>
+ *
+ * <p>This rule is used for all positive non-integers (negative non-integers pass through the
+ * negative-number rule first and then through this rule). Here, the &lt;&lt; token refers to
+ * the number's integral part, and the &gt;&gt; to the number's fractional part. The
+ * fractional part is formatted as a series of single-digit numbers (e.g., 123.456 would be
+ * formatted as &quot;one hundred twenty-three point four five six&quot;).</p>
+ *
+ * <p>To see how this rule syntax is applied to various languages, examine the resource data.</p>
+ *
+ * <p>There is actually much more flexibility built into the rule language than the
+ * description above shows. A formatter may own multiple rule sets, which can be selected by
+ * the caller, and which can use each other to fill in their substitutions. Substitutions can
+ * also be filled in with digits, using a DecimalFormat object. There is syntax that can be
+ * used to alter a rule's divisor in various ways. And there is provision for much more
+ * flexible fraction handling. A complete description of the rule syntax follows:</p>
+ *
+ * <hr>
+ *
+ * <p>The description of a <tt>RuleBasedNumberFormat</tt>'s behavior consists of one or more <em>rule
+ * sets.</em> Each rule set consists of a name, a colon, and a list of <em>rules.</em> A rule
+ * set name must begin with a % sign. Rule sets with names that begin with a single % sign
+ * are <em>public:</em> the caller can specify that they be used to format and parse numbers.
+ * Rule sets with names that begin with %% are <em>private:</em> they exist only for the use
+ * of other rule sets. If a formatter only has one rule set, the name may be omitted.</p>
+ *
+ * <p>The user can also specify a special &quot;rule set&quot; named <tt>%%lenient-parse</tt>.
+ * The body of <tt>%%lenient-parse</tt> isn't a set of number-formatting rules, but a <tt>RuleBasedCollator</tt>
+ * description which is used to define equivalences for lenient parsing. For more information
+ * on the syntax, see <tt>RuleBasedCollator</tt>. For more information on lenient parsing,
+ * see <tt>setLenientParse()</tt>. <em>Note:</em> symbols that have syntactic meaning
+ * in collation rules, such as '&amp;', have no particular meaning when appearing outside
+ * of the <tt>lenient-parse</tt> rule set.</p>
+ *
+ * <p>The body of a rule set consists of an ordered, semicolon-delimited list of <em>rules.</em>
+ * Internally, every rule has a base value, a divisor, rule text, and zero, one, or two <em>substitutions.</em>
+ * These parameters are controlled by the description syntax, which consists of a <em>rule
+ * descriptor,</em> a colon, and a <em>rule body.</em></p>
+ *
+ * <p>A rule descriptor can take one of the following forms (text in <em>italics</em> is the
+ * name of a token):</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. <em>bv</em> is a decimal
+ *     number expressed using ASCII digits. <em>bv</em> may contain spaces, period, and commas,
+ *     which are irgnored. The rule's divisor is the highest power of 10 less than or equal to
+ *     the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. The rule's divisor is the
+ *     highest power of <em>rad</em> less than or equal to the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be 10, and the exponent be the highest exponent of the radix that yields a
+ *     result less than or equal to the base value. Every &gt; character after the base value
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be <em>rad</em>, and the exponent be the highest exponent of the radix that
+ *     yields a result less than or equal to the base value. Every &gt; character after the radix
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">-x:</td>
+ *     <td valign="top">The rule is a negative-number rule.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.x:</td>
+ *     <td valign="top">The rule is an <em>improper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">0.x:</td>
+ *     <td valign="top">The rule is a <em>proper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.0:</td>
+ *     <td valign="top">The rule is a <em>master rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>nothing</em></td>
+ *     <td valign="top">If the rule's rule descriptor is left out, the base value is one plus the
+ *     preceding rule's base value (or zero if this is the first rule in the list) in a normal
+ *     rule set.&nbsp; In a fraction rule set, the base value is the same as the preceding rule's
+ *     base value.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>A rule set may be either a regular rule set or a <em>fraction rule set,</em> depending
+ * on whether it is used to format a number's integral part (or the whole number) or a
+ * number's fractional part. Using a rule set to format a rule's fractional part makes it a
+ * fraction rule set.</p>
+ *
+ * <p>Which rule is used to format a number is defined according to one of the following
+ * algorithms: If the rule set is a regular rule set, do the following:
+ *
+ * <ul>
+ *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
+ *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the master rule is ignored.)</li>
+ *   <li>If the number is negative, use the negative-number rule.</li>
+ *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
+ *     rule.</li>
+ *   <li>If the number has a fractional part and is between 0 and 1, use the proper fraction
+ *     rule.</li>
+ *   <li>Binary-search the rule list for the rule with the highest base value less than or equal
+ *     to the number. If that rule has two substitutions, its base value is not an even multiple
+ *     of its divisor, and the number <em>is</em> an even multiple of the rule's divisor, use the
+ *     rule that precedes it in the rule list. Otherwise, use the rule itself.</li>
+ * </ul>
+ *
+ * <p>If the rule set is a fraction rule set, do the following:
+ *
+ * <ul>
+ *   <li>Ignore negative-number and fraction rules.</li>
+ *   <li>For each rule in the list, multiply the number being formatted (which will always be
+ *     between 0 and 1) by the rule's base value. Keep track of the distance between the result
+ *     the nearest integer.</li>
+ *   <li>Use the rule that produced the result closest to zero in the above calculation. In the
+ *     event of a tie or a direct hit, use the first matching rule encountered. (The idea here is
+ *     to try each rule's base value as a possible denominator of a fraction. Whichever
+ *     denominator produces the fraction closest in value to the number being formatted wins.) If
+ *     the rule following the matching rule has the same base value, use it if the numerator of
+ *     the fraction is anything other than 1; if the numerator is 1, use the original matching
+ *     rule. (This is to allow singular and plural forms of the rule text without a lot of extra
+ *     hassle.)</li>
+ * </ul>
+ *
+ * <p>A rule's body consists of a string of characters terminated by a semicolon. The rule
+ * may include zero, one, or two <em>substitution tokens,</em> and a range of text in
+ * brackets. The brackets denote optional text (and may also include one or both
+ * substitutions). The exact meanings of the substitution tokens, and under what conditions
+ * optional text is omitted, depend on the syntax of the substitution token and the context.
+ * The rest of the text in a rule body is literal text that is output when the rule matches
+ * the number being formatted.</p>
+ *
+ * <p>A substitution token begins and ends with a <em>token character.</em> The token
+ * character and the context together specify a mathematical operation to be performed on the
+ * number being formatted. An optional <em>substitution descriptor </em>specifies how the
+ * value resulting from that operation is used to fill in the substitution. The position of
+ * the substitution token in the rule body specifies the location of the resultant text in
+ * the original rule text.</p>
+ *
+ * <p>The meanings of the substitution token characters are as follows:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Find the absolute value of the number and format the result</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's fractional part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder,
+ *       but bypass the normal rule-selection process and just use the
+ *       rule that precedes this one in this rule list.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in all other rules</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&lt;&lt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the quotient</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's integral part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Multiply the number by the rule's base value and format the result.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">==</td>
+ *     <td width="165" valign="top">in all rule sets</td>
+ *     <td>Format the number unchanged</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">[]</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Omit the optional text if the number is an even multiple of the rule's divisor</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in improper-fraction rule</td>
+ *     <td>Omit the optional text if the number is between 0 and 1 (same as specifying both an
+ *     x.x rule and a 0.x rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in master rule</td>
+ *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
+ *     rule and an x.0 rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in proper-fraction rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Omit the optional text if multiplying the number by the rule's base value yields 1.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The substitution descriptor (i.e., the text between the token characters) may take one
+ * of three forms:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a rule set name</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the
+ *     named rule set.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a DecimalFormat pattern</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using a
+ *     DecimalFormat with the specified pattern.&nbsp; The pattern must begin with 0 or #.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">nothing</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the rule
+ *     set containing the current rule, except:<ul>
+ *       <li>You can't have an empty substitution descriptor with a == substitution.</li>
+ *       <li>If you omit the substitution descriptor in a &gt;&gt; substitution in a fraction rule,
+ *         format the result one digit at a time using the rule set containing the current rule.</li>
+ *       <li>If you omit the substitution descriptor in a &lt;&lt; substitution in a rule in a
+ *         fraction rule set, format the result using the default rule set for this formatter.</li>
+ *     </ul>
+ *     </td>
+ *   </tr>
+ * </table>
+ *
+ * <p>Whitespace is ignored between a rule set name and a rule set body, between a rule
+ * descriptor and a rule body, or between rules. If a rule body begins with an apostrophe,
+ * the apostrophe is ignored, but all text after it becomes significant (this is how you can
+ * have a rule's rule text begin with whitespace). There is no escape function: the semicolon
+ * is not allowed in rule set names or in rule text, and the colon is not allowed in rule set
+ * names. The characters beginning a substitution token are always treated as the beginning
+ * of a substitution token.</p>
+ *
+ * <p>See the resource data and the demo program for annotated examples of real rule sets
+ * using these features.</p>
+ *
+ * @author Richard Gillam
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @stable ICU 2.0
+ */
+public class RuleBasedNumberFormat extends NumberFormat {
+
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -7664252765575395068L;
+    
+    /**
+     * Selector code that tells the constructor to create a spellout formatter
+     * @stable ICU 2.0
+     */
+    public static final int SPELLOUT = 1;
+
+    /**
+     * Selector code that tells the constructor to create an ordinal formatter
+     * @stable ICU 2.0
+     */
+    public static final int ORDINAL = 2;
+
+    /**
+     * Selector code that tells the constructor to create a duration formatter
+     * @stable ICU 2.0
+     */
+    public static final int DURATION = 3;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The formatter's rule sets.
+     */
+    private transient NFRuleSet[] ruleSets = null;
+
+    /**
+     * A pointer to the formatter's default rule set.  This is always included
+     * in ruleSets.
+     */
+    private transient NFRuleSet defaultRuleSet = null;
+
+    /**
+     * The formatter's locale.  This is used to create DecimalFormatSymbols and
+     * Collator objects.
+     * @serial
+     */
+    private ULocale locale = null;
+
+    /**
+     * Collator to be used in lenient parsing.  This variable is lazy-evaluated:
+     * the collator is actually created the first time the client does a parse
+     * with lenient-parse mode turned on.
+     */
+    private transient Collator collator = null;
+
+    /**
+     * The DecimalFormatSymbols object that any DecimalFormat objects this
+     * formatter uses should use.  This variable is lazy-evaluated: it isn't
+     * filled in if the rule set never uses a DecimalFormat pattern.
+     */
+    private transient DecimalFormatSymbols decimalFormatSymbols = null;
+
+    /**
+     * Flag specifying whether lenient parse mode is on or off.  Off by default.
+     * @serial
+     */
+    private boolean lenientParse = false;
+
+    /**
+     * If the description specifies lenient-parse rules, they're stored here until
+     * the collator is created.
+     */
+    private transient String lenientParseRules;
+
+    /**
+     * If the description specifies post-process rules, they're stored here until
+     * post-processing is required.
+     */
+    private transient String postProcessRules;
+
+    /**
+     * Post processor lazily constructed from the postProcessRules.
+     */
+    private transient RBNFPostProcessor postProcessor;
+
+    /**
+     * Localizations for rule set names.
+     * @serial
+     */
+    private Map ruleSetDisplayNames;
+
+    /**
+     * The public rule set names;
+     * @serial
+     */
+    private String[] publicRuleSetNames;
+    
+    private static final boolean DEBUG  =  ICUDebug.enabled("rbnf");
+
+    //-----------------------------------------------------------------------
+    // constructors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(String description) {
+        locale = ULocale.getDefault();
+        init(description, null);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * <p>
+     * The localizations data provides information about the public
+     * rule sets and their localized display names for different
+     * locales. The first element in the list is an array of the names
+     * of the public rule sets.  The first element in this array is
+     * the initial default ruleset.  The remaining elements in the
+     * list are arrays of localizations of the names of the public
+     * rule sets.  Each of these is one longer than the initial array,
+     * with the first String being the ULocale ID, and the remaining
+     * Strings being the localizations of the rule set names, in the
+     * same order as the initial array.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param localizations a list of localizations for the rule set
+     * names in the description.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, String[][] localizations) {
+        locale = ULocale.getDefault();
+        init(description, localizations);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(String description, Locale locale) {
+        this(description, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, ULocale locale) {
+        this.locale = locale;
+        init(description, null);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * <p>
+     * The localizations data provides information about the public
+     * rule sets and their localized display names for different
+     * locales. The first element in the list is an array of the names
+     * of the public rule sets.  The first element in this array is
+     * the initial default ruleset.  The remaining elements in the
+     * list are arrays of localizations of the names of the public
+     * rule sets.  Each of these is one longer than the initial array,
+     * with the first String being the ULocale ID, and the remaining
+     * Strings being the localizations of the rule set names, in the
+     * same order as the initial array.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param localizations a list of localizations for the rule set names in the description.
+     * @param locale A ulocale that governs which characters are used for
+     * formatting values in numerals, and determines which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, String[][] localizations, ULocale locale) {
+        this.locale = locale;
+        init(description, localizations);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(Locale locale, int format) {
+        this(ULocale.forLocale(locale), format);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(ULocale locale, int format) {
+        this.locale = locale;
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_RBNF_BASE_NAME, locale);
+
+        // TODO: determine correct actual/valid locale.  Note ambiguity
+        // here -- do actual/valid refer to pattern, DecimalFormatSymbols,
+        // or Collator?
+        ULocale uloc = bundle.getULocale();
+        setLocale(uloc, uloc);
+
+        String description = "";
+        String[][] localizations = null;
+
+        try {
+            description = bundle.getString(rulenames[format-1]);
+            UResourceBundle locb = bundle.get(locnames[format-1]);
+            localizations = new String[locb.getSize()][];
+            for (int i = 0; i < localizations.length; ++i) {
+                localizations[i] = locb.get(i).getStringArray();
+            }
+        }
+        catch (MissingResourceException e) {
+            // might have description and no localizations, or no description...
+        }
+
+        init(description, localizations);
+    }
+
+    private static final String[] rulenames = {
+        "SpelloutRules", "OrdinalRules", "DurationRules",
+    };
+    private static final String[] locnames = {
+        "SpelloutLocalizations", "OrdinalLocalizations", "DurationLocalizations",
+    };
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  Uses the
+     * default locale.
+     * @param format A selector code specifying which kind of formatter to create.
+     * There are three legal values: SPELLOUT, which creates a formatter that spells
+     * out a value in words in the default locale's langyage, ORDINAL, which attaches
+     * an ordinal suffix from the default locale's language to a numeral, and
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(int format) {
+        this(ULocale.getDefault(), format);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Duplicates this formatter.
+     * @return A RuleBasedNumberFormat that is equal to this one.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Tests two RuleBasedNumberFormats for equality.
+     * @param that The formatter to compare against this one.
+     * @return true if the two formatters have identical behavior.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object that) {
+        // if the other object isn't a RuleBasedNumberFormat, that's
+        // all we need to know
+        if (!(that instanceof RuleBasedNumberFormat)) {
+            return false;
+        } else {
+            // cast the other object's pointer to a pointer to a
+            // RuleBasedNumberFormat
+            RuleBasedNumberFormat that2 = (RuleBasedNumberFormat)that;
+
+            // compare their locales and lenient-parse modes
+            if (!locale.equals(that2.locale) || lenientParse != that2.lenientParse) {
+                return false;
+            }
+
+            // if that succeeds, then compare their rule set lists
+            if (ruleSets.length != that2.ruleSets.length) {
+                return false;
+            }
+            for (int i = 0; i < ruleSets.length; i++) {
+                if (!ruleSets[i].equals(that2.ruleSets[i])) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+    }
+
+    /**
+     * Generates a textual description of this formatter.
+     * @return a String containing a rule set that will produce a RuleBasedNumberFormat
+     * with identical behavior to this one.  This won't necessarily be identical
+     * to the rule set description that was originally passed in, but will produce
+     * the same result.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+
+        // accumulate the descriptions of all the rule sets in a
+        // StringBuffer, then cast it to a String and return it
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < ruleSets.length; i++) {
+            result.append(ruleSets[i].toString());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Writes this object to a stream.
+     * @param out The stream to write to.
+     */
+    private void writeObject(java.io.ObjectOutputStream out)
+        throws java.io.IOException {
+        // we just write the textual description to the stream, so we
+        // have an implementation-independent streaming format
+        out.writeUTF(this.toString());
+        out.writeObject(this.locale);
+    }
+
+    /**
+     * Reads this object in from a stream.
+     * @param in The stream to read from.
+     */
+    private void readObject(java.io.ObjectInputStream in)
+        throws java.io.IOException {
+
+        // read the description in from the stream
+        String description = in.readUTF();
+        ULocale loc;
+        
+        try {
+            loc = (ULocale) in.readObject();
+        } catch (Exception e) {
+            loc = ULocale.getDefault();
+        }
+
+        // build a brand-new RuleBasedNumberFormat from the description,
+        // then steal its substructure.  This object's substructure and
+        // the temporary RuleBasedNumberFormat drop on the floor and
+        // get swept up by the garbage collector
+        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(description, loc);
+        ruleSets = temp.ruleSets;
+        defaultRuleSet = temp.defaultRuleSet;
+        publicRuleSetNames = temp.publicRuleSetNames;
+        decimalFormatSymbols = temp.decimalFormatSymbols;
+        locale = temp.locale;
+    }
+
+
+    //-----------------------------------------------------------------------
+    // public API functions
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a list of the names of all of this formatter's public rule sets.
+     * @return A list of the names of all of this formatter's public rule sets.
+     * @stable ICU 2.0
+     */
+    public String[] getRuleSetNames() {
+        return (String[])publicRuleSetNames.clone();
+    }
+
+    /**
+     * Return a list of locales for which there are locale-specific display names
+     * for the rule sets in this formatter.  If there are no localized display names, return null.
+     * @return an array of the ulocales for which there is rule set display name information
+     * @stable ICU 3.2
+     */
+    public ULocale[] getRuleSetDisplayNameLocales() {
+        if (ruleSetDisplayNames != null) {
+            Set s = ruleSetDisplayNames.keySet();
+            String[] locales = (String[])s.toArray(new String[s.size()]);
+            Arrays.sort(locales, String.CASE_INSENSITIVE_ORDER);
+            ULocale[] result = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                result[i] = new ULocale(locales[i]);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    private String[] getNameListForLocale(ULocale loc) {
+        if (loc != null && ruleSetDisplayNames != null) {
+            String[] localeNames = { loc.getBaseName(), ULocale.getDefault().getBaseName() };
+            for (int i = 0; i < localeNames.length; ++i) {
+                String lname = localeNames[i];
+                while (lname.length() > 0) {
+                    String[] names = (String[])ruleSetDisplayNames.get(lname);
+                    if (names != null) {
+                        return names;
+                    }
+                    lname = ULocale.getFallback(lname);
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the rule set display names for the provided locale.  These are in the same order
+     * as those returned by getRuleSetNames.  The locale is matched against the locales for
+     * which there is display name data, using normal fallback rules.  If no locale matches,
+     * the default display names are returned.  (These are the internal rule set names minus
+     * the leading '%'.)
+     * @return an array of the locales that have display name information
+     * @see #getRuleSetNames
+     * @stable ICU 3.2
+     */
+    public String[] getRuleSetDisplayNames(ULocale loc) {
+        String[] names = getNameListForLocale(loc);
+        if (names != null) {
+            return (String[])names.clone();
+        }
+        names = getRuleSetNames();
+        for (int i = 0; i < names.length; ++i) {
+            names[i] = names[i].substring(1);
+        }
+        return names;
+    }
+
+    /**
+     * Return the rule set display names for the current default locale.
+     * @return an array of the display names
+     * @see #getRuleSetDisplayNames(ULocale)
+     * @stable ICU 3.2
+     */
+    public String[] getRuleSetDisplayNames() {
+        return getRuleSetDisplayNames(ULocale.getDefault());
+    }
+
+    /**
+     * Return the rule set display name for the provided rule set and locale.
+     * The locale is matched against the locales for which there is display name data, using
+     * normal fallback rules.  If no locale matches, the default display name is returned.
+     * @return the display name for the rule set
+     * @see #getRuleSetDisplayNames
+     * @throws IllegalArgumentException if ruleSetName is not a valid rule set name for this format
+     * @stable ICU 3.2
+     */
+    public String getRuleSetDisplayName(String ruleSetName, ULocale loc) {
+        String[] rsnames = publicRuleSetNames;
+        for (int ix = 0; ix < rsnames.length; ++ix) {
+            if (rsnames[ix].equals(ruleSetName)) {
+                String[] names = getNameListForLocale(loc);
+                if (names != null) {
+                    return names[ix];
+                }
+                return rsnames[ix].substring(1);
+            }
+        }
+        throw new IllegalArgumentException("unrecognized rule set name: " + ruleSetName);
+    }
+
+    /**
+     * Return the rule set display name for the provided rule set in the current default locale.
+     * @return the display name for the rule set
+     * @see #getRuleSetDisplayName(String,ULocale)
+     * @stable ICU 3.2
+     */
+    public String getRuleSetDisplayName(String ruleSetName) {
+        return getRuleSetDisplayName(ruleSetName, ULocale.getDefault());
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     * @stable ICU 2.0
+     */
+    public String format(double number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     * @stable ICU 2.0
+     */
+    public String format(long number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(long number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(java.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+//#endif
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        // TEMPORARY:
+        return format(number.doubleValue(), toAppendTo, pos);
+    }
+
+    /**
+     * Parses the specfied string, beginning at the specified position, according
+     * to this formatter's rules.  This will match the string against all of the
+     * formatter's public rule sets and return the value corresponding to the longest
+     * parseable substring.  This function's behavior is affected by the lenient
+     * parse mode.
+     * @param text The string to parse
+     * @param parsePosition On entry, contains the position of the first character
+     * in "text" to examine.  On exit, has been updated to contain the position
+     * of the first character in "text" that wasn't consumed by the parse.
+     * @return The number that corresponds to the parsed text.  This will be an
+     * instance of either Long or Double, depending on whether the result has a
+     * fractional part.
+     * @see #setLenientParseMode
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+
+        // parsePosition tells us where to start parsing.  We copy the
+        // text in the string from here to the end inro a new string,
+        // and create a new ParsePosition and result variable to use
+        // for the duration of the parse operation
+        String workingText = text.substring(parsePosition.getIndex());
+        ParsePosition workingPos = new ParsePosition(0);
+        Number tempResult = null;
+
+        // keep track of the largest number of characters consumed in
+        // the various trials, and the result that corresponds to it
+        Number result = new Long(0);
+        ParsePosition highWaterMark = new ParsePosition(workingPos.getIndex());
+
+        // iterate over the public rule sets (beginning with the default one)
+        // and try parsing the text with each of them.  Keep track of which
+        // one consumes the most characters: that's the one that determines
+        // the result we return
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            // skip private rule sets
+            if (ruleSets[i].getName().startsWith("%%")) {
+                continue;
+            }
+
+            // try parsing the string with the rule set.  If it gets past the
+            // high-water mark, update the high-water mark and the result
+            tempResult = ruleSets[i].parse(workingText, workingPos, Double.MAX_VALUE);
+            if (workingPos.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(workingPos.getIndex());
+            }
+            // commented out because this API on ParsePosition doesn't exist in 1.1.x
+            //            if (workingPos.getErrorIndex() > highWaterMark.getErrorIndex()) {
+            //                highWaterMark.setErrorIndex(workingPos.getErrorIndex());
+            //            }
+
+            // if we manage to use up all the characters in the string,
+            // we don't have to try any more rule sets
+            if (highWaterMark.getIndex() == workingText.length()) {
+                break;
+            }
+
+            // otherwise, reset our internal parse position to the
+            // beginning and try again with the next rule set
+            workingPos.setIndex(0);
+        }
+
+        // add the high water mark to our original parse position and
+        // return the result
+        parsePosition.setIndex(parsePosition.getIndex() + highWaterMark.getIndex());
+        // commented out because this API on ParsePosition doesn't exist in 1.1.x
+        //        if (highWaterMark.getIndex() == 0) {
+        //            parsePosition.setErrorIndex(parsePosition.getIndex() + highWaterMark.getErrorIndex());
+        //        }
+        return result;
+    }
+
+    /**
+     * Turns lenient parse mode on and off.
+     *
+     * When in lenient parse mode, the formatter uses a Collator for parsing the text.
+     * Only primary differences are treated as significant.  This means that case
+     * differences, accent differences, alternate spellings of the same letter
+     * (e.g., ae and a-umlaut in German), ignorable characters, etc. are ignored in
+     * matching the text.  In many cases, numerals will be accepted in place of words
+     * or phrases as well.
+     *
+     * For example, all of the following will correctly parse as 255 in English in
+     * lenient-parse mode:
+     * <br>"two hundred fifty-five"
+     * <br>"two hundred fifty five"
+     * <br>"TWO HUNDRED FIFTY-FIVE"
+     * <br>"twohundredfiftyfive"
+     * <br>"2 hundred fifty-5"
+     *
+     * The Collator used is determined by the locale that was
+     * passed to this object on construction.  The description passed to this object
+     * on construction may supply additional collation rules that are appended to the
+     * end of the default collator for the locale, enabling additional equivalences
+     * (such as adding more ignorable characters or permitting spelled-out version of
+     * symbols; see the demo program for examples).
+     *
+     * It's important to emphasize that even strict parsing is relatively lenient: it
+     * will accept some text that it won't produce as output.  In English, for example,
+     * it will correctly parse "two hundred zero" and "fifteen hundred".
+     *
+     * @param enabled If true, turns lenient-parse mode on; if false, turns it off.
+     * @see RuleBasedCollator
+     * @stable ICU 2.0
+     */
+    public void setLenientParseMode(boolean enabled) {
+        lenientParse = enabled;
+
+        // if we're leaving lenient-parse mode, throw away the collator
+        // we've been using
+        if (!enabled) {
+            collator = null;
+        }
+    }
+
+    /**
+     * Returns true if lenient-parse mode is turned on.  Lenient parsing is off
+     * by default.
+     * @return true if lenient-parse mode is turned on.
+     * @see #setLenientParseMode
+     * @stable ICU 2.0
+     */
+    public boolean lenientParseEnabled() {
+        return lenientParse;
+    }
+
+    /**
+     * Override the default rule set to use.  If ruleSetName is null, reset
+     * to the initial default rule set.
+     * @param ruleSetName the name of the rule set, or null to reset the initial default.
+     * @throws IllegalArgumentException if ruleSetName is not the name of a public ruleset.
+     * @stable ICU 2.0
+     */
+    public void setDefaultRuleSet(String ruleSetName) {
+        if (ruleSetName == null) {
+            if (publicRuleSetNames.length > 0) {
+                defaultRuleSet = findRuleSet(publicRuleSetNames[0]);
+            } else {
+            defaultRuleSet = null;
+            int n = ruleSets.length;
+        while (--n >= 0) {
+          if (ruleSets[n].isPublic()) {
+            defaultRuleSet = ruleSets[n];
+            break;
+          }
+        }
+            }
+        } else if (ruleSetName.startsWith("%%")) {
+            throw new IllegalArgumentException("cannot use private rule set: " + ruleSetName);
+        } else {
+            defaultRuleSet = findRuleSet(ruleSetName);
+        }
+    }
+
+    /**
+     * Return the name of the current default rule set.
+     * @return the name of the current default rule set, if it is public, else the empty string.
+     * @stable ICU 3.0
+     */
+    public String getDefaultRuleSetName() {
+        if (defaultRuleSet != null && defaultRuleSet.isPublic()) {
+            return defaultRuleSet.getName();
+        }
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // package-internal API
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a reference to the formatter's default rule set.  The default
+     * rule set is the last public rule set in the description, or the one
+     * most recently set by setDefaultRuleSet.
+     * @return The formatter's default rule set.
+     */
+    NFRuleSet getDefaultRuleSet() {
+        return defaultRuleSet;
+    }
+
+    /**
+     * Returns the collator to use for lenient parsing.  The collator is lazily created:
+     * this function creates it the first time it's called.
+     * @return The collator to use for lenient parsing, or null if lenient parsing
+     * is turned off.
+     */
+    Collator getCollator() {
+        // lazy-evaulate the collator
+        if (collator == null && lenientParse) {
+            try {
+                // create a default collator based on the formatter's locale,
+                // then pull out that collator's rules, append any additional
+                // rules specified in the description, and create a _new_
+                // collator based on the combinaiton of those rules
+                RuleBasedCollator temp = (RuleBasedCollator)Collator.getInstance(locale);
+                String rules = temp.getRules() + lenientParseRules;
+
+                collator = new RuleBasedCollator(rules);
+                collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            }
+            catch (Exception e) {
+                // If we get here, it means we have a malformed set of
+                // collation rules, which hopefully won't happen
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                collator = null;
+            }
+        }
+
+        // if lenient-parse mode is off, this will be null
+        // (see setLenientParseMode())
+        return collator;
+    }
+
+    /**
+     * Returns the DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.  This object is lazily created: this function
+     * creates it the first time it's called.
+     * @return The DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.
+     */
+    DecimalFormatSymbols getDecimalFormatSymbols() {
+        // lazy-evaluate the DecimalFormatSymbols object.  This object
+        // is shared by all DecimalFormat instances belonging to this
+        // formatter
+        if (decimalFormatSymbols == null) {
+            decimalFormatSymbols = new DecimalFormatSymbols(locale);
+        }
+        return decimalFormatSymbols;
+    }
+
+    //-----------------------------------------------------------------------
+    // construction implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * This extracts the special information from the rule sets before the
+     * main parsing starts.  Extra whitespace must have already been removed
+     * from the description.  If found, the special information is removed from the
+     * description and returned, otherwise the description is unchanged and null
+     * is returned.  Note: the trailing semicolon at the end of the special
+     * rules is stripped.
+     * @param description the rbnf description with extra whitespace removed
+     * @param specialName the name of the special rule text to extract
+     * @return the special rule text, or null if the rule was not found
+     */
+    private String extractSpecial(StringBuffer description, String specialName) {
+        String result = null;
+        int lp = Utility.indexOf(description, specialName);
+        if (lp != -1) {
+            // we've got to make sure we're not in the middle of a rule
+            // (where specialName would actually get treated as
+            // rule text)
+            if (lp == 0 || description.charAt(lp - 1) == ';') {
+                // locate the beginning and end of the actual special
+                // rules (there may be whitespace between the name and
+                // the first token in the description)
+                int lpEnd = Utility.indexOf(description, ";%", lp);
+
+                if (lpEnd == -1) {
+                    lpEnd = description.length() - 1; // later we add 1 back to get the '%'
+                }
+                int lpStart = lp + specialName.length();
+                while (lpStart < lpEnd &&
+                       UCharacterProperty.isRuleWhiteSpace(description.charAt(lpStart))) {
+                    ++lpStart;
+                }
+
+                // copy out the special rules
+                result = description.substring(lpStart, lpEnd);
+
+                // remove the special rule from the description
+                description.delete(lp, lpEnd+1); // delete the semicolon but not the '%'
+            }
+        }
+        return result;
+    }
+
+    /**
+     * This function parses the description and uses it to build all of
+     * internal data structures that the formatter uses to do formatting
+     * @param description The description of the formatter's desired behavior.
+     * This is either passed in by the caller or loaded out of a resource
+     * by one of the constructors, and is in the description format specified
+     * in the class docs.
+     */
+    private void init(String description, String[][] localizations) {
+        initLocalizations(localizations);
+
+        // start by stripping the trailing whitespace from all the rules
+        // (this is all the whitespace follwing each semicolon in the
+        // description).  This allows us to look for rule-set boundaries
+        // by searching for ";%" without having to worry about whitespace
+        // between the ; and the %
+        StringBuffer descBuf = stripWhitespace(description);
+
+        // check to see if there's a set of lenient-parse rules.  If there
+        // is, pull them out into our temporary holding place for them,
+        // and delete them from the description before the real desciption-
+        // parsing code sees them
+
+        lenientParseRules = extractSpecial(descBuf, "%%lenient-parse:");
+        postProcessRules = extractSpecial(descBuf, "%%post-process:");
+
+        // pre-flight parsing the description and count the number of
+        // rule sets (";%" marks the end of one rule set and the beginning
+        // of the next)
+        int numRuleSets = 0;
+        for (int p = Utility.indexOf(descBuf, ";%"); p != -1; p = Utility.indexOf(descBuf, ";%", p)) {
+            ++numRuleSets;
+            ++p;
+        }
+        ++numRuleSets;
+
+        // our rule list is an array of the apprpriate size
+        ruleSets = new NFRuleSet[numRuleSets];
+
+        // divide up the descriptions into individual rule-set descriptions
+        // and store them in a temporary array.  At each step, we also
+        // new up a rule set, but all this does is initialize its name
+        // and remove it from its description.  We can't actually parse
+        // the rest of the descriptions and finish initializing everything
+        // because we have to know the names and locations of all the rule
+        // sets before we can actually set everything up
+        String[] ruleSetDescriptions = new String[numRuleSets];
+
+        int curRuleSet = 0;
+        int start = 0;
+        for (int p = Utility.indexOf(descBuf, ";%"); p != -1; p = Utility.indexOf(descBuf, ";%", start)) {
+            ruleSetDescriptions[curRuleSet] = descBuf.substring(start, p + 1);
+            ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+            ++curRuleSet;
+            start = p + 1;
+        }
+        ruleSetDescriptions[curRuleSet] = descBuf.substring(start);
+        ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+
+        // now we can take note of the formatter's default rule set, which
+        // is the last public rule set in the description (it's the last
+        // rather than the first so that a user can create a new formatter
+        // from an existing formatter and change its default bevhaior just
+        // by appending more rule sets to the end)
+
+        // {dlf} Initialization of a fraction rule set requires the default rule
+        // set to be known.  For purposes of initialization, this is always the
+        // last public rule set, no matter what the localization data says.
+        defaultRuleSet = ruleSets[ruleSets.length - 1];
+        for (int i = ruleSets.length - 1; i >= 0; --i) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                defaultRuleSet = ruleSets[i];
+                break;
+            }
+        }
+
+        // finally, we can go back through the temporary descriptions
+        // list and finish seting up the substructure (and we throw
+        // away the temporary descriptions as we go)
+        for (int i = 0; i < ruleSets.length; i++) {
+            ruleSets[i].parseRules(ruleSetDescriptions[i], this);
+            ruleSetDescriptions[i] = null;
+        }
+
+        // Now that the rules are initialized, the 'real' default rule
+        // set can be adjusted by the localization data.
+
+        // count the number of public rule sets
+        // (public rule sets have names that begin with % instead of %%)
+        int publicRuleSetCount = 0;
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                ++publicRuleSetCount;
+            }
+        }
+
+        // prepare an array of the proper size and copy the names into it
+        String[] publicRuleSetTemp = new String[publicRuleSetCount];
+        publicRuleSetCount = 0;
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                publicRuleSetTemp[publicRuleSetCount++] = ruleSets[i].getName();
+            }
+        }
+
+        if (publicRuleSetNames != null) {
+            // confirm the names, if any aren't in the rules, that's an error
+            // it is ok if the rules contain public rule sets that are not in this list
+            loop: for (int i = 0; i < publicRuleSetNames.length; ++i) {
+                String name = publicRuleSetNames[i];
+                for (int j = 0; j < publicRuleSetTemp.length; ++j) {
+                    if (name.equals(publicRuleSetTemp[j])) {
+                        continue loop;
+                    }
+                }
+                throw new IllegalArgumentException("did not find public rule set: " + name);
+            }
+
+            defaultRuleSet = findRuleSet(publicRuleSetNames[0]); // might be different
+        } else {
+            publicRuleSetNames = publicRuleSetTemp;
+        }
+    }
+
+    /**
+     * Take the localizations array and create a Map from the locale strings to
+     * the localization arrays.
+     */
+    private void initLocalizations(String[][] localizations) {
+        if (localizations != null) {
+            publicRuleSetNames = (String[])localizations[0].clone();
+
+            Map m = new HashMap();
+            for (int i = 1; i < localizations.length; ++i) {
+                String[] data = localizations[i];
+                String loc = data[0];
+                String[] names = new String[data.length-1];
+                if (names.length != publicRuleSetNames.length) {
+                    throw new IllegalArgumentException("public name length: " + publicRuleSetNames.length +
+                                                       " != localized names[" + i + "] length: " + names.length);
+                }
+                System.arraycopy(data, 1, names, 0, names.length);
+                m.put(loc, names);
+            }
+
+            if (!m.isEmpty()) {
+                ruleSetDisplayNames = m;
+            }
+        }
+    }
+
+    /**
+     * This function is used by init() to strip whitespace between rules (i.e.,
+     * after semicolons).
+     * @param description The formatter description
+     * @return The description with all the whitespace that follows semicolons
+     * taken out.
+     */
+    private StringBuffer stripWhitespace(String description) {
+        // since we don't have a method that deletes characters (why?!!)
+        // create a new StringBuffer to copy the text into
+        StringBuffer result = new StringBuffer();
+
+        // iterate through the characters...
+        int start = 0;
+        while (start != -1 && start < description.length()) {
+            // seek to the first non-whitespace character...
+            while (start < description.length()
+                   && UCharacterProperty.isRuleWhiteSpace(description.charAt(start))) {
+                ++start;
+            }
+
+            //if the first non-whitespace character is semicolon, skip it and continue
+            if (start < description.length() && description.charAt(start) == ';') {
+                start += 1;
+                continue;
+            }
+
+            // locate the next semicolon in the text and copy the text from
+            // our current position up to that semicolon into the result
+            int p;
+            p = description.indexOf(';', start);
+            if (p == -1) {
+                // or if we don't find a semicolon, just copy the rest of
+                // the string into the result
+                result.append(description.substring(start));
+                start = -1;
+            }
+            else if (p < description.length()) {
+                result.append(description.substring(start, p + 1));
+                start = p + 1;
+            }
+
+            // when we get here, we've seeked off the end of the sring, and
+            // we terminate the loop (we continue until *start* is -1 rather
+            // than until *p* is -1, because otherwise we'd miss the last
+            // rule in the description)
+            else {
+                start = -1;
+            }
+        }
+        return result;
+    }
+
+//    /**
+//     * This function is called ONLY DURING CONSTRUCTION to fill in the
+//     * defaultRuleSet variable once we've set up all the rule sets.
+//     * The default rule set is the last public rule set in the description.
+//     * (It's the last rather than the first so that a caller can append
+//     * text to the end of an existing formatter description to change its
+//     * behavior.)
+//     */
+//    private void initDefaultRuleSet() {
+//        // seek backward from the end of the list until we reach a rule set
+//        // whose name DOESN'T begin with %%.  That's the default rule set
+//        for (int i = ruleSets.length - 1; i >= 0; --i) {
+//            if (!ruleSets[i].getName().startsWith("%%")) {
+//                defaultRuleSet = ruleSets[i];
+//                return;
+//            }
+//        }
+//        defaultRuleSet = ruleSets[ruleSets.length - 1];
+//    }
+
+    //-----------------------------------------------------------------------
+    // formatting implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a double pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    private String format(double number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        postProcess(result, ruleSet);
+        return result.toString();
+    }
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a long pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    private String format(long number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  We have these two identical functions-- one taking a
+        // double and one taking a long-- the couple digits of precision
+        // that long has but double doesn't (both types are 8 bytes long,
+        // but double has to borrow some of the mantissa bits to hold
+        // the exponent).
+        // Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        postProcess(result, ruleSet);
+        return result.toString();
+    }
+
+    /**
+     * Post-process the rules if we have a post-processor.
+     */
+    private void postProcess(StringBuffer result, NFRuleSet ruleSet) {
+        if (postProcessRules != null) {
+            if (postProcessor == null) {
+                int ix = postProcessRules.indexOf(";");
+                if (ix == -1) {
+                    ix = postProcessRules.length();
+                }
+                String ppClassName = postProcessRules.substring(0, ix).trim();
+                try {
+                    Class cls = Class.forName(ppClassName);
+                    postProcessor = (RBNFPostProcessor)cls.newInstance();
+                    postProcessor.init(this, postProcessRules);
+                }
+                catch (Exception e) {
+                    // if debug, print it out
+                    if (DEBUG) System.out.println("could not locate " + ppClassName + ", error " +
+                                       e.getClass().getName() + ", " + e.getMessage());
+                    postProcessor = null;
+                    postProcessRules = null; // don't try again
+                    return;
+                }
+            }
+
+            postProcessor.process(result, ruleSet);
+        }
+    }
+
+    /**
+     * Returns the named rule set.  Throws an IllegalArgumentException
+     * if this formatter doesn't have a rule set with that name.
+     * @param name The name of the desired rule set
+     * @return The rule set with that name
+     */
+    NFRuleSet findRuleSet(String name) throws IllegalArgumentException {
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (ruleSets[i].getName().equals(name)) {
+                return ruleSets[i];
+            }
+        }
+        throw new IllegalArgumentException("No rule set named " + name);
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedTransliterator.java b/src/com/ibm/icu/text/RuleBasedTransliterator.java
new file mode 100644
index 0000000..f04b583
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedTransliterator.java
@@ -0,0 +1,470 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.Hashtable;
+
+
+/**
+ * <code>RuleBasedTransliterator</code> is a transliterator
+ * that reads a set of rules in order to determine how to perform
+ * translations. Rule sets are stored in resource bundles indexed by
+ * name. Rules within a rule set are separated by semicolons (';').
+ * To include a literal semicolon, prefix it with a backslash ('\').
+ * Whitespace, as defined by <code>UCharacterProperty.isRuleWhiteSpace()</code>,
+ * is ignored. If the first non-blank character on a line is '#',
+ * the entire line is ignored as a comment. </p>
+ *
+ * <p>Each set of rules consists of two groups, one forward, and one
+ * reverse. This is a convention that is not enforced; rules for one
+ * direction may be omitted, with the result that translations in
+ * that direction will not modify the source text. In addition,
+ * bidirectional forward-reverse rules may be specified for
+ * symmetrical transformations.</p>
+ *
+ * <p><b>Rule syntax</b> </p>
+ *
+ * <p>Rule statements take one of the following forms: </p>
+ *
+ * <dl>
+ *     <dt><code>$alefmadda=\u0622;</code></dt>
+ *     <dd><strong>Variable definition.</strong> The name on the
+ *         left is assigned the text on the right. In this example,
+ *         after this statement, instances of the left hand name,
+ *         &quot;<code>$alefmadda</code>&quot;, will be replaced by
+ *         the Unicode character U+0622. Variable names must begin
+ *         with a letter and consist only of letters, digits, and
+ *         underscores. Case is significant. Duplicate names cause
+ *         an exception to be thrown, that is, variables cannot be
+ *         redefined. The right hand side may contain well-formed
+ *         text of any length, including no text at all (&quot;<code>$empty=;</code>&quot;).
+ *         The right hand side may contain embedded <code>UnicodeSet</code>
+ *         patterns, for example, &quot;<code>$softvowel=[eiyEIY]</code>&quot;.</dd>
+ *     <dd>&nbsp;</dd>
+ *     <dt><code>ai&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Forward translation rule.</strong> This rule
+ *         states that the string on the left will be changed to the
+ *         string on the right when performing forward
+ *         transliteration.</dd>
+ *     <dt>&nbsp;</dt>
+ *     <dt><code>ai&lt;$alefmadda;</code></dt>
+ *     <dd><strong>Reverse translation rule.</strong> This rule
+ *         states that the string on the right will be changed to
+ *         the string on the left when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <dl>
+ *     <dt><code>ai&lt;&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Bidirectional translation rule.</strong> This
+ *         rule states that the string on the right will be changed
+ *         to the string on the left when performing forward
+ *         transliteration, and vice versa when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <p>Translation rules consist of a <em>match pattern</em> and an <em>output
+ * string</em>. The match pattern consists of literal characters,
+ * optionally preceded by context, and optionally followed by
+ * context. Context characters, like literal pattern characters,
+ * must be matched in the text being transliterated. However, unlike
+ * literal pattern characters, they are not replaced by the output
+ * text. For example, the pattern &quot;<code>abc{def}</code>&quot;
+ * indicates the characters &quot;<code>def</code>&quot; must be
+ * preceded by &quot;<code>abc</code>&quot; for a successful match.
+ * If there is a successful match, &quot;<code>def</code>&quot; will
+ * be replaced, but not &quot;<code>abc</code>&quot;. The final '<code>}</code>'
+ * is optional, so &quot;<code>abc{def</code>&quot; is equivalent to
+ * &quot;<code>abc{def}</code>&quot;. Another example is &quot;<code>{123}456</code>&quot;
+ * (or &quot;<code>123}456</code>&quot;) in which the literal
+ * pattern &quot;<code>123</code>&quot; must be followed by &quot;<code>456</code>&quot;.
+ * </p>
+ *
+ * <p>The output string of a forward or reverse rule consists of
+ * characters to replace the literal pattern characters. If the
+ * output string contains the character '<code>|</code>', this is
+ * taken to indicate the location of the <em>cursor</em> after
+ * replacement. The cursor is the point in the text at which the
+ * next replacement, if any, will be applied. The cursor is usually
+ * placed within the replacement text; however, it can actually be
+ * placed into the precending or following context by using the
+ * special character '<code>@</code>'. Examples:</p>
+ *
+ * <blockquote>
+ *     <p><code>a {foo} z &gt; | @ bar; # foo -&gt; bar, move cursor
+ *     before a<br>
+ *     {foo} xyz &gt; bar @@|; #&nbsp;foo -&gt; bar, cursor between
+ *     y and z</code></p>
+ * </blockquote>
+ *
+ * <p><b>UnicodeSet</b></p>
+ *
+ * <p><code>UnicodeSet</code> patterns may appear anywhere that
+ * makes sense. They may appear in variable definitions.
+ * Contrariwise, <code>UnicodeSet</code> patterns may themselves
+ * contain variable references, such as &quot;<code>$a=[a-z];$not_a=[^$a]</code>&quot;,
+ * or &quot;<code>$range=a-z;$ll=[$range]</code>&quot;.</p>
+ *
+ * <p><code>UnicodeSet</code> patterns may also be embedded directly
+ * into rule strings. Thus, the following two rules are equivalent:</p>
+ *
+ * <blockquote>
+ *     <p><code>$vowel=[aeiou]; $vowel&gt;'*'; # One way to do this<br>
+ *     [aeiou]&gt;'*';
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     Another way</code></p>
+ * </blockquote>
+ *
+ * <p>See {@link UnicodeSet} for more documentation and examples.</p>
+ *
+ * <p><b>Segments</b></p>
+ *
+ * <p>Segments of the input string can be matched and copied to the
+ * output string. This makes certain sets of rules simpler and more
+ * general, and makes reordering possible. For example:</p>
+ *
+ * <blockquote>
+ *     <p><code>([a-z]) &gt; $1 $1;
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     double lowercase letters<br>
+ *     ([:Lu:]) ([:Ll:]) &gt; $2 $1; # reverse order of Lu-Ll pairs</code></p>
+ * </blockquote>
+ *
+ * <p>The segment of the input string to be copied is delimited by
+ * &quot;<code>(</code>&quot; and &quot;<code>)</code>&quot;. Up to
+ * nine segments may be defined. Segments may not overlap. In the
+ * output string, &quot;<code>$1</code>&quot; through &quot;<code>$9</code>&quot;
+ * represent the input string segments, in left-to-right order of
+ * definition.</p>
+ *
+ * <p><b>Anchors</b></p>
+ *
+ * <p>Patterns can be anchored to the beginning or the end of the text. This is done with the
+ * special characters '<code>^</code>' and '<code>$</code>'. For example:</p>
+ *
+ * <blockquote>
+ *   <p><code>^ a&nbsp;&nbsp; &gt; 'BEG_A'; &nbsp;&nbsp;# match 'a' at start of text<br>
+ *   &nbsp; a&nbsp;&nbsp; &gt; 'A';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'a'<br>
+ *   &nbsp; z $ &gt; 'END_Z'; &nbsp;&nbsp;# match 'z' at end of text<br>
+ *   &nbsp; z&nbsp;&nbsp; &gt; 'Z';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'z'</code></p>
+ * </blockquote>
+ *
+ * <p>It is also possible to match the beginning or the end of the text using a <code>UnicodeSet</code>.
+ * This is done by including a virtual anchor character '<code>$</code>' at the end of the
+ * set pattern. Although this is usually the match chafacter for the end anchor, the set will
+ * match either the beginning or the end of the text, depending on its placement. For
+ * example:</p>
+ *
+ * <blockquote>
+ *   <p><code>$x = [a-z$]; &nbsp;&nbsp;# match 'a' through 'z' OR anchor<br>
+ *   $x 1&nbsp;&nbsp;&nbsp; &gt; 2;&nbsp;&nbsp; # match '1' after a-z or at the start<br>
+ *   &nbsp;&nbsp; 3 $x &gt; 4; &nbsp;&nbsp;# match '3' before a-z or at the end</code></p>
+ * </blockquote>
+ *
+ * <p><b>Example</b> </p>
+ *
+ * <p>The following example rules illustrate many of the features of
+ * the rule language. </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top">Rule 1.</td>
+ *         <td valign="top" nowrap><code>abc{def}&gt;x|y</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 2.</td>
+ *         <td valign="top" nowrap><code>xyz&gt;r</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 3.</td>
+ *         <td valign="top" nowrap><code>yz&gt;q</code></td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Applying these rules to the string &quot;<code>adefabcdefz</code>&quot;
+ * yields the following results: </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top" nowrap><code>|adefabcdefz</code></td>
+ *         <td valign="top">Initial state, no rules match. Advance
+ *         cursor.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>a|defabcdefz</code></td>
+ *         <td valign="top">Still no match. Rule 1 does not match
+ *         because the preceding context is not present.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ad|efabcdefz</code></td>
+ *         <td valign="top">Still no match. Keep advancing until
+ *         there is a match...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ade|fabcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adef|abcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefa|bcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefab|cdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabc|defz</code></td>
+ *         <td valign="top">Rule 1 matches; replace &quot;<code>def</code>&quot;
+ *         with &quot;<code>xy</code>&quot; and back up the cursor
+ *         to before the '<code>y</code>'.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcx|yz</code></td>
+ *         <td valign="top">Although &quot;<code>xyz</code>&quot; is
+ *         present, rule 2 does not match because the cursor is
+ *         before the '<code>y</code>', not before the '<code>x</code>'.
+ *         Rule 3 does match. Replace &quot;<code>yz</code>&quot;
+ *         with &quot;<code>q</code>&quot;.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcxq|</code></td>
+ *         <td valign="top">The cursor is at the end;
+ *         transliteration is complete.</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>The order of rules is significant. If multiple rules may match
+ * at some point, the first matching rule is applied. </p>
+ *
+ * <p>Forward and reverse rules may have an empty output string.
+ * Otherwise, an empty left or right hand side of any statement is a
+ * syntax error. </p>
+ *
+ * <p>Single quotes are used to quote any character other than a
+ * digit or letter. To specify a single quote itself, inside or
+ * outside of quotes, use two single quotes in a row. For example,
+ * the rule &quot;<code>'&gt;'&gt;o''clock</code>&quot; changes the
+ * string &quot;<code>&gt;</code>&quot; to the string &quot;<code>o'clock</code>&quot;.
+ * </p>
+ *
+ * <p><b>Notes</b> </p>
+ *
+ * <p>While a RuleBasedTransliterator is being built, it checks that
+ * the rules are added in proper order. For example, if the rule
+ * &quot;a&gt;x&quot; is followed by the rule &quot;ab&gt;y&quot;,
+ * then the second rule will throw an exception. The reason is that
+ * the second rule can never be triggered, since the first rule
+ * always matches anything it matches. In other words, the first
+ * rule <em>masks</em> the second rule. </p>
+ *
+ * <p>Copyright (c) IBM Corporation 1999-2000. All rights reserved.</p>
+ *
+ * @author Alan Liu
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public class RuleBasedTransliterator extends Transliterator {
+
+    private Data data;
+
+    /**
+     * Constructs a new transliterator from the given rules.
+     * @param rules rules, separated by ';'
+     * @param direction either FORWARD or REVERSE.
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    /*public RuleBasedTransliterator(String ID, String rules, int direction,
+                                   UnicodeFilter filter) {
+        super(ID, filter);
+        if (direction != FORWARD && direction != REVERSE) {
+            throw new IllegalArgumentException("Invalid direction");
+        }
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, direction);
+        if (parser.idBlockVector.size() != 0 ||
+            parser.compoundFilter != null) {
+            throw new IllegalArgumentException("::ID blocks illegal in RuleBasedTransliterator constructor");
+        }
+
+        data = (Data)parser.dataVector.get(0);
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }*/
+
+    /**
+     * Constructs a new transliterator from the given rules in the
+     * <code>FORWARD</code> direction.
+     * @param rules rules, separated by ';'
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    /*public RuleBasedTransliterator(String ID, String rules) {
+        this(ID, rules, FORWARD, null);
+    }*/
+
+    RuleBasedTransliterator(String ID, Data data, UnicodeFilter filter) {
+        super(ID, filter);
+        this.data = data;
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected synchronized void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* We keep start and limit fixed the entire time,
+         * relative to the text -- limit may move numerically if text is
+         * inserted or removed.  The cursor moves from start to limit, with
+         * replacements happening under it.
+         *
+         * Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * |eabcd   start - no match, advance cursor
+         * e|abcd   match rule 1 - change text & adjust cursor
+         * ex|ycd   match rule 2 - change text & adjust cursor
+         * exz|d    no match, advance cursor
+         * exzd|    done
+         */
+
+        /* A rule like
+         *   a>b|a
+         * creates an infinite loop. To prevent that, we put an arbitrary
+         * limit on the number of iterations that we take, one that is
+         * high enough that any reasonable rules are ok, but low enough to
+         * prevent a server from hanging.  The limit is 16 times the
+         * number of characters n, unless n is so large that 16n exceeds a
+         * uint32_t.
+         */
+        int loopCount = 0;
+        int loopLimit = (index.limit - index.start) << 4;
+        if (loopLimit < 0) {
+            loopLimit = 0x7FFFFFFF;
+        }
+
+        while (index.start < index.limit &&
+               loopCount <= loopLimit &&
+               data.ruleSet.transliterate(text, index, incremental)) {
+            ++loopCount;
+        }
+    }
+
+
+    static class Data {
+        public Data() {
+            variableNames = new Hashtable();
+            ruleSet = new TransliterationRuleSet();
+        }
+
+        /**
+         * Rule table.  May be empty.
+         */
+        public TransliterationRuleSet ruleSet;
+
+        /**
+         * Map variable name (String) to variable (char[]).  A variable name
+         * corresponds to zero or more characters, stored in a char[] array in
+         * this hash.  One or more of these chars may also correspond to a
+         * UnicodeSet, in which case the character in the char[] in this hash is
+         * a stand-in: it is an index for a secondary lookup in
+         * data.variables.  The stand-in also represents the UnicodeSet in
+         * the stored rules.
+         */
+        Hashtable variableNames;
+
+        /**
+         * Map category variable (Character) to UnicodeMatcher or UnicodeReplacer.
+         * Variables that correspond to a set of characters are mapped
+         * from variable name to a stand-in character in data.variableNames.
+         * The stand-in then serves as a key in this hash to lookup the
+         * actual UnicodeSet object.  In addition, the stand-in is
+         * stored in the rule text to represent the set of characters.
+         * variables[i] represents character (variablesBase + i).
+         */
+        Object[] variables;
+
+        /**
+         * The character that represents variables[0].  Characters
+         * variablesBase through variablesBase +
+         * variables.length - 1 represent UnicodeSet objects.
+         */
+        char variablesBase;
+
+        /**
+         * Return the UnicodeMatcher represented by the given character, or
+         * null if none.
+         */
+        public UnicodeMatcher lookupMatcher(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeMatcher) variables[i] : null;
+        }
+
+        /**
+         * Return the UnicodeReplacer represented by the given character, or
+         * null if none.
+         */
+        public UnicodeReplacer lookupReplacer(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeReplacer) variables[i] : null;
+        }
+    }
+
+
+    /**
+     * Return a representation of this transliterator as source rules.
+     * These rules will produce an equivalent transliterator if used
+     * to construct a new transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return rules string
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String toRules(boolean escapeUnprintable) {
+        return data.ruleSet.toRules(escapeUnprintable);
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return data.ruleSet.getSourceTargetSet(false);
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UnicodeSet getTargetSet() {
+        return data.ruleSet.getSourceTargetSet(true);
+    }
+}
+
+
diff --git a/src/com/ibm/icu/text/SCSU.java b/src/com/ibm/icu/text/SCSU.java
new file mode 100644
index 0000000..b12b926
--- /dev/null
+++ b/src/com/ibm/icu/text/SCSU.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * An interface defining  constants for the Standard Compression Scheme
+ * for Unicode (SCSU) as outlined in <A
+ * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+ * Report #6</A>.
+ *
+ * @author Stephen F. Booth
+ * @version 1.1 05 Aug 99
+ * @version 1.0 26 Jul 99
+ */
+interface SCSU
+{
+    //==========================
+    // Generic window shift
+    //==========================
+    final static int COMPRESSIONOFFSET           = 0x80;
+
+    //==========================
+    // Number of windows
+    //==========================
+    final static int NUMWINDOWS                  = 8;
+    final static int NUMSTATICWINDOWS            = 8;
+
+    //==========================
+    // Indicates a window index is invalid
+    //==========================
+    final static int INVALIDWINDOW               = -1;
+
+    //==========================
+    // Indicates a character doesn't exist in input (past end of buffer)
+    //==========================
+    final static int INVALIDCHAR                 = -1;
+
+    //==========================
+    // Compression modes
+    //==========================
+    final static int SINGLEBYTEMODE              = 0;
+    final static int UNICODEMODE                 = 1;
+
+    //==========================
+    // Maximum value for a window's index
+    //==========================
+    final static int MAXINDEX                    = 0xFF;
+
+    //==========================
+    // Reserved index value (characters belongs to first block)
+    //==========================
+    final static int RESERVEDINDEX               = 0x00;
+
+    //==========================
+    // Indices for scripts which cross a half-block boundary
+    //==========================
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For window offset mapping */
+    final static int [] sOffsetTable = { 
+        // table generated by CompressionTableGenerator
+        0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
+    0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800, 0x880,
+    0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00, 0xc80, 0xd00,
+    0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000, 0x1080, 0x1100,
+    0x1180, 0x1200, 0x1280, 0x1300, 0x1380, 0x1400, 0x1480,
+    0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780, 0x1800,
+    0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80, 0x1b00, 0x1b80,
+    0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00, 0x1e80, 0x1f00,
+    0x1f80, 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280,
+    0x2300, 0x2380, 0x2400, 0x2480, 0x2500, 0x2580, 0x2600,
+    0x2680, 0x2700, 0x2780, 0x2800, 0x2880, 0x2900, 0x2980,
+    0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00, 0x2c80, 0x2d00,
+    0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80, 0x3000, 0x3080,
+    0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3380, 0xe000,
+    0xe080, 0xe100, 0xe180, 0xe200, 0xe280, 0xe300, 0xe380,
+    0xe400, 0xe480, 0xe500, 0xe580, 0xe600, 0xe680, 0xe700,
+    0xe780, 0xe800, 0xe880, 0xe900, 0xe980, 0xea00, 0xea80,
+    0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00, 0xed80, 0xee00,
+    0xee80, 0xef00, 0xef80, 0xf000, 0xf080, 0xf100, 0xf180,
+    0xf200, 0xf280, 0xf300, 0xf380, 0xf400, 0xf480, 0xf500,
+    0xf580, 0xf600, 0xf680, 0xf700, 0xf780, 0xf800, 0xf880,
+    0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00,
+    0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x250, 0x370,
+    0x530, 0x3040, 0x30a0, 0xff60  
+    };
+
+    /** Static compression window offsets */
+    final static int [] sOffsets = {
+        0x0000,  // for quoting single-byte mode tags
+        0x0080,  // Latin-1 Supplement
+        0x0100,  // Latin Extended-A
+        0x0300,  // Combining Diacritical Marks
+        0x2000,  // General Punctuation
+        0x2080,  // Curency Symbols
+        0x2100,  // Letterlike Symbols and Number Forms
+        0x3000   // CJK Symbols and Punctuation
+    };
+
+}
+
diff --git a/src/com/ibm/icu/text/SearchIterator.java b/src/com/ibm/icu/text/SearchIterator.java
new file mode 100644
index 0000000..14de531
--- /dev/null
+++ b/src/com/ibm/icu/text/SearchIterator.java
@@ -0,0 +1,788 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+
+/**
+ * <p>SearchIterator is an abstract base class that defines a protocol
+ * for text searching. Subclasses provide concrete implementations of
+ * various search algorithms.  A concrete subclass, StringSearch, is
+ * provided that implements language-sensitive pattern matching based
+ * on the comparison rules defined in a RuleBasedCollator
+ * object. Instances of SearchIterator maintain a current position and
+ * scan over the target text, returning the indices where a match is
+ * found and the length of each match. Generally, the sequence of forward 
+ * matches will be equivalent to the sequence of backward matches.One
+ * case where this statement may not hold is when non-overlapping mode 
+ * is set on and there are continuous repetitive patterns in the text. 
+ * Consider the case searching for pattern "aba" in the text 
+ * "ababababa", setting overlapping mode off will produce forward matches
+ * at offsets 0, 4. However when a backwards search is done, the
+ * results will be at offsets 6 and 2.</p>
+ * 
+ * <p>If matches searched for have boundary restrictions. BreakIterators 
+ * can be used to define the valid boundaries of such a match. Once a 
+ * BreakIterator is set, potential matches will be tested against the
+ * BreakIterator to determine if the boundaries are valid and that all
+ * characters in the potential match are equivalent to the pattern 
+ * searched for. For example, looking for the pattern "fox" in the text
+ * "foxy fox" will produce match results at offset 0 and 5 with length 3
+ * if no BreakIterators were set. However if a WordBreakIterator is set,
+ * the only match that would be found will be at the offset 5. Since,
+ * the SearchIterator guarantees that if a BreakIterator is set, all its
+ * matches will match the given pattern exactly, a potential match that 
+ * passes the BreakIterator might still not produce a valid match. For 
+ * instance the pattern "e" will not be found in the string 
+ * "&#92;u00e9" (latin small letter e with acute) if a 
+ * CharacterBreakIterator is used. Even though "e" is
+ * a part of the character "&#92;u00e9" and the potential match at
+ * offset 0 length 1 passes the CharacterBreakIterator test, "&#92;u00e9"
+ * is not equivalent to "e", hence the SearchIterator rejects the potential
+ * match. By default, the SearchIterator
+ * does not impose any boundary restriction on the matches, it will 
+ * return all results that match the pattern. Illustrating with the 
+ * above example, "e" will
+ * be found in the string "&#92;u00e9" if no BreakIterator is
+ * specified.</p>
+ * 
+ * <p>SearchIterator also provides a means to handle overlapping
+ * matches via the API setOverlapping(boolean). For example, if
+ * overlapping mode is set, searching for the pattern "abab" in the
+ * text "ababab" will match at positions 0 and 2, whereas if
+ * overlapping is not set, SearchIterator will only match at position
+ * 0. By default, overlapping mode is not set.</p>
+ * 
+ * <p>The APIs in SearchIterator are similar to that of other text
+ * iteration classes such as BreakIterator. Using this class, it is
+ * easy to scan through text looking for all occurances of a
+ * match.</p>
+ * <p>
+ * Example of use:<br>
+ * <pre>
+ * String target = "The quick brown fox jumped over the lazy fox";
+ * String pattern = "fox";
+ * SearchIterator iter = new StringSearch(pattern, target);
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 16 and 41 with length 3
+ *     System.out.println("Found match at " + pos + ", length is " 
+ *                        + iter.getMatchLength());
+ * }
+ * target = "ababababa";
+ * pattern = "aba";
+ * iter.setTarget(new StringCharacterIterator(pattern));
+ * iter.setOverlapping(false);
+ * System.out.println("Overlapping mode set to false");
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 0 and 4 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 6 and 2 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Overlapping mode set to true");
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * iter.setOverlapping(true);
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 2, 4 and 6 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 0 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * </pre>
+ * </p>
+ * @author Laura Werner, synwee
+ * @stable ICU 2.0
+ * @see BreakIterator
+ */
+public abstract class SearchIterator 
+{
+    
+    // public data members -------------------------------------------------
+    
+    /**
+     * DONE is returned by previous() and next() after all valid matches have 
+     * been returned, and by first() and last() if there are no matches at all.
+     * @see #previous
+     * @see #next
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+    
+    // public methods -----------------------------------------------------
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the position in the target text at which the next search will start.
+     * This method clears any previous match.
+     * </p>
+     * @param position position from which to start the next search
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @stable ICU 2.8
+     */
+    public void setIndex(int position) {
+        if (position < targetText.getBeginIndex() 
+            || position > targetText.getEndIndex()) {
+            throw new IndexOutOfBoundsException(
+                "setIndex(int) expected position to be between " +
+                targetText.getBeginIndex() + " and " + targetText.getEndIndex());
+        }
+        m_setOffset_ = position;
+        m_reset_ = false;
+        matchLength = 0;
+    }
+    
+    /**
+     * <p>
+     * Determines whether overlapping matches are returned. See the class 
+     * documentation for more information about overlapping matches.
+     * </p>
+     * <p>
+     * The default setting of this property is false
+     * </p>
+     * @param allowOverlap flag indicator if overlapping matches are allowed
+     * @see #isOverlapping
+     * @stable ICU 2.8
+     */
+    public void setOverlapping(boolean allowOverlap)
+    {
+        m_isOverlap_ = allowOverlap;
+    }
+    
+    /**
+     * Set the BreakIterator that is used to restrict the points at which 
+     * matches are detected.
+     * Using <tt>null</tt> as the parameter is legal; it means that break 
+     * detection should not be attempted.
+     * See class documentation for more information.
+     * @param breakiter A BreakIterator that will be used to restrict the 
+     *                     points at which matches are detected.
+     * @see #getBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    public void setBreakIterator(BreakIterator breakiter) 
+    {
+        breakIterator = breakiter;
+        if (breakIterator != null) {
+            breakIterator.setText(targetText);
+        }
+    }
+    
+    /**
+     * Set the target text to be searched. Text iteration will then begin at 
+      * the start of the text string. This method is useful if you want to 
+     * reuse an iterator to search within a different body of text.
+     * @param text new text iterator to look for match, 
+     * @exception IllegalArgumentException thrown when text is null or has
+     *               0 length
+     * @see #getTarget
+     * @stable ICU 2.4
+     */
+    public void setTarget(CharacterIterator text)
+    {
+        if (text == null || text.getEndIndex() == text.getIndex()) {
+            throw new IllegalArgumentException("Illegal null or empty text");
+        }
+        
+        targetText = text;
+        targetText.setIndex(targetText.getBeginIndex());
+        matchLength = 0;
+        m_reset_ = true;
+        m_isForwardSearching_ = true;
+        if (breakIterator != null) {
+            breakIterator.setText(targetText);
+        }
+    }
+
+    // public getters ----------------------------------------------------
+    
+    /**
+     * <p>
+     * Returns the index of the most recent match in the target text.
+     * This call returns a valid result only after a successful call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
+     * Just after construction, or after a searching method returns 
+     * <tt>DONE</tt>, this method will return <tt>DONE</tt>.
+     * </p>
+     * <p>
+     * Use <tt>getMatchLength</tt> to get the length of the matched text.
+     * <tt>getMatchedText</tt> will return the subtext in the searched 
+     * target text from index getMatchStart() with length getMatchLength(). 
+     * </p>
+     * @return index to a substring within the text string that is being 
+     *         searched.
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    public int getMatchStart()
+    {
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Return the index in the target text at which the iterator is currently
+     * positioned. 
+     * If the iteration has gone past the end of the target text, or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text at which the iterator is currently 
+     *         positioned.
+     * @stable ICU 2.8
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public abstract int getIndex();
+    
+    /**
+     * <p>
+     * Returns the length of the most recent match in the target text. 
+     * This call returns a valid result only after a successful
+     * call to {@link #first}, {@link #next}, {@link #previous}, or 
+     * {@link #last}.
+     * Just after construction, or after a searching method returns
+     * <tt>DONE</tt>, this method will return 0. See getMatchStart() for 
+     * more details.
+     * </p>
+     * @return The length of the most recent match in the target text, or 0 if 
+     *         there is no match.
+     * @see #getMatchStart
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int getMatchLength() 
+    {
+        return matchLength;
+    }
+    
+    /**
+     * Returns the BreakIterator that is used to restrict the indexes at which 
+     * matches are detected. This will be the same object that was passed to 
+     * the constructor or to <code>setBreakIterator</code>.
+     * If the BreakIterator has not been set, <tt>null</tt> will be returned.
+     * See setBreakIterator for more information.
+     * @return the BreakIterator set to restrict logic matches
+     * @see #setBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    public BreakIterator getBreakIterator() 
+    {
+        return breakIterator;
+    }
+    
+    /**
+     * Return the target text that is being searched.
+     * @return target text being searched.
+     * @see #setTarget
+     * @stable ICU 2.0
+     */
+    public CharacterIterator getTarget() 
+    {
+        return targetText;
+    }
+    
+    /**
+     * Returns the text that was matched by the most recent call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}. 
+     * If the iterator is not pointing at a valid match, for instance just 
+     * after construction or after <tt>DONE</tt> has been returned, an empty 
+     * String will be returned. See getMatchStart for more information
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @return the substring in the target text of the most recent match 
+     * @stable ICU 2.0
+     */
+    public String getMatchedText() 
+    {
+        if (matchLength > 0) {
+            int limit = m_lastMatchStart_ + matchLength;
+            StringBuffer result = new StringBuffer(matchLength);
+            result.append(targetText.current());
+            targetText.next();
+            while (targetText.getIndex() < limit) {
+                result.append(targetText.current());
+                targetText.next();
+            }
+            targetText.setIndex(m_lastMatchStart_);
+            return result.toString();
+        }
+        return null;
+    }
+
+    // miscellaneous public methods -----------------------------------------
+        
+    /**
+     * Search <b>forwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+     * adjusted so that its current index, as returned by {@link #getIndex},
+     * is the starting position of the match if one was found. If a match is 
+     * found, the index of the match is returned, otherwise <tt>DONE</tt> is
+     * returned.  If overlapping mode is set, the beginning of the found match
+     * can be before the end of the current match, if any.
+     * @return The starting index of the next forward match after the current 
+     *         iterator position, or 
+     *         <tt>DONE</tt> if there are no more matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #previous
+     * @see #first
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int next()
+    {
+        int start = targetText.getIndex();
+        if (m_setOffset_ != DONE) {
+            start = m_setOffset_;    
+            m_setOffset_ = DONE;    
+        }
+        if (m_isForwardSearching_) {
+            if (!m_reset_ && 
+                start + matchLength >= targetText.getEndIndex()) {
+                // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getEndIndex());
+                m_lastMatchStart_ = DONE;
+                return DONE; 
+            }
+            m_reset_ = false;
+        }
+        else {
+            // switching direction. 
+            // if matchedIndex == USEARCH_DONE, it means that either a 
+            // setIndex has been called or that previous ran off the text
+            // string. the iterator would have been set to offset 0 if a 
+            // match is not found.
+            m_isForwardSearching_ = true;
+            if (start != DONE) {
+                // there's no need to set the collation element iterator
+                // the next call to next will set the offset.
+                return start;
+            }
+        }
+        
+        if (start == DONE) {
+            start = targetText.getBeginIndex();
+        }
+        if (matchLength > 0) {
+            // if match length is 0 we are at the start of the iteration
+            if (m_isOverlap_) {
+                start ++;
+            }
+            else {
+                start += matchLength;
+            }
+        }
+        m_lastMatchStart_ = handleNext(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Search <b>backwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+     * adjusted so that its current index, as returned by {@link #getIndex},
+     * is the starting position of the match if one was found. If a match is 
+     * found, the index is returned, otherwise <tt>DONE</tt> is returned.  If
+     * overlapping mode is set, the end of the found match can be after the
+     * beginning of the previous match, if any.
+     * @return The starting index of the next backwards match after the current 
+     *         iterator position, or 
+     *         <tt>DONE</tt> if there are no more matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #first
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int previous()
+    {
+        int start = targetText.getIndex();
+        if (m_setOffset_ != DONE) {
+            start = m_setOffset_;    
+            m_setOffset_ = DONE;    
+        }
+        if (m_reset_) {
+            m_isForwardSearching_ = false;
+            m_reset_ = false;
+            start = targetText.getEndIndex();
+        }
+        
+        if (m_isForwardSearching_ == true) {
+            // switching direction. 
+            // if matchedIndex == USEARCH_DONE, it means that either a 
+            // setIndex has been called or that next ran off the text
+            // string. the iterator would have been set to offset textLength if 
+            // a match is not found.
+            m_isForwardSearching_ = false;
+            if (start != targetText.getEndIndex()) {
+                return start;
+            }
+        }
+        else {
+            if (start == targetText.getBeginIndex()) {
+                // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getBeginIndex());
+                m_lastMatchStart_ = DONE;
+                return DONE; 
+            }
+        }
+
+        m_lastMatchStart_ = handlePrevious(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Return true if the overlapping property has been set.
+     * See setOverlapping(boolean) for more information.
+     * @see #setOverlapping
+     * @return true if the overlapping property has been set, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isOverlapping() 
+    {
+        return m_isOverlap_;
+    }
+    
+    /** 
+     * <p>
+     * Resets the search iteration. All properties will be reset to their
+     * default values.
+     * </p>
+     * <p>
+     * If a forward iteration is initiated, the next search will begin at the
+     * start of the target text. Otherwise, if a backwards iteration is initiated,
+     * the next search will begin at the end of the target text.
+     * </p>
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        // reset is setting the attributes that are already in string search
+        matchLength = 0;
+        setIndex(targetText.getBeginIndex());
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+    }
+    
+    /**
+     * Return the index of the first <b>forward</b> match in the target text. 
+     * This method sets the iteration to begin at the start of the 
+     * target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     *            if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int first() 
+    {
+        m_isForwardSearching_ = true;
+        setIndex(targetText.getBeginIndex());
+        return next();
+    }
+
+    /**
+     * Return the index of the first <b>forward</b> match in target text that 
+     * is at or after argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the specified
+     * position in the the target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int following(int position) 
+    {
+        m_isForwardSearching_ = true;
+        // position checked in usearch_setOffset
+        setIndex(position);
+        return next();
+    }
+    
+    /**
+     * Return the index of the first <b>backward</b> match in target text. 
+     * This method sets the iteration to begin at the end of the 
+     * target text and searches backwards from there.
+     * @return The starting index of the first backward match, or 
+     *         <code>DONE</code> if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #following
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int last() 
+    {
+        m_isForwardSearching_ = false;
+        setIndex(targetText.getEndIndex());
+        return previous();
+    }
+     
+    /**
+     * Return the index of the first <b>backwards</b> match in target 
+     * text that ends at or before argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the argument
+     * position index of the target text and searches backwards from there.
+     * @return The starting index of the first backwards match, or 
+     *         <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #following
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int preceding(int position) 
+    {
+        m_isForwardSearching_ = false;
+        // position checked in usearch_setOffset
+        setIndex(position);
+        return previous();   
+    }
+    
+    // protected data member ----------------------------------------------
+    
+    /**
+     * The BreakIterator to define the boundaries of a logical match.
+     * This value can be a null.
+     * See class documentation for more information.
+     * @see #setBreakIterator(BreakIterator)
+     * @see #getBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    protected BreakIterator breakIterator; 
+
+    /**
+     * Target text for searching.
+     * @see #setTarget(CharacterIterator)
+     * @see #getTarget
+     * @stable ICU 2.0
+     */
+    protected CharacterIterator targetText;
+    /**
+     * Length of the most current match in target text. 
+     * Value 0 is the default value.
+     * @see #setMatchLength
+     * @see #getMatchLength
+     * @stable ICU 2.0
+     */
+    protected int matchLength;
+    
+    // protected constructor ----------------------------------------------
+    
+    /**
+     * Protected constructor for use by subclasses.
+     * Initializes the iterator with the argument target text for searching 
+     * and sets the BreakIterator.
+     * See class documentation for more details on the use of the target text
+     * and BreakIterator.
+     * @param target The target text to be searched.
+     * @param breaker A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator  
+     * @stable ICU 2.0
+     */
+    protected SearchIterator(CharacterIterator target, BreakIterator breaker)
+    {
+        if (target == null 
+            || (target.getEndIndex() - target.getBeginIndex()) == 0) {
+                throw new IllegalArgumentException(
+                                   "Illegal argument target. " +
+                                   " Argument can not be null or of length 0");
+        }
+        targetText = target;
+        breakIterator = breaker;
+        if (breakIterator != null) {
+            breakIterator.setText(target);
+        }
+        matchLength = 0;
+        m_lastMatchStart_ = DONE;
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+    }    
+    
+    // protected methods --------------------------------------------------
+
+   
+    /**
+     * Sets the length of the most recent match in the target text. 
+     * Subclasses' handleNext() and handlePrevious() methods should call this 
+     * after they find a match in the target text.    
+     * @param length new length to set
+     * @see #handleNext
+     * @see #handlePrevious
+     * @stable ICU 2.0
+     */
+    protected void setMatchLength(int length)
+    {
+        matchLength = length;
+    }
+
+    /**
+     * <p>
+     * Abstract method that subclasses override to provide the mechanism 
+     * for finding the next <b>forwards</b> match in the target text. This 
+     * allows different subclasses to provide different search algorithms.
+     * </p> 
+     * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+     * @param start index in the target text at which the forwards search 
+     *        should begin.
+     * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+     * @see #setMatchLength(int)
+     * @see #handlePrevious(int)
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    protected abstract int handleNext(int start);
+    
+    /**
+     * <p>
+     * Abstract method which subclasses override to provide the mechanism 
+     * for finding the next <b>backwards</b> match in the target text. 
+     * This allows different 
+     * subclasses to provide different search algorithms. 
+     * </p> 
+     * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+     * @param startAt index in the target text at which the backwards search 
+     *        should begin.
+     * @return the starting index of the next backwards match if found, 
+     *         DONE otherwise
+     * @see #setMatchLength(int)
+     * @see #handleNext(int)
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    protected abstract int handlePrevious(int startAt);
+    
+    // private data members ------------------------------------------------
+    
+    /**
+     * Flag indicates if we are doing a forwards search
+     */
+    private boolean m_isForwardSearching_;
+    /**
+     * Flag to indicate if overlapping search is to be done.
+     * E.g. looking for "aa" in "aaa" will yield matches at offset 0 and 1.
+     */
+    private boolean m_isOverlap_;
+    /**
+     * Flag indicates if we are at the start of a string search.
+     * This indicates that we are in forward search and at the start of m_text.
+     */ 
+    private boolean m_reset_;
+    /**
+     * Data member to store user defined position in setIndex().
+     * If setIndex() is not called, this value will be DONE.
+     */ 
+    private int m_setOffset_;
+    /**
+     * Offset of the beginning of the last match
+     */
+    private int m_lastMatchStart_;
+}
diff --git a/src/com/ibm/icu/text/SimpleDateFormat.java b/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..37f2b9a
--- /dev/null
+++ b/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,2906 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.ref.WeakReference;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.Format;
+import java.util.LinkedList;
+//#endif
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.DateNumberFormat;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.ZoneStringFormat.ZoneStringInfo;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y&#x2020;       year                    (Number)            1996
+ * Y*       year (week of year)     (Number)            1997
+ * u*       extended year           (Number)            4601
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        fractional second       (Number)            978
+ * E        day of week             (Text)              Tuesday
+ * e*       day of week (local 1~7) (Text & Number)     Tuesday & 2
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * Z        time zone (RFC 822)     (Number)            -0800
+ * v        time zone (generic)     (Text)              Pacific Time
+ * V        time zone (location)    (Text)              United States (Los Angeles)
+ * g*       Julian day              (Number)            2451334
+ * A*       milliseconds in day     (Number)            69540000
+ * Q*       quarter in year         (Text & Number)     Q1 & 01
+ * c*       stand alone day of week (Text & Number)     Tuesday & 2
+ * L*       stand alone month       (Text & Number)     July & 07
+ * q*       stand alone quarter     (Text & Number)     Q1 & 01
+ * '        escape for text         (Delimiter)         'Date='
+ * ''       single quote            (Literal)           'o''clock'
+ * </pre>
+ * </blockquote>
+ * <tt><b>*</b></tt> These items are not supported by Java's SimpleDateFormat.<br>
+ * <tt><b>&#x2020;</b></tt> ICU interprets a single 'y' differently than Java.</p>
+ * <p>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * (e.g., if "yyyy" produces "1997", "yy" produces "97".)
+ * Unlike other fields, fractional seconds are padded on the right with zero.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->>  1996.07.10 AD at 15:08:56 Pacific Time
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, vvv"                     ->>  0:00 PM, PT
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  01996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link com.ibm.icu.lang.UCharacter#isDigit(int)}, will be parsed into the default
+ * century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern does not have exactly two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * When numeric fields abut one another directly, with no intervening delimiter
+ * characters, they constitute a run of abutting numeric fields.  Such runs are
+ * parsed specially.  For example, the format "HHmmss" parses the input text
+ * "123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to
+ * parse "1234".  In other words, the leftmost field of the run is flexible,
+ * while the others keep a fixed width.  If the parse fails anywhere in the run,
+ * then the leftmost field is shortened by one character, and the entire run is
+ * parsed again. This is repeated until either the parse succeeds or the
+ * leftmost field is one character in length.  If the parse still fails at that
+ * point, the parse of the run fails.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate
+ * format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally.
+ *
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleDateFormat extends DateFormat {
+
+    // the official serial version ID which says cryptically
+    // which version we're compatible with
+    private static final long serialVersionUID = 4774881970558875024L;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.3
+    // - 1 for version from JDK 1.1.4, which includes a new field
+    static final int currentSerialVersion = 1;
+
+    
+    /*
+     * From calendar field to its level.
+     * Used to order calendar field.
+     * For example, calendar fields can be defined in the following order:
+     * year >  month > date > am-pm > hour >  minute
+     * YEAR --> 10, MONTH -->20, DATE --> 30; 
+     * AM_PM -->40, HOUR --> 50, MINUTE -->60
+     */
+    private static final int[] CALENDAR_FIELD_TO_LEVEL =
+    {
+        /*GyM*/ 0, 10, 20,
+        /*wW*/ 20, 30,
+        /*dDEF*/ 30, 20, 30, 30,
+        /*ahHm*/ 40, 50, 50, 60,
+        /*sS..*/ 70, 80, 
+        /*z?Y*/ 0, 0, 10, 
+        /*eug*/ 30, 10, 0,
+        /*A*/ 40 
+    };
+
+
+    
+    /*
+     * From calendar field letter to its level.
+     * Used to order calendar field.
+     * For example, calendar fields can be defined in the following order:
+     * year >  month > date > am-pm > hour >  minute
+     * 'y' --> 10, 'M' -->20, 'd' --> 30; 'a' -->40, 'h' --> 50, 'm' -->60
+     */
+    private static final int[] PATTERN_CHAR_TO_LEVEL = 
+    {
+    //       A   B   C   D    E   F   G    H   I   J   K   L    M   N   O
+        -1, 40, -1, -1, 20,  30, 30,  0,  50, -1, -1, 50, 20,  20, -1, -1,
+    //   P   Q   R    S   T   U  V   W   X   Y  Z
+        -1, 20, -1,  80, -1, -1, 0, 30, -1, 10, 0, -1, -1, -1, -1, -1,
+    //       a   b   c   d    e   f  g   h   i   j    k   l    m   n   o
+        -1, 40, -1, 30,  30, 30, -1, 0, 50, -1, -1,  50, -1,  60, -1, -1,
+    //   p   q   r    s   t   u  v   w   x    y  z
+        -1, 20, -1,  70, -1, 10, 0, 20, -1,  10, 0, -1, -1, -1, -1, -1
+    };
+
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <ul>
+     * <li><b>0</b> or not present on stream: JDK 1.1.3.  This version
+     * has no <code>defaultCenturyStart</code> on stream.
+     * <li><b>1</b> JDK 1.1.4 or later.  This version adds
+     * <code>defaultCenturyStart</code>.
+     * </ul>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * The pattern string of this formatter.  This is always a non-localized
+     * pattern.  May not be null.  See class documentation for details.
+     * @serial
+     */
+    private String pattern;
+
+    /**
+     * The symbols used by this formatter for week names, month names,
+     * etc.  May not be null.
+     * @serial
+     * @see DateFormatSymbols
+     */
+    private DateFormatSymbols formatData;
+
+    private transient ULocale locale;
+
+    /**
+     * We map dates with two-digit years into the century starting at
+     * <code>defaultCenturyStart</code>, which may be any date.  May
+     * not be null.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private Date defaultCenturyStart;
+
+    private transient int defaultCenturyStartYear;
+
+    // defaultCenturyBase is set when an instance is created
+    // and may be used for calculating defaultCenturyStart when needed.
+    private transient long defaultCenturyBase;
+
+    // We need to preserve time zone type when parsing specific
+    // time zone text (xxx Standard Time vs xxx Daylight Time)
+    private static final int TZTYPE_UNK = 0, TZTYPE_STD = 1, TZTYPE_DST = 2;
+    private transient int tztype = TZTYPE_UNK;
+
+    private static final int millisPerHour = 60 * 60 * 1000;
+    private static final int millisPerMinute = 60 * 1000;
+    private static final int millisPerSecond = 1000;
+
+    // This prefix is designed to NEVER MATCH real text, in order to
+    // suppress the parsing of negative numbers.  Adjust as needed (if
+    // this becomes valid Unicode).
+    private static final String SUPPRESS_NEGATIVE_PREFIX = "\uAB00";
+
+    /**
+     * If true, this object supports fast formatting using the
+     * subFormat variant that takes a StringBuffer.
+     */
+    private transient boolean useFastFormat;
+
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat() {
+        this(getDefaultPattern(), null, null, null, null, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern)
+    {
+        this(pattern, null, null, null, null, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, Locale loc)
+    {
+        this(pattern, null, null, null, ULocale.forLocale(loc), true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 3.2
+     */
+    public SimpleDateFormat(String pattern, ULocale loc)
+    {
+        this(pattern, null, null, null, loc, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     * Warning: uses default locale for digits!
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
+    {
+        this(pattern, (DateFormatSymbols)formatData.clone(), null, null, null, true);
+    }
+
+    /**
+     * @internal ICU 3.2
+     * @deprecated This API is ICU internal only.
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData, ULocale loc)
+    {
+        this(pattern, (DateFormatSymbols)formatData.clone(), null, null, loc, true);
+    }
+
+    /**
+     * Package-private constructor that allows a subclass to specify
+     * whether it supports fast formatting.
+     *
+     * TODO make this API public.
+     */
+    SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar, ULocale locale,
+                     boolean useFastFormat) {
+        this(pattern, (DateFormatSymbols)formatData.clone(), (Calendar)calendar.clone(), null, locale, useFastFormat);
+    }
+
+    /*
+     * The constructor called from all other SimpleDateFormat constructors
+     */
+    private SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar,
+            NumberFormat numberFormat, ULocale locale, boolean useFastFormat) {
+        this.pattern = pattern;
+        this.formatData = formatData;
+        this.calendar = calendar;
+        this.numberFormat = numberFormat;
+        this.locale = locale; // time zone formatting
+        this.useFastFormat = useFastFormat;
+        initialize();
+    }
+
+    /**
+     * Create an instance of SimpleDateForamt for the given format configuration
+     * @param formatConfig the format configuration
+     * @return A SimpleDateFormat instance
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    public static SimpleDateFormat getInstance(Calendar.FormatConfiguration formatConfig) {
+        return new SimpleDateFormat(formatConfig.getPatternString(),
+                    formatConfig.getDateFormatSymbols(),
+                    formatConfig.getCalendar(),
+                    null,
+                    formatConfig.getLocale(),
+                    true);
+    }
+
+    /*
+     * Initialized fields
+     */
+    private void initialize() {
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        if (formatData == null) {
+            formatData = new DateFormatSymbols(locale);
+        }
+        if (calendar == null) {
+            calendar = Calendar.getInstance(locale);
+        }
+        if (numberFormat == null) {
+            // Use a NumberFormat optimized for date formatting
+            numberFormat = new DateNumberFormat(locale);
+        }
+        // Note: deferring calendar calculation until when we really need it.
+        // Instead, we just record time of construction for backward compatibility.
+        defaultCenturyBase = System.currentTimeMillis();
+
+        setLocale(calendar.getLocale(ULocale.VALID_LOCALE ), calendar.getLocale(ULocale.ACTUAL_LOCALE));
+        initLocalZeroPaddingNumberFormat();
+    }
+
+    // privates for the default pattern
+    private static ULocale cachedDefaultLocale = null;
+    private static String cachedDefaultPattern = null;
+    private static final String FALLBACKPATTERN = "yy/MM/dd HH:mm";
+
+    /*
+     * Returns the default date and time pattern (SHORT) for the default locale.
+     * This method is only used by the default SimpleDateFormat constructor.
+     */
+    private static synchronized String getDefaultPattern() {
+        ULocale defaultLocale = ULocale.getDefault();
+        if (!defaultLocale.equals(cachedDefaultLocale)) {
+            cachedDefaultLocale = defaultLocale;
+            Calendar cal = Calendar.getInstance(cachedDefaultLocale);
+            try {
+                CalendarData calData = new CalendarData(cachedDefaultLocale, cal.getType());
+                String[] dateTimePatterns = calData.getStringArray("DateTimePatterns");
+                cachedDefaultPattern = MessageFormat.format(dateTimePatterns[8],
+                        new Object[] {dateTimePatterns[SHORT], dateTimePatterns[SHORT + 4]});
+            } catch (MissingResourceException e) {
+                cachedDefaultPattern = FALLBACKPATTERN;
+            }
+        }
+        return cachedDefaultPattern;
+    }
+
+    /* Define one-century window into which to disambiguate dates using
+     * two-digit years.
+     */
+    private void parseAmbiguousDatesAsAfter(Date startDate) {
+        defaultCenturyStart = startDate;
+        calendar.setTime(startDate);
+        defaultCenturyStartYear = calendar.get(Calendar.YEAR);
+    }
+
+    /* Initialize defaultCenturyStart and defaultCenturyStartYear by base time.
+     * The default start time is 80 years before the creation time of this object.
+     */
+    private void initializeDefaultCenturyStart(long baseTime) {
+        defaultCenturyBase = baseTime;
+        // clone to avoid messing up date stored in calendar object
+        // when this method is called while parsing
+        Calendar tmpCal = (Calendar)calendar.clone();
+        tmpCal.setTimeInMillis(baseTime);
+        tmpCal.add(Calendar.YEAR, -80);
+        defaultCenturyStart = tmpCal.getTime();
+        defaultCenturyStartYear = tmpCal.get(Calendar.YEAR);
+    }
+
+    /* Gets the default century start date for this object */
+    private Date getDefaultCenturyStart() {
+        if (defaultCenturyStart == null) {
+            // not yet initialized
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        return defaultCenturyStart;
+    }
+
+    /* Gets the default century start year for this object */
+    private int getDefaultCenturyStartYear() {
+        if (defaultCenturyStart == null) {
+            // not yet initialized
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        return defaultCenturyStartYear;
+    }
+
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     * @stable ICU 2.0
+     */
+    public void set2DigitYearStart(Date startDate) {
+        parseAmbiguousDatesAsAfter(startDate);
+    }
+
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     * @stable ICU 2.0
+     */
+    public Date get2DigitYearStart() {
+        return getDefaultCenturyStart();
+    }
+
+    /**
+     * Overrides DateFormat.
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param cal the calendar whose date-time value is to be formatted into a date-time string
+     * @param toAppendTo where the new date-time text is to be appended
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(cal, toAppendTo, pos, null);
+    }
+
+    // The actual method to format date. If List attributes is not null,
+    // then attribute information will be recorded.
+    private StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+            FieldPosition pos, List attributes) {
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        // Careful: For best performance, minimize the number of calls
+        // to StringBuffer.append() by consolidating appends when
+        // possible.
+
+        Object[] items = getPatternItems();
+        for (int i = 0; i < items.length; i++) {
+            if (items[i] instanceof String) {
+                toAppendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                int start = 0;
+                if (attributes != null) {
+                    // Save the current length
+                    start = toAppendTo.length();
+                }
+//#endif
+                if (useFastFormat) {
+                    subFormat(toAppendTo, item.type, item.length, toAppendTo.length(), pos, cal);
+                } else {
+                    toAppendTo.append(subFormat(item.type, item.length, toAppendTo.length(), pos, formatData, cal));
+                }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                if (attributes != null) {
+                    // Check the sub format length
+                    int end = toAppendTo.length();
+                    if (end - start > 0) {
+                        // Append the attribute to the list
+                        DateFormat.Field attr = patternCharToDateFormatField(item.type);
+                        FieldPosition fp = new FieldPosition(attr);
+                        fp.setBeginIndex(start);
+                        fp.setEndIndex(end);
+                        attributes.add(fp);
+                    }
+                }
+//#endif
+            }
+        }
+        return toAppendTo;
+        
+    }
+
+    // Map pattern character to index
+    private static final int PATTERN_CHAR_BASE = 0x40;
+    private static final int[] PATTERN_CHAR_TO_INDEX =
+    {
+    //       A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
+        -1, 22, -1, -1, 10,  9, 11,  0,  5, -1, -1, 16, 26,  2, -1, -1,
+    //   P   Q   R   S   T   U   V   W   X   Y   Z
+        -1, 27, -1,  8, -1, -1, 29, 13, -1, 18, 23, -1, -1, -1, -1, -1,
+    //       a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
+        -1, 14, -1, 25,  3, 19, -1, 21, 15, -1, -1,  4, -1,  6, -1, -1,
+    //   p   q   r   s   t   u   v   w   x   y   z
+        -1, 28, -1,  7, -1, 20, 24, 12, -1,  1, 17, -1, -1, -1, -1, -1
+    };
+    
+    // Map pattern character index to Calendar field number
+    private static final int[] PATTERN_INDEX_TO_CALENDAR_FIELD =
+    {
+        /*GyM*/ Calendar.ERA, Calendar.YEAR, Calendar.MONTH,
+        /*dkH*/ Calendar.DATE, Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY,
+        /*msS*/ Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND,
+        /*EDF*/ Calendar.DAY_OF_WEEK, Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK_IN_MONTH,
+        /*wWa*/ Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH, Calendar.AM_PM,
+        /*hKz*/ Calendar.HOUR, Calendar.HOUR, Calendar.ZONE_OFFSET,
+        /*Yeu*/ Calendar.YEAR_WOY, Calendar.DOW_LOCAL, Calendar.EXTENDED_YEAR,
+        /*gAZ*/ Calendar.JULIAN_DAY, Calendar.MILLISECONDS_IN_DAY, Calendar.ZONE_OFFSET,
+        /*v*/   Calendar.ZONE_OFFSET,
+        /*c*/   Calendar.DAY_OF_WEEK,
+        /*L*/   Calendar.MONTH,
+        /*Qq*/  Calendar.MONTH, Calendar.MONTH,
+        /*V*/   Calendar.ZONE_OFFSET,
+    };
+
+    // Map pattern character index to DateFormat field number
+    private static final int[] PATTERN_INDEX_TO_DATE_FORMAT_FIELD = {
+        /*GyM*/ DateFormat.ERA_FIELD, DateFormat.YEAR_FIELD, DateFormat.MONTH_FIELD,
+        /*dkH*/ DateFormat.DATE_FIELD, DateFormat.HOUR_OF_DAY1_FIELD, DateFormat.HOUR_OF_DAY0_FIELD,
+        /*msS*/ DateFormat.MINUTE_FIELD, DateFormat.SECOND_FIELD, DateFormat.FRACTIONAL_SECOND_FIELD,
+        /*EDF*/ DateFormat.DAY_OF_WEEK_FIELD, DateFormat.DAY_OF_YEAR_FIELD, DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD,
+        /*wWa*/ DateFormat.WEEK_OF_YEAR_FIELD, DateFormat.WEEK_OF_MONTH_FIELD, DateFormat.AM_PM_FIELD,
+        /*hKz*/ DateFormat.HOUR1_FIELD, DateFormat.HOUR0_FIELD, DateFormat.TIMEZONE_FIELD,
+        /*Yeu*/ DateFormat.YEAR_WOY_FIELD, DateFormat.DOW_LOCAL_FIELD, DateFormat.EXTENDED_YEAR_FIELD,
+        /*gAZ*/ DateFormat.JULIAN_DAY_FIELD, DateFormat.MILLISECONDS_IN_DAY_FIELD, DateFormat.TIMEZONE_RFC_FIELD,
+        /*v*/   DateFormat.TIMEZONE_GENERIC_FIELD, 
+        /*c*/   DateFormat.STANDALONE_DAY_FIELD,
+        /*L*/   DateFormat.STANDALONE_MONTH_FIELD,
+        /*Qq*/  DateFormat.QUARTER_FIELD, DateFormat.STANDALONE_QUARTER_FIELD,
+        /*V*/   DateFormat.TIMEZONE_SPECIAL_FIELD, 
+    };
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    // Map pattern character index to DateFormat.Field
+    private static final DateFormat.Field[] PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE = {
+        /*GyM*/ DateFormat.Field.ERA, DateFormat.Field.YEAR, DateFormat.Field.MONTH,
+        /*dkH*/ DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.HOUR_OF_DAY1, DateFormat.Field.HOUR_OF_DAY0,
+        /*msS*/ DateFormat.Field.MINUTE, DateFormat.Field.SECOND, DateFormat.Field.MILLISECOND,
+        /*EDF*/ DateFormat.Field.DAY_OF_WEEK, DateFormat.Field.DAY_OF_YEAR, DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+        /*wWa*/ DateFormat.Field.WEEK_OF_YEAR, DateFormat.Field.WEEK_OF_MONTH, DateFormat.Field.AM_PM,
+        /*hKz*/ DateFormat.Field.HOUR1, DateFormat.Field.HOUR0, DateFormat.Field.TIME_ZONE,
+        /*Yeu*/ DateFormat.Field.YEAR_WOY, DateFormat.Field.DOW_LOCAL, DateFormat.Field.EXTENDED_YEAR,
+        /*gAZ*/ DateFormat.Field.JULIAN_DAY, DateFormat.Field.MILLISECONDS_IN_DAY, DateFormat.Field.TIME_ZONE,
+        /*v*/   DateFormat.Field.TIME_ZONE,
+        /*c*/   DateFormat.Field.DAY_OF_WEEK,
+        /*L*/   DateFormat.Field.MONTH,
+        /*Qq*/  DateFormat.Field.QUARTER, DateFormat.Field.QUARTER,
+        /*V*/   DateFormat.Field.TIME_ZONE,
+    };
+
+    /**
+     * Return a DateFormat.Field constant associated with the specified format pattern
+     * character.
+     * 
+     * @param ch The pattern character
+     * @return DateFormat.Field associated with the pattern character
+     * 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat.Field patternCharToDateFormatField(char ch) {
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+        if (patternCharIndex != -1) {
+            return PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE[patternCharIndex];
+        }
+        return null;
+    }
+//#endif
+
+    /**
+     * Format a single field, given its pattern character.  Subclasses may
+     * override this method in order to modify or add formatting
+     * capabilities.
+     * @param ch the pattern character
+     * @param count the number of times ch is repeated in the pattern
+     * @param beginOffset the offset of the output string at the start of
+     * this field; used to set pos when appropriate
+     * @param pos receives the position of a field, when appropriate
+     * @param fmtData the symbols for this formatter
+     * @stable ICU 2.0
+     */
+    protected String subFormat(char ch, int count, int beginOffset,
+                               FieldPosition pos, DateFormatSymbols fmtData,
+                               Calendar cal)
+        throws IllegalArgumentException
+    {
+        // Note: formatData is ignored
+        StringBuffer buf = new StringBuffer();
+        subFormat(buf, ch, count, beginOffset, pos, cal);
+        return buf.toString();
+    }
+
+    /**
+     * Format a single field; useFastFormat variant.  Reuses a
+     * StringBuffer for results instead of creating a String on the
+     * heap for each call.
+     *
+     * NOTE We don't really need the beginOffset parameter, EXCEPT for
+     * the need to support the slow subFormat variant (above) which
+     * has to pass it in to us.
+     *
+     * TODO make this API public
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void subFormat(StringBuffer buf,
+                             char ch, int count, int beginOffset,
+                             FieldPosition pos,
+                             Calendar cal) {
+        final int maxIntCount = Integer.MAX_VALUE;
+        final int bufstart = buf.length();
+
+        // final int patternCharIndex = DateFormatSymbols.patternChars.indexOf(ch);
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+
+        final int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = cal.get(field);
+
+        String zoneString = null;
+
+        switch (patternCharIndex) {
+        case 0: // 'G' - ERA
+            if (count == 5) {
+                safeAppend(formatData.narrowEras, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.eraNames, value, buf);
+            } else {
+                safeAppend(formatData.eras, value, buf);
+            }
+            break;
+        case 1: // 'y' - YEAR
+            /* According to the specification, if the number of pattern letters ('y') is 2,
+             * the year is truncated to 2 digits; otherwise it is interpreted as a number.
+             * But the original code process 'y', 'yy', 'yyy' in the same way. and process
+             * patterns with 4 or more than 4 'y' characters in the same way.
+             * So I change the codes to meet the specification. [Richard/GCl]
+             */
+            if (count == 2)
+                zeroPaddingNumber(buf, value, 2, 2); // clip 1996 to 96
+            else //count = 1 or count > 2
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 2: // 'M' - MONTH
+            if (count == 5) {
+                safeAppend(formatData.narrowMonths, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.months, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.shortMonths, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 4: // 'k' - HOUR_OF_DAY (1..24)
+            if (value == 0)
+                zeroPaddingNumber(buf,
+                                  cal.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 8: // 'S' - FRACTIONAL_SECOND
+            // Fractional seconds left-justify
+            {
+                numberFormat.setMinimumIntegerDigits(Math.min(3, count));
+                numberFormat.setMaximumIntegerDigits(maxIntCount);
+                if (count == 1) {
+                    value = (value + 50) / 100;
+                } else if (count == 2) {
+                    value = (value + 5) / 10;
+                }
+                FieldPosition p = new FieldPosition(-1);
+                numberFormat.format((long) value, buf, p);
+                if (count > 3) {
+                    numberFormat.setMinimumIntegerDigits(count - 3);
+                    numberFormat.format(0L, buf, p);
+                }
+            }
+            break;
+        case 9: // 'E' - DAY_OF_WEEK
+            if (count == 5) {
+                safeAppend(formatData.narrowWeekdays, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.weekdays, value, buf);
+            } else {// count <= 3, use abbreviated form if exists
+                safeAppend(formatData.shortWeekdays, value, buf);
+            }
+            break;
+        case 14: // 'a' - AM_PM
+            safeAppend(formatData.ampms, value, buf);
+            break;
+        case 15: // 'h' - HOUR (1..12)
+            if (value == 0)
+                zeroPaddingNumber(buf,
+                                  cal.getLeastMaximum(Calendar.HOUR)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 17: // 'z' - ZONE_OFFSET
+            if (count < 4) {
+                // "z", "zz", "zzz"
+                zoneString = formatData.getZoneStringFormat().getSpecificShortString(cal, true /* commonly used only */);
+            } else {
+                zoneString = formatData.getZoneStringFormat().getSpecificLongString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        case 23: // 'Z' - TIMEZONE_RFC
+            if (count < 4) {
+                // RFC822 format, must use ASCII digits
+                int val = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET));
+                char sign = '+';
+                if (val < 0) {
+                    val = -val;
+                    sign = '-';
+                }
+                buf.append(sign);
+
+                int offsetH = val / millisPerHour;
+                val = val % millisPerHour;
+                int offsetM = val / millisPerMinute;
+                val = val % millisPerMinute;
+                int offsetS = val / millisPerSecond;
+
+                int num = 0, denom = 0;
+                if (offsetS == 0) {
+                    val = offsetH*100 + offsetM; // HHmm
+                    num = val % 10000;
+                    denom = 1000;
+                } else {
+                    val = offsetH*10000 + offsetM*100 + offsetS; // HHmmss
+                    num = val % 1000000;
+                    denom = 100000;
+                }
+                while (denom >= 1) {
+                    char digit = (char)((num / denom) + '0');
+                    buf.append(digit);
+                    num = num % denom;
+                    denom /= 10;
+                }
+            } else {
+                // long form, localized GMT pattern
+                appendGMT(buf, cal);
+            }
+            break;
+        case 24: // 'v' - TIMEZONE_GENERIC
+            if (count == 1) {
+                // "v"
+                zoneString = formatData.getZoneStringFormat().getGenericShortString(cal, true /* commonly used only */);
+            } else if (count == 4) {
+                // "vvvv"
+                zoneString = formatData.getZoneStringFormat().getGenericLongString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        case 25: // 'c' - STANDALONE DAY
+            if (count == 5) {
+                safeAppend(formatData.standaloneNarrowWeekdays, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.standaloneWeekdays, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortWeekdays, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value, 1, maxIntCount);
+            }
+            break;
+        case 26: // 'L' - STANDALONE MONTH
+            if (count == 5) {
+                safeAppend(formatData.standaloneNarrowMonths, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.standaloneMonths, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortMonths, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 27: // 'Q' - QUARTER
+            if (count >= 4) {
+                safeAppend(formatData.quarters, value/3, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.shortQuarters, value/3, buf);
+            } else {
+                zeroPaddingNumber(buf, (value/3)+1, count, maxIntCount);
+            }
+            break;
+        case 28: // 'q' - STANDALONE QUARTER
+            if (count >= 4) {
+                safeAppend(formatData.standaloneQuarters, value/3, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortQuarters, value/3, buf);
+            } else {
+                zeroPaddingNumber(buf, (value/3)+1, count, maxIntCount);
+            }
+            break;
+        case 29: // 'V' - TIMEZONE_SPECIAL
+            if (count == 1) {
+                // "V"
+                zoneString = formatData.getZoneStringFormat().getSpecificShortString(cal, false /* ignoring commonly used */);
+            } else if (count == 4) {
+                // "VVVV"
+                zoneString = formatData.getZoneStringFormat().getGenericLocationString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY (0..23)
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR (0..11)
+            // case 18: // 'Y' - YEAR_WOY
+            // case 19: // 'e' - DOW_LOCAL
+            // case 20: // 'u' - EXTENDED_YEAR
+            // case 21: // 'g' - JULIAN_DAY
+            // case 22: // 'A' - MILLISECONDS_IN_DAY
+
+            zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        } // switch (patternCharIndex)
+
+        // Set the FieldPosition (for the first occurrence only)
+        if (pos.getBeginIndex() == pos.getEndIndex()) {
+            if (pos.getField() == PATTERN_INDEX_TO_DATE_FORMAT_FIELD[patternCharIndex]) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + buf.length() - bufstart);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            else if (pos.getFieldAttribute() == PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE[patternCharIndex]) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + buf.length() - bufstart);
+            }
+//#endif
+        }
+    }
+
+    private static void safeAppend(String[] array, int value, StringBuffer appendTo) {
+        if (array != null && value >= 0 && value < array.length) {
+            appendTo.append(array[value]);
+        }
+    }
+
+    /*
+     * PatternItem store parsed date/time field pattern information.
+     */
+    private static class PatternItem {
+        final char type;
+        final int length;
+        final boolean isNumeric;
+
+        PatternItem(char type, int length) {
+            this.type = type;
+            this.length = length;
+            isNumeric = isNumeric(type, length);
+        }
+    }
+
+    private static ICUCache PARSED_PATTERN_CACHE = new SimpleCache();
+    private transient Object[] patternItems;
+
+    /*
+     * Returns parsed pattern items.  Each item is either String or
+     * PatternItem.
+     */
+    private Object[] getPatternItems() {
+        if (patternItems != null) {
+            return patternItems;
+        }
+
+        patternItems = (Object[])PARSED_PATTERN_CACHE.get(pattern);
+        if (patternItems != null) {
+            return patternItems;
+        }
+
+        boolean isPrevQuote = false;
+        boolean inQuote = false;
+        StringBuffer text = new StringBuffer();
+        char itemType = 0;  // 0 for string literal, otherwise date/time pattern character
+        int itemLength = 1;
+
+        List items = new ArrayList();
+
+        for (int i = 0; i < pattern.length(); i++) {
+            char ch = pattern.charAt(i);
+            if (ch == '\'') {
+                if (isPrevQuote) {
+                    text.append('\'');
+                    isPrevQuote = false;
+                } else {
+                    isPrevQuote = true;
+                    if (itemType != 0) {
+                        items.add(new PatternItem(itemType, itemLength));
+                        itemType = 0;
+                    }
+                }
+                inQuote = !inQuote;
+            } else {
+                isPrevQuote = false;
+                if (inQuote) {
+                    text.append(ch);
+                } else {
+                    if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
+                        // a date/time pattern character
+                        if (ch == itemType) {
+                            itemLength++;
+                        } else {
+                            if (itemType == 0) {
+                                if (text.length() > 0) {
+                                    items.add(text.toString());
+                                    text.setLength(0);
+                                }
+                            } else {
+                                items.add(new PatternItem(itemType, itemLength));
+                            }
+                            itemType = ch;
+                            itemLength = 1;
+                        }
+                    } else {
+                        // a string literal
+                        if (itemType != 0) {
+                            items.add(new PatternItem(itemType, itemLength));
+                            itemType = 0;
+                        }
+                        text.append(ch);
+                    }
+                }
+            }
+        }
+        // handle last item
+        if (itemType == 0) {
+            if (text.length() > 0) {
+                items.add(text.toString());
+                text.setLength(0);
+            }
+        } else {
+            items.add(new PatternItem(itemType, itemLength));
+        }
+
+        patternItems = new Object[items.size()];
+        items.toArray(patternItems);
+
+        PARSED_PATTERN_CACHE.put(pattern, patternItems);
+        
+        return patternItems;
+    }
+
+    /*
+     * Time zone localized GMT format stuffs
+     */
+    private static final String DEFAULT_GMT_PREFIX = "GMT";
+    private static final int DEFAULT_GMT_PREFIX_LEN = 3;
+    private static final char PLUS = '+';
+    private static final char MINUS = '-';
+    private static final char COLON = ':';
+
+    private void appendGMT(StringBuffer buf, Calendar cal) {
+        int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+
+        if (isDefaultGMTFormat()) {
+            formatGMTDefault(buf, offset);
+        } else {
+            int sign = DateFormatSymbols.OFFSET_POSITIVE;
+            if (offset < 0) {
+                offset = -offset;
+                sign = DateFormatSymbols.OFFSET_NEGATIVE;
+            }
+            int width = offset%(60*1000) == 0 ? DateFormatSymbols.OFFSET_HM : DateFormatSymbols.OFFSET_HMS;
+
+            MessageFormat fmt = getGMTFormatter(sign, width);
+            fmt.format(new Object[] {new Long(offset)}, buf, null);
+        }
+    }
+
+    private void formatGMTDefault(StringBuffer buf, int offset) {
+        buf.append(DEFAULT_GMT_PREFIX);
+        if (offset >= 0) {
+            buf.append(PLUS);
+        } else {
+            buf.append(MINUS);
+            offset = -offset;
+        }
+        offset /= 1000; // now in seconds
+        int sec = offset % 60;
+        offset /= 60;
+        int min = offset % 60;
+        int hour = offset / 60;
+
+        zeroPaddingNumber(buf, hour, 2, 2);
+        buf.append(COLON);
+        zeroPaddingNumber(buf, min, 2, 2);
+        if (sec != 0) {
+            buf.append(COLON);
+            zeroPaddingNumber(buf, sec, 2, 2);
+        }
+    }
+
+    private Integer parseGMT(String text, ParsePosition pos) {
+        if (!isDefaultGMTFormat()) {
+            int start = pos.getIndex();
+            String gmtPattern = formatData.gmtFormat;
+
+            // Quick check
+            boolean prefixMatch = false;
+            int prefixLen = gmtPattern.indexOf('{');
+            if (prefixLen > 0 && text.regionMatches(start, gmtPattern, 0, prefixLen)) {
+                prefixMatch = true;
+            }
+
+            if (prefixMatch) {
+                // Prefix matched
+                MessageFormat fmt;
+                Object[] parsedObjects;
+                int offset;
+
+                // Try negative Hms
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_NEGATIVE, DateFormatSymbols.OFFSET_HMS);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(-offset /* negative */);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try positive Hms
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_POSITIVE, DateFormatSymbols.OFFSET_HMS);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(offset);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try negative Hm
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_NEGATIVE, DateFormatSymbols.OFFSET_HM);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(-offset /* negative */);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try positive Hm
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_POSITIVE, DateFormatSymbols.OFFSET_HM);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(offset);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+            }
+        }
+
+        return parseGMTDefault(text, pos);
+    }
+
+    private Integer parseGMTDefault(String text, ParsePosition pos) {
+        int start = pos.getIndex();
+
+        if (start + DEFAULT_GMT_PREFIX_LEN + 1 >= text.length()) {
+            pos.setErrorIndex(start);
+            return null;
+        }
+
+        int cur = start;
+        // "GMT"
+        if (!text.regionMatches(true, start, DEFAULT_GMT_PREFIX, 0, DEFAULT_GMT_PREFIX_LEN)) {
+            pos.setErrorIndex(start);
+            return null;
+        }
+        cur += DEFAULT_GMT_PREFIX_LEN;
+        // Sign
+        boolean negative = false;
+        if (text.charAt(cur) == MINUS) {
+            negative = true;
+        } else if (text.charAt(cur) != PLUS) {
+            pos.setErrorIndex(cur);
+            return null;
+        }
+        cur++;
+
+        // Numbers
+        int numLen;
+        pos.setIndex(cur);
+
+        Number n = parseInt(text, 6, pos, false);
+        numLen = pos.getIndex() - cur;
+
+        if (n == null || numLen <= 0 || numLen > 6) {
+            pos.setIndex(start);
+            pos.setErrorIndex(cur);
+            return null;
+        }
+
+        int numVal = n.intValue();
+
+        int hour = 0;
+        int min = 0;
+        int sec = 0;
+
+        if (numLen <= 2) {
+            // H[H][:mm[:ss]]
+            hour = numVal;
+            cur += numLen;
+            if (cur + 2 < text.length() && text.charAt(cur) == COLON) {
+                cur++;
+                pos.setIndex(cur);
+                n = parseInt(text, 2, pos, false);
+                numLen = pos.getIndex() - cur;
+                if (n != null && numLen == 2) {
+                    // got minute field
+                    min = n.intValue();
+                    cur += numLen;
+                    if (cur + 2 < text.length() && text.charAt(cur) == COLON) {
+                        cur++;
+                        pos.setIndex(cur);
+                        n = parseInt(text, 2, pos, false);
+                        numLen = pos.getIndex() - cur;
+                        if (n != null && numLen == 2) {
+                            // got second field
+                            sec = n.intValue();
+                        } else {
+                            // reset position
+                            pos.setIndex(cur - 1);
+                            pos.setErrorIndex(-1);
+                        }
+                    }
+                } else {
+                    // reset postion
+                    pos.setIndex(cur - 1);
+                    pos.setErrorIndex(-1);
+                }
+            }
+        } else if (numLen == 3 || numLen == 4) {
+            // Hmm or HHmm
+            hour = numVal / 100;
+            min = numVal % 100;
+        } else { // numLen == 5 || numLen == 6
+            // Hmmss or HHmmss
+            hour = numVal / 10000;
+            min = (numVal % 10000) / 100;
+            sec = numVal % 100;
+        }
+
+        int offset = ((hour*60 + min)*60 + sec)*1000;
+        if (negative) {
+            offset = -offset;
+        }
+        return new Integer(offset);
+    }
+
+    transient private WeakReference[] gmtfmtCache;
+
+    private MessageFormat getGMTFormatter(int sign, int width) {
+        MessageFormat fmt = null;
+        if (gmtfmtCache == null) {
+            gmtfmtCache = new WeakReference[4];
+        }
+        int cacheIdx = sign*2 + width;
+        if (gmtfmtCache[cacheIdx] != null) {
+            fmt = (MessageFormat)gmtfmtCache[cacheIdx].get();
+        }
+        if (fmt == null) {
+            fmt = new MessageFormat(formatData.gmtFormat);
+            SimpleDateFormat sdf = (SimpleDateFormat)this.clone();
+            sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
+            sdf.applyPattern(formatData.getGmtHourFormat(sign, width));
+            fmt.setFormat(0, sdf);
+            gmtfmtCache[cacheIdx] = new WeakReference(fmt);
+        }
+        return fmt;
+    }
+
+    private boolean isDefaultGMTFormat() {
+        // GMT pattern
+        if (!DateFormatSymbols.DEFAULT_GMT_PATTERN.equals(formatData.getGmtFormat())) {
+            return false;
+        }
+        // GMT offset hour patters
+        boolean res = true;
+        for (int sign = 0; sign < 2 && res; sign++) {
+            for (int width = 0; width < 2; width++) {
+                if (!DateFormatSymbols.DEFAULT_GMT_HOUR_PATTERNS[sign][width].equals(formatData.getGmtHourFormat(sign, width))) {
+                    res = false;
+                    break;
+                }
+            }
+        }
+        return res;
+    }
+
+    /*
+     * Internal method. Returns null if the value of an array is empty, or if the
+     * index is out of bounds
+     */
+/*    private String getZoneArrayValue(String[] zs, int ix) {
+        if (ix >= 0 && ix < zs.length) {
+            String result = zs[ix];
+            if (result != null && result.length() != 0) {
+                return result;
+            }
+        }
+        return null;
+    }*/
+
+    /**
+     * Internal high-speed method.  Reuses a StringBuffer for results
+     * instead of creating a String on the heap for each call.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void zeroPaddingNumber(StringBuffer buf, int value,
+                                     int minDigits, int maxDigits) {
+        if (useLocalZeroPaddingNumberFormat) {
+            fastZeroPaddingNumber(buf, value, minDigits, maxDigits);
+        } else {
+            numberFormat.setMinimumIntegerDigits(minDigits);
+            numberFormat.setMaximumIntegerDigits(maxDigits);
+            numberFormat.format(value, buf, new FieldPosition(-1));
+        }
+    }
+
+    /**
+     * Overrides superclass method
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        // Override this method to update local zero padding number formatter
+        super.setNumberFormat(newNumberFormat);
+        initLocalZeroPaddingNumberFormat();
+    }
+
+    private void initLocalZeroPaddingNumberFormat() {
+        if (numberFormat instanceof DecimalFormat) {
+            zeroDigit = ((DecimalFormat)numberFormat).getDecimalFormatSymbols().getZeroDigit();
+            useLocalZeroPaddingNumberFormat = true;
+        } else if (numberFormat instanceof DateNumberFormat) {
+            zeroDigit = ((DateNumberFormat)numberFormat).getZeroDigit();
+            useLocalZeroPaddingNumberFormat = true;
+        } else {
+            useLocalZeroPaddingNumberFormat = false;
+        }
+
+        if (useLocalZeroPaddingNumberFormat) {
+            decimalBuf = new char[10];  // sufficient for int numbers
+        }
+    }
+
+    // If true, use local version of zero padding number format
+    private transient boolean useLocalZeroPaddingNumberFormat;
+    private transient char zeroDigit;
+    private transient char[] decimalBuf;
+
+    /*
+     * Lightweight zero padding integer number format function.
+     * 
+     * Note: This implementation is almost equivalent to format method in DateNumberFormat.
+     * In the method zeroPaddingNumber above should be able to use the one in DateNumberFormat,
+     * but, it does not help IBM J9's JIT to optimize the performance much.  In simple repeative
+     * date format test case, having local implementation is ~10% faster than using one in
+     * DateNumberFormat on IBM J9 VM.  On Sun Hotspot VM, I do not see such difference.
+     * 
+     * -Yoshito
+     */
+    private void fastZeroPaddingNumber(StringBuffer buf, int value, int minDigits, int maxDigits) {
+        int limit = decimalBuf.length < maxDigits ? decimalBuf.length : maxDigits;
+        int index = limit - 1;
+        while (true) {
+            decimalBuf[index] = (char)((value % 10) + zeroDigit);
+            value /= 10;
+            if (index == 0 || value == 0) {
+                break;
+            }
+            index--;
+        }
+        int padding = minDigits - (limit - index);
+        for (; padding > 0; padding--) {
+            decimalBuf[--index] = zeroDigit;
+        }
+        int length = limit - index;
+        buf.append(decimalBuf, index, length);        
+    }
+
+    /**
+     * Formats a number with the specified minimum and maximum number of digits.
+     * @stable ICU 2.0
+     */
+    protected String zeroPaddingNumber(long value, int minDigits, int maxDigits)
+    {
+        numberFormat.setMinimumIntegerDigits(minDigits);
+        numberFormat.setMaximumIntegerDigits(maxDigits);
+        return numberFormat.format(value);
+    }
+
+    /**
+     * Format characters that indicate numeric fields.  The character
+     * at index 0 is treated specially.
+     */
+    private static final String NUMERIC_FORMAT_CHARS = "MYyudehHmsSDFwWkK";
+
+    /**
+     * Return true if the given format character, occuring count
+     * times, represents a numeric field.
+     */
+    private static final boolean isNumeric(char formatChar, int count) {
+        int i = NUMERIC_FORMAT_CHARS.indexOf(formatChar);
+        return (i > 0 || (i == 0 && count < 3));
+    }
+
+    /**
+     * Overrides DateFormat
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition parsePos)
+    {
+        int pos = parsePos.getIndex();
+        int start = pos;
+
+        // Reset tztype
+        tztype = TZTYPE_UNK;
+        boolean[] ambiguousYear = { false };
+
+        // item index for the first numeric field within a contiguous numeric run
+        int numericFieldStart = -1;
+        // item length for the first numeric field within a contiguous numeric run
+        int numericFieldLength = 0;
+        // start index of numeric text run in the input text
+        int numericStartPos = 0;
+
+        Object[] items = getPatternItems();
+        int i = 0;
+        while (i < items.length) {
+            if (items[i] instanceof PatternItem) {
+                // Handle pattern field
+                PatternItem field = (PatternItem)items[i];
+                if (field.isNumeric) {
+                    // Handle fields within a run of abutting numeric fields.  Take
+                    // the pattern "HHmmss" as an example. We will try to parse
+                    // 2/2/2 characters of the input text, then if that fails,
+                    // 1/2/2.  We only adjust the width of the leftmost field; the
+                    // others remain fixed.  This allows "123456" => 12:34:56, but
+                    // "12345" => 1:23:45.  Likewise, for the pattern "yyyyMMdd" we
+                    // try 4/2/2, 3/2/2, 2/2/2, and finally 1/2/2.
+                    if (numericFieldStart == -1) {
+                        // check if this field is followed by abutting another numeric field
+                        if ((i + 1) < items.length 
+                                && (items[i + 1] instanceof PatternItem)
+                                && ((PatternItem)items[i + 1]).isNumeric) {
+                            // record the first numeric field within a numeric text run
+                            numericFieldStart = i;
+                            numericFieldLength = field.length;
+                            numericStartPos = pos; 
+                        }
+                    }
+                }
+                if (numericFieldStart != -1) {
+                    // Handle a numeric field within abutting numeric fields
+                    int len = field.length;
+                    if (numericFieldStart == i) {
+                        len = numericFieldLength;
+                    }
+
+                    // Parse a numeric field
+                    pos = subParse(text, pos, field.type, len,
+                            true, false, ambiguousYear, cal);
+
+                    if (pos < 0) {
+                        // If the parse fails anywhere in the numeric run, back up to the
+                        // start of the run and use shorter pattern length for the first
+                        // numeric field.
+                        --numericFieldLength;
+                        if (numericFieldLength == 0) {
+                            // can not make shorter any more
+                            parsePos.setIndex(start);
+                            parsePos.setErrorIndex(pos);
+                            return;
+                        }
+                        i = numericFieldStart;
+                        pos = numericStartPos;
+                        continue;
+                    }
+
+                } else {
+                    // Handle a non-numeric field or a non-abutting numeric field
+                    numericFieldStart = -1;
+
+                    int s = pos;
+                    pos = subParse(text, pos, field.type, field.length,
+                            false, true, ambiguousYear, cal);
+                    if (pos < 0) {
+                        parsePos.setIndex(start);
+                        parsePos.setErrorIndex(s);
+                        return;
+                    }
+                }
+            } else {
+                // Handle literal pattern text literal
+                numericFieldStart = -1;
+
+                String patl = (String)items[i];
+                int plen = patl.length();
+                int tlen = text.length();
+                int idx = 0;
+                while (idx < plen && pos < tlen) {
+                    char pch = patl.charAt(idx);
+                    char ich = text.charAt(pos);
+                    if (UCharacterProperty.isRuleWhiteSpace(pch) && UCharacterProperty.isRuleWhiteSpace(ich)) {
+                        // White space characters found in both patten and input.
+                        // Skip contiguous white spaces.
+                        while ((idx + 1) < plen &&
+                                UCharacterProperty.isRuleWhiteSpace(patl.charAt(idx + 1))) {
+                             ++idx;
+                        }
+                        while ((pos + 1) < tlen &&
+                                UCharacterProperty.isRuleWhiteSpace(text.charAt(pos + 1))) {
+                             ++pos;
+                        }
+                    } else if (pch != ich) {
+                        break;
+                    }
+                    ++idx;
+                    ++pos;
+                }
+                if (idx != plen) {
+                    // Set the position of mismatch
+                    parsePos.setIndex(start);
+                    parsePos.setErrorIndex(pos);
+                    return;
+                }
+            }
+            ++i;
+        }
+
+        // At this point the fields of Calendar have been set.  Calendar
+        // will fill in default values for missing fields when the time
+        // is computed.
+
+        parsePos.setIndex(pos);
+
+        // This part is a problem:  When we call parsedDate.after, we compute the time.
+        // Take the date April 3 2004 at 2:30 am.  When this is first set up, the year
+        // will be wrong if we're parsing a 2-digit year pattern.  It will be 1904.
+        // April 3 1904 is a Sunday (unlike 2004) so it is the DST onset day.  2:30 am
+        // is therefore an "impossible" time, since the time goes from 1:59 to 3:00 am
+        // on that day.  It is therefore parsed out to fields as 3:30 am.  Then we
+        // add 100 years, and get April 3 2004 at 3:30 am.  Note that April 3 2004 is
+        // a Saturday, so it can have a 2:30 am -- and it should. [LIU]
+        /*
+          Date parsedDate = cal.getTime();
+          if( ambiguousYear[0] && !parsedDate.after(getDefaultCenturyStart()) ) {
+          cal.add(Calendar.YEAR, 100);
+          parsedDate = cal.getTime();
+          }
+        */
+        // Because of the above condition, save off the fields in case we need to readjust.
+        // The procedure we use here is not particularly efficient, but there is no other
+        // way to do this given the API restrictions present in Calendar.  We minimize
+        // inefficiency by only performing this computation when it might apply, that is,
+        // when the two-digit year is equal to the start year, and thus might fall at the
+        // front or the back of the default century.  This only works because we adjust
+        // the year correctly to start with in other cases -- see subParse().
+        try {
+            if (ambiguousYear[0] || tztype != TZTYPE_UNK) {
+                // We need a copy of the fields, and we need to avoid triggering a call to
+                // complete(), which will recalculate the fields.  Since we can't access
+                // the fields[] array in Calendar, we clone the entire object.  This will
+                // stop working if Calendar.clone() is ever rewritten to call complete().
+                Calendar copy;
+                if (ambiguousYear[0]) { // the two-digit year == the default start year
+                    copy = (Calendar)cal.clone();
+                    Date parsedDate = copy.getTime();
+                    if (parsedDate.before(getDefaultCenturyStart())) {
+                        // We can't use add here because that does a complete() first.
+                        cal.set(Calendar.YEAR, getDefaultCenturyStartYear() + 100);
+                    }
+                }
+                if (tztype != TZTYPE_UNK) {
+                    copy = (Calendar)cal.clone();
+                    TimeZone tz = copy.getTimeZone();
+                    BasicTimeZone btz = null;
+                    if (tz instanceof BasicTimeZone) {
+                        btz = (BasicTimeZone)tz;
+                    }
+
+                    // Get local millis
+                    copy.set(Calendar.ZONE_OFFSET, 0);
+                    copy.set(Calendar.DST_OFFSET, 0);
+                    long localMillis = copy.getTimeInMillis();
+
+                    // Make sure parsed time zone type (Standard or Daylight)
+                    // matches the rule used by the parsed time zone.
+                    int[] offsets = new int[2];
+                    if (btz != null) {
+                        if (tztype == TZTYPE_STD) {
+                            btz.getOffsetFromLocal(localMillis,
+                                    BasicTimeZone.LOCAL_STD, BasicTimeZone.LOCAL_STD, offsets);
+                        } else {
+                            btz.getOffsetFromLocal(localMillis,
+                                    BasicTimeZone.LOCAL_DST, BasicTimeZone.LOCAL_DST, offsets);
+                        }
+                    } else {
+                        // No good way to resolve ambiguous time at transition,
+                        // but following code work in most case.
+                        tz.getOffset(localMillis, true, offsets);
+
+                        if (tztype == TZTYPE_STD && offsets[1] != 0 || tztype == TZTYPE_DST && offsets[1] == 0) {
+                            // Roll back one day and try it again.
+                            // Note: This code assumes 1. timezone transition only happens once within 24 hours at max
+                            // 2. the difference of local offsets at the transition is less than 24 hours.
+                            tz.getOffset(localMillis - (24*60*60*1000), true, offsets);
+                        }
+                    }
+
+                    // Now, compare the results with parsed type, either standard or daylight saving time
+                    int resolvedSavings = offsets[1];
+                    if (tztype == TZTYPE_STD) {
+                        if (offsets[1] != 0) {
+                            // Override DST_OFFSET = 0 in the result calendar
+                            resolvedSavings = 0;
+                        }
+                    } else { // tztype == TZTYPE_DST
+                        if (offsets[1] == 0) {
+                            if (btz != null) {
+                                long time = localMillis + offsets[0];
+                                // We use the nearest daylight saving time rule.
+                                TimeZoneTransition beforeTrs, afterTrs;
+                                long beforeT = time, afterT = time;
+                                int beforeSav = 0, afterSav = 0;
+
+                                // Search for DST rule before or on the time
+                                while (true) {
+                                    beforeTrs = btz.getPreviousTransition(beforeT, true);
+                                    if (beforeTrs == null) {
+                                        break;
+                                    }
+                                    beforeT = beforeTrs.getTime() - 1;
+                                    beforeSav = beforeTrs.getFrom().getDSTSavings();
+                                    if (beforeSav != 0) {
+                                        break;
+                                    }
+                                }
+
+                                // Search for DST rule after the time
+                                while (true) {
+                                    afterTrs = btz.getNextTransition(afterT, false);
+                                    if (afterTrs == null) {
+                                        break;
+                                    }
+                                    afterT = afterTrs.getTime();
+                                    afterSav = afterTrs.getTo().getDSTSavings();
+                                    if (afterSav != 0) {
+                                        break;
+                                    }
+                                }
+
+                                if (beforeTrs != null && afterTrs != null) {
+                                    if (time - beforeT > afterT - time) {
+                                        resolvedSavings = afterSav;
+                                    } else {
+                                        resolvedSavings = beforeSav;
+                                    }
+                                } else if (beforeTrs != null && beforeSav != 0) {
+                                    resolvedSavings = beforeSav;
+                                } else if (afterTrs != null && afterSav != 0) {
+                                    resolvedSavings = afterSav;
+                                } else {
+                                    resolvedSavings = btz.getDSTSavings();
+                                }
+                            } else {
+                                resolvedSavings = tz.getDSTSavings();
+                            }
+                            if (resolvedSavings == 0) {
+                                // Final fallback
+                                resolvedSavings = millisPerHour;
+                            }
+                        }
+                    }
+                    cal.set(Calendar.ZONE_OFFSET, offsets[0]);
+                    cal.set(Calendar.DST_OFFSET, resolvedSavings);
+                }
+            }
+        }
+        // An IllegalArgumentException will be thrown by Calendar.getTime()
+        // if any fields are out of range, e.g., MONTH == 17.
+        catch (IllegalArgumentException e) {
+            parsePos.setErrorIndex(pos);
+            parsePos.setIndex(start);
+        }
+    }
+
+    /**
+     * Attempt to match the text at a given position against an array of
+     * strings.  Since multiple strings in the array may match (for
+     * example, if the array contains "a", "ab", and "abc", all will match
+     * the input string "abcd") the longest match is returned.  As a side
+     * effect, the given field of <code>cal</code> is set to the index
+     * of the best match, if there is one.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * sets the <code>cal</code> field <code>field</code> to the index
+     * of the best match, if matching succeeded.
+     * @stable ICU 2.0
+     */
+    protected int matchString(String text, int start, int field, String[] data, Calendar cal)
+    {
+        int i = 0;
+        int count = data.length;
+
+        if (field == Calendar.DAY_OF_WEEK) i = 1;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i)
+            {
+                int length = data[i].length();
+                // Always compare if we have no match yet; otherwise only compare
+                // against potentially better matches (longer strings).
+                if (length > bestMatchLength &&
+                    text.regionMatches(true, start, data[i], 0, length))
+                    {
+                        bestMatch = i;
+                        bestMatchLength = length;
+                    }
+            }
+        if (bestMatch >= 0)
+            {
+                cal.set(field, bestMatch);
+                return start + bestMatchLength;
+            }
+        return -start;
+    }
+
+    /**
+     * Attempt to match the text at a given position against an array of quarter
+     * strings.  Since multiple strings in the array may match (for
+     * example, if the array contains "a", "ab", and "abc", all will match
+     * the input string "abcd") the longest match is returned.  As a side
+     * effect, the given field of <code>cal</code> is set to the index
+     * of the best match, if there is one.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * sets the <code>cal</code> field <code>field</code> to the index
+     * of the best match, if matching succeeded.
+     * @stable ICU 2.0
+     */
+    protected int matchQuarterString(String text, int start, int field, String[] data, Calendar cal)
+    {
+        int i = 0;
+        int count = data.length;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i) {
+            int length = data[i].length();
+            // Always compare if we have no match yet; otherwise only compare
+            // against potentially better matches (longer strings).
+            if (length > bestMatchLength &&
+                text.regionMatches(true, start, data[i], 0, length)) {
+                bestMatch = i;
+                bestMatchLength = length;
+            }
+        }
+        
+        if (bestMatch >= 0) {
+            cal.set(field, bestMatch * 3);
+            return start + bestMatchLength;
+        }
+        
+        return -start;
+    }
+    
+    /**
+     * Protected method that converts one field of the input string into a
+     * numeric field value in <code>cal</code>.  Returns -start (for
+     * ParsePosition) if failed.  Subclasses may override this method to
+     * modify or add parsing capabilities.
+     * @param text the time text to be parsed.
+     * @param start where to start parsing.
+     * @param ch the pattern character for the date field text to be parsed.
+     * @param count the count of a pattern character.
+     * @param obeyCount if true, then the next field directly abuts this one,
+     * and we should use the count to know when to stop parsing.
+     * @param ambiguousYear return parameter; upon return, if ambiguousYear[0]
+     * is true, then a two-digit year was parsed and may need to be readjusted.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * set the appropriate field of <code>cal</code> with the parsed
+     * value.
+     * @stable ICU 2.0
+     */
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean allowNegative,
+                           boolean[] ambiguousYear, Calendar cal)
+    {
+        Number number = null;
+        int value = 0;
+        int i;
+        ParsePosition pos = new ParsePosition(0);
+        //int patternCharIndex = DateFormatSymbols.patternChars.indexOf(ch);c
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+
+        if (patternCharIndex == -1) {
+            return -start;
+        }
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+
+        // If there are any spaces here, skip over them.  If we hit the end
+        // of the string, then fail.
+        for (;;) {
+            if (start >= text.length()) {
+                return -start;
+            }
+            int c = UTF16.charAt(text, start);
+            if (!UCharacter.isUWhiteSpace(c)) {
+                break;
+            }
+            start += UTF16.getCharCount(c);
+        }
+        pos.setIndex(start);
+
+        // We handle a few special cases here where we need to parse
+        // a number value.  We handle further, more generic cases below.  We need
+        // to handle some of them here because some fields require extra processing on
+        // the parsed value.
+        if (patternCharIndex == 4 /*HOUR_OF_DAY1_FIELD*/ ||
+            patternCharIndex == 15 /*HOUR1_FIELD*/ ||
+            (patternCharIndex == 2 /*MONTH_FIELD*/ && count <= 2) ||
+            patternCharIndex == 1 ||
+            patternCharIndex == 8)
+            {
+                // It would be good to unify this with the obeyCount logic below,
+                // but that's going to be difficult.
+                if (obeyCount)
+                    {
+                        if ((start+count) > text.length()) return -start;
+                        number = parseInt(text, count, pos, allowNegative);
+                    }
+                else number = parseInt(text, pos, allowNegative);
+                if (number == null)
+                    return -start;
+                value = number.intValue();
+            }
+
+        switch (patternCharIndex)
+            {
+            case 0: // 'G' - ERA
+                if (count == 4) {
+                    return matchString(text, start, Calendar.ERA, formatData.eraNames, cal);
+                } else {
+                    return matchString(text, start, Calendar.ERA, formatData.eras, cal);
+                }
+            case 1: // 'y' - YEAR
+                // If there are 3 or more YEAR pattern characters, this indicates
+                // that the year value is to be treated literally, without any
+                // two-digit year adjustments (e.g., from "01" to 2001).  Otherwise
+                // we made adjustments to place the 2-digit year in the proper
+                // century, for parsed strings from "00" to "99".  Any other string
+                // is treated literally:  "2250", "-1", "1", "002".
+                /* 'yy' is the only special case, 'y' is interpreted as number. [Richard/GCL]*/
+                if (count == 2 && (pos.getIndex() - start) == 2
+                    && UCharacter.isDigit(text.charAt(start))
+                    && UCharacter.isDigit(text.charAt(start+1)))
+                    {
+                        // Assume for example that the defaultCenturyStart is 6/18/1903.
+                        // This means that two-digit years will be forced into the range
+                        // 6/18/1903 to 6/17/2003.  As a result, years 00, 01, and 02
+                        // correspond to 2000, 2001, and 2002.  Years 04, 05, etc. correspond
+                        // to 1904, 1905, etc.  If the year is 03, then it is 2003 if the
+                        // other fields specify a date before 6/18, or 1903 if they specify a
+                        // date afterwards.  As a result, 03 is an ambiguous year.  All other
+                        // two-digit years are unambiguous.
+                        int ambiguousTwoDigitYear = getDefaultCenturyStartYear() % 100;
+                        ambiguousYear[0] = value == ambiguousTwoDigitYear;
+                        value += (getDefaultCenturyStartYear()/100)*100 +
+                            (value < ambiguousTwoDigitYear ? 100 : 0);
+                    }
+                cal.set(Calendar.YEAR, value);
+                return pos.getIndex();
+            case 2: // 'M' - MONTH
+                if (count <= 2) // i.e., M or MM.
+                    {
+                        // Don't want to parse the month if it is a string
+                        // while pattern uses numeric style: M or MM.
+                        // [We computed 'value' above.]
+                        cal.set(Calendar.MONTH, value - 1);
+                        return pos.getIndex();
+                    }
+                else
+                    {
+                        // count >= 3 // i.e., MMM or MMMM
+                        // Want to be able to parse both short and long forms.
+                        // Try count == 4 first:
+                        int newStart = matchString(text, start, Calendar.MONTH,
+                                                   formatData.months, cal);
+                        if (newStart > 0) {
+                            return newStart;
+                        } else { // count == 4 failed, now try count == 3
+                            return matchString(text, start, Calendar.MONTH,
+                                               formatData.shortMonths, cal);
+                        }
+                    }
+            case 26: // 'L' - STAND_ALONE_MONTH
+                if (count <= 2) // i.e., M or MM.
+                    {
+                        // Don't want to parse the month if it is a string
+                        // while pattern uses numeric style: M or MM.
+                        // [We computed 'value' above.]
+                        cal.set(Calendar.MONTH, value - 1);
+                        return pos.getIndex();
+                    }
+                else
+                    {
+                        // count >= 3 // i.e., MMM or MMMM
+                        // Want to be able to parse both short and long forms.
+                        // Try count == 4 first:
+                        int newStart = matchString(text, start, Calendar.MONTH,
+                                                   formatData.standaloneMonths, cal);
+                        if (newStart > 0) {
+                            return newStart;
+                        } else { // count == 4 failed, now try count == 3
+                            return matchString(text, start, Calendar.MONTH,
+                                               formatData.standaloneShortMonths, cal);
+                        }
+                    }
+            case 4: // 'k' - HOUR_OF_DAY (1..24)
+                // [We computed 'value' above.]
+                if (value == cal.getMaximum(Calendar.HOUR_OF_DAY)+1) value = 0;
+                cal.set(Calendar.HOUR_OF_DAY, value);
+                return pos.getIndex();
+            case 8: // 'S' - FRACTIONAL_SECOND
+                // Fractional seconds left-justify
+                i = pos.getIndex() - start;
+                if (i < 3) {
+                    while (i < 3) {
+                        value *= 10;
+                        i++;
+                    }
+                } else {
+                    int a = 1;
+                    while (i > 3) {
+                        a *= 10;
+                        i--;
+                    }
+                    value = (value + (a>>1)) / a;
+                }
+                cal.set(Calendar.MILLISECOND, value);
+                return pos.getIndex();
+            case 9: { // 'E' - DAY_OF_WEEK
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 (EEEE) first:
+                int newStart = matchString(text, start, Calendar.DAY_OF_WEEK,
+                                           formatData.weekdays, cal);
+                if (newStart > 0) {
+                    return newStart;
+                } else { // EEEE failed, now try EEE
+                    return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                       formatData.shortWeekdays, cal);
+                }
+            }
+            case 25: { // 'c' - STAND_ALONE_DAY_OF_WEEK
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 (cccc) first:
+                int newStart = matchString(text, start, Calendar.DAY_OF_WEEK,
+                                           formatData.standaloneWeekdays, cal);
+                if (newStart > 0) {
+                    return newStart;
+                } else { // cccc failed, now try ccc
+                    return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                       formatData.standaloneShortWeekdays, cal);
+                }
+            }
+            case 14: // 'a' - AM_PM
+                return matchString(text, start, Calendar.AM_PM, formatData.ampms, cal);
+            case 15: // 'h' - HOUR (1..12)
+                // [We computed 'value' above.]
+                if (value == cal.getLeastMaximum(Calendar.HOUR)+1) value = 0;
+                cal.set(Calendar.HOUR, value);
+                return pos.getIndex();
+            case 17: // 'z' - ZONE_OFFSET
+            case 23: // 'Z' - TIMEZONE_RFC
+            case 24: // 'v' - TIMEZONE_GENERIC
+            case 29: // 'V' - TIMEZONE_SPECIAL
+                {
+                    TimeZone tz = null;
+                    int offset = 0;
+                    boolean parsed = false;
+
+                    // Step 1
+                    // Check if this is a long GMT offset string (either localized or default)
+                    Integer gmtoff = parseGMT(text, pos);
+                    if (gmtoff != null) {
+                        offset = gmtoff.intValue();
+                        parsed = true;
+                    }
+
+                    if (!parsed) {
+                        // Step 2
+                        // Check if this is an RFC822 time zone offset.
+                        // ICU supports the standard RFC822 format [+|-]HHmm
+                        // and its extended form [+|-]HHmmSS.
+                        
+                        do {
+                            int sign = 0;
+                            char signChar = text.charAt(start);
+                            if (signChar == '+') {
+                                sign = 1;
+                            } else if (signChar == '-') {
+                                sign = -1;
+                            } else {
+                                // Not an RFC822 offset string
+                                break;
+                            }
+
+                            // Parse digits
+                            int orgPos = start + 1;
+                            pos.setIndex(orgPos);
+                            number = parseInt(text, 6, pos, false);
+                            int numLen = pos.getIndex() - orgPos;
+                            if (numLen <= 0) {
+                                break;
+                            }
+
+                            // Followings are possible format (excluding sign char)
+                            // HHmmSS
+                            // HmmSS
+                            // HHmm
+                            // Hmm
+                            // HH
+                            // H
+                            int val = number.intValue();
+                            int hour = 0, min = 0, sec = 0;
+                            switch(numLen) {
+                            case 1: // H
+                            case 2: // HH
+                                hour = val;
+                                break;
+                            case 3: // Hmm
+                            case 4: // HHmm
+                                hour = val / 100;
+                                min = val % 100;
+                                break;
+                            case 5: // Hmmss
+                            case 6: // HHmmss
+                                hour = val / 10000;
+                                min = (val % 10000) / 100;
+                                sec = val % 100;
+                                break;
+                            }
+                            if (hour > 23 || min > 59 || sec > 59) {
+                                // Invalid value range
+                                break;
+                            }
+                            offset = (((hour * 60) + min) * 60 + sec) * 1000 * sign;
+                            parsed = true;
+                        } while (false);
+
+                        if (!parsed) {
+                            // Failed to parse.  Reset the position.
+                            pos.setIndex(start);
+                        }
+                    }
+
+                    if (parsed) {
+                        // offset was successfully parsed as either a long GMT string or RFC822 zone offset
+                        // string.  Create normalized zone ID for the offset.
+                        tz = ZoneMeta.getCustomTimeZone(offset);
+                        cal.setTimeZone(tz);
+                        return pos.getIndex();
+                    }
+
+                    // Step 3
+                    // At this point, check for named time zones by looking through
+                    // the locale data from the DateFormatZoneData strings.
+                    // Want to be able to parse both short and long forms.
+                    // optimize for calendar's current time zone
+                    ZoneStringInfo zsinfo = null;
+                    switch (patternCharIndex) {
+                    case 17: // 'z' - ZONE_OFFSET
+                        if (count < 4) {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
+                        } else {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificLong(text, start);
+                        }
+                        break;
+                    case 24: // 'v' - TIMEZONE_GENERIC
+                        if (count == 1) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericShort(text, start);
+                        } else if (count == 4) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericLong(text, start);
+                        }
+                        break;
+                    case 29: // 'V' - TIMEZONE_SPECIAL
+                        if (count == 1) {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
+                        } else if (count == 4) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericLocation(text, start);
+                        }
+                        break;
+                    }
+                    if (zsinfo != null) {
+                        if (zsinfo.isStandard()) {
+                            tztype = TZTYPE_STD;
+                        } else if (zsinfo.isDaylight()) {
+                            tztype = TZTYPE_DST;
+                        }
+                        tz = TimeZone.getTimeZone(zsinfo.getID());
+                        cal.setTimeZone(tz);
+                        return start + zsinfo.getString().length();
+                    }
+                    // complete failure
+                    return -start;
+                }
+
+            case 27: // 'Q' - QUARTER
+                if (count <= 2) // i.e., Q or QQ.
+                {
+                    // Don't want to parse the quarter if it is a string
+                    // while pattern uses numeric style: Q or QQ.
+                    // [We computed 'value' above.]
+                    cal.set(Calendar.MONTH, (value - 1) * 3);
+                    return pos.getIndex();
+                }
+            else
+                {
+                    // count >= 3 // i.e., QQQ or QQQQ
+                    // Want to be able to parse both short and long forms.
+                    // Try count == 4 first:
+                    int newStart = matchQuarterString(text, start, Calendar.MONTH,
+                                               formatData.quarters, cal);
+                    if (newStart > 0) {
+                        return newStart;
+                    } else { // count == 4 failed, now try count == 3
+                        return matchQuarterString(text, start, Calendar.MONTH,
+                                           formatData.shortQuarters, cal);
+                    }
+                }
+                
+            case 28: // 'q' - STANDALONE QUARTER
+                if (count <= 2) // i.e., q or qq.
+                {
+                    // Don't want to parse the quarter if it is a string
+                    // while pattern uses numeric style: q or qq.
+                    // [We computed 'value' above.]
+                    cal.set(Calendar.MONTH, (value - 1) * 3);
+                    return pos.getIndex();
+                }
+            else
+                {
+                    // count >= 3 // i.e., qqq or qqqq
+                    // Want to be able to parse both short and long forms.
+                    // Try count == 4 first:
+                    int newStart = matchQuarterString(text, start, Calendar.MONTH,
+                                               formatData.standaloneQuarters, cal);
+                    if (newStart > 0) {
+                        return newStart;
+                    } else { // count == 4 failed, now try count == 3
+                        return matchQuarterString(text, start, Calendar.MONTH,
+                                           formatData.standaloneShortQuarters, cal);
+                    }
+                }
+
+            default:
+                // case 3: // 'd' - DATE
+                // case 5: // 'H' - HOUR_OF_DAY (0..23)
+                // case 6: // 'm' - MINUTE
+                // case 7: // 's' - SECOND
+                // case 10: // 'D' - DAY_OF_YEAR
+                // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+                // case 12: // 'w' - WEEK_OF_YEAR
+                // case 13: // 'W' - WEEK_OF_MONTH
+                // case 16: // 'K' - HOUR (0..11)
+                // case 18: // 'Y' - YEAR_WOY
+                // case 19: // 'e' - DOW_LOCAL
+                // case 20: // 'u' - EXTENDED_YEAR
+                // case 21: // 'g' - JULIAN_DAY
+                // case 22: // 'A' - MILLISECONDS_IN_DAY
+
+                // Handle "generic" fields
+                if (obeyCount)
+                    {
+                        if ((start+count) > text.length()) return -start;
+                        number = parseInt(text, count, pos, allowNegative);
+                    }
+                else number = parseInt(text, pos, allowNegative);
+                if (number != null) {
+                    cal.set(field, number.intValue());
+                    return pos.getIndex();
+                }
+                return -start;
+            }
+    }
+
+    /**
+     * Parse an integer using numberFormat.  This method is semantically
+     * const, but actually may modify fNumberFormat.
+     */
+    private Number parseInt(String text,
+                            ParsePosition pos,
+                            boolean allowNegative) {
+        return parseInt(text, -1, pos, allowNegative);
+    }
+    
+    /**
+     * Parse an integer using numberFormat up to maxDigits.
+     */
+    private Number parseInt(String text,
+                            int maxDigits,
+                            ParsePosition pos,
+                            boolean allowNegative) {
+        Number number;
+        int oldPos = pos.getIndex();
+        if (allowNegative) {
+            number = numberFormat.parse(text, pos);
+        } else {
+            // Invalidate negative numbers
+            if (numberFormat instanceof DecimalFormat) {
+                String oldPrefix = ((DecimalFormat)numberFormat).getNegativePrefix();
+                ((DecimalFormat)numberFormat).setNegativePrefix(SUPPRESS_NEGATIVE_PREFIX);
+                number = numberFormat.parse(text, pos);
+                ((DecimalFormat)numberFormat).setNegativePrefix(oldPrefix);
+            } else {
+                boolean dateNumberFormat = (numberFormat instanceof DateNumberFormat);
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)numberFormat).setParsePositiveOnly(true);
+                }
+                number = numberFormat.parse(text, pos);                
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)numberFormat).setParsePositiveOnly(false);
+                }
+            }
+        }
+        if (maxDigits > 0) {
+            // adjust the result to fit into
+            // the maxDigits and move the position back
+            int nDigits = pos.getIndex() - oldPos;
+            if (nDigits > maxDigits) {
+                double val = number.doubleValue();
+                nDigits -= maxDigits;
+                while (nDigits > 0) {
+                    val /= 10;
+                    nDigits--;
+                }
+                pos.setIndex(oldPos + maxDigits);
+                number = new Integer((int)val);
+            }
+        }
+        return number;
+    }
+
+    
+    /**
+     * Translate a pattern, mapping each character in the from string to the
+     * corresponding character in the to string.
+     */
+    private String translatePattern(String pat, String from, String to) {
+        StringBuffer result = new StringBuffer();
+        boolean inQuote = false;
+        for (int i = 0; i < pat.length(); ++i) {
+            char c = pat.charAt(i);
+            if (inQuote) {
+                if (c == '\'')
+                    inQuote = false;
+            }
+            else {
+                if (c == '\'')
+                    inQuote = true;
+                else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                    int ci = from.indexOf(c);
+                    if (ci != -1) {
+                        c = to.charAt(ci);
+                    }
+                    // do not worry on translatepattern if the character is not listed
+                    // we do the validity check elsewhere
+                }
+            }
+            result.append(c);
+        }
+        if (inQuote)
+            throw new IllegalArgumentException("Unfinished quote in pattern");
+        return result.toString();
+    }
+
+    /**
+     * Return a pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Return a localized pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return translatePattern(pattern,
+                                DateFormatSymbols.patternChars,
+                                formatData.localPatternChars);
+    }
+
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pat)
+    {
+        this.pattern = pat;
+        setLocale(null, null);
+        // reset parsed pattern items
+        patternItems = null;
+    }
+
+    /**
+     * Apply the given localized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pat) {
+        this.pattern = translatePattern(pat,
+                                        formatData.localPatternChars,
+                                        DateFormatSymbols.patternChars);
+        setLocale(null, null);
+    }
+
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols getDateFormatSymbols()
+    {
+        return (DateFormatSymbols)formatData.clone();
+    }
+
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatSymbols the new symbols
+     * @stable ICU 2.0
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
+    {
+        this.formatData = (DateFormatSymbols)newFormatSymbols.clone();
+        gmtfmtCache = null;
+    }
+
+    /**
+     * Method for subclasses to access the DateFormatSymbols.
+     * @stable ICU 2.0
+     */
+    protected DateFormatSymbols getSymbols() {
+        return formatData;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        SimpleDateFormat other = (SimpleDateFormat) super.clone();
+        other.formatData = (DateFormatSymbols) formatData.clone();
+        return other;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the SimpleDateFormat object
+     * @stable ICU 2.0
+     */
+    public int hashCode()
+    {
+        return pattern.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (!super.equals(obj)) return false; // super does class check
+        SimpleDateFormat that = (SimpleDateFormat) obj;
+        return (pattern.equals(that.pattern)
+                && formatData.equals(that.formatData));
+    }
+
+    /**
+     * Override writeObject.
+     */
+    private void writeObject(ObjectOutputStream stream) throws IOException{
+        if (defaultCenturyStart == null) {
+            // if defaultCenturyStart is not yet initialized,
+            // calculate and set value before serialization.
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        stream.defaultWriteObject();
+    }
+    
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // don't have old serial data to test with
+        if (serialVersionOnStream < 1) {
+            // didn't have defaultCenturyStart field
+            defaultCenturyBase = System.currentTimeMillis();
+        }
+        ///CLOVER:ON
+        else {
+            // fill in dependent transient field
+            parseAmbiguousDatesAsAfter(defaultCenturyStart);
+        }
+        serialVersionOnStream = currentSerialVersion;
+        locale = getLocale(ULocale.VALID_LOCALE);
+
+        initLocalZeroPaddingNumberFormat();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Format the object to an attributed string, and return the corresponding iterator
+     * Overrides superclass method.
+     * 
+     * @param obj The object to format
+     * @return <code>AttributedCharacterIterator</code> describing the formatted value.
+     * 
+     * @stable ICU 3.8
+     */
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        Calendar cal = calendar;
+        if (obj instanceof Calendar) {
+            cal = (Calendar)obj;
+        } else if (obj instanceof Date) {
+            calendar.setTime((Date)obj);
+        } else if (obj instanceof Number) {
+            calendar.setTimeInMillis(((Number)obj).longValue());
+        } else { 
+            throw new IllegalArgumentException("Cannot format given Object as a Date");
+        }
+        StringBuffer toAppendTo = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        List attributes = new LinkedList();
+        format(cal, toAppendTo, pos, attributes);
+
+        AttributedString as = new AttributedString(toAppendTo.toString());
+        
+        // add DateFormat field attributes to the AttributedString
+        for (int i = 0; i < attributes.size(); i++) {
+            FieldPosition fp = (FieldPosition) attributes.get(i);
+            Format.Field attribute = fp.getFieldAttribute();
+            as.addAttribute(attribute, attribute, fp.getBeginIndex(), fp.getEndIndex());
+        }
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+//#endif
+
+
+    /**
+     * Get the locale of this simple date formatter.
+     * It is package accessible. also used in DateIntervalFormat.
+     *
+     * @return   locale in this simple date formatter
+     */
+    ULocale getLocale() 
+    {
+        return locale;
+    }
+
+
+    
+    /**
+     * Check whether the 'field' is smaller than all the fields covered in
+     * pattern, return true if it is.
+     * The sequence of calendar field,
+     * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
+     * @param field    the calendar field need to check against
+     * @return         true if the 'field' is smaller than all the fields 
+     *                 covered in pattern. false otherwise.
+     */
+
+    boolean isFieldUnitIgnored(int field) {
+        return isFieldUnitIgnored(pattern, field);
+    }
+
+
+    /*
+     * Check whether the 'field' is smaller than all the fields covered in
+     * pattern, return true if it is.
+     * The sequence of calendar field,
+     * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
+     * @param pattern  the pattern to check against
+     * @param field    the calendar field need to check against
+     * @return         true if the 'field' is smaller than all the fields 
+     *                 covered in pattern. false otherwise.
+     * @internal ICU 4.0
+     */
+    static boolean isFieldUnitIgnored(String pattern, int field) {
+        int fieldLevel = CALENDAR_FIELD_TO_LEVEL[field];
+        int level;
+        char ch;
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        for (int i = 0; i < pattern.length(); ++i) {
+            ch = pattern.charAt(i);
+            if (ch != prevCh && count > 0) {
+                level = PATTERN_CHAR_TO_LEVEL[prevCh - PATTERN_CHAR_BASE];
+                if ( fieldLevel <= level ) {
+                    return false;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                if ((i+1) < pattern.length() && pattern.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if ( ! inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/) 
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                prevCh = ch;
+                ++count;
+            }
+        }
+        if ( count > 0 ) {
+            // last item
+            level = PATTERN_CHAR_TO_LEVEL[prevCh - PATTERN_CHAR_BASE];
+                if ( fieldLevel <= level ) {
+                    return false;
+                }
+        }
+        return true;
+    }
+
+
+    /**
+     * Format date interval by algorithm. 
+     * It is supposed to be used only by CLDR survey tool.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval stirng
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval stirng
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return                  Reference to 'appendTo' parameter.
+     * @internal ICU 4.0
+     */
+    public final StringBuffer intervalFormatByAlgorithm(Calendar fromCalendar,
+                                                        Calendar toCalendar,
+                                                        StringBuffer appendTo,
+                                                        FieldPosition pos)
+                              throws IllegalArgumentException
+    {
+        // not support different calendar types and time zones
+        if ( !fromCalendar.isEquivalentTo(toCalendar) ) {
+            throw new IllegalArgumentException("can not format on two different calendars");
+        }
+     
+        Object[] items = getPatternItems();
+        int diffBegin = -1;
+        int diffEnd = -1;
+
+        /* look for different formatting string range */
+        // look for start of difference
+        try {
+            for (int i = 0; i < items.length; i++) {
+                if ( diffCalFieldValue(fromCalendar, toCalendar, items, i) ) {
+                    diffBegin = i;
+                    break;
+                }
+            } 
+        
+            if ( diffBegin == -1 ) { 
+                // no difference, single date format
+                return format(fromCalendar, appendTo, pos);
+            }
+    
+            // look for end of difference
+            for (int i = items.length-1; i >= diffBegin; i--) {
+                if ( diffCalFieldValue(fromCalendar, toCalendar, items, i) ) {
+                    diffEnd = i;
+                    break;
+                }
+            }
+        } catch ( IllegalArgumentException e ) {
+            throw new IllegalArgumentException(e.toString());
+        }
+
+        // full range is different
+        if ( diffBegin == 0 && diffEnd == items.length-1 ) {
+            format(fromCalendar, appendTo, pos);
+            appendTo.append(" \u2013 "); // default separator
+            format(toCalendar, appendTo, pos);
+            return appendTo;
+        }
+
+
+        /* search for largest calendar field within the different range */
+        int highestLevel = 1000;
+        for (int i = diffBegin; i <= diffEnd; i++) {
+            if ( items[i] instanceof String) {
+                continue;
+            } 
+            PatternItem item = (PatternItem)items[i];
+            char ch = item.type; 
+            int patternCharIndex = -1;
+            if ('A' <= ch && ch <= 'z') {
+                patternCharIndex = PATTERN_CHAR_TO_LEVEL[(int)ch - PATTERN_CHAR_BASE];
+            }
+    
+            if (patternCharIndex == -1) {
+                throw new IllegalArgumentException("Illegal pattern character " +
+                                                   "'" + ch + "' in \"" +
+                                                   new String(pattern) + '"');
+            }
+    
+            if ( patternCharIndex < highestLevel ) {
+                highestLevel = patternCharIndex;
+            }
+        }
+
+        /* re-calculate diff range, including those calendar field which
+           is in lower level than the largest calendar field covered
+           in diff range calculated. */
+        try {
+            for (int i = 0; i < diffBegin; i++) {
+                if ( lowerLevel(items, i, highestLevel) ) {
+                    diffBegin = i;
+                    break;
+                }
+            }
+    
+    
+            for (int i = items.length-1; i > diffEnd; i--) {
+                if ( lowerLevel(items, i, highestLevel) ) {
+                    diffEnd = i;
+                    break;
+                }
+            }
+        } catch ( IllegalArgumentException e ) {
+            throw new IllegalArgumentException(e.toString());
+        }
+
+
+        // full range is different
+        if ( diffBegin == 0 && diffEnd == items.length-1 ) {
+            format(fromCalendar, appendTo, pos);
+            appendTo.append(" \u2013 "); // default separator
+            format(toCalendar, appendTo, pos);
+            return appendTo;
+        }
+
+
+        // formatting
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        // formatting date 1
+        for (int i = 0; i <= diffEnd; i++) {
+            if (items[i] instanceof String) {
+                appendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+                if (useFastFormat) {
+                    subFormat(appendTo, item.type, item.length, appendTo.length(), pos, fromCalendar);
+                } else {
+                    appendTo.append(subFormat(item.type, item.length, appendTo.length(), pos, formatData, fromCalendar));
+                }
+            }
+        }
+
+        appendTo.append(" \u2013 "); // default separator
+
+        // formatting date 2
+        for (int i = diffBegin; i < items.length; i++) {
+            if (items[i] instanceof String) {
+                appendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+                if (useFastFormat) {
+                    subFormat(appendTo, item.type, item.length, appendTo.length(), pos, toCalendar);
+                } else {
+                    appendTo.append(subFormat(item.type, item.length, appendTo.length(), pos, formatData, toCalendar));
+                }
+            }
+        }
+        return appendTo;
+    }
+
+
+    /**
+     * check whether the i-th item in 2 calendar is in different value.
+     *
+     * It is supposed to be used only by CLDR survey tool.
+     * It is used by intervalFormatByAlgorithm().
+     *
+     * @param fromCalendar   one calendar
+     * @param toCalendar     the other calendar
+     * @param items          pattern items
+     * @param i              the i-th item in pattern items
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return               true is i-th item in 2 calendar is in different 
+     *                       value, false otherwise.
+     */
+    private boolean diffCalFieldValue(Calendar fromCalendar,
+                                      Calendar toCalendar,
+                                      Object[] items,
+                                      int i) throws IllegalArgumentException {
+        if ( items[i] instanceof String) {
+            return false;
+        } 
+        PatternItem item = (PatternItem)items[i];
+        char ch = item.type; 
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+   
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+  
+        final int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = fromCalendar.get(field);
+        int value_2 = toCalendar.get(field);
+        if ( value != value_2 ) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * check whether the i-th item's level is lower than the input 'level'
+     *
+     * It is supposed to be used only by CLDR survey tool.
+     * It is used by intervalFormatByAlgorithm().
+     *
+     * @param items  the pattern items
+     * @param i      the i-th item in pattern items
+     * @param level  the level with which the i-th pattern item compared to
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return       true if i-th pattern item is lower than 'level',
+     *               false otherwise
+     */
+    private boolean lowerLevel(Object[] items, int i, int level) 
+                    throws IllegalArgumentException {
+        if ( items[i] instanceof String) {
+            return false;
+        } 
+        PatternItem item = (PatternItem)items[i];
+        char ch = item.type; 
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_LEVEL[(int)ch - PATTERN_CHAR_BASE];
+        }
+    
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+    
+        if ( patternCharIndex >= level ) {
+            return true;
+        }    
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringCharacterIterator.java b/src/com/ibm/icu/text/StringCharacterIterator.java
new file mode 100644
index 0000000..00fa60f
--- /dev/null
+++ b/src/com/ibm/icu/text/StringCharacterIterator.java
@@ -0,0 +1,281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+// NOTE:  This class is identical to java.text.StringCharacterIterator
+// in JDK 1.2.  It's copied here because the JDK 1.1 version of
+// StringCharacterIterator has a bug that prevents it from working
+// right with RuleBasedBreakIterator.  This class is unnecessary
+// when using RuleBasedBreakIterator with JDK 1.2.
+
+package com.ibm.icu.text;
+import java.text.CharacterIterator;
+
+/**
+ * <code>StringCharacterIterator</code> implements the
+ * <code>CharacterIterater</code> protocol for a <code>String</code>.
+ * The <code>StringCharacterIterator</code> class iterates over the
+ * entire <code>String</code>.
+ *
+ * @see CharacterIterator
+ * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+ */
+///CLOVER:OFF
+public final class StringCharacterIterator implements CharacterIterator
+{
+    private String text;
+    private int begin;
+    private int end;
+    // invariant: begin <= pos <= end
+    private int pos;
+
+    /**
+     * Constructs an iterator with an initial index of 0.
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text)
+    {
+        this(text, 0);
+    }
+
+    /**
+     * Constructs an iterator with the specified initial index.
+     *
+     * @param  text   The String to be iterated over
+     * @param  pos    Initial iterator position     
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text, int pos)
+    {
+    this(text, 0, text.length(), pos);
+    }
+
+    /**
+     * Constructs an iterator over the given range of the given string, with the
+     * index set at the specified position.
+     *
+     * @param  text   The String to be iterated over
+     * @param  begin  Index of the first character
+     * @param  end    Index of the character following the last character
+     * @param  pos    Initial iterator position 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text, int begin, int end, int pos) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+
+        if (begin < 0 || begin > end || end > text.length()) {
+            throw new IllegalArgumentException("Invalid substring range");
+        }
+
+        if (pos < begin || pos > end) {
+            throw new IllegalArgumentException("Invalid position");
+        }
+
+        this.begin = begin;
+        this.end = end;
+        this.pos = pos;
+    }
+
+    /**
+     * Reset this iterator to point to a new string.  This package-visible
+     * method is used by other java.text classes that want to avoid allocating
+     * new StringCharacterIterator objects every time their setText method
+     * is called.
+     *
+     * @param  text   The String to be iterated over 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public void setText(String text) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+        this.begin = 0;
+        this.end = text.length();
+        this.pos = 0;
+    }
+
+    /**
+     * Implements CharacterIterator.first() for String.
+     * @see CharacterIterator#first 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char first()
+    {
+        pos = begin;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.last() for String.
+     * @see CharacterIterator#last 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char last()
+    {
+        if (end != begin) {
+            pos = end - 1;
+        } else {
+            pos = end;
+        }
+        return current();
+     }
+
+    /**
+     * Implements CharacterIterator.setIndex() for String.
+     * @see CharacterIterator#setIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char setIndex(int p)
+    {
+    if (p < begin || p > end) {
+            throw new IllegalArgumentException("Invalid index");
+    }
+        pos = p;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.current() for String.
+     * @see CharacterIterator#current 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char current()
+    {
+        if (pos >= begin && pos < end) {
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.next() for String.
+     * @see CharacterIterator#next 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char next()
+    {
+        if (pos < end - 1) {
+            pos++;
+            return text.charAt(pos);
+        }
+        else {
+            pos = end;
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.previous() for String.
+     * @see CharacterIterator#previous 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char previous()
+    {
+        if (pos > begin) {
+            pos--;
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.getBeginIndex() for String.
+     * @see CharacterIterator#getBeginIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getBeginIndex()
+    {
+        return begin;
+    }
+
+    /**
+     * Implements CharacterIterator.getEndIndex() for String.
+     * @see CharacterIterator#getEndIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getEndIndex()
+    {
+        return end;
+    }
+
+    /**
+     * Implements CharacterIterator.getIndex() for String.
+     * @see CharacterIterator#getIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getIndex()
+    {
+        return pos;
+    }
+
+    /**
+     * Compares the equality of two StringCharacterIterator objects.
+     * @param obj the StringCharacterIterator object to be compared with.
+     * @return true if the given obj is the same as this
+     * StringCharacterIterator object; false otherwise. 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof StringCharacterIterator)) {
+            return false;
+        }
+
+        StringCharacterIterator that = (StringCharacterIterator) obj;
+
+        if (hashCode() != that.hashCode()) {
+            return false;
+        }
+        if (!text.equals(that.text)) {
+            return false;
+        }
+        if (pos != that.pos || begin != that.begin || end != that.end) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Computes a hashcode for this iterator.
+     * @return A hash code 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int hashCode()
+    {
+        return text.hashCode() ^ pos ^ begin ^ end;
+    }
+
+    /**
+     * Creates a copy of this iterator.
+     * @return A copy of this 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public Object clone()
+    {
+        try {
+            StringCharacterIterator other
+            = (StringCharacterIterator) super.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+}
+///CLOVER:ON
diff --git a/src/com/ibm/icu/text/StringMatcher.java b/src/com/ibm/icu/text/StringMatcher.java
new file mode 100644
index 0000000..eefcc4c
--- /dev/null
+++ b/src/com/ibm/icu/text/StringMatcher.java
@@ -0,0 +1,289 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * An object that matches a fixed input string, implementing the
+ * UnicodeMatcher API.  This object also implements the
+ * UnicodeReplacer API, allowing it to emit the matched text as
+ * output.  Since the match text may contain flexible match elements,
+ * such as UnicodeSets, the emitted text is not the match pattern, but
+ * instead a substring of the actual matched text.  Following
+ * convention, the output text is the leftmost match seen up to this
+ * point.
+ *
+ * A StringMatcher may represent a segment, in which case it has a
+ * positive segment number.  This affects how the matcher converts
+ * itself to a pattern but does not otherwise affect its function.
+ *
+ * A StringMatcher that is not a segment should not be used as a
+ * UnicodeReplacer.
+ */
+class StringMatcher implements UnicodeMatcher, UnicodeReplacer {
+
+    /**
+     * The text to be matched.
+     */
+    private String pattern;
+
+    /**
+     * Start offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchStart;
+    
+    /**
+     * Limit offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchLimit;
+
+    /**
+     * The segment number, 1-based, or 0 if not a segment.
+     */
+    private int segmentNumber;
+
+    /**
+     * Context object that maps stand-ins to matcher and replacer
+     * objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a matcher that matches the given pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        data = theData;
+        pattern = theString;
+        matchStart = matchLimit = -1;
+        segmentNumber = segmentNum;
+    }
+
+    /**
+     * Construct a matcher that matches a substring of the given
+     * pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param start first character of theString to be matched
+     * @param limit index after the last character of theString to be
+     * matched.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int start,
+                         int limit,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        this(theString.substring(start, limit), segmentNum, theData);
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+        int i;
+        int[] cursor = new int[] { offset[0] };
+        if (limit < cursor[0]) {
+            // Match in the reverse direction
+            for (i=pattern.length()-1; i>=0; --i) {
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    if (cursor[0] > limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        --cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position, but adjust for a normal
+            // forward start, limit, and only if a prior match does not
+            // exist -- we want the rightmost match.
+            if (matchStart < 0) {
+                matchStart = cursor[0]+1;
+                matchLimit = offset[0]+1;
+            }
+        } else {
+            for (i=0; i<pattern.length(); ++i) {
+                if (incremental && cursor[0] == limit) {
+                    // We've reached the context limit without a mismatch and
+                    // without completing our match.
+                    return U_PARTIAL_MATCH;
+                }
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    // Don't need the cursor < limit check if
+                    // incremental is true (because it's done above); do need
+                    // it otherwise.
+                    if (cursor[0] < limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        ++cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position
+            matchStart = offset[0];
+            matchLimit = cursor[0];
+        }
+
+        offset[0] = cursor[0];
+        return U_MATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append('(');
+        }
+        for (int i=0; i<pattern.length(); ++i) {
+            char keyChar = pattern.charAt(i); // OK; see note (1) above
+            UnicodeMatcher m = data.lookupMatcher(keyChar);
+            if (m == null) {
+                Utility.appendToRule(result, keyChar, false, escapeUnprintable, quoteBuf);
+            } else {
+                Utility.appendToRule(result, m.toPattern(escapeUnprintable),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append(')');
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(result, -1,
+                             true, escapeUnprintable, quoteBuf);
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public boolean matchesIndexValue(int v) {
+        if (pattern.length() == 0) {
+            return true;
+        }
+        int c = UTF16.charAt(pattern, 0);
+        UnicodeMatcher m = data.lookupMatcher(c);
+        return (m == null) ? ((c & 0xFF) == v) : m.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<pattern.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(pattern, i);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        int outLen = 0;
+
+        // Copy segment with out-of-band data
+        int dest = limit;
+        // If there was no match, that means that a quantifier
+        // matched zero-length.  E.g., x (a)* y matched "xy".
+        if (matchStart >= 0) {
+            if (matchStart != matchLimit) {
+                text.copy(matchStart, matchLimit, dest);
+                outLen = matchLimit - matchStart;
+            }
+        }
+
+        text.replace(start, limit, ""); // delete original text
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        // assert(segmentNumber > 0);
+        StringBuffer rule = new StringBuffer("$");
+        Utility.appendNumber(rule, segmentNumber, 10, 1);
+        return rule.toString();
+    }
+
+    /**
+     * Remove any match data.  This must be called before performing a
+     * set of matches with this segment.
+     */
+    public void resetMatch() {
+        matchStart = matchLimit = -1;
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        // The output of this replacer varies; it is the source text between
+        // matchStart and matchLimit.  Since this varies depending on the
+        // input text, we can't compute it here.  We can either do nothing
+        // or we can add ALL characters to the set.  It's probably more useful
+        // to do nothing.
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringPrep.java b/src/com/ibm/icu/text/StringPrep.java
new file mode 100644
index 0000000..242ddfb
--- /dev/null
+++ b/src/com/ibm/icu/text/StringPrep.java
@@ -0,0 +1,441 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.StringPrepDataReader;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UBiDiProps;
+
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+ * StringPrep API implements the StingPrep framework as described by 
+ * <a href="http://www.ietf.org/rfc/rfc3454.txt">RFC 3454</a>.
+ * StringPrep prepares Unicode strings for use in network protocols.
+ * Profiles of StingPrep are set of rules and data according to which the
+ * Unicode Strings are prepared. Each profiles contains tables which describe
+ * how a code point should be treated. The tables are broadly classied into
+ * <ul>
+ *     <li> Unassigned Table: Contains code points that are unassigned 
+ *          in the Unicode Version supported by StringPrep. Currently 
+ *          RFC 3454 supports Unicode 3.2. </li>
+ *     <li> Prohibited Table: Contains code points that are prohibted from
+ *          the output of the StringPrep processing function. </li>
+ *     <li> Mapping Table: Contains code ponts that are deleted from the output or case mapped. </li>
+ * </ul>
+ * 
+ * The procedure for preparing Unicode strings:
+ * <ol>
+ *      <li> Map: For each character in the input, check if it has a mapping
+ *           and, if so, replace it with its mapping. </li>
+ *      <li> Normalize: Possibly normalize the result of step 1 using Unicode
+ *           normalization. </li>
+ *      <li> Prohibit: Check for any characters that are not allowed in the
+ *           output.  If any are found, return an error.</li>
+ *      <li> Check bidi: Possibly check for right-to-left characters, and if
+ *           any are found, make sure that the whole string satisfies the
+ *           requirements for bidirectional strings.  If the string does not
+ *           satisfy the requirements for bidirectional strings, return an
+ *           error.  </li>
+ * </ol>
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public final class StringPrep {
+    /** 
+     * Option to prohibit processing of unassigned code points in the input
+     * 
+     * @see   #prepare
+     * @stable ICU 2.8
+     */
+    public static final int DEFAULT = 0x0000;
+
+    /** 
+     * Option to allow processing of unassigned code points in the input
+     * 
+     * @see   #prepare
+     * @stable ICU 2.8
+     */
+    public static final int ALLOW_UNASSIGNED = 0x0001;
+    
+    private static final int UNASSIGNED        = 0x0000; 
+    private static final int MAP               = 0x0001; 
+    private static final int PROHIBITED        = 0x0002; 
+    private static final int DELETE            = 0x0003;
+    private static final int TYPE_LIMIT        = 0x0004;
+    
+    private static final int NORMALIZATION_ON  = 0x0001;
+    private static final int CHECK_BIDI_ON     = 0x0002;
+    
+    private static final int TYPE_THRESHOLD       = 0xFFF0;
+    private static final int MAX_INDEX_VALUE      = 0x3FBF;   /*16139*/ 
+    //private static final int MAX_INDEX_TOP_LENGTH = 0x0003;
+    
+    /* indexes[] value names */
+    private static final int INDEX_TRIE_SIZE                  =  0; /* number of bytes in normalization trie */
+    private static final int INDEX_MAPPING_DATA_SIZE          =  1; /* The array that contains the mapping   */
+    private static final int NORM_CORRECTNS_LAST_UNI_VERSION  =  2; /* The index of Unicode version of last entry in NormalizationCorrections.txt */ 
+    private static final int ONE_UCHAR_MAPPING_INDEX_START    =  3; /* The starting index of 1 UChar mapping index in the mapping data array */
+    private static final int TWO_UCHARS_MAPPING_INDEX_START   =  4; /* The starting index of 2 UChars mapping index in the mapping data array */
+    private static final int THREE_UCHARS_MAPPING_INDEX_START =  5;
+    private static final int FOUR_UCHARS_MAPPING_INDEX_START  =  6;
+    private static final int OPTIONS                          =  7; /* Bit set of options to turn on in the profile */
+    private static final int INDEX_TOP                        = 16;                          /* changing this requires a new formatVersion */
+   
+   
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int DATA_BUFFER_SIZE = 25000;
+    
+    // CharTrie implmentation for reading the trie data
+    private CharTrie sprepTrie;
+    // Indexes read from the data file
+    private int[] indexes;
+    // mapping data read from the data file
+    private char[] mappingData;
+    // format version of the data file
+    //private byte[] formatVersion;
+    // the version of Unicode supported by the data file
+    private VersionInfo sprepUniVer;
+    // the Unicode version of last entry in the
+    // NormalizationCorrections.txt file if normalization
+    // is turned on 
+    private VersionInfo normCorrVer;
+    // Option to turn on Normalization
+    private boolean doNFKC;
+    // Option to turn on checking for BiDi rules
+    private boolean checkBiDi;
+    // bidi properties
+    private UBiDiProps bdp;
+    
+    private char getCodePointValue(int ch){
+        return sprepTrie.getCodePointValue(ch);
+    }
+  
+    private static VersionInfo getVersionInfo(int comp){
+        int micro = comp & 0xFF;
+        int milli =(comp >> 8)  & 0xFF;
+        int minor =(comp >> 16) & 0xFF;
+        int major =(comp >> 24) & 0xFF;
+        return VersionInfo.getInstance(major,minor,milli,micro);
+    }
+    private static VersionInfo getVersionInfo(byte[] version){
+        if(version.length != 4){
+            return null;
+        }
+        return VersionInfo.getInstance((int)version[0],(int) version[1],(int) version[2],(int) version[3]);
+    }
+    /**
+     * Creates an StringPrep object after reading the input stream.
+     * The object does not hold a reference to the input steam, so the stream can be
+     * closed after the method returns.
+     * 
+     * @param inputStream The stream for reading the StringPrep profile binarySun 
+     * @throws IOException
+     * @stable ICU 2.8
+     */
+    public StringPrep(InputStream inputStream) throws IOException{
+
+        BufferedInputStream b = new BufferedInputStream(inputStream,DATA_BUFFER_SIZE);
+  
+        StringPrepDataReader reader = new StringPrepDataReader(b);
+        
+        // read the indexes            
+        indexes = reader.readIndexes(INDEX_TOP);
+   
+        byte[] sprepBytes = new byte[indexes[INDEX_TRIE_SIZE]];
+   
+
+        //indexes[INDEX_MAPPING_DATA_SIZE] store the size of mappingData in bytes           
+        mappingData = new char[indexes[INDEX_MAPPING_DATA_SIZE]/2]; 
+        // load the rest of the data data and initialize the data members
+        reader.read(sprepBytes,mappingData);
+                                   
+        sprepTrie = new CharTrie(new ByteArrayInputStream(sprepBytes), null);
+              
+        // get the data format version                           
+        /*formatVersion = */reader.getDataFormatVersion();
+ 
+        // get the options
+        doNFKC            = ((indexes[OPTIONS] & NORMALIZATION_ON) > 0);
+        checkBiDi         = ((indexes[OPTIONS] & CHECK_BIDI_ON) > 0);
+        sprepUniVer   = getVersionInfo(reader.getUnicodeVersion());
+        normCorrVer   = getVersionInfo(indexes[NORM_CORRECTNS_LAST_UNI_VERSION]);
+        VersionInfo normUniVer = Normalizer.getUnicodeVersion();
+        if(normUniVer.compareTo(sprepUniVer) < 0 && /* the Unicode version of SPREP file must be less than the Unicode Vesion of the normalization data */
+           normUniVer.compareTo(normCorrVer) < 0 && /* the Unicode version of the NormalizationCorrections.txt file should be less than the Unicode Vesion of the normalization data */
+           ((indexes[OPTIONS] & NORMALIZATION_ON) > 0) /* normalization turned on*/
+           ){
+            throw new IOException("Normalization Correction version not supported");
+        }
+        b.close();
+        
+        if(checkBiDi) {
+            bdp=UBiDiProps.getSingleton();
+        }
+    }
+ 
+    private static final class Values{
+        boolean isIndex;
+        int value;
+        int type;
+        public void reset(){
+            isIndex = false;
+            value = 0;
+            type = -1;
+        }
+    }
+
+    private static final void getValues(char trieWord,Values values){
+        values.reset();
+        if(trieWord == 0){
+            /* 
+             * Initial value stored in the mapping table 
+             * just return TYPE_LIMIT .. so that
+             * the source codepoint is copied to the destination
+             */
+            values.type = TYPE_LIMIT;
+        }else if(trieWord >= TYPE_THRESHOLD){
+            values.type = (trieWord - TYPE_THRESHOLD);
+        }else{
+            /* get the type */
+            values.type = MAP;
+            /* ascertain if the value is index or delta */
+            if((trieWord & 0x02)>0){
+                values.isIndex = true;
+                values.value = trieWord  >> 2; //mask off the lower 2 bits and shift
+
+            }else{
+                values.isIndex = false;
+                values.value = ((int)(trieWord<<16))>>16;
+                values.value =  (values.value >> 2);
+
+            }
+ 
+            if((trieWord>>2) == MAX_INDEX_VALUE){
+                values.type = DELETE;
+                values.isIndex = false;
+                values.value = 0;
+            }
+        }
+    }
+
+
+
+    private StringBuffer map( UCharacterIterator iter, int options)
+                            throws StringPrepParseException{
+    
+        Values val = new Values();
+        char result = 0;
+        int ch  = UCharacterIterator.DONE;
+        StringBuffer dest = new StringBuffer();
+        boolean allowUnassigned = ((options & ALLOW_UNASSIGNED)>0);
+        
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            
+            result = getCodePointValue(ch);
+            getValues(result,val);
+
+            // check if the source codepoint is unassigned
+            if(val.type == UNASSIGNED && allowUnassigned == false){
+                 throw new StringPrepParseException("An unassigned code point was found in the input",
+                                          StringPrepParseException.UNASSIGNED_ERROR,
+                                          iter.getText(),iter.getIndex());    
+            }else if((val.type == MAP)){
+                int index, length;
+
+                if(val.isIndex){
+                    index = val.value;
+                    if(index >= indexes[ONE_UCHAR_MAPPING_INDEX_START] &&
+                             index < indexes[TWO_UCHARS_MAPPING_INDEX_START]){
+                        length = 1;
+                    }else if(index >= indexes[TWO_UCHARS_MAPPING_INDEX_START] &&
+                             index < indexes[THREE_UCHARS_MAPPING_INDEX_START]){
+                        length = 2;
+                    }else if(index >= indexes[THREE_UCHARS_MAPPING_INDEX_START] &&
+                             index < indexes[FOUR_UCHARS_MAPPING_INDEX_START]){
+                        length = 3;
+                    }else{
+                        length = mappingData[index++];
+                    }
+                    /* copy mapping to destination */
+                    dest.append(mappingData,index,length);                    
+                    continue;
+                    
+                }else{
+                    ch -= val.value;
+                }
+            }else if(val.type == DELETE){
+                // just consume the codepoint and contine
+                continue;
+            }
+            //copy the source into destination
+            UTF16.append(dest,ch);
+        }
+        
+        return dest;
+    }
+
+
+    private StringBuffer normalize(StringBuffer src){
+        /*
+         * Option UNORM_BEFORE_PRI_29:
+         *
+         * IDNA as interpreted by IETF members (see unicode mailing list 2004H1)
+         * requires strict adherence to Unicode 3.2 normalization,
+         * including buggy composition from before fixing Public Review Issue #29.
+         * Note that this results in some valid but nonsensical text to be
+         * either corrupted or rejected, depending on the text.
+         * See http://www.unicode.org/review/resolved-pri.html#pri29
+         * See unorm.cpp and cnormtst.c
+         */
+        return new StringBuffer(
+            Normalizer.normalize(
+                src.toString(),
+                Normalizer.NFKC,
+                Normalizer.UNICODE_3_2|NormalizerImpl.BEFORE_PRI_29));
+    }
+    /*
+    boolean isLabelSeparator(int ch){
+        int result = getCodePointValue(ch);
+        if( (result & 0x07)  == LABEL_SEPARATOR){
+            return true;
+        }
+        return false;
+    }
+    */
+     /*
+       1) Map -- For each character in the input, check if it has a mapping
+          and, if so, replace it with its mapping.  
+
+       2) Normalize -- Possibly normalize the result of step 1 using Unicode
+          normalization. 
+
+       3) Prohibit -- Check for any characters that are not allowed in the
+          output.  If any are found, return an error.  
+
+       4) Check bidi -- Possibly check for right-to-left characters, and if
+          any are found, make sure that the whole string satisfies the
+          requirements for bidirectional strings.  If the string does not
+          satisfy the requirements for bidirectional strings, return an
+          error.  
+          [Unicode3.2] defines several bidirectional categories; each character
+           has one bidirectional category assigned to it.  For the purposes of
+           the requirements below, an "RandALCat character" is a character that
+           has Unicode bidirectional categories "R" or "AL"; an "LCat character"
+           is a character that has Unicode bidirectional category "L".  Note
+
+
+           that there are many characters which fall in neither of the above
+           definitions; Latin digits (<U+0030> through <U+0039>) are examples of
+           this because they have bidirectional category "EN".
+
+           In any profile that specifies bidirectional character handling, all
+           three of the following requirements MUST be met:
+
+           1) The characters in section 5.8 MUST be prohibited.
+
+           2) If a string contains any RandALCat character, the string MUST NOT
+              contain any LCat character.
+
+           3) If a string contains any RandALCat character, a RandALCat
+              character MUST be the first character of the string, and a
+              RandALCat character MUST be the last character of the string.
+    */
+    /**
+     * Prepare the input buffer for use in applications with the given profile. This operation maps, normalizes(NFKC),
+     * checks for prohited and BiDi characters in the order defined by RFC 3454
+     * depending on the options specified in the profile.
+     *
+     * @param src           A UCharacterIterator object containing the source string
+     * @param options       A bit set of options:
+     *
+     *  - StringPrep.NONE               Prohibit processing of unassigned code points in the input
+     *
+     *  - StringPrep.ALLOW_UNASSIGNED   Treat the unassigned code points are in the input 
+     *                                  as normal Unicode code points.
+     *
+     * @return StringBuffer A StringBuffer containing the output
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public StringBuffer prepare(UCharacterIterator src, int options)
+                        throws StringPrepParseException{
+                                              
+        // map 
+        StringBuffer mapOut = map(src,options);
+        StringBuffer normOut = mapOut;// initialize 
+        
+        if(doNFKC){
+            // normalize 
+            normOut = normalize(mapOut);
+        }
+
+        int ch;
+        char result;
+        UCharacterIterator iter = UCharacterIterator.getInstance(normOut);
+        Values val = new Values(); 
+        int direction=UCharacterDirection.CHAR_DIRECTION_COUNT,
+            firstCharDir=UCharacterDirection.CHAR_DIRECTION_COUNT;    
+        int rtlPos=-1, ltrPos=-1;
+        boolean rightToLeft=false, leftToRight=false;
+           
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            result = getCodePointValue(ch);
+            getValues(result,val);
+
+            if(val.type == PROHIBITED ){
+                throw new StringPrepParseException("A prohibited code point was found in the input",
+                                         StringPrepParseException.PROHIBITED_ERROR,iter.getText(),val.value);
+            }
+
+            if(checkBiDi) {
+                direction = bdp.getClass(ch);
+                if(firstCharDir == UCharacterDirection.CHAR_DIRECTION_COUNT){
+                    firstCharDir = direction;
+                }
+                if(direction == UCharacterDirection.LEFT_TO_RIGHT){
+                    leftToRight = true;
+                    ltrPos = iter.getIndex()-1;
+                }
+                if(direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC){
+                    rightToLeft = true;
+                    rtlPos = iter.getIndex()-1;
+                }
+            }
+        }           
+        if(checkBiDi == true){
+            // satisfy 2
+            if( leftToRight == true && rightToLeft == true){
+                throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                         StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),
+                                         (rtlPos>ltrPos) ? rtlPos : ltrPos);
+             }
+    
+            //satisfy 3
+            if( rightToLeft == true && 
+                !((firstCharDir == UCharacterDirection.RIGHT_TO_LEFT || firstCharDir == UCharacterDirection.RIGHT_TO_LEFT_ARABIC) &&
+                (direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC))
+              ){
+                throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                         StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),
+                                         (rtlPos>ltrPos) ? rtlPos : ltrPos);
+            }
+        }
+        return normOut;
+
+      }
+}
diff --git a/src/com/ibm/icu/text/StringPrepParseException.java b/src/com/ibm/icu/text/StringPrepParseException.java
new file mode 100644
index 0000000..872acab
--- /dev/null
+++ b/src/com/ibm/icu/text/StringPrepParseException.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+
+/**
+ * Exception that signals an error has occurred while parsing the 
+ * input to StringPrep or IDNA. 
+ *
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public class StringPrepParseException extends ParseException {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 7160264827701651255L;
+    
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int INVALID_CHAR_FOUND      = 0;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ILLEGAL_CHAR_FOUND      = 1;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int PROHIBITED_ERROR        = 2;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int UNASSIGNED_ERROR        = 3;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int CHECK_BIDI_ERROR        = 4;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int STD3_ASCII_RULES_ERROR  = 5;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ACE_PREFIX_ERROR        = 6;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int VERIFICATION_ERROR      = 7;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int LABEL_TOO_LONG_ERROR    = 8;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int BUFFER_OVERFLOW_ERROR   = 9;
+    
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ZERO_LENGTH_LABEL   = 10;
+    
+    /**
+     * @stable ICU 3.8
+     */
+    public static final int DOMAIN_NAME_TOO_LONG_ERROR   = 11;
+    
+    /**
+     * Construct a ParseException object with the given message
+     * and error code
+     * 
+     * @param message A string describing the type of error that occurred
+     * @param error   The error that has occurred
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message,int error){
+        super(message, -1);
+        this.error = error;
+        this.line = 0;
+    }
+    
+    /**
+     * Construct a ParseException object with the given message and
+     * error code
+     * 
+     * @param message A string describing the type of error that occurred
+     * @param error   The error that has occurred
+     * @param rules   The input rules string 
+     * @param pos     The position of error in the rules string
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message,int error, String rules, int pos){
+        super(message, -1);
+        this.error = error;
+        setContext(rules,pos);  
+        this.line = 0;
+    }
+    /**
+     * Construct  a ParseException object with the given message and error code
+     * 
+     * @param message    A string describing the type of error that occurred
+     * @param error      The error that has occurred
+     * @param rules      The input rules string 
+     * @param pos        The position of error in the rules string
+     * @param lineNumber The line number at which the error has occurred. 
+     *                   If the parse engine is not using this field, it should set it to zero.  Otherwise
+     *                   it should be a positive integer. The default value of this field
+     *                   is -1. It will be set to 0 if the code populating this struct is not
+     *                   using line numbers.
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message, int error, String rules, int pos, int lineNumber){
+        super(message, -1);
+        this.error = error;
+        setContext(rules,pos);   
+        this.line = lineNumber;
+    }
+    /**
+     * Compare this ParseException to another and evaluate if they are equal.
+     * The comparison works only on the type of error and does not compare
+     * the rules strings, if any, for equality.
+     * 
+     * @param other The exception that this object should be compared to
+     * @return true if the objects are equal, false if unequal
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object other){
+        if(!(other instanceof StringPrepParseException)){
+            return false;
+        }
+        return ((StringPrepParseException)other).error == this.error;
+        
+    }
+    /**
+     * Returns the position of error in the rules string
+     * 
+     * @return String
+     * @stable ICU 2.8
+     */
+    public String toString(){
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.getMessage());
+        buf.append(". line:  ");
+        buf.append(line);
+        buf.append(". preContext:  ");
+        buf.append(preContext);
+        buf.append(". postContext: ");
+        buf.append(postContext);
+        buf.append("\n");
+        return buf.toString();
+    }
+
+    private int error;
+    
+    /**
+     * The line on which the error occured.  If the parse engine
+     * is not using this field, it should set it to zero.  Otherwise
+     * it should be a positive integer. The default value of this field
+     * is -1. It will be set to 0 if the code populating this struct is not
+     * using line numbers.
+     * @stable ICU 2.8  
+     */
+    private int line;
+
+
+    /**
+     * Textual context before the error.  Null-terminated.
+     * May be the empty string if not implemented by parser.
+     * @stable ICU 2.8
+     */
+    private StringBuffer preContext = new StringBuffer();
+
+    /**
+     * Textual context after the error.  Null-terminated.
+     * May be the empty string if not implemented by parser.
+     * @stable ICU 2.8   
+     */
+    private StringBuffer postContext =  new StringBuffer();
+    
+    private static final int PARSE_CONTEXT_LEN = 16;
+    
+    private void setPreContext(String str, int pos){
+        setPreContext(str.toCharArray(),pos);
+    }
+    
+    private void setPreContext(char[] str, int pos){
+        int start = (pos <= PARSE_CONTEXT_LEN)? 0 : (pos - (PARSE_CONTEXT_LEN-1));
+        int len = (start <= PARSE_CONTEXT_LEN)? start : PARSE_CONTEXT_LEN;
+        preContext.append(str,start,len);
+ 
+    }
+    
+    private void setPostContext(String str, int pos){
+        setPostContext(str.toCharArray(),pos);
+    }
+    
+    private void setPostContext(char[] str, int pos){
+        int start = pos;
+        int len  = str.length - start; 
+        postContext.append(str,start,len);
+
+    }
+    
+    private void setContext(String str,int pos){
+        setPreContext(str,pos);
+        setPostContext(str,pos);
+    }
+    
+    /**
+     * Returns the error code of this exception. 
+     * This method is only used for testing to verify the error.
+     * @return The error code
+     * @stable ICU 3.8
+     */
+    public int getError(){
+        return error;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringReplacer.java b/src/com/ibm/icu/text/StringReplacer.java
new file mode 100644
index 0000000..5701631
--- /dev/null
+++ b/src/com/ibm/icu/text/StringReplacer.java
@@ -0,0 +1,333 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A replacer that produces static text as its output.  The text may
+ * contain transliterator stand-in characters that represent nested
+ * UnicodeReplacer objects, making it possible to encode a tree of
+ * replacers in a StringReplacer.  A StringReplacer that contains such
+ * stand-ins is called a <em>complex</em> StringReplacer.  A complex
+ * StringReplacer has a slower processing loop than a non-complex one.
+ * @author Alan Liu
+ */
+class StringReplacer implements UnicodeReplacer {
+
+    /**
+     * Output text, possibly containing stand-in characters that
+     * represent nested UnicodeReplacers.
+     */
+    private String output;
+
+    /**
+     * Cursor position.  Value is ignored if hasCursor is false.
+     */
+    private int cursorPos;
+
+    /**
+     * True if this object outputs a cursor position.
+     */
+    private boolean hasCursor;
+
+    /**
+     * A complex object contains nested replacers and requires more
+     * complex processing.  StringReplacers are initially assumed to
+     * be complex.  If no nested replacers are seen during processing,
+     * then isComplex is set to false, and future replacements are
+     * short circuited for better performance.
+     */
+    private boolean isComplex;
+
+    /**
+     * Object that translates stand-in characters in 'output' to
+     * UnicodeReplacer objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and sets the cursor to the given position.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theCursorPos cursor position that will be returned by
+     * the replace() method
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          int theCursorPos,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = theCursorPos;
+        hasCursor = true;
+        data = theData;
+        isComplex = true;
+    }
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and does not modify the cursor.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = 0;
+        hasCursor = false;
+        data = theData;
+        isComplex = true;
+    }
+
+//=    public static UnicodeReplacer valueOf(String output,
+//=                                          int cursorPos,
+//=                                          RuleBasedTransliterator.Data data) {
+//=        if (output.length() == 1) {
+//=            char c = output.charAt(0);
+//=            UnicodeReplacer r = data.lookupReplacer(c);
+//=            if (r != null) {
+//=                return r;
+//=            }
+//=        }
+//=        return new StringReplacer(output, cursorPos, data);
+//=    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+        int outLen;
+        int newStart = 0;
+
+        // NOTE: It should be possible to _always_ run the complex
+        // processing code; just slower.  If not, then there is a bug
+        // in the complex processing code.
+
+        // Simple (no nested replacers) Processing Code :
+        if (!isComplex) {
+            text.replace(start, limit, output);
+            outLen = output.length();
+
+            // Setup default cursor position (for cursorPos within output)
+            newStart = cursorPos;
+        }
+
+        // Complex (nested replacers) Processing Code :
+        else {
+            /* When there are segments to be copied, use the Replaceable.copy()
+             * API in order to retain out-of-band data.  Copy everything to the
+             * end of the string, then copy them back over the key.  This preserves
+             * the integrity of indices into the key and surrounding context while
+             * generating the output text.
+             */
+            StringBuffer buf = new StringBuffer();
+            int oOutput; // offset into 'output'
+            isComplex = false;
+
+            // The temporary buffer starts at tempStart, and extends
+            // to destLimit + tempExtra.  The start of the buffer has a single
+            // character from before the key.  This provides style
+            // data when addition characters are filled into the
+            // temporary buffer.  If there is nothing to the left, use
+            // the non-character U+FFFF, which Replaceable subclasses
+            // should treat specially as a "no-style character."
+            // destStart points to the point after the style context
+            // character, so it is tempStart+1 or tempStart+2.
+            int tempStart = text.length(); // start of temp buffer
+            int destStart = tempStart; // copy new text to here
+            if (start > 0) {
+                int len = UTF16.getCharCount(text.char32At(start-1));
+                text.copy(start-len, start, tempStart);
+                destStart += len;
+            } else {
+                text.replace(tempStart, tempStart, "\uFFFF");
+                destStart++;
+            }
+            int destLimit = destStart;
+            int tempExtra = 0; // temp chars after destLimit
+
+            for (oOutput=0; oOutput<output.length(); ) {
+                if (oOutput == cursorPos) {
+                    // Record the position of the cursor
+                    newStart = buf.length() + destLimit - destStart; // relative to start
+                    // the buf.length() was inserted for bug 5789
+                    // the problem is that if we are accumulating into a buffer (when r == null below)
+                    // then the actual length of the text at that point needs to add the buf length.
+                    // there was an alternative suggested in #5789, but that looks like it won't work
+                    // if we have accumulated some stuff in the dest part AND have a non-zero buffer.
+                }
+                int c = UTF16.charAt(output, oOutput);
+
+                // When we are at the last position copy the right style
+                // context character into the temporary buffer.  We don't
+                // do this before because it will provide an incorrect
+                // right context for previous replace() operations.
+                int nextIndex = oOutput + UTF16.getCharCount(c);
+                if (nextIndex == output.length()) {
+                    tempExtra = UTF16.getCharCount(text.char32At(limit));
+                    text.copy(limit, limit+tempExtra, destLimit);
+                }
+
+                UnicodeReplacer r = data.lookupReplacer(c);
+                if (r == null) {
+                    // Accumulate straight (non-segment) text.
+                    UTF16.append(buf, c);
+                } else {
+                    isComplex = true;
+
+                    // Insert any accumulated straight text.
+                    if (buf.length() > 0) {
+                        text.replace(destLimit, destLimit, buf.toString());
+                        destLimit += buf.length();
+                        buf.setLength(0);
+                    }
+
+                    // Delegate output generation to replacer object
+                    int len = r.replace(text, destLimit, destLimit, cursor);
+                    destLimit += len;
+                }
+                oOutput = nextIndex;
+            }
+            // Insert any accumulated straight text.
+            if (buf.length() > 0) {
+                text.replace(destLimit, destLimit, buf.toString());
+                destLimit += buf.length();
+            }
+            if (oOutput == cursorPos) {
+                // Record the position of the cursor
+                newStart = destLimit - destStart; // relative to start
+            }
+
+            outLen = destLimit - destStart;
+
+            // Copy new text to start, and delete it
+            text.copy(destStart, destLimit, start);
+            text.replace(tempStart + outLen, destLimit + tempExtra + outLen, "");
+
+            // Delete the old text (the key)
+            text.replace(start + outLen, limit + outLen, "");
+        }        
+
+        if (hasCursor) {
+            // Adjust the cursor for positions outside the key.  These
+            // refer to code points rather than code units.  If cursorPos
+            // is within the output string, then use newStart, which has
+            // already been set above.
+            if (cursorPos < 0) {
+                newStart = start;
+                int n = cursorPos;
+                // Outside the output string, cursorPos counts code points
+                while (n < 0 && newStart > 0) {
+                    newStart -= UTF16.getCharCount(text.char32At(newStart-1));
+                    ++n;
+                }
+                newStart += n;
+            } else if (cursorPos > output.length()) {
+                newStart = start + outLen;
+                int n = cursorPos - output.length();
+                // Outside the output string, cursorPos counts code points
+                while (n > 0 && newStart < text.length()) {
+                    newStart += UTF16.getCharCount(text.char32At(newStart));
+                    --n;
+                }
+                newStart += n;
+            } else {
+                // Cursor is within output string.  It has been set up above
+                // to be relative to start.
+                newStart += start;
+            }
+
+            cursor[0] = newStart;
+        }
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+
+        int cursor = cursorPos;
+
+        // Handle a cursor preceding the output
+        if (hasCursor && cursor < 0) {
+            while (cursor++ < 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            // Fall through and append '|' below
+        }
+
+        for (int i=0; i<output.length(); ++i) {
+            if (hasCursor && i == cursor) {
+                Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+            }
+            char c = output.charAt(i); // Ok to use 16-bits here
+
+            UnicodeReplacer r = data.lookupReplacer(c);
+            if (r == null) {
+                Utility.appendToRule(rule, c, false, escapeUnprintable, quoteBuf);
+            } else {
+                StringBuffer buf = new StringBuffer(" ");
+                buf.append(r.toReplacerPattern(escapeUnprintable));
+                buf.append(' ');
+                Utility.appendToRule(rule, buf.toString(),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+
+        // Handle a cursor after the output.  Use > rather than >= because
+        // if cursor == output.length() it is at the end of the output,
+        // which is the default position, so we need not emit it.
+        if (hasCursor && cursor > output.length()) {
+            cursor -= output.length();
+            while (cursor-- > 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(rule, -1,
+                             true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<output.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(output, i);
+            UnicodeReplacer r = data.lookupReplacer(ch);
+            if (r == null) {
+                toUnionTo.add(ch);
+            } else {
+                r.addReplacementSetTo(toUnionTo);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringSearch.java b/src/com/ibm/icu/text/StringSearch.java
new file mode 100644
index 0000000..0fbedbf
--- /dev/null
+++ b/src/com/ibm/icu/text/StringSearch.java
@@ -0,0 +1,3155 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <p>
+ * <code>StringSearch</code> is the concrete subclass of 
+ * <code>SearchIterator</code> that provides language-sensitive text searching 
+ * based on the comparison rules defined in a {@link RuleBasedCollator} object.
+ * </p>
+ * <p>
+ * <code>StringSearch</code> uses a version of the fast Boyer-Moore search
+ * algorithm that has been adapted to work with the large character set of
+ * Unicode. Refer to 
+ * <a href="http://www.icu-project.org/docs/papers/efficient_text_searching_in_java.html">
+ * "Efficient Text Searching in Java"</a>, published in the 
+ * <i>Java Report</i> on February, 1999, for further information on the 
+ * algorithm.
+ * </p>
+ * <p>
+ * Users are also strongly encouraged to read the section on 
+ * <a href="http://www.icu-project.org/userguide/searchString.html">
+ * String Search</a> and 
+ * <a href="http://www.icu-project.org/userguide/Collate_Intro.html">
+ * Collation</a> in the user guide before attempting to use this class.
+ * </p>
+ * <p>
+ * String searching becomes a little complicated when accents are encountered at
+ * match boundaries. If a match is found and it has preceding or trailing 
+ * accents not part of the match, the result returned will include the 
+ * preceding accents up to the first base character, if the pattern searched 
+ * for starts an accent. Likewise, 
+ * if the pattern ends with an accent, all trailing accents up to the first
+ * base character will be included in the result.
+ * </p>
+ * <p>
+ * For example, if a match is found in target text "a&#92;u0325&#92;u0300" for 
+ * the pattern
+ * "a&#92;u0325", the result returned by StringSearch will be the index 0 and
+ * length 3 &lt;0, 3&gt;. If a match is found in the target 
+ * "a&#92;u0325&#92;u0300" 
+ * for the pattern "&#92;u0300", then the result will be index 1 and length 2 
+ * <1, 2>.
+ * </p>
+ * <p>
+ * In the case where the decomposition mode is on for the RuleBasedCollator,
+ * all matches that starts or ends with an accent will have its results include 
+ * preceding or following accents respectively. For example, if pattern "a" is
+ * looked for in the target text "&aacute;&#92;u0325", the result will be
+ * index 0 and length 2 &lt;0, 2&gt;.
+ * </p>
+ * <p>
+ * The StringSearch class provides two options to handle accent matching 
+ * described below:
+ * </p>
+ * <p>
+ * Let S' be the sub-string of a text string S between the offsets start and 
+ * end &lt;start, end&gt;.
+ * <br>
+ * A pattern string P matches a text string S at the offsets &lt;start, 
+ * length&gt; 
+ * <br>
+ * if
+ * <pre> 
+ * option 1. P matches some canonical equivalent string of S'. Suppose the 
+ *           RuleBasedCollator used for searching has a collation strength of 
+ *           TERTIARY, all accents are non-ignorable. If the pattern 
+ *           "a&#92;u0300" is searched in the target text 
+ *           "a&#92;u0325&#92;u0300", 
+ *           a match will be found, since the target text is canonically 
+ *           equivalent to "a&#92;u0300&#92;u0325"
+ * option 2. P matches S' and if P starts or ends with a combining mark, 
+ *           there exists no non-ignorable combining mark before or after S' 
+ *           in S respectively. Following the example above, the pattern 
+ *           "a&#92;u0300" will not find a match in "a&#92;u0325&#92;u0300", 
+ *           since
+ *           there exists a non-ignorable accent '&#92;u0325' in the middle of 
+ *           'a' and '&#92;u0300'. Even with a target text of 
+ *           "a&#92;u0300&#92;u0325" a match will not be found because of the 
+ *           non-ignorable trailing accent &#92;u0325.
+ * </pre>
+ * Option 2. will be the default mode for dealing with boundary accents unless
+ * specified via the API setCanonical(boolean).
+ * One restriction is to be noted for option 1. Currently there are no 
+ * composite characters that consists of a character with combining class > 0 
+ * before a character with combining class == 0. However, if such a character 
+ * exists in the future, the StringSearch may not work correctly with option 1
+ * when such characters are encountered.
+ * </p>
+ * <p>
+ * <tt>SearchIterator</tt> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <tt>setIndex</tt>,
+ * <tt>preceding</tt> and <tt>following</tt>. Since the starting position will 
+ * be set as it is specified, please take note that there are some dangerous 
+ * positions which the search may render incorrect results:
+ * <ul>
+ * <li> The midst of a substring that requires decomposition.
+ * <li> If the following match is to be found, the position should not be the
+ *      second character which requires to be swapped with the preceding 
+ *      character. Vice versa, if the preceding match is to be found, 
+ *      position to search from should not be the first character which 
+ *      requires to be swapped with the next character. E.g certain Thai and
+ *      Lao characters require swapping.
+ * <li> If a following pattern match is to be found, any position within a 
+ *      contracting sequence except the first will fail. Vice versa if a 
+ *      preceding pattern match is to be found, a invalid starting point 
+ *      would be any character within a contracting sequence except the last.
+ * </ul>
+ * </p>
+ * <p>
+ * Though collator attributes will be taken into consideration while 
+ * performing matches, there are no APIs provided in StringSearch for setting 
+ * and getting the attributes. These attributes can be set by getting the 
+ * collator from <tt>getCollator</tt> and using the APIs in 
+ * <tt>com.ibm.icu.text.Collator</tt>. To update StringSearch to the new 
+ * collator attributes, <tt>reset()</tt> or 
+ * <tt>setCollator(RuleBasedCollator)</tt> has to be called.
+ * </p>
+ * <p>
+ * Consult the 
+ * <a href="http://www.icu-project.org/userguide/searchString.html">
+ * String Search</a> user guide and the <code>SearchIterator</code> 
+ * documentation for more information and examples of use.
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see SearchIterator
+ * @see RuleBasedCollator
+ * @author Laura Werner, synwee
+ * @stable ICU 2.0
+ */
+// internal notes: all methods do not guarantee the correct status of the 
+// characteriterator. the caller has to maintain the original index position
+// if necessary. methods could change the index position as it deems fit
+public final class StringSearch extends SearchIterator
+{
+    
+    // public constructors --------------------------------------------------
+    
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. The argument breakiter is used to define logical matches.
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @param breakiter A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator, BreakIterator breakiter) 
+    {
+        super(target, breakiter);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_collator_ = collator;
+        m_colEIter_ = m_collator_.getCollationElementIterator(target);
+        m_utilColEIter_ = collator.getCollationElementIterator("");
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        m_isCanonicalMatch_ = false;
+        m_pattern_ = new Pattern(pattern);
+        m_matchedIndex_ = DONE;
+        m_charBreakIter_ = BreakIterator.getCharacterInstance(/*m_collator_.getLocale(ULocale.ACTUAL_LOCALE)*/);
+        m_charBreakIter_.setText(target);
+        initialize();
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. No BreakIterators are set to test for logical matches.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator) 
+    {
+        this(pattern, target, collator, null/*BreakIterator.getCharacterInstance()*/);
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the argument locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param locale locale to use for language and break iterator rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the specified locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target, Locale locale)
+    {
+        this(pattern, target, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the argument locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param locale ulocale to use for language and break iterator rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the specified locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 3.2
+     */
+    public StringSearch(String pattern, CharacterIterator target, ULocale locale)
+    {
+        this(pattern, target, (RuleBasedCollator)Collator.getInstance(locale),
+             null/*BreakIterator.getCharacterInstance(locale)*/);
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the default locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the default locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, String target) 
+    {
+        this(pattern, new StringCharacterIterator(target),
+             (RuleBasedCollator)Collator.getInstance(),
+             null/*BreakIterator.getCharacterInstance()*/);
+    }
+
+    // public getters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Gets the RuleBasedCollator used for the language rules.
+     * </p>
+     * <p>
+     * Since StringSearch depends on the returned RuleBasedCollator, any 
+     * changes to the RuleBasedCollator result should follow with a call to 
+     * either StringSearch.reset() or 
+     * StringSearch.setCollator(RuleBasedCollator) to ensure the correct 
+     * search behaviour.
+     * </p>
+     * @return RuleBasedCollator used by this StringSearch
+     * @see RuleBasedCollator
+     * @see #setCollator
+     * @stable ICU 2.0
+     */
+    public RuleBasedCollator getCollator() 
+    {
+        return m_collator_;
+    }
+    
+    /**
+     * Returns the pattern for which StringSearch is searching for.
+     * @return the pattern searched for
+     * @stable ICU 2.0
+     */
+    public String getPattern() 
+    {
+        return m_pattern_.targetText;
+    }
+    
+    /**
+     * Return the index in the target text where the iterator is currently 
+     * positioned at. 
+     * If the iteration has gone past the end of the target text or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text where the iterator is currently 
+     *         positioned at
+     * @stable ICU 2.8
+     */
+    public int getIndex() 
+    {
+        int result = m_colEIter_.getOffset();
+        if (isOutOfBounds(m_textBeginOffset_, m_textLimitOffset_, result)) {
+            return DONE;
+        }
+        return result;
+    }
+    
+    /**
+     * Determines whether canonical matches (option 1, as described in the 
+     * class documentation) is set.
+     * See setCanonical(boolean) for more information.
+     * @see #setCanonical
+     * @return true if canonical matches is set, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isCanonical() 
+    {
+        return m_isCanonicalMatch_;
+    }
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the RuleBasedCollator to be used for language-specific searching.
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param collator to use for this StringSearch
+     * @exception IllegalArgumentException thrown when collator is null
+     * @see #getCollator
+     * @stable ICU 2.0
+     */
+    public void setCollator(RuleBasedCollator collator) 
+    {
+        if (collator == null) {
+            throw new IllegalArgumentException("Collator can not be null");
+        }
+        m_collator_ = collator;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_utilColEIter_.setCollator(m_collator_);
+        m_charBreakIter_ = BreakIterator.getCharacterInstance(/*collator.getLocale(ULocale.VALID_LOCALE)*/);
+        m_charBreakIter_.setText(targetText);
+    }
+    
+    /**
+     * <p>
+     * Set the pattern to search for.  
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param pattern for searching
+     * @see #getPattern
+     * @exception IllegalArgumentException thrown if pattern is null or of
+     *               length 0
+     * @stable ICU 2.0
+     */
+    public void setPattern(String pattern) 
+    {
+        if (pattern == null || pattern.length() <= 0) {
+            throw new IllegalArgumentException(
+                    "Pattern to search for can not be null or of length 0");
+        }
+        m_pattern_.targetText = pattern;
+        initialize();
+    }
+    
+    /**
+      * Set the target text to be searched. Text iteration will hence begin at 
+     * the start of the text string. This method is useful if you want to 
+     * re-use an iterator to search within a different body of text.
+     * @param text new text iterator to look for match, 
+     * @exception IllegalArgumentException thrown when text is null or has
+     *            0 length
+     * @see #getTarget
+     * @stable ICU 2.8
+     */
+    public void setTarget(CharacterIterator text)
+    {
+        super.setTarget(text);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_colEIter_.setText(targetText);
+        m_charBreakIter_.setText(targetText);
+    }
+    
+    /**
+     * <p>
+     * Sets the position in the target text which the next search will start 
+     * from to the argument. This method clears all previous states.
+     * </p>
+     * <p>
+     * This method takes the argument position and sets the position in the 
+     * target text accordingly, without checking if position is pointing to a 
+     * valid starting point to begin searching.
+     * </p>
+     * <p>
+     * Search positions that may render incorrect results are highlighted in 
+     * the class documentation.
+     * </p>
+     * @param position index to start next search from.
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @stable ICU 2.8
+     */
+    public void setIndex(int position)
+    {
+        super.setIndex(position);
+        m_matchedIndex_ = DONE;
+        m_colEIter_.setExactOffset(position);
+    }
+    
+    /**
+     * <p>
+     * Set the canonical match mode. See class documentation for details.
+     * The default setting for this property is false.
+     * </p>
+     * @param allowCanonical flag indicator if canonical matches are allowed
+     * @see #isCanonical
+     * @stable ICU 2.8
+     */
+    public void setCanonical(boolean allowCanonical)
+    {
+        m_isCanonicalMatch_ = allowCanonical;
+        if (m_isCanonicalMatch_ == true) {
+            if (m_canonicalPrefixAccents_ == null) {
+                m_canonicalPrefixAccents_ = new StringBuffer();
+            }
+            else {
+                m_canonicalPrefixAccents_.delete(0, 
+                                            m_canonicalPrefixAccents_.length());
+            }
+            if (m_canonicalSuffixAccents_ == null) {
+                m_canonicalSuffixAccents_ = new StringBuffer();
+            }
+            else {
+                m_canonicalSuffixAccents_.delete(0, 
+                                            m_canonicalSuffixAccents_.length());
+            }
+        }
+    }
+    
+    // public miscellaneous methods -----------------------------------------
+    
+    /** 
+     * <p>
+     * Resets the search iteration. All properties will be reset to the 
+     * default value.
+     * </p>
+     * <p>
+     * Search will begin at the start of the target text if a forward iteration 
+     * is initiated before a backwards iteration. Otherwise if a 
+     * backwards iteration is initiated before a forwards iteration, the search 
+     * will begin at the end of the target text.
+     * </p>
+     * <p>
+     * Canonical match option will be reset to false, ie an exact match.
+     * </p>
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        // reset is setting the attributes that are already in string search, 
+        // hence all attributes in the collator should be retrieved without any 
+        // problems
+        super.reset();
+        m_isCanonicalMatch_ = false;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_colEIter_.reset();
+        m_utilColEIter_.setCollator(m_collator_);
+    }
+
+    // protected methods -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>forwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the forwards search 
+     *        should begin.
+     * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+     * @see #handlePrevious(int)
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    protected int handleNext(int start)
+    {
+        if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+            if (m_matchedIndex_ == DONE && start == m_textBeginOffset_) {
+                m_matchedIndex_ = start;
+                return m_matchedIndex_;
+            }
+            
+            targetText.setIndex(start);
+            char ch = targetText.current();
+            // ch can never be done, it is handled by next()
+            char ch2 = targetText.next();
+            if (ch2 == CharacterIterator.DONE) {
+                m_matchedIndex_ = DONE;    
+            }
+            else {
+                m_matchedIndex_ = targetText.getIndex();
+            }
+            if (UTF16.isLeadSurrogate(ch) && UTF16.isTrailSurrogate(ch2)) {
+                targetText.next();
+                m_matchedIndex_ = targetText.getIndex();
+            }
+        }
+        else {
+            if (matchLength <= 0) {
+                // we must have reversed direction after we reached the start
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                if (start == m_textBeginOffset_) {
+                    m_matchedIndex_ = DONE;
+                }
+                else {
+                    // for boundary check purposes. this will ensure that the
+                    // next match will not preceed the current offset
+                    // note search->matchedIndex will always be set to something
+                    // in the code
+                    m_matchedIndex_ = start - 1;
+                }
+            }
+    
+            // status checked below
+            if (m_isCanonicalMatch_) {
+                // can't use exact here since extra accents are allowed.
+                handleNextCanonical(start);
+            }
+            else {
+                handleNextExact(start);
+            }
+        }
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textLimitOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+        return m_matchedIndex_;
+    }
+    
+    /**
+     * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>backwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the backwards search 
+     *        should begin.
+     * @return the starting index of the next backwards match if found, DONE 
+     *         otherwise
+     * @see #handleNext(int)
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    protected int handlePrevious(int start)
+    {
+        if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+            // start can never be DONE or 0, it is handled in previous
+            targetText.setIndex(start);
+            char ch = targetText.previous();
+            if (ch == CharacterIterator.DONE) {
+                m_matchedIndex_ = DONE;
+            }
+            else {
+                m_matchedIndex_ = targetText.getIndex();
+                if (UTF16.isTrailSurrogate(ch)) {
+                    if (UTF16.isLeadSurrogate(targetText.previous())) {
+                        m_matchedIndex_ = targetText.getIndex();
+                    }
+                }
+            }            
+        }
+        else {
+            if (matchLength == 0) {
+                // we must have reversed direction after we reached the end
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                m_matchedIndex_ = DONE;
+            }
+            if (m_isCanonicalMatch_) {
+                // can't use exact here since extra accents are allowed.
+                handlePreviousCanonical(start);
+            }
+            else {
+                handlePreviousExact(start);
+            }
+        }
+
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textBeginOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+        return m_matchedIndex_;
+    }
+
+    // private static inner classes ----------------------------------------
+    
+    private static class Pattern 
+    {
+        // protected methods -----------------------------------------------
+        
+        /**
+         * Pattern string
+         */
+        protected String targetText;
+        /**
+         * Array containing the collation elements of targetText
+         */
+        protected int m_CE_[];
+        /**
+         * Number of collation elements in m_CE_
+         */
+        protected int m_CELength_; 
+        /**
+         * Flag indicator if targetText starts with an accent
+         */
+        protected boolean m_hasPrefixAccents_;
+        /**
+         * Flag indicator if targetText ends with an accent
+         */
+        protected boolean m_hasSuffixAccents_;
+        /**
+         * Default number of characters to shift for Boyer Moore
+         */
+        protected int m_defaultShiftSize_;
+        /**
+         * Number of characters to shift for Boyer Moore, depending on the
+         * source text to search
+         */
+        protected char m_shift_[];
+        /**
+         * Number of characters to shift backwards for Boyer Moore, depending 
+         * on the source text to search
+         */
+        protected char m_backShift_[];
+        
+        // protected constructors ------------------------------------------
+        
+        /**
+         * Empty constructor 
+         */
+        protected Pattern(String pattern) 
+        {
+            targetText = pattern;
+            m_CE_ = new int[INITIAL_ARRAY_SIZE_];    
+            m_CELength_ = 0;
+            m_hasPrefixAccents_ = false;
+            m_hasSuffixAccents_ = false;
+            m_defaultShiftSize_ = 1;        
+            m_shift_ = new char[MAX_TABLE_SIZE_];
+            m_backShift_ = new char[MAX_TABLE_SIZE_];
+        }
+    }
+
+
+    // private data members ------------------------------------------------
+    
+    /**
+     * target text begin offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to the first such
+     * character in the region.
+     */
+    private int m_textBeginOffset_;
+    /**
+     * target text limit offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to 1 after the last such
+     * character in the region.
+     */
+    private int m_textLimitOffset_;
+    /**
+     * Upon completion of a search, m_matchIndex_ will store starting offset in
+     * m_text for the match. The Value DONE is the default value. 
+     * If we are not at the start of the text or the end of the text and 
+     * m_matchedIndex_ is DONE it means that we can find any more matches in 
+     * that particular direction
+     */
+    private int m_matchedIndex_; 
+    /**
+     * Current pattern to search for
+     */
+    private Pattern m_pattern_;
+    /**
+     * Collator whose rules are used to perform the search
+     */
+    private RuleBasedCollator m_collator_;
+    /** 
+     * The collation element iterator for the text source.
+     */
+    private CollationElementIterator m_colEIter_;
+    /** 
+     * Utility collation element, used throughout program for temporary 
+     * iteration.
+     */
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * The mask used on the collation elements to retrieve the valid strength
+     * weight 
+     */
+    private int m_ceMask_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalPrefixAccents_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalSuffixAccents_;
+    /**
+     * Flag to indicate if canonical search is to be done.
+     * E.g looking for "a\u0300" in "a\u0318\u0300" will yield the match at 0.
+     */
+    private boolean m_isCanonicalMatch_;
+    /**
+     * Character break iterator for boundary checking.
+     */
+    private BreakIterator m_charBreakIter_; 
+    /**
+     * Size of the shift tables
+     */
+    private static final int MAX_TABLE_SIZE_ = 257; 
+    /**
+     * Initial array size
+     */
+    private static final int INITIAL_ARRAY_SIZE_ = 256;
+    /**
+     * Utility mask
+     */
+    private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+    /**
+     * Utility mask
+     */
+    private static final int LAST_BYTE_MASK_ = 0xff;
+    /**
+     * Utility buffer for return values and temporary storage
+     */
+    private int m_utilBuffer_[] = new int[2];
+    /**
+     *  Unsigned 32-Bit Integer Mask
+     */
+    private static final long UNSIGNED_32BIT_MASK = 0xffffffffL;
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Hash a collation element from its full size (32 bits) down into a
+     * value that can be used as an index into the shift tables.  Right
+     * now we do a modulus by the size of the hash table.
+     * @param ce collation element
+     * @return collapsed version of the collation element
+     */
+    private static final int hash(int ce) 
+    {
+        // the old value UCOL_PRIMARYORDER(ce) % MAX_TABLE_SIZE_ does not work
+        // well with the new collation where most of the latin 1 characters
+        // are of the value xx000xxx. their hashes will most of the time be 0
+        // to be discussed on the hash algo.
+        return CollationElementIterator.primaryOrder(ce) % MAX_TABLE_SIZE_;
+    }
+    
+    /**
+     * Gets the fcd value for a character at the argument index.
+     * This method takes into accounts of the supplementary characters.
+     * Note this method changes the offset in the character iterator.
+     * @param str UTF16 string where character for fcd retrieval resides
+     * @param offset position of the character whose fcd is to be retrieved
+     * @return fcd value
+     */
+    private static final char getFCD(CharacterIterator str, int offset)
+    {
+        str.setIndex(offset);
+        char ch = str.current();
+        char result = NormalizerImpl.getFCD16(ch);
+        
+        if ((result != 0) && (str.getEndIndex() != offset + 1) && 
+            UTF16.isLeadSurrogate(ch)) {
+            ch = str.next();
+            if (UTF16.isTrailSurrogate(ch)) {
+                result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+            } else {
+                result = 0;
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * Gets the fcd value for a character at the argument index.
+     * This method takes into accounts of the supplementary characters.
+     * @param str UTF16 string where character for fcd retrieval resides
+     * @param offset position of the character whose fcd is to be retrieved
+     * @return fcd value
+     */
+    private static final char getFCD(String str, int offset)
+    {
+        char ch = str.charAt(offset);
+        char result = NormalizerImpl.getFCD16(ch);
+        
+        if ((result != 0) && (str.length() != offset + 1) && 
+            UTF16.isLeadSurrogate(ch)) {
+            ch = str.charAt(offset + 1);
+            if (UTF16.isTrailSurrogate(ch)) {
+                result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+            } else {
+                result = 0;
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Getting the modified collation elements taking into account the collation 
+    * attributes
+    * @param ce 
+    * @return the modified collation element
+    */
+    private final int getCE(int ce)
+    {
+        // note for tertiary we can't use the collator->tertiaryMask, that
+        // is a preprocessed mask that takes into account case options. since
+        // we are only concerned with exact matches, we don't need that.
+        ce &= m_ceMask_;
+        
+        if (m_collator_.isAlternateHandlingShifted()) {
+            // alternate handling here, since only the 16 most significant 
+            // digits is only used, we can safely do a compare without masking
+            // if the ce is a variable, we mask and get only the primary values
+            // no shifting to quartenary is required since all primary values
+            // less than variabletop will need to be masked off anyway.
+            if (((m_collator_.m_variableTopValue_  << 16) & UNSIGNED_32BIT_MASK) > (ce & UNSIGNED_32BIT_MASK)) {
+                if (m_collator_.getStrength() == Collator.QUATERNARY) {
+                    ce = CollationElementIterator.primaryOrder(ce);
+                }
+                else { 
+                    ce = CollationElementIterator.IGNORABLE;
+                }
+            }
+        }
+    
+        return ce;
+    }
+    
+    /**
+     * Appends a int to a int array, increasing the size of the array when 
+     * we are out of space.
+     * @param offset in array to append to
+     * @param value to append
+     * @param array to append to
+     * @return the array appended to, this could be a new and bigger array
+     */
+    private static final int[] append(int offset, int value, int array[])
+    {
+        if (offset >= array.length) {
+            int temp[] = new int[offset + INITIAL_ARRAY_SIZE_];
+            System.arraycopy(array, 0, temp, 0, array.length);
+            array = temp;
+        }
+        array[offset] = value;
+        return array;
+    }
+    
+    /**
+     * Initializing the ce table for a pattern. Stores non-ignorable collation 
+     * keys. Table size will be estimated by the size of the pattern text. 
+     * Table expansion will be perform as we go along. Adding 1 to ensure that 
+     * the table size definitely increases.
+     * Internal method, status assumed to be a success.
+     * @return total number of expansions 
+     */
+    private final int initializePatternCETable()
+    {
+        m_utilColEIter_.setText(m_pattern_.targetText);
+        
+        int offset = 0;
+        int result = 0;
+        int ce = m_utilColEIter_.next();
+    
+        while (ce != CollationElementIterator.NULLORDER) {
+            int newce = getCE(ce);
+            if (newce != CollationElementIterator.IGNORABLE) {
+                m_pattern_.m_CE_ = append(offset, newce, m_pattern_.m_CE_);
+                offset ++;            
+            }
+            result += m_utilColEIter_.getMaxExpansion(ce) - 1;
+            ce = m_utilColEIter_.next();
+        }
+    
+        m_pattern_.m_CE_ = append(offset, 0, m_pattern_.m_CE_);
+        m_pattern_.m_CELength_ = offset;
+    
+        return result;
+    }
+    
+    /**
+     * Initializes the pattern struct.
+     * Internal method, status assumed to be success.
+     * @return expansionsize the total expansion size of the pattern
+     */ 
+    private final int initializePattern()
+    {
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            m_pattern_.m_hasPrefixAccents_ = false;
+            m_pattern_.m_hasSuffixAccents_ = false;
+        } else {
+            m_pattern_.m_hasPrefixAccents_ = (getFCD(m_pattern_.targetText, 0) 
+                                                 >> SECOND_LAST_BYTE_SHIFT_) != 0;
+            m_pattern_.m_hasSuffixAccents_ = (getFCD(m_pattern_.targetText, 
+                                                     m_pattern_.targetText.length() 
+                                                     - 1) 
+                                                & LAST_BYTE_MASK_) != 0;
+        }
+        // since intializePattern is an internal method status is a success.
+        return initializePatternCETable();   
+    }
+    
+    /**
+     * Initializing shift tables, with the default values.
+     * If a corresponding default value is 0, the shift table is not set.
+     * @param shift table for forwards shift 
+     * @param backshift table for backwards shift
+     * @param cetable table containing pattern ce
+     * @param cesize size of the pattern ces
+     * @param expansionsize total size of the expansions
+     * @param defaultforward the default forward value
+     * @param defaultbackward the default backward value
+     */
+     private final void setShiftTable(char shift[], 
+                                                    char backshift[], 
+                                                    int cetable[], int cesize, 
+                                                      int expansionsize,
+                                                    char defaultforward,
+                                                      char defaultbackward)
+    {
+        // estimate the value to shift. to do that we estimate the smallest 
+        // number of characters to give the relevant ces, ie approximately
+        // the number of ces minus their expansion, since expansions can come 
+        // from a character.
+        for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+            shift[count] = defaultforward;
+        }
+        cesize --; // down to the last index
+        for (int count = 0; count < cesize; count ++) {
+            // number of ces from right of array to the count
+            int temp = defaultforward - count - 1;
+            shift[hash(cetable[count])] = temp > 1 ? ((char)temp) : 1;
+        }
+        shift[hash(cetable[cesize])] = 1;
+        // for ignorables we just shift by one. see test examples.
+        shift[hash(0)] = 1;
+        
+        for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+            backshift[count] = defaultbackward;
+        }
+        for (int count = cesize; count > 0; count --) {
+            // the original value count does not seem to work
+            backshift[hash(cetable[count])] = (char)(count > expansionsize ? 
+                                                      count - expansionsize : 1);
+        }
+        backshift[hash(cetable[0])] = 1;
+        backshift[hash(0)] = 1;
+    }
+    
+    /**
+     * <p>Building of the pattern collation element list and the Boyer Moore 
+     * StringSearch table.</p>
+     * <p>The canonical match will only be performed after the default match 
+     * fails.</p>
+     * <p>For both cases we need to remember the size of the composed and 
+     * decomposed versions of the string. Since the Boyer-Moore shift 
+     * calculations shifts by a number of characters in the text and tries to 
+     * match the pattern from that offset, the shift value can not be too large 
+     * in case we miss some characters. To choose a right shift size, we 
+     * estimate the NFC form of the and use its size as a shift guide. The NFC 
+     * form should be the small possible representation of the pattern. Anyways, 
+     * we'll err on the smaller shift size. Hence the calculation for 
+     * minlength. Canonical match will be performed slightly differently. We'll 
+     * split the pattern into 3 parts, the prefix accents (PA), the middle 
+     * string bounded by the first and last base character (MS), the ending 
+     * accents (EA). Matches will be done on MS first, and only when we match 
+     * MS then some processing will be required for the prefix and end accents 
+     * in order to determine if they match PA and EA. Hence the default shift 
+     * values for the canonical match will take the size of either end's accent 
+     * into consideration. Forwards search will take the end accents into 
+     * consideration for the default shift values and the backwards search will 
+     * take the prefix accents into consideration.</p>
+     * <p>If pattern has no non-ignorable ce, we return a illegal argument 
+     * error.</p>
+     */ 
+    private final void initialize()
+    {
+        int expandlength  = initializePattern();   
+        if (m_pattern_.m_CELength_ > 0) {
+            char minlength = (char)(m_pattern_.m_CELength_ > expandlength 
+                                ? m_pattern_.m_CELength_ - expandlength : 1);
+            m_pattern_.m_defaultShiftSize_ = minlength;
+            setShiftTable(m_pattern_.m_shift_, m_pattern_.m_backShift_, 
+                          m_pattern_.m_CE_, m_pattern_.m_CELength_, 
+                          expandlength, minlength, minlength);
+        }
+        else {
+            m_pattern_.m_defaultShiftSize_ = 0;
+        }
+    }
+    
+    /**
+     * Determine whether the search text bounded by the offset start and end is 
+     * one or more whole units of text as determined by the breakiterator in 
+     * StringSearch.
+     * @param start target text start offset
+     * @param end target text end offset
+     */
+    private final boolean isBreakUnit(int start, int end) 
+    {
+        if (breakIterator != null) {
+            int startindex = breakIterator.first();
+            int endindex   = breakIterator.last();
+            
+            // out-of-range indexes are never boundary positions
+            if (start < startindex || start > endindex || end < startindex 
+                || end > endindex) {
+                return false;
+            }
+            // otherwise, we can use following() on the position before the 
+            // specified one and return true of the position we get back is the 
+            // one the user specified
+            boolean result = (start == startindex 
+                              || breakIterator.following(start - 1) == start) 
+                             && (end == endindex 
+                                  || breakIterator.following(end - 1) == end);
+            if (result) {
+                // iterates the individual ces
+                m_utilColEIter_.setText(
+                    new CharacterIteratorWrapper(targetText), start);
+                for (int count = 0; count < m_pattern_.m_CELength_;
+                     count ++) {
+                    int ce = getCE(m_utilColEIter_.next());
+                    if (ce == CollationElementIterator.IGNORABLE) {
+                        count --;
+                        continue;
+                    }
+                    if (ce != m_pattern_.m_CE_[count]) {
+                        return false;
+                    }
+                }
+                int nextce = m_utilColEIter_.next();
+                while (m_utilColEIter_.getOffset() == end 
+                       && getCE(nextce) == CollationElementIterator.IGNORABLE) {
+                    nextce = m_utilColEIter_.next();       
+                }
+                if (nextce != CollationElementIterator.NULLORDER 
+                    && m_utilColEIter_.getOffset() == end) {
+                    // extra collation elements at the end of the match
+                    return false;
+                }
+            }
+            return result;
+        }
+        return true;
+    }
+    
+    /**
+     * Getting the next base character offset if current offset is an accent, 
+     * or the current offset if the current character contains a base character. 
+     * accents the following base character will be returned
+     * @param text string
+     * @param textoffset current offset
+     * @param textlength length of text string
+     * @return the next base character or the current offset
+     *         if the current character is contains a base character.
+     */
+    private final int getNextBaseOffset(CharacterIterator text, 
+                                                        int textoffset)
+    {
+        if (textoffset < text.getEndIndex()) {
+            while (text.getIndex() < text.getEndIndex()) { 
+                int result = textoffset;
+                if ((getFCD(text, textoffset ++) 
+                            >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+                     return result;
+                }
+            }
+            return text.getEndIndex();
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Gets the next base character offset depending on the string search 
+     * pattern data
+     * @param textoffset one offset away from the last character
+     *                   to search for.
+     * @return start index of the next base character or the current offset
+     *         if the current character is contains a base character.
+     */
+    private final int getNextBaseOffset(int textoffset)
+    {
+        if (m_pattern_.m_hasSuffixAccents_ 
+            && textoffset < m_textLimitOffset_) {
+            targetText.setIndex(textoffset);
+            targetText.previous();
+            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+                return getNextBaseOffset(targetText, textoffset);
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Shifting the collation element iterator position forward to prepare for
+     * a following match. If the last character is a unsafe character, we'll 
+     * only shift by 1 to capture contractions, normalization etc.
+     * Internal method, status assumed to be success.
+     * @param textoffset start text position to do search
+     * @param ce the text ce which failed the match.
+     * @param patternceindex index of the ce within the pattern ce buffer which
+     *        failed the match
+     * @return final offset
+     */
+    private int shiftForward(int textoffset, int ce, int patternceindex)
+                                    
+    {
+        if (ce != CollationElementIterator.NULLORDER) {
+            int shift = m_pattern_.m_shift_[hash(ce)];
+            // this is to adjust for characters in the middle of the 
+            // substring for matching that failed.
+            int adjust = m_pattern_.m_CELength_ - patternceindex;
+            if (adjust > 1 && shift >= adjust) {
+                shift -= adjust - 1;
+            }
+            textoffset += shift;
+        }
+        else {
+            textoffset += m_pattern_.m_defaultShiftSize_;
+        }
+         
+        textoffset = getNextBaseOffset(textoffset);
+        // check for unsafe characters
+        // * if it is the start or middle of a contraction: to be done after 
+        //   a initial match is found
+        // * thai or lao base consonant character: similar to contraction
+        // * high surrogate character: similar to contraction
+        // * next character is a accent: shift to the next base character
+        return textoffset;
+    }
+    
+    /**
+     * Gets the offset to the next safe point in text.
+     * ie. not the middle of a contraction, swappable characters or 
+     * supplementary characters.
+     * @param textoffset offset in string
+     * @param end offset in string
+     * @return offset to the next safe character
+     */
+    private final int getNextSafeOffset(int textoffset, int end)
+    {
+        int result = textoffset; // first contraction character
+        targetText.setIndex(result);
+        while (result != end && 
+            m_collator_.isUnsafe(targetText.current())) {
+               result ++;
+               targetText.setIndex(result);
+        }
+        return result; 
+    }
+    
+    /** 
+     * This checks for accents in the potential match started with a composite 
+     * character.
+     * This is really painful... we have to check that composite character do 
+     * not have any extra accents. We have to normalize the potential match and 
+     * find the immediate decomposed character before the match.
+     * The first composite character would have been taken care of by the fcd 
+     * checks in checkForwardExactMatch.
+     * This is the slow path after the fcd of the first character and 
+     * the last character has been checked by checkForwardExactMatch and we 
+     * determine that the potential match has extra non-ignorable preceding
+     * ces.
+     * E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+     * checkExtraMatchAccent should fail since there is a middle ring in 
+     * \u01FA Note here that accents checking are slow and cautioned in the API 
+     * docs.
+     * Internal method, status assumed to be a success, caller should check 
+     * status before calling this method
+     * @param start index of the potential unfriendly composite character
+     * @param end index of the potential unfriendly composite character
+     * @return true if there is non-ignorable accents before at the beginning
+     *              of the match, false otherwise.
+     */
+    private final boolean checkExtraMatchAccents(int start, int end)
+    {
+        boolean result = false;
+        if (m_pattern_.m_hasPrefixAccents_) {
+            targetText.setIndex(start);
+            
+            if (UTF16.isLeadSurrogate(targetText.next())) {
+                if (!UTF16.isTrailSurrogate(targetText.next())) {
+                    targetText.previous();
+                }
+            }
+            // we are only concerned with the first composite character
+            String str = getString(targetText, start, end);
+            if (Normalizer.quickCheck(str, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+                int safeoffset = getNextSafeOffset(start, end);
+                if (safeoffset != end) {
+                    safeoffset ++;
+                }
+                String decomp = Normalizer.decompose(
+                                str.substring(0, safeoffset - start), false);
+                m_utilColEIter_.setText(decomp);
+                int firstce = m_pattern_.m_CE_[0];
+                boolean ignorable = true;
+                int ce = CollationElementIterator.IGNORABLE;
+                int offset = 0;
+                while (ce != firstce) {
+                    offset = m_utilColEIter_.getOffset();
+                    if (ce != firstce 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                        ignorable = false;
+                    }
+                    ce = m_utilColEIter_.next();
+                }
+                m_utilColEIter_.setExactOffset(offset); // back up 1 to the 
+                m_utilColEIter_.previous();             // right offset
+                offset = m_utilColEIter_.getOffset();
+                result = !ignorable && (UCharacter.getCombiningClass(
+                                            UTF16.charAt(decomp, offset)) != 0);
+            }
+        }
+    
+        return result;
+    }
+    
+    /**
+    * Used by exact matches, checks if there are accents before the match. 
+    * This is really painful... we have to check that composite characters at
+    * the start of the matches have to not have any extra accents. 
+    * We check the FCD of the character first, if it starts with an accent and 
+    * the first pattern ce does not match the first ce of the character, we 
+    * bail.
+    * Otherwise we try normalizing the first composite 
+    * character and find the immediate decomposed character before the match to 
+    * see if it is an non-ignorable accent.
+    * Now normalizing the first composite character is enough because we ensure 
+    * that when the match is passed in here with extra beginning ces, the 
+    * first or last ce that match has to occur within the first character.
+    * E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+    * checkExtraMatchAccent should fail since there is a middle ring in \u01FA
+    * Note here that accents checking are slow and cautioned in the API docs.
+    * @param start offset 
+    * @param end offset
+    * @return true if there are accents on either side of the match, 
+    *         false otherwise
+    */
+    private final boolean hasAccentsBeforeMatch(int start, int end) 
+    {
+        if (m_pattern_.m_hasPrefixAccents_) {
+            // we have been iterating forwards previously
+            boolean ignorable = true;
+            int firstce = m_pattern_.m_CE_[0];
+            m_colEIter_.setExactOffset(start);
+            int ce  = getCE(m_colEIter_.next());
+            while (ce != firstce) {
+                if (ce != CollationElementIterator.IGNORABLE) {
+                    ignorable = false;
+                }
+                ce = getCE(m_colEIter_.next());
+            }
+            if (!ignorable && m_colEIter_.isInBuffer()) {
+                // within normalization buffer, discontiguous handled here
+                return true;
+            }
+    
+            // within text
+            boolean accent = (getFCD(targetText, start) >> SECOND_LAST_BYTE_SHIFT_)
+                                                        != 0; 
+            if (!accent) {
+                return checkExtraMatchAccents(start, end);
+            }
+            if (!ignorable) {
+                return true;
+            }
+            if (start > m_textBeginOffset_) {
+                targetText.setIndex(start);
+                targetText.previous();
+                if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) 
+                                                                        != 0) {
+                    m_colEIter_.setExactOffset(start);
+                    ce = m_colEIter_.previous();
+                    if (ce != CollationElementIterator.NULLORDER 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                        return true;
+                    }
+                }
+            }
+        }
+      
+        return false;
+    }
+    
+    /**
+     * Used by exact matches, checks if there are accents bounding the match.
+     * Note this is the initial boundary check. If the potential match
+     * starts or ends with composite characters, the accents in those
+     * characters will be determined later.
+     * Not doing backwards iteration here, since discontiguos contraction for 
+     * backwards collation element iterator, use up too many characters.
+     * E.g. looking for \u030A ring in \u01FA A ring above and acute, 
+     * should fail since there is a acute at the end of \u01FA
+     * Note here that accents checking are slow and cautioned in the API docs.
+     * @param start offset of match
+     * @param end end offset of the match
+     * @return true if there are accents on either side of the match, 
+     *         false otherwise
+     */
+    private final boolean hasAccentsAfterMatch(int start, int end) 
+    {
+        if (m_pattern_.m_hasSuffixAccents_) {
+            targetText.setIndex(end);
+            if (end > m_textBeginOffset_ 
+                && UTF16.isTrailSurrogate(targetText.previous())) {
+                if (targetText.getIndex() > m_textBeginOffset_ &&
+                    !UTF16.isLeadSurrogate(targetText.previous())) {
+                    targetText.next();
+                }
+            }
+            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+                int firstce  = m_pattern_.m_CE_[0];
+                m_colEIter_.setExactOffset(start);
+                while (getCE(m_colEIter_.next()) != firstce) {
+                }
+                int count = 1;
+                while (count < m_pattern_.m_CELength_) {
+                    if (getCE(m_colEIter_.next()) 
+                        == CollationElementIterator.IGNORABLE) {
+                        count --;
+                    }
+                    count ++;
+                }
+                //int ce = getCE(m_colEIter_.next());
+                int ce = m_colEIter_.next();
+                if (ce != CollationElementIterator.NULLORDER 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                    ce = getCE(ce);
+                }
+                if (ce != CollationElementIterator.NULLORDER 
+                            && ce != CollationElementIterator.IGNORABLE) {
+                    if (m_colEIter_.getOffset() <= end) {
+                        return true;
+                    }
+                    if ((getFCD(targetText, end) >> SECOND_LAST_BYTE_SHIFT_) 
+                        != 0) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+    
+    /**
+    * Checks if the offset runs out of the text string range
+    * @param textstart offset of the first character in the range
+    * @param textlimit limit offset of the text string range
+    * @param offset to test
+    * @return true if offset is out of bounds, false otherwise
+    */
+    private static final boolean isOutOfBounds(int textstart, int textlimit, 
+                                                int offset)
+    {
+        return offset < textstart || offset > textlimit;
+    }
+    
+    /**
+     * Checks for identical match
+     * @param strsrch string search data
+     * @param start offset of possible match
+     * @param end offset of possible match
+     * @return true if identical match is found
+     */
+    private final boolean checkIdentical(int start, int end) 
+    {
+        if (m_collator_.getStrength() != Collator.IDENTICAL) {
+            return true;
+        }
+    
+        String textstr = getString(targetText, start, end - start);
+        if (Normalizer.quickCheck(textstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            textstr = Normalizer.decompose(textstr, false);
+        }
+        String patternstr = m_pattern_.targetText;
+        if (Normalizer.quickCheck(patternstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            patternstr = Normalizer.decompose(patternstr, false);
+        }
+        return textstr.equals(patternstr);
+    }
+    
+    /**
+     * Checks to see if the match is repeated
+     * @param start new match start index
+     * @param limit new match limit index
+     * @return true if the the match is repeated, false otherwise
+     */
+    private final boolean checkRepeatedMatch(int start, int limit)
+    {
+        if (m_matchedIndex_ == DONE) {
+            return false;
+        }
+        int end = limit - 1; // last character in the match
+        int lastmatchend = m_matchedIndex_ + matchLength - 1; 
+        if (!isOverlapping()) {
+            return (start >= m_matchedIndex_ && start <= lastmatchend) 
+                    || (end >= m_matchedIndex_ && end <= lastmatchend)
+                    || (start <= m_matchedIndex_ && end >= lastmatchend);
+                      
+        }
+        return start <= m_matchedIndex_ && end >= lastmatchend;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match ends with a partial contraction we fail.
+     * If the match starts too far off (because of backwards iteration) we try 
+     * to chip off the extra characters depending on whether a breakiterator 
+     * has been used.
+     * Temporary utility buffer used to return modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private final boolean checkNextExactContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char endchar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            endchar = targetText.current();
+        }
+        char poststartchar = 0;
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            poststartchar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(endchar) 
+            || m_collator_.isUnsafe(poststartchar)) {
+            // expansion prefix, what's left to iterate
+            int bufferedCEOffset = m_colEIter_.m_CEBufferOffset_;
+            boolean hasBufferedCE = bufferedCEOffset > 0;
+            m_colEIter_.setExactOffset(start);
+            int temp = start;
+            while (bufferedCEOffset > 0) {
+                // getting rid of the redundant ce, caused by setOffset.
+                // since backward contraction/expansion may have extra ces if 
+                // we are in the normalization buffer, hasAccentsBeforeMatch 
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for acute and ring \u030A and \u0301, 
+                // we'll have to skip the first ce in the expansion buffer.
+                m_colEIter_.next();
+                if (m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp  = m_colEIter_.getOffset();
+                }
+                bufferedCEOffset --;
+            }
+    
+            int count = 0;
+            while (count < m_pattern_.m_CELength_) {
+                int ce = getCE(m_colEIter_.next());
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasBufferedCE && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp   = m_colEIter_.getOffset();
+                }
+                if (ce != m_pattern_.m_CE_[count]) {
+                    end ++;
+                    end = getNextBaseOffset(end);  
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count ++;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> exact matches has no extra accents
+     * <li> identical matchesb
+     * <li> potential match does not end in the middle of a contraction
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+     * more fitting result value.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text.
+     * @return true if the match is valid, false otherwise
+     */
+    private final boolean checkNextExactMatch(int textoffset)
+    {
+        int start = m_colEIter_.getOffset();        
+        if (!checkNextExactContractionMatch(start, textoffset)) {
+            // returns the modified textoffset
+            m_utilBuffer_[0] = m_utilBuffer_[1];
+            return false;
+        }
+    
+        start = m_utilBuffer_[0];
+        textoffset = m_utilBuffer_[1];
+        // this totally matches, however we need to check if it is repeating
+        if (!isBreakUnit(start, textoffset) 
+            || checkRepeatedMatch(start, textoffset) 
+            || hasAccentsBeforeMatch(start, textoffset) 
+            || !checkIdentical(start, textoffset) 
+            || hasAccentsAfterMatch(start, textoffset)) {
+            textoffset ++;
+            textoffset = getNextBaseOffset(textoffset);  
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            textoffset = checkBreakBoundary(textoffset);
+        }
+            
+        // totally match, we will get rid of the ending ignorables.
+        m_matchedIndex_  = start;
+        matchLength = textoffset - start;
+        return true;
+    }
+    
+    /**
+    * Getting the previous base character offset, or the current offset if the 
+    * current character is a base character
+    * @param text the source text to work on
+    * @param textoffset one offset after the current character
+    * @return the offset of the next character after the base character or the 
+    *             first composed character with accents
+    */
+    private final int getPreviousBaseOffset(CharacterIterator text, 
+                                            int textoffset)
+    {
+        if (textoffset > m_textBeginOffset_) {
+            while (true) {
+                int result = textoffset;
+                text.setIndex(result);
+                if (UTF16.isTrailSurrogate(text.previous())) {
+                    if (text.getIndex() != text.getBeginIndex() &&
+                        !UTF16.isLeadSurrogate(text.previous())) {
+                        text.next();
+                    }
+                }
+                textoffset = text.getIndex();
+                char fcd = getFCD(text, textoffset);
+                if ((fcd >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+                    if ((fcd & LAST_BYTE_MASK_) != 0) {
+                        return textoffset;
+                    }
+                    return result;
+                }
+                if (textoffset == m_textBeginOffset_) {
+                    return m_textBeginOffset_;
+                }
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+    * Getting the indexes of the accents that are not blocked in the argument
+    * accent array
+    * @param accents accents in nfd.
+    * @param accentsindex array to store the indexes of accents in accents that 
+    *         are not blocked
+    * @return the length of populated accentsindex
+    */
+    private int getUnblockedAccentIndex(StringBuffer accents, 
+                                        int accentsindex[])
+    {
+        int index = 0;
+        int length = accents.length();
+        int cclass = 0;
+        int result = 0;
+        while (index < length) {
+            int codepoint = UTF16.charAt(accents, index);
+            int tempclass = UCharacter.getCombiningClass(codepoint);
+            if (tempclass != cclass) {
+                cclass = tempclass;
+                accentsindex[result] = index;
+                result ++;
+            }
+            if (UCharacter.isSupplementary(codepoint)) {
+                index += 2;
+            }
+            else {
+                index ++;
+            }
+        }
+        accentsindex[result] = length;
+        return result;
+    }
+
+    /**
+     * Appends 3 StringBuffer/CharacterIterator together into a destination 
+     * string buffer.
+     * @param source1 string buffer
+     * @param source2 character iterator
+     * @param start2 start of the character iterator to merge
+     * @param end2 end of the character iterator to merge
+     * @param source3 string buffer
+     * @return appended string buffer
+     */
+    private static final StringBuffer merge(StringBuffer source1, 
+                                             CharacterIterator source2,
+                                             int start2, int end2,
+                                             StringBuffer source3) 
+    {
+        StringBuffer result = new StringBuffer();    
+        if (source1 != null && source1.length() != 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source1);
+            }else{
+                result.append(source1.toString());
+            }
+        }
+        source2.setIndex(start2);
+        while (source2.getIndex() < end2) {
+            result.append(source2.current());
+            source2.next();
+        }
+        if (source3 != null && source3.length() != 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source3);
+            }else{
+                result.append(source3.toString());
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Running through a collation element iterator to see if the contents 
+    * matches pattern in string search data
+    * @param coleiter collation element iterator to test
+    * @return true if a match if found, false otherwise
+    */
+    private final boolean checkCollationMatch(CollationElementIterator coleiter)
+    {
+        int patternceindex = m_pattern_.m_CELength_;
+        int offset = 0;
+        while (patternceindex > 0) {
+            int ce = getCE(coleiter.next());
+            if (ce == CollationElementIterator.IGNORABLE) {
+                continue;
+            }
+            if (ce != m_pattern_.m_CE_[offset]) {
+                return false;
+            }
+            offset ++;
+            patternceindex --;
+        }
+        return true;
+    }
+    
+    /**
+     * Rearranges the front accents to try matching.
+     * Prefix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *            substrings "\u030A", "\u0301", "\u0325", "\u030A\u0301", 
+     *            "\u030A\u0325", "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * Internal method, status is assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param start first offset of the accents to start searching
+     * @param end start of the last accent set
+     * @return DONE if a match is not found, otherwise return the starting
+     *         offset of the match. Note this start includes all preceding 
+     *            accents.
+     */
+    private int doNextCanonicalPrefixMatch(int start, int end)
+    {
+        if ((getFCD(targetText, start) & LAST_BYTE_MASK_) == 0) {
+            // die... failed at a base character
+            return DONE;
+        }
+    
+        start = targetText.getIndex(); // index changed by fcd
+        int offset = getNextBaseOffset(targetText, start);
+        start = getPreviousBaseOffset(start);
+    
+        StringBuffer accents = new StringBuffer();
+        String accentstr = getString(targetText, start, offset - start);
+        // normalizing the offensive string
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+        int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+        int count = (2 << (accentsize - 1)) - 1;  
+        while (count > 0) {
+            // copy the base characters
+            m_canonicalPrefixAccents_.delete(0, 
+                                        m_canonicalPrefixAccents_.length());
+            int k = 0;
+            for (; k < accentsindex[0]; k ++) {
+                m_canonicalPrefixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= accentsize - 1; i ++) {
+                int mask = 1 << (accentsize - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                                                                        j ++) {
+                        m_canonicalPrefixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            StringBuffer match = merge(m_canonicalPrefixAccents_,
+                                       targetText, offset, end,
+                                       m_canonicalSuffixAccents_);
+                
+            // if status is a failure, ucol_setText does nothing.
+            // run the collator iterator through this match
+            m_utilColEIter_.setText(match.toString());
+            if (checkCollationMatch(m_utilColEIter_)) {
+                 return start;
+            }
+            count --;
+        }
+        return DONE;
+    }
+
+    /**
+    * Gets the offset to the safe point in text before textoffset.
+    * ie. not the middle of a contraction, swappable characters or 
+    * supplementary characters.
+    * @param start offset in string
+    * @param textoffset offset in string
+    * @return offset to the previous safe character
+    */
+    private final int getPreviousSafeOffset(int start, int textoffset)
+    {
+        int result = textoffset; // first contraction character
+        targetText.setIndex(textoffset);
+        while (result >= start && m_collator_.isUnsafe(targetText.previous())) {
+            result = targetText.getIndex();
+        }
+        if (result != start) {
+            // the first contraction character is consider unsafe here
+            result = targetText.getIndex(); // originally result --;
+        }
+        return result; 
+    }
+
+    /**
+     * Take the rearranged end accents and tries matching. If match failed at
+     * a seperate preceding set of accents (seperated from the rearranged on by
+     * at least a base character) then we rearrange the preceding accents and 
+     * tries matching again.
+     * We allow skipping of the ends of the accent set if the ces do not match. 
+     * However if the failure is found before the accent set, it fails.
+     * Internal method, status assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param textoffset of the start of the rearranged accent
+     * @return DONE if a match is not found, otherwise return the starting
+     *         offset of the match. Note this start includes all preceding 
+     *         accents.
+     */
+    private int doNextCanonicalSuffixMatch(int textoffset)
+    {
+        int safelength = 0;
+        StringBuffer safetext;
+        int safeoffset = m_textBeginOffset_; 
+        
+        if (textoffset != m_textBeginOffset_ 
+            && m_canonicalSuffixAccents_.length() > 0
+            && m_collator_.isUnsafe(m_canonicalSuffixAccents_.charAt(0))) {
+            safeoffset     = getPreviousSafeOffset(m_textBeginOffset_, 
+                                                    textoffset);
+            safelength     = textoffset - safeoffset;
+            safetext       = merge(null, targetText, safeoffset, textoffset, 
+                                   m_canonicalSuffixAccents_);
+        }
+        else {
+            safetext = m_canonicalSuffixAccents_;
+        }
+    
+        // if status is a failure, ucol_setText does nothing
+        CollationElementIterator coleiter = m_utilColEIter_;
+        coleiter.setText(safetext.toString());
+        // status checked in loop below
+    
+        int ceindex = m_pattern_.m_CELength_ - 1;
+        boolean isSafe = true; // indication flag for position in safe zone
+        
+        while (ceindex >= 0) {
+            int textce = coleiter.previous();
+            if (textce == CollationElementIterator.NULLORDER) {
+                // check if we have passed the safe buffer
+                if (coleiter == m_colEIter_) {
+                    return DONE;
+                }
+                coleiter = m_colEIter_;
+                if (safetext != m_canonicalSuffixAccents_) {
+                    safetext.delete(0, safetext.length());
+                }
+                coleiter.setExactOffset(safeoffset);
+                // status checked at the start of the loop
+                isSafe = false;
+                continue;
+            }
+            textce = getCE(textce);
+            if (textce != CollationElementIterator.IGNORABLE 
+                && textce != m_pattern_.m_CE_[ceindex]) {
+                // do the beginning stuff
+                int failedoffset = coleiter.getOffset();
+                if (isSafe && failedoffset >= safelength) {
+                    // alas... no hope. failed at rearranged accent set
+                    return DONE;
+                }
+                else {
+                    if (isSafe) {
+                        failedoffset += safeoffset;
+                    }
+                    
+                    // try rearranging the front accents
+                    int result = doNextCanonicalPrefixMatch(failedoffset, 
+                                                            textoffset);
+                    if (result != DONE) {
+                        // if status is a failure, ucol_setOffset does nothing
+                        m_colEIter_.setExactOffset(result);
+                    }
+                    return result;
+                }
+            }
+            if (textce == m_pattern_.m_CE_[ceindex]) {
+                ceindex --;
+            }
+        }
+        // set offset here
+        if (isSafe) {
+            int result = coleiter.getOffset();
+            // sets the text iterator with the correct expansion and offset
+            int leftoverces = coleiter.m_CEBufferOffset_;
+            if (result >= safelength) { 
+                result = textoffset;
+            }
+            else {
+                result += safeoffset;
+            }
+            m_colEIter_.setExactOffset(result);
+            m_colEIter_.m_CEBufferOffset_ = leftoverces;
+            return result;
+        }
+        
+        return coleiter.getOffset();              
+    }
+    
+    /**
+     * Trying out the substring and sees if it can be a canonical match.
+     * This will try normalizing the end accents and arranging them into 
+     * canonical equivalents and check their corresponding ces with the pattern 
+     * ce.
+     * Suffix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *         substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param textoffset end offset in the collation element text that ends with 
+     *                   the accents to be rearranged
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean doNextCanonicalMatch(int textoffset)
+    {
+        int offset = m_colEIter_.getOffset();
+        targetText.setIndex(textoffset);
+        if (UTF16.isTrailSurrogate(targetText.previous()) 
+            && targetText.getIndex() > m_textBeginOffset_) { 
+            if (!UTF16.isLeadSurrogate(targetText.previous())) {
+                targetText.next();
+            }
+        }
+        if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+            if (m_pattern_.m_hasPrefixAccents_) {
+                offset = doNextCanonicalPrefixMatch(offset, textoffset);
+                if (offset != DONE) {
+                    m_colEIter_.setExactOffset(offset);
+                    return true;
+                }
+            }
+            return false;
+        }
+    
+        if (!m_pattern_.m_hasSuffixAccents_) {
+            return false;
+        }
+    
+        StringBuffer accents = new StringBuffer();
+        // offset to the last base character in substring to search
+        int baseoffset = getPreviousBaseOffset(targetText, textoffset);
+        // normalizing the offensive string
+        String accentstr = getString(targetText, baseoffset, 
+                                     textoffset - baseoffset);
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);
+        // status checked in loop below
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+        int size = getUnblockedAccentIndex(accents, accentsindex);
+    
+        // 2 power n - 1 plus the full set of accents
+        int  count = (2 << (size - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                m_canonicalSuffixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= size - 1; i ++) {
+                int mask = 1 << (size - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                        j ++) {
+                        m_canonicalSuffixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            offset = doNextCanonicalSuffixMatch(baseoffset);
+            if (offset != DONE) {
+                return true; // match found
+            }
+            count --;
+        }
+        return false;
+    }
+    
+    /**
+     * Gets the previous base character offset depending on the string search 
+     * pattern data
+     * @param strsrch string search data
+     * @param textoffset current offset, current character
+     * @return the offset of the next character after this base character or 
+     *             itself if it is a composed character with accents
+     */
+    private final int getPreviousBaseOffset(int textoffset)
+    {
+        if (m_pattern_.m_hasPrefixAccents_ && textoffset > m_textBeginOffset_) {
+            int offset = textoffset;
+            if ((getFCD(targetText, offset) >> SECOND_LAST_BYTE_SHIFT_) != 0) {
+                return getPreviousBaseOffset(targetText, textoffset);
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match ends with a partial contraction we fail.
+     * If the match starts too far off (because of backwards iteration) we try 
+     * to chip off the extra characters.
+     * Uses the temporary util buffer for return values of the modified start
+     * and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise. 
+     */
+    private boolean checkNextCanonicalContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char schar = 0;
+        char echar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        if (start < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            int expansion  = m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(start);
+            int temp = start;
+            while (expansion > 0) {
+                // getting rid of the redundant ce, caused by setOffset.
+                // since backward contraction/expansion may have extra ces if 
+                // we are in the normalization buffer, hasAccentsBeforeMatch 
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for acute and ring \u030A and \u0301, 
+                // we'll have to skip the first ce in the expansion buffer.
+                m_colEIter_.next();
+                if (m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp  = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = 0;
+            while (count < m_pattern_.m_CELength_) {
+                int ce = getCE(m_colEIter_.next());
+                // status checked below, note that if status is a failure
+                // ucol_next returns UCOL_NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+    
+                if (count == 0 && ce != m_pattern_.m_CE_[0]) {
+                    // accents may have extra starting ces, this occurs when a 
+                    // pure accent pattern is matched without rearrangement
+                    // text \u0325\u0300 and looking for \u0300
+                    int expected = m_pattern_.m_CE_[0]; 
+                    if ((getFCD(targetText, start) & LAST_BYTE_MASK_) != 0) {
+                        ce = getCE(m_colEIter_.next());
+                        while (ce != expected 
+                               && ce != CollationElementIterator.NULLORDER 
+                               && m_colEIter_.getOffset() <= end) {
+                            ce = getCE(m_colEIter_.next());
+                        }
+                    }
+                }
+                if (ce != m_pattern_.m_CE_[count]) {
+                    end ++;
+                    end = getNextBaseOffset(end);  
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count ++;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> potential match does not end in the middle of a contraction
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+     * more fitting result value.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text.
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean checkNextCanonicalMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        // if we have a canonical accent match
+        if ((m_pattern_.m_hasSuffixAccents_ 
+                && m_canonicalSuffixAccents_.length() != 0) || 
+            (m_pattern_.m_hasPrefixAccents_ 
+                && m_canonicalPrefixAccents_.length() != 0)) {
+            m_matchedIndex_ = getPreviousBaseOffset(m_colEIter_.getOffset());
+            matchLength = textoffset - m_matchedIndex_;
+            return true;
+        }
+    
+        int start = m_colEIter_.getOffset();
+        if (!checkNextCanonicalContractionMatch(start, textoffset)) {
+            // return the modified textoffset
+            m_utilBuffer_[0] = m_utilBuffer_[1]; 
+            return false;
+        }
+        start = m_utilBuffer_[0];
+        textoffset = m_utilBuffer_[1];
+        start = getPreviousBaseOffset(start);
+        // this totally matches, however we need to check if it is repeating
+        if (checkRepeatedMatch(start, textoffset) 
+            || !isBreakUnit(start, textoffset) 
+            || !checkIdentical(start, textoffset)) {
+            textoffset ++;
+            textoffset = getNextBaseOffset(targetText, textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        m_matchedIndex_  = start;
+        matchLength = textoffset - start;
+        return true;
+    }
+    
+    /**
+     * Shifting the collation element iterator position forward to prepare for
+     * a preceding match. If the first character is a unsafe character, we'll 
+     * only shift by 1 to capture contractions, normalization etc.
+     * @param textoffset start text position to do search
+     * @param ce the text ce which failed the match.
+     * @param patternceindex index of the ce within the pattern ce buffer which
+     *        failed the match
+     * @return final offset
+     */
+    private int reverseShift(int textoffset, int ce, int patternceindex)
+    {         
+        if (isOverlapping()) {
+            if (textoffset != m_textLimitOffset_) {
+                textoffset --;
+            }
+            else {
+                textoffset -= m_pattern_.m_defaultShiftSize_;
+            }
+        }
+        else {
+            if (ce != CollationElementIterator.NULLORDER) {
+                int shift = m_pattern_.m_backShift_[hash(ce)];
+                
+                // this is to adjust for characters in the middle of the substring 
+                // for matching that failed.
+                int adjust = patternceindex;
+                if (adjust > 1 && shift > adjust) {
+                    shift -= adjust - 1;
+                }
+                textoffset -= shift;
+            }
+            else {
+                textoffset -= m_pattern_.m_defaultShiftSize_;
+            }
+        }    
+        
+        textoffset = getPreviousBaseOffset(textoffset);
+        return textoffset;
+    }
+
+    /**
+     * Checks match for contraction. 
+     * If the match starts with a partial contraction we fail.
+     * Uses the temporary utility buffer to return the modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private boolean checkPreviousExactContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char echar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        char schar = 0;
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            // expansion suffix, what's left to iterate
+            int expansion = m_colEIter_.m_CEBufferSize_ 
+                                            - m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(end);
+            int temp = end;
+            while (expansion > 0) {
+                // getting rid of the redundant ce
+                // since forward contraction/expansion may have extra ces
+                // if we are in the normalization buffer, hasAccentsBeforeMatch
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but if
+                // we are only looking for A ring A\u030A, we'll have to skip the 
+                // last ce in the expansion buffer
+                m_colEIter_.previous();
+                if (m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = m_pattern_.m_CELength_;
+            while (count > 0) {
+                int ce = getCE(m_colEIter_.previous());
+                // status checked below, note that if status is a failure
+                // ucol_previous returns UCOL_NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                if (ce != m_pattern_.m_CE_[count - 1]) {
+                    start --;
+                    start = getPreviousBaseOffset(targetText, start);
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count --;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the current match does not repeat the last match
+     * <li> boundaries are correct
+     * <li> exact matches has no extra accents
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the preceding character.
+     * Uses the temporary utility buffer to store the modified textoffset.
+     * @param textoffset offset in the collation element text. the returned value
+     *        will be the truncated start offset of the match or the new start 
+     *        search offset.
+     * @return true if the match is valid, false otherwise
+     */
+    private final boolean checkPreviousExactMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        int end = m_colEIter_.getOffset();        
+        if (!checkPreviousExactContractionMatch(textoffset, end)) {
+            return false;
+        }
+        textoffset = m_utilBuffer_[0];
+        end = m_utilBuffer_[1];
+            
+        // this totally matches, however we need to check if it is repeating
+        // the old match
+        if (checkRepeatedMatch(textoffset, end) 
+            || !isBreakUnit(textoffset, end) 
+            || hasAccentsBeforeMatch(textoffset, end) 
+            || !checkIdentical(textoffset, end) 
+            || hasAccentsAfterMatch(textoffset, end)) {
+            textoffset --;
+            textoffset = getPreviousBaseOffset(targetText, textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            end = checkBreakBoundary(end);
+        }
+        
+        m_matchedIndex_ = textoffset;
+        matchLength = end - textoffset;
+        return true;
+    }
+
+    /**
+     * Rearranges the end accents to try matching.
+     * Suffix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *             substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param start offset of the first base character
+     * @param end start of the last accent set
+     * @return DONE if a match is not found, otherwise return the ending
+     *         offset of the match. Note this start includes all following 
+     *         accents.
+     */
+    private int doPreviousCanonicalSuffixMatch(int start, int end)
+    {
+        targetText.setIndex(end);
+        if (UTF16.isTrailSurrogate(targetText.previous()) 
+            && targetText.getIndex() > m_textBeginOffset_) {
+            if (!UTF16.isLeadSurrogate(targetText.previous())) {
+                targetText.next();
+            } 
+        }
+        if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+            // die... failed at a base character
+            return DONE;
+        }
+        end = getNextBaseOffset(targetText, end);
+    
+        StringBuffer accents = new StringBuffer();
+        int offset = getPreviousBaseOffset(targetText, end);
+        // normalizing the offensive string
+        String accentstr = getString(targetText, offset, end - offset);
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);    
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+        int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+        int count = (2 << (accentsize - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                 m_canonicalSuffixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= accentsize - 1; i ++) {
+                int mask = 1 << (accentsize - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                                                                        j ++) {
+                        m_canonicalSuffixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            StringBuffer match = merge(m_canonicalPrefixAccents_, targetText,
+                                        start, offset, 
+                                        m_canonicalSuffixAccents_);
+            // run the collator iterator through this match
+            // if status is a failure ucol_setText does nothing
+            m_utilColEIter_.setText(match.toString());
+            if (checkCollationMatch(m_utilColEIter_)) {
+                return end;
+            }
+            count --;
+        }
+        return DONE;
+    }
+    
+    /**
+     * Take the rearranged start accents and tries matching. If match failed at
+     * a seperate following set of accents (seperated from the rearranged on by
+     * at least a base character) then we rearrange the preceding accents and 
+     * tries matching again.
+     * We allow skipping of the ends of the accent set if the ces do not match. 
+     * However if the failure is found before the accent set, it fails.
+     * Internal method, status assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param textoffset of the ends of the rearranged accent
+     * @return DONE if a match is not found, otherwise return the ending offset 
+     *             of the match. Note this start includes all following accents.
+     */
+    private int doPreviousCanonicalPrefixMatch(int textoffset)
+    {
+       // int safelength = 0;
+        StringBuffer safetext;
+        int safeoffset = textoffset;
+    
+        if (textoffset > m_textBeginOffset_
+            && m_collator_.isUnsafe(m_canonicalPrefixAccents_.charAt(
+                                    m_canonicalPrefixAccents_.length() - 1))) {
+            safeoffset = getNextSafeOffset(textoffset, m_textLimitOffset_);
+            //safelength = safeoffset - textoffset;
+            safetext = merge(m_canonicalPrefixAccents_, targetText, textoffset, 
+                             safeoffset, null);
+        }
+        else {
+            safetext = m_canonicalPrefixAccents_;
+        }
+    
+        // if status is a failure, ucol_setText does nothing
+        CollationElementIterator coleiter = m_utilColEIter_;
+        coleiter.setText(safetext.toString());
+        // status checked in loop below
+        
+        int ceindex = 0;
+        boolean isSafe = true; // safe zone indication flag for position
+        int prefixlength = m_canonicalPrefixAccents_.length();
+        
+        while (ceindex < m_pattern_.m_CELength_) {
+            int textce = coleiter.next();
+            if (textce == CollationElementIterator.NULLORDER) {
+                // check if we have passed the safe buffer
+                if (coleiter == m_colEIter_) {
+                    return DONE;
+                }
+                if (safetext != m_canonicalPrefixAccents_) {
+                    safetext.delete(0, safetext.length());
+                }
+                coleiter = m_colEIter_;
+                coleiter.setExactOffset(safeoffset);
+                // status checked at the start of the loop
+                isSafe = false;
+                continue;
+            }
+            textce = getCE(textce);
+            if (textce != CollationElementIterator.IGNORABLE 
+                && textce != m_pattern_.m_CE_[ceindex]) {
+                // do the beginning stuff
+                int failedoffset = coleiter.getOffset();
+                if (isSafe && failedoffset <= prefixlength) {
+                    // alas... no hope. failed at rearranged accent set
+                    return DONE;
+                }
+                else {
+                    if (isSafe) {
+                        failedoffset = safeoffset - failedoffset;
+                        if (safetext != m_canonicalPrefixAccents_) {
+                            safetext.delete(0, safetext.length());
+                        }
+                    }
+                    
+                    // try rearranging the end accents
+                    int result = doPreviousCanonicalSuffixMatch(textoffset, 
+                                                                failedoffset);
+                    if (result != DONE) {
+                        // if status is a failure, ucol_setOffset does nothing
+                        m_colEIter_.setExactOffset(result);
+                    }
+                    return result;
+                }
+            }
+            if (textce == m_pattern_.m_CE_[ceindex]) {
+                ceindex ++;
+            }
+        }
+        // set offset here
+        if (isSafe) {
+            int result = coleiter.getOffset();
+            // sets the text iterator here with the correct expansion and offset
+            int leftoverces = coleiter.m_CEBufferSize_ 
+                                                - coleiter.m_CEBufferOffset_;
+            if (result <= prefixlength) { 
+                result = textoffset;
+            }
+            else {
+                result = textoffset + (safeoffset - result);
+            }
+            m_colEIter_.setExactOffset(result);
+            m_colEIter_.m_CEBufferOffset_ = m_colEIter_.m_CEBufferSize_ 
+                                                                - leftoverces;
+            return result;
+        }
+        
+        return coleiter.getOffset();              
+    }
+    
+    /**
+     * Trying out the substring and sees if it can be a canonical match.
+     * This will try normalizing the starting accents and arranging them into 
+     * canonical equivalents and check their corresponding ces with the pattern 
+     * ce.
+     * Prefix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *            substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param textoffset start offset in the collation element text that starts 
+     *                   with the accents to be rearranged
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean doPreviousCanonicalMatch(int textoffset)
+    {
+        int offset = m_colEIter_.getOffset();
+        if ((getFCD(targetText, textoffset) >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+            if (m_pattern_.m_hasSuffixAccents_) {
+                offset = doPreviousCanonicalSuffixMatch(textoffset, offset);
+                if (offset != DONE) {
+                    m_colEIter_.setExactOffset(offset);
+                    return true;
+                }
+            }
+            return false;
+        }
+    
+        if (!m_pattern_.m_hasPrefixAccents_) {
+            return false;
+        }
+    
+        StringBuffer accents = new StringBuffer();
+        // offset to the last base character in substring to search
+        int baseoffset = getNextBaseOffset(targetText, textoffset);
+        // normalizing the offensive string
+        String textstr = getString(targetText, textoffset, 
+                                                    baseoffset - textoffset);
+        if (Normalizer.quickCheck(textstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            textstr = Normalizer.decompose(textstr, false);
+        }
+        accents.append(textstr);
+        // status checked in loop
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+        int size = getUnblockedAccentIndex(accents, accentsindex);
+    
+        // 2 power n - 1 plus the full set of accents
+        int count = (2 << (size - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalPrefixAccents_.delete(0, 
+                                        m_canonicalPrefixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                m_canonicalPrefixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= size - 1; i ++) {
+                int mask = 1 << (size - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                         j ++) {
+                        m_canonicalPrefixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            offset = doPreviousCanonicalPrefixMatch(baseoffset);
+            if (offset != DONE) {
+                return true; // match found
+            }
+            count --;
+        }
+        return false;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match starts with a partial contraction we fail.
+     * Uses the temporary utility buffer to return the modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private boolean checkPreviousCanonicalContractionMatch(int start, int end) 
+    {
+        int temp = end;
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char echar = 0;
+        char schar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            int expansion = m_colEIter_.m_CEBufferSize_ 
+                                            - m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(end);
+            while (expansion > 0) {
+                // getting rid of the redundant ce
+                // since forward contraction/expansion may have extra ces
+                // if we are in the normalization buffer, hasAccentsBeforeMatch
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for A ring A\u030A, we'll have to 
+                // skip the last ce in the expansion buffer
+                m_colEIter_.previous();
+                if (m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = m_pattern_.m_CELength_;
+            while (count > 0) {
+                int ce = getCE(m_colEIter_.previous());
+                // status checked below, note that if status is a failure
+                // previous() returns NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                if (count == m_pattern_.m_CELength_ 
+                    && ce != m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1]) {
+                    // accents may have extra starting ces, this occurs when a 
+                    // pure accent pattern is matched without rearrangement
+                    int expected = m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1];
+                    targetText.setIndex(end);
+                    if (UTF16.isTrailSurrogate(targetText.previous())) {
+                        if (targetText.getIndex() > m_textBeginOffset_ &&
+                            !UTF16.isLeadSurrogate(targetText.previous())) {
+                            targetText.next();
+                        }
+                    }
+                    end = targetText.getIndex();
+                    if ((getFCD(targetText, end) & LAST_BYTE_MASK_) != 0) {
+                        ce = getCE(m_colEIter_.previous());
+                        while (ce != expected 
+                                && ce != CollationElementIterator.NULLORDER 
+                                && m_colEIter_.getOffset() <= start) {
+                            ce = getCE(m_colEIter_.previous());
+                        }
+                    }
+                }
+                if (ce != m_pattern_.m_CE_[count - 1]) {
+                    start --;
+                    start = getPreviousBaseOffset(start);
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count --;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> potential match does not end in the middle of a contraction
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text. the returned 
+     *             value will be the truncated start offset of the match or the 
+     *             new start search offset.
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean checkPreviousCanonicalMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        // if we have a canonical accent match
+        if (m_pattern_.m_hasSuffixAccents_ 
+            && m_canonicalSuffixAccents_.length() != 0 
+            || m_pattern_.m_hasPrefixAccents_ 
+            && m_canonicalPrefixAccents_.length() != 0) {
+            m_matchedIndex_ = textoffset;
+            matchLength = getNextBaseOffset(m_colEIter_.getOffset()) 
+                                                                - textoffset;
+            return true;
+        }
+    
+        int end = m_colEIter_.getOffset();
+        if (!checkPreviousCanonicalContractionMatch(textoffset, end)) {
+            // storing the modified textoffset
+            return false;
+        }
+        textoffset = m_utilBuffer_[0];
+        end = m_utilBuffer_[1];
+        end = getNextBaseOffset(end);
+        // this totally matches, however we need to check if it is repeating
+        if (checkRepeatedMatch(textoffset, end) 
+            || !isBreakUnit(textoffset, end) 
+            || !checkIdentical(textoffset, end)) {
+            textoffset --;
+            textoffset = getPreviousBaseOffset(textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        m_matchedIndex_ = textoffset;
+        matchLength = end - textoffset;
+        return true;
+    }
+    
+    /**
+     * Method that does the next exact match
+     * @param start the offset to start shifting from and performing the 
+     *        next exact match
+     */
+    private void handleNextExact(int start)
+    {
+        int textoffset = shiftForward(start, 
+                                         CollationElementIterator.NULLORDER,
+                                         m_pattern_.m_CELength_);
+        int targetce = CollationElementIterator.IGNORABLE;
+        while (textoffset <= m_textLimitOffset_) {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = m_pattern_.m_CELength_ - 1;
+            boolean found = false;
+            int lastce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the last pattern ce match, imagine composite 
+                // characters. for example: search for pattern A in text \u00C0
+                // we'll have to skip \u0300 the grave first before we get to A
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE && 
+                    m_colEIter_.isInBuffer()) { 
+                    // this is for the text \u0315\u0300 that requires 
+                    // normalization and pattern \u0300, where \u0315 is ignorable
+                    continue;
+                }
+                if (lastce == CollationElementIterator.NULLORDER 
+                    || lastce == CollationElementIterator.IGNORABLE) {
+                    lastce = targetce;
+                }
+                if (targetce == m_pattern_.m_CE_[patternceindex]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+                    found = false;
+                    break;
+                }
+            }
+    
+            while (found && patternceindex > 0) {
+                lastce = targetce;
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                patternceindex --;
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+            }
+            
+            targetce = lastce;
+    
+            if (!found) {
+                textoffset = shiftForward(textoffset, lastce, patternceindex);
+                // status checked at loop.
+                patternceindex = m_pattern_.m_CELength_;
+                continue;
+            }
+            
+            if (checkNextExactMatch(textoffset)) {
+                // status checked in ucol_setOffset
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+
+    /**
+     * Method that does the next canonical match
+     * @param start the offset to start shifting from and performing the 
+     *        next canonical match
+     */
+    private void handleNextCanonical(int start)
+    {
+        boolean hasPatternAccents = 
+           m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+              
+        // shifting it check for setting offset
+        // if setOffset is called previously or there was no previous match, we
+        // leave the offset as it is.
+        int textoffset = shiftForward(start, CollationElementIterator.NULLORDER, 
+                                        m_pattern_.m_CELength_);
+        m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+        m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+        int targetce = CollationElementIterator.IGNORABLE;
+        
+        while (textoffset <= m_textLimitOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = m_pattern_.m_CELength_ - 1;
+            boolean found = false;
+            int lastce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the last pattern ce match, imagine composite characters
+                // for example: search for pattern A in text \u00C0
+                // we'll have to skip \u0300 the grave first before we get to A
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (lastce == CollationElementIterator.NULLORDER 
+                            || lastce == CollationElementIterator.IGNORABLE) {
+                    lastce = targetce;
+                }
+                if (targetce == m_pattern_.m_CE_[patternceindex]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+                    found = false;
+                    break;
+                }
+            }
+            
+            while (found && patternceindex > 0) {
+                targetce    = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce    = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                patternceindex --;
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+            }
+    
+            // initializing the rearranged accent array
+            if (hasPatternAccents && !found) {
+                found = doNextCanonicalMatch(textoffset);
+            }
+    
+            if (!found) {
+                textoffset = shiftForward(textoffset, lastce, patternceindex);
+                // status checked at loop
+                patternceindex = m_pattern_.m_CELength_;
+                continue;
+            }
+            
+            if (checkNextCanonicalMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Method that does the previous exact match
+     * @param start the offset to start shifting from and performing the 
+     *        previous exact match
+     */
+    private void handlePreviousExact(int start)
+    {
+        int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+                                      m_pattern_.m_CELength_);
+        while (textoffset >= m_textBeginOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = 1;
+            int targetce = CollationElementIterator.IGNORABLE;
+            boolean found = false;
+            int firstce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the first pattern ce match, imagine composite 
+                // characters. for example: search for pattern \u0300 in text 
+                // \u00C0, we'll have to skip A first before we get to 
+                // \u0300 the grave accent
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (firstce == CollationElementIterator.NULLORDER 
+                    || firstce == CollationElementIterator.IGNORABLE) {
+                    firstce = targetce;
+                }
+                if (targetce == CollationElementIterator.IGNORABLE && m_collator_.getStrength() != Collator.PRIMARY) {
+                    continue;
+                }         
+                if (targetce == m_pattern_.m_CE_[0]) {
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ == -1 
+                    || m_colEIter_.m_CEBufferOffset_ 
+                                            == m_colEIter_.m_CEBufferSize_) {
+                    // checking for accents in composite character
+                    found = false;
+                    break;
+                }
+            }
+    
+            //targetce = firstce;
+            
+            while (found && patternceindex < m_pattern_.m_CELength_) {
+                firstce = targetce;
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+                patternceindex ++;
+            }
+            
+            targetce = firstce;
+    
+            if (!found) {
+                textoffset = reverseShift(textoffset, targetce, patternceindex);
+                patternceindex = 0;
+                continue;
+            }
+            
+            if (checkPreviousExactMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Method that does the previous canonical match
+     * @param start the offset to start shifting from and performing the 
+     *        previous canonical match
+     */
+    private void handlePreviousCanonical(int start)
+    {
+        boolean hasPatternAccents = 
+           m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+              
+        // shifting it check for setting offset
+        // if setOffset is called previously or there was no previous match, we
+        // leave the offset as it is.
+        int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+                                          m_pattern_.m_CELength_);
+        m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+        m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+        
+        while (textoffset >= m_textBeginOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = 1;
+            int targetce = CollationElementIterator.IGNORABLE;
+            boolean found = false;
+            int firstce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the first pattern ce match, imagine composite 
+                // characters. for example: search for pattern \u0300 in text 
+                // \u00C0, we'll have to skip A first before we get to 
+                // \u0300 the grave accent
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (firstce == CollationElementIterator.NULLORDER 
+                    || firstce == CollationElementIterator.IGNORABLE) {
+                    firstce = targetce;
+                }
+                
+                if (targetce == m_pattern_.m_CE_[0]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ == -1 
+                    || m_colEIter_.m_CEBufferOffset_ 
+                                            == m_colEIter_.m_CEBufferSize_) {
+                    // checking for accents in composite character
+                    found = false;
+                    break;
+                }
+            }
+    
+            targetce = firstce;
+            
+            while (found && patternceindex < m_pattern_.m_CELength_) {
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+                patternceindex ++;
+            }
+    
+            // initializing the rearranged accent array
+            if (hasPatternAccents && !found) {
+                found = doPreviousCanonicalMatch(textoffset);
+            }
+    
+            if (!found) {
+                textoffset = reverseShift(textoffset, targetce, patternceindex);
+                patternceindex = 0;
+                continue;
+            }
+    
+            if (checkPreviousCanonicalMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Gets a substring out of a CharacterIterator
+     * @param text CharacterIterator
+     * @param start start offset
+     * @param length of substring
+     * @return substring from text starting at start and length length
+     */
+    private static final String getString(CharacterIterator text, int start,
+                                            int length)
+    {
+        StringBuffer result = new StringBuffer(length);
+        int offset = text.getIndex();
+        text.setIndex(start);
+        for (int i = 0; i < length; i ++) {
+            result.append(text.current());
+            text.next();
+        }
+        text.setIndex(offset);
+        return result.toString();
+    }
+    
+    /**
+     * Getting the mask for collation strength
+     * @param strength collation strength
+      * @return collation element mask
+     */
+    private static final int getMask(int strength) 
+    {
+        switch (strength) 
+        {
+            case Collator.PRIMARY:
+                return RuleBasedCollator.CE_PRIMARY_MASK_;
+            case Collator.SECONDARY:
+                return RuleBasedCollator.CE_SECONDARY_MASK_ 
+                       | RuleBasedCollator.CE_PRIMARY_MASK_;
+            default:
+                return RuleBasedCollator.CE_TERTIARY_MASK_ 
+                       | RuleBasedCollator.CE_SECONDARY_MASK_ 
+                       | RuleBasedCollator.CE_PRIMARY_MASK_;
+        }
+    }
+    
+    /**
+     * Sets match not found 
+     */
+    private void setMatchNotFound() 
+    {
+        // this method resets the match result regardless of the error status.
+        m_matchedIndex_ = DONE;
+        setMatchLength(0);
+    }
+    
+    /**
+     * Check the boundaries of the match.
+     */
+    private int checkBreakBoundary(int end) {
+        if (!m_charBreakIter_.isBoundary(end)) {
+            end = m_charBreakIter_.following(end);
+        }
+        return end;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringTransform.java b/src/com/ibm/icu/text/StringTransform.java
new file mode 100644
index 0000000..9ef11ae
--- /dev/null
+++ b/src/com/ibm/icu/text/StringTransform.java
@@ -0,0 +1,24 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * Provide a base class for Transforms that focuses just on the transformation of the text. APIs that take Transliterator, but only depend on the text transformation should use this interface in the API instead.
+ *
+ * @stable ICU 3.8
+ * @author markdavis
+ *
+ */
+public interface StringTransform {
+    /**
+     * Transform the text in some way, to be determined by the subclass.
+     * @param source text to be transformed (eg lowercased)
+     * @return result
+     * @stable ICU 3.8
+     */
+    public String transform(String source);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/text/SymbolTable.java b/src/com/ibm/icu/text/SymbolTable.java
new file mode 100644
index 0000000..22f228c
--- /dev/null
+++ b/src/com/ibm/icu/text/SymbolTable.java
@@ -0,0 +1,86 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import java.text.ParsePosition;
+
+/**
+ * An interface that defines both lookup protocol and parsing of
+ * symbolic names.
+ * 
+ * <p>This interface is used by UnicodeSet to resolve $Variable style
+ * references that appear in set patterns.  RBBI and Transliteration
+ * both independently implement this interface.
+ *
+ * <p>A symbol table maintains two kinds of mappings.  The first is
+ * between symbolic names and their values.  For example, if the
+ * variable with the name "start" is set to the value "alpha"
+ * (perhaps, though not necessarily, through an expression such as
+ * "$start=alpha"), then the call lookup("start") will return the
+ * char[] array ['a', 'l', 'p', 'h', 'a'].
+ *
+ * <p>The second kind of mapping is between character values and
+ * UnicodeMatcher objects.  This is used by RuleBasedTransliterator,
+ * which uses characters in the private use area to represent objects
+ * such as UnicodeSets.  If U+E015 is mapped to the UnicodeSet [a-z],
+ * then lookupMatcher(0xE015) will return the UnicodeSet [a-z].
+ *
+ * <p>Finally, a symbol table defines parsing behavior for symbolic
+ * names.  All symbolic names start with the SYMBOL_REF character.
+ * When a parser encounters this character, it calls parseReference()
+ * with the position immediately following the SYMBOL_REF.  The symbol
+ * table parses the name, if there is one, and returns it.
+ *
+ * @stable ICU 2.8
+ */
+public interface SymbolTable {
+
+    /**
+     * The character preceding a symbol reference name.
+     * @stable ICU 2.8
+     */
+    static final char SYMBOL_REF = '$';
+
+    /**
+     * Lookup the characters associated with this string and return it.
+     * Return <tt>null</tt> if no such name exists.  The resultant
+     * array may have length zero.
+     * @param s the symbolic name to lookup
+     * @return a char array containing the name's value, or null if
+     * there is no mapping for s.
+     * @stable ICU 2.8
+     */
+    char[] lookup(String s);
+
+    /**
+     * Lookup the UnicodeMatcher associated with the given character, and
+     * return it.  Return <tt>null</tt> if not found.
+     * @param ch a 32-bit code point from 0 to 0x10FFFF inclusive.
+     * @return the UnicodeMatcher object represented by the given
+     * character, or null if there is no mapping for ch.
+     * @stable ICU 2.8
+     */
+    UnicodeMatcher lookupMatcher(int ch);
+
+    /**
+     * Parse a symbol reference name from the given string, starting
+     * at the given position.  If no valid symbol reference name is
+     * found, return null and leave pos unchanged.  That is, if the
+     * character at pos cannot start a name, or if pos is at or after
+     * text.length(), then return null.  This indicates an isolated
+     * SYMBOL_REF character.
+     * @param text the text to parse for the name
+     * @param pos on entry, the index of the first character to parse.
+     * This is the character following the SYMBOL_REF character.  On
+     * exit, the index after the last parsed character.  If the parse
+     * failed, pos is unchanged on exit.
+     * @param limit the index after the last character to be parsed.
+     * @return the parsed name, or null if there is no valid symbolic
+     * name at the given position.
+     * @stable ICU 2.8
+     */
+    String parseReference(String text, ParsePosition pos, int limit);
+}
diff --git a/src/com/ibm/icu/text/ThaiBreakIterator.java b/src/com/ibm/icu/text/ThaiBreakIterator.java
new file mode 100644
index 0000000..3d4db61
--- /dev/null
+++ b/src/com/ibm/icu/text/ThaiBreakIterator.java
@@ -0,0 +1,385 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.text.UnicodeSet;
+
+import java.util.Stack;
+import java.io.InputStream;
+import java.text.CharacterIterator;
+import java.io.IOException;
+
+class ThaiBreakIterator extends DictionaryBasedBreakIterator {
+
+    /* Helper class for improving readability of the Thai word break
+     * algorithm.
+     */
+    static class PossibleWord {
+        // List size, limited by the maximum number of words in the dictionary
+        // that form a nested sequence.
+        private final int POSSIBLE_WORD_LIST_MAX = 20;
+        //list of word candidate lengths, in increasing length order
+        private int lengths[];
+        private int count[];    // Count of candidates
+        private int prefix;     // The longeset match with a dictionary word
+        private int offset;     // Offset in the text of these candidates
+        private int mark;       // The preferred candidate's offset
+        private int current;    // The candidate we're currently looking at
+
+        // Default constructor
+        public PossibleWord() {
+            lengths = new int[POSSIBLE_WORD_LIST_MAX];
+            count = new int[1]; // count needs to be an array of 1 so that it can be pass as reference
+            offset = -1;
+        }
+
+        // Fill the list of candidates if needed, select the longest, and return the number found
+        public int candidates(CharacterIterator fIter, BreakCTDictionary dict, int rangeEnd) {
+            int start = fIter.getIndex();
+            if (start != offset) {
+                offset = start;
+                prefix = dict.matches(fIter, rangeEnd - start, lengths, count, lengths.length);
+                // Dictionary leaves text after longest prefix, not longest word. Back up.
+                if (count[0] <= 0) {
+                    fIter.setIndex(start);
+                }
+            }
+            if (count[0] > 0) {
+                fIter.setIndex(start + lengths[count[0]-1]);
+            }
+            current = count[0] - 1;
+            mark = current;
+            return count[0];
+        }
+
+        // Select the currently marked candidate, point after it in the text, and invalidate self
+        public int acceptMarked(CharacterIterator fIter) {
+            fIter.setIndex(offset + lengths[mark]);
+            return lengths[mark];
+        }
+
+        // Backup from the current candidate to the next shorter one; rreturn true if that exists
+        // and point the text after it
+        public boolean backUp(CharacterIterator fIter) {
+            if (current > 0) {
+                fIter.setIndex(offset + lengths[--current]);
+                return true;
+            }
+            return false;
+        }
+
+        // Return the longest prefix this candidate location shares with a dictionary word
+        public int longestPrefix() {
+            return prefix;
+        }
+
+        // Mark the current candidate as the one we like
+        public void markCurrent() {
+            mark = current;
+        }
+    }
+
+    private static UnicodeSet fThaiWordSet;
+    private static UnicodeSet fEndWordSet;
+    private static UnicodeSet fBeginWordSet;
+    private static UnicodeSet fSuffixSet;
+    private static UnicodeSet fMarkSet;
+    private BreakCTDictionary fDictionary;
+
+    // Constants for ThaiBreakIterator
+    // How many words in a row are "good enough"?
+    private static final byte THAI_LOOKAHEAD = 3;
+    // Will not combine a non-word with a preceding dictionary word longer than this
+    private static final byte THAI_ROOT_COMBINE_THRESHOLD = 3;
+    // Will not combine a non-word that shares at least this much prefix with a
+    // dictionary word with a preceding word
+    private static final byte THAI_PREFIX_COMBINE_THRESHOLD = 3;
+    // Ellision character
+    private static final char THAI_PAIYANNOI = 0x0E2F;
+    // Repeat character
+    private static final char THAI_MAIYAMOK = 0x0E46;
+    // Minimum word size
+    private static final byte THAI_MIN_WORD = 2;
+    // Minimum number of characters for two words
+    //private final int THAI_MIN_WORD_SPAN = THAI_MIN_WORD * 2;
+
+    static {
+        // Initialize UnicodeSets
+        fThaiWordSet = new UnicodeSet();
+        fMarkSet = new UnicodeSet();
+        fEndWordSet = new UnicodeSet();
+        fBeginWordSet = new UnicodeSet();
+        fSuffixSet = new UnicodeSet();
+
+        fThaiWordSet.applyPattern(new String("[[:Thai:]&[:LineBreak=SA:]]"));
+        fThaiWordSet.compact();
+
+        fMarkSet.applyPattern(new String("[[:Thai:]&[:LineBreak=SA:]&[:M:]]"));
+        fMarkSet.add(0x0020);
+        fEndWordSet = fThaiWordSet;
+        fEndWordSet.remove(0x0E31); // MAI HAN-AKAT
+        fEndWordSet.remove(0x0E40, 0x0E44); // SARA E through SARA AI MAIMALAI
+        fBeginWordSet.add(0x0E01, 0x0E2E); //KO KAI through HO NOKHUK
+        fBeginWordSet.add(0x0E40, 0x0E44); // SARA E through SARA AI MAIMALAI
+        fSuffixSet.add(THAI_PAIYANNOI);
+        fSuffixSet.add(THAI_MAIYAMOK);
+
+        // Compact for caching
+        fMarkSet.compact();
+        fEndWordSet.compact();
+        fBeginWordSet.compact();
+        fSuffixSet.compact();
+        
+        // Freeze the static UnicodeSet
+        fThaiWordSet.freeze();
+        fMarkSet.freeze();
+        fEndWordSet.freeze();
+        fBeginWordSet.freeze();
+        fSuffixSet.freeze();
+    }
+
+    public ThaiBreakIterator(InputStream ruleStream, InputStream dictionaryStream) throws IOException {
+        super(ruleStream);
+        // Initialize diciontary
+        fDictionary = new BreakCTDictionary(dictionaryStream);
+    }
+
+    /**
+     * This is the implementation function for next().
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            fDictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range
+            if (fDictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        Assert.assrt(false);
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * Divide up a range of known dictionary characters.
+     *
+     * @param rangeStart The start of the range of dictionary characters
+     * @param rangeEnd The end of the range of dictionary characters
+     * @return The number of breaks found
+     */
+    private int divideUpDictionaryRange(int rangeStart, int rangeEnd) {
+        if ((rangeEnd - rangeStart) < THAI_MIN_WORD) {
+            return 0;  // Not enough chacters for word
+        }
+        CharacterIterator fIter = getText();
+        int wordsFound = 0;
+        int wordLength;
+        int current;
+        Stack foundBreaks = new Stack();
+        PossibleWord words[] = new PossibleWord[THAI_LOOKAHEAD];
+        for (int i = 0; i < THAI_LOOKAHEAD; i++) {
+            words[i] = new PossibleWord();
+        }
+        int uc;
+
+        fIter.setIndex(rangeStart);
+
+        while ((current = fIter.getIndex()) < rangeEnd) {
+            wordLength = 0;
+
+            //Look for candidate words at the current position
+            int candidates = words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd);
+
+            // If we found exactly one, use that
+            if (candidates == 1) {
+                wordLength = words[wordsFound%THAI_LOOKAHEAD].acceptMarked(fIter);
+                wordsFound += 1;
+            }
+
+            // If there was more than one, see which one can take use forward the most words
+            else if (candidates > 1) {
+                boolean foundBest = false;
+                // If we're already at the end of the range, we're done
+                if (fIter.getIndex() < rangeEnd) {
+                    do {
+                        int wordsMatched = 1;
+                        if (words[(wordsFound+1)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) > 0) {
+                            if (wordsMatched < 2) {
+                                // Followed by another dictionary word; mark first word as a good candidate
+                                words[wordsFound%THAI_LOOKAHEAD].markCurrent();
+                                wordsMatched = 2;
+                            }
+
+                            // If we're already at the end of the range, we're done
+                            if (fIter.getIndex() >= rangeEnd) {
+                                break;
+                            }
+
+                            // See if any of the possible second words is followed by a third word
+                            do {
+                                // If we find a third word, stop right away
+                                if (words[(wordsFound+2)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) > 0) {
+                                    words[wordsFound%THAI_LOOKAHEAD].markCurrent();
+                                    foundBest = true;
+                                    break;
+                                }
+                            } while (words[(wordsFound+1)%THAI_LOOKAHEAD].backUp(fIter));
+                        }
+                    } while (words[wordsFound%THAI_LOOKAHEAD].backUp(fIter) && !foundBest);
+                }
+                /* foundBest: */wordLength = words[wordsFound%THAI_LOOKAHEAD].acceptMarked(fIter);
+                wordsFound += 1;
+            }
+            // We come here after having either found a word or not. We look ahead to the
+            // next word. If it's not a dictionary word, we will combine it with the word we
+            // just found (if there is one), but only if the preceding word does not exceed
+            // the threshold.
+            // The text iterator should now be positioned at the end of the word we found.
+            if (fIter.getIndex() < rangeEnd && wordLength < THAI_ROOT_COMBINE_THRESHOLD) {
+                // If it is a dictionary word, do nothing. If it isn't, then if there is
+                // no preceding word, or the non-word shares less than the minimum threshold
+                // of characters with a dictionary word, then scan to resynchronize
+                if (words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) <= 0 &&
+                        (wordLength == 0 || 
+                                words[wordsFound%THAI_LOOKAHEAD].longestPrefix() < THAI_PREFIX_COMBINE_THRESHOLD)) {
+                    // Look for a plausible word boundary
+                    int remaining = rangeEnd - (current + wordLength);
+                    int pc = fIter.current();
+                    int chars = 0;
+                    for (;;) {
+                        fIter.next();
+                        uc = fIter.current();
+                        chars += 1;
+                        if (--remaining <= 0) {
+                            break;
+                        }
+                        if (fEndWordSet.contains(pc) && fBeginWordSet.contains(uc)) {
+                            // Maybe. See if it's in the dictionary.
+                            // Note: In the original Apple code, checked that the next
+                            // two characters after uc were not 0x0E4C THANTHAKHAT before
+                            // checking the dictionary. That is just a performance filter,
+                            // but it's not clear it's faster than checking the trie
+                            int candidate = words[(wordsFound+1)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd);
+                            fIter.setIndex(current+wordLength+chars);
+                            if (candidate > 0) {
+                                break;
+                            }
+                        }
+                        pc = uc;
+                    }
+
+                    // Bump the word cound if there wasn't already one
+                    if (wordLength <= 0) {
+                        wordsFound += 1;
+                    }
+
+                    // Update the length with the passed-over characters
+                    wordLength += chars;
+                } else {
+                    // Backup to where we were for next iteration
+                    fIter.setIndex(current+wordLength);
+                }
+            }
+
+            // Never stop before a combining mark.
+            int currPos;
+            while ((currPos = fIter.getIndex()) < rangeEnd && fMarkSet.contains(fIter.current())) {
+                fIter.next();
+                wordLength += fIter.getIndex() - currPos;
+            }
+
+            // Look ahead for possible suffixes if a dictionary word does not follow.
+            // We do this in code rather than using a rule so that the heuristic
+            // resynch continues to function. For example, one of the suffix characters 
+            // could be a typo in the middle of a word.
+            if (fIter.getIndex() < rangeEnd && wordLength > 0) {
+                if (words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) <= 0 &&
+                        fSuffixSet.contains(uc = fIter.current())) {
+                    if (uc == THAI_PAIYANNOI) {
+                        if (!fSuffixSet.contains(fIter.previous())) {
+                            // Skip over previous end and PAIYANNOI
+                            fIter.next();
+                            fIter.next();
+                            wordLength += 1;
+                            uc = fIter.current();
+                        } else {
+                            // Restore prior position
+                            fIter.next();
+                        }
+                    }
+                    if (uc == THAI_MAIYAMOK) {
+                        if (fIter.previous() != THAI_MAIYAMOK) {
+                            // Skip over previous end and MAIYAMOK
+                            fIter.next();
+                            fIter.next();
+                            wordLength += 1;
+                        } else {
+                            // restore prior position
+                            fIter.next();
+                        }
+                    }
+                } else {
+                    fIter.setIndex(current+wordLength);
+                }
+            }
+
+            // Did we find a word on this iteration? If so, push it on the break stack
+            if (wordLength > 0) {
+                foundBreaks.push(new Integer(current+wordLength));
+            }
+        }
+
+        // Don't return a break for the end of the dictionary range if there is one there
+        if (((Integer)foundBreaks.peek()).intValue() >= rangeEnd) {
+            foundBreaks.pop();
+            wordsFound -= 1;
+        }
+
+        // Store the break points in cachedBreakPositions.
+        cachedBreakPositions = new int[foundBreaks.size() + 2];
+        cachedBreakPositions[0] = rangeStart;
+        int i;
+        for (i = 0; i < foundBreaks.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)foundBreaks.elementAt(i)).intValue();
+        }
+        cachedBreakPositions[i + 1] = rangeEnd;
+        positionInCache = 0;
+
+        return wordsFound;
+    }
+}
diff --git a/src/com/ibm/icu/text/TimeUnitFormat.java b/src/com/ibm/icu/text/TimeUnitFormat.java
new file mode 100644
index 0000000..9ed3ed8
--- /dev/null
+++ b/src/com/ibm/icu/text/TimeUnitFormat.java
@@ -0,0 +1,527 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+
+/**
+ * Format or parse a TimeUnitAmount, using plural rules for the units where available.
+ *
+ * <P>
+ * Code Sample: 
+ * <pre>
+ *   // create a time unit instance.
+ *   // only SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, and YEAR are supported
+ *   TimeUnit timeUnit = TimeUnit.SECOND;
+ *   // create time unit amount instance - a combination of Number and time unit
+ *   TimeUnitAmount source = new TimeUnitAmount(2, timeUnit);
+ *   // create time unit format instance
+ *   TimeUnitFormat format = new TimeUnitFormat();
+ *   // set the locale of time unit format
+ *   format.setLocale(new ULocale("en"));
+ *   // format a time unit amount
+ *   String formatted = format.format(source);
+ *   System.out.println(formatted);
+ *   try {
+ *       // parse a string into time unit amount
+ *       TimeUnitAmount result = (TimeUnitAmount) format.parseObject(formatted);
+ *       // result should equal to source 
+ *   } catch (ParseException e) {
+ *   }
+ * </pre>
+ *
+ * <P>
+ * @see TimeUnitAmount
+ * @see TimeUnitFormat
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnitFormat extends MeasureFormat {
+
+    /**
+     * Constant for full name style format. 
+     * For example, the full name for "hour" in English is "hour" or "hours".
+     * @draft ICU 4.1.1
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int FULL_NAME = 0;
+    /**
+     * Constant for abbreviated name style format. 
+     * For example, the abbreviated name for "hour" in English is "hr" or "hrs".
+     * @draft ICU 4.1.1
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int ABBREVIATED_NAME = 1;
+
+    private static final int TOTAL_STYLES = 2;
+
+    private static final long serialVersionUID = -3707773153184971529L;
+  
+    private static final String DEFAULT_PATTERN_FOR_SECOND = "{0} s";
+    private static final String DEFAULT_PATTERN_FOR_MINUTE = "{0} min";
+    private static final String DEFAULT_PATTERN_FOR_HOUR = "{0} h";
+    private static final String DEFAULT_PATTERN_FOR_DAY = "{0} d";
+    private static final String DEFAULT_PATTERN_FOR_WEEK = "{0} w";
+    private static final String DEFAULT_PATTERN_FOR_MONTH = "{0} m";
+    private static final String DEFAULT_PATTERN_FOR_YEAR = "{0} y";
+
+    private NumberFormat format;
+    private ULocale locale;
+    private transient Map timeUnitToCountToPatterns;
+    private transient PluralRules pluralRules;
+    private transient boolean isReady;
+    private int style;
+
+    /**
+     * Create empty format using full name style, for example, "hours". 
+     * Use setLocale and/or setFormat to modify.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat() {
+        isReady = false;
+        style = FULL_NAME;
+
+    }
+
+    /**
+     * Create TimeUnitFormat given a ULocale, and using full name style.
+     * @param locale   locale of this time unit formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(ULocale locale) {
+        this(locale, FULL_NAME);
+    }
+
+    /**
+     * Create TimeUnitFormat given a Locale, and using full name style.
+     * @param locale   locale of this time unit formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(Locale locale) {
+        this(locale, FULL_NAME);
+    }
+
+    /**
+     * Create TimeUnitFormat given a ULocale and a formatting style: full or
+     * abbreviated.
+     * @param locale   locale of this time unit formatter.
+     * @param style    format style, either FULL_NAME or ABBREVIATED_NAME style.
+     * @throws IllegalArgumentException if the style is not FULL_NAME or
+     *                                  ABBREVIATED_NAME style.
+     * @draft ICU 4.1.1
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(ULocale locale, int style) {
+        if (style < FULL_NAME || style >= TOTAL_STYLES) {
+            throw new IllegalArgumentException("style should be either FULL_NAME or ABBREVIATED_NAME style");
+        }
+        this.style = style;
+        this.locale = locale;
+        isReady = false;
+    }
+
+    /**
+     * Create TimeUnitFormat given a Locale and a formatting style: full or
+     * abbreviated.
+     * @draft ICU 4.1.1
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(Locale locale, int style) {
+        this(ULocale.forLocale(locale),  style);
+    }
+
+    /**
+     * Set the locale used for formatting or parsing.
+     * @param locale   locale of this time unit formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setLocale(ULocale locale) {
+        if ( locale != this.locale ) {
+            this.locale = locale;
+            isReady = false;
+        }
+        return this;
+    }
+    
+    /**
+     * Set the locale used for formatting or parsing.
+     * @param locale   locale of this time unit formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setLocale(Locale locale) {
+        return setLocale(ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Set the format used for formatting or parsing. If null or not available, use the getNumberInstance(locale).
+     * @param format   the number formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setNumberFormat(NumberFormat format) {
+        if (format == this.format) {
+            return this;
+        }
+        if ( format == null ) {
+            if ( locale == null ) {
+                isReady = false;
+                return this;
+            } else {
+                this.format = NumberFormat.getNumberInstance(locale);
+            }
+        } else {
+            this.format = format;
+        }
+        // reset the number formatter in the timeUnitToCountToPatterns map
+        if (isReady == false) {
+            return this;
+        }
+        for (Iterator it = timeUnitToCountToPatterns.keySet().iterator(); 
+             it.hasNext();) {
+            TimeUnit timeUnit = (TimeUnit) it.next();
+            Map countToPattern = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            for (Iterator it2 = countToPattern.keySet().iterator(); it2.hasNext();) {
+                String count = (String) it2.next();
+                Object[] pair = (Object[])countToPattern.get(count);
+                MessageFormat pattern = (MessageFormat)pair[FULL_NAME];
+                pattern.setFormatByArgumentIndex(0, format);
+                pattern = (MessageFormat)pair[ABBREVIATED_NAME];
+                pattern.setFormatByArgumentIndex(0, format);
+            }
+        }
+        return this;
+    }
+
+
+    /**
+     * Format a TimeUnitAmount.
+     * @see java.text.Format#format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public StringBuffer format(Object obj, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        if ( !(obj instanceof TimeUnitAmount) ) {
+            throw new IllegalArgumentException("can not format non TimeUnitAmount object");
+        }
+        if (!isReady) {
+            setup();
+        }
+        TimeUnitAmount amount = (TimeUnitAmount) obj;
+        Map countToPattern = (Map) timeUnitToCountToPatterns.get(amount.getTimeUnit());
+        double number = amount.getNumber().doubleValue();
+        String count = pluralRules.select(number);
+        MessageFormat pattern = (MessageFormat)((Object[])countToPattern.get(count))[style];
+        return pattern.format(new Object[]{amount.getNumber()}, toAppendTo, pos);
+    }
+
+
+    /**
+     * Parse a TimeUnitAmount.
+     * @see java.text.Format#parseObject(java.lang.String, java.text.ParsePosition)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        if (!isReady) {
+            setup();
+        }
+        Number resultNumber = null;
+        TimeUnit resultTimeUnit = null;
+        int oldPos = pos.getIndex();
+        int newPos = -1;
+        int longestParseDistance = 0;
+        String countOfLongestMatch = null;
+        // we don't worry too much about speed on parsing, but this can be optimized later if needed.
+        // Parse by iterating through all available patterns
+        // and looking for the longest match.
+        for (Iterator it = timeUnitToCountToPatterns.keySet().iterator(); it.hasNext();) {
+            TimeUnit timeUnit = (TimeUnit) it.next();
+            Map countToPattern = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            for (Iterator it2 = countToPattern.keySet().iterator(); it2.hasNext();) {
+              String count = (String) it2.next();
+              for (int styl = FULL_NAME; styl < TOTAL_STYLES; ++styl) {
+                MessageFormat pattern = (MessageFormat)((Object[])countToPattern.get(count))[styl];
+                pos.setErrorIndex(-1);
+                pos.setIndex(oldPos);
+                // see if we can parse
+                Object parsed = pattern.parseObject(source, pos);
+                if ( pos.getErrorIndex() != -1 || pos.getIndex() == oldPos ) {
+                    // nothing parsed
+                    continue;
+                }
+                Number temp = null;
+                if ( ((Object[])parsed).length != 0 ) {
+                    // pattern with Number as beginning,
+                    // such as "{0} d".
+                    // check to make sure that the timeUnit is consistent
+                    temp = (Number)((Object[])parsed)[0];
+                    String select = pluralRules.select(temp.doubleValue());
+                    if (!count.equals(select)) {
+                        continue;
+                    }
+                }
+                int parseDistance = pos.getIndex() - oldPos;
+                if ( parseDistance > longestParseDistance ) {
+                    resultNumber = temp;
+                    resultTimeUnit = timeUnit;
+                    newPos = pos.getIndex();
+                    longestParseDistance = parseDistance;
+                    countOfLongestMatch = count;
+                }
+            }
+          }
+        }
+        /* After find the longest match, parse the number.
+         * Result number could be null for the pattern without number pattern.
+         * such as unit pattern in Arabic.
+         * When result number is null, use plural rule to set the number.
+         */
+        if (resultNumber == null && longestParseDistance != 0) {
+            // set the number using plurrual count
+            if ( countOfLongestMatch.equals("zero") ) {
+                resultNumber = new Integer(0);
+            } else if ( countOfLongestMatch.equals("one") ) {
+                resultNumber = new Integer(1);
+            } else if ( countOfLongestMatch.equals("two") ) {
+                resultNumber = new Integer(2);
+            } else {
+                // should not happen.
+                // FIXME: how to handle?
+                resultNumber = new Integer(3);
+            }
+        }
+        if (longestParseDistance == 0) {
+            pos.setIndex(oldPos);
+            pos.setErrorIndex(0);
+            return null;
+        } else {
+            pos.setIndex(newPos);
+            pos.setErrorIndex(-1);
+            return new TimeUnitAmount(resultNumber, resultTimeUnit);
+        }
+    }
+    
+    
+    /*
+     * Initialize locale, number formatter, plural rules, and
+     * time units patterns.
+     * Initially, we are storing all of these as MessageFormats.
+     * I think it might actually be simpler to make them Decimal Formats later.
+     */
+    private void setup() {
+        if (locale == null) {
+            if (format != null) {
+                locale = format.getLocale(null);
+            } else {
+                locale = ULocale.getDefault();
+            }
+        }
+        if (format == null) {
+            format = NumberFormat.getNumberInstance(locale);
+        }
+        pluralRules = PluralRules.forLocale(locale);
+        timeUnitToCountToPatterns = new HashMap();
+
+        setup("units", timeUnitToCountToPatterns, FULL_NAME);
+        setup("short_units", timeUnitToCountToPatterns, ABBREVIATED_NAME);
+        isReady = true;
+    }
+
+
+    private void setup(String resourceKey, Map timeUnitToCountToPatterns,
+                       int style) {
+        // fill timeUnitToCountToPatterns from resource file
+        try {
+            ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            ICUResourceBundle unitsRes = resource.getWithFallback(resourceKey);
+            int size = unitsRes.getSize();
+            for ( int index = 0; index < size; ++index) {
+                String timeUnitName = unitsRes.get(index).getKey();
+                TimeUnit timeUnit = null;
+                if ( timeUnitName.equals("year") ) {
+                    timeUnit = TimeUnit.YEAR;
+                } else if ( timeUnitName.equals("month") ) {
+                    timeUnit = TimeUnit.MONTH;
+                } else if ( timeUnitName.equals("day") ) {
+                    timeUnit = TimeUnit.DAY;
+                } else if ( timeUnitName.equals("hour") ) {
+                    timeUnit = TimeUnit.HOUR;
+                } else if ( timeUnitName.equals("minute") ) {
+                    timeUnit = TimeUnit.MINUTE;
+                } else if ( timeUnitName.equals("second") ) {
+                    timeUnit = TimeUnit.SECOND;
+                } else if ( timeUnitName.equals("week") ) {
+                    timeUnit = TimeUnit.WEEK;
+                } else {
+                    continue;
+                }
+                ICUResourceBundle oneUnitRes = unitsRes.getWithFallback(timeUnitName);
+                int count = oneUnitRes.getSize();
+                Map countToPatterns = (Map)timeUnitToCountToPatterns.get(timeUnit);
+                if (countToPatterns ==  null) {
+                    countToPatterns = new TreeMap();
+                    timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
+                } 
+                for ( int pluralIndex = 0; pluralIndex < count; ++pluralIndex) {
+                    String pluralCount = oneUnitRes.get(pluralIndex).getKey();
+                    String pattern = oneUnitRes.get(pluralIndex).getString();
+                    final MessageFormat messageFormat = new MessageFormat(pattern, locale);
+                    if (format != null) {
+                        messageFormat.setFormatByArgumentIndex(0, format);
+                    }
+                    // save both full name and abbreviated name in one table
+                    // is good space-wise, but it degrades performance, 
+                    // since it needs to check whether the needed space 
+                    // is already allocated or not.
+                    Object[] pair = (Object[])countToPatterns.get(pluralCount);
+                    if (pair == null) {
+                        pair = new Object[2];
+                        countToPatterns.put(pluralCount, pair);
+                    } 
+                    pair[style] = messageFormat;
+                }
+            }
+        } catch ( MissingResourceException e ) {
+        }
+
+        // there should be patterns for each plural rule in each time unit.
+        // For each time unit, 
+        //     for each plural rule, following is unit pattern fall-back rule:
+        //         ( for example: "one" hour )
+        //         look for its unit pattern in its locale tree.
+        //         if pattern is not found in its own locale, such as de_DE,
+        //         look for the pattern in its parent, such as de,
+        //         keep looking till found or till root.
+        //         if the pattern is not found in root either,
+        //         fallback to plural count "other",
+        //         look for the pattern of "other" in the locale tree:
+        //         "de_DE" to "de" to "root".
+        //         If not found, fall back to value of 
+        //         static variable DEFAULT_PATTERN_FOR_xxx, such as "{0} h". 
+        //
+        // Following is consistency check to create pattern for each
+        // plural rule in each time unit using above fall-back rule.
+        //
+        final TimeUnit[] timeUnits = TimeUnit.values();
+        Set keywords = pluralRules.getKeywords();
+        for ( int i = 0; i < timeUnits.length; ++i ) {
+            // for each time unit, 
+            // get all the patterns for each plural rule in this locale.
+            final TimeUnit timeUnit = timeUnits[i];
+            Map countToPatterns = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            if ( countToPatterns == null ) {
+                countToPatterns = new TreeMap();
+                timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
+            }
+            for (Iterator it = keywords.iterator(); it.hasNext();) {
+                String pluralCount = (String) it.next();
+                if ( countToPatterns.get(pluralCount) == null ||
+                     ((Object[])countToPatterns.get(pluralCount))[style] == null ) {
+                    // look through parents
+                    searchInTree(resourceKey, style, timeUnit, pluralCount, pluralCount, countToPatterns);
+                }
+            }
+        }
+    }
+
+
+
+    // srcPluralCount is the original plural count on which the pattern is
+    // searched for.
+    // searchPluralCount is the fallback plural count.
+    // For example, to search for pattern for ""one" hour",
+    // "one" is the srcPluralCount,
+    // if the pattern is not found even in root, fallback to 
+    // using patterns of plural count "other", 
+    // then, "other" is the searchPluralCount.
+    private void searchInTree(String resourceKey, int styl,
+                              TimeUnit timeUnit, String srcPluralCount,
+                              String searchPluralCount, Map countToPatterns) {
+        ULocale parentLocale=locale;
+        String srcTimeUnitName = timeUnit.toString();
+        while ( parentLocale != null ) {
+            try {
+                // look for pattern for srcPluralCount in locale tree
+                ICUResourceBundle unitsRes = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+                unitsRes = unitsRes.getWithFallback(resourceKey);
+                ICUResourceBundle oneUnitRes = unitsRes.getWithFallback(srcTimeUnitName);
+                String pattern = oneUnitRes.getStringWithFallback(searchPluralCount);
+                final MessageFormat messageFormat = new MessageFormat(pattern, locale);
+                if (format != null) {
+                    messageFormat.setFormatByArgumentIndex(0, format);
+                }
+                Object[] pair = (Object[])countToPatterns.get(srcPluralCount);
+                if (pair == null) {
+                    pair = new Object[2];
+                    countToPatterns.put(srcPluralCount, pair);
+                }
+                pair[styl] = messageFormat;
+                return;
+            } catch ( MissingResourceException e ) {
+            }
+            parentLocale=parentLocale.getFallback();
+        }
+        // if not found the pattern for this plural count at all,
+        // fall-back to plural count "other"
+        if ( searchPluralCount.equals("other") ) {
+            // set default fall back the same as the resource in root
+            MessageFormat messageFormat = null;
+            if ( timeUnit == TimeUnit.SECOND ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_SECOND, locale);
+            } else if ( timeUnit == TimeUnit.MINUTE ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_MINUTE, locale);
+            } else if ( timeUnit == TimeUnit.HOUR ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_HOUR, locale);
+            } else if ( timeUnit == TimeUnit.WEEK ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_WEEK, locale);
+            } else if ( timeUnit == TimeUnit.DAY ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_DAY, locale);
+            } else if ( timeUnit == TimeUnit.MONTH ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_MONTH, locale);
+            } else if ( timeUnit == TimeUnit.YEAR ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_YEAR, locale);
+            }
+            if (format != null && messageFormat != null) {
+                messageFormat.setFormatByArgumentIndex(0, format);
+            }
+            Object[] pair = (Object[])countToPatterns.get(srcPluralCount);
+            if (pair == null) {
+                pair = new Object[2];
+                countToPatterns.put(srcPluralCount, pair);
+            }
+            pair[styl] = messageFormat;
+        } else {
+            // fall back to rule "other", and search in parents
+            searchInTree(resourceKey, styl, timeUnit, srcPluralCount, "other", countToPatterns);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/TitlecaseTransliterator.java b/src/com/ibm/icu/text/TitlecaseTransliterator.java
new file mode 100644
index 0000000..71aef2e
--- /dev/null
+++ b/src/com/ibm/icu/text/TitlecaseTransliterator.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 1996-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that converts all letters (as defined by
+ * <code>UCharacter.isLetter()</code>) to lower case, except for those
+ * letters preceded by non-letters.  The latter are converted to title
+ * case using <code>UCharacter.toTitleCase()</code>.
+ * @author Alan Liu
+ */
+class TitlecaseTransliterator extends Transliterator {
+
+    static final String _ID = "Any-Title";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new TitlecaseTransliterator(ULocale.US);
+            }
+        });
+
+        registerSpecialInverse("Title", "Lower", false);
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+   /**
+     * Constructs a transliterator.
+     */
+    public TitlecaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        // Need to look back 2 characters in the case of "can't"
+        setMaximumContextLength(2);
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+     
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        // TODO reimplement, see ustrcase.c
+        // using a real word break iterator
+        //   instead of just looking for a transition between cased and uncased characters
+        // call CaseMapTransliterator::handleTransliterate() for lowercasing? (set fMap)
+        // needs to take isIncremental into account because case mappings are context-sensitive
+        //   also detect when lowercasing function did not finish because of context
+
+        if (offsets.start >= offsets.limit) {
+            return;
+        }
+
+        // case type: >0 cased (UCaseProps.LOWER etc.)  ==0 uncased  <0 case-ignorable
+        int type;
+
+        // Our mode; we are either converting letter toTitle or
+        // toLower.
+        boolean doTitle = true;
+
+        // Determine if there is a preceding context of cased case-ignorable*,
+        // in which case we want to start in toLower mode.  If the
+        // prior context is anything else (including empty) then start
+        // in toTitle mode.
+        int c, start;
+        for (start = offsets.start - 1; start >= offsets.contextStart; start -= UTF16.getCharCount(c)) {
+            c = text.char32At(start);
+            type=csp.getTypeOrIgnorable(c);
+            if(type>0) { // cased
+                doTitle=false;
+                break;
+            } else if(type==0) { // uncased but not ignorable
+                break;
+            }
+            // else (type<0) case-ignorable: continue
+        }
+
+        // Convert things after a cased character toLower; things
+        // after a uncased, non-case-ignorable character toTitle.  Case-ignorable
+        // characters are copied directly and do not change the mode.
+
+        iter.setText(text);
+        iter.setIndex(offsets.start);
+        iter.setLimit(offsets.limit);
+        iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+
+        result.setLength(0);
+
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+        int delta;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            type=csp.getTypeOrIgnorable(c);
+            if(type>=0) { // not case-ignorable
+                if(doTitle) {
+                    c=csp.toFullTitle(c, iter, result, locale, locCache);
+                } else {
+                    c=csp.toFullLower(c, iter, result, locale, locCache);
+                }
+                doTitle = type==0; // doTitle=isUncased
+
+                if(iter.didReachLimit() && isIncremental) {
+                    // the case mapping function tried to look beyond the context limit
+                    // wait for more input
+                    offsets.start=iter.getCaseMapCPStart();
+                    return;
+                }
+
+                /* decode the result */
+                if(c<0) {
+                    /* c mapped to itself, no change */
+                    continue;
+                } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                    /* replace by the mapping string */
+                    delta=iter.replace(result.toString());
+                    result.setLength(0);
+                } else {
+                    /* replace by single-code point mapping */
+                    delta=iter.replace(UTF16.valueOf(c));
+                }
+
+                if(delta!=0) {
+                    offsets.limit += delta;
+                    offsets.contextLimit += delta;
+                }
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/TransformTransliterator.java b/src/com/ibm/icu/text/TransformTransliterator.java
new file mode 100644
index 0000000..311bf3c
--- /dev/null
+++ b/src/com/ibm/icu/text/TransformTransliterator.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ */
+package com.ibm.icu.text;
+//import java.util.*;
+
+abstract class TransformTransliterator {
+    // Currently unused
+}
+
+///**
+// * An abstract class for transliterators based on a transform
+// * operation.  To create a transliterator that implements a
+// * transformation, create a subclass of this class and implement the
+// * abstract <code>transform()</code> and <code>hasTransform()</code>
+// * methods.
+// * @author Alan Liu
+// */
+//abstract class TransformTransliterator extends Transliterator {
+//
+//    /**
+//     * Constructs a transliterator.  For use by subclasses.
+//     */
+//    protected TransformTransliterator(String id, UnicodeFilter f) {
+//        super(id, f);
+//    }
+//
+//    /**
+//     * Implements {@link Transliterator#handleTransliterate}.
+//     */
+//    protected void handleTransliterate(Replaceable text,
+//                                       Position offsets, boolean incremental) {
+//
+//        int start;
+//        for (start = offsets.start; start < offsets.limit; ++start) {
+//            // Scan for the first character that is != its transform.
+//            // If there are none, we fall out without doing anything.
+//            char c = text.charAt(start);
+//            if (hasTransform(c)) {
+//                // There is a transforming character at start.  Break
+//                // up the remaining string, from start to
+//                // offsets.limit, into segments of unfiltered and
+//                // filtered characters.  Only transform the unfiltered
+//                // characters.  As always, minimize the number of
+//                // calls to Replaceable.replace().
+//
+//                int len = offsets.limit - start;
+//                // assert(len >= 1);
+//                
+//                char[] buf = new char[len];
+//                text.getChars(start, offsets.limit, buf, 0);
+//
+//                int segStart = 0;
+//                int segLimit;
+//                UnicodeFilter filt = getFilter();
+//
+//                // lenDelta is the accumulated length difference for
+//                // all transformed segments.  It is new length - old
+//                // length.
+//                int lenDelta = 0;
+//
+//                // Set segStart, segLimit to the unfiltered segment
+//                // starting with start.  If the filter is null, then
+//                // segStart/Limit will be set to the whole string,
+//                // that is, 0/len.
+//                do {
+//                    // Set segLimit to the first filtered char at or
+//                    // after segStart.
+//                    segLimit = len;
+//                    if (filt != null) {
+//                        segLimit = segStart;
+//                        while (segLimit < len && filt.contains(buf[segLimit])) {
+//                             ++segLimit;
+//                        }
+//                    }
+//
+//                    // Transform the unfiltered chars between segStart
+//                    // and segLimit.
+//                    int segLen = segLimit - segStart;
+//                    if (segLen != 0) {
+//                        String newStr = transform(
+//                            new String(buf, segStart, segLen));
+//                        text.replace(start, start + segLen, newStr);
+//                        start += newStr.length();
+//                        lenDelta += newStr.length() - segLen;
+//                    }
+//
+//                    // Set segStart to the first unfiltered char at or
+//                    // after segLimit.
+//                    segStart = segLimit;
+//                    if (filt != null) {
+//                        while (segStart < len && !filt.contains(buf[segStart])) {
+//                            ++segStart;
+//                        }
+//                    }
+//                    start += segStart - segLimit;
+//
+//                } while (segStart < len);
+//                
+//                offsets.limit += lenDelta;
+//                offsets.contextLimit += lenDelta;
+//                offsets.start = offsets.limit;
+//                return;
+//            }
+//        }
+//        // assert(start == offsets.limit);
+//        offsets.start = start;
+//    }
+//
+//    /**
+//     * Subclasses must implement this method to determine whether a
+//     * given character has a transform that is not equal to itself.
+//     * This is approximately equivalent to <code>c !=
+//     * transform(String.valueOf(c))</code>, where
+//     * <code>String.valueOf(c)</code> returns a String containing the
+//     * single character (not integer) <code>c</code>.  Subclasses that
+//     * transform all their input can simply return <code>true</code>.
+//     */
+//    protected abstract boolean hasTransform(int c);
+//
+//    /**
+//     * Subclasses must implement this method to transform a string.
+//     */
+//    protected abstract String transform(String s);
+//}
diff --git a/src/com/ibm/icu/text/TransliterationRule.java b/src/com/ibm/icu/text/TransliterationRule.java
new file mode 100644
index 0000000..907e1ac
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRule.java
@@ -0,0 +1,572 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliteration rule used by
+ * <code>RuleBasedTransliterator</code>.
+ * <code>TransliterationRule</code> is an immutable object.
+ *
+ * <p>A rule consists of an input pattern and an output string.  When
+ * the input pattern is matched, the output string is emitted.  The
+ * input pattern consists of zero or more characters which are matched
+ * exactly (the key) and optional context.  Context must match if it
+ * is specified.  Context may be specified before the key, after the
+ * key, or both.  The key, preceding context, and following context
+ * may contain variables.  Variables represent a set of Unicode
+ * characters, such as the letters <i>a</i> through <i>z</i>.
+ * Variables are detected by looking up each character in a supplied
+ * variable list to see if it has been so defined.
+ *
+ * <p>A rule may contain segments in its input string and segment
+ * references in its output string.  A segment is a substring of the
+ * input pattern, indicated by an offset and limit.  The segment may
+ * be in the preceding or following context.  It may not span a
+ * context boundary.  A segment reference is a special character in
+ * the output string that causes a segment of the input string (not
+ * the input pattern) to be copied to the output string.  The range of
+ * special characters that represent segment references is defined by
+ * RuleBasedTransliterator.Data.
+ *
+ * <p>Example: The rule "([a-z]) . ([0-9]) > $2 . $1" will change the input
+ * string "abc.123" to "ab1.c23".
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+class TransliterationRule {
+
+    // TODO Eliminate the pattern and keyLength data members.  They
+    // are used only by masks() and getIndexValue() which are called
+    // only during build time, not during run-time.  Perhaps these
+    // methods and pattern/keyLength can be isolated into a separate
+    // object.
+
+    /**
+     * The match that must occur before the key, or null if there is no
+     * preceding context.
+     */
+    private StringMatcher anteContext;
+
+    /**
+     * The matcher object for the key.  If null, then the key is empty.
+     */
+    private StringMatcher key;
+
+    /**
+     * The match that must occur after the key, or null if there is no
+     * following context.
+     */
+    private StringMatcher postContext;
+
+    /**
+     * The object that performs the replacement if the key,
+     * anteContext, and postContext are matched.  Never null.
+     */
+    private UnicodeReplacer output;
+
+    /**
+     * The string that must be matched, consisting of the anteContext, key,
+     * and postContext, concatenated together, in that order.  Some components
+     * may be empty (zero length).
+     * @see anteContextLength
+     * @see keyLength
+     */
+    private String pattern;
+
+    /**
+     * An array of matcher objects corresponding to the input pattern
+     * segments.  If there are no segments this is null.  N.B. This is
+     * a UnicodeMatcher for generality, but in practice it is always a
+     * StringMatcher.  In the future we may generalize this, but for
+     * now we sometimes cast down to StringMatcher.
+     */
+    UnicodeMatcher[] segments;
+
+    /**
+     * The length of the string that must match before the key.  If
+     * zero, then there is no matching requirement before the key.
+     * Substring [0,anteContextLength) of pattern is the anteContext.
+     */
+    private int anteContextLength;
+
+    /**
+     * The length of the key.  Substring [anteContextLength,
+     * anteContextLength + keyLength) is the key.
+     */
+    private int keyLength;
+
+    /**
+     * Miscellaneous attributes.
+     */
+    byte flags;
+
+    /**
+     * Flag attributes.
+     */
+    static final int ANCHOR_START = 1;
+    static final int ANCHOR_END   = 2;
+
+    /**
+     * An alias pointer to the data for this rule.  The data provides
+     * lookup services for matchers and segments.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+
+    /**
+     * Construct a new rule with the given input, output text, and other
+     * attributes.  A cursor position may be specified for the output text.
+     * @param input input string, including key and optional ante and
+     * post context
+     * @param anteContextPos offset into input to end of ante context, or -1 if
+     * none.  Must be <= input.length() if not -1.
+     * @param postContextPos offset into input to start of post context, or -1
+     * if none.  Must be <= input.length() if not -1, and must be >=
+     * anteContextPos.
+     * @param output output string
+     * @param cursorPos offset into output at which cursor is located, or -1 if
+     * none.  If less than zero, then the cursor is placed after the
+     * <code>output</code>; that is, -1 is equivalent to
+     * <code>output.length()</code>.  If greater than
+     * <code>output.length()</code> then an exception is thrown.
+     * @param cursorOffset an offset to be added to cursorPos to position the
+     * cursor either in the ante context, if < 0, or in the post context, if >
+     * 0.  For example, the rule "abc{def} > | @@@ xyz;" changes "def" to
+     * "xyz" and moves the cursor to before "a".  It would have a cursorOffset
+     * of -3.
+     * @param segs array of UnicodeMatcher corresponding to input pattern
+     * segments, or null if there are none
+     * @param anchorStart true if the the rule is anchored on the left to
+     * the context start
+     * @param anchorEnd true if the rule is anchored on the right to the
+     * context limit
+     */
+    public TransliterationRule(String input,
+                               int anteContextPos, int postContextPos,
+                               String output,
+                               int cursorPos, int cursorOffset,
+                               UnicodeMatcher[] segs,
+                               boolean anchorStart, boolean anchorEnd,
+                               RuleBasedTransliterator.Data theData) {
+        data = theData;
+
+        // Do range checks only when warranted to save time
+        if (anteContextPos < 0) {
+            anteContextLength = 0;
+        } else {
+            if (anteContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid ante context");
+            }
+            anteContextLength = anteContextPos;
+        }
+        if (postContextPos < 0) {
+            keyLength = input.length() - anteContextLength;
+        } else {
+            if (postContextPos < anteContextLength ||
+                postContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid post context");
+            }
+            keyLength = postContextPos - anteContextLength;
+        }
+        if (cursorPos < 0) {
+            cursorPos = output.length();
+        } else if (cursorPos > output.length()) {
+            throw new IllegalArgumentException("Invalid cursor position");
+        }
+
+        // We don't validate the segments array.  The caller must
+        // guarantee that the segments are well-formed (that is, that
+        // all $n references in the output refer to indices of this
+        // array, and that no array elements are null).
+        this.segments = segs;
+
+        pattern = input;
+        flags = 0;
+        if (anchorStart) {
+            flags |= ANCHOR_START;
+        }
+        if (anchorEnd) {
+            flags |= ANCHOR_END;
+        }
+
+        anteContext = null;
+        if (anteContextLength > 0) {
+            anteContext = new StringMatcher(pattern.substring(0, anteContextLength),
+                                            0, data);
+        }
+
+        key = null;
+        if (keyLength > 0) {
+            key = new StringMatcher(pattern.substring(anteContextLength, anteContextLength + keyLength),
+                                    0, data);
+        }
+
+        int postContextLength = pattern.length() - keyLength - anteContextLength;
+        postContext = null;
+        if (postContextLength > 0) {
+            postContext = new StringMatcher(pattern.substring(anteContextLength + keyLength),
+                                            0, data);
+        }
+
+        this.output = new StringReplacer(output, cursorPos + cursorOffset, data);
+    }
+
+    /**
+     * Return the preceding context length.  This method is needed to
+     * support the <code>Transliterator</code> method
+     * <code>getMaximumContextLength()</code>.
+     */
+    public int getAnteContextLength() {
+        return anteContextLength + (((flags & ANCHOR_START) != 0) ? 1 : 0);
+    }
+
+    /**
+     * Internal method.  Returns 8-bit index value for this rule.
+     * This is the low byte of the first character of the key,
+     * unless the first character of the key is a set.  If it's a
+     * set, or otherwise can match multiple keys, the index value is -1.
+     */
+    final int getIndexValue() {
+        if (anteContextLength == pattern.length()) {
+            // A pattern with just ante context {such as foo)>bar} can
+            // match any key.
+            return -1;
+        }
+        int c = UTF16.charAt(pattern, anteContextLength);
+        return data.lookupMatcher(c) == null ? (c & 0xFF) : -1;
+    }
+
+    /**
+     * Internal method.  Returns true if this rule matches the given
+     * index value.  The index value is an 8-bit integer, 0..255,
+     * representing the low byte of the first character of the key.
+     * It matches this rule if it matches the first character of the
+     * key, or if the first character of the key is a set, and the set
+     * contains any character with a low byte equal to the index
+     * value.  If the rule contains only ante context, as in foo)>bar,
+     * then it will match any key.
+     */
+    final boolean matchesIndexValue(int v) {
+        // Delegate to the key, or if there is none, to the postContext.
+        // If there is neither then we match any key; return true.
+        UnicodeMatcher m = (key != null) ? key : postContext;
+        return (m != null) ? m.matchesIndexValue(v) : true;
+    }
+
+    /**
+     * Return true if this rule masks another rule.  If r1 masks r2 then
+     * r1 matches any input string that r2 matches.  If r1 masks r2 and r2 masks
+     * r1 then r1 == r2.  Examples: "a>x" masks "ab>y".  "a>x" masks "a[b]>y".
+     * "[c]a>x" masks "[dc]a>y".
+     */
+    public boolean masks(TransliterationRule r2) {
+        /* Rule r1 masks rule r2 if the string formed of the
+         * antecontext, key, and postcontext overlaps in the following
+         * way:
+         *
+         * r1:      aakkkpppp
+         * r2:     aaakkkkkpppp
+         *            ^
+         *
+         * The strings must be aligned at the first character of the
+         * key.  The length of r1 to the left of the alignment point
+         * must be <= the length of r2 to the left; ditto for the
+         * right.  The characters of r1 must equal (or be a superset
+         * of) the corresponding characters of r2.  The superset
+         * operation should be performed to check for UnicodeSet
+         * masking.
+         *
+         * Anchors:  Two patterns that differ only in anchors only
+         * mask one another if they are exactly equal, and r2 has
+         * all the anchors r1 has (optionally, plus some).  Here Y
+         * means the row masks the column, N means it doesn't.
+         *
+         *         ab   ^ab    ab$  ^ab$
+         *   ab    Y     Y     Y     Y
+         *  ^ab    N     Y     N     Y
+         *   ab$   N     N     Y     Y
+         *  ^ab$   N     N     N     Y
+         *
+         * Post context: {a}b masks ab, but not vice versa, since {a}b
+         * matches everything ab matches, and {a}b matches {|a|}b but ab
+         * does not.  Pre context is different (a{b} does not align with
+         * ab).
+         */
+
+        /* LIMITATION of the current mask algorithm: Some rule
+         * maskings are currently not detected.  For example,
+         * "{Lu}]a>x" masks "A]a>y".  This can be added later. TODO
+         */
+
+        int len = pattern.length();
+        int left = anteContextLength;
+        int left2 = r2.anteContextLength;
+        int right = pattern.length() - left;
+        int right2 = r2.pattern.length() - left2;
+
+        // TODO Clean this up -- some logic might be combinable with the
+        // next statement.
+
+        // Test for anchor masking
+        if (left == left2 && right == right2 &&
+            keyLength <= r2.keyLength &&
+            r2.pattern.regionMatches(0, pattern, 0, len)) {
+            // The following boolean logic implements the table above
+            return (flags == r2.flags) ||
+                (!((flags & ANCHOR_START) != 0) && !((flags & ANCHOR_END) != 0)) ||
+                (((r2.flags & ANCHOR_START) != 0) && ((r2.flags & ANCHOR_END) != 0));
+        }
+
+        return left <= left2 &&
+            (right < right2 ||
+             (right == right2 && keyLength <= r2.keyLength)) &&
+            r2.pattern.regionMatches(left2 - left, pattern, 0, len);
+    }
+
+    static final int posBefore(Replaceable str, int pos) {
+        return (pos > 0) ?
+            pos - UTF16.getCharCount(str.char32At(pos-1)) :
+            pos - 1;
+    }
+
+    static final int posAfter(Replaceable str, int pos) {
+        return (pos >= 0 && pos < str.length()) ?
+            pos + UTF16.getCharCount(str.char32At(pos)) :
+            pos + 1;
+    }
+
+    /**
+     * Attempt a match and replacement at the given position.  Return
+     * the degree of match between this rule and the given text.  The
+     * degree of match may be mismatch, a partial match, or a full
+     * match.  A mismatch means at least one character of the text
+     * does not match the context or key.  A partial match means some
+     * context and key characters match, but the text is not long
+     * enough to match all of them.  A full match means all context
+     * and key characters match.
+     *
+     * If a full match is obtained, perform a replacement, update pos,
+     * and return U_MATCH.  Otherwise both text and pos are unchanged.
+     *
+     * @param text the text
+     * @param pos the position indices
+     * @param incremental if TRUE, test for partial matches that may
+     * be completed by additional text inserted at pos.limit.
+     * @return one of <code>U_MISMATCH</code>,
+     * <code>U_PARTIAL_MATCH</code>, or <code>U_MATCH</code>.  If
+     * incremental is FALSE then U_PARTIAL_MATCH will not be returned.
+     */
+    public int matchAndReplace(Replaceable text,
+                               Transliterator.Position pos,
+                               boolean incremental) {
+        // Matching and replacing are done in one method because the
+        // replacement operation needs information obtained during the
+        // match.  Another way to do this is to have the match method
+        // create a match result struct with relevant offsets, and to pass
+        // this into the replace method.
+
+        // ============================ MATCH ===========================
+
+        // Reset segment match data
+        if (segments != null) {
+            for (int i=0; i<segments.length; ++i) {
+                ((StringMatcher) segments[i]).resetMatch();
+            }
+        }
+
+        int keyLimit;
+        int[] intRef = new int[1];
+
+        // ------------------------ Ante Context ------------------------
+
+        // A mismatch in the ante context, or with the start anchor,
+        // is an outright U_MISMATCH regardless of whether we are
+        // incremental or not.
+        int oText; // offset into 'text'
+        int minOText;
+
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+
+        int anteLimit = posBefore(text, pos.contextStart);
+
+        int match;
+
+        // Start reverse match at char before pos.start
+        intRef[0] = posBefore(text, pos.start);
+
+        if (anteContext != null) {
+            match = anteContext.matches(text, intRef, anteLimit, false);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+        }
+
+        oText = intRef[0];
+
+        minOText = posAfter(text, oText);
+
+        // ------------------------ Start Anchor ------------------------
+
+        if (((flags & ANCHOR_START) != 0) && oText != anteLimit) {
+            return UnicodeMatcher.U_MISMATCH;
+        }
+
+        // -------------------- Key and Post Context --------------------
+
+        intRef[0] = pos.start;
+
+        if (key != null) {
+            match = key.matches(text, intRef, pos.limit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        keyLimit = intRef[0];
+
+        if (postContext != null) {
+            if (incremental && keyLimit == pos.limit) {
+                // The key matches just before pos.limit, and there is
+                // a postContext.  Since we are in incremental mode,
+                // we must assume more characters may be inserted at
+                // pos.limit -- this is a partial match.
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+
+            match = postContext.matches(text, intRef, pos.contextLimit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        oText = intRef[0];
+
+        // ------------------------- Stop Anchor ------------------------
+
+        if (((flags & ANCHOR_END)) != 0) {
+            if (oText != pos.contextLimit) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+            if (incremental) {
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+        }
+
+        // =========================== REPLACE ==========================
+
+        // We have a full match.  The key is between pos.start and
+        // keyLimit.
+
+        int newLength = output.replace(text, pos.start, keyLimit, intRef);
+        int lenDelta = newLength - (keyLimit - pos.start);
+        int newStart = intRef[0];
+
+        oText += lenDelta;
+        pos.limit += lenDelta;
+        pos.contextLimit += lenDelta;
+        // Restrict new value of start to [minOText, min(oText, pos.limit)].
+        pos.start = Math.max(minOText, Math.min(Math.min(oText, pos.limit), newStart));
+        return UnicodeMatcher.U_MATCH;
+    }
+
+    /**
+     * Create a source string that represents this rule.  Append it to the
+     * given string.
+     */
+    public String toRule(boolean escapeUnprintable) {
+       // int i;
+
+        StringBuffer rule = new StringBuffer();
+
+        // Accumulate special characters (and non-specials following them)
+        // into quoteBuf.  Append quoteBuf, within single quotes, when
+        // a non-quoted element must be inserted.
+        StringBuffer quoteBuf = new StringBuffer();
+
+        // Do not emit the braces '{' '}' around the pattern if there
+        // is neither anteContext nor postContext.
+        boolean emitBraces =
+            (anteContext != null) || (postContext != null);
+
+        // Emit start anchor
+        if ((flags & ANCHOR_START) != 0) {
+            rule.append('^');
+        }
+
+        // Emit the input pattern
+        Utility.appendToRule(rule, anteContext, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '{', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, key, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '}', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, postContext, escapeUnprintable, quoteBuf);
+
+        // Emit end anchor
+        if ((flags & ANCHOR_END) != 0) {
+            rule.append('$');
+        }
+
+        Utility.appendToRule(rule, " > ", true, escapeUnprintable, quoteBuf);
+
+        // Emit the output pattern
+
+        Utility.appendToRule(rule, output.toReplacerPattern(escapeUnprintable),
+                     true, escapeUnprintable, quoteBuf);
+
+        Utility.appendToRule(rule, ';', true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Return a string representation of this object.
+     * @return string representation of this object
+     */
+    public String toString() {
+        return '{' + toRule(true) + '}';
+    }
+
+    /**
+     * Union the set of all characters that may be modified by this rule
+     * into the given set.
+     */
+    void addSourceSetTo(UnicodeSet toUnionTo) {
+        int limit = anteContextLength + keyLength;
+        for (int i=anteContextLength; i<limit; ) {
+            int ch = UTF16.charAt(pattern, i);
+            i += UTF16.getCharCount(ch);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * Union the set of all characters that may be emitted by this rule
+     * into the given set.
+     */
+    void addTargetSetTo(UnicodeSet toUnionTo) {
+        output.addReplacementSetTo(toUnionTo);
+    }
+}
diff --git a/src/com/ibm/icu/text/TransliterationRuleSet.java b/src/com/ibm/icu/text/TransliterationRuleSet.java
new file mode 100644
index 0000000..5013afa
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRuleSet.java
@@ -0,0 +1,258 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.*;
+import com.ibm.icu.impl.UtilityExtensions;
+
+/**
+ * A set of rules for a <code>RuleBasedTransliterator</code>.  This set encodes
+ * the transliteration in one direction from one set of characters or short
+ * strings to another.  A <code>RuleBasedTransliterator</code> consists of up to
+ * two such sets, one for the forward direction, and one for the reverse.
+ *
+ * <p>A <code>TransliterationRuleSet</code> has one important operation, that of
+ * finding a matching rule at a given point in the text.  This is accomplished
+ * by the <code>findMatch()</code> method.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+class TransliterationRuleSet {
+    /**
+     * Vector of rules, in the order added.
+     */
+    private Vector ruleVector;
+
+    /**
+     * Length of the longest preceding context
+     */
+    private int maxContextLength;
+
+    /**
+     * Sorted and indexed table of rules.  This is created by freeze() from
+     * the rules in ruleVector.  rules.length >= ruleVector.size(), and the
+     * references in rules[] are aliases of the references in ruleVector.
+     * A single rule in ruleVector is listed one or more times in rules[].
+     */
+    private TransliterationRule[] rules;
+
+    /**
+     * Index table.  For text having a first character c, compute x = c&0xFF.
+     * Now use rules[index[x]..index[x+1]-1].  This index table is created by
+     * freeze().
+     */
+    private int[] index;
+
+    /**
+     * Construct a new empty rule set.
+     */
+    public TransliterationRuleSet() {
+        ruleVector = new Vector();
+        maxContextLength = 0;
+    }
+
+    /**
+     * Return the maximum context length.
+     * @return the length of the longest preceding context.
+     */
+    public int getMaximumContextLength() {
+        return maxContextLength;
+    }
+
+    /**
+     * Add a rule to this set.  Rules are added in order, and order is
+     * significant.
+     * @param rule the rule to add
+     */
+    public void addRule(TransliterationRule rule) {
+        ruleVector.addElement(rule);
+        int len;
+        if ((len = rule.getAnteContextLength()) > maxContextLength) {
+            maxContextLength = len;
+        }
+
+        rules = null;
+    }
+
+    /**
+     * Close this rule set to further additions, check it for masked rules,
+     * and index it to optimize performance.
+     * @exception IllegalArgumentException if some rules are masked
+     */
+    public void freeze() {
+        /* Construct the rule array and index table.  We reorder the
+         * rules by sorting them into 256 bins.  Each bin contains all
+         * rules matching the index value for that bin.  A rule
+         * matches an index value if string whose first key character
+         * has a low byte equal to the index value can match the rule.
+         *
+         * Each bin contains zero or more rules, in the same order
+         * they were found originally.  However, the total rules in
+         * the bins may exceed the number in the original vector,
+         * since rules that have a variable as their first key
+         * character will generally fall into more than one bin.
+         *
+         * That is, each bin contains all rules that either have that
+         * first index value as their first key character, or have
+         * a set containing the index value as their first character.
+         */
+        int n = ruleVector.size();
+        index = new int[257]; // [sic]
+        Vector v = new Vector(2*n); // heuristic; adjust as needed
+
+        /* Precompute the index values.  This saves a LOT of time.
+         */
+        int[] indexValue = new int[n];
+        for (int j=0; j<n; ++j) {
+            TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+            indexValue[j] = r.getIndexValue();
+        }
+        for (int x=0; x<256; ++x) {
+            index[x] = v.size();
+            for (int j=0; j<n; ++j) {
+                if (indexValue[j] >= 0) {
+                    if (indexValue[j] == x) {
+                        v.addElement(ruleVector.elementAt(j));
+                    }
+                } else {
+                    // If the indexValue is < 0, then the first key character is
+                    // a set, and we must use the more time-consuming
+                    // matchesIndexValue check.  In practice this happens
+                    // rarely, so we seldom tread this code path.
+                    TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+                    if (r.matchesIndexValue(x)) {
+                        v.addElement(r);
+                    }
+                }
+            }
+        }
+        index[256] = v.size();
+
+        /* Freeze things into an array.
+         */
+        rules = new TransliterationRule[v.size()];
+        v.copyInto(rules);
+
+        StringBuffer errors = null;
+
+        /* Check for masking.  This is MUCH faster than our old check,
+         * which was each rule against each following rule, since we
+         * only have to check for masking within each bin now.  It's
+         * 256*O(n2^2) instead of O(n1^2), where n1 is the total rule
+         * count, and n2 is the per-bin rule count.  But n2<<n1, so
+         * it's a big win.
+         */
+        for (int x=0; x<256; ++x) {
+            for (int j=index[x]; j<index[x+1]-1; ++j) {
+                TransliterationRule r1 = rules[j];
+                for (int k=j+1; k<index[x+1]; ++k) {
+                    TransliterationRule r2 = rules[k];
+                    if (r1.masks(r2)) {
+                        if (errors == null) {
+                            errors = new StringBuffer();
+                        } else {
+                            errors.append("\n");
+                        }
+                        errors.append("Rule " + r1 + " masks " + r2);
+                    }
+                }
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * Transliterate the given text with the given UTransPosition
+     * indices.  Return TRUE if the transliteration should continue
+     * or FALSE if it should halt (because of a U_PARTIAL_MATCH match).
+     * Note that FALSE is only ever returned if isIncremental is TRUE.
+     * @param text the text to be transliterated
+     * @param pos the position indices, which will be updated
+     * @param incremental if TRUE, assume new text may be inserted
+     * at index.limit, and return FALSE if thre is a partial match.
+     * @return TRUE unless a U_PARTIAL_MATCH has been obtained,
+     * indicating that transliteration should stop until more text
+     * arrives.
+     */
+    public boolean transliterate(Replaceable text,
+                                 Transliterator.Position pos,
+                                 boolean incremental) {
+        int indexByte = text.char32At(pos.start) & 0xFF;
+        for (int i=index[indexByte]; i<index[indexByte+1]; ++i) {
+            int m = rules[i].matchAndReplace(text, pos, incremental);
+            switch (m) {
+            case UnicodeMatcher.U_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: match ":"Rule: match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       UtilityExtensions.formatInput(text, pos));
+                }
+                return true;
+            case UnicodeMatcher.U_PARTIAL_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: partial match ":"Rule: partial match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       UtilityExtensions.formatInput(text, pos));
+                }
+                return false;
+                default:
+                    if (Transliterator.DEBUG) {
+                        System.out.println("Rule: no match " + rules[i]);
+                    }
+            }
+        }
+        // No match or partial match from any rule
+        pos.start += UTF16.getCharCount(text.char32At(pos.start));
+        if (Transliterator.DEBUG) {
+            System.out.println((incremental ? "Rule.i: no match => ":"Rule: no match => ") +
+                               UtilityExtensions.formatInput(text, pos));
+        }
+        return true;
+    }
+
+    /**
+     * Create rule strings that represents this rule set.
+     */
+    String toRules(boolean escapeUnprintable) {
+        int i;
+        int count = ruleVector.size();
+        StringBuffer ruleSource = new StringBuffer();
+        for (i=0; i<count; ++i) {
+            if (i != 0) {
+                ruleSource.append('\n');
+            }
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            ruleSource.append(r.toRule(escapeUnprintable));
+        }
+        return ruleSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified (getTarget=false)
+     * or emitted (getTarget=true) by this set.
+     */
+    UnicodeSet getSourceTargetSet(boolean getTarget) {
+        UnicodeSet set = new UnicodeSet();
+        int count = ruleVector.size();
+        for (int i=0; i<count; ++i) {
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            if (getTarget) {
+                r.addTargetSetTo(set);
+            } else {
+                r.addSourceSetTo(set);
+            }
+        }
+        return set;
+    }
+}
diff --git a/src/com/ibm/icu/text/Transliterator.java b/src/com/ibm/icu/text/Transliterator.java
new file mode 100644
index 0000000..17261a5
--- /dev/null
+++ b/src/com/ibm/icu/text/Transliterator.java
@@ -0,0 +1,1910 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.text.MessageFormat;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+/**
+ * <code>Transliterator</code> is an abstract class that
+ * transliterates text from one format to another.  The most common
+ * kind of transliterator is a script, or alphabet, transliterator.
+ * For example, a Russian to Latin transliterator changes Russian text
+ * written in Cyrillic characters to phonetically equivalent Latin
+ * characters.  It does not <em>translate</em> Russian to English!
+ * Transliteration, unlike translation, operates on characters, without
+ * reference to the meanings of words and sentences.
+ *
+ * <p>Although script conversion is its most common use, a
+ * transliterator can actually perform a more general class of tasks.
+ * In fact, <code>Transliterator</code> defines a very general API
+ * which specifies only that a segment of the input text is replaced
+ * by new text.  The particulars of this conversion are determined
+ * entirely by subclasses of <code>Transliterator</code>.
+ *
+ * <p><b>Transliterators are stateless</b>
+ *
+ * <p><code>Transliterator</code> objects are <em>stateless</em>; they
+ * retain no information between calls to
+ * <code>transliterate()</code>.  As a result, threads may share
+ * transliterators without synchronizing them.  This might seem to
+ * limit the complexity of the transliteration operation.  In
+ * practice, subclasses perform complex transliterations by delaying
+ * the replacement of text until it is known that no other
+ * replacements are possible.  In other words, although the
+ * <code>Transliterator</code> objects are stateless, the source text
+ * itself embodies all the needed information, and delayed operation
+ * allows arbitrary complexity.
+ *
+ * <p><b>Batch transliteration</b>
+ *
+ * <p>The simplest way to perform transliteration is all at once, on a
+ * string of existing text.  This is referred to as <em>batch</em>
+ * transliteration.  For example, given a string <code>input</code>
+ * and a transliterator <code>t</code>, the call
+ *
+ * <blockquote><code>String result = t.transliterate(input);
+ * </code></blockquote>
+ *
+ * will transliterate it and return the result.  Other methods allow
+ * the client to specify a substring to be transliterated and to use
+ * {@link Replaceable} objects instead of strings, in order to
+ * preserve out-of-band information (such as text styles).
+ *
+ * <p><b>Keyboard transliteration</b>
+ *
+ * <p>Somewhat more involved is <em>keyboard</em>, or incremental
+ * transliteration.  This is the transliteration of text that is
+ * arriving from some source (typically the user's keyboard) one
+ * character at a time, or in some other piecemeal fashion.
+ *
+ * <p>In keyboard transliteration, a <code>Replaceable</code> buffer
+ * stores the text.  As text is inserted, as much as possible is
+ * transliterated on the fly.  This means a GUI that displays the
+ * contents of the buffer may show text being modified as each new
+ * character arrives.
+ *
+ * <p>Consider the simple <code>RuleBasedTransliterator</code>:
+ *
+ * <blockquote><code>
+ * th&gt;{theta}<br>
+ * t&gt;{tau}
+ * </code></blockquote>
+ *
+ * When the user types 't', nothing will happen, since the
+ * transliterator is waiting to see if the next character is 'h'.  To
+ * remedy this, we introduce the notion of a cursor, marked by a '|'
+ * in the output string:
+ *
+ * <blockquote><code>
+ * t&gt;|{tau}<br>
+ * {tau}h&gt;{theta}
+ * </code></blockquote>
+ *
+ * Now when the user types 't', tau appears, and if the next character
+ * is 'h', the tau changes to a theta.  This is accomplished by
+ * maintaining a cursor position (independent of the insertion point,
+ * and invisible in the GUI) across calls to
+ * <code>transliterate()</code>.  Typically, the cursor will
+ * be coincident with the insertion point, but in a case like the one
+ * above, it will precede the insertion point.
+ *
+ * <p>Keyboard transliteration methods maintain a set of three indices
+ * that are updated with each call to
+ * <code>transliterate()</code>, including the cursor, start,
+ * and limit.  These indices are changed by the method, and they are
+ * passed in and out via a Position object. The <code>start</code> index
+ * marks the beginning of the substring that the transliterator will
+ * look at.  It is advanced as text becomes committed (but it is not
+ * the committed index; that's the <code>cursor</code>).  The
+ * <code>cursor</code> index, described above, marks the point at
+ * which the transliterator last stopped, either because it reached
+ * the end, or because it required more characters to disambiguate
+ * between possible inputs.  The <code>cursor</code> can also be
+ * explicitly set by rules in a <code>RuleBasedTransliterator</code>.
+ * Any characters before the <code>cursor</code> index are frozen;
+ * future keyboard transliteration calls within this input sequence
+ * will not change them.  New text is inserted at the
+ * <code>limit</code> index, which marks the end of the substring that
+ * the transliterator looks at.
+ *
+ * <p>Because keyboard transliteration assumes that more characters
+ * are to arrive, it is conservative in its operation.  It only
+ * transliterates when it can do so unambiguously.  Otherwise it waits
+ * for more characters to arrive.  When the client code knows that no
+ * more characters are forthcoming, perhaps because the user has
+ * performed some input termination operation, then it should call
+ * <code>finishTransliteration()</code> to complete any
+ * pending transliterations.
+ *
+ * <p><b>Inverses</b>
+ *
+ * <p>Pairs of transliterators may be inverses of one another.  For
+ * example, if transliterator <b>A</b> transliterates characters by
+ * incrementing their Unicode value (so "abc" -> "def"), and
+ * transliterator <b>B</b> decrements character values, then <b>A</b>
+ * is an inverse of <b>B</b> and vice versa.  If we compose <b>A</b>
+ * with <b>B</b> in a compound transliterator, the result is the
+ * indentity transliterator, that is, a transliterator that does not
+ * change its input text.
+ *
+ * The <code>Transliterator</code> method <code>getInverse()</code>
+ * returns a transliterator's inverse, if one exists, or
+ * <code>null</code> otherwise.  However, the result of
+ * <code>getInverse()</code> usually will <em>not</em> be a true
+ * mathematical inverse.  This is because true inverse transliterators
+ * are difficult to formulate.  For example, consider two
+ * transliterators: <b>AB</b>, which transliterates the character 'A'
+ * to 'B', and <b>BA</b>, which transliterates 'B' to 'A'.  It might
+ * seem that these are exact inverses, since
+ *
+ * <blockquote>"A" x <b>AB</b> -> "B"<br>
+ * "B" x <b>BA</b> -> "A"</blockquote>
+ *
+ * where 'x' represents transliteration.  However,
+ *
+ * <blockquote>"ABCD" x <b>AB</b> -> "BBCD"<br>
+ * "BBCD" x <b>BA</b> -> "AACD"</blockquote>
+ *
+ * so <b>AB</b> composed with <b>BA</b> is not the
+ * identity. Nonetheless, <b>BA</b> may be usefully considered to be
+ * <b>AB</b>'s inverse, and it is on this basis that
+ * <b>AB</b><code>.getInverse()</code> could legitimately return
+ * <b>BA</b>.
+ *
+ * <p><b>IDs and display names</b>
+ *
+ * <p>A transliterator is designated by a short identifier string or
+ * <em>ID</em>.  IDs follow the format <em>source-destination</em>,
+ * where <em>source</em> describes the entity being replaced, and
+ * <em>destination</em> describes the entity replacing
+ * <em>source</em>.  The entities may be the names of scripts,
+ * particular sequences of characters, or whatever else it is that the
+ * transliterator converts to or from.  For example, a transliterator
+ * from Russian to Latin might be named "Russian-Latin".  A
+ * transliterator from keyboard escape sequences to Latin-1 characters
+ * might be named "KeyboardEscape-Latin1".  By convention, system
+ * entity names are in English, with the initial letters of words
+ * capitalized; user entity names may follow any format so long as
+ * they do not contain dashes.
+ *
+ * <p>In addition to programmatic IDs, transliterator objects have
+ * display names for presentation in user interfaces, returned by
+ * {@link #getDisplayName}.
+ *
+ * <p><b>Factory methods and registration</b>
+ *
+ * <p>In general, client code should use the factory method
+ * <code>getInstance()</code> to obtain an instance of a
+ * transliterator given its ID.  Valid IDs may be enumerated using
+ * <code>getAvailableIDs()</code>.  Since transliterators are
+ * stateless, multiple calls to <code>getInstance()</code> with the
+ * same ID will return the same object.
+ *
+ * <p>In addition to the system transliterators registered at startup,
+ * user transliterators may be registered by calling
+ * <code>registerInstance()</code> at run time.  To register a
+ * transliterator subclass without instantiating it (until it is
+ * needed), users may call <code>registerClass()</code>.
+ *
+ * <p><b>Composed transliterators</b>
+ *
+ * <p>In addition to built-in system transliterators like
+ * "Latin-Greek", there are also built-in <em>composed</em>
+ * transliterators.  These are implemented by composing two or more
+ * component transliterators.  For example, if we have scripts "A",
+ * "B", "C", and "D", and we want to transliterate between all pairs
+ * of them, then we need to write 12 transliterators: "A-B", "A-C",
+ * "A-D", "B-A",..., "D-A", "D-B", "D-C".  If it is possible to
+ * convert all scripts to an intermediate script "M", then instead of
+ * writing 12 rule sets, we only need to write 8: "A~M", "B~M", "C~M",
+ * "D~M", "M~A", "M~B", "M~C", "M~D".  (This might not seem like a big
+ * win, but it's really 2<em>n</em> vs. <em>n</em><sup>2</sup> -
+ * <em>n</em>, so as <em>n</em> gets larger the gain becomes
+ * significant.  With 9 scripts, it's 18 vs. 72 rule sets, a big
+ * difference.)  Note the use of "~" rather than "-" for the script
+ * separator here; this indicates that the given transliterator is
+ * intended to be composed with others, rather than be used as is.
+ *
+ * <p>Composed transliterators can be instantiated as usual.  For
+ * example, the system transliterator "Devanagari-Gujarati" is a
+ * composed transliterator built internally as
+ * "Devanagari~InterIndic;InterIndic~Gujarati".  When this
+ * transliterator is instantiated, it appears externally to be a
+ * standard transliterator (e.g., getID() returns
+ * "Devanagari-Gujarati").
+ *
+ * <p><b>Subclassing</b>
+ *
+ * <p>Subclasses must implement the abstract method
+ * <code>handleTransliterate()</code>.  <p>Subclasses should override
+ * the <code>transliterate()</code> method taking a
+ * <code>Replaceable</code> and the <code>transliterate()</code>
+ * method taking a <code>String</code> and <code>StringBuffer</code>
+ * if the performance of these methods can be improved over the
+ * performance obtained by the default implementations in this class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class Transliterator implements StringTransform  {
+    /**
+     * Direction constant indicating the forward direction in a transliterator,
+     * e.g., the forward rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @stable ICU 2.0
+     */
+    public static final int FORWARD = 0;
+
+    /**
+     * Direction constant indicating the reverse direction in a transliterator,
+     * e.g., the reverse rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @stable ICU 2.0
+     */
+    public static final int REVERSE = 1;
+
+    /**
+     * Position structure for incremental transliteration.  This data
+     * structure defines two substrings of the text being
+     * transliterated.  The first region, [contextStart,
+     * contextLimit), defines what characters the transliterator will
+     * read as context.  The second region, [start, limit), defines
+     * what characters will actually be transliterated.  The second
+     * region should be a subset of the first.
+     *
+     * <p>After a transliteration operation, some of the indices in this
+     * structure will be modified.  See the field descriptions for
+     * details.
+     *
+     * <p>contextStart <= start <= limit <= contextLimit
+     *
+     * <p>Note: All index values in this structure must be at code point
+     * boundaries.  That is, none of them may occur between two code units
+     * of a surrogate pair.  If any index does split a surrogate pair,
+     * results are unspecified.
+     * @stable ICU 2.0
+     */
+    public static class Position {
+
+        /**
+         * Beginning index, inclusive, of the context to be considered for
+         * a transliteration operation.  The transliterator will ignore
+         * anything before this index.  INPUT/OUTPUT parameter: This parameter
+         * is updated by a transliteration operation to reflect the maximum
+         * amount of antecontext needed by a transliterator.
+         * @stable ICU 2.0
+         */
+        public int contextStart;
+
+        /**
+         * Ending index, exclusive, of the context to be considered for a
+         * transliteration operation.  The transliterator will ignore
+         * anything at or after this index.  INPUT/OUTPUT parameter: This
+         * parameter is updated to reflect changes in the length of the
+         * text, but points to the same logical position in the text.
+         * @stable ICU 2.0
+         */
+        public int contextLimit;
+
+        /**
+         * Beginning index, inclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is advanced past
+         * characters that have already been transliterated by a
+         * transliteration operation.
+         * @stable ICU 2.0
+         */
+        public int start;
+
+        /**
+         * Ending index, exclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is updated to reflect
+         * changes in the length of the text, but points to the same
+         * logical position in the text.
+         * @stable ICU 2.0
+         */
+        public int limit;
+
+        /**
+         * Constructs a Position object with start, limit,
+         * contextStart, and contextLimit all equal to zero.
+         * @stable ICU 2.0
+         */
+        public Position() {
+            this(0, 0, 0, 0);
+        }
+
+        /**
+         * Constructs a Position object with the given start,
+         * contextStart, and contextLimit.  The limit is set to the
+         * contextLimit.
+         * @stable ICU 2.0
+         */
+        public Position(int contextStart, int contextLimit, int start) {
+            this(contextStart, contextLimit, start, contextLimit);
+        }
+
+        /**
+         * Constructs a Position object with the given start, limit,
+         * contextStart, and contextLimit.
+         * @stable ICU 2.0
+         */
+        public Position(int contextStart, int contextLimit,
+                        int start, int limit) {
+            this.contextStart = contextStart;
+            this.contextLimit = contextLimit;
+            this.start = start;
+            this.limit = limit;
+        }
+
+        /**
+         * Constructs a Position object that is a copy of another.
+         * @stable ICU 2.6
+         */
+        public Position(Position pos) {
+            set(pos);
+        }
+
+        /**
+         * Copies the indices of this position from another.
+         * @stable ICU 2.6
+         */
+        public void set(Position pos) {
+            contextStart = pos.contextStart;
+            contextLimit = pos.contextLimit;
+            start = pos.start;
+            limit = pos.limit;
+        }
+
+        /**
+         * Returns true if this Position is equal to the given object.
+         * @stable ICU 2.6
+         */
+        public boolean equals(Object obj) {
+            if (obj instanceof Position) {
+                Position pos = (Position) obj;
+                return contextStart == pos.contextStart &&
+                    contextLimit == pos.contextLimit &&
+                    start == pos.start &&
+                    limit == pos.limit;
+            }
+            return false;
+        }
+
+        /**
+         * Returns a string representation of this Position.
+         * @stable ICU 2.6
+         */
+        public String toString() {
+            return "[cs=" + contextStart
+                + ", s=" + start
+                + ", l=" + limit
+                + ", cl=" + contextLimit
+                + "]";
+        }
+
+        /**
+         * Check all bounds.  If they are invalid, throw an exception.
+         * @param length the length of the string this object applies to
+         * @exception IllegalArgumentException if any indices are out
+         * of bounds
+         * @stable ICU 2.0
+         */
+        public final void validate(int length) {
+            if (contextStart < 0 ||
+                start < contextStart ||
+                limit < start ||
+                contextLimit < limit ||
+                length < contextLimit) {
+                throw new IllegalArgumentException("Invalid Position {cs=" +
+                                                   contextStart + ", s=" +
+                                                   start + ", l=" +
+                                                   limit + ", cl=" +
+                                                   contextLimit + "}, len=" +
+                                                   length);
+            }
+        }
+    }
+
+    /**
+     * Programmatic name, e.g., "Latin-Arabic".
+     */
+    private String ID;
+
+    /**
+     * This transliterator's filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    private UnicodeFilter filter;
+
+    private int maximumContextLength = 0;
+
+    /**
+     * System transliterator registry.
+     */
+    private static TransliteratorRegistry registry;
+
+    private static Hashtable displayNameCache;
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_DISPLAY_NAME_PREFIX = "%Translit%%";
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator SCRIPT.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_SCRIPT_DISPLAY_NAME_PREFIX = "%Translit%";
+
+    /**
+     * Resource bundle key for display name pattern.
+     * The resource bundle value should be a String forming a
+     * MessageFormat pattern, e.g.:
+     * "{0,choice,0#|1#{1} Transliterator|2#{1} to {2} Transliterator}".
+     */
+    private static final String RB_DISPLAY_NAME_PATTERN = "TransliteratorNamePattern";
+
+    /**
+     * Delimiter between elements in a compound ID.
+     * @internal
+     */
+    static final char ID_DELIM = ';';
+
+    /**
+     * Delimiter before target in an ID.
+     * @internal
+     */
+    static final char ID_SEP = '-';
+
+    /**
+     * Delimiter before variant in an ID.
+     * @internal
+     */
+    static final char VARIANT_SEP = '/';
+
+    /**
+     * To enable debugging output in the Transliterator component, set
+     * DEBUG to true.
+     *
+     * N.B. Make sure to recompile all of the com.ibm.icu.text package
+     * after changing this.  Easiest way to do this is 'ant clean
+     * core' ('ant' will NOT pick up the dependency automatically).
+     *
+     * <<This generates a lot of output.>>
+     */
+    static final boolean DEBUG = false;
+
+    /**
+     * Default constructor.
+     * @param ID the string identifier for this transliterator
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @stable ICU 2.0
+     */
+    protected Transliterator(String ID, UnicodeFilter filter) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+        this.filter = filter;
+    }
+
+    /**
+     * Transliterates a segment of a string, with optional filtering.
+     *
+     * @param text the string to be transliterated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @return The new limit index.  The text previously occupying <code>[start,
+     * limit)</code> has been transliterated, possibly to a string of a different
+     * length, at <code>[start, </code><em>new-limit</em><code>)</code>, where
+     * <em>new-limit</em> is the return value. If the input offsets are out of bounds,
+     * the returned value is -1 and the input string remains unchanged.
+     * @stable ICU 2.0
+     */
+    public final int transliterate(Replaceable text, int start, int limit) {
+        if (start < 0 ||
+            limit < start ||
+            text.length() < limit) {
+            return -1;
+        }
+
+        Position pos = new Position(start, limit, start);
+        filteredTransliterate(text, pos, false, true);
+        return pos.limit;
+    }
+
+    /**
+     * Transliterates an entire string in place. Convenience method.
+     * @param text the string to be transliterated
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text) {
+        transliterate(text, 0, text.length());
+    }
+
+    /**
+     * Transliterate an entire string and returns the result. Convenience method.
+     *
+     * @param text the string to be transliterated
+     * @return The transliterated text
+     * @stable ICU 2.0
+     */
+    public final String transliterate(String text) {
+        ReplaceableString result = new ReplaceableString(text);
+        transliterate(result);
+        return result.toString();
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after new text has been inserted,
+     * typically as a result of a keyboard event.  The new text in
+     * <code>insertion</code> will be inserted into <code>text</code>
+     * at <code>index.contextLimit</code>, advancing
+     * <code>index.contextLimit</code> by <code>insertion.length()</code>.
+     * Then the transliterator will try to transliterate characters of
+     * <code>text</code> between <code>index.start</code> and
+     * <code>index.contextLimit</code>.  Characters before
+     * <code>index.start</code> will not be changed.
+     *
+     * <p>Upon return, values in <code>index</code> will be updated.
+     * <code>index.contextStart</code> will be advanced to the first
+     * character that future calls to this method will read.
+     * <code>index.start</code> and <code>index.contextLimit</code> will
+     * be adjusted to delimit the range of text that future calls to
+     * this method may change.
+     *
+     * <p>Typical usage of this method begins with an initial call
+     * with <code>index.contextStart</code> and <code>index.contextLimit</code>
+     * set to indicate the portion of <code>text</code> to be
+     * transliterated, and <code>index.start == index.contextStart</code>.
+     * Thereafter, <code>index</code> can be used without
+     * modification in future calls, provided that all changes to
+     * <code>text</code> are made via this method.
+     *
+     * <p>This method assumes that future calls may be made that will
+     * insert new text into the buffer.  As a result, it only performs
+     * unambiguous transliterations.  After the last call to this
+     * method, there may be untransliterated text that is waiting for
+     * more input to resolve an ambiguity.  In order to perform these
+     * pending transliterations, clients should call {@link
+     * #finishTransliteration} after the last call to this
+     * method has been made.
+     *
+     * @param text the buffer holding transliterated and untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.  If <code>null</code> then no text
+     * is inserted.
+     * @see #handleTransliterate
+     * @exception IllegalArgumentException if <code>index</code>
+     * is invalid
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    String insertion) {
+        index.validate(text.length());
+
+//        int originalStart = index.contextStart;
+        if (insertion != null) {
+            text.replace(index.limit, index.limit, insertion);
+            index.limit += insertion.length();
+            index.contextLimit += insertion.length();
+        }
+
+        if (index.limit > 0 &&
+            UTF16.isLeadSurrogate(text.charAt(index.limit - 1))) {
+            // Oops, there is a dangling lead surrogate in the buffer.
+            // This will break most transliterators, since they will
+            // assume it is part of a pair.  Don't transliterate until
+            // more text comes in.
+            return;
+        }
+
+        filteredTransliterate(text, index, true, true);
+
+// TODO
+// This doesn't work once we add quantifier support.  Need to rewrite
+// this code to support quantifiers and 'use maximum backup <n>;'.
+//
+//        index.contextStart = Math.max(index.start - getMaximumContextLength(),
+//                                      originalStart);
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after a new character has been
+     * inserted, typically as a result of a keyboard event.  This is a
+     * convenience method; see {@link #transliterate(Replaceable,
+     * Transliterator.Position, String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    int insertion) {
+        transliterate(text, index, UTF16.valueOf(insertion));
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly.  This is a convenience method; see
+     * {@link #transliterate(Replaceable, Transliterator.Position,
+     * String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index) {
+        transliterate(text, index, null);
+    }
+
+    /**
+     * Finishes any pending transliterations that were waiting for
+     * more characters.  Clients should call this method as the last
+     * call after a sequence of one or more calls to
+     * <code>transliterate()</code>.
+     * @param text the buffer holding transliterated and
+     * untransliterated text.
+     * @param index the array of indices previously passed to {@link
+     * #transliterate}
+     * @stable ICU 2.0
+     */
+    public final void finishTransliteration(Replaceable text,
+                                            Position index) {
+        index.validate(text.length());
+        filteredTransliterate(text, index, false, true);
+    }
+
+    /**
+     * Abstract method that concrete subclasses define to implement
+     * their transliteration algorithm.  This method handles both
+     * incremental and non-incremental transliteration.  Let
+     * <code>originalStart</code> refer to the value of
+     * <code>pos.start</code> upon entry.
+     *
+     * <ul>
+     *  <li>If <code>incremental</code> is false, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code>. Upon return
+     *  <code>pos.start</code> must == <code> pos.limit</code>.</li>
+     *
+     *  <li>If <code>incremental</code> is true, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code> that can be
+     *  unambiguously transliterated, regardless of future insertions
+     *  of text at <code>pos.limit</code>.  Upon return,
+     *  <code>pos.start</code> should be in the range
+     *  [<code>originalStart</code>, <code>pos.limit</code>).
+     *  <code>pos.start</code> should be positioned such that
+     *  characters [<code>originalStart</code>, <code>
+     *  pos.start</code>) will not be changed in the future by this
+     *  transliterator and characters [<code>pos.start</code>,
+     *  <code>pos.limit</code>) are unchanged.</li>
+     * </ul>
+     *
+     * <p>Implementations of this method should also obey the
+     * following invariants:</p>
+     *
+     * <ul>
+     *  <li> <code>pos.limit</code> and <code>pos.contextLimit</code>
+     *  should be updated to reflect changes in length of the text
+     *  between <code>pos.start</code> and <code>pos.limit</code>. The
+     *  difference <code> pos.contextLimit - pos.limit</code> should
+     *  not change.</li>
+     *
+     *  <li><code>pos.contextStart</code> should not change.</li>
+     *
+     *  <li>Upon return, neither <code>pos.start</code> nor
+     *  <code>pos.limit</code> should be less than
+     *  <code>originalStart</code>.</li>
+     *
+     *  <li>Text before <code>originalStart</code> and text after
+     *  <code>pos.limit</code> should not change.</li>
+     *
+     *  <li>Text before <code>pos.contextStart</code> and text after
+     *  <code> pos.contextLimit</code> should be ignored.</li>
+     * </ul>
+     *
+     * <p>Subclasses may safely assume that all characters in
+     * [<code>pos.start</code>, <code>pos.limit</code>) are filtered.
+     * In other words, the filter has already been applied by the time
+     * this method is called.  See
+     * <code>filteredTransliterate()</code>.
+     *
+     * <p>This method is <b>not</b> for public consumption.  Calling
+     * this method directly will transliterate
+     * [<code>pos.start</code>, <code>pos.limit</code>) without
+     * applying the filter. End user code should call <code>
+     * transliterate()</code> instead of this method. Subclass code
+     * should call <code>filteredTransliterate()</code> instead of
+     * this method.<p>
+     *
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     *
+     * @param pos the indices indicating the start, limit, context
+     * start, and context limit of the text.
+     *
+     * @param incremental if true, assume more text may be inserted at
+     * <code>pos.limit</code> and act accordingly.  Otherwise,
+     * transliterate all text between <code>pos.start</code> and
+     * <code>pos.limit</code> and move <code>pos.start</code> up to
+     * <code>pos.limit</code>.
+     *
+     * @see #transliterate
+     * @stable ICU 2.0
+     */
+    protected abstract void handleTransliterate(Replaceable text,
+                                                Position pos, boolean incremental);
+
+    /**
+     * Top-level transliteration method, handling filtering, incremental and
+     * non-incremental transliteration, and rollback.  All transliteration
+     * public API methods eventually call this method with a rollback argument
+     * of TRUE.  Other entities may call this method but rollback should be
+     * FALSE.
+     *
+     * <p>If this transliterator has a filter, break up the input text into runs
+     * of unfiltered characters.  Pass each run to
+     * <subclass>.handleTransliterate().
+     *
+     * <p>In incremental mode, if rollback is TRUE, perform a special
+     * incremental procedure in which several passes are made over the input
+     * text, adding one character at a time, and committing successful
+     * transliterations as they occur.  Unsuccessful transliterations are rolled
+     * back and retried with additional characters to give correct results.
+     *
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     * @param rollback if TRUE and if incremental is TRUE, then perform special
+     * incremental processing, as described above, and undo partial
+     * transliterations where necessary.  If incremental is FALSE then this
+     * parameter is ignored.
+     */
+    private void filteredTransliterate(Replaceable text,
+                                       Position index,
+                                       boolean incremental,
+                                       boolean rollback) {
+        // Short circuit path for transliterators with no filter in
+        // non-incremental mode.
+        if (filter == null && !rollback) {
+            handleTransliterate(text, index, incremental);
+            return;
+        }
+
+        //----------------------------------------------------------------------
+        // This method processes text in two groupings:
+        //
+        // RUNS -- A run is a contiguous group of characters which are contained
+        // in the filter for this transliterator (filter.contains(ch) == true).
+        // Text outside of runs may appear as context but it is not modified.
+        // The start and limit Position values are narrowed to each run.
+        //
+        // PASSES (incremental only) -- To make incremental mode work correctly,
+        // each run is broken up into n passes, where n is the length (in code
+        // points) of the run.  Each pass contains the first n characters.  If a
+        // pass is completely transliterated, it is committed, and further passes
+        // include characters after the committed text.  If a pass is blocked,
+        // and does not transliterate completely, then this method rolls back
+        // the changes made during the pass, extends the pass by one code point,
+        // and tries again.
+        //----------------------------------------------------------------------
+
+        // globalLimit is the limit value for the entire operation.  We
+        // set index.limit to the end of each unfiltered run before
+        // calling handleTransliterate(), so we need to maintain the real
+        // value of index.limit here.  After each transliteration, we
+        // update globalLimit for insertions or deletions that have
+        // happened.
+        int globalLimit = index.limit;
+
+        // If there is a non-null filter, then break the input text up.  Say the
+        // input text has the form:
+        //   xxxabcxxdefxx
+        // where 'x' represents a filtered character (filter.contains('x') ==
+        // false).  Then we break this up into:
+        //   xxxabc xxdef xx
+        // Each pass through the loop consumes a run of filtered
+        // characters (which are ignored) and a subsequent run of
+        // unfiltered characters (which are transliterated).
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+        }
+
+        for (;;) {
+
+            if (filter != null) {
+                // Narrow the range to be transliterated to the first run
+                // of unfiltered characters at or after index.start.
+
+                // Advance past filtered chars
+                int c;
+                while (index.start < globalLimit &&
+                       !filter.contains(c=text.char32At(index.start))) {
+                    index.start += UTF16.getCharCount(c);
+                }
+
+                // Find the end of this run of unfiltered chars
+                index.limit = index.start;
+                while (index.limit < globalLimit &&
+                       filter.contains(c=text.char32At(index.limit))) {
+                    index.limit += UTF16.getCharCount(c);
+                }
+            }
+
+            // Check to see if the unfiltered run is empty.  This only
+            // happens at the end of the string when all the remaining
+            // characters are filtered.
+            if (index.start == index.limit) {
+                break;
+            }
+
+            // Is this run incremental?  If there is additional
+            // filtered text (if limit < globalLimit) then we pass in
+            // an incremental value of FALSE to force the subclass to
+            // complete the transliteration for this run.
+            boolean isIncrementalRun =
+                (index.limit < globalLimit ? false : incremental);
+
+            int delta;
+
+            // Implement rollback.  To understand the need for rollback,
+            // consider the following transliterator:
+            //
+            //  "t" is "a > A;"
+            //  "u" is "A > b;"
+            //  "v" is a compound of "t; NFD; u" with a filter [:Ll:]
+            //
+            // Now apply "v" to the input text "a".  The result is "b".  But if
+            // the transliteration is done incrementally, then the NFD holds
+            // things up after "t" has already transformed "a" to "A".  When
+            // finishTransliterate() is called, "A" is _not_ processed because
+            // it gets excluded by the [:Ll:] filter, and the end result is "A"
+            // -- incorrect.  The problem is that the filter is applied to a
+            // partially-transliterated result, when we only want it to apply to
+            // input text.  Although this example describes a compound
+            // transliterator containing NFD and a specific filter, it can
+            // happen with any transliterator which does a partial
+            // transformation in incremental mode into characters outside its
+            // filter.
+            //
+            // To handle this, when in incremental mode we supply characters to
+            // handleTransliterate() in several passes.  Each pass adds one more
+            // input character to the input text.  That is, for input "ABCD", we
+            // first try "A", then "AB", then "ABC", and finally "ABCD".  If at
+            // any point we block (upon return, start < limit) then we roll
+            // back.  If at any point we complete the run (upon return start ==
+            // limit) then we commit that run.
+
+            if (rollback && isIncrementalRun) {
+
+                if (DEBUG) {
+                    log.setLength(0);
+                    System.out.println("filteredTransliterate{"+getID()+"}i: IN=" +
+                                       UtilityExtensions.formatInput(text, index));
+                }
+
+                int runStart = index.start;
+                int runLimit = index.limit;
+                int runLength =  runLimit - runStart;
+
+                // Make a rollback copy at the end of the string
+                int rollbackOrigin = text.length();
+                text.copy(runStart, runLimit, rollbackOrigin);
+
+                // Variables reflecting the commitment of completely
+                // transliterated text.  passStart is the runStart, advanced
+                // past committed text.  rollbackStart is the rollbackOrigin,
+                // advanced past rollback text that corresponds to committed
+                // text.
+                int passStart = runStart;
+                int rollbackStart = rollbackOrigin;
+
+                // The limit for each pass; we advance by one code point with
+                // each iteration.
+                int passLimit = index.start;
+
+                // Total length, in 16-bit code units, of uncommitted text.
+                // This is the length to be rolled back.
+                int uncommittedLength = 0;
+
+                // Total delta (change in length) for all passes
+                int totalDelta = 0;
+
+                // PASS MAIN LOOP -- Start with a single character, and extend
+                // the text by one character at a time.  Roll back partial
+                // transliterations and commit complete transliterations.
+                for (;;) {
+                    // Length of additional code point, either one or two
+                    int charLength =
+                        UTF16.getCharCount(text.char32At(passLimit));
+                    passLimit += charLength;
+                    if (passLimit > runLimit) {
+                        break;
+                    }
+                    uncommittedLength += charLength;
+
+                    index.limit = passLimit;
+
+                    if (DEBUG) {
+                        log.setLength(0);
+                        log.append("filteredTransliterate{"+getID()+"}i: ");
+                        UtilityExtensions.formatInput(log, text, index);
+                    }
+
+                    // Delegate to subclass for actual transliteration.  Upon
+                    // return, start will be updated to point after the
+                    // transliterated text, and limit and contextLimit will be
+                    // adjusted for length changes.
+                    handleTransliterate(text, index, true);
+
+                    if (DEBUG) {
+                        log.append(" => ");
+                        UtilityExtensions.formatInput(log, text, index);
+                    }
+
+                    delta = index.limit - passLimit; // change in length
+
+                    // We failed to completely transliterate this pass.
+                    // Roll back the text.  Indices remain unchanged; reset
+                    // them where necessary.
+                    if (index.start != index.limit) {
+                        // Find the rollbackStart, adjusted for length changes
+                        // and the deletion of partially transliterated text.
+                        int rs = rollbackStart + delta - (index.limit - passStart);
+
+                        // Delete the partially transliterated text
+                        text.replace(passStart, index.limit, "");
+
+                        // Copy the rollback text back
+                        text.copy(rs, rs + uncommittedLength, passStart);
+
+                        // Restore indices to their original values
+                        index.start = passStart;
+                        index.limit = passLimit;
+                        index.contextLimit -= delta;
+
+                        if (DEBUG) {
+                            log.append(" (ROLLBACK)");
+                        }
+                    }
+
+                    // We did completely transliterate this pass.  Update the
+                    // commit indices to record how far we got.  Adjust indices
+                    // for length change.
+                    else {
+                        // Move the pass indices past the committed text.
+                        passStart = passLimit = index.start;
+
+                        // Adjust the rollbackStart for length changes and move
+                        // it past the committed text.  All characters we've
+                        // processed to this point are committed now, so zero
+                        // out the uncommittedLength.
+                        rollbackStart += delta + uncommittedLength;
+                        uncommittedLength = 0;
+
+                        // Adjust indices for length changes.
+                        runLimit += delta;
+                        totalDelta += delta;
+                    }
+
+                    if (DEBUG) {
+                        System.out.println(Utility.escape(log.toString()));
+                    }
+                }
+
+                // Adjust overall limit and rollbackOrigin for insertions and
+                // deletions.  Don't need to worry about contextLimit because
+                // handleTransliterate() maintains that.
+                rollbackOrigin += totalDelta;
+                globalLimit += totalDelta;
+
+                // Delete the rollback copy
+                text.replace(rollbackOrigin, rollbackOrigin + runLength, "");
+
+                // Move start past committed text
+                index.start = passStart;
+            }
+
+            else {
+                // Delegate to subclass for actual transliteration.
+                if (DEBUG) {
+                    log.setLength(0);
+                    log.append("filteredTransliterate{"+getID()+"}: ");
+                    UtilityExtensions.formatInput(log, text, index);
+                }
+
+                int limit = index.limit;
+                handleTransliterate(text, index, isIncrementalRun);
+                delta = index.limit - limit; // change in length
+
+                if (DEBUG) {
+                    log.append(" => ");
+                    UtilityExtensions.formatInput(log, text, index);
+                }
+
+                // In a properly written transliterator, start == limit after
+                // handleTransliterate() returns when incremental is false.
+                // Catch cases where the subclass doesn't do this, and throw
+                // an exception.  (Just pinning start to limit is a bad idea,
+                // because what's probably happening is that the subclass
+                // isn't transliterating all the way to the end, and it should
+                // in non-incremental mode.)
+                if (!isIncrementalRun && index.start != index.limit) {
+                    throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + getID());
+                }
+
+                // Adjust overall limit for insertions/deletions.  Don't need
+                // to worry about contextLimit because handleTransliterate()
+                // maintains that.
+                globalLimit += delta;
+
+                if (DEBUG) {
+                    System.out.println(Utility.escape(log.toString()));
+                }
+            }
+
+            if (filter == null || isIncrementalRun) {
+                break;
+            }
+
+            // If we did completely transliterate this
+            // run, then repeat with the next unfiltered run.
+        }
+
+        // Start is valid where it is.  Limit needs to be put back where
+        // it was, modulo adjustments for deletions/insertions.
+        index.limit = globalLimit;
+
+        if (DEBUG) {
+            System.out.println("filteredTransliterate{"+getID()+"}: OUT=" +
+                               UtilityExtensions.formatInput(text, index));
+        }
+    }
+
+    /**
+     * Transliterate a substring of text, as specified by index, taking filters
+     * into account.  This method is for subclasses that need to delegate to
+     * another transliterator, such as CompoundTransliterator.
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     * @stable ICU 2.0
+     */
+    public void filteredTransliterate(Replaceable text,
+                                         Position index,
+                                         boolean incremental) {
+        filteredTransliterate(text, index, incremental, false);
+    }
+
+    /**
+     * Returns the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.  The default value is zero, but
+     * subclasses can change this by calling <code>setMaximumContextLength()</code>.
+     * For example, if a transliterator translates "ddd" (where
+     * d is any digit) to "555" when preceded by "(ddd)", then the preceding
+     * context length is 5, the length of "(ddd)".
+     *
+     * @return The maximum number of preceding context characters this
+     * transliterator needs to examine
+     * @stable ICU 2.0
+     */
+    public final int getMaximumContextLength() {
+        return maximumContextLength;
+    }
+
+    /**
+     * Method for subclasses to use to set the maximum context length.
+     * @see #getMaximumContextLength
+     * @stable ICU 2.0
+     */
+    protected void setMaximumContextLength(int a) {
+        if (a < 0) {
+            throw new IllegalArgumentException("Invalid context length " + a);
+        }
+        maximumContextLength = a;
+    }
+
+    /**
+     * Returns a programmatic identifier for this transliterator.
+     * If this identifier is passed to <code>getInstance()</code>, it
+     * will return this object, if it has been registered.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @stable ICU 2.0
+     */
+    public final String getID() {
+        return ID;
+    }
+
+    /**
+     * Set the programmatic identifier for this transliterator.  Only
+     * for use by subclasses.
+     * @stable ICU 2.0
+     */
+    protected final void setID(String id) {
+        ID = id;
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the default locale.  See {@link
+     * #getDisplayName(String,Locale)} for details.
+     * @stable ICU 2.0
+     */
+    public final static String getDisplayName(String ID) {
+        return getDisplayName(ID, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the Locale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     * @stable ICU 2.0
+     */
+    public static String getDisplayName(String id, Locale inLocale) {
+        return getDisplayName(id, ULocale.forLocale(inLocale));
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the ULocale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     * @stable ICU 3.2
+     */
+    public static String getDisplayName(String id, ULocale inLocale) {
+
+        // Resource bundle containing display name keys and the
+        // RB_RULE_BASED_IDS array.
+        //
+        //If we ever integrate this with the Sun JDK, the resource bundle
+        // root will change to sun.text.resources.LocaleElements
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME, inLocale);
+
+        // Normalize the ID
+        String stv[] = TransliteratorIDParser.IDtoSTV(id);
+        if (stv == null) {
+            // No target; malformed id
+            return "";
+        }
+        String ID = stv[0] + '-' + stv[1];
+        if (stv[2] != null && stv[2].length() > 0) {
+            ID = ID + '/' + stv[2];
+        }
+
+        // Use the registered display name, if any
+        String n = (String) displayNameCache.get(new CaseInsensitiveString(ID));
+        if (n != null) {
+            return n;
+        }
+
+        // Use display name for the entire transliterator, if it
+        // exists.
+        try {
+            return bundle.getString(RB_DISPLAY_NAME_PREFIX + ID);
+        } catch (MissingResourceException e) {}
+
+        try {
+            // Construct the formatter first; if getString() fails
+            // we'll exit the try block
+            MessageFormat format = new MessageFormat(
+                    bundle.getString(RB_DISPLAY_NAME_PATTERN));
+            // Construct the argument array
+            Object[] args = new Object[] { new Integer(2), stv[0], stv[1] };
+
+            // Use display names for the scripts, if they exist
+            for (int j=1; j<=2; ++j) {
+                try {
+                    args[j] = bundle.getString(RB_SCRIPT_DISPLAY_NAME_PREFIX +
+                                               (String) args[j]);
+                } catch (MissingResourceException e) {}
+            }
+
+            // Format it using the pattern in the resource
+            return (stv[2].length() > 0) ?
+                (format.format(args) + '/' + stv[2]) :
+                format.format(args);
+        } catch (MissingResourceException e2) {}
+
+        // We should not reach this point unless there is something
+        // wrong with the build or the RB_DISPLAY_NAME_PATTERN has
+        // been deleted from the root RB_LOCALE_ELEMENTS resource.
+        throw new RuntimeException();
+    }
+
+    /**
+     * Returns the filter used by this transliterator, or <tt>null</tt>
+     * if this transliterator uses no filter.
+     * @stable ICU 2.0
+     */
+    public final UnicodeFilter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Changes the filter used by this transliterator.  If the filter
+     * is set to <tt>null</tt> then no filtering will occur.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The filter should not be changed by one
+     * thread while another thread may be transliterating.
+     * @stable ICU 2.0
+     */
+    public void setFilter(UnicodeFilter filter) {
+        this.filter = filter;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @stable ICU 2.0
+     */
+    public static final Transliterator getInstance(String ID) {
+        return getInstance(ID, FORWARD);
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @param dir either FORWARD or REVERSE.  If REVERSE then the
+     * inverse of the given ID is instantiated.
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @see #getID
+     * @stable ICU 2.0
+     */
+    public static Transliterator getInstance(String ID,
+                                             int dir) {
+        StringBuffer canonID = new StringBuffer();
+        Vector list = new Vector();
+        UnicodeSet[] globalFilter = new UnicodeSet[1];
+        if (!TransliteratorIDParser.parseCompoundID(ID, dir, canonID, list, globalFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + ID);
+        }
+
+        TransliteratorIDParser.instantiateList(list);
+
+        // assert(list.size() > 0);
+        Transliterator t = null;
+        if (list.size() > 1 || Utility.indexOf(canonID, ";") >= 0) {
+            // [NOTE: If it's a compoundID, we instantiate a CompoundTransliterator even if it only
+            // has one child transliterator.  This is so that toRules() will return the right thing
+            // (without any inactive ID), but our main ID still comes out correct.  That is, if we
+            // instantiate "(Lower);Latin-Greek;", we want the rules to come out as "::Latin-Greek;"
+            // even though the ID is "(Lower);Latin-Greek;".
+            t = new CompoundTransliterator(list);
+        }
+        else {
+            t = (Transliterator)list.elementAt(0);
+        }
+
+        t.setID(canonID.toString());
+        if (globalFilter[0] != null) {
+            t.setFilter(globalFilter[0]);
+        }
+        return t;
+    }
+
+    /**
+     * Create a transliterator from a basic ID.  This is an ID
+     * containing only the forward direction source, target, and
+     * variant.
+     * @param id a basic ID of the form S-T or S-T/V.
+     * @param canonID canonical ID to apply to the result, or
+     * null to leave the ID unchanged
+     * @return a newly created Transliterator or null if the ID is
+     * invalid.
+     */
+    static Transliterator getBasicInstance(String id, String canonID) {
+        StringBuffer s = new StringBuffer();
+        Transliterator t = registry.get(id, s);
+        if (s.length() != 0) {
+            // assert(t==0);
+            // Instantiate an alias
+            t = getInstance(s.toString(), FORWARD);
+        }
+        if (t != null && canonID != null) {
+            t.setID(canonID);
+        }
+        return t;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object constructed from
+     * the given rule string.  This will be a RuleBasedTransliterator,
+     * if the rule string contains only rules, or a
+     * CompoundTransliterator, if it contains ID blocks, or a
+     * NullTransliterator, if it contains ID blocks which parse as
+     * empty for the given direction.
+     * @stable ICU 2.0
+     */
+    public static final Transliterator createFromRules(String ID, String rules, int dir) {
+        Transliterator t = null;
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, dir);
+
+        // NOTE: The logic here matches that in TransliteratorRegistry.
+        if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 0) {
+            t = new NullTransliterator();
+        }
+        else if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 1) {
+            t = new RuleBasedTransliterator(ID, (RuleBasedTransliterator.Data)parser.dataVector.get(0), null);
+        }
+        else if (parser.idBlockVector.size() == 1 && parser.dataVector.size() == 0) {
+            // idBlock, no data -- this is an alias.  The ID has
+            // been munged from reverse into forward mode, if
+            // necessary, so instantiate the ID in the forward
+            // direction.
+            if (parser.compoundFilter != null)
+                t = getInstance(parser.compoundFilter.toPattern(false) + ";"
+                        + (String)parser.idBlockVector.get(0));
+            else
+                t = getInstance((String)parser.idBlockVector.get(0));
+
+
+            if (t != null) {
+                t.setID(ID);
+            }
+        }
+        else {
+            Vector transliterators = new Vector();
+            int passNumber = 1;
+
+            int limit = Math.max(parser.idBlockVector.size(), parser.dataVector.size());
+            for (int i = 0; i < limit; i++) {
+                if (i < parser.idBlockVector.size()) {
+                    String idBlock = (String)parser.idBlockVector.get(i);
+                    if (idBlock.length() > 0) {
+                        Transliterator temp = getInstance(idBlock);
+                        if (!(temp instanceof NullTransliterator))
+                            transliterators.add(getInstance(idBlock));
+                    }
+                }
+                if (i < parser.dataVector.size()) {
+                    RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)parser.dataVector.get(i);
+                    transliterators.add(new RuleBasedTransliterator("%Pass" + passNumber++, data, null));
+                }
+            }
+
+            t = new CompoundTransliterator(transliterators, passNumber - 1);
+            t.setID(ID);
+            if (parser.compoundFilter != null) {
+                t.setFilter(parser.compoundFilter);
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * Returns a rule string for this transliterator.
+     * @param escapeUnprintable if true, then unprintable characters
+     * will be converted to escape form backslash-'u' or
+     * backslash-'U'.
+     * @stable ICU 2.0
+     */
+    public String toRules(boolean escapeUnprintable) {
+        return baseToRules(escapeUnprintable);
+    }
+
+    /**
+     * Returns a rule string for this transliterator.  This is
+     * a non-overrideable base class implementation that subclasses
+     * may call.  It simply munges the ID into the correct format,
+     * that is, "foo" => "::foo".
+     * @param escapeUnprintable if true, then unprintable characters
+     * will be converted to escape form backslash-'u' or
+     * backslash-'U'.
+     * @stable ICU 2.0
+     */
+    protected final String baseToRules(boolean escapeUnprintable) {
+        // The base class implementation of toRules munges the ID into
+        // the correct format.  That is: foo => ::foo
+        // KEEP in sync with rbt_pars
+        if (escapeUnprintable) {
+            StringBuffer rulesSource = new StringBuffer();
+            String id = getID();
+            for (int i=0; i<id.length();) {
+                int c = UTF16.charAt(id, i);
+                if (!Utility.escapeUnprintable(rulesSource, c)) {
+                    UTF16.append(rulesSource, c);
+                }
+                i += UTF16.getCharCount(c);
+            }
+            rulesSource.insert(0, "::");
+            rulesSource.append(ID_DELIM);
+            return rulesSource.toString();
+        }
+        return "::" + getID() + ID_DELIM;
+    }
+
+    /**
+     * Return the elements that make up this transliterator.  For
+     * example, if the transliterator "NFD;Jamo-Latin;Latin-Greek"
+     * were created, the return value of this method would be an array
+     * of the three transliterator objects that make up that
+     * transliterator: [NFD, Jamo-Latin, Latin-Greek].
+     *
+     * <p>If this transliterator is not composed of other
+     * transliterators, then this method will return an array of
+     * length one containing a reference to this transliterator.
+     * @return an array of one or more transliterators that make up
+     * this transliterator
+     * @stable ICU 3.0
+     */
+    public Transliterator[] getElements() {
+        Transliterator result[];
+        if (this instanceof CompoundTransliterator) {
+            CompoundTransliterator cpd = (CompoundTransliterator) this;
+            result = new Transliterator[cpd.getCount()];
+            for (int i=0; i<result.length; ++i) {
+                result[i] = cpd.getTransliterator(i);
+            }
+        } else {
+            result = new Transliterator[] { this };
+        }
+        return result;
+    }
+
+    /**
+     * Returns the set of all characters that may be modified in the
+     * input text by this Transliterator.  This incorporates this
+     * object's current filter; if the filter is changed, the return
+     * value of this function will change.  The default implementation
+     * returns an empty set.  Some subclasses may override {@link
+     * #handleGetSourceSet} to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities.
+     * @see #getTargetSet
+     * @see #handleGetSourceSet
+     * @stable ICU 2.2
+     */
+    public final UnicodeSet getSourceSet() {
+        UnicodeSet set = handleGetSourceSet();
+        if (filter != null) {
+            UnicodeSet filterSet;
+            // Most, but not all filters will be UnicodeSets.  Optimize for
+            // the high-runner case.
+            try {
+                filterSet = (UnicodeSet) filter;
+            } catch (ClassCastException e) {
+                filterSet = new UnicodeSet();
+                filter.addMatchSetTo(filterSet);
+            }
+            set.retainAll(filterSet);
+        }
+        return set;
+    }
+
+    /**
+     * Framework method that returns the set of all characters that
+     * may be modified in the input text by this Transliterator,
+     * ignoring the effect of this object's filter.  The base class
+     * implementation returns the empty set.  Subclasses that wish to
+     * implement this should override this method.
+     * @return the set of characters that this transliterator may
+     * modify.  The set may be modified, so subclasses should return a
+     * newly-created object.
+     * @see #getSourceSet
+     * @see #getTargetSet
+     * @stable ICU 2.2
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.  The default
+     * implementation returns the empty set.  Some subclasses may
+     * override this method to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities requiring such
+     * meta-information.
+     * @see #getTargetSet
+     * @stable ICU 2.2
+     */
+    public UnicodeSet getTargetSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns this transliterator's inverse.  See the class
+     * documentation for details.  This implementation simply inverts
+     * the two entities in the ID and attempts to retrieve the
+     * resulting transliterator.  That is, if <code>getID()</code>
+     * returns "A-B", then this method will return the result of
+     * <code>getInstance("B-A")</code>, or <code>null</code> if that
+     * call fails.
+     *
+     * <p>Subclasses with knowledge of their inverse may wish to
+     * override this method.
+     *
+     * @return a transliterator that is an inverse, not necessarily
+     * exact, of this transliterator, or <code>null</code> if no such
+     * transliterator is registered.
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public final Transliterator getInverse() {
+        return getInstance(ID, REVERSE);
+    }
+
+    /**
+     * Registers a subclass of <code>Transliterator</code> with the
+     * system.  This subclass must have a public constructor taking no
+     * arguments.  When that constructor is called, the resulting
+     * object must return the <code>ID</code> passed to this method if
+     * its <code>getID()</code> method is called.
+     *
+     * @param ID the result of <code>getID()</code> for this
+     * transliterator
+     * @param transClass a subclass of <code>Transliterator</code>
+     * @see #unregister
+     * @stable ICU 2.0
+     */
+    public static void registerClass(String ID, Class transClass, String displayName) {
+        registry.put(ID, transClass, true);
+        if (displayName != null) {
+            displayNameCache.put(new CaseInsensitiveString(ID), displayName);
+        }
+    }
+
+    /**
+     * Register a factory object with the given ID.  The factory
+     * method should return a new instance of the given transliterator.
+     * @param ID the ID of this transliterator
+     * @param factory the factory object
+     * @stable ICU 2.0
+     */
+    public static void registerFactory(String ID, Factory factory) {
+        registry.put(ID, factory, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param trans the Transliterator object
+     * @stable ICU 2.2
+     */
+    public static void registerInstance(Transliterator trans) {
+        registry.put(trans.getID(), trans, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param ID the ID of this transliterator
+     * @param trans the Transliterator object
+     * @internal
+     */
+    static void registerInstance(Transliterator trans, boolean visible) {
+        registry.put(trans.getID(), trans, visible);
+    }
+
+    /**
+     * Register an ID as an alias of another ID.  Instantiating
+     * alias ID produces the same result as instantiating the original ID.
+     * This is generally used to create short aliases of compound IDs.
+     * @param aliasID The new ID being registered.
+     * @param realID The existing ID that the new ID should be an alias of.
+     * @stable ICU 3.6
+     */
+    public static void registerAlias(String aliasID, String realID) {
+        registry.put(aliasID, realID, true);
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     * @internal
+     */
+    static void registerSpecialInverse(String target,
+                                       String inverseTarget,
+                                       boolean bidirectional) {
+        TransliteratorIDParser.registerSpecialInverse(target, inverseTarget, bidirectional);
+    }
+
+    /**
+     * Unregisters a transliterator or class.  This may be either
+     * a system transliterator or a user transliterator or class.
+     *
+     * @param ID the ID of the transliterator or class
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public static void unregister(String ID) {
+        displayNameCache.remove(new CaseInsensitiveString(ID));
+        registry.remove(ID);
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of registered
+     * <code>Transliterator</code> objects.  This includes both system
+     * transliterators and user transliterators registered using
+     * <code>registerClass()</code>.  The enumerated names may be
+     * passed to <code>getInstance()</code>.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     * @see #getInstance
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableIDs() {
+        return registry.getAvailableIDs();
+    }
+
+    /**
+     * Returns an enumeration over the source names of registered
+     * transliterators.  Source names may be passed to
+     * getAvailableTargets() to obtain available targets for each
+     * source.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableSources() {
+        return registry.getAvailableSources();
+    }
+
+    /**
+     * Returns an enumeration over the target names of registered
+     * transliterators having a given source name.  Target names may
+     * be passed to getAvailableVariants() to obtain available
+     * variants for each source and target pair.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableTargets(String source) {
+        return registry.getAvailableTargets(source);
+    }
+
+    /**
+     * Returns an enumeration over the variant names of registered
+     * transliterators having a given source name and target name.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableVariants(String source,
+                                                         String target) {
+        return registry.getAvailableVariants(source, target);
+    }
+    private static final String INDEX = "index",
+                                RB_RULE_BASED_IDS ="RuleBasedTransliteratorIDs";
+    static {
+        registry = new TransliteratorRegistry();
+
+        // The display name cache starts out empty
+        displayNameCache = new Hashtable();
+        /* The following code parses the index table located in
+         * icu/data/translit/root.txt.  The index is an n x 4 table
+         * that follows this format:
+         *  <id>{
+         *      file{
+         *          resource{"<resource>"}
+         *          direction{"<direction>"}
+         *      }
+         *  }
+         *  <id>{
+         *      internal{
+         *          resource{"<resource>"}
+         *          direction{"<direction"}
+         *       }
+         *  }
+         *  <id>{
+         *      alias{"<getInstanceArg"}
+         *  }
+         * <id> is the ID of the system transliterator being defined.  These
+         * are public IDs enumerated by Transliterator.getAvailableIDs(),
+         * unless the second field is "internal".
+         * 
+         * <resource> is a ResourceReader resource name.  Currently these refer
+         * to file names under com/ibm/text/resources.  This string is passed
+         * directly to ResourceReader, together with <encoding>.
+         * 
+         * <direction> is either "FORWARD" or "REVERSE".
+         * 
+         * <getInstanceArg> is a string to be passed directly to
+         * Transliterator.getInstance().  The returned Transliterator object
+         * then has its ID changed to <id> and is returned.
+         *
+         * The extra blank field on "alias" lines is to make the array square.
+         */
+        UResourceBundle bundle, transIDs, colBund;
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME, INDEX);
+        transIDs = bundle.get(RB_RULE_BASED_IDS);
+
+        int row, maxRows;
+        maxRows = transIDs.getSize();
+        for (row = 0; row < maxRows; row++) {
+            colBund = transIDs.get(row);
+            String ID = colBund.getKey();
+            UResourceBundle res = colBund.get(0);
+            String type = res.getKey();
+            if (type.equals("file") || type.equals("internal")) {
+                // Rest of line is <resource>:<encoding>:<direction>
+                //                pos       colon      c2
+                String resString = res.getString("resource");
+                int dir;
+                String direction = res.getString("direction");
+                switch (direction.charAt(0)) {
+                case 'F':
+                    dir = FORWARD;
+                    break;
+                case 'R':
+                    dir = REVERSE;
+                    break;
+                default:
+                    throw new RuntimeException("Can't parse direction: " + direction);
+                }
+                registry.put(ID,
+                             resString, // resource
+                             "UTF-16", // encoding
+                             dir,
+                             !type.equals("internal"));
+            } else if (type.equals("alias")) {
+                //'alias'; row[2]=createInstance argument
+                String resString = res.getString();
+                registry.put(ID, resString, true);
+            } else {
+                // Unknown type
+                throw new RuntimeException("Unknow type: " + type);
+            }
+        }
+
+        registerSpecialInverse(NullTransliterator.SHORT_ID, NullTransliterator.SHORT_ID, false);
+
+        // Register non-rule-based transliterators
+        registerClass(NullTransliterator._ID,
+                      NullTransliterator.class, null);
+        RemoveTransliterator.register();
+        EscapeTransliterator.register();
+        UnescapeTransliterator.register();
+        LowercaseTransliterator.register();
+        UppercaseTransliterator.register();
+        TitlecaseTransliterator.register();
+        UnicodeNameTransliterator.register();
+        NameUnicodeTransliterator.register();
+        NormalizationTransliterator.register();
+        BreakTransliterator.register();
+        AnyTransliterator.register(); // do this last!
+    }
+
+    /**
+     * The factory interface for transliterators.  Transliterator
+     * subclasses can register factory objects for IDs using the
+     * registerFactory() method of Transliterator.  When invoked, the
+     * factory object will be passed the ID being instantiated.  This
+     * makes it possible to register one factory method to more than
+     * one ID, or for a factory method to parameterize its result
+     * based on the variant.
+     * @stable ICU 2.0
+     */
+    public static interface Factory {
+        /**
+         * Return a transliterator for the given ID.
+         * @stable ICU 2.0
+         */
+        Transliterator getInstance(String ID);
+    }
+    
+    /**
+     * Implements StringTransform via this method.
+     * @param source text to be transformed (eg lowercased)
+     * @return result
+     * @stable ICU 3.8
+     */
+    public String transform(String source) {
+        return transliterate(source);
+    }
+}
diff --git a/src/com/ibm/icu/text/TransliteratorIDParser.java b/src/com/ibm/icu/text/TransliteratorIDParser.java
new file mode 100644
index 0000000..8aabef2
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorIDParser.java
@@ -0,0 +1,773 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.impl.Utility;
+import java.text.ParsePosition;
+import java.util.Hashtable;
+import java.util.Vector;
+
+/**
+ * Parsing component for transliterator IDs.  This class contains only
+ * static members; it cannot be instantiated.  Methods in this class
+ * parse various ID formats, including the following:
+ *
+ * A basic ID, which contains source, target, and variant, but no
+ * filter and no explicit inverse.  Examples include
+ * "Latin-Greek/UNGEGN" and "Null".
+ *
+ * A single ID, which is a basic ID plus optional filter and optional
+ * explicit inverse.  Examples include "[a-zA-Z] Latin-Greek" and
+ * "Lower (Upper)".
+ *
+ * A compound ID, which is a sequence of one or more single IDs,
+ * separated by semicolons, with optional forward and reverse global
+ * filters.  The global filters are UnicodeSet patterns prepended or
+ * appended to the IDs, separated by semicolons.  An appended filter
+ * must be enclosed in parentheses and applies in the reverse
+ * direction.
+ *
+ * @author Alan Liu
+ */
+class TransliteratorIDParser {
+
+    private static final char ID_DELIM = ';';
+
+    private static final char TARGET_SEP = '-';
+
+    private static final char VARIANT_SEP = '/';
+
+    private static final char OPEN_REV = '(';
+
+    private static final char CLOSE_REV = ')';
+
+    private static final String ANY = "Any";
+
+    private static final int FORWARD = Transliterator.FORWARD;
+
+    private static final int REVERSE = Transliterator.REVERSE;
+
+    private static final Hashtable SPECIAL_INVERSES = new Hashtable();
+
+    /**
+     * A structure containing the parsed data of a filtered ID, that
+     * is, a basic ID optionally with a filter.
+     *
+     * 'source' and 'target' will always be non-null.  The 'variant'
+     * will be non-null only if a non-empty variant was parsed.
+     *
+     * 'sawSource' is true if there was an explicit source in the
+     * parsed id.  If there was no explicit source, then an implied
+     * source of ANY is returned and 'sawSource' is set to false.
+     * 
+     * 'filter' is the parsed filter pattern, or null if there was no
+     * filter.
+     */
+    private static class Specs {
+        public String source; // not null
+        public String target; // not null
+        public String variant; // may be null
+        public String filter; // may be null
+        public boolean sawSource;
+        Specs(String s, String t, String v, boolean sawS, String f) {
+            source = s;
+            target = t;
+            variant = v;
+            sawSource = sawS;
+            filter = f;
+        }
+    }
+
+    /**
+     * A structure containing the canonicalized data of a filtered ID,
+     * that is, a basic ID optionally with a filter.
+     *
+     * 'canonID' is always non-null.  It may be the empty string "".
+     * It is the id that should be assigned to the created
+     * transliterator.  It _cannot_ be instantiated directly.
+     *
+     * 'basicID' is always non-null and non-empty.  It is always of
+     * the form S-T or S-T/V.  It is designed to be fed to low-level
+     * instantiation code that only understands these two formats.
+     *
+     * 'filter' may be null, if there is none, or non-null and
+     * non-empty.
+     */
+    static class SingleID {
+        public String canonID;
+        public String basicID;
+        public String filter;
+        SingleID(String c, String b, String f) {
+            canonID = c;
+            basicID = b;
+            filter = f;
+        }
+        SingleID(String c, String b) {
+            this(c, b, null);
+        }
+        Transliterator getInstance() {
+            Transliterator t;
+            if (basicID == null || basicID.length() == 0) {
+                t = Transliterator.getBasicInstance("Any-Null", canonID);
+            } else {
+                t = Transliterator.getBasicInstance(basicID, canonID);
+            }
+            if (t != null) {
+                if (filter != null) {
+                    t.setFilter(new UnicodeSet(filter));
+                }
+            }
+            return t;
+        }
+    }
+
+    /**
+     * Parse a filter ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1", with the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @return a SingleID object or null if the parse fails
+     */
+    public static SingleID parseFilterID(String id, int[] pos) {
+
+        int start = pos[0];
+        Specs specs = parseFilterID(id, pos, true);
+        if (specs == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Assemble return results
+        SingleID single = specsToID(specs, FORWARD);
+        single.filter = specs.filter;
+        return single;
+    }
+
+    /**
+     * Parse a single ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1 ([f2] s2-t3/v2)", with the parenthesized element
+     * optional, the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.  If the direction is REVERSE then the
+     * SingleID is constructed for the reverse direction.
+     * @return a SingleID object or null
+     */
+    public static SingleID parseSingleID(String id, int[] pos, int dir) {
+
+        int start = pos[0];
+
+        // The ID will be of the form A, A(), A(B), or (B), where
+        // A and B are filter IDs.
+        Specs specsA = null;
+        Specs specsB = null;
+        boolean sawParen = false;
+
+        // On the first pass, look for (B) or ().  If this fails, then
+        // on the second pass, look for A, A(B), or A().
+        for (int pass=1; pass<=2; ++pass) {
+            if (pass == 2) {
+                specsA = parseFilterID(id, pos, true);
+                if (specsA == null) {
+                    pos[0] = start;
+                    return null;
+                }
+            }
+            if (Utility.parseChar(id, pos, OPEN_REV)) {
+                sawParen = true;
+                if (!Utility.parseChar(id, pos, CLOSE_REV)) {
+                    specsB = parseFilterID(id, pos, true);
+                    // Must close with a ')'
+                    if (specsB == null || !Utility.parseChar(id, pos, CLOSE_REV)) {
+                        pos[0] = start;
+                        return null;
+                    }
+                }
+                break;
+            }
+        }
+
+        // Assemble return results
+        SingleID single;
+        if (sawParen) {
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsB, FORWARD).canonID + CLOSE_REV;
+                if (specsA != null) {
+                    single.filter = specsA.filter;
+                }
+            } else {
+                single = specsToID(specsB, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsA, FORWARD).canonID + CLOSE_REV;
+                if (specsB != null) {
+                    single.filter = specsB.filter;
+                }
+            }
+        } else {
+            // assert(specsA != null);
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+            } else {
+                single = specsToSpecialInverse(specsA);
+                if (single == null) {
+                    single = specsToID(specsA, REVERSE);
+                }
+            }
+            single.filter = specsA.filter;
+        }
+
+        return single;
+    }
+
+    /**
+     * Parse a global filter of the form "[f]" or "([f])", depending
+     * on 'withParens'.
+     * @param id the pattern the parse
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.
+     * @param withParens INPUT-OUTPUT parameter.  On entry, if
+     * withParens[0] is 0, then parens are disallowed.  If it is 1,
+     * then parens are requires.  If it is -1, then parens are
+     * optional, and the return result will be set to 0 or 1.
+     * @param canonID OUTPUT parameter.  The pattern for the filter
+     * added to the canonID, either at the end, if dir is FORWARD, or
+     * at the start, if dir is REVERSE.  The pattern will be enclosed
+     * in parentheses if appropriate, and will be suffixed with an
+     * ID_DELIM character.  May be null.
+     * @return a UnicodeSet object or null.  A non-null results
+     * indicates a successful parse, regardless of whether the filter
+     * applies to the given direction.  The caller should discard it
+     * if withParens != (dir == REVERSE).
+     */
+    public static UnicodeSet parseGlobalFilter(String id, int[] pos, int dir,
+                                               int[] withParens,
+                                               StringBuffer canonID) {
+        UnicodeSet filter = null;
+        int start = pos[0];
+
+        if (withParens[0] == -1) {
+            withParens[0] = Utility.parseChar(id, pos, OPEN_REV) ? 1 : 0;
+        } else if (withParens[0] == 1) {
+            if (!Utility.parseChar(id, pos, OPEN_REV)) {
+                pos[0] = start;
+                return null;
+            }
+        }
+        
+        Utility.skipWhitespace(id, pos);
+
+        if (UnicodeSet.resemblesPattern(id, pos[0])) {
+            ParsePosition ppos = new ParsePosition(pos[0]);
+            try {
+                filter = new UnicodeSet(id, ppos, null);
+            } catch (IllegalArgumentException e) {
+                pos[0] = start;
+                return null;
+            }
+
+            String pattern = id.substring(pos[0], ppos.getIndex());
+            pos[0] = ppos.getIndex();
+
+            if (withParens[0] == 1 && !Utility.parseChar(id, pos, CLOSE_REV)) {
+                pos[0] = start;
+                return null;
+            }
+
+            // In the forward direction, append the pattern to the
+            // canonID.  In the reverse, insert it at zero, and invert
+            // the presence of parens ("A" <-> "(A)").
+            if (canonID != null) {
+                if (dir == FORWARD) {
+                    if (withParens[0] == 1) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.append(pattern + ID_DELIM);
+                } else {
+                    if (withParens[0] == 0) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.insert(0, pattern + ID_DELIM);
+                }
+            }
+        }
+
+        return filter;
+    }
+
+    /**
+     * Parse a compound ID, consisting of an optional forward global
+     * filter, a separator, one or more single IDs delimited by
+     * separators, an an optional reverse global filter.  The
+     * separator is a semicolon.  The global filters are UnicodeSet
+     * patterns.  The reverse global filter must be enclosed in
+     * parentheses.
+     * @param id the pattern the parse
+     * @param dir the direction.
+     * @param canonID OUTPUT parameter that receives the canonical ID,
+     * consisting of canonical IDs for all elements, as returned by
+     * parseSingleID(), separated by semicolons.  Previous contents
+     * are discarded.
+     * @param list OUTPUT parameter that receives a list of SingleID
+     * objects representing the parsed IDs.  Previous contents are
+     * discarded.
+     * @param globalFilter OUTPUT parameter that receives a pointer to
+     * a newly created global filter for this ID in this direction, or
+     * null if there is none.
+     * @return true if the parse succeeds, that is, if the entire
+     * id is consumed without syntax error.
+     */
+    public static boolean parseCompoundID(String id, int dir,
+                                          StringBuffer canonID,
+                                          Vector list,
+                                          UnicodeSet[] globalFilter) {
+        int[] pos = new int[] { 0 };
+        int[] withParens = new int[1];
+        list.removeAllElements();
+        UnicodeSet filter;
+        globalFilter[0] = null;
+        canonID.setLength(0);
+
+        // Parse leading global filter, if any
+        withParens[0] = 0; // parens disallowed
+        filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+        if (filter != null) {
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                // Not a global filter; backup and resume
+                canonID.setLength(0);
+                pos[0] = 0;
+            }
+            if (dir == FORWARD) {
+                globalFilter[0] = filter;
+            }
+        }
+
+        boolean sawDelimiter = true;
+        for (;;) {
+            SingleID single = parseSingleID(id, pos, dir);
+            if (single == null) {
+                break;
+            }
+            if (dir == FORWARD) {
+                list.addElement(single);
+            } else {
+                list.insertElementAt(single, 0);
+            }
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                sawDelimiter = false;
+                break;
+            }
+        }
+
+        if (list.size() == 0) {
+            return false;
+        }
+
+        // Construct canonical ID
+        for (int i=0; i<list.size(); ++i) {
+            SingleID single = (SingleID) list.elementAt(i);
+            canonID.append(single.canonID);
+            if (i != (list.size()-1)) {
+                canonID.append(ID_DELIM);
+            }
+        }
+
+        // Parse trailing global filter, if any, and only if we saw
+        // a trailing delimiter after the IDs.
+        if (sawDelimiter) {
+            withParens[0] = 1; // parens required
+            filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+            if (filter != null) {
+                // Don't require trailing ';', but parse it if present
+                Utility.parseChar(id, pos, ID_DELIM);
+                
+                if (dir == REVERSE) {
+                    globalFilter[0] = filter;
+                }
+            }
+        }
+
+        // Trailing unparsed text is a syntax error
+        Utility.skipWhitespace(id, pos[0]);
+        if (pos[0] != id.length()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Convert the elements of the 'list' vector, which are SingleID
+     * objects, into actual Transliterator objects.  In the course of
+     * this, some (or all) entries may be removed.  If all entries
+     * are removed, the Null transliterator will be added.
+     *
+     * Delete entries with empty basicIDs; these are generated by
+     * elements like "(A)" in the forward direction, or "A()" in
+     * the reverse.  THIS MAY RESULT IN AN EMPTY VECTOR.  Convert
+     * SingleID entries to actual transliterators.
+     *
+     * @param list vector of SingleID objects.  On exit, vector
+     * of one or more Transliterators.
+     */
+    public static void instantiateList(Vector list) {
+        Transliterator t;
+        for (int i=0; i<=list.size(); ) { // [sic]: i<=list.size()
+            // We run the loop too long by one, so we can
+            // do an insert after the last element
+            if (i==list.size()) {
+                break;
+            }
+            
+            SingleID single = (SingleID) list.elementAt(i);
+            if (single.basicID.length() == 0) {
+                list.removeElementAt(i);
+            } else {
+                t = single.getInstance();
+                if (t == null) {
+                    t = single.getInstance();
+                    throw new IllegalArgumentException("Illegal ID " + single.canonID);
+                }
+                list.setElementAt(t, i);
+                ++i;
+            }
+        }
+        
+        // An empty list is equivalent to a Null transliterator.
+        if (list.size() == 0) {
+            t = Transliterator.getBasicInstance("Any-Null", null);
+            if (t == null) {
+                // Should never happen
+                throw new IllegalArgumentException("Internal error; cannot instantiate Any-Null");
+            }
+            list.addElement(t);
+        }
+    }
+
+    /**
+     * Parse an ID into pieces.  Take IDs of the form T, T/V, S-T,
+     * S-T/V, or S/V-T.  If the source is missing, return a source of
+     * ANY.
+     * @param id the id string, in any of several forms
+     * @return an array of 4 strings: source, target, variant, and
+     * isSourcePresent.  If the source is not present, ANY will be
+     * given as the source, and isSourcePresent will be null.  Otherwise
+     * isSourcePresent will be non-null.  The target may be empty if the
+     * id is not well-formed.  The variant may be empty.
+     */
+    public static String[] IDtoSTV(String id) {
+        String source = ANY;
+        String target = null;
+        String variant = "";
+        
+        int sep = id.indexOf(TARGET_SEP);
+        int var = id.indexOf(VARIANT_SEP);
+        if (var < 0) {
+            var = id.length();
+        }
+        boolean isSourcePresent = false;
+        
+        if (sep < 0) {
+            // Form: T/V or T (or /V)
+            target = id.substring(0, var);
+            variant = id.substring(var);
+        } else if (sep < var) {
+            // Form: S-T/V or S-T (or -T/V or -T)
+            if (sep > 0) {
+                source = id.substring(0, sep);
+              isSourcePresent = true;
+            }
+            target = id.substring(++sep, var);
+            variant = id.substring(var);
+        } else {
+            // Form: (S/V-T or /V-T)
+            if (var > 0) {
+                source = id.substring(0, var);
+                isSourcePresent = true;
+            }
+            variant = id.substring(var, sep++);
+            target = id.substring(sep);
+        }
+
+        if (variant.length() > 0) {
+            variant = variant.substring(1);
+        }
+        
+        return new String[] { source, target, variant,
+                              isSourcePresent ? "" : null };
+    }
+
+    /**
+     * Given source, target, and variant strings, concatenate them into a
+     * full ID.  If the source is empty, then "Any" will be used for the
+     * source, so the ID will always be of the form s-t/v or s-t.
+     */
+    public static String STVtoID(String source,
+                                 String target,
+                                 String variant) {
+        StringBuffer id = new StringBuffer(source);
+        if (id.length() == 0) {
+            id.append(ANY);
+        }
+        id.append(TARGET_SEP).append(target);
+        if (variant != null && variant.length() != 0) {
+            id.append(VARIANT_SEP).append(variant);
+        }
+        return id.toString();
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     */
+    public static void registerSpecialInverse(String target,
+                                              String inverseTarget,
+                                              boolean bidirectional) {
+        SPECIAL_INVERSES.put(new CaseInsensitiveString(target), inverseTarget);
+        if (bidirectional && !target.equalsIgnoreCase(inverseTarget)) {
+            SPECIAL_INVERSES.put(new CaseInsensitiveString(inverseTarget), target);
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Private implementation
+    //----------------------------------------------------------------
+
+    /**
+     * Parse an ID into component pieces.  Take IDs of the form T,
+     * T/V, S-T, S-T/V, or S/V-T.  If the source is missing, return a
+     * source of ANY.
+     * @param id the id string, in any of several forms
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to parse in id.  On output,
+     * pos[0] is the offset after the last parsed character.  If the
+     * parse failed, pos[0] will be unchanged.
+     * @param allowFilter if true, a UnicodeSet pattern is allowed
+     * at any location between specs or delimiters, and is returned
+     * as the fifth string in the array.
+     * @return a Specs object, or null if the parse failed.  If
+     * neither source nor target was seen in the parsed id, then the
+     * parse fails.  If allowFilter is true, then the parsed filter
+     * pattern is returned in the Specs object, otherwise the returned
+     * filter reference is null.  If the parse fails for any reason
+     * null is returned.
+     */
+    private static Specs parseFilterID(String id, int[] pos,
+                                       boolean allowFilter) {
+        String first = null;
+        String source = null;
+        String target = null;
+        String variant = null;
+        String filter = null;
+        char delimiter = 0;
+        int specCount = 0;
+        int start = pos[0];
+
+        // This loop parses one of the following things with each
+        // pass: a filter, a delimiter character (either '-' or '/'),
+        // or a spec (source, target, or variant).
+        for (;;) {
+            Utility.skipWhitespace(id, pos);
+            if (pos[0] == id.length()) {
+                break;
+            }
+
+            // Parse filters
+            if (allowFilter && filter == null &&
+                UnicodeSet.resemblesPattern(id, pos[0])) {
+
+                ParsePosition ppos = new ParsePosition(pos[0]);
+                // Parse the set to get the position.
+                new UnicodeSet(id, ppos, null);
+                filter = id.substring(pos[0], ppos.getIndex());
+                pos[0] = ppos.getIndex();
+                continue;
+            }
+
+            if (delimiter == 0) {
+                char c = id.charAt(pos[0]);
+                if ((c == TARGET_SEP && target == null) ||
+                    (c == VARIANT_SEP && variant == null)) {
+                    delimiter = c;
+                    ++pos[0];
+                    continue;
+                }
+            }
+
+            // We are about to try to parse a spec with no delimiter
+            // when we can no longer do so (we can only do so at the
+            // start); break.
+            if (delimiter == 0 && specCount > 0) {
+                break;
+            }
+
+            String spec = Utility.parseUnicodeIdentifier(id, pos);
+            if (spec == null) {
+                // Note that if there was a trailing delimiter, we
+                // consume it.  So Foo-, Foo/, Foo-Bar/, and Foo/Bar-
+                // are legal.
+                break;
+            }
+
+            switch (delimiter) {
+            case 0:
+                first = spec;
+                break;
+            case TARGET_SEP:
+                target = spec;
+                break;
+            case VARIANT_SEP:
+                variant = spec;
+                break;
+            }
+            ++specCount;
+            delimiter = 0;
+        }
+
+        // A spec with no prior character is either source or target,
+        // depending on whether an explicit "-target" was seen.
+        if (first != null) {
+            if (target == null) {
+                target = first;
+            } else {
+                source = first;
+            }
+        }
+
+        // Must have either source or target
+        if (source == null && target == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Empty source or target defaults to ANY
+        boolean sawSource = true;
+        if (source == null) {
+            source = ANY;
+            sawSource = false;
+        }
+        if (target == null) {
+            target = ANY;
+        }
+
+        return new Specs(source, target, variant, sawSource, filter);
+    }
+
+    /**
+     * Givens a Spec object, convert it to a SingleID object.  The
+     * Spec object is a more unprocessed parse result.  The SingleID
+     * object contains information about canonical and basic IDs.
+     * @return a SingleID; never returns null.  Returned object always
+     * has 'filter' field of null.
+     */
+    private static SingleID specsToID(Specs specs, int dir) {
+        String canonID = "";
+        String basicID = "";
+        String basicPrefix = "";
+        if (specs != null) {
+            StringBuffer buf = new StringBuffer();
+            if (dir == FORWARD) {
+                if (specs.sawSource) {
+                    buf.append(specs.source).append(TARGET_SEP);
+                } else {
+                    basicPrefix = specs.source + TARGET_SEP;
+                }
+                buf.append(specs.target);
+            } else {
+                buf.append(specs.target).append(TARGET_SEP).append(specs.source);
+            }
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+            }
+            basicID = basicPrefix + buf.toString();
+            if (specs.filter != null) {
+                buf.insert(0, specs.filter);
+            }
+            canonID = buf.toString();
+        }
+        return new SingleID(canonID, basicID);
+    }
+
+    /**
+     * Given a Specs object, return a SingleID representing the
+     * special inverse of that ID.  If there is no special inverse
+     * then return null.
+     * @return a SingleID or null.  Returned object always has
+     * 'filter' field of null.
+     */
+    private static SingleID specsToSpecialInverse(Specs specs) {
+        if (!specs.source.equalsIgnoreCase(ANY)) {
+            return null;
+        }
+        String inverseTarget = (String) SPECIAL_INVERSES.get(
+            new CaseInsensitiveString(specs.target));
+        if (inverseTarget != null) {
+            // If the original ID contained "Any-" then make the
+            // special inverse "Any-Foo"; otherwise make it "Foo".
+            // So "Any-NFC" => "Any-NFD" but "NFC" => "NFD".
+            StringBuffer buf = new StringBuffer();
+            if (specs.filter != null) {
+                buf.append(specs.filter);
+            }
+            if (specs.sawSource) {
+                buf.append(ANY).append(TARGET_SEP);
+            }
+            buf.append(inverseTarget);
+
+            String basicID = ANY + TARGET_SEP + inverseTarget;
+
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+                basicID = basicID + VARIANT_SEP + specs.variant;
+            }
+            return new SingleID(buf.toString(), basicID);
+        }
+        return null;
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorParser.java b/src/com/ibm/icu/text/TransliteratorParser.java
new file mode 100644
index 0000000..6bce271
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorParser.java
@@ -0,0 +1,1541 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.text.ParsePosition;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+class TransliteratorParser {
+
+    //----------------------------------------------------------------------
+    // Data members
+    //----------------------------------------------------------------------
+
+    /**
+     * PUBLIC data member.
+     * A Vector of RuleBasedTransliterator.Data objects, one for each discrete group
+     * of rules in the rule set
+     */
+    public Vector dataVector;
+
+    /**
+     * PUBLIC data member.
+     * A Vector of Strings containing all of the ID blocks in the rule set
+     */
+    public Vector idBlockVector;
+
+    /**
+     * The current data object for which we are parsing rules
+     */
+    private RuleBasedTransliterator.Data curData;
+
+    /**
+     * PUBLIC data member containing the parsed compound filter, if any.
+     */
+    public UnicodeSet compoundFilter;
+
+
+    private int direction;
+
+    /**
+     * Temporary symbol table used during parsing.
+     */
+    private ParseData parseData;
+
+    /**
+     * Temporary vector of set variables.  When parsing is complete, this
+     * is copied into the array data.variables.  As with data.variables,
+     * element 0 corresponds to character data.variablesBase.
+     */
+    private Vector variablesVector;
+
+    /**
+     * Temporary table of variable names.  When parsing is complete, this is
+     * copied into data.variableNames.
+     */
+    private Hashtable variableNames;
+
+    /**
+     * String of standins for segments.  Used during the parsing of a single
+     * rule.  segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private StringBuffer segmentStandins;
+
+    /**
+     * Vector of StringMatcher objects for segments.  Used during the
+     * parsing of a single rule.  
+     * segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private Vector segmentObjects;
+
+    /**
+     * The next available stand-in for variables.  This starts at some point in
+     * the private use area (discovered dynamically) and increments up toward
+     * <code>variableLimit</code>.  At any point during parsing, available
+     * variables are <code>variableNext..variableLimit-1</code>.
+     */
+    private char variableNext;
+
+    /**
+     * The last available stand-in for variables.  This is discovered
+     * dynamically.  At any point during parsing, available variables are
+     * <code>variableNext..variableLimit-1</code>.  During variable definition
+     * we use the special value variableLimit-1 as a placeholder.
+     */
+    private char variableLimit;
+
+    /**
+     * When we encounter an undefined variable, we do not immediately signal
+     * an error, in case we are defining this variable, e.g., "$a = [a-z];".
+     * Instead, we save the name of the undefined variable, and substitute
+     * in the placeholder char variableLimit - 1, and decrement
+     * variableLimit.
+     */
+    private String undefinedVariableName;
+
+    /**
+     * The stand-in character for the 'dot' set, represented by '.' in
+     * patterns.  This is allocated the first time it is needed, and
+     * reused thereafter.
+     */
+    private int dotStandIn = -1;
+
+    //----------------------------------------------------------------------
+    // Constants
+    //----------------------------------------------------------------------
+
+    // Indicator for ID blocks
+    private static final String ID_TOKEN = "::";
+    private static final int ID_TOKEN_LEN = 2;
+
+/*
+(reserved for future expansion)
+    // markers for beginning and end of rule groups
+    private static final String BEGIN_TOKEN = "BEGIN";
+    private static final String END_TOKEN = "END";
+*/
+
+    // Operators
+    private static final char VARIABLE_DEF_OP   = '=';
+    private static final char FORWARD_RULE_OP   = '>';
+    private static final char REVERSE_RULE_OP   = '<';
+    private static final char FWDREV_RULE_OP    = '~'; // internal rep of <> op
+
+    private static final String OPERATORS = "=><\u2190\u2192\u2194";
+    private static final String HALF_ENDERS = "=><\u2190\u2192\u2194;";
+
+    // Other special characters
+    private static final char QUOTE               = '\'';
+    private static final char ESCAPE              = '\\';
+    private static final char END_OF_RULE         = ';';
+    private static final char RULE_COMMENT_CHAR   = '#';
+
+    private static final char CONTEXT_ANTE        = '{'; // ante{key
+    private static final char CONTEXT_POST        = '}'; // key}post
+    private static final char CURSOR_POS          = '|';
+    private static final char CURSOR_OFFSET       = '@';
+    private static final char ANCHOR_START        = '^';
+
+    private static final char KLEENE_STAR         = '*';
+    private static final char ONE_OR_MORE         = '+';
+    private static final char ZERO_OR_ONE         = '?';
+
+    private static final char DOT                 = '.';
+    private static final String DOT_SET           = "[^[:Zp:][:Zl:]\\r\\n$]";
+
+    // By definition, the ANCHOR_END special character is a
+    // trailing SymbolTable.SYMBOL_REF character.
+    // private static final char ANCHOR_END       = '$';
+
+    // Segments of the input string are delimited by "(" and ")".  In the
+    // output string these segments are referenced as "$1", "$2", etc.
+    private static final char SEGMENT_OPEN        = '(';
+    private static final char SEGMENT_CLOSE       = ')';
+
+    // A function is denoted &Source-Target/Variant(text)
+    private static final char FUNCTION            = '&';
+
+    // Aliases for some of the syntax characters. These are provided so
+    // transliteration rules can be expressed in XML without clashing with
+    // XML syntax characters '<', '>', and '&'.
+    private static final char ALT_REVERSE_RULE_OP = '\u2190'; // Left Arrow
+    private static final char ALT_FORWARD_RULE_OP = '\u2192'; // Right Arrow
+    private static final char ALT_FWDREV_RULE_OP  = '\u2194'; // Left Right Arrow
+    private static final char ALT_FUNCTION        = '\u2206'; // Increment (~Greek Capital Delta)
+    
+    // Special characters disallowed at the top level
+    private static UnicodeSet ILLEGAL_TOP = new UnicodeSet("[\\)]");
+
+    // Special characters disallowed within a segment
+    private static UnicodeSet ILLEGAL_SEG = new UnicodeSet("[\\{\\}\\|\\@]");
+
+    // Special characters disallowed within a function argument
+    private static UnicodeSet ILLEGAL_FUNC = new UnicodeSet("[\\^\\(\\.\\*\\+\\?\\{\\}\\|\\@]");
+
+    //----------------------------------------------------------------------
+    // class ParseData
+    //----------------------------------------------------------------------
+
+    /**
+     * This class implements the SymbolTable interface.  It is used
+     * during parsing to give UnicodeSet access to variables that
+     * have been defined so far.  Note that it uses variablesVector,
+     * _not_ data.variables.
+     */
+    private class ParseData implements SymbolTable {
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public char[] lookup(String name) {
+            return (char[]) variableNames.get(name);
+        }
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public UnicodeMatcher lookupMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return (UnicodeMatcher) variablesVector.elementAt(i);
+            }
+            return null;
+        }
+
+        /**
+         * Implement SymbolTable API.  Parse out a symbol reference
+         * name.
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            int start = pos.getIndex();
+            int i = start;
+            while (i < limit) {
+                char c = text.charAt(i);
+                if ((i==start && !UCharacter.isUnicodeIdentifierStart(c)) ||
+                    !UCharacter.isUnicodeIdentifierPart(c)) {
+                    break;
+                }
+                ++i;
+            }
+            if (i == start) { // No valid name chars
+                return null;
+            }
+            pos.setIndex(i);
+            return text.substring(start, i);
+        }
+
+        /**
+         * Return true if the given character is a matcher standin or a plain
+         * character (non standin).
+         */
+        public boolean isMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeMatcher;
+            }
+            return true;
+        }
+
+        /**
+         * Return true if the given character is a replacer standin or a plain
+         * character (non standin).
+         */
+        public boolean isReplacer(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeReplacer;
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // classes RuleBody, RuleArray, and RuleReader
+    //----------------------------------------------------------------------
+
+    /**
+     * A private abstract class representing the interface to rule
+     * source code that is broken up into lines.  Handles the
+     * folding of lines terminated by a backslash.  This folding
+     * is limited; it does not account for comments, quotes, or
+     * escapes, so its use to be limited.
+     */
+    private static abstract class RuleBody {
+
+        /**
+         * Retrieve the next line of the source, or return null if
+         * none.  Folds lines terminated by a backslash into the
+         * next line, without regard for comments, quotes, or
+         * escapes.
+         */
+        String nextLine() {
+            String s = handleNextLine();
+            if (s != null &&
+                s.length() > 0 &&
+                s.charAt(s.length() - 1) == '\\') {
+
+                StringBuffer b = new StringBuffer(s);
+                do {
+                    b.deleteCharAt(b.length()-1);
+                    s = handleNextLine();
+                    if (s == null) {
+                        break;
+                    }
+                    b.append(s);
+                } while (s.length() > 0 &&
+                         s.charAt(s.length() - 1) == '\\');
+
+                s = b.toString();
+            }
+            return s;
+        }
+
+        /**
+         * Reset to the first line of the source.
+         */
+        abstract void reset();
+
+        /**
+         * Subclass method to return the next line of the source.
+         */
+        abstract String handleNextLine();
+    }
+
+    /**
+     * RuleBody subclass for a String[] array.
+     */
+    private static class RuleArray extends RuleBody {
+        String[] array;
+        int i;
+        public RuleArray(String[] array) { this.array = array; i = 0; }
+        public String handleNextLine() {
+            return (i < array.length) ? array[i++] : null;
+        }
+        public void reset() {
+            i = 0;
+        }
+    }
+
+    /*
+     * RuleBody subclass for a ResourceReader.
+     */
+/*    private static class RuleReader extends RuleBody {
+        ResourceReader reader;
+        public RuleReader(ResourceReader reader) { this.reader = reader; }
+        public String handleNextLine() {
+            try {
+                return reader.readLine();
+            } catch (java.io.IOException e) {}
+            return null;
+        }
+        public void reset() {
+            reader.reset();
+        }
+    }*/
+
+    //----------------------------------------------------------------------
+    // class RuleHalf
+    //----------------------------------------------------------------------
+
+    /**
+     * A class representing one side of a rule.  This class knows how to
+     * parse half of a rule.  It is tightly coupled to the method
+     * TransliteratorParser.parseRule().
+     */
+    private static class RuleHalf {
+
+        public String text;
+
+        public int cursor = -1; // position of cursor in text
+        public int ante = -1;   // position of ante context marker '{' in text
+        public int post = -1;   // position of post context marker '}' in text
+
+        // Record the offset to the cursor either to the left or to the
+        // right of the key.  This is indicated by characters on the output
+        // side that allow the cursor to be positioned arbitrarily within
+        // the matching text.  For example, abc{def} > | @@@ xyz; changes
+        // def to xyz and moves the cursor to before abc.  Offset characters
+        // must be at the start or end, and they cannot move the cursor past
+        // the ante- or postcontext text.  Placeholders are only valid in
+        // output text.  The length of the ante and post context is
+        // determined at runtime, because of supplementals and quantifiers.
+        public int cursorOffset = 0; // only nonzero on output side
+
+        // Position of first CURSOR_OFFSET on _right_.  This will be -1
+        // for |@, -2 for |@@, etc., and 1 for @|, 2 for @@|, etc.
+        private int cursorOffsetPos = 0;
+
+        public boolean anchorStart = false;
+        public boolean anchorEnd   = false;
+
+        /**
+         * The segment number from 1..n of the next '(' we see
+         * during parsing; 1-based.
+         */
+        private int nextSegmentNumber = 1;
+
+        /**
+         * Parse one side of a rule, stopping at either the limit,
+         * the END_OF_RULE character, or an operator.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        public int parse(String rule, int pos, int limit,
+                         TransliteratorParser parser) {
+            int start = pos;
+            StringBuffer buf = new StringBuffer();
+            pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_TOP, false);
+            text = buf.toString();
+
+            if (cursorOffset > 0 && cursor != cursorOffsetPos) {
+                syntaxError("Misplaced " + CURSOR_POS, rule, start);
+            }
+
+            return pos;
+        }
+
+        /**
+         * Parse a section of one side of a rule, stopping at either
+         * the limit, the END_OF_RULE character, an operator, or a
+         * segment close character.  This method parses both a
+         * top-level rule half and a segment within such a rule half.
+         * It calls itself recursively to parse segments and nested
+         * segments.
+         * @param buf buffer into which to accumulate the rule pattern
+         * characters, either literal characters from the rule or
+         * standins for UnicodeMatcher objects including segments.
+         * @param illegal the set of special characters that is illegal during
+         * this parse.
+         * @param isSegment if true, then we've already seen a '(' and
+         * pos on entry points right after it.  Accumulate everything
+         * up to the closing ')', put it in a segment matcher object,
+         * generate a standin for it, and add the standin to buf.  As
+         * a side effect, update the segments vector with a reference
+         * to the segment matcher.  This works recursively for nested
+         * segments.  If isSegment is false, just accumulate
+         * characters into buf.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        private int parseSection(String rule, int pos, int limit,
+                                 TransliteratorParser parser,
+                                 StringBuffer buf,
+                                 UnicodeSet illegal,
+                                 boolean isSegment) {
+            int start = pos;
+            ParsePosition pp = null;
+            int quoteStart = -1; // Most recent 'single quoted string'
+            int quoteLimit = -1;
+            int varStart = -1; // Most recent $variableReference
+            int varLimit = -1;
+            int[] iref = new int[1];
+            int bufStart = buf.length();
+
+        main:
+            while (pos < limit) {
+                // Since all syntax characters are in the BMP, fetching
+                // 16-bit code units suffices here.
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // HALF_ENDERS is all chars that end a rule half: "<>=;"
+                if (HALF_ENDERS.indexOf(c) >= 0) {
+                    if (isSegment) {
+                        syntaxError("Unclosed segment", rule, start);
+                    }
+                    break main;
+                }
+                if (anchorEnd) {
+                    // Text after a presumed end anchor is a syntax err
+                    syntaxError("Malformed variable reference", rule, start);
+                }
+                if (UnicodeSet.resemblesPattern(rule, pos-1)) {
+                    if (pp == null) {
+                        pp = new ParsePosition(0);
+                    }
+                    pp.setIndex(pos-1); // Backup to opening '['
+                    buf.append(parser.parseSet(rule, pp));
+                    pos = pp.getIndex();                    
+                    continue;
+                }
+                // Handle escapes
+                if (c == ESCAPE) {
+                    if (pos == limit) {
+                        syntaxError("Trailing backslash", rule, start);
+                    }
+                    iref[0] = pos;
+                    int escaped = Utility.unescapeAt(rule, iref);
+                    pos = iref[0];
+                    if (escaped == -1) {
+                        syntaxError("Malformed escape", rule, start);
+                    }
+                    parser.checkVariableRange(escaped, rule, start);
+                    UTF16.append(buf, escaped);
+                    continue;
+                }
+                // Handle quoted matter
+                if (c == QUOTE) {
+                    int iq = rule.indexOf(QUOTE, pos);
+                    if (iq == pos) {
+                        buf.append(c); // Parse [''] outside quotes as [']
+                        ++pos;
+                    } else {
+                        /* This loop picks up a run of quoted text of the
+                         * form 'aaaa' each time through.  If this run
+                         * hasn't really ended ('aaaa''bbbb') then it keeps
+                         * looping, each time adding on a new run.  When it
+                         * reaches the final quote it breaks.
+                         */
+                        quoteStart = buf.length();
+                        for (;;) {
+                            if (iq < 0) {
+                                syntaxError("Unterminated quote", rule, start);
+                            }
+                            buf.append(rule.substring(pos, iq));
+                            pos = iq+1;
+                            if (pos < limit && rule.charAt(pos) == QUOTE) {
+                            // Parse [''] inside quotes as [']
+                                iq = rule.indexOf(QUOTE, pos+1);
+                            // Continue looping
+                            } else {
+                                break;
+                            }
+                        }
+                        quoteLimit = buf.length();
+                        
+                        for (iq=quoteStart; iq<quoteLimit; ++iq) {
+                            parser.checkVariableRange(buf.charAt(iq), rule, start);
+                        }
+                    }
+                    continue;
+                }
+
+                parser.checkVariableRange(c, rule, start);
+
+                if (illegal.contains(c)) {
+                    syntaxError("Illegal character '" + c + '\'', rule, start);
+                }
+
+                switch (c) {
+                    
+                //------------------------------------------------------
+                // Elements allowed within and out of segments
+                //------------------------------------------------------
+                case ANCHOR_START:
+                    if (buf.length() == 0 && !anchorStart) {
+                        anchorStart = true;
+                    } else {
+                        syntaxError("Misplaced anchor start",
+                                    rule, start);
+                    }
+                    break;
+                case SEGMENT_OPEN:
+                    {
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Record segment number now, since nextSegmentNumber
+                        // will be incremented during the call to parseSection
+                        // if there are nested segments.
+                        int segmentNumber = nextSegmentNumber++; // 1-based
+
+                        // Parse the segment
+                        pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_SEG, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.  Extract them
+                        // into a string matcher, and replace them with a
+                        // standin for that matcher.
+                        StringMatcher m =
+                            new StringMatcher(buf.substring(bufSegStart),
+                                              segmentNumber, parser.curData);
+
+                        // Record and associate object and segment number
+                        parser.setSegmentObject(segmentNumber, m);
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.getSegmentStandin(segmentNumber));
+                    }
+                    break;
+                case FUNCTION:
+                case ALT_FUNCTION:
+                    {
+                        iref[0] = pos;
+                        TransliteratorIDParser.SingleID single = TransliteratorIDParser.parseFilterID(rule, iref);
+                        // The next character MUST be a segment open
+                        if (single == null ||
+                            !Utility.parseChar(rule, iref, SEGMENT_OPEN)) {
+                            syntaxError("Invalid function", rule, start);
+                        }
+
+                        Transliterator t = single.getInstance();
+                        if (t == null) {
+                            syntaxError("Invalid function ID", rule, start);
+                        }
+
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Parse the segment
+                        pos = parseSection(rule, iref[0], limit, parser, buf, ILLEGAL_FUNC, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.
+                        FunctionReplacer r =
+                            new FunctionReplacer(t,
+                                new StringReplacer(buf.substring(bufSegStart), parser.curData));
+
+                        // Replace the buffer contents with a stand-in
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.generateStandInFor(r));
+                    }
+                    break;
+                case SymbolTable.SYMBOL_REF:
+                    // Handle variable references and segment references "$1" .. "$9"
+                    {
+                        // A variable reference must be followed immediately
+                        // by a Unicode identifier start and zero or more
+                        // Unicode identifier part characters, or by a digit
+                        // 1..9 if it is a segment reference.
+                        if (pos == limit) {
+                            // A variable ref character at the end acts as
+                            // an anchor to the context limit, as in perl.
+                            anchorEnd = true;
+                            break;
+                        }
+                        // Parse "$1" "$2" .. "$9" .. (no upper limit)
+                        c = rule.charAt(pos);
+                        int r = UCharacter.digit(c, 10);
+                        if (r >= 1 && r <= 9) {
+                            iref[0] = pos;
+                            r = Utility.parseNumber(rule, iref, 10);
+                            if (r < 0) {
+                                syntaxError("Undefined segment reference",
+                                            rule, start);
+                            }
+                            pos = iref[0];
+                            buf.append(parser.getSegmentStandin(r));
+                        } else {
+                            if (pp == null) { // Lazy create
+                                pp = new ParsePosition(0);
+                            }
+                            pp.setIndex(pos);
+                            String name = parser.parseData.
+                                parseReference(rule, pp, limit);
+                            if (name == null) {
+                                // This means the '$' was not followed by a
+                                // valid name.  Try to interpret it as an
+                                // end anchor then.  If this also doesn't work
+                                // (if we see a following character) then signal
+                                // an error.
+                                anchorEnd = true;
+                                break;
+                            }
+                            pos = pp.getIndex();
+                            // If this is a variable definition statement,
+                            // then the LHS variable will be undefined.  In
+                            // that case appendVariableDef() will append the
+                            // special placeholder char variableLimit-1.
+                            varStart = buf.length();
+                            parser.appendVariableDef(name, buf);
+                            varLimit = buf.length();
+                        }
+                    }
+                    break;
+                case DOT:
+                    buf.append(parser.getDotStandIn());
+                    break;
+                case KLEENE_STAR:
+                case ONE_OR_MORE:
+                case ZERO_OR_ONE:
+                    // Quantifiers.  We handle single characters, quoted strings,
+                    // variable references, and segments.
+                    //  a+      matches  aaa
+                    //  'foo'+  matches  foofoofoo
+                    //  $v+     matches  xyxyxy if $v == xy
+                    //  (seg)+  matches  segsegseg
+                    {
+                        if (isSegment && buf.length() == bufStart) {
+                            // The */+ immediately follows '('
+                            syntaxError("Misplaced quantifier", rule, start);
+                            break;
+                        } 
+ 
+                        int qstart, qlimit;
+                        // The */+ follows an isolated character or quote
+                        // or variable reference
+                        if (buf.length() == quoteLimit) {
+                            // The */+ follows a 'quoted string'
+                            qstart = quoteStart;
+                            qlimit = quoteLimit;
+                        } else if (buf.length() == varLimit) {
+                            // The */+ follows a $variableReference
+                            qstart = varStart;
+                            qlimit = varLimit;
+                        } else {
+                            // The */+ follows a single character, possibly
+                            // a segment standin
+                            qstart = buf.length() - 1;
+                            qlimit = qstart + 1;
+                        }
+
+                        UnicodeMatcher m;
+                        try {
+                            m = new StringMatcher(buf.toString(), qstart, qlimit,
+                                              0, parser.curData);
+                        } catch (RuntimeException e) {
+                            throw new IllegalArgumentException("Failure in rule: " + rule.substring(pos, limit));
+                        }
+                        int min = 0;
+                        int max = Quantifier.MAX;
+                        switch (c) {
+                        case ONE_OR_MORE:
+                            min = 1;
+                            break;
+                        case ZERO_OR_ONE:
+                            min = 0;
+                            max = 1;
+                            break;
+                            // case KLEENE_STAR:
+                            //    do nothing -- min, max already set
+                        }
+                        m = new Quantifier(m, min, max);
+                        buf.setLength(qstart);
+                        buf.append(parser.generateStandInFor(m));
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY WITHIN segments
+                //------------------------------------------------------
+                case SEGMENT_CLOSE:
+                    // assert(isSegment);
+                    // We're done parsing a segment.
+                    break main;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY OUTSIDE segments
+                //------------------------------------------------------
+                case CONTEXT_ANTE:
+                    if (ante >= 0) {
+                        syntaxError("Multiple ante contexts", rule, start);
+                    }
+                    ante = buf.length();
+                    break;
+                case CONTEXT_POST:
+                    if (post >= 0) {
+                        syntaxError("Multiple post contexts", rule, start);
+                    }
+                    post = buf.length();
+                    break;
+                case CURSOR_POS:
+                    if (cursor >= 0) {
+                        syntaxError("Multiple cursors", rule, start);
+                    }
+                    cursor = buf.length();
+                    break;
+                case CURSOR_OFFSET:
+                    if (cursorOffset < 0) {
+                        if (buf.length() > 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        --cursorOffset;
+                    } else if (cursorOffset > 0) {
+                        if (buf.length() != cursorOffsetPos || cursor >= 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        ++cursorOffset;
+                    } else {
+                        if (cursor == 0 && buf.length() == 0) {
+                            cursorOffset = -1;
+                        } else if (cursor < 0) {
+                            cursorOffsetPos = buf.length();
+                            cursorOffset = 1;
+                        } else {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Non-special characters
+                //------------------------------------------------------
+                default:
+                    // Disallow unquoted characters other than [0-9A-Za-z]
+                    // in the printable ASCII range.  These characters are
+                    // reserved for possible future use.
+                    if (c >= 0x0021 && c <= 0x007E &&
+                        !((c >= '0' && c <= '9') ||
+                          (c >= 'A' && c <= 'Z') ||
+                          (c >= 'a' && c <= 'z'))) {
+                        syntaxError("Unquoted " + c, rule, start);
+                    }
+                    buf.append(c);
+                    break;
+                }
+            }
+            return pos;
+        }
+
+        /**
+         * Remove context.
+         */
+        void removeContext() {
+            text = text.substring(ante < 0 ? 0 : ante,
+                                  post < 0 ? text.length() : post);
+            ante = post = -1;
+            anchorStart = anchorEnd = false;
+        }
+
+        /**
+         * Return true if this half looks like valid output, that is, does not
+         * contain quantifiers or other special input-only elements.
+         */
+        public boolean isValidOutput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isReplacer(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /**
+         * Return true if this half looks like valid input, that is, does not
+         * contain functions or other special output-only elements.
+         */
+        public boolean isValidInput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isMatcher(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // PUBLIC methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Constructor.
+     */
+    public TransliteratorParser() {
+    }
+
+    /**
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+    public void parse(String rules, int dir) {
+        parseRules(new RuleArray(new String[] { rules }), dir);
+    }
+   
+    /*
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+/*    public void parse(ResourceReader rules, int direction) {
+        parseRules(new RuleReader(rules), direction);
+    }*/
+
+    //----------------------------------------------------------------------
+    // PRIVATE methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Parse an array of zero or more rules.  The strings in the array are
+     * treated as if they were concatenated together, with rule terminators
+     * inserted between array elements if not present already.
+     *
+     * Any previous rules are discarded.  Typically this method is called exactly
+     * once, during construction.
+     *
+     * The member this.data will be set to null if there are no rules.
+     *
+     * @exception IllegalArgumentException if there is a syntax error in the
+     * rules
+     */
+    void parseRules(RuleBody ruleArray, int dir) {
+        boolean parsingIDs = true;
+        int ruleCount = 0;
+
+        dataVector = new Vector();
+        idBlockVector = new Vector();
+        curData = null;
+        direction = dir;
+        compoundFilter = null;
+        variablesVector = new Vector();
+        variableNames = new Hashtable();
+        parseData = new ParseData();
+
+        StringBuffer errors = null;
+        int errorCount = 0;
+
+        ruleArray.reset();
+
+        StringBuffer idBlockResult = new StringBuffer();
+
+        // The compound filter offset is an index into idBlockResult.
+        // If it is 0, then the compound filter occurred at the start,
+        // and it is the offset to the _start_ of the compound filter
+        // pattern.  Otherwise it is the offset to the _limit_ of the
+        // compound filter pattern within idBlockResult.
+        this.compoundFilter = null;
+        int compoundFilterOffset = -1;
+
+    main:
+        for (;;) {
+            String rule = ruleArray.nextLine();
+            if (rule == null) {
+                break;
+            }
+            int pos = 0;
+            int limit = rule.length();
+            while (pos < limit) {
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // Skip lines starting with the comment character
+                if (c == RULE_COMMENT_CHAR) {
+                    pos = rule.indexOf("\n", pos) + 1;
+                    if (pos == 0) {
+                        break; // No "\n" found; rest of rule is a commnet
+                    }
+                    continue; // Either fall out or restart with next line
+                }
+
+                // skip empty rules
+                if (c == END_OF_RULE)
+                    continue;
+
+                // Often a rule file contains multiple errors.  It's
+                // convenient to the rule author if these are all reported
+                // at once.  We keep parsing rules even after a failure, up
+                // to a specified limit, and report all errors at once.
+                try {
+                    ++ruleCount;
+
+                    // We've found the start of a rule or ID.  c is its first
+                    // character, and pos points past c.
+                    --pos;
+                    // Look for an ID token.  Must have at least ID_TOKEN_LEN + 1
+                    // chars left.
+                    if ((pos + ID_TOKEN_LEN + 1) <= limit &&
+                            rule.regionMatches(pos, ID_TOKEN, 0, ID_TOKEN_LEN)) {
+                        pos += ID_TOKEN_LEN;
+                        c = rule.charAt(pos);
+                        while (UCharacterProperty.isRuleWhiteSpace(c) && pos < limit) {
+                            ++pos;
+                            c = rule.charAt(pos);
+                        }
+                        int[] p = new int[] { pos };
+
+                        if (!parsingIDs) {
+                            if (curData != null) {
+                                if (direction == Transliterator.FORWARD)
+                                    dataVector.add(curData);
+                                else
+                                    dataVector.insertElementAt(curData, 0);
+                                curData = null;
+                            }
+                            parsingIDs = true;
+                        }
+
+                        TransliteratorIDParser.SingleID id =
+                            TransliteratorIDParser.parseSingleID(
+                                          rule, p, direction);
+                        if (p[0] != pos && Utility.parseChar(rule, p, END_OF_RULE)) {
+                            // Successful ::ID parse.
+
+                            if (direction == Transliterator.FORWARD) {
+                                idBlockResult.append(id.canonID).append(END_OF_RULE);
+                            } else {
+                                idBlockResult.insert(0, id.canonID + END_OF_RULE);
+                            }
+
+                        } else {
+                            // Couldn't parse an ID.  Try to parse a global filter
+                            int[] withParens = new int[] { -1 };
+                            UnicodeSet f = TransliteratorIDParser.parseGlobalFilter(rule, p, direction, withParens, null);
+                            if (f != null && Utility.parseChar(rule, p, END_OF_RULE)) {
+                                if ((direction == Transliterator.FORWARD) ==
+                                    (withParens[0] == 0)) {
+                                    if (compoundFilter != null) {
+                                        // Multiple compound filters
+                                        syntaxError("Multiple global filters", rule, pos);
+                                    }
+                                    compoundFilter = f;
+                                    compoundFilterOffset = ruleCount;
+                               }
+                            } else {
+                                // Invalid ::id
+                                // Can be parsed as neither an ID nor a global filter
+                                syntaxError("Invalid ::ID", rule, pos);
+                            }
+                        }
+
+                        pos = p[0];
+                    } else {
+                        if (parsingIDs) {
+                            if (direction == Transliterator.FORWARD)
+                                idBlockVector.add(idBlockResult.toString());
+                            else
+                                idBlockVector.insertElementAt(idBlockResult.toString(), 0);
+                            idBlockResult.delete(0, idBlockResult.length());
+                            parsingIDs = false;
+                            curData = new RuleBasedTransliterator.Data();
+
+                            // By default, rules use part of the private use area
+                            // E000..F8FF for variables and other stand-ins.  Currently
+                            // the range F000..F8FF is typically sufficient.  The 'use
+                            // variable range' pragma allows rule sets to modify this.
+                            setVariableRange(0xF000, 0xF8FF);
+                        }
+
+                        if (resemblesPragma(rule, pos, limit)) {
+                            int ppp = parsePragma(rule, pos, limit);
+                            if (ppp < 0) {
+                                syntaxError("Unrecognized pragma", rule, pos);
+                            }
+                            pos = ppp;
+                        // Parse a rule
+                        } else {
+                            pos = parseRule(rule, pos, limit);
+                        }
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (errorCount == 30) {
+                        errors.append("\nMore than 30 errors; further messages squelched");
+                        break main;
+                    }
+                    if (errors == null) {
+                        errors = new StringBuffer(e.getMessage());
+                    } else {
+                        errors.append("\n" + e.getMessage());
+                    }
+                    ++errorCount;
+                    pos = ruleEnd(rule, pos, limit) + 1; // +1 advances past ';'
+                }
+            }
+        }
+        if (parsingIDs && idBlockResult.length() > 0) {
+            if (direction == Transliterator.FORWARD)
+                idBlockVector.add(idBlockResult.toString());
+            else
+                idBlockVector.insertElementAt(idBlockResult.toString(), 0);
+        }
+        else if (!parsingIDs && curData != null) {
+            if (direction == Transliterator.FORWARD)
+                dataVector.add(curData);
+            else
+                dataVector.insertElementAt(curData, 0);
+        }
+
+        // Convert the set vector to an array
+        for (int i = 0; i < dataVector.size(); i++) {
+            RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+            data.variables = new Object[variablesVector.size()];
+            variablesVector.copyInto(data.variables);
+            data.variableNames = new Hashtable();
+            data.variableNames.putAll(variableNames);
+        }
+        variablesVector = null;
+
+        // Do more syntax checking and index the rules
+        try {
+            if (compoundFilter != null) {
+                if ((direction == Transliterator.FORWARD &&
+                     compoundFilterOffset != 1) ||
+                    (direction == Transliterator.REVERSE &&
+                     compoundFilterOffset != ruleCount)) {
+                    throw new IllegalArgumentException("Compound filters misplaced");
+                }
+            }
+
+            for (int i = 0; i < dataVector.size(); i++) {
+                RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+                data.ruleSet.freeze();
+            }
+
+            if (idBlockVector.size() == 1 && ((String)idBlockVector.get(0)).length() == 0)
+                idBlockVector.remove(0);
+
+        } catch (IllegalArgumentException e) {
+            if (errors == null) {
+                errors = new StringBuffer(e.getMessage());
+            } else {
+                errors.append("\n").append(e.getMessage());
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * MAIN PARSER.  Parse the next rule in the given rule string, starting
+     * at pos.  Return the index after the last character parsed.  Do not
+     * parse characters at or after limit.
+     *
+     * Important:  The character at pos must be a non-whitespace character
+     * that is not the comment character.
+     *
+     * This method handles quoting, escaping, and whitespace removal.  It
+     * parses the end-of-rule character.  It recognizes context and cursor
+     * indicators.  Once it does a lexical breakdown of the rule at pos, it
+     * creates a rule object and adds it to our rule list.
+     *
+     * This method is tightly coupled to the inner class RuleHalf.
+     */
+    private int parseRule(String rule, int pos, int limit) {
+        // Locate the left side, operator, and right side
+        int start = pos;
+        char operator = 0;
+
+        // Set up segments data
+        segmentStandins = new StringBuffer();
+        segmentObjects = new Vector();
+
+        RuleHalf left  = new RuleHalf();
+        RuleHalf right = new RuleHalf();
+
+        undefinedVariableName = null;
+        pos = left.parse(rule, pos, limit, this);
+
+        if (pos == limit ||
+            OPERATORS.indexOf(operator = rule.charAt(--pos)) < 0) {
+            syntaxError("No operator pos=" + pos, rule, start);
+        }
+        ++pos;
+
+        // Found an operator char.  Check for forward-reverse operator.
+        if (operator == REVERSE_RULE_OP &&
+            (pos < limit && rule.charAt(pos) == FORWARD_RULE_OP)) {
+            ++pos;
+            operator = FWDREV_RULE_OP;
+        }
+
+        // Translate alternate op characters.
+        switch (operator) {
+        case ALT_FORWARD_RULE_OP:
+            operator = FORWARD_RULE_OP;
+            break;
+        case ALT_REVERSE_RULE_OP:
+            operator = REVERSE_RULE_OP;
+            break;
+        case ALT_FWDREV_RULE_OP:
+            operator = FWDREV_RULE_OP;
+            break;
+        }
+
+        pos = right.parse(rule, pos, limit, this);
+
+        if (pos < limit) {
+            if (rule.charAt(--pos) == END_OF_RULE) {
+                ++pos;
+            } else {
+                // RuleHalf parser must have terminated at an operator
+                syntaxError("Unquoted operator", rule, start);
+            }
+        }
+
+        if (operator == VARIABLE_DEF_OP) {
+            // LHS is the name.  RHS is a single character, either a literal
+            // or a set (already parsed).  If RHS is longer than one
+            // character, it is either a multi-character string, or multiple
+            // sets, or a mixture of chars and sets -- syntax error.
+
+            // We expect to see a single undefined variable (the one being
+            // defined).
+            if (undefinedVariableName == null) {
+                syntaxError("Missing '$' or duplicate definition", rule, start);
+            }
+            if (left.text.length() != 1 || left.text.charAt(0) != variableLimit) {
+                syntaxError("Malformed LHS", rule, start);
+            }
+            if (left.anchorStart || left.anchorEnd ||
+                right.anchorStart || right.anchorEnd) {
+                syntaxError("Malformed variable def", rule, start);
+            }
+            // We allow anything on the right, including an empty string.
+            int n = right.text.length();
+            char[] value = new char[n];
+            right.text.getChars(0, n, value, 0);
+            variableNames.put(undefinedVariableName, value);
+
+            ++variableLimit;
+            return pos;
+        }
+
+        // If this is not a variable definition rule, we shouldn't have
+        // any undefined variable names.
+        if (undefinedVariableName != null) {
+            syntaxError("Undefined variable $" + undefinedVariableName,
+                        rule, start);
+        }
+
+        // Verify segments
+        if (segmentStandins.length() > segmentObjects.size()) {
+            syntaxError("Undefined segment reference", rule, start);
+        }
+        for (int i=0; i<segmentStandins.length(); ++i) {
+            if (segmentStandins.charAt(i) == 0) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+        for (int i=0; i<segmentObjects.size(); ++i) {
+            if (segmentObjects.elementAt(i) == null) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+
+        // If the direction we want doesn't match the rule
+        // direction, do nothing.
+        if (operator != FWDREV_RULE_OP &&
+            ((direction == Transliterator.FORWARD) != (operator == FORWARD_RULE_OP))) {
+            return pos;
+        }
+
+        // Transform the rule into a forward rule by swapping the
+        // sides if necessary.
+        if (direction == Transliterator.REVERSE) {
+            RuleHalf temp = left;
+            left = right;
+            right = temp;
+        }
+
+        // Remove non-applicable elements in forward-reverse
+        // rules.  Bidirectional rules ignore elements that do not
+        // apply.
+        if (operator == FWDREV_RULE_OP) {
+            right.removeContext();
+            left.cursor = -1;
+            left.cursorOffset = 0;
+        }
+
+        // Normalize context
+        if (left.ante < 0) {
+            left.ante = 0;
+        }
+        if (left.post < 0) {
+            left.post = left.text.length();
+        }
+
+        // Context is only allowed on the input side.  Cursors are only
+        // allowed on the output side.  Segment delimiters can only appear
+        // on the left, and references on the right.  Cursor offset
+        // cannot appear without an explicit cursor.  Cursor offset
+        // cannot place the cursor outside the limits of the context.
+        // Anchors are only allowed on the input side.
+        if (right.ante >= 0 || right.post >= 0 || left.cursor >= 0 ||
+            (right.cursorOffset != 0 && right.cursor < 0) ||
+            // - The following two checks were used to ensure that the
+            // - the cursor offset stayed within the ante- or postcontext.
+            // - However, with the addition of quantifiers, we have to
+            // - allow arbitrary cursor offsets and do runtime checking.
+            //(right.cursorOffset > (left.text.length() - left.post)) ||
+            //(-right.cursorOffset > left.ante) ||
+            right.anchorStart || right.anchorEnd ||
+            !left.isValidInput(this) || !right.isValidOutput(this) ||
+            left.ante > left.post) {
+            syntaxError("Malformed rule", rule, start);
+        }
+
+        // Flatten segment objects vector to an array
+        UnicodeMatcher[] segmentsArray = null;
+        if (segmentObjects.size() > 0) {
+            segmentsArray = new UnicodeMatcher[segmentObjects.size()];
+            segmentObjects.toArray(segmentsArray);
+        }
+
+        curData.ruleSet.addRule(new TransliterationRule(
+                                     left.text, left.ante, left.post,
+                                     right.text, right.cursor, right.cursorOffset,
+                                     segmentsArray,
+                                     left.anchorStart, left.anchorEnd,
+                                     curData));
+
+        return pos;
+    }
+
+    /**
+     * Set the variable range to [start, end] (inclusive).
+     */
+    private void setVariableRange(int start, int end) {
+        if (start > end || start < 0 || end > 0xFFFF) {
+            throw new IllegalArgumentException("Invalid variable range " + start + ", " + end);
+        }
+        
+        curData.variablesBase = (char) start; // first private use
+
+        if (dataVector.size() == 0) {
+            variableNext = (char) start;
+            variableLimit = (char) (end + 1);
+        }
+    }
+
+    /**
+     * Assert that the given character is NOT within the variable range.
+     * If it is, signal an error.  This is neccesary to ensure that the
+     * variable range does not overlap characters used in a rule.
+     */
+    private void checkVariableRange(int ch, String rule, int start) {
+        if (ch >= curData.variablesBase && ch < variableLimit) {
+            syntaxError("Variable range character in rule", rule, start);
+        }
+    }
+
+    // (The following method is part of an unimplemented feature.
+    // Remove this clover pragma after the feature is implemented.
+    // 2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Set the maximum backup to 'backup', in response to a pragma
+     * statement.
+     */
+    private void pragmaMaximumBackup(int backup) {
+        //TODO Finish
+        throw new IllegalArgumentException("use maximum backup pragma not implemented yet");
+    }
+    ///CLOVER:ON
+
+    // (The following method is part of an unimplemented feature.
+    // Remove this clover pragma after the feature is implemented.
+    // 2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Begin normalizing all rules using the given mode, in response
+     * to a pragma statement.
+     */
+    private void pragmaNormalizeRules(Normalizer.Mode mode) {
+        //TODO Finish
+        throw new IllegalArgumentException("use normalize rules pragma not implemented yet");
+    }
+    ///CLOVER:ON
+
+    /**
+     * Return true if the given rule looks like a pragma.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     */
+    static boolean resemblesPragma(String rule, int pos, int limit) {
+        // Must start with /use\s/i
+        return Utility.parsePattern(rule, pos, limit, "use ", null) >= 0;
+    }
+
+    /**
+     * Parse a pragma.  This method assumes resemblesPragma() has
+     * already returned true.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     * @return the position index after the final ';' of the pragma,
+     * or -1 on failure.
+     */
+    private int parsePragma(String rule, int pos, int limit) {
+        int[] array = new int[2];
+
+        // resemblesPragma() has already returned true, so we
+        // know that pos points to /use\s/i; we can skip 4 characters
+        // immediately
+        pos += 4;
+        
+        // Here are the pragmas we recognize:
+        // use variable range 0xE000 0xEFFF;
+        // use maximum backup 16;
+        // use nfd rules;
+        int p = Utility.parsePattern(rule, pos, limit, "~variable range # #~;", array);
+        if (p >= 0) {
+            setVariableRange(array[0], array[1]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~maximum backup #~;", array);
+        if (p >= 0) {
+            pragmaMaximumBackup(array[0]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfd rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFD);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfc rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFC);
+            return p;
+        }
+
+        // Syntax error: unable to parse pragma
+        return -1;
+    }
+
+    /**
+     * Throw an exception indicating a syntax error.  Search the rule string
+     * for the probable end of the rule.  Of course, if the error is that
+     * the end of rule marker is missing, then the rule end will not be found.
+     * In any case the rule start will be correctly reported.
+     * @param msg error description
+     * @param rule pattern string
+     * @param start position of first character of current rule
+     */
+    static final void syntaxError(String msg, String rule, int start) {
+        int end = ruleEnd(rule, start, rule.length());
+        throw new IllegalArgumentException(msg + " in \"" +
+                                           Utility.escape(rule.substring(start, end)) + '"');
+    }
+
+    static final int ruleEnd(String rule, int start, int limit) {
+        int end = Utility.quotedIndexOf(rule, start, limit, ";");
+        if (end < 0) {
+            end = limit;
+        }
+        return end;
+    }
+
+    /**
+     * Parse a UnicodeSet out, store it, and return the stand-in character
+     * used to represent it.
+     */
+    private final char parseSet(String rule, ParsePosition pos) {
+        UnicodeSet set = new UnicodeSet(rule, pos, parseData);
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Private use variables exhausted");
+        }
+        set.compact();
+        return generateStandInFor(set);
+    }
+
+    /**
+     * Generate and return a stand-in for a new UnicodeMatcher or UnicodeReplacer.
+     * Store the object.
+     */
+    char generateStandInFor(Object obj) {
+        // assert(obj != null);
+
+        // Look up previous stand-in, if any.  This is a short list
+        // (typical n is 0, 1, or 2); linear search is optimal.
+        for (int i=0; i<variablesVector.size(); ++i) {
+            if (variablesVector.elementAt(i) == obj) { // [sic] pointer comparison
+                return (char) (curData.variablesBase + i);
+            }
+        }
+
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Variable range exhausted");
+        }
+        variablesVector.addElement(obj);
+        return variableNext++;
+    }
+
+    /**
+     * Return the standin for segment seg (1-based).
+     */
+    public char getSegmentStandin(int seg) {
+        if (segmentStandins.length() < seg) {
+            segmentStandins.setLength(seg);
+        }
+        char c = segmentStandins.charAt(seg-1);
+        if (c == 0) {
+            if (variableNext >= variableLimit) {
+                throw new RuntimeException("Variable range exhausted");
+            }
+            c = variableNext++;
+            // Set a placeholder in the master variables vector that will be
+            // filled in later by setSegmentObject().  We know that we will get
+            // called first because setSegmentObject() will call us.
+            variablesVector.addElement(null);
+            segmentStandins.setCharAt(seg-1, c);
+        }
+        return c;
+    }
+    
+    /**
+     * Set the object for segment seg (1-based).
+     */
+    public void setSegmentObject(int seg, StringMatcher obj) {
+        // Since we call parseSection() recursively, nested
+        // segments will result in segment i+1 getting parsed
+        // and stored before segment i; be careful with the
+        // vector handling here.
+        if (segmentObjects.size() < seg) {
+            segmentObjects.setSize(seg);
+        }
+        int index = getSegmentStandin(seg) - curData.variablesBase;
+        if (segmentObjects.elementAt(seg-1) != null ||
+            variablesVector.elementAt(index) != null) {
+            throw new RuntimeException(); // should never happen
+        }
+        segmentObjects.setElementAt(obj, seg-1);
+        variablesVector.setElementAt(obj, index);
+    }
+
+    /**
+     * Return the stand-in for the dot set.  It is allocated the first
+     * time and reused thereafter.
+     */
+    char getDotStandIn() {
+        if (dotStandIn == -1) {
+            dotStandIn = generateStandInFor(new UnicodeSet(DOT_SET));
+        }
+        return (char) dotStandIn;
+    }
+
+    /**
+     * Append the value of the given variable name to the given
+     * StringBuffer.
+     * @exception IllegalArgumentException if the name is unknown.
+     */
+    private void appendVariableDef(String name, StringBuffer buf) {
+        char[] ch = (char[]) variableNames.get(name);
+        if (ch == null) {
+            // We allow one undefined variable so that variable definition
+            // statements work.  For the first undefined variable we return
+            // the special placeholder variableLimit-1, and save the variable
+            // name.
+            if (undefinedVariableName == null) {
+                undefinedVariableName = name;
+                if (variableNext >= variableLimit) {
+                    throw new RuntimeException("Private use variables exhausted");
+                }
+                buf.append((char) --variableLimit);
+            } else {
+                throw new IllegalArgumentException("Undefined variable $"
+                                                   + name);
+            }
+        } else {
+            buf.append(ch);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorRegistry.java b/src/com/ibm/icu/text/TransliteratorRegistry.java
new file mode 100644
index 0000000..ac8417c
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorRegistry.java
@@ -0,0 +1,893 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2005, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   08/19/2001  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+class TransliteratorRegistry {
+
+    // char constants
+    private static final char LOCALE_SEP  = '_';
+
+    // String constants
+    private static final String NO_VARIANT = ""; // empty string
+    private static final String ANY = "Any";
+
+    /**
+     * Dynamic registry mapping full IDs to Entry objects.  This
+     * contains both public and internal entities.  The visibility is
+     * controlled by whether an entry is listed in availableIDs and
+     * specDAG or not.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are objects of class Class (subclass of Transliterator),
+     * RuleBasedTransliterator.Data, Transliterator.Factory, or one
+     * of the entry classes defined here (AliasEntry or ResourceEntry).
+     */
+    private Hashtable registry;
+
+    /**
+     * DAG of visible IDs by spec.  Hashtable: source => (Hashtable:
+     * target => (Vector: variant)) The Vector of variants is never
+     * empty.  For a source-target with no variant, the special
+     * variant NO_VARIANT (the empty string) is stored in slot zero of
+     * the UVector.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are Hashtable of (CaseInsensitiveString -> Vector of
+     * CaseInsensitiveString)
+     */
+    private Hashtable specDAG;
+
+    /**
+     * Vector of public full IDs (CaseInsensitiveString objects).
+     */
+    private Vector availableIDs;
+
+    //----------------------------------------------------------------------
+    // class Spec
+    //----------------------------------------------------------------------
+
+    /**
+     * A Spec is a string specifying either a source or a target.  In more
+     * general terms, it may also specify a variant, but we only use the
+     * Spec class for sources and targets.
+     *
+     * A Spec may be a locale or a script.  If it is a locale, it has a
+     * fallback chain that goes xx_YY_ZZZ -> xx_YY -> xx -> ssss, where
+     * ssss is the script mapping of xx_YY_ZZZ.  The Spec API methods
+     * hasFallback(), next(), and reset() iterate over this fallback
+     * sequence.
+     *
+     * The Spec class canonicalizes itself, so the locale is put into
+     * canonical form, or the script is transformed from an abbreviation
+     * to a full name.
+     */
+    static class Spec {
+
+        private String top;        // top spec
+        private String spec;       // current spec
+        private String nextSpec;   // next spec
+        private String scriptName; // script name equivalent of top, if != top
+        private boolean isSpecLocale; // TRUE if spec is a locale
+        private boolean isNextLocale; // TRUE if nextSpec is a locale
+        private ICUResourceBundle res;
+
+        public Spec(String theSpec) {
+            top = theSpec;
+            spec = null;
+            scriptName = null;
+            try{
+                // Canonicalize script name.  If top is a script name then
+                // script != UScript.INVALID_CODE.
+                int script = UScript.getCodeFromName(top);
+
+                // Canonicalize script name -or- do locale->script mapping
+                int[] s = UScript.getCode(top);
+                if (s != null) {
+                    scriptName = UScript.getName(s[0]);
+                    // If the script name is the same as top then it's redundant
+                    if (scriptName.equalsIgnoreCase(top)) {
+                        scriptName = null;
+                    }
+                }
+
+                isSpecLocale = false;
+                res = null;
+                // If 'top' is not a script name, try a locale lookup
+                if (script == UScript.INVALID_CODE) {
+                    Locale toploc = LocaleUtility.getLocaleFromName(top);
+                    res  = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME,toploc);
+                    // Make sure we got the bundle we wanted; otherwise, don't use it
+                    if (res!=null && LocaleUtility.isFallbackOf(res.getULocale().toString(), top)) {
+                        isSpecLocale = true;
+                    }
+                }
+            }catch(MissingResourceException e){
+                scriptName = null;
+            }
+            // assert(spec != top);
+            reset();
+        }
+
+        public boolean hasFallback() {
+            return nextSpec != null;
+        }
+
+        public void reset() {
+            if (spec != top) { // [sic] pointer comparison
+                spec = top;
+                isSpecLocale = (res != null);
+                setupNext();
+            }
+        }
+
+        private void setupNext() {
+            isNextLocale = false;
+            if (isSpecLocale) {
+                nextSpec = spec;
+                int i = nextSpec.lastIndexOf(LOCALE_SEP);
+                // If i == 0 then we have _FOO, so we fall through
+                // to the scriptName.
+                if (i > 0) {
+                    nextSpec = spec.substring(0, i);
+                    isNextLocale = true;
+                } else {
+                    nextSpec = scriptName; // scriptName may be null
+                }
+            } else {
+                // Fallback to the script, which may be null
+                if (nextSpec != scriptName) {
+                    nextSpec = scriptName;
+                } else {
+                    nextSpec = null;
+                }
+            }
+        }
+
+        // Protocol:
+        // for(String& s(spec.get());
+        //     spec.hasFallback(); s(spec.next())) { ...
+
+        public String next() {
+            spec = nextSpec;
+            isSpecLocale = isNextLocale;
+            setupNext();
+            return spec;
+        }
+
+        public String get() {
+            return spec;
+        }
+
+        public boolean isLocale() {
+            return isSpecLocale;
+        }
+
+        /**
+         * Return the ResourceBundle for this spec, at the current
+         * level of iteration.  The level of iteration goes from
+         * aa_BB_CCC to aa_BB to aa.  If the bundle does not
+         * correspond to the current level of iteration, return null.
+         * If isLocale() is false, always return null.
+         */
+        public ResourceBundle getBundle() {
+            if (res != null &&
+                res.getULocale().toString().equals(spec)) {
+                return res;
+            }
+            return null;
+        }
+
+        public String getTop() {
+            return top;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // Entry classes
+    //----------------------------------------------------------------------
+
+    static class ResourceEntry {
+        public String resource;
+        public String encoding;
+        public int direction;
+        public ResourceEntry(String n, String enc, int d) {
+            resource = n;
+            encoding = enc;
+            direction = d;
+        }
+    }
+
+    // An entry representing a rule in a locale resource bundle
+    static class LocaleEntry {
+        public String rule;
+        public int direction;
+        public LocaleEntry(String r, int d) {
+            rule = r;
+            direction = d;
+        }
+    }
+
+    static class AliasEntry {
+        public String alias;
+        public AliasEntry(String a) {
+            alias = a;
+        }
+    }
+
+    static class CompoundRBTEntry {
+        private String ID;
+        private Vector idBlockVector;
+        private Vector dataVector;
+        private UnicodeSet compoundFilter;
+
+        public CompoundRBTEntry(String theID, Vector theIDBlockVector,
+                                Vector theDataVector,
+                                UnicodeSet theCompoundFilter) {
+            ID = theID;
+            idBlockVector = theIDBlockVector;
+            dataVector = theDataVector;
+            compoundFilter = theCompoundFilter;
+        }
+
+        public Transliterator getInstance() {
+            Vector transliterators = new Vector();
+            int passNumber = 1;
+
+            int limit = Math.max(idBlockVector.size(), dataVector.size());
+            for (int i = 0; i < limit; i++) {
+                if (i < idBlockVector.size()) {
+                    String idBlock = (String)idBlockVector.get(i);
+                    if (idBlock.length() > 0)
+                        transliterators.add(Transliterator.getInstance(idBlock));
+                }
+                if (i < dataVector.size()) {
+                    RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+                    transliterators.add(new RuleBasedTransliterator("%Pass" + passNumber++, data, null));
+                }
+            }
+
+            Transliterator t = new CompoundTransliterator(transliterators, passNumber - 1);
+            t.setID(ID);
+            if (compoundFilter != null) {
+                t.setFilter(compoundFilter);
+            }
+            return t;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Basic public API
+    //----------------------------------------------------------------------
+
+    public TransliteratorRegistry() {
+        registry = new Hashtable();
+        specDAG = new Hashtable();
+        availableIDs = new Vector();
+    }
+
+    /**
+     * Given a simple ID (forward direction, no inline filter, not
+     * compound) attempt to instantiate it from the registry.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     */
+    public Transliterator get(String ID,
+                              StringBuffer aliasReturn) {
+        Object[] entry = find(ID);
+        return (entry == null) ? null
+            : instantiateEntry(ID, entry, aliasReturn);
+    }
+
+    /**
+     * Register a class.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Class transliteratorSubclass,
+                    boolean visible) {
+        registerEntry(ID, transliteratorSubclass, visible);
+    }
+
+    /**
+     * Register an ID and a factory function pointer.  This adds an
+     * entry to the dynamic store, or replaces an existing entry.  Any
+     * entry in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator.Factory factory,
+                    boolean visible) {
+        registerEntry(ID, factory, visible);
+    }
+
+    /**
+     * Register an ID and a resource name.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String resourceName,
+                    String encoding,
+                    int dir,
+                    boolean visible) {
+        registerEntry(ID, new ResourceEntry(resourceName, encoding, dir), visible);
+    }
+
+    /**
+     * Register an ID and an alias ID.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String alias,
+                    boolean visible) {
+        registerEntry(ID, new AliasEntry(alias), visible);
+    }
+
+    /**
+     * Register an ID and a Transliterator object.  This adds an entry
+     * to the dynamic store, or replaces an existing entry.  Any entry
+     * in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator trans,
+                    boolean visible) {
+        registerEntry(ID, trans, visible);
+    }
+
+    /**
+     * Unregister an ID.  This removes an entry from the dynamic store
+     * if there is one.  The static locale resource store is
+     * unaffected.
+     */
+    public void remove(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registry.remove(new CaseInsensitiveString(id));
+        removeSTV(stv[0], stv[1], stv[2]);
+        availableIDs.removeElement(new CaseInsensitiveString(id));
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Public ID and spec management
+    //----------------------------------------------------------------------
+
+    /**
+     * An internal class that adapts an enumeration over
+     * CaseInsensitiveStrings to an enumeration over Strings.
+     */
+    private static class IDEnumeration implements Enumeration {
+        Enumeration en;
+
+        public IDEnumeration(Enumeration e) {
+            en = e;
+        }
+
+        public boolean hasMoreElements() {
+            return en != null && en.hasMoreElements();
+        }
+
+        public Object nextElement() {
+            return ((CaseInsensitiveString) en.nextElement()).getString();
+        }
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of visible
+     * registered transliterators.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableIDs() {
+        // Since the cache contains CaseInsensitiveString objects, but
+        // the caller expects Strings, we have to use an intermediary.
+        return new IDEnumeration(availableIDs.elements());
+    }
+
+    /**
+     * Returns an enumeration over all visible source names.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableSources() {
+        return new IDEnumeration(specDAG.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible target names for the given
+     * source.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableTargets(String source) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(targets.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible variant names for the given
+     * source and target.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableVariants(String source, String target) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(variants.elements());
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: internal
+    //----------------------------------------------------------------------
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        String s = source;
+        if (s.length() == 0) {
+            s = ANY;
+        }
+        String ID = TransliteratorIDParser.STVtoID(source, target, variant);
+        registerEntry(ID, s, target, variant, entry, visible);
+    }
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String ID,
+                               Object entry,
+                               boolean visible) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registerEntry(id, stv[0], stv[1], stv[2], entry, visible);
+    }
+
+    /**
+     * Register an entry object (adopted) with the given ID, source,
+     * target, and variant strings.
+     */
+    private void registerEntry(String ID,
+                               String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        CaseInsensitiveString ciID = new CaseInsensitiveString(ID);
+
+        // Store the entry within an array so it can be modified later
+        if (!(entry instanceof Object[])) {
+            entry = new Object[] { entry };
+        }
+
+        registry.put(ciID, entry);
+        if (visible) {
+            registerSTV(source, target, variant);
+            if (!availableIDs.contains(ciID)) {
+                availableIDs.addElement(ciID);
+            }
+        } else {
+            removeSTV(source, target, variant);
+            availableIDs.removeElement(ciID);
+        }
+    }
+
+    /**
+     * Register a source-target/variant in the specDAG.  Variant may be
+     * empty, but source and target must not be.  If variant is empty then
+     * the special variant NO_VARIANT is stored in slot zero of the
+     * UVector of variants.
+     */
+    private void registerSTV(String source,
+                             String target,
+                             String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            targets = new Hashtable();
+            specDAG.put(cisrc, targets);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            variants = new Vector();
+            targets.put(citrg, variants);
+        }
+        // assert(NO_VARIANT == "");
+        // We add the variant string.  If it is the special "no variant"
+        // string, that is, the empty string, we add it at position zero.
+        if (!variants.contains(civar)) {
+            if (variant.length() > 0) {
+                variants.addElement(civar);
+            } else {
+                variants.insertElementAt(civar, 0);
+            }
+        }
+    }
+
+    /**
+     * Remove a source-target/variant from the specDAG.
+     */
+    private void removeSTV(String source,
+                           String target,
+                           String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return; // should never happen for valid s-t/v
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return; // should never happen for valid s-t/v
+        }
+        variants.removeElement(civar);
+        if (variants.size() == 0) {
+            targets.remove(citrg); // should delete variants
+            if (targets.size() == 0) {
+                specDAG.remove(cisrc); // should delete targets
+            }
+        }
+    }
+
+    private static final boolean DEBUG = false;
+
+    /**
+     * Attempt to find a source-target/variant in the dynamic registry
+     * store.  Return 0 on failure.
+     */
+    private Object[] findInDynamicStore(Spec src,
+                                      Spec trg,
+                                      String variant) {
+        String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+        if (DEBUG) {
+            System.out.println("TransliteratorRegistry.findInDynamicStore:" +
+                               ID);
+        }
+        return (Object[]) registry.get(new CaseInsensitiveString(ID));
+    }
+
+    /**
+     * Attempt to find a source-target/variant in the static locale
+     * resource store.  Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new entry object, register it in the dynamic
+     * store, and return a pointer to it, but do not make it public --
+     * just because someone requested something, we do not expand the
+     * available ID list (or spec DAG).
+     */
+    private Object[] findInStaticStore(Spec src,
+                                     Spec trg,
+                                     String variant) {
+        if (DEBUG) {
+            String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+            System.out.println("TransliteratorRegistry.findInStaticStore:" +
+                               ID);
+        }
+        Object[] entry = null;
+        if (src.isLocale()) {
+            entry = findInBundle(src, trg, variant, Transliterator.FORWARD);
+        } else if (trg.isLocale()) {
+            entry = findInBundle(trg, src, variant, Transliterator.REVERSE);
+        }
+
+        // If we found an entry, store it in the Hashtable for next
+        // time.
+        if (entry != null) {
+            registerEntry(src.getTop(), trg.getTop(), variant, entry, false);
+        }
+
+        return entry;
+    }
+
+    /**
+     * Attempt to find an entry in a single resource bundle.  This is
+     * a one-sided lookup.  findInStaticStore() performs up to two such
+     * lookups, one for the source, and one for the target.
+     *
+     * Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new Entry object, populate it, and return it.
+     * The caller owns the returned object.
+     */
+    private Object[] findInBundle(Spec specToOpen,
+                                  Spec specToFind,
+                                  String variant,
+                                  int direction) {
+        // assert(specToOpen.isLocale());
+        ResourceBundle res = specToOpen.getBundle();
+
+        if (res == null) {
+            // This means that the bundle's locale does not match
+            // the current level of iteration for the spec.
+            return null;
+        }
+
+        for (int pass=0; pass<2; ++pass) {
+            StringBuffer tag = new StringBuffer();
+            // First try either TransliteratorTo_xxx or
+            // TransliterateFrom_xxx, then try the bidirectional
+            // Transliterate_xxx.  This precedence order is arbitrary
+            // but must be consistent and documented.
+            if (pass == 0) {
+                tag.append(direction == Transliterator.FORWARD ?
+                           "TransliterateTo" : "TransliterateFrom");
+            } else {
+                tag.append("Transliterate");
+            }
+            tag.append(specToFind.get().toUpperCase());
+
+            try {
+                // The Transliterate*_xxx resource is an array of
+                // strings of the format { <v0>, <r0>, ... }.  Each
+                // <vi> is a variant name, and each <ri> is a rule.
+                String[] subres = res.getStringArray(tag.toString());
+
+                // assert(subres != null);
+                // assert(subres.length % 2 == 0);
+                int i = 0;
+                if (variant.length() != 0) {
+                    for (i=0; i<subres.length; i+= 2) {
+                        if (subres[i].equalsIgnoreCase(variant)) {
+                            break;
+                        }
+                    }
+                }
+
+                if (i < subres.length) {
+                    // We have a match, or there is no variant and i == 0.
+                    // We have succeeded in loading a string from the
+                    // locale resources.  Return the rule string which
+                    // will itself become the registry entry.
+
+                    // The direction is always forward for the
+                    // TransliterateTo_xxx and TransliterateFrom_xxx
+                    // items; those are unidirectional forward rules.
+                    // For the bidirectional Transliterate_xxx items,
+                    // the direction is the value passed in to this
+                    // function.
+                    int dir = (pass == 0) ? Transliterator.FORWARD : direction;
+                    return new Object[] { new LocaleEntry(subres[i+1], dir) };
+                }
+
+            } catch (MissingResourceException e) {
+                if (DEBUG) System.out.println("missing resource: " + e);
+            }
+        }
+
+        // If we get here we had a missing resource exception or we
+        // failed to find a desired variant.
+        return null;
+    }
+
+    /**
+     * Convenience method.  Calls 3-arg find().
+     */
+    private Object[] find(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        return find(stv[0], stv[1], stv[2]);
+    }
+
+    /**
+     * Top-level find method.  Attempt to find a source-target/variant in
+     * either the dynamic or the static (locale resource) store.  Perform
+     * fallback.
+     *
+     * Lookup sequence for ss_SS_SSS-tt_TT_TTT/v:
+     *
+     *   ss_SS_SSS-tt_TT_TTT/v -- in hashtable
+     *   ss_SS_SSS-tt_TT_TTT/v -- in ss_SS_SSS (no fallback)
+     *
+     *     repeat with t = tt_TT_TTT, tt_TT, tt, and tscript
+     *
+     *     ss_SS_SSS-t/*
+     *     ss_SS-t/*
+     *     ss-t/*
+     *     sscript-t/*
+     *
+     * Here * matches the first variant listed.
+     *
+     * Caller does NOT own returned object.  Return 0 on failure.
+     */
+    private Object[] find(String source,
+                          String target,
+                          String variant) {
+
+        Spec src = new Spec(source);
+        Spec trg = new Spec(target);
+        Object[] entry = null;
+
+        if (variant.length() != 0) {
+
+            // Seek exact match in hashtable
+            entry = findInDynamicStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+
+            // Seek exact match in locale resources
+            entry = findInStaticStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+        }
+
+        for (;;) {
+            src.reset();
+            for (;;) {
+                // Seek match in hashtable
+                entry = findInDynamicStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+
+                // Seek match in locale resources
+                entry = findInStaticStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+                if (!src.hasFallback()) {
+                    break;
+                }
+                src.next();
+            }
+            if (!trg.hasFallback()) {
+                break;
+            }
+            trg.next();
+        }
+
+        return null;
+    }
+
+    /**
+     * Given an Entry object, instantiate it.  Caller owns result.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     *
+     * The entry object is assumed to reside in the dynamic store.  It may be
+     * modified.
+     */
+    private Transliterator instantiateEntry(String ID,
+                                            Object[] entryWrapper,
+                                            StringBuffer aliasReturn) {
+        // We actually modify the entry object in some cases.  If it
+        // is a string, we may partially parse it and turn it into a
+        // more processed precursor.  This makes the next
+        // instantiation faster and allows sharing of immutable
+        // components like the RuleBasedTransliterator.Data objects.
+        // For this reason, the entry object is an Object[] of length
+        // 1.
+
+        for (;;) {
+            Object entry = entryWrapper[0];
+
+            if (entry instanceof RuleBasedTransliterator.Data) {
+                RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data) entry;
+                return new RuleBasedTransliterator(ID, data, null);
+            } else if (entry instanceof Class) {
+                try {
+                    return (Transliterator) ((Class) entry).newInstance();
+                } catch (InstantiationException e) {
+                } catch (IllegalAccessException e2) {}
+                return null;
+            } else if (entry instanceof AliasEntry) {
+                aliasReturn.append(((AliasEntry) entry).alias);
+                return null;
+            } else if (entry instanceof Transliterator.Factory) {
+                return ((Transliterator.Factory) entry).getInstance(ID);
+            } else if (entry instanceof CompoundRBTEntry) {
+                return ((CompoundRBTEntry) entry).getInstance();
+            } else if (entry instanceof Transliterator) {
+                return (Transliterator) entry;
+            }
+
+            // At this point entry type must be either RULES_FORWARD or
+            // RULES_REVERSE.  We process the rule data into a
+            // TransliteratorRuleData object, and possibly also into an
+            // .id header and/or footer.  Then we modify the registry with
+            // the parsed data and retry.
+
+            TransliteratorParser parser = new TransliteratorParser();
+
+            try {
+               
+                ResourceEntry re = (ResourceEntry) entry;
+                parser.parse(re.resource, re.direction);
+                
+            } catch (ClassCastException e) {
+                // If we pull a rule from a locale resource bundle it will
+                // be a LocaleEntry.
+                LocaleEntry le = (LocaleEntry) entry;
+                parser.parse(le.rule, le.direction);
+            }
+
+            // Reset entry to something that we process at the
+            // top of the loop, then loop back to the top.  As long as we
+            // do this, we only loop through twice at most.
+            // NOTE: The logic here matches that in
+            // Transliterator.createFromRules().
+            if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 0) {
+                // No idBlock, no data -- this is just an
+                // alias for Null
+                entryWrapper[0] = new AliasEntry(NullTransliterator._ID);
+            }
+            else if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 1) {
+                // No idBlock, data != 0 -- this is an
+                // ordinary RBT_DATA
+                entryWrapper[0] = parser.dataVector.get(0);
+            }
+            else if (parser.idBlockVector.size() == 1 && parser.dataVector.size() == 0) {
+                // idBlock, no data -- this is an alias.  The ID has
+                // been munged from reverse into forward mode, if
+                // necessary, so instantiate the ID in the forward
+                // direction.
+                if (parser.compoundFilter != null)
+                    entryWrapper[0] = new AliasEntry(parser.compoundFilter.toPattern(false) + ";"
+                            + (String)parser.idBlockVector.get(0));
+                else
+                    entryWrapper[0] = new AliasEntry((String)parser.idBlockVector.get(0));
+            }
+            else {
+                entryWrapper[0] = new CompoundRBTEntry(ID, parser.idBlockVector, parser.dataVector,
+                        parser.compoundFilter);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UCharacterIterator.java b/src/com/ibm/icu/text/UCharacterIterator.java
new file mode 100644
index 0000000..5408532
--- /dev/null
+++ b/src/com/ibm/icu/text/UCharacterIterator.java
@@ -0,0 +1,409 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.ReplaceableUCharacterIterator;
+import com.ibm.icu.impl.UCharArrayIterator;
+import com.ibm.icu.impl.UCharacterIteratorWrapper;
+import com.ibm.icu.impl.UCharacterProperty;
+
+
+/**
+ * Abstract class that defines an API for iteration on text objects.This is an 
+ * interface for forward and backward iteration and random access into a text 
+ * object. Forward iteration is done with post-increment and backward iteration 
+ * is done with pre-decrement semantics, while the 
+ * <code>java.text.CharacterIterator</code> interface methods provided forward 
+ * iteration with "pre-increment" and backward iteration with pre-decrement 
+ * semantics. This API is more efficient for forward iteration over code points.
+ * The other major difference is that this API can do both code unit and code point 
+ * iteration, <code>java.text.CharacterIterator</code> can only iterate over 
+ * code units and is limited to BMP (0 - 0xFFFF)
+ * @author Ram
+ * @stable ICU 2.4
+ */
+public abstract class UCharacterIterator 
+                      implements Cloneable,UForwardCharacterIterator {
+
+    /**
+     * Protected default constructor for the subclasses
+     * @stable ICU 2.4
+     */
+    protected UCharacterIterator(){
+    }
+    
+    // static final methods ----------------------------------------------------
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * <code>Replaceable</code> object.
+     * @param source a valid source as a <code>Replaceable</code> object
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(Replaceable source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source string.
+     * @param source a string
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(String source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(char[] source){
+        return getInstance(source,0,source.length);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(char[] source, int start, int limit){
+        return new UCharArrayIterator(source,start,limit);
+    }
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source StringBuffer.
+     * @param source an string buffer of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(StringBuffer source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * CharacterIterator.
+     * @param source a valid CharacterIterator object.
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */    
+    public static final UCharacterIterator getInstance(CharacterIterator source){
+        return new CharacterIteratorWrapper(source);
+    }
+       
+    // public methods ----------------------------------------------------------
+    /**
+     * Returns a <code>java.text.CharacterIterator</code> object for
+     * the underlying text of this iterator.  The returned iterator is
+     * independent of this iterator.
+     * @return java.text.CharacterIterator object
+     * @stable ICU 2.4 
+     */
+    public CharacterIterator getCharacterIterator(){
+        return new UCharacterIteratorWrapper(this);
+    }    
+   
+    /**
+     * Returns the code unit at the current index.  If index is out
+     * of range, returns DONE.  Index is not changed.
+     * @return current code unit
+     * @stable ICU 2.4
+     */
+    public abstract int current();
+    
+    /**
+     * Returns the codepoint at the current index.
+     * If the current index is invalid, DONE is returned.
+     * If the current index points to a lead surrogate, and there is a following
+     * trail surrogate, then the code point is returned.  Otherwise, the code
+     * unit at index is returned.  Index is not changed. 
+     * @return current codepoint
+     * @stable ICU 2.4
+     */
+    public int currentCodePoint(){
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the
+            // next code point
+            next();
+            // due to post increment semantics
+            // current() after next() actually
+            // returns the char we want
+            int ch2 = current();
+            // current should never change
+            // the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair 
+                // return the codepoint
+                return UCharacterProperty.getRawSupplementary(
+                                                          (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     * @stable ICU 2.4
+     */
+    public abstract int getLength();
+
+    
+    /**
+     * Gets the current index in text.
+     * @return current index in text.
+     * @stable ICU 2.4
+     */
+    public abstract int getIndex();
+
+
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.
+     * @stable ICU 2.4  
+     */
+    public abstract int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.
+     * @stable ICU 2.4  
+     */
+    public int nextCodePoint(){
+        int ch1 = next();
+        if(UTF16.isLeadSurrogate((char)ch1)){
+            int ch2 = next();
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch1,
+                                                              (char)ch2);
+            }else if (ch2 != DONE) {
+                // unmatched surrogate so back out
+                previous();
+            }
+        }
+        return ch1;
+    }
+
+    /**
+     * Decrement to the position of the previous code unit in the
+     * text, and return it (pre-decrement semantics).  If the
+     * resulting index is less than 0, the index is reset to 0 and
+     * DONE is returned.
+     * @return the previous code unit in the text, or DONE if the new
+     *         index is before the start of the text.
+     * @stable ICU 2.4  
+     */
+    public abstract int previous();
+
+    
+    /**
+     * Retreat to the start of the previous code point in the text,
+     * and return it (pre-decrement semantics).  If the index is not
+     * preceeded by a valid surrogate pair, the behavior is the same
+     * as <code>previous()</code>.  Otherwise the iterator is
+     * decremented to the start of the surrogate pair, and the code
+     * point represented by the pair is returned.
+     * @return the previous code point in the text, or DONE if the new
+     *         index is before the start of the text.
+     * @stable ICU 2.4  
+     */
+    public int previousCodePoint(){
+        int ch1 = previous();
+        if(UTF16.isTrailSurrogate((char)ch1)){
+            int ch2 = previous();
+            if(UTF16.isLeadSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch2,
+                                                              (char)ch1);
+            }else if (ch2 != DONE) {
+                //unmatched trail surrogate so back out
+                next();
+            }   
+        }
+        return ch1;
+    }
+
+    /**
+     * Sets the index to the specified index in the text.
+     * @param index the index within the text. 
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied
+     * @stable ICU 2.4
+     */
+    public abstract void setIndex(int index);
+
+    /**
+     * Sets the current index to the limit.
+     * @stable ICU 2.4
+     */
+    public void setToLimit() {
+        setIndex(getLength());
+    }
+    
+    /**
+     * Sets the current index to the start.
+     * @stable ICU 2.4
+     */
+    public void setToStart() {
+        setIndex(0);
+    }
+
+    /**
+     * Fills the buffer with the underlying text storage of the iterator
+     * If the buffer capacity is not enough a exception is thrown. The capacity
+     * of the fill in buffer should at least be equal to length of text in the 
+     * iterator obtained by calling <code>getLength()</code).
+     * <b>Usage:</b>
+     * 
+     * <code>
+     * <pre>
+     *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
+     *         char[] buf = new char[iter.getLength()];
+     *         iter.getText(buf);
+     *         
+     *         OR
+     *         char[] buf= new char[1];
+     *         int len = 0;
+     *         for(;;){
+     *             try{
+     *                 len = iter.getText(buf);
+     *                 break;
+     *             }catch(IndexOutOfBoundsException e){
+     *                 buf = new char[iter.getLength()];
+     *             }
+     *         }
+     * </pre>
+     * </code>
+     *             
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @param offset the position within the array to start putting the data.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room after offset in the array, or if offset < 0.
+     * @stable ICU 2.4  
+     */
+    public abstract int getText(char[] fillIn, int offset); 
+
+    /**
+     * Convenience override for <code>getText(char[], int)>/code> that provides
+     * an offset of 0.
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room in the array.
+     * @stable ICU 2.4  
+     */
+    public final int getText(char[] fillIn) {
+        return getText(fillIn, 0);
+    }
+         
+    /**
+     * Convenience method for returning the underlying text storage as as string
+     * @return the underlying text storage in the iterator as a string
+     * @stable ICU 2.4
+     */
+    public String getText() {
+        char[] text = new char[getLength()];
+        getText(text);
+        return new String(text);
+    }
+       
+    /**
+     * Moves the current position by the number of code units
+     * specified, either forward or backward depending on the sign
+     * of delta (positive or negative respectively).  If the resulting
+     * index would be less than zero, the index is set to zero, and if
+     * the resulting index would be greater than limit, the index is
+     * set to limit.
+     *
+     * @param delta the number of code units to move the current
+     *              index.
+     * @return the new index.
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied 
+     * @stable ICU 2.4 
+     * 
+     */
+    public int moveIndex(int delta) {
+        int x = Math.max(0, Math.min(getIndex() + delta, getLength()));
+        setIndex(x);
+        return x;
+    }
+
+    /**
+     * Moves the current position by the number of code points
+     * specified, either forward or backward depending on the sign of
+     * delta (positive or negative respectively). If the current index
+     * is at a trail surrogate then the first adjustment is by code
+     * unit, and the remaining adjustments are by code points.  If the
+     * resulting index would be less than zero, the index is set to
+     * zero, and if the resulting index would be greater than limit,
+     * the index is set to limit.
+     * @param delta the number of code units to move the current index.
+     * @return the new index  
+     * @exception IndexOutOfBoundsException is thrown if an invalid delta is 
+     *            supplied
+     * @stable ICU 2.4
+     */
+    public int moveCodePointIndex(int delta){
+        if(delta>0){
+            while(delta>0 && nextCodePoint() != DONE){delta--;}
+        }else{
+            while(delta<0 && previousCodePoint() != DONE){delta++;}
+        }
+        if(delta!=0){
+            throw new IndexOutOfBoundsException();
+        }
+          
+        return getIndex();
+    }
+
+    /**
+     * Creates a copy of this iterator, independent from other iterators.
+     * If it is not possible to clone the iterator, returns null.
+     * @return copy of this iterator
+     * @stable ICU 2.4
+     */
+    public Object clone() throws CloneNotSupportedException{
+        return super.clone();
+    }   
+    
+}
+
diff --git a/src/com/ibm/icu/text/UFormat.java b/src/com/ibm/icu/text/UFormat.java
new file mode 100644
index 0000000..e730b8d
--- /dev/null
+++ b/src/com/ibm/icu/text/UFormat.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.Format;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * An abstract class that extends {@link java.text.Format} to provide
+ * additional ICU protocol, specifically, the <tt>getLocale()</tt>
+ * API.  All ICU format classes are subclasses of this class.
+ *
+ * @see com.ibm.icu.util.ULocale
+ * @author weiv
+ * @author Alan Liu
+ * @draft ICU 2.8 (retain)
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class UFormat extends Format {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -4964390515840164416L;
+
+    /**
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UFormat() {}
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/UForwardCharacterIterator.java b/src/com/ibm/icu/text/UForwardCharacterIterator.java
new file mode 100644
index 0000000..26ae00f
--- /dev/null
+++ b/src/com/ibm/icu/text/UForwardCharacterIterator.java
@@ -0,0 +1,91 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * Interface that defines an API for forward-only iteration
+ * on text objects.
+ * This is a minimal interface for iteration without random access
+ * or backwards iteration. It is especially useful for wrapping
+ * streams with converters into an object for collation or
+ * normalization.
+ *
+ * <p>Characters can be accessed in two ways: as code units or as
+ * code points.
+ * Unicode code points are 21-bit integers and are the scalar values
+ * of Unicode characters. ICU uses the type <code>int</code> for them.
+ * Unicode code units are the storage units of a given
+ * Unicode/UCS Transformation Format (a character encoding scheme).
+ * With UTF-16, all code points can be represented with either one
+ * or two code units ("surrogates").
+ * String storage is typically based on code units, while properties
+ * of characters are typically determined using code point values.
+ * Some processes may be designed to work with sequences of code units,
+ * or it may be known that all characters that are important to an
+ * algorithm can be represented with single code units.
+ * Other processes will need to use the code point access functions.</p>
+ *
+ * <p>ForwardCharacterIterator provides next() to access
+ * a code unit and advance an internal position into the text object,
+ * similar to a <code>return text[position++]</code>.<br>
+ * It provides nextCodePoint() to access a code point and advance an internal
+ * position.</p>
+ *
+ * <p>nextCodePoint() assumes that the current position is that of
+ * the beginning of a code point, i.e., of its first code unit.
+ * After nextCodePoint(), this will be true again.
+ * In general, access to code units and code points in the same
+ * iteration loop should not be mixed. In UTF-16, if the current position
+ * is on a second code unit (Low Surrogate), then only that code unit
+ * is returned even by nextCodePoint().</p>
+ *
+ * Usage:
+ * <code> 
+ *  public void function1(UForwardCharacterIterator it) {
+ *     int c;
+ *     while((c=it.next())!=UForwardCharacterIterator.DONE) {
+ *         // use c
+ *      }
+ *  }
+ * </code>
+ * </p>
+ * @stable ICU 2.4
+ *
+ */
+
+public interface UForwardCharacterIterator {
+      
+    /**
+     * Indicator that we have reached the ends of the UTF16 text.
+     * @stable ICU 2.4
+     */
+    public static final int DONE = -1;
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.
+     * @stable ICU 2.4  
+     */
+    public int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.
+     * @stable ICU 2.4  
+     */
+    public int nextCodePoint();
+
+}
diff --git a/src/com/ibm/icu/text/UTF16.java b/src/com/ibm/icu/text/UTF16.java
new file mode 100644
index 0000000..b1fd699
--- /dev/null
+++ b/src/com/ibm/icu/text/UTF16.java
@@ -0,0 +1,2858 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+ * <p>
+ * Standalone utility class providing UTF16 character conversions and indexing conversions.
+ * </p>
+ * <p>
+ * Code that uses strings alone rarely need modification. By design, UTF-16 does not allow overlap,
+ * so searching for strings is a safe operation. Similarly, concatenation is always safe.
+ * Substringing is safe if the start and end are both on UTF-32 boundaries. In normal code, the
+ * values for start and end are on those boundaries, since they arose from operations like
+ * searching. If not, the nearest UTF-32 boundaries can be determined using <code>bounds()</code>.
+ * </p>
+ * <strong>Examples:</strong>
+ * <p>
+ * The following examples illustrate use of some of these methods.
+ * 
+ * <pre>
+ * // iteration forwards: Original
+ * for (int i = 0; i &lt; s.length(); ++i) {
+ *     char ch = s.charAt(i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration forwards: Changes for UTF-32
+ * int ch;
+ * for (int i = 0; i &lt; s.length(); i += UTF16.getCharCount(ch)) {
+ *     ch = UTF16.charAt(s, i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration backwards: Original
+ * for (int i = s.length() - 1; i &gt;= 0; --i) {
+ *     char ch = s.charAt(i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration backwards: Changes for UTF-32
+ * int ch;
+ * for (int i = s.length() - 1; i &gt; 0; i -= UTF16.getCharCount(ch)) {
+ *     ch = UTF16.charAt(s, i);
+ *     doSomethingWith(ch);
+ * }
+ * </pre>
+ * 
+ * <strong>Notes:</strong>
+ * <ul>
+ * <li> <strong>Naming:</strong> For clarity, High and Low surrogates are called <code>Lead</code>
+ * and <code>Trail</code> in the API, which gives a better sense of their ordering in a string.
+ * <code>offset16</code> and <code>offset32</code> are used to distinguish offsets to UTF-16
+ * boundaries vs offsets to UTF-32 boundaries. <code>int char32</code> is used to contain UTF-32
+ * characters, as opposed to <code>char16</code>, which is a UTF-16 code unit. </li>
+ * <li> <strong>Roundtripping Offsets:</strong> You can always roundtrip from a UTF-32 offset to a
+ * UTF-16 offset and back. Because of the difference in structure, you can roundtrip from a UTF-16
+ * offset to a UTF-32 offset and back if and only if <code>bounds(string, offset16) != TRAIL</code>.
+ * </li>
+ * <li> <strong>Exceptions:</strong> The error checking will throw an exception if indices are out
+ * of bounds. Other than than that, all methods will behave reasonably, even if unmatched surrogates
+ * or out-of-bounds UTF-32 values are present. <code>UCharacter.isLegal()</code> can be used to
+ * check for validity if desired. </li>
+ * <li> <strong>Unmatched Surrogates:</strong> If the string contains unmatched surrogates, then
+ * these are counted as one UTF-32 value. This matches their iteration behavior, which is vital. It
+ * also matches common display practice as missing glyphs (see the Unicode Standard Section 5.4,
+ * 5.5). </li>
+ * <li> <strong>Optimization:</strong> The method implementations may need optimization if the
+ * compiler doesn't fold static final methods. Since surrogate pairs will form an exceeding small
+ * percentage of all the text in the world, the singleton case should always be optimized for. </li>
+ * </ul>
+ * 
+ * @author Mark Davis, with help from Markus Scherer
+ * @stable ICU 2.1
+ */
+
+public final class UTF16 {
+    // public variables ---------------------------------------------------
+
+    /**
+     * Value returned in <code><a href="#bounds(java.lang.String, int)">
+     * bounds()</a></code>.
+     * These values are chosen specifically so that it actually represents the position of the
+     * character [offset16 - (value >> 2), offset16 + (value & 3)]
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SINGLE_CHAR_BOUNDARY = 1, LEAD_SURROGATE_BOUNDARY = 2,
+            TRAIL_SURROGATE_BOUNDARY = 5;
+
+    /**
+     * The lowest Unicode code point value.
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int CODEPOINT_MIN_VALUE = 0;
+
+    /**
+     * The highest Unicode code point value (scalar value) according to the Unicode Standard.
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int CODEPOINT_MAX_VALUE = 0x10ffff;
+
+    /**
+     * The minimum value for Supplementary code points
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE = 0x10000;
+
+    /**
+     * Lead surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
+
+    /**
+     * Trail surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00;
+
+    /**
+     * Lead surrogate maximum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
+
+    /**
+     * Trail surrogate maximum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
+
+    /**
+     * Surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SURROGATE_MIN_VALUE = LEAD_SURROGATE_MIN_VALUE;
+
+    /**
+     * Maximum surrogate value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SURROGATE_MAX_VALUE = TRAIL_SURROGATE_MAX_VALUE;
+
+    /**
+     * Lead surrogate bitmask
+     */
+    private static final int LEAD_SURROGATE_BITMASK = 0xFFFFFC00;
+
+    /**
+     * Trail surrogate bitmask
+     */
+    private static final int TRAIL_SURROGATE_BITMASK = 0xFFFFFC00;
+
+    /**
+     * Surrogate bitmask
+     */
+    private static final int SURROGATE_BITMASK = 0xFFFFF800;
+
+    /**
+     * Lead surrogate bits
+     */
+    private static final int LEAD_SURROGATE_BITS = 0xD800;
+
+    /**
+     * Trail surrogate bits
+     */
+    private static final int TRAIL_SURROGATE_BITS = 0xDC00;
+
+    /**
+     * Surrogate bits
+     */
+    private static final int SURROGATE_BITS = 0xD800;
+
+    // constructor --------------------------------------------------------
+
+    // /CLOVER:OFF
+    /**
+     * Prevent instance from being created.
+     */
+    private UTF16() {
+    }
+
+    // /CLOVER:ON
+    // public method ------------------------------------------------------
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">
+     * UCharacter.isLegal()</a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(String source, int offset16) {
+        char single = source.charAt(offset16);
+        if (single < LEAD_SURROGATE_MIN_VALUE) {
+            return single;
+        }
+        return _charAt(source, offset16, single);
+    }
+
+    private static int _charAt(String source, int offset16, char single) {
+        if (single > TRAIL_SURROGATE_MAX_VALUE) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (trail >= TRAIL_SURROGATE_MIN_VALUE && trail <= TRAIL_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+                }
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (lead >= LEAD_SURROGATE_MIN_VALUE && lead <= LEAD_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">
+     * UCharacter.isLegal()</a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(CharSequence source, int offset16) {
+        char single = source.charAt(offset16);
+        if (single < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            return single;
+        }
+        return _charAt(source, offset16, single);
+    }
+
+    private static int _charAt(CharSequence source, int offset16, char single) {
+        if (single > UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (trail >= UTF16.TRAIL_SURROGATE_MIN_VALUE
+                        && trail <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+                }
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (lead >= UTF16.LEAD_SURROGATE_MIN_VALUE
+                        && lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+//#endif
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            UTF-16 chars string buffer
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(StringBuffer source, int offset16) {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (isTrailSurrogate(trail))
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (isLeadSurrogate(lead)) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Extract a single UTF-32 value from a substring. Used when iterating forwards or backwards
+     * (with <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param offset16
+     *            UTF-16 offset relative to start
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int charAt(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source[offset16];
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            offset16++;
+            if (offset16 >= limit) {
+                return single;
+            }
+            char trail = source[offset16];
+            if (isTrailSurrogate(trail)) {
+                return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else { // isTrailSurrogate(single), so
+            if (offset16 == start) {
+                return single;
+            }
+            offset16--;
+            char lead = source[offset16];
+            if (isLeadSurrogate(lead))
+                return UCharacterProperty.getRawSupplementary(lead, single);
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            UTF-16 chars string buffer
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(Replaceable source, int offset16) {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (isTrailSurrogate(trail))
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (isLeadSurrogate(lead)) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Determines how many chars this char32 requires. If a validity check is required, use <code>
+     * <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
+     * on char32 before calling.
+     * 
+     * @param char32
+     *            the input codepoint.
+     * @return 2 if is in supplementary space, otherwise 1.
+     * @stable ICU 2.1
+     */
+    public static int getCharCount(int char32) {
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            return 1;
+        }
+        return 2;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access.
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are [offset16, offset16+1]
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the return values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (value >> 2), offset16 + (value & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int bounds(String source, int offset16) {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                if (++offset16 < source.length() && isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else {
+                // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= 0 && isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access.
+     * 
+     * @param source
+     *            string buffer to analyse
+     * @param offset16
+     *            UTF16 offset
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are [offset16, offset16 + 1]
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the return values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (value >> 2), offset16 + (value & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int bounds(StringBuffer source, int offset16) {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                if (++offset16 < source.length() && isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else {
+                // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= 0 && isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access. Note
+     * that the boundaries are determined with respect to the subarray, hence the char array
+     * {0xD800, 0xDC00} has the result SINGLE_CHAR_BOUNDARY for start = offset16 = 0 and limit = 1.
+     * 
+     * @param source
+     *            char array to analyse
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param offset16
+     *            UTF16 offset relative to start
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the boundary values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (boundvalue >> 2), offset16 + (boundvalue & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int bounds(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        char ch = source[offset16];
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                ++offset16;
+                if (offset16 < limit && isTrailSurrogate(source[offset16])) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else { // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= start && isLeadSurrogate(source[offset16])) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Determines whether the code value is a surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isSurrogate(char char16) {
+        return (char16 & SURROGATE_BITMASK) == SURROGATE_BITS;
+    }
+
+    /**
+     * Determines whether the character is a trail surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a trail surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isTrailSurrogate(char char16) {
+        return (char16 & TRAIL_SURROGATE_BITMASK) == TRAIL_SURROGATE_BITS;
+    }
+
+    /**
+     * Determines whether the character is a lead surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a lead surrogate
+     * @stable ICU 2.1
+     */
+    public static boolean isLeadSurrogate(char char16) {
+        return (char16 & LEAD_SURROGATE_BITMASK) == LEAD_SURROGATE_BITS;
+    }
+
+    /**
+     * Returns the lead surrogate. If a validity check is required, use
+     * <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32
+     * before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return lead surrogate if the getCharCount(ch) is 2; <br>
+     *         and 0 otherwise (note: 0 is not a valid lead surrogate).
+     * @stable ICU 2.1
+     */
+    public static char getLeadSurrogate(int char32) {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            return (char) (LEAD_SURROGATE_OFFSET_ + (char32 >> LEAD_SURROGATE_SHIFT_));
+        }
+        return 0;
+    }
+
+    /**
+     * Returns the trail surrogate. If a validity check is required, use
+     * <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32
+     * before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return the trail surrogate if the getCharCount(ch) is 2; <br>
+     *         otherwise the character itself
+     * @stable ICU 2.1
+     */
+    public static char getTrailSurrogate(int char32) {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            return (char) (TRAIL_SURROGATE_MIN_VALUE + (char32 & TRAIL_SURROGATE_MASK_));
+        }
+        return (char) char32;
+    }
+
+    /**
+     * Convenience method corresponding to String.valueOf(char). Returns a one or two char string
+     * containing the UTF-32 value in UTF16 format. If a validity check is required, use <a
+     * href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32 before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return string value of char32 in UTF16 format
+     * @exception IllegalArgumentException
+     *                thrown if char32 is a invalid codepoint.
+     * @stable ICU 2.1
+     */
+    public static String valueOf(int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+        return toString(char32);
+    }
+
+    /**
+     * Convenience method corresponding to String.valueOf(codepoint at offset16). Returns a one or
+     * two char string containing the UTF-32 value in UTF16 format. If offset16 indexes a surrogate
+     * character, the whole supplementary codepoint will be returned. If a validity check is
+     * required, use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on the
+     * codepoint at offset16 before calling. The result returned will be a newly created String
+     * obtained by calling source.substring(..) with the appropriate indexes.
+     * 
+     * @param source
+     *            the input string.
+     * @param offset16
+     *            the UTF16 index to the codepoint in source
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(String source, int offset16) {
+        switch (bounds(source, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return source.substring(offset16, offset16 + 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return source.substring(offset16 - 1, offset16 + 1);
+        default:
+            return source.substring(offset16, offset16 + 1);
+        }
+    }
+
+    /**
+     * Convenience method corresponding to StringBuffer.valueOf(codepoint at offset16). Returns a
+     * one or two char string containing the UTF-32 value in UTF16 format. If offset16 indexes a
+     * surrogate character, the whole supplementary codepoint will be returned. If a validity check
+     * is required, use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on
+     * the codepoint at offset16 before calling. The result returned will be a newly created String
+     * obtained by calling source.substring(..) with the appropriate indexes.
+     * 
+     * @param source
+     *            the input string buffer.
+     * @param offset16
+     *            the UTF16 index to the codepoint in source
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(StringBuffer source, int offset16) {
+        switch (bounds(source, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return source.substring(offset16, offset16 + 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return source.substring(offset16 - 1, offset16 + 1);
+        default:
+            return source.substring(offset16, offset16 + 1);
+        }
+    }
+
+    /**
+     * Convenience method. Returns a one or two char string containing the UTF-32 value in UTF16
+     * format. If offset16 indexes a surrogate character, the whole supplementary codepoint will be
+     * returned, except when either the leading or trailing surrogate character lies out of the
+     * specified subarray. In the latter case, only the surrogate character within bounds will be
+     * returned. If a validity check is required, use <a
+     * href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on the codepoint at
+     * offset16 before calling. The result returned will be a newly created String containing the
+     * relevant characters.
+     * 
+     * @param source
+     *            the input char array.
+     * @param start
+     *            start index of the subarray
+     * @param limit
+     *            end index of the subarray
+     * @param offset16
+     *            the UTF16 index to the codepoint in source relative to start
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(char source[], int start, int limit, int offset16) {
+        switch (bounds(source, start, limit, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return new String(source, start + offset16, 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return new String(source, start + offset16 - 1, 2);
+        }
+        return new String(source, start + offset16, 1);
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 string
+     * @param offset32
+     *            UTF-32 offset
+     * @return UTF-16 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(String source, int offset32) {
+        char ch;
+        int size = source.length(), result = 0, count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0) {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size)
+                    && isTrailSurrogate(source.charAt(result + 1))) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 string buffer
+     * @param offset32
+     *            UTF-32 offset
+     * @return UTF-16 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(StringBuffer source, int offset32) {
+        char ch;
+        int size = source.length(), result = 0, count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0) {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size)
+                    && isTrailSurrogate(source.charAt(result + 1))) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 char array whose substring is to be analysed
+     * @param start
+     *            offset of the substring to be analysed
+     * @param limit
+     *            offset of the substring to be analysed
+     * @param offset32
+     *            UTF-32 offset relative to start
+     * @return UTF-16 offset relative to start
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(char source[], int start, int limit, int offset32) {
+        char ch;
+        int result = start, count = offset32;
+        if (offset32 > limit - start) {
+            throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        while (result < limit && count > 0) {
+            ch = source[result];
+            if (isLeadSurrogate(ch) && ((result + 1) < limit)
+                    && isTrailSurrogate(source[result + 1])) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        return result - start;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at or after the given
+     * UTF-16 offset. Used for random access. See the <a name="_top_">class description</a> for
+     * notes on roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a string, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source, source.length());
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset < source text length.
+     * @return UTF-32 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(String source, int offset16) {
+        if (offset16 < 0 || offset16 > source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = 0; i < offset16; ++i) {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == source.length()) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at the given UTF-16
+     * offset. Used for random access. See the <a name="_top_">class description</a> for notes on
+     * roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a string, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source);
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset < source text length.
+     * @return UTF-32 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(StringBuffer source, int offset16) {
+        if (offset16 < 0 || offset16 > source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = 0; i < offset16; ++i) {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == source.length()) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at the given UTF-16
+     * offset. Used for random access. See the <a name="_top_">class description</a> for notes on
+     * roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a substring, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source, start, limit);
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param start
+     *            offset of the substring
+     * @param limit
+     *            offset of the substring
+     * @param offset16
+     *            UTF-16 relative to start
+     * @return UTF-32 offset relative to start
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 > limit) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = start; i < offset16; ++i) {
+            ch = source[i];
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == limit) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source[offset16]))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Append a single UTF-32 value to the end of a StringBuffer. If a validity check is required,
+     * use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32 before
+     * calling.
+     * 
+     * @param target
+     *            the buffer to append to
+     * @param char32
+     *            value to append.
+     * @return the updated StringBuffer
+     * @exception IllegalArgumentException
+     *                thrown when char32 does not lie within the range of the Unicode codepoints
+     * @stable ICU 2.1
+     */
+    public static StringBuffer append(StringBuffer target, int char32) {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint: " + Integer.toHexString(char32));
+        }
+
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            target.append(getLeadSurrogate(char32));
+            target.append(getTrailSurrogate(char32));
+        } else {
+            target.append((char) char32);
+        }
+        return target;
+    }
+
+    /**
+     * Cover JDK 1.5 APIs. Append the code point to the buffer and return the buffer as a
+     * convenience.
+     * 
+     * @param target
+     *            the buffer to append to
+     * @param cp
+     *            the code point to append
+     * @return the updated StringBuffer
+     * @throws IllegalArgumentException
+     *             if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static StringBuffer appendCodePoint(StringBuffer target, int cp) {
+        return append(target, cp);
+    }
+
+    /**
+     * Adds a codepoint to offset16 position of the argument char array.
+     * 
+     * @param target
+     *            char array to be append with the new code point
+     * @param limit
+     *            UTF16 offset which the codepoint will be appended.
+     * @param char32
+     *            code point to be appended
+     * @return offset after char32 in the array.
+     * @exception IllegalArgumentException
+     *                thrown if there is not enough space for the append, or when char32 does not
+     *                lie within the range of the Unicode codepoints.
+     * @stable ICU 2.1
+     */
+    public static int append(char[] target, int limit, int char32) {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            target[limit++] = getLeadSurrogate(char32);
+            target[limit++] = getTrailSurrogate(char32);
+        } else {
+            target[limit++] = (char) char32;
+        }
+        return limit;
+    }
+
+    /**
+     * Number of codepoints in a UTF16 String
+     * 
+     * @param source
+     *            UTF16 string
+     * @return number of codepoint in string
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(String source) {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+
+    /**
+     * Number of codepoints in a UTF16 String buffer
+     * 
+     * @param source
+     *            UTF16 string buffer
+     * @return number of codepoint in string
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(StringBuffer source) {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+
+    /**
+     * Number of codepoints in a UTF16 char array substring
+     * 
+     * @param source
+     *            UTF16 char array
+     * @param start
+     *            offset of the substring
+     * @param limit
+     *            offset of the substring
+     * @return number of codepoint in the substring
+     * @exception IndexOutOfBoundsException
+     *                if start and limit are not valid.
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(char source[], int start, int limit) {
+        if (source == null || source.length == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, start, limit, limit - start);
+    }
+
+    /**
+     * Set a code point into a UTF16 position. Adjusts target according if we are replacing a
+     * non-supplementary codepoint with a supplementary and vice versa.
+     * 
+     * @param target
+     *            stringbuffer
+     * @param offset16
+     *            UTF16 position to insert into
+     * @param char32
+     *            code point
+     * @stable ICU 2.1
+     */
+    public static void setCharAt(StringBuffer target, int offset16, int char32) {
+        int count = 1;
+        char single = target.charAt(offset16);
+
+        if (isSurrogate(single)) {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length() > offset16 + 1)
+                    && isTrailSurrogate(target.charAt(offset16 + 1))) {
+                count++;
+            } else {
+                // pairs of the surrogate with offset16 at the trail char
+                // found
+                if (isTrailSurrogate(single) && (offset16 > 0)
+                        && isLeadSurrogate(target.charAt(offset16 - 1))) {
+                    offset16--;
+                    count++;
+                }
+            }
+        }
+        target.replace(offset16, offset16 + count, valueOf(char32));
+    }
+
+    /**
+     * Set a code point into a UTF16 position in a char array. Adjusts target according if we are
+     * replacing a non-supplementary codepoint with a supplementary and vice versa.
+     * 
+     * @param target
+     *            char array
+     * @param limit
+     *            numbers of valid chars in target, different from target.length. limit counts the
+     *            number of chars in target that represents a string, not the size of array target.
+     * @param offset16
+     *            UTF16 position to insert into
+     * @param char32
+     *            code point
+     * @return new number of chars in target that represents a string
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of range
+     * @stable ICU 2.1
+     */
+    public static int setCharAt(char target[], int limit, int offset16, int char32) {
+        if (offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        int count = 1;
+        char single = target[offset16];
+
+        if (isSurrogate(single)) {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length > offset16 + 1)
+                    && isTrailSurrogate(target[offset16 + 1])) {
+                count++;
+            } else {
+                // pairs of the surrogate with offset16 at the trail char
+                // found
+                if (isTrailSurrogate(single) && (offset16 > 0)
+                        && isLeadSurrogate(target[offset16 - 1])) {
+                    offset16--;
+                    count++;
+                }
+            }
+        }
+
+        String str = valueOf(char32);
+        int result = limit;
+        int strlength = str.length();
+        target[offset16] = str.charAt(0);
+        if (count == strlength) {
+            if (count == 2) {
+                target[offset16 + 1] = str.charAt(1);
+            }
+        } else {
+            // this is not exact match in space, we'll have to do some
+            // shifting
+            System.arraycopy(target, offset16 + count, target, offset16 + strlength, limit
+                    - (offset16 + count));
+            if (count < strlength) {
+                // char32 is a supplementary character trying to squeeze into
+                // a non-supplementary space
+                target[offset16 + 1] = str.charAt(1);
+                result++;
+                if (result < target.length) {
+                    target[result] = 0;
+                }
+            } else {
+                // char32 is a non-supplementary character trying to fill
+                // into a supplementary space
+                result--;
+                target[result] = 0;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints
+     * 
+     * @param source
+     *            string
+     * @param offset16
+     *            UTF16 position to shift
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(String source, int offset16, int shift32) {
+        int result = offset16;
+        int size = source.length();
+        int count;
+        char ch;
+        if (offset16 < 0 || offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + offset16 > size) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            count = shift32;
+            while (result < size && count > 0) {
+                ch = source.charAt(result);
+                if (isLeadSurrogate(ch) && ((result + 1) < size)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (offset16 + shift32 < 0) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < 0) {
+                    break;
+                }
+                ch = source.charAt(result);
+                if (isTrailSurrogate(ch) && result > 0
+                        && isLeadSurrogate(source.charAt(result - 1))) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints
+     * 
+     * @param source
+     *            string buffer
+     * @param offset16
+     *            UTF16 position to shift
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(StringBuffer source, int offset16, int shift32) {
+        int result = offset16;
+        int size = source.length();
+        int count;
+        char ch;
+        if (offset16 < 0 || offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + offset16 > size) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            count = shift32;
+            while (result < size && count > 0) {
+                ch = source.charAt(result);
+                if (isLeadSurrogate(ch) && ((result + 1) < size)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (offset16 + shift32 < 0) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < 0) {
+                    break;
+                }
+                ch = source.charAt(result);
+                if (isTrailSurrogate(ch) && result > 0
+                        && isLeadSurrogate(source.charAt(result - 1))) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints within a subarray.
+     * 
+     * @param source
+     *            char array
+     * @param start
+     *            position of the subarray to be performed on
+     * @param limit
+     *            position of the subarray to be performed on
+     * @param offset16
+     *            UTF16 position to shift relative to start
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16 relative to start
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds with respect to the subarray or the
+     *                subarray bounds are out of range.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(char source[], int start, int limit, int offset16,
+            int shift32) {
+        int size = source.length;
+        int count;
+        char ch;
+        int result = offset16 + start;
+        if (start < 0 || limit < start) {
+            throw new StringIndexOutOfBoundsException(start);
+        }
+        if (limit > size) {
+            throw new StringIndexOutOfBoundsException(limit);
+        }
+        if (offset16 < 0 || result > limit) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + result > size) {
+                throw new StringIndexOutOfBoundsException(result);
+            }
+            count = shift32;
+            while (result < limit && count > 0) {
+                ch = source[result];
+                if (isLeadSurrogate(ch) && (result + 1 < limit)
+                        && isTrailSurrogate(source[result + 1])) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (result + shift32 < start) {
+                throw new StringIndexOutOfBoundsException(result);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < start) {
+                    break;
+                }
+                ch = source[result];
+                if (isTrailSurrogate(ch) && result > start && isLeadSurrogate(source[result - 1])) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        result -= start;
+        return result;
+    }
+
+    /**
+     * Inserts char32 codepoint into target at the argument offset16. If the offset16 is in the
+     * middle of a supplementary codepoint, char32 will be inserted after the supplementary
+     * codepoint. The length of target increases by one if codepoint is non-supplementary, 2
+     * otherwise.
+     * <p>
+     * The overall effect is exactly as if the argument were converted to a string by the method
+     * valueOf(char) and the characters in that string were then inserted into target at the
+     * position indicated by offset16.
+     * </p>
+     * <p>
+     * The offset argument must be greater than or equal to 0, and less than or equal to the length
+     * of source.
+     * 
+     * @param target
+     *            string buffer to insert to
+     * @param offset16
+     *            offset which char32 will be inserted in
+     * @param char32
+     *            codepoint to be inserted
+     * @return a reference to target
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static StringBuffer insert(StringBuffer target, int offset16, int char32) {
+        String str = valueOf(char32);
+        if (offset16 != target.length() && bounds(target, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16++;
+        }
+        target.insert(offset16, str);
+        return target;
+    }
+
+    /**
+     * Inserts char32 codepoint into target at the argument offset16. If the offset16 is in the
+     * middle of a supplementary codepoint, char32 will be inserted after the supplementary
+     * codepoint. Limit increases by one if codepoint is non-supplementary, 2 otherwise.
+     * <p>
+     * The overall effect is exactly as if the argument were converted to a string by the method
+     * valueOf(char) and the characters in that string were then inserted into target at the
+     * position indicated by offset16.
+     * </p>
+     * <p>
+     * The offset argument must be greater than or equal to 0, and less than or equal to the limit.
+     * 
+     * @param target
+     *            char array to insert to
+     * @param limit
+     *            end index of the char array, limit <= target.length
+     * @param offset16
+     *            offset which char32 will be inserted in
+     * @param char32
+     *            codepoint to be inserted
+     * @return new limit size
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static int insert(char target[], int limit, int offset16, int char32) {
+        String str = valueOf(char32);
+        if (offset16 != limit && bounds(target, 0, limit, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16++;
+        }
+        int size = str.length();
+        if (limit + size > target.length) {
+            throw new ArrayIndexOutOfBoundsException(offset16 + size);
+        }
+        System.arraycopy(target, offset16, target, offset16 + size, limit - offset16);
+        target[offset16] = str.charAt(0);
+        if (size == 2) {
+            target[offset16 + 1] = str.charAt(1);
+        }
+        return limit + size;
+    }
+
+    /**
+     * Removes the codepoint at the specified position in this target (shortening target by 1
+     * character if the codepoint is a non-supplementary, 2 otherwise).
+     * 
+     * @param target
+     *            string buffer to remove codepoint from
+     * @param offset16
+     *            offset which the codepoint will be removed
+     * @return a reference to target
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static StringBuffer delete(StringBuffer target, int offset16) {
+        int count = 1;
+        switch (bounds(target, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            count++;
+            break;
+        case TRAIL_SURROGATE_BOUNDARY:
+            count++;
+            offset16--;
+            break;
+        }
+        target.delete(offset16, offset16 + count);
+        return target;
+    }
+
+    /**
+     * Removes the codepoint at the specified position in this target (shortening target by 1
+     * character if the codepoint is a non-supplementary, 2 otherwise).
+     * 
+     * @param target
+     *            string buffer to remove codepoint from
+     * @param limit
+     *            end index of the char array, limit <= target.length
+     * @param offset16
+     *            offset which the codepoint will be removed
+     * @return a new limit size
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static int delete(char target[], int limit, int offset16) {
+        int count = 1;
+        switch (bounds(target, 0, limit, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            count++;
+            break;
+        case TRAIL_SURROGATE_BOUNDARY:
+            count++;
+            offset16--;
+            break;
+        }
+        System.arraycopy(target, offset16 + count, target, offset16, limit - (offset16 + count));
+        target[limit - count] = 0;
+        return limit - count;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument codepoint. I.e., the smallest index <code>i</code> such that
+     * <code>UTF16.charAt(source, i) ==
+     * char32</code> is true.
+     * <p>
+     * If no such character occurs in this string, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", 'a') returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char) char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char) char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * If no such string str occurs in this source, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", "ab") returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, String str) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str);
+        }
+
+        int result = source.indexOf(str);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(resultEnd + 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument codepoint. I.e., the smallest index i such that: <br>
+     * (UTF16.charAt(source, i) == char32 && i >= fromIndex) is true.
+     * <p>
+     * If no such character occurs in this string, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", 'a', 1) returns -1<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0x10000, 1) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0xd800, 1) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @param fromIndex
+     *            the index to start the search from.
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string at
+     *         or after fromIndex, or -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, int char32, int fromIndex) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char) char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char) char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str, fromIndex);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * If no such string str occurs in this source, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", "ab", 0) returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 0) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 2) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800", 0) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @param fromIndex
+     *            the index to start the search from.
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, String str, int fromIndex) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str, fromIndex);
+        }
+
+        int result = source.indexOf(str, fromIndex);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(resultEnd))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument codepoint. I.e., the index returned is the largest value i such that:
+     * UTF16.charAt(source, i) == char32 is true.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", 'a') returns 0<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char) char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char) char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", "a") returns 0<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, String str) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str);
+        }
+
+        int result = source.lastIndexOf(str);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(result + strLength + 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * <p>
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument codepoint, where the result is less than or equals to fromIndex.
+     * </p>
+     * <p>
+     * This method is implemented based on codepoints, hence a single surrogate character will not
+     * match a supplementary character.
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character starting at the specified index.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", 'c', 2) returns 2<br>
+     * UTF16.lastIndexOf("abc", 'c', 1) returns -1<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 5) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 3) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @param fromIndex
+     *            the index to start the search from. There is no restriction on the value of
+     *            fromIndex. If it is greater than or equal to the length of this string, it has the
+     *            same effect as if it were equal to one less than the length of this string: this
+     *            entire string may be searched. If it is negative, it has the same effect as if it
+     *            were -1: -1 is returned.
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, int char32, int fromIndex) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char) char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char) char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str, fromIndex);
+    }
+
+    /**
+     * <p>
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument string str, where the result is less than or equals to fromIndex.
+     * </p>
+     * <p>
+     * This method is implemented based on codepoints, hence a "lead surrogate character + trail
+     * surrogate character" is treated as one entity. Hence if the str starts with trail surrogate
+     * character at index 0, a source with a leading a surrogate character before str found at in
+     * source will not have a valid match. Vice versa for lead surrogates that ends str.
+     * </p>
+     * See example below.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", "c", 2) returns 2<br>
+     * UTF16.lastIndexOf("abc", "c", 1) returns -1<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 5) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 3) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800", 4) returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @param fromIndex
+     *            the index to start the search from. There is no restriction on the value of
+     *            fromIndex. If it is greater than or equal to the length of this string, it has the
+     *            same effect as if it were equal to one less than the length of this string: this
+     *            entire string may be searched. If it is negative, it has the same effect as if it
+     *            were -1: -1 is returned.
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, String str, int fromIndex) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str, fromIndex);
+        }
+
+        int result = source.lastIndexOf(str, fromIndex);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(result + strLength))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns a new UTF16 format Unicode string resulting from replacing all occurrences of
+     * oldChar32 in source with newChar32. If the character oldChar32 does not occur in the UTF16
+     * format Unicode string source, then source will be returned. Otherwise, a new String object is
+     * created that represents a codepoint sequence identical to the codepoint sequence represented
+     * by source, except that every occurrence of oldChar32 is replaced by an occurrence of
+     * newChar32.
+     * <p>
+     * Examples: <br>
+     * UTF16.replace("mesquite in your cellar", 'e', 'o');<br>
+     * returns "mosquito in your collar"<br>
+     * UTF16.replace("JonL", 'q', 'x');<br>
+     * returns "JonL" (no change)<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", 0x10000, '!'); <br>
+     * returns "Supplementary character !"<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", 0xd800, '!'); <br>
+     * returns "Supplementary character \ud800\udc00"<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string which the codepoint replacements will be based on.
+     * @param oldChar32
+     *            non-zero old codepoint to be replaced.
+     * @param newChar32
+     *            the new codepoint to replace oldChar32
+     * @return new String derived from source by replacing every occurrence of oldChar32 with
+     *         newChar32, unless when no oldChar32 is found in source then source will be returned.
+     * @stable ICU 2.6
+     */
+    public static String replace(String source, int oldChar32, int newChar32) {
+        if (oldChar32 <= 0 || oldChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument oldChar32 is not a valid codepoint");
+        }
+        if (newChar32 <= 0 || newChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument newChar32 is not a valid codepoint");
+        }
+
+        int index = indexOf(source, oldChar32);
+        if (index == -1) {
+            return source;
+        }
+        String newChar32Str = toString(newChar32);
+        int oldChar32Size = 1;
+        int newChar32Size = newChar32Str.length();
+        StringBuffer result = new StringBuffer(source);
+        int resultIndex = index;
+
+        if (oldChar32 >= SUPPLEMENTARY_MIN_VALUE) {
+            oldChar32Size = 2;
+        }
+
+        while (index != -1) {
+            int endResultIndex = resultIndex + oldChar32Size;
+            result.replace(resultIndex, endResultIndex, newChar32Str);
+            int lastEndIndex = index + oldChar32Size;
+            index = indexOf(source, oldChar32, lastEndIndex);
+            resultIndex += newChar32Size + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Returns a new UTF16 format Unicode string resulting from replacing all occurrences of oldStr
+     * in source with newStr. If the string oldStr does not occur in the UTF16 format Unicode string
+     * source, then source will be returned. Otherwise, a new String object is created that
+     * represents a codepoint sequence identical to the codepoint sequence represented by source,
+     * except that every occurrence of oldStr is replaced by an occurrence of newStr.
+     * <p>
+     * Examples: <br>
+     * UTF16.replace("mesquite in your cellar", "e", "o");<br>
+     * returns "mosquito in your collar"<br>
+     * UTF16.replace("mesquite in your cellar", "mesquite", "cat");<br>
+     * returns "cat in your cellar"<br>
+     * UTF16.replace("JonL", "q", "x");<br>
+     * returns "JonL" (no change)<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", "\ud800\udc00", '!'); <br>
+     * returns "Supplementary character !"<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", "\ud800", '!'); <br>
+     * returns "Supplementary character \ud800\udc00"<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string which the replacements will be based on.
+     * @param oldStr
+     *            non-zero-length string to be replaced.
+     * @param newStr
+     *            the new string to replace oldStr
+     * @return new String derived from source by replacing every occurrence of oldStr with newStr.
+     *         When no oldStr is found in source, then source will be returned.
+     * @stable ICU 2.6
+     */
+    public static String replace(String source, String oldStr, String newStr) {
+        int index = indexOf(source, oldStr);
+        if (index == -1) {
+            return source;
+        }
+        int oldStrSize = oldStr.length();
+        int newStrSize = newStr.length();
+        StringBuffer result = new StringBuffer(source);
+        int resultIndex = index;
+
+        while (index != -1) {
+            int endResultIndex = resultIndex + oldStrSize;
+            result.replace(resultIndex, endResultIndex, newStr);
+            int lastEndIndex = index + oldStrSize;
+            index = indexOf(source, oldStr, lastEndIndex);
+            resultIndex += newStrSize + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Reverses a UTF16 format Unicode string and replaces source's content with it. This method
+     * will reverse surrogate characters correctly, instead of blindly reversing every character.
+     * <p>
+     * Examples:<br>
+     * UTF16.reverse(new StringBuffer( "Supplementary characters \ud800\udc00\ud801\udc01"))<br>
+     * returns "\ud801\udc01\ud800\udc00 sretcarahc yratnemelppuS".
+     * 
+     * @param source
+     *            the source StringBuffer that contains UTF16 format Unicode string to be reversed
+     * @return a modified source with reversed UTF16 format Unicode string.
+     * @stable ICU 2.6
+     */
+    public static StringBuffer reverse(StringBuffer source) {
+        int length = source.length();
+        StringBuffer result = new StringBuffer(length);
+        for (int i = length; i-- > 0;) {
+            char ch = source.charAt(i);
+            if (isTrailSurrogate(ch) && i > 0) {
+                char ch2 = source.charAt(i - 1);
+                if (isLeadSurrogate(ch2)) {
+                    result.append(ch2);
+                    result.append(ch);
+                    --i;
+                    continue;
+                }
+            }
+            result.append(ch);
+        }
+        return result;
+    }
+
+    /**
+     * Check if the string contains more Unicode code points than a certain number. This is more
+     * efficient than counting all code points in the entire string and comparing that number with a
+     * threshold. This function may not need to scan the string at all if the length is within a
+     * certain range, and never needs to count more than 'number + 1' code points. Logically
+     * equivalent to (countCodePoint(s) > number). A Unicode code point may occupy either one or two
+     * code units.
+     * 
+     * @param source
+     *            The input string.
+     * @param number
+     *            The number of code points in the string is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string contains more Unicode code points than 'number'.
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(String source, int number) {
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+        int length = source.length();
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        int start = 0;
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source.charAt(start++)) && start != length
+                    && isTrailSurrogate(source.charAt(start))) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Check if the sub-range of char array, from argument start to limit, contains more Unicode
+     * code points than a certain number. This is more efficient than counting all code points in
+     * the entire char array range and comparing that number with a threshold. This function may not
+     * need to scan the char array at all if start and limit is within a certain range, and never
+     * needs to count more than 'number + 1' code points. Logically equivalent to
+     * (countCodePoint(source, start, limit) > number). A Unicode code point may occupy either one
+     * or two code units.
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param number
+     *            The number of code points in the string is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string contains more Unicode code points than 'number'.
+     * @exception IndexOutOfBoundsException
+     *                thrown when limit &lt; start
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(char source[], int start, int limit, int number) {
+        int length = limit - start;
+        if (length < 0 || start < 0 || limit < 0) {
+            throw new IndexOutOfBoundsException(
+                    "Start and limit indexes should be non-negative and start <= limit");
+        }
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source[start++]) && start != limit
+                    && isTrailSurrogate(source[start])) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Check if the string buffer contains more Unicode code points than a certain number. This is
+     * more efficient than counting all code points in the entire string buffer and comparing that
+     * number with a threshold. This function may not need to scan the string buffer at all if the
+     * length is within a certain range, and never needs to count more than 'number + 1' code
+     * points. Logically equivalent to (countCodePoint(s) > number). A Unicode code point may occupy
+     * either one or two code units.
+     * 
+     * @param source
+     *            The input string buffer.
+     * @param number
+     *            The number of code points in the string buffer is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string buffer contains more Unicode code points than
+     *         'number'.
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(StringBuffer source, int number) {
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+        int length = source.length();
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        int start = 0;
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source.charAt(start++)) && start != length
+                    && isTrailSurrogate(source.charAt(start))) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Cover JDK 1.5 API. Create a String from an array of codePoints.
+     * 
+     * @param codePoints
+     *            the code array
+     * @param offset
+     *            the start of the text in the code point array
+     * @param count
+     *            the number of code points
+     * @return a String representing the code points between offset and count
+     * @throws IllegalArgumentException
+     *             if an invalid code point is encountered
+     * @throws IndexOutOfBoundsException
+     *             if the offset or count are out of bounds.
+     * @stable ICU 3.0
+     */
+    public static String newString(int[] codePoints, int offset, int count) {
+        if (count < 0) {
+            throw new IllegalArgumentException();
+        }
+        char[] chars = new char[count];
+        int w = 0;
+        for (int r = offset, e = offset + count; r < e; ++r) {
+            int cp = codePoints[r];
+            if (cp < 0 || cp > 0x10ffff) {
+                throw new IllegalArgumentException();
+            }
+            while (true) {
+                try {
+                    if (cp < 0x010000) {
+                        chars[w] = (char) cp;
+                        w++;
+                    } else {
+                        chars[w] = (char) (LEAD_SURROGATE_OFFSET_ + (cp >> LEAD_SURROGATE_SHIFT_));
+                        chars[w + 1] = (char) (TRAIL_SURROGATE_MIN_VALUE + (cp & TRAIL_SURROGATE_MASK_));
+                        w += 2;
+                    }
+                    break;
+                } catch (IndexOutOfBoundsException ex) {
+                    int newlen = (int) (Math.ceil((double) codePoints.length * (w + 2)
+                            / (r - offset + 1)));
+                    char[] temp = new char[newlen];
+                    System.arraycopy(chars, 0, temp, 0, w);
+                    chars = temp;
+                }
+            }
+        }
+        return new String(chars, 0, w);
+    }
+
+    /**
+     * <p>
+     * UTF16 string comparator class. Allows UTF16 string comparison to be done with the various
+     * modes
+     * </p>
+     * <ul>
+     * <li> Code point comparison or code unit comparison
+     * <li> Case sensitive comparison, case insensitive comparison or case insensitive comparison
+     * with special handling for character 'i'.
+     * </ul>
+     * <p>
+     * The code unit or code point comparison differ only when comparing supplementary code points
+     * (&#92;u10000..&#92;u10ffff) to BMP code points near the end of the BMP (i.e.,
+     * &#92;ue000..&#92;uffff). In code unit comparison, high BMP code points sort after
+     * supplementary code points because they are stored as pairs of surrogates which are at
+     * &#92;ud800..&#92;udfff.
+     * </p>
+     * 
+     * @see #FOLD_CASE_DEFAULT
+     * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+     * @stable ICU 2.1
+     */
+    public static final class StringComparator implements java.util.Comparator {
+        // public constructor ------------------------------------------------
+
+        /**
+         * Default constructor that does code unit comparison and case sensitive comparison.
+         * 
+         * @stable ICU 2.1
+         */
+        public StringComparator() {
+            this(false, false, FOLD_CASE_DEFAULT);
+        }
+
+        /**
+         * Constructor that does comparison based on the argument options.
+         * 
+         * @param codepointcompare
+         *            flag to indicate true for code point comparison or false for code unit
+         *            comparison.
+         * @param ignorecase
+         *            false for case sensitive comparison, true for case-insensitive comparison
+         * @param foldcaseoption
+         *            FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only
+         *            when ignorecase is set to true. If ignorecase is false, this option is
+         *            ignored.
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @throws IllegalArgumentException
+         *             if foldcaseoption is out of range
+         * @stable ICU 2.4
+         */
+        public StringComparator(boolean codepointcompare, boolean ignorecase, int foldcaseoption) {
+            setCodePointCompare(codepointcompare);
+            m_ignoreCase_ = ignorecase;
+            if (foldcaseoption < FOLD_CASE_DEFAULT || foldcaseoption > FOLD_CASE_EXCLUDE_SPECIAL_I) {
+                throw new IllegalArgumentException("Invalid fold case option");
+            }
+            m_foldCase_ = foldcaseoption;
+        }
+
+        // public data member ------------------------------------------------
+
+        /**
+         * <p>
+         * Option value for case folding comparison:
+         * </p>
+         * <p>
+         * Comparison is case insensitive, strings are folded using default mappings defined in
+         * Unicode data file CaseFolding.txt, before comparison.
+         * </p>
+         * 
+         * @stable ICU 2.4
+         */
+        public static final int FOLD_CASE_DEFAULT = 0;
+
+        /**
+         * <p>
+         * Option value for case folding comparison:
+         * </p>
+         * <p>
+         * Comparison is case insensitive, strings are folded using modified mappings defined in
+         * Unicode data file CaseFolding.txt, before comparison.
+         * </p>
+         * <p>
+         * The modified set of mappings is provided in a Unicode data file CaseFolding.txt to handle
+         * dotted I and dotless i appropriately for Turkic languages (tr, az).
+         * </p>
+         * <p>
+         * Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that are to be
+         * included for default mappings and excluded for the Turkic-specific mappings.
+         * </p>
+         * <p>
+         * Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that are to be
+         * excluded for default mappings and included for the Turkic-specific mappings.
+         * </p>
+         * 
+         * @stable ICU 2.4
+         */
+        public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1;
+
+        // public methods ----------------------------------------------------
+
+        // public setters ----------------------------------------------------
+
+        /**
+         * Sets the comparison mode to code point compare if flag is true. Otherwise comparison mode
+         * is set to code unit compare
+         * 
+         * @param flag
+         *            true for code point compare, false for code unit compare
+         * @stable ICU 2.4
+         */
+        public void setCodePointCompare(boolean flag) {
+            if (flag) {
+                m_codePointCompare_ = Normalizer.COMPARE_CODE_POINT_ORDER;
+            } else {
+                m_codePointCompare_ = 0;
+            }
+        }
+
+        /**
+         * Sets the Comparator to case-insensitive comparison mode if argument is true, otherwise
+         * case sensitive comparison mode if set to false.
+         * 
+         * @param ignorecase
+         *            true for case-insitive comparison, false for case sensitive comparison
+         * @param foldcaseoption
+         *            FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only
+         *            when ignorecase is set to true. If ignorecase is false, this option is
+         *            ignored.
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @stable ICU 2.4
+         */
+        public void setIgnoreCase(boolean ignorecase, int foldcaseoption) {
+            m_ignoreCase_ = ignorecase;
+            if (foldcaseoption < FOLD_CASE_DEFAULT || foldcaseoption > FOLD_CASE_EXCLUDE_SPECIAL_I) {
+                throw new IllegalArgumentException("Invalid fold case option");
+            }
+            m_foldCase_ = foldcaseoption;
+        }
+
+        // public getters ----------------------------------------------------
+
+        /**
+         * Checks if the comparison mode is code point compare.
+         * 
+         * @return true for code point compare, false for code unit compare
+         * @stable ICU 2.4
+         */
+        public boolean getCodePointCompare() {
+            return m_codePointCompare_ == Normalizer.COMPARE_CODE_POINT_ORDER;
+        }
+
+        /**
+         * Checks if Comparator is in the case insensitive mode.
+         * 
+         * @return true if Comparator performs case insensitive comparison, false otherwise
+         * @stable ICU 2.4
+         */
+        public boolean getIgnoreCase() {
+            return m_ignoreCase_;
+        }
+
+        /**
+         * Gets the fold case options set in Comparator to be used with case insensitive comparison.
+         * 
+         * @return either FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @stable ICU 2.4
+         */
+        public int getIgnoreCaseOption() {
+            return m_foldCase_;
+        }
+
+        // public other methods ----------------------------------------------
+
+        /**
+         * Compare two strings depending on the options selected during construction.
+         * 
+         * @param a
+         *            first source string.
+         * @param b
+         *            second source string.
+         * @return 0 returned if a == b. If a < b, a negative value is returned. Otherwise if a > b,
+         *         a positive value is returned.
+         * @exception ClassCastException
+         *                thrown when either a or b is not a String object
+         * @stable ICU 2.4
+         */
+        public int compare(Object a, Object b) {
+            String str1 = (String) a;
+            String str2 = (String) b;
+
+            if (str1 == str2) {
+                return 0;
+            }
+            if (str1 == null) {
+                return -1;
+            }
+            if (str2 == null) {
+                return 1;
+            }
+
+            if (m_ignoreCase_) {
+                return compareCaseInsensitive(str1, str2);
+            }
+            return compareCaseSensitive(str1, str2);
+        }
+
+        // private data member ----------------------------------------------
+
+        /**
+         * Code unit comparison flag. True if code unit comparison is required. False if code point
+         * comparison is required.
+         */
+        private int m_codePointCompare_;
+
+        /**
+         * Fold case comparison option.
+         */
+        private int m_foldCase_;
+
+        /**
+         * Flag indicator if ignore case is to be used during comparison
+         */
+        private boolean m_ignoreCase_;
+
+        /**
+         * Code point order offset for surrogate characters
+         */
+        private static final int CODE_POINT_COMPARE_SURROGATE_OFFSET_ = 0x2800;
+
+        // private method ---------------------------------------------------
+
+        /**
+         * Compares case insensitive. This is a direct port of ICU4C, to make maintainence life
+         * easier.
+         * 
+         * @param s1
+         *            first string to compare
+         * @param s2
+         *            second string to compare
+         * @return -1 is s1 &lt; s2, 0 if equals,
+         */
+        private int compareCaseInsensitive(String s1, String s2) {
+            return NormalizerImpl.cmpEquivFold(s1, s2, m_foldCase_ | m_codePointCompare_
+                    | Normalizer.COMPARE_IGNORE_CASE);
+        }
+
+        /**
+         * Compares case sensitive. This is a direct port of ICU4C, to make maintainence life
+         * easier.
+         * 
+         * @param s1
+         *            first string to compare
+         * @param s2
+         *            second string to compare
+         * @return -1 is s1 &lt; s2, 0 if equals,
+         */
+        private int compareCaseSensitive(String s1, String s2) {
+            // compare identical prefixes - they do not need to be fixed up
+            // limit1 = start1 + min(lenght1, length2)
+            int length1 = s1.length();
+            int length2 = s2.length();
+            int minlength = length1;
+            int result = 0;
+            if (length1 < length2) {
+                result = -1;
+            } else if (length1 > length2) {
+                result = 1;
+                minlength = length2;
+            }
+
+            char c1 = 0;
+            char c2 = 0;
+            int index = 0;
+            for (; index < minlength; index++) {
+                c1 = s1.charAt(index);
+                c2 = s2.charAt(index);
+                // check pseudo-limit
+                if (c1 != c2) {
+                    break;
+                }
+            }
+
+            if (index == minlength) {
+                return result;
+            }
+
+            boolean codepointcompare = m_codePointCompare_ == Normalizer.COMPARE_CODE_POINT_ORDER;
+            // if both values are in or above the surrogate range, fix them up
+            if (c1 >= LEAD_SURROGATE_MIN_VALUE && c2 >= LEAD_SURROGATE_MIN_VALUE
+                    && codepointcompare) {
+                // subtract 0x2800 from BMP code points to make them smaller
+                // than supplementary ones
+                if ((c1 <= LEAD_SURROGATE_MAX_VALUE && (index + 1) != length1 && isTrailSurrogate(s1.charAt(index + 1)))
+                        || (isTrailSurrogate(c1) && index != 0 && isLeadSurrogate(s1.charAt(index - 1)))) {
+                    // part of a surrogate pair, leave >=d800
+                } else {
+                    // BMP code point - may be surrogate code point - make
+                    // < d800
+                    c1 -= CODE_POINT_COMPARE_SURROGATE_OFFSET_;
+                }
+
+                if ((c2 <= LEAD_SURROGATE_MAX_VALUE && (index + 1) != length2 && isTrailSurrogate(s2.charAt(index + 1)))
+                        || (isTrailSurrogate(c2) && index != 0 && isLeadSurrogate(s2.charAt(index - 1)))) {
+                    // part of a surrogate pair, leave >=d800
+                } else {
+                    // BMP code point - may be surrogate code point - make <d800
+                    c2 -= CODE_POINT_COMPARE_SURROGATE_OFFSET_;
+                }
+            }
+
+            // now c1 and c2 are in UTF-32-compatible order
+            return c1 - c2;
+        }
+    }
+
+    // private data members -------------------------------------------------
+
+    /**
+     * Shift value for lead surrogate to form a supplementary character.
+     */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+
+    /**
+     * Mask to retrieve the significant value from a trail surrogate.
+     */
+    private static final int TRAIL_SURROGATE_MASK_ = 0x3FF;
+
+    /**
+     * Value that all lead surrogate starts with
+     */
+    private static final int LEAD_SURROGATE_OFFSET_ = LEAD_SURROGATE_MIN_VALUE
+            - (SUPPLEMENTARY_MIN_VALUE >> LEAD_SURROGATE_SHIFT_);
+
+    // private methods ------------------------------------------------------
+
+    /**
+     * <p>
+     * Converts argument code point and returns a String object representing the code point's value
+     * in UTF16 format.
+     * </p>
+     * <p>
+     * This method does not check for the validity of the codepoint, the results are not guaranteed
+     * if a invalid codepoint is passed as argument.
+     * </p>
+     * <p>
+     * The result is a string whose length is 1 for non-supplementary code points, 2 otherwise.
+     * </p>
+     * 
+     * @param ch
+     *            code point
+     * @return string representation of the code point
+     */
+    private static String toString(int ch) {
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char) ch);
+        }
+
+        StringBuffer result = new StringBuffer();
+        result.append(getLeadSurrogate(ch));
+        result.append(getTrailSurrogate(ch));
+        return result.toString();
+    }
+}
+// eof
diff --git a/src/com/ibm/icu/text/UnescapeTransliterator.java b/src/com/ibm/icu/text/UnescapeTransliterator.java
new file mode 100644
index 0000000..b914d1e
--- /dev/null
+++ b/src/com/ibm/icu/text/UnescapeTransliterator.java
@@ -0,0 +1,251 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that converts Unicode escape forms to the
+ * characters they represent.  Escape forms have a prefix, a suffix, a
+ * radix, and minimum and maximum digit counts.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ */
+class UnescapeTransliterator extends Transliterator {
+
+    /**
+     * The encoded pattern specification.  The pattern consists of
+     * zero or more forms.  Each form consists of a prefix, suffix,
+     * radix, minimum digit count, and maximum digit count.  These
+     * values are stored as a five character header.  That is, their
+     * numeric values are cast to 16-bit characters and stored in the
+     * string.  Following these five characters, the prefix
+     * characters, then suffix characters are stored.  Each form thus
+     * takes n+5 characters, where n is the total length of the prefix
+     * and suffix.  The end is marked by a header of length one
+     * consisting of the character END.
+     */
+    private char spec[];
+
+    /**
+     * Special character marking the end of the spec[] array.
+     */
+    private static final char END = 0xFFFF;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Hex-Any/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Unicode", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',
+                    END
+                });
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Hex-Any/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Java", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    END
+                });
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Hex-Any/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/C", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    2, 0, 16, 8, 8, '\\', 'U',
+                    END
+                });
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML", new char[] {
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',
+                    END
+                });
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Hex-Any")
+        Transliterator.registerFactory("Hex-Any/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML10", new char[] {
+                    2, 1, 10, 1, 7, '&', '#', ';',
+                    END
+                });
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Perl", new char[] {
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}',
+                    END
+                });
+            }
+        });
+
+        // All: Java, C, Perl, XML, XML10, Unicode
+        Transliterator.registerFactory("Hex-Any", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',            // Unicode
+                    2, 0, 16, 4, 4, '\\', 'u',           // Java
+                    2, 0, 16, 8, 8, '\\', 'U',           // C (surrogates)
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',  // XML
+                    2, 1, 10, 1, 7, '&', '#', ';',       // XML10
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}', // Perl
+                    END
+                });
+            }
+        });
+    }
+
+    /**
+     * Package private constructor.  Takes the encoded spec array.
+     */
+    UnescapeTransliterator(String ID, char spec[]) {
+        super(ID, null);
+        this.spec = spec;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+        int i, j, ipat;
+
+      loop:
+        while (start < limit) {
+            // Loop over the forms in spec[].  Exit this loop when we
+            // match one of the specs.  Exit the outer loop if a
+            // partial match is detected and isIncremental is true.
+            for (j=0, ipat=0; spec[ipat] != END; ++j) {
+
+                // Read the header
+                int prefixLen = spec[ipat++];
+                int suffixLen = spec[ipat++];
+                int radix     = spec[ipat++];
+                int minDigits = spec[ipat++];
+                int maxDigits = spec[ipat++];
+
+                // s is a copy of start that is advanced over the
+                // characters as we parse them.
+                int s = start;
+                boolean match = true;
+
+                for (i=0; i<prefixLen; ++i) {
+                    if (s >= limit) {
+                        if (i > 0) {
+                            // We've already matched a character.  This is
+                            // a partial match, so we return if in
+                            // incremental mode.  In non-incremental mode,
+                            // go to the next spec.
+                            if (isIncremental) {
+                                break loop;
+                            }
+                            match = false;
+                            break;
+                        }
+                    }
+                    char c = text.charAt(s++);
+                    if (c != spec[ipat + i]) {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match) {
+                    int u = 0;
+                    int digitCount = 0;
+                    for (;;) {
+                        if (s >= limit) {
+                            // Check for partial match in incremental mode.
+                            if (s > start && isIncremental) {
+                                break loop;
+                            }
+                            break;
+                        }
+                        int ch = text.char32At(s);
+                        int digit = UCharacter.digit(ch, radix);
+                        if (digit < 0) {
+                            break;
+                        }
+                        s += UTF16.getCharCount(ch);
+                        u = (u * radix) + digit;
+                        if (++digitCount == maxDigits) {
+                            break;
+                        }
+                    }
+
+                    match = (digitCount >= minDigits);
+
+                    if (match) {
+                        for (i=0; i<suffixLen; ++i) {
+                            if (s >= limit) {
+                                // Check for partial match in incremental mode.
+                                if (s > start && isIncremental) {
+                                    break loop;
+                                }
+                                match = false;
+                                break;
+                            }
+                            char c = text.charAt(s++);
+                            if (c != spec[ipat + prefixLen + i]) {
+                                match = false;
+                                break;
+                            }
+                        }
+
+                        if (match) {
+                            // At this point, we have a match
+                            String str = UTF16.valueOf(u);
+                            text.replace(start, s, str);
+                            limit -= s - start - str.length();
+                            // The following break statement leaves the
+                            // loop that is traversing the forms in
+                            // spec[].  We then parse the next input
+                            // character.
+                            break;
+                        }
+                    }
+                }
+
+                ipat += prefixLen + suffixLen;
+            }
+
+            if (start < limit) {
+                start += UTF16.getCharCount(text.char32At(start));
+            }
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeCompressor.java b/src/com/ibm/icu/text/UnicodeCompressor.java
new file mode 100644
index 0000000..bb1b2fb
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeCompressor.java
@@ -0,0 +1,1006 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+* A compression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P>The SCSU works by using dynamically positioned <EM>windows</EM>
+* consisting of 128 consecutive characters in Unicode.  During compression, 
+* characters within a window are encoded in the compressed stream as the bytes 
+* <TT>0x7F - 0xFF</TT>. The SCSU provides transparency for the characters 
+* (bytes) between <TT>U+0000 - U+00FF</TT>.  The SCSU approximates the 
+* storage size of traditional character sets, for example 1 byte per
+* character for ASCII or Latin-1 text, and 2 bytes per character for CJK
+* ideographs.</P>
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeCompressor</TT> may be used in a
+* straightforward manner to compress simple strings:</P>
+*
+* <PRE>
+*  String s = ... ; // get string from somewhere
+*  byte [] compressed = UnicodeCompressor.compress(s);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeCompressor</TT> offers more powerful APIs allowing
+* iterative compression:</P>
+*
+* <PRE>
+*  // Compress an array "chars" of length "len" using a buffer of 512 bytes
+*  // to the OutputStream "out"
+*
+*  UnicodeCompressor myCompressor         = new UnicodeCompressor();
+*  final static int  BUFSIZE              = 512;
+*  byte []           byteBuffer           = new byte [ BUFSIZE ];
+*  int               bytesWritten         = 0;
+*  int []            unicharsRead         = new int [1];
+*  int               totalCharsCompressed = 0;
+*  int               totalBytesWritten    = 0;
+*
+*  do {
+*    // do the compression
+*    bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+*                                         len, unicharsRead,
+*                                         byteBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of bytes
+*    out.write(byteBuffer, 0, bytesWritten);
+*
+*    // update the no. of characters compressed
+*    totalCharsCompressed += unicharsRead[0];
+*
+*    // update the no. of bytes written
+*    totalBytesWritten += bytesWritten;
+*
+*  } while(totalCharsCompressed < len);
+*
+*  myCompressor.reset(); // reuse compressor
+* </PRE>
+*
+* @see UnicodeDecompressor
+*
+* @author Stephen F. Booth
+* @stable ICU 2.4
+*/
+
+/*
+*
+* COMPRESSION STRATEGY
+*
+* Single Byte Mode
+*
+* There are three relevant cases.
+* If the character is in the current window or is Latin-1 (U+0000,
+* U+0009, U+000A, U+000D, U+0020 - U+007F), the character is placed
+* directly in the stream as a single byte.
+*
+*  1. Current character is in defined, inactive window.
+*  2. Current character is in undefined window.
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF).
+* 
+*  1. Current character is in defined, inactive window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       switch to defined window
+*    C. If only next character is in same window as current character, 
+*       quote defined window
+*    D. If neither of following characters is in same window as current, 
+*       quote defined window
+*   
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       define new window
+*    C. If only next character in same window as current character, 
+*       switch to Unicode mode
+*       NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with
+*        more characters in it.
+*    D. If neither of following characters in same window as current, 
+*       switch to Unicode mode.  Alternative to above: just quote 
+*       Unicode (same byte cost)
+*   
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF)
+*    A. Look ahead one character
+*    B. If next character in non-compressible region, switch to 
+*       Unicode mode
+*    C. If next character not in non-compressible region, quote Unicode
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   SINGLE BYTE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none (in current window)    1       2       3       4
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  switch to Unicode           3       5       7       9     byte
+*   defined     define window               3       4       5       6     cost
+*      
+*   window      switch to window            2       3       4       5
+*   defined     quote window                2       4       6       8
+*
+*  Unicode Mode
+*
+* There are two relevant cases.
+* If the character is in the non-compressible region
+* (U+3400 - U+DFFF), the character is simply written to the
+* stream as a pair of bytes.
+*
+* 1. Current character is in defined, inactive window.
+* 2. Current character is in undefined window.
+*
+*  1.Current character is in defined, inactive window
+*    A. Look ahead one character
+*    B. If next character has same index as current character, 
+*       switch to defined window (and switch to single-byte mode)
+*    C. If not, just put bytes in stream
+*   
+*  
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both in same window as current character, define window 
+*       (and switch to single-byte mode)
+*    C. If only next character in same window, just put bytes in stream
+*        NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with 
+*        more characters in it.
+*    D. If neither in same window, put bytes in stream
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   UNICODE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none                        2       4       6       8
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  define window               3       4       5       6     byte
+*   defined                                                               cost
+*   window      switch to window            2       3       4       5
+*   defined
+*/
+public final class UnicodeCompressor implements SCSU
+{
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For quick identification of a byte as a single-byte mode tag */
+    private static boolean [] sSingleTagTable = {
+        // table generated by CompressionTableGenerator
+        false, true, true, true, true, true, true, true, true, false,
+    false, true, true, false, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true,
+    true, true, false, false, false, false, false, false,false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false   
+    };
+
+    /** For quick identification of a byte as a unicode mode tag */
+    private static boolean [] sUnicodeTagTable = {
+        // table generated by CompressionTableGenerator
+        false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, true,
+    true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false 
+    };
+
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Keeps count of times character indices are encountered */
+    private int []    fIndexCount      = new int [ MAXINDEX + 1 ];
+
+    /** The time stamps indicate when a window was last defined */
+    private int []    fTimeStamps      = new int [ NUMWINDOWS ];
+    
+    /** The current time stamp */
+    private int       fTimeStamp       = 0;
+    
+
+    /**
+     * Create a UnicodeCompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     * @stable ICU 2.4
+     */
+    public UnicodeCompressor()
+    {
+    reset();              // initialize to defaults
+    }
+
+    /**
+     * Compress a string into a byte array.
+     * @param buffer The string to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(char [], int, int)
+     * @stable ICU 2.4
+     */
+    public static byte [] compress(String buffer)
+    {
+    return compress(buffer.toCharArray(), 0, buffer.length());
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     * @param buffer The character buffer to compress.
+     * @param start The start of the character run to compress.
+     * @param limit The limit of the character run to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(String)
+     * @stable ICU 2.4
+     */
+    public static byte [] compress(char [] buffer,
+                   int start,
+                   int limit)
+    {
+    UnicodeCompressor comp = new UnicodeCompressor();
+
+    // use a buffer that we know will never overflow
+    // in the worst case, each character will take 3 bytes
+    // to encode: UQU, hibyte, lobyte.  In this case, the
+    // compressed data will look like: SCU, UQU, hibyte, lobyte, ...
+    // buffer must be at least 4 bytes in size
+    int len = Math.max(4, 3 * (limit - start) + 1);
+    byte [] temp = new byte [len];
+
+    int byteCount = comp.compress(buffer, start, limit, null, 
+                      temp, 0, len);
+
+    byte [] result = new byte [byteCount];
+    System.arraycopy(temp, 0, result, 0, byteCount);
+    return result;
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     *
+     * This function will only consume input that can be completely
+     * output.
+     *
+     * @param charBuffer The character buffer to compress.
+     * @param charBufferStart The start of the character run to compress.
+     * @param charBufferLimit The limit of the character run to compress.
+     * @param charsRead A one-element array.  If not null, on return 
+     * the number of characters read from charBuffer.
+     * @param byteBuffer A buffer to receive the compressed data.  This 
+     * buffer must be at minimum four bytes in size.
+     * @param byteBufferStart The starting offset to which to write 
+     * compressed data.
+     * @param byteBufferLimit The limiting offset for writing compressed data.
+     * @return The number of bytes written to byteBuffer.
+     * @stable ICU 2.4
+     */
+    public int compress(char []     charBuffer,
+            int         charBufferStart,
+            int         charBufferLimit,
+            int []      charsRead,
+            byte []     byteBuffer,
+            int         byteBufferStart,
+            int         byteBufferLimit)
+    {
+        // the current position in the target byte buffer
+    int     bytePos       = byteBufferStart;
+    
+    // the current position in the source unicode character buffer
+    int     ucPos         = charBufferStart;
+    
+    // the current unicode character from the source buffer
+    int     curUC         = INVALIDCHAR;
+    
+    // the index for the current character
+        int     curIndex      = -1;
+        
+    // look ahead
+    int     nextUC        = INVALIDCHAR;
+    int     forwardUC     = INVALIDCHAR;
+    
+        // temporary for window searching
+    int     whichWindow   = 0;
+    
+    // high and low bytes of the current unicode character
+    int     hiByte        = 0;
+    int     loByte        = 0;
+
+
+    // byteBuffer must be at least 4 bytes in size
+    if(byteBuffer.length < 4 || (byteBufferLimit - byteBufferStart) < 4)
+        throw new IllegalArgumentException("byteBuffer.length < 4");
+
+    mainLoop:
+    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        switch(fMode) {
+        // main single byte mode compression loop
+        case SINGLEBYTEMODE:
+        singleByteModeLoop:
+        while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        // get current char
+        curUC = charBuffer[ucPos++];
+
+        // get next char
+        if(ucPos < charBufferLimit) 
+            nextUC = charBuffer[ucPos];
+        else
+            nextUC = INVALIDCHAR;
+        
+        // chars less than 0x0080 (excluding tags) go straight
+        // in stream
+        if(curUC < 0x0080) {
+            loByte = curUC & 0xFF;
+
+            // we need to check and make sure we don't
+            // accidentally write a single byte mode tag to
+            // the stream unless it's quoted
+            if(sSingleTagTable[loByte]) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // since we know the byte is less than 0x80, SQUOTE0
+            // will use static window 0, or ASCII
+            byteBuffer[bytePos++] = (byte) SQUOTE0;
+            }
+
+            byteBuffer[bytePos++] = (byte) loByte;
+        }
+
+        // if the char belongs to current window, convert it
+        // to a byte by adding the generic compression offset
+        // and subtracting the window's offset
+        else if(inDynamicWindow(curUC, fCurrentWindow) ) {
+            byteBuffer[bytePos++] = (byte) 
+            (curUC - fOffsets[ fCurrentWindow ] 
+             + COMPRESSIONOFFSET);
+        }
+        
+        // if char is not in compressible range, either switch to or
+        // quote from unicode
+        else if( ! isCompressible(curUC) ) {
+            // only check next character if it is valid
+            if(nextUC != INVALIDCHAR && isCompressible(nextUC)) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if( (bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SQUOTEU;
+            byteBuffer[bytePos++] = (byte) (curUC >>> 8);
+            byteBuffer[bytePos++] = (byte) (curUC & 0xFF);
+            }
+            else {
+                                // make sure there is enough room to
+                                // write all four bytes if not, rewind
+                                // the source stream and break out
+            if((bytePos + 3) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[hiByte])
+                // add quote Unicode tag
+                byteBuffer[bytePos++]   = (byte) UQUOTEU;    
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+                
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            }
+        }
+
+        // if the char is in a currently defined dynamic
+        // window, figure out which one, and either switch to
+        // it or quote from it
+        else if((whichWindow = findDynamicWindow(curUC)) 
+            != INVALIDWINDOW ) {
+            // look ahead
+            if( (ucPos + 1) < charBufferLimit )
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+            
+            // all three chars in same window, switch to that
+            // window inDynamicWindow will return false for
+            // INVALIDCHAR
+            if(inDynamicWindow(nextUC, whichWindow) 
+               && inDynamicWindow(forwardUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte)(SCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+            fTimeStamps [ whichWindow ] = ++fTimeStamp;
+            fCurrentWindow = whichWindow;
+            }
+            
+            // either only next char or neither in same
+            // window, so quote
+            else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+            }
+        }
+
+        // if a static window is defined, and the following
+        // character is not in that static window, quote from
+        // the static window Note: to quote from a static
+        // window, don't add 0x80
+        else if((whichWindow = findStaticWindow(curUC)) 
+            != INVALIDWINDOW 
+            && ! inStaticWindow(nextUC, whichWindow) ) {
+            // make sure there is enough room to write both
+            // bytes if not, rewind the source stream and
+            // break out
+            if((bytePos + 1) >= byteBufferLimit) 
+            { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+            (curUC - sOffsets[whichWindow]);
+        }
+        
+        // if a window is not defined, decide if we want to
+        // define a new one or switch to unicode mode
+        else {
+            // determine index for current char (char is compressible)
+            curIndex = makeIndex(curUC);
+            fIndexCount[curIndex]++;
+
+            // look ahead
+            if((ucPos + 1) < charBufferLimit)
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+
+            // if we have encountered this index at least once
+            // before, define a new window
+            // OR
+            // three chars in a row with same index, define a
+            // new window (makeIndex will return RESERVEDINDEX
+            // for INVALIDCHAR)
+            if((fIndexCount[curIndex] > 1) ||
+               (curIndex == makeIndex(nextUC) 
+            && curIndex == makeIndex(forwardUC))) {
+            // make sure there is enough room to write all
+            // three bytes if not, rewind the source
+            // stream and break out
+            if( (bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // get least recently defined window
+            whichWindow = getLRDefinedWindow();
+
+            byteBuffer[bytePos++] = (byte)(SDEFINE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) curIndex;
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - sOffsetTable[curIndex] 
+                 + COMPRESSIONOFFSET);
+
+            fOffsets[whichWindow] = sOffsetTable[curIndex];
+            fCurrentWindow = whichWindow;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            }
+
+            // only two chars in a row with same index, so
+            // switch to unicode mode (makeIndex will return
+            // RESERVEDINDEX for INVALIDCHAR)
+            // OR
+            // three chars have different indices, so switch
+            // to unicode mode
+            else {
+            // make sure there is enough room to write all
+            // four bytes if not, rewind the source stream
+            // and break out
+            if((bytePos + 3) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[hiByte])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU; 
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            }
+        }
+        }
+        break;
+
+        case UNICODEMODE:
+        // main unicode mode compression loop
+        unicodeModeLoop:
+        while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        // get current char
+        curUC = charBuffer[ucPos++];    
+
+        // get next char
+        if( ucPos < charBufferLimit )
+            nextUC = charBuffer[ucPos];
+        else
+            nextUC = INVALIDCHAR;
+
+        // if we have two uncompressible chars in a row,
+        // put the current char's bytes in the stream
+        if( ! isCompressible(curUC) 
+            || (nextUC != INVALIDCHAR && ! isCompressible(nextUC))) {
+            // make sure there is enough room to write all three bytes
+            // if not, rewind the source stream and break out
+            if( (bytePos + 2) >= byteBufferLimit) 
+            { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+            // add quote Unicode tag
+            byteBuffer[bytePos++] = (byte) UQUOTEU;
+                
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+        }
+        
+        // bytes less than 0x80 can go straight in the stream,
+        // but in single-byte mode
+        else if(curUC < 0x0080) {
+            loByte = curUC & 0xFF;
+
+            // if two chars in a row below 0x80 and the
+            // current char is not a single-byte mode tag,
+            // switch to single-byte mode
+            if(nextUC != INVALIDCHAR 
+               && nextUC < 0x0080 && ! sSingleTagTable[ loByte ] ) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // use the last-active window
+            whichWindow = fCurrentWindow;
+            byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) loByte;
+
+            //fCurrentWindow = 0;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+
+            // otherwise, just write the bytes to the stream
+            // (this will cover the case of only 1 char less than 0x80
+            // and single-byte mode tags)
+            else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // since the character is less than 0x80, the
+            // high byte is always 0x00 - no need for
+            // (curUC >>> 8)
+            byteBuffer[bytePos++] = (byte) 0x00;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+
+        // figure out if the current char is in a defined window
+        else if((whichWindow = findDynamicWindow(curUC)) 
+            != INVALIDWINDOW ) {
+            // if two chars in a row in the same window,
+            // switch to that window and go to single-byte mode
+            // inDynamicWindow will return false for INVALIDCHAR
+            if(inDynamicWindow(nextUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+
+            fTimeStamps [ whichWindow ] = ++fTimeStamp;
+            fCurrentWindow = whichWindow;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+
+            // otherwise, just quote the unicode for the char
+            else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU;
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+        
+        // char is not in a defined window
+        else {
+            // determine index for current char (char is compressible)
+            curIndex = makeIndex(curUC);
+            fIndexCount[curIndex]++;
+            
+            // look ahead
+            if( (ucPos + 1) < charBufferLimit )
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+            
+            // if we have encountered this index at least once
+            // before, define a new window for it that hasn't
+            // previously been redefined
+            // OR
+            // if three chars in a row with the same index,
+            // define a new window (makeIndex will return
+            // RESERVEDINDEX for INVALIDCHAR)
+            if((fIndexCount[curIndex] > 1) ||
+               (curIndex == makeIndex(nextUC) 
+            && curIndex == makeIndex(forwardUC))) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // get least recently defined window
+            whichWindow = getLRDefinedWindow();
+
+            byteBuffer[bytePos++] = (byte)(UDEFINE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) curIndex;
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - sOffsetTable[curIndex] 
+                 + COMPRESSIONOFFSET);
+            
+            fOffsets[whichWindow] = sOffsetTable[curIndex];
+            fCurrentWindow = whichWindow;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+            
+            // otherwise just quote the unicode, and save our
+            // windows for longer runs
+            else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU;  
+            
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+        }
+        }  // end switch
+    }
+    
+        // fill in output parameter
+    if(charsRead != null)
+        charsRead [0] = (ucPos - charBufferStart);
+        
+        // return # of bytes written
+        return (bytePos - byteBufferStart);
+    }
+
+    /** 
+     * Reset the compressor to its initial state.
+     * @stable ICU 2.4
+     */
+    public void reset()
+    {
+    int i;
+
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        // reset time stamps
+        for(i = 0; i < NUMWINDOWS; i++) {
+            fTimeStamps[i]          = 0;
+        }
+
+        // reset count of seen indices
+        for(i = 0; i <= MAXINDEX; i++ ) {
+            fIndexCount[i] = 0;
+        }
+
+        fTimeStamp      = 0;                // Reset current time stamp
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    }
+
+    //==========================
+    // Determine the index for a character
+    //==========================
+
+    /**
+     * Create the index value for a character.
+     * For more information on this function, refer to table X-3
+     * <A HREF="http://www.unicode.org/unicode/reports/tr6">UTR6</A>.
+     * @param c The character in question.
+     * @return An index for c
+     */
+    private static int makeIndex(int c)
+    {
+        // check the predefined indices
+        if(c >= 0x00C0 && c < 0x0140)
+            return LATININDEX;
+        else if(c >= 0x0250 && c < 0x02D0)
+            return IPAEXTENSIONINDEX;
+        else if(c >= 0x0370 && c < 0x03F0)
+            return GREEKINDEX;
+        else if(c >= 0x0530 && c < 0x0590)
+            return ARMENIANINDEX;
+        else if(c >= 0x3040 && c < 0x30A0)
+            return HIRAGANAINDEX;
+        else if(c >= 0x30A0 && c < 0x3120)
+            return KATAKANAINDEX;
+        else if(c >= 0xFF60 && c < 0xFF9F)
+            return HALFWIDTHKATAKANAINDEX;
+
+        // calculate index
+        else if(c >= 0x0080 && c < 0x3400)
+            return (c / 0x80) & 0xFF;
+        else if(c >= 0xE000 && c <= 0xFFFF)
+            return ((c - 0xAC00) / 0x80) & 0xFF;
+            
+        // should never happen
+        else {
+            return RESERVEDINDEX;
+        }
+    }
+
+    //==========================
+    // Check if a given character fits in a window
+    //==========================
+
+    /**
+    * Determine if a character is in a dynamic window.
+    * @param c The character to test
+    * @param whichWindow The dynamic window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private boolean inDynamicWindow(int c, 
+                    int whichWindow)
+    {
+        return (c >= fOffsets[whichWindow] 
+        && c < (fOffsets[whichWindow] + 0x80));
+    }
+
+    /**
+     * Determine if a character is in a static window.
+    * @param c The character to test
+    * @param whichWindow The static window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private static boolean inStaticWindow(int c, 
+                      int whichWindow)
+    {
+        return (c >= sOffsets[whichWindow]
+        && c < (sOffsets[whichWindow] + 0x80));
+    }
+
+    //==========================
+    // Check if a given character is compressible
+    //==========================
+
+    /**
+    * Determine if a character is compressible.
+    * @param c The character to test.
+    * @return true if the <TT>c</TT> is compressible, false otherwise.
+    */
+    private static boolean isCompressible(int c)
+    {
+        return (c < 0x3400 || c >= 0xE000);
+    }
+
+    //==========================
+    // Check if a window is defined for a given character
+    //==========================
+
+    /**
+     * Determine if a dynamic window for a certain character is defined
+     * @param c The character in question
+     * @return The dynamic window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private int findDynamicWindow(int c)
+    {
+    // supposedly faster to count down
+        //for(int i = 0; i < NUMWINDOWS; i++) {
+    for(int i = NUMWINDOWS - 1; i >= 0; --i) {
+        if(inDynamicWindow(c, i)) {
+        ++fTimeStamps[i];
+                return i;
+        }
+    }
+        
+        return INVALIDWINDOW;
+    }
+
+    /**
+     * Determine if a static window for a certain character is defined
+     * @param c The character in question
+     * @return The static window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private static int findStaticWindow(int c)
+    {
+    // supposedly faster to count down
+        //for(int i = 0; i < NUMSTATICWINDOWS; i++) {
+    for(int i = NUMSTATICWINDOWS - 1; i >= 0; --i) {
+        if(inStaticWindow(c, i)) {
+                return i;
+        }
+    }
+    
+        return INVALIDWINDOW;
+    }
+    
+    //==========================
+    // Find the least-recently used window
+    //==========================
+
+    /** Find the least-recently defined window */
+    private int getLRDefinedWindow()
+    {
+        int leastRU         = Integer.MAX_VALUE;
+        int whichWindow     = INVALIDWINDOW;
+
+        // find least recently used window
+        // supposedly faster to count down
+        //for( int i = 0; i < NUMWINDOWS; i++ ) {
+        for(int i = NUMWINDOWS - 1; i >= 0; --i ) {
+            if( fTimeStamps[i] < leastRU ) {
+                leastRU   = fTimeStamps[i];
+                whichWindow  = i;
+            }
+        }
+
+        return whichWindow;
+    }
+    
+}
diff --git a/src/com/ibm/icu/text/UnicodeDecompressor.java b/src/com/ibm/icu/text/UnicodeDecompressor.java
new file mode 100644
index 0000000..0e6dbca
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeDecompressor.java
@@ -0,0 +1,562 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+* A decompression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeDecompressor</TT> may be used in a
+* straightforward manner to decompress simple strings:</P>
+*
+* <PRE>
+*  byte [] compressed = ... ; // get compressed bytes from somewhere
+*  String result = UnicodeDecompressor.decompress(compressed);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeDecompressor</TT> offers more powerful APIs allowing
+* iterative decompression:</P>
+*
+* <PRE>
+*  // Decompress an array "bytes" of length "len" using a buffer of 512 chars
+*  // to the Writer "out"
+*
+*  UnicodeDecompressor myDecompressor         = new UnicodeDecompressor();
+*  final static int    BUFSIZE                = 512;
+*  char []             charBuffer             = new char [ BUFSIZE ];
+*  int                 charsWritten           = 0;
+*  int []              bytesRead              = new int [1];
+*  int                 totalBytesDecompressed = 0;
+*  int                 totalCharsWritten      = 0;
+*
+*  do {
+*    // do the decompression
+*    charsWritten = myDecompressor.decompress(bytes, totalBytesDecompressed, 
+*                                             len, bytesRead,
+*                                             charBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of chars
+*    out.write(charBuffer, 0, charsWritten);
+*
+*    // update the no. of bytes decompressed
+*    totalBytesDecompressed += bytesRead[0];
+*
+*    // update the no. of chars written
+*    totalCharsWritten += charsWritten;
+*
+*  } while(totalBytesDecompressed < len);
+*
+*  myDecompressor.reset(); // reuse decompressor
+* </PRE>
+*
+* <P>Decompression is performed according to the standard set forth in 
+* <A HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical 
+* Report #6</A></P>
+*
+* @see UnicodeCompressor
+*
+* @author Stephen F. Booth
+* @stable ICU 2.4
+*/
+public final class UnicodeDecompressor implements SCSU
+{
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Size of our internal buffer */
+    private final static int BUFSIZE   = 3;
+
+    /** Internal buffer for saving state */
+    private byte []   fBuffer          = new byte [BUFSIZE];
+
+    /** Number of characters in our internal buffer */
+    private int       fBufferLength    = 0;
+    
+
+    /**
+     * Create a UnicodeDecompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     * @stable ICU 2.4
+     */
+    public UnicodeDecompressor()
+    {
+    reset();              // initialize to defaults
+    }
+
+    /**
+     * Decompress a byte array into a String.
+     * @param buffer The byte array to decompress.
+     * @return A String containing the decompressed characters.
+     * @see #decompress(byte [], int, int)
+     * @stable ICU 2.4
+     */
+    public static String decompress(byte [] buffer)
+    {
+    char [] buf = decompress(buffer, 0, buffer.length);
+    return new String(buf);
+    }
+
+    /**
+     * Decompress a byte array into a Unicode character array.
+     * @param buffer The byte array to decompress.
+     * @param start The start of the byte run to decompress.
+     * @param limit The limit of the byte run to decompress.
+     * @return A character array containing the decompressed bytes.
+     * @see #decompress(byte [])
+     * @stable ICU 2.4
+     */
+    public static char [] decompress(byte [] buffer,
+                     int start,
+                     int limit)
+    {
+    UnicodeDecompressor comp = new UnicodeDecompressor();
+
+    // use a buffer we know will never overflow
+    // in the worst case, each byte will decompress
+    // to a surrogate pair (buffer must be at least 2 chars)
+    int len = Math.max(2, 2 * (limit - start));
+    char [] temp = new char [len];
+
+    int charCount = comp.decompress(buffer, start, limit, null, 
+                    temp, 0, len);
+
+    char [] result = new char [charCount];
+    System.arraycopy(temp, 0, result, 0, charCount);
+    return result;
+    }
+    
+    /**
+     * Decompress a byte array into a Unicode character array.
+     *
+     * This function will either completely fill the output buffer, 
+     * or consume the entire input.  
+     *
+     * @param byteBuffer The byte buffer to decompress.
+     * @param byteBufferStart The start of the byte run to decompress.
+     * @param byteBufferLimit The limit of the byte run to decompress.
+     * @param bytesRead A one-element array.  If not null, on return
+     * the number of bytes read from byteBuffer.
+     * @param charBuffer A buffer to receive the decompressed data. 
+     * This buffer must be at minimum two characters in size.
+     * @param charBufferStart The starting offset to which to write 
+     * decompressed data.
+     * @param charBufferLimit The limiting offset for writing 
+     * decompressed data.
+     * @return The number of Unicode characters written to charBuffer.
+     * @stable ICU 2.4
+     */
+    public int decompress(byte []    byteBuffer,
+              int        byteBufferStart,
+              int        byteBufferLimit,
+              int []     bytesRead,
+              char []    charBuffer,
+              int        charBufferStart,
+              int        charBufferLimit)
+    {
+    // the current position in the source byte buffer
+    int bytePos      = byteBufferStart;
+    
+    // the current position in the target char buffer
+    int ucPos        = charBufferStart;
+        
+        // the current byte from the source buffer
+    int aByte        = 0x00;
+
+
+    // charBuffer must be at least 2 chars in size
+    if(charBuffer.length < 2 || (charBufferLimit - charBufferStart) < 2)
+        throw new IllegalArgumentException("charBuffer.length < 2");
+    
+    // if our internal buffer isn't empty, flush its contents
+    // to the output buffer before doing any more decompression
+    if(fBufferLength > 0) {
+
+        int newBytes = 0;
+
+        // fill the buffer completely, to guarantee one full character
+        if(fBufferLength != BUFSIZE) {
+        newBytes = fBuffer.length - fBufferLength;
+
+        // verify there are newBytes bytes in byteBuffer
+        if(byteBufferLimit - byteBufferStart < newBytes)
+            newBytes = byteBufferLimit - byteBufferStart;
+
+        System.arraycopy(byteBuffer, byteBufferStart, 
+                 fBuffer, fBufferLength, newBytes);
+        }
+
+        // reset buffer length to 0 before recursive call
+        fBufferLength = 0;
+
+        // call self recursively to decompress the buffer
+        int count = decompress(fBuffer, 0, fBuffer.length, null,
+                   charBuffer, charBufferStart, 
+                   charBufferLimit);
+
+        // update the positions into the arrays
+        ucPos += count;
+        bytePos += newBytes;
+    }
+
+        // the main decompression loop
+    mainLoop:
+    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        switch(fMode) {  
+        case SINGLEBYTEMODE:
+        // single-byte mode decompression loop
+        singleByteModeLoop:
+        while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        aByte = byteBuffer[bytePos++] & 0xFF;
+        switch(aByte) {
+            // All bytes from 0x80 through 0xFF are remapped
+            // to chars or surrogate pairs according to the
+            // currently active window
+        case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: 
+        case 0x85: case 0x86: case 0x87: case 0x88: case 0x89:
+        case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E:
+        case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93:
+        case 0x94: case 0x95: case 0x96: case 0x97: case 0x98:
+        case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D:
+        case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2:
+        case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7:
+        case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC:
+        case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1:
+        case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6:
+        case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB:
+        case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0:
+        case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5:
+        case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA:
+        case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF:
+        case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4:
+        case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9:
+        case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE:
+        case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3:
+        case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8:
+        case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED:
+        case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2:
+        case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7:
+        case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC:
+        case 0xFD: case 0xFE: case 0xFF: 
+            // For offsets <= 0xFFFF, convert to a single char
+            // by adding the window's offset and subtracting
+            // the generic compression offset
+            if(fOffsets[ fCurrentWindow ] <= 0xFFFF) {
+            charBuffer[ucPos++] = (char) 
+                (aByte + fOffsets[ fCurrentWindow ] 
+                 - COMPRESSIONOFFSET);
+            }
+            // For offsets > 0x10000, convert to a surrogate pair by 
+            // normBase = window's offset - 0x10000
+            // high surr. = 0xD800 + (normBase >> 10)
+            // low  surr. = 0xDC00 + (normBase & 0x3FF) + (byte & 0x7F)
+            else {
+            // make sure there is enough room to write
+            // both characters 
+            // if not, save state and break out
+            if((ucPos + 1) >= charBufferLimit) {
+                --bytePos;
+                System.arraycopy(byteBuffer, bytePos,
+                         fBuffer, 0, 
+                         byteBufferLimit - bytePos);
+                fBufferLength = byteBufferLimit - bytePos;
+                bytePos += fBufferLength;
+                break mainLoop; 
+            }
+            
+            int normalizedBase = fOffsets[ fCurrentWindow ] 
+                - 0x10000;
+            charBuffer[ucPos++] = (char) 
+                (0xD800 + (normalizedBase >> 10));
+            charBuffer[ucPos++] = (char) 
+                (0xDC00 + (normalizedBase & 0x3FF)+(aByte & 0x7F));
+            }
+            break;
+
+            // bytes from 0x20 through 0x7F are treated as ASCII and
+            // are remapped to chars by padding the high byte
+            // (this is the same as quoting from static window 0)
+            // NUL (0x00), HT (0x09), CR (0x0A), LF (0x0D) 
+            // are treated as ASCII as well
+        case 0x00: case 0x09: case 0x0A: case 0x0D:
+        case 0x20: case 0x21: case 0x22: case 0x23: case 0x24:
+        case 0x25: case 0x26: case 0x27: case 0x28: case 0x29:
+        case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E:
+        case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33:
+        case 0x34: case 0x35: case 0x36: case 0x37: case 0x38:
+        case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D:
+        case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42:
+        case 0x43: case 0x44: case 0x45: case 0x46: case 0x47:
+        case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C:
+        case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51:
+        case 0x52: case 0x53: case 0x54: case 0x55: case 0x56:
+        case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B:
+        case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60:
+        case 0x61: case 0x62: case 0x63: case 0x64: case 0x65:
+        case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A:
+        case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F:
+        case 0x70: case 0x71: case 0x72: case 0x73: case 0x74:
+        case 0x75: case 0x76: case 0x77: case 0x78: case 0x79:
+        case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E:
+        case 0x7F: 
+            charBuffer[ucPos++] = (char) aByte;
+            break;
+
+            // quote unicode
+        case SQUOTEU:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if( (bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++];
+            charBuffer[ucPos++] = (char)
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+            // switch to Unicode mode
+        case SCHANGEU:
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            //break;
+
+            // handle all quote tags
+        case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+        case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+            // verify there is a byte following the tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            // if the byte is in the range 0x00 - 0x7F, use
+            // static window n otherwise, use dynamic window n
+            int dByte = byteBuffer[bytePos++] & 0xFF;
+            charBuffer[ucPos++] = (char) 
+            (dByte+ (dByte >= 0x00 && dByte < 0x80 
+                 ? sOffsets[aByte - SQUOTE0] 
+                 : (fOffsets[aByte - SQUOTE0] 
+                    - COMPRESSIONOFFSET))); 
+            break;
+
+            // handle all change tags
+        case SCHANGE0: case SCHANGE1: case SCHANGE2: case SCHANGE3:
+        case SCHANGE4: case SCHANGE5: case SCHANGE6: case SCHANGE7:
+            fCurrentWindow = aByte - SCHANGE0;
+            break;
+
+            // handle all define tags
+        case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+        case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+            // verify there is a byte following the tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+
+            fCurrentWindow = aByte - SDEFINE0;
+            fOffsets[fCurrentWindow] = 
+            sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+            break;
+
+            // handle define extended tag
+        case SDEFINEX:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if((bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++] & 0xFF;
+            fCurrentWindow = (aByte & 0xE0) >> 5;
+            fOffsets[fCurrentWindow] = 0x10000 + 
+            (0x80 * (((aByte & 0x1F) << 8) 
+                 | (byteBuffer[bytePos++] & 0xFF)));
+            break;
+                            
+            // reserved, shouldn't happen
+        case SRESERVED:
+            break;
+
+        } // end switch
+        } // end while
+        break;
+
+        case UNICODEMODE:
+        // unicode mode decompression loop
+        unicodeModeLoop:
+        while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        aByte = byteBuffer[bytePos++] & 0xFF;
+        switch(aByte) {
+            // handle all define tags
+        case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+        case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+            // verify there is a byte following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            fCurrentWindow = aByte - UDEFINE0;
+            fOffsets[fCurrentWindow] = 
+            sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // handle define extended tag
+        case UDEFINEX:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if((bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+            
+            aByte = byteBuffer[bytePos++] & 0xFF;
+            fCurrentWindow = (aByte & 0xE0) >> 5;
+            fOffsets[fCurrentWindow] = 0x10000 + 
+            (0x80 * (((aByte & 0x1F) << 8) 
+                 | (byteBuffer[bytePos++] & 0xFF)));
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // handle all change tags
+        case UCHANGE0: case UCHANGE1: case UCHANGE2: case UCHANGE3:
+        case UCHANGE4: case UCHANGE5: case UCHANGE6: case UCHANGE7:
+            fCurrentWindow = aByte - UCHANGE0;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // quote unicode
+        case UQUOTEU:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit  - 1) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++];
+            charBuffer[ucPos++] = (char) 
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+        default:
+            // verify there is a byte following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+
+            charBuffer[ucPos++] = (char) 
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+        } // end switch
+        } // end while
+        break;
+        
+        } // end switch( fMode )
+    } // end while
+
+        // fill in output parameter
+    if(bytesRead != null)
+        bytesRead [0] = (bytePos - byteBufferStart);
+
+        // return # of chars written
+    return (ucPos - charBufferStart);
+    }
+
+    /** 
+     * Reset the decompressor to its initial state. 
+     * @stable ICU 2.4
+     */
+    public void reset()
+    {
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    fBufferLength   = 0;                // Empty buffer
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeFilter.java b/src/com/ibm/icu/text/UnicodeFilter.java
new file mode 100644
index 0000000..ac52b5f
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeFilter.java
@@ -0,0 +1,70 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeFilter</code> defines a protocol for selecting a
+ * subset of the full range (U+0000 to U+FFFF) of Unicode characters.
+ * Currently, filters are used in conjunction with classes like {@link
+ * Transliterator} to only process selected characters through a
+ * transformation.
+ * @stable ICU 2.0
+ */
+public abstract class UnicodeFilter implements UnicodeMatcher {
+
+    /**
+     * Returns <tt>true</tt> for characters that are in the selected
+     * subset.  In other words, if a character is <b>to be
+     * filtered</b>, then <tt>contains()</tt> returns
+     * <b><tt>false</tt></b>.
+     * @stable ICU 2.0
+     */
+    public abstract boolean contains(int c);
+
+    /**
+     * Default implementation of UnicodeMatcher::matches() for Unicode
+     * filters.  Matches a single 16-bit code unit at offset.
+     * @stable ICU 2.0
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int c;
+        if (offset[0] < limit &&
+            contains(c = text.char32At(offset[0]))) {
+            offset[0] += UTF16.getCharCount(c);
+            return U_MATCH;
+        }
+        if (offset[0] > limit &&
+            contains(c = text.char32At(offset[0]))) {
+            // Backup offset by 1, unless the preceding character is a
+            // surrogate pair -- then backup by 2 (keep offset pointing at
+            // the lead surrogate).
+            --offset[0];
+            if (offset[0] >= 0) {
+                offset[0] -= UTF16.getCharCount(text.char32At(offset[0])) - 1;
+            }
+            return U_MATCH;
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        return U_MISMATCH;
+    }
+
+    /**
+     * (This should not be here; it is declared to make CheckTags
+     * happy.  Java inserts a synthetic constructor and CheckTags
+     * can't tell that it's synthetic.)
+     *
+     * TODO Remove this when the JDK property implements MemberDoc.isSynthetic
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected UnicodeFilter() {}
+}
diff --git a/src/com/ibm/icu/text/UnicodeMatcher.java b/src/com/ibm/icu/text/UnicodeMatcher.java
new file mode 100644
index 0000000..a82359a
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeMatcher.java
@@ -0,0 +1,138 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeMatcher</code> defines a protocol for objects that can
+ * match a range of characters in a Replaceable string.
+ * @stable ICU 2.0
+ */
+public interface UnicodeMatcher {
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * mismatch between the text and this matcher.  The text contains
+     * a character which does not match, or the text does not contain
+     * all desired characters for a non-incremental match.
+     * @stable ICU 2.0
+     */
+    public static final int U_MISMATCH = 0;
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * partial match between the text and this matcher.  This value is
+     * only returned for incremental match operations.  All characters
+     * of the text match, but more characters are required for a
+     * complete match.  Alternatively, for variable-length matchers,
+     * all characters of the text match, and if more characters were
+     * supplied at limit, they might also match.
+     * @stable ICU 2.0
+     */
+    public static final int U_PARTIAL_MATCH = 1;
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * complete match between the text and this matcher.  For an
+     * incremental variable-length match, this value is returned if
+     * the given text matches, and it is known that additional
+     * characters would not alter the extent of the match.
+     * @stable ICU 2.0
+     */
+    public static final int U_MATCH = 2;
+
+    /**
+     * The character at index i, where i < contextStart || i >= contextLimit,
+     * is ETHER.  This allows explicit matching by rules and UnicodeSets
+     * of text outside the context.  In traditional terms, this allows anchoring
+     * at the start and/or end.
+     * @stable ICU 2.0
+     */
+    static final char ETHER = '\uFFFF';
+
+    /**
+     * Return a UMatchDegree value indicating the degree of match for
+     * the given text at the given offset.  Zero, one, or more
+     * characters may be matched.
+     *
+     * Matching in the forward direction is indicated by limit >
+     * offset.  Characters from offset forwards to limit-1 will be
+     * considered for matching.
+     *
+     * Matching in the reverse direction is indicated by limit <
+     * offset.  Characters from offset backwards to limit+1 will be
+     * considered for matching.
+     *
+     * If limit == offset then the only match possible is a zero
+     * character match (which subclasses may implement if desired).
+     *
+     * If U_MATCH is returned, then as a side effect, advance the
+     * offset parameter to the limit of the matched substring.  In the
+     * forward direction, this will be the index of the last matched
+     * character plus one.  In the reverse direction, this will be the
+     * index of the last matched character minus one.
+     *
+     * @param text the text to be matched
+     * @param offset on input, the index into text at which to begin
+     * matching.  On output, the limit of the matched text.  The
+     * number of matched characters is the output value of offset
+     * minus the input value.  Offset should always point to the
+     * HIGH SURROGATE (leading code unit) of a pair of surrogates,
+     * both on entry and upon return.
+     * @param limit the limit index of text to be matched.  Greater
+     * than offset for a forward direction match, less than offset for
+     * a backward direction match.  The last character to be
+     * considered for matching will be text.charAt(limit-1) in the
+     * forward direction or text.charAt(limit+1) in the backward
+     * direction.
+     * @param incremental if TRUE, then assume further characters may
+     * be inserted at limit and check for partial matching.  Otherwise
+     * assume the text as given is complete.
+     * @return a match degree value indicating a full match, a partial
+     * match, or a mismatch.  If incremental is FALSE then
+     * U_PARTIAL_MATCH should never be returned.
+     * @stable ICU 2.0
+     */
+    public abstract int matches(Replaceable text,
+                                int[] offset,
+                                int limit,
+                                boolean incremental);
+
+    /**
+     * Returns a string representation of this matcher.  If the result of
+     * calling this function is passed to the appropriate parser, it
+     * will produce another matcher that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @stable ICU 2.0
+     */
+    public abstract String toPattern(boolean escapeUnprintable);
+
+    /**
+     * Returns TRUE if this matcher will match a character c, where c
+     * & 0xFF == v, at offset, in the forward direction (with limit >
+     * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     *
+     * <p>Note:  This API uses an int even though the value will be
+     * restricted to 8 bits in order to avoid complications with
+     * signedness (bytes convert to ints in the range -128..127).
+     * @stable ICU 2.0
+     */
+    public abstract boolean matchesIndexValue(int v);
+
+    /**
+     * Union the set of all characters that may be matched by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the source characters
+     * @stable ICU 2.2
+     */
+    public abstract void addMatchSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeNameTransliterator.java b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
new file mode 100644
index 0000000..60fe496
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that performs character to name mapping.
+ * It generates the Perl syntax \N{name}.
+ * @author Alan Liu
+ */
+class UnicodeNameTransliterator extends Transliterator {
+
+    static final String _ID = "Any-Name";
+
+    static final String OPEN_DELIM = "\\N{";
+    static final char CLOSE_DELIM = '}';
+    static final int OPEN_DELIM_LEN = 3;
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnicodeNameTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UnicodeNameTransliterator(UnicodeFilter filter) {
+        super(_ID, filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+        
+        StringBuffer str = new StringBuffer();
+        str.append(OPEN_DELIM);
+        int len;
+        String name;
+        
+        while (cursor < limit) {
+            int c = text.char32At(cursor);
+            if ((name=UCharacter.getExtendedName(c)) != null) {
+                
+                str.setLength(OPEN_DELIM_LEN);
+                str.append(name).append(CLOSE_DELIM);
+
+                int clen = UTF16.getCharCount(c);
+                text.replace(cursor, cursor+clen, str.toString());
+                len = str.length();
+                cursor += len; // advance cursor by 1 and adjust for new text
+                limit += len-clen; // change in length
+            } else {
+                ++cursor;
+            }
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        offsets.start = cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeReplacer.java b/src/com/ibm/icu/text/UnicodeReplacer.java
new file mode 100644
index 0000000..49c4c37
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeReplacer.java
@@ -0,0 +1,64 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeReplacer</code> defines a protocol for objects that
+ * replace a range of characters in a Replaceable string with output
+ * text.  The replacement is done via the Replaceable API so as to
+ * preserve out-of-band data.
+ * @author Alan Liu
+ */
+interface UnicodeReplacer {
+
+    /**
+     * Replace characters in 'text' from 'start' to 'limit' with the
+     * output text of this object.  Update the 'cursor' parameter to
+     * give the cursor position and return the length of the
+     * replacement text.
+     *
+     * @param text the text to be matched
+     * @param start inclusive start index of text to be replaced
+     * @param limit exclusive end index of text to be replaced;
+     * must be greater than or equal to start
+     * @param cursor output parameter for the cursor position.
+     * Not all replacer objects will update this, but in a complete
+     * tree of replacer objects, representing the entire output side
+     * of a transliteration rule, at least one must update it.
+     * @return the number of 16-bit code units in the text replacing
+     * the characters at offsets start..(limit-1) in text
+     */
+    public abstract int replace(Replaceable text,
+                                int start,
+                                int limit,
+                                int[] cursor);
+
+    /**
+     * Returns a string representation of this replacer.  If the
+     * result of calling this function is passed to the appropriate
+     * parser, typically TransliteratorParser, it will produce another
+     * replacer that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are defined by
+     * Utility.isUnprintable().
+     */
+    public abstract String toReplacerPattern(boolean escapeUnprintable);
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public abstract void addReplacementSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeSet.java b/src/com/ibm/icu/text/UnicodeSet.java
new file mode 100644
index 0000000..1641d08
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSet.java
@@ -0,0 +1,3756 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+import com.ibm.icu.lang.*;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.impl.SortedSetRelation;
+import com.ibm.icu.impl.RuleCharacterIterator;
+
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.text.BreakIterator;
+
+import java.util.MissingResourceException;
+import java.util.TreeSet;
+import java.util.Iterator;
+import java.util.Collection;
+
+/**
+ * A mutable set of Unicode characters and multicharacter strings.  Objects of this class
+ * represent <em>character classes</em> used in regular expressions.
+ * A character specifies a subset of Unicode code points.  Legal
+ * code points are U+0000 to U+10FFFF, inclusive.
+ *
+ * <p>The UnicodeSet class is not designed to be subclassed.
+ *
+ * <p><code>UnicodeSet</code> supports two APIs. The first is the
+ * <em>operand</em> API that allows the caller to modify the value of
+ * a <code>UnicodeSet</code> object. It conforms to Java 2's
+ * <code>java.util.Set</code> interface, although
+ * <code>UnicodeSet</code> does not actually implement that
+ * interface. All methods of <code>Set</code> are supported, with the
+ * modification that they take a character range or single character
+ * instead of an <code>Object</code>, and they take a
+ * <code>UnicodeSet</code> instead of a <code>Collection</code>.  The
+ * operand API may be thought of in terms of boolean logic: a boolean
+ * OR is implemented by <code>add</code>, a boolean AND is implemented
+ * by <code>retain</code>, a boolean XOR is implemented by
+ * <code>complement</code> taking an argument, and a boolean NOT is
+ * implemented by <code>complement</code> with no argument.  In terms
+ * of traditional set theory function names, <code>add</code> is a
+ * union, <code>retain</code> is an intersection, <code>remove</code>
+ * is an asymmetric difference, and <code>complement</code> with no
+ * argument is a set complement with respect to the superset range
+ * <code>MIN_VALUE-MAX_VALUE</code>
+ *
+ * <p>The second API is the
+ * <code>applyPattern()</code>/<code>toPattern()</code> API from the
+ * <code>java.text.Format</code>-derived classes.  Unlike the
+ * methods that add characters, add categories, and control the logic
+ * of the set, the method <code>applyPattern()</code> sets all
+ * attributes of a <code>UnicodeSet</code> at once, based on a
+ * string pattern.
+ *
+ * <p><b>Pattern syntax</b></p>
+ *
+ * Patterns are accepted by the constructors and the
+ * <code>applyPattern()</code> methods and returned by the
+ * <code>toPattern()</code> method.  These patterns follow a syntax
+ * similar to that employed by version 8 regular expression character
+ * classes.  Here are some simple examples:
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[]</code></td>
+ *       <td valign="top">No characters</td>
+ *     </tr><tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[a]</code></td>
+ *       <td valign="top">The character 'a'</td>
+ *     </tr><tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[ae]</code></td>
+ *       <td valign="top">The characters 'a' and 'e'</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[a-e]</code></td>
+ *       <td valign="top">The characters 'a' through 'e' inclusive, in Unicode code
+ *       point order</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[\\u4E01]</code></td>
+ *       <td valign="top">The character U+4E01</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[a{ab}{ac}]</code></td>
+ *       <td valign="top">The character 'a' and the multicharacter strings &quot;ab&quot; and
+ *       &quot;ac&quot;</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[\p{Lu}]</code></td>
+ *       <td valign="top">All characters in the general category Uppercase Letter</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * Any character may be preceded by a backslash in order to remove any special
+ * meaning.  White space characters, as defined by UCharacterProperty.isRuleWhiteSpace(), are
+ * ignored, unless they are escaped.
+ *
+ * <p>Property patterns specify a set of characters having a certain
+ * property as defined by the Unicode standard.  Both the POSIX-like
+ * "[:Lu:]" and the Perl-like syntax "\p{Lu}" are recognized.  For a
+ * complete list of supported property patterns, see the User's Guide
+ * for UnicodeSet at
+ * <a href="http://www.icu-project.org/userguide/unicodeSet.html">
+ * http://www.icu-project.org/userguide/unicodeSet.html</a>.
+ * Actual determination of property data is defined by the underlying
+ * Unicode database as implemented by UCharacter.
+ *
+ * <p>Patterns specify individual characters, ranges of characters, and
+ * Unicode property sets.  When elements are concatenated, they
+ * specify their union.  To complement a set, place a '^' immediately
+ * after the opening '['.  Property patterns are inverted by modifying
+ * their delimiters; "[:^foo]" and "\P{foo}".  In any other location,
+ * '^' has no special meaning.
+ *
+ * <p>Ranges are indicated by placing two a '-' between two
+ * characters, as in "a-z".  This specifies the range of all
+ * characters from the left to the right, in Unicode order.  If the
+ * left character is greater than or equal to the
+ * right character it is a syntax error.  If a '-' occurs as the first
+ * character after the opening '[' or '[^', or if it occurs as the
+ * last character before the closing ']', then it is taken as a
+ * literal.  Thus "[a\\-b]", "[-ab]", and "[ab-]" all indicate the same
+ * set of three characters, 'a', 'b', and '-'.
+ *
+ * <p>Sets may be intersected using the '&' operator or the asymmetric
+ * set difference may be taken using the '-' operator, for example,
+ * "[[:L:]&[\\u0000-\\u0FFF]]" indicates the set of all Unicode letters
+ * with values less than 4096.  Operators ('&' and '|') have equal
+ * precedence and bind left-to-right.  Thus
+ * "[[:L:]-[a-z]-[\\u0100-\\u01FF]]" is equivalent to
+ * "[[[:L:]-[a-z]]-[\\u0100-\\u01FF]]".  This only really matters for
+ * difference; intersection is commutative.
+ *
+ * <table>
+ * <tr valign=top><td nowrap><code>[a]</code><td>The set containing 'a'
+ * <tr valign=top><td nowrap><code>[a-z]</code><td>The set containing 'a'
+ * through 'z' and all letters in between, in Unicode order
+ * <tr valign=top><td nowrap><code>[^a-z]</code><td>The set containing
+ * all characters but 'a' through 'z',
+ * that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>][<em>pat2</em>]]</code>
+ * <td>The union of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&[<em>pat2</em>]]</code>
+ * <td>The intersection of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]-[<em>pat2</em>]]</code>
+ * <td>The asymmetric difference of sets specified by <em>pat1</em> and
+ * <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[:Lu:] or \p{Lu}</code>
+ * <td>The set of characters having the specified
+ * Unicode property; in
+ * this case, Unicode uppercase letters
+ * <tr valign=top><td nowrap><code>[:^Lu:] or \P{Lu}</code>
+ * <td>The set of characters <em>not</em> having the given
+ * Unicode property
+ * </table>
+ *
+ * <p><b>Warning</b>: you cannot add an empty string ("") to a UnicodeSet.</p>
+ *
+ * <p><b>Formal syntax</b></p>
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern :=&nbsp; </code></td>
+ *       <td valign="top"><code>('[' '^'? item* ']') |
+ *       property</code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>item :=&nbsp; </code></td>
+ *       <td valign="top"><code>char | (char '-' char) | pattern-expr<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern-expr :=&nbsp; </code></td>
+ *       <td valign="top"><code>pattern | pattern-expr pattern |
+ *       pattern-expr op pattern<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>op :=&nbsp; </code></td>
+ *       <td valign="top"><code>'&amp;' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>special :=&nbsp; </code></td>
+ *       <td valign="top"><code>'[' | ']' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>char :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character that is not</em><code> special<br>
+ *       | ('\\' </code><em>any character</em><code>)<br>
+ *       | ('&#92;u' hex hex hex hex)<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>hex :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character for which
+ *       </em><code>Character.digit(c, 16)</code><em>
+ *       returns a non-negative result</em></td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="right"><code>property :=&nbsp; </code></td>
+ *       <td valign="top"><em>a Unicode property set pattern</td>
+ *     </tr>
+ *   </table>
+ *   <br>
+ *   <table border="1">
+ *     <tr>
+ *       <td>Legend: <table>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a := b</code></td>
+ *           <td width="20" valign="top">&nbsp; </td>
+ *           <td valign="top"><code>a</code> may be replaced by <code>b</code> </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a?</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">zero or one instance of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a*</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">one or more instances of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a | b</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">either <code>a</code> or <code>b</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>'a'</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">the literal string between the quotes </td>
+ *         </tr>
+ *       </table>
+ *       </td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ * <p>To iterate over contents of UnicodeSet, use UnicodeSetIterator class.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ * @see UnicodeSetIterator
+ */
+public class UnicodeSet extends UnicodeFilter implements Freezable {
+
+    private static final int LOW = 0x000000; // LOW <= all valid values. ZERO for codepoints
+    private static final int HIGH = 0x110000; // HIGH > all valid values. 10000 for code units.
+                                             // 110000 for codepoints
+
+    /**
+     * Minimum value that can be stored in a UnicodeSet.
+     * @stable ICU 2.0
+     */
+    public static final int MIN_VALUE = LOW;
+
+    /**
+     * Maximum value that can be stored in a UnicodeSet.
+     * @stable ICU 2.0
+     */
+    public static final int MAX_VALUE = HIGH - 1;
+
+    private int len;      // length used; list may be longer to minimize reallocs
+    private int[] list;   // MUST be terminated with HIGH
+    private int[] rangeList; // internal buffer
+    private int[] buffer; // internal buffer
+
+    // NOTE: normally the field should be of type SortedSet; but that is missing a public clone!!
+    // is not private so that UnicodeSetIterator can get access
+    TreeSet strings = new TreeSet();
+
+    /**
+     * The pattern representation of this set.  This may not be the
+     * most economical pattern.  It is the pattern supplied to
+     * applyPattern(), with variables substituted and whitespace
+     * removed.  For sets constructed without applyPattern(), or
+     * modified using the non-pattern API, this string will be null,
+     * indicating that toPattern() must generate a pattern
+     * representation from the inversion list.
+     */
+    private String pat = null;
+
+    private static final int START_EXTRA = 16;         // initial storage. Must be >= 0
+    private static final int GROW_EXTRA = START_EXTRA; // extra amount for growth. Must be >= 0
+
+    // Special property set IDs
+    private static final String ANY_ID   = "ANY";   // [\u0000-\U0010FFFF]
+    private static final String ASCII_ID = "ASCII"; // [\u0000-\u007F]
+    private static final String ASSIGNED = "Assigned"; // [:^Cn:]
+
+    /**
+     * A set of all characters _except_ the second through last characters of
+     * certain ranges.  These ranges are ranges of characters whose
+     * properties are all exactly alike, e.g. CJK Ideographs from
+     * U+4E00 to U+9FA5.
+     */
+    private static UnicodeSet INCLUSIONS[] = null;
+
+    //----------------------------------------------------------------
+    // Public API
+    //----------------------------------------------------------------
+
+    /**
+     * Constructs an empty set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet() {
+        list = new int[1 + START_EXTRA];
+        list[len++] = HIGH;
+    }
+
+    /**
+     * Constructs a copy of an existing set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(UnicodeSet other) {
+        set(other);
+    }
+
+    /**
+     * Constructs a set containing the given range. If <code>end >
+     * start</code> then an empty set is created.
+     *
+     * @param start first character, inclusive, of range
+     * @param end last character, inclusive, of range
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(int start, int end) {
+        this();
+        complement(start, end);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.  Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern) {
+        this();
+        applyPattern(pattern, null, null, IGNORE_SPACE);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true, ignore characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern, boolean ignoreWhitespace) {
+        this();
+        applyPattern(pattern, null, null, ignoreWhitespace ? IGNORE_SPACE : 0);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet(String pattern, int options) {
+        this();
+        applyPattern(pattern, null, null, options);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param symbols a symbol table mapping variables to char[] arrays
+     * and chars to UnicodeSets
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols) {
+        this();
+        applyPattern(pattern, pos, symbols, IGNORE_SPACE);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param symbols a symbol table mapping variables to char[] arrays
+     * and chars to UnicodeSets
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 3.2
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols, int options) {
+        this();
+        applyPattern(pattern, pos, symbols, options);
+    }
+
+
+    /**
+     * Return a new set that is equivalent to this one.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        UnicodeSet result = new UnicodeSet(this);
+        result.frozen = this.frozen;
+        return result;
+    }
+
+    /**
+     * Make this object represent the range <code>start - end</code>.
+     * If <code>end > start</code> then this object is set to an
+     * an empty range.
+     *
+     * @param start first character in the set, inclusive
+     * @param end last character in the set, inclusive
+     * @stable ICU 2.0
+     */
+    public UnicodeSet set(int start, int end) {
+        checkFrozen();
+        clear();
+        complement(start, end);
+        return this;
+    }
+
+    /**
+     * Make this object represent the same set as <code>other</code>.
+     * @param other a <code>UnicodeSet</code> whose value will be
+     * copied to this object
+     * @stable ICU 2.0
+     */
+    public UnicodeSet set(UnicodeSet other) {
+        checkFrozen();
+        list = (int[]) other.list.clone();
+        len = other.len;
+        pat = other.pat;
+        strings = (TreeSet)other.strings.clone();
+        return this;
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * See the class description for the syntax of the pattern language.
+     * Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet applyPattern(String pattern) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, IGNORE_SPACE);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern,
+     * optionally ignoring whitespace.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true then characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true are ignored
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet applyPattern(String pattern, boolean ignoreWhitespace) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, ignoreWhitespace ? IGNORE_SPACE : 0);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern,
+     * optionally ignoring whitespace.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet applyPattern(String pattern, int options) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, options);
+    }
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a UnicodeSet pattern.
+     * @stable ICU 2.0
+     */
+    public static boolean resemblesPattern(String pattern, int pos) {
+        return ((pos+1) < pattern.length() &&
+                pattern.charAt(pos) == '[') ||
+            resemblesPropertyPattern(pattern, pos);
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * string to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, String s, boolean escapeUnprintable) {
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            _appendToPat(buf, UTF16.charAt(s, i), escapeUnprintable);
+        }
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * character to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, int c, boolean escapeUnprintable) {
+        if (escapeUnprintable && Utility.isUnprintable(c)) {
+            // Use hex escape notation (<backslash>uxxxx or <backslash>Uxxxxxxxx) for anything
+            // unprintable
+            if (Utility.escapeUnprintable(buf, c)) {
+                return;
+            }
+        }
+        // Okay to let ':' pass through
+        switch (c) {
+        case '[': // SET_OPEN:
+        case ']': // SET_CLOSE:
+        case '-': // HYPHEN:
+        case '^': // COMPLEMENT:
+        case '&': // INTERSECTION:
+        case '\\': //BACKSLASH:
+        case '{':
+        case '}':
+        case '$':
+        case ':':
+            buf.append('\\');
+            break;
+        default:
+            // Escape whitespace
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                buf.append('\\');
+            }
+            break;
+        }
+        UTF16.append(buf, c);
+    }
+
+    /**
+     * Returns a string representation of this set.  If the result of
+     * calling this function is passed to a UnicodeSet constructor, it
+     * will produce another set that is equal to this one.
+     * @stable ICU 2.0
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        return _toPattern(result, escapeUnprintable).toString();
+    }
+
+    /**
+     * Append a string representation of this set to result.  This will be
+     * a cleaned version of the string passed to applyPattern(), if there
+     * is one.  Otherwise it will be generated.
+     */
+    private StringBuffer _toPattern(StringBuffer result,
+                                    boolean escapeUnprintable) {
+        if (pat != null) {
+            int i;
+            int backslashCount = 0;
+            for (i=0; i<pat.length(); ) {
+                int c = UTF16.charAt(pat, i);
+                i += UTF16.getCharCount(c);
+                if (escapeUnprintable && Utility.isUnprintable(c)) {
+                    // If the unprintable character is preceded by an odd
+                    // number of backslashes, then it has been escaped.
+                    // Before unescaping it, we delete the final
+                    // backslash.
+                    if ((backslashCount % 2) == 1) {
+                        result.setLength(result.length() - 1);
+                    }
+                    Utility.escapeUnprintable(result, c);
+                    backslashCount = 0;
+                } else {
+                    UTF16.append(result, c);
+                    if (c == '\\') {
+                        ++backslashCount;
+                    } else {
+                        backslashCount = 0;
+                    }
+                }
+            }
+            return result;
+        }
+
+        return _generatePattern(result, escapeUnprintable, true);
+    }
+
+    /**
+     * Generate and append a string representation of this set to result.
+     * This does not use this.pat, the cleaned up copy of the string
+     * passed to applyPattern().
+     * @param result the buffer into which to generate the pattern
+     * @param escapeUnprintable escape unprintable characters if true
+     * @stable ICU 2.0
+     */
+    public StringBuffer _generatePattern(StringBuffer result, boolean escapeUnprintable) {
+        return _generatePattern(result, escapeUnprintable, true);
+    }
+
+    /**
+     * Generate and append a string representation of this set to result.
+     * This does not use this.pat, the cleaned up copy of the string
+     * passed to applyPattern().
+     * @param includeStrings if false, doesn't include the strings.
+     * @stable ICU 3.8
+     */
+    public StringBuffer _generatePattern(StringBuffer result,
+                                         boolean escapeUnprintable, boolean includeStrings) {
+        result.append('[');
+
+//      // Check against the predefined categories.  We implicitly build
+//      // up ALL category sets the first time toPattern() is called.
+//      for (int cat=0; cat<CATEGORY_COUNT; ++cat) {
+//          if (this.equals(getCategorySet(cat))) {
+//              result.append(':');
+//              result.append(CATEGORY_NAMES.substring(cat*2, cat*2+2));
+//              return result.append(":]");
+//          }
+//      }
+
+        int count = getRangeCount();
+
+        // If the set contains at least 2 intervals and includes both
+        // MIN_VALUE and MAX_VALUE, then the inverse representation will
+        // be more economical.
+        if (count > 1 &&
+            getRangeStart(0) == MIN_VALUE &&
+            getRangeEnd(count-1) == MAX_VALUE) {
+
+            // Emit the inverse
+            result.append('^');
+
+            for (int i = 1; i < count; ++i) {
+                int start = getRangeEnd(i-1)+1;
+                int end = getRangeStart(i)-1;
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    if ((start+1) != end) {
+                        result.append('-');
+                    }
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        // Default; emit the ranges as pairs
+        else {
+            for (int i = 0; i < count; ++i) {
+                int start = getRangeStart(i);
+                int end = getRangeEnd(i);
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    if ((start+1) != end) {
+                        result.append('-');
+                    }
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        if (includeStrings && strings.size() > 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                result.append('{');
+                _appendToPat(result, (String) it.next(), escapeUnprintable);
+                result.append('}');
+            }
+        }
+        return result.append(']');
+    }
+
+    /**
+     * Returns the number of elements in this set (its cardinality)
+     * Note than the elements of a set may include both individual
+     * codepoints and strings.
+     *
+     * @return the number of elements in this set (its cardinality).
+     * @stable ICU 2.0
+     */
+    public int size() {
+        int n = 0;
+        int count = getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            n += getRangeEnd(i) - getRangeStart(i) + 1;
+        }
+        return n + strings.size();
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains no elements.
+     *
+     * @return <tt>true</tt> if this set contains no elements.
+     * @stable ICU 2.0
+     */
+    public boolean isEmpty() {
+        return len == 1 && strings.size() == 0;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Returns <tt>true</tt> if
+     * this set contains any character whose low byte is the given
+     * value.  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     * @stable ICU 2.0
+     */
+    public boolean matchesIndexValue(int v) {
+        /* The index value v, in the range [0,255], is contained in this set if
+         * it is contained in any pair of this set.  Pairs either have the high
+         * bytes equal, or unequal.  If the high bytes are equal, then we have
+         * aaxx..aayy, where aa is the high byte.  Then v is contained if xx <=
+         * v <= yy.  If the high bytes are unequal we have aaxx..bbyy, bb>aa.
+         * Then v is contained if xx <= v || v <= yy.  (This is identical to the
+         * time zone month containment logic.)
+         */
+        for (int i=0; i<getRangeCount(); ++i) {
+            int low = getRangeStart(i);
+            int high = getRangeEnd(i);
+            if ((low & ~0xFF) == (high & ~0xFF)) {
+                if ((low & 0xFF) <= v && v <= (high & 0xFF)) {
+                    return true;
+                }
+            } else if ((low & 0xFF) <= v || v <= (high & 0xFF)) {
+                return true;
+            }
+        }
+        if (strings.size() != 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                String s = (String) it.next();
+                //if (s.length() == 0) {
+                //    // Empty strings match everything
+                //    return true;
+                //}
+                // assert(s.length() != 0); // We enforce this elsewhere
+                int c = UTF16.charAt(s, 0);
+                if ((c & 0xFF) == v) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher.matches().  Always matches the
+     * longest possible multichar string.
+     * @stable ICU 2.0
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+
+        if (offset[0] == limit) {
+            // Strings, if any, have length != 0, so we don't worry
+            // about them here.  If we ever allow zero-length strings
+            // we much check for them here.
+            if (contains(UnicodeMatcher.ETHER)) {
+                return incremental ? U_PARTIAL_MATCH : U_MATCH;
+            } else {
+                return U_MISMATCH;
+            }
+        } else {
+            if (strings.size() != 0) { // try strings first
+
+                // might separate forward and backward loops later
+                // for now they are combined
+
+                // TODO Improve efficiency of this, at least in the forward
+                // direction, if not in both.  In the forward direction we
+                // can assume the strings are sorted.
+
+                Iterator it = strings.iterator();
+                boolean forward = offset[0] < limit;
+
+                // firstChar is the leftmost char to match in the
+                // forward direction or the rightmost char to match in
+                // the reverse direction.
+                char firstChar = text.charAt(offset[0]);
+
+                // If there are multiple strings that can match we
+                // return the longest match.
+                int highWaterLength = 0;
+
+                while (it.hasNext()) {
+                    String trial = (String) it.next();
+
+                    //if (trial.length() == 0) {
+                    //    return U_MATCH; // null-string always matches
+                    //}
+                    // assert(trial.length() != 0); // We ensure this elsewhere
+
+                    char c = trial.charAt(forward ? 0 : trial.length() - 1);
+
+                    // Strings are sorted, so we can optimize in the
+                    // forward direction.
+                    if (forward && c > firstChar) break;
+                    if (c != firstChar) continue;
+
+                    int length = matchRest(text, offset[0], limit, trial);
+
+                    if (incremental) {
+                        int maxLen = forward ? limit-offset[0] : offset[0]-limit;
+                        if (length == maxLen) {
+                            // We have successfully matched but only up to limit.
+                            return U_PARTIAL_MATCH;
+                        }
+                    }
+
+                    if (length == trial.length()) {
+                        // We have successfully matched the whole string.
+                        if (length > highWaterLength) {
+                            highWaterLength = length;
+                        }
+                        // In the forward direction we know strings
+                        // are sorted so we can bail early.
+                        if (forward && length < highWaterLength) {
+                            break;
+                        }
+                        continue;
+                    }
+                }
+
+                // We've checked all strings without a partial match.
+                // If we have full matches, return the longest one.
+                if (highWaterLength != 0) {
+                    offset[0] += forward ? highWaterLength : -highWaterLength;
+                    return U_MATCH;
+                }
+            }
+            return super.matches(text, offset, limit, incremental);
+        }
+    }
+
+    /**
+     * Returns the longest match for s in text at the given position.
+     * If limit > start then match forward from start+1 to limit
+     * matching all characters except s.charAt(0).  If limit < start,
+     * go backward starting from start-1 matching all characters
+     * except s.charAt(s.length()-1).  This method assumes that the
+     * first character, text.charAt(start), matches s, so it does not
+     * check it.
+     * @param text the text to match
+     * @param start the first character to match.  In the forward
+     * direction, text.charAt(start) is matched against s.charAt(0).
+     * In the reverse direction, it is matched against
+     * s.charAt(s.length()-1).
+     * @param limit the limit offset for matching, either last+1 in
+     * the forward direction, or last-1 in the reverse direction,
+     * where last is the index of the last character to match.
+     * @return If part of s matches up to the limit, return |limit -
+     * start|.  If all of s matches before reaching the limit, return
+     * s.length().  If there is a mismatch between s and text, return
+     * 0
+     */
+    private static int matchRest (Replaceable text, int start, int limit, String s) {
+        int maxLen;
+        int slen = s.length();
+        if (start < limit) {
+            maxLen = limit - start;
+            if (maxLen > slen) maxLen = slen;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start + i) != s.charAt(i)) return 0;
+            }
+        } else {
+            maxLen = start - limit;
+            if (maxLen > slen) maxLen = slen;
+            --slen; // <=> slen = s.length() - 1;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start - i) != s.charAt(slen - i)) return 0;
+            }
+        }
+        return maxLen;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Tests whether the text matches at the offset. If so, returns the end of the longest substring that it matches. If not, returns -1. 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int matchesAt(CharSequence text, int offset) {
+        int lastLen = -1;
+        strings:
+        if (strings.size() != 0) {
+            char firstChar = text.charAt(offset);
+            String trial = null;
+            // find the first string starting with firstChar
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                trial = (String) it.next();
+                char firstStringChar = trial.charAt(0);
+                if (firstStringChar < firstChar) continue;
+                if (firstStringChar > firstChar) break strings;
+            }
+            // now keep checking string until we get the longest one
+            for (;;) {
+                int tempLen = matchesAt(text, offset, trial);
+                if (lastLen > tempLen) break strings;
+                lastLen = tempLen;
+                if (!it.hasNext()) break;
+                trial = (String) it.next();
+            }
+        }
+        if (lastLen < 2) {
+            int cp = UTF16.charAt(text, offset);
+            if (contains(cp)) {
+                lastLen = UTF16.getCharCount(cp);
+            }
+        }
+        return offset+lastLen;
+    }
+
+    /**
+     * Does one string contain another, starting at a specific offset?
+     * @param text
+     * @param offset
+     * @param other
+     * @return
+     */
+    // Note: This method was moved from CollectionUtilities
+    private static int matchesAt(CharSequence text, int offset, CharSequence other) {
+        int len = other.length();
+        int i = 0;
+        int j = offset;
+        for (; i < len; ++i, ++j) {
+            char pc = other.charAt(i);
+            char tc = text.charAt(j);
+            if (pc != tc) return -1;
+        }
+        return i;
+    }
+//#endif
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     * @stable ICU 2.2
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(this);
+    }
+
+    /**
+     * Returns the index of the given character within this set, where
+     * the set is ordered by ascending code point.  If the character
+     * is not in this set, return -1.  The inverse of this method is
+     * <code>charAt()</code>.
+     * @return an index from 0..size()-1, or -1
+     * @stable ICU 2.0
+     */
+    public int indexOf(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+        int i = 0;
+        int n = 0;
+        for (;;) {
+            int start = list[i++];
+            if (c < start) {
+                return -1;
+            }
+            int limit = list[i++];
+            if (c < limit) {
+                return n + c - start;
+            }
+            n += limit - start;
+        }
+    }
+
+    /**
+     * Returns the character at the given index within this set, where
+     * the set is ordered by ascending code point.  If the index is
+     * out of range, return -1.  The inverse of this method is
+     * <code>indexOf()</code>.
+     * @param index an index from 0..size()-1
+     * @return the character at the given index, or -1.
+     * @stable ICU 2.0
+     */
+    public int charAt(int index) {
+        if (index >= 0) {
+            // len2 is the largest even integer <= len, that is, it is len
+            // for even values and len-1 for odd values.  With odd values
+            // the last entry is UNICODESET_HIGH.
+            int len2 = len & ~1;
+            for (int i=0; i < len2;) {
+                int start = list[i++];
+                int count = list[i++] - start;
+                if (index < count) {
+                    return start + index;
+                }
+                index -= count;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Adds the specified range to this set if it is not already
+     * present.  If this set already contains the specified range,
+     * the call leaves this set unchanged.  If <code>end > start</code>
+     * then an empty range is added, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be added
+     * to this set.
+     * @param end last character, inclusive, of range to be added
+     * to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet add(int start, int end) {
+        checkFrozen();
+        return add_unchecked(start, end);
+    }
+    
+    // for internal use, after checkFrozen has been called
+    private UnicodeSet add_unchecked(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start < end) {
+            add(range(start, end), 2, 0);
+        } else if (start == end) {
+            add(start);
+        }
+        return this;
+    }
+
+//    /**
+//     * Format out the inversion list as a string, for debugging.  Uncomment when
+//     * needed.
+//     */
+//    public final String dump() {
+//        StringBuffer buf = new StringBuffer("[");
+//        for (int i=0; i<len; ++i) {
+//            if (i != 0) buf.append(", ");
+//            int c = list[i];
+//            //if (c <= 0x7F && c != '\n' && c != '\r' && c != '\t' && c != ' ') {
+//            //    buf.append((char) c);
+//            //} else {
+//                buf.append("U+").append(Utility.hex(c, (c<0x10000)?4:6));
+//            //}
+//        }
+//        buf.append("]");
+//        return buf.toString();
+//    }
+
+    /**
+     * Adds the specified character to this set if it is not already
+     * present.  If this set already contains the specified character,
+     * the call leaves this set unchanged.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet add(int c) {
+        checkFrozen();
+        return add_unchecked(c);
+    }
+    
+    // for internal use only, after checkFrozen has been called
+    private final UnicodeSet add_unchecked(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+
+        // find smallest i such that c < list[i]
+        // if odd, then it is IN the set
+        // if even, then it is OUT of the set
+        int i = findCodePoint(c);
+
+        // already in set?
+        if ((i & 1) != 0) return this;
+
+        // HIGH is 0x110000
+        // assert(list[len-1] == HIGH);
+
+        // empty = [HIGH]
+        // [start_0, limit_0, start_1, limit_1, HIGH]
+
+        // [..., start_k-1, limit_k-1, start_k, limit_k, ..., HIGH]
+        //                             ^
+        //                             list[i]
+
+        // i == 0 means c is before the first range
+
+        if (c == list[i]-1) {
+            // c is before start of next range
+            list[i] = c;
+            // if we touched the HIGH mark, then add a new one
+            if (c == MAX_VALUE) {
+                ensureCapacity(len+1);
+                list[len++] = HIGH;
+            }
+            if (i > 0 && c == list[i-1]) {
+                // collapse adjacent ranges
+
+                // [..., start_k-1, c, c, limit_k, ..., HIGH]
+                //                     ^
+                //                     list[i]
+                System.arraycopy(list, i+1, list, i-1, len-i-1);
+                len -= 2;
+            }
+        }
+
+        else if (i > 0 && c == list[i-1]) {
+            // c is after end of prior range
+            list[i-1]++;
+            // no need to chcek for collapse here
+        }
+
+        else {
+            // At this point we know the new char is not adjacent to
+            // any existing ranges, and it is not 10FFFF.
+
+
+            // [..., start_k-1, limit_k-1, start_k, limit_k, ..., HIGH]
+            //                             ^
+            //                             list[i]
+
+            // [..., start_k-1, limit_k-1, c, c+1, start_k, limit_k, ..., HIGH]
+            //                             ^
+            //                             list[i]
+
+            // Don't use ensureCapacity() to save on copying.
+            // NOTE: This has no measurable impact on performance,
+            // but it might help in some usage patterns.
+            if (len+2 > list.length) {
+                int[] temp = new int[len + 2 + GROW_EXTRA];
+                if (i != 0) System.arraycopy(list, 0, temp, 0, i);
+                System.arraycopy(list, i, temp, i+2, len-i);
+                list = temp;
+            } else {
+                System.arraycopy(list, i, list, i+2, len-i);
+            }
+
+            list[i] = c;
+            list[i+1] = c+1;
+            len += 2;
+        }
+
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Adds the specified multicharacter to this set if it is not already
+     * present.  If this set already contains the multicharacter,
+     * the call leaves this set unchanged.
+     * Thus "ch" => {"ch"}
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet add(String s) {
+        checkFrozen();
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            strings.add(s);
+            pat = null;
+        } else {
+            add_unchecked(cp, cp);
+        }
+        return this;
+    }
+    
+    /**
+     * @return a code point IF the string consists of a single one.
+     * otherwise returns -1.
+     * @param string to test
+     */
+    private static int getSingleCP(String s) {
+        if (s.length() < 1) {
+            throw new IllegalArgumentException("Can't use zero-length strings in UnicodeSet");
+        }
+        if (s.length() > 2) return -1;
+        if (s.length() == 1) return s.charAt(0);
+
+        // at this point, len = 2
+        int cp = UTF16.charAt(s, 0);
+        if (cp > 0xFFFF) { // is surrogate pair
+            return cp;
+        }
+        return -1;
+    }
+
+    /**
+     * Adds each of the characters in this string to the set. Thus "ch" => {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet addAll(String s) {
+        checkFrozen();
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            add_unchecked(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retainAll(String s) {
+        return retainAll(fromAll(s));
+    }
+
+    /**
+     * Complement EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complementAll(String s) {
+        return complementAll(fromAll(s));
+    }
+
+    /**
+     * Remove EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet removeAll(String s) {
+        return removeAll(fromAll(s));
+    }
+
+    /**
+     * Makes a set from a multicharacter string. Thus "ch" => {"ch"}
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return a newly created set containing the given string
+     * @stable ICU 2.0
+     */
+    public static UnicodeSet from(String s) {
+        return new UnicodeSet().add(s);
+    }
+
+
+    /**
+     * Makes a set from each of the characters in the string. Thus "ch" => {"c", "h"}
+     * @param s the source string
+     * @return a newly created set containing the given characters
+     * @stable ICU 2.0
+     */
+    public static UnicodeSet fromAll(String s) {
+        return new UnicodeSet().addAll(s);
+    }
+
+
+    /**
+     * Retain only the elements in this set that are contained in the
+     * specified range.  If <code>end > start</code> then an empty range is
+     * retained, leaving the set empty.
+     *
+     * @param start first character, inclusive, of range to be retained
+     * to this set.
+     * @param end last character, inclusive, of range to be retained
+     * to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet retain(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 0);
+        } else {
+            clear();
+        }
+        return this;
+    }
+
+    /**
+     * Retain the specified character from this set if it is present.
+     * Upon return this set will be empty if it did not contain c, or
+     * will only contain c if it did contain c.
+     * @param c the character to be retained
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retain(int c) {
+        return retain(c, c);
+    }
+
+    /**
+     * Retain the specified string in this set if it is present.
+     * Upon return this set will be empty if it did not contain s, or
+     * will only contain s if it did contain s.
+     * @param s the string to be retained
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retain(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            boolean isIn = strings.contains(s);
+            if (isIn && size() == 1) {
+                return this;
+            }
+            clear();
+            strings.add(s);
+            pat = null;
+        } else {
+            retain(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Removes the specified range from this set if it is present.
+     * The set will not contain the specified range once the call
+     * returns.  If <code>end > start</code> then an empty range is
+     * removed, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet remove(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 2);
+        }
+        return this;
+    }
+
+    /**
+     * Removes the specified character from this set if it is present.
+     * The set will not contain the specified character once the call
+     * returns.
+     * @param c the character to be removed
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet remove(int c) {
+        return remove(c, c);
+    }
+
+    /**
+     * Removes the specified string from this set if it is present.
+     * The set will not contain the specified string once the call
+     * returns.
+     * @param s the string to be removed
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet remove(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            strings.remove(s);
+            pat = null;
+        } else {
+            remove(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Complements the specified range in this set.  Any character in
+     * the range will be removed if it is in this set, or will be
+     * added if it is not in this set.  If <code>end > start</code>
+     * then an empty range is complemented, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complement(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            xor(range(start, end), 2, 0);
+        }
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Complements the specified character in this set.  The character
+     * will be removed if it is in this set, or will be added if it is
+     * not in this set.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complement(int c) {
+        return complement(c, c);
+    }
+
+    /**
+     * This is equivalent to
+     * <code>complement(MIN_VALUE, MAX_VALUE)</code>.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complement() {
+        checkFrozen();
+        if (list[0] == LOW) {
+            System.arraycopy(list, 1, list, 0, len-1);
+            --len;
+        } else {
+            ensureCapacity(len+1);
+            System.arraycopy(list, 0, list, 1, len);
+            list[0] = LOW;
+            ++len;
+        }
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Complement the specified string in this set.
+     * The set will not contain the specified string once the call
+     * returns.
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the string to complement
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complement(String s) {
+        checkFrozen();
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            if (strings.contains(s)) strings.remove(s);
+            else strings.add(s);
+            pat = null;
+        } else {
+            complement(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Returns true if this set contains the given character.
+     * @param c character to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean contains(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+
+        /*
+        // Set i to the index of the start item greater than ch
+        // We know we will terminate without length test!
+        int i = -1;
+        while (true) {
+            if (c < list[++i]) break;
+        }
+        */
+
+        int i = findCodePoint(c);
+
+        return ((i & 1) != 0); // return true if odd
+    }
+
+    /**
+     * Returns the smallest value i such that c < list[i].  Caller
+     * must ensure that c is a legal value or this method will enter
+     * an infinite loop.  This method performs a binary search.
+     * @param c a character in the range MIN_VALUE..MAX_VALUE
+     * inclusive
+     * @return the smallest integer i in the range 0..len-1,
+     * inclusive, such that c < list[i]
+     */
+    private final int findCodePoint(int c) {
+        /* Examples:
+                                           findCodePoint(c)
+           set              list[]         c=0 1 3 4 7 8
+           ===              ==============   ===========
+           []               [110000]         0 0 0 0 0 0
+           [\u0000-\u0003]  [0, 4, 110000]   1 1 1 2 2 2
+           [\u0004-\u0007]  [4, 8, 110000]   0 0 0 1 1 2
+           [:all:]          [0, 110000]      1 1 1 1 1 1
+         */
+
+        // Return the smallest i such that c < list[i].  Assume
+        // list[len - 1] == HIGH and that c is legal (0..HIGH-1).
+        if (c < list[0]) return 0;
+        // High runner test.  c is often after the last range, so an
+        // initial check for this condition pays off.
+        if (len >= 2 && c >= list[len-2]) return len-1;
+        int lo = 0;
+        int hi = len - 1;
+        // invariant: c >= list[lo]
+        // invariant: c < list[hi]
+        for (;;) {
+            int i = (lo + hi) >>> 1;
+            if (i == lo) return hi;
+            if (c < list[i]) {
+                hi = i;
+            } else {
+                lo = i;
+            }
+        }
+    }
+
+//    //----------------------------------------------------------------
+//    // Unrolled binary search
+//    //----------------------------------------------------------------
+//
+//    private int validLen = -1; // validated value of len
+//    private int topOfLow;
+//    private int topOfHigh;
+//    private int power;
+//    private int deltaStart;
+//
+//    private void validate() {
+//        if (len <= 1) {
+//            throw new IllegalArgumentException("list.len==" + len + "; must be >1");
+//        }
+//
+//        // find greatest power of 2 less than or equal to len
+//        for (power = exp2.length-1; power > 0 && exp2[power] > len; power--) {}
+//
+//        // assert(exp2[power] <= len);
+//
+//        // determine the starting points
+//        topOfLow = exp2[power] - 1;
+//        topOfHigh = len - 1;
+//        deltaStart = exp2[power-1];
+//        validLen = len;
+//    }
+//
+//    private static final int exp2[] = {
+//        0x1, 0x2, 0x4, 0x8,
+//        0x10, 0x20, 0x40, 0x80,
+//        0x100, 0x200, 0x400, 0x800,
+//        0x1000, 0x2000, 0x4000, 0x8000,
+//        0x10000, 0x20000, 0x40000, 0x80000,
+//        0x100000, 0x200000, 0x400000, 0x800000,
+//        0x1000000, 0x2000000, 0x4000000, 0x8000000,
+//        0x10000000, 0x20000000 // , 0x40000000 // no unsigned int in Java
+//    };
+//
+//    /**
+//     * Unrolled lowest index GT.
+//     */
+//    private final int leastIndexGT(int searchValue) {
+//
+//        if (len != validLen) {
+//            if (len == 1) return 0;
+//            validate();
+//        }
+//        int temp;
+//
+//        // set up initial range to search. Each subrange is a power of two in length
+//        int high = searchValue < list[topOfLow] ? topOfLow : topOfHigh;
+//
+//        // Completely unrolled binary search, folhighing "Programming Pearls"
+//        // Each case deliberately falls through to the next
+//        // Logically, list[-1] < all_search_values && list[count] > all_search_values
+//        // although the values -1 and count are never actually touched.
+//
+//        // The bounds at each point are low & high,
+//        // where low == high - delta*2
+//        // so high - delta is the midpoint
+//
+//        // The invariant AFTER each line is that list[low] < searchValue <= list[high]
+//
+//        switch (power) {
+//        //case 31: if (searchValue < list[temp = high-0x40000000]) high = temp; // no unsigned int in Java
+//        case 30: if (searchValue < list[temp = high-0x20000000]) high = temp;
+//        case 29: if (searchValue < list[temp = high-0x10000000]) high = temp;
+//
+//        case 28: if (searchValue < list[temp = high- 0x8000000]) high = temp;
+//        case 27: if (searchValue < list[temp = high- 0x4000000]) high = temp;
+//        case 26: if (searchValue < list[temp = high- 0x2000000]) high = temp;
+//        case 25: if (searchValue < list[temp = high- 0x1000000]) high = temp;
+//
+//        case 24: if (searchValue < list[temp = high-  0x800000]) high = temp;
+//        case 23: if (searchValue < list[temp = high-  0x400000]) high = temp;
+//        case 22: if (searchValue < list[temp = high-  0x200000]) high = temp;
+//        case 21: if (searchValue < list[temp = high-  0x100000]) high = temp;
+//
+//        case 20: if (searchValue < list[temp = high-   0x80000]) high = temp;
+//        case 19: if (searchValue < list[temp = high-   0x40000]) high = temp;
+//        case 18: if (searchValue < list[temp = high-   0x20000]) high = temp;
+//        case 17: if (searchValue < list[temp = high-   0x10000]) high = temp;
+//
+//        case 16: if (searchValue < list[temp = high-    0x8000]) high = temp;
+//        case 15: if (searchValue < list[temp = high-    0x4000]) high = temp;
+//        case 14: if (searchValue < list[temp = high-    0x2000]) high = temp;
+//        case 13: if (searchValue < list[temp = high-    0x1000]) high = temp;
+//
+//        case 12: if (searchValue < list[temp = high-     0x800]) high = temp;
+//        case 11: if (searchValue < list[temp = high-     0x400]) high = temp;
+//        case 10: if (searchValue < list[temp = high-     0x200]) high = temp;
+//        case  9: if (searchValue < list[temp = high-     0x100]) high = temp;
+//
+//        case  8: if (searchValue < list[temp = high-      0x80]) high = temp;
+//        case  7: if (searchValue < list[temp = high-      0x40]) high = temp;
+//        case  6: if (searchValue < list[temp = high-      0x20]) high = temp;
+//        case  5: if (searchValue < list[temp = high-      0x10]) high = temp;
+//
+//        case  4: if (searchValue < list[temp = high-       0x8]) high = temp;
+//        case  3: if (searchValue < list[temp = high-       0x4]) high = temp;
+//        case  2: if (searchValue < list[temp = high-       0x2]) high = temp;
+//        case  1: if (searchValue < list[temp = high-       0x1]) high = temp;
+//        }
+//
+//        return high;
+//    }
+//
+//    // For debugging only
+//    public int len() {
+//        return len;
+//    }
+//
+//    //----------------------------------------------------------------
+//    //----------------------------------------------------------------
+
+    /**
+     * Returns true if this set contains every character
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean contains(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        //int i = -1;
+        //while (true) {
+        //    if (start < list[++i]) break;
+        //}
+        int i = findCodePoint(start);
+        return ((i & 1) != 0 && end < list[i]);
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains the given
+     * multicharacter string.
+     * @param s string to be checked for containment
+     * @return <tt>true</tt> if this set contains the specified string
+     * @stable ICU 2.0
+     */
+    public final boolean contains(String s) {
+
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            return strings.contains(s);
+        } else {
+            return contains(cp);
+        }
+    }
+
+    /**
+     * Returns true if this set contains all the characters and strings
+     * of the given set.
+     * @param b set to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsAll(UnicodeSet b) {
+      // The specified set is a subset if all of its pairs are contained in
+      // this set. This implementation accesses the lists directly for speed.
+      // TODO: this could be faster if size() were cached. But that would affect building speed
+      // so it needs investigation.
+      int[] listB = b.list;
+      boolean needA = true;
+      boolean needB = true;
+      int aPtr = 0;
+      int bPtr = 0;
+      int aLen = len - 1;
+      int bLen = b.len - 1;
+      int startA = 0, startB = 0, limitA = 0, limitB = 0;
+      while (true) {
+        // double iterations are such a pain...
+        if (needA) {
+          if (aPtr >= aLen) {
+            // ran out of A. If B is also exhausted, then break;
+            if (needB && bPtr >= bLen) {
+              break;
+            }
+            return false;
+          }
+          startA = list[aPtr++];
+          limitA = list[aPtr++];
+        }
+        if (needB) {
+          if (bPtr >= bLen) {
+            // ran out of B. Since we got this far, we have an A and we are ok so far
+            break;
+          }
+          startB = listB[bPtr++];
+          limitB = listB[bPtr++];
+        }
+        // if B doesn't overlap and is greater than A, get new A
+        if (startB >= limitA) {
+          needA = true;
+          needB = false;
+          continue;
+        }
+        // if B is wholy contained in A, then get a new B
+        if (startB >= startA && limitB <= limitA) {
+          needA = false;
+          needB = true;
+          continue;
+        }
+        // all other combinations mean we fail
+        return false;
+      }
+
+      if (!strings.containsAll(b.strings)) return false;
+      return true;
+  }
+
+//    /**
+//     * Returns true if this set contains all the characters and strings
+//     * of the given set.
+//     * @param c set to be checked for containment
+//     * @return true if the test condition is met
+//     * @stable ICU 2.0
+//     */
+//    public boolean containsAllOld(UnicodeSet c) {
+//        // The specified set is a subset if all of its pairs are contained in
+//        // this set.  It's possible to code this more efficiently in terms of
+//        // direct manipulation of the inversion lists if the need arises.
+//        int n = c.getRangeCount();
+//        for (int i=0; i<n; ++i) {
+//            if (!contains(c.getRangeStart(i), c.getRangeEnd(i))) {
+//                return false;
+//            }
+//        }
+//        if (!strings.containsAll(c.strings)) return false;
+//        return true;
+//    }
+
+    /**
+     * Returns true if there is a partition of the string such that this set contains each of the partitioned strings.
+     * For example, for the Unicode set [a{bc}{cd}]<br>
+     * containsAll is true for each of: "a", "bc", ""cdbca"<br>
+     * containsAll is false for each of: "acb", "bcda", "bcx"<br>
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+     public boolean containsAll(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (!contains(cp))  {
+                if (strings.size() == 0) {
+                    return false;
+                }
+                return containsAll(s, 0);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Recursive routine called if we fail to find a match in containsAll, and there are strings
+     * @param s source string
+     * @param i point to match to the end on
+     * @return true if ok
+     */
+    private boolean containsAll(String s, int i) {
+        if (i >= s.length()) {
+            return true;
+        }
+        int  cp= UTF16.charAt(s, i);
+        if (contains(cp) && containsAll(s, i+UTF16.getCharCount(cp))) {
+            return true;
+        }
+        
+        Iterator it = strings.iterator();
+        while (it.hasNext()) {
+            String setStr = (String)it.next();
+            if (s.startsWith(setStr, i) &&  containsAll(s, i+setStr.length())) {
+                return true;
+            }
+        }
+        return false;
+        
+    }
+
+    /**
+     * Get the Regex equivalent for this UnicodeSet
+     * @return regex pattern equivalent to this UnicodeSet
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String getRegexEquivalent() {
+        if (strings.size() == 0) return toString();
+        StringBuffer result = new StringBuffer("(?:");
+        _generatePattern(result, true, false);
+        Iterator it = strings.iterator();
+        while (it.hasNext()) {
+            result.append('|');
+            _appendToPat(result, (String) it.next(), true);
+        }
+        return result.append(")").toString();
+    }
+
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        int i = -1;
+        while (true) {
+            if (start < list[++i]) break;
+        }
+        return ((i & 1) == 0 && end < list[i]);
+    }
+
+    /**
+     * Returns true if none of the characters or strings in this UnicodeSet appears in the string.
+     * For example, for the Unicode set [a{bc}{cd}]<br>
+     * containsNone is true for: "xy", "cb"<br>
+     * containsNone is false for: "a", "bc", "bcd"<br>
+     * @param b set to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(UnicodeSet b) {
+      // The specified set is a subset if some of its pairs overlap with some of this set's pairs.
+      // This implementation accesses the lists directly for speed.
+      int[] listB = b.list;
+      boolean needA = true;
+      boolean needB = true;
+      int aPtr = 0;
+      int bPtr = 0;
+      int aLen = len - 1;
+      int bLen = b.len - 1;
+      int startA = 0, startB = 0, limitA = 0, limitB = 0;
+      while (true) {
+        // double iterations are such a pain...
+        if (needA) {
+          if (aPtr >= aLen) {
+            // ran out of A: break so we test strings
+            break;
+          }
+          startA = list[aPtr++];
+          limitA = list[aPtr++];
+        }
+        if (needB) {
+          if (bPtr >= bLen) {
+            // ran out of B: break so we test strings
+            break;
+          }
+          startB = listB[bPtr++];
+          limitB = listB[bPtr++];
+        }
+        // if B is higher than any part of A, get new A
+        if (startB >= limitA) {
+          needA = true;
+          needB = false;
+          continue;
+        }
+        // if A is higher than any part of B, get new B
+        if (startA >= limitB) {
+          needA = false;
+          needB = true;
+          continue;
+        }
+        // all other combinations mean we fail
+        return false;
+      }
+
+      if (!SortedSetRelation.hasRelation(strings, SortedSetRelation.DISJOINT, b.strings)) return false;
+      return true;
+  }
+
+//    /**
+//     * Returns true if none of the characters or strings in this UnicodeSet appears in the string.
+//     * For example, for the Unicode set [a{bc}{cd}]<br>
+//     * containsNone is true for: "xy", "cb"<br>
+//     * containsNone is false for: "a", "bc", "bcd"<br>
+//     * @param c set to be checked for containment
+//     * @return true if the test condition is met
+//     * @stable ICU 2.0
+//     */
+//    public boolean containsNoneOld(UnicodeSet c) {
+//        // The specified set is a subset if all of its pairs are contained in
+//        // this set.  It's possible to code this more efficiently in terms of
+//        // direct manipulation of the inversion lists if the need arises.
+//        int n = c.getRangeCount();
+//        for (int i=0; i<n; ++i) {
+//            if (!containsNone(c.getRangeStart(i), c.getRangeEnd(i))) {
+//                return false;
+//            }
+//        }
+//        if (!SortedSetRelation.hasRelation(strings, SortedSetRelation.DISJOINT, c.strings)) return false;
+//        return true;
+//    }
+
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (contains(cp)) return false;
+        }
+        if (strings.size() == 0) return true;
+        // do a last check to make sure no strings are in.
+        for (Iterator it = strings.iterator(); it.hasNext();) {
+            String item = (String)it.next();
+            if (s.indexOf(item) >= 0) return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * in the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(int start, int end) {
+        return !containsNone(start, end);
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * and strings of the given set.
+     * @param s set to be checked for containment
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(UnicodeSet s) {
+        return !containsNone(s);
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(String s) {
+        return !containsNone(s);
+    }
+
+
+    /**
+     * Adds all of the elements in the specified set to this set if
+     * they're not already present.  This operation effectively
+     * modifies this set so that its value is the <i>union</i> of the two
+     * sets.  The behavior of this operation is unspecified if the specified
+     * collection is modified while the operation is in progress.
+     *
+     * @param c set whose elements are to be added to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet addAll(UnicodeSet c) {
+        checkFrozen();
+        add(c.list, c.len, 0);
+        strings.addAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Retains only the elements in this set that are contained in the
+     * specified set.  In other words, removes from this set all of
+     * its elements that are not contained in the specified set.  This
+     * operation effectively modifies this set so that its value is
+     * the <i>intersection</i> of the two sets.
+     *
+     * @param c set that defines which elements this set will retain.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet retainAll(UnicodeSet c) {
+        checkFrozen();
+        retain(c.list, c.len, 0);
+        strings.retainAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Removes from this set all of its elements that are contained in the
+     * specified set.  This operation effectively modifies this
+     * set so that its value is the <i>asymmetric set difference</i> of
+     * the two sets.
+     *
+     * @param c set that defines which elements will be removed from
+     *          this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet removeAll(UnicodeSet c) {
+        checkFrozen();
+        retain(c.list, c.len, 2);
+        strings.removeAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Complements in this set all elements contained in the specified
+     * set.  Any character in the other set will be removed if it is
+     * in this set, or will be added if it is not in this set.
+     *
+     * @param c set that defines which elements will be complemented from
+     *          this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complementAll(UnicodeSet c) {
+        checkFrozen();
+        xor(c.list, c.len, 0);
+        SortedSetRelation.doOperation(strings, SortedSetRelation.COMPLEMENTALL, c.strings);
+        return this;
+    }
+
+    /**
+     * Removes all of the elements from this set.  This set will be
+     * empty after this call returns.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet clear() {
+        checkFrozen();
+        list[0] = HIGH;
+        len = 1;
+        pat = null;
+        strings.clear();
+        return this;
+    }
+
+    /**
+     * Iteration method that returns the number of ranges contained in
+     * this set.
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeCount() {
+        return len/2;
+    }
+
+    /**
+     * Iteration method that returns the first character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeCount
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeStart(int index) {
+        return list[index*2];
+    }
+
+    /**
+     * Iteration method that returns the last character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeEnd(int index) {
+        return (list[index*2 + 1] - 1);
+    }
+
+    /**
+     * Reallocate this objects internal structures to take up the least
+     * possible space, without changing this object's value.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet compact() {
+        checkFrozen();
+        if (len != list.length) {
+            int[] temp = new int[len];
+            System.arraycopy(list, 0, temp, 0, len);
+            list = temp;
+        }
+        rangeList = null;
+        buffer = null;
+        return this;
+    }
+
+    /**
+     * Compares the specified object with this set for equality.  Returns
+     * <tt>true</tt> if the specified object is also a set, the two sets
+     * have the same size, and every member of the specified set is
+     * contained in this set (or equivalently, every member of this set is
+     * contained in the specified set).
+     *
+     * @param o Object to be compared for equality with this set.
+     * @return <tt>true</tt> if the specified Object is equal to this set.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object o) {
+        try {
+            UnicodeSet that = (UnicodeSet) o;
+            if (len != that.len) return false;
+            for (int i = 0; i < len; ++i) {
+                if (list[i] != that.list[i]) return false;
+            }
+            if (!strings.equals(that.strings)) return false;
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the hash code value for this set.
+     *
+     * @return the hash code value for this set.
+     * @see java.lang.Object#hashCode()
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        int result = len;
+        for (int i = 0; i < len; ++i) {
+            result *= 1000003;
+            result += list[i];
+        }
+        return result;
+    }
+
+    /**
+     * Return a programmer-readable string representation of this object.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return toPattern(true);
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Pattern parsing
+    //----------------------------------------------------------------
+
+    /**
+     * Parses the given pattern, starting at the given position.  The character
+     * at pattern.charAt(pos.getIndex()) must be '[', or the parse fails.
+     * Parsing continues until the corresponding closing ']'.  If a syntax error
+     * is encountered between the opening and closing brace, the parse fails.
+     * Upon return from a successful parse, the ParsePosition is updated to
+     * point to the character following the closing ']', and an inversion
+     * list for the parsed pattern is returned.  This method
+     * calls itself recursively to parse embedded subpatterns.
+     *
+     * @param pattern the string containing the pattern to be parsed.  The
+     * portion of the string from pos.getIndex(), which must be a '[', to the
+     * corresponding closing ']', is parsed.
+     * @param pos upon entry, the position at which to being parsing.  The
+     * character at pattern.charAt(pos.getIndex()) must be a '['.  Upon return
+     * from a successful parse, pos.getIndex() is either the character after the
+     * closing ']' of the parsed pattern, or pattern.length() if the closing ']'
+     * is the last character of the pattern string.
+     * @return an inversion list for the parsed substring
+     * of <code>pattern</code>
+     * @exception java.lang.IllegalArgumentException if the parse fails.
+     */
+    UnicodeSet applyPattern(String pattern,
+                      ParsePosition pos,
+                      SymbolTable symbols,
+                      int options) {
+
+        // Need to build the pattern in a temporary string because
+        // _applyPattern calls add() etc., which set pat to empty.
+        boolean parsePositionWasNull = pos == null;
+        if (parsePositionWasNull) {
+            pos = new ParsePosition(0);
+        }
+
+        StringBuffer rebuiltPat = new StringBuffer();
+        RuleCharacterIterator chars =
+            new RuleCharacterIterator(pattern, symbols, pos);
+        applyPattern(chars, symbols, rebuiltPat, options);
+        if (chars.inVariable()) {
+            syntaxError(chars, "Extra chars in variable value");
+        }
+        pat = rebuiltPat.toString();
+        if (parsePositionWasNull) {
+            int i = pos.getIndex();
+
+            // Skip over trailing whitespace
+            if ((options & IGNORE_SPACE) != 0) {
+                i = Utility.skipWhitespace(pattern, i);
+            }
+
+            if (i != pattern.length()) {
+                throw new IllegalArgumentException("Parse of \"" + pattern +
+                                                   "\" failed at " + i);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Parse the pattern from the given RuleCharacterIterator.  The
+     * iterator is advanced over the parsed pattern.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be advanced to the first character after the parsed
+     * pattern, or the end of the iteration if all characters are
+     * parsed.
+     * @param symbols symbol table to use to parse and dereference
+     * variables, or null if none.
+     * @param rebuiltPat the pattern that was parsed, rebuilt or
+     * copied from the input pattern, as appropriate.
+     * @param options a bit mask of zero or more of the following:
+     * IGNORE_SPACE, CASE.
+     */
+    void applyPattern(RuleCharacterIterator chars, SymbolTable symbols,
+                      StringBuffer rebuiltPat, int options) {
+
+        // Syntax characters: [ ] ^ - & { }
+
+        // Recognized special forms for chars, sets: c-c s-s s&s
+
+        int opts = RuleCharacterIterator.PARSE_VARIABLES |
+                   RuleCharacterIterator.PARSE_ESCAPES;
+        if ((options & IGNORE_SPACE) != 0) {
+            opts |= RuleCharacterIterator.SKIP_WHITESPACE;
+        }
+
+        StringBuffer patBuf = new StringBuffer(), buf = null;
+        boolean usePat = false;
+        UnicodeSet scratch = null;
+        Object backup = null;
+
+        // mode: 0=before [, 1=between [...], 2=after ]
+        // lastItem: 0=none, 1=char, 2=set
+        int lastItem = 0, lastChar = 0, mode = 0;
+        char op = 0;
+
+        boolean invert = false;
+
+        clear();
+
+        while (mode != 2 && !chars.atEnd()) {
+            if (false) {
+                // Debugging assertion
+                if (!((lastItem == 0 && op == 0) ||
+                      (lastItem == 1 && (op == 0 || op == '-')) ||
+                      (lastItem == 2 && (op == 0 || op == '-' || op == '&')))) {
+                    throw new IllegalArgumentException();
+                }
+            }
+
+            int c = 0;
+            boolean literal = false;
+            UnicodeSet nested = null;
+
+            // -------- Check for property pattern
+
+            // setMode: 0=none, 1=unicodeset, 2=propertypat, 3=preparsed
+            int setMode = 0;
+            if (resemblesPropertyPattern(chars, opts)) {
+                setMode = 2;
+            }
+
+            // -------- Parse '[' of opening delimiter OR nested set.
+            // If there is a nested set, use `setMode' to define how
+            // the set should be parsed.  If the '[' is part of the
+            // opening delimiter for this pattern, parse special
+            // strings "[", "[^", "[-", and "[^-".  Check for stand-in
+            // characters representing a nested set in the symbol
+            // table.
+
+            else {
+                // Prepare to backup if necessary
+                backup = chars.getPos(backup);
+                c = chars.next(opts);
+                literal = chars.isEscaped();
+
+                if (c == '[' && !literal) {
+                    if (mode == 1) {
+                        chars.setPos(backup); // backup
+                        setMode = 1;
+                    } else {
+                        // Handle opening '[' delimiter
+                        mode = 1;
+                        patBuf.append('[');
+                        backup = chars.getPos(backup); // prepare to backup
+                        c = chars.next(opts);
+                        literal = chars.isEscaped();
+                        if (c == '^' && !literal) {
+                            invert = true;
+                            patBuf.append('^');
+                            backup = chars.getPos(backup); // prepare to backup
+                            c = chars.next(opts);
+                            literal = chars.isEscaped();
+                        }
+                        // Fall through to handle special leading '-';
+                        // otherwise restart loop for nested [], \p{}, etc.
+                        if (c == '-') {
+                            literal = true;
+                            // Fall through to handle literal '-' below
+                        } else {
+                            chars.setPos(backup); // backup
+                            continue;
+                        }
+                    }
+                } else if (symbols != null) {
+                     UnicodeMatcher m = symbols.lookupMatcher(c); // may be null
+                     if (m != null) {
+                         try {
+                             nested = (UnicodeSet) m;
+                             setMode = 3;
+                         } catch (ClassCastException e) {
+                             syntaxError(chars, "Syntax error");
+                         }
+                     }
+                }
+            }
+
+            // -------- Handle a nested set.  This either is inline in
+            // the pattern or represented by a stand-in that has
+            // previously been parsed and was looked up in the symbol
+            // table.
+
+            if (setMode != 0) {
+                if (lastItem == 1) {
+                    if (op != 0) {
+                        syntaxError(chars, "Char expected after operator");
+                    }
+                    add_unchecked(lastChar, lastChar);
+                    _appendToPat(patBuf, lastChar, false);
+                    lastItem = op = 0;
+                }
+
+                if (op == '-' || op == '&') {
+                    patBuf.append(op);
+                }
+
+                if (nested == null) {
+                    if (scratch == null) scratch = new UnicodeSet();
+                    nested = scratch;
+                }
+                switch (setMode) {
+                case 1:
+                    nested.applyPattern(chars, symbols, patBuf, options);
+                    break;
+                case 2:
+                    chars.skipIgnored(opts);
+                    nested.applyPropertyPattern(chars, patBuf, symbols);
+                    break;
+                case 3: // `nested' already parsed
+                    nested._toPattern(patBuf, false);
+                    break;
+                }
+
+                usePat = true;
+
+                if (mode == 0) {
+                    // Entire pattern is a category; leave parse loop
+                    set(nested);
+                    mode = 2;
+                    break;
+                }
+
+                switch (op) {
+                case '-':
+                    removeAll(nested);
+                    break;
+                case '&':
+                    retainAll(nested);
+                    break;
+                case 0:
+                    addAll(nested);
+                    break;
+                }
+
+                op = 0;
+                lastItem = 2;
+
+                continue;
+            }
+
+            if (mode == 0) {
+                syntaxError(chars, "Missing '['");
+            }
+
+            // -------- Parse special (syntax) characters.  If the
+            // current character is not special, or if it is escaped,
+            // then fall through and handle it below.
+
+            if (!literal) {
+                switch (c) {
+                case ']':
+                    if (lastItem == 1) {
+                        add_unchecked(lastChar, lastChar);
+                        _appendToPat(patBuf, lastChar, false);
+                    }
+                    // Treat final trailing '-' as a literal
+                    if (op == '-') {
+                        add_unchecked(op, op);
+                        patBuf.append(op);
+                    } else if (op == '&') {
+                        syntaxError(chars, "Trailing '&'");
+                    }
+                    patBuf.append(']');
+                    mode = 2;
+                    continue;
+                case '-':
+                    if (op == 0) {
+                        if (lastItem != 0) {
+                            op = (char) c;
+                            continue;
+                        } else {
+                            // Treat final trailing '-' as a literal
+                            add_unchecked(c, c);
+                            c = chars.next(opts);
+                            literal = chars.isEscaped();
+                            if (c == ']' && !literal) {
+                                patBuf.append("-]");
+                                mode = 2;
+                                continue;
+                            }
+                        }
+                    }
+                    syntaxError(chars, "'-' not after char or set");
+                case '&':
+                    if (lastItem == 2 && op == 0) {
+                        op = (char) c;
+                        continue;
+                    }
+                    syntaxError(chars, "'&' not after set");
+                case '^':
+                    syntaxError(chars, "'^' not after '['");
+                case '{':
+                    if (op != 0) {
+                        syntaxError(chars, "Missing operand after operator");
+                    }
+                    if (lastItem == 1) {
+                        add_unchecked(lastChar, lastChar);
+                        _appendToPat(patBuf, lastChar, false);
+                    }
+                    lastItem = 0;
+                    if (buf == null) {
+                        buf = new StringBuffer();
+                    } else {
+                        buf.setLength(0);
+                    }
+                    boolean ok = false;
+                    while (!chars.atEnd()) {
+                        c = chars.next(opts);
+                        literal = chars.isEscaped();
+                        if (c == '}' && !literal) {
+                            ok = true;
+                            break;
+                        }
+                        UTF16.append(buf, c);
+                    }
+                    if (buf.length() < 1 || !ok) {
+                        syntaxError(chars, "Invalid multicharacter string");
+                    }
+                    // We have new string. Add it to set and continue;
+                    // we don't need to drop through to the further
+                    // processing
+                    add(buf.toString());
+                    patBuf.append('{');
+                    _appendToPat(patBuf, buf.toString(), false);
+                    patBuf.append('}');
+                    continue;
+                case SymbolTable.SYMBOL_REF:
+                    //         symbols  nosymbols
+                    // [a-$]   error    error (ambiguous)
+                    // [a$]    anchor   anchor
+                    // [a-$x]  var "x"* literal '$'
+                    // [a-$.]  error    literal '$'
+                    // *We won't get here in the case of var "x"
+                    backup = chars.getPos(backup);
+                    c = chars.next(opts);
+                    literal = chars.isEscaped();
+                    boolean anchor = (c == ']' && !literal);
+                    if (symbols == null && !anchor) {
+                        c = SymbolTable.SYMBOL_REF;
+                        chars.setPos(backup);
+                        break; // literal '$'
+                    }
+                    if (anchor && op == 0) {
+                        if (lastItem == 1) {
+                            add_unchecked(lastChar, lastChar);
+                            _appendToPat(patBuf, lastChar, false);
+                        }
+                        add_unchecked(UnicodeMatcher.ETHER);
+                        usePat = true;
+                        patBuf.append(SymbolTable.SYMBOL_REF).append(']');
+                        mode = 2;
+                        continue;
+                    }
+                    syntaxError(chars, "Unquoted '$'");
+                default:
+                    break;
+                }
+            }
+
+            // -------- Parse literal characters.  This includes both
+            // escaped chars ("\u4E01") and non-syntax characters
+            // ("a").
+
+            switch (lastItem) {
+            case 0:
+                lastItem = 1;
+                lastChar = c;
+                break;
+            case 1:
+                if (op == '-') {
+                    if (lastChar >= c) {
+                        // Don't allow redundant (a-a) or empty (b-a) ranges;
+                        // these are most likely typos.
+                        syntaxError(chars, "Invalid range");
+                    }
+                    add_unchecked(lastChar, c);
+                    _appendToPat(patBuf, lastChar, false);
+                    patBuf.append(op);
+                    _appendToPat(patBuf, c, false);
+                    lastItem = op = 0;
+                } else {
+                    add_unchecked(lastChar, lastChar);
+                    _appendToPat(patBuf, lastChar, false);
+                    lastChar = c;
+                }
+                break;
+            case 2:
+                if (op != 0) {
+                    syntaxError(chars, "Set expected after operator");
+                }
+                lastChar = c;
+                lastItem = 1;
+                break;
+            }
+        }
+
+        if (mode != 2) {
+            syntaxError(chars, "Missing ']'");
+        }
+
+        chars.skipIgnored(opts);
+
+        /**
+         * Handle global flags (invert, case insensitivity).  If this
+         * pattern should be compiled case-insensitive, then we need
+         * to close over case BEFORE COMPLEMENTING.  This makes
+         * patterns like /[^abc]/i work.
+         */
+        if ((options & CASE) != 0) {
+            closeOver(CASE);
+        }
+        if (invert) {
+            complement();
+        }
+
+        // Use the rebuilt pattern (pat) only if necessary.  Prefer the
+        // generated pattern.
+        if (usePat) {
+            rebuiltPat.append(patBuf.toString());
+        } else {
+            _generatePattern(rebuiltPat, false, true);
+        }
+    }
+
+    private static void syntaxError(RuleCharacterIterator chars, String msg) {
+        throw new IllegalArgumentException("Error: " + msg + " at \"" +
+                                           Utility.escape(chars.toString()) +
+                                           '"');
+    }
+
+    /**
+     * Add the contents of the UnicodeSet (as strings) into a collection.
+     * @param target collection to add into
+     * @stable ICU 2.8
+     */
+    public void addAllTo(Collection target) {
+        UnicodeSetIterator it = new UnicodeSetIterator(this);
+        while (it.next()) {
+            target.add(it.getString());
+        }
+    }
+
+    /**
+     * Add the contents of the collection (as strings) into this UnicodeSet.
+     * @param source the collection to add
+     * @stable ICU 2.8
+     */
+    public void addAll(Collection source) {
+        checkFrozen();
+        Iterator it = source.iterator();
+        while (it.hasNext()) {
+            add(it.next().toString());
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Utility methods
+    //----------------------------------------------------------------
+
+    private void ensureCapacity(int newLen) {
+        if (newLen <= list.length) return;
+        int[] temp = new int[newLen + GROW_EXTRA];
+        System.arraycopy(list, 0, temp, 0, len);
+        list = temp;
+    }
+
+    private void ensureBufferCapacity(int newLen) {
+        if (buffer != null && newLen <= buffer.length) return;
+        buffer = new int[newLen + GROW_EXTRA];
+    }
+
+    /**
+     * Assumes start <= end.
+     */
+    private int[] range(int start, int end) {
+        if (rangeList == null) {
+            rangeList = new int[] { start, end+1, HIGH };
+        } else {
+            rangeList[0] = start;
+            rangeList[1] = end+1;
+        }
+        return rangeList;
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Fundamental operations
+    //----------------------------------------------------------------
+
+    // polarity = 0, 3 is normal: x xor y
+    // polarity = 1, 2: x xor ~y == x === y
+
+    private UnicodeSet xor(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b;
+        if (polarity == 1 || polarity == 2) {
+            b = LOW;
+            if (other[j] == LOW) { // skip base if already LOW
+                ++j;
+                b = other[j];
+            }
+        } else {
+            b = other[j++];
+        }
+        // simplest of all the routines
+        // sort the values, discarding identicals!
+        while (true) {
+            if (a < b) {
+                buffer[k++] = a;
+                a = list[i++];
+            } else if (b < a) {
+                buffer[k++] = b;
+                b = other[j++];
+            } else if (a != HIGH) { // at this point, a == b
+                // discard both values!
+                a = list[i++];
+                b = other[j++];
+            } else { // DONE!
+                buffer[k++] = HIGH;
+                len = k;
+                break;
+            }
+        }
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x union y
+    // polarity = 2: x union ~y
+    // polarity = 1: ~x union y
+    // polarity = 3: ~x union ~y
+
+    private UnicodeSet add(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; take lower if unequal
+                if (a < b) { // take a
+                    // Back up over overlapping ranges in buffer[]
+                    if (k > 0 && a <= buffer[k-1]) {
+                        // Pick latter end value in buffer[] vs. list[]
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++; // Common if/else code factored out
+                    polarity ^= 1;
+                } else if (b < a) { // take b
+                    if (k > 0 && b <= buffer[k-1]) {
+                        b = max(other[j], buffer[--k]);
+                    } else {
+                        buffer[k++] = b;
+                        b = other[j];
+                    }
+                    j++;
+                    polarity ^= 2;
+                } else { // a == b, take a, drop b
+                    if (a == HIGH) break main;
+                    // This is symmetrical; it doesn't matter if
+                    // we backtrack with a or b. - liu
+                    if (k > 0 && a <= buffer[k-1]) {
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++;
+                    polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take higher if unequal, and drop other
+                if (b <= a) { // take a
+                    if (a == HIGH) break main;
+                    buffer[k++] = a;
+                } else { // take b
+                    if (b == HIGH) break main;
+                    buffer[k++] = b;
+                }
+                a = list[i++]; polarity ^= 1;   // factored common code
+                b = other[j++]; polarity ^= 2;
+                break;
+              case 1: // a second, b first; if b < a, overlap
+                if (a < b) { // no overlap, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x intersect y
+    // polarity = 2: x intersect ~y == set-minus
+    // polarity = 1: ~x intersect y
+    // polarity = 3: ~x intersect ~y
+
+    private UnicodeSet retain(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; drop the smaller
+                if (a < b) { // drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take lower if unequal
+                if (a < b) { // take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 1: // a second, b first;
+                if (a < b) { // NO OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    private static final int max(int a, int b) {
+        return (a > b) ? a : b;
+    }
+
+    //----------------------------------------------------------------
+    // Generic filter-based scanning code
+    //----------------------------------------------------------------
+
+    private static interface Filter {
+        boolean contains(int codePoint);
+    }
+
+    private static class NumericValueFilter implements Filter {
+        double value;
+        NumericValueFilter(double value) { this.value = value; }
+        public boolean contains(int ch) {
+            return UCharacter.getUnicodeNumericValue(ch) == value;
+        }
+    }
+
+    private static class GeneralCategoryMaskFilter implements Filter {
+        int mask;
+        GeneralCategoryMaskFilter(int mask) { this.mask = mask; }
+        public boolean contains(int ch) {
+            return ((1 << UCharacter.getType(ch)) & mask) != 0;
+        }
+    }
+
+    private static class IntPropertyFilter implements Filter {
+        int prop;
+        int value;
+        IntPropertyFilter(int prop, int value) {
+            this.prop = prop;
+            this.value = value;
+        }
+        public boolean contains(int ch) {
+            return UCharacter.getIntPropertyValue(ch, prop) == value;
+        }
+    }
+
+    // VersionInfo for unassigned characters
+    static final VersionInfo NO_VERSION = VersionInfo.getInstance(0, 0, 0, 0);
+
+    private static class VersionFilter implements Filter {
+        VersionInfo version;
+        VersionFilter(VersionInfo version) { this.version = version; }
+        public boolean contains(int ch) {
+            VersionInfo v = UCharacter.getAge(ch);
+            // Reference comparison ok; VersionInfo caches and reuses
+            // unique objects.
+            return v != NO_VERSION &&
+                   v.compareTo(version) <= 0;
+        }
+    }
+
+    private static synchronized UnicodeSet getInclusions(int src) {
+        if (INCLUSIONS == null) {
+            INCLUSIONS = new UnicodeSet[UCharacterProperty.SRC_COUNT];
+        }
+        if(INCLUSIONS[src] == null) {
+            UnicodeSet incl = new UnicodeSet();
+            switch(src) {
+            case UCharacterProperty.SRC_CHAR:
+                UCharacterProperty.getInstance().addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_PROPSVEC:
+                UCharacterProperty.getInstance().upropsvec_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_CHAR_AND_PROPSVEC:
+                UCharacterProperty.getInstance().addPropertyStarts(incl);
+                UCharacterProperty.getInstance().upropsvec_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_HST:
+                UCharacterProperty.getInstance().uhst_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_NORM:
+                NormalizerImpl.addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_CASE:
+                try {
+                    UCaseProps.getSingleton().addPropertyStarts(incl);
+                } catch(IOException e) {
+                    throw new MissingResourceException(e.getMessage(),"","");
+                }
+                break;
+            case UCharacterProperty.SRC_BIDI:
+                try {
+                    UBiDiProps.getSingleton().addPropertyStarts(incl);
+                } catch(IOException e) {
+                    throw new MissingResourceException(e.getMessage(),"","");
+                }
+                break;
+            default:
+                throw new IllegalStateException("UnicodeSet.getInclusions(unknown src "+src+")");
+            }
+            INCLUSIONS[src] = incl;
+        }
+        return INCLUSIONS[src];
+    }
+
+    /**
+     * Generic filter-based scanning code for UCD property UnicodeSets.
+     */
+    private UnicodeSet applyFilter(Filter filter, int src) {
+        // Walk through all Unicode characters, noting the start
+        // and end of each range for which filter.contain(c) is
+        // true.  Add each range to a set.
+        //
+        // To improve performance, use the INCLUSIONS set, which
+        // encodes information about character ranges that are known
+        // to have identical properties, such as the CJK Ideographs
+        // from U+4E00 to U+9FA5.  INCLUSIONS contains all characters
+        // except the first characters of such ranges.
+        //
+        // TODO Where possible, instead of scanning over code points,
+        // use internal property data to initialize UnicodeSets for
+        // those properties.  Scanning code points is slow.
+
+        clear();
+
+        int startHasProperty = -1;
+        UnicodeSet inclusions = getInclusions(src);
+        int limitRange = inclusions.getRangeCount();
+
+        for (int j=0; j<limitRange; ++j) {
+            // get current range
+            int start = inclusions.getRangeStart(j);
+            int end = inclusions.getRangeEnd(j);
+
+            // for all the code points in the range, process
+            for (int ch = start; ch <= end; ++ch) {
+                // only add to the unicodeset on inflection points --
+                // where the hasProperty value changes to false
+                if (filter.contains(ch)) {
+                    if (startHasProperty < 0) {
+                        startHasProperty = ch;
+                    }
+                } else if (startHasProperty >= 0) {
+                    add_unchecked(startHasProperty, ch-1);
+                    startHasProperty = -1;
+                }
+            }
+        }
+        if (startHasProperty >= 0) {
+            add_unchecked(startHasProperty, 0x10FFFF);
+        }
+
+        return this;
+    }
+
+
+    /**
+     * Remove leading and trailing rule white space and compress
+     * internal rule white space to a single space character.
+     *
+     * @see UCharacterProperty#isRuleWhiteSpace
+     */
+    private static String mungeCharName(String source) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<source.length(); ) {
+            int ch = UTF16.charAt(source, i);
+            i += UTF16.getCharCount(ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                if (buf.length() == 0 ||
+                    buf.charAt(buf.length() - 1) == ' ') {
+                    continue;
+                }
+                ch = ' '; // convert to ' '
+            }
+            UTF16.append(buf, ch);
+        }
+        if (buf.length() != 0 &&
+            buf.charAt(buf.length() - 1) == ' ') {
+            buf.setLength(buf.length() - 1);
+        }
+        return buf.toString();
+    }
+
+    //----------------------------------------------------------------
+    // Property set API
+    //----------------------------------------------------------------
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given binary or enumerated property, as
+     * returned by UCharacter.getIntPropertyValue.  Prior contents of
+     * this set are lost.
+     *
+     * @param prop a property in the range
+     * UProperty.BIN_START..UProperty.BIN_LIMIT-1 or
+     * UProperty.INT_START..UProperty.INT_LIMIT-1 or.
+     * UProperty.MASK_START..UProperty.MASK_LIMIT-1.
+     *
+     * @param value a value in the range
+     * UCharacter.getIntPropertyMinValue(prop)..
+     * UCharacter.getIntPropertyMaxValue(prop), with one exception.
+     * If prop is UProperty.GENERAL_CATEGORY_MASK, then value should not be
+     * a UCharacter.getType() result, but rather a mask value produced
+     * by logically ORing (1 << UCharacter.getType()) values together.
+     * This allows grouped categories such as [:L:] to be represented.
+     *
+     * @return a reference to this set
+     *
+     * @stable ICU 2.4
+     */
+    public UnicodeSet applyIntPropertyValue(int prop, int value) {
+        checkFrozen();
+        if (prop == UProperty.GENERAL_CATEGORY_MASK) {
+            applyFilter(new GeneralCategoryMaskFilter(value), UCharacterProperty.SRC_CHAR);
+        } else {
+            applyFilter(new IntPropertyFilter(prop, value), UCharacterProperty.getInstance().getSource(prop));
+        }
+        return this;
+    }
+
+
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given property.  Prior contents of this
+     * set are lost.
+     *
+     * @param propertyAlias a property alias, either short or long.
+     * The name is matched loosely.  See PropertyAliases.txt for names
+     * and a description of loose matching.  If the value string is
+     * empty, then this string is interpreted as either a
+     * General_Category value alias, a Script value alias, a binary
+     * property alias, or a special ID.  Special IDs are matched
+     * loosely and correspond to the following sets:
+     *
+     * "ANY" = [\u0000-\U0010FFFF],
+     * "ASCII" = [\u0000-\u007F].
+     *
+     * @param valueAlias a value alias, either short or long.  The
+     * name is matched loosely.  See PropertyValueAliases.txt for
+     * names and a description of loose matching.  In addition to
+     * aliases listed, numeric values and canonical combining classes
+     * may be expressed numerically, e.g., ("nv", "0.5") or ("ccc",
+     * "220").  The value string may also be empty.
+     *
+     * @return a reference to this set
+     *
+     * @stable ICU 2.4
+     */
+    public UnicodeSet applyPropertyAlias(String propertyAlias, String valueAlias) {
+        return applyPropertyAlias(propertyAlias, valueAlias, null);
+    }
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given property.  Prior contents of this
+     * set are lost.
+     * @param propertyAlias
+     * @param valueAlias
+     * @param symbols if not null, then symbols are first called to see if a property
+     * is available. If true, then everything else is skipped.
+     * @return this set
+     * @stable ICU 3.2
+     */
+    public UnicodeSet applyPropertyAlias(String propertyAlias,
+                                         String valueAlias, SymbolTable symbols) {
+        checkFrozen();
+        int p;
+        int v;
+        boolean mustNotBeEmpty = false, invert = false;
+
+        if (symbols != null
+                && (symbols instanceof XSymbolTable)
+                && ((XSymbolTable)symbols).applyPropertyAlias(propertyAlias, valueAlias, this)) {
+                return this;
+        }
+
+        if (valueAlias.length() > 0) {
+            p = UCharacter.getPropertyEnum(propertyAlias);
+
+            // Treat gc as gcm
+            if (p == UProperty.GENERAL_CATEGORY) {
+                p = UProperty.GENERAL_CATEGORY_MASK;
+            }
+
+            if ((p >= UProperty.BINARY_START && p < UProperty.BINARY_LIMIT) ||
+                (p >= UProperty.INT_START && p < UProperty.INT_LIMIT) ||
+                (p >= UProperty.MASK_START && p < UProperty.MASK_LIMIT)) {
+                try {
+                    v = UCharacter.getPropertyValueEnum(p, valueAlias);
+                } catch (IllegalArgumentException e) {
+                    // Handle numeric CCC
+                    if (p == UProperty.CANONICAL_COMBINING_CLASS ||
+                        p == UProperty.LEAD_CANONICAL_COMBINING_CLASS ||
+                        p == UProperty.TRAIL_CANONICAL_COMBINING_CLASS) {
+                        v = Integer.parseInt(Utility.deleteRuleWhiteSpace(valueAlias));
+                        // If the resultant set is empty then the numeric value
+                        // was invalid.
+                        //mustNotBeEmpty = true;
+                        // old code was wrong; anything between 0 and 255 is valid even if unused.
+                        if (v < 0 || v > 255) throw e;
+                    } else {
+                        throw e;
+                    }
+                }
+            }
+
+            else {
+
+                switch (p) {
+                case UProperty.NUMERIC_VALUE:
+                    {
+                        double value = Double.parseDouble(Utility.deleteRuleWhiteSpace(valueAlias));
+                        applyFilter(new NumericValueFilter(value), UCharacterProperty.SRC_CHAR);
+                        return this;
+                    }
+                case UProperty.NAME:
+                case UProperty.UNICODE_1_NAME:
+                    {
+                        // Must munge name, since
+                        // UCharacter.charFromName() does not do
+                        // 'loose' matching.
+                        String buf = mungeCharName(valueAlias);
+                        int ch =
+                            (p == UProperty.NAME) ?
+                            UCharacter.getCharFromExtendedName(buf) :
+                            UCharacter.getCharFromName1_0(buf);
+                        if (ch == -1) {
+                            throw new IllegalArgumentException("Invalid character name");
+                        }
+                        clear();
+                        add_unchecked(ch);
+                        return this;
+                    }
+                case UProperty.AGE:
+                    {
+                        // Must munge name, since
+                        // VersionInfo.getInstance() does not do
+                        // 'loose' matching.
+                        VersionInfo version = VersionInfo.getInstance(mungeCharName(valueAlias));
+                        applyFilter(new VersionFilter(version), UCharacterProperty.SRC_PROPSVEC);
+                        return this;
+                    }
+                }
+
+                // p is a non-binary, non-enumerated property that we
+                // don't support (yet).
+                throw new IllegalArgumentException("Unsupported property");
+            }
+        }
+
+        else {
+            // valueAlias is empty.  Interpret as General Category, Script,
+            // Binary property, or ANY or ASCII.  Upon success, p and v will
+            // be set.
+            try {
+                p = UProperty.GENERAL_CATEGORY_MASK;
+                v = UCharacter.getPropertyValueEnum(p, propertyAlias);
+            } catch (IllegalArgumentException e) {
+                try {
+                    p = UProperty.SCRIPT;
+                    v = UCharacter.getPropertyValueEnum(p, propertyAlias);
+                } catch (IllegalArgumentException e2) {
+                    try {
+                        p = UCharacter.getPropertyEnum(propertyAlias);
+                    } catch (IllegalArgumentException e3) {
+                        p = -1;
+                    }
+                    if (p >= UProperty.BINARY_START && p < UProperty.BINARY_LIMIT) {
+                        v = 1;
+                    } else if (p == -1) {
+                        if (0 == UPropertyAliases.compare(ANY_ID, propertyAlias)) {
+                            set(MIN_VALUE, MAX_VALUE);
+                            return this;
+                        } else if (0 == UPropertyAliases.compare(ASCII_ID, propertyAlias)) {
+                            set(0, 0x7F);
+                            return this;
+                        } else if (0 == UPropertyAliases.compare(ASSIGNED, propertyAlias)) {
+                            // [:Assigned:]=[:^Cn:]
+                            p = UProperty.GENERAL_CATEGORY_MASK;
+                            v = (1<<UCharacter.UNASSIGNED);
+                            invert = true;
+                        } else {
+                            // Property name was never matched.
+                            throw new IllegalArgumentException("Invalid property alias: " + propertyAlias + "=" + valueAlias);
+                        }
+                    } else {
+                        // Valid propery name, but it isn't binary, so the value
+                        // must be supplied.
+                        throw new IllegalArgumentException("Missing property value");
+                    }
+                }
+            }
+        }
+
+        applyIntPropertyValue(p, v);
+        if(invert) {
+            complement();
+        }
+
+        if (mustNotBeEmpty && isEmpty()) {
+            // mustNotBeEmpty is set to true if an empty set indicates
+            // invalid input.
+            throw new IllegalArgumentException("Invalid property value");
+        }
+
+        return this;
+    }
+
+    //----------------------------------------------------------------
+    // Property set patterns
+    //----------------------------------------------------------------
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a property set pattern.
+     */
+    private static boolean resemblesPropertyPattern(String pattern, int pos) {
+        // Patterns are at least 5 characters long
+        if ((pos+5) > pattern.length()) {
+            return false;
+        }
+
+        // Look for an opening [:, [:^, \p, or \P
+        return pattern.regionMatches(pos, "[:", 0, 2) ||
+            pattern.regionMatches(true, pos, "\\p", 0, 2) ||
+            pattern.regionMatches(pos, "\\N", 0, 2);
+    }
+
+    /**
+     * Return true if the given iterator appears to point at a
+     * property pattern.  Regardless of the result, return with the
+     * iterator unchanged.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be unchanged.
+     * @param iterOpts RuleCharacterIterator options
+     */
+    private static boolean resemblesPropertyPattern(RuleCharacterIterator chars,
+                                                    int iterOpts) {
+        boolean result = false;
+        iterOpts &= ~RuleCharacterIterator.PARSE_ESCAPES;
+        Object pos = chars.getPos(null);
+        int c = chars.next(iterOpts);
+        if (c == '[' || c == '\\') {
+            int d = chars.next(iterOpts & ~RuleCharacterIterator.SKIP_WHITESPACE);
+            result = (c == '[') ? (d == ':') :
+                     (d == 'N' || d == 'p' || d == 'P');
+        }
+        chars.setPos(pos);
+        return result;
+    }
+
+    /**
+     * Parse the given property pattern at the given parse position.
+     * @param symbols TODO
+     */
+    private UnicodeSet applyPropertyPattern(String pattern, ParsePosition ppos, SymbolTable symbols) {
+        int pos = ppos.getIndex();
+
+        // On entry, ppos should point to one of the following locations:
+
+        // Minimum length is 5 characters, e.g. \p{L}
+        if ((pos+5) > pattern.length()) {
+            return null;
+        }
+
+        boolean posix = false; // true for [:pat:], false for \p{pat} \P{pat} \N{pat}
+        boolean isName = false; // true for \N{pat}, o/w false
+        boolean invert = false;
+
+        // Look for an opening [:, [:^, \p, or \P
+        if (pattern.regionMatches(pos, "[:", 0, 2)) {
+            posix = true;
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos < pattern.length() && pattern.charAt(pos) == '^') {
+                ++pos;
+                invert = true;
+            }
+        } else if (pattern.regionMatches(true, pos, "\\p", 0, 2) ||
+                   pattern.regionMatches(pos, "\\N", 0, 2)) {
+            char c = pattern.charAt(pos+1);
+            invert = (c == 'P');
+            isName = (c == 'N');
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos == pattern.length() || pattern.charAt(pos++) != '{') {
+                // Syntax error; "\p" or "\P" not followed by "{"
+                return null;
+            }
+        } else {
+            // Open delimiter not seen
+            return null;
+        }
+
+        // Look for the matching close delimiter, either :] or }
+        int close = pattern.indexOf(posix ? ":]" : "}", pos);
+        if (close < 0) {
+            // Syntax error; close delimiter missing
+            return null;
+        }
+
+        // Look for an '=' sign.  If this is present, we will parse a
+        // medium \p{gc=Cf} or long \p{GeneralCategory=Format}
+        // pattern.
+        int equals = pattern.indexOf('=', pos);
+        String propName, valueName;
+        if (equals >= 0 && equals < close && !isName) {
+            // Equals seen; parse medium/long pattern
+            propName = pattern.substring(pos, equals);
+            valueName = pattern.substring(equals+1, close);
+        }
+
+        else {
+            // Handle case where no '=' is seen, and \N{}
+            propName = pattern.substring(pos, close);
+            valueName = "";
+
+            // Handle \N{name}
+            if (isName) {
+                // This is a little inefficient since it means we have to
+                // parse "na" back to UProperty.NAME even though we already
+                // know it's UProperty.NAME.  If we refactor the API to
+                // support args of (int, String) then we can remove
+                // "na" and make this a little more efficient.
+                valueName = propName;
+                propName = "na";
+            }
+        }
+
+        applyPropertyAlias(propName, valueName, symbols);
+
+        if (invert) {
+            complement();
+        }
+
+        // Move to the limit position after the close delimiter
+        ppos.setIndex(close + (posix ? 2 : 1));
+
+        return this;
+    }
+
+    /**
+     * Parse a property pattern.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be advanced to the first character after the parsed
+     * pattern, or the end of the iteration if all characters are
+     * parsed.
+     * @param rebuiltPat the pattern that was parsed, rebuilt or
+     * copied from the input pattern, as appropriate.
+     * @param symbols TODO
+     */
+    private void applyPropertyPattern(RuleCharacterIterator chars,
+                                      StringBuffer rebuiltPat, SymbolTable symbols) {
+        String patStr = chars.lookahead();
+        ParsePosition pos = new ParsePosition(0);
+        applyPropertyPattern(patStr, pos, symbols);
+        if (pos.getIndex() == 0) {
+            syntaxError(chars, "Invalid property pattern");
+        }
+        chars.jumpahead(pos.getIndex());
+        rebuiltPat.append(patStr.substring(0, pos.getIndex()));
+    }
+
+    //----------------------------------------------------------------
+    // Case folding API
+    //----------------------------------------------------------------
+
+    /**
+     * Bitmask for constructor and applyPattern() indicating that
+     * white space should be ignored.  If set, ignore characters for
+     * which UCharacterProperty.isRuleWhiteSpace() returns true,
+     * unless they are quoted or escaped.  This may be ORed together
+     * with other selectors.
+     * @stable ICU 3.8
+     */
+    public static final int IGNORE_SPACE = 1;
+
+    /**
+     * Bitmask for constructor, applyPattern(), and closeOver()
+     * indicating letter case.  This may be ORed together with other
+     * selectors.
+     *
+     * Enable case insensitive matching.  E.g., "[ab]" with this flag
+     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
+     * match all except 'a', 'A', 'b', and 'B'. This performs a full
+     * closure over case mappings, e.g. U+017F for s.
+     *
+     * The resulting set is a superset of the input for the code points but
+     * not for the strings.
+     * It performs a case mapping closure of the code points and adds
+     * full case folding strings for the code points, and reduces strings of
+     * the original set to their full case folding equivalents.
+     *
+     * This is designed for case-insensitive matches, for example
+     * in regular expressions. The full code point case closure allows checking of
+     * an input character directly against the closure set.
+     * Strings are matched by comparing the case-folded form from the closure
+     * set with an incremental case folding of the string in question.
+     *
+     * The closure set will also contain single code points if the original
+     * set contained case-equivalent strings (like U+00DF for "ss" or "Ss" etc.).
+     * This is not necessary (that is, redundant) for the above matching method
+     * but results in the same closure sets regardless of whether the original
+     * set contained the code point or a string.
+     * @stable ICU 3.8
+     */
+    public static final int CASE = 2;
+
+    /**
+     * Alias for UnicodeSet.CASE, for ease of porting from C++ where ICU4C
+     * also has both USET_CASE and USET_CASE_INSENSITIVE (see uset.h).
+     * @see #CASE
+     * @stable ICU 3.4
+     */
+    public static final int CASE_INSENSITIVE = 2;
+
+    /**
+     * Bitmask for constructor, applyPattern(), and closeOver()
+     * indicating letter case.  This may be ORed together with other
+     * selectors.
+     *
+     * Enable case insensitive matching.  E.g., "[ab]" with this flag
+     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
+     * match all except 'a', 'A', 'b', and 'B'. This adds the lower-,
+     * title-, and uppercase mappings as well as the case folding
+     * of each existing element in the set.
+     * @stable ICU 3.4
+     */
+    public static final int ADD_CASE_MAPPINGS = 4;
+
+    //  add the result of a full case mapping to the set
+    //  use str as a temporary string to avoid constructing one
+    private static final void addCaseMapping(UnicodeSet set, int result, StringBuffer full) {
+        if(result >= 0) {
+            if(result > UCaseProps.MAX_STRING_LENGTH) {
+                // add a single-code point case mapping
+                set.add(result);
+            } else {
+                // add a string case mapping from full with length result
+                set.add(full.toString());
+                full.setLength(0);
+            }
+        }
+        // result < 0: the code point mapped to itself, no need to add it
+        // see UCaseProps
+    }
+
+    /**
+     * Close this set over the given attribute.  For the attribute
+     * CASE, the result is to modify this set so that:
+     *
+     * 1. For each character or string 'a' in this set, all strings
+     * 'b' such that foldCase(a) == foldCase(b) are added to this set.
+     * (For most 'a' that are single characters, 'b' will have
+     * b.length() == 1.)
+     *
+     * 2. For each string 'e' in the resulting set, if e !=
+     * foldCase(e), 'e' will be removed.
+     *
+     * Example: [aq\u00DF{Bc}{bC}{Fi}] => [aAqQ\u00DF\uFB01{ss}{bc}{fi}]
+     *
+     * (Here foldCase(x) refers to the operation
+     * UCharacter.foldCase(x, true), and a == b actually denotes
+     * a.equals(b), not pointer comparison.)
+     *
+     * @param attribute bitmask for attributes to close over.
+     * Currently only the CASE bit is supported.  Any undefined bits
+     * are ignored.
+     * @return a reference to this set.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet closeOver(int attribute) {
+        checkFrozen();
+        if ((attribute & (CASE | ADD_CASE_MAPPINGS)) != 0) {
+            UCaseProps csp;
+            try {
+                csp = UCaseProps.getSingleton();
+            } catch(IOException e) {
+                return this;
+            }
+            UnicodeSet foldSet = new UnicodeSet(this);
+            ULocale root = ULocale.ROOT;
+
+            // start with input set to guarantee inclusion
+            // CASE: remove strings because the strings will actually be reduced (folded);
+            //       therefore, start with no strings and add only those needed
+            if((attribute & CASE) != 0) {
+                foldSet.strings.clear();
+            }
+
+            int n = getRangeCount();
+            int result;
+            StringBuffer full = new StringBuffer();
+            int locCache[] = new int[1];
+
+            for (int i=0; i<n; ++i) {
+                int start = getRangeStart(i);
+                int end   = getRangeEnd(i);
+
+                if((attribute & CASE) != 0) {
+                    // full case closure
+                    for (int cp=start; cp<=end; ++cp) {
+                        csp.addCaseClosure(cp, foldSet);
+                    }
+                } else {
+                    // add case mappings
+                    // (does not add long s for regular s, or Kelvin for k, for example)
+                    for (int cp=start; cp<=end; ++cp) {
+                        result = csp.toFullLower(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullTitle(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullUpper(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullFolding(cp, full, 0);
+                        addCaseMapping(foldSet, result, full);
+                    }
+                }
+            }
+            if (!strings.isEmpty()) {
+                String str;
+                if ((attribute & CASE) != 0) {
+                    Iterator it = strings.iterator();
+                    while (it.hasNext()) {
+                        str = UCharacter.foldCase((String)it.next(), 0);
+                        if(!csp.addStringCaseClosure(str, foldSet)) {
+                            foldSet.add(str); // does not map to code points: add the folded string itself
+                        }
+                    }
+                } else {
+                    BreakIterator bi = BreakIterator.getWordInstance(root);
+                    Iterator it = strings.iterator();
+                    while (it.hasNext()) {
+                        str = (String)it.next();
+                        foldSet.add(UCharacter.toLowerCase(root, str));
+                        foldSet.add(UCharacter.toTitleCase(root, str, bi));
+                        foldSet.add(UCharacter.toUpperCase(root, str));
+                        foldSet.add(UCharacter.foldCase(str, 0));
+                    }
+                }
+            }
+            set(foldSet);
+        }
+        return this;
+    }
+
+    /**
+     * Internal class for customizing UnicodeSet parsing of properties.
+     * TODO: extend to allow customizing of codepoint ranges
+     * @draft ICU3.8
+     * @provisional This API might change or be removed in a future release.
+     * @author medavis
+     */
+    abstract public static class XSymbolTable implements SymbolTable {
+        /**
+         * Default constructor
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public XSymbolTable(){}
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public UnicodeMatcher lookupMatcher(int i) {
+            return null;
+        }
+        /**
+         * Apply a new property alias. Is called when parsing [:xxx=yyy:]. Results are to put into result.
+         * @param propertyName the xxx in [:xxx=yyy:]
+         * @param propertyValue the yyy in [:xxx=yyy:]
+         * @param result where the result is placed
+         * @return true if handled
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean applyPropertyAlias(String propertyName, String propertyValue, UnicodeSet result) {
+            return false;
+        }
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+            */
+        public char[] lookup(String s) {
+            return null;
+        }
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            return null;
+        }
+    }
+
+    private boolean frozen;
+    
+    /**
+     * Is this frozen, according to the Freezable interface?
+     * @return value
+     * @stable ICU 3.8
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    /**
+     * Freeze this class, according to the Freezable interface.
+     * @return this
+     * @stable ICU 3.8
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Clone a thawed version of this class, according to the Freezable interface.
+     * @return this
+     * @stable ICU 3.8
+     */
+    public Object cloneAsThawed() {
+        UnicodeSet result = (UnicodeSet) clone();
+        result.frozen = false;
+        return result;
+    }
+    
+    // internal function
+    private void checkFrozen() {
+        if (frozen) {
+            throw new UnsupportedOperationException("Attempt to modify frozen object");
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeSetIterator.java b/src/com/ibm/icu/text/UnicodeSetIterator.java
new file mode 100644
index 0000000..3eb3460
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSetIterator.java
@@ -0,0 +1,248 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.*;
+
+/**
+ * UnicodeSetIterator iterates over the contents of a UnicodeSet.  It
+ * iterates over either code points or code point ranges.  After all
+ * code points or ranges have been returned, it returns the
+ * multicharacter strings of the UnicodSet, if any.
+ *
+ * <p>To iterate over code points and multicharacter strings,
+ * use a loop like this:
+ * <pre>
+ * for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+ *   processString(it.getString());
+ * }
+ * </pre>
+ *
+ * <p>To iterate over code point ranges, use a loop like this:
+ * <pre>
+ * for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.nextRange();) {
+ *   if (it.codepoint != UnicodeSetIterator.IS_STRING) {
+ *     processCodepointRange(it.codepoint, it.codepointEnd);
+ *   } else {
+ *     processString(it.getString());
+ *   }
+ * }
+ * </pre>
+ * @author M. Davis
+ * @stable ICU 2.0
+ */
+public class UnicodeSetIterator {
+    
+    /**
+     * Value of <tt>codepoint</tt> if the iterator points to a string.
+     * If <tt>codepoint == IS_STRING</tt>, then examine
+     * <tt>string</tt> for the current iteration result.
+     * @stable ICU 2.0
+     */
+    public static int IS_STRING = -1;
+    
+    /**
+     * Current code point, or the special value <tt>IS_STRING</tt>, if
+     * the iterator points to a string.
+     * @stable ICU 2.0
+     */
+    public int codepoint;
+
+    /**
+     * When iterating over ranges using <tt>nextRange()</tt>,
+     * <tt>codepointEnd</tt> contains the inclusive end of the
+     * iteration range, if <tt>codepoint != IS_STRING</tt>.  If
+     * iterating over code points using <tt>next()</tt>, or if
+     * <tt>codepoint == IS_STRING</tt>, then the value of
+     * <tt>codepointEnd</tt> is undefined.
+     * @stable ICU 2.0
+     */
+    public int codepointEnd;
+
+    /**
+     * If <tt>codepoint == IS_STRING</tt>, then <tt>string</tt> points
+     * to the current string.  If <tt>codepoint != IS_STRING</tt>, the
+     * value of <tt>string</tt> is undefined.
+     * @stable ICU 2.0
+     */
+    public String string;
+
+    /**
+     * Create an iterator over the given set.
+     * @param set set to iterate over
+     * @stable ICU 2.0
+     */
+    public UnicodeSetIterator(UnicodeSet set) {
+        reset(set);
+    }
+        
+    /**
+     * Create an iterator over nothing.  <tt>next()</tt> and
+     * <tt>nextRange()</tt> return false. This is a convenience
+     * constructor allowing the target to be set later.
+     * @stable ICU 2.0
+     */
+    public UnicodeSetIterator() {
+        reset(new UnicodeSet());
+    }
+        
+    /**
+     * Returns the next element in the set, either a single code point
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * single code point in the <tt>codepoint</tt> field.
+     * 
+     * <p>The order of iteration is all code points in sorted order,
+     * followed by all strings sorted order.  <tt>codepointEnd</tt> is
+     * undefined after calling this method.  <tt>string</tt> is
+     * undefined unless <tt>codepoint == IS_STRING</tt>.  Do not mix
+     * calls to <tt>next()</tt> and <tt>nextRange()</tt> without
+     * calling <tt>reset()</tt> between them.  The results of doing so
+     * are undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     * @stable ICU 2.0
+     */
+    public boolean next() {
+        if (nextElement <= endElement) {
+            codepoint = codepointEnd = nextElement++;
+            return true;
+        }
+        if (range < endRange) {
+            loadRange(++range);
+            codepoint = codepointEnd = nextElement++;
+            return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Returns the next element in the set, either a code point range
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * range of one or more code points from <tt>codepoint</tt> to
+     * <tt>codepointeEnd</tt> inclusive.
+     * 
+     * <p>The order of iteration is all code points ranges in sorted
+     * order, followed by all strings sorted order.  Ranges are
+     * disjoint and non-contiguous.  <tt>string</tt> is undefined
+     * unless <tt>codepoint == IS_STRING</tt>.  Do not mix calls to
+     * <tt>next()</tt> and <tt>nextRange()</tt> without calling
+     * <tt>reset()</tt> between them.  The results of doing so are
+     * undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     * @stable ICU 2.0
+     */
+    public boolean nextRange() {
+        if (nextElement <= endElement) {
+            codepointEnd = endElement;
+            codepoint = nextElement;
+            nextElement = endElement+1;
+            return true;
+        }
+        if (range < endRange) {
+            loadRange(++range);
+            codepointEnd = endElement;
+            codepoint = nextElement;
+            nextElement = endElement+1;
+            return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Sets this iterator to visit the elements of the given set and
+     * resets it to the start of that set.  The iterator is valid only
+     * so long as <tt>set</tt> is valid.
+     * @param uset the set to iterate over.
+     * @stable ICU 2.0
+     */
+    public void reset(UnicodeSet uset) {
+        set = uset;
+        reset();
+    }
+        
+    /**
+     * Resets this iterator to the start of the set.
+     * @stable ICU 2.0
+     */
+    public void reset() {
+        endRange = set.getRangeCount() - 1;
+        range = 0;
+        endElement = -1;
+        nextElement = 0;            
+        if (endRange >= 0) {
+            loadRange(range);
+        }
+        stringIterator = null;
+        if (set.strings != null) {
+            stringIterator = set.strings.iterator();
+            if (!stringIterator.hasNext()) stringIterator = null;
+        }
+    }
+    
+    /**
+     * Gets the current string from the iterator. Only use after calling next(), not nextRange().
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getString() {
+        if (codepoint != IS_STRING) {
+            return UTF16.valueOf(codepoint);
+        }
+        return string;
+    }
+    
+    // ======================= PRIVATES ===========================
+    
+    private UnicodeSet set;
+    private int endRange = 0;
+    private int range = 0;
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int endElement;
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int nextElement;
+    private Iterator stringIterator = null;
+    
+    /**
+     * Invariant: stringIterator is null when there are no (more) strings remaining
+     */
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void loadRange(int aRange) {
+        nextElement = set.getRangeStart(aRange);
+        endElement = set.getRangeEnd(aRange);
+    }
+}
diff --git a/src/com/ibm/icu/text/UppercaseTransliterator.java b/src/com/ibm/icu/text/UppercaseTransliterator.java
new file mode 100644
index 0000000..1d3317e
--- /dev/null
+++ b/src/com/ibm/icu/text/UppercaseTransliterator.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toUpper()
+ * case mapping.
+ */
+class UppercaseTransliterator extends Transliterator {
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Upper";
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UppercaseTransliterator(ULocale.US);
+            }
+        });
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UppercaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+    if(csp==null) {
+        return;
+    }
+
+    if(offsets.start >= offsets.limit) {
+        return;
+    } 
+
+    iter.setText(text);
+    result.setLength(0);
+    int c, delta;
+
+    // Walk through original string
+    // If there is a case change, modify corresponding position in replaceable
+
+    iter.setIndex(offsets.start);
+    iter.setLimit(offsets.limit);
+    iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+    while((c=iter.nextCaseMapCP())>=0) {
+        c=csp.toFullUpper(c, iter, result, locale, locCache);
+
+        if(iter.didReachLimit() && isIncremental) {
+            // the case mapping function tried to look beyond the context limit
+            // wait for more input
+            offsets.start=iter.getCaseMapCPStart();
+            return;
+        }
+
+        /* decode the result */
+        if(c<0) {
+            /* c mapped to itself, no change */
+            continue;
+        } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+            /* replace by the mapping string */
+            delta=iter.replace(result.toString());
+            result.setLength(0);
+        } else {
+            /* replace by single-code point mapping */
+                delta=iter.replace(UTF16.valueOf(c));
+            }
+
+            if(delta!=0) {
+                offsets.limit += delta;
+                offsets.contextLimit += delta;
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/package.html b/src/com/ibm/icu/text/package.html
new file mode 100644
index 0000000..6bd070d
--- /dev/null
+++ b/src/com/ibm/icu/text/package.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Extensions and enhancements to java.text to support unicode transforms, UnicodeSet, surrogate char utilities, UCA collation, normalization, break iteration (rule and dictionary based), enhanced number format, international string searching, and arabic shaping.</p>
+
+<ul>
+<li>Unicode Transforms (Transliteration) convert between different representations of unicode text.</li>
+<li>UnicodeSet provides set operations on unicode characters and strings, and are representable as compact expressions.</li>
+<li>Surrogate character utilities (UTF16) provides indexing and substring operations on text containing surrogates.</li>
+<li>UCA collation implements the current Unicode Collation Algorithm.  Data for many locale-specific collations is provided.</li>
+<li>Normalization supports standard Unicode normalization forms as well as FCD.</li>
+<li>Break iteration supports character, word, line, sentences, and title case breaks.</li>
+<li>Enhanced number format to 'spell out' numbers, padding and rounding control.</li>
+<li>Internationally sensitive string searching, uses collation.</li>
+<li>Arabic shaping converts between shaped and unshaped arabic characters and digits.</li>
+</ul>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/AnnualTimeZoneRule.java b/src/com/ibm/icu/util/AnnualTimeZoneRule.java
new file mode 100644
index 0000000..9fba9d3
--- /dev/null
+++ b/src/com/ibm/icu/util/AnnualTimeZoneRule.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.Date;
+
+import com.ibm.icu.impl.Grego;
+
+
+/**
+ * <code>AnnualTimeZoneRule</code> is a class used for representing a time zone
+ * rule which takes effect annually.  Years used in this class are
+ * all Gregorian calendar years.
+ * 
+ * @stable ICU 3.8
+ */
+public class AnnualTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = -8870666707791230688L;
+
+    /**
+     * The constant representing the maximum year used for designating a rule is permanent.
+     * @stable ICU 3.8
+     */
+    public static final int MAX_YEAR = Integer.MAX_VALUE;
+
+    private final DateTimeRule dateTimeRule;
+    private final int startYear;
+    private final int endYear;
+
+    /**
+     * Constructs a <code>AnnualTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time, the amount of daylight saving offset adjustment,
+     * the annual start time rule and the start/until years.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The GMT offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in
+     *                      milliseconds.  If this ia a rule for standard time,
+     *                      the value of this argument is 0.
+     * @param dateTimeRule  The start date/time rule repeated annually.
+     * @param startYear     The first year when this rule takes effect.
+     * @param endYear       The last year when this rule takes effect.  If this
+     *                      rule is effective forever in future, specify MAX_YEAR.
+     * 
+     * @stable ICU 3.8
+     */
+    public AnnualTimeZoneRule(String name, int rawOffset, int dstSavings,
+            DateTimeRule dateTimeRule, int startYear, int endYear) {
+        super(name, rawOffset, dstSavings);
+        this.dateTimeRule = dateTimeRule;
+        this.startYear = startYear;
+        this.endYear = endYear > MAX_YEAR ? MAX_YEAR : endYear;
+    }
+
+    /**
+     * Gets the start date/time rule associated used by this rule.
+     * 
+     * @return  An <code>AnnualDateTimeRule</code> which represents the start date/time
+     *          rule used by this time zone rule.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule getRule() {
+        return dateTimeRule;
+    }
+
+    /**
+     * Gets the first year when this rule takes effect.
+     * 
+     * @return  The start year of this rule.  The year is in Gregorian calendar
+     *          with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getStartYear() {
+        return startYear;
+    }
+
+    /**
+     * Gets the end year when this rule takes effect.
+     * 
+     * @return  The end year of this rule (inclusive). The year is in Gregorian calendar
+     *          with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getEndYear() {
+        return endYear;
+    }
+
+    /**
+     * Gets the time when this rule takes effect in the given year.
+     * 
+     * @param year              The Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time.
+     * 
+     * @return  The time when this rule takes effect in the year, or
+     *          null if this rule is not applicable in the year.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getStartInYear(int year, int prevRawOffset, int prevDSTSavings) {
+        if (year < startYear || year > endYear) {
+            return null;
+        }
+
+        long ruleDay;
+        int type = dateTimeRule.getDateRuleType();
+
+        if (type == DateTimeRule.DOM) {
+            ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), dateTimeRule.getRuleDayOfMonth());
+        } else {
+            boolean after = true;
+            if (type == DateTimeRule.DOW) {
+                int weeks = dateTimeRule.getRuleWeekInMonth();
+                if (weeks > 0) {
+                    ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), 1);
+                    ruleDay += 7 * (weeks - 1);
+                } else {
+                    after = false;
+                    ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), 
+                            Grego.monthLength(year, dateTimeRule.getRuleMonth()));
+                    ruleDay += 7 * (weeks + 1);
+                }
+            } else {
+                int month = dateTimeRule.getRuleMonth();
+                int dom = dateTimeRule.getRuleDayOfMonth();
+                if (type == DateTimeRule.DOW_LEQ_DOM) {
+                    after = false;
+                    // Handle Feb <=29
+                    if (month == Calendar.FEBRUARY && dom == 29 && !Grego.isLeapYear(year)) {
+                        dom--;
+                    }
+                }
+                ruleDay = Grego.fieldsToDay(year, month, dom);
+            }
+
+            int dow = Grego.dayOfWeek(ruleDay);
+            int delta = dateTimeRule.getRuleDayOfWeek() - dow;
+            if (after) {
+                delta = delta < 0 ? delta + 7 : delta;
+            } else {
+                delta = delta > 0 ? delta - 7 : delta;
+            }
+            ruleDay += delta;
+        }
+
+        long ruleTime = ruleDay * Grego.MILLIS_PER_DAY + dateTimeRule.getRuleMillisInDay();
+        if (dateTimeRule.getTimeRuleType() != DateTimeRule.UTC_TIME) {
+            ruleTime -= prevRawOffset;
+        }
+        if (dateTimeRule.getTimeRuleType() == DateTimeRule.WALL_TIME) {
+            ruleTime -= prevDSTSavings;
+        }
+        return new Date(ruleTime);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        return getStartInYear(startYear, prevRawOffset, prevDSTSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        if (endYear == MAX_YEAR) {
+            return null;
+        }
+        return getStartInYear(endYear, prevRawOffset, prevDSTSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive) {
+        int[] fields = Grego.timeToFields(base, null);
+        int year = fields[0];
+        if (year < startYear) {
+            return getFirstStart(prevRawOffset, prevDSTSavings);
+        }
+        Date d = getStartInYear(year, prevRawOffset, prevDSTSavings);
+        if (d != null && (d.getTime() < base || (!inclusive && (d.getTime() == base)))) {
+            d = getStartInYear(year + 1, prevRawOffset, prevDSTSavings);
+        }
+        return d;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive) {
+        int[] fields = Grego.timeToFields(base, null);
+        int year = fields[0];
+        if (year > endYear) {
+            return getFinalStart(prevRawOffset, prevDSTSavings);
+        }
+        Date d = getStartInYear(year, prevRawOffset, prevDSTSavings);
+        if (d != null && (d.getTime() > base || (!inclusive && (d.getTime() == base)))) {
+            d = getStartInYear(year - 1, prevRawOffset, prevDSTSavings);
+        }
+        return d;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (!(other instanceof AnnualTimeZoneRule)) {
+            return false;
+        }
+        AnnualTimeZoneRule otherRule = (AnnualTimeZoneRule)other;
+        if (startYear == otherRule.startYear
+                && endYear == otherRule.endYear
+                && dateTimeRule.equals(otherRule.dateTimeRule)) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>AnnualTimeZoneRule</code> always returns true.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return true;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>AnnualTimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append(", rule={" + dateTimeRule + "}");
+        buf.append(", startYear=" + startYear);
+        buf.append(", endYear=");
+        if (endYear == MAX_YEAR) {
+            buf.append("max");
+        } else {
+            buf.append(endYear);
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/BasicTimeZone.java b/src/com/ibm/icu/util/BasicTimeZone.java
new file mode 100644
index 0000000..bf3c57a
--- /dev/null
+++ b/src/com/ibm/icu/util/BasicTimeZone.java
@@ -0,0 +1,563 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.BitSet;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>BasicTimeZone</code> is an abstract class extending <code>TimeZone</code>.
+ * This class provides some additional methods to access time zone transitions
+ * and rules.  All ICU <code>TimeZone</code> concrete subclasses extend this
+ * class.
+ * 
+ * @see com.ibm.icu.util.TimeZoneRule
+ * @see com.ibm.icu.util.TimeZoneTransition
+ * 
+ * @stable ICU 3.8
+ */
+public abstract class BasicTimeZone extends TimeZone {
+
+    private static final long serialVersionUID = -3204278532246180932L;
+
+    private static final long MILLIS_PER_YEAR = 365*24*60*60*1000L;
+
+    /**
+     * Gets the first time zone transition after the base time.
+     * 
+     * @param base      The base time.
+     * @param inclusive Whether the base time is inclusive or not.
+     *               
+     * @return  A <code>Date</code> holding the first time zone transition time
+     *          after the given base time, or null if no time zone transitions
+     *          are available after the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneTransition getNextTransition(long base, boolean inclusive);
+
+    /**
+     * Gets the last time zone transition before the base time.
+     * 
+     * @param base      The base time.
+     * @param inclusive Whether the base time is inclusive or not.
+     *               
+     * @return  A <code>Date</code> holding the last time zone transition time
+     *          before the given base time, or null if no time zone transitions
+     *          are available before the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneTransition getPreviousTransition(long base, boolean inclusive);
+
+    /**
+     * Checks if the time zone has equivalent transitions in the time range.
+     * This method returns true when all of transition times, from/to standard
+     * offsets and DST savings used by this time zone match the other in the
+     * time range.
+     * 
+     * @param tz    The instance of <code>TimeZone</code>
+     * @param start The start time of the evaluated time range (inclusive)
+     * @param end   The end time of the evaluated time range (inclusive)
+     * 
+     * @return true if the other time zone has the equivalent transitions in the
+     * time range.  When tz is not a <code>BasicTimeZone</code>, this method
+     * returns false.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone tz, long start, long end) {
+        return hasEquivalentTransitions(tz, start, end, false);
+    }
+
+    /**
+     * Checks if the time zone has equivalent transitions in the time range.
+     * This method returns true when all of transition times, from/to standard
+     * offsets and DST savings used by this time zone match the other in the
+     * time range.
+     * 
+     * @param tz    The instance of <code>TimeZone</code>
+     * @param start The start time of the evaluated time range (inclusive)
+     * @param end   The end time of the evaluated time range (inclusive)
+     * @param ignoreDstAmount
+     *              When true, any transitions with only daylight saving amount
+     *              changes will be ignored, except either of them is zero.
+     *              For example, a transition from rawoffset 3:00/dstsavings 1:00
+     *              to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison,
+     *              but a transtion from rawoffset 2:00/dstsavings 1:00 to
+     *              rawoffset 3:00/dstsavings 0:00 is included.
+     * 
+     * @return true if the other time zone has the equivalent transitions in the
+     * time range.  When tz is not a <code>BasicTimeZone</code>, this method
+     * returns false.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone tz, long start, long end, boolean ignoreDstAmount) {
+        if (hasSameRules(tz)) {
+            return true;
+        }
+        if (!(tz instanceof BasicTimeZone)) {
+            return false;
+        }
+
+        // Check the offsets at the start time
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+
+        getOffset(start, false, offsets1);
+        tz.getOffset(start, false, offsets2);
+
+        if (ignoreDstAmount) {
+            if ((offsets1[0] + offsets1[1] != offsets2[0] + offsets2[1])
+                || (offsets1[1] != 0 && offsets2[1] == 0)
+                || (offsets1[1] == 0 && offsets2[1] != 0)) {
+                return false;
+            }
+        } else {
+            if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                return false;
+            }            
+        }
+
+        // Check transitions in the range
+        long time = start;
+        while (true) {
+            TimeZoneTransition tr1 = getNextTransition(time, false);
+            TimeZoneTransition tr2 = ((BasicTimeZone)tz).getNextTransition(time, false);
+
+            if (ignoreDstAmount) {
+                // Skip a transition which only differ the amount of DST savings
+                if (tr1 != null
+                        && (tr1.getFrom().getRawOffset() + tr1.getFrom().getDSTSavings()
+                                == tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings())
+                        && (tr1.getFrom().getDSTSavings() != 0 && tr1.getTo().getDSTSavings() != 0)) {
+                    tr1 = getNextTransition(tr1.getTime(), false);
+                }
+                if (tr2 != null
+                        && (tr2.getFrom().getRawOffset() + tr2.getFrom().getDSTSavings()
+                                == tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings())
+                        && (tr2.getFrom().getDSTSavings() != 0 && tr2.getTo().getDSTSavings() != 0)) {
+                    tr2 = getNextTransition(tr2.getTime(), false);
+                }
+            }
+
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tr1 != null) {
+                if (tr1.getTime() <= end) {
+                    inRange1 = true;
+                }
+            }
+            if (tr2 != null) {
+                if (tr2.getTime() <= end) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1 || !inRange2) {
+                return false;
+            }
+            if (tr1.getTime() != tr2.getTime()) {
+                return false;
+            }
+            if (ignoreDstAmount) {
+                if (tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings()
+                            != tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings()
+                        || tr1.getTo().getDSTSavings() != 0 &&  tr2.getTo().getDSTSavings() == 0
+                        || tr1.getTo().getDSTSavings() == 0 &&  tr2.getTo().getDSTSavings() != 0) {
+                    return false;
+                }
+            } else {
+                if (tr1.getTo().getRawOffset() != tr2.getTo().getRawOffset() ||
+                    tr1.getTo().getDSTSavings() != tr2.getTo().getDSTSavings()) {
+                    return false;
+                }
+            }
+            time = tr1.getTime();
+        }
+        return true;
+    }
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule
+     * of this time zone object.  The first element in the result array will
+     * be the <code>InitialTimeZoneRule</code> instance for the initial rule.
+     * The rest will be either <code>AnnualTimeZoneRule</code> or
+     * <code>TimeArrayTimeZoneRule</code> instances representing transitions.
+     * 
+     * @return  The array of <code>TimeZoneRule</code> which represents this
+     *          time zone.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneRule[] getTimeZoneRules();
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule
+     * of this time zone object since the specified start time.  The first
+     * element in the result array will be the <code>InitialTimeZoneRule</code>
+     * instance for the initial rule.  The rest will be either
+     * <code>AnnualTimeZoneRule</code> or <code>TimeArrayTimeZoneRule</code>
+     * instances representing transitions.
+     * 
+     * @param start The start time (inclusive).
+     * @return  The array of <code>TimeZoneRule</code> which represents this
+     *          time zone since the start time.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules(long start) {
+        TimeZoneRule[] all = getTimeZoneRules();
+        TimeZoneTransition tzt = getPreviousTransition(start, true);
+        if (tzt == null) {
+            // No need to filter out rules only applicable to time before the start
+            return all;
+        }
+
+        BitSet isProcessed = new BitSet(all.length);
+        List filteredRules = new LinkedList();
+
+        // Create initial rule
+        TimeZoneRule initial = new InitialTimeZoneRule(tzt.getTo().getName(),
+                tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings());
+        filteredRules.add(initial);
+        isProcessed.set(0);
+
+        // Mark rules which does not need to be processed
+        for (int i = 1; i < all.length; i++) {
+            Date d = all[i].getNextStart(start, initial.getRawOffset(),
+                    initial.getDSTSavings(), false);
+            if (d == null) {
+                isProcessed.set(i);
+            }
+        }
+
+        long time = start;
+        boolean bFinalStd = false, bFinalDst = false;
+        while(!bFinalStd || !bFinalDst) {
+            tzt = getNextTransition(time, false);
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+
+            TimeZoneRule toRule = tzt.getTo();
+            int ruleIdx = 1;
+            for (; ruleIdx < all.length; ruleIdx++) {
+                if (all[ruleIdx].equals(toRule)) {
+                    break;
+                }
+            }
+            if (ruleIdx >= all.length) {
+                throw new IllegalStateException("The rule was not found");
+            }
+            if (isProcessed.get(ruleIdx)) {
+                continue;
+            }
+            if (toRule instanceof TimeArrayTimeZoneRule) {
+                TimeArrayTimeZoneRule tar = (TimeArrayTimeZoneRule)toRule;
+
+                // Get the previous raw offset and DST savings before the very first start time
+                long t = start;
+                while(true) {
+                    tzt = getNextTransition(t, false);
+                    if (tzt == null) {
+                        break;
+                    }
+                    if (tzt.getTo().equals(tar)) {
+                        break;
+                    }
+                    t = tzt.getTime();
+                }
+                if (tzt != null) {
+                    // Check if the entire start times to be added
+                    Date firstStart = tar.getFirstStart(tzt.getFrom().getRawOffset(),
+                            tzt.getFrom().getDSTSavings());
+                    if (firstStart.getTime() > start) {
+                        // Just add the rule as is
+                        filteredRules.add(tar);
+                    } else {
+                        // Collect transitions after the start time
+                        long[] times = tar.getStartTimes();
+                        int timeType = tar.getTimeType();
+                        int idx;
+                        for (idx = 0; idx < times.length; idx++) {
+                            t = times[idx];
+                            if (timeType == DateTimeRule.STANDARD_TIME) {
+                                t -= tzt.getFrom().getRawOffset();
+                            }
+                            if (timeType == DateTimeRule.WALL_TIME) {
+                                t -= tzt.getFrom().getDSTSavings();
+                            }
+                            if (t > start) {
+                                break;
+                            }
+                        }
+                        int asize = times.length - idx;
+                        if (asize > 0) {
+                            long[] newtimes = new long[asize];
+                            System.arraycopy(times, idx, newtimes, 0, asize);
+                            TimeArrayTimeZoneRule newtar = new TimeArrayTimeZoneRule(
+                                    tar.getName(), tar.getRawOffset(), tar.getDSTSavings(),
+                                    newtimes, tar.getTimeType());
+                            filteredRules.add(newtar);
+                        }
+                    }
+                }
+            } else if (toRule instanceof AnnualTimeZoneRule) {
+                AnnualTimeZoneRule ar = (AnnualTimeZoneRule)toRule;
+                Date firstStart = ar.getFirstStart(tzt.getFrom().getRawOffset(),
+                        tzt.getFrom().getDSTSavings());
+                if (firstStart.getTime() == tzt.getTime()) {
+                    // Just add the rule as is
+                    filteredRules.add(ar);
+                } else {
+                    // Calculate the transition year
+                    int[] dfields = new int[6];
+                    Grego.timeToFields(tzt.getTime(), dfields);
+                    // Recreate the rule
+                    AnnualTimeZoneRule newar = new AnnualTimeZoneRule(ar.getName(),
+                            ar.getRawOffset(), ar.getDSTSavings(),
+                            ar.getRule(), dfields[0], ar.getEndYear());
+                    filteredRules.add(newar);
+                }
+                // Check if this is a final rule
+                if (ar.getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                    // After both final standard and dst rule are processed,
+                    // exit this while loop.
+                    if (ar.getDSTSavings() == 0) {
+                        bFinalStd = true;
+                    } else {
+                        bFinalDst = true;
+                    }
+                }
+            }
+            isProcessed.set(ruleIdx);
+        }
+        TimeZoneRule[] rules = new TimeZoneRule[filteredRules.size()];
+        filteredRules.toArray(rules);
+        return rules;
+    }
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule of
+     * this time zone object near the specified date.  Some applications are not
+     * capable to handle historic time zone rule changes.  Also some applications
+     * can only handle certain type of rule definitions.  This method returns
+     * either a single <code>InitialTimeZoneRule</code> if this time zone does not
+     * have any daylight saving time within 1 year from the specified time, or a
+     * pair of <code>AnnualTimeZoneRule</code> whose rule type is
+     * <code>DateTimeRule.DOW</code> for date and <code>DateTimeRule.WALL_TIME</code>
+     * for time with a single <code>InitialTimeZoneRule</code> representing the
+     * initial time, when this time zone observes daylight saving time near the
+     * specified date.  Thus, the result may be only valid for dates around the
+     * specified date.
+     *
+     * @param date The date to be used for <code>TimeZoneRule</code> extraction.
+     * @return The array of <code>TimeZoneRule</code>, either a single
+     * <code>InitialTimeZoneRule</code> object, or a pair of <code>AnnualTimeZoneRule</code>
+     * with a single <code>InitialTimeZoneRule</code>.  The first element in the
+     * array is always a <code>InitialTimeZoneRule</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getSimpleTimeZoneRulesNear(long date) {
+        AnnualTimeZoneRule[] annualRules = null;
+        TimeZoneRule initialRule = null;
+        // Get the next transition
+        TimeZoneTransition tr = getNextTransition(date, false);
+        if (tr != null) {
+            String initialName = tr.getFrom().getName();
+            int initialRaw = tr.getFrom().getRawOffset();
+            int initialDst = tr.getFrom().getDSTSavings();
+
+            // Check if the next transition is either DST->STD or STD->DST and
+            // within roughly 1 year from the specified date
+            long nextTransitionTime = tr.getTime();
+            if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                    || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0))
+                        && date + MILLIS_PER_YEAR > nextTransitionTime) {
+                // Get the next next transition
+                annualRules = new AnnualTimeZoneRule[2];
+                // Get local wall time for the transition time
+                int dtfields[] = Grego.timeToFields(nextTransitionTime
+                        + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), null);
+                int weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                // Create DOW rule
+                DateTimeRule dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3],
+                        dtfields[5], DateTimeRule.WALL_TIME);
+                annualRules[0] = new AnnualTimeZoneRule(tr.getTo().getName(),
+                        tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                        dtr, dtfields[0], AnnualTimeZoneRule.MAX_YEAR);
+
+                tr = getNextTransition(nextTransitionTime, false);
+                AnnualTimeZoneRule secondRule = null;
+                if (tr != null) {
+                    // Check if the next next transition is either DST->STD or STD->DST
+                    // and within roughly 1 year from the next transition
+                    if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                            || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0))
+                                && nextTransitionTime + MILLIS_PER_YEAR > tr.getTime()) {
+                        // Generate another DOW rule
+                        dtfields = Grego.timeToFields(tr.getTime()
+                                + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), dtfields);
+                        weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                        dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3], dtfields[5],
+                                DateTimeRule.WALL_TIME);
+                        secondRule = new AnnualTimeZoneRule(tr.getTo().getName(),
+                                tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                                dtr, dtfields[0] - 1, AnnualTimeZoneRule.MAX_YEAR);
+                        // Make sure this rule can be applied to the specified date
+                        Date d = secondRule.getPreviousStart(date, tr.getFrom().getRawOffset(),
+                                tr.getFrom().getDSTSavings(), true);
+                        if (d != null && d.getTime() <= date
+                                && initialRaw == tr.getTo().getRawOffset()
+                                && initialDst == tr.getTo().getDSTSavings()) {
+                            // We can use this rule as the second transition rule
+                            annualRules[1] = secondRule;
+                        }
+                    }
+                }
+                if (annualRules[1] == null) {
+                    // Try previous transition
+                    tr = getPreviousTransition(date, true);
+                    if (tr != null) {
+                        // Check if the previous transition is either DST->STD or STD->DST.
+                        // The actual transition time does not matter here.
+                        if ((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                                || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0)) {
+                            // Generate another DOW rule
+                            dtfields = Grego.timeToFields(tr.getTime()
+                                    + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), dtfields);
+                            weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                            dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3], dtfields[5],
+                                    DateTimeRule.WALL_TIME);
+                            secondRule = new AnnualTimeZoneRule(tr.getTo().getName(),
+                                    tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                                    dtr, annualRules[0].getStartYear() - 1, AnnualTimeZoneRule.MAX_YEAR);
+                            // Check if this rule start after the first rule after the specified date
+                            Date d = secondRule.getNextStart(date,
+                                    tr.getFrom().getRawOffset(), tr.getFrom().getDSTSavings(), false);
+                            if (d.getTime() > nextTransitionTime) {
+                                // We can use this rule as the second transition rule
+                                annualRules[1] = secondRule;
+                            }
+                        }
+                    }
+                }
+                if (annualRules[1] == null) {
+                    // Cannot generate a good pair of AnnualTimeZoneRule
+                    annualRules = null;
+                } else {
+                    // The initial rule should represent the rule before the previous transition
+                    initialName = annualRules[0].getName();
+                    initialRaw = annualRules[0].getRawOffset();
+                    initialDst = annualRules[0].getDSTSavings();
+                }
+            }
+            initialRule = new InitialTimeZoneRule(initialName, initialRaw, initialDst);
+        } else {
+            // Try the previous one
+            tr = getPreviousTransition(date, true);
+            if (tr != null) {
+                initialRule = new InitialTimeZoneRule(tr.getTo().getName(),
+                        tr.getTo().getRawOffset(), tr.getTo().getDSTSavings());
+            } else {
+                // No transitions in the past.  Just use the current offsets
+                int[] offsets = new int[2];
+                getOffset(date, false, offsets);
+                initialRule = new InitialTimeZoneRule(getID(), offsets[0], offsets[1]);
+            }
+        }
+
+        TimeZoneRule[] result = null;
+        if (annualRules == null) {
+            result = new TimeZoneRule[1];
+            result[0] = initialRule;
+        } else {
+            result = new TimeZoneRule[3];
+            result[0] = initialRule;
+            result[1] = annualRules[0];
+            result[2] = annualRules[1];
+        }
+
+        return result;
+    }
+
+    /**
+     * The time type option for standard time used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_STD = 0x01;
+
+    /**
+     * The time type option for daylight saving time used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_DST = 0x03;
+
+    /**
+     * The option designate former time to be used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_FORMER = 0x04;
+
+    /**
+     * The option designate latter time to be used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_LATTER = 0x0C;
+
+    /**
+     * The bit mask for the time type option used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int STD_DST_MASK = 0x03;
+
+    /**
+     * The bit mask for the former/latter option used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int FORMER_LATTER_MASK = 0x0C;
+
+    /**
+     * Get time zone offsets from local wall time.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        throw new IllegalStateException("Not implemented");
+    }
+
+    /**
+     * Protected no arg constructor.
+     * @stable ICU 3.8
+     */
+    protected BasicTimeZone() {
+    }
+}
diff --git a/src/com/ibm/icu/util/BuddhistCalendar.java b/src/com/ibm/icu/util/BuddhistCalendar.java
new file mode 100644
index 0000000..bd7fcda
--- /dev/null
+++ b/src/com/ibm/icu/util/BuddhistCalendar.java
@@ -0,0 +1,247 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>BuddhistCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * in some predominantly Buddhist countries such as Thailand, and it is used for
+ * religious purposes elsewhere.
+ * <p>
+ * The Buddhist calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since the birth of the
+ * Buddha in 543 BC (Gregorian), so that 1 AD (Gregorian) is equivalent to 544
+ * BE (Buddhist Era) and 1998 AD is 2541 BE.
+ * <p>
+ * The Buddhist Calendar has only one allowable era: <code>BE</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 BE are rejected with an <code>IllegalArgumentException</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * BuddhistCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=buddhist"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class BuddhistCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 2583005278132380631L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Buddhist Era.  This is the only allowable <code>ERA</code>
+     * value for the Buddhist calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 2.8
+     */
+    public static final int BE = 0;
+    
+    /**
+     * Constructs a <code>BuddhistCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public BuddhistCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public BuddhistCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a BuddhistCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the birth of the Buddha.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    // Starts in -543 AD, ie 544 BC
+    private static final int BUDDHIST_ERA_START = -543;
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+    /**
+     * @stable ICU 2.8
+     */    
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in BuddhistCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Buddhist 2513)
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            year = internalGet(YEAR, GREGORIAN_EPOCH - BUDDHIST_ERA_START)
+                    + BUDDHIST_ERA_START;
+        }
+        return year;
+    }
+
+    // Return JD of start of given month/year
+    /**
+     * @stable ICU 2.8
+     */    
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return super.handleComputeMonthStart(eyear, month, useMonth);
+    }
+
+    /**
+     * @stable ICU 2.8
+     */    
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int y = internalGet(EXTENDED_YEAR) - BUDDHIST_ERA_START;
+        internalSet(ERA, 0);
+        internalSet(YEAR, y);
+    }
+
+    /**
+     * Override GregorianCalendar.  There is only one Buddhist ERA.  We
+     * should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to
+     * implement the 1..5000000 range, but it's not critical.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (field == ERA) {
+            return BE;
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+    
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "buddhist";
+    }
+}
diff --git a/src/com/ibm/icu/util/ByteArrayWrapper.java b/src/com/ibm/icu/util/ByteArrayWrapper.java
new file mode 100644
index 0000000..9dbd039
--- /dev/null
+++ b/src/com/ibm/icu/util/ByteArrayWrapper.java
@@ -0,0 +1,288 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <p>
+ * A simple utility class to wrap a byte array.
+ * </p>
+ * <p>
+ * Generally passed as an argument object into a method. The method takes
+ * responsibility of writing into the internal byte array and increasing its
+ * size when necessary.
+ * </p> 
+ * @author syn wee
+ * @stable ICU 2.8
+ */
+public class ByteArrayWrapper implements Comparable
+{
+    // public data member ------------------------------------------------
+    
+    /**
+     * Internal byte array.
+     * @stable ICU 2.8
+     */
+    public byte[] bytes;
+
+    /**
+     * Size of the internal byte array used. 
+     * Different from bytes.length, size will be &lt;= bytes.length. 
+     * Semantics of size is similar to java.util.Vector.size().
+     * @stable ICU 2.8
+     */
+    public int size;
+    
+    // public constructor ------------------------------------------------
+
+    /** 
+     * Construct a new ByteArrayWrapper with no data.
+     * @stable ICU 2.8
+     */
+    public ByteArrayWrapper() {
+        // leave bytes null, don't allocate twice
+    }
+
+    /**
+     * Construct a new ByteArrayWrapper from a byte array and size
+     * @param bytesToAdopt the byte array to adopt
+     * @param size the length of valid data in the byte array
+     * @throws IndexOutOfBoundsException if bytesToAdopt == null and size != 0, or
+     * size < 0, or size > bytesToAdopt.length.
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper(byte[] bytesToAdopt, int size) {
+        if ((bytesToAdopt == null && size != 0) || size < 0 || size > bytesToAdopt.length) {
+            throw new IndexOutOfBoundsException("illegal size: " + size);
+        }
+        this.bytes = bytesToAdopt;
+        this.size = size;
+    }
+
+    /**
+     * Construct a new ByteArrayWrapper from the contents of a ByteBuffer.
+     * @param source the ByteBuffer from which to get the data.
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper(ByteBuffer source) {
+        size = source.limit();
+        bytes = new byte[size];
+        source.get(bytes,0,size);
+    }
+
+    /**
+     * Create from ByteBuffer
+     * @param byteBuffer
+    public ByteArrayWrapper(ByteArrayWrapper source) {
+        size = source.size;
+        bytes = new byte[size];
+        copyBytes(source.bytes, 0, bytes, 0, size);
+    }
+     */
+
+    /**
+     * create from byte buffer
+     * @param src
+     * @param start
+     * @param limit
+    public ByteArrayWrapper(byte[] src, int start, int limit) {
+        size = limit - start;
+        bytes = new byte[size];
+        copyBytes(src, start, bytes, 0, size);
+    }
+     */
+
+    // public methods ----------------------------------------------------
+
+    /**
+     * Ensure that the internal byte array is at least of length capacity.     
+     * If the byte array is null or its length is less than capacity, a new 
+     * byte array of length capacity will be allocated.  
+     * The contents of the array (between 0 and size) remain unchanged. 
+     * @param capacity minimum length of internal byte array.
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper ensureCapacity(int capacity) 
+    {
+        if (bytes == null || bytes.length < capacity) {
+            byte[] newbytes = new byte[capacity];
+            copyBytes(bytes, 0, newbytes, 0, size);
+            bytes = newbytes;
+        }
+        return this;
+    }
+    
+    /**
+     * Set the internal byte array from offset 0 to (limit - start) with the 
+     * contents of src from offset start to limit. If the byte array is null or its length is less than capacity, a new 
+     * byte array of length (limit - start) will be allocated.  
+     * This resets the size of the internal byte array to (limit - start).
+     * @param src source byte array to copy from
+     * @param start start offset of src to copy from
+     * @param limit end + 1 offset of src to copy from
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public final ByteArrayWrapper set(byte[] src, int start, int limit) 
+    {
+        size = 0;
+        append(src, start, limit);
+        return this;
+    }
+    
+    /*
+    public final ByteArrayWrapper get(byte[] target, int start, int limit) 
+    {
+        int len = limit - start;
+        if (len > size) throw new IllegalArgumentException("limit too long");
+        copyBytes(bytes, 0, target, start, len);
+        return this;
+    }
+    */
+
+    /**
+     * Appends the internal byte array from offset size with the 
+     * contents of src from offset start to limit. This increases the size of
+     * the internal byte array to (size + limit - start).
+     * @param src source byte array to copy from
+     * @param start start offset of src to copy from
+     * @param limit end + 1 offset of src to copy from
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public final ByteArrayWrapper append(byte[] src, int start, int limit) 
+    {
+        int len = limit - start;
+        ensureCapacity(size + len);
+        copyBytes(src, start, bytes, size, len);
+        size += len;
+        return this;
+    }
+
+    /*
+    public final ByteArrayWrapper append(ByteArrayWrapper other) 
+    {
+        return append(other.bytes, 0, other.size);
+    }
+    */
+
+    /**
+     * Releases the internal byte array to the caller, resets the internal
+     * byte array to null and its size to 0.
+     * @return internal byte array.
+     * @stable ICU 2.8
+     */
+    public final byte[] releaseBytes()
+    {
+        byte result[] = bytes;
+        bytes = null;
+        size = 0;
+        return result;
+    }
+    
+    // Boilerplate ----------------------------------------------------
+    
+    /**
+     * Returns string value for debugging
+     * @stable ICU 3.2
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < size; ++i) {
+            if (i != 0) result.append(" ");
+            result.append(Utility.hex(bytes[i]&0xFF,2));
+        }
+        return result.toString();
+    }
+
+    /**
+     * Return true if the bytes in each wrapper are equal.
+     * @param other the object to compare to.
+     * @return true if the two objects are equal.
+     * @stable ICU 3.2
+     */
+    public boolean equals(Object other) {
+        if (this == other) return true;
+        if (other == null) return false;
+        try {
+            ByteArrayWrapper that = (ByteArrayWrapper)other;
+            if (size != that.size) return false;
+            for (int i = 0; i < size; ++i) {
+                if (bytes[i] != that.bytes[i]) return false;
+            }
+            return true;
+        }
+        catch (ClassCastException e) {
+        }
+        return false;
+    }
+
+    /**
+     * Return the hashcode.
+     * @return the hashcode.
+     * @stable ICU 3.2
+     */
+    public int hashCode() {
+        int result = bytes.length;
+        for (int i = 0; i < size; ++i) {
+            result = 37*result + bytes[i];
+        }
+        return result;
+    }
+
+    /**
+     * Compare this object to another ByteArrayWrapper, which must not be null.
+     * @param other the object to compare to.
+     * @return a value <0, 0, or >0 as this compares less than, equal to, or
+     * greater than other.
+     * @throws ClassCastException if the other object is not a ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public int compareTo(Object other) {
+        if (this == other) return 0;
+        ByteArrayWrapper that = (ByteArrayWrapper) other;
+        int minSize = size < that.size ? size : that.size;
+        for (int i = 0; i < minSize; ++i) {
+            if (bytes[i] != that.bytes[i]) {
+                return (bytes[i] & 0xFF) - (that.bytes[i] & 0xFF);
+            }
+        }
+        return size - that.size;
+    }
+    
+    // private methods -----------------------------------------------------
+    
+    /**
+     * Copies the contents of src byte array from offset srcoff to the 
+     * target of tgt byte array at the offset tgtoff.
+     * @param src source byte array to copy from
+     * @param srcoff start offset of src to copy from
+     * @param tgt target byte array to copy to
+     * @param tgtoff start offset of tgt to copy to
+     * @param length size of contents to copy
+     */
+    private static final void copyBytes(byte[] src, int srcoff, byte[] tgt, 
+                                       int tgtoff, int length) {
+        if (length < 64) {
+            for (int i = srcoff, n = tgtoff; -- length >= 0; ++ i, ++ n) {
+                tgt[n] = src[i];
+            }
+        } 
+        else {
+            System.arraycopy(src, srcoff, tgt, tgtoff, length);
+        }
+    }      
+}
diff --git a/src/com/ibm/icu/util/CECalendar.java b/src/com/ibm/icu/util/CECalendar.java
new file mode 100644
index 0000000..697106a
--- /dev/null
+++ b/src/com/ibm/icu/util/CECalendar.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Base class for EthiopicCalendar and CopticCalendar.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+abstract class CECalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -999547623066414271L;
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       1,       1 }, // ERA
+        {        1,        1, 5000000, 5000000 }, // YEAR
+        {        0,        0,      12,      12 }, // MONTH
+        {        1,        1,      52,      53 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,       5,      30 }, // DAY_OF_MONTH
+        {        1,        1,     365,     366 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       1,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>CECalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    protected CECalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     */
+    protected CECalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    protected CECalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The locale for the new calendar.
+     */
+    protected CECalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    protected CECalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param locale The locale for the new calendar.
+     */
+    protected CECalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    protected CECalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    protected CECalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    protected CECalendar(int year, int month, int date, int hour,
+                         int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(year, month, date, hour, minute, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * The Coptic and Ethiopic calendars differ only in their epochs.
+     * This method must be implemented by CECalendar subclasses to
+     * return the date offset from Julian.
+     */
+    abstract protected int getJDEpochOffset();
+
+    /**
+     * Return JD of start of given month/extended year
+     */
+    protected int handleComputeMonthStart(int eyear,
+                                          int emonth,
+                                          boolean useMonth) {
+        return ceToJD(eyear, emonth, 0, getJDEpochOffset());
+    }
+
+    /**
+     * Calculate the limit for a specified type of limit and field
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert an Coptic/Ethiopic year, month and day to a Julian day
+     * @param year the extended year
+     * @param month the month
+     * @param day the day
+     * @return Julian day
+     */
+    public static int ceToJD(long year, int month, int day, int jdEpochOffset) {
+
+        // Julian<->Ethiopic algorithms from:
+        // "Calendars in Ethiopia", Berhanu Beyene, Manfred Kudlek, International Conference
+        // of Ethiopian Studies XV, Hamburg, 2003
+
+        return (int) (
+            (jdEpochOffset+365)     // difference from Julian epoch to 1,1,1
+            + 365 * (year - 1)      // number of days from years
+            + floorDivide(year, 4)  // extra day of leap year
+            + 30 * (month + 1)      // number of days from months
+            + day                   // number of days for present month
+            - 31                    // slack?
+            );
+    }
+
+    /**
+     * Convert a Julian day to an Coptic/Ethiopic year, month and day
+     */
+    public static void jdToCE(int julianDay, int jdEpochOffset, int[] fields) {
+        int c4; // number of 4 year cycle (1461 days)
+        int[] r4 = new int[1]; // remainder of 4 year cycle, always positive
+
+        c4 = floorDivide(julianDay - jdEpochOffset, 1461, r4);
+
+        // exteded year
+        fields[0] = 4 * c4 + (r4[0]/365 - r4[0]/1460); // 4 * <number of 4year cycle> + <years within the last cycle>
+
+        int doy = (r4[0] == 1460) ? 365 : (r4[0] % 365); // days in present year
+
+        // month
+        fields[1] = doy / 30; // 30 -> Coptic/Ethiopic month length up to 12th month
+        // day
+        fields[2] = (doy % 30) + 1; // 1-based days in a month
+    }
+}
diff --git a/src/com/ibm/icu/util/Calendar.java b/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..3a3f597
--- /dev/null
+++ b/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,5290 @@
+/*
+*   Copyright (C) 1996-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * <code>Calendar</code> is an abstract base class for converting between
+ * a <code>Date</code> object and a set of integer fields such as
+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
+ * and so on. (A <code>Date</code> object represents a specific instant in
+ * time with millisecond precision. See
+ * {@link Date}
+ * for information about the <code>Date</code> class.)
+ *
+ * <p><b>Note:</b>  This class is similar, but not identical, to the class
+ * <code>java.util.Calendar</code>.  Changes are detailed below.
+ *
+ * <p>
+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
+ * according to the rules of a specific calendar system.  ICU4J contains
+ * several subclasses implementing different international calendar systems.
+ *
+ * <p>
+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
+ * class method, <code>getInstance</code>, for getting a generally useful
+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
+ * returns a calendar of a type appropriate to the locale, whose
+ * time fields have been initialized with the current date and time:
+ * <blockquote>
+ * <pre>Calendar rightNow = Calendar.getInstance()</pre>
+ * </blockquote>
+ *
+ * <p>When a <code>ULocale</code> is used by <code>getInstance</code>, its
+ * '<code>calendar</code>' tag and value are retrieved if present.  If a recognized
+ * value is supplied, a calendar is provided and configured as appropriate.
+ * Currently recognized tags are "buddhist", "chinese", "coptic", "ethiopic", 
+ * "gregorian", "hebrew", "islamic", "islamic-civil", "japanese", and "roc".  For
+ * example: <blockquote>
+ * <pre>Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=japanese"));</pre>
+ * </blockquote> will return an instance of JapaneseCalendar (using en_US conventions for
+ * minimum days in first week, start day of week, et cetera).
+ *
+ * <p>A <code>Calendar</code> object can produce all the time field values
+ * needed to implement the date-time formatting for a particular language and
+ * calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
+ * <code>Calendar</code> defines the range of values returned by certain fields,
+ * as well as their meaning.  For example, the first month of the year has value
+ * <code>MONTH</code> == <code>JANUARY</code> for all calendars.  Other values
+ * are defined by the concrete subclass, such as <code>ERA</code> and
+ * <code>YEAR</code>.  See individual field documentation and subclass
+ * documentation for details.
+ *
+ * <p>When a <code>Calendar</code> is <em>lenient</em>, it accepts a wider range
+ * of field values than it produces.  For example, a lenient
+ * <code>GregorianCalendar</code> interprets <code>MONTH</code> ==
+ * <code>JANUARY</code>, <code>DAY_OF_MONTH</code> == 32 as February 1.  A
+ * non-lenient <code>GregorianCalendar</code> throws an exception when given
+ * out-of-range field settings.  When calendars recompute field values for
+ * return by <code>get()</code>, they normalize them.  For example, a
+ * <code>GregorianCalendar</code> always produces <code>DAY_OF_MONTH</code>
+ * values between 1 and the length of the month.
+ *
+ * <p><code>Calendar</code> defines a locale-specific seven day week using two
+ * parameters: the first day of the week and the minimal days in first week
+ * (from 1 to 7).  These numbers are taken from the locale resource data when a
+ * <code>Calendar</code> is constructed.  They may also be specified explicitly
+ * through the API.
+ *
+ * <p>When setting or getting the <code>WEEK_OF_MONTH</code> or
+ * <code>WEEK_OF_YEAR</code> fields, <code>Calendar</code> must determine the
+ * first week of the month or year as a reference point.  The first week of a
+ * month or year is defined as the earliest seven day period beginning on
+ * <code>getFirstDayOfWeek()</code> and containing at least
+ * <code>getMinimalDaysInFirstWeek()</code> days of that month or year.  Weeks
+ * numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow
+ * it.  Note that the normalized numbering returned by <code>get()</code> may be
+ * different.  For example, a specific <code>Calendar</code> subclass may
+ * designate the week before week 1 of a year as week <em>n</em> of the previous
+ * year.
+ *
+ * <p> When computing a <code>Date</code> from time fields, two special
+ * circumstances may arise: there may be insufficient information to compute the
+ * <code>Date</code> (such as only year and month but no day in the month), or
+ * there may be inconsistent information (such as "Tuesday, July 15, 1996" --
+ * July 15, 1996 is actually a Monday).
+ *
+ * <p>
+ * <strong>Insufficient information.</strong> The calendar will use default
+ * information to specify the missing fields. This may vary by calendar; for
+ * the Gregorian calendar, the default for a field is the same as that of the
+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
+ *
+ * <p>
+ * <strong>Inconsistent information.</strong> If fields conflict, the calendar
+ * will give preference to fields set more recently. For example, when
+ * determining the day, the calendar will look for one of the following
+ * combinations of fields.  The most recent combination, as determined by the
+ * most recently set single field, will be used.
+ *
+ * <blockquote>
+ * <pre>
+ * MONTH + DAY_OF_MONTH
+ * MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ * MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ * DAY_OF_YEAR
+ * DAY_OF_WEEK + WEEK_OF_YEAR</pre>
+ * </blockquote>
+ *
+ * For the time of day:
+ *
+ * <blockquote>
+ * <pre>
+ * HOUR_OF_DAY
+ * AM_PM + HOUR</pre>
+ * </blockquote>
+ *
+ * <p>
+ * <strong>Note:</strong> for some non-Gregorian calendars, different
+ * fields may be necessary for complete disambiguation. For example, a full
+ * specification of the historial Arabic astronomical calendar requires year,
+ * month, day-of-month <em>and</em> day-of-week in some cases.
+ *
+ * <p>
+ * <strong>Note:</strong> There are certain possible ambiguities in
+ * interpretation of certain singular times, which are resolved in the
+ * following ways:
+ * <ol>
+ *     <li> 24:00:00 "belongs" to the following day. That is,
+ *          23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
+ *
+ *     <li> Although historically not precise, midnight also belongs to "am",
+ *          and noon belongs to "pm", so on the same day,
+ *          12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
+ * </ol>
+ *
+ * <p>
+ * The date or time format strings are not part of the definition of a
+ * calendar, as those must be modifiable or overridable by the user at
+ * runtime. Use {@link DateFormat}
+ * to format dates.
+ *
+ * <p><strong>Field manipulation methods</strong></p>
+ *
+ * <p><code>Calendar</code> fields can be changed using three methods:
+ * <code>set()</code>, <code>add()</code>, and <code>roll()</code>.</p>
+ *
+ * <p><strong><code>set(f, value)</code></strong> changes field
+ * <code>f</code> to <code>value</code>.  In addition, it sets an
+ * internal member variable to indicate that field <code>f</code> has
+ * been changed. Although field <code>f</code> is changed immediately,
+ * the calendar's milliseconds is not recomputed until the next call to
+ * <code>get()</code>, <code>getTime()</code>, or
+ * <code>getTimeInMillis()</code> is made. Thus, multiple calls to
+ * <code>set()</code> do not trigger multiple, unnecessary
+ * computations. As a result of changing a field using
+ * <code>set()</code>, other fields may also change, depending on the
+ * field, the field value, and the calendar system. In addition,
+ * <code>get(f)</code> will not necessarily return <code>value</code>
+ * after the fields have been recomputed. The specifics are determined by
+ * the concrete calendar class.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>set(Calendar.MONTH,
+ * Calendar.SEPTEMBER)</code> sets the calendar to September 31,
+ * 1999. This is a temporary internal representation that resolves to
+ * October 1, 1999 if <code>getTime()</code>is then called. However, a
+ * call to <code>set(Calendar.DAY_OF_MONTH, 30)</code> before the call to
+ * <code>getTime()</code> sets the calendar to September 30, 1999, since
+ * no recomputation occurs after <code>set()</code> itself.</p>
+ *
+ * <p><strong><code>add(f, delta)</code></strong> adds <code>delta</code>
+ * to field <code>f</code>.  This is equivalent to calling <code>set(f,
+ * get(f) + delta)</code> with two adjustments:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Add rule 1</strong>. The value of field <code>f</code>
+ *   after the call minus the value of field <code>f</code> before the
+ *   call is <code>delta</code>, modulo any overflow that has occurred in
+ *   field <code>f</code>. Overflow occurs when a field value exceeds its
+ *   range and, as a result, the next larger field is incremented or
+ *   decremented and the field value is adjusted back into its range.</p>
+ *
+ *   <p><strong>Add rule 2</strong>. If a smaller field is expected to be
+ *   invariant, but &nbsp; it is impossible for it to be equal to its
+ *   prior value because of changes in its minimum or maximum after field
+ *   <code>f</code> is changed, then its value is adjusted to be as close
+ *   as possible to its expected value. A smaller field represents a
+ *   smaller unit of time. <code>HOUR</code> is a smaller field than
+ *   <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ *   that are not expected to be invariant. The calendar system
+ *   determines what fields are expected to be invariant.</p>
+ * </blockquote>
+ *
+ * <p>In addition, unlike <code>set()</code>, <code>add()</code> forces
+ * an immediate recomputation of the calendar's milliseconds and all
+ * fields.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>add(Calendar.MONTH,
+ * 13)</code> sets the calendar to September 30, 2000. <strong>Add rule
+ * 1</strong> sets the <code>MONTH</code> field to September, since
+ * adding 13 months to August gives September of the next year. Since
+ * <code>DAY_OF_MONTH</code> cannot be 31 in September in a
+ * <code>GregorianCalendar</code>, <strong>add rule 2</strong> sets the
+ * <code>DAY_OF_MONTH</code> to 30, the closest possible value. Although
+ * it is a smaller field, <code>DAY_OF_WEEK</code> is not adjusted by
+ * rule 2, since it is expected to change when the month changes in a
+ * <code>GregorianCalendar</code>.</p>
+ *
+ * <p><strong><code>roll(f, delta)</code></strong> adds
+ * <code>delta</code> to field <code>f</code> without changing larger
+ * fields. This is equivalent to calling <code>add(f, delta)</code> with
+ * the following adjustment:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Roll rule</strong>. Larger fields are unchanged after the
+ *   call. A larger field represents a larger unit of
+ *   time. <code>DAY_OF_MONTH</code> is a larger field than
+ *   <code>HOUR</code>.</p>
+ * </blockquote>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>roll(Calendar.MONTH,
+ * 8)</code> sets the calendar to April 30, <strong>1999</strong>.  Add
+ * rule 1 sets the <code>MONTH</code> field to April. Using a
+ * <code>GregorianCalendar</code>, the <code>DAY_OF_MONTH</code> cannot
+ * be 31 in the month April. Add rule 2 sets it to the closest possible
+ * value, 30. Finally, the <strong>roll rule</strong> maintains the
+ * <code>YEAR</code> field value of 1999.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to Sunday June 6, 1999. Calling
+ * <code>roll(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Tuesday June 1, 1999, whereas calling
+ * <code>add(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Sunday May 30, 1999. This is because the roll rule imposes an
+ * additional constraint: The <code>MONTH</code> must not change when the
+ * <code>WEEK_OF_MONTH</code> is rolled. Taken together with add rule 1,
+ * the resultant date must be between Tuesday June 1 and Saturday June
+ * 5. According to add rule 2, the <code>DAY_OF_WEEK</code>, an invariant
+ * when changing the <code>WEEK_OF_MONTH</code>, is set to Tuesday, the
+ * closest possible value to Sunday (where Sunday is the first day of the
+ * week).</p>
+ *
+ * <p><strong>Usage model</strong>. To motivate the behavior of
+ * <code>add()</code> and <code>roll()</code>, consider a user interface
+ * component with increment and decrement buttons for the month, day, and
+ * year, and an underlying <code>GregorianCalendar</code>. If the
+ * interface reads January 31, 1999 and the user presses the month
+ * increment button, what should it read? If the underlying
+ * implementation uses <code>set()</code>, it might read March 3, 1999. A
+ * better result would be February 28, 1999. Furthermore, if the user
+ * presses the month increment button again, it should read March 31,
+ * 1999, not March 28, 1999. By saving the original date and using either
+ * <code>add()</code> or <code>roll()</code>, depending on whether larger
+ * fields should be affected, the user interface can behave as most users
+ * will intuitively expect.</p>
+ *
+ * <p><b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *
+ * <p><big><big><b>Calendar Architecture in ICU4J</b></big></big></p>
+ *
+ * <p>Recently the implementation of <code>Calendar</code> has changed
+ * significantly in order to better support subclassing. The original
+ * <code>Calendar</code> class was designed to support subclassing, but
+ * it had only one implemented subclass, <code>GregorianCalendar</code>.
+ * With the implementation of several new calendar subclasses, including
+ * the <code>BuddhistCalendar</code>, <code>ChineseCalendar</code>,
+ * <code>HebrewCalendar</code>, <code>IslamicCalendar</code>, and
+ * <code>JapaneseCalendar</code>, the subclassing API has been reworked
+ * thoroughly. This section details the new subclassing API and other
+ * ways in which <code>com.ibm.icu.util.Calendar</code> differs from
+ * <code>java.util.Calendar</code>.
+ * </p>
+ *
+ * <p><big><b>Changes</b></big></p>
+ *
+ * <p>Overview of changes between the classic <code>Calendar</code>
+ * architecture and the new architecture.
+ *
+ * <ul>
+ *
+ *   <li>The <code>fields[]</code> array is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses must access it
+ *     using the methods {@link #internalSet} and
+ *     {@link #internalGet}.  <b>Motivation:</b> Subclasses should
+ *     not directly access data members.</li>
+ *
+ *   <li>The <code>time</code> long word is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses may access it using
+ *     the method {@link #internalGetTimeInMillis}, which does not
+ *     provoke an update. <b>Motivation:</b> Subclasses should not
+ *     directly access data members.</li>
+ *
+ *   <li>The scope of responsibility of subclasses has been drastically
+ *     reduced. As much functionality as possible is implemented in the
+ *     <code>Calendar</code> base class. As a result, it is much easier
+ *     to subclass <code>Calendar</code>. <b>Motivation:</b> Subclasses
+ *     should not have to reimplement common code. Certain behaviors are
+ *     common across calendar systems: The definition and behavior of
+ *     week-related fields and time fields, the arithmetic
+ *     ({@link #add(int, int) add} and {@link #roll(int, int) roll}) behavior of many
+ *     fields, and the field validation system.</li>
+ *
+ *   <li>The subclassing API has been completely redesigned.</li>
+ *
+ *   <li>The <code>Calendar</code> base class contains some Gregorian
+ *     calendar algorithmic support that subclasses can use (specifically
+ *     in {@link #handleComputeFields}).  Subclasses can use the
+ *     methods <code>getGregorianXxx()</code> to obtain precomputed
+ *     values. <b>Motivation:</b> This is required by all
+ *     <code>Calendar</code> subclasses in order to implement consistent
+ *     time zone behavior, and Gregorian-derived systems can use the
+ *     already computed data.</li>
+ *
+ *   <li>The <code>FIELD_COUNT</code> constant has been removed. Use
+ *     {@link #getFieldCount}.  In addition, framework API has been
+ *     added to allow subclasses to define additional fields.
+ *     <b>Motivation: </b>The number of fields is not constant across
+ *     calendar systems.</li>
+ *
+ *   <li>The range of handled dates has been narrowed from +/-
+ *     ~300,000,000 years to +/- ~5,000,000 years. In practical terms
+ *     this should not affect clients. However, it does mean that client
+ *     code cannot be guaranteed well-behaved results with dates such as
+ *     <code>Date(Long.MIN_VALUE)</code> or
+ *     <code>Date(Long.MAX_VALUE)</code>. Instead, the
+ *     <code>Calendar</code> constants {@link #MIN_DATE},
+ *     {@link #MAX_DATE}, {@link #MIN_MILLIS},
+ *     {@link #MAX_MILLIS}, {@link #MIN_JULIAN}, and
+ *     {@link #MAX_JULIAN} should be used. <b>Motivation:</b> With
+ *     the addition of the {@link #JULIAN_DAY} field, Julian day
+ *     numbers must be restricted to a 32-bit <code>int</code>.  This
+ *     restricts the overall supported range. Furthermore, restricting
+ *     the supported range simplifies the computations by removing
+ *     special case code that was used to accomodate arithmetic overflow
+ *     at millis near <code>Long.MIN_VALUE</code> and
+ *     <code>Long.MAX_VALUE</code>.</li>
+ *
+ *   <li>New fields are implemented: {@link #JULIAN_DAY} defines
+ *     single-field specification of the
+ *     date. {@link #MILLISECONDS_IN_DAY} defines a single-field
+ *     specification of the wall time. {@link #DOW_LOCAL} and
+ *     {@link #YEAR_WOY} implement localized day-of-week and
+ *     week-of-year behavior.</li>
+ *
+ *   <li>Subclasses can access millisecond constants
+ *     {@link #ONE_SECOND}, {@link #ONE_MINUTE},
+ *     {@link #ONE_HOUR}, {@link #ONE_DAY}, and
+ *     {@link #ONE_WEEK} defined in <code>Calendar</code>.</li>
+ *
+ *   <li>New API has been added to suport calendar-specific subclasses
+ *     of <code>DateFormat</code>.</li>
+ *
+ *   <li>Several subclasses have been implemented, representing
+ *     various international calendar systems.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Subclass API</b></big></p>
+ *
+ * <p>The original <code>Calendar</code> API was based on the experience
+ * of implementing a only a single subclass,
+ * <code>GregorianCalendar</code>. As a result, all of the subclassing
+ * kinks had not been worked out. The new subclassing API has been
+ * refined based on several implemented subclasses. This includes methods
+ * that must be overridden and methods for subclasses to call. Subclasses
+ * no longer have direct access to <code>fields</code> and
+ * <code>stamp</code>. Instead, they have new API to access
+ * these. Subclasses are able to allocate the <code>fields</code> array
+ * through a protected framework method; this allows subclasses to
+ * specify additional fields. </p>
+ *
+ * <p>More functionality has been moved into the base class. The base
+ * class now contains much of the computational machinery to support the
+ * Gregorian calendar. This is based on two things: (1) Many calendars
+ * are based on the Gregorian calendar (such as the Buddhist and Japanese
+ * imperial calendars). (2) <em>All</em> calendars require basic
+ * Gregorian support in order to handle timezone computations. </p>
+ *
+ * <p>Common computations have been moved into
+ * <code>Calendar</code>. Subclasses no longer compute the week related
+ * fields and the time related fields. These are commonly handled for all
+ * calendars by the base class. </p>
+ *
+ * <p><b>Subclass computation of time <tt>=&gt;</tt> fields</b>
+ *
+ * <p>The {@link #ERA}, {@link #YEAR},
+ * {@link #EXTENDED_YEAR}, {@link #MONTH},
+ * {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields are
+ * computed by the subclass, based on the Julian day. All other fields
+ * are computed by <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeFields}
+ *     to compute the {@link #ERA}, {@link #YEAR},
+ *     {@link #EXTENDED_YEAR}, {@link #MONTH},
+ *     {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields,
+ *     based on the value of the {@link #JULIAN_DAY} field. If there
+ *     are calendar-specific fields not defined by <code>Calendar</code>,
+ *     they must also be computed. These are the only fields that the
+ *     subclass should compute. All other fields are computed by the base
+ *     class, so time and week fields behave in a consistent way across
+ *     all calendars. The default version of this method in
+ *     <code>Calendar</code> implements a proleptic Gregorian
+ *     calendar. Within this method, subclasses may call
+ *     <code>getGregorianXxx()</code> to obtain the Gregorian calendar
+ *     month, day of month, and extended year for the given date.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Subclass computation of fields <tt>=&gt;</tt> time</b>
+ *
+ * <p>The interpretation of most field values is handled entirely by
+ * <code>Calendar</code>. <code>Calendar</code> determines which fields
+ * are set, which are not, which are set more recently, and so on. In
+ * addition, <code>Calendar</code> handles the computation of the time
+ * from the time fields and handles the week-related fields. The only
+ * thing the subclass must do is determine the extended year, based on
+ * the year fields, and then, given an extended year and a month, it must
+ * return a Julian day number.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetExtendedYear}
+ *     to return the extended year for this calendar system, based on the
+ *     {@link #YEAR}, {@link #EXTENDED_YEAR}, and any fields that
+ *     the calendar system uses that are larger than a year, such as
+ *     {@link #ERA}.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeMonthStart}
+ *     to return the Julian day number
+ *     associated with a month and extended year. This is the Julian day
+ *     number of the day before the first day of the month. The month
+ *     number is zero-based. This computation should not depend on any
+ *     field values.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Other methods</b>
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetMonthLength}
+ *     to return the number of days in a
+ *     given month of a given extended year. The month number, as always,
+ *     is zero-based.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetYearLength}
+ *     to return the number of days in the given
+ *     extended year. This method is used by
+ *     <tt>computeWeekFields</tt> to compute the
+ *     {@link #WEEK_OF_YEAR} and {@link #YEAR_WOY} fields.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetLimit}
+ *     to return the {@link #MINIMUM},
+ *     {@link #GREATEST_MINIMUM}, {@link #LEAST_MAXIMUM}, or
+ *     {@link #MAXIMUM} of a field, depending on the value of
+ *     <code>limitType</code>. This method only needs to handle the
+ *     fields {@link #ERA}, {@link #YEAR}, {@link #MONTH},
+ *     {@link #WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH},
+ *     {@link #DAY_OF_MONTH}, {@link #DAY_OF_YEAR},
+ *     {@link #DAY_OF_WEEK_IN_MONTH}, {@link #YEAR_WOY}, and
+ *     {@link #EXTENDED_YEAR}.  Other fields are invariant (with
+ *     respect to calendar system) and are handled by the base
+ *     class.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #validateField}
+ *     to check any subclass-specific fields. If the
+ *     field's value is out of range, the method should throw an
+ *     <code>IllegalArgumentException</code>. The method may call
+ *     <code>super.validateField(field)</code> to handle fields in a
+ *     generic way, that is, to compare them to the range
+ *     <code>getMinimum(field)</code>..<code>getMaximum(field)</code>.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleCreateFields} to create an <code>int[]</code>
+ *     array large enough to hold the calendar's fields. This is only
+ *     necessary if the calendar defines additional fields beyond those
+ *     defined by <code>Calendar</code>. The length of the result must be
+ *     at least {@link #BASE_FIELD_COUNT} and no more than
+ *     {@link #MAX_FIELD_COUNT}.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleGetDateFormat} to create a
+ *     <code>DateFormat</code> appropriate to this calendar. This is only
+ *     required if a calendar subclass redefines the use of a field (for
+ *     example, changes the {@link #ERA} field from a symbolic field
+ *     to a numeric one) or defines an additional field.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #roll roll} and
+ *     {@link #add add} to handle fields that are discontinuous. For
+ *     example, in the Hebrew calendar the month &quot;Adar I&quot; only
+ *     occurs in leap years; in other years the calendar jumps from
+ *     Shevat (month #4) to Adar (month #6). The {@link
+ *     HebrewCalendar#add HebrewCalendar.add} and {@link
+ *     HebrewCalendar#roll HebrewCalendar.roll} methods take this into
+ *     account, so that adding 1 month to Shevat gives the proper result
+ *     (Adar) in a non-leap year. The protected utility method {@link
+ *     #pinField pinField} is often useful when implementing these two
+ *     methods. </li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Normalized behavior</b></big>
+ *
+ * <p>The behavior of certain fields has been made consistent across all
+ * calendar systems and implemented in <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Time is normalized. Even though some calendar systems transition
+ *     between days at sunset or at other times, all ICU4J calendars
+ *     transition between days at <em>local zone midnight</em>.  This
+ *     allows ICU4J to centralize the time computations in
+ *     <code>Calendar</code> and to maintain basic correpsondences
+ *     between calendar systems. Affected fields: {@link #AM_PM},
+ *     {@link #HOUR}, {@link #HOUR_OF_DAY}, {@link #MINUTE},
+ *     {@link #SECOND}, {@link #MILLISECOND},
+ *     {@link #ZONE_OFFSET}, and {@link #DST_OFFSET}.</li>
+ *
+ *   <li>DST behavior is normalized. Daylight savings time behavior is
+ *     computed the same for all calendar systems, and depends on the
+ *     value of several <code>GregorianCalendar</code> fields: the
+ *     {@link #YEAR}, {@link #MONTH}, and
+ *     {@link #DAY_OF_MONTH}. As a result, <code>Calendar</code>
+ *     always computes these fields, even for non-Gregorian calendar
+ *     systems. These fields are available to subclasses.</li>
+ *
+ *   <li>Weeks are normalized. Although locales define the week
+ *     differently, in terms of the day on which it starts, and the
+ *     designation of week number one of a month or year, they all use a
+ *     common mechanism. Furthermore, the day of the week has a simple
+ *     and consistent definition throughout history. For example,
+ *     although the Gregorian calendar introduced a discontinuity when
+ *     first instituted, the day of week was not disrupted. For this
+ *     reason, the fields {@link #DAY_OF_WEEK}, <code>WEEK_OF_YEAR,
+ *     WEEK_OF_MONTH</code>, {@link #DAY_OF_WEEK_IN_MONTH},
+ *     {@link #DOW_LOCAL}, {@link #YEAR_WOY} are all computed in
+ *     a consistent way in the base class, based on the
+ *     {@link #EXTENDED_YEAR}, {@link #DAY_OF_YEAR},
+ *     {@link #MONTH}, and {@link #DAY_OF_MONTH}, which are
+ *     computed by the subclass.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Supported range</b></big>
+ *
+ * <p>The allowable range of <code>Calendar</code> has been
+ * narrowed. <code>GregorianCalendar</code> used to attempt to support
+ * the range of dates with millisecond values from
+ * <code>Long.MIN_VALUE</code> to <code>Long.MAX_VALUE</code>. This
+ * introduced awkward constructions (hacks) which slowed down
+ * performance. It also introduced non-uniform behavior at the
+ * boundaries. The new <code>Calendar</code> protocol specifies the
+ * maximum range of supportable dates as those having Julian day numbers
+ * of <code>-0x7F000000</code> to <code>+0x7F000000</code>. This
+ * corresponds to years from ~5,000,000 BCE to ~5,000,000 CE. Programmers
+ * should use the constants {@link #MIN_DATE} (or
+ * {@link #MIN_MILLIS} or {@link #MIN_JULIAN}) and
+ * {@link #MAX_DATE} (or {@link #MAX_MILLIS} or
+ * {@link #MAX_JULIAN}) in <code>Calendar</code> to specify an
+ * extremely early or extremely late date.</p>
+ *
+ * <p><big><b>General notes</b></big>
+ *
+ * <ul>
+ *
+ *   <li>Calendars implementations are <em>proleptic</em>. For example,
+ *     even though the Gregorian calendar was not instituted until the
+ *     16th century, the <code>GregorianCalendar</code> class supports
+ *     dates before the historical onset of the calendar by extending the
+ *     calendar system backward in time. Similarly, the
+ *     <code>HebrewCalendar</code> extends backward before the start of
+ *     its epoch into zero and negative years. Subclasses do not throw
+ *     exceptions because a date precedes the historical start of a
+ *     calendar system. Instead, they implement
+ *     {@link #handleGetLimit} to return appropriate limits on
+ *     {@link #YEAR}, {@link #ERA}, etc. fields. Then, if the
+ *     calendar is set to not be lenient, out-of-range field values will
+ *     trigger an exception.</li>
+ *
+ *   <li>Calendar system subclasses compute a <em>extended
+ *     year</em>. This differs from the {@link #YEAR} field in that
+ *     it ranges over all integer values, including zero and negative
+ *     values, and it encapsulates the information of the
+ *     {@link #YEAR} field and all larger fields.  Thus, for the
+ *     Gregorian calendar, the {@link #EXTENDED_YEAR} is computed as
+ *     <code>ERA==AD ? YEAR : 1-YEAR</code>. Another example is the Mayan
+ *     long count, which has years (<code>KUN</code>) and nested cycles
+ *     of years (<code>KATUN</code> and <code>BAKTUN</code>). The Mayan
+ *     {@link #EXTENDED_YEAR} is computed as <code>TUN + 20 * (KATUN
+ *     + 20 * BAKTUN)</code>. The <code>Calendar</code> base class uses
+ *     the {@link #EXTENDED_YEAR} field to compute the week-related
+ *     fields.</li>
+ *
+ * </ul>
+ *
+ * @see          Date
+ * @see          GregorianCalendar
+ * @see          TimeZone
+ * @see          DateFormat
+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
+ * @stable ICU 2.0
+ */
+public abstract class Calendar implements Serializable, Cloneable, Comparable {
+
+    // Data flow in Calendar
+    // ---------------------
+
+    // The current time is represented in two ways by Calendar: as UTC
+    // milliseconds from the epoch start (1 January 1970 0:00 UTC), and as local
+    // fields such as MONTH, HOUR, AM_PM, etc.  It is possible to compute the
+    // millis from the fields, and vice versa.  The data needed to do this
+    // conversion is encapsulated by a TimeZone object owned by the Calendar.
+    // The data provided by the TimeZone object may also be overridden if the
+    // user sets the ZONE_OFFSET and/or DST_OFFSET fields directly. The class
+    // keeps track of what information was most recently set by the caller, and
+    // uses that to compute any other information as needed.
+
+    // If the user sets the fields using set(), the data flow is as follows.
+    // This is implemented by the Calendar subclass's computeTime() method.
+    // During this process, certain fields may be ignored.  The disambiguation
+    // algorithm for resolving which fields to pay attention to is described
+    // above.
+
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using TimeZone or user-set ZONE_OFFSET / DST_OFFSET
+    //           V
+    //   UTC millis (in time data member)
+
+    // If the user sets the UTC millis using setTime(), the data flow is as
+    // follows.  This is implemented by the Calendar subclass's computeFields()
+    // method.
+
+    //   UTC millis (in time data member)
+    //           |
+    //           | Using TimeZone getOffset()
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+
+    // In general, a round trip from fields, through local and UTC millis, and
+    // back out to fields is made when necessary.  This is implemented by the
+    // complete() method.  Resolving a partial set of fields into a UTC millis
+    // value allows all remaining fields to be generated from that value.  If
+    // the Calendar is lenient, the fields are also renormalized to standard
+    // ranges when they are regenerated.
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * era, e.g., AD or BC in the Julian calendar. This is a calendar-specific
+     * value; see subclass documentation.
+     * @see GregorianCalendar#AD
+     * @see GregorianCalendar#BC
+     * @stable ICU 2.0
+     */
+    public final static int ERA = 0;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * year. This is a calendar-specific value; see subclass documentation.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR = 1;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * month. This is a calendar-specific value. The first month of the year is
+     * <code>JANUARY</code>; the last depends on the number of months in a year.
+     * @see #JANUARY
+     * @see #FEBRUARY
+     * @see #MARCH
+     * @see #APRIL
+     * @see #MAY
+     * @see #JUNE
+     * @see #JULY
+     * @see #AUGUST
+     * @see #SEPTEMBER
+     * @see #OCTOBER
+     * @see #NOVEMBER
+     * @see #DECEMBER
+     * @see #UNDECIMBER
+     * @stable ICU 2.0
+     */
+    public final static int MONTH = 2;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current year.  The first week of the year, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_YEAR</code> for days before the first week of
+     * the year.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR = 3;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current month.  The first week of the month, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_MONTH</code> for days before the first week of
+     * the month.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH = 4;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
+     * The first day of the month has value 1.
+     * @see #DAY_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DATE = 5;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DATE</code>.
+     * The first day of the month has value 1.
+     * @see #DATE
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_MONTH = 5;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * number within the current year.  The first day of the year has value 1.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR = 6;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * of the week.  This field takes values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
+     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
+     * @see #SUNDAY
+     * @see #MONDAY
+     * @see #TUESDAY
+     * @see #WEDNESDAY
+     * @see #THURSDAY
+     * @see #FRIDAY
+     * @see #SATURDAY
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK = 7;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * ordinal number of the day of the week within the current month. Together
+     * with the <code>DAY_OF_WEEK</code> field, this uniquely specifies a day
+     * within a month.  Unlike <code>WEEK_OF_MONTH</code> and
+     * <code>WEEK_OF_YEAR</code>, this field's value does <em>not</em> depend on
+     * <code>getFirstDayOfWeek()</code> or
+     * <code>getMinimalDaysInFirstWeek()</code>.  <code>DAY_OF_MONTH 1</code>
+     * through <code>7</code> always correspond to <code>DAY_OF_WEEK_IN_MONTH
+     * 1</code>; <code>8</code> through <code>15</code> correspond to
+     * <code>DAY_OF_WEEK_IN_MONTH 2</code>, and so on.
+     * <code>DAY_OF_WEEK_IN_MONTH 0</code> indicates the week before
+     * <code>DAY_OF_WEEK_IN_MONTH 1</code>.  Negative values count back from the
+     * end of the month, so the last Sunday of a month is specified as
+     * <code>DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1</code>.  Because
+     * negative values count backward they will usually be aligned differently
+     * within the month than positive values.  For example, if a month has 31
+     * days, <code>DAY_OF_WEEK_IN_MONTH -1</code> will overlap
+     * <code>DAY_OF_WEEK_IN_MONTH 5</code> and the end of <code>4</code>.
+     * @see #DAY_OF_WEEK
+     * @see #WEEK_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH = 8;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating
+     * whether the <code>HOUR</code> is before or after noon.
+     * E.g., at 10:04:15.250 PM the <code>AM_PM</code> is <code>PM</code>.
+     * @see #AM
+     * @see #PM
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM = 9;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the morning or afternoon. <code>HOUR</code> is used for the 12-hour
+     * clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR</code> is 10.
+     * @see #AM_PM
+     * @see #HOUR_OF_DAY
+     * @stable ICU 2.0
+     */
+    public final static int HOUR = 10;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY = 11;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * minute within the hour.
+     * E.g., at 10:04:15.250 PM the <code>MINUTE</code> is 4.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE = 12;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * second within the minute.
+     * E.g., at 10:04:15.250 PM the <code>SECOND</code> is 15.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND = 13;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * millisecond within the second.
+     * E.g., at 10:04:15.250 PM the <code>MILLISECOND</code> is 250.
+     * @stable ICU 2.0
+     */
+    public final static int MILLISECOND = 14;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * raw offset from GMT in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int ZONE_OFFSET = 15;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * daylight savings offset in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int DST_OFFSET = 16;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year corresponding to the
+     * <code>WEEK_OF_YEAR</code> field.  This may be one greater or less
+     * than the value of <code>EXTENDED_YEAR</code>.
+     * @stable ICU 2.0
+     */
+    public static final int YEAR_WOY = 17;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the localized day of week.  This will be a value from 1
+     * to 7 inclusive, with 1 being the localized first day of the week.
+     * @stable ICU 2.0
+     */
+    public static final int DOW_LOCAL = 18;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year.  This is a single number designating
+     * the year of this calendar system, encompassing all supra-year
+     * fields.  For example, for the Julian calendar system, year numbers
+     * are positive, with an era of BCE or CE.  An extended year value for
+     * the Julian calendar system assigns positive values to CE years and
+     * negative values to BCE years, with 1 BCE being year 0.
+     * @stable ICU 2.0
+     */
+    public static final int EXTENDED_YEAR = 19;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the modified Julian day number.  This is different from
+     * the conventional Julian day number in two regards.  First, it
+     * demarcates days at local zone midnight, rather than noon GMT.
+     * Second, it is a local number; that is, it depends on the local time
+     * zone.  It can be thought of as a single number that encompasses all
+     * the date-related fields.
+     * @stable ICU 2.0
+     */
+    public static final int JULIAN_DAY = 20;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the milliseconds in the day.  This ranges from 0 to
+     * 23:59:59.999 (regardless of DST).  This field behaves
+     * <em>exactly</em> like a composite of all time-related fields, not
+     * including the zone fields.  As such, it also reflects
+     * discontinuities of those fields on DST transition days.  On a day of
+     * DST onset, it will jump forward.  On a day of DST cessation, it will
+     * jump backward.  This reflects the fact that is must be combined with
+     * the DST_OFFSET field to obtain a unique local time value.
+     * @stable ICU 2.0
+     */
+    public static final int MILLISECONDS_IN_DAY = 21;
+
+    /**
+     * The number of fields defined by this class.  Subclasses may define
+     * addition fields starting with this number.
+     * @stable ICU 2.0
+     */
+    protected static final int BASE_FIELD_COUNT = 22;
+
+    /**
+     * The maximum number of fields possible.  Subclasses must not define
+     * more total fields than this number.
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_FIELD_COUNT = 32;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Sunday.
+     * @stable ICU 2.0
+     */
+    public final static int SUNDAY = 1;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Monday.
+     * @stable ICU 2.0
+     */
+    public final static int MONDAY = 2;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Tuesday.
+     * @stable ICU 2.0
+     */
+    public final static int TUESDAY = 3;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Wednesday.
+     * @stable ICU 2.0
+     */
+    public final static int WEDNESDAY = 4;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Thursday.
+     * @stable ICU 2.0
+     */
+    public final static int THURSDAY = 5;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Friday.
+     * @stable ICU 2.0
+     */
+    public final static int FRIDAY = 6;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Saturday.
+     * @stable ICU 2.0
+     */
+    public final static int SATURDAY = 7;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * first month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JANUARY = 0;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * second month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int FEBRUARY = 1;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * third month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MARCH = 2;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fourth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int APRIL = 3;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fifth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MAY = 4;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * sixth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JUNE = 5;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * seventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JULY = 6;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eighth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int AUGUST = 7;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * ninth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int SEPTEMBER = 8;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * tenth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int OCTOBER = 9;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eleventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int NOVEMBER = 10;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * twelfth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int DECEMBER = 11;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * thirteenth month of the year. Although <code>GregorianCalendar</code>
+     * does not use this value, lunar calendars do.
+     * @stable ICU 2.0
+     */
+    public final static int UNDECIMBER = 12;
+
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from midnight to just before noon.
+     * @stable ICU 2.0
+     */
+    public final static int AM = 0;
+
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from noon to just before midnight.
+     * @stable ICU 2.0
+     */
+    public final static int PM = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekday.
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKDAY = 0;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekend day.
+     * @see #WEEKDAY
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as a weekday and transitions to the weekend.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_ONSET = 2;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as the weekend and transitions to a weekday.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_CEASE = 3;
+
+    /**
+     * The number of milliseconds in one second.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_SECOND = 1000;
+
+    /**
+     * The number of milliseconds in one minute.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+
+    /**
+     * The number of milliseconds in one hour.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+
+    /**
+     * The number of milliseconds in one day.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     * @stable ICU 2.0
+     */
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+
+    /**
+     * The number of milliseconds in one week.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     * @stable ICU 2.0
+     */
+    protected static final long ONE_WEEK   = 7*ONE_DAY;
+
+    /**
+     * The Julian day of the Gregorian epoch, that is, January 1, 1 on the
+     * Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected static final int JAN_1_1_JULIAN_DAY = 1721426;
+
+    /**
+     * The Julian day of the epoch, that is, January 1, 1970 on the
+     * Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected static final int EPOCH_JULIAN_DAY   = 2440588;
+
+    /**
+     * The minimum supported Julian day.  This value is equivalent to
+     * <code>MIN_MILLIS</code> and <code>MIN_DATE</code>.
+     * @see #JULIAN_DAY
+     * @stable ICU 2.0
+     */
+    protected static final int MIN_JULIAN = -0x7F000000;
+
+    /**
+     * The minimum supported epoch milliseconds.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_DATE</code>.
+     * @stable ICU 2.0
+     */
+    protected static final long MIN_MILLIS = -184303902528000000L;
+
+    // Get around bug in jikes 1.12 for now.  Later, use:
+    //protected static final long MIN_MILLIS = (MIN_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The minimum supported <code>Date</code>.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_MILLIS</code>.
+     * @stable ICU 2.0
+     */
+    protected static final Date MIN_DATE = new Date(MIN_MILLIS);
+
+    /**
+     * The maximum supported Julian day.  This value is equivalent to
+     * <code>MAX_MILLIS</code> and <code>MAX_DATE</code>.
+     * @see #JULIAN_DAY
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_JULIAN = +0x7F000000;
+
+    /**
+     * The maximum supported epoch milliseconds.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_DATE</code>.
+     * @stable ICU 2.0
+     */
+    protected static final long MAX_MILLIS = (MAX_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The maximum supported <code>Date</code>.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_MILLIS</code>.
+     * @stable ICU 2.0
+     */
+    protected static final Date MAX_DATE = new Date(MAX_MILLIS);
+
+    // Internal notes:
+    // Calendar contains two kinds of time representations: current "time" in
+    // milliseconds, and a set of time "fields" representing the current time.
+    // The two representations are usually in sync, but can get out of sync
+    // as follows.
+    // 1. Initially, no fields are set, and the time is invalid.
+    // 2. If the time is set, all fields are computed and in sync.
+    // 3. If a single field is set, the time is invalid.
+    // Recomputation of the time and fields happens when the object needs
+    // to return a result to the user, or use a result for a computation.
+
+    /**
+     * The field values for the currently set time for this calendar.
+     * This is an array of at least <code>BASE_FIELD_COUNT</code> integers.
+     * @see #handleCreateFields
+     * @serial
+     */
+    private transient int           fields[];
+
+    /**
+     * Pseudo-time-stamps which specify when each field was set. There
+     * are two special values, UNSET and INTERNALLY_SET. Values from
+     * MINIMUM_USER_SET to Integer.MAX_VALUE are legal user set values.
+     */
+    private transient int           stamp[];
+
+    /**
+     * The currently set time for this calendar, expressed in milliseconds after
+     * January 1, 1970, 0:00:00 GMT.
+     * @see <tt>isTimeSet</tt>
+     * @serial
+     */
+    private long          time;
+
+    /**
+     * True if then the value of <code>time</code> is valid.
+     * The time is made invalid by a change to an item of <code>field[]</code>.
+     * @see #time
+     * @serial
+     */
+    private transient boolean       isTimeSet;
+
+    /**
+     * True if <code>fields[]</code> are in sync with the currently set time.
+     * If false, then the next attempt to get the value of a field will
+     * force a recomputation of all fields from the current value of
+     * <code>time</code>.
+     * @serial
+     */
+    private transient boolean       areFieldsSet;
+
+    /**
+     * True if all fields have been set.  This is only false in a few
+     * situations: In a newly created, partially constructed object.  After
+     * a call to clear().  In an object just read from a stream using
+     * readObject().  Once computeFields() has been called this is set to
+     * true and stays true until one of the above situations recurs.
+     * @serial
+     */
+    private transient boolean       areAllFieldsSet;
+
+    /**
+     * True if all fields have been virtually set, but have not yet been
+     * computed.  This occurs only in setTimeInMillis(), or after readObject().
+     * A calendar set to this state will compute all fields from the time if it
+     * becomes necessary, but otherwise will delay such computation.
+     */
+    private transient boolean areFieldsVirtuallySet;
+
+    /**
+     * True if this calendar allows out-of-range field values during computation
+     * of <code>time</code> from <code>fields[]</code>.
+     * @see #setLenient
+     * @serial
+     */
+    private boolean         lenient = true;
+
+    /**
+     * The <code>TimeZone</code> used by this calendar. </code>Calendar</code>
+     * uses the time zone data to translate between locale and GMT time.
+     * @serial
+     */
+    private TimeZone        zone;
+
+    /**
+     * The first day of the week, with possible values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, etc.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             firstDayOfWeek;
+
+    /**
+     * The number of days required for the first week in a month or year,
+     * with possible values from 1 to 7.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             minimalDaysInFirstWeek;
+
+    /**
+     * First day of the weekend in this calendar's locale.  Must be in
+     * the range SUNDAY...SATURDAY (1..7).  The weekend starts at
+     * weekendOnsetMillis milliseconds after midnight on that day of
+     * the week.  This value is taken from locale resource data.
+     */
+    private int weekendOnset;
+
+    /**
+     * Milliseconds after midnight at which the weekend starts on the
+     * day of the week weekendOnset.  Times that are greater than or
+     * equal to weekendOnsetMillis are considered part of the weekend.
+     * Must be in the range 0..24*60*60*1000-1.  This value is taken
+     * from locale resource data.
+     */
+    private int weekendOnsetMillis;
+
+    /**
+     * Day of the week when the weekend stops in this calendar's
+     * locale.  Must be in the range SUNDAY...SATURDAY (1..7).  The
+     * weekend stops at weekendCeaseMillis milliseconds after midnight
+     * on that day of the week.  This value is taken from locale
+     * resource data.
+     */
+    private int weekendCease;
+
+    /**
+     * Milliseconds after midnight at which the weekend stops on the
+     * day of the week weekendCease.  Times that are greater than or
+     * equal to weekendCeaseMillis are considered not to be the
+     * weekend.  Must be in the range 0..24*60*60*1000-1.  This value
+     * is taken from locale resource data.
+     */
+    private int weekendCeaseMillis;
+
+    /**
+     * Cache to hold the firstDayOfWeek and minimalDaysInFirstWeek
+     * of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that
+     * a field has not been set since the last call to <code>clear()</code>.
+     * @see #INTERNALLY_SET
+     * @see #MINIMUM_USER_STAMP
+     * @stable ICU 2.0
+     */
+    protected static final int UNSET = 0;
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that a field
+     * has been set via computations from the time or from other fields.
+     * @see #UNSET
+     * @see #MINIMUM_USER_STAMP
+     * @stable ICU 2.0
+     */
+    protected static final int INTERNALLY_SET = 1;
+
+    /**
+     * If the time stamp <code>stamp[]</code> has a value greater than or
+     * equal to <code>MINIMUM_USER_SET</code> then it has been set by the
+     * user via a call to <code>set()</code>.
+     * @see #UNSET
+     * @see #INTERNALLY_SET
+     * @stable ICU 2.0
+     */
+    protected static final int MINIMUM_USER_STAMP = 2;
+
+    /**
+     * The next available value for <code>stamp[]</code>, an internal array.
+     * @serial
+     */
+    private transient int             nextStamp = MINIMUM_USER_STAMP;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which writes a correct 'time' value
+    //     as well as compatible values for other fields.  This is a
+    //     transitional format.
+    // - 2 (not implemented yet) a future version, in which fields[],
+    //     areFieldsSet, and isTimeSet become transient, and isSet[] is
+    //     removed. In JDK 1.1.6 we write a format compatible with version 2.
+    // static final int        currentSerialVersion = 1;
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <dl>
+     * <dt><b>0</b> or not present on stream</dt>
+     * <dd>
+     * JDK 1.1.5 or earlier.
+     * </dd>
+     * <dt><b>1</b></dt>
+     * <dd>
+     * JDK 1.1.6 or later.  Writes a correct 'time' value
+     * as well as compatible values for other fields.  This is a
+     * transitional format.
+     * </dd>
+     * </dl>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.6
+     */
+    // private int             serialVersionOnStream = currentSerialVersion;
+
+    // Proclaim serialization compatibility with JDK 1.1
+    // static final long       serialVersionUID = -1807547505821590642L;
+    
+    // haven't been compatible for awhile, no longer try
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 6222646104888790989L;
+
+    /**
+     * Bitmask for internalSet() defining which fields may legally be set
+     * by subclasses.  Any attempt to set a field not in this bitmask
+     * results in an exception, because such fields must be set by the base
+     * class.
+     */
+    private transient int internalSetMask;
+
+    /**
+     * The Gregorian year, as computed by computeGregorianFields() and
+     * returned by getGregorianYear().
+     */
+    private transient int gregorianYear;
+
+    /**
+     * The Gregorian month, as computed by computeGregorianFields() and
+     * returned by getGregorianMonth().
+     */
+    private transient int gregorianMonth;
+
+    /**
+     * The Gregorian day of the year, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfYear().
+     */
+    private transient int gregorianDayOfYear;
+
+    /**
+     * The Gregorian day of the month, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfMonth().
+     */
+    private transient int gregorianDayOfMonth;
+
+    /**
+     * Constructs a Calendar with the default time zone
+     * and locale.
+     * @see     TimeZone#getDefault
+     * @stable ICU 2.0
+     */
+    protected Calendar()
+    {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @stable ICU 2.0
+     */
+    protected Calendar(TimeZone zone, Locale aLocale)
+    {
+        this(zone, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Constructs a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @stable ICU 3.2
+     */
+    protected Calendar(TimeZone zone, ULocale locale)
+    {
+        this.zone = zone;
+        setWeekData(locale);
+        initInternal();
+    }
+
+    private void initInternal()
+    {
+        // Allocate fields through the framework method.  Subclasses
+        // may override this to define additional fields.
+        fields = handleCreateFields();
+        ///CLOVER:OFF
+        // todo: fix, difficult to test without subclassing
+        if (fields == null || fields.length < BASE_FIELD_COUNT ||
+            fields.length > MAX_FIELD_COUNT) {
+            throw new IllegalStateException("Invalid fields[]");
+        }
+        ///CLOVER:ON
+        stamp = new int[fields.length];
+        int mask = (1 << ERA) |
+            (1 << YEAR) |
+            (1 << MONTH) |
+            (1 << DAY_OF_MONTH) |
+            (1 << DAY_OF_YEAR) |
+            (1 << EXTENDED_YEAR);
+        for (int i=BASE_FIELD_COUNT; i<fields.length; ++i) {
+            mask |= (1 << i);
+        }
+        internalSetMask = mask;
+    }
+
+    /**
+     * Gets a calendar using the default time zone and locale.
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance()
+    {
+        return getInstanceInternal(null, null);
+    }
+
+    /**
+     * Gets a calendar using the specified time zone and default locale.
+     * @param zone the time zone to use
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone)
+    {
+        return getInstanceInternal(zone, null);
+    }
+
+    /**
+     * Gets a calendar using the default time zone and specified locale.
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(Locale aLocale)
+    {
+        return getInstanceInternal(null, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets a calendar using the default time zone and specified locale.  
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(ULocale locale)
+    {
+        return getInstanceInternal(null, locale);
+    }
+
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone,
+                                                    Locale aLocale) {
+        return getInstanceInternal(zone, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(TimeZone zone,
+                                                    ULocale locale) {
+        return getInstanceInternal(zone, locale);
+    }
+
+    /*
+     * All getInstance implementations call this private method to create a new
+     * Calendar instance.
+     */ 
+    private static Calendar getInstanceInternal(TimeZone tz, ULocale locale) {
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        if (tz == null) {
+            tz = TimeZone.getDefault();
+        }
+        Calendar cal = getShim().createInstance(locale);
+        cal.setTimeZone(tz);
+        cal.setTimeInMillis(System.currentTimeMillis());
+        return cal;
+    }
+
+    private static final int BUDDHIST = 0;
+    private static final int CHINESE = 1;
+    private static final int COPTIC = 2;
+    private static final int ETHIOPIC = 3;
+    private static final int GREGORIAN = 4;
+    private static final int HEBREW = 5;
+    private static final int INDIAN = 6;
+    private static final int ISLAMIC = 7;
+    private static final int ISLAMIC_CIVIL = 8;
+    private static final int JAPANESE = 9;
+    private static final int TAIWAN = 10;
+    private static final int ETHIOPIC_AMETE_ALEM = 11;
+
+    private static final String[] calTypes = {
+        "buddhist", "chinese", "coptic", "ethiopic", "gregorian", "hebrew", 
+        "indian", "islamic", "islamic-civil", "japanese", "roc", "ethiopic-amete-alem"
+    };
+
+    private static int getCalendarType(ULocale l) {
+        String s = l.getKeywordValue("calendar");
+        if (s == null) {
+            l = ICUResourceBundle.getFunctionalEquivalent(
+                ICUResourceBundle.ICU_BASE_NAME, "calendar", "calendar", l, null, false);
+            s = l.getKeywordValue("calendar");
+        }
+        return getCalendarType(s);
+    }
+
+    private static int getCalendarType(String s) {
+        if (s != null) {
+            s = s.toLowerCase();
+            for (int i = 0; i < calTypes.length; ++i) {
+                if (s.equals(calTypes[i])) {
+                    return i;
+                }
+            }
+        }
+        return GREGORIAN;
+    }
+
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales()
+    {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales()
+    {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableULocales();
+    }
+
+    // ==== Factory Stuff ====
+    /**
+     * A CalendarFactory is used to register new calendar implementation.
+     * The factory should be able to create a calendar instance for the
+     * specified locale.
+     *
+     * @prototype
+     */
+    /* public */ static abstract class CalendarFactory {
+        public boolean visible() {
+            return true;
+        }
+
+        public abstract Set getSupportedLocaleNames();
+
+        public Calendar createCalendar(ULocale loc) {
+            return null;
+        }
+
+        protected CalendarFactory() {
+        }
+    }
+
+    //  shim so we can build without service code
+    static abstract class CalendarShim {
+        abstract Locale[] getAvailableLocales();
+        abstract ULocale[] getAvailableULocales();
+        abstract Object registerFactory(CalendarFactory factory);
+        abstract boolean unregister(Object k);
+        abstract Calendar createInstance(ULocale l);
+    }
+
+    private static CalendarShim shim;
+    private static CalendarShim getShim() {
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.util.CalendarServiceShim");
+                shim = (CalendarShim)cls.newInstance();
+            }
+            catch (MissingResourceException e) {
+                throw e;
+            }
+            catch (Exception e) {
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+        return shim;
+    }
+
+    static Calendar createInstance(ULocale locale) {
+        int calType = getCalendarType(locale);
+        TimeZone zone = TimeZone.getDefault();
+
+        switch (calType) {
+        case BUDDHIST:
+            return new BuddhistCalendar(zone, locale);
+        case CHINESE:
+            return new ChineseCalendar(zone, locale);
+        case COPTIC:
+            return new CopticCalendar(zone, locale);
+        case ETHIOPIC:
+            return new EthiopicCalendar(zone, locale);
+        case ETHIOPIC_AMETE_ALEM:
+            EthiopicCalendar ethiopicAA = new EthiopicCalendar(zone, locale);
+            ethiopicAA.setAmeteAlemEra(true);
+            return ethiopicAA;
+        case GREGORIAN:
+            return new GregorianCalendar(zone, locale);
+        case HEBREW:
+            return new HebrewCalendar(zone, locale);
+        case ISLAMIC:
+        case ISLAMIC_CIVIL: {
+            IslamicCalendar result = new IslamicCalendar(zone, locale);
+            result.setCivil(calType == ISLAMIC_CIVIL);
+            return result;
+        }
+        case JAPANESE:
+            return new JapaneseCalendar(zone, locale);
+        case TAIWAN:
+            return new TaiwanCalendar(zone, locale);
+        case INDIAN:
+            return new IndianCalendar(zone, locale);
+        default:
+            throw new IllegalStateException();
+        }
+    }
+
+    ///CLOVER:OFF
+    /**
+     * Register a new CalendarFactory.  getInstance(TimeZone, ULocale, String) will
+     * try to locate a registered factories matching the factoryName.  Only registered
+     * factories will be found.
+     * @prototype
+     */
+    /* public */ static Object registerFactory(CalendarFactory factory) {
+        if (factory == null) {
+            throw new IllegalArgumentException("factory must not be null");
+        }
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister the CalendarFactory associated with this key
+     * (obtained from register).
+     * @prototype
+     */
+    /* public */ static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+
+        if (shim == null) {
+            return false;
+        }
+
+        return shim.unregister(registryKey);
+    }
+
+    ///CLOVER:ON
+    // ==== End of factory Stuff ====
+
+    /**
+     * Gets this Calendar's current time.
+     * @return the current time.
+     * @stable ICU 2.0
+     */
+    public final Date getTime() {
+        return new Date( getTimeInMillis() );
+    }
+
+    /**
+     * Sets this Calendar's current time with the given Date.
+     * <p>
+     * Note: Calling <code>setTime()</code> with
+     * <code>Date(Long.MAX_VALUE)</code> or <code>Date(Long.MIN_VALUE)</code>
+     * may yield incorrect field values from <code>get()</code>.
+     * @param date the given Date.
+     * @stable ICU 2.0
+     */
+    public final void setTime(Date date) {
+        setTimeInMillis( date.getTime() );
+    }
+
+    /**
+     * Gets this Calendar's current time as a long.
+     * @return the current time as UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public long getTimeInMillis() {
+        if (!isTimeSet) updateTime();
+        return time;
+    }
+
+    /**
+     * Sets this Calendar's current time from the given long value.
+     * @param millis the new time in UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public void setTimeInMillis( long millis ) {
+        if (millis > MAX_MILLIS) {
+            millis = MAX_MILLIS;
+        } else if (millis < MIN_MILLIS) {
+            millis = MIN_MILLIS;
+        }
+        time = millis;
+        areFieldsSet = areAllFieldsSet = false;
+        isTimeSet = areFieldsVirtuallySet = true;
+    }
+
+    /**
+     * Gets the value for a given time field.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int get(int field)
+    {
+        complete();
+        return fields[field];
+    }
+
+    /**
+     * Gets the value for a given time field.  This is an internal method
+     * for subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    protected final int internalGet(int field)
+    {
+        return fields[field];
+    }
+
+    /**
+     * Get the value for a given time field, or return the given default
+     * value if the field is not set.  This is an internal method for
+     * subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @param defaultValue value to return if field is not set
+     * @return the value for the given time field of defaultValue if the
+     * field is unset
+     * @stable ICU 2.0
+     */
+    protected final int internalGet(int field, int defaultValue) {
+        return (stamp[field] > UNSET) ? fields[field] : defaultValue;
+    }
+
+    /**
+     * Sets the time field with the given value.
+     * @param field the given time field.
+     * @param value the value to be set for the given time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int field, int value)
+    {
+        if (areFieldsVirtuallySet) {
+            computeFields();
+        }
+        fields[field] = value;
+        stamp[field] = nextStamp++;
+        isTimeSet = areFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Sets the values for the fields year, month, and date.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, and minute.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, minute, and second.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @param second the value used to set the SECOND time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute,
+                          int second)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+    /**
+     * Clears the values of all the time fields.
+     * @stable ICU 2.0
+     */
+    public final void clear()
+    {
+        for (int i=0; i<fields.length; ++i) {
+            fields[i] = stamp[i] = 0; // UNSET == 0
+        }
+        isTimeSet = areFieldsSet = areAllFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Clears the value in the given time field.
+     * @param field the time field to be cleared.
+     * @stable ICU 2.0
+     */
+    public final void clear(int field)
+    {
+        if (areFieldsVirtuallySet) {
+            computeFields();
+        }
+        fields[field] = 0;
+        stamp[field] = UNSET;
+        isTimeSet = areFieldsSet = areAllFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Determines if the given time field has a value set.
+     * @return true if the given time field has a value set; false otherwise.
+     * @stable ICU 2.0
+     */
+    public final boolean isSet(int field)
+    {
+        return areFieldsVirtuallySet || (stamp[field] != UNSET);
+    }
+
+    /**
+     * Fills in any unset fields in the time field list.
+     * @stable ICU 2.0
+     */
+    protected void complete()
+    {
+        if (!isTimeSet) updateTime();
+        if (!areFieldsSet) {
+            computeFields(); // fills in unset fields
+            areFieldsSet = true;
+            areAllFieldsSet = true;
+        }
+    }
+
+    /**
+     * Compares this calendar to the specified object.
+     * The result is <code>true</code> if and only if the argument is
+     * not <code>null</code> and is a <code>Calendar</code> object that
+     * represents the same calendar as this object.
+     * @param obj the object to compare with.
+     * @return <code>true</code> if the objects are the same;
+     * <code>false</code> otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (this.getClass() != obj.getClass()) {
+            return false;
+        }
+
+        Calendar that = (Calendar) obj;
+
+        return isEquivalentTo(that) &&
+            getTimeInMillis() == that.getTime().getTime();
+    }
+
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  An equivalent Calendar will behave exactly as this one
+     * does, but it may be set to a different time.  By contrast, for
+     * the equals() method to return true, the other Calendar must
+     * be set to the same time.
+     *
+     * @param other the Calendar to be compared with this Calendar
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return this.getClass() == other.getClass() &&
+            isLenient() == other.isLenient() &&
+            getFirstDayOfWeek() == other.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == other.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(other.getTimeZone());
+    }
+
+    /**
+     * Returns a hash code for this calendar.
+     * @return a hash code value for this object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        /* Don't include the time because (a) we don't want the hash value to
+         * move around just because a calendar is set to different times, and
+         * (b) we don't want to trigger a time computation just to get a hash.
+         * Note that it is not necessary for unequal objects to always have
+         * unequal hashes, but equal objects must have equal hashes.  */
+        return (lenient ? 1 : 0)
+            | (firstDayOfWeek << 1)
+            | (minimalDaysInFirstWeek << 4)
+            | (zone.hashCode() << 7);
+    }
+
+    /**
+     * Return the difference in milliseconds between the moment this
+     * calendar is set to and the moment the given calendar or Date object
+     * is set to.
+     */
+    private long compare(Object that) {
+        long thatMs;
+        if (that instanceof Calendar) {
+            thatMs = ((Calendar)that).getTimeInMillis();
+        } else if (that instanceof Date) {
+            thatMs = ((Date)that).getTime();
+        } else {
+            throw new IllegalArgumentException(that + "is not a Calendar or Date");
+        }
+        return getTimeInMillis() - thatMs;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is before
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean before(Object when) {
+        return compare(when) < 0;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is after
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean after(Object when) {
+        return compare(when) > 0;
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the
+     * current date.  For example, with the Gregorian date February 3, 1997
+     * and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual maximum
+     * is 28; for February 3, 1996 it is 29.
+     *
+     * <p>The actual maximum computation ignores smaller fields and the
+     * current value of like-sized fields.  For example, the actual maximum
+     * of the DAY_OF_YEAR or MONTH depends only on the year and supra-year
+     * fields.  The actual maximum of the DAY_OF_MONTH depends, in
+     * addition, on the MONTH field and any other fields at that
+     * granularity (such as ChineseCalendar.IS_LEAP_MONTH).  The
+     * DAY_OF_WEEK_IN_MONTH field does not depend on the current
+     * DAY_OF_WEEK; it returns the maximum for any day of week in the
+     * current month.  Likewise for the WEEK_OF_MONTH and WEEK_OF_YEAR
+     * fields.
+     *
+     * @param field the field whose maximum is desired
+     * @return the maximum of the given field for the current date of this calendar
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        int result;
+
+        switch (field) {
+        case DAY_OF_MONTH:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetMonthLength(cal.get(EXTENDED_YEAR), cal.get(MONTH));
+            }
+            break;
+
+        case DAY_OF_YEAR:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetYearLength(cal.get(EXTENDED_YEAR));
+            }
+            break;
+
+        case ERA:
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMaximum(field);
+            break;
+
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getLeastMaximum(field), getMaximum(field));
+            break;
+        }
+        return result;
+    }
+
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        int result;
+
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMinimum(field);
+            break;
+
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getGreatestMinimum(field), getMinimum(field));
+            break;
+        }
+        return result;
+    }
+
+    /**
+     * Prepare this calendar for computing the actual minimum or maximum.
+     * This method modifies this calendar's fields; it is called on a
+     * temporary calendar.
+     *
+     * <p>Rationale: The semantics of getActualXxx() is to return the
+     * maximum or minimum value that the given field can take, taking into
+     * account other relevant fields.  In general these other fields are
+     * larger fields.  For example, when computing the actual maximum
+     * DAY_OF_MONTH, the current value of DAY_OF_MONTH itself is ignored,
+     * as is the value of any field smaller.
+     *
+     * <p>The time fields all have fixed minima and maxima, so we don't
+     * need to worry about them.  This also lets us set the
+     * MILLISECONDS_IN_DAY to zero to erase any effects the time fields
+     * might have when computing date fields.
+     *
+     * <p>DAY_OF_WEEK is adjusted specially for the WEEK_OF_MONTH and
+     * WEEK_OF_YEAR fields to ensure that they are computed correctly.
+     * @stable ICU 2.0
+     */
+    protected void prepareGetActual(int field, boolean isMinimum) {
+        set(MILLISECONDS_IN_DAY, 0);
+
+        switch (field) {
+        case YEAR:
+        case EXTENDED_YEAR:
+            set(DAY_OF_YEAR, getGreatestMinimum(DAY_OF_YEAR));
+            break;
+
+        case YEAR_WOY:
+            set(WEEK_OF_YEAR, getGreatestMinimum(WEEK_OF_YEAR));
+            break;
+
+        case MONTH:
+            set(DAY_OF_MONTH, getGreatestMinimum(DAY_OF_MONTH));
+            break;
+
+        case DAY_OF_WEEK_IN_MONTH:
+            // For dowim, the maximum occurs for the DOW of the first of the
+            // month.
+            set(DAY_OF_MONTH, 1);
+            set(DAY_OF_WEEK, get(DAY_OF_WEEK)); // Make this user set
+            break;
+
+        case WEEK_OF_MONTH:
+        case WEEK_OF_YEAR:
+            // If we're counting weeks, set the day of the week to either the
+            // first or last localized DOW.  We know the last week of a month
+            // or year will contain the first day of the week, and that the
+            // first week will contain the last DOW.
+            {
+                int dow = firstDayOfWeek;
+                if (isMinimum) {
+                    dow = (dow + 6) % 7; // set to last DOW
+                    if (dow < SUNDAY) {
+                        dow += 7;
+                    }
+                }
+                set(DAY_OF_WEEK, dow);
+            }
+            break;
+        }
+
+        // Do this last to give it the newest time stamp
+        set(field, getGreatestMinimum(field));
+    }
+
+    private int getActualHelper(int field, int startValue, int endValue) {
+
+        if (startValue == endValue) {
+            // if we know that the maximum value is always the same, just return it
+            return startValue;
+        }
+
+        final int delta = (endValue > startValue) ? 1 : -1;
+
+        // clone the calendar so we don't mess with the real one, and set it to
+        // accept anything for the field values
+        Calendar work = (Calendar) clone();
+        work.setLenient(true);
+        work.prepareGetActual(field, delta < 0);
+
+        // now try each value from the start to the end one by one until
+        // we get a value that normalizes to another value.  The last value that
+        // normalizes to itself is the actual maximum for the current date
+
+        work.set(field, startValue);
+        // prepareGetActual sets the first day of week in the same week with
+        // the first day of a month.  Unlike WEEK_OF_YEAR, week number for the
+        // which week contains days from both previous and current month is
+        // not unique.  For example, last several days in the previous month
+        // is week 5, and the rest of week is week 1.
+        if (work.get(field) != startValue
+                && field != WEEK_OF_MONTH && delta > 0) {
+            return startValue;
+        }
+        int result = startValue;
+        do {
+            startValue += delta;
+            work.add(field, delta);
+            if (work.get(field) != startValue) {
+                break;
+            }
+            result = startValue;
+        } while (startValue != endValue);
+
+        return result;
+
+    }
+
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public final void roll(int field, boolean up)
+    {
+        roll(field, up ? +1 : -1);
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+
+        if (amount == 0) {
+            return; // Nothing to do
+        }
+
+        complete();
+
+        switch (field) {
+        case DAY_OF_MONTH:
+        case AM_PM:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+        case ERA:
+            // These are the standard roll instructions.  These work for all
+            // simple cases, that is, cases in which the limits are fixed, such
+            // as the hour, the day of the month, and the era.
+            {
+                int min = getActualMinimum(field);
+                int max = getActualMaximum(field);
+                int gap = max - min + 1;
+
+                int value = internalGet(field) + amount;
+                value = (value - min) % gap;
+                if (value < 0) {
+                    value += gap;
+                }
+                value += min;
+
+                set(field, value);
+                return;
+            }
+
+        case HOUR:
+        case HOUR_OF_DAY:
+            // Rolling the hour is difficult on the ONSET and CEASE days of
+            // daylight savings.  For example, if the change occurs at
+            // 2 AM, we have the following progression:
+            // ONSET: 12 Std -> 1 Std -> 3 Dst -> 4 Dst
+            // CEASE: 12 Dst -> 1 Dst -> 1 Std -> 2 Std
+            // To get around this problem we don't use fields; we manipulate
+            // the time in millis directly.
+            {
+                // Assume min == 0 in calculations below
+                long start = getTimeInMillis();
+                int oldHour = internalGet(field);
+                int max = getMaximum(field);
+                int newHour = (oldHour + amount) % (max + 1);
+                if (newHour < 0) {
+                    newHour += max + 1;
+                }
+                setTimeInMillis(start + ONE_HOUR * (newHour - oldHour));
+                return;
+            }
+
+        case MONTH:
+            // Rolling the month involves both pinning the final value
+            // and adjusting the DAY_OF_MONTH if necessary.  We only adjust the
+            // DAY_OF_MONTH if, after updating the MONTH field, it is illegal.
+            // E.g., <jan31>.roll(MONTH, 1) -> <feb28> or <feb29>.
+            {
+                int max = getActualMaximum(MONTH);
+                int mon = (internalGet(MONTH) + amount) % (max+1);
+
+                if (mon < 0) {
+                    mon += (max + 1);
+                }
+                set(MONTH, mon);
+
+                // Keep the day of month in range.  We don't want to spill over
+                // into the next month; e.g., we don't want jan31 + 1 mo -> feb31 ->
+                // mar3.
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+
+        case YEAR:
+        case YEAR_WOY:
+        case EXTENDED_YEAR:
+            // Rolling the year can involve pinning the DAY_OF_MONTH.
+            set(field, internalGet(field) + amount);
+            pinField(MONTH);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_MONTH:
+            {
+                // This is tricky, because during the roll we may have to shift
+                // to a different day of the week.  For example:
+
+                //    s  m  t  w  r  f  s
+                //          1  2  3  4  5
+                //    6  7  8  9 10 11 12
+
+                // When rolling from the 6th or 7th back one week, we go to the
+                // 1st (assuming that the first partial week counts).  The same
+                // thing happens at the end of the month.
+
+                // The other tricky thing is that we have to figure out whether
+                // the first partial week actually counts or not, based on the
+                // minimal first days in the week.  And we have to use the
+                // correct first day of the week to delineate the week
+                // boundaries.
+
+                // Here's our algorithm.  First, we find the real boundaries of
+                // the month.  Then we discard the first partial week if it
+                // doesn't count in this locale.  Then we fill in the ends with
+                // phantom days, so that the first partial week and the last
+                // partial week are full weeks.  We then have a nice square
+                // block of weeks.  We do the usual rolling within this block,
+                // as is done elsewhere in this method.  If we wind up on one of
+                // the phantom days that we added, we recognize this and pin to
+                // the first or the last day of the month.  Easy, eh?
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the month.
+                int fdm = (dow - internalGet(DAY_OF_MONTH) + 1) % 7;
+                if (fdm < 0) fdm += 7;
+
+                // Get the first day of the first full week of the month,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdm) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdm; // Skip the first partial week
+                else
+                    start = 1 - fdm; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the month.
+                int monthLen = getActualMaximum(DAY_OF_MONTH);
+                int ldm = (monthLen - internalGet(DAY_OF_MONTH) + dow) % 7;
+                // We know monthLen >= DAY_OF_MONTH so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular month; that
+                // is, the day which is one past the last day of the month,
+                // after the month has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = monthLen + 7 - ldm;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_month = (internalGet(DAY_OF_MONTH) + amount*7 -
+                                    start) % gap;
+                if (day_of_month < 0) day_of_month += gap;
+                day_of_month += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_month < 1) day_of_month = 1;
+                if (day_of_month > monthLen) day_of_month = monthLen;
+
+                // Set the DAY_OF_MONTH.  We rely on the fact that this field
+                // takes precedence over everything else (since all other fields
+                // are also set at this point).  If this fact changes (if the
+                // disambiguation algorithm changes) then we will have to unset
+                // the appropriate fields here so that DAY_OF_MONTH is attended
+                // to.
+                set(DAY_OF_MONTH, day_of_month);
+                return;
+            }
+        case WEEK_OF_YEAR:
+            {
+                // This follows the outline of WEEK_OF_MONTH, except it applies
+                // to the whole year.  Please see the comment for WEEK_OF_MONTH
+                // for general notes.
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the year.
+                int fdy = (dow - internalGet(DAY_OF_YEAR) + 1) % 7;
+                if (fdy < 0) fdy += 7;
+
+                // Get the first day of the first full week of the year,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdy) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdy; // Skip the first partial week
+                else
+                    start = 1 - fdy; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the year.
+                int yearLen = getActualMaximum(DAY_OF_YEAR);
+                int ldy = (yearLen - internalGet(DAY_OF_YEAR) + dow) % 7;
+                // We know yearLen >= DAY_OF_YEAR so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular year; that
+                // is, the day which is one past the last day of the year,
+                // after the year has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = yearLen + 7 - ldy;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_year = (internalGet(DAY_OF_YEAR) + amount*7 -
+                                    start) % gap;
+                if (day_of_year < 0) day_of_year += gap;
+                day_of_year += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_year < 1) day_of_year = 1;
+                if (day_of_year > yearLen) day_of_year = yearLen;
+
+                // Make sure that the year and day of year are attended to by
+                // clearing other fields which would normally take precedence.
+                // If the disambiguation algorithm is changed, this section will
+                // have to be updated as well.
+                set(DAY_OF_YEAR, day_of_year);
+                clear(MONTH);
+                return;
+            }
+        case DAY_OF_YEAR:
+            {
+                // Roll the day of year using millis.  Compute the millis for
+                // the start of the year, and get the length of the year.
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                long min2 = time - (internalGet(DAY_OF_YEAR) - 1) * ONE_DAY;
+                int yearLength = getActualMaximum(DAY_OF_YEAR);
+                time = (time + delta - min2) % (yearLength*ONE_DAY);
+                if (time < 0) time += yearLength*ONE_DAY;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+            {
+                // Roll the day of week using millis.  Compute the millis for
+                // the start of the week, using the first day of week setting.
+                // Restrict the millis to [start, start+7days).
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                // Compute the number of days before the current day in this
+                // week.  This will be a value 0..6.
+                int leadDays = internalGet(field);
+                leadDays -= (field == DAY_OF_WEEK) ? getFirstDayOfWeek() : 1;
+                if (leadDays < 0) leadDays += 7;
+                long min2 = time - leadDays * ONE_DAY;
+                time = (time + delta - min2) % ONE_WEEK;
+                if (time < 0) time += ONE_WEEK;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK_IN_MONTH:
+            {
+                // Roll the day of week in the month using millis.  Determine
+                // the first day of the week in the month, and then the last,
+                // and then roll within that range.
+                long delta = amount * ONE_WEEK; // Scale up from weeks to millis
+                // Find the number of same days of the week before this one
+                // in this month.
+                int preWeeks = (internalGet(DAY_OF_MONTH) - 1) / 7;
+                // Find the number of same days of the week after this one
+                // in this month.
+                int postWeeks = (getActualMaximum(DAY_OF_MONTH) -
+                                 internalGet(DAY_OF_MONTH)) / 7;
+                // From these compute the min and gap millis for rolling.
+                long min2 = time - preWeeks * ONE_WEEK;
+                long gap2 = ONE_WEEK * (preWeeks + postWeeks + 1); // Must add 1!
+                // Roll within this range
+                time = (time + delta - min2) % gap2;
+                if (time < 0) time += gap2;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case JULIAN_DAY:
+            set(field, internalGet(field) + amount);
+            return;
+        default:
+            // Other fields cannot be rolled by this method
+            throw new IllegalArgumentException("Calendar.roll(" + fieldName(field) +
+                                               ") not supported");
+        }
+    }
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>.
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @stable ICU 2.0
+     */
+    public void add(int field, int amount) {
+
+        if (amount == 0) {
+            return;   // Do nothing!
+        }
+
+        // We handle most fields in the same way.  The algorithm is to add
+        // a computed amount of millis to the current millis.  The only
+        // wrinkle is with DST -- for some fields, like the DAY_OF_MONTH,
+        // we don't want the HOUR to shift due to changes in DST.  If the
+        // result of the add operation is to move from DST to Standard, or
+        // vice versa, we need to adjust by an hour forward or back,
+        // respectively.  For such fields we set keepHourInvariant to true.
+
+        // We only adjust the DST for fields larger than an hour.  For
+        // fields smaller than an hour, we cannot adjust for DST without
+        // causing problems.  for instance, if you add one hour to April 5,
+        // 1998, 1:00 AM, in PST, the time becomes "2:00 AM PDT" (an
+        // illegal value), but then the adjustment sees the change and
+        // compensates by subtracting an hour.  As a result the time
+        // doesn't advance at all.
+
+        // For some fields larger than a day, such as a MONTH, we pin the
+        // DAY_OF_MONTH.  This allows <March 31>.add(MONTH, 1) to be
+        // <April 30>, rather than <April 31> => <May 1>.
+
+        long delta = amount; // delta in ms
+        boolean keepHourInvariant = true;
+
+        switch (field) {
+        case ERA:
+            set(field, get(field) + amount);
+            pinField(ERA);
+            return;
+
+        case YEAR:
+        case EXTENDED_YEAR:
+        case YEAR_WOY:
+        case MONTH:
+            set(field, get(field) + amount);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_YEAR:
+        case WEEK_OF_MONTH:
+        case DAY_OF_WEEK_IN_MONTH:
+            delta *= ONE_WEEK;
+            break;
+
+        case AM_PM:
+            delta *= 12 * ONE_HOUR;
+            break;
+
+        case DAY_OF_MONTH:
+        case DAY_OF_YEAR:
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+            delta *= ONE_DAY;
+            break;
+
+        case HOUR_OF_DAY:
+        case HOUR:
+            delta *= ONE_HOUR;
+            keepHourInvariant = false;
+            break;
+
+        case MINUTE:
+            delta *= ONE_MINUTE;
+            keepHourInvariant = false;
+            break;
+
+        case SECOND:
+            delta *= ONE_SECOND;
+            keepHourInvariant = false;
+            break;
+
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+            keepHourInvariant = false;
+            break;
+
+        default:
+            throw new IllegalArgumentException("Calendar.add(" + fieldName(field) +
+                                               ") not supported");
+        }
+
+        // In order to keep the hour invariant (for fields where this is
+        // appropriate), record the DST_OFFSET before and after the add()
+        // operation.  If it has changed, then adjust the millis to
+        // compensate.
+        int dst = 0;
+        int hour = 0;
+        if (keepHourInvariant) {
+            dst = get(DST_OFFSET);
+            hour = internalGet(HOUR_OF_DAY);
+        }
+
+        setTimeInMillis(getTimeInMillis() + delta);
+
+        if (keepHourInvariant) {
+            dst -= get(DST_OFFSET);
+            if (dst != 0) {
+                // We have done an hour-invariant adjustment but the
+                // DST offset has altered.  We adjust millis to keep
+                // the hour constant.  In cases such as midnight after
+                // a DST change which occurs at midnight, there is the
+                // danger of adjusting into a different day.  To avoid
+                // this we make the adjustment only if it actually
+                // maintains the hour.
+                long t = time;
+                setTimeInMillis(time + dst);
+                if (get(HOUR_OF_DAY) != hour) {
+                    setTimeInMillis(t);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(Locale loc) {
+        return this.getClass().getName();
+    }
+
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(ULocale loc) {
+        return this.getClass().getName();
+    }
+
+    /**
+     * Compares the times (in millis) represented by two
+     * <code>Calendar</code> objects.
+     *
+     * @param that the <code>Calendar</code> to compare to this.
+     * @return <code>0</code> if the time represented by 
+     * this <code>Calendar</code> is equal to the time represented 
+     * by that <code>Calendar</code>, a value less than 
+     * <code>0</code> if the time represented by this is before
+     * the time represented by that, and a value greater than
+     * <code>0</code> if the time represented by this
+     * is after the time represented by that.
+     * @throws NullPointerException if that 
+     * <code>Calendar</code> is null.
+     * @throws IllegalArgumentException if the time of that 
+     * <code>Calendar</code> can't be obtained because of invalid
+     * calendar values.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Calendar that) {
+        long v = getTimeInMillis() - that.getTimeInMillis();
+        return v < 0 ? -1 : (v > 0 ? 1 : 0);
+    }
+
+    /**
+     * Implement comparable API as a convenience override of
+     * {@link #compareTo(Calendar)}.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Object that) {
+        return compareTo((Calendar)that);
+    }
+
+    //-------------------------------------------------------------------------
+    // Interface for creating custon DateFormats for different types of Calendars
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * Subclasses wishing to specialize this behavior should override
+     * <code>handleGetDateFormat()</code>
+     * @see #handleGetDateFormat
+     * @stable ICU 2.0
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, ULocale.forLocale(loc), dateStyle, timeStyle);
+    }
+
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * Subclasses wishing to specialize this behavior should override
+     * <code>handleGetDateFormat()</code>
+     * @see #handleGetDateFormat
+     * @stable ICU 3.2
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+
+    /**
+     * Create a <code>DateFormat</code> appropriate to this calendar.
+     * This is a framework method for subclasses to override.  This method
+     * is responsible for creating the calendar-specific DateFormat and
+     * DateFormatSymbols objects as needed.
+     * @param pattern the pattern, specific to the <code>DateFormat</code>
+     * subclass
+     * @param locale the locale for which the symbols should be drawn
+     * @return a <code>DateFormat</code> appropriate to this calendar
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, Locale locale) {
+        return handleGetDateFormat(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a <code>DateFormat</code> appropriate to this calendar.
+     * This is a framework method for subclasses to override.  This method
+     * is responsible for creating the calendar-specific DateFormat and
+     * DateFormatSymbols objects as needed.
+     * @param pattern the pattern, specific to the <code>DateFormat</code>
+     * subclass
+     * @param locale the locale for which the symbols should be drawn
+     * @return a <code>DateFormat</code> appropriate to this calendar
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        FormatConfiguration fmtConfig = new FormatConfiguration();
+        fmtConfig.pattern = pattern;
+        fmtConfig.formatData = new DateFormatSymbols(this, locale);
+        fmtConfig.loc = locale;
+        fmtConfig.cal = this;
+
+        return SimpleDateFormat.getInstance(fmtConfig);
+    }
+
+    // date format pattern cache
+    private static final ICUCache PATTERN_CACHE = new SimpleCache();
+    // final fallback patterns
+    private static final String[] DEFAULT_PATTERNS = {
+        "HH:mm:ss z",
+        "HH:mm:ss z",
+        "HH:mm:ss",
+        "HH:mm",
+        "EEEE, yyyy MMMM dd",
+        "yyyy MMMM d",
+        "yyyy MMM d",
+        "yy/MM/dd",
+        "{1} {0}"
+    };
+
+    static private DateFormat formatHelper(Calendar cal, ULocale loc, int dateStyle, int timeStyle) {
+        // First, try to get a pattern from PATTERN_CACHE
+        String key = loc.toString() + cal.getType();
+        String[] patterns = (String[])PATTERN_CACHE.get(key);
+        if (patterns == null) {
+            // Cache missed.  Get one from bundle
+            try {
+                CalendarData calData = new CalendarData(loc, cal.getType());
+                patterns = calData.get("DateTimePatterns").getStringArray();
+            } catch (MissingResourceException e) {
+                patterns = DEFAULT_PATTERNS;
+            }
+            PATTERN_CACHE.put(key, patterns);
+        }
+        // Resolve a pattern for the date/time style
+        String pattern = null;
+        if ((timeStyle >= 0) && (dateStyle >= 0)) {
+            pattern = MessageFormat.format(patterns[8],
+                    new Object[] {patterns[timeStyle], patterns[dateStyle + 4]});
+        } else if (timeStyle >= 0) {
+            pattern = patterns[timeStyle];
+        } else if (dateStyle >= 0) {
+            pattern = patterns[dateStyle + 4];
+        } else {
+            throw new IllegalArgumentException("No date or time style specified");
+        }
+        DateFormat result = cal.handleGetDateFormat(pattern, loc);
+        result.setCalendar(cal);
+        return result;
+    }
+
+    /**
+     * An instance of FormatConfiguration represents calendar specific
+     * date format configuration and used for calling the ICU private
+     * SimpleDateFormat factory method.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static class FormatConfiguration {
+        private String pattern;
+        private DateFormatSymbols formatData;
+        private Calendar cal;
+        private ULocale loc;
+
+        // Only Calendar can instantiate
+        private FormatConfiguration() {
+        }
+
+        /**
+         * Gets the pattern string
+         * @return the format pattern string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String getPatternString() {
+            return pattern;
+        }
+
+        /**
+         * Gets the calendar
+         * @return the calendar
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public Calendar getCalendar() {
+            return cal;
+        }
+
+        /**
+         * Gets the locale
+         * @return the locale
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public ULocale getLocale() {
+            return loc;
+        }
+
+        /**
+         * Gets the format symbols
+         * @return the format symbols
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public DateFormatSymbols getDateFormatSymbols() {
+            return formatData;
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Protected utility methods for use by subclasses.  These are very handy
+    // for implementing add, roll, and computeFields.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Adjust the specified field so that it is within
+     * the allowable range for the date to which this calendar is set.
+     * For example, in a Gregorian calendar pinning the {@link #DAY_OF_MONTH DAY_OF_MONTH}
+     * field for a calendar set to April 31 would cause it to be set
+     * to April 30.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This utility method is intended for use by subclasses that need to implement
+     * their own overrides of {@link #roll roll} and {@link #add add}.
+     * <p>
+     * <b>Note:</b>
+     * <code>pinField</code> is implemented in terms of
+     * {@link #getActualMinimum getActualMinimum}
+     * and {@link #getActualMaximum getActualMaximum}.  If either of those methods uses
+     * a slow, iterative algorithm for a particular field, it would be
+     * unwise to attempt to call <code>pinField</code> for that field.  If you
+     * really do need to do so, you should override this method to do
+     * something more efficient for that field.
+     * <p>
+     * @param field The calendar field whose value should be pinned.
+     *
+     * @see #getActualMinimum
+     * @see #getActualMaximum
+     * @stable ICU 2.0
+     */
+    protected void pinField(int field) {
+        int max = getActualMaximum(field);
+        int min = getActualMinimum(field);
+
+        if (fields[field] > max) {
+            set(field, max);
+        } else if (fields[field] < min) {
+            set(field, min);
+        }
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1, then
+     * the week number will be zero for those
+     * initial days. This method requires the day number and day of week for some
+     * known date in the period in order to determine the day of week
+     * on the desired day.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * This variant is handy for computing the week number of some other
+     * day of a period (often the first or last day of the period) when its day
+     * of the week is not known but the day number and day of week for some other
+     * day in the period (e.g. the current date) <em>is</em> known.
+     * <p>
+     * @param desiredDay    The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *              {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *              Should be 1 for the first day of the period.
+     *
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR}
+     *              or {@link #DAY_OF_MONTH DAY_OF_MONTH} for a day in the period whose
+     *              {@link #DAY_OF_WEEK DAY_OF_WEEK} is specified by the
+     *              <code>dayOfWeek</code> parameter.
+     *              Should be 1 for first day of period.
+     *
+     * @param dayOfWeek  The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *              corresponding to the <code>dayOfPeriod</code> parameter.
+     *              1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     * @stable ICU 2.0
+     */
+    protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)
+    {
+        // Determine the day of the week of the first day of the period
+        // in question (either a year or a month).  Zero represents the
+        // first day of the week on this calendar.
+        int periodStartDayOfWeek = (dayOfWeek - getFirstDayOfWeek() - dayOfPeriod + 1) % 7;
+        if (periodStartDayOfWeek < 0) periodStartDayOfWeek += 7;
+
+        // Compute the week number.  Initially, ignore the first week, which
+        // may be fractional (or may not be).  We add periodStartDayOfWeek in
+        // order to fill out the first week, if it is fractional.
+        int weekNo = (desiredDay + periodStartDayOfWeek - 1)/7;
+
+        // If the first week is long enough, then count it.  If
+        // the minimal days in the first week is one, or if the period start
+        // is zero, we always increment weekNo.
+        if ((7 - periodStartDayOfWeek) >= getMinimalDaysInFirstWeek()) ++weekNo;
+
+        return weekNo;
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year, or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1,
+     * then the week number will be zero for those
+     * initial days. This method requires the day of week for the given date in order to
+     * determine the result.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *                      {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *                      Should be 1 for the first day of the period.
+     *
+     * @param dayOfWeek     The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *                      corresponding to the <code>dayOfPeriod</code> parameter.
+     *                      1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     * @stable ICU 2.0
+     */
+    protected final int weekNumber(int dayOfPeriod, int dayOfWeek)
+    {
+        return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * [NEW]
+     * Return the difference between the given time and the time this
+     * calendar object is set to.  If this calendar is set
+     * <em>before</em> the given time, the returned value will be
+     * positive.  If this calendar is set <em>after</em> the given
+     * time, the returned value will be negative.  The
+     * <code>field</code> parameter specifies the units of the return
+     * value.  For example, if <code>fieldDifference(when,
+     * Calendar.MONTH)</code> returns 3, then this calendar is set to
+     * 3 months before <code>when</code>, and possibly some additional
+     * time less than one month.
+     *
+     * <p>As a side effect of this call, this calendar is advanced
+     * toward <code>when</code> by the given amount.  That is, calling
+     * this method has the side effect of calling <code>add(field,
+     * n)</code>, where <code>n</code> is the return value.
+     *
+     * <p>Usage: To use this method, call it first with the largest
+     * field of interest, then with progressively smaller fields.  For
+     * example:
+     *
+     * <pre>
+     * int y = cal.fieldDifference(when, Calendar.YEAR);
+     * int m = cal.fieldDifference(when, Calendar.MONTH);
+     * int d = cal.fieldDifference(when, Calendar.DATE);</pre>
+     *
+     * computes the difference between <code>cal</code> and
+     * <code>when</code> in years, months, and days.
+     *
+     * <p>Note: <code>fieldDifference()</code> is
+     * <em>asymmetrical</em>.  That is, in the following code:
+     *
+     * <pre>
+     * cal.setTime(date1);
+     * int m1 = cal.fieldDifference(date2, Calendar.MONTH);
+     * int d1 = cal.fieldDifference(date2, Calendar.DATE);
+     * cal.setTime(date2);
+     * int m2 = cal.fieldDifference(date1, Calendar.MONTH);
+     * int d2 = cal.fieldDifference(date1, Calendar.DATE);</pre>
+     *
+     * one might expect that <code>m1 == -m2 && d1 == -d2</code>.
+     * However, this is not generally the case, because of
+     * irregularities in the underlying calendar system (e.g., the
+     * Gregorian calendar has a varying number of days per month).
+     *
+     * @param when the date to compare this calendar's time to
+     * @param field the field in which to compute the result
+     * @return the difference, either positive or negative, between
+     * this calendar's time and <code>when</code>, in terms of
+     * <code>field</code>.
+     * @stable ICU 2.0
+     */
+    public int fieldDifference(Date when, int field) {
+        int min = 0;
+        long startMs = getTimeInMillis();
+        long targetMs = when.getTime();
+        // Always add from the start millis.  This accomodates
+        // operations like adding years from February 29, 2000 up to
+        // February 29, 2004.  If 1, 1, 1, 1 is added to the year
+        // field, the DOM gets pinned to 28 and stays there, giving an
+        // incorrect DOM difference of 1.  We have to add 1, reset, 2,
+        // reset, 3, reset, 4.
+        if (startMs < targetMs) {
+            int max = 1;
+            // Find a value that is too large
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms > targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max < 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((max - min) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms > targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        } else if (startMs > targetMs) {
+            if (false) {
+                // This works, and makes the code smaller, but costs
+                // an extra object creation and an extra couple cycles
+                // of calendar computation.
+                setTimeInMillis(targetMs);
+                min = -fieldDifference(new Date(startMs), field);
+            }
+            int max = -1;
+            // Find a value that is too small
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms < targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max == 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((min - max) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms < targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        }
+        // Set calendar to end point
+        setTimeInMillis(startMs);
+        add(field, min);
+        return min;
+    }
+
+    /**
+     * Sets the time zone with the given time zone value.
+     * @param value the given time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone value)
+    {
+        zone = value;
+        /* Recompute the fields from the time using the new zone.  This also
+         * works if isTimeSet is false (after a call to set()).  In that case
+         * the time will be computed from the fields using the new zone, then
+         * the fields will get recomputed from that.  Consider the sequence of
+         * calls: cal.setTimeZone(EST); cal.set(HOUR, 1); cal.setTimeZone(PST).
+         * Is cal set to 1 o'clock EST or 1 o'clock PST?  Answer: PST.  More
+         * generally, a call to setTimeZone() affects calls to set() BEFORE AND
+         * AFTER it up to the next call to complete().
+         */
+        areFieldsSet = false;
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone object associated with this calendar.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone()
+    {
+        return zone;
+    }
+
+    /**
+     * Specify whether or not date/time interpretation is to be lenient.  With
+     * lenient interpretation, a date such as "February 942, 1996" will be
+     * treated as being equivalent to the 941st day after February 1, 1996.
+     * With strict interpretation, such dates will cause an exception to be
+     * thrown.
+     *
+     * @see DateFormat#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)
+    {
+        this.lenient = lenient;
+    }
+
+    /**
+     * Tell whether date/time interpretation is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient()
+    {
+        return lenient;
+    }
+
+    /**
+     * Sets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @param value the given first day of the week.
+     * @stable ICU 2.0
+     */
+    public void setFirstDayOfWeek(int value)
+    {
+        if (firstDayOfWeek != value) {
+            if (value < SUNDAY || value > SATURDAY) {
+                throw new IllegalArgumentException("Invalid day of week");
+            }
+            firstDayOfWeek = value;
+            areFieldsSet = false;
+        }
+    }
+
+    /**
+     * Gets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @return the first day of the week.
+     * @stable ICU 2.0
+     */
+    public int getFirstDayOfWeek()
+    {
+        return firstDayOfWeek;
+    }
+
+    /**
+     * Sets what the minimal days required in the first week of the year are.
+     * For example, if the first week is defined as one that contains the first
+     * day of the first month of a year, call the method with value 1. If it
+     * must be a full week, use value 7.
+     * @param value the given minimal days required in the first week
+     * of the year.
+     * @stable ICU 2.0
+     */
+    public void setMinimalDaysInFirstWeek(int value)
+    {
+        // Values less than 1 have the same effect as 1; values greater
+        // than 7 have the same effect as 7. However, we normalize values
+        // so operator== and so forth work.
+        if (value < 1) {
+            value = 1;
+        } else if (value > 7) {
+            value = 7;
+        }
+        if (minimalDaysInFirstWeek != value) {
+            minimalDaysInFirstWeek = value;
+            areFieldsSet = false;
+        }
+    }
+
+    /**
+     * Gets what the minimal days required in the first week of the year are;
+     * e.g., if the first week is defined as one that contains the first day
+     * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
+     * the minimal days required must be a full week, getMinimalDaysInFirstWeek
+     * returns 7.
+     * @return the minimal days required in the first week of the year.
+     * @stable ICU 2.0
+     */
+    public int getMinimalDaysInFirstWeek()
+    {
+        return minimalDaysInFirstWeek;
+    }
+
+    private static final int LIMITS[][] = {
+        //    Minimum  Greatest min      Least max   Greatest max
+        {/*                                                      */}, // ERA
+        {/*                                                      */}, // YEAR
+        {/*                                                      */}, // MONTH
+        {/*                                                      */}, // WEEK_OF_YEAR
+        {/*                                                      */}, // WEEK_OF_MONTH
+        {/*                                                      */}, // DAY_OF_MONTH
+        {/*                                                      */}, // DAY_OF_YEAR
+        {           1,            1,             7,             7  }, // DAY_OF_WEEK
+        {/*                                                      */}, // DAY_OF_WEEK_IN_MONTH
+        {           0,            0,             1,             1  }, // AM_PM
+        {           0,            0,            11,            11  }, // HOUR
+        {           0,            0,            23,            23  }, // HOUR_OF_DAY
+        {           0,            0,            59,            59  }, // MINUTE
+        {           0,            0,            59,            59  }, // SECOND
+        {           0,            0,           999,           999  }, // MILLISECOND
+        {-12*ONE_HOUR, -12*ONE_HOUR,   12*ONE_HOUR,   12*ONE_HOUR  }, // ZONE_OFFSET
+        {           0,            0,    1*ONE_HOUR,    1*ONE_HOUR  }, // DST_OFFSET
+        {/*                                                      */}, // YEAR_WOY
+        {           1,            1,             7,             7  }, // DOW_LOCAL
+        {/*                                                      */}, // EXTENDED_YEAR
+        { -0x7F000000,  -0x7F000000,    0x7F000000,    0x7F000000  }, // JULIAN_DAY
+        {           0,            0, 24*ONE_HOUR-1, 24*ONE_HOUR-1  }, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * Subclass API for defining limits of different types.
+     * Subclasses must implement this method to return limits for the
+     * following fields:
+     *
+     * <pre>ERA
+     * YEAR
+     * MONTH
+     * WEEK_OF_YEAR
+     * WEEK_OF_MONTH
+     * DAY_OF_MONTH
+     * DAY_OF_YEAR
+     * DAY_OF_WEEK_IN_MONTH
+     * YEAR_WOY
+     * EXTENDED_YEAR</pre>
+     *
+     * @param field one of the above field numbers
+     * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>,
+     * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code>
+     * @stable ICU 2.0
+     */
+    abstract protected int handleGetLimit(int field, int limitType);
+
+    /**
+     * Return a limit for a field.
+     * @param field the field, from 0..</code>getFieldCount()-1</code>
+     * @param limitType the type specifier for the limit
+     * @see #MINIMUM
+     * @see #GREATEST_MINIMUM
+     * @see #LEAST_MAXIMUM
+     * @see #MAXIMUM
+     * @stable ICU 2.0
+     */
+    protected int getLimit(int field, int limitType) {
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            return LIMITS[field][limitType];
+
+        case WEEK_OF_MONTH:
+        {
+            int limit;
+            if (limitType == MINIMUM) {
+                limit = getMinimalDaysInFirstWeek() == 1 ? 1 : 0;
+            } else if (limitType == GREATEST_MINIMUM){
+                limit = 1;
+            } else {
+                int minDaysInFirst = getMinimalDaysInFirstWeek();
+                int daysInMonth = handleGetLimit(DAY_OF_MONTH, limitType);
+                if (limitType == LEAST_MAXIMUM) {
+                    limit = (daysInMonth + (7 - minDaysInFirst)) / 7;
+                } else { // limitType == MAXIMUM
+                    limit = (daysInMonth + 6 + (7 - minDaysInFirst)) / 7;
+                }
+            }
+            return limit;
+        }
+
+        }
+        return handleGetLimit(field, limitType);
+    }
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the minimum value that a field can take (least minimum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int MINIMUM = 0;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the greatest minimum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int GREATEST_MINIMUM = 1;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the least maximum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int LEAST_MAXIMUM = 2;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the maximum value that a field can take (greatest maximum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int MAXIMUM = 3;
+
+    /**
+     * Gets the minimum value for the given time field.
+     * e.g., for Gregorian DAY_OF_MONTH, 1.
+     * @param field the given time field.
+     * @return the minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMinimum(int field) {
+        return getLimit(field, MINIMUM);
+    }
+
+    /**
+     * Gets the maximum value for the given time field.
+     * e.g. for Gregorian DAY_OF_MONTH, 31.
+     * @param field the given time field.
+     * @return the maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMaximum(int field) {
+        return getLimit(field, MAXIMUM);
+    }
+
+    /**
+     * Gets the highest minimum value for the given field if varies.
+     * Otherwise same as getMinimum(). For Gregorian, no difference.
+     * @param field the given time field.
+     * @return the highest minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getGreatestMinimum(int field) {
+        return getLimit(field, GREATEST_MINIMUM);
+    }
+
+    /**
+     * Gets the lowest maximum value for the given field if varies.
+     * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
+     * @param field the given time field.
+     * @return the lowest maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getLeastMaximum(int field) {
+        return getLimit(field, LEAST_MAXIMUM);
+    }
+
+    //-------------------------------------------------------------------------
+    // Weekend support -- determining which days of the week are the weekend
+    // in a given locale
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return whether the given day of the week is a weekday, a
+     * weekend day, or a day that transitions from one to the other,
+     * in this calendar system.  If a transition occurs at midnight,
+     * then the days before and after the transition will have the
+     * type WEEKDAY or WEEKEND.  If a transition occurs at a time
+     * other than midnight, then the day of the transition will have
+     * the type WEEKEND_ONSET or WEEKEND_CEASE.  In this case, the
+     * method getWeekendTransition() will return the point of
+     * transition.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return either WEEKDAY, WEEKEND, WEEKEND_ONSET, or
+     * WEEKEND_CEASE
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * between SUNDAY and SATURDAY, inclusive
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getDayOfWeekType(int dayOfWeek) {
+        if (dayOfWeek < SUNDAY || dayOfWeek > SATURDAY) {
+            throw new IllegalArgumentException("Invalid day of week");
+        }
+        if (weekendOnset < weekendCease) {
+            if (dayOfWeek < weekendOnset || dayOfWeek > weekendCease) {
+                return WEEKDAY;
+            }
+        } else {
+            if (dayOfWeek > weekendCease && dayOfWeek < weekendOnset) {
+                return WEEKDAY;
+            }
+        }
+        if (dayOfWeek == weekendOnset) {
+            return (weekendOnsetMillis == 0) ? WEEKEND : WEEKEND_ONSET;
+        }
+        if (dayOfWeek == weekendCease) {
+            return (weekendCeaseMillis == 0) ? WEEKDAY : WEEKEND_CEASE;
+        }
+        return WEEKEND;
+    }
+
+    /**
+     * Return the time during the day at which the weekend begins or end in
+     * this calendar system.  If getDayOfWeekType(dayOfWeek) ==
+     * WEEKEND_ONSET return the time at which the weekend begins.  If
+     * getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE return the time at
+     * which the weekend ends.  If getDayOfWeekType(dayOfWeek) has some
+     * other value, then throw an exception.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return the milliseconds after midnight at which the
+     * weekend begins or ends
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * WEEKEND_ONSET or WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getWeekendTransition(int dayOfWeek) {
+        if (dayOfWeek == weekendOnset) {
+            return weekendOnsetMillis;
+        } else if (dayOfWeek == weekendCease) {
+            return weekendCeaseMillis;
+        }
+        throw new IllegalArgumentException("Not weekend transition day");
+    }
+
+    /**
+     * Return true if the given date and time is in the weekend in
+     * this calendar system.  Equivalent to calling setTime() followed
+     * by isWeekend().  Note: This method changes the time this
+     * calendar is set to.
+     * @param date the date and time
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend(Date date) {
+        setTime(date);
+        return isWeekend();
+    }
+
+    /**
+     * Return true if this Calendar's current date and time is in the
+     * weekend in this calendar system.
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend() {
+        int dow =  get(DAY_OF_WEEK);
+        int dowt = getDayOfWeekType(dow);
+        switch (dowt) {
+        case WEEKDAY:
+            return false;
+        case WEEKEND:
+            return true;
+        default: // That is, WEEKEND_ONSET or WEEKEND_CEASE
+            // Use internalGet() because the above call to get() populated
+            // all fields.
+            // [Note: There should be a better way to get millis in day.
+            //  For ICU4J, submit request for a MILLIS_IN_DAY field
+            //  and a DAY_NUMBER field (could be Julian day #). - aliu]
+            int millisInDay = internalGet(MILLISECOND) + 1000 * (internalGet(SECOND) +
+                60 * (internalGet(MINUTE) + 60 * internalGet(HOUR_OF_DAY)));
+            int transition = getWeekendTransition(dow);
+            return (dowt == WEEKEND_ONSET)
+                ? (millisInDay >= transition)
+                : (millisInDay <  transition);
+        }
+        // (We can never reach this point.)
+    }
+
+    //-------------------------------------------------------------------------
+    // End of weekend support
+    //-------------------------------------------------------------------------
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            Calendar other = (Calendar) super.clone();
+
+            other.fields = new int[fields.length];
+            other.stamp = new int[fields.length];
+            System.arraycopy(this.fields, 0, other.fields, 0, fields.length);
+            System.arraycopy(this.stamp, 0, other.stamp, 0, fields.length);
+
+            other.zone = (TimeZone) zone.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            // this shouldn't happen, since we are Cloneable
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Return a string representation of this calendar. This method
+     * is intended to be used only for debugging purposes, and the
+     * format of the returned string may vary between implementations.
+     * The returned string may be empty but may not be <code>null</code>.
+     *
+     * @return  a string representation of this calendar.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(getClass().getName());
+        buffer.append("[time=");
+        buffer.append(isTimeSet ? String.valueOf(time) : "?");
+        buffer.append(",areFieldsSet=");
+        buffer.append(areFieldsSet);
+        buffer.append(",areAllFieldsSet=");
+        buffer.append(areAllFieldsSet);
+        buffer.append(",lenient=");
+        buffer.append(lenient);
+        buffer.append(",zone=");
+        buffer.append(zone);
+        buffer.append(",firstDayOfWeek=");
+        buffer.append(firstDayOfWeek);
+        buffer.append(",minimalDaysInFirstWeek=");
+        buffer.append(minimalDaysInFirstWeek);
+        for (int i=0; i<fields.length; ++i) {
+            buffer.append(',').append(fieldName(i)).append('=');
+            buffer.append(isSet(i) ? String.valueOf(fields[i]) : "?");
+        }
+        buffer.append(']');
+        return buffer.toString();
+    }
+
+    // =======================privates===============================
+
+    /**
+     * Internal class that holds cached locale data.
+     */
+    private static class WeekData {
+        public int firstDayOfWeek;
+        public int minimalDaysInFirstWeek;
+        public int weekendOnset;
+        public int weekendOnsetMillis;
+        public int weekendCease;
+        public int weekendCeaseMillis;
+        public ULocale actualLocale;
+        public WeekData(int fdow, int mdifw,
+                        int weekendOnset, int weekendOnsetMillis,
+                        int weekendCease, int weekendCeaseMillis,
+                        ULocale actualLoc) {
+            this.firstDayOfWeek = fdow;
+            this.minimalDaysInFirstWeek = mdifw;
+            this.actualLocale = actualLoc;
+            this.weekendOnset = weekendOnset;
+            this.weekendOnsetMillis = weekendOnsetMillis;
+            this.weekendCease = weekendCease;
+            this.weekendCeaseMillis = weekendCeaseMillis;
+        }
+    }
+    
+    /**
+     * Set this calendar to contain week and weekend data for the given
+     * locale.
+     * @param locale the locale
+     */
+    private void setWeekData(ULocale locale)
+    {
+        /* try to get the Locale data from the cache */
+        WeekData data = (WeekData) cachedLocaleData.get(locale);
+        
+        if (data == null) {  /* cache miss */
+
+            CalendarData calData = new CalendarData(locale, getType());
+            int[] dateTimeElements = calData.get("DateTimeElements").getIntVector();
+            int[] weekend = calData.get("weekend").getIntVector();
+            data = new WeekData(dateTimeElements[0],dateTimeElements[1],
+                                weekend[0],
+                                weekend[1],
+                                weekend[2],
+                                weekend[3],
+                                calData.getULocale());
+            /* cache update */
+            cachedLocaleData.put(locale, data);
+        }
+        setFirstDayOfWeek(data.firstDayOfWeek);
+        setMinimalDaysInFirstWeek(data.minimalDaysInFirstWeek);
+        weekendOnset       = data.weekendOnset;
+        weekendOnsetMillis = data.weekendOnsetMillis;
+        weekendCease       = data.weekendCease;
+        weekendCeaseMillis = data.weekendCeaseMillis;
+
+        // TODO: determine the actual/valid locale
+        ULocale uloc = data.actualLocale;
+        setLocale(uloc, uloc);
+    }
+
+    /**
+     * Recompute the time and update the status fields isTimeSet
+     * and areFieldsSet.  Callers should check isTimeSet and only
+     * call this method if isTimeSet is false.
+     */
+    private void updateTime() {
+        computeTime();
+        // If we are lenient, we need to recompute the fields to normalize
+        // the values.  Also, if we haven't set all the fields yet (i.e.,
+        // in a newly-created object), we need to fill in the fields. [LIU]
+        if (isLenient() || !areAllFieldsSet) areFieldsSet = false;
+        isTimeSet = true;
+        areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Save the state of this object to a stream (i.e., serialize it).
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        // Try to compute the time correctly, for the future (stream
+        // version 2) in which we don't write out fields[] or isSet[].
+        if (!isTimeSet) {
+            try {
+                updateTime();
+            }
+            catch (IllegalArgumentException e) {}
+        }
+
+        // Write out the 1.1 FCS object.
+        stream.defaultWriteObject();
+    }
+
+    /**
+     * Reconstitute this object from a stream (i.e., deserialize it).
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+
+        stream.defaultReadObject();
+
+        initInternal();
+
+        isTimeSet = true;
+        areFieldsSet = areAllFieldsSet = false;
+        areFieldsVirtuallySet = true; // cause fields to be recalculated if requested.
+        nextStamp = MINIMUM_USER_STAMP;
+    }
+
+
+    //----------------------------------------------------------------------
+    // Time -> Fields
+    //----------------------------------------------------------------------
+
+    /**
+     * Converts the current millisecond time value <code>time</code> to
+     * field values in <code>fields[]</code>.  This synchronizes the time
+     * field values with a new time that is set for the calendar.  The time
+     * is <em>not</em> recomputed first; to recompute the time, then the
+     * fields, call the <code>complete</code> method.
+     * @see #complete
+     * @stable ICU 2.0
+     */
+    protected void computeFields() {
+        int offsets[] = new int[2];
+        getTimeZone().getOffset(time, false, offsets);
+        long localMillis = time + offsets[0] + offsets[1];
+
+        // Mark fields as set.  Do this before calling handleComputeFields().
+        int mask = internalSetMask;
+        for (int i=0; i<fields.length; ++i) {
+            if ((mask & 1) == 0) {
+                stamp[i] = INTERNALLY_SET;
+            } else {
+                stamp[i] = UNSET;
+            }
+            mask >>= 1;
+        }
+
+        // We used to check for and correct extreme millis values (near
+        // Long.MIN_VALUE or Long.MAX_VALUE) here.  Such values would cause
+        // overflows from positive to negative (or vice versa) and had to
+        // be manually tweaked.  We no longer need to do this because we
+        // have limited the range of supported dates to those that have a
+        // Julian day that fits into an int.  This allows us to implement a
+        // JULIAN_DAY field and also removes some inelegant code. - Liu
+        // 11/6/00
+
+        long days = floorDivide(localMillis, ONE_DAY);
+
+        fields[JULIAN_DAY] = (int) days + EPOCH_JULIAN_DAY;
+
+        computeGregorianAndDOWFields(fields[JULIAN_DAY]);
+
+        // Call framework method to have subclass compute its fields.
+        // These must include, at a minimum, MONTH, DAY_OF_MONTH,
+        // EXTENDED_YEAR, YEAR, DAY_OF_YEAR.  This method will call internalSet(),
+        // which will update stamp[].
+        handleComputeFields(fields[JULIAN_DAY]);
+
+        // Compute week-related fields, based on the subclass-computed
+        // fields computed by handleComputeFields().
+        computeWeekFields();
+
+        // Compute time-related fields.  These are indepent of the date and
+        // of the subclass algorithm.  They depend only on the local zone
+        // wall milliseconds in day.
+        int millisInDay = (int) (localMillis - (days * ONE_DAY));
+        fields[MILLISECONDS_IN_DAY] = millisInDay;
+        fields[MILLISECOND] = millisInDay % 1000;
+        millisInDay /= 1000;
+        fields[SECOND] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[MINUTE] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[HOUR_OF_DAY] = millisInDay;
+        fields[AM_PM] = millisInDay / 12; // Assume AM == 0
+        fields[HOUR] = millisInDay % 12;
+        fields[ZONE_OFFSET] = offsets[0];
+        fields[DST_OFFSET] = offsets[1];
+    }
+
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from
+     * the given Julian day.  These values are not stored in fields, but in
+     * member variables gregorianXxx.  Also compute the DAY_OF_WEEK and
+     * DOW_LOCAL fields.
+     */
+    private final void computeGregorianAndDOWFields(int julianDay) {
+        computeGregorianFields(julianDay);
+
+        // Compute day of week: JD 0 = Monday
+        int dow = fields[DAY_OF_WEEK] = julianDayToDayOfWeek(julianDay);
+
+        // Calculate 1-based localized day of week
+        int dowLocal = dow - getFirstDayOfWeek() + 1;
+        if (dowLocal < 1) {
+            dowLocal += 7;
+        }
+        fields[DOW_LOCAL] = dowLocal;
+    }
+
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from the
+     * Julian day.  These values are not stored in fields, but in member
+     * variables gregorianXxx.  They are used for time zone computations and by
+     * subclasses that are Gregorian derivatives.  Subclasses may call this
+     * method to perform a Gregorian calendar millis->fields computation.
+     * To perform a Gregorian calendar fields->millis computation, call
+     * computeGregorianMonthStart().
+     * @see #computeGregorianMonthStart
+     * @stable ICU 2.0
+     */
+    protected final void computeGregorianFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+
+        // The Gregorian epoch day is zero for Monday January 1, year 1.
+        long gregorianEpochDay = julianDay - JAN_1_1_JULIAN_DAY;
+
+        // Here we convert from the day number to the multiple radix
+        // representation.  We use 400-year, 100-year, and 4-year cycles.
+        // For example, the 4-year cycle has 4 years + 1 leap day; giving
+        // 1461 == 365*4 + 1 days.
+        int[] rem = new int[1];
+        int n400 = floorDivide(gregorianEpochDay, 146097, rem); // 400-year cycle length
+        int n100 = floorDivide(rem[0], 36524, rem); // 100-year cycle length
+        int n4 = floorDivide(rem[0], 1461, rem); // 4-year cycle length
+        int n1 = floorDivide(rem[0], 365, rem);
+        year = 400*n400 + 100*n100 + 4*n4 + n1;
+        dayOfYear = rem[0]; // zero-based day of year
+        if (n100 == 4 || n1 == 4) {
+            dayOfYear = 365; // Dec 31 at end of 4- or 400-yr cycle
+        } else {
+            ++year;
+        }
+
+        boolean isLeap = ((year&0x3) == 0) && // equiv. to (year%4 == 0)
+            (year%100 != 0 || year%400 == 0);
+
+        int correction = 0;
+        int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+        if (dayOfYear >= march1) correction = isLeap ? 1 : 2;
+        month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+        dayOfMonth = dayOfYear -
+            GREGORIAN_MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+
+        gregorianYear = year;
+        gregorianMonth = month; // 0-based already
+        gregorianDayOfMonth = dayOfMonth; // 1-based already
+        gregorianDayOfYear = dayOfYear + 1; // Convert from 0-based to 1-based
+    }
+
+    /**
+     * Compute the fields WEEK_OF_YEAR, YEAR_WOY, WEEK_OF_MONTH,
+     * DAY_OF_WEEK_IN_MONTH, and DOW_LOCAL from EXTENDED_YEAR, YEAR,
+     * DAY_OF_WEEK, and DAY_OF_YEAR.  The latter fields are computed by the
+     * subclass based on the calendar system.
+     *
+     * <p>The YEAR_WOY field is computed simplistically.  It is equal to YEAR
+     * most of the time, but at the year boundary it may be adjusted to YEAR-1
+     * or YEAR+1 to reflect the overlap of a week into an adjacent year.  In
+     * this case, a simple increment or decrement is performed on YEAR, even
+     * though this may yield an invalid YEAR value.  For instance, if the YEAR
+     * is part of a calendar system with an N-year cycle field CYCLE, then
+     * incrementing the YEAR may involve incrementing CYCLE and setting YEAR
+     * back to 0 or 1.  This is not handled by this code, and in fact cannot be
+     * simply handled without having subclasses define an entire parallel set of
+     * fields for fields larger than or equal to a year.  This additional
+     * complexity is not warranted, since the intention of the YEAR_WOY field is
+     * to support ISO 8601 notation, so it will typically be used with a
+     * proleptic Gregorian calendar, which has no field larger than a year.
+     */
+    private final void computeWeekFields() {
+        int eyear = fields[EXTENDED_YEAR];
+        int dayOfWeek = fields[DAY_OF_WEEK];
+        int dayOfYear = fields[DAY_OF_YEAR];
+
+        // WEEK_OF_YEAR start
+        // Compute the week of the year.  For the Gregorian calendar, valid week
+        // numbers run from 1 to 52 or 53, depending on the year, the first day
+        // of the week, and the minimal days in the first week.  For other
+        // calendars, the valid range may be different -- it depends on the year
+        // length.  Days at the start of the year may fall into the last week of
+        // the previous year; days at the end of the year may fall into the
+        // first week of the next year.  ASSUME that the year length is less than
+        // 7000 days.
+        int yearOfWeekOfYear = eyear;
+        int relDow = (dayOfWeek + 7 - getFirstDayOfWeek()) % 7; // 0..6
+        int relDowJan1 = (dayOfWeek - dayOfYear + 7001 - getFirstDayOfWeek()) % 7; // 0..6
+        int woy = (dayOfYear - 1 + relDowJan1) / 7; // 0..53
+        if ((7 - relDowJan1) >= getMinimalDaysInFirstWeek()) {
+            ++woy;
+        }
+
+        // Adjust for weeks at the year end that overlap into the previous or
+        // next calendar year.
+        if (woy == 0) {
+            // We are the last week of the previous year.
+            // Check to see if we are in the last week; if so, we need
+            // to handle the case in which we are the first week of the
+            // next year.
+
+            int prevDoy = dayOfYear + handleGetYearLength(eyear - 1);
+            woy = weekNumber(prevDoy, dayOfWeek);
+            yearOfWeekOfYear--;
+        } else {
+            int lastDoy = handleGetYearLength(eyear);
+            // Fast check: For it to be week 1 of the next year, the DOY
+            // must be on or after L-5, where L is yearLength(), then it
+            // cannot possibly be week 1 of the next year:
+            //          L-5                  L
+            // doy: 359 360 361 362 363 364 365 001
+            // dow:      1   2   3   4   5   6   7
+            if (dayOfYear >= (lastDoy - 5)) {
+                int lastRelDow = (relDow + lastDoy - dayOfYear) % 7;
+                if (lastRelDow < 0) {
+                    lastRelDow += 7;
+                }
+                if (((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) &&
+                    ((dayOfYear + 7 - relDow) > lastDoy)) {
+                    woy = 1;
+                    yearOfWeekOfYear++;
+                }
+            }
+        }
+        fields[WEEK_OF_YEAR] = woy;
+        fields[YEAR_WOY] = yearOfWeekOfYear;
+        // WEEK_OF_YEAR end
+
+        int dayOfMonth = fields[DAY_OF_MONTH];
+        fields[WEEK_OF_MONTH] = weekNumber(dayOfMonth, dayOfWeek);
+        fields[DAY_OF_WEEK_IN_MONTH] = (dayOfMonth-1) / 7 + 1;
+    }
+
+    //----------------------------------------------------------------------
+    // Fields -> Time
+    //----------------------------------------------------------------------
+
+    /**
+     * Value to OR against resolve table field values for remapping.
+     * @see #resolveFields
+     * @stable ICU 2.0
+     */
+    protected static final int RESOLVE_REMAP = 32;
+    // A power of 2 greater than or equal to MAX_FIELD_COUNT
+
+    // Default table for day in year
+    static final int[][][] DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    static final int[][][] DOW_PRECEDENCE = {
+        {
+            { DAY_OF_WEEK },
+            { DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Given a precedence table, return the newest field combination in
+     * the table, or -1 if none is found.
+     *
+     * <p>The precedence table is a 3-dimensional array of integers.  It
+     * may be thought of as an array of groups.  Each group is an array of
+     * lines.  Each line is an array of field numbers.  Within a line, if
+     * all fields are set, then the time stamp of the line is taken to be
+     * the stamp of the most recently set field.  If any field of a line is
+     * unset, then the line fails to match.  Within a group, the line with
+     * the newest time stamp is selected.  The first field of the line is
+     * returned to indicate which line matched.
+     *
+     * <p>In some cases, it may be desirable to map a line to field that
+     * whose stamp is NOT examined.  For example, if the best field is
+     * DAY_OF_WEEK then the DAY_OF_WEEK_IN_MONTH algorithm may be used.  In
+     * order to do this, insert the value <code>REMAP_RESOLVE | F</code> at
+     * the start of the line, where <code>F</code> is the desired return
+     * field value.  This field will NOT be examined; it only determines
+     * the return value if the other fields in the line are the newest.
+     *
+     * <p>If all lines of a group contain at least one unset field, then no
+     * line will match, and the group as a whole will fail to match.  In
+     * that case, the next group will be processed.  If all groups fail to
+     * match, then -1 is returned.
+     * @stable ICU 2.0
+     */
+    protected int resolveFields(int[][][] precedenceTable) {
+        int bestField = -1;
+        for (int g=0; g<precedenceTable.length && bestField < 0; ++g) {
+            int[][] group = precedenceTable[g];
+            int bestStamp = UNSET;
+        linesInGroup:
+            for (int l=0; l<group.length; ++l) {
+                int[] line= group[l];
+                int lineStamp = UNSET;
+                // Skip over first entry if it is negative
+                for (int i=(line[0]>=RESOLVE_REMAP)?1:0; i<line.length; ++i) {
+                    int s = stamp[line[i]];
+                    // If any field is unset then don't use this line
+                    if (s == UNSET) {
+                        continue linesInGroup;
+                    } else {
+                        lineStamp = Math.max(lineStamp, s);
+                    }
+                }
+                // Record new maximum stamp & field no.
+                if (lineStamp > bestStamp) {
+                    bestStamp = lineStamp;
+                    bestField = line[0]; // First field refers to entire line
+                }
+            }
+        }
+        return (bestField>=RESOLVE_REMAP)?(bestField&(RESOLVE_REMAP-1)):bestField;
+    }
+
+    /**
+     * Return the newest stamp of a given range of fields.
+     * @stable ICU 2.0
+     */
+    protected int newestStamp(int first, int last, int bestStampSoFar) {
+        int bestStamp = bestStampSoFar;
+        for (int i=first; i<=last; ++i) {
+            if (stamp[i] > bestStamp) {
+                bestStamp = stamp[i];
+            }
+        }
+        return bestStamp;
+    }
+
+    /**
+     * Return the timestamp of a field.
+     * @stable ICU 2.0
+     */
+    protected final int getStamp(int field) {
+        return stamp[field];
+    }
+
+    /**
+     * Return the field that is newer, either defaultField, or
+     * alternateField.  If neither is newer or neither is set, return defaultField.
+     * @stable ICU 2.0
+     */
+    protected int newerField(int defaultField, int alternateField) {
+        if (stamp[alternateField] > stamp[defaultField]) {
+            return alternateField;
+        }
+        return defaultField;
+    }
+
+    /**
+     * Ensure that each field is within its valid range by calling {@link
+     * #validateField(int)} on each field that has been set.  This method
+     * should only be called if this calendar is not lenient.
+     * @see #isLenient
+     * @see #validateField(int)
+     * @stable ICU 2.0
+     */
+    protected void validateFields() {
+        for (int field = 0; field < fields.length; field++) {
+            if (isSet(field)) {
+                validateField(field);
+            }
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar.  Subclasses should
+     * override this method to validate any calendar-specific fields.
+     * Generic fields can be handled by
+     * <code>Calendar.validateField()</code>.
+     * @see #validateField(int, int, int)
+     * @stable ICU 2.0
+     */
+    protected void validateField(int field) {
+        int y;
+        switch (field) {
+        case DAY_OF_MONTH:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetMonthLength(y, internalGet(MONTH)));
+            break;
+        case DAY_OF_YEAR:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetYearLength(y));
+            break;
+        case DAY_OF_WEEK_IN_MONTH:
+            if (internalGet(field) == 0) {
+                throw new IllegalArgumentException("DAY_OF_WEEK_IN_MONTH cannot be zero");
+            }
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        default:
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar given its minimum and
+     * maximum allowed value.  If the field is out of range, throw a
+     * descriptive <code>IllegalArgumentException</code>.  Subclasses may
+     * use this method in their implementation of {@link
+     * #validateField(int)}.
+     * @stable ICU 2.0
+     */
+    protected final void validateField(int field, int min, int max) {
+        int value = fields[field];
+        if (value < min || value > max) {
+            throw new IllegalArgumentException(fieldName(field) +
+                                               '=' + value + ", valid range=" +
+                                               min + ".." + max);
+        }
+    }
+
+    /**
+     * Converts the current field values in <code>fields[]</code> to the
+     * millisecond time value <code>time</code>.
+     * @stable ICU 2.0
+     */
+   protected void computeTime() {
+        if (!isLenient()) {
+            validateFields();
+        }
+
+        // Compute the Julian day
+        int julianDay = computeJulianDay();
+
+        long millis = julianDayToMillis(julianDay);
+
+        int millisInDay;
+
+        // We only use MILLISECONDS_IN_DAY if it has been set by the user.
+        // This makes it possible for the caller to set the calendar to a
+        // time and call clear(MONTH) to reset the MONTH to January.  This
+        // is legacy behavior.  Without this, clear(MONTH) has no effect,
+        // since the internally set JULIAN_DAY is used.
+        if (stamp[MILLISECONDS_IN_DAY] >= MINIMUM_USER_STAMP &&
+            newestStamp(AM_PM, MILLISECOND, UNSET) <= stamp[MILLISECONDS_IN_DAY]) {
+            millisInDay = internalGet(MILLISECONDS_IN_DAY);
+        } else {
+            millisInDay = computeMillisInDay();
+        }
+
+        // Compute the time zone offset and DST offset.  There are two potential
+        // ambiguities here.  We'll assume a 2:00 am (wall time) switchover time
+        // for discussion purposes here.
+        // 1. The transition into DST.  Here, a designated time of 2:00 am - 2:59 am
+        //    can be in standard or in DST depending.  However, 2:00 am is an invalid
+        //    representation (the representation jumps from 1:59:59 am Std to 3:00:00 am DST).
+        //    We assume standard time, that is, 2:30 am is interpreted as 3:30 am DST.
+        // 2. The transition out of DST.  Here, a designated time of 1:00 am - 1:59 am
+        //    can be in standard or DST.  Both are valid representations (the rep
+        //    jumps from 1:59:59 DST to 1:00:00 Std).
+        //    Again, we assume standard time, that is, 1:30 am is interpreted as 1:30 am Std.
+        // We use the TimeZone object, unless the user has explicitly set the ZONE_OFFSET
+        // or DST_OFFSET fields; then we use those fields.
+        if (stamp[ZONE_OFFSET] >= MINIMUM_USER_STAMP ||
+            stamp[DST_OFFSET] >= MINIMUM_USER_STAMP) {
+            millisInDay -= internalGet(ZONE_OFFSET) + internalGet(DST_OFFSET);
+        } else {
+            millisInDay -= computeZoneOffset(millis, millisInDay);
+        }
+
+        time = millis + millisInDay;
+    }
+
+    /**
+     * Compute the milliseconds in the day from the fields.  This is a
+     * value from 0 to 23:59:59.999 inclusive, unless fields are out of
+     * range, in which case it can be an arbitrary value.  This value
+     * reflects local zone wall time.
+     * @stable ICU 2.0
+     */
+    protected int computeMillisInDay() {
+        // Do the time portion of the conversion.
+
+        int millisInDay = 0;
+
+        // Find the best set of fields specifying the time of day.  There
+        // are only two possibilities here; the HOUR_OF_DAY or the
+        // AM_PM and the HOUR.
+        int hourOfDayStamp = stamp[HOUR_OF_DAY];
+        int hourStamp = Math.max(stamp[HOUR], stamp[AM_PM]);
+        int bestStamp = (hourStamp > hourOfDayStamp) ? hourStamp : hourOfDayStamp;
+
+        // Hours
+        if (bestStamp != UNSET) {
+            if (bestStamp == hourOfDayStamp) {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR_OF_DAY);
+            } else {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR);
+                millisInDay += 12 * internalGet(AM_PM); // Default works for unset AM_PM
+            }
+        }
+
+        // We use the fact that unset == 0; we start with millisInDay
+        // == HOUR_OF_DAY.
+        millisInDay *= 60;
+        millisInDay += internalGet(MINUTE); // now have minutes
+        millisInDay *= 60;
+        millisInDay += internalGet(SECOND); // now have seconds
+        millisInDay *= 1000;
+        millisInDay += internalGet(MILLISECOND); // now have millis
+
+        return millisInDay;
+    }
+
+    /**
+     * This method can assume EXTENDED_YEAR has been set.
+     * @param millis milliseconds of the date fields (local midnight millis)
+     * @param millisInDay milliseconds of the time fields; may be out
+     * or range.
+     * @return total zone offset (raw + DST) for the given moment
+     * @stable ICU 2.0
+     */
+    protected int computeZoneOffset(long millis, int millisInDay) {
+        int offsets[] = new int[2];
+        zone.getOffset(millis + millisInDay, true, offsets);
+        return offsets[0] + offsets[1];
+
+        // Note: Because we pass in wall millisInDay, rather than
+        // standard millisInDay, we interpret "1:00 am" on the day
+        // of cessation of DST as "1:00 am Std" (assuming the time
+        // of cessation is 2:00 am).
+    }
+
+    /**
+     * Compute the Julian day number as specified by this calendar's fields.
+     * @stable ICU 2.0
+     */
+    protected int computeJulianDay() {
+
+        // We want to see if any of the date fields is newer than the
+        // JULIAN_DAY.  If not, then we use JULIAN_DAY.  If so, then we do
+        // the normal resolution.  We only use JULIAN_DAY if it has been
+        // set by the user.  This makes it possible for the caller to set
+        // the calendar to a time and call clear(MONTH) to reset the MONTH
+        // to January.  This is legacy behavior.  Without this,
+        // clear(MONTH) has no effect, since the internally set JULIAN_DAY
+        // is used.
+        if (stamp[JULIAN_DAY] >= MINIMUM_USER_STAMP) {
+            int bestStamp = newestStamp(ERA, DAY_OF_WEEK_IN_MONTH, UNSET);
+            bestStamp = newestStamp(YEAR_WOY, EXTENDED_YEAR, bestStamp);
+            if (bestStamp <= stamp[JULIAN_DAY]) {
+                return internalGet(JULIAN_DAY);
+            }
+        }
+
+        int bestField = resolveFields(getFieldResolutionTable());
+        if (bestField < 0) {
+            bestField = DAY_OF_MONTH;
+        }
+
+        return handleComputeJulianDay(bestField);
+    }
+
+    /**
+     * Return the field resolution array for this calendar.  Calendars that
+     * define additional fields or change the semantics of existing fields
+     * should override this method to adjust the field resolution semantics
+     * accordingly.  Other subclasses should not override this method.
+     * @see #resolveFields
+     * @stable ICU 2.0
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return DATE_PRECEDENCE;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.  Subclasses should override
+     * this method to implement their calendar system.
+     * @param eyear the extended year
+     * @param month the zero-based month, or 0 if useMonth is false
+     * @param useMonth if false, compute the day before the first day of
+     * the given year, otherwise, compute the day before the first day of
+     * the given month
+     * @return the Julian day number of the day before the first
+     * day of the given month and year
+     * @stable ICU 2.0
+     */
+    abstract protected int handleComputeMonthStart(int eyear, int month,
+                                                   boolean useMonth);
+
+    /**
+     * Return the extended year defined by the current fields.  This will
+     * use the EXTENDED_YEAR field or the YEAR and supra-year fields (such
+     * as ERA) specific to the calendar system, depending on which set of
+     * fields is newer.
+     * @return the extended year
+     * @stable ICU 2.0
+     */
+    abstract protected int handleGetExtendedYear();
+
+    // (The following method is not called because all existing subclasses
+    // override it.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Return the number of days in the given month of the given extended
+     * year of this calendar system.  Subclasses should override this
+     * method if they can provide a more correct or more efficient
+     * implementation than the default implementation in Calendar.
+     * @stable ICU 2.0
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        return handleComputeMonthStart(extendedYear, month+1, true) -
+               handleComputeMonthStart(extendedYear, month, true);
+    }
+    ///CLOVER:ON
+
+    /**
+     * Return the number of days in the given extended year of this
+     * calendar system.  Subclasses should override this method if they can
+     * provide a more correct or more efficient implementation than the
+     * default implementation in Calendar.
+     * @stable ICU 2.0
+     */
+    protected int handleGetYearLength(int eyear) {
+        return handleComputeMonthStart(eyear+1, 0, false) -
+               handleComputeMonthStart(eyear, 0, false);
+    }
+
+    /**
+     * Subclasses that use additional fields beyond those defined in
+     * <code>Calendar</code> should override this method to return an
+     * <code>int[]</code> array of the appropriate length.  The length
+     * must be at least <code>BASE_FIELD_COUNT</code> and no more than
+     * <code>MAX_FIELD_COUNT</code>.
+     * @stable ICU 2.0
+     */
+    protected int[] handleCreateFields() {
+        return new int[BASE_FIELD_COUNT];
+    }
+    
+    /**
+     * Subclasses may override this. 
+     * Called by handleComputeJulianDay.  Returns the default month (0-based) for the year,
+     * taking year and era into account.  Defaults to 0 (JANUARY) for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @return the default month
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     * @see #MONTH
+     */
+    protected int getDefaultMonthInYear(int extendedYear) {
+        return Calendar.JANUARY;
+    }
+
+    /**
+     * Subclasses may override this. 
+     * Called by handleComputeJulianDay.  Returns the default day (1-based) for the month,
+     * taking currently-set year and era into account.  Defaults to 1 for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @param month the month, as returned by getDefaultMonthInYear
+     * @return the default day of the month
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     * @see #DAY_OF_MONTH
+     */
+    protected int getDefaultDayInMonth(int extendedYear, int month) {
+        return 1;
+    }
+
+
+    /**
+     * Subclasses may override this.  This method calls
+     * handleGetMonthLength() to obtain the calendar-specific month
+     * length.
+     * @stable ICU 2.0
+     */
+    protected int handleComputeJulianDay(int bestField) {
+
+        boolean useMonth = (bestField == DAY_OF_MONTH ||
+                            bestField == WEEK_OF_MONTH ||
+                            bestField == DAY_OF_WEEK_IN_MONTH);
+
+        int year;
+
+        if (bestField == WEEK_OF_YEAR) {
+            // Nota Bene!  It is critical that YEAR_WOY be used as the year here, if it is set.
+            // Otherwise, when WOY is the best field, the year may be wrong at the extreme limits of the year.
+            // If YEAR_WOY is not set then it will fall back.
+            // TODO: Should resolveField(YEAR_PRECEDENCE) be brought to bear? 
+            year = internalGet(YEAR_WOY, handleGetExtendedYear());
+        } else {
+            year = handleGetExtendedYear();
+        }
+
+        internalSet(EXTENDED_YEAR, year);
+
+        int month = useMonth ? internalGet(MONTH, getDefaultMonthInYear(year)) : 0;
+        
+        // Get the Julian day of the day BEFORE the start of this year.
+        // If useMonth is true, get the day before the start of the month.
+        int julianDay = handleComputeMonthStart(year, month, useMonth);
+
+        if (bestField == DAY_OF_MONTH) {
+            if(isSet(DAY_OF_MONTH)) {
+                return julianDay + internalGet(DAY_OF_MONTH, getDefaultDayInMonth(year, month));
+            } else {
+                return julianDay + getDefaultDayInMonth(year, month);
+            }
+        }
+
+        if (bestField == DAY_OF_YEAR) {
+            return julianDay + internalGet(DAY_OF_YEAR);
+        }
+
+        int firstDOW = getFirstDayOfWeek(); // Localized fdw
+
+        // At this point julianDay is the 0-based day BEFORE the first day of
+        // January 1, year 1 of the given calendar.  If julianDay == 0, it
+        // specifies (Jan. 1, 1) - 1, in whatever calendar we are using (Julian
+        // or Gregorian).
+
+        // At this point we need to process the WEEK_OF_MONTH or
+        // WEEK_OF_YEAR, which are similar, or the DAY_OF_WEEK_IN_MONTH.
+        // First, perform initial shared computations.  These locate the
+        // first week of the period.
+
+        // Get the 0-based localized DOW of day one of the month or year.
+        // Valid range 0..6.
+        int first = julianDayToDayOfWeek(julianDay + 1) - firstDOW;
+        if (first < 0) {
+            first += 7;
+        }
+
+        // Get zero-based localized DOW, valid range 0..6.  This is the DOW
+        // we are looking for.
+        int dowLocal = 0;
+        switch (resolveFields(DOW_PRECEDENCE)) {
+        case DAY_OF_WEEK:
+            dowLocal = internalGet(DAY_OF_WEEK) - firstDOW;
+            break;
+        case DOW_LOCAL:
+            dowLocal = internalGet(DOW_LOCAL) - 1;
+            break;
+        }
+        dowLocal = dowLocal % 7;
+        if (dowLocal < 0) {
+            dowLocal += 7;
+        }
+
+        // Find the first target DOW (dowLocal) in the month or year.
+        // Actually, it may be just before the first of the month or year.
+        // It will be an integer from -5..7.
+        int date = 1 - first + dowLocal;
+
+        if (bestField == DAY_OF_WEEK_IN_MONTH) {
+
+            // Adjust the target DOW to be in the month or year.
+            if (date < 1) {
+                date += 7;
+            }
+
+            // The only trickiness occurs if the day-of-week-in-month is
+            // negative.
+            int dim = internalGet(DAY_OF_WEEK_IN_MONTH, 1);
+            if (dim >= 0) {
+                date += 7*(dim - 1);
+
+            } else {
+                // Move date to the last of this day-of-week in this month,
+                // then back up as needed.  If dim==-1, we don't back up at
+                // all.  If dim==-2, we back up once, etc.  Don't back up
+                // past the first of the given day-of-week in this month.
+                // Note that we handle -2, -3, etc. correctly, even though
+                // values < -1 are technically disallowed.
+                int m = internalGet(MONTH, JANUARY);
+                int monthLength = handleGetMonthLength(year, m);
+                date += ((monthLength - date) / 7 + dim + 1) * 7;
+            }
+        } else {
+            // assert(bestField == WEEK_OF_MONTH || bestField == WEEK_OF_YEAR)
+
+            // Adjust for minimal days in first week
+            if ((7 - first) < getMinimalDaysInFirstWeek()) {
+                date += 7;
+            }
+
+            // Now adjust for the week number.
+            date += 7 * (internalGet(bestField) - 1);
+        }
+
+        return julianDay + date;
+    }
+
+    /**
+     * Compute the Julian day of a month of the Gregorian calendar.
+     * Subclasses may call this method to perform a Gregorian calendar
+     * fields->millis computation.  To perform a Gregorian calendar
+     * millis->fields computation, call computeGregorianFields().
+     * @param year extended Gregorian year
+     * @param month zero-based Gregorian month
+     * @return the Julian day number of the day before the first
+     * day of the given month in the given extended year
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected int computeGregorianMonthStart(int year, int month) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            year += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+        int y = year - 1;
+        // This computation is actually ... + (JAN_1_1_JULIAN_DAY - 3) + 2.
+        // Add 2 because Gregorian calendar starts 2 days after Julian
+        // calendar.
+        int julianDay = 365*y + floorDivide(y, 4) - floorDivide(y, 100) +
+            floorDivide(y, 400) + JAN_1_1_JULIAN_DAY - 1;
+
+        // At this point julianDay indicates the day BEFORE the first day
+        // of January 1, <eyear> of the Gregorian calendar.
+        if (month != 0) {
+            julianDay += GREGORIAN_MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to override
+    //----------------------------------------------------------------------
+
+    // (The following method is not called because all existing subclasses
+    // override it.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     *
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields, which
+     * will be set when this method is called.  Subclasses can also call
+     * the getGregorianXxx() methods to obtain Gregorian calendar
+     * equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     *
+     * <p>The default implementation in <code>Calendar</code> implements
+     * a pure proleptic Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected void handleComputeFields(int julianDay) {
+        internalSet(MONTH, getGregorianMonth());
+        internalSet(DAY_OF_MONTH, getGregorianDayOfMonth());
+        internalSet(DAY_OF_YEAR, getGregorianDayOfYear());
+        int eyear = getGregorianYear();
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = GregorianCalendar.AD;
+        if (eyear < 1) {
+            era = GregorianCalendar.BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+    ///CLOVER:ON
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to call
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the extended year on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianYear() {
+        return gregorianYear;
+    }
+
+    /**
+     * Return the month (0-based) on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianMonth() {
+        return gregorianMonth;
+    }
+
+    /**
+     * Return the day of year (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianDayOfYear() {
+        return gregorianDayOfYear;
+    }
+
+    /**
+     * Return the day of month (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianDayOfMonth() {
+        return gregorianDayOfMonth;
+    }
+
+    /**
+     * Return the number of fields defined by this calendar.  Valid field
+     * arguments to <code>set()</code> and <code>get()</code> are
+     * <code>0..getFieldCount()-1</code>.
+     * @stable ICU 2.0
+     */
+    public final int getFieldCount() {
+        return fields.length;
+    }
+
+    /**
+     * Set a field to a value.  Subclasses should use this method when
+     * computing fields.  It sets the time stamp in the
+     * <code>stamp[]</code> array to <code>INTERNALLY_SET</code>.  If a
+     * field that may not be set by subclasses is passed in, an
+     * <code>IllegalArgumentException</code> is thrown.  This prevents
+     * subclasses from modifying fields that are intended to be
+     * calendar-system invariant.
+     * @stable ICU 2.0
+     */
+    protected final void internalSet(int field, int value) {
+        if (((1 << field) & internalSetMask) == 0) {
+            throw new IllegalStateException("Subclass cannot set " +
+                                            fieldName(field));
+        }
+        fields[field] = value;
+        stamp[field] = INTERNALLY_SET;
+    }
+
+    private static final int[][] GREGORIAN_MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     * @stable ICU 2.0
+     */
+    protected static final boolean isGregorianLeapYear(int year) {
+        return (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+    }
+
+    /**
+     * Return the length of a month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the given month
+     * @stable ICU 2.0
+     */
+    protected static final int gregorianMonthLength(int y, int m) {
+        return GREGORIAN_MONTH_COUNT[m][isGregorianLeapYear(y)?1:0];
+    }
+
+    /**
+     * Return the length of a previous month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the month previous to the given month
+     * @stable ICU 2.0
+     */
+    protected static final int gregorianPreviousMonthLength(int y, int m) {
+        return (m > 0) ? gregorianMonthLength(y, m-1) : 31;
+    }
+
+    /**
+     * Divide two long integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final long floorDivide(long numerator, long denominator) {
+        // We do this computation in order to handle
+        // a numerator of Long.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(int numerator, int denominator) {
+        // We do this computation in order to handle
+        // a numerator of Integer.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(int numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = numerator % denominator;
+            return numerator / denominator;
+        }
+    int quotient = ((numerator + 1) / denominator) - 1;
+        remainder[0] = numerator - (quotient * denominator);
+        return quotient;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(long numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = (int)(numerator % denominator);
+            return (int)(numerator / denominator);
+        }
+        int quotient = (int)(((numerator + 1) / denominator) - 1);
+        remainder[0] = (int)(numerator - (quotient * denominator));
+        return quotient;
+    }
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Return a string name for a field, for debugging and exceptions.
+     * @stable ICU 2.0
+     */
+    protected String fieldName(int field) {
+        try {
+            return FIELD_NAME[field];
+        } catch (ArrayIndexOutOfBoundsException e) {
+            return "Field " + field;
+        }
+    }
+
+    /**
+     * Converts time as milliseconds to Julian day.
+     * @param millis the given milliseconds.
+     * @return the Julian day number.
+     * @stable ICU 2.0
+     */
+    protected static final int millisToJulianDay(long millis) {
+        return (int) (EPOCH_JULIAN_DAY + floorDivide(millis, ONE_DAY));
+    }
+
+    /**
+     * Converts Julian day to time as milliseconds.
+     * @param julian the given Julian day number.
+     * @return time as milliseconds.
+     * @stable ICU 2.0
+     */
+    protected static final long julianDayToMillis(int julian) {
+        return (julian - EPOCH_JULIAN_DAY) * ONE_DAY;
+    }
+
+    /**
+     * Return the day of week, from SUNDAY to SATURDAY, given a Julian day.
+     * @stable ICU 2.0
+     */
+    protected static final int julianDayToDayOfWeek(int julian) {
+        // If julian is negative, then julian%7 will be negative, so we adjust
+        // accordingly.  Julian day 0 is Monday.
+        int dayOfWeek = (julian + MONDAY) % 7;
+        if (dayOfWeek < SUNDAY) {
+            dayOfWeek += 7;
+        }
+        return dayOfWeek;
+    }
+
+    /**
+     * Return the current milliseconds without recomputing.
+     * @stable ICU 2.0
+     */
+    protected final long internalGetTimeInMillis() {
+        return time;
+    }
+    
+    /**
+     * Return the current Calendar type.
+     * Note, in 3.0 this function will return 'gregorian' in Calendar to emulate legacy behavior
+     * @return type of calendar (gregorian, etc)
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "gregorian";
+    }
+    
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
+
diff --git a/src/com/ibm/icu/util/CalendarServiceShim.java b/src/com/ibm/icu/util/CalendarServiceShim.java
new file mode 100644
index 0000000..46a4214
--- /dev/null
+++ b/src/com/ibm/icu/util/CalendarServiceShim.java
@@ -0,0 +1,107 @@
+/*
+*   Copyright (C) 2007-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.util.Calendar.CalendarFactory;
+
+class CalendarServiceShim extends Calendar.CalendarShim {
+
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    private static final class CalFactory extends LocaleKeyFactory {
+        private CalendarFactory delegate;
+        CalFactory(CalendarFactory delegate) {
+            super(delegate.visible() ? VISIBLE : INVISIBLE);
+            this.delegate = delegate;
+        }
+
+        public Object create(Key key, ICUService srvc) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                ULocale loc = lkey.canonicalLocale();
+                Object result = delegate.createCalendar(loc);
+                if (result == null) {
+                    result = srvc.getKey(key, null, this);
+                }
+                return result;
+            }
+            return null;
+        }
+
+        protected Set getSupportedIDs() {
+            return delegate.getSupportedLocaleNames();
+        }
+    }
+
+    Calendar createInstance(ULocale desiredLocale) {
+        ULocale[] actualLoc = new ULocale[1];
+        if (desiredLocale.equals(ULocale.ROOT)) {
+            desiredLocale = ULocale.ROOT;
+        }
+        Calendar cal = (Calendar)service.get(desiredLocale, actualLoc);
+        if (cal == null) {
+            throw new MissingResourceException("Unable to construct Calendar", "", "");
+        }
+        cal = (Calendar)cal.clone();
+
+        /* !!! TODO !!! actualLoc returned by service is not properly set.
+         * When this Calendar object is being created, cal.setLocale is called
+         * and proper actual locale is set at that time.  Revisit this later.
+         * -yoshito
+         */
+        /*
+        ULocale uloc = actualLoc[0];
+        cal.setLocale(uloc, uloc); // service make no distinction between actual and valid
+        */
+        return cal;
+    }
+
+    Object registerFactory(CalendarFactory factory) {
+        return service.registerFactory(new CalFactory(factory));
+    }
+
+    boolean unregister(Object k) {
+        return service.unregisterFactory((Factory)k);
+    }
+
+    private static class CalService extends ICULocaleService {
+        CalService() {
+            super("Calendar");
+            class RBCalendarFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService sercice) {
+                    return Calendar.createInstance(loc);
+                }
+            }
+            this.registerFactory(new RBCalendarFactory());
+            markDefault();
+        }
+    }
+    
+    private static ICULocaleService service = new CalService();
+}
diff --git a/src/com/ibm/icu/util/CaseInsensitiveString.java b/src/com/ibm/icu/util/CaseInsensitiveString.java
new file mode 100644
index 0000000..a0818da
--- /dev/null
+++ b/src/com/ibm/icu/util/CaseInsensitiveString.java
@@ -0,0 +1,100 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * A string used as a key in java.util.Hashtable and other
+ * collections.  It retains case information, but its equals() and
+ * hashCode() methods ignore case.
+ * @stable ICU 2.0
+ */
+public class CaseInsensitiveString {
+    
+    private String string;
+
+    private int hash = 0;
+    
+    private String folded = null;
+    
+    private static String foldCase(String foldee)
+    {
+        return UCharacter.foldCase(foldee, true);
+    }
+    
+    private void getFolded()
+    {
+        if (folded == null) {
+            folded = foldCase(string);
+        }
+    }
+    
+    /**
+     * Constructs an CaseInsentiveString object from the given string
+     * @param s The string to construct this object from 
+     * @stable ICU 2.0
+     */
+    public CaseInsensitiveString(String s) {
+        string = s;
+    }
+    /**
+     * returns the underlying string 
+     * @return String
+     * @stable ICU 2.0
+     */
+    public String getString() {
+        return string;
+    }
+    /**
+     * Compare the object with this 
+     * @param o Object to compare this object with 
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object o) {
+        getFolded();
+        
+        try {
+            CaseInsensitiveString cis = (CaseInsensitiveString) o;
+            
+            cis.getFolded();
+            
+            return folded.equals(cis.folded);
+        } catch (ClassCastException e) {
+            try {
+                String s = (String) o;
+                
+                return folded.equals(foldCase(s));
+            } catch (ClassCastException e2) {
+                return false;
+            }
+        }
+    }
+    
+    /**
+     * Returns the hashCode of this object
+     * @return int hashcode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        getFolded();
+        
+        if (hash == 0) {
+            hash = folded.hashCode();
+        }
+        
+        return hash;
+    }
+    
+    /**
+     * Overrides superclass method
+     * @stable ICU 3.6
+     */
+    public String toString() {
+        return string;
+    }
+}
diff --git a/src/com/ibm/icu/util/ChineseCalendar.java b/src/com/ibm/icu/util/ChineseCalendar.java
new file mode 100644
index 0000000..d0e1deb
--- /dev/null
+++ b/src/com/ibm/icu/util/ChineseCalendar.java
@@ -0,0 +1,991 @@
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ *********************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarCache;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * <code>ChineseCalendar</code> is a concrete subclass of {@link Calendar}
+ * that implements a traditional Chinese calendar.  The traditional Chinese
+ * calendar is a lunisolar calendar: Each month starts on a new moon, and
+ * the months are numbered according to solar events, specifically, to
+ * guarantee that month 11 always contains the winter solstice.  In order
+ * to accomplish this, leap months are inserted in certain years.  Leap
+ * months are numbered the same as the month they follow.  The decision of
+ * which month is a leap month depends on the relative movements of the sun
+ * and moon.
+ *
+ * <p>This class defines one addition field beyond those defined by
+ * <code>Calendar</code>: The <code>IS_LEAP_MONTH</code> field takes the
+ * value of 0 for normal months, or 1 for leap months.
+ *
+ * <p>All astronomical computations are performed with respect to a time
+ * zone of GMT+8:00 and a longitude of 120 degrees east.  Although some
+ * calendars implement a historically more accurate convention of using
+ * Beijing's local longitude (116 degrees 25 minutes east) and time zone
+ * (GMT+7:45:40) for dates before 1929, we do not implement this here.
+ *
+ * <p>Years are counted in two different ways in the Chinese calendar.  The
+ * first method is by sequential numbering from the 61st year of the reign
+ * of Huang Di, 2637 BCE, which is designated year 1 on the Chinese
+ * calendar.  The second method uses 60-year cycles from the same starting
+ * point, which is designated year 1 of cycle 1.  In this class, the
+ * <code>EXTENDED_YEAR</code> field contains the sequential year count.
+ * The <code>ERA</code> field contains the cycle number, and the
+ * <code>YEAR</code> field contains the year of the cycle, a value between
+ * 1 and 60.
+ *
+ * <p>There is some variation in what is considered the starting point of
+ * the calendar, with some sources starting in the first year of the reign
+ * of Huang Di, rather than the 61st.  This gives continuous year numbers
+ * 60 years greater and cycle numbers one greater than what this class
+ * implements.
+ *
+ * <p>Because <code>ChineseCalendar</code> defines an additional field and
+ * redefines the way the <code>ERA</code> field is used, it requires a new
+ * format class, <code>ChineseDateFormat</code>.  As always, use the
+ * methods <code>DateFormat.getXxxInstance(Calendar cal,...)</code> to
+ * obtain a formatter for this calendar.
+ *
+ * <p>References:<ul>
+ * 
+ * <li>Dershowitz and Reingold, <i>Calendrical Calculations</i>,
+ * Cambridge University Press, 1997</li>
+ * 
+ * <li>Helmer Aslaksen's
+ * <a href="http://www.math.nus.edu.sg/aslaksen/calendar/chinese.shtml">
+ * Chinese Calendar page</a></li>
+ *
+ * <li>The <a href="http://www.tondering.dk/claus/calendar.html">
+ * Calendar FAQ</a></li>
+ *
+ * </ul>
+ *
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * ChineseCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=chinese"</code>.</p>
+ *
+ * @see com.ibm.icu.text.ChineseDateFormat
+ * @see com.ibm.icu.util.Calendar
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class ChineseCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 7312110751940929420L;
+
+    //------------------------------------------------------------------
+    // Developer Notes
+    // 
+    // Time is represented as a scalar in two ways in this class.  One is
+    // the usual UTC epoch millis, that is, milliseconds after January 1,
+    // 1970 Gregorian, 0:00:00.000 UTC.  The other is in terms of 'local
+    // days.'  This is the number of days after January 1, 1970 Gregorian,
+    // local to Beijing, China (since all computations of the Chinese
+    // calendar are done in Beijing).  That is, 0 represents January 1,
+    // 1970 0:00 Asia/Shanghai.  Conversion of local days to and from
+    // standard epoch milliseconds is accomplished by the daysToMillis()
+    // and millisToDays() methods.
+    // 
+    // Several methods use caches to improve performance.  Caches are at
+    // the object, not class level, under the assumption that typical
+    // usage will be to have one instance of ChineseCalendar at a time.
+ 
+    /**
+     * We have one instance per object, and we don't synchronize it because
+     * Calendar doesn't support multithreaded execution in the first place.
+     */
+    private transient CalendarAstronomer astro = new CalendarAstronomer();
+
+    /**
+     * Cache that maps Gregorian year to local days of winter solstice.
+     * @see #winterSolstice
+     */
+    private transient CalendarCache winterSolsticeCache = new CalendarCache();
+
+    /**
+     * Cache that maps Gregorian year to local days of Chinese new year.
+     * @see #newYear
+     */
+    private transient CalendarCache newYearCache = new CalendarCache();
+
+    /**
+     * True if the current year is a leap year.  Updated with each time to
+     * fields resolution.
+     * @see #computeChineseFields
+     */
+    private transient boolean isLeapYear;
+
+    //------------------------------------------------------------------
+    // Constructors
+    //------------------------------------------------------------------
+
+    /**
+     * Construct a <code>ChineseCalendar</code> with the default time zone and locale.
+     * @stable ICU 2.8
+     */
+    public ChineseCalendar() {
+        super();
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> with the give date set in the default time zone
+     * with the default locale.
+     * @param date The date to which the new calendar is set.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(Date date) {
+        super();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     * @param isLeapMonth The value used to set the Chiense calendar's (@link #IS_LEAP_MONTH)
+     *                  time field.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(int year, int month, int isLeapMonth, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+
+        // We need to set the current time once to initialize the ChineseCalendar's
+        // ERA field to be the current era.
+        setTimeInMillis(System.currentTimeMillis());
+        // Then we need to clean up time fields
+        this.set(MILLISECONDS_IN_DAY, 0);
+
+        // Then set the given field values.
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(IS_LEAP_MONTH, isLeapMonth);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for January.
+     * @param isLeapMonth the value used to set the {@link #IS_LEAP_MONTH} time field
+     *              in the calendar.
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+
+        // We need to set the current time once to initialize the ChineseCalendar's
+        // ERA field to be the current era.
+        setTimeInMillis(System.currentTimeMillis());
+        // Then set 0 to millisecond field
+        this.set(MILLISECOND, 0);
+
+        // Then, set the given field values.
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(IS_LEAP_MONTH, isLeapMonth);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale The given locale
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(TimeZone zone) {
+        super(zone, ULocale.getDefault());
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone
+     * @param aLocale the given locale
+     * @stable ICU 2.8
+     */
+    public ChineseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code>  based on the current time
+     * with the given time zone with the given locale.
+     * @param zone the given time zone
+     * @param locale the given ulocale
+     * @stable ICU 3.2
+     */
+    public ChineseCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    //------------------------------------------------------------------
+    // Public constants
+    //------------------------------------------------------------------
+
+    /**
+     * Field indicating whether or not the current month is a leap month.
+     * Should have a value of 0 for non-leap months, and 1 for leap months.
+     * @stable ICU 2.8
+     */
+    public static int IS_LEAP_MONTH = BASE_FIELD_COUNT;
+
+    /**
+     * Count of fields in this class.
+     */
+    private static final int FIELD_COUNT = IS_LEAP_MONTH + 1;
+
+    //------------------------------------------------------------------
+    // Calendar framework
+    //------------------------------------------------------------------
+
+    /**
+     * Override Calendar to allocate our additional field.
+     * @stable ICU 2.8
+     */
+    protected int[] handleCreateFields() {
+        return new int[FIELD_COUNT];
+    }
+
+    /**
+     * Array defining the limits of field values for this class.  Field
+     * limits which are invariant with respect to calendar system and
+     * defined by Calendar are left blank.
+     *
+     * Notes:
+     *
+     * ERA 5000000 / 60 = 83333.
+     *
+     * MONTH There are 12 or 13 lunar months in a year.  However, we always
+     * number them 0..11, with an intercalated, identically numbered leap
+     * month, when necessary.
+     *
+     * DAY_OF_YEAR In a non-leap year there are 353, 354, or 355 days.  In
+     * a leap year there are 383, 384, or 385 days.
+     *
+     * WEEK_OF_YEAR The least maximum occurs if there are 353 days in the
+     * year, and the first 6 are the last week of the previous year.  Then
+     * we have 49 full weeks and 4 days in the last week: 6 + 49*7 + 4 =
+     * 353.  So the least maximum is 50.  The maximum occurs if there are
+     * 385 days in the year, and WOY 1 extends 6 days into the prior year.
+     * Then there are 54 full weeks, and 6 days in the last week: 1 + 54*7
+     * + 6 = 385.  The 6 days of the last week will fall into WOY 1 of the
+     * next year.  Maximum is 55.
+     *
+     * WEEK_OF_MONTH In a 29 day month, if the first 7 days make up week 1
+     * that leaves 3 full weeks and 1 day at the end.  The least maximum is
+     * thus 5.  In a 30 days month, if the previous 6 days belong WOM 1 of
+     * this month, we have 4 full weeks and 1 days at the end (which
+     * technically will be WOM 1 of the next month, but will be reported by
+     * time->fields and hence by getActualMaximum as WOM 6 of this month).
+     * Maximum is 6.
+     *
+     * DAY_OF_WEEK_IN_MONTH In a 29 or 30 day month, there are 4 full weeks
+     * plus 1 or 2 days at the end, so the maximum is always 5.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        1,        1,   83333,   83333 }, // ERA
+        {        1,        1,      60,      60 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      50,      55 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       5,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+        {        0,        0,       1,       1 }, // IS_LEAP_MONTH
+    };
+
+    /**
+     * Override Calendar to return the limit value for the given field.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Implement abstract Calendar method to return the extended year
+     * defined by the current fields.  This will use either the ERA and
+     * YEAR field as the cycle and year-of-cycle, or the EXTENDED_YEAR
+     * field as the continuous year count, depending on which is newer.
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newestStamp(ERA, YEAR, UNSET) <= getStamp(EXTENDED_YEAR)) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            int cycle = internalGet(ERA, 1) - 1; // 0-based cycle
+            year = cycle * 60 + internalGet(YEAR, 1);
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar method to return the number of days in the given
+     * extended year and month.
+     *
+     * <p>Note: This method also reads the IS_LEAP_MONTH field to determine
+     * whether or not the given month is a leap month.
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        int thisStart = handleComputeMonthStart(extendedYear, month, true) -
+            EPOCH_JULIAN_DAY + 1; // Julian day -> local days
+        int nextStart = newMoonNear(thisStart + SYNODIC_GAP, true);
+        return nextStart - thisStart;
+    }
+
+    /**
+     * Framework method to create a calendar-specific DateFormat object
+     * using the the given pattern.  This method is responsible for
+     * creating the calendar- specific DateFormat and DateFormatSymbols
+     * objects as needed.
+     * @stable ICU 2.8
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        return new ChineseDateFormat(pattern, locale);
+    }
+
+    /**
+     * Field resolution table that incorporates IS_LEAP_MONTH.
+     */
+    static final int[][][] CHINESE_DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+            { RESOLVE_REMAP | DAY_OF_MONTH, IS_LEAP_MONTH },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Override Calendar to add IS_LEAP_MONTH to the field resolution
+     * table.
+     * @stable ICU 2.8
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return CHINESE_DATE_PRECEDENCE;
+    }
+
+    /**
+     * Adjust this calendar to be delta months before or after a given
+     * start position, pinning the day of month if necessary.  The start
+     * position is given as a local days number for the start of the month
+     * and a day-of-month.  Used by add() and roll().
+     * @param newMoon the local days of the first day of the month of the
+     * start position (days after January 1, 1970 0:00 Asia/Shanghai)
+     * @param dom the 1-based day-of-month of the start position
+     * @param delta the number of months to move forward or backward from
+     * the start position
+     */
+    private void offsetMonth(int newMoon, int dom, int delta) {
+        // Move to the middle of the month before our target month.
+        newMoon += (int) (CalendarAstronomer.SYNODIC_MONTH * (delta - 0.5));
+
+        // Search forward to the target month's new moon
+        newMoon = newMoonNear(newMoon, true);
+
+        // Find the target dom
+        int jd = newMoon + EPOCH_JULIAN_DAY - 1 + dom;
+
+        // Pin the dom.  In this calendar all months are 29 or 30 days
+        // so pinning just means handling dom 30.
+        if (dom > 29) {
+            set(JULIAN_DAY, jd-1);
+            // TODO Fix this.  We really shouldn't ever have to
+            // explicitly call complete().  This is either a bug in
+            // this method, in ChineseCalendar, or in
+            // Calendar.getActualMaximum().  I suspect the last.
+            complete();
+            if (getActualMaximum(DAY_OF_MONTH) >= dom) {
+                set(JULIAN_DAY, jd);
+            }
+        } else {
+            set(JULIAN_DAY, jd);
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     * @stable ICU 2.8
+     */
+    public void add(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon 
+                offsetMonth(moon, dom, amount);
+            }
+            break;
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     * @stable ICU 2.8
+     */
+    public void roll(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon (start of this month)
+
+                // Note throughout the following:  Months 12 and 1 are never
+                // followed by a leap month (D&R p. 185).
+
+                // Compute the adjusted month number m.  This is zero-based
+                // value from 0..11 in a non-leap year, and from 0..12 in a
+                // leap year.
+                int m = get(MONTH); // 0-based month
+                if (isLeapYear) { // (member variable)
+                    if (get(IS_LEAP_MONTH) == 1) {
+                        ++m;
+                    } else {
+                        // Check for a prior leap month.  (In the
+                        // following, month 0 is the first month of the
+                        // year.)  Month 0 is never followed by a leap
+                        // month, and we know month m is not a leap month.
+                        // moon1 will be the start of month 0 if there is
+                        // no leap month between month 0 and month m;
+                        // otherwise it will be the start of month 1.
+                        int moon1 = moon -
+                            (int) (CalendarAstronomer.SYNODIC_MONTH * (m - 0.5));
+                        moon1 = newMoonNear(moon1, true);
+                        if (isLeapMonthBetween(moon1, moon)) {
+                            ++m;
+                        }
+                    }
+                }
+
+                // Now do the standard roll computation on m, with the
+                // allowed range of 0..n-1, where n is 12 or 13.
+                int n = isLeapYear ? 13 : 12; // Months in this year
+                int newM = (m + amount) % n;
+                if (newM < 0) {
+                    newM += n;
+                }
+
+                if (newM != m) {
+                    offsetMonth(moon, dom, newM - m);
+                }
+            }
+            break;
+        default:
+            super.roll(field, amount);
+            break;
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Support methods and constants
+    //------------------------------------------------------------------
+   
+    /**
+     * The start year of the Chinese calendar, the 61st year of the reign
+     * of Huang Di.  Some sources use the first year of his reign,
+     * resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
+     * values one greater.
+     */
+    private static final int CHINESE_EPOCH_YEAR = -2636; // Gregorian year
+
+    /**
+     * The offset from GMT in milliseconds at which we perform astronomical
+     * computations.  Some sources use a different historically accurate
+     * offset of GMT+7:45:40 for years before 1929; we do not do this.
+     */
+    private static final long CHINA_OFFSET = 8*ONE_HOUR;
+
+    /**
+     * Value to be added or subtracted from the local days of a new moon to
+     * get close to the next or prior new moon, but not cross it.  Must be
+     * >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
+     */
+    private static final int SYNODIC_GAP = 25;
+
+    /**
+     * Convert local days to UTC epoch milliseconds.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @return milliseconds after January 1, 1970 0:00 GMT
+     */
+    private static final long daysToMillis(int days) {
+        return (days * ONE_DAY) - CHINA_OFFSET;
+    }
+
+    /**
+     * Convert UTC epoch milliseconds to local days.
+     * @param millis milliseconds after January 1, 1970 0:00 GMT
+     * @return days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private static final int millisToDays(long millis) {
+        return (int) floorDivide(millis + CHINA_OFFSET, ONE_DAY);
+    }
+
+    //------------------------------------------------------------------
+    // Astronomical computations
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the major solar term on or after December 15 of the given
+     * Gregorian year, that is, the winter solstice of the given year.
+     * Computations are relative to Asia/Shanghai time zone.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * winter solstice of the given year
+     */
+    private int winterSolstice(int gyear) {
+
+        long cacheValue = winterSolsticeCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+            // In books December 15 is used, but it fails for some years
+            // using our algorithms, e.g.: 1298 1391 1492 1553 1560.  That
+            // is, winterSolstice(1298) starts search at Dec 14 08:00:00
+            // PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
+            long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
+                                   1 - EPOCH_JULIAN_DAY);
+            astro.setTime(ms);
+            
+            // Winter solstice is 270 degrees solar longitude aka Dongzhi
+            long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
+                                              true);
+            cacheValue = millisToDays(solarLong);
+            winterSolsticeCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the closest new moon to the given date, searching either
+     * forward or backward in time.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @param after if true, search for a new moon on or after the given
+     * date; otherwise, search for a new moon before it
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the nearest
+     * new moon after or before <code>days</code>
+     */
+    private int newMoonNear(int days, boolean after) {
+        
+        astro.setTime(daysToMillis(days));
+        long newMoon = astro.getMoonTime(CalendarAstronomer.NEW_MOON, after);
+        
+        return millisToDays(newMoon);
+    }
+
+    /**
+     * Return the nearest integer number of synodic months between
+     * two dates.
+     * @param day1 days after January 1, 1970 0:00 Asia/Shanghai
+     * @param day2 days after January 1, 1970 0:00 Asia/Shanghai
+     * @return the nearest integer number of months between day1 and day2
+     */
+    private int synodicMonthsBetween(int day1, int day2) {
+        return (int) Math.round((day2 - day1) / CalendarAstronomer.SYNODIC_MONTH);
+    }
+
+    /**
+     * Return the major solar term on or before a given date.  This
+     * will be an integer from 1..12, with 1 corresponding to 330 degrees,
+     * 2 to 0 degrees, 3 to 30 degrees,..., and 12 to 300 degrees.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private int majorSolarTerm(int days) {
+        
+        astro.setTime(daysToMillis(days));
+
+        // Compute (floor(solarLongitude / (pi/6)) + 2) % 12
+        int term = ((int) Math.floor(6 * astro.getSunLongitude() / Math.PI) + 2) % 12;
+        if (term < 1) {
+            term += 12;
+        }
+        return term;
+    }
+
+    /**
+     * Return true if the given month lacks a major solar term.
+     * @param newMoon days after January 1, 1970 0:00 Asia/Shanghai of a new
+     * moon
+     */
+    private boolean hasNoMajorSolarTerm(int newMoon) {
+        
+        int mst = majorSolarTerm(newMoon);
+        int nmn = newMoonNear(newMoon + SYNODIC_GAP, true);
+        int mstt = majorSolarTerm(nmn);
+        return mst == mstt;
+        /*
+        return majorSolarTerm(newMoon) ==
+            majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, true));
+        */
+    }
+
+    //------------------------------------------------------------------
+    // Time to fields
+    //------------------------------------------------------------------
+    
+    /**
+     * Return true if there is a leap month on or after month newMoon1 and
+     * at or before month newMoon2.
+     * @param newMoon1 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     * @param newMoon2 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     */
+    private boolean isLeapMonthBetween(int newMoon1, int newMoon2) {
+
+        // This is only needed to debug the timeOfAngle divergence bug.
+        // Remove this later. Liu 11/9/00
+        // DEBUG
+        if (synodicMonthsBetween(newMoon1, newMoon2) >= 50) {
+            throw new IllegalArgumentException("isLeapMonthBetween(" + newMoon1 +
+                                               ", " + newMoon2 +
+                                               "): Invalid parameters");
+        }
+
+        return (newMoon2 >= newMoon1) &&
+            (isLeapMonthBetween(newMoon1, newMoonNear(newMoon2 - SYNODIC_GAP, false)) ||
+             hasNoMajorSolarTerm(newMoon2));
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Chinese
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called.  The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+
+        computeChineseFields(julianDay - EPOCH_JULIAN_DAY, // local days
+                             getGregorianYear(), getGregorianMonth(),
+                             true); // set all fields
+    }
+
+    /**
+     * Compute fields for the Chinese calendar system.  This method can
+     * either set all relevant fields, as required by
+     * <code>handleComputeFields()</code>, or it can just set the MONTH and
+     * IS_LEAP_MONTH fields, as required by
+     * <code>handleComputeMonthStart()</code>.
+     *
+     * <p>As a side effect, this method sets {@link #isLeapYear}.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai of the
+     * date to compute fields for
+     * @param gyear the Gregorian year of the given date
+     * @param gmonth the Gregorian month of the given date
+     * @param setAllFields if true, set the EXTENDED_YEAR, ERA, YEAR,
+     * DAY_OF_MONTH, and DAY_OF_YEAR fields.  In either case set the MONTH
+     * and IS_LEAP_MONTH fields.
+     */
+    private void computeChineseFields(int days, int gyear, int gmonth,
+                                      boolean setAllFields) {
+
+        // Find the winter solstices before and after the target date.
+        // These define the boundaries of this Chinese year, specifically,
+        // the position of month 11, which always contains the solstice.
+        // We want solsticeBefore <= date < solsticeAfter.
+        int solsticeBefore;
+        int solsticeAfter = winterSolstice(gyear);
+        if (days < solsticeAfter) {
+            solsticeBefore = winterSolstice(gyear - 1);
+        } else {
+            solsticeBefore = solsticeAfter;
+            solsticeAfter = winterSolstice(gyear + 1);
+        }
+
+        // Find the start of the month after month 11.  This will be either
+        // the prior month 12 or leap month 11 (very rare).  Also find the
+        // start of the following month 11.
+        int firstMoon = newMoonNear(solsticeBefore + 1, true);
+        int lastMoon = newMoonNear(solsticeAfter + 1, false);
+        int thisMoon = newMoonNear(days + 1, false); // Start of this month
+        // Note: isLeapYear is a member variable
+        isLeapYear = synodicMonthsBetween(firstMoon, lastMoon) == 12;
+
+        int month = synodicMonthsBetween(firstMoon, thisMoon);
+        if (isLeapYear && isLeapMonthBetween(firstMoon, thisMoon)) {
+            month--;
+        }
+        if (month < 1) {
+            month += 12;
+        }
+
+        boolean isLeapMonth = isLeapYear &&
+            hasNoMajorSolarTerm(thisMoon) &&
+            !isLeapMonthBetween(firstMoon, newMoonNear(thisMoon - SYNODIC_GAP, false));
+
+        internalSet(MONTH, month-1); // Convert from 1-based to 0-based
+        internalSet(IS_LEAP_MONTH, isLeapMonth?1:0);
+
+        if (setAllFields) {
+
+            int year = gyear - CHINESE_EPOCH_YEAR;
+            if (month < 11 ||
+                gmonth >= JULY) {
+                year++;
+            }
+            int dayOfMonth = days - thisMoon + 1;
+
+            internalSet(EXTENDED_YEAR, year);
+
+            // 0->0,60  1->1,1  60->1,60  61->2,1  etc.
+            int[] yearOfCycle = new int[1];
+            int cycle = floorDivide(year-1, 60, yearOfCycle);
+            internalSet(ERA, cycle+1);
+            internalSet(YEAR, yearOfCycle[0]+1);
+
+            internalSet(DAY_OF_MONTH, dayOfMonth);
+
+            // Days will be before the first new year we compute if this
+            // date is in month 11, leap 11, 12.  There is never a leap 12.
+            // New year computations are cached so this should be cheap in
+            // the long run.
+            int newYear = newYear(gyear);
+            if (days < newYear) {
+                newYear = newYear(gyear-1);
+            }
+            internalSet(DAY_OF_YEAR, days - newYear + 1);
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Fields to time
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the Chinese new year of the given Gregorian year.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * Chinese new year of the given year (this will be a new moon)
+     */
+    private int newYear(int gyear) {
+
+        long cacheValue = newYearCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+
+            int solsticeBefore= winterSolstice(gyear - 1);
+            int solsticeAfter = winterSolstice(gyear);
+            int newMoon1 = newMoonNear(solsticeBefore + 1, true);
+            int newMoon2 = newMoonNear(newMoon1 + SYNODIC_GAP, true);
+            int newMoon11 = newMoonNear(solsticeAfter + 1, false);
+            
+            if (synodicMonthsBetween(newMoon1, newMoon11) == 12 &&
+                (hasNoMajorSolarTerm(newMoon1) || hasNoMajorSolarTerm(newMoon2))) {
+                cacheValue = newMoonNear(newMoon2 + SYNODIC_GAP, true);
+            } else {
+                cacheValue = newMoon2;
+            }
+
+            newYearCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.
+     * 
+     * <p>Note: This method reads the IS_LEAP_MONTH field to determine
+     * whether the given month is a leap month.
+     * @param eyear the extended year
+     * @param month the zero-based month.  The month is also determined
+     * by reading the IS_LEAP_MONTH field.
+     * @return the Julian day number of the day before the first
+     * day of the given month and year
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        int gyear = eyear + CHINESE_EPOCH_YEAR - 1; // Gregorian year
+        int newYear = newYear(gyear);
+        int newMoon = newMoonNear(newYear + month * 29, true);
+        
+        int julianDay = newMoon + EPOCH_JULIAN_DAY;
+
+        // Save fields for later restoration
+        int saveMonth = internalGet(MONTH);
+        int saveIsLeapMonth = internalGet(IS_LEAP_MONTH);
+
+        // Ignore IS_LEAP_MONTH field if useMonth is false
+        int isLeapMonth = useMonth ? saveIsLeapMonth : 0;
+
+        computeGregorianFields(julianDay);
+        
+        // This will modify the MONTH and IS_LEAP_MONTH fields (only)
+        computeChineseFields(newMoon, getGregorianYear(),
+                             getGregorianMonth(), false);        
+
+        if (month != internalGet(MONTH) ||
+            isLeapMonth != internalGet(IS_LEAP_MONTH)) {
+            newMoon = newMoonNear(newMoon + SYNODIC_GAP, true);
+            julianDay = newMoon + EPOCH_JULIAN_DAY;
+        }
+
+        internalSet(MONTH, saveMonth);
+        internalSet(IS_LEAP_MONTH, saveIsLeapMonth);
+
+        return julianDay - 1;
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "chinese";
+    }
+
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        
+        /* set up the transient caches... */
+        astro = new CalendarAstronomer();
+        winterSolsticeCache = new CalendarCache();
+        newYearCache = new CalendarCache();
+    }
+    
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new ChineseCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Chinese";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/CompactByteArray.java b/src/com/ibm/icu/util/CompactByteArray.java
new file mode 100644
index 0000000..e65064d
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactByteArray.java
@@ -0,0 +1,384 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ *
+ * @see                CompactCharArray
+ * @author             Helena Shih
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class CompactByteArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int UNICODECOUNT =65536;
+
+    /**
+     * Default constructor for CompactByteArray, the default value of the
+     * compact array is 0.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray()
+    {
+        this((byte)0);
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param defaultValue the default value of the compact array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(byte defaultValue)
+    {
+        int i;
+        values = new byte[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(char indexArray[],
+                            byte newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(String indexArray,
+                            String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToByteArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public byte elementAt(char index)
+    {
+        return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+                       + (index & BLOCKMASK)]);
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char index, byte value)
+    {
+        if (isCompact)
+            expand();
+        values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char start, char end, byte value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact() {
+        compact(false);
+    }
+
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int limitCompacted = 0;
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    int j = 0;
+                    for (j = 0; j < limitCompacted;
+                            ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = (char)jBlockStart;
+                            break;
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        // we didn't match, so copy & update
+                        System.arraycopy(values, iBlockStart,
+                            values, jBlockStart, BLOCKCOUNT);
+                        indices[i] = (char)jBlockStart;
+                        hashes[j] = hashes[i];
+                        ++limitCompacted;
+
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            int newSize = limitCompacted*BLOCKCOUNT;
+            byte[] result = new byte[newSize];
+            System.arraycopy(values, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+                                            byte[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public byte[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Object clone()
+    {
+        try {
+            CompactByteArray other = (CompactByteArray) super.clone();
+            other.values = (byte[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactByteArray other = (CompactByteArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            byte[]  tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new byte[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                byte value = elementAt((char)i);
+                tempArray[i] = value;
+                touchBlock(i >> BLOCKSHIFT, value);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    private static  final int BLOCKSHIFT =7;
+    private static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    private static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    private static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    private static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private byte[] values;
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    byte defaultValue;
+}
diff --git a/src/com/ibm/icu/util/CompactCharArray.java b/src/com/ibm/icu/util/CompactCharArray.java
new file mode 100644
index 0000000..cc3c6a1
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactCharArray.java
@@ -0,0 +1,410 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ * @see                CompactByteArray
+ * @author             Helena Shih
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class CompactCharArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int UNICODECOUNT = 65536;
+
+    /**
+     * Default constructor for CompactCharArray, the default value of the
+     * compact array is 0.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray()
+    {
+        this((char)0);
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param defaultValue the default value of the compact array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(char defaultValue)
+    {
+        int i;
+        values = new char[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(char indexArray[],
+                             char newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(String indexArray,
+                String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToCharArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char elementAt(char index)
+    {
+    int ix = (indices[index >> BLOCKSHIFT] & 0xFFFF)
+        + (index & BLOCKMASK);
+    return ix >= values.length ? defaultValue : values[ix];
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char index, char value)
+    {
+        if (isCompact)
+            expand();
+         values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char start, char end, char value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+    /**
+     * Compact the array
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact() {
+        compact(true);
+    }
+
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+            int newSize = 0;
+
+            char[] target = exhaustive ? new char[UNICODECOUNT] : values;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    // See if we can find a previously compacted block that's identical
+                    for (int j = 0; j < i; ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                                   values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = indices[j];
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        int dest;   // Where to copy
+                        if (exhaustive) {
+                            // See if we can find some overlap with another block
+                            dest = FindOverlappingPosition(iBlockStart, target,
+                                                            newSize);
+                        } else {
+                            // Just copy to the end; it's quicker
+                            dest = newSize;
+                        }
+                        int limit = dest + BLOCKCOUNT;
+                        if (limit > newSize) {
+                            for (int j = newSize; j < limit; ++j) {
+                                target[j] = values[iBlockStart + j - dest];
+                            }
+                            newSize = limit;
+                        }
+                        indices[i] = (char)dest;
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            char[] result = new char[newSize];
+            System.arraycopy(target, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    private int FindOverlappingPosition(int start, char[] tempValues, int tempCount)
+    {
+        for (int i = 0; i < tempCount; i += 1) {
+            int currentCount = BLOCKCOUNT;
+            if (i + BLOCKCOUNT > tempCount) {
+                currentCount = tempCount - i;
+            }
+            if (arrayRegionMatches(values, start, tempValues, i, currentCount))
+                return i;
+        }
+        return tempCount;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Object clone()
+    {
+        try {
+            CompactCharArray other = (CompactCharArray) super.clone();
+            other.values = (char[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactCharArray other = (CompactCharArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            char[] tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new char[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                tempArray[i] = elementAt((char)i);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int BLOCKSHIFT = 5; // NormalizerBuilder needs - liu
+    static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private char values[];
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    char defaultValue;
+}
diff --git a/src/com/ibm/icu/util/CopticCalendar.java b/src/com/ibm/icu/util/CopticCalendar.java
new file mode 100644
index 0000000..b1db47c
--- /dev/null
+++ b/src/com/ibm/icu/util/CopticCalendar.java
@@ -0,0 +1,321 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Implement the Coptic calendar system.
+ * <p>
+ * CopticCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=coptic"</code>.</p>
+ *
+ * @see com.ibm.icu.util.Calendar
+ * @stable ICU 3.4
+ */
+public final class CopticCalendar extends CECalendar 
+{
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 5903818751846742911L;
+
+    /** 
+     * Constant for &#x03c9;&#x03bf;&#x03b3;&#x03c4;/&#x062a;&#xfeee;&#xfe97;,
+     * the 1st month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TOUT = 0;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03bf;&#x03c0;&#x03b9;/&#xfeea;&#xfe91;&#xfe8e;&#xfe91;,
+     * the 2nd month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BABA = 1;
+
+    /** 
+     * Constant for &#x0391;&#x03b8;&#x03bf;&#x03c1;/&#x0631;&#xfeee;&#xfe97;&#xfe8e;&#xfeeb;,
+     * the 3rd month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HATOR = 2;
+
+    /** 
+     * Constant for &#x03a7;&#x03bf;&#x03b9;&#x03b1;&#x03ba;/&#xfeda;&#xfeec;&#xfef4;&#xfedb;,
+     * the 4th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int KIAHK = 3;
+
+    /** 
+     * Constant for &#x03a4;&#x03c9;&#x03b2;&#x03b9;/&#x0637;&#xfeee;&#xfe92;&#xfeeb;,
+     * the 5th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TOBA = 4;
+
+    /** 
+     * Constant for &#x039c;&#x03b5;&#x03e3;&#x03b9;&#x03c1;/&#xfeae;&#xfef4;&#xfeb8;&#xfee3;&#x0623;,
+     * the 6th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int AMSHIR = 5;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03c1;&#x03b5;&#x03bc;&#x03e9;&#x03b1;&#x03c4;/&#x062a;&#xfe8e;&#xfeec;&#xfee3;&#xfeae;&#xfe91;,
+     * the 7th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BARAMHAT = 6;
+
+    /** 
+     * Constant for &#x03a6;&#x03b1;&#x03c1;&#x03bc;&#x03bf;&#x03b8;&#x03b9;/&#x0647;&#x062f;&#xfeee;&#xfee3;&#xfeae;&#xfe91;, 
+     * the 8th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BARAMOUDA = 7;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03e3;&#x03b1;&#x03bd;/&#xfeb2;&#xfee8;&#xfeb8;&#xfe91;,
+     * the 9th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BASHANS = 8;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03c9;&#x03bd;&#x03b9;/&#xfeea;&#xfee7;&#x0624;&#xfeee;&#xfe91;,
+     * the 10th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int PAONA = 9;
+
+    /** 
+     * Constant for &#x0395;&#x03c0;&#x03b7;&#x03c0;/&#xfe90;&#xfef4;&#xfe91;&#x0623;,
+     * the 11th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int EPEP = 10;
+
+    /** 
+     * Constant for &#x039c;&#x03b5;&#x03f2;&#x03c9;&#x03c1;&#x03b7;/&#x0649;&#xfeae;&#xfeb4;&#xfee3;,
+     * the 12th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MESRA = 11;
+
+    /** 
+     * Constant for &#x03a0;&#x03b9;&#x03ba;&#x03bf;&#x03b3;&#x03eb;&#x03b9;
+     * &#x03bc;&#x03b1;&#x03b2;&#x03bf;&#x03c4;/&#xfeae;&#xfef4;&#xfed0;&#xfebc;&#xfedf;&#x0627;
+     * &#xfeae;&#xfeec;&#xfeb8;&#xfedf;&#x0627;,
+     * the 13th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int NASIE = 12;
+  
+    private static final int JD_EPOCH_OFFSET  = 1824665;
+
+    // Eras
+    private static final int BCE = 0;
+    private static final int CE = 1;
+
+    /**
+     * Constructs a default <code>CopticCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+    
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+    
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tout.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(Date date) {
+        super(date);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tout.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(int year, int month, int date, int hour,
+                          int minute, int second) {
+        super(year, month, date, hour, minute, second);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "coptic";
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetExtendedYear() {
+        int eyear;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            eyear = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            // The year defaults to the epoch start, the era to AD
+            int era = internalGet(ERA, CE);
+            if (era == BCE) {
+                eyear = 1 - internalGet(YEAR, 1); // Convert to extended year
+            } else {
+                eyear = internalGet(YEAR, 1); // Default to year 1
+            }
+        }
+        return eyear;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void handleComputeFields(int julianDay) {
+        int era, year;
+        int[] fields = new int[3];
+        jdToCE(julianDay, getJDEpochOffset(), fields);
+
+        // fields[0] eyear
+        // fields[1] month
+        // fields[2] day
+
+        if (fields[0] <= 0) {
+            era = BCE;
+            year = 1 - fields[0];
+        } else {
+            era = CE;
+            year = fields[0];
+        }
+
+        internalSet(EXTENDED_YEAR, fields[0]);
+        internalSet(ERA, era);
+        internalSet(YEAR, year);
+        internalSet(MONTH, fields[1]);
+        internalSet(DAY_OF_MONTH, fields[2]);
+        internalSet(DAY_OF_YEAR, (30 * fields[1]) + fields[2]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int getJDEpochOffset() {
+        return JD_EPOCH_OFFSET;
+    }
+
+    /**
+     * Convert an Coptic year, month, and day to a Julian day.
+     *
+     * @param year the year
+     * @param month the month
+     * @param date the day
+     * @draft ICU 3.4 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    // The equivalent operation can be done by public Calendar API.
+    // This API was accidentally marked as @draft, but we have no good
+    // reason to keep this.  For now, we leave it as is, but may be
+    // removed in future.  2008-03-21 yoshito
+    public static int copticToJD(long year, int month, int date) {
+        return ceToJD(year, month, date, JD_EPOCH_OFFSET);
+    }
+}
+
diff --git a/src/com/ibm/icu/util/Currency.java b/src/com/ibm/icu/util/Currency.java
new file mode 100644
index 0000000..1bb89b8
--- /dev/null
+++ b/src/com/ibm/icu/util/Currency.java
@@ -0,0 +1,847 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.text.ChoiceFormat;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Date;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+
+/**
+ * A class encapsulating a currency, as defined by ISO 4217.  A
+ * <tt>Currency</tt> object can be created given a <tt>Locale</tt> or
+ * given an ISO 4217 code.  Once created, the <tt>Currency</tt> object
+ * can return various data necessary to its proper display:
+ *
+ * <ul><li>A display symbol, for a specific locale
+ * <li>The number of fraction digits to display
+ * <li>A rounding increment
+ * </ul>
+ *
+ * The <tt>DecimalFormat</tt> class uses these data to display
+ * currencies.
+ *
+ * <p>Note: This class deliberately resembles
+ * <tt>java.util.Currency</tt> but it has a completely independent
+ * implementation, and adds features not present in the JDK.
+ * @author Alan Liu
+ * @stable ICU 2.2
+ */
+public class Currency extends MeasureUnit implements Serializable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = -5839973855554750484L;
+    private static final boolean DEBUG = ICUDebug.enabled("currency");
+    /**
+     * ISO 4217 3-letter code.
+     */
+    private String isoCode;
+
+    /**
+     * Selector for getName() indicating a symbolic name for a
+     * currency, such as "$" for USD.
+     * @stable ICU 2.6
+     */
+    public static final int SYMBOL_NAME = 0;
+
+    /**
+     * Selector for ucurr_getName indicating the long name for a
+     * currency, such as "US Dollar" for USD.
+     * @stable ICU 2.6
+     */
+    public static final int LONG_NAME = 1;
+
+    // begin registry stuff
+
+    // shim for service code
+    /* package */ static abstract class ServiceShim {
+        abstract ULocale[] getAvailableULocales();
+        abstract Locale[] getAvailableLocales();
+        abstract Currency createInstance(ULocale l);
+        abstract Object registerInstance(Currency c, ULocale l);
+        abstract boolean unregister(Object f);
+    }
+
+    private static ServiceShim shim;
+    private static ServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.util.CurrencyServiceShim");
+                shim = (ServiceShim)cls.newInstance();
+            }
+            catch (Exception e) {
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Returns a currency object for the default currency in the given
+     * locale.
+     * @param locale the locale
+     * @return the currency object for this locale
+     * @stable ICU 2.2
+     */
+    public static Currency getInstance(Locale locale) {
+        return getInstance(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a currency object for the default currency in the given
+     * locale.
+     * @stable ICU 3.2
+     */
+    public static Currency getInstance(ULocale locale) {
+        String currency = locale.getKeywordValue("currency");
+        if (currency != null) {
+            return getInstance(currency);
+        }
+
+        if (shim == null) {
+            return createCurrency(locale);
+        }
+
+        return shim.createInstance(locale);
+    }
+
+    /**
+     * Returns an array of Strings which contain the currency
+     * identifiers which are valid for the given locale on the 
+     * given date.
+     * @param loc the locale for which to retrieve currency codes.
+     * @param d the date for which to retrieve currency codes for the given locale.
+     * @return The array of ISO currency codes.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String[] getAvailableCurrencyCodes(ULocale loc, Date d) 
+    {
+        // local variables
+        String country = loc.getCountry();
+        long dateL = d.getTime();
+        long mask = 4294967295L;
+
+            Vector currCodeVector = new Vector();
+
+        // Get supplementalData
+        ICUResourceBundle bundle = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+            "supplementalData",
+            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        if (bundle == null)
+        {
+            // no data
+            return null;
+        }
+
+        // Work with the supplementalData
+        try
+        {
+            // Process each currency to see which one is valid for the given date.
+            // Some regions can have more than one current currency in use for
+            // a given date.
+            UResourceBundle cm = bundle.get("CurrencyMap");
+            UResourceBundle countryArray = cm.get(country);
+
+            // Get valid currencies
+            for (int i = 0; i < countryArray.getSize(); i++)
+            {
+                // get the currency resource
+                UResourceBundle currencyReq = countryArray.get(i);
+                String curriso = null;
+                curriso = currencyReq.getString("id");
+
+                // get the from date
+                long fromDate = 0;
+                UResourceBundle fromRes = currencyReq.get("from");
+                int[] fromArray = fromRes.getIntVector();
+                fromDate = (long)fromArray[0] << 32;
+                fromDate |= ((long)fromArray[1] & mask);
+
+                // get the to date and check the date range
+                if (currencyReq.getSize() > 2)
+                {
+                    long toDate = 0;
+                    UResourceBundle toRes = currencyReq.get("to");
+                    int[] toArray = toRes.getIntVector();
+                    toDate = (long)toArray[0] << 32;
+                    toDate |= ((long)toArray[1] & mask);
+
+                    if ((fromDate <= dateL) && (dateL < toDate))
+                    {
+                        currCodeVector.addElement(curriso);
+                    }
+                }
+                else
+                {
+                    if (fromDate <= dateL)
+                    {
+                        currCodeVector.addElement(curriso);
+                    }
+                }
+
+            }  // end For loop
+
+            // return the String array if we have matches
+            currCodeVector.trimToSize();
+            if (currCodeVector.size() != 0)
+            {
+                return ((String[])currCodeVector.toArray(new String[0]));
+            }
+
+        }
+        catch (MissingResourceException ex)
+        {
+            // We don't know about this region.
+            // As of CLDR 1.5.1, the data includes deprecated region history too.
+            // So if we get here, either the region doesn't exist, or the data is really bad.
+            // Deprecated regions should return the last valid currency for that region in the data.
+            // We don't try to resolve it to a new region.
+        }
+
+        // if we get this far, return nothing
+        return null;
+    }
+
+    private static final String EUR_STR = "EUR";
+    /**
+     * Instantiate a currency from a resource bundle found in Locale loc.
+     */
+    /* package */ static Currency createCurrency(ULocale loc) {
+        String country = loc.getCountry();
+        String variant = loc.getVariant();
+        boolean isPreEuro = variant.equals("PREEURO");
+        boolean isEuro = variant.equals("EURO");
+        // TODO: ICU4C has service registration, and the currency is requested from the service here.
+        ICUResourceBundle bundle = (ICUResourceBundle) ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        if(bundle==null){
+            //throw new MissingResourceException()
+            return null;
+        }
+        try {
+            UResourceBundle cm = bundle.get("CurrencyMap");
+            String curriso = null;
+            UResourceBundle countryArray = cm.get(country);
+            // Some regions can have more than one current currency in use.
+            // The latest default currency is always the first one.
+            UResourceBundle currencyReq = countryArray.get(0);
+            curriso = currencyReq.getString("id");
+            if (isPreEuro && curriso.equals(EUR_STR)) {
+                currencyReq = countryArray.get(1);
+                curriso = currencyReq.getString("id");
+            }
+            else if (isEuro) {
+                curriso = EUR_STR;
+            }
+            if (curriso != null) {
+                return new Currency(curriso);
+            }
+        } catch (MissingResourceException ex) {
+            // We don't know about this region.
+            // As of CLDR 1.5.1, the data includes deprecated region history too.
+            // So if we get here, either the region doesn't exist, or the data is really bad.
+            // Deprecated regions should return the last valid currency for that region in the data.
+            // We don't try to resolve it to a new region.
+        }
+        return null;
+    }
+
+    /**
+     * Returns a currency object given an ISO 4217 3-letter code.
+     * @param theISOCode the iso code
+     * @return the currency for this iso code
+     * @throws NullPoninterException if <code>theISOCode</code> is null.
+     * @throws IllegalArgumentException if <code>theISOCode</code> is not a
+     *         3-letter alpha code.
+     * @stable ICU 2.2
+     */
+    public static Currency getInstance(String theISOCode) {
+        if (theISOCode == null) {
+            throw new NullPointerException("The input currency code is null.");
+        }
+        boolean is3alpha = true;
+        if (theISOCode.length() != 3) {
+            is3alpha = false;
+        } else {
+            for (int i = 0; i < 3; i++) {
+                char ch = theISOCode.charAt(i);
+                if (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z') {
+                    is3alpha = false;
+                    break;
+                }
+            }
+        }
+        if (!is3alpha) {
+            throw new IllegalArgumentException(
+                    "The input currency code is not 3-letter alphabetic code.");
+        }
+        return new Currency(theISOCode.toUpperCase(Locale.US));
+    }
+
+    /**
+     * Registers a new currency for the provided locale.  The returned object
+     * is a key that can be used to unregister this currency object.
+     * @param currency the currency to register
+     * @param locale the ulocale under which to register the currency
+     * @return a registry key that can be used to unregister this currency
+     * @see #unregister
+     * @stable ICU 3.2
+     */
+    public static Object registerInstance(Currency currency, ULocale locale) {
+        return getShim().registerInstance(currency, locale);
+    }
+
+    /**
+     * Unregister the currency associated with this key (obtained from
+     * registerInstance).
+     * @param registryKey the registry key returned from registerInstance
+     * @see #registerInstance
+     * @stable ICU 2.6
+     */
+    public static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+        if (shim == null) {
+            return false;
+        }
+        return shim.unregister(registryKey);
+    }
+
+    /**
+     * Return an array of the locales for which a currency
+     * is defined.
+     * @return an array of the available locales
+     * @stable ICU 2.2
+     */
+    public static Locale[] getAvailableLocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return shim.getAvailableLocales();
+        }
+    }
+
+    /**
+     * Return an array of the ulocales for which a currency
+     * is defined.
+     * @return an array of the available ulocales
+     * @stable ICU 3.2
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return shim.getAvailableULocales();
+        }
+    }
+
+    // end registry stuff
+
+    /**
+     * Return a hashcode for this currency.
+     * @stable ICU 2.2
+     */
+    public int hashCode() {
+        return isoCode.hashCode();
+    }
+
+    /**
+     * Return true if rhs is a Currency instance,
+     * is non-null, and has the same currency code.
+     * @stable ICU 2.2
+     */
+    public boolean equals(Object rhs) {
+        if (rhs == null) return false;
+        if (rhs == this) return true;
+        try {
+            Currency c = (Currency) rhs;
+            return isoCode.equals(c.isoCode);
+        }
+        catch (ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns the ISO 4217 3-letter code for this currency object.
+     * @stable ICU 2.2
+     */
+    public String getCurrencyCode() {
+        return isoCode;
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol() {
+        return getSymbol(ULocale.getDefault());
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @param loc the Locale for the symbol
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol(Locale loc) {
+        return getSymbol(ULocale.forLocale(loc));
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @param uloc the ULocale for the symbol
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol(ULocale uloc) {
+        return getName(uloc, SYMBOL_NAME, new boolean[1]);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  For example, the display name for the USD
+     * currency object in the en_US locale is "$".
+     * @param locale locale in which to display currency
+     * @param nameStyle selector for which kind of name to return
+     * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true
+     * if the returned value is a ChoiceFormat pattern; otherwise it
+     * is set to false
+     * @return display string for this currency.  If the resource data
+     * contains no entry for this currency, then the ISO 4217 code is
+     * returned.  If isChoiceFormat[0] is true, then the result is a
+     * ChoiceFormat pattern.  Otherwise it is a static string.
+     * @stable ICU 3.2
+     */
+    public String getName(Locale locale,
+                          int nameStyle,
+                          boolean[] isChoiceFormat) {
+        return getName(ULocale.forLocale(locale), nameStyle, isChoiceFormat);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  For example, the display name for the USD
+     * currency object in the en_US locale is "$".
+     * @param locale locale in which to display currency
+     * @param nameStyle selector for which kind of name to return
+     * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true
+     * if the returned value is a ChoiceFormat pattern; otherwise it
+     * is set to false
+     * @return display string for this currency.  If the resource data
+     * contains no entry for this currency, then the ISO 4217 code is
+     * returned.  If isChoiceFormat[0] is true, then the result is a
+     * ChoiceFormat pattern.  Otherwise it is a static string.
+     * @stable ICU 3.2
+     */
+    public String getName(ULocale locale,
+                          int nameStyle,
+                          boolean[] isChoiceFormat) {
+
+        // Look up the Currencies resource for the given locale.  The
+        // Currencies locale data looks like this:
+        //|en {
+        //|  Currencies {
+        //|    USD { "US$", "US Dollar" }
+        //|    CHF { "Sw F", "Swiss Franc" }
+        //|    INR { "=0#Rs|1#Re|1<Rs", "=0#Rupees|1#Rupee|1<Rupees" }
+        //|    //...
+        //|  }
+        //|}
+
+        if (nameStyle < 0 || nameStyle > 1) {
+            throw new IllegalArgumentException();
+        }
+
+        String s = null;
+
+         try {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            ICUResourceBundle currencies = (ICUResourceBundle)rb.get("Currencies");
+
+            // Fetch resource with multi-level resource inheritance fallback
+            s = currencies.getWithFallback(isoCode).getString(nameStyle);
+        }catch (MissingResourceException e) {
+            //TODO what should be done here?
+        }
+
+        // Determine if this is a ChoiceFormat pattern.  One leading mark
+        // indicates a ChoiceFormat.  Two indicates a static string that
+        // starts with a mark.  In either case, the first mark is ignored,
+        // if present.  Marks in the rest of the string have no special
+        // meaning.
+        isChoiceFormat[0] = false;
+        if (s != null) {
+            int i=0;
+            while (i < s.length() && s.charAt(i) == '=' && i < 2) {
+                ++i;
+            }
+            isChoiceFormat[0]= (i == 1);
+            if (i != 0) {
+                // Skip over first mark
+                s = s.substring(1);
+            }
+            return s;
+        }
+
+        // If we fail to find a match, use the ISO 4217 code
+        return isoCode;
+    }
+
+    /**
+     * Attempt to parse the given string as a currency, either as a
+     * display name in the given locale, or as a 3-letter ISO 4217
+     * code.  If multiple display names match, then the longest one is
+     * selected.  If both a display name and a 3-letter ISO code
+     * match, then the display name is preferred, unless it's length
+     * is less than 3.
+     *
+     * @param locale the locale of the display names to match
+     * @param text the text to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return the ISO 4217 code, as a string, of the best match, or
+     * null if there is no match
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static String parse(ULocale locale, String text, ParsePosition pos) {
+
+        // TODO: There is a slight problem with the pseudo-multi-level
+        // fallback implemented here.  More-specific locales don't
+        // properly shield duplicate entries in less-specific locales.
+        // This problem will go away when real multi-level fallback is
+        // implemented.  We could also fix this by recording (in a
+        // hash) which codes are used at each level of fallback, but
+        // this doesn't seem warranted.
+
+        int start = pos.getIndex();
+        String fragment = text.substring(start);
+
+        String iso = null;
+        int max = 0;
+
+        // Look up the Currencies resource for the given locale.  The
+        // Currencies locale data looks like this:
+        //|en {
+        //|  Currencies {
+        //|    USD { "US$", "US Dollar" }
+        //|    CHF { "Sw F", "Swiss Franc" }
+        //|    INR { "=0#Rs|1#Re|1<Rs", "=0#Rupees|1#Rupee|1<Rupees" }
+        //|    //...
+        //|  }
+        //|}
+
+        // In the future, resource bundles may implement multi-level
+        // fallback.  That is, if a currency is not found in the en_US
+        // Currencies data, then the en Currencies data will be searched.
+        // Currently, if a Currencies datum exists in en_US and en, the
+        // en_US entry hides that in en.
+
+        // We want multi-level fallback for this resource, so we implement
+        // it manually.
+
+        // Multi-level resource inheritance fallback loop
+
+        while (locale != null) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            // We can't cast this to String[][]; the cast has to happen later
+
+            try {
+                UResourceBundle currencies = rb.get("Currencies");
+                // Do a linear search
+                for (int i=0; i<currencies.getSize(); ++i) {
+                    //String name = ((String[]) currencies[i][1])[0];
+                    UResourceBundle item = currencies.get(i);
+                    String name = item.getString(0);
+                    if (name.length() < 1) {
+                        // Ignore zero-length names -- later, change this
+                        // when zero-length is used to mean something.
+                        continue;
+                    } else if (name.charAt(0) == '=') {
+                        name = name.substring(1);
+                        if (name.length() > 0 && name.charAt(0) != '=') {
+                            ChoiceFormat choice = new ChoiceFormat(name);
+                            // Number n =
+                            choice.parse(text, pos);
+                            int len = pos.getIndex() - start;
+                            if (len > max) {
+                                iso = item.getKey();
+                                max = len;
+                            }
+                            pos.setIndex(start);
+                            continue;
+                        }
+                    }
+                    if (name.length() > max && fragment.startsWith(name)) {
+                        iso = item.getKey();
+                        max = name.length();
+                    }
+                }
+            }
+            catch (MissingResourceException e) {}
+
+            locale = locale.getFallback();
+        }
+
+        /*
+        1. Look at the Currencies array from the locale
+            1a. Iterate through it, and check each row to see if row[1] matches
+                1a1. If row[1] is a pattern, use ChoiceFormat to attempt a parse
+            1b. Upon a match, return the ISO code stored at row[0]
+        2. If there is no match, fall back to "en" and try again
+        3. If there is no match, fall back to root and try again
+        4. If still no match, parse 3-letter ISO {this code is probably unchanged}.
+
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(UResourceBundle.ICU_BASE_NAME, locale);
+        ICUResourceBundle currencies = rb.get("Currencies");
+        */
+        // If display name parse fails or if it matches fewer than 3
+        // characters, try to parse 3-letter ISO.  Do this after the
+        // display name processing so 3-letter display names are
+        // preferred.  Consider /[A-Z]{3}/ to be valid ISO, and parse
+        // it manually--UnicodeSet/regex are too slow and heavy.
+        if (max < 3 && (text.length() - start) >= 3) {
+            boolean valid = true;
+            for (int k=0; k<3; ++k) {
+                char ch = text.charAt(start + k); // 16-bit ok
+                if (ch < 'A' || ch > 'Z') {
+                    valid = false;
+                    break;
+                }
+            }
+            if (valid) {
+                iso = text.substring(start, start+3);
+                max = 3;
+            }
+        }
+
+        pos.setIndex(start + max);
+        return iso;
+    }
+
+    /**
+     * Returns the number of the number of fraction digits that should
+     * be displayed for this currency.
+     * @return a non-negative number of fraction digits to be
+     * displayed
+     * @stable ICU 2.2
+     */
+    public int getDefaultFractionDigits() {
+        return (findData())[0];
+    }
+
+    /**
+     * Returns the rounding increment for this currency, or 0.0 if no
+     * rounding is done by this currency.
+     * @return the non-negative rounding increment, or 0.0 if none
+     * @stable ICU 2.2
+     */
+    public double getRoundingIncrement() {
+        int[] data = findData();
+
+        int data1 = data[1]; // rounding increment
+
+        // If there is no rounding return 0.0 to indicate no rounding.
+        // This is the high-runner case, by far.
+        if (data1 == 0) {
+            return 0.0;
+        }
+
+        int data0 = data[0]; // fraction digits
+
+        // If the meta data is invalid, return 0.0 to indicate no rounding.
+        if (data0 < 0 || data0 >= POW10.length) {
+            return 0.0;
+        }
+
+        // Return data[1] / 10^(data[0]).  The only actual rounding data,
+        // as of this writing, is CHF { 2, 25 }.
+        return (double) data1 / POW10[data0];
+    }
+
+    /**
+     * Returns the ISO 4217 code for this currency.
+     * @stable ICU 2.2
+     */
+    public String toString() {
+        return isoCode;
+    }
+
+    /**
+     * Constructs a currency object for the given ISO 4217 3-letter
+     * code.  This constructor assumes that the code is valid.
+     * 
+     * @param theISOCode The iso code used to construct the currency.
+     * @draft ICU 3.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Currency(String theISOCode) {
+        isoCode = theISOCode;
+    }
+
+    /**
+     * Internal function to look up currency data.  Result is an array of
+     * two Integers.  The first is the fraction digits.  The second is the
+     * rounding increment, or 0 if none.  The rounding increment is in
+     * units of 10^(-fraction_digits).
+     */
+    private int[] findData() {
+
+        try {
+            // Get CurrencyMeta resource out of root locale file.  [This may
+            // move out of the root locale file later; if it does, update this
+            // code.]
+            UResourceBundle root = ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle currencyMeta = root.get("CurrencyMeta");
+
+            //Integer[] i = null;
+            //int defaultPos = -1;
+            int[] i = currencyMeta.get(isoCode).getIntVector();
+
+            // Do a linear search for isoCode.  At the same time,
+            // record the position of the DEFAULT meta data.  If the
+            // meta data becomes large, make this faster.
+            /*for (int j=0; j<currencyMeta.length; ++j) {
+                Object[] row = currencyMeta[j];
+                String s = (String) row[0];
+                int c = isoCode.compareToIgnoreCase(s);
+                if (c == 0) {
+                    i = (Integer[]) row[1];
+                    break;
+                }
+                if ("DEFAULT".equalsIgnoreCase(s)) {
+                    defaultPos = j;
+                }
+                if (c < 0 && defaultPos >= 0) {
+                    break;
+                }
+            }
+            */
+            if (i == null) {
+                i = currencyMeta.get("DEFAULT").getIntVector();
+            }
+
+            if (i != null && i.length >= 2) {
+                return i;
+            }
+        }
+        catch (MissingResourceException e) {}
+
+        // Config/build error; return hard-coded defaults
+        return LAST_RESORT_DATA;
+    }
+
+    // Default currency meta data of last resort.  We try to use the
+    // defaults encoded in the meta data resource bundle.  If there is a
+    // configuration/build error and these are not available, we use these
+    // hard-coded defaults (which should be identical).
+    private static final int[] LAST_RESORT_DATA = new int[] { 2, 0 };
+
+    // POW10[i] = 10^i
+    private static final int[] POW10 = { 1, 10, 100, 1000, 10000, 100000,
+                                1000000, 10000000, 100000000, 1000000000 };
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be obsoleted.  The implementation is
+     * no longer locale-specific and so there is no longer a valid or
+     * actual locale associated with the Currency object.  Until
+     * it is removed, this method will return the root locale.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @obsolete ICU 3.2 to be removed
+     * @deprecated This API is obsolete.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        ULocale result = (type == ULocale.ACTUAL_LOCALE) ? actualLocale : validLocale;
+        if (result == null) {
+            return ULocale.ROOT;
+        }
+        return result;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /*
+     * The most specific locale containing any resource data, or null.
+     */
+    private ULocale validLocale;
+
+    /*
+     * The locale containing data used to construct this object, or null.
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/CurrencyAmount.java b/src/com/ibm/icu/util/CurrencyAmount.java
new file mode 100644
index 0000000..d7657b8
--- /dev/null
+++ b/src/com/ibm/icu/util/CurrencyAmount.java
@@ -0,0 +1,54 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 12, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.lang.Number;
+
+/**
+ * An amount of currency, consisting of a Number and a Currency.
+ * CurrencyAmount objects are immutable.
+ *
+ * @see java.lang.Number
+ * @see Currency
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public class CurrencyAmount extends Measure {
+    
+    /**
+     * Constructs a new object given a number and a currency.
+     * @param number the number
+     * @param currency the currency
+     * @stable ICU 3.0
+     */
+    public CurrencyAmount(Number number, Currency currency) {
+        super(number, currency);
+    }
+
+    /**
+     * Constructs a new object given a double value and a currency.
+     * @param number a double value
+     * @param currency the currency
+     * @stable ICU 3.0
+     */
+    public CurrencyAmount(double number, Currency currency) {
+        super(new Double(number), currency);
+    }    
+    
+    /**
+     * Returns the currency of this object.
+     * @return this object's Currency
+     * @stable ICU 3.0
+     */
+    public Currency getCurrency() {
+        return (Currency) getUnit();
+    }
+}
diff --git a/src/com/ibm/icu/util/CurrencyServiceShim.java b/src/com/ibm/icu/util/CurrencyServiceShim.java
new file mode 100644
index 0000000..0de4e3f
--- /dev/null
+++ b/src/com/ibm/icu/util/CurrencyServiceShim.java
@@ -0,0 +1,75 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICULocaleService;
+
+/**
+ * This is a package-access implementation of registration for
+ * currency.  The shim is instantiated by reflection in Currency, all
+ * dependencies on ICUService are located in this file. This structure
+ * is to allow ICU4J to be built without service registration support.  
+ */
+final class CurrencyServiceShim extends Currency.ServiceShim {
+    
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    Currency createInstance(ULocale loc) {
+        // TODO: convert to ULocale when service switches over
+
+        if (service.isDefault()) {
+            return Currency.createCurrency(loc);
+        }
+        ULocale[] actualLoc = new ULocale[1];
+    Currency curr = (Currency)service.get(loc, actualLoc);
+        ULocale uloc = actualLoc[0];
+        curr.setLocale(uloc, uloc); // services make no distinction between actual & valid
+        return curr;
+    }
+
+    Object registerInstance(Currency currency, ULocale locale) {
+        return service.registerObject(currency, locale);
+    }
+    
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    private static class CFService extends ICULocaleService {
+        CFService() {
+            super("Currency");
+
+            class CurrencyFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return Currency.createCurrency(loc);
+                }
+            }
+            
+            registerFactory(new CurrencyFactory());
+            markDefault();
+        }
+    }
+    static final ICULocaleService service = new CFService();
+}
diff --git a/src/com/ibm/icu/util/DateInterval.java b/src/com/ibm/icu/util/DateInterval.java
new file mode 100644
index 0000000..f4ab1a9
--- /dev/null
+++ b/src/com/ibm/icu/util/DateInterval.java
@@ -0,0 +1,92 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+
+/**
+ * This class represents date interval.
+ * It is a pair of long representing from date 1 to date 2.
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public final class DateInterval implements Serializable {
+
+    private static final long serialVersionUID = 1;
+
+    private final long fromDate;
+    private final long toDate;
+
+    /** 
+     * Constructor given from date and to date.
+     * @param from      The from date in date interval.
+     * @param to        The to date in date interval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateInterval(long from, long to)
+    {
+        fromDate = from;
+        toDate = to;
+    }
+
+    /** 
+     * Get the from date.
+     * @return  the from date in dateInterval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public long getFromDate()
+    {
+        return fromDate;
+    }
+
+    /** 
+     * Get the to date.
+     * @return  the to date in dateInterval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public long getToDate()
+    {
+        return toDate;
+    }
+
+    /**
+     * Override equals
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateInterval ) {
+            DateInterval di = (DateInterval)a;
+            return fromDate == di.fromDate && toDate == di.toDate;
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return (int)(fromDate + toDate);
+    }
+
+    /**
+     * Override toString
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        return String.valueOf(fromDate) + " " + String.valueOf(toDate);
+    }
+
+} // end class DateInterval
diff --git a/src/com/ibm/icu/util/DateRule.java b/src/com/ibm/icu/util/DateRule.java
new file mode 100644
index 0000000..35341f9
--- /dev/null
+++ b/src/com/ibm/icu/util/DateRule.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * DateRule is an interface for calculating the date of an event.
+ * It supports both recurring events and those which occur only once.
+ * DateRule is useful for storing information about holidays,
+ * Daylight Savings Time rules, and other events such as meetings.
+ *
+ * @see SimpleDateRule
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public interface DateRule
+{
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public Date    firstAfter(Date start);
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public Date    firstBetween(Date start, Date end);
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public boolean isOn(Date date);
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public boolean isBetween(Date start, Date end);
+}
diff --git a/src/com/ibm/icu/util/DateTimeRule.java b/src/com/ibm/icu/util/DateTimeRule.java
new file mode 100644
index 0000000..61a815b
--- /dev/null
+++ b/src/com/ibm/icu/util/DateTimeRule.java
@@ -0,0 +1,327 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+/**
+ * <code>DateTimeRule</code> is a class representing a time in a year by
+ * a rule specified by month, day of month, day of week and
+ * time in the day.
+ * 
+ * @stable ICU 3.8
+ */
+public class DateTimeRule implements Serializable {
+
+    private static final long serialVersionUID = 2183055795738051443L;
+
+    /**
+     * Date rule type defined by exact day of month.
+     * For example, March 14.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOM = 0;
+
+    /**
+     * Date rule type defined by day of week in month.
+     * For example, 2nd Sunday in March.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW = 1;
+
+    /**
+     * Date rule type defined by first day of week on or
+     * after exact day of month.
+     * For example, 1st Monday on or after March 15.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW_GEQ_DOM = 2;
+
+    /**
+     * Date rule type defined by last day of week on or
+     * before exact day of month.
+     * For example, last Saturday on or before March 15.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW_LEQ_DOM = 3;
+    
+    /**
+     * Time rule type for local wall time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int WALL_TIME = 0;
+
+    /**
+     * Time rule type for local standard time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int STANDARD_TIME = 1;
+
+    /**
+     * Time rule type for coordinated universal time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int UTC_TIME = 2;
+
+    // private stuff
+    private final int dateRuleType;
+    private final int month;
+    private final int dayOfMonth;
+    private final int dayOfWeek;
+    private final int weekInMonth;
+
+    private final int timeRuleType;
+    private final int millisInDay;
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the day of month and
+     * the time rule.  The date rule type for an instance created by
+     * this constructor is <code>DOM</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>
+     * @param dayOfMonth    The day of month, 1-based.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int dayOfMonth,
+            int millisInDay, int timeType) {
+        dateRuleType = DOM;
+        this.month = month;
+        this.dayOfMonth = dayOfMonth;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+        
+        // not used by this rule type
+        this.dayOfWeek = 0;
+        this.weekInMonth = 0;
+    }
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the day of week and its oridinal
+     * number and the time rule.  The date rule type for an instance created
+     * by this constructor is <code>DOW</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>.
+     * @param weekInMonth   The ordinal number of the day of week.  Negative number
+     *                      may be used for specifying a rule date counted from the
+     *                      end of the rule month.
+     * @param dayOfWeek     The day of week, for example, <code>Calendar.SUNDAY</code>.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int weekInMonth, int dayOfWeek,
+            int millisInDay, int timeType) {
+        dateRuleType = DOW;
+        this.month = month;
+        this.weekInMonth = weekInMonth;
+        this.dayOfWeek = dayOfWeek;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+
+        // not used by this rule type
+        this.dayOfMonth = 0;
+    }
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the first/last day of week
+     * on or after/before the day of month and the time rule.  The date rule
+     * type for an instance created by this constructor is either
+     * <code>DOM_GEQ_DOM</code> or <code>DOM_LEQ_DOM</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>
+     * @param dayOfMonth    The day of month, 1-based.
+     * @param dayOfWeek     The day of week, for example, <code>Calendar.SUNDAY</code>.
+     * @param after         true if the rule date is on or after the day of month.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int dayOfMonth, int dayOfWeek, boolean after,
+            int millisInDay, int timeType) {
+        this.dateRuleType = after ? DOW_GEQ_DOM : DOW_LEQ_DOM;
+        this.month = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek = dayOfWeek;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+
+        // not used by this rule type
+        this.weekInMonth = 0;
+    }
+
+    /**
+     * Gets the date rule type, such as <code>DOM</code>
+     * 
+     * @return The date rule type.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getDateRuleType() {
+        return dateRuleType;
+    }
+
+    /**
+     * Gets the rule month.
+     * 
+     * @return The rule month.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleMonth() {
+        return month;
+    }
+
+    /**
+     * Gets the rule day of month.  When the date rule type
+     * is <code>DOW</code>, the value is always 0.
+     * 
+     * @return The rule day of month
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleDayOfMonth() {
+        return dayOfMonth;
+    }
+
+    /**
+     * Gets the rule day of week.  When the date rule type
+     * is <code>DOM</code>, the value is always 0.
+     * 
+     * @return The rule day of week.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleDayOfWeek() {
+        return dayOfWeek;
+    }
+
+    /**
+     * Gets the rule day of week ordinal number in the month.
+     * When the date rule type is not <code>DOW</code>, the value is
+     * always 0.
+     * 
+     * @return The rule day of week ordinal number in the month.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleWeekInMonth() {
+        return weekInMonth;
+    }
+
+    /**
+     * Gets the time rule type
+     * 
+     * @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *         or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getTimeRuleType() {
+        return timeRuleType;
+    }
+
+    /**
+     * Gets the rule time in the rule day.
+     * 
+     * @return The time in the rule day in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleMillisInDay() {
+        return millisInDay;
+    }
+    
+    private static final String[] DOWSTR = {"", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+    private static final String[] MONSTR = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+
+    /**
+     * Returns a <code>String</code> representation of this <code>DateTimeRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        String sDate = null;
+        String sTimeRuleType = null;
+
+        switch (dateRuleType) {
+        case DOM:
+            sDate = Integer.toString(dayOfMonth);
+            break;
+        case DOW:
+            sDate = Integer.toString(weekInMonth) + DOWSTR[dayOfWeek];
+            break;
+        case DOW_GEQ_DOM:
+            sDate = DOWSTR[dayOfWeek] + ">=" + Integer.toString(dayOfMonth);
+            break;
+        case DOW_LEQ_DOM:
+            sDate = DOWSTR[dayOfWeek] + "<=" + Integer.toString(dayOfMonth);
+            break;
+        }
+
+        switch (timeRuleType) {
+        case WALL_TIME:
+            sTimeRuleType = "WALL";
+            break;
+        case STANDARD_TIME:
+            sTimeRuleType = "STD";
+            break;
+        case UTC_TIME:
+            sTimeRuleType = "UTC";
+            break;
+        }
+
+        int time = millisInDay;
+        int millis = time % 1000;
+        time /= 1000;
+        int secs = time % 60;
+        time /= 60;
+        int mins = time % 60;
+        int hours = time / 60;
+
+        StringBuffer buf = new StringBuffer();
+        buf.append("month=");
+        buf.append(MONSTR[month]);
+        buf.append(", date=");
+        buf.append(sDate);
+        buf.append(", time=");
+        buf.append(hours);
+        buf.append(":");
+        buf.append(mins/10);
+        buf.append(mins%10);
+        buf.append(":");
+        buf.append(secs/10);
+        buf.append(secs%10);
+        buf.append(".");
+        buf.append(millis/100);
+        buf.append((millis/10)%10);
+        buf.append(millis%10);
+        buf.append("(");
+        buf.append(sTimeRuleType);
+        buf.append(")");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/EasterHoliday.java b/src/com/ibm/icu/util/EasterHoliday.java
new file mode 100644
index 0000000..5f14e20
--- /dev/null
+++ b/src/com/ibm/icu/util/EasterHoliday.java
@@ -0,0 +1,287 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * A Holiday subclass which represents holidays that occur
+ * a fixed number of days before or after Easter.  Supports both the
+ * Western and Orthodox methods for calculating Easter.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class EasterHoliday extends Holiday
+{
+    /**
+     * Construct a holiday that falls on Easter Sunday every year
+     *
+     * @param name The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(String name)
+    {
+        super(name, new EasterRule(0, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param name      The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(int daysAfter, String name)
+    {
+        super(name, new EasterRule(daysAfter, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year, using either the Western
+     * or Orthodox calendar.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param orthodox  Use the Orthodox calendar?
+     * @param name      The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(int daysAfter, boolean orthodox, String name)
+    {
+        super(name, new EasterRule(daysAfter, orthodox));
+    }
+
+    /**
+     * Shrove Tuesday, aka Mardi Gras, 48 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday SHROVE_TUESDAY  = new EasterHoliday(-48,    "Shrove Tuesday");
+
+    /**
+     * Ash Wednesday, start of Lent, 47 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday ASH_WEDNESDAY   = new EasterHoliday(-47,    "Ash Wednesday");
+
+    /**
+     * Palm Sunday, 7 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday PALM_SUNDAY     = new EasterHoliday( -7,    "Palm Sunday");
+
+    /**
+     * Maundy Thursday, 3 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday MAUNDY_THURSDAY = new EasterHoliday( -3,    "Maundy Thursday");
+
+    /**
+     * Good Friday, 2 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday GOOD_FRIDAY     = new EasterHoliday( -2,    "Good Friday");
+
+    /**
+     * Easter Sunday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday EASTER_SUNDAY   = new EasterHoliday(  0,    "Easter Sunday");
+
+    /**
+     * Easter Monday, 1 day after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday EASTER_MONDAY   = new EasterHoliday(  1,    "Easter Monday");
+
+    /**
+     * Ascension, 39 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday ASCENSION       = new EasterHoliday( 39,    "Ascension");
+
+    /**
+     * Pentecost (aka Whit Sunday), 49 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday PENTECOST       = new EasterHoliday( 49,    "Pentecost");
+
+    /**
+     * Whit Sunday (aka Pentecost), 49 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday WHIT_SUNDAY     = new EasterHoliday( 49,    "Whit Sunday");
+
+    /**
+     * Whit Monday, 50 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday WHIT_MONDAY     = new EasterHoliday( 50,    "Whit Monday");
+
+    /**
+     * Corpus Christi, 60 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday CORPUS_CHRISTI  = new EasterHoliday( 60,    "Corpus Christi");
+}
+
+class EasterRule implements DateRule {
+    public EasterRule(int daysAfterEaster, boolean isOrthodox) {
+        this.daysAfterEaster = daysAfterEaster;
+        if (isOrthodox) {
+            orthodox.setGregorianChange(new Date(Long.MAX_VALUE));
+            calendar = orthodox;
+        }
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after the given date
+     */
+    public Date firstAfter(Date start)
+    {
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after
+     * the given start date and before the given end date.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Return true if the given Date is on the same day as Easter
+     */
+    public boolean isOn(Date date)
+    {
+        synchronized(calendar) {
+            calendar.setTime(date);
+            int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
+
+            calendar.setTime(computeInYear(calendar.getTime(), calendar));
+
+            return calendar.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Return true if Easter occurs between the two dates given
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        //System.out.println("doFirstBetween: start   = " + start.toString());
+        //System.out.println("doFirstBetween: end     = " + end.toString());
+
+        synchronized(calendar) {
+            // Figure out when this holiday lands in the given year
+            Date result = computeInYear(start, calendar);
+
+         //System.out.println("                result  = " + result.toString());
+
+            // We might have gotten a date that's in the same year as "start", but
+            // earlier in the year.  If so, go to next year
+            if (result.before(start))
+            {
+                calendar.setTime(start);
+                calendar.get(Calendar.YEAR);    // JDK 1.1.2 bug workaround
+                calendar.add(Calendar.YEAR, 1);
+
+                //System.out.println("                Result before start, going to next year: "
+                //                        + calendar.getTime().toString());
+
+                result = computeInYear(calendar.getTime(), calendar);
+                //System.out.println("                result  = " + result.toString());
+            }
+
+            if (end != null && result.after(end)) {
+                //System.out.println("Result after end, returning null");
+                return null;
+            }
+            return result;
+        }
+    }
+
+    /**
+     * Compute the month and date on which this holiday falls in the year
+     * containing the date "date".  First figure out which date Easter
+     * lands on in this year, and then add the offset for this holiday to get
+     * the right date.
+     * <p>
+     * The algorithm here is taken from the
+     * <a href="http://www.faqs.org/faqs/calendars/faq/">Calendar FAQ</a>.
+     */
+    private Date computeInYear(Date date, GregorianCalendar cal)
+    {
+        if (cal == null) cal = calendar;
+
+        synchronized(cal) {
+            cal.setTime(date);
+
+            int year = cal.get(Calendar.YEAR);
+            int g = year % 19;  // "Golden Number" of year - 1
+            int i = 0;          // # of days from 3/21 to the Paschal full moon
+            int j = 0;          // Weekday (0-based) of Paschal full moon
+
+            if (cal.getTime().after( cal.getGregorianChange()))
+            {
+                // We're past the Gregorian switchover, so use the Gregorian rules.
+                int c = year / 100;
+                int h = (c - c/4 - (8*c+13)/25 + 19*g + 15) % 30;
+                i = h - (h/28)*(1 - (h/28)*(29/(h+1))*((21-g)/11));
+                j = (year + year/4 + i + 2 - c + c/4) % 7;
+            }
+            else
+            {
+                // Use the old Julian rules.
+                i = (19*g + 15) % 30;
+                j = (year + year/4 + i) % 7;
+            }
+            int l = i - j;
+            int m = 3 + (l+40)/44;              // 1-based month in which Easter falls
+            int d = l + 28 - 31*(m/4);          // Date of Easter within that month
+
+            cal.clear();
+            cal.set(Calendar.ERA, GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, year);
+            cal.set(Calendar.MONTH, m-1);       // 0-based
+            cal.set(Calendar.DATE, d);
+            cal.getTime();                      // JDK 1.1.2 bug workaround
+            cal.add(Calendar.DATE, daysAfterEaster);
+
+            return cal.getTime();
+        }
+    }
+
+    private static GregorianCalendar gregorian = new GregorianCalendar(/* new SimpleTimeZone(0, "UTC") */);
+    private static GregorianCalendar orthodox = new GregorianCalendar(/* new SimpleTimeZone(0, "UTC") */);
+
+    private int               daysAfterEaster;
+    private GregorianCalendar calendar = gregorian;
+}
diff --git a/src/com/ibm/icu/util/EthiopicCalendar.java b/src/com/ibm/icu/util/EthiopicCalendar.java
new file mode 100644
index 0000000..e33c177
--- /dev/null
+++ b/src/com/ibm/icu/util/EthiopicCalendar.java
@@ -0,0 +1,389 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Implement the Ethiopic calendar system.
+ * <p>
+ * EthiopicCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=ethiopic"</code>.</p>
+ *
+ * @see com.ibm.icu.util.Calendar
+ * @stable ICU 3.4
+ */
+public final class EthiopicCalendar extends CECalendar 
+{
+    //jdk1.4.2 serialver
+    private static final long serialVersionUID = -2438495771339315608L;
+
+    /** 
+     * Constant for &#x1218;&#x1235;&#x12a8;&#x1228;&#x121d;, the 1st month of the Ethiopic year.
+     * @stable ICU 3.4
+     */
+    public static final int MESKEREM = 0;
+
+    /** 
+     * Constant for &#x1325;&#x1245;&#x121d;&#x1275;, the 2nd month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TEKEMT = 1;
+
+    /** 
+     * Constant for &#x1285;&#x12f3;&#x122d;, the 3rd month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HEDAR = 2;
+
+    /** 
+     * Constant for &#x1273;&#x1285;&#x1223;&#x1225;, the 4th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TAHSAS = 3;
+
+    /** 
+     * Constant for &#x1325;&#x122d;, the 5th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TER = 4;
+
+    /** 
+     * Constant for &#x12e8;&#x12ab;&#x1272;&#x1275;, the 6th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int YEKATIT = 5;
+
+    /** 
+     * Constant for &#x1218;&#x130b;&#x1262;&#x1275;, the 7th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MEGABIT = 6;
+
+    /** 
+     * Constant for &#x121a;&#x12eb;&#x12dd;&#x12eb;, the 8th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MIAZIA = 7;
+
+    /** 
+     * Constant for &#x130d;&#x1295;&#x1266;&#x1275;, the 9th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int GENBOT = 8;
+
+    /** 
+     * Constant for &#x1230;&#x1294;, the 10th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int SENE = 9;
+
+    /** 
+     * Constant for &#x1210;&#x121d;&#x120c;, the 11th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HAMLE = 10;
+
+    /** 
+     * Constant for &#x1290;&#x1210;&#x1234;, the 12th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int NEHASSE = 11;
+
+    /** 
+     * Constant for &#x1333;&#x1309;&#x121c;&#x1295;, the 13th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int PAGUMEN = 12;
+ 
+    // Up until the end of the 19th century the prevailant convention was to
+    // reference the Ethiopic Calendar from the creation of the world, 
+    // \u12d3\u1218\u1270\u1361\u12d3\u1208\u121d
+    // (Amete Alem 5500 BC).  As Ethiopia modernized the reference epoch from
+    // the birth of Christ (\u12d3\u1218\u1270\u1361\u121d\u1215\u1228\u1275) 
+    // began to displace the creation of the
+    // world reference point.  However, years before the birth of Christ are
+    // still referenced in the creation of the world system.   
+    // Thus -100 \u12d3/\u121d
+    // would be rendered as 5400  \u12d3/\u12d3.
+    //
+    // The creation of the world in Ethiopic cannon was 
+    // Meskerem 1, -5500  \u12d3/\u121d 00:00:00
+    // applying the birth of Christ reference and Ethiopian time conventions.  This is
+    // 6 hours less than the Julian epoch reference point (noon).  In Gregorian
+    // the date and time was July 18th -5493 BC 06:00 AM.
+
+    // Julian Days relative to the 
+    // \u12d3\u1218\u1270\u1361\u121d\u1215\u1228\u1275 epoch
+    // Note: we no longer use this constant
+    //private static final int JD_EPOCH_OFFSET_AMETE_ALEM = -285019;
+
+    // Julian Days relative to the 
+    // \u12d3\u1218\u1270\u1361\u12d3\u1208\u121d epoch
+    private static final int JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856;
+
+    // The delta between Amete Alem 1 and Amete Mihret 1
+    // AA 5501 = AM 1
+    private static final int AMETE_MIHRET_DELTA = 5500;
+
+    // Eras
+    private static final int AMETE_ALEM = 0;
+    private static final int AMETE_MIHRET = 1;
+
+    // Era mode.  When eraType is AMETE_ALEM_ERA,
+    // Amete Mihret won't be used for the ERA field.
+    private static final int AMETE_MIHRET_ERA = 0;
+    private static final int AMETE_ALEM_ERA = 1;
+
+    private int eraType = AMETE_MIHRET_ERA;
+
+    /**
+     * Constructs a default <code>EthiopicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+    
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+    
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Meskerem.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(Date date) {
+        super(date);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Meskerem.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(int year, int month, int date, int hour,
+                            int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        if (isAmeteAlemEra()) {
+            return "ethiopic-amete-alem";
+        }
+        return "ethiopic";
+    }
+
+    /**
+     * Set Alem or Mihret era.
+     *
+     * @param onOff Set Amete Alem era if true, otherwise set Amete Mihret era.
+     * @stable ICU 3.4
+     */
+    public void setAmeteAlemEra(boolean onOff) {
+        eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA;
+    }
+    
+    /**
+     * Return true if this calendar is set to the Amete Alem era.
+     *
+     * @return true if set to the Amete Alem era.
+     * @stable ICU 3.4
+     */
+    public boolean isAmeteAlemEra() {
+        return (eraType == AMETE_ALEM_ERA);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetExtendedYear() {
+        // Ethiopic calendar uses EXTENDED_YEAR aligned to
+        // Amelete Mihret year always.
+        int eyear;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            eyear = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else if (isAmeteAlemEra()){
+            eyear = internalGet(YEAR, 1 + AMETE_MIHRET_DELTA)
+                    - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret
+        } else {
+            // The year defaults to the epoch start, the era to AMETE_MIHRET
+            int era = internalGet(ERA, AMETE_MIHRET);
+            if (era == AMETE_MIHRET) {
+                eyear = internalGet(YEAR, 1); // Default to year 1
+            } else {
+                eyear = internalGet(YEAR, 1) - AMETE_MIHRET_DELTA;
+            }
+        }
+        return eyear;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void handleComputeFields(int julianDay) {
+        int era, year;
+        int[] fields = new int[3];
+        jdToCE(julianDay, getJDEpochOffset(), fields);
+
+        // fields[0] eyear
+        // fields[1] month
+        // fields[2] day
+
+        if (isAmeteAlemEra()) {
+            era = AMETE_ALEM;
+            year = fields[0] + AMETE_MIHRET_DELTA;
+        } else {
+            if (fields[0] > 0) {
+                era = AMETE_MIHRET;
+                year = fields[0];
+            } else {
+                era = AMETE_ALEM;
+                year = fields[0] + AMETE_MIHRET_DELTA;
+            }
+        }
+
+        internalSet(EXTENDED_YEAR, fields[0]);
+        internalSet(ERA, era);
+        internalSet(YEAR, year);
+        internalSet(MONTH, fields[1]);
+        internalSet(DAY_OF_MONTH, fields[2]);
+        internalSet(DAY_OF_YEAR, (30 * fields[1]) + fields[2]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (isAmeteAlemEra() && field == ERA) {
+            return 0; // Only one era in this mode, era is always 0
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int getJDEpochOffset() {
+        return JD_EPOCH_OFFSET_AMETE_MIHRET;
+    }
+
+    /**
+     * Convert an Ethiopic year, month, and day to a Julian day.
+     *
+     * @param year the year
+     * @param month the month
+     * @param date the day
+     *
+     * @draft ICU 3.4 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    // The equivalent operation can be done by public Calendar API.
+    // This API was accidentally marked as @draft, but we have no good
+    // reason to keep this.  For now, we leave it as is, but may be
+    // removed in future.  2008-03-21 yoshito
+    public static int EthiopicToJD(long year, int month, int date) {
+        return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET);
+    }
+}
+
diff --git a/src/com/ibm/icu/util/Freezable.java b/src/com/ibm/icu/util/Freezable.java
new file mode 100644
index 0000000..b715ac8
--- /dev/null
+++ b/src/com/ibm/icu/util/Freezable.java
@@ -0,0 +1,323 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 200-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+*/
+package com.ibm.icu.util;
+
+/**
+ * Provides a flexible mechanism for controlling access, without requiring that
+ * a class be immutable. Once locked, an object can never be unlocked, so it is
+ * thread-safe from that point onward. The implementation of both methods must
+ * be synchronized. Once the object has been locked, it must guarantee that no
+ * changes can be made to it. Any attempt to alter it must raise an
+ * UnsupportedOperationException exception. This means that when the object
+ * returns internal objects, or if anyone has references to those internal
+ * objects, that those internal objects must either be immutable, or must also
+ * raise exceptions if any attempt to modify them is made. Of course, the object
+ * can return clones of internal objects, since those are safe.
+ * <h2>Background</h2>
+ * <p>
+ * There are often times when you need objects to be objects 'safe', so that
+ * they can't be modified. Examples are when objects need to be thread-safe, or
+ * in writing robust code, or in caches. If you are only creating your own
+ * objects, you can guarantee this, of course -- but only if you don't make a
+ * mistake. If you have objects handed into you, or are creating objects using
+ * others handed into you, it is a different story. It all comes down to whether
+ * you want to take the Blanche Dubois approach (&quot;depend on the kindness of
+ * strangers&quot;) or the Andy Grove approach (&quot;Only the Paranoid
+ * Survive&quot;).
+ * </p>
+ * <p>
+ * For example, suppose we have a simple class:
+ * </p>
+ * 
+ * <pre>
+ * public class A {
+ *      protected Collection b;
+ * 
+ *      protected Collection c;
+ * 
+ *      public Collection get_b() {
+ *              return b;
+ *      }
+ * 
+ *      public Collection get_c() {
+ *              return c;
+ *      }
+ * 
+ *      public A(Collection new_b, Collection new_c) {
+ *              b = new_b;
+ *              c = new_c;
+ *      }
+ * }
+ * </pre>
+ * 
+ * <p>
+ * Since the class doesn't have any setters, someone might think that it is
+ * immutable. You know where this is leading, of course; this class is unsafe in
+ * a number of ways. The following illustrates that.
+ * </p>
+ * 
+ * <pre>
+ *  public test1(SupposedlyImmutableClass x, SafeStorage y) {
+ *   &lt;font color=&quot;#0000FF&quot;&gt;    &lt;b&gt;// unsafe getter&lt;/b&gt;
+ *   &lt;/font&gt;    A a = x.getA();
+ *   Collection col = a.get_b();
+ *   col.add(something);&lt;font color=&quot;#0000FF&quot;&gt; // a has now been changed, and x too
+ *   &lt;/font&gt;
+ *   &lt;font color=&quot;#0000FF&quot;&gt;&lt;b&gt;// unsafe constructor&lt;/b&gt;&lt;/font&gt;
+ *   a = new A(col, col);
+ *   y.store(a);
+ *   col.add(something);&lt;font color=&quot;#0000FF&quot;&gt; // a has now been changed, and y too
+ *  
+ *   &lt;/font&gt;}
+ * </pre>
+ * 
+ * <p>
+ * There are a few different techniques for having safe classes.
+ * </p>
+ * <ol>
+ * <li>Const objects. In C++, you can declare parameters const.</li>
+ * <li>Immutable wrappers. For example, you can put a collection in an
+ * immutable wrapper.</li>
+ * <li>Always-Immutable objects. Java uses this approach, with a few
+ * variations. Examples:
+ * <ol>
+ * <li>Simple. Once a Color is created (eg from R, G, and B integers) it is
+ * immutable.</li>
+ * <li>Builder Class. There is a separate 'builder' class. For example,
+ * modifiable Strings are created using StringBuffer (which doesn't have the
+ * full String API available). Once you want an immutable form, you create one
+ * with toString().</li>
+ * <li>Primitives. These are always safe, since they are copied on input/output
+ * from methods.</li>
+ * </ol>
+ * </li>
+ * <li>Cloning. Where you need an object to be safe, you clone it.</li>
+ * </ol>
+ * <p>
+ * There are advantages and disadvantages of each of these.
+ * </p>
+ * <ol>
+ * <li>Const provides a certain level of protection, but since const can be and
+ * is often cast away, it only protects against most inadvertent mistakes. It
+ * also offers no threading protection, since anyone who has a pointer to the
+ * (unconst) object in another thread can mess you up.</li>
+ * <li>Immutable wrappers are safer than const in that the constness can't be
+ * cast away. But other than that they have all the same problems: not safe if
+ * someone else keeps hold of the original object, or if any of the objects
+ * returned by the class are mutable.</li>
+ * <li>Always-Immutable Objects are safe, but usage can require excessive
+ * object creation.</li>
+ * <li>Cloning is only safe if the object truly has a 'safe' clone; defined as
+ * one that <i>ensures that no change to the clone affects the original</i>.
+ * Unfortunately, many objects don't have a 'safe' clone, and always cloning can
+ * require excessive object creation.</li>
+ * </ol>
+ * <h2>Freezable Model</h2>
+ * <p>
+ * The <code>Freezable</code> model supplements these choices by giving you
+ * the ability to build up an object by calling various methods, then when it is
+ * in a final state, you can <i>make</i> it immutable. Once immutable, an
+ * object cannot <i>ever </i>be modified, and is completely thread-safe: that
+ * is, multiple threads can have references to it without any synchronization.
+ * If someone needs a mutable version of an object, they can use
+ * <code>cloneAsThawed()</code>, and modify the copy. This provides a simple,
+ * effective mechanism for safe classes in circumstances where the alternatives
+ * are insufficient or clumsy. (If an object is shared before it is immutable,
+ * then it is the responsibility of each thread to mutex its usage (as with
+ * other objects).)
+ * </p>
+ * <p>
+ * Here is what needs to be done to implement this interface, depending on the
+ * type of the object.
+ * </p>
+ * <h3><b>Immutable Objects</b></h3>
+ * <p>
+ * These are the easiest. You just use the interface to reflect that, by adding
+ * the following:
+ * </p>
+ * 
+ * <pre>
+ *  public class A implements Freezable {
+ *   ...
+ *   public final boolean isFrozen() {return true;}
+ *   public final Object freeze() {return this;}
+ *   public final Object cloneAsThawed() { return this; }
+ *   }
+ * </pre>
+ * 
+ * <p>
+ * These can be final methods because subclasses of immutable objects must
+ * themselves be immutable. (Note: <code>freeze</code> is returning
+ * <code>this</code> for chaining.)
+ * </p>
+ * <h3><b>Mutable Objects</b></h3>
+ * <p>
+ * Add a protected 'flagging' field:
+ * </p>
+ * 
+ * <pre>
+ * protected boolean immutable;
+ * </pre>
+ * 
+ * <p>
+ * Add the following methods:
+ * </p>
+ * 
+ * <pre>
+ * public final boolean isFrozen() {
+ *      return frozen;
+ * };
+ * 
+ * public Object freeze() {
+ *      frozen = true;
+ *      return this;
+ * }
+ * </pre>
+ * 
+ * <p>
+ * Add a <code>cloneAsThawed()</code> method following the normal pattern for
+ * <code>clone()</code>, except that <code>frozen=false</code> in the new
+ * clone.
+ * </p>
+ * <p>
+ * Then take the setters (that is, any method that can change the internal state
+ * of the object), and add the following as the first statement:
+ * </p>
+ * 
+ * <pre>
+ * if (isFrozen()) {
+ *      throw new UnsupportedOperationException(&quot;Attempt to modify frozen object&quot;);
+ * }
+ * </pre>
+ * 
+ * <h4><b>Subclassing</b></h4>
+ * <p>
+ * Any subclass of a <code>Freezable</code> will just use its superclass's
+ * flagging field. It must override <code>freeze()</code> and
+ * <code>cloneAsThawed()</code> to call the superclass, but normally does not
+ * override <code>isFrozen()</code>. It must then just pay attention to its
+ * own getters, setters and fields.
+ * </p>
+ * <h4><b>Internal Caches</b></h4>
+ * <p>
+ * Internal caches are cases where the object is logically unmodified, but
+ * internal state of the object changes. For example, there are const C++
+ * functions that cast away the const on the &quot;this&quot; pointer in order
+ * to modify an object cache. These cases are handled by mutexing the internal
+ * cache to ensure thread-safety. For example, suppose that UnicodeSet had an
+ * internal marker to the last code point accessed. In this case, the field is
+ * not externally visible, so the only thing you need to do is to synchronize
+ * the field for thread safety.
+ * </p>
+ * <h4>Unsafe Internal Access</h4>
+ * <p>
+ * Internal fields are called <i>safe</i> if they are either
+ * <code>frozen</code> or immutable (such as String or primitives). If you've
+ * never allowed internal access to these, then you are all done. For example,
+ * converting UnicodeSet to be <code>Freezable</code> is just accomplished
+ * with the above steps. But remember that you <i><b>have</b></i> allowed
+ * access to unsafe internals if you have any code like the following, in a
+ * getter, setter, or constructor:
+ * </p>
+ * 
+ * <pre>
+ * Collection getStuff() {
+ *      return stuff;
+ * } // caller could keep reference &amp; modify
+ * 
+ * void setStuff(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference &amp; modify
+ * 
+ * MyClass(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference &amp; modify
+ * </pre>
+ * 
+ * <p>
+ * These also illustrated in the code sample in <b>Background</b> above.
+ * </p>
+ * <p>
+ * To deal with unsafe internals, the simplest course of action is to do the
+ * work in the <code>
+ freeze()</code> function. Just make all of your internal
+ * fields frozen, and set the frozen flag. Any subsequent getter/setter will
+ * work properly. Here is an example:
+ * </p>
+ * 
+ * <pre>
+ * public Object freeze() {
+ *      if (!frozen) {
+ *              foo.freeze();
+ *              frozen = true;
+ *      }
+ *      return this;
+ * }
+ * </pre>
+ * 
+ * <p>
+ * If the field is a <code>Collection</code> or <code>Map</code>, then to
+ * make it frozen you have two choices. If you have never allowed access to the
+ * collection from outside your object, then just wrap it to prevent future
+ * modification.
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country);
+ * </pre>
+ * 
+ * <p>
+ * If you have <i>ever</i> allowed access, then do a <code>clone()</code>
+ * before wrapping it.
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country.clone());
+ * </pre>
+ * 
+ * <p>
+ * If a collection <i>(or any other container of objects)</i> itself can
+ * contain mutable objects, then for a safe clone you need to recurse through it
+ * to make the entire collection immutable. The recursing code should pick the
+ * most specific collection available, to avoid the necessity of later
+ * downcasing.
+ * </p>
+ * <blockquote>
+ * <p>
+ * <b>Note: </b>An annoying flaw in Java is that the generic collections, like
+ * <code>Map</code> or <code>Set</code>, don't have a <code>clone()</code>
+ * operation. When you don't know the type of the collection, the simplest
+ * course is to just create a new collection:
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(new HashMap(zone_to_country));
+ * </pre>
+ * 
+ * </blockquote>
+ * @stable ICU 3.8
+ */
+public interface Freezable extends Cloneable {
+    /**
+     * Determines whether the object has been locked or not.
+     * @stable ICU 3.8
+     */
+    public boolean isFrozen();
+
+    /**
+     * Locks the object.
+     * @return the object itself.
+     * @stable ICU 3.8
+     */
+    public Object freeze();
+
+    /**
+     * Provides for the clone operation. Any clone is initially unlocked.
+     * @stable ICU 3.8
+     */
+    public Object cloneAsThawed();
+}
diff --git a/src/com/ibm/icu/util/GlobalizationPreferences.java b/src/com/ibm/icu/util/GlobalizationPreferences.java
new file mode 100644
index 0000000..582f4de
--- /dev/null
+++ b/src/com/ibm/icu/util/GlobalizationPreferences.java
@@ -0,0 +1,1518 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * This convenience class provides a mechanism for bundling together different
+ * globalization preferences. It includes:
+ * <ul>
+ * <li>A list of locales/languages in preference order</li>
+ * <li>A territory</li>
+ * <li>A currency</li>
+ * <li>A timezone</li>
+ * <li>A calendar</li>
+ * <li>A collator (for language-sensitive sorting, searching, and matching).</li>
+ * <li>Explicit overrides for date/time formats, etc.</li>
+ * </ul>
+ * The class will heuristically compute implicit, heuristic values for the above
+ * based on available data if explicit values are not supplied. These implicit
+ * values can be presented to users for confirmation, or replacement if the
+ * values are incorrect.
+ * <p>
+ * To reset any explicit field so that it will get heuristic values, pass in
+ * null. For example, myPreferences.setLocale(null);
+ * <p>
+ * All of the heuristics can be customized by subclasses, by overriding
+ * getTerritory(), guessCollator(), etc.
+ * <p>
+ * The class also supplies display names for languages, scripts, territories,
+ * currencies, timezones, etc. These are computed according to the
+ * locale/language preference list. Thus, if the preference is Breton; French;
+ * English, then the display name for a language will be returned in Breton if
+ * available, otherwise in French if available, otherwise in English.
+ * <p>
+ * The codes used to reference territory, currency, etc. are as defined elsewhere
+ * in ICU, and are taken from CLDR (which reflects RFC 3066bis usage, ISO 4217,
+ * and the TZ Timezone database identifiers).
+ * <p>
+ * <b>This is at a prototype stage, and has not incorporated all the design
+ * changes that we would like yet; further feedback is welcome.</b></p>
+ * Note:
+ * <ul>
+ * <li>to get the display name for the first day of the week, use the calendar +
+ * display names.</li>
+ * <li>to get the work days, ask the calendar (when that is available).</li>
+ * <li>to get papersize / measurement system/bidi-orientation, ask the locale
+ * (when that is available there)</li>
+ * <li>to get the field order in a date, and whether a time is 24hour or not,
+ * ask the DateFormat (when that is available there)</li>
+ * <li>it will support HOST locale when it becomes available (it is a special
+ * locale that will ask the services to use the host platform's values).</li>
+ * </ul>
+ *
+ * @draft ICU 3.6
+ * @provisional This API might change or be removed in a future release.
+ */
+
+//TODO:
+// - Add Holidays
+// - Add convenience to get/take Locale as well as ULocale.
+// - Add Lenient datetime formatting when that is available.
+// - Should this be serializable?
+// - Other utilities?
+
+public class GlobalizationPreferences implements Freezable {
+    
+    /**
+     * Default constructor
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences(){}
+    /**
+     * Number Format type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int 
+        NF_NUMBER = 0,      // NumberFormat.NUMBERSTYLE
+        NF_CURRENCY = 1,    // NumberFormat.CURRENCYSTYLE
+        NF_PERCENT = 2,     // NumberFormat.PERCENTSTYLE
+        NF_SCIENTIFIC = 3,  // NumberFormat.SCIENTIFICSTYLE
+        NF_INTEGER = 4;     // NumberFormat.INTEGERSTYLE
+
+    private static final int NF_LIMIT = NF_INTEGER + 1;
+
+    /**
+     * Date Format type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        DF_FULL = DateFormat.FULL,      // 0
+        DF_LONG = DateFormat.LONG,      // 1
+        DF_MEDIUM = DateFormat.MEDIUM,  // 2
+        DF_SHORT = DateFormat.SHORT,    // 3
+        DF_NONE = 4;
+
+    private static final int DF_LIMIT = DF_NONE + 1;
+
+    /**
+     * For selecting a choice of display names
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        ID_LOCALE = 0,
+        ID_LANGUAGE = 1,
+        ID_SCRIPT = 2,
+        ID_TERRITORY = 3,
+        ID_VARIANT = 4, 
+        ID_KEYWORD = 5,
+        ID_KEYWORD_VALUE = 6,
+        ID_CURRENCY = 7,
+        ID_CURRENCY_SYMBOL = 8,
+        ID_TIMEZONE = 9;
+
+    //private static final int ID_LIMIT = ID_TIMEZONE + 1;
+
+    /**
+     * Break iterator type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        BI_CHARACTER = BreakIterator.KIND_CHARACTER,    // 0
+        BI_WORD = BreakIterator.KIND_WORD,              // 1
+        BI_LINE = BreakIterator.KIND_LINE,              // 2
+        BI_SENTENCE = BreakIterator.KIND_SENTENCE,      // 3
+        BI_TITLE = BreakIterator.KIND_TITLE;            // 4
+
+    private static final int BI_LIMIT = BI_TITLE + 1;
+
+    /**
+     * Sets the language/locale priority list. If other information is
+     * not (yet) available, this is used to to produce a default value
+     * for the appropriate territory, currency, timezone, etc.  The
+     * user should be given the opportunity to correct those defaults
+     * in case they are incorrect.
+     * 
+     * @param inputLocales list of locales in priority order, eg {"be", "fr"} 
+     *     for Breton first, then French if that fails.
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(List inputLocales) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        locales = processLocales(inputLocales);
+        return this;
+    }
+
+    /**
+     * Get a copy of the language/locale priority list
+     * 
+     * @return a copy of the language/locale priority list.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public List getLocales() {
+        List result;
+        if (locales == null) {
+            result = guessLocales();
+        } else {
+            result = new ArrayList(); 
+            result.addAll(locales);
+        }
+        return result;
+    }
+
+    /**
+     * Convenience function for getting the locales in priority order
+     * @param index The index (0..n) of the desired item.
+     * @return desired item. null if index is out of range
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale(int index) {
+        List lcls = locales;
+        if (lcls == null) {
+            lcls = guessLocales();
+        }
+        if (index >= 0 && index < lcls.size()) {
+            return (ULocale)lcls.get(index);
+        }
+        return null;
+    }
+
+    /**
+     * Convenience routine for setting the language/locale priority
+     * list from an array.
+     * 
+     * @see #setLocales(List locales)
+     * @param uLocales list of locales in an array
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(ULocale[] uLocales) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        return setLocales(Arrays.asList(uLocales));
+    }
+
+    /**
+     * Convenience routine for setting the language/locale priority
+     * list from a single locale/language.
+     * 
+     * @see #setLocales(List locales)
+     * @param uLocale single locale
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocale(ULocale uLocale) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        return setLocales(new ULocale[]{uLocale});
+    }
+
+    /**
+     * Convenience routine for setting the locale priority list from
+     * an Accept-Language string.
+     * @see #setLocales(List locales)
+     * @param acceptLanguageString Accept-Language list, as defined by 
+     *     Section 14.4 of the RFC 2616 (HTTP 1.1)
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(String acceptLanguageString) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        ULocale[] acceptLocales = null;
+        try {
+            acceptLocales = ULocale.parseAcceptLanguage(acceptLanguageString, true);
+        } catch (ParseException pe) {
+            //TODO: revisit after 3.8
+            throw new IllegalArgumentException("Invalid Accept-Language string");
+        }
+        return setLocales(acceptLocales);
+    }
+
+    /**
+     * Convenience function to get a ResourceBundle instance using
+     * the specified base name based on the language/locale priority list
+     * stored in this object.
+     *  
+     * @param baseName the base name of the resource bundle, a fully qualified
+     * class name
+     * @return a resource bundle for the given base name and locale based on the
+     * language/locale priority list stored in this object
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ResourceBundle getResourceBundle(String baseName) {
+        return getResourceBundle(baseName, null);
+    }
+
+    /**
+     * Convenience function to get a ResourceBundle instance using
+     * the specified base name and class loader based on the language/locale
+     * priority list stored in this object.
+     *  
+     * @param baseName the base name of the resource bundle, a fully qualified
+     * class name
+     * @param loader the class object from which to load the resource bundle
+     * @return a resource bundle for the given base name and locale based on the
+     * language/locale priority list stored in this object
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ResourceBundle getResourceBundle(String baseName, ClassLoader loader) {
+        UResourceBundle urb = null;
+        UResourceBundle candidate = null;
+        String actualLocaleName = null;
+        List fallbacks = getLocales();
+        for (int i = 0; i < fallbacks.size(); i++) {
+            String localeName = ((ULocale)fallbacks.get(i)).toString();
+            if (actualLocaleName != null && localeName.equals(actualLocaleName)) {
+                // Actual locale name in the previous round may exactly matches
+                // with the next fallback locale
+                urb = candidate;
+                break;
+            }
+            try {
+                if (loader == null) {
+                    candidate = UResourceBundle.getBundleInstance(baseName, localeName);
+                }
+                else {
+                    candidate = UResourceBundle.getBundleInstance(baseName, localeName, loader);
+                }
+                if (candidate != null) {
+                    actualLocaleName = candidate.getULocale().getName();
+                    if (actualLocaleName.equals(localeName)) {
+                        urb = candidate;
+                        break;
+                    }
+                    if (urb == null) {
+                        // Preserve the available bundle as the last resort
+                        urb = candidate;
+                    }
+                }
+            } catch (MissingResourceException mre) {
+                actualLocaleName = null;
+                continue;
+            }
+        }
+        if (urb == null) {
+            throw new MissingResourceException("Can't find bundle for base name "
+                    + baseName, baseName, "");
+        }
+        return urb;
+    }
+    
+    /**
+     * Sets the territory, which is a valid territory according to for
+     * RFC 3066 (or successor).  If not otherwise set, default
+     * currency and timezone values will be set from this.  The user
+     * should be given the opportunity to correct those defaults in
+     * case they are incorrect.
+     * 
+     * @param territory code
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setTerritory(String territory) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.territory = territory; // immutable, so don't need to clone
+        return this;
+    }
+
+    /**
+     * Gets the territory setting. If it wasn't explicitly set, it is
+     * computed from the general locale setting.
+     * 
+     * @return territory code, explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getTerritory() {
+        if (territory == null) {
+            return guessTerritory();
+        }
+        return territory; // immutable, so don't need to clone
+    }
+
+    /**
+     * Sets the currency code. If this has not been set, uses default for territory.
+     * 
+     * @param currency Valid ISO 4217 currency code.
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCurrency(Currency currency) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.currency = currency; // immutable, so don't need to clone
+        return this;
+    }
+
+    /**
+     * Get a copy of the currency computed according to the settings.
+     * 
+     * @return currency code, explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Currency getCurrency() {
+        if (currency == null) {
+            return guessCurrency();
+        }
+        return currency; // immutable, so don't have to clone
+    }
+
+    /**
+     * Sets the calendar. If this has not been set, uses default for territory.
+     * 
+     * @param calendar arbitrary calendar
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCalendar(Calendar calendar) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.calendar = (Calendar) calendar.clone(); // clone for safety
+        return this;
+    }
+
+    /**
+     * Get a copy of the calendar according to the settings. 
+     * 
+     * @return calendar explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Calendar getCalendar() {
+        if (calendar == null) {
+            return guessCalendar();
+        }
+        Calendar temp = (Calendar) calendar.clone(); // clone for safety
+        temp.setTimeZone(getTimeZone());
+        temp.setTimeInMillis(System.currentTimeMillis());
+        return temp;
+    }
+
+    /**
+     * Sets the timezone ID.  If this has not been set, uses default for territory.
+     * 
+     * @param timezone a valid TZID (see UTS#35).
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setTimeZone(TimeZone timezone) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.timezone = (TimeZone) timezone.clone(); // clone for safety;
+        return this;
+    }
+
+    /**
+     * Get the timezone. It was either explicitly set, or is
+     * heuristically computed from other settings.
+     * 
+     * @return timezone, either implicitly or explicitly set
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeZone getTimeZone() {
+        if (timezone == null) {
+            return guessTimeZone();
+        }
+        return (TimeZone) timezone.clone(); // clone for safety
+    }
+
+    /**
+     * Get a copy of the collator according to the settings. 
+     * 
+     * @return collator explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Collator getCollator() {
+        if (collator == null) {
+            return guessCollator();
+        }
+        try {
+            return (Collator) collator.clone();  // clone for safety
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException("Error in cloning collator");
+        }
+    }
+
+    /**
+     * Explicitly set the collator for this object.
+     * @param collator
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCollator(Collator collator) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        try {
+            this.collator = (Collator) collator.clone(); // clone for safety         
+        } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException("Error in cloning collator");
+        }
+        return this;
+    }
+
+    /**
+     * Get a copy of the break iterator for the specified type according to the
+     * settings.
+     * 
+     * @param type
+     *          break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
+     * @return break iterator explicit or implicit
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BreakIterator getBreakIterator(int type) {
+        if (type < BI_CHARACTER || type >= BI_LIMIT) {
+            throw new IllegalArgumentException("Illegal break iterator type");
+        }
+        if (breakIterators == null || breakIterators[type] == null) {
+            return guessBreakIterator(type);
+        }
+        return (BreakIterator) breakIterators[type].clone(); // clone for safety
+    }
+
+    /**
+     * Explicitly set the break iterator for this object.
+     * 
+     * @param type
+     *          break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
+     * @param iterator a break iterator
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setBreakIterator(int type, BreakIterator iterator) {
+        if (type < BI_CHARACTER || type >= BI_LIMIT) {
+            throw new IllegalArgumentException("Illegal break iterator type");
+        }
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (breakIterators == null)
+            breakIterators = new BreakIterator[BI_LIMIT];
+        breakIterators[type] = (BreakIterator) iterator.clone(); // clone for safety
+        return this;
+    }
+
+    /**
+     * Get the display name for an ID: language, script, territory, currency, timezone...
+     * Uses the language priority list to do so.
+     * 
+     * @param id language code, script code, ...
+     * @param type specifies the type of the ID: ID_LANGUAGE, etc.
+     * @return the display name
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(String id, int type) {
+        String result = id;
+        for (Iterator it = getLocales().iterator(); it.hasNext();) {
+            ULocale locale = (ULocale) it.next();
+            if (!isAvailableLocale(locale, TYPE_GENERIC)) {
+                continue;
+            }
+            switch (type) {
+            case ID_LOCALE:
+                result = ULocale.getDisplayName(id, locale); 
+                break;
+            case ID_LANGUAGE:
+                result = ULocale.getDisplayLanguage(id, locale); 
+                break;
+            case ID_SCRIPT:
+                result = ULocale.getDisplayScript("und-" + id, locale); 
+                break;
+            case ID_TERRITORY:
+                result = ULocale.getDisplayCountry("und-" + id, locale); 
+                break;
+            case ID_VARIANT:
+                // TODO fix variant parsing
+                result = ULocale.getDisplayVariant("und-QQ-" + id, locale); 
+                break;
+            case ID_KEYWORD:
+                result = ULocale.getDisplayKeyword(id, locale); 
+                break;
+            case ID_KEYWORD_VALUE:
+                String[] parts = new String[2];
+                Utility.split(id,'=',parts);
+                result = ULocale.getDisplayKeywordValue("und@"+id, parts[0], locale);
+                // TODO fix to tell when successful
+                if (result.equals(parts[1])) {
+                    continue;
+                }
+                break;
+            case ID_CURRENCY_SYMBOL:
+            case ID_CURRENCY:
+                Currency temp = new Currency(id);
+                result =temp.getName(locale, type==ID_CURRENCY 
+                                     ? Currency.LONG_NAME 
+                                     : Currency.SYMBOL_NAME, new boolean[1]);
+                // TODO: have method that doesn't take parameter. Add
+                // function to determine whether string is choice
+                // format.  
+                // TODO: have method that doesn't require us
+                // to create a currency
+                break;
+            case ID_TIMEZONE:
+                SimpleDateFormat dtf = new SimpleDateFormat("vvvv",locale);
+                dtf.setTimeZone(TimeZone.getTimeZone(id));
+                result = dtf.format(new Date());
+                // TODO, have method that doesn't require us to create a timezone
+                // fix other hacks
+                // hack for couldn't match
+                
+                boolean isBadStr = false;
+                // Matcher badTimeZone = Pattern.compile("[A-Z]{2}|.*\\s\\([A-Z]{2}\\)").matcher("");
+                // badtzstr = badTimeZone.reset(result).matches();
+                String teststr = result;
+                int sidx = result.indexOf('(');
+                int eidx = result.indexOf(')');
+                if (sidx != -1 && eidx != -1 && (eidx - sidx) == 3) {
+                    teststr = result.substring(sidx+1, eidx);
+                }
+                if (teststr.length() == 2) {
+                    isBadStr = true;
+                    for (int i = 0; i < 2; i++) {
+                        char c = teststr.charAt(i);
+                        if (c < 'A' || 'Z' < c) {
+                            isBadStr = false;
+                            break;
+                        }
+                    }
+                }
+                if (isBadStr) {
+                    continue;
+                }
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown type: " + type);
+            }
+
+            // TODO need better way of seeing if we fell back to root!!
+            // This will not work at all for lots of stuff
+            if (!id.equals(result)) {
+                return result;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Set an explicit date format. Overrides the locale priority list for
+     * a particular combination of dateStyle and timeStyle. DF_NONE should
+     * be used if for the style, where only the date or time format individually
+     * is being set.
+     * 
+     * @param dateStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param timeStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param format The date format
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setDateFormat(int dateStyle, int timeStyle, DateFormat format) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (dateFormats == null) {
+            dateFormats = new DateFormat[DF_LIMIT][DF_LIMIT];
+        }
+        dateFormats[dateStyle][timeStyle] = (DateFormat) format.clone(); // for safety
+        return this;
+    }
+
+    /**
+     * Gets a date format according to the current settings. If there
+     * is an explicit (non-null) date/time format set, a copy of that
+     * is returned. Otherwise, the language priority list is used.
+     * DF_NONE should be used for the style, where only the date or
+     * time format individually is being gotten.
+     * 
+     * @param dateStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param timeStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @return a DateFormat, according to the above description
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateFormat getDateFormat(int dateStyle, int timeStyle) {
+        if (dateStyle == DF_NONE && timeStyle == DF_NONE
+                || dateStyle < 0 || dateStyle >= DF_LIMIT
+                || timeStyle < 0 || timeStyle >= DF_LIMIT) {
+            throw new IllegalArgumentException("Illegal date format style arguments");
+        }
+        DateFormat result = null;
+        if (dateFormats != null) {
+            result = dateFormats[dateStyle][timeStyle];
+        }
+        if (result != null) {
+            result = (DateFormat) result.clone(); // clone for safety
+            // Not sure overriding configuration is what we really want...
+            result.setTimeZone(getTimeZone());
+        } else {
+            result = guessDateFormat(dateStyle, timeStyle);
+        }
+        return result;
+    }
+
+    /**
+     * Gets a number format according to the current settings.  If
+     * there is an explicit (non-null) number format set, a copy of
+     * that is returned.  Otherwise, the language priority list is
+     * used.
+     * 
+     * @param style NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public NumberFormat getNumberFormat(int style) {
+        if (style < 0 || style >= NF_LIMIT) {
+            throw new IllegalArgumentException("Illegal number format type");
+        }
+        NumberFormat result = null;
+        if (numberFormats != null) {
+            result = numberFormats[style];
+        }
+        if (result != null) {
+            result = (NumberFormat) result.clone(); // clone for safety (later optimize)
+        } else {
+            result = guessNumberFormat(style);
+        }
+        return result;
+    }
+
+    /**
+     * Sets a number format explicitly. Overrides the general locale settings.
+     * 
+     * @param style NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
+     * @param format The number format
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setNumberFormat(int style, NumberFormat format) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (numberFormats == null) {
+            numberFormats = new NumberFormat[NF_LIMIT];
+        }
+        numberFormats[style] = (NumberFormat) format.clone(); // for safety
+        return this;
+    }
+
+    /**
+     * Restore the object to the initial state.
+     * 
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences reset() {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        locales = null;
+        territory = null;
+        calendar = null;
+        collator = null;
+        breakIterators = null;
+        timezone = null;
+        currency = null;
+        dateFormats = null;
+        numberFormats = null;
+        implicitLocales = null;
+        return this;
+    }
+
+    /**
+     * Process a language/locale priority list specified via <code>setLocales</code>.
+     * The input locale list may be expanded or re-ordered to represent the prioritized
+     * language/locale order actually used by this object by the algorithm explained
+     * below.
+     * <br>
+     * <br>
+     * <b>Step 1</b>: Move later occurrence of more specific locale before earlier
+     * occurrence of less specific locale.
+     * <br>
+     * Before: en, fr_FR, en_US, en_GB
+     * <br>
+     * After: en_US, en_GB, en, fr_FR
+     * <br>
+     * <br>
+     * <b>Step 2</b>: Append a fallback locale to each locale.
+     * <br>
+     * Before: en_US, en_GB, en, fr_FR
+     * <br>
+     * After: en_US, en, en_GB, en, en, fr_FR, fr
+     * <br>
+     * <br>
+     * <b>Step 3</b>: Remove earlier occurrence of duplicated locale entries.
+     * <br>
+     * Before: en_US, en, en_GB, en, en, fr_FR, fr
+     * <br>
+     * After: en_US, en_GB, en, fr_FR, fr
+     * <br> 
+     * <br>
+     * The final locale list is used to produce a default value for the appropriate territory,
+     * currency, timezone, etc.  The list also represents the lookup order used in
+     * <code>getResourceBundle</code> for this object.  A subclass may override this method
+     * to customize the algorithm used for populating the locale list.
+     * 
+     * @param inputLocales The list of input locales
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected List processLocales(List inputLocales) {
+        List result = new ArrayList();
+        /*
+         * Step 1: Relocate later occurrence of more specific locale
+         * before earlier occurrence of less specific locale.
+         *
+         * Example:
+         *   Before - en_US, fr_FR, zh, en_US_Boston, zh_TW, zh_Hant, fr_CA
+         *   After  - en_US_Boston, en_US, fr_FR, zh_TW, zh_Hant, zh, fr_CA
+         */
+        for (int i = 0; i < inputLocales.size(); i++) {
+            ULocale uloc = (ULocale)inputLocales.get(i);
+
+            String language = uloc.getLanguage();
+            String script = uloc.getScript();
+            String country = uloc.getCountry();
+            String variant = uloc.getVariant();
+
+            boolean bInserted = false;
+            for (int j = 0; j < result.size(); j++) {
+                // Check if this locale is more specific
+                // than existing locale entries already inserted
+                // in the destination list
+                ULocale u = (ULocale)result.get(j);
+                if (!u.getLanguage().equals(language)) {
+                    continue;
+                }
+                String s = u.getScript();
+                String c = u.getCountry();
+                String v = u.getVariant();
+                if (!s.equals(script)) {
+                    if (s.length() == 0 && c.length() == 0 && v.length() == 0) {
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    } else if (s.length() == 0 && c.equals(country)) {
+                        // We want to see zh_Hant_HK before zh_HK
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;                      
+                    } else if (script.length() == 0 && country.length() > 0 && c.length() == 0) {
+                        // We want to see zh_HK before zh_Hant
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    }
+                    continue;
+                }
+                if (!c.equals(country)) {
+                    if (c.length() == 0 && v.length() == 0) {
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    }
+                }
+                if (!v.equals(variant) && v.length() == 0) {
+                    result.add(j, uloc);
+                    bInserted = true;
+                    break;
+                }
+            }
+            if (!bInserted) {
+                // Add this locale at the end of the list
+                result.add(uloc);
+            }
+        }
+
+        // TODO: Locale aliases might be resolved here
+        // For example, zh_Hant_TW = zh_TW
+
+        /*
+         * Step 2: Append fallback locales for each entry
+         *
+         * Example:
+         *   Before - en_US_Boston, en_US, fr_FR, zh_TW, zh_Hant, zh, fr_CA
+         *   After  - en_US_Boston, en_US, en, en_US, en, fr_FR, fr,
+         *            zh_TW, zn, zh_Hant, zh, zh, fr_CA, fr
+         */
+        int index = 0;
+        while (index < result.size()) {
+            ULocale uloc = (ULocale)result.get(index);
+            while (true) {
+                uloc = uloc.getFallback();
+                if (uloc.getLanguage().length() == 0) {
+                    break;
+                }
+                index++;
+                result.add(index, uloc);
+            }
+            index++;
+        }
+
+        /*
+         * Step 3: Remove earlier occurrence of duplicated locales
+         * 
+         * Example:
+         *   Before - en_US_Boston, en_US, en, en_US, en, fr_FR, fr,
+         *            zh_TW, zn, zh_Hant, zh, zh, fr_CA, fr
+         *   After  - en_US_Boston, en_US, en, fr_FR, zh_TW, zh_Hant,
+         *            zh, fr_CA, fr
+         */
+        index = 0;
+        while (index < result.size() - 1) {
+            ULocale uloc = (ULocale)result.get(index);
+            boolean bRemoved = false;
+            for (int i = index + 1; i < result.size(); i++) {
+                if (uloc.equals((ULocale)result.get(i))) {
+                    // Remove earlier one
+                    result.remove(index);
+                    bRemoved = true;
+                    break;
+                }
+            }
+            if (!bRemoved) {
+                index++;
+            }
+        }
+        return result;
+    }
+
+    
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param dateStyle
+     * @param timeStyle
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat guessDateFormat(int dateStyle, int timeStyle) {
+        DateFormat result;
+        ULocale dfLocale = getAvailableLocale(TYPE_DATEFORMAT);
+        if (dfLocale == null) {
+            dfLocale = ULocale.ROOT;
+        }
+        if (timeStyle == DF_NONE) {
+            result = DateFormat.getDateInstance(getCalendar(), dateStyle, dfLocale);
+        } else if (dateStyle == DF_NONE) {
+            result = DateFormat.getTimeInstance(getCalendar(), timeStyle, dfLocale);
+        } else {
+            result = DateFormat.getDateTimeInstance(getCalendar(), dateStyle, timeStyle, dfLocale);
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param style
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected NumberFormat guessNumberFormat(int style) {
+        NumberFormat result;
+        ULocale nfLocale = getAvailableLocale(TYPE_NUMBERFORMAT);
+        if (nfLocale == null) {
+            nfLocale = ULocale.ROOT;
+        }
+        switch (style) {
+        case NF_NUMBER:
+            result = NumberFormat.getInstance(nfLocale);
+            break;
+        case NF_SCIENTIFIC:
+            result = NumberFormat.getScientificInstance(nfLocale);
+            break;
+        case NF_INTEGER:
+            result = NumberFormat.getIntegerInstance(nfLocale);
+            break;
+        case NF_PERCENT:
+            result = NumberFormat.getPercentInstance(nfLocale);
+            break;
+        case NF_CURRENCY:
+            result = NumberFormat.getCurrencyInstance(nfLocale);
+            result.setCurrency(getCurrency());
+            break;
+        default:
+            throw new IllegalArgumentException("Unknown number format style");
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected String guessTerritory() {
+        String result;
+        // pass through locales to see if there is a territory.
+        for (Iterator it = getLocales().iterator(); it.hasNext();) {
+            ULocale locale = (ULocale)it.next();
+            result = locale.getCountry();
+            if (result.length() != 0) {
+                return result;
+            }
+        }
+        // if not, guess from the first language tag, or maybe from
+        // intersection of languages, eg nl + fr => BE
+        // TODO: fix using real data
+        // for now, just use fixed values
+        ULocale firstLocale = getLocale(0);
+        String language = firstLocale.getLanguage();
+        String script = firstLocale.getScript();
+        result = null;
+        if (script.length() != 0) {
+            result = (String) language_territory_hack_map.get(language + "_" + script);
+        }
+        if (result == null) {
+            result = (String) language_territory_hack_map.get(language);
+        }
+        if (result == null) {
+            result = "US"; // need *some* default
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Currency guessCurrency() {
+        return Currency.getInstance(new ULocale("und-" + getTerritory()));
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected List guessLocales() {
+        if (implicitLocales == null) {
+            List result = new ArrayList(1);
+            result.add(ULocale.getDefault());
+            implicitLocales = processLocales(result);
+        }
+        return implicitLocales;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Collator guessCollator() {
+        ULocale collLocale = getAvailableLocale(TYPE_COLLATOR);
+        if (collLocale == null) {
+            collLocale = ULocale.ROOT;
+        }
+        return Collator.getInstance(collLocale);
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected BreakIterator guessBreakIterator(int type) {
+        BreakIterator bitr = null;
+        ULocale brkLocale = getAvailableLocale(TYPE_BREAKITERATOR);
+        if (brkLocale == null) {
+            brkLocale = ULocale.ROOT;
+        }
+        switch (type) {
+        case BI_CHARACTER:
+            bitr = BreakIterator.getCharacterInstance(brkLocale);
+            break;
+        case BI_TITLE:
+            bitr = BreakIterator.getTitleInstance(brkLocale);
+            break;
+        case BI_WORD:
+            bitr = BreakIterator.getWordInstance(brkLocale);
+            break;
+        case BI_LINE:
+            bitr = BreakIterator.getLineInstance(brkLocale);
+            break;
+        case BI_SENTENCE:
+            bitr = BreakIterator.getSentenceInstance(brkLocale);
+            break;
+        default:
+            throw new IllegalArgumentException("Unknown break iterator type");
+        }
+        return bitr;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected TimeZone guessTimeZone() {
+        // TODO fix using real data
+        // for single-zone countries, pick that zone
+        // for others, pick the most populous zone
+        // for now, just use fixed value
+        // NOTE: in a few cases can do better by looking at language. 
+        // Eg haw+US should go to Pacific/Honolulu
+        // fr+CA should go to America/Montreal
+        String timezoneString = (String) territory_tzid_hack_map.get(getTerritory());
+        if (timezoneString == null) {
+            String[] attempt = ZoneMeta.getAvailableIDs(getTerritory());
+            if (attempt.length == 0) {
+                timezoneString = "Etc/GMT"; // gotta do something
+            } else {
+                int i;
+                // this all needs to be fixed to use real data. But for now, do slightly better by skipping cruft
+                for (i = 0; i < attempt.length; ++i) {
+                    if (attempt[i].indexOf("/") >= 0) break;
+                }
+                if (i > attempt.length) i = 0;
+                timezoneString = attempt[i];
+            }
+        }
+        return TimeZone.getTimeZone(timezoneString);
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Calendar guessCalendar() {
+        ULocale calLocale = getAvailableLocale(TYPE_CALENDAR);
+        if (calLocale == null) {
+            calLocale = ULocale.US;
+        }
+        return Calendar.getInstance(getTimeZone(), calLocale);
+    }
+    
+    // PRIVATES
+    
+    private List locales;
+    private String territory;
+    private Currency currency;
+    private TimeZone timezone;
+    private Calendar calendar;
+    private Collator collator;
+    private BreakIterator[] breakIterators;
+    private DateFormat[][] dateFormats;
+    private NumberFormat[] numberFormats;
+    private List implicitLocales;
+    
+    {
+        reset();
+    }
+
+
+    private ULocale getAvailableLocale(int type) {
+        List locs = getLocales();
+        ULocale result = null;
+        for (int i = 0; i < locs.size(); i++) {
+            ULocale l = (ULocale)locs.get(i);
+            if (isAvailableLocale(l, type)) {
+                result = l;
+                break;
+            }
+        }
+        return result;
+    }
+
+    private boolean isAvailableLocale(ULocale loc, int type) {
+        BitSet bits = (BitSet)available_locales.get(loc);
+        if (bits != null && bits.get(type)) {
+            return true;
+        }
+        return false;        
+    }
+    
+    /*
+     * Available locales for service types
+     */
+    private static final HashMap available_locales = new HashMap();
+    private static final int
+        TYPE_GENERIC = 0,
+        TYPE_CALENDAR = 1,
+        TYPE_DATEFORMAT= 2,
+        TYPE_NUMBERFORMAT = 3,
+        TYPE_COLLATOR = 4,
+        TYPE_BREAKITERATOR = 5,
+        TYPE_LIMIT = TYPE_BREAKITERATOR + 1;
+
+    static {
+        BitSet bits;
+        ULocale[] allLocales = ULocale.getAvailableLocales();
+        for (int i = 0; i < allLocales.length; i++) {
+            bits = new BitSet(TYPE_LIMIT);
+            available_locales.put(allLocales[i], bits);
+            bits.set(TYPE_GENERIC);
+        }
+
+        ULocale[] calLocales = Calendar.getAvailableULocales();
+        for (int i = 0; i < calLocales.length; i++) {
+            bits = (BitSet)available_locales.get(calLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_CALENDAR);
+        }
+
+        ULocale[] dateLocales = DateFormat.getAvailableULocales();
+        for (int i = 0; i < dateLocales.length; i++) {
+            bits = (BitSet)available_locales.get(dateLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_DATEFORMAT);
+        }
+
+        ULocale[] numLocales = NumberFormat.getAvailableULocales();
+        for (int i = 0; i < numLocales.length; i++) {
+            bits = (BitSet)available_locales.get(numLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_NUMBERFORMAT);
+        }
+
+        ULocale[] collLocales = Collator.getAvailableULocales();
+        for (int i = 0; i < collLocales.length; i++) {
+            bits = (BitSet)available_locales.get(collLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_COLLATOR);
+        }
+
+        ULocale[] brkLocales = BreakIterator.getAvailableULocales();
+        for (int i = 0; i < brkLocales.length; i++) {
+            bits = (BitSet)available_locales.get(brkLocales[i]);
+            bits.set(TYPE_BREAKITERATOR);
+        }
+    }
+
+    /** WARNING: All of this data is temporary, until we start importing from CLDR!!!
+     * 
+     */
+    private static final Map language_territory_hack_map = new HashMap();
+    private static final String[][] language_territory_hack = {
+        {"af", "ZA"},
+        {"am", "ET"},
+        {"ar", "SA"},
+        {"as", "IN"},
+        {"ay", "PE"},
+        {"az", "AZ"},
+        {"bal", "PK"},
+        {"be", "BY"},
+        {"bg", "BG"},
+        {"bn", "IN"},
+        {"bs", "BA"},
+        {"ca", "ES"},
+        {"ch", "MP"},
+        {"cpe", "SL"},
+        {"cs", "CZ"},
+        {"cy", "GB"},
+        {"da", "DK"},
+        {"de", "DE"},
+        {"dv", "MV"},
+        {"dz", "BT"},
+        {"el", "GR"},
+        {"en", "US"},
+        {"es", "ES"},
+        {"et", "EE"},
+        {"eu", "ES"},
+        {"fa", "IR"},
+        {"fi", "FI"},
+        {"fil", "PH"},
+        {"fj", "FJ"},
+        {"fo", "FO"},
+        {"fr", "FR"},
+        {"ga", "IE"},
+        {"gd", "GB"},
+        {"gl", "ES"},
+        {"gn", "PY"},
+        {"gu", "IN"},
+        {"gv", "GB"},
+        {"ha", "NG"},
+        {"he", "IL"},
+        {"hi", "IN"},
+        {"ho", "PG"},
+        {"hr", "HR"},
+        {"ht", "HT"},
+        {"hu", "HU"},
+        {"hy", "AM"},
+        {"id", "ID"},
+        {"is", "IS"},
+        {"it", "IT"},
+        {"ja", "JP"},
+        {"ka", "GE"},
+        {"kk", "KZ"},
+        {"kl", "GL"},
+        {"km", "KH"},
+        {"kn", "IN"},
+        {"ko", "KR"},
+        {"kok", "IN"},
+        {"ks", "IN"},
+        {"ku", "TR"},
+        {"ky", "KG"},
+        {"la", "VA"},
+        {"lb", "LU"},
+        {"ln", "CG"},
+        {"lo", "LA"},
+        {"lt", "LT"},
+        {"lv", "LV"},
+        {"mai", "IN"},
+        {"men", "GN"},
+        {"mg", "MG"},
+        {"mh", "MH"},
+        {"mk", "MK"},
+        {"ml", "IN"},
+        {"mn", "MN"},
+        {"mni", "IN"},
+        {"mo", "MD"},
+        {"mr", "IN"},
+        {"ms", "MY"},
+        {"mt", "MT"},
+        {"my", "MM"},
+        {"na", "NR"},
+        {"nb", "NO"},
+        {"nd", "ZA"},
+        {"ne", "NP"},
+        {"niu", "NU"},
+        {"nl", "NL"},
+        {"nn", "NO"},
+        {"no", "NO"},
+        {"nr", "ZA"},
+        {"nso", "ZA"},
+        {"ny", "MW"},
+        {"om", "KE"},
+        {"or", "IN"},
+        {"pa", "IN"},
+        {"pau", "PW"},
+        {"pl", "PL"},
+        {"ps", "PK"},
+        {"pt", "BR"},
+        {"qu", "PE"},
+        {"rn", "BI"},
+        {"ro", "RO"},
+        {"ru", "RU"},
+        {"rw", "RW"},
+        {"sd", "IN"},
+        {"sg", "CF"},
+        {"si", "LK"},
+        {"sk", "SK"},
+        {"sl", "SI"},
+        {"sm", "WS"},
+        {"so", "DJ"},
+        {"sq", "CS"},
+        {"sr", "CS"},
+        {"ss", "ZA"},
+        {"st", "ZA"},
+        {"sv", "SE"},
+        {"sw", "KE"},
+        {"ta", "IN"},
+        {"te", "IN"},
+        {"tem", "SL"},
+        {"tet", "TL"},
+        {"th", "TH"},
+        {"ti", "ET"},
+        {"tg", "TJ"},
+        {"tk", "TM"},
+        {"tkl", "TK"},
+        {"tvl", "TV"},
+        {"tl", "PH"},
+        {"tn", "ZA"},
+        {"to", "TO"},
+        {"tpi", "PG"},
+        {"tr", "TR"},
+        {"ts", "ZA"},
+        {"uk", "UA"},
+        {"ur", "IN"},
+        {"uz", "UZ"},
+        {"ve", "ZA"},
+        {"vi", "VN"},
+        {"wo", "SN"},
+        {"xh", "ZA"},
+        {"zh", "CN"},
+        {"zh_Hant", "TW"},
+        {"zu", "ZA"},
+        {"aa", "ET"},
+        {"byn", "ER"},
+        {"eo", "DE"},
+        {"gez", "ET"},
+        {"haw", "US"},
+        {"iu", "CA"},
+        {"kw", "GB"},
+        {"sa", "IN"},
+        {"sh", "HR"},
+        {"sid", "ET"},
+        {"syr", "SY"},
+        {"tig", "ER"},
+        {"tt", "RU"},
+        {"wal", "ET"},  };
+    static {
+        for (int i = 0; i < language_territory_hack.length; ++i) {
+            language_territory_hack_map.put(language_territory_hack[i][0],language_territory_hack[i][1]);
+        }
+    }
+
+    static final Map territory_tzid_hack_map = new HashMap();
+    static final String[][] territory_tzid_hack = {
+        {"AQ", "Antarctica/McMurdo"},
+        {"AR", "America/Buenos_Aires"},
+        {"AU", "Australia/Sydney"},
+        {"BR", "America/Sao_Paulo"},
+        {"CA", "America/Toronto"},
+        {"CD", "Africa/Kinshasa"},
+        {"CL", "America/Santiago"},
+        {"CN", "Asia/Shanghai"},
+        {"EC", "America/Guayaquil"},
+        {"ES", "Europe/Madrid"},
+        {"GB", "Europe/London"},
+        {"GL", "America/Godthab"},
+        {"ID", "Asia/Jakarta"},
+        {"ML", "Africa/Bamako"},
+        {"MX", "America/Mexico_City"},
+        {"MY", "Asia/Kuala_Lumpur"},
+        {"NZ", "Pacific/Auckland"},
+        {"PT", "Europe/Lisbon"},
+        {"RU", "Europe/Moscow"},
+        {"UA", "Europe/Kiev"},
+        {"US", "America/New_York"},
+        {"UZ", "Asia/Tashkent"},
+        {"PF", "Pacific/Tahiti"},
+        {"FM", "Pacific/Kosrae"},
+        {"KI", "Pacific/Tarawa"},
+        {"KZ", "Asia/Almaty"},
+        {"MH", "Pacific/Majuro"},
+        {"MN", "Asia/Ulaanbaatar"},
+        {"SJ", "Arctic/Longyearbyen"},
+        {"UM", "Pacific/Midway"},   
+    };
+    static {
+        for (int i = 0; i < territory_tzid_hack.length; ++i) {
+            territory_tzid_hack_map.put(territory_tzid_hack[i][0],territory_tzid_hack[i][1]);
+        }
+    }
+
+    // Freezable implementation
+    
+    private boolean frozen;
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object cloneAsThawed() {
+        try {
+            GlobalizationPreferences result = (GlobalizationPreferences) clone();
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            // will always work
+            return null;
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/util/GregorianCalendar.java b/src/com/ibm/icu/util/GregorianCalendar.java
new file mode 100644
index 0000000..4e5edc1
--- /dev/null
+++ b/src/com/ibm/icu/util/GregorianCalendar.java
@@ -0,0 +1,908 @@
+/*
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>GregorianCalendar</code> is a concrete subclass of
+ * {@link Calendar}
+ * and provides the standard calendar used by most of the world.
+ *
+ * <p>
+ * The standard (Gregorian) calendar has 2 eras, BC and AD.
+ *
+ * <p>
+ * This implementation handles a single discontinuity, which corresponds by
+ * default to the date the Gregorian calendar was instituted (October 15, 1582
+ * in some countries, later in others).  The cutover date may be changed by the
+ * caller by calling <code>setGregorianChange()</code>.
+ *
+ * <p>
+ * Historically, in those countries which adopted the Gregorian calendar first,
+ * October 4, 1582 was thus followed by October 15, 1582. This calendar models
+ * this correctly.  Before the Gregorian cutover, <code>GregorianCalendar</code>
+ * implements the Julian calendar.  The only difference between the Gregorian
+ * and the Julian calendar is the leap year rule. The Julian calendar specifies
+ * leap years every four years, whereas the Gregorian calendar omits century
+ * years which are not divisible by 400.
+ *
+ * <p>
+ * <code>GregorianCalendar</code> implements <em>proleptic</em> Gregorian and
+ * Julian calendars. That is, dates are computed by extrapolating the current
+ * rules indefinitely far backward and forward in time. As a result,
+ * <code>GregorianCalendar</code> may be used for all years to generate
+ * meaningful and consistent results. However, dates obtained using
+ * <code>GregorianCalendar</code> are historically accurate only from March 1, 4
+ * AD onward, when modern Julian calendar rules were adopted.  Before this date,
+ * leap year rules were applied irregularly, and before 45 BC the Julian
+ * calendar did not even exist.
+ *
+ * <p>
+ * Prior to the institution of the Gregorian calendar, New Year's Day was
+ * March 25. To avoid confusion, this calendar always uses January 1. A manual
+ * adjustment may be made if desired for dates that are prior to the Gregorian
+ * changeover and which fall between January 1 and March 24.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_YEAR</code> field range from 1 to
+ * 53.  Week 1 for a year is the earliest seven day period starting on
+ * <code>getFirstDayOfWeek()</code> that contains at least
+ * <code>getMinimalDaysInFirstWeek()</code> days from that year.  It thus
+ * depends on the values of <code>getMinimalDaysInFirstWeek()</code>,
+ * <code>getFirstDayOfWeek()</code>, and the day of the week of January 1.
+ * Weeks between week 1 of one year and week 1 of the following year are
+ * numbered sequentially from 2 to 52 or 53 (as needed).
+
+ * <p>For example, January 1, 1998 was a Thursday.  If
+ * <code>getFirstDayOfWeek()</code> is <code>MONDAY</code> and
+ * <code>getMinimalDaysInFirstWeek()</code> is 4 (these are the values
+ * reflecting ISO 8601 and many national standards), then week 1 of 1998 starts
+ * on December 29, 1997, and ends on January 4, 1998.  If, however,
+ * <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>, then week 1 of 1998
+ * starts on January 4, 1998, and ends on January 10, 1998; the first three days
+ * of 1998 then are part of week 53 of 1997.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_MONTH</code> field range from 0 or
+ * 1 to 4 or 5.  Week 1 of a month (the days with <code>WEEK_OF_MONTH =
+ * 1</code>) is the earliest set of at least
+ * <code>getMinimalDaysInFirstWeek()</code> contiguous days in that month,
+ * ending on the day before <code>getFirstDayOfWeek()</code>.  Unlike
+ * week 1 of a year, week 1 of a month may be shorter than 7 days, need
+ * not start on <code>getFirstDayOfWeek()</code>, and will not include days of
+ * the previous month.  Days of a month before week 1 have a
+ * <code>WEEK_OF_MONTH</code> of 0.
+ *
+ * <p>For example, if <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>
+ * and <code>getMinimalDaysInFirstWeek()</code> is 4, then the first week of
+ * January 1998 is Sunday, January 4 through Saturday, January 10.  These days
+ * have a <code>WEEK_OF_MONTH</code> of 1.  Thursday, January 1 through
+ * Saturday, January 3 have a <code>WEEK_OF_MONTH</code> of 0.  If
+ * <code>getMinimalDaysInFirstWeek()</code> is changed to 3, then January 1
+ * through January 3 have a <code>WEEK_OF_MONTH</code> of 1.
+ *
+ * <p>
+ * <strong>Example:</strong>
+ * <blockquote>
+ * <pre>
+ * // get the supported ids for GMT-08:00 (Pacific Standard Time)
+ * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+ * // if no ids were returned, something is wrong. get out.
+ * if (ids.length == 0)
+ *     System.exit(0);
+ *
+ *  // begin output
+ * System.out.println("Current Time");
+ *
+ * // create a Pacific Standard Time time zone
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+ *
+ * // set up rules for daylight savings time
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ *
+ * // create a GregorianCalendar with the Pacific Daylight time zone
+ * // and the current date and time
+ * Calendar calendar = new GregorianCalendar(pdt);
+ * Date trialTime = new Date();
+ * calendar.setTime(trialTime);
+ *
+ * // print out a bunch of interesting things
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *                    + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
+ * System.out.println("DST_OFFSET: "
+ *                    + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
+
+ * System.out.println("Current Time, with hour reset to 3");
+ * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
+ * calendar.set(Calendar.HOUR, 3);
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *        + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+ * System.out.println("DST_OFFSET: "
+ *        + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours</pre>
+ * </blockquote>
+ * <p>
+ * GregorianCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=gregorian"</code>.</p>
+
+ * @see          Calendar
+ * @see          TimeZone
+ * @author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class GregorianCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 9199388694351062137L;
+
+    /*
+     * Implementation Notes
+     *
+     * The Julian day number, as used here, is a modified number which has its
+     * onset at midnight, rather than noon.
+     *
+     * The epoch is the number of days or milliseconds from some defined
+     * starting point. The epoch for java.util.Date is used here; that is,
+     * milliseconds from January 1, 1970 (Gregorian), midnight UTC.  Other
+     * epochs which are used are January 1, year 1 (Gregorian), which is day 1
+     * of the Gregorian calendar, and December 30, year 0 (Gregorian), which is
+     * day 1 of the Julian calendar.
+     *
+     * We implement the proleptic Julian and Gregorian calendars.  This means we
+     * implement the modern definition of the calendar even though the
+     * historical usage differs.  For example, if the Gregorian change is set
+     * to new Date(Long.MIN_VALUE), we have a pure Gregorian calendar which
+     * labels dates preceding the invention of the Gregorian calendar in 1582 as
+     * if the calendar existed then.
+     *
+     * Likewise, with the Julian calendar, we assume a consistent 4-year leap
+     * rule, even though the historical pattern of leap years is irregular,
+     * being every 3 years from 45 BC through 9 BC, then every 4 years from 8 AD
+     * onwards, with no leap years in-between.  Thus date computations and
+     * functions such as isLeapYear() are not intended to be historically
+     * accurate.
+     *
+     * Given that milliseconds are a long, day numbers such as Julian day
+     * numbers, Gregorian or Julian calendar days, or epoch days, are also
+     * longs. Years can fit into an int.
+     */
+
+//////////////////
+// Class Variables
+//////////////////
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the period before the common era (before Christ), also known as BCE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     * @stable ICU 2.0
+     */
+    public static final int BC = 0;
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the common era (Anno Domini), also known as CE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     * @stable ICU 2.0
+     */
+    public static final int AD = 1;
+
+    private static final int EPOCH_YEAR = 1970;
+
+    private static final int[][] MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+    
+    /**
+     * Old year limits were least max 292269054, max 292278994.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       1,       1 }, // ERA
+        {        1,        1, 5828963, 5838270 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      52,      53 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      28,      31 }, // DAY_OF_MONTH
+        {        1,        1,     365,     366 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       4,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5838270, -5838270, 5828964, 5838271 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5838269, -5838269, 5828963, 5838270 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+/////////////////////
+// Instance Variables
+/////////////////////
+
+    /**
+     * The point at which the Gregorian calendar rules are used, measured in
+     * milliseconds from the standard epoch.  Default is October 15, 1582
+     * (Gregorian) 00:00:00 UTC or -12219292800000L.  For this value, October 4,
+     * 1582 (Julian) is followed by October 15, 1582 (Gregorian).  This
+     * corresponds to Julian day number 2299161.
+     * @serial
+     */
+    private long gregorianCutover = -12219292800000L;
+
+    /**
+     * Julian day number of the Gregorian cutover.
+     */
+    private transient int cutoverJulianDay = 2299161;
+    
+    /**
+     * The year of the gregorianCutover, with 0 representing
+     * 1 BC, -1 representing 2 BC, etc.
+     */
+    private transient int gregorianCutoverYear = 1582;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     * @stable ICU 2.0
+     */
+    transient protected boolean isGregorian;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     * @stable ICU 2.0
+     */
+    transient protected boolean invertGregorian;
+
+///////////////
+// Constructors
+///////////////
+
+    /**
+     * Constructs a default GregorianCalendar using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the default time zone with the given locale.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public GregorianCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone.
+     * @param aLocale the given locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public GregorianCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date set
+     * in the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     * @param second the value used to set the SECOND time field
+     * in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute, int second) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+/////////////////
+// Public methods
+/////////////////
+
+    /**
+     * Sets the GregorianCalendar change date. This is the point when the switch
+     * from Julian dates to Gregorian dates occurred. Default is October 15,
+     * 1582. Previous to this, dates will be in the Julian calendar.
+     * <p>
+     * To obtain a pure Julian calendar, set the change date to
+     * <code>Date(Long.MAX_VALUE)</code>.  To obtain a pure Gregorian calendar,
+     * set the change date to <code>Date(Long.MIN_VALUE)</code>.
+     *
+     * @param date the given Gregorian cutover date.
+     * @stable ICU 2.0
+     */
+    public void setGregorianChange(Date date) {
+        gregorianCutover = date.getTime();
+
+        // If the cutover has an extreme value, then create a pure
+        // Gregorian or pure Julian calendar by giving the cutover year and
+        // JD extreme values.
+        if (gregorianCutover <= MIN_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MIN_VALUE;
+        } else if (gregorianCutover >= MAX_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MAX_VALUE;
+        } else {
+            // Precompute two internal variables which we use to do the actual
+            // cutover computations.  These are the Julian day of the cutover
+            // and the cutover year.
+            cutoverJulianDay = (int) floorDivide(gregorianCutover, ONE_DAY);
+            
+            // Convert cutover millis to extended year
+            GregorianCalendar cal = new GregorianCalendar(getTimeZone());
+            cal.setTime(date);
+            gregorianCutoverYear = cal.get(EXTENDED_YEAR);
+        }
+    }
+
+    /**
+     * Gets the Gregorian Calendar change date.  This is the point when the
+     * switch from Julian dates to Gregorian dates occurred. Default is
+     * October 15, 1582. Previous to this, dates will be in the Julian
+     * calendar.
+     * @return the Gregorian cutover date for this calendar.
+     * @stable ICU 2.0
+     */
+    public final Date getGregorianChange() {
+        return new Date(gregorianCutover);
+    }
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean isLeapYear(int year) {
+        return year >= gregorianCutoverYear ?
+            ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : // Gregorian
+            (year%4 == 0); // Julian
+    }
+
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  Calendar override.
+     *
+     * @param other the Calendar to be compared with this Calendar   
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return super.isEquivalentTo(other) &&
+            gregorianCutover == ((GregorianCalendar)other).gregorianCutover;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the GregorianCalendar object
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return super.hashCode() ^ (int)gregorianCutover;
+    }
+
+    /**
+     * Roll a field by a signed amount.
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+
+        switch (field) {
+        case WEEK_OF_YEAR:
+            {
+                // Unlike WEEK_OF_MONTH, WEEK_OF_YEAR never shifts the day of the
+                // week.  Also, rolling the week of the year can have seemingly
+                // strange effects simply because the year of the week of year
+                // may be different from the calendar year.  For example, the
+                // date Dec 28, 1997 is the first day of week 1 of 1998 (if
+                // weeks start on Sunday and the minimal days in first week is
+                // <= 3).
+                int woy = get(WEEK_OF_YEAR);
+                // Get the ISO year, which matches the week of year.  This
+                // may be one year before or after the calendar year.
+                int isoYear = get(YEAR_WOY);
+                int isoDoy = internalGet(DAY_OF_YEAR);
+                if (internalGet(MONTH) == Calendar.JANUARY) {
+                    if (woy >= 52) {
+                        isoDoy += handleGetYearLength(isoYear);
+                    }
+                } else {
+                    if (woy == 1) {
+                        isoDoy -= handleGetYearLength(isoYear - 1);
+                    }
+                }
+                woy += amount;
+                // Do fast checks to avoid unnecessary computation:
+                if (woy < 1 || woy > 52) {
+                    // Determine the last week of the ISO year.
+                    // We do this using the standard formula we use
+                    // everywhere in this file.  If we can see that the
+                    // days at the end of the year are going to fall into
+                    // week 1 of the next year, we drop the last week by
+                    // subtracting 7 from the last day of the year.
+                    int lastDoy = handleGetYearLength(isoYear);
+                    int lastRelDow = (lastDoy - isoDoy + internalGet(DAY_OF_WEEK) -
+                                      getFirstDayOfWeek()) % 7;
+                    if (lastRelDow < 0) lastRelDow += 7;
+                    if ((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) lastDoy -= 7;
+                    int lastWoy = weekNumber(lastDoy, lastRelDow + 1);
+                    woy = ((woy + lastWoy - 1) % lastWoy) + 1;
+                }
+                set(WEEK_OF_YEAR, woy);
+                set(YEAR, isoYear); // Why not YEAR_WOY? - Alan 11/6/00
+                return;
+            }
+
+        default:
+            super.roll(field, amount);
+            return;
+        }
+    }
+
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum().
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        return getMinimum(field);
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the current date.
+     * For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual
+     * maximum would be 28; for "Feb 3, 1996" it s 29.  Similarly for a Hebrew calendar,
+     * for some years the actual maximum for MONTH is 12, and for others 13.
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        /* It is a known limitation that the code here (and in getActualMinimum)
+         * won't behave properly at the extreme limits of GregorianCalendar's
+         * representable range (except for the code that handles the YEAR
+         * field).  That's because the ends of the representable range are at
+         * odd spots in the year.  For calendars with the default Gregorian
+         * cutover, these limits are Sun Dec 02 16:47:04 GMT 292269055 BC to Sun
+         * Aug 17 07:12:55 GMT 292278994 AD, somewhat different for non-GMT
+         * zones.  As a result, if the calendar is set to Aug 1 292278994 AD,
+         * the actual maximum of DAY_OF_MONTH is 17, not 30.  If the date is Mar
+         * 31 in that year, the actual maximum month might be Jul, whereas is
+         * the date is Mar 15, the actual maximum might be Aug -- depending on
+         * the precise semantics that are desired.  Similar considerations
+         * affect all fields.  Nonetheless, this effect is sufficiently arcane
+         * that we permit it, rather than complicating the code to handle such
+         * intricacies. - liu 8/20/98
+
+         * UPDATE: No longer true, since we have pulled in the limit values on
+         * the year. - Liu 11/6/00 */
+
+        switch (field) {
+
+        case YEAR:
+            /* The year computation is no different, in principle, from the
+             * others, however, the range of possible maxima is large.  In
+             * addition, the way we know we've exceeded the range is different.
+             * For these reasons, we use the special case code below to handle
+             * this field.
+             *
+             * The actual maxima for YEAR depend on the type of calendar:
+             *
+             *     Gregorian = May 17, 292275056 BC - Aug 17, 292278994 AD
+             *     Julian    = Dec  2, 292269055 BC - Jan  3, 292272993 AD
+             *     Hybrid    = Dec  2, 292269055 BC - Aug 17, 292278994 AD
+             *
+             * We know we've exceeded the maximum when either the month, date,
+             * time, or era changes in response to setting the year.  We don't
+             * check for month, date, and time here because the year and era are
+             * sufficient to detect an invalid year setting.  NOTE: If code is
+             * added to check the month and date in the future for some reason,
+             * Feb 29 must be allowed to shift to Mar 1 when setting the year.
+             */
+            {
+                Calendar cal = (Calendar) clone();
+                cal.setLenient(true);
+                
+                int era = cal.get(ERA);
+                Date d = cal.getTime();
+
+                /* Perform a binary search, with the invariant that lowGood is a
+                 * valid year, and highBad is an out of range year.
+                 */
+                int lowGood = LIMITS[YEAR][1];
+                int highBad = LIMITS[YEAR][2]+1;
+                while ((lowGood + 1) < highBad) {
+                    int y = (lowGood + highBad) / 2;
+                    cal.set(YEAR, y);
+                    if (cal.get(YEAR) == y && cal.get(ERA) == era) {
+                        lowGood = y;
+                    } else {
+                        highBad = y;
+                        cal.setTime(d); // Restore original fields
+                    }
+                }
+                
+                return lowGood;
+            }
+
+        default:
+            return super.getActualMaximum(field);
+        }
+    }
+
+//////////////////////
+// Proposed public API
+//////////////////////
+
+    /**
+     * Return true if the current time for this Calendar is in Daylignt
+     * Savings Time.
+     */
+    boolean inDaylightTime() {
+        if (!getTimeZone().useDaylightTime()) return false;
+        complete(); // Force update of DST_OFFSET field
+        return internalGet(DST_OFFSET) != 0;
+    }
+
+
+/////////////////////
+// Calendar framework
+/////////////////////
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            extendedYear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        return MONTH_COUNT[month][isLeapYear(extendedYear)?1:0];
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetYearLength(int eyear) {
+        return isLeapYear(eyear) ? 366 : 365;
+    }
+
+/////////////////////////////
+// Time => Fields computation
+/////////////////////////////
+
+    /**
+     * Override Calendar to compute several fields specific to the hybrid
+     * Gregorian-Julian calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * @stable ICU 2.0
+     */
+    protected void handleComputeFields(int julianDay) {
+        int eyear, month, dayOfMonth, dayOfYear;
+
+        if (julianDay >= cutoverJulianDay) {
+            month = getGregorianMonth();
+            dayOfMonth = getGregorianDayOfMonth();
+            dayOfYear = getGregorianDayOfYear();
+            eyear = getGregorianYear();
+        } else {
+            // The Julian epoch day (not the same as Julian Day)
+            // is zero on Saturday December 30, 0 (Gregorian).
+            long julianEpochDay = julianDay - (JAN_1_1_JULIAN_DAY - 2);
+            eyear = (int) floorDivide(4*julianEpochDay + 1464, 1461);
+            
+            // Compute the Julian calendar day number for January 1, eyear
+            long january1 = 365*(eyear-1) + floorDivide(eyear-1, 4);
+            dayOfYear = (int)(julianEpochDay - january1); // 0-based
+            
+            // Julian leap years occurred historically every 4 years starting
+            // with 8 AD.  Before 8 AD the spacing is irregular; every 3 years
+            // from 45 BC to 9 BC, and then none until 8 AD.  However, we don't
+            // implement this historical detail; instead, we implement the
+            // computatinally cleaner proleptic calendar, which assumes
+            // consistent 4-year cycles throughout time.
+            boolean isLeap = ((eyear&0x3) == 0); // equiv. to (eyear%4 == 0)
+            
+            // Common Julian/Gregorian calculation
+            int correction = 0;
+            int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+            if (dayOfYear >= march1) {
+                correction = isLeap ? 1 : 2;
+            }
+            month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+            dayOfMonth = dayOfYear - MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+            ++dayOfYear;
+        }
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = AD;
+        if (eyear < 1) {
+            era = BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+
+/////////////////////////////
+// Fields => Time computation
+/////////////////////////////
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, EPOCH_YEAR);
+        } else {
+            // The year defaults to the epoch start, the era to AD
+            int era = internalGet(ERA, AD);
+            if (era == BC) {
+                year = 1 - internalGet(YEAR, 1); // Convert to extended year
+            } else {
+                year = internalGet(YEAR, EPOCH_YEAR);
+            }
+        }
+        return year;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleComputeJulianDay(int bestField) {
+
+        invertGregorian = false;
+
+        int jd = super.handleComputeJulianDay(bestField);
+
+        // The following check handles portions of the cutover year BEFORE the
+        // cutover itself happens.
+        if (isGregorian != (jd >= cutoverJulianDay)) {
+            invertGregorian = true;
+            jd = super.handleComputeJulianDay(bestField);
+        }
+        
+        return jd;
+    }
+
+    /**
+     * Return JD of start of given month/year
+     * @stable ICU 2.0
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = eyear%4 == 0;
+        int y = eyear - 1;
+        int julianDay = 365*y + floorDivide(y, 4) + (JAN_1_1_JULIAN_DAY - 3);
+
+        isGregorian = (eyear >= gregorianCutoverYear);
+        if (invertGregorian) {
+            isGregorian = !isGregorian;
+        }
+        if (isGregorian) {
+            isLeap = isLeap && ((eyear%100 != 0) || (eyear%400 == 0));
+            // Add 2 because Gregorian calendar starts 2 days after
+            // Julian calendar
+            julianDay += floorDivide(y, 400) - floorDivide(y, 100) + 2;
+        }
+
+        // At this point julianDay indicates the day BEFORE the first
+        // day of January 1, <eyear> of either the Julian or Gregorian
+        // calendar.
+
+        if (month != 0) {
+            julianDay += MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "gregorian";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new GregorianCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Gregorian";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/HebrewCalendar.java b/src/com/ibm/icu/util/HebrewCalendar.java
new file mode 100644
index 0000000..3ffe8f8
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewCalendar.java
@@ -0,0 +1,875 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.impl.CalendarCache;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the traditional Hebrew calendar.
+ * This is the civil calendar in Israel and the liturgical calendar
+ * of the Jewish faith worldwide.
+ * <p>
+ * The Hebrew calendar is lunisolar and thus has a number of interesting
+ * properties that distinguish it from the Gregorian.  Months start
+ * on the day of (an arithmetic approximation of) each new moon.  Since the
+ * solar year (approximately 365.24 days) is not an even multiple of
+ * the lunar month (approximately 29.53 days) an extra "leap month" is
+ * inserted in 7 out of every 19 years.  To make matters even more
+ * interesting, the start of a year can be delayed by up to three days
+ * in order to prevent certain holidays from falling on the Sabbath and
+ * to prevent certain illegal year lengths.  Finally, the lengths of certain
+ * months can vary depending on the number of days in the year.
+ * <p>
+ * The leap month is known as "Adar 1" and is inserted between the
+ * months of Shevat and Adar in leap years.  Since the leap month does
+ * not come at the end of the year, calculations involving
+ * month numbers are particularly complex.  Users of this class should
+ * make sure to use the {@link #roll roll} and {@link #add add} methods
+ * rather than attempting to perform date arithmetic by manipulating
+ * the fields directly.
+ * <p>
+ * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset.
+ * However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * If you are interested in more information on the rules behind the Hebrew
+ * calendar, see one of the following references:
+ * <ul>
+ * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>",
+ *      by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91.
+ *
+ * <li>Hebrew Calendar Science and Myths,
+ *      <a href="http://www.geocities.com/Athens/1584/">
+ *      http://www.geocities.com/Athens/1584/</a>
+ *
+ * <li>The Calendar FAQ,
+ *      <a href="http://www.faqs.org/faqs/calendars/faq/">
+ *      http://www.faqs.org/faqs/calendars/faq/</a>
+ * </ul>
+ *
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * HebrewCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=hebrew"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class HebrewCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -1952524560588825816L;
+
+    //-------------------------------------------------------------------------
+    // Tons o' Constants...
+    //-------------------------------------------------------------------------
+
+
+    /** 
+     * Constant for Tishri, the 1st month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TISHRI = 0;
+
+    /**
+     * Constant for Heshvan, the 2nd month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int HESHVAN = 1;
+
+    /**
+     * Constant for Kislev, the 3rd month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int KISLEV = 2;
+
+    /**
+     * Constant for Tevet, the 4th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TEVET = 3;
+
+    /**
+     * Constant for Shevat, the 5th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHEVAT = 4;
+
+    /**
+     * Constant for Adar I, the 6th month of the Hebrew year
+     * (present in leap years only). In non-leap years, the calendar
+     * jumps from Shevat (5th month) to Adar (7th month).
+     * @stable ICU 2.8
+     */
+    public static final int ADAR_1 = 5;
+
+    /** 
+     * Constant for the Adar, the 7th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int ADAR = 6;
+
+    /**
+     * Constant for Nisan, the 8th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int NISAN = 7;
+
+    /**
+     * Constant for Iyar, the 9th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int IYAR = 8;
+
+    /**
+     * Constant for Sivan, the 10th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SIVAN = 9;
+
+    /**
+     * Constant for Tammuz, the 11th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TAMUZ = 10;
+
+    /**
+     * Constant for Av, the 12th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int AV = 11;
+
+    /**
+     * Constant for Elul, the 13th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int ELUL = 12;
+
+    /**
+     * The absolute date, in milliseconds since 1/1/1970 AD, Gregorian,
+     * of the start of the Hebrew calendar.  In order to keep this calendar's
+     * time of day in sync with that of the Gregorian calendar, we use
+     * midnight, rather than sunset the day before.
+     */
+    //private static final long EPOCH_MILLIS = -180799862400000L; // 1/1/1 HY
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       0,       0 }, // ERA
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR
+        {        0,        0,      12,      12 }, // MONTH
+        {        1,        1,      51,      56 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       5,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * The lengths of the Hebrew months.  This is complicated, because there
+     * are three different types of years, or six if you count leap years.
+     * Due to the rules for postponing the start of the year to avoid having
+     * certain holidays fall on the sabbath, the year can end up being three
+     * different lengths, called "deficient", "normal", and "complete".
+     */
+    private static final int MONTH_LENGTH[][] = {
+        // Deficient  Normal     Complete
+        {   30,         30,         30     },           //Tishri
+        {   29,         29,         30     },           //Heshvan
+        {   29,         30,         30     },           //Kislev
+        {   29,         29,         29     },           //Tevet
+        {   30,         30,         30     },           //Shevat
+        {   30,         30,         30     },           //Adar I (leap years only)
+        {   29,         29,         29     },           //Adar
+        {   30,         30,         30     },           //Nisan
+        {   29,         29,         29     },           //Iyar
+        {   30,         30,         30     },           //Sivan
+        {   29,         29,         29     },           //Tammuz
+        {   30,         30,         30     },           //Av
+        {   29,         29,         29     },           //Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a non-leap year
+     * Although this can be calculated from the MONTH_LENGTH table,
+     * keeping it around separately makes some calculations a lot faster
+     */
+    private static final int MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  147,        148,        149  },          // (Adar I placeholder)
+        {  176,        177,        178  },          // Adar
+        {  206,        207,        208  },          // Nisan
+        {  235,        236,        237  },          // Iyar
+        {  265,        266,        267  },          // Sivan
+        {  294,        295,        296  },          // Tammuz
+        {  324,        325,        326  },          // Av
+        {  353,        354,        355  },          // Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a leap year
+     */
+    private static final int LEAP_MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  177,        178,        179  },          // Adar I
+        {  206,        207,        208  },          // Adar II
+        {  236,        237,        238  },          // Nisan
+        {  265,        266,        267  },          // Iyar
+        {  295,        296,        297  },          // Sivan
+        {  324,        325,        326  },          // Tammuz
+        {  354,        355,        356  },          // Av
+        {  383,        384,        385  },          // Elul
+    };
+
+    //-------------------------------------------------------------------------
+    // Data Members...
+    //-------------------------------------------------------------------------
+
+    private static CalendarCache cache = new CalendarCache();
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>HebrewCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The locale for the new calendar.
+     * @stable ICU 3.2
+     */
+    public HebrewCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param locale The locale for the new calendar.
+     * @stable ICU 3.2
+     */
+    public HebrewCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Rolling and adding functions overridden from Calendar
+    //
+    // These methods call through to the default implementation in IBMCalendar
+    // for most of the fields and only handle the unusual ones themselves.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul 5758".
+     * <p>
+     * This method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.
+     * <p>
+     * <b>Note:</b> You should always use {@link #roll roll} and add rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @stable ICU 2.8
+     */
+    public void add(int field, int amount)
+    {
+        switch (field) {
+        case MONTH: 
+            {
+                // We can't just do a set(MONTH, get(MONTH) + amount).  The
+                // reason is ADAR_1.  Suppose amount is +2 and we land in
+                // ADAR_1 -- then we have to bump to ADAR_2 aka ADAR.  But
+                // if amount is -2 and we land in ADAR_1, then we have to
+                // bump the other way -- down to SHEVAT.  - Alan 11/00
+                int month = get(MONTH);
+                int year = get(YEAR);
+                boolean acrossAdar1;
+                if (amount > 0) {
+                    acrossAdar1 = (month < ADAR_1); // started before ADAR_1?
+                    month += amount;
+                    for (;;) {
+                        if (acrossAdar1 && month>=ADAR_1 && !isLeapYear(year)) {
+                            ++month;
+                        }
+                        if (month <= ELUL) {
+                            break;
+                        }
+                        month -= ELUL+1;
+                        ++year;
+                        acrossAdar1 = true;
+                    }
+                } else {
+                    acrossAdar1 = (month > ADAR_1); // started after ADAR_1?
+                    month += amount;
+                    for (;;) {
+                        if (acrossAdar1 && month<=ADAR_1 && !isLeapYear(year)) {
+                            --month;
+                        }
+                        if (month >= 0) {
+                            break;
+                        }
+                        month += ELUL+1;
+                        --year;
+                        acrossAdar1 = true;
+                    }
+                }
+                set(MONTH, month);
+                set(YEAR, year);
+                pinField(DAY_OF_MONTH);
+                break;
+            }
+            
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
+     * <p>
+     * When rolling certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * upward by one for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul".
+     * <p>
+     * This method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use roll and {@link #add add} rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @stable ICU 2.8
+     */
+    public void roll(int field, int amount)
+    {
+        switch (field) {
+        case MONTH:
+            {
+                int month = get(MONTH);
+                int year = get(YEAR);
+                
+                boolean leapYear = isLeapYear(year);
+                int yearLength = monthsInYear(year);
+                int newMonth = month + (amount % yearLength);
+                //
+                // If it's not a leap year and we're rolling past the missing month
+                // of ADAR_1, we need to roll an extra month to make up for it.
+                //
+                if (!leapYear) {
+                    if (amount > 0 && month < ADAR_1 && newMonth >= ADAR_1) {
+                        newMonth++;
+                    } else if (amount < 0 && month > ADAR_1 && newMonth <= ADAR_1) {
+                        newMonth--;
+                    }
+                }
+                set(MONTH, (newMonth + 13) % 13);
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+        default:
+            super.roll(field, amount);
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Support methods
+    //-------------------------------------------------------------------------
+
+    // Hebrew date calculations are performed in terms of days, hours, and
+    // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
+    private static final long HOUR_PARTS = 1080;
+    private static final long DAY_PARTS  = 24*HOUR_PARTS;
+    
+    // An approximate value for the length of a lunar month.
+    // It is used to calculate the approximate year and month of a given
+    // absolute date.
+    static private final int  MONTH_DAYS = 29;
+    static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
+    static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
+    
+    // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
+    // counting from noon on the day before.  BAHARAD is an abbreviation of
+    // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
+    static private final long BAHARAD = 11*HOUR_PARTS + 204;
+
+    /**
+     * Finds the day # of the first day in the given Hebrew year.
+     * To do this, we want to calculate the time of the Tishri 1 new moon
+     * in that year.
+     * <p>
+     * The algorithm here is similar to ones described in a number of
+     * references, including:
+     * <ul>
+     * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold,
+     *     Cambridge University Press, 1997, pages 85-91.
+     *
+     * <li>Hebrew Calendar Science and Myths,
+     *     <a href="http://www.geocities.com/Athens/1584/">
+     *     http://www.geocities.com/Athens/1584/</a>
+     *
+     * <li>The Calendar FAQ,
+     *      <a href="http://www.faqs.org/faqs/calendars/faq/">
+     *      http://www.faqs.org/faqs/calendars/faq/</a>
+     * </ul>
+     */
+    private static long startOfYear(int year)
+    {
+        long day = cache.get(year);
+        
+        if (day == CalendarCache.EMPTY) {
+            int months = (235 * year - 234) / 19;           // # of months before year
+
+            long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
+            day  = months * 29 + (frac / DAY_PARTS);        // Whole # part of calculation
+            frac = frac % DAY_PARTS;                        // Time of day
+
+            int wd = (int)(day % 7);                        // Day of week (0 == Monday)
+
+            if (wd == 2 || wd == 4 || wd == 6) {
+                // If the 1st is on Sun, Wed, or Fri, postpone to the next day
+                day += 1;
+                wd = (int)(day % 7);
+            }
+            if (wd == 1 && frac > 15*HOUR_PARTS+204 && !isLeapYear(year) ) {
+                // If the new moon falls after 3:11:20am (15h204p from the previous noon)
+                // on a Tuesday and it is not a leap year, postpone by 2 days.
+                // This prevents 356-day years.
+                day += 2;
+            }
+            else if (wd == 0 && frac > 21*HOUR_PARTS+589 && isLeapYear(year-1) ) {
+                // If the new moon falls after 9:32:43 1/3am (21h589p from yesterday noon)
+                // on a Monday and *last* year was a leap year, postpone by 1 day.
+                // Prevents 382-day years.
+                day += 1;
+            }
+            cache.put(year, day);
+        }
+        return day;
+    }
+
+    /*
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Hebrew calendar,
+     *              1-based (i.e. 1/1/1 AM is day 1).
+     */
+    /*private static int absoluteDayToDayOfWeek(long day)
+    {
+        // We know that 1/1/1 AM is a Monday, which makes the math easy...
+        return (int)(day % 7) + 1;
+    }*/
+
+    /**
+     * Returns the the type of a given year.
+     *  0   "Deficient" year with 353 or 383 days
+     *  1   "Normal"    year with 354 or 384 days
+     *  2   "Complete"  year with 355 or 385 days
+     */
+    private final int yearType(int year)
+    {
+        int yearLength = handleGetYearLength(year);
+
+        if (yearLength > 380) {
+           yearLength -= 30;        // Subtract length of leap month.
+        }
+
+        int type = 0;
+
+        switch (yearLength) {
+            case 353:
+                type = 0; break;
+            case 354:
+                type = 1; break;
+            case 355:
+                type = 2; break;
+            default:
+                throw new IllegalArgumentException("Illegal year length " + yearLength + " in year " + year);
+
+        }
+        return type;
+    }
+
+    /**
+     * Determine whether a given Hebrew year is a leap year
+     *
+     * The rule here is that if (year % 19) == 0, 3, 6, 8, 11, 14, or 17.
+     * The formula below performs the same test, believe it or not.
+     */
+    private static final boolean isLeapYear(int year) {
+        //return (year * 12 + 17) % 19 >= 12;
+        int x = (year*12 + 17) % 19;
+        return x >= ((x < 0) ? -7 : 12);
+    }
+
+    private static int monthsInYear(int year) {
+        return isLeapYear(year) ? 13 : 12;
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Returns the length of the given month in the given year
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        // Resolve out-of-range months.  This is necessary in order to
+        // obtain the correct year.  We correct to
+        // a 12- or 13-month year (add/subtract 12 or 13, depending
+        // on the year) but since we _always_ number from 0..12, and
+        // the leap year determines whether or not month 5 (Adar 1)
+        // is present, we allow 0..12 in any given year.
+        while (month < 0) {
+            month += monthsInYear(--extendedYear);
+        }
+        // Careful: allow 0..12 in all years
+        while (month > 12) {
+            month -= monthsInYear(extendedYear++);
+        }
+
+        switch (month) {
+            case HESHVAN:
+            case KISLEV:
+                // These two month lengths can vary
+                return MONTH_LENGTH[month][yearType(extendedYear)];
+                
+            default:
+                // The rest are a fixed length
+                return MONTH_LENGTH[month][0];
+        }
+    }
+
+    /**
+     * Returns the number of days in the given Hebrew year
+     * @stable ICU 2.8
+     */
+    protected int handleGetYearLength(int eyear) {
+        return (int)(startOfYear(eyear+1) - startOfYear(eyear));
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields,
+     * which will be set when this method is called.  Subclasses can
+     * also call the getGregorianXxx() methods to obtain Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        long d = julianDay - 347997;
+        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
+        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long ys  = startOfYear(year);                   // 1st day of year
+        int dayOfYear = (int)(d - ys);
+
+        // Because of the postponement rules, it's possible to guess wrong.  Fix it.
+        while (dayOfYear < 1) {
+            year--;
+            ys  = startOfYear(year);
+            dayOfYear = (int)(d - ys);
+        }
+
+        // Now figure out which month we're in, and the date within that month
+        int yearType = yearType(year);
+        int monthStart[][] = isLeapYear(year) ? LEAP_MONTH_START : MONTH_START;
+
+        int month = 0;
+        while (dayOfYear > monthStart[month][yearType]) {
+            month++;
+        }
+        month--;
+        int dayOfMonth = dayOfYear - monthStart[month][yearType];
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    /**
+     * Return JD of start of given month/year.
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // Resolve out-of-range months.  This is necessary in order to
+        // obtain the correct year.  We correct to
+        // a 12- or 13-month year (add/subtract 12 or 13, depending
+        // on the year) but since we _always_ number from 0..12, and
+        // the leap year determines whether or not month 5 (Adar 1)
+        // is present, we allow 0..12 in any given year.
+        while (month < 0) {
+            month += monthsInYear(--eyear);
+        }
+        // Careful: allow 0..12 in all years
+        while (month > 12) {
+            month -= monthsInYear(eyear++);
+        }
+
+        long day = startOfYear(eyear);
+
+        if (month != 0) {
+            if (isLeapYear(eyear)) {
+                day += LEAP_MONTH_START[month][yearType(eyear)];
+            } else {
+                day += MONTH_START[month][yearType(eyear)];
+            }
+        }
+
+        return (int) (day + 347997);
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "hebrew";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new HebrewCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Hebrew";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/HebrewHoliday.java b/src/com/ibm/icu/util/HebrewHoliday.java
new file mode 100644
index 0000000..01fff4a
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewHoliday.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+/**
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class HebrewHoliday extends Holiday
+{
+    private static final HebrewCalendar gCalendar = new HebrewCalendar();
+
+    /**
+     * Construct a holiday defined in reference to the Hebrew calendar.
+     *
+     * @param name The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public HebrewHoliday(int month, int date, String name)
+    {
+        this(month, date, 1, name);
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public HebrewHoliday(int month, int date, int length, String name)
+    {
+        super(name, new SimpleDateRule(month, date, gCalendar));
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday ROSH_HASHANAH   = new HebrewHoliday(HebrewCalendar.TISHRI,  1,  2,  "Rosh Hashanah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday GEDALIAH        = new HebrewHoliday(HebrewCalendar.TISHRI,  3,      "Fast of Gedaliah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_KIPPUR      = new HebrewHoliday(HebrewCalendar.TISHRI, 10,      "Yom Kippur");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SUKKOT          = new HebrewHoliday(HebrewCalendar.TISHRI, 15,  6,  "Sukkot");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday HOSHANAH_RABBAH = new HebrewHoliday(HebrewCalendar.TISHRI, 21,      "Hoshanah Rabbah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHEMINI_ATZERET = new HebrewHoliday(HebrewCalendar.TISHRI, 22,      "Shemini Atzeret");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SIMCHAT_TORAH   = new HebrewHoliday(HebrewCalendar.TISHRI, 23,      "Simchat Torah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday HANUKKAH        = new HebrewHoliday(HebrewCalendar.KISLEV, 25,      "Hanukkah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TEVET_10        = new HebrewHoliday(HebrewCalendar.TEVET,  10,      "Fast of Tevet 10");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TU_BSHEVAT      = new HebrewHoliday(HebrewCalendar.SHEVAT, 15,      "Tu B'Shevat");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday ESTHER          = new HebrewHoliday(HebrewCalendar.ADAR,   13,      "Fast of Esther");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PURIM           = new HebrewHoliday(HebrewCalendar.ADAR,   14,      "Purim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHUSHAN_PURIM   = new HebrewHoliday(HebrewCalendar.ADAR,   15,      "Shushan Purim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PASSOVER        = new HebrewHoliday(HebrewCalendar.NISAN,  15,  8,  "Passover");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HASHOAH     = new HebrewHoliday(HebrewCalendar.NISAN,  27,      "Yom Hashoah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HAZIKARON   = new HebrewHoliday(HebrewCalendar.IYAR,    4,      "Yom Hazikaron");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HAATZMAUT   = new HebrewHoliday(HebrewCalendar.IYAR,    5,      "Yom Ha'Atzmaut");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PESACH_SHEINI   = new HebrewHoliday(HebrewCalendar.IYAR,   14,      "Pesach Sheini");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday LAG_BOMER       = new HebrewHoliday(HebrewCalendar.IYAR,   18,      "Lab B'Omer");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_YERUSHALAYIM = new HebrewHoliday(HebrewCalendar.IYAR,   28,      "Yom Yerushalayim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHAVUOT         = new HebrewHoliday(HebrewCalendar.SIVAN,   6,  2,  "Shavuot");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TAMMUZ_17       = new HebrewHoliday(HebrewCalendar.TAMUZ,  17,      "Fast of Tammuz 17");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TISHA_BAV       = new HebrewHoliday(HebrewCalendar.AV,      9,      "Fast of Tisha B'Av");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SELIHOT         = new HebrewHoliday(HebrewCalendar.ELUL,   21,      "Selihot");
+}
diff --git a/src/com/ibm/icu/util/Holiday.java b/src/com/ibm/icu/util/Holiday.java
new file mode 100644
index 0000000..0e2b646
--- /dev/null
+++ b/src/com/ibm/icu/util/Holiday.java
@@ -0,0 +1,208 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * An abstract class representing a holiday.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class Holiday implements DateRule
+{
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays()
+    {
+        return getHolidays(ULocale.getDefault());
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays(Locale locale)
+    {
+        return getHolidays(ULocale.forLocale(locale));
+    }
+
+    /**
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays(ULocale locale)
+    {
+        Holiday[] result = noHolidays;
+
+        try {
+            ResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", locale);
+
+            result = (Holiday[]) bundle.getObject("holidays");
+        }
+        catch (MissingResourceException e) {
+        }
+        return result;
+    }
+
+    /**
+     * Return the first occurrence of this holiday on or after the given date
+     *
+     * @param start Only holidays on or after this date are returned.
+     *
+     * @return      The date on which this holiday occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start) {
+        return rule.firstAfter(start);
+    }
+
+    /**
+     * Return the first occurrence of this holiday that is on or after
+     * the given start date and before the given end date.
+     *
+     * @param start Only occurrences on or after this date are returned.
+     * @param end   Only occurrences before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end) {
+        return rule.firstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this holiday falls on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether the holiday and the given date are on the same day.
+     *
+     * @param date  The date to check.
+     * @return      true if this holiday occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date) {
+        //System.out.println(name + ".isOn(" + date.toString() + "):");
+        return rule.isOn(date);
+    }
+
+    /**
+     * Check whether this holiday occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return rule.isBetween(start, end);
+    }
+
+    /**
+     * Construct a new Holiday object.  This is for use by subclasses only.
+     * This constructs a new holiday with the given name and date rules.
+     *
+     * @param name  The name of this holiday.  The getDisplayName method
+     *              uses this string as a key to look up the holiday's name a
+     *              resource bundle object named HolidayBundle.
+     *
+     * @param rule  The date rules used for determining when this holiday
+     *              falls.  Holiday's implementation of the DateRule interface
+     *              simply delegates to this DateRule object.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Holiday(String name, DateRule rule)
+    {
+        this.name = name;
+        this.rule = rule;
+    }
+
+    /**
+     * Return the name of this holiday in the language of the default locale.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName() {
+        return getDisplayName(ULocale.getDefault());
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale.
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param locale   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(Locale locale)
+    {
+        return getDisplayName(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param locale   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(ULocale locale)
+    {
+        String dispName = name;
+
+        try {
+            ResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", locale);
+            dispName = bundle.getString(name);
+        }
+        catch (MissingResourceException e) {
+        }
+        return dispName;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateRule getRule() {
+        return rule;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setRule(DateRule rule) {
+        this.rule = rule;
+    }
+
+    private String      name;
+    private DateRule    rule;
+
+    private static Holiday[] noHolidays = {};
+}
diff --git a/src/com/ibm/icu/util/IndianCalendar.java b/src/com/ibm/icu/util/IndianCalendar.java
new file mode 100644
index 0000000..0320026
--- /dev/null
+++ b/src/com/ibm/icu/util/IndianCalendar.java
@@ -0,0 +1,575 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>IndianCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * which is accepted by government of India as Indian National Calendar. 
+ * The two calendars most widely used in India today are the Vikrama calendar 
+ * followed in North India and the Shalivahana or Saka calendar which is followed 
+ * in South India and Maharashtra.
+
+ * A variant of the Shalivahana Calendar was reformed and standardized as the 
+ * Indian National calendar in 1957.
+ * <p>
+ * Some details of Indian National Calendar (to be implemented) :
+ * The Months
+ * Month          Length      Start date (Gregorian)
+ * =================================================
+ * 1 Chaitra      30/31          March 22*
+ * 2 Vaisakha     31             April 21
+ * 3 Jyaistha     31             May 22
+ * 4 Asadha       31             June 22
+ * 5 Sravana      31             July 23
+ * 6 Bhadra       31             August 23
+ * 7 Asvina       30             September 23
+ * 8 Kartika      30             October 23
+ * 9 Agrahayana   30             November 22
+ * 10 Pausa       30             December 22
+ * 11 Magha       30             January 21
+ * 12 Phalguna    30             February 20
+
+ * In leap years, Chaitra has 31 days and starts on March 21 instead.
+ * The leap years of Gregorian calendar and Indian National Calendar are in synchornization. 
+ * So When its a leap year in Gregorian calendar then Chaitra has 31 days.
+ *
+ * The Years
+ * Years are counted in the Saka Era, which starts its year 0 in 78AD (by gregorian calendar).
+ * So for eg. 9th June 2006 by Gregorian Calendar, is same as 19th of Jyaistha in 1928 of Saka 
+ * era by Indian National Calendar.
+ * <p>
+ * The Indian Calendar has only one allowable era: <code>Saka Era</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 Saka Era are rejected with an <code>IllegalArgumentException</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * IndianCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=Indian"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @stable ICU 3.8
+ */
+public class IndianCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 3617859668165014834L;
+
+    /** 
+     * Constant for Chaitra, the 1st month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int CHAITRA = 0;
+
+    /** 
+     * Constant for Vaisakha, the 2nd month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int VAISAKHA = 1;
+
+    /** 
+     * Constant for Jyaistha, the 3rd month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int JYAISTHA = 2;
+
+    /** 
+     * Constant for Asadha, the 4th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int ASADHA = 3; 
+
+    /** 
+     * Constant for Sravana, the 5th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int SRAVANA = 4 ;
+
+    /** 
+     * Constant for Bhadra, the 6th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int BHADRA = 5 ;
+
+    /** 
+     * Constant for Asvina, the 7th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int ASVINA = 6 ;
+
+    /** 
+     * Constant for Kartika, the 8th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int KARTIKA = 7 ;
+
+    /** 
+     * Constant for Agrahayana, the 9th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int AGRAHAYANA = 8 ;
+
+    /** 
+     * Constant for Pausa, the 10th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int PAUSA = 9 ;
+
+    /** 
+     * Constant for Magha, the 11th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int MAGHA = 10;
+
+    /** 
+     * Constant for Phalguna, the 12th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int PHALGUNA = 11;
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Indian Era.  This is the only allowable <code>ERA</code>
+     * value for the Indian calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int IE = 0;
+    
+    /**
+     * Constructs a <code>IndianCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar() {
+       this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone) {
+       this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(ULocale locale) {
+       this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(int year, int month, int date) {
+       super(TimeZone.getDefault(), ULocale.getDefault());
+       this.set(Calendar.YEAR, year);
+       this.set(Calendar.MONTH, month);
+       this.set(Calendar.DATE, date);
+
+    }
+
+    /**
+     * Constructs a IndianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+       super(TimeZone.getDefault(), ULocale.getDefault());
+       this.set(Calendar.YEAR, year);
+       this.set(Calendar.MONTH, month);
+       this.set(Calendar.DATE, date);
+       this.set(Calendar.HOUR_OF_DAY, hour);
+       this.set(Calendar.MINUTE, minute);
+       this.set(Calendar.SECOND, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the Saka Era.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    // Starts in 78 AD, 
+    private static final int INDIAN_ERA_START = 78;
+    
+    // The Indian year starts 80 days later than the Gregorian year.
+    private static final int INDIAN_YEAR_START = 80;
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1);
+        } else {
+            // Ignore the era, as there is only one
+            year = internalGet(YEAR, 1);
+        }
+        
+        return year;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetYearLength(int extendedYear) {
+       return super.handleGetYearLength(extendedYear);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        if (month < 0 || month > 11) {
+            int[] remainder = new int[1];
+            extendedYear += floorDivide(month, 12, remainder);
+            month = remainder[0];
+        }
+
+        if(isGregorianLeap(extendedYear + INDIAN_ERA_START) && month == 0) {
+            return 31;
+        }
+
+        if(month >= 1 && month <=5) {
+            return 31;
+        }
+
+        return 30;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected void handleComputeFields(int julianDay){
+        double jdAtStartOfGregYear;
+        int leapMonth, IndianYear, yday, IndianMonth, IndianDayOfMonth, mday;
+        int[] gregorianDay;          // Stores gregorian date corresponding to Julian day;
+
+        gregorianDay = jdToGregorian(julianDay);                    // Gregorian date for Julian day
+        IndianYear = gregorianDay[0] - INDIAN_ERA_START;            // Year in Saka era
+        jdAtStartOfGregYear = gregorianToJD(gregorianDay[0], 1, 1); // JD at start of Gregorian year
+        yday = (int)(julianDay - jdAtStartOfGregYear);              // Day number in Gregorian year (starting from 0)
+
+        if (yday < INDIAN_YEAR_START) {
+            //  Day is at the end of the preceding Saka year
+            IndianYear -= 1;
+            leapMonth = isGregorianLeap(gregorianDay[0] - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
+            yday += leapMonth + (31 * 5) + (30 * 3) + 10;
+        } else {
+            leapMonth = isGregorianLeap(gregorianDay[0]) ? 31 : 30; // Days in leapMonth this year
+            yday -= INDIAN_YEAR_START;
+        }
+
+        if (yday < leapMonth) {
+            IndianMonth = 0;
+            IndianDayOfMonth = yday + 1;
+        } else {
+              mday = yday - leapMonth;
+              if (mday < (31 * 5)) {
+                 IndianMonth = (int)Math.floor(mday / 31) + 1;
+                 IndianDayOfMonth = (mday % 31) + 1;
+              } else {
+                 mday -= 31 * 5;
+                 IndianMonth = (int)Math.floor(mday / 30) + 6;
+                 IndianDayOfMonth = (mday % 30) + 1;
+              }
+        }
+
+        internalSet(ERA, 0);
+        internalSet(EXTENDED_YEAR, IndianYear);
+        internalSet(YEAR, IndianYear);
+        internalSet(MONTH, IndianMonth);
+        internalSet(DAY_OF_MONTH, IndianDayOfMonth );
+        internalSet(DAY_OF_YEAR, yday + 1); // yday is 0-based
+     }
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest     Least    Maximum
+        //           Minimum   Maximum
+        {        0,        0,        0,        0}, // ERA
+        { -5000000, -5000000,  5000000,  5000000}, // YEAR
+        {        0,        0,       11,       11}, // MONTH
+        {        1,        1,       52,       53}, // WEEK_OF_YEAR
+        {/*                                   */}, // WEEK_OF_MONTH
+        {        1,        1,       30,       31}, // DAY_OF_MONTH
+        {        1,        1,      365,      366}, // DAY_OF_YEAR
+        {/*                                   */}, // DAY_OF_WEEK
+        {       -1,       -1,        5,        5}, // DAY_OF_WEEK_IN_MONTH
+        {/*                                   */}, // AM_PM
+        {/*                                   */}, // HOUR
+        {/*                                   */}, // HOUR_OF_DAY
+        {/*                                   */}, // MINUTE
+        {/*                                   */}, // SECOND
+        {/*                                   */}, // MILLISECOND
+        {/*                                   */}, // ZONE_OFFSET
+        {/*                                   */}, // DST_OFFSET
+        { -5000000, -5000000,  5000000,  5000000}, // YEAR_WOY
+        {/*                                   */}, // DOW_LOCAL
+        { -5000000, -5000000,  5000000,  5000000}, // EXTENDED_YEAR
+        {/*                                   */}, // JULIAN_DAY
+        {/*                                   */}, // MILLISECONDS_IN_DAY
+    };
+
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+       return LIMITS[field][limitType];
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleComputeMonthStart(int year, int month, boolean useMonth) {
+
+       //month is 0 based; converting it to 1-based 
+       int imonth;
+       
+       if(month == 12) {
+           imonth = 1;
+       } else {
+           imonth = month +1;  
+       }
+       
+       double jd = IndianToJD(year ,imonth, 1);
+       
+       return (int)jd;
+    }
+
+
+   
+    /*
+     * This routine converts an Indian date to the corresponding Julian date"
+     * @param year   The year in Saka Era according to Indian calendar.
+     * @param month  The month according to Indian calendar (between 1 to 12)
+     * @param date   The date in month 
+     */
+    private static double IndianToJD(int year, int month, int date) {
+       int leapMonth, gyear, m;
+       double start, jd;
+
+       gyear = year + INDIAN_ERA_START;
+
+
+       if(isGregorianLeap(gyear)) {
+          leapMonth = 31;
+          start = gregorianToJD(gyear, 3, 21);
+       } else {
+          leapMonth = 30;
+          start = gregorianToJD(gyear, 3, 22);
+       }
+
+       if (month == 1) {
+          jd = start + (date - 1);
+       } else {
+          jd = start + leapMonth;
+          m = month - 2;
+          m = Math.min(m, 5);
+          jd += m * 31;
+          if (month >= 8) {
+             m = month - 7;
+             jd += m * 30;
+          }
+          jd += date - 1;
+       }
+
+       return jd;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine converts a gregorian date to the corresponding Julian date"
+     * @param year   The year in standard Gregorian calendar (AD/BC) .
+     * @param month  The month according to Gregorian calendar (between 0 to 11)
+     * @param date   The date in month 
+     */
+    private static double gregorianToJD(int year, int month, int date) {
+       double JULIAN_EPOCH = 1721425.5;
+       double jd = (JULIAN_EPOCH - 1) +
+          (365 * (year - 1)) +
+          Math.floor((year - 1) / 4) +
+          (-Math.floor((year - 1) / 100)) +
+          Math.floor((year - 1) / 400) +
+          Math.floor((((367 * month) - 362) / 12) +
+                ((month <= 2) ? 0 :
+                 (isGregorianLeap(year) ? -1 : -2)
+                ) +
+                date);
+       
+       return jd;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine converts a julian day (jd) to the corresponding date in Gregorian calendar"
+     * @param jd The Julian date in Julian Calendar which is to be converted to Indian date"
+     */
+    private static int[] jdToGregorian(double jd) {
+       double JULIAN_EPOCH = 1721425.5;
+       double wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad, yindex, yearday, leapadj;
+       int year, month, day;
+       
+       wjd = Math.floor(jd - 0.5) + 0.5;
+       depoch = wjd - JULIAN_EPOCH;
+       quadricent = Math.floor(depoch / 146097);
+       dqc = depoch % 146097;
+       cent = Math.floor(dqc / 36524);
+       dcent = dqc % 36524;
+       quad = Math.floor(dcent / 1461);
+       dquad = dcent % 1461;
+       yindex = Math.floor(dquad / 365);
+       year = (int)((quadricent * 400) + (cent * 100) + (quad * 4) + yindex);
+       
+       if (!((cent == 4) || (yindex == 4))) {
+          year++;
+       }
+       
+       yearday = wjd - gregorianToJD(year, 1, 1);
+       leapadj = ((wjd < gregorianToJD(year, 3, 1)) ? 0
+             :
+             (isGregorianLeap(year) ? 1 : 2)
+             );
+       
+       month = (int)Math.floor((((yearday + leapadj) * 12) + 373) / 367);
+       day = (int)(wjd - gregorianToJD(year, month, 1)) + 1;
+
+       int[] julianDate = new int[3];
+       
+       julianDate[0] = year;
+       julianDate[1] = month;
+       julianDate[2] = day;
+       
+       return julianDate;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine checks if the Gregorian year is a leap year"
+     * @param year      The year in Gregorian Calendar
+     */
+    private static boolean isGregorianLeap(int year)
+    {
+       return ((year % 4) == 0) &&
+          (!(((year % 100) == 0) && ((year % 400) != 0)));
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "indian";
+    }
+}
diff --git a/src/com/ibm/icu/util/InitialTimeZoneRule.java b/src/com/ibm/icu/util/InitialTimeZoneRule.java
new file mode 100644
index 0000000..f2bf3ed
--- /dev/null
+++ b/src/com/ibm/icu/util/InitialTimeZoneRule.java
@@ -0,0 +1,103 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * <code>InitialTimeZoneRule</code> represents a time zone rule
+ * representing a time zone effective from the beginning and
+ * has no actual start times.
+ * 
+ * @stable ICU 3.8
+ */
+public class InitialTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = 1876594993064051206L;
+
+    /**
+     * Constructs a <code>InitialTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time and the amount of daylight saving offset adjustment.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in milliseconds.
+     *                      If this ia a rule for standard time, the value of this argument is 0.
+     * 
+     * @stable ICU 3.8
+     */
+    public InitialTimeZoneRule(String name, int rawOffset, int dstSavings) {
+        super(name, rawOffset, dstSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (other instanceof InitialTimeZoneRule) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+    
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevRawOffset, int prevDSTSavings,
+            boolean inclusive) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevRawOffset,
+            int prevDSTSavings, boolean inclusive) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns false.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/util/IslamicCalendar.java b/src/com/ibm/icu/util/IslamicCalendar.java
new file mode 100644
index 0000000..16d8caf
--- /dev/null
+++ b/src/com/ibm/icu/util/IslamicCalendar.java
@@ -0,0 +1,667 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarCache;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>IslamicCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the Islamic civil and religious calendars.  It
+ * is used as the civil calendar in most of the Arab world and the
+ * liturgical calendar of the Islamic faith worldwide.  This calendar
+ * is also known as the "Hijri" calendar, since it starts at the time
+ * of Mohammed's emigration (or "hijra") to Medinah on Thursday, 
+ * July 15, 622 AD (Julian).
+ * <p>
+ * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve
+ * lunar months does not correspond to the solar year used by most other
+ * calendar systems, including the Gregorian.  An Islamic year is, on average,
+ * about 354 days long, so each successive Islamic year starts about 11 days
+ * earlier in the corresponding Gregorian year.
+ * <p>
+ * Each month of the calendar starts when the new moon's crescent is visible
+ * at sunset.  However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * There are two main variants of the Islamic calendar in existence.  The first
+ * is the <em>civil</em> calendar, which uses a fixed cycle of alternating 29-
+ * and 30-day months, with a leap day added to the last month of 11 out of
+ * every 30 years.  This calendar is easily calculated and thus predictable in
+ * advance, so it is used as the civil calendar in a number of Arab countries.
+ * This is the default behavior of a newly-created <code>IslamicCalendar</code>
+ * object.
+ * <p>
+ * The Islamic <em>religious</em> calendar, however, is based on the <em>observation</em>
+ * of the crescent moon.  It is thus affected by the position at which the
+ * observations are made, seasonal variations in the time of sunset, the
+ * eccentricities of the moon's orbit, and even the weather at the observation
+ * site.  This makes it impossible to calculate in advance, and it causes the
+ * start of a month in the religious calendar to differ from the civil calendar
+ * by up to three days.
+ * <p>
+ * Using astronomical calculations for the position of the sun and moon, the
+ * moon's illumination, and other factors, it is possible to determine the start
+ * of a lunar month with a fairly high degree of certainty.  However, these
+ * calculations are extremely complicated and thus slow, so most algorithms,
+ * including the one used here, are only approximations of the true astronical
+ * calculations.  At present, the approximations used in this class are fairly
+ * simplistic; they will be improved in later versions of the code.
+ * <p>
+ * The {@link #setCivil setCivil} method determines
+ * which approach is used to determine the start of a month.  By default, the
+ * fixed-cycle civil calendar is used.  However, if <code>setCivil(false)</code>
+ * is called, an approximation of the true lunar calendar will be used.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * IslamicCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=islamic"</code> or <code>"@calendar=islamic-civil"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class IslamicCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -6253365474073869325L;
+
+    //-------------------------------------------------------------------------
+    // Constants...
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Constant for Muharram, the 1st month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int MUHARRAM = 0;
+
+    /**
+     * Constant for Safar, the 2nd month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SAFAR = 1;
+
+    /**
+     * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RABI_1 = 2;
+
+    /**
+     * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RABI_2 = 3;
+
+    /**
+     * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int JUMADA_1 = 4;
+
+    /**
+     * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int JUMADA_2 = 5;
+
+    /**
+     * Constant for Rajab, the 7th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RAJAB = 6;
+
+    /**
+     * Constant for Sha'ban, the 8th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHABAN = 7;
+
+    /**
+     * Constant for Ramadan, the 9th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RAMADAN = 8;
+
+    /**
+     * Constant for Shawwal, the 10th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHAWWAL = 9;
+
+    /**
+     * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int DHU_AL_QIDAH = 10;
+
+    /**
+     * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int DHU_AL_HIJJAH = 11;
+
+
+    private static final long HIJRA_MILLIS = -42521587200000L;    // 7/16/622 AD 00:00
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>IslamicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar()
+    {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(TimeZone zone)
+    {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(Locale aLocale)
+    {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public IslamicCalendar(ULocale locale)
+    {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(TimeZone zone, Locale aLocale)
+    {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public IslamicCalendar(TimeZone zone, ULocale locale)
+    {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     * @param date the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(int year, int month, int date)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+        this.set(Calendar.HOUR_OF_DAY, hour);
+        this.set(Calendar.MINUTE, minute);
+        this.set(Calendar.SECOND, second);
+    }
+
+    /**
+     * Determines whether this object uses the fixed-cycle Islamic civil calendar
+     * or an approximation of the religious, astronomical calendar.
+     *
+     * @param beCivil   <code>true</code> to use the civil calendar,
+     *                  <code>false</code> to use the astronomical calendar.
+     * @stable ICU 2.8
+     */
+    public void setCivil(boolean beCivil)
+    {
+        if (civil != beCivil) {
+            // The fields of the calendar will become invalid, because the calendar
+            // rules are different
+            long m = getTimeInMillis();
+            civil = beCivil;
+            clear();
+            setTimeInMillis(m);
+        }
+    }
+    
+    /**
+     * Returns <code>true</code> if this object is using the fixed-cycle civil
+     * calendar, or <code>false</code> if using the religious, astronomical
+     * calendar.
+     * @stable ICU 2.8
+     */
+    public boolean isCivil() {
+        return civil;
+    }
+    
+    //-------------------------------------------------------------------------
+    // Minimum / Maximum access functions
+    //-------------------------------------------------------------------------
+
+    // Note: Current IslamicCalendar implementation does not work
+    // well with negative years.
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest     Least   Maximum
+        //           Minimum   Maximum
+        {        0,        0,        0,        0}, // ERA
+        {        1,        1,  5000000,  5000000}, // YEAR
+        {        0,        0,       11,       11}, // MONTH
+        {        1,        1,       50,       51}, // WEEK_OF_YEAR
+        {/*                                   */}, // WEEK_OF_MONTH
+        {        1,        1,       29,       30}, // DAY_OF_MONTH
+        {        1,        1,      354,      355}, // DAY_OF_YEAR
+        {/*                                   */}, // DAY_OF_WEEK
+        {       -1,       -1,        5,        5}, // DAY_OF_WEEK_IN_MONTH
+        {/*                                   */}, // AM_PM
+        {/*                                   */}, // HOUR
+        {/*                                   */}, // HOUR_OF_DAY
+        {/*                                   */}, // MINUTE
+        {/*                                   */}, // SECOND
+        {/*                                   */}, // MILLISECOND
+        {/*                                   */}, // ZONE_OFFSET
+        {/*                                   */}, // DST_OFFSET
+        {        1,        1,  5000000,  5000000}, // YEAR_WOY
+        {/*                                   */}, // DOW_LOCAL
+        {        1,        1,  5000000,  5000000}, // EXTENDED_YEAR
+        {/*                                   */}, // JULIAN_DAY
+        {/*                                   */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    //-------------------------------------------------------------------------
+    // Assorted calculation utilities
+    //
+
+// Unused code - Alan 2003-05
+//    /**
+//     * Find the day of the week for a given day
+//     *
+//     * @param day   The # of days since the start of the Islamic calendar.
+//     */
+//    // private and uncalled, perhaps not used yet?
+//    private static final int absoluteDayToDayOfWeek(long day)
+//    {
+//        // Calculate the day of the week.
+//        // This relies on the fact that the epoch was a Thursday.
+//        int dayOfWeek = (int)(day + THURSDAY) % 7 + SUNDAY;
+//        if (dayOfWeek < 0) {
+//            dayOfWeek += 7;
+//        }
+//        return dayOfWeek;
+//    }
+
+    /**
+     * Determine whether a year is a leap year in the Islamic civil calendar
+     */
+    private final static boolean civilLeapYear(int year)
+    {
+        return (14 + 11 * year) % 30 < 11;
+        
+    }
+    
+    /**
+     * Return the day # on which the given year starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     */
+    private long yearStart(int year) {
+        if (civil) {
+            return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1));
+        }
+    }
+    
+    /**
+     * Return the day # on which the given month starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     *
+     * @param year  The hijri year
+     * @param month  The hijri month, 0-based
+     */
+    private long monthStart(int year, int month) {
+        if (civil) {
+            return (long)Math.ceil(29.5*month)
+                    + (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1) + month);
+        }
+    }
+    
+    /**
+     * Find the day number on which a particular month of the true/lunar
+     * Islamic calendar starts.
+     *
+     * @param month The month in question, origin 0 from the Hijri epoch
+     *
+     * @return The day number on which the given month starts.
+     */
+    private static final long trueMonthStart(long month)
+    {
+        long start = cache.get(month);
+
+        if (start == CalendarCache.EMPTY)
+        {
+            // Make a guess at when the month started, using the average length
+            long origin = HIJRA_MILLIS 
+                        + (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1) * ONE_DAY;
+
+            double age = moonAge(origin);
+
+            if (moonAge(origin) >= 0) {
+                // The month has already started
+                do {
+                    origin -= ONE_DAY;
+                    age = moonAge(origin);
+                } while (age >= 0);
+            }
+            else {
+                // Preceding month has not ended yet.
+                do {
+                    origin += ONE_DAY;
+                    age = moonAge(origin);
+                } while (age < 0);
+            }
+
+            start = (origin - HIJRA_MILLIS) / ONE_DAY + 1;
+            
+            cache.put(month, start);
+        }
+        return start;
+    }
+
+    /**
+     * Return the "age" of the moon at the given time; this is the difference
+     * in ecliptic latitude between the moon and the sun.  This method simply
+     * calls CalendarAstronomer.moonAge, converts to degrees, 
+     * and adjusts the resultto be in the range [-180, 180].
+     *
+     * @param time  The time at which the moon's age is desired,
+     *              in millis since 1/1/1970.
+     */
+    static final double moonAge(long time)
+    {
+        double age = 0;
+        
+        synchronized(astro) {
+            astro.setTime(time);
+            age = astro.getMoonAge();
+        }
+        // Convert to degrees and normalize...
+        age = age * 180 / Math.PI;
+        if (age > 180) {
+            age = age - 360;
+        }
+
+        return age;
+    }
+
+    //-------------------------------------------------------------------------
+    // Internal data....
+    //
+    
+    // And an Astronomer object for the moon age calculations
+    private static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    private static CalendarCache cache = new CalendarCache();
+    
+    /**
+     * <code>true</code> if this object uses the fixed-cycle Islamic civil calendar,
+     * and <code>false</code> if it approximates the true religious calendar using
+     * astronomical calculations for the time of the new moon.
+     *
+     * @serial
+     */
+    private boolean civil = true;
+
+    //----------------------------------------------------------------------
+    // Calendar framework
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the length (in days) of the given month.
+     *
+     * @param extendedYear  The hijri year
+     * @param month The hijri month, 0-based
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+
+        int length = 0;
+        
+        if (civil) {
+            length = 29 + (month+1) % 2;
+            if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
+                length++;
+            }
+        } else {
+            month = 12*(extendedYear-1) + month;
+            length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
+        }
+        return length;
+    }
+
+    /**
+     * Return the number of days in the given Islamic year
+     * @stable ICU 2.8
+     */
+    protected int handleGetYearLength(int extendedYear) {
+        if (civil) {
+            return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+        } else {
+            int month = 12*(extendedYear-1);
+            return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds....
+    //-------------------------------------------------------------------------
+
+    // Return JD of start of given month/year
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return (int) monthStart(eyear, month) + 1948439;
+    }    
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Islamic
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called. The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+        long monthStart;
+        long days = julianDay - 1948440;
+
+        if (civil) {
+            // Use the civil calendar approximation, which is just arithmetic
+            year  = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+            month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+            month = Math.min(month, 11);
+            monthStart = monthStart(year, month);
+        } else {
+            // Guess at the number of elapsed full months since the epoch
+            int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+
+            monthStart = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
+
+            if ( days - monthStart >= 28 && moonAge(internalGetTimeInMillis()) > 0) {
+                // If we're near the end of the month, assume next month and search backwards
+                months++;
+            }
+
+            // Find out the last time that the new moon was actually visible at this longitude
+            // This returns midnight the night that the moon was visible at sunset.
+            while ((monthStart = trueMonthStart(months)) > days) {
+                // If it was after the date in question, back up a month and try again
+                months--;
+            }
+
+            year = months / 12 + 1;
+            month = months % 12;
+        }
+
+        dayOfMonth = (int)(days - monthStart(year, month)) + 1;
+
+        // Now figure out the day of the year.
+        dayOfYear = (int)(days - monthStart(year, 0) + 1);
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }    
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "islamic";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new IslamicCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Islamic";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/JapaneseCalendar.java b/src/com/ibm/icu/util/JapaneseCalendar.java
new file mode 100644
index 0000000..5c8baef
--- /dev/null
+++ b/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -0,0 +1,664 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>JapaneseCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years and eras based on the reigns of the Japanese emperors.
+ * The Japanese calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  The ascension of each  emperor to the throne
+ * begins a new era, and the years of that era are numbered starting with the
+ * year of ascension as year 1.
+ * <p>
+ * Note that in the year of an imperial ascension, there are two possible sets
+ * of year and era values: that for the old era and for the new.  For example, a
+ * new era began on January 7, 1989 AD.  Strictly speaking, the first six days
+ * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest
+ * of the year was in the Heisei era, e.g. "January 7, 1 Heisei".  This class
+ * handles this distinction correctly when computing dates.  However, in lenient
+ * mode either form of date is acceptable as input. 
+ * <p>
+ * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji),
+ * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei).  Constants
+ * for these eras, suitable for use in the <code>ERA</code> field, are provided
+ * in this class.  Note that the <em>number</em> used for each era is more or
+ * less arbitrary.  Currently, the era starting in 1053 AD is era #0; however this
+ * may change in the future as we add more historical data.  Use the predefined
+ * constants rather than using actual, absolute numbers.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * JapaneseCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=japanese"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class JapaneseCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -2977189902603704691L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>JapaneseCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public JapaneseCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public JapaneseCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param era       The imperial era used to set the calendar's {@link #ERA ERA} field.
+     *                  Eras are numbered starting with the Tenki era, which
+     *                  began in 1053 AD Gregorian, as era zero.  Recent
+     *                  eras can be specified using the constants
+     *                  {@link #MEIJI} (which started in 1868 AD),
+     *                  {@link #TAISHO} (1912 AD),
+     *                  {@link #SHOWA} (1926 AD), and
+     *                  {@link #HEISEI} (1989 AD).
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in terms of the era.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's DATE field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int era, int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, era);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in the era Heisei, the most current at the time this
+     *                  class was last updated.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, CURRENT_ERA);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field,
+     *                  in the era Heisei, the most current at the time of this
+     *                  writing.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+        set(ERA, CURRENT_ERA);
+    }
+
+    //-------------------------------------------------------------------------
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in JapaneseCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Showa 45)
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR &&
+            newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            // extended year is a gregorian year, where 1 = 1AD,  0 = 1BC, -1 = 2BC, etc 
+            year = internalGet(YEAR, 1)                       // pin to minimum of year 1 (first year)
+                    + ERAS[internalGet(ERA, CURRENT_ERA) * 3] // add gregorian starting year
+                    - 1;                                      // Subtract one because year starts at 1
+        }
+        return year;
+    }
+    
+    /**
+     * Called by handleComputeJulianDay.  Returns the default month (0-based) for the year,
+     * taking year and era into account.  Defaults to 0 (JANUARY) for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @return the default month
+     * @provisional ICU 3.6
+     * @draft ICU 3.6
+     * @see #MONTH
+     */
+    protected int getDefaultMonthInYear(int extendedYear)
+    {
+      int era = internalGet(ERA, CURRENT_ERA);
+      //computeFields(status); // No need to compute fields here - expect the caller already did so.
+
+      // Find out if we are at the edge of an era
+      if(extendedYear == ERAS[era*3]) {
+        return ERAS[(era*3)+1] // month..
+            -1; // return 0-based month
+      } else {
+        return super.getDefaultMonthInYear(extendedYear);
+      }
+    }
+
+    /**
+     * Called by handleComputeJulianDay.  Returns the default day (1-based) for the month,
+     * taking currently-set year and era into account.  Defaults to 1 for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @param month the month, as returned by getDefaultMonthInYear
+     * @return the default day of the month
+     * @draft ICU 3.6
+     * @provisional ICU 3.6
+     * @see #DAY_OF_MONTH
+     */
+    protected int getDefaultDayInMonth(int extendedYear, int month) {
+      int era = internalGet(ERA, CURRENT_ERA);
+          
+      if(extendedYear == ERAS[era*3]) { // if it is year 1..
+        if(month == ((ERAS[(era*3)+1])-1)) { // if it is the emperor's first month.. 
+          return ERAS[(era*3)+2]; // return the D_O_M of acession
+        }
+      }
+
+      return super.getDefaultDayInMonth(extendedYear, month);
+    }
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int year = internalGet(EXTENDED_YEAR);
+
+        int low = 0;
+
+        // Short circuit for recent years.  Most modern computations will
+        // occur in the current era and won't require the binary search.
+        // Note that if the year is == the current era year, then we use
+        // the binary search to handle the month/dom comparison.
+        if (year > ERAS[ERAS.length - 3]) {
+            low = CURRENT_ERA;
+        } else {
+            // Binary search
+            int high = ERAS.length / 3;
+        
+            while (low < high - 1) {
+                int i = (low + high) / 2;
+                int diff = year - ERAS[i*3];
+
+                // If years are the same, then compare the months, and if those
+                // are the same, compare days of month.  In the ERAS array
+                // months are 1-based for easier maintenance.
+                if (diff == 0) {
+                    diff = internalGet(MONTH) - (ERAS[i*3 + 1] - 1);
+                    if (diff == 0) {
+                        diff = internalGet(DAY_OF_MONTH) - ERAS[i*3 + 2];
+                    }
+                }
+                if (diff >= 0) {
+                    low = i;
+                } else {
+                    high = i;
+                }
+            }
+        }
+
+        // Now we've found the last era that starts before this date, so
+        // adjust the year to count from the start of that era.  Note that
+        // all dates before the first era will fall into the first era by
+        // the algorithm.
+        internalSet(ERA, low);
+        internalSet(YEAR, year - ERAS[low*3] + 1);
+    }
+
+    private static final int[] ERAS = {
+    //  Gregorian date of each emperor's ascension
+    //  Years are AD, months are 1-based.
+    //  Year  Month Day
+         645,    6, 19,     // Taika
+         650,    2, 15,     // Hakuchi
+         672,    1,  1,     // Hakuho
+         686,    7, 20,     // Shucho
+         701,    3, 21,     // Taiho
+         704,    5, 10,     // Keiun
+         708,    1, 11,     // Wado
+         715,    9,  2,     // Reiki
+         717,   11, 17,     // Yoro
+         724,    2,  4,     // Jinki
+         729,    8,  5,     // Tempyo
+         749,    4, 14,     // Tempyo-kampo
+         749,    7,  2,     // Tempyo-shoho
+         757,    8, 18,     // Tempyo-hoji
+         765,    1,  7,     // Tempho-jingo
+         767,    8, 16,     // Jingo-keiun
+         770,   10,  1,     // Hoki
+         781,    1,  1,     // Ten-o
+         782,    8, 19,     // Enryaku
+         806,    5, 18,     // Daido
+         810,    9, 19,     // Konin
+         824,    1,  5,     // Tencho
+         834,    1,  3,     // Showa
+         848,    6, 13,     // Kajo
+         851,    4, 28,     // Ninju
+         854,   11, 30,     // Saiko
+         857,    2, 21,     // Tennan
+         859,    4, 15,     // Jogan
+         877,    4, 16,     // Genkei
+         885,    2, 21,     // Ninna
+         889,    4, 27,     // Kampyo
+         898,    4, 26,     // Shotai
+         901,    7, 15,     // Engi
+         923,    4, 11,     // Encho
+         931,    4, 26,     // Shohei
+         938,    5, 22,     // Tengyo
+         947,    4, 22,     // Tenryaku
+         957,   10, 27,     // Tentoku
+         961,    2, 16,     // Owa
+         964,    7, 10,     // Koho
+         968,    8, 13,     // Anna
+         970,    3, 25,     // Tenroku
+         973,   12, 20,     // Ten-en
+         976,    7, 13,     // Jogen
+         978,   11, 29,     // Tengen
+         983,    4, 15,     // Eikan
+         985,    4, 27,     // Kanna
+         987,    4,  5,     // Ei-en
+         989,    8,  8,     // Eiso
+         990,   11,  7,     // Shoryaku
+         995,    2, 22,     // Chotoku
+         999,    1, 13,     // Choho
+        1004,    7, 20,     // Kanko
+        1012,   12, 25,     // Chowa
+        1017,    4, 23,     // Kannin
+        1021,    2,  2,     // Jian
+        1024,    7, 13,     // Manju
+        1028,    7, 25,     // Chogen
+        1037,    4, 21,     // Choryaku
+        1040,   11, 10,     // Chokyu
+        1044,   11, 24,     // Kantoku
+        1046,    4, 14,     // Eisho
+        1053,    1, 11,     // Tengi
+        1058,    8, 29,     // Kohei
+        1065,    8,  2,     // Jiryaku
+        1069,    4, 13,     // Enkyu
+        1074,    8, 23,     // Shoho
+        1077,   11, 17,     // Shoryaku
+        1081,    2, 10,     // Eiho
+        1084,    2,  7,     // Otoku
+        1087,    4,  7,     // Kanji
+        1094,   12, 15,     // Kaho
+        1096,   12, 17,     // Eicho
+        1097,   11, 21,     // Shotoku
+        1099,    8, 28,     // Kowa
+        1104,    2, 10,     // Choji
+        1106,    4,  9,     // Kasho
+        1108,    8,  3,     // Tennin
+        1110,    7, 13,     // Ten-ei
+        1113,    7, 13,     // Eikyu
+        1118,    4,  3,     // Gen-ei
+        1120,    4, 10,     // Hoan
+        1124,    4,  3,     // Tenji
+        1126,    1, 22,     // Daiji
+        1131,    1, 29,     // Tensho
+        1132,    8, 11,     // Chosho
+        1135,    4, 27,     // Hoen
+        1141,    7, 10,     // Eiji
+        1142,    4, 28,     // Koji
+        1144,    2, 23,     // Tenyo
+        1145,    7, 22,     // Kyuan
+        1151,    1, 26,     // Ninpei
+        1154,   10, 28,     // Kyuju
+        1156,    4, 27,     // Hogen
+        1159,    4, 20,     // Heiji
+        1160,    1, 10,     // Eiryaku
+        1161,    9,  4,     // Oho
+        1163,    3, 29,     // Chokan
+        1165,    6,  5,     // Eiman
+        1166,    8, 27,     // Nin-an
+        1169,    4,  8,     // Kao
+        1171,    4, 21,     // Shoan
+        1175,    7, 28,     // Angen
+        1177,    8,  4,     // Jisho
+        1181,    7, 14,     // Yowa
+        1182,    5, 27,     // Juei
+        1184,    4, 16,     // Genryuku
+        1185,    8, 14,     // Bunji
+        1190,    4, 11,     // Kenkyu
+        1199,    4, 27,     // Shoji
+        1201,    2, 13,     // Kennin
+        1204,    2, 20,     // Genkyu
+        1206,    4, 27,     // Ken-ei
+        1207,   10, 25,     // Shogen
+        1211,    3,  9,     // Kenryaku
+        1213,   12,  6,     // Kenpo
+        1219,    4, 12,     // Shokyu
+        1222,    4, 13,     // Joo
+        1224,   11, 20,     // Gennin
+        1225,    4, 20,     // Karoku
+        1227,   12, 10,     // Antei
+        1229,    3,  5,     // Kanki
+        1232,    4,  2,     // Joei
+        1233,    4, 15,     // Tempuku
+        1234,   11,  5,     // Bunryaku
+        1235,    9, 19,     // Katei
+        1238,   11, 23,     // Ryakunin
+        1239,    2,  7,     // En-o
+        1240,    7, 16,     // Ninji
+        1243,    2, 26,     // Kangen
+        1247,    2, 28,     // Hoji
+        1249,    3, 18,     // Kencho
+        1256,   10,  5,     // Kogen
+        1257,    3, 14,     // Shoka
+        1259,    3, 26,     // Shogen
+        1260,    4, 13,     // Bun-o
+        1261,    2, 20,     // Kocho
+        1264,    2, 28,     // Bun-ei
+        1275,    4, 25,     // Kenji
+        1278,    2, 29,     // Koan
+        1288,    4, 28,     // Shoo
+        1293,    8, 55,     // Einin
+        1299,    4, 25,     // Shoan
+        1302,   11, 21,     // Kengen
+        1303,    8,  5,     // Kagen
+        1306,   12, 14,     // Tokuji
+        1308,   10,  9,     // Enkei
+        1311,    4, 28,     // Ocho
+        1312,    3, 20,     // Showa
+        1317,    2,  3,     // Bunpo
+        1319,    4, 28,     // Geno
+        1321,    2, 23,     // Genkyo
+        1324,   12,  9,     // Shochu
+        1326,    4, 26,     // Kareki
+        1329,    8, 29,     // Gentoku
+        1331,    8,  9,     // Genko
+        1334,    1, 29,     // Kemmu
+        1336,    2, 29,     // Engen
+        1340,    4, 28,     // Kokoku
+        1346,   12,  8,     // Shohei
+        1370,    7, 24,     // Kentoku
+        1372,    4,  1,     // Bunch\u0169
+        1375,    5, 27,     // Tenju
+        1379,    3, 22,     // Koryaku
+        1381,    2, 10,     // Kowa
+        1384,    4, 28,     // Gench\u0169
+        1384,    2, 27,     // Meitoku
+        1387,    8, 23,     // Kakei
+        1389,    2,  9,     // Koo
+        1390,    3, 26,     // Meitoku
+        1394,    7,  5,     // Oei
+        1428,    4, 27,     // Shocho
+        1429,    9,  5,     // Eikyo
+        1441,    2, 17,     // Kakitsu
+        1444,    2,  5,     // Bun-an
+        1449,    7, 28,     // Hotoku
+        1452,    7, 25,     // Kyotoku
+        1455,    7, 25,     // Kosho
+        1457,    9, 28,     // Choroku
+        1460,   12, 21,     // Kansho
+        1466,    2, 28,     // Bunsho
+        1467,    3,  3,     // Onin
+        1469,    4, 28,     // Bunmei
+        1487,    7, 29,     // Chokyo
+        1489,    8, 21,     // Entoku
+        1492,    7, 19,     // Meio
+        1501,    2, 29,     // Bunki
+        1504,    2, 30,     // Eisho
+        1521,    8, 23,     // Taiei
+        1528,    8, 20,     // Kyoroku
+        1532,    7, 29,     // Tenmon
+        1555,   10, 23,     // Koji
+        1558,    2, 28,     // Eiroku
+        1570,    4, 23,     // Genki
+        1573,    7, 28,     // Tensho
+        1592,   12,  8,     // Bunroku
+        1596,   10, 27,     // Keicho
+        1615,    7, 13,     // Genwa
+        1624,    2, 30,     // Kan-ei
+        1644,   12, 16,     // Shoho
+        1648,    2, 15,     // Keian
+        1652,    9, 18,     // Shoo
+        1655,    4, 13,     // Meiryaku
+        1658,    7, 23,     // Manji
+        1661,    4, 25,     // Kanbun
+        1673,    9, 21,     // Enpo
+        1681,    9, 29,     // Tenwa
+        1684,    2, 21,     // Jokyo
+        1688,    9, 30,     // Genroku
+        1704,    3, 13,     // Hoei
+        1711,    4, 25,     // Shotoku
+        1716,    6, 22,     // Kyoho
+        1736,    4, 28,     // Genbun
+        1741,    2, 27,     // Kanpo
+        1744,    2, 21,     // Enkyo
+        1748,    7, 12,     // Kan-en
+        1751,   10, 27,     // Horyaku
+        1764,    6,  2,     // Meiwa
+        1772,   11, 16,     // An-ei
+        1781,    4,  2,     // Tenmei
+        1789,    1, 25,     // Kansei
+        1801,    2,  5,     // Kyowa
+        1804,    2, 11,     // Bunka
+        1818,    4, 22,     // Bunsei
+        1830,   12, 10,     // Tenpo
+        1844,   12,  2,     // Koka
+        1848,    2, 28,     // Kaei
+        1854,   11, 27,     // Ansei
+        1860,    3, 18,     // Man-en
+        1861,    2, 19,     // Bunkyu
+        1864,    2, 20,     // Genji
+        1865,    4,  7,     // Keio
+        1868,    9,  8,     // Meiji
+        1912,    7, 30,     // Taisho
+        1926,   12, 25,     // Showa
+        1989,    1,  8,     // Heisei
+    };
+
+    //-------------------------------------------------------------------------
+    // Public constants for some of the recent eras that folks might use...
+    //-------------------------------------------------------------------------
+
+    // Constant for the current era.  This must be regularly updated.
+    /**
+     * @stable ICU 2.8
+     */
+    static public final int CURRENT_ERA = (ERAS.length / 3) - 1;
+    
+    /** 
+     * Constant for the era starting on Sept. 8, 1868 AD.
+     * @stable  ICU 2.8 
+     */
+    static public final int MEIJI = CURRENT_ERA - 3;
+
+    /** 
+     * Constant for the era starting on July 30, 1912 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int TAISHO = CURRENT_ERA - 2;
+    
+    /** 
+     * Constant for the era starting on Dec. 25, 1926 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int SHOWA = CURRENT_ERA - 1;
+
+    /** 
+     * Constant for the era starting on Jan. 7, 1989 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int HEISEI = CURRENT_ERA;
+
+    /**
+     * Override GregorianCalendar.  We should really handle YEAR_WOY and
+     * EXTENDED_YEAR here too to implement the 1..5000000 range, but it's
+     * not critical.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        switch (field) {
+        case ERA:
+            if (limitType == MINIMUM || limitType == GREATEST_MINIMUM) {
+                return 1;
+            }
+            return CURRENT_ERA;
+        case YEAR:
+        {
+            switch (limitType) {
+            case MINIMUM:
+            case GREATEST_MINIMUM:
+                return 1;
+            case LEAST_MAXIMUM:
+                return 1;
+            case MAXIMUM:
+                return super.handleGetLimit(field, MAXIMUM) - ERAS[CURRENT_ERA*3];
+            }
+        }
+        default:
+            return super.handleGetLimit(field, limitType);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "japanese";
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getActualMaximum(int field) {
+        if (field == YEAR) {
+            int era = get(Calendar.ERA);
+            if (era == CURRENT_ERA) {
+                // TODO: Investigate what value should be used here - revisit after 4.0.
+                return handleGetLimit(YEAR, MAXIMUM);
+            } else {
+                int nextEraYear = ERAS[(era+1)*3];
+                int nextEraMonth = ERAS[(era+1)*3 + 1];
+                int nextEraDate = ERAS[(era+1)*3 + 2];
+
+                int maxYear = nextEraYear - ERAS[era*3] + 1; // 1-base
+                if (nextEraMonth == 1 && nextEraDate == 1) {
+                    // Substract 1, because the next era starts at Jan 1
+                    maxYear--;
+                }
+                return maxYear;
+            }
+        }
+        return super.getActualMaximum(field);
+    }
+}
diff --git a/src/com/ibm/icu/util/LocaleData.java b/src/com/ibm/icu/util/LocaleData.java
new file mode 100644
index 0000000..4566362
--- /dev/null
+++ b/src/com/ibm/icu/util/LocaleData.java
@@ -0,0 +1,303 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * A class for accessing miscelleneous data in the locale bundles
+ * @author ram
+ * @stable ICU 2.8
+ */
+public final class LocaleData {
+    
+    private static final String EXEMPLAR_CHARS      = "ExemplarCharacters";
+    private static final String MEASUREMENT_SYSTEM  = "MeasurementSystem";
+    private static final String PAPER_SIZE          = "PaperSize";
+    private boolean noSubstitute;
+    private ICUResourceBundle bundle;
+
+    /**
+     * EXType for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_STANDARD = 0;
+
+    /**
+     * EXType for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_AUXILIARY = 1;
+
+    /**
+     * Count of EXTypes for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_COUNT = 2;
+    
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int QUOTATION_START = 0;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int QUOTATION_END = 1;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ALT_QUOTATION_START = 2;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ALT_QUOTATION_END = 3;
+
+    /**
+     * Count of delimiter types for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int DELIMITER_COUNT = 4;
+
+    // private constructor to prevent default construction
+    ///CLOVER:OFF
+    private LocaleData(){}
+    ///CLOVER:ON
+
+    /**
+     * Returns the set of exemplar characters for a locale.
+     *
+     * @param locale    Locale for which the exemplar character set
+     *                  is to be retrieved.
+     * @param options   Bitmask for options to apply to the exemplar pattern.
+     *                  Specify zero to retrieve the exemplar set as it is
+     *                  defined in the locale data.  Specify
+     *                  UnicodeSet.CASE to retrieve a case-folded exemplar
+     *                  set.  See {@link UnicodeSet#applyPattern(String,
+     *                  int)} for a complete list of valid options.  The
+     *                  IGNORE_SPACE bit is always set, regardless of the
+     *                  value of 'options'.
+     * @return          The set of exemplar characters for the given locale.
+     * @stable ICU 3.0
+     */
+    public static UnicodeSet getExemplarSet(ULocale locale, int options) {
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        String pattern = bundle.getString(EXEMPLAR_CHARS);
+        return new UnicodeSet(pattern, UnicodeSet.IGNORE_SPACE | options);
+    }
+    
+    /**
+     * Returns the set of exemplar characters for a locale.
+     *
+     * @param options   Bitmask for options to apply to the exemplar pattern.
+     *                  Specify zero to retrieve the exemplar set as it is
+     *                  defined in the locale data.  Specify
+     *                  UnicodeSet.CASE to retrieve a case-folded exemplar
+     *                  set.  See {@link UnicodeSet#applyPattern(String,
+     *                  int)} for a complete list of valid options.  The
+     *                  IGNORE_SPACE bit is always set, regardless of the
+     *                  value of 'options'.
+     * @param extype      The type of exemplar set to be retrieved,
+     *                  ES_STANDARD or ES_AUXILIARY
+     * @return          The set of exemplar characters for the given locale.
+     * @stable ICU 3.4
+     */
+    public UnicodeSet getExemplarSet(int options, int extype) {
+        String [] exemplarSetTypes = { "ExemplarCharacters", "AuxExemplarCharacters" };
+        try{
+            ICUResourceBundle stringBundle = (ICUResourceBundle) bundle.get(exemplarSetTypes[extype]);
+    
+            if ( noSubstitute && (stringBundle.getLoadingStatus() == ICUResourceBundle.FROM_ROOT) )
+               return null;
+    
+            return new UnicodeSet(stringBundle.getString(), UnicodeSet.IGNORE_SPACE | options);
+        }catch(MissingResourceException ex){
+            if(extype==LocaleData.ES_AUXILIARY){
+                return new UnicodeSet();
+            }
+            throw ex;
+        }
+    }
+
+    /**
+     * Gets the LocaleData object associated with the ULocale specified in locale
+     *
+     * @param locale    Locale with thich the locale data object is associated.
+     * @return          A locale data object.
+     * @stable ICU 3.4
+     */
+    public static final LocaleData getInstance(ULocale locale) {
+       LocaleData ld = new LocaleData();
+       ld.bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale );
+       ld.noSubstitute = false;
+       return ld;
+    }
+
+    /**
+     * Gets the LocaleData object associated with the default locale
+     *
+     * @return          A locale data object.
+     * @stable ICU 3.4
+     */
+    public static final LocaleData getInstance() {
+       return LocaleData.getInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Sets the "no substitute" behavior of this locale data object.
+     *
+     * @param setting   Value for the no substitute behavior.  If TRUE,
+     *                  methods of this locale data object will return
+     *                  an error when no data is available for that method,
+     *                  given the locale ID supplied to the constructor.
+     * @stable ICU 3.4
+     */
+    public void setNoSubstitute(boolean setting) {
+       noSubstitute = setting;
+    }
+
+    /**
+     * Gets the "no substitute" behavior of this locale data object.
+     *
+     * @return          Value for the no substitute behavior.  If TRUE,
+     *                  methods of this locale data object will return
+     *                  an error when no data is available for that method,
+     *                  given the locale ID supplied to the constructor.
+     * @stable ICU 3.4
+     */
+    public boolean getNoSubstitute() {
+       return noSubstitute;
+    }
+
+    /**
+     * Retrieves a delimiter string from the locale data.
+     *
+     * @param type      The type of delimiter string desired.  Currently,
+     *                  the valid choices are QUOTATION_START, QUOTATION_END,
+     *                  ALT_QUOTATION_START, or ALT_QUOTATION_END.
+     * @return          The desired delimiter string.
+     * @stable ICU 3.4
+     */
+    public String getDelimiter(int type) {
+        String [] delimiterTypes = { "quotationStart", 
+                                     "quotationEnd", 
+                                     "alternateQuotationStart", 
+                                     "alternateQuotationEnd" };
+
+        ICUResourceBundle stringBundle = (ICUResourceBundle) bundle.get("delimiters").get(delimiterTypes[type]);
+
+        if ( noSubstitute && (stringBundle.getLoadingStatus() == ICUResourceBundle.FROM_ROOT) )
+           return null;
+
+        return new String (stringBundle.getString());
+    }
+
+    /**
+     * Enumeration for representing the measurement systems.
+     * @stable ICU 2.8
+     */
+    public static final class MeasurementSystem{
+        /** 
+         * Measurement system specified by Le Syst&#x00E8;me International d'Unit&#x00E9;s (SI)
+         * otherwise known as Metric system. 
+         * @stable ICU 2.8
+         */
+        public static final MeasurementSystem SI = new MeasurementSystem(0);
+ 
+        /** 
+         * Measurement system followed in the United States of America. 
+         * @stable ICU 2.8
+         */ 
+        public static final MeasurementSystem US = new MeasurementSystem(1);
+    
+        private int systemID;
+        private MeasurementSystem(int id){
+            systemID = id;
+        }
+
+        private boolean equals(int id){
+            return systemID == id;
+        }
+    }
+   
+    /**
+     * Returns the measurement system used in the locale specified by the locale.
+     *
+     * @param locale      The locale for which the measurement system to be retrieved.
+     * @return MeasurementSystem the measurement system used in the locale.
+     * @stable ICU 3.0
+     */
+    public static final MeasurementSystem getMeasurementSystem(ULocale locale){
+        UResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        UResourceBundle sysBundle = bundle.get(MEASUREMENT_SYSTEM);
+        
+        int system = sysBundle.getInt();
+        if(MeasurementSystem.US.equals(system)){
+            return MeasurementSystem.US;
+        }
+        if(MeasurementSystem.SI.equals(system)){
+            return MeasurementSystem.SI;
+        }
+        // return null if the object is null or is not an instance
+        // of integer indicating an error
+        return null;
+    }
+    
+    /**
+     * A class that represents the size of letter head 
+     * used in the country
+     * @stable ICU 2.8
+     */
+    public static final class PaperSize{
+        private int height;
+        private int width;
+        
+        private PaperSize(int h, int w){
+            height = h;
+            width = w;
+        }
+        /** 
+         * Retruns the height of the paper
+         * @return the height 
+         * @stable ICU 2.8
+         */
+        public int getHeight(){
+            return height;
+        }
+        /**
+         * Returns the width of hte paper
+         * @return the width
+         * @stable ICU 2.8
+         */
+        public int getWidth(){
+            return width;
+        }
+    }
+    
+    /**
+     * Returns the size of paper used in the locale. The paper sizes returned are always in 
+     * <em> milli-meters<em>.
+     * @param locale The locale for which the measurement system to be retrieved. 
+     * @return The paper size used in the locale
+     * @stable ICU 3.0
+     */
+    public static final PaperSize getPaperSize(ULocale locale){
+        UResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        UResourceBundle obj = bundle.get(PAPER_SIZE);
+        int[] size = obj.getIntVector();
+        return new PaperSize(size[0], size[1]);
+    }
+}
diff --git a/src/com/ibm/icu/util/Measure.java b/src/com/ibm/icu/util/Measure.java
new file mode 100644
index 0000000..adb1b84
--- /dev/null
+++ b/src/com/ibm/icu/util/Measure.java
@@ -0,0 +1,123 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.lang.Number;
+
+/**
+ * An amount of a specified unit, consisting of a Number and a Unit.
+ * For example, a length measure consists of a Number and a length
+ * unit, such as feet or meters.  This is an abstract class.
+ * Subclasses specify a concrete Unit type.
+ *
+ * <p>Measure objects are parsed and formatted by subclasses of
+ * MeasureFormat.
+ *
+ * <p>Measure objects are immutable.
+ *
+ * @see java.lang.Number
+ * @see com.ibm.icu.util.MeasureUnit
+ * @see com.ibm.icu.text.MeasureFormat
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class Measure {
+    
+    private Number number;
+
+    private MeasureUnit unit;
+
+    /**
+     * Constructs a new object given a number and a unit.
+     * @param number the number
+     * @param unit the unit
+     * @stable ICU 3.0
+     */
+    protected Measure(Number number, MeasureUnit unit) {
+        if (number == null || unit == null) {
+            throw new NullPointerException();
+        }
+        this.number = number;
+        this.unit = unit;
+    }
+    
+    /**
+     * Returns true if the given object is equal to this object.
+     * @return true if this object is equal to the given object
+     * @stable ICU 3.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj == this) return true;
+        try {
+            Measure m = (Measure) obj;
+            return unit.equals(m.unit) && numbersEqual(number, m.number);
+        } catch (ClassCastException e) {
+            return false;
+        }
+    }
+    
+    /**
+     * See if two numbers are identical or have the same double value.
+     * @param a A number
+     * @param b Another number to be compared with
+     * @return Returns true if two numbers are identical or have the same double value.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    // TODO improve this to catch more cases (two different longs that have same double values, BigDecimals, etc)
+    public static boolean numbersEqual(Number a, Number b) {
+        if (a.equals(b)) {
+            return true;
+        }
+        if (a.doubleValue() == b.doubleValue()) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns a hashcode for this object.
+     * @return a 32-bit hash
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return number.hashCode() ^ unit.hashCode();
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @return a string representation consisting of the ISO currency
+     * code together with the numeric amount
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return number.toString() + ' ' + unit.toString();
+    }
+
+    /**
+     * Returns the numeric value of this object.
+     * @return this object's Number
+     * @stable ICU 3.0
+     */
+    public Number getNumber() {
+        return number;
+    }
+
+    /**
+     * Returns the unit of this object.
+     * @return this object's Unit
+     * @stable ICU 3.0
+     */
+    public MeasureUnit getUnit() {
+        return unit;
+    }
+}
diff --git a/src/com/ibm/icu/util/MeasureUnit.java b/src/com/ibm/icu/util/MeasureUnit.java
new file mode 100644
index 0000000..2914750
--- /dev/null
+++ b/src/com/ibm/icu/util/MeasureUnit.java
@@ -0,0 +1,27 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+/**
+ * A unit such as length, mass, volume, currency, etc.  A unit is
+ * coupled with a numeric amount to produce a Measure.
+ *
+ * @see com.ibm.icu.util.Measure
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class MeasureUnit {
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected MeasureUnit() {}
+}
diff --git a/src/com/ibm/icu/util/OverlayBundle.java b/src/com/ibm/icu/util/OverlayBundle.java
new file mode 100644
index 0000000..aea5438
--- /dev/null
+++ b/src/com/ibm/icu/util/OverlayBundle.java
@@ -0,0 +1,173 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.*;
+
+/**
+ * A ResourceBundle that overlays one hierarchy atop another.  This is
+ * best explained by example.  Suppose one wants to use the
+ * resource hiararchy (in JDK 1.2 and 1.3, but not 1.4) at 
+ * "java.text.resources.LocaleElements", but one wants to use
+ * a modified version of the "NumberPatterns" resource in the
+ * fr_FR locale.  One way to do this is to add special case code
+ * to the lookup operation to check for fr_FR and the key
+ * "NumberPatterns", and in that case, load up custom data.  However,
+ * this becomes unwieldy and places some information about the
+ * effective resource hierarchy into the code.
+ *
+ * The OverlayBundle solves this problem by layering another
+ * hierarchy, e.g, "com.acme.resources.LocaleElements", on top of a
+ * base hierarchy.  When a resource is requested, it is first sought
+ * in the overlay hierarchy, and if not found there, it is sought in
+ * the base hierarchy.  Multiple overlays are supported, but in
+ * practice one is usually sufficient.
+ * 
+ * The OverlayBundle also addresses the problem of country-oriented
+ * data.  To specify the default data for a language, one just sets
+ * the language resource bundle data.  However, specifying the default
+ * data for a country using the standard ResourceBundle mechanism is
+ * impossible.  The OverlayBundle recognizes "wildcard" locales with
+ * the special language code "xx".  When looking up data for a locale
+ * with a non-empty country, if an exact locale match cannot be found,
+ * the OverlayBundle looks for data in the locale xx_YY, where YY is
+ * the country being sought.  This effectively adds another entry in
+ * the fallback sequence for a locale aa_BB: aa_BB, xx_BB, aa, root.
+ * Wildcard locales are not implemented for the base hierarchy, only
+ * for overlays.
+ *
+ * The OverlayBundle is implemented as an array of n ResourceBundle
+ * base names.  The base names are searched from 0 to n-1.  Base name
+ * n-1 is special; it is the base hierarchy.  This should be a
+ * well-populated hierarchy with most of the default data, typically,
+ * the icu or sun core hierarchies.  The base hierarchy is
+ * treated differently from the overlays above it.  It does not get
+ * wildcard resolution, and the getKeys() framework method is
+ * delegated to the base hierarchy bundle.
+ *
+ * Usage: Instantiate an OverlayBundle directly (not via a factory
+ * method as in ResourceBundle).  Instead of specifying a single base
+ * name, pass it an array of 2 or more base names.  After that, use it
+ * exactly as you would use ResourceBundle.
+ *
+ * @see java.util.ResourceBundle
+ * @author Alan Liu
+ * @internal
+ * @deprecated ICU 2.4. This class may be removed or modified.
+ */
+// prepare to deprecate in next release
+///CLOVER:OFF
+public class OverlayBundle extends ResourceBundle {
+
+    /**
+     * The array of base names, with the length-1 entry being the base
+     * hierarchy, typically "sun.text.resources.LocaleElements".
+     */
+    private String[] baseNames;
+
+    /**
+     * The requested locale.
+     */
+    private Locale locale;
+
+    /**
+     * Loaded bundles.  These will be null until they are loaded on
+     * demand.
+     */
+    private ResourceBundle[] bundles;
+
+    /**
+     * Construct an overlay bundle given a sequence of base names and
+     * a locale.
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */
+    public OverlayBundle(String[] baseNames,
+                         Locale locale) {
+        this.baseNames = baseNames;
+        this.locale = locale;
+        bundles = new ResourceBundle[baseNames.length];
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[i].getObject().
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */ 
+   protected Object handleGetObject(String key) 
+        throws MissingResourceException {
+
+        Object o = null;
+
+        for (int i=0; i<bundles.length; ++i) {
+            load(i);
+            try {
+                o = bundles[i].getObject(key);
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+            }
+            if (o != null) {
+                break;
+            }
+        }
+
+        return o;
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[bundles.length-1].getKeys().
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */
+    public Enumeration getKeys() {
+        // Return the enumeration of the last bundle, which is the base
+        // of our hierarchy stack.
+        int i = bundles.length - 1;
+        load(i);
+        return bundles[i].getKeys();
+    }
+
+    /**
+     * Load the i-th bundle and implement wildcard resolution.
+     */
+    private void load(int i)
+        throws MissingResourceException {
+
+        if (bundles[i] == null) {
+            boolean tryWildcard = false;
+            try {
+                bundles[i] = ResourceBundle.getBundle(baseNames[i], locale);
+                if (bundles[i].getLocale().equals(locale)) {
+                    return;
+                }
+                if (locale.getCountry().length() != 0 && i != bundles.length-1) {
+                    tryWildcard = true;
+                }
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+                tryWildcard = true;
+            }
+            if (tryWildcard) {
+                Locale wildcard = new Locale("xx", locale.getCountry(),
+                                             locale.getVariant());
+                try {
+                    bundles[i] = ResourceBundle.getBundle(baseNames[i], wildcard);
+                } catch (MissingResourceException e) {
+                    if (bundles[i] == null) {
+                        throw e;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/util/RangeDateRule.java b/src/com/ibm/icu/util/RangeDateRule.java
new file mode 100644
index 0000000..c93f433
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeDateRule.java
@@ -0,0 +1,168 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Vector;
+
+/**
+ * Implementation of DateRule that takes a range.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class RangeDateRule implements DateRule {
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public RangeDateRule() {
+    }
+
+    /**
+     * @internal
+     */
+    // Range is a package-private class so this should be package-private too, probably
+//    public RangeDateRule(Range[] ranges)
+//    {
+//        for (int i = 0; i < ranges.length; i++) {
+//            this.ranges.addElement(ranges[i]);
+//        }
+//    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void add(DateRule rule) {
+        add(new Date(Long.MIN_VALUE), rule);
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void add(Date start, DateRule rule) {
+        // TODO: Insert in the right place
+        // System.out.println("Add: " + start.toString());
+        ranges.addElement(new Range(start, rule));
+    }
+
+    //-----------------------------------------------------------------------
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start) {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        if (index == ranges.size()) {
+            index = 0;
+        }
+        Date result = null;
+
+        Range r = rangeAt(index);
+        Range e = rangeAt(index+1);
+
+        if (r != null && r.rule != null)
+        {
+            if (e != null) {
+                result = r.rule.firstBetween(start, e.start);
+            } else {
+                result = r.rule.firstAfter(start);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end) {
+        if (end == null) {
+            return firstAfter(start);
+        }
+        
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range next = rangeAt(index);
+
+        while (result == null && next != null && !next.start.after(end))
+        {
+            Range r = next;
+            next = rangeAt(index+1);
+
+            if (r.rule != null) {
+                Date e = (next != null && !next.start.after(end)) ? next.start
+                                                                  : end;
+                result = r.rule.firstBetween(start, e);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date) {
+        Range r = rangeAt(startIndex(date));
+        return r != null && r.rule != null && r.rule.isOn(date);
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return firstBetween(start,end) == null;
+    }
+
+    /*
+     * find the index of the last range whose start date is before "start"
+     * returns an index >= ranges.size() if there is none
+     */
+    private int startIndex(Date start) {
+        int lastIndex = ranges.size();
+
+        for (int i = 0; i < ranges.size(); i++) {
+            Range r = (Range) ranges.elementAt(i);
+            if (start.before(r.start)) {
+                break;
+            }
+            lastIndex = i;
+        }
+        return lastIndex;
+    }
+
+    private Range rangeAt(int index) {
+       return (index < ranges.size()) ? (Range) ranges.elementAt(index)
+                                      : null;
+    }
+
+    Vector ranges = new Vector(2,2);
+}
+
+//-----------------------------------------------------------------------
+// Privates
+//
+
+class Range {
+    public Range(Date start, DateRule rule) {
+        this.start = start;
+        this.rule = rule;
+    }
+    public Date     start;
+    public DateRule rule;
+}
+
diff --git a/src/com/ibm/icu/util/RangeValueIterator.java b/src/com/ibm/icu/util/RangeValueIterator.java
new file mode 100644
index 0000000..28744c1
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeValueIterator.java
@@ -0,0 +1,110 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int index, int value>, 
+ * where index is the sorted integer index in ascending order and value, its 
+ * associated integer value.</p>
+ * <p>The result for each iteration is the consecutive range of 
+ * <int index, int value> with the same value. Result is represented by 
+ * <start, limit, value> where</p>
+ * <ul>
+ * <li> start is the starting integer of the result range
+ * <li> limit is 1 after the maximum integer that follows start, such that
+ *      all integers between start and (limit - 1), inclusive, have the same 
+ *      associated integer value.
+ * <li> value is the integer value that all integers from start to (limit - 1) 
+ *      share in common.
+ * </ul>
+ * <p>
+ * Hence value(start) = value(start + 1) = .... = value(start + n) = .... =
+ * value(limit - 1). However value(start -1) != value(start) and 
+ * value(limit) != value(start).
+ * </p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character type iterator in UCharacter.getTypeIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * RangeValueIterator iterator = UCharacter.getTypeIterator();
+ * RangeValueIterator.Element result = new RangeValueIterator.Element();
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.start) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(result.limit - 1) + 
+ *                        " has the character type " + result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public interface RangeValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * Return result wrapper for com.ibm.icu.util.RangeValueIterator.
+    * Stores the start and limit of the continous result range and the
+    * common value all integers between [start, limit - 1] has.
+    * @stable ICU 2.6
+    */
+    public class Element
+    {
+        // public data member ---------------------------------------------
+        
+        /**
+        * Starting integer of the continuous result range that has the same 
+        * value
+        * @stable ICU 2.6
+        */
+        public int start;
+        /**
+        * (End + 1) integer of continuous result range that has the same 
+        * value
+        * @stable ICU 2.6
+        */
+        public int limit;
+        /**
+        * Gets the common value of the continous result range
+        * @stable ICU 2.6
+        */ 
+        public int value;
+        
+        // public constructor --------------------------------------------
+        
+        /**
+         * Empty default constructor to make javadoc happy
+         * @stable ICU 2.4
+         */
+        public Element() 
+        {
+        }
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next maximal result range with a common value and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result range and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @stable ICU 2.6
+    */
+    public boolean next(Element element);
+    
+    /**
+    * Resets the iterator to the beginning of the iteration.
+    * @stable ICU 2.6
+    */
+    public void reset();
+}
diff --git a/src/com/ibm/icu/util/RuleBasedTimeZone.java b/src/com/ibm/icu/util/RuleBasedTimeZone.java
new file mode 100644
index 0000000..207ca97
--- /dev/null
+++ b/src/com/ibm/icu/util/RuleBasedTimeZone.java
@@ -0,0 +1,695 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>RuleBasedTimeZone</code> is a concrete subclass of <code>TimeZone</code> that allows users to define
+ * custom historic time transition rules.
+ * 
+ * @see com.ibm.icu.util.TimeZoneRule
+ * 
+ * @stable ICU 3.8
+ */
+public class RuleBasedTimeZone extends BasicTimeZone {
+
+    private static final long serialVersionUID = 7580833058949327935L;
+
+    private final InitialTimeZoneRule initialRule;
+    private List historicRules;
+    private AnnualTimeZoneRule[] finalRules;
+
+    private transient List historicTransitions;
+    private transient boolean upToDate;
+
+    /**
+     * Constructs a <code>RuleBasedTimeZone</code> object with the ID and the
+     * <code>InitialTimeZoneRule</code>
+     * 
+     * @param id                The time zone ID.
+     * @param initialRule       The initial time zone rule.
+     * 
+     * @stable ICU 3.8
+     */
+    public RuleBasedTimeZone(String id, InitialTimeZoneRule initialRule) {
+        super.setID(id);
+        this.initialRule = initialRule;
+    }
+
+    /**
+     * Adds the <code>TimeZoneRule</code> which represents time transitions.
+     * The <code>TimeZoneRule</code> must have start times, that is, the result
+     * of {@link com.ibm.icu.util.TimeZoneRule#isTransitionRule()} must be true.
+     * Otherwise, <code>IllegalArgumentException</code> is thrown.
+     * 
+     * @param rule The <code>TimeZoneRule</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public void addTransitionRule(TimeZoneRule rule) {
+        if (!rule.isTransitionRule()) {
+            throw new IllegalArgumentException("Rule must be a transition rule");
+        }
+        if (rule instanceof AnnualTimeZoneRule
+                && ((AnnualTimeZoneRule)rule).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+            // One of the final rules applicable in future forever
+            if (finalRules == null) {
+                finalRules = new AnnualTimeZoneRule[2];
+                finalRules[0] = (AnnualTimeZoneRule)rule;
+            } else if (finalRules[1] == null) {
+                finalRules[1] = (AnnualTimeZoneRule)rule;
+            } else {
+                // Only a pair of AnnualTimeZoneRule is allowed.
+                throw new IllegalStateException("Too many final rules");
+            }
+        } else {
+            // If this is not a final rule, add it to the historic rule list 
+            if (historicRules == null) {
+                historicRules = new ArrayList();
+            }
+            historicRules.add(rule);
+        }
+        // Mark dirty, so transitions are recalculated when offset information is
+        // accessed next time.
+        upToDate = false;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+            int milliseconds) {
+        if (era == GregorianCalendar.BC) {
+            // Convert to extended year
+            year = 1 - year;
+        }
+        long time = Grego.fieldsToDay(year, month, day) * Grego.MILLIS_PER_DAY + milliseconds;
+        int[] offsets = new int[2];
+        getOffset(time, true, LOCAL_DST, LOCAL_STD, offsets);
+        return (offsets[0] + offsets[1]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public void getOffset(long time, boolean local, int[] offsets) {
+        getOffset(time, local, LOCAL_FORMER, LOCAL_LATTER, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        getOffset(date, true, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+    }
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        // Note: This implementation returns standard GMT offset
+        // as of current time.
+        long now = System.currentTimeMillis();
+        int[] offsets = new int[2];
+        getOffset(now, false, offsets);
+        return offsets[0];
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean inDaylightTime(Date date) {
+        int[] offsets = new int[2];
+        getOffset(date.getTime(), false, offsets);
+        return (offsets[1] != 0);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    ///CLOVER:OFF
+    public void setRawOffset(int offsetMillis) {
+        // TODO: Do nothing for now..
+        throw new UnsupportedOperationException("setRawOffset in RuleBasedTimeZone is not supported.");
+    }
+    ///CLOVER:ON
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean useDaylightTime() {
+        // Note: This implementation returns true when
+        // daylight saving time is used as of now or
+        // after the next transition.
+        long now = System.currentTimeMillis();
+        int[] offsets = new int[2];
+        getOffset(now, false, offsets);
+        if (offsets[1] != 0) {
+            return true;
+        }
+        // If DST is not used now, check if DST is used after the next transition
+        TimeZoneTransition tt = getNextTransition(now, false);
+        if (tt != null && tt.getTo().getDSTSavings() != 0) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasSameRules(TimeZone other) {
+        if (!(other instanceof RuleBasedTimeZone)) {
+            // We cannot reasonably compare rules in different types
+            return false;
+        }
+        RuleBasedTimeZone otherRBTZ = (RuleBasedTimeZone)other;
+
+        // initial rule
+        if (!initialRule.isEquivalentTo(otherRBTZ.initialRule)) {
+            return false;
+        }
+
+        // final rules
+        if (finalRules != null && otherRBTZ.finalRules != null) {
+            for (int i = 0; i < finalRules.length; i++) {
+                if (finalRules[i] == null && otherRBTZ.finalRules[i] == null) {
+                    continue;
+                }
+                if (finalRules[i] != null && otherRBTZ.finalRules[i] != null
+                        && finalRules[i].isEquivalentTo(otherRBTZ.finalRules[i])) {
+                    continue;
+                    
+                }
+                return false;
+            }
+        } else if (finalRules != null || otherRBTZ.finalRules != null) {
+            return false;
+        }
+
+        // historic rules
+        if (historicRules != null && otherRBTZ.historicRules != null) {
+            if (historicRules.size() != otherRBTZ.historicRules.size()) {
+                return false;
+            }
+            Iterator it = historicRules.iterator();
+            while (it.hasNext()) {
+                TimeZoneRule rule = (TimeZoneRule)it.next();
+                Iterator oit = otherRBTZ.historicRules.iterator();
+                boolean foundSameRule = false;
+                while (oit.hasNext()) {
+                    TimeZoneRule orule = (TimeZoneRule)oit.next();
+                    if (rule.isEquivalentTo(orule)) {
+                        foundSameRule = true;
+                        break;
+                    }
+                }
+                if (!foundSameRule) {
+                    return false;
+                }
+            }
+        } else if (historicRules != null || otherRBTZ.historicRules != null) {
+            return false;
+        }
+        return true;
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        int size = 1;
+        if (historicRules != null) {
+            size += historicRules.size();
+        }
+
+        if (finalRules != null) {
+            if (finalRules[1] != null) {
+                size += 2;
+            } else {
+                size++;
+            }
+        }
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        rules[0] = initialRule;
+        
+        int idx = 1;
+        if (historicRules != null) {
+            for (; idx < historicRules.size() + 1; idx++) {
+                rules[idx] = (TimeZoneRule)historicRules.get(idx - 1);
+            }
+        }
+        if (finalRules != null) {
+            rules[idx++] = finalRules[0];
+            if (finalRules[1] != null) {
+                rules[idx] = finalRules[1];
+            }
+        }
+        return rules;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        complete();
+        if (historicTransitions == null) {
+            return null;
+        }
+        boolean isFinal = false;
+        TimeZoneTransition result = null;
+        TimeZoneTransition tzt = (TimeZoneTransition)historicTransitions.get(0);
+        long tt = tzt.getTime();
+        if (tt > base || (inclusive && tt == base)) {
+            result = tzt;
+        } else {
+            int idx = historicTransitions.size() - 1;        
+            tzt = (TimeZoneTransition)historicTransitions.get(idx);
+            tt = tzt.getTime();
+            if (inclusive && tt == base) {
+                result = tzt;
+            } else if (tt <= base) {
+                if (finalRules != null) {
+                    // Find a transion time with finalRules
+                    Date start0 = finalRules[0].getNextStart(base,
+                            finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), inclusive);
+                    Date start1 = finalRules[1].getNextStart(base,
+                            finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), inclusive);
+
+                    if (start1.after(start0)) {
+                        tzt = new TimeZoneTransition(start0.getTime(), finalRules[1], finalRules[0]);
+                    } else {
+                        tzt = new TimeZoneTransition(start1.getTime(), finalRules[0], finalRules[1]);
+                    }
+                    result = tzt;
+                    isFinal = true;
+                } else {
+                    return null;
+                }
+            } else {
+                // Find a transition within the historic transitions
+                idx--;
+                TimeZoneTransition prev = tzt;
+                while (idx > 0) {
+                    tzt = (TimeZoneTransition)historicTransitions.get(idx);
+                    tt = tzt.getTime();
+                    if (tt < base || (!inclusive && tt == base)) {
+                        break;
+                    }
+                    idx--;
+                    prev = tzt;
+                }
+                result = prev;
+            }
+        }
+        if (result != null) {
+            // For now, this implementation ignore transitions with only zone name changes.
+            TimeZoneRule from = result.getFrom();
+            TimeZoneRule to = result.getTo();
+            if (from.getRawOffset() == to.getRawOffset()
+                    && from.getDSTSavings() == to.getDSTSavings()) {
+                // No offset changes.  Try next one if not final
+                if (isFinal) {
+                    return null;
+                } else {
+                    result = getNextTransition(result.getTime(), false /* always exclusive */);
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        complete();
+        if (historicTransitions == null) {
+            return null;
+        }
+        TimeZoneTransition result = null;
+        TimeZoneTransition tzt = (TimeZoneTransition)historicTransitions.get(0);
+        long tt = tzt.getTime();
+        if (inclusive && tt == base) {
+            result = tzt;
+        } else if (tt >= base) {
+            return null;
+        } else {
+            int idx = historicTransitions.size() - 1;        
+            tzt = (TimeZoneTransition)historicTransitions.get(idx);
+            tt = tzt.getTime();
+            if (inclusive && tt == base) {
+                result = tzt;
+            } else if (tt < base) {
+                if (finalRules != null) {
+                    // Find a transion time with finalRules
+                    Date start0 = finalRules[0].getPreviousStart(base,
+                            finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), inclusive);
+                    Date start1 = finalRules[1].getPreviousStart(base,
+                            finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), inclusive);
+
+                    if (start1.before(start0)) {
+                        tzt = new TimeZoneTransition(start0.getTime(), finalRules[1], finalRules[0]);
+                    } else {
+                        tzt = new TimeZoneTransition(start1.getTime(), finalRules[0], finalRules[1]);
+                    }
+                }
+                result = tzt;
+            } else {
+                // Find a transition within the historic transitions
+                idx--;
+                while (idx >= 0) {
+                    tzt = (TimeZoneTransition)historicTransitions.get(idx);
+                    tt = tzt.getTime();
+                    if (tt < base || (inclusive && tt == base)) {
+                        break;
+                    }
+                    idx--;
+                }
+                result = tzt;                
+            }
+        }
+        if (result != null) {
+            // For now, this implementation ignore transitions with only zone name changes.
+            TimeZoneRule from = result.getFrom();
+            TimeZoneRule to = result.getTo();
+            if (from.getRawOffset() == to.getRawOffset()
+                    && from.getDSTSavings() == to.getDSTSavings()) {
+                // No offset changes.  Try previous one
+                result = getPreviousTransition(result.getTime(), false /* always exclusive */);
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Object clone() {
+        RuleBasedTimeZone other = (RuleBasedTimeZone)super.clone();
+        if (historicRules != null) {
+            other.historicRules = (List)((ArrayList)historicRules).clone(); // rules are immutable
+        }
+        if (finalRules != null) {
+            other.finalRules = (AnnualTimeZoneRule[])finalRules.clone();
+        }
+        return other;
+    }
+
+    // private stuff
+
+    /*
+     * Resolve historic transition times and update fields used for offset
+     * calculation.
+     */
+    private void complete() {
+        if (upToDate) {
+            // No rules were added since last time.
+            return;
+        }
+
+        // Make sure either no final rules or a pair of AnnualTimeZoneRules
+        // are available.
+        if (finalRules != null && finalRules[1] == null) {
+            throw new IllegalStateException("Incomplete final rules");
+        }
+
+        // Create a TimezoneTransition and add to the list
+        if (historicRules != null || finalRules != null) {
+            TimeZoneRule curRule = initialRule;
+            long lastTransitionTime = Grego.MIN_MILLIS;
+
+            // Build the transition array which represents historical time zone
+            // transitions.
+            if (historicRules != null) {
+                BitSet done = new BitSet(historicRules.size()); // for skipping rules already processed
+
+                while (true) {
+                    int curStdOffset = curRule.getRawOffset();
+                    int curDstSavings = curRule.getDSTSavings();
+                    long nextTransitionTime = Grego.MAX_MILLIS;
+                    TimeZoneRule nextRule = null;
+                    Date d;
+                    long tt;
+
+                    for (int i = 0; i < historicRules.size(); i++) {
+                        if (done.get(i)) {
+                            continue;
+                        }
+                        TimeZoneRule r = (TimeZoneRule)historicRules.get(i);
+                        d = r.getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false);
+                        if (d == null) {
+                            // No more transitions from this rule - skip this rule next time
+                            done.set(i);
+                        } else {
+                            if (r == curRule ||
+                                    (r.getName().equals(curRule.getName())
+                                            && r.getRawOffset() == curRule.getRawOffset()
+                                            && r.getDSTSavings() == curRule.getDSTSavings())) {
+                                continue;
+                            }
+                            tt = d.getTime();
+                            if (tt < nextTransitionTime) {
+                                nextTransitionTime = tt;
+                                nextRule = r;
+                            }
+                        }
+                    }
+
+                    if (nextRule ==  null) {
+                        // Check if all historic rules are done
+                        boolean bDoneAll = true;
+                        for (int j = 0; j < historicRules.size(); j++) {
+                            if (!done.get(j)) {
+                                bDoneAll = false;
+                                break;
+                            }
+                        }
+                        if (bDoneAll) {
+                            break;
+                        }
+                    }
+
+                    if (finalRules != null) {
+                        // Check if one of final rules has earlier transition date
+                        for (int i = 0; i < 2 /* finalRules.length */; i++) {
+                            if (finalRules[i] == curRule) {
+                                continue;
+                            }
+                            d = finalRules[i].getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false);
+                            if (d != null) {
+                                tt = d.getTime();
+                                if (tt < nextTransitionTime) {
+                                    nextTransitionTime = tt;
+                                    nextRule = finalRules[i];
+                                }
+                            }
+                        }
+                    }
+
+                    if (nextRule == null) {
+                        // Nothing more
+                        break;
+                    }
+
+                    if (historicTransitions == null) {
+                        historicTransitions = new ArrayList();
+                    }
+                    historicTransitions.add(new TimeZoneTransition(nextTransitionTime, curRule, nextRule));
+                    lastTransitionTime = nextTransitionTime;
+                    curRule = nextRule;
+                }
+            }
+            if (finalRules != null) {
+                if (historicTransitions == null) {
+                    historicTransitions = new ArrayList();
+                }
+                // Append the first transition for each
+                Date d0 = finalRules[0].getNextStart(lastTransitionTime, curRule.getRawOffset(), curRule.getDSTSavings(), false);
+                Date d1 = finalRules[1].getNextStart(lastTransitionTime, curRule.getRawOffset(), curRule.getDSTSavings(), false);
+                if (d1.after(d0)) {
+                    historicTransitions.add(new TimeZoneTransition(d0.getTime(), curRule, finalRules[0]));
+                    d1 = finalRules[1].getNextStart(d0.getTime(), finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), false);
+                    historicTransitions.add(new TimeZoneTransition(d1.getTime(), finalRules[0], finalRules[1]));
+                } else {
+                    historicTransitions.add(new TimeZoneTransition(d1.getTime(), curRule, finalRules[1]));
+                    d0 = finalRules[0].getNextStart(d1.getTime(), finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), false);
+                    historicTransitions.add(new TimeZoneTransition(d0.getTime(), finalRules[1], finalRules[0]));
+                }
+            }
+        }
+        upToDate = true;
+    }
+
+    /*
+     * getOffset internal implementation
+     */
+    private void getOffset(long time, boolean local, int NonExistingTimeOpt, int DuplicatedTimeOpt, int[] offsets) {
+        complete();
+        TimeZoneRule rule;
+        if (historicTransitions == null) {
+            rule = initialRule;
+        } else {
+            long tstart = getTransitionTime((TimeZoneTransition)historicTransitions.get(0),
+                    local, NonExistingTimeOpt, DuplicatedTimeOpt);
+            if (time < tstart) {
+                rule = initialRule;
+            } else {
+                int idx = historicTransitions.size() - 1;
+                long tend = getTransitionTime((TimeZoneTransition)historicTransitions.get(idx),
+                        local, NonExistingTimeOpt, DuplicatedTimeOpt);
+                if (time > tend) {
+                    if (finalRules != null) {
+                        rule = findRuleInFinal(time, local, NonExistingTimeOpt, DuplicatedTimeOpt);
+                    } else {
+                        // no final rule, use the last rule
+                        rule = ((TimeZoneTransition)historicTransitions.get(idx)).getTo();
+                    }
+                } else {
+                    // Find a historical transition
+                    while (idx >= 0) {
+                        if (time >= getTransitionTime((TimeZoneTransition)historicTransitions.get(idx),
+                                local, NonExistingTimeOpt, DuplicatedTimeOpt)) {
+                            break;
+                        }
+                        idx--;
+                    }
+                    rule = ((TimeZoneTransition)historicTransitions.get(idx)).getTo();
+                }
+            }
+        }
+        offsets[0] = rule.getRawOffset();
+        offsets[1] = rule.getDSTSavings();
+    }
+    
+    /*
+     * Find a time zone rule applicable to the specified time
+     */
+    private TimeZoneRule findRuleInFinal(long time, boolean local, int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        if (finalRules == null || finalRules.length != 2 || finalRules[0] == null || finalRules[1] == null) {
+            return null;
+        }
+
+        Date start0, start1;
+        long base;
+        int localDelta;
+
+        base = time;
+        if (local) {
+            localDelta = getLocalDelta(finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(),
+                    finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(),
+                    NonExistingTimeOpt, DuplicatedTimeOpt);
+            base -= localDelta;
+        }
+        start0 = finalRules[0].getPreviousStart(base, finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), true);
+
+        base = time;
+        if (local) {
+            localDelta = getLocalDelta(finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(),
+                    finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(),
+                    NonExistingTimeOpt, DuplicatedTimeOpt);
+            base -= localDelta;
+        }
+        start1 = finalRules[1].getPreviousStart(base, finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), true);
+
+        return start0.after(start1) ? finalRules[0] : finalRules[1];
+    }
+
+    /*
+     * Get the transition time in local wall clock
+     */
+    private static long getTransitionTime(TimeZoneTransition tzt, boolean local,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        long time = tzt.getTime();
+        if (local) {
+            time += getLocalDelta(tzt.getFrom().getRawOffset(), tzt.getFrom().getDSTSavings(),
+                                tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings(),
+                                NonExistingTimeOpt, DuplicatedTimeOpt);
+        }
+        return time;
+    }
+
+    /*
+     * Returns amount of local time adjustment used for checking rule transitions
+     */
+    private static int getLocalDelta(int rawBefore, int dstBefore, int rawAfter, int dstAfter,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        int delta = 0;
+
+        int offsetBefore = rawBefore + dstBefore;
+        int offsetAfter = rawAfter + dstAfter;
+
+        boolean dstToStd = (dstBefore != 0) && (dstAfter == 0);
+        boolean stdToDst = (dstBefore == 0) && (dstAfter != 0);
+
+        if (offsetAfter - offsetBefore >= 0) {
+            // Positive transition, which makes a non-existing local time range
+            if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                    || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                delta = offsetBefore;
+            } else if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                    || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                delta = offsetAfter;
+            } else if ((NonExistingTimeOpt & FORMER_LATTER_MASK) == LOCAL_LATTER) {
+                delta = offsetBefore;
+            } else {
+                // Interprets the time with rule before the transition,
+                // default for non-existing time range
+                delta = offsetAfter;
+            }
+        } else {
+            // Negative transition, which makes a duplicated local time range
+            if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                    || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                delta = offsetAfter;
+            } else if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                    || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                delta = offsetBefore;
+            } else if ((DuplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                delta = offsetBefore;
+            } else {
+                // Interprets the time with rule after the transition,
+                // default for duplicated local time range
+                delta = offsetAfter;
+            }
+        }
+        return delta;
+    }
+}
+
diff --git a/src/com/ibm/icu/util/STZInfo.java b/src/com/ibm/icu/util/STZInfo.java
new file mode 100644
index 0000000..ac5340e
--- /dev/null
+++ b/src/com/ibm/icu/util/STZInfo.java
@@ -0,0 +1,88 @@
+/*
+ *   Copyright (C) 2005-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+/**
+ * @internal
+ */
+final class STZInfo implements Serializable {
+    private static final long serialVersionUID = -7849612037842370168L;
+
+    void setStart(int sm, int sdwm, int sdw, int st, int sdm, boolean sa) {
+        this.sm = sm;
+        this.sdwm = sdwm;
+        this.sdw = sdw;
+        this.st = st;
+        this.sdm = sdm;
+        this.sa = sa;
+    }
+
+    void setEnd(int em, int edwm, int edw, int et, int edm, boolean ea) {
+        this.em = em;
+        this.edwm = edwm;
+        this.edw = edw;
+        this.et = et;
+        this.edm = edm;
+        this.ea = ea;
+    }
+
+    /*void applyTo(java.util.SimpleTimeZone stz) {
+        if (sy != -1) {
+            stz.setStartYear(sy);
+        }
+        if (sm != -1) {
+            if (sdm == -1) {
+                stz.setStartRule(sm, sdwm, sdw, st);
+            } else if (sdw == -1) {
+                stz.setStartRule(sm, sdm, st);
+            } else {
+                stz.setStartRule(sm, sdm, sdw, st, sa);
+            }
+        }
+        if (em != -1) {
+            if (edm == -1) {
+                stz.setEndRule(em, edwm, edw, et);
+            } else if (edw == -1) {
+                stz.setEndRule(em, edm, et);
+            } else {
+                stz.setEndRule(em, edm, edw, et, ea);
+            }
+        }
+    }*/
+    
+    void applyTo(com.ibm.icu.util.SimpleTimeZone stz) {
+        if (sy != -1) {
+            stz.setStartYear(sy);
+        }
+        if (sm != -1) {
+            if (sdm == -1) {
+                stz.setStartRule(sm, sdwm, sdw, st);
+            } else if (sdw == -1) {
+                stz.setStartRule(sm, sdm, st);
+            } else {
+                stz.setStartRule(sm, sdm, sdw, st, sa);
+            }
+        }
+        if (em != -1) {
+            if (edm == -1) {
+                stz.setEndRule(em, edwm, edw, et);
+            } else if (edw == -1) {
+                stz.setEndRule(em, edm, et);
+            } else {
+                stz.setEndRule(em, edm, edw, et, ea);
+            }
+        }
+    }
+    
+    int sy = -1;
+    int sm = -1, sdwm, sdw, st, sdm;
+    boolean sa;
+    int em = -1, edwm, edw, et, edm;
+    boolean ea;
+}
+
diff --git a/src/com/ibm/icu/util/SimpleDateRule.java b/src/com/ibm/icu/util/SimpleDateRule.java
new file mode 100644
index 0000000..82d6158
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleDateRule.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * Simple implementation of DateRule.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class SimpleDateRule implements DateRule
+{
+    /**
+     * Construct a rule for a fixed date within a month
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleDateRule(int month, int dayOfMonth)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+    }
+
+    // temporary
+    /* package */SimpleDateRule(int month, int dayOfMonth, Calendar cal)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+        this.calendar   = cal;
+    }
+
+    /**
+     * Construct a rule for a weekday within a month, e.g. the first Monday.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param after         If true, this rule selects the first dayOfWeek
+     *                      on or after dayOfMonth.  If false, the rule selects
+     *                      the first dayOfWeek on or before dayOfMonth.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleDateRule(int month, int dayOfMonth, int dayOfWeek, boolean after)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = after ? dayOfWeek : -dayOfWeek;
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start)
+    {
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(date);
+
+            int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
+
+            c.setTime(computeInYear(c.get(Calendar.YEAR), c));
+
+//              System.out.println("  isOn: dayOfYear = " + dayOfYear);
+//              System.out.println("        holiday   = " + c.get(Calendar.DAY_OF_YEAR));
+
+            return c.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(start);
+
+            int year = c.get(Calendar.YEAR);
+            int mon = c.get(Calendar.MONTH);
+
+            // If the rule is earlier in the year than the start date
+            // we have to go to the next year.
+            if (mon > this.month) {
+                year++;
+            }
+
+            // Figure out when the rule lands in the given year
+            Date result = computeInYear(year, c);
+
+            // If the rule is in the same month as the start date, it's possible
+            // to get a result that's before the start.  If so, go to next year.
+            if (mon == this.month && result.before(start)) {
+                result = computeInYear(year+1, c);
+            }
+
+            if (end != null && result.after(end)) {
+                return null;
+            }
+            return result;
+        }
+    }
+
+    private Date computeInYear(int year, Calendar c)
+    {
+        synchronized(c) {
+            c.clear();
+            c.set(Calendar.ERA, c.getMaximum(Calendar.ERA));
+            c.set(Calendar.YEAR, year);
+            c.set(Calendar.MONTH, month);
+            c.set(Calendar.DATE, dayOfMonth);
+
+            //System.out.println("     computeInYear: start at " + c.getTime().toString());
+
+            if (dayOfWeek != 0) {
+                c.setTime(c.getTime());        // JDK 1.1.2 workaround
+                int weekday = c.get(Calendar.DAY_OF_WEEK);
+
+                //System.out.println("                    weekday = " + weekday);
+                //System.out.println("                    dayOfYear = " + c.get(Calendar.DAY_OF_YEAR));
+
+                int delta = 0;
+                if (dayOfWeek > 0) {
+                    // We want the first occurrance of the given day of the week
+                    // on or after the specified date in the month.
+                    delta = (dayOfWeek - weekday + 7) % 7;
+                }
+                else {
+                    // We want the first occurrance of the (-dayOfWeek)
+                    // on or before the specified date in the month.
+                    delta = -((dayOfWeek + weekday + 7) % 7);
+                }
+                //System.out.println("                    adding " + delta + " days");
+                c.add(Calendar.DATE, delta);
+            }
+
+            return c.getTime();
+        }
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+//    public void setCalendar(Calendar c) {
+//        calendar = c;
+//    }
+
+    private static GregorianCalendar gCalendar = new GregorianCalendar();
+
+    private Calendar calendar = gCalendar;
+
+    private int     month;
+    private int     dayOfMonth;
+    private int     dayOfWeek;
+}
diff --git a/src/com/ibm/icu/util/SimpleHoliday.java b/src/com/ibm/icu/util/SimpleHoliday.java
new file mode 100644
index 0000000..e4176b8
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleHoliday.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+
+/**
+ * A holiday whose date can be represented by a month, day, and optionally day of week
+ * in the Gregorian calendar.
+ *
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class SimpleHoliday extends Holiday {
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear)
+    {
+        super(name, rangeRule(startYear, 0, new SimpleDateRule(month, dayOfMonth)));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear, int endYear)
+    {
+        super(name, rangeRule(startYear, endYear, new SimpleDateRule(month, dayOfMonth)));
+    }
+
+    /** // TODO: remove
+     * Construct an object representing a holiday
+     *
+     * @param month The month in which this holiday occurs (0-based)
+     *
+     * @param dayOfMonth A date within the month (1-based).  The
+     *      interpretation of this parameter depends on the value of
+     *      <code>dayOfWeek</code>.
+     *
+     * @param dayOfWeek The day of the week on which this holiday occurs.
+     *      The following values are legal: <ul>
+     *      <li>dayOfWeek == 0 - use dayOfMonth only
+     *      <li>dayOfWeek < 0  - use last -dayOfWeek before or on dayOfMonth
+     *      <li>dayOfWeek > 0  - use first dayOfWeek after or on dayOfMonth
+     *      </ul>
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth,
+                                        dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                        dayOfWeek > 0));
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear)
+    {
+        super(name, rangeRule(startYear, 0, 
+                              new SimpleDateRule(month, dayOfMonth,
+                                                 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                                 dayOfWeek > 0)));
+    }
+
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear, int endYear)
+    {
+        super(name, rangeRule(startYear, endYear, 
+                              new SimpleDateRule(month, dayOfMonth,
+                                                 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                                 dayOfWeek > 0)));
+    }
+
+    private static DateRule rangeRule(int startYear, int endYear, DateRule rule)
+    {
+        if (startYear == 0 && endYear == 0) {
+            return rule;
+        }
+
+        RangeDateRule rangeRule = new RangeDateRule();
+
+        if (startYear != 0) {
+            Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1);
+            rangeRule.add(start.getTime(), rule);
+        } else {
+            rangeRule.add(rule);
+        }
+        if (endYear != 0) {
+            Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime();
+            rangeRule.add(end, null);
+        }
+
+        return rangeRule;
+    }
+
+    /* Constants for holidays that are common throughout the Western
+     * and Christian worlds.... */
+
+    /**
+     * New Year's Day - January 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday NEW_YEARS_DAY =
+        new SimpleHoliday(Calendar.JANUARY,    1,  "New Year's Day");
+
+    /**
+     * Epiphany, January 6th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday EPIPHANY =
+        new SimpleHoliday(Calendar.JANUARY,    6,  "Epiphany");
+
+    /**
+     * May Day, May 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday MAY_DAY =
+        new SimpleHoliday(Calendar.MAY,        1,  "May Day");
+
+    /**
+     * Assumption, August 15th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ASSUMPTION =
+        new SimpleHoliday(Calendar.AUGUST,    15,  "Assumption");
+
+    /**
+     * All Saints' Day, November 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ALL_SAINTS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   1,  "All Saints' Day");
+
+    /**
+     * All Souls' Day, November 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ALL_SOULS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  "All Souls' Day");
+
+    /**
+     * Immaculate Conception, December 8th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday IMMACULATE_CONCEPTION =
+        new SimpleHoliday(Calendar.DECEMBER,   8,  "Immaculate Conception");
+
+    /**
+     * Christmas Eve, December 24th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday CHRISTMAS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  24,  "Christmas Eve");
+
+    /**
+     * Christmas, December 25th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday CHRISTMAS =
+        new SimpleHoliday(Calendar.DECEMBER,  25,  "Christmas");
+
+    /**
+     * Boxing Day, December 26th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday BOXING_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "Boxing Day");
+
+    /**
+     * Saint Stephen's Day, December 26th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ST_STEPHENS_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "St. Stephen's Day");
+
+    /**
+     * New Year's Eve, December 31st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday NEW_YEARS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  31,  "New Year's Eve");
+
+}
diff --git a/src/com/ibm/icu/util/SimpleTimeZone.java b/src/com/ibm/icu/util/SimpleTimeZone.java
new file mode 100644
index 0000000..c8ffcd3
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -0,0 +1,1326 @@
+ /*
+*   Copyright (C) 1996-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.util.Date;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
+ * that represents a time zone for use with a Gregorian calendar. This
+ * class does not handle historical changes.
+ *
+ * <P>
+ * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
+ * <code>SimpleTimeZone</code> should count from the end of the month backwards.
+ * For example, Daylight Savings Time ends at the last
+ * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
+ *
+ * @see      Calendar
+ * @see      GregorianCalendar
+ * @see      TimeZone
+ * @author   David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleTimeZone extends BasicTimeZone {
+    private static final long serialVersionUID = -7034676239311322769L;
+
+    /**
+     * Constant for a mode of start or end time specified as local wall time.
+     * @stable ICU 3.8
+     */
+    public static final int WALL_TIME = 0;
+
+    /**
+     * Constant for a mode of start or end time specified as local standard time.
+     * @stable ICU 3.8
+     */
+    public static final int STANDARD_TIME = 1;
+
+    /**
+     * Constant for a mode of start or end time specified as UTC.
+     * @stable ICU 3.8
+     */
+    public static final int UTC_TIME = 2;
+
+    /**
+     * Constructs a SimpleTimeZone with the given base time zone offset from GMT
+     * and time zone ID. Timezone IDs can be obtained from
+     * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault to
+     * construct a TimeZone.
+     *
+     * @param rawOffset  The given base time zone offset to GMT.
+     * @param ID         The time zone ID which is obtained from
+     *                   TimeZone.getAvailableIDs.
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID) {
+        construct(rawOffset, 0, 0, 0,
+                0, WALL_TIME,
+                0, 0, 0,
+                0, WALL_TIME,
+                Grego.MILLIS_PER_HOUR);
+        super.setID(ID);
+    }
+
+    /**
+     * Construct a SimpleTimeZone with the given base time zone offset from
+     * GMT, time zone ID, time to start and end the daylight time. Timezone IDs
+     * can be obtained from TimeZone.getAvailableIDs. Normally you should use
+     * TimeZone.getDefault to create a TimeZone. For a time zone that does not
+     * use daylight saving time, do not use this constructor; instead you should
+     * use SimpleTimeZone(rawOffset, ID).
+     *
+     * By default, this constructor specifies day-of-week-in-month rules. That
+     * is, if the startDay is 1, and the startDayOfWeek is SUNDAY, then this
+     * indicates the first Sunday in the startMonth. A startDay of -1 likewise
+     * indicates the last Sunday. However, by using negative or zero values for
+     * certain parameters, other types of rules can be specified.
+     *
+     * Day of month. To specify an exact day of the month, such as March 1, set
+     * startDayOfWeek to zero.
+     *
+     * Day of week after day of month. To specify the first day of the week
+     * occurring on or after an exact day of the month, make the day of the week
+     * negative. For example, if startDay is 5 and startDayOfWeek is -MONDAY,
+     * this indicates the first Monday on or after the 5th day of the
+     * startMonth.
+     *
+     * Day of week before day of month. To specify the last day of the week
+     * occurring on or before an exact day of the month, make the day of the
+     * week and the day of the month negative. For example, if startDay is -21
+     * and startDayOfWeek is -WEDNESDAY, this indicates the last Wednesday on or
+     * before the 21st of the startMonth.
+     *
+     * The above examples refer to the startMonth, startDay, and startDayOfWeek;
+     * the same applies for the endMonth, endDay, and endDayOfWeek.
+     *
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime) {
+        construct(rawOffset,
+                startMonth, startDay, startDayOfWeek,
+                startTime, WALL_TIME,
+                endMonth, endDay, endDayOfWeek,
+                endTime, WALL_TIME,
+                Grego.MILLIS_PER_HOUR);
+        super.setID(ID);
+    }
+
+    /**
+     * Construct a SimpleTimeZone with the given base time zone offset from
+     * GMT, time zone ID, time and its mode to start and end the daylight time.
+     * The mode specifies either {@link #WALL_TIME} or {@link #STANDARD_TIME}
+     * or {@link #UTC_TIME}.
+     * 
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param startTimeMode   The mode of the start time specified by startTime.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @param endTimeMode     The mode of the end time specified by endTime.
+     * @param dstSavings      The amount of time in ms saved during DST.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 3.8
+     */
+    public SimpleTimeZone(int rawOffset,  String ID,
+                          int startMonth, int startDay,
+                          int startDayOfWeek, int startTime,
+                          int startTimeMode,
+                          int endMonth, int endDay,
+                          int endDayOfWeek, int endTime,
+                          int endTimeMode,int dstSavings){
+        construct(rawOffset,
+                  startMonth, startDay, startDayOfWeek,
+                  startTime, startTimeMode,
+                  endMonth, endDay, endDayOfWeek,
+                  endTime, endTimeMode,
+                  dstSavings);
+        super.setID(ID);
+    }
+
+    /**
+     * Constructor.  This constructor is identical to the 10-argument
+     * constructor, but also takes a dstSavings parameter.
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @param dstSavings      The amount of time in ms saved during DST.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime,
+                          int dstSavings) {
+        construct(rawOffset,
+                startMonth, startDay, startDayOfWeek,
+                startTime, WALL_TIME,
+                endMonth, endDay, endDayOfWeek,
+                endTime, WALL_TIME,
+                dstSavings); 
+        super.setID(ID);
+    }
+    
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public void setID(String ID) {
+        super.setID(ID);
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add "to" UTC to get local time.
+     * @param offsetMillis the raw offset of the time zone
+     * @stable ICU 2.0
+     */
+    public void setRawOffset(int offsetMillis) {
+        raw = offsetMillis;
+
+        transitionRulesInitialized = false;
+    }
+  
+    /**
+     * Overrides TimeZone
+     * Gets the GMT offset for this time zone.
+     * @return the raw offset
+     * @stable ICU 2.0
+     */
+    public int getRawOffset() {
+        return raw;
+    }
+
+    /**
+     * Sets the daylight savings starting year.
+     *
+     * @param year  The daylight savings starting year.
+     * @stable ICU 2.0
+     */
+    public void setStartYear(int year) {
+        //unwrapSTZ().setStartYear(year);
+
+        getSTZInfo().sy = year;
+        this.startYear = year;
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Sets the daylight savings starting rule. For example, Daylight Savings
+     * Time starts at the first Sunday in April, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings starting month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings starting
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings starting day-of-week.
+     *                          Please see the member description for an
+     *                          example.
+     * @param time              The daylight savings starting time in local wall
+     *                          time, which is standard time in this case. Please see
+     *                          the member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
+                             int time) {
+        getSTZInfo().setStart(month, dayOfWeekInMonth, dayOfWeek, time, -1, false);
+        setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME);
+    }
+    /**
+     * Sets the daylight savings starting rule. For example, in the U.S., Daylight Savings
+     * Time starts at the first Sunday in April, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
+     * The dayOfWeekInMonth and dayOfWeek parameters together specify how to calculate
+     * the exact starting date.  Their exact meaning depend on their respective signs,
+     * allowing various types of rules to be constructed, as follows:<ul>
+     *   <li>If both dayOfWeekInMonth and dayOfWeek are positive, they specify the
+     *       day of week in the month (e.g., (2, WEDNESDAY) is the second Wednesday
+     *       of the month).
+     *   <li>If dayOfWeek is positive and dayOfWeekInMonth is negative, they specify
+     *       the day of week in the month counting backward from the end of the month.
+     *       (e.g., (-1, MONDAY) is the last Monday in the month)
+     *   <li>If dayOfWeek is zero and dayOfWeekInMonth is positive, dayOfWeekInMonth
+     *       specifies the day of the month, regardless of what day of the week it is.
+     *       (e.g., (10, 0) is the tenth day of the month)
+     *   <li>If dayOfWeek is zero and dayOfWeekInMonth is negative, dayOfWeekInMonth
+     *       specifies the day of the month counting backward from the end of the
+     *       month, regardless of what day of the week it is (e.g., (-2, 0) is the
+     *       next-to-last day of the month).
+     *   <li>If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the
+     *       first specified day of the week on or after the specfied day of the month.
+     *       (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month
+     *       [or the 15th itself if the 15th is a Sunday].)
+     *   <li>If dayOfWeek and DayOfWeekInMonth are both negative, they specify the
+     *       last specified day of the week on or before the specified day of the month.
+     *       (e.g., (-20, -TUESDAY) is the last Tuesday before the 20th of the month
+     *       [or the 20th itself if the 20th is a Tuesday].)</ul>
+     * @param month the daylight savings starting month. Month is 0-based.
+     * eg, 0 for January.
+     * @param dayOfWeekInMonth the daylight savings starting
+     * day-of-week-in-month. Please see the member description for an example.
+     * @param dayOfWeek the daylight savings starting day-of-week. Please see
+     * the member description for an example.
+     * @param time the daylight savings starting time. Please see the member
+     * description for an example.
+     */
+     
+    private void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time, int mode)
+    {
+        startMonth     =  month;
+        startDay       = dayOfWeekInMonth;
+        startDayOfWeek = dayOfWeek;
+        startTime      = time;
+        startTimeMode  = mode;
+        decodeStartRule();
+
+        transitionRulesInitialized = false;
+    }
+    /**
+     * Sets the DST start rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfMonth, int time) {
+       // unwrapSTZ().setStartRule(month, dayOfMonth, time);
+
+        getSTZInfo().setStart(month, -1, -1, time, dayOfMonth, false);
+        setStartRule(month, dayOfMonth, 0, time, WALL_TIME);
+    }
+
+    /**
+     * Sets the DST start rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after) {
+        getSTZInfo().setStart(month, -1, dayOfWeek, time, dayOfMonth, after);
+        setStartRule(month, after ? dayOfMonth : -dayOfMonth,
+                -dayOfWeek, time, WALL_TIME);
+    }
+
+    /**
+     * Sets the daylight savings ending rule. For example, Daylight Savings Time
+     * ends at the last (-1) Sunday in October, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings ending month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings ending
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings ending day-of-week. Please
+     *                          see the member description for an example.
+     * @param time              The daylight savings ending time in local wall time,
+     *                          which is daylight time in this case. Please see the
+     *                          member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time) {
+        getSTZInfo().setEnd(month, dayOfWeekInMonth, dayOfWeek, time, -1, false);
+        setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME);        
+    }
+
+    /**
+     * Sets the DST end rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfMonth, int time) {
+        getSTZInfo().setEnd(month, -1, -1, time, dayOfMonth, false);
+        setEndRule(month, dayOfMonth, WALL_TIME, time);
+    }
+
+    /**
+     * Sets the DST end rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after) {
+        getSTZInfo().setEnd(month, -1, dayOfWeek, time, dayOfMonth, after);
+        setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after);
+    }
+    private void setEndRule(int month, int dayOfMonth, int dayOfWeek, 
+                                                int time, int mode, boolean after){
+        setEndRule(month, after ? dayOfMonth : -dayOfMonth, -dayOfWeek, time, mode);
+    }
+    /**
+     * Sets the daylight savings ending rule. For example, in the U.S., Daylight
+     * Savings Time ends at the last (-1) Sunday in October, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
+     * Various other types of rules can be specified by manipulating the dayOfWeek
+     * and dayOfWeekInMonth parameters.  For complete details, see the documentation
+     * for setStartRule().
+     * @param month the daylight savings ending month. Month is 0-based.
+     * eg, 0 for January.
+     * @param dayOfWeekInMonth the daylight savings ending
+     * day-of-week-in-month. See setStartRule() for a complete explanation.
+     * @param dayOfWeek the daylight savings ending day-of-week. See setStartRule()
+     * for a complete explanation.
+     * @param time the daylight savings ending time. Please see the member
+     * description for an example.
+     */
+    private void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time, int mode){
+        endMonth     = month;
+        endDay       = dayOfWeekInMonth;
+        endDayOfWeek = dayOfWeek;
+        endTime      = time;
+        endTimeMode  = mode;
+        decodeEndRule();
+
+        transitionRulesInitialized = false;
+    }
+    /**
+     * Sets the amount of time in ms that the clock is advanced during DST.
+     * @param millisSavedDuringDST the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @stable ICU 2.0
+     */
+    public void setDSTSavings(int millisSavedDuringDST) {
+        if (millisSavedDuringDST <= 0) {
+            throw new IllegalArgumentException();
+        }
+        dst = millisSavedDuringDST;
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Returns the amount of time in ms that the clock is advanced during DST.
+     * @return the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @stable ICU 2.0
+     */
+    public int getDSTSavings() {
+        return dst;
+    }
+
+    /**
+     * Returns the java.util.SimpleTimeZone that this class wraps.
+     *
+    java.util.SimpleTimeZone unwrapSTZ() {
+        return (java.util.SimpleTimeZone) unwrap();
+    }
+    */
+    // on JDK 1.4 and later, can't deserialize a SimpleTimeZone as a SimpleTimeZone...
+    private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        /*
+        String id = getID();
+        if (id!=null && !(zone instanceof java.util.SimpleTimeZone && zone.getID().equals(id))) {
+            // System.out.println("*** readjust " + zone.getClass().getName() + " " + zone.getID() + " ***");
+            java.util.SimpleTimeZone stz = 
+                new java.util.SimpleTimeZone(raw, id);
+            if (dst != 0) {
+                stz.setDSTSavings(dst);
+                // if it is 0, then there shouldn't be start/end rules and the default
+                // behavior should be no dst
+            }
+
+            if (xinfo != null) {
+                xinfo.applyTo(stz);
+            }
+            zoneJDK = stz;
+        }
+        */
+        /* set all instance variables in this object
+         * to the values in zone 
+         */            
+         if (xinfo != null) {
+             xinfo.applyTo(this);
+         }
+        
+    }
+    /**
+     * Returns a string representation of this object.
+     * @return  a string representation of this object
+     * @stable ICU 3.6
+     */
+    public String toString() {
+        return "SimpleTimeZone: " + getID();
+    }
+
+    private STZInfo getSTZInfo() {
+        if (xinfo == null) {
+            xinfo = new STZInfo();
+        }
+        return xinfo;
+    }
+
+    //  Use only for decodeStartRule() and decodeEndRule() where the year is not
+    //  available. Set February to 29 days to accomodate rules with that date
+    //  and day-of-week-on-or-before-that-date mode (DOW_LE_DOM_MODE).
+    //  The compareToRule() method adjusts to February 28 in non-leap years.
+    //
+    //  For actual getOffset() calculations, use TimeZone::monthLength() and
+    //  TimeZone::previousMonthLength() which take leap years into account.
+    //  We handle leap years assuming always
+    //  Gregorian, since we know they didn't have daylight time when
+    //  Gregorian calendar started.
+    private final static byte staticMonthLength[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 2.0
+     */
+    public int getOffset(int era, int year, int month, int day,
+                         int dayOfWeek, int millis) 
+    {
+        // Check the month before calling Grego.monthLength(). This
+        // duplicates the test that occurs in the 7-argument getOffset(),
+        // however, this is unavoidable. We don't mind because this method, in
+        // fact, should not be called; internal code should always call the
+        // 7-argument getOffset(), and outside code should use Calendar.get(int
+        // field) with fields ZONE_OFFSET and DST_OFFSET. We can't get rid of
+        // this method because it's public API. - liu 8/10/98
+        if(month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException();
+        }
+
+        return getOffset(era, year, month, day, dayOfWeek, millis, Grego.monthLength(year, month));
+    }
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int getOffset(int era, int year, int month, int day,
+                              int dayOfWeek, int millis, 
+                              int monthLength)  {
+        // Check the month before calling Grego.monthLength(). This
+        // duplicates a test that occurs in the 9-argument getOffset(),
+        // however, this is unavoidable. We don't mind because this method, in
+        // fact, should not be called; internal code should always call the
+        // 9-argument getOffset(), and outside code should use Calendar.get(int
+        // field) with fields ZONE_OFFSET and DST_OFFSET. We can't get rid of
+        // this method because it's public API. - liu 8/10/98
+        if(month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException();
+        }
+        
+        return getOffset(era, year, month, day, dayOfWeek, millis,
+                         Grego.monthLength(year, month), Grego.previousMonthLength(year, month));
+    }
+
+    int getOffset(int era, int year, int month, int day,
+                  int dayOfWeek, int millis, 
+                  int monthLength, int prevMonthLength ){
+
+        if (true) {
+            /* Use this parameter checking code for normal operation.  Only one
+             * of these two blocks should actually get compiled into the class
+             * file.  */
+            if ((era != GregorianCalendar.AD && era != GregorianCalendar.BC)
+                || month < Calendar.JANUARY
+                || month > Calendar.DECEMBER
+                || day < 1
+                || day > monthLength
+                || dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY
+                || millis < 0
+                || millis >= Grego.MILLIS_PER_DAY
+                || monthLength < 28
+                || monthLength > 31
+                || prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException();
+            }
+        } else {
+            /* This parameter checking code is better for debugging, but
+             * overkill for normal operation.  Only one of these two blocks
+             * should actually get compiled into the class file.  */
+            if (era != GregorianCalendar.AD && era != GregorianCalendar.BC) {
+                throw new IllegalArgumentException("Illegal era " + era);
+            }
+            if (month < Calendar.JANUARY
+                || month > Calendar.DECEMBER) {
+                throw new IllegalArgumentException("Illegal month " + month);
+            }
+            if (day < 1
+                || day > monthLength) {
+                throw new IllegalArgumentException("Illegal day " + day+" max month len: "+monthLength);
+            }
+            if (dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY) {
+                throw new IllegalArgumentException("Illegal day of week " + dayOfWeek);
+            }
+            if (millis < 0
+                || millis >= Grego.MILLIS_PER_DAY) {
+                throw new IllegalArgumentException("Illegal millis " + millis);
+            }
+            if (monthLength < 28
+                || monthLength > 31) {
+                throw new IllegalArgumentException("Illegal month length " + monthLength);
+            }
+            if (prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException("Illegal previous month length " + prevMonthLength);
+            }
+        }
+
+        int result = raw;
+
+        // Bail out if we are before the onset of daylight savings time
+        if (!useDaylight || year < startYear || era != GregorianCalendar.AD) return result;
+
+        // Check for southern hemisphere.  We assume that the start and end
+        // month are different.
+        boolean southern = (startMonth > endMonth);
+
+        // Compare the date to the starting and ending rules.+1 = date>rule, -1
+        // = date<rule, 0 = date==rule.
+        int startCompare = compareToRule(month, monthLength, prevMonthLength,
+                                         day, dayOfWeek, millis,
+                                         startTimeMode == UTC_TIME ? -raw : 0,
+                                         startMode, startMonth, startDayOfWeek,
+                                         startDay, startTime);
+        int endCompare = 0;
+
+        /* We don't always have to compute endCompare.  For many instances,
+         * startCompare is enough to determine if we are in DST or not.  In the
+         * northern hemisphere, if we are before the start rule, we can't have
+         * DST.  In the southern hemisphere, if we are after the start rule, we
+         * must have DST.  This is reflected in the way the next if statement
+         * (not the one immediately following) short circuits. */
+        if (southern != (startCompare >= 0)) {
+            /* For the ending rule comparison, we add the dstSavings to the millis
+             * passed in to convert them from standard to wall time.  We then must
+             * normalize the millis to the range 0..millisPerDay-1. */
+            endCompare = compareToRule(month, monthLength, prevMonthLength,
+                                       day, dayOfWeek, millis,
+                                       endTimeMode == WALL_TIME ? dst :
+                                        (endTimeMode == UTC_TIME ? -raw : 0),
+                                       endMode, endMonth, endDayOfWeek,
+                                       endDay, endTime);
+        }
+
+        // Check for both the northern and southern hemisphere cases.  We
+        // assume that in the northern hemisphere, the start rule is before the
+        // end rule within the calendar year, and vice versa for the southern
+        // hemisphere.
+        if ((!southern && (startCompare >= 0 && endCompare < 0)) ||
+            (southern && (startCompare >= 0 || endCompare < 0)))
+            result += dst;
+
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        offsets[0] = getRawOffset();
+        int fields[] = new int[6];
+        Grego.timeToFields(date, fields);
+        offsets[1] = getOffset(GregorianCalendar.AD,
+              fields[0], fields[1], fields[2],
+              fields[3], fields[5]) - offsets[0];        
+
+        boolean recalc = false;
+
+        // Now, we need some adjustment
+        if (offsets[1] > 0) {
+            if ((nonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD
+                || (nonExistingTimeOpt & STD_DST_MASK) != LOCAL_DST && (nonExistingTimeOpt & FORMER_LATTER_MASK) != LOCAL_LATTER) {
+                date -= getDSTSavings();
+                recalc = true;
+            }
+        } else {
+            if ((duplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST
+                    || (duplicatedTimeOpt & STD_DST_MASK) != LOCAL_STD && (duplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                date -= getDSTSavings();
+                recalc = true;
+            }
+        }
+
+        if (recalc) {
+            Grego.timeToFields(date, fields);
+            offsets[1] = getOffset(GregorianCalendar.AD,
+                    fields[0], fields[1], fields[2],
+                    fields[3], fields[5]) - offsets[0];        
+        }
+    }
+
+    private static final int
+        DOM_MODE = 1,
+        DOW_IN_MONTH_MODE=2,
+        DOW_GE_DOM_MODE=3,
+        DOW_LE_DOM_MODE=4;
+
+    /**
+     * Compare a given date in the year to a rule. Return 1, 0, or -1, depending
+     * on whether the date is after, equal to, or before the rule date. The
+     * millis are compared directly against the ruleMillis, so any
+     * standard-daylight adjustments must be handled by the caller.
+     *
+     * @return  1 if the date is after the rule date, -1 if the date is before
+     *          the rule date, or 0 if the date is equal to the rule date.
+     */
+    private int compareToRule(int month, int monthLen, int prevMonthLen,
+                                  int dayOfMonth,
+                                  int dayOfWeek, int millis, int millisDelta,
+                                  int ruleMode, int ruleMonth, int ruleDayOfWeek,
+                                  int ruleDay, int ruleMillis)
+    {
+        // Make adjustments for startTimeMode and endTimeMode
+        
+        millis += millisDelta;
+        
+        while (millis >= Grego.MILLIS_PER_DAY) {
+            millis -= Grego.MILLIS_PER_DAY;
+            ++dayOfMonth;
+            dayOfWeek = 1 + (dayOfWeek % 7); // dayOfWeek is one-based
+            if (dayOfMonth > monthLen) {
+                dayOfMonth = 1;
+                /* When incrementing the month, it is desirable to overflow
+                 * from DECEMBER to DECEMBER+1, since we use the result to
+                 * compare against a real month. Wraparound of the value
+                 * leads to bug 4173604. */
+                ++month;
+            }
+        }
+        /*
+         * For some reasons, Sun Java 6 on Solaris/Linux has a problem with
+         * the while loop below (at least Java 6 up to build 1.6.0_02-b08).
+         * It looks the JRE messes up the variable 'millis' while executing
+         * the code in the while block.  The problem is not reproduced with
+         * JVM option -Xint, that is, it is likely a bug of the HotSpot
+         * adaptive compiler.  Moving 'millis += Grego.MILLIS_PER_DAY'
+         * to the end of this while block seems to resolve the problem.
+         * See ticket#5887 about the problem in detail.
+         */
+        while (millis < 0) {
+            //millis += Grego.MILLIS_PER_DAY;
+            --dayOfMonth;
+            dayOfWeek = 1 + ((dayOfWeek+5) % 7); // dayOfWeek is one-based
+            if (dayOfMonth < 1) {
+                dayOfMonth = prevMonthLen;
+                --month;
+            }
+            millis += Grego.MILLIS_PER_DAY;
+        }
+        
+        if (month < ruleMonth) return -1;
+        else if (month > ruleMonth) return 1;
+
+        int ruleDayOfMonth = 0;
+
+        // Adjust the ruleDay to the monthLen, for non-leap year February 29 rule days.
+        if (ruleDay > monthLen) {
+            ruleDay = monthLen;
+        }
+
+        switch (ruleMode)
+        {
+        case DOM_MODE:
+            ruleDayOfMonth = ruleDay;
+            break;
+        case DOW_IN_MONTH_MODE:
+            // In this case ruleDay is the day-of-week-in-month
+            if (ruleDay > 0)
+                ruleDayOfMonth = 1 + (ruleDay - 1) * 7 +
+                    (7 + ruleDayOfWeek - (dayOfWeek - dayOfMonth + 1)) % 7;
+            else // Assume ruleDay < 0 here
+            {
+                ruleDayOfMonth = monthLen + (ruleDay + 1) * 7 -
+                    (7 + (dayOfWeek + monthLen - dayOfMonth) - ruleDayOfWeek) % 7;
+            }
+            break;
+        case DOW_GE_DOM_MODE:
+            ruleDayOfMonth = ruleDay +
+                (49 + ruleDayOfWeek - ruleDay - dayOfWeek + dayOfMonth) % 7;
+            break;
+        case DOW_LE_DOM_MODE:
+            ruleDayOfMonth = ruleDay -
+                (49 - ruleDayOfWeek + ruleDay + dayOfWeek - dayOfMonth) % 7;
+            // Note at this point ruleDayOfMonth may be <1, although it will
+            // be >=1 for well-formed rules.
+            break;
+        }
+
+        if (dayOfMonth < ruleDayOfMonth) return -1;
+        else if (dayOfMonth > ruleDayOfMonth) return 1;
+
+        if (millis < ruleMillis){
+                return -1;
+        }else if (millis > ruleMillis){
+                return 1;
+        }else{
+                return 0;
+        }
+    }
+
+    // data needed for streaming mutated SimpleTimeZones in JDK14
+    private int raw;// the TimeZone's raw GMT offset 
+    private int dst = 3600000;
+    private STZInfo xinfo = null;
+    private int startMonth, startDay, startDayOfWeek;   // the month, day, DOW, and time DST starts
+    private int startTime;
+    private int startTimeMode, endTimeMode; // Mode for startTime, endTime; see TimeMode
+    private int endMonth, endDay, endDayOfWeek; // the month, day, DOW, and time DST ends
+    private int endTime;
+    private int startYear;  // the year these DST rules took effect 
+    private boolean useDaylight; // flag indicating whether this TimeZone uses DST
+    private int startMode, endMode;   // flags indicating what kind of rules the DST rules are
+    
+    /**
+     * Overrides TimeZone
+     * Queries if this time zone uses Daylight Saving Time.
+     * @stable ICU 2.0
+     */
+    public boolean useDaylightTime(){
+        return useDaylight;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Queries if the give date is in Daylight Saving Time.
+     * @stable ICU 2.0
+     */
+    public boolean inDaylightTime(Date date){
+        GregorianCalendar gc = new GregorianCalendar(this);
+        gc.setTime(date);
+        return gc.inDaylightTime();
+    }
+
+    /**
+     * Internal construction method.
+     */
+    private void construct(int _raw,
+                           int _startMonth,
+                           int _startDay,
+                           int _startDayOfWeek,
+                           int _startTime,
+                           int _startTimeMode,
+                           int _endMonth,
+                           int _endDay,
+                           int _endDayOfWeek,
+                           int _endTime,
+                           int _endTimeMode,
+                           int _dst) {
+        raw            = _raw;
+        startMonth     = _startMonth;
+        startDay       = _startDay;
+        startDayOfWeek = _startDayOfWeek;
+        startTime      = _startTime;
+        startTimeMode  = _startTimeMode;
+        endMonth       = _endMonth;
+        endDay         = _endDay;
+        endDayOfWeek   = _endDayOfWeek;
+        endTime        = _endTime;
+        endTimeMode    = _endTimeMode;
+        dst            = _dst;
+        startYear      = 0;
+        startMode      = DOM_MODE;
+        endMode        = DOM_MODE;
+
+        decodeRules();
+
+        if (_dst <= 0) {
+            throw new IllegalArgumentException();
+        }
+    }
+    private void decodeRules(){
+        decodeStartRule();
+        decodeEndRule();
+    }
+
+    /**
+     * Decode the start rule and validate the parameters.  The parameters are
+     * expected to be in encoded form, which represents the various rule modes
+     * by negating or zeroing certain values.  Representation formats are:
+     * <p>
+     * <pre>
+     *            DOW_IN_MONTH  DOM    DOW>=DOM  DOW<=DOM  no DST
+     *            ------------  -----  --------  --------  ----------
+     * month       0..11        same    same      same     don't care
+     * day        -5..5         1..31   1..31    -1..-31   0
+     * dayOfWeek   1..7         0      -1..-7    -1..-7    don't care
+     * time        0..ONEDAY    same    same      same     don't care
+     * </pre>
+     * The range for month does not include UNDECIMBER since this class is
+     * really specific to GregorianCalendar, which does not use that month.
+     * The range for time includes ONEDAY (vs. ending at ONEDAY-1) because the
+     * end rule is an exclusive limit point.  That is, the range of times that
+     * are in DST include those >= the start and < the end.  For this reason,
+     * it should be possible to specify an end of ONEDAY in order to include the
+     * entire day.  Although this is equivalent to time 0 of the following day,
+     * it's not always possible to specify that, for example, on December 31.
+     * While arguably the start range should still be 0..ONEDAY-1, we keep
+     * the start and end ranges the same for consistency.
+     */
+    private void decodeStartRule() {
+
+        useDaylight = (boolean)((startDay != 0) && (endDay != 0) ? true : false  );
+        if (useDaylight && dst == 0) {
+            dst = Grego.MILLIS_PER_DAY;
+        }
+        if (startDay != 0) {
+            if (startMonth < Calendar.JANUARY || startMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException();
+            }
+            if (startTime < 0 || startTime >= Grego.MILLIS_PER_DAY ||
+                startTimeMode < WALL_TIME || startTimeMode > UTC_TIME) {
+                throw new IllegalArgumentException();
+            }
+            if (startDayOfWeek == 0) {
+                startMode = DOM_MODE;
+            } else {
+                if (startDayOfWeek > 0) {
+                    startMode = DOW_IN_MONTH_MODE;
+                } else {
+                    startDayOfWeek = (int)-startDayOfWeek;
+                    if (startDay > 0) {
+                        startMode = DOW_GE_DOM_MODE;
+                    } else {
+                        startDay = (int)-startDay;
+                        startMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (startDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException();
+                }
+            }
+            if (startMode == DOW_IN_MONTH_MODE) {
+                if (startDay < -5 || startDay > 5) {
+                    throw new IllegalArgumentException();
+                }
+            } else if (startDay < 1 || startDay > staticMonthLength[startMonth]) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Decode the end rule and validate the parameters.  This method is exactly
+     * analogous to decodeStartRule().
+     * @see #decodeStartRule
+     */
+    private void decodeEndRule() {
+        useDaylight = (boolean)((startDay != 0) && (endDay != 0) ? true : false);
+        if (useDaylight && dst == 0) {
+            dst = Grego.MILLIS_PER_DAY;
+        }
+        if (endDay != 0) {
+            if (endMonth < Calendar.JANUARY || endMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException();
+            }
+            if (endTime < 0 || endTime > Grego.MILLIS_PER_DAY ||
+                endTimeMode < WALL_TIME || endTimeMode > UTC_TIME) {
+                throw new IllegalArgumentException();
+            }
+            if (endDayOfWeek == 0) {
+                endMode = DOM_MODE;
+            } else {
+                if (endDayOfWeek > 0) {
+                    endMode = DOW_IN_MONTH_MODE;
+                } else {
+                    endDayOfWeek = (int)-endDayOfWeek;
+                    if (endDay > 0) {
+                        endMode = DOW_GE_DOM_MODE;
+                    } else {
+                        endDay = (int)-endDay;
+                        endMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (endDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException();
+                }
+            }
+            if (endMode == DOW_IN_MONTH_MODE) {
+                if (endDay < -5 || endDay > 5) {
+                    throw new IllegalArgumentException();
+                }
+            } else if (endDay<1 || endDay > staticMonthLength[endMonth]) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Return true if obj is a SimpleTimeZone equivalent to this.
+     * @return true if obj is a SimpleTimeZone equivalent to this
+     * @stable ICU 3.6
+     */
+    public boolean equals(Object obj){
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        SimpleTimeZone that = (SimpleTimeZone) obj;
+        return raw     == that.raw &&
+            useDaylight     == that.useDaylight &&
+            idEquals(getID(),that.getID()) &&
+            (!useDaylight
+             // Only check rules if using DST
+             || (dst            == that.dst &&
+                 startMode      == that.startMode &&
+                 startMonth     == that.startMonth &&
+                 startDay       == that.startDay &&
+                 startDayOfWeek == that.startDayOfWeek &&
+                 startTime      == that.startTime &&
+                 startTimeMode  == that.startTimeMode &&
+                 endMode        == that.endMode &&
+                 endMonth       == that.endMonth &&
+                 endDay         == that.endDay &&
+                 endDayOfWeek   == that.endDayOfWeek &&
+                 endTime        == that.endTime &&
+                 endTimeMode    == that.endTimeMode &&
+                 startYear      == that.startYear ));
+
+    }
+    private boolean idEquals(String id1, String id2){
+        if(id1==null && id2==null){
+            return true;
+        }
+        if(id1!=null && id2!=null){
+            return id1.equals(id2);
+        }
+        return false;
+    }
+
+    /**
+     * Return the hash code.
+     * @return the hash code
+     * @stable ICU 3.6
+     */
+    public int hashCode(){
+        int ret = (int)( super.hashCode() +
+                                         raw ^ (raw>>>8) +
+                                         (useDaylight?0:1));
+        if(!useDaylight){
+                ret += (int)(dst ^ (dst>>>10) +
+                                startMode ^ (startMode>>>11) +
+                                startMonth ^ (startMonth>>>12) +
+                                startDay ^ (startDay>>>13) +
+                                startDayOfWeek ^ (startDayOfWeek>>>14) +
+                                startTime ^ (startTime>>>15) +
+                                startTimeMode ^ (startTimeMode>>>16) +
+                                endMode ^ (endMode>>>17) +
+                                endMonth ^ (endMonth>>>18) +
+                                endDay ^ (endDay>>>19) +
+                                endDayOfWeek ^ (endDayOfWeek>>>20) +
+                                endTime ^ (endTime>>>21) +
+                                endTimeMode ^ (endTimeMode>>>22) +
+                                startYear ^ (startYear>>>23));
+        }
+                return ret;
+    }
+
+    /**
+     * Return a clone of this time zone.
+     * @return a clone of this time zone
+     * @stable ICU 3.6
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Return true if this zone has the same rules and offset as another zone.
+     * @param othr the TimeZone object to be compared with
+     * @return true if the given zone has the same rules and offset as this one
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone othr) {
+        if(!(othr instanceof SimpleTimeZone)){
+                return false;
+        }
+        SimpleTimeZone other = (SimpleTimeZone)othr;
+        return other != null &&
+        raw     == other.raw &&
+        useDaylight     == other.useDaylight &&
+        (!useDaylight
+         // Only check rules if using DST
+         || (dst     == other.dst &&
+             startMode      == other.startMode &&
+             startMonth     == other.startMonth &&
+             startDay       == other.startDay &&
+             startDayOfWeek == other.startDayOfWeek &&
+             startTime      == other.startTime &&
+             startTimeMode  == other.startTimeMode &&
+             endMode        == other.endMode &&
+             endMonth       == other.endMonth &&
+             endDay         == other.endDay &&
+             endDayOfWeek   == other.endDayOfWeek &&
+             endTime        == other.endTime &&
+             endTimeMode    == other.endTimeMode &&
+             startYear      == other.startYear));
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        if (startMonth == 0) {
+            return null;
+        }
+
+        initTransitionRules();
+        long firstTransitionTime = firstTransition.getTime();
+        if (base < firstTransitionTime || (inclusive && base == firstTransitionTime)) {
+            return firstTransition;
+        }
+        Date stdDate = stdRule.getNextStart(base, dstRule.getRawOffset(), dstRule.getDSTSavings(), inclusive);
+        Date dstDate = dstRule.getNextStart(base, stdRule.getRawOffset(), stdRule.getDSTSavings(), inclusive);
+        if (stdDate != null && (dstDate == null || stdDate.before(dstDate))) {
+            return new TimeZoneTransition(stdDate.getTime(), dstRule, stdRule);
+        }
+        if (dstDate != null && (stdDate == null || dstDate.before(stdDate))) {
+            return new TimeZoneTransition(dstDate.getTime(), stdRule, dstRule);
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        if (startMonth == 0) {
+            return null;
+        }
+
+        initTransitionRules();
+        long firstTransitionTime = firstTransition.getTime();
+        if (base < firstTransitionTime || (!inclusive && base == firstTransitionTime)) {
+            return null;
+        }
+        Date stdDate = stdRule.getPreviousStart(base, dstRule.getRawOffset(), dstRule.getDSTSavings(), inclusive);
+        Date dstDate = dstRule.getPreviousStart(base, stdRule.getRawOffset(), stdRule.getDSTSavings(), inclusive);
+        if (stdDate != null && (dstDate == null || stdDate.after(dstDate))) {
+            return new TimeZoneTransition(stdDate.getTime(), dstRule, stdRule);
+        }
+        if (dstDate != null && (stdDate == null || dstDate.after(stdDate))) {
+            return new TimeZoneTransition(dstDate.getTime(), stdRule, dstRule);            
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        initTransitionRules();
+
+        int size = (startMonth == 0) ? 1 : 3;
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        rules[0] = initialRule;
+        if (startMonth != 0) {
+            rules[1] = stdRule;
+            rules[2] = dstRule;
+        }
+        return rules;
+    }
+
+    private transient boolean transitionRulesInitialized;
+    private transient InitialTimeZoneRule initialRule;
+    private transient TimeZoneTransition firstTransition;
+    private transient AnnualTimeZoneRule stdRule;
+    private transient AnnualTimeZoneRule dstRule;
+
+    private synchronized void initTransitionRules() {
+        if (transitionRulesInitialized) {
+            return;
+        }
+        if (startMonth != 0) {
+            DateTimeRule dtRule = null;
+            int timeRuleType;
+            long firstStdStart, firstDstStart;
+
+            // Create a TimeZoneRule for daylight saving time
+            timeRuleType = (startTimeMode == STANDARD_TIME) ? DateTimeRule.STANDARD_TIME :
+                ((startTimeMode == UTC_TIME) ? DateTimeRule.UTC_TIME : DateTimeRule.WALL_TIME);
+            switch (startMode) {
+            case DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startTime, timeRuleType);
+             break;
+            case DOW_IN_MONTH_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, startTime, timeRuleType);
+             break;
+            case DOW_GE_DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, true, startTime, timeRuleType);
+             break;
+            case DOW_LE_DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, false, startTime, timeRuleType);
+             break;
+            }
+            // For now, use ID + "(DST)" as the name
+            dstRule = new AnnualTimeZoneRule(getID() + "(DST)", getRawOffset(), getDSTSavings(),
+                 dtRule, startYear, AnnualTimeZoneRule.MAX_YEAR);
+     
+            // Calculate the first DST start time
+            firstDstStart = dstRule.getFirstStart(getRawOffset(), 0).getTime();
+
+            // Create a TimeZoneRule for standard time
+            timeRuleType = (endTimeMode == STANDARD_TIME) ? DateTimeRule.STANDARD_TIME :
+                ((endTimeMode == UTC_TIME) ? DateTimeRule.UTC_TIME : DateTimeRule.WALL_TIME);
+            switch (endMode) {
+            case DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endTime, timeRuleType);
+                break;
+            case DOW_IN_MONTH_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, endTime, timeRuleType);
+                break;
+            case DOW_GE_DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, true, endTime, timeRuleType);
+                break;
+            case DOW_LE_DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, false, endTime, timeRuleType);
+                break;
+            }
+            // For now, use ID + "(STD)" as the name
+            stdRule = new AnnualTimeZoneRule(getID() + "(STD)", getRawOffset(), 0,
+                    dtRule, startYear, AnnualTimeZoneRule.MAX_YEAR);
+
+            // Calculate the first STD start time
+            firstStdStart = stdRule.getFirstStart(getRawOffset(), dstRule.getDSTSavings()).getTime();
+
+            // Create a TimeZoneRule for initial time
+            if (firstStdStart < firstDstStart) {
+                initialRule = new InitialTimeZoneRule(getID() + "(DST)", getRawOffset(), dstRule.getDSTSavings());                
+                firstTransition = new TimeZoneTransition(firstStdStart, initialRule, stdRule);
+            } else {
+                initialRule = new InitialTimeZoneRule(getID() + "(STD)", getRawOffset(), 0);
+                firstTransition = new TimeZoneTransition(firstDstStart, initialRule, dstRule);
+            }
+            
+        } else {
+            // Create a TimeZoneRule for initial time
+            initialRule = new InitialTimeZoneRule(getID(), getRawOffset(), 0);
+        }
+        transitionRulesInitialized = true;
+    }
+}
+
diff --git a/src/com/ibm/icu/util/StringTokenizer.java b/src/com/ibm/icu/util/StringTokenizer.java
new file mode 100644
index 0000000..1d043dc
--- /dev/null
+++ b/src/com/ibm/icu/util/StringTokenizer.java
@@ -0,0 +1,688 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * <p>The string tokenizer class allows an application to break a string 
+ * into tokens by performing code point comparison. 
+ * The <code>StringTokenizer</code> methods do not distinguish 
+ * among identifiers, numbers, and quoted strings, nor do they recognize 
+ * and skip comments.</p>
+ * <p>
+ * The set of delimiters (the codepoints that separate tokens) may be 
+ * specified either at creation time or on a per-token basis. 
+ * </p>
+ * <p>
+ * An instance of <code>StringTokenizer</code> behaves in one of three ways, 
+ * depending on whether it was created with the <code>returnDelims</code> 
+ * and <code>coalesceDelims</code>
+ * flags having the value <code>true</code> or <code>false</code>: 
+ * <ul>
+ * <li>If returnDelims is <code>false</code>, delimiter code points serve to 
+ * separate tokens. A token is a maximal sequence of consecutive 
+ * code points that are not delimiters. 
+ * <li>If returnDelims is <code>true</code>, delimiter code points are 
+ * themselves considered to be tokens. In this case, if coalesceDelims is
+ * <code>true</code>, such tokens will be the maximal sequence of consecutive
+ * code points that <em>are</em> delimiters.  If coalesceDelims is false,
+ * a token will be received for each delimiter code point.
+ * </ul>
+ * <p>A token is thus either one 
+ * delimiter code point, a maximal sequence of consecutive code points that
+ * are delimiters, or a maximal sequence of consecutive code 
+ * points that are not delimiters.
+ * </p>
+ * <p>
+ * A <tt>StringTokenizer</tt> object internally maintains a current 
+ * position within the string to be tokenized. Some operations advance this 
+ * current position past the code point processed.
+ * </p>
+ * <p>
+ * A token is returned by taking a substring of the string that was used to 
+ * create the <tt>StringTokenizer</tt> object.
+ * </p>
+ * <p>
+ * Example of the use of the default delimiter tokenizer.
+ * <blockquote><pre>
+ * StringTokenizer st = new StringTokenizer("this is a test");
+ * while (st.hasMoreTokens()) {
+ *     println(st.nextToken());
+ *     }
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * prints the following output:
+ * <blockquote><pre>
+ *     this
+ *     is
+ *     a
+ *     test
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * Example of the use of the tokenizer with user specified delimiter.
+ * <blockquote><pre>
+ *     StringTokenizer st = new StringTokenizer(
+ *     "this is a test with supplementary characters &#92;ud800&#92;ud800&#92;udc00&#92;udc00",
+ *         " &#92;ud800&#92;udc00");
+ *     while (st.hasMoreTokens()) {
+ *         println(st.nextToken());
+ *     }
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * prints the following output:
+ * <blockquote><pre>
+ *     this
+ *     is
+ *     a
+ *     test
+ *     with
+ *     supplementary
+ *     characters
+ *     &#92;ud800
+ *     &#92;udc00
+ * </pre></blockquote>
+ * </p>
+ * @author syn wee
+ * @stable ICU 2.4
+ */
+public final class StringTokenizer implements Enumeration 
+{
+    // public constructors ---------------------------------------------
+     
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens, one per delimiter.
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, UnicodeSet delim, boolean returndelims)
+    {
+        this(str, delim, returndelims, false);
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens.  If coalescedelims is true, one token
+     * is returned for each run of delimiter characters, otherwise one
+     * token is returned per delimiter.  Since surrogate pairs can be
+     * delimiters, the returned token might be two chars in length.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @param coalescedelims flag indicating whether to return a run of 
+     *        delimiters as a single token or as one token per delimiter.  
+     *        This only takes effect if returndelims is true.
+     * @exception throws a NullPointerException if str is null
+     * @internal ICU 3.4.3
+     * @deprecated This API is ICU internal only.
+     */
+    public StringTokenizer(String str, UnicodeSet delim, boolean returndelims, boolean coalescedelims)
+    {
+        m_source_ = str;
+        m_length_ = str.length();
+        if (delim == null) {
+            m_delimiters_ = EMPTY_DELIMITER_;
+        }
+        else {
+            m_delimiters_ = delim;   
+        }
+        m_returnDelimiters_ = returndelims;
+        m_coalesceDelimiters_ = coalescedelims;
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (m_length_ == 0) {
+            // string length 0, no tokens
+            m_nextOffset_ = -1;
+        }
+        else {
+            m_nextOffset_ = 0;
+            if (!returndelims) {
+                m_nextOffset_ = getNextNonDelimiter(0);
+            }
+        }
+    }
+    
+    /**
+     * <p>Constructs a string tokenizer for the specified string. The 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, UnicodeSet delim)
+    {
+        this(str, delim, false, false);
+    }
+       
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens, one per delimiter.
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, String delim, boolean returndelims)
+    {
+        this(str, delim, returndelims, false); // java default behavior
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens.  If coalescedelims is true, one token
+     * is returned for each run of delimiter characters, otherwise one
+     * token is returned per delimiter.  Since surrogate pairs can be
+     * delimiters, the returned token might be two chars in length.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @param coalescedelims flag indicating whether to return a run of 
+     *        delimiters as a single token or as one token per delimiter.  
+     *        This only takes effect if returndelims is true.
+     * @exception throws a NullPointerException if str is null
+     * @internal ICU 3.4.3
+     * @deprecated This API is ICU internal only.
+     */
+    public StringTokenizer(String str, String delim, boolean returndelims, boolean coalescedelims)
+    {
+        // don't ignore whitespace
+        m_delimiters_ = EMPTY_DELIMITER_;
+        if (delim != null && delim.length() > 0) {
+            m_delimiters_ = new UnicodeSet();
+            m_delimiters_.addAll(delim);
+            checkDelimiters();
+        }
+        m_coalesceDelimiters_ = coalescedelims;
+        m_source_ = str;
+        m_length_ = str.length();
+        m_returnDelimiters_ = returndelims;
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (m_length_ == 0) {
+            // string length 0, no tokens
+            m_nextOffset_ = -1;
+        }
+        else {
+            m_nextOffset_ = 0;
+            if (!returndelims) {
+                m_nextOffset_ = getNextNonDelimiter(0);
+            }
+        }
+    }
+    
+    /**
+     * <p>Constructs a string tokenizer for the specified string. The 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, String delim)
+    {
+        // don't ignore whitespace
+        this(str, delim, false, false);
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. 
+     * The tokenizer uses the default delimiter set, which is 
+     * " &#92;t&#92;n&#92;r&#92;f": 
+     * the space character, the tab character, the newline character, the 
+     * carriage-return character, and the form-feed character.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str) 
+    {
+        this(str, DEFAULT_DELIMITERS_, false, false);
+    }
+    
+    // public methods --------------------------------------------------
+    
+    /**
+     * Tests if there are more tokens available from this tokenizer's 
+     * string. 
+     * If this method returns <tt>true</tt>, then a subsequent call to 
+     * <tt>nextToken</tt> with no argument will successfully return a token.
+     * @return <code>true</code> if and only if there is at least one token 
+     *         in the string after the current position; <code>false</code> 
+     *         otherwise.
+     * @stable ICU 2.4
+     */
+    public boolean hasMoreTokens() 
+    {
+        return m_nextOffset_ >= 0;
+    }
+    
+    /**
+     * Returns the next token from this string tokenizer.
+     * @return the next token from this string tokenizer.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken() 
+    {
+        if (m_tokenOffset_ < 0) {
+            if (m_nextOffset_ < 0) {
+                throw new NoSuchElementException("No more tokens in String");   
+            }
+            // pre-calculations of tokens not done
+            if (m_returnDelimiters_) {
+                int tokenlimit = 0;
+                int c = UTF16.charAt(m_source_, m_nextOffset_);
+                boolean contains = delims == null 
+                    ? m_delimiters_.contains(c) 
+                    : c < delims.length && delims[c];
+                if (contains) {
+                     if (m_coalesceDelimiters_) {
+                        tokenlimit = getNextNonDelimiter(m_nextOffset_);
+                     } else {
+                        tokenlimit = m_nextOffset_ + UTF16.getCharCount(c);
+                        if (tokenlimit == m_length_) {
+                            tokenlimit = -1;
+                        }
+                     }
+                }
+                else {
+                    tokenlimit = getNextDelimiter(m_nextOffset_);
+                }
+                String result;
+                if (tokenlimit < 0) {
+                    result = m_source_.substring(m_nextOffset_);
+                }
+                else {
+                    result = m_source_.substring(m_nextOffset_, tokenlimit);
+                }
+                m_nextOffset_ = tokenlimit;
+                return result;
+            }
+            else {
+                int tokenlimit = getNextDelimiter(m_nextOffset_);
+                String result;
+                if (tokenlimit < 0) {
+                    result = m_source_.substring(m_nextOffset_);
+                    m_nextOffset_ = tokenlimit;
+                }
+                else {
+                    result = m_source_.substring(m_nextOffset_, tokenlimit);
+                    m_nextOffset_ = getNextNonDelimiter(tokenlimit);
+                }
+                
+                return result;
+            }
+        }
+        // count was called before and we have all the tokens
+        if (m_tokenOffset_ >= m_tokenSize_) {
+            throw new NoSuchElementException("No more tokens in String");
+        }
+        String result;
+        if (m_tokenLimit_[m_tokenOffset_] >= 0) {
+            result = m_source_.substring(m_tokenStart_[m_tokenOffset_],
+                                         m_tokenLimit_[m_tokenOffset_]);
+        }
+        else {
+            result = m_source_.substring(m_tokenStart_[m_tokenOffset_]);
+        }
+        m_tokenOffset_ ++;
+        m_nextOffset_ = -1;
+        if (m_tokenOffset_ < m_tokenSize_) {
+            m_nextOffset_ = m_tokenStart_[m_tokenOffset_];
+        }
+        return result;
+    }
+    
+    /**
+     * Returns the next token in this string tokenizer's string. First, 
+     * the set of characters considered to be delimiters by this 
+     * <tt>StringTokenizer</tt> object is changed to be the characters in 
+     * the string <tt>delim</tt>. Then the next token in the string
+     * after the current position is returned. The current position is 
+     * advanced beyond the recognized token.  The new delimiter set 
+     * remains the default after this call. 
+     * @param delim the new delimiters.
+     * @return the next token, after switching to the new delimiter set.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken(String delim) 
+    {
+        m_delimiters_ = EMPTY_DELIMITER_;
+        if (delim != null && delim.length() > 0) {
+            m_delimiters_ = new UnicodeSet();
+            m_delimiters_.addAll(delim);
+        }
+        return nextToken(m_delimiters_);
+    }
+    
+    /**
+     * Returns the next token in this string tokenizer's string. First, 
+     * the set of characters considered to be delimiters by this 
+     * <tt>StringTokenizer</tt> object is changed to be the characters in 
+     * the string <tt>delim</tt>. Then the next token in the string
+     * after the current position is returned. The current position is 
+     * advanced beyond the recognized token.  The new delimiter set 
+     * remains the default after this call. 
+     * @param delim the new delimiters.
+     * @return the next token, after switching to the new delimiter set.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken(UnicodeSet delim) 
+    {
+        m_delimiters_ = delim;
+        checkDelimiters();
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (!m_returnDelimiters_) {
+            m_nextOffset_ = getNextNonDelimiter(m_nextOffset_);
+        }
+        return nextToken();
+    }
+    
+    /**
+     * Returns the same value as the <code>hasMoreTokens</code> method. 
+     * It exists so that this class can implement the 
+     * <code>Enumeration</code> interface. 
+     * @return <code>true</code> if there are more tokens;
+     *         <code>false</code> otherwise.
+     * @see #hasMoreTokens()
+     * @stable ICU 2.4
+     */
+    public boolean hasMoreElements() 
+    {
+        return hasMoreTokens();
+    }
+    
+    /**
+     * Returns the same value as the <code>nextToken</code> method, except 
+     * that its declared return value is <code>Object</code> rather than 
+     * <code>String</code>. It exists so that this class can implement the 
+     * <code>Enumeration</code> interface. 
+     * @return the next token in the string.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @see #nextToken()
+     * @stable ICU 2.4
+     */
+    public Object nextElement() 
+    {
+        return nextToken();
+    }
+    
+    /**
+     * Calculates the number of times that this tokenizer's 
+     * <code>nextToken</code> method can be called before it generates an 
+     * exception. The current position is not advanced.
+     * @return the number of tokens remaining in the string using the 
+     *         current delimiter set.
+     * @see #nextToken()
+     * @stable ICU 2.4
+     */
+    public int countTokens() 
+    {
+        int result = 0;
+        if (hasMoreTokens()) {
+            if (m_tokenOffset_ >= 0) {
+                return m_tokenSize_ - m_tokenOffset_;
+            }
+            if (m_tokenStart_ == null) {
+                m_tokenStart_ = new int[TOKEN_SIZE_];
+                m_tokenLimit_ = new int[TOKEN_SIZE_];
+            }
+            do {
+                if (m_tokenStart_.length == result) {
+                    int temptokenindex[] = m_tokenStart_;
+                    int temptokensize[] = m_tokenLimit_;
+                    int originalsize = temptokenindex.length;
+                    int newsize = originalsize + TOKEN_SIZE_;
+                    m_tokenStart_ = new int[newsize];
+                    m_tokenLimit_ = new int[newsize];
+                    System.arraycopy(temptokenindex, 0, m_tokenStart_, 0, 
+                                     originalsize);
+                    System.arraycopy(temptokensize, 0, m_tokenLimit_, 0, 
+                                     originalsize);
+                }
+                m_tokenStart_[result] = m_nextOffset_;
+                if (m_returnDelimiters_) {
+                    int c = UTF16.charAt(m_source_, m_nextOffset_);
+                    boolean contains = delims == null 
+                        ? m_delimiters_.contains(c) 
+                        : c < delims.length && delims[c];
+                    if (contains) {
+                        if (m_coalesceDelimiters_) {
+                            m_tokenLimit_[result] = getNextNonDelimiter(
+                                                                m_nextOffset_);
+                        } else {
+                            int p = m_nextOffset_ + 1;
+                            if (p == m_length_) {
+                                p = -1;
+                            }
+                            m_tokenLimit_[result] = p;
+
+                        }
+                    }
+                    else {
+                        m_tokenLimit_[result] = getNextDelimiter(m_nextOffset_);
+                    }
+                    m_nextOffset_ = m_tokenLimit_[result];
+                }
+                else {
+                    m_tokenLimit_[result] = getNextDelimiter(m_nextOffset_);
+                    m_nextOffset_ = getNextNonDelimiter(m_tokenLimit_[result]);
+                }
+                result ++;
+            } while (m_nextOffset_ >= 0);
+            m_tokenOffset_ = 0;
+            m_tokenSize_ = result;
+            m_nextOffset_ = m_tokenStart_[0];
+        }
+        return result;
+    }
+    
+    // private data members -------------------------------------------------
+    
+    /**
+     * Current offset to the token array. If the array token is not set up yet,
+     * this value is a -1
+     */
+    private int m_tokenOffset_;
+    /**
+     * Size of the token array. If the array token is not set up yet,
+     * this value is a -1
+     */
+    private int m_tokenSize_;
+    /**
+     * Array of pre-calculated tokens start indexes in source string terminated 
+     * by -1.
+     * This is only set up during countTokens() and only stores the remaining
+     * tokens, not all tokens including parsed ones
+     */
+    private int m_tokenStart_[];
+    /**
+     * Array of pre-calculated tokens limit indexes in source string.
+     * This is only set up during countTokens() and only stores the remaining
+     * tokens, not all tokens including parsed ones
+     */
+    private int m_tokenLimit_[];
+    /**
+     * UnicodeSet containing delimiters
+     */
+    private UnicodeSet m_delimiters_;
+    /**
+     * String to parse for tokens
+     */
+    private String m_source_;
+    /**
+     * Length of m_source_
+     */
+    private int m_length_;
+    /**
+     * Current position in string to parse for tokens
+     */
+    private int m_nextOffset_;
+    /**
+     * Flag indicator if delimiters are to be treated as tokens too
+     */
+    private boolean m_returnDelimiters_;
+
+    /**
+     * Flag indicating whether to coalesce runs of delimiters into single tokens
+     */
+    private boolean m_coalesceDelimiters_;
+
+    /**
+     * Default set of delimiters &#92;t&#92;n&#92;r&#92;f
+     */
+    private static final UnicodeSet DEFAULT_DELIMITERS_ 
+                                        = new UnicodeSet("[ \t\n\r\f]", false);
+    /**
+     * Array size increments
+     */
+    private static final int TOKEN_SIZE_ = 100;
+    /**
+     * A empty delimiter UnicodeSet, used when user specified null delimiters
+     */
+    private static final UnicodeSet EMPTY_DELIMITER_ = new UnicodeSet();
+    
+    // private methods ------------------------------------------------------
+    
+    /**
+     * Gets the index of the next delimiter after offset
+     * @param offset to the source string
+     * @return offset of the immediate next delimiter, otherwise 
+     *         (- source string length - 1) if there
+     *         are no more delimiters after m_nextOffset
+     */
+    private int getNextDelimiter(int offset)
+    {
+        if (offset >= 0) {
+            int result = offset; 
+            int c = 0;
+            if (delims == null) {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (m_delimiters_.contains(c)) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            } else {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (c < delims.length && delims[c]) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            }                
+            if (result < m_length_) {
+                return result;
+            }
+        }
+        return -1 - m_length_;
+    }
+    
+    /**
+     * Gets the index of the next non-delimiter after m_nextOffset_
+     * @param offset to the source string
+     * @return offset of the immediate next non-delimiter, otherwise 
+     *         (- source string length - 1) if there
+     *         are no more delimiters after m_nextOffset
+     */
+    private int getNextNonDelimiter(int offset)
+    {
+        if (offset >= 0) {
+            int result = offset; 
+            int c = 0;
+            if (delims == null) {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (!m_delimiters_.contains(c)) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            } else {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (!(c < delims.length && delims[c])) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            }
+            if (result < m_length_) {
+                return result;
+            }
+        }
+        return -1 - m_length_;
+    }
+
+    void checkDelimiters() {
+        if (m_delimiters_ == null || m_delimiters_.size() == 0) {
+            delims = new boolean[0];
+        } else {
+            int maxChar = m_delimiters_.getRangeEnd(m_delimiters_.getRangeCount()-1);
+            if (maxChar < 0x7f) {
+                delims = new boolean[maxChar+1];
+                for (int i = 0, ch; -1 != (ch = m_delimiters_.charAt(i)); ++i) {
+                    delims[ch] = true;
+                }
+            } else {
+                delims = null;
+            }
+        }
+    }
+    private boolean[] delims;
+}
diff --git a/src/com/ibm/icu/util/TaiwanCalendar.java b/src/com/ibm/icu/util/TaiwanCalendar.java
new file mode 100644
index 0000000..2fef659
--- /dev/null
+++ b/src/com/ibm/icu/util/TaiwanCalendar.java
@@ -0,0 +1,253 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/** 
+ * <code>TaiwanCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since 1912. 
+ * <p>
+ * The Taiwan calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since 1912 AD (Gregorian).
+ * <p>
+ * The Taiwan Calendar has one era: <code>MINGUO</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * TaiwanCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=roc"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @author Steven R. Loomis
+ * @stable ICU 3.8
+ */
+public class TaiwanCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 2583005278132380631L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Taiwan Era for years before Minguo 1.
+     * Brefore Minuo 1 is Gregorian 1911, Before Minguo 2 is Gregorian 1910
+     * and so on.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int BEFORE_MINGUO = 0;
+
+    /**
+     * Constant for the Taiwan Era for Minguo.  Minguo 1 is 1912 in
+     * Gregorian calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int MINGUO = 1;
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a TaiwanCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since 1912, inclusive.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    private static final int Taiwan_ERA_START = 1911; // 0=1911, 1=1912
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */    
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in TaiwanCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Minguo 59)
+        int year = GREGORIAN_EPOCH;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR
+                && newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            int era = internalGet(ERA, MINGUO);
+            if (era == MINGUO) {
+                year = internalGet(YEAR, 1) + Taiwan_ERA_START;
+            } else {
+                year = 1 - internalGet(YEAR, 1) + Taiwan_ERA_START;
+            }
+        }
+        return year;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int y = internalGet(EXTENDED_YEAR) - Taiwan_ERA_START;
+        if (y > 0) {
+            internalSet(ERA, MINGUO);
+            internalSet(YEAR, y);
+        } else {
+            internalSet(ERA, BEFORE_MINGUO);
+            internalSet(YEAR, 1- y);
+        }
+    }
+
+    /**
+     * Override GregorianCalendar.  There is only one Taiwan ERA.  We
+     * should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to
+     * implement the 1..5000000 range, but it's not critical.
+     * @stable ICU 3.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (field == ERA) {
+            if (limitType == MINIMUM || limitType == GREATEST_MINIMUM) {
+                return BEFORE_MINGUO;
+            } else {
+                return MINGUO;
+            }
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "roc";
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java b/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
new file mode 100644
index 0000000..2660614
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.Arrays;
+import java.util.Date;
+
+/**
+ * <code>TimeArrayTimeZoneRule</code> represents a time zone rule whose start times are
+ * defined by an array of milliseconds since the standard base time.
+ * 
+ * @stable ICU 3.8
+ */
+public class TimeArrayTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = -1117109130077415245L;
+
+    private final long[] startTimes;
+    private final int timeType;
+
+    /**
+     * Constructs a <code>TimeArrayTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time, the amount of daylight saving offset adjustment and
+     * the array of times when this rule takes effect.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in
+     *                      milliseconds.  If this ia a rule for standard time,
+     *                      the value of this argument is 0.
+     * @param startTimes    The start times in milliseconds since the base time
+     *                      (January 1, 1970, 00:00:00).
+     * @param timeType      The time type of the start times, which is one of
+     *                      <code>DataTimeRule.WALL_TIME</code>, <code>STANDARD_TIME</code>
+     *                      and <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeArrayTimeZoneRule(String name, int rawOffset, int dstSavings, long[] startTimes, int timeType) {
+        super(name, rawOffset, dstSavings);
+        if (startTimes == null || startTimes.length == 0) {
+            throw new IllegalArgumentException("No start times are specified.");
+        } else {
+            this.startTimes = (long[])startTimes.clone();
+            Arrays.sort(this.startTimes);
+        }
+        this.timeType = timeType;
+    }
+
+    /**
+     * Gets the array of start times used by this rule.
+     * 
+     * @return  An array of the start times in milliseconds since the base time
+     *          (January 1, 1970, 00:00:00 GMT).
+     * @stable ICU 3.8
+     */
+    public long[] getStartTimes() {
+        return (long[])startTimes.clone();
+    }
+
+    /**
+     * Gets the time type of the start times used by this rule.  The return value
+     * is either <code>DateTimeRule.WALL_TIME</code> or <code>DateTimeRule.STANDARD_TIME</code>
+     * or <code>DateTimeRule.UTC_TIME</code>.
+     * 
+     * @return The time type used of the start times used by this rule.
+     * @stable ICU 3.8
+     */
+    public int getTimeType() {
+        return timeType;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        return new Date(getUTC(startTimes[0], prevRawOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        return new Date(getUTC(startTimes[startTimes.length - 1], prevRawOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevOffset, int prevDSTSavings, boolean inclusive) {
+        int i = startTimes.length - 1;
+        for (; i >= 0; i--) {
+            long time = getUTC(startTimes[i], prevOffset, prevDSTSavings);
+            if (time < base || (!inclusive && time == base)) {
+                break;
+            }
+        }
+        if (i == startTimes.length - 1) {
+            return null;
+        }
+        return new Date(getUTC(startTimes[i + 1], prevOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevOffset, int prevDSTSavings, boolean inclusive) {
+        int i = startTimes.length - 1;
+        for (; i >= 0; i--) {
+            long time = getUTC(startTimes[i], prevOffset, prevDSTSavings);
+            if (time < base || (inclusive && time == base)) {
+                return new Date(time);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (!(other instanceof TimeArrayTimeZoneRule)) {
+            return false;
+        }
+        if (timeType == ((TimeArrayTimeZoneRule)other).timeType
+                && Arrays.equals(startTimes, ((TimeArrayTimeZoneRule)other).startTimes)) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>TimeArrayTimeZoneRule</code> always returns true.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return true;
+    }
+
+    /* Get UTC of the time with the raw/dst offset */
+    private long getUTC(long time, int raw, int dst) {
+        if (timeType != DateTimeRule.UTC_TIME) {
+            time -= raw;
+        }
+        if (timeType == DateTimeRule.WALL_TIME) {
+            time -= dst;
+        }
+        return time;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeArrayTimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append(", timeType=");
+        buf.append(timeType);
+        buf.append(", startTimes=[");
+        for (int i = 0; i < startTimes.length; i++) {
+            if (i != 0) {
+                buf.append(", ");
+            }
+            buf.append(Long.toString(startTimes[i]));
+        }
+        buf.append("]");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeUnit.java b/src/com/ibm/icu/util/TimeUnit.java
new file mode 100644
index 0000000..cbec7ea
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeUnit.java
@@ -0,0 +1,64 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+/**
+ * Measurement unit for time units.
+ * @see TimeUnitAmount
+ * @see TimeUnit
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnit extends MeasureUnit {
+    /** 
+     * Supports selected time duration units
+     */
+    private String name;
+
+    private static TimeUnit[] values = new TimeUnit[7]; // adjust count if new items are added
+    private static int valueCount = 0;
+
+    /** 
+     * Constant value for supported time unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static TimeUnit
+    SECOND = new TimeUnit("second"),
+    MINUTE = new TimeUnit("minute"),
+    HOUR = new TimeUnit("hour"),
+    DAY = new TimeUnit("day"),
+    WEEK = new TimeUnit("week"),
+    MONTH = new TimeUnit("month"),
+    YEAR = new TimeUnit("year");
+
+    private TimeUnit(String name) {
+        this.name = name;
+        values[valueCount++] = this; // store in values array
+    }
+
+    /**
+     * @return the available values
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static TimeUnit[] values() {
+        return (TimeUnit[])values.clone();
+    }
+
+    /**
+     * A string representation for debugging.
+     * It is for debugging purpose. The value might change.
+     * Please do not count on the value.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        return name;
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeUnitAmount.java b/src/com/ibm/icu/util/TimeUnitAmount.java
new file mode 100644
index 0000000..54f53d7
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeUnitAmount.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+/**
+ * Express a duration as a time unit and number. Patterned after Currency.
+ * <p>Immutable.
+ * @see TimeUnitAmount
+ * @see com.ibm.icu.text.TimeUnitFormat
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnitAmount extends Measure {
+
+    /**
+     * Create from a number and unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitAmount(Number number, TimeUnit unit) {
+        super(number, unit);
+    }
+
+    /**
+     * Create from a number and unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitAmount(double number, TimeUnit unit) {
+        super(new Double(number), unit);
+    }
+
+    /**
+     * Get the unit (convenience to avoid cast).
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnit getTimeUnit() {
+        return (TimeUnit) getUnit();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeZone.java b/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..baa9d14
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,890 @@
+/*
+ * @(#)TimeZone.java    1.51 00/01/19
+ *
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUConfig;
+import com.ibm.icu.impl.JavaTimeZone;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.TimeZoneAdapter;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
+ * savings.
+ *
+ * <p>
+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
+ * which creates a <code>TimeZone</code> based on the time zone where the program
+ * is running. For example, for a program running in Japan, <code>getDefault</code>
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
+ *
+ * <p>
+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code>
+ * along with a time zone ID. For instance, the time zone ID for the
+ * U.S. Pacific Time zone is "America/Los_Angeles". So, you can get a
+ * U.S. Pacific Time <code>TimeZone</code> object with:
+ * <blockquote>
+ * <pre>
+ * TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ * </pre>
+ * </blockquote>
+ * You can use <code>getAvailableIDs</code> method to iterate through
+ * all the supported time zone IDs. You can then choose a
+ * supported ID to get a <code>TimeZone</code>.
+ * If the time zone you want is not represented by one of the
+ * supported IDs, then you can create a custom time zone ID with
+ * the following syntax:
+ *
+ * <blockquote>
+ * <pre>
+ * GMT[+|-]hh[[:]mm]
+ * </pre>
+ * </blockquote>
+ *
+ * For example, you might specify GMT+14:00 as a custom
+ * time zone ID.  The <code>TimeZone</code> that is returned
+ * when you specify a custom time zone ID does not include
+ * daylight savings time.
+ * <p>
+ * For compatibility with JDK 1.1.x, some other three-letter time zone IDs
+ * (such as "PST", "CTT", "AST") are also supported. However, <strong>their
+ * use is deprecated</strong> because the same abbreviation is often used
+ * for multiple time zones (for example, "CST" could be U.S. "Central Standard
+ * Time" and "China Standard Time"), and the Java platform can then only
+ * recognize one of them.
+ *
+ * <p><strong>Note:</strong> Starting from ICU4J 4.0, you can optionally choose
+ * JDK <code>TimeZone</code> as the time zone implementation.  The TimeZone factory
+ * method <code>getTimeZone</code> creates an instance of ICU's own <code>TimeZone</code>
+ * subclass by default.  If you want to use the JDK implementation always, you can
+ * set the default time zone implementation type by the new method
+ * <code>setDefaultTimeZoneType</code>.  Alternatively, you can change the initial
+ * default implementation type by setting a property below.
+ * 
+ * <blockquote>
+ * <pre>
+ * #
+ * # The default TimeZone implementation type used by the ICU TimeZone
+ * # factory method. [ ICU | JDK ]
+ * #
+ * com.ibm.icu.util.TimeZone.DefaultTimeZoneType = ICU
+ * </pre>
+ * </blockquote>
+ *
+ * <p>This property is included in ICUConfig.properties in com.ibm.icu package.
+ * When <code>TimeZone</code> class is loaded, the intialization code checks
+ * if the property <code>com.ibm.icu.util.TimeZone.DefaultTimeZoneType=xxx</code>
+ * is defined by the system properties.  If not available, then it loads ICUConfig.properties
+ * to get the default time zone implementation type.  The property setting is
+ * only used for the initial default value and you can change the default type
+ * by <code>setDefaultTimeZoneType</code> at runtime.
+ *
+ * @see          Calendar
+ * @see          GregorianCalendar
+ * @see          SimpleTimeZone
+ * @author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+abstract public class TimeZone implements Serializable, Cloneable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = -744942128318337471L;
+
+    /**
+     * Default constructor.  (For invocation by subclass constructors,
+     * typically implicit.)
+     * @stable ICU 2.8
+     */
+    public TimeZone() {
+    }
+
+    /**
+     * A time zone implementation type indicating ICU's own TimeZone used by
+     * <code>getTimeZone</code>, <code>setDefaultTimeZoneType</code>
+     * and <code>getDefaultTimeZoneType</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TIMEZONE_ICU = 0;
+    /**
+     * A time zone implementation type indicating JDK TimeZone used by
+     * <code>getTimeZone</code>, <code>setDefaultTimeZoneType</code>
+     * and <code>getDefaultTimeZoneType</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TIMEZONE_JDK = 1;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name, such as "PST."
+     * @see #LONG
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 0;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name, such as "Pacific Standard Time."
+     * @see #SHORT
+     * @stable ICU 2.0
+     */
+    public static final int LONG  = 1;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+/*
+    private static final int SHORT_GENERIC = 2;
+*/
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static final int LONG_GENERIC = 3;
+
+    /**
+     * Cache to hold the SimpleDateFormat objects for a Locale.
+     */
+    private static ICUCache cachedLocaleData = new SimpleCache();
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @return the offset to add *to* GMT to get local time.
+     * @stable ICU 2.0
+     */
+    abstract public int getOffset(int era, int year, int month, int day,
+                                  int dayOfWeek, int milliseconds);
+
+
+    /**
+     * Returns the offset of this time zone from UTC at the specified
+     * date. If Daylight Saving Time is in effect at the specified
+     * date, the offset value is adjusted with the amount of daylight
+     * saving.
+     *
+     * @param date the date represented in milliseconds since January 1, 1970 00:00:00 GMT
+     * @return the amount of time in milliseconds to add to UTC to get local time.
+     *
+     * @see Calendar#ZONE_OFFSET
+     * @see Calendar#DST_OFFSET
+     * @see #getOffset(long, boolean, int[])
+     * @stable ICU 2.8
+     */
+    public int getOffset(long date) {
+        int[] result = new int[2];
+        getOffset(date, false, result);
+        return result[0]+result[1];
+    }
+
+    /**
+     * Returns the time zone raw and GMT offset for the given moment
+     * in time.  Upon return, local-millis = GMT-millis + rawOffset +
+     * dstOffset.  All computations are performed in the proleptic
+     * Gregorian calendar.  The default implementation in the TimeZone
+     * class delegates to the 8-argument getOffset().
+     *
+     * @param date moment in time for which to return offsets, in
+     * units of milliseconds from January 1, 1970 0:00 GMT, either GMT
+     * time or local wall time, depending on `local'.
+     * @param local if true, `date' is local wall time; otherwise it
+     * is in GMT time.
+     * @param offsets output parameter to receive the raw offset, that
+     * is, the offset not including DST adjustments, in offsets[0],
+     * and the DST offset, that is, the offset to be added to
+     * `rawOffset' to obtain the total offset between local and GMT
+     * time, in offsets[1]. If DST is not in effect, the DST offset is
+     * zero; otherwise it is a positive value, typically one hour.
+     *
+     * @stable ICU 2.8
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        offsets[0] = getRawOffset();
+        if (!local) {
+            date += offsets[0]; // now in local standard millis
+        }
+
+        // When local == true, date might not be in local standard
+        // millis.  getOffset taking 6 parameters used here assume
+        // the given time in day is local standard time.
+        // At STD->DST transition, there is a range of time which
+        // does not exist.  When 'date' is in this time range
+        // (and local == true), this method interprets the specified
+        // local time as DST.  At DST->STD transition, there is a
+        // range of time which occurs twice.  In this case, this
+        // method interprets the specified local time as STD.
+        // To support the behavior above, we need to call getOffset
+        // (with 6 args) twice when local == true and DST is
+        // detected in the initial call.
+        int fields[] = new int[6];
+        for (int pass = 0; ; pass++) {
+            Grego.timeToFields(date, fields);
+            offsets[1] = getOffset(GregorianCalendar.AD,
+                                    fields[0], fields[1], fields[2],
+                                    fields[3], fields[5]) - offsets[0];
+
+            if (pass != 0 || !local || offsets[1] == 0) {
+                break;
+            }
+            // adjust to local standard millis
+            date -= offsets[1];
+        }
+    }
+
+    /**
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * @param offsetMillis the given base time zone offset to GMT.
+     * @stable ICU 2.0
+     */
+    abstract public void setRawOffset(int offsetMillis);
+
+    /**
+     * Gets unmodified offset, NOT modified in case of daylight savings.
+     * This is the offset to add *to* UTC to get local time.
+     * @return the unmodified offset to add *to* UTC to get local time.
+     * @stable ICU 2.0
+     */
+    abstract public int getRawOffset();
+
+    /**
+     * Gets the ID of this time zone.
+     * @return the ID of this time zone.
+     * @stable ICU 2.0
+     */
+    public String getID() {
+        return ID;
+    }
+
+    /**
+     * Sets the time zone ID. This does not change any other data in
+     * the time zone object.
+     * @param ID the new time zone ID.
+     * @stable ICU 2.0
+     */
+    public void setID(String ID) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName() {
+        return _getDisplayName(false, LONG_GENERIC, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(Locale locale) {
+        return _getDisplayName(false, LONG_GENERIC, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the ulocale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default ulocale if the given ulocale is not recognized.
+     * @stable ICU 3.2
+     */
+    public final String getDisplayName(ULocale locale) {
+        return _getDisplayName(false, LONG_GENERIC, locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(boolean daylight, int style) {
+        return getDisplayName(daylight, style, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return getDisplayName(daylight, style, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        if (style != SHORT && style != LONG) {
+            throw new IllegalArgumentException("Illegal style: " + style);
+        }
+        return _getDisplayName(daylight, style, locale);
+    }
+
+    /**
+     * The public version of this API only accepts LONG/SHORT, the
+     * internal version (which this calls) also accepts LONG_GENERIC/SHORT_GENERIC.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private String _getDisplayName(boolean daylight, int style, ULocale locale) {
+        if (locale == null) {
+            throw new NullPointerException("locale is null");
+        }
+
+        /* NOTES:
+         * (1) We use SimpleDateFormat for simplicity; we could do this
+         * more efficiently but it would duplicate the SimpleDateFormat code
+         * here, which is undesirable.
+         * (2) Attempts to move the code from SimpleDateFormat to here also run
+         * aground because this requires SimpleDateFormat to keep a Locale
+         * object around, which it currently doesn't; to synthesize such a
+         * locale upon resurrection; and to somehow handle the special case of
+         * construction from a DateFormatSymbols object.
+         */
+
+        // We keep a cache, indexed by locale.  The cache contains a
+        // SimpleDateFormat object, which we create on demand.
+        SimpleDateFormat format = (SimpleDateFormat)cachedLocaleData.get(locale);
+        if (format == null) {
+            format = new SimpleDateFormat(null, locale);
+            cachedLocaleData.put(locale, format);
+        }
+
+        String[] patterns = { "z", "zzzz", "v", "vvvv" };
+        format.applyPattern(patterns[style]);
+        Date d = new Date();
+        if (style >= 2) {
+            // Generic names may change time to time even for a single time zone.
+            // This method returns the one used for the zone now.
+            format.setTimeZone(this);
+            return format.format(d);
+        } else {
+            int[] offsets = new int[2];
+            getOffset(d.getTime(), false, offsets);
+            if ((daylight && offsets[1] != 0) || (!daylight && offsets[1] == 0)) {
+                format.setTimeZone(this);
+                return format.format(d);
+            }
+
+            // Create a new SimpleTimeZone as a stand-in for this zone; the stand-in
+            // will have no DST, or DST during July, but the same ID and offset,
+            // and hence the same display name.  We don't cache these because
+            // they're small and cheap to create.
+            SimpleTimeZone tz;
+            if (daylight && useDaylightTime()) {
+                // The display name for daylight saving time was requested, but currently not in DST
+
+                // Set a fixed date (July 1) in this Gregorian year
+                GregorianCalendar cal = new GregorianCalendar(this);
+                cal.set(Calendar.MONTH, Calendar.JULY);
+                cal.set(Calendar.DATE, 1);
+
+                // Get July 1 date
+                d = cal.getTime();
+
+                // Check if it is in DST
+                if (cal.get(Calendar.DST_OFFSET) == 0) {
+                    // We need to create a fake time zone
+                    tz = new SimpleTimeZone(offsets[0], getID(),
+                            Calendar.JUNE, 1, 0, 0,
+                            Calendar.AUGUST, 1, 0, 0,
+                            getDSTSavings());
+                    format.setTimeZone(tz);
+                }
+            } else {
+                // The display name for standard time was requested, but currently in DST
+                tz = new SimpleTimeZone(offsets[0], getID());
+                format.setTimeZone(tz);
+            }
+            return format.format(d);
+        }
+    }
+
+    /**
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     * <p>
+     * The default implementation always returns 3600000 milliseconds
+     * (i.e., one hour) if this time zone observes Daylight Saving
+     * Time. Otherwise, 0 (zero) is returned.
+     * <p>
+     * If an underlying TimeZone implementation subclass supports
+     * historical Daylight Saving Time changes, this method returns
+     * the known latest daylight saving value.
+     *
+     * @return the amount of saving time in milliseconds
+     * @stable ICU 2.8
+     */
+    public int getDSTSavings() {
+        if (useDaylightTime()) {
+            return 3600000;
+        }
+        return 0;
+    }
+
+    /**
+     * Queries if this time zone uses daylight savings time.
+     * @return true if this time zone uses daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    abstract public boolean useDaylightTime();
+
+    /**
+     * Queries if the given date is in daylight savings time in
+     * this time zone.
+     * @param date the given Date.
+     * @return true if the given date is in daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    abstract public boolean inDaylightTime(Date date);
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID.
+     *
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     *
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @stable ICU 2.0
+     */
+    public static synchronized TimeZone getTimeZone(String ID) {
+        return getTimeZone(ID, TZ_IMPL);
+    }
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID and the timezone type.
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     * @param type Timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized TimeZone getTimeZone(String ID, int type) {
+        TimeZone result;
+        if (type == TIMEZONE_JDK) {
+            result = new JavaTimeZone(ID);
+        } else {
+            /* We first try to lookup the zone ID in our system list.  If this
+             * fails, we try to parse it as a custom string GMT[+-]hh:mm.  If
+             * all else fails, we return GMT, which is probably not what the
+             * user wants, but at least is a functioning TimeZone object.
+             *
+             * We cannot return NULL, because that would break compatibility
+             * with the JDK.
+             */
+            if(ID==null){
+                throw new NullPointerException();
+            }
+            result = ZoneMeta.getSystemTimeZone(ID);
+
+            if (result == null) {
+                result = ZoneMeta.getCustomTimeZone(ID);
+            }
+            if (result == null) {
+                result = ZoneMeta.getGMT();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Sets the default timezone type used by <code>getTimeZone</code>.
+     * @param type Timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized void setDefaultTimeZoneType(int type) {
+        if (type != TIMEZONE_ICU && type != TIMEZONE_JDK) {
+            throw new IllegalArgumentException("Invalid timezone type");
+        }
+        TZ_IMPL = type;
+    }
+
+    /**
+     * Returns the default timezone type currently used.
+     * @return The default timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int getDefaultTimeZoneType() {
+        return TZ_IMPL;
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        return ZoneMeta.getAvailableIDs(rawOffset);
+
+    }
+
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param country a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones in the given
+     * country.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(String country) {
+        return ZoneMeta.getAvailableIDs(country);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs() {
+        return ZoneMeta.getAvailableIDs();
+    }
+    
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The returned count includes the given ID; it is always >= 1
+     * for valid IDs.  The given ID must be a system time zone.  If it
+     * is not, returns zero.
+     * @param id a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'id', or zero if 'id' is not a valid system ID
+     * @see #getEquivalentID
+     * @stable ICU 2.0
+     */
+    public static int countEquivalentIDs(String id) {
+        return ZoneMeta.countEquivalentIDs(id);
+    }
+
+    /**
+     * Returns an ID in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param id a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'id', or an empty string if 'id' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     * @stable ICU 2.0
+     */
+    public static String getEquivalentID(String id, int index) {
+        return ZoneMeta.getEquivalentID(id, index);
+    }
+
+    /**
+     * Gets the default <code>TimeZone</code> for this host.
+     * The source of the default <code>TimeZone</code> 
+     * may vary with implementation.
+     * @return a default <code>TimeZone</code>.
+     * @stable ICU 2.0
+     */
+    public static synchronized TimeZone getDefault() {
+        if (defaultZone == null) {
+            if (TZ_IMPL == TIMEZONE_JDK) {
+                defaultZone = new JavaTimeZone();
+            } else {
+                java.util.TimeZone temp = java.util.TimeZone.getDefault();
+                defaultZone = getTimeZone(temp.getID());
+            }
+        }
+        return (TimeZone) defaultZone.clone();
+    }
+
+    /**
+     * Sets the <code>TimeZone</code> that is
+     * returned by the <code>getDefault</code> method.  If <code>zone</code>
+     * is null, reset the default to the value it had originally when the
+     * VM first started.
+     * @param tz the new default time zone
+     * @stable ICU 2.0
+     */
+    public static synchronized void setDefault(TimeZone tz) {
+        defaultZone = tz;
+        java.util.TimeZone jdkZone = null;
+        if (defaultZone instanceof JavaTimeZone) {
+            jdkZone = ((JavaTimeZone)defaultZone).unwrap();
+        } else {
+            // Keep java.util.TimeZone default in sync so java.util.Date
+            // can interoperate with com.ibm.icu.util classes.
+
+            if (tz != null) {
+                if (tz instanceof com.ibm.icu.impl.OlsonTimeZone) {
+                    // Because of the lack of APIs supporting historic
+                    // zone offset/dst saving in JDK TimeZone,
+                    // wrapping ICU TimeZone with JDK TimeZone will
+                    // cause historic offset calculation in Calendar/Date.
+                    // JDK calendar implementation calls getRawOffset() and
+                    // getDSTSavings() when the instance of JDK TimeZone
+                    // is not an instance of JDK internal TimeZone subclass
+                    // (sun.util.calendar.ZoneInfo).  Ticket#6459
+                    String icuID = tz.getID();
+                    jdkZone = java.util.TimeZone.getTimeZone(icuID);
+                    if (!icuID.equals(jdkZone.getID())) {
+                        // JDK does not know the ID..
+                        jdkZone = null;
+                    }
+                }
+                if (jdkZone == null) {
+                    jdkZone = TimeZoneAdapter.wrap(tz);
+                }
+            }
+        }
+        java.util.TimeZone.setDefault(jdkZone);
+    }
+
+    /**
+     * Returns true if this zone has the same rule and offset as another zone.
+     * That is, if this zone differs only in ID, if at all.  Returns false
+     * if the other zone is null.
+     * @param other the <code>TimeZone</code> object to be compared with
+     * @return true if the other zone is not null and is the same as this one,
+     * with the possible exception of the ID
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return other != null &&
+            getRawOffset() == other.getRawOffset() &&
+            useDaylightTime() == other.useDaylightTime();
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            TimeZone other = (TimeZone) super.clone();
+            other.ID = ID;
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Return true if obj is a TimeZone with the same class and ID as this.
+     * @return true if obj is a TimeZone with the same class and ID as this
+     * @param obj the object to compare against
+     * @stable ICU 3.6
+     */
+    public boolean equals(Object obj){
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        return (ID.equals(((TimeZone)obj).ID));
+    }
+
+    /**
+     * Return the hash code.
+     * @return the hash code
+     * @stable ICU 3.6
+     */
+    public int hashCode(){
+        return ID.hashCode();
+    }
+
+    /**
+     * Returns the timezone data version currently used by ICU.
+     * 
+     * @return the version string, such as "2007f"
+     * @throws MissingResourceException if ICU timezone resource bundle
+     * is missing or the version information is not available.
+     * 
+     * @stable ICU 3.8
+     */
+    public static synchronized String getTZDataVersion() {
+        if (TZDATA_VERSION == null) {
+            UResourceBundle tzbundle = UResourceBundle.getBundleInstance(
+                    "com/ibm/icu/impl/data/icudt" + VersionInfo.ICU_DATA_VERSION, "zoneinfo");
+            TZDATA_VERSION = tzbundle.getString("TZVersion");
+        }
+        return TZDATA_VERSION;
+    }
+
+    /**
+     * Returns the canonical system timezone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input timezone ID to be canonicalized.
+     * @return The canonical system timezone ID or the custom timezone ID
+     * in normalized format for the given timezone ID.  When the given timezone ID
+     * is neither a known system time zone ID nor a valid custom timezone ID,
+     * null is returned.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getCanonicalID(String id) {
+        return getCanonicalID(id, null);
+    }
+
+    /**
+     * Returns the canonical system timezone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input timezone ID to be canonicalized.
+     * @param isSystemID When non-null boolean array is specified and
+     * the given ID is a known system timezone ID, true is set to <code>isSystemID[0]</code>
+     * @return The canonical system timezone ID or the custom timezone ID
+     * in normalized format for the given timezone ID.  When the given timezone ID
+     * is neither a known system time zone ID nor a valid custom timezone ID,
+     * null is returned.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getCanonicalID(String id, boolean[] isSystemID) {
+        String canonicalID = null;
+        boolean systemTzid = false;
+        if (id != null && id.length() != 0) {
+            canonicalID = ZoneMeta.getCanonicalSystemID(id);
+            if (canonicalID != null) {
+                systemTzid = true;
+            } else {
+                canonicalID = ZoneMeta.getCustomID(id);
+            }
+        }
+        if (isSystemID != null) {
+            isSystemID[0] = systemTzid;
+        }
+        return canonicalID;
+    }
+
+    // =======================privates===============================
+
+    /**
+     * The string identifier of this <code>TimeZone</code>.  This is a
+     * programmatic identifier used internally to look up <code>TimeZone</code>
+     * objects from the system table and also to map them to their localized
+     * display names.  <code>ID</code> values are unique in the system
+     * table but may not be for dynamically created zones.
+     * @serial
+     */
+    private String           ID;
+
+    /**
+     * The default time zone, or null if not set.
+     */
+    private static TimeZone  defaultZone = null;
+
+    /**
+     * The tzdata version
+     */
+    private static String TZDATA_VERSION = null;
+
+    /**
+     * TimeZone implementation type
+     */
+    private static int TZ_IMPL = TIMEZONE_ICU;
+
+    /**
+     * TimeZone implementation type initialization
+     */
+    private static final String TZIMPL_CONFIG_KEY = "com.ibm.icu.util.TimeZone.DefaultTimeZoneType";
+    private static final String TZIMPL_CONFIG_ICU = "ICU";
+    private static final String TZIMPL_CONFIG_JDK = "JDK";
+
+    static {
+        String type = ICUConfig.get(TZIMPL_CONFIG_KEY, TZIMPL_CONFIG_ICU);
+        if (type.equalsIgnoreCase(TZIMPL_CONFIG_JDK)) {
+            TZ_IMPL = TIMEZONE_JDK;
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/TimeZoneRule.java b/src/com/ibm/icu/util/TimeZoneRule.java
new file mode 100644
index 0000000..8688a95
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZoneRule.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <code>TimeZoneRule</code> is an abstract class representing a rule for time zone.
+ * <code>TimeZoneRule</code> has a set of time zone attributes, such as zone name,
+ * raw offset (UTC offset for standard time) and daylight saving time offset.
+ * 
+ * @see com.ibm.icu.util.TimeZoneTransition
+ * @see com.ibm.icu.util.RuleBasedTimeZone
+ * 
+ * @stable ICU 3.8
+ */
+public abstract class TimeZoneRule implements Serializable {
+
+    private static final long serialVersionUID = 6374143828553768100L;
+
+    private final String name;
+    private final int rawOffset;
+    private final int dstSavings;
+
+    /**
+     * Constructs a <code>TimeZoneRule</code> with the name, the GMT offset of its
+     * standard time and the amount of daylight saving offset adjustment.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in milliseconds.
+     *                      If this is a rule for standard time, the value of this argument is 0.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule(String name, int rawOffset, int dstSavings) {
+        this.name = name;
+        this.rawOffset = rawOffset;
+        this.dstSavings = dstSavings;
+    }
+
+    /**
+     * Gets the name of this time zone.
+     * 
+     * @return The name of this time zone.
+     * 
+     * @stable ICU 3.8
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Gets the standard time offset.
+     * 
+     * @return The standard time offset from UTC in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        return rawOffset;
+    }
+
+    /**
+     * Gets the amount of daylight saving delta time from the standard time.
+     * 
+     * @return  The amount of daylight saving offset used by this rule
+     *          in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getDSTSavings() {
+        return dstSavings;
+    }
+
+    /**
+     * Returns if this rule represents the same rule and offsets as another.
+     * When two <code>TimeZoneRule</code> objects differ only its names, this method returns
+     * true.
+     *
+     * @param other The <code>TimeZoneRule</code> object to be compared with.
+     * @return true if the other <code>TimeZoneRule</code> is the same as this one.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (rawOffset == other.rawOffset && dstSavings == other.dstSavings) {
+            return true;
+        }
+        return false;
+    }
+ 
+    /**
+     * Gets the very first time when this rule takes effect.
+     * 
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * 
+     * @return  The very first time when this rule takes effect.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getFirstStart(int prevRawOffset, int prevDSTSavings);
+
+    /**
+     * Gets the final time when this rule takes effect.
+     * 
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * 
+     * @return  The very last time when this rule takes effect,
+     *          or null if this rule is applied for future dates infinitely.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getFinalStart(int prevRawOffset, int prevDSTSavings);
+
+    /**
+     * Gets the first time when this rule takes effect after the specified time.
+     * 
+     * @param base              The first time after this time is returned.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * @param inclusive         Whether the base time is inclusive or not.
+     * 
+     * @return  The first time when this rule takes effect after the specified time,
+     *          or null when this rule never takes effect after the specified time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getNextStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive);
+
+    /**
+     * Gets the most recent time when this rule takes effect before the specified time.
+     * 
+     * @param base              The most recent time when this rule takes effect before
+     *                          this time is returned.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * @param inclusive         Whether the base time is inclusive or not.
+     * 
+     * @return  The most recent time when this rule takes effect before the specified time,
+     *          or null when this rule never takes effect before the specified time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getPreviousStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive);
+
+    /**
+     * Returns if this <code>TimeZoneRule</code> has one or more start times.
+     * 
+     * @return true if this <TimeZoneRule</code> has one or more start times.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract boolean isTransitionRule();
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("name=" + name);
+        buf.append(", stdOffset=" + rawOffset);
+        buf.append(", dstSaving=" + dstSavings);
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeZoneTransition.java b/src/com/ibm/icu/util/TimeZoneTransition.java
new file mode 100644
index 0000000..1a7f304
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZoneTransition.java
@@ -0,0 +1,83 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+/**
+ * <code>TimeZoneTransition</code> is a class representing a time zone transition.
+ * An instance has a time of transition and rules for both before and
+ * after the transition.
+ * 
+ * @stable ICU 3.8
+ */
+public class TimeZoneTransition {
+    private final TimeZoneRule from;
+    private final TimeZoneRule to;
+    private final long time;
+
+    /**
+     * Constructs a <code>TimeZoneTransition</code> with the time and the rules before/after
+     * the transition.
+     * 
+     * @param time  The time of transition in milliseconds since the base time.
+     * @param from  The time zone rule used before the transition.
+     * @param to    The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition(long time, TimeZoneRule from, TimeZoneRule to) {
+        this.time = time;
+        this.from = from;
+        this.to = to;
+    }
+
+    /**
+     * Returns the time of transition in milliseconds since the base time.
+     * 
+     * @return The time of the transition in milliseconds since the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public long getTime() {
+        return time;
+    }
+
+    /**
+     * Returns the rule used after the transition.
+     * 
+     * @return The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule getTo() {
+        return to;
+    }
+
+    /**
+     * Returns the rule used before the transition.
+     * 
+     * @return The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule getFrom() {
+        return from;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeZoneTransition</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("time=" + time);
+        buf.append(", from={" + from + "}");
+        buf.append(", to={" + to + "}");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/ULocale.java b/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..dd7becf
--- /dev/null
+++ b/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,3742 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.SimpleCache;
+
+/**
+ * A class analogous to {@link java.util.Locale} that provides additional
+ * support for ICU protocol.  In ICU 3.0 this class is enhanced to support
+ * RFC 3066 language identifiers.
+ *
+ * <p>Many classes and services in ICU follow a factory idiom, in
+ * which a factory method or object responds to a client request with
+ * an object.  The request includes a locale (the <i>requested</i>
+ * locale), and the returned object is constructed using data for that
+ * locale.  The system may lack data for the requested locale, in
+ * which case the locale fallback mechanism will be invoked until a
+ * populated locale is found (the <i>valid</i> locale).  Furthermore,
+ * even when a populated locale is found (the <i>valid</i> locale),
+ * further fallback may be required to reach a locale containing the
+ * specific data required by the service (the <i>actual</i> locale).
+ *
+ * <p>ULocale performs <b>'normalization'</b> and <b>'canonicalization'</b> of locale ids.
+ * Normalization 'cleans up' ICU locale ids as follows:
+ * <ul>
+ * <li>language, script, country, variant, and keywords are properly cased<br>
+ * (lower, title, upper, upper, and lower case respectively)</li>
+ * <li>hyphens used as separators are converted to underscores</li>
+ * <li>three-letter language and country ids are converted to two-letter
+ * equivalents where available</li>
+ * <li>surrounding spaces are removed from keywords and values</li>
+ * <li>if there are multiple keywords, they are put in sorted order</li>
+ * </ul>
+ * Canonicalization additionally performs the following:
+ * <ul>
+ * <li>POSIX ids are converted to ICU format IDs</li>
+ * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>'PREEURO' and 'EURO' variants are converted to currency keyword form, with the currency
+ * id appropriate to the country of the locale (for PREEURO) or EUR (for EURO).
+ * </ul>
+ * All ULocale constructors automatically normalize the locale id.  To handle
+ * POSIX ids, <code>canonicalize</code> can be called to convert the id
+ * to canonical form, or the <code>canonicalInstance</code> factory method
+ * can be called.</p>
+ *
+ * <p>This class provides selectors {@link #VALID_LOCALE} and {@link
+ * #ACTUAL_LOCALE} intended for use in methods named
+ * <tt>getLocale()</tt>.  These methods exist in several ICU classes,
+ * including {@link com.ibm.icu.util.Calendar}, {@link
+ * com.ibm.icu.util.Currency}, {@link com.ibm.icu.text.UFormat},
+ * {@link com.ibm.icu.text.BreakIterator}, {@link
+ * com.ibm.icu.text.Collator}, {@link
+ * com.ibm.icu.text.DateFormatSymbols}, and {@link
+ * com.ibm.icu.text.DecimalFormatSymbols} and their subclasses, if
+ * any.  Once an object of one of these classes has been created,
+ * <tt>getLocale()</tt> may be called on it to determine the valid and
+ * actual locale arrived at during the object's construction.
+ *
+ * <p>Note: The <tt>getLocale()</tt> method will be implemented in ICU
+ * 3.0; ICU 2.8 contains a partial preview implementation.  The
+ * <i>actual</i> locale is returned correctly, but the <i>valid</i>
+ * locale is not, in most cases.
+ *
+ * @see java.util.Locale
+ * @author weiv
+ * @author Alan Liu
+ * @author Ram Viswanadha
+ * @stable ICU 2.8 
+ */
+public final class ULocale implements Serializable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = 3715177670352309217L;
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ENGLISH = new ULocale("en", Locale.ENGLISH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRENCH = new ULocale("fr", Locale.FRENCH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMAN = new ULocale("de", Locale.GERMAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALIAN = new ULocale("it", Locale.ITALIAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPANESE = new ULocale("ja", Locale.JAPANESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREAN = new ULocale("ko", Locale.KOREAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINESE = new ULocale("zh", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale SIMPLIFIED_CHINESE = new ULocale("zh_Hans", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TRADITIONAL_CHINESE = new ULocale("zh_Hant", Locale.CHINESE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRANCE = new ULocale("fr_FR", Locale.FRANCE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMANY = new ULocale("de_DE", Locale.GERMANY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALY = new ULocale("it_IT", Locale.ITALY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPAN = new ULocale("ja_JP", Locale.JAPAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREA = new ULocale("ko_KR", Locale.KOREA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINA = new ULocale("zh_Hans_CN", Locale.CHINA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale PRC = CHINA;
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TAIWAN = new ULocale("zh_Hant_TW", Locale.TAIWAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale UK = new ULocale("en_GB", Locale.UK);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale US = new ULocale("en_US", Locale.US);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA = new ULocale("en_CA", Locale.CANADA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA_FRENCH = new ULocale("fr_CA", Locale.CANADA_FRENCH);
+
+    /**
+     * Handy constant.
+     */
+    private static final String EMPTY_STRING = "";
+
+    // Used in both ULocale and IDParser, so moved up here.
+    private static final char UNDERSCORE            = '_';
+
+    // default empty locale
+    private static final Locale EMPTY_LOCALE = new Locale("", "");
+
+    /**
+     * The root ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static final ULocale ROOT = new ULocale("root", EMPTY_LOCALE);
+    
+    private static final SimpleCache CACHE = new SimpleCache();
+
+    /**
+     * Cache the locale.
+     */
+    private transient Locale locale;
+
+    /**
+     * The raw localeID that we were passed in.
+     */
+    private String localeID;
+
+    /**
+     * Tables used in normalizing portions of the id.
+     */
+    /* tables updated per http://lcweb.loc.gov/standards/iso639-2/ 
+       to include the revisions up to 2001/7/27 *CWB*/
+    /* The 3 character codes are the terminology codes like RFC 3066.  
+       This is compatible with prior ICU codes */
+    /* "in" "iw" "ji" "jw" & "sh" have been withdrawn but are still in 
+       the table but now at the end of the table because 
+       3 character codes are duplicates.  This avoids bad searches
+       going from 3 to 2 character codes.*/
+    /* The range qaa-qtz is reserved for local use. */
+
+    private static String[] _languages;
+    private static String[] _replacementLanguages;
+    private static String[] _obsoleteLanguages;
+    private static String[] _languages3;
+    private static String[] _obsoleteLanguages3;
+
+    // Avoid initializing languages tables unless we have to.
+    private static void initLanguageTables() {
+        if (_languages == null) {
+
+            /* This list MUST be in sorted order, and MUST contain the two-letter codes
+               if one exists otherwise use the three letter code */
+            String[] tempLanguages = {
+                "aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",
+                "afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",
+                "ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",
+                "ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",
+                "bai", "bal", "ban", "bas", "bat", "be",  "bej",
+                "bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",
+                "bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",
+                "btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",
+                "ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",
+                "chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",
+                "cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",
+                "cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",
+                "dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",
+                "enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",
+                "fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",
+                "fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",
+                "gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",
+                "goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",
+                "gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",
+                "hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",
+                "ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",
+                "ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",
+                "iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",
+                "kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",
+                "kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",
+                "ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",
+                "ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",
+                "lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",
+                "loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",
+                "lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",
+                "mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",
+                "mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",
+                "mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",
+                "mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",
+                "nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",
+                "niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",
+                "nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",
+                "om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                "pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",
+                "raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",
+                "ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",
+                "sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",
+                "sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",
+                "sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",
+                "sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",
+                "srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",
+                "sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",
+                "tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",
+                "tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",
+                "ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",
+                "ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",
+                "uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",
+                "wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",
+                "yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",
+                "zu",  "zun", 
+            };
+
+            String[] tempReplacementLanguages = {
+                "id", "he", "yi", "jv", "sr", "nb",/* replacement language codes */
+            };
+
+            String[] tempObsoleteLanguages = {
+                "in", "iw", "ji", "jw", "sh", "no",    /* obsolete language codes */         
+            };
+
+            /* This list MUST contain a three-letter code for every two-letter code in the
+               list above, and they MUST ne in the same order (i.e., the same language must
+               be in the same place in both lists)! */
+            String[] tempLanguages3 = {
+                /*"aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",    */
+                "aar", "abk", "ace", "ach", "ada", "ady", "ave", "afr", "afa",
+                /*"afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",    */
+                "afh", "aka", "akk", "ale", "alg", "amh", "arg", "ang", "apa",
+                /*"ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",    */
+                "ara", "arc", "arn", "arp", "art", "arw", "asm", "ast",
+                /*"ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",    */
+                "ath", "aus", "ava", "awa", "aym", "aze", "bak", "bad",
+                /*"bai", "bal", "ban", "bas", "bat", "be",  "bej",    */
+                "bai", "bal", "ban", "bas", "bat", "bel", "bej",
+                /*"bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",    */
+                "bem", "ber", "bul", "bih", "bho", "bis", "bik", "bin",
+                /*"bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",     */
+                "bla", "bam",  "ben", "bnt", "bod", "bre", "bra", "bos",
+                /*"btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",    */
+                "btk", "bua", "bug", "byn", "cat", "cad", "cai", "car", "cau",
+                /*"ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",    */
+                "che", "ceb", "cel", "cha", "chb", "chg", "chk", "chm",
+                /*"chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",    */
+                "chn", "cho", "chp", "chr", "chy", "cmc", "cos", "cop",
+                /*"cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",    */
+                "cpe", "cpf", "cpp", "cre", "crh", "crp", "ces", "csb", "chu", "cus",
+                /*"cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",    */
+                "chv", "cym", "dan", "dak", "dar", "day", "deu", "del", "den",
+                /*"dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",    */
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "div", "dyu",
+                /*"dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",     */
+                "dzo", "ewe", "efi", "egy", "eka", "ell", "elx", "eng",
+                /*"enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",     */
+                "enm", "epo", "spa", "est", "eus", "ewo", "fas",
+                /*"fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",    */
+                "fan", "fat", "ful", "fin", "fiu", "fij", "fao", "fon",
+                /*"fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",    */
+                "fra", "frm", "fro", "fur", "fry", "gle", "gaa", "gay",
+                /*"gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",     */
+                "gba", "gla", "gem", "gez", "gil", "glg", "gmh", "grn",
+                /*"goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",     */
+                "goh", "gon", "gor", "got", "grb", "grc", "guj", "glv",
+                /*"gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",    */
+                "gwi", "hau", "hai", "haw", "heb", "hin", "hil", "him",
+                /*"hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",     */
+                "hit", "hmn", "hmo", "hrv", "hsb", "hat", "hun", "hup", "hye", "her",
+                /*"ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",     */
+                "ina", "iba", "ind", "ile", "ibo", "iii", "ijo", "ipk",
+                /*"ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",      */
+                "ilo", "inc", "ine", "inh", "ido", "ira", "iro", "isl", "ita",
+                /*"iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",   */
+                "iku", "jpn", "jbo", "jpr", "jrb", "jaw", "kat", "kaa", "kab",
+                /*"kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",    */
+                "kac", "kam", "kar", "kaw", "kbd", "kon", "kha", "khi",
+                /*"kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",     */
+                "kho", "kik", "kua", "kaz", "kal", "khm", "kmb", "kan",
+                /*"ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",     */
+                "kor", "kok", "kos", "kpe", "kau", "krc", "kro", "kru", "kas",
+                /*"ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",    */
+                "kur", "kum", "kut", "kom", "cor", "kir", "lat", "lad",
+                /*"lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",    */
+                "lah", "lam", "ltz", "lez", "lug", "lim", "lin", "lao", "lol",
+                /*"loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",    */
+                "loz", "lit", "lub", "lua", "lui", "lun", "luo", "lus",
+                /*"lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",    */
+                "lav", "mad", "mag", "mai", "mak", "man", "map", "mas",
+                /*"mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",    */
+                "mdf", "mdr", "men", "mlg", "mga", "mah", "mri", "mic", "min",
+                /*"mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",    */
+                "mis", "mkd", "mkh", "mal", "mon", "mnc", "mni", "mno",
+                /*"mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",    */
+                "mol", "moh", "mos", "mar", "msa", "mlt", "mul", "mun",
+                /*"mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",    */
+                "mus", "mwr", "mya", "myn", "myv", "nau", "nah", "nai", "nap",
+                /*"nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",    */
+                "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic",
+                /*"niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",    */
+                "niu", "nld", "nno", "nor", "nog", "non", "nbl", "nso", "nub",
+                /*"nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",     */
+                "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji",
+                /*"om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",    */
+                "orm", "ori", "oss", "osa", "ota", "oto", "pan", "paa",
+                /*"pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",    */
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                /*"pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",     */
+                "pli", "pol", "pon", "pra", "pro", "pus", "por", "que",
+                /*"raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",    */
+                "raj", "rap", "rar", "roh", "run", "ron", "roa", "rom",
+                /*"ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",    */
+                "rus", "rup", "kin", "san", "sad", "sah", "sai", "sal", "sam",
+                /*"sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",    */
+                "sas", "sat", "srd", "sco", "snd", "sme", "sel", "sem",
+                /*"sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",    */
+                "sag", "sga", "sgn", "shn", "sin", "sid", "sio", "sit",
+                /*"sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",    */
+                "slk", "slv", "sla", "smo", "sma", "smi", "smj", "smn",
+                /*"sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",     */
+                "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp",
+                /*"srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",    */
+                "srr", "ssw", "ssa", "sot", "sun", "suk", "sus", "sux",
+                /*"sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",    */
+                "swe", "swa", "syr", "tam", "tai", "tel", "tem", "ter",
+                /*"tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",    */
+                "tet", "tgk", "tha", "tir", "tig", "tiv", "tuk", "tkl",
+                /*"tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",     */
+                "tgl", "tlh", "tli", "tmh", "tsn", "ton", "tog", "tpi", "tur",
+                /*"ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",     */
+                "tso", "tsi", "tat", "tum", "tup", "tut", "tvl", "twi",
+                /*"ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",     */
+                "tah", "tyv", "udm", "uig", "uga", "ukr", "umb", "und", "urd",
+                /*"uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",    */
+                "uzb", "vai", "ven", "vie", "vol", "vot", "wln", "wak",
+                /*"wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",    */
+                "wal", "war", "was", "wen", "wol", "xal", "xho", "yao", "yap",
+                /*"yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",    */
+                "yid", "yor", "ypk", "zha", "zap", "zen", "zho", "znd",
+                /*"zu",  "zun",                                              */
+                "zul", "zun",  
+            };
+    
+            String[] tempObsoleteLanguages3 = {
+                /* "in",  "iw",  "ji",  "jw",  "sh", */
+                "ind", "heb", "yid", "jaw", "srp", 
+            };
+
+            synchronized (ULocale.class) {
+                if (_languages == null) {
+                    _languages = tempLanguages;
+                    _replacementLanguages = tempReplacementLanguages;
+                    _obsoleteLanguages = tempObsoleteLanguages;
+                    _languages3 = tempLanguages3;
+                    _obsoleteLanguages3 = tempObsoleteLanguages3;
+                }
+            }
+        }
+    }
+
+    private static String[] _countries;
+    private static String[] _deprecatedCountries;
+    private static String[] _replacementCountries;
+    private static String[] _obsoleteCountries;
+    private static String[] _countries3;
+    private static String[] _obsoleteCountries3;  
+
+    // Avoid initializing country tables unless we have to.
+    private static void initCountryTables() {    
+        if (_countries == null) {
+            /* ZR(ZAR) is now CD(COD) and FX(FXX) is PS(PSE) as per
+               http://www.evertype.com/standards/iso3166/iso3166-1-en.html 
+               added new codes keeping the old ones for compatibility
+               updated to include 1999/12/03 revisions *CWB*/
+    
+            /* RO(ROM) is now RO(ROU) according to 
+               http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html
+            */
+    
+            /* This list MUST be in sorted order, and MUST contain only two-letter codes! */
+            String[] tempCountries = {
+                "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",
+                "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",
+                "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",
+                "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",
+                "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",
+                "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",
+                "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",
+                "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",
+                "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",
+                "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",
+                "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",
+                "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",
+                "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS",
+                "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",
+                "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",
+                "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",
+                "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",
+                "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",
+                "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",
+                "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",
+                "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",
+                "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",
+                "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",
+                "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",
+                "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",
+                "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",
+                "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",
+                "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",
+                "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",
+                "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW",
+            };
+
+            /* this table is used for 3 letter codes */
+            String[] tempObsoleteCountries = {
+                "FX",  "CS",  "RO",  "TP",  "YU",  "ZR",  /* obsolete country codes */      
+            };
+            
+            String[] tempDeprecatedCountries = {
+               "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" /* deprecated country list */
+            };
+            String[] tempReplacementCountries = {
+           /*  "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" */
+               "MM", "RS", "BJ", "FR", "BF", "VU", "ZW", "TL", "RS", "CD",   /* replacement country codes */      
+            };
+    
+            /* This list MUST contain a three-letter code for every two-letter code in
+               the above list, and they MUST be listed in the same order! */
+            String[] tempCountries3 = {
+                /*  "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",     */
+                    "AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM", "ANT",
+                /*  "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",     */
+                    "AGO", "ATA", "ARG", "ASM", "AUT", "AUS", "ABW", "ALA", "AZE",
+                /*  "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",     */
+                    "BIH", "BRB", "BGD", "BEL", "BFA", "BGR", "BHR", "BDI",
+                /*  "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",     */
+                    "BEN", "BLM", "BMU", "BRN", "BOL", "BRA", "BHS", "BTN", "BVT",
+                /*  "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",     */
+                    "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG",
+                /*  "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",     */
+                    "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI",
+                /*  "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",     */
+                    "CUB", "CPV", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK",
+                /*  "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",     */
+                    "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI",
+                /*  "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",     */
+                    "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA",
+                /*  "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",     */
+                    "GAB", "GBR", "GRD", "GEO", "GUF", "GGY", "GHA", "GIB", "GRL",
+                /*  "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",     */
+                    "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM",
+                /*  "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",     */
+                    "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN",
+                /*  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS" */
+                    "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL",
+                /*  "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",     */
+                    "ITA", "JEY", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR",
+                /*  "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",     */
+                    "COM", "KNA", "PRK", "KOR", "KWT", "CYM", "KAZ", "LAO",
+                /*  "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",     */
+                    "LBN", "LCA", "LIE", "LKA", "LBR", "LSO", "LTU", "LUX",
+                /*  "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",     */
+                    "LVA", "LBY", "MAR", "MCO", "MDA", "MNE", "MAF", "MDG", "MHL", "MKD",
+                /*  "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",     */
+                    "MLI", "MMR", "MNG", "MAC", "MNP", "MTQ", "MRT", "MSR",
+                /*  "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",     */
+                    "MLT", "MUS", "MDV", "MWI", "MEX", "MYS", "MOZ", "NAM",
+                /*  "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",     */
+                    "NCL", "NER", "NFK", "NGA", "NIC", "NLD", "NOR", "NPL",
+                /*  "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",     */
+                    "NRU", "NIU", "NZL", "OMN", "PAN", "PER", "PYF", "PNG",
+                /*  "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",     */
+                    "PHL", "PAK", "POL", "SPM", "PCN", "PRI", "PSE", "PRT",
+                /*  "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",     */
+                    "PLW", "PRY", "QAT", "REU", "ROU", "SRB", "RUS", "RWA", "SAU",
+                /*  "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",     */
+                    "SLB", "SYC", "SDN", "SWE", "SGP", "SHN", "SVN", "SJM",
+                /*  "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",     */
+                    "SVK", "SLE", "SMR", "SEN", "SOM", "SUR", "STP", "SLV",
+                /*  "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",     */
+                    "SYR", "SWZ", "TCA", "TCD", "ATF", "TGO", "THA", "TJK",
+                /*  "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",     */
+                    "TKL", "TLS", "TKM", "TUN", "TON", "TUR", "TTO", "TUV",
+                /*  "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",     */
+                    "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB",
+                /*  "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",     */
+                    "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",
+                /*  "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW"          */
+                    "WSM", "YEM", "MYT", "ZAF", "ZMB", "ZWE",
+            };
+    
+            String[] tempObsoleteCountries3 = {
+                /*"FX",  "CS",  "RO",  "TP",  "YU",  "ZR",   */
+                "FXX", "SCG", "ROM", "TMP", "YUG", "ZAR",    
+            };
+
+            synchronized (ULocale.class) {
+                if (_countries == null) {
+                    _countries = tempCountries;
+                    _deprecatedCountries = tempDeprecatedCountries;
+                    _replacementCountries = tempReplacementCountries;
+                    _obsoleteCountries = tempObsoleteCountries;
+                    _countries3 = tempCountries3;
+                    _obsoleteCountries3 = tempObsoleteCountries3;
+                }
+            }
+        }
+    }
+
+    private static String[][] CANONICALIZE_MAP;
+    private static String[][] variantsToKeywords;
+
+    private static void initCANONICALIZE_MAP() {
+        if (CANONICALIZE_MAP == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The 1st item is the normalized id. The 2nd item is the
+             * canonicalized id. The 3rd is the keyword. The 4th is the keyword value.
+             */
+            String[][] tempCANONICALIZE_MAP = {
+//              { EMPTY_STRING,     "en_US_POSIX", null, null }, /* .NET name */
+                { "C",              "en_US_POSIX", null, null }, /* POSIX name */
+                { "art_LOJBAN",     "jbo", null, null }, /* registered name */
+                { "az_AZ_CYRL",     "az_Cyrl_AZ", null, null }, /* .NET name */
+                { "az_AZ_LATN",     "az_Latn_AZ", null, null }, /* .NET name */
+                { "ca_ES_PREEURO",  "ca_ES", "currency", "ESP" },
+                { "cel_GAULISH",    "cel__GAULISH", null, null }, /* registered name */
+                { "de_1901",        "de__1901", null, null }, /* registered name */
+                { "de_1906",        "de__1906", null, null }, /* registered name */
+                { "de__PHONEBOOK",  "de", "collation", "phonebook" }, /* Old ICU name */
+                { "de_AT_PREEURO",  "de_AT", "currency", "ATS" },
+                { "de_DE_PREEURO",  "de_DE", "currency", "DEM" },
+                { "de_LU_PREEURO",  "de_LU", "currency", "EUR" },
+                { "el_GR_PREEURO",  "el_GR", "currency", "GRD" },
+                { "en_BOONT",       "en__BOONT", null, null }, /* registered name */
+                { "en_SCOUSE",      "en__SCOUSE", null, null }, /* registered name */
+                { "en_BE_PREEURO",  "en_BE", "currency", "BEF" },
+                { "en_IE_PREEURO",  "en_IE", "currency", "IEP" },
+                { "es__TRADITIONAL", "es", "collation", "traditional" }, /* Old ICU name */
+                { "es_ES_PREEURO",  "es_ES", "currency", "ESP" },
+                { "eu_ES_PREEURO",  "eu_ES", "currency", "ESP" },
+                { "fi_FI_PREEURO",  "fi_FI", "currency", "FIM" },
+                { "fr_BE_PREEURO",  "fr_BE", "currency", "BEF" },
+                { "fr_FR_PREEURO",  "fr_FR", "currency", "FRF" },
+                { "fr_LU_PREEURO",  "fr_LU", "currency", "LUF" },
+                { "ga_IE_PREEURO",  "ga_IE", "currency", "IEP" },
+                { "gl_ES_PREEURO",  "gl_ES", "currency", "ESP" },
+                { "hi__DIRECT",     "hi", "collation", "direct" }, /* Old ICU name */
+                { "it_IT_PREEURO",  "it_IT", "currency", "ITL" },
+                { "ja_JP_TRADITIONAL", "ja_JP", "calendar", "japanese" },
+//              { "nb_NO_NY",       "nn_NO", null, null },
+                { "nl_BE_PREEURO",  "nl_BE", "currency", "BEF" },
+                { "nl_NL_PREEURO",  "nl_NL", "currency", "NLG" },
+                { "pt_PT_PREEURO",  "pt_PT", "currency", "PTE" },
+                { "sl_ROZAJ",       "sl__ROZAJ", null, null }, /* registered name */
+                { "sr_SP_CYRL",     "sr_Cyrl_RS", null, null }, /* .NET name */
+                { "sr_SP_LATN",     "sr_Latn_RS", null, null }, /* .NET name */
+                { "sr_YU_CYRILLIC", "sr_Cyrl_RS", null, null }, /* Linux name */
+                { "th_TH_TRADITIONAL", "th_TH", "calendar", "buddhist" }, /* Old ICU name */
+                { "uz_UZ_CYRILLIC", "uz_Cyrl_UZ", null, null }, /* Linux name */
+                { "uz_UZ_CYRL",     "uz_Cyrl_UZ", null, null }, /* .NET name */
+                { "uz_UZ_LATN",     "uz_Latn_UZ", null, null }, /* .NET name */
+                { "zh_CHS",         "zh_Hans", null, null }, /* .NET name */
+                { "zh_CHT",         "zh_Hant", null, null }, /* .NET name */
+                { "zh_GAN",         "zh__GAN", null, null }, /* registered name */
+                { "zh_GUOYU",       "zh", null, null }, /* registered name */
+                { "zh_HAKKA",       "zh__HAKKA", null, null }, /* registered name */
+                { "zh_MIN",         "zh__MIN", null, null }, /* registered name */
+                { "zh_MIN_NAN",     "zh__MINNAN", null, null }, /* registered name */
+                { "zh_WUU",         "zh__WUU", null, null }, /* registered name */
+                { "zh_XIANG",       "zh__XIANG", null, null }, /* registered name */
+                { "zh_YUE",         "zh__YUE", null, null } /* registered name */
+            };
+    
+            synchronized (ULocale.class) {
+                if (CANONICALIZE_MAP == null) {
+                    CANONICALIZE_MAP = tempCANONICALIZE_MAP;
+                }
+            }
+        }
+        if (variantsToKeywords == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The first item is the normalized variant id.
+             */
+            String[][] tempVariantsToKeywords = {
+                    { "EURO",   "currency", "EUR" },
+                    { "PINYIN", "collation", "pinyin" }, /* Solaris variant */
+                    { "STROKE", "collation", "stroke" }  /* Solaris variant */
+            };
+    
+            synchronized (ULocale.class) {
+                if (variantsToKeywords == null) {
+                    variantsToKeywords = tempVariantsToKeywords;
+                }
+            }
+        }
+    }
+
+    /*
+     * This table is used for mapping between ICU and special Java
+     * locales.  When an ICU locale matches <minumum base> with
+     * <keyword>/<value>, the ICU locale is mapped to <Java> locale.
+     * For example, both ja_JP@calendar=japanese and ja@calendar=japanese
+     * are mapped to Java locale "ja_JP_JP".  ICU locale "nn" is mapped
+     * to Java locale "no_NO_NY".
+     */
+    private static final String[][] _javaLocaleMap = {
+    //  { <Java>,       <ICU base>, <keyword>,  <value>,    <minimum base>
+        { "ja_JP_JP",   "ja_JP",    "calendar", "japanese", "ja"},
+        { "no_NO_NY",   "nn_NO",    null,       null,       "nn"},
+    //  { "th_TH_TH",   "th_TH",    ??,         ??,         "th"} //TODO
+    };
+
+    /**
+     * Private constructor used by static initializers.
+     */
+    private ULocale(String localeID, Locale locale) {
+        this.localeID = localeID;
+        this.locale = locale;
+    }
+
+    /**
+     * Construct a ULocale object from a {@link java.util.Locale}.
+     * @param loc a JDK locale
+     * @stable ICU 2.8
+     * @internal
+     */
+    private ULocale(Locale loc) {
+        this.localeID = getName(forLocale(loc).toString());
+        this.locale = loc;
+    }
+
+    /**
+     * Return a ULocale object for a {@link java.util.Locale}.
+     * The ULocale is canonicalized.
+     * @param loc a JDK locale
+     * @stable ICU 3.2
+     */
+    public static ULocale forLocale(Locale loc) {
+        if (loc == null) {
+            return null;
+        }
+        ULocale result = (ULocale)CACHE.get(loc);
+        if (result == null) {
+            if (defaultULocale != null && loc == defaultULocale.locale) {
+            result = defaultULocale;
+        } else {
+                String locStr = loc.toString();
+                if (locStr.length() == 0) {
+                    result = ROOT;
+                } else {
+                    for (int i = 0; i < _javaLocaleMap.length; i++) {
+                        if (_javaLocaleMap[i][0].equals(locStr)) {
+                            IDParser p = new IDParser(_javaLocaleMap[i][1]);
+                            p.setKeywordValue(_javaLocaleMap[i][2], _javaLocaleMap[i][3]);
+                            locStr = p.getName();
+                            break;
+                        }
+                    }
+                    result = new ULocale(locStr, loc);
+                }
+            }
+            CACHE.put(loc, result);
+        }
+        return result;
+    }
+
+    /**
+     * Construct a ULocale from a RFC 3066 locale ID. The locale ID consists
+     * of optional language, script, country, and variant fields in that order, 
+     * separated by underscores, followed by an optional keyword list.  The
+     * script, if present, is four characters long-- this distinguishes it
+     * from a country code, which is two characters long.  Other fields
+     * are distinguished by position as indicated by the underscores.  The
+     * start of the keyword list is indicated by '@', and consists of two
+     * or more keyword/value pairs separated by semicolons(';').
+     * <p>
+     * This constructor does not canonicalize the localeID.  So, for
+     * example, "zh__pinyin" remains unchanged instead of converting
+     * to "zh@collation=pinyin".  By default ICU only recognizes the
+     * latter as specifying pinyin collation.  Use {@link #createCanonical}
+     * or {@link #canonicalize} if you need to canonicalize the localeID.
+     * 
+     * @param localeID string representation of the locale, e.g:
+     * "en_US", "sy_Cyrl_YU", "zh__pinyin", "es_ES@currency=EUR;collation=traditional"
+     * @stable ICU 2.8
+     */ 
+    public ULocale(String localeID) {
+        this.localeID = getName(localeID);
+    }
+
+    /**
+     * Convenience overload of ULocale(String, String, String) for 
+     * compatibility with java.util.Locale.
+     * @see #ULocale(String, String, String)
+     * @stable ICU 3.4
+     */
+    public ULocale(String a, String b) {
+        this(a, b, null);
+    }
+
+    /**
+     * Construct a ULocale from a localeID constructed from the three 'fields' a, b, and c.  These
+     * fields are concatenated using underscores to form a localeID of
+     * the form a_b_c, which is then handled like the localeID passed
+     * to <code>ULocale(String localeID)</code>.  
+     *
+     * <p>Java locale strings consisting of language, country, and
+     * variant will be handled by this form, since the country code
+     * (being shorter than four letters long) will not be interpreted
+     * as a script code.  If a script code is present, the final
+     * argument ('c') will be interpreted as the country code.  It is
+     * recommended that this constructor only be used to ease porting,
+     * and that clients instead use the single-argument constructor
+     * when constructing a ULocale from a localeID.
+     * @param a first component of the locale id
+     * @param b second component of the locale id
+     * @param c third component of the locale id
+     * @see #ULocale(String)
+     * @stable ICU 3.0 
+     */
+    public ULocale(String a, String b, String c) {
+        localeID = getName(lscvToID(a, b, c, EMPTY_STRING));
+    }
+
+    /**
+     * Create a ULocale from the id by first canonicalizing the id.
+     * @param nonCanonicalID the locale id to canonicalize
+     * @return the locale created from the canonical version of the ID.
+     * @stable ICU 3.0
+     */
+    public static ULocale createCanonical(String nonCanonicalID) {
+        return new ULocale(canonicalize(nonCanonicalID), (Locale)null);
+    }
+
+    private static String lscvToID(String lang, String script, String country, String variant) {
+        StringBuffer buf = new StringBuffer();
+     
+        if (lang != null && lang.length() > 0) {
+            buf.append(lang);
+        }
+        if (script != null && script.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(script);
+        }
+        if (country != null && country.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(country);
+        }
+        if (variant != null && variant.length() > 0) {
+            if (country == null || country.length() == 0) {
+                buf.append(UNDERSCORE);
+            }
+            buf.append(UNDERSCORE);
+            buf.append(variant);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert this ULocale object to a {@link java.util.Locale}.
+     * @return a JDK locale that either exactly represents this object
+     * or is the closest approximation.
+     * @stable ICU 2.8
+     */
+    public Locale toLocale() {
+        if (locale == null) {
+            IDParser p = new IDParser(localeID);
+            String base = p.getBaseName();
+            for (int i = 0; i < _javaLocaleMap.length; i++) {
+                if (base.equals(_javaLocaleMap[i][1]) || base.equals(_javaLocaleMap[i][4])) {
+                    if (_javaLocaleMap[i][2] != null) {
+                        String val = p.getKeywordValue(_javaLocaleMap[i][2]);
+                        if (val != null && val.equals(_javaLocaleMap[i][3])) {
+                            p = new IDParser(_javaLocaleMap[i][0]);
+                            break;
+                        }
+                    } else {
+                        p = new IDParser(_javaLocaleMap[i][0]);
+                        break;
+                    }
+                }
+            }
+            String[] names = p.getLanguageScriptCountryVariant();
+            locale = new Locale(names[0], names[2], names[3]);
+        }
+        return locale;
+    }
+
+    private static ICUCache nameCache = new SimpleCache();
+    /**
+     * Keep our own default ULocale.
+     */
+    private static Locale defaultLocale = Locale.getDefault();
+    private static ULocale defaultULocale = new ULocale(defaultLocale);
+
+    /**
+     * Returns the current default ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static ULocale getDefault() {
+        synchronized (ULocale.class) {
+            Locale currentDefault = Locale.getDefault();
+            if (defaultLocale != currentDefault) {
+                defaultLocale = currentDefault;
+                defaultULocale = new ULocale(defaultLocale);
+            }
+            return defaultULocale;
+        }
+    }
+
+    /**
+     * Sets the default ULocale.  This also sets the default Locale.
+     * If the caller does not have write permission to the
+     * user.language property, a security exception will be thrown,
+     * and the default ULocale will remain unchanged.
+     * @param newLocale the new default locale
+     * @throws SecurityException
+     *        if a security manager exists and its
+     *        <code>checkPermission</code> method doesn't allow the operation.
+     * @throws NullPointerException if <code>newLocale</code> is null
+     * @see SecurityManager#checkPermission(java.security.Permission)
+     * @see java.util.PropertyPermission
+     * @stable ICU 3.0 
+     */
+    public static synchronized void setDefault(ULocale newLocale){
+        Locale.setDefault(newLocale.toLocale());
+        defaultULocale = newLocale;
+    }
+    
+    /**
+     * This is for compatibility with Locale-- in actuality, since ULocale is
+     * immutable, there is no reason to clone it, so this API returns 'this'.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        return this;
+    }
+
+    /**
+     * Returns the hashCode.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return localeID.hashCode();
+    }
+    
+    /**
+     * Returns true if the other object is another ULocale with the
+     * same full name, or is a String localeID that matches the full name.
+     * Note that since names are not canonicalized, two ULocales that
+     * function identically might not compare equal.
+     *
+     * @return true if this Locale is equal to the specified object.
+     * @stable ICU 3.0 
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof String) {
+            return localeID.equals((String)obj);   
+        }
+        if (obj instanceof ULocale) {
+            return localeID.equals(((ULocale)obj).localeID);
+        }
+        return false;
+    }
+    
+    /**
+     * Returns a list of all installed locales.
+     * @stable ICU 3.0
+     */
+    public static ULocale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableULocales();
+    }
+
+    /**
+     * Returns a list of all 2-letter country codes defined in ISO 3166.
+     * Can be used to create Locales.
+     * @stable ICU 3.0
+     */
+    public static String[] getISOCountries() {
+        initCountryTables();
+        return (String[])_countries.clone();
+    }
+
+    /**
+     * Returns a list of all 2-letter language codes defined in ISO 639.
+     * Can be used to create Locales.
+     * [NOTE:  ISO 639 is not a stable standard-- some languages' codes have changed.
+     * The list this function returns includes both the new and the old codes for the
+     * languages whose codes have changed.]
+     * @stable ICU 3.0
+     */
+    public static String[] getISOLanguages() {
+        initLanguageTables();
+        return (String[])_languages.clone();
+    }
+
+    /**
+     * Returns the language code for this locale, which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getLanguage() {
+        return getLanguage(localeID);
+    }
+    
+    /**
+     * Returns the language code for the locale ID,
+     * which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getLanguage(String localeID) {
+        return new IDParser(localeID).getLanguage();
+    }
+     
+    /**
+     * Returns the script code for this locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getScript() {
+        return getScript(localeID);
+    }
+
+    /**
+     * Returns the script code for the specified locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getScript(String localeID) {
+        return new IDParser(localeID).getScript();
+    }
+    
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getCountry() {
+        return getCountry(localeID);
+    }
+
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @param localeID
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getCountry(String localeID) {
+        return new IDParser(localeID).getCountry();
+    }
+    
+    /**
+     * Returns the variant code for this locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getVariant() {
+        return getVariant(localeID);
+    }
+
+    /**
+     * Returns the variant code for the specified locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getVariant(String localeID) {
+        return new IDParser(localeID).getVariant();
+    }
+
+    /**
+     * Returns the fallback locale for the specified locale, which might be the empty string.
+     * @stable ICU 3.2
+     */
+    public static String getFallback(String localeID) {
+        return getFallbackString(getName(localeID));
+    }
+
+    /**
+     * Returns the fallback locale for this locale.  If this locale is root, returns null.
+     * @stable ICU 3.2
+     */
+    public ULocale getFallback() {
+        if (localeID.length() == 0 || localeID.charAt(0) == '@') {
+            return null;
+        }
+        return new ULocale(getFallbackString(localeID), (Locale)null);
+    }
+
+    /**
+     * Return the given (canonical) locale id minus the last part before the tags.
+     */
+    private static String getFallbackString(String fallback) {
+        int limit = fallback.indexOf('@');
+        if (limit == -1) {
+            limit = fallback.length();
+        }
+        int start = fallback.lastIndexOf('_', limit);
+        if (start == -1) {
+            start = 0;
+        }
+        return fallback.substring(0, start) + fallback.substring(limit);
+    }
+
+    /**
+     * Returns the (normalized) base name for this locale.
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public String getBaseName() {
+        return getBaseName(localeID);
+    }
+    
+    /**
+     * Returns the (normalized) base name for the specified locale.
+     * @param localeID the locale ID as a string
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public static String getBaseName(String localeID){
+        if (localeID.indexOf('@') == -1) {
+            return localeID;
+        }
+        return new IDParser(localeID).getBaseName();
+    }
+
+    /**
+     * Returns the (normalized) full name for this locale.
+     *
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */ 
+    public String getName() {
+        return localeID; // always normalized
+    }
+
+    /**
+     * Returns the (normalized) full name for the specified locale.
+     *
+     * @param localeID the localeID as a string
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */
+    public static String getName(String localeID){
+        String name = (String)nameCache.get(localeID);
+        if (name == null) {
+            name = new IDParser(localeID).getName();
+            nameCache.put(localeID, name);
+        }
+        return name;
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return localeID;
+    }
+
+    /**
+     * Returns an iterator over keywords for this locale.  If there 
+     * are no keywords, returns null.
+     * @return iterator over keywords, or null if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public Iterator getKeywords() {
+        return getKeywords(localeID);
+    }
+
+    /**
+     * Returns an iterator over keywords for the specified locale.  If there 
+     * are no keywords, returns null.
+     * @return an iterator over the keywords in the specified locale, or null
+     * if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public static Iterator getKeywords(String localeID){
+        return new IDParser(localeID).getKeywords();
+    }
+
+    /**
+     * Returns the value for a keyword in this locale. If the keyword is not defined, returns null.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return the value of the keyword, or null.
+     * @stable ICU 3.0
+     */
+    public String getKeywordValue(String keywordName){
+        return getKeywordValue(localeID, keywordName);
+    }
+    
+    /**
+     * Returns the value for a keyword in the specified locale. If the keyword is not defined, returns null. 
+     * The locale name does not need to be normalized.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return String the value of the keyword as a string
+     * @stable ICU 3.0
+     */
+    public static String getKeywordValue(String localeID, String keywordName) {
+        return new IDParser(localeID).getKeywordValue(keywordName);
+    }
+
+    /**
+     * Utility class to parse and normalize locale ids (including POSIX style)
+     */
+    private static final class IDParser {
+        private char[] id;
+        private int index;
+        private char[] buffer;
+        private int blen;
+        // um, don't handle POSIX ids unless we request it.  why not?  well... because.
+        private boolean canonicalize;
+        private boolean hadCountry;
+
+        // used when canonicalizing
+        Map keywords;
+        String baseName;
+
+        /**
+         * Parsing constants.
+         */
+        private static final char KEYWORD_SEPARATOR     = '@';
+        private static final char HYPHEN                = '-';
+        private static final char KEYWORD_ASSIGN        = '=';
+        private static final char COMMA                 = ',';
+        private static final char ITEM_SEPARATOR        = ';';
+        private static final char DOT                   = '.';
+
+        private IDParser(String localeID) {
+            this(localeID, false);
+        }
+
+        private IDParser(String localeID, boolean canonicalize) {
+            id = localeID.toCharArray();
+            index = 0;
+            buffer = new char[id.length + 5];
+            blen = 0;
+            this.canonicalize = canonicalize;
+        }
+
+        private void reset() {
+            index = blen = 0;
+        }
+
+        // utilities for working on text in the buffer
+
+        /**
+         * Append c to the buffer.
+         */
+        private void append(char c) {
+            try {
+                buffer[blen] = c;
+            }
+            catch (IndexOutOfBoundsException e) {
+                if (buffer.length > 512) {
+                    // something is seriously wrong, let this go
+                    throw e;
+                }
+                char[] nbuffer = new char[buffer.length * 2];
+                System.arraycopy(buffer, 0, nbuffer, 0, buffer.length);
+                nbuffer[blen] = c;
+                buffer = nbuffer;
+            }
+            ++blen;
+        }
+
+        private void addSeparator() {
+            append(UNDERSCORE);
+        }
+
+        /**
+         * Returns the text in the buffer from start to blen as a String.
+         */
+        private String getString(int start) {
+            if (start == blen) {
+                return EMPTY_STRING;
+            }
+            return new String(buffer, start, blen-start);
+        }
+
+        /**
+         * Set the length of the buffer to pos, then append the string.
+         */
+        private void set(int pos, String s) {
+            this.blen = pos; // no safety
+            append(s);
+        }
+
+        /**
+         * Append the string to the buffer.
+         */
+        private void append(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                append(s.charAt(i));
+            }
+        }
+
+        // utilities for parsing text out of the id
+
+        /**
+         * Character to indicate no more text is available in the id.
+         */
+        private static final char DONE = '\uffff';
+
+        /**
+         * Returns the character at index in the id, and advance index.  The returned character
+         * is DONE if index was at the limit of the buffer.  The index is advanced regardless
+         * so that decrementing the index will always 'unget' the last character returned.
+         */
+        private char next() {
+            if (index == id.length) {
+                index++;
+                return DONE; 
+            }
+
+            return id[index++];
+        }
+
+        /**
+         * Advance index until the next terminator or id separator, and leave it there.
+         */
+        private void skipUntilTerminatorOrIDSeparator() {
+            while (!isTerminatorOrIDSeparator(next())) {
+            }
+            --index;
+        }
+
+        /**
+         * Returns true if the character at index in the id is a terminator.
+         */
+        private boolean atTerminator() {
+            return index >= id.length || isTerminator(id[index]);
+        }
+
+        /*
+         * Returns true if the character is an id separator (underscore or hyphen).
+         */
+/*        private boolean isIDSeparator(char c) {
+            return c == UNDERSCORE || c == HYPHEN;
+        }*/
+
+        /**
+         * Returns true if the character is a terminator (keyword separator, dot, or DONE).
+         * Dot is a terminator because of the POSIX form, where dot precedes the codepage.
+         */
+        private boolean isTerminator(char c) {
+            // always terminate at DOT, even if not handling POSIX.  It's an error...
+            return c == KEYWORD_SEPARATOR || c == DONE || c == DOT;
+        }
+
+        /**
+         * Returns true if the character is a terminator or id separator.
+         */
+        private boolean isTerminatorOrIDSeparator(char c) {
+            return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || 
+                c == DONE || c == DOT;   
+        }
+
+        /**
+         * Returns true if the start of the buffer has an experimental or private language 
+         * prefix, the pattern '[ixIX][-_].' shows the syntax checked.
+         */
+        private boolean haveExperimentalLanguagePrefix() {
+            if (id.length > 2) {
+                char c = id[1];
+                if (c == HYPHEN || c == UNDERSCORE) {
+                    c = id[0];
+                    return c == 'x' || c == 'X' || c == 'i' || c == 'I';
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Returns true if a value separator occurs at or after index.
+         */
+        private boolean haveKeywordAssign() {
+            // assume it is safe to start from index
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_ASSIGN) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Advance index past language, and accumulate normalized language code in buffer.
+         * Index must be at 0 when this is called.  Index is left at a terminator or id 
+         * separator.  Returns the start of the language code in the buffer.
+         */
+        private int parseLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                append(Character.toLowerCase(id[0]));
+                append(HYPHEN);
+                index = 2;
+            }
+        
+            char c;
+            while(!isTerminatorOrIDSeparator(c = next())) {
+                append(Character.toLowerCase(c));
+            }
+            --index; // unget
+
+            if (blen == 3) {
+                initLanguageTables();
+
+                /* convert 3 character code to 2 character code if possible *CWB*/
+                String lang = getString(0);
+                int offset = findIndex(_languages3, lang);
+                if (offset >= 0) {
+                    set(0, _languages[offset]);
+                } else {
+                    offset = findIndex(_obsoleteLanguages3, lang);
+                    if (offset >= 0) {
+                        set(0, _obsoleteLanguages[offset]);
+                    }
+                }
+            }
+
+            return 0;
+        }
+
+        /**
+         * Advance index past language.  Index must be at 0 when this is called.  Index
+         * is left at a terminator or id separator.
+         */
+        private void skipLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                index = 2;
+            }
+            skipUntilTerminatorOrIDSeparator();
+        }
+
+        /**
+         * Advance index past script, and accumulate normalized script in buffer.
+         * Index must be immediately after the language.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index and buffer unchanged.  Otherwise index is left at
+         * a terminator or id separator.  Returns the start of the script code
+         * in the buffer (this may be equal to the buffer length, if there is no
+         * script).
+         */
+        private int parseScript() {
+            if (!atTerminator()) {
+                int oldIndex = index; // save original index
+                ++index;
+
+                int oldBlen = blen; // get before append hyphen, if we truncate everything is undone
+                char c;
+                while(!isTerminatorOrIDSeparator(c = next())) {
+                    if (blen == oldBlen) { // first pass
+                        addSeparator();
+                        append(Character.toUpperCase(c));
+                    } else {
+                        append(Character.toLowerCase(c));
+                    }
+                }
+                --index; // unget
+
+                /* If it's not exactly 4 characters long, then it's not a script. */
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                    blen = oldBlen;
+                } else {
+                    oldBlen++; // index past hyphen, for clients who want to extract just the script
+                }
+
+                return oldBlen;
+            }
+            return blen;
+        }
+
+        /**
+         * Advance index past script.
+         * Index must be immediately after the language and IDSeparator.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index.  Otherwise index is left at a terminator or
+         * id separator.
+         */
+        private void skipScript() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                skipUntilTerminatorOrIDSeparator();
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past country, and accumulate normalized country in buffer.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.  Return the start of the country code in the buffer.
+         */
+        private int parseCountry() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                int oldBlen = blen;
+                char c;
+                while (!isTerminatorOrIDSeparator(c = next())) {
+                    if (oldBlen == blen) { // first, add hyphen
+                        hadCountry = true; // we have a country, let variant parsing know
+                        addSeparator();
+                        ++oldBlen; // increment past hyphen
+                    }
+                    append(Character.toUpperCase(c));
+                }
+                --index; // unget
+
+                int charsAppended = blen - oldBlen;
+
+                if (charsAppended == 0) {
+                    // Do nothing.
+                }
+                else if (charsAppended < 2 || charsAppended > 3) {
+                    // It's not a country, so return index and blen to
+                    // their previous values.
+                    index = oldIndex;
+                    --oldBlen;
+                    blen = oldBlen;
+                    hadCountry = false;
+                }
+                else if (charsAppended == 3) {
+                    initCountryTables();
+
+                    /* convert 3 character code to 2 character code if possible *CWB*/
+                    int offset = findIndex(_countries3, getString(oldBlen));
+                    if (offset >= 0) {
+                        set(oldBlen, _countries[offset]);
+                    } else {
+                        offset = findIndex(_obsoleteCountries3, getString(oldBlen));
+                        if (offset >= 0) {
+                            set(oldBlen, _obsoleteCountries[offset]);
+                        }
+                    }
+                }
+
+                return oldBlen;
+            }
+
+            return blen;
+        }  
+
+        /**
+         * Advance index past country.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.
+         */
+        private void skipCountry() {
+            if (!atTerminator()) {
+                ++index;
+                /* 
+                 * Save the index point after the separator, since the format
+                 * requires two separators if the country is not present.
+                 */
+                int oldIndex = index;
+
+                skipUntilTerminatorOrIDSeparator();
+                int charsSkipped = index - oldIndex;
+                if (charsSkipped < 2 || charsSkipped > 3) {
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past variant, and accumulate normalized variant in buffer.  This ignores
+         * the codepage information from POSIX ids.  Index must be immediately after the country
+         * or script.  Index is left at the keyword separator or at the end of the text.  Return
+         * the start of the variant code in the buffer.
+         *
+         * In standard form, we can have the following forms:
+         * ll__VVVV
+         * ll_CC_VVVV
+         * ll_Ssss_VVVV
+         * ll_Ssss_CC_VVVV
+         *
+         * This also handles POSIX ids, which can have the following forms (pppp is code page id):
+         * ll_CC.pppp          --> ll_CC
+         * ll_CC.pppp@VVVV     --> ll_CC_VVVV
+         * ll_CC@VVVV          --> ll_CC_VVVV
+         *
+         * We identify this use of '@' in POSIX ids by looking for an '=' following
+         * the '@'.  If there is one, we consider '@' to start a keyword list, instead of
+         * being part of a POSIX id.
+         *
+         * Note:  since it was decided that we want an option to not handle POSIX ids, this
+         * becomes a bit more complex.
+         */
+        private int parseVariant() {
+            int oldBlen = blen;
+
+            boolean start = true;
+            boolean needSeparator = true;
+            boolean skipping = false;
+            char c;
+            while ((c = next()) != DONE) {
+                if (c == DOT) {
+                    start = false;
+                    skipping = true;
+                } else if (c == KEYWORD_SEPARATOR) {
+                    if (haveKeywordAssign()) {
+                        break;
+                    }
+                    skipping = false;
+                    start = false;
+                    needSeparator = true; // add another underscore if we have more text
+                } else if (start) {
+                    start = false;
+                } else if (!skipping) {
+                    if (needSeparator) {
+                        boolean incOldBlen = blen == oldBlen; // need to skip separators
+                        needSeparator = false;
+                        if (incOldBlen && !hadCountry) { // no country, we'll need two
+                            addSeparator();
+                            ++oldBlen; // for sure
+                        }
+                        addSeparator();
+                        if (incOldBlen) { // only for the first separator
+                            ++oldBlen;
+                        }
+                    }
+                    c = Character.toUpperCase(c);
+                    if (c == HYPHEN || c == COMMA) {
+                        c = UNDERSCORE;
+                    }
+                    append(c);
+                }
+            }
+            --index; // unget
+            
+            return oldBlen;
+        }
+
+        // no need for skipvariant, to get the keywords we'll just scan directly for 
+        // the keyword separator
+
+        /**
+         * Returns the normalized language id, or the empty string.
+         */
+        public String getLanguage() {
+            reset();
+            return getString(parseLanguage());
+        }
+   
+        /**
+         * Returns the normalized script id, or the empty string.
+         */
+        public String getScript() {
+            reset();
+            skipLanguage();
+            return getString(parseScript());
+        }
+    
+        /**
+         * return the normalized country id, or the empty string.
+         */
+        public String getCountry() {
+            reset();
+            skipLanguage();
+            skipScript();
+            return getString(parseCountry());
+        }
+
+        /**
+         * Returns the normalized variant id, or the empty string.
+         */
+        public String getVariant() {
+            reset();
+            skipLanguage();
+            skipScript();
+            skipCountry();
+            return getString(parseVariant());
+        }
+
+        /**
+         * Returns the language, script, country, and variant as separate strings.
+         */
+        public String[] getLanguageScriptCountryVariant() {
+            reset();
+            return new String[] {
+                getString(parseLanguage()),
+                getString(parseScript()),
+                getString(parseCountry()),
+                getString(parseVariant())
+            };
+        }
+
+        public void setBaseName(String baseName) {
+            this.baseName = baseName;
+        }
+
+        public void parseBaseName() {
+            if (baseName != null) {
+                set(0, baseName);
+            } else {
+                reset();
+                parseLanguage();
+                parseScript();
+                parseCountry();
+                parseVariant();
+            
+                // catch unwanted trailing underscore after country if there was no variant
+                if (blen > 1 && buffer[blen-1] == UNDERSCORE) {
+                    --blen;
+                }
+            }
+        }
+
+        /**
+         * Returns the normalized base form of the locale id.  The base
+         * form does not include keywords.
+         */
+        public String getBaseName() {
+            if (baseName != null) {
+                return baseName;
+            }
+            parseBaseName();
+            return getString(0);
+        }
+
+        /**
+         * Returns the normalized full form of the locale id.  The full
+         * form includes keywords if they are present.
+         */
+        public String getName() {
+            parseBaseName();
+            parseKeywords();
+            return getString(0);
+        }
+
+        // keyword utilities
+
+        /**
+         * If we have keywords, advance index to the start of the keywords and return true, 
+         * otherwise return false.
+         */
+        private boolean setToKeywordStart() {
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_SEPARATOR) {
+                    if (canonicalize) {
+                        for (int j = ++i; j < id.length; ++j) { // increment i past separator for return
+                            if (id[j] == KEYWORD_ASSIGN) {
+                                index = i;
+                                return true;
+                            }
+                        }
+                    } else {
+                        if (++i < id.length) {
+                            index = i;
+                            return true;
+                        }
+                    }
+                    break;
+                }
+            }
+            return false;
+        }
+        
+        private static boolean isDoneOrKeywordAssign(char c) {
+            return c == DONE || c == KEYWORD_ASSIGN;
+        }
+
+        private static boolean isDoneOrItemSeparator(char c) {
+            return c == DONE || c == ITEM_SEPARATOR;
+        }
+
+        private String getKeyword() {
+            int start = index;
+            while (!isDoneOrKeywordAssign(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim().toLowerCase();
+        }
+
+        private String getValue() {
+            int start = index;
+            while (!isDoneOrItemSeparator(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim(); // leave case alone
+        }
+
+        private Comparator getKeyComparator() {
+            final Comparator comp = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        return ((String)lhs).compareTo((String)rhs);
+                    }
+                };
+            return comp;
+        }
+
+        /**
+         * Returns a map of the keywords and values, or null if there are none.
+         */
+        private Map getKeywordMap() {
+            if (keywords == null) {
+                TreeMap m = null;
+                if (setToKeywordStart()) {
+                    // trim spaces and convert to lower case, both keywords and values.
+                    do {
+                        String key = getKeyword();
+                        if (key.length() == 0) {
+                            break;
+                        }
+                        char c = next();
+                        if (c != KEYWORD_ASSIGN) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            if (c == DONE) {
+                                break;
+                            } else {
+                                continue;
+                            }
+                        }
+                        String value = getValue();
+                        if (value.length() == 0) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            continue;
+                        }
+                        if (m == null) {
+                            m = new TreeMap(getKeyComparator());
+                        } else if (m.containsKey(key)) {
+                            // throw new IllegalArgumentException("key '" + key + "' already has a value.");
+                            continue;
+                        }
+                        m.put(key, value);
+                    } while (next() == ITEM_SEPARATOR);
+                }               
+                keywords = m != null ? m : Collections.EMPTY_MAP;
+            }
+
+            return keywords;
+        }
+
+        /**
+         * Parse the keywords and return start of the string in the buffer.
+         */
+        private int parseKeywords() {
+            int oldBlen = blen;
+            Map m = getKeywordMap();
+            if (!m.isEmpty()) {
+                Iterator iter = m.entrySet().iterator();
+                boolean first = true;
+                while (iter.hasNext()) {
+                    append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR);
+                    first = false;
+                    Map.Entry e = (Map.Entry)iter.next();
+                    append((String)e.getKey());
+                    append(KEYWORD_ASSIGN);
+                    append((String)e.getValue());
+                }
+                if (blen != oldBlen) {
+                    ++oldBlen;
+                }
+            }
+            return oldBlen;
+        }
+
+        /**
+         * Returns an iterator over the keywords, or null if we have an empty map.
+         */
+        public Iterator getKeywords() {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : m.keySet().iterator();
+        }
+
+        /**
+         * Returns the value for the named keyword, or null if the keyword is not
+         * present.
+         */
+        public String getKeywordValue(String keywordName) {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : (String)m.get(keywordName.trim().toLowerCase());
+        }
+
+        /**
+         * Set the keyword value only if it is not already set to something else.
+         */
+        public void defaultKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, false);
+        }
+            
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.
+         */
+        public void setKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, true);
+        }
+
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.  If reset is true, ignore any previous value for 
+         * the keyword, otherwise do not change the keyword (including removal of
+         * one or all keywords).
+         */
+        private void setKeywordValue(String keywordName, String value, boolean reset) {
+            if (keywordName == null) {
+                if (reset) {
+                    // force new map, ignore value
+                    keywords = Collections.EMPTY_MAP;
+                }
+            } else {
+                keywordName = keywordName.trim().toLowerCase();
+                if (keywordName.length() == 0) {
+                    throw new IllegalArgumentException("keyword must not be empty");
+                }
+                if (value != null) {
+                    value = value.trim();
+                    if (value.length() == 0) {
+                        throw new IllegalArgumentException("value must not be empty");
+                    }
+                }
+                Map m = getKeywordMap();
+                if (m.isEmpty()) { // it is EMPTY_MAP
+                    if (value != null) {
+                        // force new map
+                        keywords = new TreeMap(getKeyComparator());
+                        keywords.put(keywordName, value.trim());
+                    }
+                } else {
+                    if (reset || !m.containsKey(keywordName)) {
+                        if (value != null) {
+                            m.put(keywordName, value);
+                        } else {
+                            m.remove(keywordName);
+                            if (m.isEmpty()) {
+                                // force new map
+                                keywords = Collections.EMPTY_MAP;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * linear search of the string array. the arrays are unfortunately ordered by the
+     * two-letter target code, not the three-letter search code, which seems backwards.
+     */
+    private static int findIndex(String[] array, String target){
+        for (int i = 0; i < array.length; i++) {
+            if (target.equals(array[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }    
+
+    /**
+     * Returns the canonical name for the specified locale ID.  This is used to convert POSIX
+     * and other grandfathered IDs to standard ICU form.
+     * @param localeID the locale id
+     * @return the canonicalized id
+     * @stable ICU 3.0
+     */
+    public static String canonicalize(String localeID){
+        IDParser parser = new IDParser(localeID, true);
+        String baseName = parser.getBaseName();
+        boolean foundVariant = false;
+      
+        // formerly, we always set to en_US_POSIX if the basename was empty, but
+        // now we require that the entire id be empty, so that "@foo=bar"
+        // will pass through unchanged.
+        // {dlf} I'd rather keep "" unchanged.
+        if (localeID.equals("")) {
+            return "";
+//              return "en_US_POSIX";
+        }
+
+        // we have an ID in the form xx_Yyyy_ZZ_KKKKK
+
+        initCANONICALIZE_MAP();
+
+        /* convert the variants to appropriate ID */
+        for (int i = 0; i < variantsToKeywords.length; i++) {
+            String[] vals = variantsToKeywords[i];
+            int idx = baseName.lastIndexOf("_" + vals[0]);
+            if (idx > -1) {
+                foundVariant = true;
+
+                baseName = baseName.substring(0, idx);
+                if (baseName.endsWith("_")) {
+                    baseName = baseName.substring(0, --idx);
+                }
+                parser.setBaseName(baseName);
+                parser.defaultKeywordValue(vals[1], vals[2]);
+                break;
+            }
+        }
+
+        /* See if this is an already known locale */
+        for (int i = 0; i < CANONICALIZE_MAP.length; i++) {
+            if (CANONICALIZE_MAP[i][0].equals(baseName)) {
+                foundVariant = true;
+
+                String[] vals = CANONICALIZE_MAP[i];
+                parser.setBaseName(vals[1]);
+                if (vals[2] != null) {
+                    parser.defaultKeywordValue(vals[2], vals[3]);
+                }
+                break;
+            }
+        }
+
+        /* total mondo hack for Norwegian, fortunately the main NY case is handled earlier */
+        if (!foundVariant) {
+            if (parser.getLanguage().equals("nb") && parser.getVariant().equals("NY")) {
+                parser.setBaseName(lscvToID("nn", parser.getScript(), parser.getCountry(), null));
+            }
+        }
+
+        return parser.getName();
+    }
+    
+    /**
+     * Given a keyword and a value, return a new locale with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale
+     * @stable ICU 3.2
+     */
+    public ULocale setKeywordValue(String keyword, String value) {
+        return new ULocale(setKeywordValue(localeID, keyword, value), (Locale)null);
+    }
+
+    /**
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale id
+     * @stable ICU 3.2
+     */
+    public static String setKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.setKeywordValue(keyword, value);
+        return parser.getName();
+    }
+
+    /*
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value, if the keyword does not already have a value.  The keyword and
+     * value must not be null or empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add, if not already present
+     * @param value the value to add, if not already present
+     * @return the updated locale id
+     * @internal
+     */
+/*    private static String defaultKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.defaultKeywordValue(keyword, value);
+        return parser.getName();
+    }*/
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Language(){
+        return getISO3Language(localeID);
+    }
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Language(String localeID){
+        initLanguageTables();
+
+        String language = getLanguage(localeID);
+        int offset = findIndex(_languages, language);
+        if(offset>=0){
+            return _languages3[offset];
+        } else {
+            offset = findIndex(_obsoleteLanguages, language);
+            if (offset >= 0) {
+                return _obsoleteLanguages3[offset];
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Country(){
+        return getISO3Country(localeID);
+    }
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Country(String localeID){
+        initCountryTables();
+
+        String country = getCountry(localeID);
+        int offset = findIndex(_countries, country);
+        if(offset>=0){
+            return _countries3[offset];
+        }else{
+            offset = findIndex(_obsoleteCountries, country);
+            if(offset>=0){
+                return _obsoleteCountries3[offset];   
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    // display names
+
+    /**
+     * Utility to fetch locale display data from resource bundle tables.
+     */
+    private static String getTableString(String tableName, String subtableName, String item, String displayLocaleID) {
+        if (item.length() > 0) {
+            try {
+                ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+                  getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+                return getTableString(tableName, subtableName, item, bundle);
+            } catch (Exception e) {
+//              System.out.println("gtsu: " + e.getMessage());
+            }
+        }
+        return item;
+    }
+        
+    /**
+     * Utility to fetch locale display data from resource bundle tables.
+     */
+    private static String getTableString(String tableName, String subtableName, String item, ICUResourceBundle bundle) {
+//      System.out.println("gts table: " + tableName + 
+//                         " subtable: " + subtableName +
+//                         " item: " + item +
+//                         " bundle: " + bundle.getULocale());
+        try {
+            for (;;) {
+                // special case currency
+                if ("currency".equals(subtableName)) {
+                    ICUResourceBundle table = bundle.getWithFallback("Currencies");
+                    table = table.getWithFallback(item);
+                    return table.getString(1);
+                } else {
+                    ICUResourceBundle table = bundle.getWithFallback(tableName);
+                    try {
+                        if (subtableName != null) {
+                            table = table.getWithFallback(subtableName);
+                        }
+                        return table.getStringWithFallback(item);
+                    }
+                    catch (MissingResourceException e) {
+                        
+                        if(subtableName==null){
+                            try{
+                                // may be a deprecated code
+                                String currentName = null;
+                                if(tableName.equals("Countries")){
+                                    currentName = getCurrentCountryID(item);
+                                }else if(tableName.equals("Languages")){
+                                    currentName = getCurrentLanguageID(item);
+                                }
+                                return table.getStringWithFallback(currentName);
+                            }catch (MissingResourceException ex){/* fall through*/}
+                        }
+                        
+                        // still can't figure out ?.. try the fallback mechanism
+                        String fallbackLocale = table.getWithFallback("Fallback").getString();
+                        if (fallbackLocale.length() == 0) {
+                            fallbackLocale = "root";
+                        }
+//                      System.out.println("bundle: " + bundle.getULocale() + " fallback: " + fallbackLocale);
+                        if(fallbackLocale.equals(table.getULocale().localeID)){
+                            return item;
+                        }
+                        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, 
+                                                                                      fallbackLocale);
+//                          System.out.println("fallback from " + table.getULocale() + " to " + fallbackLocale + 
+//                                             ", got bundle " + bundle.getULocale());                      
+                    }
+                }
+            }
+        }
+        catch (Exception e) {
+//          System.out.println("gtsi: " + e.getMessage());
+        }
+        return item;
+    }
+
+    /**
+     * Returns this locale's language localized for display in the default locale.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage() {
+        return getDisplayLanguageInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's language localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage(ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, String displayLocaleID) {
+        return getDisplayLanguageInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    } 
+
+    static String getCurrentCountryID(String oldID){
+        initCountryTables();
+        int offset = findIndex(_deprecatedCountries, oldID);
+        if (offset >= 0) {
+            return _replacementCountries[offset];
+        }
+        return oldID;
+    }
+    static String getCurrentLanguageID(String oldID){
+        initLanguageTables();
+        int offset = findIndex(_obsoleteLanguages, oldID);
+        if (offset >= 0) {
+            return _replacementLanguages[offset];
+        }
+        return oldID;        
+    }
+
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayLanguageInternal(String localeID, String displayLocaleID) {
+        return getTableString("Languages", null, new IDParser(localeID).getLanguage(), displayLocaleID);
+    }
+ 
+    /**
+     * Returns this locale's script localized for display in the default locale.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript() {
+        return getDisplayScriptInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's script localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript(ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose script will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, String displayLocaleID) {
+        return getDisplayScriptInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * @param localeID the id of the locale whose script will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayScriptInternal(String localeID, String displayLocaleID) {
+        return getTableString("Scripts", null, new IDParser(localeID).getScript(), displayLocaleID);
+    }
+
+    /**
+     * Returns this locale's country localized for display in the default locale.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry() {
+        return getDisplayCountryInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale's country localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry(ULocale displayLocale){
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, String displayLocaleID) {
+        return getDisplayCountryInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, ULocale displayLocale) {
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayCountryInternal(String localeID, String displayLocaleID) {
+        return getTableString("Countries", null,  new IDParser(localeID).getCountry(), displayLocaleID);
+    }
+    
+    /**
+     * Returns this locale's variant localized for display in the default locale.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant() {
+        return getDisplayVariantInternal(localeID, getDefault().localeID);   
+    }
+
+    /**
+     * Returns this locale's variant localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant(ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, String displayLocaleID){
+        return getDisplayVariantInternal(localeID, getName(displayLocaleID));
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayVariantInternal(String localeID, String displayLocaleID) {
+        return getTableString("Variants", null, new IDParser(localeID).getVariant(), displayLocaleID);
+    }
+
+    /**
+     * Returns a keyword localized for display in the default locale.
+     * @param keyword the keyword to be displayed.
+     * @return the localized keyword name.
+     * @see #getKeywords()
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword) {
+        return getDisplayKeywordInternal(keyword, getDefault().localeID);   
+    }
+    
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, String displayLocaleID) {
+        return getDisplayKeywordInternal(keyword, getName(displayLocaleID));   
+    }
+
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocale the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordInternal(keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordInternal(String keyword, String displayLocaleID) {
+        return getTableString("Keys", null, keyword.trim().toLowerCase(), displayLocaleID);
+    }
+
+    /**
+     * Returns a keyword value localized for display in the default locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getDefault().localeID);
+    }
+    
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);   
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, String displayLocaleID) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordValueInternal(String localeID, String keyword, String displayLocaleID) {
+        keyword = keyword.trim().toLowerCase();
+        String value = new IDParser(localeID).getKeywordValue(keyword);
+        return getTableString("Types", keyword, value, displayLocaleID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the default locale.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName() {
+        return getDisplayNameInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName(ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, String displayLocaleID) {
+        return getDisplayNameInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayNameInternal(String localeID, String displayLocaleID) {
+        // lang
+        // lang (script, country, variant, keyword=value, ...)
+        // script, country, variant, keyword=value, ...
+
+        final String[] tableNames = { "Languages", "Scripts", "Countries", "Variants" };
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+
+        StringBuffer buf = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+
+        boolean haveLanguage = names[0].length() > 0;
+        boolean openParen = false;
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {
+                name = getTableString(tableNames[i], null, name, bundle);
+                if (buf.length() > 0) { // need a separator
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                buf.append(name);
+            }
+        }
+
+        Map m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            Iterator keys = m.entrySet().iterator();
+            while (keys.hasNext()) {
+                if (buf.length() > 0) {
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                Map.Entry e = (Map.Entry)keys.next();
+                String key = (String)e.getKey();
+                String val = (String)e.getValue();
+                buf.append(getTableString("Keys", null, key, bundle));
+                buf.append("=");
+                buf.append(getTableString("Types", key, val, bundle));
+            }
+        }
+
+        if (openParen) {
+            buf.append(")");
+        }
+            
+        return buf.toString();
+    }
+
+    /**
+     * Returns this locale's layout orientation for characters.  The possible
+     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+     * "bottom-to-top".
+     * @return The locale's layout orientation for characters.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getCharacterOrientation() {
+        return getTableString("layout", null, "characters", getName());
+    }
+
+    /**
+     * Returns this locale's layout orientation for lines.  The possible
+     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+     * "bottom-to-top".
+     * @return The locale's layout orientation for lines.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getLineOrientation() {
+        return getTableString("layout", null, "lines", getName());
+    }
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the locale of the
+     * resource containing the data.  This is always at or above the
+     * valid locale.  If the valid locale does not contain the
+     * specific data being requested, then the actual locale will be
+     * above the valid locale.  If the object was not constructed from
+     * locale data, then the valid locale is <i>null</i>.
+     *
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Type ACTUAL_LOCALE = new Type();
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the most specific
+     * locale for which any data exists.  This is always at or above
+     * the requested locale, and at or below the actual locale.  If
+     * the requested locale does not correspond to any resource data,
+     * then the valid locale will be above the requested locale.  If
+     * the object was not constructed from locale data, then the
+     * actual locale is <i>null</i>.
+     *
+     * <p>Note: The valid locale will be returned correctly in ICU
+     * 3.0 or later.  In ICU 2.8, it is not returned correctly.
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public static Type VALID_LOCALE = new Type();
+
+    /**
+     * Opaque selector enum for <tt>getLocale()</tt>.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @draft ICU 2.8 (retainAll)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class Type {
+        private Type() {}
+    }
+
+  /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, ULocale[] availableLocales, 
+                                         boolean[] fallback) {
+        if (acceptLanguageList == null) {
+            throw new NullPointerException();
+        }
+        ULocale acceptList[] = null;
+        try {
+            acceptList = parseAcceptLanguage(acceptLanguageList, true);
+        } catch (ParseException pe) {
+            acceptList = null;
+        }
+        if (acceptList == null) {
+            return null;
+        }
+        return acceptLanguage(acceptList, availableLocales, fallback);
+    }
+
+    /**
+    * Based on a list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, ULocale[]
+    availableLocales, boolean[] fallback) {
+        // fallbacklist
+        int i,j;
+        if(fallback != null) {
+            fallback[0]=true;
+        }
+        for(i=0;i<acceptLanguageList.length;i++) {
+            ULocale aLocale = acceptLanguageList[i];
+            boolean[] setFallback = fallback;
+            do {
+                for(j=0;j<availableLocales.length;j++) {
+                    if(availableLocales[j].equals(aLocale)) {
+                        if(setFallback != null) {
+                            setFallback[0]=false; // first time with this locale - not a fallback.
+                        }
+                        return availableLocales[j];
+                    }
+                }
+                Locale loc = aLocale.toLocale();
+                Locale parent = LocaleUtility.fallback(loc);
+                if(parent != null) {
+                    aLocale = new ULocale(parent);
+                } else {
+                    aLocale = null;
+                }
+                setFallback = null; // Do not set fallback in later iterations
+            } while (aLocale != null);
+        }
+        return null;
+    }
+
+   /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, boolean[] fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                                fallback);
+    }
+
+   /**
+    * Based on an ordered array of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList ordered array of acceptable locales (preferred are listed first)
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, boolean[]
+                                         fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                fallback);
+    }
+
+    /**
+     * Package local method used for parsing Accept-Language string
+     * @internal ICU 3.8
+     */
+    static ULocale[] parseAcceptLanguage(String acceptLanguage, boolean isLenient) throws ParseException {
+        /**
+         * @internal ICU 3.4
+         */
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if (q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if (q < other.q) {
+                    return 1;
+                }
+                if (serial < other.serial) {
+                    return -1;
+                } else if (serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // parse out the acceptLanguage into an array
+        TreeMap map = new TreeMap();
+        StringBuffer languageRangeBuf = new StringBuffer();
+        StringBuffer qvalBuf = new StringBuffer();
+        int state = 0;
+        acceptLanguage += ","; // append comma to simplify the parsing code
+        int n;
+        boolean subTag = false;
+        boolean q1 = false;
+        for (n = 0; n < acceptLanguage.length(); n++) {
+            boolean gotLanguageQ = false;
+            char c = acceptLanguage.charAt(n);
+            switch (state) {
+            case 0: // before language-range start
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    // in language-range
+                    languageRangeBuf.append(c);
+                    state = 1;
+                    subTag = false;
+                } else if (c == '*') {
+                    languageRangeBuf.append(c);
+                    state = 2;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid character
+                    state = -1;
+                }
+                break;
+            case 1: // in language-range
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    languageRangeBuf.append(c);
+                } else if (c == '-') {
+                    subTag = true;
+                    languageRangeBuf.append(c);
+                } else if (c == '_') {
+                    if (isLenient) {
+                        subTag = true;
+                        languageRangeBuf.append(c);
+                    } else {
+                        state = -1;
+                    }
+                } else if ('0' <= c && c <= '9') {
+                    if (subTag) {
+                        languageRangeBuf.append(c);                        
+                    } else {
+                        // DIGIT is allowed only in language sub tag
+                        state = -1;
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid character for language-range
+                    state = -1;
+                }
+                break;
+            case 2: // saw wild card range
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 3: // language-range end
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ';') {
+                    // before q
+                    state =4;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 4: // before q
+                if (c == 'q') {
+                    // before equal
+                    state = 5;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 5: // before equal
+                if (c == '=') {
+                    // before q value
+                    state = 6;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 6: // before q value
+                if (c == '0') {
+                    // q value start with 0
+                    q1 = false;
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '1') {
+                    // q value start with 1
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '.') {
+                    if (isLenient) {
+                        qvalBuf.append(c);
+                        state = 8;
+                    } else {
+                        state = -1;
+                    }
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 7: // q value start
+                if (c == '.') {
+                    // before q value fraction part
+                    qvalBuf.append(c);
+                    state = 8;
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 8: // before q value fraction part
+                if ('0' <= c || c <= '9') {
+                    if (q1 && c != '0' && !isLenient) {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        // in q value fraction part
+                        qvalBuf.append(c);
+                        state = 9;
+                    }
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 9: // in q value fraction part
+                if ('0' <= c && c <= '9') {
+                    if (q1 && c != '0') {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        qvalBuf.append(c);
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 10: // after q value
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            }
+            if (state == -1) {
+                // error state
+                throw new ParseException("Invalid Accept-Language", n);
+            }
+            if (gotLanguageQ) {
+                double q = 1.0;
+                if (qvalBuf.length() != 0) {
+                    try {
+                        q = Double.parseDouble(qvalBuf.toString());
+                    } catch (NumberFormatException nfe) {
+                        // Already validated, so it should never happen
+                        q = 1.0;
+                    }
+                    if (q > 1.0) {
+                        q = 1.0;
+                    }
+                }
+                if (languageRangeBuf.charAt(0) != '*') {
+                    int serial = map.size();
+                    ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q, serial);
+                    map.put(entry, new ULocale(canonicalize(languageRangeBuf.toString()))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc                    
+                }
+
+                // reset buffer and parse state
+                languageRangeBuf.setLength(0);
+                qvalBuf.setLength(0);
+                state = 0;
+            }
+        }
+        if (state != 0) {
+            // Well, the parser should handle all cases.  So just in case.
+            throw new ParseException("Invalid AcceptlLanguage", n);
+        }
+
+        // pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        return acceptList;
+    }
+
+    private static final String UNDEFINED_LANGUAGE = "und";
+    private static final String UNDEFINED_SCRIPT = "Zzzz";
+    private static final String UNDEFINED_REGION = "ZZ";
+
+    /**
+     * Supply most likely subtags to the given locale
+     * @param loc The input locale
+     * @return A ULocale with most likely subtags filled in.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static ULocale addLikelySubtag(ULocale loc) {
+        return addLikelySubtags(loc);
+    }
+
+    /**
+     * Add the likely subtags for a provided locale ID, per the algorithm described
+     * in the following CLDR technical report:
+     *
+     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+     *
+     * If the provided ULocale instance is already in the maximal form, or there is no
+     * data available available for maximization, it will be returned.  For example,
+     * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+     * Otherwise, a new ULocale instance with the maximal form is returned.
+     * 
+     * Examples:
+     *
+     * "en" maximizes to "en_Latn_US"
+     *
+     * "de" maximizes to "de_Latn_US"
+     *
+     * "sr" maximizes to "sr_Cyrl_RS"
+     *
+     * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+     *
+     * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+     *
+     * @param loc The ULocale to maximize
+     * @return The maximized ULocale instance.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale
+    addLikelySubtags(ULocale loc)
+    {
+        String[] tags = new String[3];
+        String trailing = null;
+  
+        int trailingIndex = parseTagString(
+            loc.localeID,
+            tags);
+
+        if (trailingIndex < loc.localeID.length()) {
+            trailing = loc.localeID.substring(trailingIndex);
+        }
+
+        String newLocaleID =
+            createLikelySubtagsString(
+                (String)tags[0],
+                (String)tags[1],
+                (String)tags[2],
+                trailing);
+
+        return newLocaleID == null ? loc : new ULocale(newLocaleID);
+    }
+
+    /**
+     * Minimize the subtags for a provided locale ID, per the algorithm described
+     * in the following CLDR technical report:
+     *
+     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+     *
+     * If the provided ULocale instance is already in the minimal form, or there
+     * is no data available for minimization, it will be returned.  Since the
+     * minimization algorithm relies on proper maximization, see the comments
+     * for addLikelySubtags for reasons why there might not be any data.
+     *
+     * Examples:
+     *
+     * "en_Latn_US" minimizes to "en"
+     *
+     * "de_Latn_US" minimizes to "de"
+     *
+     * "sr_Cyrl_RS" minimizes to "sr"
+     *
+     * "zh_Hant_TW" minimizes to "zh_TW" (The region is preferred to the
+     * script, and minimizing to "zh" would imply "zh_Hans_CN".)
+     *
+     * @param loc The ULocale to minimize
+     * @return The minimized ULocale instance.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale
+    minimizeSubtags(ULocale loc)
+    {
+        String[] tags = new String[3];
+
+        int trailingIndex = parseTagString(
+                loc.localeID,
+                tags);
+
+        String originalLang = (String)tags[0];
+        String originalScript = (String)tags[1];
+        String originalRegion = (String)tags[2];
+        String originalTrailing = null;
+
+        if (trailingIndex < loc.localeID.length()) {
+            /*
+             * Create a String that contains everything
+             * after the language, script, and region.
+             */
+            originalTrailing = loc.localeID.substring(trailingIndex);
+        }
+
+        /**
+         * First, we need to first get the maximization
+         * by adding any likely subtags.
+         **/
+        String maximizedLocaleID =
+            createLikelySubtagsString(
+                originalLang,
+                originalScript,
+                originalRegion,
+                null);
+
+        /**
+         * If maximization fails, there's nothing
+         * we can do.
+         **/
+        if (isEmptyString(maximizedLocaleID)) {
+            return loc;
+        }
+        else {
+            /**
+             * Start first with just the language.
+             **/
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    null,
+                    null,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        null,
+                        null,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        /**
+         * Next, try the language and region.
+         **/
+        if (originalRegion.length() != 0) {
+
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    null,
+                    originalRegion,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        null,
+                        originalRegion,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        /**
+         * Finally, try the language and script.  This is our last chance,
+         * since trying with all three subtags would only yield the
+         * maximal version that we already have.
+         **/
+        if (originalRegion.length() != 0 &&
+            originalScript.length() != 0) {
+
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    originalScript,
+                    null,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        originalScript,
+                        null,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        return loc;
+    }
+
+    /**
+     * A trivial utility function that checks for a null
+     * reference or checks the length of the supplied String.
+     *
+     *   @param string The string to check
+     *
+     *   @return true if the String is empty, or if the reference is null.
+     */
+    private static boolean isEmptyString(String string) {
+      return string == null || string.length() == 0;
+    }
+    
+    /**
+     * Append a tag to a StringBuffer, adding the separator if necessary.The tag must
+     * not be a zero-length string.
+     *
+     * @param tag The tag to add.
+     * @param buffer The output buffer.
+     **/
+    private static void
+    appendTag(
+        String tag,
+        StringBuffer buffer) {
+    
+        if (buffer.length() != 0) {
+            buffer.append(UNDERSCORE);
+        }
+    
+        buffer.append(tag);
+    }
+    
+    /**
+     * Create a tag string from the supplied parameters.  The lang, script and region
+     * parameters may be null references.
+     *
+     * If any of the language, script or region parameters are empty, and the alternateTags
+     * parameter is not null, it will be parsed for potential language, script and region tags
+     * to be used when constructing the new tag.  If the alternateTags parameter is null, or
+     * it contains no language tag, the default tag for the unknown language is used.
+     *
+     * @param lang The language tag to use.
+     * @param script The script tag to use.
+     * @param region The region tag to use.
+     * @param trailing Any trailing data to append to the new tag.
+     * @param alternateTags A string containing any alternate tags.
+     * @return The new tag string.
+     **/
+    private static String
+    createTagString(
+        String lang,
+        String script,
+        String region,
+        String trailing,
+        String alternateTags) {
+
+        IDParser parser = null;
+        boolean regionAppended = false;
+
+        StringBuffer tag = new StringBuffer();
+    
+        if (!isEmptyString(lang)) {
+            appendTag(
+                lang,
+                tag);
+        }
+        else if (isEmptyString(alternateTags)) {
+            /*
+             * Append the value for an unknown language, if
+             * we found no language.
+             */
+            appendTag(
+                UNDEFINED_LANGUAGE,
+                tag);
+        }
+        else {
+            parser = new IDParser(alternateTags);
+    
+            String alternateLang = parser.getLanguage();
+    
+            /*
+             * Append the value for an unknown language, if
+             * we found no language.
+             */
+            appendTag(
+                !isEmptyString(alternateLang) ? alternateLang : UNDEFINED_LANGUAGE,
+                tag);
+        }
+    
+        if (!isEmptyString(script)) {
+            appendTag(
+                script,
+                tag);
+        }
+        else if (!isEmptyString(alternateTags)) {
+            /*
+             * Parse the alternateTags string for the script.
+             */
+            if (parser == null) {
+                parser = new IDParser(alternateTags);
+            }
+    
+            String alternateScript = parser.getScript();
+    
+            if (!isEmptyString(alternateScript)) {
+                appendTag(
+                    alternateScript,
+                    tag);
+            }
+        }
+    
+        if (!isEmptyString(region)) {
+            appendTag(
+                region,
+                tag);
+
+            regionAppended = true;
+        }
+        else if (!isEmptyString(alternateTags)) {
+            /*
+             * Parse the alternateTags string for the region.
+             */
+            if (parser == null) {
+                parser = new IDParser(alternateTags);
+            }
+    
+            String alternateRegion = parser.getCountry();
+    
+            if (!isEmptyString(alternateRegion)) {
+                appendTag(
+                    alternateRegion,
+                    tag);
+
+                regionAppended = true;
+            }
+        }
+    
+        if (trailing != null && trailing.length() > 1) {
+            /*
+             * The current ICU format expects two underscores
+             * will separate the variant from the preceeding
+             * parts of the tag, if there is no region.
+             */
+            int separators = 0;
+
+            if (trailing.charAt(0) == UNDERSCORE) { 
+                if (trailing.charAt(1) == UNDERSCORE) {
+                    separators = 2;
+                }
+                }
+                else {
+                    separators = 1;
+                }
+
+            if (regionAppended) {
+                /*
+                 * If we appended a region, we may need to strip
+                 * the extra separator from the variant portion.
+                 */
+                if (separators == 2) {
+                    tag.append(trailing.substring(1));
+                }
+                else {
+                    tag.append(trailing);
+                }
+            }
+            else {
+                /*
+                 * If we did not append a region, we may need to add
+                 * an extra separator to the variant portion.
+                 */
+                if (separators == 1) {
+                    tag.append(UNDERSCORE);
+                }
+                tag.append(trailing);
+            }
+        }
+    
+        return tag.toString();
+    }
+    
+    /**
+     * Create a tag string from the supplied parameters.  The lang, script and region
+     * parameters may be null references.If the lang parameter is an empty string, the
+     * default value for an unknown language is written to the output buffer.
+     *
+     * @param lang The language tag to use.
+     * @param script The script tag to use.
+     * @param region The region tag to use.
+     * @param trailing Any trailing data to append to the new tag.
+     * @return The new String.
+     **/
+    static String
+    createTagString(
+            String lang,
+            String script,
+            String region,
+            String trailing) {
+    
+        return createTagString(
+                    lang,
+                    script,
+                    region,
+                    trailing,
+                    null);
+    }
+    
+    /**
+     * Parse the language, script, and region subtags from a tag string, and return the results.
+     *
+     * This function does not return the canonical strings for the unknown script and region.
+     *
+     * @param localeID The locale ID to parse.
+     * @param tags An array of three String references to return the subtag strings.
+     * @return The number of chars of the localeID parameter consumed.
+     **/
+    private static int
+    parseTagString(
+        String localeID,
+        String tags[])
+    {
+        IDParser parser = new IDParser(localeID);
+    
+        String lang = parser.getLanguage();
+        String script = parser.getScript();
+        String region = parser.getCountry();
+    
+        if (isEmptyString(lang)) {
+            tags[0] = UNDEFINED_LANGUAGE;
+        }
+        else {
+            tags[0] = lang;
+        }
+    
+        if (script.equals(UNDEFINED_SCRIPT)) {
+            tags[1] = "";
+        }
+        else {
+            tags[1] = script;
+        }
+        
+        if (region.equals(UNDEFINED_REGION)) {
+            tags[2] = "";
+        }
+        else {
+            tags[2] = region;
+        }
+    
+        /*
+         * Search for the variant.  If there is one, then return the index of
+         * the preceeding separator.
+         * If there's no variant, search for the keyword delimiter,
+         * and return its index.  Otherwise, return the length of the
+         * string.
+         * 
+         * $TOTO(dbertoni) we need to take into account that we might
+         * find a part of the language as the variant, since it can
+         * can have a variant portion that is long enough to contain
+         * the same characters as the variant. 
+         */
+        String variant = parser.getVariant();
+    
+        if (!isEmptyString(variant)){
+            int index = localeID.indexOf(variant); 
+
+            
+            return  index > 0 ? index - 1 : index;
+        }
+        else
+        {
+            int index = localeID.indexOf('@');
+    
+            return index == -1 ? localeID.length() : index;
+        }
+    }
+    
+    private static String
+    lookupLikelySubtags(String localeId) {
+        UResourceBundle bundle =
+            UResourceBundle.getBundleInstance(
+                    ICUResourceBundle.ICU_BASE_NAME, "likelySubtags");
+        try {
+            return bundle.getString(localeId);
+        }
+        catch(MissingResourceException e) {
+            return null;
+        }
+    }
+
+    private static String
+    createLikelySubtagsString(
+        String lang,
+        String script,
+        String region,
+        String variants) {
+    
+        /**
+         * Try the language with the script and region first.
+         **/
+        if (!isEmptyString(script) && !isEmptyString(region)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    script,
+                    region,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);
+
+            /*
+            if (likelySubtags == null) {
+                if (likelySubtags2 != null) {
+                    System.err.println("Tag mismatch: \"(null)\" \"" + likelySubtags2 + "\"");
+                }
+            }
+            else if (likelySubtags2 == null) {
+                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"(null)\"");
+            }
+            else if (!likelySubtags.equals(likelySubtags2)) {
+                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"" + likelySubtags2 + "\"");
+            }
+            */
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            null,
+                            null,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Try the language with just the script.
+         **/
+        if (!isEmptyString(script)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    script,
+                    null,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            null,
+                            region,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Try the language with just the region.
+         **/
+        if (!isEmptyString(region)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    null,
+                    region,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+    
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            script,
+                            null,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Finally, try just the language.
+         **/
+        {
+            String searchTag =
+                createTagString(
+                    lang,
+                    null,
+                    null,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+  
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            script,
+                            region,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/util/UResourceBundle.java b/src/com/ibm/icu/util/UResourceBundle.java
new file mode 100644
index 0000000..243b047
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceBundle.java
@@ -0,0 +1,1028 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.lang.ref.SoftReference;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUResourceBundleReader;
+import com.ibm.icu.impl.ResourceBundleWrapper;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.util.ULocale;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+/**
+ * A class representing a collection of resource information pertaining to a given
+ * locale. A resource bundle provides a way of accessing locale- specific information in
+ * a data file. You create a resource bundle that manages the resources for a given
+ * locale and then ask it for individual resources.
+ * <P>
+ * In ResourceBundle class, an object is created
+ * and the sub items are fetched using getString, getObject methods.
+ * In UResourceBundle,each individual element of a resource is a resource by itself.
+ *
+ * <P>
+ * Resource bundles in ICU are currently defined using text files which conform to the following
+ * <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/bnf_rb.txt">BNF definition</a>.
+ * More on resource bundle concepts and syntax can be found in the
+ * <a href="http://www.icu-project.org/userguide/ResourceManagement.html">Users Guide</a>.
+ * <P>
+ *
+ * The packaging of ICU *.res files can be of two types
+ * ICU4C:
+ * <pre>
+ *       root.res
+ *         |
+ *      --------
+ *     |        |
+ *   fr.res  en.res
+ *     |
+ *   --------
+ *  |        |
+ * fr_CA.res fr_FR.res
+ * </pre>
+ * JAVA/JDK:
+ * <pre>
+ *    LocaleElements.res
+ *         |
+ *      -------------------
+ *     |                   |
+ * LocaleElements_fr.res  LocaleElements_en.res
+ *     |
+ *   ---------------------------
+ *  |                            |
+ * LocaleElements_fr_CA.res   LocaleElements_fr_FR.res
+ * </pre>
+ * Depending on the organization of your resources, the syntax to getBundleInstance will change.
+ * To open ICU style organization use:
+ * <pre>
+ *      UResourceBundle bundle = UResourceBundle.getBundleInstance("com/mycompany/resources", "en_US", myClassLoader);
+ * </pre>
+ * To open Java/JDK style organization use:
+ * <pre>
+ *      UResourceBundle bundle = UResourceBundle.getBundleInstance("com.mycompany.resources.LocaleElements", "en_US", myClassLoader);
+ * </pre>
+ * <note>
+ * Please use pass a class loader for loading non-ICU resources. Java security does not
+ * allow loading of resources across jar files. You must provide your class loader
+ * to load the resources
+ * </note>
+ * @stable ICU 3.0
+ * @author ram
+ */
+public abstract class UResourceBundle extends ResourceBundle{
+
+
+    /**
+     * Creates a resource bundle using the specified base name and locale.
+     * ICU_DATA_CLASS is used as the default root.
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, String localeName){
+        return getBundleInstance(baseName, localeName, ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a resource bundle using the specified base name, locale, and class root.
+     *
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, String localeName, ClassLoader root){
+        return getBundleInstance(baseName, localeName, root, false);
+    }
+
+    /**
+     * Creates a resource bundle using the specified base name, locale, and class root.
+     *
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @param disableFallback Option to disable locale inheritence.
+     *                          If true the fallback chain will not be built.
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     *
+     */
+    protected static UResourceBundle getBundleInstance(String baseName, String localeName, ClassLoader root, boolean disableFallback) {
+        return instantiateBundle(baseName, localeName, root, disableFallback);
+    }
+
+    /**
+     * Sole constructor.  (For invocation by subclass constructors, typically
+     * implicit.)  This is public for compatibility with Java, whose compiler
+     * will generate public default constructors for an abstract class.
+     * @stable ICU 3.0
+     */
+    public UResourceBundle() {
+    }
+
+    /**
+     * Creates a UResourceBundle for the locale specified, from which users can extract resources by using
+     * their corresponding keys.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(ULocale locale) {
+        if (locale==null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the default locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and default locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = ULocale.getDefault();
+        return getBundleInstance(baseName, uloc.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the specified locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+
+    public static UResourceBundle getBundleInstance(String baseName, Locale locale) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = locale == null ? ULocale.getDefault() : ULocale.forLocale(locale);
+
+        return getBundleInstance(baseName, uloc.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle, from which users can extract resources by using
+     * their corresponding keys.
+     * @param baseName string containing the name of the data package.
+     *                    If null the default ICU package name is used.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, ULocale locale) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(baseName, locale.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the specified locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param loader  the loader to use
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.8
+     */
+    public static UResourceBundle getBundleInstance(String baseName, Locale locale, ClassLoader loader) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = locale == null ? ULocale.getDefault() : ULocale.forLocale(locale);
+        return getBundleInstance(baseName, uloc.toString(), loader, false);
+    }
+
+    /**
+     * Creates a UResourceBundle, from which users can extract resources by using
+     * their corresponding keys.<br><br>
+     * Note: Please use this API for loading non-ICU resources. Java security does not
+     * allow loading of resources across jar files. You must provide your class loader
+     * to load the resources
+     * @param baseName string containing the name of the data package.
+     *                    If null the default ICU package name is used.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param loader  the loader to use
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.8
+     */
+    public static UResourceBundle getBundleInstance(String baseName, ULocale locale, ClassLoader loader) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(baseName, locale.toString(), loader, false);
+    }
+
+    /**
+     * Returns the RFC 3066 conformant locale id of this resource bundle.
+     * This method can be used after a call to getBundleInstance() to
+     * determine whether the resource bundle returned really
+     * corresponds to the requested locale or is a fallback.
+     *
+     * @return the locale of this resource bundle
+     * @stable ICU 3.0
+     */
+    public abstract ULocale getULocale();
+
+    /**
+     * Gets the localeID
+     * @return The string representation of the localeID
+     * @stable ICU 3.0
+     */
+    protected abstract String getLocaleID();
+    /**
+     * Gets the base name of the resource bundle
+     * @return The string representation of the base name
+     * @stable ICU 3.0
+     */
+    protected abstract String getBaseName();
+
+    /**
+     * Gets the parent bundle
+     * @return The parent bundle
+     * @stable ICU 3.0
+     */
+    protected abstract UResourceBundle getParent();
+
+
+    /**
+     * Get the locale of this bundle
+     * @return the locale of this resource bundle
+     * @stable ICU 3.0
+     */
+    public Locale getLocale(){
+        return getULocale().toLocale();
+    }
+
+    // Cache for ResourceBundle instantiation
+    private static ICUCache BUNDLE_CACHE = new SimpleCache();
+
+    /**
+     * @internal
+     */
+    public static void resetBundleCache()
+    {
+        /*
+         * A HACK!!!!!
+         * Currently if a resourcebundle with fallback turned ON is added to the cache
+         * and then a getBundleInstance() is called for a bundle with fallback turned OFF
+         * it will actually search the cache for any bundle of the same locale
+         * regaurdless of fallback status. This method has been created so that if
+         * The calling method KNOWS that instances of the other fallback state may be in the 
+         * cache, the calling method may call this method to clear out the cache.
+         *
+         */
+        //TODO figure a way around this method(see method comment)
+        BUNDLE_CACHE = new SimpleCache();
+    }
+    
+    private static void addToCache(ResourceCacheKey key, UResourceBundle b) {
+        BUNDLE_CACHE.put(key, b);
+    }
+
+    /**
+     * Method used by subclasses to add the a particular resource bundle object to the managed cache
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    protected static void addToCache(ClassLoader cl, String fullName, ULocale defaultLocale,  UResourceBundle b){
+        synchronized(cacheKey){
+            cacheKey.setKeyValues(cl, fullName, defaultLocale);
+            addToCache((ResourceCacheKey)cacheKey.clone(), b);
+        }
+    }
+    /**
+     * Method used by sub classes to load a resource bundle object from the managed cache
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    protected static UResourceBundle loadFromCache(ClassLoader cl, String fullName, ULocale defaultLocale){
+        synchronized(cacheKey){
+            cacheKey.setKeyValues(cl, fullName, defaultLocale);
+            return loadFromCache(cacheKey);
+        }
+    }
+    private static UResourceBundle loadFromCache(ResourceCacheKey key) {
+        return (UResourceBundle)BUNDLE_CACHE.get(key);
+    }
+
+    /**
+     * Key used for cached resource bundles.  The key checks
+     * the resource name, the class root, and the default
+     * locale to determine if the resource is a match to the
+     * requested one. The root may be null, but the
+     * searchName and the default locale must have a non-null value.
+     * Note that the default locale may change over time, and
+     * lookup should always be based on the current default
+     * locale (if at all).
+     */
+    private static final class ResourceCacheKey implements Cloneable {
+        private SoftReference loaderRef;
+        private String searchName;
+        private ULocale defaultLocale;
+        private int hashCodeCache;
+        ///CLOVER:OFF
+        public boolean equals(Object other) {
+            if (this == other) {
+                return true;
+            }
+            try {
+                final ResourceCacheKey otherEntry = (ResourceCacheKey) other;
+                //quick check to see if they are not equal
+                if (hashCodeCache != otherEntry.hashCodeCache) {
+                    return false;
+                }
+                //are the names the same?
+                if (!searchName.equals(otherEntry.searchName)) {
+                    return false;
+                }
+                // are the default locales the same?
+                if (defaultLocale == null) {
+                    if (otherEntry.defaultLocale != null) {
+                        return false;
+                    }
+                } else {
+                    if (!defaultLocale.equals(otherEntry.defaultLocale)) {
+                        return false;
+                    }
+                }
+                //are refs (both non-null) or (both null)?
+                if (loaderRef == null) {
+                    return otherEntry.loaderRef == null;
+                } else {
+                    return (otherEntry.loaderRef != null)
+                            && (loaderRef.get() == otherEntry.loaderRef.get());
+                }
+            } catch (NullPointerException e) {
+                return false;
+            } catch (ClassCastException e) {
+                return false;
+            }
+        }
+        public int hashCode() {
+            return hashCodeCache;
+        }
+        public Object clone() {
+            try {
+                return super.clone();
+            } catch (CloneNotSupportedException e) {
+                //this should never happen
+                throw new IllegalStateException();
+            }
+        }
+        ///CLOVER:ON
+        private synchronized void setKeyValues(ClassLoader root, String searchName, ULocale defaultLocale) {
+            this.searchName = searchName;
+            hashCodeCache = searchName.hashCode();
+            this.defaultLocale = defaultLocale;
+            if (defaultLocale != null) {
+                hashCodeCache ^= defaultLocale.hashCode();
+            }
+            if (root == null) {
+                this.loaderRef = null;
+            } else {
+                loaderRef = new SoftReference(root);
+                hashCodeCache ^= root.hashCode();
+            }
+        }
+        /*private void clear() {
+            setKeyValues(null, "", null);
+        }*/
+    }
+
+    private static final ResourceCacheKey cacheKey = new ResourceCacheKey();
+
+    private static final int ROOT_MISSING = 0;
+    private static final int ROOT_ICU = 1;
+    private static final int ROOT_JAVA = 2;
+
+    private static SoftReference ROOT_CACHE;
+
+    private static int getRootType(String baseName, ClassLoader root)
+    {
+        Map m = null;
+        Integer rootType;
+
+        if (ROOT_CACHE != null) {
+            m = (Map) ROOT_CACHE.get();
+        }
+
+        if (m == null) {
+            m = new HashMap();
+            ROOT_CACHE = new SoftReference(m);
+        }
+
+        rootType = (Integer) m.get(baseName);
+
+        if (rootType == null) {
+            String rootLocale = (baseName.indexOf('.')==-1) ? "root" : "";
+            int rt = ROOT_MISSING; // value set on success
+            try{
+                ICUResourceBundle.getBundleInstance(baseName, rootLocale, root, true);
+                rt = ROOT_ICU;
+            }catch(MissingResourceException ex){
+                try{
+                    ResourceBundleWrapper.getBundleInstance(baseName, rootLocale, root, true);
+                    rt = ROOT_JAVA;
+                }catch(MissingResourceException e){
+                    //throw away the exception
+                }
+            }
+
+            rootType = new Integer(rt);
+            m.put(baseName, rootType);
+        }
+
+        return rootType.intValue();
+    }
+
+    private static void setRootType(String baseName, int rootType)
+    {
+        Integer rt = new Integer(rootType);
+        Map m = null;
+
+        if (ROOT_CACHE != null) {
+            m = (Map) ROOT_CACHE.get();
+        } else {
+            m = new HashMap();
+            ROOT_CACHE = new SoftReference(m);
+        }
+
+        m.put(baseName, rt);
+    }
+
+    /**
+     * Loads a new resource bundle for the give base name, locale and class loader.
+     * Optionally will disable loading of fallback bundles.
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @param disableFallback disables loading of fallback lookup chain
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    protected static UResourceBundle instantiateBundle(String baseName, String localeName,
+                                                       ClassLoader root, boolean disableFallback){
+        UResourceBundle b = null;
+        int rootType = getRootType(baseName, root);
+
+        ULocale defaultLocale = ULocale.getDefault();
+
+        switch (rootType)
+        {
+        case ROOT_ICU:
+            if(disableFallback) {
+                String fullName = ICUResourceBundleReader.getFullName(baseName, localeName);
+                synchronized(cacheKey){
+                    cacheKey.setKeyValues(root, fullName, defaultLocale);
+                    b = loadFromCache(cacheKey);
+                }
+
+                if (b == null) {
+                    b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+                    //cacheKey.setKeyValues(root, fullName, defaultLocale);
+                    addToCache(cacheKey, b);
+                }
+            } else {
+                b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+            }
+
+            return b;
+
+        case ROOT_JAVA:
+            return ResourceBundleWrapper.getBundleInstance(baseName, localeName, root, disableFallback);
+
+        default:
+            try{
+                b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+                setRootType(baseName, ROOT_ICU);
+            }catch(MissingResourceException ex){
+                b = ResourceBundleWrapper.getBundleInstance(baseName, localeName, root, disableFallback);
+                setRootType(baseName, ROOT_JAVA);
+            }
+            return b;
+        }
+    }
+
+
+    /**
+     * Returns a binary data from a binary resource.
+     *
+     * @return a pointer to a chuck of unsigned bytes which live in a memory mapped/DLL file.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public ByteBuffer getBinary() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a string from a string resource type
+     *
+     * @return a string
+     * @see #getBinary()
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String getString() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a string array from a array resource type
+     *
+     * @return a string
+     * @see #getString()
+     * @see #getIntVector
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String[] getStringArray() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a binary data from a binary resource.
+     *
+     * @param ba  The byte array to write the bytes to. A null variable is OK.
+     * @return an array bytes containing the binary data from the resource.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public byte[] getBinary(byte[] ba) {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a 32 bit integer array from a resource.
+     *
+     * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file.
+     * @see #getBinary()
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int[] getIntVector() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a signed integer from a resource.
+     *
+     * @return an integer value
+     * @see #getIntVector
+     * @see #getBinary()
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int getInt() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a unsigned integer from a resource.
+     * This integer is originally 28 bit and the sign gets propagated.
+     *
+     * @return an integer value
+     * @see #getIntVector
+     * @see #getBinary()
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int getUInt() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a resource in a given resource that has a given key.
+     *
+     * @param aKey               a key associated with the wanted resource
+     * @return                  a resource bundle object representing the resource
+     * @throws MissingResourceException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle get(String aKey) {
+        UResourceBundle obj = handleGet(aKey, null, this);
+        if (obj == null) {
+            UResourceBundle res = this;
+            while ((res = res.getParent()) != null && obj == null) {
+                //call the get method to recursively fetch the resource
+                obj = res.handleGet(aKey, null, this);
+            }
+            if (obj == null) {
+                String fullName = ICUResourceBundleReader.getFullName(
+                        getBaseName(), getLocaleID());
+                throw new MissingResourceException(
+                        "Can't find resource for bundle " + fullName + ", key "
+                                + aKey, this.getClass().getName(), aKey);
+            }
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(getLocaleID());
+        return obj;
+    }
+
+    /**
+     * Returns the string in a given resource at the specified index.
+     *
+     * @param index            an index to the wanted string.
+     * @return                  a string which lives in the resource.
+     * @throws IndexOutOfBoundsException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String getString(int index) {
+        ICUResourceBundle temp = (ICUResourceBundle)get(index);
+        if (temp.getType() == STRING) {
+            return temp.getString();
+        }
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns the resource in a given resource at the specified index.
+     *
+     * @param index             an index to the wanted resource.
+     * @return                  the sub resource UResourceBundle object
+     * @throws IndexOutOfBoundsException
+     * @throws MissingResourceException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle get(int index) {
+        UResourceBundle obj = handleGet(index, null, this);
+        if (obj == null) {
+            obj = (ICUResourceBundle) getParent();
+            if (obj != null) {
+                obj = obj.get(index);
+            }
+            if (obj == null)
+                throw new MissingResourceException(
+                        "Can't find resource for bundle "
+                                + this.getClass().getName() + ", key "
+                                + getKey(), this.getClass().getName(), getKey());
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(getLocaleID());
+        return obj;
+    }
+    /**
+     * Returns the keys in this bundle as an enumeration
+     * @return an enumeration containing key strings
+     * @stable ICU 3.8
+     */
+    public Enumeration getKeys() {
+        initKeysVector();
+        return keys.elements();
+    }
+
+    private Vector keys = null;
+    private synchronized void initKeysVector(){
+        if(keys!=null){
+            return;
+        }
+        //ICUResourceBundle current = this;
+        keys = new Vector();
+        Enumeration e = this.handleGetKeys();
+        while(e.hasMoreElements()){
+            String elem = (String)e.nextElement();
+            if(!keys.contains(elem)){
+                keys.add(elem);
+            }
+        }
+    }
+
+    /**
+     * Returns the size of a resource. Size for scalar types is always 1,
+     * and for vector/table types is the number of child resources.
+     * <br><b><font color='red'>Warning: </font></b> Integer array is treated as a scalar type. There are no
+     *          APIs to access individual members of an integer array. It
+     *          is always returned as a whole.
+     * @return number of resources in a given resource.
+     * @stable ICU 3.8
+     */
+    public int getSize() {
+        return size;
+    }
+
+    /**
+     * Returns the type of a resource.
+     * Available types are {@link #INT INT}, {@link #ARRAY ARRAY},
+     * {@link #BINARY BINARY}, {@link #INT_VECTOR INT_VECTOR},
+     * {@link #STRING STRING}, {@link #TABLE TABLE}.
+     *
+     * @return type of the given resource.
+     * @stable ICU 3.8
+     */
+    public int getType() {
+        int type = ICUResourceBundle.RES_GET_TYPE(resource);
+        if(type==TABLE32){
+            return TABLE; //Mask the table32's real type
+        }
+        return type;
+    }
+
+    /**
+     * Return the version number associated with this UResourceBundle as an
+     * VersionInfo object.
+     * @return VersionInfo object containing the version of the bundle
+     * @stable ICU 3.8
+     */
+    public VersionInfo getVersion() {
+        return null;
+    }
+
+    /**
+     * Returns the iterator which iterates over this
+     * resource bundle
+     * @return UResourceBundleIterator that iterates over the resources in the bundle
+     * @stable ICU 3.8
+     */
+    public UResourceBundleIterator getIterator() {
+        return new UResourceBundleIterator(this);
+    }
+    /**
+     * Returns the key associated with a given resource. Not all the resources have a key - only
+     * those that are members of a table.
+     * @return a key associated to this resource, or null if it doesn't have a key
+     * @stable ICU 3.8
+     */
+    public String getKey() {
+        return key;
+    }
+    /**
+     * Resource type constant for "no resource".
+     * @stable ICU 3.8
+     */
+    public static final int NONE = -1;
+
+    /**
+     * Resource type constant for strings.
+     * @stable ICU 3.8
+     */
+    public static final int STRING = 0;
+
+    /**
+     * Resource type constant for binary data.
+     * @stable ICU 3.8
+     */
+    public static final int BINARY = 1;
+
+    /**
+     * Resource type constant for tables of key-value pairs.
+     * @stable ICU 3.8
+     */
+    public static final int TABLE = 2;
+
+    /**
+     * Resource type constant for aliases;
+     * internally stores a string which identifies the actual resource
+     * storing the data (can be in a different resource bundle).
+     * Resolved internally before delivering the actual resource through the API.
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int ALIAS = 3;
+
+    /**
+     * Internal use only.
+     * Alternative resource type constant for tables of key-value pairs.
+     * Never returned by getType().
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int TABLE32 = 4;
+
+    /**
+     * Resource type constant for a single 28-bit integer, interpreted as
+     * signed or unsigned by the getInt() function.
+     * @see #getInt
+     * @stable ICU 3.8
+     */
+    public static final int INT = 7;
+
+    /**
+     * Resource type constant for arrays of resources.
+     * @stable ICU 3.8
+     */
+    public static final int ARRAY = 8;
+
+    /**
+     * Resource type constant for vectors of 32-bit integers.
+     * @see #getIntVector
+     * @stable ICU 3.8
+     */
+    public static final int INT_VECTOR = 14;
+
+    //====== protected members ==============
+    /**
+     * Data member where the subclasses store the key
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected String key;
+    /**
+     * Data member where the subclasses store the size of resources
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int size = 1;
+    /**
+     * Data member where the subclasses store the offset within resource data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected long resource = RES_BOGUS;
+    /**
+     * Data member where the subclasses store whether the resource is top level
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected boolean isTopLevel = false;
+
+    private static final long RES_BOGUS = 0xffffffff;
+
+    /**
+     * Actual worker method for fetching a resource based on the given key.
+     * Sub classes must override this method if they support resources with keys.
+     * @param aKey the key string of the resource to be fetched
+     * @param table hashtable object to hold references of resources already seen
+     * @param requested the original resource bundle object on which the get method was invoked.
+     *                  The requested bundle and the bundle on which this method is invoked
+     *                  are the same, except in the cases where aliases are involved.
+     * @return UResourceBundle a resource associated with the key
+     * @stable ICU 3.8
+     */
+    protected UResourceBundle handleGet(String aKey, HashMap table, UResourceBundle requested) {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching a resource based on the given index.
+     * Sub classes must override this method if they support arrays of resources.
+     * @param index the index of the resource to be fetched
+     * @param table hashtable object to hold references of resources already seen
+     * @param requested the original resource bundle object on which the get method was invoked.
+     *                  The requested bundle and the bundle on which this method is invoked
+     *                  are the same, except in the cases where aliases are involved.
+     * @return UResourceBundle a resource associated with the index
+     * @stable ICU 3.8
+     */
+    protected UResourceBundle handleGet(int index, HashMap table, UResourceBundle requested) {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching the array of strings in a resource.
+     * Sub classes must override this method if they support arrays of strings.
+     * @return String[] An array of strings containing strings
+     * @stable ICU 3.8
+     */
+    protected String[] handleGetStringArray() {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching the keys of resources contained in the resource.
+     * Sub classes must override this method if they support keys and associated resources.
+     *
+     * @return Enumeration An enumeration of all the keys in this resource.
+     * @stable ICU 3.8
+     */
+    protected Enumeration handleGetKeys(){
+        Vector resKeys = new Vector();
+        UResourceBundle item = null;
+        for (int i = 0; i < size; i++) {
+            item = get(i);
+            resKeys.add(item.getKey());
+        }
+        return resKeys.elements();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    // this method is declared in ResourceBundle class
+    // so cannot change the signature
+    // Override this method
+    protected Object handleGetObject(String aKey) {
+        return handleGetObjectImpl(aKey, this);
+    }
+
+    /**
+     * Override the superclass method
+     */
+    // To facilitate XPath style aliases we need a way to pass the reference
+    // to requested locale. The only way I could figure out is to implement
+    // the look up logic here. This has a disadvantage that if the client
+    // loads an ICUResourceBundle, calls ResourceBundle.getObject method
+    // with a key that does not exist in the bundle then the lookup is
+    // done twice before throwing a MissingResourceExpection.
+    private Object handleGetObjectImpl(String aKey, UResourceBundle requested) {
+        Object obj = resolveObject(aKey, requested);
+        if (obj == null) {
+            UResourceBundle parentBundle = getParent();
+            if (parentBundle != null) {
+                obj = parentBundle.handleGetObjectImpl(aKey, requested);
+            }
+            if (obj == null)
+                throw new MissingResourceException(
+                    "Can't find resource for bundle "
+                    + this.getClass().getName() + ", key " + aKey,
+                    this.getClass().getName(), aKey);
+        }
+        return obj;
+    }
+
+    // Routine for figuring out the type of object to be returned
+    // string or string array
+    private Object resolveObject(String aKey, UResourceBundle requested) {
+        if (getType() == STRING) {
+            return getString();
+        }
+        UResourceBundle obj = handleGet(aKey, null, requested);
+        if (obj != null) {
+            if (obj.getType() == STRING) {
+                return obj.getString();
+            }
+            try {
+                if (obj.getType() == ARRAY) {
+                    return obj.handleGetStringArray();
+                }
+            } catch (UResourceTypeMismatchException ex) {
+                return obj;
+            }
+        }
+        return obj;
+    }
+
+    /**
+     * This method is for setting the loading status of the resource.
+     * The status is analogous to the warning status in ICU4C.
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected abstract void setLoadingStatus(int newStatus);
+}
diff --git a/src/com/ibm/icu/util/UResourceBundleIterator.java b/src/com/ibm/icu/util/UResourceBundleIterator.java
new file mode 100644
index 0000000..1028226
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceBundleIterator.java
@@ -0,0 +1,95 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.util.NoSuchElementException;
+
+/**
+ * <p>Class for enabling iteration over UResourceBundle objects.
+ * Example of use:<br>
+ * <pre>
+ * ICUResourceBundleIterator iterator = resB.getIterator();
+ * ICUResourceBundle temp;
+ * while (iterator.hasNext()) {
+ *    temp = iterartor.next();  
+ *    int type = temp.getType();
+ *    switch(type){
+ *      case UResourceBundle.STRING:
+ *          str = temp.getString();
+ *          break;
+ *      case UResourceBundle.INT:
+ *          integer = temp.getInt();
+ *          break;
+ *     .....
+ *    }
+ *   // do something interesting with data collected
+ * }
+ * </pre>
+ * @author ram
+ * @stable ICU 3.8
+ */
+public class UResourceBundleIterator{
+    private UResourceBundle bundle;
+    private int index = 0;
+    private int size = 0;
+    /**
+     * Construct a resource bundle iterator for the
+     * given resource bundle
+     * 
+     * @param bndl The resource bundle to iterate over
+     * @stable ICU 3.8
+     */
+    public UResourceBundleIterator(UResourceBundle bndl){
+        bundle = bndl;   
+        size = bundle.getSize();
+    }
+
+    /**
+     * Returns the next element of this iterator if this iterator object has at least one more element to provide
+     * @return the UResourceBundle object
+     * @throws NoSuchElementException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle next()throws NoSuchElementException{
+        if(index<size){
+            return bundle.get(index++);
+        }
+        throw new NoSuchElementException();
+    }
+    /**
+     * Returns the next String of this iterator if this iterator object has at least one more element to provide
+     * @return the UResourceBundle object
+     * @throws NoSuchElementException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String nextString()throws NoSuchElementException, UResourceTypeMismatchException{
+        if(index<size){
+            return bundle.getString(index++);
+        }  
+        throw new NoSuchElementException();
+    }
+    
+    /**
+     * Resets the internal context of a resource so that iteration starts from the first element.
+     * @stable ICU 3.8
+     */
+    public void reset(){
+        //reset the internal context   
+        index = 0;
+    }
+    
+    /**
+     * Checks whether the given resource has another element to iterate over.
+     * @return TRUE if there are more elements, FALSE if there is no more elements
+     * @stable ICU 3.8
+     */
+    public boolean hasNext(){
+        return index < size;   
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/UResourceTypeMismatchException.java b/src/com/ibm/icu/util/UResourceTypeMismatchException.java
new file mode 100644
index 0000000..8f2810b
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceTypeMismatchException.java
@@ -0,0 +1,28 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2006, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * Exception thrown when the requested resource type 
+ * is not the same type as the available resource
+ * @author ram
+ * @stable ICU 3.0
+ */
+public class UResourceTypeMismatchException extends RuntimeException {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 1286569061095434541L;
+    
+    /**
+     * Constuct the exception with the given message
+     * @param msg the error message for this exception
+     * @stable ICU 3.0
+     */
+    public UResourceTypeMismatchException(String msg){
+        super(msg);       
+    }
+}
diff --git a/src/com/ibm/icu/util/UniversalTimeScale.java b/src/com/ibm/icu/util/UniversalTimeScale.java
new file mode 100644
index 0000000..f297e21
--- /dev/null
+++ b/src/com/ibm/icu/util/UniversalTimeScale.java
@@ -0,0 +1,661 @@
+/*
+ *********************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                  *
+ *********************************************************************************
+ *
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.math.BigDecimal;
+import java.lang.IllegalArgumentException;
+
+/** 
+ * There are quite a few different conventions for binary datetime, depending on different
+ * platforms and protocols. Some of these have severe drawbacks. For example, people using
+ * Unix time (seconds since Jan 1, 1970, usually in a 32-bit integer)
+ * think that they are safe until near the year 2038.
+ * But cases can and do arise where arithmetic manipulations causes serious problems. Consider
+ * the computation of the average of two datetimes, for example: if one calculates them with
+ * <code>averageTime = (time1 + time2)/2</code>, there will be overflow even with dates
+ * beginning in 2004. Moreover, even if these problems don't occur, there is the issue of
+ * conversion back and forth between different systems.
+ *
+ * <p>Binary datetimes differ in a number of ways: the datatype, the unit,
+ * and the epoch (origin). We refer to these as time scales.</p>
+ *
+ * <p>ICU implements a universal time scale that is similar to the
+ * .NET framework's System.DateTime. The universal time scale is a
+ * 64-bit integer that holds ticks since midnight, January 1st, 0001.
+ * (One tick is 100 nanoseconds.)
+ * Negative values are supported. This has enough range to guarantee that
+ * calculations involving dates around the present are safe.</p>
+ *
+ * <p>The universal time scale always measures time according to the
+ * proleptic Gregorian calendar. That is, the Gregorian calendar's
+ * leap year rules are used for all times, even before 1582 when it was
+ * introduced. (This is different from the default ICU calendar which
+ * switches from the Julian to the Gregorian calendar in 1582.
+ * See GregorianCalendar.setGregorianChange() and ucal_setGregorianChange().)</p>
+ *
+ * ICU provides conversion functions to and from all other major time
+ * scales, allowing datetimes in any time scale to be converted to the
+ * universal time scale, safely manipulated, and converted back to any other
+ * datetime time scale.</p>
+ *
+ * <p>For more details and background, see the
+ * <a href="http://www.icu-project.org/userguide/universalTimeScale.html">Universal Time Scale</a>
+ * chapter in the ICU User Guide.</p>
+ *
+ * @stable ICU 3.2
+ */
+
+public final class UniversalTimeScale
+{
+    /**
+     * Used in the JDK. Data is a <code>long</code>. Value
+     * is milliseconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int JAVA_TIME = 0;
+
+    /**
+     * Used in Unix systems. Data is an <code>int</code> or a <code>long</code>. Value
+     * is seconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int UNIX_TIME = 1;
+
+    /**
+     * Used in the ICU4C. Data is a <code>double</code>. Value
+     * is milliseconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int ICU4C_TIME = 2;
+
+    /**
+     * Used in Windows for file times. Data is a <code>long</code>. Value
+     * is ticks (1 tick == 100 nanoseconds) since January 1, 1601.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int WINDOWS_FILE_TIME = 3;
+
+    /**
+     * Used in the .NET framework's <code>System.DateTime</code> structure.
+     * Data is a <code>long</code>. Value is ticks (1 tick == 100 nanoseconds) since January 1, 0001.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int DOTNET_DATE_TIME = 4;
+
+    /**
+     * Used in older Macintosh systems. Data is an <code>int</code>. Value
+     * is seconds since January 1, 1904.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAC_OLD_TIME = 5;
+
+    /**
+     * Used in the JDK. Data is a <code>double</code>. Value
+     * is milliseconds since January 1, 2001.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAC_TIME = 6;
+
+    /**
+     * Used in Excel. Data is a <code>?unknown?</code>. Value
+     * is days since December 31, 1899.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EXCEL_TIME = 7;
+
+    /**
+     * Used in DB2. Data is a <code>?unknown?</code>. Value
+     * is days since December 31, 1899.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int DB2_TIME = 8;
+
+    /**
+     * Data is a <code>long</code>. Value is microseconds since January 1, 1970.
+     * Similar to Unix time (linear value from 1970) and struct timeval
+     * (microseconds resolution).
+     *
+     * @stable ICU 3.8
+     */
+    public static final int UNIX_MICROSECONDS_TIME = 9;
+    
+    /**
+     * This is the first unused time scale value.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAX_SCALE = 10;
+    
+    /**
+     * The constant used to select the units value
+     * for a time scale.
+     * 
+     *
+     * @stable ICU 3.2
+     */
+    public static final int UNITS_VALUE = 0;
+    
+    /**
+     * The constant used to select the epoch offset value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EPOCH_OFFSET_VALUE = 1;
+    
+    /**
+     * The constant used to select the minimum from value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int FROM_MIN_VALUE = 2;
+    
+    /**
+     * The constant used to select the maximum from value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int FROM_MAX_VALUE = 3;
+    
+    /**
+     * The constant used to select the minimum to value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int TO_MIN_VALUE = 4;
+    
+    /**
+     * The constant used to select the maximum to value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int TO_MAX_VALUE = 5;
+    
+    /**
+     * The constant used to select the epoch plus one value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT. May not
+     * actually be equal to the epoch offset value plus one.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EPOCH_OFFSET_PLUS_1_VALUE = 6;
+    
+    /**
+     * The constant used to select the epoch offset minus one value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT. May not
+     * actually be equal to the epoch offset value minus one.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int EPOCH_OFFSET_MINUS_1_VALUE = 7;
+    
+    /**
+     * The constant used to select the units round value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int UNITS_ROUND_VALUE = 8;
+    
+    /**
+     * The constant used to select the minimum safe rounding value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MIN_ROUND_VALUE = 9;
+    
+    /**
+     * The constant used to select the maximum safe rounding value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MAX_ROUND_VALUE = 10;
+    
+    /**
+     * The number of time scale values.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MAX_SCALE_VALUE = 11;
+    
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+    
+    /**
+     * This class holds the data that describes a particular
+     * time scale.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static final class TimeScaleData
+    {
+        TimeScaleData(long theUnits, long theEpochOffset,
+                       long theToMin, long theToMax,
+                       long theFromMin, long theFromMax)
+        {
+            units      = theUnits;
+            unitsRound = theUnits / 2;
+            
+            minRound = Long.MIN_VALUE + unitsRound;
+            maxRound = Long.MAX_VALUE - unitsRound;
+                        
+            epochOffset   = theEpochOffset / theUnits;
+            
+            if (theUnits == 1) {
+                epochOffsetP1 = epochOffsetM1 = epochOffset;
+            } else {
+                epochOffsetP1 = epochOffset + 1;
+                epochOffsetM1 = epochOffset - 1;
+            }
+            
+            toMin = theToMin;
+            toMax = theToMax;
+            
+            fromMin = theFromMin;
+            fromMax = theFromMax;
+        }
+        
+        long units;
+        long epochOffset;
+        long fromMin;
+        long fromMax;
+        long toMin;
+        long toMax;
+        
+        long epochOffsetP1;
+        long epochOffsetM1;
+        long unitsRound;
+        long minRound;
+        long maxRound;
+    }
+    
+    private static final TimeScaleData[] timeScaleTable = {
+        new TimeScaleData(milliseconds, 621355968000000000L, -9223372036854774999L, 9223372036854774999L, -984472800485477L,         860201606885477L), // JAVA_TIME
+        new TimeScaleData(seconds,      621355968000000000L, -9223372036854775808L, 9223372036854775807L, -984472800485L,               860201606885L), // UNIX_TIME
+        new TimeScaleData(milliseconds, 621355968000000000L, -9223372036854774999L, 9223372036854774999L, -984472800485477L,         860201606885477L), // ICU4C_TIME
+        new TimeScaleData(ticks,        504911232000000000L, -8718460804854775808L, 9223372036854775807L, -9223372036854775808L, 8718460804854775807L), // WINDOWS_FILE_TIME
+        new TimeScaleData(ticks,        000000000000000000L, -9223372036854775808L, 9223372036854775807L, -9223372036854775808L, 9223372036854775807L), // DOTNET_DATE_TIME
+        new TimeScaleData(seconds,      600527520000000000L, -9223372036854775808L, 9223372036854775807L, -982389955685L,               862284451685L), // MAC_OLD_TIME
+        new TimeScaleData(seconds,      631139040000000000L, -9223372036854775808L, 9223372036854775807L, -985451107685L,               859223299685L), // MAC_TIME
+        new TimeScaleData(days,         599265216000000000L, -9223372036854775808L, 9223372036854775807L, -11368793L,                        9981605L), // EXCEL_TIME
+        new TimeScaleData(days,         599265216000000000L, -9223372036854775808L, 9223372036854775807L, -11368793L,                        9981605L), // DB2_TIME
+        new TimeScaleData(microseconds, 621355968000000000L, -9223372036854775804L, 9223372036854775804L, -984472800485477580L,   860201606885477580L)  // UNIX_MICROSECONDS_TIME
+    };
+    
+    
+    /*
+     * Prevent construction of this class.
+     */
+    ///CLOVER:OFF
+    private UniversalTimeScale()
+    {
+        // nothing to do
+    }
+    ///CLOVER:ON
+    
+    /**
+     * Convert a <code>long</code> datetime from the given time scale to the universal time scale.
+     *
+     * @param otherTime The <code>long</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static long from(long otherTime, int timeScale)
+    {
+        TimeScaleData data = fromRangeCheck(otherTime, timeScale);
+                
+        return (otherTime + data.epochOffset) * data.units;
+    }
+
+    /**
+     * Convert a <code>double</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>double</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(double otherTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal other       = new BigDecimal(String.valueOf(otherTime));
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return other.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a <code>long</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>long</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(long otherTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal other       = new BigDecimal(otherTime);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return other.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a <code>BigDecimal</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>BigDecimal</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(BigDecimal otherTime, int timeScale)
+    {
+        TimeScaleData data = getTimeScaleData(timeScale);
+        
+        BigDecimal units = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return otherTime.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a datetime from the universal time scale stored as a <code>BigDecimal</code> to a
+     * <code>long</code> in the given time scale.
+     *
+     * Since this calculation requires a divide, we must round. The straight forward
+     * way to round by adding half of the divisor will push the sum out of range for values
+     * within have the divisor of the limits of the precision of a <code>long</code>. To get around this, we do
+     * the rounding like this:
+     * 
+     * <p><code>
+     * (universalTime - units + units/2) / units + 1
+     * </code>
+     * 
+     * <p>
+     * (i.e. we subtract units first to guarantee that we'll still be in range when we
+     * add <code>units/2</code>. We then need to add one to the quotent to make up for the extra subtraction.
+     * This simplifies to:
+     * 
+     * <p><code>
+     * (universalTime - units/2) / units - 1
+     * </code>
+     * 
+     * <p>
+     * For negative values to round away from zero, we need to flip the signs:
+     * 
+     * <p><code>
+     * (universalTime + units/2) / units + 1
+     * </code>
+     * 
+     * <p>
+     * Since we also need to subtract the epochOffset, we fold the <code>+/- 1</code>
+     * into the offset value. (i.e. <code>epochOffsetP1</code>, <code>epochOffsetM1</code>.)
+     * 
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static long toLong(long universalTime, int timeScale)
+    {
+        TimeScaleData data = toRangeCheck(universalTime, timeScale);
+        
+        if (universalTime < 0) {
+            if (universalTime < data.minRound) {
+                return (universalTime + data.unitsRound) / data.units - data.epochOffsetP1;
+            }
+            
+            return (universalTime - data.unitsRound) / data.units - data.epochOffset;
+        }
+        
+        if (universalTime > data.maxRound) {
+            return (universalTime - data.unitsRound) / data.units - data.epochOffsetM1;
+        }
+        
+        return (universalTime + data.unitsRound) / data.units - data.epochOffset;
+    }
+    
+    /**
+     * Convert a datetime from the universal time scale to a <code>BigDecimal</code> in the given time scale.
+     *
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal toBigDecimal(long universalTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal universal   = new BigDecimal(universalTime);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universal.divide(units, BigDecimal.ROUND_HALF_UP).subtract(epochOffset);
+    }
+    
+    /**
+     * Convert a datetime from the universal time scale to a <code>BigDecimal</code> in the given time scale.
+     *
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal toBigDecimal(BigDecimal universalTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universalTime.divide(units, BigDecimal.ROUND_HALF_UP).subtract(epochOffset);
+    }
+    
+    /**
+     * Return the <code>TimeScaleData</code> object for the given time
+     * scale.
+     * 
+     * @param scale - the time scale
+     * 
+     * @return the <code>TimeScaleData</code> object for the given time scale
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static TimeScaleData getTimeScaleData(int scale)
+    {
+        if (scale < 0 || scale >= MAX_SCALE) {
+            throw new IllegalArgumentException("scale out of range: " + scale);
+        }
+        
+        return timeScaleTable[scale];
+    }
+    
+    /**
+     * Get a value associated with a particular time scale.
+     * 
+     * @param scale - the time scale
+     * @param value - a constant representing the value to get
+     * 
+     * @return - the value.
+     * 
+     * @stable ICU 3.2
+     */
+    public static long getTimeScaleValue(int scale, int value)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+        
+        switch (value)
+        {
+        case UNITS_VALUE:
+            return data.units;
+            
+        case EPOCH_OFFSET_VALUE:
+            return data.epochOffset;
+        
+        case FROM_MIN_VALUE:
+            return data.fromMin;
+            
+        case FROM_MAX_VALUE:
+            return data.fromMax;
+            
+        case TO_MIN_VALUE:
+            return data.toMin;
+            
+        case TO_MAX_VALUE:
+            return data.toMax;
+            
+        case EPOCH_OFFSET_PLUS_1_VALUE:
+            return data.epochOffsetP1;
+            
+        case EPOCH_OFFSET_MINUS_1_VALUE:
+            return data.epochOffsetM1;
+            
+        case UNITS_ROUND_VALUE:
+            return data.unitsRound;
+        
+        case MIN_ROUND_VALUE:
+            return data.minRound;
+            
+        case MAX_ROUND_VALUE:
+            return data.maxRound;
+            
+        default:
+            throw new IllegalArgumentException("value out of range: " + value);
+        }
+    }
+    
+    private static TimeScaleData toRangeCheck(long universalTime, int scale)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+          
+        if (universalTime >= data.toMin && universalTime <= data.toMax) {
+            return data;
+        }
+        
+        throw new IllegalArgumentException("universalTime out of range:" + universalTime);
+    }
+    
+    private static TimeScaleData fromRangeCheck(long otherTime, int scale)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+          
+        if (otherTime >= data.fromMin && otherTime <= data.fromMax) {
+            return data;
+        }
+        
+        throw new IllegalArgumentException("otherTime out of range:" + otherTime);
+    }
+    
+    /**
+     * Convert a time in the Universal Time Scale into another time
+     * scale. The division used to do the conversion rounds down.
+     * 
+     * NOTE: This is an internal routine used by the tool that
+     * generates the to and from limits. Use it at your own risk.
+     * 
+     * @param universalTime the time in the Universal Time scale
+     * @param timeScale the time scale to convert to
+     * @return the time in the given time scale
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static BigDecimal toBigDecimalTrunc(BigDecimal universalTime, int timeScale)
+    {
+        TimeScaleData data = getTimeScaleData(timeScale);
+        BigDecimal units = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universalTime.divide(units, BigDecimal.ROUND_DOWN).subtract(epochOffset);
+    }
+}
diff --git a/src/com/ibm/icu/util/VTimeZone.java b/src/com/ibm/icu/util/VTimeZone.java
new file mode 100644
index 0000000..fef583d
--- /dev/null
+++ b/src/com/ibm/icu/util/VTimeZone.java
@@ -0,0 +1,2032 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.util.DateTimeRule;
+
+/**
+ * <code>VTimeZone</code> is a class implementing RFC2445 VTIMEZONE.  You can create a
+ * <code>VTimeZone</code> instance from a time zone ID supported by <code>TimeZone</code>.
+ * With the <code>VTimeZone</code> instance created from the ID, you can write out the rule
+ * in RFC2445 VTIMEZONE format.  Also, you can create a <code>VTimeZone</code> instance
+ * from RFC2445 VTIMEZONE data stream, which allows you to calculate time
+ * zone offset by the rules defined by the data.<br><br>
+ * 
+ * Note: The consumer of this class reading or writing VTIMEZONE data is responsible to
+ * decode or encode Non-ASCII text.  Methods reading/writing VTIMEZONE data in this class
+ * do nothing with MIME encoding.
+ * 
+ * @stable ICU 3.8
+ */
+public class VTimeZone extends BasicTimeZone {
+
+    private static final long serialVersionUID = -6851467294127795902L;
+
+    /**
+     * Create a <code>VTimeZone</code> instance by the time zone ID.
+     * 
+     * @param tzid The time zone ID, such as America/New_York
+     * @return A <code>VTimeZone</code> initialized by the time zone ID, or null
+     * when the ID is unknown.
+     * 
+     * @stable ICU 3.8
+     */
+    public static VTimeZone create(String tzid) {
+        VTimeZone vtz = new VTimeZone();
+        vtz.tz = (BasicTimeZone)TimeZone.getTimeZone(tzid, TimeZone.TIMEZONE_ICU);
+        vtz.olsonzid = vtz.tz.getID();
+        vtz.setID(tzid);
+
+        return vtz;
+    }
+    
+    /**
+     * Create a <code>VTimeZone</code> instance by RFC2445 VTIMEZONE data.
+     * 
+     * @param reader The Reader for VTIMEZONE data input stream
+     * @return A <code>VTimeZone</code> initialized by the VTIMEZONE data or
+     * null if failed to load the rule from the VTIMEZONE data.
+     * 
+     * @stable ICU 3.8
+     */
+    public static VTimeZone create(Reader reader) {
+        VTimeZone vtz = new VTimeZone();
+        if (vtz.load(reader)) {
+            return vtz;
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+            int milliseconds) {
+        return tz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        tz.getOffset(date, local, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        tz.getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        return tz.getRawOffset();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean inDaylightTime(Date date) {
+        return tz.inDaylightTime(date);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public void setRawOffset(int offsetMillis) {
+        tz.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean useDaylightTime() {
+        return tz.useDaylightTime();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return tz.hasSameRules(other);
+    }
+
+    /**
+     * Gets the RFC2445 TZURL property value.  When a <code>VTimeZone</code> instance was created from
+     * VTIMEZONE data, the value is set by the TZURL property value in the data.  Otherwise,
+     * the initial value is null.
+     * 
+     * @return The RFC2445 TZURL property value
+     * 
+     * @stable ICU 3.8
+     */
+    public String getTZURL() {
+        return tzurl;
+    }
+
+    /**
+     * Sets the RFC2445 TZURL property value.
+     * 
+     * @param url The TZURL property value.
+     * 
+     * @stable ICU 3.8
+     */
+    public void setTZURL(String url) {
+        tzurl = url;
+    }
+
+    /**
+     * Gets the RFC2445 LAST-MODIFIED property value.  When a <code>VTimeZone</code> instance was created
+     * from VTIMEZONE data, the value is set by the LAST-MODIFIED property value in the data.
+     * Otherwise, the initial value is null.
+     * 
+     * @return The Date represents the RFC2445 LAST-MODIFIED date.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getLastModified() {
+        return lastmod;
+    }
+
+    /**
+     * Sets the date used for RFC2445 LAST-MODIFIED property value.
+     * 
+     * @param date The <code>Date</code> object represents the date for RFC2445 LAST-MODIFIED property value.
+     * 
+     * @stable ICU 3.8
+     */
+    public void setLastModified(Date date) {
+        lastmod = date;
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data for this time zone
+     * 
+     * @param writer A <code>Writer</code> used for the output
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void write(Writer writer) throws IOException {
+        BufferedWriter bw = new BufferedWriter(writer);
+        if (vtzlines != null) {
+            Iterator it = vtzlines.iterator();
+            while (it.hasNext()) {
+                String line = (String)it.next();
+                if (line.startsWith(ICAL_TZURL + COLON)) {
+                    if (tzurl != null) {
+                        bw.write(ICAL_TZURL);
+                        bw.write(COLON);
+                        bw.write(tzurl);
+                        bw.write(NEWLINE);
+                    }
+                } else if (line.startsWith(ICAL_LASTMOD + COLON)) {
+                    if (lastmod != null) {
+                        bw.write(ICAL_LASTMOD);
+                        bw.write(COLON);
+                        bw.write(getUTCDateTimeString(lastmod.getTime()));
+                        bw.write(NEWLINE);
+                    }
+                } else {
+                    bw.write(line);
+                    bw.write(NEWLINE);
+                }
+            }
+            bw.flush();
+        } else {
+            String[] customProperties = null;
+            if (olsonzid != null && ICU_TZVERSION != null) {
+                customProperties = new String[1];
+                customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + "]";
+            }
+            writeZone(writer, tz, customProperties);
+        }
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data applicable for dates after
+     * the specified start time.
+     * 
+     * @param writer    The <code>Writer</code> used for the output
+     * @param start     The start time
+     * 
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void write(Writer writer, long start) throws IOException {
+        // Extract rules applicable to dates after the start time
+        TimeZoneRule[] rules = tz.getTimeZoneRules(start);
+
+        // Create a RuleBasedTimeZone with the subset rule
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID(), (InitialTimeZoneRule)rules[0]);
+        for (int i = 1; i < rules.length; i++) {
+            rbtz.addTransitionRule(rules[i]);
+        }
+        String[] customProperties = null;
+        if (olsonzid != null && ICU_TZVERSION != null) {
+            customProperties = new String[1];
+            customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + 
+                "/Partial@" + start + "]";
+        }
+        writeZone(writer, rbtz, customProperties);
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data applicable near the specified date.
+     * Some common iCalendar implementations can only handle a single time
+     * zone property or a pair of standard and daylight time properties using
+     * BYDAY rule with day of week (such as BYDAY=1SUN).  This method produce
+     * the VTIMEZONE data which can be handled these implementations.  The rules
+     * produced by this method can be used only for calculating time zone offset
+     * around the specified date.
+     * 
+     * @param writer    The <code>Writer</code> used for the output
+     * @param time      The date
+     * 
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void writeSimple(Writer writer, long time) throws IOException {
+        // Extract simple rules
+        TimeZoneRule[] rules = tz.getSimpleTimeZoneRulesNear(time);
+
+        // Create a RuleBasedTimeZone with the subset rule
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID(), (InitialTimeZoneRule)rules[0]);
+        for (int i = 1; i < rules.length; i++) {
+            rbtz.addTransitionRule(rules[i]);
+        }
+        String[] customProperties = null;
+        if (olsonzid != null && ICU_TZVERSION != null) {
+            customProperties = new String[1];
+            customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + 
+                "/Simple@" + time + "]";
+        }
+        writeZone(writer, rbtz, customProperties);
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        return tz.getNextTransition(base, inclusive);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        return tz.getPreviousTransition(base, inclusive);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone other, long start, long end) {
+        return tz.hasEquivalentTransitions(other, start, end);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        return tz.getTimeZoneRules();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules(long start) {
+        return tz.getTimeZoneRules(start);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Object clone() {
+        VTimeZone other = (VTimeZone)super.clone();
+        other.tz = (BasicTimeZone)tz.clone();
+        return other;
+    }
+
+    // private stuff ------------------------------------------------------
+
+    private BasicTimeZone tz;
+    private List vtzlines;
+    private String olsonzid = null;
+    private String tzurl = null;
+    private Date lastmod = null;
+
+    private static String ICU_TZVERSION;
+    private static final String ICU_TZINFO_PROP = "X-TZINFO";
+
+    // Default DST savings
+    private static final int DEF_DSTSAVINGS = 60*60*1000; // 1 hour
+    
+    // Default time start
+    private static final long DEF_TZSTARTTIME = 0;
+
+    // minimum/max
+    private static final long MIN_TIME = Long.MIN_VALUE;
+    private static final long MAX_TIME = Long.MAX_VALUE;
+
+    // Symbol characters used by RFC2445 VTIMEZONE
+    private static final String COLON = ":";
+    private static final String SEMICOLON = ";";
+    private static final String EQUALS_SIGN = "=";
+    private static final String COMMA = ",";
+    private static final String NEWLINE = "\r\n";   // CRLF
+
+    // RFC2445 VTIMEZONE tokens
+    private static final String ICAL_BEGIN_VTIMEZONE = "BEGIN:VTIMEZONE";
+    private static final String ICAL_END_VTIMEZONE = "END:VTIMEZONE";
+    private static final String ICAL_BEGIN = "BEGIN";
+    private static final String ICAL_END = "END";
+    private static final String ICAL_VTIMEZONE = "VTIMEZONE";
+    private static final String ICAL_TZID = "TZID";
+    private static final String ICAL_STANDARD = "STANDARD";
+    private static final String ICAL_DAYLIGHT = "DAYLIGHT";
+    private static final String ICAL_DTSTART = "DTSTART";
+    private static final String ICAL_TZOFFSETFROM = "TZOFFSETFROM";
+    private static final String ICAL_TZOFFSETTO = "TZOFFSETTO";
+    private static final String ICAL_RDATE = "RDATE";
+    private static final String ICAL_RRULE = "RRULE";
+    private static final String ICAL_TZNAME = "TZNAME";
+    private static final String ICAL_TZURL = "TZURL";
+    private static final String ICAL_LASTMOD = "LAST-MODIFIED";
+
+    private static final String ICAL_FREQ = "FREQ";
+    private static final String ICAL_UNTIL = "UNTIL";
+    private static final String ICAL_YEARLY = "YEARLY";
+    private static final String ICAL_BYMONTH = "BYMONTH";
+    private static final String ICAL_BYDAY = "BYDAY";
+    private static final String ICAL_BYMONTHDAY = "BYMONTHDAY";
+
+    private static final String[] ICAL_DOW_NAMES = 
+    {"SU", "MO", "TU", "WE", "TH", "FR", "SA"};
+
+    // Month length in regular year
+    private static final int[] MONTHLENGTH = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+    static {
+        // Initialize ICU_TZVERSION
+        try {
+            UResourceBundle tzbundle = UResourceBundle.getBundleInstance(
+                    "com/ibm/icu/impl/data/icudt" + VersionInfo.ICU_DATA_VERSION, "zoneinfo");
+                ICU_TZVERSION = tzbundle.getString("TZVersion");
+        } catch (MissingResourceException e) {
+            ///CLOVER:OFF
+            ICU_TZVERSION = null;
+            ///CLOVER:ON
+        }
+    }
+    
+    /* Hide the constructor */
+    private VTimeZone() {
+    }
+
+    /*
+     * Read the input stream to locate the VTIMEZONE block and
+     * parse the contents to initialize this VTimeZone object.
+     * The reader skips other RFC2445 message headers.  After
+     * the parse is completed, the reader points at the beginning
+     * of the header field just after the end of VTIMEZONE block.
+     * When VTIMEZONE block is found and this object is successfully
+     * initialized by the rules described in the data, this method
+     * returns true.  Otherwise, returns false.
+     */
+    private boolean load(Reader reader) {
+        // Read VTIMEZONE block into string array
+        try {
+            vtzlines = new LinkedList();
+            boolean eol = false;
+            boolean start = false;
+            boolean success = false;
+            StringBuffer line = new StringBuffer();
+            while (true) {
+                int ch = reader.read();
+                if (ch == -1) {
+                    // end of file
+                    if (start && line.toString().startsWith(ICAL_END_VTIMEZONE)) {
+                        vtzlines.add(line.toString());
+                        success = true;
+                    }
+                    break;
+                }
+                if (ch == 0x0D) {
+                    // CR, must be followed by LF by the definition in RFC2445
+                    continue;
+                }
+
+                if (eol) {
+                    if (ch != 0x09 && ch != 0x20) {
+                        // NOT followed by TAB/SP -> new line
+                        if (start) {
+                            if (line.length() > 0) {
+                                vtzlines.add(line.toString());
+                            }
+                        }
+                        line.setLength(0);
+                        if (ch != 0x0A) {
+                            line.append((char)ch);
+                        }
+                    }
+                    eol = false;
+                } else {
+                    if (ch == 0x0A) {
+                        // LF
+                        eol = true;
+                        if (start) {
+                            if (line.toString().startsWith(ICAL_END_VTIMEZONE)) {
+                                vtzlines.add(line.toString());
+                                success = true;
+                                break;
+                            }
+                        } else {
+                            if (line.toString().startsWith(ICAL_BEGIN_VTIMEZONE)) {
+                                vtzlines.add(line.toString());
+                                line.setLength(0);
+                                start = true;
+                                eol = false;
+                            }
+                        }
+                    } else {
+                        line.append((char)ch);
+                    }
+                }
+            }
+            if (!success) {
+                return false;
+            }
+        } catch (IOException ioe) {
+            ///CLOVER:OFF
+            return false;
+            ///CLOVER:ON
+        }
+        return parse();
+    }
+
+    // parser state
+    private static final int INI = 0;   // Initial state
+    private static final int VTZ = 1;   // In VTIMEZONE
+    private static final int TZI = 2;   // In STANDARD or DAYLIGHT
+    private static final int ERR = 3;   // Error state
+
+    /*
+     * Parse VTIMEZONE data and create a RuleBasedTimeZone
+     */
+    private boolean parse() {
+        ///CLOVER:OFF
+        if (vtzlines == null || vtzlines.size() == 0) {
+            return false;
+        }
+        ///CLOVER:ON
+
+        // timezone ID
+        String tzid = null;
+
+        int state = INI;
+        boolean dst = false;    // current zone type
+        String from = null;     // current zone from offset
+        String to = null;       // current zone offset
+        String tzname = null;   // current zone name
+        String dtstart = null;  // current zone starts
+        boolean isRRULE = false;// true if the rule is described by RRULE
+        List dates = null;      // list of RDATE or RRULE strings
+        List rules = new LinkedList();   // rule list
+        int initialRawOffset = 0;  // initial offset
+        int initialDSTSavings = 0;  // initial offset
+        long firstStart = MAX_TIME; // the earliest rule start time
+
+        Iterator it = vtzlines.iterator();
+
+        while (it.hasNext()) {
+            String line = (String)it.next();
+
+            int valueSep = line.indexOf(COLON);
+            if (valueSep < 0) {
+                continue;
+            }
+            String name = line.substring(0, valueSep);
+            String value = line.substring(valueSep + 1);
+
+            switch (state) {
+            case INI:
+                if (name.equals(ICAL_BEGIN) && value.equals(ICAL_VTIMEZONE)) {
+                    state = VTZ;
+                }
+                break;
+            case VTZ:
+                if (name.equals(ICAL_TZID)) {
+                    tzid = value;
+                } else if (name.equals(ICAL_TZURL)) {
+                    tzurl = value;
+                } else if (name.equals(ICAL_LASTMOD)) {
+                    // Always in 'Z' format, so the offset argument for the parse method
+                    // can be any value.
+                    lastmod = new Date(parseDateTimeString(value, 0));
+                } else if (name.equals(ICAL_BEGIN)) {
+                    boolean isDST = value.equals(ICAL_DAYLIGHT);
+                    if (value.equals(ICAL_STANDARD) || isDST) {
+                        // tzid must be ready at this point
+                        if (tzid == null) {
+                            state = ERR;
+                            break;
+                        }
+                        // initialize current zone properties
+                        dates = null;
+                        isRRULE = false;
+                        from = null;
+                        to = null;
+                        tzname = null;
+                        dst = isDST;
+                        state = TZI;
+                    } else {
+                        // BEGIN property other than STANDARD/DAYLIGHT
+                        // must not be there.
+                        state = ERR;
+                        break;
+                    }
+                } else if (name.equals(ICAL_END) /* && value.equals(ICAL_VTIMEZONE) */) {
+                    break;
+                }
+                break;
+
+            case TZI:
+                if (name.equals(ICAL_DTSTART)) {
+                    dtstart = value;
+                } else if (name.equals(ICAL_TZNAME)) {
+                    tzname = value;
+                } else if (name.equals(ICAL_TZOFFSETFROM)) {
+                    from = value;
+                } else if (name.equals(ICAL_TZOFFSETTO)) {
+                    to = value;
+                } else if (name.equals(ICAL_RDATE)) {
+                    // RDATE mixed with RRULE is not supported
+                    if (isRRULE) {
+                        state = ERR;
+                        break;
+                    }
+                    if (dates == null) {
+                        dates = new LinkedList();
+                    }
+                    // RDATE value may contain multiple date delimited
+                    // by comma
+                    StringTokenizer st = new StringTokenizer(value, COMMA);
+                    while (st.hasMoreTokens()) {
+                        String date = st.nextToken();
+                        dates.add(date);
+                    }
+                } else if (name.equals(ICAL_RRULE)) {
+                    // RRULE mixed with RDATE is not supported
+                    if (!isRRULE && dates != null) {
+                        state = ERR;
+                        break;
+                    } else if (dates == null) {
+                        dates = new LinkedList();
+                    }
+                    isRRULE = true;
+                    dates.add(value);
+                } else if (name.equals(ICAL_END)) {
+                    // Mandatory properties
+                    if (dtstart == null || from == null || to == null) {
+                        state = ERR;
+                        break;
+                    }
+                    // if tzname is not available, create one from tzid
+                    if (tzname == null) {
+                        tzname = getDefaultTZName(tzid, dst);
+                    }
+
+                    // create a time zone rule
+                    TimeZoneRule rule = null;
+                    int fromOffset = 0;
+                    int toOffset = 0;
+                    int rawOffset = 0;
+                    int dstSavings = 0;
+                    long start = 0;
+                    try {
+                        // Parse TZOFFSETFROM/TZOFFSETTO
+                        fromOffset = offsetStrToMillis(from);
+                        toOffset = offsetStrToMillis(to);
+
+                        if (dst) {
+                            // If daylight, use the previous offset as rawoffset if positive
+                            if (toOffset - fromOffset > 0) {
+                                rawOffset = fromOffset;
+                                dstSavings = toOffset - fromOffset;
+                            } else {
+                                // This is rare case..  just use 1 hour DST savings
+                                rawOffset = toOffset - DEF_DSTSAVINGS;
+                                dstSavings = DEF_DSTSAVINGS;                                
+                            }
+                        } else {
+                            rawOffset = toOffset;
+                            dstSavings = 0;
+                        }
+
+                        // start time
+                        start = parseDateTimeString(dtstart, fromOffset);
+
+                        // Create the rule
+                        Date actualStart = null;
+                        if (isRRULE) {
+                            rule = createRuleByRRULE(tzname, rawOffset, dstSavings, start, dates, fromOffset);
+                        } else {
+                            rule = createRuleByRDATE(tzname, rawOffset, dstSavings, start, dates, fromOffset);
+                        }
+                        if (rule != null) {
+                            actualStart = rule.getFirstStart(fromOffset, 0);
+                            if (actualStart.getTime() < firstStart) {
+                                // save from offset information for the earliest rule
+                                firstStart = actualStart.getTime();
+                                // If this is STD, assume the time before this transtion
+                                // is DST when the difference is 1 hour.  This might not be
+                                // accurate, but VTIMEZONE data does not have such info.
+                                if (dstSavings > 0) {
+                                    initialRawOffset = fromOffset;
+                                    initialDSTSavings = 0;
+                                } else {
+                                    if (fromOffset - toOffset == DEF_DSTSAVINGS) {
+                                        initialRawOffset = fromOffset - DEF_DSTSAVINGS;
+                                        initialDSTSavings = DEF_DSTSAVINGS;
+                                    } else {
+                                        initialRawOffset = fromOffset;
+                                        initialDSTSavings = 0;
+                                    }
+                                }
+                            }
+                        }
+                    } catch (IllegalArgumentException iae) {
+                        // bad format - rule == null..
+                    }
+
+                    if (rule == null) {
+                        state = ERR;
+                        break;
+                    }
+                    rules.add(rule);
+                    state = VTZ;
+                }
+                break;
+            }
+
+            if (state == ERR) {
+                vtzlines = null;
+                return false;
+            }
+        }
+
+        // Must have at least one rule
+        if (rules.size() == 0) {
+            return false;
+        }
+
+        // Create a initial rule
+        InitialTimeZoneRule initialRule = new InitialTimeZoneRule(getDefaultTZName(tzid, false),
+                initialRawOffset, initialDSTSavings);
+
+        // Finally, create the RuleBasedTimeZone
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tzid, initialRule);
+
+        int finalRuleIdx = -1;
+        int finalRuleCount = 0;
+        for (int i = 0; i < rules.size(); i++) {
+            TimeZoneRule r = (TimeZoneRule)rules.get(i);
+            if (r instanceof AnnualTimeZoneRule) {
+                if (((AnnualTimeZoneRule)r).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                    finalRuleCount++;
+                    finalRuleIdx = i;
+                }
+            }
+        }
+        if (finalRuleCount > 2) {
+            // Too many final rules
+            return false;
+        }
+
+        if (finalRuleCount == 1) {
+            if (rules.size() == 1) {
+                // Only one final rule, only governs the initial rule,
+                // which is already initialized, thus, we do not need to
+                // add this transition rule
+                rules.clear();
+            } else {
+                // Normalize the final rule
+                AnnualTimeZoneRule finalRule = (AnnualTimeZoneRule)rules.get(finalRuleIdx);
+                int tmpRaw = finalRule.getRawOffset();
+                int tmpDST = finalRule.getDSTSavings();
+    
+                // Find the last non-final rule
+                Date finalStart = finalRule.getFirstStart(initialRawOffset, initialDSTSavings);
+                Date start = finalStart;
+                for (int i = 0; i < rules.size(); i++) {
+                    if (finalRuleIdx == i) {
+                        continue;
+                    }
+                    TimeZoneRule r = (TimeZoneRule)rules.get(i);
+                    Date lastStart = r.getFinalStart(tmpRaw, tmpDST);
+                    if (lastStart.after(start)) {
+                        start = finalRule.getNextStart(lastStart.getTime(),
+                                r.getRawOffset(),
+                                r.getDSTSavings(),
+                                false);
+                    }
+                }
+                TimeZoneRule newRule;
+                if (start == finalStart) {
+                    // Transform this into a single transition
+                    newRule = new TimeArrayTimeZoneRule(
+                            finalRule.getName(),
+                            finalRule.getRawOffset(),
+                            finalRule.getDSTSavings(),
+                            new long[] {finalStart.getTime()},
+                            DateTimeRule.UTC_TIME);
+                } else {
+                    // Update the end year
+                    int fields[] = Grego.timeToFields(start.getTime(), null);
+                    newRule = new AnnualTimeZoneRule(
+                            finalRule.getName(),
+                            finalRule.getRawOffset(),
+                            finalRule.getDSTSavings(),
+                            finalRule.getRule(),
+                            finalRule.getStartYear(),
+                            fields[0]);
+                }
+                rules.set(finalRuleIdx, newRule);
+            }
+        }
+
+        Iterator rit = rules.iterator();
+        while(rit.hasNext()) {
+            rbtz.addTransitionRule((TimeZoneRule)rit.next());
+        }
+        tz = rbtz;
+        setID(tzid);
+        return true;
+    }
+
+    /*
+     * Create a default TZNAME from TZID
+     */
+    private static String getDefaultTZName(String tzid, boolean isDST) {
+        if (isDST) {
+            return tzid + "(DST)";
+        }
+        return tzid + "(STD)";
+    }
+
+    /*
+     * Create a TimeZoneRule by the RRULE definition
+     */
+    private static TimeZoneRule createRuleByRRULE(String tzname,
+            int rawOffset, int dstSavings, long start, List dates, int fromOffset) {
+        if (dates == null || dates.size() == 0) {
+            return null;
+        }
+        // Parse the first rule
+        String rrule = (String)dates.get(0);
+
+        long until[] = new long[1];
+        int[] ruleFields = parseRRULE(rrule, until);
+        if (ruleFields == null) {
+            // Invalid RRULE
+            return null;
+        }
+
+        int month = ruleFields[0];
+        int dayOfWeek = ruleFields[1];
+        int nthDayOfWeek = ruleFields[2];
+        int dayOfMonth = ruleFields[3];
+
+        if (dates.size() == 1) {
+            // No more rules
+            if (ruleFields.length > 4) {
+                // Multiple BYMONTHDAY values
+
+                if (ruleFields.length != 10 || month == -1 || dayOfWeek == 0) {
+                    // Only support the rule using 7 continuous days
+                    // BYMONTH and BYDAY must be set at the same time
+                    return null;
+                }
+                int firstDay = 31; // max possible number of dates in a month
+                int days[] = new int[7];
+                for (int i = 0; i < 7; i++) {
+                    days[i] = ruleFields[3 + i];
+                    // Resolve negative day numbers.  A negative day number should
+                    // not be used in February, but if we see such case, we use 28
+                    // as the base.
+                    days[i] = days[i] > 0 ? days[i] : MONTHLENGTH[month] + days[i] + 1;
+                    firstDay = days[i] < firstDay ? days[i] : firstDay;
+                }
+                // Make sure days are continuous
+                for (int i = 1; i < 7; i++) {
+                    boolean found = false;
+                    for (int j = 0; j < 7; j++) {
+                        if (days[j] == firstDay + i) {
+                            found = true;
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        // days are not continuous
+                        return null;
+                    }
+                }
+                // Use DOW_GEQ_DOM rule with firstDay as the start date
+                dayOfMonth = firstDay;
+            }
+        } else {
+            // Check if BYMONTH + BYMONTHDAY + BYDAY rule with multiple RRULE lines.
+            // Otherwise, not supported.
+            if (month == -1 || dayOfWeek == 0 || dayOfMonth == 0) {
+                // This is not the case
+                return null;
+            }
+            // Parse the rest of rules if number of rules is not exceeding 7.
+            // We can only support 7 continuous days starting from a day of month.
+            if (dates.size() > 7) {
+                return null;
+            }
+
+            // Note: To check valid date range across multiple rule is a little
+            // bit complicated.  For now, this code is not doing strict range
+            // checking across month boundary
+
+            int earliestMonth = month;
+            int daysCount = ruleFields.length - 3;
+            int earliestDay = 31;
+            for (int i = 0; i < daysCount; i++) {
+                int dom = ruleFields[3 + i];
+                dom = dom > 0 ? dom : MONTHLENGTH[month] + dom + 1;
+                earliestDay = dom < earliestDay ? dom : earliestDay;
+            }
+
+            int anotherMonth = -1;
+            for (int i = 1; i < dates.size(); i++) {
+                rrule = (String)dates.get(i);
+                long[] unt = new long[1];
+                int[] fields = parseRRULE(rrule, unt);
+
+                // If UNTIL is newer than previous one, use the one
+                if (unt[0] > until[0]) {
+                    until = unt;
+                }
+                
+                // Check if BYMONTH + BYMONTHDAY + BYDAY rule
+                if (fields[0] == -1 || fields[1] == 0 || fields[3] == 0) {
+                    return null;
+                }
+                // Count number of BYMONTHDAY
+                int count = fields.length - 3;
+                if (daysCount + count > 7) {
+                    // We cannot support BYMONTHDAY more than 7
+                    return null;
+                }
+                // Check if the same BYDAY is used.  Otherwise, we cannot
+                // support the rule
+                if (fields[1] != dayOfWeek) {
+                    return null;
+                }
+                // Check if the month is same or right next to the primary month
+                if (fields[0] != month) {
+                    if (anotherMonth == -1) {
+                        int diff = fields[0] - month;
+                        if (diff == -11 || diff == -1) {
+                            // Previous month
+                            anotherMonth = fields[0];
+                            earliestMonth = anotherMonth;
+                            // Reset earliest day
+                            earliestDay = 31;
+                        } else if (diff == 11 || diff == 1) {
+                            // Next month
+                            anotherMonth = fields[0];
+                        } else {
+                            // The day range cannot exceed more than 2 months
+                            return null;
+                        }
+                    } else if (fields[0] != month && fields[0] != anotherMonth) {
+                        // The day range cannot exceed more than 2 months
+                        return null;
+                    }
+                }
+                // If ealier month, go through days to find the earliest day
+                if (fields[0] == earliestMonth) {
+                    for (int j = 0; j < count; j++) {
+                        int dom = fields[3 + j];
+                        dom = dom > 0 ? dom : MONTHLENGTH[fields[0]] + dom + 1;
+                        earliestDay = dom < earliestDay ? dom : earliestDay;
+                    }
+                }
+                daysCount += count;
+            }
+            if (daysCount != 7) {
+                // Number of BYMONTHDAY entries must be 7
+                return null;
+            }
+            month = earliestMonth;
+            dayOfMonth = earliestDay;
+        }
+
+        // Calculate start/end year and missing fields
+        int[] dfields = Grego.timeToFields(start + fromOffset, null);
+        int startYear = dfields[0];
+        if (month == -1) {
+            // If MYMONTH is not set, use the month of DTSTART
+            month = dfields[1];
+        }
+        if (dayOfWeek == 0 && nthDayOfWeek == 0 && dayOfMonth == 0) {
+            // If only YEARLY is set, use the day of DTSTART as BYMONTHDAY
+            dayOfMonth = dfields[2];
+        }
+        int timeInDay = dfields[5];
+
+        int endYear = AnnualTimeZoneRule.MAX_YEAR;
+        if (until[0] != MIN_TIME) {
+            Grego.timeToFields(until[0], dfields);
+            endYear = dfields[0];
+        }
+
+        // Create the AnnualDateTimeRule
+        DateTimeRule adtr = null;
+        if (dayOfWeek == 0 && nthDayOfWeek == 0 && dayOfMonth != 0) {
+            // Day in month rule, for example, 15th day in the month
+            adtr = new DateTimeRule(month, dayOfMonth, timeInDay, DateTimeRule.WALL_TIME);
+        } else if (dayOfWeek != 0 && nthDayOfWeek != 0 && dayOfMonth == 0) {
+            // Nth day of week rule, for example, last Sunday
+            adtr = new DateTimeRule(month, nthDayOfWeek, dayOfWeek, timeInDay, DateTimeRule.WALL_TIME);
+        } else if (dayOfWeek != 0 && nthDayOfWeek == 0 && dayOfMonth != 0) {
+            // First day of week after day of month rule, for example,
+            // first Sunday after 15th day in the month
+            adtr = new DateTimeRule(month, dayOfMonth, dayOfWeek, true, timeInDay, DateTimeRule.WALL_TIME);
+        } else {
+            // RRULE attributes are insufficient
+            return null;
+        }
+
+        return new AnnualTimeZoneRule(tzname, rawOffset, dstSavings, adtr, startYear, endYear);
+    }
+
+    /*
+     * Parse individual RRULE
+     * 
+     * On return -
+     * 
+     * int[0] month calculated by BYMONTH - 1, or -1 when not found
+     * int[1] day of week in BYDAY, or 0 when not found
+     * int[2] day of week ordinal number in BYDAY, or 0 when not found
+     * int[i >= 3] day of month, which could be multiple values, or 0 when not found
+     * 
+     *  or
+     * 
+     * null on any error cases, for exmaple, FREQ=YEARLY is not available
+     * 
+     * When UNTIL attribute is available, the time will be set to until[0],
+     * otherwise, MIN_TIME
+     */
+    private static int[] parseRRULE(String rrule, long[] until) {
+        int month = -1;
+        int dayOfWeek = 0;
+        int nthDayOfWeek = 0;
+        int[] dayOfMonth = null;
+
+        long untilTime = MIN_TIME;
+        boolean yearly = false;
+        boolean parseError = false;
+        StringTokenizer st= new StringTokenizer(rrule, SEMICOLON);
+
+        while (st.hasMoreTokens()) {
+            String attr, value;
+            String prop = st.nextToken();
+            int sep = prop.indexOf(EQUALS_SIGN);
+            if (sep != -1) {
+                attr = prop.substring(0, sep);
+                value = prop.substring(sep + 1);
+            } else {
+                parseError = true;
+                break;
+            }
+
+            if (attr.equals(ICAL_FREQ)) {
+                // only support YEARLY frequency type
+                if (value.equals(ICAL_YEARLY)) {
+                    yearly = true;
+                } else {
+                    parseError = true;
+                    break;                        
+                }
+            } else if (attr.equals(ICAL_UNTIL)) {
+                // ISO8601 UTC format, for example, "20060315T020000Z"
+                try {
+                    untilTime = parseDateTimeString(value, 0);
+                } catch (IllegalArgumentException iae) {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYMONTH)) {
+                // Note: BYMONTH may contain multiple months, but only single month make sense for
+                // VTIMEZONE property.
+                if (value.length() > 2) {
+                    parseError = true;
+                    break;
+                }
+                try {
+                    month = Integer.parseInt(value) - 1;
+                    if (month < 0 || month >= 12) {
+                        parseError = true;
+                        break;
+                    }
+                } catch (NumberFormatException nfe) {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYDAY)) {
+                // Note: BYDAY may contain multiple day of week separated by comma.  It is unlikely used for
+                // VTIMEZONE property.  We do not support the case.
+
+                // 2-letter format is used just for representing a day of week, for example, "SU" for Sunday
+                // 3 or 4-letter format is used for represeinging Nth day of week, for example, "-1SA" for last Saturday
+                int length = value.length();
+                if (length < 2 || length > 4) {
+                    parseError = true;
+                    break;
+                }
+                if (length > 2) {
+                    // Nth day of week
+                    int sign = 1;
+                    if (value.charAt(0) == '+') {
+                        sign = 1;
+                    } else if (value.charAt(0) == '-') {
+                        sign = -1;
+                    } else if (length == 4) {
+                        parseError = true;
+                        break;
+                    }
+                    try {
+                        int n = Integer.parseInt(value.substring(length - 3, length - 2));
+                        if (n == 0 || n > 4) {
+                            parseError = true;
+                            break;
+                        }
+                        nthDayOfWeek = n * sign;
+                    } catch(NumberFormatException nfe) {
+                        parseError = true;
+                        break;
+                    }
+                    value = value.substring(length - 2);
+                }
+                int wday;
+                for (wday = 0; wday < ICAL_DOW_NAMES.length; wday++) {
+                    if (value.equals(ICAL_DOW_NAMES[wday])) {
+                        break;
+                    }
+                }
+                if (wday < ICAL_DOW_NAMES.length) {
+                    // Sunday(1) - Saturday(7)
+                    dayOfWeek = wday + 1;
+                } else {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYMONTHDAY)) {
+                // Note: BYMONTHDAY may contain multiple days delimited by comma
+                //
+                // A value of BYMONTHDAY could be negative, for example, -1 means
+                // the last day in a month
+                StringTokenizer days = new StringTokenizer(value, COMMA);
+                int count = days.countTokens();
+                dayOfMonth = new int[count];
+                int index = 0;
+                while(days.hasMoreTokens()) {
+                    try {
+                        dayOfMonth[index++] = Integer.parseInt(days.nextToken());
+                    } catch (NumberFormatException nfe) {
+                        parseError = true;
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (parseError) {
+            return null;
+        }
+        if (!yearly) {
+            // FREQ=YEARLY must be set
+            return null;
+        }
+
+        until[0] = untilTime;
+
+        int[] results;
+        if (dayOfMonth == null) {
+            results = new int[4];
+            results[3] = 0;
+        } else {
+            results = new int[3 + dayOfMonth.length];
+            for (int i = 0; i < dayOfMonth.length; i++) {
+                results[3 + i] = dayOfMonth[i];
+            }
+        }
+        results[0] = month;
+        results[1] = dayOfWeek;
+        results[2] = nthDayOfWeek;
+        return results;
+    }
+    
+    /*
+     * Create a TimeZoneRule by the RDATE definition
+     */
+    private static TimeZoneRule createRuleByRDATE(String tzname,
+            int rawOffset, int dstSavings, long start, List dates, int fromOffset) {
+        // Create an array of transition times
+        long[] times;
+        if (dates == null || dates.size() == 0) {
+            // When no RDATE line is provided, use start (DTSTART)
+            // as the transition time
+            times = new long[1];
+            times[0] = start;
+        } else {
+            times = new long[dates.size()];
+            Iterator it = dates.iterator();
+            int idx = 0;
+            try {
+                while(it.hasNext()) {
+                    times[idx++] = parseDateTimeString((String)it.next(), fromOffset);
+                }
+            } catch (IllegalArgumentException iae) {
+                return null;
+            }
+        }
+        return new TimeArrayTimeZoneRule(tzname, rawOffset, dstSavings, times, DateTimeRule.UTC_TIME);
+    }
+
+    /*
+     * Write the time zone rules in RFC2445 VTIMEZONE format
+     */
+    private void writeZone(Writer w, BasicTimeZone basictz, String[] customProperties) throws IOException {
+        // Write the header
+        writeHeader(w);
+
+        if (customProperties != null && customProperties.length > 0) {
+            for (int i = 0; i < customProperties.length; i++) {
+                if (customProperties[i] != null) {
+                    w.write(customProperties[i]);
+                    w.write(NEWLINE);
+                }
+            }
+        }
+
+        long t = MIN_TIME;
+        String dstName = null;
+        int dstFromOffset = 0;
+        int dstFromDSTSavings = 0;
+        int dstToOffset = 0;
+        int dstStartYear = 0;
+        int dstMonth = 0;
+        int dstDayOfWeek = 0;
+        int dstWeekInMonth = 0;
+        int dstMillisInDay = 0;
+        long dstStartTime = 0;
+        long dstUntilTime = 0;
+        int dstCount = 0;
+        AnnualTimeZoneRule finalDstRule = null;
+
+        String stdName = null;
+        int stdFromOffset = 0;
+        int stdFromDSTSavings = 0;
+        int stdToOffset = 0;
+        int stdStartYear = 0;
+        int stdMonth = 0;
+        int stdDayOfWeek = 0;
+        int stdWeekInMonth = 0;
+        int stdMillisInDay = 0;
+        long stdStartTime = 0;
+        long stdUntilTime = 0;
+        int stdCount = 0;
+        AnnualTimeZoneRule finalStdRule = null;
+
+        int[] dtfields = new int[6];
+        boolean hasTransitions = false;
+
+        // Going through all transitions
+        while(true) {
+            TimeZoneTransition tzt = basictz.getNextTransition(t, false);
+            if (tzt == null) {
+                break;
+            }
+            hasTransitions = true;
+            t = tzt.getTime();
+            String name = tzt.getTo().getName();
+            boolean isDst = (tzt.getTo().getDSTSavings() != 0);
+            int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings();
+            int fromDSTSavings = tzt.getFrom().getDSTSavings();
+            int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings();
+            Grego.timeToFields(tzt.getTime() + fromOffset, dtfields);
+            int weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+            int year = dtfields[0];
+            boolean sameRule = false;
+            if (isDst) {
+                if (finalDstRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) {
+                    if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                        finalDstRule = (AnnualTimeZoneRule)tzt.getTo();
+                    }
+                }
+                if (dstCount > 0) {
+                    if (year == dstStartYear + dstCount
+                            && name.equals(dstName)
+                            && dstFromOffset == fromOffset
+                            && dstToOffset == toOffset
+                            && dstMonth == dtfields[1]
+                            && dstDayOfWeek == dtfields[3]
+                            && dstWeekInMonth == weekInMonth
+                            && dstMillisInDay == dtfields[5]) {
+                        // Update until time
+                        dstUntilTime = t;
+                        dstCount++;
+                        sameRule = true;
+                    }
+                    if (!sameRule) {
+                        if (dstCount == 1) {
+                            writeZonePropsByTime(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstStartTime, true);
+                        } else {
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                        }
+                    }
+                } 
+                if (!sameRule) {
+                    // Reset this DST information
+                    dstName = name;
+                    dstFromOffset = fromOffset;
+                    dstFromDSTSavings = fromDSTSavings;
+                    dstToOffset = toOffset;
+                    dstStartYear = year;
+                    dstMonth = dtfields[1];
+                    dstDayOfWeek = dtfields[3];
+                    dstWeekInMonth = weekInMonth;
+                    dstMillisInDay = dtfields[5];
+                    dstStartTime = dstUntilTime = t;
+                    dstCount = 1;
+                }
+                if (finalStdRule != null && finalDstRule != null) {
+                    break;
+                }
+            } else {
+                if (finalStdRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) {
+                    if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                        finalStdRule = (AnnualTimeZoneRule)tzt.getTo();
+                    }
+                }
+                if (stdCount > 0) {
+                    if (year == stdStartYear + stdCount
+                            && name.equals(stdName)
+                            && stdFromOffset == fromOffset
+                            && stdToOffset == toOffset
+                            && stdMonth == dtfields[1]
+                            && stdDayOfWeek == dtfields[3]
+                            && stdWeekInMonth == weekInMonth
+                            && stdMillisInDay == dtfields[5]) {
+                        // Update until time
+                        stdUntilTime = t;
+                        stdCount++;
+                        sameRule = true;
+                    }
+                    if (!sameRule) {
+                        if (stdCount == 1) {
+                            writeZonePropsByTime(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdStartTime, true);
+                        } else {
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                        }
+                    }
+                }
+                if (!sameRule) {
+                    // Reset this STD information
+                    stdName = name;
+                    stdFromOffset = fromOffset;
+                    stdFromDSTSavings = fromDSTSavings;
+                    stdToOffset = toOffset;
+                    stdStartYear = year;
+                    stdMonth = dtfields[1];
+                    stdDayOfWeek = dtfields[3];
+                    stdWeekInMonth = weekInMonth;
+                    stdMillisInDay = dtfields[5];
+                    stdStartTime = stdUntilTime = t;
+                    stdCount = 1;
+                }
+                if (finalStdRule != null && finalDstRule != null) {
+                    break;
+                }
+            }
+        }
+        if (!hasTransitions) {
+            // No transition - put a single non transition RDATE
+            int offset = basictz.getOffset(0 /* any time */);
+            boolean isDst = (offset != basictz.getRawOffset());
+            writeZonePropsByTime(w, isDst, getDefaultTZName(basictz.getID(), isDst),
+                    offset, offset, DEF_TZSTARTTIME - offset, false);                
+        } else {
+            if (dstCount > 0) {
+                if (finalDstRule == null) {
+                    if (dstCount == 1) {
+                        writeZonePropsByTime(w, true, dstName, dstFromOffset, dstToOffset,
+                                dstStartTime, true);
+                    } else {
+                        writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                    }
+                } else {
+                    if (dstCount == 1) {
+                        writeFinalRule(w, true, finalDstRule,
+                                dstFromOffset - dstFromDSTSavings, dstFromDSTSavings, dstStartTime);
+                    } else {
+                        // Use a single rule if possible
+                        if (isEquivalentDateRule(dstMonth, dstWeekInMonth, dstDayOfWeek, finalDstRule.getRule())) {
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, MAX_TIME);
+                        } else {
+                            // Not equivalent rule - write out two different rules
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                            writeFinalRule(w, true, finalDstRule,
+                                    dstFromOffset - dstFromDSTSavings, dstFromDSTSavings, dstStartTime);
+                        }
+                    }
+                }
+            }
+            if (stdCount > 0) {
+                if (finalStdRule == null) {
+                    if (stdCount == 1) {
+                        writeZonePropsByTime(w, false, stdName, stdFromOffset, stdToOffset,
+                                stdStartTime, true);
+                    } else {
+                        writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                    }
+                } else {
+                    if (stdCount == 1) {
+                        writeFinalRule(w, false, finalStdRule,
+                                stdFromOffset - stdFromDSTSavings, stdFromDSTSavings, stdStartTime);
+                    } else {
+                        // Use a single rule if possible
+                        if (isEquivalentDateRule(stdMonth, stdWeekInMonth, stdDayOfWeek, finalStdRule.getRule())) {
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, MAX_TIME);                            
+                        } else {
+                            // Not equivalent rule - write out two different rules
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                            writeFinalRule(w, false, finalStdRule,
+                                    stdFromOffset - stdFromDSTSavings, stdFromDSTSavings, stdStartTime);
+                        }
+                    }
+                }
+            }            
+        }
+        writeFooter(w);
+    }
+
+    /*
+     * Check if the DOW rule specified by month, weekInMonth and dayOfWeek is equivalent
+     * to the DateTimerule.
+     */
+    private static boolean isEquivalentDateRule(int month, int weekInMonth, int dayOfWeek, DateTimeRule dtrule) {
+        if (month != dtrule.getRuleMonth() || dayOfWeek != dtrule.getRuleDayOfWeek()) {
+            return false;
+        }
+        if (dtrule.getTimeRuleType() != DateTimeRule.WALL_TIME) {
+            // Do not try to do more intelligent comparison for now.
+            return false;
+        }
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW
+                && dtrule.getRuleWeekInMonth() == weekInMonth) {
+            return true;
+        }
+        int ruleDOM = dtrule.getRuleDayOfMonth();
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW_GEQ_DOM) {
+            if (ruleDOM%7 == 1 && (ruleDOM + 6)/7 == weekInMonth) {
+                return true;
+            }
+            if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - ruleDOM)%7 == 6
+                    && weekInMonth == -1*((MONTHLENGTH[month]-ruleDOM+1)/7)) {
+                return true;
+            }
+        }
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW_LEQ_DOM) {
+            if (ruleDOM%7 == 0 && ruleDOM/7 == weekInMonth) {
+                return true;
+            }
+            if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - ruleDOM)%7 == 0
+                    && weekInMonth == -1*((MONTHLENGTH[month] - ruleDOM)/7 + 1)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /*
+     * Write a single start time
+     */
+    private static void writeZonePropsByTime(Writer writer, boolean isDst, String tzname,
+            int fromOffset, int toOffset, long time, boolean withRDATE) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, time);
+        if (withRDATE) {
+            writer.write(ICAL_RDATE);
+            writer.write(COLON);
+            writer.write(getDateTimeString(time + fromOffset));
+            writer.write(NEWLINE);
+        }
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, long startTime, long untilTime) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYMONTHDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(dayOfMonth));
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOW rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int weekInMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(weekInMonth));    // -4, -3, -2, -1, 1, 2, 3, 4
+        writer.write(ICAL_DOW_NAMES[dayOfWeek - 1]);    // SU, MO, TU...
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOW_GEQ_DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW_GEQ_DOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        // Check if this rule can be converted to DOW rule
+        if (dayOfMonth%7 == 1) {
+            // Can be represented by DOW rule
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, (dayOfMonth + 6)/7, dayOfWeek, startTime, untilTime);
+        } else if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - dayOfMonth)%7 == 6) {
+            // Can be represented by DOW rule with negative week number
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, -1*((MONTHLENGTH[month] - dayOfMonth + 1)/7), dayOfWeek, startTime, untilTime);
+        } else {
+            // Otherwise, use BYMONTHDAY to include all possible dates
+            beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+            // Check if all days are in the same month
+            int startDay = dayOfMonth;
+            int currentMonthDays = 7;
+        
+            if (dayOfMonth <= 0) {
+                // The start day is in previous month
+                int prevMonthDays = 1 - dayOfMonth;
+                currentMonthDays -= prevMonthDays;
+
+                int prevMonth = (month - 1) < 0 ? 11 : month - 1;
+
+                // Note: When a rule is separated into two, UNTIL attribute needs to be
+                // calculated for each of them.  For now, we skip this, because we basically use this method
+                // only for final rules, which does not have the UNTIL attribute
+                writeZonePropsByDOW_GEQ_DOM_sub(writer, prevMonth, -prevMonthDays, dayOfWeek, prevMonthDays, MAX_TIME /* Do not use UNTIL */, fromOffset);
+
+                // Start from 1 for the rest
+                startDay = 1;
+            } else if (dayOfMonth + 6 > MONTHLENGTH[month]) {
+                // Note: This code does not actually work well in February.  For now, days in month in
+                // non-leap year.
+                int nextMonthDays = dayOfMonth + 6 - MONTHLENGTH[month];
+                currentMonthDays -= nextMonthDays;
+
+                int nextMonth = (month + 1) > 11 ? 0 : month + 1;
+                
+                writeZonePropsByDOW_GEQ_DOM_sub(writer, nextMonth, 1, dayOfWeek, nextMonthDays, MAX_TIME /* Do not use UNTIL */, fromOffset);
+            }
+            writeZonePropsByDOW_GEQ_DOM_sub(writer, month, startDay, dayOfWeek, currentMonthDays, untilTime, fromOffset);
+            endZoneProps(writer, isDst);
+        }
+    }
+ 
+    /*
+     * Called from writeZonePropsByDOW_GEQ_DOM
+     */
+    private static void writeZonePropsByDOW_GEQ_DOM_sub(Writer writer, int month,
+            int dayOfMonth, int dayOfWeek, int numDays, long untilTime, int fromOffset) throws IOException {
+
+        int startDayNum = dayOfMonth;
+        boolean isFeb = (month == Calendar.FEBRUARY);
+        if (dayOfMonth < 0 && !isFeb) {
+            // Use positive number if possible
+            startDayNum = MONTHLENGTH[month] + dayOfMonth + 1;
+        }
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(ICAL_DOW_NAMES[dayOfWeek - 1]);    // SU, MO, TU...
+        writer.write(SEMICOLON);
+        writer.write(ICAL_BYMONTHDAY);
+        writer.write(EQUALS_SIGN);
+
+        writer.write(Integer.toString(startDayNum));
+        for (int i = 1; i < numDays; i++) {
+            writer.write(COMMA);
+            writer.write(Integer.toString(startDayNum + i));
+        }
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Write start times defined by a DOW_LEQ_DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW_LEQ_DOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        // Check if this rule can be converted to DOW rule
+        if (dayOfMonth%7 == 0) {
+            // Can be represented by DOW rule
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, dayOfMonth/7, dayOfWeek, startTime, untilTime);
+        } else if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - dayOfMonth)%7 == 0){
+            // Can be represented by DOW rule with negative week number
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, -1*((MONTHLENGTH[month] - dayOfMonth)/7 + 1), dayOfWeek, startTime, untilTime);
+        } else if (month == Calendar.FEBRUARY && dayOfMonth == 29) {
+            // Specical case for February
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    Calendar.FEBRUARY, -1, dayOfWeek, startTime, untilTime);
+        } else {
+            // Otherwise, convert this to DOW_GEQ_DOM rule
+            writeZonePropsByDOW_GEQ_DOM(writer, isDst, tzname, fromOffset, toOffset,
+                    month, dayOfMonth - 6, dayOfWeek, startTime, untilTime);
+        }
+    }
+
+    /*
+     * Write the final time zone rule using RRULE, with no UNTIL attribute
+     */
+    private static void writeFinalRule(Writer writer, boolean isDst, AnnualTimeZoneRule rule,
+            int fromRawOffset, int fromDSTSavings, long startTime) throws IOException{
+        DateTimeRule dtrule = toWallTimeRule(rule.getRule(), fromRawOffset, fromDSTSavings);
+        int toOffset = rule.getRawOffset() + rule.getDSTSavings();
+        switch (dtrule.getDateRuleType()) {
+        case DateTimeRule.DOM:
+            writeZonePropsByDOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW:
+            writeZonePropsByDOW(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleWeekInMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW_GEQ_DOM:
+            writeZonePropsByDOW_GEQ_DOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW_LEQ_DOM:
+            writeZonePropsByDOW_LEQ_DOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        }
+    }
+
+    /*
+     * Convert the rule to its equivalent rule using WALL_TIME mode
+     */
+    private static DateTimeRule toWallTimeRule(DateTimeRule rule, int rawOffset, int dstSavings) {
+        if (rule.getTimeRuleType() == DateTimeRule.WALL_TIME) {
+            return rule;
+        }
+        int wallt = rule.getRuleMillisInDay();
+        if (rule.getTimeRuleType() == DateTimeRule.UTC_TIME) {
+            wallt += (rawOffset + dstSavings);
+        } else if (rule.getTimeRuleType() == DateTimeRule.STANDARD_TIME) {
+            wallt += dstSavings;
+        }
+
+        int month = -1, dom = 0, dow = 0, dtype = -1;
+        int dshift = 0;
+        if (wallt < 0) {
+            dshift = -1;
+            wallt += Grego.MILLIS_PER_DAY;
+        } else if (wallt >= Grego.MILLIS_PER_DAY) {
+            dshift = 1;
+            wallt -= Grego.MILLIS_PER_DAY;
+        }
+
+        month = rule.getRuleMonth();
+        dom = rule.getRuleDayOfMonth();
+        dow = rule.getRuleDayOfWeek();
+        dtype = rule.getDateRuleType();
+
+        if (dshift != 0) {
+            if (dtype == DateTimeRule.DOW) {
+                // Convert to DOW_GEW_DOM or DOW_LEQ_DOM rule first
+                int wim = rule.getRuleWeekInMonth();
+                if (wim > 0) {
+                    dtype = DateTimeRule.DOW_GEQ_DOM;
+                    dom = 7 * (wim - 1) + 1;
+                } else {
+                    dtype = DateTimeRule.DOW_LEQ_DOM;
+                    dom = MONTHLENGTH[month] + 7 * (wim + 1);
+                }
+
+            }
+            // Shift one day before or after
+            dom += dshift;
+            if (dom == 0) {
+                month--;
+                month = month < Calendar.JANUARY ? Calendar.DECEMBER : month;
+                dom = MONTHLENGTH[month];
+            } else if (dom > MONTHLENGTH[month]) {
+                month++;
+                month = month > Calendar.DECEMBER ? Calendar.JANUARY : month;
+                dom = 1;
+            }
+            if (dtype != DateTimeRule.DOM) {
+                // Adjust day of week
+                dow += dshift;
+                if (dow < Calendar.SUNDAY) {
+                    dow = Calendar.SATURDAY;
+                } else if (dow > Calendar.SATURDAY) {
+                    dow = Calendar.SUNDAY;
+                }
+            }
+        }
+        // Create a new rule
+        DateTimeRule modifiedRule;
+        if (dtype == DateTimeRule.DOM) {
+            modifiedRule = new DateTimeRule(month, dom, wallt, DateTimeRule.WALL_TIME);
+        } else {
+            modifiedRule = new DateTimeRule(month, dom, dow,
+                    (dtype == DateTimeRule.DOW_GEQ_DOM), wallt, DateTimeRule.WALL_TIME);
+        }
+        return modifiedRule;
+    }
+
+    /*
+     * Write the opening section of zone properties
+     */
+    private static void beginZoneProps(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset, long startTime) throws IOException {
+        writer.write(ICAL_BEGIN);
+        writer.write(COLON);
+        if (isDst) {
+            writer.write(ICAL_DAYLIGHT);
+        } else {
+            writer.write(ICAL_STANDARD);
+        }
+        writer.write(NEWLINE);
+
+        // TZOFFSETTO
+        writer.write(ICAL_TZOFFSETTO);
+        writer.write(COLON);
+        writer.write(millisToOffset(toOffset));
+        writer.write(NEWLINE);
+
+        // TZOFFSETFROM
+        writer.write(ICAL_TZOFFSETFROM);
+        writer.write(COLON);
+        writer.write(millisToOffset(fromOffset));
+        writer.write(NEWLINE);
+
+        // TZNAME
+        writer.write(ICAL_TZNAME);
+        writer.write(COLON);
+        writer.write(tzname);
+        writer.write(NEWLINE);
+        
+        // DTSTART
+        writer.write(ICAL_DTSTART);
+        writer.write(COLON);
+        writer.write(getDateTimeString(startTime + fromOffset));
+        writer.write(NEWLINE);        
+    }
+
+    /*
+     * Writes the closing section of zone properties
+     */
+    private static void endZoneProps(Writer writer, boolean isDst) throws IOException{
+        // END:STANDARD or END:DAYLIGHT
+        writer.write(ICAL_END);
+        writer.write(COLON);
+        if (isDst) {
+            writer.write(ICAL_DAYLIGHT);
+        } else {
+            writer.write(ICAL_STANDARD);
+        }
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Write the beginning part of RRULE line
+     */
+    private static void beginRRULE(Writer writer, int month) throws IOException {
+        writer.write(ICAL_RRULE);
+        writer.write(COLON);
+        writer.write(ICAL_FREQ);
+        writer.write(EQUALS_SIGN);
+        writer.write(ICAL_YEARLY);
+        writer.write(SEMICOLON);
+        writer.write(ICAL_BYMONTH);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(month + 1));
+        writer.write(SEMICOLON);
+    }
+
+    /*
+     * Append the UNTIL attribute after RRULE line
+     */
+    private static void appendUNTIL(Writer writer, String until) throws IOException {
+        if (until != null) {
+            writer.write(SEMICOLON);
+            writer.write(ICAL_UNTIL);
+            writer.write(EQUALS_SIGN);
+            writer.write(until);
+        }
+    }
+
+    /*
+     * Write the opening section of the VTIMEZONE block
+     */
+    private void writeHeader(Writer writer)throws IOException {
+        writer.write(ICAL_BEGIN);
+        writer.write(COLON);
+        writer.write(ICAL_VTIMEZONE);
+        writer.write(NEWLINE);
+        writer.write(ICAL_TZID);
+        writer.write(COLON);
+        writer.write(tz.getID());
+        writer.write(NEWLINE);
+        if (tzurl != null) {
+            writer.write(ICAL_TZURL);
+            writer.write(COLON);
+            writer.write(tzurl);
+            writer.write(NEWLINE);
+        }
+        if (lastmod != null) {
+            writer.write(ICAL_LASTMOD);
+            writer.write(COLON);
+            writer.write(getUTCDateTimeString(lastmod.getTime()));
+            writer.write(NEWLINE);
+        }
+    }
+
+    /*
+     * Write the closing section of the VTIMEZONE definition block
+     */
+    private static void writeFooter(Writer writer) throws IOException {
+        writer.write(ICAL_END);
+        writer.write(COLON);
+        writer.write(ICAL_VTIMEZONE);
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Convert date/time to RFC2445 Date-Time form #1 DATE WITH LOCAL TIME
+     */
+    private static String getDateTimeString(long time) {
+        int[] fields = Grego.timeToFields(time, null);
+        StringBuffer sb = new StringBuffer(15);
+        sb.append(numToString(fields[0], 4));
+        sb.append(numToString(fields[1] + 1, 2));
+        sb.append(numToString(fields[2], 2));
+        sb.append('T');
+
+        int t = fields[5];
+        int hour = t / Grego.MILLIS_PER_HOUR;
+        t %= Grego.MILLIS_PER_HOUR;
+        int min = t / Grego.MILLIS_PER_MINUTE;
+        t %= Grego.MILLIS_PER_MINUTE;
+        int sec = t / Grego.MILLIS_PER_SECOND;
+        
+        sb.append(numToString(hour, 2));
+        sb.append(numToString(min, 2));
+        sb.append(numToString(sec, 2));
+        return sb.toString();
+    }
+
+    /*
+     * Convert date/time to RFC2445 Date-Time form #2 DATE WITH UTC TIME
+     */
+    private static String getUTCDateTimeString(long time) {
+        return getDateTimeString(time) + "Z";
+    }
+
+    /*
+     * Parse RFC2445 Date-Time form #1 DATE WITH LOCAL TIME and
+     * #2 DATE WITH UTC TIME
+     */
+    private static long parseDateTimeString(String str, int offset) {
+        int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0;
+        boolean isUTC = false;
+        boolean isValid = false;
+        do {
+            if (str == null) {
+                break;
+            }
+
+            int length = str.length();
+            if (length != 15 && length != 16) {
+                // FORM#1 15 characters, such as "20060317T142115"
+                // FORM#2 16 characters, such as "20060317T142115Z"
+                break;
+            }
+            if (str.charAt(8) != 'T') {
+                // charcter "T" must be used for separating date and time
+                break;
+            }
+            if (length == 16) {
+                if (str.charAt(15) != 'Z') {
+                    // invalid format
+                    break;
+                }
+                isUTC = true;
+            }
+
+            try {
+                year = Integer.parseInt(str.substring(0, 4));
+                month = Integer.parseInt(str.substring(4, 6)) - 1;  // 0-based
+                day = Integer.parseInt(str.substring(6, 8));
+                hour = Integer.parseInt(str.substring(9, 11));
+                min = Integer.parseInt(str.substring(11, 13));
+                sec = Integer.parseInt(str.substring(13, 15));
+            } catch (NumberFormatException nfe) {
+                break;
+            }
+
+            // check valid range
+            int maxDayOfMonth = Grego.monthLength(year, month);
+            if (year < 0 || month < 0 || month > 11 || day < 1 || day > maxDayOfMonth ||
+                    hour < 0 || hour >= 24 || min < 0 || min >= 60 || sec < 0 || sec >= 60) {
+                break;
+            }
+
+            isValid = true;
+        } while(false);
+
+        if (!isValid) {
+            throw new IllegalArgumentException("Invalid date time string format");
+        }
+        // Calculate the time
+        long time = Grego.fieldsToDay(year, month, day) * Grego.MILLIS_PER_DAY;
+        time += (hour*Grego.MILLIS_PER_HOUR + min*Grego.MILLIS_PER_MINUTE + sec*Grego.MILLIS_PER_SECOND);
+        if (!isUTC) {
+            time -= offset;
+        }
+        return time;
+    }
+
+    /*
+     * Convert RFC2445 utc-offset string to milliseconds
+     */
+    private static int offsetStrToMillis(String str) {
+        boolean isValid = false;
+        int sign = 0, hour = 0, min = 0, sec = 0;
+
+        do {
+            if (str == null) {
+                break;
+            }
+            int length = str.length();
+            if (length != 5 && length != 7) {
+                // utf-offset must be 5 or 7 characters
+                break;
+            }
+            // sign
+            char s = str.charAt(0);
+            if (s == '+') {
+                sign = 1;
+            } else if (s == '-') {
+                sign = -1;
+            } else {
+                // utf-offset must start with "+" or "-"
+                break;
+            }
+
+            try {
+                hour = Integer.parseInt(str.substring(1, 3));
+                min = Integer.parseInt(str.substring(3, 5));
+                if (length == 7) {
+                    sec = Integer.parseInt(str.substring(5, 7));
+                }
+            } catch (NumberFormatException nfe) {
+                break;
+            }
+            isValid = true;
+        } while(false);
+
+        if (!isValid) {
+            throw new IllegalArgumentException("Bad offset string");
+        }
+        int millis = sign * ((hour * 60 + min) * 60 + sec) * 1000;
+        return millis;
+    }
+
+    /*
+     * Convert milliseconds to RFC2445 utc-offset string
+     */
+    private static String millisToOffset(int millis) {
+        StringBuffer sb = new StringBuffer(7);
+        if (millis >= 0) {
+            sb.append('+');
+        } else {
+            sb.append('-');
+            millis = -millis;
+        }
+        int hour, min, sec;
+        int t = millis / 1000;
+
+        sec = t % 60;
+        t = (t - sec) / 60;
+        min = t % 60;
+        hour = t / 60;
+
+        sb.append(numToString(hour, 2));
+        sb.append(numToString(min, 2));
+        sb.append(numToString(sec, 2));
+
+        return sb.toString();
+    }
+
+    /*
+     * Format integer number
+     */
+    private static String numToString(int num, int width) {
+        String str = Integer.toString(num);
+        int len = str.length();
+        if (len >= width) {
+            return str.substring(len - width, len);
+        }
+        StringBuffer sb = new StringBuffer(width);
+        for (int i = len; i < width; i++) {
+            sb.append('0');
+        }
+        sb.append(str);
+        return sb.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/ValueIterator.java b/src/com/ibm/icu/util/ValueIterator.java
new file mode 100644
index 0000000..fa3c719
--- /dev/null
+++ b/src/com/ibm/icu/util/ValueIterator.java
@@ -0,0 +1,109 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int, Object>, where
+ * int is the sorted integer index in ascending order and Object, its 
+ * associated value.</p>
+ * <p>The ValueIterator allows iterations over integer indexes in the range 
+ * of Integer.MIN_VALUE to Integer.MAX_VALUE inclusive. Implementations of 
+ * ValueIterator should specify their own maximum subrange within the above 
+ * range that is meaningful to its applications.</p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character name iterator in UCharacter.getNameIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * ValueIterator iterator = UCharacter.getNameIterator();
+ * ValueIterator.Element result = new ValueIterator.Element();
+ * iterator.setRange(UCharacter.MIN_VALUE, UCharacter.MAX_VALUE);
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.integer) + 
+ *                        " has the character name " + (String)result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public interface ValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * <p>The return result container of each iteration. Stores the next 
+    * integer index and its associated value Object.</p> 
+    * @stable ICU 2.6
+    */
+    public static final class Element
+    {
+        // public data members ----------------------------------------
+        
+        /**
+        * Integer index of the current iteration
+        * @stable ICU 2.6
+        */
+        public int integer;
+        /**
+        * Gets the Object value associated with the integer index.
+        * @stable ICU 2.6
+        */ 
+        public Object value;
+        
+        // public constructor ------------------------------------------
+        
+        /**
+         * Empty default constructor to make javadoc happy
+         * @stable ICU 2.4
+         */
+        public Element()
+        {
+        }
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next result for this iteration and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result index and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @stable ICU 2.6
+    */
+    public boolean next(Element element);
+    
+    /**
+    * <p>Resets the iterator to start iterating from the integer index 
+    * Integer.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    * @stable ICU 2.6
+    */
+    public void reset();
+    
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration 
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is 
+     * called, the iteration will start from the integer index 
+     * Integer.MIN_VALUE and end at Integer.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the meaningful range specified by the 
+     * implementation, next(element) will always return false.
+     * </p>
+     * @param start first integer in the range to iterate
+     * @param limit one more than the last integer in the range 
+     * @exception IllegalArgumentException thrown when attempting to set an 
+     *            illegal range. E.g limit <= start
+     * @stable ICU 2.6
+     */
+    public void setRange(int start, int limit);
+}
diff --git a/src/com/ibm/icu/util/VersionInfo.java b/src/com/ibm/icu/util/VersionInfo.java
new file mode 100644
index 0000000..f64b3ae
--- /dev/null
+++ b/src/com/ibm/icu/util/VersionInfo.java
@@ -0,0 +1,492 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.HashMap;
+
+/**
+ * Class to store version numbers of the form major.minor.milli.micro.
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public final class VersionInfo implements Comparable
+{
+    // public data members -------------------------------------------------
+
+    /**
+     * Unicode 1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_0;
+    /**
+     * Unicode 1.0.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_0_1;
+    /**
+     * Unicode 1.1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_1_0;
+    /**
+     * Unicode 1.1.5 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_1_5;
+    /**
+     * Unicode 2.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_0;
+    /**
+     * Unicode 2.1.2 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_2;
+    /**
+     * Unicode 2.1.5 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_5;
+    /**
+     * Unicode 2.1.8 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_8;
+    /**
+     * Unicode 2.1.9 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_9;
+    /**
+     * Unicode 3.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_0;
+    /**
+     * Unicode 3.0.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_0_1;
+    /**
+     * Unicode 3.1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_1_0;
+    /**
+     * Unicode 3.1.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_1_1;
+    /**
+     * Unicode 3.2 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_2;
+
+    /**
+     * Unicode 4.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_4_0;
+
+    /**
+     * Unicode 4.0.1 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_4_0_1;
+
+    /**
+     * Unicode 4.1 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_4_1;
+
+    /**
+     * Unicode 5.0 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_5_0;
+
+    /**
+     * ICU4J current release version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo ICU_VERSION;
+
+    /**
+     * Data version string for ICU's internal data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final String ICU_DATA_VERSION = "41b";
+
+    /**
+     * ICU4J collator runtime version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_RUNTIME_VERSION;
+
+    /**
+     * ICU4J collator builder version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_BUILDER_VERSION;
+
+    /**
+     * ICU4J collator tailorings version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_TAILORINGS_VERSION;
+
+
+    // public methods ------------------------------------------------------
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * @param version version String in the format of "major.minor.milli.micro"
+     *                or "major.minor.milli" or "major.minor" or "major",
+     *                where major, minor, milli, micro are non-negative numbers
+     *                <= 255. If the trailing version numbers are
+     *                not specified they are taken as 0s. E.g. Version "3.1" is
+     *                equivalent to "3.1.0.0".
+     * @return an instance of VersionInfo with the argument version.
+     * @exception throws an IllegalArgumentException when the argument version
+     *                is not in the right format
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(String version)
+    {
+        int length  = version.length();
+        int array[] = {0, 0, 0, 0};
+        int count   = 0;
+        int index   = 0;
+
+        while (count < 4 && index < length) {
+            char c = version.charAt(index);
+            if (c == '.') {
+                count ++;
+            }
+            else {
+                c -= '0';
+                if (c < 0 || c > 9) {
+                    throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+                }
+                array[count] *= 10;
+                array[count] += c;
+            }
+            index ++;
+        }
+        if (index != length) {
+            throw new IllegalArgumentException(
+                                               "Invalid version number: String '" + version + "' exceeds version format");
+        }
+        for (int i = 0; i < 4; i ++) {
+            if (array[i] < 0 || array[i] > 255) {
+                throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+            }
+        }
+
+        return getInstance(array[0], array[1], array[2], array[3]);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @param micro micro version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli,
+                                          int micro)
+    {
+        // checks if it is in the hashmap
+        // else
+        if (major < 0 || major > 255 || minor < 0 || minor > 255 ||
+            milli < 0 || milli > 255 || micro < 0 || micro > 255) {
+            throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+        }
+        int     version = getInt(major, minor, milli, micro);
+        Integer key     = new Integer(version);
+        Object  result  = MAP_.get(key);
+        if (result == null) {
+            result = new VersionInfo(version);
+            MAP_.put(key, result);
+        }
+        return (VersionInfo)result;
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, milli, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli)
+    {
+        return getInstance(major, minor, milli, 0);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor)
+    {
+        return getInstance(major, minor, 0, 0);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, 0, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major)
+    {
+        return getInstance(major, 0, 0, 0);
+    }
+
+    private static VersionInfo javaVersion;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static VersionInfo javaVersion() {
+        if (javaVersion == null) {
+            String s = System.getProperty("java.version");
+            // clean string
+            // preserve only digits, separated by single '.'
+            // ignore over 4 digit sequences
+            // does not test < 255, very odd...
+
+            char[] chars = s.toCharArray();
+            int r = 0, w = 0, count = 0;
+            boolean numeric = false; // ignore leading non-numerics
+            while (r < chars.length) {
+                char c = chars[r++];
+                if (c < '0' || c > '9') {
+                    if (numeric) {
+                        if (count == 3) {
+                            // only four digit strings allowed
+                            break;
+                        }
+                        numeric = false;
+                        chars[w++] = '.';
+                        ++count;
+                    }
+                } else {
+                    numeric = true;
+                    chars[w++] = c;
+                }
+            }
+            while (w > 0 && chars[w-1] == '.') {
+                --w;
+            }
+
+            String vs = new String(chars, 0, w);
+
+            javaVersion = VersionInfo.getInstance(vs);
+        }
+        return javaVersion;
+    }
+
+    /**
+     * Returns the String representative of VersionInfo in the format of
+     * "major.minor.milli.micro"
+     * @return String representative of VersionInfo
+     * @stable ICU 2.6
+     */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer(7);
+        result.append(getMajor());
+        result.append('.');
+        result.append(getMinor());
+        result.append('.');
+        result.append(getMilli());
+        result.append('.');
+        result.append(getMicro());
+        return result.toString();
+    }
+
+    /**
+     * Returns the major version number
+     * @return the major version number
+     * @stable ICU 2.6
+     */
+    public int getMajor()
+    {
+        return (m_version_ >> 24) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the minor version number
+     * @return the minor version number
+     * @stable ICU 2.6
+     */
+    public int getMinor()
+    {
+        return (m_version_ >> 16) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the milli version number
+     * @return the milli version number
+     * @stable ICU 2.6
+     */
+    public int getMilli()
+    {
+        return (m_version_ >> 8) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the micro version number
+     * @return the micro version number
+     * @stable ICU 2.6
+     */
+    public int getMicro()
+    {
+        return m_version_ & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Checks if this version information is equals to the argument version
+     * @param other object to be compared
+     * @return true if other is equals to this object's version information,
+     *         false otherwise
+     * @stable ICU 2.6
+     */
+    public boolean equals(Object other)
+    {
+        return other == this;
+    }
+
+    /**
+     * Compares other with this VersionInfo.
+     * @param other VersionInfo to be compared
+     * @return 0 if the argument is a VersionInfo object that has version
+     *           information equals to this object.
+     *           Less than 0 if the argument is a VersionInfo object that has
+     *           version information greater than this object.
+     *           Greater than 0 if the argument is a VersionInfo object that
+     *           has version information less than this object.
+     * @stable ICU 2.6
+     */
+    public int compareTo(VersionInfo other)
+    {
+        return m_version_ - other.m_version_;
+    }
+
+    /**
+     * Compares other with this VersionInfo.
+     * @param other VersionInfo to be compared. Throws ClassCastException if not a VersionInfo.
+     * @return 0 if the argument is a VersionInfo object that has version
+     *           information equals to this object.
+     *           Less than 0 if the argument is a VersionInfo object that has
+     *           version information greater than this object.
+     *           Greater than 0 if the argument is a VersionInfo object that
+     *           has version information less than this object.
+     * @draft ICU 4.2
+     */
+    public int compareTo(Object other) {
+        return compareTo((VersionInfo)other);
+    }
+
+    // private data members ----------------------------------------------
+
+    /**
+     * Version number stored as a byte for each of the major, minor, milli and
+     * micro numbers in the 32 bit int.
+     * Most significant for the major and the least significant contains the
+     * micro numbers.
+     */
+    private int m_version_;
+    /**
+     * Map of singletons
+     */
+    private static final HashMap MAP_ = new HashMap();
+    /**
+     * Last byte mask
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Error statement string
+     */
+    private static final String INVALID_VERSION_NUMBER_ =
+        "Invalid version number: Version number may be negative or greater than 255";
+
+    // static declaration ------------------------------------------------
+
+    /**
+     * Initialize versions only after MAP_ has been created
+     */
+    static {
+        UNICODE_1_0   = getInstance(1, 0, 0, 0);
+        UNICODE_1_0_1 = getInstance(1, 0, 1, 0);
+        UNICODE_1_1_0 = getInstance(1, 1, 0, 0);
+        UNICODE_1_1_5 = getInstance(1, 1, 5, 0);
+        UNICODE_2_0   = getInstance(2, 0, 0, 0);
+        UNICODE_2_1_2 = getInstance(2, 1, 2, 0);
+        UNICODE_2_1_5 = getInstance(2, 1, 5, 0);
+        UNICODE_2_1_8 = getInstance(2, 1, 8, 0);
+        UNICODE_2_1_9 = getInstance(2, 1, 9, 0);
+        UNICODE_3_0   = getInstance(3, 0, 0, 0);
+        UNICODE_3_0_1 = getInstance(3, 0, 1, 0);
+        UNICODE_3_1_0 = getInstance(3, 1, 0, 0);
+        UNICODE_3_1_1 = getInstance(3, 1, 1, 0);
+        UNICODE_3_2   = getInstance(3, 2, 0, 0);
+        UNICODE_4_0   = getInstance(4, 0, 0, 0);
+        UNICODE_4_0_1 = getInstance(4, 0, 1, 0);
+        UNICODE_4_1   = getInstance(4, 1, 0, 0);
+        UNICODE_5_0   = getInstance(4, 1, 0, 0);
+        ICU_VERSION   = getInstance(4, 1, 1, 0);
+        UCOL_RUNTIME_VERSION = getInstance(6);
+        UCOL_BUILDER_VERSION = getInstance(7);
+        UCOL_TAILORINGS_VERSION = getInstance(1);
+    }
+
+    // private constructor -----------------------------------------------
+
+    /**
+     * Constructor with int
+     * @param compactversion a 32 bit int with each byte representing a number
+     */
+    private VersionInfo(int compactversion)
+    {
+        m_version_ = compactversion;
+    }
+
+    /**
+     * Gets the int from the version numbers
+     * @param major non-negative version number
+     * @param minor non-negativeversion number
+     * @param milli non-negativeversion number
+     * @param micro non-negativeversion number
+     */
+    private static int getInt(int major, int minor, int milli, int micro)
+    {
+        return (major << 24) | (minor << 16) | (milli << 8) | micro;
+    }
+
+}
diff --git a/src/com/ibm/icu/util/package.html b/src/com/ibm/icu/util/package.html
new file mode 100644
index 0000000..2dc06c7
--- /dev/null
+++ b/src/com/ibm/icu/util/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+International calendars and other utility classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuBuilder.java b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
new file mode 100644
index 0000000..7e649d3
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
@@ -0,0 +1,236 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Window;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+// TO DO:  Don't hard-code menu configurations.  Instead, specify them with
+// strings somehow.  This is an improvement over what we had, and it'll do
+// for now.
+
+/**
+ * AwtMenuBuilder creates a set of AWT menus for interacting
+ * with an MTextPanel.  Future versions of this class may allow
+ * clients to control the menu contents.
+ * @see MTextPanel
+ */
+public final class AwtMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AwtMenuBuilder INSTANCE = new AwtMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    
+    /**
+     * Return an instance of AwtMenuBuilder.
+     */
+    public static AwtMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private MenuBar fMenuBar;
+    
+    private AwtMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+        
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        Menu menu = new Menu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new AwtMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new ObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                return new NumberDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new MessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuFactory.java b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
new file mode 100644
index 0000000..f7f8f58
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
@@ -0,0 +1,114 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.CheckboxMenuItem;
+import java.awt.Menu;
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class AwtMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class AwtMItem extends MItem {
+        
+        private MenuItem fItem;
+        
+        AwtMItem(MenuItem item) {
+            
+            fItem = item;
+            try {
+                CheckboxMenuItem chItem = (CheckboxMenuItem) fItem;
+                chItem.addItemListener(new ItemListener() {
+                    public void itemStateChanged(ItemEvent e) {
+                        handleSelected();
+                    }
+                });
+            }
+            catch(ClassCastException e) {
+                item.addActionListener(new ActionListener() {
+                    public void actionPerformed(ActionEvent evt) {
+                        handleSelected();
+                    }
+                });
+            }
+        }
+        
+        // Ack - how do you do this from inner classes??
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                CheckboxMenuItem item = (CheckboxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private Menu fMenu;
+        
+    AwtMenuFactory(Menu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(MenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            item.setShortcut(new MenuShortcut(menuData.getShortcutChar()));
+        }
+        
+        fMenu.add(item);
+        
+        return new AwtMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new MenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new CheckboxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new MenuItem("-"));
+    }
+}
+    
diff --git a/src/com/ibm/richtext/awtui/MTabRulerComponent.java b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
new file mode 100644
index 0000000..f1d2734
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+ * MTabRulerComponent is implemented by components which provide a tab-ruler
+ * interface for interacting with an MTextPanel.
+ * <p>
+ * Users interact with MTabRulerComponent implementations as follows:
+ * <ul>
+ * <li>The leading margin can be set by dragging the bottom half
+ * of the leftmost triangle.  The first-line indent will "stick" with
+ * the leading margin.</li>
+ * <li>The first-line indent can be set by dragging the top half of the
+ * leftmost triangle.  The first-line indent applies to the first line of
+ * a paragraph.</li>
+ * <li>The trailing margin can be set by dragging the rightmost triangle.</li>
+ * <li>Tabs can be added to the ruler by clicking the mouse on the ruler with the
+ * control key pressed.  Four kinds of tabs are provided:  leading, trailing, center,
+ * and decimal.  The type of a tab can be changed by double-clicking the tab.</li>
+ * <li>Tabs can be repositioned by dragging them with the mouse.</li>
+ * </ul>
+ * <p>
+ * MTabRulerComponent's appearance will reflect the paragraph styles in the
+ * first selected paragraph.  Style changes performed with an 
+ * MTabRulerComponent will apply to all selected paragraphs.
+ */
+public interface MTabRulerComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel);
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor();
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor);
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler();
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin();
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent();
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public int getTrailingMargin();
+}
diff --git a/src/com/ibm/richtext/awtui/MessageDialog.java b/src/com/ibm/richtext/awtui/MessageDialog.java
new file mode 100644
index 0000000..9364b0d
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MessageDialog.java
@@ -0,0 +1,70 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.CardLayout;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see TextPanel
+ */
+public final class MessageDialog extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2328512662551827628L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public MessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        setLayout(new CardLayout());
+        TextPanelSettings settings = TextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        TextPanel panel = new TextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/NumberDialog.java b/src/com/ibm/richtext/awtui/NumberDialog.java
new file mode 100644
index 0000000..bba4962
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/NumberDialog.java
@@ -0,0 +1,157 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.FlowLayout;
+import java.awt.Dialog;
+import java.awt.TextField;
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.Label;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class NumberDialog extends Dialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2181405364377952745L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private TextField fInput = null;
+    private Button fOKButton = null;
+    private Button fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    NumberDialog(Frame parent,
+                 String title,
+                 String message,
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        setLayout(new java.awt.GridLayout(2,1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new TextField(5);
+        panel.add(new Label(message));
+        panel.add(fInput);
+        add("Center", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param the number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/ObjectDialog.java b/src/com/ibm/richtext/awtui/ObjectDialog.java
new file mode 100644
index 0000000..71afbde
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/ObjectDialog.java
@@ -0,0 +1,170 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Button;
+import java.awt.Choice;
+import java.awt.Label;
+import java.awt.FlowLayout;
+import java.awt.Panel;
+import java.awt.GridLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+/**
+* Simple dialog which gets a color
+*/
+final class ObjectDialog extends Dialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8667616278985420231L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+
+    private final Button fOKButton;
+    private final Button fCancelButton;
+    private final Choice fItems;
+    private final Hashtable fNameToValueMap;
+    /**
+    * Construct a new ColorDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    ObjectDialog(Frame parent, 
+                 String title, 
+                 String message, 
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 String[] names,
+                 Object[] values) {
+                    
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        setLayout(new GridLayout(2, 1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
+        fItems = new Choice();
+
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            fItems.add(names[i]);
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+        panel.add(new Label(message));        
+        panel.add(fItems);
+        
+        add("North", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedItem());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param obj the value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TabRuler.java b/src/com/ibm/richtext/awtui/TabRuler.java
new file mode 100644
index 0000000..6eff7db
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TabRuler.java
@@ -0,0 +1,133 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+/**
+ * TabRuler is an implementation of MTabRulerComponent in an AWT component.
+ */
+public final class TabRuler extends Component implements MTabRulerComponent {
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8418099860214866635L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TextFrame.java b/src/com/ibm/richtext/awtui/TextFrame.java
new file mode 100644
index 0000000..d150a24
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TextFrame.java
@@ -0,0 +1,126 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.MenuBar;
+import java.awt.Toolkit;
+
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+/**
+ * TextFrame is a Frame containing an editable TextPanel, a set of standard
+ * menus, and a TabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.TextPanel
+ * @see AwtMenuBuilder
+ * @see TabRuler
+ */
+public final class TextFrame extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8436822743736641732L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextPanel fTextPanel;
+
+    /**
+     * Create a new TextFrame with no text and no title.
+     */
+    public TextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with no text and the given title.
+     * @param title the title of this Frame
+     */
+    public TextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public TextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new TextPanel(text, clipboard);
+
+        TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        setLayout(new BorderLayout());
+        add(fTextPanel, "Center");
+        add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        MenuBar menuBar = new MenuBar();
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+
+        setMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame frame = new TextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/package.html b/src/com/ibm/richtext/awtui/package.html
new file mode 100644
index 0000000..1d16df5
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/package.html
@@ -0,0 +1,13 @@
+<!--
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides classes for building an AWT-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/demo/AwtDocumentWindow.java b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
new file mode 100644
index 0000000..007ceec
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
@@ -0,0 +1,362 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TabRuler;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.FileDialog;
+import java.awt.GridLayout;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Label;
+import java.awt.Panel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+public final class AwtDocumentWindow extends Frame implements DocumentWindow {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8075495366541764458L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private TextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param clipboard the clipboard to use
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    AwtDocumentWindow(EditApplication application,
+                   TextDocument document,
+                   TextPanelSettings textPanelSettings,
+                   boolean useTabRuler,
+                   TextPanelListener listener,
+                   boolean supportStyledText,
+                   boolean supportPlainText,
+                   int[] menus) {
+
+        fApplication = application;
+        
+        fTextPanel = new TextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+            add(tabRuler, "North");
+        }
+        
+        add(fTextPanel, "Center");
+        pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        MenuBar menuBar = new MenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        Menu menu = new Menu(menuTitle);
+        new AwtFileMenuManager(menu, fApplication, this,
+                                supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            byte save = askSave(this, getTitle());
+            if (save == YES) {
+                return doSave();
+            }
+            else {
+                return save == NO;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Retrieve a file from a dialog.  If the user does not
+     * select a file in the dialog this method returns null.
+     * @param kind either FileDialog.LOAD or FileDialog.SAVE.
+     */
+    public static File getFileFromDialog(File origFile,
+                                         String dialogTitle, 
+                                         Frame owner,
+                                         int kind) {
+        
+        FileDialog dialog = new FileDialog(owner, 
+                                           dialogTitle,
+                                           kind);
+        if (origFile != null) {
+            dialog.setDirectory(origFile.getParent());
+            dialog.setFile(origFile.getName());
+        }
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+        
+        File file = null;
+        
+        if (fileStr != null) {
+            file = new File(dirStr, fileStr);
+        }
+        
+        return file;
+    }
+    
+    private static final byte YES = 0;
+    private static final byte NO = 1;
+    private static final byte CANCEL = 2;
+
+    private static final class DialogListener implements ActionListener {
+
+        Dialog fDialog;
+        Button fYes, fNo, fCancel;
+        byte fState;
+
+        DialogListener(Dialog dialog,
+                       Button yes,
+                       Button no,
+                       Button cancel) {
+
+            fDialog = dialog;
+            fYes = yes;
+            fNo = no;
+            fCancel = cancel;
+            fYes.addActionListener(this);
+            fNo.addActionListener(this);
+            fCancel.addActionListener(this);
+            fState = -1;
+        }
+
+        public void actionPerformed(ActionEvent event) {
+
+            Object source = event.getSource();
+            if (source == fYes) {
+                fState = YES;
+            }
+            else if (source == fNo) {
+                fState = NO;
+            }
+            else if (source == fCancel) {
+                fState = CANCEL;
+            }
+            else {
+                return;
+            }
+
+            fDialog.dispose();
+        }
+
+        byte getState() {
+
+            return fState;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  Possible reponses are Yes, No, and
+     * Cancel.  The returned value indicates which response
+     * was chosen.
+     */
+    private static byte askSave(Frame parent, String fileName) {
+
+        Dialog dialog = new Dialog(parent, true);
+        dialog.setLayout(new GridLayout(0, 1));
+        
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String text = MessageFormat.format(pattern, new Object[] {fileName});
+        dialog.add(new Label(text, Label.CENTER));
+        
+        Button yes = new Button(ResourceUtils.getString(EditorResources.YES));
+        Button no = new Button(ResourceUtils.getString(EditorResources.NO));
+        Button cancel = new Button(ResourceUtils.getString(EditorResources.CANCEL));
+
+        Panel panel = new Panel();
+        panel.add(yes);
+        panel.add(no);
+        panel.add(cancel);
+        dialog.add(panel);
+
+        DialogListener listener = new DialogListener(dialog, yes, no, cancel);
+
+        dialog.setSize(220, 130);
+        dialog.show();
+
+        return listener.getState();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/AwtFileMenuManager.java b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
new file mode 100644
index 0000000..37d80053
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Menu;
+import java.awt.MenuItem;
+
+final class AwtFileMenuManager extends FileMenuManager {
+
+    private Menu fMenu;
+    
+    public AwtFileMenuManager(Menu menu,
+                              EditApplication application, 
+                              DocumentWindow document,
+                              boolean supportStyledFormat,
+                              boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuItem item = ResourceUtils.createMenuItem(key);
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new MenuItem("-"));
+    }
+}
diff --git a/src/com/ibm/richtext/demo/CodeEdit.java b/src/com/ibm/richtext/demo/CodeEdit.java
new file mode 100644
index 0000000..aedf2ee
--- /dev/null
+++ b/src/com/ibm/richtext/demo/CodeEdit.java
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Toolkit;
+
+import java.io.File;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+public class CodeEdit extends EditApplication {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    protected final TextPanelSettings fSettings;
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingCodeEdit(args,1);
+        }
+        else {
+            new CodeEdit(args, 0);
+        }
+    }
+
+    protected CodeEdit(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(),
+              TextDocument.PLAIN_TEXT);
+
+        AttributeMap defaultStyle = new AttributeMap(TextAttribute.SIZE, new Float(12))
+                                       .addAttribute(TextAttribute.FAMILY, "Monospaced");
+                                       
+        fSettings = TextPanel.getDefaultSettings();
+        fSettings.setWraps(false);
+        fSettings.addDefaultValues(defaultStyle);
+        
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = null;
+                Throwable error = null;
+                try {
+                    document = TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+                }
+                catch(Exception e) {
+                    error = e;
+                }
+                
+                if (error != null) {
+                    error.printStackTrace();
+                }
+                else {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new AwtDocumentWindow(this, 
+                                  document,
+                                  fSettings,
+                                  false,
+                                  new SyntaxColorer(),
+                                  false,
+                                  true,
+                                  menus);
+    }
+    
+    protected static final int[] menus = { AwtMenuBuilder.EDIT, 
+                                           AwtMenuBuilder.BIDI,
+                                           AwtMenuBuilder.ABOUT };
+
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        
+        File file = AwtDocumentWindow.getFileFromDialog(null, title, dialogParent, FileDialog.LOAD);
+        if (file != null) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e) {
+                System.out.print("");
+            }
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/DocumentWindow.java b/src/com/ibm/richtext/demo/DocumentWindow.java
new file mode 100644
index 0000000..bc69f02
--- /dev/null
+++ b/src/com/ibm/richtext/demo/DocumentWindow.java
@@ -0,0 +1,32 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public interface DocumentWindow {
+
+    public void doNew();
+    
+    public void doOpen();
+    
+    public boolean doClose();
+    
+    public boolean doSave();
+    
+    public boolean doSaveAs(int format);
+    
+    public void doPrint();
+    
+    public void setSize(int wd, int ht);
+    
+    public void show();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditApplication.java b/src/com/ibm/richtext/demo/EditApplication.java
new file mode 100644
index 0000000..b3630e4
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditApplication.java
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Frame;
+import java.awt.datatransfer.Clipboard;
+
+import java.text.MessageFormat;
+
+import java.util.Vector;
+
+public abstract class EditApplication {
+
+    private Clipboard fClipboard;
+    private int fDefaultFormat;
+    private Vector fWindows = new Vector();
+    private int fUntitledCount = 0;
+    
+    protected EditApplication(Clipboard clipboard, int defaultFormat) {
+        
+        fClipboard = clipboard;
+        fDefaultFormat = defaultFormat;
+    }
+    
+    /**
+     * New documents are named "Untitled 1", "Untitled 2", etc.  This
+     * method returns the appropriate name for the next new document.
+     * @return the next new document name
+     */
+    private String getNextNewName() {
+
+        fUntitledCount += 1;
+        String pattern = ResourceUtils.getString(EditorResources.UNTITLED_MSG);
+        return MessageFormat.format(pattern,
+                                    new Object[]{new Integer(fUntitledCount)});
+    }
+    
+    public final Clipboard getClipboard() {
+        
+        return fClipboard;
+    }
+
+    protected abstract DocumentWindow createDocumentWindow(TextDocument document);
+    
+    public abstract TextDocument openDocument(Frame dialogParent);
+    
+    public final TextDocument createNewDocument() {
+    
+        String name = getNextNewName();
+        int format = fDefaultFormat;
+        return TextDocument.createEmpty(name, format);
+    }
+    
+    public final void doNewWindow() {
+        
+        addDocument(TextDocument.createEmpty(getNextNewName(), fDefaultFormat));
+    }
+    
+    public final void addDocument(TextDocument document) {
+        
+        final DocumentWindow window = createDocumentWindow(document);
+
+        window.setSize(500, 400);
+        window.show();
+        fWindows.addElement(window);
+    }
+    
+    /**
+     * Remove document from list of documents.  Quit application if list
+     * length falls to zero.
+     * @param window window of the document to remove
+     */
+    public final void removeDocumentWindow(DocumentWindow window) {
+
+        fWindows.removeElement(window);
+        if (fWindows.isEmpty()) {
+            quit();
+        }
+    }
+
+    /**
+     * Go through list of documents and attempt to close each document.
+     * If all documents close successfully, then exit.
+     */
+    public final void doExit() {
+
+        // Clone fWindows since it can get modified while being traversed.
+        Vector windows = (Vector) fWindows.clone();
+
+        int size = windows.size();
+        for (int i=0; i < size; i++) {
+            DocumentWindow window = (DocumentWindow) windows.elementAt(i);
+            if (!window.doClose()) {
+                return;
+            }
+        }
+
+        // quit will be called when last document removes itself
+    }
+
+    /**
+     * Called when last document window closes.  Default implementation
+     * calls System.exit.
+     */
+    protected void quit() {
+
+        System.exit(0);
+    }
+}
diff --git a/src/com/ibm/richtext/demo/EditDemo.java b/src/com/ibm/richtext/demo/EditDemo.java
new file mode 100644
index 0000000..f572aea
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditDemo.java
@@ -0,0 +1,126 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Toolkit;
+
+import java.io.File;
+import java.io.StreamCorruptedException;
+import com.ibm.richtext.textpanel.TextPanel;
+
+/**
+ * EditDemo is the main class for a simple, multiple-document
+ * styled text editor, built with the classes in the textpanel
+ * and textframe packages.
+ * <p>
+ * To run EditDemo, type:
+ * <blockquote><pre>
+ * java com.ibm.richtext.demo.EditDemo [file1] [file2] [...]
+ * </pre></blockquote>
+ * where the filenames are files saved with this demo.
+ */
+public class EditDemo extends EditApplication {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingEditDemo(args,1);
+        }
+        else {
+            new EditDemo(args, 0);
+        }
+    }
+
+    protected EditDemo(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(), 
+              TextDocument.STYLED_TEXT);
+
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = getDocumentFromFile(file);
+                
+                if (document != null) {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    public static TextDocument getDocumentFromFile(File file) {
+    
+        Exception exception = null;
+        
+        try {
+            return TextDocument.createFromFile(file, TextDocument.STYLED_TEXT);
+        }
+        catch(StreamCorruptedException e) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e2) {
+                exception = e2;
+            }
+        }
+        catch(Exception e) {
+            exception = e;
+        }
+        
+        System.err.println("Exception opening file.");
+        exception.printStackTrace();
+        
+        return null;
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+        
+        return new AwtDocumentWindow(this, 
+                                     document,
+                                     TextPanel.getDefaultSettings(),
+                                     true,
+                                     null,
+                                     true,
+                                     true,
+                                     null);
+    }
+    
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(null,
+                                                     title,
+                                                     dialogParent,
+                                                     FileDialog.LOAD);
+        if (file != null) {
+            return getDocumentFromFile(file);
+        }
+        else {
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditorResources.java b/src/com/ibm/richtext/demo/EditorResources.java
new file mode 100644
index 0000000..d95fdece
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditorResources.java
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class EditorResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // menu names - values are Strings
+    public static final String FILE = "File";
+
+    // file menu items - values are MenuData instances
+    public static final String NEW = "New";
+    public static final String NEW_WINDOW = "New Window";
+    public static final String OPEN = "Open...";
+    public static final String SAVE = "Save";
+    public static final String SAVE_AS = "Save As...";
+    public static final String SAVE_AS_STYLED = "Save As Styled Text...";
+    public static final String SAVE_AS_TEXT = "Save As Plain Text...";
+    public static final String CLOSE = "Close";
+    public static final String PRINT = "Print";
+    public static final String EXIT = "Exit";
+
+    // button labels - values are Strings
+    public static final String YES = "Yes";
+    public static final String NO = "No";
+    public static final String CANCEL = "Cancel";
+
+    // message strings - values are Strings
+    public static final String SAVE_MSG = "Save {0} before closing?";
+    public static final String UNTITLED_MSG = "Untitled {0}";
+
+    // window and dialog titles - values are Strings
+    public static final String OPEN_TITLE = "Open Document";
+    public static final String SAVE_TITLE = "Save As";
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance with the given
+     * shortcut.
+     */
+    private static Object[] makeEntry(String name,
+                                      char shortCut,
+                                      int keyCode) {
+
+        return new Object[] { name, new MenuData(name, shortCut, keyCode) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance.
+     */
+    private static Object[] makeEntry(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array in which both elements are obj.
+     */
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            duplicate(FILE),
+            duplicate(YES),
+            duplicate(NO),
+            duplicate(CANCEL),
+            duplicate(SAVE_MSG),
+            duplicate(SAVE_TITLE),
+            duplicate(OPEN_TITLE),
+            duplicate(UNTITLED_MSG),
+            makeEntry(NEW, 'n', KeyEvent.VK_N),
+            makeEntry(NEW_WINDOW),
+            makeEntry(OPEN, 'o', KeyEvent.VK_O),
+            makeEntry(SAVE, 's', KeyEvent.VK_S),
+            makeEntry(SAVE_AS),
+            makeEntry(SAVE_AS_STYLED),
+            makeEntry(SAVE_AS_TEXT),
+            makeEntry(CLOSE),
+            makeEntry(PRINT),
+            makeEntry(EXIT),
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/demo/FileMenuManager.java b/src/com/ibm/richtext/demo/FileMenuManager.java
new file mode 100644
index 0000000..a70cf02
--- /dev/null
+++ b/src/com/ibm/richtext/demo/FileMenuManager.java
@@ -0,0 +1,114 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * This class creates a File menu and manages user interactions
+ * with the menu.
+ */
+public abstract class FileMenuManager implements ActionListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private EditApplication fApplication;
+    private DocumentWindow fDocumentWindow;
+    private Object fNew, fNewWindow, fOpen, fSave;
+    private Object fSaveAsStyled, fSaveAsText, fClose, fPrint, fExit;
+
+    protected FileMenuManager(EditApplication application, 
+                              DocumentWindow document) {
+
+        fApplication = application;
+        fDocumentWindow = document;
+    }
+    
+    protected final void createItems(boolean supportStyledFormat,
+                                     boolean supportPlainFormat) {
+        
+        if (!supportStyledFormat && !supportPlainFormat) {
+            throw new IllegalArgumentException("Must support at least one format.");
+        }
+        
+        fNew = addMenuItem(EditorResources.NEW);
+        fNewWindow = addMenuItem(EditorResources.NEW_WINDOW);
+        
+        addSeparator();
+
+        fOpen = addMenuItem(EditorResources.OPEN);
+
+        fSave = addMenuItem(EditorResources.SAVE);
+        
+        if (supportStyledFormat) {
+            if (supportPlainFormat) {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS_STYLED);
+                fSaveAsText = addMenuItem(EditorResources.SAVE_AS_TEXT);
+            }
+            else {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS);
+            }
+        }
+        else {
+            fSaveAsText = addMenuItem(EditorResources.SAVE_AS);
+        }
+        
+        addSeparator();
+        fClose = addMenuItem(EditorResources.CLOSE);
+        addSeparator();
+        fPrint = addMenuItem(EditorResources.PRINT);
+        addSeparator();
+        fExit = addMenuItem(EditorResources.EXIT);
+    }
+    
+    protected abstract Object addMenuItem(String key);
+
+    protected abstract void addSeparator();
+    
+    public final void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+
+        if (source == fNew) {
+            fDocumentWindow.doNew();
+        }
+        else if (source == fNewWindow) {
+            fApplication.doNewWindow();
+        }
+        else if (source == fOpen) {
+            fDocumentWindow.doOpen();
+        }
+        else if (source == fClose) {
+            fDocumentWindow.doClose();
+        }
+        else if (source == fSave) {
+            fDocumentWindow.doSave();
+        }
+        else if (source == fSaveAsStyled) {
+            fDocumentWindow.doSaveAs(TextDocument.STYLED_TEXT);
+        }
+        else if (source == fSaveAsText) {
+            fDocumentWindow.doSaveAs(TextDocument.PLAIN_TEXT);
+        }
+        else if (source == fPrint) {
+            fDocumentWindow.doPrint();
+        }
+        else if (source == fExit) {
+            fApplication.doExit();
+        }
+        else {
+            throw new Error("Unknown event source: " + source);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/MenuData.java b/src/com/ibm/richtext/demo/MenuData.java
new file mode 100644
index 0000000..7d3459c
--- /dev/null
+++ b/src/com/ibm/richtext/demo/MenuData.java
@@ -0,0 +1,60 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fShortcutKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fShortcutKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcut() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+    
+        return fShortcutKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/ResourceUtils.java b/src/com/ibm/richtext/demo/ResourceUtils.java
new file mode 100644
index 0000000..317a662
--- /dev/null
+++ b/src/com/ibm/richtext/demo/ResourceUtils.java
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class for dealing with resource data.
+ */
+public final class ResourceUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        String bundleName = "com.ibm.richtext.demo.EditorResources";
+        try {
+            BUNDLE = ResourceBundle.getBundle(bundleName);
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load " + bundleName +
+                               ";  Exception: " + e);
+            BUNDLE = new EditorResources();
+        }
+    }
+
+    public static String getString(String key) {
+
+        try {
+            return BUNDLE.getString(key);
+        }
+        catch(MissingResourceException e) {
+            return key;
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+    
+        try {
+            return (MenuData) BUNDLE.getObject(key);
+        }
+        catch(MissingResourceException e) {
+            return new MenuData(key);
+        }
+    }
+        
+    public static MenuItem createMenuItem(String key) {
+
+        MenuData menuData = getMenuData(key);
+
+        if (menuData.hasShortcut()) {
+            MenuShortcut shortcut = new MenuShortcut(menuData.getShortcut());
+            return new MenuItem(menuData.getName(), shortcut);
+        }
+        else {
+            return new MenuItem(menuData.getName());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/SyntaxColorer.java b/src/com/ibm/richtext/demo/SyntaxColorer.java
new file mode 100644
index 0000000..e8aa8f7
--- /dev/null
+++ b/src/com/ibm/richtext/demo/SyntaxColorer.java
@@ -0,0 +1,286 @@
+/*
+ * (C) Copyright IBM Corp. 1999-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import java.awt.Color;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.text.CollationKey;
+import java.text.Collator;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * SyntaxColorer is a TextPanelListener that applies a style
+ * to a set of words in the TextPanel.
+ */
+public final class SyntaxColorer implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    private static final class Colorer {
+        
+        static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private int fStart;
+        private Hashtable fStyleMap;
+        private Collator fCollator = Collator.getInstance();
+        private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+
+        private String fText;
+        private int fCurrentStart;
+        private int fCurrentLimit;
+        private AttributeMap fCurrentStyle;
+        
+        Colorer(Hashtable styles) {
+
+            fStyleMap = new Hashtable(styles.size());
+
+            Enumeration e = styles.keys();
+            while (e.hasMoreElements()) {
+                String k = (String) e.nextElement();
+                fStyleMap.put(fCollator.getCollationKey(k), styles.get(k));
+            }
+        }
+        
+        void set(CharacterIterator text, int start, int limit) {
+            
+            fStart = start;
+
+            StringBuffer sb = new StringBuffer(limit-start);
+            for (char c=text.setIndex(start); text.getIndex() != limit; c=text.next()) {
+                sb.append(c);
+            }
+            fText = sb.toString();
+            fCurrentStart = fCurrentLimit = 0;
+            fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            
+            fBreakIter.setText(fText);
+            fBreakIter.first();
+        }
+            
+        boolean next() {
+            
+            if (fCurrentLimit == fText.length()) {
+                fText = null;
+                return false;
+            }
+
+            fCurrentStart = fCurrentLimit;
+            fCurrentLimit = fBreakIter.next();
+            
+            String word = fText.substring(fCurrentStart, fCurrentLimit);
+            CollationKey ck = fCollator.getCollationKey(word);
+            fCurrentStyle = (AttributeMap) fStyleMap.get(ck);
+            if (fCurrentStyle == null) {
+                fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            }
+            
+            return true;
+        }
+            
+        int currentStart() {
+            return fCurrentStart + fStart;
+        }
+        
+        int currentLimit() {
+            return fCurrentLimit + fStart;
+        }
+        
+        AttributeMap currentStyle() {
+            return fCurrentStyle;
+        }
+    }
+
+    private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+    private Colorer fColorer;
+    private boolean fModifying = false;
+    private AttributeMap fDefaultKeywordStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private Hashtable fModifierCache;
+    
+    public SyntaxColorer() {
+        
+        this(null);
+    }
+    
+    public SyntaxColorer(MTextPanel panel) {
+        
+        Hashtable ht = new Hashtable();
+
+        //Uncomment this to make keywords appear right-to-left!
+        //fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.BIDI_EMBEDDING, 
+        //                                                         new Integer(-1));
+        
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.UNDERLINE,
+                                                                 TextAttribute.UNDERLINE_ON);
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.FOREGROUND, 
+                                                                 Color.blue);
+        
+        String[] javaWords = {"abstract" , "boolean", "break", "byte",
+                              "byvalue", "case", "cast", "default",
+                              "do", "double", "else", "extends", 
+                              "false", "final", "goto", "if",
+                              "implements", "import", "inner", "instanceof",
+                              "int", "operator", "outer", "package",
+                              "private", "protected", "public", "rest",
+                              "synchronized", "this", "throw", "throws",
+                              "transient", "true", "try",
+                              "catch", "char", "const", "continue",
+                              "finally", "float", "for", "future",
+                              "generic", "interface", "long", "native",
+                              "new", "null", "return", "short",
+                              "static", "super", "switch", "var",
+                              "void", "volatile", "while", "class"};
+
+        for (int i=0; i < javaWords.length; i++) {
+            ht.put(javaWords[i], fDefaultKeywordStyle);
+        }
+        
+        fColorer = new Colorer(ht);
+        
+        if (panel != null) {
+            MConstText text = panel.getText();
+            colorRange(0, text.length(), text.createCharacterIterator(), panel);
+        }
+        
+        fModifierCache = new Hashtable(2);
+        fModifierCache.put(fDefaultKeywordStyle, 
+                           StyleModifier.createReplaceModifier(fDefaultKeywordStyle));
+        fModifierCache.put(AttributeMap.EMPTY_ATTRIBUTE_MAP, 
+                           StyleModifier.createReplaceModifier(AttributeMap.EMPTY_ATTRIBUTE_MAP));
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.TEXT_CHANGED;
+    }
+    
+    public void textEventOccurred(TextPanelEvent e) {
+
+        if (fModifying) {
+            return;
+        }
+        
+        MTextPanel panel = (MTextPanel) e.getSource();
+        
+        final MConstText text = panel.getText();
+        int start = text.damagedRangeStart();
+        int limit = text.damagedRangeLimit();
+        if (start > limit) {
+            return;
+        }
+        
+        CharacterIterator textIter = text.createCharacterIterator();
+        
+        fBreakIter.setText(textIter);
+        if (start > 0) {
+            if (start == text.length()) {
+                fBreakIter.last();
+            }
+            else {
+                fBreakIter.following(start-1);
+            }
+            start = fBreakIter.previous();
+        }
+        if (limit < text.length()) {
+            fBreakIter.following(limit);
+            //int l;
+            if ((fBreakIter.previous()) <= limit) {
+                limit = fBreakIter.next();
+            }
+        }
+        
+        fModifying = true;
+        colorRange(start, limit, textIter, panel);
+        fModifying = false;
+    }
+    
+    private void colorRange(final int start, 
+                            final int limit, 
+                            CharacterIterator textIter,
+                            MTextPanel panel) {
+        
+        fColorer.set(textIter, start, limit);
+
+        MConstText oldText = panel.getText();
+        MText newText = null;
+        
+        while (fColorer.next()) {
+
+            int rangeStart = fColorer.currentStart();
+            int rangeLimit = fColorer.currentLimit();
+            
+            AttributeMap style = fColorer.currentStyle();
+            
+            if (oldText.characterStyleLimit(rangeStart) < rangeLimit ||
+                    oldText.characterStyleAt(rangeStart) != style) {
+            
+                int cstart = rangeStart-start;
+                int climit = rangeLimit-start;
+                if (newText == null) {
+                    newText = new StyledText(oldText, start, limit);
+                }
+                StyleModifier mod = (StyleModifier) fModifierCache.get(style);
+                newText.modifyCharacterStyles(cstart, climit, mod);
+            }
+        }
+        
+        if (newText != null) {
+        
+            int oldStart = panel.getSelectionStart();
+            int oldLimit = panel.getSelectionEnd();
+            
+            panel.replaceRange(newText, start, limit);            
+    
+            panel.select(oldStart, oldLimit);
+            if (oldStart == oldLimit) {
+                StyleModifier mod = (StyleModifier) fModifierCache.get(AttributeMap.EMPTY_ATTRIBUTE_MAP);                
+                panel.modifyCharacterStyleOnSelection(mod);
+            }
+        }
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame f = new TextFrame();
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        f.setSize(400, 300);
+        MTextPanel panel = f.getTextPanel();
+        panel.addListener(new SyntaxColorer(panel));
+        f.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/TextDocument.java b/src/com/ibm/richtext/demo/TextDocument.java
new file mode 100644
index 0000000..85be3b9
--- /dev/null
+++ b/src/com/ibm/richtext/demo/TextDocument.java
@@ -0,0 +1,349 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * A TextDocument handles the association between a file on disk
+ * and a TextPanel.
+ */
+public final class TextDocument {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int BUF_SIZE = 1024;
+    
+    private String fTitle;
+    private MConstText fText;
+    private File fFile;
+    private MTextPanel fTextPanel = null;
+    private boolean isModified = false;
+    private int fFormat = STYLED_TEXT;
+    
+    private TextDocument(String title,
+                         MConstText text,
+                         File file,
+                         int format) {
+        
+        fTitle = title;
+        fText = text;
+        fFile = file;
+        setFormat(format);
+    }
+    
+    public static final int STYLED_TEXT = 0;
+    public static final int PLAIN_TEXT = 1;
+    
+    /** 
+     * Return a new TextDocument with no associated file and
+     * empty text.
+     */
+    public static TextDocument createEmpty(String title, int format) {
+        
+        return new TextDocument(title, new StyledText(), null, format);
+    }
+    
+    /**
+     * Return a TextDocument created from the contents of the given
+     * file.  This method may throw an exception if the file cannot
+     * be read.  In particular, if the format is given as STYLED_TEXT
+     * but the file does not contain a serialized MConstText, 
+     * this method will throw StreamCorruptedException.
+     */
+    public static TextDocument createFromFile(File file, int format) throws Exception {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        
+        MConstText text;
+        if (format == STYLED_TEXT) {
+            text = readMText(file);
+        }
+        else {
+            text = readMTextFromTextFile(file);
+        }
+        
+        TextDocument document = new TextDocument(file.getName(), 
+                                                 text,
+                                                 file,
+                                                 format);
+        return document;
+    }
+    
+    /**
+     * Return true if this document's text differs from the contents
+     * of its file.
+     */
+    public boolean isModified() {
+        
+        if (fTextPanel == null) {
+            return isModified;
+        }
+        else {
+            return fTextPanel.isModified();
+        }
+    }
+    
+    /**
+     * Set the MTextPanel that will be used to edit the document's
+     * text.  The document's text becomes the contents of the
+     * MTextPanel.
+     */
+    public void setTextPanel(MTextPanel textPanel) {
+
+        if (fTextPanel != null) {
+            fText = fTextPanel.getText();
+            isModified = fTextPanel.isModified();
+        }
+        
+        fTextPanel = textPanel;
+        
+        if (fTextPanel != null) {
+            fTextPanel.setText(fText);
+            fText = null;
+            fTextPanel.setModified(isModified);
+            fTextPanel.clearCommandLog();
+        }
+    }
+    
+    public File getFile() {
+    
+        return fFile;
+    }
+    
+    /**
+     * Set this document's file.  The document's title will
+     * change to the file name.  The file cannot be null.
+     */
+    public void setFile(File file) {
+        
+        fFile = file;
+        fTitle = file.getName();
+    }
+    
+    /**
+     * Set the format of this document.  The format determines
+     * whether the document will be written to files as styled
+     * text or plain characters.
+     */
+    public void setFormat(int format) {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        fFormat = format;
+    }
+    
+    /**
+     * Return the format of this document.
+     */
+    public int getFormat() {
+        
+        return fFormat;
+    }
+    
+    /**
+     * Write the document's text to its file.  If the document does
+     * not have an associated file then this method is equivalent to
+     * saveAs.  This method returns true if the save operation succeeds.
+     */
+    public boolean save() {
+
+        if (fFile == null) {
+            throw new RuntimeException("Can't save without a file.");
+        }
+                
+        MConstText text = getText();
+        boolean success = fFormat==STYLED_TEXT? writeMText(fFile, text) :
+                                                writePlainMText(fFile, text);
+        if (success && fTextPanel != null) {
+            fTextPanel.setModified(false);
+        }
+        return success;
+    }
+    
+    /** 
+     * Return this document's styled text.
+     */
+    public MConstText getText() {
+        
+        if (fTextPanel == null) {
+            return fText;
+        }
+        else {
+            return fTextPanel.getText();
+        }
+    }
+    
+    /**
+     * Return the title of this document.
+     */
+    public String getTitle() {
+        
+        return fTitle;
+    }
+    
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    private static MConstText readMText(File file) throws Exception {
+
+        FileInputStream inStream = null;
+        
+        try {
+            inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            return (MConstText) objStream.readObject();
+        }
+        finally {
+            if (inStream != null) {
+                try {
+                    inStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+    
+    /**
+     * Read the given file as a plain text file, and return its
+     * contents as an MConstText.  The character and paragraph styles in 
+     * the returned text will be EMPTY_ATTRIBUTE_MAP.
+     */
+    private static MConstText readMTextFromTextFile(File file) throws Exception {
+        
+        InputStreamReader in = null;
+        
+        try {
+            in = new FileReader(file);
+            
+            MText text = new StyledText();
+            
+            char[] buf = new char[BUF_SIZE];
+            int read;
+            while ((read=in.read(buf, 0, buf.length)) != -1) {
+                int len = text.length();
+                text.replace(len, len, buf, 0, read, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            return text;
+        }
+        finally {
+            if (in != null) {
+                try {
+                    in.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+
+    /**
+     * Attempt to save the given text in the given file.
+     * @return true if the operation succeeded
+     */
+    private static boolean writeMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStream outStream = null;
+        
+        try {
+            outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+
+    /**
+     * Write the given MConstText to the given file as plain text.
+     */
+    private static boolean writePlainMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStreamWriter outStream = null;
+        
+        try {
+            outStream = new FileWriter(file);
+            char[] buf = new char[BUF_SIZE];
+            int length = text.length();
+            int start = 0;
+            do {
+                int count = Math.min(length-start, buf.length);
+                text.extractChars(start, start+count, buf, 0);
+                outStream.write(buf, 0, count);
+                start += count;
+            } while (start < length);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/package.html b/src/com/ibm/richtext/demo/package.html
new file mode 100644
index 0000000..b67ce8a
--- /dev/null
+++ b/src/com/ibm/richtext/demo/package.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Provides EditDemo, a simple, multiple-document styled text editor, built with the richtext classes in the textpanel and textframe packages.</p>
+
+<p>To run the demo, type: 
+<tt><blockquote>  java -classpath classes com.ibm.richtext.demo.EditDemo [-swing] [file]*</blockquote>
+It will use a Swing GUI if <code>-swing</code> is present, otherwise it will use an AWT GUI.  One or more <code>file</code> arguments can be present, these must be files that have been created with the EditDemo.  A separate window will be opened for each file.</p>
+
+<p>Other classes in this package are supporting classes for the EditDemo.</p>
+</body>
+</html>
diff --git a/src/com/ibm/richtext/manifest.stub b/src/com/ibm/richtext/manifest.stub
new file mode 100644
index 0000000..2da7201
--- /dev/null
+++ b/src/com/ibm/richtext/manifest.stub
@@ -0,0 +1,13 @@
+Main-Class: com.ibm.richtext.demo.EditDemo
+Manifest-Version: 1.0
+Specification-Title: ICU for Java RichEdit
+Specification-Version: 2.6
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java RichEdit
+Implementation-Version: 2.6
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+
+Name: com/ibm/richtext
+
+
diff --git a/src/com/ibm/richtext/print/MConstTextPrintable.java b/src/com/ibm/richtext/print/MConstTextPrintable.java
new file mode 100644
index 0000000..b2bc10c
--- /dev/null
+++ b/src/com/ibm/richtext/print/MConstTextPrintable.java
@@ -0,0 +1,160 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.util.Vector;
+
+/**
+ * This class's interface is very close to that of the JDK 1.2 Printable 
+ * interface, but can execute on JDK 1.1.  On 1.2, this class is wrapped
+ * in a real Printable.  On 1.1, the PrintContext class uses this class
+ * and a PrintJob for printing.
+ *
+ * Note that this class paginates the text in the first call to print,
+ * or to getPageCount.
+ * After construction, its page size is essentially fixed.  This is not 
+ * as flexible as the 1.2 classes allow, but it should suffice.
+ */
+final class MConstTextPrintable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static final int PAGE_EXISTS = 0;
+    static final int NO_SUCH_PAGE = 1;
+    
+    private MConstText fText;
+    private AttributeMap fDefaultStyles;
+    private Rectangle fPageRect;
+    
+    // If these two fields are null the text has not been paginated.
+    private MFormatter fFormatter;
+    private Vector fPageStarts;
+
+    /**
+     * Construct an MConstTextPrintable to print the given text.  Each page will fit
+     * into pageRect.
+     */
+    MConstTextPrintable(MConstText text, 
+                        AttributeMap defaultStyles,
+                        Rectangle pageRect) {
+
+        fText = text;
+        fDefaultStyles = defaultStyles;
+        fPageRect = new Rectangle(pageRect);
+    }
+    
+    private static boolean emptyParagraphAtEndOfText(MConstText text) {
+
+        if (text.length() > 0) {
+            char ch = text.at(text.length()-1);
+            return ch == '\n' || ch == '\u2029';
+        }
+        else {
+            return false;
+        }
+    }
+
+    private void paginate(Graphics graphics) {
+        
+        if (fPageStarts == null) {
+
+            fFormatter = MFormatter.createFormatter(fText,
+                                                    fDefaultStyles,
+                                                    fPageRect.width,
+                                                    true,
+                                                    graphics);
+ 
+            fFormatter.formatToHeight(Integer.MAX_VALUE);
+            fFormatter.stopBackgroundFormatting();
+
+            fPageStarts = new Vector();
+            
+            int lineCount = fFormatter.getLineCount();
+            if (emptyParagraphAtEndOfText(fText)) {
+                lineCount -= 1;
+            }
+
+            int startLine = 0;
+            fPageStarts.addElement(new Integer(startLine));
+            int startHeight = 0;
+            final int pageHeight = fPageRect.height;
+
+            while (startLine < lineCount) {
+
+                int nextStart = fFormatter.lineAtHeight(startHeight + pageHeight);
+                fPageStarts.addElement(new Integer(nextStart));
+                startHeight = fFormatter.lineGraphicStart(nextStart);
+                startLine = nextStart;
+            }
+        }
+    }
+
+    /**
+     * Print the given page in the given graphics.  Page numbers are
+     * 0-based.  The the return value indicates whether
+     * the page number is valid (as in JDK 1.2).  Since you can get the page count
+     * directly, there's really no excuse for passing in an invalid page
+     * index.
+     * @param graphics the Graphics to print to
+     * @param pageNumber the 0-based page number.  Should be nonnegative and
+     * less than getPageCount()
+     * @return PAGE_EXISTS if the page number is valid, or 
+     *         NO_SUCH_PAGE otherwise
+     */
+    int print(Graphics graphics, int pageNumber) {
+        
+        paginate(graphics);
+        
+        if (pageNumber < getPageCount(graphics) && pageNumber >= 0) {
+            graphics.setColor(Color.black); // workaround for 1.2 printing bug
+            int startLine = ((Integer)fPageStarts.elementAt(pageNumber)).intValue();
+            int limitLine = ((Integer)fPageStarts.elementAt(pageNumber+1)).intValue();
+
+            int topOfPage = fFormatter.lineGraphicStart(startLine);
+            int pageHeight = fFormatter.lineGraphicStart(limitLine) - topOfPage;
+
+            Point origin = new Point(fPageRect.x, fPageRect.y - topOfPage);
+            Rectangle drawRect = new Rectangle(fPageRect);
+            drawRect.height = pageHeight;
+            
+            fFormatter.draw(graphics, drawRect, origin);
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    /**
+     * Return the number of pages that can be printed.
+     * @param graphics a Graphics instance representative of those 
+     * which will be printed into
+     */
+    int getPageCount(Graphics graphics) {
+        
+        paginate(graphics);
+        return fPageStarts.size() - 1;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/PrintContext.java b/src/com/ibm/richtext/print/PrintContext.java
new file mode 100644
index 0000000..c81af9c
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintContext.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterJob;
+import java.awt.print.PrinterException;
+
+final class PrintContext implements Printable {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private MConstTextPrintable fPrintable;
+    
+    PrintContext(MConstText text, AttributeMap defaultStyles, PageFormat pf) {
+        
+        int width = (int) Math.round(pf.getImageableWidth());
+        int height = (int) Math.round(pf.getImageableHeight());
+        int left = (((int)Math.round(pf.getWidth())) - width) / 2;
+        int top = (((int)Math.round(pf.getHeight())) - height) / 2;
+        
+        Rectangle pageRect = new Rectangle(left, top, width, height);
+        fPrintable = new MConstTextPrintable(text, defaultStyles, pageRect);
+    }
+    
+    public int print(Graphics graphics,
+                     PageFormat format,
+                     int pageIndex) throws PrinterException {
+        
+        if (false)
+            throw new PrinterException("save trees");
+            
+        if (fPrintable.print(graphics, pageIndex) == MConstTextPrintable.PAGE_EXISTS) {
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    static void userPrintText(MConstText text,
+                              AttributeMap defaultStyles,
+                              Frame frame,
+                              String jobTitle) {
+
+        PrinterJob job = PrinterJob.getPrinterJob();
+        job.setJobName(jobTitle);
+        if (job.printDialog()) {
+            job.setPrintable(new PrintContext(text, defaultStyles, job.defaultPage()));
+            try {
+                job.print();
+            }
+            catch(PrinterException e) {
+                System.out.println("Printer exception: " + e);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/print/PrintingUtils.java b/src/com/ibm/richtext/print/PrintingUtils.java
new file mode 100644
index 0000000..185d086
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintingUtils.java
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+
+/**
+ * PrintingUtils contains a static method for printing styled text.
+ * @see com.ibm.richtext.styledtext.MConstText
+ */
+public final class PrintingUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    // Keep it out of Javadoc...
+    private PrintingUtils() {
+    }
+    
+    /**
+     * Print the given text.  A Print dialog is presented to the user;
+     * unless the user cancels, the text is printed.
+     * @param text the text to print
+     * @param defaultStyles default values for unspecified attributes
+     * @param frame the parent of the Print dialog
+     * @param jobTitle the title of the PrintJob
+     */
+    public static void userPrintText(MConstText text,
+                                     AttributeMap defaultStyles,
+                                     Frame frame,
+                                     String jobTitle) {
+
+        PrintContext.userPrintText(text, defaultStyles, frame, jobTitle);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/package.html b/src/com/ibm/richtext/print/package.html
new file mode 100644
index 0000000..d906eda
--- /dev/null
+++ b/src/com/ibm/richtext/print/package.html
@@ -0,0 +1,13 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides printing for styled text.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/styledtext/CharBuffer.java b/src/com/ibm/richtext/styledtext/CharBuffer.java
new file mode 100644
index 0000000..187ee3d
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBuffer.java
@@ -0,0 +1,377 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/** An implementation of MCharBuffer that stores chars in an array with an insertion gap. */
+/*
+    Change history
+    072396 jf   - fixed a bug in replace(int, int, char[], int, int) so that it correctly
+                inserted into the middle of the buffer.
+    080296 jf   - added timestamp.  This is strictly a debugging device to help catch
+                stale iterators.
+
+    082296 jbr  added check for 0-length iterator in replace
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import java.text.CharacterIterator;
+
+final class CharBuffer
+    extends MCharBuffer implements Externalizable
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+  private static final int kGrowSize = 0x80; // small size for testing
+  private static final int CURRENT_VERSION = 1; // version code for streaming
+  private static final long serialVersionUID = 563174;
+
+  transient Validation fValidation = null;
+  private char[] fArray;
+  transient private int fArraySize;
+  transient private int fGap;
+
+  /** Create an empty char buffer. */
+  public CharBuffer()
+  {
+  }
+
+  /** Create a char buffer that can hold at least capacity chars. */
+
+  public CharBuffer(int capacity)
+  {
+    fArray = allocate(capacity);
+  }
+
+  public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+    if (in.readInt() != CURRENT_VERSION) {
+        throw new IOException("Invalid version of CharBuffer");
+    }
+
+    fArray = (char[]) in.readObject();
+    if (fArray != null) {
+        fArraySize = fArray.length;
+        fGap = fArraySize;
+    }
+    else {
+        fArraySize = 0;
+        fGap = 0;
+    }
+  }
+
+  public void writeExternal(ObjectOutput out) throws IOException {
+
+    compress();
+    out.writeInt(CURRENT_VERSION);
+    out.writeObject(fArray);
+  }
+
+  private void invalidate() {
+
+    if (fValidation != null) {
+        fValidation.invalidate();
+        fValidation = null;
+    }
+  }
+
+  // not ThreadSafe - could end up with two Validations
+  // being generated
+  private Validation getValidation() {
+
+    if (fValidation == null) {
+        fValidation = new Validation();
+    }
+    return fValidation;
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcBuffer. */
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcChars.
+  * This is the core routine for manipulating the buffer.
+  */
+  public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int dstLength = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (dstLength < 0 || srcLength < 0) {
+        throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+    }
+
+    int gapAlloc = 0;
+    if (srcChars == null) {
+        gapAlloc = srcLength;
+        srcLength = 0;
+    }
+
+    int newSize = fArraySize - dstLength + srcLength;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+        }
+        if (newSize + gapAlloc > 0) {
+            fArray = allocate(newSize + gapAlloc);
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, 0, srcLength);
+                fArraySize = srcLength;
+                fGap = srcLength;
+            }
+        }
+    } else {
+        int newGap = start + srcLength;
+        int gapLimit = fArray.length - fArraySize + fGap;
+
+        if (newSize + gapAlloc > fArray.length) {
+            char[] temp = allocate(newSize + gapAlloc);
+
+            //move stuff at beginning that we aren't writing over
+            if (start > 0) {
+                at(0, start, temp, 0);
+            }
+            //move stuff from src array that we are copying
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, temp, start, srcLength);
+            }
+            //move stuff at end that we aren't copying over
+            if (limit < fArraySize) {
+                at(limit, fArraySize, temp, temp.length - newSize + newGap);
+            //change 7-23-96
+            //    at(limit, fArraySize - limit, temp, temp.length - newSize + newGap);
+            }
+
+            fArray = temp;
+        } else {
+            if (start > fGap) {
+                System.arraycopy(fArray, gapLimit, fArray, fGap, start - fGap);
+            }
+            if (limit < fGap) {
+                System.arraycopy(fArray, limit, fArray, fArray.length - newSize + newGap, fGap - limit);
+            }
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, start, srcLength);
+            }
+        }
+
+        fArraySize = newSize;
+        fGap = newGap;
+    }
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcString. */
+
+  /* This implements optimizations for null text or inserting text that fits at the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, String srcString, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcString.getChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcString.getChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            replace(start, limit, srcString != null ? srcString.toCharArray() : null, srcStart, srcLimit);
+        }
+    }
+  }
+
+  public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcText.extractChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcText.extractChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            char[] temp = srcLength == 0? null : new char[srcLength];
+            if (temp != null) {
+                srcText.extractChars(srcStart, srcLimit, temp, 0);
+            }
+            replace(start, limit, temp, 0, srcLimit - srcStart);
+        }
+    }
+  }
+
+  /** Replace the chars from start to limit with srcChar. */
+
+  /* This implements optimizations for null text or replacing a character that fits into the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, char srcChar)
+  {
+    invalidate();
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char srcChar)");
+        }
+        fArray = allocate(1);
+        fArray[0] = srcChar;
+        fArraySize = 1;
+        fGap = 1;
+    } else {
+        int length = limit - start;
+        if (start == fGap && fArray.length > fArraySize - length) {
+            fArray[fGap] = srcChar;
+            fGap += 1;
+            fArraySize += 1 - length;
+        } else {
+            replace(start, limit, new char[] { srcChar} , 0, 1);
+        }
+    }
+  }
+
+  /** Return the char at pos. */
+
+  public char at(int pos)
+  {
+    if (pos < 0 || pos >= fArraySize) {
+      throw new IllegalArgumentException();
+    }
+    return pos < fGap ? fArray[pos] : fArray[fArray.length - fArraySize + pos];
+  }
+
+  /** Copy the chars from start to limit to dst starting at dstStart. */
+
+  public void at(int start, int limit, char[] dst, int dstStart)
+  {
+    int length = limit - start;
+
+    if (start < 0 || limit < start || limit > fArraySize) {
+        throw new IllegalArgumentException();
+    }
+
+    if (limit <= fGap) {
+        System.arraycopy(fArray, start, dst, dstStart, length);
+    } else if (start >= fGap) {
+        System.arraycopy(fArray, fArray.length - fArraySize + start, dst, dstStart, length);
+    } else {
+        System.arraycopy(fArray, start, dst, dstStart, fGap - start);
+        System.arraycopy(fArray, fArray.length - fArraySize + fGap, dst, dstStart + fGap - start, limit - fGap);
+    }
+  }
+
+  /** Return the number of chars in the buffer. */
+
+  public final int length()
+  {
+    return fArraySize;
+  }
+
+  /** Return the number of chars the buffer can hold before it must reallocate. */
+
+  public final int capacity()
+  {
+    return fArray != null ? fArray.length : 0;
+  }
+
+  /** Reserve capacity chars at start. Utility to optimize a sequence of operations at start. */
+
+  public void reserveCapacity(int start, int capacity)
+  {
+    replace(start, start, (char[])null, 0, capacity);
+  }
+
+  /** Minimize the storage used by the buffer. */
+
+  public void compress()
+  {
+    invalidate();
+    if (fArraySize == 0) {
+        fArray = null;
+        fGap = 0;
+    } else if (fArraySize != fArray.length) {
+        char[] temp = new char[fArraySize];
+        at(0, fArraySize, temp, 0);
+        fArray = temp;
+        fGap = fArraySize;
+    }
+  }
+
+  /** Display the buffer. */
+
+  public String toString()
+  {
+    if (fArray != null) {
+        return new StringBuffer()
+        .append("limit: ").append(fArray.length)
+        .append(", size: ").append(fArraySize)
+        .append(", gap: ").append(fGap)
+        .append(", ").append(fArray, 0, fGap)
+        .append(fArray, fArray.length - fArraySize + fGap, fArraySize - fGap)
+        .toString();
+    } else {
+        return new String("The buffer is empty.");
+    }
+  }
+
+  public CharacterIterator createCharacterIterator(int start, int limit) {
+
+    Validation val = getValidation();
+    return new CharBufferIterator(start, limit, fArray, fArraySize, fGap, val);
+  }
+
+  /** The resizing algorithm. Return a value >= minSize. */
+
+  protected int allocation(int minSize)
+  {
+    //    return (minSize + kGrowSize) & ~(kGrowSize - 1);
+    return minSize < kGrowSize ? kGrowSize : (minSize * 2 + kGrowSize) & ~(kGrowSize - 1);
+  }
+
+  /** Allocate a new character array of limit >= minSize. */
+
+  protected char[] allocate(int minSize)
+  {
+    return new char[allocation(minSize)];
+  }
+}
diff --git a/src/com/ibm/richtext/styledtext/CharBufferIterator.java b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
new file mode 100644
index 0000000..e58d055
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
@@ -0,0 +1,129 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.text.CharacterIterator;
+
+final class CharBufferIterator implements CharacterIterator,
+                                          Cloneable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fRangeStart;
+    private int fRangeLimit;
+    private int fCurrentIndex;
+    private char fStorage[];
+    private int fGap;
+    private int fGapLength;
+    private Validation fValidation;
+
+    CharBufferIterator(int start,
+                       int limit,
+                       char[] storage,
+                       int length,
+                       int gap,
+                       Validation validation) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("start > limit");
+        }
+        fRangeStart = start;
+        fRangeLimit = limit;
+        fCurrentIndex = fRangeStart;
+        fStorage = storage;
+        fGap = gap;
+        fGapLength = (storage==null? 0 : storage.length) - length;
+        fValidation = validation;
+    }
+
+    private void checkValidation() {
+
+        if (!fValidation.isValid()) {
+            throw new Error("Iterator is no longer valid");
+        }
+    }
+
+    public char first()
+    {
+        return setIndex(fRangeStart);
+    }
+
+    public char last()
+    {
+        return setIndex(fRangeLimit - 1);
+    }
+
+    public char current()
+    {
+        checkValidation();
+        if (fCurrentIndex < fRangeStart || fCurrentIndex >= fRangeLimit)
+            return DONE;
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char next()
+    {
+        checkValidation();
+        fCurrentIndex++;
+        if (fCurrentIndex >= fRangeLimit)
+        {
+            fCurrentIndex = fRangeLimit;
+            return DONE;
+        }
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char previous()
+    {
+        fCurrentIndex--;
+        if (fCurrentIndex >= fRangeStart)
+            return current();
+        fCurrentIndex = fRangeStart;
+        return DONE;
+    }
+
+    public char setIndex(int i)
+    {
+        if (i < fRangeStart || i > fRangeLimit)
+            throw new IllegalArgumentException("Invalid position");
+        fCurrentIndex = i;
+        return current();
+    }
+
+    public int getBeginIndex()
+    {
+        return fRangeStart;
+    }
+
+    public int getEndIndex()
+    {
+        return fRangeLimit;
+    }
+
+    public int getIndex()
+    {
+        return fCurrentIndex;
+    }
+
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
new file mode 100644
index 0000000..c993e297
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
@@ -0,0 +1,115 @@
+/*
+*   Copyright (C) 1996-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+/*
+    7/29/96
+        Modified to search portions of an integer array.  Should be retested.
+*/
+
+package com.ibm.richtext.styledtext;
+
+/**
+ * This class searches a segment of an array of integers.  The segment
+ * must be sorted in ascending order (but this class does not verify this).
+ * Also, this class aliases the array;  if the array is modified later the
+ * search results are undefined.
+ */
+final class FastIntBinarySearch
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int dataArray[];
+    private int auxStart;
+    private int power;
+
+    private int fFirstIndex;
+
+    private static final int exp2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 };
+
+    public FastIntBinarySearch(int data[])
+    {
+        this(data, 0, data.length);
+    }
+
+    public FastIntBinarySearch(int data[], int firstValidIndex, int validLength)
+    {
+        setData(data, firstValidIndex, validLength);
+    }
+    
+    public void setData(int data[]) {
+        
+        setData(data, 0, data.length);
+    }
+    
+    public void setData(int data[], int firstValidIndex, int validLength) {
+
+        if (data.length < 1) throw new IllegalArgumentException();
+        if (data.length >= exp2[exp2.length-1]) throw new IllegalArgumentException();
+
+        dataArray = data;
+        fFirstIndex = firstValidIndex;
+
+        for (power = exp2.length-1; power > 0 && validLength < exp2[power]; power--) {}
+
+        // at this point, array.length >= 2^power
+
+        auxStart = validLength - exp2[power];
+    }
+    
+    /**
+     * Return the index in the array of the first element which is at least
+     * as large as <tt>value</tt>.  If value is larger than the largest
+     * element in the array the last valid index in the array is returned.
+     */
+    public int findIndex(int value)
+    {
+        int index = exp2[power]-1 + fFirstIndex;
+        if (value >= dataArray[auxStart + fFirstIndex]) {
+            index += auxStart;
+        }
+
+        // at this point, index is the "upper limit" of the search
+
+        switch (power) {
+        case 17:
+            if (value < dataArray[index-65536]) index -= 65536;
+        case 16:
+            if (value < dataArray[index-32768]) index -= 32768;
+        case 15:
+            if (value < dataArray[index-16384]) index -= 16384;
+        case 14:
+            if (value < dataArray[index-8192]) index -= 8192;
+        case 13:
+            if (value < dataArray[index-4096]) index -= 4096;
+        case 12:
+            if (value < dataArray[index-2048]) index -= 2048;
+        case 11:
+            if (value < dataArray[index-1024]) index -= 1024;
+        case 10:
+            if (value < dataArray[index-512]) index -= 512;
+        case 9:
+            if (value < dataArray[index-256]) index -= 256;
+        case 8:
+            if (value < dataArray[index-128]) index -= 128;
+        case 7:
+            if (value < dataArray[index-64]) index -= 64;
+        case 6:
+            if (value < dataArray[index-32]) index -= 32;
+        case 5:
+            if (value < dataArray[index-16]) index -= 16;
+        case 4:
+            if (value < dataArray[index-8]) index -= 8;
+        case 3:
+            if (value < dataArray[index-4]) index -= 4;
+        case 2:
+            if (value < dataArray[index-2]) index -= 2;
+        case 1:
+            if (value < dataArray[index-1]) index -= 1;
+        case 0:
+            if (value < dataArray[index]) index -= 1;
+        }
+        return index;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MCharBuffer.java b/src/com/ibm/richtext/styledtext/MCharBuffer.java
new file mode 100644
index 0000000..43abf71
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MCharBuffer.java
@@ -0,0 +1,36 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import java.text.CharacterIterator;
+
+/** A dynamic character array optimized for sequences of insert
+    or delete operations in a local region. */
+
+abstract class MCharBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    abstract void replace(int start, int limit, MConstText text, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, String srcString, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char srcChar);
+    abstract CharacterIterator createCharacterIterator(int start, int limit);
+    abstract char at(int pos);
+    abstract void at(int start, int limit, char[] dst, int dstStart);
+
+    abstract int  length();
+
+    abstract int  capacity();
+    abstract void reserveCapacity(int pos, int length);
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MConstText.java b/src/com/ibm/richtext/styledtext/MConstText.java
new file mode 100644
index 0000000..7018d09
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MConstText.java
@@ -0,0 +1,323 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.text.CharacterIterator;
+import java.awt.datatransfer.DataFlavor;
+
+/**
+ * MConstText is a base class for text with multiple character and
+ * paragraph styles.  The text is a sequence of Unicode characters,
+ * represented by <code>char</code>.  Character and paragraph
+ * styles are represented by the <code>AttributeMap</code> class.
+ * <p>
+ * Characters in the text are accessed with an integer index using the
+ * <code>at</code> method.
+ * Valid indices are between 0 and (length-1), where length is the number
+ * of characters in the text.  Additionally, the
+ * characters in the text may be accessed through a
+ * <code>java.text.CharacterIterator</code>.
+ * <p>
+ * Every character in the text has a character style associated with it,
+ * represented by the <code>AttributeMap</code> class.  The character
+ * style for a particular character can be obtained using the
+ * <code>characterStyleAt</code> method.
+ * <p>
+ * Each character in the text is contained in a paragraph.  A paragraph
+ * is a range of text including and terminated by a
+ * paragraph separator (either <code>\n</code> or <code>U+2029</code>).
+ * Every
+ * paragraph has a paragraph style associated with it, represented
+ * by the <code>AttributeMap</code> class.  Paragraph boundaries and
+ * styles can be obtained from the MConstText.
+ * <p>
+ * This class does not have methods for modifying the text or styles.
+ * However, subclasses may add this capability, so it is not safe to
+ * assume that an MConstText instance is immutable.  In particular,
+ * the MText class adds modification protocol to this class.  Clients
+ * can detect whether an MConstText has changed by keeping track of its
+ * timestamp.
+ * <p>
+ * A DataFlavor for clipboard content is defined in this class.  Using
+ * this DataFlavor insures that all clients will recognize MConstText
+ * content on the clipboard.
+ * @see MText
+ * @see AttributeMap
+ * @see java.text.CharacterIterator
+ * @see java.awt.datatransfer.DataFlavor
+ */
+public abstract class MConstText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * The DataFlavor for MConstText clipboard content.  Used to
+     * indicate that clipboard data has an MConstText representation.
+     */
+    public static final DataFlavor styledTextFlavor =
+                            new DataFlavor(MConstText.class, "Styled Text");
+
+    protected MConstText() {
+    }
+
+//========================================================
+// CHARACTER ACCESS
+//========================================================
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public abstract char at(int pos);
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public abstract void extractChars(int start, int limit, char[] dst, int dstStart);
+
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MConstText extract(int start, int limit);
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over all
+* of the characters in the text.  Default implementation calls
+* <code>createCharacterIterator(0, length())</code>
+* @return a <code>java.text.CharacterIterator</code> over all
+*      of the characters in the text
+*/
+    public CharacterIterator createCharacterIterator() {
+
+        return createCharacterIterator(0, length());
+    }
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over the
+* given range of characters in the text.
+* @param start the first index in the iteration range
+* @param limit the index after the last character in the iteration range
+* @return a <code>java.text.CharacterIterator</code> over the
+*     given range
+*/
+    public abstract CharacterIterator createCharacterIterator(int start,
+                                                              int limit);
+
+
+//========================================================
+// SIZE/CAPACITY
+//========================================================
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public abstract int length();
+
+//========================================================
+// Character styles
+//========================================================
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleStart(int pos);
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleLimit(int pos);
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public abstract AttributeMap characterStyleAt(int pos);
+
+//========================================================
+// PARAGRAPH BOUNDARIES
+//========================================================
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphStart(int pos);
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphLimit(int pos);
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public abstract AttributeMap paragraphStyleAt(int pos);
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public abstract int getTimeStamp();
+
+/**
+* Return the start of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeStart();
+
+/**
+* Return the limit of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeStart
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeLimit();
+
+//========================================================
+// Equality and hashCode
+//========================================================
+/**
+* Compare this to another Object for equality.  This is
+* equal to rhs if rhs is an MConstText which is equal
+* to this.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public final boolean equals(Object rhs) {
+
+        MConstText otherText;
+
+        try {
+            otherText = (MConstText) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return equals(otherText);
+    }
+
+/**
+* Compare this to another MConstText for equality.  This is
+* equal to rhs if the characters and styles in rhs are the
+* same as this.  Subclasses may override this implementation
+* for efficiency, but they should preserve these semantics.
+* Determining that two MConstText instances are equal may be
+* an expensive operation, since every character and style must
+* be compared.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public boolean equals(MConstText rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (hashCode() != rhs.hashCode()) {
+            return false;
+        }
+
+        int length = length();
+        if (length != rhs.length()) {
+            return false;
+        }
+
+        for (int i=0; i < length; i++) {
+            if (i < length && at(i) != rhs.at(i)) {
+                return false;
+            }
+        }
+
+        for (int start = 0; start < length;) {
+            if (!characterStyleAt(start).equals(rhs.characterStyleAt(start))) {
+                return false;
+            }
+            int limit = characterStyleLimit(start);
+            if (limit != rhs.characterStyleLimit(start)) {
+                return false;
+            }
+            start = limit;
+        }
+
+        for (int start = 0; start < length;) {
+
+            if (!paragraphStyleAt(start).equals(rhs.paragraphStyleAt(start))) {
+                return false;
+            }
+            start = paragraphLimit(start);
+        }
+
+        return paragraphStyleAt(length).equals(rhs.paragraphStyleAt(length));
+    }
+
+    /**
+     * Return the hashCode for this MConstText.  An empty MConstText
+     * has hashCode 0;  a nonempty MConstText's hashCode is
+     * <blockquote><pre>
+     *       at(0) +
+     *       at(length/2)*31^1 +
+     *       at(length-1)*31^2 +
+     *       characterStyleAt(0).hashCode()*31^3 +
+     *       paragraphStyleAt(length-1).hashCode()*31^4
+     * </pre></blockquote>
+     * where <code>^</code> is exponentiation (not bitwise XOR).
+     */
+    public final int hashCode() {
+
+        int hashCode = 0;
+        int length = length();
+
+        if (length > 0) {
+            hashCode = paragraphStyleAt(length-1).hashCode();
+            hashCode = hashCode*31 + characterStyleAt(0).hashCode();
+            hashCode = hashCode*31 + at(length-1);
+            hashCode = hashCode*31 + at(length/2);
+            hashCode = hashCode*31 + at(0);
+        }
+
+        return hashCode;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MParagraphBuffer.java b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
new file mode 100644
index 0000000..ea901e0
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
@@ -0,0 +1,91 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+abstract class MParagraphBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphStart(int pos);
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphLimit(int pos);
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract AttributeMap paragraphStyleAt(int offset);
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    abstract void insertText(int start, char insertedChar);
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    abstract void insertText(int start,
+                             char[] srcChars,
+                             int srcStart,
+                             int srcLimit);
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    abstract void deleteText(int start,
+                             int limit,
+                             int[] damagedRange);
+
+/*
+* Replace paragraph breaks/styles between start and limit with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    abstract void replace(int start,
+                          int limit,
+                          MConstText srcText,
+                          int srcStart,
+                          int srcLimit,
+                          int[] damagedRange);
+
+/**
+* Set the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    abstract boolean modifyParagraphStyles(int start,
+                                           int limit,
+                                           StyleModifier modifier,
+                                           int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MStyleBuffer.java b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
new file mode 100644
index 0000000..8629e57
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
@@ -0,0 +1,110 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/1/96
+        Style -> ResolvedStyle
+    8/7/96 jf
+        added countStyles and getStyles protocol
+    8/13/96
+        ResolvedStyle->Style
+    8/22/96 jf
+        Removed the setIterator methods.
+*/
+/*
+* MStyleBuffer is the abstract interface for a class which maintains
+* style runs in an <tt>MText</tt>.  A "style run" consists of a
+* style and the interval on which the style applies.
+* <p>
+* MStyleBuffer includes methods to call when text is inserted into
+* or deleted from the <tt>MText</tt>.  These methods update the
+* style runs in accordance with the commonly accepted behavior for
+* style runs.
+* <p>
+* Additionally, MStyleBuffer provides methods for replacing the style runs on a
+* text range with another set of style runs.  MStyleBuffer does not do style "combining" (for
+* example, adding the bold attribute to text which is italicized);  clients are
+* responsible for computing the combined styles, and passing these styles into
+* MStyleBuffer.
+* <p>
+* MStyleBuffer supplies a method for replacing the style runs on a text range with the runs
+* represented in an <tt>MStyleRunIterator</tt>.  This is useful for implementing paste
+* operations, in which the style runs on a range of text are replaced by style runs
+* from an external source.
+* <p>
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+*/
+abstract class MStyleBuffer
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>limit-start</tt>.
+* @param start the offset where the insertion began
+* @param limit the offset where the insertion ended
+*/
+    abstract void insertText(int start, int limit);
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* @param start the offset where the deletion began
+* @param length the offset where the deletion ended
+*/
+    abstract void deleteText(int start, int limit);
+
+/*
+* Replace style runs between offsets <tt>start</tt> and <tt>limit</tt> with styles in
+* <tt>iter</tt>.  This method can be used to perform a "paste" operation.
+* @param start the offset where the replacement begins
+* @param limit the offset where the replacement ends
+* @param iter an <tt>MStyleRunIterator</tt> containing style runs which will replace old
+* style runs.
+*/
+    abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+    abstract int styleStart(int pos);
+    abstract int styleLimit(int pos);
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    abstract AttributeMap styleAt(int pos);
+
+/**
+ * Return true if styles were modified.
+ */
+    abstract boolean modifyStyles(int start,
+                                  int limit,
+                                  StyleModifier modifier,
+                                  int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MTabRuler.java b/src/com/ibm/richtext/styledtext/MTabRuler.java
new file mode 100644
index 0000000..c421f72
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MTabRuler.java
@@ -0,0 +1,111 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * This interface represents a sequence of TabStops, ordered by position.
+ * The first
+ * TabStop in the ruler can be obtained with the <code>firstTab</code>
+ * method;  subsequent TabStops are obtained with the <code>nextTab</code>
+ * method.
+ * <p>
+ * If a TabStop with type <code>TabStop.kAuto</code> is returned, all tabs
+ * after that TabStop will also have type <code>TabStop.kAuto</code>, and
+ * their positions will be multiples of <code>autoSpacing</code>.
+ * @see TabStop
+ */
+public abstract class MTabRuler
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop firstTab();
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop nextTab(int position);
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public abstract int autoSpacing();
+
+    /**
+     * Compute the hashCode for this ruler.  The hashCode is the
+     * hashCode of the first tab multiplied by the autoSpacing
+     * interval.
+     */
+    public final int hashCode() {
+
+        return firstTab().hashCode() * autoSpacing();
+    }
+
+    /**
+     * Return true if this tab ruler contains the given tab.
+     * @param tabToTest the tab to search for
+     * @return true if this tab ruler contains <code>tabToTest</code>
+     */
+    public boolean containsTab(TabStop tabToTest) {
+
+        for (TabStop tab = firstTab();
+                        tab.getType() != TabStop.kAuto;
+                        tab = nextTab(tab.getPosition())) {
+            if (tab.getPosition() >= tabToTest.getPosition()) {
+                return tabToTest.equals(tab);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * given tab added.  This ruler is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler addTab(TabStop tabToAdd) {
+
+        return StandardTabRuler.addTabToRuler(this, tabToAdd);
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at the given position removed.  This ruler is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler removeTab(int position) {
+
+        return StandardTabRuler.removeTabFromRuler(this, position);
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.  This ruler is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler moveTab(int fromPosition, int toPosition) {
+
+        return StandardTabRuler.moveTabOnRuler(this, fromPosition, toPosition);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/MText.java b/src/com/ibm/richtext/styledtext/MText.java
new file mode 100644
index 0000000..37c39fb
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MText.java
@@ -0,0 +1,241 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Change history:
+
+    10/29/96 jef    split the character and paragraph style access functions
+    8/14/96 sfb     eliminated StyleSheetIterator
+    8/21/96 jef        completed abstract interface (changed iterator classes etc.)
+    1/30/97 rtg     cleaned up interface, brought in functions from SimpleTextView
+    7/31/98 jbr switched from Style to AttributeMap
+
+*/
+
+/**
+ * This class is a mutable extension of MConstText.  It has methods for
+ * inserting, appending, replacing, and removing styled text.  Additionally,
+ * it has methods for modifying paragraph and character styles.
+ * <p>
+ * Styled characters (from another <code>MConstText</code> instance) added
+ * to the text retain their original character styles.  The style of plain characters
+ * (specified as a <code>char</code> or <code>char[]</code>) is always
+ * specified explicitly when they are added to the text.  MText does not do
+ * character style "propagation", where unstyled characters take on the
+ * style of previous characters.  Clients can implement this behavior by
+ * specifying the styles to propagate.
+ * <p>
+ * When unstyled characters are added to the text, their paragraph style
+ * is the paragraph style in effect immediately after the last new character.
+ * If the characters contain paragraph separators, then every new paragraph
+ * will have the same paragraph style.  When styled characters are added
+ * to the text, their resulting paragraph style is determined by the
+ * following rule:
+ * <blockquote>
+ * The paragraph styles in the new text
+ * become the paragraph styles in the target text, with the exception of the
+ * last paragraph in the new text, which takes on the paragraph style in
+ * effect immediately after the inserted text.
+ * If the new text is added at the end of the target text, the new text's
+ * paragraph styles take effect in any paragraph affected by the addition.
+ * </blockquote>
+ * For example, suppose there is a single paragraph of text with style 'A',
+ * delimited with a paragraph separator 'P':
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * Suppose the following styled paragraphs are inserted into the above text
+ * after the fourth character:
+ * <blockquote>
+ * BBBBPCCCPDDD
+ * </blockquote>
+ * Then the original paragraph style of each character is:
+ * <blockquote>
+ * AAAABBBBPCCCPDDDAAP
+ * </blockquote>
+ * The resulting paragraph styles are:
+ * <blockquote>
+ * BBBBBBBBPCCCPAAAAAP
+ * </blockquote>
+ * Similarly, if characters are deleted, the paragraph style immediately
+ * after the deletion takes effect on the paragraph containing the deletion.
+ * So, if characters 4-16 were deleted in the example above, the paragraph
+ * styles would be:
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * This paragraph-style propagation policy is sometimes referred to as <strong>
+ * following styles win</strong>, since styles at the end of the paragraph
+ * become the style for the entire paragraph.
+ * <p>
+ * This class can accumulate a <strong>damaged range</strong> - an interval in
+ * which characters, character styles, or paragraph styles have changed.  This is
+ * useful for clients such as text editors which reformat and draw text after
+ * changes.  Usually the damaged range is exactly the range of characters
+ * operated upon;  however, larger ranges may be damaged if paragraph styles
+ * change.
+ * @see StyleModifier
+ */
+
+public abstract class MText extends MConstText
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MText() {
+    }
+
+//==================================================
+// MAIN CHARACTER MODIFICATION FUNCTIONS
+//==================================================
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+*/
+    public abstract void replace(int start, int limit, MConstText text);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charStyle the style of the new character
+*/
+    public abstract void replace(int start, int limit, char srcChar, AttributeMap charStyle);
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public abstract void replaceAll(MConstText srcText);
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert. */
+    public abstract void insert(int pos, MConstText srcText);
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append. */
+    public abstract void append(MConstText srcText);
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete. */
+    public abstract void remove(int start, int limit);
+
+/**
+* Delete all characters and styles.
+*/
+    public abstract void remove();
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MText extractWritable(int start, int limit);
+
+
+//==================================================
+// STORAGE MANAGEMENT
+//==================================================
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public abstract void compress();
+
+//==================================================
+// STYLE MODIFICATION
+//==================================================
+
+/**
+* Set the character style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public abstract void removeCharacterStyles();
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyCharacterStyles(int start, int limit, StyleModifier modifier);
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyParagraphStyles(int start, int limit, StyleModifier modifier);
+
+//==================================================
+// DAMAGED RANGE
+//==================================================
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public abstract void resetDamagedRange();
+}
diff --git a/src/com/ibm/richtext/styledtext/ParagraphBuffer.java b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
new file mode 100644
index 0000000..e9e6809
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
@@ -0,0 +1,714 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Right now, you have to construct this class with a charBuffer.  That's pretty ugly... */
+
+/*
+    8/8/96
+        Added replace method, which reads styles from a ParagraphIterator.
+        Also, added a constructor which takes a ParagraphIterator.
+        These methods are for copy/paste support.
+
+    8/22/96
+        Replace method (which takes an iterator as an argument) tests for a
+        0-length iterator.
+
+    9/30/96
+        {jbr} modified paragraphLimit();
+
+    10/23/96
+        This class now maintains paragraph styles.  Also has a timestamp.
+
+    10/25/96
+        Holds on to Style instead of Style.
+
+    7/31/98 Switched to AttributeMap
+
+*/
+
+/**
+* This class stores offsets where paragraph breaks occur, and the style applied to
+* each paragraph.
+*
+* The offsets where paragraph breaks occur are stored in a RunArray object.  This is
+* not strictly necessary, but it makes scanning the text for paragraph breaks unnecessary.
+* However, it makes determining where paragraphs start a little confusing.  If there is a
+* paragraph break at offset p, then there will be a paragraph start at offset p+1.
+* If the last character in the text is a paragraph break, there will be a run array entry
+* for that character (and also a paragraph style for that paragraph, even though the
+* style does not apply to any text).
+*
+* The style of the first paragraph in the text is in the fFirstStyle member.  Other
+* paragraph styles are stored in the fStyleTable array, in the following manner:  the
+* paragraph with begins at offset fRunArray.fRunStart[i]+1 has style fStyleTable[i].
+* The style table's "gap range" is kept in sync with the RunArray.
+*
+* This class propogates paragraph styles in the "Microsoft Word" fashion:  styles
+* propogate backward from paragraph breaks.
+*
+* This class maintains a time stamp, which changes every time extra formatting (formatting
+* on a range other than the current selection) is needed;  for example, when a paragraph
+* break is removed.
+*/
+
+
+final class ParagraphBuffer extends MParagraphBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int kInitialSize = 10;
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private RunArray fRunArray;
+    private AttributeMap[] fStyleTable;
+    private AttributeMap fFirstStyle;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+/**
+* Construct a new paragraph buffer from the characters in <tt>charBuffer</tt>.
+*/
+    ParagraphBuffer(MCharBuffer charBuffer) {
+
+        this(charBuffer.length());
+
+        // scan text for paragraph boundaries
+
+        int textLength = fRunArray.getCurTextLength();
+
+        for (int pos=0; pos < textLength; pos++) {
+
+            if (isParagraphBreak(charBuffer.at(pos))) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = pos;
+                fStyleTable[fRunArray.fPosEnd] = fFirstStyle;
+            }
+        }
+
+    }
+
+/**
+* Private constructor.
+*/
+    private ParagraphBuffer(int initialLength) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fStyleTable = new AttributeMap[fRunArray.getArrayLength()];
+
+        fFirstStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public ParagraphBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+        out.writeObject(fFirstStyle);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of ParagraphBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+        fFirstStyle = (AttributeMap) in.readObject();
+    }
+
+/**
+* Shift table such that the last positive run starts before pos.
+*/
+    private void shiftTableTo(int pos) {
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Make more room in run/style tables.
+*/
+    private void expandStyleTable() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.expandRunTable();
+        handleArrayResize(oldNegStart);
+    }
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    public void insertText(int start, char insertedChar) {
+
+        shiftTableTo(start);
+        if (isParagraphBreak(insertedChar)) {
+            if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                expandStyleTable();
+            fRunArray.fRunStart[++fRunArray.fPosEnd] = start;
+            fStyleTable[fRunArray.fPosEnd] =
+                (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+            fRunArray.runStartsChanged();
+        }
+
+        //fRunArray.fCurTextLength++;
+        fRunArray.addToCurTextLength(1);
+    }
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    public void insertText(int start, char srcChars[], int srcStart, int srcLimit) {
+
+        shiftTableTo(start);
+
+        int adjust = start - srcStart;
+
+        for (int i=srcStart;  i < srcLimit; i++)
+            if (isParagraphBreak(srcChars[i])) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = adjust + i;
+                fStyleTable[fRunArray.fPosEnd] =
+                    (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+                fRunArray.runStartsChanged();
+            }
+
+        //fRunArray.fCurTextLength += (srcLimit-srcStart);
+        fRunArray.addToCurTextLength(srcLimit-srcStart);
+    }
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    public void deleteText(int start, int limit, int[] damagedRange) {
+
+        int length = limit - start;
+        if (length < 0) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        shiftTableTo(limit);
+
+        int newEnd = fRunArray.findRunContaining(start-1);
+
+        if (newEnd != fRunArray.fPosEnd) {
+
+            AttributeMap propStyle = fStyleTable[fRunArray.fPosEnd];
+            boolean propogated;
+
+            if (newEnd == -1) {
+                propogated = !propStyle.equals(fFirstStyle);
+                fFirstStyle = propStyle;
+            }
+            else {
+                propogated = !propStyle.equals(fStyleTable[newEnd]);
+                fStyleTable[newEnd] = propStyle;
+            }
+
+            if (propogated) {
+                int pStart = (newEnd==-1)? 0 : fRunArray.fRunStart[newEnd] + 1;
+                damagedRange[0] = Math.min(damagedRange[0], pStart);
+            }
+
+            fRunArray.fPosEnd = newEnd;
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+    }
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphStart(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+        if (run == -1) {
+            return 0;
+        }
+        else {
+            return fRunArray.getLogicalRunStart(run) + 1;
+        }
+    }
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphLimit(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+
+        if (run == fRunArray.fPosEnd)
+            run = fRunArray.fNegStart;
+        else
+            run++;
+
+        if (run == fRunArray.getArrayLength()) {
+            return fRunArray.getCurTextLength();
+        }
+
+        int start = fRunArray.getLogicalRunStart(run);
+
+        return start+1;
+    }
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    public AttributeMap paragraphStyleAt(int offset) {
+
+        int run = fRunArray.findRunContaining(offset-1);
+        if (run < 0)
+            return fFirstStyle;
+        else
+            return fStyleTable[run];
+    }
+
+/**
+* Create paragraph iterator.
+*/
+/*
+    public MParagraphIterator createParagraphIterator(int start, int limit) {
+
+        return new ParagraphIterator(start, limit);
+    }
+*/
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIterator(int pos, ParagraphIterator iter) {
+
+        if ((pos < 0) || (pos >= fRunArray.getCurTextLength())) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        int run;
+
+        if (pos > 0)
+            run = fRunArray.findRunContaining(pos-1);
+        else
+            run = -1;
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIteratorUsingRun(int run, ParagraphIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < -1 || run > lastValidRun) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart;
+        AttributeMap style;
+
+        if (run < 0) {
+            runStart = 0;
+            style = fFirstStyle;
+        }
+        else {
+            runStart = fRunArray.fRunStart[run];
+            style = fStyleTable[run];
+            if (runStart < 0)
+                runStart += fRunArray.getCurTextLength();
+            runStart++;
+        }
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+            runLimit++;
+            }
+
+        iter.set(runStart, runLimit, run, style);
+    }
+
+/**
+* Replace paragraph breaks/styles between start and length with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    public void replace(int start,
+                        int limit,
+                        MConstText srcText,
+                        int srcStart,
+                        int srcLimit,
+                        int[] damagedRange) {
+
+        final int insLength = srcLimit - srcStart;
+        if (insLength < 0) {
+            throw new Error("invalid range");
+        }
+        final int origLength = fRunArray.getCurTextLength();
+        deleteText(start, limit, damagedRange);
+
+        if (insLength == 0)
+            return;
+
+        final int oldPosEnd = fRunArray.fPosEnd;
+        AttributeMap origStyle;
+        if (limit < origLength) {
+            origStyle = (fRunArray.fPosEnd>=0)? fStyleTable[fRunArray.fPosEnd] : fFirstStyle;
+        }
+        else {
+            origStyle = srcText.paragraphStyleAt(srcLimit);
+        }
+
+        int paragraphStart = srcStart;
+        int lastPLimit = srcText.paragraphStart(srcLimit);
+        boolean separatorAtEnd = lastPLimit > srcStart && isParagraphBreak(srcText.at(lastPLimit-1));
+
+        if (limit == origLength && lastPLimit == paragraphStart) {
+            if (fRunArray.fPosEnd > 0) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+            else {
+                fFirstStyle = origStyle;
+            }
+        }
+        else {
+            boolean firstPass = true;
+            while (paragraphStart < lastPLimit) {
+
+                AttributeMap style = srcText.paragraphStyleAt(paragraphStart);
+                int paragraphLimit = srcText.paragraphLimit(paragraphStart);
+
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+
+                if (fRunArray.fPosEnd >= 0) {
+                    if (!style.equals(fStyleTable[fRunArray.fPosEnd])) {
+                        fStyleTable[fRunArray.fPosEnd] = style;
+                        if (firstPass) {
+                            int pStart = fRunArray.fRunStart[fRunArray.fPosEnd]+1;
+                            damagedRange[0] = Math.min(damagedRange[0], pStart);
+                        }
+                    }
+                }
+                else if (!style.equals(fFirstStyle)) {
+                    fFirstStyle = style;
+                    damagedRange[0] = 0;
+                }
+
+                firstPass = false;
+
+                if (paragraphLimit < lastPLimit || separatorAtEnd) {
+                    fRunArray.fRunStart[++fRunArray.fPosEnd] = paragraphLimit - 1 + start - srcStart;
+                }
+                paragraphStart = paragraphLimit;
+            }
+            if (fRunArray.fPosEnd != oldPosEnd) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+        }
+
+        fRunArray.addToCurTextLength(insLength);
+    }
+
+/**
+* Modify the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    public boolean modifyParagraphStyles(int start,
+                                         int limit,
+                                         StyleModifier modifier,
+                                         int[] damagedRange)  {
+
+        int run = fRunArray.findRunContaining(start-1);
+        int currentPStart;
+        if (run == -1) {
+            currentPStart = 0;
+        }
+        else {
+            currentPStart = fRunArray.getLogicalRunStart(run) + 1;
+        }
+
+        boolean modifiedAnywhere = false;
+
+        for (;;) {
+
+            boolean modified = false;
+
+            if (run < 0) {
+
+                AttributeMap newStyle = modifier.modifyStyle(fFirstStyle);
+
+                if (!newStyle.equals(fFirstStyle)) {
+                    fFirstStyle = newStyle;
+                    modified = true;
+                }
+            }
+            else {
+
+                AttributeMap newStyle = modifier.modifyStyle(fStyleTable[run]);
+
+                if (!fStyleTable[run].equals(newStyle)) {
+                    fStyleTable[run] = newStyle;
+                    modified = true;
+                }
+            }
+
+            if (run == fRunArray.fPosEnd) {
+                run = fRunArray.fNegStart;
+            }
+            else {
+                run++;
+            }
+
+            int nextPStart;
+            if (run == fRunArray.getArrayLength()) {
+                nextPStart = fRunArray.getCurTextLength();
+            }
+            else {
+                nextPStart = fRunArray.getLogicalRunStart(run) + 1;
+            }
+
+            if (modified) {
+                modifiedAnywhere = true;
+                damagedRange[0] = Math.min(damagedRange[0], currentPStart);
+                damagedRange[1] = Math.max(damagedRange[1], nextPStart);
+            }
+
+            if (limit <= nextPStart) {
+                break;
+            }
+            else {
+                currentPStart = nextPStart;
+            }
+        }
+
+        return modifiedAnywhere;
+    }
+
+//    private static void dumpParagraphStarts(ParagraphBuffer st) {
+//
+//        System.out.println("fRunArray.fPosEnd="+st.fRunArray.fPosEnd+", fRunArray.fNegStart="+st.fRunArray.fNegStart+
+//                            ", fRunArray.getArrayLength()="+st.fRunArray.getArrayLength()+", fRunArray.getCurTextLength()="+st.fRunArray.getCurTextLength());
+//
+//        int i;
+//        System.out.print("Positives: ");
+//        for (i=0; i<=st.fRunArray.fPosEnd; i++)
+//            System.out.print(st.fRunArray.fRunStart[i]+" ");
+//
+//        System.out.print("   Negatives: ");
+//        for (i=st.fRunArray.fNegStart; i<st.fRunArray.getArrayLength(); i++)
+//            System.out.print(st.fRunArray.fRunStart[i]+" ");
+//
+//        System.out.println(" ");
+//    }
+
+    private static final int kNoRun = -42; // iterator use
+
+    private final class ParagraphIterator /*implements MParagraphIterator*/
+    {
+        ParagraphIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fCurrentRun != kNoRun;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(0, 0, kNoRun, null);
+            }
+        }
+
+        // ParagraphBuffer calls back on this to set iterators
+        void set(int start, int limit, int currentRun, AttributeMap style)
+        {
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+            fCurrentRun = currentRun;
+            fStyle = style;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        public AttributeMap style() {
+
+            return fStyle;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+        private AttributeMap fStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/RunArray.java b/src/com/ibm/richtext/styledtext/RunArray.java
new file mode 100644
index 0000000..1627976
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/RunArray.java
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/**
+* This class maintains intervals within a piece of text.  Interval boundaries
+* are stored in the fRunStart array.  Interval boundaries may have a
+* positive or negative representation.  A positive boundary is given as an offset
+* from 0.  A negative boundary is given as a negative offset from the ned of the text.
+* The RunArray stores positive boundaries in the entries [0, fPosEnd], and negative
+* boundaries in the entries [fNegStart, fLength).  New boundaries may be inserted into
+* the undefined middle of the RunArray.  If fPosEnd < 0, there are no positive entries.
+* If fNegStart >= fRunArray.length, there are no negative netries.  It's possible to have
+* a runarray with neither positive or negative entries.
+*
+* As an example of how the RunArray works, consider a piece of text with 5 intervals,
+* where each interval is 3 characters in length.  The RunArray for this text could
+* look like:
+*    fCurTextLength = 15, fPosEnd = 5, fNegStart = 10,
+*    fRunStart = { 0, 3, 6, 9, 12, U, U, U, U, U };
+* where U is an undefined array element.
+
+* An equivalent representation would be:
+*    fCurTextLength = 15, fPosEnd = 3, fNegStart = 8,
+*    fRunStart = { 0, 3, 6, U, U, U, U, U, -6, -3 };
+*
+* The RunArray class is used in the StyleBuffer and the ParagraphBuffer.  In the StyleBuffer,
+* the entries in fRunStart give the offsets where style runs begin.  In the
+* ParagraphBuffer, the fRunStart entries store offsets of paragraph breaks.
+*
+* This class provides methods for shifting the run table to a particular position, expanding the
+* run table, and returning the index of the run containing a particular offset in the text.  All
+* other functionality is implemented in the RunArray clients.
+*
+* RunArray uses FastIntBinarySearch for searches.  The searches are constructed on demand in
+* the findRunContaining method.  The searches are invalidated when the run array is shifted;
+* however, the RunArray can be modified by other classes.  Thus, if another class modifies
+* the entries in fRunArray, or modifies fPosEnd or fNegStart, it is responsible for
+* calling runStartsChanged.
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+final class RunArray implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 22356934;
+
+    int[] fRunStart;
+    private int fCurTextLength;
+    int fPosEnd, fNegStart;
+    
+    transient private FastIntBinarySearch fPosSearch;
+    transient private boolean fPosSearchValid;
+    transient private FastIntBinarySearch fNegSearch;
+    transient private boolean fNegSearchValid;
+
+    private static final int CURRENT_VERSION = 1;
+
+    RunArray(int initialSize, int curTextLength) {
+
+        fRunStart = new int[initialSize];
+        fCurTextLength = curTextLength;
+        fPosEnd = -1;
+        fNegStart = initialSize;
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public RunArray() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunStart);
+        out.writeInt(fCurTextLength);
+        out.writeInt(fPosEnd);
+        out.writeInt(fNegStart);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of RunArray");
+        }
+        fRunStart = (int[]) in.readObject();
+        fCurTextLength = in.readInt();
+        fPosEnd = in.readInt();
+        fNegStart = in.readInt();
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    public int getCurTextLength() {
+
+        return fCurTextLength;
+    }
+
+    public void setCurTextLength(int curTextLength) {
+
+        fCurTextLength = curTextLength;
+    }
+
+    public void addToCurTextLength(int delta) {
+
+        fCurTextLength += delta;
+    }
+
+    public void runStartsChanged() {
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+/**
+* Returns the index of the last valid run.
+*/
+    int lastRun() {
+
+        return (fNegStart == fRunStart.length)? fPosEnd : fRunStart.length-1;
+    }
+
+/**
+* Returns the length of the run array.  Replaces old fLength member.
+*/
+    int getArrayLength() {
+
+        return fRunStart.length;
+    }
+
+/**
+* Shifts style table such that the last positive run
+* starts before pos.
+*/
+    void shiftTableTo(int pos) {
+
+        int oldPosEnd = fPosEnd;
+
+        while (fPosEnd >= 0 && fRunStart[fPosEnd] >= pos) {
+
+            fNegStart--;
+            fRunStart[fNegStart] = fRunStart[fPosEnd] - fCurTextLength;
+            fPosEnd--;
+
+        }
+
+        pos -= fCurTextLength;
+
+        while (fNegStart<fRunStart.length && fRunStart[fNegStart] < pos) {
+
+            fPosEnd++;
+            fRunStart[fPosEnd] = fRunStart[fNegStart] + fCurTextLength;
+            fNegStart++;
+        }
+
+        if (oldPosEnd != fPosEnd) {
+            fPosSearchValid = fNegSearchValid = false;
+        }
+    }
+
+/**
+* Returns index of style run containing pos.  If first style run starts before
+* pos, -1 is returned.  If pos is greater than text length, lastrun is returned.
+*/
+    int findRunContaining(int pos) {
+
+        FastIntBinarySearch search;
+        final int length = fRunStart.length;
+
+        if (fNegStart < length && (pos-fCurTextLength >= fRunStart[fNegStart])) {
+
+            pos -= fCurTextLength;
+
+            if (!fNegSearchValid) {
+                fNegSearch.setData(fRunStart, fNegStart, length-fNegStart);
+            }
+            search = fNegSearch;
+        }
+        else if (fPosEnd >= 0) {
+
+            if (!fPosSearchValid) {
+                fPosSearch.setData(fRunStart, 0, fPosEnd+1);
+            }
+            search = fPosSearch;
+        }
+        else
+            return -1;
+
+        int run = search.findIndex(pos);
+
+        return run;
+    }
+
+    int getLogicalRunStart(int run) {
+
+        if (run == -1) {
+            return 0;
+        }
+        else if (run == fRunStart.length) {
+            return fCurTextLength;
+        }
+        else {
+            if (run <= fPosEnd) {
+                return fRunStart[run];
+            }
+            else if (run >= fNegStart) {
+                return fRunStart[run] + fCurTextLength;
+            }
+            else {
+                throw new IllegalArgumentException("Illegal run");
+            }
+        }
+    }
+
+/**
+* Increases size of run table.  Current implementation doubles the run table's size.
+*/
+    void expandRunTable() {
+
+        resizeRunTable(fRunStart.length * 2);
+    }
+
+/**
+* Return the minimum number of elements possible in fRunStart.
+*/
+    private int getMinSize() {
+
+        return Math.max(fPosEnd + (fRunStart.length-fNegStart) + 1, 1);
+    }
+
+    void compress() {
+
+        int minSize = getMinSize();
+        if (fRunStart.length > minSize) {
+            resizeRunTable(minSize);
+        }
+    }
+
+    private void resizeRunTable(int newSize) {
+
+        if (newSize < getMinSize()) {
+            throw new IllegalArgumentException("Attempt to make RunArray too small.");
+        }
+
+        final int oldLength = fRunStart.length;
+
+        int newRunStart[] = new int[newSize];
+        System.arraycopy(fRunStart, 0, newRunStart, 0, fPosEnd+1);
+        int newNegStart = newRunStart.length - (oldLength-fNegStart);
+        System.arraycopy(fRunStart, fNegStart, newRunStart, newNegStart, (oldLength-fNegStart));
+
+        fNegStart = newNegStart;
+        fRunStart = newRunStart;
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StandardTabRuler.java b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
new file mode 100644
index 0000000..6128f58
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
@@ -0,0 +1,372 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.util.Vector;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * This class is a standard implementation of MTabRuler.
+ * It can have a finite number of client-specified TabStops.  After
+ * the client-specified TabStops, all TabStops have type
+ * <code>TabStop.kAuto</code> and are at the autospace intervals.
+ * @see TabStop
+ */
+public final class StandardTabRuler extends MTabRuler
+                                    implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private static final TabStop AUTO_ZERO = new TabStop(0, TabStop.kAuto);
+
+    private TabStop[] fTabs = null;
+    private int fAutoSpacing = 36; // every 1/2 inch.
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with spacing of 36.
+     */
+    public StandardTabRuler()
+    {
+    }
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with the
+     * given autoSpacing.
+     * @param autoSpacing the autoSpacing for this tab ruler
+     */
+    public StandardTabRuler(int autoSpacing)
+    {
+        fAutoSpacing = autoSpacing;
+    }
+
+    /**
+     * Create a StandardTabRuler.  The first TabStops on the ruler will be
+     * the TabStops in the <code>tabs</code> array.  After these tabs all
+     * tabs are auto tabs.
+     * @param tabs an array of TabStops.  The TabStops in the array must
+     *    be in strictly increasing order (of positions), and cannot have
+     *    type <code>TabStop.kAuto</code>.
+     * @param autoSpacing the autoSpacing interval to use after the last
+     *    client-specified tab.
+     */
+    public StandardTabRuler(TabStop[] tabs, int autoSpacing)
+    {
+        if (tabs.length > 0) {
+            validateTabArray(tabs);
+            fTabs = (TabStop[]) tabs.clone();
+        }
+        else {
+            fTabs = null;
+        }
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Tabs as provided, then autoSpacing after the last tab to eternity.  Use this constructor when
+        munging a ruler, it does no validation on the tabs in the vector. Vector may not be null. */
+
+    /*public*/ StandardTabRuler(Vector v, int autoSpacing)
+    {
+        fTabs = tabArrayFromVector(v);
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Construct from another ruler. No validation. Ruler may not be null. */
+
+    /*public*/ StandardTabRuler(MTabRuler ruler)
+    {
+        if (ruler == null) {
+            throw new IllegalArgumentException("ruler may not be null");
+        }
+
+        fTabs = tabArrayFromVector(vectorFromTabRuler(ruler));
+        fAutoSpacing = ruler.autoSpacing();
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fTabs = (TabStop[]) in.readObject();
+        fAutoSpacing = in.readInt();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fTabs);
+        out.writeInt(fAutoSpacing);
+    }
+
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public TabStop firstTab()
+    {
+        if (fTabs != null && fTabs.length > 0) {
+            return fTabs[0];
+        }
+
+        return AUTO_ZERO;
+    }
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     * @param position the position of the TabStop returned will be greater than this parameter
+     */
+    public TabStop nextTab(int position)
+    {
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (position < fTabs[i].getPosition())
+                    return fTabs[i];
+            }
+        }
+
+        if (position >= 4000) { // debug: sanity check
+            System.out.println("auto tab past 4000");
+        }
+
+        return new TabStop(((position / fAutoSpacing) + 1) * fAutoSpacing, TabStop.kAuto);
+    }
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public int autoSpacing()
+    {
+        return fAutoSpacing;
+    }
+
+    /**
+     * Compare this to another Object. Returns true if the object
+     * is an MTabRuler with the same autoSpacing and tabs.
+     */
+    public boolean equals(Object o)
+    {
+        if (o == this) {
+            return true;
+        }
+        else if (o == null) {
+            return false;
+        }
+        
+        MTabRuler rhs;
+        try {
+            rhs = (MTabRuler)o;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        if (fAutoSpacing != rhs.autoSpacing())
+            return false;
+
+        TabStop rhsTab = rhs.firstTab();
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (!fTabs[i].equals(rhsTab))
+                    return false;
+
+                rhsTab = rhs.nextTab(rhsTab.getPosition());
+            }
+        }
+
+        return rhsTab.getType() == TabStop.kAuto;
+    }
+
+    /**
+     * Return debug information about this tab ruler.
+     */
+    public String toString()
+    {
+        StringBuffer buffer = new StringBuffer(super.toString());
+        buffer.append(" auto: ");
+        buffer.append(Integer.toString(fAutoSpacing));
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                buffer.append(fTabs[i].toString());
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    /** Utility to convert a vector of tabs to an array. */
+
+    private static TabStop[] tabArrayFromVector(Vector v)
+    {
+        int count = v.size();
+        TabStop[] tabs = new TabStop[count];
+        for (int i = 0; i < count; ++i) {
+            tabs[i] = (TabStop)v.elementAt(i);
+        }
+
+        return tabs;
+    }
+
+    /** Utility to convert a ruler to a vector of tabs, for munging. */
+
+    private static Vector vectorFromTabRuler(MTabRuler ruler)
+    {
+        Vector v = new Vector();
+        for (TabStop tab = ruler.firstTab(); tab != null && tab.getType() != TabStop.kAuto; tab = ruler.nextTab(tab.getPosition())) {
+            v.addElement(tab);
+        }
+
+        return v;
+    }
+
+    /** Utility to validate an array of tabs.  The array must not be null, must not contain null
+        entries, must not be kAuto, and positions must in increasing order. */
+
+    private static void validateTabArray(TabStop[] tabs)
+    {
+        int pos = Integer.MIN_VALUE;
+        for (int i = 0; i < tabs.length; ++i) {
+            if (tabs[i].getType() == TabStop.kAuto) {
+                throw new IllegalArgumentException("can't explicitly specify an auto tab.");
+            }
+            int nextpos = tabs[i].getPosition();
+            if (nextpos <= pos) {
+                throw new IllegalArgumentException("tab positions must be in increasing order.");
+            }
+            pos = nextpos;
+        }
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab added.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the additional tab.  <code>ruler</code> is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler addTabToRuler(MTabRuler ruler, TabStop tabToAdd)
+    {
+        if (ruler == null || tabToAdd == null)
+            throw new IllegalArgumentException("ruler and tabToAdd may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean added = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!added && pos >= tabToAdd.getPosition()) {
+                if (pos == tabToAdd.getPosition())
+                    tab = null;
+                vector.addElement(tabToAdd);
+                added = true;
+            }
+
+            if (tab != null)
+                vector.addElement(tab);
+        }
+        if (!added)
+            vector.addElement(tabToAdd);
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab removed.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the removed tab.  <code>ruler</code> is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler removeTabFromRuler(MTabRuler ruler, int position)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean removed = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!removed && pos >= position) {
+                if (pos == position) {
+                    removed = true;
+                    continue; // skip this tab and continue with the remainder
+                }
+                break; // we didn't remove a tab, but skipped position, so don't bother with the rest
+            }
+
+            vector.addElement(tab);
+        }
+        if (!removed) // no change
+            return ruler;
+
+        if (vector.size() == 0)
+            return new StandardTabRuler(ruler.autoSpacing());
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the moved tab.  <code>ruler</code> is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler moveTabOnRuler(MTabRuler ruler, int fromPosition, int toPosition)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean moved = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!moved && pos == fromPosition) {
+                moved = true;
+                tab = new TabStop(toPosition, tab.getType()); // copy it
+            }
+
+            vector.addElement(tab);
+        }
+        if (!moved) // no change
+            return ruler;
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+}
diff --git a/src/com/ibm/richtext/styledtext/StyleBuffer.java b/src/com/ibm/richtext/styledtext/StyleBuffer.java
new file mode 100644
index 0000000..fd5aca9
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleBuffer.java
@@ -0,0 +1,669 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/2/96
+        Added setIteratorUsingRun method
+
+    8/5/96
+        No longer has to be constructed with an MText.
+
+    8/8/96
+        Added replace method, which reads styles from a StyleRunIterator.
+        Also, added a constructor which takes a StyleRunIterator.
+        These methods are for copy/paste support.
+    8/16/96
+        StyleBuffer now takes MConstText instead of MText where possible.
+
+    10/23/96
+        Some old commented-out code removed for aesthetic reasons.
+
+    7/31/98 Switched to AttributeMap
+*/
+
+/**
+* StyleBuffer implements <tt>MStyleBuffer</tt>.  It maintains
+* <tt>AttributeMap</tt> objects to apply to the text in an <tt>MText</tt> object,
+* and the
+* intervals on which those styles apply.
+* <p>
+* StyleBuffer stores the intervals on which styles apply in a <tt>RunArray</tt>
+* object (see <tt>RunArray</tt> for more information).  The styles are stored in
+* an array of <tt>AttributeMap</tt> objects.
+* <p>
+* <tt>RunArray</tt> maintains an array of integers which represent offsets into text.
+* The array has a "positive" region in which offsets are given as positive distances
+* from the start of the text, and a "negative" region in which offsets are given as
+* negative distances from the end of the text.  Between the positive and negative regions
+* is a gap, into which new offsets may be inserted.  This storage scheme allows for
+* efficient response to a series of editing operations which occur in the same area of the
+* text.
+* <p>
+* StyleBuffer uses the offsets in <tt>RunArray</tt> as the boundaries of style runs.
+* A style run begins at each offset in <tt>RunArray</tt>, and each style run continues to
+* the next offset.  The style array is kept in sync with the array of offsets in <tt>RunArray</tt>;
+* that is, the style which begins at RunArray[i] is stored in StyleArray[i].
+* <p>
+* The first entry in the <tt>RunArray</tt> is always 0.
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+* @see RunArray
+*/
+
+final class StyleBuffer extends MStyleBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Creates a new style buffer with length equal to the length of <tt>text</tt>,
+    * and with a single run of <tt>defaultStyle</tt>.
+    */
+    private static final long serialVersionUID = 22356934;
+
+    private static final int CURRENT_VERSION = 1;
+    private static final int kInitialSize = 10;
+    private RunArray fRunArray;
+
+    private AttributeMap fStyleTable[];
+
+    StyleBuffer(MConstText text, AttributeMap initialStyle) {
+
+        this(text.length(), initialStyle);
+    }
+
+    /**
+    * Creates a new style buffer with length <tt>initialLength</tt> and with a
+    * single run of <tt>defaultStyle</tt>.
+    */
+
+    StyleBuffer(int initialLength, AttributeMap initialStyle) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fRunArray.fPosEnd = 0;
+        fRunArray.fRunStart[0] = 0;
+
+        fStyleTable = new AttributeMap[kInitialSize]; // do I really want to do this???
+
+        fStyleTable[0] = initialStyle;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public StyleBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+    }
+
+/**
+* Shift style and run tables such that the last positive run begins before the given position.
+* Since there is always a run start at 0, this method ensures that the first run will not be shifted.
+* This is called by: <tt>insertText</tt> and <tt>deleteText</tt>.
+* @param pos a position in the text.
+*/
+
+    private void shiftTableTo(int pos) {
+
+        if (pos == 0)
+            pos = 1;
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+/**
+* Minimize the amount of storage used by this object.
+*/
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Increase the storage capacity of the style and run tables if no room remains.
+*/
+    private void expandStyleTableIfFull() {
+
+        if (fRunArray.fPosEnd + 1 == fRunArray.fNegStart) {
+
+            int oldNegStart = fRunArray.fNegStart;
+            fRunArray.expandRunTable();
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/*
+    public MStyleRunIterator createStyleRunIterator(int start, int limit) {
+
+        return new StyleRunIterator(start, limit);
+    }
+*/
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>length</tt>.  The run table
+* is shifted such that the run into which text was inserted is the last positive run.
+* This implementation assumes that all styles propogate.
+* @param start the offset where the insertion began
+* @param length the number of characters inserted
+*/
+    public void insertText(int start, int limit) {
+
+        shiftTableTo(start);
+        fRunArray.addToCurTextLength(limit - start);
+    }
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* This implementation assumes that all styles propogate.
+* This method shifts the run table such that the run in which the delete began
+* is the last positive run.  Other methods depend on this "side effect".
+* @param start the offset where the deletion began
+* @param length the offset where the deletion stopped
+*/
+    public void deleteText(int start, int limit) {
+
+        int length = limit - start;
+
+        // An optimization - if a whole run wasn't deleted we don't
+        // need to check for run merging, which could be expensive.
+        boolean wholeRunDeleted = false;
+
+        shiftTableTo(start);
+
+        int firstRunLimit = fRunArray.getCurTextLength();
+        if (fRunArray.fNegStart < fRunArray.getArrayLength())
+            firstRunLimit += fRunArray.fRunStart[fRunArray.fNegStart];
+
+        if (limit == fRunArray.getCurTextLength()) {
+            fRunArray.fNegStart = fRunArray.getArrayLength();
+        }
+        else if (limit >= firstRunLimit) {
+
+            int end = fRunArray.findRunContaining(limit);
+            if (end != fRunArray.fPosEnd) {
+                fRunArray.fRunStart[end] = limit - fRunArray.getCurTextLength();
+                fRunArray.fNegStart = end;
+                wholeRunDeleted = true;
+            }
+        }
+
+        if (fRunArray.fNegStart != fRunArray.getArrayLength()) {
+            if (start == 0 && limit >= firstRunLimit) {
+                // the first style run was deleted;  move first "negative" run into
+                // first position
+                fStyleTable[0] = fStyleTable[fRunArray.fNegStart++];
+            }
+            else if (wholeRunDeleted) {
+                if (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd])) {
+                    // merge style runs
+                    fRunArray.fNegStart++;
+                }
+            }
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+        //System.out.println("In deleteText:  number of style runs = " + numRuns(this));
+    }
+
+/**
+* Arrange style table so that old styles in the provided range are removed, and
+* new styles can be inserted into the insertion gap.
+* After calling this method, new style starts and styles may be placed
+* in the insertion gaps of fRunArray.fStyleStart and fStyleTable.
+* @param start offset in the text where insertion operation begins
+* @param limit offset in the text where previous styles resume
+*/
+    private void prepareStyleInsert(int start) {
+
+        if (start == 0) {
+
+            // fRunArray.fPosEnd should be 0 if we're in this branch.
+
+            if (fRunArray.getCurTextLength() > 0) {
+
+                /* Move first existing style run to negative end of buffer.
+                   Don't do this if length==0;  that is, if there is no real
+                   style run at 0.
+                 */
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[0];
+                fRunArray.fRunStart[fRunArray.fNegStart] = -fRunArray.getCurTextLength();
+            }
+
+            fRunArray.fPosEnd = -1;
+        }
+        else {
+
+            // consistency check: start should be in current gap
+            if (fRunArray.fRunStart[fRunArray.fPosEnd] >= start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            int endOfInsertionGap = fRunArray.getCurTextLength();
+            if (fRunArray.fNegStart < fRunArray.getArrayLength()) {
+                endOfInsertionGap += fRunArray.fRunStart[fRunArray.fNegStart];
+            }
+
+            if (endOfInsertionGap < start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            // if no break at start (on negative end of buffer) make one
+
+            if (endOfInsertionGap != start) {
+
+                // split style run in insertion gap
+
+                expandStyleTableIfFull();
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[fRunArray.fPosEnd];
+                fRunArray.fRunStart[fRunArray.fNegStart] = start - fRunArray.getCurTextLength();
+
+                //System.out.println("splitting run.");
+            }
+        }
+    }
+
+    public boolean modifyStyles(int start,
+                                int limit,
+                                StyleModifier modifier,
+                                int[] damagedRange) {
+
+        if (limit == start) {
+            return false;
+        }
+
+        shiftTableTo(start);
+
+        int currentRunStart = start;
+        AttributeMap oldStyle;
+        AttributeMap mergeStyle = fStyleTable[fRunArray.fPosEnd];
+
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() &&
+                fRunArray.fRunStart[fRunArray.fNegStart]+fRunArray.getCurTextLength() == start) {
+
+            oldStyle = fStyleTable[fRunArray.fNegStart];
+            ++fRunArray.fNegStart;
+        }
+        else {
+            oldStyle = mergeStyle;
+        }
+
+        boolean modifiedAnywhere = false;
+        for(;;) {
+
+            boolean modified = false;
+
+            // push new style into gap on positive side
+            AttributeMap newStyle = modifier.modifyStyle(oldStyle);
+            if (damagedRange != null && !newStyle.equals(oldStyle)) {
+                modified = modifiedAnywhere = true;
+                damagedRange[0] = Math.min(currentRunStart, damagedRange[0]);
+            }
+
+            if (!newStyle.equals(mergeStyle)) {
+
+                if (currentRunStart != 0) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                }
+
+                fStyleTable[fRunArray.fPosEnd] = newStyle;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = currentRunStart;
+            }
+
+            mergeStyle = newStyle;
+
+            int nextRunStart = fRunArray.getLogicalRunStart(fRunArray.fNegStart);
+
+            if (limit > nextRunStart) {
+                oldStyle = fStyleTable[fRunArray.fNegStart];
+                currentRunStart = nextRunStart;
+                if (modified) {
+                    damagedRange[1] = Math.max(currentRunStart, damagedRange[1]);
+                }
+                ++fRunArray.fNegStart;
+            }
+            else {
+                if (limit < nextRunStart && !oldStyle.equals(mergeStyle)) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                    fStyleTable[fRunArray.fPosEnd] = oldStyle;
+                    fRunArray.fRunStart[fRunArray.fPosEnd] = limit;
+                }
+                if (modified) {
+                    damagedRange[1] = Math.max(limit, damagedRange[1]);
+                }
+                break;
+            }
+        }
+
+        // merge last run if needed
+        if ((fRunArray.fNegStart < fRunArray.getArrayLength()) &&
+                    (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))) {
+            fRunArray.fNegStart++;
+        }
+
+        fRunArray.runStartsChanged();
+
+        return modifiedAnywhere;
+    }
+
+    public int styleStart(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        return fRunArray.getLogicalRunStart(fRunArray.findRunContaining(pos));
+    }
+
+    public int styleLimit(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        if (run == fRunArray.fPosEnd) {
+            run = fRunArray.fNegStart;
+        }
+        else {
+            ++run;
+        }
+
+        return fRunArray.getLogicalRunStart(run);
+    }
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    public AttributeMap styleAt(int pos) {
+
+        return fStyleTable[ fRunArray.findRunContaining(pos) ];
+    }
+
+/*
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param pos an offset into the text.  The iterator's run start and run limit are
+* set to the run containing <tt>pos</tt>.
+* @param iter the iterator to set
+*/
+    void setIterator(int pos, StyleRunIterator iter) {
+
+        if ((pos < 0) || (pos > fRunArray.getCurTextLength())) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param run the index of the run to which the iterator should be set
+* @param iter the iterator to set
+*/
+    private void setIteratorUsingRun(int run, StyleRunIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < 0 || run > lastValidRun) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart = fRunArray.fRunStart[run];
+        if (runStart < 0)
+            runStart += fRunArray.getCurTextLength();
+
+        AttributeMap style = fStyleTable[run];
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+        }
+
+        //System.out.println("setIterator: pos="+pos+", runStart="+runStart+", runLimit="+runLimit+
+        //                  ", run="+run+", fPosEnd="+fPosEnd);
+
+        iter.set(style, runStart, runLimit, run);
+    }
+
+    public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+    {
+        deleteText(start, limit);
+        if (srcStart == srcLimit)
+            return;
+        prepareStyleInsert(start);
+        for (int j2 = srcStart; j2 < srcLimit; j2 = srcText.characterStyleLimit(j2))
+        {
+            AttributeMap attributeMap = srcText.characterStyleAt(j2);
+            if (fRunArray.fPosEnd < 0 || !fStyleTable[fRunArray.fPosEnd].equals(attributeMap))
+            {
+                expandStyleTableIfFull();
+                fRunArray.fPosEnd++;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = j2 - srcStart + start;
+                fStyleTable[fRunArray.fPosEnd] = attributeMap;
+            }
+        }
+        fRunArray.addToCurTextLength(srcLimit - srcStart);
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() && fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))
+            fRunArray.fNegStart++;
+    }
+
+    private  static final int kNoRun = -42; // iterator use
+
+    private final class StyleRunIterator /*implements MStyleRunIterator*/ {
+
+        StyleRunIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fStyle != null;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(null, 0, 0, kNoRun);
+            }
+        }
+
+        void set(AttributeMap style, int start, int limit, int currentRun)
+        {
+            fStyle = style;
+            fCurrentRun = currentRun;
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public AttributeMap style()
+        {
+            return fStyle;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private AttributeMap fStyle;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/StyleModifier.java b/src/com/ibm/richtext/styledtext/StyleModifier.java
new file mode 100644
index 0000000..0160245
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleModifier.java
@@ -0,0 +1,190 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+/**
+ * StyleModifier is the base class for operations on AttributeMap.  To implement
+ * an operation on AttributeMap, subclass StyleModifier and override
+ * <code>modifyStyle</code>.  StyleModifiers are used by MText.
+ * <p>
+ * For convenience, this class contains factory methods which will create a
+ * StyleModifier for
+ * certain common operations: attribute union, attribute removal, and AttributeMap
+ * replacement.
+ * @see AttributeMap
+ * @see AttributeSet
+ * @see MText
+ */
+/*
+ * {jbr} StyleModifier is not the best name for this class - styles are immutable and never
+ * really modified.
+ */
+public class StyleModifier
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a StyleModifier.
+     */
+    protected StyleModifier() {
+    }
+
+    /**
+     * Return the result of this StyleModifier's operation on the given style.
+     * Default implementation just returns the given style.
+     * @param style the AttributeMap to perform the operation on
+     */
+    public AttributeMap modifyStyle(AttributeMap style)
+    {
+        return style;
+    }
+
+    /**
+     * A StyleModifier which simply returns the given style.
+     */
+    public static final StyleModifier IDENTITY = new StyleModifier();
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeMap to union with
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(AttributeMap s) {
+
+        return new StyleAddModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttribute(key, value)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param key the key to add
+     * @param value the value to add
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(Object key,
+                                                  Object value) {
+
+        return new AttributeAddModifier(key, value);
+    }
+
+    /**
+     * Create a StyleModifier whose operation returns <code>s</code>,
+     * ignoring the parameter to <code>modifyStyle</code>.
+     * @param s the AttributeMap which will replace any other AttributeMap
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createReplaceModifier(AttributeMap s) {
+
+        return new StyleReplaceModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.removeAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeSet of attributes to remove
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createRemoveModifier(AttributeSet s) {
+
+        return new StyleRemoveModifier(s);
+    }
+
+    static final class AttributeAddModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeAddModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+    }
+
+    /**
+     * Create this with the styles to add.  These styles will add to and override any already
+     * present in the style passed to modifyStyle.
+     */
+    static final class StyleAddModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleAddModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return style.addAttributes(fStyle);
+        }
+    }
+
+    /**
+     * Create this with the styles to replace.  All style runs will have only these
+     * styles.
+     */
+    static final class StyleReplaceModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleReplaceModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return fStyle;
+        }
+    }
+
+    static final class StyleRemoveModifier extends StyleModifier {
+
+        private AttributeSet fRemoveSet;
+
+        public StyleRemoveModifier(AttributeSet removeSet) {
+
+            if (removeSet == null) {
+                throw new IllegalArgumentException("set is null");
+            }
+            fRemoveSet = removeSet;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.removeAttributes(fRemoveSet);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StyledText.java b/src/com/ibm/richtext/styledtext/StyledText.java
new file mode 100644
index 0000000..7de6f57
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyledText.java
@@ -0,0 +1,684 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.text.CharacterIterator;
+
+/**
+ * This class is an implementation of MText, a modifyable, styled text
+ * storage model.  Additionally, it supports persistance through the
+ * Externalizable interface.
+ * @see MText
+ */
+
+/*
+    10/28/96 {jf} - split the character and paragraph style access and setter function around...
+            just to keep things interesting.
+    8/7/96 {jf} - moved paragraph break implementation from AbstractText into Style text.
+            - added countStyles, getStyles, and ReplaceStyles implementation.
+
+    8/14/96 sfb  eliminated StyleSheetIterator
+
+    8/29/96 {jbr} changed iter-based replace method - doesn't call at() unless it is safe to do so
+            Also, added checkStartAndLimit for debugging
+
+    7/31/98 Switched from Style to AttributeMap
+
+*/
+
+public final class StyledText extends MText implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    /* unicode storage */
+    private MCharBuffer         fCharBuffer;
+    /* character style storage */
+    private MStyleBuffer        fStyleBuffer;
+    /* paragraph style storage */
+    private MParagraphBuffer    fParagraphBuffer;
+
+    private transient int fTimeStamp = 0;
+    private transient int[] fDamagedRange = { Integer.MAX_VALUE,
+                                              Integer.MIN_VALUE };
+
+    private static class ForceModifier extends StyleModifier {
+
+        private AttributeMap fStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        void setStyle(AttributeMap style) {
+
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return fStyle;
+        }
+    }
+
+    // Keep this around foruse in replaceCharStylesWith.  OK since
+    // this class isn't threadsafe anyway.
+    private transient ForceModifier forceModifier = null;
+
+    //======================================================
+    // CONSTRUCTORS
+    //======================================================
+    /**
+     * Create an empty text object.
+     */
+    public StyledText()
+    {
+        this(0);
+    }
+
+    /**
+     * Create an empty text object ready to hold at least capacity chars.
+     * @param capacity the minimum capacity of the internal text buffer
+     */
+    public StyledText(int capacity)
+    {
+        fCharBuffer         = capacity>0? new CharBuffer(capacity) : new CharBuffer();
+        fStyleBuffer        = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer    = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object with the characters in the string,
+     * in the given style.
+     * @param string the initial contents
+     * @param initialStyle the style of the initial text
+     */
+    public StyledText(String string, AttributeMap initialStyle)
+    {
+        fCharBuffer = new CharBuffer(string.length());
+        fCharBuffer.replace(0, 0, string, 0, string.length());
+
+        fStyleBuffer = new StyleBuffer(this, initialStyle);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object from the given source.
+     * @param source the text to copy
+     */
+    public StyledText(MConstText source) {
+        this();
+        append(source);
+    }
+    
+    /**
+     * Create a text object from a subrange of the given source.
+     * @param source the text to copy from
+     * @param srcStart the index of the first character to copy
+     * @param srcLimit the index after the last character to copy
+     */
+    public StyledText(MConstText source, int srcStart, int srcLimit) {
+        this();
+        replace(0, 0, source, srcStart, srcLimit);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fCharBuffer);
+        out.writeObject(fStyleBuffer);
+        out.writeObject(fParagraphBuffer);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fCharBuffer = (MCharBuffer) in.readObject();
+        fStyleBuffer = (MStyleBuffer) in.readObject();
+        fParagraphBuffer = (MParagraphBuffer) in.readObject();
+
+        resetDamagedRange();
+    }
+
+    //======================================================
+    // MConstText INTERFACES
+    //======================================================
+
+    //--------------------------------------------------------
+    // character access
+    //--------------------------------------------------------
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public char at(int pos)
+    {
+        return fCharBuffer.at(pos);
+    }
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public void extractChars(int start, int limit, char[] dst, int dstStart)
+    {
+        fCharBuffer.at(start, limit, dst, dstStart);
+    }
+
+    //-------------------------------------------------------
+    // text model creation
+    //-------------------------------------------------------
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MConstText extract(int start, int limit)
+    {
+        return extractWritable(start, limit);
+    }
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MText extractWritable(int start, int limit)
+    {
+        MText text = new StyledText();
+        text.replace(0, 0, this, start, limit);
+        text.resetDamagedRange();
+        return text;
+    }
+
+    //--------------------------------------------------------
+    // size/capacity
+    //--------------------------------------------------------
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public int length()
+    {
+        return fCharBuffer.length();
+    }
+
+/**
+* Create a <code>CharacterIterator</code> over the range [<code>start</code>, <code>limit</code>).
+* @param start the beginning of the iterator's range
+* @param limit the limit of the iterator's range
+* @return a valid <code>CharacterIterator</code> over the specified range
+* @see java.text.CharacterIterator
+*/
+    public CharacterIterator createCharacterIterator(int start, int limit)
+    {
+        return fCharBuffer.createCharacterIterator(start, limit);
+    }
+
+    //--------------------------------------------------------
+    // character styles
+    //--------------------------------------------------------
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleStart(int pos) {
+
+        checkPos(pos, LESS_THAN_LENGTH);
+        return fStyleBuffer.styleStart(pos);
+    }
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleLimit(int pos) {
+
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleLimit(pos);
+    }
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public AttributeMap characterStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleAt(pos);
+    }
+
+    //--------------------------------------------------------
+    // paragraph boundaries and styles
+    //--------------------------------------------------------
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphStart(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStart(pos);
+    }
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphLimit(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphLimit(pos);
+    }
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public AttributeMap paragraphStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStyleAt(pos);
+    }
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public int getTimeStamp() {
+
+        return fTimeStamp;
+    }
+
+    //======================================================
+    // MText INTERFACES
+    //======================================================
+    //--------------------------------------------------------
+    // character modfication functions
+    //--------------------------------------------------------
+
+    private void updateDamagedRange(int deleteStart,
+                                    int deleteLimit,
+                                    int insertLength) {
+
+        fDamagedRange[0] = Math.min(fDamagedRange[0], deleteStart);
+
+        if (fDamagedRange[1] >= deleteLimit) {
+            int lengthChange = insertLength - (deleteLimit-deleteStart);
+            fDamagedRange[1] += lengthChange;
+        }
+        else {
+            fDamagedRange[1] = deleteStart + insertLength;
+        }
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public void replace(int start, int limit, MConstText text, int srcStart, int srcLimit)
+    {
+        if (text == this) {
+            text = new StyledText(text);
+        }
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fStyleBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fParagraphBuffer.replace(start, limit, text, srcStart, srcLimit, fDamagedRange);
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+*/
+    public void replace(int start, int limit, MConstText text) {
+
+        replace(start, limit, text, 0, text.length());
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle)
+    {
+        checkStartLimit(start, limit);
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, srcChars, srcStart, srcLimit);
+
+        replaceCharStylesWith(start, limit, start + (srcLimit-srcStart), charsStyle);
+
+        fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        fParagraphBuffer.insertText(start, srcChars, srcStart, srcLimit);
+
+        fTimeStamp += 1;
+    }
+
+    private void replaceCharStylesWith(int start, int oldLimit, int newLimit, AttributeMap style) {
+
+        if (start < oldLimit) {
+            fStyleBuffer.deleteText(start, oldLimit);
+        }
+        if (start < newLimit) {
+            if (forceModifier == null) {
+                forceModifier = new ForceModifier();
+            }
+            forceModifier.setStyle(style);
+            fStyleBuffer.insertText(start, newLimit);
+            fStyleBuffer.modifyStyles(start, newLimit, forceModifier, null);
+        }
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charStyle the style of the new character
+*/
+    public void replace(int start, int limit, char srcChar, AttributeMap charStyle)
+    {
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, 1);
+
+        fCharBuffer.replace(start, limit, srcChar);
+
+        replaceCharStylesWith(start, limit, start + 1, charStyle);
+
+        if (start < limit) {
+            fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        }
+
+        fParagraphBuffer.insertText(start, srcChar);
+
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public void replaceAll(MConstText srcText)
+    {
+        replace(0, length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert.
+*/
+    public void insert(int pos, MConstText srcText)
+    {
+        replace(pos, pos, srcText, 0, srcText.length());
+    }
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append.
+*/
+    public void append(MConstText srcText)
+    {
+        replace(length(), length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete.
+*/
+    public void remove(int start, int limit)
+    {
+        replace(start, limit, (char[])null, 0, 0, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+    }
+
+/**
+* Delete all characters and styles.  Always increments time stamp.
+*/
+    public void remove()
+    {
+        // rather than going through replace(), just reinitialize the StyledText,
+        // letting the old data structures fall on the floor
+        fCharBuffer = new CharBuffer();
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+        fTimeStamp += 1;
+        fDamagedRange[0] = fDamagedRange[1] = 0;
+    }
+
+    //--------------------------------------------------------
+    // storage management
+    //--------------------------------------------------------
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public void compress() {
+
+        fCharBuffer.compress();
+        fStyleBuffer.compress();
+        fParagraphBuffer.compress();
+    }
+
+    //--------------------------------------------------------
+    // style modification
+    //--------------------------------------------------------
+
+/**
+* Set the style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public void removeCharacterStyles() {
+
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fTimeStamp += 1;
+        fDamagedRange[0] = 0;
+        fDamagedRange[1] = length();
+    }
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyCharacterStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fStyleBuffer.modifyStyles(start,
+                                                     limit,
+                                                     modifier,
+                                                     fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyParagraphStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fParagraphBuffer.modifyParagraphStyles(start,
+                                                                  limit,
+                                                                  modifier,
+                                                                  fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public void resetDamagedRange() {
+
+        fDamagedRange[0] = Integer.MAX_VALUE;
+        fDamagedRange[1] = Integer.MIN_VALUE;
+    }
+
+/**
+* Return the start of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see #resetDamagedRange
+*/
+    public int damagedRangeStart() {
+
+        return fDamagedRange[0];
+    }
+
+/**
+* Return the limit of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the limit of the damaged range
+* @see #damagedRangeStart
+* @see #resetDamagedRange
+*/
+    public int damagedRangeLimit() {
+
+        return fDamagedRange[1];
+    }
+
+    public String toString()
+    {
+        String result ="";
+        for (int i = 0; i < length(); i++) {
+            result += at(i);
+        }
+        return result;
+    }
+
+    //======================================================
+    // IMPLEMENTATION
+    //======================================================
+
+    /* check a range to see if it is well formed and within the bounds of the text */
+    private void checkStartLimit(int start, int limit)
+    {
+        if (start > limit) {
+            //System.out.println("Start is less than limit. start:"+start+"; limit:"+limit);
+            throw new IllegalArgumentException("Start is greater than limit. start:"+start+"; limit:"+limit);
+        }
+
+        if (start < 0) {
+            //System.out.println("Start is negative. start:"+start);
+            throw new IllegalArgumentException("Start is negative. start:"+start);
+        }
+
+        if (limit > length()) {
+            //System.out.println("Limit is greater than length.  limit:"+limit);
+            throw new IllegalArgumentException("Limit is greater than length.  limit:"+limit);
+        }
+    }
+
+    private static final boolean LESS_THAN_LENGTH = false;
+    private static final boolean NOT_GREATER_THAN_LENGTH = true;
+
+    private void checkPos(int pos, boolean endAllowed) {
+
+        int lastValidPos = length();
+        if (endAllowed == LESS_THAN_LENGTH) {
+            --lastValidPos;
+        }
+
+        if (pos < 0 || pos > lastValidPos) {
+            throw new IllegalArgumentException("Position is out of range.");
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/TabStop.java b/src/com/ibm/richtext/styledtext/TabStop.java
new file mode 100644
index 0000000..766ae56
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TabStop.java
@@ -0,0 +1,183 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * TabStop represents a position on a tab ruler.  Each tab stop has a
+ * position, giving its location on the ruler, and one of several
+ * types.  The type determines how a segment controled by this TabStop
+ * is positioned on a line:
+ * <ul>
+ * <li><code>kLeading</code> - the leading edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kCenter</code> - the segment is centered on this TabStop's
+ *     position</li>
+ * <li><code>kTrailing</code> - the trailing edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kDecimal</code> - the first decimal in the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kAuto</code> - semantically the same as <code>kLeading</code>.
+ *     Used by tab rulers to indicate that all subsequent tab stops
+ *     will be at autospaced intervals.</li>
+ * </ul>
+ * @see MTabRuler
+ */
+public final class TabStop implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private byte fType;    // left, center, right, decimal
+    private int fPosition; // tab stop position from line origin.
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.
+     */
+    public static final byte kLeading = 0;
+
+    /**
+     * A TabStop with this type aligns its segment's center
+     * to the TabStop's position.
+     */
+    public static final byte kCenter = 1;
+
+    /**
+     * A TabStop with this type aligns its segment's trailing edge
+     * to the TabStop's position.
+     */
+    public static final byte kTrailing = 2;
+
+    /**
+     * A TabStop with this type aligns its segment's first decimal
+     * to the TabStop's position.
+     */
+    public static final byte kDecimal = 3;
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.  After a TabStop of this type,
+     * all tabs are at autospace intervals.  Usually, clients will
+     * not construct TabStops with this type.
+     */
+    public static final byte kAuto = 4;
+
+    /**
+     * Create a TabStop with position 0 and type <code>kLeading</code>.
+     */
+    public TabStop() {
+
+       this(0, kLeading);
+    }
+
+    /**
+     * Create a TabStop with the given position and type.
+     * @param position the TabStop's position
+     * @param type the TabStop's type.  Must be one of constants
+     *      in this class.
+     */
+    public TabStop(int position, byte type) {
+
+        if (type < kLeading || type > kAuto) {
+            throw new IllegalArgumentException("Invalid tab type");
+        }
+
+        fPosition = position;
+        fType = type;
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of TabStop.");
+        }
+        fPosition = in.readInt();
+        fType = in.readByte();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(fPosition);
+        out.writeByte(fType);
+    }
+
+    /**
+     * Compare this to another Object.  TabStops are equal if
+     * their position and type are the same.
+     */
+    public boolean equals(Object rhs)
+    {
+        if (rhs == null) {
+            return false;
+        }
+
+        TabStop rhsTab;
+        try {
+            rhsTab = (TabStop) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return fType == rhsTab.fType && fPosition == rhsTab.fPosition;
+    }
+
+    /**
+     * Return the hash code for this TabStop.  The hash code is
+     * <code>position << type</code>.
+     */
+    public int hashCode() {
+
+        return fPosition << fType;
+    }
+
+    public String toString()
+    {
+        char typeChar;
+        switch (fType) {
+            case kLeading: typeChar = 'L'; break;
+            case kCenter: typeChar = 'C'; break;
+            case kTrailing: typeChar = 'R'; break;
+            case kDecimal: typeChar = 'D'; break;
+            case kAuto: typeChar = 'A'; break;
+            default: typeChar = '?'; break;
+        }
+        return "TabStop[" + Integer.toString(fPosition) + typeChar + ']';
+    }
+
+    /**
+     * Return the type of this TabStop.  Will be one of the constants
+     * in this class.
+     */
+    public byte getType() {
+        return fType;
+    }
+
+    /**
+     * Return the position of this TabStop.
+     */
+    public int getPosition() {
+        return fPosition;
+    }
+}
+
diff --git a/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
new file mode 100644
index 0000000..a15e844
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+final class TestFastIntBinarySearch {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        boolean result = new TestFastIntBinarySearch().test();
+        System.out.println(result? "PASSED" : "FAILED");
+    }
+
+    public boolean test() {
+
+        boolean result = true;
+        int[] test = {-5, -3, 0, 2, 5};
+        FastIntBinarySearch fibs = new FastIntBinarySearch(test);
+
+        for (int i=0; i < 2; i++) {
+            int beforeAny = fibs.findIndex(-6);
+            if (beforeAny != -1) {
+                result = false;
+            }
+            
+            int atEnd = fibs.findIndex(5);
+            if (atEnd != test.length-1) {
+                result = false;
+            }
+            
+            int afterAny = fibs.findIndex(6);
+            if (afterAny != test.length-1) {
+                result = false;
+            }
+            
+            int exactly = fibs.findIndex(-3);
+            if (exactly != 1) {
+                result = false;
+            }
+            
+            fibs = new FastIntBinarySearch(new int[] {20, 40});
+            fibs.setData(test);
+        }
+        
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/Validation.java b/src/com/ibm/richtext/styledtext/Validation.java
new file mode 100644
index 0000000..901b04a
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/Validation.java
@@ -0,0 +1,37 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * Iterators use this class to keep from getting out of sync with
+ * their underlying data.  When created, the iterator gets a
+ * Validation instance.  If the underlying data changes, the Validation
+ * becomes invalid.  Usually iterators will throw exceptions if accessed
+ * after becoming invalid.
+ */
+final class Validation {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fIsValid = true;
+
+    boolean isValid() {
+
+        return fIsValid;
+    }
+
+    void invalidate() {
+
+        fIsValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/package.html b/src/com/ibm/richtext/styledtext/package.html
new file mode 100644
index 0000000..659bed4
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/package.html
@@ -0,0 +1,13 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides styled text storage and related classes.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
new file mode 100644
index 0000000..295dca3
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.CodeEdit;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.SyntaxColorer;
+import com.ibm.richtext.demo.TextDocument;
+
+public class SwingCodeEdit extends CodeEdit {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingCodeEdit(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       fSettings,
+                                       false,
+                                       new SyntaxColorer(),
+                                       false,
+                                       true,
+                                       menus);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
new file mode 100644
index 0000000..63cabc2
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
@@ -0,0 +1,275 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.swingui.JTabRuler;
+import com.ibm.richtext.swingui.SwingMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import com.ibm.richtext.demo.AwtDocumentWindow;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.EditorResources;
+import com.ibm.richtext.demo.ResourceUtils;
+import com.ibm.richtext.demo.TextDocument;
+
+import java.awt.BorderLayout;
+import java.awt.FileDialog;
+
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+final class SwingDocumentWindow extends JFrame implements DocumentWindow {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -1514405707157485775L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private JTextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    SwingDocumentWindow(EditApplication application,
+                        TextDocument document,
+                        TextPanelSettings textPanelSettings,
+                        boolean useTabRuler,
+                        TextPanelListener listener,
+                        boolean supportStyledText,
+                        boolean supportPlainText,
+                        int[] menus) {
+
+        fApplication = application;
+        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+        
+        fTextPanel = new JTextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        getContentPane().setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+            getContentPane().add(tabRuler, "North");
+        }
+        
+        getContentPane().add(fTextPanel, "Center");
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        JMenuBar menuBar = new JMenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        JMenu menu = new JMenu(menuTitle);
+        new SwingFileMenuManager(menu, fApplication, this,
+                                 supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setJMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            int save = askSave();
+            if (save == JOptionPane.YES_OPTION) {
+                return doSave();
+            }
+            else {
+                return save == JOptionPane.NO_OPTION;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  The returned value will be YES_OPTION,
+     * NO_OPTION, or CANCEL_OPTION from JOptionPane.
+     */
+    private int askSave() {
+
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String message = MessageFormat.format(pattern, new Object[] {getTitle()});
+        
+        String yes = ResourceUtils.getString(EditorResources.YES);
+        String no = ResourceUtils.getString(EditorResources.NO);
+        String cancel = ResourceUtils.getString(EditorResources.CANCEL);
+
+        return JOptionPane.showOptionDialog(this,
+                                            message,
+                                            "",
+                                            JOptionPane.YES_NO_CANCEL_OPTION,
+                                            JOptionPane.QUESTION_MESSAGE,
+                                            null,
+                                            new Object[]{yes,no,cancel},
+                                            yes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingEditDemo.java b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
new file mode 100644
index 0000000..76f9922
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.TextDocument;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+
+public class SwingEditDemo extends EditDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingEditDemo(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       JTextPanel.getDefaultSettings(),
+                                       true,
+                                       null,
+                                       true,
+                                       true,
+                                       null);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
new file mode 100644
index 0000000..292d683
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
@@ -0,0 +1,63 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import java.awt.Event;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.FileMenuManager;
+import com.ibm.richtext.demo.MenuData;
+import com.ibm.richtext.demo.ResourceUtils;
+
+final class SwingFileMenuManager extends FileMenuManager {
+
+    private JMenu fMenu;
+    
+    public SwingFileMenuManager(JMenu menu,
+                                EditApplication application, 
+                                DocumentWindow document,
+                                boolean supportStyledFormat,
+                                boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuData menuData = ResourceUtils.getMenuData(key);
+        JMenuItem item = new JMenuItem(menuData.getName());
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JMessageDialog.java b/src/com/ibm/richtext/swingui/JMessageDialog.java
new file mode 100644
index 0000000..6349cb6
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JMessageDialog.java
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.CardLayout;
+
+import javax.swing.JFrame;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see JTextPanel
+ */
+public final class JMessageDialog extends JFrame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 5012952859760456427L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public JMessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        Container content = getContentPane();
+        content.setLayout(new CardLayout());
+        TextPanelSettings settings = JTextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        JTextPanel panel = new JTextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        content.add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JNumberDialog.java b/src/com/ibm/richtext/swingui/JNumberDialog.java
new file mode 100644
index 0000000..f08ca1f
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JNumberDialog.java
@@ -0,0 +1,164 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class JNumberDialog extends JDialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8948601172508147011L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private JTextField fInput = null;
+
+    private JButton fOKButton = null;
+    private JButton fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    JNumberDialog(Frame parent,
+                  String title,
+                  String message,
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        
+        Container content = getContentPane();
+        
+        content.setLayout(new java.awt.GridLayout(2,1));
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new JTextField(5);
+
+        panel.add(new JLabel(message));
+        panel.add(fInput);
+        content.add("Center", panel);
+
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        JPanel p = new JPanel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        content.add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param number The number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JObjectDialog.java b/src/com/ibm/richtext/swingui/JObjectDialog.java
new file mode 100644
index 0000000..0a4f1ea
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JObjectDialog.java
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.util.Hashtable;
+
+import javax.swing.Box;
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JLabel;
+import javax.swing.ListSelectionModel;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.FlowLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+/**
+* Simple dialog that sets an attribute.
+*/
+final class JObjectDialog extends JDialog {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -9183651131772308979L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+    private Hashtable fNameToValueMap;
+    
+    private final JButton fOKButton;
+    private final JButton fCancelButton;
+    private final JList fItems;
+    
+    /**
+    * Construct a new JObjectDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    JObjectDialog(Frame parent,
+                  String title, 
+                  String message, 
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  String[] names,
+                  Object[] values) {
+                    
+        super(parent, title, false);
+
+        setupMap(names, values);
+        
+        Dimension size = new Dimension(250, 200);
+        
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        fItems = new JList(names);
+        fItems.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        
+        fItems.addMouseListener(new MouseAdapter() {
+            public void mouseClicked(MouseEvent e) {
+                if (e.getClickCount() == 2) {
+                    closeWindow(true);
+                }
+            }
+        });
+        
+        JScrollPane listScroller = new JScrollPane(fItems);
+        listScroller.setPreferredSize(size);
+        listScroller.setPreferredSize(size);
+        listScroller.setAlignmentX(LEFT_ALIGNMENT);
+
+        JLabel label = new JLabel(message);
+        label.setLabelFor(fItems);
+        
+        JPanel itemPanel = new JPanel();
+        itemPanel.add(label);
+        itemPanel.add(Box.createRigidArea(new Dimension(0,5)));
+        itemPanel.add(listScroller);
+        itemPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+        
+        itemPanel.setLayout(new BoxLayout(itemPanel, BoxLayout.Y_AXIS));
+        
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        
+        JPanel buttonPanel = new JPanel();
+        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        buttonPanel.add(fCancelButton);
+        buttonPanel.add(fOKButton);
+        
+        Container content = getContentPane();
+        content.add(itemPanel, BorderLayout.CENTER);
+        content.add(buttonPanel, BorderLayout.SOUTH);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        ActionListener listener = new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+            
+                Object source = e.getSource();
+                if (source == fOKButton) {
+                    closeWindow(true);
+                }
+                else if (source == fCancelButton) {
+                    closeWindow(false);
+                }
+            }
+        };
+        
+        fOKButton.addActionListener(listener);
+        fCancelButton.addActionListener(listener);
+        
+        selectStyles(values);
+    }
+    
+    private void setupMap(String[] names, Object[] values) {
+    
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+        
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        
+        if (sendAction && fItems.getMinSelectionIndex() != fItems.getMaxSelectionIndex()) {
+            sendAction = false;
+        }
+        
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedValue());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    /**
+    * Handle the user input
+    * @param value The value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    private void selectValue(Object value, Object[] values) {
+    
+        for (int i=0; i < values.length; i++) {
+        
+            if ((value != null && value.equals(values[i])) || (value == null && values[i] == null)) {
+                fItems.addSelectionInterval(i, i);
+                fItems.ensureIndexIsVisible(i);
+                return;
+            }
+        }
+    }
+    
+    private void selectStyles(Object[] values) {
+    
+        Object value;
+ 
+        if (fCharacter) {
+            value = fTextPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            value = fTextPanel.getParagraphStyleOverSelection(fKey);
+        }
+        
+        if (value != MTextPanel.MULTIPLE_VALUES) {
+            selectValue(value, values);
+        }
+        else {
+            fOKButton.setEnabled(false);
+            
+            int selLimit = fTextPanel.getSelectionEnd();
+            MConstText text = fTextPanel.getText();
+            for (int runStart = fTextPanel.getSelectionStart(); runStart <= selLimit;
+                    runStart = fCharacter? text.characterStyleLimit(runStart) : 
+                                           text.paragraphLimit(runStart)) {
+            
+                Object runVal;
+                if (fCharacter) {
+                    runVal = text.characterStyleAt(runStart).get(fKey);
+                }
+                else {
+                    runVal = text.paragraphStyleAt(runStart).get(fKey);
+                }
+                if (runVal == null) {
+                    runVal = fTextPanel.getDefaultValues().get(fKey);
+                }
+                
+                selectValue(runVal, values);
+                if (runStart == text.length()) {
+                    break;
+                }
+            }
+        }
+        
+        fItems.addListSelectionListener(new ListSelectionListener() {
+            public void valueChanged(ListSelectionEvent e) {
+                fItems.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+                fOKButton.setEnabled(true);
+                fItems.removeListSelectionListener(this);
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTabRuler.java b/src/com/ibm/richtext/swingui/JTabRuler.java
new file mode 100644
index 0000000..3fdb1af
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTabRuler.java
@@ -0,0 +1,136 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import javax.swing.JComponent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.awtui.MTabRulerComponent;
+
+/**
+ * JTabRuler is an implementation of MTabRulerComponent in a Swing component.
+ */
+public final class JTabRuler extends JComponent implements MTabRulerComponent {
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8547581956295504028L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public JTabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTextFrame.java b/src/com/ibm/richtext/swingui/JTextFrame.java
new file mode 100644
index 0000000..e552a84
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTextFrame.java
@@ -0,0 +1,145 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.awt.BorderLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.UIManager;
+
+import java.awt.Container;
+
+/**
+ * JTextFrame is a JFrame containing an editable JTextPanel, a set of standard
+ * menus, and a JTabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.JTextPanel
+ * @see SwingMenuBuilder
+ * @see JTabRuler
+ */
+public final class JTextFrame extends JFrame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -1026126723995559230L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private JTextPanel fTextPanel;
+
+    /**
+     * Create a new JTextFrame with no text, no title, 
+     * and a private clipboard.
+     */
+    public JTextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with no text and the given title.
+     * The JTextPanel will use a private clipboard.
+     * @param title the title of this Frame
+     */
+    public JTextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public JTextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new JTextPanel(text, clipboard);
+
+        JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        Container contentPane = getContentPane();
+        contentPane.setLayout(new BorderLayout());
+        contentPane.add(fTextPanel, "Center");
+        contentPane.add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        JMenuBar menuBar = new JMenuBar();
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+        
+        setJMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        String laf = UIManager.getSystemLookAndFeelClassName();
+        if (args.length == 1) {
+            if (args[0].equals("cp")) {
+                laf = UIManager.getCrossPlatformLookAndFeelClassName();
+            }
+        }
+                
+        try {
+            UIManager.setLookAndFeel(laf);
+        }
+        catch(Throwable th) {
+            th.printStackTrace();
+        }
+        JTextFrame frame = new JTextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/SwingMenuBuilder.java b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
new file mode 100644
index 0000000..87607eb
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
@@ -0,0 +1,234 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Frame;
+import java.awt.Window;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+/**
+ * SwingMenuBuilder provides a method for creating a set of Swing menus for interacting
+ * with an MTextPanel.  Future versions of this class may provide greater control
+ * over the menu contents.
+ * @see MTextPanel
+ */
+public final class SwingMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final SwingMenuBuilder INSTANCE = new SwingMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    /**
+     * Return an instance of SwingMenuBuilder.
+     */
+     
+    public static SwingMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private JMenuBar fMenuBar;
+    
+    private SwingMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(JMenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(JMenuBar menuBar,
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        JMenu menu = new JMenu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new SwingMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new JObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+        // variable not used final MTextPanel textPanel = fTextPanel;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel fTxtPanel) {
+                return new JNumberDialog(dialogParent,
+                                         dialogTitle,
+                                         dialogMessage,
+                                         fTxtPanel,
+                                         key,
+                                         character,
+                                         1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new JMessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingui/SwingMenuFactory.java b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
new file mode 100644
index 0000000..cd618ed
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Event;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class SwingMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class SwingMItem extends MItem {
+        
+        private JMenuItem fItem;
+        
+        SwingMItem(JMenuItem item) {
+            
+            fItem = item;
+            item.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    handleSelected();
+                }
+            });
+        }
+        
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                JCheckBoxMenuItem item = (JCheckBoxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private JMenu fMenu;
+        
+    SwingMenuFactory(JMenu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(JMenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        
+        fMenu.add(item);
+        
+        return new SwingMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new JMenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new JCheckBoxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/package.html b/src/com/ibm/richtext/swingui/package.html
new file mode 100644
index 0000000..2ce42ef
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/package.html
@@ -0,0 +1,13 @@
+<!--
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides classes for building a Swing-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/test/Declaration.java b/src/com/ibm/richtext/test/Declaration.java
new file mode 100644
index 0000000..715fc5a
--- /dev/null
+++ b/src/com/ibm/richtext/test/Declaration.java
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * This class contains the first four paragraphs of the Declaration
+ * of Independence, as both styled and unstyled text.  The views
+ * expressed therein are not necessarily those of the programmer or of
+ * his/her employer.  No criticism of any monarchy, oligarchy, dictatorship,
+ * autocracy, plutocracy, theocracy, anarchist territory, colonial power,
+ * or any other nondemocratic form of government is intended.  This document
+ * is provided "as-is" without any warranty expressed or implied.
+ */
+public final class Declaration {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final String fgDeclarationStr = "In Congress, July 4, 1776, THE UNANIMOUS DECLARATION OF THE THIRTEEN UNITED STATES OF AMERICA\n" +
+        "\n" +
+        "When in the Course of human Events, it becomes necessary for one People to dissolve the Political Bands which have connected them with another, and to assume among the Powers of the Earth, the separate and equal Station to which the Laws of Nature and of Nature's God entitle them, a decent Respect to the Opinions of Mankind requires that they should declare the causes which impel them to the Separation.\n" +
+        "\n" +
+        "We hold these Truths to be self-evident, that all Men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty, and the Pursuit of Happiness.\n" +
+        "\n" +
+        "That to secure these Rights, Governments are instituted among Men, deriving their just Powers from the Consent of the Governed, that whenever any Form of Government becomes destructive of these Ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its Foundation on such Principles, and organizing its Powers in such Form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient Causes; and accordingly all Experience hath shewn, that Mankind are more disposed to suffer, while Evils are sufferable, than to right themselves by abolishing the Forms to which they are accustomed. But when a long Train of Abuses and Usurpations, pursuing invariably the same Object, evinces a Design to reduce them under absolute Despotism, it is their Right, it is their Duty, to throw off such Government, and to provide new Guards for their future Security.\n" +
+        "\n";
+
+    public static final MConstText fgDeclaration = new StyledText(fgDeclarationStr, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+}
diff --git a/src/com/ibm/richtext/test/ITestTextPanel.java b/src/com/ibm/richtext/test/ITestTextPanel.java
new file mode 100644
index 0000000..3538355
--- /dev/null
+++ b/src/com/ibm/richtext/test/ITestTextPanel.java
@@ -0,0 +1,216 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.datatransfer.Clipboard;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import java.util.Date;
+import java.text.DateFormat;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+
+public class ITestTextPanel extends Frame implements ActionListener {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4776220202735727574L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static long fgOpCount = 0;
+
+    private TestTextPanel fTest;
+    
+    private MTextPanel fTextPanel;
+    private Frame fTextFrame;
+    private Clipboard fClipboard;
+    private Button fExersize, fStressTest;
+
+    public static void main(String[] args) {
+
+        Date startDate = new Date();
+
+        try {
+            Clipboard clipboard = new Clipboard("ITextTestPanel");
+            TextFrame frame = new TextFrame(null, "Interactive Test", clipboard);
+            MTextPanel panel = frame.getTextPanel();
+
+            new ITestTextPanel(panel, frame, clipboard).show();
+        }
+        finally {
+            DateFormat df = DateFormat.getDateTimeInstance();
+            System.out.println("Start time: " + df.format(startDate));
+            System.out.println("End Time: " + df.format(new Date()));
+            System.out.println("Op count: " + fgOpCount);
+        }
+    }
+
+    public ITestTextPanel(MTextPanel panel,
+                          Frame frame,
+                          Clipboard clipboard) {
+
+        fTextPanel = panel;
+        fTest = new TestTextPanel(fTextPanel);
+        fClipboard = clipboard;
+
+        setLayout(new GridLayout(0, 1));
+
+        fTextFrame = frame;
+        fTextFrame.setSize(350, 500);
+        fTextFrame.show();
+
+        // initialize UI:
+        fExersize = new Button("Exercise");
+        fExersize.addActionListener(this);
+        add(fExersize);
+
+        fStressTest = new Button("Stress Test");
+        fStressTest.addActionListener(this);
+        add(fStressTest);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowActivated(WindowEvent e) {
+                //activateTextFrame();
+            }
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+
+        setSize(280, 150);
+    }
+
+    private void activateTextFrame() {
+
+        fTextFrame.toFront();
+    }
+
+    public void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+        activateTextFrame();
+        Date startDate = new Date();
+        boolean exitedNormally = false;
+
+        try {
+            if (source == fExersize) {
+                fTest.incRandSeed();
+                for (int i=0; i < 100; i++) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            else if (source == fStressTest) {
+                fTest.incRandSeed();
+                while (true) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            exitedNormally = true;
+        }
+        finally {
+            if (!exitedNormally) {
+                DateFormat df = DateFormat.getDateTimeInstance();
+                System.out.println("Start time: " + df.format(startDate));
+                System.out.println("End Time: " + df.format(new Date()));
+                System.out.println("Rand seed: " + fTest.getRandSeed());
+                System.out.println("Op count: " + fgOpCount);
+            }
+        }
+    }
+
+    /**
+     * Perform a random operation on the MTextPanel.  Frame can
+     * be null.
+     */
+    private static final int OP_COUNT = 15;
+
+    public void selectOperation(Frame frame,
+                                Clipboard clipboard) {
+
+        int op = fTest.randInt(OP_COUNT);
+
+        switch (op) {
+
+            case 0:
+                fTest._testSetSelection();
+                break;
+
+            case 1:
+                fTest._testModifications(TestTextPanel.MOD_TEXT,
+                                        true);
+                break;
+
+            case 2:
+                fTest._testEditMenuOperations(clipboard);
+                break;
+
+            case 3:
+                fTest._testModFlag(fTextPanel.getCommandLogSize());
+                break;
+
+            case 4:
+                fTest.applyCharacterStyle();
+                break;
+
+            case 5:
+                fTest.applyParagraphStyle();
+                break;
+
+            case 6:
+            case 7:
+            case 8:
+            case 9:
+                fTest.typeKeys();
+                break;
+
+            case 10:
+                fTest.selectText();
+                break;
+
+            case 11:
+                fTest.undoRedo();
+                break;
+
+            case 12:
+                //if (frame != null) {
+                //    fTest.resizeFrame(frame);
+                //    break;
+                //}
+
+            case 13:
+                fTest.applyKeyRemap();
+                break;
+
+            case 14:
+                fTest._testCommandLogControl();
+                break;
+
+            default:
+                throw new Error("OP_COUNT is incorrect");
+        }
+        fgOpCount++;
+    }
+
+
+}
diff --git a/src/com/ibm/richtext/test/TestTextPanel.java b/src/com/ibm/richtext/test/TestTextPanel.java
new file mode 100644
index 0000000..79d7cd9
--- /dev/null
+++ b/src/com/ibm/richtext/test/TestTextPanel.java
@@ -0,0 +1,843 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.test;
+
+import java.util.Random;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.event.KeyEvent;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+// Note:  this used to be a TestFmwk test.  If you add
+// more tests to it, be sure to add them to 
+// com.ibm.richtext.test.unit.FmwkTestTextPanel.test() -
+// otherwise they won't get run!
+
+public class TestTextPanel /*extends TestFmwk*/ {
+
+    private final class TestListener implements TextPanelListener {
+        
+        private int NO_WAY = 0;
+        private int DEFINITELY = 1;
+        private int MAYBE = 2;
+        
+        private final int[] status;
+        
+        TestListener(MTextPanel textPanel) {
+            
+            int length = TextPanelEvent.TEXT_PANEL_LAST -
+                         TextPanelEvent.TEXT_PANEL_FIRST + 1;
+            status = new int[length];
+            textPanel.addListener(this);
+            allowAll();
+        }
+        
+        void refuseAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = NO_WAY;
+            }
+        }
+        
+        void allowAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = MAYBE;
+            }
+        }
+        
+        void expectEvent(int type) {
+            
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = DEFINITELY;
+        }
+        
+        void allowEvent(int type) {
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = MAYBE;
+        }
+        
+        void assertNotExpectingEvents() {
+            assertNotExpectingEvents(false, 0, false);
+        }
+        
+        void assertNotExpectingEvents(int iterCount, boolean exp) {
+            assertNotExpectingEvents(true, iterCount, exp);
+        }
+        
+        private void assertNotExpectingEvents(boolean logDetails, int iterCount, boolean exp) {
+            
+            boolean e = false;
+            for (int i=0; i < status.length; i++) {
+                if (status[i] == DEFINITELY) {
+                    if (logDetails) {
+                        logMessage("Expecting event " +
+                                        (i+TextPanelEvent.TEXT_PANEL_FIRST));
+                        logMessage("iterationCount="+iterCount+";  expexting="+exp);
+                    }
+                    e = true;
+                }
+            }
+            if (e) {
+                reportError("Some events pending");
+            }
+        }
+        
+        public void textEventOccurred(TextPanelEvent event) {
+            
+            int index = event.getID() - TextPanelEvent.TEXT_PANEL_FIRST;
+            if (status[index] == NO_WAY) {
+                reportError("Unexpected event: " + event);
+            }
+            else if (status[index] == DEFINITELY) {
+                status[index] = NO_WAY;
+            }
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return true;
+        }
+    }
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String STRING_CONTENT = "Some content";
+    private static final int TEST_ITERS = 2;
+    public static final MConstText MOD_TEXT =
+                new StyledText("Styled", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+    private Clipboard fClipboard;
+    private MTextPanel fTextPanel = null;
+    private TestListener fListener = null;
+    private int fRandSeed = 0;
+    private Random rand;
+    
+    private static final int BIG_COMMAND_LOG_SIZE = 40;
+    private static final int SMALL_COMMAND_LOG_SIZE = 8;
+
+    private static final StyleModifier[] paraMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_LEADING)),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_CENTER),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_TRAILING),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FULLY_JUSTIFIED),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_RTL),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_LTR),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.LINE_FLUSH)),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.RUN_DIRECTION))
+    };
+
+    private static final int SELECT = 0;
+    private static final int SET_CARET_POS = 1;
+    private static final int SET_START = 2;
+    private static final int SET_END = 3;
+
+    // using both styles of add modifier: AttributeMap and
+    // key-value, just for variety...
+    private static final StyleModifier[] charMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.WEIGHT,
+                                 TextAttribute.WEIGHT_BOLD)),
+        StyleModifier.createAddModifier(TextAttribute.FOREGROUND,
+                                 Color.green),
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.UNDERLINE,
+                                 TextAttribute.UNDERLINE_ON).addAttributes(
+                new AttributeMap(TextAttribute.SIZE, new Float(6)))),
+        StyleModifier.createReplaceModifier(
+                new AttributeMap(TextAttribute.FAMILY, "Dialog")),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(
+                new Object[] { TextAttribute.WEIGHT,
+                           TextAttribute.POSTURE,
+                           TextAttribute.UNDERLINE,
+                           TextAttribute.STRIKETHROUGH,
+                           TextAttribute.SUPERSCRIPT })),
+        StyleModifier.IDENTITY
+    };
+
+    private static final char[] TYPED_CHARS = new char[128 - ' ' + 3];
+    static {
+        TYPED_CHARS[0] = 8; // backspace
+        TYPED_CHARS[1] = '\t';
+        TYPED_CHARS[2] = '\n';
+        for (int i=3; i < TYPED_CHARS.length; i++) {
+            TYPED_CHARS[i] = (char) (' ' + i - 3);
+        }
+    }
+
+    public TestTextPanel() {
+
+        fClipboard = new Clipboard("TestTextPanel");
+        incRandSeed();
+    }
+
+    protected void reportError(String message) {
+    
+        System.err.println(message);
+        throw new RuntimeException(message);
+        //super.errln(message);
+    }
+    
+    protected void logMessage(String message) {
+    
+        System.err.println(message);
+        //super.logMessage(message);
+    }
+    
+    public TestTextPanel(MTextPanel panel) {
+        
+        this();
+        setTextPanel(panel);
+    }
+    
+    void incRandSeed() {
+        
+        rand = new Random(++fRandSeed);
+    }
+    
+    int getRandSeed() {
+        
+        return fRandSeed;
+    }
+
+    int randInt(int limit) {
+
+        return randInt(0, limit);
+    }
+
+    int randInt(int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MConstText text1 = new StyledText("Test contents. 1234\nHow about it?",
+                                              AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        MConstText text2 = new StyledText("Another test string.", bold);
+
+        _testWithText(text1);
+        _testWithText(text2);
+        _testWithText(new StyledText());
+
+        StyledText big1 = new StyledText();
+        for (int i=0; i < 50; i++) {
+            big1.append(text1);
+        }
+
+        _testWithText(big1);
+        StyledText big2 = new StyledText(text1);
+        for (int i=0; i < 80; i++) {
+            big2.append(text2);
+        }
+
+        _testWithText(big2);
+    }
+    
+    private void setTextPanel(MTextPanel panel) {
+        
+        fTextPanel = panel;
+        fListener = new TestListener(panel);
+    }
+    
+    private void _testWithText(MConstText text) {
+
+        setTextPanel(new TextPanel(text, fClipboard));
+
+        for (int i=0; i < TEST_ITERS; i++) {
+            _testSetSelection();
+            _testModifications(MOD_TEXT, true);
+            _testEditMenuOperations(fClipboard);
+            _testModFlag(fTextPanel.getCommandLogSize());
+            _testCommandLogControl();
+        }
+    }
+
+    private void _testSelection(int function, 
+                               final int aStart,
+                               final int aLimit) {
+
+        int oldStart = fTextPanel.getSelectionStart();
+        int oldLimit = fTextPanel.getSelectionEnd();
+
+        final int length = fTextPanel.getTextLength();
+        
+        int start = aStart;
+        int limit = aLimit;
+        
+        if (start < 0) {
+            start = 0;
+        }
+        else if (start > length) {
+            start = length;
+        }
+
+        if (limit < start) {
+            limit = start;
+        }
+        else if (limit > length) {
+            limit = length;
+        }
+        
+        fListener.refuseAll();
+        
+        if (oldStart != start || oldLimit != limit) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        }
+        if ((oldStart==oldLimit) != (start==limit)) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        if (oldStart==oldLimit) {
+            fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+
+        switch(function) {
+            case SELECT:
+                fTextPanel.select(aStart, aLimit);
+                break;
+            case SET_CARET_POS:
+                fTextPanel.setCaretPosition(aStart);
+                break;
+            case SET_START:
+                fTextPanel.setSelectionStart(aStart);
+                break;
+            case SET_END:
+                fTextPanel.setSelectionEnd(aLimit);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid function");
+        }
+        
+        if (fTextPanel.getSelectionStart() != start) {
+            reportError("getSelectionStart is incorrect after set");
+        }
+        if (fTextPanel.getSelectionEnd() != limit) {
+            reportError("getSelectionEnd is incorrect after set");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    private void setAndTestSelection(int start, int limit) {
+        
+        _testSelection(SELECT, start, limit);
+    }
+
+    private void setAndTestCaret(int caretPos) {
+
+        _testSelection(SET_CARET_POS, caretPos, caretPos);
+    }
+
+    private void setAndTestSelectionStart(int selStart) {
+
+        int limit = fTextPanel.getSelectionEnd();
+        _testSelection(SET_START, selStart, limit);
+    }
+
+    private void setAndTestSelectionEnd(int selEnd) {
+
+        int start = fTextPanel.getSelectionStart();
+        _testSelection(SET_END, start, selEnd);
+    }
+
+    public void _testSetSelection() {
+
+        int textLength = fTextPanel.getTextLength();
+        if (textLength != fTextPanel.getText().length()) {
+            reportError("Text panel length is not correct");
+        }
+
+        setAndTestSelection(0, textLength / 2);
+        setAndTestSelection(textLength / 2, textLength);
+        setAndTestSelection(0, textLength);
+        setAndTestSelection(-1, textLength+1);
+        if (textLength > 0) {
+            setAndTestSelection(0, textLength - 1);
+            setAndTestSelection(0, 1);
+        }
+
+        final int incAmount = Math.max(1, textLength/5);
+        for (int index = 0; index <= textLength; index += incAmount) {
+
+            setAndTestCaret(index);
+            setAndTestSelectionStart(textLength-index);
+            setAndTestSelectionEnd(textLength);
+            setAndTestSelectionStart(0);
+            setAndTestSelectionEnd(textLength-index);
+        }
+    }
+
+    /**
+     * Text must be editable to pass this test.
+     */
+    public void _testModifications(MConstText insertionText,
+                                   boolean restoreOldText) {
+
+        MConstText oldText = new StyledText(fTextPanel.getText());
+        final int insLength = insertionText.length();
+
+        fListener.allowAll();
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.append(insertionText);
+        fListener.assertNotExpectingEvents();
+        
+        if (fTextPanel.getSelectionStart() != oldText.length() + insLength) {
+            reportError("Append didn't result in correct selection");
+        }
+
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.insert(insertionText, 0);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+        
+        if (fTextPanel.getSelectionStart() != insLength) {
+            reportError("Insert didn't result in correct selection");
+        }
+
+        fTextPanel.replaceRange(insertionText, insLength, insLength+oldText.length());
+        if (fTextPanel.getSelectionStart() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getSelectionEnd() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getTextLength() != insLength*3) {
+            reportError("textLength is incorrect");
+        }
+
+        if (restoreOldText) {
+            fTextPanel.setText(oldText);
+            if (fTextPanel.getSelectionStart() != oldText.length()) {
+                reportError("setText didn't result in correct selection");
+            }
+            if (fTextPanel.getTextLength() != oldText.length()) {
+                reportError("length incorrect after setText");
+            }
+        }
+        
+        fListener.allowAll();
+    }
+
+    private static int iterationCount = 0;
+    public void _testCommandLogControl() {
+
+        fListener.refuseAll();
+        iterationCount++;
+        boolean exp = false;
+        if (fTextPanel.canRedo() || BIG_COMMAND_LOG_SIZE==0) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            exp = true;
+        }
+        //try {
+            fTextPanel.setCommandLogSize(BIG_COMMAND_LOG_SIZE);
+            
+            if (fTextPanel.canRedo()) {
+                reportError("canRedo after setCommandLogSize");
+            }
+            fListener.assertNotExpectingEvents(iterationCount, exp);
+        //}
+        //catch(Error e) {
+        //    logMessage("iterationCount="+iterationCount+";  expexting="+exp);
+        //    throw e;
+        //}
+
+        MConstText insText = new StyledText("7",
+                                AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        final int origLength = fTextPanel.getTextLength();
+        int start = origLength / 3;
+        
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        for (int i=start; i < BIG_COMMAND_LOG_SIZE+start; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+                fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fTextPanel.insert(insText, i);
+            fListener.assertNotExpectingEvents();
+        }
+
+        fListener.allowEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE-1; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fTextPanel.undo();
+            fListener.assertNotExpectingEvents();
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("Command log is too small");
+        }
+        
+        fListener.allowAll();
+        fTextPanel.undo();
+        if (fTextPanel.canUndo()) {
+            reportError("Command log is too large");
+        }
+
+        if (fTextPanel.getTextLength() != origLength * insText.length()) {
+            reportError("Text length was not restored");
+        }
+
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE; i++) {
+            fTextPanel.redo();
+        }
+
+        if (fTextPanel.getTextLength() != origLength+BIG_COMMAND_LOG_SIZE) {
+            reportError("Text length was not restored after redo");
+        }
+
+        if (fTextPanel.canRedo()) {
+            reportError("Should not be able to redo");
+        }
+
+        fTextPanel.undo();
+
+        fTextPanel.setCommandLogSize(SMALL_COMMAND_LOG_SIZE);
+
+        if (fTextPanel.canRedo()) {
+            reportError("canRedo after setCommandLogSize(small)");
+        }
+
+        for (int i=0; i < SMALL_COMMAND_LOG_SIZE; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("should be able to undo");
+            }
+            fTextPanel.undo();
+        }
+        if (fTextPanel.canUndo()) {
+            reportError("should not be able to undo after setCommandLogSize(small)");
+        }
+        if (!fTextPanel.canRedo()) {
+            reportError("why can't this redo???");
+        }
+        fTextPanel.redo();
+
+        fTextPanel.clearCommandLog();
+
+        if (fTextPanel.canUndo() || fTextPanel.canRedo()) {
+            reportError("Command log wasn't cleared");
+        }
+    }
+
+    /**
+     * Test cut, copy, paste, undo, redo, clear, canUndo, canRedo.
+     * Text must be editable to pass this test.
+     */
+    public void _testEditMenuOperations(Clipboard clipboard) {
+        
+        if (clipboard != null) {
+            // test paste and undo / redo
+            Transferable tr = new StringSelection(STRING_CONTENT);
+            clipboard.setContents(tr, new ClipboardOwner() {
+                public void lostOwnership(Clipboard c, Transferable t) {
+                }
+            });
+            if (!fTextPanel.clipboardNotEmpty()) {
+                reportError("MTextPanel doesn't recognize string content.");
+            }
+
+            fTextPanel.setCaretPosition(fTextPanel.getSelectionStart());
+            int oldLength = fTextPanel.getTextLength();
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after paste.");
+            }
+
+            if (!fTextPanel.canUndo()) {
+                reportError("canUndo should be true");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != oldLength) {
+                reportError("Length is wrong after undo");
+            }
+            if (!fTextPanel.canRedo()) {
+                reportError("canRedo should be true");
+            }
+            fTextPanel.redo();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after redo.");
+            }
+        }
+
+        int origLength = fTextPanel.getTextLength();
+        fTextPanel.selectAll();
+        fTextPanel.clear();
+        if (fTextPanel.getTextLength() != 0) {
+            reportError("Length is nonzero after clear");
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("canUndo should be true");
+        }
+        fTextPanel.undo();
+        if (fTextPanel.getTextLength() != origLength) {
+            reportError("Old text not restored");
+        }
+
+        if (origLength > 0) {
+
+            fTextPanel.select(0, 1);
+            fTextPanel.cut();
+            if (fTextPanel.getTextLength() != origLength-1) {
+                reportError("Length wrong after cut");
+            }
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.select(0, origLength);
+            fTextPanel.copy();
+            fTextPanel.setCaretPosition(0);
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != 2*origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after undo");
+            }
+        }
+    }
+
+    private void setAndTestModFlag(final int depth,
+                                   boolean modified) {
+
+        fTextPanel.setModified(modified);
+        for (int i=0; i < depth; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("Panel cannot undo at valid depth.  Depth=" + i);
+            }
+            fTextPanel.undo();
+            fTextPanel.setModified(modified);
+        }
+
+        // check that all mod flags are false:
+        if (fTextPanel.isModified() != modified) {
+            reportError("isModified is not correct");
+        }
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.redo();
+            if (fTextPanel.isModified() != modified) {
+                reportError("isModified is not correct");
+            }
+        }
+    }
+
+    /**
+     * Make <code>depth</code> modifications to the text in textfTextPanel.
+     * Set the modified flag on each operation, and then retrieve its
+     * value.  Finally, undo the modifications.
+     */
+    public void _testModFlag(final int depth) {
+
+        final int oldLength = fTextPanel.getTextLength();
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.insert(MOD_TEXT, 0);
+        }
+
+        setAndTestModFlag(depth, false);
+        setAndTestModFlag(depth, true);
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.undo();
+        }
+
+        if (fTextPanel.getTextLength() != oldLength) {
+            reportError("Undo did not restore old text.");
+        }
+    }
+
+    void applyCharacterStyle() {
+
+        StyleModifier stMod = charMods[randInt(charMods.length)];
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        }
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fTextPanel.modifyCharacterStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+
+    void applyParagraphStyle() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        StyleModifier stMod = paraMods[randInt(paraMods.length)];
+        fTextPanel.modifyParagraphStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void applyKeyRemap() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.KEYREMAP_CHANGED);
+        int op = randInt(5);
+        switch (op) {
+
+            case 0:
+                fTextPanel.setKeyRemap(KeyRemap.getIdentityRemap());
+                break;
+
+            case 1:
+                fTextPanel.setKeyRemap(KeyRemap.getArabicTransliteration());
+                break;
+
+            case 2:
+                fTextPanel.setKeyRemap(KeyRemap.getHebrewTransliteration());
+                break;
+
+            case 3:
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            case 4:
+                //fTextPanel.setKeyRemap(KeyRemap.getThaiKetmanee());
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            default:
+                reportError("Invalid operation!");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void resizeFrame(Frame frame) {
+
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+        int wd = randInt(50, 1000);
+        int ht = randInt(20, 800);
+
+        frame.setSize(wd, ht);
+        fListener.allowAll();
+    }
+
+    void selectText() {
+
+        int selStart = randInt(-10, fTextPanel.getTextLength());
+        int selLimit = randInt(0, fTextPanel.getTextLength() + 10);
+        _testSelection(SELECT, selStart, selLimit);
+    }
+
+    void undoRedo() {
+
+        final int opCount = randInt(-10, 15);
+
+        for (int i=opCount; i <= 0; i++) {
+            fTextPanel.redo();
+        }
+        for (int i=0; i < opCount; i++) {
+            fTextPanel.undo();
+        }
+    }
+    
+    void typeKeys() {
+
+        final int keyCount = randInt(1, 100);
+        TextPanel textPanel = (TextPanel) fTextPanel;
+        
+        KeyEventForwarder forwarder = new KeyEventForwarder(textPanel);
+        
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        
+        for (int i=0; i < keyCount; i++) {
+            char typedChar = TYPED_CHARS[randInt(TYPED_CHARS.length)];
+            KeyEvent event = new KeyEvent(textPanel,
+                                          KeyEvent.KEY_TYPED,
+                                          0,
+                                          0,
+                                          KeyEvent.VK_UNDEFINED,
+                                          typedChar);
+            if (typedChar == 8 || typedChar == 0x7f) {
+                fListener.allowEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            else {
+                fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            forwarder.handleKeyEvent(event);
+            //try {
+                fListener.assertNotExpectingEvents(i, false);
+            //}
+            //catch(Error e) {
+            //    logMessage("i="+i+"; typedChar="+Integer.toHexString(typedChar));
+            //    throw e;
+            //}
+        }
+        fListener.allowAll();
+    }
+}
diff --git a/src/com/ibm/richtext/test/TypingPerfTest.java b/src/com/ibm/richtext/test/TypingPerfTest.java
new file mode 100644
index 0000000..9c8a518
--- /dev/null
+++ b/src/com/ibm/richtext/test/TypingPerfTest.java
@@ -0,0 +1,223 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.GridLayout;
+import java.awt.Frame;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.TextDocument;
+
+public class TypingPerfTest implements ActionListener {
+    private TextFrame fTextFrame;
+    private KeyEventForwarder fKeyEventForwarder;
+    private PrintWriter fOut;
+
+    //private static final String fgAtStartCommand = "Insert at start";
+    //private static final String fgAtEndCommand = "Insert at end";
+    private static final String fgFwdDelete = "Forward delete";
+    private static final String fgBackspace = "Backspace";
+    private static final String fgAtCurrentPosCommand = "Insert at current position";
+    private static final String fgLotsOfTextCommand = "Insert a lot of text";
+
+    private static final String USAGE = "Usage: java com.ibm.richtext.test.TypingPerfTest [file] [-insertionText text]";
+    private char[] fInsText;
+
+    public static void main(String[] args) {
+
+        // not used OutputStream outStream = null;
+        PrintWriter writer = new PrintWriter(System.out);
+
+        MConstText text = Declaration.fgDeclaration;
+        char[] insText = "The quick brown fox jumps over the lazy dog. The end. ".toCharArray();
+        
+        int index = 0;
+        while (index < args.length) {
+            if (args[index].equals("-insertionText")) {
+                if (args.length == ++index) {
+                    throw new Error(USAGE);
+                }
+                insText = args[index++].toCharArray();
+            }
+            else {
+                // This will try MConstText first, then plain text.
+                TextDocument doc = EditDemo.getDocumentFromFile(new File(args[index++]));
+                if (doc == null) {
+                    throw new Error("Couldn't open file "+args[index-1]);
+                }
+                text = doc.getText();
+            }
+        }
+        
+        if (index != args.length) {
+            throw new Error(USAGE);
+        }
+        
+        new TypingPerfTest(writer, text, insText);
+    }
+
+    public TypingPerfTest(PrintWriter out, MConstText text, char[] insText) {
+
+        fInsText = insText;
+        fTextFrame = new TextFrame(text, "", null);
+        TextPanel textPanel = (TextPanel) fTextFrame.getTextPanel();
+        fKeyEventForwarder = new KeyEventForwarder(textPanel);
+        fOut = out;
+
+        DateFormat df = DateFormat.getDateTimeInstance();
+        out.println("Test date: " + df.format(new Date()));
+
+        fTextFrame.setSize(500, 700);
+        fTextFrame.show();
+
+        Frame f = new Frame("Typing Perf Test");
+        f.setLayout(new GridLayout(0, 1));
+        Button b;
+/*
+        b = new Button(fgAtStartCmd);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgAtEndCmd);
+        b.addActionListener(this);
+        f.add(b);
+*/
+        b = new Button(fgAtCurrentPosCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgLotsOfTextCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgFwdDelete);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgBackspace);
+        b.addActionListener(this);
+        f.add(b);
+
+        f.doLayout();
+        WindowAdapter closer = new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                fOut.close();
+                System.exit(0);
+            }
+        };
+        
+        f.addWindowListener(closer);
+        fTextFrame.addWindowListener(closer);
+        
+        f.setSize(200, 80);
+        f.show();
+    }
+
+    public void actionPerformed(ActionEvent evt) {
+        if (evt.getActionCommand().equals(fgAtCurrentPosCommand)) {
+            insertAtCurrentPos(1);
+        }
+        else if (evt.getActionCommand().equals(fgLotsOfTextCommand)) {
+            insertAtCurrentPos(8);
+        }
+        else if (evt.getActionCommand().equals(fgFwdDelete)) {
+            forwardDelete(1);
+        }
+        else if (evt.getActionCommand().equals(fgBackspace)) {
+            backspace(1);
+        }
+    }
+
+    private void insertAtCurrentPos(final int times) {
+
+        fTextFrame.toFront();
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, KeyEvent.KEY_TYPED, 0, 0, 0, fInsText[i]);
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void forwardDelete(final int times) {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_DELETE, '\u00FF');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void backspace(final int times) {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_BACK_SPACE, '\u0010');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
new file mode 100644
index 0000000..589b162
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.test.TestTextPanel;
+
+public final class FmwkTestTextPanel extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+    
+        new FmwkTestTextPanel().run(args);
+    }
+    
+    private TTP ttp;
+    
+    public FmwkTestTextPanel() {
+    
+        ttp = new TTP();
+    }
+    
+    public void test() {
+    
+        ttp.test();
+        // If TestTextPanel gets more tests, add them here
+    }
+
+    private final class TTP extends TestTextPanel {
+    
+        protected void reportError(String message) {
+        
+            errln(message);
+        }
+        
+        protected void logMessage(String message) {
+        
+            logln(message);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAll.java b/src/com/ibm/richtext/test/unit/TestAll.java
new file mode 100644
index 0000000..735ee53
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAll.java
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestAll extends TestGroup {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+    
+    public TestAll() {
+        super(new String[] {
+            "TestAttributeSet",
+            "TestAttributeMap",
+            "TestFormatter",
+            "TestMText",
+            "TestParagraphStyles",
+            "TestMTextStreaming",
+            "FmwkTestTextPanel",
+        },
+              "Richtext Unit Tests");
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeMap.java b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
new file mode 100644
index 0000000..ed33768
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
@@ -0,0 +1,415 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.util.Enumeration;
+
+// Java2 imports
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Map.Entry;
+
+
+public class TestAttributeMap extends TestFmwk  {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+
+    // There are JDK 1.1 versions of AttributeMap and AttributeSet.
+    // Some of the tests in this class require Java 2 API's.  I have
+    // tried to isolate these tests by conditionalizing them on
+    // this static variable.  If you are back-porting to 1.1, remove
+    // the Java 2 tests ONLY.
+    private static final boolean gJDK11 = false;
+
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeMap().run(args);
+    }
+
+    private AttributeSet maps;  // A Set of AttributeMaps
+    private AttributeSet sets;  // A Set of Sets
+
+    private static final class TestAttribute extends TextAttribute {
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 2092805803764400714L;
+
+        TestAttribute(String name) {
+            super(name);
+        }
+    }
+
+    private static final TestAttribute[] attributes = {
+        new TestAttribute("0"), new TestAttribute("1"), new TestAttribute("2")
+    };
+
+    private static final Object[] values = {
+        "Hello world", new Float(-42), new Object(), new AttributeMap(new TestAttribute("3"), "HH")
+    };
+
+    /**
+     * Returns lhs.equals(rhs) - but also checks for symmetry, and
+     * consistency with hashCode().
+     */
+    private boolean equalMaps(AttributeMap lhs, Object rhs) {
+
+        boolean equal = lhs.equals(rhs);
+        if (equal != (rhs.equals(lhs))) {
+            errln("AttributeMap.equals is not symetric");
+        }
+        if (equal) {
+            if (lhs.hashCode() != rhs.hashCode()) {
+                errln("AttributeMaps are equal but hashCodes differ");
+            }
+        }
+        return equal;
+    }
+
+    public TestAttributeMap() {
+
+        maps = AttributeSet.EMPTY_SET;
+        maps = maps.addElement(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB));
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER));
+
+        for (int i=0; i < attributes.length; i++) {
+            for (int j=0; j < values.length; j++) {
+                maps = maps.addElement(new AttributeMap(attributes[i], values[j]));
+            }
+        }
+
+        AttributeMap bigMap = new AttributeMap(new TestAttribute("4"), "value");
+        for (int i=0; i < Math.min(attributes.length, values.length); i++) {
+            bigMap = bigMap.addAttribute(attributes[i], values[values.length-i-1]);
+        }
+        maps = maps.addElement(bigMap);
+
+        sets = AttributeSet.EMPTY_SET;
+
+        sets = new AttributeSet(AttributeSet.EMPTY_SET);
+
+        for (int i=0; i < attributes.length; i++) {
+            AttributeSet newSet = new AttributeSet(attributes[i]);
+            sets = sets.addElement(newSet);
+        }
+
+        AttributeSet allAttrs = AttributeSet.EMPTY_SET;
+        for (int i=0; i < attributes.length; i++) {
+            allAttrs = allAttrs.addElement(attributes[i]);
+        }
+
+        sets = sets.addElement(allAttrs);
+    }
+
+    /**
+     * Run tests on AttributeMap.  If a test fails an exception will propogate out
+     * of this method.
+     */
+    public void test() {
+
+        easyTests();
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+
+            _testModifiers(testMap);
+            _testViews(testMap);
+
+            Enumeration unionIter = maps.elements();
+            while (unionIter.hasMoreElements()) {
+                _testUnionWith(testMap, (AttributeMap) unionIter.nextElement());
+            }
+
+            Enumeration setIter = sets.elements();
+            while (setIter.hasMoreElements()) {
+                AttributeSet testSet = (AttributeSet) setIter.nextElement();
+                _testIntersectWith(testMap, testSet);
+                _testRemoveAttributes(testMap, testSet);
+            }
+        }
+    }
+
+    /**
+     * Invoke modifiers on map.  All should throw
+     * UnsupportedOperationException, and leave map unmodified.
+     */
+    void _testModifiers(AttributeMap map) {
+
+        if (gJDK11) {
+            return;
+        }
+        
+        AttributeMap originalMap = new AttributeMap(map);
+
+        try {
+            map.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+            errln("Put should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            Object key = TextAttribute.WEIGHT;
+            Iterator iter = map.keySet().iterator();
+            if (iter.hasNext()) {
+                key = iter.next();
+            }
+            map.remove(key);
+            errln("Set should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.putAll(map);
+            errln("putAll should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.clear();
+            errln("clear should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        if (!originalMap.equals(map)) {
+            errln("Modifiers changed map.");
+        }
+    }
+
+    /**
+     * Ensure that map.addAttributes(addMap) is equivalent to calling
+     * map.add on all of addMap's entries.
+     */
+    void _testUnionWith(AttributeMap map, AttributeMap addMap) {
+
+        AttributeMap lhs = map.addAttributes(addMap);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = addMap.getKeySet().elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            Object value = addMap.get(attr);
+            rhs = rhs.addAttribute(attr, value);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.removeAttributes(remove) is equivalent to calling
+     * map.removeAttribute on remove's elements.
+     */
+    void _testRemoveAttributes(AttributeMap map, AttributeSet remove) {
+
+        AttributeMap lhs = map.removeAttributes(remove);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = remove.elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            rhs = rhs.removeAttribute(attr);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.intersectWith(intersect) is equivalent to
+     * map.removeAttributes(map.keySet() - intersect);
+     */
+    void _testIntersectWith(AttributeMap map, AttributeSet intersect) {
+
+        AttributeMap lhs = map.intersectWith(intersect);
+
+        AttributeSet keySet = map.getKeySet();
+        AttributeSet removeSet = keySet.subtract(intersect);
+        AttributeMap rhs = map.removeAttributes(removeSet);
+
+        if (!equalMaps(lhs, rhs)) {
+            map.intersectWith(intersect);
+            logln("intersect: " + intersect);
+            logln("keySet: " + keySet);
+            logln("removeSet: " + removeSet);
+            logln("map: " + map);
+            logln("lhs: " + lhs);
+            logln("rhs: " + rhs);
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that:
+     *    map, map.keySet(), and map.entrySet() are the same size;
+     *    map.containsKey() is true for every key in keySet();
+     *    map.containsValue() is true for every value in values;
+     *    every entry key is in keySet, every entry value is in map.values();
+     *    map.get() is consistent with entry's key, value;
+     *    sum of hashcodes of entries equals map.hashCode().
+     */
+    void _testViews(AttributeMap map) {
+
+        AttributeSet keySet = map.getKeySet();
+
+        Enumeration keyIter = keySet.elements();
+        while (keyIter.hasMoreElements()) {
+            if (!map.containsKey(keyIter.nextElement())) {
+                errln("keySet contains key not in map");
+            }
+        }
+
+        if (gJDK11) {
+            return;
+        }
+        
+        Collection vals = map.values();
+        Set entrySet = map.entrySet();
+
+        if (keySet.size() != map.size() || entrySet.size() != map.size()) {
+            errln("Set sizes are inconsistent with map size.");
+        }
+
+        int hashCode = 0;
+
+        Iterator valueIter = vals.iterator();
+        while (valueIter.hasNext()) {
+            if (!map.containsValue(valueIter.next())) {
+                errln("value set contains value not in map");
+            }
+        }
+
+        Iterator entryIter = entrySet.iterator();
+        while (entryIter.hasNext()) {
+
+            Entry entry = (Entry) entryIter.next();
+
+            Object key = entry.getKey();
+            if (!keySet.contains(key)) {
+                errln("Entry key is not in key set.");
+            }
+
+            Object value = map.get(entry.getKey());
+            if (!vals.contains(value)) {
+                errln("Entry value is not in value set.");
+            }
+
+            if (map.get(key) != value) {
+                errln("map.get did not return entry value.");
+            }
+
+            hashCode += entry.hashCode();
+        }
+
+        if (hashCode != map.hashCode()) {
+            errln("map hashcode is not sum of entry hashcodes.");
+        }
+    }
+
+    /**
+     * Look for correct behavior in obvious cases.
+     */
+    void easyTests() {
+
+        AttributeMap map = new AttributeMap();
+        if (!map.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+            errln("Default-constructed map is not equal to empty map.");
+        }
+
+        map = map.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        Object otherMap = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        if (!map.equals(otherMap)) {
+            errln("Maps are inconsistent after map.add");
+        }
+
+        otherMap = map.addAttributes(map);
+        if (!equalMaps(map,otherMap)) {
+            errln("Maps are inconsistent after addAttributes");
+        }
+
+        map = map.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong.  map="+map);
+        }
+
+        if (equalMaps(map,otherMap)) {
+            errln("Maps should not be equal");
+        }
+
+        Object posture = new Float(0);
+        map = map.addAttribute(TextAttribute.POSTURE, posture);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong");
+        }
+
+        if (!map.get(TextAttribute.POSTURE).equals(posture)) {
+            errln("Map element is wrong");
+        }
+
+        map = map.removeAttribute(TextAttribute.UNDERLINE);
+
+        if (map.size() != 1) {
+            errln("Map size is wrong");
+        }
+
+        if (map.get(TextAttribute.UNDERLINE) != null) {
+            errln("Map should not have element");
+        }
+
+        // map has POSTURE_REGULAR.  If we addAttributes a map with
+        // POSTURE_ITALIC the new map should have POSTURE_ITALIC
+
+        map = map.addAttributes(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE));
+        if (map.get(TextAttribute.POSTURE) != TextAttribute.POSTURE_OBLIQUE) {
+            errln("Map element is wrong");
+        }
+
+        _testModifiers(map);
+        _testViews(map);
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+            Object newValue = new Object();
+            AttributeMap newMap = testMap.addAttribute(attributes[0], newValue);
+            if (newMap.get(attributes[0]) != newValue) {
+                errln("Did not get expected value back.  map=" + map);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeSet.java b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
new file mode 100644
index 0000000..847daad
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
@@ -0,0 +1,89 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import java.util.Enumeration;
+
+public class TestAttributeSet extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeSet().run(args);
+    }
+
+    public void test() {
+
+        final Object elem1 = new Object();
+        final Object elem2 = new Float(4);
+        final Object elem3 = "String";
+        final Object elem4 = Boolean.FALSE;
+
+        AttributeSet set1 = new AttributeSet(new Object[] {elem1, elem2, elem3});
+        if (set1.size() != 3) {
+            errln("Size is wrong.");
+        }
+
+        if (set1.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        AttributeSet set2 = new AttributeSet(elem4);
+
+        if (set2.size() != 1) {
+            errln("Size is wrong.");
+        }
+
+        if (!set2.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (set2.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        Enumeration iter = set2.elements();
+        if (!iter.nextElement().equals(elem4)) {
+            errln("Invalid object in iterator.");
+        }
+
+        AttributeSet union = set2.unionWith(set1);
+        if (!set1.unionWith(set2).equals(union)) {
+            errln("unionWith is not commutative.");
+        }
+
+        if (!union.contains(elem1) || !union.contains(elem4)) {
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.addElement(elem4).equals(union)) {
+            errln("addElement is wrong.");
+        }
+
+        if (!union.intersectWith(set1).equals(set1)) {
+            errln("intersectWith is wrong.");
+        }
+
+        if (!union.subtract(set1).equals(set2)) {
+            errln("subtract is wrong.");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestFormatter.java b/src/com/ibm/richtext/test/unit/TestFormatter.java
new file mode 100644
index 0000000..ee419a1
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestFormatter.java
@@ -0,0 +1,245 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.textformat.MFormatter;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+import java.util.Hashtable;
+
+public final class TestFormatter extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestFormatter().run(args);
+    }
+
+    private static final Point ORIGIN = new Point(0, 0);
+
+    private static final AttributeMap DEFAULTS;
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    // arg to testLineExceptions
+    private static final int UNKNOWN = -1;
+
+    private Graphics fGraphics;
+
+    public TestFormatter() {
+
+        fGraphics = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR).getGraphics();
+        
+        //JDK 1.1:
+        //Frame f = new Frame();
+        //f.show();
+        //fGraphics = f.getGraphics();
+    }
+
+    private String fiveLines = "a\nb\nc\nd\ne";
+    private String twelveLines = fiveLines + "\n" + fiveLines + "\nf\n";
+    AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+    public void test() {
+
+        MConstText text = new StyledText(fiveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 100, true), 5);
+        _testLineAccess(makeFormatter(text, 100, true), 5);
+
+        text = new StyledText(twelveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 3, false), 12);
+        _testLineAccess(makeFormatter(text, 100, true), 12);
+
+        _testWithModification();
+    }
+
+    private void _testWithModification() {
+
+        MText text = new StyledText(fiveLines, PLAIN);
+        MFormatter formatter = makeFormatter(text, 100, true);
+        Rectangle viewRect = new Rectangle(0, 0, 100, Integer.MAX_VALUE);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("\n", PLAIN));
+        formatter.updateFormat(text.length()-1, 1, viewRect, ORIGIN);
+
+        _testLineAccess(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("ad", PLAIN));
+        formatter.updateFormat(text.length()-2, 2, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.remove(0, 1);
+        formatter.updateFormat(0, 0, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+    }
+
+
+    private MFormatter makeFormatter(MConstText text,
+                                     int lineBound,
+                                     boolean wrap) {
+
+        return MFormatter.createFormatter(text, 
+                                          DEFAULTS,
+                                          lineBound,
+                                          wrap,
+                                          fGraphics);
+    }
+
+    private void _testLineExceptions(MFormatter formatter,
+                                    int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        boolean caught = false;
+
+        try {
+            formatter.lineRangeLow(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineRangeLimit(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineGraphicStart(numLines+1);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+    }
+
+    private void _testLineAccess(MFormatter formatter,
+                                 int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        if (formatter.lineGraphicStart(0) != 0) {
+            errln("Line 0 doesn't start at height 0");
+        }
+        if (formatter.lineRangeLow(0) != 0) {
+            errln("Line 0 doesn't start at character 0");
+        }
+
+        int lastLimit = formatter.lineRangeLimit(0);
+        final int lineBound = formatter.lineBound();
+        int[] hitX = new int[] { -1, 1, lineBound + 2 };
+
+        TextOffset offset = new TextOffset();
+
+        for (int i=1; i < numLines; i++) {
+
+            int height = formatter.lineGraphicStart(i);
+            if (lastLimit != formatter.lineRangeLow(i)) {
+                errln("lastLine limit is not current line start");
+            }
+            int limit = formatter.lineRangeLimit(i);
+
+            if (limit < lastLimit || (limit == lastLimit && i != numLines-1)) {
+                errln("line has negative or 0 length");
+            }
+
+            int nextHeight = formatter.lineGraphicStart(i+1);
+            if (nextHeight <= height) {
+                errln("0-height line");
+            }
+            int incAmount = Math.max((nextHeight-height)/4, 1);
+            for (int hitY = height; hitY < nextHeight; hitY += incAmount) {
+
+                if (formatter.lineAtHeight(hitY) != i) {
+                    errln("lineAtHeight is wrong");
+                }
+
+                for (int j=0; j < hitX.length; j++) {
+                    offset = formatter.pointToTextOffset(offset,
+                                        hitX[j], hitY, ORIGIN, null, false);
+                    if (offset.fOffset < lastLimit || offset.fOffset > limit) {
+                        errln("Inconsistent offset from pointToTextOffset");
+                    }
+                    //if (formatter.lineContaining(offset) != i) {
+                    //    int debug = formatter.lineContaining(offset);
+                    //    errln("lineContaining is incorrect");
+                    //}
+                }
+            }
+
+            lastLimit = limit;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestMText.java b/src/com/ibm/richtext/test/unit/TestMText.java
new file mode 100644
index 0000000..b06fe26
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMText.java
@@ -0,0 +1,718 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import java.text.CharacterIterator;
+import java.util.Random;
+
+import java.io.*;
+
+public class TestMText extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestMText().run(args);
+    }
+    
+    private static final int TEST_ITERATIONS = 5000;
+    private static final int STYLE_TEST_ITERATIONS = 5000;
+    private static final long RAND_SEED = 598436;
+
+    private static final int NOT_IN_MONKEY_TEST = -5000;
+    private int testIteration = NOT_IN_MONKEY_TEST;
+    private int theCase = NOT_IN_MONKEY_TEST;
+    
+    private static StyleModifier createMinusModifier(final Object attr) {
+        return new StyleModifier() {
+            public AttributeMap modifyStyle(AttributeMap style) {
+                return style.removeAttribute(attr);
+            }
+        };
+    }
+
+    public void test() {
+    
+        simpleTest();
+        styleTest();
+        monkeyTest(true);
+    }
+    
+    public void simpleTest() {
+
+        AttributeMap boldStyle = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicStyle = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+
+        MConstText allBold = new StyledText("bbbbb", boldStyle);
+        MConstText allItalic = new StyledText("iii", italicStyle);
+        MConstText plain = new StyledText("pppppp", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        {
+            MText buf = new StyledText();
+            int ts = buf.getTimeStamp();
+            buf.append(allBold);
+            buf.append(allItalic);
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // should be bbbbbiii now
+
+            if (buf.length() != allBold.length() + allItalic.length()) {
+                errln("Length is wrong.");
+            }
+
+            for (int i=0; i < buf.length(); i++) {
+
+                char rightChar;
+                AttributeMap rightStyle;
+
+                if (i < allBold.length()) {
+                    rightChar = allBold.at(0);
+                    rightStyle = boldStyle;
+                }
+                else {
+                    rightChar = allItalic.at(0);
+                    rightStyle = italicStyle;
+                }
+
+                if (buf.at(i) != rightChar) {
+                    errln("Character is wrong.");
+                }
+                if (!buf.characterStyleAt(i).equals(rightStyle)) {
+                    errln("Style is wrong.");
+                }
+            }
+
+            int pos = 0;
+
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("First style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != allBold.length()) {
+                errln("Run length is wrong.");
+            }
+
+            pos = allBold.length();
+
+            if (!buf.characterStyleAt(pos).equals(italicStyle)) {
+                errln("Second style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run length is wrong.");
+            }
+
+            {
+                buf.resetDamagedRange();
+                int oldLength = buf.length();
+                buf.replace(buf.length(), buf.length(), allBold, 0, allBold.length());
+                // bbbbbiiibbbbb
+
+                if (buf.damagedRangeStart() != oldLength) {
+                    errln("Damaged range start is incorrect");
+                }
+                if (buf.damagedRangeLimit() != buf.length()) {
+                    errln("Damaged range limit is incorrect");
+                }
+            }
+
+            int start = allBold.length();
+            int limit = start + allItalic.length();
+            buf.remove(start, limit);
+            // bbbbbbbbbb
+
+            if (buf.length() != 2 * allBold.length()) {
+                errln("Text should be twice the length of bold text.");
+            }
+
+            pos = buf.length() / 2;
+            if (buf.characterStyleStart(pos) != 0 ||
+                            buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run range is wrong.");
+            }
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("Run style is wrong.");
+            }
+
+            ts = buf.getTimeStamp();
+            CharacterIterator cIter = buf.createCharacterIterator();
+            for (char ch = cIter.first(); ch != CharacterIterator.DONE; ch = cIter.next()) {
+                if (ch != allBold.at(0)) {
+                    errln("Character is wrong.");
+                }
+            }
+
+            if (ts != buf.getTimeStamp()) {
+                errln("Time stamp should not have changed");
+            }
+
+            buf.replace(0, 1, plain, 0, plain.length());
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // ppppppbbbbbbbbb
+            buf.replace(plain.length(), buf.length(), allItalic, 0, allItalic.length());
+            // ppppppiii
+
+            if (buf.length() != allItalic.length()+plain.length()) {
+                errln("Length is wrong.");
+            }
+
+            pos = 0;
+            if (buf.characterStyleLimit(pos) != plain.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            pos = plain.length();
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            buf.replace(plain.length(), plain.length(), allBold, 0, allBold.length());
+            // ppppppbbbbbiii
+
+            AttributeMap st = buf.characterStyleAt(1);
+            if (!st.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(1) != 0 || buf.characterStyleLimit(1) != plain.length()) {
+                errln("Style start is wrong.");
+            }
+
+            st = buf.characterStyleAt(buf.length() - 1);
+            if (!st.equals(italicStyle)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(buf.length() - 1) != plain.length()+allBold.length()) {
+                errln("Style start is wrong.");
+            }
+
+            if (buf.characterStyleLimit(buf.length() - 1) != buf.length()) {
+                errln("Style limit is wrong.");
+            }
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range length is negative.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void styleTest() {
+
+        MText text = new StyledText("0123456789", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        AttributeMap[] styles = new AttributeMap[text.length()];
+        for (int i=0; i < styles.length; i++) {
+            styles[i] = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        }
+        AttributeMap[] oldStyles = new AttributeMap[styles.length];
+        System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+        AttributeMap bigStyle = new AttributeMap(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON).
+                                                    addAttribute(TextAttribute.SIZE, new Float(23.0f));
+
+        StyleModifier[] modifiers = {
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD)),
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.WEIGHT, new Float(1.0f))),
+            createMinusModifier(TextAttribute.WEIGHT),
+
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.POSTURE, new Float(0.0f))),
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE)),
+            createMinusModifier(TextAttribute.POSTURE),
+
+            StyleModifier.createAddModifier(bigStyle),
+            StyleModifier.createReplaceModifier(bigStyle),
+            createMinusModifier(bigStyle.getKeySet())
+        };
+
+        Random rand = new Random(RAND_SEED);
+        final int stopAt = 4;
+
+        for (int testItr=0; testItr < STYLE_TEST_ITERATIONS + 1; testItr++) {
+
+            System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+            int startingAt = Integer.MAX_VALUE;
+            int endingAt = Integer.MIN_VALUE;
+            int oldTs = text.getTimeStamp();
+
+            // hack way to do an invariant check before starting...
+            if (testItr != 0) {
+                // modify styles
+                text.resetDamagedRange();
+                startingAt = randInt(rand, styles.length+1);
+                endingAt = randInt(rand, startingAt, styles.length+1);
+                StyleModifier modifier = modifiers[randInt(rand, modifiers.length)];
+
+                if (testItr == stopAt) {
+                    testItr = stopAt;
+                }
+                text.modifyCharacterStyles(startingAt, endingAt, modifier);
+
+                for (int j=startingAt; j < endingAt; j++) {
+                    styles[j] = modifier.modifyStyle(styles[j]);
+                }
+            }
+
+            // check invariants
+            AttributeMap oldStyle = null;
+            int textLength = text.length();
+            for (int runStart = 0; runStart < textLength;) {
+
+                AttributeMap currentStyle = text.characterStyleAt(runStart);
+                int runLimit = text.characterStyleLimit(runStart);
+                if (runStart >= runLimit) {
+                    errln("Run length is not positive");
+                }
+                if (currentStyle.equals(oldStyle)) {
+                    errln("Styles didn't merge");
+                }
+
+                for (int pos=runStart; pos < runLimit; pos++) {
+                    AttributeMap charStyleAtPos = text.characterStyleAt(pos);
+                    if (currentStyle != charStyleAtPos) {
+                        errln("Iterator style is not equal to text style at " + pos + ".");
+                    }
+                    AttributeMap expected = styles[pos];
+                    if (!currentStyle.equals(expected)) {
+                        errln("Iterator style doesn't match expected style at " + pos + ".");
+                    }
+                    if (!(text.characterStyleStart(pos) == runStart) ||
+                            !(text.characterStyleLimit(pos) == runLimit)) {
+                        errln("style run start / limit is not consistent");
+                    }
+                }
+                runStart = runLimit;
+            }
+            if (textLength > 0) {
+                if (text.characterStyleAt(textLength) !=
+                            text.characterStyleAt(textLength-1)) {
+                    errln("Character styles at end aren't the same");
+                }
+            }
+
+            // check damaged range:
+            int damageStart = Integer.MAX_VALUE;
+            int damageLimit = Integer.MIN_VALUE;
+            for (int i=0; i < textLength; i++) {
+                if (!styles[i].equals(oldStyles[i])) {
+                    damageStart = Math.min(i, damageStart);
+                    damageLimit = Math.max(i+1, damageLimit);
+                }
+            }
+            if (damageStart != text.damagedRangeStart() ||
+                            damageLimit != text.damagedRangeLimit()) {
+                logln("Test iteration: " + testItr);
+                logln("startingAt: " + startingAt + ";  endingAt: " + endingAt);
+                logln("damageStart: " + damageStart + ";  damageLimit: " + damageLimit);
+                logln("text.rangeStart: " + text.damagedRangeStart() +
+                                   "text.rangeLimit: " + text.damagedRangeLimit());
+                errln("Damage range start or limit is not expected value");
+            }
+
+            if ((damageLimit == Integer.MIN_VALUE) != (oldTs == text.getTimeStamp())) {
+
+                errln("timeStamp is incorrect");
+            }
+        }
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        if (level == ERR && testIteration != NOT_IN_MONKEY_TEST) {
+            message = "testIteration="+testIteration+"; testCase="+theCase+message;
+        }
+        super.msg(message, level, incCount, newln);
+    }
+    
+    /**
+    * Perform a random series of operations on an MText and
+    * check the result of each operation against a set of invariants.
+    */
+    public void monkeyTest(boolean streaming) {
+
+        /*
+            You can add any operation to the switch statement provided it
+            preserves the following invariants:
+            - The String plainText contains the same text as the StyledStringBuffer.
+              Obviously, for the test to be meaningful plainText must be computed
+              independently of the buffer (ie don't write:  plainText = buf.getStyledString().toString()).
+            - Every 'b' is bold, every 'i' is italic, every 'p' is plain, and
+              no other characters appear in the text.
+        */
+
+        AttributeMap boldAttrs = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicAttrs = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        AttributeMap emptyAttrs = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        final String bold1Str_getString = "b";
+        MConstText bold1Str = new StyledText(bold1Str_getString, boldAttrs);
+
+        final String italic1Str_getString = "i";
+        MConstText italic1Str = new StyledText(italic1Str_getString, italicAttrs);
+
+        final String plain1Str_getString = "p";
+        MConstText plain1Str = new StyledText(plain1Str_getString, emptyAttrs);
+
+        StyledText temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(italic1Str);
+        final String boldItalicStr_getString = bold1Str_getString.concat(italic1Str_getString);
+        MConstText boldItalicStr = temp;
+
+        temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        final String bold3Str_getString = "bbb";
+        MConstText bold3Str = temp;
+
+        MText buf = new StyledText();
+        String plainText = new String();
+        //int testIteration=0; - now instance variables so errln can report it
+        //int theCase=0;
+
+        final int NUM_CASES = 14;
+        boolean[] casesExecuted = new boolean[NUM_CASES];
+        final int stopAt = -1;
+        Random rand = new Random(RAND_SEED);
+
+        final String ALWAYS_DIFFERENT = "\uFEFF";
+
+            for (testIteration=0; testIteration < TEST_ITERATIONS; testIteration++) {
+
+                theCase = randInt(rand, NUM_CASES);
+
+                casesExecuted[theCase] = true;
+
+                if (testIteration == stopAt) {
+                    testIteration = stopAt;  // Convenient place to put breakpoint
+                }
+
+                int timeStamp = buf.getTimeStamp();
+                String oldPlainText = plainText;
+                if (oldPlainText == null) {
+                    errln("oldPlainText is null!");
+                }
+
+                switch (theCase) {
+
+                    case 0:
+                        // create new string; replace chars at start with different style
+                        buf = new StyledText();
+                        buf.append(bold3Str);
+                        buf.replace(0, 1, italic1Str, 0, italic1Str.length());
+                        buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+
+                        plainText = bold3Str_getString.substring(1, bold3Str.length());
+                        plainText = italic1Str_getString.concat(plainText);
+                        plainText = italic1Str_getString.concat(plainText);
+                        oldPlainText = null;
+                        break;
+
+                    case 1:
+                        // delete the last character from the string
+                        if (buf.length() == 0) {
+                            buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+                            plainText = italic1Str_getString;
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        buf.remove(buf.length()-1, buf.length());
+                        plainText = plainText.substring(0, plainText.length()-1);
+                        break;
+
+                    case 2:
+                        // replace some of the buffer with boldItalicStr
+                        int rStart = randInt(rand, buf.length()+1);
+                        int rStop = randInt(rand, rStart, buf.length()+1);
+                        buf.replace(rStart, rStop, boldItalicStr);
+                        {
+                            String newString = (rStart>0)? plainText.substring(0, rStart) : new String();
+                            newString = newString.concat(boldItalicStr_getString);
+                            if (rStop < plainText.length())
+                                newString = newString.concat(plainText.substring(rStop, plainText.length()));
+                            oldPlainText = ALWAYS_DIFFERENT;
+                            plainText = newString;
+                        }
+                        break;
+
+                    case 3:
+                        // repeatedly insert strings into the center of the buffer
+                        {
+                            int insPos = buf.length() / 2;
+                            String prefix = plainText.substring(0, insPos);
+                            String suffix = plainText.substring(insPos, plainText.length());
+                            String middle = new String();
+                            for (int ii=0; ii<4; ii++) {
+                                MConstText which = (ii%2==0)? boldItalicStr : bold3Str;
+                                String whichString = (ii%2==0)? boldItalicStr_getString : bold3Str_getString;
+                                int tempPos = insPos+middle.length();
+                                buf.insert(tempPos, which);
+                                middle = middle.concat(whichString);
+                            }
+                            plainText = prefix.concat(middle).concat(suffix);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 4:
+                    // insert bold1Str at end
+                        buf.append(bold1Str);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 5:
+                    // delete a character from the string
+                        if (buf.length() > 0) {
+                            int delPos = randInt(rand, buf.length()-1);
+                            buf.remove(delPos, delPos+1);
+                            plainText = plainText.substring(0, delPos).concat(plainText.substring(delPos+1));
+                        }
+                        else {
+                            buf.replace(0, 0, plain1Str, 0, plain1Str.length());
+                            plainText = plain1Str_getString;
+                        }
+                        break;
+
+                    case 6:
+                    // replace the contents of the buffer (except the first character) with itself
+                        {
+                            int start = buf.length() > 1? 1 : 0;
+                            buf.replace(start, buf.length(), buf);
+                            plainText = plainText.substring(0, start).concat(plainText);
+                            if (buf.length() > 0) {
+                                oldPlainText = ALWAYS_DIFFERENT;
+                            }
+                        }
+                        break;
+
+                    case 7:
+                    // append the contents of the buffer to itself
+                        {
+                            MConstText content = buf;
+                            buf.insert(buf.length(), content);
+                            plainText = plainText.concat(plainText);
+                        }
+                        break;
+
+                    case 8:
+                    // replace the buffer with boldItalicStr+bold3Str
+                        {
+                            MText replacement = new StyledText();
+                            replacement.append(boldItalicStr);
+                            replacement.append(bold3Str);
+                            buf.replace(0, buf.length(), replacement, 0, replacement.length());
+                            plainText = boldItalicStr_getString.concat(bold3Str_getString);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 9:
+                    // insert bold1Str at end - same as 4 but uses different API
+                        buf.replace(buf.length(),
+                                    buf.length(),
+                                    bold1Str_getString.toCharArray(),
+                                    0,
+                                    bold1Str_getString.length(),
+                                    boldAttrs);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 10:
+                    // remove all
+                        buf.remove();
+                        plainText = "";
+                        oldPlainText = ALWAYS_DIFFERENT;
+                        break;
+
+                    case 11:
+                    // remove all - different way
+                        buf.remove(0, buf.length());
+                        plainText = "";
+                        break;
+
+                    case 12:
+                        // insert 'i' at 3rd character (or last, if fewer than 3 chars)
+                        {
+                            int insPos = Math.min(buf.length(), 3);
+                            buf.replace(insPos, insPos, 'i', italicAttrs);
+                            plainText = (plainText.substring(0, insPos)).
+                                        concat(italic1Str_getString).
+                                        concat(plainText.substring(insPos));
+                        }
+                        break;
+
+                    case 13:
+                        if (streaming) {
+                            Throwable error = null;
+                            try {
+                                ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+                                ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+                                objOut.writeObject(buf);
+
+                                ByteArrayInputStream bytesIn =
+                                                new ByteArrayInputStream(bytesOut.toByteArray());
+                                ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+                                buf = (MText) objIn.readObject();
+                                oldPlainText = null;
+                            }
+                            catch(IOException e) {
+                                error = e;
+                            }
+                            catch(ClassNotFoundException e) {
+                                error = e;
+                            }
+                            if (error != null) {
+                                error.printStackTrace();
+                                errln("Streaming problem: " + error);
+                            }
+                        }
+                        break;
+
+                    default:
+                        errln("Invalid case.");
+                }
+
+                // Check time stamp if oldPlainText != null.
+                // Time stamp should be different iff
+                // oldPlainText == plainText
+                if (oldPlainText != null) {
+                    if ((timeStamp==buf.getTimeStamp()) !=
+                                    oldPlainText.equals(plainText)) {
+                        logln("plainText hashCode: " + plainText.hashCode());
+                        logln("oldPlainText hashCode: " + oldPlainText.hashCode());
+                        errln("Time stamp is incorrect");
+                    }
+                }
+
+                // now check invariants:
+                if (plainText.length() != buf.length()) {
+                    errln("Lengths don't match");
+                }
+
+                for (int j=0; j < buf.length(); j++) {
+                    if (buf.at(j) != plainText.charAt(j)) {
+                        errln("Characters don't match.");
+                    }
+                }
+
+                int start;
+                for (start = 0; start < buf.length();) {
+
+                    if (start != buf.characterStyleStart(start)) {
+                        errln("style start is wrong");
+                    }
+                    int limit = buf.characterStyleLimit(start);
+                    if (start >= limit) {
+                        errln("start >= limit");
+                    }
+                    char current = plainText.charAt(start);
+
+                    AttributeMap comp = null;
+                    if (current == 'p') {
+                        comp = emptyAttrs;
+                    }
+                    else if (current == 'b') {
+                        comp = boldAttrs;
+                    }
+                    else if (current == 'i') {
+                        comp = italicAttrs;
+                    }
+                    else {
+                        errln("An invalid character snuck in!");
+                    }
+
+                    AttributeMap startStyle = buf.characterStyleAt(start);
+                    if (!comp.equals(startStyle)) {
+                        errln("Style is not expected style.");
+                    }
+
+                    for (int j = start; j < limit; j++) {
+                        if (plainText.charAt(j) != current) {
+                            errln("Character doesn't match style.");
+                        }
+                        if (buf.characterStyleAt(j) != startStyle) {
+                            errln("Incorrect style in run");
+                        }
+                    }
+
+                    if (limit < buf.length()) {
+                        if (plainText.charAt(limit) == current) {
+                            errln("Style run ends too soon.");
+                        }
+                    }
+                    start = limit;
+                }
+                if (start != buf.length()) {
+                    errln("Last limit is not buffer length.");
+                }
+
+                // won't try to compute and check damaged range;  however,
+                // if nonempty it should always be within text
+                int damageStart = buf.damagedRangeStart();
+                int damageLimit = buf.damagedRangeLimit();
+                if (damageStart == Integer.MAX_VALUE) {
+                    if (damageLimit != Integer.MIN_VALUE) {
+                        errln("Invalid empty interval");
+                    }
+                }
+                else {
+                    if (damageStart > damageLimit) {
+                        errln("Damage range inverted");
+                    }
+                    if (damageStart < 0 || damageLimit > buf.length()) {
+                        errln("Damage range endpoint out of bounds");
+                    }
+                }
+            }
+
+        testIteration = NOT_IN_MONKEY_TEST;
+        
+        boolean allCasesExecuted = true;
+        for (int index=0; index < NUM_CASES; index++) {
+            allCasesExecuted &= casesExecuted[index];
+            if (casesExecuted[index] == false) {
+                logln("Case " + index + " not executed.");
+            }
+        }
+        //if (allCasesExecuted) {
+        //    logln("All cases executed.");
+        //}
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/TestMTextStreaming.java b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
new file mode 100644
index 0000000..1057739
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
@@ -0,0 +1,160 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.io.*;
+import java.awt.Color;
+
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public class TestMTextStreaming extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestMTextStreaming().run(args);
+    }
+
+    public TestMTextStreaming() {
+    }
+
+    public void test() {
+
+        simpleTest();
+        allAttributesTest();
+    }
+
+    private void simpleTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        streamAndCompare(text);
+    }
+
+    private static class TestModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+
+        TestModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+    }
+
+    private void allAttributesTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        int length = text.length();
+
+        final boolean CHARACTER = true;
+        final boolean PARAGRAPH = false;
+
+        addStyle(text, 0, length/2, TextAttribute.FAMILY, "Times", CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.SIZE, new Float(13.7f), CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.FOREGROUND, Color.blue, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.BACKGROUND, Color.red, CHARACTER);
+        addStyle(text, 0, length-1, TextAttribute.STRIKETHROUGH, Boolean.TRUE, CHARACTER);
+
+        addStyle(text, 0, length, TextAttribute.EXTRA_LINE_SPACING, new Float(4), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.FIRST_LINE_INDENT, new Float(6), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.MIN_LINE_SPACING, new Float(7), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_TRAILING, PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LEADING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TRAILING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TAB_RULER, new StandardTabRuler(), PARAGRAPH);
+
+        streamAndCompare(text);
+    }
+
+    private static void addStyle(MText text,
+                                 int start,
+                                 int limit,
+                                 Object key,
+                                 Object value,
+                                 boolean character) {
+
+        StyleModifier modifier = new TestModifier(key, value);
+
+        if (character) {
+            text.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            text.modifyParagraphStyles(start, limit, modifier);
+        }
+    }
+
+    public void streamAndCompare(MText text) {
+
+        Throwable error = null;
+
+        try {
+            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+            objOut.writeObject(text);
+
+            ByteArrayInputStream bytesIn =
+                            new ByteArrayInputStream(bytesOut.toByteArray());
+            ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+            MText streamedText = (MText) objIn.readObject();
+            if (!isEqual(text, streamedText)) {
+                isEqual(text, streamedText);
+                errln("Streamed text is not equal");
+            }
+        }
+/*        catch(OptionalDataException e) {
+            error = e;
+        }
+        catch(StreamCorruptedException e) {
+            error = e;
+        }*/
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+
+        if (error != null) {
+            error.printStackTrace();
+            errln("Serialization failed.");
+        }
+    }
+
+    public static boolean isEqual(MText lhs, MText rhs) {
+
+        return lhs.equals(rhs);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestParagraphStyles.java b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
new file mode 100644
index 0000000..3dbe19c
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
@@ -0,0 +1,337 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.styledtext.StyleModifier;
+import java.util.Random;
+
+public final class TestParagraphStyles extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestParagraphStyles().run(args);
+    }
+
+    private static final int RAND_SEED = 1234;
+    private static final int NUM_TESTS = 2500;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+    private static final Object KEY = "KEY";
+    private static final AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private static final AttributeMap A_STYLE = new AttributeMap(KEY, new Character('a'));
+    private static final StyleModifier A_MOD =
+                            StyleModifier.createReplaceModifier(A_STYLE);
+    private static final AttributeMap B_STYLE = new AttributeMap(KEY, new Character('b'));
+    private static final StyleModifier B_MOD =
+                            StyleModifier.createReplaceModifier(B_STYLE);
+    private static final AttributeMap C_STYLE = new AttributeMap(KEY, new Character('c'));
+    private static final StyleModifier C_MOD =
+                            StyleModifier.createReplaceModifier(C_STYLE);
+    private static final AttributeMap D_STYLE = new AttributeMap(KEY, new Character('d'));
+    private static final StyleModifier D_MOD =
+                            StyleModifier.createReplaceModifier(D_STYLE);
+    private static final AttributeMap E_STYLE = new AttributeMap(KEY, new Character('e'));
+    private static final StyleModifier E_MOD =
+                            StyleModifier.createReplaceModifier(E_STYLE);
+
+    public void test() {
+
+        easyTests();
+        randomTest();
+    }
+
+    private void easyTests() {
+
+        MText text = new StyledText("a\nb\nc\nd\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        verifyParagraphCount(text);
+
+        MText src = new StyledText("XXX\nYYY", PLAIN);
+        src.modifyParagraphStyles(0, src.length(), B_MOD);
+        verifyParagraphCount(src);
+
+        MText temp = text.extractWritable(0, text.length());
+        temp.append(src);
+        verifyParagraphCount(temp);
+        for (int i=0; i < text.length(); i++) {
+            if (!temp.paragraphStyleAt(i).equals(text.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+        for (int i=0; i < src.length(); i++) {
+            if (!temp.paragraphStyleAt(i+text.length()).equals(src.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+
+        temp = text.extractWritable(0, text.length());
+        temp.replace(0, 1, src, 0, src.length());
+        verifyParagraphCount(temp);
+        if (temp.paragraphLimit(0) != 4) {
+            errln("Paragraph limit is wrong");
+        }
+        if (!temp.paragraphStyleAt(0).equals(B_STYLE)) {
+            errln("First style is wrong");
+        }
+        if (!temp.paragraphStyleAt(4).equals(A_STYLE)) {
+            errln("Style after insert is wrong");
+        }
+
+        // test append
+        MConstText newSrc = src.extract(4, 7);
+        MText initC = new StyledText("cccccc", PLAIN);
+        initC.modifyParagraphStyles(0, initC.length(), C_MOD);
+        initC.append(newSrc);
+        // now initC should be one paragraph with style B
+        if (initC.paragraphLimit(0) != initC.length()) {
+            errln("Should only be one paragraph");
+        }
+        if (initC.paragraphStyleAt(0) != initC.paragraphStyleAt(initC.length())) {
+            errln("Two different paragraph styles");
+        }
+        if (!initC.paragraphStyleAt(initC.length()/2).equals(B_STYLE)) {
+            errln("Incorrect paragraph style");
+        }
+        
+        text = new StyledText("aaa\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        text.modifyParagraphStyles(text.length(), text.length(), B_MOD);
+        if (text.paragraphStyleAt(text.length()) != B_STYLE) {
+            errln("0-length paragraph at end has incorrect style");
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    private void randomTest() {
+
+        MText noParagraph = new StyledText("zzzz", PLAIN);
+        noParagraph.modifyParagraphStyles(0, noParagraph.length(), A_MOD);
+        MText twoParagraphs = new StyledText("aaa\nbbb", PLAIN);
+        twoParagraphs.modifyParagraphStyles(0, twoParagraphs.paragraphLimit(0), B_MOD);
+        MText threeParagraphs = new StyledText("cc\ndd\nee", PLAIN);
+        threeParagraphs.modifyParagraphStyles(0, 3, C_MOD);
+        threeParagraphs.modifyParagraphStyles(3, 6, D_MOD);
+        threeParagraphs.modifyParagraphStyles(6, 8, E_MOD);
+        MText trailingP1 = new StyledText("hhhh\n", PLAIN);
+        trailingP1.modifyParagraphStyles(0, trailingP1.paragraphLimit(0), C_MOD);
+        MText trailingP2 = new StyledText("iii\n", PLAIN);
+        trailingP2.modifyParagraphStyles(0, 0, D_MOD);
+        trailingP2.modifyParagraphStyles(trailingP2.length(), trailingP2.length(), B_MOD);
+
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()-1).equals(D_STYLE)) {
+            errln("Style incorrect in trailingP2");
+        }
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()).equals(B_STYLE)) {
+            errln("Ending style incorrect in trailingP2");
+        }
+
+        MConstText[] tests = { noParagraph, twoParagraphs,
+                                    threeParagraphs, trailingP1, trailingP2 };
+
+        Random random = new Random(RAND_SEED);
+
+        int stopAt = 465;
+        int i = 0;
+        try {
+            for (i=0; i < NUM_TESTS; i++) {
+
+                int srcIndex = randInt(random, tests.length);
+                int targetIndex = randInt(random, tests.length);
+                MText target = new StyledText(tests[targetIndex]);
+                MConstText src = tests[srcIndex];
+
+                int srcStart = randInt(random, src.length());
+                int srcLimit = randInt(random, srcStart, src.length());
+                int start = randInt(random, target.length());
+                int limit = randInt(random, start, target.length());
+
+                if (i == stopAt) {
+                    stopAt = i;
+                }
+
+                insertAndCheck(src, srcStart, srcLimit, target, start, limit);
+            }
+        }
+        finally {
+            if (i < NUM_TESTS) {
+                logln("iteration=" + i);
+            }
+        }
+    }
+
+    private void insertAndCheck(MConstText src, int srcStart, int srcLimit,
+                                MText target, int start, int limit) {
+
+        // p-style after insertion
+        AttributeMap after;
+        if (limit == target.length() && srcLimit > srcStart) {
+            after = src.paragraphStyleAt(srcLimit);
+        }
+        else {
+            after = target.paragraphStyleAt(limit);
+        }
+
+        AttributeMap before;
+        boolean srcHasPBreak = false;
+        for (int i=srcStart; i < srcLimit; i++) {
+            if (isParagraphBreak(src.at(i))) {
+                srcHasPBreak = true;
+                break;
+            }
+        }
+
+        if (start > 0 && isParagraphBreak(target.at(start-1))) {
+            before = target.paragraphStyleAt(start-1);
+        }
+        else {
+            before = srcHasPBreak? src.paragraphStyleAt(srcStart) : after;
+        }
+        boolean stylePropogated = !before.equals(target.paragraphStyleAt(Math.max(0, start-1)));
+
+
+        target.resetDamagedRange();
+        target.replace(start, limit, src, srcStart, srcLimit);
+        final int damageLimit = (start==limit && srcStart==srcLimit)?
+                        Integer.MIN_VALUE : start + (srcLimit-srcStart);
+
+        if (target.damagedRangeLimit() != damageLimit) {
+            logln("limit: " + damageLimit + ";  target.limit: " +
+                                target.damagedRangeLimit());
+            errln("Damaged range limit is incorrect");
+        }
+
+        final int damageStart = (damageLimit==Integer.MIN_VALUE)? Integer.MAX_VALUE :
+                (stylePropogated? target.paragraphStart(Math.max(0, start-1)) : start);
+        if (target.damagedRangeStart() > damageStart) {
+            logln("start: " + damageStart + ";  target.start: " +
+                                target.damagedRangeStart());
+            errln("Damaged range start is incorrect");
+        }
+
+        verifyParagraphCount(target);
+
+        // check endpoints
+        if (!before.equals(target.paragraphStyleAt(Math.max(start-1, 0)))) {
+            errln("Incorrect paragraph style before modified range");
+        }
+
+        int lengthDelta = (srcLimit-srcStart) - (limit-start);
+        int indexAfterInsert = Math.min(target.length(), limit + lengthDelta);
+        if (!after.equals(target.paragraphStyleAt(indexAfterInsert))) {
+            errln("Incorrect paragraph style after modified range");
+        }
+
+        if (srcHasPBreak) {
+            int startP = target.paragraphLimit(start);
+            int limitOfTest = target.paragraphStart(indexAfterInsert);
+
+            int offset = start - srcStart;
+
+            while (startP < limitOfTest) {
+                int limitP = target.paragraphLimit(startP);
+                if (src.paragraphLimit(startP-offset) + offset != limitP) {
+                    errln("paragraph limits are not consistent");
+                }
+                if (!src.paragraphStyleAt(startP-offset)
+                                    .equals(target.paragraphStyleAt(startP))) {
+                    errln("paragraph styles are not consistent");
+                }
+                startP = limitP;
+            }
+        }
+        else {
+            for (int i=start; i < start+(srcLimit-srcStart); i++) {
+                if (!after.equals(target.paragraphStyleAt(i))) {
+                    errln("paragraph style changed unexpectedly");
+                }
+            }
+        }
+    }
+
+    private void verifyParagraphCount(MConstText text) {
+
+        int pCount = 0;
+        int textLength = text.length();
+
+        if (textLength == 0) {
+            pCount = 1;
+        }
+        else {
+            for (int s=0; s < textLength; s = text.paragraphLimit(s)) {
+                pCount++;
+            }
+            if (isParagraphBreak(text.at(textLength-1))) {
+                pCount++;
+            }
+        }
+
+        int sepCount = 0;
+        for (int i=0; i < textLength; i++) {
+            if (isParagraphBreak(text.at(i))) {
+                sepCount++;
+            }
+        }
+
+        if (sepCount + 1 != pCount) {
+            logln("sepCount=" + sepCount + ";  pCount=" + pCount);
+            errln("Paragraph count is not consistent with characters");
+        }
+    }
+
+//    private void checkEndpoint(MConstText text) {
+//
+//        boolean emptyFinalParagraph;
+//        int length = text.length();
+//
+//        if (length != 0) {
+//            char ch = text.at(length-1);
+//            emptyFinalParagraph = isParagraphBreak(ch);
+//        }
+//        else {
+//            emptyFinalParagraph = true;
+//        }
+//
+//        if ((text.paragraphStart(length) == length) != emptyFinalParagraph) {
+//            errln("Final paragraph length is incorrect");
+//        }
+//    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/AppCloser.java b/src/com/ibm/richtext/textapps/AppCloser.java
new file mode 100644
index 0000000..3bc9bea
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/AppCloser.java
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Frame;
+import java.awt.Window;
+
+class AppCloser {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCount = 0;
+
+    private WindowAdapter fAdapter = new WindowAdapter() {
+
+        public void windowClosing(WindowEvent e) {
+            --fCount;
+            if (fCount == 0) {
+                System.exit(0);
+            }
+            Window w = e.getWindow();
+            w.setVisible(false);
+            w.dispose();
+        }
+    };
+
+    public void listenToFrame(Frame frame) {
+
+        ++fCount;
+        frame.addWindowListener(fAdapter);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/BidiDemo.java b/src/com/ibm/richtext/textapps/BidiDemo.java
new file mode 100644
index 0000000..eb26ee5
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/BidiDemo.java
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.awtui.TextFrame;
+
+import java.awt.Toolkit;
+
+import java.io.*;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class BidiDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AppCloser fgListener = new AppCloser();
+
+    private static final String BUNDLE_NAME = "com.ibm.richtext.textapps.resources.Sample";
+    
+    public static void main(String[] args) {
+
+        String docName;
+        
+        if (args.length == 0) {
+            docName = "default";
+        }
+        else {
+            docName = args[0];
+        }
+        
+        openText(docName);
+    }
+
+    private static void openText(String docName) {
+
+        try {
+            ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
+
+            Object document = bundle.getObject(docName+".sample");
+            MConstText text;
+            
+            if (document instanceof String) {
+                text = new StyledText((String)document, 
+                                      AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            else {
+                URL url = (URL) document;
+                ObjectInputStream in = new ObjectInputStream(url.openStream());
+                text = (MConstText) in.readObject();
+            }
+            
+            String name = bundle.getString(docName+".name");
+            
+            makeFrame(text, name);
+        }
+        catch(Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    private static void makeFrame(MConstText text, String title) {
+
+        TextFrame frame = new TextFrame(text, title, 
+                Toolkit.getDefaultToolkit().getSystemClipboard());
+        frame.setSize(550, 700);
+        frame.show();
+        fgListener.listenToFrame(frame);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/FileUtils.java b/src/com/ibm/richtext/textapps/FileUtils.java
new file mode 100644
index 0000000..baeaf4b
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/FileUtils.java
@@ -0,0 +1,128 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+public class FileUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Present the user with a file dialog, and replace
+     * dest with the MText in the selected file, and return
+     * the file objct.  If any errors occur, return null and
+     * do not modify dest.
+     */
+    public static File userLoadMText(String title, MText dest, Frame owner) {
+
+        FileDialog dialog = new FileDialog(owner, title, FileDialog.LOAD);
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+
+        if (fileStr != null) {
+            File rval = new File(dirStr, fileStr);
+            MConstText src = loadMText(rval);
+            if (src != null) {
+                dest.replaceAll(src);
+                return rval;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    public static MConstText loadMText(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            MConstText text = (MConstText) objStream.readObject();
+            inStream.close();
+            return text;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+
+    /**
+     * Prompt the user for the file if file is null.  Then save the
+     * text in the file, if any.
+     */
+    public static File userSaveMText(File file, String title, MConstText text, Frame owner) {
+
+        if (file == null) {
+
+            FileDialog dialog = new FileDialog(owner, title, FileDialog.SAVE);
+            dialog.show();
+            String fileStr = dialog.getFile();
+            String dirStr = dialog.getDirectory();
+
+            if (fileStr != null) {
+                file = new File(dirStr, fileStr);
+            }
+        }
+
+        if (file != null) {
+
+            saveMText(file, text);
+        }
+
+        return file;
+    }
+
+    public static void saveMText(File file, MConstText text) {
+
+        Throwable error;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/MTextToString.java b/src/com/ibm/richtext/textapps/MTextToString.java
new file mode 100644
index 0000000..3e09d3d
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/MTextToString.java
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.io.*;
+
+public final class MTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2) {
+            usage();
+        }
+        else {
+            writeMTextAsString(args[0], args[1]);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: MTextToString inFile outFile");
+        System.out.println("inFile must be a serialized MConstText");
+        System.out.println("On exit, outFile will be a serialized String ");
+        System.out.println("containing the characters in the text.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static void writeMTextAsString(String inFile, String outFile) {
+
+        File file = new File(inFile);
+        MConstText text = FileUtils.loadMText(file);
+
+        if (text != null) {
+            char[] ch = new char[text.length()];
+            text.extractChars(0, ch.length, ch, 0);
+            String str = new String(ch);
+            writeString(str, outFile);
+        }
+        else {
+            System.out.println("Can't read inFile.");
+        }
+    }
+
+    public static void writeString(String stringToWrite, String outFile) {
+
+        File file = new File(outFile);
+        Throwable error = null;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(stringToWrite);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/StringToMText.java b/src/com/ibm/richtext/textapps/StringToMText.java
new file mode 100644
index 0000000..e6985c1
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/StringToMText.java
@@ -0,0 +1,76 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.*;
+
+public final class StringToMText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            String str = loadString(new File(args[0]));
+            if (str == null) {
+                throw new Error("Couldn't load String from file " + args[0]);
+            }
+            MConstText text = new StyledText(str, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            FileUtils.saveMText(new File(args[1]), text);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: StringToMText inFile outFile");
+        System.out.println("inFile must be a serialized String");
+        System.out.println("On exit, outFile will be a serialized MText ");
+        System.out.println("containing the characters in the string.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static String loadString(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            String str = (String) objStream.readObject();
+            inStream.close();
+            return str;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/TestMTextToString.java b/src/com/ibm/richtext/textapps/TestMTextToString.java
new file mode 100644
index 0000000..daba594
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/TestMTextToString.java
@@ -0,0 +1,75 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.io.File;
+
+public final class TestMTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            boolean success = testMTextToString(args[0], args[1]);
+            System.out.println(success? "PASSED" : "FAILED");
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: TestMTextToString mtextFile stringFile");
+        System.out.println("Compares the characters in mtextFile to the");
+        System.out.println("String in stringFile.");
+        System.exit(0);
+    }
+
+    public static boolean testMTextToString(String mtextFile, String stringFile) {
+
+        boolean success = false;
+
+        File mtext = new File(mtextFile);
+        MConstText text = FileUtils.loadMText(mtext);
+        if (text != null) {
+            String str = StringToMText.loadString(new File(stringFile));
+            if (str != null) {
+                success = compareMTextToString(text, str);
+            }
+            else {
+                System.out.println("Couldn't load String.");
+            }
+        }
+        else {
+            System.out.println("Couldn't load MText.");
+        }
+
+        return success;
+    }
+
+    public static boolean compareMTextToString(MConstText text, String str) {
+
+        if (text.length() != str.length()) {
+            return false;
+        }
+        for (int i=str.length()-1; i >= 0; i--) {
+            if (text.at(i) != str.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/resources/Sample.java b/src/com/ibm/richtext/textapps/resources/Sample.java
new file mode 100644
index 0000000..6e2fee9
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/Sample.java
@@ -0,0 +1,26 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textapps.resources;
+
+import java.util.ListResourceBundle;
+
+public final class Sample extends ListResourceBundle {
+    
+    public Object[][] getContents() {
+
+        /*Object sample =*/ this.getClass().getResource("hagan");
+
+        return new Object[][] {
+            { "default.sample", this.getClass().getResource("unicode.hebrew.red") },
+            { "default.name", "What is Unicode - Hebrew" },
+            { "arabic.sample", this.getClass().getResource("unicode.arabic.red") },
+            { "arabic.name", "What is Unicode - Arabic" },
+            { "japanese.sample", "\u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002" },
+            { "japanese.name", "Japanese Message" },
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/resources/unicode.arabic.red b/src/com/ibm/richtext/textapps/resources/unicode.arabic.red
new file mode 100644
index 0000000..f7d0724
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/unicode.arabic.red
Binary files differ
diff --git a/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red b/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red
new file mode 100644
index 0000000..2607f60
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red
Binary files differ
diff --git a/src/com/ibm/richtext/textformat/AsyncFormatter.java b/src/com/ibm/richtext/textformat/AsyncFormatter.java
new file mode 100644
index 0000000..e0edaa6
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/AsyncFormatter.java
@@ -0,0 +1,2051 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+// Revision: 70 1.38 richtext/AsyncFormatter.java, richtext, richtext
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+import java.awt.Point;
+import java.awt.Color;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.FontRenderContext;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.FontRenderContext;
+JDK11IMPORTS*/
+
+/*
+    Change history:
+
+    7/25/96 -
+
+    8/15/96
+        Fixed bug in textOffsetToPoint (fPixHeight wasn't added to negative heights). {jbr}
+
+    8/19/96
+        Removed references to JustificationStyle constants, and moved them into MFormatter {sfb}
+
+    8/23/96
+        Modified findLineAt and getLineContaining - added optimization in search loop.  Also,
+            they were failing when fLTPosEnd+1 == fLTNegStart.  Fixed.
+
+    8/26/96
+        Moved FormatDaemon stuff into this class.
+
+    9/11/96
+        Shortened line returned from textOffsetToPoint by 1 pixel
+
+    9/23/96
+        textOffsetToPoint line length restored (see above).  drawText() now draws only lines
+        which fall in rectangle param.
+
+    9/26/96
+        whitespace at end of line is used for caret positioning
+
+    10/4/96
+        Added static TextBox method.
+
+    10/8/96
+        Line 1300 - less than changed to less than or equal in textOffsetToPoint.  Watch for
+            hangs in formatText.
+
+    10/9/96
+        Changed sync. model.  fFormatInBackground is used to start/stop bg formatting
+
+    10/17/96
+        Added new flags:  fLineInc, fFillInc for bidi support.  updateFormat, pointToTextOffset, getBoundingRect,
+        and findNewInsertionOffset should now function correctly for non-Roman documents.  Nothing else has been
+        modified to support intl text.
+
+    10/21/96
+        Pushed paragraph formatting and caret positioning into LineLayout.  In process of pushing
+        highlighting into LineLayout.
+
+    10/24/96
+        Now getting paragraph styles from paragraph buffer.
+
+    7/7/97
+        Up-arrow doesn't move to beginning of text if you're on the first line.
+
+    7/1/98
+        No longer intersecting damaged rect with view rect in updateFormat.
+*/
+
+/**
+* This class implements MFormatter.  It maintains a table of
+* <tt>LayoutInfo</tt> instances which contain layout information
+* for each line in the text.  This class formats lines on demand,
+* and creates a low-priority thread to format text in the background.
+* Note that, at times, some text may not have been formatted, especially
+* if the text is large.
+* <p>
+* The line table is an array of <tt>LayoutInfo</tt> objects, which expands as needed to hold
+* all computed lines in the text.  The line table consists of three
+* regions:  a "positive" region, a "gap," and a "negative" region.
+* In the positive region, character and graphics offsets are positive
+* integers, computed from the beginning of the text / display.  In the
+* gap, line table entries are null.  New lines may be inserted into the gap.
+* In the negative region, character and graphics offsets are negative;
+* their absolute values indicate distances from the end of the text / display.
+* The <tt>fLTPosEnd</tt> member gives the index in the line table of the
+* last positive entry.  The <tt>fLTNegStart</tt> gives the index of first
+* negative entry.  If there are no negative entries, <tt>fLTNegStart</tt> is
+* equal to <tt>fLTSize</tt>, the size of the line table.
+* <p>
+* Changes to the line table occur only in the <tt>formatText()</tt> method.
+* This method calls <tt>LineLayout.layout()</tt> for each line to format.
+*
+* @author John Raley
+*
+* @see MFormatter
+* @see LineLayout
+* @see LayoutContext
+* @see LayoutInfo
+*/
+
+final class AsyncFormatter extends MFormatter implements Runnable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Text to format.
+    */
+    private MConstText fText;
+
+    /**
+    * Default values.
+    */
+    private AttributeMap fDefaultValues;
+    
+    /**
+    * Font resolver.
+    */
+    private FontResolver fFontResolver;
+    
+    /**
+    * Default character metric - used to set height of empty paragraphs
+    */
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    /**
+    * Length to which lines are formatted.
+    */
+    private int fLineDim;
+
+    /**
+    * Table of formatted lines.
+    */
+    private LayoutInfo fLineTable[];
+
+    /**
+    * Size of line table.
+    */
+    private int fLTSize = 10; // initial size must be > 0
+
+    /**
+    * Index of last positive entry in line table.
+    */
+    private int fLTPosEnd;
+
+    /**
+    * Index of first negative entry in line table.
+    */
+    private int fLTNegStart;
+
+    /**
+    * Length of text on which negative line offsets are based.
+    * @see #formatText
+    */
+    private int fLTCurTextLen;
+
+    /**
+    * Length of formatted text in fill direction, in pixels.
+    */
+    private int fPixHeight;
+
+    /**
+    * Length of formatted text including pseudoline.
+    */
+    private int fFullPixHeight;
+
+    private int fMinX;
+    private int fMaxX;
+
+    /**
+    * <tt>true</tt> if lines should be formatted to fit line dimension.
+    */
+    private boolean fWrap;
+
+    /**
+    * <tt>true</tt> if characters run horizontally.
+    */
+    private boolean fHLine = true;
+
+    /**
+     * <tt>true</tt> if characters run from from low to high coordinates on line.
+     */
+    private boolean fLineInc = true;
+
+    /**
+     * <tt>true</tt> if lines run from low to high coordinates within page.
+     */
+    private boolean fFillInc = true;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt>
+    * if pixel height precedes topmost line.
+    */
+    private static final int kBeforeFirstLine = -2;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt> and <tt>getLineContaining()</tt>
+    * if offset / pixel height is after all existing lines.
+    */
+    private static final int kAfterLastLine = -1;
+
+    /**
+    * Thread which invokes formatter in the background.
+    */
+    private Thread fDaemon;
+
+    /**
+    * FontRenderContext to measure with.  Currently not settable after
+    * construction.
+    */
+    private FontRenderContext fFontRenderContext;
+
+    /**
+    * Controls whether background formatting can run.
+    */
+    private boolean fBgFormatAllowed = false;
+    
+    /**
+    * Cached line break object.
+    */
+    private BreakIterator fLineBreak = null;
+    
+    /**
+    * Cached LineBreakMeasurer.
+    */
+    private LineBreakMeasurer fCachedMeasurer = null;
+    private int fCachedMeasurerStart;
+    private int fCachedMeasurerLimit;
+    
+    // Some JDK's (Sun's 1.2.2) throw exceptions from 
+    // LineBreakMeasurer.insertChar and deleteChar.  This class
+    // detects this condition and doesn't use these two methods
+    // if they throw exceptions.
+    private static boolean fgCacheMeasurers = true;
+    
+    /**
+    * Current text time stamp.  Used to maintain modification invariant.
+    */
+    private int fCurTimeStamp;
+    
+    /**
+    * Cache of ParagraphRenderers.
+    */
+    private Hashtable fRendererCache = new Hashtable();
+    
+    /**
+    * Draw text inside a rectangle. Does not cache any formatting information.
+    * This is convenient for small amounts of text; comparable to TETextBox on the Mac.
+    * <p>
+    * @param text the text to draw
+    * @param g Graphics on which to draw
+    * @param drawRect rectangle in which text will be drawn
+    * @param fillInc if true, lines run from low to high coordinates in page.
+    * @param hLine if true, characters run horizontally within a line.
+    */
+
+    private static boolean isParagraphSeparator(char ch) {
+
+        return ch == '\n' || ch == '\u2029';
+    }
+
+    /**
+    * Create an <tt>AsyncFormatter</tt>.
+    * @param text the text to format
+    * @param lineBound length to which lines are foramtted
+    * @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+    */
+    AsyncFormatter(MConstText text, 
+                   AttributeMap defaultValues,
+                   int lineBound,
+                   boolean wrap,
+                   Graphics g)
+    {
+        fText = text;
+        fDefaultValues = defaultValues;
+        fFontResolver = new FontResolver(fDefaultValues);
+        
+        fLineDim = lineBound;
+        fWrap = wrap;
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        fFontRenderContext = g2d.getFontRenderContext();
+        
+        fDefaultCharMetric = new DefaultCharacterMetric(fFontResolver, 
+                                                        fFontRenderContext);
+        fLTCurTextLen = text.length();
+        removeAllLines();
+
+        fDaemon = new Thread(this);
+        fDaemon.start();
+    }
+    
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    public void checkTimeStamp() {
+        String admonition = "Probably, you modified " +
+                            "the text before calling stopBackgroundFormatting().";
+                            
+        if (fText.getTimeStamp() != fCurTimeStamp) {
+            throw new Error("Time stamp is out of sync.  " + admonition);
+        }
+        if (fText.length() != fLTCurTextLen) {
+            throw new Error("Length changed unexpectedly.  " +
+                            "fText.length()="+fText.length()+";  "+
+                            "fLTCurTextLen="+fLTCurTextLen+";  "+
+                            "formatter="+this+";  "+
+                            "text="+fText);
+        }
+    }
+
+    /**
+    * Specify whether to wrap lines using the line dimension.
+    * @param wrap if <tt>true</tt> lines will be wrapped; otherwise new lines will only be
+    * started when a newline is encountered.
+    */
+    public synchronized void setWrap(boolean wrap)
+    {
+        if (wrap != fWrap) {
+            fWrap = wrap;
+            removeAllLines();
+        }
+    }
+
+    /**
+    * Return true if lines are wrapped using the line dimension.
+    * @see #setWrap
+    */
+    public synchronized boolean wrap()
+    {
+        return fWrap;
+    }
+
+    /**
+    * Specify the lineBound in pixels.  If line wrapping is on, lines
+    * will be wrapped to this value.
+    * <p>
+    *
+    * @param lineBound the distance, in pixels, used to wrap lines.
+    */
+    public synchronized void setLineBound(int lineBound)
+    {
+        if (fLineDim != lineBound) {
+            fLineDim = lineBound;                
+            if (fWrap) {
+                removeAllLines();
+            }
+        }
+    }
+
+    /**
+    * Return the number of pixels along the line dimension.
+    */
+    public synchronized int lineBound()
+    {
+        return fLineDim;
+    }
+
+//    /**
+//    * Return <tt>true</tt> if characters run from low to high coordinates on line.
+//    */
+//    private boolean lineInc()
+//    {
+//        return fLineInc;
+//    }
+//
+//    /**
+//    * Return <tt>true</tt> if lines run from low to high coordinates on page.
+//    */
+//    private boolean fillInc()
+//    {
+//        return fFillInc;
+//    }
+
+    /**
+    * Remove all lines in the line table.  Used after an operation that
+    * invalidates all existing lines, such as changing line wrapping or the
+    * line dim.
+    */
+    private synchronized void removeAllLines()
+    {
+        fCurTimeStamp = fText.getTimeStamp();
+        stopBackgroundFormatting();
+
+        fMinX = 0;
+        fMaxX = fLineDim;
+        
+        fLineTable = new LayoutInfo[fLTSize]; // fLTSize must be > 0
+        fLTNegStart = fLTSize;
+        fLTPosEnd = 0;
+
+        fLineTable[0] = pseudoLineInfo(null, 0);
+
+        fPixHeight = fLineTable[0].getHeight(); // ??? or should it be zero?
+        fFullPixHeight = fPixHeight;
+
+        // format at least one line:
+        formatToHeight(fPixHeight + 1);
+
+        enableBGFormat();
+    }
+
+    /**
+     * Fill the layout info with information appropriate to the pseudoline.
+     */
+    private synchronized LayoutInfo pseudoLineInfo(LayoutInfo info, int offset)
+    {
+        AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen); // ??? if text is empty or this is the end of the text, what happens?
+        ParagraphRenderer renderer = getRendererFor(st);
+        info = renderer.layout(fText,
+                               info,
+                               (LineBreakMeasurer)null,
+                               fFontRenderContext,
+                               offset,
+                               offset,
+                               fLineDim,
+                               fLineDim);
+
+        return info;
+    }
+
+    /**
+    * Return the index of the last valid line in the line table.
+    */
+    private int lastLine()
+    {
+        return (fLTNegStart == fLTSize) ? fLTPosEnd : fLTSize - 1;
+    }
+
+    /**
+    * Shift line table such that <tt>lastPos</tt> is the last positive
+    * entry in the table. <b>NOTE: <tt>lastPos</tt> must be a valid line!</b>
+    * <p>
+    * @param lastPos the index of the line which will become the last positive
+    * entry in the line table
+    */
+    private void shiftTableTo(int lastPos)
+    {
+        LayoutInfo li;
+
+        while (lastPos < fLTPosEnd)    { // shift +'s to -'s
+            li = fLineTable[fLTPosEnd];
+            fLineTable[fLTPosEnd--] = null;
+
+            li.makeRelativeToEnd(fLTCurTextLen, fPixHeight);
+
+            fLineTable[--fLTNegStart] = li;
+        }
+
+        while (lastPos >= fLTNegStart) { // shift -'s to +'s
+            li = fLineTable[fLTNegStart];
+            fLineTable[fLTNegStart++] =    null;
+
+            li.makeRelativeToBeginning(fLTCurTextLen, fPixHeight);
+
+            fLineTable[++fLTPosEnd]    = li;
+        }
+    }
+
+    /**
+    * Increase the size of the line table.
+    */
+    private void expandLineTable()
+    {
+        // This just doubles the size of the line table.
+
+        LayoutInfo newLineTable[] = new LayoutInfo[fLineTable.length * 2];
+        int newNegStart = newLineTable.length - (fLineTable.length - fLTNegStart);
+
+        System.arraycopy(fLineTable, 0, newLineTable, 0, fLTPosEnd + 1);
+        System.arraycopy(fLineTable, fLTNegStart, newLineTable, newNegStart, fLTSize - fLTNegStart);
+
+        fLTNegStart = newNegStart;
+        fLTSize = newLineTable.length;
+        fLineTable = newLineTable;
+    }
+
+    /**
+    * Return the index of the line containing the pixel position <tt>fillCoord</tt>.
+    * If fillCoord exceeds the bottom of the text, return kAfterLastLine.
+    * If fillCoord is less than the top of the text, return kBeforeFirstLine.
+    * <p>
+    * @param fillCoord "height" of line to locate.
+    */
+    private int findLineAt(int fillCoord)
+    {
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if (fillCoord >= fPixHeight)
+            return kAfterLastLine;
+        else if (fillCoord < 0)
+            return kBeforeFirstLine;
+
+        if ((fLTNegStart < fLTSize) && (fillCoord >= fLineTable[fLTNegStart].getGraphicStart(fPixHeight))) {
+            fillCoord -= fPixHeight;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getGraphicStart(0) + fLineTable[fLTPosEnd].getHeight();
+        }
+        lowStart = fLineTable[low].getGraphicStart(0);
+
+        do {
+            if (lowStart == highStart)
+                return low;
+
+            mid = low + (fillCoord - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getGraphicStart(0);
+
+            if (midStart > fillCoord) {
+                high = mid;
+                highStart = fLineTable[high].getGraphicStart(0);
+            }
+            else if (midStart + fLineTable[mid].getHeight() <= fillCoord) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getGraphicStart(0);
+            }
+            else
+                return mid;
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+     * Return the index of the first character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharStartInternal(int line)
+    {
+        return fLineTable[line].getCharStart(fLTCurTextLen);
+    }
+
+    /**
+     * Return the index of the character following the last character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharLimitInternal(int line)
+    {
+        return lineCharStartInternal(line) + fLineTable[line].getCharLength();
+    }
+
+    /**
+     * Return the graphic start of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicStartInternal(int line)
+    {
+        return fLineTable[line].getGraphicStart(fPixHeight);
+    }
+
+    /**
+     * Return the graphic limit of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicLimitInternal(int line)
+    {
+        return lineGraphicStartInternal(line) + fLineTable[line].getHeight();
+    }
+
+    /**
+    * Return the offset of the first character which has not been formatted.
+    * If all text has been formatted, return the current text length.
+    */
+    private int lastLineCharStop()
+    {
+        return lineCharLimitInternal(lastLine());
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(TextOffset offset) {
+
+        return getValidLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(int insOffset, boolean placement)
+    {
+        int line = getLineContaining(insOffset, placement);
+        if (line == kAfterLastLine)
+            line = lastLine();
+        else if (line == kBeforeFirstLine)
+            throw new IllegalArgumentException("Debug: getLineContaining returned kBeforeFirstLine");
+
+        return line;
+    }
+
+    /**
+    * Return index of line containing <tt>offset</tt>.
+    * ??? If offset is after last formatted line, returns kAfterLastLine.  Is that good?
+    * <p>
+    * @param offset the offset whose line should be located
+    * @returns line containing <tt>offset</tt>
+    */
+    private int getLineContaining(TextOffset offset) {
+
+        return getLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    private int getLineContaining(int insOffset, boolean placement)
+    {
+        int pos = insOffset;
+        if (placement == TextOffset.BEFORE_OFFSET && pos > 0)
+            --pos;
+
+        if (pos < 0) {
+            throw new IllegalArgumentException("Debug: getLineContaining offset < 0: " + pos);
+        }
+
+        if (pos >= lastLineCharStop()) {
+            return emptyParagraphAtEndOfText()? kAfterLastLine : lastLine();
+        }
+
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if ((fLTNegStart < fLTSize) && (pos >= fLineTable[fLTNegStart].getCharStart(fLTCurTextLen))) {
+            pos -= fLTCurTextLen;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getCharStart(0) + fLineTable[fLTPosEnd].getCharLength();
+        }
+        lowStart = fLineTable[low].getCharStart(0);
+
+        do {
+            if (highStart == lowStart) {
+                return low;
+            }
+
+            mid = low + (pos - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getCharStart(0);
+
+            if (midStart > pos) {
+                high = mid;
+                highStart = fLineTable[high].getCharStart(0);
+            }
+            else if (midStart + fLineTable[mid].getCharLength() <= pos) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getCharStart(0);
+            }
+            else {
+                return mid;
+            }
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+    * Display text in drawArea. Does not reformat text.
+    * <p>
+    * @param g the Graphics object in which to draw
+    * @param drawArea the rectangle, in g's coordinate system, in which to draw
+    * @param origin the top-left corner of the text, in g's coordinate system
+    */
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin)
+    {
+        draw(g, drawArea, origin, null, null, null);
+    }
+
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin,
+                TextOffset selStart, TextOffset selStop, Color highlight) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+
+        // Get starting and ending fill 'heights.'
+
+        int startFill;
+        int endFill;
+
+        if (fFillInc)
+            startFill = drawArea.y - origin.y;
+        else
+            startFill = origin.y - (drawArea.y + drawArea.height);
+
+        endFill = startFill + drawArea.height;
+
+        // We're drawing one more line than necessary when we update because of a
+        // selection change.  But we're drawing the right amount of lines when we
+        // refresh the whole display.  This affects rendering speed significantly,
+        // and creating a new paragraph renderer for each line doesn't help either.
+        // For now, I'm going to subtract one from the fill height, on the theory
+        // that we're picking up the extra line because of a one-pixel slop.
+        // This seems to work, although perhaps if one pixel of a line at the
+        // bottom should draw, it won't.
+
+        --endFill;
+
+        // Format to ending fill height, so line table is valid for all lines we need to draw.
+
+        formatToHeight(endFill);
+
+        // Get starting and ending lines for fill height.  If the start of the fill is after the last line,
+        // or the end of the fill is before the first line, return.
+
+        int curLine = findLineAt(startFill);
+        if (curLine == kAfterLastLine)
+            return;
+        else if (curLine == kBeforeFirstLine)
+            curLine = 0;
+
+        int lastLine = findLineAt(endFill);
+        if (lastLine == kBeforeFirstLine)
+            return;
+        else if (lastLine == kAfterLastLine)
+            lastLine = lastLine();
+
+        // Get the base coordinates (lineX, lineY) for the starting line.
+
+        int lineX, lineY;
+
+        int gStart = lineGraphicStartInternal(curLine);
+
+        if (fHLine) {
+            if (fLineInc)
+                lineX = origin.x;
+            else
+                lineX = origin.x - fLineDim;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[curLine].getHeight());
+        }
+        else {
+            if (fLineInc)
+                lineY = origin.y;
+            else
+                lineY = origin.y - fLineDim;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[curLine].getHeight());
+        }
+
+        // Iterate through lines, drawing each one and incrementing the base coordinate by the line height.
+
+
+        for (; curLine <= lastLine; curLine++) {
+            // Adjust curLine around gap in line table.
+            if ((curLine > fLTPosEnd) && (curLine < fLTNegStart))
+                curLine = fLTNegStart;
+
+            fLineTable[curLine].renderWithHighlight(fLTCurTextLen, g2d, fLineDim, lineX, lineY, selStart, selStop, highlight);
+
+            // Increment line base for next iteration.
+            int lineInc = fLineTable[curLine].getHeight();
+            if (fFillInc) {
+                if (fHLine)
+                    lineY += lineInc;
+                else
+                    lineX += lineInc;
+            } else {
+                if (fHLine)
+                    lineY -= lineInc;
+                else
+                    lineX -= lineInc;
+            }
+        }
+    }
+
+    /**
+    * Format text to given height.
+    * @param height the height to which text will be formatted.
+    */
+    public synchronized void formatToHeight(int reqHeight)
+    {
+        checkTimeStamp();
+        if (reqHeight <= fPixHeight) // already formatted to this height
+            return;
+
+        if (fText.length() == lastLineCharStop()) // already formatted all the text
+            return;
+
+        // +++ should disable update thread here
+
+        if (fLTNegStart < fLTSize)
+            shiftTableTo(fLTSize - 1);
+
+        formatText(0, 0, reqHeight, false);
+    }
+
+    /**
+     * Format text to given offset.
+     * @param offset the offset to which text will be formatted.
+     */
+     private void formatToOffset(TextOffset offset)
+     {
+        formatToOffset(offset.fOffset, offset.fPlacement);
+     }
+     
+     private synchronized void formatToOffset(int offset, boolean placement) {
+        
+        checkTimeStamp();
+        int llcs = lastLineCharStop();
+        if (llcs < fLTCurTextLen) {
+            int limit = offset;
+            if (placement == TextOffset.AFTER_OFFSET) // format to past character offset is associated with
+                limit++;
+            if (limit >= llcs) { // ??? would '>' be ok instead or '>='?
+                if (limit > fLTCurTextLen)
+                    limit = fLTCurTextLen;
+
+                shiftTableTo(lastLine());
+                formatText(llcs, limit - llcs, Integer.MAX_VALUE, true);
+            }
+        }
+     }
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public Rectangle updateFormat(final int afStart,
+                                               final int afLength,
+                                               Rectangle viewRect,
+                                               Point origin)
+    {
+        if (afStart < 0) {
+            throw new IllegalArgumentException("Debug: updateFormat afStart < 0: " + afStart);
+        }
+        if (fBgFormatAllowed) {
+            throw new IllegalArgumentException("Background formatting should have been disabled");
+        }
+        fCurTimeStamp = fText.getTimeStamp();
+        
+        int curLine = getValidLineContaining(afStart, TextOffset.AFTER_OFFSET);
+        int lineStartPos = lineCharStartInternal(curLine);
+
+        // optimize by finding out whether change occurred
+        // after first word break on curline
+
+        int firstPossibleBreak;
+
+        if (lineStartPos < fText.length()) {
+
+            if (fLineBreak == null) {
+                fLineBreak = BreakIterator.getLineInstance();
+            }
+            CharacterIterator charIter = fText.createCharacterIterator();
+            charIter.setIndex(lineStartPos);
+            fLineBreak.setText(charIter);
+
+            firstPossibleBreak = fLineBreak.following(lineStartPos);
+        }
+        else
+            firstPossibleBreak = afStart;
+
+        if ((curLine > 0) && (firstPossibleBreak == BreakIterator.DONE || afStart <= firstPossibleBreak)) {
+            curLine--;
+            if (curLine < fLTNegStart && curLine > fLTPosEnd)
+                curLine = fLTPosEnd;
+        }
+
+        shiftTableTo(curLine);
+
+        int pixHeight; // after the formatText call, at least pixHeight text must be formatted
+
+        if (fHLine) {
+            if (fFillInc)
+                pixHeight = viewRect.y + viewRect.height - origin.y;
+            else
+                pixHeight = origin.y - viewRect.y;
+        }
+        else {
+            if (fFillInc)
+                pixHeight = viewRect.x + viewRect.width - origin.x;
+            else
+                pixHeight = origin.x - viewRect.x;
+        }
+
+        Rectangle r = formatText(afStart, afLength, pixHeight, false);
+
+        //dumpLineTable();
+
+        if ((fPixHeight < pixHeight) && (fLTNegStart < fLTSize) && (fLTCurTextLen > lastLineCharStop())) {
+            shiftTableTo(lastLine());
+            Rectangle s = formatText(0, 0, pixHeight, false);
+            r = r.union(s);
+        }
+
+        intlRect(origin, r);
+        //System.out.println("Damaged rect: "+r+"; origin: "+origin);
+
+        // don't need to synchronized here, b/c the daemon shouldn't be running when
+        // this is executing
+
+        if (fText.length() < lastLineCharStop())
+            enableBGFormat();
+        else
+            stopBackgroundFormatting();
+
+        //dumpLineTable();
+
+        return r;
+    }
+    
+    private LineBreakMeasurer makeMeasurer(int paragraphStart, int paragraphLimit) {
+
+        MTextIterator iter = new MTextIterator(fText,
+                                               fFontResolver,
+                                               paragraphStart,
+                                               paragraphLimit);
+        LineBreakMeasurer measurer = new LineBreakMeasurer(iter, fFontRenderContext);
+        if (fgCacheMeasurers) {
+            fCachedMeasurerStart = paragraphStart;
+            fCachedMeasurerLimit = paragraphLimit;
+            fCachedMeasurer = measurer;
+        }
+        return measurer;
+    }        
+
+/**
+* Compute text format.  This method calculates text format;  it can be
+* called for various purposes:  to reformat text after an edit, to
+* format text to a particular height, or to format text up to a
+* particular offset.
+* <p>
+* The calling method must ensure that <tt>fLineTable</tt> has been shifted
+* such that the last positive line is where the formatting operation will
+* begin.
+* <p>
+* Called by: <tt>formatToHeight()</tt>, <tt>updateFormat()</tt>,
+* <tt>textOffsetToPoint()</tt>, <tt>getBoundingRect()</tt>
+* @param afStart the offset of the first character in the text which has changed
+* @param afLength the number of new or changed characters in the text
+* @param reqHeight the pixel height to which text must be formatted.  Ignored
+* if <tt>formatAllNewText</tt> is <tt>true</tt>, or if old lines remain in the
+* line table after all changed text has been formatted.
+* @param seekOffsetAtEnd if <tt>true</tt>, formatting continues until the line
+* containing afStart+afLength has been formatted.  If false, formatting may stop
+* when reqHeight has been reached.  This parameter should be <tt>true</tt> <b>only</b>
+* if the object of the formatting operation is to extend formatting to a particular
+* offset within the text;  it should be <tt>false</tt> everywhere else.
+* @returns a rectangle, relative to the top-left of the text, which encloses the
+* screen area whose appearance has changed due to the reformatting.
+*/
+
+    private Rectangle formatText(int afStart, final int afLength, int reqHeight, boolean seekOffsetAtEnd)
+    {
+    /* assumes line table shifted such that first line to format is
+    last positive line */
+
+        if (afLength < 0) {
+            throw new IllegalArgumentException("afLength < 0.  afLength=" + afLength);
+        }
+
+        int newTextEnd = afStart + afLength;
+
+        final int newCurTextLen = fText.length();
+
+        // variable not used int oldPixHeight = fPixHeight;
+        int oldFullPixHeight = fFullPixHeight;
+        fPixHeight -= fLineTable[fLTPosEnd].getHeight();
+
+        int curGraphicStart = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight);
+        int curLineStart = fLineTable[fLTPosEnd].getCharStart(newCurTextLen);
+        
+        int curParagraphStart = fText.paragraphStart(curLineStart);
+        int curParagraphLimit = Integer.MIN_VALUE; // dummy value
+
+        int damageStart = curGraphicStart;
+
+        ParagraphRenderer renderer = null;
+        LineBreakMeasurer measurer = null;
+        
+        // try to use cached LineBreakMeasurer if possible
+        if (fCachedMeasurer != null && 
+            curParagraphStart == fCachedMeasurerStart) {
+
+            curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+            
+            try {
+                if (newCurTextLen - fLTCurTextLen == 1 && afLength == 1) {
+                    if (curParagraphLimit == fCachedMeasurerLimit+1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver, 
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.insertChar(iter, afStart);
+                        fCachedMeasurerLimit += 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+                else if (fLTCurTextLen - newCurTextLen == 1 && afLength == 0) {
+                    if (fCachedMeasurerLimit > fCachedMeasurerStart + 1 &&
+                                curParagraphLimit == fCachedMeasurerLimit-1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver,
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.deleteChar(iter, afStart);
+                        fCachedMeasurerLimit -= 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+            }
+            catch(ArrayIndexOutOfBoundsException e) {
+                fCachedMeasurer = null;
+                fgCacheMeasurers = false;
+            }
+            
+            if (measurer != null) {
+                // need to set up renderer since the paragraph update in the
+                // formatting loop will not happen
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+                measurer.setPosition(curLineStart);
+            }
+        }
+        
+        if (measurer == null) {
+            // trigger paragraph update at start of formatting loop
+            curParagraphLimit = curParagraphStart;
+            curParagraphStart = 0;
+        }
+
+        fLTCurTextLen = newCurTextLen;
+        
+        while (true) {
+            // System.out.println("line: " + fLTPosEnd + ", cls: " + curLineStart);
+
+
+            if (curLineStart >= curParagraphLimit) {
+                curParagraphStart = curParagraphLimit;
+                curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+
+                if (curParagraphStart < curParagraphLimit) {
+                    measurer = makeMeasurer(curParagraphStart, curParagraphLimit);
+                    measurer.setPosition(curLineStart);
+                }
+                else {
+                    measurer = null;
+                }
+            }
+
+            {
+                boolean haveOldDirection = fLineTable[fLTPosEnd] != null;
+                boolean oldDirection = false; //  dummy value for compiler
+                if (haveOldDirection) {
+                    oldDirection = fLineTable[fLTPosEnd].isLeftToRight();
+                }
+
+                fLineTable[fLTPosEnd] = renderer.layout(fText,
+                                                        fLineTable[fLTPosEnd],
+                                                        measurer,
+                                                        fFontRenderContext,
+                                                        curParagraphStart,
+                                                        curParagraphLimit,
+                                                        fWrap ? fLineDim : Integer.MAX_VALUE,
+                                                        fLineDim);
+                if (haveOldDirection) {
+                    if (fLineTable[fLTPosEnd].isLeftToRight() != oldDirection) {
+                        newTextEnd = Math.max(newTextEnd, curParagraphLimit);
+                    }
+                }
+            }
+
+            {
+                LayoutInfo theLine = fLineTable[fLTPosEnd];
+
+                theLine.setGraphicStart(curGraphicStart);
+                curGraphicStart += theLine.getHeight();
+
+                fPixHeight += theLine.getHeight();
+                curLineStart += theLine.getCharLength();
+
+                if (!fWrap) {
+                    int lineWidth = theLine.getTotalAdvance() + theLine.getLeadingMargin();
+                    if (theLine.isLeftToRight()) {
+                        if (fMaxX < lineWidth) {
+                            fMaxX = lineWidth;
+                        }
+                    }
+                    else {
+                        if (fLineDim-lineWidth < fMinX) {
+                            fMinX = fLineDim-lineWidth;
+                        }
+                    }
+                }
+            }
+            /*
+                Next, discard obsolete lines.  A line is obsolete if it
+                contains new text or text which has been formatted.
+            */
+
+            while (fLTNegStart < fLTSize) {
+                int linePos = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+                if (linePos >= curLineStart && linePos >= newTextEnd)
+                    break;
+
+                // System.out.println("delete neg line: " + fLTNegStart);
+                fPixHeight -= fLineTable[fLTNegStart].getHeight();
+                fLineTable[fLTNegStart++] = null;
+            }
+
+            int stopAt;
+            if (fLTNegStart < fLTSize)
+                stopAt = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+            else
+                stopAt = newCurTextLen;
+
+            /*
+                Now, if exit conditions aren't met, create a new line.
+            */
+
+            if (seekOffsetAtEnd) {
+                if ((curLineStart >= newTextEnd) && (fLTNegStart == fLTSize)) {
+                    // System.out.println("break 1");
+                    break;
+                }
+            }
+            else {
+                if (curLineStart >= stopAt) {
+                    // System.out.println("curLineStart: " + curLineStart + " >= stopAt: " + stopAt);
+                    break;
+                }
+                else if (fLTNegStart==fLTSize && fPixHeight >= reqHeight) {
+                    // System.out.println("break 3");
+                    break;
+                }
+            }
+
+            if (fLTPosEnd + 1 == fLTNegStart)
+                expandLineTable();
+
+            fLineTable[++fLTPosEnd] = null; // will be created by Renderer
+        }
+        //System.out.print("\n");
+
+        if (newCurTextLen == 0) {
+            fLineTable[0] = pseudoLineInfo(fLineTable[0], 0);
+            fPixHeight = fLineTable[0].getHeight();
+        }
+        fFullPixHeight = fPixHeight;
+
+        if (isParaBreakBefore(newCurTextLen)) {
+            fFullPixHeight += lastCharHeight();
+        }
+/*
+        System.out.println("curLineStart: " + curLineStart +
+            ", fLTPosEnd: " + fLTPosEnd +
+            ", fLTNegStart: " + fLTNegStart +
+            ", fLTSize: " + fLTSize);
+
+        System.out.println("oldFullPixHeight: " + oldFullPixHeight + ", newFullPixHeight: " + fFullPixHeight);
+*/
+        int damageLength;
+        if (fFullPixHeight == oldFullPixHeight) {
+            damageLength = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight)
+                            + fLineTable[fLTPosEnd].getHeight() - damageStart;
+        }
+        else {
+            damageLength = Math.max(fFullPixHeight, oldFullPixHeight);
+        }
+
+        return new Rectangle(fMinX, damageStart, fMaxX-fMinX, damageLength);
+    }
+
+//    private void dumpLineTable()
+//    {
+//        int i;
+//
+//        System.out.println("fLTCurTextLen=" + fLTCurTextLen + " " );
+//        for (i=0; i<= fLTPosEnd; i++)
+//            System.out.println("Line " + i + " starts at "
+//                                + fLineTable[i].getCharStart(fLTCurTextLen)
+//                                + " and extends " + fLineTable[i].getCharLength());
+//
+//        for (i=fLTNegStart; i< fLTSize; i++)
+//            System.out.println("Line " + (i-fLTNegStart+fLTPosEnd+1) + " starts at "
+//                                + fLineTable[i].getCharStart(fLTCurTextLen)
+//                                + " and extends " + fLineTable[i].getCharLength());
+//    }
+
+    public synchronized int minX() {
+    
+        return fMinX;
+    }
+    
+    /**
+    * Return the horizontal extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxX()
+    {
+        checkTimeStamp();
+
+        return fMaxX;
+    }
+
+    /**
+    * Return the height of the last character in the text.
+    *
+    * This is used for the 'extra height' needed to display a caret at the end of the text when the
+    * text is empty or ends with a newline.
+    */
+    private int lastCharHeight()
+    {
+        int charIndex = lastLineCharStop() - 1;
+        AttributeMap st = fText.characterStyleAt(charIndex);
+        DefaultCharacterMetric.Metric metric = fDefaultCharMetric.getMetricForStyle(st);
+
+        int height = metric.getAscent();
+        height += metric.getDescent();
+        height += metric.getLeading();
+
+        return height;
+    }
+
+    /**
+     * Return true if the character at pos is a paragraph separator.
+     */
+    private boolean isParaBreakBefore(int pos)
+    {
+        return pos > 0 && (fText.at(pos - 1) == '\u2029' || fText.at(pos - 1) == '\n');
+        // we really need to take look at this and determine what this function
+        // should be doing.  What I've got here right now is a temporary implementation.
+    }
+
+    public synchronized int minY() {
+    
+        return 0;
+    }
+    
+    /**
+    * Return the vertical extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxY()
+    {
+        checkTimeStamp();
+
+        int numChars = lastLineCharStop();
+
+        int pixHeight = fPixHeight;
+        if (numChars == fLTCurTextLen && isParaBreakBefore(fLTCurTextLen)) {
+            pixHeight += lastCharHeight();
+        }
+
+        if (numChars != 0)
+            return pixHeight * fText.length() / numChars;
+        else
+            return 0;
+    }
+
+    /**
+    * Return the actual pixel length of the text which has been formatted.
+    */
+    public synchronized int formattedHeight()
+    {
+        checkTimeStamp();
+        return fPixHeight;
+    }
+
+    /**
+     * There are two modes for dealing with carriage returns at the end of a line.  In the 'infinite width'
+     * mode, the last character is considered to have infinite width.  Thus if the point is past the 'real'
+     * end of the line, the offset is the position before that last character, and the offset is associated
+     * with that character (placement after). In the 'actual width' mode, the offset is positioned after
+     * that character, but still associated with it (placement before).
+     */
+
+    private TextOffset lineDimToOffset(TextOffset result, int line, int lineX, int lineY, TextOffset anchor, boolean infiniteMode)
+    {
+    // temporarily adjust line info to remove the negative char starts used in the line table.
+    // then call through to the paragraph renderer to get the offset.  Don't put line end
+    // optimization here, let the renderer do it (perhaps it does fancy stuff with the margins).
+
+        LayoutInfo lineInfo = fLineTable[line];
+
+        result = lineInfo.pixelToOffset(fLTCurTextLen, result, fLineDim, lineX, lineY);
+
+        if (infiniteMode &&
+            (result.fOffset > lineInfo.getCharStart(fLTCurTextLen)) &&
+            isParaBreakBefore(result.fOffset) &&
+            (anchor == null || anchor.fOffset == result.fOffset - 1)) {
+
+            result.setOffset(result.fOffset - 1, TextOffset.AFTER_OFFSET);
+        }
+
+        return result;
+    }
+
+    /**
+    * Given a screen location p, return the offset of the character in the text nearest to p.
+    */
+    public synchronized TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        int fillD;
+
+        if (fHLine)
+            fillD = py - origin.y;
+        else
+            fillD = px - origin.x;
+
+        if (!fFillInc)
+            fillD = -fillD;
+
+        if (fillD < 0) {
+            result.setOffset(0, TextOffset.AFTER_OFFSET);
+            return result;
+        }
+
+        formatToHeight(fillD);
+
+        if (fillD >= fPixHeight) {
+            boolean bias = fLTCurTextLen==0? TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            result.setOffset(fLTCurTextLen, bias);
+            return result;
+        }
+
+        int line = findLineAt(fillD); // always a valid line
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;  // upper-left corner of line
+        if (fHLine) {
+            lineX = origin.x;
+            lineY = fFillInc? origin.y + gStart : origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            lineX = fFillInc? origin.x + gStart : origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        return lineDimToOffset(result, line, px - lineX, py - lineY, anchor, infiniteMode);
+    }
+
+    private boolean emptyParagraphAtEndOfText() {
+
+        return fLTCurTextLen > 0 &&
+                isParagraphSeparator(fText.at(fLTCurTextLen-1));
+    }
+
+    /**
+     * Return true if the offset designates a point on the pseudoline following a paragraph
+     * separator at the end of text.  This is true if the offset is the end of text
+     * and the last character in the text is a paragraph separator.
+     */
+    private boolean afterLastParagraph(TextOffset offset)
+    {
+        return offset.fOffset == fLTCurTextLen &&
+            emptyParagraphAtEndOfText();
+    }
+
+    /**
+    * Given an offset, return the Rectangle bounding the caret at the offset.
+    * @param offset an offset into the text
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @return a Rectangle bounding the caret.
+    */
+    public synchronized Rectangle getCaretRect(TextOffset offset, Point origin) {
+
+        Rectangle r = new Rectangle();
+        getCaretRect(r, offset, origin);
+        return r;
+    }
+    
+    private void getCaretRect(Rectangle r, TextOffset offset, Point origin) {
+        
+        checkTimeStamp();
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            int pseudoLineHeight = lastCharHeight();
+            if (fHLine) {
+                int lineY = fFillInc ? origin.y + fPixHeight : origin.y - fPixHeight - pseudoLineHeight;
+                r.setBounds(origin.x, lineY, 0, pseudoLineHeight);
+            }
+            else {
+                int lineX = fFillInc? origin.x + fPixHeight : origin.x - fPixHeight - pseudoLineHeight;
+                r.setBounds(lineX, origin.y, pseudoLineHeight, 0);
+            }
+            return;
+        }
+
+        int line = getValidLineContaining(offset);
+
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        Rectangle bounds = fLineTable[line].caretBounds(fText, fLTCurTextLen, fLineDim, offset.fOffset, lineX, lineY);
+
+        r.setBounds(bounds);
+    }
+
+    /**
+    * Draw the caret(s) associated with the given offset into the given Graphics.
+    * @param g the Graphics to draw into
+    * @param offset the offset in the text for which the caret is drawn
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @param strongCaretColor the color of the strong caret
+    * @param weakCaretColor the color of the weak caret (if any)
+    */
+    public synchronized void drawCaret(Graphics g,
+                                       TextOffset offset,
+                                       Point origin,
+                                       Color strongCaretColor,
+                                       Color weakCaretColor) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        formatToOffset(offset);
+
+        LayoutInfo line;
+        int gStart;
+        
+        if (afterLastParagraph(offset)) {
+            gStart = fPixHeight;
+            line = pseudoLineInfo(null, offset.fOffset);
+        }
+        else {
+            int lineIndex = getValidLineContaining(offset);
+            gStart = lineGraphicStartInternal(lineIndex);
+            line = fLineTable[lineIndex];
+        }
+        
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + line.getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + line.getHeight());
+        }
+
+        line.renderCaret(fText, fLTCurTextLen, g2d, fLineDim, lineX, lineY,
+                                offset.fOffset, strongCaretColor, weakCaretColor);
+    }
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1,offset2 offsets into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public synchronized Rectangle getBoundingRect(TextOffset offset1,
+                                                  TextOffset offset2,
+                                                  Point origin,
+                                                  boolean tight) {
+
+        Rectangle r = new Rectangle();
+        getBoundingRect(r, offset1, offset2, origin, tight);
+        return r;
+    }
+
+/*
+    Transform r from "text" coordinates to "screen" coordinates.
+*/
+
+    private void intlRect(Point origin, Rectangle r) {
+
+        int lineOrig, fillOrig;
+
+        if (fHLine) {
+            lineOrig = origin.x;
+            fillOrig = origin.y;
+        }
+        else {
+            lineOrig = origin.y;
+            fillOrig = origin.x;
+        }
+
+        if (fLineInc)
+            r.x += lineOrig;
+        else
+            r.x = lineOrig - (r.x + r.width);
+
+        if (fFillInc)
+            r.y += fillOrig;
+        else
+            r.y = fillOrig - (r.y + r.height);
+
+
+        if (!fHLine) {
+            int t = r.x;
+            r.x = r.y;
+            r.y = t;
+            t = r.width;
+            r.width = r.height;
+            r.height = t;
+        }
+    }
+
+
+    public synchronized void getBoundingRect(Rectangle r, 
+                                             TextOffset offset1,
+                                             TextOffset offset2,
+                                             Point origin,
+                                             boolean tight)
+    {
+        checkTimeStamp();
+        if (offset1.equals(offset2)) {
+            getCaretRect(r, offset1, origin);
+            return;
+        }
+        if (offset1.greaterThan(offset2)) {
+            TextOffset t; t = offset1; offset1 = offset2; offset2 = t;
+        }
+
+        formatToOffset(offset2);
+
+        int line = getValidLineContaining(offset1);
+        r.y = lineGraphicStartInternal(line);
+        
+        int gLimit;
+        boolean sameLine = false;
+                
+        if (afterLastParagraph(offset2))
+            gLimit = fPixHeight + lastCharHeight();
+        else {
+            int line2 = getValidLineContaining(offset2);
+            gLimit = lineGraphicLimitInternal(line2);
+            sameLine = (line == line2);
+        }
+
+        r.height = gLimit - r.y;
+
+        if (sameLine && tight==TIGHT) {
+            Rectangle rt = new Rectangle();
+            getCaretRect(rt, offset1, origin);
+            r.setBounds(rt);
+            if (!offset1.equals(offset2)) {
+                getCaretRect(rt, offset2, origin);
+                r.add(rt);
+            }
+        }
+        else {
+            r.x = fMinX;
+            r.width = fMaxX - fMinX;
+            intlRect(origin, r);
+        }
+
+        // System.out.print("gbr: " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+
+        // System.out.println(" --> " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset in direction dir.
+    * For arrow keys.
+    * @param result the offset to modify and return.  may be null, if so a new offset is allocated, modified, and returned.
+    * @param previousOffset the insertion offset prior to the arrow key press.
+    * @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction and previous offset.
+    */
+    public synchronized TextOffset findInsertionOffset(TextOffset result, TextOffset prevOffset, short dir)
+    {
+        return findNewInsertionOffset(result, prevOffset, prevOffset, dir);
+    }
+
+    /**
+     * Transform key direction:  after this step, "left" means previous glyph, "right" means next glyph,
+     *"up" means previous line, "down" means next line
+     */
+    private short remapArrowKey(short dir) {
+
+        if (!fLineInc) {
+            if (dir == eLeft)
+                dir = eRight;
+            else if (dir == eRight)
+                dir = eLeft;
+        }
+
+        if (!fFillInc) {
+            if (dir == eUp)
+                dir = eDown;
+            else if (dir == eDown)
+                dir = eUp;
+        }
+
+        if (!fHLine) {
+            if (dir == eLeft)
+                dir = eUp;
+            else if (dir == eRight)
+                dir = eDown;
+            else if (dir == eUp)
+                dir = eLeft;
+            else if (dir == eDown)
+                dir = eRight;
+        }
+
+        return dir;
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+    * For arrow keys.  Use this for "smart" up/down keys.
+    * @param result the offset to modify and return.  May be null, if so a new offset is allocated, modified, and returned.
+    * @param origOffset the offset at which an up-down arrow key sequence began.
+    * @param prevOffset the insertion offset prior to the arrow key press
+    * @param dir the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction, original offset, and previous offset.
+    */
+    public synchronized TextOffset findNewInsertionOffset(TextOffset result, TextOffset origOffset, TextOffset prevOffset, short dir)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        dir = remapArrowKey(dir);
+
+        // assume that text at origOffset and prevOffset has already been formatted
+
+        if (dir == eLeft || dir == eRight) {
+            formatToOffset(prevOffset);
+            int line = getValidLineContaining(prevOffset);
+
+            result.fPlacement = TextOffset.AFTER_OFFSET;
+            result.fOffset = fLineTable[line].getNextOffset(fLTCurTextLen, prevOffset.fOffset, dir);
+            if (result.fOffset < 0) {
+                result.fOffset = 0;
+            }
+            else if (result.fOffset >= fLTCurTextLen) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+        }
+        else {
+            int distOnLine;
+
+            if (afterLastParagraph(origOffset))
+                distOnLine = 0;
+            else {
+                int line = getValidLineContaining(origOffset);
+
+                distOnLine = fLineTable[line].strongCaretBaselinePosition(fLTCurTextLen, fLineDim, origOffset.fOffset);
+            }
+
+            // get prevOffset's line
+            int line;
+            if (afterLastParagraph(prevOffset))
+                line = lastLine() + 1;
+            else {
+                line = getLineContaining(prevOffset);
+
+                if (dir == eDown && (line == kAfterLastLine || line == lastLine())
+                        && (lastLineCharStop() < fText.length())) {
+                    shiftTableTo(lastLine());
+                    formatText(lastLineCharStop(), 1, Integer.MAX_VALUE, true);
+                    line = getLineContaining(prevOffset);
+                }
+
+                if (line == kBeforeFirstLine)
+                    line = 0;
+                else if (line == kAfterLastLine)
+                    line = lastLine();
+            }
+
+            if (dir == eUp)
+                line--;
+            else if (dir == eDown)
+                line++;
+            else
+                throw new IllegalArgumentException("Debug: Illegal direction parameter in findNewInsertionOffset");
+
+            if (line < 0) {
+                //result.setOffset(0, TextOffset.AFTER_OFFSET);
+                result.assign(prevOffset);
+            }
+            else if (line > lastLine()) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+            else {
+                if (fLineTable[line] == null)
+                    line = (dir == eUp)? fLTPosEnd : fLTNegStart;
+
+                // anchor is null since we never want a position after newline.  If we used the real anchor,
+                // we might not ignore the newline even though infiniteMode is true.
+                lineDimToOffset(result, line, distOnLine, 0, null, true);
+            }
+        }
+
+        // System.out.println("fnio prev: " + prevOffset + ", new: " + result);
+
+        return result;
+    }
+
+    public synchronized void stopBackgroundFormatting()
+    {
+        checkTimeStamp();
+        fBgFormatAllowed = false;
+    }
+
+    private synchronized void enableBGFormat()
+    {
+        try {
+            fBgFormatAllowed = true;
+            notify();
+        }
+        catch (IllegalMonitorStateException e) {
+        }
+    }
+
+    private int lineIndexToNumber(int lineIndex) {
+
+        if (lineIndex <= fLTPosEnd) {
+            return lineIndex;
+        }
+        else {
+            return lineIndex - (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private int lineNumberToIndex(int lineNumber) {
+
+        if (lineNumber <= fLTPosEnd) {
+            return lineNumber;
+        }
+        else {
+            return lineNumber + (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private void formatToLineNumber(int lineNumber) {
+
+        while (lastLineCharStop() < fLTCurTextLen &&
+                lineNumber >= lineIndexToNumber(fLTSize)) {
+            // could be smarter and choose larger amounts for
+            // larger lines, but probably not worth the effort
+            formatToHeight(fPixHeight + kPixIncrement);
+        }
+    }
+
+    private static final boolean STRICT = true;
+    private static final boolean LENIENT = false;
+
+    /**
+     * Insure that at least lineNumber lines exist, doing
+     * extra formatting if necessary.
+     * Throws exception if lineNumber is not valid.
+     * @param strict if STRICT, only lines [0...maxLineNumber()]
+     *        are permitted.  If LENIENT, maxLineNumber()+1 is
+     *        the greatest valid value.
+     */
+    private void validateLineNumber(int lineNumber, boolean strict) {
+
+        formatToLineNumber(lineNumber);
+
+        int maxNumber = lineIndexToNumber(fLTSize);
+        if (strict == STRICT) {
+            maxNumber -= 1;
+        }
+
+        if (lineNumber > maxNumber+1 ||
+                (lineNumber == maxNumber+1 && !emptyParagraphAtEndOfText())) {
+            throw new IllegalArgumentException("Invalid line number: " + lineNumber);
+        }
+    }
+
+    public synchronized int getLineCount() {
+
+        // format all text:
+        formatToHeight(Integer.MAX_VALUE);
+
+        int lineCount = lineIndexToNumber(fLTSize);
+
+        if (emptyParagraphAtEndOfText()) {
+            lineCount += 1;
+        }
+
+        return lineCount;
+    }
+    
+    public synchronized int lineContaining(int charIndex) {
+        
+        formatToOffset(charIndex, TextOffset.AFTER_OFFSET);
+        
+        boolean placement = TextOffset.AFTER_OFFSET;
+        if (charIndex == fLTCurTextLen && charIndex > 0) {
+            placement = emptyParagraphAtEndOfText()? TextOffset.AFTER_OFFSET :
+                                                     TextOffset.BEFORE_OFFSET;
+        }
+        
+        return lineContaining(charIndex, placement);
+    }
+
+    public synchronized int lineContaining(TextOffset offset) {
+
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            return lineIndexToNumber(fLTSize);
+        }
+        
+        return lineContaining(offset.fOffset, offset.fPlacement);
+    }
+    
+    private int lineContaining(int off, boolean placement) {
+        
+        int line = off==0? 0 : getLineContaining(off, placement);
+        
+        if (line == kAfterLastLine) {
+            line = fLTSize;
+        }
+        else if (line == kBeforeFirstLine) {
+            throw new Error("lineContaining got invalid result from getLineContaining().");
+        }
+
+        return lineIndexToNumber(line);
+    }
+
+    public synchronized int lineRangeLow(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharStartInternal(index);
+        }
+    }
+
+    public synchronized int lineRangeLimit(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharLimitInternal(index);
+        }
+    }
+
+    /**
+     * Return the number of the line at the given graphic height.
+     * If height is greater than full height, return line count.
+     */
+    public synchronized int lineAtHeight(int height) {
+
+        if (height >= fPixHeight) {
+
+            int line = getLineCount();
+            if (height < fFullPixHeight) {
+                line -= 1;
+            }
+            return line;
+        }
+        else if (height < 0) {
+            return -1;
+        }
+        else {
+            return lineIndexToNumber(findLineAt(height));
+        }
+    }
+
+    public synchronized int lineGraphicStart(int lineNumber) {
+
+        checkTimeStamp();
+        validateLineNumber(lineNumber, LENIENT);
+
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index < fLTSize) {
+            return lineGraphicStartInternal(index);
+        }
+        else {
+            if (index == fLTSize+1) {
+                return fFullPixHeight;
+            }
+            else {
+                return fPixHeight;
+            }
+        }
+    }
+
+    public synchronized boolean lineIsLeftToRight(int lineNumber) {
+        
+        validateLineNumber(lineNumber, STRICT);
+        
+        int index = lineNumberToIndex(lineNumber);
+        
+        if (index < fLTSize) {
+            return fLineTable[index].isLeftToRight();
+        }
+        else {
+            AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen);
+            return !TextAttribute.RUN_DIRECTION_RTL.equals(st.get(TextAttribute.RUN_DIRECTION));
+        }
+    }
+
+    /**
+    * Number of pixels by which to advance formatting in the background.
+    */
+    private static final int kPixIncrement = 100;
+
+    /**
+    * Time to sleep between background formatting operations.
+    */
+    private static final int kInterval = 100;
+
+    /**
+    * Perform periodic background formatting.
+    */
+    public void run()
+    {
+        while (true) {
+            synchronized (this) {
+                while(!fBgFormatAllowed) {
+                    try {
+                        wait();
+                    } catch(InterruptedException e) {
+                    }
+                }
+
+                checkTimeStamp();                
+                formatToHeight(fPixHeight + kPixIncrement);
+
+                if (lastLineCharStop() == fLTCurTextLen) {
+                    stopBackgroundFormatting();
+                }
+            }
+
+            try {
+                Thread.sleep(kInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+    private ParagraphRenderer getRendererFor(AttributeMap s) {
+    
+        // Note:  eventually we could let clients put their own renderers
+        // on the text.
+        BidiParagraphRenderer renderer = (BidiParagraphRenderer) fRendererCache.get(s);
+        if (renderer == null) {
+            renderer = new BidiParagraphRenderer(fDefaultValues.addAttributes(s), fDefaultCharMetric);
+            fRendererCache.put(s, renderer);
+        }
+        return renderer;
+    }
+
+}
diff --git a/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
new file mode 100644
index 0000000..244637e
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
@@ -0,0 +1,1147 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Shape;
+
+import java.util.Vector;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.TextHitInfo;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Rectangle2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.TextHitInfo;
+
+import com.ibm.richtext.textlayout.AffineTransform;
+import com.ibm.richtext.textlayout.GeneralPath;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+final class BidiParagraphRenderer extends ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class BidiSegment {
+        TextLayout fLayout;
+        Rectangle2D.Float fBounds;
+        int fDistanceFromLeadingMargin;
+    }
+
+    private final class BidiLayoutInfo extends LayoutInfo
+    {                    
+        int fCharLength;      // number of characters on line (was fLength)
+        int fAscent;
+        int fDescent;
+        int fLeading;
+        int fVisibleAdvance;  // distance along line direction ie width
+        int fTotalAdvance;    // distance along line direction including trailing whitespace
+
+        int fLeadingMargin;   // screen distance from leading margin
+
+        boolean fLeftToRight; // true iff the orientation is left-to-right
+
+        final Vector fSegments = new Vector(); // segments to render, in logical order
+
+        public int getCharLength() {
+            return fCharLength;
+        }
+
+        public int getAscent() {
+            return fAscent;
+        }
+
+        public int getDescent() {
+            return fDescent;
+        }
+
+        public int getLeading() {
+            return fLeading;
+        }
+
+        public int getVisibleAdvance() {
+            return fVisibleAdvance;
+        }
+
+        public int getTotalAdvance() {
+            return fTotalAdvance;
+        }
+
+        public int getLeadingMargin() {
+            return fLeadingMargin;
+        }
+
+        public boolean isLeftToRight() {
+            return fLeftToRight;
+        }
+
+        public int getHeight() {
+            return fAscent + fDescent + fLeading;
+        }
+
+        public String toString()
+        {
+            return "LayoutInfo(charStart: " + getCharStart(0) +
+                ", fCharLength: " + fCharLength +
+                ", fAscent: " + fAscent +
+                ", fDescent: " + fDescent +
+                ", fVisibleAdvance: " + fVisibleAdvance +
+                ", fTotalAdvance: " + fTotalAdvance +
+                ", fLeadingMargin: " + fLeadingMargin +
+                ")";
+        }
+
+        BidiParagraphRenderer fRenderer;
+
+        // just delegate to renderer for now
+
+        public void renderWithHighlight(int lengthBasis,
+                                        Graphics2D g,
+                                        int lineBound,
+                                        int x,
+                                        int y,
+                                        TextOffset selStart,
+                                        TextOffset selStop,
+                                        Color highlightColor) {
+
+            fRenderer.renderWithHighlight(this,
+                                          lengthBasis,
+                                          g,
+                                          lineBound,
+                                          x,
+                                          y,
+                                          selStart,
+                                          selStop,
+                                          highlightColor);
+        }
+
+        public void render(int lengthBasis,
+                           Graphics2D g,
+                           int lineBound,
+                           int x,
+                           int y) {
+            fRenderer.render(this, lengthBasis, g, lineBound, x, y);
+        }
+
+        public void renderCaret(MConstText text,
+                                int lengthBasis,
+                                Graphics2D g,
+                                int lineBound,
+                                int x,
+                                int y,
+                                int charOffset,
+                                Color strongCaretColor,
+                                Color weakCaretColor) {
+            fRenderer.renderCaret(this, text, lengthBasis, g, lineBound, x, y, charOffset,
+                                        strongCaretColor, weakCaretColor);
+        }
+
+        public TextOffset pixelToOffset(int lengthBasis,
+                                        TextOffset result,
+                                        int lineBound,
+                                        int x,
+                                        int y) {
+            return fRenderer.pixelToOffset(this, lengthBasis, result, lineBound, x, y);
+        }
+
+        public Rectangle caretBounds(MConstText text,
+                                     int lengthBasis,
+                                     int lineBound,
+                                     int charOffset,
+                                     int x,
+                                     int y) {
+            return fRenderer.caretBounds(this, text, lengthBasis, lineBound, charOffset, x, y);
+        }
+        
+        public int strongCaretBaselinePosition(int lengthBasis,
+                                               int lineBound,
+                                               int charOffset) {
+
+            return fRenderer.strongCaretBaselinePosition(this, lengthBasis, lineBound, charOffset);
+        }
+
+        public int getNextOffset(int lengthBasis,
+                                 int charOffset,
+                                 short dir) {
+
+            return fRenderer.getNextOffset(this, lengthBasis, charOffset, dir);
+        }
+    }
+
+    //private static final int FLUSH_LEADING = TextAttribute.FLUSH_LEADING.intValue();
+    private static final int FLUSH_CENTER = TextAttribute.FLUSH_CENTER.intValue();
+    private static final int FLUSH_TRAILING = TextAttribute.FLUSH_TRAILING.intValue();
+    private static final int FULLY_JUSTIFIED = TextAttribute.FULLY_JUSTIFIED.intValue();
+
+    private AttributeMap cacheStyle = null;
+
+    private float fLeadingMargin;
+    private float fTrailingMargin;
+    private float fFirstLineIndent;
+    private float fMinLineSpacing;
+    private float fExtraLineSpacing;
+    
+    private int fFlush = -1;
+    private MTabRuler fTabRuler;
+    
+    private boolean fLtrDefault;
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    BidiParagraphRenderer(AttributeMap pStyle, DefaultCharacterMetric defaultCharMetric) {
+
+        fDefaultCharMetric = defaultCharMetric;
+        initRenderer(pStyle);
+    }
+
+    private float getFloatValue(Object key, AttributeMap style) {
+        return ((Float)style.get(key)).floatValue();
+    }
+    
+    private int getIntValue(Object key, AttributeMap style) {
+        return ((Integer)style.get(key)).intValue();
+    }
+    
+    /**
+     * NOTE:  it is illegal to initialize a StandardParagraphRenderer for any style
+     * other than the one it was created with.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+
+        if (cacheStyle == null) {
+
+            fLeadingMargin = getFloatValue(TextAttribute.LEADING_MARGIN, pStyle);
+            fTrailingMargin = getFloatValue(TextAttribute.TRAILING_MARGIN, pStyle);
+            fFirstLineIndent = getFloatValue(TextAttribute.FIRST_LINE_INDENT, pStyle);
+            fMinLineSpacing = getFloatValue(TextAttribute.MIN_LINE_SPACING, pStyle);
+            fExtraLineSpacing = getFloatValue(TextAttribute.EXTRA_LINE_SPACING, pStyle);
+
+            fFlush = getIntValue(TextAttribute.LINE_FLUSH, pStyle);
+
+            fTabRuler = (MTabRuler) pStyle.get(TextAttribute.TAB_RULER);
+            
+            Object runDir = pStyle.get(TextAttribute.RUN_DIRECTION);
+            fLtrDefault = !TextAttribute.RUN_DIRECTION_RTL.equals(runDir);
+
+            cacheStyle = pStyle;
+        }
+        else if (pStyle != cacheStyle) {
+            if (!pStyle.equals(cacheStyle)) {
+                throw new Error("Attempt to share BidiParagraphRenderer between styles!");
+            }
+            else {
+                cacheStyle = pStyle;
+            }
+        }
+    }
+
+    private static boolean isTab(char ch) {
+        return ch == '\t';
+    }
+
+    /**
+     * Fill in info with the next line.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     */
+    // Usually totalFormatWidth and lineBound will be the same.
+    // totalFormatWidth is used for wrapping, but lineBound is
+    // for flushing.  These may be different for unwrapped text,
+    // for example.
+    public LayoutInfo layout(MConstText text,
+                             LayoutInfo layoutToReuse,
+                             LineBreakMeasurer measurer,
+                             FontRenderContext frc,
+                             int paragraphStart,
+                             int paragraphLimit,
+                             int totalFormatWidth,
+                             int lineBound) {
+
+        if ((measurer==null) != (paragraphStart==paragraphLimit)) {
+            throw new IllegalArgumentException(
+                    "measurer, paragraphStart, paragraphLimit are wrong.");
+        }
+        BidiLayoutInfo line = null;
+
+        try {
+            line = (BidiLayoutInfo) layoutToReuse;
+        }
+        catch(ClassCastException e) {
+        }
+
+        if (line == null) {
+            line = new BidiLayoutInfo();
+        }
+
+        line.fRenderer = this;
+
+        final int lineCharStart = measurer==null? paragraphStart : measurer.getPosition();
+        line.setCharStart(lineCharStart);
+
+        final int lineIndent = (lineCharStart==paragraphStart)? (int) fFirstLineIndent : 0;
+
+        int formatWidth = totalFormatWidth - (int) (fLeadingMargin + fTrailingMargin);
+        computeLineMetrics(text, line, measurer, frc,
+                            paragraphStart, paragraphLimit, formatWidth, lineIndent);
+
+        // position the line according to the line flush
+        if (fFlush == FLUSH_TRAILING || fFlush == FLUSH_CENTER) {
+            int lineArea = lineBound - (int) (fLeadingMargin + fTrailingMargin);
+            int advanceDifference = lineArea - line.fVisibleAdvance;
+
+            if (fFlush == FLUSH_TRAILING) {
+                line.fLeadingMargin = ((int) (fLeadingMargin)) + advanceDifference;
+            }
+            else if (fFlush == FLUSH_CENTER) {
+                line.fLeadingMargin = (int) (fLeadingMargin + advanceDifference/2);
+            }
+        }
+        else {
+            line.fLeadingMargin = (int) fLeadingMargin;
+        }
+
+        return line;
+    }
+
+    /**
+     * Fill in the following fields in line:
+     * fCharLength, fAscent, fDescent, fLeading, fVisibleAdvance,
+     * fTotalAdvance.
+     * Uses: line.fLeadingMargin
+     * @param formatWidth the width to fit the line into.
+     */
+    private void computeLineMetrics(MConstText text,
+                                    BidiLayoutInfo line,
+                                    LineBreakMeasurer measurer,
+                                    FontRenderContext frc,
+                                    final int paragraphStart,
+                                    final int paragraphLimit,
+                                    final int formatWidth,
+                                    final int lineIndent) {
+
+        int segmentCount = 0;
+        /* variable not used boolean firstLine = measurer==null ||
+                            measurer.getPosition() == paragraphStart; */
+
+        if (measurer != null) {
+            computeSegments(text, line, measurer, paragraphLimit, formatWidth, lineIndent);
+
+            // iterate through segments and accumulate ascent, descent,
+            // leading, char length
+            float ascent = 0;
+            float descent = 0;
+            float descentPlusLeading = 0;
+
+            segmentCount = line.fSegments.size();
+            for (int i=0; i < segmentCount; i++) {
+                TextLayout layout = ((BidiSegment)line.fSegments.elementAt(i)).fLayout;
+                ascent = Math.max(ascent, layout.getAscent());
+                float segDescent = layout.getDescent();
+                descent = Math.max(descent, segDescent);
+                descentPlusLeading = Math.max(descentPlusLeading, segDescent+layout.getLeading());
+                line.fCharLength += layout.getCharacterCount();
+            }
+
+            line.fAscent = (int) Math.ceil(ascent);
+            line.fDescent = (int) Math.ceil(descent);
+            line.fLeading = (int) Math.ceil(descentPlusLeading) - line.fDescent;
+        }
+        else {
+            line.fLeftToRight = fLtrDefault;
+            line.fSegments.removeAllElements();
+
+            line.fCharLength = 0;
+
+            AttributeMap style = text.characterStyleAt(paragraphStart);
+            DefaultCharacterMetric.Metric cm = fDefaultCharMetric.getMetricForStyle(style);
+            line.fAscent = cm.getAscent();
+            line.fDescent = cm.getDescent();
+            line.fLeading = cm.getLeading();
+
+            line.fVisibleAdvance = line.fTotalAdvance = 0;
+        }
+
+        if (fExtraLineSpacing != 0) {
+            line.fAscent += (int) Math.ceil(fExtraLineSpacing);
+        }
+
+        if (fMinLineSpacing != 0){
+            int height = line.getHeight();
+            if (height < fMinLineSpacing) {
+                line.fAscent += Math.ceil(fMinLineSpacing - height);
+            }
+        }
+
+        final int lineNaturalAdvance = line.fTotalAdvance;
+
+        line.fTotalAdvance += lineIndent;
+        line.fVisibleAdvance += lineIndent;
+
+        if (measurer != null) {
+            // Now fill in fBounds field of BidiSegments.  fBounds should tile
+            // the line.
+            final float lineHeight = line.getHeight();
+
+            for (int i=1; i < segmentCount; i++) {
+
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(i-1);
+                BidiSegment nextSegment = (BidiSegment) line.fSegments.elementAt(i);
+
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = nextSegment.fDistanceFromLeadingMargin -
+                                currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin;
+                    origin -= nextSegment.fDistanceFromLeadingMargin;
+                    origin += (float) Math.ceil(nextSegment.fLayout.getAdvance());
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+
+            // set last segment's bounds
+            {
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(segmentCount-1);
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = lineNaturalAdvance - currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin - lineNaturalAdvance;
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+        }
+    }
+
+    /**
+     * Fill in fSegments, fLeftToRight.  measurer must not be null
+     */
+    private void computeSegments(MConstText text,
+                                 BidiLayoutInfo line,
+                                 LineBreakMeasurer measurer,
+                                 final int paragraphLimit,
+                                 final int formatWidth,
+                                 final int lineIndent) {
+
+        // Note on justification:  only the last segment of a line is
+        // justified.  
+        // Also, if a line ends in a tab it will not be justified.
+        // This behavior is consistent with other word processors
+        // I tried (MS Word and Lotus Word Pro).
+        
+        line.fSegments.removeAllElements();
+        line.fCharLength = 0;
+
+        TabStop currentTabStop = new TabStop((int)fLeadingMargin+lineIndent, TabStop.kLeading);
+
+        int segmentLimit = measurer.getPosition();
+        boolean firstSegment = true;
+
+        int advanceFromLeadingMargin = lineIndent;
+
+        boolean computeSegs = true;
+        
+        computeTabbedSegments: do {
+
+            // compute sementLimit:
+            if (segmentLimit <= measurer.getPosition()) {
+                while (segmentLimit < paragraphLimit) {
+                    if (isTab(text.at(segmentLimit++))) {
+                        break;
+                    }
+                }
+            }
+
+            // NOTE:  adjust available width for center tab!!!
+            //System.out.println("Format width: " + (formatWidth-advanceFromLeadingMargin) +
+            //                   ";  segmentLimit: " + segmentLimit);
+
+            int wrappingWidth = Math.max(formatWidth-advanceFromLeadingMargin, 0);
+            TextLayout layout = null;
+            if (firstSegment || wrappingWidth > 0 || segmentLimit > measurer.getPosition()+1) {
+                layout = measurer.nextLayout(wrappingWidth, segmentLimit, !firstSegment);
+            }
+
+            if (layout == null) {
+                if (firstSegment) {
+                    // I doubt this would happen, but check anyway
+                    throw new Error("First layout is null!");
+                }
+                break computeTabbedSegments;
+            }
+            
+            final int measurerPos = measurer.getPosition();
+            if (measurerPos < segmentLimit) {
+                computeSegs = false;
+                if (fFlush == FULLY_JUSTIFIED) {
+                    layout = layout.getJustifiedLayout(wrappingWidth);
+                }
+            }
+            else {
+                computeSegs = !(measurerPos == paragraphLimit);
+            }
+
+            if (firstSegment) {
+                firstSegment = false;
+                // Have to get ltr off of layout.  Not available from measurer,
+                // unfortunately.
+                line.fLeftToRight = layout.isLeftToRight();
+            }
+
+            BidiSegment segment = new BidiSegment();
+            segment.fLayout = layout;
+            int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+
+            // position layout relative to leading margin, update logicalPositionOnLine
+            
+            int relativeTabPosition = currentTabStop.getPosition()-(int)fLeadingMargin;
+            int logicalPositionOfLayout;
+            switch (currentTabStop.getType()) {
+                case TabStop.kTrailing:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-layoutAdvance,
+                                    advanceFromLeadingMargin);
+                    break;
+                case TabStop.kCenter:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-(layoutAdvance/2),
+                                    advanceFromLeadingMargin);
+                    break;
+                default:  // includes decimal tab right now
+                    logicalPositionOfLayout = relativeTabPosition;
+                    break;
+            }
+
+            // position layout in segment
+            if (line.fLeftToRight) {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout;
+            }
+            else {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout+layoutAdvance;
+            }
+
+            // update advanceFromLeadingMargin
+            advanceFromLeadingMargin = logicalPositionOfLayout + layoutAdvance;
+
+            // add segment to segment Vector
+            line.fSegments.addElement(segment);
+
+            // get next tab
+            currentTabStop = fTabRuler.nextTab((int)fLeadingMargin+advanceFromLeadingMargin);
+            if (currentTabStop.getType() == TabStop.kLeading ||
+                            currentTabStop.getType() == TabStop.kAuto)  {
+                advanceFromLeadingMargin = currentTabStop.getPosition();
+                //System.out.println("Advance from leading margin:" + advanceFromLeadingMargin);
+
+            }
+            else {
+               //System.out.println("Non-leading tab, type=" + currentTabStop.getType());
+            }
+
+        } while (computeSegs);
+
+        // Now compute fTotalAdvance, fVisibleAdvance.  These metrics may be affected
+        // by a trailing tab.
+
+        {
+            BidiSegment lastSegment = (BidiSegment) line.fSegments.lastElement();
+            TextLayout lastLayout = lastSegment.fLayout;
+
+            if (line.fLeftToRight) {
+                line.fTotalAdvance = (int) Math.ceil(lastLayout.getAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = (int) Math.ceil(lastLayout.getVisibleAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+            }
+            else {
+                line.fTotalAdvance = lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = lastSegment.fDistanceFromLeadingMargin -
+                                        (int) Math.ceil(lastLayout.getAdvance() -
+                                            lastLayout.getVisibleAdvance());
+            }
+
+            if (isTab(text.at(measurer.getPosition()-1))) {
+                line.fTotalAdvance = Math.max(line.fTotalAdvance,
+                                                currentTabStop.getPosition());
+            }
+        }
+    }
+
+    /**
+     * Return the highlight shape for the given character offsets.
+     * The Shape returned is relative to the leftmost point on the
+     * baseline of line.
+     */
+    private Shape getHighlightShape(BidiLayoutInfo line,
+                                    int lengthBasis,
+                                    int lineBound,
+                                    int hlStart,
+                                    int hlLimit) {
+
+        if (hlStart >= hlLimit) {
+            throw new IllegalArgumentException("Highlight range length is not positive.");
+        }
+
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int segmentCount = line.fSegments.size();
+
+        Shape rval = null;
+        GeneralPath highlightPath = null;
+
+        int currentLayoutStart = line.getCharStart(lengthBasis);
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            TextLayout layout = segment.fLayout;
+            int charCount = layout.getCharacterCount();
+            int currentLayoutLimit = currentLayoutStart + charCount;
+            boolean rangesIntersect;
+            if (hlStart <= currentLayoutStart) {
+                rangesIntersect = hlLimit > currentLayoutStart;
+            }
+            else {
+                rangesIntersect = hlStart < currentLayoutLimit;
+            }
+
+            if (rangesIntersect) {
+
+                Shape currentHl = layout.getLogicalHighlightShape(
+                                        Math.max(hlStart-currentLayoutStart, 0),
+                                        Math.min(hlLimit-currentLayoutStart, charCount),
+                                        segment.fBounds);
+
+                float xTranslate;
+                if (line.fLeftToRight) {
+                    xTranslate = leadingMargin +
+                                 segment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    xTranslate = leadingMargin -
+                                 segment.fDistanceFromLeadingMargin;
+                }
+
+                if (xTranslate != 0) {
+                    AffineTransform xform =
+                        AffineTransform.getTranslateInstance(xTranslate, 0);
+                    currentHl = xform.createTransformedShape(currentHl);
+                }
+
+                if (rval == null) {
+                    rval = currentHl;
+                }
+                else {
+                    if (highlightPath == null) {
+                        highlightPath = new GeneralPath();
+                        highlightPath.append(rval, false);
+                        rval = highlightPath;
+                    }
+                    highlightPath.append(currentHl, false);
+                }
+            }
+            currentLayoutStart = currentLayoutLimit;
+        }
+
+        return rval;
+    }
+
+    private void renderWithHighlight(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     Graphics2D g,
+                                     int lineBound,
+                                     int x,
+                                     int y,
+                                     TextOffset selStart,
+                                     TextOffset selStop,
+                                     Color highlightColor) {
+
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        if (selStart != null && selStop != null && !selStart.equals(selStop) &&
+                line.fCharLength != 0 &&
+                selStart.fOffset < lineCharStart + line.fCharLength &&
+                selStop.fOffset > lineCharStart) {
+
+            Shape highlight = getHighlightShape(line, lengthBasis, lineBound, selStart.fOffset, selStop.fOffset);
+            if (highlight != null) {
+                Graphics2D hl = (Graphics2D) g.create();
+                hl.setColor(highlightColor);
+                hl.translate(x, y + line.fAscent);
+                hl.fill(highlight);
+            }
+        }
+
+        render(line, lengthBasis, g, lineBound, x, y);
+    }
+
+    /**
+     * Draw the line into the graphics.  (x, y) is the upper-left corner
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to (x + lineBound).
+     */
+    private void render(BidiLayoutInfo line,
+                        int lengthBasis,
+                        Graphics2D g,
+                        int lineBound,
+                        int x,
+                        int y) {
+
+        final int leadingMargin = (line.fLeftToRight)?
+                x + line.fLeadingMargin : x + lineBound - line.fLeadingMargin;
+        final int baseline = y + line.fAscent;
+        final int segmentCount = line.fSegments.size();
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+
+            float drawX;
+            if (line.fLeftToRight) {
+                drawX = leadingMargin + segment.fDistanceFromLeadingMargin;
+            }
+            else {
+                drawX = leadingMargin - segment.fDistanceFromLeadingMargin;
+            }
+
+            segment.fLayout.draw(g, drawX, baseline);
+        }
+    }
+
+    private TextOffset hitTestSegment(TextOffset result,
+                                      int segmentCharStart,
+                                      BidiSegment segment,
+                                      int xInSegment,
+                                      int yInSegment) {
+
+        final TextLayout layout = segment.fLayout;
+        final int charCount = layout.getCharacterCount();
+        final int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+        Rectangle2D bounds = segment.fBounds;
+
+        final boolean ltr = layout.isLeftToRight();
+
+        if (ltr && (xInSegment >= layoutAdvance) || !ltr && (xInSegment <= 0)) {
+
+            // pretend the extra space at the end of the line is a
+            // tab and 'hit-test' it.
+            double tabCenter;
+            if (ltr) {
+                tabCenter = (layoutAdvance+bounds.getMaxX()) / 2;
+            }
+            else {
+                tabCenter = bounds.getX() / 2;
+            }
+
+            if ((xInSegment >= tabCenter) == ltr) {
+                result.fOffset = charCount;
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fOffset = charCount-1;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+        }
+        else {
+            TextHitInfo info = layout.hitTestChar(xInSegment, yInSegment, segment.fBounds);
+            result.fOffset = info.getInsertionIndex();
+            if (result.fOffset == 0) {
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+            else if (result.fOffset == charCount) {
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fPlacement = info.isLeadingEdge()?
+                        TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            }
+        }
+
+        result.fOffset += segmentCharStart;
+        return result;
+    }
+
+    /**
+     * Return the offset at the point (x, y).  (x, y) is relative to the top-left
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to lineBound.
+     */
+    private TextOffset pixelToOffset(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     TextOffset result,
+                                     int lineBound,
+                                     int x,
+                                     int y) {
+
+        if (result == null) {
+            result = new TextOffset();
+        }
+
+        final int yInSegment = y - line.fAscent;
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        // first see if point is before leading edge of line
+        final int segmentCount = line.fSegments.size();
+        {
+            int segLeadingMargin = leadingMargin;
+            if (segmentCount > 0) {
+                BidiSegment firstSeg = (BidiSegment) line.fSegments.elementAt(0);
+                if (line.fLeftToRight) {
+                    segLeadingMargin += firstSeg.fDistanceFromLeadingMargin;
+                }
+                else {
+                    segLeadingMargin -= firstSeg.fDistanceFromLeadingMargin;
+                    segLeadingMargin += (float) firstSeg.fBounds.getMaxX();
+                }
+            }
+            if (line.fLeftToRight == (x <= segLeadingMargin)) {
+                result.fOffset = lineCharStart;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+                return result;
+            }
+        }
+
+        int segmentCharStart = lineCharStart;
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            int segmentOrigin = line.fLeftToRight?
+                            leadingMargin+segment.fDistanceFromLeadingMargin :
+                            leadingMargin-segment.fDistanceFromLeadingMargin;
+            int xInSegment = x - segmentOrigin;
+            if (line.fLeftToRight) {
+                if (segment.fBounds.getMaxX() > xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            else {
+                if (segment.fBounds.getX() < xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            segmentCharStart += segment.fLayout.getCharacterCount();
+        }
+
+        result.fOffset = lineCharStart + line.fCharLength;
+        result.fPlacement = TextOffset.BEFORE_OFFSET;
+        return result;
+    }
+
+    private void renderCaret(BidiLayoutInfo line,
+                             MConstText text,
+                             int lengthBasis,
+                             Graphics2D g,
+                             int lineBound,
+                             int x,
+                             int y,
+                             final int charOffset,
+                             Color strongCaretColor,
+                             Color weakCaretColor)
+    {
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        /*
+            There are two choices here:
+            1. get carets from a TextLayout and render them, or
+            2. make up a caret ourselves and render it.
+            We want to do 2 when:
+                * there is no text on the line, or
+                * the line ends with a tab and we are drawing the last caret on the line
+            Otherwise, we want 1.
+        */
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Object savedPaint = Graphics2DConversion.getColorState(g);
+
+        try {
+            if (segmentIndex < segmentCount) {
+                TextLayout layout = segment.fLayout;
+                int offsetInLayout = charOffset - currentStart;
+                Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+                g.setColor(strongCaretColor);
+                int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+                int layoutX = line.fLeftToRight?
+                        x + layoutPos : x + lineBound - layoutPos;
+                int layoutY = y + line.fAscent;
+
+                // Translating and then clipping doesn't work.  Try this:
+                Rectangle2D.Float clipRect = new Rectangle2D.Float();
+                clipRect.setRect(segment.fBounds);
+                clipRect.x += layoutX;
+                clipRect.y += layoutY;
+                clipRect.width += 1;
+                clipRect.height -= 1;
+
+                Object savedClip = ClipWorkaround.saveClipState(g);
+                try {
+                    ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                layoutX,
+                                                                layoutY,
+                                                                clipRect,
+                                                                carets[0]);
+                    if (carets[1] != null) {
+                        g.setColor(weakCaretColor);
+                        ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                    layoutX,
+                                                                    layoutY,
+                                                                    clipRect,
+                                                                    carets[1]);
+                    }
+                }
+                finally {
+                    ClipWorkaround.restoreClipState(g, savedClip);
+                }
+            }
+            else {
+                int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+                int endX = line.fLeftToRight? lineEnd : lineBound-lineEnd;
+                endX += x;
+                g.drawLine(endX, y, endX, y+line.getHeight()-1);
+            }
+        }
+        finally {
+            Graphics2DConversion.restoreColorState(g, savedPaint);
+        }
+    }
+
+    private Rectangle caretBounds(BidiLayoutInfo line,
+                                  MConstText text,
+                                  int lengthBasis,
+                                  int lineBound,
+                                  int charOffset,
+                                  int x,
+                                  int y) {
+
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Rectangle r;
+        
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+            r = carets[0].getBounds();
+            if (carets[1] != null) {
+                r.add(carets[1].getBounds());
+            }
+            r.width += 1;
+            
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                r.x += layoutPos;
+            }
+            else {
+                r.x += lineBound - layoutPos;
+            }
+            r.y += line.fAscent;
+        }
+        else {
+            r = new Rectangle();
+            r.height = line.getHeight();
+            r.width = 1;
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                r.x = lineEnd;
+            }
+            else {
+                r.x = lineBound - lineEnd;
+            }
+        }
+        
+        r.translate(x, y);
+        return r;
+    }
+
+    private int strongCaretBaselinePosition(BidiLayoutInfo line,
+                                            int lengthBasis,
+                                            int lineBound,
+                                            int charOffset) {
+
+        final int segmentCount = line.fSegments.size();
+        int currentStart = line.getCharStart(lengthBasis);
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = TextHitInfo.afterOffset(offsetInLayout);
+            hit = TextLayout.DEFAULT_CARET_POLICY.getStrongCaret(hit, hit.getOtherHit(), layout);
+            float[] info = layout.getCaretInfo(hit);
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                return layoutPos + (int) info[0];
+            }
+            else {
+                return lineBound - layoutPos + (int) info[0];
+            }
+        }
+        else {
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                return lineEnd;
+            }
+            else {
+                return lineBound - lineEnd;
+            }
+        }
+    }
+
+    private int getNextOffset(BidiLayoutInfo line,
+                              int lengthBasis,
+                              int charOffset,
+                              short dir) {
+
+        if (dir != MFormatter.eLeft && dir != MFormatter.eRight) {
+            throw new IllegalArgumentException("Invalid direction.");
+        }
+
+        // find segment containing offset:
+        final int segmentCount = line.fSegments.size();
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineCharStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset ||
+                    (segmentIndex == segmentCount-1 && currentEndpoint==charOffset)) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        final boolean logAdvance = (dir==MFormatter.eRight)==(line.fLeftToRight);
+
+        int result;
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = (dir==MFormatter.eLeft)?
+                        layout.getNextLeftHit(offsetInLayout) :
+                        layout.getNextRightHit(offsetInLayout);
+            if (hit == null) {
+                result = logAdvance?
+                    currentStart+layout.getCharacterCount()+1 : currentStart-1;
+            }
+            else {
+                result = hit.getInsertionIndex() + currentStart;
+            }
+        }
+        else {
+            result = logAdvance? lineCharStart + line.fCharLength + 1 :
+                                         lineCharStart - 1;
+        }
+
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/ClipWorkaround.java b/src/com/ibm/richtext/textformat/ClipWorkaround.java
new file mode 100644
index 0000000..0467b32
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ClipWorkaround.java
@@ -0,0 +1,140 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Shape;
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Line2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+/**
+ * This class exists to work around a clipping bug in JDK 1.2.
+ */
+final class ClipWorkaround {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+///*JDK12IMPORTS
+    private static final String excuse =
+        "Sorry, this method is a very limited workaround for a JDK 1.2 bug.";
+//JDK12IMPORTS*/
+    
+    static Object saveClipState(Graphics2D g) {
+///*JDK12IMPORTS
+        return null;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        return g.getClip();
+JDK11IMPORTS*/
+    }
+    
+    static void restoreClipState(Graphics2D g, Object state) {
+///*JDK12IMPORTS
+        if (state != null) {
+            throw new Error("Invalid clip state for this class.");
+        }
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip((Shape)state);
+JDK11IMPORTS*/
+    }
+    
+    /**
+     * Draw the given Shape into the Graphics, translated by (dx, dy)
+     * and clipped to clipRect.
+     */
+    static void translateAndDrawShapeWithClip(Graphics2D g,
+                                              int dx,
+                                              int dy,
+                                              Rectangle2D clipRect,
+                                              Shape shape) {
+///*JDK12IMPORTS
+        // really bogus implementation right now:  basically only
+        // draws carets from a TextLayout.
+        // Oh yeah, it doesn't really clip correctly either...
+
+        PathIterator pathIter = shape.getPathIterator(null);
+        float[] points = new float[6];
+
+        int type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_MOVETO) {
+            throw new Error(excuse);
+        }
+        float x1 = points[0] + dx;
+        float y1 = points[1] + dy;
+
+        if (pathIter.isDone()) {
+            throw new Error(excuse);
+        }
+
+        pathIter.next();
+        type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_LINETO) {
+            throw new Error(excuse);
+        }
+        float x2 = points[0] + dx;
+        float y2 = points[1] + dy;
+
+        float minY = (float) clipRect.getY();
+        float maxY = (float) clipRect.getMaxY();
+
+        // Now clip within vertical limits in clipRect
+        if (y1 == y2) {
+            if (y1 < minY || y1 >= maxY) {
+                return;
+            }
+        }
+        else {
+            if (y1 > y2) {
+                float t = x1;
+                x1 = x2;
+                x2 = t;
+                t = y1;
+                y1 = y2;
+                y2 = t;
+            }
+
+            float invSlope = (x2-x1) / (y2-y1);
+            if (y1 < minY) {
+                x1 -= (minY-y1) * invSlope;
+                y1 = minY;
+            }
+            if (y2 >= maxY) {
+                x1 += (y2-maxY) * invSlope;
+                y2 = maxY;
+            }
+        }
+
+        g.draw(new Line2D.Float(x1, y1, x2, y2));
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip(clipRect);
+        g.translate(dx, dy);
+        try {
+            g.draw(shape);
+        }
+        finally {
+            g.translate(-dx, -dy);
+        }
+JDK11IMPORTS*/
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
new file mode 100644
index 0000000..73632de
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
@@ -0,0 +1,93 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+JDK11IMPORTS*/
+
+/**
+ * This class is used by the Formatter to estimate the height
+ * of characters in a particular style.
+ */
+final class DefaultCharacterMetric {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    final class Metric {
+    
+        private float fAscent;
+        private float fDescent;
+        private float fLeading;
+    
+        private Metric(float ascent, float descent, float leading) {
+    
+            fAscent = ascent;
+            fDescent = descent;
+            fLeading = leading;
+        }
+    
+        public int getAscent() {
+            return (int) Math.ceil(fAscent);
+        }
+    
+        public int getDescent() {
+            return (int) Math.ceil(fDescent);
+        }
+    
+        public int getLeading() {
+            return (int) Math.ceil(fLeading);
+        }
+    }
+    
+    private final Hashtable fCache = new Hashtable();
+    private /*final*/ FontResolver fResolver;
+    private /*final*/ FontRenderContext fFrc;
+    
+    public DefaultCharacterMetric(FontResolver resolver,
+                                  FontRenderContext frc) {
+    
+        fResolver = resolver;
+        fFrc = frc;
+    }
+    
+    /**
+     * Get a DefaultCharacterMetric instance for the given style.  The
+     * style is first resolved with FontResolver.
+     */
+    public Metric getMetricForStyle(AttributeMap style) {
+
+        style = fResolver.applyFont(style);
+        Metric metric = (Metric) fCache.get(style);
+        if (metric == null) {
+            TextLayout layout = new TextLayout(" ", style, fFrc);
+            metric = new Metric(layout.getAscent(),
+                                layout.getDescent(),
+                                layout.getLeading());
+            fCache.put(style, metric);
+        }
+        return metric;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/FontResolver.java b/src/com/ibm/richtext/textformat/FontResolver.java
new file mode 100644
index 0000000..c96dee8
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/FontResolver.java
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.FontUtils;
+
+import java.util.Hashtable;
+import java.awt.Font;
+
+final class FontResolver {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static {
+// Even though it violates the Prime Directive I'll conditionalize
+// this anyway, since it is just a 1.2 workaround which I greatly
+// resent.
+///*JDK12IMPORTS
+        java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
+//JDK12IMPORTS*/
+    }
+
+    private Hashtable styleMap;
+    private final AttributeMap fDefaultFontMap;
+
+    public FontResolver(AttributeMap defaults) {
+
+        styleMap = new Hashtable();
+        Hashtable tempMap = new Hashtable();
+        tempMap.put(TextAttribute.FAMILY, defaults.get(TextAttribute.FAMILY));
+        tempMap.put(TextAttribute.WEIGHT, defaults.get(TextAttribute.WEIGHT));
+        tempMap.put(TextAttribute.POSTURE, defaults.get(TextAttribute.POSTURE));
+        tempMap.put(TextAttribute.SIZE, defaults.get(TextAttribute.SIZE));
+        fDefaultFontMap = new AttributeMap(tempMap);
+    }
+
+    /**
+     * Fetch result of resolve(style) from cache, if present.
+     */
+    public AttributeMap applyFont(AttributeMap style) {
+
+        Object cachedMap = styleMap.get(style);
+
+        if (cachedMap == null) {
+            AttributeMap resolvedMap = resolve(style);
+            styleMap.put(style, resolvedMap);
+            return resolvedMap;
+        }
+        else {
+            return (AttributeMap) cachedMap;
+        }
+    }
+
+    /**
+     * Return an AttributeMap containing a Font computed from the
+     * attributes in <tt>style</tt>.
+     */
+    public AttributeMap resolve(AttributeMap style) {
+
+        if (style.get(TextAttribute.FONT) != null) {
+            return style;
+        }
+
+        Font font = FontUtils.getFont(fDefaultFontMap.addAttributes(style));
+
+        return style.addAttribute(TextAttribute.FONT, font);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/LayoutInfo.java b/src/com/ibm/richtext/textformat/LayoutInfo.java
new file mode 100644
index 0000000..2162f39
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/LayoutInfo.java
@@ -0,0 +1,197 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+/** LayoutInfo
+
+    A line of text, possibly containing tab-segments.
+*/
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+import com.ibm.richtext.styledtext.MConstText;
+
+abstract class LayoutInfo
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCharStart;       // offset in text to start of line (was fStart)
+                                  // neg. values indicate distance from end of text
+    private int fGraphicStart;    // min pixel offset in fill direction
+                                  // negative values indicate distance from bottom of text view
+
+    /*
+        These methods are for storing Layouts in a gap-storage,
+        relative to either the start of end of text.  See AsyncFormatter.
+
+        If you just want absolute (that is, start-relative) char and
+        graphic starts, don't make them end-relative.
+    */
+
+    public final int getCharStart(int lengthBasis) {
+
+        if (fCharStart >= 0) {
+            return fCharStart;
+        }
+        else {
+            return lengthBasis + fCharStart;
+        }
+    }
+
+    public final int getGraphicStart(int graphicBasis) {
+
+        if (fGraphicStart >= 0) {
+            return fGraphicStart;
+        }
+        else {
+            return graphicBasis + fGraphicStart;
+        }
+    }
+
+    public final void setCharStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fCharStart = beginningRelativeStart;
+    }
+
+    public final void setGraphicStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fGraphicStart = beginningRelativeStart;
+    }
+
+    public final void makeRelativeToBeginning(int lengthBasis,
+                                              int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart >= 0 || fGraphicStart >= 0) {
+            throw new Error("Already start-relative.");
+        }
+
+        fCharStart += lengthBasis;
+        fGraphicStart += graphicBasis;
+    }
+
+    public final void makeRelativeToEnd(int lengthBasis,
+                                        int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart < 0 || fGraphicStart < 0) {
+            throw new Error("Already end-relative.");
+        }
+
+        fCharStart -= lengthBasis;
+        fGraphicStart -= graphicBasis;
+    }
+
+
+    public abstract int getCharLength();
+    public abstract int getAscent();
+    public abstract int getDescent();
+    public abstract int getLeading();
+
+    public abstract int getVisibleAdvance();
+    public abstract int getTotalAdvance();
+    public abstract int getLeadingMargin();
+
+    public abstract boolean isLeftToRight();
+
+    public int getHeight() {
+
+        return getAscent()+getDescent()+getLeading();
+    }
+
+    /**
+    * Draws text with highlighting.
+    */
+    public void renderWithHighlight(int lengthBasis,
+                                    Graphics2D g,
+                                    int lineBound,
+                                    int x,
+                                    int y,
+                                    TextOffset selStart,
+                                    TextOffset selStop,
+                                    Color highlightColor)
+    {
+    }
+
+    /** Use layout information to render the line at x, y.*/
+
+    public void render(int lengthBasis,
+                       Graphics2D g,
+                       int lineBound,
+                       int x,
+                       int y)
+    {
+    }
+
+    public void renderCaret(MConstText text,
+                            int lengthBasis,
+                            Graphics2D g,
+                            int lineBound,
+                            int x,
+                            int y,
+                            int charOffset,
+                            Color strongCaretColor,
+                            Color weakCaretColor)
+    {
+    }
+
+    /**
+     * Given a point within this line, return the character offset corresponding to that point.
+     *
+     * @param result.  This may be null, in which case a new TextOffset will be allocated.
+     *        This object is modified in place, and also returned as the function result.
+     * @param text Text to inspect.
+     * @param lineX Position on this line relative to top left corner of this line.
+     * @param lineY Position on this line relative to top left corner of this line.
+     */
+    public abstract TextOffset pixelToOffset(int lengthBasis,
+                                             TextOffset result,
+                                             int lineBound,
+                                             int x,
+                                             int y);
+
+    public abstract int strongCaretBaselinePosition(int lengthBasis,
+                                                    int lineBound,
+                                                    int charOffset);
+
+    public abstract Rectangle caretBounds(MConstText text,
+                                          int lengthBasis,
+                                          int lineBound,
+                                          int charOffset,
+                                          int x,
+                                          int y);
+    
+    public abstract int getNextOffset(int lengthBasis,
+                                      int charOffset,
+                                      short dir);
+}
diff --git a/src/com/ibm/richtext/textformat/MFormatter.java b/src/com/ibm/richtext/textformat/MFormatter.java
new file mode 100644
index 0000000..b61d77d
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MFormatter.java
@@ -0,0 +1,351 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+*
+* This class formats lines of text to a given length.
+* It provides services needed for static text display,
+* and also editable text, including:  displaying text,
+* reformatting text after an edit, converting between
+* screen locations and offsets into the text, calculating
+* areas of the screen for "highlighting,"  and computing
+* offsets into the text resulting from arrow keys.
+* <p>
+* Text clients instantiate this class with an
+* <tt>MConstText</tt> object and a format width.  Text
+* can be formatted such that all lines fit within the
+* format length.  Alternatively, text can be formatted
+* such that lines end only at the end of paragraphs.
+* <p>
+* The format length is specified with the <tt>setLineBound()</tt>
+* method.
+* <p>
+* Methods in the formatter which interact with the graphics
+* system generally take as a paramter a <tt>Point</tt> object
+* which represents the "origin" of the text display.  The
+* origin represents the location, in the graphics system used to display the text, of
+* the top-left corner of the text.
+* <p>
+* To display the text, call <tt>draw()</tt>, passing the
+* a rectangle in which to draw as a parameter.  Only lines
+* of text in the draw rectangle will be drawn.
+* <p>
+* When the formatter's text changes, it is important to first call
+* <tt>stopBackgroundFormatting()</tt> to prevent the Formatter from
+* accessing the text from a background thread.  After modifications are
+* complete,
+* call the <tt>updateFormat()</tt> method before invoking any other
+* methods of the formatter.  <tt>updateFormat()</tt> reformats the
+* new text, formatting no more text than is necessary.
+* <p>
+* The formatter provides services for responding to user input from the
+* mouse and keyboard.  The method <tt>pointToTextOffset()</tt> converts
+* a screen location to an offset in the text.  The method <tt>textOffsetToPoint</tt>
+* converts an offset in the text to an array of two <tt>Point</tt> objects, which can be
+* used to draw a verticle caret, denoting an insertion point.  <tt>highlightArea</tt>
+* accepts two offsets into the text as paramters, and returns an array of <tt>Polygon</tt>
+* objects representing areas where visual highlighting should be applied.
+* <p>
+* Finally, for
+* keyboard handling, the <tt>findNewInsertionOffset()</tt> method accepts an "initial"
+* offset, a "previous" offset, as well as a direction, and returns a new offset.  The direction
+* can be up, down, left, or right.  The previous offset is the insertion point location, before
+* the arrow key is processed.  The initial offset is the offset where an up or down arrow
+* key sequence began.  Using the initial offset allows for "intelligent" handling of up and down
+* arrow keys.
+* <p>
+* Examples of using the MFormatter class
+* are given in the <tt>AsyncFormatter</tt> class
+* documentation.
+* <p>
+* @author John Raley
+*
+* @see com.ibm.richtext.styledtext.MText
+*/
+
+public abstract class MFormatter {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public abstract AttributeMap getDefaultValues();
+
+/**
+* Display text in drawArea, with highlighting.
+* Does not reformat text
+* @param g the Graphics object in which to draw
+* @param drawArea the rectangle, in g's coordinate system, in which to draw
+* @param origin the top-left corner of the text, in g's coordinate system
+* @param selStart the offset where the current selection begins;  pass <tt>null</tt> if no selection
+* @param selStop the offset where the current selection ends
+* @param highlight the color of the highlighting
+*/
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin,
+            TextOffset selStart, TextOffset selStop, Color highlight);
+
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin);
+
+/**
+* Specify whether to wrap line at the edge of the destination area.
+* <tt>true</tt> means wrap lines;  <tt>false</tt> means to break lines
+* only when an end-of-line character is reached.
+* @param wrap <tt>true</tt> to break lines at the edge of the destination
+* area;  <tt>false</tt> otherwise.
+*/
+
+    public abstract void setWrap(boolean wrap);
+
+/**
+* Return whether text is wrapped at the edge of the destination area.
+* @see #setWrap
+*/
+    public abstract boolean wrap();
+
+/**
+* Specify the number of pixels along the "line dimension".
+* Lines are formatted to fit within the line dimension.  The
+* line dimension in Roman script is horizontal.
+* @param lineBound the length, in pixels, to which lines will be formatted
+*/
+    public abstract void setLineBound(int lineBound);
+
+/**
+* Return the number of pixels along the line dimension.
+* @return the number of pixels along the line dimension.
+*/
+    public abstract int lineBound();
+    
+/**
+* Format text down to given height.
+* @param height the height to which text will be formatted
+*/
+    public abstract void formatToHeight(int height);
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public abstract Rectangle updateFormat(int afStart,
+                                  int afLength,
+                                  Rectangle viewRect,
+                                  Point origin);
+
+
+    public abstract int minY();
+    
+/**
+ * Return the maximum vertical coordinate of the document area.
+ */
+    public abstract int maxY();
+
+    public abstract int minX();
+
+/**
+ * Return the maximum horizontal coordinate of the document area.
+ */
+    public abstract int maxX();
+
+/**
+* Return the actual pixel length of the text which has been formatted.
+*/
+    public abstract int formattedHeight();
+
+    public static final short eUp = -10, eDown = 10, eLeft = -1, eRight = 1;
+
+/**
+* Given a screen location p, return the offset of the character in the text nearest to p.
+*
+* The offset may or may not include a newline at the end of a line, determined by anchor and infiniteMode.
+* The newline is not included if infiniteMode is true and the anchor is the position before the newline.
+*
+* @param result TextOffset to modify and return.  If null, one will be allocated, modified, and returned.
+* @param px the x component of the point.
+* @param py the y component of the point.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param anchor the previous offset.  May be null.  Used to determine whether newlines are included.
+* @param infiniteMode if true, treat newlines at end of line as having infinite width.
+*/
+    public abstract TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode);
+
+/**
+* Given an offset, return the Rectangle bounding the caret at the offset.
+* @param offset an offset into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a Rectangle bounding the caret.
+*/
+    public abstract Rectangle getCaretRect(TextOffset offset, Point origin);
+
+/**
+* Draw the caret(s) associated with the given offset into the given Graphics.
+* @param g the Graphics to draw into
+* @param offset the offset in the text for which the caret is drawn
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param strongCaretColor the color of the strong caret
+* @param weakCaretColor the color of the weak caret (if any)
+*/
+    public abstract void drawCaret(Graphics g,
+                                   TextOffset offset,
+                                   Point origin,
+                                   Color strongCaretColor,
+                                   Color weakCaretColor);
+
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean LOOSE = false;
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean TIGHT = true;
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1 an offset into the text
+* @param offset2 the other offset into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param tight if equal to TIGHT, the bounds is as small as possible.  If LOOSE, the width
+* of the bounds is allowed to be wider than necesary.  Loose bounds are easier to compute.
+* @return a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public abstract Rectangle getBoundingRect(TextOffset offset1,
+                                              TextOffset offset2, 
+                                              Point origin,
+                                              boolean tight);
+
+    public abstract void getBoundingRect(Rectangle boundingRect,
+                                         TextOffset offset1,
+                                         TextOffset offset2,
+                                         Point origin,
+                                         boolean tight);
+
+/**
+* Compute the offset resulting from moving from a previous offset in direction dir.
+* For arrow keys.
+* @param previousOffset the insertion offset prior to the arrow key press
+* @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset.
+*/
+    public abstract TextOffset findInsertionOffset(TextOffset result,
+                                          TextOffset previousOffset,
+                                          short direction);
+
+/**
+* Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+* For arrow keys.  Use this for "smart" up/down keys.
+* @param result TextOffset to modify and return.  If null, a new TextOffset is created, modified, and returned.
+* @param initialOffset The offset at which an up-down arrow key sequence began.
+* @param previousOffset The insertion offset prior to the arrow key press.
+* @param direction The direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset(s).
+*/
+    public abstract TextOffset findNewInsertionOffset(TextOffset result,
+                                             TextOffset initialOffset,
+                                             TextOffset previousOffset,
+                                             short direction);
+
+/**
+* Return the index of the line containing the given character index.
+* This method has complicated semantics, arising from not knowing 
+* which side of the index to check.  The index will be given an
+* implicit AFTER bias, unless the index is the last index in the text,
+* the text length is non-zero, and there is not a paragraph separator
+* at the end of the text.
+*/
+    public abstract int lineContaining(int index);
+    
+/**
+* Return the index of the line containing the given offset.
+*/
+    public abstract int lineContaining(TextOffset offset);
+
+/**
+* Return the number of lines.
+*/
+    public abstract int getLineCount();
+
+/**
+* Return the index of the first character on the given line.
+*/
+    public abstract int lineRangeLow(int lineNumber);
+
+/**
+* Return the index of the first character following the given line.
+*/
+    public abstract int lineRangeLimit(int lineNumber);
+
+/**
+* Tells the formatter to stop accessing the text until updateFormat is called.
+*/
+    public abstract void stopBackgroundFormatting();
+
+/**
+* Return the line number at the given graphic height.  If height is greater than
+* the text height, maxLineNumber + 1 is returned.
+*/
+    public abstract int lineAtHeight(int height);
+
+/**
+* Return the graphic height where the given line begins.  If the lineNumber is
+* maxLineNumber the entire text height is returned.
+*/
+    public abstract int lineGraphicStart(int lineNumber);
+
+/**
+* Return true if the given line is left-to-right.
+* @param lineNumber a valid line
+* @return true if lineNumber is left-to-right
+*/
+    public abstract boolean lineIsLeftToRight(int lineNumber);
+
+/**
+* Return a new <tt>MFormatter</tt>.
+* @param text the text to format
+* @param defaultValues values to use when certain attributes are not specified. 
+*    <tt>defaultValues</tt> must contain values for the following attributes:
+*    <tt>FAMILY</tt>, <tt>WEIGHT</tt>, <tt>POSTURE</tt>, <tt>SIZE</tt>, <tt>SUPERSCRIPT</tt>, 
+*    <tt>FOREGROUND</tt>, <tt>UNDERLINE</tt>, <tt>STRIKETHROUGH</tt>,
+*    <tt>EXTRA_LINE_SPACING</tt>, <tt>FIRST_LINE_INDENT</tt>,<tt>MIN_LINE_SPACING</tt>,
+*    <tt>LINE_FLUSH</tt>, <tt>LEADING_MARGIN</tt>, <tt>TRAILING_MARGIN</tt>, <tt>TAB_RULER</tt>
+* @param lineBound length to which lines are formatted
+* @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+*/
+    public static MFormatter createFormatter(MConstText text,
+                                             AttributeMap defaultValues,
+                                             int lineBound, 
+                                             boolean wrap, 
+                                             Graphics g) {
+                                                
+        return new AsyncFormatter(text, defaultValues, lineBound, wrap, g);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/MTextIterator.java b/src/com/ibm/richtext/textformat/MTextIterator.java
new file mode 100644
index 0000000..121d1d1
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MTextIterator.java
@@ -0,0 +1,402 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.text.CharacterIterator;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.text.AttributedCharacterIterator;
+import java.util.Map;
+import java.util.Set;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator;
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator.Attribute;
+import com.ibm.richtext.textlayout.attributes.Map;
+JDK11IMPORTS*/
+
+/**
+ * An AttributedCharacterIterator over an MConstText.
+ */
+public final class MTextIterator implements AttributedCharacterIterator,
+                                            Cloneable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // memory leak, since this cache is never flushed
+
+    private static class Matcher {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            Object lhsVal = lhs.get(query);
+            Object rhsVal = rhs.get(query);
+            
+            if (lhsVal == null) {
+                return rhsVal == null;
+            }
+            else {
+                return lhsVal.equals(rhsVal);
+            }
+        }
+    }
+    
+    private static final Matcher ATTR_MATCHER = new Matcher();
+    
+    // Not quite optimal.  Could have a matcher that would decompose
+    // a set once for repeated queries.  Of course that would require
+    // allocation...
+///*JDK12IMPORTS
+    private static final Matcher SET_MATCHER = new Matcher() {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            // Not using Iterator to simplify 1.1 port.
+            Object[] elements = ((Set)query).toArray();
+            for (int i=0; i < elements.length; i++) {
+                if (!super.matches(lhs, rhs, elements[i])) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    };
+//JDK12IMPORTS*/
+    
+    private final class StyleCache {
+
+        private int fRunStart = 0;
+        private int fRunLimit = -1;
+        private int fRangeStart;
+        private int fRangeLimit;
+        private AttributeMap fStyle;
+
+        StyleCache(MConstText text, int start, int limit) {
+            fText = text;
+            fRangeStart = start;
+            fRangeLimit = limit;
+            update(start);
+        }
+
+        private void update(int pos) {
+            if (pos < fRunStart || pos >= fRunLimit) {
+                AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+                if (pos < fRangeStart) {
+                    fRunLimit = fRangeStart;
+                    fRunStart = Integer.MIN_VALUE;
+                }
+                else if (pos > fRangeLimit) {
+                    fRunStart = fRangeLimit;
+                    fRunLimit = Integer.MAX_VALUE;
+                }
+                else {
+                    fRunStart = Math.max(fRangeStart, fText.characterStyleStart(pos));
+                    fRunStart = Math.max(fRunStart, fText.paragraphStart(pos));
+                    
+                    fRunLimit = Math.min(fRangeLimit, fText.characterStyleLimit(pos));
+                    fRunLimit = Math.min(fRunLimit, fText.paragraphLimit(pos));
+                    if (fRunStart < fRunLimit) {
+                        style = fText.paragraphStyleAt(pos);
+                        style = style.addAttributes(fText.characterStyleAt(pos));
+                    }
+                }
+                fStyle = fFontResolver.applyFont(style);
+            }
+        }
+
+        int getRunStart(int pos) {
+            update(pos);
+            return fRunStart;
+        }
+
+        int getRunLimit(int pos) {
+            update(pos);
+            return fRunLimit;
+        }
+
+        Map getStyle(int pos) {
+            update(pos);
+            return fStyle;
+        }
+    }
+
+    private MConstText fText;
+    private CharacterIterator fCharIter;
+    private FontResolver fFontResolver;
+    
+    private StyleCache fStyleCache;
+
+    /**
+     * Create an MTextIterator over the range [start, limit).
+     */
+    public MTextIterator(MConstText text, 
+                         FontResolver resolver,
+                         int start, 
+                         int limit) {
+
+        fText = text;
+        fFontResolver = resolver;
+        fCharIter = text.createCharacterIterator(start, limit);
+
+        fStyleCache = new StyleCache(text, start, limit);
+    }
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex
+     */
+    public char first() {
+        return fCharIter.first();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex
+     */
+    public char last() {
+        return fCharIter.last();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex
+     */
+    public char current() {
+        return fCharIter.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next() {
+        return fCharIter.next();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous() {
+        return fCharIter.previous();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position) {
+        return fCharIter.setIndex(position);
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex() {
+        return fCharIter.getBeginIndex();
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex() {
+        return fCharIter.getEndIndex();
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex() {
+        return fCharIter.getIndex();
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunStart() {
+        return fStyleCache.getRunStart(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunStart(Object attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Attribute attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Set attributes) {
+
+        return getRunStart(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+    
+    private int getRunStart(Object query, Matcher matcher) {
+
+        int runStart = getRunStart();
+        int rangeStart = getBeginIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runStart > rangeStart) {
+            AttributeMap style = fText.characterStyleAt(runStart-1);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runStart;
+            }
+            runStart = fText.characterStyleStart(runStart-1);
+        }
+        return rangeStart;
+    }
+    
+    /**
+     * Returns the index of the first character following the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunLimit() {
+        return fStyleCache.getRunLimit(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunLimit(Object attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Attribute attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Set attributes) {
+        
+        return getRunLimit(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    private int getRunLimit(Object query, Matcher matcher) {
+
+        int runLimit = getRunLimit();
+        int rangeLimit = getEndIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runLimit < rangeLimit) {
+            AttributeMap style = fText.characterStyleAt(runLimit);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runLimit;
+            }
+            runLimit = fText.characterStyleLimit(runLimit);
+        }
+        return rangeLimit;
+    }
+    
+    /**
+     * Returns a map with the attributes defined on the current
+     * character.
+     */
+    public Map getAttributes() {
+        return fStyleCache.getStyle(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Object attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Attribute attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the keys of all attributes defined on the
+     * iterator's text range. The set is empty if no
+     * attributes are defined.
+     */
+///*JDK12IMPORTS
+    public Set getAllAttributeKeys() {
+        throw new Error("Implement this method!");
+    }
+//JDK12IMPORTS*/
+
+    public Object clone() {
+        return new MTextIterator(fText,
+                                 fFontResolver,
+                                 getBeginIndex(),
+                                 getEndIndex());
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/ParagraphRenderer.java b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
new file mode 100644
index 0000000..32b800c
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.LineBreakMeasurer;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+/**
+ * ParagraphRenderer is a factory for LayoutInfo objects.
+ */
+abstract class ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // If renderers can ever travel with their styles, then this attribute will denote a
+    // renderer.  For now, renderers are not added as styles so this isn't needed.
+    //static final TextAttribute PARAGRAPH_RENDERER = new TextAttribute("Paragraph_Renderer") {};
+
+    /**
+     * Reset the renderer to use information from this style. Since renderers may be shared, you should
+     * make sure the renderer is initialized for the style you wish to render before you use it.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+    }
+
+    /**
+     * Return a LayoutInfo for the paragraph represented by
+     * measurer.
+     * @param text the text containing the paragraph
+     * @param layoutToReuse clients can pass in a LayoutInfo
+     * which the ParagraphRenderer may choose to reuse
+     * and return.  If null, a new LayoutInfo will be
+     * created and returned.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     * @param frc the FontRenderContext used for measurerment
+     * @param paragraphStart the index in the text where the
+     * current paragraph begins
+     * @param paragraphLimit the index of the first character
+     * after the current paragraph
+     * @param totalFormatWidth the width in which the line should fit
+     * @param lineBound where right-aligned lines are aligned
+     */
+    public abstract LayoutInfo layout(MConstText text,
+                                      LayoutInfo layoutToReuse,
+                                      LineBreakMeasurer measurer,
+                                      FontRenderContext frc,
+                                      int paragraphStart,
+                                      int paragraphLimit,
+                                      int totalFormatWidth,
+                                      int lineBound);
+
+}
diff --git a/src/com/ibm/richtext/textformat/TestMTextIterator.java b/src/com/ibm/richtext/textformat/TestMTextIterator.java
new file mode 100644
index 0000000..baf676b
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TestMTextIterator.java
@@ -0,0 +1,118 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.textpanel.TextPanel;
+
+/**
+ * Test for MTextIterator.
+ */
+class TestMTextIterator {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final FontResolver FONT_MAPPER;
+    static {
+        AttributeMap attrs = TextPanel.getDefaultSettings().getDefaultValues();
+        FONT_MAPPER = new FontResolver(attrs);
+    }
+
+    public static void compareIterToText(MTextIterator iter,
+                                         MConstText text) {
+
+        //System.out.println("Text: " + text);
+        final int beginIndex = iter.getBeginIndex();
+        final int endIndex = iter.getEndIndex();
+
+        char ch = iter.setIndex(beginIndex);
+
+        for (int i=beginIndex; i < endIndex; i++) {
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Characters are not the same.");
+            }
+            ch = iter.next();
+        }
+
+        if (ch != MTextIterator.DONE) {
+            throw new Error("Iterator is not done.");
+        }
+
+        for (int i=endIndex-1; i >= beginIndex; i--) {
+            ch = iter.previous();
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Backward iteration failed.");
+            }
+        }
+
+        iter.setIndex(beginIndex);
+
+        int runLimit;
+        for (int runStart = beginIndex; runStart < endIndex; runStart = runLimit) {
+
+            runLimit = Math.min(endIndex, text.characterStyleLimit(runStart));
+
+            if (iter.getRunStart() != runStart) {
+                System.out.println(iter.getRunStart() + "; " + runStart);
+                throw new Error("getRunStart is wrong.");
+            }
+            if (iter.getRunLimit() != runLimit) {
+                System.out.println(iter.getRunLimit() + "; " + runLimit);
+                throw new Error("getRunLimit is wrong.");
+            }
+
+            AttributeMap style = text.characterStyleAt(runStart);
+
+            while (iter.getIndex() < runLimit) {
+                AttributeMap resolved = FONT_MAPPER.applyFont(style);
+                if (!iter.getAttributes().equals(resolved)) {
+                    throw new Error("Style is wrong.");
+                }
+                iter.next();
+            }
+        }
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MText text = new StyledText("Hello there!", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        text.replace(2, 2, 'V', bold);
+
+        MTextIterator iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+
+        text.replace(6, 8, new StyledText("ALL_BOLD", bold), 0, 8);
+        iter = new MTextIterator(text, FONT_MAPPER, 1, text.length()-3);
+        compareIterToText(iter, text);
+
+        iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+    }
+
+    public static void main(String[] args) {
+
+        new TestMTextIterator().test();
+        System.out.println("PASSED");
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/TextOffset.java b/src/com/ibm/richtext/textformat/TextOffset.java
new file mode 100644
index 0000000..014eb01
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TextOffset.java
@@ -0,0 +1,196 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Revision: 03 1.16 richtext/TextOffset.java, richtext, richtext
+
+/*
+    9/5/96 {jbr} added set and equals methods
+*/
+
+package com.ibm.richtext.textformat;
+
+/**
+ * A TextOffset indicates both an integer offset into text and a placement
+ * on one of the characters adjacent to the offset.  An offset is a
+ * position between two characters;  offset n
+ * is between character n-1 and character n.  The placement specifies whether
+ * it is associated with the character
+ * after the offset
+ * (character n) or the character before the offset (character n-1).
+ * <p>
+ * Knowing which character the TextOffset is associated with is necessary
+ * when displaying carets.  In bidirectional text, a single offset may
+ * have two distinct carets.  Also, in multiline text, an offset at a line
+ * break has a possible caret on each line.
+ * <p>
+ * Most clients will not be interested in the placement, and will just use
+ * the offset.
+ */
+public final class TextOffset
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset - 1</code> - ie the character before its offset.
+     */
+    public final static boolean BEFORE_OFFSET = true;
+
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset</code> - ie the character after its offset.
+     */
+    public final static boolean AFTER_OFFSET = false;
+
+    /**
+     * The offset into the text.
+     */
+    public int fOffset = 0;
+
+    /**
+     * The placement - before or after.
+     */
+    public boolean fPlacement = AFTER_OFFSET;
+
+    /**
+    * Constructs a new TextOffset
+    * @param offset the offset into the text to represent.  Placement is implicitly AFTER_OFFSET.
+    */
+    public TextOffset(int offset)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("Offset is negative in TextOffset constructor.");
+
+        fOffset = offset;
+
+        fPlacement = AFTER_OFFSET;
+    }
+
+    /**
+    * Constructs a new TextOffset at 0, with placement AFTER_OFFSET.
+    */
+    public TextOffset() {
+        this(0);
+    }
+
+    /**
+    * Constructs a new TextOffset with the given offset and placement.
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public TextOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset constructor offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+    * Constructs a new TextOffset from an existing one.
+    * @param rhs the TextOffset to copy
+    */
+    public TextOffset(TextOffset rhs) {
+
+        this(rhs.fOffset, rhs.fPlacement);
+    }
+
+    /**
+    * Set the value of the TextOffset
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public void setOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset setOffset offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+     * Compare this to another Object.
+     */
+    public boolean equals(Object other) {
+
+        try {
+            return equals((TextOffset)other);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+    * Return true if offset and placement are the same.
+    *
+    * @param other offset to compare against
+    * @return true if both offsets are equal
+    */
+    public boolean equals(TextOffset other) {
+
+        return fOffset == other.fOffset && fPlacement == other.fPlacement;
+    }
+
+    /**
+     * Return the hashCode for this object.
+     */
+    public int hashCode() {
+
+        return fPlacement==AFTER_OFFSET? fOffset : -fOffset;
+    }
+
+    /**
+    * Return true if this offset is 'greaterThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and AFTER_OFFSET is considered 'greaterThan' BEFORE_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears after other
+    */
+    public boolean greaterThan(TextOffset other)
+    {
+        return fOffset > other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == AFTER_OFFSET && other.fPlacement == BEFORE_OFFSET);
+    }
+
+    /**
+    * Return true if this offset is 'lessThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and BEFORE_OFFSET is considered 'lessThan' AFTER_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears before other
+    */
+    public boolean lessThan(TextOffset other) {
+
+        return fOffset < other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == BEFORE_OFFSET && other.fPlacement == AFTER_OFFSET);
+    }
+
+    /**
+    * Copy the value of another TextOffset into this
+    * @param other the TextOffset to copy
+    */
+    public void assign(TextOffset other) {
+        fOffset = other.fOffset;
+        fPlacement = other.fPlacement;
+    }
+
+    /**
+    * Return a string representation of this object.
+    */
+    public String toString() {
+
+        return "[" + (fPlacement ? "before " : "after ") + fOffset + "]";
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/package.html b/src/com/ibm/richtext/textformat/package.html
new file mode 100644
index 0000000..27f16bb
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Classes that format text in a background thread and render the formatted text to a graphics.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/richtext/textlayout/FontUtils.java b/src/com/ibm/richtext/textlayout/FontUtils.java
new file mode 100644
index 0000000..81099c2
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/FontUtils.java
@@ -0,0 +1,27 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Font;
+
+public final class FontUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Font getFont(java.util.Map attributes) {
+
+        return Font.getFont(attributes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/Graphics2DConversion.java b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
new file mode 100644
index 0000000..1d73988
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Paint;
+
+/**
+ * This class allows JDK 1.1 code to use a "fake" Graphics2D
+ * for source-code compatibility with Java2 code.  On Java2 it's
+ * a trivial class.  The JDK 1.1 version of this class does interesting
+ * work.
+ */ 
+public final class Graphics2DConversion {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Graphics2D getGraphics2D(Graphics g) {
+        return (Graphics2D) g;
+    }
+
+    public static Graphics getGraphics(Graphics2D g) {
+        return g;
+    }
+
+    /**
+     * Will return an instance of Paint.
+     */
+    public static Object getColorState(Graphics2D g) {
+
+        return g.getPaint();
+    }
+
+    /**
+     * State must be an instance of Paint.
+     */
+    public static void restoreColorState(Graphics2D g, Object state) {
+
+        g.setPaint((Paint) state);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
new file mode 100644
index 0000000..f0efc73
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
@@ -0,0 +1,163 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textlayout.attributes;
+
+import java.io.Serializable;
+
+/**
+ * This class provides a cannonical mapping between fields in TextAttribute
+ * and instances of itself.  It is used by AttributeMap to serialize
+ * and deserialize TextAttribute to preserve uniqueness of TextAttribute
+ * instances (ie so that TextAttribute instances remain singletons),
+ * and to provide compatability between 1.1 and 1.2 versions of
+ * TextAttribute.
+ * <p>
+ * Example use - instead of doing this:
+ * <blockquote><pre>
+ *     out.writeObject(anAttribute);
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     out.writeObject(AttributeKey.mapAttributeToKey(anAttribute));
+ * </pre></blockquote>
+ * Similarly, instead of this:
+ * <blockquote><pre>
+ *     anAttribute = in.readObject();
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     anAttribute = AttributeKey.mapKeyToAttribute(in.readObject());
+ * </pre></blockquote>
+ * <p>
+ * If anAttribute is not a known TextAttribute, then <code>mapAttributeToKey</code>
+ * will just return its argument.  Similarly, <code>mapKeyToAttribute</code> will
+ * return its argument if the argument is not a known AttributeKey.
+ */
+
+/*public*/ final class AttributeKey implements Serializable {
+
+/*
+    In this implementation, two parallel Vectors are
+    maintained.  TextAttribute(i) maps to AttributeKey(i).
+    For compatability with existing data, this mapping must
+    be maintained in the future!  So, when new attributes
+    are added, add them to the end of the list.
+*/
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 3772371253277107294L;
+
+    private static Object[] fgTextAttributes;
+    private static Object[] fgAttributeKeys;
+
+    static {
+        fgTextAttributes = new Object[] {
+            TextAttribute.FONT,
+            TextAttribute.FAMILY,
+            TextAttribute.WEIGHT,
+            TextAttribute.POSTURE,
+            TextAttribute.SIZE,
+            TextAttribute.SUPERSCRIPT,
+            TextAttribute.FOREGROUND,
+            TextAttribute.BACKGROUND,
+            TextAttribute.UNDERLINE,
+            TextAttribute.STRIKETHROUGH,
+            TextAttribute.CHAR_REPLACEMENT,
+            TextAttribute.EXTRA_LINE_SPACING,
+            TextAttribute.FIRST_LINE_INDENT,
+            TextAttribute.MIN_LINE_SPACING,
+            TextAttribute.LINE_FLUSH,
+            TextAttribute.LEADING_MARGIN,
+            TextAttribute.TRAILING_MARGIN,
+            TextAttribute.TAB_RULER,
+            TextAttribute.RUN_DIRECTION,
+            TextAttribute.BIDI_EMBEDDING,
+            TextAttribute.JUSTIFICATION,
+        };
+
+        final int attrCount = fgTextAttributes.length;
+        fgAttributeKeys = new Object[attrCount];
+
+        for (int i=0; i < attrCount; i += 1) {
+            fgAttributeKeys[i] = new AttributeKey(i);
+        }
+    }
+
+    /**
+     * Return the TextAttribute corresponding to the given key.
+     * If key is an instance of AttributeKey it will be mapped to
+     * a TextAttribute.  Otherwise, the key is returned.
+     * @param key the key to map to a TextAttribute field
+     * @return the TextAttribute for <code>key</code> if <code>key</code>
+     *    is an AttributeKey; otherwise <code>key</code> is returned
+     */
+    /*public*/ static Object mapKeyToAttribute(Object key) {
+
+        try {
+            AttributeKey aKey = (AttributeKey) key;
+            if (aKey.fId < fgTextAttributes.length) {
+                return fgTextAttributes[aKey.fId];
+            }
+            else {
+                return key;
+            }
+        }
+        catch(ClassCastException e) {
+            return key;
+        }
+    }
+
+    /**
+     * If attribute is a known TextAttribute, return an AttributeKey
+     * for it.  Otherwise the object is returned.
+     * @param attribute the attribute to map to an AttributeKey
+     * @return an AttributeKey for <code>attribute</code>
+     *     if <code>attribute</code> is a known attribute; otherwise
+     *     <code>attribute</code> is returned
+     */
+    /*public*/ static Object mapAttributeToKey(Object attribute) {
+
+        final int attrCount = fgTextAttributes.length;
+        
+        for (int index = 0; index < attrCount; index += 1) {
+            if (fgTextAttributes[index].equals(attribute)) {
+                return fgAttributeKeys[index];
+            }
+        }
+        
+        return attribute;
+    }
+
+
+    private int fId;
+
+    private AttributeKey(int id) {
+
+        fId = id;
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return ((AttributeKey)rhs).fId == fId;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+
+        return fId;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
new file mode 100644
index 0000000..0e219cc
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
@@ -0,0 +1,527 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Set;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+
+/**
+ * AttributeMap is an immutable Map.  Additionally, there are
+ * several methods for common operations (union,
+ * remove, intersect);  these methods return new AttributeMap
+ * instances.
+ * <p>
+ * Although any non-null Object can be a key or value in an
+ * AttributeMap, typically the keys are fields of TextAttribute.
+ * @see TextAttribute
+ */
+public final class AttributeMap implements java.util.Map,
+                                com.ibm.richtext.textlayout.attributes.Map,
+                                Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+
+    private static final long serialVersionUID = 9510803;
+
+    private static final String errString = "StyleSets are immutable.";
+
+    // This is passed to the Hashtable constructor as the
+    // load factor argument.  It is chosen to avoid resizing
+    // the Hashtable whenever possible.  I think that 1
+    // does this.
+    private static final int LOAD_FACTOR = 1;
+
+    private Hashtable styleTable;
+    private transient AttributeSet cachedKeySet = null;
+    private transient Collection cachedValueCollection = null;
+    private transient Set cachedEntrySet = null;
+
+    /**
+     * An empty AttributeMap.
+     */
+    public static final AttributeMap EMPTY_ATTRIBUTE_MAP = new AttributeMap();
+
+// ==============
+// Constructors
+// ==============
+
+    /**
+     * Create a new, empty AttributeMap.  EMPTY_STYLE_SET can be used
+     * in place of an AttributeMap produced by this constructor.
+     */
+    public AttributeMap() {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Map.
+     * @param map a Map whose key-value entries will
+     *      become the entries for this AttributeMap. <code>map</code>
+     *      is not modified, and must not contain null keys or values.
+     */
+    public AttributeMap(java.util.Map map) {
+
+        styleTable = new Hashtable(map.size(), LOAD_FACTOR);
+        styleTable.putAll(map);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Hashtable.
+     * @param hashtable a Hashtable whose key-value entries will
+     *      become the entries for this AttributeMap. <code>table</code>
+     *      is not modified.
+     */
+    public AttributeMap(Hashtable hashtable) {
+
+        this((java.util.Map) hashtable);
+    }
+
+    /**
+     * Create an AttributeMap with a single entry of
+     * <code>{attribute, value}</code>.
+     * @param key the key in this AttributeMap's single entry
+     * @param value the value in this AttributeMap's single entry
+     */
+    public AttributeMap(Object key, Object value) {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+
+        // hashtable checks value for null
+        styleTable.put(key, value);
+    }
+
+    // For internal use only.
+    private AttributeMap(Hashtable table, boolean clone) {
+
+        if (clone) {
+            styleTable = (Hashtable) table.clone();
+        }
+        else {
+            this.styleTable = table;
+        }
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(styleTable.size());
+        Enumeration e = styleTable.keys();
+        while (e.hasMoreElements()) {
+            Object key = e.nextElement();
+            out.writeObject(AttributeKey.mapAttributeToKey(key));
+            out.writeObject(styleTable.get(key));
+        }
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+
+        int count = in.readInt();
+        for (int i=0; i < count; i += 1) {
+            Object key = AttributeKey.mapKeyToAttribute(in.readObject());
+            Object value = in.readObject();
+            styleTable.put(key, value);
+        }
+    }
+
+// ==============
+// Map interface
+// ==============
+
+// queries
+    /**
+     * Return the number of entries in the AttributeMap.
+     * @return the number of entries in the AttributeMap
+     */
+    public int size() {
+
+        return styleTable.size();
+    }
+
+    /**
+     * Return true if the number of entries in the AttributeMap
+     * is 0.
+     * @return true if the number of entries in the AttributeMap
+     * is 0
+     */
+    public boolean isEmpty() {
+
+        return styleTable.isEmpty();
+    }
+
+    /**
+     * Return true if the given key is in this AttributeMap.
+     * @param key the key to test
+     * @return true if <code>key</code> is in this AttributeMap
+     */
+    public boolean containsKey(Object key) {
+
+        return styleTable.containsKey(key);
+    }
+
+    /**
+     * Return true if the given value is in this AttributeMap.
+     * @param value the value to test
+     * @return true if <code>value</code> is in this AttributeMap
+     */
+    public boolean containsValue(Object value) {
+
+        return styleTable.containsValue(value);
+    }
+
+    /**
+     * Return the value associated with the given key.  If the
+     * key is not in this AttributeMap null is returned.
+     * @param key the key to look up
+     * @return the value associated with <code>key</code>, or
+     *     null if <code>key</code> is not in this AttributeMap
+     */
+    public Object get(Object key) {
+
+        return styleTable.get(key);
+    }
+
+// modifiers - all throw exceptions
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttribute
+     * @throws UnsupportedOperationException
+     */
+    public Object put(Object key, Object value) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #removeAttributes
+     * @throws UnsupportedOperationException
+     */
+    public Object remove(Object key) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttributes
+     * @throws UnsupportedOperationException
+     */
+    public void putAll(java.util.Map t) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_ATTRIBUTE_MAP
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+// views
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public Set keySet() {
+
+        return getKeySet();
+    }
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public AttributeSet getKeySet() {
+
+        AttributeSet result = cachedKeySet;
+
+        if (result == null) {
+            result = AttributeSet.createKeySet(styleTable);
+            cachedKeySet = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Collection containing every value in this AttributeMap.
+     * @return a Collection containing every value in this AttributeMap
+     */
+    public Collection values() {
+
+        Collection result = cachedValueCollection;
+
+        if (result == null) {
+            result = Collections.unmodifiableCollection(styleTable.values());
+            cachedValueCollection = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Set containing all entries in this AttributeMap.
+     */
+    public Set entrySet() {
+
+        Set result = cachedEntrySet;
+
+        if (result == null) {
+            result = Collections.unmodifiableSet(styleTable.entrySet());
+            cachedEntrySet = result;
+        }
+
+        return result;
+    }
+
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        AttributeMap rhsStyleSet = null;
+
+        try {
+            rhsStyleSet = (AttributeMap) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return styleTable.equals(rhsStyleSet.styleTable);
+    }
+
+    public int hashCode() {
+
+        return styleTable.hashCode();
+    }
+
+    public String toString() {
+
+        return styleTable.toString();
+    }
+
+// ==============
+// Operations
+// ==============
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap,
+     * along with an entry for <attribute, value>.  If attribute
+     * is already present in this AttributeMap its value becomes value.
+     */
+    public AttributeMap addAttribute(Object key, Object value) {
+
+        // try to optimize for case where <key, value> is already there?
+        Hashtable newTable = new Hashtable(styleTable.size() + 1, LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.put(key, value);
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     */
+    public AttributeMap addAttributes(AttributeMap rhs) {
+
+        int thisSize = size();
+
+        if (thisSize == 0) {
+            return rhs;
+        }
+
+        int otherSize = rhs.size();
+
+        if (otherSize == 0) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(thisSize + otherSize, LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     * The Map's keys and values must be non-null.
+     */
+    public AttributeMap addAttributes(java.util.Map rhs) {
+
+        if (rhs instanceof AttributeMap) {
+            return addAttributes((AttributeMap)rhs);
+        }
+
+        Hashtable newTable = new Hashtable(size() + rhs.size(), LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries in this AttributeMap, but
+     * without attribute as a key.
+     */
+    public AttributeMap removeAttribute(Object attribute) {
+
+        if (!containsKey(attribute)) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.remove(attribute);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(AttributeSet attributes) {
+
+        Set set = attributes;
+        return removeAttributes(set);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(Set attributes) {
+
+        // Create newTable on demand;  if null at
+        // end of iteration then return this set.
+        // Should we intersect styleTable.keySet with
+        // attributes instead?
+
+        Hashtable newTable = null;
+        Iterator attrIter = attributes.iterator();
+        while (attrIter.hasNext()) {
+            Object current = attrIter.next();
+            if (current != null && styleTable.containsKey(current)) {
+                if (newTable == null) {
+                    newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+                    newTable.putAll(styleTable);
+                }
+                newTable.remove(current);
+            }
+        }
+
+        if (newTable != null) {
+            return new AttributeMap(newTable, false);
+        }
+        else {
+            return this;
+        }
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(AttributeSet attributes) {
+
+        Set set = attributes;
+        return intersectWith(set);
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(Set attributes) {
+
+        // For now, forget about optimizing for the case when
+        // the return value is equivalent to this set.
+
+        int attrSize = attributes.size();
+        int styleTableSize = styleTable.size();
+        int size = Math.min(attrSize, styleTableSize);
+        Hashtable newTable = new Hashtable(size, LOAD_FACTOR);
+
+        if (attrSize < styleTableSize) {
+            Iterator attrIter = attributes.iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (current != null) {
+                    Object value = styleTable.get(current);
+                    if (value != null) {
+                        newTable.put(current, value);
+                    }
+                }
+            }
+        }
+        else {
+            Iterator attrIter = keySet().iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (attributes.contains(current)) {
+                    newTable.put(current, styleTable.get(current));
+                }
+            }
+        }
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Put all entries in this AttributeMap into the given Map.
+     * @param rhs the Map into which entries are placed
+     */
+    public void putAllInto(java.util.Map rhs) {
+
+        rhs.putAll(this);
+    }
+}
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
new file mode 100644
index 0000000..9f8060b
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
@@ -0,0 +1,343 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Collection;
+
+/**
+ * An AttributeSet is an immutable collection of unique Objects.
+ * It has several operations
+ * which return new AttributeSet instances.
+ */
+public final class AttributeSet implements Set {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * An AttributeSet with no members.
+     */
+    public static final AttributeSet EMPTY_SET = new AttributeSet();
+
+    private Hashtable elements;
+
+    private static final String errString = "AttributeSet is immutable.";
+
+    private AttributeSet(Hashtable elements) {
+
+        this.elements = elements;
+    }
+
+    /**
+     * Package only.  For AttributeMap use.
+     */
+    static AttributeSet createKeySet(Hashtable hashtable) {
+
+        Hashtable newElements = new Hashtable();
+
+        Enumeration e = hashtable.keys();
+        while (e.hasMoreElements()) {
+            Object next = e.nextElement();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Create a new, empty AttributeSet.  The set is semantically
+     * equivalent to EMPTY_SET.
+     */
+    public AttributeSet() {
+
+        elements = new Hashtable();
+    }
+
+    /**
+     * Create a new AttributeSet with the single element elem.
+     */
+    public AttributeSet(Object elem) {
+
+        elements = new Hashtable(1, 1);
+        elements.put(elem, elem);
+    }
+
+    /**
+     * Create a new AttributeSet containing the items in the array elems.
+     */
+    public AttributeSet(Object[] elems) {
+
+        elements = new Hashtable(elems.length, 1);
+        for (int i=0; i < elems.length; i++) {
+            Object next = elems[i];
+            elements.put(next, next);
+        }
+    }
+
+    /**
+     * Return true if the number of elements in this set is 0.
+     * @return true if the number of elements in this set is 0
+     */
+    public boolean isEmpty() {
+
+        return elements.isEmpty();
+    }
+
+    /**
+     * Return the number of elements in this set.
+     * @return the number of elements in this set
+     */
+    public int size() {
+
+        return elements.size();
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return equals((AttributeSet) rhs);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public boolean equals(AttributeSet rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        return elements.equals(rhs.elements);
+    }
+
+    /**
+     * Return true if this set contains the given Object
+     * @return true if this set contains <code>o</code>
+     */
+    public boolean contains(Object o) {
+
+        Object value = elements.get(o);
+        return value != null;
+    }
+
+    /**
+     * Return true if this set contains all elements in the given
+     * Collection
+     * @param coll the collection to compare with
+     * @return true if this set contains all elements in the given
+     * Collection
+     */
+    public boolean containsAll(Collection coll) {
+
+        return elements.keySet().containsAll(coll);
+    }
+
+    /**
+     * Return an Enumeration of the elements in this set.
+     * @return an Enumeration of the elements in this set
+     */
+    public Enumeration elements() {
+
+        return elements.keys();
+    }
+
+    /**
+     * Return an Iterator with the elements in this set.
+     * @return an Iterator with the elements in this set.
+     * The Iterator cannot be used to modify this AttributeSet.
+     */
+    public Iterator iterator() {
+
+        return new EnumerationIterator(elements.keys());
+    }
+
+    /**
+     * Fill in the given array with the elements in this set.
+     * @param storage an array to fill with this set's elements.
+     * The array cannot be null.
+     * @return the <tt>storage</tt> array.
+     */
+    public Object[] toArray(Object[] storage) {
+
+        Enumeration keys = elements.keys();
+        int n=0;
+        while (keys.hasMoreElements()) {
+            storage[n++] = keys.nextElement();
+        }
+        return storage;
+    }
+
+    /**
+     * Return an array with the elements in this set.
+     * @return an array with the elements in this set
+     */
+    public Object[] toArray() {
+
+        return toArray(new Object[size()]);
+    }
+    
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addElement
+     * @throws UnsupportedOperationException
+     */
+    public boolean add(Object o){
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @throws UnsupportedOperationException
+     */
+    public boolean remove(Object o) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #unionWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean addAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #subtract
+     * @throws UnsupportedOperationException
+     */
+    public boolean removeAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #intersectWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean retainAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_SET
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Return an AttributeSet containing the elements of this set
+     * and the given element
+     * @param element the element to add
+     * @return an AttributeSet like this one, with <code>element</code>
+     * added
+     */
+    public AttributeSet addElement(Object element) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+        newElements.put(element, element);
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the union of
+     * this set with the given set.
+     * @param s the set to union with
+     * @return an AttributeSet of the elements in this set or
+     * in <code>s</code>
+     */
+    public AttributeSet unionWith(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the intersection of
+     * this set with the given set.
+     * @param s the set to intersect with
+     * @return an AttributeSet of the elements in this set which
+     * are in <code>s</code>
+     */
+    public AttributeSet intersectWith(AttributeSet s) {
+
+        Hashtable newElements = new Hashtable();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            if (elements.get(next) != null) {
+                newElements.put(next, next);
+            }
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet with the elements in this set which
+     * are not in the given set.
+     * @param s the set of elements to exclude
+     * @return an AttributeSet of the elements in this set which
+     * are not in <code>s</code>
+     */
+    public AttributeSet subtract(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            newElements.remove(iter.next());
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    private static final class EnumerationIterator implements Iterator {
+
+        private Enumeration e;
+
+        EnumerationIterator(Enumeration e) {
+            this.e = e;
+        }
+
+        public boolean hasNext() {
+            return e.hasMoreElements();
+        }
+
+        public Object next() {
+            return e.nextElement();
+        }
+
+        public void remove() {
+            throw new UnsupportedOperationException(errString);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/Map.java b/src/com/ibm/richtext/textlayout/attributes/Map.java
new file mode 100644
index 0000000..08052a2
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/Map.java
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+/**
+ * A Map is a collection of key-value pairs (or entries), where each
+ * key in the Map is unique.  This interface is a subset of the
+ * JDK 1.2 Map interface.  It is used by JDK 1.1-compatible code.
+ */
+public interface Map {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return the number of entries in this Map.
+     * @return the number of entries in this Map
+     */
+    public int size();
+
+    /**
+     * Return true if this Map has no entries.
+     * @return true if this Map has no entries
+     */
+    public boolean isEmpty();
+
+    /**
+     * Return the value of the given key.
+     * @return the value of the given key.  If the key does not have
+     * a value in this Map, null is returned.
+     */
+    public Object get(Object key);
+
+    /**
+     * Return true if this Map contains the given key.
+     * @return true if this Map contains the given key
+     */
+    public boolean containsKey(Object key);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
new file mode 100644
index 0000000..c1e632e
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
@@ -0,0 +1,251 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.text.AttributedCharacterIterator.Attribute;
+import java.io.InvalidObjectException;
+
+/**
+ * This class contains a number of keys (or attributes) for specifying text styles
+ * in a Map.  A text style is a collection of key-value pairs, where
+ * the key represents a certain characteristic (such as size) and
+ * the value tells how that characteristic is realized (ie what the
+ * size is).
+ * <p>
+ * All of the attributes in TextAttribute specify a class for their value.
+ * Map does not enforce these class specifications;  however, text rendering code
+ * will tend to fail with a ClassCastException if a key's value
+ * has an unexpected class.
+ * <p>
+ * Some attributes are meaningful for entire paragraphs, not individual
+ * characters.  These attributes are documented as applying to paragraphs.
+ * All other attributes apply to characters.
+ * <p>
+ * Many of the field names and values in this class
+ * are taken from the JDK 1.2
+ * <code>java.awt.font.TextAttribute class</code>.
+ * @see Map
+ */
+public class TextAttribute extends Attribute {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1831947517687597324L;
+
+    private static final Hashtable instanceMap = new Hashtable(9);
+
+    protected TextAttribute(String name) {
+        super(name);
+        if (this.getClass() == TextAttribute.class) {
+            instanceMap.put(name, this);
+        }
+    }
+
+    protected Object readResolve() throws InvalidObjectException {
+        if (this.getClass() != TextAttribute.class) {
+            throw new InvalidObjectException("subclass didn't correctly implement readResolve");
+        }
+
+        TextAttribute instance = (TextAttribute) instanceMap.get(getName());
+        if (instance != null) {
+            return instance;
+        } else {
+            throw new InvalidObjectException("unknown attribute name");
+        }
+    }
+
+    public static final Object FONT = java.awt.font.TextAttribute.FONT;
+
+    public static final Object FAMILY = java.awt.font.TextAttribute.FAMILY;
+
+    public static final Object WEIGHT = java.awt.font.TextAttribute.WEIGHT;
+    public static final Float WEIGHT_BOLD = java.awt.font.TextAttribute.WEIGHT_BOLD;
+
+    public static final Object POSTURE = java.awt.font.TextAttribute.POSTURE;
+    public static final Float POSTURE_OBLIQUE = java.awt.font.TextAttribute.POSTURE_OBLIQUE;
+
+    public static final Object SIZE = java.awt.font.TextAttribute.SIZE;
+
+    public static final Object SUPERSCRIPT = java.awt.font.TextAttribute.SUPERSCRIPT;
+    public static final Integer SUPERSCRIPT_SUPER = java.awt.font.TextAttribute.SUPERSCRIPT_SUPER;
+    public static final Integer SUPERSCRIPT_SUB = java.awt.font.TextAttribute.SUPERSCRIPT_SUB;
+
+    /**
+     * Attribute key for the foreground and background color adornment.
+     */
+    public static final Object FOREGROUND = java.awt.font.TextAttribute.FOREGROUND;
+    public static final Object BACKGROUND = java.awt.font.TextAttribute.BACKGROUND;
+
+    public static final Object UNDERLINE = java.awt.font.TextAttribute.UNDERLINE;
+    public static final Integer UNDERLINE_ON = java.awt.font.TextAttribute.UNDERLINE_ON;
+
+    public static final Object STRIKETHROUGH = java.awt.font.TextAttribute.STRIKETHROUGH;
+    public static final Boolean STRIKETHROUGH_ON = java.awt.font.TextAttribute.STRIKETHROUGH_ON;
+
+    public static final Object OFFSET = new TextAttribute("offset");
+
+    public static final Object CHAR_REPLACEMENT = java.awt.font.TextAttribute.CHAR_REPLACEMENT;
+// Paragraph Styles
+
+// values are Floats:
+    public static final Object EXTRA_LINE_SPACING = new TextAttribute("extra_line_spacing");
+    public static final Object EXTRA_FIRST_LINE_SPACING = new TextAttribute("extra_first_line_spacing");
+
+    /**
+     * Amount beyond leading margin to indent the first line of a paragraph.
+     */
+    public static final Object FIRST_LINE_INDENT = new TextAttribute("first_line_indent");
+
+    public static final Object MIN_LINE_SPACING = new TextAttribute("min_line_spacing");
+    public static final Object MIN_FIRST_LINE_SPACING = new TextAttribute("min_first_line_spacing");
+
+    /**
+     * Flush lines left, right, or center.
+     */
+    public static final Object LINE_FLUSH = new TextAttribute("line_flush");
+
+    public static final Integer FLUSH_LEADING = new Integer(0);
+    public static final Integer FLUSH_CENTER = new Integer(1);
+    public static final Integer FLUSH_TRAILING = new Integer(2);
+    /**
+     * Value of <code>LINE_FLUSH</code> for full justification.
+     */
+    public static final Integer FULLY_JUSTIFIED = new Integer(3);
+
+    /**
+     * Leading and trailing margin in paragraph.
+     */
+    public static final Object LEADING_MARGIN = new TextAttribute("leading_margin");
+    public static final Object TRAILING_MARGIN = new TextAttribute("trailing_margin");
+
+    /**
+     * Tab ruler.  Values are MTabRuler instances.
+     */
+    public static final Object TAB_RULER = new TextAttribute("tab_ruler");
+    
+    /**
+     * Attribute key for the run direction of the line.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Boolean</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Constants</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION_LTR = true, RUN_DIRECTION_RTL = false
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use the default Unicode base direction from the BIDI 
+     * algorithm.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which base run direction to use when 
+     * positioning mixed directional runs within a paragraph. If this value is
+     * RUN_DIRECTION_DEFAULT, <code>TextLayout</code> uses the default Unicode
+     * base direction from the BIDI algorithm.</P>
+     * <P><I>This attribute should have the same value over the whole 
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object RUN_DIRECTION = java.awt.font.TextAttribute.RUN_DIRECTION;
+
+    /**
+     * Left-to-right run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_LTR = java.awt.font.TextAttribute.RUN_DIRECTION_LTR;
+
+    /**
+     * Right-to-left run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_RTL = java.awt.font.TextAttribute.RUN_DIRECTION_RTL;
+
+    /**
+     * Attribute key for the embedding level for nested bidirectional runs.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">BIDI_EMBEDDING</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Integer</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">Positive values 1 through 15 are <I>embedding</I>
+     * levels, negative values<BR> through -15 are <I>override</I> levels
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use standard BIDI to compute levels from formatting
+     * characters in the text.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP">Specifies the bidi embedding level of the character.
+     * When this attribute is present anywhere in a paragraph, then the 
+     * Unicode characters RLO, LRO, RLE, LRE, PDF are disregarded in the BIDI 
+     * analysis of that paragraph. 
+     * See the Unicode Standard v. 2.0, section 3-11.
+     * </TD></TR>
+     * </TABLE>
+     */
+    public static final Object BIDI_EMBEDDING = java.awt.font.TextAttribute.BIDI_EMBEDDING;
+
+    /**
+     * Attribute key for the justification of a paragraph.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">JUSTIFICATION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Float</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">0.0 through1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which fraction of the extra space to use 
+     * when justification is requested. For example, if the line is 50 points
+     * wide and the margins are 70 points apart, a value of 0.5 means that the
+     * line is padded to reach a width of 60 points.</P>
+     * <P><I>This attribute should have the same value over the whole
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object JUSTIFICATION = java.awt.font.TextAttribute.JUSTIFICATION;
+
+    /**
+     * Justify the line to the full requested width.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_FULL = java.awt.font.TextAttribute.JUSTIFICATION_FULL;
+
+    /**
+     * Do not allow the line to be justified.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_NONE = java.awt.font.TextAttribute.JUSTIFICATION_NONE;
+}
diff --git a/src/com/ibm/richtext/textlayout/attributes/package.html b/src/com/ibm/richtext/textlayout/attributes/package.html
new file mode 100644
index 0000000..3fca91e
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Richtext attribute support.  Includes tab, first line indent, and margin attributes.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/richtext/textpanel/ATextPanelImpl.java b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
new file mode 100644
index 0000000..02dc81a
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
@@ -0,0 +1,751 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Adjustable;
+import java.awt.Component;
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * Implementation class for TextPanel and JTextPanel.
+ */
+final class ATextPanelImpl {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    private RunStrategy fRunStrategy = null;
+    private TextComponent fTextComponent = null;
+    private TextSelection fSelection = null;
+    private TextEditBehavior fEditBehavior = null;
+    private MText fText = null;
+
+    private PanelEventBroadcaster fBroadcaster;
+    private KeyRemap fRemap = KeyRemap.getIdentityRemap();
+
+    // This is a little ugly.  TextPanel supports its modified
+    // flag whether or not it is editable, or even selectable.
+    // So if there's no command log to keep track of the flag
+    // state then its done right here in TextPanel.  If the
+    // panel is editable this flag is ignored.
+    private boolean fModified = false;
+
+    static final TextPanelSettings fgDefaultSettings = new TextPanelSettings();
+
+    static TextPanelSettings getDefaultSettings() {
+
+        return (TextPanelSettings) fgDefaultSettings.clone();
+    }
+    
+    ATextPanelImpl(RunStrategy runStrategy,
+                   TextPanelSettings settings,
+                   MConstText initialText,
+                   Clipboard clipboard,
+                   MTextPanel client,
+                   Adjustable horzSb,
+                   Adjustable vertSb) {
+                    
+        fRunStrategy = runStrategy;
+        fBroadcaster = new PanelEventBroadcaster(client);
+
+        Scroller scroller = null;
+        if (settings.getScrollable()) {
+            scroller = new Scroller(horzSb, vertSb);
+        }
+
+        StyledTextClipboard textClipboard =
+                            StyledTextClipboard.getClipboardFor(clipboard);
+
+        fText = new StyledText();
+        if (initialText != null) {
+            fText.append(initialText);
+        }
+
+        fTextComponent = new TextComponent(fText,
+                                           settings.getDefaultValues(),
+                                           settings.getWraps(),
+                                           TextComponent.WINDOW_WIDTH,
+                                           TextComponent.DEFAULT_INSET,
+                                           textClipboard,
+                                           settings.getScrollable(),
+                                           scroller,
+                                           fBroadcaster);
+
+        if (scroller != null) {
+            scroller.setClient(fTextComponent);
+        }
+        
+        // May have to wait until component has host to do this:
+        if (settings.getSelectable()) {
+            fSelection = new TextSelection(fTextComponent, 
+                                           fBroadcaster,
+                                           fRunStrategy);
+            fSelection.addToOwner(fTextComponent);
+            if (settings.getEditable()) {
+                fEditBehavior = new TextEditBehavior(
+                            fTextComponent, fSelection, fBroadcaster, fRemap);
+                fEditBehavior.addToOwner(fTextComponent);
+            }
+        }
+    }
+    
+    FakeComponent getTextComponent() {
+        
+        return fTextComponent;
+    }
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fBroadcaster.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fBroadcaster.removeListener(listener);
+    }
+
+    /**
+     * You know what this does...
+     */
+    private static int pin(int value, int min, int max) {
+
+        if (min > max) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        if (value < min) {
+            value = min;
+        }
+        else if (value > max) {
+            value = max;
+        }
+        return value;
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        replaceRange(newText, 0, getTextLength());
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        int length = getTextLength();
+        replaceRange(newText, length, length);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        replaceRange(newText, position, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        int length = getTextLength();
+
+        start = pin(start, 0, length);
+        end = pin(end, start, length);
+
+        if (fSelection != null) {
+
+            // If we're selectable, but not editable, we'll temporarily
+            // make ourselves editable to change the text.  A little funny
+            // but there's a lot of code for getting caret stuff right,
+            // and this is not a common operation anyway.
+
+            TextEditBehavior behavior;
+
+            if (fEditBehavior == null) {
+                behavior = new TextEditBehavior(fTextComponent, fSelection, fBroadcaster, fRemap);
+                behavior.addToOwner(fTextComponent);
+            }
+            else {
+                behavior = fEditBehavior;
+            }
+
+            TextOffset newSelection = new TextOffset(start + newText.length(),
+                                                     TextOffset.AFTER_OFFSET);
+
+            TextReplacement replacement = new TextReplacement(start, end,
+                                                              newText,
+                                                              newSelection,
+                                                              newSelection);
+
+            fTextComponent.textControlEventOccurred(Behavior.REPLACE,
+                                                    replacement);
+            if (fEditBehavior == null) {
+                behavior.removeFromOwner();
+            }
+        }
+        else {
+
+            MText oldText = fTextComponent.getModifiableText();
+            fTextComponent.stopBackgroundFormatting();
+            oldText.replaceAll(newText);
+            fTextComponent.reformatAndDrawText(0, newText.length(), null, null, null, null);
+        }
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fTextComponent.getText().length();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fTextComponent.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        if (fSelection != null) {
+            return fSelection.getStart().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        if (fSelection != null) {
+            return fSelection.getEnd().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        select(selectionStart, getSelectionEnd());
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        select(getSelectionStart(), selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        select(position, position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        int length = getTextLength();
+
+        selectionStart = pin(selectionStart, 0, length);
+        selectionEnd = pin(selectionEnd, selectionStart, length);
+
+        TextRange range = new TextRange(selectionStart, selectionEnd);
+        fTextComponent.textControlEventOccurred(Behavior.SELECT, range);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        select(0, getTextLength());
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fTextComponent.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fTextComponent.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canUndo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canRedo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fTextComponent.getClipboard().hasContents();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fTextComponent.getDefaultValues();
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    private static Object consistentCharStyle(MConstText text,
+                                              int start,
+                                              int limit,
+                                              Object key,
+                                              Object defaultValue) {
+
+        if (start >= limit) {
+            throw new IllegalArgumentException("Invalid range.");
+        }
+
+        int runStart = start;
+        Object initialValue = text.characterStyleAt(runStart).get(key);
+
+        if (initialValue == null) {
+            initialValue = defaultValue;
+        }
+
+        for (runStart = text.characterStyleLimit(runStart);
+             runStart < limit;
+             runStart = text.characterStyleLimit(runStart)) {
+
+            Object nextValue = text.characterStyleAt(runStart).get(key);
+
+            if (nextValue == null) {
+                nextValue = defaultValue;
+            }
+
+            if (!objectsAreEqual(initialValue, nextValue)) {
+                return MTextPanel.MULTIPLE_VALUES;
+            }
+        }
+
+        return initialValue;
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null)
+            selRange = fSelection.getSelectionRange();
+        else
+            selRange = new TextRange(0, 0);
+
+        if (selRange.start == selRange.limit) {
+
+            AttributeMap compStyle;
+
+            if (fEditBehavior != null) {
+                compStyle = fEditBehavior.getInsertionPointStyle();
+            }
+            else {
+                compStyle = TextEditBehavior.typingStyleAt(fText, selRange.start, selRange.limit);
+            }
+
+            Object value = compStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            return consistentCharStyle(fText, 
+                                       selRange.start,
+                                       selRange.limit,
+                                       key,
+                                       getDefaultValues().get(key));
+        }
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null) {
+            selRange = fSelection.getSelectionRange();
+        }
+        else {
+            selRange = new TextRange(0, 0);
+        }
+
+        if (selRange.start == selRange.limit) {
+            AttributeMap pStyle = fText.paragraphStyleAt(selRange.start);
+            Object value = pStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            int paragraphStart = selRange.start;
+            Object defaultValue = getDefaultValues().get(key);
+            Object initialValue = fText.paragraphStyleAt(paragraphStart).get(key);
+            if (initialValue == null) {
+                initialValue = defaultValue;
+            }
+
+            for (paragraphStart = fText.paragraphLimit(paragraphStart);
+                 paragraphStart < selRange.limit;
+                 paragraphStart = fText.paragraphLimit(paragraphStart)) {
+
+                Object nextValue = fText.paragraphStyleAt(paragraphStart).get(key);
+                if (nextValue == null) {
+                    nextValue = defaultValue;
+                }
+
+                if (!objectsAreEqual(initialValue, nextValue)) {
+                    return MTextPanel.MULTIPLE_VALUES;
+                }
+            }
+
+            return initialValue;
+        }
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fTextComponent.textControlEventOccurred(Behavior.CUT, null);
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fTextComponent.textControlEventOccurred(Behavior.COPY, null);
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fTextComponent.textControlEventOccurred(Behavior.PASTE, null);
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR, null);
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fTextComponent.textControlEventOccurred(Behavior.UNDO, null);
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fTextComponent.textControlEventOccurred(Behavior.REDO, null);
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.getCommandLogSize();
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fTextComponent.textControlEventOccurred(Behavior.SET_COMMAND_LOG_SIZE,
+                                                new Integer(size));
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR_COMMAND_LOG, null);
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.CHARACTER_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.PARAGRAPH_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        if (remap == null) {
+            throw new NullPointerException("remap can't be null");
+        }
+
+        fRemap = remap;
+        if (fEditBehavior != null) {
+            fEditBehavior.setKeyRemap(remap);
+        }
+
+        fBroadcaster.textStateChanged(TextPanelEvent.KEYREMAP_CHANGED);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.isModified();
+        }
+        else {
+            return fModified;
+        }
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+
+        boolean handled = fTextComponent.textControlEventOccurred(
+                                    Behavior.SET_MODIFIED,
+                                    modified? Boolean.TRUE : Boolean.FALSE);
+        if (!handled) {
+            fModified = modified;
+        }
+    }
+
+    /**
+     * This method is for perf-testing only!
+     */
+    void handleKeyEvent(java.awt.event.KeyEvent keyEvent) {
+    
+        Component host = fTextComponent.getHost();
+        if (host != null) {
+            host.dispatchEvent(keyEvent);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/ArabicTransliteration.java b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
new file mode 100644
index 0000000..2356210
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
@@ -0,0 +1,178 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   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;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+final class ArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': return '\u064E'; // ARABIC FATHA
+            case 'E': return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': return '\u0650'; // ARABIC KASRA
+            case 'I': return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': return '\u064F'; // ARABIC DAMMA
+            case 'O': return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': return '\u064C'; // ARABIC DAMMATAN
+            case 'u': return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Behavior.java b/src/com/ibm/richtext/textpanel/Behavior.java
new file mode 100644
index 0000000..44d6625
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Behavior.java
@@ -0,0 +1,201 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+/** A class that handles events for a BehaviorOwner.
+* A behavior enacpsulates some piece of the event-handling logic for a component.
+* This allows the client to separate event-handling logic out into separate classes
+* according to function, or to dynamically change the way a component handles
+* events without adding a lot of special-case code to the panel itself.
+* Behaviors are stored in a linked list, and all behaviors get a crack at an event before
+* the owner gets a crack at them (right now, we rely on objects that implement
+* BehaviorOwner to support these semantics).
+* Behavior provides all the same event-handling functions that Component provides, and
+* they all have exactly the same syntax and semantics. */
+abstract class Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Behavior fNextBehavior = null;
+    private BehaviorOwner fOwner = null;
+
+    static class EventType {
+
+        EventType() {
+        }
+    }
+
+    // events - should these be in TextPanel (or elsewhere)?
+
+    // This event's WHAT parameter is a TextRange instance
+    static final EventType SELECT = new EventType();
+
+    // No WHAT param for these:
+    static final EventType CUT = new EventType();
+    static final EventType COPY = new EventType();
+    static final EventType PASTE = new EventType();
+    static final EventType CLEAR = new EventType();
+    static final EventType UNDO = new EventType();
+    static final EventType REDO = new EventType();
+    static final EventType CLEAR_COMMAND_LOG = new EventType();
+
+    // WHAT param is a StyleModifier
+    static final EventType CHARACTER_STYLE_MOD = new EventType();
+    static final EventType PARAGRAPH_STYLE_MOD = new EventType();
+
+    // With this event, values of the WHAT parameter are
+    // either Boolean.TRUE or Boolean.FALSE
+    static final EventType SET_MODIFIED = new EventType();
+
+    // WHAT param is a TextReplacement
+    static final EventType REPLACE = new EventType();
+
+    // WHAT param is an Integer
+    static final EventType SET_COMMAND_LOG_SIZE = new EventType();
+
+    public Behavior() {
+    }
+
+    public void addToOwner(BehaviorOwner owner) {
+        removeFromOwner();
+        fOwner = owner;
+        setNextBehavior(owner.getBehavior());
+        owner.setBehavior(this);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusGained(e);
+        else
+            return false;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusLost(e);
+        else
+            return false;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyPressed(e);
+        else
+            return false;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (fNextBehavior != null) {
+            return fNextBehavior.keyTyped(e);
+        }
+        else {
+            return false;
+        }
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyReleased(e);
+        else
+            return false;
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseDragged(e);
+        else
+            return false;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseEntered(e);
+        else
+            return false;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseExited(e);
+        else
+            return false;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseMoved(e);
+        else
+            return false;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseReleased(e);
+        else
+            return false;
+    }
+
+    public final Behavior nextBehavior() {
+        return fNextBehavior;
+    }
+
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        if (fNextBehavior != null)
+            return fNextBehavior.paint(g, drawRect);
+        else
+            return false;
+    }
+
+    public void removeFromOwner() {
+        if (fOwner != null) {
+            if (fOwner.getBehavior() == this)
+                fOwner.setBehavior(nextBehavior());
+            else {
+                Behavior    current = fOwner.getBehavior();
+
+                while (current != null && current.nextBehavior() != this)
+                    current = current.nextBehavior();
+                if (current != null)
+                    current.setNextBehavior(nextBehavior());
+            }
+            setNextBehavior(null);
+            fOwner = null;
+        }
+    }
+
+    public final void setNextBehavior(Behavior next) {
+        fNextBehavior = next;
+    }
+
+    public boolean textControlEventOccurred(EventType event, Object data) {
+        if (fNextBehavior != null)
+            return fNextBehavior.textControlEventOccurred(event, data);
+        else
+            return false;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/BehaviorOwner.java b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
new file mode 100644
index 0000000..e82fed9
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
@@ -0,0 +1,20 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+interface BehaviorOwner {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public Behavior getBehavior();
+    public void setBehavior(Behavior b);
+}
diff --git a/src/com/ibm/richtext/textpanel/Command.java b/src/com/ibm/richtext/textpanel/Command.java
new file mode 100644
index 0000000..0ddd27f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Command.java
@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+abstract class Command {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fPreviousCommand = null;
+
+    // fModified is used to keep a textModified flag for
+    // clients
+    private boolean fModified;
+
+    public Command() {
+        fModified = true;
+    }
+
+    public Command previousCommand() {
+        return fPreviousCommand;
+    }
+
+    public void setPreviousCommand(Command  previousCommand) {
+        fPreviousCommand = previousCommand;
+    }
+
+    public abstract void execute();
+    public abstract void undo();
+
+    public void redo() {
+        execute();
+    }
+
+    public final boolean isModified() {
+
+        return fModified;
+    }
+
+    public final void setModified(boolean modified) {
+
+        fModified = modified;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/FakeComponent.java b/src/com/ibm/richtext/textpanel/FakeComponent.java
new file mode 100644
index 0000000..c38cd88
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/FakeComponent.java
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Graphics;
+
+abstract class FakeComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected Component fHost;
+    
+    abstract void addNotify();
+    abstract void paint(Graphics g);
+    void setHost(Component host) {   
+        fHost = host;
+    }
+    abstract void requestFocus();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
new file mode 100644
index 0000000..12e057f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
@@ -0,0 +1,181 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   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;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+// NOTE: this class eliminates Arabic vowels which look ugly
+// in the font in which we happen to be demo'ing.  It's totally
+// bogus otherwise.
+final class HackArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': //return '\u064E'; // ARABIC FATHA
+            case 'E': //return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': //return '\u0650'; // ARABIC KASRA
+            case 'I': //return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': //return '\u064F'; // ARABIC DAMMA
+            case 'O': //return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': //return '\u064C'; // ARABIC DAMMATAN
+            case 'u': //return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/HebrewTransliteration.java b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
new file mode 100644
index 0000000..b4fe538
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/**
+ * This class implements KeyRemap to produce transliterated Hebrew
+ * characters from Latin-1 characters.
+ */
+
+final class HebrewTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case 'a': return '\u05D0'; // HEBREW LETTER ALEF
+            case 'A': return '\u05E2'; // HEBREW LETTER AYIN
+            case 'b': return '\u05D1'; // HEBREW LETTER BET
+            case 'B': return '\u05D1'; // HEBREW LETTER BET
+            case 'c': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'C': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'd': return '\u05D3'; // HEBREW LETTER DALET
+            case 'D': return '\u05BC'; // HEBREW POINT DAGESH
+            case 'e': return '\u05B5'; // HEBREW POINT TSERE
+            case 'E': return '\u05B6'; // HEBREW POINT SEGOL
+            case 'f': return '\u05E4'; // HEBREW LETTER PE
+            case 'F': return '\u05E4'; // HEBREW LETTER PE
+            case 'g': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'G': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'h': return '\u05D4'; // HEBREW LETTER HE
+            case 'H': return '\u05D7'; // HEBREW LETTER HET
+            case 'i': return '\u05D9'; // HEBREW LETTER YOD
+            case 'I': return '\u05B4'; // HEBREW POINT HIRIQ
+            case 'j': return '\u05D9'; // HEBREW LETTER YOD
+            case 'J': return '\u05C1'; // HEBREW POINT SHIN DOT
+            case 'k': return '\u05DB'; // HEBREW LETTER KAF
+            case 'K': return '\u05DA'; // HEBREW LETTER FINAL KAF
+            case 'l': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'L': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'm': return '\u05DE'; // HEBREW LETTER MEM
+            case 'M': return '\u05DD'; // HEBREW LETTER FINAL MEM
+            case 'n': return '\u05E0'; // HEBREW LETTER NUN
+            case 'N': return '\u05DF'; // HEBREW LETTER FINAL NUN
+            case 'o': return '\u05D5'; // HEBREW LETTER VAV
+            case 'O': return '\u05B9'; // HEBREW POINT HOLAM
+            case 'p': return '\u05E4'; // HEBREW LETTER PE
+            case 'P': return '\u05E3'; // HEBREW LETTER FINAL PE
+            case 'q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'Q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'r': return '\u05E8'; // HEBREW LETTER RESH
+            case 'R': return '\u05BF'; // HEBREW POINT RAFE
+            case 's': return '\u05E9'; // HEBREW LETTER SHIN
+            case 'S': return '\u05E1'; // HEBREW LETTER SAMEKH
+            case 't': return '\u05EA'; // HEBREW LETTER TAV
+            case 'T': return '\u05D8'; // HEBREW LETTER TET
+            case 'u': return '\u05D5'; // HEBREW LETTER VAV
+            case 'U': return '\u05BB'; // HEBREW POINT QUBUTS
+            case 'v': return '\u05D5'; // HEBREW LETTER VAV
+            case 'V': return '\u05B7'; // HEBREW POINT PATAH
+            case 'w': return '\u05D5'; // HEBREW LETTER VAV
+            case 'W': return '\u05B8'; // HEBREW POINT QAMATS
+            case 'x': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'X': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'Y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'z': return '\u05D6'; // HEBREW LETTER ZAYIN
+            case 'Z': return '\u05C2'; // HEBREW POINT SIN DOT
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
new file mode 100644
index 0000000..2718d06
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class simulates a Nikud keyboard on a US-English
+ * keyboard.  It is very much a work in progress.
+ */
+
+final class IsraelNikudKeyboard extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch(c) {
+            case 't': return '\u05D0'; // alef
+            case 'c': return '\u05D1'; // bet
+            case 'd': return '\u05D2'; // gimel
+            case 's': return '\u05D3'; // dalet
+            case 'v': return '\u05D4'; // he
+            case 'u': return '\u05D5'; // vav
+            case 'z': return '\u05D6'; // zayin
+            case 'j': return '\u05D7'; // het
+            case 'y': return '\u05D8'; // tet
+            case 'h': return '\u05D9'; // yod
+            case 'l': return '\u05DA'; // final kaf
+            case 'f': return '\u05DB'; // kaf
+            case 'k': return '\u05DC'; // lamed
+            case 'o': return '\u05DD'; // final mem
+            case 'n': return '\u05DE'; // mem
+            case 'i': return '\u05DF'; // final nun
+            case 'b': return '\u05E0'; // nun
+            case 'x': return '\u05E1'; // samech
+            case 'g': return '\u05E2'; // ayin
+            case ';': return '\u05E3'; // final pe
+            case 'p': return '\u05E4'; // pe
+            case '.': return '\u05E5'; // final tsadi
+            case 'm': return '\u05E6'; // tsadi
+            case 'e': return '\u05E7'; // qof
+            case 'r': return '\u05E8'; // resh
+            case 'a': return '\u05E9'; // shin
+            case ',': return '\u05EA'; // tav
+            case 'w': return ',';
+            case 'q': return '/';
+            case '/': return '.';
+        }
+
+        return c;
+    }
+
+    public char remap(KeyEvent keyEvent) {
+
+        //  Note:  only one ctrl case now (ctrl-/ -> dagesh).
+        //  Better implementation will be needed for more cases.
+
+        if (keyEvent.isControlDown()) {
+            if (keyEvent.getKeyCode() == KeyEvent.VK_SLASH) {
+                return '\u05BC'; // dagesh
+            }
+        }
+
+        return remap(keyEvent.getKeyChar());
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/JTextPanel.java b/src/com/ibm/richtext/textpanel/JTextPanel.java
new file mode 100644
index 0000000..b7cd622
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/JTextPanel.java
@@ -0,0 +1,583 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Adjustable;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JPanel;
+import javax.swing.JComponent;
+import javax.swing.JScrollBar;
+import javax.swing.SwingUtilities;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * JTextPanel is an implementation of MTextPanel in a Swing JPanel.
+ * @see MTextPanel
+ */
+public final class JTextPanel extends JPanel implements MTextPanel {
+
+    private static final long serialVersionUID = -675600228641043590L;
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new JTextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public JTextPanel(MConstText initialText,
+                      java.awt.datatransfer.Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new JTextPanel.
+     * @param settings the settings for this JTextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public JTextPanel(TextPanelSettings settings,
+                      MConstText initialText,
+                      Clipboard clipboard) {
+        
+        super(false);
+        
+        JScrollBar horzSb = null;
+        JScrollBar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new JScrollBar(Adjustable.HORIZONTAL);
+                vertSb = new JScrollBar(Adjustable.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+        
+        RunStrategy runStrategy = new RunStrategy() {
+            void doIt(Runnable r) {
+                try {
+                    SwingUtilities.invokeAndWait(r);
+                }
+                catch(InterruptedException e) {
+                    // If operation was interrupted, then client
+                    // called wait or sleep (or something similar)
+                    // which is inappropriate for a client of this
+                    // class.  Rethrow error and let client handle it.
+                    e.printStackTrace();
+                    throw new Error("Interrupted in RunStrategy: " + e);
+                }
+                catch(InvocationTargetException e) {
+                    // Who knows how this one happens...
+                    e.printStackTrace();
+                    throw new Error("InvocationTargetException in RunStrategy: " + e);
+                }
+            }
+        };
+        
+        fImpl = new ATextPanelImpl(runStrategy,
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        JComponent textHost = new JComponent() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+            private static final long serialVersionUID = 1L;
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the JTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the JTextPanel.
+     * @return the length of the text document in the JTextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the JTextPanel.
+     * @return the text document in the JTextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+
+    public void setBackground(Color color) {
+        super.setBackground (color);
+        java.awt.Component[] compList = getComponents();
+        for (int i = 0; i < compList.length; i++) {
+            if (!(compList[i] instanceof JScrollBar)) {
+                compList[i].setBackground (color);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/KeyEventForwarder.java b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
new file mode 100644
index 0000000..e1c82a6
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class forwards key events to a TextPanel component for
+ * testing purposes.
+ * Its sole reason for existence is to prevent the key-event
+ * API from being public on MTextPanel, and being mistaken for
+ * standard API.  This class is only for testing!  It may be
+ * removed from public API at any time.  Do not depend on this
+ * class.
+ */
+public final class KeyEventForwarder {
+
+    private ATextPanelImpl fPanelImpl;
+
+    public KeyEventForwarder(TextPanel textPanel) {
+
+        fPanelImpl = textPanel.getImpl();
+    }
+    
+    public KeyEventForwarder(JTextPanel textPanel) {
+    
+        fPanelImpl = textPanel.getImpl();
+    }
+
+    public void handleKeyEvent(KeyEvent keyEvent) {
+
+        fPanelImpl.handleKeyEvent(keyEvent);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/KeyRemap.java b/src/com/ibm/richtext/textpanel/KeyRemap.java
new file mode 100644
index 0000000..f1c3cdc
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyRemap.java
@@ -0,0 +1,116 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * KeyRemap maps keys on a standard US keyboard to characters
+ * in other alphabets.  Currently, mappings to Arabic, Hebrew
+ * and Thai are supported.  In the future, clients may be
+ * to define their own mappings by subclassing this class.
+ * <P>
+ * @see TextPanel#setKeyRemap
+ */
+
+public class KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a new KeyRemap.
+     */
+    protected KeyRemap() {
+    }
+
+    /**
+     * This method returns the character on the simulated keyboard
+     * which is (most likely) generated by typing the character c
+     * on the actual keyboard.  For greater accuracy, use the remap
+     * method which takes a KeyEvent, since it can take modifier
+     * keys into account.
+     * @arg c a character on the actual keyboard
+     * @return the character on the simulated keyboard which would
+     *         result from the key combination which produced the
+     *         given character on the actual keyboard
+     */
+    /*public*/ char remap(char c) {
+
+        return c;
+    }
+
+    /**
+     * Return the character on the simulated keyboard
+     * which keyEvent generates.
+     * @arg keyEvent a key event from the actual keyboard
+     * @return the character on the simulated keyboard generated by
+     *         keyEvent
+     */
+    /*public*/ char remap(KeyEvent keyEvent) {
+
+        return remap(keyEvent.getKeyChar());
+    }
+
+    private static final KeyRemap IDENTITY = new KeyRemap();
+    private static final KeyRemap ARABIC_TRANSLITERATION = new ArabicTransliteration();
+    private static final KeyRemap HEBREW_TRANSLITERATION = new HebrewTransliteration();
+    private static final KeyRemap ISRAEL_NIKUD = new IsraelNikudKeyboard();
+    private static final KeyRemap THAI = new ThaiKeyRemap();
+
+    /**
+     * Return a KeyRemap which maps every character to itself.
+     */
+    public static KeyRemap getIdentityRemap() {
+
+        return IDENTITY;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Arabic alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getArabicTransliteration() {
+
+        return ARABIC_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Hebrew alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getHebrewTransliteration() {
+
+        return HEBREW_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which emulates a standard Hebrew keyboard.
+     */
+    public static KeyRemap getIsraelNikud() {
+
+        return ISRAEL_NIKUD;
+    }
+    
+    /**
+     * Return a KeyRemap which emulates a Thai Ketmanee keyboard.
+     */
+    public static KeyRemap getThaiKetmanee() {
+        
+        return THAI;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/MTextPanel.java b/src/com/ibm/richtext/textpanel/MTextPanel.java
new file mode 100644
index 0000000..5ab1840
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/MTextPanel.java
@@ -0,0 +1,373 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * MTextPanel is implemented by Components which provide selectable
+ * editable styled text.
+ * <p>
+ * Implementations of MTextPanel provide a simple, standard user interface
+ * for text editing.  MTextPanel supplies scrollable display, typing, 
+ * arrow-key support, character selection, word-
+ * and sentence-selection (by double-clicking and triple-clicking, 
+ * respectively), text styles, clipboard operations (cut, copy and paste)
+ * and a log of changes for undo-redo.
+ * <p>
+ * MTextPanel implementations do not provide user interface elements
+ * such as an edit menu or style menu.  This support is provided in
+ * different packages, and is implemented with MTextPanel's API.
+ * MTextPanel includes methods for setting selections and styles on text,
+ * and using the clipboard and command-log functionality.
+ * MTextPanel's API for selection and text handling is similar to that
+ * of <tt>java.awt.TextArea</tt> and
+ * <tt>java.awt.TextComponent</tt>.
+ * <p>
+ * MTextPanel supports bidirectional and complex text.  In bidirectional
+ * text, offsets at direction boundaries have dual carets.  Logical selection
+ * is used, so selections across run directions may not be contiguous in
+ * display.
+ */
+public interface MTextPanel {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * This value is returned from <tt>getCharacterStyleOverSelection</tt>
+     * and <tt>getParagraphStyleOverSelection</tt> to indicate that the
+     * selection range contains multiple values for a key.
+     * <p>
+     * There is no reason for this Object ever to appear in an AttributeMap
+     * as a value.  Obviously, if it does there will be no way to distinguish
+     * between multiple values across the selection and a consistent value of
+     * <tt>MULTIPLE_VALUES</tt> for the key.
+     * @see #getCharacterStyleOverSelection
+     * @see #getParagraphStyleOverSelection
+     */
+    public static final Object MULTIPLE_VALUES = new Object();
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener);
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener);
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the MTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText);
+    
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText);
+    
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position);
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end);
+
+    /**
+     * Return the length of the text document in the MTextPanel.
+     * @return the length of the text document in the MTextPanel
+     */
+    public int getTextLength();
+
+    /**
+     * Return the text document in the MTextPanel.
+     * @return the text document in the MTextPanel.
+     */
+    public MConstText getText();
+    
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart();
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd();
+    
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart);
+    
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd);
+    
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position);
+    
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd);
+    
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll();
+    
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth();
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset);
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo();
+    
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo();
+    
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty();
+    
+
+//============
+// Styles
+//============
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues();
+    
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key);
+    
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key);
+    
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut();
+    
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy();
+    
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste();
+    
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear();
+    
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo();
+    
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo();
+    
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize();
+    
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size);
+    
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog();
+    
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap();
+    
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap);
+    
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified();
+    
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified);
+}
diff --git a/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
new file mode 100644
index 0000000..f9c76bd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Image;
+import java.awt.Component;
+
+class OffscreenBufferCache {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Image fOffscreenBuffer = null;
+    private Component fHost;
+
+    OffscreenBufferCache(Component host) {
+
+        fHost = host;
+    }
+
+    private Image makeBuffer(int width, int height) {
+
+        return fHost.createImage(Math.max(width, 1), Math.max(height, 1));
+    }
+
+    Image getBuffer(int width, int height) {
+
+        Image buffer = fOffscreenBuffer;
+
+        if (buffer != null) {
+            if (buffer.getWidth(fHost) >= width &&
+                    buffer.getHeight(fHost) >= height) {
+                return buffer;
+            }
+        }
+
+        buffer = makeBuffer(width, height);
+        fOffscreenBuffer = buffer;
+        return buffer;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
new file mode 100644
index 0000000..cb3c846
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
@@ -0,0 +1,98 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.Vector;
+
+/**
+ * This class listens for text state change notifications
+ * and broadcasts them to all of its listeners.
+ */
+final class PanelEventBroadcaster {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int FIRST = TextPanelEvent.TEXT_PANEL_FIRST;
+
+    private final Vector[] fListeners;
+    private final TextPanelEvent[] fEvents;
+
+    /**
+     * Construct a new PanelEventBroadcaster.
+     * @param panel the TextPanel for which events are broadcasted
+     */
+    public PanelEventBroadcaster(MTextPanel panel) {
+
+        int count = TextPanelEvent.TEXT_PANEL_LAST - FIRST + 1;
+
+        fEvents = new TextPanelEvent[count];
+        fListeners = new Vector[count];
+        
+        for (int i=0; i < fListeners.length; i++) {
+            fEvents[i] = new TextPanelEvent(panel, i+FIRST);
+            fListeners[i] = new Vector();
+        }
+    }
+
+    /**
+     * Add the given TextPanelListener to the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to add
+     */
+    public synchronized void addListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                if (!listeners.contains(listener)) {
+                    listeners.addElement(listener);
+                }
+            }
+        }
+    }
+
+    /**
+     * Remove the given TextPanelListener from the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to remove
+     */
+    public synchronized void removeListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                listeners.removeElement(listener);
+            }
+        }
+    }
+
+    /**
+     * Receive a notification and forward it to all listeners.
+     * @changeCode one of the constants in the TextPanelListener class
+     */
+    public synchronized void textStateChanged(int id) {
+
+        int index = id-FIRST;
+        TextPanelEvent event = fEvents[index];
+        Vector listeners = fListeners[index];
+        
+        int size = listeners.size();
+
+        for (int i=0; i < size; i++) {
+
+            TextPanelListener listener =
+                            (TextPanelListener) listeners.elementAt(i);
+            listener.textEventOccurred(event);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/RunStrategy.java b/src/com/ibm/richtext/textpanel/RunStrategy.java
new file mode 100644
index 0000000..3c47147
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/RunStrategy.java
@@ -0,0 +1,20 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+class RunStrategy {
+    
+    void doIt(Runnable r) {
+        r.run();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/ScrollBarLayout.java b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
new file mode 100644
index 0000000..8b5c988
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
@@ -0,0 +1,151 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+
+class ScrollBarLayout implements LayoutManager {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    Component   fHorizScrollBar = null;
+    Component   fVertScrollBar = null;
+    Component   fChild = null;
+
+    public ScrollBarLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+
+        if ("Center".equals(name))
+            fChild = comp;
+        else if ("South".equals(name))
+            fHorizScrollBar = comp;
+        else if ("East".equals(name))
+            fVertScrollBar = comp;
+    }
+
+    public void layoutContainer(Container target) {
+
+        Insets      insets = target.getInsets();
+        Dimension   targetSize = target.getSize();
+        int         hsbHeight = (fHorizScrollBar != null) ? fHorizScrollBar.getPreferredSize().
+                            height : 0;
+        int         vsbWidth = (fVertScrollBar != null) ? fVertScrollBar.getPreferredSize().
+                            width : 0;
+
+        if (fHorizScrollBar != null)
+            fHorizScrollBar.setBounds(insets.left, targetSize.height - insets.bottom -
+                                hsbHeight, targetSize.width - vsbWidth, hsbHeight);
+
+        if (fVertScrollBar != null)
+            fVertScrollBar.setBounds(targetSize.width - insets.right - vsbWidth,
+                                insets.top, vsbWidth, targetSize.height - hsbHeight);
+
+        if (fChild != null)
+            fChild.setBounds(insets.left, insets.top, targetSize.width - insets.right - vsbWidth,
+                                targetSize.height - insets.bottom - hsbHeight);
+    }
+
+    public Dimension minimumLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getMinimumSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getMinimumSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getMinimumSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public Dimension preferredLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getPreferredSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getPreferredSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getPreferredSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public void removeLayoutComponent(Component comp) {
+
+        if (comp == fChild)
+            fChild = null;
+        else if (comp == fHorizScrollBar)
+            fHorizScrollBar = null;
+        else if (comp == fVertScrollBar)
+            fVertScrollBar = null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Scroller.java b/src/com/ibm/richtext/textpanel/Scroller.java
new file mode 100644
index 0000000..82ccb27
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Scroller.java
@@ -0,0 +1,205 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/*
+    7/9/97 - changed some deprecated methods in Scrollbar
+            Also setting Unit and Block increment values.  Maybe
+            it matters...
+    6/29/98 - reimplemented this class.  Now this class talks to
+              any component which implements Scroller.Client.
+              ScrollHolder is gone, too.
+    2/4/99 - No longer a Panel.  Also, doesn't create Scrollbars,
+             and in fact doesn't even use the Scrollbar class
+             directly.
+*/
+
+import java.awt.Component;
+import java.awt.Rectangle;
+
+import java.awt.event.AdjustmentListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.Adjustable;
+
+/**
+* This class manages the interaction between a scrollable client
+* and vertical and horizontal scrollbars.  It calls the client's
+* scrollTo method in response to manipulation of the scroll bars.
+*
+* This class used to be a Panel containing the scrollbars and
+* the client panel.  As part of the migration away from direct
+* AWT dependencies, this class is no longer part of the view
+* hierarchy.  Instead it simply keeps a reference to its
+* client and scroll bars.  It is the responsibility of higher-
+* level classes to set up the view hierarchy.
+*/
+final class Scroller implements AdjustmentListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static interface Client {
+        void scrollTo(int x, int y);
+        Rectangle getScrollSize();
+        Rectangle getBounds();
+    }
+
+    private Adjustable fHorizScrollBar = null;
+    private Adjustable fVertScrollBar = null;
+    private Client fClient = null;
+
+    /**
+     * These are used if the respective Scrollbar is not present.
+     */
+    private int fHorizValue, fVertValue;
+
+    private static final int DEFAULT_UNIT_INC = 10;
+
+    /**
+     * Construct a new Scroller with the given Adjustables,
+     * which really should be scrollbars of some ilk.
+     * Also, the Adjustables are required to be AWT Components,
+     * so the Scroller can enable and disable them.
+     * However, a Scroller can work with either AWT Scrollbars
+     * or JFC JScrollbars.
+     * @param horizScrollBar the horizontal scrollbar.  null if
+     * there is no horizontal scrollbar.
+     * @param vertScrollBar the vertical scrollbar.  null if
+     * there is no vertical scrollbar.
+     */
+    public Scroller(Adjustable horizScrollBar,
+                    Adjustable vertScrollBar) {
+
+        //setLayout(new ScrollBarLayout());
+
+        fHorizScrollBar = horizScrollBar;
+        fVertScrollBar = vertScrollBar;
+
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fVertScrollBar.addAdjustmentListener(this);
+        }
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fHorizScrollBar.addAdjustmentListener(this);
+        }
+    }
+
+    public void setClient(Client client) {
+
+        fClient = client;
+        clientScrollSizeChanged();
+    }
+
+    public void adjustmentValueChanged(AdjustmentEvent event) {
+
+        // variable not used boolean horizontal;
+        if (event.getAdjustable() == fHorizScrollBar) {
+            int vertVal = fVertScrollBar == null? fVertValue :
+                                        fVertScrollBar.getValue();
+            scrollTo(event.getValue(), vertVal);
+        }
+        else {
+            int horizVal = fHorizScrollBar == null? fHorizValue :
+                                        fHorizScrollBar.getValue();
+            scrollTo(horizVal, event.getValue());
+        }
+    }
+
+    private void setValues(Adjustable scrollbar,
+                           int visible,
+                           int minimum,
+                           int height) {
+
+        int maximum = minimum+height;
+        
+        if (scrollbar != null) {
+
+            Component scrollbarToo = (Component) scrollbar;
+
+            if (maximum <= visible) {
+                scrollbarToo.setEnabled(false);
+            }
+            else {
+                scrollbarToo.setEnabled(true);
+            }
+            
+            scrollbar.setMinimum(minimum);
+            scrollbar.setMaximum(maximum);
+            scrollbar.setVisibleAmount(visible);
+        // workaround setBlockIncrement warnings for increments < 1
+        scrollbar.setBlockIncrement(Math.max(1, visible - DEFAULT_UNIT_INC));
+        }
+    }
+
+
+    public void clientScrollSizeChanged()
+    {
+        Rectangle bounds = fClient.getBounds();
+        Rectangle preferredSize = fClient.getScrollSize();
+
+        setValues(fHorizScrollBar, bounds.width, preferredSize.x, preferredSize.width);
+        setValues(fVertScrollBar, bounds.height, preferredSize.y, preferredSize.height);
+    }
+
+    public void setPosition(int x, int y) {
+
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setValue(x);
+        }
+        else {
+            fHorizValue = x;
+        }
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setValue(y);
+        }
+        else {
+            fVertValue = y;
+        }
+    }
+
+    private void scrollTo(int x, int y)
+    {
+        fClient.scrollTo(x, y);
+    }
+
+    public void setHorizLineDistance(int newDistance)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setHorizPageOverlap(int newOverlap)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fHorizScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+
+    public void setVertLineDistance(int newDistance)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setVertPageOverlap(int newOverlap)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fVertScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
new file mode 100644
index 0000000..59538fd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
@@ -0,0 +1,201 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.textformat.TextOffset;
+
+final class SelectionDragInteractor extends Behavior implements Runnable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private RunStrategy fRunStrategy;
+    
+    private TextOffset fAnchorStart; // aliases text offsets - client beware
+    private TextOffset fAnchorEnd;
+    private TextOffset fCurrent;
+
+    private final boolean fWasZeroLength;
+
+    private int fCurrentX;
+    private int fCurrentY;
+    private boolean fMouseOutside;
+
+    private Thread fAutoscrollThread = null;
+    private boolean fThreadRun = true;
+
+    private static final int kScrollSleep = 300;
+
+    public SelectionDragInteractor(TextSelection selection,
+                                   TextComponent textComponent,
+                                   RunStrategy runStrategy,
+                                   TextOffset anchorStart,
+                                   TextOffset anchorEnd,
+                                   TextOffset current,
+                                   int initialX,
+                                   int initialY,
+                                   boolean wasZeroLength) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fRunStrategy = runStrategy;
+        fAnchorStart = anchorStart;
+        fAnchorEnd = anchorEnd;
+        fCurrent = current;
+
+        fCurrentX = initialX;
+        fCurrentY = initialY;
+        fMouseOutside = false;
+
+        fWasZeroLength = wasZeroLength;
+        
+        setSelection();
+    }
+    
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        return true;
+    }
+
+    public boolean focusGained(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyTyped(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyReleased(KeyEvent event) {
+
+        return true;
+    }
+
+    public synchronized boolean mouseDragged(MouseEvent e) {
+
+        int x = e.getX(), y = e.getY();
+        if (fCurrentX != x || fCurrentY != y) {
+            fCurrentX = x;
+            fCurrentY = y;
+            processMouseLocation();
+        }
+        return true;
+    }
+
+    public synchronized boolean mouseEnter(MouseEvent e) {
+
+        fMouseOutside = false;
+        return true;
+    }
+
+    public synchronized boolean mouseExited(MouseEvent e) {
+
+        if (fAutoscrollThread == null) {
+            fAutoscrollThread = new Thread(this);
+            fAutoscrollThread.start();
+        }
+        fMouseOutside = true;
+        notify();
+
+        return true;
+    }
+
+    public synchronized boolean mouseReleased(MouseEvent e) {
+
+        fMouseOutside = false;
+        fThreadRun = false;
+        if (fAutoscrollThread != null) {
+            fAutoscrollThread.interrupt();
+        }
+        
+        removeFromOwner();
+        boolean isZeroLength = TextSelection.rangeIsZeroLength(fAnchorStart,
+                                                               fAnchorEnd,
+                                                               fCurrent);
+        fSelection.mouseReleased(isZeroLength != fWasZeroLength);
+
+        return true;
+    }
+
+    private void processMouseLocation() {
+
+        fTextComponent.scrollToShow(fCurrentX, fCurrentY);
+        fTextComponent.pointToTextOffset(fCurrent, fCurrentX, fCurrentY, null, true);
+        setSelection();
+    }
+
+    private void setSelection() {
+
+        if (fCurrent.greaterThan(fAnchorEnd)) {
+            fSelection.advanceToNextBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fCurrent, fAnchorStart);
+        }
+        else if (fCurrent.lessThan(fAnchorStart)) {
+            fSelection.advanceToPreviousBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fCurrent, fAnchorEnd, fAnchorStart);
+        }
+        else {
+            fCurrent.assign(fAnchorEnd);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fAnchorEnd, fAnchorStart);
+        }
+    }
+
+    public void run() {
+
+        Runnable doMouseLoc = new Runnable() {
+            public void run() {
+                processMouseLocation();
+            }
+        };
+        
+        while (fThreadRun) {
+
+            try {
+                Thread.sleep(kScrollSleep);
+            }
+            catch(InterruptedException e) {
+                return; // just quit scrolling
+            }
+
+            synchronized(this) {
+
+                while (!fMouseOutside) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        return; // just quit scrolling
+                    }
+                }
+
+                fRunStrategy.doIt(doMouseLoc);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SimpleCommandLog.java b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
new file mode 100644
index 0000000..27d52c4
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
@@ -0,0 +1,175 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+final class SimpleCommandLog {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fLastCommand = null;
+    private Command fCurrentCommand = null;
+    private PanelEventBroadcaster fListener;
+
+    private boolean fBaseIsModified;
+
+    private int fLogSize = 14;
+
+    public SimpleCommandLog(PanelEventBroadcaster listener) {
+        fListener = listener;
+        fBaseIsModified = false;
+    }
+
+    /** adds the specfied command to the top of the command stack
+    * (any undone commands on the stack are removed)
+    * This function assumes the command has already been executed (i.e., its execute() method
+    * has been called, or an equivalent action has been taken) */
+    void add(Command newCommand) {
+        // if there are commands on the stack that have been undone, they are
+        // dropped on the floor here
+        newCommand.setPreviousCommand(fCurrentCommand);
+        
+        final Command oldLastCommand = fLastCommand;
+        fLastCommand = null;
+        
+        fCurrentCommand = newCommand;
+        limitCommands(fLogSize);
+        
+        if (oldLastCommand != null) {
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /**
+     * If the command list is longer than logSize, truncate it.
+     * This method traverses the list each time, and is not a model
+     * of efficiency.  It's a temporary way to plug this memory leak
+     * until I can implement a bounded command log.
+     */
+    private void limitCommands(int logSize) {
+
+        if (logSize == 0) {
+            fCurrentCommand = null;
+        }
+        else {
+            Command currentCommand = fCurrentCommand;
+            int remaining = logSize-1;
+            while (currentCommand != null && remaining > 0) {
+                currentCommand = currentCommand.previousCommand();
+                remaining -= 1;
+            }
+            if (currentCommand != null) {
+                currentCommand.setPreviousCommand(null);
+            }
+        }
+    }
+
+    /** adds the specfied command to the top of the command stack and executes it */
+    void addAndDo(Command newCommand) {
+        add(newCommand);
+        newCommand.execute();
+
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    /** undoes the command on the top of the command stack, if there is one */
+    void undo() {
+        if (fCurrentCommand != null) {
+            Command current = fCurrentCommand;
+            current.undo();
+
+            fCurrentCommand = current.previousCommand();
+
+            current.setPreviousCommand(fLastCommand);
+            fLastCommand = current;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /** redoes the last undone command on the command stack, if there are any */
+    void redo() {
+        if (fLastCommand != null) {
+            Command last = fLastCommand;
+            last.redo();
+
+            fLastCommand = last.previousCommand();
+
+            last.setPreviousCommand(fCurrentCommand);
+            fCurrentCommand = last;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean canUndo() {
+        return fCurrentCommand != null;
+    }
+
+    public boolean canRedo() {
+        return fLastCommand != null;
+    }
+
+    public boolean isModified() {
+
+        if (fCurrentCommand == null) {
+            return fBaseIsModified;
+        }
+        else {
+            return fCurrentCommand.isModified();
+        }
+    }
+
+    public void setModified(boolean modified) {
+
+        if (fCurrentCommand == null) {
+            fBaseIsModified = modified;
+        }
+        else {
+            fCurrentCommand.setModified(modified);
+        }
+    }
+
+    public void clearLog() {
+
+        if (fCurrentCommand != null) {
+            fBaseIsModified = fCurrentCommand.isModified();
+        }
+        // variable not used boolean changed = fCurrentCommand != null || fLastCommand != null;
+        fCurrentCommand = null;
+        fLastCommand = null;
+        
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    public void setLogSize(int size) {
+
+        if (size < 0) {
+            throw new IllegalArgumentException("log size cannot be negative");
+        }
+        
+        if (size < fLogSize) {
+            limitCommands(size);
+        }
+        
+        fLogSize = size;
+        
+        if (fLastCommand != null || size == 0) {
+            fLastCommand = null;
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public int getLogSize() {
+
+        return fLogSize;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyleChangeCommand.java b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
new file mode 100644
index 0000000..7e213cb
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class StyleChangeCommand extends TextCommand {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fCharacter;
+    private StyleModifier fModifier;
+
+    public StyleChangeCommand(TextEditBehavior behavior,
+                              MText originalText,
+                              TextOffset selStartBefore,
+                              TextOffset selEndBefore,
+                              StyleModifier modifier,
+                              boolean character) {
+
+        super(behavior, originalText, selStartBefore.fOffset, selStartBefore, selEndBefore);
+        fModifier = modifier;
+        fCharacter = character;
+    }
+
+    public int affectedRangeEnd() {
+        return fSelEndBefore.fOffset;
+    }
+
+    public void execute() {
+        fBehavior.doModifyStyles(fAffectedRangeStart, fSelEndBefore.fOffset,
+                                 fModifier, fCharacter, fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyledTextClipboard.java b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
new file mode 100644
index 0000000..6731fbd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
@@ -0,0 +1,217 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.awt.Toolkit;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+
+/**
+* Wrapper for java.awt.datatransfer.Clipboard
+* Packages an MConstText in a transferable, and puts it on the clipboard.
+*/
+
+class StyledTextClipboard implements ClipboardOwner {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // This class has a workaround for a bug in the Windows system clipboard.
+    // The system clipboard will only return String content, even
+    // though it has a reference to the contents.  So if our
+    // clipboard is the system clipboard, we'll keep a reference
+    // to the content and use that instead of what the Clipboard returns.
+
+    private static Clipboard SYSTEM = null;
+    static {
+        try {
+            SYSTEM = Toolkit.getDefaultToolkit().getSystemClipboard();
+        }
+        catch(Throwable th) {
+        }
+    }
+
+    private static StyledTextClipboard fgSystemClipboard = null;
+
+    public static StyledTextClipboard getClipboardFor(Clipboard clipboard) {
+
+        if (clipboard == SYSTEM && SYSTEM != null) {
+            synchronized(SYSTEM) {
+                if (fgSystemClipboard == null) {
+                    fgSystemClipboard = new StyledTextClipboard(SYSTEM, true);
+                }
+            }
+            return fgSystemClipboard;
+        }
+        else {
+            return new StyledTextClipboard(clipboard, false);
+        }
+    }
+
+    private Clipboard fClipboard;
+    private boolean fUseLocalContents;
+    private Transferable fContents = null;
+
+    private StyledTextClipboard(Clipboard clipboard, boolean useLocalContents) {
+
+        if (clipboard == null) {
+            fClipboard = new Clipboard("TextPanel clipboard");
+        }
+        else {
+            fClipboard = clipboard;
+        }
+
+        fUseLocalContents = useLocalContents;
+    }
+
+    public void lostOwnership(Clipboard clipboard,
+                              Transferable contents) {
+        if (contents == fContents) {
+            this.fContents = null;
+        }
+    }
+
+    public void setContents(MConstText newContents) {
+
+        TransferableText contents = new TransferableText(newContents);
+        if (fClipboard == SYSTEM) {
+            fContents = contents;
+        }
+        fClipboard.setContents(contents, this);
+    }
+
+    private Transferable getClipboardContents() {
+
+        if (fUseLocalContents && fContents != null) {
+            return fContents;
+        }
+
+        return fClipboard.getContents(this);
+    }
+
+    /**
+     * Has contents - faster than getContents for finding out whether the
+     * clipboard has text.
+     */
+    public boolean hasContents() {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return false;
+        }
+
+        return contents.isDataFlavorSupported(MConstText.styledTextFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.stringFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.plainTextFlavor);
+    }
+
+    private String getString(InputStream inStream) throws IOException {
+
+        String value = new String();
+        int bytesRead;
+
+        do {
+            byte inBytes[] = new byte[inStream.available()];
+            bytesRead = inStream.read(inBytes);
+
+            if (bytesRead != -1)
+                value = value + new String(inBytes);
+
+        } while (bytesRead != -1);
+
+        return value;
+    }
+
+    /**
+     * If the Clipboard has text content, return it as an
+     * MConstText.  Otherwise return null.
+     * @param defaultStyle the style to apply to unstyled
+     *      text (such as a String).  If the clipboard
+     *      has styled text this parameter is not used.
+     */
+    public MConstText getContents(AttributeMap defaultStyle) {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return null;
+        }
+
+        DataFlavor flavors[] = contents.getTransferDataFlavors();
+
+        // search flavors for our flavor, String flavor and raw text flavor
+
+        Exception ex = null;
+
+        try {
+           int i;
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(MConstText.styledTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(MConstText.styledTextFlavor);
+                if (data == null)
+                    System.out.println("Data is null.");
+                return (MConstText) data;
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.stringFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.stringFlavor);
+                return new StyledText((String) data, defaultStyle);
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.plainTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.plainTextFlavor);
+
+                String textString = getString((InputStream) data);
+                return new StyledText(textString, defaultStyle);
+            }
+        }
+        catch(UnsupportedFlavorException e) {
+            ex = e;
+        }
+        catch(IOException e) {
+            ex = e;
+        }
+
+        System.out.println("Exception when retrieving data.  Exception:" + ex);
+        return null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextChangeCommand.java b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
new file mode 100644
index 0000000..d337055
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class TextChangeCommand extends TextCommand {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fNewText;
+    private TextOffset fSelStartAfter;
+    private TextOffset fSelEndAfter;
+
+    public TextChangeCommand(TextEditBehavior behavior,
+                             MText originalText,
+                             MConstText newText,
+                             int affectedRangeStart,
+                             TextOffset selStartBefore,
+                             TextOffset selEndBefore,
+                             TextOffset selStartAfter,
+                             TextOffset selEndAfter) {
+        super(behavior, originalText, affectedRangeStart, selStartBefore, selEndBefore);
+        fNewText = newText;
+        fSelStartAfter = new TextOffset();
+        fSelStartAfter.assign(selStartAfter);
+        fSelEndAfter = new TextOffset();
+        fSelEndAfter.assign(selEndAfter);
+    }
+
+    public int affectedRangeEnd() {
+        if (fNewText == null)
+            return fAffectedRangeStart;
+        else
+            return fAffectedRangeStart + fNewText.length();
+    }
+
+    public void execute() {
+        fBehavior.doReplaceText(fAffectedRangeStart, fAffectedRangeStart + fOriginalText.length(),
+                            fNewText, fSelStartAfter, fSelEndAfter);
+    }
+
+    public int affectedRangeStart() {
+        return fAffectedRangeStart;
+    }
+
+    public void setNewText(MConstText newText) {
+        fNewText = newText;
+    }
+
+    public void setSelRangeAfter(TextOffset start, TextOffset end) {
+        if (fSelStartAfter == null)
+            fSelStartAfter = new TextOffset();
+        if (fSelEndAfter == null)
+            fSelEndAfter = new TextOffset();
+        fSelStartAfter.assign(start);
+        fSelEndAfter.assign(end);
+    }
+
+    public void prependToOldText(MConstText newText) {
+        fOriginalText.insert(0, newText);
+        fAffectedRangeStart -= newText.length();
+    }
+
+    public void appendToOldText(MConstText newText) {
+        fOriginalText.append(newText);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextCommand.java b/src/com/ibm/richtext/textpanel/TextCommand.java
new file mode 100644
index 0000000..5730d7b
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextCommand.java
@@ -0,0 +1,48 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+abstract class TextCommand extends Command {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected TextEditBehavior fBehavior;
+    protected MText fOriginalText;
+    protected int fAffectedRangeStart;
+    protected TextOffset fSelStartBefore;
+    protected TextOffset fSelEndBefore;
+
+    public TextCommand(TextEditBehavior behavior,
+                       MText originalText,
+                       int affectedRangeStart,
+                       TextOffset selStartBefore,
+                       TextOffset selEndBefore) {
+
+        fBehavior = behavior;
+        fOriginalText = originalText;
+        fAffectedRangeStart = affectedRangeStart;
+        fSelStartBefore = new TextOffset();
+        fSelStartBefore.assign(selStartBefore);
+        fSelEndBefore = new TextOffset();
+        fSelEndBefore.assign(selEndBefore);
+    }
+
+    public abstract int affectedRangeEnd();
+
+    public void undo() {
+        fBehavior.doReplaceText(fAffectedRangeStart, affectedRangeEnd(), fOriginalText,
+                            fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextComponent.java b/src/com/ibm/richtext/textpanel/TextComponent.java
new file mode 100644
index 0000000..83b1e8c
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextComponent.java
@@ -0,0 +1,953 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.awt.event.ComponentAdapter;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import java.awt.event.ComponentEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+class TextComponent extends FakeComponent
+                    implements BehaviorOwner,
+                    FocusListener,
+                    KeyListener,
+                    MouseListener,
+                    MouseMotionListener,
+                    Scroller.Client {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static final int WINDOW_WIDTH = -10;
+    public static final int DEFAULT_INSET = 10;
+
+    private static final Color STRONG_CARET_COLOR = Color.black;
+    private static final Color WEAK_CARET_COLOR = Color.darkGray;
+
+    private Behavior fBehavior;
+    private MText fText;
+    private StyledTextClipboard fClipboard;
+    private boolean fScrolls;
+    private Scroller fScroller;
+
+    private DocumentView fDocumentView = null;
+
+    // sigh - can't create DocumentView until addNotify() is called.
+    // These values hold DocumentView ctor args
+    private AttributeMap fDefaultValues;
+    private boolean fViewWraps;
+    private int fViewWrapWidth;
+    private int fViewInsetAmount;
+    
+    private PanelEventBroadcaster fListener;
+
+    /**
+     * Create a new TextComponent.
+     * @param text the text model.  This model will be used for
+     * the life of the component, even if setText is called
+     * @param wraps if true, the text is wrapped to the specified
+     * wrapping width.  If false, the text wraps only at paragraph breaks.
+     * @param wrapWidth ignored if wraps is false.  Text wraps to this width
+     * unless the width is WINDOW_WIDTH, in which case text wraps to width
+     * of this component. Should not be negative (unless it is WINDOW_WIDTH).
+     * @param insetAmount the size of the margins around the text
+     * @param clipboard the clipboard to use for cut/copy/paste operations.
+     * If null, the component will use its own clipboard.
+     */
+    public TextComponent(MText text,
+                         AttributeMap defaultValues,
+                         boolean wraps,
+                         int wrapWidth,
+                         int insetAmount,
+                         StyledTextClipboard clipboard,
+                         boolean scrolls,
+                         Scroller scroller,
+                         PanelEventBroadcaster listener) {
+
+        fBehavior = null;
+
+        if (text == null) {
+            throw new IllegalArgumentException("Text is null.");
+        }
+
+        fText = text;
+        fDefaultValues = defaultValues;
+        
+        if (clipboard == null) {
+            throw new IllegalArgumentException("Clipboard is null.");
+        }
+        fClipboard = clipboard;
+
+        fScrolls = scrolls;
+
+        fScroller = scroller;
+
+        fDocumentView = null;
+
+        fViewWrapWidth = wrapWidth;
+        fViewWraps = wraps;
+        fViewInsetAmount = insetAmount;
+        fListener = listener;
+    }
+    
+    AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    void setHost(Component component) {
+        
+        super.setHost(component);
+        
+        component.addFocusListener(this);
+        component.addKeyListener(this);
+        component.addMouseListener(this);
+        component.addMouseMotionListener(this);
+        
+        component.addComponentListener(new ComponentAdapter() {        
+            public void componentResized(ComponentEvent e) {
+                if (fDocumentView != null) {
+                    fDocumentView.hostSizeChanged();
+                    scrollToShow(fDocumentView.getDocumentBounds());
+                }
+            }
+        });
+    }
+    
+    /**
+     * ATextPanelImpl's use only!
+     */
+    Component getHost() {
+    
+        return fHost;
+    }
+    
+    // Create document view here.  TextComponent isn't fully constructed
+    // until this is called.
+    // This must be called by host component!
+    void addNotify() {
+
+        Graphics g = getGraphics();
+        if (g == null) {
+            throw new Error("Graphics should be valid here but isn't.");
+        }
+
+        fDocumentView = new DocumentView(this,
+                                         fText,
+                                         fDefaultValues,
+                                         fViewWraps,
+                                         fViewWrapWidth,
+                                         fViewInsetAmount,
+                                         fListener);
+        documentSizeChanged();
+        fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+    }
+    
+    public Rectangle getBounds() {
+        
+        if (fHost != null) {
+            return fHost.getBounds();
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+    
+    Graphics getGraphics() {
+        
+        return (fHost==null)? null : fHost.getGraphics();
+    }
+    
+    void requestFocus() {
+        
+        if (fHost != null) {
+            fHost.requestFocus();
+        }
+    }
+
+    // *** Behavior management ***
+    public Behavior getBehavior() {
+        return fBehavior;
+    }
+
+    public void setBehavior(Behavior b) {
+        fBehavior = b;
+    }
+
+
+    // *** Events - just forward to behavior ***
+    public void focusGained(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusGained(event);
+    }
+
+    public void focusLost(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusLost(event);
+    }
+
+    public void keyPressed(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyPressed(event);
+    }
+
+    public void keyTyped(KeyEvent event) {
+
+        if (fBehavior != null) {
+            fBehavior.keyTyped(event);
+        }
+    }
+
+    public void keyReleased(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyReleased(event);
+    }
+
+    public void mouseClicked(MouseEvent event) {
+        // no behavior method for this
+    }
+
+    public void mouseDragged(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseDragged(event);
+    }
+
+    public void mouseEntered(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseEntered(event);
+    }
+
+    public void mouseExited(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseExited(event);
+    }
+
+    public void mouseMoved(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseMoved(event);
+    }
+
+    public void mousePressed(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mousePressed(event);
+    }
+
+    public void mouseReleased(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseReleased(event);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = false;
+
+        if (fBehavior != null) {
+            handled = fBehavior.textControlEventOccurred(event, what);
+        }
+        return handled;
+    }
+
+
+    // *** Scroll methods - called by Behaviors
+
+    // viewStart, viewLimit is visible bounds of window
+    // targetStart, targetLimit is the region to scroll into view
+    private static int getScrollDifference(int viewStart,
+                                           int viewLimit,
+                                           int targetStart,
+                                           int targetLimit) {
+
+        if (viewStart <= targetStart) {
+            if (viewLimit >= targetLimit) {
+                return 0;
+            }
+            return Math.max(viewStart-targetStart, viewLimit-targetLimit);
+        }
+        else if (viewLimit > targetLimit) {
+
+            return viewLimit - targetLimit;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    void scrollToShow(Rectangle showRect) {
+
+        if (fDocumentView != null) {
+            Rectangle bounds = getBounds();
+
+            int dx = getScrollDifference(showRect.x, showRect.x + showRect.width,
+                                         bounds.x, bounds.x + bounds.width);
+            int dy = getScrollDifference(showRect.y, showRect.y + showRect.height,
+                                         bounds.y, bounds.y + bounds.height);
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    void scrollToShow(int showX, int showY) {
+
+        if (fDocumentView != null) {
+            int dx = 0, dy = 0;
+
+            Rectangle bounds = getBounds();
+            if (showX < bounds.x) {
+                dx = showX - bounds.x;
+            }
+            else if (showX > bounds.x + bounds.width) {
+                dx = showX - (bounds.x + bounds.width);
+            }
+
+            if (showY < bounds.y) {
+                dy = showY - bounds.y;
+            }
+            else if (showY > bounds.y + bounds.height) {
+                dy = showY - (bounds.y + bounds.height);
+            }
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    private int pinScrollOffset(int delta,
+                                int contentStart,
+                                int contentLength,
+                                int viewStart,
+                                int viewLength) {
+
+        if (delta > 0) {
+            int viewLimit = viewStart + viewLength;
+            int contentLimit = contentStart + contentLength;
+
+            if (viewLimit + delta > contentLimit) {
+                delta = Math.max(0, contentLimit-viewLimit);
+            }
+        }
+        else {
+            if (viewStart + delta < contentStart) {
+                delta = Math.min(0, contentStart-viewStart);
+            }
+        }
+
+        return delta;
+    }
+
+    private void scrollSelf(int dx, int dy) {
+
+        boolean scrolled = scrollBy(dx, dy);
+
+        if (scrolled && fScroller != null) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            fScroller.setPosition(-documentBounds.x,
+                                  -documentBounds.y);
+        }
+    }
+
+    private synchronized boolean scrollBy(int dx, int dy) {
+
+        boolean scrolled = false;
+
+        if (fScrolls) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            Rectangle viewBounds = getBounds();
+            
+            // variable not used int oldDx = dx;
+            dx = pinScrollOffset(dx, 
+                                 documentBounds.x,
+                                 documentBounds.width,
+                                 viewBounds.x,
+                                 viewBounds.width);
+            dy = pinScrollOffset(dy, 
+                                 documentBounds.y,
+                                 documentBounds.height,
+                                 viewBounds.y,
+                                 viewBounds.height);
+
+            if (dx != 0 || dy != 0) {
+                scrolled = true;
+                fDocumentView.moveBy(-dx, -dy);
+            }
+        }
+
+        return scrolled;
+    }
+
+    // implementation of Scroller.Client - called by Scroller
+    // they have to be public since they're in an interface
+    // no one else should call these methods
+    public Rectangle getScrollSize() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getScrollableArea();
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+
+    public void scrollTo(int x, int y) {
+
+        if (fDocumentView != null) {
+            scrollBy(x + fDocumentView.getDocX(), y + fDocumentView.getDocY());
+        }
+    }
+
+    // *** Text access ***
+    MConstText getText() {
+        return fText;
+    }
+
+    MText getModifiableText() {
+        return fText;
+    }
+
+    StyledTextClipboard getClipboard() {
+        return fClipboard;
+    }
+
+    public synchronized void paint(Graphics g) {
+
+        if (fDocumentView != null) {
+            fDocumentView.paint(g);
+        }
+    }
+
+
+    // *** Metric info - used by Behaviors
+    Rectangle getCaretRect(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getCaretRect(offset);
+        }
+        return new Rectangle(0, 0);
+    }
+
+    TextOffset pointToTextOffset(TextOffset result,
+                                 int x,
+                                 int y,
+                                 TextOffset anchor,
+                                 boolean infiniteMode) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.pointToTextOffset(result, x, y, anchor, infiniteMode);
+        }
+        return new TextOffset();
+    }
+
+    // *** Other stuff used by Behaviors - mostly formatter exports
+    int lineContaining(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineContaining(offset);
+        }
+        return 0;
+    }
+
+    int lineRangeLow(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLow(lineNumber);
+        }
+        return 0;
+    }
+
+    int lineRangeLimit(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLimit(lineNumber);
+        }
+        return 0;
+    }
+
+    void stopBackgroundFormatting() {
+
+        if (fDocumentView != null) {
+            fDocumentView.stopBackgroundFormatting();
+        }
+    }
+
+    Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getBoundingRect(offset1, offset2);
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+
+    synchronized void reformatAndDrawText(int reformatStart,
+                             int reformatLength,
+                             TextOffset selStart,
+                             TextOffset selEnd,
+                             Rectangle additionalUpdateRect,
+                             Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.reformatAndDrawText(reformatStart,
+                                              reformatLength,
+                                              selStart,
+                                              selEnd,
+                                              additionalUpdateRect,
+                                              hiliteColor);
+        }
+    }
+
+    TextOffset findNewInsertionOffset(TextOffset result,
+                                      TextOffset initialOffset,
+                                      TextOffset previousOffset,
+                                      short direction) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.findNewInsertionOffset(result, initialOffset, previousOffset, direction);
+        }
+        return new TextOffset(initialOffset);
+    }
+
+    synchronized void drawText(Graphics g,
+                  Rectangle damagedRect,
+                  boolean selectionVisible,
+                  TextOffset selStart,
+                  TextOffset selEnd,
+                  Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.drawText(g, damagedRect, selectionVisible, selStart, selEnd, hiliteColor);
+        }
+    }
+
+    private void documentSizeChanged() {
+
+        if (fScroller != null) {
+            fScroller.clientScrollSizeChanged();
+        }
+    }
+
+    int getFormatWidth() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getFormatWidth();
+        }
+        return 0;
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    boolean paragraphIsLeftToRight(int offset) {
+        
+        if (fDocumentView != null) {
+            return fDocumentView.paragraphIsLeftToRight(offset);
+        }
+        return true;
+    }
+    
+    private static final class DocumentView {
+
+        private TextComponent fHost;
+        private boolean fWrapToWindowWidth;
+        private int fInsetAmount;
+        private PanelEventBroadcaster fListener;
+
+        // fBounds is the total scrollable area of the document (including insets)
+        private Rectangle fBounds = new Rectangle();
+        
+        private Point fOrigin;
+
+        private MFormatter fFormatter;
+
+        private OffscreenBufferCache fBufferCache;
+
+        // Note, when this is true the caret won't blink in 1.1.  Looks like an AWT bug.
+        private static boolean fNoOffscreenBuffer =
+                            Boolean.getBoolean("TextComponent.NoOffscreenBuffer");
+
+        // Amount by which to reduce the format width to allow for right-aligned carets.
+        private final int CARET_SLOP = 1;
+
+        DocumentView(TextComponent host,
+                     MConstText text,
+                     AttributeMap defaultValues,
+                     boolean wraps,
+                     int wrapWidth,
+                     int insetAmount,
+                     PanelEventBroadcaster listener) {
+
+            fHost = host;
+            fWrapToWindowWidth = wrapWidth == WINDOW_WIDTH;
+            fInsetAmount = insetAmount;
+            fListener = listener;
+
+            initFormatterAndSize(text, defaultValues, wraps, wrapWidth);
+
+            fBufferCache = new OffscreenBufferCache(host.fHost);
+        }
+        
+        /**
+         * Note: this computes the bounds rectangle relative to fOrigin
+         */
+        private void calcBoundsRect() {
+        
+            final int insetDim = 2 * fInsetAmount;
+
+            final int minX = fFormatter.minX();
+            final int minY = fFormatter.minY();
+
+            fBounds.setBounds(fOrigin.x + minX - fInsetAmount,
+                              fOrigin.y + minY - fInsetAmount,
+                              fFormatter.maxX() - minX + insetDim, 
+                              fFormatter.maxY() - minY + insetDim);
+            //if (minX <= 0) {
+            //    System.out.println("calcBoundsRect: minX="+minX+
+            //                       "; bounds.x="+fBounds.x+"; width="+fBounds.width);
+            //}
+        }
+
+        private void initFormatterAndSize(MConstText text, 
+                                          AttributeMap defaultValues,
+                                          boolean wraps,
+                                          int wrapWidth) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            int formatWidth;
+
+            if (!wraps || fWrapToWindowWidth) {
+                formatWidth = hostBounds.width - 2 * fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+            }
+            else {
+                formatWidth = wrapWidth;
+            }
+
+            fFormatter = MFormatter.createFormatter(text,
+                                                    defaultValues,
+                                                    formatWidth-CARET_SLOP,
+                                                    wraps,
+                                                    fHost.getGraphics());
+
+            fFormatter.formatToHeight(hostBounds.height * 2);
+            fOrigin = new Point(fInsetAmount, fInsetAmount);
+            calcBoundsRect();
+        }
+
+        // notification method called by TextComponent
+        void hostSizeChanged() {
+
+            final boolean wrap = fFormatter.wrap();
+            if (fWrapToWindowWidth || !wrap) {
+
+                Rectangle hostBounds = fHost.getBounds();
+                // variable not used final int insetDim = 2 * fInsetAmount;
+
+                int formatWidth = hostBounds.width - 2*fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+                fFormatter.setLineBound(formatWidth-CARET_SLOP);
+
+                fFormatter.formatToHeight(hostBounds.y + (hostBounds.height*2) - fOrigin.y);
+
+                calcBoundsRect();
+                
+                //System.out.println("Window bounds="+hostBounds+"; document bounds="+fBounds);
+
+                fHost.documentSizeChanged();
+                fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+                //System.out.println("formatWidth="+formatWidth);
+                //System.out.println("document bounds="+fBounds);
+                //System.out.println();
+            }
+            //dumpWidthInfo();
+        }
+
+        int getFormatWidth() {
+
+            return fFormatter.lineBound();
+        }
+        
+        boolean paragraphIsLeftToRight(int offset) {
+            
+            int lineNumber = fFormatter.lineContaining(offset);
+            return fFormatter.lineIsLeftToRight(lineNumber);
+        }
+
+        private void textSizeMightHaveChanged() {
+
+            boolean changed = false;
+            final int insetDim = 2 * fInsetAmount;
+            
+            int textHeight = fFormatter.maxY() - fFormatter.minY() + insetDim;
+            if (textHeight != fBounds.height) {
+                fBounds.height = textHeight;
+                changed = true;
+            }
+
+            if (!fFormatter.wrap()) {
+                int textWidth = fFormatter.maxX() - fFormatter.minX() + insetDim;
+                if (textWidth != fBounds.width) {
+                    fBounds.width = textWidth;
+                    changed = true;
+                }
+            }
+
+            if (changed) {
+                //System.out.println("Text size changed.  fBounds: " + fBounds);
+                calcBoundsRect();
+                fHost.documentSizeChanged();
+                fHost.scrollToShow(getDocumentBounds());
+            }
+        }
+
+        private void doDrawText(Graphics g,
+                                Rectangle drawRect,
+                                boolean selectionVisible,
+                                TextOffset selStart,
+                                TextOffset selEnd,
+                                Color hiliteColor) {
+
+            Color oldColor = g.getColor();
+            g.setColor(fHost.getHost().getBackground());
+            g.fillRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+            g.setColor(oldColor);
+
+            //            g.clearRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+
+            if (selectionVisible) {
+                fFormatter.draw(g, drawRect, fOrigin, selStart, selEnd, hiliteColor);
+            }
+            else {
+                fFormatter.draw(g, drawRect, fOrigin, null, null, null);
+            }
+
+            if (selStart != null && selStart.equals(selEnd) && selectionVisible) {
+
+                fFormatter.drawCaret(g, selStart, fOrigin,
+                                    STRONG_CARET_COLOR, WEAK_CARET_COLOR);
+            }
+        }
+
+        void drawText(Graphics g,
+                      Rectangle drawRect,
+                      boolean selectionVisible,
+                      TextOffset selStart,
+                      TextOffset selEnd,
+                      Color hiliteColor) {
+
+            if (g != null) {
+                drawRect = drawRect.intersection(fHost.getBounds());
+                //System.out.println("drawText:drawRect: " + drawRect);
+                g.clipRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+                if (fNoOffscreenBuffer) {
+                    doDrawText(g, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+                }
+                else {
+                    Image offscreenBuffer = fBufferCache.getBuffer(drawRect.width, drawRect.height);
+                    Graphics offscreenGraphics = offscreenBuffer.getGraphics();
+                    offscreenGraphics.translate(-drawRect.x, -drawRect.y);
+    
+                    doDrawText(offscreenGraphics, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+    
+                    g.drawImage(offscreenBuffer, drawRect.x, drawRect.y, fHost.fHost);
+                }
+            }
+            textSizeMightHaveChanged();
+        }
+
+        void reformatAndDrawText(int reformatStart,
+                                 int reformatLength,
+                                 TextOffset selStart,
+                                 TextOffset selEnd,
+                                 Rectangle additionalUpdateRect,
+                                 Color hiliteColor) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Rectangle redrawRect = fFormatter.updateFormat(reformatStart,
+                                                           reformatLength,
+                                                           visibleBounds,
+                                                           fOrigin);
+            //System.out.println("[1] redrawRect: " + redrawRect);
+
+            if (additionalUpdateRect != null) {
+                redrawRect.add(additionalUpdateRect);
+                //System.out.println("[2] redrawRect: " + redrawRect);
+            }
+
+            boolean haveSelection;
+
+            if (selStart != null && selEnd != null) {
+                haveSelection = true;
+                redrawRect.add(fFormatter.getBoundingRect(selStart, selEnd, fOrigin, MFormatter.LOOSE));
+                //System.out.println("[3] redrawRect: " + redrawRect);
+            }
+            else {
+                haveSelection = false;
+            }
+
+            drawText(fHost.getGraphics(), redrawRect, haveSelection, selStart, selEnd, hiliteColor);
+        }
+
+        private void letBehaviorDraw(Graphics g, Rectangle drawRect) {
+
+            boolean result = false;
+
+            if (fHost.fBehavior != null) {
+                result = fHost.fBehavior.paint(g, drawRect);
+            }
+
+            if (!result) {
+                drawText(g, drawRect, false, null, null, null);
+            }
+        }
+
+        void moveBy(int dx, int dy) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Graphics g = fHost.getGraphics();
+
+            fBounds.x += dx;
+            fBounds.y += dy;
+            fOrigin.x += dx;
+            fOrigin.y += dy;
+
+            Rectangle refreshRect = new Rectangle(visibleBounds);
+
+            if (dx == 0) {
+                if (g != null) {
+                    g.copyArea(visibleBounds.x, visibleBounds.y, visibleBounds.width, visibleBounds.height, dx, dy);
+                }
+                if (dy < 0) {
+                    refreshRect.y = visibleBounds.y + visibleBounds.height + dy;
+                }
+                refreshRect.height = Math.abs(dy);
+                //System.out.println("refreshRect=" + refreshRect);
+            }
+
+            letBehaviorDraw(g, refreshRect);
+        }
+        
+        private Rectangle getInsetBounds() {
+            
+            int insetDim = 2 * fInsetAmount;
+            return new Rectangle(fBounds.x-fInsetAmount,
+                                 fBounds.y-fInsetAmount,
+                                 fBounds.width+insetDim,
+                                 fBounds.height+insetDim);
+        }
+
+        void paint(Graphics g) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            Rectangle textRefreshRect = hostBounds.intersection(getInsetBounds());
+            letBehaviorDraw(g, textRefreshRect);
+        }
+
+        Rectangle getCaretRect(TextOffset offset) {
+
+            return fFormatter.getCaretRect(offset, fOrigin);
+        }
+
+        TextOffset pointToTextOffset(TextOffset result,
+                                     int x,
+                                     int y,
+                                     TextOffset anchor,
+                                     boolean infiniteMode) {
+
+            return fFormatter.pointToTextOffset(result, x, y, fOrigin, anchor, infiniteMode);
+        }
+
+        Rectangle getScrollableArea() {
+
+            Rectangle area = new Rectangle(fBounds);
+            area.x += fInsetAmount - fOrigin.x;
+            area.y += fInsetAmount - fOrigin.y;
+            return area;
+        }
+
+        /**
+         * Doesn't clone so TextComponent needs to be nice.  TextComponent
+         * is the only class which can access this anyway.
+         */
+        Rectangle getDocumentBounds() {
+
+            return fBounds;
+        }
+        
+        int getDocX() {
+        
+            return fOrigin.x - fInsetAmount;
+        }
+        
+        int getDocY() {
+        
+            return fOrigin.y - fInsetAmount;
+        }
+
+        int lineContaining(TextOffset offset) {
+
+            return fFormatter.lineContaining(offset);
+        }
+
+        int lineRangeLow(int lineNumber) {
+
+            return fFormatter.lineRangeLow(lineNumber);
+        }
+
+        int lineRangeLimit(int lineNumber) {
+
+            return fFormatter.lineRangeLimit(lineNumber);
+        }
+
+        void stopBackgroundFormatting() {
+
+            fFormatter.stopBackgroundFormatting();
+        }
+
+        Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+            Rectangle r = fFormatter.getBoundingRect(offset1, offset2, fOrigin, MFormatter.TIGHT);
+            //r.width += CARET_SLOP;
+            //System.out.println("offset1="+offset1+"; offset2="+offset2);
+            //System.out.println("bounds width="+r.width+"; host width="+(fHost.getBounds().width));
+            return r;
+        }
+
+        TextOffset findNewInsertionOffset(TextOffset result,
+                                          TextOffset initialOffset,
+                                          TextOffset previousOffset,
+                                          short direction) {
+
+            return fFormatter.findNewInsertionOffset(
+                        result, initialOffset, previousOffset, direction);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextEditBehavior.java b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
new file mode 100644
index 0000000..630589c
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
@@ -0,0 +1,481 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Rectangle;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+// All changes to the text should happen in this class, or in
+// its TypingInteractor.
+
+class TextEditBehavior extends Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private MText fText;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private TypingInteractor fTypingInteractor = null;
+    private KeyRemap fRemap;
+    
+    private AttributeMap fSavedTypingStyle = null;
+    private int fSavedInsPt = 0;
+    
+    public TextEditBehavior(TextComponent textComponent,
+                            TextSelection selection,
+                            PanelEventBroadcaster listener,
+                            KeyRemap remap) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fText = textComponent.getModifiableText();
+        fCommandLog = new SimpleCommandLog(listener);
+        fListener = listener;
+        fRemap = remap;
+    }
+
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    public void setKeyRemap(KeyRemap remap) {
+
+        fRemap = remap;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = true;
+        
+        if (event == Behavior.CHARACTER_STYLE_MOD ||
+            event == Behavior.PARAGRAPH_STYLE_MOD) {
+            doStyleChange(event, what);
+        }
+        else if (event == Behavior.CUT) {
+            doCut();
+        }
+        else if (event == Behavior.PASTE) {
+            doPaste();
+        }
+        else if (event == Behavior.CLEAR) {
+            doClear();
+        }
+        else if (event == Behavior.REPLACE) {
+            doUndoableReplace((TextReplacement) what);
+        }
+        else if (event == Behavior.UNDO) {
+            fCommandLog.undo();
+        }
+        else if (event == Behavior.REDO) {
+            fCommandLog.redo();
+        }
+        else if (event == Behavior.SET_MODIFIED) {
+            fCommandLog.setModified(what == Boolean.TRUE);
+        }
+        else if (event == Behavior.CLEAR_COMMAND_LOG) {
+            fCommandLog.clearLog();
+        }
+        else if (event == Behavior.SET_COMMAND_LOG_SIZE) {
+            fCommandLog.setLogSize(((Integer)what).intValue());
+        }
+        else {
+            handled = super.textControlEventOccurred(event, what);
+        }
+
+        checkSavedTypingStyle();
+        
+        return handled;
+    }
+
+    /**
+     * It's unfortunate that the text is modified and reformatted in
+     * three different methods.  This method is the "common prologue"
+     * for all text modifications.
+     *
+     * This method should be called before modifying and reformatting
+     * the text.  It does three things:  stops caret blinking, stops
+     * background formatting, and returns the Rectangle containing the
+     * current (soon-to-be obsolete) selection.
+     */
+    private Rectangle prepareForTextEdit() {
+
+        fSelection.stopCaretBlinking();
+        fTextComponent.stopBackgroundFormatting();
+        return fTextComponent.getBoundingRect(fSelection.getStart(), fSelection.getEnd());
+    }
+
+    private void doClear() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.
+                            start), new TextOffset(selRange.start));
+    }
+
+    private void doCut() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        fTextComponent.getClipboard().setContents(fText.extract(selRange.start, selRange.limit));
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.start), new TextOffset(selRange.start));
+
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+    }
+
+    private void doPaste() {
+        TextRange selRange = fSelection.getSelectionRange();
+        MConstText clipText = fTextComponent.getClipboard().getContents(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        if (clipText != null) {
+            doUndoableTextChange(selRange.start, selRange.limit, clipText,
+                                new TextOffset(selRange.start + clipText.length()),
+                                new TextOffset(selRange.start + clipText.length()));
+        }
+        else {
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+        }
+    }
+
+    private void doUndoableReplace(TextReplacement replacement) {
+
+        doUndoableTextChange(replacement.getStart(),
+                             replacement.getLimit(),
+                             replacement.getText(),
+                             replacement.getSelectionStart(),
+                             replacement.getSelectionLimit());
+    }
+
+    /**
+     * Only TypingInteractor and TextCommand should call this!
+     */
+    void doReplaceText(int start,
+                       int limit,
+                       MConstText newText,
+                       TextOffset newSelStart,
+                       TextOffset newSelEnd) {
+
+        int textLength;
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (newText == null) {
+            textLength = 0;
+            fText.remove(start, limit);
+        }
+        else {
+            textLength = newText.length();
+            fText.replace(start, limit, newText, 0, textLength);
+        }
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    /**
+     * Only the typing interactor should call this!
+     */
+    void doReplaceSelectedText(char ch, AttributeMap charStyle) {
+
+        int start = fSelection.getStart().fOffset;
+        int limit = fSelection.getEnd().fOffset;
+        TextOffset newOffset = new TextOffset(start + 1);
+        doReplaceText(start, limit, ch, charStyle, newOffset, newOffset);
+    }
+
+    private void doReplaceText(int start,
+                               int limit,
+                               char ch,
+                               AttributeMap charStyle,
+                               TextOffset newSelStart,
+                               TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        fText.replace(start, limit, ch, charStyle);
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    private void doStyleChange(Behavior.EventType event, Object what) {
+
+        TextRange selRange = fSelection.getSelectionRange();
+        boolean character = (event == Behavior.CHARACTER_STYLE_MOD);
+
+        if (selRange.start != selRange.limit || !character) {
+            doUndoableStyleChange(what, character);
+        }
+        else {
+            TypingInteractor interactor =
+                new TypingInteractor(fTextComponent, 
+                                     fSelection,
+                                     fSavedTypingStyle,
+                                     this,
+                                     fCommandLog,
+                                     fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.textControlEventOccurred(event, what);
+        }
+    }
+
+    /**
+     * Only text commands should call this method!
+     */
+    void doModifyStyles(int start,
+                        int limit,
+                        StyleModifier modifier,
+                        boolean character,
+                        TextOffset newSelStart,
+                        TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (character) {
+            fText.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            fText.modifyParagraphStyles(start, limit, modifier);
+        }
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(newSelStart,
+                            newSelEnd,
+                            oldSelRect);
+    }
+
+    private void doUndoableStyleChange(Object what,
+                                       boolean character) {
+
+        TextOffset selStart = fSelection.getStart();
+        TextOffset selEnd = fSelection.getEnd();
+
+        MText oldText = fText.extractWritable(selStart.fOffset, selEnd.fOffset);
+        StyleChangeCommand command = new StyleChangeCommand(
+                this, oldText, selStart, selEnd, (StyleModifier) what, character);
+
+        fCommandLog.addAndDo(command);
+
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+    }
+
+    private void doUndoableTextChange(int start,
+                                      int limit,
+                                      MConstText newText,
+                                      TextOffset newSelStart,
+                                      TextOffset newSelEnd) {
+
+        TextChangeCommand command = new TextChangeCommand(this, fText.extractWritable(start, limit),
+                                newText, start, fSelection.getStart(), fSelection.getEnd(),
+                                newSelStart, newSelEnd);
+
+        fCommandLog.addAndDo(command);
+    }
+
+    public boolean canUndo() {
+
+        boolean canUndo = false;
+
+        if (fTypingInteractor != null) {
+            canUndo = fTypingInteractor.hasPendingCommand();
+        }
+
+        if (!canUndo) {
+            canUndo = fCommandLog.canUndo();
+        }
+
+        return canUndo;
+    }
+
+    public boolean canRedo() {
+
+        return fCommandLog.canRedo();
+    }
+
+    public boolean isModified() {
+
+        if (fTypingInteractor != null) {
+            if (fTypingInteractor.hasPendingCommand()) {
+                return true;
+            }
+        }
+        return fCommandLog.isModified();
+    }
+
+    public int getCommandLogSize() {
+
+        return fCommandLog.getLogSize();
+    }
+
+    public AttributeMap getInsertionPointStyle() {
+
+        if (fTypingInteractor != null) {
+            return fTypingInteractor.getTypingStyle();
+        }
+
+        if (fSavedTypingStyle != null) {
+            return fSavedTypingStyle;
+        }
+        
+        TextRange range = fSelection.getSelectionRange();
+        return typingStyleAt(fText, range.start, range.limit);
+    }
+    
+    public boolean keyPressed(KeyEvent e) {
+
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent,
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyPressed(e);
+        }
+        else {
+            handled = super.keyPressed(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+        
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent, 
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyTyped(e);
+        }
+        else {
+            handled = super.keyTyped(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        
+        boolean result = super.mouseReleased(e);
+        checkSavedTypingStyle();
+        return result;
+    }
+    
+    private void reformatAndDrawText(TextOffset selStart,
+                                     TextOffset selLimit,
+                                     Rectangle oldSelRect)
+    {
+        if (!fSelection.enabled()) {
+            selStart = selLimit = null;
+        }
+
+        int reformatStart = fText.damagedRangeStart();
+        int reformatLength = fText.damagedRangeLimit() - reformatStart;
+
+        if (reformatStart != Integer.MAX_VALUE) {
+            fTextComponent.reformatAndDrawText(reformatStart,
+                                               reformatLength,
+                                               selStart,
+                                               selLimit,
+                                               oldSelRect,
+                                               fSelection.getHighlightColor());
+        }
+
+        fSelection.scrollToShowSelection();
+        
+        // sometimes this should send SELECTION_STYLES_CHANGED
+        fListener.textStateChanged(TextPanelEvent.TEXT_CHANGED);
+
+        fSelection.restartCaretBlinking(true);
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setTypingInteractor(TypingInteractor interactor) {
+        fTypingInteractor = interactor;
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setSavedTypingStyle(AttributeMap style, int insPt) {
+    
+        fSavedTypingStyle = style;
+        fSavedInsPt = insPt;
+    }
+    
+    private void checkSavedTypingStyle() {
+    
+        if (fSavedTypingStyle != null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            if (selStart != fSavedInsPt || selStart != selLimit) {
+                fSavedTypingStyle = null;
+            }
+        }            
+    }
+    
+    /**
+     * Return the style appropriate for typing on the given selection
+     * range.
+     */
+    public static AttributeMap typingStyleAt(MConstText text, int start, int limit) {
+
+        if (start < limit) {
+            return text.characterStyleAt(start);
+        }
+        else if (start > 0) {
+            return text.characterStyleAt(start - 1);
+        }
+        else {
+            return text.characterStyleAt(0);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanel.java b/src/com/ibm/richtext/textpanel/TextPanel.java
new file mode 100644
index 0000000..4ca4299
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanel.java
@@ -0,0 +1,543 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Scrollbar;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * TextPanel is an implementation of MTextPanel in an AWT Panel.
+ * @see MTextPanel
+ */
+public final class TextPanel extends Panel implements MTextPanel {
+
+    private static final long serialVersionUID = -8134791570789588104L;
+
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new TextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public TextPanel(MConstText initialText,
+                     Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new TextPanel.
+     * @param settings the settings for this TextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public TextPanel(TextPanelSettings settings,
+                     MConstText initialText,
+                     Clipboard clipboard) {
+
+        Scrollbar horzSb = null;
+        Scrollbar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new Scrollbar(Scrollbar.HORIZONTAL);
+                vertSb = new Scrollbar(Scrollbar.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+
+        fImpl = new ATextPanelImpl(new RunStrategy(),
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        Component textHost = new Component() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+            private static final long serialVersionUID = 1L;
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelEvent.java b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
new file mode 100644
index 0000000..da63a74
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
@@ -0,0 +1,157 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.EventObject;
+
+/**
+ * TextPanelEvent is generated by an MTextPanel to notify listeners
+ * of changes.  To receive TextPanelEvents from an MTextPanel, clients
+ * must implement TextPanelListener and add themselves to the MTextPanel's
+ * list of listeners.
+ * <p>
+ * Some event types are special cases of others.  This is intentional - it
+ * allows notifications to be sent less often in certain common cases.  For
+ * example, a change in the selection range generates a SELECTION_RANGE_CHANGED 
+ * event.  This is a very common occurrance, and if many clients listen for this
+ * event, there may be a significant performance penalty.  By
+ * listening for a more specialized event (such as SELECTION_EMPTY_CHANGED), clients
+ * can reduce the number of notifications sent.
+ * 
+ * @see MTextPanel
+ * @see TextPanelListener
+ */
+public final class TextPanelEvent extends EventObject {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 6971512969738427763L;
+
+    /**
+     * The lower bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_FIRST = 11;
+
+    /**
+     * Events of this type indicate a change in the selection range.
+     * This occurs quite often.  Most clients do not need to be 
+     * notified every time the selection range changes.
+     */
+    public static final int SELECTION_RANGE_CHANGED = 11;
+    
+    /**
+     * Events of this type are sent when the selection range becomes
+     * 0-length after not being 0-length, or vice versa.  This event
+     * is a special case of SELECTION_RANGE_CHANGED.
+     */
+    public static final int SELECTION_EMPTY_CHANGED = 12;
+    
+    /**
+     * Events of this type indicate that the text in the TextPanel changed.
+     * This type of event occurs often.
+     */
+    public static final int TEXT_CHANGED = 13;
+    
+    /**
+     * Events of this type are sent when the styles in the current
+     * selection change.
+     */
+    public static final int SELECTION_STYLES_CHANGED = 14;
+     
+    /**
+     * Events of this type are sent when the undo/redo state changes.
+     */
+    public static final int UNDO_STATE_CHANGED = 15;
+    
+    /**
+     * Events of this type are sent when the clipboard state changes.
+     */
+    public static final int CLIPBOARD_CHANGED = 16;
+    
+    /**
+     * Events of this type are sent when 
+     * the wrap width of the text changes.
+     */
+    public static final int FORMAT_WIDTH_CHANGED = 17;
+
+    /**
+     * Events of this type are sent when the key remap changes.
+     */
+    public static final int KEYREMAP_CHANGED = 18;
+
+    /**
+     * The upper bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_LAST = 18;
+
+    private int fId;
+
+    /**
+     * Create a new TextPanelEvent.
+     * @param source the MTextPanel which generated the event
+     * @param id the ID for this event.  Must be within
+     * [TEXT_PANEL_FIRST, TEXT_PANEL_LAST].
+     */
+    TextPanelEvent(MTextPanel source, int id) {
+
+        super(source);
+        if (id < TEXT_PANEL_FIRST || id > TEXT_PANEL_LAST) {
+            throw new IllegalArgumentException("id out of range");
+        }
+        fId = id;
+    }
+
+    /**
+     * Return the event ID for this event.  Event ID's are
+     * one of the class constants.
+     * @return the event ID for this event
+     */
+    public int getID() {
+
+        return fId;
+    }
+    
+    public String toString() {
+        
+        String desc = null;
+        
+        switch(fId) {
+            case SELECTION_RANGE_CHANGED:
+                desc = "SELECTION_RANGE_CHANGED";
+                break;
+            case SELECTION_EMPTY_CHANGED:
+                desc = "SELECTION_EMPTY_CHANGED";
+                break;
+            case TEXT_CHANGED:
+                desc = "TEXT_CHANGED";
+                break;
+            case SELECTION_STYLES_CHANGED:
+                desc = "SELECTION_STYLES_CHANGED";
+                break;
+            case UNDO_STATE_CHANGED:
+                desc = "UNDO_STATE_CHANGED";
+                break;
+            case CLIPBOARD_CHANGED:
+                desc = "CLIPBOARD_CHANGED";
+                break;
+            case FORMAT_WIDTH_CHANGED:
+                desc = "FORMAT_WIDTH_CHANGED";
+                break;
+            case KEYREMAP_CHANGED:
+                desc = "KEYREMAP_CHANGED";
+                break;
+        }
+        return "[TextPanelEvent:"+desc+"]";
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelListener.java b/src/com/ibm/richtext/textpanel/TextPanelListener.java
new file mode 100644
index 0000000..d4c9d41
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelListener.java
@@ -0,0 +1,40 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+ * This interface is implemented by classes which
+ * receive change notifications from an MTextPanel.
+ * @see MTextPanel
+ * @see TextPanelEvent
+ */
+public interface TextPanelListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Notify listener of an MTextPanel change.
+     * @param event a TextPanelEvent indicating what happened
+     */
+    public void textEventOccurred(TextPanelEvent event);
+    
+    /**
+     * Return true if listener needs to be notified of 
+     * the given event type.  This allows a text panel to avoid
+     * sending events to uninterested parties.
+     * @param type an event ID from TextPanelEvent
+     * @return true if this listener needs to be notified of
+     * events of the given type
+     */
+    public boolean respondsToEventType(int type);
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelSettings.java b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
new file mode 100644
index 0000000..34eb2a3
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
@@ -0,0 +1,284 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.io.Serializable;
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+
+/**
+ * This class contains settings used when constructing an MTextPanel.
+ * The settings controled by this class include:
+ * <ul>
+ * <li>whether the text in the MTextPanel can be scrolled</li>
+ * <li>whether scroll bars in the MTextPanel are visible</li>
+ * <li>whether the text in the MTextPanel can be selected</li>
+ * <li>whether the text in the MTextPanel can be edited</li>
+ * <li>whether lines of text wrap to the MTextPanel's width, or
+ * only end at paragraph separators</li>
+ * <li>the default values for unspecified styles</li>
+ * </ul>
+ * Some settings are dependent on others.  Scroll bars are visible
+ * only if the text is scrollable.  Also, text which is not editable
+ * if it is not selectable.
+ * <p>
+ *
+ * @see MTextPanel
+ */
+public final class TextPanelSettings implements Cloneable, Serializable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    static final long serialVersionUID = -4089186663018707478L;
+    
+    private static final AttributeMap DEFAULTS;
+    
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    private boolean fScrollable = true;
+    private boolean fScrollBarsVisible = true;
+    private boolean fSelectable = true;
+    private boolean fEditable = true;
+    private boolean fWraps = true;
+    private AttributeMap fDefaultValues = DEFAULTS;
+    
+    /**
+     * Create a TextPanelSettings instance with all settings
+     * set to true.
+     */
+    public TextPanelSettings() {
+    }
+
+    /**
+     * Return a new TextPanelSettings instance with the
+     * same settings as this.
+     * @return a new TextPanelSettings instance
+     */
+    public Object clone() {
+
+        TextPanelSettings rhs = new TextPanelSettings();
+
+        rhs.fScrollable = fScrollable;
+        rhs.fScrollBarsVisible = fScrollBarsVisible;
+        rhs.fSelectable = fSelectable;
+        rhs.fEditable = fEditable;
+        rhs.fWraps = fWraps;
+        rhs.fDefaultValues = fDefaultValues;
+        
+        return rhs;
+    }
+
+    /**
+     * Return the scrollable setting, which determines whether text
+     * in an MTextPanel can be scrolled.
+     * @return the scrollable setting
+     */
+    public boolean getScrollable() {
+
+        return fScrollable;
+    }
+
+    /**
+     * Set the scrollable setting.
+     * @param scrollable the scrollable setting.  If false,
+     * the scrollBarsVisible setting is also set to false.
+     */
+    public void setScrollable(boolean scrollable) {
+
+        fScrollable = scrollable;
+        fScrollBarsVisible &= scrollable;
+    }
+
+    /**
+     * Return the scrollBarsVisible setting, which determines whether
+     * scroll bars in an MTextPanel are visible.
+     * @return the scrollBarsVisible setting
+     */
+    public boolean getScrollBarsVisible() {
+
+        return fScrollBarsVisible;
+    }
+
+    /**
+     * Set the scrollBarsVisible setting.
+     * @param vis the scrollBarsVisible setting.  If true,
+     * the scrollable setting is also set to true.
+     */
+    public void setScrollBarsVisible(boolean vis) {
+
+        fScrollBarsVisible = vis;
+        fScrollable |= vis;
+    }
+
+    /**
+     * Return the selectable setting, which determines whether
+     * text in an MTextPanel can be selected.
+     * @return the selectable setting
+     */
+    public boolean getSelectable() {
+
+        return fSelectable;
+    }
+
+    /**
+     * Set the selectable setting.
+     * @param selectable the selectable setting.  If false,
+     * the editable setting is also set to false.
+     */
+    public void setSelectable(boolean selectable) {
+
+        fSelectable = selectable;
+        fEditable &= selectable;
+    }
+
+    /**
+     * Return the editable setting, which determines whether
+     * text in an MTextPanel can be edited.
+     * @return the editable setting
+     */
+    public boolean getEditable() {
+
+        return fEditable;
+    }
+
+    /**
+     * Set the editable setting.
+     * @param editable the editable setting.  If true,
+     * the selectable setting is also set to true.
+     */
+    public void setEditable(boolean editable) {
+
+        fEditable = editable;
+        fSelectable |= editable;
+    }
+
+    /**
+     * Return the wraps setting, which determines whether
+     * lines of text wrap to the length of the MTextPanel,
+     * or only at paragraph separators.
+     * @return the wraps setting
+     */
+    public boolean getWraps() {
+
+        return fWraps;
+    }
+
+    /**
+     * Set the wraps setting.
+     * @param wraps the wraps setting
+     */
+    public void setWraps(boolean wraps) {
+
+        fWraps = wraps;
+    }
+    
+    /**
+     * Return the AttributeMap of default values for certain keys.
+     * When a key in this AttributeMap is not specified, its value
+     * is taken from this AttributeMap.
+     * @return the AttributeMap of default values
+     * @see MTextPanel#getDefaultValues
+     */
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    /**
+     * Add the key-value pairs in the given AttributeMap to the
+     * default values.  If a key does not appear in the given
+     * AttributeMap, its value in the default value map is
+     * unchanged.
+     * @param map an AttributeMap containing new default values
+     */
+    public void addDefaultValues(AttributeMap map) {
+    
+        fDefaultValues = fDefaultValues.addAttributes(map);
+    }
+    
+    /**
+     * Compare this to another Object.  This is equal
+     * to another Object if the other Object is a
+     * TextPanelSettings instance with the same
+     * settings as this one.
+     * @param rhs the Object to compare to
+     */
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        TextPanelSettings other;
+        try {
+            other = (TextPanelSettings) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+        
+        return other.fScrollable == this.fScrollable &&
+               other.fScrollBarsVisible == this.fScrollBarsVisible &&
+               other.fSelectable == this.fSelectable &&
+               other.fEditable == this.fEditable &&
+               other.fWraps == this.fWraps &&
+               other.fDefaultValues.equals(this.fDefaultValues);
+    }
+
+    /**
+     * Return the hash code for this Object.
+     * @return the hash code for this Object
+     */
+    public int hashCode() {
+
+        int code = fDefaultValues.hashCode();
+        code = code*2 + (fScrollable? 1:0);
+        code = code*2 + (fScrollBarsVisible? 1:0);
+        code = code*2 + (fSelectable? 1:0);
+        code = code*2 + (fEditable? 1:0);
+        code = code*2 + (fWraps? 1:0);
+
+        return code;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextRange.java b/src/com/ibm/richtext/textpanel/TextRange.java
new file mode 100644
index 0000000..c722e73
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextRange.java
@@ -0,0 +1,45 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+* A <TT>TextRange</TT> represents a range of text bounded by a
+* start (inclusive), and a limit (exclusive).  [start,limit)
+*/
+final class TextRange
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /** the start of the range */
+    public int start = 0;
+    /** the end of the range */
+    public int limit = 0;
+
+    /**
+    * Create a text range from two ints.
+    * @param start the start of the run
+    * @param limit the end of the run
+    */
+    public TextRange(int start, int limit)
+    {
+        this.start = start;
+        this.limit = limit;
+    }
+
+    /**
+    * Create a text range of 0, 0.
+    */
+    public TextRange() {
+        this.start = this.limit = 0;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextReplacement.java b/src/com/ibm/richtext/textpanel/TextReplacement.java
new file mode 100644
index 0000000..7b5b794
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextReplacement.java
@@ -0,0 +1,68 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * This class is used to pass a REPLACE command to Behaviors.
+ */
+final class TextReplacement {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fStart;
+    private int fLimit;
+    private MConstText fText;
+    private TextOffset fSelStart;
+    private TextOffset fSelLimit;
+
+    TextReplacement(int start,
+                    int limit,
+                    MConstText text,
+                    TextOffset selStart,
+                    TextOffset selLimit) {
+
+        fStart = start;
+        fLimit = limit;
+        fText = text;
+        fSelStart = selStart;
+        fSelLimit = selLimit;
+    }
+
+    int getStart() {
+
+        return fStart;
+    }
+
+    int getLimit() {
+
+        return fLimit;
+    }
+
+    MConstText getText() {
+
+        return fText;
+    }
+
+    TextOffset getSelectionStart() {
+
+        return fSelStart;
+    }
+
+    TextOffset getSelectionLimit() {
+
+        return fSelLimit;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextSelection.java b/src/com/ibm/richtext/textpanel/TextSelection.java
new file mode 100644
index 0000000..40dee17
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextSelection.java
@@ -0,0 +1,922 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    7/1/97 - caret blinks
+
+    7/3/97 - fAnchor is no longer restricted to the start or end of the selection. {jbr}
+            Also, removed fVisible - it was identical to enabled().
+*/
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Color;
+import java.awt.Rectangle;
+
+import java.text.BreakIterator;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.FocusEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+class TextSelection extends Behavior implements Runnable {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    static final Color          HIGHLIGHTCOLOR = Color.pink;
+
+    private TextComponent       fTextComponent;
+    private MConstText          fText;
+    private TextOffset          fStart;
+    private TextOffset          fLimit;
+    private TextOffset          fAnchor;
+    private TextOffset          fUpDownAnchor = null;
+    private BreakIterator       fBoundaries = null;
+    private Color               fHighlightColor = HIGHLIGHTCOLOR;
+    private PanelEventBroadcaster   fListener;
+    private RunStrategy         fRunStrategy;
+    private boolean             fMouseDown = false;
+    private boolean             fHandlingKeyOrCommand = false;
+    
+    private boolean fCaretShouldBlink;
+    private boolean fCaretIsVisible;
+    private int fCaretCount;
+
+    // formerly in base class
+    private boolean fEnabled;
+
+    private MouseEvent fPendingMouseEvent = null;
+
+    private static final int kCaretInterval = 500;
+
+    public void run() {
+
+        final Runnable blinkCaret = new Runnable() {
+            public void run() {
+                fCaretIsVisible = !fCaretIsVisible;
+                Graphics g = fTextComponent.getGraphics();
+                if (g != null) {
+                    //System.out.println("caretIsVisible: " + fCaretIsVisible);
+                    drawSelection(g, fCaretIsVisible);
+                }
+                else {
+                    // Not sure what else to do:
+                    fCaretShouldBlink = false;
+                }
+            }
+        };
+        
+        // blink caret
+        while (true) {
+
+            synchronized(this) {
+
+                while (!fCaretShouldBlink) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        System.out.println("Caught InterruptedException in caret thread.");
+                    }
+                }
+
+                ++fCaretCount;
+
+                if (fCaretCount % 2 == 0) {
+                    fRunStrategy.doIt(blinkCaret);
+                }
+            }
+
+            try {
+                Thread.sleep(kCaretInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+
+
+    public TextSelection(TextComponent textComponent,
+                         PanelEventBroadcaster listener,
+                         RunStrategy runStrategy) {
+                            
+        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fListener = listener;
+        fRunStrategy = runStrategy;
+        
+        fStart = new TextOffset();
+        fLimit = new TextOffset();
+        fAnchor = new TextOffset();
+        fMouseDown = false;
+
+        fCaretCount = 0;
+        fCaretIsVisible = true;
+        fCaretShouldBlink = false;
+        setEnabled(false);
+
+        Thread caretThread = new Thread(this);
+        caretThread.setDaemon(true);
+        caretThread.start();
+    }
+
+    boolean enabled() {
+
+        return fEnabled;
+    }
+
+    private void setEnabled(boolean enabled) {
+
+        fEnabled = enabled;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean result;
+        fHandlingKeyOrCommand = true;
+        
+        if (event == Behavior.SELECT) {
+            select((TextRange) what);
+            result = true;
+        }
+        else if (event == Behavior.COPY) {
+            fTextComponent.getClipboard().setContents(fText.extract(fStart.fOffset, fLimit.fOffset));
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+            result = true;
+        }
+        else {
+            result = false;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    protected void advanceToNextBoundary(TextOffset offset) {
+    
+        // If there's no boundaries object, or if position at the end of the
+        // document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+        
+        if (position >= fText.length()) {
+            return;
+        }
+
+        // If position is at a boundary and offset is before position,
+        // leave it unchanged.  Otherwise move to next boundary.
+        int nextPos = fBoundaries.following(position);
+        if (fBoundaries.previous() == position && 
+                offset.fPlacement==TextOffset.BEFORE_OFFSET) {
+            return;
+        }
+        
+        offset.setOffset(nextPos, TextOffset.AFTER_OFFSET);
+    }
+
+    protected void advanceToPreviousBoundary(TextOffset offset) {
+    
+        advanceToPreviousBoundary(offset, false);
+    }
+    
+    private void advanceToPreviousBoundary(TextOffset offset, boolean alwaysMove) {
+        // if there's no boundaries object, or if we're sitting at the beginning
+        // of the document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+
+        if (position == 0) {
+            return;
+        }
+        
+        // If position is at a boundary, leave it unchanged.  Otherwise
+        // move to previous boundary.
+        if (position == fText.length()) {
+            fBoundaries.last();
+        }
+        else {
+            fBoundaries.following(position);
+        }
+        
+        int prevPos = fBoundaries.previous();
+        
+        if (prevPos == position) {
+            if (!alwaysMove && offset.fPlacement==TextOffset.AFTER_OFFSET) {
+                return;
+            }
+
+            prevPos = fBoundaries.previous();
+        }
+                
+        // and finally update the real offset with this new position we've found
+        offset.setOffset(prevPos, TextOffset.AFTER_OFFSET);
+    }
+
+    private void doArrowKey(KeyEvent e, int key) {
+
+        // when there's a selection range, the left and up arrow keys place an
+        // insertion point at the beginning of the range, and the right and down
+        // keys place an insertion point at the end of the range (unless the shift
+        // key is down, of course)
+
+        if (!fStart.equals(fLimit) && !e.isShiftDown()) {
+            if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_UP)
+                setSelRangeAndDraw(fStart, fStart, fStart);
+            else
+                setSelRangeAndDraw(fLimit, fLimit, fLimit);
+        }
+        else {
+            if (!fAnchor.equals(fStart))
+                fAnchor.assign(fLimit);
+
+            TextOffset  liveEnd = (fStart.equals(fAnchor)) ? fLimit : fStart;
+            TextOffset  newPos = new TextOffset();
+
+            // if the control key is down, the left and right arrow keys move by whole
+            // word in the appropriate direction (we use a line break object so that we're
+            // not treating spaces and punctuation as words)
+            if (e.isControlDown() && (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)) {
+                fUpDownAnchor = null;
+                fBoundaries = BreakIterator.getLineInstance();
+                fBoundaries.setText(fText.createCharacterIterator());
+
+                newPos.assign(liveEnd);
+                if (key == KeyEvent.VK_RIGHT)
+                    advanceToNextBoundary(newPos);
+                else
+                    advanceToPreviousBoundary(newPos, true);
+            }
+
+            // if we get down to here, this is a plain-vanilla insertion-point move,
+            // or the shift key is down and we're extending or shortening the selection
+            else {
+
+                // fUpDownAnchor is used to keep track of the horizontal position
+                // across a run of up or down arrow keys (this prevents accumulated
+                // error from destroying our horizontal position)
+                if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)
+                    fUpDownAnchor = null;
+                else {
+                    if (fUpDownAnchor == null) {
+                        fUpDownAnchor = new TextOffset(liveEnd);
+                    }
+                }
+
+                short   direction = MFormatter.eRight;  // just to have a default...
+
+                switch (key) {
+                    case KeyEvent.VK_UP: direction = MFormatter.eUp; break;
+                    case KeyEvent.VK_DOWN: direction = MFormatter.eDown; break;
+                    case KeyEvent.VK_LEFT: direction = MFormatter.eLeft; break;
+                    case KeyEvent.VK_RIGHT: direction = MFormatter.eRight; break;
+                }
+
+                // use the formatter to determine the actual effect of the arrow key
+                fTextComponent.findNewInsertionOffset(newPos, fUpDownAnchor, liveEnd, direction);
+            }
+
+            // if the shift key is down, the selection range is from the anchor point
+            // the site of the last insertion point or the beginning point of the last
+            // selection drag operation) to the newly-calculated position; if the
+            // shift key is down, the newly-calculated position is the insertion point position
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(newPos, newPos, newPos);
+            else {
+                if (newPos.lessThan(fAnchor))
+                    setSelRangeAndDraw(newPos, fAnchor, fAnchor);
+                else
+                    setSelRangeAndDraw(fAnchor, newPos, fAnchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+    }
+
+    private void doEndKey(KeyEvent e) {
+        // ctrl-end moves the insertsion point to the end of the document,
+        // ctrl-shift-end extends the selection so that it ends at the end
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+            TextOffset end = new TextOffset(fText.length(), TextOffset.BEFORE_OFFSET);
+
+            if (e.isShiftDown())
+                setSelRangeAndDraw(anchor, end, anchor);
+            else
+                setSelRangeAndDraw(end, end, end);
+        }
+
+        // end moves the insertion point to the end of the line containing
+        // the end of the current selection
+        // shift-end extends the selection to the end of the line containing
+        // the end of the current selection
+
+        else {
+
+            int oldOffset = activeEnd.fOffset;
+
+            activeEnd.fOffset = fTextComponent.lineRangeLimit(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.BEFORE_OFFSET;
+
+            if (fText.paragraphLimit(oldOffset) == activeEnd.fOffset &&
+                    activeEnd.fOffset != fText.length() && activeEnd.fOffset > oldOffset) {
+                activeEnd.fOffset--;
+                activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    private void doHomeKey(KeyEvent e) {
+        // ctrl-home moves the insertion point to the beginning of the document,
+        // ctrl-shift-home extends the selection so that it begins at the beginning
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+
+            TextOffset start = new TextOffset(0, TextOffset.AFTER_OFFSET);
+            if (e.isShiftDown())
+                setSelRangeAndDraw(start, anchor, anchor);
+            else
+                setSelRangeAndDraw(start, start, start);
+        }
+
+        // home moves the insertion point to the beginning of the line containing
+        // the beginning of the current selection
+        // shift-home extends the selection to the beginning of the line containing
+        // the beginning of the current selection
+
+        else {
+
+            activeEnd.fOffset = fTextComponent.lineRangeLow(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    /** draws or erases the current selection
+    * Draws or erases the highlight region or insertion caret for the current selection
+    * range.
+    * @param g The graphics environment to draw into
+    * @param visible If true, draw the selection; if false, erase it
+    */
+    protected void drawSelection(Graphics g, boolean visible) {
+        drawSelectionRange(g, fStart, fLimit, visible);
+    }
+
+    /** draws or erases a selection highlight at the specfied positions
+    * Draws or erases a selection highlight or insertion caret corresponding to
+    * the specified selecion range
+    * @param g The graphics environment to draw into.  If null, this method does nothing.
+    * @param start The beginning of the range to highlight
+    * @param limit The end of the range to highlight
+    * @param visible If true, draw; if false, erase
+    */
+    protected void drawSelectionRange(  Graphics    g,
+                                        TextOffset  start,
+                                        TextOffset  limit,
+                                        boolean     visible) {
+        if (g == null) {
+            return;
+        }
+        Rectangle   selBounds = fTextComponent.getBoundingRect(start, limit);
+
+        selBounds.width = Math.max(1, selBounds.width);
+        selBounds.height = Math.max(1, selBounds.height);
+
+        fTextComponent.drawText(g, selBounds, visible, start, limit, fHighlightColor);
+    }
+
+    protected TextOffset getAnchor() {
+        return fAnchor;
+    }
+
+    public TextOffset getEnd() {
+        return fLimit;
+    }
+
+    public Color getHighlightColor() {
+        return fHighlightColor;
+    }
+
+    public TextOffset getStart() {
+        return fStart;
+    }
+
+    public TextRange getSelectionRange() {
+
+        return new TextRange(fStart.fOffset, fLimit.fOffset);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        setEnabled(true);
+        drawSelection(fTextComponent.getGraphics(), true);
+
+        restartCaretBlinking(true);
+        if (fPendingMouseEvent != null) {
+            mousePressed(fPendingMouseEvent);
+            fPendingMouseEvent = null;
+        }
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+ 
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        stopCaretBlinking();
+        setEnabled(false);
+        drawSelection(fTextComponent.getGraphics(), false);
+        return true;
+    }
+
+    /**
+     * Return true if the given key event can affect the selection
+     * range.
+     */
+    public static boolean keyAffectsSelection(KeyEvent e) {
+
+        if (e.getID() != KeyEvent.KEY_PRESSED) {
+            return false;
+        }
+
+        int key = e.getKeyCode();
+
+        switch (key) {
+            case KeyEvent.VK_HOME:
+            case KeyEvent.VK_END:
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                return true;
+
+            default:
+                return false;
+        }
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        fHandlingKeyOrCommand = true;
+        int key = e.getKeyCode();
+        boolean result = true;
+        
+        switch (key) {
+            case KeyEvent.VK_HOME:
+                doHomeKey(e);
+                break;
+                
+            case KeyEvent.VK_END:
+                doEndKey(e);
+                break;
+
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                doArrowKey(e, key);
+                break;
+                
+            default:
+                fUpDownAnchor = null;
+                result = false;
+                break;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        if (!enabled()) {
+            fPendingMouseEvent = e;
+            fTextComponent.requestFocus();
+            return false;
+        }
+
+        if (fMouseDown)
+            throw new Error("fMouseDown is out of sync with mouse in TextSelection.");
+
+        fMouseDown = true;
+        stopCaretBlinking();
+
+        int x = e.getX(), y = e.getY();
+        boolean wasZeroLength = rangeIsZeroLength(fStart, fLimit, fAnchor);
+        
+        TextOffset current = fTextComponent.pointToTextOffset(null, x, y, null, true);
+        TextOffset anchorStart = new TextOffset();
+        TextOffset anchorEnd = new TextOffset();
+
+        fUpDownAnchor = null;
+
+        // if we're not extending the selection...
+        if (!e.isShiftDown()) {
+
+            // if there are multiple clicks, create the appopriate type of BreakIterator
+            // object for finding text boundaries (single clicks don't use a BreakIterator
+            // object)
+            if (e.getClickCount() == 2)
+                fBoundaries = BreakIterator.getWordInstance();
+            else if (e.getClickCount() == 3)
+                fBoundaries = BreakIterator.getSentenceInstance();
+            else
+                fBoundaries = null;
+
+            // if we're using a BreakIterator object, use it to find the nearest boundaries
+            // on either side of the mouse-click position and make them our anchor range
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(current);
+            advanceToPreviousBoundary(anchorStart);
+            anchorEnd.assign(current);
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        // if we _are_ extending the selection, determine our anchor range as follows:
+        // fAnchor is the start of the anchor range;
+        // the next boundary (after fAnchor) is the limit of the anchor range.
+
+        else {
+
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(fAnchor);
+            anchorEnd.assign(anchorStart);
+
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        SelectionDragInteractor interactor = new SelectionDragInteractor(this, 
+                                                                         fTextComponent,
+                                                                         fRunStrategy,
+                                                                         anchorStart,
+                                                                         anchorEnd,
+                                                                         current,
+                                                                         x,
+                                                                         y,
+                                                                         wasZeroLength);
+
+        interactor.addToOwner(fTextComponent);
+
+        return true;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        fPendingMouseEvent = null;
+        return false;
+    }
+
+    // drag interactor calls this
+    void mouseReleased(boolean zeroLengthChange) {
+
+        fMouseDown = false;
+
+        if (zeroLengthChange) {
+            fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        // if caret drawing during mouse drags is supressed, draw caret now.
+
+        restartCaretBlinking(true);
+    }
+
+
+    /** draws the selection
+    * Provided, of course, that the selection is visible, the adorner is enabled,
+    * and we're calling it to adorn the view it actually belongs to
+    * @param g The graphics environment to draw into
+    * @return true if we actually drew
+    */
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        // don't draw anything unless we're enabled and the selection is visible
+        if (!enabled())
+            return false;
+
+        fTextComponent.drawText(g, drawRect, true, fStart, fLimit, fHighlightColor);
+        return true;
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelection() {
+        Rectangle   selRect = fTextComponent.getBoundingRect(fStart, fLimit);
+
+        fTextComponent.scrollToShow(selRect);
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelectionEnd() {
+        TextOffset  liveEnd;
+        // variable not used Point[]     points;
+        Rectangle   caret;
+
+        if (fAnchor.equals(fStart))
+            liveEnd = fLimit;
+        else
+            liveEnd = fStart;
+
+        //points = fTextComponent.textOffsetToPoint(liveEnd);
+        //caret = new Rectangle(points[0]);
+        //caret = caret.union(new Rectangle(points[1]));
+        caret = fTextComponent.getCaretRect(liveEnd);
+        fTextComponent.scrollToShow(caret);
+    }
+
+    private void select(TextRange range) {
+        // variable not used int textLength = fTextComponent.getText().length();
+
+        TextOffset start = new TextOffset(range.start);
+
+        stopCaretBlinking();
+        setSelRangeAndDraw(start, new TextOffset(range.limit), start);
+        restartCaretBlinking(true);
+    }
+
+    public void setHighlightColor(Color newColor) {
+        fHighlightColor = newColor;
+        if (enabled())
+            drawSelection(fTextComponent.getGraphics(), true);
+    }
+    
+    static boolean rangeIsZeroLength(TextOffset start, TextOffset limit, TextOffset anchor) {
+        
+        return start.fOffset == limit.fOffset && anchor.fOffset == limit.fOffset;
+    }
+
+    // sigh... look out for aliasing
+    public void setSelectionRange(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        boolean zeroLengthChange = rangeIsZeroLength(newStart, newLimit, newAnchor) != 
+                                    rangeIsZeroLength(fStart, fLimit, fAnchor);
+        TextOffset tempNewAnchor;
+        if (newAnchor == fStart || newAnchor == fLimit) {
+            tempNewAnchor = new TextOffset(newAnchor); // clone in case of aliasing
+        }
+        else {
+            tempNewAnchor = newAnchor;
+        }
+
+        // DEBUG {jbr}
+
+        if (newStart.greaterThan(newLimit))
+            throw new IllegalArgumentException("Selection limit is before selection start.");
+
+        if (newLimit != fStart) {
+            fStart.assign(newStart);
+            fLimit.assign(newLimit);
+        }
+        else {
+            fLimit.assign(newLimit);
+            fStart.assign(newStart);
+        }
+
+        fAnchor.assign(tempNewAnchor);
+
+        if (fStart.fOffset == fLimit.fOffset) {
+            fStart.fPlacement = fAnchor.fPlacement;
+            fLimit.fPlacement = fAnchor.fPlacement;
+        }
+        
+        if (!fMouseDown) {
+            if (zeroLengthChange) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            if (fHandlingKeyOrCommand) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+            }
+        }
+    }
+
+    private void sortOffsets(TextOffset offsets[]) {
+
+        int i, j;
+
+        for (i=0; i < offsets.length-1; i++) {
+            for (j=i+1; j < offsets.length; j++) {
+                if (offsets[j].lessThan(offsets[i])) {
+                    TextOffset temp = offsets[j];
+                    offsets[j] = offsets[i];
+                    offsets[i] = temp;
+                }
+            }
+        }
+
+        // DEBUG {jbr}
+        for (i=0; i < offsets.length-1; i++)
+            if (offsets[i].greaterThan(offsets[i+1]))
+                throw new Error("sortOffsets failed!");
+    }
+
+    private Rectangle getSelectionChangeRect(
+                                    TextOffset rangeStart, TextOffset rangeLimit,
+                                    TextOffset oldStart, TextOffset oldLimit,
+                                    TextOffset newStart, TextOffset newLimit,
+                                    boolean drawIfInsPoint) {
+
+        if (!rangeStart.equals(rangeLimit))
+            return fTextComponent.getBoundingRect(rangeStart, rangeLimit);
+
+        // here, rangeStart and rangeLimit are equal
+
+        if (rangeStart.equals(oldLimit)) {
+
+            // range start is OLD insertion point.  Redraw if caret is currently visible.
+
+            if (fCaretIsVisible)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+        else if (rangeStart.equals(newLimit)) {
+
+            // range start is NEW insertion point.
+
+            if (drawIfInsPoint)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+
+        return null;
+    }
+
+    private static boolean rectanglesOverlapVertically(Rectangle r1, Rectangle r2) {
+        
+        if (r1 == null || r2 == null) {
+            return false;
+        }
+        
+        return r1.y <= r2.y + r2.height || r2.y <= r1.y + r1.height;
+    }
+    
+    // Update to show new selection, redrawing as little as possible
+
+    private void updateSelectionDisplay(
+                            TextOffset oldStart, TextOffset oldLimit,
+                            TextOffset newStart, TextOffset newLimit, boolean drawIfInsPoint) {
+
+        //System.out.println("newStart:" + newStart + "; newLimit:" + newLimit);
+
+        TextOffset off[] = new TextOffset[4];
+
+        off[0] = oldStart;
+        off[1] = oldLimit;
+        off[2] = newStart;
+        off[3] = newLimit;
+
+        sortOffsets(off);
+
+        Rectangle r1 = getSelectionChangeRect(off[0], off[1], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+        Rectangle r2 = getSelectionChangeRect(off[2], off[3], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+
+        boolean drawSelection = drawIfInsPoint || !newStart.equals(newLimit);
+
+        if (rectanglesOverlapVertically(r1, r2)) {
+
+            fTextComponent.drawText(fTextComponent.getGraphics(), r1.union(r2), drawSelection, newStart, newLimit, fHighlightColor);
+        }
+        else {
+            if (r1 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r1, drawSelection, newStart, newLimit, fHighlightColor);
+            if (r2 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r2, drawSelection, newStart, newLimit, fHighlightColor);
+        }
+    }
+
+    public void setSelRangeAndDraw(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        // if the old and new selection ranges are the same, don't do anything
+        if (fStart.equals(newStart) && fLimit.equals(newLimit) && fAnchor.equals(newAnchor))
+            return;
+
+        if (enabled())
+            stopCaretBlinking();
+
+        // update the selection on screen if we're enabled and visible
+
+        TextOffset oldStart = new TextOffset(fStart), oldLimit = new TextOffset(fLimit);
+
+        setSelectionRange(newStart, newLimit, newAnchor);
+
+        if (enabled()) {
+
+                // To supress drawing a caret during a mouse drag, pass !fMouseDown instead of true:
+                updateSelectionDisplay(oldStart, oldLimit, fStart, fLimit, true);
+        }
+
+        if (!fMouseDown && enabled())
+            restartCaretBlinking(true);
+    }
+
+    public void stopCaretBlinking() {
+
+        synchronized(this) {
+            fCaretShouldBlink = false;
+        }
+    }
+
+/**
+* Resume blinking the caret, if the selection is an insertion point.
+* @param caretIsVisible true if the caret is displayed when this is called.
+* This method relies on the client to display (or not display) the caret.
+*/
+    public void restartCaretBlinking(boolean caretIsVisible) {
+
+        synchronized(this) {
+            fCaretShouldBlink = fStart.equals(fLimit);
+            fCaretCount = 0;
+            fCaretIsVisible = caretIsVisible;
+
+            if (fCaretShouldBlink) {
+                try {
+                    notify();
+                }
+                catch (IllegalMonitorStateException e) {
+                    System.out.println("Caught IllegalMonitorStateException: "+e);
+                }
+            }
+        }
+    }
+
+    public void removeFromOwner() {
+
+        stopCaretBlinking();
+        super.removeFromOwner();
+    }
+
+}
diff --git a/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
new file mode 100644
index 0000000..07a279f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
@@ -0,0 +1,112 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textpanel;
+
+final class ThaiKeyRemap extends KeyRemap {
+
+    public char remap(char c) {
+
+        switch (c) {
+            case '`': return '\u005f';
+            case '~': return '\u0025';
+            case '1': return '\u0e45';
+            case '!': return '\u002b';
+            case '2': return '\u002f';
+            case '@': return '\u0e51';
+            case '3': return '\u002d';
+            case '#': return '\u0e52';
+            case '4': return '\u0e20';
+            case '$': return '\u0e53';
+            case '5': return '\u0e16';
+            case '%': return '\u0e54';
+            case '6': return '\u0e38';
+            case '^': return '\u0e39';
+            case '7': return '\u0e36';
+            case '&': return '\u0e3f';
+            case '8': return '\u0e04';
+            case '*': return '\u0e55';
+            case '9': return '\u0e15';
+            case '(': return '\u0e56';
+            case '0': return '\u0e08';
+            case ')': return '\u0e57';
+            case '-': return '\u0e02';
+            case '_': return '\u0e58';
+            case '=': return '\u0e08';
+            case '+': return '\u0e59';
+            case 'q': return '\u0e46';
+            case 'Q': return '\u0e50';
+            case 'w': return '\u0e44';
+            case 'W': return '\u0022';
+            case 'e': return '\u0e33';
+            case 'E': return '\u0e0e';
+            case 'r': return '\u0e1e';
+            case 'R': return '\u0e11';
+            case 't': return '\u0e30';
+            case 'T': return '\u0e18';
+            case 'y': return '\u0e31';
+            case 'Y': return '\u0e4d';
+            case 'u': return '\u0e35';
+            case 'U': return '\u0e4a';
+            case 'i': return '\u0e23';
+            case 'I': return '\u0e13';
+            case 'o': return '\u0e19';
+            case 'O': return '\u0e2f';
+            case 'p': return '\u0e22';
+            case 'P': return '\u0e0d';
+            case '[': return '\u0e1a';
+            case '{': return '\u0e10';
+            case ']': return '\u0e25';
+            case '}': return '\u002c';
+            case '\\': return '\u0e03';
+            case '|': return '\u0e05';
+            case 'a': return '\u0e1f';
+            case 'A': return '\u0e24';
+            case 's': return '\u0e2b';
+            case 'S': return '\u0e06';
+            case 'd': return '\u0e01';
+            case 'D': return '\u0e0f';
+            case 'f': return '\u0e14';
+            case 'F': return '\u0e42';
+            case 'g': return '\u0e40';
+            case 'G': return '\u0e0c';
+            case 'h': return '\u0e49';
+            case 'H': return '\u0e47';
+            case 'j': return '\u0e48';
+            case 'J': return '\u0e4b';
+            case 'k': return '\u0e32';
+            case 'K': return '\u0e29';
+            case 'l': return '\u0e2a';
+            case 'L': return '\u0e28';
+            case ';': return '\u0e27';
+            case ':': return '\u0e0b';
+            case '\'': return '\u0e07';
+            case '\"': return '\u002e';
+            case 'z': return '\u0e1c';
+            case 'Z': return '\u0028';
+            case 'x': return '\u0e1b';
+            case 'X': return '\u0029';
+            case 'c': return '\u0e41';
+            case 'C': return '\u0e09';
+            case 'v': return '\u0e2d';
+            case 'V': return '\u0e2e';
+            case 'b': return '\u0e34';
+            case 'B': return '\u0e3a';
+            case 'n': return '\u0e37';
+            case 'N': return '\u0e4c';
+            case 'm': return '\u0e17';
+            case 'M': return '\u003f';
+            case ',': return '\u0e21';
+            case '<': return '\u0e12';
+            case '.': return '\u0e43';
+            case '>': return '\u0e2c';
+            case '/': return '\u0e1d';
+            case '?': return '\u0e26';
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TransferableText.java b/src/com/ibm/richtext/textpanel/TransferableText.java
new file mode 100644
index 0000000..b6beafc
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TransferableText.java
@@ -0,0 +1,87 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * This class allows MConstText instances to be the contents
+ * of a Clipboard.  To store an MConstText on the clipboard,
+ * construct a TransferableText from the MConstText, and make
+ * the TransferableText the clipboard contents.
+ *
+ */
+/*
+ * Note:  this class inherits from StringSelection because of
+ * a bug in the 1.1.7 system clipboard implementation.  The
+ * system clipboard won't put text on the OS clipboard unless
+ * the content is a StringSelection.
+ */
+final class TransferableText extends StringSelection
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fText;
+
+    private static String textToString(MConstText text) {
+        char[] chars = new char[text.length()];
+        text.extractChars(0, chars.length, chars, 0);
+        return new String(chars);
+    }
+
+    /**
+     * Create a TransferableText for the given text.
+     * @param text the text to go on the Clipboard.  The text is
+     *     adopted by this object.
+     */
+    public TransferableText(MConstText text) {
+
+        super(textToString(text));
+
+        fText = text;
+    }
+
+    public DataFlavor[] getTransferDataFlavors() {
+
+        DataFlavor[] flavors = super.getTransferDataFlavors();
+        DataFlavor[] result = new DataFlavor[flavors.length+1];
+        result[0] = MConstText.styledTextFlavor;
+        System.arraycopy(flavors, 0, result, 1, flavors.length);
+        return result;
+    }
+
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return true;
+        }
+        else {
+            return super.isDataFlavorSupported(flavor);
+        }
+    }
+
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return fText;
+        }
+        else {
+            return super.getTransferData(flavor);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TypingInteractor.java b/src/com/ibm/richtext/textpanel/TypingInteractor.java
new file mode 100644
index 0000000..d31eed9
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TypingInteractor.java
@@ -0,0 +1,354 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    2/25/99 - Now processing characters from keyTyped method (not keyPressed).
+              This new way is input-method friendly on 1.2, and is generally
+              more correct.
+
+    7/7/97 - the mouseDidSomething methods used to remove the typing interactor.
+            This is definitely wrong, but maybe that made sense at one time.  Anyway,
+            now the mousePressed / mouseReleased methods remove the interactor;  the
+            others do nothing.
+*/
+
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.FocusEvent;
+
+import java.text.BreakIterator;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+final class TypingInteractor extends Behavior {
+
+//    static final String COPYRIGHT =
+//                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final char BACKSPACE = 8;
+    private static final char TAB = '\t';
+    private static final char RETURN = '\r';
+    private static final char LINE_FEED = '\n';
+//    private static final char PARAGRAPH_SEP = '\u2029';
+    
+//    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private AttributeMap fTypingStyle;
+    private MConstText fText;
+    private TextEditBehavior fParent;
+    private TextChangeCommand fCommand = null;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private BreakIterator fCharBreak = null;
+    
+    /**
+     * Not all characters that come from the keyboard are handled
+     * as input.  For example, ctrl-c is not a typable character.
+     * This method determines whether a particular character from
+     * the keyboard will affect the text.
+     */
+    private static boolean isTypingInteractorChar(char ch) {
+
+        return ch >= ' ' || 
+               ch == LINE_FEED || 
+               ch == RETURN ||
+               ch == TAB || 
+               ch == BACKSPACE;
+    }
+    
+    /**
+     * This method determines whether a TypingInteractor should
+     * handle the given KeyEvent.
+     */
+    static boolean handledByTypingInteractor(KeyEvent event) {
+
+        final int id = event.getID();
+        
+        if (id == KeyEvent.KEY_TYPED) {
+            return isTypingInteractorChar(event.getKeyChar());
+        }
+        else {
+            return (id == KeyEvent.KEY_PRESSED && 
+                    event.getKeyCode() == KeyEvent.VK_DELETE);
+        }
+    }
+
+    public TypingInteractor(TextComponent textComponent,
+                            TextSelection selection,
+                            AttributeMap typingStyle,
+                            TextEditBehavior parent,
+                            SimpleCommandLog commandLog,
+                            PanelEventBroadcaster listener) {
+                            
+//        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fSelection = selection;
+        fTypingStyle = typingStyle;
+        fParent = parent;
+        fCommandLog = commandLog;
+        fListener = listener;
+
+        fParent.setTypingInteractor(this);
+    }
+
+    private void endInteraction() {
+
+        removeFromOwner();
+        postTextChangeCommand();
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+        fParent.setSavedTypingStyle(selStart==selLimit? fTypingStyle : null, selStart);
+        
+        fParent.setTypingInteractor(null);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        if (fCommand == null && event == Behavior.CHARACTER_STYLE_MOD) {
+
+            pickUpTypingStyle();
+            fTypingStyle = ((StyleModifier)what).modifyStyle(fTypingStyle);
+
+            fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+            return true;
+        }
+        else {
+            Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+            endInteraction();
+
+            if (next != null)
+                return next.textControlEventOccurred(event, what);
+            else
+                return false;
+        }
+    }
+
+    private void doBackspace() {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        if (selStart == selLimit) {
+            if (selStart != 0) {
+                fTypingStyle = null;
+                pickUpTypingStyle();
+                makeTextChangeCommand();
+                if (selStart <= fCommand.affectedRangeStart()) {
+                    fCommand.prependToOldText(fText.extract(selStart - 1, selStart));
+                }
+                TextOffset insPt = new TextOffset(selStart - 1);
+                fParent.doReplaceText(selStart - 1, selStart, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            TextOffset insPt = new TextOffset(selStart);
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doFwdDelete(boolean ignoreCharBreak) {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        TextOffset insPt = new TextOffset(selStart);
+
+        if (selStart == selLimit) {
+            if (selStart != fText.length()) {
+                fTypingStyle = null;
+                makeTextChangeCommand();
+                int numChars;
+                if (ignoreCharBreak) {
+                    numChars = 1;
+                }
+                else {
+                    if (fCharBreak == null) {
+                        fCharBreak = BreakIterator.getCharacterInstance();
+                    }
+                    fCharBreak.setText(fText.createCharacterIterator());
+                    numChars = fCharBreak.following(selStart) - selStart;
+                }
+                fCommand.appendToOldText(fText.extract(selStart, selStart + numChars));
+                fParent.doReplaceText(selStart, selStart + numChars, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doNormalKey(char ch) {
+
+        // Sigh - 1.1 reports enter key events as return chars, but
+        // 1.2 reports them as linefeeds.
+        if (ch == RETURN) {
+            ch = LINE_FEED;
+        }
+        pickUpTypingStyle();
+        makeTextChangeCommand();
+        fParent.doReplaceSelectedText(ch, fTypingStyle);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusGained(e);
+    }
+
+    public boolean focusLost(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusLost(e);
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (e.getKeyChar() == BACKSPACE) {
+            doBackspace();
+        }
+        else {
+            if (isTypingInteractorChar(e.getKeyChar())) {
+                KeyRemap remap = fParent.getKeyRemap();
+                doNormalKey(remap.remap(e));
+            }
+        }
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        int key = e.getKeyCode();
+        if (key == KeyEvent.VK_DELETE) {
+            doFwdDelete(e.isShiftDown());
+            return true;
+        }
+
+        Behavior next = nextBehavior();
+
+        if (TextSelection.keyAffectsSelection(e)) {
+
+            endInteraction();
+        }
+
+        return next.keyPressed(e);
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        return true;
+    }
+
+    private void makeTextChangeCommand() {
+        if (fCommand == null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            MText writableText = new StyledText();
+            writableText.replace(0, 0, fText, selStart.fOffset, selEnd.fOffset);
+            fCommand = new TextChangeCommand(fParent,
+                                writableText,
+                                null, selStart.fOffset, selStart, selEnd,
+                                new TextOffset(), new TextOffset());
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mouseReleased(e);
+        else
+            return false;
+    }
+
+    private void pickUpTypingStyle() {
+        if (fTypingStyle == null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            fTypingStyle = TextEditBehavior.typingStyleAt(fText, selStart, selLimit);
+        }
+    }
+
+    private void postTextChangeCommand() {
+        if (fCommand != null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            fCommand.setNewText(fText.extract(fCommand.affectedRangeStart(), selStart.fOffset));
+            fCommand.setSelRangeAfter(selStart, selEnd);
+            fCommandLog.add(fCommand);
+        }
+    }
+
+    boolean hasPendingCommand() {
+
+        return fCommand != null;
+    }
+
+    AttributeMap getTypingStyle() {
+
+        pickUpTypingStyle();
+        return fTypingStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/package.html b/src/com/ibm/richtext/textpanel/package.html
new file mode 100644
index 0000000..6c86560
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/package.html
@@ -0,0 +1,11 @@
+<html>
+    <head> <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+        <title>TextPanel Package Overview</title>
+    </head>
+    <body bgcolor="white">
+        Provides components (for both AWT and Swing) in which styled text is displayed 
+        and edited, and related classes.
+    </body>
+</html>
diff --git a/src/com/ibm/richtext/uiimpl/AboutText.java b/src/com/ibm/richtext/uiimpl/AboutText.java
new file mode 100644
index 0000000..7b78c3b
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/AboutText.java
@@ -0,0 +1,63 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public final class AboutText {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final Color[] COLORS = {
+        Color.red, Color.blue, Color.white, Color.green
+    };
+    
+    public static MConstText getAboutText() {
+
+        String text = ResourceUtils.getResourceString(FrameResources.ABOUT_TEXT);
+        StyledText styledText = new StyledText(text, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        int length = styledText.length();
+        int i=0;
+
+        for (int paragraphStart = 0, paragraphLimit;
+                    paragraphStart < length;
+                    paragraphStart = paragraphLimit) {
+
+            paragraphLimit = styledText.paragraphLimit(paragraphStart);
+            StyleModifier modifier = StyleModifier.createAddModifier(
+                                             TextAttribute.FOREGROUND,
+                                             COLORS[(i++)%COLORS.length]);
+            styledText.modifyCharacterStyles(paragraphStart,
+                                             paragraphLimit,
+                                             modifier);
+        }
+
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                            TextAttribute.LINE_FLUSH,
+                                            TextAttribute.FLUSH_CENTER);
+
+        styledText.modifyParagraphStyles(0, text.length(), modifier);
+
+        return styledText;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
new file mode 100644
index 0000000..fd64a27
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
@@ -0,0 +1,97 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class BooleanStyleMenuItem extends SingleCheckMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final Object fKey;
+    private final boolean fCharacter;
+
+    private final Object fOnValue;
+    
+    public BooleanStyleMenuItem(Object style,
+                                Object onValue,
+                                MenuData menuData,
+                                boolean character) {
+        
+        super(menuData);
+        if (onValue == null) {
+            throw new IllegalArgumentException("On value cannot be null");
+        }
+
+        fKey = style;
+        fCharacter = character;
+        
+        fOnValue = onValue;
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                StyleModifier modifier;
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+                if (continuousAndCommand()) {
+                    AttributeSet set = new AttributeSet(fKey);
+                    modifier = StyleModifier.createRemoveModifier(set);
+                }
+                else {
+                    modifier = StyleModifier.createAddModifier(fKey, fOnValue);
+                }
+                
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private boolean continuousAndCommand() {
+        
+        MTextPanel panel = getTextPanel();
+
+        Object value = (fCharacter == CHARACTER)? 
+                            panel.getCharacterStyleOverSelection(fKey) :
+                            panel.getParagraphStyleOverSelection(fKey);
+        return fOnValue.equals(value);
+    }
+    
+    protected void setChecked() {
+        
+        fItem.setState(continuousAndCommand());
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
new file mode 100644
index 0000000..5988c91
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class ChoiceMenuItemSet extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MItem[] fItems;
+    private Hashtable fItemToStyleMap;
+    
+    ChoiceMenuItemSet(Object[] values,
+                      MenuData[] menuData) {
+        
+        if (values.length != menuData.length) {
+            throw new IllegalArgumentException(
+                                "Values and names must have equal length");
+        }
+        
+        fItems = new MItem[menuData.length];
+        fItemToStyleMap = new Hashtable(menuData.length);
+        
+        EventListener listener = new EventListener() {
+            public void eventOccurred(EventObject event) {
+                handleValueSelected(fItemToStyleMap.get(event.getSource()));
+            }
+        };
+        
+        for (int i=0; i < menuData.length; i++) {
+            fItems[i] = MItem.createCheckboxItem(menuData[i]);
+            if (values[i] != null) {
+                fItemToStyleMap.put(fItems[i], values[i]);
+            }
+            fItems[i].addListener(listener);
+            fItems[i].setEnabled(false);
+        }
+    }
+    
+    protected abstract void handleValueSelected(Object item);
+    protected abstract Object getCurrentValue();
+    
+    protected final void setChecked() {
+        
+        Object value = getCurrentValue();
+        
+        for (int i=0; i < fItems.length; i++) {
+            Object itemVal = fItemToStyleMap.get(fItems[i]);
+            if (itemVal == null) {
+                fItems[i].setState(value == null);
+            }
+            else {
+                fItems[i].setState(itemVal.equals(value));
+            }
+        }
+    }
+
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(false);
+                fItems[i].setState(false);
+            }
+        }
+        else {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(true);
+                setChecked();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/CommandMenuItem.java b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
new file mode 100644
index 0000000..686d704
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
@@ -0,0 +1,193 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class CommandMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private /*final*/ MItem fItem;
+    
+    protected abstract boolean isEnabled();
+    protected abstract void performAction();
+
+    protected CommandMenuItem(MenuData data) {
+        
+        this(data, false);
+    }
+    
+    protected CommandMenuItem(MenuData data, boolean enableByDefault) {
+        
+        fItem = MItem.createItem(data);
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                performAction();
+            }
+        });
+        fItem.setEnabled(enableByDefault);
+    }
+    
+    protected void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+        }
+        else {
+            fItem.setEnabled(isEnabled());
+        }
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        fItem.setEnabled(isEnabled());
+    }
+    
+    public static final class CutCopyClear extends CommandMenuItem {
+        
+        public static final int CUT = 0;
+        public static final int COPY = 1;
+        public static final int CLEAR = 2;
+
+        private final int fKind;
+        
+        public CutCopyClear(MenuData menuData, int kind) {
+            
+            super(menuData);
+            if (kind != CUT && kind != COPY && kind != CLEAR) {
+                throw new IllegalArgumentException("Invalid menu kind");
+            }
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            return panel.getSelectionStart() != panel.getSelectionEnd();
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_EMPTY_CHANGED;
+        }
+        
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            switch (fKind) {
+                case CUT:
+                    panel.cut();
+                    break;
+                case COPY:
+                    panel.copy();
+                    break;
+                case CLEAR:
+                    panel.clear();
+                    break;
+            }
+        }
+    }
+    
+    public static final class UndoRedo extends CommandMenuItem {
+        
+        public static final boolean UNDO = true;
+        public static final boolean REDO = false;
+        
+        private boolean fKind;
+        
+        public UndoRedo(MenuData menuData, boolean kind) {
+            
+            super(menuData);
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                return panel.canUndo();
+            }
+            else {
+                return panel.canRedo();
+            }
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.UNDO_STATE_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                panel.undo();
+            }
+            else {
+                panel.redo();
+            }
+        }
+    }
+
+    public static final class Paste extends CommandMenuItem {
+        
+        public Paste(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return getTextPanel().clipboardNotEmpty();
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.CLIPBOARD_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().paste();
+        }
+    }
+
+    public static final class SelectAll extends CommandMenuItem {
+        
+        public SelectAll(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return true;
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return false;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().selectAll();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/DialogItem.java b/src/com/ibm/richtext/uiimpl/DialogItem.java
new file mode 100644
index 0000000..c4d8ebd
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/DialogItem.java
@@ -0,0 +1,71 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Window;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class DialogItem extends CommandMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static abstract class DialogFactory {
+        
+        public abstract Window createDialog(MTextPanel textPanel);
+    }
+    
+    private DialogFactory fDialogFactory;
+    private Window fDialog = null;
+    
+    public DialogItem(MenuData menuData,
+                      DialogFactory dialogFactory) {
+        
+        super(menuData, true);
+        fDialogFactory = dialogFactory;
+    }
+    
+    protected void textPanelChanged() {
+        // do nothing
+    }
+        
+    protected boolean isEnabled() {
+            
+        // should never get called...
+        return true;
+    }
+
+    public boolean respondsToEventType(int type) {
+            
+        return false;
+    }
+
+    protected void performAction() {
+
+        if (fDialog == null) {
+            MTextPanel panel = getTextPanel();
+            if (panel != null) {
+                fDialog = fDialogFactory.createDialog(panel);
+                fDialog.addWindowListener(new WindowAdapter() {
+                    public void windowClosed(WindowEvent e) {
+                        fDialog = null;
+                    }
+                });
+            }
+        }
+        fDialog.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/EventListener.java b/src/com/ibm/richtext/uiimpl/EventListener.java
new file mode 100644
index 0000000..226cd64
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/EventListener.java
@@ -0,0 +1,22 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+public interface EventListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public void eventOccurred(EventObject event);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/FontList.java b/src/com/ibm/richtext/uiimpl/FontList.java
new file mode 100644
index 0000000..5680fbf
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/FontList.java
@@ -0,0 +1,64 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.uiimpl;
+
+import java.awt.GraphicsEnvironment;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Vector;
+
+final class FontList {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String[] stripThese = {
+        ".bold", ".bolditalic", ".italic"
+    };
+
+    public static String[] getFontList() {
+
+        String[] names = GraphicsEnvironment.getLocalGraphicsEnvironment()
+                                            .getAvailableFontFamilyNames();
+        Vector v = new Vector(names.length);
+        for (int i=0; i < names.length; i++) {
+            v.addElement(names[i]);
+        }
+
+        Collections.sort(v);
+                
+        String last = "";
+        
+        Iterator iter = v.listIterator();
+        while (iter.hasNext()) {
+            String current = (String) iter.next();
+            testSuffixes: for (int i=0; i < stripThese.length; i++) {
+                if (current.endsWith(stripThese[i])) {
+                    int baseLen = current.length()-stripThese[i].length();
+                    String base = current.substring(0, baseLen);
+                    if (base.equalsIgnoreCase(last)) {
+                        iter.remove();
+                        current = last;
+                        break testSuffixes;
+                    }
+                }
+            }
+            last = current;
+        }
+        
+        String[] result = new String[v.size()];
+        v.copyInto(result);
+        return result;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
new file mode 100644
index 0000000..95f9d68
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
@@ -0,0 +1,59 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class KeymapMenuItemSet extends ChoiceMenuItemSet {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public KeymapMenuItemSet(KeyRemap[] values,
+                             MenuData[] menuData) {
+        
+        super(values, menuData);
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+
+        textPanel.setKeyRemap((KeyRemap) value);
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        return textPanel.getKeyRemap();
+    }
+    
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.KEYREMAP_CHANGED;
+    }
+
+}
diff --git a/src/com/ibm/richtext/uiimpl/MItem.java b/src/com/ibm/richtext/uiimpl/MItem.java
new file mode 100644
index 0000000..090a03d
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MItem.java
@@ -0,0 +1,85 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.Vector;
+import java.util.EventObject;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class MItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Vector fListeners = new Vector(2);
+    private EventObject fEvent = new EventObject(this);
+    
+    public abstract void setEnabled(boolean enabled);
+    public abstract void setState(boolean checked);
+    
+    public final void addListener(EventListener listener) {
+        
+        fListeners.addElement(listener);
+    }
+    
+    public final void removeListener(EventListener listener) {
+        
+        fListeners.removeElement(listener);
+    }
+    
+    protected void handleSelected() {
+            
+        int length = fListeners.size();
+        for (int i=0; i < length; i++) {
+            EventListener l = (EventListener) fListeners.elementAt(i);
+            l.eventOccurred(fEvent);
+        }
+    }
+    
+    // factory stuff
+    
+    /**
+     * Clients should synchronize on LOCK while setting and using
+     * global factory.
+     */
+    public static final Object LOCK = new Object();
+    
+    public static interface ItemFactory {
+        
+        public MItem createItem(MenuData menuData);
+        public MItem createCheckboxItem(MenuData menuData);
+        public void createSeparator();
+    }
+    
+    private static ItemFactory fgFactory;
+    
+    public static MItem createItem(MenuData menuData) {
+        
+        return fgFactory.createItem(menuData);
+    }
+    
+    public static MItem createCheckboxItem(MenuData menuData) {
+        
+        return fgFactory.createCheckboxItem(menuData);
+    }
+    
+    public static void setItemFactory(ItemFactory factory) {
+        
+        fgFactory = factory;
+    }
+    
+    public static ItemFactory getItemFactory() {
+        
+        return fgFactory;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuBuilder.java b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
new file mode 100644
index 0000000..131647a
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
@@ -0,0 +1,368 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Frame;
+
+import java.text.NumberFormat;
+
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.KeyRemap;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+public abstract class MenuBuilder {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static final int EDIT = 0;
+    public static final int SIZE = 1;
+    public static final int STYLE = 2;
+    public static final int FLUSH = 3;
+    public static final int KEYMAP = 4;
+    public static final int BIDI = 5;
+    public static final int ABOUT = 6;
+    
+    private Color[] colors = { Color.black, Color.white, Color.green, Color.blue,
+                                Color.cyan, Color.gray, Color.darkGray, Color.lightGray,
+                                Color.magenta, Color.orange, Color.pink, Color.red,
+                                Color.yellow, null };
+    private String[] colorNames = {
+                        ResourceUtils.getResourceString(FrameResources.BLACK),
+                        ResourceUtils.getResourceString(FrameResources.WHITE),
+                        ResourceUtils.getResourceString(FrameResources.GREEN),
+                        ResourceUtils.getResourceString(FrameResources.BLUE),
+                        ResourceUtils.getResourceString(FrameResources.CYAN),
+                        ResourceUtils.getResourceString(FrameResources.GRAY),
+                        ResourceUtils.getResourceString(FrameResources.DARK_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.LIGHT_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.MAGENTA),
+                        ResourceUtils.getResourceString(FrameResources.ORANGE),
+                        ResourceUtils.getResourceString(FrameResources.PINK),
+                        ResourceUtils.getResourceString(FrameResources.RED),
+                        ResourceUtils.getResourceString(FrameResources.YELLOW),
+                        ResourceUtils.getResourceString(FrameResources.NONE)
+    };
+    
+    protected int[] defaultMenus = { EDIT, 
+                                     SIZE,
+                                     STYLE,
+                                     FLUSH, 
+                                     KEYMAP,
+                                     BIDI,
+                                     ABOUT };
+
+    protected MTextPanel fTextPanel;
+    protected Frame fDialogParent;
+
+    protected MenuBuilder() {
+    }
+    
+    protected final void doCreateMenus(MTextPanel textPanel, Frame frame, int[] menus) {
+    
+        fTextPanel = textPanel;
+        fDialogParent = frame;
+        
+        for (int i=0; i < menus.length; i++) {
+            switch(menus[i]) {
+                case EDIT:
+                    createEditMenu();
+                    break;
+                case SIZE:
+                    createSizeMenu();
+                    break;
+                case STYLE:
+                    createStyleMenu();
+                    break;
+                case FLUSH:
+                    createFlushMenu();
+                    break;
+                case KEYMAP:
+                    createKeymapMenu();
+                    break;
+                case BIDI:
+                    createBidiMenu();
+                    break;
+                case ABOUT:
+                    createAboutMenu();
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal menu: " + menus[i]);
+            }
+        }
+                    
+        fTextPanel = null;
+        fDialogParent = null;
+    }
+    
+    protected abstract void handleAddMenu(String key);
+    
+    protected abstract DialogFactory createObjectDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character,
+                                                               String[] names,
+                                                               Object[] values);
+
+    protected abstract DialogFactory createNumberDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character);
+
+    protected abstract DialogFactory createAboutDialogFactory();
+
+    private void createEditMenu() {
+        
+        handleAddMenu(FrameResources.EDIT);
+        
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.UNDO),
+                                    CommandMenuItem.UndoRedo.UNDO).setTextPanel(fTextPanel);
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.REDO),
+                                    CommandMenuItem.UndoRedo.REDO).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CUT),
+                                        CommandMenuItem.CutCopyClear.CUT).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.COPY),
+                                        CommandMenuItem.CutCopyClear.COPY).setTextPanel(fTextPanel);
+        new CommandMenuItem.Paste(ResourceUtils.getMenuData(FrameResources.PASTE)).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CLEAR),
+                                        CommandMenuItem.CutCopyClear.CLEAR).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.SelectAll(ResourceUtils.getMenuData(FrameResources.SELECT_ALL)).setTextPanel(fTextPanel);
+    }
+    
+    private static final float[] DEFAULT_SIZES =
+                                    {9, 10, 12, 14, 18, 24, 36, 48, 72};
+
+    private void createSizeMenu() {
+        
+        createSizeMenu(DEFAULT_SIZES);
+    }
+    
+    private void createSizeMenu(float[] sizes) {
+                
+        handleAddMenu(FrameResources.SIZE);
+
+        if (sizes != DEFAULT_SIZES) {
+
+            sizes = (float[]) sizes.clone();
+            if (sizes.length == 0) {
+                throw new IllegalArgumentException("sizes array has zero length");
+            }
+
+            float lastValue = sizes[0];
+            for (int i=1; i < sizes.length; i++) {
+                if (sizes[i] >= lastValue) {
+                    throw new IllegalArgumentException(
+                                                "sizes array must be increasing");
+                }
+                lastValue = sizes[i];
+            }
+        }
+        
+        Float[] values = new Float[sizes.length];
+        MenuData[] mData = new MenuData[sizes.length];
+        NumberFormat fmt = NumberFormat.getNumberInstance();
+        
+        for (int i=0; i < sizes.length; i++) {
+            values[i] = new Float(sizes[i]);
+            mData[i] = new MenuData(fmt.format(sizes[i]));
+        }
+        
+        new StyleMenuItemSet(TextAttribute.SIZE,
+                                values,
+                                mData,
+                                MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+            
+        if (fDialogParent != null) {
+            String dialogTitle = ResourceUtils.getResourceString(FrameResources.SET_SIZE_TITLE);
+            String dialogText = ResourceUtils.getResourceString(FrameResources.SET_SIZE_LABEL);
+            DialogFactory factory = createNumberDialogFactory(dialogTitle,
+                                                              dialogText,
+                                                              TextAttribute.SIZE,
+                                                              MenuItemSet.CHARACTER);
+                                                              
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.OTHER_DIALOG), 
+                            factory).setTextPanel(fTextPanel);
+        }
+    }
+    
+    private void createStyleMenu() {
+        
+        handleAddMenu(FrameResources.STYLE);
+
+        Object[] keys =    { TextAttribute.WEIGHT,
+                             TextAttribute.POSTURE,
+                             TextAttribute.UNDERLINE,
+                             TextAttribute.STRIKETHROUGH,
+                             TextAttribute.SUPERSCRIPT,
+                             TextAttribute.SUPERSCRIPT};
+        Object[] values =  { TextAttribute.WEIGHT_BOLD,
+                             TextAttribute.POSTURE_OBLIQUE,
+                             TextAttribute.UNDERLINE_ON,
+                             TextAttribute.STRIKETHROUGH_ON, 
+                             new Integer(1),
+                             new Integer(-1)};
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.BOLD),
+                             ResourceUtils.getMenuData(FrameResources.ITALIC),
+                             ResourceUtils.getMenuData(FrameResources.UNDERLINE),
+                             ResourceUtils.getMenuData(FrameResources.STRIKETHROUGH),
+                             ResourceUtils.getMenuData(FrameResources.SUPERSCRIPT),
+                             ResourceUtils.getMenuData(FrameResources.SUBSCRIPT)};
+
+        new SubtractStyleMenuItem(keys, 
+                                    ResourceUtils.getMenuData(FrameResources.PLAIN),
+                                    MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+                                                 
+        for (int i=0; i < keys.length; i++) {
+            new BooleanStyleMenuItem(keys[i],
+                                        values[i],
+                                        mData[i],
+                                        MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+        }
+            
+        if (fDialogParent != null) {
+            
+            MItem.getItemFactory().createSeparator();
+            
+            String[] fonts = FontList.getFontList();
+            String title = ResourceUtils.getResourceString(FrameResources.SET_FONT_TITLE);
+            String label = ResourceUtils.getResourceString(FrameResources.SET_FONT_LABEL);
+            
+            DialogFactory fontF = createObjectDialogFactory(title, 
+                                                            label,
+                                                            TextAttribute.FAMILY,
+                                                            StyleMenuItemSet.CHARACTER,
+                                                            fonts,
+                                                            fonts);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FONT_DIALOG),
+                                    fontF).setTextPanel(fTextPanel);
+
+            DialogFactory foregroundF = createColorDialogFactory(true);
+            DialogFactory backgroundF = createColorDialogFactory(false);
+            
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FORECOLOR_DIALOG),
+                                    foregroundF).setTextPanel(fTextPanel);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.BACKCOLOR_DIALOG),
+                                    backgroundF).setTextPanel(fTextPanel);
+            }
+    }
+
+    private DialogFactory createColorDialogFactory(boolean foreground) {
+        
+        String title;
+        String message;
+        Object key;
+        
+        if (foreground) {
+            title = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_LABEL);
+            key = TextAttribute.FOREGROUND;
+        }
+        else {
+            title = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_LABEL);
+            key = TextAttribute.BACKGROUND;
+        }
+        return createObjectDialogFactory(title, 
+                                         message,
+                                         key,
+                                         StyleMenuItemSet.CHARACTER,
+                                         colorNames,
+                                         colors);
+    }
+    
+//    private void createFontMenu() {
+//        
+//        handleAddMenu(FrameResources.FONT);
+//        
+//        String[] fonts = FontList.getFontList();
+//        MenuData[] mData = new MenuData[fonts.length];
+//        for (int i=0; i < mData.length; i++) {
+//            mData[i] = new MenuData(fonts[i]);
+//        }
+//        
+//        new StyleMenuItemSet(TextAttribute.FAMILY,
+//                                fonts,
+//                                mData,
+//                                StyleMenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+//    }
+    
+    private void createFlushMenu() {
+        
+        handleAddMenu(FrameResources.FLUSH);
+        
+        Object[] values = {  TextAttribute.FLUSH_LEADING,
+                             TextAttribute.FLUSH_CENTER,
+                             TextAttribute.FLUSH_TRAILING,
+                             TextAttribute.FULLY_JUSTIFIED };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.LEADING),
+                             ResourceUtils.getMenuData(FrameResources.CENTER),
+                             ResourceUtils.getMenuData(FrameResources.TRAILING),
+                             ResourceUtils.getMenuData(FrameResources.JUSTIFIED) };
+        
+        new StyleMenuItemSet(TextAttribute.LINE_FLUSH,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createKeymapMenu() {
+        
+        handleAddMenu(FrameResources.KEYMAP);
+        
+        KeyRemap[] values = { KeyRemap.getIdentityRemap(),
+                             KeyRemap.getArabicTransliteration(),
+                             KeyRemap.getHebrewTransliteration(),
+                             KeyRemap.getIsraelNikud(),
+                             KeyRemap.getThaiKetmanee() };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT),
+                             ResourceUtils.getMenuData(FrameResources.ARABIC),
+                             ResourceUtils.getMenuData(FrameResources.HEBREW),
+                             ResourceUtils.getMenuData(FrameResources.ISRAEL_NIKUD),
+                             ResourceUtils.getMenuData(FrameResources.THAI_KETMANEE) };
+        
+        new KeymapMenuItemSet(values, mData).setTextPanel(fTextPanel);
+    }
+    
+    private void createBidiMenu() {
+        
+        handleAddMenu(FrameResources.BIDI);
+        
+        Object[] values = {  null,
+                             TextAttribute.RUN_DIRECTION_LTR,
+                             TextAttribute.RUN_DIRECTION_RTL };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.LTR_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.RTL_DIRECTION), };
+
+        new StyleMenuItemSet(TextAttribute.RUN_DIRECTION,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createAboutMenu() {
+        
+        handleAddMenu(FrameResources.ABOUT_MENU);
+        
+        new DialogItem(ResourceUtils.getMenuData(FrameResources.ABOUT_ITEM), 
+                       createAboutDialogFactory()).setTextPanel(fTextPanel);
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuItemSet.java b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
new file mode 100644
index 0000000..6ba1388
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
@@ -0,0 +1,51 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+public abstract class MenuItemSet implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final boolean CHARACTER = true;
+    public static final boolean PARAGRAPH = false;
+
+    private MTextPanel fTextPanel = null;
+    
+    public abstract void textEventOccurred(TextPanelEvent event);
+    public abstract boolean respondsToEventType(int type);
+    
+    public final void setTextPanel(MTextPanel textPanel) {
+        
+        if (fTextPanel != null) {
+            fTextPanel.removeListener(this);
+        }
+        fTextPanel = textPanel;
+        if (fTextPanel != null) {
+            fTextPanel.addListener(this);
+        }
+        
+        textPanelChanged();
+    }
+    
+    public final MTextPanel getTextPanel() {
+        
+        return fTextPanel;
+    }
+    
+    protected void textPanelChanged() {
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/ResourceUtils.java b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
new file mode 100644
index 0000000..abb0e5d
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public class ResourceUtils {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        try {
+            BUNDLE = ResourceBundle.getBundle("com.ibm.richtext.uiimpl.resources.FrameResources");
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load resourceXXX.  " +
+                               "Exception: " + e);
+            BUNDLE = new FrameResources();
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+        
+        return (MenuData) BUNDLE.getObject(key);
+    }
+    
+    public static String getResourceString(String key) {
+        
+        return BUNDLE.getString(key);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
new file mode 100644
index 0000000..8a677f4
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
@@ -0,0 +1,43 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class SingleCheckMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MItem fItem;
+    
+    SingleCheckMenuItem(MenuData menuData) {
+        
+        fItem = MItem.createCheckboxItem(menuData);
+    }
+    
+    abstract void setChecked();
+    
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+            fItem.setState(false);
+        }
+        else {
+            fItem.setEnabled(true);
+            setChecked();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
new file mode 100644
index 0000000..576b2a5
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class StyleMenuItemSet extends ChoiceMenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private Object fKey;
+    private boolean fCharacter;
+
+    public StyleMenuItemSet(Object style,
+                            Object[] values,
+                            MenuData[] menuData,
+                            boolean character) {
+        
+        super(values, menuData);
+        fKey = style;
+        fCharacter = character;
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+        
+        StyleModifier modifier;
+        if (value == null) {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        else {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+                    
+        if (fCharacter == CHARACTER) {
+            textPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            textPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        
+        if (fCharacter == CHARACTER) {
+            return textPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            return textPanel.getParagraphStyleOverSelection(fKey);
+        }
+    }
+
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
new file mode 100644
index 0000000..f8af085
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
@@ -0,0 +1,102 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class SubtractStyleMenuItem extends SingleCheckMenuItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final Object[] fKeys;
+    
+    private final boolean fCharacter;
+    
+    public SubtractStyleMenuItem(Object[] keys,
+                                 MenuData menuData,
+                                 boolean character) {
+        
+        super(menuData);
+        
+        fKeys = (Object[]) keys.clone();
+        fCharacter = character;
+        
+        AttributeSet keySet = new AttributeSet(keys);
+        final StyleModifier modifier = StyleModifier.createRemoveModifier(keySet);
+        
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    protected void setChecked() {
+
+        MTextPanel panel = getTextPanel();
+        AttributeMap defaults = panel.getDefaultValues();
+        
+        for (int i=0; i < fKeys.length; i++) {
+            Object defaultV = defaults.get(fKeys[i]);
+            
+            Object value = (fCharacter == CHARACTER)? 
+                    panel.getCharacterStyleOverSelection(fKeys[i]) :
+                    panel.getParagraphStyleOverSelection(fKeys[i]);
+                    
+            if (!objectsAreEqual(defaultV, value)) {
+                fItem.setState(false);
+                return;
+            }
+        }
+
+        fItem.setState(true);
+    }
+
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/TabRulerImpl.java b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
new file mode 100644
index 0000000..6286a71
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
@@ -0,0 +1,903 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Image;
+
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+
+/**
+ * TabRuler is a Component which presents a user interface for
+ * setting the leading margin, trailing margin, first line indent,
+ * and tab types and positions.
+ * <p>
+ * TabRuler does not implement TextPanelListener directly;  however,
+ * it can receive updates from a MTextPanel.  To have a TabRuler listen
+ * to a panel, call <code>listenToPanel</code>.  TabRuler responds to
+ * user manipulation by modifying the paragraph styles on its MTextPanel
+ * (if any).
+ */
+public final class TabRulerImpl implements MouseListener, MouseMotionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final class TabStopBuffer {
+        public int fPosition;
+        public byte fType;
+
+        TabStopBuffer(int position, byte type) {
+            fPosition = position;
+            fType = type;
+        }
+
+        TabStopBuffer(TabStop tab) {
+            this(tab.getPosition(), tab.getType());
+        }
+
+        TabStop getTabStop() {
+            return new TabStop(fPosition, fType);
+        }
+    }
+
+    private static final class TabRulerModifier extends StyleModifier {
+
+        private TabStop fOldTab; // tab to remove
+        private TabStop fNewTab; // tab to add
+        private AttributeMap fPanelDefaults;
+        
+        TabRulerModifier(TabStop oldTab,
+                         TabStop newTab,
+                         AttributeMap panelDefaults) {
+            fOldTab = oldTab;
+            fNewTab = newTab;
+            fPanelDefaults = panelDefaults;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap oldStyle) {
+
+            MTabRuler oldRuler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER, 
+                                                            oldStyle, 
+                                                            fPanelDefaults);
+            MTabRuler ruler = oldRuler;
+
+            if (fOldTab != null) {
+                if (ruler.containsTab(fOldTab)) {
+                    ruler = ruler.removeTab(fOldTab.getPosition());
+                }
+            }
+            if (fNewTab != null) {
+                ruler = ruler.addTab(fNewTab);
+            }
+
+            if (ruler != oldRuler) {
+                return oldStyle.addAttribute(TextAttribute.TAB_RULER, ruler);
+            }
+            else {
+                return oldStyle;
+            }
+        }
+    }
+
+    private static final class ImageCache {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private Image fImage = null;
+        private boolean fIsValid = false;
+        private Component fComponent;   // workaround for compiler bug, 
+                                        // should just be able to say Component.this
+                                        // if this were not a static class
+        
+        ImageCache(Component component) {
+        
+            fComponent = component;
+        }
+
+        Graphics getGraphics(int width, int height) {
+
+            if (width <= 0 || height <= 0) {
+                return null;
+            }
+            
+            Image image = fImage;
+            if (image == null || image.getWidth(fComponent) < width
+                              || image.getHeight(fComponent) < height) {
+        if (!fComponent.isVisible()) { // fix race condition if component not fully initialized
+            return null;
+        }
+                image = fComponent.createImage(width, height);
+            }
+            Graphics g = image.getGraphics();
+            fImage = image;
+            return g;
+        }
+
+        void drawImage(Graphics g, int x, int y, Color color) {
+
+            if (!fIsValid) {
+                throw new Error("Drawing image when not valid");
+            }
+            g.drawImage(fImage, x, y, color, fComponent);
+        }
+
+        boolean isValid() {
+
+            return fIsValid;
+        }
+
+        void setValid(boolean isValid) {
+
+            fIsValid = isValid;
+        }
+    }
+
+    /**
+    * This class listens to a MTextPanel for changes which
+    * affect a TabRuler's appearance, and updates the TabRuler
+    * as necessary.
+    * @see TabRuler
+    * @see com.ibm.richtext.textpanel.MTextPanel
+    */
+    private static final class Updater implements TextPanelListener {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private TabRulerImpl fTabRuler;
+        private MTextPanel fTextPanel;
+
+        /**
+        * Create a new TabRulerUpdater.
+        * @param tabRuler the TabRuler to update when a change occurs
+        *     in the MTextPanel
+        */
+        Updater(TabRulerImpl tabRuler) {
+
+            fTabRuler = tabRuler;
+        }
+
+        /**
+        * Remove self as listener from previous MTextPanel,
+        * set current MTextPanel and listen to it (if not null).
+        */
+        void setTextPanel(MTextPanel textPanel) {
+
+            if (fTextPanel != null) {
+                fTextPanel.removeListener(this);
+            }
+
+            fTextPanel = textPanel;
+
+            if (fTextPanel != null) {
+                fTextPanel.addListener(this);
+                setAll();
+            }
+        }
+
+        private void setAll() {
+
+            int offset = fTextPanel.getSelectionStart();
+            boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+            AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+            fTabRuler.set(style, false);
+            fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), false);
+            fTabRuler.setLeftToRight(leftToRight, true);
+        }
+
+        /**
+        * TextPanelListener method.  This class responds to text
+        * changes by updating its TabRuler.
+        */
+        public void textEventOccurred(TextPanelEvent event) {
+
+            int changeCode = event.getID();
+
+            if (changeCode == TextPanelEvent.SELECTION_STYLES_CHANGED ||
+                    changeCode == TextPanelEvent.TEXT_CHANGED) {
+
+                int offset = fTextPanel.getSelectionStart();
+                AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+                boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+                fTabRuler.set(style, false);
+                fTabRuler.setLeftToRight(leftToRight, true);
+            }
+            else if (changeCode == TextPanelEvent.FORMAT_WIDTH_CHANGED) {
+                
+                fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), true);
+            }
+        }
+        
+        /**
+        * TextPanelListener method.
+        */
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_STYLES_CHANGED ||
+                    type == TextPanelEvent.TEXT_CHANGED ||
+                    type == TextPanelEvent.FORMAT_WIDTH_CHANGED;
+        }
+    }
+
+    /**
+     * The default background color for TabRulers.
+     * @see #setBackColor
+     */
+    public static final Color DEFAULT_BACK_COLOR = Color.lightGray;
+
+    private static final int kTrackNone = 0;
+    private static final int kTrackTab = 1;
+    private static final int kTrackLM = 2;
+    private static final int kTrackFLI = 3;
+    private static final int kTrackTM = 4;
+
+    private Component fHost;
+    private MTabRuler fRuler;
+    private int fLeadingMargin;
+    private int fFirstLineIndent;
+    private int fFormatWidth;
+    private int fTrailingMarginPosition; // opposite of actual trailing margin
+    private boolean fLeftToRight;
+    private int fBaseline;
+    private int fOrigin;
+    private Color fBackColor = DEFAULT_BACK_COLOR;
+
+    private int fTrackItem; // 0 - none, 1 - tab, 2 - lm, 3 - fli, 4 - tm
+    private TabStopBuffer fTrackTab;
+    private TabStop fOldTab;
+    private int fTrackDelta;
+    private boolean fTrackVisible;
+    private Updater fUpdater;
+    private MTextPanel fTextPanel = null;
+
+    private ImageCache fImageCache;
+
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRulerImpl(int baseline, 
+                        int origin, 
+                        MTextPanel textPanel,
+                        Component host) {
+
+        fHost = host;
+        fImageCache = new ImageCache(host);
+        fUpdater = new Updater(this);
+        fBaseline = baseline;
+        fOrigin = origin;
+        host.addMouseListener(this);
+        host.addMouseMotionListener(this);
+        if (textPanel != null) {
+            listenToTextPanel(textPanel);
+        }
+        else {
+            fRuler = new StandardTabRuler();
+        }
+    }
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fTextPanel = textPanel;
+        fUpdater.setTextPanel(textPanel);
+    }
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fBackColor;
+    }
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        if (!backColor.equals(fBackColor)) {
+            fBackColor = backColor;
+            Graphics g = fHost.getGraphics();
+            if (g != null) {
+                paint(g);
+            }
+        }
+    }
+
+    private static Object getWithDefault(Object key,
+                                         AttributeMap style,
+                                         AttributeMap defaults) {
+        Object value = style.get(key);
+        if (value == null) {
+            value = defaults.get(key);
+        }
+        return value;
+    }
+
+    private static float getFloatWithDefault(Object key,
+                                             AttributeMap style,
+                                             AttributeMap defaults) {
+        Object value = getWithDefault(key, style, defaults);
+        return ((Float)value).floatValue();
+    }
+    
+    private void setLeftToRight(boolean leftToRight, boolean update) {
+        
+        if (fLeftToRight != leftToRight) {
+            
+            fLeftToRight = leftToRight;
+            redrawSelf(update);
+        }
+    }
+
+    private void setFormatWidth(int formatWidth, boolean update) {
+        
+        if (fFormatWidth != formatWidth) {
+            
+            fTrailingMarginPosition += (formatWidth - fFormatWidth);
+            fFormatWidth = formatWidth;
+            redrawSelf(update);
+        }
+    }
+    
+    /**
+     * Set TabRuler from values in paragraphStyle.  Only TabRulerUpdater
+     * should call this method.
+     * @param paragraphStyle the paragraph style which the TabRuler will
+     *     reflect
+     */
+    private void set(AttributeMap paragraphStyle, boolean update) {
+
+        AttributeMap panelDefaults;
+        
+        if (fTextPanel==null) {
+            panelDefaults = TextPanel.getDefaultSettings().getDefaultValues();
+        }
+        else {
+             panelDefaults = fTextPanel.getDefaultValues();
+        }
+                                                         
+        int leadingMargin =  (int) getFloatWithDefault(TextAttribute.LEADING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+        int firstLineIndent = (int) getFloatWithDefault(TextAttribute.FIRST_LINE_INDENT,
+                                                        paragraphStyle,
+                                                        panelDefaults);
+        int trailingMargin = (int) getFloatWithDefault(TextAttribute.TRAILING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+
+        MTabRuler ruler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER,
+                                                     paragraphStyle,
+                                                     panelDefaults);
+
+        int ourFli = leadingMargin + firstLineIndent;
+        int ourTmp = fFormatWidth - trailingMargin;
+        
+        if (leadingMargin == fLeadingMargin &&
+                fFirstLineIndent == ourFli &&
+                fTrailingMarginPosition == ourTmp &&
+                ruler.equals(fRuler)) {
+            return;
+        }
+        
+        fLeadingMargin = leadingMargin;
+        fFirstLineIndent = ourFli;
+        fTrailingMarginPosition = ourTmp;
+        fRuler = ruler;
+    
+        redrawSelf(update);
+    }
+    
+    private void redrawSelf(boolean drawNow) {
+
+        fImageCache.setValid(false);
+
+        Graphics g = fHost.getGraphics();
+        if (g != null)
+            paint(g);
+    }
+
+    /**
+     * Return debugging info.
+     */
+    public String toString() {
+
+        return "TabRuler{fLeadingMargin="+fLeadingMargin+
+                "}{fFirstLineIndent="+fFirstLineIndent+
+                "}{fFormatWidth="+fFormatWidth+
+                "}{fTrailingMarginPosition="+fTrailingMarginPosition+
+                "}{fRuler="+fRuler+
+                "}";
+    }
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler()
+    {
+        return fRuler;
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin()
+    {
+        return fLeadingMargin;
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent()
+    {
+        return fFirstLineIndent - fLeadingMargin;
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin()
+    {
+        return fFormatWidth - fTrailingMarginPosition;
+    }
+    
+    private int visualToRulerPos(int visPos) {
+        
+        if (fLeftToRight) {
+            return visPos - fOrigin;
+        }
+        else {
+            return fOrigin + fFormatWidth - visPos;
+        }
+    }
+    
+    private int rulerToVisualPos(int rulerPos) {
+        
+        if (fLeftToRight) {
+            return fOrigin + rulerPos;
+        }
+        else {
+            return fOrigin + fFormatWidth - rulerPos;
+        }
+    }
+    
+    private int dirMult() {
+        
+        return fLeftToRight? 1 : -1;
+    }
+
+    /**
+     * @param tabPosition the logical (ruler) position of the tab
+     */
+    private void drawTab(Graphics g, int tabPosition, byte tabType, int tabTop, int tabBottom)
+    {
+        int pos = rulerToVisualPos(tabPosition);
+        int wid = 0;
+        switch (tabType) {
+            case TabStop.kLeading: wid = 3; break;
+            case TabStop.kCenter: wid = 0; break;
+            case TabStop.kTrailing: wid = -3; break;
+            case TabStop.kDecimal: wid = 0; break;
+            default: break;
+        }
+        wid *= dirMult();
+        
+        if (tabType != TabStop.kAuto) {
+            g.drawLine(pos, tabTop, pos, tabBottom);
+            if (wid != 0)
+                g.drawLine(pos, tabBottom, pos + wid, tabBottom);
+        }
+        g.drawLine(pos-2, tabTop+2, pos, tabTop);
+        g.drawLine(pos, tabTop, pos+2, tabTop+2);
+        if (tabType == TabStop.kDecimal) {
+            g.drawLine(pos + 3, tabBottom, pos + 4, tabBottom);
+        }
+    }
+
+    private void drawLM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fLeadingMargin);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline + 12, fBaseline + 7, fBaseline + 7, fBaseline + 12 };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawFLI(Graphics g)
+    {
+        int pos = rulerToVisualPos(fFirstLineIndent);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 5, fBaseline + 5, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawRM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fTrailingMarginPosition);
+        int[] xpts = { pos, pos, pos - (6*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 12, fBaseline + 6, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private static int alignInt(int value) {
+        
+        return (int)((int)(value / 4.5) * 4.5);
+    }
+
+    private static final int[] fgLengths = { 10, 2, 4, 2, 6, 2, 4, 2 };
+
+    /**
+     * Component method override.
+     */
+    public void paint(Graphics g)
+    {
+        Dimension size = fHost.getSize();
+
+        int width = size.width;
+        int baseline = fBaseline;
+        int baseline2 = baseline + 2;
+        int baseline10 = baseline + 10;
+        int baseline12 = baseline + 12;
+
+        if (!fImageCache.isValid()) {
+
+            Graphics gCache = fImageCache.getGraphics(width, baseline12 + 1);
+            if (gCache == null) {
+                return;
+            }
+            
+            // set background color
+
+            gCache.setColor(fBackColor);
+            gCache.setPaintMode();
+            gCache.fillRect(0, 0, width, baseline12 + 1);
+
+            // paint ticks
+
+            gCache.setColor(Color.black);
+            gCache.drawLine(0, 0, width, 0);
+            gCache.drawLine(0, baseline, width, baseline);
+
+            int[] lengths = fgLengths;
+
+            int index = 0;
+            int inchnum = 0;
+            FontMetrics fm = null;
+            if (!fLeftToRight) {
+                fm = gCache.getFontMetrics();
+            }
+            
+            for (int i = 0; i < fFormatWidth; i += 9) {
+                int len = lengths[index];
+                int pos = rulerToVisualPos(i);
+                gCache.drawLine(pos, baseline, pos, baseline - len);
+
+                if (index == 0) {
+                    String str = Integer.toString(inchnum++);
+                    int drawX;
+                    if (fLeftToRight) {
+                        drawX = pos + 2;
+                    }
+                    else {
+                        drawX = pos - fm.stringWidth(str) - 2;
+                    }
+                        
+                    gCache.drawString(str, drawX, baseline - 2);
+                }
+
+                if (++index == lengths.length)
+                    index = 0;
+            }
+
+            // paint tabs
+            TabStop tab = fRuler.firstTab();
+            while (tab != null && tab.getPosition() < fTrailingMarginPosition) {
+                boolean dodraw = true;
+                if (tab.getType() == TabStop.kAuto) {
+                    if (tab.getPosition() <= Math.max(fLeadingMargin, fFirstLineIndent))
+                        dodraw = false;
+                    else if (tab.getPosition() >= fTrailingMarginPosition)
+                        dodraw = false;
+                }
+
+                if (dodraw)
+                    drawTab(gCache, tab.getPosition(), tab.getType(), baseline2, baseline10);
+
+                tab = fRuler.nextTab(tab.getPosition());
+            }
+
+            gCache.drawLine(0, baseline12, width, baseline12);
+
+            // paint others except for tracked item
+            if (fTrackItem != kTrackLM) drawLM(gCache);
+            if (fTrackItem != kTrackTM) drawRM(gCache);
+            if (fTrackItem != kTrackFLI && fTrackItem != kTrackLM) drawFLI(gCache);
+            fImageCache.setValid(true);
+        }
+
+        fImageCache.drawImage(g, 0, 0, Color.lightGray);
+
+        switch (fTrackItem) {
+            case kTrackTab: if (fTrackVisible) drawTab(g, fTrackTab.fPosition, fTrackTab.fType, baseline2, baseline10); break;
+            case kTrackLM: drawLM(g); drawFLI(g); break;
+            case kTrackTM: drawRM(g); break;
+            case kTrackFLI: drawFLI(g); break;
+            default: break;
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseClicked(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseEntered(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseExited(MouseEvent e) {}
+
+    /**
+     * MouseListener method.
+     */
+    public void mousePressed(MouseEvent e)
+    {
+        // find out if we hit a tabstop
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (y > fBaseline && y < fBaseline + 12) {
+            if (y >= fBaseline + 7 && x >= fLeadingMargin - 3 && x <= fLeadingMargin + 3) {
+                fTrackItem = kTrackLM;
+                fTrackDelta = fLeadingMargin - x;
+            } else if (y < fBaseline + 7 && x >= fFirstLineIndent - 3 && x <= fFirstLineIndent + 3) {
+                fTrackItem = kTrackFLI;
+                fTrackDelta = fFirstLineIndent - x;
+            } else if (x >= fTrailingMarginPosition - 3 && x <= fTrailingMarginPosition + 3) {
+                fTrackItem = kTrackTM;
+                fTrackDelta = fTrailingMarginPosition - x;
+            } else if (e.isControlDown()) {
+                fTrackItem = kTrackTab;
+                fTrackTab = new TabStopBuffer(alignInt(x), TabStop.kLeading);
+                fTrackDelta = fTrackTab.fPosition - x;
+                fTrackVisible = true;
+            } else {
+                TabStop tab = fRuler.firstTab();
+                while (tab.getType() != TabStop.kAuto) {
+                    if (x < tab.getPosition() - 3)
+                        break;
+                    if (x < tab.getPosition() + 3) {
+                        fOldTab = tab;
+                        fTrackTab = new TabStopBuffer(tab);
+                        fRuler = fRuler.removeTab(fOldTab.getPosition());
+
+                        if (e.getClickCount() > 1) {
+                            switch (fTrackTab.fType) {
+                                case TabStop.kLeading: fTrackTab.fType = TabStop.kCenter; break;
+                                case TabStop.kCenter: fTrackTab.fType = TabStop.kTrailing; break;
+                                case TabStop.kTrailing: fTrackTab.fType = TabStop.kDecimal; break;
+                                case TabStop.kDecimal: fTrackTab.fType = TabStop.kLeading; break;
+                                default: break;
+                            }
+                        }
+                        fTrackItem = kTrackTab;
+                        fTrackDelta = tab.getPosition() - x;
+                        fTrackVisible = true;
+                        break;
+                    }
+
+                    tab = fRuler.nextTab(tab.getPosition());
+                }
+            }
+
+            if (fTrackItem != kTrackNone) {
+                fImageCache.setValid(false);
+                paint(fHost.getGraphics());
+                return;
+            }
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseDragged(MouseEvent e)
+    {
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (fTrackItem != kTrackNone) {
+            boolean repaint = false;
+            boolean inrange = y > fBaseline && y < fBaseline + 12;
+            boolean inbigrange = y > 0 && y < fHost.getSize().height + 20;
+            int newpos = alignInt(x + fTrackDelta);
+            if (newpos < 0)
+                newpos = 0;
+
+            switch (fTrackItem) {
+                case kTrackTab: {
+                    if (inrange) {
+                        repaint = !fTrackVisible;
+                        fTrackVisible = true;
+                        if (newpos != fTrackTab.fPosition) {
+                            fTrackTab.fPosition = newpos;
+                            repaint = true;
+                        }
+                    } else if (fTrackVisible) {
+                        fTrackVisible = false;
+                        repaint = true;
+                    }
+                } break;
+
+/* It would be nice to optionally track the margin 'independently' of the first line indent.
+ Unfortunately this makes for more work when we have multiple paragraph styles selected.
+ Since internally the first line indent is relative to the margin, moving the margin
+ independently so that all affected paragraphs share the same margin but retain first
+ line indents in the 'same' positions means that I need to also adjust the first line
+ indents in each paragraph by some delta. I'm not ready to do that yet. */
+
+                case kTrackLM: {
+                    if (inbigrange && newpos != fLeadingMargin) {
+                        fFirstLineIndent += newpos - fLeadingMargin;
+                        fLeadingMargin = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackFLI: {
+                    if (inbigrange && newpos != fFirstLineIndent) {
+                        fFirstLineIndent = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackTM: {
+                    if (inbigrange && newpos != fTrailingMarginPosition) {
+                        fTrailingMarginPosition = newpos;
+                        repaint = true;
+                    }
+                } break;
+            }
+
+
+            if (repaint)
+                paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseReleased(MouseEvent e)
+    {
+        if (fTrackItem != kTrackNone) {
+            if (fTrackItem == kTrackTab && fTrackVisible) {
+                fRuler = fRuler.addTab(fTrackTab.getTabStop());
+            } else {
+                fTrackTab = null;
+            }
+
+            notify(fTrackItem);
+
+            fTrackItem = kTrackNone;
+            fTrackTab = null;
+            fOldTab = null;
+
+            fImageCache.setValid(false);
+            paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseMoved(MouseEvent e) {}
+
+    private void notify(int change)
+    {
+        if (fTextPanel != null) {
+
+            StyleModifier modifier;
+
+            if (change == kTrackTab) {
+                TabStop newTab = fTrackTab==null? null : fTrackTab.getTabStop();
+                modifier = new TabRulerModifier(fOldTab, newTab, fTextPanel.getDefaultValues());
+            }
+            else {
+                Object key;
+                Object value;
+
+                switch(change) {
+                    case kTrackLM:
+                        key = TextAttribute.LEADING_MARGIN;
+                        value = new Float(getLeadingMargin());
+                        break;
+
+                    case kTrackTM:
+                        key = TextAttribute.TRAILING_MARGIN;
+                        value = new Float(getTrailingMargin());
+                        break;
+
+                    case kTrackFLI:
+                        key = TextAttribute.FIRST_LINE_INDENT;
+                        value = new Float(getFirstLineIndent());
+                        break;
+
+                    default:
+                        throw new Error("Invalid change code.");
+                }
+
+                modifier = StyleModifier.createAddModifier(key, value);
+            }
+
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getMinimumSize()
+    {
+        return new Dimension(100, fBaseline + 13);
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getPreferredSize()
+    {
+        return getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/FrameResources.java b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
new file mode 100644
index 0000000..57c1e94
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
@@ -0,0 +1,220 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************/
+package com.ibm.richtext.uiimpl.resources;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class FrameResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/*
+ * These Strings are keys to other String resources.
+ */
+    // Menu names
+    public static final String EDIT = "Edit";
+    public static final String SIZE = "Size";
+    public static final String FONT = "Font";
+    public static final String STYLE = "Style";
+    public static final String FLUSH = "Flush";
+    public static final String KEYMAP = "Keymap";
+    public static final String ABOUT_MENU = "About";
+    public static final String BIDI = "Bidi";
+    
+    // Buttons
+    public static final String OK = "OK";
+    public static final String CANCEL = "Cancel";
+
+    // Colors
+    public static final String BLACK = "Black";
+    public static final String WHITE = "White";
+    public static final String GREEN = "Green";
+    public static final String BLUE = "Blue";
+    public static final String CYAN = "Cyan";
+    public static final String GRAY = "Gray";
+    public static final String DARK_GRAY = "Dark Gray";
+    public static final String LIGHT_GRAY = "Light Gray";
+    public static final String MAGENTA = "Magenta";
+    public static final String ORANGE = "Orange";
+    public static final String PINK = "Pink";
+    public static final String RED = "Red";
+    public static final String YELLOW = "Yellow";
+    public static final String NONE = "None";
+
+    // Dialog titles and messages
+    public static final String SET_SIZE_TITLE = "Set Font Size";
+    public static final String SET_SIZE_LABEL = "Font Size:";
+
+    public static final String SET_SUPERSCRIPT_TITLE = "Set Superscript";
+    public static final String SET_SUPERSCRIPT_LABEL = "Superscript:";
+    public static final String SET_SUBSCRIPT_TITLE = "Set Subscript";
+    public static final String SET_SUBSCRIPT_LABEL = "Subscript:";
+    public static final String SET_FOREGROUND_TITLE = "Set Foreground";
+    public static final String SET_FOREGROUND_LABEL = "Foreground:";
+    public static final String SET_BACKGROUND_TITLE = "Set Background";
+    public static final String SET_BACKGROUND_LABEL = "Background:";
+    public static final String SET_FONT_TITLE = "Set Font";
+    public static final String SET_FONT_LABEL = "Font:";
+
+    public static final String ABOUT_TITLE = "About the RichEdit Control";
+
+    // This is the only String which is not its own value:
+    public static final String ABOUT_TEXT = "About text";
+    private static final String ACTUAL_ABOUT_TEXT =
+        "Copyright (C) IBM Corp. 1996-2002 All rights reserved.\n\n" +
+        "John Raley\n" +
+        "Stephen F. Booth\n" +
+        "Doug Felt\n" +
+        "John Fitzpatrick\n" +
+        "Rich Gillam";
+/*
+ * The following Strings are keys to MenuData resources.  They
+ * also double as the default menu label text.
+ */
+    // Edit menu
+    public static final String UNDO = "Undo";
+    public static final String REDO = "Redo";
+    public static final String CUT = "Cut";
+    public static final String COPY = "Copy";
+    public static final String PASTE = "Paste";
+    public static final String CLEAR = "Clear";
+    public static final String SELECT_ALL = "Select All";
+
+    // Flush menu
+    public static final String LEADING = "Leading";
+    public static final String TRAILING = "Trailing";
+    public static final String CENTER = "Center";
+    public static final String JUSTIFIED = "Justified";
+
+    // About menu
+    public static final String ABOUT_ITEM = "About...";
+
+    // Keymap menu
+    public static final String DEFAULT = "Default";
+    public static final String ARABIC = "Arabic";
+    public static final String HEBREW = "Hebrew";
+    public static final String ISRAEL_NIKUD = "Israel Nikud";
+    public static final String THAI_KETMANEE = "Thai Ketmanee";
+
+    // Style menu
+    public static final String PLAIN = "Plain";
+    public static final String BOLD = "Bold";
+    public static final String ITALIC = "Italic";
+    public static final String UNDERLINE = "Underline";
+    public static final String STRIKETHROUGH = "Strikethrough";
+    public static final String SUPERSCRIPT = "Superscript";
+    public static final String SUBSCRIPT = "Subscript";
+    public static final String SUPERSCRIPT_DIALOG = "Superscript...";
+    public static final String SUBSCRIPT_DIALOG = "Subscript...";
+    public static final String FORECOLOR_DIALOG = "Forecolor...";
+    public static final String BACKCOLOR_DIALOG = "Backcolor...";
+    public static final String FONT_DIALOG = "Font...";
+    
+
+    // Size menu
+    public static final String OTHER_DIALOG = "Other...";
+    
+    // Bidi menu
+    public static final String DEFAULT_DIRECTION = "Default Paragraph Direction";
+    public static final String LTR_DIRECTION = "Left-to-right Paragraph Direction";
+    public static final String RTL_DIRECTION = "Right-to-left Paragraph Direction";
+
+    private static Object[] makeMenuData(String name,
+                                         char shortCutChar,
+                                         int shortCutKey) {
+
+        return new Object[] { name, new MenuData(name, shortCutChar, shortCutKey) };
+    }
+
+    private static Object[] makeMenuData(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            makeMenuData(UNDO, 'z', KeyEvent.VK_Z),
+            makeMenuData(REDO, 'r', KeyEvent.VK_R),
+            makeMenuData(CUT, 'x', KeyEvent.VK_X),
+            makeMenuData(COPY, 'c', KeyEvent.VK_C),
+            makeMenuData(PASTE, 'v', KeyEvent.VK_V),
+            makeMenuData(CLEAR),
+            makeMenuData(SELECT_ALL),
+            makeMenuData(LEADING),
+            makeMenuData(CENTER),
+            makeMenuData(TRAILING),
+            makeMenuData(JUSTIFIED),
+            makeMenuData(ABOUT_ITEM),
+            makeMenuData(DEFAULT),
+            makeMenuData(HEBREW),
+            makeMenuData(ARABIC),
+            makeMenuData(ISRAEL_NIKUD),
+            makeMenuData(THAI_KETMANEE),
+            makeMenuData(PLAIN),
+            makeMenuData(BOLD, 'b', KeyEvent.VK_B),
+            makeMenuData(ITALIC, 'i', KeyEvent.VK_I), // why doesn't this work in Swing?
+                                                      // this is a Tab in AWT!!!
+            makeMenuData(UNDERLINE, 'u', KeyEvent.VK_U),
+            makeMenuData(STRIKETHROUGH),
+            makeMenuData(SUPERSCRIPT),
+            makeMenuData(SUBSCRIPT),
+            makeMenuData(SUPERSCRIPT_DIALOG),
+            makeMenuData(SUBSCRIPT_DIALOG),
+            makeMenuData(FORECOLOR_DIALOG),
+            makeMenuData(BACKCOLOR_DIALOG),
+            makeMenuData(FONT_DIALOG),
+            makeMenuData(OTHER_DIALOG),
+            makeMenuData(DEFAULT_DIRECTION),
+            makeMenuData(LTR_DIRECTION),
+            makeMenuData(RTL_DIRECTION),
+            duplicate(OK),
+            duplicate(CANCEL),
+            duplicate(BLACK),
+            duplicate(WHITE),
+            duplicate(GREEN),
+            duplicate(BLUE),
+            duplicate(CYAN),
+            duplicate(GRAY),
+            duplicate(DARK_GRAY),
+            duplicate(LIGHT_GRAY),
+            duplicate(MAGENTA),
+            duplicate(ORANGE),
+            duplicate(PINK),
+            duplicate(RED),
+            duplicate(YELLOW),
+            duplicate(NONE),
+            duplicate(SET_SIZE_TITLE),
+            duplicate(SET_SIZE_LABEL),
+            duplicate(SET_SUPERSCRIPT_TITLE),
+            duplicate(SET_SUPERSCRIPT_LABEL),
+            duplicate(SET_SUBSCRIPT_TITLE),
+            duplicate(SET_SUBSCRIPT_LABEL),
+            duplicate(SET_FOREGROUND_TITLE),
+            duplicate(SET_FOREGROUND_LABEL),
+            duplicate(SET_BACKGROUND_TITLE),
+            duplicate(SET_BACKGROUND_LABEL),
+            duplicate(SET_FONT_TITLE),
+            duplicate(SET_FONT_LABEL),
+            duplicate(EDIT),
+            duplicate(SIZE),
+            duplicate(FONT),
+            duplicate(STYLE),
+            duplicate(FLUSH),
+            duplicate(KEYMAP),
+            duplicate(BIDI),
+            duplicate(ABOUT_MENU),
+            duplicate(ABOUT_TITLE),
+            { ABOUT_TEXT, ACTUAL_ABOUT_TEXT }
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/MenuData.java b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
new file mode 100644
index 0000000..1cbf6b0
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
@@ -0,0 +1,66 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl.resources;
+
+/**
+ * This class is used in resources to represent a Menu.  It is
+ * just a name and an optional shortcut key.
+ */
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcutChar() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file
diff --git a/unicode-license.txt b/unicode-license.txt
new file mode 100644
index 0000000..8c4d011
--- /dev/null
+++ b/unicode-license.txt
@@ -0,0 +1,48 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+    Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
+published in the Unicode Standard or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/.
+
+    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-2007 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 any associated documentation (the "Data Files") or
+Unicode software and any 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.
\ No newline at end of file
